diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000000000000000000000000000000000..63eef4d68ff2e0e1b002d8415c21316d7698c67d
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,24 @@
+# Default behavior. Converts all text files to use LF in repository.
+* text=auto
+
+# List all known generic text files
+*.c text
+*.csv text
+*.h text
+*.json text
+*.m text
+*.md text
+*.prm text
+*.py text
+*.txt text
+
+# Set Windows specific text files to always use CRLF in working tree.
+*.bat text eol=crlf
+*.cmd text eol=crlf
+*.sln text eol=crlf
+*.vcxproj text eol=crlf
+*.vcxproj.filters text eol=crlf
+
+# Set Unix specific text files to always use LF (also covers Windows subsystem for Linux) in working tree
+*.sh text eol=lf
+
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f48458c787062104bab6dd73e9d55eac3210397f..e35d0e290e66869bc2ccf7666350cea5a72488fb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -273,6 +273,7 @@ stages:
- sed -i '/fetch/d' .git/config # Remove all fetch lines to clean out dead links
- git remote set-branches --add origin $BASOP_CI_BRANCH_PC_REPO # Add currently used branch
- git fetch
+ - git restore --staged . # Needed if HRTF model files were updated.
- git restore . # Just as a precaution
- git checkout $BASOP_CI_BRANCH_PC_REPO
- git pull origin $BASOP_CI_BRANCH_PC_REPO
@@ -1047,7 +1048,7 @@ uninterruptible:
branch-is-up-to-date-with-target-pre:
extends:
- - .rules-merge-request
+ - .rules-merge-request-to-main-pc
stage: prevalidate
needs: []
tags:
@@ -1063,7 +1064,7 @@ branch-is-up-to-date-with-target-pre:
branch-is-up-to-date-with-target-post:
extends:
- - .rules-merge-request
+ - .rules-merge-request-to-main-pc
stage: postvalidate
tags:
- ivas-basop-linux
@@ -1251,6 +1252,7 @@ build-codec-linux-cmake:
- .build-job-linux
tags:
- ivas-basop-linux
+ timeout: "10 minutes"
script:
- *print-common-info
- *update-scripts-repo
@@ -1322,7 +1324,7 @@ build-codec-linux-debugging-make:
when: never
extends:
- .build-job-linux
- timeout: "7 minutes"
+ timeout: "10 minutes"
variables:
BUILD_WITH_DEBUG_MODE_INFO: "true"
script:
@@ -1337,7 +1339,7 @@ build-codec-linux-debugging-make:
split-rendering-smoke-test:
extends:
- .test-job-linux
- - .rules-merge-request
+ - .rules-merge-request-to-main-pc
needs: ["build-codec-linux-make"]
stage: test
script:
@@ -1361,7 +1363,7 @@ split-rendering-smoke-test:
lc3-wrapper-unit-test:
extends:
- .test-job-linux
- - .rules-merge-request
+ - .rules-merge-request-to-main-pc
needs: ["build-codec-linux-make"]
stage: test
script:
@@ -1376,9 +1378,9 @@ lc3-wrapper-unit-test:
split-rendering-pytest-on-merge-request:
extends:
- .test-job-linux-needs-testv-dir
- - .rules-merge-request
+ - .rules-merge-request-to-main-pc
needs: ["build-codec-linux-make"]
- timeout: "45 minutes"
+ timeout: "60 minutes"
stage: compare
script:
- *print-common-info
@@ -1454,11 +1456,15 @@ split-rendering-pytest-on-merge-request:
# ---------------------------------------------------------------
.set-reference-for-basop-port-branch: &set-reference-for-basop-port-branch
- - if [ $CI_MERGE_REQUEST_TARGET_BRANCH_NAME = "main-pc" ] && [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[skip[[:space:]_-]name[[:space:]_-]check\] ]] && [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[CI\] ]]; then
- - *update-scripts-repo
+ - if [ $CI_MERGE_REQUEST_TARGET_BRANCH_NAME = "main-pc" ]; then
+ - if [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[skip[[:space:]_-]name[[:space:]_-]check\] ]] && [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[CI\] ]]; then
+ - *update-scripts-repo
# a bit awkward: write to file + standard out first so that the error message is visivle in case of failure. Then fill the variable from the file
- - ci/get_float_ref_branch_name.sh $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME | tee tmp_ref_branch.txt
- - FLOAT_REF_BRANCH=$(cat tmp_ref_branch.txt)
+ - ci/get_float_ref_branch_name.sh $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME | tee tmp_ref_branch.txt
+ - FLOAT_REF_BRANCH=$(cat tmp_ref_branch.txt)
+ - else
+ - FLOAT_REF_BRANCH="float-pc"
+ - fi
- fi
### jobs that check for bitexactness of fx encoder and decoder
@@ -1467,6 +1473,7 @@ check-be-to-target-short-enc-0db:
- .rules-mr-to-main-or-main-pc
- .test-job-linux
before_script:
+ - *set-reference-for-basop-port-branch
- USE_LTV=0
- DUT_DECODER_PATH=./IVAS_dec_ref
- MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref
@@ -1480,6 +1487,7 @@ check-be-to-target-short-enc-+10db:
- .rules-mr-to-main-or-main-pc
- .test-job-linux
before_script:
+ - *set-reference-for-basop-port-branch
- USE_LTV=0
- DUT_DECODER_PATH=./IVAS_dec_ref
- MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref
@@ -1493,6 +1501,7 @@ check-be-to-target-short-enc--10db:
- .rules-mr-to-main-or-main-pc
- .test-job-linux
before_script:
+ - *set-reference-for-basop-port-branch
- USE_LTV=0
- DUT_DECODER_PATH=./IVAS_dec_ref
- MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref
@@ -1506,6 +1515,7 @@ check-be-to-target-short-dec-0db:
- .rules-mr-to-main-or-main-pc
- .test-job-linux
before_script:
+ - *set-reference-for-basop-port-branch
- USE_LTV=0
- DUT_ENCODER_PATH=./IVAS_cod_ref
- MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref
@@ -1519,6 +1529,7 @@ check-be-to-target-short-dec-+10db:
- .rules-mr-to-main-or-main-pc
- .test-job-linux
before_script:
+ - *set-reference-for-basop-port-branch
- USE_LTV=0
- DUT_ENCODER_PATH=./IVAS_cod_ref
- MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref
@@ -1532,6 +1543,7 @@ check-be-to-target-short-dec--10db:
- .rules-mr-to-main-or-main-pc
- .test-job-linux
before_script:
+ - *set-reference-for-basop-port-branch
- USE_LTV=0
- DUT_ENCODER_PATH=./IVAS_cod_ref
- MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref
diff --git a/.gitlab-ci/rules-basis.yml b/.gitlab-ci/rules-basis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c650f574a59d41dc67aaa32f7250fcf73f906848
--- /dev/null
+++ b/.gitlab-ci/rules-basis.yml
@@ -0,0 +1,53 @@
+# overwrites the default rules in the IVAS CI repository
+# should be refactored and unified
+.rules-basis:
+ rules:
+ # see https://docs.gitlab.com/ee/ci/yaml/workflow.html#switch-between-branch-pipelines-and-merge-request-pipelines
+ - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
+ when: never
+ - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+ variables:
+ IVAS_PIPELINE_NAME: 'MR pipeline: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
+ ### disabled for now because pipeline cd is redundant with MR pipeline with current workflow
+ # - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Pushes to main
+ # variables:
+ # IVAS_PIPELINE_NAME: 'Push pipeline: $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'default' # for testing
+ variables:
+ IVAS_PIPELINE_NAME: 'Web run pipeline: $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare'
+ variables:
+ IVAS_PIPELINE_NAME: 'Run comparison tools against float ref: $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare-enc-dmx'
+ variables:
+ IVAS_PIPELINE_NAME: 'Run encoder dmx comparison against float ref: $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare-long'
+ variables:
+ IVAS_PIPELINE_NAME: 'Run comparison tools against float ref (long test vectors): $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare-to-input'
+ variables:
+ IVAS_PIPELINE_NAME: 'Run comparison tools against input (pass-through only): $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-saturation-smoke-test'
+ variables:
+ IVAS_PIPELINE_NAME: 'Run saturation smoke-test: $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'evs-26444'
+ variables:
+ IVAS_PIPELINE_NAME: 'EVS 26.444 test: $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'sanitizer'
+ variables:
+ IVAS_PIPELINE_NAME: 'Short testvectors sanitizers'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-renderer'
+ variables:
+ IVAS_PIPELINE_NAME: 'Renderer test: $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'complexity'
+ variables:
+ IVAS_PIPELINE_NAME: 'Complexity Measurement on $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'voip-be-test'
+ variables:
+ IVAS_PIPELINE_NAME: 'Voip BE test on $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'peaq-enc-passthrough'
+ variables:
+ IVAS_PIPELINE_NAME: 'PEAQ encoder pass-through test: $CI_COMMIT_BRANCH'
+ - if: $CI_PIPELINE_SOURCE == 'schedule' # Scheduled in any branch
+ variables:
+ IVAS_PIPELINE_NAME: 'Scheduled pipeline: $CI_COMMIT_BRANCH'
diff --git a/.gitlab-ci/variables.yml b/.gitlab-ci/variables.yml
new file mode 100644
index 0000000000000000000000000000000000000000..94bb71fb347b5349d9933564dbd35964e9daa0b7
--- /dev/null
+++ b/.gitlab-ci/variables.yml
@@ -0,0 +1,65 @@
+variables:
+ EVS_BE_TEST_DIR_BASOP: "/usr/local/be_2_evs_basop"
+ FLOAT_REF_BRANCH: "ivas-float-update"
+ SCRIPTS_DIR: "/usr/local/scripts"
+ LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm --use_ltv"
+ LONG_TEST_SUITE_NO_RENDERER: "tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_ltv.prm --use_ltv"
+ SHORT_TEST_SUITE: "tests/codec_be_on_mr_nonselection"
+ SHORT_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_basop_encoder.prm"
+ LONG_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_ltv_basop_encoder.prm"
+ TEST_SUITE: ""
+ # These path variables are used by the pytest calls.
+ # They can be overwritten in the job templates to e.g. only test encoder or decoder in the chain
+ DUT_ENCODER_PATH: "./IVAS_cod"
+ DUT_DECODER_PATH: "./IVAS_dec"
+ REF_ENCODER_PATH: "./IVAS_cod_ref"
+ REF_DECODER_PATH: "./IVAS_dec_ref"
+ MERGE_TARGET_ENCODER_PATH: "./IVAS_cod_merge_target"
+ MERGE_TARGET_DECODER_PATH: "./IVAS_dec_merge_target"
+ # These path variables are used for building the binaries
+ # They should never be overwritten!
+ REF_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_ref"
+ REF_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_ref"
+ MERGE_TARGET_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_merge_target"
+ MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target"
+ LEVEL_SCALING: "1.0"
+ BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch"
+ PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm"
+ TESTCASE_TIMEOUT_STV: 900
+ TESTCASE_TIMEOUT_LTV: 2400
+ TESTCASE_TIMEOUT_LTV_SANITIZERS: 10800
+ CI_REGRESSION_THRESH_MLD: "0.1"
+ CI_REGRESSION_THRESH_MAX_ABS_DIFF: "50"
+ CI_REGRESSION_THRESH_SSNR: "-1"
+ CI_REGRESSION_THRESH_ODG: "-0.05"
+ INSTR_DIR: "scripts/c-code_instrument"
+ BUILD_WITH_DEBUG_MODE_INFO: ""
+ ENCODER_TEST: ""
+ DELTA_ODG: ""
+ COMPARE_DMX: ""
+ SPLIT_COMPARISON: ""
+ SKIP_REGRESSION_CHECK: ""
+ FAILED_TESTCASES_LIST: "failed-testcases.txt"
+ ERRORS_TESTCASES_LIST: "errors-testcases.txt"
+ PYTEST_CACHE_ARTIFACT: "pytest_cache.zip"
+ MEASURES_FOR_REPORT: "MLD MAX_ABS_DIFF MIN_SSNR MIN_ODG"
+ FLOAT_REF_COMMIT_FILE: "float-ref-git-sha.txt"
+ CUT_COMMIT_FILE: "CuT-git-sha.txt"
+ MERGE_TARGET_COMMIT_FILE: "merge-target-git-sha.txt"
+ MANUAL_PIPELINE_TYPE:
+ description: "Type for the manual pipeline run. Use 'pytest-compare' to run comparison test against reference float codec."
+ value: 'default'
+ options:
+ - 'default'
+ - 'pytest-compare'
+ - 'pytest-compare-enc-dmx'
+ - 'pytest-compare-long'
+ - 'pytest-compare-to-input'
+ - 'pytest-saturation-smoke-test'
+ - 'evs-26444'
+ - 'sanitizer'
+ - 'pytest-renderer'
+ - 'complexity'
+ - 'coverage'
+ - 'voip-be-test'
+ - 'peaq-enc-passthrough'
diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj
index b44f506e1087e79c05c8a5af879d00220246487d..8c91d39725f7c84c7f2efbffe0dc98408424b586 100644
--- a/Workspace_msvc/lib_com.vcxproj
+++ b/Workspace_msvc/lib_com.vcxproj
@@ -136,14 +136,14 @@
-
-
+
+
-
+
-
-
-
+
+
+
@@ -153,21 +153,19 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
@@ -175,7 +173,6 @@
-
@@ -183,20 +180,18 @@
-
-
-
+
-
-
-
+
+
+
@@ -207,7 +202,7 @@
-
+
@@ -237,8 +232,8 @@
-
-
+
+
@@ -250,9 +245,7 @@
-
-
@@ -260,7 +253,6 @@
-
@@ -285,9 +277,9 @@
-
+
-
+
@@ -299,7 +291,6 @@
-
diff --git a/Workspace_msvc/lib_com.vcxproj.filters b/Workspace_msvc/lib_com.vcxproj.filters
index fb912becb20bc6ec6b66c5497a8d666e20a5e1c2..8860ccd56555b76348f97d185429a3ed4e3f2adf 100644
--- a/Workspace_msvc/lib_com.vcxproj.filters
+++ b/Workspace_msvc/lib_com.vcxproj.filters
@@ -115,9 +115,6 @@
common_all_c
-
- common_all_c
-
common_all_c
@@ -133,9 +130,6 @@
common_all_c
-
- common_all_c
-
common_all_c
@@ -301,21 +295,9 @@
common_all_c
-
- common_all_c
-
common_all_c
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
common_all_c
@@ -325,30 +307,6 @@
common_all_c
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
common_all_c
@@ -361,33 +319,12 @@
common_all_c
-
- common_all_c
-
common_all_c
common_all_c
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
-
- common_all_c
-
common_ivas_c
@@ -403,45 +340,21 @@
common_ivas_c
-
- common_all_c
-
-
- common_all_c
-
common_all_c
-
- common_all_c
-
-
- common_all_c
-
common_all_c
-
- common_all_c
-
common_all_c
common_all_c
-
- common_all_c
-
-
- common_all_c
-
common_all_c
-
- common_all_c
-
common_all_c
@@ -481,9 +394,6 @@
common_ivas_c
-
- common_ivas_c
-
common_ivas_c
@@ -535,8 +445,75 @@
common_ivas_c
-
-
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_ivas_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_all_c
+
+
+ common_ivas_c
+
+
+ common_ivas_c
+
@@ -617,17 +594,39 @@
common_h
-
-
-
-
-
-
-
-
-
-
-
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
+
+ common_h
+
diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj
index 5c19bc811cc295a937124b8537dd239cb82d5758..e5998e672c249fb5f71b255d7a62af567e98fe35 100644
--- a/Workspace_msvc/lib_dec.vcxproj
+++ b/Workspace_msvc/lib_dec.vcxproj
@@ -139,15 +139,12 @@
false
-
- false
-
-
+
-
+
@@ -218,7 +215,6 @@
-
@@ -248,7 +244,7 @@
-
+
@@ -257,8 +253,7 @@
-
-
+
@@ -273,13 +268,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -296,7 +291,7 @@
-
+
diff --git a/Workspace_msvc/lib_dec.vcxproj.filters b/Workspace_msvc/lib_dec.vcxproj.filters
index 8a4fc4605a1170b9da66c90a81b8bdd4134573c7..170eada9ad30e017f4f3652be5ee6f08f2080937 100644
--- a/Workspace_msvc/lib_dec.vcxproj.filters
+++ b/Workspace_msvc/lib_dec.vcxproj.filters
@@ -74,12 +74,6 @@
decoder_ivas_c
-
- decoder_ivas_c
-
-
- decoder_ivas_c
-
decoder_ivas_c
@@ -89,9 +83,6 @@
decoder_ivas_c
-
- decoder_ivas_c
-
decoder_ivas_c
@@ -101,12 +92,6 @@
decoder_ivas_c
-
- decoder_ivas_c
-
-
- decoder_ivas_c
-
decoder_ivas_c
@@ -119,18 +104,9 @@
decoder_all_c
-
- decoder_all_c
-
-
- decoder_all_c
-
decoder_all_c
-
- decoder_all_c
-
decoder_all_c
@@ -269,27 +245,6 @@
decoder_all_c
-
- decoder_all_c
-
-
- decoder_all_c
-
-
- decoder_all_c
-
-
- decoder_all_c
-
-
- decoder_all_c
-
-
- decoder_all_c
-
-
- decoder_all_c
-
decoder_all_c
@@ -329,9 +284,6 @@
decoder_all_c
-
- decoder_all_c
-
decoder_all_c
@@ -518,18 +470,48 @@
decoder_ivas_c
+
+ decoder_all_c
+
+
+ decoder_all_c
+
+
+ decoder_ivas_c
+
+
+ decoder_all_c
+
+
+ decoder_ivas_c
+
+
+ decoder_ivas_c
+
+
+ decoder_all_c
+
+
+ decoder_all_c
+
+
+ decoder_all_c
+
+
+ decoder_all_c
+
+
+ decoder_all_c
+
+
+ decoder_all_c
+
+
+ decoder_all_c
+
-
- decoder_h
-
-
- decoder_h
-
-
- decoder_h
-
decoder_h
@@ -557,6 +539,15 @@
decoder_h
+
+ decoder_h
+
+
+ decoder_h
+
+
+ decoder_h
+
diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj
index eb9d1330e3142d06c6744a5dc771fe4e41b56d7a..1237541427184d6fe8470e1a0c0ab6fa04eccf03 100644
--- a/Workspace_msvc/lib_enc.vcxproj
+++ b/Workspace_msvc/lib_enc.vcxproj
@@ -239,7 +239,7 @@
-
+
@@ -274,11 +274,10 @@
-
+
-
@@ -318,7 +317,7 @@
-
+
diff --git a/Workspace_msvc/lib_enc.vcxproj.filters b/Workspace_msvc/lib_enc.vcxproj.filters
index 8990971637ef90b8f3a11fbd672278a29d3f89da..e8f429f4914dace1f3d9efa63afe65a713d5bf25 100644
--- a/Workspace_msvc/lib_enc.vcxproj.filters
+++ b/Workspace_msvc/lib_enc.vcxproj.filters
@@ -1,7 +1,6 @@
-
encoder_evs_c
@@ -152,9 +151,6 @@
encoder_all_c
-
- encoder_all_c
-
encoder_all_c
@@ -287,9 +283,6 @@
encoder_all_c
-
- encoder_all_c
-
encoder_all_c
@@ -347,9 +340,6 @@
encoder_all_c
-
- encoder_all_c
-
encoder_all_c
@@ -602,6 +592,13 @@
encoder_ivas_c
+
+ encoder_all_c
+
+
+
+ encoder_all_c
+
diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj
index 17b82663162d0b2d58e628269ecbaef86ab3c4cc..f93b5f26d1673c005e7dca6083f5e794f4612ccf 100644
--- a/Workspace_msvc/lib_rend.vcxproj
+++ b/Workspace_msvc/lib_rend.vcxproj
@@ -142,7 +142,6 @@
-
@@ -158,7 +157,7 @@
-
+
@@ -175,7 +174,7 @@
-
+
diff --git a/Workspace_msvc/lib_rend.vcxproj.filters b/Workspace_msvc/lib_rend.vcxproj.filters
index 5c4a4901111136b5ce1c1406701ffe10e156b86b..820a5c044354c8b35ceabc1855256052b4915b24 100644
--- a/Workspace_msvc/lib_rend.vcxproj.filters
+++ b/Workspace_msvc/lib_rend.vcxproj.filters
@@ -1,13 +1,6 @@
-
-
- rend_c
-
-
- rend_c
-
rend_c
@@ -122,6 +115,10 @@
rend_c
+
+ rend_c
+
+
diff --git a/apps/decoder.c b/apps/decoder.c
index 37e3cc760810beb1334d37b3ad30b037d2f09eb1..76bd23bbf7dedb7b1d8bc284ee1837dc9411b099 100644
--- a/apps/decoder.c
+++ b/apps/decoder.c
@@ -43,9 +43,7 @@
#include "masa_file_writer.h"
#include "render_config_reader.h"
#include "rotation_file_reader.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "split_render_file_read_write.h"
-#endif
#include "vector3_pair_file_reader.h"
#include "wmc_auto.h"
#include "options.h"
@@ -117,9 +115,7 @@ typedef struct
Word16 non_diegetic_pan_gain_fx; /* Q15 */
bool renderConfigEnabled;
char *renderConfigFilename;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
char *outputMdFilename;
-#endif
IVAS_DEC_COMPLEXITY_LEVEL complexityLevel;
bool tsmEnabled;
IVAS_RENDER_FRAMESIZE renderFramesize;
@@ -136,11 +132,7 @@ typedef struct
static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg );
static void usage_dec( void );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf );
-#else
-static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf );
-#endif
static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec );
@@ -157,10 +149,8 @@ int main(
bool mainFailed = true; /* Assume main failed until cleanup is reached without errors */
DecArguments arg;
ivas_error error = IVAS_ERR_UNKNOWN;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ISAR_SPLIT_REND_BITS_DATA splitRendBits;
uint8_t splitRendBitsBuf[ISAR_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES];
-#endif
/* Any handles that require cleanup must be declared here and initialized to NULL */
IVAS_DEC_HANDLE hIvasDec = NULL;
@@ -174,15 +164,18 @@ int main(
RenderConfigReader *renderConfigReader = NULL;
int16_t *pcmBuf = NULL;
IVAS_RENDER_FRAMESIZE asked_frame_size;
+ IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL;
+ IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL;
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics = NULL;
+#endif
#ifdef WMOPS
reset_wmops();
reset_mem( USE_BYTES );
#endif
-#ifdef SPLIT_REND_WITH_HEAD_ROT
splitRendBits.bits_buf = splitRendBitsBuf;
-#endif
/*------------------------------------------------------------------------------------------*
* Parse command-line arguments
@@ -230,7 +223,6 @@ int main(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED )
{
fprintf( stdout, "Output metadata file: %s\n", arg.outputWavFilename );
@@ -241,7 +233,6 @@ int main(
fprintf( stdout, "Output metadata file: %s\n", arg.outputMdFilename );
}
else
-#endif
{
fprintf( stdout, "Output synthesis file: %s\n", arg.outputWavFilename );
}
@@ -275,11 +266,7 @@ int main(
if ( arg.enableHeadRotation )
{
/* sanity check */
- if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM
-#endif
- )
+ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
{
fprintf( stderr, "\nError: Head-rotation file file cannot be used in this output configuration.\n\n" );
goto cleanup;
@@ -379,12 +366,8 @@ int main(
if ( arg.renderConfigEnabled )
{
/* sanity check */
- if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM &&
- arg.Opt_non_diegetic_pan == 0
-#endif
- )
+ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM &&
+ arg.Opt_non_diegetic_pan == 0 )
{
fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" );
goto cleanup;
@@ -420,7 +403,6 @@ int main(
fprintf( stderr, "\nChanged render framesize, only 20ms are allowed for decoding to EXT!\n" );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*------------------------------------------------------------------------------------------*
* Configure Split rendering
*------------------------------------------------------------------------------------------*/
@@ -442,7 +424,6 @@ int main(
arg.enableHeadRotation = true;
}
-#endif
/*------------------------------------------------------------------------------------------*
* Configure VoIP mode
@@ -468,7 +449,6 @@ int main(
IVAS_RENDER_CONFIG_DATA renderConfig;
/* sanity check */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB &&
arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM &&
arg.Opt_non_diegetic_pan == 0 )
@@ -476,13 +456,6 @@ int main(
fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split rendering mode is enabled. Exiting. \n" );
goto cleanup;
}
-#else
- if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
- {
- fprintf( stderr, "\nExternal Renderer Config is supported only for binaural output configurations. Exiting. \n\n" );
- goto cleanup;
- }
-#endif
if ( ( error = IVAS_DEC_GetRenderConfig( hIvasDec, &renderConfig ) ) != IVAS_ERR_OK )
{
@@ -508,7 +481,6 @@ int main(
renderConfig.directivity_fx[i * 3 + 2] = (Word16) ( renderConfig.directivity[i * 3 + 2] * ( ( 1u << 15 ) - 1 ) );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ||
arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
@@ -533,7 +505,6 @@ int main(
fprintf( stderr, "\nChanged render framesize, only 20ms are allowed for non-0dof split rendering!\n" );
}
}
-#endif
if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
{
@@ -552,13 +523,9 @@ int main(
}
renderConfig.roomAcoustics.override = true;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/* ISAR frame size is set from command line, not renderer config file.
* This will be ignored if output format is not split rendering. */
renderConfig.split_rend_config.isar_frame_size_ms = (int16_t) arg.renderFramesize /* given in number of 5ms subframes */ * 5;
-#endif
-#endif
if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, renderConfig ) ) != IVAS_ERR_OK )
{
@@ -599,58 +566,170 @@ int main(
if ( arg.hrtfReaderEnabled )
{
- IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL;
-
if ( ( error = IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
goto cleanup;
}
- if ( ( error = load_HRTF_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
+ if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
{
- fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
- goto cleanup;
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+#ifdef FIX_OLD_BINARY_FORMAT
+ hrtfFileReader_close( &hrtfReader );
+ strcat( arg.hrtfFileName, "new" );
+
+ if ( hrtfFileReader_open( arg.hrtfFileName, &hrtfReader ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+
+ if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_td_hrtf( hHrtfTD );
+ }
+ }
+#else
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+#endif
+ }
+ else
+ {
+ destroy_td_hrtf( hHrtfTD );
+ }
}
- IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL;
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
+ if ( ( *hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+ }
+#endif
+#endif
if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nIVAS_DEC_GetHrtfCRendHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
goto cleanup;
}
- if ( ( error = create_SetOfHRTF_from_binary( hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK )
+ if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK )
{
- fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfFileName );
- goto cleanup;
+#ifdef FIX_OLD_BINARY_FORMAT
+ cleanup_SetOfHRTF( hSetOfHRTF );
+ hrtfFileReader_close( &hrtfReader );
+ strcat( arg.hrtfFileName, "new" );
+
+ if ( hrtfFileReader_open( arg.hrtfFileName, &hrtfReader ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+ if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_SetOfHRTF( hSetOfHRTF );
+ }
+ }
+#else
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_SetOfHRTF( hSetOfHRTF );
+ }
+#endif
}
- IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL;
+ IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL;
if ( ( error = IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nIVAS_DEC_GetHrtfFastConvHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
goto cleanup;
}
- if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK )
+ if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK )
{
- fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfFileName );
- goto cleanup;
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_fastconv_hrtf( hHrtfFastConv );
+ }
}
- IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL;
+ IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL;
if ( ( error = IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
goto cleanup;
}
- if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK )
+ if ( ( error = load_parambin_HRTF_from_binary( *hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_parambin_hrtf( hHrtfParambin );
+ }
+ }
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
+ if ( ( error = IVAS_DEC_GetHrtfStatisticsHandle( hIvasDec, &hHrtfStatistics ) ) != IVAS_ERR_OK )
{
- fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfFileName );
+ fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
goto cleanup;
}
+ if ( ( error = load_reverb_binary( *hHrtfStatistics, arg.output_Fs, hrtfReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_hrtf_statistics( hHrtfStatistics );
+ }
+ }
+#else
+ if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
+ goto cleanup;
+ }
+#endif
+#endif
}
/*------------------------------------------------------------------------------------------*
@@ -676,11 +755,7 @@ int main(
}
else
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
error = decodeG192( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, &splitRendBits, hIvasDec, pcmBuf );
-#else
- error = decodeG192( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec, pcmBuf );
-#endif
}
if ( error == IVAS_ERR_OK || error == IVAS_ERR_END_OF_FILE )
@@ -713,12 +788,16 @@ cleanup:
if ( arg.hrtfReaderEnabled )
{
- IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL;
IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD );
- dealloc_HRTF_binary( hHrtfTD );
- IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL;
+ if ( hHrtfTD != NULL )
+ {
+ destroy_td_hrtf( hHrtfTD );
+ }
IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF );
- destroy_SetOfHRTF( hSetOfHRTF );
+ if ( hSetOfHRTF != NULL )
+ {
+ destroy_SetOfHRTF( hSetOfHRTF );
+ }
}
IVAS_DEC_Close( &hIvasDec );
@@ -814,7 +893,6 @@ static IVAS_AUDIO_CONFIG cmdline2config(
{
output_config = IVAS_AUDIO_CONFIG_BINAURAL;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
else if ( strcmp( argv_to_upper, "BINAURAL_SPLIT_CODED" ) == 0 )
{
output_config = IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED;
@@ -823,7 +901,6 @@ static IVAS_AUDIO_CONFIG cmdline2config(
{
output_config = IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM;
}
-#endif
else if ( strcmp( argv_to_upper, "BINAURAL_ROOM_IR" ) == 0 )
{
output_config = IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR;
@@ -891,9 +968,7 @@ static bool parseCmdlIVAS_dec(
arg->renderConfigFilename = NULL;
arg->Opt_dpid_on = 0;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
arg->outputMdFilename = NULL;
-#endif
arg->inputFormat = IVAS_DEC_INPUT_FORMAT_G192;
arg->Opt_non_diegetic_pan = 0;
@@ -1141,7 +1216,6 @@ static bool parseCmdlIVAS_dec(
}
i += 2;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
else if ( strcmp( argv_to_upper, "-OM" ) == 0 )
{
arg->outputMdFilename = argv[i + 1];
@@ -1153,7 +1227,6 @@ static bool parseCmdlIVAS_dec(
}
i += 2;
}
-#endif
else if ( strcmp( argv_to_upper, "-NON_DIEGETIC_PAN" ) == 0 )
{
i++;
@@ -1320,14 +1393,12 @@ static bool parseCmdlIVAS_dec(
usage_dec();
return false;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( arg->outputMdFilename != NULL && arg->outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
{
fprintf( stderr, "Error: Output split rendering metadata file is supported for BINAURAL_SPLIT_PCM output config. only\n\n" );
usage_dec();
return false;
}
-#endif
}
else
{
@@ -1404,13 +1475,8 @@ static void usage_dec( void )
fprintf( stdout, "Mandatory parameters:\n" );
fprintf( stdout, "---------------------\n" );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
fprintf( stdout, "OutputConf : Output configuration: MONO, STEREO, 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4, FOA,\n" );
fprintf( stdout, " HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, BINAURAL_SPLIT_CODED, BINAURAL_SPLIT_PCM, EXT\n" );
-#else
- fprintf( stdout, "OutputConf : Output configuration: MONO, STEREO, 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4, FOA,\n" );
- fprintf( stdout, " HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, EXT\n" );
-#endif
fprintf( stdout, " By default, channel order and loudspeaker positions are equal to the\n" );
fprintf( stdout, " encoder. For loudspeaker outputs, OutputConf can be a custom loudspeaker\n" );
fprintf( stdout, " layout file. See readme.txt for details.\n" );
@@ -1450,9 +1516,7 @@ static void usage_dec( void )
fprintf( stdout, "-rvf File : Reference vector specified by external trajectory File\n" );
fprintf( stdout, " works only in combination with '-otr ref_vec' and 'ref_vec_lev' modes\n" );
fprintf( stdout, "-render_config File : Renderer configuration File\n" );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
fprintf( stdout, "-om File : Metadata output File for BINAURAL_SPLIT_PCM OutputConf (only for Fs = 48 kHz)\n" );
-#endif
fprintf( stdout, "-non_diegetic_pan P : panning mono non-diegetic sound to stereo with paning P, -90<= P <=90,\n" );
fprintf( stdout, " left or l or 90->left, right or r or -90->right, center or c or 0->middle\n" );
fprintf( stdout, "-exof File : External orientation File for external orientation trajectory\n" );
@@ -1479,15 +1543,11 @@ static void usage_dec( void )
*---------------------------------------------------------------------*/
static ivas_error initOnFirstGoodFrame(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: */
- const DecArguments arg, /* i : */
- const int16_t numInitialBadFrames, /* i : */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- int16_t *numOutSamples, /* i/o: */
- int16_t *vec_pos_len, /* i/o: */
-#else
- const uint16_t numOutSamples, /* i : */
-#endif
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: */
+ const DecArguments arg, /* i : */
+ const int16_t numInitialBadFrames, /* i : */
+ int16_t *numOutSamples, /* i/o: */
+ int16_t *vec_pos_len, /* i/o: */
int16_t *pFullDelayNumSamples, /* o : */
int16_t *pRemainingDelayNumSamples, /* o : */
int32_t *delayTimeScale, /* o : */
@@ -1496,13 +1556,8 @@ static ivas_error initOnFirstGoodFrame(
MasaFileWriter **ppMasaWriter, /* o : */
IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS], /* o : */
int16_t *pNumOutChannels, /* o : */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- uint16_t *pNumObj, /* o : */
- SplitFileReadWrite **splitRendWriter
-#else
- uint16_t *pNumObj /* o : */
-#endif
-)
+ uint16_t *pNumObj, /* o : */
+ SplitFileReadWrite **splitRendWriter )
{
ivas_error error = IVAS_ERR_UNKNOWN;
@@ -1513,12 +1568,10 @@ static ivas_error initOnFirstGoodFrame(
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) )
{
pFullDelayNumSamples[0] = 0;
}
-#endif
if ( !arg.delayCompensationEnabled )
{
@@ -1540,7 +1593,6 @@ static ivas_error initOnFirstGoodFrame(
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) )
{
/* Open split rendering metadata writer */
@@ -1549,10 +1601,8 @@ static ivas_error initOnFirstGoodFrame(
ISAR_SPLIT_REND_CODEC splitRendCodec;
int16_t splitRendCodecFrameSizeMs;
ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int16_t splitRendIsarFrameSizeMs;
int16_t lc3plusHighRes;
-#endif
if ( ( error = IVAS_DEC_GetDelay( hIvasDec, delayNumSamples_temp, &delayTimeScale_temp ) ) != IVAS_ERR_OK )
{
@@ -1563,15 +1613,9 @@ static ivas_error initOnFirstGoodFrame(
if ( ( error = IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec,
&splitRendCodec,
&poseCorrection,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
&splitRendIsarFrameSizeMs,
-#endif
- &splitRendCodecFrameSizeMs
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
- &lc3plusHighRes
-#endif
- ) ) != IVAS_ERR_OK )
+ &splitRendCodecFrameSizeMs,
+ &lc3plusHighRes ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nUnable to get split renderer bitstream header: %s\n", ivas_error_to_string( error ) );
return error;
@@ -1585,14 +1629,10 @@ static ivas_error initOnFirstGoodFrame(
delayTimeScale_temp,
splitRendCodec,
poseCorrection,
- splitRendCodecFrameSizeMs
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
+ splitRendCodecFrameSizeMs,
splitRendIsarFrameSizeMs,
arg.output_Fs,
- lc3plusHighRes
-#endif
- ) ) != IVAS_ERR_OK )
+ lc3plusHighRes ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename );
return error;
@@ -1612,14 +1652,10 @@ static ivas_error initOnFirstGoodFrame(
delayTimeScale_temp,
splitRendCodec,
poseCorrection,
- splitRendCodecFrameSizeMs
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
+ splitRendCodecFrameSizeMs,
splitRendIsarFrameSizeMs,
arg.output_Fs,
- lc3plusHighRes
-#endif
- ) ) != IVAS_ERR_OK )
+ lc3plusHighRes ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename );
return error;
@@ -1629,23 +1665,19 @@ static ivas_error initOnFirstGoodFrame(
if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) == 0 )
{
-#endif
/* Open audio writer and write all previously skipped bad frames now that frame size is known */
if ( ( error = AudioFileWriter_open( ppAfWriter, arg.outputWavFilename, arg.output_Fs, *pNumOutChannels ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nUnable to open output file %s\n", arg.outputWavFilename );
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
int16_t *zeroBuf = malloc( pcmFrameSize * sizeof( int16_t ) );
memset( zeroBuf, 0, pcmFrameSize * sizeof( int16_t ) );
for ( int16_t i = 0; i < numInitialBadFrames; ++i )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( *splitRendWriter != NULL )
{
ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero;
@@ -1655,12 +1687,8 @@ static ivas_error initOnFirstGoodFrame(
splitRendBitsZero.buf_len = 0;
splitRendBitsZero.codec = ISAR_SPLIT_REND_CODEC_DEFAULT;
splitRendBitsZero.pose_correction = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
splitRendBitsZero.codec_frame_size_ms = 0;
splitRendBitsZero.isar_frame_size_ms = 20;
-#else
- splitRendBitsZero.codec_frame_size_ms = 20;
-#endif
if ( split_rend_write_bitstream_to_file( *splitRendWriter, splitRendBitsZero.bits_buf, &splitRendBitsZero.bits_read, &splitRendBitsZero.bits_written ) != IVAS_ERR_OK )
{
@@ -1670,19 +1698,10 @@ static ivas_error initOnFirstGoodFrame(
}
else
{
-#endif
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( *pRemainingDelayNumSamples < *numOutSamples )
-#else
- if ( *pRemainingDelayNumSamples < numOutSamples )
-#endif
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, *numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK )
-#else
- if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK )
-#endif
{
fprintf( stderr, "\nOutput audio file writer error\n" );
return error;
@@ -1691,15 +1710,9 @@ static ivas_error initOnFirstGoodFrame(
}
else
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
*pRemainingDelayNumSamples -= *numOutSamples;
-#else
- *pRemainingDelayNumSamples -= numOutSamples;
-#endif
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
}
free( zeroBuf );
@@ -1785,7 +1798,6 @@ static ivas_error initOnFirstGoodFrame(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( *splitRendWriter != NULL )
{
if ( numOutSamples == NULL || vec_pos_len == NULL )
@@ -1805,7 +1817,6 @@ static ivas_error initOnFirstGoodFrame(
return error;
}
}
-#endif
return IVAS_ERR_OK;
}
@@ -1824,9 +1835,7 @@ static ivas_error decodeG192(
RotFileReader *externalOrientationFileReader,
RotFileReader *refRotReader,
Vector3PairFileReader *referenceVectorReader,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ISAR_SPLIT_REND_BITS_DATA *splitRendBits,
-#endif
IVAS_DEC_HANDLE hIvasDec,
int16_t *pcmBuf )
@@ -1853,9 +1862,7 @@ static ivas_error decodeG192(
IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS];
IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES] = { { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 } };
int16_t vec_pos_update, vec_pos_len;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
SplitFileReadWrite *splitRendWriter = NULL;
-#endif
for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i )
{
@@ -1953,7 +1960,6 @@ static ivas_error decodeG192(
{
IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES];
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( headRotReader == NULL )
{
for ( i = 0; i < num_subframes; i++ )
@@ -1971,7 +1977,6 @@ static ivas_error decodeG192(
}
else
{
-#endif
for ( i = 0; i < num_subframes; i++ )
{
if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK )
@@ -1980,17 +1985,11 @@ static ivas_error decodeG192(
goto cleanup;
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
for ( i = 0; i < num_subframes; i++ )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i, DEFAULT_AXIS ) ) != IVAS_ERR_OK )
-#else
- if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i ) ) != IVAS_ERR_OK )
-#endif
{
fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
goto cleanup;
@@ -2049,7 +2048,6 @@ static ivas_error decodeG192(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) )
{
if ( ( error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, (Word16 *) ( pcmBuf + nOutChannels * nSamplesRendered ), splitRendBits, &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK )
@@ -2063,7 +2061,6 @@ static ivas_error decodeG192(
}
else
{
-#endif
if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nError in IVAS_DEC_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) );
@@ -2071,9 +2068,7 @@ static ivas_error decodeG192(
}
nSamplesRendered += nSamplesRendered_loop;
nSamplesToRender -= nSamplesRendered_loop;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
if ( needNewFrame )
{
@@ -2104,11 +2099,7 @@ static ivas_error decodeG192(
/* Once good frame decoded, catch up */
if ( decodedGoodFrame )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, &nOutSamples, &vec_pos_len, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &splitRendWriter ) ) != IVAS_ERR_OK )
-#else
- if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, nOutSamples, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj ) ) != IVAS_ERR_OK )
-#endif
{
goto cleanup;
}
@@ -2122,7 +2113,6 @@ static ivas_error decodeG192(
/* Write current frame */
if ( decodedGoodFrame )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) )
{
if ( split_rend_write_bitstream_to_file( splitRendWriter, splitRendBits->bits_buf, &splitRendBits->bits_read, &splitRendBits->bits_written ) != IVAS_ERR_OK )
@@ -2134,7 +2124,6 @@ static ivas_error decodeG192(
if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) == 0 )
{
-#endif
if ( delayNumSamples < nOutSamples )
{
if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK )
@@ -2148,9 +2137,7 @@ static ivas_error decodeG192(
{
delayNumSamples -= nOutSamples;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
}
/* Write ISm metadata to external file(s) */
@@ -2264,11 +2251,7 @@ static ivas_error decodeG192(
goto cleanup;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos[0], 0, DEFAULT_AXIS ) ) != IVAS_ERR_OK )
-#else
- if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos[0], 0 ) ) != IVAS_ERR_OK )
-#endif
{
fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
goto cleanup;
@@ -2388,18 +2371,14 @@ static ivas_error decodeG192(
*------------------------------------------------------------------------------------------*/
memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( afWriter != NULL )
{
-#endif
if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) );
goto cleanup;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
/*------------------------------------------------------------------------------------------*
* Close files and deallocate resources
@@ -2409,9 +2388,7 @@ static ivas_error decodeG192(
cleanup:
-#ifdef SPLIT_REND_WITH_HEAD_ROT
split_rend_reader_writer_close( &splitRendWriter );
-#endif
AudioFileWriter_close( &afWriter );
MasaFileWriter_close( &masaWriter );
for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; i++ )
@@ -2658,7 +2635,6 @@ static ivas_error decodeVoIP(
{
IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES];
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( headRotReader == NULL )
{
for ( i = 0; i < num_subframes; i++ )
@@ -2676,7 +2652,6 @@ static ivas_error decodeVoIP(
}
else
{
-#endif
for ( i = 0; i < num_subframes; i++ )
{
if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK )
@@ -2686,18 +2661,12 @@ static ivas_error decodeVoIP(
goto cleanup;
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
for ( i = 0; i < num_subframes; i++ )
{
- if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- ,
- DEFAULT_AXIS
-#endif
- ) ) != IVAS_ERR_OK )
+ if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i,
+ DEFAULT_AXIS ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
goto cleanup;
@@ -2824,15 +2793,10 @@ static ivas_error decodeVoIP(
/* Once good frame decoded, catch up */
if ( decodedGoodFrame )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
SplitFileReadWrite *splitRendWriter = NULL;
if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, &nOutSamples, NULL, delayNumSamples_orig, &delayNumSamples, &delayTimeScale,
&bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &splitRendWriter ) ) != IVAS_ERR_OK )
-#else
- if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, nOutSamples, delayNumSamples_orig, &delayNumSamples, &delayTimeScale,
- &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj ) ) != IVAS_ERR_OK )
-#endif
{
goto cleanup;
}
diff --git a/apps/encoder.c b/apps/encoder.c
index af9554589d813007f8b04ec2df6f4f6a0369fe4c..8404747dc088e1321e4fa0b9e6e394369123d135 100644
--- a/apps/encoder.c
+++ b/apps/encoder.c
@@ -681,7 +681,7 @@ int main(
{
if ( ( error = JbmFileReader_readCAconfig( jbmReader, &caConfig ) ) != IVAS_ERR_OK )
{
- fprintf( stderr, "JbmFileReader_readCAconfig() failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) );
+ fprintf( stderr, "\nError (%s) while reading Channel-Aware Config. from: %s\n\n", IVAS_ENC_GetErrorMessage( error ), JbmFileReader_getFilePath( jbmReader ) );
goto cleanup;
}
@@ -758,7 +758,12 @@ int main(
}
/* *** Encode one frame *** */
- if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits ) ) != IVAS_ERR_OK )
+ if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ frame
+#endif
+ ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nencodeFrame failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) );
goto cleanup;
diff --git a/apps/isar_post_rend.c b/apps/isar_post_rend.c
index d9095054beead45053c678af29cbdcf0aa62bb24..4b478f7c20439392b053c7c3776f9b53791f4561 100644
--- a/apps/isar_post_rend.c
+++ b/apps/isar_post_rend.c
@@ -33,17 +33,6 @@
#include "lib_isar_post_rend.h"
//#undef IVAS_FLOAT_FIXED
-#ifndef SPLIT_REND_WITH_HEAD_ROT
-
-int main( int argc, char **argv )
-{
- (void) argc;
- (void) argv;
- ISAR_POST_REND_void_func();
- return 0;
-}
-
-#else
#include
#include
@@ -734,13 +723,9 @@ int main(
bitsBuffer.config.bufLenInBytes = 0;
bitsBuffer.config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT;
bitsBuffer.config.poseCorrection = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
bitsBuffer.config.codec_frame_size_ms = 5;
bitsBuffer.config.isar_frame_size_ms = 20;
bitsBuffer.config.lc3plusHighRes = 0;
-#else
- bitsBuffer.config.codec_frame_size_ms = 20;
-#endif
CmdlnArgs args = parseCmdlnArgs( argc, argv );
@@ -764,9 +749,7 @@ int main(
SplitRendBFIFileReader_open( args.splitRendBFIFilePath, &splitRendBFIReader );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int32_t inFileSampleRate = 0;
-#endif
strncpy( audioFilePath, args.inputFilePath, FILENAME_MAX - 1 );
hSplitRendFileReadWrite = NULL;
if ( ( args.inConfig.numBinBuses > 0 ) && ( args.inConfig.binBuses[0].audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
@@ -775,14 +758,10 @@ int main(
args.inMetadataFilePaths[0],
&bitsBuffer.config.codec,
&bitsBuffer.config.poseCorrection,
- &bitsBuffer.config.codec_frame_size_ms
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
+ &bitsBuffer.config.codec_frame_size_ms,
&bitsBuffer.config.isar_frame_size_ms,
&inFileSampleRate,
- &bitsBuffer.config.lc3plusHighRes
-#endif
- );
+ &bitsBuffer.config.lc3plusHighRes );
if ( error != IVAS_ERR_OK )
{
fprintf( stderr, "Could not open split rend metadata file %s\n", args.inMetadataFilePaths[0] );
@@ -803,14 +782,10 @@ int main(
args.inputFilePath,
&bitsBuffer.config.codec,
&bitsBuffer.config.poseCorrection,
- &bitsBuffer.config.codec_frame_size_ms
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
+ &bitsBuffer.config.codec_frame_size_ms,
&bitsBuffer.config.isar_frame_size_ms,
&inFileSampleRate,
- &bitsBuffer.config.lc3plusHighRes
-#endif
- );
+ &bitsBuffer.config.lc3plusHighRes );
if ( error != IVAS_ERR_OK )
{
fprintf( stderr, "Could not open split rend metadata file %s\n", args.inputFilePath );
@@ -819,17 +794,11 @@ int main(
audioReader = NULL;
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- int32_t inFileSampleRate = 0;
-#endif
if ( audioReader != NULL )
{
error = AudioFileReader_getSamplingRate( audioReader, &inFileSampleRate );
}
- else
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- if ( hSplitRendFileReadWrite == NULL )
-#endif
+ else if ( hSplitRendFileReadWrite == NULL )
{
inFileSampleRate = args.sampleRate;
}
@@ -891,13 +860,9 @@ int main(
if ( ( error = ISAR_REND_SetSplitRendBitstreamHeader( hIsarPostRend,
bitsBuffer.config.codec,
bitsBuffer.config.poseCorrection,
- bitsBuffer.config.codec_frame_size_ms
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
+ bitsBuffer.config.codec_frame_size_ms,
bitsBuffer.config.isar_frame_size_ms,
- bitsBuffer.config.lc3plusHighRes
-#endif
- ) ) != IVAS_ERR_OK )
+ bitsBuffer.config.lc3plusHighRes ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "Error in getting split renderer bitstream header: %s\n", ivas_error_to_string( error ) );
exit( -1 );
@@ -1258,5 +1223,3 @@ int main(
#undef WMC_TOOL_SKIP
-
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
diff --git a/apps/renderer.c b/apps/renderer.c
index 2a14e28112fff7f6554da1f6fb5e718149acc74a..8d7cb86c98f7a0baa5f323043e0227bd7e3e2fd4 100644
--- a/apps/renderer.c
+++ b/apps/renderer.c
@@ -45,10 +45,8 @@
#include "masa_file_writer.h"
#include "render_config_reader.h"
#include "rotation_file_reader.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "split_render_file_read_write.h"
#include "split_rend_bfi_file_reader.h"
-#endif
#include "vector3_pair_file_reader.h"
#include "wmc_auto.h"
@@ -155,13 +153,9 @@ typedef struct
OutputConfig outConfig;
char inMetadataFilePaths[RENDERER_MAX_ISM_INPUTS][RENDERER_MAX_CLI_ARG_LENGTH];
int16_t numInMetadataFiles;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
char outMetadataFilePath[RENDERER_MAX_CLI_ARG_LENGTH];
-#endif
char headRotationFilePath[RENDERER_MAX_CLI_ARG_LENGTH];
-#ifdef SPLIT_REND_WITH_HEAD_ROT
char splitRendBFIFilePath[RENDERER_MAX_CLI_ARG_LENGTH];
-#endif
char referenceVectorFilePath[RENDERER_MAX_CLI_ARG_LENGTH];
char referenceRotationFilePath[RENDERER_MAX_CLI_ARG_LENGTH];
char externalOrientationFilePath[RENDERER_MAX_CLI_ARG_LENGTH];
@@ -208,10 +202,8 @@ typedef enum
CmdLnOptionId_inputMetadata,
CmdLnOptionId_listFormats,
CmdLnOptionId_inputGain,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
CmdLnOptionId_outputMetadata,
CmdLnOptionId_SplitRendBFIFile,
-#endif
CmdLnOptionId_referenceVectorFile,
CmdLnOptionId_exteriorOrientationFile,
CmdLnOptionId_framing,
@@ -237,11 +229,7 @@ static const CmdLnParser_Option cliOptions[] = {
.id = CmdLnOptionId_inputMetadata,
.match = "input_metadata",
.matchShort = "im",
-#ifdef SPLIT_REND_WITH_HEAD_ROT
.description = "Space-separated list of path to metadata files for ISM or MASA inputs or BINAURAL_SPLIT_PCM input mode",
-#else
- .description = "Space-separated list of path to metadata files for ISM or MASA inputs",
-#endif
},
{
.id = CmdLnOptionId_outputFile,
@@ -267,7 +255,6 @@ static const CmdLnParser_Option cliOptions[] = {
.matchShort = "T",
.description = "Head rotation trajectory file for simulation of head tracking (only for binaural outputs)",
},
-#ifdef SPLIT_REND_WITH_HEAD_ROT
{
.id = CmdLnOptionId_outputMetadata,
.match = "output_metadata",
@@ -280,7 +267,6 @@ static const CmdLnParser_Option cliOptions[] = {
.matchShort = "prbfi",
.description = "Split rendering option: bfi file",
},
-#endif
{
.id = CmdLnOptionId_refRotFile,
.match = "reference_rotation_file",
@@ -438,44 +424,24 @@ static void printSupportedAudioConfigs( void );
static IVAS_AUDIO_CONFIG parseAudioConfig( const char *configString );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
static void convertOutputBuffer_fx(
const Word32 *Word32Buffer,
const Word16 numSamplesPerChannel,
const Word16 numChannels,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 *intBuffer,
const Word16 cldfb_in_flag,
IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn,
- Word16 out_q
-#else
- Word16 *intBuffer,
- Word16 out_q
-#endif
-);
+ Word16 out_q );
static void convertInputBuffer_fx(
const Word16 *intBuffer,
const Word16 numIntSamplesPerChannel,
const Word16 numFloatSamplesPerChannel,
const Word16 numChannels,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word32 *Word32Buffer,
Word16 in_q_factor,
const int16_t cldfb_in_flag,
IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna,
- Word16 *out_q_factor
-#else
- Word32 *Word32Buffer,
- Word16 in_q_factor
-#endif
-);
-#else
-static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, float *floatBuffer );
-
-static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, int16_t *intBuffer );
-static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, Word16 *intBuffer, Word16 q_factor );
-static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, Word32 *Int32Buffer, Word16 in_q_factor );
-#endif
+ Word16 *out_q_factor );
/*------------------------------------------------------------------------------------------*
@@ -702,7 +668,6 @@ static float dBToLin(
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
static int16_t get_cldfb_in_flag(
const IVAS_AUDIO_CONFIG audioConfig,
const IVAS_RENDER_CONFIG_DATA *renderConfig )
@@ -737,7 +702,6 @@ static int16_t is_split_pre_rend_mode(
return flag;
}
-#endif
/*------------------------------------------------------------------------------------------*
@@ -754,14 +718,19 @@ int main(
RotFileReader *headRotReader = NULL;
RotFileReader *externalOrientationFileReader = NULL;
RotFileReader *referenceRotReader = NULL;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS];
IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_INPUT_CHANNELS];
int16_t cldfb_in_flag, CLDFBframeSize_smpls;
SplitRendBFIFileReader *splitRendBFIReader = NULL;
-#endif
Vector3PairFileReader *referenceVectorReader = NULL;
hrtfFileReader *hrtfFileReader = NULL;
+ IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL;
+ IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL;
+ IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL;
+ IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL;
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics = NULL;
+#endif
IsmPositionProvider *positionProvider;
LfeRoutingConfig *lfeRoutingConfigs[RENDERER_MAX_MC_INPUTS];
RenderConfigReader *renderConfigReader = NULL;
@@ -773,9 +742,7 @@ int main(
AudioFileWriter *audioWriter;
int32_t inBufferSize;
int32_t outBufferSize;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
int32_t bitsBufferSize;
-#endif
int16_t *inpInt16Buffer;
float *inFloatBuffer;
int16_t *outInt16Buffer;
@@ -783,17 +750,13 @@ int main(
Word32 *inInt32Buffer;
Word32 gain_fx;
float *outFloatBuffer;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
uint8_t *bitsBufferData = NULL;
-#endif
IVAS_REND_AudioBuffer inBuffer;
IVAS_REND_AudioBuffer outBuffer;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IVAS_REND_BitstreamBuffer bitsBuffer;
SplitFileReadWrite *hSplitRendFileReadWrite;
int16_t delayNumSamples_temp;
int32_t delayTimeScale_temp;
-#endif
int16_t numSamplesRead;
int16_t delayNumSamples = -1;
int16_t delayNumSamples_orig = 0;
@@ -814,7 +777,6 @@ int main(
hMasaMetadata[i] = NULL;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hSplitRendFileReadWrite = NULL;
CLDFBframeSize_smpls = 0;
cldfb_in_flag = 0;
@@ -824,14 +786,9 @@ int main(
bitsBuffer.config.bufLenInBytes = 0;
bitsBuffer.config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT;
bitsBuffer.config.poseCorrection = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
bitsBuffer.config.codec_frame_size_ms = 5;
bitsBuffer.config.isar_frame_size_ms = 20;
bitsBuffer.config.lc3plus_highres = 0;
-#else
- bitsBuffer.config.codec_frame_size_ms = 20;
-#endif
-#endif
for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i )
{
lfeRoutingConfigs[i] = NULL;
@@ -890,13 +847,11 @@ int main(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( !isEmptyString( args.splitRendBFIFilePath ) )
{
convert_backslash( args.splitRendBFIFilePath );
SplitRendBFIFileReader_open( args.splitRendBFIFilePath, &splitRendBFIReader );
}
-#endif
if ( !isEmptyString( args.externalOrientationFilePath ) )
{
if ( RotationFileReader_open( args.externalOrientationFilePath, &externalOrientationFileReader ) != IVAS_ERR_OK )
@@ -906,14 +861,6 @@ int main(
}
}
- if ( !isEmptyString( args.customHrtfFilePath ) )
- {
- if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK )
- {
- fprintf( stderr, "Error opening file: %s\n", args.customHrtfFilePath );
- exit( -1 );
- }
- }
if ( !isEmptyString( args.renderConfigFilePath ) )
{
@@ -1001,12 +948,182 @@ int main(
Word32 nonDiegeticPanGain_fx = ( args.nonDiegeticPanGain == 1.0f ) ? ONE_IN_Q31 : ( args.nonDiegeticPanGain == -1.0f ) ? L_negate( ONE_IN_Q31 )
: (Word32) ( args.nonDiegeticPanGain * ( 1LL << Q31 ) );
- IF( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, nonDiegeticPanGain_fx, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK )
+ IF( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, !isEmptyString( args.customHrtfFilePath ), args.nonDiegeticPan, nonDiegeticPanGain_fx, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "Error opening renderer handle: %s\n", ivas_error_to_string( error ) );
exit( -1 );
}
+ if ( !isEmptyString( args.customHrtfFilePath ) )
+ {
+ if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "Error opening file: %s\n", args.customHrtfFilePath );
+ exit( -1 );
+ }
+
+ if ( hrtfFileReader != NULL )
+ {
+ if ( ( error = IVAS_REND_GetHrtfHandle( hIvasRend, &hHrtfTD ) ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nIVAS_REND_GetHrtfHandle failed: %s\n\n", ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+
+ if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+#ifdef FIX_OLD_BINARY_FORMAT
+ hrtfFileReader_close( &hrtfFileReader );
+ strcat( args.customHrtfFilePath, "new" );
+ if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+ if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_td_hrtf( hHrtfTD );
+ }
+ }
+#else
+ fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+#endif
+ }
+ else
+ {
+ destroy_td_hrtf( hHrtfTD );
+ }
+ }
+
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
+ if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+ }
+#endif
+#endif
+
+ if ( ( error = IVAS_REND_GetHrtfCRendHandle( hIvasRend, &hSetOfHRTF ) ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nIVAS_Rend_GetHrtfCRendHandle failed: %s\n\n", ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+
+ if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfFileReader, args.sampleRate ) ) != IVAS_ERR_OK )
+ {
+#ifdef FIX_OLD_BINARY_FORMAT
+ cleanup_SetOfHRTF( hSetOfHRTF );
+ hrtfFileReader_close( &hrtfFileReader );
+ strcat( args.customHrtfFilePath, "new" );
+ if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+ if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfFileReader, args.sampleRate ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s:%s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_SetOfHRTF( hSetOfHRTF );
+ }
+ }
+#else
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s:%s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_SetOfHRTF( hSetOfHRTF );
+ }
+#endif
+ }
+
+ if ( ( error = IVAS_REND_GetHrtfFastConvHandle( hIvasRend, &hHrtfFastConv ) ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nIVAS_REND_GetHrtfFastConvHandle failed: %s\n\n", ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+
+ if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfFileReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s:%s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_fastconv_hrtf( hHrtfFastConv );
+ }
+ }
+
+ if ( ( error = IVAS_REND_GetHrtfParamBinHandle( hIvasRend, &hHrtfParambin ) ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+
+ if ( ( error = load_parambin_HRTF_from_binary( *hHrtfParambin, hrtfFileReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_parambin_hrtf( hHrtfParambin );
+ }
+ }
+ }
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
+ if ( ( error = IVAS_REND_GetHrtfStatisticsHandle( hIvasRend, &hHrtfStatistics ) ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nIVAS_REND_GetHrtfStatisticsHandle failed\n\n" );
+ goto cleanup;
+ }
+ if ( ( error = load_reverb_binary( *hHrtfStatistics, args.sampleRate, hrtfFileReader ) ) != IVAS_ERR_OK )
+ {
+ if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
+ {
+ fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", args.customHrtfFilePath );
+ goto cleanup;
+ }
+ else
+ {
+ destroy_hrtf_statistics( hHrtfStatistics );
+ }
+ }
+#endif
+#endif
+
+ hrtfFileReader_close( &hrtfFileReader );
+ }
+
fprintf( stdout, "Input audio file: %s\n", args.inputFilePath );
fprintf( stdout, "Output audio file: %s\n\n", args.outputFilePath );
@@ -1052,7 +1169,7 @@ int main(
/* === Configure === */
if ( ( error = IVAS_REND_InitConfig( hIvasRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK )
{
- fprintf( stderr, "Error in Renderer Config Init\n" );
+ fprintf( stderr, "Error in Renderer Config Init: %s\n", ivas_error_to_string( error ) );
exit( -1 );
}
@@ -1062,28 +1179,16 @@ int main(
IVAS_RENDER_CONFIG_DATA renderConfig;
/* sanity check */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && !is_split_pre_rend_mode( &args ) )
{
fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split pre-rendering mode is enabled. Exiting. \n" );
exit( -1 );
}
-#else
- if ( ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
- {
- fprintf( stderr, "\nExternal Renderer Config is only supported for binaural output configurations. Exiting. \n" );
- exit( -1 );
- }
-#endif
if ( ( error = IVAS_REND_GetRenderConfig( hIvasRend, &renderConfig ) ) != IVAS_ERR_OK )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
fprintf( stderr, "\nIVAS_DEC_GetRenderConfig failed: %s\n", ivas_error_to_string( error ) );
-#else
- fprintf( stderr, "\nIVAS_DEC_GetRenderConfig failed\n" );
-#endif
exit( -1 );
}
@@ -1111,28 +1216,18 @@ int main(
renderConfig.roomAcoustics.override = 1;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/* ISAR frame size is set from command line, not renderer config file.
* This will be ignored if output format is not split rendering. */
renderConfig.split_rend_config.isar_frame_size_ms = (int16_t) args.render_framesize /* given in number of 5ms subframes */ * 5;
-#endif
-#endif
if ( ( error = IVAS_REND_FeedRenderConfig( hIvasRend, renderConfig ) ) != IVAS_ERR_OK )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
fprintf( stderr, "\nIVAS_REND_FeedRenderConfig failed: %s\n", ivas_error_to_string( error ) );
-#else
- fprintf( stderr, "\nIVAS_DEC_FeedRenderConfig failed\n" );
-#endif
exit( -1 );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
CLDFBframeSize_smpls = frameSize_smpls * 2;
cldfb_in_flag = get_cldfb_in_flag( args.outConfig.audioConfig, &renderConfig );
-#endif
}
if ( ( error = IVAS_REND_SetOrientationTrackingMode( hIvasRend, args.orientation_tracking ) ) != IVAS_ERR_OK )
@@ -1387,7 +1482,6 @@ int main(
exit( -1 );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( cldfb_in_flag )
{
if ( ( error = IVAS_REND_openCldfb( cldfbAna, cldfbSyn, totalNumInChannels, numOutChannels, args.sampleRate ) ) != IVAS_ERR_OK )
@@ -1403,12 +1497,8 @@ int main(
IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend,
&bitsBuffer.config.codec,
&bitsBuffer.config.poseCorrection,
- &bitsBuffer.config.codec_frame_size_ms
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
- &bitsBuffer.config.isar_frame_size_ms
-#endif
- );
+ &bitsBuffer.config.codec_frame_size_ms,
+ &bitsBuffer.config.isar_frame_size_ms );
if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK )
{
@@ -1422,14 +1512,10 @@ int main(
delayTimeScale_temp,
bitsBuffer.config.codec,
bitsBuffer.config.poseCorrection,
- bitsBuffer.config.codec_frame_size_ms
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
+ bitsBuffer.config.codec_frame_size_ms,
bitsBuffer.config.isar_frame_size_ms,
args.sampleRate,
- bitsBuffer.config.lc3plus_highres
-#endif
- ) ) != IVAS_ERR_OK )
+ bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "Could not open split rend metadata file %s\n", args.outputFilePath );
exit( -1 );
@@ -1444,12 +1530,8 @@ int main(
IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend,
&bitsBuffer.config.codec,
&bitsBuffer.config.poseCorrection,
- &bitsBuffer.config.codec_frame_size_ms
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
- &bitsBuffer.config.isar_frame_size_ms
-#endif
- );
+ &bitsBuffer.config.codec_frame_size_ms,
+ &bitsBuffer.config.isar_frame_size_ms );
if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK )
{
@@ -1463,35 +1545,27 @@ int main(
delayTimeScale_temp,
bitsBuffer.config.codec,
bitsBuffer.config.poseCorrection,
- bitsBuffer.config.codec_frame_size_ms
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
+ bitsBuffer.config.codec_frame_size_ms,
bitsBuffer.config.isar_frame_size_ms,
args.sampleRate,
- bitsBuffer.config.lc3plus_highres
-#endif
- ) ) != IVAS_ERR_OK )
+ bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "Could not open split rend metadata file %s\n", args.outMetadataFilePath );
exit( -1 );
}
}
-#endif
if ( AudioFileWriter_open( &audioWriter, args.outputFilePath, args.sampleRate, numOutChannels ) != IVAS_ERR_OK )
{
fprintf( stderr, "Failed to open file: %s\n", args.outputFilePath );
exit( -1 );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
inBufferSize = frameSize_smpls * totalNumInChannels;
outBufferSize = frameSize_smpls * numOutChannels;
inpInt16Buffer = malloc( inBufferSize * sizeof( int16_t ) );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( cldfb_in_flag == 0 )
{
inFloatBuffer = malloc( inBufferSize * sizeof( float ) );
@@ -1553,21 +1627,6 @@ int main(
bitsBuffer.config.bitsRead = 0;
bitsBuffer.config.bitsWritten = 0;
bitsBuffer.config.bufLenInBytes = bitsBufferSize;
-#else
- inFloatBuffer = malloc( inBufferSize * sizeof( float ) );
- outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) );
- outInt32Buffer = malloc( outBufferSize * sizeof( Word32 ) );
- inInt32Buffer = malloc( inBufferSize * sizeof( Word32 ) );
- outFloatBuffer = malloc( outBufferSize * sizeof( float ) );
-
- inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls;
- inBuffer.config.numChannels = (int16_t) totalNumInChannels;
-
- outBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls;
- outBuffer.config.numChannels = (int16_t) numOutChannels;
- outBuffer.data_fx = outInt32Buffer;
- inBuffer.data_fx = inInt32Buffer;
-#endif
#ifdef WMOPS
reset_stack();
@@ -1610,15 +1669,10 @@ int main(
}
/* Convert from int to float and from interleaved to packed */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 Q_out;
*outBuffer.pq_fact = 16 - ( gd_bits );
convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, *outBuffer.pq_fact, inBuffer.config.is_cldfb, cldfbAna, &Q_out );
*outBuffer.pq_fact = Q_out;
-#else
- *outBuffer.pq_fact = 16 - ( gd_bits );
- convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, *outBuffer.pq_fact );
-#endif
int16_t num_subframes, sf_idx;
num_subframes = (int16_t) args.render_framesize;
@@ -1676,11 +1730,7 @@ int main(
exit( -1 );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, headRot, Pos, DEFAULT_AXIS, sf_idx ) ) != IVAS_ERR_OK )
-#else
- if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, headRot, Pos, sf_idx ) ) != IVAS_ERR_OK )
-#endif
{
fprintf( stderr, "Error setting Head Rotation: %s\n", ivas_error_to_string( error ) );
exit( -1 );
@@ -1833,7 +1883,6 @@ int main(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
{
if ( ( error = IVAS_REND_GetSplitBinauralBitstream( hIvasRend, outBuffer, &bitsBuffer ) ) != IVAS_ERR_OK )
@@ -1844,30 +1893,19 @@ int main(
}
else
{
-#endif
if ( ( error = IVAS_REND_GetSamples( hIvasRend, outBuffer ) ) != IVAS_ERR_OK )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
fprintf( stderr, "Error %s\n", ivas_error_to_string( error ) );
-#else
- fprintf( stderr, "Error in getting samples\n" );
-#endif
exit( -1 );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
int16_t num_out_channels;
num_out_channels = outBuffer.config.numChannels;
/* Convert from float to int and from packed to interleaved.
* Values in outFloatBuffer are guaranteed to be within range INT16_MIN:INT16_MAX */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, cldfb_in_flag, cldfbSyn, *outBuffer.pq_fact );
-#else
- convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, *outBuffer.pq_fact );
-#endif
if ( delayNumSamples == -1 )
{
@@ -1889,7 +1927,6 @@ int main(
zeroPad = delayNumSamples;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( is_split_pre_rend_mode( &args ) )
{
if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, bitsBuffer.bits, &bitsBuffer.config.bitsRead,
@@ -1902,7 +1939,6 @@ int main(
if ( audioWriter != NULL )
{
-#endif
if ( delayNumSamples * num_out_channels < outBufferSize )
{
if ( AudioFileWriter_write( audioWriter, &outInt16Buffer[delayNumSamples * num_out_channels], outBufferSize - ( delayNumSamples * num_out_channels ) ) != IVAS_ERR_OK )
@@ -1916,13 +1952,10 @@ int main(
{
delayNumSamples -= (int16_t) ( outBufferSize / num_out_channels );
}
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
bitsBuffer.config.bitsRead = 0;
bitsBuffer.config.bitsWritten = 0;
-#endif
/* Write MASA metadata for MASA outputs */
@@ -2028,10 +2061,8 @@ int main(
}
/* add zeros at the end to have equal length of synthesized signals */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( audioWriter != NULL )
{
-#endif
for ( zeroPadToWrite = zeroPad; zeroPadToWrite > frameSize_smpls; zeroPadToWrite -= frameSize_smpls )
{
memset( outInt16Buffer, 0, outBufferSize * sizeof( int16_t ) );
@@ -2049,9 +2080,7 @@ int main(
exit( -1 );
}
zeroPadToWrite = 0;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
if ( args.inConfig.numAudioObjects != 0 && ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
@@ -2074,19 +2103,17 @@ int main(
free( outFloatBuffer );
free( outInt32Buffer );
free( inInt32Buffer );
+cleanup:
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( bitsBufferData != NULL )
{
free( bitsBufferData );
}
-#endif
for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i )
{
MasaFileReader_close( &masaReaders[i] );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( cldfb_in_flag )
{
IVAS_REND_closeCldfb( cldfbAna, cldfbSyn );
@@ -2094,7 +2121,6 @@ int main(
split_rend_reader_writer_close( &hSplitRendFileReadWrite );
SplitRendBFIFileReader_close( &splitRendBFIReader );
-#endif
for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i )
{
@@ -2107,7 +2133,17 @@ int main(
RotationFileReader_close( &externalOrientationFileReader );
RotationFileReader_close( &referenceRotReader );
Vector3PairFileReader_close( &referenceVectorReader );
- hrtfFileReader_close( &hrtfFileReader );
+ if ( hSetOfHRTF != NULL && *hSetOfHRTF != NULL )
+ {
+ destroy_SetOfHRTF( hSetOfHRTF );
+ }
+ if ( hHrtfTD != NULL && *hHrtfTD != NULL )
+ {
+ destroy_td_hrtf( hHrtfTD );
+ }
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ destroy_hrtf_statistics( hHrtfStatistics );
+#endif
IVAS_REND_Close( &hIvasRend );
IsmPositionProvider_close( positionProvider );
RenderConfigReader_close( &renderConfigReader );
@@ -2394,13 +2430,8 @@ static bool parseOrientationTracking(
static IVAS_AUDIO_CONFIG parseAudioConfig(
const char *configString )
{
-#ifndef SPLIT_REND_WITH_HEAD_ROT
- char charBuf[21];
- charBuf[20] = '\0';
-#else
char charBuf[25];
charBuf[24] = '\0';
-#endif
strncpy( charBuf, configString, sizeof( charBuf ) - 1 );
charBuf[sizeof( charBuf ) - 1] = '\0';
@@ -2475,7 +2506,6 @@ static IVAS_AUDIO_CONFIG parseAudioConfig(
{
return IVAS_AUDIO_CONFIG_BINAURAL;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( strcmp( charBuf, "BINAURAL_SPLIT_PCM" ) == 0 )
{
return IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM;
@@ -2484,7 +2514,6 @@ static IVAS_AUDIO_CONFIG parseAudioConfig(
{
return IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED;
}
-#endif
if ( strcmp( charBuf, "BINAURAL_ROOM_IR" ) == 0 )
{
return IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR;
@@ -2617,10 +2646,8 @@ static CmdlnArgs defaultArgs(
args.numInMetadataFiles = 0;
clearString( args.headRotationFilePath );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
clearString( args.outMetadataFilePath );
clearString( args.splitRendBFIFilePath );
-#endif
clearString( args.referenceVectorFilePath );
clearString( args.referenceRotationFilePath );
clearString( args.customHrtfFilePath );
@@ -2713,7 +2740,6 @@ static void parseOption(
assert( numOptionValues == 1 );
strncpy( args->headRotationFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 );
break;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
case CmdLnOptionId_outputMetadata:
assert( numOptionValues == 1 );
strncpy( args->outMetadataFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 );
@@ -2722,7 +2748,6 @@ static void parseOption(
assert( numOptionValues == 1 );
strncpy( args->splitRendBFIFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 );
break;
-#endif
case CmdLnOptionId_referenceVectorFile:
assert( numOptionValues == 1 );
strncpy( args->referenceVectorFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 );
@@ -3741,10 +3766,8 @@ static void printSupportedAudioConfigs( void )
"ISMx (input only)",
"MASAx",
"BINAURAL (output only)",
-#ifdef SPLIT_REND_WITH_HEAD_ROT
"BINAURAL_SPLIT_PCM",
"BINAURAL_SPLIT_CODED",
-#endif
"BINAURAL_ROOM_IR (output only)",
"BINAURAL_ROOM_REVERB (output only)",
};
@@ -3840,23 +3863,16 @@ static void convertInputBuffer_fx(
const Word16 numIntSamplesPerChannel,
const Word16 numFloatSamplesPerChannel,
const Word16 numChannels,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word32 *Word32Buffer,
Word16 in_q_factor,
const int16_t cldfb_in_flag,
IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna,
- Word16 *out_q_factor
-#else
- Word32 *Word32Buffer,
- Word16 in_q_factor
-#endif
-)
+ Word16 *out_q_factor )
{
Word16 chnl, smpl, i;
i = 0;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( cldfb_in_flag )
{
Word16 slotIdx, numCldfbBands, numFloatPcmSamples;
@@ -3897,7 +3913,6 @@ static void convertInputBuffer_fx(
}
ELSE
{
-#endif
FOR( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl )
{
FOR( chnl = 0; chnl < numChannels; ++chnl )
@@ -3914,10 +3929,8 @@ static void convertInputBuffer_fx(
++i;
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
*out_q_factor = in_q_factor;
}
-#endif
return;
}
@@ -3934,23 +3947,16 @@ static void convertOutputBuffer_fx(
const Word32 *Word32Buffer,
const Word16 numSamplesPerChannel,
const Word16 numChannels,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 *intBuffer,
const Word16 cldfb_in_flag,
IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn,
- Word16 out_q
-#else
- Word16 *intBuffer,
- Word16 out_q
-#endif
-)
+ Word16 out_q )
{
Word16 chnl, smpl, i;
Word32 temp_fx;
Word32 temp_fx1;
i = 0;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( cldfb_in_flag )
{
Word16 slotIdx, numCldfbBands, numPcmSamples, b, temp_out_q = 0;
@@ -4014,7 +4020,6 @@ static void convertOutputBuffer_fx(
}
ELSE
{
-#endif
FOR( smpl = 0; smpl < numSamplesPerChannel; ++smpl )
{
@@ -4035,9 +4040,7 @@ static void convertOutputBuffer_fx(
++i;
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
return;
}
diff --git a/lib_com/basop32.c b/lib_com/basop32.c
index 20dbe663e6f5379f61062595a096af00c50480dc..fbe08a11f74d5a2afd466d351a5652b35d13f275 100644
--- a/lib_com/basop32.c
+++ b/lib_com/basop32.c
@@ -1575,7 +1575,7 @@ Word32 L_msuNs_co( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry, Flag *O
{
Word32 L_var_out;
- L_var_out = L_mult( var1, var2 );
+ L_var_out = L_mult_o( var1, var2, Overflow );
L_var_out = L_sub_co( L_var3, L_var_out, Carry, Overflow );
return ( L_var_out );
@@ -2038,6 +2038,7 @@ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry )
return ( L_var_out );
}
+
Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow )
{
Word32 L_var_out;
@@ -2056,6 +2057,7 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow )
L_var_out = L_var1 - L_var2;
if ( L_var1 > 0L )
{
+ set_overflow( Overflow );
unset_carry( Carry );
}
}
@@ -2067,18 +2069,22 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow )
if ( ( L_test < 0 ) && ( L_var1 > 0 ) && ( L_var2 < 0 ) )
{
+ set_overflow( Overflow );
carry_int = 0;
}
else if ( ( L_test > 0 ) && ( L_var1 < 0 ) && ( L_var2 > 0 ) )
{
+ set_overflow( Overflow );
carry_int = 1;
}
else if ( ( L_test > 0 ) && ( ( L_var1 ^ L_var2 ) > 0 ) )
{
+ unset_overflow( Overflow );
carry_int = 1;
}
if ( L_test == MIN_32 )
{
+ set_overflow( Overflow );
carry_int ? set_carry( Carry ) : unset_carry( Carry );
}
else
diff --git a/lib_com/basop_util.c b/lib_com/basop_util.c
index ec15e9769bde64635ccb2196c7ec7932c6d08e5d..e52f404f6f83b00535931530c021d8e381dd072f 100644
--- a/lib_com/basop_util.c
+++ b/lib_com/basop_util.c
@@ -1409,15 +1409,6 @@ Word32 BASOP_Util_Divide3232_Scale_newton( Word32 x, Word32 y, Word16 *s )
*s = 0;
return ( (Word32) 0 );
}
-
-#if 0
- sign = L_xor( x, y ); /* check (sign < 0) for result negation */
-
- if ( x < 0 )
- {
- x = L_negate( x );
- }
-#else
IF( EQ_32( y, 0x80000000 ) )
{
/* Division by -1.0: same as negation of numerator */
@@ -1429,7 +1420,6 @@ Word32 BASOP_Util_Divide3232_Scale_newton( Word32 x, Word32 y, Word16 *s )
}
sign = y;
move32();
-#endif
if ( y < 0 )
{
y = L_negate( y );
@@ -2650,10 +2640,16 @@ Word32 BASOP_Util_Add_Mant32Exp /* o : normalized result mantissa */
*/
if ( !a_m )
- a_e = add( b_e, 0 );
+ {
+ a_e = b_e;
+ move16();
+ }
if ( !b_m )
- b_e = add( a_e, 0 );
+ {
+ b_e = a_e;
+ move16();
+ }
shift = sub( a_e, b_e );
shift = s_max( -31, shift );
@@ -2674,7 +2670,10 @@ Word32 BASOP_Util_Add_Mant32Exp /* o : normalized result mantissa */
if ( shift )
L_tmp = L_shl( L_tmp, shift );
if ( L_tmp == 0 )
- a_e = add( 0, 0 );
+ {
+ a_e = 0;
+ move16();
+ }
if ( L_tmp != 0 )
a_e = sub( a_e, shift );
*ptr_e = a_e;
diff --git a/lib_com/bits_alloc_fx.c b/lib_com/bits_alloc_fx.c
index 8162a98d3fa3147ea128100fddad063e0f8cd18d..3bfcd0c20a7a8696fbc479e6363951de2f377807 100644
--- a/lib_com/bits_alloc_fx.c
+++ b/lib_com/bits_alloc_fx.c
@@ -434,173 +434,12 @@ static Word16 fcb_table(
}
/*-------------------------------------------------------------------*
- * acelp_FCB_allocator()
+ * acelp_FCB_allocator_fx()
*
* Routine to allocate fixed innovation codebook bit-budget
*--------------------------------------------------------------------*/
-static ivas_error acelp_FCB_allocator(
- Word16 *nBits, /* i/o: available bit-budget */
- Word16 fixed_cdk_index[], /* o : codebook index Q0 */
- Word16 nb_subfr, /* i : number of subframes */
- const Word16 L_subfr, /* i : subframe length */
- const Word16 coder_type, /* i : coder type */
- const Word16 tc_subfr, /* i : TC subframe index */
- const Word16 fix_first /* i : flag to indicate whether the first subframe bit-budget was fixed */
-)
-{
- Word16 cdbk, sfr, step;
- Word16 nBits_tmp;
- Word16 *p_fixed_cdk_index;
- Word16 max_n;
- ivas_error error;
- // PMT("Not floating point computation, but fixed point operator are still missing ")
-
- error = IVAS_ERR_OK;
- move32();
-
- cdbk = coder_type; /* just to avoid warning when DEBUGGING is deactivated */
- move16();
-
- p_fixed_cdk_index = fixed_cdk_index;
-
- /* TRANSITION coding: first subframe bit-budget was already fixed, glottal pulse not in the first subframe */
- test();
- IF( GE_16( tc_subfr, L_SUBFR ) && fix_first )
- {
- Word16 i;
-
- FOR( i = 0; i < nb_subfr; i++ )
- {
- *nBits = sub( *nBits, ACELP_FIXED_CDK_BITS( fixed_cdk_index[i] ) );
- move16();
- }
- return error;
- }
-
- /* TRANSITION coding: first subframe bit-budget was already fixed, glottal pulse in the first subframe */
- sfr = 0;
- move16();
- IF( fix_first )
- {
- *nBits = sub( *nBits, ACELP_FIXED_CDK_BITS( fixed_cdk_index[0] ) );
- move16();
- sfr = 1;
- move16();
- p_fixed_cdk_index++;
- nb_subfr = 3;
- move16();
- }
-
- /* distribute the bit-budget equally between subframes */
- IF( GT_16( L_subfr, L_SUBFR ) ) /* access fast_FCB_bits_2sfr */
- {
- max_n = 6;
- move16();
- }
- ELSE
- {
- max_n = ACELP_FIXED_CDK_NB;
- move16();
- }
- FOR( cdbk = 0; cdbk < max_n; cdbk++ )
- {
- IF( GT_32( L_mult0( fcb_table( cdbk, L_subfr ), nb_subfr ), L_deposit_l( *nBits ) ) )
- {
- BREAK;
- }
- }
- cdbk = sub( cdbk, 1 );
-
-#ifdef DEBUGGING
- if ( cdbk < 0 && coder_type != TRANSITION )
- {
- return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too low bit-budget for fixed innovation codebook (frame = %d). Exiting! \n" );
- }
- if ( ( L_subfr == L_SUBFR && cdbk >= ACELP_FIXED_CDK_NB ) || ( L_subfr == 2 * L_SUBFR && fcb_table( cdbk, L_subfr ) == 128 /*stop value*/ ) )
- {
- return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too high bit-budget for fixed innovation codebook (frame = %d). Exiting! \n" );
- }
-#endif
-
- set16_fx( p_fixed_cdk_index, cdbk, nb_subfr );
- nBits_tmp = 0;
- move16();
- IF( cdbk >= 0 )
- {
- nBits_tmp = fcb_table( cdbk, L_subfr );
- }
- ELSE
- {
- nBits_tmp = 0;
- move16();
- }
- *nBits = sub( *nBits, i_mult( nBits_tmp, nb_subfr ) );
- move16();
-
- /* try to increase the FCB bit-budget of the first subframe(s) */
- IF( LT_16( cdbk, ACELP_FIXED_CDK_NB - 1 ) )
- {
- step = sub( fcb_table( add( cdbk, 1 ), L_subfr ), nBits_tmp );
- WHILE( *nBits >= step )
- {
- ( *p_fixed_cdk_index )++;
- *nBits = sub( *nBits, step );
- move16();
- p_fixed_cdk_index++;
- }
-
- /* try to increase the FCB of the first subframe in cases when the next step is lower than the current step */
- step = sub( fcb_table( add( fixed_cdk_index[sfr], 1 ), L_subfr ), fcb_table( fixed_cdk_index[sfr], L_subfr ) );
- test();
- IF( GE_16( *nBits, step ) && cdbk >= 0 )
- {
- fixed_cdk_index[sfr] = add( fixed_cdk_index[sfr], 1 );
- move16();
- *nBits = sub( *nBits, step );
- move16();
- test();
- IF( GE_16( *nBits, step ) && EQ_16( fixed_cdk_index[sfr + 1], sub( fixed_cdk_index[sfr], 1 ) ) )
- {
- sfr = add( sfr, 1 );
- fixed_cdk_index[sfr] = add( fixed_cdk_index[sfr], 1 );
- move16();
- *nBits = sub( *nBits, step );
- move16();
- }
- }
- }
- /* TRANSITION coding: allocate highest FCBQ bit-budget to the subframe with the glottal-shape codebook */
- IF( GE_16( tc_subfr, L_SUBFR ) )
- {
- Word16 tempr;
-
- SWAP( fixed_cdk_index[0], fixed_cdk_index[tc_subfr / L_SUBFR] );
-
- /* TRANSITION coding: allocate second highest FCBQ bit-budget to the last subframe */
- IF( idiv1616( tc_subfr, L_SUBFR ) < sub( nb_subfr, 1 ) )
- {
- SWAP( fixed_cdk_index[( tc_subfr - L_SUBFR ) / L_SUBFR], fixed_cdk_index[nb_subfr - 1] );
- }
- }
-
- /* when subframe length > L_SUBFR, number of bits instead of codebook index is signalled */
- IF( GT_16( L_subfr, L_SUBFR ) )
- {
- Word16 i, j;
- FOR( i = 0; i < nb_subfr; i++ )
- {
- j = fixed_cdk_index[i];
- move16();
- fixed_cdk_index[i] = fast_FCB_bits_2sfr[j];
- move16();
- }
- }
-
- return error;
-}
-
-static ivas_error acelp_FCB_allocator_ivas(
+static ivas_error acelp_FCB_allocator_fx(
Word16 *nBits, /* i/o: available bit-budget */
Word16 fixed_cdk_index[], /* o : codebook index Q0 */
Word16 nb_subfr, /* i : number of subframes */
@@ -753,1140 +592,16 @@ static ivas_error acelp_FCB_allocator_ivas(
return error;
}
-/*-------------------------------------------------------------------*
- * config_acelp1()
- *
- * Configure ACELP bit allocation
- * - should be in range of <6700; 24350> for ACELP@12.8kHz
- * - per channel bitrate minimum is 13250 kbps for ACELP@16kHz
- *--------------------------------------------------------------------*/
-
-ivas_error config_acelp1(
- const Word16 enc_dec, /* i : encoder/decoder flag */
- const Word32 total_brate, /* i : total bitrate */
- const Word32 core_brate_inp, /* i : core bitrate */
- const Word16 core, /* i : core */
- const Word16 extl, /* i : extension layer */
- const Word32 extl_brate, /* i : extension layer bitrate */
- const Word16 L_frame, /* i : frame length at internal Fs */
- const Word16 GSC_noisy_speech, /* i : GSC on SWB noisy speech flag */
- ACELP_config *acelp_cfg, /* i : ACELP bit-allocation */
- const Word16 signalling_bits, /* i : number of signalling bits */
- const Word16 coder_type, /* i : coder type */
- const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */
- const Word16 tc_subfr, /* i : TC subfr ID */
- const Word16 tc_call, /* i : TC call number (0,1,2,3,5(DEC)) */
- Word16 *nBits_es_Pred, /* o : number of bits for Es_pred Q */
- Word16 *unbits, /* o : number of unused bits */
- const Word16 element_mode, /* i : element mode */
- Word16 *uc_two_stage_flag, /* o : flag undicating two-stage UC */
- const Word16 tdm_lp_reuse_flag, /* i : LPC reuse flag (can be 1 only with secondary channel */
- const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */
- const Word16 idchan, /* i : stereo channel ID */
- const Word16 active_cnt, /* i : Active frame counter */
- const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag*/
- const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */
- const Word16 GSC_IVAS_mode /* i : GSC IVAS mode */
-)
-{
- Word16 i, bits, nb_subfr;
- Word16 flag_hardcoded, coder_type_sw, fix_first;
- Word32 core_brate;
-#ifdef DEBUGGING
- (void) active_cnt;
-#endif
- ivas_error error;
-
- error = IVAS_ERR_OK;
- move32();
- // PMT("Not floating point computation, but fixed point operator are still missing ")
- /*-----------------------------------------------------------------*
- * Set the flag indicating two-stage Unvoiced (UC) frame
- *-----------------------------------------------------------------*/
-
- *uc_two_stage_flag = 0;
- move16();
- IF( EQ_16( coder_type, UNVOICED ) )
- {
- test();
- test();
- test();
- test();
- test();
- if ( GE_32( total_brate, MIN_UNVOICED_TWO_STAGE_BRATE ) && element_mode > EVS_MONO && ( idchan == 0 || ( ( GE_32( total_brate, 8500 ) || extl_brate == 0 ) && EQ_16( tdm_LRTD_flag, 1 ) ) ) )
- {
- *uc_two_stage_flag = 1;
- move16();
- }
- }
-
- /*-----------------------------------------------------------------*
- * Set the number of subframes
- *-----------------------------------------------------------------*/
-
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- nb_subfr = NB_SUBFR;
- move16();
-
-#ifdef DEBUGGING
- if ( ( ( core_brate_inp < 5900 && coder_type > UNVOICED ) && !( core_brate_inp < MIN_TC_BRATE && coder_type == TRANSITION ) ) && !( idchan > 0 && element_mode == IVAS_CPE_TD ) && !( element_mode == IVAS_SCE && tdm_low_rate_mode ) )
- {
- return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too low bitrate (%d bps) for ACELP@12k8 in frame %d. Exiting!\n", core_brate_inp );
- }
-
- if ( core_brate_inp > ACELP_12k8_HIGH_LIMIT && core == ACELP_CORE )
- {
- return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too high bitrate (%d bps) for ACELP@12k8 in frame %d. Exiting!\n", core_brate_inp );
- }
-#endif
- }
- ELSE /* L_frame == L_FRAME16k */
- {
- nb_subfr = NB_SUBFR16k;
- move16();
-
-#ifdef DEBUGGING
- if ( core_brate_inp < ACELP_16k_LOW_LIMIT && core == ACELP_CORE )
- {
- return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too low bitrate (%d bps) for ACELP@16k in frame %d. Exiting!\n", core_brate_inp );
- }
-#endif
- }
-
- coder_type_sw = coder_type;
- move16();
- IF( core != ACELP_CORE )
- {
- /* used in acelp_core_switch_enc() */
- nb_subfr = 1;
- move16();
- if ( EQ_16( L_frame, L_FRAME ) )
- {
- coder_type_sw = TRANSITION;
- move16();
- }
- }
-
- /*-----------------------------------------------------------------*
- * Check if the core_brate is hard coded (to keep BE for mono core) or not
- *-----------------------------------------------------------------*/
-
- flag_hardcoded = 0;
- move16();
- i = 0;
- move16();
-
- WHILE( i < SIZE_BRATE_INTERMED_TBL )
- {
- IF( EQ_32( core_brate_inp, brate_intermed_tbl[i] ) )
- {
- flag_hardcoded = 1;
- move16();
- BREAK;
- }
-
- IF( LT_32( core_brate_inp, brate_intermed_tbl[i] ) )
- {
- flag_hardcoded = 0;
- move16();
- BREAK;
- }
-
- i = add( i, 1 );
- }
-
- test();
- test();
- test();
- IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( coder_type, AUDIO ) &&
- LE_32( core_brate_inp, STEREO_GSC_BIT_RATE_ALLOC ) && EQ_32( brate_intermed_tbl[i], ACELP_9k60 ) ) /* Bit allocation should be mapped to 8 kb/s instead of 9.6 kb/s in this case */
- {
- i = sub( i, 1 );
- }
-
- core_brate = brate_intermed_tbl[i];
- move32();
-
- if ( element_mode > EVS_MONO )
- {
- flag_hardcoded = 0; /* use automatic and flexible ACELP bit-budget allocation */
- move16();
- }
-
- test();
- if ( ( core != ACELP_CORE ) && ( element_mode == EVS_MONO ) ) /* needed for mode1 core switching in EVS mono */
- {
- flag_hardcoded = 1;
- move16();
- }
-
- /*-----------------------------------------------------------------*
- * ACELP bit allocation
- *-----------------------------------------------------------------*/
- test();
- test();
- IF( !( EQ_16( coder_type, TRANSITION ) && NE_16( tc_subfr, -1 ) ) || EQ_16( enc_dec, DEC ) )
- {
- /* Set the bit-budget */
- bits = extract_l( Mpy_32_32( core_brate_inp, ONE_BY_FRAMES_PER_SEC_Q31 ) ); // Q0
-
- test();
- test();
- IF( EQ_16( coder_type, TRANSITION ) && EQ_16( enc_dec, DEC ) && EQ_16( tc_call, 1 ) )
- {
- bits = add( bits, *nBits_es_Pred ); /* equalize for 4th signaling bit estimated at the encoder in TC_0_192 */
- }
-
- /* Subtract signalling bits */
- test();
- test();
- IF( EQ_16( enc_dec, DEC ) && EQ_16( idchan, 1 ) && element_mode > EVS_MONO )
- {
- bits = sub( bits, TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS );
-
- IF( EQ_16( tdm_LRTD_flag, 1 ) )
- {
- bits = add( bits, STEREO_BITS_TCA );
- }
-
- /* subtract TBE/BWE flag */
- test();
- test();
- test();
- test();
- test();
- test();
- IF( extl_brate > 0 && ( EQ_16( extl, WB_TBE ) || EQ_16( extl, SWB_TBE ) || EQ_16( extl, FB_TBE ) || EQ_16( extl, WB_BWE ) || EQ_16( extl, SWB_BWE ) || EQ_16( extl, FB_BWE ) ) )
- {
- bits = sub( bits, 1 );
- }
- }
- ELSE
- {
- /* Subtract signalling bits */
- bits = sub( bits, signalling_bits );
- }
-
- test();
- test();
- test();
- test();
- test();
- test();
- IF( extl_brate > 0 && ( EQ_16( extl, WB_TBE ) || EQ_16( extl, SWB_TBE ) || EQ_16( extl, FB_TBE ) || EQ_16( extl, WB_BWE ) || EQ_16( extl, SWB_BWE ) || EQ_16( extl, FB_BWE ) ) )
- {
- /* extension layer signalling bit is counted in the extension layer bitbudget */
- bits = add( bits, 1 );
- }
-
- /*-----------------------------------------------------------------*
- * LSF Q bit-budget
- *-----------------------------------------------------------------*/
- test();
- test();
- test();
- IF( !tdm_lp_reuse_flag || idchan == 0 )
- {
- /* LSF Q bit-budget */
- acelp_cfg->lsf_bits = LSF_bits_tbl[LSF_BIT_ALLOC_IDX_fx( core_brate, coder_type )];
- move16();
-
- IF( !flag_hardcoded )
- {
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( EQ_16( element_mode, IVAS_SCE ) && tdm_low_rate_mode )
- {
- acelp_cfg->lsf_bits = LSF_bits_tbl[LSF_BIT_ALLOC_IDX_fx( core_brate, coder_type )];
- move16();
- }
- ELSE IF( ( LT_32( total_brate, 7200 ) || coder_type == INACTIVE || EQ_16( coder_type, AUDIO ) ) && EQ_16( idchan, 1 ) )
- {
- /* TD stereo, secondary channel: do nothing */
- acelp_cfg->lsf_bits = LSF_bits_tbl[LSF_BIT_ALLOC_IDX_fx( core_brate, coder_type )];
- move16();
- }
- ELSE IF( element_mode > EVS_MONO && EQ_16( coder_type, AUDIO ) && LT_32( brate_intermed_tbl[i], ACELP_9k60 ) )
- {
- /* primary channel: do nothing */
- }
- ELSE IF( element_mode > EVS_MONO && EQ_16( coder_type, AUDIO ) /*&& brate_intermed_tbl[i] >= ACELP_9k60*/ )
- {
- acelp_cfg->lsf_bits = 42;
- move16();
- }
- ELSE IF( LE_32( total_brate, 9600 ) || EQ_16( coder_type, UNVOICED ) )
- {
- acelp_cfg->lsf_bits = 31;
- move16();
- }
- ELSE IF( LE_32( total_brate, 20000 ) )
- {
- acelp_cfg->lsf_bits = 36;
- move16();
- }
- ELSE
- {
- acelp_cfg->lsf_bits = 41;
- move16();
- }
- }
- ELSE /* L_frame == L_FRAME16k */
- {
- acelp_cfg->lsf_bits = 41;
- move16();
- }
- }
-
- bits = sub( bits, acelp_cfg->lsf_bits );
-
- /* mid-LSF Q bit-budget */
- acelp_cfg->mid_lsf_bits = mid_LSF_bits_tbl[LSF_BIT_ALLOC_IDX_fx( core_brate, coder_type )];
- move16();
-
- test();
- if ( element_mode > EVS_MONO && EQ_16( coder_type, AUDIO ) /*&& brate_intermed_tbl[i] < ACELP_9k60*/ )
- {
- acelp_cfg->mid_lsf_bits = 5;
- move16();
- /* primary channel: do nothing */
- }
-
- bits = sub( bits, acelp_cfg->mid_lsf_bits );
- }
- ELSE IF( EQ_16( tdm_lp_reuse_flag, 1 ) && EQ_16( idchan, 1 ) && NE_16( active_cnt, 1 ) )
- {
- bits = sub( bits, TDM_IC_LSF_PRED_BITS );
- }
- /* gain Q bit-budget - part 1: 'Es_pred' of memory-less gain Q */
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( NE_16( coder_type, UNVOICED ) && NE_16( coder_type, AUDIO ) && coder_type != INACTIVE && !( LE_32( core_brate, ACELP_8k00 ) && NE_16( coder_type, TRANSITION ) ) ) /* mid bitrates in GC and VC, low+mid bitrates in TC */ ||
- ( coder_type == INACTIVE && !inactive_coder_type_flag ) /* AVQ inactive */
- )
- {
- *nBits_es_Pred = Es_pred_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, -1, -1 )];
- move16();
- bits = sub( bits, *nBits_es_Pred );
- }
- ELSE IF( *uc_two_stage_flag )
- {
- *nBits_es_Pred = 4;
- move16();
- bits = sub( bits, *nBits_es_Pred );
- }
- }
- ELSE
- {
- bits = *unbits;
- move16();
- }
-
- test();
- IF( EQ_16( coder_type, TRANSITION ) && tc_call == 0 )
- {
- *unbits = bits;
- return error;
- }
-
- /*-----------------------------------------------------------------*
- * Low-rate mode - bits are allocated in tdm_low_rate_enc()
- *-----------------------------------------------------------------*/
- test();
- IF( EQ_16( element_mode, IVAS_SCE ) && tdm_low_rate_mode )
- {
- acelp_cfg->FEC_mode = 0;
- acelp_cfg->ltf_mode = FULL_BAND;
- *nBits_es_Pred = 0;
- *unbits = 0;
- acelp_cfg->ubits = 0;
- move16();
- move16();
- move16();
- move16();
- move16();
-
- return error;
- }
-
- /*-----------------------------------------------------------------*
- * Supplementary information for FEC
- *-----------------------------------------------------------------*/
-
- acelp_cfg->FEC_mode = 0;
- move16();
- test();
- test();
- IF( GE_32( core_brate, ACELP_11k60 ) && ( idchan == 0 || element_mode == EVS_MONO ) )
- {
- acelp_cfg->FEC_mode = 1;
- move16();
-
- test();
- test();
- IF( GT_16( coder_type, UNVOICED ) && LT_16( coder_type, AUDIO ) && NE_16( coder_type, VOICED ) )
- {
- bits = sub( bits, FEC_BITS_CLS );
- }
-
- IF( NE_16( coder_type, TRANSITION ) )
- {
- IF( GE_32( total_brate, ACELP_16k40 ) )
- {
- acelp_cfg->FEC_mode = 2;
- move16();
- test();
- IF( GT_16( coder_type, UNVOICED ) && LT_16( coder_type, AUDIO ) )
- {
- bits = sub( bits, FEC_BITS_ENR );
- }
- }
-
- IF( GE_32( total_brate, ACELP_32k ) )
- {
- acelp_cfg->FEC_mode = 3;
- move16();
-
- test();
- IF( GT_16( coder_type, UNVOICED ) && LT_16( coder_type, AUDIO ) )
- {
- bits = sub( bits, FEC_BITS_POS );
- }
- }
- }
- }
-
- /*-----------------------------------------------------------------*
- * LP filtering of the adaptive excitation
- *-----------------------------------------------------------------*/
- test();
- test();
- test();
- test();
- test();
- test();
- IF( idchan > 0 && element_mode > EVS_MONO )
- {
- acelp_cfg->ltf_mode = FULL_BAND;
- move16();
- }
- ELSE IF( EQ_16( coder_type, UNVOICED ) )
- {
- acelp_cfg->ltf_mode = FULL_BAND;
- move16();
- }
- ELSE IF( ( EQ_16( coder_type, GENERIC ) || EQ_16( coder_type, TRANSITION ) ) && LT_32( core_brate, ACELP_11k60 ) )
- {
- acelp_cfg->ltf_mode = LOW_PASS;
- move16();
- }
- ELSE IF( GE_32( core_brate, ACELP_11k60 ) && ( NE_16( coder_type, AUDIO ) && !( coder_type == INACTIVE && EQ_16( L_frame, L_FRAME ) ) ) )
- {
- test();
- test();
- IF( coder_type == INACTIVE && EQ_16( L_frame, L_FRAME16k ) && inactive_coder_type_flag ) /* GSC Inactive @16kHz */
- {
- acelp_cfg->ltf_mode = FULL_BAND;
- move16();
- }
- ELSE
- {
- acelp_cfg->ltf_mode = NORMAL_OPERATION;
- move16();
- IF( coder_type != TRANSITION )
- {
- bits = sub( bits, nb_subfr );
- }
- }
- }
- ELSE
- {
- acelp_cfg->ltf_mode = FULL_BAND;
- move16();
- }
-
- /*-----------------------------------------------------------------*
- * UC bit-budget
- *-----------------------------------------------------------------*/
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( ( EQ_16( coder_type, UNVOICED ) && !( *uc_two_stage_flag ) ) || ( coder_type == INACTIVE && LE_32( core_brate, ACELP_9k60 ) ) ) && ( idchan == 0 || element_mode == EVS_MONO ) )
- {
- bits = sub( bits, NBITS_NOISENESS ); /* noiseness */
- }
- IF( EQ_16( coder_type, UNVOICED ) && !( *uc_two_stage_flag ) )
- {
- bits = sub( bits, 3 * NB_SUBFR ); /* tilt factor */
- }
-
- /*-----------------------------------------------------------------*
- * TC bit-budget
- *-----------------------------------------------------------------*/
-
- fix_first = 0;
- move16();
- IF( EQ_16( coder_type, TRANSITION ) )
- {
- if ( EQ_16( tc_call, 2 ) )
- {
- fix_first = 1;
- move16();
- }
-
- /* TC signalling */
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- IF( EQ_16( tc_subfr, TC_0_0 ) )
- {
- IF( enc_dec == ENC )
- {
- bits = sub( bits, 1 ); /* TC signalling */
- }
-
- IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) )
- {
- bits = sub( bits, 3 ); /* LP filtering flag */
- }
- }
- ELSE IF( EQ_16( tc_subfr, TC_0_64 ) )
- {
- IF( enc_dec == ENC )
- {
- bits = sub( bits, 4 ); /* TC signalling */
- }
-
- IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) )
- {
- bits = sub( bits, 3 ); /* LP filtering flag */
- }
- }
- ELSE IF( EQ_16( tc_subfr, TC_0_128 ) )
- {
- IF( enc_dec == ENC )
- {
- bits = sub( bits, 4 ); /* TC signalling */
- }
-
- IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) )
- {
- bits = sub( bits, 2 ); /* LP filtering flag */
- }
- }
- ELSE IF( EQ_16( tc_subfr, TC_0_192 ) )
- {
- IF( enc_dec == ENC )
- {
- bits = sub( bits, 3 ); /* TC signalling */
- }
-
- IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) )
- {
- bits = sub( bits, 1 ); /* LP filtering flag */
- }
- }
- ELSE IF( EQ_16( tc_subfr, L_SUBFR ) )
- {
- IF( enc_dec == ENC )
- {
- bits = sub( bits, 3 ); /* TC signalling */
- }
-
- IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) )
- {
- bits = sub( bits, idiv1616( sub( L_FRAME - L_SUBFR, tc_subfr ), L_SUBFR ) ); /* LP filtering flag */
- }
- }
- ELSE
- {
- IF( enc_dec == ENC )
- {
- bits = sub( bits, 4 ); /* TC signalling */
- }
-
- IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) )
- {
- bits = sub( bits, idiv1616_1( sub( L_FRAME - L_SUBFR, tc_subfr ), L_SUBFR ) ); /* LP filtering flag */
- }
- }
- }
- ELSE /* L_frame == L_FRAME16k */
- {
- IF( enc_dec == ENC )
- {
- IF( LE_16( tc_subfr, 2 * L_SUBFR ) )
- {
- bits = sub( bits, 2 ); /* TC signalling */
- }
- ELSE
- {
- bits = sub( bits, 3 ); /* TC signalling */
- }
- }
-
- // bits -= ( L_FRAME16k - tc_subfr - L_SUBFR ) / L_SUBFR; /* LP filtering flag */
- bits = sub( bits, idiv1616_1( sub( L_FRAME16k - L_SUBFR, tc_subfr ), L_SUBFR ) ); /* LP filtering flag */
- }
-
- /* glottal-shape codebook bits */
- bits = sub( bits, 3 + 6 + 1 + 3 );
- }
-
- /*-----------------------------------------------------------------*
- * pitch, innovation, gains bit-budget
- *-----------------------------------------------------------------*/
-
- acelp_cfg->fcb_mode = 0;
- move16();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( tdm_low_rate_mode, 1 ) && ( coder_type != INACTIVE ) && NE_16( coder_type, UNVOICED ) ) /* GENERIC low rate mode for secondary channel */
- {
- set16_fx( acelp_cfg->pitch_bits, 0, NB_SUBFR16k );
- set16_fx( acelp_cfg->gains_mode, 0, NB_SUBFR16k );
-
- FOR( i = 0; i < 2; i++ )
- {
- acelp_cfg->pitch_bits[i] = 0;
- move16();
- IF( tdm_Pitch_reuse_flag == 0 )
- {
- acelp_cfg->pitch_bits[i] = ACB_bits_tbl[BIT_ALLOC_IDX_fx( ACELP_7k20, GENERIC, i_mult( 2 * L_SUBFR, i ), TC_SUBFR2IDX_fx( tc_subfr ) )];
- move16();
- bits = sub( bits, acelp_cfg->pitch_bits[i] );
- }
- acelp_cfg->gains_mode[i] = gain_bits_tbl[BIT_ALLOC_IDX_fx( ACELP_7k20, GENERIC, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_fx( tc_subfr ) )];
- move16();
- bits = sub( bits, acelp_cfg->gains_mode[i] );
- }
- acelp_cfg->fcb_mode = 1;
- move16();
-
-#ifdef DEBUGGING
- if ( bits >= 55 )
- {
- printf( "too much bits -> %d, LPC = %d and pitch = %d\n", bits, tdm_lp_reuse_flag, tdm_Pitch_reuse_flag );
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 );
- }
- else
-#endif
- IF( GE_16( bits, 16 ) )
- {
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 );
- }
- ELSE
- {
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 );
- acelp_cfg->fixed_cdk_index[1] = -1;
- move16();
- }
- acelp_cfg->fixed_cdk_index[2] = -1;
- move16();
- acelp_cfg->fixed_cdk_index[3] = -1;
- move16();
- }
- ELSE IF( ( coder_type != INACTIVE && EQ_16( nb_subfr, NB_SUBFR ) && NE_16( coder_type, AUDIO ) ) || /* @12.8kHz core except of GSC */
- ( EQ_16( nb_subfr, NB_SUBFR16k ) && ( !inactive_coder_type_flag || coder_type != INACTIVE ) ) /* @16kHz core GC, TC, AVQ inactive */ ||
- EQ_16( core, HQ_CORE ) /* ACELP -> HQ switching in EVS */
- )
- {
- /* pitch Q & gain Q bit-budget - part 2*/
- FOR( i = 0; i < nb_subfr; i++ )
- {
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- test();
- IF( EQ_16( tdm_Pitch_reuse_flag, 1 ) && EQ_16( idchan, 1 ) )
- {
- acelp_cfg->pitch_bits[i] = 0;
- move16();
- }
- ELSE
- {
- acelp_cfg->pitch_bits[i] = ACB_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_fx( tc_subfr ) )];
- move16();
- }
- acelp_cfg->gains_mode[i] = gain_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type_sw, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_fx( tc_subfr ) )];
- move16();
- }
- ELSE /* L_frame == L_FRAME16k */
- {
- test();
- IF( EQ_16( tdm_Pitch_reuse_flag, 1 ) && EQ_16( idchan, 1 ) )
- {
- acelp_cfg->pitch_bits[i] = 0;
- move16();
- }
- ELSE
- {
- acelp_cfg->pitch_bits[i] = ACB_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_16KHZ_fx( tc_subfr ) )];
- move16();
- }
- acelp_cfg->gains_mode[i] = gain_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( core_brate, coder_type_sw, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_16KHZ_fx( tc_subfr ) )];
- move16();
- }
-
- bits = sub( bits, acelp_cfg->pitch_bits[i] );
-
- test();
- IF( coder_type == INACTIVE && EQ_16( acelp_cfg->gains_mode[i], 6 ) /* VQ vs. SQ threshold @32 kbps */ )
- {
- bits = sub( bits, 5 );
- }
- ELSE
- {
- if ( EQ_16( *uc_two_stage_flag, 1 ) )
- {
- acelp_cfg->gains_mode[i] = 7;
- move16();
- }
-
- bits = sub( bits, acelp_cfg->gains_mode[i] );
- }
- }
-
- /* algebraic codebook bit-budget */
- test();
- test();
- test();
- test();
- test();
- test();
- IF( flag_hardcoded /* EVS */ ||
- ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) /* high-birate ACELP except IC */ ||
- ( !inactive_coder_type_flag && coder_type == INACTIVE ) /* AVQ inactive */ )
- {
- FOR( i = 0; i < nb_subfr; i++ )
- {
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- acelp_cfg->fixed_cdk_index[i] = FCB_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_fx( tc_subfr ) )];
- move16();
- }
- ELSE /* L_frame == L_FRAME16k */
- {
- acelp_cfg->fixed_cdk_index[i] = FCB_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_16KHZ_fx( tc_subfr ) )];
- move16();
- }
- bits = sub( bits, acelp_cfg->fixed_cdk_index[i] );
- }
- }
- ELSE IF( !( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) )
- {
- test();
- IF( EQ_16( coder_type, UNVOICED ) && !( *uc_two_stage_flag ) )
- {
- i = idiv1616( bits, NB_SUBFR );
- IF( s_and( i, 1 ) == 0 )
- {
- i = sub( i, 1 ); /* must be odd */
- }
- i = s_min( i, 13 );
-#ifdef DEBUG_MODE_TD
- if ( i < 0 )
- IVAS_ERROR( IVAS_ERR_INTERNAL, "ERROR::: UC negative index should not happen at frame %d\n" );
-#endif
- i = s_max( i, 0 ); /* If i == 0-> random noise generator will be used as FCB */
- set16_fx( acelp_cfg->fixed_cdk_index, i, NB_SUBFR );
- bits = sub( bits, i_mult( i, NB_SUBFR ) );
- }
- ELSE
- {
-
- acelp_cfg->fcb_mode = 1;
- move16();
- test();
- test();
- IF( EQ_16( element_mode, IVAS_CPE_TD ) )
- {
- IF( GE_16( bits, i_mult( ACELP_FIXED_CDK_BITS( 0 ), ( nb_subfr ) ) ) ) /* enough bits for all fcb */
- {
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
- }
- ELSE IF( GE_16( bits, i_mult( ACELP_FIXED_CDK_BITS( 0 ), sub( nb_subfr, 1 ) ) ) )
- {
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr - 1, L_SUBFR, coder_type, tc_subfr, fix_first );
- acelp_cfg->fixed_cdk_index[3] = -1;
- move16();
- }
- ELSE IF( GE_16( bits, i_mult( ACELP_FIXED_CDK_BITS( 0 ), sub( nb_subfr, 2 ) ) ) )
- {
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 2 ), L_SUBFR, coder_type, tc_subfr, fix_first );
- acelp_cfg->fixed_cdk_index[2] = acelp_cfg->fixed_cdk_index[1];
- move16();
- acelp_cfg->fixed_cdk_index[1] = -1;
- move16();
- acelp_cfg->fixed_cdk_index[3] = -1;
- move16();
- }
- ELSE IF( GE_16( bits, ACELP_FIXED_CDK_BITS( 0 ) ) )
- {
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, 1, L_SUBFR, coder_type, tc_subfr, fix_first );
- acelp_cfg->fixed_cdk_index[1] = acelp_cfg->fixed_cdk_index[0];
- move16();
- acelp_cfg->fixed_cdk_index[0] = -1;
- move16();
- acelp_cfg->fixed_cdk_index[2] = -1;
- move16();
- acelp_cfg->fixed_cdk_index[3] = -1;
- move16();
- }
- ELSE /* No FCB */
- {
-#ifdef DEBUGGING
- IVAS_ERROR( IVAS_ERR_INTERNAL, "WARNING!!!, No bit allocated to FCB, check frame %d\n" );
-#endif
- acelp_cfg->fixed_cdk_index[0] = -1;
- move16();
- acelp_cfg->fixed_cdk_index[1] = -1;
- move16();
- acelp_cfg->fixed_cdk_index[2] = -1;
- move16();
- acelp_cfg->fixed_cdk_index[3] = -1;
- move16();
- }
- }
- ELSE IF( NE_16( element_mode, IVAS_CPE_TD ) && GSC_IVAS_mode > 0 && EQ_16( L_frame, L_FRAME16k ) )
- {
- bits = 100; /* 9 kbps for fcb */
- move16();
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
- }
- ELSE
- {
- acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
- }
- }
- }
-
- /* AVQ codebook */
- test();
- test();
- test();
- IF( ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) /* high-birate ACELP except IC */ ||
- ( !inactive_coder_type_flag && coder_type == INACTIVE ) /* AVQ inactive */ )
- {
- FOR( i = 0; i < nb_subfr; i++ )
- {
- IF( flag_hardcoded )
- {
- acelp_cfg->AVQ_cdk_bits[i] = AVQ_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_16KHZ_fx( tc_subfr ) )];
- move16();
- {
- bits = sub( bits, acelp_cfg->AVQ_cdk_bits[i] );
- }
- }
-
- bits = sub( bits, G_AVQ_BITS );
- }
-
- test();
- test();
- IF( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && LE_32( core_brate_inp, MAX_BRATE_AVQ_EXC_TD ) && EQ_16( coder_type, GENERIC ) )
- {
- /* harm. flag ACELP AVQ */
- bits = sub( bits, 1 );
- }
-
- IF( !flag_hardcoded )
- {
- Word16 bit_tmp;
-
- bit_tmp = idiv1616( bits, nb_subfr );
- set16_fx( acelp_cfg->AVQ_cdk_bits, bit_tmp, nb_subfr );
- bits = sub( bits, i_mult( bit_tmp, nb_subfr ) );
-
- bit_tmp = bits % nb_subfr;
- move16();
- acelp_cfg->AVQ_cdk_bits[0] = add( acelp_cfg->AVQ_cdk_bits[0], bit_tmp );
- move16();
- bits = sub( bits, bit_tmp );
- }
- }
- }
- ELSE IF( ( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) /* LBR secondary channel in TD stereo */ ||
- ( ( coder_type == INACTIVE || EQ_16( coder_type, AUDIO ) ) && EQ_16( nb_subfr, NB_SUBFR ) ) /* GSC @12.8kHz */ ||
- ( coder_type == INACTIVE && inactive_coder_type_flag ) /* AVQ inactive */ )
- {
- Word32 Local_BR, Pitch_BR;
- Word16 Pitch_CT;
-
- /* as defined at the beginning of [enc,dec]_pit_exc() */
- test();
- test();
- IF( GSC_IVAS_mode > 0 && ( GSC_noisy_speech || GT_32( core_brate, GSC_H_RATE_STG ) ) )
- {
- Local_BR = ACELP_8k00;
- move32();
- Pitch_CT = GENERIC;
- move16();
- Pitch_BR = ACELP_8k00;
- move32();
- IF( EQ_16( L_frame, L_FRAME16k ) )
- {
- Local_BR = ACELP_14k80;
- move32();
- test();
- if ( GSC_IVAS_mode > 0 && LT_32( core_brate, IVAS_24k4 ) )
- {
- Local_BR = ACELP_9k60;
- move32();
- }
- Pitch_BR = core_brate;
- move32();
- }
- }
- ELSE IF( GSC_noisy_speech )
- {
- Local_BR = ACELP_7k20;
- move32();
- Pitch_CT = GENERIC;
- move16();
- Pitch_BR = ACELP_7k20;
- move32();
- if ( EQ_16( L_frame, L_FRAME16k ) )
- {
- Pitch_BR = core_brate;
- move32();
- }
- }
- ELSE
- {
- Local_BR = ACELP_7k20;
- move32();
- Pitch_CT = AUDIO;
- move16();
- Pitch_BR = core_brate;
- move32();
-
- IF( EQ_16( L_frame, L_FRAME16k ) )
- {
- Local_BR = ACELP_13k20;
- move32();
- Pitch_CT = GENERIC;
- move16();
- }
- }
-
- FOR( i = 0; i < nb_subfr; i++ )
- {
- IF( EQ_16( L_frame, L_FRAME16k ) )
- {
- acelp_cfg->pitch_bits[i] = ACB_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( Pitch_BR, Pitch_CT, i_mult( i, L_SUBFR ), 0 )];
- move16();
- acelp_cfg->fixed_cdk_index[i] = FCB_bits_tbl[BIT_ALLOC_IDX_fx( Local_BR, LOCAL_CT, i_mult( i, L_SUBFR ), 0 )];
- move16();
- }
- ELSE
- {
- acelp_cfg->pitch_bits[i] = ACB_bits_tbl[BIT_ALLOC_IDX_fx( Pitch_BR, Pitch_CT, i_mult( i, L_SUBFR ), 0 )];
- move16();
- acelp_cfg->fixed_cdk_index[i] = FCB_bits_tbl[BIT_ALLOC_IDX_fx( Local_BR, LOCAL_CT, i_mult( i, L_SUBFR ), 0 )];
- move16();
- acelp_cfg->gains_mode[i] = gain_bits_tbl[BIT_ALLOC_IDX_fx( ACELP_7k20, LOCAL_CT, i_mult( i, L_SUBFR ), 0 )];
- move16();
- }
- }
- }
-
- test();
- test();
- test();
- IF( EQ_16( coder_type, TRANSITION ) && ( EQ_16( tc_call, 1 ) && tc_subfr == 0 && EQ_16( L_frame, L_FRAME ) ) )
- {
- return error;
- }
-
- /*-----------------------------------------------------------------*
- * unused bits handling
- *-----------------------------------------------------------------*/
-
- acelp_cfg->ubits = 0; /* these bits could be reused for something else */
- move16();
-
- test();
- IF( flag_hardcoded && NE_32( core_brate, PPP_NELP_2k80 ) )
- {
- test();
- test();
- /* unused bits */
- IF( EQ_16( coder_type, AUDIO ) || ( coder_type == INACTIVE && LE_32( core_brate, ACELP_24k40 ) ) )
- {
- acelp_cfg->ubits = 0;
- move16();
- }
- ELSE IF( EQ_16( L_frame, L_FRAME ) )
- {
- acelp_cfg->ubits = reserved_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, -1, TC_SUBFR2IDX_fx( tc_subfr ) )];
- move16();
- }
- ELSE
- {
- acelp_cfg->ubits = 0;
- move16();
- }
-
- bits = sub( bits, acelp_cfg->ubits );
- }
-
- /* sanity check */
- test();
- test();
- test();
- IF( ( coder_type != INACTIVE && EQ_16( nb_subfr, NB_SUBFR ) && NE_16( coder_type, AUDIO ) ) || EQ_16( nb_subfr, NB_SUBFR16k ) )
- {
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( EQ_16( L_frame, L_FRAME16k ) && coder_type == INACTIVE && inactive_coder_type_flag ) /* GSC Inactive @16kHz */ ||
- ( GSC_IVAS_mode > 0 && EQ_16( L_frame, L_FRAME16k ) ) ) /* IVAS GSC @16kHz */
- {
- acelp_cfg->ubits = 0;
- move16();
- }
- ELSE IF( flag_hardcoded && core == ACELP_CORE && bits != 0 )
- {
-#ifdef DEBUGGING
- IVAS_ERROR( IVAS_ERR_INTERNAL, "ERROR: bit-budget incorrect (%d bits) in frame %d.\n", (Word32) bits );
-#endif
- }
- ELSE IF( bits > 0 && !( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) )
- {
- test();
- test();
- test();
- test();
- IF( idchan > 0 && EQ_16( element_mode, IVAS_CPE_TD ) )
- {
- IF( !tdm_lp_reuse_flag )
- {
- acelp_cfg->lsf_bits = add( acelp_cfg->lsf_bits, bits ); /* increase LSF Q bits */
- move16();
- bits = 0;
- move16();
- }
- ELSE
- {
- Word16 nb_prm = 4;
- move16();
- if ( EQ_16( tdm_low_rate_mode, 1 ) )
- {
- nb_prm = 2;
- move16();
- }
- /* First add remaining bits on gains */
- bits = sub( bits, allocate_unused( core_brate, coder_type, bits, nb_prm, 0, GAINSPRM, acelp_cfg->gains_mode ) );
-
- /* Then, Increase pitch bit budget */
- test();
- IF( tdm_Pitch_reuse_flag == 0 && bits > 0 )
- {
- bits = sub( bits, allocate_unused( core_brate, coder_type, bits, nb_prm, 0, PITCHPRM, acelp_cfg->pitch_bits ) );
- }
-
- /* Increase mid-lsf bit budget */
- test();
- IF( tdm_lp_reuse_flag == 0 && bits > 0 )
- {
- bits = sub( bits, allocate_unused( core_brate, coder_type, bits, 1, 0, MID_LSFSPRM, &acelp_cfg->mid_lsf_bits ) );
- bits = sub( bits, allocate_unused( core_brate, coder_type, bits, 1, 0, LSFPRM, &acelp_cfg->lsf_bits ) );
- }
- }
-
-#ifdef DEBUGGING
- if ( idchan > 0 && bits > 0 && ( coder_type > UNVOICED || tdm_low_rate_mode == 0 ) )
- {
- IVAS_ERROR( IVAS_ERR_INTERNAL, "WARNING !! Unused bits in secondary channel at frame %d\n" );
- }
-#endif
- }
-
- ELSE IF( core == ACELP_CORE && GE_16( coder_type, UNVOICED ) && LE_16( coder_type, GENERIC ) && EQ_16( L_frame, L_FRAME ) )
- {
- acelp_cfg->lsf_bits = add( acelp_cfg->lsf_bits, bits ); /* increase LSF Q bits */
- move16();
-
- test();
- IF( GT_16( acelp_cfg->lsf_bits, 46 ) )
- {
- acelp_cfg->ubits = sub( acelp_cfg->lsf_bits, 46 );
- move16();
- acelp_cfg->lsf_bits = 46;
- move16();
- }
- ELSE IF( GT_16( acelp_cfg->lsf_bits, 42 ) && EQ_16( L_frame, L_FRAME ) )
- {
- acelp_cfg->ubits = sub( acelp_cfg->lsf_bits, 42 );
- move16();
- acelp_cfg->lsf_bits = 42;
- move16();
- }
- }
- ELSE
- {
- acelp_cfg->ubits = bits;
- move16();
- }
- }
- ELSE IF( bits < 0 && !( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) )
- {
-#ifdef DEBUGGING
- IVAS_ERROR( IVAS_ERR_INTERNAL, "ERROR: bit-budget incorrect (%d bits) in frame %d.\n", (Word32) bits );
-#endif
- }
- }
-
- return error;
-}
/*-------------------------------------------------------------------*
- * config_acelp1_IVAS()
+ * config_acelp1_fx()
*
* Configure ACELP bit allocation
* - should be in range of <6700; 24350> for ACELP@12.8kHz
* - per channel bitrate minimum is 13250 kbps for ACELP@16kHz
*--------------------------------------------------------------------*/
-ivas_error config_acelp1_IVAS(
+ivas_error config_acelp1_fx(
const Word16 enc_dec, /* i : encoder/decoder flag */
const Word32 total_brate, /* i : total bitrate */
const Word32 core_brate_inp, /* i : core bitrate */
@@ -2509,11 +1224,11 @@ ivas_error config_acelp1_IVAS(
IF( GE_16( bits, 16 ) )
{
- acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 );
+ acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 );
}
ELSE
{
- acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 );
+ acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 );
acelp_cfg->fixed_cdk_index[1] = -1;
move16();
}
@@ -2632,17 +1347,17 @@ ivas_error config_acelp1_IVAS(
{
IF( GE_16( bits, imult1616( ACELP_FIXED_CDK_BITS( 0 ), nb_subfr ) ) ) /* enough bits for all fcb */
{
- acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
+ acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
}
ELSE IF( GE_16( bits, imult1616( ACELP_FIXED_CDK_BITS( 0 ), sub( nb_subfr, 1 ) ) ) )
{
- acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 1 ), L_SUBFR, coder_type, tc_subfr, fix_first );
+ acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 1 ), L_SUBFR, coder_type, tc_subfr, fix_first );
acelp_cfg->fixed_cdk_index[3] = -1;
move16();
}
ELSE IF( GE_32( bits, imult1616( ACELP_FIXED_CDK_BITS( 0 ), sub( nb_subfr, 2 ) ) ) )
{
- acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 2 ), L_SUBFR, coder_type, tc_subfr, fix_first );
+ acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 2 ), L_SUBFR, coder_type, tc_subfr, fix_first );
acelp_cfg->fixed_cdk_index[2] = acelp_cfg->fixed_cdk_index[1];
move16();
acelp_cfg->fixed_cdk_index[1] = -1;
@@ -2652,7 +1367,7 @@ ivas_error config_acelp1_IVAS(
}
ELSE IF( GE_32( bits, ACELP_FIXED_CDK_BITS( 0 ) ) )
{
- acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, 1, L_SUBFR, coder_type, tc_subfr, fix_first );
+ acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, 1, L_SUBFR, coder_type, tc_subfr, fix_first );
acelp_cfg->fixed_cdk_index[1] = acelp_cfg->fixed_cdk_index[0];
move16();
acelp_cfg->fixed_cdk_index[0] = -1;
@@ -2678,11 +1393,11 @@ ivas_error config_acelp1_IVAS(
{
bits = 100; /* 9 kbps for fcb */
move16();
- acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
+ acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
}
ELSE
{
- acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
+ acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first );
}
}
}
diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c
index d8d4563ed3a60fdf6325d71a81a73384c100f911..8ebfd6fa7059531fe0a087bacc7d5cfbed840e13 100644
--- a/lib_com/bitstream.c
+++ b/lib_com/bitstream.c
@@ -48,7 +48,9 @@
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
#include "prot_fx_enc.h"
-
+#ifdef DBG_BITSTREAM_ANALYSIS
+#include
+#endif
#define STEP_MAX_NUM_INDICES 100 /* increase the maximum number of allowed indices in the list by this amount */
@@ -100,7 +102,7 @@ static Word16 rate2AMRWB_IOmode(
*-------------------------------------------------------------------*/
Word16 rate2EVSmode_float(
const Word32 brate, /* i : bitrate */
- int16_t *is_amr_wb /* o : (flag) does the bitrate belong to AMR-WB? Can be NULL */
+ Word16 *is_amr_wb /* o : (flag) does the bitrate belong to AMR-WB? Can be NULL */
)
{
if ( is_amr_wb != NULL )
@@ -199,6 +201,9 @@ ivas_error ind_list_realloc(
{
new_ind_list[i].id = old_ind_list[i].id;
new_ind_list[i].value = old_ind_list[i].value;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
+#endif
move16();
move16();
}
@@ -210,6 +215,9 @@ ivas_error ind_list_realloc(
FOR( ; i < max_num_indices; i++ )
{
new_ind_list[i].nb_bits = -1;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ sprintf( new_ind_list[i].function_name, "RESET in ind_list_realloc" );
+#endif
move16();
}
@@ -575,8 +583,8 @@ Word16 get_ivas_max_num_indices_fx(
*-----------------------------------------------------------------------*/
/*! r: maximum number of indices */
-int16_t get_BWE_max_num_indices(
- const int32_t extl_brate /* i : extensiona layer bitrate */
+Word16 get_BWE_max_num_indices(
+ const Word32 extl_brate /* i : extensiona layer bitrate */
)
{
/* set the maximum number of indices in the BWE */
@@ -787,10 +795,10 @@ Word16 get_ivas_max_num_indices_metadata_fx(
void move_indices(
INDICE_HANDLE old_ind_list, /* i/o: old location of indices */
INDICE_HANDLE new_ind_list, /* i/o: new location of indices */
- const int16_t nb_indices /* i : number of moved indices */
+ const Word16 nb_indices /* i : number of moved indices */
)
{
- int16_t i;
+ Word16 i;
if ( new_ind_list < old_ind_list )
{
@@ -800,6 +808,9 @@ void move_indices(
new_ind_list[i].value = old_ind_list[i].value;
new_ind_list[i].nb_bits = old_ind_list[i].nb_bits;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
+#endif
old_ind_list[i].nb_bits = -1;
}
}
@@ -810,8 +821,14 @@ void move_indices(
new_ind_list[i].id = old_ind_list[i].id;
new_ind_list[i].value = old_ind_list[i].value;
new_ind_list[i].nb_bits = old_ind_list[i].nb_bits;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
+#endif
old_ind_list[i].nb_bits = -1;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ sprintf( old_ind_list[i].function_name, "RESET in move_indices" );
+#endif
}
}
@@ -880,6 +897,1881 @@ ivas_error check_ind_list_limits(
return error;
}
+#ifdef DBG_BITSTREAM_ANALYSIS
+const char *named_indices_table[] = {
+ "IND_IVAS_FORMAT",
+ "IND_SMODE_OMASA",
+ "IND_SMODE",
+ "IND_SID_TYPE",
+ "IND_BWIDTH",
+ "IND_CORE",
+ "IND_PPP_NELP_MODE",
+ "IND_ACELP_16KHZ",
+ "IND_ACELP_SIGNALLING",
+ "IND_SHARP_FLAG",
+ "IND_MDCT_CORE",
+ "IND_TCX_CORE",
+ "IND_BWE_FLAG",
+ "IND_HQ_SWITCHING_FLG",
+ "IND_LAST_L_FRAME",
+ "IND_VAD_FLAG",
+ "IND_HQ_BWIDTH",
+ "IND_TC_SUBFR",
+ "IND_TC_SUBFR",
+ "IND_TC_SUBFR",
+ "IND_TC_SUBFR",
+ "IND_GSC_IVAS_SP",
+ "IND_LSF_PREDICTOR_SELECT_BIT",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_LSF",
+ "IND_MID_FRAME_LSF_INDEX",
+ "IND_ISF_0_0",
+ "IND_ISF_0_1",
+ "IND_ISF_0_2",
+ "IND_ISF_0_3",
+ "IND_ISF_0_4",
+ "IND_ISF_1_0",
+ "IND_ISF_1_1",
+ "IND_ISF_1_2",
+ "IND_ISF_1_3",
+ "IND_ISF_1_4",
+ "IND_IC_LSF_PRED",
+ "IND_GSC_ATTACK",
+ "IND_GSC_SWB_SPEECH",
+ "IND_NOISE_LEVEL",
+ "IND_HF_NOISE",
+ "IND_PIT_CONTR_IDX",
+ "IND_FEC_CLAS",
+ "IND_FEC_ENR",
+ "IND_FEC_POS",
+ "IND_ES_PRED",
+ "IND_HARM_FLAG_ACELP",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "IND_ALG_CDBK_4T64_2_24KBIT",
+ "TAG_ALG_CDBK_4T64_24KBIT_END",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "IND_HF_GAIN_MODIFICATION",
+ "TAG_ACELP_SUBFR_LOOP_END",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_MEAN_GAIN2",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_TMP",
+ "IND_Y_GAIN_HF",
+ "IND_HQ_VOICING_FLAG",
+ "IND_HQ_SWB_CLAS",
+ "IND_NF_IDX",
+ "IND_LC_MODE",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_YNRM",
+ "IND_SWB_FENV_HQ",
+ "IND_SWB_FENV_HQ",
+ "IND_SWB_FENV_HQ",
+ "IND_SWB_FENV_HQ",
+ "IND_SWB_FENV_HQ",
+ "IND_FB_FENV_HQ",
+ "IND_FB_FENV_HQ",
+ "IND_FB_FENV_HQ",
+ "IND_FB_FENV_HQ",
+ "IND_FB_FENV_HQ",
+ "IND_DELTA_ENV_HQ",
+ "IND_HVQ_BWE_NL",
+ "IND_HVQ_BWE_NL",
+ "IND_NUM_PEAKS",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_POS_IDX",
+ "IND_FLAGN",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_PG_IDX",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_PEAKS",
+ "IND_HVQ_NF_GAIN",
+ "IND_HVQ_NF_GAIN",
+ "IND_HQ2_SWB_CLAS",
+ "IND_HQ2_DENG_MODE",
+ "IND_HQ2_DENG_8SMODE",
+ "IND_HQ2_DENG_8SMODE_N0",
+ "IND_HQ2_DENG_8SMODE_N1",
+ "IND_HQ2_DENG_8SPOS",
+ "IND_HQ2_DENG_8SDEPTH",
+ "IND_HQ2_DENG_HMODE",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_DIFF_ENERGY",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_P2A_FLAGS",
+ "IND_HQ2_LAST_BA_MAX_BAND",
+ "IND_HQ2_LAST_BA_MAX_BAND",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_START",
+ "IND_RC_END",
+ "IND_HVQ_PVQ_GAIN",
+ "IND_HVQ_PVQ_GAIN",
+ "IND_HVQ_PVQ_GAIN",
+ "IND_HVQ_PVQ_GAIN",
+ "IND_HVQ_PVQ_GAIN",
+ "IND_HVQ_PVQ_GAIN",
+ "IND_HVQ_PVQ_GAIN",
+ "IND_HVQ_PVQ_GAIN",
+ "IND_NOISINESS",
+ "IND_ENERGY",
+ "IND_CNG_HO",
+ "IND_SID_BW",
+ "IND_CNG_ENV1",
+ "IND_WB_FENV",
+ "IND_WB_CLASS",
+ "IND_IG1",
+ "IND_IG2A",
+ "IND_IG2B",
+ "IND_NELP_FID",
+ "IND_DELTALAG",
+ "IND_POWER",
+ "IND_AMP0",
+ "IND_AMP1",
+ "IND_GLOBAL_ALIGNMENT",
+ "IND_PVQ_FINE_GAIN",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_UV_FLAG",
+ "IND_SHB_SUBGAIN",
+ "IND_SHB_FRAMEGAIN",
+ "IND_STEREO_ICBWE_MSFLAG",
+ "IND_SHB_ENER_SF",
+ "IND_SHB_RES_GS",
+ "IND_SHB_RES_GS",
+ "IND_SHB_RES_GS",
+ "IND_SHB_RES_GS",
+ "IND_SHB_RES_GS",
+ "IND_SHB_VF",
+ "IND_SHB_LSF",
+ "IND_SHB_LSF",
+ "IND_SHB_LSF",
+ "IND_SHB_LSF",
+ "IND_SHB_LSF",
+ "IND_SHB_MIRROR",
+ "IND_SHB_GRID",
+ "IND_SWB_CLASS",
+ "IND_SWB_TENV",
+ "IND_SWB_TENV",
+ "IND_SWB_TENV",
+ "IND_SWB_TENV",
+ "IND_SWB_FENV",
+ "IND_SWB_FENV",
+ "IND_SWB_FENV",
+ "IND_SWB_FENV",
+ "IND_SHB_CNG_GAIN",
+ "IND_DITHERING",
+ "IND_FB_SLOPE",
+ "IND_HQ2_SPT_SHORTEN",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_TCQ",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_SUBBAND_GAIN",
+ "IND_HQ2_DUMMY",
+ "IND_LAGINDICES",
+ "IND_NOISEG",
+ "IND_AUDIO_GAIN",
+ "IND_AUDIO_DELAY",
+ "IND_AUDIO_DELAY",
+ "IND_AUDIO_DELAY",
+ "IND_AUDIO_DELAY",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "IND_NQ2",
+ "TAG_HR_BWE_LOOP_END",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_CELP_SUBFRAME",
+ "IND_CORE_SWITCHING_AUDIO_DELAY",
+ "IND_CORE_SWITCHING_AUDIO_GAIN",
+ "IND_STEREO_ICBWE_REF",
+ "IND_STEREO_ICBWE_SP",
+ "IND_STEREO_ICBWE_GS",
+ "IND_STEREO_REFCHAN",
+ "IND_STEREO_CORRSTATS",
+ "IND_STEREO_GD",
+ "IND_STEREO_LRTD_FLAG",
+ "IND_STEREO_LPC_REUSE",
+ "IND_STEREO_TD_ALPHA",
+ "IND_STEREO_2ND_CODER_T",
+ "IND_UNUSED"
+};
+#endif
+
/*-------------------------------------------------------------------*
* push_indice()
@@ -925,6 +2817,9 @@ ivas_error push_indice(
hBstr->ind_list[j].id = hBstr->ind_list[j - 1].id;
hBstr->ind_list[j].nb_bits = hBstr->ind_list[j - 1].nb_bits;
hBstr->ind_list[j].value = hBstr->ind_list[j - 1].value;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100 );
+#endif
move16();
move16();
move16();
@@ -936,6 +2831,9 @@ ivas_error push_indice(
hBstr->ind_list[i].id = id;
hBstr->ind_list[i].value = value;
hBstr->ind_list[i].nb_bits = nb_bits;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( hBstr->ind_list[i].function_name, named_indices_table[id], 100 );
+#endif
move16();
move16();
move16();
@@ -954,7 +2852,14 @@ ivas_error push_indice(
*
* Push a new indice into the buffer at the next position
*-------------------------------------------------------------------*/
+#ifdef DBG_BITSTREAM_ANALYSIS
+ivas_error push_next_indice_(
+#else
ivas_error push_next_indice(
+#endif
+#ifdef DBG_BITSTREAM_ANALYSIS
+ const char *caller,
+#endif
BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
UWord16 value, /* i : value of the quantized indice */
Word16 nb_bits /* i : number of bits used to quantize the indice */
@@ -992,6 +2897,10 @@ ivas_error push_next_indice(
move16();
move16();
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100 );
+#endif
+
/* updates */
hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
hBstr->nb_bits_tot = add( hBstr->nb_bits_tot, nb_bits );
@@ -1005,7 +2914,14 @@ ivas_error push_next_indice(
* push_next_bits()
* Push a bit buffer into the buffer at the next position
*-------------------------------------------------------------------*/
+#ifdef DBG_BITSTREAM_ANALYSIS
+ivas_error push_next_bits_(
+#else
ivas_error push_next_bits(
+#endif
+#ifdef DBG_BITSTREAM_ANALYSIS
+ const char *caller,
+#endif
BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */
const Word16 nb_bits /* i : number of bits to pack */
@@ -1049,6 +2965,9 @@ ivas_error push_next_bits(
ptr->value = code;
ptr->nb_bits = 16;
ptr->id = prev_id;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( ptr->function_name, caller, 100 );
+#endif
hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
move16();
move16();
@@ -1070,6 +2989,9 @@ ivas_error push_next_bits(
ptr->value = bits[i];
ptr->nb_bits = 1;
ptr->id = prev_id;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( ptr->function_name, caller, 100 );
+#endif
hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
move16();
move16();
@@ -1092,14 +3014,14 @@ ivas_error push_next_bits(
*-------------------------------------------------------------------*/
/*! r: result: index of the indice in the list, -1 if not found */
-int16_t find_indice(
+Word16 find_indice(
BSTR_ENC_HANDLE hBstr, /* i : encoder bitstream handle */
- const int16_t id, /* i : ID of the indice */
- uint16_t *value, /* o : value of the quantized indice */
- int16_t *nb_bits /* o : number of bits used to quantize the indice */
+ const Word16 id, /* i : ID of the indice */
+ UWord16 *value, /* o : value of the quantized indice */
+ Word16 *nb_bits /* o : number of bits used to quantize the indice */
)
{
- int16_t i;
+ Word16 i;
for ( i = 0; i < hBstr->nb_ind_tot; i++ )
{
@@ -1122,12 +3044,12 @@ int16_t find_indice(
*-------------------------------------------------------------------*/
/*! r: number of deleted indices */
-uint16_t delete_indice(
+UWord16 delete_indice(
BSTR_ENC_HANDLE hBstr, /* i : encoder bitstream handle */
- const int16_t id /* i : ID of the indice */
+ const Word16 id /* i : ID of the indice */
)
{
- int16_t i, j;
+ Word16 i, j;
j = 0;
for ( i = 0; i < hBstr->nb_ind_tot; i++ )
@@ -1144,6 +3066,9 @@ uint16_t delete_indice(
hBstr->ind_list[j].id = hBstr->ind_list[i].id;
hBstr->ind_list[j].value = hBstr->ind_list[i].value;
hBstr->ind_list[j].nb_bits = hBstr->ind_list[i].nb_bits;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100 );
+#endif
}
j++;
@@ -1155,6 +3080,9 @@ uint16_t delete_indice(
{
/* reset the shifted indices at the end of the list */
hBstr->ind_list[j].nb_bits = -1;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ sprintf( hBstr->ind_list[j].function_name, "RESET in delete_indice" );
+#endif
}
return i - j;
@@ -1168,14 +3096,14 @@ uint16_t delete_indice(
*-------------------------------------------------------------------*/
/*! r: value of the indice */
-uint16_t get_next_indice(
+UWord16 get_next_indice(
Decoder_State *st, /* i/o: decoder state structure */
- int16_t nb_bits /* i : number of bits that were used to quantize the indice */
+ Word16 nb_bits /* i : number of bits that were used to quantize the indice */
)
{
- uint16_t value;
- int16_t i;
- int32_t nbits_total;
+ UWord16 value;
+ Word16 i;
+ Word32 nbits_total;
assert( nb_bits <= 16 );
@@ -1207,11 +3135,11 @@ uint16_t get_next_indice(
*-------------------------------------------------------------------*/
/*! r: value of the indice */
-uint16_t get_next_indice_1(
+UWord16 get_next_indice_1(
Decoder_State *st /* i/o: decoder state structure */
)
{
- int32_t nbits_total;
+ Word32 nbits_total;
nbits_total = st->total_brate / FRAMES_PER_SEC;
/* detect corrupted bitstream */
if ( ( st->next_bit_pos + 1 > nbits_total && st->codec_mode == MODE1 ) ||
@@ -1233,7 +3161,7 @@ uint16_t get_next_indice_1(
void get_next_indice_tmp(
Decoder_State *st, /* o : decoder state structure */
- int16_t nb_bits /* i : number of bits that were used to quantize the indice */
+ Word16 nb_bits /* i : number of bits that were used to quantize the indice */
)
{
/* update the position in the bitstream */
@@ -1249,15 +3177,15 @@ void get_next_indice_tmp(
*-------------------------------------------------------------------*/
/*! r: value of the indice */
-uint16_t get_indice(
+UWord16 get_indice(
Decoder_State *st, /* i/o: decoder state structure */
- int16_t pos, /* i : absolute position in the bitstream (update after the read) */
- int16_t nb_bits /* i : number of bits that were used to quantize the indice */
+ Word16 pos, /* i : absolute position in the bitstream (update after the read) */
+ Word16 nb_bits /* i : number of bits that were used to quantize the indice */
)
{
- uint16_t value;
- int16_t i;
- int32_t nbits_total;
+ UWord16 value;
+ Word16 i;
+ Word32 nbits_total;
assert( nb_bits <= 16 );
@@ -1391,6 +3319,10 @@ static ivas_error write_indices_element_fx(
UWord16 **pt_stream, /* i : pointer to bitstream buffer */
const Word16 is_SCE, /* i : flag to distingusih SCE and CPE */
const Word16 element_id /* i : id of the SCE or CPE */
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ int32_t frame
+#endif
)
{
Word16 ch;
@@ -1497,6 +3429,73 @@ static ivas_error write_indices_element_fx(
}
}
+#ifdef DBG_BITSTREAM_ANALYSIS
+ if ( is_SCE ) /* EVS and SCE */
+ {
+ static FILE *f1 = 0;
+
+ if ( f1 == 0 )
+ f1 = fopen( "bitstream_text", "w" );
+
+ for ( int16_t i = 0; i < sts[0]->hBstr->nb_ind_tot; i++ )
+ {
+ Indice *ind_list = sts[0]->hBstr->ind_list;
+ int16_t value = ind_list[i].value;
+ int16_t nb_bits = ind_list[i].nb_bits;
+ char *function_name = ind_list[i].function_name;
+
+ fprintf( f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value );
+ }
+
+ if ( st_ivas->hSCE[element_id]->hMetaData != NULL )
+ {
+ for ( int16_t i = 0; i < st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot; i++ )
+ {
+ Indice *ind_list = st_ivas->hSCE[element_id]->hMetaData->ind_list;
+ int16_t value = ind_list[i].value;
+ int16_t nb_bits = ind_list[i].nb_bits;
+ char *function_name = ind_list[i].function_name;
+
+ fprintf( f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value );
+ }
+ }
+ }
+ else
+ {
+ static FILE *f1 = 0;
+
+ if ( f1 == 0 )
+ f1 = fopen( "bitstream_text", "w" );
+
+
+ for ( n = 0; n < n_channels; n++ )
+ {
+ for ( int16_t i = 0; i < sts[n]->hBstr->nb_ind_tot; i++ )
+ {
+ Indice *ind_list = sts[n]->hBstr->ind_list;
+ int16_t value = ind_list[i].value;
+ int16_t nb_bits = ind_list[i].nb_bits;
+ char *function_name = ind_list[i].function_name;
+
+ fprintf( f1, "%d %d %d %d %s %d %d\n", frame, element_id, n, i, function_name, nb_bits, value );
+ }
+ }
+
+ if ( st_ivas->hCPE[element_id]->hMetaData != NULL )
+ {
+ for ( int16_t i = 0; i < st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot; i++ )
+ {
+ Indice *ind_list = st_ivas->hCPE[element_id]->hMetaData->ind_list;
+ int16_t value = ind_list[i].value;
+ int16_t nb_bits = ind_list[i].nb_bits;
+ char *function_name = ind_list[i].function_name;
+
+ fprintf( f1, "%d %d %d %d %s %d %d\n", frame, element_id, -1, i, function_name, nb_bits, value );
+ }
+ }
+ }
+#endif
+
/*----------------------------------------------------------------*
* Clearing of indices
* Reset index pointers
@@ -1540,6 +3539,10 @@ ivas_error write_indices_ivas_fx(
Encoder_Struct *st_ivas, /* i/o: encoder state structure */
UWord16 *bit_stream, /* i/o: output bitstream */
UWord16 *num_bits /* i : number of indices written to output */
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ int32_t frame
+#endif
)
{
Word16 i, n;
@@ -1563,12 +3566,22 @@ ivas_error write_indices_ivas_fx(
FOR( n = 0; n < st_ivas->nSCE; n++ )
{
- write_indices_element_fx( st_ivas, &pt_stream, 1, n );
+ write_indices_element_fx( st_ivas, &pt_stream, 1, n
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ frame
+#endif
+ );
}
FOR( n = 0; n < st_ivas->nCPE; n++ )
{
- write_indices_element_fx( st_ivas, &pt_stream, 0, n );
+ write_indices_element_fx( st_ivas, &pt_stream, 0, n
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ frame
+#endif
+ );
}
*num_bits = (UWord16) ( pt_stream - bit_stream );
@@ -1584,9 +3597,9 @@ ivas_error write_indices_ivas_fx(
*-------------------------------------------------------------------*/
static void decoder_selectCodec(
- Decoder_State *st, /* i/o: decoder state structure */
- const int32_t total_brate, /* i : total bitrate */
- const int16_t bit0 /* i : first bit */
+ Decoder_State *st, /* i/o: decoder state structure */
+ const Word32 total_brate, /* i : total bitrate */
+ const Word16 bit0 /* i : first bit */
)
{
/* set the AMR-WB IO flag */
@@ -1724,7 +3737,7 @@ void ivas_set_bitstream_pointers(
Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
)
{
- int16_t k, num_bits;
+ Word16 k, num_bits;
Decoder_State **sts;
num_bits = 0;
@@ -1734,7 +3747,7 @@ void ivas_set_bitstream_pointers(
{
sts = st_ivas->hSCE[k]->hCoreCoder;
sts[0]->bit_stream = st_ivas->bit_stream + num_bits;
- num_bits += (int16_t) ( st_ivas->hSCE[k]->element_brate / FRAMES_PER_SEC );
+ num_bits += (Word16) ( st_ivas->hSCE[k]->element_brate / FRAMES_PER_SEC );
}
/* set bitstream pointers for CPEs */
@@ -1742,7 +3755,7 @@ void ivas_set_bitstream_pointers(
{
sts = st_ivas->hCPE[k]->hCoreCoder;
sts[0]->bit_stream = st_ivas->bit_stream + num_bits;
- num_bits += (int16_t) ( st_ivas->hCPE[k]->element_brate / FRAMES_PER_SEC );
+ num_bits += (Word16) ( st_ivas->hCPE[k]->element_brate / FRAMES_PER_SEC );
}
return;
diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c
index 07a6a632fc43a787473c42f94b849dda8c876540..2b66f92cd7ba3352cf0979ffa6b6a23896ac9199 100644
--- a/lib_com/bitstream_fx.c
+++ b/lib_com/bitstream_fx.c
@@ -52,8 +52,7 @@
int16_t FEC_seed = 12558; /* Seed for random FEC generator */
FILE *FEC_pattern = NULL; /* FEC pattern file (for simulation of FEC) */
-#ifndef IVAS_CODE
-float FEC_random = 0; /* FEC rate in percent (for simulation of FEC) */
+float FEC_random = 0; /* FEC rate in percent (for simulation of FEC) */
/*-------------------------------------------------------------------*
* file_read_FECpattern()
*
@@ -109,7 +108,6 @@ static int16_t file_read_FECpattern( void )
return bfi;
}
#endif
-#endif
/*-------------------------------------------------------------------*
* pack_bit()
*
diff --git a/lib_com/cldfb_evs.c b/lib_com/cldfb_evs_fx.c
similarity index 99%
rename from lib_com/cldfb_evs.c
rename to lib_com/cldfb_evs_fx.c
index c28a534d63b01c63d73249732fba395ba4311f79..51c9ee6f9568dbc05a9f19927fa53fa7bfcca3f2 100644
--- a/lib_com/cldfb_evs.c
+++ b/lib_com/cldfb_evs_fx.c
@@ -981,10 +981,6 @@ ivas_error openCldfb(
const Word16 type, /*!< analysis or synthesis */
const Word16 maxCldfbBands, /*!< number of cldfb bands */
const Word16 frameSize /*!< FrameSize */
-#ifdef ADD_IVAS_CLDFB
- ,
- CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */
-#endif
)
{
HANDLE_CLDFB_FILTER_BANK hs;
@@ -996,9 +992,6 @@ ivas_error openCldfb(
}
hs->type = type;
-#ifdef ADD_IVAS_CLDFB
- hs->prototype = prototype;
-#endif
move16();
IF( type == CLDFB_ANALYSIS )
diff --git a/lib_com/cldfb.c b/lib_com/cldfb_fx.c
similarity index 92%
rename from lib_com/cldfb.c
rename to lib_com/cldfb_fx.c
index d4a6d8ace63ae5b16928fcaa174771d58052fed4..bf832b6406227404a4b3ef4da5e6595bea4ae48e 100644
--- a/lib_com/cldfb.c
+++ b/lib_com/cldfb_fx.c
@@ -60,6 +60,20 @@ static void cldfb_init_proto_and_twiddles( HANDLE_CLDFB_FILTER_BANK hs );
static void cldfb_init_proto_and_twiddles_enc_fx( HANDLE_CLDFB_FILTER_BANK hs );
+static void GetEnergyCldfb_ivas_fx( Word32 *energyLookahead, /*!< o: Q(*sf_energyLookahead) | pointer to the result in the core look-ahead slot */
+ Word16 *sf_energyLookahead, /*!< o: pointer to the scalefactor of the result in the core look-ahead slot */
+ const Word16 numLookahead, /*!< i: Q0 the number of look-ahead time-slots */
+ Word16 **realValues, /*!< i: Q(sf_Values) | the real part of the CLDFB subsamples */
+ Word16 **imagValues, /*!< i: Q(sf_Values) | the imaginary part of the CLDFB subsamples */
+ Word16 sf_Values, /*!< i: scalefactor of the CLDFB subcamples - apply as a negated Exponent */
+ Word16 numberBands, /*!< i: Q0 | number of CLDFB bands */
+ Word16 numberCols, /*!< i: Q0 | number of CLDFB subsamples */
+ Word32 *energyHF, /*!< o: Q31 | pointer to HF energy */
+ Word16 *energyHF_Exp, /*!< o: pointer to exponent of HF energy */
+ Word32 *energyValuesSum, /*!< o: Q(2*sf_Values-4) | pointer to sum array of energy values, not initialized*/
+ Word16 *energyValuesSum_Exp, /*!< o: pointer to exponents of energyValuesSum, not initialized */
+ TEC_ENC_HANDLE hTecEnc );
+
/*-------------------------------------------------------------------*
* cplxMult()
*
@@ -900,7 +914,7 @@ void cldfbAnalysis_ts_fx_fixed_q(
const Word16 *ptr_pf_fx;
Word16 ptr_pf_sf;
Word32 *timeBuffer_fx, buffer_fx[( CLDFB_NO_CHANNELS_MAX * CLDFB_NO_COL_MAX ) + ( 9 * CLDFB_NO_CHANNELS_MAX )];
- Word16 offset, frameSize;
+ Word16 offset, frameSize, gb, hr, shift;
offset = sub( h_cldfb->p_filter_length, h_cldfb->no_channels );
frameSize = i_mult( h_cldfb->no_channels, h_cldfb->no_col );
@@ -1070,18 +1084,42 @@ void cldfbAnalysis_ts_fx_fixed_q(
*q_cldfb = sub( *q_cldfb, 2 );
move16();
+ gb = find_guarded_bits_fx( M1 );
+ hr = L_norm_arr( iBuffer_fx, M1 );
+
+ IF( LT_16( hr, gb ) )
+ {
+ scale_sig32( iBuffer_fx, M1, sub( hr, gb ) );
+ }
+
/* FFT of DCT IV */
fft_cldfb_fx( iBuffer_fx, M2 );
/* post modulation of DCT IV */
- FOR( k = 0; k < M2; k++ )
+ IF( LT_16( hr, gb ) )
{
- /* do it inplace */
- /*cplxMult(&imagBuffer[2*k],&imagBuffer[M1-1-(2*k)],iBuffer[2*k],iBuffer[2*k+1],rot_vctr_re[k],rot_vctr_im[k]);*/
- imagBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ); // q - 5
- imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = Madd_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ); // q - 5
- move32();
- move32();
+ shift = sub( gb, hr );
+ FOR( k = 0; k < M2; k++ )
+ {
+ /* do it inplace */
+ /*cplxMult(&imagBuffer[2*k],&imagBuffer[M1-1-(2*k)],iBuffer[2*k],iBuffer[2*k+1],rot_vctr_re[k],rot_vctr_im[k]);*/
+ imagBuffer_fx[2 * k] = L_shl( Msub_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ), shift ); // q - 5
+ imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = L_shl( Madd_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ), shift ); // q - 5
+ move32();
+ move32();
+ }
+ }
+ ELSE
+ {
+ FOR( k = 0; k < M2; k++ )
+ {
+ /* do it inplace */
+ /*cplxMult(&imagBuffer[2*k],&imagBuffer[M1-1-(2*k)],iBuffer[2*k],iBuffer[2*k+1],rot_vctr_re[k],rot_vctr_im[k]);*/
+ imagBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ); // q - 5
+ imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = Madd_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ); // q - 5
+ move32();
+ move32();
+ }
}
IF( EQ_32( h_cldfb->prototype, CLDFB_PROTOTYPE_5_00MS ) )
@@ -1527,6 +1565,168 @@ void resampleCldfb_ivas_fx(
return;
}
+static void GetEnergyCldfb_ivas_fx( Word32 *energyLookahead, /*!< o: Q(*sf_energyLookahead) | pointer to the result in the core look-ahead slot */
+ Word16 *sf_energyLookahead, /*!< o: pointer to the scalefactor of the result in the core look-ahead slot */
+ const Word16 numLookahead, /*!< i: Q0 the number of look-ahead time-slots */
+ Word16 **realValues, /*!< i: Q(sf_Values) | the real part of the CLDFB subsamples */
+ Word16 **imagValues, /*!< i: Q(sf_Values) | the imaginary part of the CLDFB subsamples */
+ Word16 sf_Values, /*!< i: scalefactor of the CLDFB subcamples - apply as a negated Exponent */
+ Word16 numberBands, /*!< i: Q0 | number of CLDFB bands */
+ Word16 numberCols, /*!< i: Q0 | number of CLDFB subsamples */
+ Word32 *energyHF, /*!< o: Q31 | pointer to HF energy */
+ Word16 *energyHF_Exp, /*!< o: pointer to exponent of HF energy */
+ Word32 *energyValuesSum, /*!< o: Q(2*sf_Values-4) | pointer to sum array of energy values, not initialized*/
+ Word16 *energyValuesSum_Exp, /*!< o: pointer to exponents of energyValuesSum, not initialized */
+ TEC_ENC_HANDLE hTecEnc )
+{
+ Word16 j;
+ Word16 k;
+ Word16 s;
+ Word16 sm;
+ Word32 nrg;
+ Word16 numberColsL;
+ Word16 numberBandsM;
+ Word16 numberBandsM20;
+ Word32 energyValues[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
+ Word16 energyValuesSumE[CLDFB_NO_CHANNELS_MAX];
+ // Word16 freqTable[2] = {20, 40};
+#ifdef BASOP_NOGLOB_DECLARE_LOCAL
+ Flag Overflow = 0;
+ move32();
+#endif
+
+ FOR( k = 0; k < numberCols; k++ )
+ {
+ FOR( j = 0; j < numberBands; j++ )
+ {
+ nrg = L_mult0( realValues[k][j], realValues[k][j] ); // Q(2*sf_Values)
+ nrg = L_mac0( nrg, imagValues[k][j], imagValues[k][j] ); // Q(2*sf_Values)
+
+ energyValues[k][j] = nrg;
+ move32();
+ }
+ }
+
+ IF( GE_16( numberBands, freqTable[1] ) && hTecEnc != NULL )
+ {
+ Word32 *tempEnergyValuesArry[CLDFB_NO_COL_MAX];
+ Word16 ScaleX2;
+ assert( numberCols == CLDFB_NO_COL_MAX );
+ FOR( j = 0; j < numberCols; j++ )
+ {
+ tempEnergyValuesArry[j] = &energyValues[j][0];
+ }
+
+ ScaleX2 = shl( sf_Values, 1 );
+ calcHiEnvLoBuff_Fix(
+ numberCols,
+ freqTable,
+ 1,
+ tempEnergyValuesArry,
+ hTecEnc->loBuffer,
+ hTecEnc->hiTempEnv,
+ ScaleX2 );
+ }
+
+ FOR( j = 0; j < numberBands; j++ )
+ {
+ energyValuesSum[j] = 0;
+ move32();
+ energyValuesSumE[j] = 31;
+ move16();
+ FOR( k = 0; k < CLDFB_NO_COL_MAX; k++ )
+ {
+ nrg = L_shr_r( energyValues[k][j], sub( energyValuesSumE[j], 31 ) ); // Q(2*sf_Values - (energyValuesSumE[j]-31))
+ IF( LT_32( L_sub( maxWord32, nrg ), energyValuesSum[j] ) )
+ {
+ energyValuesSumE[j] = add( energyValuesSumE[j], 1 );
+ move16();
+ energyValuesSum[j] = L_shr_r( energyValuesSum[j], 1 );
+ move32();
+ nrg = L_shr_r( nrg, 1 );
+ }
+ energyValuesSum[j] = L_add( energyValuesSum[j], nrg );
+ move32();
+ }
+ test();
+ if ( j == 0 || GT_16( energyValuesSumE[j], *energyValuesSum_Exp ) )
+ {
+ *energyValuesSum_Exp = energyValuesSumE[j];
+ move16();
+ }
+ }
+ FOR( j = 0; j < numberBands; j++ )
+ {
+ energyValuesSum[j] = L_shr_r( energyValuesSum[j], sub( *energyValuesSum_Exp, energyValuesSumE[j] ) ); // Q(energyValuesSum_Exp - (2*sf_Values))
+ move32();
+ }
+ *energyValuesSum_Exp = sub( *energyValuesSum_Exp, shl( sf_Values, 1 ) );
+ move16();
+
+ IF( GT_16( numberBands, 20 ) )
+ {
+ numberBandsM = s_min( numberBands, 40 );
+ numberBandsM20 = sub( numberBandsM, 20 );
+
+ numberColsL = sub( numberCols, numLookahead );
+
+ /* sum up CLDFB energy above 8 kHz */
+ s = BASOP_util_norm_s_bands2shift( i_mult( numberColsL, numberBandsM20 ) );
+ s = sub( s, 4 );
+ nrg = 0;
+ move32();
+ FOR( k = 0; k < numberColsL; k++ )
+ {
+ FOR( j = 20; j < numberBandsM; j++ )
+ {
+ nrg = L_add_o( nrg, L_shr_o( energyValues[k][j], s, &Overflow ), &Overflow );
+ }
+ }
+
+ s = sub( sub( shl( sf_Values, 1 ), 1 ), s );
+ sm = sub( s_min( s, *sf_energyLookahead ), 1 );
+
+ *energyHF = L_add( L_shr( nrg, limitScale32( sub( s, sm ) ) ),
+ L_shr( *energyLookahead, sub( *sf_energyLookahead, sm ) ) ); // Q(31-(-nm))
+ move32();
+
+ *energyHF_Exp = negate( sm );
+ move16();
+
+ /* process look-ahead region */
+ s = BASOP_util_norm_s_bands2shift( i_mult( numLookahead, numberBandsM20 ) );
+ s = sub( s, 2 );
+ nrg = 0;
+ move32();
+ FOR( k = numberColsL; k < numberCols; k++ )
+ {
+ FOR( j = 20; j < numberBandsM; j++ )
+ {
+ nrg = L_add_o( nrg, L_shr_o( energyValues[k][j], s, &Overflow ), &Overflow );
+ }
+ }
+
+ s = sub( shl( sf_Values, 1 ), s );
+ sm = sub( s_min( s, 44 ), 1 );
+ BASOP_SATURATE_WARNING_OFF_EVS
+ /* nrg + 6.1e-5f => value 0x40000000, scale 44 */
+ *energyLookahead = L_add_sat( L_shr_sat( nrg, sub( s, sm ) ),
+ L_shr_sat( 0x40000000, s_max( -31, s_min( 31, sub( 44, sm ) ) ) ) );
+ move32();
+ BASOP_SATURATE_WARNING_ON_EVS
+ *sf_energyLookahead = sm;
+ move16();
+
+ return;
+ }
+
+
+ *energyHF = 0x40000000;
+ move32();
+ *energyHF_Exp = 17;
+ move16();
+}
+
void analysisCldfbEncoder_ivas_fx(
Encoder_State *st, /* i/o: encoder state structure */
@@ -1588,7 +1788,7 @@ void analysisCldfbEncoder_ivas_fx(
AnalysisPostSpectrumScaling_Fx( st->cldfbAnaEnc, ppBuf_Real, ppBuf_Imag, ppBuf_Real16, ppBuf_Imag16, &enerScale.lb_scale16 );
- GetEnergyCldfb( &st->energyCoreLookahead_Fx, &st->sf_energyCoreLookahead_Fx, 1, ppBuf_Real16, ppBuf_Imag16, enerScale.lb_scale16, st->cldfbAnaEnc->no_channels, st->cldfbAnaEnc->no_col, &st->currEnergyHF_fx, &st->currEnergyHF_e_fx, ppBuf_Ener, enerBuffSum_exp, st->hTECEnc );
+ GetEnergyCldfb_ivas_fx( &st->energyCoreLookahead_Fx, &st->sf_energyCoreLookahead_Fx, 1, ppBuf_Real16, ppBuf_Imag16, enerScale.lb_scale16, st->cldfbAnaEnc->no_channels, st->cldfbAnaEnc->no_col, &st->currEnergyHF_fx, &st->currEnergyHF_e_fx, ppBuf_Ener, enerBuffSum_exp, st->hTECEnc );
return;
}
diff --git a/lib_com/cng_exc_fx.c b/lib_com/cng_exc_fx.c
index b314357adee7954c8797853f405db0296b5df6ee..e335e943511d142b8a5a164981d00825edc9bb01 100644
--- a/lib_com/cng_exc_fx.c
+++ b/lib_com/cng_exc_fx.c
@@ -598,11 +598,6 @@ void cng_params_postupd_fx(
const Word16 *const cng_Qexc_buf, /* i : Q_exc buffer Q0 */
const Word32 *const cng_brate_buf, /* i : bit rate buffer Q0 */
Word32 ho_env_circ[] /* i/o: Envelope buffer Q6 */
-#ifdef IVAS_CODE_CNG_COM
- ,
- const Word16 element_mode, /* i : Element mode */
- const Word16 bwidth /* i : Audio bandwidth */
-#endif
)
{
Word16 i, j;
@@ -662,15 +657,6 @@ void cng_params_postupd_fx(
}
Copy32( sp, env, NUM_ENV_CNG );
-#ifdef IVAS_CODE_CNG_COM
- if ( element_mode == IVAS_SCE || element_mode == IVAS_CPE_DFT )
- {
- att = 0.0f;
- apply_scale( &att, bwidth, last_active_brate, scaleTableStereo, SIZE_SCALE_TABLE_STEREO );
- att = powf( 10, att / 10.0f );
- }
- else
-#endif
{
CNG_mode = get_cng_mode( last_active_brate );
@@ -860,11 +846,6 @@ void cng_params_upd_fx(
Word16 cng_Qexc_buf[], /* i/o: Q_exc buffer Q0 */
Word32 cng_brate_buf[], /* i/o: last_active_brate buffer Q0 */
const Word32 last_active_brate /* i : Last active bit rate Q0 */
-#ifdef IVAS_CODE_CNG_COM
- ,
- const Word16 element_mode, /* i : Element mode */
- const Word16 bwidth /* i : Audio bandwidth */
-#endif
)
{
Word32 L_ener, L_tmp;
@@ -986,15 +967,6 @@ void cng_params_upd_fx(
}
Copy32( sp, env, NUM_ENV_CNG );
-#ifdef IVAS_CODE_CNG_COM
- if ( element_mode == IVAS_SCE || element_mode == IVAS_CPE_DFT )
- {
- att = 0.0f;
- apply_scale( &att, bwidth, last_active_brate, scaleTableStereo, SIZE_SCALE_TABLE_STEREO );
- att = powf( 10, att / 10.0f );
- }
- else
-#endif
{
CNG_mode = get_cng_mode( last_active_brate );
/* att = 1/pow(2,ENR_ATT_fx[CNG_mode]); */
diff --git a/lib_com/cnst.h b/lib_com/cnst.h
index e7e511e0dce2cd1b8fa73bfda1f606c6f34b287a..2317dc95e4c0ccfdfa660c87d576fc7be3e32447 100644
--- a/lib_com/cnst.h
+++ b/lib_com/cnst.h
@@ -533,12 +533,15 @@ enum
IND_STEREO_ICBWE_MSFLAG,
IND_SHB_ENER_SF,
IND_SHB_RES_GS,
+#ifndef FIX_1486_IND_SHB_RES
IND_SHB_RES_GS1,
IND_SHB_RES_GS2,
IND_SHB_RES_GS3,
IND_SHB_RES_GS4,
- IND_SHB_RES_GS5,
IND_SHB_VF,
+#else
+ IND_SHB_VF = IND_SHB_RES_GS + 5,
+#endif
IND_SHB_LSF,
IND_SHB_MIRROR = IND_SHB_LSF + 5,
IND_SHB_GRID,
@@ -3074,13 +3077,8 @@ enum
#define SYNC_BAD_FRAME (UWord16) 0x6B20 /* synchronization word of a "bad" frame */
#define G192_BIN0 (UWord16) 0x007F /* binary "0" according to ITU-T G.192 */
#define G192_BIN1 (UWord16) 0x0081 /* binary "1" according to ITU-T G.192 */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#define DEGREE_180 (Word32)(180.0 *ONE_IN_Q22)
#define DEGREE_360 (Word32)(360.0 *ONE_IN_Q22)
-#else
-#define DEGREE_180 (Word32)(180.0 *ONE_IN_Q23)
-#define DEGREE_360 (Word32)(360.0 *ONE_IN_Q23)
-#endif
extern const Word16 Idx2Freq_Tbl[];
#define chk_fs(fs)
diff --git a/lib_com/codec_tcx_common.c b/lib_com/codec_tcx_common_fx.c
similarity index 81%
rename from lib_com/codec_tcx_common.c
rename to lib_com/codec_tcx_common_fx.c
index 1ebc2829c15493506950bd608ca397162826847c..52c7d0614ec4d935e71187ad9967a14eea1b6017 100644
--- a/lib_com/codec_tcx_common.c
+++ b/lib_com/codec_tcx_common_fx.c
@@ -469,140 +469,6 @@ void tcxInvertWindowGrouping(
}
}
-#ifdef IVAS_CODE_TCX_COM
-
-/*-------------------------------------------------------------------*
- * tcx5SpectrumInterleaving()
- *
- *
- *-------------------------------------------------------------------*/
-
-void tcx5SpectrumInterleaving(
- const int16_t tcx5Size,
- float *spectrum )
-{
- int16_t i;
- float interleaveBuf[N_TCX10_MAX];
-
- set_f( interleaveBuf, 0.0f, N_TCX10_MAX );
-
- /* group sub-windows: interleave bins according to their frequencies */
- for ( i = 0; i < tcx5Size; i++ )
- {
- interleaveBuf[2 * i] = spectrum[i];
- interleaveBuf[2 * i + 1] = spectrum[tcx5Size + i];
- }
-
- mvr2r( interleaveBuf, spectrum, 2 * tcx5Size );
-
- return;
-}
-
-
-/*-------------------------------------------------------------------*
- * tcx5SpectrumDeinterleaving()
- *
- *
- *-------------------------------------------------------------------*/
-
-void tcx5SpectrumDeinterleaving(
- const int16_t tcx5Size,
- float *spectrum )
-{
- int16_t i;
- float interleaveBuf[N_TCX10_MAX];
-
- set_f( interleaveBuf, 0.0f, N_TCX10_MAX );
-
- /* ungroup sub-windows: interleave bins according to their frequencies */
- for ( i = 0; i < tcx5Size; i++ )
- {
- interleaveBuf[i] = spectrum[2 * i];
- interleaveBuf[tcx5Size + i] = spectrum[2 * i + 1];
- }
-
- mvr2r( interleaveBuf, spectrum, 2 * tcx5Size );
-
- return;
-}
-
-
-/*-------------------------------------------------------------------*
- * tcx5TnsGrouping()
- *
- *
- *-------------------------------------------------------------------*/
-
-void tcx5TnsGrouping(
- const int16_t L_frame, /* i : frame length (TCX5) */
- const int16_t L_spec, /* i : coded spec length (TCX5, derived from filter borders*/
- float *spectrum )
-{
- /* rearrange LF sub-window lines prior to TNS synthesis filtering */
- if ( L_spec < L_frame )
- {
- mvr2r( spectrum + 8, spectrum + 16, L_spec - 8 );
- mvr2r( spectrum + L_frame, spectrum + 8, 8 );
- mvr2r( spectrum + L_frame + 8, spectrum + L_spec + 8, L_spec - 8 );
- }
- else
- {
- float buff[8]; /* Buffer for the rearrangement of LF TCX5 */
- mvr2r( spectrum + L_spec, buff, 8 );
- mvr2r( spectrum + 8, spectrum + 16, L_spec - 8 );
- mvr2r( buff, spectrum + 8, 8 );
- }
-
- return;
-}
-
-
-/*-------------------------------------------------------------------*
- * tcx5TnsUngrouping()
- *
- *
- *-------------------------------------------------------------------*/
-
-void tcx5TnsUngrouping(
- const int16_t L_frame, /* i : frame length (TCX5) */
- const int16_t L_spec, /* i : coded spec length (TCX5, derived from filter borders*/
- float *spectrum,
- const int16_t enc_dec /* i : 0: encoder, else decoder */
-)
-{
- /* undo rearrangement of LF sub-window lines prior to TNS analysis */
- if ( L_spec < L_frame )
- {
- mvr2r( spectrum + L_spec + 8, spectrum + L_frame + 8, L_spec - 8 );
- mvr2r( spectrum + 8, spectrum + L_frame, 8 );
- mvr2r( spectrum + 16, spectrum + 8, L_spec - 8 );
- set_zero( spectrum + L_spec, L_frame - L_spec );
- set_zero( spectrum + L_frame + L_spec, L_frame - L_spec );
- }
- else
- {
- float buff[8]; /* Buffer for the rearrangement of LF TCX5 */
-
- mvr2r( spectrum + 8, buff, 8 );
-
- if ( enc_dec == ENC )
- {
- mvr2r( spectrum + 16, spectrum + 8, L_frame - 8 );
- mvr2r( buff, spectrum + L_frame, 8 );
- }
- else
- {
- mvr2r( spectrum + 16, spectrum + 8, L_spec - 8 );
- mvr2r( buff, spectrum + L_spec, 8 );
- }
- }
-
- return;
-}
-
-#endif
-
-
/*-------------------------------------------------------------------*
* tcx5SpectrumInterleaving()
*
diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h
index 3200cb21d4929ea492d2c18741d1af3c36e96296..175b23c3b08a1fe3e78a9479ca3d0ec706815065 100644
--- a/lib_com/common_api_types.h
+++ b/lib_com/common_api_types.h
@@ -182,6 +182,9 @@ typedef struct TDREND_HRFILT_FiltSet_struct *IVAS_DEC_HRTF_HANDLE;
typedef struct ivas_hrtfs_crend_structure *IVAS_DEC_HRTF_CREND_HANDLE;
typedef struct ivas_hrtfs_fastconv_struct *IVAS_DEC_HRTF_FASTCONV_HANDLE;
typedef struct ivas_hrtfs_parambin_struct *IVAS_DEC_HRTF_PARAMBIN_HANDLE;
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+typedef struct ivas_hrtfs_statistics_struct *IVAS_DEC_HRTF_STATISTICS_HANDLE;
+#endif
typedef struct cldfb_filter_bank_struct *IVAS_CLDFB_FILTER_BANK_HANDLE;
typedef struct ivas_LS_setup_custom *IVAS_LSSETUP_CUSTOM_HANDLE;
@@ -216,7 +219,6 @@ typedef struct _IVAS_JBM_TRACE_DATA
} IVAS_JBM_TRACE_DATA;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*----------------------------------------------------------------------------------*
* Split rendering API constants, structures, and enums
*----------------------------------------------------------------------------------*/
@@ -273,38 +275,31 @@ typedef struct _ISAR_SPLIT_REND_BITS_DATA
int16_t codec_frame_size_ms;
ISAR_SPLIT_REND_CODEC codec;
ISAR_SPLIT_REND_POSE_CORRECTION_MODE pose_correction;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int16_t isar_frame_size_ms;
int16_t lc3plus_highres;
-#endif
} ISAR_SPLIT_REND_BITS_DATA, *ISAR_SPLIT_REND_BITS_HANDLE;
typedef struct _ISAR_SPLIT_REND_CONFIG
{
- int32_t splitRendBitRate; /*Bit rate for split rendering mode, if "pcm_out" is set then "splitRendBitRate" is used as a limit for MD bitrate */
- int16_t hq_mode; /*High quality 3DOF mode with additional side information. Requires more pre-renditions. */
- int16_t dof; /*flag to specify if pose correction is needed for 1, 2 or 3 degree of freedoms*/
- /*The axis can be set dynamically per frame based on a file input */
- /*possible values:
- 1 - (1dof correction. By default YAW correction)
- 2 - (2dof correction. By default YAW and PITCH correction)
- 3 - (3dof correction. By default YAW, PITCH and ROLL correction)
- */
- int16_t codec_delay_ms; /*PLACEHOLDER (currently being ignored) : look ahead delay of the codec that is used to code BIN signal output of pre-renderer*/
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- int16_t isar_frame_size_ms; /* ISAR bit stream frame size in milliseconds */
-#endif
+ int32_t splitRendBitRate; /*Bit rate for split rendering mode, if "pcm_out" is set then "splitRendBitRate" is used as a limit for MD bitrate */
+ int16_t hq_mode; /*High quality 3DOF mode with additional side information. Requires more pre-renditions. */
+ int16_t dof; /*flag to specify if pose correction is needed for 1, 2 or 3 degree of freedoms*/
+ /*The axis can be set dynamically per frame based on a file input */
+ /*possible values:
+ 1 - (1dof correction. By default YAW correction)
+ 2 - (2dof correction. By default YAW and PITCH correction)
+ 3 - (3dof correction. By default YAW, PITCH and ROLL correction)
+ */
+ int16_t codec_delay_ms; /*PLACEHOLDER (currently being ignored) : look ahead delay of the codec that is used to code BIN signal output of pre-renderer*/
+ int16_t isar_frame_size_ms; /* ISAR bit stream frame size in milliseconds */
int16_t codec_frame_size_ms; /* Codec frame size in milliseconds, only relevant with LC3plus */
ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode;
ISAR_SPLIT_REND_CODEC codec;
ISAR_SPLIT_REND_RENDERER_SELECTION rendererSelection;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int16_t lc3plus_highres;
-#endif
} ISAR_SPLIT_REND_CONFIG_DATA, *ISAR_SPLIT_REND_CONFIG_HANDLE;
-#endif
/*----------------------------------------------------------------------------------*
* Renderer API structures and enums
@@ -351,9 +346,7 @@ typedef struct _IVAS_RENDER_CONFIG
IVAS_RENDER_TYPE_OVERRIDE renderer_type_override;
#endif
IVAS_ROOM_ACOUSTICS_CONFIG_DATA roomAcoustics;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ISAR_SPLIT_REND_CONFIG_DATA split_rend_config;
-#endif
float directivity[IVAS_MAX_NUM_OBJECTS * 3];
Word16 directivity_fx[IVAS_MAX_NUM_OBJECTS * 3]; // has the following q-factor pattern: {6, 6, 15, 6, 6, 15, 6, 6, 15, 6, 6, 15}
} IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE;
@@ -362,9 +355,7 @@ typedef struct
{
int16_t numSamplesPerChannel;
int16_t numChannels;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
int16_t is_cldfb;
-#endif
} IVAS_REND_AudioBufferConfig;
typedef struct
diff --git a/lib_com/core_com_config.c b/lib_com/core_com_config_fx.c
similarity index 96%
rename from lib_com/core_com_config.c
rename to lib_com/core_com_config_fx.c
index f0ee8efd8d12c038c78487a8f39ba71dc21a3b9c..152870be74c567dab70a0d331ddc6401f123d394 100644
--- a/lib_com/core_com_config.c
+++ b/lib_com/core_com_config_fx.c
@@ -246,67 +246,18 @@ Word16 getTcxonly_ivas_fx(
}
Word16 getTcxonly(
-#ifdef IVAS_CODE_SWITCHING
- const Word16 element_mode, /* i : IVAS element mode */
-#endif
const Word32 total_brate /* i : total bitrate */
-#ifdef IVAS_CODE_SWITCHING
- ,
- const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0)*/
- const int16_t is_ism_format /* i : flag indicating ISM format */
-#endif
)
{
Word16 tcxonly;
tcxonly = 0;
move16();
-#ifdef IVAS_CODE_SWITCHING
- SWITCH( element_mode )
+ if ( GT_32( total_brate, 32000 ) )
{
- case EVS_MONO:
-#endif
- if ( GT_32( total_brate, 32000 ) )
- {
- tcxonly = 1;
- move16();
- }
-#ifdef IVAS_CODE_SWITCHING
- break;
- case IVAS_SCE:
- if ( is_ism_format )
- {
- if ( total_brate > MAX_ACELP_BRATE_ISM )
- {
- tcxonly = 1;
- }
- }
- else
- {
- if ( total_brate > MAX_ACELP_BRATE )
- {
- tcxonly = 1;
- }
- }
- break;
-
- case IVAS_CPE_DFT:
- case IVAS_CPE_TD:
- if ( total_brate > MAX_ACELP_BRATE )
- {
- tcxonly = 1;
- }
- break;
- case IVAS_CPE_MDCT:
- if ( total_brate >= ( MCT_flag ? IVAS_32k : IVAS_48k ) )
- {
- tcxonly = 1;
- }
- break;
-#endif
-#ifdef IVAS_CODE_SWITCHING
+ tcxonly = 1;
+ move16();
}
-#endif
return tcxonly; /*Q0*/
}
@@ -541,12 +492,12 @@ Word16 sr2fscale_fx(
return extract_l( Mpy_32_16_1( sr_core, FSCALE_DENOM_BY_12800_Q15 ) ); /*Q0*/
}
-int16_t sr2fscale(
- const int32_t sr_core /* i : internal sampling rate */
+Word16 sr2fscale(
+ const Word32 sr_core /* i : internal sampling rate */
)
{
- return (int16_t) ( ( FSCALE_DENOM * sr_core ) / 12800 );
+ return (Word16) ( ( FSCALE_DENOM * sr_core ) / 12800 );
}
Word32 getCoreSamplerateMode2(
diff --git a/lib_com/deemph.c b/lib_com/deemph_fx.c
similarity index 100%
rename from lib_com/deemph.c
rename to lib_com/deemph_fx.c
diff --git a/lib_com/delay_comp.c b/lib_com/delay_comp_fx.c
similarity index 97%
rename from lib_com/delay_comp.c
rename to lib_com/delay_comp_fx.c
index 0398eb671a638c4c81a91908908983e17b8cbced..7bc574c3c846ed36d8d88c4a14872456095219b7 100644
--- a/lib_com/delay_comp.c
+++ b/lib_com/delay_comp_fx.c
@@ -52,10 +52,8 @@ Word32 get_delay_fx( /* o : delay value in ms
const Word32 io_fs, /* i : input/output sampling frequency Q0*/
const IVAS_FORMAT ivas_format, /* i : IVAS format */
HANDLE_CLDFB_FILTER_BANK hCldfb /* i : Handle of Cldfb analysis */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
,
const AUDIO_CONFIG output_config /* i : decoder output config */
-#endif
)
{
Word32 delay; /*Q0*/
@@ -107,19 +105,15 @@ Word32 get_delay_fx( /* o : delay value in ms
delay = IVAS_DEC_DELAY_NS; /*Q0*/
move32();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( NE_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) )
{
-#endif
if ( hCldfb != NULL )
{
/* compensate for filterbank delay */
delay = L_add( delay, IVAS_FB_DEC_DELAY_NS ); /*Q0*/
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
test();
if ( EQ_16( ivas_format, MASA_FORMAT ) || EQ_16( ivas_format, MASA_ISM_FORMAT ) )
{
diff --git a/lib_com/enr_1_az.c b/lib_com/enr_1_az_fx.c
similarity index 100%
rename from lib_com/enr_1_az.c
rename to lib_com/enr_1_az_fx.c
diff --git a/lib_com/env_adj.c b/lib_com/env_adj_fx.c
similarity index 100%
rename from lib_com/env_adj.c
rename to lib_com/env_adj_fx.c
diff --git a/lib_com/env_stab.c b/lib_com/env_stab_fx.c
similarity index 100%
rename from lib_com/env_stab.c
rename to lib_com/env_stab_fx.c
diff --git a/lib_com/env_stab_trans.c b/lib_com/env_stab_trans_fx.c
similarity index 100%
rename from lib_com/env_stab_trans.c
rename to lib_com/env_stab_trans_fx.c
diff --git a/lib_com/fd_cng_com_fx.c b/lib_com/fd_cng_com_fx.c
index 78809ed2c6a0dd5a4ca9ba595896388b03106c75..2079257245fac4fa09babd2a22c751b868d0c2c7 100644
--- a/lib_com/fd_cng_com_fx.c
+++ b/lib_com/fd_cng_com_fx.c
@@ -120,6 +120,8 @@ void ivas_initFdCngCom_fx( HANDLE_FD_CNG_COM hFdCngCom, Word16 scale )
move16();
hFdCngCom->CngBitrate = -1;
move16();
+ hFdCngCom->olapBufferSynth_exp = 0;
+ move16();
/* Initialize noise estimation algorithm */
set32_fx( hFdCngCom->periodog, 0, PERIODOGLEN );
@@ -1109,12 +1111,6 @@ void minimum_statistics(
move16();
}
}
-#ifdef IVAS_CODE_CNG_COM
- if ( enc_dec == DEC && element_mode == IVAS_CPE_TD )
- {
- v_multc( msNoiseEst, 1.4125f, msNoiseEst, NPART_SHAPING );
- }
-#endif
/* Collect buffers */
Copy( msPeriodog, msPeriodogBuf + len * ( *msPeriodogBufPtr ), len );
@@ -2624,18 +2620,6 @@ void SynthesisSTFT(
move16();
}
/* Generate excitation */
-#ifdef IVAS_CODE_CNG_COM
- PME()
- if ( ( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT ) && nchan_out == 2 )
- {
- for ( i = 0; i < hFdCngCom->frameSize / 2; i++ )
- {
- buf[i + ( M + 1 )] += olapBuffer[i + hFdCngCom->frameSize / 4];
- }
- v_multc( buf, (float) ( hFdCngCom->fftlen / 2 ), buf, M + 1 + hFdCngCom->frameSize );
- }
- else
-#endif
{
FOR( i = 0; i < M + 1 + hFdCngCom->frameSize; i++ )
{
@@ -2671,9 +2655,10 @@ void SynthesisSTFT_ivas_fx(
const Word16 nchan_out /* i : number of output channels */
)
{
- Word16 i, len, scale, tmp;
+ Word16 i, len, scale, tmp, sft, exp, tmp1;
Word16 len2, len3, len4;
Word16 buf[M + 1 + L_FRAME16k];
+ Word32 L_olapBuffer[FFTLEN];
/* Perform IFFT */
@@ -2684,6 +2669,12 @@ void SynthesisSTFT_ivas_fx(
hFdCngCom->fftBuffer_exp = fftBufferExp;
move16();
+ sft = getScaleFactor32( fftBuffer, hFdCngCom->fftlen );
+ scale_sig32( fftBuffer, hFdCngCom->fftlen, sft );
+ fftBufferExp = sub( fftBufferExp, sft );
+ hFdCngCom->fftBuffer_exp = fftBufferExp;
+ move16();
+
fftBufferExp = add( fftBufferExp, hFdCngCom->fftlenShift );
/* Perform overlap-add */
@@ -2697,48 +2688,58 @@ void SynthesisSTFT_ivas_fx(
}
ELSE
{
- Copy( olapBuffer + hFdCngCom->frameSize, olapBuffer, hFdCngCom->frameSize );
+ Copy_Scale_sig_16_32_no_sat( olapBuffer + hFdCngCom->frameSize, L_olapBuffer, hFdCngCom->frameSize, add( sub( hFdCngCom->olapBufferSynth_exp, sub( 15, hFdCngCom->fftlenShift ) ), 16 ) ); /* exp: hFdCngCom->olapBufferSynth_exp -> (15 - fftlenShift) */
set16_fx( olapBuffer + hFdCngCom->frameSize, 0, hFdCngCom->frameSize );
}
len2 = shr( hFdCngCom->fftlen, 2 );
len4 = shr( hFdCngCom->fftlen, 3 );
len3 = add( len2, len4 );
len = add( hFdCngCom->frameSize, len4 );
+ tmp1 = sub( fftBufferExp, 15 );
IF( tcx_transition )
{
FOR( i = 0; i < len; i++ )
{
- olapBuffer[i] = round_fx_sat( L_shl_sat( fftBuffer[i], fftBufferExp - 15 ) ); // Q(15 - fftBufferExp)
- move16();
+ L_olapBuffer[i] = L_shl_sat( fftBuffer[i], tmp1 ); /* Q(31 - (15 - fftlenShift) ) */
+ move32();
}
}
ELSE
{
FOR( i = 0; i < len4; i++ )
{
- olapBuffer[i + 1 * len4] = add_sat( olapBuffer[i + 1 * len4], mult_r( round_fx_sat( L_shl_sat( fftBuffer[i + 1 * len4], fftBufferExp - 15 ) ), olapWin[i].v.im ) );
- move16();
- olapBuffer[i + 2 * len4] = add_sat( olapBuffer[i + 2 * len4], mult_r( round_fx_sat( L_shl_sat( fftBuffer[i + 2 * len4], fftBufferExp - 15 ) ), olapWin[len4 - 1 - i].v.re ) );
- move16();
+ L_olapBuffer[i + 1 * len4] = Madd_32_16( L_olapBuffer[i + 1 * len4], L_shl_sat( fftBuffer[i + 1 * len4], tmp1 ), olapWin[i].v.im ); /* Q(31 - (15 - fftlenShift) ) */
+ move32();
+ L_olapBuffer[i + 2 * len4] = Madd_32_16( L_olapBuffer[i + 2 * len4], L_shl_sat( fftBuffer[i + 2 * len4], tmp1 ), olapWin[len4 - 1 - i].v.re ); /* Q(31 - (15 - fftlenShift) ) */
+ move32();
}
FOR( i = len3; i < len; i++ )
{
- olapBuffer[i] = round_fx_sat( L_shl_sat( fftBuffer[i], fftBufferExp - 15 ) );
+ L_olapBuffer[i] = L_shl_sat( fftBuffer[i], tmp1 ); /* Q(31 - (15 - fftlenShift) ) */
+ move32();
}
}
FOR( i = 0; i < len4; i++ )
{
- olapBuffer[i + 5 * len4] = mult_r( round_fx_sat( L_shl_sat( fftBuffer[i + 5 * len4], fftBufferExp - 15 ) ), olapWin[i].v.re );
- move16();
- olapBuffer[i + 6 * len4] = mult_r( round_fx_sat( L_shl_sat( fftBuffer[i + 6 * len4], fftBufferExp - 15 ) ), olapWin[len4 - 1 - i].v.im );
- move16();
+ L_olapBuffer[i + 5 * len4] = Mpy_32_16_1( L_shl_sat( fftBuffer[i + 5 * len4], tmp1 ), olapWin[i].v.re ); /* Q(31 - (15 - fftlenShift) ) */
+ move32();
+ L_olapBuffer[i + 6 * len4] = Mpy_32_16_1( L_shl_sat( fftBuffer[i + 6 * len4], tmp1 ), olapWin[len4 - 1 - i].v.im ); /* Q(31 - (15 - fftlenShift) ) */
+ move32();
}
len = add( len, len2 );
FOR( i = len; i < hFdCngCom->fftlen; i++ )
{
- olapBuffer[i] = 0;
+ L_olapBuffer[i] = 0;
+ move32();
+ }
+
+ sft = L_norm_arr( L_olapBuffer, hFdCngCom->fftlen );
+ IF( NE_16( sft, 31 ) )
+ {
+ Copy_Scale_sig32_16( L_olapBuffer, olapBuffer, hFdCngCom->fftlen, sft );
+ hFdCngCom->olapBufferSynth_exp = sub( sub( 15, hFdCngCom->fftlenShift ), sft );
move16();
}
@@ -2749,112 +2750,31 @@ void SynthesisSTFT_ivas_fx(
move16();
}
/* Generate excitation */
-#ifdef IVAS_CODE_CNG_COM
- PME()
- if ( ( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT ) && nchan_out == 2 )
- {
- for ( i = 0; i < hFdCngCom->frameSize / 2; i++ )
- {
- buf[i + ( M + 1 )] += olapBuffer[i + hFdCngCom->frameSize / 4];
- }
- v_multc( buf, (float) ( hFdCngCom->fftlen / 2 ), buf, M + 1 + hFdCngCom->frameSize );
- }
- else
-#endif
{
FOR( i = 0; i < M + 1 + hFdCngCom->frameSize; i++ )
{
buf[i] = mult_r( olapBuffer[i + len4 - M - 1], hFdCngCom->fftlenFac );
move16();
}
+ exp = add( hFdCngCom->olapBufferSynth_exp, hFdCngCom->fftlenShift );
tmp = buf[0];
}
IF( EQ_16( gen_exc, 1 ) )
{
- Word16 s = getScaleFactor16( buf + 1, M + hFdCngCom->frameSize );
- if ( GT_16( *Q_new, s ) )
- {
- *Q_new = s;
- move16();
- }
-
- E_UTIL_f_preemph2( *Q_new - 1, buf + 1, PREEMPH_FAC, M + hFdCngCom->frameSize, &tmp );
- Residu3_fx( hFdCngCom->A_cng, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize, 1 );
+ E_UTIL_f_preemph2( 0, buf + 1, PREEMPH_FAC, add( M, hFdCngCom->frameSize ), &tmp );
+ Residu3_fx( hFdCngCom->A_cng, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize, 0 );
+ *Q_new = sub( 15, exp );
+ move16();
}
IF( EQ_16( gen_exc, 2 ) )
{
- *Q_new = E_UTIL_f_preemph3( buf + 1, PREEMPH_FAC, M + hFdCngCom->frameSize, &tmp, 1 );
- Residu3_fx( hFdCngCom->A_cng, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize, 1 );
- }
-}
-
-#ifdef IVAS_CODE_CNG_COM
-/*-------------------------------------------------------------------
- * SynthesisSTFT_dirac()
- *
- * STFT synthesis filterbank
- *-------------------------------------------------------------------*/
-
-void SynthesisSTFT_dirac(
- float *fftBuffer, /* i : FFT bins */
- float *timeDomainOutput,
- float *olapBuffer,
- const float *olapWin,
- const int16_t samples_out,
- HANDLE_FD_CNG_COM hFdCngCom /* i/o: FD_CNG structure containing all buffers and variables */
-)
-{
- int16_t i;
- float buf[M + 1 + 320], tmp;
-
- /* Perform IFFT */
- RFFTN( fftBuffer, hFdCngCom->fftSineTab, hFdCngCom->fftlen, 1 );
-
- /* Handle overlap in P/S domain for stereo */
- mvr2r( olapBuffer + hFdCngCom->frameSize, olapBuffer, hFdCngCom->frameSize );
- set_f( olapBuffer + hFdCngCom->frameSize, 0.0f, hFdCngCom->frameSize ); /*olapBuffer, fftBuffer, olapWin*/
-
- for ( i = hFdCngCom->frameSize / 4; i < 3 * hFdCngCom->frameSize / 4; i++ )
- {
- olapBuffer[i] += fftBuffer[i] * olapWin[i - hFdCngCom->frameSize / 4];
- }
- for ( ; i < 5 * hFdCngCom->frameSize / 4; i++ )
- {
- olapBuffer[i] = fftBuffer[i];
- }
-
- for ( ; i < 7 * hFdCngCom->frameSize / 4; i++ )
- {
- olapBuffer[i] = fftBuffer[i];
- }
-
- for ( ; i < hFdCngCom->fftlen; i++ )
- {
- olapBuffer[i] = 0;
- }
-
- /* Get time-domain signal */
- v_multc( olapBuffer + hFdCngCom->frameSize / 4, (float) ( hFdCngCom->fftlen / 2 ), timeDomainOutput, samples_out );
-
- /* Get excitation */
- v_multc( olapBuffer + hFdCngCom->frameSize / 4 - ( M + 1 ), (float) ( hFdCngCom->fftlen / 2 ), buf, M + 1 + hFdCngCom->frameSize );
- tmp = buf[0];
- preemph( buf + 1, PREEMPH_FAC, M + hFdCngCom->frameSize, &tmp );
- residu( hFdCngCom->A_cng, M, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize );
-
- /* update and window olapBuf if we have a output frame that is shorter than the default frame size...*/
- if ( samples_out < hFdCngCom->frameSize )
- {
- mvr2r( olapBuffer + samples_out, olapBuffer + hFdCngCom->frameSize, 3 * hFdCngCom->frameSize / 4 );
- }
- for ( i = 5 * hFdCngCom->frameSize / 4; i < 7 * hFdCngCom->frameSize / 4; i++ )
- {
- olapBuffer[i] *= olapWin[i - 3 * hFdCngCom->frameSize / 4];
+ *Q_new = E_UTIL_f_preemph3( buf + 1, PREEMPH_FAC, add( M, hFdCngCom->frameSize ), &tmp, 0 );
+ move16();
+ Residu3_fx( hFdCngCom->A_cng, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize, negate( *Q_new ) );
+ *Q_new = sub( 15, exp );
+ move16();
}
-
- return;
}
-#endif
/**************************************************************************************
* Compute some values used in the bias correction of the minimum statistics algorithm *
diff --git a/lib_com/fft.c b/lib_com/fft.c
deleted file mode 100644
index e262f3909f179ea67b91c160866b1f62cd2b411a..0000000000000000000000000000000000000000
--- a/lib_com/fft.c
+++ /dev/null
@@ -1,366 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include
-#include "options.h"
-#include
-#include "cnst.h"
-#include "prot_fx.h"
-#include "rom_com.h"
-#include "wmc_auto.h"
-
-#ifdef _MSC_VER
-#pragma warning( disable : 4310 )
-#endif
-
-/*-----------------------------------------------------------------*
- * Low-complexity implementation of FFT
- *-----------------------------------------------------------------*/
-
-#define WMC_TOOL_SKIP
-
-#define SHC( x ) ( (Word16) x )
-#define FFTC( x ) WORD322WORD16( (Word32) x )
-
-#define C81_FX ( FFTC( 0x5a82799a ) ) /* FL2WORD32( 7.071067811865475e-1) */
-#define C82_FX ( FFTC( 0xa57d8666 ) ) /* FL2WORD32(-7.071067811865475e-1) */
-
-#define cplxMpy4_8_0( re, im, a, b, c, d ) \
- re = L_shr( L_sub( Mpy_32_16_1( a, c ), Mpy_32_16_1( b, d ) ), 1 ); \
- im = L_shr( L_add( Mpy_32_16_1( a, d ), Mpy_32_16_1( b, c ) ), 1 );
-
-#define cplxMpy4_8_1( re, im, a, b ) \
- re = L_shr( a, 1 ); \
- im = L_shr( b, 1 );
-
-
-/**
- * \brief Twiddle factors are unscaled
- */
-/*-----------------------------------------------------------------*
- * BASOP_fft8()
- *
- * Function performs a complex 8-point FFT
- * The FFT is performed inplace. The result of the FFT
- * is scaled by SCALEFACTOR8 bits.
- *
- * WOPS with 32x16 bit multiplications: 108 cycles
- *-----------------------------------------------------------------*/
-
-static void BASOP_fft8(
- Word32 *re,
- Word32 *im,
- Word16 s )
-{
- Word32 x00, x01, x02, x03, x04, x05, x06, x07;
- Word32 x08, x09, x10, x11, x12, x13, x14, x15;
- Word32 t00, t01, t02, t03, t04, t05, t06, t07;
- Word32 t08, t09, t10, t11, t12, t13, t14, t15;
- Word32 s00, s01, s02, s03, s04, s05, s06, s07;
- Word32 s08, s09, s10, s11, s12, s13, s14, s15;
-
-
- /* Pre-additions */
-
- x00 = L_shr( re[s * 0], SCALEFACTOR8 );
- x01 = L_shr( im[s * 0], SCALEFACTOR8 );
- x02 = L_shr( re[s * 1], SCALEFACTOR8 );
- x03 = L_shr( im[s * 1], SCALEFACTOR8 );
- x04 = L_shr( re[s * 2], SCALEFACTOR8 );
- x05 = L_shr( im[s * 2], SCALEFACTOR8 );
- x06 = L_shr( re[s * 3], SCALEFACTOR8 );
- x07 = L_shr( im[s * 3], SCALEFACTOR8 );
- x08 = L_shr( re[s * 4], SCALEFACTOR8 );
- x09 = L_shr( im[s * 4], SCALEFACTOR8 );
- x10 = L_shr( re[s * 5], SCALEFACTOR8 );
- x11 = L_shr( im[s * 5], SCALEFACTOR8 );
- x12 = L_shr( re[s * 6], SCALEFACTOR8 );
- x13 = L_shr( im[s * 6], SCALEFACTOR8 );
- x14 = L_shr( re[s * 7], SCALEFACTOR8 );
- x15 = L_shr( im[s * 7], SCALEFACTOR8 );
-
- t00 = L_add( x00, x08 );
- t02 = L_sub( x00, x08 );
- t01 = L_add( x01, x09 );
- t03 = L_sub( x01, x09 );
- t04 = L_add( x02, x10 );
- t06 = L_sub( x02, x10 );
- t05 = L_add( x03, x11 );
- t07 = L_sub( x03, x11 );
- t08 = L_add( x04, x12 );
- t10 = L_sub( x04, x12 );
- t09 = L_add( x05, x13 );
- t11 = L_sub( x05, x13 );
- t12 = L_add( x06, x14 );
- t14 = L_sub( x06, x14 );
- t13 = L_add( x07, x15 );
- t15 = L_sub( x07, x15 );
-
- /* Pre-additions and core multiplications */
-
- s00 = L_add( t00, t08 );
- s04 = L_sub( t00, t08 );
- s01 = L_add( t01, t09 );
- s05 = L_sub( t01, t09 );
- s08 = L_sub( t02, t11 );
- s10 = L_add( t02, t11 );
- s09 = L_add( t03, t10 );
- s11 = L_sub( t03, t10 );
- s02 = L_add( t04, t12 );
- s07 = L_sub( t04, t12 );
- s03 = L_add( t05, t13 );
- s06 = L_sub( t13, t05 );
-
- t01 = L_add( t06, t14 );
- t02 = L_sub( t06, t14 );
- t00 = L_add( t07, t15 );
- t03 = L_sub( t07, t15 );
-
- s12 = Mpy_32_16_1( L_add( t00, t02 ), C81_FX );
- s14 = Mpy_32_16_1( L_sub( t00, t02 ), C81_FX );
- s13 = Mpy_32_16_1( L_sub( t03, t01 ), C81_FX );
- s15 = Mpy_32_16_1( L_add( t01, t03 ), C82_FX );
-
- /* Post-additions */
-
- re[s * 0] = L_add( s00, s02 );
- move32();
- re[s * 4] = L_sub( s00, s02 );
- move32();
- im[s * 0] = L_add( s01, s03 );
- move32();
- im[s * 4] = L_sub( s01, s03 );
- move32();
- re[s * 2] = L_sub( s04, s06 );
- move32();
- re[s * 6] = L_add( s04, s06 );
- move32();
- im[s * 2] = L_sub( s05, s07 );
- move32();
- im[s * 6] = L_add( s05, s07 );
- move32();
- re[i_mult( s, 3 )] = L_add( s08, s14 );
- move32();
- re[i_mult( s, 7 )] = L_sub( s08, s14 );
- move32();
- im[i_mult( s, 3 )] = L_add( s09, s15 );
- move32();
- im[i_mult( s, 7 )] = L_sub( s09, s15 );
- move32();
- re[s * 1] = L_add( s10, s12 );
- move32();
- re[i_mult( s, 5 )] = L_sub( s10, s12 );
- move32();
- im[s * 1] = L_add( s11, s13 );
- move32();
- im[i_mult( s, 5 )] = L_sub( s11, s13 );
- move32();
-
- return;
-}
-
-
-/*-----------------------------------------------------------------*
- * fftN2()
- *
- * Combined FFT
- *-----------------------------------------------------------------*/
-
-static void BASOP_fftN2(
- Word32 *re, /* i/o: real part */
- Word32 *im, /* i/o: imag part */
- const Word16 *W, /* i : rotation factor */
- Word16 dim1, /* i : length of fft1 */
- Word16 dim2, /* i : length of fft2 */
- Word16 sx, /* i : stride real and imag part */
- Word16 sc, /* i : stride phase rotation coefficients */
- Word32 *x, /* tmp: 32-bit workbuffer */
- Word16 Woff /* i : offset for addressing the rotation vector table */
-)
-{
- Word16 i, j;
- Word32 x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, x10, x11, x12, x13, x14, x15;
- Word32 t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t12, t13, t14, t15;
- Word32 s00, s01, s02, s03, s04, s05, s06, s07, s08, s09, s10, s11, s12, s13, s14, s15;
-
- FOR( i = 0; i < dim2; i++ )
- {
- FOR( j = 0; j < dim1; j++ )
- {
- x[2 * i * dim1 + 2 * j] = re[sx * i + sx * j * dim2];
- move32();
- x[2 * i * dim1 + 2 * j + 1] = im[sx * i + sx * j * dim2];
- move32();
- }
- }
-
- /* dim1 == 8 */
- FOR( i = 0; i < dim2; i++ )
- {
- BASOP_fft8( &x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2 );
- }
-
- /* dim2 == 8 */
- FOR( i = 0; i < dim1; i++ )
- {
- cplxMpy4_8_1( x00, x01, x[2 * i + 2 * 0 * dim1], x[2 * i + 2 * 0 * dim1 + 1] );
-
- IF( i == 0 )
- {
- cplxMpy4_8_1( x02, x03, x[add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) ), 1 )] );
- cplxMpy4_8_1( x04, x05, x[add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) ), 1 )] );
- cplxMpy4_8_1( x06, x07, x[add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) ), 1 )] );
- cplxMpy4_8_1( x08, x09, x[add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) ), 1 )] );
- cplxMpy4_8_1( x10, x11, x[add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) ), 1 )] );
- cplxMpy4_8_1( x12, x13, x[add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) ), 1 )] );
- cplxMpy4_8_1( x14, x15, x[add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) ), 1 )] );
- }
- ELSE
- {
- cplxMpy4_8_0( x02, x03, x[add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 1, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 1, dim1 ) ) ), 1 ), Woff )] );
- cplxMpy4_8_0( x04, x05, x[add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 2, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 2, dim1 ) ) ), 1 ), Woff )] );
- cplxMpy4_8_0( x06, x07, x[add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 3, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 3, dim1 ) ) ), 1 ), Woff )] );
- cplxMpy4_8_0( x08, x09, x[add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 4, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 4, dim1 ) ) ), 1 ), Woff )] );
- cplxMpy4_8_0( x10, x11, x[add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 5, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 5, dim1 ) ) ), 1 ), Woff )] );
- cplxMpy4_8_0( x12, x13, x[add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 6, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 6, dim1 ) ) ), 1 ), Woff )] );
- cplxMpy4_8_0( x14, x15, x[add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 7, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 7, dim1 ) ) ), 1 ), Woff )] );
- }
- t00 = L_shr( L_add( x00, x08 ), SCALEFACTORN2 - 1 );
- t02 = L_shr( L_sub( x00, x08 ), SCALEFACTORN2 - 1 );
- t01 = L_shr( L_add( x01, x09 ), SCALEFACTORN2 - 1 );
- t03 = L_shr( L_sub( x01, x09 ), SCALEFACTORN2 - 1 );
- t04 = L_shr( L_add( x02, x10 ), SCALEFACTORN2 - 1 );
- t06 = L_sub( x02, x10 );
- t05 = L_shr( L_add( x03, x11 ), SCALEFACTORN2 - 1 );
- t07 = L_sub( x03, x11 );
- t08 = L_shr( L_add( x04, x12 ), SCALEFACTORN2 - 1 );
- t10 = L_shr( L_sub( x04, x12 ), SCALEFACTORN2 - 1 );
- t09 = L_shr( L_add( x05, x13 ), SCALEFACTORN2 - 1 );
- t11 = L_shr( L_sub( x05, x13 ), SCALEFACTORN2 - 1 );
- t12 = L_shr( L_add( x06, x14 ), SCALEFACTORN2 - 1 );
- t14 = L_sub( x06, x14 );
- t13 = L_shr( L_add( x07, x15 ), SCALEFACTORN2 - 1 );
- t15 = L_sub( x07, x15 );
-
- s00 = L_add( t00, t08 );
- s04 = L_sub( t00, t08 );
- s01 = L_add( t01, t09 );
- s05 = L_sub( t01, t09 );
- s08 = L_sub( t02, t11 );
- s10 = L_add( t02, t11 );
- s09 = L_add( t03, t10 );
- s11 = L_sub( t03, t10 );
- s02 = L_add( t04, t12 );
- s07 = L_sub( t04, t12 );
- s03 = L_add( t05, t13 );
- s06 = L_sub( t13, t05 );
-
- t01 = L_shr( L_add( t06, t14 ), SCALEFACTORN2 - 1 );
- t02 = L_shr( L_sub( t06, t14 ), SCALEFACTORN2 - 1 );
- t00 = L_shr( L_add( t07, t15 ), SCALEFACTORN2 - 1 );
- t03 = L_shr( L_sub( t07, t15 ), SCALEFACTORN2 - 1 );
-
- s12 = Mpy_32_16_1( L_add( t00, t02 ), C81_FX );
- s14 = Mpy_32_16_1( L_sub( t00, t02 ), C81_FX );
- s13 = Mpy_32_16_1( L_sub( t03, t01 ), C81_FX );
- s15 = Mpy_32_16_1( L_add( t01, t03 ), C82_FX );
-
- re[add( i_mult( sx, i ), i_mult( sx, i_mult( 0, dim1 ) ) )] = L_add( s00, s02 );
- move32();
- im[add( i_mult( sx, i ), i_mult( sx, i_mult( 0, dim1 ) ) )] = L_add( s01, s03 );
- move32();
- re[add( i_mult( sx, i ), i_mult( sx, i_mult( 1, dim1 ) ) )] = L_add( s10, s12 );
- move32();
- im[add( i_mult( sx, i ), i_mult( sx, i_mult( 1, dim1 ) ) )] = L_add( s11, s13 );
- move32();
- re[add( i_mult( sx, i ), i_mult( sx, i_mult( 2, dim1 ) ) )] = L_sub( s04, s06 );
- move32();
- im[add( i_mult( sx, i ), i_mult( sx, i_mult( 2, dim1 ) ) )] = L_sub( s05, s07 );
- move32();
- re[add( i_mult( sx, i ), i_mult( sx, i_mult( 3, dim1 ) ) )] = L_add( s08, s14 );
- move32();
- im[add( i_mult( sx, i ), i_mult( sx, i_mult( 3, dim1 ) ) )] = L_add( s09, s15 );
- move32();
- re[add( i_mult( sx, i ), i_mult( sx, i_mult( 4, dim1 ) ) )] = L_sub( s00, s02 );
- move32();
- im[add( i_mult( sx, i ), i_mult( sx, i_mult( 4, dim1 ) ) )] = L_sub( s01, s03 );
- move32();
- re[add( i_mult( sx, i ), i_mult( sx, i_mult( 5, dim1 ) ) )] = L_sub( s10, s12 );
- move32();
- im[add( i_mult( sx, i ), i_mult( sx, i_mult( 5, dim1 ) ) )] = L_sub( s11, s13 );
- move32();
- re[add( i_mult( sx, i ), i_mult( sx, i_mult( 6, dim1 ) ) )] = L_add( s04, s06 );
- move32();
- im[add( i_mult( sx, i ), i_mult( sx, i_mult( 6, dim1 ) ) )] = L_add( s05, s07 );
- move32();
- re[add( i_mult( sx, i ), i_mult( sx, i_mult( 7, dim1 ) ) )] = L_sub( s08, s14 );
- move32();
- im[add( i_mult( sx, i ), i_mult( sx, i_mult( 7, dim1 ) ) )] = L_sub( s09, s15 );
- move32();
- }
-
- return;
-}
-
-
-/*-----------------------------------------------------------------*
- * BASOP_cfft_ivas()
- *
- * Complex valued FFT
- *-----------------------------------------------------------------*/
-
-void BASOP_cfft_ivas(
- Word32 *re, /* i/o: real part */
- Word32 *im, /* i/o: imag part */
- Word16 s, /* i : stride real and imag part */
- Word16 *scale /* i : scalefactor */
-)
-{
- Word32 x[2 * 64];
-
- /* FFT for len = FDNS_NPTS */
- BASOP_fftN2( re, im, RotVector_256, 8, 8, s, 8, x, 64 );
- s = add( *scale, SCALEFACTOR64 );
-
- *scale = s;
- move16();
-
- return;
-}
-
-
-#undef WMC_TOOL_SKIP
diff --git a/lib_com/fft_fx.c b/lib_com/fft_fx.c
index 5ee5098797c3b57caf6c91e826bcc76dd1fdf850..40c9780148ac85d1a202be1a623309ed24095c1b 100644
--- a/lib_com/fft_fx.c
+++ b/lib_com/fft_fx.c
@@ -44,9 +44,7 @@
#include "options.h"
#include
#include "cnst.h"
-// #include "prot_fx.h"
#include "prot_fx.h"
-//#include "cnst_fx.h"
#include "rom_com.h"
#include "rom_com_fx.h"
#include "wmc_auto.h"
@@ -7555,3 +7553,317 @@ void rfft_fx(
return;
}
+
+
+#define WMC_TOOL_SKIP
+
+#define SHC( x ) ( (Word16) x )
+#define FFTC( x ) WORD322WORD16( (Word32) x )
+
+#define C81_FX ( FFTC( 0x5a82799a ) ) /* FL2WORD32( 7.071067811865475e-1) */
+#define C82_FX ( FFTC( 0xa57d8666 ) ) /* FL2WORD32(-7.071067811865475e-1) */
+
+#define cplxMpy4_8_0( re, im, a, b, c, d ) \
+ re = L_shr( L_sub( Mpy_32_16_1( a, c ), Mpy_32_16_1( b, d ) ), 1 ); \
+ im = L_shr( L_add( Mpy_32_16_1( a, d ), Mpy_32_16_1( b, c ) ), 1 );
+
+#define cplxMpy4_8_1( re, im, a, b ) \
+ re = L_shr( a, 1 ); \
+ im = L_shr( b, 1 );
+
+
+/**
+ * \brief Twiddle factors are unscaled
+ */
+/*-----------------------------------------------------------------*
+ * BASOP_fft8()
+ *
+ * Function performs a complex 8-point FFT
+ * The FFT is performed inplace. The result of the FFT
+ * is scaled by SCALEFACTOR8 bits.
+ *
+ * WOPS with 32x16 bit multiplications: 108 cycles
+ *-----------------------------------------------------------------*/
+
+static void BASOP_fft8(
+ Word32 *re,
+ Word32 *im,
+ Word16 s )
+{
+ Word32 x00, x01, x02, x03, x04, x05, x06, x07;
+ Word32 x08, x09, x10, x11, x12, x13, x14, x15;
+ Word32 t00, t01, t02, t03, t04, t05, t06, t07;
+ Word32 t08, t09, t10, t11, t12, t13, t14, t15;
+ Word32 s00, s01, s02, s03, s04, s05, s06, s07;
+ Word32 s08, s09, s10, s11, s12, s13, s14, s15;
+
+
+ /* Pre-additions */
+
+ x00 = L_shr( re[s * 0], SCALEFACTOR8 );
+ x01 = L_shr( im[s * 0], SCALEFACTOR8 );
+ x02 = L_shr( re[s * 1], SCALEFACTOR8 );
+ x03 = L_shr( im[s * 1], SCALEFACTOR8 );
+ x04 = L_shr( re[s * 2], SCALEFACTOR8 );
+ x05 = L_shr( im[s * 2], SCALEFACTOR8 );
+ x06 = L_shr( re[s * 3], SCALEFACTOR8 );
+ x07 = L_shr( im[s * 3], SCALEFACTOR8 );
+ x08 = L_shr( re[s * 4], SCALEFACTOR8 );
+ x09 = L_shr( im[s * 4], SCALEFACTOR8 );
+ x10 = L_shr( re[s * 5], SCALEFACTOR8 );
+ x11 = L_shr( im[s * 5], SCALEFACTOR8 );
+ x12 = L_shr( re[s * 6], SCALEFACTOR8 );
+ x13 = L_shr( im[s * 6], SCALEFACTOR8 );
+ x14 = L_shr( re[s * 7], SCALEFACTOR8 );
+ x15 = L_shr( im[s * 7], SCALEFACTOR8 );
+
+ t00 = L_add( x00, x08 );
+ t02 = L_sub( x00, x08 );
+ t01 = L_add( x01, x09 );
+ t03 = L_sub( x01, x09 );
+ t04 = L_add( x02, x10 );
+ t06 = L_sub( x02, x10 );
+ t05 = L_add( x03, x11 );
+ t07 = L_sub( x03, x11 );
+ t08 = L_add( x04, x12 );
+ t10 = L_sub( x04, x12 );
+ t09 = L_add( x05, x13 );
+ t11 = L_sub( x05, x13 );
+ t12 = L_add( x06, x14 );
+ t14 = L_sub( x06, x14 );
+ t13 = L_add( x07, x15 );
+ t15 = L_sub( x07, x15 );
+
+ /* Pre-additions and core multiplications */
+
+ s00 = L_add( t00, t08 );
+ s04 = L_sub( t00, t08 );
+ s01 = L_add( t01, t09 );
+ s05 = L_sub( t01, t09 );
+ s08 = L_sub( t02, t11 );
+ s10 = L_add( t02, t11 );
+ s09 = L_add( t03, t10 );
+ s11 = L_sub( t03, t10 );
+ s02 = L_add( t04, t12 );
+ s07 = L_sub( t04, t12 );
+ s03 = L_add( t05, t13 );
+ s06 = L_sub( t13, t05 );
+
+ t01 = L_add( t06, t14 );
+ t02 = L_sub( t06, t14 );
+ t00 = L_add( t07, t15 );
+ t03 = L_sub( t07, t15 );
+
+ s12 = Mpy_32_16_1( L_add( t00, t02 ), C81_FX );
+ s14 = Mpy_32_16_1( L_sub( t00, t02 ), C81_FX );
+ s13 = Mpy_32_16_1( L_sub( t03, t01 ), C81_FX );
+ s15 = Mpy_32_16_1( L_add( t01, t03 ), C82_FX );
+
+ /* Post-additions */
+
+ re[s * 0] = L_add( s00, s02 );
+ move32();
+ re[s * 4] = L_sub( s00, s02 );
+ move32();
+ im[s * 0] = L_add( s01, s03 );
+ move32();
+ im[s * 4] = L_sub( s01, s03 );
+ move32();
+ re[s * 2] = L_sub( s04, s06 );
+ move32();
+ re[s * 6] = L_add( s04, s06 );
+ move32();
+ im[s * 2] = L_sub( s05, s07 );
+ move32();
+ im[s * 6] = L_add( s05, s07 );
+ move32();
+ re[i_mult( s, 3 )] = L_add( s08, s14 );
+ move32();
+ re[i_mult( s, 7 )] = L_sub( s08, s14 );
+ move32();
+ im[i_mult( s, 3 )] = L_add( s09, s15 );
+ move32();
+ im[i_mult( s, 7 )] = L_sub( s09, s15 );
+ move32();
+ re[s * 1] = L_add( s10, s12 );
+ move32();
+ re[i_mult( s, 5 )] = L_sub( s10, s12 );
+ move32();
+ im[s * 1] = L_add( s11, s13 );
+ move32();
+ im[i_mult( s, 5 )] = L_sub( s11, s13 );
+ move32();
+
+ return;
+}
+
+
+/*-----------------------------------------------------------------*
+ * fftN2()
+ *
+ * Combined FFT
+ *-----------------------------------------------------------------*/
+
+static void BASOP_fftN2(
+ Word32 *re, /* i/o: real part */
+ Word32 *im, /* i/o: imag part */
+ const Word16 *W, /* i : rotation factor */
+ Word16 dim1, /* i : length of fft1 */
+ Word16 dim2, /* i : length of fft2 */
+ Word16 sx, /* i : stride real and imag part */
+ Word16 sc, /* i : stride phase rotation coefficients */
+ Word32 *x, /* tmp: 32-bit workbuffer */
+ Word16 Woff /* i : offset for addressing the rotation vector table */
+)
+{
+ Word16 i, j;
+ Word32 x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, x10, x11, x12, x13, x14, x15;
+ Word32 t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t12, t13, t14, t15;
+ Word32 s00, s01, s02, s03, s04, s05, s06, s07, s08, s09, s10, s11, s12, s13, s14, s15;
+
+ FOR( i = 0; i < dim2; i++ )
+ {
+ FOR( j = 0; j < dim1; j++ )
+ {
+ x[2 * i * dim1 + 2 * j] = re[sx * i + sx * j * dim2];
+ move32();
+ x[2 * i * dim1 + 2 * j + 1] = im[sx * i + sx * j * dim2];
+ move32();
+ }
+ }
+
+ /* dim1 == 8 */
+ FOR( i = 0; i < dim2; i++ )
+ {
+ BASOP_fft8( &x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2 );
+ }
+
+ /* dim2 == 8 */
+ FOR( i = 0; i < dim1; i++ )
+ {
+ cplxMpy4_8_1( x00, x01, x[2 * i + 2 * 0 * dim1], x[2 * i + 2 * 0 * dim1 + 1] );
+
+ IF( i == 0 )
+ {
+ cplxMpy4_8_1( x02, x03, x[add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) ), 1 )] );
+ cplxMpy4_8_1( x04, x05, x[add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) ), 1 )] );
+ cplxMpy4_8_1( x06, x07, x[add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) ), 1 )] );
+ cplxMpy4_8_1( x08, x09, x[add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) ), 1 )] );
+ cplxMpy4_8_1( x10, x11, x[add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) ), 1 )] );
+ cplxMpy4_8_1( x12, x13, x[add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) ), 1 )] );
+ cplxMpy4_8_1( x14, x15, x[add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) ), 1 )] );
+ }
+ ELSE
+ {
+ cplxMpy4_8_0( x02, x03, x[add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 1, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 1, dim1 ) ) ), 1 ), Woff )] );
+ cplxMpy4_8_0( x04, x05, x[add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 2, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 2, dim1 ) ) ), 1 ), Woff )] );
+ cplxMpy4_8_0( x06, x07, x[add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 3, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 3, dim1 ) ) ), 1 ), Woff )] );
+ cplxMpy4_8_0( x08, x09, x[add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 4, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 4, dim1 ) ) ), 1 ), Woff )] );
+ cplxMpy4_8_0( x10, x11, x[add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 5, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 5, dim1 ) ) ), 1 ), Woff )] );
+ cplxMpy4_8_0( x12, x13, x[add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 6, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 6, dim1 ) ) ), 1 ), Woff )] );
+ cplxMpy4_8_0( x14, x15, x[add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 7, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 7, dim1 ) ) ), 1 ), Woff )] );
+ }
+ t00 = L_shr( L_add( x00, x08 ), SCALEFACTORN2 - 1 );
+ t02 = L_shr( L_sub( x00, x08 ), SCALEFACTORN2 - 1 );
+ t01 = L_shr( L_add( x01, x09 ), SCALEFACTORN2 - 1 );
+ t03 = L_shr( L_sub( x01, x09 ), SCALEFACTORN2 - 1 );
+ t04 = L_shr( L_add( x02, x10 ), SCALEFACTORN2 - 1 );
+ t06 = L_sub( x02, x10 );
+ t05 = L_shr( L_add( x03, x11 ), SCALEFACTORN2 - 1 );
+ t07 = L_sub( x03, x11 );
+ t08 = L_shr( L_add( x04, x12 ), SCALEFACTORN2 - 1 );
+ t10 = L_shr( L_sub( x04, x12 ), SCALEFACTORN2 - 1 );
+ t09 = L_shr( L_add( x05, x13 ), SCALEFACTORN2 - 1 );
+ t11 = L_shr( L_sub( x05, x13 ), SCALEFACTORN2 - 1 );
+ t12 = L_shr( L_add( x06, x14 ), SCALEFACTORN2 - 1 );
+ t14 = L_sub( x06, x14 );
+ t13 = L_shr( L_add( x07, x15 ), SCALEFACTORN2 - 1 );
+ t15 = L_sub( x07, x15 );
+
+ s00 = L_add( t00, t08 );
+ s04 = L_sub( t00, t08 );
+ s01 = L_add( t01, t09 );
+ s05 = L_sub( t01, t09 );
+ s08 = L_sub( t02, t11 );
+ s10 = L_add( t02, t11 );
+ s09 = L_add( t03, t10 );
+ s11 = L_sub( t03, t10 );
+ s02 = L_add( t04, t12 );
+ s07 = L_sub( t04, t12 );
+ s03 = L_add( t05, t13 );
+ s06 = L_sub( t13, t05 );
+
+ t01 = L_shr( L_add( t06, t14 ), SCALEFACTORN2 - 1 );
+ t02 = L_shr( L_sub( t06, t14 ), SCALEFACTORN2 - 1 );
+ t00 = L_shr( L_add( t07, t15 ), SCALEFACTORN2 - 1 );
+ t03 = L_shr( L_sub( t07, t15 ), SCALEFACTORN2 - 1 );
+
+ s12 = Mpy_32_16_1( L_add( t00, t02 ), C81_FX );
+ s14 = Mpy_32_16_1( L_sub( t00, t02 ), C81_FX );
+ s13 = Mpy_32_16_1( L_sub( t03, t01 ), C81_FX );
+ s15 = Mpy_32_16_1( L_add( t01, t03 ), C82_FX );
+
+ re[add( i_mult( sx, i ), i_mult( sx, i_mult( 0, dim1 ) ) )] = L_add( s00, s02 );
+ move32();
+ im[add( i_mult( sx, i ), i_mult( sx, i_mult( 0, dim1 ) ) )] = L_add( s01, s03 );
+ move32();
+ re[add( i_mult( sx, i ), i_mult( sx, i_mult( 1, dim1 ) ) )] = L_add( s10, s12 );
+ move32();
+ im[add( i_mult( sx, i ), i_mult( sx, i_mult( 1, dim1 ) ) )] = L_add( s11, s13 );
+ move32();
+ re[add( i_mult( sx, i ), i_mult( sx, i_mult( 2, dim1 ) ) )] = L_sub( s04, s06 );
+ move32();
+ im[add( i_mult( sx, i ), i_mult( sx, i_mult( 2, dim1 ) ) )] = L_sub( s05, s07 );
+ move32();
+ re[add( i_mult( sx, i ), i_mult( sx, i_mult( 3, dim1 ) ) )] = L_add( s08, s14 );
+ move32();
+ im[add( i_mult( sx, i ), i_mult( sx, i_mult( 3, dim1 ) ) )] = L_add( s09, s15 );
+ move32();
+ re[add( i_mult( sx, i ), i_mult( sx, i_mult( 4, dim1 ) ) )] = L_sub( s00, s02 );
+ move32();
+ im[add( i_mult( sx, i ), i_mult( sx, i_mult( 4, dim1 ) ) )] = L_sub( s01, s03 );
+ move32();
+ re[add( i_mult( sx, i ), i_mult( sx, i_mult( 5, dim1 ) ) )] = L_sub( s10, s12 );
+ move32();
+ im[add( i_mult( sx, i ), i_mult( sx, i_mult( 5, dim1 ) ) )] = L_sub( s11, s13 );
+ move32();
+ re[add( i_mult( sx, i ), i_mult( sx, i_mult( 6, dim1 ) ) )] = L_add( s04, s06 );
+ move32();
+ im[add( i_mult( sx, i ), i_mult( sx, i_mult( 6, dim1 ) ) )] = L_add( s05, s07 );
+ move32();
+ re[add( i_mult( sx, i ), i_mult( sx, i_mult( 7, dim1 ) ) )] = L_sub( s08, s14 );
+ move32();
+ im[add( i_mult( sx, i ), i_mult( sx, i_mult( 7, dim1 ) ) )] = L_sub( s09, s15 );
+ move32();
+ }
+
+ return;
+}
+
+
+/*-----------------------------------------------------------------*
+ * BASOP_cfft_ivas()
+ *
+ * Complex valued FFT
+ *-----------------------------------------------------------------*/
+
+void BASOP_cfft_ivas(
+ Word32 *re, /* i/o: real part */
+ Word32 *im, /* i/o: imag part */
+ Word16 s, /* i : stride real and imag part */
+ Word16 *scale /* i : scalefactor */
+)
+{
+ Word32 x[2 * 64];
+
+ /* FFT for len = FDNS_NPTS */
+ BASOP_fftN2( re, im, RotVector_256, 8, 8, s, 8, x, 64 );
+ s = add( *scale, SCALEFACTOR64 );
+
+ *scale = s;
+ move16();
+
+ return;
+}
+
+#undef WMC_TOOL_SKIP
diff --git a/lib_com/fft_rel.c b/lib_com/fft_rel.c
deleted file mode 100644
index 1d020cabdd7d013f554eeb3d0a697e73682881d9..0000000000000000000000000000000000000000
--- a/lib_com/fft_rel.c
+++ /dev/null
@@ -1,878 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include "prot_fx.h"
-#include "rom_com.h"
-#include "wmc_auto.h"
-
-/*---------------------------------------------------------------------*
- * Local constants
- *---------------------------------------------------------------------*/
-
-#define N_MAX_FFT 1024
-#define N_MAX_DIV2 ( N_MAX_FFT >> 1 )
-#define N_MAX_DIV4 ( N_MAX_DIV2 >> 1 )
-#define INV_SQR2_FX 23170
-#define N_MAX_SAS 256
-/*---------------------------------------------------------------------*
- * fft_rel()
- *
- * Computes the split-radix FFT in place for the real-valued
- * signal x of length n. The algorithm has been ported from
- * the Fortran code of [1].
- *
- * The function needs sine and cosine tables t_sin and t_cos,
- * and the constant N_MAX_FFT. The table entries are defined as
- * sin(2*pi*i) and cos(2*pi*i) for i = 0, 1, ..., N_MAX_FFT-1. The
- * implementation assumes that any entry will not be needed
- * outside the tables. Therefore, N_MAX_FFT and n must be properly
- * set. The function has been tested with the values n = 16,
- * 32, 64, 128, 256, and N_MAX_FFT = 1280.
- *
- * References
- * [1] H.V. Sorensen, D.L. Jones, M.T. Heideman, C.S. Burrus,
- * "Real-valued fast Fourier transform algorithm," IEEE
- * Trans. on Signal Processing, Vol.35, No.6, pp 849-863,
- * 1987.
- *
- * OUTPUT
- * x[0:n-1] Transform coeffients in the order re[0], re[1],
- * ..., re[n/2], im[n/2-1], ..., im[1].
- *---------------------------------------------------------------------*/
-
-void fft_rel(
- float x[], /* i/o: input/output vector */
- const int16_t n, /* i : vector length */
- const int16_t m /* i : log2 of vector length */
-)
-{
- int16_t i, j, k, n1, n2, n4;
- int16_t step;
- float xt, t1, t2;
- float *x0, *x1, *x2;
- float *xi2, *xi3, *xi4, *xi1;
- const float *s, *c;
- const int16_t *idx;
-
- /* !!!! NMAX = 256 is hardcoded here (similar optimizations should be done for NMAX > 256) !!! */
-
- float *x2even, *x2odd;
- float temp[512];
-
- if ( n == 128 || n == 256 || n == 512 )
- {
- idx = fft256_read_indexes;
-
- /* Combined Digit reverse counter & Length two butterflies */
- if ( n == 128 )
- {
- x2 = temp;
- for ( i = 0; i < 64; i++ )
- {
- j = *idx++;
- k = *idx++;
-
- *x2++ = x[j >> 1] + x[k >> 1];
- *x2++ = x[j >> 1] - x[k >> 1];
- }
- }
- else if ( n == 256 )
- {
- x2 = temp;
- for ( i = 0; i < 128; i++ )
- {
- j = *idx++;
- k = *idx++;
-
- *x2++ = x[j] + x[k];
- *x2++ = x[j] - x[k];
- }
- }
- else if ( n == 512 )
- {
- x2even = temp;
- x2odd = temp + 256;
-
- for ( i = 0; i < 128; i++ )
- {
- j = 2 * *idx++;
- k = 2 * *idx++;
-
- *x2even++ = x[j] + x[k];
- *x2even++ = x[j] - x[k];
- *x2odd++ = x[++j] + x[++k];
- *x2odd++ = x[j] - x[k];
- }
- }
-
- /*-----------------------------------------------------------------*
- * 1st Stage Loop has been Unrolled because n4 is '1' and that
- * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop
- * and the associated pointers initialization.
- * Also, it allows to Put the Data from 'temp' back into 'x' due
- * to the previous Combined Digit Reverse and Length two butterflies
- *-----------------------------------------------------------------*/
-
- /*for_ (k = 2; k < 3; k++)*/
- {
- x0 = temp;
- x1 = x0 + 2;
- x2 = x;
-
- for ( i = 0; i < n; i += 4 )
- {
- *x2++ = *x0++ + *x1; /* x[i] = xt + x[i+n2]; */
- *x2++ = *x0;
- *x2++ = *--x0 - *x1++; /* x[i+n2] = xt - x[i+n2]; */
- *x2++ = -*x1; /* x[i+n2+n4] = -x[i+n2+n4]; */
-
- x0 += 4;
- x1 += 3; /* x1 has already advanced */
- }
- }
- }
- else
- {
- /*-----------------------------------------------------------------*
- * Digit reverse counter
- *-----------------------------------------------------------------*/
-
- j = 0;
- x0 = &x[0];
- for ( i = 0; i < n - 1; i++ )
- {
- if ( i < j )
- {
- xt = x[j];
- x[j] = *x0;
- *x0 = xt;
- }
- x0++;
- k = n / 2;
- while ( k <= j )
- {
- j -= k;
- k = k >> 1;
- }
- j += k;
- }
-
- /*-----------------------------------------------------------------*
- * Length two butterflies
- *-----------------------------------------------------------------*/
-
- x0 = &x[0];
- x1 = &x[1];
- for ( i = 0; i < n / 2; i++ )
- {
- *x1 = *x0 - *x1;
- *x0 = *x0 * 2 - *x1;
-
- x0++;
- x0++;
- x1++;
- x1++;
- }
-
- /*-----------------------------------------------------------------*
- * 1st Stage Loop has been Unrolled because n4 is '1' and that
- * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop
- * and the associated pointers initialization.
- *-----------------------------------------------------------------*/
-
- /* for_ (k = 2; k < 3; k++) */
- {
- x0 = x;
- x1 = x0 + 2;
-
- for ( i = 0; i < n; i += 4 )
- {
- *x1 = *x0 - *x1; /* x[i+n2] = xt - x[i+n2]; */
- *x0 = *x0 * 2 - *x1++; /* x[i] = xt + x[i+n2]; */
- *x1 = -*x1; /* x[i+n2+n4] = -x[i+n2+n4]; */
-
- x0 += 4;
- x1 += 3; /* x1 has already advanced */
- }
- }
- }
-
- /*-----------------------------------------------------------------*
- * Other butterflies
- *
- * The implementation described in [1] has been changed by using
- * table lookup for evaluating sine and cosine functions. The
- * variable ind and its increment step are needed to access table
- * entries. Note that this implementation assumes n4 to be so
- * small that ind will never exceed the table. Thus the input
- * argument n and the constant N_MAX_FFT must be set properly.
- *-----------------------------------------------------------------*/
-
- n4 = 1;
- n2 = 2;
- n1 = 4;
-
- step = N_MAX_DIV4;
-
- for ( k = 3; k <= m; k++ )
- {
- step >>= 1;
- n4 <<= 1;
- n2 <<= 1;
- n1 <<= 1;
-
- x0 = x;
- x1 = x0 + n2;
- x2 = x1 + n4;
-
- for ( i = 0; i < n; i += n1 )
- {
- *x1 = *x0 - *x1; /* x[i+n2] = xt - x[i+n2]; */
- *x0 = *x0 * 2 - *x1; /* x[i] = xt + x[i+n2]; */
- *x2 = -*x2; /* x[i+n2+n4] = -x[i+n2+n4]; */
-
- s = sincos_t_ext;
- c = s + N_MAX_FFT / 4; /* 1024/4 = 256, 256/4=64 */
- xi1 = x0;
- xi3 = xi1 + n2;
- xi2 = xi3;
- x0 += n1;
- xi4 = x0;
-
- for ( j = 1; j < n4; j++ )
- {
- xi3++;
- xi1++;
- xi4--;
- xi2--;
- c += step;
- s += step; /* autoincrement by ar0 */
-
- t1 = *xi3 * *c + *xi4 * *s; /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); */
- t2 = *xi3 * *s - *xi4 * *c; /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); */
-
- *xi4 = *xi2 - t2;
- *xi2 = *xi1 - t1;
- *xi1 = *xi1 * 2 - *xi2;
- *xi3 = -2 * t2 - *xi4;
- }
-
- x1 += n1;
- x2 += n1;
- }
- }
-
- return;
-}
-
-void fft_rel_16_32fx(
- Word16 x[], /* i/o: input/output vector Qx */
- Word16 *q_x, /* extra scaling added on speech buffer*/
- Word16 i_subfr,
- const Word16 n, /* i : vector length */
- const Word16 m /* i : log2 of vector length */
-)
-{
- Word16 i, j, k, n1, n2, n4;
- Word16 step;
- Word32 xt, t1, t2;
- Word32 *x0, *x1, *x2;
- const Word16 *s, *c;
- Word32 *xi2, *xi3, *xi4, *xi1;
-
- Word32 fft_bff32[L_FFT];
- Copy_Scale_sig_16_32_no_sat( x, fft_bff32, L_FFT, 0 ); // copying x to fft_bff32 without scaling
-
- /*-----------------------------------------------------------------*
- * Digit reverse counter
- *-----------------------------------------------------------------*/
-
- j = 0;
- move16();
- x0 = &fft_bff32[0]; // Qx
- FOR( i = 0; i < n - 1; i++ )
- {
- IF( LT_16( i, j ) )
- {
- xt = fft_bff32[j]; // Qx
- move32();
- fft_bff32[j] = *x0; // Qx
- move32();
- *x0 = xt; // Qx
- move32();
- }
- x0++;
- k = shr( n, 1 );
- WHILE( ( k <= j ) )
- {
- j = sub( j, k );
- k = shr( k, 1 );
- }
- j = add( j, k );
- }
-
- /*-----------------------------------------------------------------*
- * Length two butterflies
- *-----------------------------------------------------------------*/
-
- x0 = &fft_bff32[0];
- x1 = &fft_bff32[1];
- FOR( i = 0; i < ( n >> 1 ); i++ )
- {
- xt = *x0;
- move32();
- *x0 = L_add( xt, *x1 );
- move32();
- *x1 = L_sub( xt, *x1 );
- move32();
- x0++;
- x0++;
- x1++;
- x1++;
- }
-
- /*-----------------------------------------------------------------*
- * Other butterflies
- *
- * The implementation described in [1] has been changed by using
- * table lookup for evaluating sine and cosine functions. The
- * variable ind and its increment step are needed to access table
- * entries. Note that this implementation assumes n4 to be so
- * small that ind will never exceed the table. Thus the input
- * argument n and the constant N_MAX_SAS must be set properly.
- *-----------------------------------------------------------------*/
-
- n2 = 1;
- move16();
- /* step = N_MAX_SAS/4; */
- FOR( k = 2; k <= m; k++ )
- {
- n4 = n2;
- move16();
- n2 = shl( n4, 1 );
- n1 = shl( n2, 1 );
-
- step = idiv1616( N_MAX_SAS, n1 );
-
- x0 = fft_bff32;
- x1 = fft_bff32 + n2;
- x2 = fft_bff32 + add( n2, n4 );
- FOR( i = 0; i < n; i += n1 )
- {
- xt = *x0;
- move32(); /* xt = x[i]; */
- *x0 = L_add( xt, *x1 );
- move32(); /* x[i] = xt + x[i+n2]; */
- *x1 = L_sub( xt, *x1 );
- move32(); /* x[i+n2] = xt - x[i+n2]; */
- *x2 = L_negate( *x2 );
- move32(); /* x[i+n2+n4] = -x[i+n2+n4]; */
-
-
- s = sincos_t_fx + step; // Q15
- c = s + 64; // Q15
- xi1 = fft_bff32 + add( i, 1 );
- xi3 = xi1 + n2;
- xi2 = xi3 - 2;
- xi4 = xi1 + sub( n1, 2 );
-
- FOR( j = 1; j < n4; j++ )
- {
- t1 = L_add( Mpy_32_16_1( *xi3, *c ), Mpy_32_16_1( *xi4, *s ) ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx */
- t2 = L_sub( Mpy_32_16_1( *xi3, *s ), Mpy_32_16_1( *xi4, *c ) ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx */
- *xi4 = L_sub( *xi2, t2 );
- move32();
- *xi3 = L_negate( L_add( *xi2, t2 ) );
- move32();
- *xi2 = L_sub( *xi1, t1 );
- move32();
- *xi1 = L_add( *xi1, t1 );
- move32();
-
- xi4--;
- xi2--;
- xi3++;
- xi1++;
- c += step;
- s += step; /* autoincrement by ar0 */
- }
-
- x0 += n1;
- x1 += n1;
- x2 += n1;
- }
- /* step = shr(step, 1); */
- }
- Word16 norm = L_norm_arr( fft_bff32, L_FFT );
- IF( i_subfr == 0 )
- {
- Copy_Scale_sig32_16( fft_bff32, x, L_FFT, norm );
- *q_x = sub( norm, 16 );
- move16();
- }
- ELSE
- {
- IF( LT_16( sub( norm, 16 ), *q_x ) )
- {
- scale_sig( x - L_FFT, L_FFT, sub( sub( norm, 16 ), *q_x ) );
- Copy_Scale_sig32_16( fft_bff32, x, L_FFT, norm );
- *q_x = sub( norm, 16 );
- move16();
- }
- ELSE
- {
- Copy_Scale_sig32_16( fft_bff32, x, L_FFT, add( 16, *q_x ) );
- }
- }
-
- return;
-}
-
-void fft_rel_fx(
- Word16 x[], /* i/o: input/output vector Qx */
- const Word16 n, /* i : vector length */
- const Word16 m /* i : log2 of vector length */
-)
-{
- Word16 i, j, k, n1, n2, n4;
- Word16 step;
- Word16 xt, t1, t2;
- Word16 *x0, *x1, *x2;
- const Word16 *s, *c;
- Word16 *xi2, *xi3, *xi4, *xi1;
-#ifdef BASOP_NOGLOB_DECLARE_LOCAL
- Flag Overflow = 0;
- move32();
-#endif
-
-
- /*-----------------------------------------------------------------*
- * Digit reverse counter
- *-----------------------------------------------------------------*/
-
- j = 0;
- move16();
- x0 = &x[0]; // Qx
- move16();
- FOR( i = 0; i < n - 1; i++ )
- {
- IF( LT_16( i, j ) )
- {
- xt = x[j]; // Qx
- move16();
- x[j] = *x0; // Qx
- move16();
- *x0 = xt; // Qx
- move16();
- }
- x0++;
- k = shr( n, 1 );
- WHILE( ( k <= j ) )
- {
- j = sub( j, k );
- k = shr( k, 1 );
- }
- j = add( j, k );
- }
-
- /*-----------------------------------------------------------------*
- * Length two butterflies
- *-----------------------------------------------------------------*/
-
- x0 = &x[0];
- move16();
- x1 = &x[1];
- move16();
- FOR( i = 0; i < ( n >> 1 ); i++ )
- {
- xt = *x0;
- move16();
- *x0 = add_o( xt, *x1, &Overflow );
- move16();
- *x1 = sub_o( xt, *x1, &Overflow );
- move16();
- x0++;
- x0++;
- x1++;
- x1++;
- }
-
- /*-----------------------------------------------------------------*
- * Other butterflies
- *
- * The implementation described in [1] has been changed by using
- * table lookup for evaluating sine and cosine functions. The
- * variable ind and its increment step are needed to access table
- * entries. Note that this implementation assumes n4 to be so
- * small that ind will never exceed the table. Thus the input
- * argument n and the constant N_MAX_SAS must be set properly.
- *-----------------------------------------------------------------*/
-
- n2 = 1;
- move16();
- /* step = N_MAX_SAS/4; */
- FOR( k = 2; k <= m; k++ )
- {
- n4 = n2;
- move16();
- n2 = shl( n4, 1 );
- n1 = shl( n2, 1 );
-
- step = idiv1616( N_MAX_SAS, n1 );
-
- x0 = x;
- x1 = x + n2;
- x2 = x + add( n2, n4 );
- FOR( i = 0; i < n; i += n1 )
- {
- xt = *x0;
- move16(); /* xt = x[i]; */
- *x0 = add_o( xt, *x1, &Overflow );
- move16(); /* x[i] = xt + x[i+n2]; */
- *x1 = sub_o( xt, *x1, &Overflow );
- move16(); /* x[i+n2] = xt - x[i+n2]; */
- *x2 = negate( *x2 );
- move16(); /* x[i+n2+n4] = -x[i+n2+n4]; */
-
-
- s = sincos_t_fx + step; // Q15
- c = s + 64; // Q15
- xi1 = x + add( i, 1 );
- xi3 = xi1 + n2;
- xi2 = xi3 - 2;
- xi4 = xi1 + sub( n1, 2 );
-
- FOR( j = 1; j < n4; j++ )
- {
- t1 = add_o( mult_r( *xi3, *c ), mult_r( *xi4, *s ), &Overflow ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx */
- t2 = sub_o( mult_r( *xi3, *s ), mult_r( *xi4, *c ), &Overflow ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx */
- *xi4 = sub_o( *xi2, t2, &Overflow );
- move16();
- *xi3 = negate( add_o( *xi2, t2, &Overflow ) );
- move16();
- *xi2 = sub_o( *xi1, t1, &Overflow );
- move16();
- *xi1 = add_o( *xi1, t1, &Overflow );
- move16();
-
- xi4--;
- xi2--;
- xi3++;
- xi1++;
- c += step;
- s += step; /* autoincrement by ar0 */
- }
-
- x0 += n1;
- x1 += n1;
- x2 += n1;
- }
- /* step = shr(step, 1); */
- }
-
- return;
-}
-
-void fft_rel_fx32(
- Word32 x[], /* i/o: input/output vector Qx */
- const Word16 n, /* i : vector length */
- const Word16 m /* i : log2 of vector length */
-)
-{
- Word16 i, j, k, n1, n2, n4;
- Word16 step;
- Word32 xt, t1, t2;
- Word32 *x0, *x1, *x2;
- Word32 *xi2, *xi3, *xi4, *xi1;
- const Word16 *s, *c;
- const Word16 *idx;
-
- /* !!!! NMAX = 256 is hardcoded here (similar optimizations should be done for NMAX > 256) !!! */
-
- Word32 *x2even, *x2odd;
- Word32 temp[512];
-
- test();
- test();
- IF( EQ_16( n, 128 ) || EQ_16( n, 256 ) || EQ_16( n, 512 ) )
- {
- idx = fft256_read_indexes;
-
- /* Combined Digit reverse counter & Length two butterflies */
- IF( EQ_16( n, 128 ) )
- {
- x2 = temp;
- FOR( i = 0; i < 64; i++ )
- {
- j = *idx++;
- move16();
- k = *idx++;
- move16();
-
- *x2++ = L_add( x[( j >> 1 )], x[( k >> 1 )] ); // Qx
- move16();
- *x2++ = L_sub( x[( j >> 1 )], x[( k >> 1 )] ); // Qx
- move16();
- }
- }
- ELSE IF( EQ_16( n, 256 ) )
- {
- x2 = temp;
- FOR( i = 0; i < 128; i++ )
- {
- j = *idx++;
- move16();
- k = *idx++;
- move16();
-
- *x2++ = L_add( x[j], x[k] ); // Qx
- move16();
- *x2++ = L_sub( x[j], x[k] ); // Qx
- move16();
- }
- }
- ELSE IF( EQ_16( n, 512 ) )
- {
- x2even = temp;
- x2odd = temp + 256;
-
- FOR( i = 0; i < 128; i++ )
- {
- j = shl( *idx, 1 );
- idx++;
- k = shl( *idx, 1 );
- idx++;
-
- *x2even++ = L_add( x[j], x[k] ); // Qx
- move16();
- *x2even++ = L_sub( x[j], x[k] ); // Qx
- move16();
- j = add( j, 1 );
- k = add( k, 1 );
- *x2odd++ = L_add( x[j], x[k] ); // Qx
- move16();
- *x2odd++ = L_sub( x[j], x[k] ); // Qx
- move16();
- }
- }
-
- /*-----------------------------------------------------------------*
- * 1st Stage Loop has been Unrolled because n4 is '1' and that
- * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop
- * and the associated pointers initialization.
- * Also, it allows to Put the Data from 'temp' back into 'x' due
- * to the previous Combined Digit Reverse and Length two butterflies
- *-----------------------------------------------------------------*/
-
- /*for_ (k = 2; k < 3; k++)*/
- {
- x0 = temp;
- x1 = x0 + 2;
- x2 = x; // Qx
-
- FOR( i = 0; i < n; i += 4 )
- {
- *x2++ = L_add( *x0++, *x1 ); /* x[i] = xt + x[i+n2]; */
- move16();
- *x2++ = *x0;
- move16();
- x0--;
- *x2++ = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; */
- move16();
- x1++;
- *x2++ = L_negate( *x1 ); /* x[i+n2+n4] = -x[i+n2+n4]; */
- move16();
-
- x0 += 4;
- x1 += 3; /* x1 has already advanced */
- }
- }
- }
- ELSE
- {
- /*-----------------------------------------------------------------*
- * Digit reverse counter
- *-----------------------------------------------------------------*/
-
- j = 0;
- move16();
- x0 = &x[0]; // Qx
- FOR( i = 0; i < ( n - 1 ); i++ )
- {
- IF( LT_16( i, j ) )
- {
- xt = x[j]; // Qx
- move32();
- x[j] = *x0;
- move32();
- *x0 = xt;
- move32();
- }
- x0++;
- k = shr( n, 1 );
- WHILE( ( k <= j ) )
- {
- j = sub( j, k );
- k = shr( k, 1 );
- }
- j = add( j, k );
- }
-
- /*-----------------------------------------------------------------*
- * Length two butterflies
- *-----------------------------------------------------------------*/
-
- x0 = &x[0]; // Qx
- x1 = &x[1]; // Qx
- FOR( i = 0; i < ( n >> 1 ); i++ )
- {
- *x1 = L_sub( *x0, *x1 ); // Qx
- move32();
- *x0 = L_sub( L_shl( *x0, 1 ), *x1 ); //*x0 * 2 - *x1 (Qx)
- move32();
-
- x0++;
- x0++;
- x1++;
- x1++;
- }
-
- /*-----------------------------------------------------------------*
- * 1st Stage Loop has been Unrolled because n4 is '1' and that
- * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop
- * and the associated pointers initialization.
- *-----------------------------------------------------------------*/
-
- /* for_ (k = 2; k < 3; k++) */
- {
- x0 = x; // Qx
- x1 = x0 + 2;
-
- FOR( i = 0; i < n; i += 4 )
- {
- *x1 = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; Qx*/
- move32();
- *x0 = L_sub( L_shl( *x0, 1 ), *x1++ ); /* x[i] = xt + x[i+n2]; */ /**x0 * 2 - *x1 (Qx)*/
- move32();
- *x1 = L_negate( *x1 ); /* x[i+n2+n4] = -x[i+n2+n4]; Qx*/
- move32();
-
- x0 += 4;
- x1 += 3; /* x1 has already advanced */
- }
- }
- }
-
- /*-----------------------------------------------------------------*
- * Other butterflies
- *
- * The implementation described in [1] has been changed by using
- * table lookup for evaluating sine and cosine functions. The
- * variable ind and its increment step are needed to access table
- * entries. Note that this implementation assumes n4 to be so
- * small that ind will never exceed the table. Thus the input
- * argument n and the constant N_MAX_FFT must be set properly.
- *-----------------------------------------------------------------*/
-
- n4 = 1;
- move16();
- n2 = 2;
- move16();
- n1 = 4;
- move16();
-
- step = N_MAX_DIV4;
- move16();
-
- FOR( k = 3; k <= m; k++ )
- {
- step = shr( step, 1 );
- n4 = shl( n4, 1 );
- n2 = shl( n2, 1 );
- n1 = shl( n1, 1 );
-
- x0 = x;
- x1 = x0 + n2;
- x2 = x1 + n4;
-
- FOR( i = 0; i < n; i += n1 )
- {
- *x1 = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; */
- move32();
- *x0 = L_sub( L_shl( *x0, 1 ), *x1 ); /* x[i] = xt + x[i+n2]; */ /**x0 * 2 - *x1 (Qx)*/
- move32();
- *x2 = L_negate( *x2 ); /* x[i+n2+n4] = -x[i+n2+n4]; Qx */
- move32();
-
- s = sincos_t_ext_fx; // Q15
- c = s + N_MAX_FFT / 4; /* 1024/4 = 256, 256/4=64 Q15*/
- xi1 = x0;
- xi3 = xi1 + n2;
- xi2 = xi3;
- x0 += n1;
- xi4 = x0;
-
- FOR( j = 1; j < n4; j++ )
- {
- xi3++;
- xi1++;
- xi4--;
- xi2--;
- c += step;
- s += step; /* autoincrement by ar0 */
-
- t1 = L_add( Mpy_32_16_1( *xi3, *c ), Mpy_32_16_1( *xi4, *s ) ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx*/
- t2 = L_sub( Mpy_32_16_1( *xi3, *s ), Mpy_32_16_1( *xi4, *c ) ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx*/
-
- *xi4 = L_sub( *xi2, t2 );
- move32();
- *xi2 = L_sub( *xi1, t1 );
- move32();
- *xi1 = L_sub( L_shl( *xi1, 1 ), *xi2 ); // Qx
- move32();
- *xi3 = L_negate( L_add( L_shl( t2, 1 ), *xi4 ) ); // Qx
- move32();
- }
-
- x1 += n1;
- x2 += n1;
- }
- }
-
- return;
-}
diff --git a/lib_com/fft_rel_fx.c b/lib_com/fft_rel_fx.c
index 5461ce55baae37f1bfdd25c36fac6607fd69e0c1..a0905cc1689e11358c49e235afd5c5c498cbdd96 100644
--- a/lib_com/fft_rel_fx.c
+++ b/lib_com/fft_rel_fx.c
@@ -2,11 +2,24 @@
EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0
====================================================================================*/
+#include
#include "options.h" /* Compilation switches */
#include "prot_fx.h" /* Function prototypes */
#include "rom_com.h" /* Static table prototypes */
#include "stl.h"
#include "stdint.h"
+#include "wmc_auto.h"
+
+/*---------------------------------------------------------------------*
+ * Local constants
+ *---------------------------------------------------------------------*/
+
+#define N_MAX_FFT 1024
+#define N_MAX_DIV2 ( N_MAX_FFT >> 1 )
+#define N_MAX_DIV4 ( N_MAX_DIV2 >> 1 )
+#define INV_SQR2_FX 23170
+#define N_MAX_SAS 256
+
/*------------------------------------------------------------------
*
* This is an implementation of decimation-in-time FFT algorithm for
@@ -427,3 +440,832 @@ void r_fft_fx_lc(
c_fft_fx( phs_tbl, SIZE, NUM_STAGE, temp, out_ptr, isign );
}
}
+
+
+/*---------------------------------------------------------------------*
+ * fft_rel()
+ *
+ * Computes the split-radix FFT in place for the real-valued
+ * signal x of length n. The algorithm has been ported from
+ * the Fortran code of [1].
+ *
+ * The function needs sine and cosine tables t_sin and t_cos,
+ * and the constant N_MAX_FFT. The table entries are defined as
+ * sin(2*pi*i) and cos(2*pi*i) for i = 0, 1, ..., N_MAX_FFT-1. The
+ * implementation assumes that any entry will not be needed
+ * outside the tables. Therefore, N_MAX_FFT and n must be properly
+ * set. The function has been tested with the values n = 16,
+ * 32, 64, 128, 256, and N_MAX_FFT = 1280.
+ *
+ * References
+ * [1] H.V. Sorensen, D.L. Jones, M.T. Heideman, C.S. Burrus,
+ * "Real-valued fast Fourier transform algorithm," IEEE
+ * Trans. on Signal Processing, Vol.35, No.6, pp 849-863,
+ * 1987.
+ *
+ * OUTPUT
+ * x[0:n-1] Transform coeffients in the order re[0], re[1],
+ * ..., re[n/2], im[n/2-1], ..., im[1].
+ *---------------------------------------------------------------------*/
+
+void fft_rel(
+ float x[], /* i/o: input/output vector */
+ const int16_t n, /* i : vector length */
+ const int16_t m /* i : log2 of vector length */
+)
+{
+ int16_t i, j, k, n1, n2, n4;
+ int16_t step;
+ float xt, t1, t2;
+ float *x0, *x1, *x2;
+ float *xi2, *xi3, *xi4, *xi1;
+ const float *s, *c;
+ const int16_t *idx;
+
+ /* !!!! NMAX = 256 is hardcoded here (similar optimizations should be done for NMAX > 256) !!! */
+
+ float *x2even, *x2odd;
+ float temp[512];
+
+ if ( n == 128 || n == 256 || n == 512 )
+ {
+ idx = fft256_read_indexes;
+
+ /* Combined Digit reverse counter & Length two butterflies */
+ if ( n == 128 )
+ {
+ x2 = temp;
+ for ( i = 0; i < 64; i++ )
+ {
+ j = *idx++;
+ k = *idx++;
+
+ *x2++ = x[j >> 1] + x[k >> 1];
+ *x2++ = x[j >> 1] - x[k >> 1];
+ }
+ }
+ else if ( n == 256 )
+ {
+ x2 = temp;
+ for ( i = 0; i < 128; i++ )
+ {
+ j = *idx++;
+ k = *idx++;
+
+ *x2++ = x[j] + x[k];
+ *x2++ = x[j] - x[k];
+ }
+ }
+ else if ( n == 512 )
+ {
+ x2even = temp;
+ x2odd = temp + 256;
+
+ for ( i = 0; i < 128; i++ )
+ {
+ j = 2 * *idx++;
+ k = 2 * *idx++;
+
+ *x2even++ = x[j] + x[k];
+ *x2even++ = x[j] - x[k];
+ *x2odd++ = x[++j] + x[++k];
+ *x2odd++ = x[j] - x[k];
+ }
+ }
+
+ /*-----------------------------------------------------------------*
+ * 1st Stage Loop has been Unrolled because n4 is '1' and that
+ * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop
+ * and the associated pointers initialization.
+ * Also, it allows to Put the Data from 'temp' back into 'x' due
+ * to the previous Combined Digit Reverse and Length two butterflies
+ *-----------------------------------------------------------------*/
+
+ /*for_ (k = 2; k < 3; k++)*/
+ {
+ x0 = temp;
+ x1 = x0 + 2;
+ x2 = x;
+
+ for ( i = 0; i < n; i += 4 )
+ {
+ *x2++ = *x0++ + *x1; /* x[i] = xt + x[i+n2]; */
+ *x2++ = *x0;
+ *x2++ = *--x0 - *x1++; /* x[i+n2] = xt - x[i+n2]; */
+ *x2++ = -*x1; /* x[i+n2+n4] = -x[i+n2+n4]; */
+
+ x0 += 4;
+ x1 += 3; /* x1 has already advanced */
+ }
+ }
+ }
+ else
+ {
+ /*-----------------------------------------------------------------*
+ * Digit reverse counter
+ *-----------------------------------------------------------------*/
+
+ j = 0;
+ x0 = &x[0];
+ for ( i = 0; i < n - 1; i++ )
+ {
+ if ( i < j )
+ {
+ xt = x[j];
+ x[j] = *x0;
+ *x0 = xt;
+ }
+ x0++;
+ k = n / 2;
+ while ( k <= j )
+ {
+ j -= k;
+ k = k >> 1;
+ }
+ j += k;
+ }
+
+ /*-----------------------------------------------------------------*
+ * Length two butterflies
+ *-----------------------------------------------------------------*/
+
+ x0 = &x[0];
+ x1 = &x[1];
+ for ( i = 0; i < n / 2; i++ )
+ {
+ *x1 = *x0 - *x1;
+ *x0 = *x0 * 2 - *x1;
+
+ x0++;
+ x0++;
+ x1++;
+ x1++;
+ }
+
+ /*-----------------------------------------------------------------*
+ * 1st Stage Loop has been Unrolled because n4 is '1' and that
+ * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop
+ * and the associated pointers initialization.
+ *-----------------------------------------------------------------*/
+
+ /* for_ (k = 2; k < 3; k++) */
+ {
+ x0 = x;
+ x1 = x0 + 2;
+
+ for ( i = 0; i < n; i += 4 )
+ {
+ *x1 = *x0 - *x1; /* x[i+n2] = xt - x[i+n2]; */
+ *x0 = *x0 * 2 - *x1++; /* x[i] = xt + x[i+n2]; */
+ *x1 = -*x1; /* x[i+n2+n4] = -x[i+n2+n4]; */
+
+ x0 += 4;
+ x1 += 3; /* x1 has already advanced */
+ }
+ }
+ }
+
+ /*-----------------------------------------------------------------*
+ * Other butterflies
+ *
+ * The implementation described in [1] has been changed by using
+ * table lookup for evaluating sine and cosine functions. The
+ * variable ind and its increment step are needed to access table
+ * entries. Note that this implementation assumes n4 to be so
+ * small that ind will never exceed the table. Thus the input
+ * argument n and the constant N_MAX_FFT must be set properly.
+ *-----------------------------------------------------------------*/
+
+ n4 = 1;
+ n2 = 2;
+ n1 = 4;
+
+ step = N_MAX_DIV4;
+
+ for ( k = 3; k <= m; k++ )
+ {
+ step >>= 1;
+ n4 <<= 1;
+ n2 <<= 1;
+ n1 <<= 1;
+
+ x0 = x;
+ x1 = x0 + n2;
+ x2 = x1 + n4;
+
+ for ( i = 0; i < n; i += n1 )
+ {
+ *x1 = *x0 - *x1; /* x[i+n2] = xt - x[i+n2]; */
+ *x0 = *x0 * 2 - *x1; /* x[i] = xt + x[i+n2]; */
+ *x2 = -*x2; /* x[i+n2+n4] = -x[i+n2+n4]; */
+
+ s = sincos_t_ext;
+ c = s + N_MAX_FFT / 4; /* 1024/4 = 256, 256/4=64 */
+ xi1 = x0;
+ xi3 = xi1 + n2;
+ xi2 = xi3;
+ x0 += n1;
+ xi4 = x0;
+
+ for ( j = 1; j < n4; j++ )
+ {
+ xi3++;
+ xi1++;
+ xi4--;
+ xi2--;
+ c += step;
+ s += step; /* autoincrement by ar0 */
+
+ t1 = *xi3 * *c + *xi4 * *s; /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); */
+ t2 = *xi3 * *s - *xi4 * *c; /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); */
+
+ *xi4 = *xi2 - t2;
+ *xi2 = *xi1 - t1;
+ *xi1 = *xi1 * 2 - *xi2;
+ *xi3 = -2 * t2 - *xi4;
+ }
+
+ x1 += n1;
+ x2 += n1;
+ }
+ }
+
+ return;
+}
+
+void fft_rel_16_32fx(
+ Word16 x[], /* i/o: input/output vector Qx */
+ Word16 *q_x, /* extra scaling added on speech buffer*/
+ Word16 i_subfr,
+ const Word16 n, /* i : vector length */
+ const Word16 m /* i : log2 of vector length */
+)
+{
+ Word16 i, j, k, n1, n2, n4;
+ Word16 step;
+ Word32 xt, t1, t2;
+ Word32 *x0, *x1, *x2;
+ const Word16 *s, *c;
+ Word32 *xi2, *xi3, *xi4, *xi1;
+
+ Word32 fft_bff32[L_FFT];
+ Copy_Scale_sig_16_32_no_sat( x, fft_bff32, L_FFT, 0 ); // copying x to fft_bff32 without scaling
+
+ /*-----------------------------------------------------------------*
+ * Digit reverse counter
+ *-----------------------------------------------------------------*/
+
+ j = 0;
+ move16();
+ x0 = &fft_bff32[0]; // Qx
+ FOR( i = 0; i < n - 1; i++ )
+ {
+ IF( LT_16( i, j ) )
+ {
+ xt = fft_bff32[j]; // Qx
+ move32();
+ fft_bff32[j] = *x0; // Qx
+ move32();
+ *x0 = xt; // Qx
+ move32();
+ }
+ x0++;
+ k = shr( n, 1 );
+ WHILE( ( k <= j ) )
+ {
+ j = sub( j, k );
+ k = shr( k, 1 );
+ }
+ j = add( j, k );
+ }
+
+ /*-----------------------------------------------------------------*
+ * Length two butterflies
+ *-----------------------------------------------------------------*/
+
+ x0 = &fft_bff32[0];
+ x1 = &fft_bff32[1];
+ FOR( i = 0; i < ( n >> 1 ); i++ )
+ {
+ xt = *x0;
+ move32();
+ *x0 = L_add( xt, *x1 );
+ move32();
+ *x1 = L_sub( xt, *x1 );
+ move32();
+ x0++;
+ x0++;
+ x1++;
+ x1++;
+ }
+
+ /*-----------------------------------------------------------------*
+ * Other butterflies
+ *
+ * The implementation described in [1] has been changed by using
+ * table lookup for evaluating sine and cosine functions. The
+ * variable ind and its increment step are needed to access table
+ * entries. Note that this implementation assumes n4 to be so
+ * small that ind will never exceed the table. Thus the input
+ * argument n and the constant N_MAX_SAS must be set properly.
+ *-----------------------------------------------------------------*/
+
+ n2 = 1;
+ move16();
+ /* step = N_MAX_SAS/4; */
+ FOR( k = 2; k <= m; k++ )
+ {
+ n4 = n2;
+ move16();
+ n2 = shl( n4, 1 );
+ n1 = shl( n2, 1 );
+
+ step = idiv1616( N_MAX_SAS, n1 );
+
+ x0 = fft_bff32;
+ x1 = fft_bff32 + n2;
+ x2 = fft_bff32 + add( n2, n4 );
+ FOR( i = 0; i < n; i += n1 )
+ {
+ xt = *x0;
+ move32(); /* xt = x[i]; */
+ *x0 = L_add( xt, *x1 );
+ move32(); /* x[i] = xt + x[i+n2]; */
+ *x1 = L_sub( xt, *x1 );
+ move32(); /* x[i+n2] = xt - x[i+n2]; */
+ *x2 = L_negate( *x2 );
+ move32(); /* x[i+n2+n4] = -x[i+n2+n4]; */
+
+
+ s = sincos_t_fx + step; // Q15
+ c = s + 64; // Q15
+ xi1 = fft_bff32 + add( i, 1 );
+ xi3 = xi1 + n2;
+ xi2 = xi3 - 2;
+ xi4 = xi1 + sub( n1, 2 );
+
+ FOR( j = 1; j < n4; j++ )
+ {
+ t1 = L_add( Mpy_32_16_1( *xi3, *c ), Mpy_32_16_1( *xi4, *s ) ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx */
+ t2 = L_sub( Mpy_32_16_1( *xi3, *s ), Mpy_32_16_1( *xi4, *c ) ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx */
+ *xi4 = L_sub( *xi2, t2 );
+ move32();
+ *xi3 = L_negate( L_add( *xi2, t2 ) );
+ move32();
+ *xi2 = L_sub( *xi1, t1 );
+ move32();
+ *xi1 = L_add( *xi1, t1 );
+ move32();
+
+ xi4--;
+ xi2--;
+ xi3++;
+ xi1++;
+ c += step;
+ s += step; /* autoincrement by ar0 */
+ }
+
+ x0 += n1;
+ x1 += n1;
+ x2 += n1;
+ }
+ /* step = shr(step, 1); */
+ }
+ Word16 norm = L_norm_arr( fft_bff32, L_FFT );
+ IF( i_subfr == 0 )
+ {
+ Copy_Scale_sig32_16( fft_bff32, x, L_FFT, norm );
+ *q_x = sub( norm, 16 );
+ move16();
+ }
+ ELSE
+ {
+ IF( LT_16( sub( norm, 16 ), *q_x ) )
+ {
+ scale_sig( x - L_FFT, L_FFT, sub( sub( norm, 16 ), *q_x ) );
+ Copy_Scale_sig32_16( fft_bff32, x, L_FFT, norm );
+ *q_x = sub( norm, 16 );
+ move16();
+ }
+ ELSE
+ {
+ Copy_Scale_sig32_16( fft_bff32, x, L_FFT, add( 16, *q_x ) );
+ }
+ }
+
+ return;
+}
+
+void fft_rel_fx(
+ Word16 x[], /* i/o: input/output vector Qx */
+ const Word16 n, /* i : vector length */
+ const Word16 m /* i : log2 of vector length */
+)
+{
+ Word16 i, j, k, n1, n2, n4;
+ Word16 step;
+ Word16 xt, t1, t2;
+ Word16 *x0, *x1, *x2;
+ const Word16 *s, *c;
+ Word16 *xi2, *xi3, *xi4, *xi1;
+#ifdef BASOP_NOGLOB_DECLARE_LOCAL
+ Flag Overflow = 0;
+ move32();
+#endif
+
+
+ /*-----------------------------------------------------------------*
+ * Digit reverse counter
+ *-----------------------------------------------------------------*/
+
+ j = 0;
+ move16();
+ x0 = &x[0]; // Qx
+ move16();
+ FOR( i = 0; i < n - 1; i++ )
+ {
+ IF( LT_16( i, j ) )
+ {
+ xt = x[j]; // Qx
+ move16();
+ x[j] = *x0; // Qx
+ move16();
+ *x0 = xt; // Qx
+ move16();
+ }
+ x0++;
+ k = shr( n, 1 );
+ WHILE( ( k <= j ) )
+ {
+ j = sub( j, k );
+ k = shr( k, 1 );
+ }
+ j = add( j, k );
+ }
+
+ /*-----------------------------------------------------------------*
+ * Length two butterflies
+ *-----------------------------------------------------------------*/
+
+ x0 = &x[0];
+ move16();
+ x1 = &x[1];
+ move16();
+ FOR( i = 0; i < ( n >> 1 ); i++ )
+ {
+ xt = *x0;
+ move16();
+ *x0 = add_o( xt, *x1, &Overflow );
+ move16();
+ *x1 = sub_o( xt, *x1, &Overflow );
+ move16();
+ x0++;
+ x0++;
+ x1++;
+ x1++;
+ }
+
+ /*-----------------------------------------------------------------*
+ * Other butterflies
+ *
+ * The implementation described in [1] has been changed by using
+ * table lookup for evaluating sine and cosine functions. The
+ * variable ind and its increment step are needed to access table
+ * entries. Note that this implementation assumes n4 to be so
+ * small that ind will never exceed the table. Thus the input
+ * argument n and the constant N_MAX_SAS must be set properly.
+ *-----------------------------------------------------------------*/
+
+ n2 = 1;
+ move16();
+ /* step = N_MAX_SAS/4; */
+ FOR( k = 2; k <= m; k++ )
+ {
+ n4 = n2;
+ move16();
+ n2 = shl( n4, 1 );
+ n1 = shl( n2, 1 );
+
+ step = idiv1616( N_MAX_SAS, n1 );
+
+ x0 = x;
+ x1 = x + n2;
+ x2 = x + add( n2, n4 );
+ FOR( i = 0; i < n; i += n1 )
+ {
+ xt = *x0;
+ move16(); /* xt = x[i]; */
+ *x0 = add_o( xt, *x1, &Overflow );
+ move16(); /* x[i] = xt + x[i+n2]; */
+ *x1 = sub_o( xt, *x1, &Overflow );
+ move16(); /* x[i+n2] = xt - x[i+n2]; */
+ *x2 = negate( *x2 );
+ move16(); /* x[i+n2+n4] = -x[i+n2+n4]; */
+
+
+ s = sincos_t_fx + step; // Q15
+ c = s + 64; // Q15
+ xi1 = x + add( i, 1 );
+ xi3 = xi1 + n2;
+ xi2 = xi3 - 2;
+ xi4 = xi1 + sub( n1, 2 );
+
+ FOR( j = 1; j < n4; j++ )
+ {
+ t1 = add_o( mult_r( *xi3, *c ), mult_r( *xi4, *s ), &Overflow ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx */
+ t2 = sub_o( mult_r( *xi3, *s ), mult_r( *xi4, *c ), &Overflow ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx */
+ *xi4 = sub_o( *xi2, t2, &Overflow );
+ move16();
+ *xi3 = negate( add_o( *xi2, t2, &Overflow ) );
+ move16();
+ *xi2 = sub_o( *xi1, t1, &Overflow );
+ move16();
+ *xi1 = add_o( *xi1, t1, &Overflow );
+ move16();
+
+ xi4--;
+ xi2--;
+ xi3++;
+ xi1++;
+ c += step;
+ s += step; /* autoincrement by ar0 */
+ }
+
+ x0 += n1;
+ x1 += n1;
+ x2 += n1;
+ }
+ /* step = shr(step, 1); */
+ }
+
+ return;
+}
+
+void fft_rel_fx32(
+ Word32 x[], /* i/o: input/output vector Qx */
+ const Word16 n, /* i : vector length */
+ const Word16 m /* i : log2 of vector length */
+)
+{
+ Word16 i, j, k, n1, n2, n4;
+ Word16 step;
+ Word32 xt, t1, t2;
+ Word32 *x0, *x1, *x2;
+ Word32 *xi2, *xi3, *xi4, *xi1;
+ const Word16 *s, *c;
+ const Word16 *idx;
+
+ /* !!!! NMAX = 256 is hardcoded here (similar optimizations should be done for NMAX > 256) !!! */
+
+ Word32 *x2even, *x2odd;
+ Word32 temp[512];
+
+ test();
+ test();
+ IF( EQ_16( n, 128 ) || EQ_16( n, 256 ) || EQ_16( n, 512 ) )
+ {
+ idx = fft256_read_indexes;
+
+ /* Combined Digit reverse counter & Length two butterflies */
+ IF( EQ_16( n, 128 ) )
+ {
+ x2 = temp;
+ FOR( i = 0; i < 64; i++ )
+ {
+ j = *idx++;
+ move16();
+ k = *idx++;
+ move16();
+
+ *x2++ = L_add( x[( j >> 1 )], x[( k >> 1 )] ); // Qx
+ move16();
+ *x2++ = L_sub( x[( j >> 1 )], x[( k >> 1 )] ); // Qx
+ move16();
+ }
+ }
+ ELSE IF( EQ_16( n, 256 ) )
+ {
+ x2 = temp;
+ FOR( i = 0; i < 128; i++ )
+ {
+ j = *idx++;
+ move16();
+ k = *idx++;
+ move16();
+
+ *x2++ = L_add( x[j], x[k] ); // Qx
+ move16();
+ *x2++ = L_sub( x[j], x[k] ); // Qx
+ move16();
+ }
+ }
+ ELSE IF( EQ_16( n, 512 ) )
+ {
+ x2even = temp;
+ x2odd = temp + 256;
+
+ FOR( i = 0; i < 128; i++ )
+ {
+ j = shl( *idx, 1 );
+ idx++;
+ k = shl( *idx, 1 );
+ idx++;
+
+ *x2even++ = L_add( x[j], x[k] ); // Qx
+ move16();
+ *x2even++ = L_sub( x[j], x[k] ); // Qx
+ move16();
+ j = add( j, 1 );
+ k = add( k, 1 );
+ *x2odd++ = L_add( x[j], x[k] ); // Qx
+ move16();
+ *x2odd++ = L_sub( x[j], x[k] ); // Qx
+ move16();
+ }
+ }
+
+ /*-----------------------------------------------------------------*
+ * 1st Stage Loop has been Unrolled because n4 is '1' and that
+ * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop
+ * and the associated pointers initialization.
+ * Also, it allows to Put the Data from 'temp' back into 'x' due
+ * to the previous Combined Digit Reverse and Length two butterflies
+ *-----------------------------------------------------------------*/
+
+ /*for_ (k = 2; k < 3; k++)*/
+ {
+ x0 = temp;
+ x1 = x0 + 2;
+ x2 = x; // Qx
+
+ FOR( i = 0; i < n; i += 4 )
+ {
+ *x2++ = L_add( *x0++, *x1 ); /* x[i] = xt + x[i+n2]; */
+ move16();
+ *x2++ = *x0;
+ move16();
+ x0--;
+ *x2++ = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; */
+ move16();
+ x1++;
+ *x2++ = L_negate( *x1 ); /* x[i+n2+n4] = -x[i+n2+n4]; */
+ move16();
+
+ x0 += 4;
+ x1 += 3; /* x1 has already advanced */
+ }
+ }
+ }
+ ELSE
+ {
+ /*-----------------------------------------------------------------*
+ * Digit reverse counter
+ *-----------------------------------------------------------------*/
+
+ j = 0;
+ move16();
+ x0 = &x[0]; // Qx
+ FOR( i = 0; i < ( n - 1 ); i++ )
+ {
+ IF( LT_16( i, j ) )
+ {
+ xt = x[j]; // Qx
+ move32();
+ x[j] = *x0;
+ move32();
+ *x0 = xt;
+ move32();
+ }
+ x0++;
+ k = shr( n, 1 );
+ WHILE( ( k <= j ) )
+ {
+ j = sub( j, k );
+ k = shr( k, 1 );
+ }
+ j = add( j, k );
+ }
+
+ /*-----------------------------------------------------------------*
+ * Length two butterflies
+ *-----------------------------------------------------------------*/
+
+ x0 = &x[0]; // Qx
+ x1 = &x[1]; // Qx
+ FOR( i = 0; i < ( n >> 1 ); i++ )
+ {
+ *x1 = L_sub( *x0, *x1 ); // Qx
+ move32();
+ *x0 = L_sub( L_shl( *x0, 1 ), *x1 ); //*x0 * 2 - *x1 (Qx)
+ move32();
+
+ x0++;
+ x0++;
+ x1++;
+ x1++;
+ }
+
+ /*-----------------------------------------------------------------*
+ * 1st Stage Loop has been Unrolled because n4 is '1' and that
+ * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop
+ * and the associated pointers initialization.
+ *-----------------------------------------------------------------*/
+
+ /* for_ (k = 2; k < 3; k++) */
+ {
+ x0 = x; // Qx
+ x1 = x0 + 2;
+
+ FOR( i = 0; i < n; i += 4 )
+ {
+ *x1 = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; Qx*/
+ move32();
+ *x0 = L_sub( L_shl( *x0, 1 ), *x1++ ); /* x[i] = xt + x[i+n2]; */ /**x0 * 2 - *x1 (Qx)*/
+ move32();
+ *x1 = L_negate( *x1 ); /* x[i+n2+n4] = -x[i+n2+n4]; Qx*/
+ move32();
+
+ x0 += 4;
+ x1 += 3; /* x1 has already advanced */
+ }
+ }
+ }
+
+ /*-----------------------------------------------------------------*
+ * Other butterflies
+ *
+ * The implementation described in [1] has been changed by using
+ * table lookup for evaluating sine and cosine functions. The
+ * variable ind and its increment step are needed to access table
+ * entries. Note that this implementation assumes n4 to be so
+ * small that ind will never exceed the table. Thus the input
+ * argument n and the constant N_MAX_FFT must be set properly.
+ *-----------------------------------------------------------------*/
+
+ n4 = 1;
+ move16();
+ n2 = 2;
+ move16();
+ n1 = 4;
+ move16();
+
+ step = N_MAX_DIV4;
+ move16();
+
+ FOR( k = 3; k <= m; k++ )
+ {
+ step = shr( step, 1 );
+ n4 = shl( n4, 1 );
+ n2 = shl( n2, 1 );
+ n1 = shl( n1, 1 );
+
+ x0 = x;
+ x1 = x0 + n2;
+ x2 = x1 + n4;
+
+ FOR( i = 0; i < n; i += n1 )
+ {
+ *x1 = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; */
+ move32();
+ *x0 = L_sub( L_shl( *x0, 1 ), *x1 ); /* x[i] = xt + x[i+n2]; */ /**x0 * 2 - *x1 (Qx)*/
+ move32();
+ *x2 = L_negate( *x2 ); /* x[i+n2+n4] = -x[i+n2+n4]; Qx */
+ move32();
+
+ s = sincos_t_ext_fx; // Q15
+ c = s + N_MAX_FFT / 4; /* 1024/4 = 256, 256/4=64 Q15*/
+ xi1 = x0;
+ xi3 = xi1 + n2;
+ xi2 = xi3;
+ x0 += n1;
+ xi4 = x0;
+
+ FOR( j = 1; j < n4; j++ )
+ {
+ xi3++;
+ xi1++;
+ xi4--;
+ xi2--;
+ c += step;
+ s += step; /* autoincrement by ar0 */
+
+ t1 = L_add( Mpy_32_16_1( *xi3, *c ), Mpy_32_16_1( *xi4, *s ) ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx*/
+ t2 = L_sub( Mpy_32_16_1( *xi3, *s ), Mpy_32_16_1( *xi4, *c ) ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx*/
+
+ *xi4 = L_sub( *xi2, t2 );
+ move32();
+ *xi2 = L_sub( *xi1, t1 );
+ move32();
+ *xi1 = L_sub( L_shl( *xi1, 1 ), *xi2 ); // Qx
+ move32();
+ *xi3 = L_negate( L_add( L_shl( t2, 1 ), *xi4 ) ); // Qx
+ move32();
+ }
+
+ x1 += n1;
+ x2 += n1;
+ }
+ }
+
+ return;
+}
diff --git a/lib_com/fill_spectrum.c b/lib_com/fill_spectrum_fx.c
similarity index 100%
rename from lib_com/fill_spectrum.c
rename to lib_com/fill_spectrum_fx.c
diff --git a/lib_com/findpulse.c b/lib_com/findpulse_fx.c
similarity index 100%
rename from lib_com/findpulse.c
rename to lib_com/findpulse_fx.c
diff --git a/lib_com/gs_gains.c b/lib_com/gs_gains.c
deleted file mode 100644
index 8fa7694755c7c5ac9f912f26abdff9211895ff07..0000000000000000000000000000000000000000
--- a/lib_com/gs_gains.c
+++ /dev/null
@@ -1,425 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include
-#include "cnst.h"
-#include "rom_com.h"
-#include "prot_fx.h"
-#include "wmc_auto.h"
-
-static void GSC_gain_DQ_fx(
- const Word16 element_mode, /* i : element mode */
- const Word16 enc_dec, /* i : encoder/decoder flag */
- const Word16 coder_type, /* i : Coder type */
- const Word16 Mbands_gn, /* i : Number of band */
- const Word32 core_brate, /* i : Core bitrate */
- const Word16 mean_g, /* i : Average gain Q12 */
- const Word16 *Gain_in, /* i : Unquantized gain vector Q12 */
- Word16 *Gain_out /* o : Level adjusted unquantized gain vector Q12 */
-)
-{
- Word16 Gain_off;
- Word16 i;
-
- /* Gain adjustment to fit ACELP generic inactive coding gain at low rate */
- Gain_off = 0;
- move16();
-
- test();
- IF( coder_type == INACTIVE || EQ_16( coder_type, UNVOICED ) )
- {
- test();
- IF( LE_32( core_brate, ACELP_5k00 ) && EQ_16( coder_type, UNVOICED ) )
- {
- Gain_off = 1843; // 9/20 in Q12
- move16();
- }
- ELSE IF( LE_32( core_brate, ACELP_7k20 ) )
- {
- Gain_off = 1638; // 8/20 in Q12; /* 0 dB */
- move16();
- }
- ELSE IF( LE_32( core_brate, ACELP_8k00 ) )
- {
- Gain_off = 1351; // 6.6f/20 in Q12 /* ~-3.3 dB */
- move16();
- }
- ELSE IF( LE_32( core_brate, ACELP_9k60 ) )
- {
- Gain_off = 983; // 4.8f/20 in Q12 /* ~-2.4 dB */
- move16();
- }
- ELSE IF( LE_32( core_brate, ACELP_11k60 ) )
- {
- Gain_off = 717; // 3.5f/20 in Q12 /* ~-2.4 dB */
- move16();
- }
- ELSE IF( LE_32( core_brate, ACELP_13k20 ) )
- {
- Gain_off = 614; // 3.0f/20 in Q12 /* ~-2.4 dB */
- move16();
- }
- }
-
- test();
- IF( coder_type != INACTIVE && NE_16( coder_type, UNVOICED ) )
- {
- FOR( i = 0; i < Mbands_gn; i++ )
- {
- Gain_out[i] = add( Gain_in[i], mean_g ); // Q12
- move16();
- }
- }
- ELSE
- {
- /*mimic ACELP decay of energy for low rates*/
- test();
- IF( element_mode == EVS_MONO && EQ_16( enc_dec, DEC ) )
- {
- /* This is to keep EVS mono bit-exact with the standard (there might be a small desynchronization between encoder and decoder but there is no real quality or interop. issue) */
- FOR( i = 0; i < Mbands_gn; i++ )
- {
- Gain_out[i] = add( Gain_out[i], sub( mean_g, mult( Gain_off, div_s( i, Mbands_gn ) ) ) ); // Q12
- move16();
- // Gain_out[i] += mean_g - i * ( Gain_off / 20.f ) / ( (float) Mbands_gn );
- }
- }
- ELSE
- {
- FOR( i = 0; i < Mbands_gn; i++ )
- {
- Gain_out[i] = add( Gain_in[i], sub( mean_g, mult( Gain_off, div_s( i, Mbands_gn ) ) ) ); // Q12
- move16();
- // Gain_out[i] = Gain_in[i] + mean_g - ( i * ( Gain_off / 20.f ) / ( (float) Mbands_gn ) );
- }
- }
- }
-
- return;
-}
-
-Word16 gsc_gainQ_ivas_fx(
- BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
- const Word16 element_mode, /* i : element mode */
- const Word16 idchan, /* i : channel ID */
- const Word16 y_gain4[],
- /* i : Energy per band */ // Q12
- Word16 y_gainQ[],
- /* o : quantized energy per band */ // Q12
- const Word32 core_brate, /* i : Core rate */
- const Word16 coder_type, /* i : coding type */
- const Word16 bwidth, /* i : input signal bandwidth */
- const Word16 L_frame, /* i : frame length */
- const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */
- const Word32 core_brate_inp /* i : true core bitrate */
-)
-{
- Word16 y_gain_tmp[MBANDS_GN16k];
- Word16 y_gain_tmp2[MBANDS_GN16k];
- Word16 i, idx_g = 0;
- move16();
- Word16 mean_4g_fx[1], ftmp1_fx;
- Word16 Mbands_gn = MBANDS_GN;
- move16();
- Word16 y_gain_tmp3[MBANDS_GN];
- Word32 L_tmp;
-
- if ( EQ_16( L_frame, L_FRAME16k ) )
- {
- Mbands_gn = MBANDS_GN16k;
- move16();
- }
-
- mean_4g_fx[0] = 0;
- move32();
-
- test();
- test();
- IF( ( EQ_16( coder_type, AUDIO ) || coder_type == INACTIVE ) && bwidth == NB )
- {
- L_tmp = 0;
- move32();
- FOR( i = 0; i < 10; i++ )
- {
- L_tmp = L_add( L_tmp, y_gain4[i] );
- }
- L_tmp = L_sub( Mpy_32_16_1( L_tmp, 3277 /* (1/10.0f) in Q15 */ ), 2457 /* 0.6f in Q12 */ ); // Q12
- ftmp1_fx = extract_l( L_tmp );
- FOR( i = 0; i < Mbands_gn; i++ )
- {
- IF( LT_16( y_gain4[i], ftmp1_fx ) )
- {
- y_gain_tmp2[i] = ftmp1_fx; /*Q12*/
- }
- ELSE
- {
- y_gain_tmp2[i] = y_gain4[i]; /*Q12*/
- }
- move16();
- }
-
- /* Quantized mean gain without clipping */
- L_tmp = 0;
- move32();
- FOR( i = 0; i < 10; i++ )
- {
- L_tmp = L_add( L_tmp, y_gain4[i] );
- }
- L_tmp = Mpy_32_16_1( L_tmp, 3277 /* (1/10.0f) in Q15 */ ); // Q12
- mean_4g_fx[0] = extract_l( L_tmp ); // Q12
- move16();
- idx_g = vquant_fx( mean_4g_fx, Gain_meanNB_fx, mean_4g_fx, Gain_mean_dicNB_fx, 1, 64 );
- push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 );
-
- FOR( i = 0; i < Mbands_gn; i++ )
- {
- y_gain_tmp[i] = sub( y_gain_tmp2[i], mean_4g_fx[0] ); // Q12
- move16();
- }
-
- if ( LT_16( y_gain_tmp[9], -1229 /* -0.3f in Q12 */ ) )
- {
- y_gain_tmp[9] = -1229; /* -0.3f in Q12 */
- move16();
- }
-
- set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 );
- idx_g = vquant_fx( y_gain_tmp, Mean_dic_NB_fx, y_gain_tmp, Gain_dic1_NB_fx, 3, 64 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
-
- IF( LT_32( core_brate, ACELP_9k60 ) )
- {
- idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NB_fx, 3, 32 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
-
- idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NB_fx, 4, 16 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 );
- }
- ELSE
- {
- idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NBHR_fx, 3, 64 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
-
- idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NBHR_fx, 4, 128 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 );
- }
-
- test();
- IF( LE_32( core_brate, ACELP_9k60 ) && coder_type == INACTIVE )
- {
- /* Some energy is needed in high band for stat_noise_uv_enc() to be functional in inactive speech */
- y_gain_tmp[10] = mean_fx( y_gain_tmp + 6, 3 ); /*Q12*/
- move16();
- y_gain_tmp[11] = mean_fx( y_gain_tmp + 7, 3 ); /*Q12*/
- move16();
- y_gain_tmp[12] = mean_fx( y_gain_tmp + 8, 3 ); /*Q12*/
- move16();
- y_gain_tmp[13] = mean_fx( y_gain_tmp + 9, 3 ); /*Q12*/
- move16();
- y_gain_tmp[14] = mean_fx( y_gain_tmp + 10, 3 ); /*Q12*/
- move16();
- y_gain_tmp[15] = mean_fx( y_gain_tmp + 11, 3 ); /*Q12*/
- move16();
- }
- ELSE
- {
- set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 );
- }
- }
- ELSE
- {
- L_tmp = 0;
- move32();
- FOR( i = 0; i < 16; i++ )
- {
- L_tmp = L_add( L_tmp, y_gain4[i] );
- }
- L_tmp = Mpy_32_16_1( L_tmp, 2048 /* (1/16.f) in Q15 */ ); // Q12
- ftmp1_fx = extract_l( L_tmp );
- FOR( i = 0; i < Mbands_gn; i++ )
- {
- IF( LT_16( y_gain4[i], sub( ftmp1_fx, 2457 /* 0.6 in Q12*/ ) ) )
- {
- y_gain_tmp2[i] = sub( ftmp1_fx, 2457 /* 0.6 in Q12*/ );
- }
- ELSE IF( GT_16( y_gain4[i], add( ftmp1_fx, 2457 /* 0.6 in Q12*/ ) ) )
- {
- y_gain_tmp2[i] = add( ftmp1_fx, 2457 /* 0.6 in Q12*/ );
- }
- ELSE
- {
- y_gain_tmp2[i] = y_gain4[i];
- }
- move16();
- }
-
- L_tmp = 0;
- move32();
- FOR( i = 0; i < 16; i++ )
- {
- L_tmp = L_add( L_tmp, y_gain_tmp2[i] );
- }
- L_tmp = Mpy_32_16_1( L_tmp, 2048 /* (1/16.f) in Q15 */ ); // Q12
- mean_4g_fx[0] = extract_l( L_tmp ); // Q12
- move16();
- idx_g = vquant_fx( mean_4g_fx, mean_m_fx, mean_4g_fx, mean_gain_dic_fx, 1, 64 );
- push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 );
-
- /* Subtraction of the average gain */
- FOR( i = 0; i < Mbands_gn; i++ )
- {
- y_gain_tmp[i] = sub( y_gain_tmp2[i], mean_4g_fx[0] ); // Q12
- move16();
- }
-
- IF( LT_32( core_brate, ACELP_9k60 ) )
- {
- /* prediction and quantization of the average gain */
-
- /*--------------------------------------------------------------------------------------*
- * Quantization of the first 8 bands
- * Keep only 4 bands out of the last 8 bands
- *--------------------------------------------------------------------------------------*/
-
- Copy( y_gain_tmp, y_gain_tmp2, 8 );
-
- y_gain_tmp2[8] = y_gain_tmp[8];
- move16();
- y_gain_tmp2[9] = y_gain_tmp[10];
- move16();
- y_gain_tmp2[10] = y_gain_tmp[12];
- move16();
- y_gain_tmp2[11] = y_gain_tmp[14];
- move16();
-
- idx_g = 0;
- move16();
- idx_g = vquant_fx( y_gain_tmp2, YGain_mean_LR_fx, y_gain_tmp2, YGain_dic1_LR_fx, 3, 32 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
-
- test();
- test();
- test();
- IF( !( coder_type == INACTIVE && tdm_LRTD_flag == 0 && EQ_16( idchan, 1 ) ) || GT_32( core_brate_inp, GSC_LRES_GAINQ_LIMIT ) )
- {
- idx_g = vquant_fx( y_gain_tmp2 + 3, YGain_mean_LR_fx + 3, y_gain_tmp2 + 3, YGain_dic2_LR_fx, 4, 32 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
-
- /*----------------------------------------------------------------------*
- * Vector quantization of the first 8 bands + quantization of the 4 bands out of the last 8
- * Interpolation of the last 4 bands Q to create bands 8-16
- *----------------------------------------------------------------------*/
-
- idx_g = vquant_fx( y_gain_tmp2 + 7, YGain_mean_LR_fx + 7, y_gain_tmp2 + 7, YGain_dic3_LR_fx, 5, 32 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
-
- set16_fx( y_gain_tmp2 + 12, 0, MBANDS_GN - 12 );
-
- /* Update to quantized vector */
- Copy( y_gain_tmp2, y_gain_tmp, 8 );
-
- Copy( y_gain_tmp2 + 8, y_gain_tmp3, 4 );
- set16_fx( y_gain_tmp + 8, 0, 8 );
- fft_rel_fx( y_gain_tmp2 + 8, 4, 2 );
-
- Copy( y_gain_tmp2 + 8, y_gain_tmp + 8, 3 );
- y_gain_tmp[15] = y_gain_tmp2[11];
- move16();
- ifft_rel_fx( y_gain_tmp + 8, 8, 3 );
-
- FOR( i = 8; i < 16; i++ )
- {
- y_gain_tmp[i] = shl( mult( y_gain_tmp[i], 23101 /* 1.41 in Q14 */ ), 1 ); /*Q12*/
- move16();
- }
-
- y_gain_tmp[8] = y_gain_tmp3[0];
- move16();
- y_gain_tmp[10] = y_gain_tmp3[1];
- move16();
- y_gain_tmp[12] = y_gain_tmp3[2];
- move16();
- y_gain_tmp[14] = y_gain_tmp3[3];
- move16();
- }
- ELSE
- {
- Copy( y_gain_tmp2, y_gain_tmp, 3 );
- set16_fx( y_gain_tmp + 3, 0, MBANDS_GN16k - 3 );
- }
- }
- ELSE
- {
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- idx_g = vquant_fx( y_gain_tmp, YG_mean16_fx, y_gain_tmp, YG_dicMR_1_fx, 4, 64 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
-
- idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16_fx + 4, y_gain_tmp + 4, YG_dicMR_2_fx, 4, 32 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
-
- idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16_fx + 8, y_gain_tmp + 8, YG_dicMR_3_fx, 4, 32 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
-
- idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16_fx + 12, y_gain_tmp + 12, YG_dicMR_4_fx, 4, 16 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 );
- }
- ELSE
- {
- idx_g = vquant_fx( y_gain_tmp, YG_mean16HR_fx, y_gain_tmp, YG_dicHR_1_fx, 4, 128 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 );
-
- idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16HR_fx + 4, y_gain_tmp + 4, YG_dicHR_2_fx, 4, 64 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
-
- idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16HR_fx + 8, y_gain_tmp + 8, YG_dicHR_3_fx, 4, 64 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
-
- idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16HR_16kHz_fx, y_gain_tmp + 12, YG_dicHR_4_16kHz_fx, 4, 64 );
- push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
-
- idx_g = vquant_fx( y_gain_tmp + 16, YG_meanL2G_16kHz_fx, y_gain_tmp + 16, YG_dicL2G_16kHz_fx, 2, 8 );
- push_indice( hBstr, IND_Y_GAIN_HF, idx_g, 3 );
- }
- }
- }
-
- GSC_gain_DQ_fx( element_mode, ENC, coder_type, Mbands_gn, core_brate, mean_4g_fx[0], y_gain_tmp, y_gainQ );
-
- return mean_4g_fx[0];
-}
diff --git a/lib_com/gs_gains_fx.c b/lib_com/gs_gains_fx.c
index ecfe9aae0f28d32e24ac362414cc1f52f47b58b4..f28af742fe673950c979fde8de6c8835711ebe89 100644
--- a/lib_com/gs_gains_fx.c
+++ b/lib_com/gs_gains_fx.c
@@ -34,11 +34,14 @@
EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0
====================================================================================*/
+#include
+#include
#include "options.h" /* Compilation switches */
#include "cnst.h" /* Common constants */
#include "rom_com.h" /* Static table prototypes */
#include "prot_fx.h"
#include "stl.h"
+#include "wmc_auto.h"
/*-------------------------------------------------------------------*
* Local constants
@@ -66,6 +69,7 @@ static Word16 VDQ_vec_fx( Word16 *Qvec_out_fx, const Word16 *mean_dic_fx, const
/* RETURN ARGUMENTS : */
/* _ None */
/*========================================================================*/
+
void Comp_and_apply_gain_fx(
Word16 exc_diffQ[], /* i/o: Quantized excitation */
Word16 Ener_per_bd_iQ[], /* i : Target ener per band Q13 */
@@ -264,6 +268,7 @@ void Comp_and_apply_gain_ivas_fx(
/* RETURN ARGUMENTS : */
/* _ None */
/*========================================================================*/
+
static Word16 Comp_band_log_ener( /* o : Band gain Q12 */
const Word16 *pt_fx, /* i : Dct input Q_sc */
const Word16 Len, /* i : Lenght en energy accumulation */
@@ -363,127 +368,14 @@ void Ener_per_band_comp_ivas_fx(
return;
}
-void Ener_per_band_comp_ivas_fx_2(
- const Word16 exc_diff[], /* i : target signal Q_exc */
- Word16 y_gain4[], /* o : Energy per band to quantize Q12 */
- const Word16 Q_exc,
- const Word16 Mband, /* i : Max band */
- const Word16 Eflag, /* i : flag of highest band */
- const Word16 L_frame /* i : frame length */
-)
-{
- Word32 etmp, L_tmp;
- Word16 etmp_e;
- const Word16 *pt;
- Word16 i, j, tmp;
- tmp = add( shl( sub( Q15, Q_exc ), 1 ), 1 );
- pt = exc_diff;
- FOR( j = 0; j < 2; j++ )
- {
- y_gain4[j] = 0;
- move16();
- etmp = 42949673; /* 0.02 in Q31 */
- move32();
- etmp_e = 0;
- move16();
-
- pt = exc_diff + shl( j, 3 );
- FOR( i = 0; i < 8; i++ )
- {
- etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e );
- pt++;
- }
-
- /* normalized to 16 bins to easy the quantization */
- etmp_e = add( etmp_e, 1 );
- etmp = Sqrt32( etmp, &etmp_e );
- etmp = BASOP_Util_Log10( etmp, etmp_e ); // Q25
- y_gain4[j] = extract_h( L_shl( etmp, 3 ) ); // Q12
- move16();
- }
-
- FOR( j = 1; j < Mband - 2; j++ )
- {
- etmp = 21474836; /* 0.01 in Q31 */
- move32();
- etmp_e = 0;
- move16();
-
- pt = exc_diff + shl( j, 4 );
- FOR( i = 0; i < 16; i++ )
- {
- etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e );
- pt++;
- }
-
- etmp = Sqrt32( etmp, &etmp_e );
- etmp = BASOP_Util_Log10( etmp, etmp_e ); // Q25
- y_gain4[j + 1] = extract_h( L_shl( etmp, 3 ) ); // Q12
- move16();
- }
-
- IF( EQ_16( Eflag, 1 ) )
- {
- etmp = 21474836; /* 0.01 in Q31 */
- move32();
- etmp_e = 0;
- move16();
-
- pt = exc_diff + shl( j, 4 );
- FOR( i = 0; i < 32; i++ )
- {
- etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e );
- pt++;
- }
-
- etmp_e = sub( etmp_e, 1 );
- etmp = Sqrt32( etmp, &etmp_e );
- etmp = BASOP_Util_Log10( etmp, etmp_e ); // Q25
- y_gain4[j + 1] = extract_h( L_shl( etmp, 3 ) ); // Q12
- move16();
- }
-
- IF( EQ_16( L_frame, L_FRAME16k ) )
- {
- etmp = 21474836; /* 0.01 in Q31 */
- move32();
- etmp_e = 0;
- move16();
-
- FOR( i = 0; i < 32; i++ )
- {
- etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e );
- pt++;
- }
-
- Word16 tmp2 = sub( etmp_e, 1 );
- L_tmp = Sqrt32( etmp, &tmp2 );
- L_tmp = BASOP_Util_Log10( L_tmp, tmp2 ); // Q25
- y_gain4[j + 2] = extract_h( L_shl( L_tmp, 3 ) ); // Q12
- move16();
-
- FOR( i = 0; i < 32; i++ )
- {
- etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e );
- pt++;
- }
-
- etmp_e = sub( etmp_e, 1 );
- etmp = Sqrt32( etmp, &etmp_e );
- etmp = BASOP_Util_Log10( etmp, etmp_e ); // Q25
- y_gain4[j + 3] = extract_h( L_shl( etmp, 3 ) ); // Q12
- move16();
- }
-
- return;
-}
/*-------------------------------------------------------------------*
* gsc_gainQ()
*
* Quantization of the energy per band
*-------------------------------------------------------------------*/
+
static void GSC_gain_adj(
const Word16 coder_type, /* i : Coder type */
const Word32 core_brate, /* i : Bit rate */
@@ -550,11 +442,13 @@ static void GSC_gain_adj(
return;
}
+
/*-------------------------------------------------------------------*
* GSC_gain_adj_ivas_fx()
*
* Quantization of the energy per band
*-------------------------------------------------------------------*/
+
static void GSC_gain_adj_ivas_fx(
const Word16 coder_type, /* i : Coder type */
const Word16 Mbands_gn, /* i : Number of band */
@@ -629,6 +523,404 @@ static void GSC_gain_adj_ivas_fx(
return;
}
+
+/*-------------------------------------------------------------------*
+ * GSC_gain_DQ()
+ *
+ * Form the final vector after gain quantization/Dequantization
+ * Common to both encoder and decoder
+ *-------------------------------------------------------------------*/
+
+static void GSC_gain_DQ_fx(
+ const Word16 element_mode, /* i : element mode */
+ const Word16 enc_dec, /* i : encoder/decoder flag */
+ const Word16 coder_type, /* i : Coder type */
+ const Word16 Mbands_gn, /* i : Number of band */
+ const Word32 core_brate, /* i : Core bitrate */
+ const Word16 mean_g, /* i : Average gain Q12 */
+ const Word16 *Gain_in, /* i : Unquantized gain vector Q12 */
+ Word16 *Gain_out /* o : Level adjusted unquantized gain vector Q12 */
+)
+{
+ Word16 Gain_off;
+ Word16 i;
+
+ /* Gain adjustment to fit ACELP generic inactive coding gain at low rate */
+ Gain_off = 0;
+ move16();
+
+ test();
+ IF( coder_type == INACTIVE || EQ_16( coder_type, UNVOICED ) )
+ {
+ test();
+ IF( LE_32( core_brate, ACELP_5k00 ) && EQ_16( coder_type, UNVOICED ) )
+ {
+ Gain_off = 1843; // 9/20 in Q12
+ move16();
+ }
+ ELSE IF( LE_32( core_brate, ACELP_7k20 ) )
+ {
+ Gain_off = 1638; // 8/20 in Q12; /* 0 dB */
+ move16();
+ }
+ ELSE IF( LE_32( core_brate, ACELP_8k00 ) )
+ {
+ Gain_off = 1351; // 6.6f/20 in Q12 /* ~-3.3 dB */
+ move16();
+ }
+ ELSE IF( LE_32( core_brate, ACELP_9k60 ) )
+ {
+ Gain_off = 983; // 4.8f/20 in Q12 /* ~-2.4 dB */
+ move16();
+ }
+ ELSE IF( LE_32( core_brate, ACELP_11k60 ) )
+ {
+ Gain_off = 717; // 3.5f/20 in Q12 /* ~-2.4 dB */
+ move16();
+ }
+ ELSE IF( LE_32( core_brate, ACELP_13k20 ) )
+ {
+ Gain_off = 614; // 3.0f/20 in Q12 /* ~-2.4 dB */
+ move16();
+ }
+ }
+
+ test();
+ IF( coder_type != INACTIVE && NE_16( coder_type, UNVOICED ) )
+ {
+ FOR( i = 0; i < Mbands_gn; i++ )
+ {
+ Gain_out[i] = add( Gain_in[i], mean_g ); // Q12
+ move16();
+ }
+ }
+ ELSE
+ {
+ /*mimic ACELP decay of energy for low rates*/
+ test();
+ IF( element_mode == EVS_MONO && EQ_16( enc_dec, DEC ) )
+ {
+ /* This is to keep EVS mono bit-exact with the standard (there might be a small desynchronization between encoder and decoder but there is no real quality or interop. issue) */
+ FOR( i = 0; i < Mbands_gn; i++ )
+ {
+ Gain_out[i] = add( Gain_out[i], sub( mean_g, mult( Gain_off, div_s( i, Mbands_gn ) ) ) ); // Q12
+ move16();
+ // Gain_out[i] += mean_g - i * ( Gain_off / 20.f ) / ( (float) Mbands_gn );
+ }
+ }
+ ELSE
+ {
+ FOR( i = 0; i < Mbands_gn; i++ )
+ {
+ Gain_out[i] = add( Gain_in[i], sub( mean_g, mult( Gain_off, div_s( i, Mbands_gn ) ) ) ); // Q12
+ move16();
+ // Gain_out[i] = Gain_in[i] + mean_g - ( i * ( Gain_off / 20.f ) / ( (float) Mbands_gn ) );
+ }
+ }
+ }
+
+ return;
+}
+
+
+/*-------------------------------------------------------------------*
+ * gsc_gainQ()
+ *
+ * Quantization of the energy per band
+ *-------------------------------------------------------------------*/
+
+Word16 gsc_gainQ_ivas_fx(
+ BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 idchan, /* i : channel ID */
+ const Word16 y_gain4[],
+ /* i : Energy per band */ // Q12
+ Word16 y_gainQ[],
+ /* o : quantized energy per band */ // Q12
+ const Word32 core_brate, /* i : Core rate */
+ const Word16 coder_type, /* i : coding type */
+ const Word16 bwidth, /* i : input signal bandwidth */
+ const Word16 L_frame, /* i : frame length */
+ const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */
+ const Word32 core_brate_inp /* i : true core bitrate */
+)
+{
+ Word16 y_gain_tmp[MBANDS_GN16k];
+ Word16 y_gain_tmp2[MBANDS_GN16k];
+ Word16 i, idx_g = 0;
+ move16();
+ Word16 mean_4g_fx[1], ftmp1_fx;
+ Word16 Mbands_gn = MBANDS_GN;
+ move16();
+ Word16 y_gain_tmp3[MBANDS_GN];
+ Word32 L_tmp;
+
+ if ( EQ_16( L_frame, L_FRAME16k ) )
+ {
+ Mbands_gn = MBANDS_GN16k;
+ move16();
+ }
+
+ mean_4g_fx[0] = 0;
+ move32();
+
+ test();
+ test();
+ IF( ( EQ_16( coder_type, AUDIO ) || coder_type == INACTIVE ) && bwidth == NB )
+ {
+ L_tmp = 0;
+ move32();
+ FOR( i = 0; i < 10; i++ )
+ {
+ L_tmp = L_add( L_tmp, y_gain4[i] );
+ }
+ L_tmp = L_sub( Mpy_32_16_1( L_tmp, 3277 /* (1/10.0f) in Q15 */ ), 2457 /* 0.6f in Q12 */ ); // Q12
+ ftmp1_fx = extract_l( L_tmp );
+ FOR( i = 0; i < Mbands_gn; i++ )
+ {
+ IF( LT_16( y_gain4[i], ftmp1_fx ) )
+ {
+ y_gain_tmp2[i] = ftmp1_fx; /*Q12*/
+ }
+ ELSE
+ {
+ y_gain_tmp2[i] = y_gain4[i]; /*Q12*/
+ }
+ move16();
+ }
+
+ /* Quantized mean gain without clipping */
+ L_tmp = 0;
+ move32();
+ FOR( i = 0; i < 10; i++ )
+ {
+ L_tmp = L_add( L_tmp, y_gain4[i] );
+ }
+ L_tmp = Mpy_32_16_1( L_tmp, 3277 /* (1/10.0f) in Q15 */ ); // Q12
+ mean_4g_fx[0] = extract_l( L_tmp ); // Q12
+ move16();
+ idx_g = vquant_fx( mean_4g_fx, Gain_meanNB_fx, mean_4g_fx, Gain_mean_dicNB_fx, 1, 64 );
+ push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 );
+
+ FOR( i = 0; i < Mbands_gn; i++ )
+ {
+ y_gain_tmp[i] = sub( y_gain_tmp2[i], mean_4g_fx[0] ); // Q12
+ move16();
+ }
+
+ if ( LT_16( y_gain_tmp[9], -1229 /* -0.3f in Q12 */ ) )
+ {
+ y_gain_tmp[9] = -1229; /* -0.3f in Q12 */
+ move16();
+ }
+
+ set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 );
+ idx_g = vquant_fx( y_gain_tmp, Mean_dic_NB_fx, y_gain_tmp, Gain_dic1_NB_fx, 3, 64 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
+
+ IF( LT_32( core_brate, ACELP_9k60 ) )
+ {
+ idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NB_fx, 3, 32 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
+
+ idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NB_fx, 4, 16 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 );
+ }
+ ELSE
+ {
+ idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NBHR_fx, 3, 64 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
+
+ idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NBHR_fx, 4, 128 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 );
+ }
+
+ test();
+ IF( LE_32( core_brate, ACELP_9k60 ) && coder_type == INACTIVE )
+ {
+ /* Some energy is needed in high band for stat_noise_uv_enc() to be functional in inactive speech */
+ y_gain_tmp[10] = mean_fx( y_gain_tmp + 6, 3 ); /*Q12*/
+ move16();
+ y_gain_tmp[11] = mean_fx( y_gain_tmp + 7, 3 ); /*Q12*/
+ move16();
+ y_gain_tmp[12] = mean_fx( y_gain_tmp + 8, 3 ); /*Q12*/
+ move16();
+ y_gain_tmp[13] = mean_fx( y_gain_tmp + 9, 3 ); /*Q12*/
+ move16();
+ y_gain_tmp[14] = mean_fx( y_gain_tmp + 10, 3 ); /*Q12*/
+ move16();
+ y_gain_tmp[15] = mean_fx( y_gain_tmp + 11, 3 ); /*Q12*/
+ move16();
+ }
+ ELSE
+ {
+ set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 );
+ }
+ }
+ ELSE
+ {
+ L_tmp = 0;
+ move32();
+ FOR( i = 0; i < 16; i++ )
+ {
+ L_tmp = L_add( L_tmp, y_gain4[i] );
+ }
+ L_tmp = Mpy_32_16_1( L_tmp, 2048 /* (1/16.f) in Q15 */ ); // Q12
+ ftmp1_fx = extract_l( L_tmp );
+ FOR( i = 0; i < Mbands_gn; i++ )
+ {
+ IF( LT_16( y_gain4[i], sub( ftmp1_fx, 2457 /* 0.6 in Q12*/ ) ) )
+ {
+ y_gain_tmp2[i] = sub( ftmp1_fx, 2457 /* 0.6 in Q12*/ );
+ }
+ ELSE IF( GT_16( y_gain4[i], add( ftmp1_fx, 2457 /* 0.6 in Q12*/ ) ) )
+ {
+ y_gain_tmp2[i] = add( ftmp1_fx, 2457 /* 0.6 in Q12*/ );
+ }
+ ELSE
+ {
+ y_gain_tmp2[i] = y_gain4[i];
+ }
+ move16();
+ }
+
+ L_tmp = 0;
+ move32();
+ FOR( i = 0; i < 16; i++ )
+ {
+ L_tmp = L_add( L_tmp, y_gain_tmp2[i] );
+ }
+ L_tmp = Mpy_32_16_1( L_tmp, 2048 /* (1/16.f) in Q15 */ ); // Q12
+ mean_4g_fx[0] = extract_l( L_tmp ); // Q12
+ move16();
+ idx_g = vquant_fx( mean_4g_fx, mean_m_fx, mean_4g_fx, mean_gain_dic_fx, 1, 64 );
+ push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 );
+
+ /* Subtraction of the average gain */
+ FOR( i = 0; i < Mbands_gn; i++ )
+ {
+ y_gain_tmp[i] = sub( y_gain_tmp2[i], mean_4g_fx[0] ); // Q12
+ move16();
+ }
+
+ IF( LT_32( core_brate, ACELP_9k60 ) )
+ {
+ /* prediction and quantization of the average gain */
+
+ /*--------------------------------------------------------------------------------------*
+ * Quantization of the first 8 bands
+ * Keep only 4 bands out of the last 8 bands
+ *--------------------------------------------------------------------------------------*/
+
+ Copy( y_gain_tmp, y_gain_tmp2, 8 );
+
+ y_gain_tmp2[8] = y_gain_tmp[8];
+ move16();
+ y_gain_tmp2[9] = y_gain_tmp[10];
+ move16();
+ y_gain_tmp2[10] = y_gain_tmp[12];
+ move16();
+ y_gain_tmp2[11] = y_gain_tmp[14];
+ move16();
+
+ idx_g = 0;
+ move16();
+ idx_g = vquant_fx( y_gain_tmp2, YGain_mean_LR_fx, y_gain_tmp2, YGain_dic1_LR_fx, 3, 32 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
+
+ test();
+ test();
+ test();
+ IF( !( coder_type == INACTIVE && tdm_LRTD_flag == 0 && EQ_16( idchan, 1 ) ) || GT_32( core_brate_inp, GSC_LRES_GAINQ_LIMIT ) )
+ {
+ idx_g = vquant_fx( y_gain_tmp2 + 3, YGain_mean_LR_fx + 3, y_gain_tmp2 + 3, YGain_dic2_LR_fx, 4, 32 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
+
+ /*----------------------------------------------------------------------*
+ * Vector quantization of the first 8 bands + quantization of the 4 bands out of the last 8
+ * Interpolation of the last 4 bands Q to create bands 8-16
+ *----------------------------------------------------------------------*/
+
+ idx_g = vquant_fx( y_gain_tmp2 + 7, YGain_mean_LR_fx + 7, y_gain_tmp2 + 7, YGain_dic3_LR_fx, 5, 32 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
+
+ set16_fx( y_gain_tmp2 + 12, 0, MBANDS_GN - 12 );
+
+ /* Update to quantized vector */
+ Copy( y_gain_tmp2, y_gain_tmp, 8 );
+
+ Copy( y_gain_tmp2 + 8, y_gain_tmp3, 4 );
+ set16_fx( y_gain_tmp + 8, 0, 8 );
+ fft_rel_fx( y_gain_tmp2 + 8, 4, 2 );
+
+ Copy( y_gain_tmp2 + 8, y_gain_tmp + 8, 3 );
+ y_gain_tmp[15] = y_gain_tmp2[11];
+ move16();
+ ifft_rel_fx( y_gain_tmp + 8, 8, 3 );
+
+ FOR( i = 8; i < 16; i++ )
+ {
+ y_gain_tmp[i] = shl( mult( y_gain_tmp[i], 23101 /* 1.41 in Q14 */ ), 1 ); /*Q12*/
+ move16();
+ }
+
+ y_gain_tmp[8] = y_gain_tmp3[0];
+ move16();
+ y_gain_tmp[10] = y_gain_tmp3[1];
+ move16();
+ y_gain_tmp[12] = y_gain_tmp3[2];
+ move16();
+ y_gain_tmp[14] = y_gain_tmp3[3];
+ move16();
+ }
+ ELSE
+ {
+ Copy( y_gain_tmp2, y_gain_tmp, 3 );
+ set16_fx( y_gain_tmp + 3, 0, MBANDS_GN16k - 3 );
+ }
+ }
+ ELSE
+ {
+ IF( EQ_16( L_frame, L_FRAME ) )
+ {
+ idx_g = vquant_fx( y_gain_tmp, YG_mean16_fx, y_gain_tmp, YG_dicMR_1_fx, 4, 64 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
+
+ idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16_fx + 4, y_gain_tmp + 4, YG_dicMR_2_fx, 4, 32 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
+
+ idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16_fx + 8, y_gain_tmp + 8, YG_dicMR_3_fx, 4, 32 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 );
+
+ idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16_fx + 12, y_gain_tmp + 12, YG_dicMR_4_fx, 4, 16 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 );
+ }
+ ELSE
+ {
+ idx_g = vquant_fx( y_gain_tmp, YG_mean16HR_fx, y_gain_tmp, YG_dicHR_1_fx, 4, 128 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 );
+
+ idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16HR_fx + 4, y_gain_tmp + 4, YG_dicHR_2_fx, 4, 64 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
+
+ idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16HR_fx + 8, y_gain_tmp + 8, YG_dicHR_3_fx, 4, 64 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
+
+ idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16HR_16kHz_fx, y_gain_tmp + 12, YG_dicHR_4_16kHz_fx, 4, 64 );
+ push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 );
+
+ idx_g = vquant_fx( y_gain_tmp + 16, YG_meanL2G_16kHz_fx, y_gain_tmp + 16, YG_dicL2G_16kHz_fx, 2, 8 );
+ push_indice( hBstr, IND_Y_GAIN_HF, idx_g, 3 );
+ }
+ }
+ }
+
+ GSC_gain_DQ_fx( element_mode, ENC, coder_type, Mbands_gn, core_brate, mean_4g_fx[0], y_gain_tmp, y_gainQ );
+
+ return mean_4g_fx[0];
+}
+
+
/*==========================================================================*/
/* FUNCTION : Word16 gsc_gaindec_fx () */
/*--------------------------------------------------------------------------*/
@@ -649,6 +941,7 @@ static void GSC_gain_adj_ivas_fx(
/* RETURN ARGUMENTS : */
/* _ (Word16) : average frequency gain */
/*==========================================================================*/
+
Word16 gsc_gaindec_fx( /* o : average frequency gain */
Decoder_State *st_fx, /* i/o: decoder state structure */
Word16 y_gainQ_fx[], /* o : quantized gain per band */
@@ -786,6 +1079,7 @@ Word16 gsc_gaindec_fx( /* o : average frequency gai
return mean_4g_fx;
}
+
/*==========================================================================*/
/* FUNCTION : Word16 gsc_gaindec_ivas_fx () */
/*--------------------------------------------------------------------------*/
@@ -806,6 +1100,7 @@ Word16 gsc_gaindec_fx( /* o : average frequency gai
/* RETURN ARGUMENTS : */
/* _ (Word16) : average frequency gain */
/*==========================================================================*/
+
Word16 gsc_gaindec_ivas_fx( /* o : average frequency gain */
Decoder_State *st_fx, /* i/o: decoder state structure */
Word16 y_gainQ_fx[], /* o : quantized gain per band Q12 */
@@ -970,11 +1265,13 @@ Word16 gsc_gaindec_ivas_fx( /* o : average frequenc
return mean_4g_fx;
}
+
/*-------------------------------------------------------------------*
* gsc_gainQ()
*
* Quantization of the energy per band
*-------------------------------------------------------------------*/
+
Word16 gsc_gainQ_fx( /*Q12*/
BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
const Word16 y_gain4[], /* i : Energy per band Q12 */
@@ -1200,11 +1497,14 @@ Word16 gsc_gainQ_fx( /*Q12*/
return mean_4g[0]; /*Q12*/
}
+
+
/*-------------------------------------------------------------------*
* VDQ_vec()
*
* Return the dequantized vector of index
*-------------------------------------------------------------------*/
+
static Word16 VDQ_vec_fx(
Word16 *Qvec_out_fx, /* o: Quanitzed vector */
const Word16 *mean_dic_fx, /* i: average codebook */
diff --git a/lib_com/gs_inact_switching_fx.c b/lib_com/gs_inact_switching_fx.c
index 54fef9e37ca4a881fd62c05b38e13e81d641476f..119811275e34a99e7b2f22226dc8385c9709fc6f 100644
--- a/lib_com/gs_inact_switching_fx.c
+++ b/lib_com/gs_inact_switching_fx.c
@@ -33,143 +33,24 @@
/*------------------------------------------------------------------------*/
/* OUTPUT ARGUMENTS : */
/*------------------------------------------------------------------------*/
-
/*------------------------------------------------------------------------*/
/* RETURN ARGUMENTS : */
/* _ None */
/*========================================================================*/
-void Inac_swtch_ematch_fx(
- Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/
- Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */
- Word16 lt_ener_per_band[], /* i/o: Long term energy per band Q12 */
- const Word16 coder_type, /* i : Coding mode */
- const Word16 L_frame, /* i : Frame lenght */
- const Word32 core_brate, /* i : Core bit rate */
- const Word16 Q_exc /* i : input and output format of exc2 */
- ,
- const Word16 bfi /* i : frame lost indicator */
- ,
- const Word16 last_core, /* i : Last core used */
- const Word16 last_codec_mode /* i : Last codec mode */
-)
-{
- Word16 Ener_per_bd[MBANDS_GN];
- Word16 ftmp;
- Word16 *pt_exc;
- Word16 j, i;
-
- Word16 exp, frac;
- Word32 L_tmp;
-
- /*--------------------------------------------------------------------------
- * average energy per band
- *--------------------------------------------------------------------------*/
-
- test();
- test();
- test();
- test();
- test();
- test();
- IF( EQ_16( coder_type, AUDIO ) && bfi == 0 )
- {
- Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1 );
-
- /* reset long-term energy per band */
- FOR( i = 0; i < MBANDS_GN; i++ )
- {
- lt_ener_per_band[i] = Ener_per_bd[i];
- move16();
- }
- }
- ELSE IF( EQ_16( coder_type, VOICED ) || EQ_16( coder_type, GENERIC ) || EQ_16( coder_type, TRANSITION ) || ( last_core != ACELP_CORE ) || NE_16( last_codec_mode, MODE1 ) )
- {
- /* Find spectrum and energy per band for GC and VC frames */
- edct_16fx( exc2, dct_exc_tmp, L_frame, 5, EVS_MONO );
-
- Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1 );
-
- /* reset long-term energy per band */
- FOR( i = 0; i < MBANDS_GN; i++ )
- {
- lt_ener_per_band[i] = Ener_per_bd[i];
- move16();
- }
- }
- ELSE IF( ( coder_type == INACTIVE ) && LE_32( core_brate, ACELP_24k40 ) )
- {
- /* Find spectrum and energy per band for inactive frames */
- edct_16fx( exc2, dct_exc_tmp, L_frame, 5, EVS_MONO );
- Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1 );
-
- /* More agressive smoothing in the first 50 frames */
- pt_exc = dct_exc_tmp;
- move16();
- FOR( i = 0; i < MBANDS_GN; i++ )
- {
- /* Compute smoothing gain to apply with gain limitation */
- L_tmp = L_mult( ALPHA0_FX, lt_ener_per_band[i] ); /*Q(15+12+1)=Q(28) */
- L_tmp = L_mac( L_tmp, BETA0_FX, Ener_per_bd[i] ); /*Q28 */
- lt_ener_per_band[i] = round_fx( L_tmp ); /*Q12 */
- move16();
-
- ftmp = sub( lt_ener_per_band[i], Ener_per_bd[i] ); /*Q12 */
-
- /* ftmp = (float)pow(10, ftmp);= pow(2,3.321928*ftmp);*/
-
- L_tmp = L_mult( 27213, ftmp ); /*Q(13+12+1)=Q26 ; 27213=3.321928 in Q13 */
- L_tmp = L_shr( L_tmp, 10 ); /* From Q26 to Q16 */
- frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of ftmp */
- ftmp = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */
- /* output of Pow2() will be: */
- /* 16384 < Pow2() <= 32767 */
-
- exp = sub( exp, 14 );
- IF( LT_16( i, 2 ) )
- {
- FOR( j = 0; j < 8; j++ )
- {
- L_tmp = L_mult( *pt_exc, ftmp ); /* Q_exc*Q0 -> Q(Q_exc+1) */
- L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc+1) -> Q(16+Q_exc)*/
- *pt_exc = round_fx_sat( L_tmp );
- move16();
- pt_exc++;
- }
- }
- ELSE
- {
- FOR( j = 0; j < 16; j++ )
- {
- L_tmp = L_mult( *pt_exc, ftmp ); /* Q_exc*Q0 -> Q(Q_exc+1) */
- L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc+1) -> Q(16+Q_exc)*/
- *pt_exc = round_fx_sat( L_tmp ); /*Q_exc*/
- move16();
- pt_exc++;
- }
- }
- }
-
- /* Going back to time */
- edct_16fx( dct_exc_tmp, exc2, L_frame, 5, EVS_MONO );
- }
-
- return;
-}
-
-void Inac_switch_ematch_ivas_fx(
+void Inac_switch_ematch_fx(
Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/
Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */
Word16 lt_ener_per_band[], /* i/o: Long term energy per band Q12 */
const Word16 coder_type, /* i : Coding mode */
- const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */
+ const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */
const Word16 L_frame, /* i : Frame lenght */
const Word16 Q_exc, /* i : input and output format of exc2 */
const Word16 bfi, /* i : frame lost indicator */
const Word16 last_core, /* i : Last core used */
const Word16 last_codec_mode, /* i : Last codec mode */
- const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag*/
- const Word16 element_mode /* i : element mode */
+ const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */
+ const Word16 element_mode /* i : element mode */
)
{
Word16 Ener_per_bd[MBANDS_GN16k];
@@ -250,31 +131,62 @@ void Inac_switch_ematch_ivas_fx(
exp = sub( exp, 14 );
IF( LT_16( i, 2 ) )
{
- FOR( j = 0; j < 8; j++ )
+ IF( EQ_16( element_mode, EVS_MONO ) )
{
- L_tmp = L_mult0( *pt_exc, ftmp );
- L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/
- *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/
- move16();
- pt_exc++;
+ FOR( j = 0; j < 8; j++ )
+ {
+ L_tmp = L_mult( *pt_exc, ftmp );
+ L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/
+ *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/
+ move16();
+ pt_exc++;
+ }
+ }
+ ELSE
+ {
+ FOR( j = 0; j < 8; j++ )
+ {
+ L_tmp = L_mult0( *pt_exc, ftmp );
+ L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/
+ *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/
+ move16();
+ pt_exc++;
+ }
}
}
ELSE
{
- FOR( j = 0; j < 16; j++ )
+ IF( EQ_16( element_mode, EVS_MONO ) )
+ {
+ FOR( j = 0; j < 16; j++ )
+ {
+ L_tmp = L_mult( *pt_exc, ftmp );
+ L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/
+ *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/
+ move16();
+ pt_exc++;
+ }
+ }
+ ELSE
{
- L_tmp = L_mult0( *pt_exc, ftmp );
- L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/
- *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/
- move16();
- pt_exc++;
+ FOR( j = 0; j < 16; j++ )
+ {
+ L_tmp = L_mult0( *pt_exc, ftmp );
+ L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/
+ *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/
+ move16();
+ pt_exc++;
+ }
}
}
}
/* Going back to time */
- Scale_sig( dct_exc_tmp, 240, 1 ); // Q_exc
- Scale_sig( exc2, 240, 1 ); // Q_exc
+ IF( GT_16( element_mode, EVS_MONO ) )
+ {
+ Scale_sig( dct_exc_tmp, 240, 1 ); // Q_exc
+ Scale_sig( exc2, 240, 1 ); // Q_exc
+ }
edct_16fx( dct_exc_tmp, exc2, L_frame, 5, element_mode );
}
diff --git a/lib_com/gs_noisefill_fx.c b/lib_com/gs_noisefill_fx.c
index 2e00e4641e177d2e17d2bbecbe6c93f93c522e1a..208f205693ce9d67d04e96870bfcf4a15ea12d12 100644
--- a/lib_com/gs_noisefill_fx.c
+++ b/lib_com/gs_noisefill_fx.c
@@ -1332,32 +1332,46 @@ void highband_exc_dct_in_ivas_fx(
}
}
- Word16 Q_tmp = *Q_exc;
- move16();
- Word16 Q_old = *Q_exc;
- move16();
- Comp_and_apply_gain_ivas_fx( exc_diffQ, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 0, Qexc_diffQ, Q_exc );
-
- IF( exc_wo_nf != NULL )
+ IF( EQ_16( element_mode, EVS_MONO ) )
{
- Comp_and_apply_gain_ivas_fx( exc_wo_nf, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 1, Qexc_diffQ, &Q_tmp );
- IF( GT_16( Q_tmp, *Q_exc ) )
+ Comp_and_apply_gain_fx( exc_diffQ, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 0, Qexc_diffQ, *Q_exc );
+
+ IF( exc_wo_nf != NULL )
{
- Scale_sig( exc_wo_nf, L_frame, sub( *Q_exc, Q_tmp ) );
+ Comp_and_apply_gain_fx( exc_wo_nf, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 1, Qexc_diffQ, *Q_exc );
+ Vr_add( exc_dct_in, exc_wo_nf, exc_wo_nf, L_frame );
}
- ELSE IF( LT_16( Q_tmp, *Q_exc ) )
- {
- Scale_sig( exc_diffQ, L_frame, sub( Q_tmp, *Q_exc ) );
- *Q_exc = Q_tmp;
- move16();
- }
- Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) );
- Vr_add( exc_dct_in, exc_wo_nf, exc_wo_nf, L_frame );
}
ELSE
{
- Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) );
+ Word16 Q_tmp = *Q_exc;
+ move16();
+ Word16 Q_old = *Q_exc;
+ move16();
+ Comp_and_apply_gain_ivas_fx( exc_diffQ, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 0, Qexc_diffQ, Q_exc );
+
+ IF( exc_wo_nf != NULL )
+ {
+ Comp_and_apply_gain_ivas_fx( exc_wo_nf, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 1, Qexc_diffQ, &Q_tmp );
+ IF( GT_16( Q_tmp, *Q_exc ) )
+ {
+ Scale_sig( exc_wo_nf, L_frame, sub( *Q_exc, Q_tmp ) );
+ }
+ ELSE IF( LT_16( Q_tmp, *Q_exc ) )
+ {
+ Scale_sig( exc_diffQ, L_frame, sub( Q_tmp, *Q_exc ) );
+ *Q_exc = Q_tmp;
+ move16();
+ }
+ Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) );
+ Vr_add( exc_dct_in, exc_wo_nf, exc_wo_nf, L_frame );
+ }
+ ELSE
+ {
+ Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) );
+ }
}
+
/*--------------------------------------------------------------------------------------*
* add the correction layer to the LF bins,
* and add the quantized pulses or the noise for the higher part of the spectrum
@@ -1397,7 +1411,10 @@ void highband_exc_dct_in_ivas_fx(
Q_hb_exc = 0;
move16();
envelop_modify_fx( exc_diffQ, seed_tcx, last_bin, Ener_per_bd_iQ, *Q_exc, &Q_hb_exc );
- IF( GT_16( *Q_exc, Q_hb_exc ) )
+
+ test();
+ test();
+ IF( GT_16( *Q_exc, Q_hb_exc ) && GT_16( element_mode, EVS_MONO ) && exc_wo_nf != NULL )
{
Scale_sig( exc_wo_nf, L_frame, sub( Q_hb_exc, *Q_exc ) );
*Q_exc = Q_hb_exc;
diff --git a/lib_com/gs_preech_fx.c b/lib_com/gs_preech_fx.c
index 3b3eaa7776b9ff3c7403e4cb7f30decf8bf77a2b..16d3ce0e51bc79ee06acccdeaac96b3c6a8b737d 100644
--- a/lib_com/gs_preech_fx.c
+++ b/lib_com/gs_preech_fx.c
@@ -177,9 +177,10 @@ void pre_echo_att_ivas_fx(
move16();
Word16 ratio_fx;
Word16 attack_pos_fx, i;
- Word32 L_tmp, L_tmp1;
- Word16 tmp, n1, n2, exp, frac1, frac2;
+ Word32 L_tmp;
+ Word16 tmp, tmp_e;
Word32 etmp1_fx;
+ Word16 etmp_e;
Word16 att_len;
test();
@@ -220,32 +221,19 @@ void pre_echo_att_ivas_fx(
IF( GT_32( etmp_fx, *Last_frame_ener_fx ) && attack_pos_fx > 0 )
{
/* Find the average energy before the attack */
- L_tmp = sum32_fx( finc_fx, attack_pos_fx ); /*Q1 */
- L_tmp1 = L_shr( L_mult( attack_pos_fx, attack_pos_fx ), 1 ); /*Q0 */
- tmp = round_fx( Isqrt( L_tmp1 ) ); /*Q15 */
- L_tmp = L_shr( L_tmp, 2 ); /*Q1 ; ATT_SEG_LEN=4 */
- etmp_fx = Mult_32_16( L_tmp, tmp ); /*Q1 */
-
- etmp_fx = L_shr( etmp_fx, add( 1 - 4, shl( Q_new, 1 ) ) ); /* makes etmp i nQ4 as *Last_frame_ener_fx */
- /* Find the correction factor and apply it before the attack */
- /* ratio = (float)sqrt(*Last_frame_ener/etmp);*/
- /* = isqrt(etmp/(*Last_frame_ener)) */
- etmp_fx = L_max( etmp_fx, 1 );
- *Last_frame_ener_fx = L_max( *Last_frame_ener_fx, 1 );
- move32();
- n1 = norm_l( etmp_fx );
- n2 = norm_l( *Last_frame_ener_fx );
-
- n1 = sub( n1, 1 );
- exp = sub( n1, n2 );
-
- frac1 = round_fx( L_shl( etmp_fx, n1 ) );
- frac2 = round_fx_sat( L_shl_sat( *Last_frame_ener_fx, n2 ) );
- L_tmp = L_mult0( 128, div_s( frac1, frac2 ) ); /* s = gain_out / gain_in */
- L_tmp = L_shr( L_tmp, exp ); /* add exponent */
+ etmp_fx = sum32_fx( finc_fx, attack_pos_fx );
+ etmp_e = sub( 31, add( shl( Q_new, 1 ), 1 ) );
+ etmp_fx = L_add( etmp_fx, L_shr( 21474836 /*0.01 in Q31*/, etmp_e ) ); /* etmp = etmp + 0.01; (exp = etmp_e) */
+ etmp_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( etmp_fx, L_mult0( attack_pos_fx, ATT_SEG_LEN ), &tmp_e ) );
+ tmp_e = add( tmp_e, sub( etmp_e, 31 ) );
+ etmp_e = tmp_e;
+ move16();
- L_tmp = Isqrt( L_tmp );
- ratio_fx = round_fx( L_shl( L_tmp, 9 ) );
+ /* Find the correction factor and apply it before the attack */
+ tmp = BASOP_Util_Divide3232_Scale( *Last_frame_ener_fx, etmp_fx, &tmp_e ); /* numerator Q = 2 * Q_new + 1; denominator Q = 31 - tmp_e */
+ tmp_e = add( tmp_e, sub( sub( 31, etmp_e ), add( shl( Q_new, 1 ), 1 ) ) ); /* tmp_e = tmp_e + (31 - tmp_e) - (2 * Q_new + 1) */
+ tmp = Sqrt16( tmp, &tmp_e );
+ ratio_fx = shr_sat( tmp, sub( 2, tmp_e ) ); /* Q13 */
/* Pre-echo atttenuation should never increase the energy */
ratio_fx = s_min( ratio_fx, 8192 /* 1 in Q13 */ ); /* Q13 */
diff --git a/lib_com/hp50_fx.c b/lib_com/hp50_fx.c
index f5e7105cfcf9dfeebad0e4bff0d5a262cc8a7dd8..f1864d7a792a27526a97321276cde5df053c8bb0 100644
--- a/lib_com/hp50_fx.c
+++ b/lib_com/hp50_fx.c
@@ -458,14 +458,8 @@ void hp20_fx_32(
{
Word16 i;
Word32 a1_fx, a2_fx, b1_fx, b2_fx;
-#ifdef OPT_STEREO_32KBPS_V1
- Word16 Qy1, Qy2, Qmin;
- Word64 y0_fx64, y1_fx64, y2_fx64;
- Word32 x0, x1, x2;
-#else /* OPT_STEREO_32KBPS_V1 */
Word16 Qx0, Qx1, Qx2, Qy1, Qprev_y1, Qy2, Qprev_y2, Qmin;
Word64 x0_fx64, x1_fx64, x2_fx64, y0_fx64, y1_fx64, y2_fx64, R1, R2, R3, R4, R5;
-#endif /* OPT_STEREO_32KBPS_V1 */
IF( EQ_32( Fs, 8000 ) )
{
@@ -516,64 +510,15 @@ void hp20_fx_32(
move32();
move32();
-#ifdef OPT_STEREO_32KBPS_V1
- y1_fx64 = W_add( W_deposit32_l( mem_fx[0] ), W_deposit32_h( mem_fx[1] ) );
- y2_fx64 = W_add( W_deposit32_l( mem_fx[2] ), W_deposit32_h( mem_fx[3] ) );
-
- x0 = mem_fx[4];
- move32();
- x1 = mem_fx[5];
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
Qprev_y1 = extract_l( mem_fx[4] );
Qprev_y2 = extract_l( mem_fx[5] );
y1_fx64 = W_deposit32_l( mem_fx[0] );
y2_fx64 = W_deposit32_l( mem_fx[1] );
x0_fx64 = W_deposit32_l( mem_fx[2] );
x1_fx64 = W_deposit32_l( mem_fx[3] );
-#endif /* OPT_STEREO_32KBPS_V1 */
FOR( i = 0; i < lg; i++ )
{
-#ifdef OPT_STEREO_32KBPS_V1
- x2 = x1;
- move32();
- x1 = x0;
- move32();
- x0 = signal_fx[i];
- move32();
-
- Qy1 = W_norm( y1_fx64 );
- if ( y1_fx64 == 0 )
- {
- Qy1 = 62;
- move16();
- }
-
- Qy2 = W_norm( y2_fx64 );
- if ( y2_fx64 == 0 )
- {
- Qy2 = 62;
- move16();
- }
-
- Qmin = s_min( Qy1, Qy2 );
-
- Qmin = sub( Qmin, 34 );
-
- y0_fx64 = W_mac_32_32( W_mult_32_32( W_shl_sat_l( y1_fx64, Qmin ), a1_fx ), W_shl_sat_l( y2_fx64, Qmin ), a2_fx ); // Qmin + Q29 + Q30 + 1
-
- Word64 temp = W_mac_32_32( W_mac_32_32( W_mult_32_32( x2, b2_fx ), x1, b1_fx ), x0, b2_fx ); // Q30
- Word64 y0_fx = W_shr( y0_fx64, add( Qmin, Q30 ) ); // Q30
- y0_fx64 = W_add( temp, y0_fx ); // Q30
- signal_fx[i] = W_shl_sat_l( y0_fx64, -Q30 );
- move32();
-
- y2_fx64 = y1_fx64;
- move64();
- y1_fx64 = y0_fx64;
- move64();
-#else /* OPT_STEREO_32KBPS_V1 */
x2_fx64 = x1_fx64;
move64();
x1_fx64 = x0_fx64;
@@ -587,7 +532,11 @@ void hp20_fx_32(
move16();
}
Qy1 = sub( Qy1, 34 );
+#ifdef OPT_STEREO_32KBPS_V1
+ R1 = W_mult0_32_32( W_shl_sat_l( y1_fx64, Qy1 ), a1_fx );
+#else /* OPT_STEREO_32KBPS_V1 */
R1 = W_mult0_32_32( W_extract_l( W_shl( y1_fx64, Qy1 ) ), a1_fx );
+#endif /* OPT_STEREO_32KBPS_V1 */
Qy1 = add( Qy1, Qprev_y1 );
Qy2 = W_norm( y2_fx64 );
@@ -597,7 +546,11 @@ void hp20_fx_32(
move16();
}
Qy2 = sub( Qy2, 34 );
+#ifdef OPT_STEREO_32KBPS_V1
+ R2 = W_mult0_32_32( W_shl_sat_l( y2_fx64, Qy2 ), a2_fx );
+#else /* OPT_STEREO_32KBPS_V1 */
R2 = W_mult0_32_32( W_extract_l( W_shl( y2_fx64, Qy2 ) ), a2_fx );
+#endif /* OPT_STEREO_32KBPS_V1 */
Qy2 = add( Qy2, Qprev_y2 );
Qx0 = W_norm( x0_fx64 );
@@ -607,7 +560,11 @@ void hp20_fx_32(
move16();
}
Qx0 = sub( Qx0, 34 );
+#ifdef OPT_STEREO_32KBPS_V1
+ R3 = W_mult0_32_32( W_shl_sat_l( x0_fx64, Qx0 ), b2_fx );
+#else /* OPT_STEREO_32KBPS_V1 */
R3 = W_mult0_32_32( W_extract_l( W_shl( x0_fx64, Qx0 ) ), b2_fx );
+#endif /* OPT_STEREO_32KBPS_V1 */
Qx1 = W_norm( x1_fx64 );
if ( x1_fx64 == 0 )
@@ -616,7 +573,11 @@ void hp20_fx_32(
move16();
}
Qx1 = sub( Qx1, 34 );
+#ifdef OPT_STEREO_32KBPS_V1
+ R4 = W_mult0_32_32( W_shl_sat_l( x1_fx64, Qx1 ), b1_fx );
+#else /* OPT_STEREO_32KBPS_V1 */
R4 = W_mult0_32_32( W_extract_l( W_shl( x1_fx64, Qx1 ) ), b1_fx );
+#endif /* OPT_STEREO_32KBPS_V1 */
Qx2 = W_norm( x2_fx64 );
if ( x2_fx64 == 0 )
@@ -625,7 +586,11 @@ void hp20_fx_32(
move16();
}
Qx2 = sub( Qx2, 34 );
+#ifdef OPT_STEREO_32KBPS_V1
+ R5 = W_mult0_32_32( W_shl_sat_l( x2_fx64, Qx2 ), b2_fx );
+#else /* OPT_STEREO_32KBPS_V1 */
R5 = W_mult0_32_32( W_extract_l( W_shl( x2_fx64, Qx2 ) ), b2_fx );
+#endif /* OPT_STEREO_32KBPS_V1 */
Qmin = s_min( Qy1, Qy2 );
@@ -655,17 +620,8 @@ void hp20_fx_32(
move64();
move16();
move16();
-#endif /* OPT_STEREO_32KBPS_V1 */
}
-#ifdef OPT_STEREO_32KBPS_V1
- mem_fx[0] = W_extract_l( y1_fx64 );
- mem_fx[1] = W_extract_h( y1_fx64 );
- mem_fx[2] = W_extract_l( y2_fx64 );
- mem_fx[3] = W_extract_h( y2_fx64 );
- mem_fx[4] = x0;
- mem_fx[5] = x1;
-#else /* OPT_STEREO_32KBPS_V1 */
Qy1 = W_norm( y1_fx64 );
test();
IF( y1_fx64 != 0 && LT_16( Qy1, 32 ) )
@@ -688,7 +644,6 @@ void hp20_fx_32(
mem_fx[3] = W_extract_l( x1_fx64 );
mem_fx[4] = Qprev_y1;
mem_fx[5] = Qprev_y2;
-#endif /* OPT_STEREO_32KBPS_V1 */
move32();
move32();
diff --git a/lib_com/hq2_core_com.c b/lib_com/hq2_core_com.c
deleted file mode 100644
index 121dae06a1ef18c4cd878c09921758a9d0ced65e..0000000000000000000000000000000000000000
--- a/lib_com/hq2_core_com.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include
-#include "cnst.h"
-#include "rom_com.h"
-#include "prot_fx.h"
-#include "basop_util.h"
-#include "basop_proto_func.h"
-#include "wmc_auto.h"
-
-
-#define WMC_TOOL_SKIP
-void bit_allocation_second_fx2(
- Word32 *Rk, /* Q16 */
- Word32 *Rk_sort, /* Q16 */
- Word16 BANDS, /* Q0 */
- const Word16 *band_width, /* Q0 */
- Word16 *k_sort, /* Q0 */
- Word16 *k_num, /* Q0 */
- const Word16 *p2a_flags, /* Q0 */
- const Word16 p2a_bands, /* Q0 */
- const Word16 *last_bitalloc, /* Q0 */
- const Word16 input_frame /* Q0 */
-)
-{
- Word16 k, k2 = 0;
- Word16 ever_bits[BANDS_MAX], ever_sort[BANDS_MAX]; /*Q12 */
- Word16 class_flag = 0;
- Word16 rk_temp = 32767, ever_temp = 32767; /*Q12 */
- Word16 exp;
- Word16 tmp;
- Word32 L_tmp;
- move16();
- move16();
- move16();
- move16();
-
-
- FOR( k = 0; k < BANDS; k++ )
- {
- test();
- test();
- IF( ( ( sub( k_sort[k], sub( BANDS, p2a_bands ) ) >= 0 ) && ( sub( p2a_flags[k_sort[k]], 1 ) == 0 ) ) ||
- ( ( sub( k_sort[k], ( BANDS - 2 ) ) >= 0 ) && ( sub( last_bitalloc[k_sort[k] - ( BANDS - 2 )], 1 ) == 0 ) ) )
- {
- exp = norm_s( band_width[k_sort[k]] );
- tmp = shl( band_width[k_sort[k]], exp ); /*Q(exp) */
- tmp = div_s( 16384, tmp ); /*Q(15+14-exp = 29-exp) */
- L_tmp = Mult_32_16( Rk_sort[k], tmp ); /* Q(16+29-exp-15 = 30-exp) */
- tmp = sub( 18, exp );
- ever_bits[k] = extract_l( L_shr( L_tmp, tmp ) ); /*Q12 */
- if ( sub( ever_bits[k], rk_temp ) < 0 )
- {
- rk_temp = ever_bits[k]; /* Q12 */
- k2 = k;
- move16();
- move16();
- }
- class_flag = 1;
- move16();
- }
- }
- IF( class_flag == 0 || sub( input_frame, L_FRAME8k ) == 0 )
- {
- FOR( k = 0; k < BANDS; k++ )
- {
- test();
- IF( sub( k_sort[k], sub( BANDS, p2a_bands ) ) < 0 && Rk_sort[k] > 0 )
- {
- exp = norm_s( band_width[k_sort[k]] );
- tmp = shl( band_width[k_sort[k]], exp ); /*Q(exp) */
- tmp = div_s( 16384, tmp ); /*Q(15+14-exp = 29-exp) */
- L_tmp = Mult_32_16( Rk_sort[k], tmp ); /* Q(16+29-exp-15 = 30-exp) */
- tmp = sub( 18, exp );
- ever_sort[k] = extract_l( L_shr( L_tmp, tmp ) ); /*Q12 */
- move16();
- IF( sub( ever_sort[k], ever_temp ) < 0 )
- {
- ever_temp = ever_sort[k]; /* Q12 */
- move16();
- k2 = k;
- move16();
- }
- }
- }
- }
-
- k_num[0] = k2;
- move16();
- IF( sub( k_sort[k2], sub( BANDS, 1 ) ) == 0 )
- {
- FOR( k = 0; k < BANDS; k++ )
- {
- IF( sub( k_sort[k], sub( k_sort[k2], 1 ) ) == 0 )
- {
- k_num[1] = k; /* Q0 */
- move16();
- }
- }
- }
- ELSE IF( k_sort[k2] == 0 )
- {
- FOR( k = 0; k < BANDS; k++ )
- {
- IF( sub( k_sort[k], add( k_sort[k2], 1 ) ) == 0 )
- {
- k_num[1] = k; /* Q0 */
- move16();
- }
- }
- }
- ELSE
- {
- IF( L_sub( Rk[sub( k_sort[k2], 1 )], Rk[add( k_sort[k2], 1 )] ) < 0 )
- {
- FOR( k = 0; k < BANDS; k++ )
- {
- IF( sub( k_sort[k], sub( k_sort[k2], 1 ) ) == 0 )
- {
- k_num[1] = k; /* Q0 */
- move16();
- }
- }
- }
- ELSE
- {
- FOR( k = 0; k < BANDS; k++ )
- {
- IF( sub( k_sort[k], add( k_sort[k2], 1 ) ) == 0 )
- {
- k_num[1] = k; /* Q0 */
- move16();
- }
- }
- }
- }
-
- return;
-}
-
-#undef WMC_TOOL_SKIP
diff --git a/lib_com/hq_conf.c b/lib_com/hq_conf.c
deleted file mode 100644
index 90a256ceab3e43b00c51885fe3e3ac35efea1113..0000000000000000000000000000000000000000
--- a/lib_com/hq_conf.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include "cnst.h"
-#include "rom_com.h"
-#include "prot_fx.h"
-#include "wmc_auto.h"
-
-
-void hq_configure_fx(
- const Word16 length, /* i : Frame length Q0 */
- const Word16 hqswb_clas, /* i : HQ SWB class Q0 */
- const Word32 core_brate, /* i : Codec bitrate Q0 */
- Word16 *num_sfm, /* o : Total number of subbands Q0 */
- Word16 *nb_sfm, /* o : Total number of coded bands Q0 */
- Word16 *start_norm, /* o : First norm to be SDE encoded Q0 */
- Word16 *num_env_bands, /* o : Number coded envelope bands Q0 */
- Word16 *numnrmibits, /* o : Number of bits in fall-back norm encoding Q0 */
- Word16 *hq_generic_offset, /* o : Freq offset for HQ GENERIC Q0 */
- Word16 *sfmsize, /* o : Subband bandwidths Q0 */
- Word16 *sfm_start, /* o : Subband start coefficients Q0 */
- Word16 *sfm_end /* o : Subband end coefficients Q0 */
-)
-{
- const Word16 *p_sfmsize;
- const Word16 *p_sfm_start;
- const Word16 *p_sfm_end;
- Word16 i, bw_ext;
-
- bw_ext = 0;
- move16();
-
- *start_norm = 0;
- move16();
-
- IF( EQ_16( length, L_SPEC48k ) )
- {
- IF( EQ_16( hqswb_clas, HQ_GEN_FB ) )
- {
- *num_sfm = NB_SFM;
- move16();
- p_sfmsize = band_len_HQ; /* Q0 */
- p_sfm_start = band_start_HQ; /* Q0 */
- p_sfm_end = band_end_HQ; /* Q0 */
-
- IF( GE_32( core_brate, HQ_32k ) )
- {
- *hq_generic_offset = HQ_GENERIC_FOFFSET_32K;
- move16();
- *num_env_bands = SFM_N_STA_10k;
- move16();
- }
- ELSE /*IF(EQ_32(core_brate, HQ_16k40) || EQ_32(core_brate, HQ_24k40))*/
- {
- *hq_generic_offset = HQ_GENERIC_FOFFSET_24K4;
- *num_env_bands = SFM_N_STA_8k;
- move16();
- move16();
- }
- *nb_sfm = *num_sfm;
- move16();
- }
- ELSE
- {
- IF( EQ_16( hqswb_clas, HQ_HARMONIC ) )
- {
- *num_sfm = SFM_N_HARM_FB;
- move16();
- *nb_sfm = SFM_N_HARM_FB;
- move16();
- *num_env_bands = SFM_N_HARM_FB;
- move16();
-
- p_sfmsize = band_len_harm; /* Q0 */
- p_sfm_start = band_start_harm; /* Q0 */
- p_sfm_end = band_end_harm; /* Q0 */
- }
- ELSE IF( EQ_16( hqswb_clas, HQ_HVQ ) )
- {
- IF( LT_32( core_brate, HQ_BWE_CROSSOVER_BRATE ) )
- {
- *num_sfm = SFM_N_HARM_FB;
- move16();
- *nb_sfm = HVQ_THRES_SFM_24k;
- move16();
- *num_env_bands = sub( *num_sfm, *nb_sfm );
- move16();
- *start_norm = HVQ_THRES_SFM_24k;
- move16();
- }
- ELSE
- {
- *num_sfm = SFM_N_HARM_FB;
- move16();
- *nb_sfm = HVQ_THRES_SFM_32k;
- move16();
- *num_env_bands = sub( *num_sfm, *nb_sfm );
- move16();
- *start_norm = HVQ_THRES_SFM_32k;
- move16();
- }
- p_sfmsize = band_len_harm; /* Q0 */
- p_sfm_start = band_start_harm; /* Q0 */
- p_sfm_end = band_end_harm; /* Q0 */
- }
- ELSE
- {
- *num_sfm = NB_SFM;
- move16();
- *nb_sfm = *num_sfm; /* Q0 */
- move16();
- *num_env_bands = NB_SFM;
- move16();
-
- p_sfmsize = band_len_HQ; /* Q0 */
- p_sfm_start = band_start_HQ; /* Q0 */
- p_sfm_end = band_end_HQ; /* Q0 */
- }
- }
- }
- ELSE IF( EQ_16( length, L_SPEC32k ) )
- {
- IF( EQ_16( hqswb_clas, HQ_HARMONIC ) )
- {
- *num_sfm = SFM_N_HARM;
- move16();
- *nb_sfm = SFM_N_HARM;
- move16();
- *num_env_bands = SFM_N_HARM;
- move16();
-
- p_sfmsize = band_len_harm; /* Q0 */
- p_sfm_start = band_start_harm; /* Q0 */
- p_sfm_end = band_end_harm; /* Q0 */
- }
- ELSE IF( EQ_16( hqswb_clas, HQ_HVQ ) )
- {
- IF( LT_32( core_brate, HQ_BWE_CROSSOVER_BRATE ) )
- {
- *num_sfm = SFM_N_HARM;
- move16();
- *nb_sfm = HVQ_THRES_SFM_24k;
- move16();
- *num_env_bands = sub( *num_sfm, *nb_sfm ); /* Q0 */
- move16();
-
- *start_norm = HVQ_THRES_SFM_24k;
- move16();
- }
- ELSE
- {
- *num_sfm = SFM_N_HARM;
- move16();
- *nb_sfm = HVQ_THRES_SFM_32k;
- move16();
- *num_env_bands = sub( *num_sfm, *nb_sfm ); /* Q0 */
- move16();
-
- *start_norm = HVQ_THRES_SFM_32k;
- move16();
- }
- p_sfmsize = band_len_harm;
- p_sfm_start = band_start_harm;
- p_sfm_end = band_end_harm;
- }
- ELSE IF( EQ_16( hqswb_clas, HQ_GEN_SWB ) )
- {
- *num_sfm = SFM_N_SWB;
- move16();
- p_sfmsize = band_len_HQ; /* Q0 */
- p_sfm_start = band_start_HQ; /* Q0 */
- p_sfm_end = band_end_HQ; /* Q0 */
-
- IF( GE_32( core_brate, HQ_32k ) )
- {
- *hq_generic_offset = HQ_GENERIC_FOFFSET_32K;
- move16();
- *num_env_bands = SFM_N_STA_10k;
- move16();
- }
- ELSE /*if( EQ_32(core_brate, HQ_24k40))*/
- {
- *hq_generic_offset = HQ_GENERIC_FOFFSET_24K4;
- move16();
- *num_env_bands = SFM_N_STA_8k;
- move16();
- }
-
- *nb_sfm = *num_sfm;
- move16();
- }
- ELSE
- {
- /* HQ_NORMAL and HQ_TRANSIENT */
- *num_sfm = SFM_N_SWB;
- move16();
- *nb_sfm = *num_sfm;
- move16();
- *num_env_bands = SFM_N_SWB;
- move16();
-
- p_sfmsize = band_len_HQ; /* Q0 */
- p_sfm_start = band_start_HQ; /* Q0 */
- p_sfm_end = band_end_HQ; /* Q0 */
- }
- }
- ELSE IF( EQ_16( length, L_SPEC48k_EXT ) )
- {
- bw_ext = 1;
- p_sfmsize = band_len_HQ; /* Q0 */
- p_sfm_start = band_start_HQ; /* Q0 */
- p_sfm_end = band_end_HQ; /* Q0 */
- *num_sfm = NB_SFM;
- }
- ELSE IF( EQ_16( length, L_SPEC16k_EXT ) )
- {
- bw_ext = 1;
- move16();
- p_sfmsize = band_len_wb; /* Q0 */
- p_sfm_start = band_start_wb; /* Q0 */
- p_sfm_end = band_end_wb; /* Q0 */
- *num_sfm = SFM_N_WB;
- move16();
- }
- ELSE
- {
- *num_sfm = SFM_N_WB;
- move16();
- *nb_sfm = *num_sfm; /* Q0 */
- move16();
- *num_env_bands = SFM_N_WB;
- move16();
-
- p_sfmsize = band_len_wb; /* Q0 */
- p_sfm_start = band_start_wb; /* Q0 */
- p_sfm_end = band_end_wb; /* Q0 */
- }
- IF( bw_ext )
- {
- FOR( i = 0; i < *num_sfm; i++ )
- {
- /*sfmsize[i] = (int16_t)(1.25f * p_sfmsize[i]);*/
- sfmsize[i] = mult_r( shl( p_sfmsize[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */
- move16();
- /*sfm_start[i] = (int16_t)(1.25f * p_sfm_start[i]);*/
- sfm_start[i] = mult_r( shl( p_sfm_start[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */
- move16();
- /*sfm_end[i] = (int16_t)(1.25f * p_sfm_end[i]);*/
- sfm_end[i] = mult_r( shl( p_sfm_end[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */
- move16();
- }
- *nb_sfm = *num_sfm; /* Q0 */
- *num_env_bands = *num_sfm; /* Q0 */
- move16();
- move16();
- }
- ELSE
- {
- Copy( p_sfmsize, sfmsize, *num_sfm );
- Copy( p_sfm_start, sfm_start, *num_sfm );
- Copy( p_sfm_end, sfm_end, *num_sfm );
- }
-
- *numnrmibits = extract_l( L_mult0( sub( *num_env_bands, 1 ), NORMI_BITS ) );
- move16();
-
- return;
-}
diff --git a/lib_com/hq_conf_fx.c b/lib_com/hq_conf_fx.c
index 503975363a6fa1a3480f1d55b15ad4d06e919962..b400624487bfbb9c5b3bd897c1d88f791382cbb2 100644
--- a/lib_com/hq_conf_fx.c
+++ b/lib_com/hq_conf_fx.c
@@ -8,6 +8,7 @@
#include "rom_com.h" /* Static table prototypes */
#include "prot_fx.h" /* Function prototypes */
#include "ivas_prot_fx.h"
+#include "wmc_auto.h"
/*--------------------------------------------------------------------------*
* hq_configure()
@@ -303,11 +304,7 @@ void hq_configure_evs_fx(
*start_norm = 0;
move16();
-#ifndef SOLVED_COMP_ENC_DEC
IF( EQ_16( length, L_FRAME48k ) ) /*tbv SOLVED_COMP_ENC_DEC*/
-#else
- IF( EQ_16( length, L_SPEC48k ) )
-#endif
{
IF( EQ_16( hqswb_clas, HQ_GEN_FB ) )
{
@@ -542,3 +539,263 @@ void hq_configure_evs_fx(
return;
}
+
+void hq_configure_fx(
+ const Word16 length, /* i : Frame length Q0 */
+ const Word16 hqswb_clas, /* i : HQ SWB class Q0 */
+ const Word32 core_brate, /* i : Codec bitrate Q0 */
+ Word16 *num_sfm, /* o : Total number of subbands Q0 */
+ Word16 *nb_sfm, /* o : Total number of coded bands Q0 */
+ Word16 *start_norm, /* o : First norm to be SDE encoded Q0 */
+ Word16 *num_env_bands, /* o : Number coded envelope bands Q0 */
+ Word16 *numnrmibits, /* o : Number of bits in fall-back norm encoding Q0 */
+ Word16 *hq_generic_offset, /* o : Freq offset for HQ GENERIC Q0 */
+ Word16 *sfmsize, /* o : Subband bandwidths Q0 */
+ Word16 *sfm_start, /* o : Subband start coefficients Q0 */
+ Word16 *sfm_end /* o : Subband end coefficients Q0 */
+)
+{
+ const Word16 *p_sfmsize;
+ const Word16 *p_sfm_start;
+ const Word16 *p_sfm_end;
+ Word16 i, bw_ext;
+
+ bw_ext = 0;
+ move16();
+
+ *start_norm = 0;
+ move16();
+
+ IF( EQ_16( length, L_SPEC48k ) )
+ {
+ IF( EQ_16( hqswb_clas, HQ_GEN_FB ) )
+ {
+ *num_sfm = NB_SFM;
+ move16();
+ p_sfmsize = band_len_HQ; /* Q0 */
+ p_sfm_start = band_start_HQ; /* Q0 */
+ p_sfm_end = band_end_HQ; /* Q0 */
+
+ IF( GE_32( core_brate, HQ_32k ) )
+ {
+ *hq_generic_offset = HQ_GENERIC_FOFFSET_32K;
+ move16();
+ *num_env_bands = SFM_N_STA_10k;
+ move16();
+ }
+ ELSE /*IF(EQ_32(core_brate, HQ_16k40) || EQ_32(core_brate, HQ_24k40))*/
+ {
+ *hq_generic_offset = HQ_GENERIC_FOFFSET_24K4;
+ *num_env_bands = SFM_N_STA_8k;
+ move16();
+ move16();
+ }
+ *nb_sfm = *num_sfm;
+ move16();
+ }
+ ELSE
+ {
+ IF( EQ_16( hqswb_clas, HQ_HARMONIC ) )
+ {
+ *num_sfm = SFM_N_HARM_FB;
+ move16();
+ *nb_sfm = SFM_N_HARM_FB;
+ move16();
+ *num_env_bands = SFM_N_HARM_FB;
+ move16();
+
+ p_sfmsize = band_len_harm; /* Q0 */
+ p_sfm_start = band_start_harm; /* Q0 */
+ p_sfm_end = band_end_harm; /* Q0 */
+ }
+ ELSE IF( EQ_16( hqswb_clas, HQ_HVQ ) )
+ {
+ IF( LT_32( core_brate, HQ_BWE_CROSSOVER_BRATE ) )
+ {
+ *num_sfm = SFM_N_HARM_FB;
+ move16();
+ *nb_sfm = HVQ_THRES_SFM_24k;
+ move16();
+ *num_env_bands = sub( *num_sfm, *nb_sfm );
+ move16();
+ *start_norm = HVQ_THRES_SFM_24k;
+ move16();
+ }
+ ELSE
+ {
+ *num_sfm = SFM_N_HARM_FB;
+ move16();
+ *nb_sfm = HVQ_THRES_SFM_32k;
+ move16();
+ *num_env_bands = sub( *num_sfm, *nb_sfm );
+ move16();
+ *start_norm = HVQ_THRES_SFM_32k;
+ move16();
+ }
+ p_sfmsize = band_len_harm; /* Q0 */
+ p_sfm_start = band_start_harm; /* Q0 */
+ p_sfm_end = band_end_harm; /* Q0 */
+ }
+ ELSE
+ {
+ *num_sfm = NB_SFM;
+ move16();
+ *nb_sfm = *num_sfm; /* Q0 */
+ move16();
+ *num_env_bands = NB_SFM;
+ move16();
+
+ p_sfmsize = band_len_HQ; /* Q0 */
+ p_sfm_start = band_start_HQ; /* Q0 */
+ p_sfm_end = band_end_HQ; /* Q0 */
+ }
+ }
+ }
+ ELSE IF( EQ_16( length, L_SPEC32k ) )
+ {
+ IF( EQ_16( hqswb_clas, HQ_HARMONIC ) )
+ {
+ *num_sfm = SFM_N_HARM;
+ move16();
+ *nb_sfm = SFM_N_HARM;
+ move16();
+ *num_env_bands = SFM_N_HARM;
+ move16();
+
+ p_sfmsize = band_len_harm; /* Q0 */
+ p_sfm_start = band_start_harm; /* Q0 */
+ p_sfm_end = band_end_harm; /* Q0 */
+ }
+ ELSE IF( EQ_16( hqswb_clas, HQ_HVQ ) )
+ {
+ IF( LT_32( core_brate, HQ_BWE_CROSSOVER_BRATE ) )
+ {
+ *num_sfm = SFM_N_HARM;
+ move16();
+ *nb_sfm = HVQ_THRES_SFM_24k;
+ move16();
+ *num_env_bands = sub( *num_sfm, *nb_sfm ); /* Q0 */
+ move16();
+
+ *start_norm = HVQ_THRES_SFM_24k;
+ move16();
+ }
+ ELSE
+ {
+ *num_sfm = SFM_N_HARM;
+ move16();
+ *nb_sfm = HVQ_THRES_SFM_32k;
+ move16();
+ *num_env_bands = sub( *num_sfm, *nb_sfm ); /* Q0 */
+ move16();
+
+ *start_norm = HVQ_THRES_SFM_32k;
+ move16();
+ }
+ p_sfmsize = band_len_harm;
+ p_sfm_start = band_start_harm;
+ p_sfm_end = band_end_harm;
+ }
+ ELSE IF( EQ_16( hqswb_clas, HQ_GEN_SWB ) )
+ {
+ *num_sfm = SFM_N_SWB;
+ move16();
+ p_sfmsize = band_len_HQ; /* Q0 */
+ p_sfm_start = band_start_HQ; /* Q0 */
+ p_sfm_end = band_end_HQ; /* Q0 */
+
+ IF( GE_32( core_brate, HQ_32k ) )
+ {
+ *hq_generic_offset = HQ_GENERIC_FOFFSET_32K;
+ move16();
+ *num_env_bands = SFM_N_STA_10k;
+ move16();
+ }
+ ELSE /*if( EQ_32(core_brate, HQ_24k40))*/
+ {
+ *hq_generic_offset = HQ_GENERIC_FOFFSET_24K4;
+ move16();
+ *num_env_bands = SFM_N_STA_8k;
+ move16();
+ }
+
+ *nb_sfm = *num_sfm;
+ move16();
+ }
+ ELSE
+ {
+ /* HQ_NORMAL and HQ_TRANSIENT */
+ *num_sfm = SFM_N_SWB;
+ move16();
+ *nb_sfm = *num_sfm;
+ move16();
+ *num_env_bands = SFM_N_SWB;
+ move16();
+
+ p_sfmsize = band_len_HQ; /* Q0 */
+ p_sfm_start = band_start_HQ; /* Q0 */
+ p_sfm_end = band_end_HQ; /* Q0 */
+ }
+ }
+ ELSE IF( EQ_16( length, L_SPEC48k_EXT ) )
+ {
+ bw_ext = 1;
+ p_sfmsize = band_len_HQ; /* Q0 */
+ p_sfm_start = band_start_HQ; /* Q0 */
+ p_sfm_end = band_end_HQ; /* Q0 */
+ *num_sfm = NB_SFM;
+ }
+ ELSE IF( EQ_16( length, L_SPEC16k_EXT ) )
+ {
+ bw_ext = 1;
+ move16();
+ p_sfmsize = band_len_wb; /* Q0 */
+ p_sfm_start = band_start_wb; /* Q0 */
+ p_sfm_end = band_end_wb; /* Q0 */
+ *num_sfm = SFM_N_WB;
+ move16();
+ }
+ ELSE
+ {
+ *num_sfm = SFM_N_WB;
+ move16();
+ *nb_sfm = *num_sfm; /* Q0 */
+ move16();
+ *num_env_bands = SFM_N_WB;
+ move16();
+
+ p_sfmsize = band_len_wb; /* Q0 */
+ p_sfm_start = band_start_wb; /* Q0 */
+ p_sfm_end = band_end_wb; /* Q0 */
+ }
+ IF( bw_ext )
+ {
+ FOR( i = 0; i < *num_sfm; i++ )
+ {
+ /*sfmsize[i] = (int16_t)(1.25f * p_sfmsize[i]);*/
+ sfmsize[i] = mult_r( shl( p_sfmsize[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */
+ move16();
+ /*sfm_start[i] = (int16_t)(1.25f * p_sfm_start[i]);*/
+ sfm_start[i] = mult_r( shl( p_sfm_start[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */
+ move16();
+ /*sfm_end[i] = (int16_t)(1.25f * p_sfm_end[i]);*/
+ sfm_end[i] = mult_r( shl( p_sfm_end[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */
+ move16();
+ }
+ *nb_sfm = *num_sfm; /* Q0 */
+ *num_env_bands = *num_sfm; /* Q0 */
+ move16();
+ move16();
+ }
+ ELSE
+ {
+ Copy( p_sfmsize, sfmsize, *num_sfm );
+ Copy( p_sfm_start, sfm_start, *num_sfm );
+ Copy( p_sfm_end, sfm_end, *num_sfm );
+ }
+
+ *numnrmibits = extract_l( L_mult0( sub( *num_env_bands, 1 ), NORMI_BITS ) );
+ move16();
+
+ return;
+}
diff --git a/lib_com/ifft_rel.c b/lib_com/ifft_rel_fx.c
similarity index 100%
rename from lib_com/ifft_rel.c
rename to lib_com/ifft_rel_fx.c
diff --git a/lib_com/int_lsp.c b/lib_com/int_lsp_fx.c
similarity index 100%
rename from lib_com/int_lsp.c
rename to lib_com/int_lsp_fx.c
diff --git a/lib_com/interleave_spectrum.c b/lib_com/interleave_spectrum_fx.c
similarity index 97%
rename from lib_com/interleave_spectrum.c
rename to lib_com/interleave_spectrum_fx.c
index 5c4c98e291e33db70a7fa6a8763926f963fe485c..e8bb728ff891278b5eb24adb7f15f4d6ba001ed3 100644
--- a/lib_com/interleave_spectrum.c
+++ b/lib_com/interleave_spectrum_fx.c
@@ -63,11 +63,7 @@ void interleave_spectrum_fx(
/* Common inits */
p1 = coefs; /*Q12*/
p_out = coefs_out;
-#ifdef SOLVED_COMP_ENC_DEC
- IF( EQ_16( length, L_SPEC48k ) )
-#else
IF( EQ_16( length, L_FRAME48k ) )
-#endif
{
bw = intl_bw_48; /*Q0*/
cnt = intl_cnt_48; /*Q0*/
@@ -337,20 +333,12 @@ void de_interleave_spectrum_fx(
p1 = coefs_out;
l_frame = length;
move16();
-#ifdef SOLVED_COMP_ENC_DEC
- IF( EQ_16( length, L_SPEC48k ) )
-#else
IF( EQ_16( length, L_FRAME48k ) )
-#endif
{
bw = intl_bw_48; /*Q0*/
cnt = intl_cnt_48; /*Q0*/
grps = N_INTL_GRP_48;
move16();
-#ifdef SOLVED_COMP_ENC_DEC
- l_frame = L_FRAME48k;
- move16();
-#endif
p2 = coefs_out + sublen[2]; /* 240, length/4 */
p3 = coefs_out + sublen[4]; /* 480, 2*length/4 */
p4 = coefs_out + sublen[5]; /* 720, 3*length/4 */
diff --git a/lib_com/interpol.c b/lib_com/interpol_fx.c
similarity index 100%
rename from lib_com/interpol.c
rename to lib_com/interpol_fx.c
diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h
index 5ceac3b0324230215c994441b90b63f473b4cf0b..24d396d2a64294249867d9cfd7ccce3228359788 100644
--- a/lib_com/ivas_cnst.h
+++ b/lib_com/ivas_cnst.h
@@ -511,8 +511,8 @@ enum
#define STEREO_DFT32MS_N_NS FRAME_SIZE_NS /* 20 ms */
#define STEREO_DFT32MS_OVL_NS 3125000L /* 3.125ms - Overlap for the outer edges of windows on decoder */
#define STEREO_DFT32MS_OVL2_NS 9375000L /* 9.375ms - Overlap for the inner edges of windows on decoder */
-#define STEREO_DFT32MS_WIN_CENTER_NS ( int32_t )( ( FRAME_SIZE_NS + STEREO_DFT32MS_OVL_NS ) * 0.5f ) /* 11.5625ms - mid point of the two windows wrt the left edge of overlap */
-#define STEREO_DFT32MS_ZP_NS ( int32_t )( 0.5f * ( STEREO_DFT32MS_N_NS - STEREO_DFT32MS_WIN_CENTER_NS - ( STEREO_DFT32MS_OVL2_NS * 0.5f ) ) ) /* 2 sided zp calculated such that window size is satisfied */
+#define STEREO_DFT32MS_WIN_CENTER_NS ( Word32 )( ( FRAME_SIZE_NS + STEREO_DFT32MS_OVL_NS ) * 0.5f ) /* 11.5625ms - mid point of the two windows wrt the left edge of overlap */
+#define STEREO_DFT32MS_ZP_NS ( Word32 )( 0.5f * ( STEREO_DFT32MS_N_NS - STEREO_DFT32MS_WIN_CENTER_NS - ( STEREO_DFT32MS_OVL2_NS * 0.5f ) ) ) /* 2 sided zp calculated such that window size is satisfied */
#define STEREO_DFT32MS_OVL_MAX NS2SA( 48000, STEREO_DFT32MS_OVL_NS )
#define STEREO_DFT32MS_OVL2_MAX NS2SA( 48000, STEREO_DFT32MS_OVL2_NS )
@@ -801,7 +801,7 @@ enum fea_names
#define L_DEC_MEM_LEN_ICA L_NCSHIFTMAX + ( N_MAX_SHIFT_CHANGE + 1 ) + SINC_ORDER1 / INTERP_FACTOR1
#define L_FRAME_DS NS2SA( CORR_INTER_FS, FRAME_SIZE_NS )
#define L_XCORRMEM_DS NS2SA( CORR_INTER_FS, 2 * ( ACELP_LOOK_NS ) )
-#define L_NCSHIFT_DS ( int16_t )( ( ( int32_t )(CORR_INTER_FS) *L_NCSHIFTMAX ) / 48000L )
+#define L_NCSHIFT_DS ( Word16 )( ( ( Word32 )(CORR_INTER_FS) *L_NCSHIFTMAX ) / 48000L )
#define L_SAMPLES_LA_NS 625000L
#define L_MEM_RECALC_TBE_16K NS2SA( 16000, L_MEM_RECALC_TBE_NS )
@@ -1318,6 +1318,7 @@ enum
#define MASA_BIT_REDUCT_PARAM 10
#define MASA_MAXIMUM_TWO_DIR_BANDS 24
#define NBITS_HR_COH 4
+#define OMASA_TDREND_MATCHING_GAIN_FX 26026
#define MASA_INV_ANGLE_AT_EQUATOR_DEG_Q30 (1453366656l)
@@ -1448,7 +1449,7 @@ typedef struct {
typedef struct {
Word32 value[81];
- unsigned short length[81];
+ UWord16 length[81];
} HUFF_ELEMENTS;
typedef struct {
@@ -1683,7 +1684,6 @@ typedef enum
#define MAX_ANGULAR_STEP_INV ( 1.0f / MAX_ANGULAR_STEP )
#define MAX_INTERPOLATION_STEPS 12
-#define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC )
#define DEG_360_IN_Q22 ( 360 << Q22 ) // Q22
#define DEG_180_IN_Q22 ( 180 << Q22 ) // Q22
@@ -1743,8 +1743,15 @@ typedef enum
#define RV_FILTER_MAX_HISTORY ( 512 - 160 ) /* for longest history */
#define RV_LENGTH_NR_FC ( RV_FILTER_MAX_FFT_SIZE / 2 ) + 1
+#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB
+#define RV_LENGTH_NR_FC_16KHZ ( RV_FILTER_MAX_FFT_SIZE / 4 ) + 1
+#endif
#define IVAS_REVERB_DEFAULT_N_BANDS 31
+#define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC )
+#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB
+#define LR_IAC_LENGTH_NR_FC_16KHZ ( RV_LENGTH_NR_FC_16KHZ )
+#endif
/*----------------------------------------------------------------------------------*
* FB mixer constants
diff --git a/lib_com/ivas_dirac_com_fx.c b/lib_com/ivas_dirac_com_fx.c
index f68b976a727e47dd4d3c53211c7da7beb7504380..017181d0763e33a4bf861154130cf2e2a7cd5998 100644
--- a/lib_com/ivas_dirac_com_fx.c
+++ b/lib_com/ivas_dirac_com_fx.c
@@ -179,9 +179,7 @@ ivas_error ivas_dirac_config_fx(
test();
IF( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) /* skip for MASA decoder */
{
- IF( NE_32( ( error = ivas_dirac_sba_config_fx( hQMetaData, element_mode, ivas_total_brate, sba_order, sub( hConfig->nbands, spar_dirac_split_band ),
- ivas_format ) ),
- IVAS_ERR_OK ) )
+ IF( NE_32( ( error = ivas_dirac_sba_config_fx( hQMetaData, element_mode, ivas_total_brate, sba_order, sub( hConfig->nbands, spar_dirac_split_band ), ivas_format ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -578,10 +576,7 @@ ivas_error ivas_dirac_sba_config_fx(
{
hQMetaData->useLowerBandRes = 0;
move16();
- IF( hodirac_flag == 0 )
- {
- nbands_coded = sub( nbands, 1 ); /* always combine the last two bands */
- }
+ nbands_coded = sub( nbands, 1 ); /* always combine the last two bands */
}
{
@@ -1041,7 +1036,7 @@ void computeDiffuseness_fixed(
exp1 = sub( 31, q_intensity_slow );
tmp = Sqrt32( p_tmp[i], &exp1 );
- tmp = BASOP_Util_Divide3232_Scale_cadence( tmp, L_add( energy_slow[i], EPSILLON_FX ), &exp2 );
+ tmp = BASOP_Util_Divide3232_Scale_newton( tmp, L_add( energy_slow[i], EPSILLON_FX ), &exp2 );
q_tmp = add( sub( 31, exp2 ), sub( sub( 31, exp1 ), q_ene ) );
IF( LT_16( q_tmp, Q30 ) )
diff --git a/lib_com/ivas_error.h b/lib_com/ivas_error.h
index 506c6ac00564f3eb7bdf78f05a1e54ec2995d588..e46f901c6f7fbf681d26b15cb19a38c9619ca0e0 100644
--- a/lib_com/ivas_error.h
+++ b/lib_com/ivas_error.h
@@ -78,6 +78,7 @@ typedef enum
IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED,
IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED,
IVAS_ERR_INVALID_HRTF,
+ IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA,
IVAS_ERR_INVALID_INPUT_FORMAT,
IVAS_ERR_INVALID_INDEX,
IVAS_ERR_NOT_SUPPORTED_OPTION,
@@ -97,12 +98,8 @@ typedef enum
* input data errors *
*----------------------------------------*/
IVAS_ERR_INVALID_BITSTREAM = 0x2000,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM,
IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM_CONFIG,
-#endif
-#endif
/*----------------------------------------*
* hardware errors *
@@ -141,10 +138,8 @@ typedef enum
IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING,
IVAS_ERR_INVALID_ER_PARAM,
IVAS_ERR_DIRECTIVITY_PATTERN_ID_MISSING,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IVAS_ERR_LC3PLUS_INVALID_BITRATE,
IVAS_ERR_INVALID_SPLIT_REND_CONFIG,
-#endif
/*----------------------------------------*
* unknown error *
@@ -243,12 +238,10 @@ static inline const char *ivas_error_to_string( ivas_error error_code )
return "Wrong mode";
case IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED:
return "Head rotation not supported";
-#ifdef SPLIT_REND_WITH_HEAD_ROT
case IVAS_ERR_LC3PLUS_INVALID_BITRATE:
return "Specified split rendering bit rate is not supported";
case IVAS_ERR_INVALID_SPLIT_REND_CONFIG:
return "Specified split rendering configuration is invalid";
-#endif
case IVAS_ERR_EXT_ORIENTATION_NOT_SUPPORTED:
return "External orientation not supported";
case IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED:
@@ -257,6 +250,8 @@ static inline const char *ivas_error_to_string( ivas_error error_code )
return "Acoustic environment not supported";
case IVAS_ERR_INVALID_HRTF:
return "Unsupported HRTF filter set";
+ case IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA:
+ return "Renderer data missing in HRTF binary file";
case IVAS_ERR_INVALID_INPUT_FORMAT:
return "Invalid input format";
case IVAS_ERR_INVALID_INDEX:
diff --git a/lib_com/ivas_limiter_fx.c b/lib_com/ivas_limiter_fx.c
index 4250d7a7a46db4ebc5500b6754d015d1f25a601d..60982f3f2e3ad0bf854aba398859e416e89afc44 100644
--- a/lib_com/ivas_limiter_fx.c
+++ b/lib_com/ivas_limiter_fx.c
@@ -36,7 +36,7 @@
#include "prot_fx.h"
#include "ivas_prot_rend_fx.h"
#include "ivas_rom_rend.h"
-#include "ivas_rom_com.h"
+#include "ivas_rom_com_fx.h"
#include "wmc_auto.h"
#include
#include "ivas_prot_fx.h"
diff --git a/lib_com/ivas_mcmasa_com-fx.c b/lib_com/ivas_mcmasa_com_fx.c
similarity index 100%
rename from lib_com/ivas_mcmasa_com-fx.c
rename to lib_com/ivas_mcmasa_com_fx.c
diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h
deleted file mode 100644
index 9ee17fed6baebe335659ce5631a2ce4c1d7adf9f..0000000000000000000000000000000000000000
--- a/lib_com/ivas_prot.h
+++ /dev/null
@@ -1,4068 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-#ifndef IVAS_PROT_H
-#define IVAS_PROT_H
-
-#include
-#include "options.h"
-#include
-#include "typedef.h"
-#include "stat_enc.h"
-#include "stat_dec.h"
-#include "stat_com.h"
-#include "ivas_stat_enc.h"
-#include "ivas_stat_dec.h"
-#include "ivas_stat_rend.h"
-#include "ivas_stat_com.h"
-#include "ivas_error_utils.h"
-
-#define IVAS_FLOAT_FIXED_TO_BE_REMOVED
-
-/* clang-format off */
-
-/*----------------------------------------------------------------------------------*
- * General IVAS prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_enc(
- Encoder_Struct *st_ivas, /* i : IVAS encoder structure */
- const int16_t *data, /* i : input signal */
- const int16_t n_samples /* i : number of input samples */
-);
-
-void stereo_dmx_evs_enc(
- STEREO_DMX_EVS_ENC_HANDLE hStereoDmxEVS, /* i/o: Stereo downmix for EVS encoder handle */
- const int32_t input_Fs, /* i : input sampling rate */
- int16_t data[CPE_CHANNELS * L_FRAME48k], /* i/o: input signal */
- const int16_t n_samples, /* i : number of input samples */
- const bool is_binaural /* i : indication that input is binaural audio */
-);
-
-/*! r: number of channels to be analysed */
-
-void copy_encoder_config_ivas_fx(
- Encoder_Struct *st_ivas, /* i : IVAS encoder structure */
- Encoder_State *st, /* o : encoder state structure */
- const Word16 flag_all /* i : flag 1==update all, 0=partial update Q0*/
-);
-
-
-
-ivas_error create_sce_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t sce_id, /* i : SCE # identifier */
- const int32_t element_brate /* i : element bitrate */
-);
-
-ivas_error create_cpe_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t cpe_id, /* i : CPE # identifier */
- const int32_t element_brate /* i : element bitrate */
-);
-
-ivas_error create_mct_enc_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-void destroy_cpe_enc(
- CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structure */
-);
-
-void ivas_mct_enc_close_fx(
- MCT_ENC_HANDLE *hMCT /* i/o: MCT encoder structure */
-);
-
-ivas_error ivas_corecoder_enc_reconfig(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t nSCE_old, /* i : number of SCEs in previous frame */
- const int16_t nCPE_old, /* i : number of CPEs in previous frame */
- const int16_t nchan_transport_old, /* i : number of TCs in previous frame */
- const int32_t brate_SCE, /* i : bitrate to be set for the SCEs */
- const int32_t brate_CPE, /* i : bitrate to be set for the CPEs */
- const MC_MODE last_mc_mode /* i : switching between MC modes: last mode */
-);
-
-ivas_error ivas_sce_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t sce_id, /* i : SCE # identifier */
- const float data_f[], /* i : input signal for single channel */
- const int16_t input_frame, /* i : input frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-
-ivas_error ivas_cpe_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const Word16 cpe_id, /* i : CPE # identifier */
- float data_f_ch0[], /* i : input signal for channel 0 */
- float data_f_ch1[], /* i : input signal for channel 1 */
- const Word16 input_frame, /* i : input frame length per channel */
- const Word16 nb_bits_metadata /* i : number of metadata bits */
-);
-
-ivas_error ivas_mct_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- float *data[MCT_MAX_CHANNELS], /* i : input signal buffers */
- const int16_t input_frame, /* i : input frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-ivas_error pre_proc_front_ivas(
- SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const int32_t element_brate, /* i : SCE/CPE element bitrate */
- const int16_t nb_bits_metadata, /* i : number of metadata bits */
- const int16_t input_frame, /* i : frame length */
- const int16_t n, /* i : channel number */
- float old_inp_12k8[], /* o : buffer of old input signal */
- float old_inp_16k[], /* o : buffer of old input signal @16kHz */
- float *ener, /* o : residual energy from Levinson-Durbin */
- float *relE, /* o : frame relative energy */
- float A[NB_SUBFR16k * ( M + 1 )], /* o : A(z) unquantized for the 4 subframes */
- float Aw[NB_SUBFR16k * ( M + 1 )], /* o : weighted A(z) unquantized for subframes */
- float epsP[M + 1], /* o : LP prediction errors */
- float lsp_new[M], /* o : LSPs at the end of the frame */
- float lsp_mid[M], /* o : LSPs in the middle of the frame */
- int16_t *vad_hover_flag, /* o : VAD hangover flag */
- int16_t *attack_flag, /* o : flag signaling attack */
- float realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer */
- float imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer */
- float old_wsp[], /* o : weighted input signal buffer */
- float pitch_fr[NB_SUBFR], /* o : fractional pitch values */
- float voicing_fr[NB_SUBFR], /* o : fractional pitch gains */
- int16_t *loc_harm, /* o : harmonicity flag */
- float *cor_map_sum, /* o : speech/music clasif. parameter */
- int16_t *vad_flag_dtx, /* o : HE-SAD flag with additional DTX HO */
- float enerBuffer[CLDFB_NO_CHANNELS_MAX], /* o : energy buffer */
- float fft_buff[2 * L_FFT], /* o : FFT buffer */
- const float tdm_A_PCh[M + 1], /* i : unq. LP coeff. of primary channel */
- const float tdm_lsp_new_PCh[M], /* i : unq. LSPs of primary channel */
- const float currFlatness, /* i : flatness parameter */
- const int16_t tdm_ratio_idx, /* i : Current Ratio_L index */
- float fr_bands_LR[][2 * NB_BANDS], /* i : energy in frequency bands */
- const float Etot_LR[], /* i : total energy Left & Right channel */
- float lf_E_LR[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels */
- const int16_t localVAD_HE_SAD_LR[], /* i : HE-SAD flag without hangover, LR channels */
- float band_energies_LR[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN */
- const int16_t flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz */
- const int16_t front_vad_flag, /* i : front-VAD flag to overwrite VAD decision */
- const int16_t force_front_vad, /* i : flag to force VAD decision */
- const int16_t front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision*/
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int32_t ivas_total_brate /* i : IVAS total bitrate */
-);
-
-ivas_error pre_proc_front_ivas_fx(
- SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const Word32 element_brate, /* i : SCE/CPE element bitrate Q0*/
- const Word16 nb_bits_metadata, /* i : number of metadata bits Q0*/
- const Word16 input_frame, /* i : frame length Q0*/
- const Word16 n, /* i : channel number Q0*/
- Word16 old_inp_12k8_fx[], /* o : buffer of old input signal Q_new-1*/
- Word16 old_inp_16k_fx[], /* o : buffer of old input signal @16kHz Q_new-1*/
- Word32 *ener_fx, /* o : residual energy from Levinson-Durbin epsP_fx_q*/
- Word16 *relE_fx, /* o : frame relative energy Q8*/
- Word16 A_fx[NB_SUBFR16k * ( M + 1 )], /* o : A(z) unquantized for the 4 subframes Q12*/
- Word16 Aw_fx[NB_SUBFR16k * ( M + 1 )], /* o : weighted A(z) unquantized for subframes Q12*/
- Word32 epsP_fx[M + 1], /* o : LP prediction errors epsP_fx_q*/
- Word16 *epsP_fx_q,
- Word16 lsp_new_fx[M], /* o : LSPs at the end of the frame Q15*/
- Word16 lsp_mid_fx[M], /* o : LSPs in the middle of the frame Q15*/
- Word16 *vad_hover_flag, /* o : VAD hangover flag Q0*/
- Word16 *attack_flag, /* o : flag signaling attack Q0*/
- Word32 realBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer Q(q_re_im_buf)*/
- Word32 imagBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer Q(q_re_im_buf)*/
- Word16 *q_re_im_buf, /* i/o: Q-factor of real and imag buffer */
- Word16 old_wsp_fx[], /* o : weighted input signal buffer q_old_wsp*/
- Word16 *q_old_wsp,
- Word16 pitch_fr_fx[NB_SUBFR], /* o : fractional pitch values Q6*/
- Word16 voicing_fr_fx[NB_SUBFR], /* o : fractional pitch gains Q15*/
- Word16 *loc_harm, /* o : harmonicity flag Q0*/
- Word16 *cor_map_sum_fx, /* o : speech/music clasif. parameter Q8*/
- Word16 *vad_flag_dtx, /* o : HE-SAD flag with additional DTX HO Q0*/
- Word32 enerBuffer_fx[CLDFB_NO_CHANNELS_MAX], /* o : energy buffer enerBuffer_fx_exp*/
- Word16 *enerBuffer_fx_exp, /* o : energy buffer */
- Word16 fft_buff_fx[2 * L_FFT], /* o : FFT buffer fft_buff_fx_q*/
- Word16 *fft_buff_fx_q, /* o : FFT buffer */
- const Word16 tdm_A_PCh_fx[M + 1], /* i : unq. LP coeff. of primary channel Q12*/
- const Word16 tdm_lsp_new_PCh_fx[M], /* i : unq. LSPs of primary channel Q15*/
- const Word16 currFlatness_fx, /* i : flatness parameter Q7*/
- const Word16 tdm_ratio_idx, /* i : Current Ratio_L index Q0*/
- Word32 fr_bands_LR_fx[][2 * NB_BANDS], /* i : energy in frequency bands (fr_bands_LR_fx_q) fr_bands_LR_fx_q*/
- Word16 fr_bands_LR_fx_q[CPE_CHANNELS],
- const Word16 Etot_LR_fx[], /* i : total energy Left & Right channel Q8*/
- Word32 lf_E_LR_fx[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels (lf_E_LR_fx_q)*/
- Word16 lf_E_LR_fx_q,
- const Word16 localVAD_HE_SAD_LR[], /* i : HE-SAD flag without hangover, LR channels Q0*/
- Word32 band_energies_LR_fx[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN (band_energies_LR_fx_q)*/
- Word16 band_energies_LR_fx_q,
- const Word16 flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
- const Word16 front_vad_flag, /* i : front-VAD flag to overwrite VAD decision Q0*/
- const Word16 force_front_vad, /* i : flag to force VAD decision Q0*/
- const Word16 front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision Q0*/
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/
-#ifdef NONBE_1211_DTX_BR_SWITCHING
- const Word32 last_ivas_total_brate, /* i : last IVAS total bitrate Q0*/
-#endif
- const Word32 ivas_total_brate, /* i : IVAS total bitrate - for setting the DTX Q0*/
- Word16 *Q_new
-#ifdef DEBUG_MODE_INFO
- ,
- const Word16 ch_idx
-#endif
-);
-ivas_error pre_proc_ivas_fx(
- Encoder_State *st, /* i/o: encoder state structure */
- const Word16 last_element_mode, /* i : last element mode Q0*/
- const Word32 element_brate, /* i : element bitrate Q0*/
- const Word32 last_element_brate, /* i : last element bitrate Q0*/
- const Word16 input_frame, /* i : frame length Q0*/
- Word16 old_inp_12k8_fx[], /* i/o: buffer of old input signal Q_new-1 */
- Word16 old_inp_16k_fx[], /* i/o: buffer of old input signal @ 16kHz Q_new-1 */
- Word16 **inp_fx, /* o : ptr. to inp. signal in the current frame Q_new*/
- Word32 *ener_fx, /* o : residual energy from Levinson-Durbin epsP_fx_q*/
- Word16 A_fx[NB_SUBFR16k * ( M + 1 )], /* i/o: A(z) unquantized for the 4 subframes Q12*/
- Word16 Aw_fx[NB_SUBFR16k * ( M + 1 )], /* i/o: weighted A(z) unquantized for subframes Q14*/
- Word32 epsP_fx[M + 1], /* i : LP prediction errors epsP_fx_q*/
- Word16 *epsP_fx_q, /* i : LP prediction errors */
- Word16 lsp_new_fx[M], /* i/o: LSPs at the end of the frame Q15*/
- Word16 lsp_mid_fx[M], /* i/o: LSPs in the middle of the frame Q15*/
- Word16 *new_inp_resamp16k_fx, /* o : new input signal @16kHz, non pre-emphasised, used by the WB TBE/BWE Q_new-1*/
- Word16 *Voicing_flag, /* o : voicing flag for HQ FEC Q0*/
- Word16 old_wsp_fx[], /* i : weighted input signal buffer e_old_wsp*/
- Word16 e_old_wsp,
- const Word16 loc_harm, /* i : harmonicity flag Q0*/
- const Word16 vad_flag_dtx, /* i : HE-SAD flag with additional DTX HO Q0*/
- const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/
- const Word16 vad_hover_flag, /* i : VAD hangover flag Q0*/
- const Word16 flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
- Word32 enerBuffer_fx[CLDFB_NO_CHANNELS_MAX], /* e_enerBuffer */
- Word16 e_enerBuffer,
- Word16 fft_buff_fx[2 * L_FFT], /* Qx */
- Word16 cor_map_sum_fx, /* Q8 */
- Word16 *Q_new
-);
-/*! r: number of clipped samples */
-void ivas_initialize_handles_enc_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-ivas_error ivas_init_encoder(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-void ivas_destroy_enc_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-ivas_error ivas_initialize_MD_bstr_enc_fx(
- BSTR_ENC_HANDLE *hBstr, /* o : encoder MD bitstream handle */
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-void ivas_destroy_MD_bstr_enc_fx(
- BSTR_ENC_HANDLE *hMetaData /* i/o: encoder MD bitstream handle */
-);
-
-ivas_error ivas_init_decoder_front(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_init_decoder(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_output_buff_dec(
- float *p_output_f[], /* i/o: output audio buffers */
- const int16_t nchan_out_buff_old, /* i : previous frame number of output channels*/
- const int16_t nchan_out_buff /* i : number of output channels */
-);
-#endif
-
-ivas_error stereo_dmx_evs_init_encoder(
- STEREO_DMX_EVS_ENC_HANDLE *hStereoDmxEVS, /* o : Stereo downmix for EVS encoder handle */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void stereo_dmx_evs_close_encoder(
- STEREO_DMX_EVS_ENC_HANDLE *hStereoDmxEVS /* i/o: Stereo downmix for EVS encoder handle */
-);
-
-ivas_error ivas_dec(
- Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
- int16_t *data /* o : output synthesis signal */
-);
-
-
-ivas_error mct_dec_reconfigure(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const uint16_t b_nchan_change /* i : flag indicating different channel count */
-);
-
-
-void ivas_mct_dec_close(
- MCT_DEC_HANDLE *hMCT /* i/o: MCT decoder structure */
-);
-
-ivas_error ivas_corecoder_dec_reconfig(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t nSCE_old, /* i : number of SCEs in previous frame */
- int16_t nCPE_old, /* i : number of CPEs in previous frame */
- const int16_t nchan_transport_old, /* i : number of TCs in previous frame */
- const int16_t sba_dirac_stereo_flag_old, /* i : signal stereo rendering using DFT upmix in previous frame */
- const int32_t brate_SCE, /* i : bitrate to be set for the SCEs */
- const int32_t brate_CPE /* i : bitrate to be set for the CPEs */
-);
-
-ivas_error ivas_hp20_dec_reconfig(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t nchan_hp20_old /* i : number of HP20 filters in previous frame*/
-);
-
-ivas_error ivas_sce_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t sce_id, /* i : SCE # identifier */
- float *output[1], /* o : output synthesis signal */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-ivas_error ivas_cpe_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t cpe_id, /* i : CPE # identifier */
- float *output[CPE_CHANNELS], /* o : output synthesis signal */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-ivas_error ivas_mct_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output[], /* o : output synthesis signal */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-/*! r: number of channels to be synthesised */
-
-void copy_decoder_config(
- Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
- Decoder_State *st /* o : decoder state structure */
-);
-
-void destroy_core_dec(
- DEC_CORE_HANDLE hCoreCoder /* i/o: core decoder structure */
-);
-
-
-void ivas_initialize_handles_dec(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_core_enc_fx(
- SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- const Word16 n_CoreChannels, /* i : number of core channels to be coded Q0*/
- Word16 old_inp_12k8_fx[][L_INP_12k8], /* i : buffer of old input signal Q_new-1*/
- Word16 old_inp_16k_fx[][L_INP], /* i : buffer of old input signal Q_new-1*/
- Word16 Q_new[],
- Word32 ener_fx[], /* i : residual energy from Levinson-Durbin epsP_fx_q*/
- Word16 A_fx[][NB_SUBFR16k * ( M + 1 )], /* i : A(z) unquantized for the 4 subframes Q12*/
- Word16 Aw_fx[][NB_SUBFR16k * ( M + 1 )], /* i : weighted A(z) unquantized for subframes Q12*/
- Word32 epsP_fx[][M + 1], /* i : LP prediction errors epsP_fx_q*/
- Word16 epsP_fx_q[], /* i : LP prediction errors */
- Word16 lsp_new_fx[][M], /* i : LSPs at the end of the frame Q15*/
- Word16 lsp_mid_fx[][M], /* i : LSPs in the middle of the frame Q15*/
- const Word16 vad_hover_flag[], /* i : VAD hanglover flag Q0*/
- Word16 attack_flag[], /* i : attack flag (GSC or TC) Q0*/
- Word32 realBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer q_re_im_buf*/
- Word32 imagBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer q_re_im_buf*/
- Word16 *q_re_im_buf,
- Word16 old_wsp_fx[][L_WSP], /* i : weighted input signal buffer e_old_wsp*/
- Word16 e_old_wsp[],
- const Word16 loc_harm[], /* i : harmonicity flag Q0*/
- const Word16 cor_map_sum_fx[], /* i : speech/music clasif. parameter Q8*/
- const Word16 vad_flag_dtx[], /* i : HE-SAD flag with additional DTX HO Q0*/
- Word32 enerBuffer_fx[][CLDFB_NO_CHANNELS_MAX], /* o : energy buffer enerBuffer_fx_exp*/
- Word16 enerBuffer_fx_exp[], /* o : energy buffer */
- Word16 fft_buff_fx[][2 * L_FFT], /* i : FFT buffer Qx*/
- const Word16 tdm_SM_or_LRTD_Pri, /* i : channel combination scheme flag Q0*/
- const Word16 ivas_format, /* i : IVAS format Q0*/
- const Word16 flag_16k_smc /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
-);
-
-
-
-void decod_gen_2sbfr(
- Decoder_State *st, /* i/o: decoder static memory */
- const int16_t sharpFlag, /* i : formant sharpening flag */
- const float *Aq, /* i : LP filter coefficient */
- float *pitch_buf, /* o : floating pitch values for each subframe */
- float *voice_factors, /* o : voicing factors */
- float *exc, /* i/o: adapt. excitation exc */
- float *exc2, /* i/o: adapt. excitation/total exc */
- float *bwe_exc, /* o : excitation for SWB TBE */
- float *gain_buf, /* o : floating pitch gain for each subframe */
- const int16_t tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
- const float tdm_Pri_pitch_buf[] /* i : pitch values for primary channel */
-);
-
-void synchro_synthesis(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i/o: output synthesis signal */
- const int16_t output_frame, /* i : Number of samples */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void synchro_synthesis_fixed(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i/o: output synthesis signal */
- const int16_t output_frame, /* i : Number of samples */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void stereo_tcx_init_enc(
- Encoder_State *st /* i/o: encoder state structure */
-);
-
-
-
-
-void stereo_tcx_init_dec(
- Decoder_State *st, /* i/o: decoder state structure */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int16_t last_element_mode /* i : element mode of previous frame */
-);
-
-/*! r: S/M decision (0 = speech or noise, 1 = unclear, 2 = music) */
-int16_t ivas_smc_gmm(
- Encoder_State *st, /* i/o: encoder state structure */
- STEREO_CLASSIF_HANDLE hStereoClassif, /* i/o: stereo classifier structure */
- const int16_t localVAD_HE_SAD, /* i : HE-SAD flag without hangover */
- const float Etot, /* i : total frame energy */
- const float lsp_new[M], /* i : LSPs in current frame */
- const float cor_map_sum, /* i : correlation map sum (from multi-harmonic anal.) */
- const float epsP[M + 1], /* i : LP prediciton error */
- const float PS[], /* i : energy spectrum */
- const float non_sta, /* i : unbound non-stationarity */
- const float relE, /* i : relative frame energy */
- int16_t *high_lpn_flag, /* i/o: sp/mus LPN flag */
- const int16_t flag_spitch /* i : flag to indicate very short stable pitch */
-);
-
-void ivas_smc_mode_selection(
- Encoder_State *st, /* i/o: encoder state structure */
- const int32_t element_brate, /* i : element bitrate */
- int16_t smc_dec, /* i : raw decision of the 1st stage classifier */
- const float relE, /* i : relative frame energy */
- const float Etot, /* i : total frame energy */
- int16_t *attack_flag, /* i/o: attack flag (GSC or TC) */
- const float *inp, /* i : input signal */
- const float S_map[], /* i : short-term correlation map */
- const int16_t flag_spitch /* i : flag to indicate very short stable pitch */
-);
-
-/*! r: S/M decision (0=speech or noise,1=unclear,2=music) */
-int16_t ivas_acelp_tcx20_switching(
- Encoder_State *st, /* i/o: encoder state structure */
- const float *inp, /* i : new input signal */
- const float *wsp, /* i : input weighted signal */
- const float non_staX, /* i : unbound non-stationarity for sp/mu clas */
- const float *pitch_fr, /* i : fraction pitch values */
- const float *voicing_fr, /* i : fractional voicing values */
- const float currFlatness, /* i : flatness */
- const float lsp_mid[M], /* i : LSPs at the middle of the frame */
- const float stab_fac, /* i : LP filter stability */
- float *res_cod_SNR_M,
- const int16_t flag_16k_smc /* i : flag to indicate if the OL SMC is run at 16 kHz */
-);
-
-
-
-void ivas_decision_matrix_dec(
- Decoder_State *st, /* i/o: decoder state structure */
- int16_t *sharpFlag, /* o : formant sharpening flag */
- int16_t *core_switching_flag, /* o : ACELP->HQ switching frame flag */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t nchan_out /* i : Number of output channels */
-);
-
-void set_bw_stereo(
- CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structures */
-);
-
-/*! r: flag indicating whether the coded BW has changed */
-int16_t set_bw_mct(
- CPE_ENC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE encoder structures */
- const int16_t nCPE /* i : number of CPEs */
-);
-void dec_acelp_fast(
- Decoder_State *st, /* i/o: decoder state structure */
- const int16_t cdk_index, /* i : codebook index */
- float code[], /* o : algebraic (fixed) codebook excitation */
- const int16_t L_subfr /* i : subframe length */
-);
-
-void set_transient_stereo(
- CPE_ENC_HANDLE hCPE, /* i : CPE structure */
- float currFlatness[] /* i/o: current flatness */
-);
-
-/*! r: preliminary flag to force ACELP */
-int16_t transient_analysis(
- TRAN_DET_HANDLE hTranDet, /* i : handle transient detection */
- const float cor_map_LT[], /* i : LT correlation map */
- const float multi_harm_limit /* i : multi harminic threshold */
-);
-
-void ivas_post_proc(
- SCE_DEC_HANDLE hSCE, /* i/o: SCE decoder structure */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const int16_t n, /* i : channel number */
- float synth[], /* i/o: output synthesis signal */
- float *output[CPE_CHANNELS], /* i/o: output synthesis signal */
- const int16_t output_frame, /* i : output frame length */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void ivas_renderer_select(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_mc_enc_config_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-ivas_error ivas_mc_dec_config(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t idx, /* i : LS config. index */
- uint16_t *nSamplesRendered, /* o : samples flushed from last frame (JBM) */
- int16_t *data /* o : output synthesis signal */
-);
-
-/*! r: MC format mode (MCT, McMASA, ParamMC) */
-MC_MODE ivas_mc_mode_select(
- const MC_LS_SETUP mc_ls_setup, /* i : MC loudspeaker setup */
- const int32_t total_brate /* i : IVAS total bitrate */
-);
-
-/*! r: number of loudspeaker channels */
-int16_t ivas_mc_ls_setup_get_num_channels(
- const MC_LS_SETUP mc_ls_setup /* i : loudspeaker setup (CICP) */
-);
-
-/*! r: output configuration*/
-AUDIO_CONFIG ivas_mc_map_ls_setup_to_output_config(
- const MC_LS_SETUP mc_ls_setup /* i : multi channel loudspeaker setup */
-);
-
-/*! r: multi channel loudspeaker setup */
-MC_LS_SETUP ivas_mc_map_output_config_to_mc_ls_setup(
- const AUDIO_CONFIG output_config /* i : output audio configuration */
-);
-
-void smooth_dft2td_transition(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i/o: synthesis @external Fs */
- const int16_t output_frame /* i : output frame length */
-);
-
-
-/*! r: flag indicating a valid bitrate */
-Word16 is_IVAS_bitrate_fx(
- const Word32 ivas_total_brate /* i : IVAS total bitrate */
-);
-
-int16_t is_DTXrate(
- const int32_t ivas_total_brate /* i : IVAS total bitrate */
-);
-
-
-void TonalMdctConceal_create_concealment_noise_ivas(
- float concealment_noise[L_FRAME48k],
- CPE_DEC_HANDLE hCPE,
- const int16_t L_frameTCX,
- const int16_t L_frame,
- const int16_t idchan,
- const int16_t subframe_idx,
- const int16_t core,
- const float crossfade_gain,
- const TONALMDCTCONC_NOISE_GEN_MODE noise_gen_mode
-);
-
-void TonalMdctConceal_whiten_noise_shape_ivas(
- Decoder_State *st,
- const int16_t L_frame,
- const TONALMDCTCONC_NOISE_SHAPE_WHITENING_MODE
-);
-
-void dtx_read_padding_bits(
- DEC_CORE_HANDLE st,
- const int16_t num_bits
-);
-
-
-
-/*----------------------------------------------------------------------------------*
- * JBM prototypes
- *----------------------------------------------------------------------------------*/
-
-
-
-ivas_error ivas_jbm_dec_flush_renderer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t tc_granularity_new, /* i : new renderer granularity */
- const RENDERER_TYPE renderer_type_old, /* i : old renderer type */
- const AUDIO_CONFIG intern_config_old, /* i : old internal config */
- const IVAS_OUTPUT_SETUP_HANDLE hIntSetupOld, /* i : old internal output setup */
- const MC_MODE mc_mode_old, /* i : old MC mode */
- const ISM_MODE ism_mode_old, /* i : old ISM mode */
- uint16_t *nSamplesRendered, /* o : number of samples flushed */
- int16_t *data /* o : output synthesis signal */
-);
-
-void ivas_jbm_dec_feed_tc_to_renderer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t nSamplesForRendering, /* i : number of TC samples available for rendering */
- int16_t *nSamplesResidual, /* o : number of samples not fitting into the renderer grid and buffer for the next call*/
- float *data /* i/o: transport channels/output synthesis signal */
-);
-
-ivas_error ivas_jbm_dec_set_discard_samples(
- Decoder_Struct *st_ivas /* i/o: main IVAS decoder structre */
-);
-
-void ivas_jbm_dec_get_adapted_linear_interpolator(
- const int16_t default_interp_length, /* i : default length of the (full-frame) interpolator */
- const int16_t interp_length, /* i : length of the interpolator to be created */
- float *interpolator /* o : the interpolator */
-);
-
-
-
-int16_t ivas_jbm_dec_get_num_tc_channels(
- Decoder_Struct *st_ivas /* i : IVAS decoder handle */
-);
-
-void ivas_jbm_dec_copy_tc_no_tsm(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *tc[], /* i : transport channels */
- const int16_t output_frame /* i : output frame size */
-);
-
-
-TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode(
- Decoder_Struct *st_ivas /* i : IVAS decoder handle */
-);
-
-/*! r: render granularity */
-int16_t ivas_jbm_dec_get_render_granularity_flt(
- const RENDERER_TYPE rendererType, /* i : renderer type */
- const IVAS_FORMAT ivas_format, /* i : ivas format */
- const MC_MODE mc_mode, /* i : MC mode */
- const int32_t output_Fs /* i : sampling rate */
-);
-
-ivas_error ivas_jbm_dec_tc_buffer_open(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const TC_BUFFER_MODE tc_buffer_mode, /* i : buffer mode */
- const int16_t nchan_transport_jbm, /* i : number of real transport channels */
- const int16_t nchan_transport_internal, /* i : number of totally buffered channels */
- const int16_t nchan_full, /* i : number of channels to fully store */
- const int16_t n_samples_granularity /* i : granularity of the renderer/buffer */
-);
-
-ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const TC_BUFFER_MODE tc_buffer_mode, /* i : new buffer mode */
- const int16_t nchan_transport_jbm, /* i : new number of real transport channels */
- const int16_t nchan_transport_internal, /* i : new number of totally buffered channels */
- const int16_t nchan_full, /* i : new number of channels to fully store */
- const int16_t n_samples_granularity /* i : new granularity of the renderer/buffer */
-);
-
-void ivas_jbm_dec_tc_buffer_close(
- DECODER_TC_BUFFER_HANDLE *phTcBuffer /* i/o: TC buffer handle */
-);
-
-void ivas_jbm_dec_td_renderers_adapt_subframes(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_jbm_dec_metadata_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_jbm_masa_sf_to_sf_map(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * ISM prototypes
- *----------------------------------------------------------------------------------*/
-
-void bitbudget_to_brate(
- const Word16 x[], /* i : bitbudgets Q0 */
- Word32 y[], /* o : bitrates Q0 */
- const Word16 N /* i : number of entries to be converted */
-);
-
-void ivas_ism_reset_metadata(
- ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handles */
-);
-
-void ivas_ism_reset_metadata_enc(
- ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handle */
-);
-void ivas_ism_reset_metadata_API(
- ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handles */
-);
-
-/*! r: index of the winning codeword */
-Word16 ism_quant_meta_fx(
- const Word32 val, /* i : scalar value to quantize Q22 */
- Word32 *valQ, /* o : quantized value Q22 */
- const Word32 borders_fx[], /* i : level borders Q22 */
- const Word32 q_step_fx, /* i : quantization step Q22 */
- const Word32 q_step_border_fx, /* i : quantization step at the border Q22 */
- const Word16 cbsize /* i : codebook size */
-);
-
-ivas_error ivas_ism_metadata_enc_create_fx(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t n_ISms, /* i : number of objects */
- int32_t element_brate_tmp[] /* o : element bitrate per object */
-);
-
-ivas_error ivas_ism_metadata_dec_create(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t n_ISms, /* i : number of objects */
- int32_t element_brate_tmp[] /* o : element bitrate per object */
-);
-
-ivas_error ivas_ism_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- float *data[], /* i : input signal [channels][samples] */
- const int16_t input_frame, /* i : input frame length per channel */
- int16_t *nb_bits_metadata, /* i : number of metadata bits */
- const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */
-);
-
-ivas_error ivas_ism_metadata_dec(
- const int32_t ism_total_brate, /* i : ISM total bitrate */
- const int16_t nchan_ism, /* i : number of ISM channels */
- int16_t *nchan_transport, /* o : number of transport channels */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- SCE_DEC_HANDLE hSCE[], /* i/o: SCE decoder handles */
- const int16_t bfi, /* i : bfi flag */
- int16_t nb_bits_metadata[], /* o : number of metadata bits */
- ISM_MODE ism_mode, /* i : ISM mode */
- ISM_DTX_DATA_DEC hISMDTX, /* i/o: ISM DTX structure */
- const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Config Handle */
- int16_t *ism_extended_metadata_flag, /* i/o: Extended metadata active in renderer */
- int16_t *ism_extmeta_cnt, /* i/o: Number of change frames observed */
- DEC_CORE_HANDLE st0 /* i : core-coder handle */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Parametric ISM prototypes
- *----------------------------------------------------------------------------------*/
-
-/*! r: ISM format mode */
-
-ivas_error ivas_param_ism_enc_open_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-void ivas_param_ism_enc_close_fx(
- PARAM_ISM_CONFIG_HANDLE *hParamIsm, /* i/o: ParamISM handle */
- const int32_t input_Fs /* i : input sampling_rate */
-);
-
-void ivas_ism_metadata_close(
- ISM_METADATA_HANDLE hIsmMetaData[], /* i/o : object metadata handles */
- const int16_t first_idx /* i : index of first handle to deallocate */
-);
-
-
-ivas_error ivas_ism_enc_config(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-
-
-
-void ivas_param_ism_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */
-);
-
-void ivas_ism_dec_digest_tc(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-
-void ivas_param_ism_dec_render(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-void ivas_param_ism_params_to_masa_param_mapping(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * ISM DTX prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_ism_dtx_open(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-/*! r: indication of DTX frame */
-int16_t ivas_ism_dtx_enc(
- ISM_DTX_HANDLE hISMDTX, /* i/o: ISM DTX handle */
- SCE_ENC_HANDLE hSCE[MAX_SCE], /* i/o: SCE encoder structure */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t nchan_ism, /* i : number of objects */
- const int16_t nchan_transport, /* i : number of transport channels */
- int16_t vad_flag[MAX_NUM_OBJECTS], /* i : VAD flag */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- int16_t md_diff_flag[], /* o : metadata differential flag */
- int16_t *sid_flag /* o : indication of SID frame */
-);
-
-void ivas_ism_dtx_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- int16_t *nb_bits_metadata /* o : number of metadata bits */
-);
-
-void ivas_ism_metadata_sid_enc_fx(
- ISM_DTX_HANDLE hISMDTX, /* i/o: ISM DTX handle */
- const int16_t flag_noisy_speech, /* i : noisy speech flag */
- const int16_t nchan_ism, /* i : number of objects */
- const int16_t nchan_transport, /* i : number of transport channels */
- const ISM_MODE ism_mode, /* i : ISM mode */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- const int16_t sid_flag, /* i : indication of SID frame */
- const int16_t md_diff_flag[], /* i : metadata differental flag */
- BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
- int16_t nb_bits_metadata[] /* o : number of metadata bits */
-);
-
-void ivas_ism_metadata_sid_dec(
- SCE_DEC_HANDLE hSCE[MAX_SCE], /* i/o: SCE decoder structure */
- const int32_t ism_total_brate, /* i : ISM total bitrate */
- const int16_t bfi, /* i : bfi flag */
- const int16_t nchan_ism, /* i : number of objects */
- const int16_t nchan_transport, /* i : number of transport channels */
- const ISM_MODE ism_mode, /* i : ISM mode */
- int16_t *flag_noisy_speech, /* o : noisy speech flag */
- int16_t *sce_id_dtx, /* o : SCE DTX ID */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- int16_t nb_bits_metadata[] /* o : number of metadata bits */
-);
-
-
-void ivas_param_ism_compute_noisy_speech_flag_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-
-void update_last_metadata(
- const int16_t nchan_ism, /* i : number of objects */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- const int16_t updt_flag[] /* i : last metadata update flag */
-);
-
-void ivas_ism_dtx_limit_noise_energy_for_near_silence(
- SCE_DEC_HANDLE hSCE[], /* i/o: SCE decoder structures */
- const int16_t sce_id_dtx, /* i : SCE DTX ID */
- const int16_t nchan_transport /* i : number of transport channels */
-);
-
-/*----------------------------------------------------------------------------------*
- * DFT Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-
-void stereo_dft_enc_analyze(
- Encoder_State **sts, /* i/o: encoder state structure */
- const int16_t n_channels, /* i : number of input channels */
- const int16_t input_frame, /* i : input frame length */
- STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: encoder MDCT stereo handle */
- float DFT[CPE_CHANNELS][STEREO_DFT_N_MAX_ENC], /* o : DFT buffers */
- float *input_mem[CPE_CHANNELS] /* i/o: input buffer memory */
-);
-
-float stereo_dft_enc_synthesize(
- STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */
- float *output, /* o : output synthesis */
- const int16_t chan, /* i : channel number */
- const int32_t input_Fs, /* i : input sampling rate */
- const int32_t output_sampling_rate, /* i : output sampling rate */
- const int16_t L_frame /* i : frame length at internal Fs */
-);
-
-
-
-
-void stereo_dtf_cng(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i/o: DFT buffers */
- const int16_t output_frame /* i : output frame size */
-);
-
-void stereo_dft_cng_side_gain(
- STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: DFT stereo encoder handle */
- STEREO_CNG_ENC_HANDLE hStereoCng, /* i/o: Stereo CNG data structure */
- const int32_t core_brate, /* i : core bitrate */
- const int32_t last_core_brate, /* i : last core bitrate */
- const int16_t bwidth /* i : audio band-width */
-);
-
-
-void stereo_dft_dequantize_itd(
- int16_t *ind,
- float *out,
- const int32_t output_Fs
-);
-
-
-
-void stereo_dft_dec_sid_coh(
- Decoder_State *st, /* i/o: decoder state structure */
- const int16_t nbands, /* i : number of DFT stereo bands */
- float *coh, /* i/o: coherence */
- int16_t *nb_bits /* i/o: number of bits read */
-);
-
-ivas_error stereo_dft_dec_create(
- STEREO_DFT_DEC_DATA_HANDLE *hStereoDft, /* i/o: decoder DFT stereo handle */
- const int32_t element_brate, /* i : element bitrate */
- const int32_t output_Fs, /* i : output sampling rate */
- const int16_t sba_dirac_stereo_flag, /* i : signal stereo output for SBA DirAC */
- const int16_t nchan_transport /* i : number of transport channels */
-);
-
-void stereo_dft_dec_reset(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft /* i/o: decoder DFT stereo handle */
-);
-
-void stereo_dft_dec_update(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const int16_t output_frame, /* i : output frame length */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void stereo_dft_dec_destroy(
- STEREO_DFT_DEC_DATA_HANDLE *hStereoDft /* i/o: decoder DFT stereo handle */
-);
-
-void stereo_dft_dec_analyze(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const float *input, /* i : input signal */
- float out_DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers */
- const int16_t chan, /* i : channel number */
- const int16_t input_frame, /* i : input frame size */
- const int16_t output_frame, /* i : output frame size */
- const DFT_STEREO_DEC_ANA_TYPE ana_type, /* i : signal type to analyze */
- const int16_t k_offset, /* i : offset of DFT */
- const int16_t delay /* i : delay in samples for input signal */
-);
-
-void stereo_dft_dec_synthesize(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i : DFT buffers */
- const int16_t chan, /* i : channel number */
- float output[L_FRAME48k], /* o : output synthesis signal */
- const int16_t output_frame /* i : output frame length */
-);
-
-
-void stereo_dft_res_ecu(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */
- float *pDFT_RES, /* i/o: residual signal */
- float *const DFT_PRED_RES, /* i/o: residual prediction signal */
- const int16_t k, /* i : Subframe index */
- const int16_t output_frame, /* i : Output frame length */
- const int16_t prev_bfi, /* i : Previous BFI */
- const float dmx_nrg, /* i : Down-mix energy */
- int16_t *num_plocs, /* i/o: Number of peak locations */
- int16_t *plocs, /* i/o: Peak locations (bin) */
- float *plocsi, /* i/o: Peak locations (fractional) */
- float *input_mem /* o : Residual DFT buffer input mem */
-);
-
-void stereo_dft_res_subst_spec(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */
- float *pDFT_RES, /* i/o: residual signal */
- const float *const DFT_PRED_RES, /* i : residual prediction signal */
- const int16_t time_offs, /* i : Time offset for phase adjustm. */
- const int16_t L_res, /* i : bandwidth of residual signal */
- const int16_t L_ana, /* i : Length of FFT analysis */
- const int16_t k, /* i : Subframe index */
- int16_t *num_plocs, /* i/o: Number of peak locations */
- int16_t *plocs, /* i/o: Peak locations (bin) */
- float *plocsi, /* i/o: Peak locations (fractional) */
- const int16_t analysis_flag /* i : Flag for running peak analysis */
-);
-
-void stereo_dft_res_ecu_burst_att(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */
- float *pDFT_RES, /* i/o: residual signal /att. residual */
- const float dmx_nrg, /* i : dmx energy of current frame */
- const int16_t L_res, /* i : Bandwidth of residual */
- const int16_t L_ana /* i : Length of FFT analysis */
-);
-
-/*! r: total energy of downmix with maximum swb bandwidth max */
-float stereo_dft_dmx_swb_nrg(
- const float *dmx_k0, /* i : first subframe spectrum */
- const float *dmx_k1, /* i : second subframe spectrum */
- const int16_t frame_length /* i : frame lanegth */
-);
-
-int16_t stereo_dft_sg_recovery(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft /* i/o: Decoder DFT stereo handle */
-);
-
-void stereo_dft_dec_res(
- CPE_DEC_HANDLE hCPE, /* i/o: decoder CPE handle */
- float res_buf[STEREO_DFT_N_8k], /* i : residual buffer */
- float *output /* o : output frame */
-);
-
-/*! r: Decision to enable or disable BPF on DFT stereo residual */
-
-void bpf_pitch_coherence(
- Decoder_State *st, /* i/o: decoder state structure */
- const float pitch_buf[] /* i : pitch for each subframe [0,1,2,3] */
-);
-
-void stereo_dft_dec_read_BS(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int32_t element_brate, /* i : element bitrate */
- int32_t *total_brate, /* o : total bitrate */
- Decoder_State *st, /* i/o: decoder state structure */
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const int16_t bwidth, /* i : bandwidth */
- const int16_t output_frame, /* i : output frame length */
- float res_buf[STEREO_DFT_N_8k], /* o : residual buffer */
- int16_t *nb_bits, /* o : number of bits read */
- float *coh, /* i/o: Coherence */
- const int16_t ivas_format /* i : ivas format */
-);
-
-void stereo_dft_dec_smooth_parameters(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const int16_t prev_sid_nodata, /* i : Previous SID/No data indicator */
- const int16_t active_frame_counter, /* i : Active frame counter */
- const int32_t element_brate /* i : Element bitrate */
-);
-
-void stereo_dft_generate_res_pred(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const float samp_ratio, /* i : sampling ratio */
- float *pDFT_DMX, /* i : downmix signal */
- float *DFT_PRED_RES, /* o : residual prediction signal */
- float *pPredGain, /* i : residual prediction gains */
- const int16_t k, /* i : subframe index */
- float *ap_filt_DMX, /* i : enhanced stereo filling signal */
- int16_t *stop, /* o : last FD stereo filling bin */
- const int16_t bfi /* i : BFI flag */
-);
-
-void stereo_dft_dec_core_switching(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float output[], /* i/o: synthesis @internal Fs */
- float synth[], /* i : synthesis @output Fs */
- float hb_synth[], /* i/o: hb synthesis */
- float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers */
- const int16_t output_frame, /* i : output frame length */
- const int16_t use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */
- const int16_t sba_dirac_stereo_dtx_flag /* i : DTX indicator for SBA DirAC stereo */
-);
-
-void init_basic_allpass(
- basic_allpass_t *ap, /* i/o: basic allpass structure */
- const float *gains, /* i : allpass filter gains */
- const int16_t *delays /* i : allpass filter delays */
-);
-
-void filter_with_allpass(
- const float *sig, /* i : allpass input signal */
- float *out, /* o : filtered output */
- const int16_t len, /* i : length of input */
- basic_allpass_t *ap /* i/o: basic allpass structure */
-);
-
-/*! r: used GR order */
-
-/*! r: used GR order */
-
-
-/*! r: number of bits written */
-
-/*! r: number of bits written */
-
-
-void stereo_dft_enc_compute_itd(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- float *DFT_L,
- float *DFT_R,
- const int16_t k_offset,
- const int16_t input_frame,
- const int16_t vad_flag_dtx[],
- const int16_t vad_hover_flag[],
- float *bin_nrgL,
- float *bin_nrgR
-);
-
-void stereo_dft_config(
- STEREO_DFT_CONFIG_DATA_HANDLE hConfig, /* o : DFT stereo configuration */
- const int32_t brate, /* i : IVAS/CPE/nominal total bitrate */
- int16_t *bits_frame_nominal, /* o : primary channel nominal bits per frame */
- int16_t *bits_frame_nominal_2 /* o : secondary channel nominal bits per frame*/
-);
-
-int16_t stereo_dft_band_config(
- int16_t *band_limits, /* o : DFT band limits */
- const int16_t band_res, /* i : DFT band resolution */
- const int16_t NFFT, /* i : analysis/synthesis window length */
- const int16_t enc_dec /* i : flag to indicate enc vs dec */
-);
-
-void stereo_dft_dmx_out_reset(
- STEREO_DFT_DMX_DATA_HANDLE hStereoDftDmx /* i/o: DFT stereo DMX decoder */
-);
-
-void stereo_dft_unify_dmx(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder stereo handle */
- Decoder_State *st0, /* i/o: decoder state structure */
- float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i/o: DFT buffers */
- float *input_mem, /* i/o: mem of buffer DFT analysis */
- const int16_t prev_sid_nodata /* i : Previous SID/No data indicator */
-);
-
-void add_HB_to_mono_dmx(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float output[L_FRAME48k], /* i/o: output synthesis */
- float outputHB[L_FRAME48k], /* i : HB synthesis */
- const int16_t last_core, /* i : last core, primary channel */
- const int16_t output_frame /* i : frame length */
-);
-
-/*----------------------------------------------------------------------------------*
- * Range Coder prototypes
- *----------------------------------------------------------------------------------*/
-
-void rc_uni_dec_init(
- RangeUniDecState *rc_st_dec, /* i/o: RC state handle */
- uint16_t *bit_buffer, /* i : Bit buffer */
- const int16_t max_available_bits /* i : Total maximum bits available */
-);
-
-/*! r: Read symbol */
-uint16_t rc_uni_dec_read_symbol_fastS(
- RangeUniDecState *rc_st_dec, /* i/o: Decoder State */
- const uint16_t cum_freq_table[], /* i : Cumulative frequency up to symbol */
- const uint16_t sym_freq_table[], /* i : Symbol frequency */
- const uint16_t alphabet_size, /* i : Number of symbols in the alphabet */
- const uint16_t tot_shift /* i : Total frequency as a power of 2 */
-);
-
-/*! r: Read bit */
-uint16_t rc_uni_dec_read_bit(
- RangeUniDecState *rc_st_dec /* i/o: RC state handle */
-);
-
-/*! r: Read bit */
-uint16_t rc_uni_dec_read_bit_prob_fast(
- RangeUniDecState *rc_st_dec, /* i/o: RC state handle */
- const int16_t freq0, /* i : Frequency for symbol 0 */
- const uint16_t tot_shift /* i : Total frequency as a power of 2 */
-);
-
-/*! r: Read bits */
-uint16_t rc_uni_dec_read_bits(
- RangeUniDecState *rc_st_dec, /* i/o: RC state handle */
- const int16_t bits /* i : Number of bits */
-);
-
-/*! r: Total number of bits consumed */
-int16_t rc_uni_dec_virtual_finish(
- RangeUniDecState *rc_st_dec /* i/o: RC state handle */
-);
-
-/*! r: Total number of bits consumed */
-int16_t rc_uni_dec_finish(
- RangeUniDecState *rc_st_dec /* i/o: RC state handle */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * ECLVQ Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-float ECSQ_dequantize_gain(
- const int16_t index
-);
-
-
-
-void ECSQ_init_instance(
- ECSQ_instance *ecsq_inst,
- const int16_t config_index,
- void *ac_handle
-);
-
-
-
-void ECSQ_dequantize_vector(
- const int16_t *input,
- const float global_gain,
- const int16_t N,
- float *output
-);
-
-
-/*----------------------------------------------------------------------------------*
- * ICA Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_tca_init_enc(
- STEREO_TCA_ENC_HANDLE hStereoTCA, /* i/o: Stereo TCA encoder handle */
- const int32_t input_Fs /* i : input sampling frequency */
-);
-
-void stereo_tca_enc(
- CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- const int16_t input_frame /* i : length of a frame per channel */
-);
-
-void stereo_tca_init_dec(
- STEREO_TCA_DEC_HANDLE hStereoTCA /* i/o: Stereo TCA handle */
-);
-
-void stereo_tca_dec(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *synth[CPE_CHANNELS], /* i/o: output synth */
- const int16_t output_frame /* i : length of a frame per channel */
-);
-
-void stereo_tca_scale_R_channel(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output, /* i/o: output synthesis, R channel */
- const int16_t output_frame /* i : frame length */
-);
-
-void adjustTargetSignal(
- float *target,
- const int16_t prevShift,
- const int16_t currShift,
- const int16_t L_shift_adapt,
- const int16_t method
-);
-
-/*----------------------------------------------------------------------------------*
- * IC-BWE Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-
-void stereo_icBWE_preproc(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const int16_t input_frame, /* i : input frame length */
- float shb_speech_nonref[] /* o : SHB speech non-ref channel */
-);
-
-void stereo_icBWE_enc(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const float shb_speech_ref[], /* i : SHB speech ref channel */
- float shb_speech_nonref[], /* i/o: SHB speech non-ref channel */
- const float *voice_factors /* i : voicing factors */
-);
-
-void stereo_icBWE_init_dec(
- STEREO_ICBWE_DEC_HANDLE hStereoICBWE /* i/o: Stereo inter-channel BWE handle */
-);
-
-void stereo_icBWE_dec(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *synthRef, /* i/o: Reference channel HB synthesis at output Fs */
- float *synth, /* o : Non reference channel HB synthesis at output Fs */
- const float *fb_synth_ref, /* i : ref. high-band synthesis 16-20 kHz */
- const float *voice_factors, /* i : voicing factors */
- const int16_t output_frame /* i : frame length */
-);
-
-void stereo_icBWE_decproc(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i/o: output symthesis */
- float outputHB[CPE_CHANNELS][L_FRAME48k], /* i : HB synthesis */
- const int16_t last_core, /* i : last core, primary channel */
- const int16_t last_bwidth, /* i : last bandwidth */
- const int16_t output_frame /* i : frame length */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Stereo classifiers prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_classifier_features(
- STEREO_CLASSIF_HANDLE hStereoClassif, /* i/o: stereo classifier structure */
- const int16_t idchan, /* i : channel ID */
- const int16_t element_mode, /* i : element mode */
- const int16_t vad_flag, /* i : VAD flag */
- const float lsf_new[], /* i : LSFs at the end of the frame */
- const float epsP[], /* i : LP analysis residual energies for each iteration*/
- const int16_t pitch[], /* i : open-loop pitch values for quantiz. */
- const float voicing[], /* i : OL maximum normalized correlation */
- const float cor_map_sum, /* i : speech/music clasif. parameter */
- const float non_staX, /* i : unbound non-stationarity for sp/mu clas. */
- const float sp_div, /* i : spectral diversity feature */
- const int16_t clas /* i : signal class */
-);
-
-
-void xtalk_classifier_dft(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const int16_t itd, /* i : ITD from DFT stereo - used as a feature */
- const float gcc_phat[] /* i : GPHAT cross-channel correlation function */
-);
-
-/*----------------------------------------------------------------------------------*
- * TD Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_td_init_enc(
- STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i/o: TD stereo encoder handle */
- const int16_t last_element_mode /* i : last element mode */
-);
-
-
-
-void stereo_tdm_downmix(
- STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i : TD stereo IVAS encoder structure */
- float *Left_in, /* i/o: Left channel -> Primary channel */
- float *Right_in, /* i/o: Right channel -> Secondary channel */
- const int16_t input_frame, /* i : Number of samples */
- const int16_t tdm_ratio_idx, /* i : TDM ratio index */
- const int16_t tdm_SM_flag, /* i : channel combination scheme flag */
- const int16_t tdm_ratio_idx_SM /* i : TDM ratio index for SM mode */
-);
-
-void stereo_td_init_dec(
- STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle */
- const int16_t last_element_mode /* i : last element mode */
-);
-
-void tdm_configure_dec(
- const int16_t ivas_format, /* i : IVAS format */
- const int16_t ism_mode, /* i : ISM mode in combined format */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- int16_t *tdm_ratio_idx, /* o : ratio index */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-void tdm_upmix_plain(
- float Left[], /* o : left channel */
- float Right[], /* o : right channel */
- const float PCh_2_L[], /* i : primary channel */
- const float SCh_2_R[], /* i : secondary channel */
- const float LR_ratio, /* i : mixing ratio */
- const float inv_den_LR_ratio, /* i : inverse mixing ration */
- const int16_t start_index, /* i : start index */
- const int16_t end_index, /* i : end index */
- const int16_t plus_minus_flag /* i : plus/minus flag */
-);
-
-void stereo_tdm_combine(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *PCh_2_L, /* i/o: Primary channel -> output as L channel */
- float *SCh_2_R, /* i/o: Seconday channel -> output as R channel */
- const int16_t output_frame, /* i : Number of samples */
- const int16_t flag_HB, /* i : flag to distinguish between core (0) and HB (1) synthesis */
- const int16_t tdm_ratio_idx /* i : TDM ratio index */
-);
-
-/*! r: replication decision; 1 = Use old LP */
-void tdm_ol_pitch_comparison(
- CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- float pitch_fr[CPE_CHANNELS][NB_SUBFR], /* i/o: fractional pitch values */
- float voicing_fr[CPE_CHANNELS][NB_SUBFR] /* i/o: fractional pitch gains */
-);
-
-void tdm_configure_enc(
- const int16_t ivas_format, /* i : IVAS format */
- const int16_t ism_mode, /* i : ISM mode in combined format */
- CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- const float Etot_last[CPE_CHANNELS], /* i/o: Energy of last frame */
- const int16_t tdm_SM_or_LRTD_Pri, /* i : channel combination scheme flag in TD stereo OR LRTD primary channel */
- const int16_t tdm_ratio_idx, /* i : ratio index */
- const int16_t tdm_ratio_idx_SM, /* i : ratio index in SM mode */
- const int16_t attack_flag, /* i : Primary channel attack flag */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-
-void tdm_bit_alloc(
- const int16_t ivas_format, /* i : IVAS format */
- const int16_t ism_mode, /* i : ISM mode in combined format */
- const int32_t element_brate_wo_meta, /* i : element bitrate without metadata */
- const int16_t tdm_lp_reuse_flag, /* i : LPC reusage flag */
- int32_t *total_brate_pri, /* o : Allocated primary channel bitrate */
- int32_t *total_brate_sec, /* o : Allocated secondary channel bitrate */
- int16_t *tdm_low_rate_mode, /* o : secondary channel low rate mode flag */
- const int16_t coder_type, /* i : secondary channel coder type */
- const int16_t ener_ratio_idx, /* i : correlation ratio indexe */
- const int16_t tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
- const int16_t bwidth_pri, /* i : bandwidth of the primary channel */
- const int16_t bwidth_sec, /* i : bandwidth of the secondary channel */
- const int16_t flag_ACELP16k_pri, /* i : ACELP@16kHz core flag, primary chan. */
- const int16_t tdm_LRTD_flag, /* i : LRTD stereo mode flag */
- const int16_t coder_type0, /* i : coder type (temporary in the encoder, from bitstream in decoder) */
- const int16_t tdm_inst_ratio_idx /* i : instantaneous correlation ratio index */
-);
-
-
-/*! r: value of the indice */
-uint16_t get_indice_st(
- Decoder_State *st, /* i/o: decoder state structure */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t pos, /* i : absolute position in the bitstream */
- const int16_t nb_bits /* i : number of bits to quantize the indice */
-);
-
-void tdm_low_rate_dec(
- Decoder_State *st, /* i/o: decoder static memory */
- float dct_epit[], /* o : GSC excitation in DCT domain */
- float *tmp_noise, /* o : long term temporary noise energy */
- float *pitch_buf, /* o : floating pitch values for each subframe */
- float *voice_factors, /* o : voicing factors */
- float *exc, /* i/o: adapt. excitation exc */
- float *exc2, /* i/o: adapt. excitation/total exc */
- float *bwe_exc, /* o : excitation for SWB TBE */
- const float *lsf_new /* i : ISFs at the end of the frame */
-);
-
-void tdm_SCh_LSF_intra_pred(
- const int32_t element_brate, /* i : element bitrate */
- const float *tdm_lsfQ_PCh, /* i : primary channel LSFs */
- float *pred_lsf_SCh /* o : predicted secondary channel LSFs */
-);
-
-
-void first_VQstages(
- const float *const *cb,
- const float u[], /* i : vector to be encoded (prediction and mean removed) */
- const int16_t *levels, /* i : number of levels in each stage */
- const int16_t stagesVQ, /* i : number of stages */
- const float w[], /* i : weights */
- const int16_t N, /* i : vector dimension */
- const int16_t max_inner, /* i : maximum number of swaps in inner loop */
- int16_t indices_VQstage[]
-);
-
-
-void deindex_lvq_SHB(
- UWord32 index,
- float *out,
- const int16_t nbits,
- const int16_t mode
-);
-
-/*----------------------------------------------------------------------------------*
- * MDCT Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_td_itd_mdct_stereo(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder handle */
- const int16_t vad_flag_dtx[], /* i : VAD dtx flags */
- const int16_t vad_hover_flag[], /* i : VAD hangover flags */
- const int16_t input_frame /* i : frame length */
-);
-
-void QuantizeTCXSpectrum(
- Encoder_State *st, /* i : state handle */
- const int16_t frame_cnt, /* i : frame counter in the super_frame */
- const float *x_orig, /* i : shaped MDCT spectrum */
- const float *gainlpc, /* i : FDNS gains */
- const Word16 *Aqind, /* i : frame-independent quantized coefficients (M+1) */
- const int16_t tnsSize, /* i : number of tns parameters put into prm */
- const int16_t nb_bits, /* i : bit budget */
- const int16_t vad_hover_flag, /* i : VAD hangover flag */
- int16_t *pL_frameTCX, /* o : full frame length */
- int16_t *pL_frame, /* o : frame length */
- int16_t *pL_spec, /* o : length of the coded spectrum */
- int16_t *ptcx_offset, /* o : folding point offset relative to the end of the previous frame */
- int16_t *pnoiseFillingBorder, /* o : noise filling border */
- float spectrum[], /* o : quantized MDCT spectrum */
- CONTEXT_HM_CONFIG *hm_cfg, /* o : Context-based harmonic model configuration */
- int16_t *hm_active, /* o : flag indicating if the harmonic model is active */
- float lf_deemph_fact[], /* o : low frequency deemphasis factors */
- int16_t *nf_seed, /* o : noise filling random seed */
- float *ener, /* o : energy of the quantized spectrum */
- float *gain_tcx, /* o : global gain */
- int16_t prm[] /* o : tcx parameters */
-);
-
-void EstimateStereoTCXNoiseLevel(
- Encoder_State **sts, /* i : state handle */
- float *q_spectrum[CPE_CHANNELS][NB_DIV], /* i : quantized MDCT spectrum */
- float gain_tcx[][NB_DIV], /* i : global gain */
- int16_t L_frame[][NB_DIV], /* i : frame length */
- int16_t noiseFillingBorder[][NB_DIV], /* i : noise filling border */
- int16_t hm_active[][NB_DIV], /* i : flag indicating if the harmonic model is active */
- const int16_t ignore_chan[], /* i : flag indicating whether the channel should be ignored */
- float fac_ns[][NB_DIV], /* o : noise filling level */
- int16_t param_core[][NB_DIV * NPRM_DIV], /* o : quantized noise filling level */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void TNSAnalysisStereo(
- Encoder_State **sts, /* i : state handle */
- float *mdst_spectrum[CPE_CHANNELS][NB_DIV], /* o : MDST spectrum */
- const int16_t bWhitenedDomain, /* i : whitened domain flag */
- int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* i : number of tns parameters put into prm */
- int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* i : number of tns bits in the frame */
- int16_t param_core[][NB_DIV * NPRM_DIV], /* o : quantized noise filling level */
- const int16_t mct_on /* i : flag mct block (1) or stereo (0) */
-);
-
-void InternalTCXDecoder(
- Encoder_State *st, /* i/o: state handle */
- const int16_t frame_cnt, /* i : frame counter in the super_frame */
- const int16_t L_frameTCX, /* i : full frame length */
- const int16_t L_frame, /* i : frame length */
- const int16_t L_spec, /* i : length of the coded spectrum */
- const int16_t tcx_offset, /* i : folding point offset relative to the end of the previous frame */
- const int16_t noiseFillingBorder, /* i : noise filling border */
- const float *x_quant, /* i : quantized spectrum */
- const float ener, /* i : energy of the quantized spectrum */
- float lf_deemph_fact[], /* i/o: low frequency deemphasis factors */
- const float fac_ns, /* i : noise filling level */
- const int16_t nf_seed, /* i : noise filling random seed */
- const float *A, /* i : LPC representation of the FDNS gains */
- float *gainlpc, /* i/o: FDNS gains */
- const int16_t hm_active, /* i : flag indicating if the harmonic model is active */
- float gain_tcx, /* i/o: global gain / quantized global gain */
- float spectrum[], /* o : dequantized spectrum */
- float synth[], /* o : time domain signal */
- int16_t *gain_tcx_q /* o : quantized global gain (at low bitrates) */
-);
-
-void stereo_mdct_core_enc_fx(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q0*/
- Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/
- Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/
-);
-
-void initMdctStereoEncData(
- STEREO_MDCT_ENC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const int16_t element_mode, /* i : element mode */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t bwidth, /* i : bandwidth */
- const int16_t igf, /* i : flag indicating IGF activity */
- const H_IGF_GRID hIgfGrid, /* i : IGF grid setup */
- const int16_t mem_init /* i : initialize memory after malloc */
-);
-
-ivas_error initMdctItdHandling(
- STEREO_MDCT_ENC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void stereo_mdct_enc_destroy(
- STEREO_MDCT_ENC_DATA_HANDLE *hStereoMdct /* i/o: encoder MDCT stereo handle */
-);
-
-void initMdctStereoDecData(
- STEREO_MDCT_DEC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */
- const int16_t igf, /* i : flag indicating IGF activity */
- const H_IGF_GRID igfGrid, /* i : IGF grid configuration */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t bwidth /* i : audio bandwidth */
-);
-
-void stereo_mdct_init_bands(
- const int16_t L_frame, /* i : frame length */
- const int16_t tmp_tcx_mode, /* i : tcx mode (TCX10, TCX 20), -1 if transition frame */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t igf, /* i : flag indicating if IGF is used */
- const H_IGF_GRID hIgfGrid, /* i : IGF grid setup */
- int16_t *sfbOffset, /* o : sfb offset table */
- int16_t *sfbCnt /* o : number of sfbs */
-);
-
-void stereo_mdct_init_igf_start_band(
- STEREO_MDCT_BAND_PARAMETERS *stbParams, /* i/o: stereo frequency band parameters */
- const float transFac, /* i : transform factor */
- const int16_t bwidth, /* i : audio bandwidth */
- const int32_t element_brate /* i : element bitrate */
-);
-
-void init_tcx_enc_info(
- Encoder_State *st, /* i : coder memory state */
- int16_t *L_frame,
- int16_t *L_frameTCX,
- int16_t *L_spec
-);
-
-void decoder_tcx_invQ(
- Decoder_State *st, /* i/o: coder memory state */
- int16_t prm[], /* i : parameters */
- float A[], /* i : coefficients NxAz[M+1] */
- Word16 Aind[], /* i : frame-independent coefficients Az[M+1] */
- const int16_t L_spec,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- float x[],
- float gainlpc2[],
- float xn_buf[],
- int16_t *fUseTns, /* o : flag that is set if TNS data is present */
- STnsData *tnsData,
- float *gain_tcx,
- const int16_t **prm_sqQ,
- int16_t *nf_seed,
- const int16_t bfi, /* i : Bad frame indicator */
- const int16_t frame_cnt /* i : frame counter in the super frame */
-);
-
-void decoder_tcx_noisefilling(
- Decoder_State *st, /* i/o: coder memory state */
- float concealment_noise[L_FRAME48k],
- const float A[], /* i : coefficients NxAz[M+1] */
- const int16_t L_frameTCX_glob,
- const int16_t L_spec,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- float x[],
- float gainlpc2[],
- int16_t *temp_concealment_method,
- const float gain_tcx,
- const int16_t *prm_sqQ,
- int16_t nf_seed,
- const int16_t bfi, /* i : Bad frame indicator */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int16_t frame_cnt /* i : frame counter in the super frame */
-);
-
-void decoder_tcx_noiseshaping_igf(
- Decoder_State *st, /* i/o: coder memory state */
- const int16_t L_spec,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- const int16_t left_rect,
- float x[],
- const float gainlpc2[],
- int16_t *temp_concealment_method,
- const int16_t bfi /* i : Bad frame indicator */
-);
-
-void decoder_tcx_tns(
- Decoder_State *st, /* i/o: coder memory state */
- const int16_t L_frame_glob,
- const int16_t L_spec,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- float x[N_MAX],
- const int16_t fUseTns, /* i : flag that is set if TNS data is present */
- STnsData *tnsData,
- const int16_t bfi, /* i : Bad frame indicator */
- const int16_t frame_cnt, /* i : frame counter in the super frame */
- const int16_t whitenedDomain
-);
-
-void decoder_tcx_imdct(
- Decoder_State *st, /* i/o: coder memory state */
- const int16_t L_frame_glob, /* i : frame length */
- const int16_t L_frameTCX_glob,
- const int16_t L_spec,
- const int16_t tcx_offset,
- const int16_t tcx_offsetFB,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- const int16_t left_rect,
- float x[N_MAX],
- float xn_buf[],
- const uint16_t kernelType, /* i : TCX transform kernel type */
- const int16_t fUseTns, /* i : flag that is set if TNS data is present */
- float synth[], /* i/o: synth[-M..L_frame] */
- float synthFB[],
- const int16_t bfi, /* i : Bad frame indicator */
- const int16_t frame_cnt, /* i : frame counter in the super frame */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void init_tcx_info(
- Decoder_State *st, /* i/o: coder memory state */
- const int16_t L_frame_glob, /* i : global frame length */
- const int16_t L_frameTCX_glob, /* i : FB global frame length */
- const int16_t frame_cnt, /* i : frame counter in the super_frame */
- const int16_t bfi, /* i : bad frame indicator */
- int16_t *tcx_offset, /* o : folding point offset relative to the end of the previous frame */
- int16_t *tcx_offsetFB, /* o : FB folding point offset relative to the end of the previous frame*/
- int16_t *L_frame, /* o : frame length */
- int16_t *L_frameTCX, /* o : TCX frame length */
- int16_t *left_rect, /* o : left part is rectangular */
- int16_t *L_spec /* o : spectrum length */
-);
-
-void decoder_tcx_IGF_mono(
- Decoder_State *st, /* i/o: coder memory state */
- float x[], /* o : de-quatized coefficients */
- const int16_t L_frame, /* i : frame length */
- const int16_t left_rect, /* i : left part is rectangular */
- const int16_t bfi, /* i : bad frame indicator */
- const int16_t frame_cnt /* i : frame counter in the super_frame */
-);
-
-void decoder_tcx_IGF_stereo(
- Decoder_State **sts, /* i/o: coder memory states */
- STEREO_MDCT_DEC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- float *x[CPE_CHANNELS][NB_DIV], /* o : de-quatized coefficients */
- const int16_t L_frame, /* i : frame length */
- const int16_t left_rect, /* i : left part is rectangular */
- const int16_t k, /* i : Subframe index */
- const int16_t bfi, /* i : bad frame indicator */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void ms_processing(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */
- Encoder_State **sts, /* i/o: Encoder state structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- const int16_t iSubframe, /* i : subframe number */
- float x_0[], /* i/o: spectrum 1 */
- float x_1[], /* i/o: spectrum 2 */
- int16_t maxSfb /* i : number of stereo frequency bands */
-);
-
-void ms_inv_mask_processing(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */
- Encoder_State **sts, /* i/o: Encoder state structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- const int16_t iSubframe, /* i : subframe number */
- const float x_0[], /* i : spectrum 1 */
- const float x_1[], /* i : spectrum 2 */
- float x_inv_0[], /* o : inverse spectrum 1 */
- float x_inv_1[], /* o : inverse spectrum 2 */
- int16_t maxSfb /* i : number of stereo frequency bands */
-);
-
-void IGFDecApplyStereo_flt(
- const IGF_DEC_INSTANCE_HANDLE hIGFDecL, /* i : instance handle of IGF Decoder */
- const IGF_DEC_INSTANCE_HANDLE hIGFDecR, /* i : instance handle of IGF Decoder */
- float *spectrumL, /* i/o: L MDCT spectrum */
- float *spectrumR, /* i/o: R MDCT spectrum */
- const int16_t igfGridIdx, /* i : in case of CELP->TCX switching, use 1.25 framelength */
- const int16_t *coreMsMask,
- const int16_t restrict_hopsize,
- const int16_t bfi, /* i : frame loss == 1, frame good == 0 */
- const int16_t bfi_apply_damping /* i : decoder element mode */
-);
-
-void IGFEncStereoEncoder(
- STEREO_MDCT_BAND_PARAMETERS *sfbParam, /* i/o: sfb parameters for the right channel */
- const IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i : IGF handle */
- const float *mdctSpectrumL, /* i : left spectrum */
- const float *mdctSpectrumR, /* i : right spectrum */
- int16_t *msMask, /* i/o: MS mask */
- int16_t *igfStereoMode, /* o : IGF stereo mode */
- const int16_t mdct_stereo_mode, /* i : MDCT stereo mode */
- const int16_t isTCX20, /* i : flag for indicating TCX20 */
- const int16_t isTransition /* i : flag for transtition */
-);
-
-void IGFDecReplicateTCX10State_flt(
- IGF_DEC_INSTANCE_HANDLE hIGFDec /* i/o: instance handle of IGF Decoder */
-);
-
-
-void InitPsychLPC(
- const int32_t sr_core, /* i : sampling rate of core-coder */
- const int16_t L_frame, /* i : frame length */
- const TCX_CONFIG_HANDLE hTcxCfg /* i : TCX configuration handle */
-);
-
-
-void stereo_coder_tcx(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */
- Encoder_State **sts, /* i/o: encoder state structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- float *mdst_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: MDST spectrum */
- float *inv_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: inverse spectrum */
- float *inv_mdst_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */
- const int16_t mct_on /* i : flag mct block (1) or stereo (0) */
-);
-
-void stereo_decoder_tcx(
- STEREO_MDCT_DEC_DATA *hStereoMdct, /* i/o: MDCT stereo decoder structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- float *spec_r_0[NB_DIV], /* i/o: spectrum right channel */
- float *spec_l[], /* i/o: spectrum left channel [NB_DIV][N] */
- float *spec_r[], /* i/o: spectrum right channel [NB_DIV][N] */
- const int16_t mdct_stereo_mode[], /* i : stereo mode (FB/band wise MS, dual mono */
- const int16_t core_l, /* i : core for left channel (TCX20/TCX10) */
- const int16_t core_r, /* i : core for right channel (TCX20/TCX10) */
- const int16_t igf, /* i : flag for IGF activity */
- const int16_t L_frameTCX_l, /* i : TCX frame length of left channel */
- const int16_t L_frameTCX_r, /* i : TCX frame length of right channel */
- const int16_t mct_on, /* i : flag mct block (1) or stereo (0) */
- const int16_t last_core_l, /* i : last core for left channel */
- const int16_t last_core_r, /* i : last core for right channel */
- const int16_t tmp_plc_upmix /* i : indicates temp upmix for PLC decision */
-);
-
-void stereo_mdct_core_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *signal_out[CPE_CHANNELS], /* o : synthesis @internal_FS */
- float signal_outFB[CPE_CHANNELS][L_FRAME48k] /* o : synthesis @output_FS */
-);
-
-void splitAvailableBits(
- const int16_t total_bits, /* i : total available bits for TCX coding */
- const int16_t split_ratio, /* i : split ratio */
- const int16_t isSBAStereoMode, /* i : signal core coding for SBA */
- int16_t *bits_ch0, /* o : bits for channel 0 */
- int16_t *bits_ch1 /* o : bits for channel 1 */
-);
-
-Word16 write_stereo_to_bitstream_fx
-(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: Stereo MDCT encoder structure */
- Encoder_State **sts, /* i/o: Encoder state structure */
- Word16 ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask Q0*/
- const Word16 mct_on, /* i : flag mct block (1) or stereo (0) Q0*/
- BSTR_ENC_HANDLE hBstr /* i/o: bitstream handle */
-);
-
-
-
-void ComputeSpectrumNoiseMeasure(
- const float *powerSpec,
- const int16_t L_frame,
- const int16_t startLine,
- const int16_t resetMemory,
- int8_t *noiseFlags,
- const int16_t lowpassLine
-);
-
-void IGFSaveSpectrumForITF(
- IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i/o: instance handle of IGF Encoder */
- const int16_t igfGridIdx, /* i : IGF grid index */
- const float *pITFSpectrum /* i : MDCT spectrum */
-);
-
-void convert_coeffs_to_higher_res(
- const float *in1, /* i : first subframe input */
- const float *in2, /* i : second subframe input */
- float *out, /* o : converted output */
- const int16_t len /* i : length of subframes */
-);
-
-int16_t quantize_sns(
- float sns_in[CPE_CHANNELS][NB_DIV][M],
- float snsQ_out[CPE_CHANNELS][NB_DIV][M],
- Encoder_State **sts,
- int16_t *indices,
- int16_t *zero_side_flag,
- int16_t *sns_stereo_mode
-);
-
-void dequantize_sns(
- int16_t indices[CPE_CHANNELS][NPRM_LPC_NEW],
- float snsQ_out[CPE_CHANNELS][NB_DIV][M],
- Decoder_State **sts
-);
-
-void sns_avq_dec(
- int16_t *index, /* i : Quantization indices */
- float SNS_Q[NB_DIV][M], /* o : Quantized SNS vectors */
- const int16_t L_frame, /* i : frame length */
- const int16_t numlpc /* i : Number of sets of lpc */
-);
-
-void sns_avq_dec_stereo(
- int16_t *indexl, /* i : Quantization indices (left channel) */
- int16_t *indexr, /* i : Quantization indices (right channe) */
- const int16_t L_frame, /* i : frame length */
- float *SNS_Ql, /* o : Quantized SNS vectors (left channel) */
- float *SNS_Qr /* o : Quantized SNS vectors (right channe) */
-);
-
-void convertToMS(
- const int16_t L_frame, /* i : frame length */
- float x0[], /* i/o: mid/left channel coefficients */
- float x1[], /* i/o: side/right channel coefficients */
- const float norm_fac /* i : normalization factor */
-);
-
-void inverseMS(
- const int16_t L_frame, /* i : frame length */
- float x0[], /* i/o: mid/left channel coefficients */
- float x1[], /* i/o: side/right channel coefficients */
- const float norm_fac /* i : normalization factor */
-);
-
-void stereoFdCngCoherence(
- Encoder_State **sts, /* i/o: core encoder structures */
- const int16_t last_element_mode, /* i : last element mode */
- float fft_buff[CPE_CHANNELS][2 * L_FFT] /* i : fft buffers for L and R channels */
-);
-
-void FdCngEncodeMDCTStereoSID(
- CPE_ENC_HANDLE hCPE /* i/o: CPE encoder state structure */
-);
-
-void FdCngDecodeMDCTStereoSID(
- CPE_DEC_HANDLE hCPE /* i/o: CPE decoder state structure */
-);
-
-ivas_error initMdctStereoDtxData(
- CPE_DEC_HANDLE hCPE /* i/o: CPE decoder handle */
-);
-
-void synchonize_channels_mdct_sid(
- Decoder_State *sts[CPE_CHANNELS], /* i/o: decoder state structure */
- const int16_t n /* i : channel number */
-);
-
-void updateBuffersForDmxMdctStereo(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */
- const int16_t output_frame, /* i : output frame length */
- float *output[CPE_CHANNELS], /* i/o: decoder output */
- float synth[CPE_CHANNELS][L_FRAME48k] /* i/o: decoder synthesis */
-);
-
-void applyDmxMdctStereo(
- const CPE_DEC_HANDLE hCPE, /* i : CPE handle */
- float *output[CPE_CHANNELS], /* o : output from core decoder */
- const int16_t output_frame /* i : output frame length */
-);
-
-/*----------------------------------------------------------------------------------*
- * Front-VAD prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error front_vad_create(
- FRONT_VAD_ENC_HANDLE *hFrontVad, /* i/o: front-VAD handle */
- const ENCODER_CONFIG_HANDLE hEncoderConfig /* i : configuration structure */
-);
-
-void front_vad_destroy(
- FRONT_VAD_ENC_HANDLE *hFrontVad /* i/o: front-VAD handle */
-);
-
-ivas_error front_vad(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure, nullable */
- Encoder_State *st, /* i/o: encoder state structure */
- const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */
- FRONT_VAD_ENC_HANDLE *hFrontVads, /* i/o: front-VAD handles */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int16_t input_frame, /* i : frame length */
- int16_t vad_flag_dtx[], /* o : HE-SAD flag with additional DTX HO */
- float fr_bands[][2 * NB_BANDS], /* i : energy in frequency bands */
- float Etot_LR[], /* o : total energy Left & Right channel */
- float lf_E[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels */
- int16_t localVAD_HE_SAD[], /* o : HE-SAD flag without hangover, LR channels */
- int16_t vad_hover_flag[], /* o : VAD hangover flag */
- float band_energies_LR[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN */
- float *PS_out, /* o : energy spectrum */
- float *Bin_E_out /* o : log-energy spectrum of the current frame*/
-);
-
-ivas_error front_vad_spar(
- SPAR_ENC_HANDLE hSpar, /* i/o: SPAR encoder structure */
- const float *omni_in, /* i : omnidirectional input signal */
- ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : encoder configuration handle */
- const int16_t input_frame /* i : input frame length */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Stereo CNG prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_enc_cng_init(
- STEREO_CNG_ENC_HANDLE hStereoCng /* i/o: stereo CNG encoder structure */
-);
-
-void stereo_cng_upd_counters(
- STEREO_CNG_ENC_HANDLE hStereoCng, /* i/o: Stereo CNG data structure */
- const int32_t element_mode, /* i : element mode */
- const int16_t nbands, /* i : Number of bands in active */
- const float sidSideGain[], /* i : SID side gains */
- const int16_t burst_ho_count, /* i : Hang-over count */
- int16_t *coh_fade_counter /* i : Coherence fade counter */
-);
-
-void stereo_cng_init_dec(
- STEREO_CNG_DEC_HANDLE hStereoCng, /* i/o: stereo CNG decoder structure */
- const int16_t *frameSize /* i : pointer to frameSize of channel 0 to be used for channel 1 */
-);
-
-void stereo_cng_compute_PScorr(
- float *output[CPE_CHANNELS], /* i : Output signal */
- float *c_PS_LT, /* i/o: Correlation */
- const int16_t L_frame_0, /* i : L_frame channel 0 */
- const int16_t L_frame_1 /* i : L_frame channel 1 */
-);
-
-void stereo_cng_dec_update(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const int32_t ivas_total_brate /* i : IVAS total bitrate Q0*/
-);
-
-void stereo_cna_update_params(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i : Output signal */
- const int16_t output_frame, /* i : Output frame length */
- const int16_t tdm_ratio_idx /* i : TDM ratio index */
-);
-
-void dtx_enc_init(
- Encoder_State *st, /* i : Encoder state handle */
- const int16_t var_SID_rate_flag, /* i : flag for variable SID update rate */
- const int16_t interval_SID /* i : interval for SID update */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Framework general prototypes
- *----------------------------------------------------------------------------------*/
-
-void mvc2c(
- const uint8_t x[], /* i : input vector */
- uint8_t y[], /* o : output vector */
- const int16_t n /* i : vector size */
-);
-
-/*! r: Adjusted value */
-ivas_error stereo_memory_dec(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- CPE_DEC_HANDLE hCPE, /* i : CPE decoder structure */
- const int16_t nb_bits_metadata, /* i : number of metadata bits */
- const int32_t output_Fs, /* i : output sampling rate */
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const MC_MODE mc_mode, /* i : MC mode */
- const int16_t nchan_transport /* i : number of transport channels */
-);
-
-void stereo_switching_dec(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const Word32 ivas_total_brate /* i : IVAS total bitrate Q0*/
-);
-
-void stereo_td2dft_update(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const int16_t n, /* i : channel number */
- float output[], /* i/o: synthesis @internal Fs */
- float synth[], /* i/o: synthesis @output Fs */
- float hb_synth[], /* i/o: hb synthesis */
- const int16_t output_frame /* i : frame length */
-);
-
-void stereo_mdct2dft_update(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float output0[], /* i/o: synthesis @internal Fs, ch0 */
- float synth0[] /* i/o: synthesis @output Fs, ch0 */
-);
-
-
-/*! r: number of bits written */
-
-
-
-/*----------------------------------------------------------------------------------*
- * MCT prototypes
- *----------------------------------------------------------------------------------*/
-void ivas_mdct_core_whitening_enc_fx(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples */
- Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP */
- Word16 pitch_buf[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe */
- Word32 *mdst_spectrum_long[CPE_CHANNELS], /* o : buffer for MDST spectrum */
- int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* o : buffer TNS bits */
- Word32 *orig_spectrum_long[CPE_CHANNELS], /* o : origingal spectrum w/o whitening */
- int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* o : size of TNS */
- int16_t p_param[CPE_CHANNELS][NB_DIV], /* o : pointer to parameter array */
- BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
- const int16_t mct_on, /* i : flag mct block (1) or stereo (0) */
- const int16_t nChannels, /* i : total number of coded channels */
-Word16 mdst_spectrum_e[CPE_CHANNELS][NB_DIV],
-Word16 orig_spectrum_e[CPE_CHANNELS][NB_DIV]
-);
-void ivas_mct_core_enc(
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- CPE_ENC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE encoder structures */
- const int16_t nChannels, /* i : number of channels to be coded */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t switch_bw, /* i : flag bandwidth switch occurance */
- const int16_t lfe_bits, /* i : bits spent for LFE */
- const int16_t sba_order /* i : Ambisonic (SBA) order */
-);
-
-void ivas_mdct_quant_coder(
- CPE_ENC_HANDLE hCPE, /* i/o: Encoder CPE handle */
- int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* i : bits needed for TNS parameters */
- int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* i : size of TNS */
- int16_t p_param[CPE_CHANNELS][NB_DIV], /* i : pointer to parameter array */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void apply_MCT_enc(
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- Encoder_State **sts, /* i/o: encoder state structure */
- float *mdst_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: MDST spectrum */
- float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: inverse spectrum */
- float *inv_mdst_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */
- const int16_t nchan /* i : number of channels */
-);
-
-void write_mct_bitstream(
- Encoder_State **sts, /* i/o: encoder state structure */
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- const int16_t nchan /* i : number of channels */
-);
-
-void splitAvailableBitsMCT_fx(
- void **sts, /* i/o: encoder/decoder state structure */
- const Word16 total_bits, /* i : total number of available bits */
- const Word16 split_ratio[MCT_MAX_CHANNELS], /* i : ratio for splitting the bits Q0 */
- const Word16 enc_dec, /* i : encoder or decoder flag */
- const Word16 nchan /* i : number of channels */
-);
-
-void getChannelEnergies(
- Encoder_State **sts, /* i : Encoder state structure */
- float nrg[MCT_MAX_CHANNELS], /* o : energies */
- const int16_t nchan /* i : number of channels */
-);
-
-void mctStereoIGF_enc(
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- Encoder_State **sts, /* i/o: encoder state structure */
- float *orig_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : MDCT spectrum for ITF */
- float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */
- float *powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : same as above but for inverse spect. */
- float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */
- const int16_t sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */
-);
-
-void ivas_mdct_dec_side_bits_frame_channel(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- int16_t param_lpc[CPE_CHANNELS][NPRM_LPC_NEW], /* o : lpc_parameters */
- int16_t p_param[CPE_CHANNELS][NB_DIV], /* o : pointer to param buffer */
- Decoder_State *st0, /* i : pointer to bitstream handle */
- int16_t nTnsBitsTCX10[CPE_CHANNELS][NB_DIV], /* o : number of bits for TNS */
- int16_t param[CPE_CHANNELS][DEC_NPRM_DIV * NB_DIV], /* i/o: parameters buffer */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int16_t odd_channel_cpe /* i : flag cpe with odd nb of tc channels */
-);
-
-void ivas_mct_side_bits(
- MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */
- CPE_DEC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE decoder structure */
- const int16_t nCPE, /* i : number of CPEs */
- Decoder_State *st0, /* i : decoder handle for Bstr */
- const int16_t bfi, /* i : BFI flag */
- uint16_t *bitstream, /* o : bitstream indices */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-void ivas_mdct_core_invQ(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */
- int16_t nTnsBitsTCX10[CPE_CHANNELS][NB_DIV], /* i : number of TNS bits */
- int16_t p_param[CPE_CHANNELS][NB_DIV], /* i : pointer to param buffer */
- int16_t param_lpc[CPE_CHANNELS][NPRM_LPC_NEW], /* i : lpc parameters */
- int16_t param[CPE_CHANNELS][DEC_NPRM_DIV * NB_DIV], /* i : param buffer */
- int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : flag TNS enabled */
- STnsData tnsData[CPE_CHANNELS][NB_DIV], /* i : TNS parameter */
- float *x_0[CPE_CHANNELS][NB_DIV], /* i/o: signal buffer */
- float *x[CPE_CHANNELS][NB_DIV], /* i/o: signal buffer */
- float Aq[CPE_CHANNELS][( NB_SUBFR16k + 1 ) * ( M + 1 )], /* i : LP coefficients */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : M/S mask */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void ivas_mdct_core_reconstruct(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *x[][NB_DIV], /* i/o: pointers to synthesis @internal_FS */
- float signal_outFB[CPE_CHANNELS][L_FRAME_PLUS], /* o : synthesis @output_FS */
- int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : flage TNS enabled */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void ivas_mdct_core_tns_ns(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : two entries for each channel in TCX10 */
- STnsData tnsData[CPE_CHANNELS][NB_DIV], /* o : TNS parameter */
- float *x[CPE_CHANNELS][NB_DIV], /* o : synthesis @internal_FS */
- float Aq[CPE_CHANNELS][( NB_SUBFR16k + 1 ) * ( M + 1 )], /* o : LP coefficients */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-
-void ivas_mct_dec_mct(
- MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */
- Decoder_State **sts, /* i/o: decoder state structure */
- const int16_t nchan /* i : number of channels */
-);
-
-void apply_MCT_dec(
- MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */
- Decoder_State **sts, /* i/o: decoder state structure */
- float *x[MCT_MAX_CHANNELS][NB_DIV] /* i/o: decoded and dequan. spect. input to MCT */
-);
-
-void mctStereoIGF_dec(
- MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */
- Decoder_State **sts, /* i/o: decoder state structure */
- float *x[MCT_MAX_CHANNELS][NB_DIV], /* i/o: decoded and dequantized spectrum */
- const int16_t bfi /* i : bad frame flag */
-);
-
-void enc_prm_igf_mdct(
- Encoder_State *st, /* i : Encoder state handle */
- BSTR_ENC_HANDLE hBstr /* i/o: Bitstream handle */
-);
-
-void mdct_read_IGF_bits(
- Decoder_State *st, /* i/o: Encoder state handle */
- Decoder_State *st0 /* i : pointer to handle where bstr is read */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Q Metadata prototypes for DirAC and MASA
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_qmetadata_enc_encode(
- BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */
- IVAS_QMETADATA *hQMetaData, /* i/o: q_metadata handle */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
-ivas_error ivas_qmetadata_enc_encode_hr_384_512(
- BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */
- IVAS_QMETADATA *hQMetaData, /* i/o: metadata handle */
- const int16_t bits_sph_idx,
- const int16_t bits_sp_coh
-);
-
-void deindex_sph_idx(
- const uint16_t sphIndex, /* i : Spherical index */
- const SPHERICAL_GRID_DATA *gridData, /* i : Prepared spherical grid */
- float *theta, /* o : Elevation */
- float *phi /* o : Azimuth */
-);
-
-/*! r: output index for direction */
-uint16_t index_theta_phi_16(
- float * p_theta, /* i/o: input elevation to be indexed */
- float * p_phi, /* i/o: input azimuth to be indexed */
- const SPHERICAL_GRID_DATA *gridData /* i : generated grid data */
-);
-
-void reset_metadata_spatial(
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */
- const int32_t element_brate, /* i : element bitrate */
- int32_t *total_brate, /* o : total bitrate */
- const int32_t core_brate, /* i : core bitrate */
- const int16_t nb_bits_metadata /* i : number of meatdata bits */
-);
-
-/*! r: number of bits written */
-
-/*! r: number of bits read */
-int16_t ivas_qmetadata_dec_decode(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- uint16_t *bitstream, /* i : bitstream */
- int16_t *index, /* i/o: bitstream position */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
-/*! r: number of bits read */
-int16_t ivas_qmetadata_dec_decode_hr_384_512(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: hQMetaData handle */
- uint16_t *bitstream, /* i : bitstream */
- int16_t *index, /* i/o: bitstream position */
- const SPHERICAL_GRID_DATA *sph_grid16, /* i : spherical grid for deindexing */
- const int16_t bits_sph_idx,
- const int16_t bits_sp_coh,
- const uint8_t ncoding_bands_config
-);
-
-/*! r: number of bits read */
-int16_t ivas_qmetadata_dec_sid_decode(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- uint16_t *bitstream, /* i : bitstream */
- int16_t *index, /* i/o: bitstream position */
- const int16_t nchan_transport, /* i : number of transport channels */
- int16_t *element_mode, /* o : element mode */
- const int16_t ivas_format /* i : IVAS format */
-);
-
-
-
-
-void restore_metadata_buffer(
- BSTR_ENC_HANDLE hMetaData,
- const int16_t next_ind_start,
- const int16_t bit_pos_start
-);
-
-/*! r: codeword index */
-int16_t masa_sq(
- const float in, /* i : input value */
- const float *threshold, /* i : partition */
- const int16_t cb_sz /* i : codebook size */
-);
-
-void ivas_qmetadata_azimuth_elevation_to_direction_vector(
- const float az, /* i : azimuth */
- const float el, /* i : elevation */
- float *dv /* o : direction vector */
-);
-
-ivas_error only_reduce_bits_direction(
- int16_t *reduce_bits_out,
- IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */
- int16_t reduce_bits,
- const int16_t coding_subbands,
- const int16_t no_subframes,
- int16_t *ind_order
-);
-
-void quantize_direction_frame(
- IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */
- float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
- float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
- const int16_t hrmasa_flag /* i : flag indicating high-rate MASA MD coding*/
-);
-
-/*! r: quantized spherical index */
-uint16_t quantize_direction(
- const float theta, /* i : input elevation value */
- float phi, /* i : input azimuth value */
- const int16_t no_bits, /* i : number of bits */
- float *theta_q, /* o : quantized elevation */
- float *phi_q, /* o : quantized azimuth */
- uint16_t *index_theta, /* o : quantized elevation index */
- uint16_t *index_phi, /* o : quantized azimuth index */
- const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */
-);
-
-int16_t quantize_direction2D(
- float phi, /* i : input azimuth value */
- const int16_t no_cw, /* i : number of bits */
- float *phi_q, /* o : quantized azimuth value */
- uint16_t *index_phi, /* o : quantized azimuth index */
- const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */
-);
-
-void quantize_direction_frame2D(
- IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */
- float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input azimuth values */
- float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES] /* i : input elevation values */
-);
-
-void small_requantize_direction_frame(
- IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */
- float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input azimuth values */
- float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input elevation values */
- const int16_t raw_flag[MASA_MAXIMUM_CODING_SUBBANDS], /* i : raw/EC encoding mode for each subband */
- int16_t bits_dir_bands[MASA_MAXIMUM_CODING_SUBBANDS], /* i/o: number of bits per subband */
- int16_t *diff /* i/o: number of bits to be reduced */
-);
-
-/*! r: index azimuth */
-int16_t quantize_phi(
- float phi, /* i : azimuth value */
- const int16_t flag_delta, /* i : flag indicating if the azimuth codebook is translated or not */
- float *phi_hat, /* o : quantized azimuth */
- const int16_t n /* i : azimuth codebook size */
-);
-
-/*! r: decoded elevation value */
-float deindex_elevation(
- uint16_t *id_th, /* i : input index */
- const int16_t no_bits, /* i : number of bits for the spherical grid */
- const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */
-);
-
-float deindex_azimuth(
- int16_t id_phi, /* i : index */
- const int16_t no_bits, /* i : number of bits for the spherical grid */
- const int16_t id_th, /* i : elevation index */
- const int16_t remap, /* i : remapping flag */
- const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */
-);
-
-UWord16 ivas_qmetadata_reorder_generic_fx(
- const Word16 signed_value
-);
-
-void ivas_sba_config(
- const int32_t sba_total_brate, /* i : SBA total bitrate */
- int16_t sba_order, /* i : Ambisonic (SBA) order */
- int16_t nb_channels, /* i : Number of Ambisonic (SBA) channels */
- int16_t *nchan_transport, /* o : number of transport channels */
- const int16_t sba_planar, /* i : SBA planar flag */
- int16_t *nSCE, /* o : number of SCEs */
- int16_t *nCPE, /* o : number of CPEs */
- int16_t *element_mode /* o : element mode of the core coder */
-);
-
-void ivas_sba_set_cna_cng_flag(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_sba_dec_reconfigure(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- uint16_t *nSamplesFlushed, /* o : number of samples flushed */
- int16_t *data /* o : output synthesis signal */
-);
-
-ivas_error ivas_sba_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int16_t nCldfbSlots, /* i : number of CLDFB slots */
- const int16_t nSamplesForRendering, /* i : number of samples provided */
- float *data[] /* i : transport channel samples */
-);
-
-
-
-/*! r: Ambisonic (SBA) order */
-int16_t ivas_sba_get_order(
- const int16_t nb_channels, /* i : Number of ambisonic channels */
- const int16_t sba_planar /* i : SBA planar flag */
-);
-
-/*! r: number of Ambisonic channels */
-int16_t ivas_sba_get_nchan(
- const int16_t sba_order, /* i : Ambisonic (SBA) order */
- const int16_t sba_planar /* i : SBA planar flag */
-);
-
-/*! r: number of ambisonics metadata channels */
-
-void ivas_sba_getTCs(
- float *sba_data[], /* i : SBA signals */
- Encoder_Struct *st_ivas, /* i/o: Encoder struct */
- const int16_t input_frame /* i : frame length */
-);
-
-int16_t ivas_sba_remapTCs(
- float *sba_data[], /* i/o: SBA signals */
- Decoder_Struct *st_ivas, /* i/o: decoder struct */
- const int16_t output_frame /* i : frame length */
-);
-
-void ivas_sba_dirac_stereo_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output[CPE_CHANNELS], /* o : output synthesis signal */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t mcmasa /* i : McMASA flag */
-);
-
-void ivas_sba_dirac_stereo_config(
- STEREO_DFT_CONFIG_DATA_HANDLE hConfig /* o : DFT stereo configuration */
-);
-
-
-Word16 ivas_get_sba_dirac_stereo_flag(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_sba_dirac_stereo_smooth_parameters(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD handle for upmixing */
- const int16_t cross_fade_start_offset, /* i : SPAR mixer delay compensation */
- const int32_t output_Fs, /* i : Fs for delay calculation */
- const int16_t num_md_sub_frames /* i : number of subframes in mixing matrix */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * DirAC prototypes
- *----------------------------------------------------------------------------------*/
-
-
-ivas_error ivas_dirac_enc_reconfigure(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-
-
-ivas_error ivas_dirac_config(
- void *st_ivas, /* i/o: IVAS encoder/decoder state structure */
- const int16_t enc_dec /* i : encoder or decoder flag */
-);
-
-void ivas_dirac_config_bands(
- int16_t *band_grouping, /* o : band grouping */
- const int16_t nbands, /* i : number of bands */
- const int16_t max_band, /* i : maximal band index +1 */
- int16_t *dirac_to_spar_md_bands, /* o : mapping of DirAC parameter band index to SPAR FB band index */
- const int8_t useLowerBandRes, /* i : flag indicating lower band resolution for DirAC */
- const int16_t enc_param_start_band, /* i : band index of first DirAC parameter band */
- IVAS_FB_MIXER_HANDLE hFbMdft
-);
-
-void ivas_get_dirac_sba_max_md_bits(
- const int32_t sba_total_brate,
- int16_t *bits_frame_nominal,
- int16_t *metadata_max_bits,
- int16_t *qmetadata_max_bit_req,
- const int16_t nbands
- ,
- IVAS_FORMAT ivas_format
-);
-
-ivas_error ivas_dirac_sba_config(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- int16_t *element_mode, /* o : element mode of the core coder */
- int32_t sba_total_brate, /* i : SBA total bitrate */
- const int16_t sba_order, /* i : Ambisonic (SBA) order */
- const int16_t nbands /* i : number of frequency bands */
- ,
- IVAS_FORMAT ivas_format
-);
-
-ivas_error ivas_dirac_dec_config(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const DIRAC_CONFIG_FLAG flag_configopen /* i/ : Flag determining if we open or reconfigure the DirAC decoder */
-);
-
-void ivas_dirac_dec_close(
- DIRAC_DEC_HANDLE *hDirAC_out
-);
-
-void ivas_dirac_dec_read_BS(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- Decoder_State *st, /* i/o: decoder Core state structure */
- DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial rendering data handle */
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q metadata */
- int16_t *nb_bits, /* o : number of bits read */
- const int16_t last_bit_pos, /* i : last read bitstream position */
- const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */
- int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */
-);
-
-void generate_masking_noise_lb_dirac(
- HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */
- float *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */
- const int16_t nCldfbTs, /* i : number of CLDFB slots that will be rendered */
- const int16_t cna_flag /* i : CNA flag for LB and HB */
-);
-
-
-void ivas_dirac_dec_render(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-void ivas_dirac_dec_render_sf(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */
- const int16_t nchan_transport, /* i : number of transport channels */
- float *pppQMfFrame_ts_re[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX],
- float *pppQMfFrame_ts_im[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX]
-);
-
-
-void computeDirectionVectors(
- float *intensity_real_x,
- float *intensity_real_y,
- float *intensity_real_z,
- const int16_t enc_param_start_band,
- const int16_t num_frequency_bands,
- float *direction_vector_x,
- float *direction_vector_y,
- float *direction_vector_z
-);
-
-void computeDiffuseness(
- float *buffer_intensity[DIRAC_NUM_DIMS][DIRAC_NO_COL_AVG_DIFF],
- const float *buffer_energy,
- const int16_t num_freq_bands,
- float *diffuseness
-);
-
-void ivas_dirac_dec_get_response(
- const int16_t azimuth,
- const int16_t elevation,
- float *response,
- const int16_t ambisonics_order
-);
-
-
-
-ivas_error ivas_mc_paramupmix_enc_open_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-void ivas_mc_paramupmix_enc_close_fx(
- MC_PARAMUPMIX_ENC_HANDLE *hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-ivas_error ivas_mc_paramupmix_dec_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_mc_paramupmix_dec_close(
- MC_PARAMUPMIX_DEC_HANDLE *hMCParamUpmix_out /* i/o: Parametric MC decoder handle */
-);
-
-void ivas_mc_paramupmix_dec_read_BS(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- Decoder_State *st, /* i/o: decoder state structure */
- MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */
- int16_t *nb_bits /* o : number of bits written */
-);
-
-void ivas_mc_paramupmix_dec_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */
- const int16_t nSamplesForRendering /* i : number of samples provided */
-);
-
-void ivas_param_mc_set_coded_bands_fx(
- HANDLE_IVAS_PARAM_MC_METADATA hMetadataPMC /* i/o: handle for the Parametric MC parameter coding state */
-);
-
-/*! r: number of IVAS transport channels */
-
-ivas_error ivas_param_mc_enc_open(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-ivas_error ivas_param_mc_enc_reconfig(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-void ivas_param_mc_enc_close(
- PARAM_MC_ENC_HANDLE *hParamMC, /* i/o: Parametric MC encoder handle */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void ivas_param_mc_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS Encoder handle */
- BSTR_ENC_HANDLE hMetaData, /* i/o: IVAS Metadata bitstream handle */
- float *data_f[], /* i/o: input/transport MC data */
- const int16_t input_frame /* i : input frame length */
-);
-
-ivas_error ivas_param_mc_dec_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_param_mc_dec_reconfig(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-
-void ivas_param_mc_dec_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */
- float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output*/
-);
-
-void ivas_param_mc_dec_render(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-void ivas_param_mc_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */
-);
-
-/*! r: number of cldfb synthesis instances */
-int16_t param_mc_get_num_cldfb_syntheses(
- Decoder_Struct *st_ivas /* i : IVAS decoder structure */
-);
-
-UWord16 ivas_param_mc_get_configuration_index_fx(
- const MC_LS_SETUP mc_ls_setup, /* i : MC ls setup */
- const Word32 ivas_total_brate /* i : IVAS total bitrate */
-);
-
-ivas_error ivas_dirac_dec_output_synthesis_cov_open(
- DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i/o: handle for the covariance synthesis parameters */
- DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state, /* i/o: handle for the covariance synthesis state */
- const int16_t max_band_decorr, /* i : uppermost frequency band where decorrelation is applied */
- const int16_t interp_length, /* i : length for interpolating the mixing matrices in time slots */
- const int16_t num_param_bands, /* i : number of parameter bands */
- const int16_t num_param_bands_residual, /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */
- const int16_t nchan_in, /* i : number of input (transport) channels */
- const int16_t nchan_out, /* i : number of output channels */
- const float *proto_matrix /* i : the prototype (upmix) matrix (only used if mode == 1) */
-);
-
-void ivas_dirac_dec_output_synthesis_get_interpolator(
- DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i/o: handle for the covariance synthesis parameters */
- const uint16_t interp_length /* i : interpolator length */
-);
-
-void ivas_dirac_dec_output_synthesis_cov_init(
- DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state, /* i/o: pointer to the state of the covariance synthesis */
- const int16_t nchan_in, /* i : number of input (tranport) channels */
- const int16_t nchan_out, /* i : number of output channels */
- const int16_t n_param_bands, /* i : number of total parameter bands */
- const int16_t n_param_bands_res /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */
-);
-
-void ivas_dirac_dec_output_synthesis_cov_close(
- DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i : handle for the covariance synthesis parameters */
- DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state /* i/o: handle for the covariance synthesis state */
-);
-
-
-void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot(
- float *Cldfb_RealBuffer_in, /* i : input channel filter bank samples (real part) */
- float *Cldfb_ImagBuffer_in, /* i : input channel filter bank samples (imaginary part) */
- float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : output channel filter bank samples (real part) */
- float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : output channel filter bank samples (imaginary part) */
- float *mixing_matrix[], /* i : parameter band wise mixing matrices (direct part) */
- float *mixing_matrix_res[], /* i : parameter band wise mixing matrices (residual part) */
- const uint16_t slot_idx_sfr, /* i : time slot index for the current slot within the current subframe */
- const uint16_t slot_idx_tot, /* i : time slot index for the current slot within the frame */
- const int16_t nX, /* i : number of input channels */
- const int16_t nY, /* i : number of output channels */
- PARAM_MC_DEC_HANDLE hParamMC /* i : handle to the Parametric MC decoder state */
-);
-
-
-void FdCngEncodeDiracMDCTStereoSID(
- CPE_ENC_HANDLE hCPE /* i/o: CPE encoder state structure */
-);
-
-void FdCngDecodeDiracMDCTStereoSID(
- CPE_DEC_HANDLE hCPE /* i/o: CPE decoder state structure */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * SPAR prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_spar_enc_open(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder handle */
- const int16_t spar_reconfig_flag /* i : SPAR reconfiguration flag */
-);
-
-ivas_error ivas_spar_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- float *data_f[], /* i/o: input/transport audio channels */
- const int16_t input_frame, /* i : input frame length */
- int16_t *nb_bits_metadata, /* i : number of MD bits written */
- BSTR_ENC_HANDLE hMetaData /* o : MetaData handle */
-);
-
-ivas_error ivas_spar_dec_open(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t spar_reconfig_flag /* i : SPAR reconfiguration flag */
-);
-
-
-ivas_error ivas_spar_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */
- int16_t *nb_bits_read /* o : number of MD bits read */
-);
-
-void ivas_spar_config(
- int32_t ivas_total_brate, /* i : codec total bitrate */
- const int16_t sba_order, /* i : Ambisonic (SBA) order */
- int16_t *nchan_transport, /* o : number of transport channels */
- int16_t *nSCE, /* o : number of SCEs */
- int16_t *nCPE, /* o : number of CPEs */
- int32_t *core_nominal_brate, /* o : core-coding nominal bitrate */
- const int16_t sid_format /* i : IVAS format indicator from SID frame */
-);
-
-ivas_error ivas_sba_linear_renderer(
- float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t nchan_in, /* i : number of input ambisonics channels */
- const int16_t nchan_ism, /* i : number of objects */
- const AUDIO_CONFIG output_config, /* i : output audio configuration */
- const IVAS_OUTPUT_SETUP output_setup /* i : output format setup */
-);
-
-void ivas_sba_mix_matrix_determiner(
- SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */
- float *output[], /* i/o: transport/output audio channels */
- const int16_t bfi, /* i : BFI flag */
- const int16_t nchan_remapped, /* i : num channels after remapping of TCs */
- const int16_t output_frame, /* i : output frame length */
- const int16_t num_md_sub_frames /* i : number of subframes in mixing matrix */
-);
-
-/* AGC */
-/*! r: AGC enable flag */
-
-ivas_error ivas_spar_agc_enc_open(
- ivas_agc_enc_state_t **hAgcEnc, /* i/o: AGC decoder handle */
- const int32_t input_Fs, /* i : input sampling rate */
- const int16_t nchan_inp /* i : number of input channels */
-);
-
-void ivas_spar_agc_enc_close(
- ivas_agc_enc_state_t **hAgcEnc /* i/o: AGC encoder handle */
-);
-
-void ivas_agc_enc_process(
- ivas_agc_enc_state_t *hAgcEnc, /* i/o: AGC encoder handle */
- BSTR_ENC_HANDLE hMetaData, /* i/o: MetaData handle */
- float **ppPcm_in, /* i : input audio channels */
- float **ppPcm_out, /* o : output audio channels */
- const int16_t n_channels, /* i : number of channels */
- const ENCODER_CONFIG_HANDLE hEncoderConfig /* i : configuration structure */
-);
-
-ivas_error ivas_spar_agc_dec_open(
- ivas_agc_dec_state_t **hAgcDec, /* i/o: AGC decoder handle */
- const int32_t output_Fs /* i : output sampling rate */
-);
-
-void ivas_spar_agc_dec_close(
- ivas_agc_dec_state_t **hAgcDec /* i/o: AGC decoder handle */
-);
-
-
-void ivas_agc_dec_process(
- ivas_agc_dec_state_t *hAgcDec, /* i/o: AGC decoder handle */
- float *pcm_in[], /* i : input audio channels */
- float *pcm_out[], /* o : output audio channels */
- const int16_t n_channels, /* i : number of channels */
- const int16_t output_Fs /* i : output sampling rate */
-);
-
-void ivas_agc_read_bits(
- ivas_agc_dec_state_t *hAgcDec, /* i/o: AGC decoder handle */
- Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/
- const int16_t n_channels, /* i : number of channels */
- const int16_t AGC_flag /* i : AGC on/off flag */
-);
-
-void ivas_agc_initWindowFunc(
- float *pWinFunc,
- const int16_t length
-);
-
-void ivas_agc_calcGainParams(
- uint16_t *absEmin,
- uint16_t *betaE,
- uint16_t *maxAttExp,
- const int16_t numCoeffs
-);
-
-float ivas_get_mdct_scaling_gain(
- const int16_t dct_len_by_2
-);
-
-void ivas_get_twid_factors(
- const int16_t length,
- const float **pTwid_re,
- const float **pTwid_im
-);
-
-int16_t ivas_get_bw_idx_from_sample_rate(
- const int32_t sampling_rate /* i : sampling rate */
-);
-
-/*! r: config. table index */
-int16_t ivas_get_spar_table_idx(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t sba_order, /* i : IVAS SBA order */
- const int16_t bwidth, /* i : audio bandwidth */
- int16_t *bitlen, /* o : number of bits */
- int16_t *ind /* o : indice */
-);
-
-/*! r: number of transport channels */
-int16_t ivas_get_sba_num_TCs(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t sba_order /* i : IVAS SBA order */
-);
-
-
-void ivas_spar_bitrate_dist(
- int32_t core_brates_act[], /* o : bitrates per core-coder */
- const int16_t nAvailBits, /* i : number of available bits */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t sba_order, /* i : Ambisonic (SBA) order */
- const int16_t bwidth /* i : audio bandwidth */
-);
-
-void ivas_mdct(
- const float *pIn,
- float *pOut,
- const int16_t length
-);
-
-void ivas_dct_windowing(
- const int16_t fade_len,
- const int16_t full_len,
- const int16_t dct_len,
- const int16_t zero_pad_len,
- const float *pWindow_coeffs,
- const int16_t frame_len,
- float *pOut_buf,
- float *pBuffer_prev,
- float *pTemp_lfe
-);
-
-void ivas_tda(
- const float *pIn,
- float *pOut,
- const int16_t length
-);
-
-void ivas_imdct(
- const float *pIn,
- float *pOut,
- const int16_t length
-);
-
-void ivas_itda(
- const float *re,
- float *pOut,
- const int16_t length
-);
-
-void ivas_spar_get_cldfb_gains(
- SPAR_DEC_HANDLE hSpar,
- HANDLE_CLDFB_FILTER_BANK cldfbAnaDec0,
- HANDLE_CLDFB_FILTER_BANK cldfbSynDec0,
- const DECODER_CONFIG_HANDLE hDecoderConfig
-);
-
-/*! r: 1 if prediction residual channel */
-
-void ivas_spar_dec_agc_pca(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output[], /* i/o: input/output audio channels */
- const Word16 output_frame /* i : output frame length */
-);
-
-void ivas_spar_dec_set_render_map(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t nCldfbTs /* i : number of CLDFB time slots */
-);
-
-void ivas_spar_dec_set_render_params(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t n_cldfb_slots /* i : number of cldfb slots in this frame */
-);
-
-void ivas_spar_dec_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int16_t nCldfbSlots, /* i : number of CLDFB slots */
- const int16_t nSamplesForRendering /* i : number of samples provided */
-);
-
-void ivas_sba_dec_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t nCldfbSlots, /* i : number of CLDFB slots */
- const int16_t nSamplesForRendering /* i : number of samples provided */
-);
-
-ivas_error ivas_sba_dec_render(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-void ivas_spar_dec_upmixer_sf(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output[], /* o : output audio channels */
- const int16_t nchan_internal /* i : number of internal channels */
-);
-
-void ivas_spar_dec_upmixer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output[], /* i/o: input/output audio channels */
- const int16_t nchan_internal, /* i : number of internal channels */
- const int16_t output_frame /* i : output frame length */
-);
-
-/* MD module */
-
-void ivas_spar_md_enc_close(
- ivas_spar_md_enc_state_t **hMdEnc /* i/o: SPAR MD encoder handle */
-);
-
-void ivas_compute_spar_params(
- float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH],
- float dm_fv_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS],
- const int16_t i_ts,
- float ***mixer_mat,
- const int16_t start_band,
- const int16_t end_band,
- const int16_t dtx_vad,
- const int16_t num_ch,
- const int16_t bands_bw,
- const int16_t active_w,
- const int16_t active_w_vlbr,
- ivas_spar_md_com_cfg *hSparCfg,
- ivas_spar_md_t *hSparMd,
- float *pWscale,
- const int16_t from_dirac,
- const int16_t dyn_active_w_flag
-);
-
-void ivas_create_fullr_dmx_mat(
- float pred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS],
- float dm_fv_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS],
- float ***mixer_mat,
- const int16_t in_chans,
- const int16_t start_band,
- const int16_t end_band,
- const int16_t active_w,
- ivas_spar_md_com_cfg *hMdCfg
-);
-
-void ivas_calc_c_p_coeffs(
- ivas_spar_md_t *pSparMd,
- float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH],
- const int16_t i_ts,
- float ***mixer_mat,
- const int16_t num_ch,
- const int16_t num_dmx,
- const int16_t band_idx,
- const int16_t dtx_vad,
- const int16_t compute_p_flag,
- const int16_t dyn_active_w_flag
-);
-
-void ivas_get_spar_md_from_dirac(
- float azi_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
- float ele_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
- float diffuseness[IVAS_MAX_NUM_BANDS],
- const int16_t n_ts,
- float ***mixer_mat,
- ivas_spar_md_t *hSpar_md,
- ivas_spar_md_com_cfg *hSpar_md_cfg,
- const int16_t start_band,
- const int16_t end_band,
- const int16_t order,
- const int16_t dtx_vad,
- float Wscale_d[IVAS_MAX_NUM_BANDS],
- const uint8_t useLowerRes,
- const int16_t active_w_vlbr,
- const int16_t dyn_active_w_flag
-);
-
-/*! r: number of MD subframes */
-
-ivas_error ivas_spar_md_dec_matrix_open(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t num_channels, /* i : number of internal channels */
- const int16_t num_md_sub_frames
-);
-
-void ivas_spar_md_dec_matrix_close(
- ivas_spar_md_dec_state_t *hMdDecoder, /* i/o: SPAR MD decoder handle */
- const int16_t num_channels /* i : number of internal channels */
-);
-
-ivas_error ivas_spar_md_dec_open(
- ivas_spar_md_dec_state_t **hMdDec_out, /* i/o: SPAR MD decoder handle */
- const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */
- const int16_t num_channels, /* i : number of internal channels */
- const int16_t sba_order, /* i : SBA order */
- const int16_t sid_format, /* i : SID format */
- const int32_t last_active_ivas_total_brate /* i : IVAS last active bitrate */
-);
-
-void ivas_spar_md_dec_close(
- ivas_spar_md_dec_state_t **hMdDec /* i/o: SPAR MD decoder handle */
-);
-
-void ivas_spar_get_parameters(
- SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */
- const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */
- const int16_t ts, /* i : time slot index */
- const int16_t num_ch_out, /* i : number of channels out */
- const int16_t num_ch_in, /* i : number of channels in */
- const int16_t num_spar_bands, /* i : number of SPAR bands */
- float par_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS] /* o : mixing matrix */
-);
-
-ivas_error ivas_spar_md_dec_init(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */
- const int16_t num_channels, /* i : number of internal channels */
- const int16_t sba_order /* i : SBA order */
-);
-
-void ivas_spar_md_dec_process(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t sba_order /* i : SBA order */
-);
-
-void ivas_spar_to_dirac(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t dtx_vad, /* i : DTX frame flag */
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t bw, /* i : band joining factor */
- const int16_t dyn_active_w_flag /* i : dynamic active W flag */
-);
-
-void ivas_spar_update_md_hist(
- ivas_spar_md_dec_state_t *hMdDec /* i/o: SPAR MD decoder handle */
-);
-
-int16_t ivas_spar_chk_zero_coefs(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
-);
-
-void ivas_spar_smooth_md_dtx(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t num_md_sub_frames /* i : number of metadata subframes */
-);
-
-void ivas_spar_setup_md_smoothing(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t num_md_sub_frames /* i : number of metadata subframes */
-);
-
-void ivas_spar_dec_gen_umx_mat(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t bfi, /* i : bad frame indicator */
- const int16_t num_md_sub_frames
-);
-
-
-
-
-
-/* Transient detector module */
-ivas_error ivas_transient_det_open_fx(
- ivas_trans_det_state_t **hTranDet, /* i/o: Transient detector handle */
- const Word32 sampling_rate /* i : sampling rate */
-);
-
-void ivas_transient_det_close_fx(
- ivas_trans_det_state_t **hTranDet /* i/o: Transient detector handle */
-);
-
-void ivas_transient_det_process(
- ivas_trans_det_state_t *hTranDet, /* i/o: SPAR TD handle */
- float *pIn_pcm, /* i : input audio channels */
- const int16_t frame_len, /* i : frame length in samples */
- int16_t transient_det[2] /* o : transient det outputs */
-);
-
-void ivas_td_decorr_get_ducking_gains(
- ivas_trans_det_state_t *hTranDet, /* i/o: Transient detector handle */
- float *pIn_pcm,
- float *pIn_duck_gains,
- float *pOut_duck_gains,
- const int16_t frame_len,
- const int16_t tdet_flag
-);
-
-#define IVAS_CMULT_FLOAT( in1_re, in1_im, in2_re, in2_im, out1_re, out1_im ) \
- out1_re = ( in1_re * in2_re ) - ( in1_im * in2_im ); \
- out1_im = ( in1_re * in2_im ) + ( in2_re * in1_im );
-
-#define IVAS_CALCULATE_ABS( re, im, out ) \
- out = sqrtf( ( re * re ) + ( im * im ) );
-
-#define IVAS_CALCULATE_RABS( re, out ) \
- out = sqrtf( re * re );
-
-#define IVAS_CALCULATE_SQ_ABS( re, im, out ) \
- out = (float) ( ( re * re ) + ( im * im ) );
-
-#define IVAS_RMULT_DOUBLE( in1_re, in2_re, out1_re ) \
- out1_re = ( in1_re * in2_re ); \
-
-#define IVAS_CALCULATE_SQ_ABS_N( re, out ) \
- out = (float) ( re * re );
-
-#define IVAS_RMULT_FLOAT( in1_re, in2_re, out1_re ) \
- out1_re = ( in1_re * in2_re );
-
-
-/* PCA */
-void ivas_pca_enc_init(
- PCA_ENC_STATE *hPCA /* i/o: PCA encoder structure */
-);
-
-void ivas_pca_read_bits(
- Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/
- PCA_DEC_STATE *hPCA /* i/o: PCA encoder structure */
-);
-
-void ivas_pca_dec_init(
- PCA_DEC_STATE *hPCA /* i/o: PCA decoder structure */
-);
-
-void ivas_pca_dec(
- PCA_DEC_STATE *hPCA, /* i/o: PCA decoder structure */
- const int16_t n_samples, /* i : output frame length */
- const int16_t n_channels, /* i : number of channels */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */
- const int16_t bfi, /* i : bad frame indicator */
- float *pcm_out[] /* o : output audio channels */
-);
-
-void pca_dec_s3(
- const int32_t index,
- float *q
-);
-
-
-void ivas_huffman_encode_fx(
- ivas_huffman_cfg_t *huff_cfg,
- Word16 in,
- Word16 *hcode,
- Word16 *hlen
-);
-
-
-
-ivas_error ivas_huffman_decode(
- ivas_huffman_cfg_t *huff_cfg,
- Decoder_State *st0,
- int16_t *dec_out
-);
-
-void ivas_arith_decode_cmplx_cell_array(
- ivas_arith_t *pArith_re,
- ivas_arith_t *pArith_re_diff,
- Decoder_State *st0,
- ivas_cell_dim_t *pCell_dims,
- int16_t *pDo_diff, const int16_t nB,
- int16_t *pSymbol_re,
- int16_t *pSymbol_re_old
-);
-
-
-
-
-void ivas_ari_done_encoding_14bits(
- BSTR_ENC_HANDLE hBstr, Tastat *s
-);
-
-
-void ivas_wrap_arround(
- int16_t *pArr,
- const int16_t min_val,
- const int16_t max_val,
- const int16_t length
-);
-
-void ivas_get_cum_freq_model(
- const int16_t *pFreq_model,
- const int16_t length,
- int16_t *pCum_freq_model
-);
-
-int16_t ivas_map_num_pred_r_to_idx(
- const int16_t num_quant_points_pred_r,
- const int16_t active_w_flag
-);
-
-int16_t ivas_map_num_drct_r_to_idx(
- const int16_t num_quant_points_drct_r
-);
-
-int16_t ivas_map_num_decd_r_to_idx(
- const int16_t num_quant_points_decd_r
-);
-
-/* Quantization utilities */
-void ivas_quantise_real_values(
- const float *values,
- const int16_t q_levels,
- const float min_value,
- const float max_value,
- int16_t *index,
- float *quant,
- const int16_t dim
-);
-
-
-void ivas_spar_quant_dtx_init(
- ivas_spar_md_t *spar_md,
- float *min_max
-);
-
-void ivas_map_prior_coeffs_quant(
- ivas_spar_md_prev_t *pSpar_md_prior,
- ivas_spar_md_com_cfg *pSpar_md_cfg,
- const int16_t qsi,
- const int16_t nB
-);
-
-
-void ivas_clear_band_coeffs(
- ivas_band_coeffs_t *pband_coeffs,
- const uint16_t num_bands
-);
-
-void ivas_clear_band_coeff_idx(
- ivas_band_coeffs_ind_t *pband_coeff_idx,
- const uint16_t num_bands
-);
-
-
-/*----------------------------------------------------------------------------------*
- * MASA prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_masa_decode(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */
- Decoder_State *st, /* i/o: decoder state structure */
- int16_t *nb_bits_read /* o : number of bits read */
-);
-
-void generate_gridEq(
- SPHERICAL_GRID_DATA *data /* o : data structure for grid */
-);
-
-ivas_error ivas_masa_enc_open_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-void ivas_masa_enc_close_fx(
- MASA_ENCODER_HANDLE *hMasa /* i/o: MASA metadata structure */
-);
-
-void ivas_masa_enc_reconfigure(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-ivas_error ivas_masa_dec_reconfigure(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */
- int16_t *data /* o : output synthesis signal */
-);
-
-ivas_error ivas_masa_encode(
- MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder structure */
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */
- int16_t *nb_bits_metadata, /* o : number of metadata bits written */
- const int16_t nchan_transport, /* i : number of MASA input/transport channels */
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t Opt_DTX_ON, /* i : DTX on flag */
- const int16_t element_mode, /* i : element mode */
- const ISM_MODE ism_mode, /* i : ISM format mode */
- const int16_t nchan_ism, /* i : number of ISM channels */
- ISM_METADATA_HANDLE hIsmMetaData[MAX_NUM_OBJECTS], /* i : ISM metadata handle */
- const int16_t idx_separated_object, /* i : index of the separated object */
- OMASA_ENC_HANDLE hOMasa, /* i : OMASA encoder handle */
- const int16_t ism_imp, /* i : importance of separated object */
- const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */
-);
-
-void ivas_masa_estimate_energy(
- MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder structure */
- float *data_f[], /* i : Input audio channels */
- const int16_t input_frame, /* i : frame length */
- const int16_t nchan_transport /* i : number of MASA input/transport channels */
-);
-
-
-void ivas_masa_set_elements(
- const int32_t ivas_total_brate, /* i : codec total bitrate */
- const int16_t mc_mode, /* i : MC format mode */
- const int16_t nchan_transport, /* i : number of MASA input/transport channels */
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- int16_t *element_mode, /* o : element mode */
- int16_t *nSCE, /* o : number of SCEs */
- int16_t *nCPE, /* o : number of CPEs */
- const int16_t ivas_format, /* i : IVAS format */
- const ISM_MODE ism_mode, /* i : ISM mode */
- const int32_t ism_total_brate /* i : initial ISM total bitrate */
-);
-
-/*! r: valid or not 1/0 */
-int16_t valid_ratio_index(
- int16_t index, /* i : index to be checked */
- const int16_t K, /* i : L1 norm to check against */
- const int16_t len /* i : vector length */
-);
-
-void reconstruct_ism_ratios(
- int16_t *ratio_ism_idx,
- const int16_t nchan_ism,
- const float step,
- float *q_energy_ratio_ism
-);
-
-void distribute_evenly_ism(
- int16_t *idx,
- const int16_t K,
- const int16_t nchan_ism
-);
-
-
-int16_t ivas_qmetadata_encode_extended_gr_length_fx(
- const uint16_t value,
- const uint16_t alphabet_size,
- const int16_t gr_param);
-
-void ivas_qmetadata_encode_extended_gr_fx(
- BSTR_ENC_HANDLE hMetaData, /* i/o: q_metadata handle */
- const uint16_t value, /* i : value to be encoded */
- const uint16_t alphabet_size, /* i : alphabet size */
- const int16_t gr_param); /* i : GR order */
-
-/*! r: CPE bitrate value */
-int32_t calculate_cpe_brate_MASA_ISM(
- const ISM_MODE ism_mode, /* i : ism mode */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t nchan_ism /* i : number of objects */
-);
-
-void ivas_merge_masa_metadata(
- MASA_ENCODER_HANDLE hMasa, /* i/o: MASA enc handle. source for MASA metadata and combined metadata will be here */
- OMASA_SPATIAL_META_HANDLE hOMasaMeta /* i : ISM-object metadata to be merged with the MASA metadata */
-);
-
-
-/*!r : number of bits for ISM ratio index */
-int16_t bits_index_ism_ratio(
- const int16_t nchan_ism /* i : number of objects */
-);
-
-void calculate_nbits_meta(
- const int16_t nchan_ism,
- float q_energy_ratio_ism[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS],
- float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS],
- const int16_t numSf,
- const int16_t numCodingBands,
- int16_t* bits_ism,
- const int16_t idx_sep_obj,
- const int16_t ism_imp
-);
-
-/*! r: limitation flag */
-int16_t calculate_brate_limit_flag(
- const int16_t ism_imp[], /* i : ISM importance flags */
- const int16_t nchan_ism /* i : number of objects */
-);
-
-void ivas_masa_set_coding_config(
- MASA_CODEC_CONFIG* config, /* i/o: MASA coding config structure */
- int16_t* band_mapping, /* o : Band mapping used */
- const int32_t ivas_total_brate, /* i : codec total bitrate */
- const int16_t nchan_transport, /* i : number of transport channel (mono/stereo) */
- const uint8_t isMcMasa /* i : toggle for selecting McMASA specific config */
-);
-
-/*! r: Surround coherence significant flag */
-uint8_t ivas_masa_surrcoh_signicant(
- float surroundingCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Surround coherence */
- float diffuse_to_total_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Diffuse to total ratio */
- const int16_t nSubFrames, /* i : Number of sub frames */
- const int16_t nBands /* i : Number of frequency bands */
-);
-
-void masa_compensate_two_dir_energy_ratio_index(
- const int16_t ratio_index_1, /* i : Input ratio for direction 1 */
- const int16_t ratio_index_2, /* i : Input ratio for direction 2 */
- int16_t *ratio_index_mod1, /* o : Output modified ratio for direction 1 */
- int16_t *ratio_index_mod2, /* o : Output modified ratio for direction 2 */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
-void ivas_set_qmetadata_maxbit_req_fx(
- IVAS_QMETADATA_HANDLE hQMetaData, /* o : qmetadata structure where the requirement value is set */
- const IVAS_FORMAT ivas_format /* i : IVAS format */
-);
-
-void masa_sample_rate_band_correction(
- MASA_CODEC_CONFIG *config, /* i/o: MASA codec config */
- int16_t *band_mapping, /* i/o: Band mapping used and modified */
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */
- const uint8_t maxBand, /* i : max band */
- uint8_t is_encoder, /* i : signals if called at encoder */
- MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */
-);
-
-void invdct4_transform(
- float *v, /* i : input vector */
- uint8_t *invdct_v /* o : transformed vector */
-);
-
-
-void ivas_spar_param_to_masa_param_mapping(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */
- float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, real */
- float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, imag */
- const int16_t subframe /* i : Subframe to map */
-);
-
-/*---------------------------------------------------------------------------------*
- * Binaural FastConv Renderer Prototypes
-*-----------------------------------------------------------------------------------*/
-
-
-void ivas_binaural_hrtf_close(
- HRTFS_FASTCONV_HANDLE *hHrtfFastConv /* i/o: decoder binaural hrtf handle */
-);
-
-void ivas_binRenderer(
- BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */
- COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle */
- const int16_t numTimeSlots, /* i : number of time slots to process */
- float Cldfb_RealBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */
- float Cldfb_ImagBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */
- float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals */
- float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] /* i : LS signals */
-);
-
-void ivas_binaural_add_LFE(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- int16_t output_frame, /* i : length of input frame */
- float *input_f[], /* i : transport channels */
- float *output_f[] /* o : synthesized core-coder transport channels/DirAC output */
-);
-
-/*----------------------------------------------------------------------------------*
- * renderer prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_ism_renderer_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_ism_renderer_close(
- ISM_RENDERER_HANDLE *hIsmRendererData /* i/o: ISM renderer handle */
-);
-
-void ivas_ism_render_sf(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output_f[], /* i/o: core-coder transport channels/object output */
- const int16_t n_samples_to_render /* i : output frame length per channel */
-);
-
-
-void ivas_mc2sba(
- IVAS_OUTPUT_SETUP hIntSetup, /* i : Format of decoder output */
- float *in_buffer_td[], /* i : MC signals (on input) and the HOA3 (on output) */
- float *buffer_td[], /* o : MC signals (on input) and the HOA3 (on output) */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t sba_order, /* i : SBA order */
- const float gain_lfe /* i : gain for LFE, 0=ignore LFE */
-);
-
-void ivas_param_mc_mc2sba_cldfb(
- IVAS_OUTPUT_SETUP hTransSetup, /* i : transported MC Format */
- float *hoa_encoder, /* i : HOA3 encoder for the transported MC format */
- const int16_t slot_idx, /* i : current slot in the subframe */
- float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */
- float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */
- const int16_t nBands, /* i : number of synth CLDFB bands */
- const float gain_lfe /* i : gain applied to LFE */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Amplitude Panning VBAP prototypes
- *----------------------------------------------------------------------------------*/
-
-void panning_wrap_angles(
- const float azi_deg, /* i : azimuth in degrees for panning direction (positive left) */
- const float ele_deg, /* i : elevation in degrees for panning direction (positive up) */
- float *azi_wrapped, /* o : wrapped azimuth component */
- float *ele_wrapped /* o : wrapped elevation component */
-);
-
-/*----------------------------------------------------------------------------------*
- * LS Renderer prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_ls_setup_conversion_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_ls_setup_conversion_close(
- LSSETUP_CONVERSION_HANDLE *hLsSetUpConversion /* i/o: LS converter handle */
-);
-
-
-void ivas_ls_setup_conversion(
- Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
- const int16_t input_chans, /* i : number of input channels to the renderer */
- const int16_t output_frame, /* i : frame length */
- float *input[], /* i : LS input/output synthesis signal */
- float *output[] /* i/o: LS input/output synthesis signal */
-);
-
-void ivas_ls_setup_conversion_process_mdct(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output[] /* i/o: output synthesis signal */
-);
-
-void ivas_ls_setup_conversion_process_mdct_param_mc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *x[][NB_DIV] /* i/o: output synthesis signal */
-);
-
-void ivas_lssetupconversion_process_param_mc(
- Decoder_Struct *st_ivas, /* i/o: LS setup conversion renderer handle */
- const int16_t num_timeslots, /* i : number of time slots to process */
- float Cldfb_RealBuffer_InOut[MAX_CICP_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i/o: LS signals */
- float Cldfb_ImagBuffer_InOut[MAX_CICP_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i/o: LS signals */
- int16_t channel_active[MAX_CICP_CHANNELS] /* i : bitmap indicating which output channels are active */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Custom loudspeaker setup prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_ls_custom_open(
- LSSETUP_CUSTOM_HANDLE *hLsSetupCustom /* o : Custom loudspeaker setup handle */
-);
-
-
-
-/*----------------------------------------------------------------------------------*
- * McMASA prototypes
- *----------------------------------------------------------------------------------*/
-
-
-ivas_error ivas_mcmasa_dec_reconfig(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
-);
-
-void ivas_mcmasa_setNumTransportChannels(
- int16_t* nchan_transport, /* o : Pointer to number of transport channels to be set */
- int16_t* element_mode, /* o : Pointer to element mode to be set */
- const int32_t ivas_total_brate /* i : Total bitrate of IVAS */
-);
-
-void ivas_mcmasa_set_separate_channel_mode(
- uint8_t *separateChannelEnabled, /* o : Pointer to separate channel toggle */
- int16_t *separateChannelIndex, /* o : Pointer to separate channel index */
- const int32_t ivas_total_brate /* i : Total bitrate of IVAS */
-);
-
-void ivas_mcmasa_split_brate(
- const uint8_t separateChannelEnabled, /* i : Transport running in "separate channel" mode */
- const int32_t ivas_total_brate, /* i : Total bitrate available to be split */
- const int16_t nSCE, /* i : Number of SCEs in use (0 or 1) */
- const int16_t nCPE, /* i : Number of CPEs in use (0 or 1) */
- int32_t *brate_sce, /* o : Pointer to SCE element bitrate */
- int32_t *brate_cpe /* o : Pointer to CPE element bitrate */
-);
-
-
-void ivas_mcmasa_dmx_modify_fx(
- const Word16 n_samples, /* i : input frame length in samples */
- Word32 dmx_fx[][L_FRAME48k + NS2SA(48000, IVAS_FB_ENC_DELAY_NS)], /* i/o: downmix signal to be transformed into another format Qx*/
- Word16 dmx_Q[], /* i/o : Q of the intput signal which is being transformed*/
- const Word16 n_chnls_dmx_old, /* i : number of downmix channels in the old format Q0 */
- const Word16 n_chnls_dmx_new /* i : number of downmix channels in the target format Q0*/
-);
-
-ivas_error ivas_mono_dmx_renderer_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-void ivas_mono_dmx_renderer_close(
- MONO_DOWNMIX_RENDERER_HANDLE *hMonoDmxRenderer /* i/ i/o: Mono downmix structure */
-);
-
-void ivas_mono_downmix_render_passive(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output_f[], /* i/o: synthesized core-coder transport channels/mono output */
- const int16_t output_frame /* i : output frame length */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * LFE encoder low pass filter prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_create_lfe_lpf_enc(
- ivas_filters_process_state_t **hLfeLpf, /* o : LFE LPF handle */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void ivas_lfe_lpf_enc_close_fx(
- ivas_filters_process_state_t **hLfeLpf /* i/o: LFE LPF handle */
-);
-
-void ivas_lfe_lpf_enc_apply(
- ivas_filters_process_state_t *hLfeLpf, /* i/o: LFE LPF handle */
- float data_lfe_ch[], /* i/o: LFE signal */
- const int16_t input_frame /* i : input frame length per channel */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * LFE Coding prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_create_lfe_enc_fx(
- LFE_ENC_HANDLE *hLFE, /* o : IVAS LFE encoder structure */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void ivas_lfe_enc_close_fx(
- LFE_ENC_HANDLE *hLFE /* i/o: LFE encoder handle */
-);
-
-void ivas_lfe_enc(
- LFE_ENC_HANDLE hLFE, /* i/o: LFE encoder handle */
- float data_lfe_ch[], /* i : input LFE signal */
- const int16_t input_frame, /* i : input frame length per channel */
- BSTR_ENC_HANDLE hBstr /* i/o: bitstream handle */
-);
-
-void ivas_lfe_tdplc(
- LFE_DEC_HANDLE hLFE, /* i/o: LFE decoder handle */
- float *prevsynth, /* i : previous frame synthesis */
- float *ytda, /* o : output time-domain buffer */
- const int16_t output_frame /* i : output frame length */
-);
-void ivas_lfe_window_init(
- LFE_WINDOW_HANDLE hLFEWindow, /* i/o: LFE window handle */
- const int32_t sampling_rate, /* i : sampling rate */
- const int16_t frame_len /* i : frame length in samples */
-);
-
-void ivas_lfe_lpf_select_filt_coeff(
- const int32_t sampling_rate, /* i : sampling rate */
- const int16_t order, /* i : filter order */
- const float **ppFilt_coeff /* o : filter coefficients */
-);
-
-void ivas_filters_init(
- ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
- const float *filt_coeff, /* i : filter coefficients */
- const int16_t order /* i : filter order */
-);
-
-void ivas_filters_init_fx(
- ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
- const Word32 *filt_coeff_fx, /* i : filter coefficients Q31- *filt_coeff_e */
- const Word16 *filt_coeff_e, /* i : exponents of filter coefficients */
- const Word16 order ) ;
-
-void ivas_filter_process(
- ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
- float *pIn_Out, /* i : signal subject to filtering */
- const int16_t length /* i : filter order */
-);
-
-void ivas_filter_process_fx(
- ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
- Word32 *pIn_Out_fx, /* i/o: signal subject to filtering Q(q_factor) */
- const Word16 length, /* i : filter order */
- Word16 q_factor );
-
-/*----------------------------------------------------------------------------------*
- * OSBA prototypes
- *----------------------------------------------------------------------------------*/
-ivas_error ivas_osba_enc_reconfig(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-ivas_error ivas_osba_data_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
-);
-
-ivas_error ivas_osba_dirac_td_binaural_jbm(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-
-void ivas_osba_data_close(
- SBA_ISM_DATA_HANDLE *hSbaIsmData /* i/o: OSBA rendering handle */
-);
-
-
-/*----------------------------------------------------------------------------------*
-* OMASA prototypes
-*---------------------------------------------------------------------------------*/
-
-ivas_error ivas_omasa_enc_open(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-void ivas_omasa_enc_close(
- OMASA_ENC_HANDLE *hOMasa /* i/o: encoder OMASA handle */
-);
-
-
-ivas_error ivas_omasa_dec_config(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */
- int16_t *data /* o : output synthesis signal */
-);
-
-
-
-
-void ivas_set_surplus_brate_enc(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-#ifdef DEBUG_MODE_INFO
- ,
- const int16_t *nb_bits_metadata /* i : number of metadata bits */
-#endif
-);
-
-void ivas_set_surplus_brate_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- int32_t *ism_total_brate /* i : ISM total bitrate */
-);
-
-
-void ivas_set_ism_importance_interformat(
- const int32_t ism_total_brate, /* i/o: ISms total bitrate */
- const int16_t nchan_transport, /* i : number of transported channels */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- SCE_ENC_HANDLE hSCE[], /* i/o: SCE encoder handles */
- const float lp_noise_CPE, /* i : LP filtered total noise estimation */
- int16_t ism_imp[] /* o : ISM importance flags */
-);
-
-
-/*! r: adjusted bitrate */
-int32_t ivas_interformat_brate(
- const ISM_MODE ism_mode, /* i : ISM mode */
- const int16_t nchan_ism, /* i : number of ISM channels */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t ism_imp, /* i : ISM importance flag */
- const int16_t limit_flag /* i : flag to limit the bitrate increase */
-);
-
-void ivas_combined_format_brate_sanity(
- const int32_t element_brate, /* i : element bitrate */
- const int16_t core, /* i : core */
- const int32_t total_brate, /* i : total bitrate */
- int32_t *core_brate, /* i/o: core bitrate */
- int16_t *inactive_coder_type_flag, /* o : inactive coder_type flag */
- int16_t *diff_nBits /* o : number of differential bits */
-);
-
-ISM_MODE ivas_omasa_ism_mode_select(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t nchan_ism /* i : number of input ISM's */
-);
-
-void ivas_set_omasa_TC(
- const ISM_MODE ism_mode, /* i : ISM mode */
- const int16_t nchan_ism, /* i : number of input ISMs */
- int16_t *nSCE, /* o : number of SCEs */
- int16_t *nCPE /* o : number of CPEs */
-);
-
-void ivas_merge_masa_transports(
- float data_in_f1[][L_FRAME48k], /* i : Transport audio signals 1 */
- float *data_in_f2[], /* i : Transport audio signals 2 */
- float *data_out_f[], /* o : Merged transport audio signals */
- const int16_t input_frame, /* i : Input frame size */
- const int16_t num_transport_channels /* i : Number of transport audio signals */
-);
-
-
-ivas_error ivas_omasa_ism_metadata_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int32_t ism_total_brate, /* i : ISM total bitrate */
- int16_t *nchan_ism, /* o : number of ISM separated channels */
- int16_t *nchan_transport_ism, /* o : number of ISM TCs */
- const int16_t dirac_bs_md_write_idx, /* i : DirAC bitstream write index */
- int16_t nb_bits_metadata[] /* o : number of ISM metadata bits */
-);
-
-void ivas_omasa_preProcessStereoTransportsForMovedObjects(
- Decoder_Struct *st_ivas,
- float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
- float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
- const int16_t nBins,
- const int16_t subframe
-);
-
-ivas_error ivas_omasa_separate_object_renderer_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_omasa_separate_object_renderer_close(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_omasa_separate_object_render_jbm(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const uint16_t nSamplesRendered, /* i : number of samples rendered */
- float input_f[][L_FRAME48k], /* i : separated object signal */
- float *output_f[], /* o : rendered time signal */
- const int16_t subframes_rendered, /* i : number of subframes rendered */
- const int16_t slots_rendered /* i : number of CLDFB slots rendered */
-);
-
-void ivas_omasa_encode_masa_to_total(
- float masa_to_total_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS],
- BSTR_ENC_HANDLE hMetaData,
- const int16_t low_bitrate_mode,
- const int16_t nbands,
- const int16_t nblocks
-);
-
-void ivas_omasa_decode_masa_to_total(
- uint16_t *bit_stream,
- int16_t *index,
- float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS],
- const int16_t nbands,
- const int16_t nblocks
-);
-
-void ivas_omasa_modify_masa_energy_ratios(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_MAXIMUM_CODING_SUBBANDS]
-);
-
-
-/*----------------------------------------------------------------------------------*
- * TD Binaural Object renderer
- *----------------------------------------------------------------------------------*/
-
-#ifndef FIX_910_REMOVE_DUPLICATION_TD_REND
-ivas_error ivas_td_binaural_renderer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output[], /* i/o: SCE channels / Binaural synthesis */
- const int16_t output_frame /* i : output frame length */
-);
-#endif
-ivas_error ivas_td_binaural_renderer_sf(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output[], /* i/o: SCE channels / Binaural synthesis */
- const int16_t n_samples_granularity /* i : granularity of the renderer/buffer */
-);
-
-/*----------------------------------------------------------------------------------*
- * Filter-bank (FB) Mixer
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_fb_set_cfg(
- IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */
- const int16_t ivas_format, /* i : IVAS format */
- const int16_t num_in_chans, /* i : number of FB input channels */
- const int16_t num_out_chans, /* i : number of FB output channels */
- const int16_t active_w_mixing, /* i : active_w_mixing flag */
- const int32_t sampling_Fs, /* i : sampling rate */
- const int16_t nachan_dirac_ana /* i : number of DirAR analysis channels */
-);
-
-void ivas_fb_mixer_pcm_ingest(
- IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */
- float *pcm_in[], /* i : input audio channels */
- float **ppOut_pcm, /* o : output audio channels */
- const int16_t frame_length, /* i : frame length */
- const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH]
-);
-
-void ivas_fb_mixer_update_prior_input(
- IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */
- float *pcm_in[], /* i : input audio channels */
- const int16_t length, /* i : length of time slot */
- const int16_t nchan_fb_in /* i : number of analysis channels */
-);
-
-void ivas_fb_mixer_get_windowed_fr(
- IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */
- float *pcm_in[], /* i : input audio channels */
- float *frame_f_real[], /* o : real freq domain values */
- float *frame_f_imag[], /* o : imag freq domain values */
- const int16_t length, /* i : number of new samples in time slot */
- const int16_t mdft_len, /* i : MDFT frame length */
- const int16_t nchan_fb_in /* i : number of analysis channels */
-);
-
-/*! r: number of spectral bands */
-
-/* clang-format on */
diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h
index 6c9166111ff804ab906449b4b2fc7ed20de5e85e..06494a4a70239232fd7e58dae51396db16840d38 100644
--- a/lib_com/ivas_prot_fx.h
+++ b/lib_com/ivas_prot_fx.h
@@ -1155,16 +1155,15 @@ void ivas_mono_stereo_downmix_mcmasa_fx(
);
void ivas_apply_non_diegetic_panning_fx(
+#ifdef FIX_1009_ISM_NONDIEGETIC_PANNING
+ Word32 *input_f_fx, /* i : non-diegetic object */
+#endif
Word32 *output_f_fx[], /* i/o: core-coder transport mono channel/stereo output */
const Word16 non_diegetic_pan_gain_fx, /* i : non-diegetic panning gain */
const Word16 output_frame /* i : output frame length per channel */
);
-#ifdef NONBE_FIX_967_ISM_MONO_DMX
void ivas_ism_mono_dmx_fx(
-#else
-void ivas_mono_downmix_render_passive_fx(
-#endif
Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
Word32 *output_f_fx[], /* i/o: synthesized core-coder transport channels/mono output */
const Word16 output_frame /* i : output frame length */
@@ -2133,13 +2132,6 @@ void small_reduction_direction_fx(
const Word16 raw_flag[MASA_MAXIMUM_CODING_SUBBANDS],
Word16 *diff );
-
-void sort_desc_ind_16_fx(
- Word16 *s, /* i/o: vector to be sorted Qx*/
- const Word16 len, /* i : vector length */
- Word16 *ind /* o : array of indices */
-);
-
void sort_desc_ind_32_fx(
Word32 *s, /* i/o: vector to be sorted Qx*/
const Word16 len, /* i : vector length */
@@ -2763,7 +2755,8 @@ void stereo_coder_tcx_fx(
Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse spectrum */
Word32 *inv_mdst_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */
const Word16 mct_on, /* i : flag mct block (1) or stereo (0) */
- Word16 q_spec );
+ Word16 exp_spec,
+ Word16 exp_mdst_spec );
// bw_detect_fx.c
Word16 set_bw_mct_fx(
@@ -3392,7 +3385,7 @@ void mctStereoIGF_enc_fx(
Word32 powerSpec_fx[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */
Word16 q_powerSpec[MCT_MAX_CHANNELS], /* i : Q for powSpec_fx */
Word32 *powerSpecMsInv_fx[MCT_MAX_CHANNELS][NB_DIV], /* i : same as powerSpec_fx but for inverse spect.*/
- Word16 q_powerSpecMsInv[MCT_MAX_CHANNELS], /* i : Q for powSpecMsInv_fx */
+ Word16 *q_powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : Q for powSpecMsInv_fx */
Word32 *inv_spectrum_fx[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */
const Word16 sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */
);
@@ -3706,18 +3699,11 @@ ivas_error ivas_allocate_binaural_hrtf_fx(
void ivas_binRenderer_fx(
BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
-#endif
COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle*/
const Word16 numTimeSlots, /* i : number of time slots to render */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word32 Cldfb_RealBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */
Word32 Cldfb_ImagBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */
-#else
- Word32 Cldfb_RealBuffer_Binaural_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */
- Word32 Cldfb_ImagBuffer_Binaural_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */
-#endif
Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals */
Word32 ImagBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals */
Word16 *Q_in /* i : LS signals exp */
@@ -4037,7 +4023,7 @@ ivas_error ivas_core_dec_fx(
const Word16 sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
);
-void decod_gen_2sbfr_ivas_fx(
+void decod_gen_2sbfr_fx(
Decoder_State *st, /* i/o: decoder static memory */
const Word16 sharpFlag, /* i : formant sharpening flag `Q0*/
const Word16 *Aq, /* i : LP filter coefficient Q12*/
@@ -4815,7 +4801,7 @@ ivas_error stereo_memory_enc_fx(
void stereo_switching_enc_fx(
CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- Word16 old_input_signal_pri[], /* i : old input signal of primary channel */
+ Word32 old_input_signal_pri[], /* i : old input signal of primary channel */
const Word16 input_frame, /* i : input frame length */
const Word16 q_inp );
@@ -4937,12 +4923,13 @@ ivas_error ivas_cldfb_dec_reconfig_fx(
ivas_error ivas_sba_enc_reconfigure_fx(
Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
);
-
+#ifndef FIX_993_REMOVE_SBA_GET_ORDER
Word16 ivas_sba_get_order_fx(
const Word16 nb_channels, /* i : Number of ambisonic channels */
const Word16 sba_planar /* i : SBA planar flag */
);
+#endif
/*! r: Ambisonic (SBA) order used for analysis and coding */
Word16 ivas_sba_get_analysis_order(
const Word32 ivas_total_brate, /* i : IVAS total bitrate */
@@ -4999,13 +4986,7 @@ void generate_masking_noise_lb_dirac_fx(
HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */
Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */
const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered */
- const Word16 cna_flag /* i : CNA flag for LB and HB */
-);
-
-void generate_masking_noise_lb_dirac_fx(
- HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */
- Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */
- const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered */
+ SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i : common spatial rendering parameters handle */
const Word16 cna_flag /* i : CNA flag for LB and HB */
);
@@ -5955,7 +5936,6 @@ float deg2rad(
Word32 deg2rad_fx(
Word32 degrees );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
void Quat2EulerDegree_fx(
const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */
Word32 *yaw_fx, /* o : yaw */
@@ -5980,7 +5960,6 @@ void modify_Rmat_q_fx(
Word16 q_cur, /* i : current q factor for rotation matrix */
Word16 q_new /* i : target q factor for rotation matrix */
);
-#endif
/*=============================================================================================*/
/* clang-format off */
@@ -6313,7 +6292,7 @@ void ivas_param_ism_compute_noisy_speech_flag_fx(
* DFT Stereo prototypes
*----------------------------------------------------------------------------------*/
-void stereo_dft_dec_destroy(
+void stereo_dft_dec_destroy_fx(
STEREO_DFT_DEC_DATA_HANDLE *hStereoDft /* i/o: decoder DFT stereo handle */
);
diff --git a/lib_com/ivas_qspherical_com_fx.c b/lib_com/ivas_qspherical_com_fx.c
index 6661026a8cde298b8d2f618156313e3cdef73a1f..844c3ecdef2cdd60899fb73e3e549a35e4ee9e1b 100644
--- a/lib_com/ivas_qspherical_com_fx.c
+++ b/lib_com/ivas_qspherical_com_fx.c
@@ -314,9 +314,9 @@ Word16 quantize_phi_enc_fx(
Word32 temp_res;
Word16 temp_e;
- delta_phi_fx = BASOP_Util_Divide3232_Scale_cadence( 360, n, &temp_e );
+ delta_phi_fx = BASOP_Util_Divide3232_Scale_newton( 360, n, &temp_e );
delta_phi_fx = L_shl( delta_phi_fx, sub( temp_e, 9 ) );
- inv_delta_phi_fx = BASOP_Util_Divide3232_Scale_cadence( n, 360, &temp_e );
+ inv_delta_phi_fx = BASOP_Util_Divide3232_Scale_newton( n, 360, &temp_e );
IF( EQ_16( n, 1 ) )
{
@@ -661,7 +661,7 @@ Word16 quantize_phi_chan_compand_fx(
/* quantize companded value */
// delta_phi = 360.0f / (float) n;
- delta_phi = BASOP_Util_Divide3232_Scale_cadence( 360, n, &tmp_e );
+ delta_phi = BASOP_Util_Divide3232_Scale_newton( 360, n, &tmp_e );
delta_phi = L_shr( delta_phi, sub( 9, tmp_e ) ); // Q22
// id_phi = (int16_t) round_f( ( phi / (float) delta_phi ) );
id_phi = BASOP_Util_Divide3232_Scale( phi, delta_phi, &tmp_e ); // Q15
diff --git a/lib_com/ivas_rom_com.c b/lib_com/ivas_rom_com.c
index c7977001b7cfbd70c374a79c6ef97e6fee1a6f9c..5d4de33b4e9c3933724028c066232695088d6721 100644
--- a/lib_com/ivas_rom_com.c
+++ b/lib_com/ivas_rom_com.c
@@ -52,827 +52,6 @@ const Word32 ivas_brate_tbl[SIZE_IVAS_BRATE_TBL] =
IVAS_192k, IVAS_256k, IVAS_384k, IVAS_512k
};
-/*----------------------------------------------------------------------------------*
- * IVAS limiter table
- *----------------------------------------------------------------------------------*/
-const Word32 release_cnst_table[4][201] = // Q31
-{
- {
- 1913946752,
- 1919716352,
- 1925351680,
- 1930855552,
- 1936230784,
- 1941479808,
- 1946605312,
- 1951609728,
- 1956495744,
- 1961265792,
- 1965922304,
- 1970467584,
- 1974904320,
- 1979234560,
- 1983460736,
- 1987585024,
- 1991609856,
- 1995537280,
- 1999369344,
- 2003108480,
- 2006756480,
- 2010315520,
- 2013787520,
- 2017174528,
- 2020478464,
- 2023701248,
- 2026844672,
- 2029910656,
- 2032900992,
- 2035817344,
- 2038661376,
- 2041435008,
- 2044139648,
- 2046777088,
- 2049348864,
- 2051856384,
- 2054301440,
- 2056685312,
- 2059009536,
- 2061275520,
- 2063484672,
- 2065638272,
- 2067737856,
- 2069784448,
- 2071779584,
- 2073724416,
- 2075620096,
- 2077467904,
- 2079268992,
- 2081024512,
- 2082735488,
- 2084403200,
- 2086028416,
- 2087612544,
- 2089156352,
- 2090660864,
- 2092127104,
- 2093555968,
- 2094948480,
- 2096305408,
- 2097627776,
- 2098916352,
- 2100172032,
- 2101395584,
- 2102587776,
- 2103749504,
- 2104881408,
- 2105984384,
- 2107059072,
- 2108106112,
- 2109126400,
- 2110120448,
- 2111088896,
- 2112032512,
- 2112951808,
- 2113847552,
- 2114720128,
- 2115570304,
- 2116398592,
- 2117205504,
- 2117991552,
- 2118757504,
- 2119503616,
- 2120230400,
- 2120938496,
- 2121628288,
- 2122300288,
- 2122954880,
- 2123592576,
- 2124213760,
- 2124818944,
- 2125408384,
- 2125982592,
- 2126541952,
- 2127086848,
- 2127617664,
- 2128134656,
- 2128638336,
- 2129128832,
- 2129606784,
- 2130072192,
- 2130525568,
- 2130967296,
- 2131397376,
- 2131816448,
- 2132224640,
- 2132622080,
- 2133009408,
- 2133386496,
- 2133753856,
- 2134111744,
- 2134460288,
- 2134799744,
- 2135130368,
- 2135452416,
- 2135766144,
- 2136071680,
- 2136369152,
- 2136659072,
- 2136941312,
- 2137216256,
- 2137484160,
- 2137744896,
- 2137998976,
- 2138246400,
- 2138487424,
- 2138722176,
- 2138950656,
- 2139173376,
- 2139390208,
- 2139601408,
- 2139807104,
- 2140007424,
- 2140202624,
- 2140392576,
- 2140577664,
- 2140758016,
- 2140933504,
- 2141104512,
- 2141271040,
- 2141433216,
- 2141591168,
- 2141745024,
- 2141894912,
- 2142040832,
- 2142182912,
- 2142321408,
- 2142456192,
- 2142587392,
- 2142715264,
- 2142839808,
- 2142961152,
- 2143079296,
- 2143194240,
- 2143306240,
- 2143415424,
- 2143521664,
- 2143625216,
- 2143725952,
- 2143824128,
- 2143919744,
- 2144012800,
- 2144103424,
- 2144191744,
- 2144277760,
- 2144361472,
- 2144443136,
- 2144522496,
- 2144599936,
- 2144675200,
- 2144748544,
- 2144820096,
- 2144889600,
- 2144957440,
- 2145023488,
- 2145087744,
- 2145150336,
- 2145211264,
- 2145270656,
- 2145328512,
- 2145384832,
- 2145439616,
- 2145493120,
- 2145545088,
- 2145595776,
- 2145645056,
- 2145693184,
- 2145739904,
- 2145785472,
- 2145829888,
- 2145873152,
- 2145915136,
- 2145956224,
- 2145996032,
- 2146034944,
- 2146072832,
- 2146109696,
- 2146145664,
- 2146180608,
- 2146214656,
- 2146247808,
- },
- {
- 2027355264,
- 2030408704,
- 2033386624,
- 2036290944,
- 2039123328,
- 2041885440,
- 2044578944,
- 2047205376,
- 2049766528,
- 2052263680,
- 2054698496,
- 2057072384,
- 2059387008,
- 2061643520,
- 2063843328,
- 2065987968,
- 2068078720,
- 2070116864,
- 2072103552,
- 2074040192,
- 2075927936,
- 2077767936,
- 2079561472,
- 2081309568,
- 2083013376,
- 2084673920,
- 2086292352,
- 2087869696,
- 2089406976,
- 2090905216,
- 2092365184,
- 2093788032,
- 2095174528,
- 2096525824,
- 2097842432,
- 2099125632,
- 2100375808,
- 2101594240,
- 2102781312,
- 2103938048,
- 2105065216,
- 2106163456,
- 2107233536,
- 2108276096,
- 2109292032,
- 2110281728,
- 2111246080,
- 2112185728,
- 2113101056,
- 2113992960,
- 2114861824,
- 2115708288,
- 2116532992,
- 2117336448,
- 2118119168,
- 2118881792,
- 2119624704,
- 2120348416,
- 2121053440,
- 2121740288,
- 2122409344,
- 2123061120,
- 2123696128,
- 2124314624,
- 2124917120,
- 2125504128,
- 2126075776,
- 2126632832,
- 2127175296,
- 2127703808,
- 2128218624,
- 2128720000,
- 2129208448,
- 2129684352,
- 2130147712,
- 2130599168,
- 2131038976,
- 2131467264,
- 2131884416,
- 2132290816,
- 2132686592,
- 2133072256,
- 2133447680,
- 2133813504,
- 2134169856,
- 2134516864,
- 2134854784,
- 2135184000,
- 2135504640,
- 2135816960,
- 2136121216,
- 2136417536,
- 2136706048,
- 2136987136,
- 2137260928,
- 2137527552,
- 2137787264,
- 2138040192,
- 2138286592,
- 2138526464,
- 2138760192,
- 2138987776,
- 2139209472,
- 2139425408,
- 2139635712,
- 2139840512,
- 2140039936,
- 2140234240,
- 2140423424,
- 2140607744,
- 2140787200,
- 2140962048,
- 2141132288,
- 2141298048,
- 2141459584,
- 2141616896,
- 2141769984,
- 2141919232,
- 2142064512,
- 2142205952,
- 2142343808,
- 2142478080,
- 2142608768,
- 2142736128,
- 2142860032,
- 2142980864,
- 2143098368,
- 2143212928,
- 2143324544,
- 2143433088,
- 2143538944,
- 2143641984,
- 2143742336,
- 2143840000,
- 2143935232,
- 2144027904,
- 2144118144,
- 2144206080,
- 2144291712,
- 2144375168,
- 2144456320,
- 2144535424,
- 2144612480,
- 2144687488,
- 2144760448,
- 2144831616,
- 2144900992,
- 2144968448,
- 2145034112,
- 2145098112,
- 2145160448,
- 2145221248,
- 2145280256,
- 2145337856,
- 2145393920,
- 2145448576,
- 2145501696,
- 2145553536,
- 2145603968,
- 2145653120,
- 2145700992,
- 2145747456,
- 2145792896,
- 2145837056,
- 2145880064,
- 2145922048,
- 2145962880,
- 2146002560,
- 2146041344,
- 2146078976,
- 2146115712,
- 2146151424,
- 2146186240,
- 2146220160,
- 2146253184,
- 2146285312,
- 2146316672,
- 2146347136,
- 2146376832,
- 2146405760,
- 2146433920,
- 2146461440,
- 2146488192,
- 2146514176,
- 2146539520,
- 2146564224,
- 2146588160,
- 2146611584,
- 2146634368,
- 2146656640,
- 2146678272,
- 2146699264,
- 2146719744,
- 2146739712,
- 2146759168,
- 2146778112,
- 2146796544,
- 2146814464,
- 2146832000,
- 2146849024,
- 2146865664,
- },
- {
- 2086555136,
- 2088125824,
- 2089656576,
- 2091148416,
- 2092602240,
- 2094018944,
- 2095399680,
- 2096745088,
- 2098056192,
- 2099333888,
- 2100578816,
- 2101792000,
- 2102974080,
- 2104125824,
- 2105248128,
- 2106341760,
- 2107407232,
- 2108445440,
- 2109456896,
- 2110442496,
- 2111402624,
- 2112338176,
- 2113249664,
- 2114137728,
- 2115002880,
- 2115845760,
- 2116666880,
- 2117466880,
- 2118246272,
- 2119005568,
- 2119745280,
- 2120465920,
- 2121167872,
- 2121851776,
- 2122517888,
- 2123166976,
- 2123799168,
- 2124414976,
- 2125014912,
- 2125599360,
- 2126168704,
- 2126723200,
- 2127263360,
- 2127789568,
- 2128302208,
- 2128801408,
- 2129287808,
- 2129761536,
- 2130222976,
- 2130672512,
- 2131110272,
- 2131536768,
- 2131952128,
- 2132356736,
- 2132750848,
- 2133134720,
- 2133508736,
- 2133872896,
- 2134227584,
- 2134573184,
- 2134909696,
- 2135237504,
- 2135556736,
- 2135867648,
- 2136170624,
- 2136465536,
- 2136752896,
- 2137032832,
- 2137305344,
- 2137570816,
- 2137829376,
- 2138081280,
- 2138326528,
- 2138565504,
- 2138798080,
- 2139024768,
- 2139245440,
- 2139460480,
- 2139669888,
- 2139873792,
- 2140072320,
- 2140265856,
- 2140454144,
- 2140637696,
- 2140816384,
- 2140990464,
- 2141159936,
- 2141325056,
- 2141485824,
- 2141642368,
- 2141794944,
- 2141943424,
- 2142088064,
- 2142228992,
- 2142366208,
- 2142499840,
- 2142630016,
- 2142756736,
- 2142880128,
- 2143000448,
- 2143117440,
- 2143231488,
- 2143342592,
- 2143450752,
- 2143556096,
- 2143658624,
- 2143758592,
- 2143855872,
- 2143950592,
- 2144043008,
- 2144132864,
- 2144220416,
- 2144305664,
- 2144388608,
- 2144469504,
- 2144548224,
- 2144624896,
- 2144699648,
- 2144772352,
- 2144843264,
- 2144912256,
- 2144979328,
- 2145044864,
- 2145108480,
- 2145170560,
- 2145231104,
- 2145289856,
- 2145347200,
- 2145403008,
- 2145457408,
- 2145510400,
- 2145561984,
- 2145612160,
- 2145661056,
- 2145708672,
- 2145755136,
- 2145800192,
- 2145844224,
- 2145887104,
- 2145928832,
- 2145969408,
- 2146008960,
- 2146047616,
- 2146085120,
- 2146121600,
- 2146157184,
- 2146191872,
- 2146225664,
- 2146258560,
- 2146290560,
- 2146321792,
- 2146352128,
- 2146381696,
- 2146410496,
- 2146438528,
- 2146465920,
- 2146492416,
- 2146518400,
- 2146543616,
- 2146568192,
- 2146592128,
- 2146615424,
- 2146638080,
- 2146660224,
- 2146681728,
- 2146702720,
- 2146723072,
- 2146743040,
- 2146762368,
- 2146781184,
- 2146799616,
- 2146817408,
- 2146834816,
- 2146851840,
- 2146868352,
- 2146884352,
- 2146900096,
- 2146915328,
- 2146930176,
- 2146944640,
- 2146958720,
- 2146972416,
- 2146985856,
- 2146998784,
- 2147011456,
- 2147023872,
- 2147035904,
- 2147047552,
- 2147058944,
- 2147070080,
- 2147080832,
- 2147091456,
- 2147101696,
- 2147111680,
- 2147121408,
- 2147130880,
- 2147140096,
- 2147149056,
- 2147157760,
- 2147166336,
- 2147174656,
- },
- {
- 2106670080,
- 2107727232,
- 2108757120,
- 2109760640,
- 2110738432,
- 2111691008,
- 2112619136,
- 2113523328,
- 2114404352,
- 2115262592,
- 2116098816,
- 2116913408,
- 2117707136,
- 2118480256,
- 2119233536,
- 2119967360,
- 2120682240,
- 2121378688,
- 2122057088,
- 2122717952,
- 2123361792,
- 2123988992,
- 2124599936,
- 2125195136,
- 2125774848,
- 2126339584,
- 2126889728,
- 2127425536,
- 2127947520,
- 2128456064,
- 2128951296,
- 2129433856,
- 2129903744,
- 2130361600,
- 2130807424,
- 2131241728,
- 2131664768,
- 2132076928,
- 2132478208,
- 2132869248,
- 2133250048,
- 2133620992,
- 2133982208,
- 2134334080,
- 2134676864,
- 2135010688,
- 2135335936,
- 2135652608,
- 2135961088,
- 2136261504,
- 2136554112,
- 2136839168,
- 2137116800,
- 2137387136,
- 2137650560,
- 2137907072,
- 2138156928,
- 2138400256,
- 2138637184,
- 2138867968,
- 2139092864,
- 2139311744,
- 2139524992,
- 2139732736,
- 2139934976,
- 2140131968,
- 2140323840,
- 2140510720,
- 2140692736,
- 2140870016,
- 2141042688,
- 2141210752,
- 2141374592,
- 2141534080,
- 2141689344,
- 2141840640,
- 2141987968,
- 2142131456,
- 2142271232,
- 2142407424,
- 2142539904,
- 2142669056,
- 2142794752,
- 2142917248,
- 2143036544,
- 2143152640,
- 2143265792,
- 2143375872,
- 2143483264,
- 2143587712,
- 2143689472,
- 2143788544,
- 2143885056,
- 2143979136,
- 2144070656,
- 2144159872,
- 2144246656,
- 2144331264,
- 2144413568,
- 2144493824,
- 2144571904,
- 2144647936,
- 2144722048,
- 2144794240,
- 2144864512,
- 2144932864,
- 2144999552,
- 2145064448,
- 2145127680,
- 2145189248,
- 2145249152,
- 2145307520,
- 2145364480,
- 2145419776,
- 2145473792,
- 2145526272,
- 2145577472,
- 2145627264,
- 2145675776,
- 2145723008,
- 2145768960,
- 2145813760,
- 2145857408,
- 2145899904,
- 2145941376,
- 2145981696,
- 2146020864,
- 2146059136,
- 2146096384,
- 2146132608,
- 2146167936,
- 2146202368,
- 2146235776,
- 2146268416,
- 2146300160,
- 2146331136,
- 2146361216,
- 2146390528,
- 2146419200,
- 2146446976,
- 2146474112,
- 2146500480,
- 2146526208,
- 2146551168,
- 2146575488,
- 2146599296,
- 2146622464,
- 2146644864,
- 2146666880,
- 2146688128,
- 2146708992,
- 2146729216,
- 2146748928,
- 2146768128,
- 2146786816,
- 2146805120,
- 2146822784,
- 2146840064,
- 2146856960,
- 2146873344,
- 2146889216,
- 2146904832,
- 2146919936,
- 2146934656,
- 2146948992,
- 2146962944,
- 2146976640,
- 2146989824,
- 2147002752,
- 2147015296,
- 2147027584,
- 2147039488,
- 2147051136,
- 2147062400,
- 2147073408,
- 2147084160,
- 2147094528,
- 2147104768,
- 2147114624,
- 2147124352,
- 2147133696,
- 2147142912,
- 2147151744,
- 2147160448,
- 2147168896,
- 2147177088,
- 2147185152,
- 2147192960,
- 2147200512,
- 2147207936,
- 2147215104,
- 2147222144,
- 2147229056,
- 2147235712,
- 2147242112,
- 2147248384,
- 2147254656,
- 2147260544,
- 2147266432,
- 2147272064,
- 2147277568,
- },
-
-
-};
-
/*-------------------------------------------------------------------------
* DFT Stereo ROM tables
*------------------------------------------------------------------------*/
diff --git a/lib_com/ivas_rom_com.h b/lib_com/ivas_rom_com.h
index 6cd11215df85ee5f3beec5ccd7dce360e62407d3..86538241043bf53b4f1d870da759ad9899c44318 100644
--- a/lib_com/ivas_rom_com.h
+++ b/lib_com/ivas_rom_com.h
@@ -327,7 +327,5 @@ extern const Word16 sns_1st_means_32k[2][16];
extern const Word16 ivas_param_upmx_mx_qmap[33];
-extern const Word32 release_cnst_table[4][201]; // Q31
-
/* IVAS_ROM_COM_H */
#endif
diff --git a/lib_com/ivas_rom_com_fx.c b/lib_com/ivas_rom_com_fx.c
index a7a8bdcbfd6176743ab5f8571aa3cb82905bd5fc..3d85f546fbacfa27d4a608ae65b25255af0c5b8e 100644
--- a/lib_com/ivas_rom_com_fx.c
+++ b/lib_com/ivas_rom_com_fx.c
@@ -1545,6 +1545,7 @@ const Word16 ivas_param_mc_quant_icc_fx[PARAM_MC_SZ_ICC_QUANTIZER] = {
/* from 1 to 11 bits*/ /*q factor = 8*/
const Word32 no_phi_masa_inv_fx[NO_SPHERICAL_GRIDS][MAX_NO_THETA] = {
+#ifndef FIX_1379_MASA_ANGLE_ROUND
{ 1073741824 },
{ 536870912 },
{ 536870912, 1073741824 },
@@ -1556,8 +1557,22 @@ const Word32 no_phi_masa_inv_fx[NO_SPHERICAL_GRIDS][MAX_NO_THETA] = {
{ 44739242, 45691141, 47721858, 52377649, 61356675, 76695844, 107374182, 178956970, 1073741824, 2147483647 },
{ 35791394, 35791394, 37025580, 38347922, 39768215, 42949672, 46684427, 52377649, 59652323, 71582788, 93368854, 126322567, 214748364, 2147483647 },
{ 24129029, 24129029, 24403223, 24970740, 25565281, 26512143, 27889398, 29417584, 31580641, 34087042, 37675151, 42107522, 48806446, 56512727, 71582788, 93368854, 143165576, 268435456, 2147483647 }
+#else
+ { 1073741824 },
+ { 536870912 },
+ { 536870912, 1073741824 },
+ { 268435456, 536870912 },
+ { 178956971, 306783378, 1073741824, 2147483647 },
+ { 153391689, 165191050, 238609294, 1073741824, 2147483647 },
+ { 97612893, 102261126, 126322568, 195225786, 715827883, 2147483647 },
+ { 65075262, 67108864, 74051160, 93368854, 126322568, 238609294, 2147483647 },
+ { 44739243, 45691141, 47721859, 52377650, 61356676, 76695845, 107374182, 178956971, 1073741824, 2147483647 },
+ { 35791394, 35791394, 37025580, 38347922, 39768216, 42949673, 46684427, 52377650, 59652324, 71582788, 93368854, 126322568, 214748365, 2147483647 },
+ { 24129030, 24129030, 24403223, 24970740, 25565282, 26512144, 27889398, 29417584, 31580642, 34087042, 37675152, 42107523, 48806447, 56512728, 71582788, 93368854, 143165577, 268435456, 2147483647 },
+#endif
};
+
const Word32 azimuth_cb_fx[8] = {
0, -754974720, -377487360, 377487360, -188743680, 188743680, -566231040, 566231040
};
@@ -1589,15 +1604,22 @@ const Word16 coherence_cb0_masa_Q14[DIRAC_DIFFUSE_LEVELS * 2 * MASA_NO_CV_COH] =
// q = 21
const Word32 coherence_cb0_masa_fx[DIRAC_DIFFUSE_LEVELS * 2 * MASA_NO_CV_COH] = {
- 100243, 534144, 1156579, 2068840, 2846464, 3531184, 4125936, 0, 253965, 864655, 1467377,
- 2129448, 2977326, 3768791, 0, 0, 338480, 1189924, 2035915, 2872888, 3640026, 0, 0, 0,
- 492621, 1532179, 2527278, 3470157, 0, 0, 0, 0, 499331, 1506803, 2465831, 3425697, 0,
- 0, 0, 0, 503316, 1473668, 2392221, 3406404, 0, 0, 0, 0, 737778, 1970903, 3450654, 0, 0,
- 0, 0, 0, 2097152, 0, 0, 0, 0, 0, 0, 0, 303038, 719742, 1122186, 1577897, 2117075, 2770337,
- 3648834, 0, 419849, 932603, 1440533, 2011797, 2745172, 3571240, 0, 0, 548824, 1165177,
- 1812987, 2555379, 3366138, 0, 0, 0, 695835, 1428160, 2190475, 3084910, 0, 0, 0, 0, 697093,
- 1381603, 2092957, 2970406, 0, 0, 0, 0, 708417, 1396283, 2099039, 2992426, 0, 0, 0, 0, 835924,
- 1728892, 2836607, 0, 0, 0, 0, 0, 2097152, 0, 0, 0, 0, 0, 0, 0
+ 100244, 534145, 1156579, 2068841, 2846465, 3531185, 4125937, 0,
+ 253965, 864656, 1467377, 2129448, 2977327, 3768792, 0, 0,
+ 338480, 1189924, 2035915, 2872889, 3640027, 0, 0, 0,
+ 492621, 1532179, 2527278, 3470158, 0, 0, 0, 0,
+ 499332, 1506804, 2465831, 3425698, 0, 0, 0, 0,
+ 503316, 1473669, 2392221, 3406404, 0, 0, 0, 0,
+ 737778, 1970904, 3450654, 0, 0, 0, 0, 0,
+ 2097152, 0, 0, 0, 0, 0, 0, 0,
+ 303038, 719743, 1122186, 1577897, 2117075, 2770338, 3648835, 0,
+ 419850, 932604, 1440534, 2011798, 2745172, 3571240, 0, 0,
+ 548825, 1165178, 1812988, 2555380, 3366139, 0, 0, 0,
+ 695835, 1428161, 2190475, 3084911, 0, 0, 0, 0,
+ 697093, 1381604, 2092958, 2970406, 0, 0, 0, 0,
+ 708418, 1396284, 2099040, 2992426, 0, 0, 0, 0,
+ 835925, 1728892, 2836608, 0, 0, 0, 0, 0,
+ 2097152, 0, 0, 0, 0, 0, 0, 0
};
// q = 15
@@ -1611,9 +1633,11 @@ const Word16 coherence_cb1_masa_Q15[MASA_NO_CV_COH1 * MASA_MAXIMUM_CODING_SUBBAN
// q = 21
const Word32 coherence_cb1_masa_fx[MASA_NO_CV_COH1 * MASA_MAXIMUM_CODING_SUBBANDS] = {
- -3984, 544630, -565392, 1314704, -1320157, -11534, 541484, -583847, 1357486, -1371118,
- -6081, 525546, -551551, 1362729, -1371537, -838, 533934, -540855, 1436758, -1414109,
- 3565, 528692, -519883, 1513514, -1500931
+ -3985, 544630, -565392, 1314705, -1320157,
+ -11534, 541485, -583847, 1357487, -1371118,
+ -6082, 525546, -551551, 1362729, -1371537,
+ -839, 533935, -540856, 1436759, -1414110,
+ 3565, 528692, -519884, 1513515, -1500932
};
/* Multi-channel input and output setups */
@@ -5101,4 +5125,822 @@ const Word32 ivas_fb_fr_12band_1ms_im_fx[IVAS_FB_12_1MS_LEN] = {
};
+const Word32 release_cnst_table[4][201] = // Q31
+ {
+ {
+ 1913946752,
+ 1919716352,
+ 1925351680,
+ 1930855552,
+ 1936230784,
+ 1941479808,
+ 1946605312,
+ 1951609728,
+ 1956495744,
+ 1961265792,
+ 1965922304,
+ 1970467584,
+ 1974904320,
+ 1979234560,
+ 1983460736,
+ 1987585024,
+ 1991609856,
+ 1995537280,
+ 1999369344,
+ 2003108480,
+ 2006756480,
+ 2010315520,
+ 2013787520,
+ 2017174528,
+ 2020478464,
+ 2023701248,
+ 2026844672,
+ 2029910656,
+ 2032900992,
+ 2035817344,
+ 2038661376,
+ 2041435008,
+ 2044139648,
+ 2046777088,
+ 2049348864,
+ 2051856384,
+ 2054301440,
+ 2056685312,
+ 2059009536,
+ 2061275520,
+ 2063484672,
+ 2065638272,
+ 2067737856,
+ 2069784448,
+ 2071779584,
+ 2073724416,
+ 2075620096,
+ 2077467904,
+ 2079268992,
+ 2081024512,
+ 2082735488,
+ 2084403200,
+ 2086028416,
+ 2087612544,
+ 2089156352,
+ 2090660864,
+ 2092127104,
+ 2093555968,
+ 2094948480,
+ 2096305408,
+ 2097627776,
+ 2098916352,
+ 2100172032,
+ 2101395584,
+ 2102587776,
+ 2103749504,
+ 2104881408,
+ 2105984384,
+ 2107059072,
+ 2108106112,
+ 2109126400,
+ 2110120448,
+ 2111088896,
+ 2112032512,
+ 2112951808,
+ 2113847552,
+ 2114720128,
+ 2115570304,
+ 2116398592,
+ 2117205504,
+ 2117991552,
+ 2118757504,
+ 2119503616,
+ 2120230400,
+ 2120938496,
+ 2121628288,
+ 2122300288,
+ 2122954880,
+ 2123592576,
+ 2124213760,
+ 2124818944,
+ 2125408384,
+ 2125982592,
+ 2126541952,
+ 2127086848,
+ 2127617664,
+ 2128134656,
+ 2128638336,
+ 2129128832,
+ 2129606784,
+ 2130072192,
+ 2130525568,
+ 2130967296,
+ 2131397376,
+ 2131816448,
+ 2132224640,
+ 2132622080,
+ 2133009408,
+ 2133386496,
+ 2133753856,
+ 2134111744,
+ 2134460288,
+ 2134799744,
+ 2135130368,
+ 2135452416,
+ 2135766144,
+ 2136071680,
+ 2136369152,
+ 2136659072,
+ 2136941312,
+ 2137216256,
+ 2137484160,
+ 2137744896,
+ 2137998976,
+ 2138246400,
+ 2138487424,
+ 2138722176,
+ 2138950656,
+ 2139173376,
+ 2139390208,
+ 2139601408,
+ 2139807104,
+ 2140007424,
+ 2140202624,
+ 2140392576,
+ 2140577664,
+ 2140758016,
+ 2140933504,
+ 2141104512,
+ 2141271040,
+ 2141433216,
+ 2141591168,
+ 2141745024,
+ 2141894912,
+ 2142040832,
+ 2142182912,
+ 2142321408,
+ 2142456192,
+ 2142587392,
+ 2142715264,
+ 2142839808,
+ 2142961152,
+ 2143079296,
+ 2143194240,
+ 2143306240,
+ 2143415424,
+ 2143521664,
+ 2143625216,
+ 2143725952,
+ 2143824128,
+ 2143919744,
+ 2144012800,
+ 2144103424,
+ 2144191744,
+ 2144277760,
+ 2144361472,
+ 2144443136,
+ 2144522496,
+ 2144599936,
+ 2144675200,
+ 2144748544,
+ 2144820096,
+ 2144889600,
+ 2144957440,
+ 2145023488,
+ 2145087744,
+ 2145150336,
+ 2145211264,
+ 2145270656,
+ 2145328512,
+ 2145384832,
+ 2145439616,
+ 2145493120,
+ 2145545088,
+ 2145595776,
+ 2145645056,
+ 2145693184,
+ 2145739904,
+ 2145785472,
+ 2145829888,
+ 2145873152,
+ 2145915136,
+ 2145956224,
+ 2145996032,
+ 2146034944,
+ 2146072832,
+ 2146109696,
+ 2146145664,
+ 2146180608,
+ 2146214656,
+ 2146247808,
+ },
+ {
+ 2027355264,
+ 2030408704,
+ 2033386624,
+ 2036290944,
+ 2039123328,
+ 2041885440,
+ 2044578944,
+ 2047205376,
+ 2049766528,
+ 2052263680,
+ 2054698496,
+ 2057072384,
+ 2059387008,
+ 2061643520,
+ 2063843328,
+ 2065987968,
+ 2068078720,
+ 2070116864,
+ 2072103552,
+ 2074040192,
+ 2075927936,
+ 2077767936,
+ 2079561472,
+ 2081309568,
+ 2083013376,
+ 2084673920,
+ 2086292352,
+ 2087869696,
+ 2089406976,
+ 2090905216,
+ 2092365184,
+ 2093788032,
+ 2095174528,
+ 2096525824,
+ 2097842432,
+ 2099125632,
+ 2100375808,
+ 2101594240,
+ 2102781312,
+ 2103938048,
+ 2105065216,
+ 2106163456,
+ 2107233536,
+ 2108276096,
+ 2109292032,
+ 2110281728,
+ 2111246080,
+ 2112185728,
+ 2113101056,
+ 2113992960,
+ 2114861824,
+ 2115708288,
+ 2116532992,
+ 2117336448,
+ 2118119168,
+ 2118881792,
+ 2119624704,
+ 2120348416,
+ 2121053440,
+ 2121740288,
+ 2122409344,
+ 2123061120,
+ 2123696128,
+ 2124314624,
+ 2124917120,
+ 2125504128,
+ 2126075776,
+ 2126632832,
+ 2127175296,
+ 2127703808,
+ 2128218624,
+ 2128720000,
+ 2129208448,
+ 2129684352,
+ 2130147712,
+ 2130599168,
+ 2131038976,
+ 2131467264,
+ 2131884416,
+ 2132290816,
+ 2132686592,
+ 2133072256,
+ 2133447680,
+ 2133813504,
+ 2134169856,
+ 2134516864,
+ 2134854784,
+ 2135184000,
+ 2135504640,
+ 2135816960,
+ 2136121216,
+ 2136417536,
+ 2136706048,
+ 2136987136,
+ 2137260928,
+ 2137527552,
+ 2137787264,
+ 2138040192,
+ 2138286592,
+ 2138526464,
+ 2138760192,
+ 2138987776,
+ 2139209472,
+ 2139425408,
+ 2139635712,
+ 2139840512,
+ 2140039936,
+ 2140234240,
+ 2140423424,
+ 2140607744,
+ 2140787200,
+ 2140962048,
+ 2141132288,
+ 2141298048,
+ 2141459584,
+ 2141616896,
+ 2141769984,
+ 2141919232,
+ 2142064512,
+ 2142205952,
+ 2142343808,
+ 2142478080,
+ 2142608768,
+ 2142736128,
+ 2142860032,
+ 2142980864,
+ 2143098368,
+ 2143212928,
+ 2143324544,
+ 2143433088,
+ 2143538944,
+ 2143641984,
+ 2143742336,
+ 2143840000,
+ 2143935232,
+ 2144027904,
+ 2144118144,
+ 2144206080,
+ 2144291712,
+ 2144375168,
+ 2144456320,
+ 2144535424,
+ 2144612480,
+ 2144687488,
+ 2144760448,
+ 2144831616,
+ 2144900992,
+ 2144968448,
+ 2145034112,
+ 2145098112,
+ 2145160448,
+ 2145221248,
+ 2145280256,
+ 2145337856,
+ 2145393920,
+ 2145448576,
+ 2145501696,
+ 2145553536,
+ 2145603968,
+ 2145653120,
+ 2145700992,
+ 2145747456,
+ 2145792896,
+ 2145837056,
+ 2145880064,
+ 2145922048,
+ 2145962880,
+ 2146002560,
+ 2146041344,
+ 2146078976,
+ 2146115712,
+ 2146151424,
+ 2146186240,
+ 2146220160,
+ 2146253184,
+ 2146285312,
+ 2146316672,
+ 2146347136,
+ 2146376832,
+ 2146405760,
+ 2146433920,
+ 2146461440,
+ 2146488192,
+ 2146514176,
+ 2146539520,
+ 2146564224,
+ 2146588160,
+ 2146611584,
+ 2146634368,
+ 2146656640,
+ 2146678272,
+ 2146699264,
+ 2146719744,
+ 2146739712,
+ 2146759168,
+ 2146778112,
+ 2146796544,
+ 2146814464,
+ 2146832000,
+ 2146849024,
+ 2146865664,
+ },
+ {
+ 2086555136,
+ 2088125824,
+ 2089656576,
+ 2091148416,
+ 2092602240,
+ 2094018944,
+ 2095399680,
+ 2096745088,
+ 2098056192,
+ 2099333888,
+ 2100578816,
+ 2101792000,
+ 2102974080,
+ 2104125824,
+ 2105248128,
+ 2106341760,
+ 2107407232,
+ 2108445440,
+ 2109456896,
+ 2110442496,
+ 2111402624,
+ 2112338176,
+ 2113249664,
+ 2114137728,
+ 2115002880,
+ 2115845760,
+ 2116666880,
+ 2117466880,
+ 2118246272,
+ 2119005568,
+ 2119745280,
+ 2120465920,
+ 2121167872,
+ 2121851776,
+ 2122517888,
+ 2123166976,
+ 2123799168,
+ 2124414976,
+ 2125014912,
+ 2125599360,
+ 2126168704,
+ 2126723200,
+ 2127263360,
+ 2127789568,
+ 2128302208,
+ 2128801408,
+ 2129287808,
+ 2129761536,
+ 2130222976,
+ 2130672512,
+ 2131110272,
+ 2131536768,
+ 2131952128,
+ 2132356736,
+ 2132750848,
+ 2133134720,
+ 2133508736,
+ 2133872896,
+ 2134227584,
+ 2134573184,
+ 2134909696,
+ 2135237504,
+ 2135556736,
+ 2135867648,
+ 2136170624,
+ 2136465536,
+ 2136752896,
+ 2137032832,
+ 2137305344,
+ 2137570816,
+ 2137829376,
+ 2138081280,
+ 2138326528,
+ 2138565504,
+ 2138798080,
+ 2139024768,
+ 2139245440,
+ 2139460480,
+ 2139669888,
+ 2139873792,
+ 2140072320,
+ 2140265856,
+ 2140454144,
+ 2140637696,
+ 2140816384,
+ 2140990464,
+ 2141159936,
+ 2141325056,
+ 2141485824,
+ 2141642368,
+ 2141794944,
+ 2141943424,
+ 2142088064,
+ 2142228992,
+ 2142366208,
+ 2142499840,
+ 2142630016,
+ 2142756736,
+ 2142880128,
+ 2143000448,
+ 2143117440,
+ 2143231488,
+ 2143342592,
+ 2143450752,
+ 2143556096,
+ 2143658624,
+ 2143758592,
+ 2143855872,
+ 2143950592,
+ 2144043008,
+ 2144132864,
+ 2144220416,
+ 2144305664,
+ 2144388608,
+ 2144469504,
+ 2144548224,
+ 2144624896,
+ 2144699648,
+ 2144772352,
+ 2144843264,
+ 2144912256,
+ 2144979328,
+ 2145044864,
+ 2145108480,
+ 2145170560,
+ 2145231104,
+ 2145289856,
+ 2145347200,
+ 2145403008,
+ 2145457408,
+ 2145510400,
+ 2145561984,
+ 2145612160,
+ 2145661056,
+ 2145708672,
+ 2145755136,
+ 2145800192,
+ 2145844224,
+ 2145887104,
+ 2145928832,
+ 2145969408,
+ 2146008960,
+ 2146047616,
+ 2146085120,
+ 2146121600,
+ 2146157184,
+ 2146191872,
+ 2146225664,
+ 2146258560,
+ 2146290560,
+ 2146321792,
+ 2146352128,
+ 2146381696,
+ 2146410496,
+ 2146438528,
+ 2146465920,
+ 2146492416,
+ 2146518400,
+ 2146543616,
+ 2146568192,
+ 2146592128,
+ 2146615424,
+ 2146638080,
+ 2146660224,
+ 2146681728,
+ 2146702720,
+ 2146723072,
+ 2146743040,
+ 2146762368,
+ 2146781184,
+ 2146799616,
+ 2146817408,
+ 2146834816,
+ 2146851840,
+ 2146868352,
+ 2146884352,
+ 2146900096,
+ 2146915328,
+ 2146930176,
+ 2146944640,
+ 2146958720,
+ 2146972416,
+ 2146985856,
+ 2146998784,
+ 2147011456,
+ 2147023872,
+ 2147035904,
+ 2147047552,
+ 2147058944,
+ 2147070080,
+ 2147080832,
+ 2147091456,
+ 2147101696,
+ 2147111680,
+ 2147121408,
+ 2147130880,
+ 2147140096,
+ 2147149056,
+ 2147157760,
+ 2147166336,
+ 2147174656,
+ },
+ {
+ 2106670080,
+ 2107727232,
+ 2108757120,
+ 2109760640,
+ 2110738432,
+ 2111691008,
+ 2112619136,
+ 2113523328,
+ 2114404352,
+ 2115262592,
+ 2116098816,
+ 2116913408,
+ 2117707136,
+ 2118480256,
+ 2119233536,
+ 2119967360,
+ 2120682240,
+ 2121378688,
+ 2122057088,
+ 2122717952,
+ 2123361792,
+ 2123988992,
+ 2124599936,
+ 2125195136,
+ 2125774848,
+ 2126339584,
+ 2126889728,
+ 2127425536,
+ 2127947520,
+ 2128456064,
+ 2128951296,
+ 2129433856,
+ 2129903744,
+ 2130361600,
+ 2130807424,
+ 2131241728,
+ 2131664768,
+ 2132076928,
+ 2132478208,
+ 2132869248,
+ 2133250048,
+ 2133620992,
+ 2133982208,
+ 2134334080,
+ 2134676864,
+ 2135010688,
+ 2135335936,
+ 2135652608,
+ 2135961088,
+ 2136261504,
+ 2136554112,
+ 2136839168,
+ 2137116800,
+ 2137387136,
+ 2137650560,
+ 2137907072,
+ 2138156928,
+ 2138400256,
+ 2138637184,
+ 2138867968,
+ 2139092864,
+ 2139311744,
+ 2139524992,
+ 2139732736,
+ 2139934976,
+ 2140131968,
+ 2140323840,
+ 2140510720,
+ 2140692736,
+ 2140870016,
+ 2141042688,
+ 2141210752,
+ 2141374592,
+ 2141534080,
+ 2141689344,
+ 2141840640,
+ 2141987968,
+ 2142131456,
+ 2142271232,
+ 2142407424,
+ 2142539904,
+ 2142669056,
+ 2142794752,
+ 2142917248,
+ 2143036544,
+ 2143152640,
+ 2143265792,
+ 2143375872,
+ 2143483264,
+ 2143587712,
+ 2143689472,
+ 2143788544,
+ 2143885056,
+ 2143979136,
+ 2144070656,
+ 2144159872,
+ 2144246656,
+ 2144331264,
+ 2144413568,
+ 2144493824,
+ 2144571904,
+ 2144647936,
+ 2144722048,
+ 2144794240,
+ 2144864512,
+ 2144932864,
+ 2144999552,
+ 2145064448,
+ 2145127680,
+ 2145189248,
+ 2145249152,
+ 2145307520,
+ 2145364480,
+ 2145419776,
+ 2145473792,
+ 2145526272,
+ 2145577472,
+ 2145627264,
+ 2145675776,
+ 2145723008,
+ 2145768960,
+ 2145813760,
+ 2145857408,
+ 2145899904,
+ 2145941376,
+ 2145981696,
+ 2146020864,
+ 2146059136,
+ 2146096384,
+ 2146132608,
+ 2146167936,
+ 2146202368,
+ 2146235776,
+ 2146268416,
+ 2146300160,
+ 2146331136,
+ 2146361216,
+ 2146390528,
+ 2146419200,
+ 2146446976,
+ 2146474112,
+ 2146500480,
+ 2146526208,
+ 2146551168,
+ 2146575488,
+ 2146599296,
+ 2146622464,
+ 2146644864,
+ 2146666880,
+ 2146688128,
+ 2146708992,
+ 2146729216,
+ 2146748928,
+ 2146768128,
+ 2146786816,
+ 2146805120,
+ 2146822784,
+ 2146840064,
+ 2146856960,
+ 2146873344,
+ 2146889216,
+ 2146904832,
+ 2146919936,
+ 2146934656,
+ 2146948992,
+ 2146962944,
+ 2146976640,
+ 2146989824,
+ 2147002752,
+ 2147015296,
+ 2147027584,
+ 2147039488,
+ 2147051136,
+ 2147062400,
+ 2147073408,
+ 2147084160,
+ 2147094528,
+ 2147104768,
+ 2147114624,
+ 2147124352,
+ 2147133696,
+ 2147142912,
+ 2147151744,
+ 2147160448,
+ 2147168896,
+ 2147177088,
+ 2147185152,
+ 2147192960,
+ 2147200512,
+ 2147207936,
+ 2147215104,
+ 2147222144,
+ 2147229056,
+ 2147235712,
+ 2147242112,
+ 2147248384,
+ 2147254656,
+ 2147260544,
+ 2147266432,
+ 2147272064,
+ 2147277568,
+ },
+
+
+ };
+
/* clang-format on */
diff --git a/lib_com/ivas_rom_com_fx.h b/lib_com/ivas_rom_com_fx.h
index 3344a35d208b8ed225895c9bab0f66db88ac7978..54a620b154dc0410d69c1bb5ef3befe6dfc97d75 100644
--- a/lib_com/ivas_rom_com_fx.h
+++ b/lib_com/ivas_rom_com_fx.h
@@ -292,4 +292,10 @@ extern const Word32 ivas_fb_fr_12band_1ms_re_fx[IVAS_FB_12_1MS_LEN];
extern const Word32 ivas_fb_fr_12band_1ms_im_fx[IVAS_FB_12_1MS_LEN];
+/*----------------------------------------------------------------------*
+ * Limiter tables
+ *-----------------------------------------------------------------------*/
+
+extern const Word32 release_cnst_table[4][201]; // Q31
+
#endif
diff --git a/lib_com/ivas_rotation_com.c b/lib_com/ivas_rotation_com.c
index 6e31f96d5b13bed79fd99209745e40ee8752b95b..78a0837ab41197d83544338508a5575c5876201d 100644
--- a/lib_com/ivas_rotation_com.c
+++ b/lib_com/ivas_rotation_com.c
@@ -78,8 +78,6 @@ void Euler2Quat_fx(
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-
/*-------------------------------------------------------------------------
* Copy_Quat_fx()
*
@@ -234,7 +232,6 @@ void Quat2EulerDegree_fx(
return;
}
-#endif
/*-------------------------------------------------------------------------
* deg2rad()
diff --git a/lib_com/ivas_sba_config_fx.c b/lib_com/ivas_sba_config_fx.c
index b3a0806d4af63519605efa1c7ff5da40ba095d2e..6dbe215ea842e24be517c491a7fab7b0aa95ce02 100644
--- a/lib_com/ivas_sba_config_fx.c
+++ b/lib_com/ivas_sba_config_fx.c
@@ -60,6 +60,7 @@ void ivas_sba_config_fx(
Word16 *element_mode /* o : element mode of the core coder */
)
{
+#ifndef FIX_993_REMOVE_SBA_GET_ORDER
test();
IF( sba_order < 0 && nb_channels < 0 )
{
@@ -74,6 +75,9 @@ void ivas_sba_config_fx(
nb_channels = ivas_sba_get_nchan_fx( sba_order, sba_planar );
}
ELSE
+#else
+ IF( nb_channels > 0 )
+#endif
{
IF( sba_planar )
{
@@ -124,7 +128,7 @@ void ivas_sba_config_fx(
return;
}
-
+#ifndef FIX_993_REMOVE_SBA_GET_ORDER
/*-------------------------------------------------------------------*
* ivas_sba_get_order()
*
@@ -174,7 +178,7 @@ Word16 ivas_sba_get_order_fx(
return ( sba_order );
}
-
+#endif
/*-------------------------------------------------------------------*
* ivas_sba_get_analysis_order()
diff --git a/lib_com/ivas_sns_com_fx.c b/lib_com/ivas_sns_com_fx.c
index fa64b0092d6de30d78c2199930ea32e99629cb3a..f1e44be78bdfea1016e77b24dd00e2433ca3d2cb 100644
--- a/lib_com/ivas_sns_com_fx.c
+++ b/lib_com/ivas_sns_com_fx.c
@@ -200,9 +200,16 @@ void sns_compute_scf_fx(
/* mean = sum / FDNS_NPTS;
-Q6 is for division with FDNS_NPTS and -Q1 is to reduce Q by one */
- mean = W_shl_sat_l( sum, -Q7 ); // q_out
- nf = Mpy_32_32( mean, 214748 /* powf( 10.0f, -4.0f ) in Q31 */ ); // q_out
- nf = L_max( nf, L_shl( 256, sub( q_out, 40 ) ) /* powf( 2.0f, -32.0f ) in Q40 */ ); // q_out
+ mean = W_shl_sat_l( sum, -Q7 ); // q_out
+ nf = Mpy_32_32( mean, 214748 /* powf( 10.0f, -4.0f ) in Q31 */ ); // q_out
+
+ IF( LE_32( nf, L_shl_sat( 256, sub( q_out, 40 ) ) ) ) /* powf( 2.0f, -32.0f ) in Q40 */
+ {
+ nf = 256;
+ move32();
+ q_out = 40;
+ move16();
+ }
FOR( i = 0; i < FDNS_NPTS; i++ )
{
diff --git a/lib_com/ivas_spar_com_fx.c b/lib_com/ivas_spar_com_fx.c
index 8aaeb7f63b97fdf8e81aa76c9798808e0569ea29..c2ad11e2614664529fae09ba2f0bb0256349b627 100644
--- a/lib_com/ivas_spar_com_fx.c
+++ b/lib_com/ivas_spar_com_fx.c
@@ -985,7 +985,7 @@ static void ivas_get_pred_coeffs_enc_fx(
move32();
dm_g_q[b] = Q29;
move16();
- DM_F[b] = BASOP_Util_Divide3232_Scale_cadence( Mpy_32_32( dm_g[b], num_f ), den_f, &s_dm_f ); // Q=(31-(s_dm_f+2+num_f_e-den_f_e))
+ DM_F[b] = BASOP_Util_Divide3232_Scale_newton( Mpy_32_32( dm_g[b], num_f ), den_f, &s_dm_f ); // Q=(31-(s_dm_f+2+num_f_e-den_f_e))
move32();
DM_F_q[b] = sub( 31, add( s_dm_f, sub( add( 2, num_f_e ), den_f_e ) ) );
move16();
@@ -1514,7 +1514,7 @@ static void ivas_get_pred_coeffs_fx(
den_f = L_max( den_f, 1 ); // Q=31-den_f_e
dm_g[b] = activew_quad_thresh; // Q29
move32();
- DM_F[b] = BASOP_Util_Divide3232_Scale_cadence( Mpy_32_32( dm_g[b], num_f ), den_f, &s_dm_f ); // s_dm_f+2+num_f_e-den_f_e
+ DM_F[b] = BASOP_Util_Divide3232_Scale_newton( Mpy_32_32( dm_g[b], num_f ), den_f, &s_dm_f ); // s_dm_f+2+num_f_e-den_f_e
move32();
s_dm_f = add( s_dm_f, sub( add( 2, num_f_e ), den_f_e ) ); /*Resultant exp for DM_F s_dm_f +( 2 + num_f_e ) - den_f_e*/
div_shift = sub( s_dm_f, 1 );
diff --git a/lib_com/ivas_transient_det_fx.c b/lib_com/ivas_transient_det_fx.c
index 3b9a8cfd7ebf1e22ec6513d4a5f5229e53c9d53d..fb8679ebc8e218ddcf1ce12ad0bcc59dcc899a35 100644
--- a/lib_com/ivas_transient_det_fx.c
+++ b/lib_com/ivas_transient_det_fx.c
@@ -353,7 +353,7 @@ static Word32 ivas_calc_duck_gain_fx(
test();
IF( ( env_1 != 0 ) && ( env_2 != 0 ) )
{
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( env_1, env_2, &tmp_e );
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( env_1, env_2, &tmp_e );
L_tmp = L_shl( L_tmp, add( sub( env1_e, env2_e ), tmp_e ) );
duck_gain_out = Mpy_32_32( duck_mult_fac, L_tmp ); /*Q29*/
diff --git a/lib_com/lag_wind.c b/lib_com/lag_wind_fx.c
similarity index 100%
rename from lib_com/lag_wind.c
rename to lib_com/lag_wind_fx.c
diff --git a/lib_com/lerp.c b/lib_com/lerp_fx.c
similarity index 100%
rename from lib_com/lerp.c
rename to lib_com/lerp_fx.c
diff --git a/lib_com/longarith.c b/lib_com/longarith.c
index 72a763de3dc933db4fae6d7de78b0893b436a2c9..c5ace652c336a07802482ef76ace28690b51b749 100644
--- a/lib_com/longarith.c
+++ b/lib_com/longarith.c
@@ -64,14 +64,14 @@ void longadd(
assert( lena >= lenb );
for ( h = 0; h < lenb; h++ )
{
- carry += ( (uint32_t) a[h] ) + ( (uint32_t) b[h] );
+ carry += ( (UWord32) a[h] ) + ( (UWord32) b[h] );
a[h] = (UWord16) carry;
carry = carry >> 16;
}
for ( ; h < lena; h++ )
{
- carry = ( (uint32_t) a[h] ) + carry;
+ carry = ( (UWord32) a[h] ) + carry;
a[h] = (UWord16) carry;
carry = carry >> 16;
}
diff --git a/lib_com/lpc_tools_fx.c b/lib_com/lpc_tools_fx.c
index bde05b4f4ebc1d9ab7a4ac99776af5f25b97036d..1035f017a5b95b59efef409b5dead1f1e95ea326 100644
--- a/lib_com/lpc_tools_fx.c
+++ b/lib_com/lpc_tools_fx.c
@@ -1114,7 +1114,7 @@ static void lsp_reorder(
{
lsp[i] = s_max( lsp[i], lsp_min );
move16();
- lsp_min = add( lsp[i], min_dist );
+ lsp_min = add_sat( lsp[i], min_dist );
}
/* Reverify the LSF ordering and minimum GAP in the reverse order (security) */
diff --git a/lib_com/lsf_tools_fx.c b/lib_com/lsf_tools_fx.c
index 5f0f5aaec035d6eeb5ff1785b03453e6bf58056c..4b3e200a4560e8568d04886fa6f6a97f7cc97798 100644
--- a/lib_com/lsf_tools_fx.c
+++ b/lib_com/lsf_tools_fx.c
@@ -2863,40 +2863,39 @@ Word16 qlsf_ARSN_tcvq_Dec_16k_fx(
}
/*======================================================================*/
-/* FUNCTION : lsf_syn_mem_backup_fx */
+/* FUNCTION : lsf_syn_mem_backup_fx */
/*----------------------------------------------------------------------*/
/* PURPOSE : back-up synthesis filter memory and LSF qunatizer memories */
/*----------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ (Word16*) lsp_new : LSP vector to quantize */
-/* _ (Word16*) lsf_new : quantized LSF vector */
-/* _ (Word16*) lsp_mid : mid-frame LSP vector */
-/* _ (Encoder_State) st_fx : Encoder state Structure */
-/*-----------------------------------------------------------------------*/
-/* INPUT/OUTPUT ARGUMENTS : */
-/* _None */
-/*-----------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ (Word16) clip_var : pitch clipping state var */
-/* _ (Word16*) mem_AR : quantizer memory for AR model */
-/* _ (Word16*) mem_MA : quantizer memory for MA model */
-/* _ (Word16*) lsp_new_bck : LSP vector to quantize- backup */
-/* _ (Word16*) lsf_new_bck : quantized LSF vector - backup */
-/* _ (Word16*) lsp_mid_bck : mid-frame LSP vector - backup */
+/* INPUT ARGUMENTS : */
+/* _ (Word16*) lsp_new : LSP vector to quantize */
+/* _ (Word16*) lsf_new : quantized LSF vector */
+/* _ (Word16*) lsp_mid : mid-frame LSP vector */
+/* _ (Encoder_State) st_fx : Encoder state Structure */
+/*----------------------------------------------------------------------*/
+/* INPUT/OUTPUT ARGUMENTS : */
+/* _None */
+/*----------------------------------------------------------------------*/
+/* OUTPUT ARGUMENTS : */
+/* _ (Word16) clip_var : pitch clipping state var */
+/* _ (Word16*) mem_AR : quantizer memory for AR model */
+/* _ (Word16*) mem_MA : quantizer memory for MA model */
+/* _ (Word16*) lsp_new_bck : LSP vector to quantize- backup */
+/* _ (Word16*) lsf_new_bck : quantized LSF vector - backup */
+/* _ (Word16*) lsp_mid_bck : mid-frame LSP vector - backup */
/* _ (Word16) mCb1 :counter for stationary frame after a transition frame */
-/* _ (Word32*) Bin_E : FFT Bin energy 128 *2 sets */
-/* _ (Word32*) Bin_E_old : FFT Bin energy 128 *2 sets */
-/* _ (Word16*) mem_syn_bck : synthesis filter memory */
-/* _ (Word16) mem_w0_bck : memory of the weighting filter */
-/* _ (Word16) streaklimit : LSF quantizer */
-/* _ (Word16) pstreaklen : LSF quantizer */
-/*-----------------------------------------------------------------------*/
-
-/* _ None */
-/*-----------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ None */
-/*=======================================================================*/
+/* _ (Word32*) Bin_E : FFT Bin energy 128 *2 sets */
+/* _ (Word32*) Bin_E_old : FFT Bin energy 128 *2 sets */
+/* _ (Word16*) mem_syn_bck : synthesis filter memory */
+/* _ (Word16) mem_w0_bck : memory of the weighting filter */
+/* _ (Word16) streaklimit : LSF quantizer */
+/* _ (Word16) pstreaklen : LSF quantizer */
+/*----------------------------------------------------------------------*/
+/* _ None */
+/*----------------------------------------------------------------------*/
+/* RETURN ARGUMENTS : */
+/* _ None */
+/*======================================================================*/
void lsf_syn_mem_backup_fx(
Encoder_State *st_fx, /* o: state structure */
@@ -2904,23 +2903,22 @@ void lsf_syn_mem_backup_fx(
Word32 *gc_threshold_fx, /* i: Q16 */
Word16 *clip_var_bck_fx, /* i: Q(2.56), Q14, Q7, Q0, Q14, Q14 */
Word16 *next_force_sf_bck_fx, /* i: */
-
- Word16 *lsp_new, /* o: LSP vector to quantize Q15 */
- Word16 *lsf_new, /* i: quantized LSF vector Q15 */
- Word16 *lsp_mid, /* o: mid-frame LSP vector Q15 */
- Word16 *clip_var, /* i: pitch clipping state var Q(2.56) */
- Word16 *mem_AR, /* i: quantizer memory for AR model 2.56 */
- Word16 *mem_MA, /* i: quantizer memory for MA model 2.56 */
- Word16 *lsp_new_bck, /* i: LSP vector to quantize- backup Q15 */
- Word16 *lsf_new_bck, /* o: quantized LSF vector - backup Q15 */
- Word16 *lsp_mid_bck, /* i: mid-frame LSP vector - backup Q15 */
- Word16 *mCb1, /* o: counter for stationary frame after a transition frame */
- Word32 *Bin_E, /* i: FFT Bin energy 128 *2 sets q_bin */
- Word32 *Bin_E_old, /* i: FFT Bin energy 128 sets q_bin */
- Word16 *mem_syn_bck, /* i: synthesis filter memory q */
- Word16 *mem_w0_bck, /* i: memory of the weighting filter q */
- Word16 *streaklimit, /* i:LSF quantizer Q15 */
- Word16 *pstreaklen /* i:LSF quantizer */
+ Word16 *lsp_new, /* o: LSP vector to quantize Q15 */
+ Word16 *lsf_new, /* i: quantized LSF vector Q15 */
+ Word16 *lsp_mid, /* o: mid-frame LSP vector Q15 */
+ Word16 *clip_var, /* i: pitch clipping state var Q(2.56) */
+ Word16 *mem_AR, /* i: quantizer memory for AR model 2.56 */
+ Word16 *mem_MA, /* i: quantizer memory for MA model 2.56 */
+ Word16 *lsp_new_bck, /* i: LSP vector to quantize- backup Q15 */
+ Word16 *lsf_new_bck, /* o: quantized LSF vector - backup Q15 */
+ Word16 *lsp_mid_bck, /* i: mid-frame LSP vector - backup Q15 */
+ Word16 *mCb1, /* o: counter for stationary frame after a transition frame */
+ Word32 *Bin_E, /* i: FFT Bin energy 128 *2 sets q_bin */
+ Word32 *Bin_E_old, /* i: FFT Bin energy 128 sets q_bin */
+ Word16 *mem_syn_bck, /* i: synthesis filter memory q */
+ Word16 *mem_w0_bck, /* i: memory of the weighting filter q */
+ Word16 *streaklimit, /* i:LSF quantizer Q15 */
+ Word16 *pstreaklen /* i:LSF quantizer */
)
{
Word16 i;
@@ -2985,25 +2983,31 @@ void lsf_syn_mem_backup_fx(
return;
}
+
+/*-------------------------------------------------------------------*
+ * lsf_syn_mem_backup_fx()
+ *
+ *
+ *--------------------------------------------------------------------*/
+
void lsf_syn_mem_backup_ivas_fx(
Encoder_State *st_fx, /* i: state structure */
Word16 *btilt_code_fx, /* i: tilt code Q15 */
Word32 *gc_threshold_fx, /* i: Q16 */
Word16 *clip_var_bck_fx, /* o: Q(2.56), Q14, Q7, Q0, Q14, Q14 */
Word16 *next_force_sf_bck_fx, /* o: */
-
- Word16 *lsp_new, /* i: LSP vector to quantize Q15 */
- Word16 *lsp_mid, /* i: mid-frame LSP vector Q15 */
- Word16 *clip_var, /* o: pitch clipping state var Q(2.56) */
- Word16 *mem_AR, /* o: quantizer memory for AR model Q(2.56) */
- Word16 *mem_MA, /* o: quantizer memory for AR model Q(2.56) */
- Word16 *lsp_new_bck, /* o: LSP vector to quantize- backup Q15 */
- Word16 *lsp_mid_bck, /* o: mid-frame LSP vector - backup Q15 */
- Word32 *Bin_E, /* o: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */
- Word32 *Bin_E_old, /* o: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */
- Word16 *mem_syn_bck, /* o: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */
- Word16 *mem_w0_bck, /* o: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */
- Word16 *streaklimit, /* Q15 */
+ Word16 *lsp_new, /* i: LSP vector to quantize Q15 */
+ Word16 *lsp_mid, /* i: mid-frame LSP vector Q15 */
+ Word16 *clip_var, /* o: pitch clipping state var Q(2.56) */
+ Word16 *mem_AR, /* o: quantizer memory for AR model Q(2.56) */
+ Word16 *mem_MA, /* o: quantizer memory for AR model Q(2.56) */
+ Word16 *lsp_new_bck, /* o: LSP vector to quantize- backup Q15 */
+ Word16 *lsp_mid_bck, /* o: mid-frame LSP vector - backup Q15 */
+ Word32 *Bin_E, /* o: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */
+ Word32 *Bin_E_old, /* o: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */
+ Word16 *mem_syn_bck, /* o: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */
+ Word16 *mem_w0_bck, /* o: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */
+ Word16 *streaklimit, /* Q15 */
Word16 *pstreaklen )
{
Word16 i;
@@ -3079,66 +3083,68 @@ void lsf_update_memory(
move16();
mem_MA[i] = sub( sub( qlsf[i], lsf_means[narrowband][i] ), mult_r( MU_MA_FX, old_mem_MA[i] ) );
}
+
+ return;
}
+
/*======================================================================*/
-/* FUNCTION : lsf_syn_mem_restore_fx */
+/* FUNCTION : lsf_syn_mem_restore_fx */
/*----------------------------------------------------------------------*/
/* PURPOSE : restore synthesis filter memory and LSF quantizer memories*/
/*----------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ (Word16) clip_var : pitch clipping state var */
-/* _ (Word16*) mem_AR : quantizer memory for AR model */
-/* _ (Word16*) mem_MA : quantizer memory for MA model */
-/* _ (Word16*) lsp_new_bck : LSP vector to quantize- backup */
-/* _ (Word16*) lsf_new_bck : quantized LSF vector - backup */
-/* _ (Word16*) lsp_mid_bck : mid-frame LSP vector - backup */
+/* INPUT ARGUMENTS : */
+/* _ (Word16) clip_var : pitch clipping state var */
+/* _ (Word16*) mem_AR : quantizer memory for AR model */
+/* _ (Word16*) mem_MA : quantizer memory for MA model */
+/* _ (Word16*) lsp_new_bck : LSP vector to quantize- backup */
+/* _ (Word16*) lsf_new_bck : quantized LSF vector - backup */
+/* _ (Word16*) lsp_mid_bck : mid-frame LSP vector - backup */
/* _ (Word16) mCb1 :counter for stationary frame after a transition frame */
-/* _ (Word32*) Bin_E : FFT Bin energy 128 *2 sets */
-/* _ (Word32*) Bin_E_old : FFT Bin energy 128 *2 sets */
-/* _ (Word16*) mem_syn_bck : synthesis filter memory */
-/* _ (Word16) mem_w0_bck : memory of the weighting filter */
-/* _ (Word16) streaklimit : LSF quantizer */
-/* _ (Word16) pstreaklen : LSF quantizer */
-/*-----------------------------------------------------------------------*/
-/* INPUT/OUTPUT ARGUMENTS : */
-/* _None */
-/*-----------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ (Word16*) lsp_new : LSP vector to quantize */
-/* _ (Word16*) lsf_new : quantized LSF vector */
-/* _ (Word16*) lsp_mid : mid-frame LSP vector */
-/* _ (Encoder_State) st_fx : Encoder state Structure */
-/*-----------------------------------------------------------------------*/
-
-/* _ None */
-/*-----------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ None */
-/*=======================================================================*/
+/* _ (Word32*) Bin_E : FFT Bin energy 128 *2 sets */
+/* _ (Word32*) Bin_E_old : FFT Bin energy 128 *2 sets */
+/* _ (Word16*) mem_syn_bck : synthesis filter memory */
+/* _ (Word16) mem_w0_bck : memory of the weighting filter */
+/* _ (Word16) streaklimit : LSF quantizer */
+/* _ (Word16) pstreaklen : LSF quantizer */
+/*----------------------------------------------------------------------*/
+/* INPUT/OUTPUT ARGUMENTS : */
+/* _None */
+/*----------------------------------------------------------------------*/
+/* OUTPUT ARGUMENTS : */
+/* _ (Word16*) lsp_new : LSP vector to quantize */
+/* _ (Word16*) lsf_new : quantized LSF vector */
+/* _ (Word16*) lsp_mid : mid-frame LSP vector */
+/* _ (Encoder_State) st_fx : Encoder state Structure */
+/*----------------------------------------------------------------------*/
+/* _ None */
+/*----------------------------------------------------------------------*/
+/* RETURN ARGUMENTS : */
+/* _ None */
+/*======================================================================*/
+
void lsf_syn_mem_restore_fx(
Encoder_State *st_fx, /* o: state structure */
Word16 btilt_code_fx, /* i: Q15 */
Word32 gc_threshold_fx, /* i: Q16 */
Word16 *clip_var_bck_fx, /* i: Q(2.56), Q14, Q7, Q0, Q14, Q14 */
Word16 next_force_sf_bck_fx, /* i: */
-
- Word16 *lsp_new, /* o: LSP vector to quantize Q15 */
- Word16 *lsf_new, /* o: quantized LSF vector Q15 */
- Word16 *lsp_mid, /* o: mid-frame LSP vector Q15 */
- Word16 clip_var, /* i: pitch clipping state var Q(2.56) */
- Word16 *mem_AR, /* i: quantizer memory for AR model Q15 */
- Word16 *mem_MA, /* i: quantizer memory for MA model Q15 */
- Word16 *lsp_new_bck, /* i: LSP vector to quantize- backup Q15 */
- Word16 *lsf_new_bck, /* i: quantized LSF vector - backup Q15 */
- Word16 *lsp_mid_bck, /* i: mid-frame LSP vector - backup Q15 */
- Word16 mCb1, /* i: counter for stationary frame after a transition frame */
- Word32 *Bin_E, /* i: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */
- Word32 *Bin_E_old, /* i: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */
- Word16 *mem_syn_bck, /* i: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */
- Word16 mem_w0_bck, /* i: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */
- Word16 streaklimit, /* i:LSF quantizer Q15 */
- Word16 pstreaklen /* i:LSF quantizer */
+ Word16 *lsp_new, /* o: LSP vector to quantize Q15 */
+ Word16 *lsf_new, /* o: quantized LSF vector Q15 */
+ Word16 *lsp_mid, /* o: mid-frame LSP vector Q15 */
+ Word16 clip_var, /* i: pitch clipping state var Q(2.56) */
+ Word16 *mem_AR, /* i: quantizer memory for AR model Q15 */
+ Word16 *mem_MA, /* i: quantizer memory for MA model Q15 */
+ Word16 *lsp_new_bck, /* i: LSP vector to quantize- backup Q15 */
+ Word16 *lsf_new_bck, /* i: quantized LSF vector - backup Q15 */
+ Word16 *lsp_mid_bck, /* i: mid-frame LSP vector - backup Q15 */
+ Word16 mCb1, /* i: counter for stationary frame after a transition frame */
+ Word32 *Bin_E, /* i: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */
+ Word32 *Bin_E_old, /* i: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */
+ Word16 *mem_syn_bck, /* i: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */
+ Word16 mem_w0_bck, /* i: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */
+ Word16 streaklimit, /* i:LSF quantizer Q15 */
+ Word16 pstreaklen /* i:LSF quantizer */
)
{
Word16 i;
@@ -3301,71 +3307,6 @@ Word16 tcxlpc_get_cdk(
return cdk;
}
-#ifdef IVAS_MSVQ
-/*--------------------------------------------------------------------------*
- * dec_FDCNG_MSVQ_stage1()
- *
- *
- *--------------------------------------------------------------------------*/
-
-void dec_FDCNG_MSVQ_stage1(
- int16_t j_full, /* i : index full range */
- int16_t n, /* i : dimension to generate */
- const float *invTrfMatrix, /* i : IDCT matrix for synthesis */
- const DCTTYPE idcttype, /* i : specify which IDCT */
- float *uq, /* o : synthesized stage1 vector */
- Word16 *uq_ind /* o : synthesized stage1 vector in BASOP */
-)
-{
- int16_t col, segm_ind, j;
- float dct_vec[FDCNG_VQ_MAX_LEN];
- float idct_vec[FDCNG_VQ_MAX_LEN];
- const Word8 *cbpW8;
- const Word16 *dct_col_shift_tab;
-
- assert( n <= FDCNG_VQ_MAX_LEN );
- assert( n >= FDCNG_VQ_DCT_MINTRUNC );
-
- segm_ind = 0;
- for ( col = 1; col <= FDCNG_VQ_DCT_NSEGM; col++ )
- {
- if ( j_full >= cdk1_ivas_cum_entries_per_segment[col] )
- {
- segm_ind++;
- }
- }
-
- j = j_full - cdk1_ivas_cum_entries_per_segment[segm_ind]; /* j is the local segment index */
-
- assert( j < cdk1_ivas_entries_per_segment[segm_ind] );
-
- /* Word8 column variable Qx storage*/
- cbpW8 = cdk_37bits_ivas_stage1_W8Qx_dct_sections[segm_ind]; /* Word8 storage fixed ptr_init */
- cbpW8 += j * cdk1_ivas_cols_per_segment[segm_ind]; /* adaptive ptr init */
- dct_col_shift_tab = stage1_dct_col_syn_shift[segm_ind];
-
- for ( col = 0; col < cdk1_ivas_cols_per_segment[segm_ind]; col++ )
- {
- dct_vec[col] = (float) shl( (Word16) cbpW8[col], dct_col_shift_tab[col] );
- /* LOGIC( 1 ) , SHIFT( 1 );
- in BASOP: s_and(for W8->W16), shl()
- */
- }
- dctT2_N_apply_matrix( (const float *) dct_vec, idct_vec, cdk1_ivas_cols_per_segment[segm_ind], n, invTrfMatrix, FDCNG_VQ_DCT_MAXTRUNC, idcttype );
-
- /*scale down to original fdcngvq domain and move to Q0 */
- v_multc( idct_vec, fdcng_dct_scaleF[1], idct_vec, n );
- /* fdcng_dct_scaleF[1] --> 0.0625-->scale down from search Q4 domain to Q0 ,
- not really relevant for BASOP loop */
-
- /*add common mid fdcng vector, in fdcng bands domain */
- v_add( idct_vec, cdk1r_tr_midQ_truncQ, uq, n );
- assert( uq_ind == NULL );
-
- return;
-}
-
-#endif
void msvq_dec(
const Word16 *const *cb, /* i : Codebook (indexed cb[*stages][levels][p]) (14Q1*1.28)*/
const Word16 dims[], /* i : Dimension of each codebook stage (NULL: full dim.) */
@@ -3374,11 +3315,7 @@ void msvq_dec(
const Word16 N, /* i : Vector dimension */
const Word16 maxN, /* i : Codebook dimension */
const Word16 Idx[], /* i : Indices */
-#ifdef IVAS_MSVQ
- const int16_t applyIDCT_flag, /* i : applyIDCT flag */
- const float *invTrfMatrix, /* i : matrix for IDCT synthesis */
-#endif
- Word16 *uq /* o : quantized vector (14Q1*1.28)*/
+ Word16 *uq /* o : quantized vector (14Q1*1.28)*/
)
{
Word16 i, j, offset;
@@ -3414,15 +3351,6 @@ void msvq_dec(
start = offs[i];
move16();
}
-#ifdef IVAS_MSVQ
- test();
- IF( i == 0 && applyIDCT_flag != 0 )
- {
- assert( start == 0 );
- dec_FDCNG_MSVQ_stage1( Idx[0], N, invTrfMatrix, IDCT_T2_XX_24, uq, uq_ind ); /* IDCT_T2 N=24 used for all synthesis */
- }
- ELSE
-#endif
{
/*vr_add( uq+start, cb[i]+Idx[i]*maxn, uq+start, n );, where uq = a zero vector*/
offset = i_mult2( Idx[i], N34 );
@@ -4499,217 +4427,3 @@ void create_IDCT_N_Matrix_fx(
return;
}
-#ifdef IVAS_MSVQ
-
-/*-------------------------------------------------------------------*
- * dctT2_N_apply_matrix()
- *
- * dct/idct truncated matrix appl. for DCT basis vector lengths of N
- *-------------------------------------------------------------------*/
-
-void dctT2_N_apply_matrix(
- const float *input, /* i : input in fdcng or DCT(fdcng) domain */
- float *output, /* o : output in DCT(fdcng) or fdcng ordomain */
- const int16_t dct_dim, /* i : dct processing dim possibly truncated */
- const int16_t fdcngvq_dim, /* i : fdcng domain length */
- const float *matrix, /* i : IDCT matrix */
- const int16_t matrix_row_dim, /* i : */
- const DCTTYPE dcttype /* i : matrix operation type */
-)
-{
- int16_t i, j, dim_in, dim_out;
- int16_t mat_step_col, mat_step_row, mat_step_col_flag;
- const float *pt_x, *pt_A;
- float tmp_y[FDCNG_VQ_MAX_LEN];
- float *pt_y;
-
- /* non-square DCT_N and IDCT_N matrix application,
- using a stored format of an IDCT_Nx(FDCNG_VQ_DCT_MAXTRUNC) matrix */
- /* efficiently parallelized in SIMD */
-
- assert( dct_dim <= FDCNG_VQ_DCT_MAXTRUNC );
- assert( fdcngvq_dim <= FDCNG_VQ_MAX_LEN );
-
- if ( ( dcttype & 1 ) == 0 ) /* even entries are DCTs */
- {
- /* DCT_typeII 24,21 -> XX in worst case */
- dim_in = fdcngvq_dim;
- dim_out = dct_dim;
- mat_step_col = matrix_row_dim; /* matrix maximum storage size dependent, width of first row in matrix */
- mat_step_row = 0;
- mat_step_col_flag = 1;
- assert( dcttype == DCT_T2_21_XX || dcttype == DCT_T2_24_XX );
- }
- else
- {
- assert( ( dcttype & 1 ) != 0 ); /* idct */
- dim_in = dct_dim;
- dim_out = fdcngvq_dim;
- mat_step_col = 1;
- mat_step_row = matrix_row_dim;
- mat_step_col_flag = 0;
- assert( dcttype == IDCT_T2_XX_24 );
- }
-
- pt_y = tmp_y;
- for ( i = 0; i < dim_out; i++ )
- {
- pt_x = input;
- *pt_y = 0;
-
- /* +i(DCT) or +i*maxTrunc(IDCT) */
-#define WMC_TOOL_SKIP
- pt_A = &( matrix[i * ( mat_step_row + mat_step_col_flag )] ); /* ptr indexing */
- PTR_INIT( 1 );
-#undef WMC_TOOL_SKIP
- for ( j = 0; j < dim_in; j++ )
- {
-#define WMC_TOOL_SKIP
- *pt_y += ( *pt_x++ ) * ( *pt_A );
- pt_A += mat_step_col; /* step +maxtrunc or +1 */ /* ptr indexing*/
- MAC( 1 );
-#undef WMC_TOOL_SKIP
- }
- pt_y++;
- }
-
- mvr2r( tmp_y, output, dim_out );
-
- return;
-}
-
-
-/*-------------------------------------------------------------------*
- * extend_dctN_input()
- *
- * (inputN, dctN) -> idct(N_ext) idct_N matrix application loop for
- * extending, extrapolating a DCT basis vector length of N to N_ext
- *-------------------------------------------------------------------*/
-
-void extend_dctN_input(
- const float *input, /* i : input in fdcng domain */
- const float *dct_input, /* i : input in dctN(fdcng) domain */
- const int16_t in_dim, /* i : in_dim == N */
- float *ext_sig, /* o : extended output in fdcng domain */
- const int16_t out_dim, /* i : output total dim */
- float *matrix, /* i : idct synthesis matrix N rows, n_cols columns */
- const int16_t n_cols, /* i : number of columns == DCT truncation length */
- const DCTTYPE dcttype /* i : matrix operation type */
-)
-{
- int16_t i, j, i_rev;
- const float( *ptr )[FDCNG_VQ_DCT_MAXTRUNC] = (void *) matrix;
-
- /* stored format is an IDCT_Nx(FDCNG_VQ_DCT_MAXTRUNC) matrix */
- assert( in_dim < FDCNG_VQ_MAX_LEN );
- assert( out_dim <= FDCNG_VQ_MAX_LEN );
- assert( out_dim > in_dim );
- assert( n_cols == FDCNG_VQ_DCT_MAXTRUNC ); /* for *ptr[MAX_TRUNC] adressing*/
- assert( ( dcttype & 1 ) != 0 ); /* idct tables always in use for this basis vector extension */
-
- mvr2r( input, ext_sig, in_dim ); /* copy initial part, i.e. only last/tail parts are extended */
- set_f( &( ext_sig[in_dim] ), 0.0, out_dim - in_dim );
-
- i_rev = in_dim; /*ptr init*/
- for ( i = in_dim; i < out_dim; i++ )
- { /* for each extension sample */
- /* i = 21 22 23;
- i_rev = 20 19 18; for odd dctII reflect basis vector
- */
- i_rev--;
-
- for ( j = 0; j < n_cols; j++ ) /* for each available DCT coeff */
- {
- /* DCTcoeff * reflected basis vector */
-#define WMC_TOOL_SKIP
- /* pure ptr MAC operations */
- ext_sig[i] += dct_input[j] * ptr[i_rev][j]; /* sum up scaled and extended basis vector */
- MAC( 1 );
-#undef WMC_TOOL_SKIP
- }
- }
-
- return;
-}
-
-
-/*-------------------------------------------------------------------*
- * create_IDCT_N_Matrix()
- *
- * inititate idct24 FDCNG_VQ_DCT_MAXTRUNCx N matrix in
- * RAM from a quantized compressed ROM format
- *-------------------------------------------------------------------*/
-
-void create_IDCT_N_Matrix(
- float *inv_matrixFloatQ, /* i/o: RAM buffer */
- const int16_t N, /* i : DCT length, number of time samples */
- const int16_t n_cols, /* i : number of dct coeffs (as DCT may be truncated) */
- const int16_t alloc_size /* i : RAM buffer size in elements */
-)
-{
- int16_t c, c1, r, r_flip, W16_val;
- int16_t len;
- int16_t mat_cpy_size;
- const Word16 *absval_ptr;
- const Word8 *idx_ptr;
- Word16 idx;
- float( *ptr )[FDCNG_VQ_DCT_MAXTRUNC] = (void *) inv_matrixFloatQ; /* fixed number of columns pointers, to simplifies adressing in ANSIC */
-
- absval_ptr = unique_idctT2_24coeffsQ16;
- idx_ptr = idctT2_24_compressed_idx;
- len = FDCNG_VQ_MAX_LEN;
-
- if ( N == FDCNG_VQ_MAX_LEN_WB )
- {
- absval_ptr = unique_idctT2_21coeffsQ16;
- idx_ptr = idctT2_21_compressed_idx;
- len = N;
- }
-
- assert( alloc_size >= ( n_cols * len ) ); /* enough space for the full expanded IDCT matrix */
- assert( N <= len );
-
- mat_cpy_size = ( n_cols ) * ( len >> 1 ); /* NB integer division of "len" */
-
- if ( ( len & 1 ) != 0 )
- { /* odd sized DCT with a non-reflected center row */
- mat_cpy_size += n_cols;
- }
-
- for ( c = 0; c < mat_cpy_size; c++ )
- {
- idx = (Word16) ( idx_ptr[c] );
- W16_val = absval_ptr[abs( idx )];
-
- if ( idx < 0 )
- {
- W16_val = -( W16_val );
- }
- inv_matrixFloatQ[c] = ( +1.52587890625e-05f ) * ( (float) W16_val ); /* 1.0/2.^16 scaling to a float-"Q0" , a scaling that is not done in BASOP */
- }
-
- /* for even number of coeffs DCT24,
- flip symmetry for odd, even is used to save 50% IDCT Table ROM */
- /* for an odd DCT center is not flipped e.g for DCT21 */
-
- assert( n_cols == FDCNG_VQ_DCT_MAXTRUNC );
- assert( ( n_cols & 1 ) == 0 );
-
- for ( c = 0; c < ( n_cols ); c += 2 )
- {
- c1 = c + 1;
- r_flip = len - 1;
- for ( r = 0; r < ( len / 2 ); r++, r_flip-- )
- {
-#define WMC_TOOL_SKIP
- ptr[r_flip][c] = ptr[r][c]; /* flipped */
- ptr[r_flip][c1] = -( ptr[r][c1] ); /* flipped and sign swapped */
- MOVE( 2 );
- MULT( 1 ); /* for negate */
-#undef WMC_TOOL_SKIP
- }
- }
-
- return;
-}
-#endif
diff --git a/lib_com/modif_fs.c b/lib_com/modif_fs.c
deleted file mode 100644
index 10e64a57deb9efbc548a2416db10d1ec550d66cf..0000000000000000000000000000000000000000
--- a/lib_com/modif_fs.c
+++ /dev/null
@@ -1,469 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include
-#include "cnst.h"
-#include "prot_fx.h"
-#include "rom_com.h"
-#include "wmc_auto.h"
-
-
-/* IVAS 32-bit variant */
-void Interpolate_allpass_steep_fx32(
- const Word32 *in_fx, /* i : input array of size N Qx */
- Word32 *mem_fx, /* i/o: memory Qx */
- const Word16 N, /* i : number of input samples */
- Word32 *out_fx /* o : output array of size 2*N Qx */
-)
-{
- Word16 n, k;
- Word32 temp_fx[ALLPASSSECTIONS_STEEP - 1];
-
- /* upper allpass filter chain */
- FOR( k = 0; k < N; k++ )
- {
- temp_fx[0] = Madd_32_16( mem_fx[0], in_fx[k], AP2_STEEP_FX[0] ); // Qx
- move32();
- mem_fx[0] = Msub_32_16( in_fx[k], temp_fx[0], AP2_STEEP_FX[0] ); // Qx
- move32();
-
- /* for better performance, unroll this loop */
- FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
- {
- temp_fx[n] = Madd_32_16( mem_fx[n], temp_fx[n - 1], AP2_STEEP_FX[n] ); // Qx
- move32();
- mem_fx[n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP2_STEEP_FX[n] ); // Qx
- move32();
- }
-
- out_fx[2 * k + 1] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
- mem_fx[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k + 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
- }
-
- /* lower allpass filter chain */
- FOR( k = 0; k < N; k++ )
- {
- temp_fx[0] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP], in_fx[k], AP1_STEEP_FX[0] ); // Qx
- move32();
- mem_fx[ALLPASSSECTIONS_STEEP] = Msub_32_16( in_fx[k], temp_fx[0], AP1_STEEP_FX[0] ); // Qx
- move32();
-
- /* for better performance, unroll this loop */
- FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
- {
- temp_fx[n] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP + n], temp_fx[n - 1], AP1_STEEP_FX[n] ); // Qx
- move32();
- mem_fx[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP1_STEEP_FX[n] ); // Qx
- move32();
- }
-
- out_fx[2 * k] = Madd_32_16( mem_fx[2 * ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
- mem_fx[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
- }
-
- return;
-}
-
-/* IVAS 32-bit variant */
-void Decimate_allpass_steep_fx32(
- const Word32 *in, /* i : input array of size N Qx */
- Word32 *mem, /* i/o: memory Qx */
- const Word16 N, /* i : number of input samples */
- Word32 *out /* o : output array of size N/2 Qx */
-)
-{
- Word16 n, k;
- Word32 temp[ALLPASSSECTIONS_STEEP];
-
- /* upper allpass filter chain */
- FOR( k = 0; k < N / 2; k++ )
- {
-#ifdef OPT_STEREO_32KBPS_V1
- temp[0] = Madd_32_16( mem[0], in[2 * k], AP1_STEEP_FX[0] ); // Qx
- move32();
- mem[0] = Msub_32_16( in[2 * k], temp[0], AP1_STEEP_FX[0] ); // Qx
- move32();
-
- temp[1] = Madd_32_16( mem[1], temp[0], AP1_STEEP_FX[1] ); // Qx
- move32();
- mem[1] = Msub_32_16( temp[0], temp[1], AP1_STEEP_FX[1] ); // Qx
- move32();
-
- out[k] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
- mem[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], out[k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- temp[0] = L_add( mem[0], Mpy_32_16_1( in[2 * k], AP1_STEEP_FX[0] ) ); // Qx
- move32();
- mem[0] = L_sub( in[2 * k], Mpy_32_16_1( temp[0], AP1_STEEP_FX[0] ) ); // Qx
- move32();
-
- temp[1] = L_add( mem[1], Mpy_32_16_1( temp[0], AP1_STEEP_FX[1] ) ); // Qx
- move32();
- mem[1] = L_sub( temp[0], Mpy_32_16_1( temp[1], AP1_STEEP_FX[1] ) ); // Qx
- move32();
-
- out[k] = L_add( mem[ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
- move32();
- mem[ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( out[k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
- }
-
- /* lower allpass filter chain */
-#ifdef OPT_STEREO_32KBPS_V1
- temp[0] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP], mem[2 * ALLPASSSECTIONS_STEEP], AP2_STEEP_FX[0] ); // Qx
- move32();
- mem[ALLPASSSECTIONS_STEEP] = Msub_32_16( mem[2 * ALLPASSSECTIONS_STEEP], temp[0], AP2_STEEP_FX[0] ); // Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- temp[0] = L_add( mem[ALLPASSSECTIONS_STEEP], Mpy_32_16_1( mem[2 * ALLPASSSECTIONS_STEEP], AP2_STEEP_FX[0] ) ); // Qx
- move32();
- mem[ALLPASSSECTIONS_STEEP] = L_sub( mem[2 * ALLPASSSECTIONS_STEEP], Mpy_32_16_1( temp[0], AP2_STEEP_FX[0] ) ); // Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
-
- /* for better performance, unroll this loop */
- FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
- {
-#ifdef OPT_STEREO_32KBPS_V1
- temp[n] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP + n], temp[n - 1], AP2_STEEP_FX[n] ); // Qx
- move32();
- mem[ALLPASSSECTIONS_STEEP + 1] = Msub_32_16( temp[n - 1], temp[n], AP2_STEEP_FX[n] ); // Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- temp[n] = L_add( mem[ALLPASSSECTIONS_STEEP + n], Mpy_32_16_1( temp[n - 1], AP2_STEEP_FX[n] ) ); // Qx
- move32();
- /*if ( fabs( temp[n] ) < 1e-12 )
- {
- temp[n] = sign( temp[n] ) * 1e-12f;
- }*/
- mem[ALLPASSSECTIONS_STEEP + 1] = L_sub( temp[n - 1], Mpy_32_16_1( temp[n], AP2_STEEP_FX[n] ) ); // Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
- }
-
-#ifdef OPT_STEREO_32KBPS_V1
- temp[ALLPASSSECTIONS_STEEP - 1] = Madd_32_16( mem[2 * ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
-
- mem[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- temp[ALLPASSSECTIONS_STEEP - 1] = L_add( mem[2 * ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
- move32();
-
- mem[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
- out[0] = W_round48_L( W_mac_32_16( W_mult_32_16( out[0], 16384 /*0.5 in Q15*/ ), temp[ALLPASSSECTIONS_STEEP - 1], 16384 /*0.5 in Q15*/ ) ); // Qx
- move32();
-
- FOR( k = 1; k < N / 2; k++ )
- {
-#ifdef OPT_STEREO_32KBPS_V1
- temp[0] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP], in[2 * k - 1], AP2_STEEP_FX[0] ); // Qx
- move32();
- mem[ALLPASSSECTIONS_STEEP] = Msub_32_16( in[2 * k - 1], temp[0], AP2_STEEP_FX[0] ); // Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- temp[0] = L_add( mem[ALLPASSSECTIONS_STEEP], Mpy_32_16_1( in[sub( shl( k, 1 ), 1 )], AP2_STEEP_FX[0] ) ); // Qx
- move32();
- mem[ALLPASSSECTIONS_STEEP] = L_sub( in[sub( shl( k, 1 ), 1 )], Mpy_32_16_1( temp[0], AP2_STEEP_FX[0] ) ); // Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
-
- /* for better performance, unroll this loop */
- FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
- {
-#ifdef OPT_STEREO_32KBPS_V1
- temp[n] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP + n], temp[n - 1], AP2_STEEP_FX[n] ); // Qx
- move32();
- mem[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp[n - 1], temp[n], AP2_STEEP_FX[n] ); // Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- temp[n] = L_add( mem[ALLPASSSECTIONS_STEEP + n], Mpy_32_16_1( temp[n - 1], AP2_STEEP_FX[n] ) ); // Qx
- move32();
- /*if ( fabs( temp[n] ) < 1e-12 )
- {
- temp[n] = sign( temp[n] ) * 1e-12f;
- }*/
- mem[ALLPASSSECTIONS_STEEP + n] = L_sub( temp[n - 1], Mpy_32_16_1( temp[n], AP2_STEEP_FX[n] ) ); // Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
- }
-
-#ifdef OPT_STEREO_32KBPS_V1
- temp[ALLPASSSECTIONS_STEEP - 1] = Madd_32_16( mem[2 * ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
- mem[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- temp[ALLPASSSECTIONS_STEEP - 1] = L_add( mem[2 * ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
- move32();
- mem[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
- out[k] = W_round48_L( W_mac_32_16( W_mult_32_16( out[k], 16384 /*0.5 in Q15*/ ), temp[ALLPASSSECTIONS_STEEP - 1], 16384 /*0.5 in Q15*/ ) ); // Qx
- move32();
- }
-
- /* z^(-1) */
- mem[2 * ALLPASSSECTIONS_STEEP] = in[N - 1];
- move32();
-
- return;
-}
-
-/* IVAS 32-bit variant */
-void interpolate_3_over_2_allpass_fx32(
- const Word32 *input, /* i : input signal Qx*/
- const Word16 len, /* i : number of input samples */
- Word32 *out, /* o : output signal Qx*/
- Word32 *mem /* i/o: memory Qx*/
-)
-{
- Word16 i, loop_len;
- Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */
- Word32 out1_buff[L_FRAME32k * 3];
- Word32 *out1;
- Word32 mem_temp;
- const Word16 *filt_coeff = allpass_poles_3_ov_2; // Q15
-
- out1 = out1_buff;
-
- FOR( i = 0; i < len; i++ )
- {
- /* Upper branch */
-#ifdef OPT_STEREO_32KBPS_V1
- Vu[0] = Madd_32_16( mem[0], L_sub( input[i], mem[1] ), filt_coeff[0] ); // Qx + Q15 - Q15 -> Qx
- move32();
- Vu[1] = Madd_32_16( mem[1], L_sub( Vu[0], mem[2] ), filt_coeff[1] ); // Qx + Q15 - Q15 -> Qx
- move32();
- mem[3] = Madd_32_16( mem[2], L_sub( Vu[1], mem[3] ), filt_coeff[2] ); // Qx + Q15 - Q15 -> Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- Vu[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[1] ), filt_coeff[0] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
- Vu[1] = L_add( mem[1], Mpy_32_16_1( L_sub( Vu[0], mem[2] ), filt_coeff[1] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
- mem[3] = L_add( mem[2], Mpy_32_16_1( L_sub( Vu[1], mem[3] ), filt_coeff[2] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
-
- mem[1] = Vu[0]; // Qx
- move32();
- mem[2] = Vu[1]; // Qx
- move32();
- *out1++ = mem[3]; // Qx
- move32();
-
- /* Middle branch */
-#ifdef OPT_STEREO_32KBPS_V1
- Vm[0] = Madd_32_16( mem[0], L_sub( input[i], mem[4] ), filt_coeff[3] ); // Qx + Q15 - Q15 -> Qx
- move32();
- Vm[1] = Madd_32_16( mem[4], L_sub( Vm[0], mem[5] ), filt_coeff[4] ); // Qx + Q15 - Q15 -> Qx
- move32();
- mem[6] = Madd_32_16( mem[5], L_sub( Vm[1], mem[6] ), filt_coeff[5] ); // Qx + Q15 - Q15 -> Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- Vm[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
- Vm[1] = L_add( mem[4], Mpy_32_16_1( L_sub( Vm[0], mem[5] ), filt_coeff[4] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
- mem[6] = L_add( mem[5], Mpy_32_16_1( L_sub( Vm[1], mem[6] ), filt_coeff[5] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
-
- mem[4] = Vm[0]; // Qx
- move32();
- mem[5] = Vm[1]; // Qx
- move32();
- *out1++ = mem[6]; // Qx
- move32();
-
- /* Lower branch */
-#ifdef OPT_STEREO_32KBPS_V1
- Vl[0] = Madd_32_16( mem[0], L_sub( input[i], mem[7] ), filt_coeff[6] ); // Qx + Q15 - Q15 -> Qx
- move32();
- Vl[1] = Madd_32_16( mem[7], L_sub( Vl[0], mem[8] ), filt_coeff[7] ); // Qx + Q15 - Q15 -> Qx
- move32();
- mem[9] = Madd_32_16( mem[8], L_sub( Vl[1], mem[9] ), filt_coeff[8] ); // Qx + Q15 - Q15 -> Qx
- move32();
-#else /* OPT_STEREO_32KBPS_V1 */
- Vl[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
- Vl[1] = L_add( mem[7], Mpy_32_16_1( L_sub( Vl[0], mem[8] ), filt_coeff[7] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
- mem[9] = L_add( mem[8], Mpy_32_16_1( L_sub( Vl[1], mem[9] ), filt_coeff[8] ) ); // Qx + Q15 - Q15 -> Qx
- move32();
-#endif /* OPT_STEREO_32KBPS_V1 */
-
- mem[0] = input[i]; // Qx
- move32();
- mem[7] = Vl[0]; // Qx
- move32();
- mem[8] = Vl[1]; // Qx
- move32();
- *out1++ = mem[9]; // Qx
- move32();
- }
-
- loop_len = shr( i_mult( len, 3 ), 1 );
-
- /*decimate by 2 and LPF*/
- FOR( i = 0; i < loop_len; i++ )
- {
- mem_temp = out1_buff[2 * i];
- move32();
-#ifdef OPT_STEREO_32KBPS_V1
- out[i] = Madd_32_16( Mpy_32_16_1( L_add( mem_temp, mem[10] ), 1550 ), L_add( mem[11], mem[14] ), -4965 ); // Qx + Q15 - Q15 -> Qx
- // 0.0473147f in Q15 -> 1550, -0.151521f in Q15 -> -4965
- out[i] = Madd_32_16( out[i], L_add( mem[12], mem[13] ), 20125 );
- // 0.614152f in Q15 -> 20125
-#else /* OPT_STEREO_32KBPS_V1 */
- out[i] = L_add( Mpy_32_16_1( L_add( mem_temp, mem[10] ), 1550 ), Mpy_32_16_1( L_add( mem[11], mem[14] ), -4965 ) ); // Qx + Q15 - Q15 -> Qx
- // 0.0473147f in Q15 -> 1550, -0.151521f in Q15 -> -4965
- out[i] = L_add( out[i], Mpy_32_16_1( L_add( mem[12], mem[13] ), 20125 ) );
- // 0.614152f in Q15 -> 20125
-#endif /* OPT_STEREO_32KBPS_V1 */
- mem[10] = mem[11]; // Qx
- move32();
- mem[11] = mem[12]; // Qx
- move32();
- mem[12] = mem[13]; // Qx
- move32();
- mem[13] = mem[14]; // Qx
- move32();
- mem[14] = mem_temp; // Qx
- move32();
- }
-
- return;
-}
-
-/* IVAS 32-bit variant */
-void interpolate_3_over_1_allpass_fx32(
- const Word32 *input, /* i : input signal Qx */
- const Word16 len, /* i : number of input samples */
- Word32 *out, /* o : output signal */
- Word32 *mem /* i/o: memory */
-)
-{
- Word16 i, tmp16;
- Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */
- Word32 *out1;
- Word32 mem_temp;
- const Word16 *filt_coeff = allpass_poles_3_ov_2; // Qx
-
- out1 = &out[0];
-
- FOR( i = 0; i < len; i++ )
- {
- /* Upper branch */
- Vu[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[1] ), filt_coeff[0] ) ); // Qx
- move32();
- Vu[1] = L_add_sat( mem[1], Mpy_32_16_1( L_sub( Vu[0], mem[2] ), filt_coeff[1] ) ); // Qx
- move32();
- mem[3] = L_add_sat( mem[2], Mpy_32_16_1( L_sub( Vu[1], mem[3] ), filt_coeff[2] ) ); // Qx
- move32();
-
- mem[1] = Vu[0]; // Qx
- move32();
- mem[2] = Vu[1]; // Qx
- move32();
- *out1++ = mem[3]; // Qx
- move32();
-
- /* Middle branch */
- Vm[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) ); // Qx
- move32();
- Vm[1] = L_add_sat( mem[4], Mpy_32_16_1( L_sub( Vm[0], mem[5] ), filt_coeff[4] ) ); // Qx
- move32();
- mem[6] = L_add_sat( mem[5], Mpy_32_16_1( L_sub( Vm[1], mem[6] ), filt_coeff[5] ) ); // Qx
- move32();
-
- mem[4] = Vm[0]; // Qx
- move32();
- mem[5] = Vm[1]; // Qx
- move32();
- *out1++ = mem[6]; // Qx
- move32();
-
- /* Lower branch */
- Vl[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) ); // Qx
- move32();
- Vl[1] = L_add_sat( mem[7], Mpy_32_16_1( L_sub( Vl[0], mem[8] ), filt_coeff[7] ) ); // Qx
- move32();
- mem[9] = L_add_sat( mem[8], Mpy_32_16_1( L_sub( Vl[1], mem[9] ), filt_coeff[8] ) ); // Qx
- move32();
-
- mem[0] = input[i]; // Qx
- move32();
- mem[7] = Vl[0]; // Qx
- move32();
- mem[8] = Vl[1]; // Qx
- move32();
- *out1++ = mem[9]; // Qx
- move32();
- }
-
- /*LPF*/
- tmp16 = imult1616( len, 3 );
- FOR( i = 0; i < tmp16; i++ )
- {
- mem_temp = out[i]; // Qx
- move32();
- out[i] = L_sub_sat( Mpy_32_16_1( L_add_sat( mem[12], mem[11] ), 18768 ), Mpy_32_16_1( L_add_sat( mem_temp, mem[10] ), 2424 ) ); // Qx
- // 0.572769 in Q15 -> 18768, 0.074005 in Q15 -> 2424
- move32();
- mem[10] = mem[11]; // Qx
- move32();
- mem[11] = mem[12]; // Qx
- move32();
- mem[12] = mem_temp; // Qx
- move32();
- }
-
- return;
-}
diff --git a/lib_com/modif_fs_fx.c b/lib_com/modif_fs_fx.c
index bcbff13d57bebe95c3159b1b75e34fdc517fad79..2e39af523138f176abf849628d6f8ea46e6b6a29 100644
--- a/lib_com/modif_fs_fx.c
+++ b/lib_com/modif_fs_fx.c
@@ -3,6 +3,7 @@
====================================================================================*/
#include
+#include
#include "options.h" /* Compilation switches */
#include "cnst.h" /* Common constants */
#include "prot_fx.h"
@@ -11,6 +12,8 @@
#include "rom_enc.h" /* prototypes */
#include "basop_util.h"
#include "ivas_prot_fx.h"
+#include "wmc_auto.h"
+
/*-----------------------------------------------------------------*
* Local functions
@@ -39,6 +42,7 @@
/*------------------------------------------------------------------------------*/
/* CALLED FROM : TX/RX */
/*==============================================================================*/
+
Word16 modify_Fs_ivas_fx( /* o : length of output Q0 */
const Word16 sigIn_fx[], /* i : signal to decimate Q0 */
Word16 lg, /* i : length of input Q0 */
@@ -323,6 +327,7 @@ Word16 modify_Fs_ivas_fx( /* o : length of output Q
return lg_out;
}
+
Word16 modify_Fs_fx( /* o : length of output Q0 */
const Word16 sigIn_fx[], /* i : signal to decimate Q0 */
Word16 lg, /* i : length of input Q0 */
@@ -599,6 +604,7 @@ Word16 modify_Fs_fx( /* o : length of output Q0 */
return lg_out;
}
+
/*-------------------------------------------------------------------*
* modify_Fs_intcub3m_sup()
*
@@ -911,7 +917,6 @@ Word16 modify_Fs_intcub3m_sup_fx( /* o : length of output
/* RETURN ARGUMENTS : _ None. */
/*===================================================================*/
-
void Decimate_allpass_steep_fx(
const Word16 *in_fx,
Word16 mem[], /* array of size: 2*ALLPASSSECTIONS_STEEP+1 */
@@ -1040,6 +1045,158 @@ void Decimate_allpass_steep_fx(
move16(); /* Qx */
}
+/* IVAS 32-bit variant */
+void Decimate_allpass_steep_fx32(
+ const Word32 *in, /* i : input array of size N Qx */
+ Word32 *mem, /* i/o: memory Qx */
+ const Word16 N, /* i : number of input samples */
+ Word32 *out /* o : output array of size N/2 Qx */
+)
+{
+ Word16 n, k;
+ Word32 temp[ALLPASSSECTIONS_STEEP];
+
+ /* upper allpass filter chain */
+ FOR( k = 0; k < N / 2; k++ )
+ {
+#ifdef OPT_STEREO_32KBPS_V1
+ temp[0] = Madd_32_16( mem[0], in[2 * k], AP1_STEEP_FX[0] ); // Qx
+ move32();
+ mem[0] = Msub_32_16( in[2 * k], temp[0], AP1_STEEP_FX[0] ); // Qx
+ move32();
+
+ temp[1] = Madd_32_16( mem[1], temp[0], AP1_STEEP_FX[1] ); // Qx
+ move32();
+ mem[1] = Msub_32_16( temp[0], temp[1], AP1_STEEP_FX[1] ); // Qx
+ move32();
+
+ out[k] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+ mem[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], out[k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ temp[0] = L_add( mem[0], Mpy_32_16_1( in[2 * k], AP1_STEEP_FX[0] ) ); // Qx
+ move32();
+ mem[0] = L_sub( in[2 * k], Mpy_32_16_1( temp[0], AP1_STEEP_FX[0] ) ); // Qx
+ move32();
+
+ temp[1] = L_add( mem[1], Mpy_32_16_1( temp[0], AP1_STEEP_FX[1] ) ); // Qx
+ move32();
+ mem[1] = L_sub( temp[0], Mpy_32_16_1( temp[1], AP1_STEEP_FX[1] ) ); // Qx
+ move32();
+
+ out[k] = L_add( mem[ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
+ move32();
+ mem[ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( out[k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+ }
+
+ /* lower allpass filter chain */
+#ifdef OPT_STEREO_32KBPS_V1
+ temp[0] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP], mem[2 * ALLPASSSECTIONS_STEEP], AP2_STEEP_FX[0] ); // Qx
+ move32();
+ mem[ALLPASSSECTIONS_STEEP] = Msub_32_16( mem[2 * ALLPASSSECTIONS_STEEP], temp[0], AP2_STEEP_FX[0] ); // Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ temp[0] = L_add( mem[ALLPASSSECTIONS_STEEP], Mpy_32_16_1( mem[2 * ALLPASSSECTIONS_STEEP], AP2_STEEP_FX[0] ) ); // Qx
+ move32();
+ mem[ALLPASSSECTIONS_STEEP] = L_sub( mem[2 * ALLPASSSECTIONS_STEEP], Mpy_32_16_1( temp[0], AP2_STEEP_FX[0] ) ); // Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+
+ /* for better performance, unroll this loop */
+ FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
+ {
+#ifdef OPT_STEREO_32KBPS_V1
+ temp[n] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP + n], temp[n - 1], AP2_STEEP_FX[n] ); // Qx
+ move32();
+ mem[ALLPASSSECTIONS_STEEP + 1] = Msub_32_16( temp[n - 1], temp[n], AP2_STEEP_FX[n] ); // Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ temp[n] = L_add( mem[ALLPASSSECTIONS_STEEP + n], Mpy_32_16_1( temp[n - 1], AP2_STEEP_FX[n] ) ); // Qx
+ move32();
+ /*if ( fabs( temp[n] ) < 1e-12 )
+ {
+ temp[n] = sign( temp[n] ) * 1e-12f;
+ }*/
+ mem[ALLPASSSECTIONS_STEEP + 1] = L_sub( temp[n - 1], Mpy_32_16_1( temp[n], AP2_STEEP_FX[n] ) ); // Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+ }
+
+#ifdef OPT_STEREO_32KBPS_V1
+ temp[ALLPASSSECTIONS_STEEP - 1] = Madd_32_16( mem[2 * ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+
+ mem[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ temp[ALLPASSSECTIONS_STEEP - 1] = L_add( mem[2 * ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
+ move32();
+
+ mem[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+ out[0] = W_round48_L( W_mac_32_16( W_mult_32_16( out[0], 16384 /*0.5 in Q15*/ ), temp[ALLPASSSECTIONS_STEEP - 1], 16384 /*0.5 in Q15*/ ) ); // Qx
+ move32();
+
+ FOR( k = 1; k < N / 2; k++ )
+ {
+#ifdef OPT_STEREO_32KBPS_V1
+ temp[0] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP], in[2 * k - 1], AP2_STEEP_FX[0] ); // Qx
+ move32();
+ mem[ALLPASSSECTIONS_STEEP] = Msub_32_16( in[2 * k - 1], temp[0], AP2_STEEP_FX[0] ); // Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ temp[0] = L_add( mem[ALLPASSSECTIONS_STEEP], Mpy_32_16_1( in[sub( shl( k, 1 ), 1 )], AP2_STEEP_FX[0] ) ); // Qx
+ move32();
+ mem[ALLPASSSECTIONS_STEEP] = L_sub( in[sub( shl( k, 1 ), 1 )], Mpy_32_16_1( temp[0], AP2_STEEP_FX[0] ) ); // Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+
+ /* for better performance, unroll this loop */
+ FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
+ {
+#ifdef OPT_STEREO_32KBPS_V1
+ temp[n] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP + n], temp[n - 1], AP2_STEEP_FX[n] ); // Qx
+ move32();
+ mem[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp[n - 1], temp[n], AP2_STEEP_FX[n] ); // Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ temp[n] = L_add( mem[ALLPASSSECTIONS_STEEP + n], Mpy_32_16_1( temp[n - 1], AP2_STEEP_FX[n] ) ); // Qx
+ move32();
+ /*if ( fabs( temp[n] ) < 1e-12 )
+ {
+ temp[n] = sign( temp[n] ) * 1e-12f;
+ }*/
+ mem[ALLPASSSECTIONS_STEEP + n] = L_sub( temp[n - 1], Mpy_32_16_1( temp[n], AP2_STEEP_FX[n] ) ); // Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+ }
+
+#ifdef OPT_STEREO_32KBPS_V1
+ temp[ALLPASSSECTIONS_STEEP - 1] = Madd_32_16( mem[2 * ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+ mem[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ temp[ALLPASSSECTIONS_STEEP - 1] = L_add( mem[2 * ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
+ move32();
+ mem[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+ out[k] = W_round48_L( W_mac_32_16( W_mult_32_16( out[k], 16384 /*0.5 in Q15*/ ), temp[ALLPASSSECTIONS_STEEP - 1], 16384 /*0.5 in Q15*/ ) ); // Qx
+ move32();
+ }
+
+ /* z^(-1) */
+ mem[2 * ALLPASSSECTIONS_STEEP] = in[N - 1];
+ move32();
+
+ return;
+}
+
/*-------------------------------------------------------------------*
* Interpolate_allpass_steep()
@@ -1122,6 +1279,66 @@ void Interpolate_allpass_steep_fx(
return;
}
+/* IVAS 32-bit variant */
+void Interpolate_allpass_steep_fx32(
+ const Word32 *in_fx, /* i : input array of size N Qx */
+ Word32 *mem_fx, /* i/o: memory Qx */
+ const Word16 N, /* i : number of input samples */
+ Word32 *out_fx /* o : output array of size 2*N Qx */
+)
+{
+ Word16 n, k;
+ Word32 temp_fx[ALLPASSSECTIONS_STEEP - 1];
+
+ /* upper allpass filter chain */
+ FOR( k = 0; k < N; k++ )
+ {
+ temp_fx[0] = Madd_32_16( mem_fx[0], in_fx[k], AP2_STEEP_FX[0] ); // Qx
+ move32();
+ mem_fx[0] = Msub_32_16( in_fx[k], temp_fx[0], AP2_STEEP_FX[0] ); // Qx
+ move32();
+
+ /* for better performance, unroll this loop */
+ FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
+ {
+ temp_fx[n] = Madd_32_16( mem_fx[n], temp_fx[n - 1], AP2_STEEP_FX[n] ); // Qx
+ move32();
+ mem_fx[n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP2_STEEP_FX[n] ); // Qx
+ move32();
+ }
+
+ out_fx[2 * k + 1] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+ mem_fx[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k + 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+ }
+
+ /* lower allpass filter chain */
+ FOR( k = 0; k < N; k++ )
+ {
+ temp_fx[0] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP], in_fx[k], AP1_STEEP_FX[0] ); // Qx
+ move32();
+ mem_fx[ALLPASSSECTIONS_STEEP] = Msub_32_16( in_fx[k], temp_fx[0], AP1_STEEP_FX[0] ); // Qx
+ move32();
+
+ /* for better performance, unroll this loop */
+ FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
+ {
+ temp_fx[n] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP + n], temp_fx[n - 1], AP1_STEEP_FX[n] ); // Qx
+ move32();
+ mem_fx[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP1_STEEP_FX[n] ); // Qx
+ move32();
+ }
+
+ out_fx[2 * k] = Madd_32_16( mem_fx[2 * ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+ mem_fx[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx
+ move32();
+ }
+
+ return;
+}
+
/*-------------------------------------------------------------------*
* interpolate_3_over_2_allpass_fx()
@@ -1250,6 +1467,133 @@ void interpolate_3_over_2_allpass_fx(
return;
}
+/* IVAS 32-bit variant */
+void interpolate_3_over_2_allpass_fx32(
+ const Word32 *input, /* i : input signal Qx*/
+ const Word16 len, /* i : number of input samples */
+ Word32 *out, /* o : output signal Qx*/
+ Word32 *mem /* i/o: memory Qx*/
+)
+{
+ Word16 i, loop_len;
+ Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */
+ Word32 out1_buff[L_FRAME32k * 3];
+ Word32 *out1;
+ Word32 mem_temp;
+ const Word16 *filt_coeff = allpass_poles_3_ov_2; // Q15
+
+ out1 = out1_buff;
+
+ FOR( i = 0; i < len; i++ )
+ {
+ /* Upper branch */
+#ifdef OPT_STEREO_32KBPS_V1
+ Vu[0] = Madd_32_16( mem[0], L_sub( input[i], mem[1] ), filt_coeff[0] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ Vu[1] = Madd_32_16( mem[1], L_sub( Vu[0], mem[2] ), filt_coeff[1] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ mem[3] = Madd_32_16( mem[2], L_sub( Vu[1], mem[3] ), filt_coeff[2] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ Vu[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[1] ), filt_coeff[0] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ Vu[1] = L_add( mem[1], Mpy_32_16_1( L_sub( Vu[0], mem[2] ), filt_coeff[1] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ mem[3] = L_add( mem[2], Mpy_32_16_1( L_sub( Vu[1], mem[3] ), filt_coeff[2] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+
+ mem[1] = Vu[0]; // Qx
+ move32();
+ mem[2] = Vu[1]; // Qx
+ move32();
+ *out1++ = mem[3]; // Qx
+ move32();
+
+ /* Middle branch */
+#ifdef OPT_STEREO_32KBPS_V1
+ Vm[0] = Madd_32_16( mem[0], L_sub( input[i], mem[4] ), filt_coeff[3] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ Vm[1] = Madd_32_16( mem[4], L_sub( Vm[0], mem[5] ), filt_coeff[4] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ mem[6] = Madd_32_16( mem[5], L_sub( Vm[1], mem[6] ), filt_coeff[5] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ Vm[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ Vm[1] = L_add( mem[4], Mpy_32_16_1( L_sub( Vm[0], mem[5] ), filt_coeff[4] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ mem[6] = L_add( mem[5], Mpy_32_16_1( L_sub( Vm[1], mem[6] ), filt_coeff[5] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+
+ mem[4] = Vm[0]; // Qx
+ move32();
+ mem[5] = Vm[1]; // Qx
+ move32();
+ *out1++ = mem[6]; // Qx
+ move32();
+
+ /* Lower branch */
+#ifdef OPT_STEREO_32KBPS_V1
+ Vl[0] = Madd_32_16( mem[0], L_sub( input[i], mem[7] ), filt_coeff[6] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ Vl[1] = Madd_32_16( mem[7], L_sub( Vl[0], mem[8] ), filt_coeff[7] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ mem[9] = Madd_32_16( mem[8], L_sub( Vl[1], mem[9] ), filt_coeff[8] ); // Qx + Q15 - Q15 -> Qx
+ move32();
+#else /* OPT_STEREO_32KBPS_V1 */
+ Vl[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ Vl[1] = L_add( mem[7], Mpy_32_16_1( L_sub( Vl[0], mem[8] ), filt_coeff[7] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+ mem[9] = L_add( mem[8], Mpy_32_16_1( L_sub( Vl[1], mem[9] ), filt_coeff[8] ) ); // Qx + Q15 - Q15 -> Qx
+ move32();
+#endif /* OPT_STEREO_32KBPS_V1 */
+
+ mem[0] = input[i]; // Qx
+ move32();
+ mem[7] = Vl[0]; // Qx
+ move32();
+ mem[8] = Vl[1]; // Qx
+ move32();
+ *out1++ = mem[9]; // Qx
+ move32();
+ }
+
+ loop_len = shr( i_mult( len, 3 ), 1 );
+
+ /*decimate by 2 and LPF*/
+ FOR( i = 0; i < loop_len; i++ )
+ {
+ mem_temp = out1_buff[2 * i];
+ move32();
+#ifdef OPT_STEREO_32KBPS_V1
+ out[i] = Madd_32_16( Mpy_32_16_1( L_add( mem_temp, mem[10] ), 1550 ), L_add( mem[11], mem[14] ), -4965 ); // Qx + Q15 - Q15 -> Qx
+ // 0.0473147f in Q15 -> 1550, -0.151521f in Q15 -> -4965
+ out[i] = Madd_32_16( out[i], L_add( mem[12], mem[13] ), 20125 );
+ // 0.614152f in Q15 -> 20125
+#else /* OPT_STEREO_32KBPS_V1 */
+ out[i] = L_add( Mpy_32_16_1( L_add( mem_temp, mem[10] ), 1550 ), Mpy_32_16_1( L_add( mem[11], mem[14] ), -4965 ) ); // Qx + Q15 - Q15 -> Qx
+ // 0.0473147f in Q15 -> 1550, -0.151521f in Q15 -> -4965
+ out[i] = L_add( out[i], Mpy_32_16_1( L_add( mem[12], mem[13] ), 20125 ) );
+ // 0.614152f in Q15 -> 20125
+#endif /* OPT_STEREO_32KBPS_V1 */
+ mem[10] = mem[11]; // Qx
+ move32();
+ mem[11] = mem[12]; // Qx
+ move32();
+ mem[12] = mem[13]; // Qx
+ move32();
+ mem[13] = mem[14]; // Qx
+ move32();
+ mem[14] = mem_temp; // Qx
+ move32();
+ }
+
+ return;
+}
+
/*-------------------------------------------------------------------*
* interpolate_3_over_1_allpass_fx()
@@ -1445,6 +1789,92 @@ void interpolate_3_over_1_allpass_fx(
return;
}
+/* IVAS 32-bit variant */
+void interpolate_3_over_1_allpass_fx32(
+ const Word32 *input, /* i : input signal Qx */
+ const Word16 len, /* i : number of input samples */
+ Word32 *out, /* o : output signal */
+ Word32 *mem /* i/o: memory */
+)
+{
+ Word16 i, tmp16;
+ Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */
+ Word32 *out1;
+ Word32 mem_temp;
+ const Word16 *filt_coeff = allpass_poles_3_ov_2; // Qx
+
+ out1 = &out[0];
+
+ FOR( i = 0; i < len; i++ )
+ {
+ /* Upper branch */
+ Vu[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[1] ), filt_coeff[0] ) ); // Qx
+ move32();
+ Vu[1] = L_add_sat( mem[1], Mpy_32_16_1( L_sub( Vu[0], mem[2] ), filt_coeff[1] ) ); // Qx
+ move32();
+ mem[3] = L_add_sat( mem[2], Mpy_32_16_1( L_sub( Vu[1], mem[3] ), filt_coeff[2] ) ); // Qx
+ move32();
+
+ mem[1] = Vu[0]; // Qx
+ move32();
+ mem[2] = Vu[1]; // Qx
+ move32();
+ *out1++ = mem[3]; // Qx
+ move32();
+
+ /* Middle branch */
+ Vm[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) ); // Qx
+ move32();
+ Vm[1] = L_add_sat( mem[4], Mpy_32_16_1( L_sub( Vm[0], mem[5] ), filt_coeff[4] ) ); // Qx
+ move32();
+ mem[6] = L_add_sat( mem[5], Mpy_32_16_1( L_sub( Vm[1], mem[6] ), filt_coeff[5] ) ); // Qx
+ move32();
+
+ mem[4] = Vm[0]; // Qx
+ move32();
+ mem[5] = Vm[1]; // Qx
+ move32();
+ *out1++ = mem[6]; // Qx
+ move32();
+
+ /* Lower branch */
+ Vl[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) ); // Qx
+ move32();
+ Vl[1] = L_add_sat( mem[7], Mpy_32_16_1( L_sub( Vl[0], mem[8] ), filt_coeff[7] ) ); // Qx
+ move32();
+ mem[9] = L_add_sat( mem[8], Mpy_32_16_1( L_sub( Vl[1], mem[9] ), filt_coeff[8] ) ); // Qx
+ move32();
+
+ mem[0] = input[i]; // Qx
+ move32();
+ mem[7] = Vl[0]; // Qx
+ move32();
+ mem[8] = Vl[1]; // Qx
+ move32();
+ *out1++ = mem[9]; // Qx
+ move32();
+ }
+
+ /*LPF*/
+ tmp16 = imult1616( len, 3 );
+ FOR( i = 0; i < tmp16; i++ )
+ {
+ mem_temp = out[i]; // Qx
+ move32();
+ out[i] = L_sub_sat( Mpy_32_16_1( L_add_sat( mem[12], mem[11] ), 18768 ), Mpy_32_16_1( L_add_sat( mem_temp, mem[10] ), 2424 ) ); // Qx
+ // 0.572769 in Q15 -> 18768, 0.074005 in Q15 -> 2424
+ move32();
+ mem[10] = mem[11]; // Qx
+ move32();
+ mem[11] = mem[12]; // Qx
+ move32();
+ mem[12] = mem_temp; // Qx
+ move32();
+ }
+
+ return;
+}
+
/*-------------------------------------------------------------------*
* decimate_3_over_2_allpass_fx()
diff --git a/lib_com/mslvq_com.c b/lib_com/mslvq_com.c
deleted file mode 100644
index 12234a4c055664712312c284ce500a2a019c119a..0000000000000000000000000000000000000000
--- a/lib_com/mslvq_com.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include "cnst.h"
-#include "rom_com.h"
-#include "prot_fx.h"
-#include "wmc_auto.h"
-#include "ivas_prot_fx.h"
-
-/*-----------------------------------------------------------------*
- * Local function prototypes
- *-----------------------------------------------------------------*/
-
-static void make_offset_scale(
- const UWord32 tab_no_cv[],
- const Word8 *no_ld,
- const Word16 no_scl,
- UWord32 *offset_scale )
-{
- Word16 i;
-
- offset_scale[0] = 1;
- move32();
- FOR( i = 1; i <= no_scl; i++ )
- {
- offset_scale[i] = UL_addNsD( offset_scale[i - 1], tab_no_cv[(Word16) no_ld[i - 1]] );
- move32();
- }
-
- return;
-}
-
-/*-----------------------------------------------------------------*
- * create_offset()
- *
- *
- *-----------------------------------------------------------------*/
-
-void create_offset(
- UWord32 *offset_scale1,
- UWord32 *offset_scale2,
- const Word16 mode,
- const Word16 prediction_flag )
-{
- Word16 tmp, tmp1;
-
- if ( prediction_flag == 0 )
- {
- /* safety_net */
- tmp = no_lead_idx[mode][0];
- if ( ( tmp <= LIMIT_LEADER ) && ( tmp < no_lead_idx[mode][1] - 2 ) )
- {
- tmp += DELTA_LEADER;
- }
- make_offset_scale( table_no_cv, leaders_short[tmp], MAX_NO_SCALES, offset_scale1 );
- make_offset_scale( table_no_cv, leaders_short[no_lead_idx[mode][1]], MAX_NO_SCALES, offset_scale2 );
- }
- else
- {
- tmp = no_lead_p_idx[mode][0];
- tmp1 = no_lead_p_idx[mode][1];
- if ( ( tmp <= LIMIT_LEADER ) && ( tmp < tmp1 - 2 ) )
- {
- tmp += DELTA_LEADER;
- }
-
- if ( ( tmp == LIMIT_LEADER ) && ( tmp1 == 0 ) )
- {
- tmp += DELTA_LEADER;
- tmp1 = DELTA_LEADER;
- }
-
- make_offset_scale( table_no_cv, leaders_short[tmp], MAX_NO_SCALES, offset_scale1 );
- make_offset_scale( table_no_cv, leaders_short[tmp1], MAX_NO_SCALES, offset_scale2 );
- }
-
- return;
-}
-
-/*-----------------------------------------------------------------*
- * sort_desc_ind()
- *
- * sorts in descending order and computes indices in the sorted vector
- *-----------------------------------------------------------------*/
-void sort_desc_ind_16_fx(
- Word16 *s, /* i/o: vector to be sorted Qx*/
- const Word16 len, /* i : vector length */
- Word16 *ind /* o : array of indices */
-)
-{
- Word16 i, k, sorted, a;
- Word16 t;
-
- FOR( i = 0; i < len; i++ )
- {
- ind[i] = i;
- move16();
- }
- sorted = 0;
- move16();
- FOR( k = len - 1; k && !sorted; k-- )
- {
- sorted = 1;
- move16();
- FOR( i = 0; i < k; i++ )
- {
- IF( LT_16( s[i], s[i + 1] ) )
- {
- sorted = 0;
- move16();
- t = s[i];
- move16();
- s[i] = s[i + 1];
- move16();
- s[i + 1] = t;
- move16();
- a = ind[i];
- move16();
- ind[i] = ind[i + 1];
- move16();
- ind[i + 1] = a;
- move16();
- }
- }
- }
-
- return;
-}
-
-void sort_desc_ind_32_fx(
- Word32 *s, /* i/o: vector to be sorted Qx*/
- const Word16 len, /* i : vector length */
- Word16 *ind /* o : array of indices */
-)
-{
- Word16 i, k, sorted, a;
- Word32 t;
-
- FOR( i = 0; i < len; i++ )
- {
- ind[i] = i;
- move16();
- }
- sorted = 0;
- move16();
- FOR( k = len - 1; k && !sorted; k-- )
- {
- sorted = 1;
- move16();
- FOR( i = 0; i < k; i++ )
- {
- IF( LT_32( s[i], s[i + 1] ) )
- {
- sorted = 0;
- move16();
- t = s[i];
- move16();
- s[i] = s[i + 1];
- move16();
- s[i + 1] = t;
- move16();
- a = ind[i];
- move16();
- ind[i] = ind[i + 1];
- move16();
- ind[i + 1] = a;
- move16();
- }
- }
- }
-
- return;
-}
diff --git a/lib_com/mslvq_com_fx.c b/lib_com/mslvq_com_fx.c
index cf2ad8a8a0df8a9294e4f0a13f57664441b19676..8d5e8adf2c394a7799a75085ccaff97cf9b698e9 100644
--- a/lib_com/mslvq_com_fx.c
+++ b/lib_com/mslvq_com_fx.c
@@ -30,11 +30,16 @@
*******************************************************************************************************/
+#include
#include "options.h"
+#include "cnst.h"
#include "prot_fx.h"
#include "ivas_cnst.h"
#include "stl.h"
#include "rom_com.h"
+#include "ivas_prot_fx.h"
+#include "wmc_auto.h"
+
/*-----------------------------------------------------------------*
* Local functions
@@ -128,21 +133,31 @@ void init_lvq_fx(
FOR( i = 0; i < MAX_NO_MODES; i++ )
{
#ifdef OPT_STEREO_32KBPS_V1
- FOR( ( j = 0, k = 0 ); j < MAX_NO_SCALES; ( j++, k++ ) )
+ FOR( ( j = 0, k = 0 ); j < MAX_NO_SCALES; j++ )
{
- if ( ( no_lead_fx[i][j] <= 0 ) )
+ if ( no_lead_fx[i][j] > 0 )
{
- j = MAX_NO_SCALES;
+ k = add( k, 1 );
+ }
+ if ( no_lead_fx[i][j] <= 0 )
+ {
+ j = MAX_NO_SCALES - 1;
+ move16();
}
}
no_scales[i][0] = k;
move16();
- FOR( k = 0; j < MAX_NO_SCALES << 1; ( j++, k++ ) )
+ FOR( k = 0; j < MAX_NO_SCALES << 1; j++ )
{
+ if ( no_lead_fx[i][j] > 0 )
+ {
+ k = add( k, 1 );
+ }
if ( no_lead_fx[i][j] <= 0 )
{
j = MAX_NO_SCALES << 1;
+ move16();
}
}
no_scales[i][1] = k;
@@ -172,23 +187,32 @@ void init_lvq_fx(
FOR( i = 0; i < MAX_NO_MODES_p; i++ )
{
#ifdef OPT_STEREO_32KBPS_V1
- FOR( ( j = 0, k = 0 ); j < MAX_NO_SCALES; ( j++, k++ ) )
+ FOR( ( j = 0, k = 0 ); j < MAX_NO_SCALES; j++ )
{
-
+ if ( no_lead_p_fx[i][j] > 0 )
+ {
+ k = add( k, 1 );
+ }
if ( ( no_lead_p_fx[i][j] <= 0 ) )
{
- j = MAX_NO_SCALES;
+ j = MAX_NO_SCALES - 1;
+ move16();
}
}
no_scales_p[i][0] = k;
move16();
- FOR( k = 0; j < MAX_NO_SCALES << 1; ( j++, k++ ) )
+ FOR( k = 0; j < MAX_NO_SCALES << 1; j++ )
{
+ if ( no_lead_p_fx[i][j] > 0 )
+ {
+ k = add( k, 1 );
+ }
if ( ( no_lead_p_fx[i][j] <= 0 ) )
{
j = MAX_NO_SCALES << 1;
+ move16();
}
}
@@ -241,6 +265,25 @@ static void make_offset_scale_fx(
return;
}
+static void make_offset_scale(
+ const UWord32 tab_no_cv[],
+ const Word8 *no_ld,
+ const Word16 no_scl,
+ UWord32 *offset_scale )
+{
+ Word16 i;
+
+ offset_scale[0] = 1;
+ move32();
+ FOR( i = 1; i <= no_scl; i++ )
+ {
+ offset_scale[i] = UL_addNsD( offset_scale[i - 1], tab_no_cv[(Word16) no_ld[i - 1]] );
+ move32();
+ }
+
+ return;
+}
+
void init_offset_fx(
Word32 offset_scale1[][MAX_NO_SCALES + 1], /* o: lattice truncation index offset for the first LSF subvector - safety net structures*/
Word32 offset_scale2[][MAX_NO_SCALES + 1], /* o: lattice truncation index offset for the second LSF subvector - safety net structures*/
@@ -1291,6 +1334,104 @@ static void put_value_fx(
return;
}
+/*-----------------------------------------------------------------*
+ * create_offset()
+ *
+ *
+ *-----------------------------------------------------------------*/
+
+void create_offset(
+ UWord32 *offset_scale1,
+ UWord32 *offset_scale2,
+ const Word16 mode,
+ const Word16 prediction_flag )
+{
+ Word16 tmp, tmp1;
+
+ if ( prediction_flag == 0 )
+ {
+ /* safety_net */
+ tmp = no_lead_idx[mode][0];
+ if ( ( tmp <= LIMIT_LEADER ) && ( tmp < no_lead_idx[mode][1] - 2 ) )
+ {
+ tmp += DELTA_LEADER;
+ }
+ make_offset_scale( table_no_cv, leaders_short[tmp], MAX_NO_SCALES, offset_scale1 );
+ make_offset_scale( table_no_cv, leaders_short[no_lead_idx[mode][1]], MAX_NO_SCALES, offset_scale2 );
+ }
+ else
+ {
+ tmp = no_lead_p_idx[mode][0];
+ tmp1 = no_lead_p_idx[mode][1];
+ if ( ( tmp <= LIMIT_LEADER ) && ( tmp < tmp1 - 2 ) )
+ {
+ tmp += DELTA_LEADER;
+ }
+
+ if ( ( tmp == LIMIT_LEADER ) && ( tmp1 == 0 ) )
+ {
+ tmp += DELTA_LEADER;
+ tmp1 = DELTA_LEADER;
+ }
+
+ make_offset_scale( table_no_cv, leaders_short[tmp], MAX_NO_SCALES, offset_scale1 );
+ make_offset_scale( table_no_cv, leaders_short[tmp1], MAX_NO_SCALES, offset_scale2 );
+ }
+
+ return;
+}
+
+/*-----------------------------------------------------------------*
+ * sort_desc_ind()
+ *
+ * sorts in descending order and computes indices in the sorted vector
+ *-----------------------------------------------------------------*/
+
+void sort_desc_ind_32_fx(
+ Word32 *s, /* i/o: vector to be sorted Qx*/
+ const Word16 len, /* i : vector length */
+ Word16 *ind /* o : array of indices */
+)
+{
+ Word16 i, k, sorted, a;
+ Word32 t;
+
+ FOR( i = 0; i < len; i++ )
+ {
+ ind[i] = i;
+ move16();
+ }
+ sorted = 0;
+ move16();
+ FOR( k = len - 1; k && !sorted; k-- )
+ {
+ sorted = 1;
+ move16();
+ FOR( i = 0; i < k; i++ )
+ {
+ IF( LT_32( s[i], s[i + 1] ) )
+ {
+ sorted = 0;
+ move16();
+ t = s[i];
+ move16();
+ s[i] = s[i + 1];
+ move16();
+ s[i + 1] = t;
+ move16();
+ a = ind[i];
+ move16();
+ ind[i] = ind[i + 1];
+ move16();
+ ind[i + 1] = a;
+ move16();
+ }
+ }
+ }
+
+ return;
+}
+
void deindex_lvq_SHB_fx(
UWord32 index,
Word16 *out,
diff --git a/lib_com/options.h b/lib_com/options.h
index c568a52fa21f2df3f026c396a4cded894919e2f8..4527c9c4b1d733e77e82986c675b0b267b74cdc1 100755
--- a/lib_com/options.h
+++ b/lib_com/options.h
@@ -43,6 +43,7 @@
/*#define DEBUGGING*/ /* Allows debugging message to be printed out during runtime */
#ifdef DEBUGGING
+/*#define DBG_BITSTREAM_ANALYSIS*/ /* Write bitstream with annotations to a text file */
#define DEBUG_MODE_INFO /* Define to output most important parameters to the subdirectory "res/" */
#define DEBUG_MODE_INFO_TWEAK /* Enable command line switch to specify subdirectory for debug info output inside "./res/" */
#define DEBUG_FORCE_MDCT_STEREO_MODE /* Force stereo mode decision for MDCT stereo: -stereo 3 1 forces L/R coding and -stereo 3 2 forces full M/S coding */
@@ -71,7 +72,10 @@
#define FIX_1378_ACELP_OUT_OF_BOUNDS
-//#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */
+#define FIX_1379_MASA_ANGLE_ROUND
+
+/* Note: each compile switch (FIX_1101_...) is independent from the other ones */
+#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */
#define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */
#define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/
#define FIX_1310_SPEEDUP_ivas_dirac_dec_output_synthesis_process_slot /*FhG: WMOPS tuning, nonbe*/
@@ -83,24 +87,47 @@
//#define HARM_SCE_INIT
#define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */
#define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */
+#define MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of dmx calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Requires MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */
+#define MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE /* FhG: reduce WMOPS by inlining the matrix multiplications for the smoothing operation. */
+#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/
+#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/
+#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/
+#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/
+#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/
+#define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */
+#define VEC_ARITH_OPT_v1
+#define FIX_1486_IND_SHB_RES /* VA: Fix for issue 1486: align the usage of IND_SHB_RES_GS indices with float code */
+
+#define TEST_HR
+#define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions, ACELP low-band decoder */
/* #################### Start BASOP porting switches ############################ */
-#define SPLIT_REND_WITH_HEAD_ROT /* Dlb,FhG: Split Rendering contributions 21 and 35 */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-#define SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
-#define ISAR_BITSTREAM_UPDATE_LC3PLUS /* FhG: Multiple improvements to the ISAR bitstream when LC3plus is used. See MR 1456 for details. */
#define FIX_1372_ISAR_POST_REND
-#endif
#define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */
-#define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/
-#define NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER /* Qualcomm: issue 953: fix order or ER channels in LC mode*/
-#define FIX_955_FASTCONV_REND_IN_ISM /* VA: put FastConv rendering call under DEBUGGING */
-#define NONBE_FIX_967_ISM_MONO_DMX /* FhG: issue 967: accumulating energies in ISM mono DMX */
-#define FIX_959_MASA_LINEAR_REND /* VA: issue 959: remove unused calling of ivas_sba_linear_renderer() in MASA rendering */
-
-#define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/
-#define FIX_969_USAN_IGF_ARITH /* FhG: issue 969: fix USAN error in igf_sce_dec; same issue as #962 */
+
+//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */
+#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT
+#define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */
+#define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/
+#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
+#define NONBE_FIX_AVG_IAC_CLDFB_REVERB
+#endif
+#define FIX_OLD_BINARY_FORMAT /* Orange: trick to make tests succesful when changing hrtf binary format between ref and new branch*/
+#define FIX_OLD_BINARY_FILE /* Orange: current hrtf binary file in ref branch contains wrong values for fastconv value. This switch can be activated to compre running codec with and without hrtf file*/
+#define FIX_WARNING_RENDER_CONFIG /* Orange: fix warning on windows build */
+#define FIX_INV_DIFFUSE_WEIGHT /* Orange : Fix error in energy compensation in late binaural */
+#endif
+#define FIX_993_REMOVE_SBA_GET_ORDER /* VA: issue 993: remove unused function ivas_sba_get_order() */
+
+//#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */
+#define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */
+/* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to activate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on ) */
+#define FIX_1009_ISM_NONDIEGETIC_PANNING /* FhG: issue #1009: use correct object buffer for ISM1 non-diegetic pan */
+#define NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER /* FhG: issues #1012, 1013: JBM flush function uses wrong output buffer */
+#define FIX_998_UNUSED_FUNCTION /* FhG: issue 998: delete unused funtion ivas_dirac_dec_get_response_split_order */
+#define NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO /* FhG: issues #1014, #1015, #1016: fix tc buffer info update in the discrete ism renderer */
+#define NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING /* FhG: issue 987: solution b: downmix HOA3 to stereo a input for the reverberator */
/* #################### End BASOP porting switches ############################ */
diff --git a/lib_com/phase_dispersion_fx.c b/lib_com/phase_dispersion_fx.c
index 723d173bcd2bda0a3699a95b67f46997665660f5..3103723becabab50ac704ec5634594e73531e5b3 100644
--- a/lib_com/phase_dispersion_fx.c
+++ b/lib_com/phase_dispersion_fx.c
@@ -114,12 +114,12 @@ void phase_dispersion(
scale2 = getScaleFactor32( x32, L_subfr );
FOR( i = 0; i < L_subfr / 2 - 1; i++ )
{
- code[i] = round_fx_sat( L_shl_sat( x32[2 * i + 0], scale2 ) );
+ code[i] = round_fx_sat( L_shl_sat( x32[2 * i], scale2 ) );
code[L_subfr - 1 - i] = round_fx_sat( L_shl_sat( x32[2 * i + 3], scale2 ) );
}
- code[L_subfr / 2 - 1] = round_fx( L_shl( x32[L_subfr - 2], scale2 ) );
- code[L_subfr / 2] = round_fx( L_shl( x32[1], scale2 ) );
+ code[L_subfr / 2 - 1] = round_fx_sat( L_shl_sat( x32[L_subfr - 2], scale2 ) );
+ code[L_subfr / 2] = round_fx_sat( L_shl_sat( x32[1], scale2 ) );
j = sub( j, scale2 );
diff --git a/lib_com/preemph.c b/lib_com/preemph.c
deleted file mode 100644
index 9ebc0f72a81c39542312ff9e6bbd3d76b5a49197..0000000000000000000000000000000000000000
--- a/lib_com/preemph.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include "prot_fx.h"
-#include "wmc_auto.h"
-
-/*-------------------------------------------------------------*
- * preemph_ivas_fx()
- *
- * Preemphasis: filtering through 1 - mu z^-1
- *-------------------------------------------------------------*/
-
-void preemph_ivas_fx(
- Word32 *signal, /* i/o: signal Qx*/
- const Word16 mu, /* i : preemphasis factor Q15*/
- const Word16 L, /* i : vector size Q0*/
- Word32 *mem /* i/o: memory (x[-1]) Qx*/
-)
-{
- Word16 i;
- Word32 temp;
-
- temp = signal[L - 1]; /* Qx */
- move32();
- FOR( i = L - 1; i > 0; i-- )
- {
- signal[i] = L_sub( signal[i], Mpy_32_16_1( signal[i - 1], mu ) ); /* Qx */
- move32();
- }
-
- signal[0] = L_sub( signal[0], Mpy_32_16_1( *mem, mu ) ); /* Qx */
- move32();
- *mem = temp; /* Qx */
- move32();
-
- return;
-}
diff --git a/lib_com/preemph_fx.c b/lib_com/preemph_fx.c
index 0790f6c3f2c8fdda954347962a335a029e7057f1..b7886cb65324d5bfb77d84fe104b24ff7abb7e33 100644
--- a/lib_com/preemph_fx.c
+++ b/lib_com/preemph_fx.c
@@ -1,14 +1,18 @@
/*====================================================================================
EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0
====================================================================================*/
+
#include
#include "options.h" /* Compilation switches */
#include "prot_fx.h"
+#include "wmc_auto.h"
+
/*-------------------------------------------------------------*
* preemph_copy_fx()
*
* Preemphasis: filtering through 1 - mu z^-1
*-------------------------------------------------------------*/
+
void preemph_copy_fx(
const Word16 x[], /* i : input signal Qx */
Word16 y[], /* o : output signal Qx */
@@ -63,6 +67,38 @@ void preemph_copy_32fx(
move16();
}
+/*-------------------------------------------------------------*
+ * preemph_ivas_fx()
+ *
+ * Preemphasis: filtering through 1 - mu z^-1
+ *-------------------------------------------------------------*/
+
+void preemph_ivas_fx(
+ Word32 *signal, /* i/o: signal Qx*/
+ const Word16 mu, /* i : preemphasis factor Q15*/
+ const Word16 L, /* i : vector size Q0*/
+ Word32 *mem /* i/o: memory (x[-1]) Qx*/
+)
+{
+ Word16 i;
+ Word32 temp;
+
+ temp = signal[L - 1]; /* Qx */
+ move32();
+ FOR( i = L - 1; i > 0; i-- )
+ {
+ signal[i] = L_sub( signal[i], Mpy_32_16_1( signal[i - 1], mu ) ); /* Qx */
+ move32();
+ }
+
+ signal[0] = L_sub( signal[0], Mpy_32_16_1( *mem, mu ) ); /* Qx */
+ move32();
+ *mem = temp; /* Qx */
+ move32();
+
+ return;
+}
+
/*
* E_UTIL_f_preemph2
*
diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h
index 45641b3f8f6789c864216b5d78a78c3b7d747452..cdc4336756e72328658bace903ce18f4805d5e20 100644
--- a/lib_com/prot_fx.h
+++ b/lib_com/prot_fx.h
@@ -72,9 +72,6 @@
#define max( x, y ) ( ( x ) > ( y ) ? ( x ) : ( y ) )
#endif
-#define log_base_2( x ) ( (double) log( (double) ( x ) ) * 1.4426950408889634074f )
-#define round_f( x ) ( ( ( x ) > 0 ) ? (int32_t) ( ( x ) + 0.5f ) : ( -(int32_t) ( ( -x ) + 0.5f ) ) )
-
#ifndef ABSVAL
#define ABSVAL( a ) ( ( a ) >= 0 ? ( a ) : ( -( a ) ) )
#endif
@@ -916,11 +913,7 @@ void msvq_dec(
const Word16 N, /* i : Vector dimension */
const Word16 maxN, /* i : Codebook dimension */
const Word16 Idx[], /* i : Indices */
-#ifdef IVAS_MSVQ
- const int16_t applyIDCT_flag, /* i : applyIDCT flag */
- const float *invTrfMatrix, /* i : matrix for IDCT synthesis */
-#endif
- Word16 *uq /* o : quantized vector (3Q12) */
+ Word16 *uq /* o : quantized vector (3Q12) */
);
Word16 tcxlpc_get_cdk(
@@ -1580,19 +1573,19 @@ Word16 gsc_gainQ_fx(
);
Word16 gsc_gainQ_ivas_fx(
- BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
- const int16_t element_mode, /* i : element mode */
- const int16_t idchan, /* i : channel ID */
+ BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 idchan, /* i : channel ID */
const Word16 y_gain4[],
/* i : Energy per band */ // Q12
Word16 y_gainQ[],
/* o : quantized energy per band */ // Q12
- const int32_t core_brate, /* i : Core rate */
- const int16_t coder_type, /* i : coding type */
- const int16_t bwidth, /* i : input signal bandwidth */
- const int16_t L_frame, /* i : frame length */
- const int16_t tdm_LRTD_flag, /* i : LRTD stereo mode flag */
- const int32_t core_brate_inp /* i : true core bitrate */
+ const Word32 core_brate, /* i : Core rate */
+ const Word16 coder_type, /* i : coding type */
+ const Word16 bwidth, /* i : input signal bandwidth */
+ const Word16 L_frame, /* i : frame length */
+ const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */
+ const Word32 core_brate_inp /* i : true core bitrate */
);
// frame_ener.c
@@ -1633,10 +1626,8 @@ Word32 get_delay_fx( /* o : delay value in ms
const Word32 io_fs, /* i : input/output sampling frequency */
const IVAS_FORMAT ivas_format, /* i : IVAS format */
HANDLE_CLDFB_FILTER_BANK hCldfb /* i : Handle of Cldfb analysis */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
,
const AUDIO_CONFIG output_config /* i : decoder output config */
-#endif
);
@@ -1783,15 +1774,9 @@ void Ener_per_band_comp_ivas_fx(
const Word16 Q_exc, /* i : frame length */
const Word16 Mband, /* i : Max band */
const Word16 Eflag, /* i : flag of highest band */
- const int16_t L_frame /* i : frame length */
+ const Word16 L_frame /* i : frame length */
);
-void Ener_per_band_comp_ivas_fx_2(
- const Word16 exc_diff_fx[], /* i : target signal Q_exc_diff */
- Word16 y_gain4_fx[], /* o : Energy per band to quantize Q12 */
- const Word16 Q_exc, /* i : frame length */
- const Word16 Mband, /* i : Max band */
- const Word16 Eflag, /* i : flag of highest band */
- const Word16 L_frame );
+
void Comp_and_apply_gain_fx(
Word16 exc_diffQ[], /* i/o: Quantized excitation */
Word16 Ener_per_bd_iQ[], /* i : Target ener per band Q13 */
@@ -1851,17 +1836,6 @@ void wtda_fx(
const Word16 L /* i : length */
);
-void wtda_ivas_fx(
- Word16 *new_audio, /* i : input audio Q0 */
- Word16 *Q, /* i/o : Q of input/Output Audio */
- Word16 *wtda_audio, /* o : windowed audio Qout */
- Word16 *old_wtda, /* i/o: windowed audio from previous frame Qout */
- Word16 *Qold_wtda,
- const Word16 left_mode, /* i : window overlap of previous frame (0: full, 2: none, or 3: half) */
- const Word16 right_mode, /* i : window overlap of current frame (0: full, 2: none, or 3: half) */
- const Word16 L /* i : length */
-);
-
void wtda_ext_fx(
const Word16 *new_audio, /* i : input audio (Q_in) */
Word16 *wtda_audio, /* o : windowed audio (Q_in) */
@@ -2637,7 +2611,7 @@ void Interpolate_allpass_steep_fx(
void Interpolate_allpass_steep_fx32(
const Word32 *in_fx, /* i : input array of size N */
Word32 *mem_fx, /* i/o: memory */
- const int16_t N, /* i : number of input samples */
+ const Word16 N, /* i : number of input samples */
Word32 *out_fx /* o : output array of size 2*N */
);
@@ -2651,7 +2625,7 @@ void interpolate_3_over_2_allpass_fx(
void interpolate_3_over_2_allpass_fx32(
const Word32 *input, /* i : input signal Qx */
- const int16_t len, /* i : number of input samples */
+ const Word16 len, /* i : number of input samples */
Word32 *out, /* o : output signal */
Word32 *mem /* i/o: memory */
);
@@ -2935,16 +2909,16 @@ void tbe_celp_exc(
);
void tbe_celp_exc_ivas(
- const int16_t element_mode, /* i : element mode */
- const int16_t idchan, /* i : channel ID */
- const Word16 L_frame_fx, /* i : Frame lenght */
- const int16_t L_subfr, /* i : subframe length */
- const Word16 i_subfr_fx, /* i : sub frame */
- const Word16 T0_fx, /* i : Integer pitch */
- const Word16 T0_frac_fx, /* i : Fractional part of the pitch */
- Word16 *error_fx, /* i/o: Error */
- Word16 *bwe_exc_fx, /* i/o: bandwitdh extension signal */
- const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 idchan, /* i : channel ID */
+ const Word16 L_frame_fx, /* i : Frame lenght */
+ const Word16 L_subfr, /* i : subframe length */
+ const Word16 i_subfr_fx, /* i : sub frame */
+ const Word16 T0_fx, /* i : Integer pitch */
+ const Word16 T0_frac_fx, /* i : Fractional part of the pitch */
+ Word16 *error_fx, /* i/o: Error */
+ Word16 *bwe_exc_fx, /* i/o: bandwitdh extension signal */
+ const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */
);
void flip_and_downmix_generic_fx(
@@ -3061,22 +3035,7 @@ void GenShapedSHBExcitation_fx(
Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */
Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */
const Word32 bitrate,
- const Word16 prev_bfi
-#ifdef ADD_IVAS_TBE_CODE
- , /* i : previous frame was concealed */
- const Word16 element_mode, /* i : element mode */
- const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */
- Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */
- Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */
- const Word32 extl_brate, /* i : extension layer bitarte */
- const Word16 MSFlag, /* i : Multi Source flag */
- Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */
- Word16 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */
- Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */
- Word16 *Env_error, /* o : error in SHB residual envelope modelling*/
- Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */
-#endif
-);
+ const Word16 prev_bfi );
void GenShapedSHBExcitation_ivas_enc_fx(
Word16 *excSHB, /* o : synthesized shaped shb excitation Q_bwe_exc*/
@@ -3151,9 +3110,7 @@ void GenShapedSHBExcitation_ivas_dec_fx(
Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */
Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */
const Word32 bitrate,
- const Word16 prev_bfi
-#if 1 // def ADD_IVAS_TBE_CODE
- , /* i : previous frame was concealed */
+ const Word16 prev_bfi, /* i : previous frame was concealed */
const Word16 element_mode, /* i : element mode */
const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */
Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */
@@ -3165,7 +3122,6 @@ void GenShapedSHBExcitation_ivas_dec_fx(
Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */
Word16 *Env_error, /* o : error in SHB residual envelope modelling*/
Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */
-#endif
);
void GenSHBSynth_fx(
@@ -3181,8 +3137,8 @@ void GenSHBSynth_fx32(
Word32 *shb_syn_speech_32k, /* o : output highband component */
Word32 Hilbert_Mem[], /* i/o: memory */
Word32 state_lsyn_filt_shb_local[], /* i/o: memory */
- const int16_t L_frame, /* i : ACELP frame length */
- int16_t *syn_dm_phase );
+ const Word16 L_frame, /* i : ACELP frame length */
+ Word16 *syn_dm_phase );
void ScaleShapedSHB_fx(
const Word16 length, /* i : SHB overlap length */
@@ -3264,6 +3220,20 @@ void interp_code_4over2_fx(
void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] );
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+void elliptic_bpf_48k_generic_fx(
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ const Word16 element_mode,
+#endif
+ Word16 IsUpsampled3,
+ Word16 input_fx[], /* i : input signal Q_input_fx*/
+ Word16 *Q_input_fx,
+ Word16 output_fx[], /* o : output signal */
+ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */
+ Word16 memory_fx_Q[],
+ const Word16 full_band_bpf[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */
+);
+#else
void elliptic_bpf_48k_generic_fx(
const Word16 input_fx[], /* i : i signal Q_input_fx */
Word16 *Q_input_fx,
@@ -3272,6 +3242,7 @@ void elliptic_bpf_48k_generic_fx(
Word16 memory_fx_Q[],
const Word16 full_band_bpf[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */
);
+#endif
void synthesise_fb_high_band_fx(
const Word16 excitation_in[], /* i : full band excitation */
@@ -3284,67 +3255,40 @@ void synthesise_fb_high_band_fx(
Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */
Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */
Word16 bpf_memory_Q[],
- Word16 Qout );
-
-void prep_tbe_exc_fx(
- const Word16 L_frame_fx, /* i : length of the frame */
-#ifdef ADD_IVAS_TBE_CODE
- const Word16 L_subfr,
-#endif
- const Word16 i_subfr_fx, /* i : subframe index */
- const Word16 gain_pit_fx, /* i : Pitch gain Q14*/
- const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/
- const Word16 code_fx[], /* i : algebraic excitation Q9*/
- const Word16 voice_fac_fx, /* i : voicing factor Q15*/
- Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/
- Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/
- const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */
- const Word16 code_preQ_fx[], /* i : prequantizer excitation */
- const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */
- Word16 T0, /* i : integer pitch variables Q0 */
- Word16 T0_frac, /* i : Fractional pitch variables Q0*/
- const Word16 coder_type, /* i : coding type */
- Word32 core_brate /* i :core bitrate */
-#ifdef ADD_IVAS_TBE_CODE
+ Word16 Qout
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
,
- const Word16 element_mode, /* i : element mode */
- const Word16 idchan, /* i : channel ID */
- const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */
- const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */
-#endif
-);
-
-void prep_tbe_exc_ivas_fx(
- const Word16 L_frame_fx, /* i : length of the frame */
-#if 1 // def ADD_IVAS_TBE_CODE
- const Word16 L_subfr,
-#endif
- const Word16 i_subfr_fx, /* i : subframe index */
- const Word16 gain_pit_fx, /* i : Pitch gain Q14*/
- const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/
- const Word16 code_fx[], /* i : algebraic excitation Q9*/
- const Word16 voice_fac_fx, /* i : voicing factor Q15*/
- Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/
- Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/
- const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */
- const Word16 code_preQ_fx[], /* i : prequantizer excitation */
- const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */
- Word16 T0, /* i : integer pitch variables Q0 */
- Word16 T0_frac, /* i : Fractional pitch variables Q0*/
- const Word16 coder_type, /* i : coding type */
- Word32 core_brate
-#if 1 // def ADD_IVAS_TBE_CODE
- , /* i : core bitrate */
- const Word16 element_mode, /* i : element mode */
- const Word16 idchan, /* i : channel ID */
- const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */
- const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */
+ Word16 element_mode
#endif
);
-Word16 swb_formant_fac_fx( /* o : Formant filter strength [0,1] */
- const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */
- Word16 *tilt_mem /* i/o: Tilt smoothing memory */
+void prep_tbe_exc_fx(
+ const Word16 L_frame_fx, /* i : length of the frame */
+ const Word16 L_subfr, /* i : subframe length */
+ const Word16 i_subfr_fx, /* i : subframe index */
+ const Word16 gain_pit_fx, /* i : Pitch gain Q14*/
+ const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/
+ const Word16 code_fx[], /* i : algebraic excitation Q9*/
+ const Word16 voice_fac_fx, /* i : voicing factor Q15*/
+ Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/
+ Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/
+ const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */
+ const Word16 code_preQ_fx[], /* i : prequantizer excitation */
+ const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */
+ const Word16 T0, /* i : integer pitch variables Q0 */
+ const Word16 T0_frac, /* i : Fractional pitch variables Q0*/
+ const Word16 coder_type, /* i : coding type */
+ const Word32 core_brate, /* i : core bitrate */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 idchan, /* i : channel ID */
+ const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */
+ const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */
+);
+
+/*! r: Formant filter strength [0,1] */
+Word16 swb_formant_fac_fx(
+ const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */
+ Word16 *tilt_mem /* i/o: Tilt smoothing memory */
);
void wb_tbe_extras_reset_fx(
@@ -3781,8 +3725,8 @@ void const *GetTnsEnabledSingleFilter( void const *p, const Word16 index, Word16
void *SetTnsEnabledSingleFilter( void *p, const Word16 index, const Word16 value );
-void const *GetTnsOnWhite( void const *p, const int16_t index, int16_t *pValue );
-void *SetTnsOnWhite( void *p, const int16_t index, const int16_t value );
+void const *GetTnsOnWhite( void const *p, const Word16 index, Word16 *pValue );
+void *SetTnsOnWhite( void *p, const Word16 index, const Word16 value );
/*tns_base.h*/
/** Reset TNS data.
@@ -4147,8 +4091,8 @@ void cng_params_upd_ivas_fx(
const Word16 element_mode, /* i : Element mode */
const Word16 bwidth /* i : Audio bandwidth */
);
-int16_t get_cng_mode(
- const int32_t last_active_brate /* i : last active bitrate */
+Word16 get_cng_mode(
+ const Word32 last_active_brate /* i : last active bitrate */
);
// core_com_config.c
@@ -4158,15 +4102,7 @@ Word16 get_codec_mode(
);
Word16 getTcxonly(
-#ifdef IVAS_CODE_SWITCHING
- const Word16 element_mode, /* i : IVAS element mode */
-#endif
const Word32 total_brate /* i : total bitrate */
-#ifdef IVAS_CODE_SWITCHING
- ,
- const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0)*/
- const int16_t is_ism_format /* i : flag indicating ISM format */
-#endif
);
Word16 getTcxonly_fx(
@@ -4343,12 +4279,12 @@ void lpc2mdct(
void lpc2mdct_2(
Word16 *lpcCoeffs,
- const int16_t lpcOrder,
+ const Word16 lpcOrder,
Word16 mdct_gains_fx[],
Word16 mdct_gains_e[],
Word16 mdct_inv_gains_fx[],
Word16 mdct_inv_gains_e[],
- const int16_t length );
+ const Word16 length );
void mdct_shaping(
Word32 x[],
@@ -4708,6 +4644,7 @@ Word16 get_min_scalefactor( Word32 x, Word32 y );
Flag is_zero_arr( Word32 *arr, Word16 size );
Flag is_zero_arr16( Word16 *arr, Word16 size );
+Flag is_zero_arr64( Word64 *arr, Word16 size );
void edct2_fx_ivas(
const Word16 n,
@@ -4856,34 +4793,6 @@ Word16 BITS_ALLOC_config_acelp(
const Word16 narrowband,
const Word16 nb_subfr );
-ivas_error config_acelp1(
- const Word16 enc_dec, /* i : encoder/decoder flag */
- const Word32 total_brate, /* i : total bitrate */
- const Word32 core_brate_inp, /* i : core bitrate */
- const Word16 core, /* i : core */
- const Word16 extl, /* i : extension layer */
- const Word32 extl_brate, /* i : extension layer bitrate */
- const Word16 L_frame, /* i : frame length at internal Fs */
- const Word16 GSC_noisy_speech, /* i : GSC on SWB noisy speech flag */
- ACELP_config *acelp_cfg, /* i : ACELP bit-allocation */
- const Word16 signalling_bits, /* i : number of signalling bits */
- const Word16 coder_type, /* i : coder type */
- const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */
- const Word16 tc_subfr, /* i : TC subfr ID */
- const Word16 tc_call, /* i : TC call number (0,1,2,3,5(DEC)) */
- Word16 *nBits_es_Pred, /* o : number of bits for Es_pred Q */
- Word16 *unbits, /* o : number of unused bits */
- const Word16 element_mode, /* i : element mode */
- Word16 *uc_two_stage_flag, /* o : flag undicating two-stage UC */
- const Word16 tdm_lp_reuse_flag, /* i : LPC reuse flag (can be 1 only with secondary channel */
- const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */
- const Word16 idchan, /* i : stereo channel ID */
- const Word16 active_cnt, /* i : Active frame counter */
- const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag*/
- const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */
- const Word16 GSC_IVAS_mode /* i : GSC IVAS mode */
-);
-
Word16 set_ACELP_flag(
const Word16 element_mode, /* i : element mode */
const Word32 element_brate, /* i : element bitrate */
@@ -5011,25 +4920,25 @@ void cb_shape_fx(
// longarith.c
void longadd(
- uint16_t a[], /* i/o: vector of the length lena */
- const uint16_t b[], /* i/o: vector of the length lenb */
- const int16_t lena, /* i/o: length of vector a[] */
- const int16_t lenb /* i/o: length of vector b[] */
+ UWord16 a[], /* i/o: vector of the length lena */
+ const UWord16 b[], /* i/o: vector of the length lenb */
+ const Word16 lena, /* i/o: length of vector a[] */
+ const Word16 lenb /* i/o: length of vector b[] */
);
void longshiftright(
- uint16_t a[], /* i : vector of the length lena */
- const int16_t b, /* i : number of bit positions to shift right */
- uint16_t d[], /* o : vector of the length lend */
- int16_t lena, /* i : length of vector a[] */
- const int16_t lend /* i : length of vector d[] */
+ UWord16 a[], /* i : vector of the length lena */
+ const Word16 b, /* i : number of bit positions to shift right */
+ UWord16 d[], /* o : vector of the length lend */
+ Word16 lena, /* i : length of vector a[] */
+ const Word16 lend /* i : length of vector d[] */
);
void longshiftleft(
- const uint16_t a[], /* i : vector of the length len */
- const int16_t b, /* i : number of bit positions to shift left */
- uint16_t d[], /* o : vector of the length len */
- const int16_t len /* i : length of vector a[] and d[] */
+ const UWord16 a[], /* i : vector of the length len */
+ const Word16 b, /* i : number of bit positions to shift left */
+ UWord16 d[], /* o : vector of the length len */
+ const Word16 len /* i : length of vector a[] and d[] */
);
void longshr(
@@ -5707,7 +5616,7 @@ void enhancer_fx(
void enhancer_ivas_fx(
const Word16 codec_mode, /* i : flag indicating Codec Mode */
const Word32 core_brate, /* i : decoder bitrate */
- const int16_t cbk_index, /* i : */
+ const Word16 cbk_index, /* i : */
const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */
const Word16 coder_type, /* i : coder type */
const Word16 i_subfr, /* i : subframe number */
@@ -5830,33 +5739,19 @@ void tcx_ltp_post_fx32(
Word32 *tcx_buf, /* sig_q */
Word16 sig_q );
-// gs_inact_switching_fx.c
-void Inac_swtch_ematch_fx(
- Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/
- Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */
- Word16 lt_ener_per_band[], /* i/o: Long term energy per band Q12 */
- const Word16 coder_type, /* i : Coding mode */
- const Word16 L_frame, /* i : Frame lenght */
- const Word32 core_brate, /* i : Core bit rate */
- const Word16 Q_exc, /* i : i and output format of exc2 */
- const Word16 bfi, /* i : frame lost indicator */
- const short last_core, /* i : Last core used */
- const short last_codec_mode /* i : Last codec mode */
-);
-
-void Inac_switch_ematch_ivas_fx(
+void Inac_switch_ematch_fx(
Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/
Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */
Word16 lt_ener_per_band[], /* i/o: Long term energy per band Q12 */
const Word16 coder_type, /* i : Coding mode */
- const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */
+ const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */
const Word16 L_frame, /* i : Frame lenght */
const Word16 Q_exc, /* i : input and output format of exc2 */
const Word16 bfi, /* i : frame lost indicator */
const Word16 last_core, /* i : Last core used */
const Word16 last_codec_mode, /* i : Last codec mode */
- const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag*/
- const Word16 element_mode /* i : element mode */
+ const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */
+ const Word16 element_mode /* i : element mode */
);
// igf_base_fx.c
@@ -6089,31 +5984,16 @@ void td_bwe_dec_init_fx(
const Word32 output_Fs /* i : output sampling rate */
);
-// lsf_dec_fx.c
void lsf_dec_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- const Word16 tc_subfr, /* i : TC subframe index Q0*/
- Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/
- Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/
- Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/
- Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/
- Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/
- const Word16 tdm_low_rate_mode /* i : secondary channel low rate mode flag Q0*/
- ,
- const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/
-);
-
-void lsf_dec_ivas_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- const Word16 tc_subfr, /* i : TC subframe index Q0*/
- Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/
- Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/
- Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/
- Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/
- Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/
- const Word16 tdm_low_rate_mode /* i : secondary channel low rate mode flag Q0*/
- ,
- const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/
+ Decoder_State *st_fx, /* i/o: State structure */
+ const Word16 tc_subfr, /* i : TC subframe index Q0*/
+ Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/
+ Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/
+ Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/
+ Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/
+ Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/
+ const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag Q0*/
+ const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/
);
/*! r: index of the maximum value in the input vector */
@@ -6158,6 +6038,15 @@ void v_add_fixed(
const Word16 hdrm /* i : headroom for when subtraction result > 1 or < -1 */
);
+#ifdef VEC_ARITH_OPT_v1
+void v_add_fixed_no_hdrm(
+ const Word32 x1[], /* i : Input vector 1 */
+ const Word32 x2[], /* i : Input vector 2 */
+ Word32 y[], /* o : Output vector that contains vector 1 + vector 2 */
+ const Word16 N /* i : Vector length */
+);
+#endif /* VEC_ARITH_OPT_v1 */
+
void v_add_fixed_me(
const Word32 x1[], /* i : Input vector 1 */
const Word16 x1_e, /* i : Exponent for input vector 1 */
@@ -6192,6 +6081,15 @@ void v_sub_fixed(
const Word16 hdrm /* i : headroom for when subtraction result > 1 or < -1 */
);
+#ifdef VEC_ARITH_OPT_v1
+void v_sub_fixed_no_hdrm(
+ const Word32 x1[], /* i : Input vector 1 */
+ const Word32 x2[], /* i : Input vector 2 */
+ Word32 y[], /* o : Output vector that contains vector 1 - vector 2 */
+ const Word16 N /* i : Vector length */
+);
+#endif /* VEC_ARITH_OPT_v1 */
+
/*! r: dot product of x[] and y[] */
Word32 dotp_fixed(
const Word32 x[], /* i : vector x[] */
@@ -6258,20 +6156,9 @@ void lsf_mid_dec_fx(
Word16 lsp_mid[] /* o : quantized LSPs Q15*/
);
-// cng_dec_fx.c
void CNG_dec_fx(
Decoder_State *st_fx, /* i/o: State structure */
- const Word16 last_element_mode, /* i : last element mode Q0 */
- Word16 Aq[], /* o : LP coefficients Q12 */
- Word16 *lsp_new, /* i/o: current frame LSPs Q15 */
- Word16 *lsf_new, /* i/o: current frame LSFs Qlog2(2.56) */
- Word16 *allow_cn_step, /* o : allow CN step Q0 */
- Word16 *sid_bw, /* i : 0-NB/WB, 1-SWB SID Q0 */
- Word32 *q_env );
-
-void CNG_dec_ivas_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- const Word16 last_element_mode, /* i : last element mode Q0 */
+ const Word16 last_element_mode, /* i : last element mode Q0 */
Word16 Aq[], /* o : LP coefficients Q12 */
Word16 *lsp_new, /* i/o: current frame LSPs Q15 */
Word16 *lsf_new, /* i/o: current frame LSFs Qlog2(2.56) */
@@ -6445,12 +6332,7 @@ void DetectTonalComponents(
const Word16 nSamples,
const Word16 nSamplesCore,
Word16 floorPowerSpectrum, /* i: lower limit for power spectrum bins */
- Word16 element_mode
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- const PsychoacousticParameters *psychParamsCurrent
-#endif
-);
+ Word16 element_mode );
void RefineTonalComponents(
Word16 indexOfTonalPeak[],
@@ -6470,12 +6352,7 @@ void RefineTonalComponents(
const Word16 nSamples,
const Word16 nSamplesCore,
const Word16 floorPowerSpectrum, /* i: lower limit for power spectrum bins */
- Word16 element_mode
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- const PsychoacousticParameters *psychParamsCurrent
-#endif
-);
+ Word16 element_mode );
void ivas_RefineTonalComponents_fx(
Word16 indexOfTonalPeak[],
@@ -6500,11 +6377,11 @@ void ivas_RefineTonalComponents_fx(
const PsychoacousticParameters *psychParamsCurrent );
ivas_error PsychoacousticParameters_Init(
- const int32_t sr_core, /* i : sampling rate of core-coder */
- const int16_t nBins, /* i : Number of bins (spectral lines) */
- const int8_t nBands, /* i : Number of spectrum subbands */
- const int16_t isTCX20, /* i : Flag indicating if the subband division is for TCX20 or TCX10 */
- const int16_t isWarped, /* i : Flag indicating if the scale is linear or warped */
+ const Word32 sr_core, /* i : sampling rate of core-coder */
+ const Word16 nBins, /* i : Number of bins (spectral lines) */
+ const Word8 nBands, /* i : Number of spectrum subbands */
+ const Word16 isTCX20, /* i : Flag indicating if the subband division is for TCX20 or TCX10 */
+ const Word16 isWarped, /* i : Flag indicating if the scale is linear or warped */
PsychoacousticParameters *pPsychParams );
// TonalIMDCTconcealment_fx.c
@@ -6532,12 +6409,7 @@ void TonalMDCTConceal_SaveFreqSignal(
Word16 nNewSamplesCore,
const Word16 *scaleFactors,
const Word16 *scaleFactors_exp,
- const Word16 gain_tcx_exp
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- ,
- const Word16 infoIGFStartLine
-#endif
-);
+ const Word16 gain_tcx_exp );
void TonalMDCTConceal_SaveFreqSignal_ivas_fx(
TonalMDCTConcealPtr hTonalMDCTConc,
@@ -6562,20 +6434,13 @@ void TonalMDCTConceal_Detect(
const Word32 pitchLag, /*IN */
Word16 *umIndices, /*OUT*/
Word16 element_mode /* IN */
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- const PsychoacousticParameters *psychParamsCurrent
-#endif
);
void TonalMDCTConceal_Apply(
- const TonalMDCTConcealPtr hTonalMDCTConc, /*IN */
- Word32* mdctSpectrum, /*IN/OUT*/
- Word16* mdctSpectrum_exp /*IN */
-#ifdef IVAS_CODE_MDCT_GSHAPE
- , const PsychoacousticParameters* psychParamsCurrent)
-#endif
- );
+ const TonalMDCTConcealPtr hTonalMDCTConc, /*IN */
+ Word32 *mdctSpectrum, /*IN/OUT*/
+ Word16 *mdctSpectrum_exp /*IN */
+);
void TonalMDCTConceal_Apply_ivas_fx(
TonalMDCTConcealPtr hTonalMDCTConc, /*IN */
@@ -6605,9 +6470,6 @@ void TonalMDCTConceal_InsertNoise(
Word16 *pSeed, /*IN/OUT*/
const Word16 tiltCompFactor,
Word16 crossfadeGain,
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- const Word16concealment_noise[L_FRAME48k],
-#endif
const Word16 crossOverFreq );
void TonalMDCTConceal_SaveTimeSignal(
@@ -6649,6 +6511,18 @@ void hf_synth_fx(
const Word16 Q_syn2 /* i : synthesis scaling */
);
+void hf_synth_ivas_fx(
+ ZERO_BWE_DEC_HANDLE hBWE_zero, /* i/o: handle to 0 bit BWE parameters */
+ const Word32 core_brate, /* i : core bitrate Q0*/
+ const Word16 output_frame, /* i : output frame length Q0*/
+ const Word16 *Aq, /* i : quantized Az Q12*/
+ const Word16 *exc, /* i : excitation at 12.8 kHz Q_exc*/
+ Word16 *synth, /* i : 12.8kHz synthesis signal Q_syn2*/
+ Word16 *synth16k, /* o : 16kHz synthesis signal Q_syn2*/
+ const Word16 Q_exc, /* i : excitation scaling */
+ const Word16 Q_syn2 /* i : synthesis scaling */
+);
+
void hf_synth_amr_wb_init_fx(
AMRWB_IO_DEC_HANDLE hAmrwb_IO /* i/o: AMR-WB IO data handle */
);
@@ -6681,12 +6555,12 @@ void hf_synth_amr_wb_fx(
// dec_post_fx
void Init_post_filter_fx(
PFSTAT_HANDLE hPFstat /* i : core decoder parameters */
-); /* (i) : core decoder parameters */
+); /* i : core decoder parameters */
void nb_post_filt_fx(
const Word16 L_frame, /* i : frame length */
- PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
+ PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
Word16 *psf_lp_noise, /* i : Long term noise Q8 */
const Word16 tmp_noise, /* i : noise energy Q0 */
Word16 *Synth, /* i : 12k8 synthesis Qsyn */
@@ -6698,25 +6572,14 @@ void nb_post_filt_fx(
);
void formant_post_filt_fx(
- PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
+ PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
Word16 *synth_in, /* i : 12k8 synthesis */
- Word16 *Aq, /* i : LP filter coefficient */
- Word16 *synth_out, /* i/o: i signal */
- Word16 L_frame,
- Word32 lp_noise, /* (i) : background noise energy (15Q16) */
- Word32 rate, /* (i) : bit-rate */
- const Word16 off_flag /* i : off flag */
-);
-
-void formant_post_filt_ivas_fx(
- PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
- Word16 *synth_in, /* i : 12k8 synthesis */
- Word16 *Aq, /* i : LP filter coefficient */
- Word16 *synth_out, /* i/o: i signal */
- Word16 L_frame,
- Word32 lp_noise, /* (i) : background noise energy (15Q16) */
- Word32 rate, /* (i) : bit-rate */
- const Word16 off_flag /* i : off flag */
+ Word16 *Aq, /* i : LP filter coefficient Q12 */
+ Word16 *synth_out, /* i/o: input signal */
+ const Word16 L_frame, /* i : frame length */
+ const Word32 lp_noise, /* (i) : background noise energy (15Q16) */
+ const Word32 brate, /* (i) : bit-rate */
+ const Word16 off_flag /* i : off flag */
);
void Filt_mu_fx(
Word16 *sig_in, /* i : signal (beginning at sample -1) */
@@ -6882,33 +6745,17 @@ void PulseResynchronization_fx(
Word32 /*float*/ const pitchEnd /*i Q16*/
);
-// gs_dec_fx.c
void decod_audio_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/
- const Word16 *Aq, /* i : LP filter coefficient Q12*/
- Word16 *pitch_buf, /* o : floating pitch values for each subframe Q6*/
- Word16 *voice_factors, /* o : voicing factors Q15*/
- Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/
- Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/
- Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/
- Word16 *lsf_new /* i : ISFs at the end of the frame Qx*/
- ,
- Word16 *gain_buf /*Q14*/
-);
-
-void decod_audio_ivas_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/
- const Word16 *Aq, /* i : LP filter coefficient Q12*/
- Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/
- Word16 *voice_factors, /* o : voicing factors Q15*/
- Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/
- Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/
- Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/
- Word16 *lsf_new /* i : ISFs at the end of the frame Qx*/
- ,
- Word16 *gain_buf, /*Q14*/
+ Decoder_State *st_fx, /* i/o: decoder static memory */
+ Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/
+ const Word16 *Aq, /* i : LP filter coefficient Q12*/
+ Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/
+ Word16 *voice_factors, /* o : voicing factors Q15*/
+ Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/
+ Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/
+ Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/
+ Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/
+ Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/
const Word16 tdm_lp_reuse_flag, /* i : LPC reuse flag Q0*/
const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag Q0*/
const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag Q0*/
@@ -6916,29 +6763,16 @@ void decod_audio_ivas_fx(
);
void gsc_dec_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/
- const Word16 pit_band_idx, /* i : bin position of the cut-off frequency Q0*/
- const Word16 Diff_len, /* i : Lenght of the difference signal (before pure spectral) Q0*/
- const Word16 bits_used, /* i : Number of bit used before frequency Q Q0*/
- const Word16 nb_subfr, /* i : Number of subframe considered Q0*/
- const Word16 coder_type, /* i : coding type Q0*/
- Word16 *last_bin, /* i : last bin of bit allocation Q0*/
- const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/
- Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/
- Word16 Q_exc );
-
-void gsc_dec_ivas_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/
+ Decoder_State *st_fx, /* i/o: State structure */
+ Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/
const Word16 pit_band_idx, /* i : bin position of the cut-off frequency ` Q0*/
const Word16 Diff_len, /* i : Lenght of the difference signal (before pure spectral) Q0*/
const Word16 bits_used, /* i : Number of bit used before frequency Q Q0*/
const Word16 nb_subfr, /* i : Number of subframe considered Q0*/
const Word16 coder_type, /* i : coding type Q0*/
Word16 *last_bin, /* i : last bin of bit allocation Q0*/
- const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/
- Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/
+ const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/
+ Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/
Word16 *Q_exc );
void GSC_dec_init(
@@ -6949,18 +6783,15 @@ void GSC_dec_init_ivas_fx(
GSC_DEC_HANDLE hGSCDec /* i/o: GSC data handle */
);
-
-// gain_dec_fx.c
-
void Es_pred_dec_fx(
- Word16 *Es_pred, /* o : predicited scaled innovation energy Q8*/
- const Word16 enr_idx, /* i : indice */
- const Word16 nb_bits, /* i : number of bits */
- const Word16 no_ltp /* i : no LTP flag */
+ Word16 *Es_pred, /* o : predicited scaled innovation energy Q8*/
+ const Word16 enr_idx, /* i : indice */
+ const Word16 nb_bits, /* i : number of bits */
+ const Word16 no_ltp /* i : no LTP flag */
);
void gain_dec_tc_fx(
- Decoder_State *st_fx, /* i/o: decoder state structure */
+ Decoder_State *st_fx, /* i/o: decoder state structure */
const Word16 *code_fx, /* i : algebraic code excitation */
const Word16 i_subfr_fx, /* i : subframe number */
const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
@@ -7005,24 +6836,8 @@ void gain_dec_lbr_fx(
Word16 *gain_inov_fx, /* o : gain of the innovation (used for normalization) Q12*/
Word32 *norm_gain_code_fx, /* o : norm. gain of the codebook excitation Q16*/
Word32 gc_mem[], /* i/o: gain_code from previous subframes */
- Word16 gp_mem[] /* i/o: gain_pitch from previous subframes */
- ,
- const Word16 L_subfr /* i : subfr lenght */
-);
-
-void gain_dec_lbr_ivas_fx(
- Decoder_State *st_fx, /* i/o: decoder state structure */
- const Word16 coder_type, /* i : coding type */
- const Word16 i_subfr, /* i : subframe index */
- const Word16 *code_fx, /* i : algebraic excitation Q9 */
- Word16 *gain_pit_fx, /* o : quantized pitch gain Q14*/
- Word32 *gain_code_fx, /* o : quantized codebook gain Q16*/
- Word16 *gain_inov_fx, /* o : gain of the innovation (used for normalization) Q12*/
- Word32 *norm_gain_code_fx, /* o : norm. gain of the codebook excitation Q16*/
- Word32 gc_mem[], /* i/o: gain_code from previous subframes */
- Word16 gp_mem[] /* i/o: gain_pitch from previous subframes */
- ,
- const Word16 L_subfr /* i : subfr lenght */
+ Word16 gp_mem[], /* i/o: gain_pitch from previous subframes */
+ const Word16 L_subfr /* i : subfr lenght */
);
void lp_gain_updt_fx(
@@ -7043,13 +6858,14 @@ void lp_gain_updt_ivas_fx(
const Word16 L_frame /* i : length of the frame */
);
-Word32 gain_dec_gaus_fx( /* o : quantized codebook gain Q16 */
- Word16 index, /* i : quantization index */
- const Word16 bits, /* i : number of bits to quantize */
- const Word16 lowBound, /* i : lower bound of quantizer (dB) */
- const Word16 topBound, /* i : upper bound of quantizer (dB) */
- const Word16 inv_gain_inov, /* o : unscaled innovation gain Q12 */
- Word32 *L_norm_gain_code /* o : gain of normalized gaussian excitation Q16 */
+/*! r: quantized codebook gain Q16 */
+Word32 gain_dec_gaus_fx(
+ Word16 index, /* i : quantization index */
+ const Word16 bits, /* i : number of bits to quantize */
+ const Word16 lowBound, /* i : lower bound of quantizer (dB) */
+ const Word16 topBound, /* i : upper bound of quantizer (dB) */
+ const Word16 inv_gain_inov, /* o : unscaled innovation gain Q12 */
+ Word32 *L_norm_gain_code /* o : gain of normalized gaussian excitation Q16 */
);
void gain_dec_SQ_fx(
@@ -7143,22 +6959,7 @@ void re8_PPV_fx(
Word16 y[] /* o : point in RE8 (8-dimensional integer vector) Q0 */
);
-// dec_pit_exc_fx.c
void dec_pit_exc_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 *Aq_fx, /* i : LP filter coefficient */
- const Word16 coder_type, /* i : coding type */
- const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
- Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */
- Word16 *code_fx, /* o : innovation */
- Word16 *exc_fx, /* i/o: adapt. excitation exc */
- Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */
- const Word16 nb_subfr_fx /* i : Number of subframe considered */
- ,
- Word16 *gain_buf /*Q14*/
-);
-
-void dec_pit_exc_ivas_fx(
Decoder_State *st_fx, /* i/o: decoder static memory */
const Word16 *Aq_fx, /* i : LP filter coefficient */
const Word16 coder_type, /* i : coding type */
@@ -7168,7 +6969,7 @@ void dec_pit_exc_ivas_fx(
Word16 *exc_fx, /* i/o: adapt. excitation exc */
Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */
const Word16 nb_subfr_fx, /* i : Number of subframe considered */
- Word16 *gain_buf, /*Q14*/
+ Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/
const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer */
);
@@ -7212,23 +7013,8 @@ void Mode2_delta_pit_dec(
Word16 **pt_indice /* i/o: pointer to Vector of Q indexes */
);
-Word16 pit_decode_fx( /* o : floating pitch value */
- Decoder_State *st_fx, /* i/o: decoder state structure */
- const Word32 core_brate, /* i : core bitrate */
- const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */
- const Word16 L_frame, /* i : length of the frame */
- Word16 i_subfr, /* i : subframe index */
- const Word16 coder_type, /* i : coding type */
- Word16 *limit_flag, /* i/o: restrained(0) or extended(1) Q limits */
- Word16 *T0, /* o : close loop integer pitch */
- Word16 *T0_frac, /* o : close loop fractional part of the pitch */
- Word16 *T0_min, /* i/o: delta search min for sf 2 & 4 */
- Word16 *T0_max, /* i/o: delta search max for sf 2 & 4 */
- const Word16 L_subfr /* i : subframe length */
-);
-
/* o : floating pitch value */
-Word16 pit_decode_ivas_fx(
+Word16 pit_decode_fx(
Decoder_State *st_fx, /* i/o: decoder state structure */
const Word32 core_brate, /* i : core bitrate */
const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */
@@ -7589,21 +7375,7 @@ void configureFdCngDec_fx(
const Word16 Last_L_frame,
const Word16 element_mode );
-/* Apply the CLDFB-based CNG */
Word16 ApplyFdCng_fx(
- Word16 *timeDomainInput, /* i : pointer to time domain i */
- Word16 Q,
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- Word16 *powerSpectrum,
-#endif
- Word32 **cldfbBufferReal, /* i/o: real part of the CLDFB buffer */
- Word32 **cldfbBufferImag, /* i/o: imaginary part of the CLDFB buffer */
- Word16 *cldfbBufferScale, /* o : pointer to the scalefactor for real and imaginary part of the CLDFB buffer */
- Decoder_State *st,
- const Word16 concealWholeFrame, /* i : binary flag indicating frame loss */
- Word16 is_music );
-
-Word16 ApplyFdCng_ivas_fx(
Word16 *timeDomainInput, /* i : pointer to time domain input */
Word16 Q,
Word32 *powerSpectrum,
@@ -7619,9 +7391,6 @@ Word16 ApplyFdCng_ivas_fx(
void perform_noise_estimation_dec_fx(
const Word16 *timeDomainInput, /* i: pointer to time domain i */
const Word16 Q,
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- float *power_spectrum,
-#endif
HANDLE_FD_CNG_DEC hFdCngDec /* i/o: FD_CNG structure containing all buffers and variables */
);
@@ -8195,13 +7964,11 @@ void FEC_pitch_estim_fx(
const Word32 old_pitch_buf[], /* i : buffer of old subframe pitch values 15Q16 */
Word16 *bfi_pitch, /* i/o: update of the estimated pitch for FEC */
Word16 *bfi_pitch_frame, /* o : frame length when pitch was updated */
- Word16 *upd_cnt /* i/o: update counter */
- ,
- const Word16 coder_type, /* i : coder_type */
- Word16 element_mode /* i : element mode */
+ Word16 *upd_cnt, /* i/o: update counter */
+ const Word16 coder_type, /* i : coder_type */
+ Word16 element_mode /* i : element mode */
);
-// FEC_scale_sync_fx.c
void FEC_scale_syn_fx(
const Word16 L_frame, /* i : length of the frame */
Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/
@@ -8228,66 +7995,37 @@ void FEC_scale_syn_fx(
Word16 *mem_syn, /* o: initial synthesis filter states */
Word16 Q_exc,
Word16 Q_syn,
+ const Word16 element_mode, /* i : element mode */
const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */
- const Word16 force_scaling /* i: force scaling */
-);
-
-void FEC_scale_syn_ivas_fx(
- const Word16 L_frame, /* i : length of the frame */
- Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/
- Word16 clas, /* i/o: frame classification */
- const Word16 last_good, /* i: last good frame classification */
- Word16 *synth, /* i/o: synthesized speech at Fs = 12k8 Hz */
- const Word16 *pitch, /* i: pitch values for each subframe */
- Word32 L_enr_old, /* i: energy at the end of previous frame */
- Word32 L_enr_q, /* i: transmitted energy for current frame */
- const Word16 coder_type, /* i: coder type */
- const Word16 LSF_Q_prediction, /* i : LSF prediction mode */
- Word16 *scaling_flag, /* i/o: flag to indicate energy control of syn */
- Word32 *lp_ener_FEC_av, /* i/o: averaged voiced signal energy */
- Word32 *lp_ener_FEC_max, /* i/o: averaged voiced signal energy */
- const Word16 bfi, /* i: current frame BFI */
- const Word32 total_brate, /* i: total bitrate */
- const Word16 prev_bfi, /* i: previous frame BFI */
- const Word32 last_core_brate, /* i: previous frame core bitrate */
- Word16 *exc, /* i/o: excitation signal without enhancement */
- Word16 *exc2, /* i/o: excitation signal with enhancement */
- Word16 Aq[], /* i/o: LP filter coefs (can be modified if BR) */
- Word16 *old_enr_LP, /* i/o: LP filter E of last good voiced frame */
- const Word16 *mem_tmp, /* i: temp. initial synthesis filter states */
- Word16 *mem_syn, /* o: initial synthesis filter states */
- Word16 Q_exc,
- Word16 Q_syn,
- const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */
- const Word16 force_scaling /* i: force scaling */
+ const Word16 force_scaling /* i : force scaling */
);
// LD_music_post_filter_fx.c
void LD_music_post_filter_fx(
- MUSIC_POSTFILT_HANDLE hMusicPF, /* i/o: LD music postfilter handle */
- const Word16 dtc_in[], /* i : i synthesis Qdct */
- Word16 dtc_out[], /* o : output synthesis Qdct */
- const Word32 core_brate, /* i : core bitrate Q0 */
- Word16 *Old_ener_Q, /* i/o : Old energy scaling factor */
- const Word16 coder_type, /* i : Coder type : -1 in case of IO Q0 */
- const Word16 Last_coder_type, /* i : i scaling Q0 */
- const Word16 Qdct /* i : i scaling Q0 */
+ MUSIC_POSTFILT_HANDLE hMusicPF, /* i/o: LD music postfilter handle */
+ const Word16 dtc_in[], /* i : i synthesis Qdct */
+ Word16 dtc_out[], /* o : output synthesis Qdct */
+ const Word32 core_brate, /* i : core bitrate Q0 */
+ Word16 *Old_ener_Q, /* i/o: Old energy scaling factor */
+ const Word16 coder_type, /* i : Coder type : -1 in case of IO Q0 */
+ const Word16 Last_coder_type, /* i : i scaling Q0 */
+ const Word16 Qdct /* i : i scaling Q0 */
);
void Prep_music_postP_fx(
- Word16 exc_buffer_in[], /* i/o: excitation buffer Q_exc*/
- Word16 dct_buffer_out[], /* o : DCT output buffer (qdct)*/
- Word16 filt_lfE[], /* i/o: long term spectrum energy Q15 */
- const Word16 last_core, /* i : last core */
- const Word16 element_mode, /* i : element mode */
- const Word16 *pitch_buf, /* i : current frame pitch information Q6*/
- Word16 *LDm_enh_lp_gbin, /* o : smoothed suppression gain, per bin FFT Q15*/
- const Word16 Q_exc, /* i : excitation scaling */
- Word16 *qdct /* o : Scaling factor of dct coefficient */
+ Word16 exc_buffer_in[], /* i/o: excitation buffer Q_exc*/
+ Word16 dct_buffer_out[], /* o : DCT output buffer (qdct)*/
+ Word16 filt_lfE[], /* i/o: long term spectrum energy Q15 */
+ const Word16 last_core, /* i : last core */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 *pitch_buf, /* i : current frame pitch information Q6*/
+ Word16 *LDm_enh_lp_gbin, /* o : smoothed suppression gain, per bin FFT Q15*/
+ const Word16 Q_exc, /* i : excitation scaling */
+ Word16 *qdct /* o : Scaling factor of dct coefficient */
);
void Post_music_postP_fx(
- Word16 dct_buffer_in[], /* i/o: excitation buffer */
+ Word16 dct_buffer_in[], /* i/o: excitation buffer */
Word16 *exc2, /* i/o: Current excitation to be overwriten */
const Word16 *mem_tmp, /* i : previous frame synthesis memory */
Word16 *st_mem_syn2, /* i/o: current frame synthesis memory */
@@ -8297,15 +8035,14 @@ void Post_music_postP_fx(
Word16 *prev_Q_syn, /* i : previsous frame synthesis scaling */
Word16 *Q_syn, /* i : Current frame synthesis scaling */
Word16 *mem_syn_clas_estim_fx, /* i : old 12k8 synthesis used for frame classification*/
- const Word16 IsIO, /* i: Flag to indicate IO mode */
- Word16 *mem_deemph, /* i/o: speech deemph filter memory */
- Word16 *st_pst_old_syn_fx, /* i/o: psfiler */
- Word16 *st_pst_mem_deemp_err_fx, /* i/o: psfiler */
+ const Word16 IsIO, /* i : Flag to indicate IO mode */
+ Word16 *mem_deemph, /* i/o: speech deemph filter memory */
+ Word16 *st_pst_old_syn_fx, /* i/o: psfiler */
+ Word16 *st_pst_mem_deemp_err_fx, /* i/o: psfiler */
Word16 *mem_agc,
- PFSTAT *pf_stat, /* i/o: All memories related to NB post filter */
- const Word16 *tmp_buffer /* tmp_buffer in Q-1 */
- ,
- Word16 *mem_tmp2 /* Temporary memory used with scale_syn */
+ PFSTAT *pf_stat, /* i/o: All memories related to NB post filter */
+ const Word16 *tmp_buffer, /* tmp_buffer in Q-1 */
+ Word16 *mem_tmp2 /* Temporary memory used with scale_syn */
);
void music_postfilt_init(
@@ -8332,10 +8069,6 @@ void improv_amr_wb_gs_fx(
const Word16 Last_ener_fx, /* i : Last energy (Q8) Q0*/
const Word16 rate_switching_reset, /* i : rate switching reset flag Q0*/
const Word16 last_coder_type /* i : Last coder_type Q0*/
-#ifdef ADD_IVAS_GS_DEC_IMPR
- ,
- const Word16 VeryLowRateSTflag /* i : Enable the noise enhancement for very low rate stereo generic mode */
-#endif
);
// dec_amr_wb_fx.c
@@ -8387,18 +8120,7 @@ ivas_error ppp_quarter_decoder_fx(
void open_decoder_LPD_fx(
Decoder_State *st,
const Word32 total_brate, /* Q0 */
-#ifdef NEW_IVAS_OPEN_DEC
- const Word32 last_total_brate,
-#endif
- const Word16 bwidth /* Q0 */
-#ifdef NEW_IVAS_OPEN_DEC
- ,
- const Word16 is_mct, /* i : MCT mode flag */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- const Word16 last_element_mode,
-#endif
- const Word16 is_init /* i : indicate call from init_decoder() to avoid double TC initialization */
-#endif
+ const Word16 bwidth /* Q0 */
);
void open_decoder_LPD_ivas_fx(
Decoder_State *st, /* i/o: decoder state structure */
@@ -8503,7 +8225,7 @@ void stat_noise_uv_mod_ivas_fx(
const Word16 *lsp_mid, /* i : LSP vector at 2nd sfr Q=15*/
Word16 *Aq, /* o : A(z) quantized for the 4 subframes Q=12*/
Word16 *exc2, /* i/o: excitation buffer Q=Q_exc*/
- Word16 Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */
+ Word16 *Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */
const Word16 bfi, /* i : Bad frame indicator */
Word32 *ge_sm, /* i/o: smoothed excitation gain Q=Q_stat_noise_ge (6)*/
Word16 *uv_count, /* i/o: unvoiced counter */
@@ -8537,38 +8259,28 @@ Word16 FEC_enhACB_fx(
const Word16 puls_pos, /* i : decoder position of the last glottal pulses decoded in the previous frame */
const Word16 bfi_pitch /* i : Q6 pitch used for concealment */
);
-Word16 FEC_synchro_exc_fx( /* o : do_WI flag */
- const Word16 L_frame, /* i : length of the frame */
- Word16 *exc, /* i/o: exc vector to modify */
- const Word16 desire_puls_pos, /* i : Pulse position send by the encoder */
- const Word16 true_puls_pos, /* i : Present pulse location */
- const Word16 Old_pitch /* i : Pitch use to create temporary adaptive codebook */
+
+/*! r: do_WI flag */
+Word16 FEC_synchro_exc_fx(
+ const Word16 L_frame, /* i : length of the frame */
+ Word16 *exc, /* i/o: exc vector to modify */
+ const Word16 desire_puls_pos, /* i : Pulse position send by the encoder */
+ const Word16 true_puls_pos, /* i : Present pulse location */
+ const Word16 Old_pitch /* i : Pitch use to create temporary adaptive codebook */
);
-// dec_uv_fx.c
void decod_unvoiced_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 coder_type, /* Q0 i : coding type */
- Word16 *tmp_noise_fx, /* Q5 o : long term temporary noise energy */
- Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe */
- Word16 *voice_factors_fx, /* Q15 o : voicing factors */
- Word16 *exc_fx, /* Q_X o : adapt. excitation exc */
- Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */
- Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */
- Word16 *gain_buf );
-
-void decod_unvoiced_ivas_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */
- const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
- const int16_t uc_two_stage_flag, /* i : flag indicating two-stage UC */
- const Word16 coder_type, /* Q0 i : coding type */
- Word16 *tmp_noise_fx, /* Q0 o : long term temporary noise energy */
- Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe*/
- Word16 *voice_factors_fx, /* Q15 o : voicing factors */
- Word16 *exc_fx, /* Q_X o : adapt. excitation exc */
- Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */
- Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */
+ Decoder_State *st_fx, /* i/o: decoder static memory */
+ const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */
+ const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
+ const Word16 uc_two_stage_flag, /* i : flag indicating two-stage UC */
+ const Word16 coder_type, /* Q0 i : coding type */
+ Word16 *tmp_noise_fx, /* Q0 o : long term temporary noise energy */
+ Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe*/
+ Word16 *voice_factors_fx, /* Q15 o : voicing factors */
+ Word16 *exc_fx, /* Q_X o : adapt. excitation exc */
+ Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */
+ Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */
Word16 *gain_buf );
// gaus_dec_fx.c
@@ -8600,37 +8312,20 @@ void gaus_L2_dec(
Word16 *seed_acelp /*i/o : random seed Q0 */
);
-// dec_gen_voic_fx.c
ivas_error decod_gen_voic_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 L_frame_fx, /* i : length of the frame */
- const Word16 sharpFlag_fx, /* i : formant sharpening flag */
- const Word16 *Aq_fx, /* i : LP filter coefficient */
- const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
- const Word16 do_WI_fx, /* i : do interpolation after a FER */
- Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */
- Word16 *voice_factors_fx, /* o : voicing factors */
- Word16 *exc_fx, /* i/o: adapt. excitation exc */
- Word16 *exc2_fx, /* i/o: adapt. excitation/total exc */
- Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */
- Word16 *unbits, /* number of unused bits */
- Word16 *gain_buf /*Q14*/
-);
-
-ivas_error decod_gen_voic_ivas_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 L_frame, /* i : length of the frame */
- const Word16 sharpFlag_fx, /* i : formant sharpening flag */
- const Word16 *Aq_fx, /* i : LP filter coefficient */
- const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
- const Word16 do_WI_fx, /* i : do interpolation after a FER */
- Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */
- Word16 *voice_factors_fx, /* o : voicing factors */
- Word16 *exc_fx, /* i/o: adapt. excitation exc */
- Word16 *exc2_fx, /* i/o: adapt. excitation/total exc */
- Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */
- Word16 *unbits, /* number of unused bits */
- Word16 *gain_buf,
+ Decoder_State *st_fx, /* i/o: decoder static memory */
+ const Word16 L_frame, /* i : length of the frame */
+ const Word16 sharpFlag_fx, /* i : formant sharpening flag */
+ const Word16 *Aq_fx, /* i : LP filter coefficient */
+ const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
+ const Word16 do_WI_fx, /* i : do interpolation after a FER */
+ Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */
+ Word16 *voice_factors_fx, /* o : voicing factors */
+ Word16 *exc_fx, /* i/o: adapt. excitation exc */
+ Word16 *exc2_fx, /* i/o: adapt. excitation/total exc */
+ Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */
+ Word16 *unbits, /* number of unused bits */
+ Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/
const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer */
);
@@ -8769,10 +8464,10 @@ void mode_switch_decoder_LPD_ivas_fx(
// ari_hm_dec.c
-int16_t DecodeIndex(
+Word16 DecodeIndex(
Decoder_State *st,
- const int16_t Bandwidth, /* o : NB, 1: (S)WB */
- int16_t *PeriodicityIndex );
+ const Word16 Bandwidth, /* o : NB, 1: (S)WB */
+ Word16 *PeriodicityIndex );
Word16
DecodeIndex_fx(
Decoder_State *st,
@@ -8849,7 +8544,7 @@ void IGFSCFDecoderReset(
void IGFSCFDecoderDecode(
IGFSCFDEC_INSTANCE_HANDLE hPublicData, /* i/o: handle to public data or NULL in case there was no instance created */
Decoder_State *st, /* i/o: pointer to decoder state */
- int16_t *sfe, /* o : ptr to an array which will contain the decoded quantized coefficients */
+ Word16 *sfe, /* o : ptr to an array which will contain the decoded quantized coefficients */
const Word16 igfGridIdx, /* i : igf grid index see declaration of IGF_GRID_IDX for details */
const Word16 indepFlag /* i : if 1 on input the decoder will be forced to reset,
if 0 on input the decoder will be forced to encode without a reset */
@@ -8950,28 +8645,18 @@ void tcx_hm_modify_envelope(
);
// tns_base_dec_fx.c
-#ifdef IVAS_CODE
-void
-#else
Word16
-#endif
ReadTnsData( STnsConfig const *pTnsConfig,
Decoder_State *st,
Word16 *pnBits,
Word16 *stream,
Word16 *pnSize );
-#define IVAS_CODE
-#ifdef IVAS_CODE
-void
-#else
-Word16
-#endif
-ReadTnsData_ivas_fx( STnsConfig const *pTnsConfig,
- Decoder_State *st,
- Word16 *pnBits,
- Word16 *stream,
- Word16 *pnSize );
-#undef IVAS_CODE
+
+void ReadTnsData_ivas_fx( STnsConfig const *pTnsConfig,
+ Decoder_State *st,
+ Word16 *pnBits,
+ Word16 *stream,
+ Word16 *pnSize );
Word16 DecodeTnsData( STnsConfig const *pTnsConfig,
Word16 const *stream,
@@ -8987,11 +8672,11 @@ Word16 DecodeTnsData_ivas_fx(
// parametr_bitmapping.c using ivas
void GetParameters(
ParamsBitMap const *paramsBitMap,
- const int16_t nParams,
+ const Word16 nParams,
void const *pParameter,
- int16_t **pStream,
- int16_t *pnSize,
- int16_t *pnBits );
+ Word16 **pStream,
+ Word16 *pnSize,
+ Word16 *pnBits );
void GetParameters_fx(
ParamsBitMap const *paramsBitMap,
@@ -9011,10 +8696,10 @@ void EncodeTnsData_ivas_fx(
void SetParameters(
ParamsBitMap const *paramsBitMap,
- const int16_t nParams,
+ const Word16 nParams,
void *pParameter,
- const int16_t **pStream,
- int16_t *pnSize );
+ const Word16 **pStream,
+ Word16 *pnSize );
void SetParameters_fx(
ParamsBitMap const *paramsBitMap,
@@ -9025,18 +8710,18 @@ void SetParameters_fx(
void WriteToBitstream(
ParamsBitMap const *paramsBitMap,
- const int16_t nParams,
- const int16_t **pStream,
- int16_t *pnSize,
+ const Word16 nParams,
+ const Word16 **pStream,
+ Word16 *pnSize,
BSTR_ENC_HANDLE hBstr,
- int16_t *pnBits );
+ Word16 *pnBits );
void ReadFromBitstream(
ParamsBitMap const *paramsBitMap,
- const int16_t nArrayLength,
+ const Word16 nArrayLength,
Decoder_State *st,
- int16_t **pStream,
- int16_t *pnSize );
+ Word16 **pStream,
+ Word16 *pnSize );
void ReadFromBitstream_fx(
ParamsBitMap const *paramsBitMap,
@@ -9157,15 +8842,8 @@ Word16 decode_lpc_avq_fx(
Decoder_State *st, /* i/o: decoder state structure */
const Word16 numlpc, /* i : Number of sets of lpc */
Word16 *param_lpc /* o : lpc parameters */
-#ifdef IVAS_CODE_AVQ_LPC
- ,
- const Word16 ch, /* i : channel */
- const Word16 element_mode, /* i : element mode */
- const Word16 sns_low_br_mode /* i : SNS low-bitrate mode */
-#endif
);
-// decode_lpc_avq_ivas_fx declaration with IVAS_CODE_AVQ_LPC enabled
Word16 decode_lpc_avq_ivas_fx(
Decoder_State *st, /* i/o: decoder state structure */
const Word16 numlpc, /* i : Number of sets of lpc */
@@ -9389,17 +9067,6 @@ void modify_lsf(
void con_tcx_fx(
Decoder_State *st, /* i/o: coder memory state */
Word16 synth[] /* i/o: synth[] */ /*Q0 */
-#ifdef IVAS_CODE_CON_TCX
- ,
- const Word16 coh, /* i : coherence of stereo signal */
- Word16 *noise_seed, /* i/o: noise seed for stereo */
- const Word16 only_left /* i : TD-PLC only in left channel */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- ,
- const float *A_cng /* i : CNG LP filter coefficients */
-#endif
-#endif
-
);
// er_scale_sync.c
@@ -9559,31 +9226,6 @@ void d_gain_pred_fx(
Word16 *Es_pred, /* o : predicited scaled innovation energy */
Word16 **pt_indice /* i/o: pointer to the buffer of indices */
);
-// acelp_core_dec_fx.c
-ivas_error acelp_core_dec_fx(
- Decoder_State *st_fx, /* i/o: decoder state structure */
- Word16 output[], /* o : synthesis @internal Fs */
- Word16 synth_out[], /* o : synthesis */
- Word16 save_hb_synth[], /* o : HB synthesis */
- Word32 bwe_exc_extended[], /* i/o: bandwidth extended excitation */
- Word16 *voice_factors, /* o : voicing factors */
- Word16 old_syn_12k8_16k[], /* o : intermediate ACELP synthesis for SWB BWE */
- Word16 sharpFlag,
- Word16 pitch_buf_fx[NB_SUBFR16k], /* o : floating pitch for each subframe */
- Word16 *unbits, /* o : number of unused bits */
- Word16 *sid_bw /* o : 0-NB/WB, 1-SWB SID */
- ,
- STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle */
- const Word16 tdm_lspQ_PCh[M], /* i : Q LSPs for primary channel */
- const Word16 tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */
- const Word16 use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */
- const Word16 last_element_mode, /* i : last element mode */
- const Word32 last_element_brate, /* i : last element bitrate */
- const Word16 flag_sec_CNA, /* i : CNA flag for secondary channel */
- const Word16 nchan_out, /* i : number of output channels */
- STEREO_CNG_DEC_HANDLE hStereoCng, /* i : stereo CNG handle */
- const Word16 read_sid_info /* i : read SID info flag */
-);
// evs_dec_fx.c
ivas_error evs_dec_fx(
@@ -9638,7 +9280,7 @@ void v_add_fx(
const Word32 x1[], /* i : Input vector 1 */
const Word32 x2[], /* i : Input vector 2 */
Word32 y[], /* o : Output vector that contains vector 1 + vector 2 */
- const int16_t N /* i : Vector length */
+ const Word16 N /* i : Vector length */
);
void v_shr_16(
@@ -9692,10 +9334,10 @@ void configureCldfb_ivas_fx(
);
// dec4t64.c
void dec_acelp_fast_fx(
- Decoder_State *st, /* i/o: decoder state structure */
- const int16_t cdk_index, /* i : codebook index */
- Word16 code[], /* o : algebraic (fixed) codebook excitation */
- const int16_t L_subfr /* i : subframe length */
+ Decoder_State *st, /* i/o: decoder state structure */
+ const Word16 cdk_index, /* i : codebook index */
+ Word16 code[], /* o : algebraic (fixed) codebook excitation */
+ const Word16 L_subfr /* i : subframe length */
);
// codec_tcx_common.c
void tcx5SpectrumInterleaving_fx(
@@ -9733,7 +9375,7 @@ void cldfbAnalysis_ivas_fx(
const Word32 *timeIn_fx, /* i : time buffer Qx */
Word32 **realBuffer_fx, /* o : real value buffer Qx - 5*/
Word32 **imagBuffer_fx, /* o : imag value buffer QX - 5*/
- const int16_t samplesToProcess, /* i : samples to process */
+ const Word16 samplesToProcess, /* i : samples to process */
HANDLE_CLDFB_FILTER_BANK h_cldfb /* i : filterbank state */
);
@@ -9752,7 +9394,7 @@ void cldfbSynthesis_ivas_fx(
// bass_psfilter.c
void addBassPostFilter_ivas_fx(
const Word32 *harm_timeIn_fx,
- const int16_t samplesToProcess,
+ const Word16 samplesToProcess,
Word32 **rAnalysis_fx,
Word32 **iAnalysis_fx,
HANDLE_CLDFB_FILTER_BANK cldfb );
@@ -9912,8 +9554,8 @@ void fd_bwe_dec_init_fx(
void stereo_dft_dec_open(
STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const int32_t output_Fs, /* i : output sampling rate */
- const int16_t nchan_transport /* i : number of transport channels */
+ const Word32 output_Fs, /* i : output sampling rate */
+ const Word16 nchan_transport /* i : number of transport channels */
);
void ivas_bw_switching_pre_proc_fx(
@@ -9991,6 +9633,12 @@ Word16 usdequant_fx( /* Qx*/
const Word16 delta /* i: quantization step Qy*/
);
+Word32 usdequant32_fx( /* Qx*/
+ const Word16 idx, /* i: quantizer index Q0*/
+ const Word32 qlow, /* i: lowest codebook entry (index 0) Qx*/
+ const Word32 delta /* i: quantization step Qy*/
+);
+
Word16 usquant_fx( /* o: index of the winning codeword */
const Word16 x, /* i: scalar value to quantize Qx*/
Word16 *xq, /* o: quantized value Qx*/
@@ -10502,6 +10150,12 @@ void hp400_12k8_fx(
Word16 mem[] /* i/o: filter memory [6] */
);
+void hp400_12k8_ivas_fx(
+ Word16 signal[], /* i/o: input signal / output is divided by 16 */
+ const Word16 lg, /* i : lenght of signal */
+ Word16 mem[] /* i/o: filter memory [6] */
+);
+
Word16 dot_prod_satcontr( const Word16 *x, const Word16 *y, Word16 qx, Word16 qy, Word16 *qo, Word16 len );
void E_UTIL_f_convolve( const Word16 x[], const Word16 h[], Word16 y[], const Word16 size );
@@ -10603,8 +10257,8 @@ void dctT2_N_apply_matrix_fx(
);
Word32 sum2_f_32_fx(
- const Word32 *vec, /* i : input vector */
- const int16_t lvec, /* i : length of input vector */
+ const Word32 *vec, /* i : input vector */
+ const Word16 lvec, /* i : length of input vector */
Word16 gb );
Word32 sum2_32_fx(
@@ -10654,7 +10308,7 @@ Word16 swb_bwe_dec_fx32(
Word16 output_frame /* i : frame length */
);
-ivas_error acelp_core_dec_ivas_fx(
+ivas_error acelp_core_dec_fx(
Decoder_State *st, /* i/o: decoder state structure */
Word16 output_fx[], /* o : synthesis @internal Fs */
Word16 synth_fx16[], /* o : synthesis */
@@ -10754,10 +10408,10 @@ void generate_stereo_masking_noise_fx(
Word16 Q_syn,
Decoder_State *st, /* i/o: decoder state structure */
STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i : TD stereo structure */
- const int16_t flag_sec_CNA, /* i : CNA flag for secondary channel */
- const int16_t fadeOut, /* i : only fade out of previous state */
+ const Word16 flag_sec_CNA, /* i : CNA flag for secondary channel */
+ const Word16 fadeOut, /* i : only fade out of previous state */
STEREO_CNG_DEC_HANDLE hStereoCng, /* i : Stereo CNG handle */
- const int16_t nchan_out /* i : number of output channels */
+ const Word16 nchan_out /* i : number of output channels */
);
void SynthesisSTFT_fx(
@@ -10765,10 +10419,10 @@ void SynthesisSTFT_fx(
Word32 *timeDomainOutput,
Word32 *olapBuffer,
const Word16 *olapWin,
- const int16_t tcx_transition,
+ const Word16 tcx_transition,
HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */
- const int16_t element_mode, /* i : element mode */
- const int16_t nchan_out /* i : number of output channels */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 nchan_out /* i : number of output channels */
);
void FdCng_decodeSID_ivas_fx(
@@ -10857,32 +10511,32 @@ void ProcessStereoIGF_fx(
Word32 *pITFMDCTSpectrum_fx[CPE_CHANNELS][NB_DIV], /* i : MDCT spectrum fir ITF */
Word16 q_pITFMDCTSpectrum_1,
Word16 q_pITFMDCTSpectrum_2,
- Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
- Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */
- Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */
- Word16 exp_pPowerSpectrumMsInv_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrumMsInv_fx */
- Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */
- Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i/o: exp of inv_spectrum_fx */
- const Word16 frameno, /* i : flag indicating index of current subfr. */
- const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */
- const Word32 element_brate, /* i : element bitrate */
+ Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
+ Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */
+ Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */
+ Word16 *q_pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: Q of pPowerSpectrumMsInv_fx */
+ Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */
+ Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i/o: exp of inv_spectrum_fx */
+ const Word16 frameno, /* i : flag indicating index of current subfr. */
+ const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */
+ const Word32 element_brate, /* i : element bitrate */
const Word16 mct_on );
/*igf_enc.c*/
void IGFEncApplyStereo_fx(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo encoder structure */
- Word16 ms_mask[2][MAX_SFB], /* i : bandwise MS mask */
- const IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS], /* i : instance handle of IGF Encoder */
- const Word16 igfGridIdx, /* i : IGF grid index */
- Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */
- Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
- Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */
- Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */
- Word16 exp_pPowerSpectrumMsInv_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrumMsInv_fx */
- Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */
- Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i : exp of inverse spectrum */
- const Word16 frameno, /* i : flag indicating index of current subfr. */
- const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */
- const Word32 element_brate, /* i : element bitrate */
+ STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo encoder structure */
+ Word16 ms_mask[2][MAX_SFB], /* i : bandwise MS mask */
+ const IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS], /* i : instance handle of IGF Encoder */
+ const Word16 igfGridIdx, /* i : IGF grid index */
+ Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */
+ Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
+ Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */
+ Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */
+ Word16 *q_pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: Q of pPowerSpectrumMsInv_fx */
+ Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */
+ Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i : exp of inverse spectrum */
+ const Word16 frameno, /* i : flag indicating index of current subfr. */
+ const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */
+ const Word32 element_brate, /* i : element bitrate */
const Word16 mct_on );
void IGFSaveSpectrumForITF_ivas_fx(
@@ -10951,6 +10605,7 @@ Word16 ari_decode_14bits_pow_ivas(
Word16 *res,
Tastat *s,
UWord16 base );
+
Word16 ari_decode_14bits_sign_ivas(
Word16 *ptr,
Word16 bp,
@@ -10964,22 +10619,21 @@ void lsf_syn_mem_backup_ivas_fx(
Word32 *gc_threshold_fx, /* i: Q16 */
Word16 *clip_var_bck_fx, /* o: Q(2.56), Q14, Q7, Q0, Q14, Q14 */
Word16 *next_force_sf_bck_fx, /* o: */
-
- Word16 *lsp_new, /* i: LSP vector to quantize Q15 */
- Word16 *lsp_mid, /* i: mid-frame LSP vector Q15 */
- Word16 *clip_var, /* o: pitch clipping state var Q(2.56) */
- Word16 *mem_AR, /* o: quantizer memory for AR model Q(2.56) */
- Word16 *mem_MA, /* o: quantizer memory for AR model Q(2.56) */
- Word16 *lsp_new_bck, /* o: LSP vector to quantize- backup Q15 */
- Word16 *lsp_mid_bck, /* o: mid-frame LSP vector - backup Q15 */
- Word32 *Bin_E, /* o: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */
- Word32 *Bin_E_old, /* o: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */
- Word16 *mem_syn_bck, /* o: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */
- Word16 *mem_w0_bck, /* o: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */
- Word16 *streaklimit, /* Q15 */
+ Word16 *lsp_new, /* i: LSP vector to quantize Q15 */
+ Word16 *lsp_mid, /* i: mid-frame LSP vector Q15 */
+ Word16 *clip_var, /* o: pitch clipping state var Q(2.56) */
+ Word16 *mem_AR, /* o: quantizer memory for AR model Q(2.56) */
+ Word16 *mem_MA, /* o: quantizer memory for AR model Q(2.56) */
+ Word16 *lsp_new_bck, /* o: LSP vector to quantize- backup Q15 */
+ Word16 *lsp_mid_bck, /* o: mid-frame LSP vector - backup Q15 */
+ Word32 *Bin_E, /* o: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */
+ Word32 *Bin_E_old, /* o: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */
+ Word16 *mem_syn_bck, /* o: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */
+ Word16 *mem_w0_bck, /* o: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */
+ Word16 *streaklimit, /* Q15 */
Word16 *pstreaklen );
-ivas_error config_acelp1_IVAS(
+ivas_error config_acelp1_fx(
const Word16 enc_dec, /* i : encoder/decoder flag */
const Word32 total_brate, /* i : total bitrate */
const Word32 core_brate_inp, /* i : core bitrate */
@@ -11007,13 +10661,32 @@ ivas_error config_acelp1_IVAS(
const Word16 GSC_IVAS_mode /* i : GSC IVAS mode */
);
+#ifdef DBG_BITSTREAM_ANALYSIS
+#define push_next_indice( ... ) push_next_indice_( __func__, __VA_ARGS__ )
+#define push_next_bits( ... ) push_next_bits_( __func__, __VA_ARGS__ );
+#endif
+
+#ifdef DBG_BITSTREAM_ANALYSIS
+ivas_error push_next_indice_(
+#else
ivas_error push_next_indice(
+#endif
+#ifdef DBG_BITSTREAM_ANALYSIS
+ const char *caller,
+#endif
BSTR_ENC_HANDLE hBstr,
UWord16 value, /* i : value of the quantized indice */
Word16 nb_bits /* i : number of bits used to quantize the indice */
);
+#ifdef DBG_BITSTREAM_ANALYSIS
+ivas_error push_next_bits_(
+#else
ivas_error push_next_bits(
+#endif
+#ifdef DBG_BITSTREAM_ANALYSIS
+ const char *caller,
+#endif
BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */
const Word16 nb_bits /* i : number of bits to pack */
@@ -11150,7 +10823,7 @@ Word16 msvq_stage1_dct_recalc_candidates_fdcng_wb_fx(
const Word16 st1_syn_vec_e, /* i : exp for IDCT24 synthesis vectors */
const Word32 *u_fx, /* i : target signal */
const Word16 u_e, /* i : exp for target signal */
- const int16_t maxC_st1, /* i : number of candidates in stage1 */
+ const Word16 maxC_st1, /* i : number of candidates in stage1 */
Word32 *dist_ptr_fx, /* i/o: updated MSE vector for stage1 */
Word16 *dist_ptr_e /* i/o: exp for updated MSE vector for stage1 */
);
@@ -11223,69 +10896,36 @@ void WriteToBitstream_ivas_fx(
* MODE1 prototypes
*----------------------------------------------------------------------------------*/
-/*! r: inverse square root of input value */
-float inv_sqrt(
- const float x /* i : input value */
-);
-
/*! r: output random value */
-int16_t own_random(
- int16_t *seed /* i/o: random seed */
-);
-
-/*! r: sign of x (+1/-1) */
-float sign(
- const float x /* i : input value of x */
-);
-
-/*! r: logarithm2 of x */
-float log2_f(
- const float x /* i : input value of x */
+Word16 own_random(
+ Word16 *seed /* i/o: random seed */
);
-int16_t norm_ul_float(
- uint32_t UL_var1 );
+Word16 norm_ul_float(
+ UWord32 UL_var1 );
/*! r: sum of all vector elements */
-int16_t sum_s(
- const int16_t *vec, /* i : input vector */
- const int16_t lvec /* i : length of input vector */
-);
-
-/*! r: sum of all vector elements */
-int32_t sum_l(
- const int32_t *vec, /* i : input vector */
- const int16_t lvec /* i : length of input vector */
-);
-
-/*! r: sum of all squared vector elements */
-float sum2_f(
- const float *vec, /* i : input vector */
- const int16_t lvec /* i : length of input vector */
+Word16 sum_s(
+ const Word16 *vec, /* i : input vector */
+ const Word16 lvec /* i : length of input vector */
);
void set_c(
- int8_t y[], /* i/o: Vector to set */
- const int8_t a, /* i : Value to set the vector to */
- const int32_t N /* i : Length of the vector */
+ Word8 y[], /* i/o: Vector to set */
+ const Word8 a, /* i : Value to set the vector to */
+ const Word32 N /* i : Length of the vector */
);
void set_s(
- int16_t y[], /* i/o: Vector to set */
- const int16_t a, /* i : Value to set the vector to */
- const int16_t N /* i : Lenght of the vector */
+ Word16 y[], /* i/o: Vector to set */
+ const Word16 a, /* i : Value to set the vector to */
+ const Word16 N /* i : Lenght of the vector */
);
void set_l(
- int32_t y[], /* i/o: Vector to set */
- const int32_t a, /* i : Value to set the vector to */
- const int16_t N /* i : Length of the vector */
-);
-
-void set_f(
- float y[], /* i/o: Vector to set */
- const float a, /* i : Value to set the vector to */
- const int16_t N /* i : Lenght of the vector */
+ Word32 y[], /* i/o: Vector to set */
+ const Word32 a, /* i : Value to set the vector to */
+ const Word16 N /* i : Length of the vector */
);
void set_zero_fx(
@@ -11302,52 +10942,26 @@ void set16_zero_fx(
);
void set_zero(
- float *vec, /* o : input vector */
- const int16_t lvec /* i : length of the vector */
+ float *vec, /* o : input vector */
+ const Word16 lvec /* i : length of the vector */
);
void mvr2r(
const float x[], /* i : input vector */
float y[], /* o : output vector */
- const int16_t n /* i : vector size */
+ const Word16 n /* i : vector size */
);
void mvs2s(
- const int16_t x[], /* i : input vector */
- int16_t y[], /* o : output vector */
- const int16_t n /* i : vector size */
-);
-
-uint32_t mvr2s(
- const float x[], /* i : input vector */
- int16_t y[], /* o : output vector */
- const int16_t n /* i : vector size */
-);
-
-void mvs2r(
- const int16_t x[], /* i : input vector */
- float y[], /* o : output vector */
- const int16_t n /* i : vector size */
+ const Word16 x[], /* i : input vector */
+ Word16 y[], /* o : output vector */
+ const Word16 n /* i : vector size */
);
void mvl2l(
- const int32_t x[], /* i : input vector */
- int32_t y[], /* o : output vector */
- const int16_t n /* i : vector size */
-);
-
-
-/*! r: index of the maximum value in the input vector */
-int16_t maximum(
- const float *vec, /* i : input vector */
- const int16_t lvec, /* i : length of input vector */
- float *max_val /* o : maximum value in the input vector */
-);
-/*! r: index of the maximum value in the input vector */
-int16_t maximumAbs(
- const float *vec, /* i : input vector */
- const int16_t lvec, /* i : length of input vector */
- float *max_val /* o : maximum value in the input vector */
+ const Word32 x[], /* i : input vector */
+ Word32 y[], /* o : output vector */
+ const Word16 n /* i : vector size */
);
Word16 maximumAbs_l(
@@ -11357,63 +10971,22 @@ Word16 maximumAbs_l(
);
/*! r: index of the minimum value in the input vector */
-int16_t minimum(
- const float *vec, /* i : input vector */
- const int16_t lvec, /* i : length of input vector */
- float *min_val /* o : minimum value in the input vector */
-);
-
-/*! r: index of the minimum value in the input vector */
-int16_t minimum_s(
- const int16_t *vec, /* i : Input vector */
- const int16_t lvec, /* i : Vector length */
- int16_t *min_val /* o : minimum value in the input vector */
-);
-
-/*! r: return index with max energy value in vector */
-int16_t emaximum(
- const float *vec, /* i : input vector */
- const int16_t lvec, /* i : length of input vector */
- float *ener_max /* o : maximum energy value */
-);
-
-/*! r: vector mean */
-float mean(
- const float *vec, /* i : input vector */
- const int16_t lvec /* i : length of input vector */
-);
-
-/*! r: dot product of x[] and y[] */
-float dotp(
- const float x[], /* i : vector x[] */
- const float y[], /* i : vector y[] */
- const int16_t n /* i : vector length */
-);
-
-void v_add(
- const float x1[], /* i : Input vector 1 */
- const float x2[], /* i : Input vector 2 */
- float y[], /* o : Output vector that contains vector 1 + vector 2 */
- const int16_t N /* i : Vector length */
-);
-
-void v_sub(
- const float x1[], /* i : Input vector 1 */
- const float x2[], /* i : Input vector 2 */
- float y[], /* o : Output vector that contains vector 1 - vector 2 */
- const int16_t N /* i : Vector length */
+Word16 minimum_s(
+ const Word16 *vec, /* i : Input vector */
+ const Word16 lvec, /* i : Vector length */
+ Word16 *min_val /* o : minimum value in the input vector */
);
/*! r: dequanzited gain */
float usdequant(
- const int16_t idx, /* i : quantizer index */
- const float qlow, /* i : lowest codebook entry (index 0) */
- const float delta /* i : quantization step */
+ const Word16 idx, /* i : quantizer index */
+ const float qlow, /* i : lowest codebook entry (index 0) */
+ const float delta /* i : quantization step */
);
void sort(
- uint16_t *x, /* i/o: Vector to be sorted */
- uint16_t len /* i/o: vector length */
+ UWord16 *x, /* i/o: Vector to be sorted */
+ UWord16 len /* i/o: vector length */
);
void sort_l(
@@ -11424,18 +10997,24 @@ void sort_l(
ivas_error push_indice(
BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
- int16_t id, /* i : ID of the indice */
- uint16_t value, /* i : value of the quantized indice */
- int16_t nb_bits /* i : number of bits used to quantize the indice */
+ Word16 id, /* i : ID of the indice */
+ UWord16 value, /* i : value of the quantized indice */
+ Word16 nb_bits /* i : number of bits used to quantize the indice */
);
-ivas_error push_next_indice(
+ivas_error push_next_indice_(
+#ifdef DBG_BITSTREAM_ANALYSIS
+ const char *caller,
+#endif
BSTR_ENC_HANDLE hBstr,
UWord16 value, /* i : value of the quantized indice */
Word16 nb_bits /* i : number of bits used to quantize the indice */
);
-ivas_error push_next_bits(
+ivas_error push_next_bits_(
+#ifdef DBG_BITSTREAM_ANALYSIS
+ const char *caller,
+#endif
BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */
const Word16 nb_bits /* i : number of bits to pack */
@@ -11448,8 +11027,8 @@ Word16 get_ivas_max_num_indices_fx(
);
/*! r: maximum number of indices */
-int16_t get_BWE_max_num_indices(
- const int32_t extl_brate /* i : extensiona layer bitrate */
+Word16 get_BWE_max_num_indices(
+ const Word32 extl_brate /* i : extensiona layer bitrate */
);
/*! r: maximum number of indices */
@@ -11458,9 +11037,9 @@ Word16 get_ivas_max_num_indices_metadata_fx(
const Word32 ivas_total_brate /* i : IVAS total bitrate */
);
ivas_error ind_list_realloc(
- INDICE_HANDLE old_ind_list, /* i : pointer to the beginning of the old buffer of indices */
- const int16_t max_num_indices, /* i : new maximum number of allowed indices in the list */
- Encoder_Struct *st_ivas /* i : IVAS encoder structure */
+ INDICE_HANDLE old_ind_list, /* i : pointer to the beginning of the old buffer of indices */
+ const Word16 max_num_indices, /* i : new maximum number of allowed indices in the list */
+ Encoder_Struct *st_ivas /* i : IVAS encoder structure */
);
ivas_error check_ind_list_limits(
@@ -11470,44 +11049,44 @@ ivas_error check_ind_list_limits(
void move_indices(
INDICE_HANDLE old_ind_list, /* i/o: old location of indices */
INDICE_HANDLE new_ind_list, /* i/o: new location of indices */
- const int16_t nb_indices /* i : number of moved indices */
+ const Word16 nb_indices /* i : number of moved indices */
);
/*! r: index of the indice in the list, -1 if not found */
-int16_t find_indice(
+Word16 find_indice(
BSTR_ENC_HANDLE hBstr, /* i : encoder bitstream handle */
- const int16_t id, /* i : ID of the indice */
- uint16_t *value, /* o : value of the quantized indice */
- int16_t *nb_bits /* o : number of bits used to quantize the indice */
+ const Word16 id, /* i : ID of the indice */
+ UWord16 *value, /* o : value of the quantized indice */
+ Word16 *nb_bits /* o : number of bits used to quantize the indice */
);
/*! r: number of deleted indices */
-uint16_t delete_indice(
+UWord16 delete_indice(
BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
- const int16_t id /* i : ID of the indice */
+ const Word16 id /* i : ID of the indice */
);
/*! r: value of the indice */
-uint16_t get_next_indice(
+UWord16 get_next_indice(
Decoder_State *st, /* i/o: decoder state structure */
- int16_t nb_bits /* i : number of bits that were used to quantize the indice */
+ Word16 nb_bits /* i : number of bits that were used to quantize the indice */
);
/*! r: value of the indice */
-uint16_t get_next_indice_1(
+UWord16 get_next_indice_1(
Decoder_State *st /* i/o: decoder state structure */
);
void get_next_indice_tmp(
Decoder_State *st, /* o : decoder state structure */
- int16_t nb_bits /* i : number of bits that were used to quantize the indice */
+ Word16 nb_bits /* i : number of bits that were used to quantize the indice */
);
/*! r: value of the indice */
-uint16_t get_indice(
+UWord16 get_indice(
Decoder_State *st, /* i/o: decoder state structure */
- int16_t pos, /* i : absolute position in the bitstream */
- int16_t nb_bits /* i : number of bits that were used to quantize the indice */
+ Word16 pos, /* i : absolute position in the bitstream */
+ Word16 nb_bits /* i : number of bits that were used to quantize the indice */
);
void reset_indices_dec(
@@ -11516,7 +11095,7 @@ void reset_indices_dec(
Word16 rate2EVSmode_float(
const Word32 brate, /* i : bitrate */
- int16_t *is_amr_wb /* o : (flag) does the bitrate belong to AMR-WB? Can be NULL */
+ Word16 *is_amr_wb /* o : (flag) does the bitrate belong to AMR-WB? Can be NULL */
);
@@ -11543,13 +11122,13 @@ void mdct_switching_dec_fx(
Decoder_State *st /* i/o: decoder state structure */
);
-int16_t print_disclaimer(
+Word16 print_disclaimer(
FILE *fPtr );
void fft_rel(
- float x[], /* i/o: input/output vector */
- const int16_t n, /* i : vector length */
- const int16_t m /* i : log2 of vector length */
+ float x[], /* i/o: input/output vector */
+ const Word16 n, /* i : vector length */
+ const Word16 m /* i : log2 of vector length */
);
void preemph_ivas_fx(
@@ -11562,8 +11141,8 @@ void preemph_ivas_fx(
void create_offset(
UWord32 *offset_scale1,
UWord32 *offset_scale2,
- const int16_t mode,
- const int16_t prediction_flag );
+ const Word16 mode,
+ const Word16 prediction_flag );
void BASOP_cfft_ivas(
Word32 *re, /* i/o: real part */
@@ -11584,31 +11163,6 @@ Word32 Mult_32_32(
Word32 a,
Word32 b );
-
-void bit_allocation_second_fx2(
- Word32 *Rk,
- Word32 *Rk_sort,
- Word16 BANDS,
- const Word16 *band_width,
- Word16 *k_sort,
- Word16 *k_num,
- const Word16 *p2a_flags,
- const Word16 p2a_bands,
- const Word16 *last_bitalloc,
- const Word16 input_frame );
-
-void bit_allocation_second_fx2(
- Word32 *Rk,
- Word32 *Rk_sort,
- Word16 BANDS,
- const Word16 *band_width,
- Word16 *k_sort,
- Word16 *k_num,
- const Word16 *p2a_flags,
- const Word16 p2a_bands,
- const Word16 *last_bitalloc,
- const Word16 input_frame );
-
#ifdef DEBUGGING
void read_next_force(
int16_t *force, /* i/o: force value (0/1, 0 = speech, 1 = music)*/
@@ -11808,31 +11362,31 @@ void writeTCXWindowing_fx(
);
void writeLPCparam(
- Encoder_State *st, /* i/o: encoder state structure */
- BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
- const int16_t param_lpc[], /* i : LPC parameters to write */
- const int16_t bits_param_lpc[], /* i : bits per LPC parameter */
- const int16_t no_param_lpc, /* i : number of LPC parameters */
- int16_t *nbits_lpc /* o : LPC bits written */
+ Encoder_State *st, /* i/o: encoder state structure */
+ BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
+ const Word16 param_lpc[], /* i : LPC parameters to write */
+ const Word16 bits_param_lpc[], /* i : bits per LPC parameter */
+ const Word16 no_param_lpc, /* i : number of LPC parameters */
+ Word16 *nbits_lpc /* o : LPC bits written */
);
-void const *GetTnsOnWhite( void const *p, const int16_t index, int16_t *pValue );
-void *SetTnsOnWhite( void *p, const int16_t index, const int16_t value );
-void const *GetNumOfTnsFilters_flt( void const *p, const int16_t index, int16_t *pValue );
-void *SetNumOfTnsFilters_flt( void *p, const int16_t index, const int16_t value );
+void const *GetTnsOnWhite( void const *p, const Word16 index, Word16 *pValue );
+void *SetTnsOnWhite( void *p, const Word16 index, const Word16 value );
+void const *GetNumOfTnsFilters_flt( void const *p, const Word16 index, Word16 *pValue );
+void *SetNumOfTnsFilters_flt( void *p, const Word16 index, const Word16 value );
-int16_t DecodeSWBTCX10TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue );
-int16_t DecodeSWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue );
+Word16 DecodeSWBTCX10TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue );
+Word16 DecodeSWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue );
-int16_t DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue );
+Word16 DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue );
-int16_t DecodeTnsFilterOrderSWBTCX10_flt( Decoder_State *st, const int16_t index, int16_t *pValue );
-int16_t DecodeTnsFilterOrderSWBTCX20_flt( Decoder_State *st, const int16_t index, int16_t *pValue );
+Word16 DecodeTnsFilterOrderSWBTCX10_flt( Decoder_State *st, const Word16 index, Word16 *pValue );
+Word16 DecodeTnsFilterOrderSWBTCX20_flt( Decoder_State *st, const Word16 index, Word16 *pValue );
-int16_t EncodeTnsFilterOrderSWBTCX10_flt( const int16_t value, const int16_t index );
+Word16 EncodeTnsFilterOrderSWBTCX10_flt( const Word16 value, const Word16 index );
-int16_t GetTnsFilterOrderBitsSWBTCX10_flt( const int16_t value, const int16_t index );
-int16_t DecodeTnsFilterOrder_flt( Decoder_State *st, const int16_t index, int16_t *pValue );
+Word16 GetTnsFilterOrderBitsSWBTCX10_flt( const Word16 value, const Word16 index );
+Word16 DecodeTnsFilterOrder_flt( Decoder_State *st, const Word16 index, Word16 *pValue );
void ResetTnsData_flt(
STnsData *pTnsData );
@@ -11885,7 +11439,7 @@ void analysisCldfbEncoder_ivas_fx(
ivas_error openCldfb_ivas(
HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */
CLDFB_TYPE type, /* i : analysis or synthesis */
- const int32_t sampling_rate, /* i : sampling rate */
+ const Word32 sampling_rate, /* i : sampling rate */
CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */
);
diff --git a/lib_com/pvq_com_fx.c b/lib_com/pvq_com_fx.c
index a6c0bc462d6757c2a53af013c84dff95f6b44461..1adcdb7ae6074f3f2b89dbd4883a144f48883b55 100644
--- a/lib_com/pvq_com_fx.c
+++ b/lib_com/pvq_com_fx.c
@@ -564,8 +564,8 @@ void fine_gain_quant_fx(
tmp1 = extract_l( Pow2( 14, tmp1 ) );
exp1 = sub( 14, exp1 );
- L_tmp = L_mult0( fg_pred[band], tmp1 ); /*12+exp1 */
- fg_pred[band] = round_fx( L_shl( L_tmp, sub( 16, exp1 ) ) ); /*12+exp1+16-exp1-16=12 */
+ L_tmp = L_mult0( fg_pred[band], tmp1 ); /*12+exp1 */
+ fg_pred[band] = round_fx_sat( L_shl_sat( L_tmp, sub( 16, exp1 ) ) ); /*12+exp1+16-exp1-16=12 */
move16();
}
}
diff --git a/lib_com/stat_com.h b/lib_com/stat_com.h
index f99d498027a98db71cfbed521e46712659506917..80822f59e999002977b27fcd97ab7095a469e10b 100644
--- a/lib_com/stat_com.h
+++ b/lib_com/stat_com.h
@@ -377,7 +377,8 @@ typedef struct
Word16 *olapBufferAna; /* q_olapBufferAna */ /* points to FD_CNG_DEC->olapBufferAna[FFTLEN] in case of decoder */
Word16 olapBufferAna_fx[FFTLEN]; /* q_olapBufferAna_fx */ /* points to FD_CNG_DEC->olapBufferAna[FFTLEN] in case of decoder */
Word16 olapBufferSynth[FFTLEN]; /* q_olapBuffer */
- Word16 *olapBufferSynth2; /*Q_syn*/ /* points to FD_CNG_DEC->olapBufferSynth2[FFTLEN] in case of decoder */
+ Word16 olapBufferSynth_exp;
+ Word16 *olapBufferSynth2; /*Q_syn*/ /* points to FD_CNG_DEC->olapBufferSynth2[FFTLEN] in case of decoder */
const PWord16 *olapWinAna;
const PWord16 *olapWinSyn;
diff --git a/lib_com/stat_noise_uv_mod_fx.c b/lib_com/stat_noise_uv_mod_fx.c
index 67ca21cd29c3dd2ffae186785dfcd32794b3201f..c259745f2a7266bffbe33207cac60e540cfbc577 100644
--- a/lib_com/stat_noise_uv_mod_fx.c
+++ b/lib_com/stat_noise_uv_mod_fx.c
@@ -330,7 +330,6 @@ void stat_noise_uv_mod_fx(
}
}
}
-
/*--------------------------------------------------------------------*
* stat_noise_uv_mod()
*
@@ -345,7 +344,7 @@ void stat_noise_uv_mod_ivas_fx(
const Word16 *lsp_mid, /* i : LSP vector at 2nd sfr Q=15*/
Word16 *Aq, /* o : A(z) quantized for the 4 subframes Q=12*/
Word16 *exc2, /* i/o: excitation buffer Q=Q_exc*/
- Word16 Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */
+ Word16 *Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */
const Word16 bfi, /* i : Bad frame indicator */
Word32 *ge_sm, /* i/o: smoothed excitation gain Q=Q_stat_noise_ge (6)*/
Word16 *uv_count, /* i/o: unvoiced counter */
@@ -370,8 +369,9 @@ void stat_noise_uv_mod_ivas_fx(
Word16 oldlsp_mix[M];
Word16 midlsp_mix[M];
Word16 newlsp_mix[M];
- Word16 beta; /* Q15 */
- Word16 Noimix_fract; /* (noimix_fac - 1.0) in Q15 */
+ Word16 beta; /* Q15 */
+ Word16 Noimix_fract; /* (noimix_fac - 1.0) in Q15 */
+ Word32 L_Noimix_fract; /* (noimix_fac - 1.0) in Q15 */
/* noimix_fax * x <-> x + Noimix_fract * x */
Word16 i_subfr;
Word16 i, k;
@@ -382,7 +382,8 @@ void stat_noise_uv_mod_ivas_fx(
Word32 L_tmp_res, L_tmp, L_tmp3, L_Ge;
Word16 En_shift, Tmp;
- Word16 Exc2_local[L_FRAME]; /* local_copy in scaled Q_local*/
+ Word16 Exc2_local[L_FRAME]; /* local_copy in scaled Q_local*/
+ Word32 L_Exc2_local[L_FRAME]; /* local_copy in scaled Q_local*/
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
Flag Overflow = 0;
move32();
@@ -437,9 +438,9 @@ void stat_noise_uv_mod_ivas_fx(
Copy( exc2, Exc2_local, L_FRAME );
/* bound Q for internal use, optimization possible */
- Q_local = s_min( 11, s_max( -1, Q_exc ) );
+ Q_local = s_min( 11, s_max( -1, *Q_exc ) );
/* local excitation Q and incoming excitation Q*/
- Qdiff = sub( Q_local, Q_exc );
+ Qdiff = sub( Q_local, *Q_exc );
/* only shift if incoming Q is outside [11..-1] shift is done in energy calculations aswell */
Scale_sig( Exc2_local, L_FRAME, Qdiff );
/* current excitation Q and previous stat_noise states Q */
@@ -539,14 +540,11 @@ void stat_noise_uv_mod_ivas_fx(
L_tmp_res = L_mac( 0, alpha, alpha );
L_tmp_res = L_mac( L_tmp_res, alpha_m1, alpha_m1 );
tmp_den = round_fx( L_Frac_sqrtQ31( L_tmp_res ) );
-
- tmp_nom = sub( 32767, tmp_den );
- tmp_shift = norm_s( tmp_den );
- tmp_den = shl( tmp_den, tmp_shift );
- tmp_res = div_s( tmp_nom, tmp_den );
-
- Noimix_fract = shr( tmp_res, tmp_shift ); /* float value is in range 0.0 to 0.42 */
-
+ Word16 exp_sqr = 0;
+ move16();
+ tmp_res = BASOP_Util_Divide1616_Scale( 32767, tmp_den, &exp_sqr ); // 15-exp_sqr
+ Noimix_fract = tmp_res; // 15-exp_sqr
+ move16();
/* L_Ge might be 0 in unvoiced WB */
L_Ge = L_max( L_Ge, 1 );
tmp_shift = norm_l( L_Ge );
@@ -555,9 +553,7 @@ void stat_noise_uv_mod_ivas_fx(
L_tmp_res = Mult_32_16( *ge_sm, tmp_res ); /* Q_stat_noise_ge+45-Q_local-Q_ge-tmp_shift-15 */
L_tmp_res = Mult_32_16( L_tmp_res, sub( 32767, beta ) ); /*30-Q_local-tmp_shift+15-15 */
L_tmp_res = L_add_sat( L_shl_sat( L_tmp_res, sub( add( Q_local, tmp_shift ), 15 ) ), beta ); /* Q15 */
- tmp_res = extract_h( L_shl_o( L_tmp_res, 15, &Overflow ) ); /* 15+15-16=14 */
-
- Noimix_fract = extract_l( Mult_32_16( L_tmp_res, Noimix_fract ) ); /*15+15-15 */
+ L_Noimix_fract = Mult_32_16( L_tmp_res, Noimix_fract ); /*15+15-exp_sqr-15 =15-exp_sqr */
FOR( i = 0; i < L_FRAME; i++ )
{
@@ -573,18 +569,27 @@ void stat_noise_uv_mod_ivas_fx(
randval = mult_r( 28378, randval ); /* Q downscaled by 2 bits ends up in Q14 */ /*sqrt(12.0f) in Q13*/
randval = extract_l( L_shl( Mult_32_16( L_Ge, randval ), sub( 1, *Q_stat_noise_ge ) ) ); /*Q_local+Q_ge+14-15+1-Q_ge=Q_local */
- L_tmp = L_mult( Exc2_local[i], alpha ); /* Q_local + 16 */
- L_tmp = L_mac( L_tmp, randval, alpha_m1 ); /* Q_local + 16 */
- L_tmp3 = Mult_32_16( L_tmp, Noimix_fract ); /* Q_local+16+15-15 */
- L_tmp = L_add_sat( L_tmp3, L_shl_sat( Mult_32_16( L_tmp, tmp_res ), 1 ) ); /* Q_local+16+14-15+1 */
- Exc2_local[i] = extract_h( L_tmp ); /*Q_local */
+ L_tmp = L_mult( Exc2_local[i], alpha ); /* Q_local + 16 */
+ L_tmp = L_mac( L_tmp, randval, alpha_m1 ); /* Q_local + 16 */
+ L_tmp3 = Mult_32_32( L_tmp, L_Noimix_fract ); /* Q_local+16+15-exp_sqr-15 =Q_local +1 */
+ L_Exc2_local[i] = L_add( L_shr( L_tmp3, 1 ), Mpy_32_32( L_tmp, L_tmp_res ) ); // Q_local + 16 +15 -31 = Q_local
+ move32();
+ }
+ Word32 max_val;
+ maximum_abs_32_fx( L_Exc2_local, L_FRAME, &max_val );
+ Word16 shift = 0;
+ move16();
+ IF( GT_32( max_val, ONE_IN_Q15 ) )
+ {
+ shift = norm_l( max_val );
+ shift = sub( Q31 - Q15, shift );
+ *Q_exc = sub( Q_local, shift ); // Q_exc = Q_local -shift
move16();
}
*Q_stat_noise = Q_local; /* update for next call, routine can only be called once every frame */
move16();
- Qdiff = sub( Q_exc, Q_local ); /* local excitation and incoming excitation */
- Scale_sig( Exc2_local, L_FRAME, Qdiff );
- Copy( Exc2_local, exc2, L_FRAME );
+
+ Copy_Scale_sig_32_16( L_Exc2_local, exc2, L_FRAME, negate( shift ) ); // Q_exc
/*--------------------------------------------------------------------*
* Generate low-pass filtered version of ISP coefficients
@@ -635,6 +640,7 @@ void stat_noise_uv_mod_ivas_fx(
}
}
}
+
/*---------------------------------------------------------------------------*
* calc_tilt()
*
diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c
index 238b478c5abce7058655ca0592e3f89969e1e201..96d07e7ef305ed4534d8dd4a3ae338a537a7dbda 100644
--- a/lib_com/swb_tbe_com_fx.c
+++ b/lib_com/swb_tbe_com_fx.c
@@ -1645,7 +1645,12 @@ void GenShapedWBExcitation_ivas_fx(
}
}
- Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER_WB, exc4kWhtnd, excSHB, L_FRAME16k / 4, state_lpc_syn, 1 );
+ Scale_sig( state_lpc_syn, LPC_SHB_ORDER, -Q2 ); /* Q(Q_bwe_exc) -> Q(Q_bwe_exc - 2) */
+
+ Syn_filt_s( Q2, lpc_shb, LPC_SHB_ORDER_WB, exc4kWhtnd, excSHB, L_FRAME16k / 4, state_lpc_syn, 1 );
+
+ Scale_sig( state_lpc_syn, LPC_SHB_ORDER, Q2 ); /* Q(Q_bwe_exc - 2) -> Q(Q_bwe_exc) */
+ Scale_sig( excSHB, L_FRAME16k / 4, Q2 ); /* Q(Q_bwe_exc - 2) -> Q(Q_bwe_exc) */
return;
}
@@ -2097,22 +2102,7 @@ void GenShapedSHBExcitation_fx(
Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */
Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */
const Word32 bitrate,
- const Word16 prev_bfi
-#ifdef ADD_IVAS_TBE_CODE
- , /* i : previous frame was concealed */
- const Word16 element_mode, /* i : element mode */
- const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */
- Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */
- Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */
- const Word32 extl_brate, /* i : extension layer bitarte */
- const Word16 MSFlag, /* i : Multi Source flag */
- Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */
- Word16 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */
- Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */
- Word16 *Env_error, /* o : error in SHB residual envelope modelling*/
- Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */
-#endif
-)
+ const Word16 prev_bfi )
{
Word16 i, j, k;
Word16 wht_fil_mem[LPC_WHTN_ORDER];
@@ -2155,20 +2145,6 @@ void GenShapedSHBExcitation_fx(
Word16 Q_temp;
Word16 prev_Q_bwe_exc_fb;
-#ifdef ADD_IVAS_TBE_CODE
- Word32 tempD;
- Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k];
- Word16 cbsize;
- Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale;
- Word16 c0, c1, c2, c3, c4, c5, g1, g2, g, den;
- Word16 EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k];
- Word16 EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 };
- Word16 flag_plosive;
- Word16 delta;
- Word16 c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS];
-
- mix_factor = 0.0f;
-#endif
set16_fx( zero_mem, 0, LPC_SHB_ORDER );
set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER );
@@ -2200,12 +2176,7 @@ void GenShapedSHBExcitation_fx(
/* i: exc16k in Q_bwe_exc */
/* o: exc16kWhtnd in Q_bwe_exc */
-
-#ifdef ADD_IVAS_TBE_CODE
- IF( GE_32( extl_brate, SWB_TBE_2k8 ) )
-#else
IF( GE_32( bitrate, ACELP_24k40 ) )
-#endif
{
temp2 = 0;
move16();
@@ -2239,11 +2210,7 @@ void GenShapedSHBExcitation_fx(
Q_pow1 = shl( *Q_bwe_exc, 1 );
test();
-#ifdef ADD_IVAS_TBE_CODE
- IF( EQ_16( flag_ACELP16k, 0 ) )
-#else
IF( ( LE_32( bitrate, ACELP_13k20 ) ) && ( GE_32( bitrate, ACELP_7k20 ) ) )
-#endif
{
/* varEnvShape = mean_fx(voice_factors, 4); */
/* unroll the loop */
@@ -2289,11 +2256,7 @@ void GenShapedSHBExcitation_fx(
test();
test();
test();
-#ifdef ADD_IVAS_TBE_CODE
- IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) )
-#else
IF( *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) )
-#endif
{
/* pre-init smoothing filter to avoid energy drop outs */
L_tmp = L_mult( excTmp2[0], 1638 );
@@ -2320,42 +2283,6 @@ void GenShapedSHBExcitation_fx(
*mem_csfilt = Mult_32_16( L_tmp, varEnvShape );
move32();
}
-#ifdef ADD_IVAS_TBE_CODE
- if ( MSFlag > 0 )
- {
- varEnvShape = 0.995f;
- csfilt_num2[0] = 1.0f - varEnvShape;
- csfilt_den2[1] = -varEnvShape;
- }
-
- White_exc16k = exc16k;
-
- /* Track the low band envelope */
- if ( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT )
- {
- if ( extl_brate != SWB_TBE_1k10 && extl_brate != SWB_TBE_1k75 )
- {
- mem_csfilt_left = 0.0f;
- mem_csfilt_right = 0.0f;
- for ( k = 0; k < L_FRAME16k; k++ )
- {
- excNoisyEnvLeft[k] = mem_csfilt_left + csfilt_num2[0] * excTmp2[k];
- mem_csfilt_left = -csfilt_den2[1] * excNoisyEnvLeft[k];
- excNoisyEnvRight[L_FRAME16k - k - 1] = mem_csfilt_right + csfilt_num2[0] * excTmp2[L_FRAME16k - k - 1];
- mem_csfilt_right = -csfilt_den2[1] * excNoisyEnvRight[L_FRAME16k - k - 1];
- }
-
- alpha = 0.0f;
- step = 1.0f / L_FRAME16k;
- for ( k = 0; k < L_FRAME16k; k++ )
- {
- excNoisyEnv[k] = alpha * excNoisyEnvLeft[k] + ( 1 - alpha ) * excNoisyEnvRight[k];
- alpha += step;
- }
- }
- }
- else
-#endif
{
/* Track the low band envelope */
L_tmp = *mem_csfilt;
@@ -2371,21 +2298,6 @@ void GenShapedSHBExcitation_fx(
*mem_csfilt = L_tmp;
move32();
}
-#ifdef ADD_IVAS_TBE_CODE
- if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 )
- {
- /* generate gaussian (white) excitation */
- for ( k = 0; k < L_FRAME16k; k++ )
- {
- White_exc16k[k] = (float) own_random( &bwe_seed[0] );
- }
-
- /* normalize the amplitude of the gaussian excitation to that of the LB exc. */
- pow22 = POW_EXC16k_WHTND;
- v_multc( White_exc16k, (float) sqrt( pow1 / pow22 ), White_exc16k, L_FRAME16k );
- }
- else
-#endif
{
/* create a random excitation - Reuse exc16k memory */
White_exc16k = exc16k;
@@ -2434,98 +2346,10 @@ void GenShapedSHBExcitation_fx(
Q_pow22 = shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 );
}
-#ifdef ADD_IVAS_TBE_CODE
- flag_plosive = 0;
- move16();
- test();
- test();
- test();
- IF(GE_32(extl_brate, SWB_TBE_2k8) || EQ_32(extl_brate, SWB_TBE_1k10) || EQ_32(extl_brate, SWB_TBE_1k75)))
-#else
IF( GE_32( bitrate, ACELP_24k40 ) )
-#endif
{
IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */
{
-#ifdef ADD_IVAS_TBE_CODE
- if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 )
- {
- /* calculate TD envelopes of exc16kWhtnd and White_exc16k */
- find_td_envelope( White_exc16k, L_FRAME16k, 20, NULL, EnvWhiteExc16k );
- find_td_envelope( exc16kWhtnd, L_FRAME16k, 20, NULL, EnvExc16kWhtnd );
-
- for ( k = 0; k < L_FRAME4k; k++ )
- {
- EnvWhiteExc16k_4k[k] = EnvWhiteExc16k[4 * k];
- EnvExc16kWhtnd_4k[k] = EnvExc16kWhtnd[4 * k];
- }
-
- /* calculate the optimal mix factor */
- c0 = c1 = c2 = c3 = c4 = c5 = 0.0f;
- for ( i = 0; i < NUM_SHB_SUBGAINS; i++ )
- {
- c0_part[i] = sum2_f( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS );
- c1_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS );
- c2_part[i] = sum2_f( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS );
- c3_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS );
- c4_part[i] = 2.0f * dotp( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS );
- c5_part[i] = sum2_f( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS );
-
- c0 += c0_part[i];
- c1 += c1_part[i];
- c2 += c2_part[i];
- c3 += c3_part[i];
- c4 += c4_part[i];
- c5 += c5_part[i];
- }
-
- den = 4.0f * c0 * c2 - c4 * c4;
- g1 = ( c3 * c4 - 2 * c1 * c2 ) / den;
- g2 = ( c1 * c4 - 2 * c0 * c3 ) / den;
-
- *Env_error = 0.0f;
- flag_plosive = 0;
- for ( i = 0; i < NUM_SHB_SUBGAINS; i++ )
- {
- Env_error_part[i] = c5_part[i] + g1 * g1 * c0_part[i] + g1 * c1_part[i] + g2 * g2 * c2_part[i] + g2 * c3_part[i] + g1 * g2 * c4_part[i];
- *Env_error += Env_error_part[i];
-
- if ( Env_error_part[i] > THR_ENV_ERROR_PLOSIVE )
- {
- /* envelope error is too high -> likely a plosive */
- flag_plosive = 1;
- }
- }
-
- if ( flag_plosive )
- {
- /* plosive detected -> set the mixing factor to 0 */
- *vf_ind = 0;
- mix_factor = 0.0f;
- }
- else
- {
- /* normalize gain */
- g = g2 / ( g1 + g2 );
-
- /* quantization of the mixing factor */
- cbsize = 1 << NUM_BITS_SHB_VF;
- delta = 1.0f / ( cbsize - 1 );
- if ( g > 1.0f )
- {
- g = 1.0f;
- }
- else if ( g < delta )
- {
- /* prevent low gains to be quantized to 0 as this is reserved for plosives */
- g = delta;
- }
-
- *vf_ind = usquant( g, &mix_factor, 0.0f, 1.0f / ( cbsize - 1 ), cbsize );
- }
- }
- else
-#endif
{
Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k,
( *Q_bwe_exc - NOISE_QADJ ), pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind );
@@ -2541,331 +2365,257 @@ void GenShapedSHBExcitation_fx(
}
}
ELSE /* decoder side */
- {
-#ifdef ADD_IVAS_TBE_CODE
- if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 )
- {
- if ( *vf_ind == 0 )
- {
- mix_factor = 0.0f;
- flag_plosive = 1;
- }
- else
- {
- mix_factor = usdequant( *vf_ind, 0.0f, 1.0f / ( ( 1 << NUM_BITS_SHB_VF ) - 1 ) );
- }
- }
- else
-#endif
{
- /* *vf_ind is an integer scale by 0.125f*/
- tmp = shl( *vf_ind, ( 15 - 3 ) );
- tmp2 = MAX_16;
- move16();
- if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) )
- {
- tmp2 = 26214 /*0.8f Q15*/;
- move16();
- }
- }
- }
-#ifdef ADD_IVAS_TBE_CODE
- IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) )
-#endif
+ { /* *vf_ind is an integer scale by 0.125f*/
+ tmp = shl( *vf_ind, ( 15 - 3 ) );
+ tmp2 = MAX_16;
+ move16();
+ if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) )
{
- voice_factors[0] = mult_r( voice_factors[0], tmp2 );
- move16();
- voice_factors[1] = mult_r( voice_factors[1], tmp2 );
- move16();
- voice_factors[2] = mult_r( voice_factors[2], tmp2 );
- move16();
- voice_factors[3] = mult_r( voice_factors[3], tmp2 );
- move16();
- voice_factors[4] = mult_r( voice_factors[4], tmp2 );
+ tmp2 = 26214 /*0.8f Q15*/;
move16();
}
}
-#ifdef ADD_IVAS_TBE_CODE
- if ( element_mode >= IVAS_CPE_DFT && nlExc16k != NULL )
- {
- /* save buffers for IC-BWE */
- mvr2r( exc16kWhtnd, nlExc16k, L_FRAME16k );
- v_multc( White_exc16k, (float) sqrt( pow1 / pow22 ), mixExc16k, L_FRAME16k );
- }
-#endif
-
- tmp = sub( Q_temp, 3 );
- FOR( k = 0; k < L_FRAME16k; k++ )
- {
- White_exc16k_FB[k] = round_fx( L_shl( White_exc16k_32[k], tmp ) ); /* Q_bwe_exc +5 +1 +Q_temp -16 -3 */
- }
- prev_Q_bwe_exc_fb = *Q_bwe_exc_fb;
+}
+{
+ voice_factors[0] = mult_r( voice_factors[0], tmp2 );
move16();
- *Q_bwe_exc_fb = sub( add( *Q_bwe_exc, Q_temp ), 13 );
+ voice_factors[1] = mult_r( voice_factors[1], tmp2 );
move16();
- deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph );
- /* i/o: White_exc16k (Q_bwe_exc-NOISE_QADJ) */
- /* i: tbe_demph (Q_bwe_exc-NOISE_QADJ) */
-#ifdef ADD_IVAS_TBE_CODE
- if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 )
+ voice_factors[2] = mult_r( voice_factors[2], tmp2 );
+ move16();
+ voice_factors[3] = mult_r( voice_factors[3], tmp2 );
+ move16();
+ voice_factors[4] = mult_r( voice_factors[4], tmp2 );
+ move16();
+}
+}
+
+tmp = sub( Q_temp, 3 );
+FOR( k = 0; k < L_FRAME16k; k++ )
+{
+ White_exc16k_FB[k] = round_fx( L_shl( White_exc16k_32[k], tmp ) ); /* Q_bwe_exc +5 +1 +Q_temp -16 -3 */
+}
+prev_Q_bwe_exc_fb = *Q_bwe_exc_fb;
+move16();
+*Q_bwe_exc_fb = sub( add( *Q_bwe_exc, Q_temp ), 13 );
+move16();
+deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph );
+/* i/o: White_exc16k (Q_bwe_exc-NOISE_QADJ) */
+/* i: tbe_demph (Q_bwe_exc-NOISE_QADJ) */
+{
+ IF( EQ_16( coder_type, UNVOICED ) )
{
- if ( !flag_plosive ) /* use only LB excitation in case of plosives */
+ L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp );
+ scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */
+ FOR( k = 0; k < L_FRAME16k; k++ )
{
- /* re-scale gaussian excitation at the beginning to gradually move from old energy to new energy */
- old_scale = (float) sqrt( *prev_pow_exc16kWhtnd / pow1 );
- new_scale = 1.0f;
- step_scale = ( new_scale - old_scale ) / ( L_FRAME16k / 2 );
- scale = old_scale;
-
- /* interpolate between the old and the new value of the mixing factor */
- old_fact = *prev_mix_factor;
- new_fact = mix_factor;
- step = ( new_fact - old_fact ) / ( L_FRAME16k / 2 );
- fact = old_fact;
-
- /* mixing of LB and gaussian excitation in the first half of the frame */
- for ( k = 0; k < L_FRAME16k / 2; k++ )
- {
- exc16kWhtnd[k] = (float) fact * ( White_exc16k[k] * scale ) + (float) ( 1 - fact ) * exc16kWhtnd[k];
- fact += step;
- scale += step_scale;
- }
-
- /* mixing of LB and gaussian excitation in the second half of the frame */
- for ( ; k < L_FRAME16k; k++ )
- {
- exc16kWhtnd[k] = (float) new_fact * White_exc16k[k] + (float) ( 1 - new_fact ) * exc16kWhtnd[k];
- }
+ /* White_exc16k: (Q_bwe_exc-NOISE_QADJ), scale: Q15 */
+ L_tmp = L_mult( White_exc16k[k], scale );
+ /* L_tmp: (Q_bwe_exc-NOISE_QADJ) + 15 + 1 */
+ exc16kWhtnd[k] = round_fx( L_shl( L_tmp, NOISE_QADJ ) );
+ move16();
+ /* exc16kWhtnd: Q_bwe_exc */
}
- preemph( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph );
+ PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph );
+ /* i/o: exc16kWhtnd (Q_bwe_exc) */
+ /* i/o: tbe_premph (Q_bwe_exc) */
}
- else
-#endif
+ ELSE
{
-#ifdef ADD_IVAS_TBE_CODE
- if ( coder_type == UNVOICED || MSFlag == 1 )
-#else
- IF( EQ_16( coder_type, UNVOICED ) )
-#endif
+ Word16 nbSubFr, lSubFr;
+ Word16 tempQ15;
+ Word32 tempQ31;
+ /*nbSubFr = ( bitrate < ACELP_24k40 )? NB_SUBFR : NB_SUBFR16k;*/
+ nbSubFr = NB_SUBFR16k;
+ lSubFr = ( L_FRAME16k / NB_SUBFR16k );
+ IF( LT_32( bitrate, ACELP_24k40 ) )
{
- L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp );
- scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */
- FOR( k = 0; k < L_FRAME16k; k++ )
- {
- /* White_exc16k: (Q_bwe_exc-NOISE_QADJ), scale: Q15 */
- L_tmp = L_mult( White_exc16k[k], scale );
- /* L_tmp: (Q_bwe_exc-NOISE_QADJ) + 15 + 1 */
- exc16kWhtnd[k] = round_fx( L_shl( L_tmp, NOISE_QADJ ) );
- move16();
- /* exc16kWhtnd: Q_bwe_exc */
- }
- PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph );
- /* i/o: exc16kWhtnd (Q_bwe_exc) */
- /* i/o: tbe_premph (Q_bwe_exc) */
+ nbSubFr = NB_SUBFR;
+ move16();
+ lSubFr = ( L_FRAME16k / NB_SUBFR );
+ move16();
}
- ELSE
+ k = 0;
+ FOR( i = 0; i < nbSubFr; i++ )
{
- Word16 nbSubFr, lSubFr;
- Word16 tempQ15;
- Word32 tempQ31;
- /*nbSubFr = ( bitrate < ACELP_24k40 )? NB_SUBFR : NB_SUBFR16k;*/
- nbSubFr = NB_SUBFR16k;
- lSubFr = ( L_FRAME16k / NB_SUBFR16k );
- IF( LT_32( bitrate, ACELP_24k40 ) )
+ test();
+ IF( EQ_16( coder_type, VOICED ) && ( LT_32( bitrate, ACELP_24k40 ) ) )
{
- nbSubFr = NB_SUBFR;
+ exp = 0;
move16();
- lSubFr = ( L_FRAME16k / NB_SUBFR );
+ tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */
+ temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */
+ exp = 0;
move16();
+ tempQ15 = Sqrt16( temp, &exp ); /* Q15 */
+ temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */
+
+ /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */
+ temp = sub( MAX_16, temp );
+ tempQ31 = Mult_32_16( pow1, temp );
+ L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp );
+ temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */
}
- k = 0;
- FOR( i = 0; i < nbSubFr; i++ )
+ ELSE
{
- test();
- IF( EQ_16( coder_type, VOICED ) && ( LT_32( bitrate, ACELP_24k40 ) ) )
- {
- exp = 0;
- move16();
- tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */
- temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */
- exp = 0;
- move16();
- tempQ15 = Sqrt16( temp, &exp ); /* Q15 */
- temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */
-
- /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */
- temp = sub( MAX_16, temp );
- tempQ31 = Mult_32_16( pow1, temp );
- L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp );
- temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */
- }
- ELSE
- {
- /* Adjust noise mixing for formant sharpening filter */
- tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac );
- /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */
- vf_tmp = sub( MAX_16, tempQ15 );
- vf_tmp = mult_r( voice_factors[i], vf_tmp );
-
- exp = 0;
- move16();
- tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */
- temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */
+ /* Adjust noise mixing for formant sharpening filter */
+ tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac );
+ /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */
+ vf_tmp = sub( MAX_16, tempQ15 );
+ vf_tmp = mult_r( voice_factors[i], vf_tmp );
- /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */
- temp = sub( MAX_16, vf_tmp );
- tempQ31 = Mult_32_16( pow1, temp );
- L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp );
- temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */
- }
-
- FOR( j = 0; j < lSubFr; j++ )
- {
- /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */
- L_tmp = L_mult( temp2, White_exc16k[k + j] ); /* 16+(Q_bwe_exc-NOISE_QADJ)*/
- L_tmp = L_shl_sat( L_tmp, NOISE_QADJ ); /* 16+(Q_bwe_exc) */
- exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] );
- move16();
- /* Q_bwe_exc */
- }
- k = add( k, lSubFr );
-
- /* estimate the pre-emph factor */
- tempQ15 = sub( MAX_16, voice_factors[i] );
exp = 0;
move16();
- temp = Sqrt16( tempQ15, &exp );
- temp = shl( temp, exp - 1 );
-
- temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */
- temp = div_s( temp, temp2 ); /* Q15 */
- temp = mult_r( PREEMPH_FAC, temp );
+ tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */
+ temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */
+
+ /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */
+ temp = sub( MAX_16, vf_tmp );
+ tempQ31 = Mult_32_16( pow1, temp );
+ L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp );
+ temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */
+ }
- PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph );
- /* exc16kWhtnd: Q_bwe_exc;
- tbe_premph: Q_bwe_exc*/
+ FOR( j = 0; j < lSubFr; j++ )
+ {
+ /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */
+ L_tmp = L_mult( temp2, White_exc16k[k + j] ); /* 16+(Q_bwe_exc-NOISE_QADJ)*/
+ L_tmp = L_shl_sat( L_tmp, NOISE_QADJ ); /* 16+(Q_bwe_exc) */
+ exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] );
+ move16();
+ /* Q_bwe_exc */
}
+ k = add( k, lSubFr );
+
+ /* estimate the pre-emph factor */
+ tempQ15 = sub( MAX_16, voice_factors[i] );
+ exp = 0;
+ move16();
+ temp = Sqrt16( tempQ15, &exp );
+ temp = shl( temp, exp - 1 );
+
+ temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */
+ temp = div_s( temp, temp2 ); /* Q15 */
+ temp = mult_r( PREEMPH_FAC, temp );
+
+ PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph );
+ /* exc16kWhtnd: Q_bwe_exc;
+ tbe_premph: Q_bwe_exc*/
}
}
+}
-#ifdef ADD_IVAS_TBE_CODE
- IF( LT_32( extl_brate, SWB_TBE_2k8 ) )
-#else
- IF( LT_32( bitrate, ACELP_24k40 ) )
-#endif
- {
- Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 );
- /* i: exc16kWhtnd in Q_bwe_exc */
- /* o: excSHB in Q_bwe_exc */
- }
- ELSE
- {
- set16_fx( zero_mem, 0, LPC_SHB_ORDER );
+IF( LT_32( bitrate, ACELP_24k40 ) )
+{
+ Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 );
+ /* i: exc16kWhtnd in Q_bwe_exc */
+ /* o: excSHB in Q_bwe_exc */
+}
+ELSE
+{
+ set16_fx( zero_mem, 0, LPC_SHB_ORDER );
- Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 );
- syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 );
- move32();
+ Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 );
+ syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 );
+ move32();
- Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 );
- syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 );
- move32();
+ Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 );
+ syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 );
+ move32();
- Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 );
- syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 );
- move32();
+ Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 );
+ syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 );
+ move32();
- Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 );
- syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 );
- move32();
+ Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 );
+ syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 );
+ move32();
- /* i: exc16kWhtnd in Q_bwe_exc */
- /* o: tempSHB in Q_bwe_exc */
- /* o: syn_shb_ener_sf in (2*Q_bwe_exc+1) */
- IF( LE_32( bitrate, ACELP_32k ) )
- {
- L_tmp = sum32_fx( syn_shb_ener_sf, 4 );
+ /* i: exc16kWhtnd in Q_bwe_exc */
+ /* o: tempSHB in Q_bwe_exc */
+ /* o: syn_shb_ener_sf in (2*Q_bwe_exc+1) */
+ IF( LE_32( bitrate, ACELP_32k ) )
+ {
+ L_tmp = sum32_fx( syn_shb_ener_sf, 4 );
- /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */
- tmp = shl( Q_shb, 1 );
- tmp2 = add( shl( *Q_bwe_exc, 1 ), 1 );
- L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */
+ /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */
+ tmp = shl( Q_shb, 1 );
+ tmp2 = add( shl( *Q_bwe_exc, 1 ), 1 );
+ L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */
- *Q_bwe_exc = sub( *Q_bwe_exc, exp );
- move16(); /* compensate for the exp shift */
- tmp2 = add( prev_Q_bwe_syn, n_mem2 );
- IF( GT_16( *Q_bwe_exc, tmp2 ) )
- {
- L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) );
- *Q_bwe_exc = tmp2;
- move16();
- }
- FOR( i = 0; i < L_FRAME16k; i++ )
- {
- L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */
- exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */
- move16();
- }
- }
- /* i: L_tmp2 in (Q31-exp) */
- /* i: exc16kWhtnd in Q_bwe_exc */
- /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */
-
- /* Rescale the past memories: LP synth and SHB look ahead buffers */
- tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn );
- FOR( i = 0; i < LPC_SHB_ORDER; i++ )
+ *Q_bwe_exc = sub( *Q_bwe_exc, exp );
+ move16(); /* compensate for the exp shift */
+ tmp2 = add( prev_Q_bwe_syn, n_mem2 );
+ IF( GT_16( *Q_bwe_exc, tmp2 ) )
{
- state_lpc_syn[i] = shl( state_lpc_syn[i], tmp );
+ L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) );
+ *Q_bwe_exc = tmp2;
move16();
}
- FOR( i = -L_SHB_LAHEAD; i < 0; i++ )
+ FOR( i = 0; i < L_FRAME16k; i++ )
{
- excSHB[i] = shl( excSHB[i], tmp );
+ L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */
+ exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */
move16();
}
- /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */
-
- Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 );
- Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 );
- Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 );
- Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 );
- /* i: exc16kWhtnd in (Q_bwe_exc) */
- /* o: excSHB in (Q_bwe_exc) */
}
+ /* i: L_tmp2 in (Q31-exp) */
+ /* i: exc16kWhtnd in Q_bwe_exc */
+ /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */
- IF( EQ_16( extl, FB_TBE ) )
+ /* Rescale the past memories: LP synth and SHB look ahead buffers */
+ tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn );
+ FOR( i = 0; i < LPC_SHB_ORDER; i++ )
{
- tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb );
- Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp );
- Scale_sig( fb_tbe_demph, 1, tmp );
- Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 );
- /* i: White_exc16k_FB in (14-n2) */
- /* o: White_exc16k_FB_temp in (14-n2) */
+ state_lpc_syn[i] = shl( state_lpc_syn[i], tmp );
+ move16();
+ }
+ FOR( i = -L_SHB_LAHEAD; i < 0; i++ )
+ {
+ excSHB[i] = shl( excSHB[i], tmp );
+ move16();
+ }
+ /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */
- FOR( i = 0; i < 10; i++ )
- {
- FOR( j = 0; j < 32; ++j )
- {
- White_exc16k_FB_temp[i * 32 + j] = mult_r( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] );
- move16();
- }
- }
+ Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 );
+ Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 );
+ Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 );
+ Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 );
+ /* i: exc16kWhtnd in (Q_bwe_exc) */
+ /* o: excSHB in (Q_bwe_exc) */
+}
- *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 );
- move16(); /**Q_bwe_exc_fb +35 +1 -16*/
- flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k );
+IF( EQ_16( extl, FB_TBE ) )
+{
+ tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb );
+ Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp );
+ Scale_sig( fb_tbe_demph, 1, tmp );
+ Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 );
+ /* i: White_exc16k_FB in (14-n2) */
+ /* o: White_exc16k_FB_temp in (14-n2) */
- deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph );
- }
- ELSE
+ FOR( i = 0; i < 10; i++ )
{
- set16_fx( White_exc16k_FB, 0, L_FRAME16k );
+ FOR( j = 0; j < 32; ++j )
+ {
+ White_exc16k_FB_temp[i * 32 + j] = mult_r( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] );
+ move16();
+ }
}
-#ifdef ADD_IVAS_TBE_CODE
- *prev_pow_exc16kWhtnd = pow1;
- *prev_mix_factor = mix_factor;
-#endif
- return;
+ *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 );
+ move16(); /**Q_bwe_exc_fb +35 +1 -16*/
+ flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k );
+
+ deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph );
+}
+ELSE
+{
+ set16_fx( White_exc16k_FB, 0, L_FRAME16k );
+}
+
+return;
}
void GenShapedSHBExcitation_ivas_enc_fx(
@@ -3283,7 +3033,6 @@ void GenShapedSHBExcitation_ivas_enc_fx(
{
IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */
{
-#ifndef ADD_IVAS_TBE_CODE // BELOW PART WILL NEED TO BE CONVERTED FOR ENCODER!!
test();
IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) )
{
@@ -3469,33 +3218,6 @@ void GenShapedSHBExcitation_ivas_enc_fx(
}
}
ELSE
-#else
- UNUSED_PARAM( Env_error_part );
- UNUSED_PARAM( Env_error );
- UNUSED_PARAM( EnvSHBres_4k );
- UNUSED_PARAM( c5_part );
- UNUSED_PARAM( c1 );
- UNUSED_PARAM( den );
- UNUSED_PARAM( c3_part );
- UNUSED_PARAM( c0 );
- UNUSED_PARAM( delta );
- UNUSED_PARAM( c3 );
- UNUSED_PARAM( c2_part );
- UNUSED_PARAM( c1_part );
- UNUSED_PARAM( EnvWhiteExc16k );
- UNUSED_PARAM( g2 );
- UNUSED_PARAM( c5 );
- UNUSED_PARAM( c4_part );
- UNUSED_PARAM( EnvWhiteExc16k_4k );
- UNUSED_PARAM( c2 );
- UNUSED_PARAM( g );
- UNUSED_PARAM( cbsize );
- UNUSED_PARAM( g1 );
- UNUSED_PARAM( EnvExc16kWhtnd );
- UNUSED_PARAM( c0_part );
- UNUSED_PARAM( EnvExc16kWhtnd_4k );
- UNUSED_PARAM( c4 );
-#endif
{
Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k,
Q_White_exc16k, pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind );
@@ -3998,7 +3720,6 @@ void GenShapedSHBExcitation_ivas_dec_fx(
move16();
move32();
-#if 1 // def ADD_IVAS_TBE_CODE
Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k];
Word16 cbsize;
Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale;
@@ -4013,7 +3734,7 @@ void GenShapedSHBExcitation_ivas_dec_fx(
mix_factor = 0; /* Q15 */
move16();
-#endif
+
set16_fx( zero_mem, 0, LPC_SHB_ORDER );
set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER );
FOR( i = 0; i < L_FRAME32k; i = i + 2 )
@@ -4045,11 +3766,7 @@ void GenShapedSHBExcitation_ivas_dec_fx(
/* i: exc16k in Q_bwe_exc */
/* o: exc16kWhtnd in Q_bwe_exc */
-#if 1 // def ADD_IVAS_TBE_CODE
IF( GE_32( extl_brate, SWB_TBE_2k8 ) )
-#else
- IF( GE_32( bitrate, ACELP_24k40 ) )
-#endif
{
temp2 = 0;
move16();
@@ -4084,11 +3801,8 @@ void GenShapedSHBExcitation_ivas_dec_fx(
Q_pow1 = shl( *Q_bwe_exc, 1 );
test();
-#if 1 // ADD_IVAS_TBE_CODE
+
IF( flag_ACELP16k == 0 )
-#else
- IF( ( LE_32( bitrate, ACELP_13k20 ) ) && ( GE_32( bitrate, ACELP_7k20 ) ) )
-#endif
{
/* varEnvShape = mean_fx(voice_factors, 4); */
/* unroll the loop */
@@ -4134,12 +3848,8 @@ void GenShapedSHBExcitation_ivas_dec_fx(
test();
test();
test();
-#if 1 // def ADD_IVAS_TBE_CODE
- test();
+
IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) )
-#else
- IF( *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) )
-#endif
{
/* pre-init smoothing filter to avoid energy drop outs */
L_tmp = L_mult( excTmp2[0], 1638 );
@@ -4166,7 +3876,7 @@ void GenShapedSHBExcitation_ivas_dec_fx(
*mem_csfilt = Mult_32_16( L_tmp, varEnvShape );
move32();
}
-#if 1 // def ADD_IVAS_TBE_CODE
+
IF( MSFlag > 0 )
{
// varEnvShape = 0.995f;
@@ -4226,7 +3936,7 @@ void GenShapedSHBExcitation_ivas_dec_fx(
}
}
ELSE
-#endif
+
{
/* Track the low band envelope */
L_tmp = L_shl( *mem_csfilt, sub( Q_excTmp2, *Q_bwe_exc ) );
@@ -4252,7 +3962,6 @@ void GenShapedSHBExcitation_ivas_dec_fx(
*mem_csfilt = L_shr( L_tmp, sub( Q_excTmp2, *Q_bwe_exc ) );
move32();
}
-#if 1 // def ADD_IVAS_TBE_CODE
test();
IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) )
{
@@ -4298,7 +4007,6 @@ void GenShapedSHBExcitation_ivas_dec_fx(
}
}
ELSE
-#endif
{
/* create a random excitation - Reuse exc16k memory */
White_exc16k = exc16k;
@@ -4347,20 +4055,15 @@ void GenShapedSHBExcitation_ivas_dec_fx(
Q_White_exc16k = add( Q_White_exc16k, sub( Q_excTmp2, 10 ) );
}
-#if 1 // def ADD_IVAS_TBE_CODE
flag_plosive = 0;
move16();
test();
test();
test();
IF( GE_32( extl_brate, SWB_TBE_2k8 ) || EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) )
-#else
- IF( GE_32( bitrate, ACELP_24k40 ) )
-#endif
{
IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */
{
-#ifndef ADD_IVAS_TBE_CODE // BELOW PART WILL NEED TO BE CONVERTED FOR ENCODER!!
test();
IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) )
{
@@ -4539,33 +4242,6 @@ void GenShapedSHBExcitation_ivas_dec_fx(
}
}
ELSE
-#else
- UNUSED_PARAM( Env_error_part );
- UNUSED_PARAM( Env_error );
- UNUSED_PARAM( EnvSHBres_4k );
- UNUSED_PARAM( c5_part );
- UNUSED_PARAM( c1 );
- UNUSED_PARAM( den );
- UNUSED_PARAM( c3_part );
- UNUSED_PARAM( c0 );
- UNUSED_PARAM( delta );
- UNUSED_PARAM( c3 );
- UNUSED_PARAM( c2_part );
- UNUSED_PARAM( c1_part );
- UNUSED_PARAM( EnvWhiteExc16k );
- UNUSED_PARAM( g2 );
- UNUSED_PARAM( c5 );
- UNUSED_PARAM( c4_part );
- UNUSED_PARAM( EnvWhiteExc16k_4k );
- UNUSED_PARAM( c2 );
- UNUSED_PARAM( g );
- UNUSED_PARAM( cbsize );
- UNUSED_PARAM( g1 );
- UNUSED_PARAM( EnvExc16kWhtnd );
- UNUSED_PARAM( c0_part );
- UNUSED_PARAM( EnvExc16kWhtnd_4k );
- UNUSED_PARAM( c4 );
-#endif
{
Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k,
( *Q_bwe_exc - NOISE_QADJ ), pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind );
@@ -4583,7 +4259,6 @@ void GenShapedSHBExcitation_ivas_dec_fx(
ELSE /* decoder side */
{
test();
-#if 1 // def ADD_IVAS_TBE_CODE
IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) )
{
IF( *vf_ind == 0 )
@@ -4601,7 +4276,6 @@ void GenShapedSHBExcitation_ivas_dec_fx(
}
}
ELSE
-#endif
{
/* *vf_ind is an integer scale by 0.125f*/
tmp = shl( *vf_ind, ( 15 - 3 ) );
@@ -4614,10 +4288,8 @@ void GenShapedSHBExcitation_ivas_dec_fx(
}
}
}
-#if 1 // def ADD_IVAS_TBE_CODE
test();
IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) )
-#endif
{
voice_factors[0] = mult_r( voice_factors[0], tmp2 );
move16();
@@ -4974,10 +4646,8 @@ void GenShapedSHBExcitation_ivas_dec_fx(
set16_fx( White_exc16k_FB, 0, L_FRAME16k );
}
-#if 1 // def ADD_IVAS_TBE_CODE
*prev_pow_exc16kWhtnd = L_shr_sat( pow1, Q_pow1 ); // power goes above MAX_32
*prev_mix_factor = mix_factor;
-#endif
return;
}
@@ -6301,7 +5971,7 @@ void non_linearity_ivas_fx(
}
- IF( GT_16( max_val, shl( 1, Q_inp ) ) )
+ IF( GT_16( max_val, shl_sat( 1, Q_inp ) ) )
{
exp = norm_s( max_val );
tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */
@@ -6375,7 +6045,7 @@ void non_linearity_ivas_fx(
max_val = s_max( max_val, tmp );
}
- IF( GT_16( max_val, shl( 1, Q_inp ) ) )
+ IF( GT_16( max_val, shl_sat( 1, Q_inp ) ) )
{
exp = norm_s( max_val );
tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */
@@ -6695,7 +6365,15 @@ void wb_tbe_extras_reset_synth_fx(
*-------------------------------------------------------------------*/
void elliptic_bpf_48k_generic_fx(
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ const int16_t element_mode,
+#endif
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ Word16 IsUpsampled3,
+ Word16 input_fx[], /* i : input signal Q_input_fx*/
+#else
const Word16 input_fx[], /* i : input signal Q_input_fx*/
+#endif
Word16 *Q_input_fx,
Word16 output_fx[], /* o : output signal memory_fx_Q */
Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */
@@ -6704,24 +6382,164 @@ void elliptic_bpf_48k_generic_fx(
)
{
Word16 i, j;
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ Word16 memory_fx0, Q_temp, Q_temp2;
+ Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX;
+ Word32 L_tmpMax;
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ Word64 W_tmpX;
+ Word64 W_tmpY;
+#endif
+
+ Word32 *L_tmp = &L_tmp_buffer[4];
+ Word32 *L_tmp2 = &L_tmp2_buffer[4];
+ Word32 *L_output = &L_output_buffer[4];
+#else
Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2;
Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax;
Word32 memory2_fx_2[4], memory2_fx_3[4];
+#endif
FOR( i = 0; i < 4; i++ )
{
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ memory_fx0 = extract_l( memory_fx2[0][i] );
+ input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) );
+ L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) );
+ L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) );
+ // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) );
+ move32();
+ move32();
+ move32();
+ move32();
+ move32();
+#else
memory_fx0[0][i] = extract_l( memory_fx2[0][i] );
memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) );
memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) );
memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) );
- memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) );
move32();
move32();
move32();
move32();
move32();
+#endif
}
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ L_tmpMax = L_add( 0, 0 );
+ IF( !IsUpsampled3 )
+ {
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ IF( element_mode )
+ {
+ FOR( i = 0; i < L_FRAME48k; i++ )
+ {
+ /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/
+ W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] );
+ W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] );
+ W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] );
+ W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] );
+ W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] );
+ W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] );
+ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/
+ move32();
+ }
+ }
+ ELSE
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ {
+ FOR( i = 0; i < L_FRAME48k; i++ )
+ {
+ L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ move32();
+ }
+ }
+ } /*IsUpsampled3*/
+ ELSE
+ {
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ IF( element_mode )
+ {
+ FOR( i = 0; i < L_FRAME48k; )
+ {
+ W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] );
+ W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] );
+ W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] );
+ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/
+ move32();
+ i++;
+
+ W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] );
+ W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] );
+ W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] );
+ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/
+ move32();
+ i++;
+
+ W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] );
+ W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] );
+ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/
+ move32();
+ i++;
+ }
+ }
+ ELSE
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ {
+ FOR( i = 0; i < L_FRAME48k; )
+ {
+ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ move32();
+ i++;
+
+ L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ move32();
+ i++;
+
+ L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
+ move32();
+ i++;
+ }
+ }
+
+ } /*IsUpsampled3*/
+
+#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/
L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/
L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/
@@ -6777,6 +6595,7 @@ void elliptic_bpf_48k_generic_fx(
L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/
move32();
}
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/
memory_fx2[0][0] = input_fx[L_FRAME48k - 4];
memory_fx2[0][1] = input_fx[L_FRAME48k - 3];
@@ -6787,6 +6606,47 @@ void elliptic_bpf_48k_generic_fx(
move32();
move32();
move32();
+
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ L_tmpMax = L_add( 0, 0 );
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ IF( element_mode )
+ {
+ FOR( i = 0; i < L_FRAME48k; i++ )
+ {
+ W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] );
+ W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] );
+ W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] );
+ W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] );
+ W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] );
+ W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] );
+ L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) );
+ move32();
+ L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) );
+ }
+ }
+ ELSE
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ {
+ FOR( i = 0; i < L_FRAME48k; i++ )
+ {
+ L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/
+ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */
+ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */
+ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */
+ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/
+ L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */
+ move32();
+ L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) );
+ }
+ }
+#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/
L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/
L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/
L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/
@@ -6845,6 +6705,8 @@ void elliptic_bpf_48k_generic_fx(
move32();
L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) );
}
+#endif
+
Q_temp = norm_l( L_tmpMax );
Q_temp = sub( Q_temp, 4 );
@@ -6859,6 +6721,16 @@ void elliptic_bpf_48k_generic_fx(
move32();
move32();
move32();
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ FOR( j = 0; j < 4; j++ )
+ {
+ L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) );
+ L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) );
+ move32();
+ move32();
+ move32();
+ }
+#else
FOR( j = 0; j < 4; j++ )
{
memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) );
@@ -6867,6 +6739,51 @@ void elliptic_bpf_48k_generic_fx(
move32();
move32();
}
+#endif
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ L_tmpMax = L_add( 0, 0 );
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ IF( element_mode )
+ {
+ FOR( i = 0; i < L_FRAME48k; i++ )
+ {
+ W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] );
+ W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] );
+ W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] );
+ W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] );
+ W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] );
+ W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] );
+ W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] );
+ L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) );
+ move32();
+ L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) );
+ }
+ }
+ ELSE
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ {
+ FOR( i = 0; i < L_FRAME48k; i++ )
+ {
+ L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */
+ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/
+
+ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/
+
+ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/
+ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/
+
+ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/
+ L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/
+ move32();
+ L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) );
+ }
+ }
+
+#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/
L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */
L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/
L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/
@@ -6932,6 +6849,8 @@ void elliptic_bpf_48k_generic_fx(
move32();
L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) );
}
+#endif
+
memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4];
memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3];
memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2];
@@ -6995,10 +6914,20 @@ void synthesise_fb_high_band_fx(
Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */
Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */
Word16 bpf_memory_Q[],
- Word16 Qout )
+ Word16 Qout
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ ,
+ int16_t element_mode
+#endif
+)
{
Word16 i, j;
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ Word16 excitation_in_interp3_buffer[L_FRAME48k + 4];
+ Word16 *excitation_in_interp3 = &excitation_in_interp3_buffer[0] + 4;
+#else
Word16 excitation_in_interp3[L_FRAME48k];
+#endif
Word16 tmp[L_FRAME48k];
Word32 temp1;
Word32 ratio2;
@@ -7023,12 +6952,32 @@ void synthesise_fb_high_band_fx(
IF( EQ_16( L_frame, L_FRAME16k ) )
{
/* for 16kHz ACELP core */
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ elliptic_bpf_48k_generic_fx(
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ element_mode,
+#endif
+ 1, // IsUpsampled3
+ excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx
+
+ );
+#else
elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx );
+#endif
}
ELSE
{
/* for 12.8kHz ACELP core */
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ elliptic_bpf_48k_generic_fx(
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ element_mode,
+#endif
+ 1, // IsUpsampled3
+ excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx );
+#else
elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx );
+#endif
}
temp1 = sum2_fx_mod( tmp, L_FRAME48k );
@@ -7237,56 +7186,7 @@ void Estimate_mix_factors_fx(
return;
}
-#ifdef ADD_IVAS_TBE_CODE
-/*-------------------------------------------------------------------*
- * tbe_celp_exc() *
- * *
- * Prepare adaptive part of TBE excitation *
- *-------------------------------------------------------------------*/
-
-void tbe_celp_exc(
- const int16_t element_mode, /* i : element mode */
- const int16_t idchan, /* i : channel ID */
- float *bwe_exc, /* i/o: BWE excitation */
- const int16_t L_frame, /* i : frame length */
- const int16_t L_subfr, /* i : subframe length */
- const int16_t i_subfr, /* i : subframe index */
- const int16_t T0, /* i : integer pitch lag */
- const int16_t T0_frac, /* i : fraction of lag */
- float *error, /* i/o: error */
- const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */
-)
-{
- int16_t i, offset;
-
- if ( element_mode == IVAS_CPE_TD && idchan == 1 && !tdm_LRTD_flag )
- {
- return;
- }
-
- if ( L_frame == L_FRAME )
- {
- offset = tbe_celp_exc_offset( T0, T0_frac );
-
- for ( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ )
- {
- bwe_exc[i + i_subfr * HIBND_ACB_L_FAC] = bwe_exc[i + i_subfr * HIBND_ACB_L_FAC - offset + (int16_t) *error];
- }
- *error += (float) offset - (float) T0 * HIBND_ACB_L_FAC - 0.25f * HIBND_ACB_L_FAC * (float) T0_frac;
- }
- else
- {
- offset = T0 * 2 + (int16_t) ( (float) T0_frac * 0.5f + 4 + 0.5f ) - 4;
- for ( i = 0; i < L_subfr * 2; i++ )
- {
- bwe_exc[i + i_subfr * 2] = bwe_exc[i + i_subfr * 2 - offset + (int16_t) *error];
- }
- *error += (float) offset - (float) T0 * 2 - 0.5f * (float) T0_frac;
- }
- return;
-}
-#endif
/*======================================================================================*/
/* FUNCTION : prep_tbe_exc_fx() */
/*--------------------------------------------------------------------------------------*/
@@ -7308,7 +7208,6 @@ void tbe_celp_exc(
/* INPUT/OUTPUT ARGUMENTS : */
/* _ (Word16[]) bwe_exc_fx : excitation for TBE (Q_exc) */
/*--------------------------------------------------------------------------------------*/
-
/* _ None */
/*--------------------------------------------------------------------------------------*/
/* RETURN ARGUMENTS : */
@@ -7316,200 +7215,27 @@ void tbe_celp_exc(
/*======================================================================================*/
void prep_tbe_exc_fx(
- const Word16 L_frame_fx, /* i : length of the frame */
-#ifdef ADD_IVAS_TBE_CODE
- const Word16 L_subfr,
-#endif
- const Word16 i_subfr_fx, /* i : subframe index */
- const Word16 gain_pit_fx, /* i : Pitch gain Q14*/
- const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/
- const Word16 code_fx[], /* i : algebraic excitation Q9*/
- const Word16 voice_fac_fx, /* i : voicing factor Q15*/
- Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/
- Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/
- const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */
- const Word16 code_preQ_fx[], /* i : prequantizer excitation */
- const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */
- Word16 T0, /* i : integer pitch variables Q0 */
- Word16 T0_frac, /* i : Fractional pitch variables Q0*/
- const Word16 coder_type, /* i : coding type */
- Word32 core_brate
-#ifdef ADD_IVAS_TBE_CODE
- , /* i : core bitrate */
- const int16_t element_mode, /* i : element mode */
- const int16_t idchan, /* i : channel ID */
- const int16_t flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */
- const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */
-#endif
-)
-{
- Word16 i;
- Word16 tmp_code_fx[2 * L_SUBFR * HIBND_ACB_L_FAC];
- Word16 tmp_code_preInt_fx[L_SUBFR];
- Word16 gain_code16 = 0;
- move16();
- Word16 tmp /*, tmp1, tmp2*/;
- /*Word16 random_code[L_SUBFR * HIBND_ACB_L_FAC];*/
- Word16 pitch;
-
- Word32 L_tmp, Ltemp1, Ltemp2;
- Word32 tempQ31;
- Word16 tempQ15;
-#ifndef ADD_IVAS_TBE_CODE
- Word16 L_subfr = L_SUBFR;
- move16();
-#endif
-#ifdef BASOP_NOGLOB_DECLARE_LOCAL
- Flag Overflow = 0;
- move32();
-#endif
-
- /**voice_factors = VF_0th_PARAM + VF_1st_PARAM * voice_fac + VF_2nd_PARAM * voice_fac * voice_fac;
- = VF_0th_PARAM + voice_fac * (VF_1st_PARAM + VF_2nd_PARAM * voice_fac )
- *voice_factors = min( max_val(0.0f, *voice_factors), 1.0f); */
- tempQ31 = L_deposit_h( VF_1st_PARAM_FX );
- tempQ15 = mac_r( tempQ31, VF_2nd_PARAM_FX, voice_fac_fx );
- tempQ31 = L_deposit_h( VF_0th_PARAM_FX );
- *voice_factors_fx = mac_r( tempQ31, voice_fac_fx, tempQ15 );
- move16();
- tmp = MAX_16;
- move16();
-
- pitch = shl_o( add( shl_o( T0, 2, &Overflow ), T0_frac ), 5, &Overflow ); /* Q7 */
-
- test();
- test();
- IF( ( ( EQ_16( coder_type, VOICED ) ) || ( GT_16( pitch, 14784 /* 115.5 in Q7 */ ) ) ) && ( GT_32( core_brate, ACELP_8k00 ) ) )
- {
- tmp = MAX_16;
- move16();
- *voice_factors_fx = mult_r( *voice_factors_fx, tmp );
- move16();
- }
-
- *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 );
- move16();
-#ifdef ADD_IVAS_TBE_CODE
- IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag )
- {
- IF( flag_TD_BWE && i_subfr == 0 )
- {
- set16_fx( bwe_exc, 0, L_FRAME32k );
- }
- return;
- }
-
-#endif
- IF( EQ_16( L_frame_fx, L_FRAME ) )
- {
- interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */
- gain_code16 = round_fx_o( L_shl_o( gain_code_fx, Q_exc, &Overflow ), &Overflow ); /*Q_exc */
- FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ )
- {
- L_tmp = L_mult( gain_code16, tmp_code_fx[i] ); /* Q9 + Q_exc + 1*/
- L_tmp = L_shl_sat( L_tmp, 5 ); /* Q9 + Q_exc + Q6*/
- L_tmp = L_mac_sat( L_tmp, gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] ); /*Q15+Q_exc */
- L_tmp = L_shl_o( L_tmp, 1, &Overflow ); /*16+Q_exc */ /* saturation can occur here */
- bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = round_fx_o( L_tmp, &Overflow ); /*Q_exc */
- move16();
- }
- }
- ELSE
- {
- IF( gain_preQ_fx != 0 )
- {
- FOR( i = 0; i < L_subfr; i++ )
- {
- /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */
- Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */
- Ltemp2 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /*Q2 * Q10 -> Q12 */
-
- Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */
- Ltemp2 = L_shl_o( Ltemp2, add( Q_exc, 4 ) /*Q_exc+16-13*/, &Overflow ); /*Q_exc+16 */
-
- tmp_code_preInt_fx[i] = round_fx_o( L_add_o( Ltemp1, Ltemp2, &Overflow ), &Overflow ); /* Q_exc */
- move16();
- }
- }
- ELSE
- {
- FOR( i = 0; i < L_subfr; i++ )
- {
- /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */
- Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */
- Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */
- tmp_code_preInt_fx[i] = round_fx_o( Ltemp1, &Overflow ); /* Q_exc */
- move16();
- }
- }
-
- interp_code_4over2_fx( tmp_code_preInt_fx, tmp_code_fx, L_subfr ); /* o: tmp_code in Q_exc */
- FOR( i = 0; i < L_subfr * 2; i++ )
- {
- L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * 2] ); /*Q14+Q_exc+1 */
- tmp = round_fx_o( L_shl_o( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/, &Overflow ), &Overflow ); /* tmp in Q_exc */
- bwe_exc_fx[i + i_subfr_fx * 2] = add_o( tmp, tmp_code_fx[i], &Overflow ); /*Q_exc */
- move16();
- }
- }
-
- return;
-}
-
-/*======================================================================================*/
-/* FUNCTION : prep_tbe_exc_ivas_fx() */
-/*--------------------------------------------------------------------------------------*/
-/* PURPOSE : Prepare TBE excitation */
-/*--------------------------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ (Word16) L_frame_fx : length of the frame */
-/* _ (Word16) i_subfr_fx : subframe index */
-/* _ (Word16) gain_pit_fx : Pitch gain (14) */
-/* _ (Word32) gain_code_fx : algebraic codebook gain (Q(16+Q_exc)) */
-/* _ (Word16*[]) code_fx : algebraic excitation (Q9) */
-/* _ (Word16) voice_fac_fx : voicing factor (Q15) */
-/* _ (Word16) gain_preQ_fx : prequantizer excitation gain */
-/* _ (Word16[]) code_preQ_fx : prequantizer excitation */
-/*--------------------------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ (Word16*[]) voice_factors_fx : TBE voicing factor (Q15) */
-/*--------------------------------------------------------------------------------------*/
-/* INPUT/OUTPUT ARGUMENTS : */
-/* _ (Word16[]) bwe_exc_fx : excitation for TBE (Q_exc) */
-/*--------------------------------------------------------------------------------------*/
-
-/* _ None */
-/*--------------------------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ None */
-/*======================================================================================*/
+ const Word16 L_frame_fx, /* i : length of the frame */
+ const Word16 L_subfr, /* i : subframe length */
+ const Word16 i_subfr_fx, /* i : subframe index */
+ const Word16 gain_pit_fx, /* i : Pitch gain Q14*/
+ const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/
+ const Word16 code_fx[], /* i : algebraic excitation Q9*/
+ const Word16 voice_fac_fx, /* i : voicing factor Q15*/
+ Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/
+ Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/
+ const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */
+ const Word16 code_preQ_fx[], /* i : prequantizer excitation */
+ const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */
+ const Word16 T0, /* i : integer pitch variables Q0 */
+ const Word16 T0_frac, /* i : Fractional pitch variables Q0*/
+ const Word16 coder_type, /* i : coding type */
+ const Word32 core_brate, /* i : core bitrate */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 idchan, /* i : channel ID */
+ const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */
+ const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */
-void prep_tbe_exc_ivas_fx(
- const Word16 L_frame_fx, /* i : length of the frame */
-#if 1 // def ADD_IVAS_TBE_CODE
- const Word16 L_subfr,
-#endif
- const Word16 i_subfr_fx, /* i : subframe index */
- const Word16 gain_pit_fx, /* i : Pitch gain Q14*/
- const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/
- const Word16 code_fx[], /* i : algebraic excitation Q9*/
- const Word16 voice_fac_fx, /* i : voicing factor Q15*/
- Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/
- Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/
- const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */
- const Word16 code_preQ_fx[], /* i : prequantizer excitation */
- const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */
- Word16 T0, /* i : integer pitch variables Q0 */
- Word16 T0_frac, /* i : Fractional pitch variables Q0*/
- const Word16 coder_type, /* i : coding type */
- Word32 core_brate
-#if 1 // def ADD_IVAS_TBE_CODE
- , /* i : core bitrate */
- const Word16 element_mode, /* i : element mode */
- const Word16 idchan, /* i : channel ID */
- const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */
- const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */
-#endif
)
{
Word16 i;
@@ -7555,7 +7281,7 @@ void prep_tbe_exc_ivas_fx(
*voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 );
move16();
-#if 1 // def ADD_IVAS_TBE_CODE
+
test();
test();
IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag )
@@ -7568,7 +7294,6 @@ void prep_tbe_exc_ivas_fx(
return;
}
-#endif
IF( EQ_16( L_frame_fx, L_FRAME ) )
{
interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */
@@ -7627,6 +7352,7 @@ void prep_tbe_exc_ivas_fx(
return;
}
+
/*=============================================================================*/
/* FUNCTION : void swb_formant_fac_fx ( ) */
/*------------------------------------------------------------------------------*/
@@ -7646,9 +7372,10 @@ void prep_tbe_exc_ivas_fx(
/* CALLED FROM : */
/*==============================================================================*/
-Word16 swb_formant_fac_fx( /* o : Formant filter strength [0,1] */
- const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */
- Word16 *tilt_mem /* i/o: Tilt smoothing memory (Q12) */
+/*! r: Formant filter strength [0,1] */
+Word16 swb_formant_fac_fx(
+ const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */
+ Word16 *tilt_mem /* i/o: Tilt smoothing memory (Q12) */
)
{
Word16 formant_fac;
@@ -7668,7 +7395,6 @@ Word16 swb_formant_fac_fx( /* o : Formant filter strength
tmp = sub( tmp, SWB_TILT_LOW_FX ); /* Q12 */
formant_fac = mult_r( tmp, SWB_TILT_DELTA_FX ); /* Q12 */
-
IF( GT_16( formant_fac, 4096 /* 1 in Q12 */ ) )
{
formant_fac = 4096; /* 1 in Q12 */
@@ -7688,6 +7414,12 @@ Word16 swb_formant_fac_fx( /* o : Formant filter strength
}
+/*-------------------------------------------------------------------*
+ * wb_tbe_extras_reset_fx()
+ *
+ *
+ *-------------------------------------------------------------------*/
+
void wb_tbe_extras_reset_fx(
Word16 mem_genSHBexc_filt_down_wb2[],
Word16 mem_genSHBexc_filt_down_wb3[] )
@@ -7704,7 +7436,6 @@ void wb_tbe_extras_reset_fx(
* Determine TBE bit consumption per frame from bitrate *
*-------------------------------------------------------------------*/
-
Word16 get_tbe_bits_fx(
const Word32 total_brate, /* o : TBE bit consumption per frame */
const Word16 bwidth, /* i : overall bitrate */
diff --git a/lib_com/tcx_mdct_window.c b/lib_com/tcx_mdct_window_fx.c
similarity index 90%
rename from lib_com/tcx_mdct_window.c
rename to lib_com/tcx_mdct_window_fx.c
index 44ce806f73305390709b042c43728ab19ae3aab0..0316ec5827ecd13a1d174b67fb89d18eacdf521b 100644
--- a/lib_com/tcx_mdct_window.c
+++ b/lib_com/tcx_mdct_window_fx.c
@@ -123,9 +123,6 @@ void mdct_window_sine(
Word16 n /* Q0 */
)
{
-#ifdef IVAS_CODE
- if ( element_mode == EVS_MONO )
-#endif
{
const PWord16 *table;
table = getSineWindowTable( n );
@@ -138,42 +135,6 @@ void mdct_window_sine(
}
// PMT("getSineWindowTable needs to be updated for IVAS")
}
-#ifdef IVAS_CODE
- else
- {
- const float *window_table = 0;
- Word16 buf_in_size = 0;
- switch ( window_type )
- {
- case FULL_OVERLAP:
- window_table = tcx_mdct_window_48;
- buf_in_size = 420;
- break;
- case HALF_OVERLAP:
- window_table = tcx_mdct_window_half_48;
- buf_in_size = 180;
- break;
- case TRANSITION_OVERLAP:
- case MIN_OVERLAP:
- window_table = tcx_mdct_window_trans_48;
- buf_in_size = 60;
- break;
-
- default:
- assert( 0 && "Unsupported window type" );
- break;
- }
-
- if ( Fs == 48000 )
- {
- mvr2r( window_table, window, n );
- }
- else
- {
- lerp( window_table, window, n, buf_in_size );
- }
- }
-#endif
}
diff --git a/lib_com/tec_com.c b/lib_com/tec_com_fx.c
similarity index 100%
rename from lib_com/tec_com.c
rename to lib_com/tec_com_fx.c
diff --git a/lib_com/tns_base.c b/lib_com/tns_base.c
index 101bc1df8b6552407c352786dc2e08dd79ec5ec0..5e18430be5631649c80cbd2524996ee7f008a419 100644
--- a/lib_com/tns_base.c
+++ b/lib_com/tns_base.c
@@ -96,10 +96,8 @@ void InitTnsConfiguration(
Word32 nSampleRate;
Word16 s1;
Word16 s2;
-#ifndef ADD_IVAS_TNS
(void) ( element_mode );
(void) ( is_mct );
-#endif
nSampleRate = bwMode2fs[bwidth];
move32();
startLineFilter = &pTnsConfig->iFilterBorders[1];
@@ -138,21 +136,6 @@ void InitTnsConfiguration(
ELSE
IF( GT_32( nSampleRate, INT_FS_16k ) )
{
-#ifdef ADD_IVAS_TNS
- if ( ( element_mode > IVAS_SCE ) && ( total_brate >= ( is_mct ? IVAS_32k : IVAS_48k ) ) )
- {
- pTnsConfig->nMaxFilters = sizeof( tnsParameters32kHz_Stereo ) / sizeof( tnsParameters32kHz_Stereo[0] );
- if ( nSampleRate == 100 * frameLength ) /* sub-frame length is <= 10 ms */
- {
- pTnsConfig->pTnsParameters = tnsParameters32kHz_grouped;
- }
- else
- {
- pTnsConfig->pTnsParameters = tnsParameters32kHz_Stereo;
- }
- }
- else
-#endif
{
move16();
@@ -212,9 +195,6 @@ void InitTnsConfiguration(
move16();
pTnsConfig->iFilterBorders[0] = frameLength;
}
-#ifdef ADD_IVAS_TNS
- pTnsConfig->allowTnsOnWhite = 0;
-#endif
return; /*TNS_NO_ERROR;*/
}
@@ -829,43 +809,19 @@ static Word16 DecodeUsingTable( Decoder_State *st, Word16 *pValue /*Q0*/, const
/* TNS filter coefficients */
-int16_t DecodeSWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue )
+Word16 DecodeSWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue )
{
assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) );
return DecodeUsingTable( st, pValue, codesTnsCoeffSWBTCX20[index], nTnsCoeffCodes );
}
-// int16_t GetSWBTCX10TnsFilterCoeffBits_flt( const int16_t value, const int16_t index )
-//{
-// assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) );
-// return GetBitsFromTable( value, codesTnsCoeffSWBTCX10[index], nTnsCoeffCodes );
-// }
-
-// int16_t EncodeSWBTCX10TnsFilterCoeff_flt( const int16_t value, const int16_t index )
-//{
-// assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) );
-// return EncodeUsingTable( value, codesTnsCoeffSWBTCX10[index], nTnsCoeffCodes );
-// }
-
-int16_t DecodeSWBTCX10TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue )
+Word16 DecodeSWBTCX10TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue )
{
assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) );
return DecodeUsingTable( st, pValue, codesTnsCoeffSWBTCX10[index], nTnsCoeffCodes );
}
-// int16_t GetWBTCX20TnsFilterCoeffBits_flt( const int16_t value, const int16_t index )
-//{
-// assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) );
-// return GetBitsFromTable( value, codesTnsCoeffWBTCX20[index], nTnsCoeffCodes );
-// }
-
-// int16_t EncodeWBTCX20TnsFilterCoeff_flt( const int16_t value, const int16_t index )
-//{
-// assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) );
-// return EncodeUsingTable( value, codesTnsCoeffWBTCX20[index], nTnsCoeffCodes );
-// }
-
-int16_t DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue )
+Word16 DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue )
{
assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) );
return DecodeUsingTable( st, pValue, codesTnsCoeffWBTCX20[index], nTnsCoeffCodes );
@@ -874,49 +830,25 @@ int16_t DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index,
/* TNS filter order */
-// void const *GetTnsFilterOrder_flt( void const *p, const int16_t index, int16_t *pValue )
-//{
-// *pValue = ( (STnsFilter const *) p )[index].order;
-// return ( (STnsFilter const *) p )[index].coefIndex;
-// }
-
-// void *SetTnsFilterOrder_flt( void *p, const int16_t index, const int16_t value )
-//{
-// ( (STnsFilter *) p )[index].order = value;
-// return ( (STnsFilter *) p )[index].coefIndex;
-// }
-
-// int16_t GetTnsFilterOrderBitsSWBTCX20_flt( const int16_t value, const int16_t index )
-//{
-// (void) index;
-// return GetBitsFromTable( value - 1, codesTnsOrderTCX20, nTnsOrderCodes );
-// }
-
-// int16_t EncodeTnsFilterOrderSWBTCX20_flt( const int16_t value, const int16_t index )
-//{
-// (void) index;
-// return EncodeUsingTable( value - 1, codesTnsOrderTCX20, nTnsOrderCodes );
-// }
-
-int16_t DecodeTnsFilterOrderSWBTCX20_flt( Decoder_State *st, const int16_t index, int16_t *pValue )
+Word16 DecodeTnsFilterOrderSWBTCX20_flt( Decoder_State *st, const Word16 index, Word16 *pValue )
{
(void) index;
return DecodeUsingTable( st, pValue, codesTnsOrderTCX20, nTnsOrderCodes );
}
-int16_t GetTnsFilterOrderBitsSWBTCX10_flt( const int16_t value, const int16_t index )
+Word16 GetTnsFilterOrderBitsSWBTCX10_flt( const Word16 value, const Word16 index )
{
(void) index;
return GetBitsFromTable( value - 1, codesTnsOrderTCX10, nTnsOrderCodes );
}
-int16_t EncodeTnsFilterOrderSWBTCX10_flt( const int16_t value, const int16_t index )
+Word16 EncodeTnsFilterOrderSWBTCX10_flt( const Word16 value, const Word16 index )
{
(void) index;
return EncodeUsingTable( value - 1, codesTnsOrderTCX10, nTnsOrderCodes );
}
-int16_t DecodeTnsFilterOrderSWBTCX10_flt( Decoder_State *st, const int16_t index, int16_t *pValue )
+Word16 DecodeTnsFilterOrderSWBTCX10_flt( Decoder_State *st, const Word16 index, Word16 *pValue )
{
(void) index;
return DecodeUsingTable( st, pValue, codesTnsOrderTCX10, nTnsOrderCodes );
@@ -1125,42 +1057,36 @@ void *SetTnsEnabled( void *p, const Word16 index, const Word16 value )
/* Number of TNS filters */
-void const *GetNumOfTnsFilters_flt( void const *p, const int16_t index, int16_t *pValue )
+void const *GetNumOfTnsFilters_flt( void const *p, const Word16 index, Word16 *pValue )
{
- *pValue = (int16_t) abs( ( (STnsData const *) p )[index].nFilters );
+ *pValue = (Word16) abs( ( (STnsData const *) p )[index].nFilters );
return ( (STnsData const *) p )[index].filter;
}
-void *SetNumOfTnsFilters_flt( void *p, const int16_t index, const int16_t value )
+void *SetNumOfTnsFilters_flt( void *p, const Word16 index, const Word16 value )
{
- ( (STnsData *) p )[index].nFilters = (int16_t) abs( value );
+ ( (STnsData *) p )[index].nFilters = (Word16) abs( value );
return ( (STnsData *) p )[index].filter;
}
-int16_t DecodeTnsFilterOrder_flt( Decoder_State *st, const int16_t index, int16_t *pValue )
+Word16 DecodeTnsFilterOrder_flt( Decoder_State *st, const Word16 index, Word16 *pValue )
{
(void) index;
return DecodeUsingTable( st, pValue, codesTnsOrder, nTnsOrderCodes );
}
/* TNS on whitened spectra flag */
-void const *GetTnsOnWhite( void const *p, const int16_t index, int16_t *pValue )
+void const *GetTnsOnWhite( void const *p, const Word16 index, Word16 *pValue )
{
*pValue = ( (STnsData const *) p )[index].tnsOnWhitenedSpectra > 0 ? 1 : 0;
return NULL;
}
-void *SetTnsOnWhite( void *p, const int16_t index, const int16_t value )
+void *SetTnsOnWhite( void *p, const Word16 index, const Word16 value )
{
( (STnsData *) p )[index].tnsOnWhitenedSpectra = value;
return NULL;
}
-// void const *GetTnsEnabledSingleFilter( void const *p, const int16_t index, int16_t *pValue )
-//{
-// *pValue = ( (STnsData const *) p )[index].nFilters != 0 ? 1 : 0;
-// return ( (STnsData const *) p )[index].filter;
-// }
-
void const *GetTnsEnabledSingleFilter( void const *p, const Word16 index, Word16 *pValue )
{
move16();
diff --git a/lib_com/tools.c b/lib_com/tools.c
index b1a9f4d13f29a8e3b9e0d7e53c8cd5b0b51bfb6f..69f26350393e9eaf022c151c3009f8fb069ad663 100644
--- a/lib_com/tools.c
+++ b/lib_com/tools.c
@@ -47,51 +47,23 @@
*------------------------------------------------------------------*/
/*! r: output random value */
-int16_t own_random(
- int16_t *seed /* i/o: random seed */
+Word16 own_random(
+ Word16 *seed /* i/o: random seed */
)
{
- *seed = (int16_t) ( *seed * 31821L + 13849L );
+ *seed = (Word16) ( *seed * 31821L + 13849L );
return ( *seed );
}
/*---------------------------------------------------------------------
- * sign()
+ * norm_ul_float()
*
*---------------------------------------------------------------------*/
-/*! r: sign of x (+1/-1) */
-float sign(
- const float x /* i : input value of x */
-)
-{
- if ( x < 0.0f )
- {
- return -1.0f;
- }
- else
- {
- return 1.0f;
- }
-}
-
-/*---------------------------------------------------------------------
- * log2_f()
- *
- *---------------------------------------------------------------------*/
-
-/*! r: logarithm2 of x */
-float log2_f(
- const float x /* i : input value of x */
-)
-{
- return (float) ( log( x ) / log( 2.0f ) );
-}
-
-int16_t norm_ul_float( uint32_t UL_var1 )
+Word16 norm_ul_float( UWord32 UL_var1 )
{
- int16_t var_out;
+ Word16 var_out;
if ( UL_var1 == 0 )
{
@@ -99,7 +71,7 @@ int16_t norm_ul_float( uint32_t UL_var1 )
}
else
{
- for ( var_out = 0; UL_var1 < (uint32_t) 0x80000000U; var_out++ )
+ for ( var_out = 0; UL_var1 < (UWord32) 0x80000000U; var_out++ )
{
UL_var1 <<= 1;
}
@@ -113,18 +85,17 @@ int16_t norm_ul_float( uint32_t UL_var1 )
/*---------------------------------------------------------------------
* sum_s()
* sum_l()
- * sum_f()
*
*---------------------------------------------------------------------*/
/*! r: sum of all vector elements */
-int16_t sum_s(
- const int16_t *vec, /* i : input vector */
- const int16_t lvec /* i : length of input vector */
+Word16 sum_s(
+ const Word16 *vec, /* i : input vector */
+ const Word16 lvec /* i : length of input vector */
)
{
- int16_t i;
- int16_t tmp;
+ Word16 i;
+ Word16 tmp;
tmp = 0;
for ( i = 0; i < lvec; i++ )
@@ -182,7 +153,7 @@ Word32 sum2_f_16_gb_fx(
const Word16 lvec, /* i : length of input vector */
Word16 gb )
{
- int16_t i;
+ Word16 i;
Word32 tmp;
tmp = 0;
@@ -311,7 +282,6 @@ Word32 sum2_32_fx(
/*-------------------------------------------------------------------*
* set_c()
* set_s()
- * set_f()
* set_l()
* set_d()
*
@@ -319,12 +289,12 @@ Word32 sum2_32_fx(
*-------------------------------------------------------------------*/
void set_c(
- int8_t y[], /* i/o: Vector to set */
- const int8_t a, /* i : Value to set the vector to */
- const int32_t N /* i : Length of the vector */
+ Word8 y[], /* i/o: Vector to set */
+ const Word8 a, /* i : Value to set the vector to */
+ const Word32 N /* i : Length of the vector */
)
{
- int16_t i;
+ Word16 i;
for ( i = 0; i < N; i++ )
{
@@ -336,12 +306,12 @@ void set_c(
void set_s(
- int16_t y[], /* i/o: Vector to set */
- const int16_t a, /* i : Value to set the vector to */
- const int16_t N /* i : Length of the vector */
+ Word16 y[], /* i/o: Vector to set */
+ const Word16 a, /* i : Value to set the vector to */
+ const Word16 N /* i : Length of the vector */
)
{
- int16_t i;
+ Word16 i;
for ( i = 0; i < N; i++ )
{
@@ -353,28 +323,12 @@ void set_s(
void set_l(
- int32_t y[], /* i/o: Vector to set */
- const int32_t a, /* i : Value to set the vector to */
- const int16_t N /* i : Length of the vector */
+ Word32 y[], /* i/o: Vector to set */
+ const Word32 a, /* i : Value to set the vector to */
+ const Word16 N /* i : Length of the vector */
)
{
- int16_t i;
-
- for ( i = 0; i < N; i++ )
- {
- y[i] = a;
- }
-
- return;
-}
-
-void set_f(
- float y[], /* i/o: Vector to set */
- const float a, /* i : Value to set the vector to */
- const int16_t N /* i : Lenght of the vector */
-)
-{
- int16_t i;
+ Word16 i;
for ( i = 0; i < N; i++ )
{
@@ -391,11 +345,11 @@ void set_f(
*---------------------------------------------------------------------*/
void set_zero(
- float *vec, /* o : input vector */
- const int16_t lvec /* i : length of the vector */
+ float *vec, /* o : input vector */
+ const Word16 lvec /* i : length of the vector */
)
{
- int16_t i;
+ Word16 i;
for ( i = 0; i < lvec; i++ )
{
@@ -409,8 +363,6 @@ void set_zero(
/*---------------------------------------------------------------------*
* mvr2r()
* mvs2s()
- * mvr2s()
- * mvs2r()
* mvr2d()
* mvd2r()
*
@@ -420,10 +372,10 @@ void set_zero(
void mvr2r(
const float x[], /* i : input vector */
float y[], /* o : output vector */
- const int16_t n /* i : vector size */
+ const Word16 n /* i : vector size */
)
{
- int16_t i;
+ Word16 i;
if ( n <= 0 )
{
@@ -450,12 +402,12 @@ void mvr2r(
}
void mvs2s(
- const int16_t x[], /* i : input vector */
- int16_t y[], /* o : output vector */
- const int16_t n /* i : vector size */
+ const Word16 x[], /* i : input vector */
+ Word16 y[], /* o : output vector */
+ const Word16 n /* i : vector size */
)
{
- int16_t i;
+ Word16 i;
if ( n <= 0 )
{
@@ -482,12 +434,12 @@ void mvs2s(
}
void mvl2l(
- const int32_t x[], /* i : input vector */
- int32_t y[], /* o : output vector */
- const int16_t n /* i : vector size */
+ const Word32 x[], /* i : input vector */
+ Word32 y[], /* o : output vector */
+ const Word16 n /* i : vector size */
)
{
- int16_t i;
+ Word16 i;
if ( n <= 0 )
{
@@ -687,32 +639,6 @@ Word16 minimum_l(
return ind;
}
-/*---------------------------------------------------------------------*
- * dotp()
- *
- * Dot product of vector x[] and vector y[]
- *---------------------------------------------------------------------*/
-
-/*! r: dot product of x[] and y[] */
-float dotp(
- const float x[], /* i : vector x[] */
- const float y[], /* i : vector y[] */
- const int16_t n /* i : vector length */
-)
-{
- int16_t i;
- float suma;
-
- suma = x[0] * y[0];
-
- for ( i = 1; i < n; i++ )
- {
- suma += x[i] * y[i];
- }
-
- return suma;
-}
-
/*---------------------------------------------------------------------*
* dotp()
*
@@ -800,20 +726,6 @@ Word32 dotp_fixed_32(
return W_extract_l( suma );
}
-/*---------------------------------------------------------------------*
- * inv_sqrt()
- *
- * Find the inverse square root of the input value
- *---------------------------------------------------------------------*/
-
-/*! r: inverse square root of input value */
-float inv_sqrt(
- const float x /* i : input value */
-)
-{
- return (float) ( 1.0 / sqrt( x ) );
-}
-
/*-------------------------------------------------------------------*
* v_add_w64()
*
@@ -839,54 +751,50 @@ void v_add_w64(
return;
}
-
/*-------------------------------------------------------------------*
- * v_sub()
+ * v_sub_fixed()
*
* Subtraction of two vectors sample by sample
*-------------------------------------------------------------------*/
-void v_sub(
- const float x1[], /* i : Input vector 1 */
- const float x2[], /* i : Input vector 2 */
- float y[], /* o : Output vector that contains vector 1 - vector 2 */
- const int16_t N /* i : Vector length */
+void v_sub_fixed(
+ const Word32 x1[], /* i : Input vector 1 */
+ const Word32 x2[], /* i : Input vector 2 */
+ Word32 y[], /* o : Output vector that contains vector 1 - vector 2 */
+ const Word16 N, /* i : Vector length */
+ const Word16 hdrm /* i : headroom for when subtraction result > 1 or < -1 */
)
{
- int16_t i;
+ Word16 i;
- for ( i = 0; i < N; i++ )
+ FOR( i = 0; i < N; i++ )
{
- y[i] = x1[i] - x2[i];
+ y[i] = L_sub( L_shr( x1[i], hdrm ), L_shr( x2[i], hdrm ) );
+ move32();
}
return;
}
-/*-------------------------------------------------------------------*
- * v_sub()
- *
- * Subtraction of two vectors sample by sample
- *-------------------------------------------------------------------*/
-
-void v_sub_fixed(
+#ifdef VEC_ARITH_OPT_v1
+void v_sub_fixed_no_hdrm(
const Word32 x1[], /* i : Input vector 1 */
const Word32 x2[], /* i : Input vector 2 */
Word32 y[], /* o : Output vector that contains vector 1 - vector 2 */
- const Word16 N, /* i : Vector length */
- const Word16 hdrm /* i : headroom for when subtraction result > 1 or < -1 */
+ const Word16 N /* i : Vector length */
)
{
Word16 i;
FOR( i = 0; i < N; i++ )
{
- y[i] = L_sub( L_shr( x1[i], hdrm ), L_shr( x2[i], hdrm ) );
+ y[i] = L_sub( x1[i], x2[i] );
move32();
}
return;
}
+#endif /* VEC_ARITH_OPT_v1 */
/*-------------------------------------------------------------------*
* v_multc_fixed()
@@ -957,9 +865,9 @@ void v_multc_fixed_16_16(
*-------------------------------------------------------------------*/
float usdequant(
- const int16_t idx, /* i : quantizer index */
- const float qlow, /* i : lowest codebook entry (index 0) */
- const float delta /* i : quantization step */
+ const Word16 idx, /* i : quantizer index */
+ const float qlow, /* i : lowest codebook entry (index 0) */
+ const float delta /* i : quantization step */
)
{
float g;
diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c
index 59918a1eae80fa53cd600b229d26bcdca91dc1ee..8e803051d8dc674f0158098f03859a44a581ae72 100644
--- a/lib_com/tools_fx.c
+++ b/lib_com/tools_fx.c
@@ -264,6 +264,30 @@ Word16 usdequant_fx( /* Qx*/
return ( g );
}
+Word32 usdequant32_fx( /* Qx*/
+ const Word16 idx, /* i: quantizer index Q0*/
+ const Word32 qlow, /* i: lowest codebook entry (index 0) Qx*/
+ const Word32 delta /* i: quantization step Qx-1*/
+)
+{
+ Word32 g;
+ Word64 L_tmp;
+
+ /*g = idx * delta + qlow;*/
+ L_tmp = W_deposit32_l( qlow ); /*Qx */
+ L_tmp = W_mac_32_16( L_tmp, delta, idx );
+ IF( GE_64( L_tmp, MAX_32 ) )
+ {
+ g = MAX_32;
+ move32();
+ }
+ ELSE
+ {
+ g = W_extract_l( L_tmp ); /*Qx */
+ }
+ return ( g );
+}
+
/*-------------------------------------------------------------------*
* usquant()
*
@@ -774,13 +798,37 @@ void Copy_Scale_sig_16_32_no_sat(
}
return;
}
+#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat
+ L_tmp = L_shl_o( 1, exp0 - 1, &Overflow );
+
+ IF( L_tmp >= 0x7FFF )
+ {
+ FOR( i = 0; i < lg; i++ )
+ {
+ // y[i] = L_mult0(x[i], L_tmp);
+ y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) );
+ move32(); /* Overflow can occur here */
+ }
+ return;
+ }
+ // ELSE
+ {
+ Word16 tmp = extract_l( L_tmp );
+ FOR( i = 0; i < lg; i++ )
+ {
+ y[i] = L_mult( x[i], tmp );
+ move32();
+ }
+ }
+#else
L_tmp = L_shl_o( 1, exp0 - 1, &Overflow );
FOR( i = 0; i < lg; i++ )
{
// y[i] = L_mult0(x[i], L_tmp);
y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) );
- move32(); /* saturation can occur here */
+ move32(); /* Overflow can occur here */
}
+#endif
}
void Copy_Scale_sig_32_16(
@@ -929,7 +977,7 @@ void scale_sig(
}
/*---------------------------------------------------------------------*
- * mean()
+ * mean_fx()
*
*---------------------------------------------------------------------*/
Word16 mean_fx( /* o : mean of vector */
@@ -2103,7 +2151,7 @@ Word16 own_random2_fx( Word16 seed )
}
/*---------------------------------------------------------------------
- * sign()
+ * sign_fx()
*
*---------------------------------------------------------------------*/
@@ -3796,6 +3844,58 @@ void hp400_12k8_fx(
return;
}
+void hp400_12k8_ivas_fx(
+ Word16 signal[], /* i/o: input signal / output is divided by 16 */
+ const Word16 lg, /* i : lenght of signal */
+ Word16 mem[] /* i/o: filter memory [6] */
+)
+{
+ Word16 i;
+ Word16 x0, x1, x2;
+ Word32 L_tmp, yy1, y2;
+
+ yy1 = L_Comp( mem[2], mem[3] ); /* Q_syn + 13 */
+ y2 = L_Comp( mem[0], mem[1] ); /* Q_syn + 13 */
+ x0 = mem[4]; /* Q_syn */
+ move16();
+ x1 = mem[5]; /* Q_syn */
+ move16();
+
+ FOR( i = 0; i < lg; i++ )
+ {
+ x2 = x1; /* Q_syn */
+ move16();
+ x1 = x0; /* Q_syn */
+ move16();
+ x0 = signal[i]; /* Q_syn */
+ move16();
+
+ L_tmp = Mpy_32_16_1( yy1, a_hp400_ivas_fx[1] ); /*yy1 * a_hp400[1]*/ /* Qx(Q_of_yy1) + 10 ---->( (Q_syn+13) + 12 - 15)*/
+ L_tmp = Madd_32_16( L_tmp, y2, a_hp400_ivas_fx[2] ); /*y2 * a_hp400[2]*/ /* Qx + 10 ---->( (Q_syn+13) + 12 - 15)*/
+ L_tmp = L_shl( L_tmp, 3 ); /* shifting by 3 to maintain same Q (Q_syn+13) */
+
+ L_tmp = L_mac( L_tmp, x0, b_hp400_fx[0] ); /* Q_syn + 13 */
+ L_tmp = L_mac( L_tmp, x1, b_hp400_fx[1] ); /* Q_syn + 13 */
+ L_tmp = L_mac( L_tmp, x2, b_hp400_fx[2] ); /* Q_syn + 13 */
+
+ y2 = yy1; /* Q_syn + 13 */
+ move32();
+ yy1 = L_tmp; /* Q_syn + 13 */
+ move32();
+
+ signal[i] = round_fx( L_tmp ); /* Q_syn - 3 */
+ move16();
+ }
+
+ L_Extract( yy1, &mem[2], &mem[3] );
+ L_Extract( y2, &mem[0], &mem[1] );
+ mem[4] = x0; /* Q_syn */
+ mem[5] = x1; /* Q_syn */
+ move16();
+ move16();
+ return;
+}
+
Word16 dot_prod_satcontr( const Word16 *x, const Word16 *y, Word16 qx, Word16 qy, Word16 *qo, Word16 len )
{
Word16 tmp_tab_x[L_FRAME16k];
@@ -4139,7 +4239,7 @@ Word16 lin_interp_ivas_fx(
}
/*---------------------------------------------------------------------
- * sign()
+ * sign_l()
*
*---------------------------------------------------------------------*/
@@ -4177,7 +4277,7 @@ void v_mult16_fixed(
}
/*---------------------------------------------------------------------*
- * set_zero()
+ * set_zero_fx()
*
* Set a vector vec[] of dimension lvec to zero
*---------------------------------------------------------------------*/
@@ -4480,6 +4580,26 @@ void v_add_fixed(
return;
}
+#ifdef VEC_ARITH_OPT_v1
+void v_add_fixed_no_hdrm(
+ const Word32 x1[], /* i : Input vector 1 */
+ const Word32 x2[], /* i : Input vector 2 */
+ Word32 y[], /* o : Output vector that contains vector 1 + vector 2 */
+ const Word16 N /* i : Vector length */
+)
+{
+ Word16 i;
+
+ FOR( i = 0; i < N; i++ )
+ {
+ y[i] = L_add( x1[i], x2[i] );
+ move32();
+ }
+
+ return;
+}
+#endif /* VEC_ARITH_OPT_v1 */
+
void v_add_fixed_me(
const Word32 x1[], /* i : Input vector 1 */
const Word16 x1_e, /* i : Exponent for input vector 1 */
@@ -4650,6 +4770,18 @@ Flag is_zero_arr16( Word16 *arr, Word16 size )
return 1;
}
+Flag is_zero_arr64( Word64 *arr, Word16 size )
+{
+ FOR( Word16 i = 0; i < size; i++ )
+ {
+ IF( arr[i] != 0 )
+ {
+ return 0;
+ }
+ }
+ return 1;
+}
+
void Scale_sig64(
Word64 x[], /* i/o: signal to scale Qx */
Word16 len, /* i : size of x[] Q0 */
diff --git a/lib_com/wtda.c b/lib_com/wtda.c
deleted file mode 100644
index 3fb40813816c7b4462bdcc3ec82b8df2314fb845..0000000000000000000000000000000000000000
--- a/lib_com/wtda.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include "cnst.h"
-#include "prot_fx.h"
-#include "rom_com.h"
-#include
-#include "wmc_auto.h"
-
-
-void wtda_fx32(
- const Word32 *new_audio, /* i : input audio Q11 */
- Word32 *wtda_audio, /* o : windowed audio Q11 */
- Word32 *old_wtda, /* i/o: windowed audio from previous frame */
- const Word16 left_mode, /* i : window overlap of previous frame (0: full, 2: none, or 3: half) */
- const Word16 right_mode, /* i : window overlap of current frame (0: full, 2: none, or 3: half) */
- const Word16 L /* i : length */
-)
-{
- Word16 i, decimate, decay;
- Word16 idx1, idx2, idx3, idx4;
- Word16 n, windecay48, windecay16;
- const Word32 *allsig_l, *allsig_r;
- Word16 win_right[R2_48];
- Word16 win_int_left[R1_16];
- Word16 win_left[R1_48];
- Word16 win_int_right[R2_16];
-
- tcx_get_windows_mode1( left_mode, right_mode, win_left, win_right, win_int_left, win_int_right, L );
-
- decimate = 1; /* L_FRAME 48k */
- move16();
- decay = 0;
- move16();
- windecay48 = extract_l( WINDECAY48 ); // (int16_t)(2 * ((float)L_FRAME48k * N_ZERO_MDCT_NS / FRAME_SIZE_NS)) + R1_48
-
- test();
- IF( EQ_16( L, L_FRAME32k ) || EQ_16( L, L_FRAME16k ) )
- {
- decimate = 3;
- move16();
- decay = 1;
- move16();
- }
- ELSE IF( EQ_16( L, L_FRAME8k ) )
- {
- decimate = 6;
- move16();
- decay = 2;
- move16();
- }
-
- SWITCH( L ) // (int16_t)((float)L * N_ZERO_MDCT_NS / FRAME_SIZE_NS)
- {
- case L_FRAME16k:
- n = 90;
- move16();
- BREAK;
- case L_FRAME32k:
- n = 180;
- move16();
- BREAK;
- case L_FRAME48k:
- n = 270;
- move16();
- BREAK;
- default:
- n = (Word16) ( ( L * N_ZERO_MDCT_NS ) / FRAME_SIZE_NS );
- move16();
- BREAK;
- }
-
- windecay16 = extract_l( WINDECAY16 ); // (int16_t)(2 * ((float)L_FRAME16k * N_ZERO_MDCT_NS / FRAME_SIZE_NS)) + R1_16;
-
- /* algorithmic delay reduction */
- i = 0;
- move16();
-
- IF( old_wtda == NULL )
- {
- allsig_r = new_audio + n;
- allsig_l = new_audio + n - L;
- }
- ELSE
- {
- allsig_r = new_audio + n;
- allsig_l = old_wtda + n;
- }
-
- IF( EQ_16( L, L_FRAME32k ) )
- {
- FOR( i = 0; i < ( L / 2 - n ); i += 2 )
- {
- idx1 = sub( sub( shr( L, 1 ), i ), 1 );
- idx2 = sub( sub( 3 * L_FRAME16k / 2 - 1, shr( i, 1 ) ), windecay16 );
- idx3 = add( shr( L, 1 ), i );
- idx4 = sub( add( 3 * L_FRAME16k / 2, shr( i, 1 ) ), windecay16 );
- wtda_audio[i] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_int_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_int_right[idx4] ) );
- move32();
-
- idx1 = sub( sub( shr( L, 1 ), add( i, 1 ) ), 1 );
- idx2 = sub( add( i_mult( ( sub( sub( 3 * L_FRAME16k / 2, shr( i, 1 ) ), 1 ) ), decimate ), decay ), windecay48 );
- idx3 = add( add( shr( L, 1 ), i ), 1 );
- idx4 = sub( sub( sub( i_mult( ( add( 3 * L_FRAME16k / 2 + 1, shr( i, 1 ) ) ), decimate ), decay ), 1 ), windecay48 );
- wtda_audio[i + 1] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_right[idx4] ) );
- move32();
- }
-
- FOR( i = L / 2 - n; i < L / 2; i += 2 )
- {
- wtda_audio[i] = L_negate( allsig_r[( ( ( L >> 1 ) - i ) - 1 )] );
- move32();
- wtda_audio[i + 1] = L_negate( allsig_r[( ( ( L >> 1 ) - ( i + 1 ) ) - 1 )] );
- move32();
- }
- FOR( i = 0; i < n; i += 2 )
- {
- wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[i], win_left[( ( ( i >> 1 ) * decimate ) + decay )] ), new_audio[( ( n - i ) - 1 )] );
- move32();
- wtda_audio[( ( i + ( L >> 1 ) ) + 1 )] = L_sub_sat( Mpy_32_16_1( allsig_l[i + 1], win_int_left[i / 2] ), new_audio[( ( n - ( i + 1 ) ) - 1 )] );
- move32();
- }
-
- FOR( i = n; i < L / 2; i += 2 )
- {
- idx1 = i;
- move16();
- idx2 = add( i_mult( shr( i, 1 ), decimate ), decay );
- idx3 = sub( sub( L, i ), 1 );
- idx4 = sub( sub( i_mult( sub( shr( L, 1 ), shr( i, 1 ) ), decimate ), 1 ), decay );
- wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_left[idx4] ) );
- move32();
-
- idx1 = add( i, 1 );
- idx2 = shr( i, 1 );
- idx3 = sub( sub( L, add( i, 1 ) ), 1 );
- idx4 = sub( sub( shr( L, 1 ), shr( i, 1 ) ), 1 );
- wtda_audio[( ( i + ( L >> 1 ) ) + 1 )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_int_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_int_left[idx4] ) );
- move32();
- }
- }
- ELSE
- {
- FOR( i = 0; i < L / 2 - n; i++ )
- {
- idx1 = sub( sub( shr( L, 1 ), i ), 1 );
- idx2 = sub( add( sub( i_mult( i_mult( 3, shr( L, 1 ) ), decimate ), i_mult( add( i, 1 ), decimate ) ), decay ), windecay48 );
- idx3 = add( shr( L, 1 ), i );
- idx4 = sub( sub( add( sub( i_mult( i_mult( 3, shr( L, 1 ) ), decimate ), 1 ), i_mult( add( i, 1 ), decimate ) ), decay ), windecay48 );
- wtda_audio[i] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_right[idx4] ) );
- move32();
- }
-
- FOR( i = L / 2 - n; i < L / 2; i++ )
- {
- wtda_audio[i] = L_negate( allsig_r[( ( ( L >> 1 ) - i ) - 1 )] );
- move32();
- }
-
- FOR( i = 0; i < n; i++ )
- {
- wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[i], win_left[( ( i * decimate ) + decay )] ), new_audio[( ( n - i ) - 1 )] );
- move32();
- }
-
- FOR( i = n; i < L / 2; i++ )
- {
- idx1 = i;
- move16();
- idx2 = add( i_mult( i, decimate ), decay );
- idx3 = sub( sub( L, i ), 1 );
- idx4 = sub( sub( sub( i_mult( L, decimate ), i_mult( i, decimate ) ), 1 ), decay );
- wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_left[idx4] ) );
- move32();
- }
- }
-
- IF( old_wtda != NULL )
- {
- Copy32( new_audio, old_wtda, L );
- }
-
- return;
-}
diff --git a/lib_com/wtda_fx.c b/lib_com/wtda_fx.c
index e060984dff14eb316ed1d965e06830487eb1624b..7943a87c5fc11a276127169b3e0dd8ee8f88895a 100644
--- a/lib_com/wtda_fx.c
+++ b/lib_com/wtda_fx.c
@@ -2,11 +2,14 @@
EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0
====================================================================================*/
#include
+#include
#include "options.h" /* Compilation switches */
#include "cnst.h" /* Common constants */
#include "rom_com.h" /* Static table prototypes */
#include "prot_fx.h" /* required by wmc_tool */
#include "stat_com.h"
+#include "wmc_auto.h"
+
/*--------------------------------------------------------------------------*
* mvr2r_inv()
*
@@ -412,21 +415,19 @@ void wtda_fx(
return;
}
-
-void wtda_ivas_fx(
- Word16 *new_audio, /* i : input audio Q0 */
- Word16 *Q, /* i/o : Q of input/Output Audio */
- Word16 *wtda_audio, /* o : windowed audio Qout */
- Word16 *old_wtda, /* i/o: windowed audio from previous frame Qout */
- Word16 *Qold_wtda,
+void wtda_fx32(
+ const Word32 *new_audio, /* i : input audio Q11 */
+ Word32 *wtda_audio, /* o : windowed audio Q11 */
+ Word32 *old_wtda, /* i/o: windowed audio from previous frame */
const Word16 left_mode, /* i : window overlap of previous frame (0: full, 2: none, or 3: half) */
const Word16 right_mode, /* i : window overlap of current frame (0: full, 2: none, or 3: half) */
const Word16 L /* i : length */
)
{
Word16 i, decimate, decay;
+ Word16 idx1, idx2, idx3, idx4;
Word16 n, windecay48, windecay16;
- const Word16 *allsig_l, *allsig_r;
+ const Word32 *allsig_l, *allsig_r;
Word16 win_right[R2_48];
Word16 win_int_left[R1_16];
Word16 win_left[R1_48];
@@ -434,12 +435,11 @@ void wtda_ivas_fx(
tcx_get_windows_mode1( left_mode, right_mode, win_left, win_right, win_int_left, win_int_right, L );
- decimate = 1; /* L_FRAME48k */
+ decimate = 1; /* L_FRAME 48k */
move16();
decay = 0;
move16();
- windecay48 = ( 2 * ( (Word64) L_FRAME48k * N_ZERO_MDCT_NS / FRAME_SIZE_NS ) ) + R1_48;
- move16();
+ windecay48 = extract_l( WINDECAY48 ); // (int16_t)(2 * ((float)L_FRAME48k * N_ZERO_MDCT_NS / FRAME_SIZE_NS)) + R1_48
test();
IF( EQ_16( L, L_FRAME32k ) || EQ_16( L, L_FRAME16k ) )
@@ -457,10 +457,27 @@ void wtda_ivas_fx(
move16();
}
- n = extract_l( Mpy_32_32( L, 603979776 /* N_ZERO_MDCT_NS / FRAME_SIZE_NS in Q31 */ ) );
+ SWITCH( L ) // (int16_t)((float)L * N_ZERO_MDCT_NS / FRAME_SIZE_NS)
+ {
+ case L_FRAME16k:
+ n = 90;
+ move16();
+ BREAK;
+ case L_FRAME32k:
+ n = 180;
+ move16();
+ BREAK;
+ case L_FRAME48k:
+ n = 270;
+ move16();
+ BREAK;
+ default:
+ n = (Word16) ( ( L * N_ZERO_MDCT_NS ) / FRAME_SIZE_NS );
+ move16();
+ BREAK;
+ }
- windecay16 = ( 2 * ( L_FRAME16k * N_ZERO_MDCT_NS / FRAME_SIZE_NS ) ) + R1_16;
- move16();
+ windecay16 = extract_l( WINDECAY16 ); // (int16_t)(2 * ((float)L_FRAME16k * N_ZERO_MDCT_NS / FRAME_SIZE_NS)) + R1_16;
/* algorithmic delay reduction */
i = 0;
@@ -473,103 +490,106 @@ void wtda_ivas_fx(
}
ELSE
{
- /* Rescale signals if Q are not identical */
- IF( GT_16( *Qold_wtda, *Q ) )
- {
- Copy_Scale_sig( old_wtda, old_wtda, L, sub( *Q, *Qold_wtda ) );
- *Qold_wtda = *Q;
- move16();
- }
- ELSE IF( LT_16( *Qold_wtda, *Q ) )
- {
- Copy_Scale_sig( new_audio, new_audio, L, sub( *Qold_wtda, *Q ) );
- *Q = *Qold_wtda;
- move16();
- }
-
allsig_r = new_audio + n;
allsig_l = old_wtda + n;
}
IF( EQ_16( L, L_FRAME32k ) )
{
- FOR( i = 0; i < L / 2 - n; i += 2 )
+ FOR( i = 0; i < ( L / 2 - n ); i += 2 )
{
- wtda_audio[i] = round_fx( L_msu0( L_mult0( negate( allsig_r[L / 2 - i - 1] ), win_int_right[3 * L_FRAME16k / 2 - i / 2 - 1 - windecay16] ),
- allsig_r[L / 2 + i], win_int_right[3 * L_FRAME16k / 2 + i / 2 - windecay16] ) );
- move16();
- wtda_audio[i + 1] = round_fx( L_msu0( L_mult0( negate( allsig_r[L / 2 - ( i + 1 ) - 1] ), win_right[( 3 * L_FRAME16k / 2 - i / 2 - 1 ) * decimate + decay - windecay48] ),
- allsig_r[L / 2 + i + 1], win_right[( 3 * L_FRAME16k / 2 + 1 + i / 2 ) * decimate - decay - 1 - windecay48] ) );
- move16();
+ idx1 = sub( sub( shr( L, 1 ), i ), 1 );
+ idx2 = sub( sub( 3 * L_FRAME16k / 2 - 1, shr( i, 1 ) ), windecay16 );
+ idx3 = add( shr( L, 1 ), i );
+ idx4 = sub( add( 3 * L_FRAME16k / 2, shr( i, 1 ) ), windecay16 );
+ wtda_audio[i] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_int_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_int_right[idx4] ) );
+ move32();
+
+ idx1 = sub( sub( shr( L, 1 ), add( i, 1 ) ), 1 );
+ idx2 = sub( add( i_mult( ( sub( sub( 3 * L_FRAME16k / 2, shr( i, 1 ) ), 1 ) ), decimate ), decay ), windecay48 );
+ idx3 = add( add( shr( L, 1 ), i ), 1 );
+ idx4 = sub( sub( sub( i_mult( ( add( 3 * L_FRAME16k / 2 + 1, shr( i, 1 ) ) ), decimate ), decay ), 1 ), windecay48 );
+ wtda_audio[i + 1] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_right[idx4] ) );
+ move32();
}
FOR( i = L / 2 - n; i < L / 2; i += 2 )
{
- wtda_audio[i] = shr( negate( allsig_r[L / 2 - i - 1] ), 1 );
- move16();
- wtda_audio[i + 1] = shr( negate( allsig_r[L / 2 - ( i + 1 ) - 1] ), 1 );
- move16();
+ wtda_audio[i] = L_negate( allsig_r[( ( ( L >> 1 ) - i ) - 1 )] );
+ move32();
+ wtda_audio[i + 1] = L_negate( allsig_r[( ( ( L >> 1 ) - ( i + 1 ) ) - 1 )] );
+ move32();
}
-
FOR( i = 0; i < n; i += 2 )
{
- wtda_audio[i + L / 2] = round_fx( L_msu0( L_mult0( allsig_l[i], win_left[( i / 2 ) * decimate + decay] ),
- new_audio[n - i - 1], MAX16B ) );
- move16();
- wtda_audio[i + L / 2 + 1] = round_fx( L_msu0( L_mult0( allsig_l[i + 1], win_int_left[i / 2] ),
- new_audio[n - ( i + 1 ) - 1], MAX16B ) );
- move16();
+ wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[i], win_left[( ( ( i >> 1 ) * decimate ) + decay )] ), new_audio[( ( n - i ) - 1 )] );
+ move32();
+ wtda_audio[( ( i + ( L >> 1 ) ) + 1 )] = L_sub_sat( Mpy_32_16_1( allsig_l[i + 1], win_int_left[i / 2] ), new_audio[( ( n - ( i + 1 ) ) - 1 )] );
+ move32();
}
FOR( i = n; i < L / 2; i += 2 )
{
- wtda_audio[i + L / 2] = round_fx( L_msu0( L_mult0( allsig_l[i], win_left[( i / 2 ) * decimate + decay] ),
- allsig_l[L - i - 1], win_left[( L / 2 - i / 2 ) * decimate - 1 - decay] ) );
- move16();
- wtda_audio[i + L / 2 + 1] = round_fx( L_msu0( L_mult0( allsig_l[i + 1], win_int_left[i / 2] ),
- allsig_l[L - ( i + 1 ) - 1], win_int_left[L / 2 - i / 2 - 1] ) );
+ idx1 = i;
move16();
+ idx2 = add( i_mult( shr( i, 1 ), decimate ), decay );
+ idx3 = sub( sub( L, i ), 1 );
+ idx4 = sub( sub( i_mult( sub( shr( L, 1 ), shr( i, 1 ) ), decimate ), 1 ), decay );
+ wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_left[idx4] ) );
+ move32();
+
+ idx1 = add( i, 1 );
+ idx2 = shr( i, 1 );
+ idx3 = sub( sub( L, add( i, 1 ) ), 1 );
+ idx4 = sub( sub( shr( L, 1 ), shr( i, 1 ) ), 1 );
+ wtda_audio[( ( i + ( L >> 1 ) ) + 1 )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_int_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_int_left[idx4] ) );
+ move32();
}
}
ELSE
{
FOR( i = 0; i < L / 2 - n; i++ )
{
- wtda_audio[i] = round_fx( L_msu0( L_mult0( negate( allsig_r[L / 2 - i - 1] ), win_right[3 * L / 2 * decimate - ( i + 1 ) * decimate + decay - windecay48] ),
- allsig_r[L / 2 + i], win_right[3 * L / 2 * decimate - 1 + ( i + 1 ) * decimate - decay - windecay48] ) );
- move16();
+ idx1 = sub( sub( shr( L, 1 ), i ), 1 );
+ idx2 = sub( add( sub( i_mult( i_mult( 3, shr( L, 1 ) ), decimate ), i_mult( add( i, 1 ), decimate ) ), decay ), windecay48 );
+ idx3 = add( shr( L, 1 ), i );
+ idx4 = sub( sub( add( sub( i_mult( i_mult( 3, shr( L, 1 ) ), decimate ), 1 ), i_mult( add( i, 1 ), decimate ) ), decay ), windecay48 );
+ wtda_audio[i] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_right[idx4] ) );
+ move32();
}
FOR( i = L / 2 - n; i < L / 2; i++ )
{
- wtda_audio[i] = shr( negate( allsig_r[L / 2 - i - 1] ), 1 );
- move16();
+ wtda_audio[i] = L_negate( allsig_r[( ( ( L >> 1 ) - i ) - 1 )] );
+ move32();
}
FOR( i = 0; i < n; i++ )
{
- wtda_audio[i + L / 2] = round_fx( L_msu0( L_mult0( allsig_l[i], win_left[i * decimate + decay] ),
- new_audio[n - i - 1], MAX16B ) );
- move16();
+ wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[i], win_left[( ( i * decimate ) + decay )] ), new_audio[( ( n - i ) - 1 )] );
+ move32();
}
FOR( i = n; i < L / 2; i++ )
{
- wtda_audio[i + L / 2] = round_fx( L_msu0( L_mult0( allsig_l[i], win_left[i * decimate + decay] ),
- allsig_l[L - i - 1], win_left[L * decimate - i * decimate - 1 - decay] ) );
+ idx1 = i;
move16();
+ idx2 = add( i_mult( i, decimate ), decay );
+ idx3 = sub( sub( L, i ), 1 );
+ idx4 = sub( sub( sub( i_mult( L, decimate ), i_mult( i, decimate ) ), 1 ), decay );
+ wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_left[idx4] ) );
+ move32();
}
}
IF( old_wtda != NULL )
{
- Copy( new_audio, old_wtda, L );
+ Copy32( new_audio, old_wtda, L );
}
return;
}
-
void wtda_ext_fx(
const Word16 *new_audio, /* i : input audio (Q_in) */
Word16 *wtda_audio, /* o : windowed audio (Q_in - 1) */
diff --git a/lib_debug/debug.c b/lib_debug/debug.c
index aafc1b66332ef261ec444a0c2ca4cd269cb1a325..ee6040fafc840e9ff52aac4e3418b02a6c8935cb 100644
--- a/lib_debug/debug.c
+++ b/lib_debug/debug.c
@@ -788,7 +788,7 @@ char *fname(
#ifdef DEBUG_FORCE_DIR
size_t len;
len = strlen( tmp_fname );
- if (tmp_fname[len - 1] != '/' && tmp_fname[len - 1] != '\\' )
+ if ( tmp_fname[len - 1] != '/' && tmp_fname[len - 1] != '\\' )
{
/* add trailing '/' slash */
strcat( tmp_fname, "/" );
diff --git a/lib_debug/wmc_auto.c b/lib_debug/wmc_auto.c
index d357c03dd7d09ed3721a2fd735b48c26978e6fec..9a4b371fc5fa8cd7bb9147da17355d409ae0819b 100644
--- a/lib_debug/wmc_auto.c
+++ b/lib_debug/wmc_auto.c
@@ -1018,7 +1018,7 @@ int push_stack( const char *filename, const char *fctname )
}
/* Check, if This is the New Worst-Case RAM (stack + heap) */
- current_stack_size = ( int32_t )( ( ( ptr_base_stack - ptr_current_stack ) * sizeof( int16_t ) ) );
+ current_stack_size = (int32_t) ( ( ( ptr_base_stack - ptr_current_stack ) * sizeof( int16_t ) ) );
if ( current_stack_size < 0 )
{
@@ -1226,7 +1226,7 @@ void *mem_alloc(
current_heap_size += ptr_record->block_size;
/* Check, if this is the new Worst-Case RAM (stack + heap) */
- current_stack_size = ( int32_t )( ( ( ptr_base_stack - ptr_current_stack ) * sizeof( int16_t ) ) );
+ current_stack_size = (int32_t) ( ( ( ptr_base_stack - ptr_current_stack ) * sizeof( int16_t ) ) );
if ( current_stack_size + current_heap_size > wc_ram_size )
{
wc_ram_size = current_stack_size + current_heap_size;
@@ -2416,7 +2416,7 @@ int EQ_64( long long int L64_var1, long long int L64_var2 )
#endif
return F_ret;
}
-int NE_64( long long int L64_var1, long long int L64_var2 )
+int NE_64( long long int L64_var1, long long int L64_var2 )
{
int F_ret = 0;
@@ -2503,7 +2503,7 @@ void Reset_BASOP_WMOPS_counter( unsigned int counterId )
/* reset the current BASOP operation counter */
ptr = (unsigned int *) &multiCounter[counterId];
- for ( i = 0; i < (int) (sizeof(BASIC_OP) / sizeof(unsigned int)); i++ )
+ for ( i = 0; i < (int) ( sizeof( BASIC_OP ) / sizeof( unsigned int ) ); i++ )
{
*ptr++ = 0;
}
diff --git a/lib_dec/ACcontextMapping_dec_fx.c b/lib_dec/ACcontextMapping_dec_fx.c
index 22e9fff0114f1f5c0d3b5057744a446f95a0a0bb..acf372565408b238d2a86c40b85a396f5660b5ae 100644
--- a/lib_dec/ACcontextMapping_dec_fx.c
+++ b/lib_dec/ACcontextMapping_dec_fx.c
@@ -328,9 +328,6 @@ Word16 ACcontextMapping_decode2_no_mem_s17_LC(
return resQBits;
}
-#define IVAS_CONTEXT_MAPPING
-#ifdef IVAS_CONTEXT_MAPPING
-
/*-------------------------------------------------------------------*
* RCcontextMapping_decode2_no_mem_s17_LCS()
*
@@ -737,6 +734,3 @@ Word16 RCcontextMapping_decode2_no_mem_s17_LCS_fx(
return resQBits;
}
-
-#endif
-#undef IVAS_CONTEXT_MAPPING
diff --git a/lib_dec/FEC_HQ_phase_ecu_fx.c b/lib_dec/FEC_HQ_phase_ecu_fx.c
index ef09c3de3272be34c95156d3f9d7d17033284ec2..ad2f8607311a94fdc8a81ec9955dd2e16e97bb04 100644
--- a/lib_dec/FEC_HQ_phase_ecu_fx.c
+++ b/lib_dec/FEC_HQ_phase_ecu_fx.c
@@ -64,26 +64,11 @@ static void windowing( const Word16 *, Word16 *, const Word16 *, const Word16, c
static void windowing_ROM_optimized( const Word16 *, Word16 *, const Word16, const Word16, const Word16 );
static void fft_spec2_fx( const Word16[], Word32[], const Word16 );
static void trans_ana_fx( const Word16 *, Word16 *, Word16 *, Word16 *, const Word16, const Word16, const Word16, const Word16, Word16 *, Word16 *, Word16 *, Word16 * );
-static void peakfinder_fx( const Word16 *, const Word16, Word16 *, Word16 *, const Word16
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const Word16 endpoints /* i : Flag to include endpoints in peak search */
-#endif
-);
+static void peakfinder_fx( const Word16 *, const Word16, Word16 *, Word16 *, const Word16 );
static Word16 imax_fx( const Word16 *, const Word16 );
-static void spec_ana_fx( const Word16 *prevsynth, Word16 *plocs, Word32 *plocsi, Word16 *num_plocs, Word16 *X_sav, const Word16 output_frame, const Word16 bwidth_fx, Word16 *Q
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const Word16 element_mode,
- Word16 *noise_fac,
- const Word16 pcorr
-#endif
-);
+static void spec_ana_fx( const Word16 *prevsynth, Word16 *plocs, Word32 *plocsi, Word16 *num_plocs, Word16 *X_sav, const Word16 output_frame, const Word16 bwidth_fx, Word16 *Q );
static void subst_spec_fx( const Word16 *, const Word32 *, Word16 *, const Word16, Word16 *, const Word16 *, const Word16, const Word16 *, const Word16, Word16 *, const Word16 *, const Word16 *, Word16, const Word16 * );
static Word16 rand_phase_fx( const Word16 seed, Word16 *sin_F, Word16 *cos_F );
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
-static float imax2_jacobsen_mag( const float *y_re, const float *y_im );
-#endif
/*------------------------------------------------------------------*
* rand_phase()
@@ -666,9 +651,6 @@ static void ivas_peakfinder_fx(
move16();
}
len0Minus2 = sub( len0, 2 );
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- PMT( "\nlen0Minus2 = sub(len0, 2) is it still correct if IVAS_FEC_ECU_TO_COMPLETE is activated\n" )
-#endif
FOR( i = 0; i < len0Minus2; i++ )
{
@@ -912,10 +894,6 @@ static void peakfinder_fx(
Word16 *plocs, /* o : the indices of the identified peaks in x0 Q0 */
Word16 *cInd, /* o : number of identified peaks Q0 */
const Word16 sel /* i : The amount above surrounding data for a peak to be identified */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const Word16 endpoints /* i : Flag to include endpoints in peak search */
-#endif
)
{
const Word16 *pX0;
@@ -951,11 +929,6 @@ static void peakfinder_fx(
pInd = indarr;
pDx01 = dx0;
pDx0 = pDx01 + 1;
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- len = 0;
- move16();
- IF( endpoints )
-#endif
{
*pX++ = *pX0++;
move16();
@@ -965,9 +938,6 @@ static void peakfinder_fx(
move16();
}
len0Minus2 = sub( len0, 2 );
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- PMT( "\nlen0Minus2 = sub(len0, 2) is it still correct if IVAS_FEC_ECU_TO_COMPLETE is activated\n" )
-#endif
FOR( i = 0; i < len0Minus2; i++ )
{
@@ -981,9 +951,6 @@ static void peakfinder_fx(
}
pX0++;
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( endpoints )
-#endif
{
*pInd = len0Minus1;
move16();
@@ -994,13 +961,7 @@ static void peakfinder_fx(
minimum_fx( x, len, &minMag );
pInd = indarr;
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- test();
- test();
- IF( GT_16( len, 2 ) || ( !endpoints && ( len > 0 ) ) )
-#else
IF( GT_16( len, 2 ) )
-#endif
{
/* Set initial parameters for loop */
tempMag = minMag;
@@ -1011,9 +972,6 @@ static void peakfinder_fx(
move16();
threshold = add( leftMin, sel );
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( len > 0 )
-#endif
{
/* Deal with first point a little differently since tacked it on
Calculate the sign of the derivative since we took the first point
@@ -1060,20 +1018,6 @@ static void peakfinder_fx(
}
pX--; /* After decrement, pX points to either x[-1] or x[0]. */
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ELSE
- {
- PMTE()
- ii = -1; /* First point is a peak */
- if ( len >= 2 )
- {
- if ( x[1] >= x[0] )
- {
- ii = 0; /* First point is a valley, skip it */
- }
- }
- }
-#endif
*cInd = 0;
move16();
/*Loop through extrema which should be peaks and then valleys*/
@@ -1179,9 +1123,6 @@ static void peakfinder_fx(
}
ELSE /* This is a monotone function where an endpoint is the only peak */
{
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( endpoints )
-#endif
{
xInd = 1;
move16();
@@ -1206,13 +1147,6 @@ static void peakfinder_fx(
move16();
}
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ELSE
- { /* Input constant or all zeros -- no peaks found */
- *cInd = 0;
- move16();
- }
-#endif
}
}
@@ -1709,12 +1643,6 @@ static void spec_ana_fx(
const Word16 output_frame, /* i : Frame length Q0 */
const Word16 bwidth_fx, /* i : Encoded bandwidth index Q0 */
Word16 *Q /* o : Q value of the fft spectrum */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const Word16 element_mode, /* i : IVAS element mode */
- Word16 *noise_fac, /* o : for few peaks zeroing valleys decision making */
- const Word16 pcorr
-#endif
)
{
Word16 Lprot, LprotLog2Minus1, hamm_len2, Lprot2, Lprot2_1, m, n;
@@ -1782,52 +1710,18 @@ static void spec_ana_fx(
IF( EQ_16( output_frame, L_FRAME48k ) )
{
/* Apply hamming-rect window */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( EQ_16( element_mode, EVS_MONO ) )
-#endif
{
windowing( xfp, xfp, w_hamm_sana48k_2_fx, rectLength, hamm_len2 );
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ELSE
- {
- PMTE()
- // window_corr = w_hamm[0];
- // window_corr_step = w_hamm[0] / hamm_len2;
- // for (i = 0; i < hamm_len2; i++)
- //{
- // xfp[i] = prevsynth[i] * (w_hamm[i] - window_corr);
- // xfp[Lprot - i - 1] = prevsynth[Lprot - i - 1] * (w_hamm[i] - window_corr);
- // window_corr -= window_corr_step;
- // }
- }
-#endif
/* Spectrum */
fft3_fx( xfp, xfp, Lprot );
}
ELSE
{
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( EQ_16( element_mode, EVS_MONO ) )
-#endif
{
/* Apply hamming-rect window */
windowing_ROM_optimized( xfp, xfp, sinTblOffset, rectLength, hamm_len2 );
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ELSE
- {
- PMTE()
- // window_corr = w_hamm[0];
- // window_corr_step = w_hamm[0] / hamm_len2;
- // for (i = 0; i < hamm_len2; i++)
- //{
- // xfp[i] = prevsynth[i] * (w_hamm[i] - window_corr);
- // xfp[Lprot - i - 1] = prevsynth[Lprot - i - 1] * (w_hamm[i] - window_corr);
- // window_corr -= window_corr_step;
- // }
- }
-#endif
/* Spectrum */
r_fft_fx_lc( pFftTbl, Lprot, Lprot2, LprotLog2Minus1, xfp, xfp, 1 );
}
@@ -1880,35 +1774,12 @@ static void spec_ana_fx(
/* Find maximum and minimum. */
maximum_fx( xfp, Lprot2_1, &Xmax );
minimum_fx( xfp, Lprot2_1, &Xmin );
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( EQ_16( element_mode, EVS_MONO ) )
-#endif
{
sel = mult_r( sub( Xmax, Xmin ), CMPLMNT_PFIND_SENS_FX );
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ELSE
- {
- sel = ( Xmax - Xmin ) * ( 1.0f - ST_PFIND_SENS );
- }
-#endif
- peakfinder_fx( xfp, Lprot2_1, plocs, num_plocs, sel
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- endpoints
-#endif
- );
-
+ peakfinder_fx( xfp, Lprot2_1, plocs, num_plocs, sel );
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- /* Currently not the pitch correlation but some LF correlation */
- if ( element_mode != EVS_MONO && *num_plocs > 50 && pcorr < 0.6f )
- {
- *num_plocs = 0;
- }
- IF( EQ_16( element_mode, EVS_MONO ) )
-#endif
{
/* Refine peaks */
@@ -1955,105 +1826,6 @@ static void spec_ana_fx(
move32(); /* in Q16. Append the fractional part to the integral part. */
}
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ELSE
- {
- Lprot2p1 = Lprot / 2 + 1;
-
- /* Refine peaks */
- pPlocsi = plocsi;
- pPlocs = plocs;
- n = *num_plocs; /* number of peaks to process */
-
- /* Special case-- The very 1st peak if it is at 0 index position (DC) */
- /* With DELTA_CORR_F0_INT == 2 one needs to handle both *pPlocs==0 and *pPlocs==1 */
- if ( n > 0 && *pPlocs == 0 ) /* Very 1st peak position possible to have a peak at 0/DC index position. */
- {
- *pPlocsi++ = *pPlocs + imax_pos( &xfp[*pPlocs] );
- pPlocs++;
- n = n - 1;
- }
-
- if ( n > 0 && *pPlocs == 1 ) /* Also 2nd peak position uses DC which makes jacobsen unsuitable. */
- {
- *pPlocsi++ = *pPlocs - 1 + imax_pos( &xfp[*pPlocs - 1] );
- currPlocs = *pPlocs++;
- n = n - 1;
- }
-
- /* All remaining peaks except the very last two possible integer positions */
- currPlocs = *pPlocs++;
- endPlocs = Lprot2p1 - DELTA_CORR_F0_INT; /* last *pPlocs position for Jacobsen */
-
- /* precompute number of turns based on endpoint integer location and make into a proper for loop */
- if ( n > 0 )
- {
- nJacob = n;
- if ( sub( endPlocs, plocs[sub( *num_plocs, 1 )] ) <= 0 )
- {
- nJacob = sub( nJacob, 1 );
- }
-
- for ( k = 0; k < nJacob; k++ )
- {
- *pPlocsi++ = currPlocs + imax2_jacobsen_mag( &( X_sav[currPlocs - 1] ), &( X_sav[Lprot - 1 - currPlocs] ) );
- currPlocs = *pPlocs++;
- }
- n = n - nJacob;
- }
-
- /* At this point there should at most two plocs left to process */
- /* the position before fs/2 and fs/2 both use the same magnitude points */
- if ( n > 0 )
- {
- /* [ . . . . . . . ] Lprot/2+1 positions */
- /* | | | */
- /* 0 (Lprot/2-2) (Lprot/2) */
-
- if ( currPlocs == ( Lprot2p1 - DELTA_CORR_F0_INT ) ) /* Also 2nd last peak position uses fs/2 which makes jacobsen less suitable. */
- {
- *pPlocsi++ = currPlocs - 1 + imax_pos( &xfp[currPlocs - 1] );
- currPlocs = *pPlocs++;
- n = n - 1;
- }
-
- /* Here the only remaining point would be a fs/2 plocs */
- /* pXfp = xfp + sub(Lprot2,1); already set just a reminder where it
- * whould point */
- if ( n > 0 ) /* fs/2 which makes special case . */
- {
- *pPlocsi++ = currPlocs - 2 + imax_pos( &xfp[currPlocs - 2] );
- currPlocs = *pPlocs++;
- n = n - 1;
- }
- }
-
- /* For few peaks decide noise floor attenuation */
- if ( *num_plocs < 3 && *num_plocs > 0 )
- {
- sig = sum_f( xfp, Lprot2_1 ) + EPSILON;
-
- /*excluding peaks and neighboring bins*/
- for ( i = 0; i < *num_plocs; i++ )
- {
- st_point = max( 0, plocs[i] - DELTA_CORR );
- end_point = min( Lprot2_1 - 1, plocs[i] + DELTA_CORR );
- set_f( &xfp[st_point], 0.0f, end_point - st_point + 1 );
- }
- noise = sum_f( xfp, Lprot2_1 ) + EPSILON;
- nsr = noise / sig;
-
- if ( nsr < 0.03f )
- {
- *noise_fac = 0.5f;
- }
- else
- {
- *noise_fac = 1.0f;
- }
- }
- }
-#endif
}
/*-------------------------------------------------------------------*
@@ -2474,12 +2246,6 @@ static void subst_spec_fx(
const Word16 *beta, /* i : Magnitude modification factors for fade to average Q15 */
Word16 beta_mute, /* i : Factor for long-term mute Q15 */
const Word16 *Xavg /* i : Frequency group averages to fade to Q0 */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const Word16 element_mode, /* i : IVAS element mode */
- const Word16 ph_ecu_lookahead, /* i : Phase ECU lookahead */
- const Word16 noise_fac /* i : noise factor */
-#endif
)
{
Word16 Xph_short;
@@ -2500,11 +2266,6 @@ static void subst_spec_fx(
Word16 alpha_local;
Word16 beta_local;
Word16 expo;
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- Word16 one_peak_flag_mask;
- Word16 alpha_local;
- Word16 beta_local;
-#endif
Word16 mag_chg_local; /*for peak attenuation in burst */
Lprot = 512;
@@ -2560,21 +2321,6 @@ static void subst_spec_fx(
move32();
}
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- one_peak_flag_mask = 1; /* all ones mask -> keep */
- IF( NE_16( element_mode, EVS_MONO ) )
- {
- if ( ( *num_plocs > 0 ) && sub( *num_plocs, 3 ) < 0 )
- {
- one_peak_flag_mask = noise_fac; /* all zeroes mask -> zero */
- }
- if ( *num_plocs == 0 )
- {
- X[0] = 0; /* reset DC if there are no peaks */
- X[shr( Lprot, 1 )] = 0; /* also reset fs/2 if there are no peaks */
- }
- }
-#endif
lprotBy2Minus1 = sub( shr( Lprot, 1 ), 1 );
i = 1;
move16();
@@ -2635,21 +2381,10 @@ static void subst_spec_fx(
move16();
im = *pImX;
move16();
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( EQ_16( element_mode, EVS_MONO ) )
-#endif
{
tmp = sub( mult_r( re, cos_F ), mult_r( im, sin_F ) );
im = add( mult_r( re, sin_F ), mult_r( im, cos_F ) );
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ELSE
- {
- PMTE()
- // tmp = one_peak_flag_mask * (X[i] * cos_F - X[im_ind] * sin_F);
- // X[im_ind] = one_peak_flag_mask * (X[i] * sin_F + X[im_ind] * cos_F);
- }
-#endif
IF( LT_16( alpha[k], 32766 ) )
{
*seed = rand_phase_fx( *seed, &sin_F, &cos_F );
@@ -2766,21 +2501,10 @@ static void subst_spec_fx(
move16();
im = *pImX;
move16();
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( EQ_16( element_mode, EVS_MONO ) )
-#endif
{
tmp = sub_sat( mult_r( re, cos_F ), mult_r( im, sin_F ) );
im = add_sat( mult_r( re, sin_F ), mult_r( im, cos_F ) );
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ELSE
- {
- PMTE()
- // tmp = one_peak_flag_mask * (X[i] * cos_F - X[im_ind] * sin_F);
- // X[im_ind] = one_peak_flag_mask * (X[i] * sin_F + X[im_ind] * cos_F);
- }
-#endif
IF( LT_16( alpha[k], 32766 ) )
{
alpha_local = mag_chg_local;
@@ -3032,97 +2756,7 @@ static void rec_wtda_fx(
Word16 *p_ecu;
Word16 g;
Word16 tbl_delta;
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- float xsubst_[2 * L_FRAME48k];
- const float *w_hamm;
- float *pX_start, *pX_end;
- float tmp;
- int16_t hamm_len2;
- float *pNew;
- const float *pOldW, *pNewW;
- float xfwin[NS2SA( L_FRAME48k * FRAMES_PER_SEC, N_ZERO_MDCT_NS - ( 2 * FRAME_SIZE_NS - L_PROT_NS ) / 2 )];
- const float *pOld;
- int16_t copy_len;
- int16_t ola_len;
-
- copy_len = NS2SA( output_frame * FRAMES_PER_SEC, ( 2 * FRAME_SIZE_NS - L_PROT_NS ) / 2 ); /* prototype fill on each side of xsubst to fill MDCT Frame */
- ola_len = NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS - ( 2 * FRAME_SIZE_NS - L_PROT_NS ) / 2 ); /* remaining lengt of LA_ZEROS to overlap add decoded with xsubst */
-
- if ( output_frame == L_FRAME48k )
- {
- w_hamm = w_hamm_sana48k_2;
- hamm_len2 = L_PROT_HAMM_LEN2_48k;
- }
- else if ( output_frame == L_FRAME32k )
- {
- w_hamm = w_hamm_sana32k_2;
- hamm_len2 = L_PROT_HAMM_LEN2_32k;
- }
- else
- {
- w_hamm = w_hamm_sana16k_2;
- hamm_len2 = L_PROT_HAMM_LEN2_16k;
- }
-
- if ( element_mode != EVS_MONO && *num_p > 0 && plocs[0] > 3 )
- {
- /* Perform inverse windowing of hammrect */
- pX_start = X;
- pX_end = X + Lprot - 1;
- for ( i = 0; i < hamm_len2; i++ )
- {
- tmp = 1.0f / *w_hamm;
- *pX_start *= tmp;
- *pX_end *= tmp;
- pX_start++;
- pX_end--;
- w_hamm++;
- }
- }
-
- /* extract reconstructed frame with aldo window */
- timesh = NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS ) - ( 2 * output_frame - Lprot ) / 2;
-
- set_f( xsubst_, 0.0f, 2 * output_frame - Lprot + timesh );
- mvr2r( X, xsubst_ + 2 * output_frame - Lprot + timesh, Lprot - timesh );
-
- /* Copy and OLA look ahead zero part of MDCT window from decoded signal */
- if ( element_mode != EVS_MONO )
- {
- mvr2r( old_dec, xsubst_ + NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS ), copy_len ); /* also need to scale to Q0 ?? */
- pOld = old_dec + copy_len;
- pNew = xsubst_ + copy_len + NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS );
- sinq( EVS_PI / ( ola_len * 2 ), 0.0f, ola_len, xfwin );
- v_mult( xfwin, xfwin, xfwin, ola_len ); /* xfwin = sin^2 of 0..pi/4 */
- pOldW = xfwin + ola_len - 1;
- pNewW = xfwin;
- for ( i = 0; i < ola_len; i++ )
- {
- *pNew = *pOld * *pOldW + *pNew * *pNewW;
- pOld += 1;
- pNew += 1;
- pOldW -= 1;
- pNewW += 1;
- }
- }
- else
- {
- /* Smoothen onset of ECU frame */
- xf_len = (int16_t) ( (float) output_frame * N_ZERO_MDCT_NS / FRAME_SIZE_NS ) - ( output_frame - Lprot / 2 );
- p_ecu = xsubst_ + 2 * output_frame - Lprot + timesh;
- tbl_delta = 64.f / xf_len; /* 64 samples = 1/4 cycle in sincos_t */
- for ( i = 0; i < xf_len; i++, p_ecu++ )
- {
- g = sincos_t[( (int16_t) ( i * tbl_delta ) )];
- g *= g;
- *p_ecu = g * ( *p_ecu );
- }
- }
-
- /* Apply TDA and windowing to ECU frame */
- wtda( xsubst_ + output_frame, ecu_rec, NULL, ALDO_WINDOW, ALDO_WINDOW, output_frame );
-#else
// PMTE()
xsubst_ = rec_buf + output_frame;
Lprot2 = shr( Lprot, 1 );
@@ -3175,7 +2809,6 @@ static void rec_wtda_fx(
out_ptr = rec_buf + sub( shl( output_frame, 1 ), timesh );
wtda_fx( out_ptr, &Qin, ecu_rec, NULL, 0, ALDO_WINDOW, ALDO_WINDOW, /* window overlap of current frame (0: full, 2: none, or 3: half) */
output_frame );
-#endif
return;
}
@@ -3239,15 +2872,7 @@ static void rec_frame_fx(
Word16 *X, /* i : FFT spectrum */
Word32 *ecu_rec, /* o : Reconstructed frame in tda domain */
const Word16 output_frame, /* i : Frame length */
- const Word16 Q
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const float *old_dec, /* i : end of last decoded for OLA before tda and itda */
- const int16_t element_mode, /* i : IVAS element mode */
- const int16_t *num_p, /* i : Number of peaks */
- const int16_t *plocs /* i : Peak locations */
-#endif
-)
+ const Word16 Q )
{
const Word16 *pFftTbl;
Word16 Lprot, lprotLog2Minus1;
@@ -4034,28 +3659,11 @@ static void fec_ecu_dft_fx(
Word16 *Tf_abs, /*Qout */
Word16 *Nfft,
Word16 *exp /*Qout = Qin+exp */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const int16_t element_mode /* i : IVAS element mode */
-#endif
)
{
Word32 L_tmp, Tmp, Tfr32[512], Tfi32[512], fac, *Pt1, *Pt2;
Word16 i, tmp, tmp_short, N_LP, target[2 * L_FRAME48k], Tfr16[FEC_FFT_MAX_SIZE], *pt1, *pt2, *pt3;
Word16 tmp_loop;
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- int16_t alignment_point;
-
- Lon20 = (int16_t) 160 / 20;
- if ( element_mode == EVS_MONO )
- {
- alignment_point = 2 * 160 - 3 * Lon20;
- }
- else
- {
- alignment_point = 2 * 160;
- }
-#endif
tmp = sub( 296, N );
Copy( &prevsynth_LP[tmp], target, N );
@@ -4588,11 +4196,6 @@ static void fec_noise_filling_fx(
const Word16 N,
const Word16 HqVoicing,
Word16 *gapsynth_fx /*Qsynth */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const int16_t element_mode, /* i : IVAS element mode */
- const float *old_out
-#endif
)
{
@@ -4607,22 +4210,6 @@ static void fec_noise_filling_fx(
Word32 L_tmp;
const Word16 *sinq_tab;
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
-
- const float *p_mdct_ola;
- int16_t alignment_point;
- PMTE()
- if ( element_mode == EVS_MONO )
- {
- alignment_point = 2 * L - 3 * L / 20;
- }
- else
- {
- alignment_point = 2 * L;
- }
- mvr2r( prevsynth + alignment_point - N, noisevect, N );
-#endif
-
IF( EQ_16( L, L_FRAME32k ) )
{
sinq_tab = sinq_32k;
@@ -4693,18 +4280,6 @@ static void fec_noise_filling_fx(
tmp_fx = div_s( 1, Rnd_N_noise ); /*Q15 */
tmp_fx = round_fx_sat( L_shl_sat( L_mult( tmp_fx, 25736 ), 2 ) ); /*Q15 */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- if ( element_mode == EVS_MONO )
- {
- kk = 7 * L / 20;
- p_mdct_ola = prevsynth + 37 * L / 20;
- }
- else
- {
- kk = NS2SA( L * FRAMES_PER_SEC, N_ZERO_MDCT_NS );
- p_mdct_ola = old_out + kk;
- }
-#endif
sinq_fx( shr( tmp_fx, 1 ), shr( tmp_fx, 2 ), Rnd_N_noise, SS_fx );
@@ -4812,11 +4387,6 @@ static void fec_alg_fx(
const Word16 decimatefactor,
const Word16 HqVoicing,
Word16 *gapsynth /*Qin */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const Word16 element_mode, /* i : IVAS element mode */
- const Word16 *old_out
-#endif
)
{
Word16 Nfft;
@@ -4828,21 +4398,11 @@ static void fec_alg_fx(
Word16 exp;
Word16 n, Q;
- fec_ecu_dft_fx( prevsynth_LP, N, Tfr, Tfi, &sum_Tf_abs, Tf_abs, &Nfft, &exp
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- element_mode
-#endif
- );
+ fec_ecu_dft_fx( prevsynth_LP, N, Tfr, Tfi, &sum_Tf_abs, Tf_abs, &Nfft, &exp );
sinusoidal_synthesis_fx( Tfr, Tfi, Tf_abs, N, output_frame, decimatefactor, Nfft, sum_Tf_abs, synthesis, HqVoicing, exp );
- fec_noise_filling_fx( prevsynth, synthesis, ni_seed_forfec, output_frame, i_mult2( N, decimatefactor ), HqVoicing, gapsynth
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- element_mode, old_out
-#endif
- );
+ fec_noise_filling_fx( prevsynth, synthesis, ni_seed_forfec, output_frame, i_mult2( N, decimatefactor ), HqVoicing, gapsynth );
n = R1_48 - R2_48;
move16();
@@ -5018,11 +4578,6 @@ static void hq_phase_ecu_fx(
Word16 *beta_mute, /* o : Factor for long-term mute Q15 */
const Word16 bwidth_fx, /* i : Encoded bandwidth */
const Word16 output_frame /* i : frame length */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- const Word16 pcorr,
- const Word16 element_mode /* i : IVAS element mode */
-#endif
)
{
Word16 lprot, offset;
@@ -5030,22 +4585,6 @@ static void hq_phase_ecu_fx(
Word16 seed;
Word16 alpha[LGW_MAX], beta[LGW_MAX];
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- const float *old_dec;
- float noise_fac;
- int16_t ph_ecu_lookahead;
-
- noise_fac = 1.0f;
-
- if ( element_mode == EVS_MONO )
- {
- ph_ecu_lookahead = NS2SA( output_frame * FRAMES_PER_SEC, PH_ECU_LOOKAHEAD_NS );
- }
- else
- {
- ph_ecu_lookahead = 0;
- }
-#endif
IF( EQ_16( output_frame, L_FRAME48k ) )
{
lprot = L_PROT48k; /* 1536 = (2*output_frame)*1024/1280 */
@@ -5074,30 +4613,17 @@ static void hq_phase_ecu_fx(
{
test();
// PMT("verify condition compared to float")
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- IF( !( prev_bfi != 0 && *last_fec != 0 ) && EQ_16( element_mode == EVS_MONO ) )
-#else
if ( !( prev_bfi != 0 && *last_fec != 0 ) )
-#endif
{
*time_offs = 0;
move16();
}
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- offset = add( sub( sub( shl( output_frame, 1 ), lprot ), *time_offs ), ph_ecu_lookahead );
-#else
offset = sub( sub( shl( output_frame, 1 ), lprot ), *time_offs );
-#endif
trans_ana_fx( prevsynth + offset, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab,
*last_fec, alpha, beta, beta_mute, Xavg );
- spec_ana_fx( prevsynth + offset, plocs, plocsi, num_p, X_sav, output_frame, bwidth_fx, Q_spec
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- element_mode, noise_fac, pcorr
-#endif
- );
+ spec_ana_fx( prevsynth + offset, plocs, plocsi, num_p, X_sav, output_frame, bwidth_fx, Q_spec );
test();
IF( prev_bfi != 0 && *last_fec != 0 )
@@ -5127,23 +4653,10 @@ static void hq_phase_ecu_fx(
}
subst_spec_fx( plocs, plocsi, num_p, *time_offs, X, mag_chg, ph_dith, old_is_transient, output_frame, &seed,
- alpha, beta, *beta_mute, Xavg
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- element_mode, ph_ecu_lookahead, noise_fac
-#endif
- );
+ alpha, beta, *beta_mute, Xavg );
/* reconstructed frame in tda domain */
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- old_dec = prevsynth + 2 * output_frame - NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS );
-#endif
- rec_frame_fx( X, ecu_rec, output_frame, *Q_spec
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- ,
- old_dec, element_mode, num_p, plocs
-#endif
- );
+ rec_frame_fx( X, ecu_rec, output_frame, *Q_spec );
*last_fec = 0;
move16();
@@ -5297,22 +4810,6 @@ void hq_ecu_fx(
Word16 decimatefactor;
Word16 corr; /*Q15 */
Word16 prevsynth_LP[2 * L_FRAME8k];
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- HQ_DEC_HANDLE hHQ_core;
- const float *fec_alg_input;
- int16_t evs_mode_selection;
- int16_t ivas_mode_selection;
-
- hHQ_core = st->hHQ_core;
- if ( st->element_mode == EVS_MONO )
- {
- fec_alg_input = prevsynth + NS2SA( output_frame * FRAMES_PER_SEC, ACELP_LOOK_NS / 2 - PH_ECU_LOOKAHEAD_NS );
- }
- else
- {
- fec_alg_input = prevsynth - NS2SA( output_frame * FRAMES_PER_SEC, PH_ECU_LOOKAHEAD_NS );
- }
-#endif
/* init (values ar changed after) */
decimatefactor = 4;
move16();
@@ -5323,11 +4820,7 @@ void hq_ecu_fx(
IF( !( LT_16( output_frame, L_FRAME16k ) ) )
{
-#ifdef IVAS_FEC_ECU_TO_COMPLETE
- fec_ecu_pitch_fx( fec_alg_input, prevsynth_LP, output_frame, &N, &corr, &decimatefactor, ph_ecu_HqVoicing );
-#else
fec_ecu_pitch_fx( prevsynth + NS2SA_FX2( L_mult0( output_frame, 50 ), ACELP_LOOK_NS / 2 - PH_ECU_LOOKAHEAD_NS ), prevsynth_LP, output_frame, &N, &corr, &decimatefactor, ph_ecu_HqVoicing );
-#endif
}
ELSE
{
@@ -5350,32 +4843,6 @@ void hq_ecu_fx(
test();
test();
test();
-#if defined IVAS_FEC_ECU_TO_COMPLETE
- evs_mode_selection = ( st->total_brate >= 48000 && ( output_frame >= L_FRAME16k && !prev_bfi && ( !old_is_transient[0] || old_is_transient[1] ) &&
- ( ph_ecu_HqVoicing || ( ( ( hHQ_core->env_stab_plc > 0.5 ) && ( corr < 0.6 ) ) || ( hHQ_core->env_stab_plc < 0.5 && ( corr > 0.85 ) ) ) ) ) ) ||
- ( st->total_brate < 48000 && ( ( ph_ecu_HqVoicing || corr > 0.85 ) && !prev_bfi && ( !old_is_transient[0] || old_is_transient[1] ) ) );
-
- ivas_mode_selection = ( N < PH_ECU_N_LIMIT ) || ( corr < PH_ECU_CORR_LIMIT );
- if ( ( ( st->element_mode == EVS_MONO ) && evs_mode_selection ) ||
- ( ( st->element_mode != EVS_MONO ) && evs_mode_selection && ivas_mode_selection ) )
-
- {
- fec_alg_fx( fec_alg_input, prevsynth_LP, ecu_rec, output_frame, N, decimatefactor, ph_ecu_HqVoicing, gapsynth, &hHQ_core->ni_seed_forfec, st->element_mode, st->hHQ_core->old_out );
- *last_fec = 1;
- *ph_ecu_active = 0;
- move16();
- *time_offs = output_frame;
- move16();
- ;
- }
- else
- {
- hq_phase_ecu( prevsynth - NS2SA( output_frame * FRAMES_PER_SEC, PH_ECU_LOOKAHEAD_NS ), ecu_rec, time_offs, X_sav, num_p, plocs, plocsi, env_stab, last_fec, prev_bfi, old_is_transient, mag_chg_1st, Xavg, beta_mute, st->bwidth, output_frame, corr, st->element_mode );
-
- *last_fec = 0;
- *ph_ecu_active = 1;
- }
-#else
IF( ( GE_32( st_fx->total_brate, 48000 ) &&
( GE_16( output_frame, L_FRAME16k ) && !prev_bfi && ( !old_is_transient[0] || old_is_transient[1] ) && ( NE_16( ph_ecu_HqVoicing, 0 ) || ( ( ( NE_16( st_fx->hHQ_core->env_stab_plc_fx, 0 ) ) && ( LT_16( corr, 19661 ) ) ) || ( !( NE_16( st_fx->hHQ_core->env_stab_plc_fx, 0 ) ) && ( GT_16( corr, 27853 ) ) ) ) ) ) ) ||
( LT_32( st_fx->total_brate, 48000 ) && ( ( ph_ecu_HqVoicing || GT_16( corr, 27853 ) ) && !prev_bfi && ( !old_is_transient[0] || old_is_transient[1] ) ) ) )
@@ -5395,7 +4862,6 @@ void hq_ecu_fx(
env_stab, last_fec, ph_ecu_active, prev_bfi, old_is_transient,
mag_chg_1st, Xavg, beta_mute, st_fx->bwidth, output_frame );
}
-#endif
return;
}
diff --git a/lib_dec/FEC_clas_estim_fx.c b/lib_dec/FEC_clas_estim_fx.c
index e56a77be12f49bf6522a1b129d91eaa0edbe4bb9..2bd38153a3c533568ec9b21792b3d21df478853b 100644
--- a/lib_dec/FEC_clas_estim_fx.c
+++ b/lib_dec/FEC_clas_estim_fx.c
@@ -285,7 +285,17 @@ void FEC_clas_estim_fx(
Corre( &pt1[pos], &pt1[pos - T0], T0, &cor_max[0] );
- T0 = mult_r_sat( add_sat( pitch[2], pitch[3] ), 256 );
+ IF( NE_16( st_fx->element_mode, EVS_MONO ) )
+ {
+ IF( LT_16( sub( pos, T0 ), sub( L_frame, L_SUBFR ) ) )
+ {
+ T0 = mult_r_sat( add_sat( pitch[2], pitch[3] ), 256 );
+ }
+ }
+ ELSE
+ {
+ T0 = mult_r_sat( add_sat( pitch[2], pitch[3] ), 256 );
+ }
pos_limit = sub( L_frame, L_SUBFR );
j = s_min( 1, s_max( 0, sub( pos, pos_limit ) ) );
Ltmp = L_deposit_l( cor_max[0] );
@@ -725,8 +735,8 @@ void FEC_clas_estim_fx(
} /* Do the classification only
- - MODE1: when the class is not transmitted in the bitstream
- - MODE2: on good frames (classifier is also called for bfi=1) */
+ - MODE1: when the class is not transmitted in the bitstream
+ - MODE2: on good frames (classifier is also called for bfi=1) */
/* update the memory of synthesis for frame class estimation */
diff --git a/lib_dec/FEC_fx.c b/lib_dec/FEC_fx.c
index 612816efd236c6ca1a51dcca0933ec4d1b7b6284..48d91a87a1956594ba84a662e33c8cc73d52d89f 100644
--- a/lib_dec/FEC_fx.c
+++ b/lib_dec/FEC_fx.c
@@ -510,15 +510,10 @@ void FEC_exc_estim_fx(
move16();
/* st_fx->L_frame / L_SUBFR */
tmp = shr( st_fx->L_frame, 6 );
+
/* Replication of the last spectrum, with a slight downscaling of its dynamic */
- IF( st_fx->element_mode == EVS_MONO )
- {
- gsc_dec_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, st_fx->Q_exc );
- }
- ELSE
- {
- gsc_dec_ivas_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, &st_fx->Q_exc );
- }
+ gsc_dec_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, &st_fx->Q_exc );
+
*tmp_noise = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/
move16();
/* Transform back to time domain */
diff --git a/lib_dec/FEC_scale_syn_fx.c b/lib_dec/FEC_scale_syn_fx.c
index d664aa9fbb2ea39a35ea23477c0ec2e3517e40c9..7f4586083e938d9eecb623b325a54dcecad9e71a 100644
--- a/lib_dec/FEC_scale_syn_fx.c
+++ b/lib_dec/FEC_scale_syn_fx.c
@@ -76,6 +76,7 @@ void FEC_scale_syn_fx(
Word16 *mem_syn, /* o: initial synthesis filter states Q_syn*/
Word16 Q_exc,
Word16 Q_syn,
+ const Word16 element_mode, /* i : element mode */
const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */
const Word16 force_scaling /* i: force scaling */
)
@@ -171,572 +172,10 @@ void FEC_scale_syn_fx(
* Find the energy/gain at the end of the frame
*-----------------------------------------------------------------*/
- frame_ener_fx( L_frame, clas, synth, pitch[( L_frame >> 6 ) - 1], &L_enr2 /*Q0*/, 1, Q_syn, 3, 0 );
-
-
- test();
- test();
- IF( bfi || ( EQ_32( total_brate, ACELP_7k20 ) ) || ( EQ_32( total_brate, ACELP_8k00 ) ) )
- {
- /* previous frame erased and no TC frame */
- IF( *scaling_flag > 0 )
- {
- /*enr2 += 0.01f;*/
- L_enr2 = L_max( L_enr2, 1 ); /* L_enr2 is in Q0 */
-
- IF( bfi ) /* In all bad frames, limit the gain to 1 */
- {
- /* gain2 = (float)sqrt( enr_old / enr2 );*/
- L_tmp = Sqrt_Ratio32( L_enr_old, 0, L_enr2, 0, &exp2 );
- gain2 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */
-
- /*if( gain2 > 1.0f )gain2 = 1.0f;*/
- gain2 = s_min( gain2, 16384 );
-
- /* find the energy/gain at the beginning of the frame */
- frame_ener_fx( L_frame, clas, synth, pitch[0], &L_enr1 /*Q0*/, 1, Q_syn, 3, 0 );
-
- /*enr1 += 0.1f;*/
- L_enr1 = L_max( L_enr1, 1 ); /* L_enr2 is in Q0 */
-
- /*gain1 = (float)sqrt( enr_old / enr1 );*/
- L_tmp = Sqrt_Ratio32( L_enr_old, 0, L_enr1, 0, &exp2 );
- gain1 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */
-
- /*if( gain1 > 1.0f )gain1 = 1.0f;*/
- gain1 = s_min( gain1, 16384 ); /*Q14*/
- }
- ELSE /* good frame */
- {
- IF( L_enr_q == 0 ) /* If E info (FEC protection bits) is not available in the bitstream */
- {
- L_enr_q = L_enr2; /*Q0*/
- set16_fx( h1, 0, L_FRAME / 2 );
- h1[0] = 1024; /*1.0f in Q10*/
- move16();
- /*syn_filt( Aq+(3*(M+1)), M, h1, h1, L_FRAME/2, h1+(M+1), 0 );*/
- E_UTIL_synthesis( 1, Aq + ( 3 * ( M + 1 ) ), h1, h1, L_FRAME / 2, h1 + ( M + 1 ), 0, M );
-
- /*Compute tilt */
- /*rr0 = dotp( h1, h1, L_FRAME/2-1 ) + 0.1f;*/
- /*rr1 = dotp( h1, h1+1, L_FRAME/2-1 );*/
- /*tilt = rr1 / rr0;*/
- tilt = extract_h( L_shl_sat( get_gain( h1 + 1, h1, L_FRAME / 2 - 1 ), 15 ) ); /*Q15*/
- pitch_dist = 0;
- move16();
- L_mean_pitch = L_mult( pitch[0], 8192 /*1.0f in Q13*/ ); /*Q14*/
- FOR( k = 0; k < ( NB_SUBFR - 1 ); k++ )
- {
- pitch_dist = add( pitch_dist, abs_s( sub( pitch[k + 1], pitch[k] ) ) ); /*Q0*/
- L_mean_pitch = L_mac( L_mean_pitch, pitch[k + 1], 8192 ); /*Q14*/
- }
- /*pitch_dist /= (float)(NB_SUBFR-1); */
- pitch_dist = mult_r( shl( pitch_dist, 4 ), 10923 /*1/(float)(NB_SUBFR-1) in Q15*/ ); /*Q4*/
- /*mean_pitch /= (float)(NB_SUBFR);*/
- mean_pitch = extract_h( L_shl( L_mean_pitch, 4 ) ); /*Q4*/
-
-
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( GT_16( tilt, 22938 ) ) && /* HF resonnant filter */
- ( ( GT_16( pitch_dist, 8 << 4 ) ) || ( LT_16( mean_pitch, PIT_MIN << 4 ) ) ) && /* pitch unstable or very short */
- ( ( prev_bfi ) || ( ( EQ_16( coder_type, GENERIC ) ) && ( EQ_16( LSF_Q_prediction, AUTO_REGRESSIVE ) ) ) ) )
- {
- /*if( enr_q > scaling * enr_old ){enr_q = scaling * enr_old;}*/
- L_enr_q = L_min( L_enr_q, L_shl_sat( Mult_32_16( L_enr_old, scaling ), 1 ) ); /* scaling in Q14*/
- }
- ELSE
- {
- ener_max = *lp_ener_FEC_max; /*Q0*/
- move32();
- test();
- if ( EQ_16( clas, VOICED_TRANSITION ) || ( GE_16( clas, INACTIVE_CLAS ) ) )
- {
- ener_max = *lp_ener_FEC_av; /*Q0*/
- move32();
- }
- /*if( enr_old > ener_max )ener_max = enr_old;*/
- ener_max = L_max( ener_max, L_enr_old );
-
- /*if( enr_q > scaling * ener_max ){enr_q = scaling * ener_max;}*/
- L_enr_q = L_min( L_enr_q, L_shl_sat( Mult_32_16( ener_max, scaling ), 1 ) ); /* scaling in Q14*/
- }
- }
- /*gain2 = (float)sqrt( enr_q / enr2 );*/
- L_enr_q = L_max( L_enr_q, 1 ); /* L_enr2 is in Q0 */
- L_tmp = Sqrt_Ratio32( L_enr_q, 0, L_enr2, 0, &exp2 );
- gain2 = round_fx( L_shl( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */
-
- /*-----------------------------------------------------------------*
- * Find the energy/gain at the beginning of the frame to ensure smooth transition after erasure(s)
- *-----------------------------------------------------------------*/
-
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( ( GE_16( last_good, VOICED_TRANSITION ) && LT_16( last_good, INACTIVE_CLAS ) && ( clas == UNVOICED_CLAS || EQ_16( clas, INACTIVE_CLAS ) ) ) ||
- EQ_32( last_core_brate, SID_1k75 ) || EQ_32( last_core_brate, SID_2k40 ) || last_core_brate == FRAME_NO_DATA ) &&
- prev_bfi )
- {
- /* voiced -> unvoiced signal transition */
- /* CNG -> active signal transition */
- gain1 = gain2; /*Q14*/
- move16();
- }
- ELSE
- {
- /* find the energy at the beginning of the frame */
- frame_ener_fx( L_frame, clas, synth, pitch[0], &L_enr1 /*Q0*/, 1, Q_syn, 3, 0 );
-
- /*enr1 += 0.1f;*/
- L_enr1 = L_max( L_enr1, 1 ); /* L_enr1 is in Q0 */
-
- /*gain1 = (float)sqrt( enr_old / enr1 );*/
- L_tmp = Sqrt_Ratio32( L_enr_old, 0, L_enr1, 0, &exp2 );
- gain1 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */
-
- /*if( gain1 > 1.2f )gain1 = 1.2f;*/
- /* prevent clipping */
- gain1 = s_min( gain1, 19661 /*1.2f in Q14*/ );
-
- /* prevent amplifying the unvoiced or inactive part of the frame in case an offset is followed by an onset */
- test();
- test();
- if ( EQ_16( clas, ONSET ) && GT_16( gain1, gain2 ) && prev_bfi )
- {
- gain1 = gain2; /*Q14*/
- move16();
- }
- }
-
- L_enr2 = L_enr_q; /*Q0*/
- move32(); /* Set the end frame energy to the scaled energy, to be used in the lp_ener_FEC */
- }
-
- /*------------------------------------------------------------------------------*
- * Smooth the energy evolution by exponentially evolving from gain1 to gain2
- *------------------------------------------------------------------------------*/
-
- /*gain2 *= ( 1.0f - AGC );*/
- L_tmp = L_mult( gain2, (Word16) ( 32768 /*Q15*/ - AGC_FX ) ); /*Q30*/
- FOR( i = 0; i < L_frame; i++ )
- {
- /*gain1 = gain1 * AGC + gain2;*/
- gain1 = mac_r( L_tmp, gain1, AGC_FX ); /* in Q14 */
- /*exc[i] *= gain1;*/
- exc[i] = mac_r( L_mult( exc[i], gain1 ), exc[i], gain1 );
- move16();
- /*exc2[i] *= gain1;*/
- exc2[i] = mac_r_sat( L_mult( exc2[i], gain1 ), exc2[i], gain1 );
- move16();
- }
- /* smoothing is done in excitation domain, so redo synthesis */
- Copy( mem_tmp, mem_syn, M ); /* Q_syn */
- syn_12k8_fx( L_frame, Aq, exc2, synth, mem_syn, 1, Q_exc, Q_syn );
- *update_flg = 1;
- move16();
- }
- }
- ELSE
- {
- /* previous frame erased and no TC frame */
- test();
- IF( prev_bfi && NE_16( coder_type, TRANSITION ) )
- {
- IF( L_enr_q == 0 )
- {
- L_enr_q = L_max( 1, L_enr2 ); /* sets to 'L_enr2' in 1 clock */
- set16_fx( h1, 0, L_FRAME / 2 );
- h1[0] = 1024; /*1.0f in Q10*/
- move16();
- /*syn_filt( Aq+(3*(M+1)), M, h1, h1, L_FRAME/2, h1+(M+1), 0 );*/
- E_UTIL_synthesis( 1, Aq + ( 3 * ( M + 1 ) ), h1, h1, L_FRAME / 2, h1 + ( M + 1 ), 0, M );
- /*Compute tilt */
- /*rr0 = dotp( h1, h1, L_FRAME/2-1 ) + 0.1f;*/
- /*rr1 = dotp( h1, h1+1, L_FRAME/2-1 );*/
- /*tilt = rr1 / rr0;*/
- tilt = extract_h( L_shl_sat( get_gain( h1 + 1, h1, L_FRAME / 2 - 1 ), 15 ) ); /*Q15*/
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( ( ( EQ_32( total_brate, ACELP_13k20 ) ) || ( EQ_32( total_brate, ACELP_12k85 ) ) || ( EQ_32( total_brate, ACELP_12k15 ) ) || ( EQ_32( total_brate, ACELP_11k60 ) ) ||
- ( EQ_32( total_brate, ACELP_9k60 ) ) ) &&
- ( GT_16( tilt, 22938 ) ) && /* HF resonnant filter */
- ( ( ( clas == UNVOICED_CLAS ) ) || ( EQ_16( clas, INACTIVE_CLAS ) ) ) ) ) /* unvoiced classification */
- {
- /*if( enr_q > scaling * enr_old )enr_q = scaling * enr_old;*/
- L_enr_q = L_min( L_enr_q, L_shl_sat( Mult_32_16( L_enr_old, scaling ), 1 ) ); /* scaling in Q14*/
- }
- ELSE IF( GE_16( last_good, VOICED_TRANSITION ) && LT_16( last_good, INACTIVE_CLAS ) && GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) )
- {
- /* Voiced-voiced recovery */
- test();
- IF( *old_enr_LP != 0 && GT_16( enr_LP, shl_sat( *old_enr_LP, 1 ) ) )
- {
- /* enr_q /= enr_LP */
- exp = norm_l( L_enr_q );
- tmp = extract_h( L_shl( L_enr_q, exp ) );
-
- exp2 = norm_s( enr_LP );
- tmp2 = shl( enr_LP, exp2 );
-
- exp = sub( exp2, exp );
-
- tmp3 = sub( tmp, tmp2 );
- IF( tmp3 > 0 )
- {
- tmp = shr( tmp, 1 );
- exp = add( exp, 1 );
- }
- tmp = div_s( tmp, tmp2 );
-
- /* L_enr_q *= 2 * *old_enr_LP */
- L_enr_q = L_shl( L_mult( tmp, shl( *old_enr_LP, 1 ) ), exp );
- }
-
- ELSE
- {
- test();
- IF( avoid_lpc_burst_on_recovery && GT_16( enr_LP, 160 /*20.0f in Q3*/ ) )
- {
- exp = norm_s( enr_LP );
- tmp = shl( enr_LP, exp );
-
- exp2 = 7;
- move16();
- tmp2 = 160 << 7; /* 160 = 20.0f in Q3 */
- move16();
- exp = sub( exp2, exp );
-
- IF( GT_16( tmp, tmp2 ) )
- {
- tmp = shr( tmp, 1 );
- exp = add( exp, 1 );
- }
- tmp = div_s( tmp, tmp2 ); /* tmp*2^exp = enr_LP/20.0 */
- L_tmp = Isqrt_lc( L_deposit_h( tmp ), &exp ); /* L_tmp*2^exp = sqrt(20.0/enr_LP) */
- L_enr_q = L_shl( Mpy_32_32( L_enr_q, L_tmp ), exp );
- }
- }
- }
-
- test();
- test();
- test();
- test();
- IF( ( GE_16( last_good, VOICED_TRANSITION ) && LT_16( last_good, INACTIVE_CLAS ) && GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) ) || force_scaling )
- {
-
- IF( GT_32( L_enr_q, L_enr_old ) ) /* Prevent energy to increase on voiced */
- {
- L_enr_q = L_add( Mpy_32_16_1( L_enr_old, 32767 - SCLSYN_LAMBDA ), Mpy_32_16_1( L_enr_q, SCLSYN_LAMBDA ) ); /*Q0*/
- }
- }
- }
-
- L_enr_q = L_max( 1, L_enr_q );
-
- /* gain2 = (float)sqrt( enr_q / enr2 );*/
- exp = norm_l( L_enr_q );
- tmp = extract_h( L_shl( L_enr_q, exp ) );
-
- exp2 = norm_l( L_enr2 );
- tmp2 = extract_h( L_shl( L_enr2, exp2 ) );
-
- exp2 = sub( exp, exp2 ); /* Denormalize and substract */
-
- tmp3 = sub( tmp2, tmp );
- IF( tmp3 > 0 )
- {
- tmp2 = shr( tmp2, 1 );
- exp2 = add( exp2, 1 );
- }
-
- tmp = div_s( tmp2, tmp );
-
- L_tmp = L_deposit_h( tmp );
- L_tmp = Isqrt_lc( L_tmp, &exp2 );
- gain2 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */
- /*-----------------------------------------------------------------*
- * Clipping of the smoothing gain at the frame end
- *-----------------------------------------------------------------*/
-
- gain2 = s_min( gain2, 19661 /*1.2f in Q14*/ ); /* Gain modification clipping */
- if ( LT_32( L_enr_q, 2 ) )
- {
- gain2 = s_min( gain2, 16384 /*1.0f in Q14*/ ); /* Gain modification clipping */
- }
-
- /*-----------------------------------------------------------------*
- * Find the energy/gain at the beginning of the frame to ensure smooth transition after erasure(s)
- *-----------------------------------------------------------------*/
-
- test();
- test();
- test();
- test();
- test();
- test();
- IF( EQ_16( clas, SIN_ONSET ) ) /* slow increase */
- {
- gain1 = shr( gain2, 1 ); /*0.5f * gain2*/
- }
- /*------------------------------------------------------------*
- * voiced->unvoiced transition recovery
- *------------------------------------------------------------*/
- ELSE IF( ( GE_16( last_good, VOICED_TRANSITION ) && LT_16( last_good, INACTIVE_CLAS ) && ( clas == UNVOICED_CLAS || EQ_16( clas, INACTIVE_CLAS ) ) ) || /* voiced->unvoiced transition recovery */
- EQ_32( last_core_brate, SID_1k75 ) || EQ_32( last_core_brate, SID_2k40 ) || last_core_brate == FRAME_NO_DATA ) /* CNG -> active signal transition */
- {
- gain1 = gain2; /*Q14*/
- move16();
- }
- ELSE
- {
- /*--------------------------------------------------------*
- * Find the energy at the beginning of the frame
- *--------------------------------------------------------*/
- tmp = frame_ener_fx( L_frame, clas, synth, pitch[0], &L_enr1, 0, Q_syn, 3, 0 );
-
- /*gain1 = (float)sqrt( enr_old / enr1 );*/
- exp = norm_l( L_enr_old );
- tmp = extract_h( L_shl( L_enr_old, exp ) );
- exp2 = norm_l( L_enr1 );
- tmp2 = extract_h( L_shl( L_enr1, exp2 ) );
-
- exp2 = sub( exp, exp2 ); /* Denormalize and substract */
-
- tmp3 = sub( tmp2, tmp );
-
- IF( tmp3 > 0 )
- {
- tmp2 = shr( tmp2, 1 );
- exp2 = add( exp2, 1 );
- }
-
- tmp = div_s( tmp2, tmp );
-
- L_tmp = L_deposit_h( tmp );
- L_tmp = Isqrt_lc( L_tmp, &exp2 );
- gain1 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */
- /* exp2 is always <= 1 */
-
- gain1 = s_min( gain1, 19661 /*1.2F in Q14*/ );
-
- test();
- test();
- if ( avoid_lpc_burst_on_recovery && ( GT_16( enr_LP, 160 ) ) && ( LE_16( enr_LP, shl_sat( *old_enr_LP, 1 ) ) ) )
- {
- gain1 = s_min( gain1, 16384 /*1.0f in Q14*/ );
- }
-
- /*--------------------------------------------------------*
- * Prevent a catastrophy in case of offset followed by onset
- *--------------------------------------------------------*/
- test();
- if ( ( EQ_16( clas, ONSET ) ) && ( GT_16( gain1, gain2 ) ) )
- {
- gain1 = gain2; /*Q14*/
- move16();
- }
- }
- /*-----------------------------------------------------------------*
- * Smooth the energy evolution by exponentially evolving from
- * gain1 to gain2
- *-----------------------------------------------------------------*/
-
- L_tmp = L_mult( gain2, (Word16) ( 32768 /*Q15*/ - AGC_FX ) );
-
- FOR( i = 0; i < L_frame; i++ )
- {
- gain1 = mac_r( L_tmp, gain1, AGC_FX ); /* in Q14 */
- exc[i] = mac_r_sat( L_mult_sat( exc[i], gain1 ), exc[i], gain1 );
- move16();
- exc2[i] = mac_r_sat( L_mult_sat( exc2[i], gain1 ), exc2[i], gain1 );
- move16();
- }
-
- Copy( mem_tmp, mem_syn, M ); /* Q_syn */
- syn_12k8_fx( L_frame, Aq, exc2, synth, mem_syn, 1, Q_exc, Q_syn );
- *update_flg = 1;
- move16();
- }
- }
- /*-----------------------------------------------------------------*
- * Update low-pass filtered energy for voiced frames
- *-----------------------------------------------------------------*/
-
- test();
- test();
- IF( !bfi && ( GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) ) )
- {
- IF( EQ_16( clas, VOICED_TRANSITION ) )
- {
- L_enr2_av = L_enr2; /*Q0*/
- move32();
- frame_ener_fx( L_frame, VOICED_CLAS, synth, pitch[sub( shr( L_frame, 6 ), 1 )], &L_ener2_max /*Q0*/, 1, Q_syn, 3, 0 );
- }
- ELSE
- {
- L_ener2_max = L_enr2; /*Q0*/
- move32();
- frame_ener_fx( L_frame, UNVOICED_CLAS, synth, pitch[sub( shr( L_frame, 6 ), 1 )], &L_enr2_av /*Q0*/, 1, Q_syn, 3, 0 );
- }
-
- /**lp_ener_FEC_av = 0.2f * enr2_av + 0.8f * *lp_ener_FEC_av; move32();*/
- *lp_ener_FEC_av = Madd_32_16( Mult_32_16( *lp_ener_FEC_av, 31130 /*0.95f in Q15*/ ), L_enr2_av, 1638 /*0.05F Q15*/ ); /*Q0*/
- move32();
- /**lp_ener_FEC_max = 0.2f * enr2_max + 0.8f * *lp_ener_FEC_max; move32();*/
- *lp_ener_FEC_max = Madd_32_16( Mult_32_16( *lp_ener_FEC_max, 31130 /*0.95f in Q15*/ ), L_ener2_max, 1638 /*0.05F Q15*/ ); /*Q0*/
- move32();
- }
-
- /*-----------------------------------------------------------------*
- * Update the LP filter energy for voiced frames
- *-----------------------------------------------------------------*/
- test();
- if ( GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) )
- {
- *old_enr_LP = enr_LP; /*Q3*/
- move16();
- }
-
- return;
-}
-
-void FEC_scale_syn_ivas_fx(
- const Word16 L_frame, /* i : length of the frame */
- Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/
- Word16 clas, /* i/o: frame classification */
- const Word16 last_good, /* i: last good frame classification */
- Word16 *synth, /* i/o: synthesized speech at Fs = 12k8 Hz Q_syn*/
- const Word16 *pitch, /* i: pitch values for each subframe Q0*/
- Word32 L_enr_old, /* i: energy at the end of previous frame */
- Word32 L_enr_q, /* i: transmitted energy for current frame */
- const Word16 coder_type, /* i: coder type */
- const Word16 LSF_Q_prediction, /* i : LSF prediction mode */
- Word16 *scaling_flag, /* i/o: flag to indicate energy control of syn */
- Word32 *lp_ener_FEC_av, /* i/o: averaged voiced signal energy Q0*/
- Word32 *lp_ener_FEC_max, /* i/o: averaged voiced signal energy Q0*/
- const Word16 bfi, /* i: current frame BFI */
- const Word32 total_brate, /* i: total bitrate */
- const Word16 prev_bfi, /* i: previous frame BFI */
- const Word32 last_core_brate, /* i: previous frame core bitrate */
- Word16 *exc, /* i/o: excitation signal without enhancement */
- Word16 *exc2, /* i/o: excitation signal with enhancement */
- Word16 Aq[], /* i/o: LP filter coefs (can be modified if BR) Q12*/
- Word16 *old_enr_LP, /* i/o: LP filter E of last good voiced frame Q3*/
- const Word16 *mem_tmp, /* i: temp. initial synthesis filter states Q_syn*/
- Word16 *mem_syn, /* o: initial synthesis filter states Q_syn*/
- Word16 Q_exc,
- Word16 Q_syn,
- const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */
- const Word16 force_scaling /* i: force scaling */
-)
-{
- Word16 i;
- Word32 L_enr1, L_enr2;
- Word16 gain1, gain2, enr_LP;
- Word16 tmp, tmp2, exp, exp2;
- Word16 tmp3;
- Word32 L_tmp;
- Word16 scaling;
- Word32 ener_max, L_enr2_av, L_ener2_max;
- Word16 h1[L_FRAME / 2], tilt, pitch_dist, mean_pitch;
- Word16 k;
- Word32 L_mean_pitch;
-
- enr_LP = 0;
- move16();
- gain2 = 0;
- move16();
- gain1 = 0;
- move16();
- *update_flg = 0;
- move16();
- L_enr_old = L_max( 1, L_enr_old ); /* to avoid division by zero (*L_enr_old is always >= 0) */
- scaling = 16384;
- move16(); /* Q14*/
+ tmp = sub( 3, getScaleFactor16( synth, L_frame ) );
- /*-----------------------------------------------------------------*
- * Find the synthesis filter impulse response on voiced
- *-----------------------------------------------------------------*/
test();
- IF( GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) )
- {
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- enr_LP = Enr_1_Az_fx( Aq + ( NB_SUBFR - 1 ) * ( M + 1 ), L_SUBFR );
- }
- ELSE /* L_frame == L_FRAME16k */
- {
- enr_LP = Enr_1_Az_fx( Aq + ( NB_SUBFR16k - 1 ) * ( M + 1 ), L_SUBFR ); /*Q3*/
- }
- }
-
- /*-----------------------------------------------------------------*
- * Define when to scale the synthesis
- *-----------------------------------------------------------------*/
-
- IF( bfi )
- {
- *scaling_flag = 1;
- move16(); /* Always check synthesis on bad frames */
- }
- ELSE IF( prev_bfi )
- {
- test();
- IF( ( EQ_16( LSF_Q_prediction, AUTO_REGRESSIVE ) ) || ( EQ_16( LSF_Q_prediction, MOVING_AVERAGE ) ) )
- {
- *scaling_flag = 2;
- move16(); /* Decoded LSFs affected */
- }
- ELSE IF( NE_16( coder_type, TRANSITION ) )
- {
- *scaling_flag = 1;
- move16(); /* SN, but not TC mode - LSF still affected by the interpolation */
- }
- ELSE
- {
- *scaling_flag = 0;
- move16(); /* LSF still possibly affected due to interpolation */
- }
- scaling = 24576; /*1.5 Q14*/
- move16();
- }
- ELSE
- {
- test();
- IF( ( EQ_16( LSF_Q_prediction, AUTO_REGRESSIVE ) ) && ( EQ_16( *scaling_flag, 2 ) ) )
- {
- *scaling_flag = 2;
- move16(); /* Continue with energy control till the end of AR prediction */
- }
- ELSE IF( *scaling_flag > 0 )
- {
- ( *scaling_flag ) = sub( *scaling_flag, 1 ); /* If scaling flag was equal to 2, add one control frame to account for the LSF interpolation */
- move16();
- }
- scaling = 32767; /*2.0 Q14*/
- move16();
- }
-
- /*-----------------------------------------------------------------*
- * Find the energy/gain at the end of the frame
- *-----------------------------------------------------------------*/
- tmp = sub( 3, getScaleFactor16( synth, L_frame ) );
- IF( tmp > 0 )
+ IF( tmp > 0 && GT_16( element_mode, EVS_MONO ) )
{
Word16 synth_tmp[L_FRAME16k];
Copy_Scale_sig( synth, synth_tmp, L_frame, -tmp ); // Q_synth - tmp
diff --git a/lib_dec/TonalComponentDetection_fx.c b/lib_dec/TonalComponentDetection_fx.c
index e820f1399780d3fca13070925d67b8d76e443140..409b975f5c18312785f64650e5bfda0631cb6d75 100644
--- a/lib_dec/TonalComponentDetection_fx.c
+++ b/lib_dec/TonalComponentDetection_fx.c
@@ -140,33 +140,13 @@ void DetectTonalComponents(
const Word16 nSamples,
const Word16 nSamplesCore,
Word16 floorPowerSpectrum, /* i: lower limit for power spectrum bins Q0*/
- Word16 element_mode
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- const PsychoacousticParameters *psychParamsCurrent
-#endif
-)
+ Word16 element_mode )
{
Word16 F0;
Word16 thresholdModification[L_FRAME_MAX], lastMDCTSpect_exp;
Word32 pScaledMdctSpectrum[L_FRAME_MAX];
-#ifdef IVAS_CODE_MDCT_GSHAPE
- Word16 nBands;
- IF( psychParamsCurrent == NULL )
- {
- nBands = FDNS_NPTS;
- PMT( "add nBands argument to mdct_shaping_16" )
-#endif
- mdct_shaping_16( lastMDCTSpectrum, nSamplesCore, nSamples, scaleFactors, scaleFactors_exp, scaleFactors_max_e, pScaledMdctSpectrum );
-#ifdef IVAS_CODE_MDCT_GSHAPE
- }
- ELSE
- {
- sns_shape_spectrum( pScaledMdctSpectrum, psychParamsCurrent, scaleFactors, nSamplesCore );
- nBands = psychParamsCurrent->nBands;
- }
-#endif
+ mdct_shaping_16( lastMDCTSpectrum, nSamplesCore, nSamples, scaleFactors, scaleFactors_exp, scaleFactors_max_e, pScaledMdctSpectrum );
lastMDCTSpect_exp = add( lastMDCTSpectrum_exp, scaleFactors_max_e );
@@ -208,12 +188,7 @@ void RefineTonalComponents(
const Word16 nSamples,
const Word16 nSamplesCore,
const Word16 floorPowerSpectrum, /* i: lower limit for power spectrum bins Q0*/
- Word16 element_mode
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- const PsychoacousticParameters *psychParamsCurrent
-#endif
-)
+ Word16 element_mode )
{
Word16 newIndexOfTonalPeak[MAX_NUMBER_OF_IDX]; /*Q0*/
Word16 newLowerIndex[MAX_NUMBER_OF_IDX]; /*Q0*/
@@ -224,12 +199,7 @@ void RefineTonalComponents(
DetectTonalComponents( newIndexOfTonalPeak, newLowerIndex, newUpperIndex, &newNumIndexes, lastPitchLag, currentPitchLag, lastMDCTSpectrum,
- lastMDCTSpectrum_exp, scaleFactors, scaleFactors_exp, scaleFactors_max_e, secondLastPowerSpectrum, nSamples, nSamplesCore, floorPowerSpectrum, element_mode
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- psychParamsCurrent
-#endif
- );
+ lastMDCTSpectrum_exp, scaleFactors, scaleFactors_exp, scaleFactors_max_e, secondLastPowerSpectrum, nSamples, nSamplesCore, floorPowerSpectrum, element_mode );
nPreservedPeaks = 0;
move16();
@@ -740,15 +710,6 @@ static void CorrectF0(
Word16 tmp;
-#ifdef IVAS_CODE
- FOR( i = 0; i < MAX_PEAKS_FROM_PITCH - 1; i++ )
- {
- diff[i] = 0;
- sortedDiff[i] = 0;
- move16));
- move16));
- }
-#endif
F0 = *pF0; /*Q10*/
test();
diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c
index 495ca5c006ecc49b9d7f3108d72d7bc55ef09912..fd0c8ce2d12688e55ecfdf169e8d9e1699e9cf84 100644
--- a/lib_dec/acelp_core_dec_fx.c
+++ b/lib_dec/acelp_core_dec_fx.c
@@ -1,154 +1,233 @@
+/******************************************************************************************************
+
+ (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
+ Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
+ Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
+ Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
+ contributors to this repository. All Rights Reserved.
+
+ This software is protected by copyright law and by international treaties.
+ The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
+ Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
+ Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
+ Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
+ contributors to this repository retain full ownership rights in their respective contributions in
+ the software. This notice grants no license of any kind, including but not limited to patent
+ license, nor is any license granted by implication, estoppel or otherwise.
+
+ Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
+ contributions.
+
+ This software is provided "AS IS", without any express or implied warranties. The software is in the
+ development stage. It is intended exclusively for experts who have experience with such software and
+ solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
+ and fitness for a particular purpose are hereby disclaimed and excluded.
+
+ Any dispute, controversy or claim arising under or in relation to providing this software shall be
+ submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
+ accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
+ the United Nations Convention on Contracts on the International Sales of Goods.
+
+*******************************************************************************************************/
+
/*====================================================================================
- EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0
+ EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
====================================================================================*/
-
#include
#include
-#include "options.h" /* Compilation switches */
-#include "rom_com.h" /* Static table prototypes */
-#include "prot_fx.h" /* Function prototypes */
+#include
+#include "options.h"
+#include "cnst.h"
+#include "rom_com.h"
+#include "prot_fx.h"
+#include "ivas_cnst.h"
+#include "ivas_rom_com.h"
+#include "wmc_auto.h"
#include "ivas_prot_fx.h"
-#include "ivas_cnst.h" /* Common constants */
-#include "cnst.h" /* Common constants */
-/*==========================================================================*/
-/* FUNCTION : void acelp_core_dec_fx () */
-/*--------------------------------------------------------------------------*/
-/* PURPOSE : ACELP core decoder */
-/*--------------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ Word16 coder_type i : coder type */
-
-/*--------------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ Word16 *voice_factors o : voicing factors Q15 */
-/* _ Word16 old_syn_12k8_16k[] o : intermediate ACELP Q_syn2-1 */
-/* synthesis at 12.8kHz or 16kHz to be used by SWB BWE */
-/* _ Word16 synth_out[] o : synthesis Q_syn2-1 */
-/*--------------------------------------------------------------------------*/
-/* INPUT/OUTPUT ARGUMENTS : */
-/* _ Decoder_State_fx *st_fx: */
-/* _ Word16 bwe_exc_extended[] i/o: bandwidth extended excitation Q0*/
-/*--------------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ None */
-/*--------------------------------------------------------------------------*/
-/* CALLED FROM : RX */
-/*==========================================================================*/
+
+
+/*-------------------------------------------------------------------*
+ * acelp_core_dec_fx()
+ *
+ * ACELP core decoder
+ *-------------------------------------------------------------------*/
ivas_error acelp_core_dec_fx(
- Decoder_State *st_fx, /* i/o: decoder state structure */
- Word16 output[], /* o : synthesis @internal Fs */
- Word16 synth_out[], /* o : synthesis Q_syn2-1*/
- Word16 save_hb_synth[], /* o : HB synthesis */
- Word32 bwe_exc_extended[], /* i/o: bandwidth extended excitation Q0*/
- Word16 *voice_factors, /* o : voicing factors Q15 */
- Word16 old_syn_12k8_16k[], /* o : intermediate ACELP synthesis for SWB BWE Q_syn2-1*/
- Word16 sharpFlag,
- Word16 pitch_buf_fx[NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/
- Word16 *unbits, /* o : number of unused bits */
- Word16 *sid_bw, /* o : 0-NB/WB, 1-SWB SID */
- STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle */
- const Word16 tdm_lspQ_PCh[M], /* i : Q LSPs for primary channel */
- const Word16 tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */
- const Word16 use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */
- const Word16 last_element_mode, /* i : last element mode */
- const Word32 last_element_brate, /* i : last element bitrate */
- const Word16 flag_sec_CNA, /* i : CNA flag for secondary channel */
- const Word16 nchan_out, /* i : number of output channels */
- STEREO_CNG_DEC_HANDLE hStereoCng, /* i : stereo CNG handle */
- const Word16 read_sid_info /* i : read SID info flag */
+ Decoder_State *st, /* i/o: decoder state structure */
+ Word16 output_fx[], /* o : synthesis @internal Fs Q_syn*/
+ Word16 synth_fx16[], /* o : synthesis Q_syn2*/
+ Word16 save_hb_synth_fx16[], /* o : HB synthesis Q0*/
+ Word32 bwe_exc_extended_fx[], /* i/o: bandwidth extended excitation 2*Q_exc*/
+ Word16 *voice_factors_fx, /* o : voicing factors Q15*/
+ Word16 old_syn_12k8_16k_fx[], /* o : intermediate ACELP synthesis at 12.8kHz or 16kHz to be used by SWB BWE Q_syn2-1*/
+ const Word16 sharpFlag, /* i : formant sharpening flag */
+ Word16 pitch_buf_fx[NB_SUBFR16k], /* o : Word16 pitch for each subframe Q6*/
+ Word16 *unbits, /* o : number of unused bits */
+ Word16 *sid_bw, /* o : 0-NB/WB, 1-SWB SID */
+ STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle Qlog2(2.56)*/
+ const Word16 tdm_lspQ_PCh_fx[M], /* i : Q LSPs for primary channel Q15*/
+ const Word16 tdm_lsfQ_PCh_fx[M], /* i : Q LSFs for primary channel */
+ const Word16 use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */
+ const Word16 last_element_mode, /* i : last element mode */
+ const Word32 last_element_brate, /* i : last element bitrate */
+ const Word16 flag_sec_CNA, /* i : CNA flag for secondary channel */
+ const Word16 nchan_out, /* i : number of output channels */
+ STEREO_CNG_DEC_HANDLE hStereoCng, /* i : stereo CNG handle */
+ const Word16 read_sid_info /* i : read SID info flag */
)
{
- Word16 old_exc_fx[L_EXC_DEC] = { 0 }, *exc_fx; /* excitation signal buffer (Q0) */
- Word16 syn_fx_tmp[L_FRAME_16k + L_SUBFR], *syn_fx; /* synthesis signal buffer */
- Word16 temp_buf[L_FRAME16k + L_SYN_MEM];
- Word16 output_frame; /* frame length at output sampling freq. */
- Word16 mem_tmp_fx[M]; /* temporary synthesis filter memory */
- Word32 enr_q_fx; /* E information for FER protection */
- Word16 tmp_noise_fx; /* Long term temporary noise energy */
- Word16 i, int_fs;
- Word16 tc_subfr_fx;
- Word16 allow_cn_step_fx;
+ Word32 synth_fx[960], save_hb_synth_fx[960] /*, bwe_exc_extended_fx[L_FRAME32k + NL_BUFF_OFFSET]*/;
+ Word16 old_exc_fx[L_EXC_DEC], *exc_fx; /* excitation signal buffer */
+ Word16 syn_tmp_fx[L_FRAME16k + L_SUBFR], *psyn_fx; /* synthesis signal buffer */
+ Word16 output_frame; /* frame length at output sampling freq. */
+ Word16 lsf_new_fx[M]; /* LSFs at the end of the frame Qlog2(2.56) */
+ Word16 lsp_new_fx[M]; /* LSPs at the end of the frame Q15 */
+ Word16 lsp_mid_fx[M]; /* LSPs in the middle of the frame */
+ Word16 Aq_fx[NB_SUBFR16k * ( M + 1 )]; /* A(q) quantized for the 4 subframes */
+ Word16 old_exc2_fx[L_FRAME16k + L_EXC_MEM], *exc2_fx; /* total excitation buffer */
+ Word16 mem_tmp_fx[M]; /* temporary synthesis filter memory */
+ Word32 enr_q_fx; /* E information for FER protection */
+ Word16 tmp_noise_fx; /* Long term temporary noise energy */
+ Word16 Es_pred_fx; /* predicted scaled innov. energy Q8 */
+ Word16 FEC_pitch_fx; /* FEC pitch */
+ Word16 old_bwe_exc_fx[( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 )]; /* excitation buffer */
+ Word16 *bwe_exc_fx; /* Excitation for SWB TBE */
+ Word16 i, j, int_fs;
+ Word16 tc_subfr;
+ Word16 allow_cn_step;
Word16 temp_buf_fx[L_FRAME16k + L_SYN_MEM];
-
- Word16 Aq_fx[NB_SUBFR16k * ( M + 1 )] = { 0 }; /*Q12*/
- Word16 Es_pred_fx; /*Q8*/
- Word16 old_bwe_exc_fx[( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 )] = { 0 }; /* excitation buffer Q_exc*/
- Word16 old_exc2_fx[L_FRAME16k + L_EXC_MEM], *exc2_fx; /* total excitation buffer */
- Word16 *bwe_exc_fx;
- Word16 lsf_new_fx[M]; /* LSFs at the end of the frame */
- Word16 lsp_new_fx[M]; /* LSPs at the end of the frame */
- Word16 lsp_mid_fx[M]; /* LSPs in the middle of the frame */
- Word16 FEC_pitch_fx; /*Q6*/
Word16 last_pulse_pos;
Word16 T0_tmp;
- Word16 do_WI_fx;
+ Word16 do_WI;
Word16 dct_buffer_fx[DCT_L_POST];
Word16 exc_buffer_fx[DCT_L_POST];
- Word16 dct_exc_tmp[L_FRAME16k];
- Word16 qdct;
- Word16 delta_mem_scale;
- Word16 bpf_error_signal[L_FRAME16k];
- CLDFB_SCALE_FACTOR scaleFactor;
- Word32 workBuffer[128 * 3];
- Word32 q_env[20];
- Word16 exc3_fx[L_FRAME16k];
- Word16 syn1_fx_tmp[L_FRAME16k + 2], *syn1_fx;
- Word32 *realBuffer[CLDFB_NO_COL_MAX], *imagBuffer[CLDFB_NO_COL_MAX];
- Word16 gain_buf[NB_SUBFR16k]; /*Q14*/
+ Word16 dct_exc_tmp_fx[L_FRAME16k];
+ Word16 nb_bits; /* number of bits */
+ Word16 indice; /* parameter indices to write */
+ Word16 gain_buf_fx[NB_SUBFR16k];
Word16 syn_fx_tmp2[L_FRAME_16k];
Word16 pitch_buf_tmp[NB_SUBFR16k];
- Word16 k;
Word16 update_flg;
- Word32 realBufferTmp[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
- Word32 imagBufferTmp[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
- Word16 LSF_Q_prediction; /* o : LSF prediction mode */
+ Word32 q_env_fx[20];
+ Word16 exc3_fx[L_FRAME16k];
+ Word16 syn1_tmp_fx[L_FRAME16k + 2], *syn1_fx;
+ Word32 *realBuffer_fx[CLDFB_NO_COL_MAX], *imagBuffer_fx[CLDFB_NO_COL_MAX];
+ Word32 realBufferTmp_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
+ Word32 imagBufferTmp_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
+ Word16 LSF_Q_prediction; /* LSF prediction mode */
Word16 avoid_lpc_burst_on_recovery;
- Word16 uc_two_stage_flag, dec;
- Word16 nb_bits, indice;
+ Word16 tmpF_fx;
+ Word16 uc_two_stage_flag;
Word16 tdm_lp_reuse_flag, tdm_low_rate_mode, tdm_Pitch_reuse_flag;
- MUSIC_POSTFILT_HANDLE hMusicPF;
- BPF_DEC_HANDLE hBPF;
- TD_BWE_DEC_HANDLE hBWE_TD;
- FD_BWE_DEC_HANDLE hBWE_FD;
- TCX_DEC_HANDLE hTcxDec;
+ Word16 *old_exc_s_fx; /* Start of last excitation frame */
+ Word16 *p_tdm_Pri_pitch_buf_fx;
+ Word16 tmp, exp, local_element_mode;
ivas_error error;
- (void) ( tdm_lspQ_PCh );
- (void) ( tdm_lsfQ_PCh );
- (void) ( use_cldfb_for_dft );
- (void) ( last_element_mode );
- (void) ( last_element_brate );
- (void) ( flag_sec_CNA );
- (void) ( nchan_out );
- (void) ( save_hb_synth );
- (void) ( output );
- (void) ( read_sid_info );
- (void) hStereoCng;
- hMusicPF = st_fx->hMusicPF;
- hBPF = st_fx->hBPF;
- hBWE_TD = st_fx->hBWE_TD;
- hBWE_FD = st_fx->hBWE_FD;
- hTcxDec = st_fx->hTcxDec;
+ Word32 bpf_error_signal_fx[L_FRAME16k];
+ Word16 bpf_error_signal_16fx[L_FRAME16k];
+ Word16 Q_real;
+ Word32 max_real, max_imag, max_val;
+
+ set32_fx( bpf_error_signal_fx, 0, L_FRAME16k );
+ set16_fx( bpf_error_signal_16fx, 0, L_FRAME16k );
+ set16_fx( Aq_fx, 0, NB_SUBFR16k * ( M + 1 ) );
+ set16_fx( old_bwe_exc_fx, 0, ( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 ) );
+
error = IVAS_ERR_OK;
move32();
- // IF ( EQ_16(st_fx->element_mode, IVAS_CPE_MDCT) && EQ_16(nchan_out, 1) && EQ_16(st_fx->idchan, 1) && LE_32(last_element_brate, IVAS_SID_4k4) )
+
test();
test();
test();
- IF( EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) && EQ_16( nchan_out, 1 ) && EQ_16( st_fx->idchan, 1 ) && LE_32( last_element_brate, IVAS_SID_5k2 ) )
+ IF( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && EQ_16( nchan_out, 1 ) && EQ_16( st->idchan, 1 ) && LE_32( last_element_brate, IVAS_SID_5k2 ) )
{
/* In MDCT-Stereo DTX with mono output, we can skip CNG for the second channel, except for the first inactive frame following an active period */
return error;
}
+ push_wmops( "acelp_core_dec" );
+
+ /* output_frame = (int16_t) ( st->output_Fs / FRAMES_PER_SEC ); */
+ output_frame = extract_l( Mpy_32_32( st->output_Fs, ONE_BY_FRAMES_PER_SEC_Q31 ) );
+
+ /*----------------------------------------------------------------*
+ * stereo SID and CNG frames processing
+ *----------------------------------------------------------------*/
+
+ test();
+ test();
+ IF( LE_32( st->core_brate, SID_2k40 ) && EQ_16( st->element_mode, IVAS_CPE_DFT ) && EQ_16( nchan_out, 2 ) )
+ {
+ IF( EQ_16( st->cng_type, FD_CNG ) )
+ {
+ configureFdCngDec_fx( st->hFdCngDec, st->bwidth, ACELP_14k25, st->L_frame, st->last_L_frame, st->element_mode );
+
+ Word16 old_NoiseEstExp;
+ old_NoiseEstExp = st->hFdCngDec->hFdCngCom->sidNoiseEstExp;
+ move16();
+
+ /* Only run parameter decoding in SID frames */
+ IF( EQ_32( st->core_brate, SID_2k40 ) )
+ {
+ FdCng_decodeSID_ivas_fx( st );
+
+ Word16 n1, n2;
+ n1 = L_norm_arr( st->hFdCngDec->hFdCngCom->sidNoiseEst, NPART );
+ n2 = L_norm_arr( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART );
+
+ Word16 common_e = s_max( sub( old_NoiseEstExp, n2 ), sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, n1 ) );
+ scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEst, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, common_e ) );
+ scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, sub( old_NoiseEstExp, common_e ) );
+ st->hFdCngDec->hFdCngCom->sidNoiseEstExp = common_e;
+ move16();
+ }
+
+ FOR( i = 0; i < NPART; i++ )
+ {
+ st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] = Madd_32_32( Mpy_32_32( STEREO_DFT_FD_FILT_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] ),
+ STEREO_DFT_FD_FILT_COMP_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEst[i] );
+ move32();
+ }
+
+ ApplyFdCng_fx( NULL, 0, NULL, 0, NULL, NULL, NULL, st, 0, 0 );
+ }
+ ELSE
+ {
+ configureFdCngDec_fx( st->hFdCngDec, st->bwidth, ACELP_14k25, st->L_frame, st->last_L_frame, st->element_mode );
+
+ /* decode CNG parameters */
+ CNG_dec_fx( st, last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, sid_bw, q_env_fx );
+
+ /* comfort noise generation */
+ CNG_exc_fx( st->core_brate, st->L_frame, &st->hTdCngDec->Enew_fx, &st->hTdCngDec->cng_seed, NULL, NULL, &st->lp_ener_fx, st->last_core_brate, &st->first_CNG, &( st->hTdCngDec->cng_ener_seed ), NULL, allow_cn_step, &st->hTdCngDec->last_allow_cn_step, st->prev_Q_exc, st->Q_exc, st->hTdCngDec->num_ho, q_env_fx, st->hTdCngDec->lp_env_fx, st->hTdCngDec->old_env_fx, st->hTdCngDec->exc_mem_fx, st->hTdCngDec->exc_mem1_fx, sid_bw, &st->hTdCngDec->cng_ener_seed1, NULL, st->Opt_AMR_WB, st->element_mode );
+
+ Copy( Aq_fx, st->Aq_cng, M + 1 ); /*Q12*/
+
+ /* update old LSP and LSF vector */
+ Copy( lsf_new_fx, st->lsf_old_fx, M ); /*Qlog2(2.56)*/
+ Copy( lsp_new_fx, st->lsp_old_fx, M ); /*Q15*/
+ }
+
+ set16_fx( output_fx, 0, output_frame ); /* output and synth are not used in DFT domain CNG generation and the decoder output is unaffected if they are left uninitalized */
+ set16_fx( synth_fx16, 0, output_frame ); /* They are however read in a few places which causes errors in the valgrind tests. Simplest solution from a code perspective was to set them to zero. */
+
+ /* CN generation done in DFT domain */
+ pop_wmops();
+
+ return error;
+ }
+
+ /*----------------------------------------------------------------*
+ * Active frames processing
+ *----------------------------------------------------------------*/
+
+ /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */
FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
{
- set32_fx( realBufferTmp[i], 0, CLDFB_NO_CHANNELS_MAX );
- set32_fx( imagBufferTmp[i], 0, CLDFB_NO_CHANNELS_MAX );
- realBuffer[i] = realBufferTmp[i];
- move32();
- imagBuffer[i] = imagBufferTmp[i];
- move32();
+ set32_fx( realBufferTmp_fx[i], 0, CLDFB_NO_CHANNELS_MAX );
+ set32_fx( imagBufferTmp_fx[i], 0, CLDFB_NO_CHANNELS_MAX );
+ realBuffer_fx[i] = realBufferTmp_fx[i];
+ imagBuffer_fx[i] = imagBufferTmp_fx[i];
}
/*----------------------------------------------------------------*
@@ -157,54 +236,61 @@ ivas_error acelp_core_dec_fx(
LSF_Q_prediction = -1;
move16();
- set16_fx( syn_fx_tmp, 0, L_SUBFR );
- syn_fx = syn_fx_tmp + L_SUBFR;
- syn1_fx_tmp[0] = 0;
+ set16_fx( syn_tmp_fx, 0, L_SUBFR );
+ psyn_fx = syn_tmp_fx + L_SUBFR;
+ syn1_tmp_fx[0] = 0;
move16();
- syn1_fx_tmp[1] = 0;
+ syn1_tmp_fx[1] = 0;
move16();
- syn1_fx = syn1_fx_tmp + 2;
- /*output_frame = (Word16)(st_fx->output_Fs_fx / 50); move16();*/
- output_frame = st_fx->output_frame_fx;
- move16();
- st_fx->bpf_off = 0;
+ syn1_fx = syn1_tmp_fx + 2;
+ st->bpf_off = 0;
move16();
+
test();
test();
test();
test();
test();
test();
- IF( EQ_16( st_fx->last_core, HQ_CORE ) || EQ_16( st_fx->last_core, TCX_20_CORE ) || EQ_16( st_fx->last_core, TCX_10_CORE ) || ( EQ_16( st_fx->element_mode, IVAS_CPE_DFT ) && LE_32( st_fx->last_core_brate, SID_2k40 ) ) || ( EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) && LE_32( st_fx->last_core_brate, SID_2k40 ) ) )
+ IF( EQ_16( st->last_core, HQ_CORE ) || EQ_16( st->last_core, TCX_20_CORE ) || EQ_16( st->last_core, TCX_10_CORE ) || ( EQ_16( st->element_mode, IVAS_CPE_DFT ) && LE_32( st->last_core_brate, SID_2k40 ) ) || ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && LE_32( st->last_core_brate, SID_2k40 ) ) )
{
/* in case of HQ->ACELP switching, do not apply BPF */
- st_fx->bpf_off = 1;
+ st->bpf_off = 1;
move16();
- /* in case of core switching, reset post-filter memories */
- if ( st_fx->hPFstat != NULL )
+ if ( st->hPFstat != NULL )
{
- st_fx->hPFstat->on = 0;
+ /* in case of core switching, reset post-filter memories */
+ st->hPFstat->on = 0;
move16();
}
- /* reset the GSC pre echo energy threshold in case of switching */
- if ( st_fx->hGSCDec != NULL )
+ if ( st->hGSCDec != NULL )
{
- st_fx->hGSCDec->Last_frame_ener_fx = MAX_32;
+ /* reset the GSC pre echo energy threshold in case of switching */
+ st->hGSCDec->Last_frame_ener_fx = MAX_32;
move32();
}
}
- IF( st_fx->prev_bfi > 0 )
+
+ test();
+ if ( st->hGSCDec != NULL && ( st->prev_bfi > 0 ) )
{
/* reset the GSC pre echo energy threshold in case of FEC */
- if ( st_fx->hGSCDec != NULL )
- {
- st_fx->hGSCDec->Last_frame_ener_fx = MAX_32;
- move32();
- }
+ st->hGSCDec->Last_frame_ener_fx = MAX_32;
+ move32();
+ }
+
+ test();
+ test();
+ test();
+ test();
+ IF( st->hFdCngDec != NULL && ( EQ_16( st->element_mode, IVAS_CPE_DFT ) || EQ_16( st->element_mode, IVAS_CPE_TD ) ) && ( EQ_32( st->last_core_brate, SID_2k40 ) || st->last_core_brate == FRAME_NO_DATA ) )
+ {
+ set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, FFTLEN );
+ set16_fx( hStereoCng->olapBufferSynth22_fx, 0, FFTLEN );
}
- st_fx->clas_dec = st_fx->last_good;
+ st->clas_dec = st->last_good;
move16();
enr_q_fx = 0;
move32();
@@ -212,21 +298,22 @@ ivas_error acelp_core_dec_fx(
move16();
tmp_noise_fx = 0;
move16();
- Copy( st_fx->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); // Q_exc
+ Copy( st->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); /*Q_exc*/
exc_fx = old_exc_fx + L_EXC_MEM_DEC;
- IF( st_fx->hWIDec != NULL )
+ IF( st->hWIDec != NULL )
{
- Copy( st_fx->hWIDec->old_exc2_fx, old_exc2_fx, L_EXC_MEM );
+ Copy( st->hWIDec->old_exc2_fx, old_exc2_fx, L_EXC_MEM );
}
ELSE
{
set16_fx( old_exc2_fx, 0, L_EXC_MEM );
}
exc2_fx = old_exc2_fx + L_EXC_MEM;
- IF( st_fx->hBWE_TD != NULL )
+
+ IF( st->hBWE_TD != NULL )
{
- Copy( hBWE_TD->old_bwe_exc_fx, old_bwe_exc_fx, PIT16k_MAX * 2 ); // Q_exc
+ Copy( st->hBWE_TD->old_bwe_exc_fx, old_bwe_exc_fx, PIT16k_MAX * 2 ); /*Q_exc*/
bwe_exc_fx = old_bwe_exc_fx + PIT16k_MAX * 2;
}
ELSE
@@ -236,271 +323,270 @@ ivas_error acelp_core_dec_fx(
last_pulse_pos = 0;
move16();
- do_WI_fx = 0;
+ do_WI = 0;
move16();
- st_fx->GSC_noisy_speech = 0;
+ st->GSC_noisy_speech = 0;
move16();
- st_fx->relax_prev_lsf_interp = 0;
+ st->relax_prev_lsf_interp = 0;
move16();
+ set16_fx( gain_buf_fx, 0, NB_SUBFR16k );
- set16_fx( gain_buf, 0, NB_SUBFR16k );
- IF( EQ_16( st_fx->L_frame, L_FRAME ) )
+ IF( EQ_16( st->L_frame, L_FRAME ) )
{
- st_fx->gamma = GAMMA1;
+ st->gamma = GAMMA1;
move16();
- st_fx->preemph_fac = PREEMPH_FAC;
+ st->inv_gamma = GAMMA1_INV;
move16();
- int_fs = INT_FS_FX;
+ st->preemph_fac = PREEMPH_FAC;
+ move16();
+ int_fs = INT_FS_12k8;
move16();
}
ELSE
{
- st_fx->gamma = GAMMA16k;
+ st->gamma = GAMMA16k;
+ move16();
+ st->inv_gamma = GAMMA16k_INV;
move16();
- st_fx->preemph_fac = PREEMPH_FAC_16k;
+ st->preemph_fac = PREEMPH_FAC_16k;
move16();
int_fs = INT_FS_16k;
move16();
}
- /* reset post-filter in case post-filtering was off in previous frame */
- IF( st_fx->hPFstat != NULL )
+ test();
+ /* reset post-filter in case of switching */
+ if ( st->hPFstat != NULL && ( st->hPFstat->on == 0 ) )
{
- if ( st_fx->hPFstat->on == 0 )
- {
- st_fx->hPFstat->reset = 1;
- move16();
- }
+ st->hPFstat->reset = 1;
+ move16();
}
+
avoid_lpc_burst_on_recovery = 0;
move16();
test();
test();
- if ( st_fx->last_con_tcx && NE_16( st_fx->L_frameTCX_past, st_fx->L_frame ) && st_fx->last_core != 0 )
+ if ( st->last_con_tcx && NE_16( st->L_frameTCX_past, st->L_frame ) && ( st->last_core != 0 ) )
{
avoid_lpc_burst_on_recovery = 1;
move16();
}
- /* TD stereo parameters */
test();
- IF( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && st_fx->idchan == 1 )
+
+ /* TD stereo parameters */
+ IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( st->idchan, 1 ) )
{
tdm_lp_reuse_flag = hStereoTD->tdm_lp_reuse_flag;
- tdm_low_rate_mode = hStereoTD->tdm_low_rate_mode;
- tdm_Pitch_reuse_flag = hStereoTD->tdm_Pitch_reuse_flag;
- move16();
move16();
+ tdm_low_rate_mode = hStereoTD->tdm_low_rate_mode;
move16();
+ tdm_Pitch_reuse_flag = hStereoTD->tdm_Pitch_reuse_flag;
move16();
+ p_tdm_Pri_pitch_buf_fx = hStereoTD->tdm_Pri_pitch_buf_fx;
}
ELSE
{
tdm_lp_reuse_flag = 0;
- tdm_low_rate_mode = 0;
move16();
+ tdm_low_rate_mode = 0;
move16();
test();
- if ( EQ_16( st_fx->element_mode, IVAS_SCE ) && st_fx->low_rate_mode )
+ if ( EQ_16( st->element_mode, IVAS_SCE ) && st->low_rate_mode )
{
tdm_low_rate_mode = 1;
move16();
}
tdm_Pitch_reuse_flag = 0;
move16();
+ p_tdm_Pri_pitch_buf_fx = NULL;
}
+
/*----------------------------------------------------------------*
* Updates in case of internal sampling rate switching
*----------------------------------------------------------------*/
+
test();
test();
- IF( NE_16( st_fx->last_L_frame, st_fx->L_frame ) && ( st_fx->last_core == ACELP_CORE || EQ_16( st_fx->last_core, AMR_WB_CORE ) ) )
+ IF( NE_16( st->last_L_frame, st->L_frame ) && ( st->last_core == ACELP_CORE || EQ_16( st->last_core, AMR_WB_CORE ) ) )
{
- IF( st_fx->hPFstat->on != 0 )
+ Word16 dec;
+
+ IF( ( st->hPFstat->on != 0 ) )
{
Word16 mem_syn_r_size_old, mem_syn_r_size_new;
-
- mem_syn_r_size_old = shr( st_fx->last_L_frame, 4 );
- mem_syn_r_size_new = shr( st_fx->L_frame, 4 );
- lerp( st_fx->hPFstat->mem_stp + L_SYN_MEM - mem_syn_r_size_old, st_fx->hPFstat->mem_stp + L_SYN_MEM - mem_syn_r_size_new, mem_syn_r_size_new, mem_syn_r_size_old );
- lerp( st_fx->hPFstat->mem_pf_in + L_SYN_MEM - mem_syn_r_size_old, st_fx->hPFstat->mem_pf_in + L_SYN_MEM - mem_syn_r_size_new, mem_syn_r_size_new, mem_syn_r_size_old );
+ mem_syn_r_size_old = mult_r( 2048, st->last_L_frame ); /* 1.25/20.f = 2048 (Q15)*/
+ mem_syn_r_size_new = mult_r( 2048, st->L_frame ); /* 1.25/20.f = 2048 (Q15)*/
+ lerp( st->hPFstat->mem_stp + sub( L_SYN_MEM, mem_syn_r_size_old ), st->hPFstat->mem_stp + sub( L_SYN_MEM, mem_syn_r_size_new ), mem_syn_r_size_new, mem_syn_r_size_old );
+ lerp( st->hPFstat->mem_pf_in + sub( L_SYN_MEM, mem_syn_r_size_old ), st->hPFstat->mem_pf_in + sub( L_SYN_MEM, mem_syn_r_size_new ), mem_syn_r_size_new, mem_syn_r_size_old );
}
+
/* convert quantized LSP vector */
- st_fx->rate_switching_reset = lsp_convert_poly_fx( st_fx->lsp_old_fx, st_fx->L_frame, 0 );
+ st->rate_switching_reset = lsp_convert_poly_fx( st->lsp_old_fx, st->L_frame, 0 );
move16();
+
/* convert old quantized LSF vector */
- lsp2lsf_fx( st_fx->lsp_old_fx, st_fx->lsf_old_fx, M, int_fs );
+ lsp2lsf_fx( st->lsp_old_fx, st->lsf_old_fx, M, int_fs );
/* FEC - update adaptive LSF mean vector */
- Copy( st_fx->lsf_old_fx, st_fx->lsfoldbfi1_fx, M ); // Qlog2(2.56)
- Copy( st_fx->lsf_old_fx, st_fx->lsfoldbfi0_fx, M ); // Qlog2(2.56)
- Copy( st_fx->lsf_old_fx, st_fx->lsf_adaptive_mean_fx, M ); // Qlog2(2.56)
+ Copy( st->lsf_old_fx, st->lsfoldbfi1_fx, M ); /*Qlog2(2.56)*/
+ Copy( st->lsf_old_fx, st->lsfoldbfi0_fx, M ); /*Qlog2(2.56)*/
+ Copy( st->lsf_old_fx, st->lsf_adaptive_mean_fx, M ); /*Qlog2(2.56)*/
/* Reset LPC mem */
- IF( EQ_32( st_fx->sr_core, INT_FS_16k ) )
+ IF( EQ_32( st->sr_core, INT_FS_16k ) )
{
- Copy( GEWB2_Ave_fx, st_fx->mem_AR_fx, M ); // Qlog2(2.56)
+ Copy( GEWB2_Ave_fx, st->mem_AR_fx, M ); /*Qlog2(2.56)*/
}
ELSE
{
- Copy( GEWB_Ave_fx, st_fx->mem_AR_fx, M ); // Qlog2(2.56)
+ Copy( GEWB_Ave_fx, st->mem_AR_fx, M ); /*Qlog2(2.56)*/
}
- set16_fx( st_fx->mem_MA_fx, 0, M );
+ set16_fx( st->mem_MA_fx, 0, M );
+ /* update synthesis filter memories */
dec = DEC;
move16();
- IF( NE_16( st_fx->element_mode, EVS_MONO ) )
+ if ( st->element_mode != EVS_MONO )
{
dec = DEC_IVAS;
move16();
}
-
- /* update synthesis filter memories */
- synth_mem_updt2( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, dec );
-
- Copy( st_fx->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); // Q_exc
- Copy_Scale_sig( st_fx->mem_syn2_fx, st_fx->mem_syn1_fx, M, sub( -1, st_fx->Q_syn ) ); /*Q-1*/
-
- Copy( st_fx->mem_syn2_fx, st_fx->mem_syn3_fx, M );
+ ivas_synth_mem_updt2_fx( st->L_frame, st->last_L_frame, st->old_exc_fx, st->mem_syn_r, st->mem_syn2_fx, NULL, dec );
+ Copy( st->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); /*Q_exc*/
+ Copy_Scale_sig( st->mem_syn2_fx, st->mem_syn1_fx, M, sub( -1, st->Q_syn ) ); /*Q-1*/
+ Copy( st->mem_syn2_fx, st->mem_syn3_fx, M ); /*Q_syn*/
}
- IF( NE_16( st_fx->last_L_frame, st_fx->L_frame ) )
+ /* update buffer of old subframe pitch values */
+ IF( NE_16( st->last_L_frame, st->L_frame ) )
{
- /* update buffer of old subframe pitch values */
- IF( EQ_16( st_fx->L_frame, L_FRAME ) )
+ IF( EQ_16( st->L_frame, L_FRAME ) )
{
-
- IF( EQ_16( st_fx->last_L_frame, L_FRAME32k ) )
+ IF( EQ_16( st->last_L_frame, L_FRAME32k ) )
{
- /* (float)12800/(float)32000; */
- k = 13107; // Q15
+ tmpF_fx = 13107; // Q15
move16();
}
- ELSE IF( EQ_16( st_fx->last_L_frame, 512 ) )
+ ELSE IF( EQ_16( st->last_L_frame, 512 ) )
{
- /* (float)12800/(float)25600; */
- k = 16384; // Q15
+ tmpF_fx = 16384; // Q15
move16();
}
ELSE /* st->last_L_frame == L_FRAME16k */
{
- /* (float)12800/(float)16000; */
- k = 26214; // Q15
+ tmpF_fx = 26214; // Q15
move16();
}
FOR( i = NB_SUBFR16k - NB_SUBFR; i < NB_SUBFR16k; i++ )
{
- st_fx->old_pitch_buf_fx[i - 1] = Mpy_32_16_1( st_fx->old_pitch_buf_fx[i], k ); // Q(15+15+1-16)
+ st->old_pitch_buf_fx[i - 1] = Mpy_32_16_1( st->old_pitch_buf_fx[i], tmpF_fx ); // Q16
move32();
}
FOR( i = 2 * NB_SUBFR16k - NB_SUBFR; i < 2 * NB_SUBFR16k; i++ )
{
- st_fx->old_pitch_buf_fx[i - 2] = Mpy_32_16_1( st_fx->old_pitch_buf_fx[i], k ); // Q15
+ st->old_pitch_buf_fx[i - 2] = Mpy_32_16_1( st->old_pitch_buf_fx[i], tmpF_fx ); // Q16
move32();
}
}
ELSE
{
-
- IF( EQ_16( st_fx->last_L_frame, L_FRAME32k ) )
+ exp = 0;
+ move16();
+ IF( EQ_16( st->last_L_frame, L_FRAME32k ) )
{
- /* (float)16000/(float)32000; */
- k = -16384; // -0.5 in Q15
+ tmpF_fx = 16384; // Q15
move16();
}
- ELSE IF( EQ_16( st_fx->last_L_frame, 512 ) )
+ ELSE IF( EQ_16( st->last_L_frame, 512 ) )
{
- /* tmpF = (float)16000/(float)25600; */
- k = -12288; //-0.375 in Q15
+ tmpF_fx = 20480; // Q15
move16();
}
ELSE /* st->last_L_frame == L_FRAME12k8 */
{
- /* tmpF = (float)16000/(float)12800; */
- k = 8192; //.25 in Q15
+ tmpF_fx = 20480; // Q14
+ move16();
+ exp = 1;
move16();
}
-
FOR( i = 2 * NB_SUBFR - 1; i >= NB_SUBFR; i-- )
{
- st_fx->old_pitch_buf_fx[i + 2] = L_add( st_fx->old_pitch_buf_fx[i], Mpy_32_16_1( st_fx->old_pitch_buf_fx[i], k ) ); // Q15
+ st->old_pitch_buf_fx[i + 2] = Mpy_32_16_1( L_shl( st->old_pitch_buf_fx[i], exp ), tmpF_fx ); // Q15
move32();
}
- st_fx->old_pitch_buf_fx[NB_SUBFR + 1] = st_fx->old_pitch_buf_fx[NB_SUBFR + 2];
+ st->old_pitch_buf_fx[NB_SUBFR + 1] = st->old_pitch_buf_fx[NB_SUBFR + 2];
move32();
FOR( i = NB_SUBFR - 1; i >= 0; i-- )
{
- st_fx->old_pitch_buf_fx[i + 1] = L_add( st_fx->old_pitch_buf_fx[i], Mpy_32_16_1( st_fx->old_pitch_buf_fx[i], k ) ); // Q15
+ st->old_pitch_buf_fx[i + 1] = Mpy_32_16_1( L_shl( st->old_pitch_buf_fx[i], exp ), tmpF_fx ); // Q15
move32();
}
- st_fx->old_pitch_buf_fx[0] = st_fx->old_pitch_buf_fx[1];
+ st->old_pitch_buf_fx[0] = st->old_pitch_buf_fx[1];
move32();
}
}
- IF( NE_16( st_fx->bfi_pitch_frame, st_fx->L_frame ) )
+ IF( NE_16( st->bfi_pitch_frame, st->L_frame ) )
{
- IF( EQ_16( st_fx->L_frame, L_FRAME ) )
+ IF( EQ_16( st->L_frame, L_FRAME ) )
{
-
- IF( EQ_16( st_fx->bfi_pitch_frame, L_FRAME32k ) )
+ IF( EQ_16( st->bfi_pitch_frame, L_FRAME32k ) )
{
- /* (float)12800/(float)32000; */
- k = 13107; // Q15
+ tmpF_fx = 13107; // Q15
move16();
}
- ELSE IF( EQ_16( st_fx->bfi_pitch_frame, 512 ) )
+ ELSE IF( EQ_16( st->bfi_pitch_frame, 512 ) )
{
- /* (float)12800/(float)25600; */
- k = 16384; // Q15
+ tmpF_fx = 16384; // Q15
move16();
}
ELSE /* st->bfi_pitch_frame == L_FRAME16k */
{
- /* (float)12800/(float)16000; */
- k = 26214; // Q15
+ tmpF_fx = 26214; // Q15
move16();
}
- st_fx->bfi_pitch_fx = mult_r( k, st_fx->bfi_pitch_fx );
+ st->bfi_pitch_fx = mult_r( st->bfi_pitch_fx, tmpF_fx );
move16();
- st_fx->bfi_pitch_frame = L_FRAME;
+ st->bfi_pitch_frame = L_FRAME;
move16();
}
ELSE
{
-
- IF( EQ_16( st_fx->bfi_pitch_frame, L_FRAME32k ) )
+ exp = 0;
+ move16();
+ IF( EQ_16( st->bfi_pitch_frame, L_FRAME32k ) )
{
- /* (float)16000/(float)32000; */
- k = -16384; //-0.5 in Q15
+ tmpF_fx = 16384; // Q15
move16();
}
- ELSE IF( EQ_16( st_fx->bfi_pitch_frame, 512 ) )
+ ELSE IF( EQ_16( st->bfi_pitch_frame, 512 ) )
{
- /* tmpF = (float)16000/(float)25600; */
- k = -12288; // -0.375 in Q15
+ tmpF_fx = 20480; // Q15
move16();
}
ELSE /* st->bfi_pitch_frame == L_FRAME12k8 */
{
- /* tmpF = (float)16000/(float)12800; */
- k = 8192; // .25 in Q15
+ tmpF_fx = 20480; // Q14
+ move16();
+ exp = 1;
move16();
}
- st_fx->bfi_pitch_fx = add( st_fx->bfi_pitch_fx, mult_r( st_fx->bfi_pitch_fx, k ) );
+
+ st->bfi_pitch_fx = mult_r( shl_sat( st->bfi_pitch_fx, exp ), tmpF_fx );
move16();
- st_fx->bfi_pitch_frame = L_FRAME16k;
+ st->bfi_pitch_frame = L_FRAME16k;
move16();
}
}
test();
test();
- if ( EQ_16( st_fx->last_bwidth, NB ) && NE_16( st_fx->bwidth, NB ) && st_fx->ini_frame != 0 )
+ if ( EQ_16( st->last_bwidth, NB ) && NE_16( st->bwidth, NB ) && ( st->ini_frame != 0 ) )
{
- st_fx->rate_switching_reset = 1;
+ st->rate_switching_reset = 1;
move16();
}
@@ -508,36 +594,35 @@ ivas_error acelp_core_dec_fx(
* GOOD frame
*----------------------------------------------------------------------*/
- IF( !st_fx->bfi )
+ IF( !st->bfi )
{
/*----------------------------------------------------------------*
* Decoding of TC subframe classification
*----------------------------------------------------------------*/
- tc_subfr_fx = -1;
+ tc_subfr = -1;
move16();
- IF( EQ_16( st_fx->coder_type, TRANSITION ) )
+ IF( EQ_16( st->coder_type, TRANSITION ) )
{
- tc_subfr_fx = tc_classif_fx( st_fx, st_fx->L_frame );
+ tc_subfr = tc_classif_fx( st, st->L_frame );
}
/*----------------------------------------------------------------*
* Decoding of GSC IVAS mode
*----------------------------------------------------------------*/
- st_fx->GSC_IVAS_mode = 0;
- move16();
+
test();
test();
test();
test();
- IF( ( st_fx->element_mode > EVS_MONO ) && st_fx->idchan == 0 && !( ( st_fx->core_brate == FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) && !tdm_low_rate_mode )
+ IF( st->element_mode > EVS_MONO && st->idchan == 0 && !( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) ) && !tdm_low_rate_mode )
{
test();
test();
- IF( EQ_16( st_fx->coder_type, AUDIO ) || ( ( st_fx->coder_type == INACTIVE ) && LE_32( st_fx->total_brate, MAX_GSC_INACTIVE_BRATE ) ) )
+ IF( EQ_16( st->coder_type, AUDIO ) || ( EQ_16( st->coder_type, INACTIVE ) && EQ_16( st->inactive_coder_type_flag, 1 ) ) )
{
- st_fx->GSC_IVAS_mode = get_next_indice( st_fx, 2 );
+ st->GSC_IVAS_mode = get_next_indice_fx( st, 2 );
move16();
}
}
@@ -545,88 +630,215 @@ ivas_error acelp_core_dec_fx(
/*----------------------------------------------------------------*
* Decoding of inactive CNG frames
*----------------------------------------------------------------*/
+
test();
- IF( st_fx->core_brate == FRAME_NO_DATA || EQ_32( st_fx->core_brate, SID_2k40 ) )
+ IF( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) )
{
/* decode CNG parameters */
- IF( st_fx->cng_type == LP_CNG )
+ IF( st->cng_type == LP_CNG )
{
-
- CNG_dec_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step_fx, sid_bw, q_env );
+ CNG_dec_fx( st, last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, sid_bw, q_env_fx );
+ Copy( Aq_fx, st->Aq_cng, add( M, 1 ) );
/* comfort noise generation */
- CNG_exc_fx( st_fx->core_brate, st_fx->L_frame, &st_fx->hTdCngDec->Enew_fx, &st_fx->hTdCngDec->cng_seed, exc_fx, exc2_fx, &st_fx->lp_ener_fx, st_fx->last_core_brate,
- &st_fx->first_CNG, &( st_fx->hTdCngDec->cng_ener_seed ), bwe_exc_fx, allow_cn_step_fx, &st_fx->hTdCngDec->last_allow_cn_step, st_fx->prev_Q_exc, st_fx->Q_exc, st_fx->hTdCngDec->num_ho,
- q_env, st_fx->hTdCngDec->lp_env_fx, st_fx->hTdCngDec->old_env_fx, st_fx->hTdCngDec->exc_mem_fx, st_fx->hTdCngDec->exc_mem1_fx, sid_bw, &st_fx->hTdCngDec->cng_ener_seed1, exc3_fx, st_fx->Opt_AMR_WB, st_fx->element_mode );
+ local_element_mode = st->element_mode;
+ move16();
- Copy( Aq_fx, st_fx->Aq_cng, M + 1 ); // Q12
+ test();
+ test();
+ if ( ( EQ_16( nchan_out, 1 ) && EQ_16( st->element_mode, IVAS_CPE_DFT ) ) || EQ_16( st->masa_sid_format, 1 ) )
+ {
+ local_element_mode = IVAS_SCE; /* For DFT Stereo mono decoding, run CNG_exc as in SCE */
+ move16();
+ }
+ CNG_exc_fx( st->core_brate, st->L_frame, &st->hTdCngDec->Enew_fx, &st->hTdCngDec->cng_seed, exc_fx, exc2_fx, &st->lp_ener_fx, st->last_core_brate, &st->first_CNG, &( st->hTdCngDec->cng_ener_seed ), bwe_exc_fx, allow_cn_step, &st->hTdCngDec->last_allow_cn_step, st->prev_Q_exc, st->Q_exc, st->hTdCngDec->num_ho, q_env_fx, st->hTdCngDec->lp_env_fx, st->hTdCngDec->old_env_fx, st->hTdCngDec->exc_mem_fx, st->hTdCngDec->exc_mem1_fx, sid_bw, &st->hTdCngDec->cng_ener_seed1, exc3_fx, st->Opt_AMR_WB, local_element_mode );
}
ELSE
{
test();
- IF( EQ_32( st_fx->core_brate, SID_2k40 ) && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) )
+ IF( EQ_32( st->core_brate, SID_2k40 ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) )
{
- FdCng_decodeSID_fx( st_fx->hFdCngDec->hFdCngCom, st_fx );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ FdCng_decodeSID_fx( st->hFdCngDec->hFdCngCom, st );
+ }
+ ELSE
+ {
+ Word16 old_NoiseEstExp = st->hFdCngDec->hFdCngCom->sidNoiseEstExp;
+ move16();
+
+ FdCng_decodeSID_ivas_fx( st );
+
+ Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, sub( old_NoiseEstExp, st->hFdCngDec->hFdCngCom->sidNoiseEstExp ) );
+ Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, sub( norm_s( st->hFdCngDec->hFdCngCom->A_cng[0] ), Q2 ) ); // Qx
+ }
+
*sid_bw = 0;
move16();
}
- generate_comfort_noise_dec_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 2, -1 );
+ IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) )
+ {
+ assert( nchan_out == 1 );
+
+ FOR( i = 0; i < NPART; i++ )
+ {
+ st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] = Madd_32_32( Mpy_32_32( STEREO_DFT_FD_FILT_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] ),
+ STEREO_DFT_FD_FILT_COMP_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEst[i] );
+ move32();
+ }
+
+ ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) );
+
+ Word16 new_sidNoiseEstExp = 31 - Q4;
+ move16();
+ Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, new_sidNoiseEstExp ) ); // Q(31-sidNoiseEstExp)
+ Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEst, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, new_sidNoiseEstExp ) ); // Q(31-sidNoiseEstExp)
+ st->hFdCngDec->hFdCngCom->sidNoiseEstExp = new_sidNoiseEstExp;
+ move16();
+ Word16 new_cngNoiseLevelExp = 31 - Q4;
+ move16();
+ Scale_sig32( st->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, sub( st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, new_cngNoiseLevelExp ) ); // Q(31-cngNoiseLevelExp)
+ st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = new_cngNoiseLevelExp;
+ move16();
+
+ test();
+ ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( EQ_16( st->coder_type, AUDIO ) && !st->GSC_noisy_speech ) );
+
+ IF( st->hFdCngDec->hFdCngCom->cngNoiseLevelExp < 0 )
+ {
+ Scale_sig32( st->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, st->hFdCngDec->hFdCngCom->cngNoiseLevelExp ); // Q(31-cngNoiseLevelExp)
+ st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = 0;
+ move16();
+ }
+ }
+
+ IF( !read_sid_info )
+ {
+ Word32 noise_lvl_highest_fx;
+
+ noise_lvl_highest_fx = st->hFdCngDec->hFdCngCom->cngNoiseLevel[( st->hFdCngDec->hFdCngCom->stopFFTbin - st->hFdCngDec->hFdCngCom->startBand ) - 1];
+ move32();
+
+ FOR( Word16 b = ( st->hFdCngDec->hFdCngCom->stopFFTbin - st->hFdCngDec->hFdCngCom->startBand ); b < st->hFdCngDec->hFdCngCom->stopBand; b++ )
+ {
+ st->hFdCngDec->hFdCngCom->cngNoiseLevel[b] = noise_lvl_highest_fx;
+ move32();
+ }
+ }
+
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ generate_comfort_noise_dec_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 2, -1 );
+ }
+ ELSE
+ {
+ generate_comfort_noise_dec_ivas_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 1, nchan_out );
+ }
- FdCng_exc( st_fx->hFdCngDec->hFdCngCom, &st_fx->CNG_mode, st_fx->L_frame, st_fx->lsp_old_fx, st_fx->first_CNG, st_fx->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx );
+ FdCng_exc( st->hFdCngDec->hFdCngCom, &st->CNG_mode, st->L_frame, st->lsp_old_fx, st->first_CNG, st->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx );
- Copy( exc2_fx, exc3_fx, st_fx->L_frame );
+ Copy( exc2_fx, exc3_fx, st->L_frame );
}
- delta_mem_scale = 3;
+ Word16 delta_mem_scale = 3;
move16();
test();
- if ( LT_32( st_fx->lp_ener_fx, 40 ) && ( st_fx->cng_type == LP_CNG ) ) /* very low energy frames, less than 0.3125 */
+ if ( LT_32( st->lp_ener_fx, 40 ) && st->cng_type == LP_CNG ) /* very low energy frames, less than 0.3125 */
{
delta_mem_scale = 0;
move16();
}
- i = st_fx->Q_exc;
+ i = st->Q_exc;
move16();
- Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame,
- st_fx->L_frame * HIBND_ACB_L_FAC, 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE );
- Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, delta_mem_scale,
- &st_fx->mem_deemph_fx, hBPF->pst_old_syn_fx, &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, 0, 0, NULL );
- Copy_Scale_sig( exc2_fx, exc2_fx, st_fx->L_frame, sub( st_fx->Q_exc, i ) ); // Q_exc
+
+ test();
+ IF( st->hMusicPF && st->hGSCDec )
+ {
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ // VE: TBV: should 'st_fx->L_frame * HIBND_ACB_L_FAC' be corrected in EVS?
+ Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame,
+ st->L_frame * HIBND_ACB_L_FAC, 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE );
+ }
+ ELSE
+ {
+ Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame,
+ L_FRAME32k, 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE );
+ }
+ }
+
+ IF( st->hPFstat != NULL )
+ {
+ Rescale_mem( st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn2_fx, st->mem_syn_clas_estim_fx, delta_mem_scale,
+ &st->mem_deemph_fx, st->hBPF->pst_old_syn_fx, &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, 0, 0, NULL );
+ }
+ ELSE
+ {
+ Rescale_mem( st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn2_fx, st->mem_syn_clas_estim_fx, delta_mem_scale,
+ &st->mem_deemph_fx, NULL, NULL, &st->agc_mem_fx[1], NULL, 0, 0, NULL );
+ }
+
+ Copy_Scale_sig( exc2_fx, exc2_fx, st->L_frame, sub( st->Q_exc, i ) ); // Q_exc
/* update past excitation signals for LD music post-filter */
- IF( hMusicPF != NULL )
+ IF( st->hMusicPF != NULL )
{
- Copy( hMusicPF->dct_post_old_exc_fx + L_FRAME, hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
- Copy( exc2_fx, hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
+ Copy( st->hMusicPF->dct_post_old_exc_fx + L_FRAME, st->hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
+ Copy( exc2_fx, st->hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
+
/* Update music post processing values */
/* Filter energies update */
- FOR( i = 0; i < DCT_L_POST; i++ )
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
{
- /*st_fx->filt_lfE_fx[i] = 0.3f + 0.7f * st_fx->filt_lfE_fx[i];*/
- hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) );
- move16();
+ FOR( i = 0; i < DCT_L_POST; i++ )
+ {
+ st->hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, st->hMusicPF->filt_lfE_fx[i] ) );
+ move16();
+ }
+ }
+ ELSE
+ {
+ FOR( i = 0; i < DCT_L_POST; i++ )
+ {
+ st->hMusicPF->filt_lfE_fx[i] = add( 9830, mult_r( 22937, st->hMusicPF->filt_lfE_fx[i] ) ); // Q15, 9830 =.3f in Q15, 22937=.7f in Q15
+ move16();
+ }
}
}
+
/* synthesis at 12.8kHz sampling rate */
- syn_12k8_fx( st_fx->L_frame, Aq_fx, exc2_fx, syn_fx, st_fx->mem_syn2_fx, 1, st_fx->Q_exc, st_fx->Q_syn );
- syn_12k8_fx( st_fx->L_frame, Aq_fx, exc3_fx, syn1_fx, st_fx->mem_syn3_fx, 1, st_fx->Q_exc, st_fx->Q_syn );
+ move16();
+ syn_12k8_fx( st->L_frame, Aq_fx, exc2_fx, psyn_fx, st->mem_syn2_fx, 1, st->Q_exc, st->Q_syn );
+ syn_12k8_fx( st->L_frame, Aq_fx, exc3_fx, syn1_fx, st->mem_syn3_fx, 1, st->Q_exc, st->Q_syn );
/* reset the decoder */
- CNG_reset_dec_fx( st_fx, pitch_buf_fx, voice_factors );
+ CNG_reset_dec_fx( st, pitch_buf_fx, voice_factors_fx );
+
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ /* update st_fx->mem_syn1 for ACELP core switching */
+ Copy( st->mem_syn3_fx, st->mem_syn1_fx, M );
+ }
+ ELSE
+ {
+ st->Q_syn_cng = st->Q_syn;
+ move16();
+ st->Q_exc_cng = st->Q_exc;
+ move16();
- /* update st_fx->mem_syn1 for ACELP core switching */
- Copy( st_fx->mem_syn3_fx, st_fx->mem_syn1_fx, M );
+ /* update st->mem_syn1 for ACELP core switching */
+ Copy_Scale_sig( st->mem_syn3_fx, st->mem_syn1_fx, M, sub( -1, st->Q_syn ) ); // Q(-1)
+ }
/* update old synthesis for classification */
- Copy( syn1_fx + st_fx->L_frame - L_SYN_MEM_CLAS_ESTIM, st_fx->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM );
-
+ Copy( syn1_fx + st->L_frame - L_SYN_MEM_CLAS_ESTIM, st->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM );
/* save and delay synthesis to be used by SWB BWE */
- Copy_Scale_sig( syn1_fx, temp_buf_fx, st_fx->L_frame, sub( -1, st_fx->Q_syn ) ); // Q_syn -> Q(-1)
- IF( hBWE_FD != NULL )
+ Copy_Scale_sig( syn1_fx, temp_buf_fx, st->L_frame, sub( -1, st->Q_syn ) ); // Q_syn -> Q(-1)
+ IF( st->hBWE_FD != NULL )
{
- save_old_syn_fx( st_fx->L_frame, temp_buf_fx, old_syn_12k8_16k, hBWE_FD->old_syn_12k8_16k_fx, st_fx->preemph_fac, &hBWE_FD->mem_deemph_old_syn_fx );
+ save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx );
}
}
@@ -636,21 +848,24 @@ ivas_error acelp_core_dec_fx(
ELSE
{
+
/*-----------------------------------------------------------------*
* Configure ACELP bit allocation
*-----------------------------------------------------------------*/
+
nb_bits = 0;
- st_fx->acelp_cfg.FEC_mode = 0;
- uc_two_stage_flag = 0;
move16();
+ st->acelp_cfg.FEC_mode = 0;
move16();
+ uc_two_stage_flag = 0;
move16();
+
test();
- IF( !st_fx->nelp_mode_dec && !st_fx->ppp_mode_dec )
+ IF( !st->nelp_mode_dec && !st->ppp_mode_dec )
{
Word16 tc_subfr_tmp;
- tc_subfr_tmp = tc_subfr_fx;
+ tc_subfr_tmp = tc_subfr;
move16();
if ( LT_16( tc_subfr_tmp, L_SUBFR ) )
{
@@ -658,19 +873,19 @@ ivas_error acelp_core_dec_fx(
move16();
}
- if ( EQ_16( tc_subfr_fx, TC_0_192 ) )
+ if ( EQ_16( tc_subfr, TC_0_192 ) )
{
nb_bits = -1;
move16();
}
- config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, tc_subfr_tmp, 1, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
+ config_acelp1_fx( DEC, st->total_brate, st->core_brate, st->core, st->extl_orig, st->extl_brate_orig, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), st->next_bit_pos, st->coder_type, st->inactive_coder_type_flag, tc_subfr_tmp, 1, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
test();
test();
- IF( EQ_16( st_fx->coder_type, TRANSITION ) && LT_16( tc_subfr_fx, L_SUBFR ) && EQ_16( st_fx->L_frame, L_FRAME ) )
+ IF( EQ_16( st->coder_type, TRANSITION ) && LT_16( tc_subfr, L_SUBFR ) && EQ_16( st->L_frame, L_FRAME ) )
{
- config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, TRANSITION, -1, tc_subfr_fx, 2, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
+ config_acelp1_fx( DEC, st->total_brate, st->core_brate, st->core, st->extl_orig, st->extl_brate_orig, st->L_frame, -1, &( st->acelp_cfg ), st->next_bit_pos, TRANSITION, -1, tc_subfr, 2, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
}
}
@@ -680,51 +895,126 @@ ivas_error acelp_core_dec_fx(
test();
test();
- IF( st_fx->hTdCngDec != NULL && ( st_fx->last_core_brate == FRAME_NO_DATA || EQ_32( st_fx->last_core_brate, SID_2k40 ) ) )
+ IF( st->hTdCngDec != NULL && ( st->last_core_brate == FRAME_NO_DATA || EQ_32( st->last_core_brate, SID_2k40 ) ) )
{
- Copy( st_fx->lspCNG_fx, st_fx->lsp_old_fx, M ); // Q15
-
- lsp2lsf_fx( st_fx->lspCNG_fx, st_fx->lsf_old_fx, M, int_fs );
+ Copy( st->lspCNG_fx, st->lsp_old_fx, M ); /*Q15*/
+ lsp2lsf_fx( st->lspCNG_fx, st->lsf_old_fx, M, int_fs );
}
/*-----------------------------------------------------------------*
* Reset higher ACELP pre-quantizer in case of switching
*-----------------------------------------------------------------*/
- IF( !st_fx->use_acelp_preq )
+ IF( !st->use_acelp_preq )
{
- st_fx->mem_preemp_preQ_fx = 0;
+ st->mem_preemp_preQ_fx = 0;
move16();
- st_fx->last_nq_preQ = 0;
+ st->last_nq_preQ = 0;
+ move16();
+ st->last_code_preq = 0;
move16();
}
- st_fx->use_acelp_preq = 0;
+ st->use_acelp_preq = 0;
move16();
/*-----------------------------------------------------------------*
* LSF de-quantization and interpolation
*-----------------------------------------------------------------*/
- lsf_dec_fx( st_fx, tc_subfr_fx, Aq_fx, &LSF_Q_prediction, lsf_new_fx, lsp_new_fx, lsp_mid_fx, tdm_low_rate_mode,
- tdm_lsfQ_PCh );
+ IF( !tdm_lp_reuse_flag )
+ {
+ lsf_dec_fx( st, tc_subfr, Aq_fx, &LSF_Q_prediction, lsf_new_fx, lsp_new_fx, lsp_mid_fx, tdm_low_rate_mode, tdm_lsfQ_PCh_fx );
+ }
+ ELSE
+ {
+ const Word16 *pt_interp_2_fx;
+
+ IF( NE_16( st->active_cnt, 1 ) )
+ {
+ Word16 beta_index;
+
+ beta_index = get_next_indice_fx( st, TDM_IC_LSF_PRED_BITS );
+ tdm_SCh_lsf_reuse_fx( DEC, st->element_brate, lsf_new_fx, lsp_new_fx, tdm_lsfQ_PCh_fx, NULL, &beta_index );
+ }
+ ELSE
+ {
+ Copy( tdm_lspQ_PCh_fx, lsp_new_fx, M );
+ Copy( tdm_lsfQ_PCh_fx, lsf_new_fx, M );
+ }
+
+ IF( st->rate_switching_reset )
+ {
+ /* extrapolation in case of unstable LSF convert */
+ Copy( lsp_new_fx, st->lsp_old_fx, M );
+ Copy( lsf_new_fx, st->lsf_old_fx, M );
+ }
+
+ pt_interp_2_fx = interpol_frac_fx;
+ test();
+ if ( EQ_16( tdm_low_rate_mode, 1 ) && GT_16( st->coder_type, UNVOICED ) )
+ {
+ pt_interp_2_fx = interpol_frac2_fx;
+ }
+
+ IF( EQ_16( st->active_cnt, 1 ) )
+ {
+ Copy( lsp_new_fx, st->lsp_old_fx, M );
+ lsp2lsf_fx( lsp_new_fx, st->lsf_old_fx, M, st->sr_core );
+ }
+
+ /* LSP interpolation and conversion of LSPs to A(z) */
+ int_lsp_fx( st->L_frame, st->lsp_old_fx, lsp_new_fx, Aq_fx, M, pt_interp_2_fx, 0 );
+
+ /* Check LSF stability (distance between old LSFs and current LSFs) */
+ st->stab_fac_fx = lsf_stab_ivas_fx( lsf_new_fx, st->lsf_old_fx, 0, st->L_frame );
+ move16();
+ }
+
+ test();
+ IF( EQ_16( st->last_core, HQ_CORE ) && st->element_mode > EVS_MONO )
+ {
+ /* Prepare ACB memory from last HQ frame */
+ old_exc_s_fx = st->old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame );
+ tmpF_fx = *old_exc_s_fx;
+ st->mem_deemph_fx = shl_sat( old_exc_s_fx[st->L_frame - 1], st->Q_syn ); /* Q0 -> Q_syn */
+ move16();
+ PREEMPH_FX( old_exc_s_fx, st->preemph_fac, L_FRAME16k, &tmpF_fx );
+ Copy( old_exc_s_fx + sub( st->L_frame, M ), st->mem_syn2_fx, M );
+ Scale_sig( st->mem_syn2_fx, M, st->Q_syn ); /* Q0 -> Q_syn */
+ Residu3_fx( Aq_fx, old_exc_s_fx, old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame ), st->L_frame, 0 );
+ Scale_sig( old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame ), st->L_frame, st->Q_exc ); /* Q0 -> Q_exc */
+ }
+
+ test();
+ IF( st->last_core != ACELP_CORE && st->element_mode > EVS_MONO )
+ {
+ /* Prepare ACB memory of old_bwe_exc */
+ IF( EQ_16( st->L_frame, L_FRAME ) )
+ {
+ lerp( old_exc_fx, old_bwe_exc_fx, L_EXC_MEM_DEC * HIBND_ACB_L_FAC, L_EXC_MEM_DEC );
+ }
+ ELSE
+ {
+ lerp( old_exc_fx, old_bwe_exc_fx, L_EXC_MEM_DEC << 1, L_EXC_MEM_DEC );
+ }
+ }
/*-----------------------------------------------------------------*
* FEC - first good frame after lost frame(s) (possibility to correct the ACB)
*-----------------------------------------------------------------*/
- IF( st_fx->acelp_cfg.FEC_mode > 0 )
+ IF( st->acelp_cfg.FEC_mode > 0 )
{
last_pulse_pos = 0;
move16();
/* decode the last glottal pulse position */
- T0_tmp = FEC_pos_dec_fx( st_fx, &last_pulse_pos, &enr_q_fx, nb_bits );
-
+ T0_tmp = FEC_pos_dec_fx( st, &last_pulse_pos, &enr_q_fx, nb_bits );
test();
test();
- IF( NE_16( st_fx->last_core, HQ_CORE ) || ( EQ_16( st_fx->last_core, HQ_CORE ) && st_fx->last_con_tcx ) )
+ IF( NE_16( st->last_core, HQ_CORE ) || ( EQ_16( st->last_core, HQ_CORE ) && st->last_con_tcx ) )
{
test();
test();
@@ -732,16 +1022,13 @@ ivas_error acelp_core_dec_fx(
test();
test();
test();
- test();
- IF( EQ_16( st_fx->clas_dec, SIN_ONSET ) && last_pulse_pos != 0 && EQ_16( st_fx->prev_bfi, 1 ) )
+ IF( EQ_16( st->clas_dec, SIN_ONSET ) && last_pulse_pos != 0 && EQ_16( st->prev_bfi, 1 ) )
{
- st_fx->Q_exc =
- FEC_SinOnset_fx( old_exc_fx + L_EXC_MEM_DEC - L_EXC_MEM, last_pulse_pos, T0_tmp, enr_q_fx, Aq_fx, st_fx->L_frame, st_fx->Q_exc );
- move16();
+ FEC_SinOnset_fx( old_exc_fx + L_EXC_MEM_DEC - L_EXC_MEM, last_pulse_pos, T0_tmp, enr_q_fx, Aq_fx, st->L_frame, st->Q_exc );
}
- ELSE IF( ( EQ_16( st_fx->coder_type, GENERIC ) || EQ_16( st_fx->coder_type, VOICED ) ) && last_pulse_pos != 0 && EQ_16( st_fx->old_bfi_cnt, 1 ) && EQ_16( output_frame, L_FRAME16k ) && st_fx->hWIDec != NULL )
+ ELSE IF( ( EQ_16( st->coder_type, GENERIC ) || EQ_16( st->coder_type, VOICED ) ) && last_pulse_pos != 0 && EQ_16( st->old_bfi_cnt, 1 ) && st->hWIDec != NULL )
{
- do_WI_fx = FEC_enhACB_fx( st_fx->L_frame, st_fx->last_L_frame, old_exc_fx + L_EXC_MEM_DEC - L_EXC_MEM, T0_tmp, last_pulse_pos, st_fx->bfi_pitch_fx );
+ do_WI = FEC_enhACB_fx( st->L_frame, st->last_L_frame, old_exc_fx + L_EXC_MEM_DEC - L_EXC_MEM, T0_tmp, last_pulse_pos, st->bfi_pitch_fx );
}
}
}
@@ -750,16 +1037,16 @@ ivas_error acelp_core_dec_fx(
* In case of first frame after an erasure and transition from voiced to unvoiced or inactive
* redo the LPC interpolation
*------------------------------------------------------------*/
+
test();
test();
test();
test();
test();
test();
- IF( st_fx->stab_fac_fx == 0 && st_fx->old_bfi_cnt > 0 && NE_16( st_fx->clas_dec, VOICED_CLAS ) && NE_16( st_fx->clas_dec, ONSET ) &&
- st_fx->relax_prev_lsf_interp == 0 && !( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && EQ_16( st_fx->idchan, 1 ) ) )
+ IF( ( st->stab_fac_fx == 0 ) && ( st->old_bfi_cnt > 0 ) && NE_16( st->clas_dec, VOICED_CLAS ) && NE_16( st->clas_dec, ONSET ) && ( st->relax_prev_lsf_interp == 0 ) && !( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( st->idchan, 1 ) ) )
{
- int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid_fx, lsp_new_fx, Aq_fx, M, 2 );
+ int_lsp4_ivas_fx( st->L_frame, st->lsp_old_fx, lsp_mid_fx, lsp_new_fx, Aq_fx, M, 2 );
}
/*---------------------------------------------------------------*
@@ -768,7 +1055,7 @@ ivas_error acelp_core_dec_fx(
IF( nb_bits > 0 )
{
- indice = get_next_indice( st_fx, nb_bits );
+ indice = get_next_indice_fx( st, nb_bits );
Es_pred_dec_fx( &Es_pred_fx, indice, nb_bits, uc_two_stage_flag );
}
@@ -778,79 +1065,113 @@ ivas_error acelp_core_dec_fx(
test();
test();
- IF( EQ_16( st_fx->nelp_mode_dec, 1 ) )
+ IF( tdm_low_rate_mode ) /* tdm stereo low rate mode */
{
- /* SC-VBR - NELP frames */
- Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st_fx->Q_exc ) ); // Q0
- st_fx->Q_exc = 0;
+ IF( LE_16( st->coder_type, UNVOICED ) )
+ {
+ tdm_low_rate_dec_fx( st, dct_exc_tmp_fx /*, &tmp_noise*/, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx );
+ tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
+ }
+ ELSE /* GENERIC */
+ {
+ decod_gen_2sbfr_fx( st, sharpFlag, Aq_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, gain_buf_fx, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx );
+
+ IF( EQ_16( st->element_mode, IVAS_CPE_TD ) )
+ {
+ tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
+ }
+ }
+ }
+ ELSE IF( st->nelp_mode_dec )
+ {
+ Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st->Q_exc ) ); // Q0
+ st->Q_exc = 0;
move16();
- decod_nelp_fx( st_fx, &tmp_noise_fx, pitch_buf_fx, exc_fx, exc2_fx, voice_factors, bwe_exc_fx, &st_fx->Q_exc, st_fx->bfi, gain_buf );
- Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st_fx->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, L_FRAME, st_fx->coder_type );
+ /* SC-VBR - NELP frames */
+ decod_nelp_fx( st, &tmp_noise_fx, pitch_buf_fx, exc_fx, exc2_fx, voice_factors_fx, bwe_exc_fx, &st->Q_exc, st->bfi, gain_buf_fx );
+
+ Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st->Q_exc ), st->Q_subfr, exc2_fx, L_FRAME, st->coder_type );
}
- ELSE IF( EQ_16( st_fx->coder_type, UNVOICED ) )
+ ELSE IF( EQ_16( st->coder_type, UNVOICED ) )
{
/* UNVOICED frames */
- decod_unvoiced_fx( st_fx, st_fx->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, gain_buf );
+ decod_unvoiced_fx( st, Aq_fx, Es_pred_fx, uc_two_stage_flag, st->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, gain_buf_fx );
+
+ tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
}
- ELSE IF( EQ_16( st_fx->ppp_mode_dec, 1 ) )
+ ELSE IF( st->ppp_mode_dec )
{
- Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st_fx->Q_exc ) ); // Q0
- st_fx->Q_exc = 0;
+ Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st->Q_exc ) ); // Q0
+ st->Q_exc = 0;
move16();
+
/* SC-VBR - PPP frames */
- IF( NE_32( ( error = decod_ppp_fx( st_fx, Aq_fx, pitch_buf_fx, exc_fx, exc2_fx, st_fx->bfi, gain_buf, voice_factors, bwe_exc_fx ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = decod_ppp_fx( st, Aq_fx, pitch_buf_fx, exc_fx, exc2_fx, st->bfi, gain_buf_fx, voice_factors_fx, bwe_exc_fx ) ), IVAS_ERR_OK ) )
{
return error;
}
- Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st_fx->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, L_FRAME, st_fx->coder_type );
+ Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st->Q_exc ), st->Q_subfr, exc2_fx, L_FRAME, st->coder_type );
}
- ELSE IF( EQ_16( st_fx->coder_type, TRANSITION ) )
+ ELSE IF( EQ_16( st->coder_type, TRANSITION ) )
{
- decod_tran_fx( st_fx, st_fx->L_frame, tc_subfr_fx, Aq_fx, Es_pred_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, sharpFlag, gain_buf );
+ decod_tran_fx( st, st->L_frame, tc_subfr, Aq_fx, Es_pred_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, unbits, sharpFlag, gain_buf_fx );
}
- ELSE IF( EQ_16( st_fx->coder_type, AUDIO ) || ( ( st_fx->coder_type == INACTIVE ) && LE_32( st_fx->core_brate, MAX_GSC_INACTIVE_BRATE ) ) )
+ ELSE IF( EQ_16( st->coder_type, AUDIO ) || ( ( st->coder_type == INACTIVE ) && st->inactive_coder_type_flag ) )
{
- decod_audio_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf );
- tmp_noise_fx = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/
+ /* AUDIO and INACTIVE frames (coded by GSC technology) */
+ decod_audio_fx( st, dct_exc_tmp_fx, Aq_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf_fx,
+ tdm_lp_reuse_flag, tdm_low_rate_mode, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx );
+
+ tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
}
ELSE
{
- IF( NE_32( ( error = decod_gen_voic_fx( st_fx, st_fx->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf /*, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf*/ ) ), IVAS_ERR_OK ) )
+ /* GENERIC, VOICED and INACTIVE frames (coded by AVQ technology) */
+ IF( NE_32( ( error = decod_gen_voic_fx( st, st->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf_fx, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx ) ), IVAS_ERR_OK ) )
{
return error;
}
- IF( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) )
+ IF( EQ_16( st->element_mode, IVAS_CPE_TD ) )
{
- tmp_noise_fx = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/
+ tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
}
}
/* synthesis for ACELP core switching and SWB BWE */
- syn_12k8_fx( st_fx->L_frame, Aq_fx, exc_fx, temp_buf_fx, st_fx->mem_syn1_fx, 1, st_fx->Q_exc, -1 );
+ syn_12k8_fx( st->L_frame, Aq_fx, exc_fx, temp_buf_fx, st->mem_syn1_fx, 1, st->Q_exc, -1 );
+
/* save and delay synthesis to be used by SWB BWE */
- IF( hBWE_FD != NULL )
+ IF( st->hBWE_FD != NULL )
{
- save_old_syn_fx( st_fx->L_frame, temp_buf_fx, old_syn_12k8_16k, hBWE_FD->old_syn_12k8_16k_fx, st_fx->preemph_fac, &hBWE_FD->mem_deemph_old_syn_fx );
+ save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx );
}
/*-----------------------------------------------------------------*
* Apply energy matching when switching to inactive frames
*-----------------------------------------------------------------*/
- Inac_swtch_ematch_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode );
+ Inac_switch_ematch_fx( exc2_fx, dct_exc_tmp_fx, st->hGSCDec->lt_ener_per_band_fx, st->coder_type, st->inactive_coder_type_flag, st->L_frame, st->Q_exc, st->bfi, st->last_core, st->last_codec_mode, tdm_low_rate_mode, st->element_mode );
+
/*------------------------------------------------------------*
* Decode information and modify the excitation signal of stationary unvoiced frames
*------------------------------------------------------------*/
+
test();
test();
test();
test();
- IF( !( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) ) && NE_16( st_fx->nelp_mode_dec, 1 ) && !( EQ_16( st_fx->element_mode, IVAS_SCE ) && tdm_low_rate_mode ) )
+ IF( !( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) ) && NE_16( st->nelp_mode_dec, 1 ) && !( EQ_16( st->element_mode, IVAS_SCE ) && tdm_low_rate_mode ) )
{
- stat_noise_uv_dec_fx( st_fx, lsp_new_fx, lsp_mid_fx, Aq_fx, exc2_fx, uc_two_stage_flag );
+ Word16 temp_q_exc = st->Q_exc;
+ move16();
+ stat_noise_uv_dec_fx( st, lsp_new_fx, lsp_mid_fx, Aq_fx, exc2_fx, uc_two_stage_flag );
+ IF( NE_16( temp_q_exc, st->Q_exc ) )
+ {
+ scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM + st->L_frame, sub( st->Q_exc, temp_q_exc ) );
+ }
}
/*------------------------------------------------------------*
@@ -859,80 +1180,92 @@ ivas_error acelp_core_dec_fx(
*------------------------------------------------------------*/
/* update past excitation signals for LD music post-filter */
- IF( hMusicPF != NULL )
+ IF( st->hMusicPF != NULL )
{
- Copy( hMusicPF->dct_post_old_exc_fx + L_FRAME, hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
- Copy( exc2_fx, hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
- Copy( hMusicPF->dct_post_old_exc_fx, exc_buffer_fx, DCT_L_POST - OFFSET2 );
+ Copy( st->hMusicPF->dct_post_old_exc_fx + L_FRAME, st->hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
+ Copy( exc2_fx, st->hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
+ Copy( st->hMusicPF->dct_post_old_exc_fx, exc_buffer_fx, DCT_L_POST - OFFSET2 );
}
+
test();
test();
test();
- test();
- IF( hMusicPF != NULL && ( ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) || ( GE_16( st_fx->GSC_IVAS_mode, 1 ) && EQ_16( st_fx->L_frame, L_FRAME ) ) ) )
+ IF( ( EQ_16( st->coder_type, AUDIO ) && !st->GSC_noisy_speech ) || ( GE_16( st->GSC_IVAS_mode, 1 ) && EQ_16( st->L_frame, L_FRAME ) ) )
{
-
- Word16 last_coder_type = st_fx->last_coder_type;
+ Word16 last_coder_type = st->last_coder_type;
move16();
+
test();
test();
test();
- if ( ( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) ) || ( GE_16( st_fx->GSC_IVAS_mode, 1 ) && st_fx->GSC_noisy_speech == 0 ) )
+ if ( ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) ) || ( GE_16( st->GSC_IVAS_mode, 1 ) && ( st->GSC_noisy_speech == 0 ) ) )
{
last_coder_type = AUDIO;
move16();
}
- /* Extrapolation of the last future part, windowing and high resolution DCT transform */
- qdct = 0;
+
+ Word16 qdct = 0;
move16();
-#ifdef _DIFF_FLOAT_FIX_ /* FLoat point using last_core which fits with the inner part of the function */
- Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, hMusicPF->filt_lfE_fx, st_fx->last_core, st_fx->element_mode, pitch_buf_fx,
- hMusicPF->LDm_enh_lp_gbin_fx, st_fx->Q_exc, &qdct );
-#else
- Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, hMusicPF->filt_lfE_fx, st_fx->last_coder_type, st_fx->element_mode, pitch_buf_fx,
- hMusicPF->LDm_enh_lp_gbin_fx, st_fx->Q_exc, &qdct );
-#endif
+
+ /* Extrapolation of the last future part, windowing and high resolution DCT transform */
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ // VE: TBV: this is likely a bug in EVS - 'st->last_coder_type' should be replaced by 'st->core_brate'
+ Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, st->hMusicPF->filt_lfE_fx, st->last_coder_type, st->element_mode, pitch_buf_fx,
+ st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct );
+ }
+ ELSE
+ {
+ Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, st->hMusicPF->filt_lfE_fx, st->last_core, st->element_mode, pitch_buf_fx, st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct );
+ }
+
/* LD music post-filter */
- LD_music_post_filter_fx( hMusicPF, dct_buffer_fx, dct_buffer_fx, st_fx->core_brate,
- &hMusicPF->Old_ener_Q, AUDIO, last_coder_type, qdct );
+ LD_music_post_filter_fx( st->hMusicPF, dct_buffer_fx, dct_buffer_fx, st->core_brate, &st->hMusicPF->Old_ener_Q, AUDIO, last_coder_type, qdct );
/* Inverse DCT transform, retrieval of the aligned excitation, re-synthesis */
- Post_music_postP_fx( dct_buffer_fx, exc2_fx, st_fx->mem_syn2_fx, st_fx->mem_syn2_fx, Aq_fx, syn_fx, &st_fx->Q_exc, &st_fx->prev_Q_syn,
- &st_fx->Q_syn, st_fx->mem_syn_clas_estim_fx, 0, &st_fx->mem_deemph_fx, hBPF->pst_old_syn_fx,
- &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, temp_buf_fx, mem_tmp_fx );
+ IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBC whether needed in IVAS
+ {
+ Copy( st->mem_syn2_fx, mem_tmp_fx, M ); /*Q_syn*/
+ }
+
+ Post_music_postP_fx( dct_buffer_fx, exc2_fx, st->mem_syn2_fx, st->mem_syn2_fx, Aq_fx, psyn_fx, &st->Q_exc, &st->prev_Q_syn,
+ &st->Q_syn, st->mem_syn_clas_estim_fx, 0, &st->mem_deemph_fx, st->hBPF->pst_old_syn_fx,
+ &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, temp_buf_fx, mem_tmp_fx );
}
ELSE
{
/* Core synthesis at 12.8kHz or 16kHz */
i = 1;
move16();
- if ( st_fx->coder_type == INACTIVE )
+ test();
+ if ( st->coder_type == INACTIVE && st->element_mode == EVS_MONO )
{
i = 0;
move16();
}
+
/* add extra headroom in case a CNA addition is likely (i.e. st_fx->psf_lp_noise_fx is close to the threshold) */
- k = 0;
+ Word16 k = 0;
move16();
test();
test();
- if ( ( st_fx->coder_type == INACTIVE ) && st_fx->flag_cna && GE_16( round_fx( L_shl( st_fx->lp_noise, 1 ) ), 15 << 7 ) )
+ if ( st->coder_type == INACTIVE && st->flag_cna && GE_16( round_fx( L_shl( st->lp_noise, 1 ) ), 15 << 7 ) )
{
k = 1;
move16();
}
- Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, 4, &st_fx->mem_deemph_fx,
- hBPF->pst_old_syn_fx, &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, i, k, temp_buf_fx );
- Copy( st_fx->mem_syn2_fx, mem_tmp_fx, M ); // Q_syn
+ Rescale_mem( st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn2_fx, st->mem_syn_clas_estim_fx, 4, &st->mem_deemph_fx,
+ st->hBPF->pst_old_syn_fx, &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, i, k, temp_buf_fx );
+
+ Copy( st->mem_syn2_fx, mem_tmp_fx, M ); /*Q_syn*/
+ syn_12k8_fx( st->L_frame, Aq_fx, exc2_fx, psyn_fx, st->mem_syn2_fx, 1, st->Q_exc, st->Q_syn );
- syn_12k8_fx( st_fx->L_frame, Aq_fx, exc2_fx, syn_fx, st_fx->mem_syn2_fx, 1, st_fx->Q_exc, st_fx->Q_syn );
- IF( hMusicPF != NULL )
+ IF( st->hMusicPF != NULL )
{
FOR( i = 0; i < DCT_L_POST; i++ )
{
- /*st_fx->filt_lfE_fx[i] = 0.3f + 0.7f * st_fx->filt_lfE_fx[i];*/
- hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) );
+ st->hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, st->hMusicPF->filt_lfE_fx[i] ) );
move16();
}
}
@@ -942,43 +1275,35 @@ ivas_error acelp_core_dec_fx(
* FEC - Estimate the classification information
*------------------------------------------------------------*/
- FEC_clas_estim_fx( st_fx, st_fx->Opt_AMR_WB, st_fx->L_frame, &st_fx->clas_dec, st_fx->coder_type, pitch_buf_fx,
- syn_fx, &st_fx->lp_ener_FER_fx, &st_fx->decision_hyst,
- NULL, NULL, NULL, NULL, 0, NULL, st_fx->Q_syn, temp_buf_fx,
- st_fx->mem_syn_clas_estim_fx, &st_fx->classifier_Q_mem_syn,
- 0, 0, 0, st_fx->last_core_brate, st_fx->acelp_cfg.FEC_mode );
+ FEC_clas_estim_fx( st, st->Opt_AMR_WB, st->L_frame, &st->clas_dec, st->coder_type, pitch_buf_fx, psyn_fx, &st->lp_ener_FER_fx, &st->decision_hyst,
+ NULL, NULL, NULL, NULL, 0, NULL, st->Q_syn, temp_buf_fx, st->mem_syn_clas_estim_fx, &st->classifier_Q_mem_syn, 0, 0, 0, st->last_core_brate, st->acelp_cfg.FEC_mode );
+
/*------------------------------------------------------------*
* FEC - Estimate pitch
*------------------------------------------------------------*/
- FEC_pitch_estim_fx( st_fx->Opt_AMR_WB, st_fx->last_core, st_fx->L_frame, st_fx->clas_dec, st_fx->last_good, pitch_buf_fx, st_fx->old_pitch_buf_fx,
- &st_fx->bfi_pitch_fx, &st_fx->bfi_pitch_frame, &st_fx->upd_cnt, st_fx->coder_type, st_fx->element_mode );
+ FEC_pitch_estim_fx( st->Opt_AMR_WB, st->last_core, st->L_frame, st->clas_dec, st->last_good, pitch_buf_fx, st->old_pitch_buf_fx,
+ &st->bfi_pitch_fx, &st->bfi_pitch_frame, &st->upd_cnt, st->coder_type, st->element_mode );
/*------------------------------------------------------------*
* FEC - Smooth the speech energy evolution when recovering after a BAD frame
* (smoothing is performed in the excitation domain and signal is resynthesized after)
*------------------------------------------------------------*/
- k = 0;
- move16();
- FOR( i = 0; i < st_fx->L_frame; i += L_SUBFR )
- {
- pitch_buf_tmp[k] = mult_r( pitch_buf_fx[k], 512 ); // Q0(6+9-15) , (512 = 1.0f in Q9)
- move16();
- k = add( k, 1 );
- }
+ Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); // Q0
- FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction,
- &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate,
- exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 );
+ FEC_scale_syn_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction,
+ &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate,
+ exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, st->element_mode, avoid_lpc_burst_on_recovery, 0 );
test();
test();
test();
test();
- IF( ( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && LE_32( st_fx->total_brate, ACELP_7k20 ) ) || ( EQ_32( st_fx->total_brate, ACELP_7k20 ) ) || ( EQ_32( st_fx->total_brate, ACELP_8k00 ) ) )
+ /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */
+ IF( ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) && LE_32( st->total_brate, ACELP_7k20 ) ) || EQ_32( st->total_brate, ACELP_7k20 ) || EQ_32( st->total_brate, ACELP_8k00 ) )
{
- frame_ener_fx( st_fx->L_frame, st_fx->clas_dec, syn_fx, pitch_buf_tmp[sub( shr( st_fx->L_frame, 6 ), 1 )], &st_fx->enr_old_fx, st_fx->L_frame, st_fx->Q_syn, 3, 0 );
+ frame_ener_fx( st->L_frame, st->clas_dec, psyn_fx, pitch_buf_tmp[( ( st->L_frame ) >> 6 ) - 1], &st->enr_old_fx, st->L_frame, st->Q_syn, 3, 0 );
}
}
@@ -987,206 +1312,188 @@ ivas_error acelp_core_dec_fx(
/*----------------------------------------------------------------*
* BAD frame
*----------------------------------------------------------------*/
+
ELSE
{
/* SC-VBR */
- if ( EQ_16( st_fx->last_nelp_mode_dec, 1 ) )
+ if ( EQ_16( st->last_nelp_mode_dec, 1 ) )
{
- st_fx->nelp_mode_dec = 1;
+ st->nelp_mode_dec = 1;
move16();
}
- /* long burst frame erasures */
test();
test();
- if ( GT_16( st_fx->nbLostCmpt, 5 ) && GE_16( st_fx->clas_dec, VOICED_CLAS ) && LT_16( st_fx->clas_dec, INACTIVE_CLAS ) )
+ /* long burst frame erasures */
+ if ( GT_16( st->nbLostCmpt, 5 ) && GE_16( st->clas_dec, VOICED_CLAS ) && LT_16( st->clas_dec, INACTIVE_CLAS ) )
{
- st_fx->last_good = VOICED_TRANSITION;
+ st->last_good = VOICED_TRANSITION;
move16();
}
/* LSF estimation and A(z) calculation */
- lsf_dec_bfi( MODE1, lsf_new_fx, st_fx->lsf_old_fx, st_fx->lsf_adaptive_mean_fx, NULL, st_fx->mem_MA_fx, st_fx->mem_AR_fx,
- st_fx->stab_fac_fx, st_fx->last_coder_type, st_fx->L_frame, st_fx->last_good,
- st_fx->nbLostCmpt, 0, NULL, NULL, NULL, st_fx->hGSCDec->Last_GSC_pit_band_idx, st_fx->Opt_AMR_WB, 0, st_fx->bwidth );
-
- FEC_lsf2lsp_interp( st_fx, st_fx->L_frame, Aq_fx, lsf_new_fx, lsp_new_fx );
+ lsf_dec_bfi( MODE1, lsf_new_fx, st->lsf_old_fx, st->lsf_adaptive_mean_fx, NULL, st->mem_MA_fx, st->mem_AR_fx, st->stab_fac_fx, st->last_coder_type, st->L_frame, st->last_good, st->nbLostCmpt, 0, NULL, NULL, NULL, st->hGSCDec->Last_GSC_pit_band_idx, st->Opt_AMR_WB, 0, st->bwidth );
- IF( EQ_16( st_fx->nelp_mode_dec, 1 ) )
+ FEC_lsf2lsp_interp( st, st->L_frame, Aq_fx, lsf_new_fx, lsp_new_fx );
+ IF( EQ_16( st->nelp_mode_dec, 1 ) )
{
/* SC-VBR */
- Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st_fx->Q_exc ) ); // Q0
- st_fx->Q_exc = 0;
+ Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st->Q_exc ) ); // Q0
+ st->Q_exc = 0;
move16();
- decod_nelp_fx( st_fx, &tmp_noise_fx, pitch_buf_fx, exc_fx, exc2_fx, voice_factors, bwe_exc_fx, &st_fx->Q_exc, st_fx->bfi, gain_buf );
+ decod_nelp_fx( st, &tmp_noise_fx, pitch_buf_fx, exc_fx, exc2_fx, voice_factors_fx, bwe_exc_fx, &st->Q_exc, st->bfi, gain_buf_fx );
FEC_pitch_fx = pitch_buf_fx[3];
move16();
-
- Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st_fx->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, L_FRAME, st_fx->coder_type );
+ Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st->Q_exc ), st->Q_subfr, exc2_fx, L_FRAME, st->coder_type );
}
ELSE
{
/* calculation of excitation signal */
+ FEC_exc_estim_fx( st, st->L_frame, exc_fx, exc2_fx, dct_exc_tmp_fx, pitch_buf_fx, voice_factors_fx, &FEC_pitch_fx, bwe_exc_fx, lsf_new_fx, &st->Q_exc, &tmp_noise_fx );
- FEC_exc_estim_fx( st_fx, st_fx->L_frame, exc_fx, exc2_fx, dct_exc_tmp, pitch_buf_fx, voice_factors, &FEC_pitch_fx, bwe_exc_fx, lsf_new_fx, &st_fx->Q_exc, &tmp_noise_fx );
-
- Rescale_exc( NULL, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, L_FRAME32k, (Word32) 0,
- &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, st_fx->L_frame, st_fx->last_coder_type );
+ Rescale_exc( NULL, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame, L_FRAME32k, (Word32) 0,
+ &( st->Q_exc ), st->Q_subfr, exc2_fx, st->L_frame, st->last_coder_type );
- tmp_noise_fx = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/
+ tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
/* SC-VBR */
- st_fx->prev_gain_pit_dec_fx = st_fx->lp_gainp_fx;
- move16(); /*Q14*/
+ st->prev_gain_pit_dec_fx = st->lp_gainp_fx;
+ move16();
}
/* synthesis for ACELP core switching and SWB BWE */
- syn_12k8_fx( st_fx->L_frame, Aq_fx, exc_fx, temp_buf_fx, st_fx->mem_syn1_fx, 1, st_fx->Q_exc, -1 ); /*old_syn_12k8_16k directly in q-1*/
+ syn_12k8_fx( st->L_frame, Aq_fx, exc_fx, temp_buf_fx, st->mem_syn1_fx, 1, st->Q_exc, -1 );
/* save and delay synthesis to be used by SWB BWE */
- IF( hBWE_FD != NULL )
+ IF( st->hBWE_FD != NULL )
{
- save_old_syn_fx( st_fx->L_frame, temp_buf_fx, old_syn_12k8_16k, hBWE_FD->old_syn_12k8_16k_fx, st_fx->preemph_fac, &hBWE_FD->mem_deemph_old_syn_fx );
+ save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx );
}
+
/* Apply energy matching when switching to inactive frames */
- Inac_swtch_ematch_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode );
+ Inac_switch_ematch_fx( exc2_fx, dct_exc_tmp_fx, st->hGSCDec->lt_ener_per_band_fx, st->coder_type, st->inactive_coder_type_flag, st->L_frame, st->Q_exc, st->bfi, st->last_core, st->last_codec_mode, tdm_low_rate_mode, st->element_mode );
- /* udate past excitation signals for LD music post-filter */
- IF( hMusicPF != NULL )
+ /* update past excitation signals for LD music post-filter */
+ IF( st->hMusicPF != NULL )
{
- Copy( hMusicPF->dct_post_old_exc_fx + L_FRAME, hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
- Copy( exc2_fx, hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
+ Copy( st->hMusicPF->dct_post_old_exc_fx + L_FRAME, st->hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
+ Copy( exc2_fx, st->hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
+
/* Update music post processing values */
/* Filter energies update */
FOR( i = 0; i < DCT_L_POST; i++ )
{
- /*st_fx->filt_lfE_fx[i] = 0.3f + 0.7f * st_fx->filt_lfE_fx[i];*/
- hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) );
+ st->hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( 1228 << 16, 22938, st->hMusicPF->filt_lfE_fx[i] ) );
move16();
}
+
/* Update circular buffer, keep last energy difference unchanged */
FOR( i = 1; i < MAX_LT; i++ )
{
- hMusicPF->LDm_lt_diff_etot_fx[i - 1] = hMusicPF->LDm_lt_diff_etot_fx[i];
+ st->hMusicPF->LDm_lt_diff_etot_fx[i - 1] = st->hMusicPF->LDm_lt_diff_etot_fx[i];
move16();
}
}
+
/* synthesis at 12k8 Hz sampling rate */
/* add extra headroom in case a CNA addition is likely (i.e. st_fx->psf_lp_noise_fx is close to the threshold) */
- k = 0;
+ Word16 k = 0;
move16();
test();
test();
- if ( ( st_fx->coder_type == INACTIVE ) && st_fx->flag_cna && GE_16( round_fx( L_shl( st_fx->lp_noise, 1 ) ), 15 << 7 ) )
+ if ( st->coder_type == INACTIVE && st->flag_cna && GE_16( round_fx( L_shl( st->lp_noise, 1 ) ), 15 << 7 ) )
{
k = 1;
move16();
}
- Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, 4, &st_fx->mem_deemph_fx,
- hBPF->pst_old_syn_fx, &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, 1, k, temp_buf_fx );
+ Rescale_mem( st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn2_fx, st->mem_syn_clas_estim_fx, 4, &st->mem_deemph_fx,
+ st->hBPF->pst_old_syn_fx, &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, 1, k, temp_buf_fx );
test();
- IF( ( EQ_32( st_fx->total_brate, ACELP_7k20 ) ) || ( EQ_32( st_fx->total_brate, ACELP_8k00 ) ) )
+ IF( EQ_32( st->total_brate, ACELP_7k20 ) || EQ_32( st->total_brate, ACELP_8k00 ) )
{
- Copy( st_fx->mem_syn2_fx, mem_tmp_fx, M ); // Q_syn
+ Copy( st->mem_syn2_fx, mem_tmp_fx, M );
}
- syn_12k8_fx( st_fx->L_frame, Aq_fx, exc2_fx, syn_fx, st_fx->mem_syn2_fx, 1, st_fx->Q_exc, st_fx->Q_syn );
+ syn_12k8_fx( st->L_frame, Aq_fx, exc2_fx, psyn_fx, st->mem_syn2_fx, 1, st->Q_exc, st->Q_syn );
/* update buffer for classifier */
- IF( st_fx->hWIDec != NULL )
+ IF( st->hWIDec != NULL )
{
- Copy( exc2_fx + st_fx->L_frame - L_EXC_MEM, st_fx->hWIDec->old_exc2_fx, L_EXC_MEM );
- Copy( syn_fx + st_fx->L_frame - L_EXC_MEM, st_fx->hWIDec->old_syn2_fx, L_EXC_MEM );
+ Copy( exc2_fx + sub( st->L_frame, L_EXC_MEM ), st->hWIDec->old_exc2_fx, L_EXC_MEM );
+ Copy( psyn_fx + sub( st->L_frame, L_EXC_MEM ), st->hWIDec->old_syn2_fx, L_EXC_MEM );
}
- st_fx->prev_Q_exc_fr = st_fx->Q_exc;
+ st->prev_Q_exc_fr = st->Q_exc;
move16();
- st_fx->prev_Q_syn_fr = st_fx->Q_syn;
+ st->prev_Q_syn_fr = st->Q_syn;
move16();
+ Copy( psyn_fx + sub( st->L_frame, L_SYN_MEM_CLAS_ESTIM ), st->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM );
- Copy( syn_fx + st_fx->L_frame - L_SYN_MEM_CLAS_ESTIM, st_fx->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM );
+ /*------------------------------------------------------------*
+ * FEC - Smooth the speech energy evolution when recovering after a BAD frame
+ * (smoothing is performed in the excitation domain and signal is resynthesized after)
+ *------------------------------------------------------------*/
test();
- IF( ( EQ_32( st_fx->total_brate, ACELP_7k20 ) ) || ( EQ_32( st_fx->total_brate, ACELP_8k00 ) ) )
+ IF( EQ_32( st->total_brate, ACELP_7k20 ) || EQ_32( st->total_brate, ACELP_8k00 ) )
{
- k = 0;
- move16();
- FOR( i = 0; i < st_fx->L_frame; i += L_SUBFR )
- {
- pitch_buf_tmp[k] = mult_r( pitch_buf_fx[k], 512 ); // Q0(6+9-15) , (512 = 1.0f in Q9)
- move16();
- k = add( k, 1 );
- }
-
- /*------------------------------------------------------------*
- * FEC - Smooth the speech energy evolution when recovering after a BAD frame
- * (smoothing is performed in the excitation domain and signal is resynthesized after)
- *------------------------------------------------------------*/
+ Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); // Q0
- FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction,
- &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate,
- exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 );
+ FEC_scale_syn_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction,
+ &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate,
+ exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, st->element_mode, avoid_lpc_burst_on_recovery, 0 );
}
/* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */
- /* fer_energy( st_fx->L_frame, st_fx->last_good, syn_fx, FEC_pitch_fx, &st_fx->enr_old_fx, st_fx->L_frame ); */
- frame_ener_fx( st_fx->L_frame, st_fx->last_good, syn_fx, shr( add( FEC_pitch_fx, 32 ), 6 ), &st_fx->enr_old_fx, st_fx->L_frame, st_fx->Q_syn, 3, 0 );
+ frame_ener_fx( st->L_frame, st->last_good, psyn_fx, shr( add( FEC_pitch_fx, 32 ), 6 ), &st->enr_old_fx, st->L_frame, st->Q_syn, 3, 0 );
- IF( st_fx->nelp_mode_dec != 1 )
+ IF( NE_16( st->nelp_mode_dec, 1 ) )
{
/* modify the excitation signal of stationary unvoiced frames */
- stat_noise_uv_mod_fx( st_fx->coder_type, 0, st_fx->lsp_old_fx, lsp_new_fx, lsp_new_fx, Aq_fx, exc2_fx, st_fx->Q_exc, 1, &st_fx->ge_sm_fx,
- &st_fx->uv_count, &st_fx->act_count, st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx,
- &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth, &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge );
+ stat_noise_uv_mod_fx( st->coder_type, 0, st->lsp_old_fx, lsp_new_fx, lsp_new_fx, Aq_fx, exc2_fx, st->Q_exc, 1, &st->ge_sm_fx,
+ &st->uv_count, &st->act_count, st->lspold_s_fx, &st->noimix_seed, &st->min_alpha_fx,
+ &st->exc_pe_fx, st->core_brate, st->bwidth, &st->Q_stat_noise, &st->Q_stat_noise_ge );
}
-
- /* SC-VBR */
- st_fx->hSC_VBR->FadeScale_fx = mult( st_fx->hSC_VBR->FadeScale_fx, 24576 ); /*24576 in Q15*/
- move16();
}
- IF( hBWE_TD != NULL )
+
+ IF( st->hBWE_TD != NULL )
{
- IF( EQ_16( st_fx->L_frame, L_FRAME ) )
+ IF( EQ_16( st->L_frame, L_FRAME ) )
{
- Copy( Aq_fx + 2 * ( M + 1 ), hBWE_TD->cur_sub_Aq_fx, ( M + 1 ) ); // Q12
+ Copy( Aq_fx + 2 * ( M + 1 ), st->hBWE_TD->cur_sub_Aq_fx, ( M + 1 ) );
}
ELSE
{
- Copy( Aq_fx + 3 * ( M + 1 ), hBWE_TD->cur_sub_Aq_fx, ( M + 1 ) ); // Q12
+ Copy( Aq_fx + 3 * ( M + 1 ), st->hBWE_TD->cur_sub_Aq_fx, ( M + 1 ) );
}
}
+
/*--------------------------------------------------------*
* Apply NB postfilter in case of 8kHz output
*--------------------------------------------------------*/
+
test();
- IF( EQ_16( st_fx->last_bwidth, NB ) && st_fx->hPFstat != NULL )
+ IF( st->last_bwidth == NB && st->hPFstat != NULL )
{
- k = 0;
- move16();
- FOR( i = 0; i < st_fx->L_frame; i += L_SUBFR )
- {
- pitch_buf_tmp[k] = mult_r( pitch_buf_fx[k], 512 ); // Q0(6+9-15) , (512 = 1.0f in Q9)
- move16();
- k = add( k, 1 );
- }
+ Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); // Q0
- IF( EQ_16( st_fx->bwidth, NB ) )
+ IF( st->bwidth == NB )
{
- st_fx->hPFstat->on = 1;
+ st->hPFstat->on = 1;
move16();
- nb_post_filt_fx( st_fx->L_frame, st_fx->hPFstat, &st_fx->psf_lp_noise_fx, tmp_noise_fx, syn_fx, Aq_fx, pitch_buf_tmp, st_fx->coder_type, st_fx->BER_detect, 0 );
+ nb_post_filt_fx( st->L_frame, st->hPFstat, &st->psf_lp_noise_fx, tmp_noise_fx, psyn_fx, Aq_fx, pitch_buf_tmp, st->coder_type, st->BER_detect, 0 );
}
ELSE
{
- st_fx->hPFstat->on = 0;
+ st->hPFstat->on = 0;
move16();
- nb_post_filt_fx( st_fx->L_frame, st_fx->hPFstat, &st_fx->psf_lp_noise_fx, tmp_noise_fx, syn_fx, Aq_fx, pitch_buf_tmp, AUDIO, st_fx->BER_detect, 0 );
+ nb_post_filt_fx( st->L_frame, st->hPFstat, &st->psf_lp_noise_fx, tmp_noise_fx, psyn_fx, Aq_fx, pitch_buf_tmp, AUDIO, st->BER_detect, 0 );
}
}
ELSE
{
- st_fx->psf_lp_noise_fx = round_fx( L_shl( st_fx->lp_noise, 1 ) );
+ st->psf_lp_noise_fx = round_fx( L_shl( st->lp_noise, 1 ) );
move16();
}
@@ -1194,142 +1501,255 @@ ivas_error acelp_core_dec_fx(
* Perform fixed deemphasis through 1/(1 - g*z^-1)
*-----------------------------------------------------------------*/
- /* Update old synthesis buffer - needed for ACELP internal sampling rate switching */
- Copy( syn_fx + st_fx->L_frame - L_SYN_MEM, st_fx->mem_syn_r, L_SYN_MEM );
- deemph_fx( syn_fx, st_fx->preemph_fac, st_fx->L_frame, &( st_fx->mem_deemph_fx ) );
- unscale_AGC( syn_fx, st_fx->Q_syn, syn_fx_tmp2, st_fx->agc_mem_fx, st_fx->L_frame );
- Copy( syn_fx_tmp2, syn_fx, st_fx->L_frame );
-
- /* Update MODE2 memories*/
- IF( hTcxDec != NULL )
+ /* update old synthesis buffer - needed for ACELP internal sampling rate switching */
+ Copy( psyn_fx + sub( st->L_frame, L_SYN_MEM ), st->mem_syn_r, L_SYN_MEM );
+ deemph_fx( psyn_fx, st->preemph_fac, st->L_frame, &( st->mem_deemph_fx ) );
+ unscale_AGC( psyn_fx, st->Q_syn, syn_fx_tmp2, st->agc_mem_fx, st->L_frame );
+ Copy( syn_fx_tmp2, psyn_fx, st->L_frame );
+ IF( st->hTcxDec != NULL )
{
- Copy_Scale_sig( syn_fx + shr( st_fx->L_frame, 1 ), hTcxDec->old_syn_Overl, shr( st_fx->L_frame, 1 ), sub( -1, st_fx->Q_syn ) ); /*Q-1*/
+ Copy_Scale_sig( psyn_fx + shr( st->L_frame, 1 ), st->hTcxDec->old_syn_Overl, shr( st->L_frame, 1 ), sub( -1, st->Q_syn ) ); /*Q-1*/
+ st->hTcxDec->Q_old_syn_Overl = -1;
}
- Copy_Scale_sig( syn_fx + st_fx->L_frame - M - 1, st_fx->syn, M + 1, sub( 0, st_fx->Q_syn ) ); /*Q0*/
+ Copy_Scale_sig( psyn_fx + sub( st->L_frame, M + 1 ), st->syn, M + 1, sub( 0, st->Q_syn ) ); /*Q0*/
/*------------------------------------------------------------------*
* Formant post-filter
*-----------------------------------------------------------------*/
- IF( st_fx->hPFstat != NULL )
+ test();
+ test();
+ test();
+ test();
+ IF( st->hPFstat != NULL && GE_16( st->last_bwidth, WB ) && ( GT_32( st->core_brate, ACELP_24k40 ) || st->element_mode > EVS_MONO ) && LE_32( st->core_brate, ACELP_32k ) )
{
- test();
- test();
- test();
- IF( GE_16( st_fx->last_bwidth, WB ) && ( GT_32( st_fx->core_brate, ACELP_24k40 ) || ( st_fx->element_mode > EVS_MONO ) ) && LE_32( st_fx->core_brate, ACELP_32k ) )
- {
- Copy( syn_fx, temp_buf + L_SYN_MEM, L_FRAME16k );
- st_fx->hPFstat->on = 1;
- move16();
- formant_post_filt_fx( st_fx->hPFstat, temp_buf + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME16k, st_fx->lp_noise, st_fx->total_brate, 0 );
- }
- ELSE IF( GE_16( st_fx->last_bwidth, WB ) )
+ st->hPFstat->on = 1;
+ move16();
+ Copy( psyn_fx, temp_buf_fx + L_SYN_MEM, L_FRAME16k );
+ set16_fx( st->hPFstat->mem_zero, 0, M );
+
+ formant_post_filt_fx( st->hPFstat, temp_buf_fx + L_SYN_MEM, Aq_fx, psyn_fx, st->L_frame, st->lp_noise, st->total_brate, 0 );
+ }
+ ELSE IF( st->hPFstat != NULL && GE_16( st->last_bwidth, WB ) )
+ {
+ IF( st->hPFstat->on )
{
- IF( st_fx->hPFstat->on )
- {
- Copy( st_fx->hPFstat->mem_pf_in + L_SYN_MEM - M, temp_buf, M );
- Copy( syn_fx, temp_buf + M, L_SUBFR );
- Residu3_fx( Aq_fx, temp_buf + M, temp_buf + M + L_SUBFR, L_SUBFR, 1 );
- E_UTIL_synthesis( 1, Aq_fx, temp_buf + M + L_SUBFR, temp_buf, L_SUBFR, st_fx->hPFstat->mem_stp + L_SYN_MEM - M, 0, M );
- scale_st_fx( syn_fx, temp_buf, &st_fx->hPFstat->gain_prec, L_SUBFR );
- Copy( temp_buf, syn_fx, L_SUBFR / 2 );
- blend_subfr2_fx( temp_buf + L_SUBFR / 2, syn_fx + L_SUBFR / 2, syn_fx + L_SUBFR / 2 );
- }
- st_fx->hPFstat->on = 0;
- move16();
+ Copy( st->hPFstat->mem_pf_in + L_SYN_MEM - M, temp_buf_fx, M );
+ Copy( psyn_fx, temp_buf_fx + M, L_SUBFR );
+
+ Residu3_fx( Aq_fx, temp_buf_fx + M, temp_buf_fx + M + L_SUBFR, L_SUBFR, 1 );
+ E_UTIL_synthesis( 1, Aq_fx, temp_buf_fx + M + L_SUBFR, temp_buf_fx, L_SUBFR, st->hPFstat->mem_stp + L_SYN_MEM - M, 0, M );
+ scale_st_fx( psyn_fx, temp_buf_fx, &st->hPFstat->gain_prec, L_SUBFR );
+ Copy( temp_buf_fx, psyn_fx, ( L_SUBFR >> 1 ) );
+ blend_subfr2_fx( temp_buf_fx + L_SUBFR / 2, psyn_fx + L_SUBFR / 2, psyn_fx + L_SUBFR / 2 );
}
+ st->hPFstat->on = 0;
+ move16();
}
+
/*----------------------------------------------------------------*
* Comfort noise addition
*----------------------------------------------------------------*/
test();
test();
- IF( ( st_fx->hFdCngDec != NULL || EQ_16( st_fx->idchan, 1 ) ) && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) )
+ IF( ( st->hFdCngDec != NULL || EQ_16( st->idchan, 1 ) ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) )
{
test();
test();
test();
test();
test();
- IF( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) || st_fx->flag_cna || ( EQ_16( st_fx->cng_type, FD_CNG ) && LE_32( st_fx->total_brate, ACELP_32k ) ) || ( ( st_fx->cng_type == LP_CNG ) && LE_32( st_fx->total_brate, SID_2k40 ) ) )
+ IF( EQ_16( st->element_mode, IVAS_CPE_TD ) || st->flag_cna || ( EQ_16( st->cng_type, FD_CNG ) && LE_32( st->total_brate, ACELP_32k ) ) || ( st->cng_type == LP_CNG && LE_32( st->core_brate, SID_2k40 ) ) )
{
/*VAD only for non inactive frame*/
test();
- st_fx->VAD = st_fx->VAD && ( st_fx->coder_type != INACTIVE );
+ st->VAD = st->VAD && st->coder_type != INACTIVE;
move16();
test();
test();
test();
test();
test();
- IF( st_fx->idchan == 0 && ( st_fx->flag_cna || ( EQ_16( st_fx->cng_type, FD_CNG ) && LE_32( st_fx->total_brate, ACELP_32k ) ) ||
- ( EQ_16( st_fx->cng_type, LP_CNG ) && LE_32( st_fx->total_brate, SID_2k40 ) ) ) )
+ IF( st->idchan == 0 && ( st->flag_cna || ( EQ_16( st->cng_type, FD_CNG ) && LE_32( st->total_brate, ACELP_32k ) ) || ( st->cng_type == LP_CNG && LE_32( st->core_brate, SID_2k40 ) ) ) )
{
/*Noisy speech detector*/
- noisy_speech_detection_fx( st_fx->hFdCngDec, st_fx->VAD, syn_fx, st_fx->Q_syn );
+ noisy_speech_detection_fx( st->hFdCngDec, st->VAD, psyn_fx, st->Q_syn );
- st_fx->hFdCngDec->hFdCngCom->likelihood_noisy_speech = mult_r( st_fx->hFdCngDec->hFdCngCom->likelihood_noisy_speech, 32440 /*0.99 Q15*/ );
+ st->hFdCngDec->hFdCngCom->likelihood_noisy_speech = mult_r( st->hFdCngDec->hFdCngCom->likelihood_noisy_speech, 32440 /*0.99 Q15*/ );
move16();
- IF( st_fx->hFdCngDec->hFdCngCom->flag_noisy_speech != 0 )
+ IF( st->hFdCngDec->hFdCngCom->flag_noisy_speech != 0 )
{
- st_fx->hFdCngDec->hFdCngCom->likelihood_noisy_speech = add( st_fx->hFdCngDec->hFdCngCom->likelihood_noisy_speech, 328 /*0.01 Q15*/ );
+ st->hFdCngDec->hFdCngCom->likelihood_noisy_speech = add( st->hFdCngDec->hFdCngCom->likelihood_noisy_speech, 328 /*0.01 Q15*/ );
move16();
}
+ move32();
}
- if ( st_fx->idchan == 0 )
+
+ if ( st->idchan == 0 )
{
- st_fx->lp_noise = st_fx->hFdCngDec->lp_noise;
+ st->lp_noise = st->hFdCngDec->lp_noise;
move32();
}
- /*Noise estimate*/
- IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) /* && !st->cng_ism_flag IVAS_CODE */ )
+
+ test();
+ IF( NE_16( st->element_mode, IVAS_CPE_TD ) && !st->cng_ism_flag )
{
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- PMT( "Code for IVAS_CODE_CNG_FIX185_PLC_FADEOUT not done" )
- ApplyFdCng_fx( syn, st_fx->Q_syn, NULL, realBuffer, imagBuffer, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) );
-#else
- ApplyFdCng_fx( syn_fx, st_fx->Q_syn, realBuffer, imagBuffer, NULL, st_fx, 0, ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) );
-#endif
+ /* Noise estimate */
+ ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) );
}
- /* CNA: Generate additional comfort noise to mask potential coding artefacts */
- }
- test();
- test();
- test();
- test();
- IF( st_fx->flag_cna && NE_16( st_fx->coder_type, AUDIO ) )
- {
- generate_masking_noise_fx( syn_fx, st_fx->Q_syn, st_fx->hFdCngDec->hFdCngCom, st_fx->hFdCngDec->hFdCngCom->frameSize, 0 );
- }
- ELSE IF( st_fx->flag_cna && EQ_16( st_fx->coder_type, AUDIO ) && st_fx->last_core == ACELP_CORE && NE_16( st_fx->last_coder_type, AUDIO ) )
- {
- FOR( i = 0; i < st_fx->hFdCngDec->hFdCngCom->frameSize / 2; i++ )
+ IF( !st->cna_dirac_flag )
{
- syn_fx[i] = add( syn_fx[i], shr_r( mult_r( st_fx->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * st_fx->hFdCngDec->hFdCngCom->frameSize / 4], st_fx->hFdCngDec->hFdCngCom->fftlenFac ), -st_fx->Q_syn ) );
- move16();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ /* CNA: Generate additional comfort noise to mask potential coding artefacts */
+ IF( st->flag_cna && !( EQ_16( st->coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->GSC_noisy_speech ) ) )
+ {
+ test();
+ IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( nchan_out, 2 ) )
+ {
+ IF( hStereoCng->flag_cna_fade )
+ {
+ generate_stereo_masking_noise_fx( psyn_fx, st->Q_syn, st, hStereoTD, flag_sec_CNA, 1, hStereoCng, nchan_out );
+ hStereoCng->flag_cna_fade = 0;
+ move16();
+ }
+ ELSE
+ {
+ test();
+ IF( NE_16( st->element_mode, last_element_mode ) && ( st->idchan == 0 ) )
+ {
+ /* Clear memory for secondary channel CNA */
+ set16_fx( hStereoCng->olapBufferSynth22_fx, 0, shr( st->hFdCngDec->hFdCngCom->frameSize, 1 ) );
+ }
+
+ generate_stereo_masking_noise_fx( psyn_fx, st->Q_syn, st, hStereoTD, flag_sec_CNA, 0, hStereoCng, nchan_out );
+ }
+ }
+ ELSE IF( NE_16( st->element_mode, IVAS_CPE_DFT ) )
+ {
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ generate_masking_noise_fx( psyn_fx, st->Q_syn, st->hFdCngDec->hFdCngCom, st->hFdCngDec->hFdCngCom->frameSize, 0 );
+ }
+ ELSE
+ {
+ IF( st->idchan == 0 )
+ {
+ IF( NE_16( st->element_mode, last_element_mode ) )
+ {
+ set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st->hFdCngDec->hFdCngCom->fftlen );
+ }
+
+ Word32 psyn_32_fx[L_FRAME16k];
+ Copy_Scale_sig_16_32_no_sat( psyn_fx, psyn_32_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( Q6, st->Q_syn ) ); // Q6
+ Copy_Scale_sig_16_32_no_sat( st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), Q15 ); // Q15
+
+ generate_masking_noise_ivas_fx( psyn_32_fx, &exp, st->hFdCngDec->hFdCngCom, st->hFdCngDec->hFdCngCom->frameSize, 0, 0, 0, st->element_mode, hStereoCng, nchan_out );
+
+ Copy_Scale_sig_32_16( psyn_32_fx, psyn_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( st->Q_syn, exp ) ); // Q = st->Q_syn
+ Copy_Scale_sig_32_16( st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), -Q15 ); // Q0
+ }
+ }
+ }
+ }
+ ELSE IF( st->flag_cna && EQ_16( st->coder_type, AUDIO ) && ( ( st->last_core == ACELP_CORE && !( EQ_16( st->last_coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->Last_GSC_noisy_speech_flag ) ) ) || EQ_16( st->last_core, TCX_20_CORE ) ) )
+ {
+ test();
+ IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( nchan_out, 2 ) )
+ {
+ generate_stereo_masking_noise_fx( psyn_fx, st->Q_syn, st, hStereoTD, flag_sec_CNA, 1, hStereoCng, nchan_out );
+ hStereoCng->flag_cna_fade = 1;
+ move16();
+ }
+ ELSE
+ {
+ FOR( i = 0; i < ( st->hFdCngDec->hFdCngCom->frameSize ) / 2; i++ )
+ {
+ psyn_fx[i] = add( psyn_fx[i], shr_r( mult_r( st->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * ( st->hFdCngDec->hFdCngCom->frameSize / 4 )], st->hFdCngDec->hFdCngCom->fftlenFac ), negate( st->Q_syn ) ) );
+ move16();
+ }
+ }
+ }
+ ELSE
+ {
+ IF( hStereoCng != NULL )
+ {
+ hStereoCng->flag_cna_fade = 1;
+ move16();
+ hStereoCng->enableSecCNA = 0;
+ move16();
+ }
+ }
+
+ IF( EQ_16( st->element_mode, IVAS_CPE_TD ) )
+ {
+ test();
+ test();
+ test();
+ /*Noise estimate*/
+ IF( ( st->idchan == 0 ) && ( EQ_16( nchan_out, 2 ) || ( st->core_brate != FRAME_NO_DATA && NE_32( st->core_brate, SID_2k40 ) ) ) )
+ {
+ ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) );
+ }
+ }
}
}
- test();
- test();
- test();
- test();
- test();
- IF( st_fx->flag_cna == 0 && EQ_16( st_fx->L_frame, L_FRAME16k ) && EQ_16( st_fx->last_flag_cna, 1 ) && ( ( st_fx->last_core == ACELP_CORE && NE_16( st_fx->last_coder_type, AUDIO ) ) || EQ_16( st_fx->last_core, AMR_WB_CORE ) ) )
+ IF( !st->cna_dirac_flag )
{
- FOR( i = 0; i < st_fx->L_frame / 2; i++ )
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ IF( ( st->flag_cna == 0 ) && EQ_16( st->L_frame, L_FRAME16k ) && EQ_16( st->last_flag_cna, 1 ) && ( ( st->last_core == ACELP_CORE && !( EQ_16( st->last_coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->Last_GSC_noisy_speech_flag ) ) ) || EQ_16( st->last_core, AMR_WB_CORE ) ) )
{
- syn_fx[i] = add( syn_fx[i], shr_r( st_fx->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * st_fx->L_frame / 4], negate( st_fx->Q_syn ) ) );
- move16();
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ // VE: TBV - is it correct in EVS? in FLP, it is:
+ // v_multc( st->hFdCngDec->hFdCngCom->olapBufferSynth2 + 5 * st->L_frame / 4, 256.f, temp_buf, st->L_frame / 2 );
+ // v_add( temp_buf, syn, syn, st->L_frame / 2 );
+ FOR( i = 0; i < st->L_frame / 2; i++ )
+ {
+ psyn_fx[i] = add( psyn_fx[i], shr_r( st->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * st->L_frame / 4], negate( st->Q_syn ) ) );
+ move16();
+ }
+ }
+ ELSE
+ {
+ FOR( i = 0; i < ( st->hFdCngDec->hFdCngCom->frameSize ) / 2; i++ )
+ {
+ psyn_fx[i] = add( psyn_fx[i], shr_r( mult_r( st->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * ( st->hFdCngDec->hFdCngCom->frameSize / 4 )], st->hFdCngDec->hFdCngCom->fftlenFac ), -st->Q_syn ) );
+ move16();
+ }
+ }
}
- }
- test();
- IF( st_fx->flag_cna == 0 || EQ_16( st_fx->coder_type, AUDIO ) )
- {
- set16_fx( st_fx->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st_fx->hFdCngDec->hFdCngCom->fftlen );
+ test();
+ test();
+ test();
+ IF( ( st->flag_cna == 0 ) || ( EQ_16( st->coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->GSC_noisy_speech ) ) )
+ {
+ IF( st->idchan == 0 )
+ {
+ set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st->hFdCngDec->hFdCngCom->fftlen );
+ }
+ IF( hStereoCng != NULL && ( st->idchan == 0 ) )
+ {
+ set16_fx( hStereoCng->olapBufferSynth22_fx, 0, st->hFdCngDec->hFdCngCom->fftlen );
+ }
+ }
}
}
@@ -1338,45 +1758,44 @@ ivas_error acelp_core_dec_fx(
* Bass post-filter
*----------------------------------------------------------------*/
- /* check if the CLDFB works on the right sample rate */
- IF( ( st_fx->cldfbAna->usb * st_fx->cldfbAna->no_col ) != st_fx->L_frame )
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
{
- /* resample to ACELP internal sampling rate */
- Word16 newCldfbBands = CLDFB_getNumChannels( L_mult0( st_fx->L_frame, FRAMES_PER_SEC ) );
- resampleCldfb( st_fx->cldfbAna, newCldfbBands, st_fx->L_frame, 0 );
- resampleCldfb( st_fx->cldfbBPF, newCldfbBands, st_fx->L_frame, 0 );
+ CLDFB_SCALE_FACTOR scaleFactor;
+ Word32 workBuffer[128 * 3];
- IF( st_fx->ini_frame > 0 )
+ /* check if the CLDFB works on the right sample rate */
+ IF( ( st->cldfbAna->usb * st->cldfbAna->no_col ) != st->L_frame )
{
- st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels );
- move16();
+ /* resample to ACELP internal sampling rate */
+ Word16 newCldfbBands = CLDFB_getNumChannels( L_mult0( st->L_frame, FRAMES_PER_SEC ) );
+ resampleCldfb( st->cldfbAna, newCldfbBands, st->L_frame, 0 );
+ resampleCldfb( st->cldfbBPF, newCldfbBands, st->L_frame, 0 );
+
+ IF( st->ini_frame > 0 )
+ {
+ st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels );
+ move16();
+ }
}
- }
- test();
- IF( !( EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) && st_fx->bpf_off ) )
- {
test();
- IF( NE_16( st_fx->L_frame, st_fx->last_L_frame ) && NE_16( st_fx->last_codec_mode, MODE2 ) )
+ IF( NE_16( st->L_frame, st->last_L_frame ) && NE_16( st->last_codec_mode, MODE2 ) )
{
- IF( EQ_16( st_fx->L_frame, L_FRAME ) )
+ IF( EQ_16( st->L_frame, L_FRAME ) )
{
- retro_interp5_4_fx( hBPF->pst_old_syn_fx );
+ retro_interp5_4_fx( st->hBPF->pst_old_syn_fx );
}
- ELSE IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
+ ELSE IF( EQ_16( st->L_frame, L_FRAME16k ) )
{
- retro_interp4_5_fx( syn_fx, hBPF->pst_old_syn_fx );
+ retro_interp4_5_fx( psyn_fx, st->hBPF->pst_old_syn_fx );
}
}
- bass_psfilter_fx( st_fx->hBPF, st_fx->Opt_AMR_WB, syn_fx, st_fx->L_frame, pitch_buf_fx, st_fx->bpf_off,
- st_fx->stab_fac_fx, &st_fx->stab_fac_smooth_fx, st_fx->coder_type, st_fx->Q_syn, bpf_error_signal );
- }
- test();
- IF( NE_16( st_fx->element_mode, IVAS_CPE_DFT ) || use_cldfb_for_dft )
- {
+ bass_psfilter_fx( st->hBPF, st->Opt_AMR_WB, psyn_fx, st->L_frame, pitch_buf_fx, st->bpf_off,
+ st->stab_fac_fx, &st->stab_fac_smooth_fx, st->coder_type, st->Q_syn, bpf_error_signal_16fx );
+
/* analysis of the synthesis at internal sampling rate */
- cldfbAnalysis_fx( st_fx->cldfbAna, realBuffer, imagBuffer, &scaleFactor, syn_fx, negate( st_fx->Q_syn ), CLDFB_NO_COL_MAX, workBuffer );
+ cldfbAnalysis_fx( st->cldfbAna, realBuffer_fx, imagBuffer_fx, &scaleFactor, psyn_fx, negate( st->Q_syn ), CLDFB_NO_COL_MAX, workBuffer );
scaleFactor.hb_scale = scaleFactor.lb_scale;
move16();
@@ -1384,25 +1803,26 @@ ivas_error acelp_core_dec_fx(
/* analysis and add the BPF error signal */
i = 0;
move16();
- if ( st_fx->bpf_off == 0 )
+ if ( st->bpf_off == 0 )
{
i = CLDFB_NO_COL_MAX;
move16();
}
- addBassPostFilter_fx( bpf_error_signal, realBuffer, imagBuffer, st_fx->cldfbBPF, workBuffer, negate( st_fx->Q_syn ),
- i, st_fx->cldfbAna->no_col, st_fx->cldfbAna->no_channels, &scaleFactor );
+
+ addBassPostFilter_fx( bpf_error_signal_16fx, realBuffer_fx, imagBuffer_fx, st->cldfbBPF, workBuffer, negate( st->Q_syn ),
+ i, st->cldfbAna->no_col, st->cldfbAna->no_channels, &scaleFactor );
/* set output mask for upsampling */
- IF( EQ_16( st_fx->bwidth, NB ) )
+ IF( EQ_16( st->bwidth, NB ) )
{
/* set NB mask for upsampling */
- st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, 10 );
+ st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, 10 );
move16();
}
- ELSE IF( NE_16( st_fx->cldfbSyn->bandsToZero, sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels ) ) )
+ ELSE IF( NE_16( st->cldfbSyn->bandsToZero, sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ) ) )
{
/* in case of BW switching, re-init to default */
- st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels );
+ st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels );
move16();
}
@@ -1410,47 +1830,447 @@ ivas_error acelp_core_dec_fx(
scaleFactor.hb_scale = scaleFactor.lb_scale;
move16();
+ test();
+ test();
+ test();
+ IF( ( ( st->core_brate == FRAME_NO_DATA ) || EQ_32( st->core_brate, SID_2k40 ) ) && ( EQ_16( st->cng_type, FD_CNG ) ) && ( LT_16( st->hFdCngDec->hFdCngCom->numCoreBands, st->cldfbSyn->no_channels ) ) )
+ {
+ generate_comfort_noise_dec_hf_fx( realBuffer_fx, imagBuffer_fx, &scaleFactor.hb_scale, st );
+
+ st->cldfbSyn->bandsToZero = 0;
+ move16();
+ IF( LT_16( st->hFdCngDec->hFdCngCom->regularStopBand, st->cldfbSyn->no_channels ) )
+ {
+ st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->hFdCngDec->hFdCngCom->regularStopBand );
+ move16();
+ }
+ st->cldfbSyn->lsb = st->cldfbAna->no_channels;
+ move16();
+ }
+
+ /* synthesis of the combined signal */
+ st->Q_syn2 = st->Q_syn;
+ move16();
+ cldfbSynthesis_fx( st->cldfbSyn, realBuffer_fx, imagBuffer_fx, &scaleFactor, synth_fx16, negate( st->Q_syn2 ), CLDFB_NO_COL_MAX, workBuffer );
+
+ /* Bring CLDFB output to Q0 */
+ Scale_sig( synth_fx16, output_frame, negate( st->Q_syn2 ) );
+ st->Q_syn2 = 0;
+ move16();
+
+ /* save synthesis - needed in case of core switching */
+ Copy( synth_fx16, st->previoussynth_fx, output_frame );
+ }
+ ELSE
+ {
+ /* check if the CLDFB works on the right sample rate */
+ IF( NE_16( imult1616( st->cldfbAna->no_channels, st->cldfbAna->no_col ), st->L_frame ) )
+ {
+ resampleCldfb_ivas_fx( st->cldfbAna, L_mult0( st->L_frame, FRAMES_PER_SEC ) );
+ resampleCldfb_ivas_fx( st->cldfbBPF, L_mult0( st->L_frame, FRAMES_PER_SEC ) );
+
+ IF( st->ini_frame > 0 )
+ {
+ st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels );
+ move16();
+ }
+ }
+
+ /* analyze pitch coherence for bass post-filter */
+ Word32 pitch_buf_fx_q20[12];
+ Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, Q4 ); // Q(x+4)
+ Word16 lim = shr( st->L_frame, 6 );
+ FOR( Word16 lp = 0; lp < lim; lp++ )
+ {
+ pitch_buf_fx_q20[lp] = L_shl( pitch_buf_fx[lp], Q14 );
+ move32();
+ }
+ bpf_pitch_coherence_ivas_fx( st, pitch_buf_fx_q20 );
+ Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, -Q4 ); // Qx
test();
- IF( !st_fx->cng_sba_flag || EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) )
+ IF( !( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && st->bpf_off ) )
{
test();
- test();
- test();
- IF( ( ( st_fx->core_brate == FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) && ( EQ_16( st_fx->cng_type, FD_CNG ) ) && ( LT_16( st_fx->hFdCngDec->hFdCngCom->numCoreBands, st_fx->cldfbSyn->no_channels ) ) )
+ IF( NE_16( st->L_frame, st->last_L_frame ) && NE_16( st->last_codec_mode, MODE2 ) )
+ {
+ IF( EQ_16( st->L_frame, L_FRAME ) )
+ {
+ retro_interp5_4_fx( st->hBPF->pst_old_syn_fx );
+ }
+ ELSE IF( EQ_16( st->L_frame, L_FRAME16k ) )
+ {
+ retro_interp4_5_fx( psyn_fx, st->hBPF->pst_old_syn_fx );
+ }
+ }
+
+ bass_psfilter_fx( st->hBPF, st->Opt_AMR_WB, psyn_fx, st->L_frame, pitch_buf_fx, st->bpf_off,
+ st->stab_fac_fx, &st->stab_fac_smooth_fx, st->coder_type, st->Q_syn, bpf_error_signal_16fx );
+ }
+
+ Word32 syn_tmp_32_fx[L_FRAME16k + L_SUBFR], *syn_32_fx;
+ set32_fx( syn_tmp_32_fx, 0, L_FRAME16k + L_SUBFR );
+ syn_32_fx = syn_tmp_32_fx + L_SUBFR;
+ test();
+ IF( NE_16( st->element_mode, IVAS_CPE_DFT ) || use_cldfb_for_dft )
+ {
+ /* analysis of the synthesis at internal sampling rate */
+ Word32 realBufferSave_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
+ Word32 imagBufferSave_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
+ Word32 *pRealSave_fx[CLDFB_NO_COL_MAX], *pImagSave_fx[CLDFB_NO_COL_MAX];
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ pRealSave_fx[i] = realBufferSave_fx[i];
+ pImagSave_fx[i] = imagBufferSave_fx[i];
+ }
+ IF( st->p_bpf_noise_buf_32 )
+ {
+ Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1
+ Copy32( bpf_error_signal_fx, st->p_bpf_noise_buf_32, st->L_frame );
+ Scale_sig32( st->p_bpf_noise_buf_32, st->L_frame, sub( Q11, sub( st->Q_syn, 1 ) ) ); // Q11
+ }
+
+ FOR( i = 0; i < st->L_frame; i++ )
+ {
+ syn_32_fx[i] = L_shr( L_deposit_h( psyn_fx[i] ), add( 4, st->Q_syn ) ); // Q12
+ move32();
+ }
+
+ Word16 offset = sub( st->cldfbAna->p_filter_length, st->cldfbAna->no_channels );
+ Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12
+ st->cldfbAna->Q_cldfb_state = Q12;
+ move16();
+
+ cldfbAnalysis_ivas_fx( syn_32_fx, realBuffer_fx, imagBuffer_fx, -1, st->cldfbAna );
+
+ Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11
+ st->cldfbAna->Q_cldfb_state = Q11;
+ move16();
+ /* analysis and add the BPF error signal */
+ Word32 tmp_bpf_error_signal_fx[L_FRAME16k];
+ Word16 q_bpf_error_signal;
+ Word16 cldfb_state_offset = sub( st->cldfbBPF->p_filter_length, st->cldfbBPF->no_channels );
+
+ q_bpf_error_signal = Q6;
+ move16();
+ Copy_Scale_sig_16_32_no_sat( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, st->L_frame, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ Scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0
+ Scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0
+ }
+ Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, sub( q_bpf_error_signal, Q10 ) ); // q_bpf_error_signal (Q6)
+ st->cldfbBPF->Q_cldfb_state = q_bpf_error_signal;
+ move16();
+ tmp = -1;
+ move16();
+ if ( st->bpf_off )
{
- generate_comfort_noise_dec_hf_fx( realBuffer, imagBuffer, &scaleFactor.hb_scale, st_fx );
+ tmp = 0;
+ move16();
+ }
+
+ addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx, tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF );
- st_fx->cldfbSyn->bandsToZero = 0;
+ Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( ( sub( q_bpf_error_signal, Q10 ) ) ) ); // Q10
+ st->cldfbBPF->Q_cldfb_state = Q10;
+ move16();
+ /* set output mask for upsampling */
+ IF( EQ_16( st->bwidth, NB ) )
+ {
+ /* set NB mask for upsampling */
+ st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, 10 );
+ move16();
+ }
+ ELSE IF( NE_16( st->cldfbSyn->bandsToZero, sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ) ) )
+ {
+ /* in case of BW switching, re-init to default */
+ st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels );
move16();
- IF( LT_16( st_fx->hFdCngDec->hFdCngCom->regularStopBand, st_fx->cldfbSyn->no_channels ) )
+ }
+ test();
+ IF( !st->cng_sba_flag || EQ_16( st->element_mode, IVAS_CPE_MDCT ) )
+ {
+ test();
+ test();
+ test();
+ /*WB/SWB-FD_CNG*/
+ IF( ( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) ) && ( EQ_16( st->cng_type, FD_CNG ) ) && ( LT_16( st->hFdCngDec->hFdCngCom->numCoreBands, st->cldfbSyn->no_channels ) ) )
{
- st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->hFdCngDec->hFdCngCom->regularStopBand );
+ Word16 tmpBufferScale = 0;
move16();
+ generate_comfort_noise_dec_hf_ivas_fx( realBuffer_fx, imagBuffer_fx, /*realBuffer, imagBuffer,*/ &tmpBufferScale, st->hFdCngDec->hFdCngCom, st->cng_ism_flag );
+
+ FOR( i = 0; i < st->hFdCngDec->hFdCngCom->numSlots; i++ )
+ {
+ Scale_sig32( realBuffer_fx[i] + st->hFdCngDec->hFdCngCom->numCoreBands, sub( st->hFdCngDec->hFdCngCom->regularStopBand, st->hFdCngDec->hFdCngCom->numCoreBands ), sub( add( tmpBufferScale, 15 ), Q31 ) ); // Q0
+ Scale_sig32( imagBuffer_fx[i] + st->hFdCngDec->hFdCngCom->numCoreBands, sub( st->hFdCngDec->hFdCngCom->regularStopBand, st->hFdCngDec->hFdCngCom->numCoreBands ), sub( add( tmpBufferScale, 15 ), Q31 ) ); // Q0
+ }
+
+ IF( LT_16( st->hFdCngDec->hFdCngCom->regularStopBand, st->cldfbSyn->no_channels ) )
+ {
+ st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->hFdCngDec->hFdCngCom->regularStopBand );
+ move16();
+ }
+ ELSE
+ {
+ st->cldfbSyn->bandsToZero = 0;
+ move16();
+ }
}
- st_fx->cldfbSyn->lsb = st_fx->cldfbAna->no_channels;
+ }
+
+ IF( save_hb_synth_fx16 != NULL )
+ {
+ /* save and then zero-out lowband */
+ max_real = 0;
+ max_imag = 0;
+ move32();
+ move32();
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
+ {
+ max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) );
+ max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) );
+ }
+ }
+ max_val = L_max( max_real, max_imag );
+ Q_real = sub( norm_l( max_val ), 3 ) /* Guard bits */;
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
+ scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
+ }
+#ifndef OPT_AVOID_STATE_BUF_RESCALE
+#ifdef OPT_STEREO_32KBPS_V1
+ scale_sig32( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( Q_real, Q11 ) ); // Q10 - > (Q_real-1)
+#else /* OPT_STEREO_32KBPS_V1 */
+ scale_sig32_r( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); // (Q_real-1)
+#endif /* OPT_STEREO_32KBPS_V1 */
+ st->cldfbSynHB->Q_cldfb_state = sub( Q_real, 1 );
+ move16();
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+
+ FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
+ {
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ realBufferSave_fx[i][j] = realBuffer_fx[i][j];
+ imagBufferSave_fx[i][j] = imagBuffer_fx[i][j];
+ move32();
+ move32();
+ IF( LT_16( j, st->hFdCngDec->hFdCngCom->numCoreBands ) && LT_16( i, st->hFdCngDec->hFdCngCom->numSlots ) )
+ {
+ realBuffer_fx[i][j] = 0;
+ imagBuffer_fx[i][j] = 0;
+ move32();
+ move32();
+ }
+ }
+ }
+
+#ifdef OPT_AVOID_STATE_BUF_RESCALE
+ cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, sub( Q11, Q_real ), -10, st->cldfbSynHB );
+#else /* OPT_AVOID_STATE_BUF_RESCALE */
+ cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, 0, st->cldfbSynHB );
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+
+#ifndef OPT_AVOID_STATE_BUF_RESCALE
+ Scale_sig32( save_hb_synth_fx, L_FRAME48k, negate( ( sub( Q_real, 1 ) ) ) ); // Q0
+ Scale_sig32( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10
+ st->cldfbSynHB->Q_cldfb_state = Q10;
+ move16();
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+ /* restore lowband */
+ FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
+ {
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ realBuffer_fx[i][j] = realBufferSave_fx[i][j];
+ imagBuffer_fx[i][j] = imagBufferSave_fx[i][j];
+ move32();
+ move32();
+ }
+ }
+#ifndef OPT_AVOID_STATE_BUF_RESCALE
+ Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); // Q_real-1
+ st->cldfbSynHB->Q_cldfb_state = sub( Q_real, 1 );
+ move16();
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+
+#ifdef OPT_AVOID_STATE_BUF_RESCALE
+ cldfbSynthesis_ivas_fx( pRealSave_fx, pImagSave_fx, synth_fx, -1, sub( Q11, Q_real ), -10, st->cldfbSyn );
+#else /* OPT_AVOID_STATE_BUF_RESCALE */
+ cldfbSynthesis_ivas_fx( pRealSave_fx, pImagSave_fx, synth_fx, -1, 0, st->cldfbSyn );
+ Scale_sig32( synth_fx, L_FRAME48k, negate( sub( Q_real, 1 ) ) ); // Q0
+ Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10
+ st->cldfbSynHB->Q_cldfb_state = Q10;
+ move16();
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+ }
+ ELSE
+ {
+ /* synthesis of the combined signal */
+ max_real = 0;
+ max_imag = 0;
+ move32();
+ move32();
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
+ {
+ max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) );
+ max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) );
+ }
+ }
+ max_val = L_max( max_real, max_imag );
+ Q_real = sub( norm_l( max_val ), 3 ) /* Guard bits */;
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
+ scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
+ }
+#ifdef OPT_STEREO_32KBPS_V1
+ scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q_real, Q11 ) ); // Q10 - > (Q_real-1)
+#else /* OPT_STEREO_32KBPS_V1 */
+ scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1)
+#endif /* OPT_STEREO_32KBPS_V1 */
+ st->cldfbSyn->Q_cldfb_state = sub( Q_real, 1 );
+ move16();
+
+#ifdef OPT_AVOID_STATE_BUF_RESCALE
+ cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx, -1, 0, 0, st->cldfbSyn );
+#else /* OPT_AVOID_STATE_BUF_RESCALE */
+ cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx, -1, 0, st->cldfbSyn );
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+ scale_sig32( synth_fx, output_frame, negate( sub( Q_real, 1 ) ) ); // Q0
+ scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10
+ st->cldfbSyn->Q_cldfb_state = Q10;
move16();
}
+
+ /* save synthesis - needed in case of core switching */
+ Copy32( synth_fx, st->previoussynth_fx_32, output_frame ); // Q0
}
- /* synthesis of the combined signal */
- st_fx->Q_syn2 = st_fx->Q_syn;
- move16();
+ ELSE
{
- cldfbSynthesis_fx( st_fx->cldfbSyn, realBuffer, imagBuffer, &scaleFactor, synth_out, negate( st_fx->Q_syn2 ), CLDFB_NO_COL_MAX, workBuffer );
+ Word16 nSamples = NS2SA_FX2( i_mult( st->L_frame, FRAMES_PER_SEC ), FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ); /* IVAS-64: optimization is likely possible here (don't resample the whole frame) */
+
+ /* analysis of the synthesis at internal sampling rate - needed for DFT stereo -> TD stereo switching */
+ FOR( i = 0; i < st->L_frame; i++ )
+ {
+ syn_32_fx[i] = L_shr( L_deposit_h( psyn_fx[i] ), add( 4, st->Q_syn ) );
+ move32();
+ }
+
+ Word16 offset = sub( st->cldfbAna->p_filter_length, st->cldfbAna->no_channels );
+ Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12
+ st->cldfbAna->Q_cldfb_state = Q12;
+ move16();
+
+ cldfbAnalysis_ivas_fx( syn_32_fx + sub( st->L_frame, nSamples ), realBuffer_fx, imagBuffer_fx, nSamples, st->cldfbAna );
+
+ Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11
+ st->cldfbAna->Q_cldfb_state = Q11;
+ move16(); /* analysis and add the BPF error signal - needed for DFT stereo -> TD stereo switching */
+ Word32 tmp_bpf_error_signal_fx[L_FRAME16k];
+ Word16 q_bpf_error_signal;
+ Word16 cldfb_state_offset;
+ cldfb_state_offset = sub( st->cldfbBPF->p_filter_length, st->cldfbBPF->no_channels );
+
+ // Get Q-factor
+ q_bpf_error_signal = Q6;
+ move16();
+ Copy_Scale_sig_16_32_no_sat( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, L_FRAME16k, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ Scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0
+ Scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0
+ }
+ Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, sub( q_bpf_error_signal, Q10 ) ); // q_bpf_error_signal (Q6)
+ st->cldfbBPF->Q_cldfb_state = q_bpf_error_signal;
+ move16();
+ tmp = 0;
+ move16();
+ if ( !st->bpf_off )
+ {
+ tmp = nSamples;
+ move16();
+ }
+
+ addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx + sub( st->L_frame, nSamples ), tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF );
+
+ Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( sub( q_bpf_error_signal, Q10 ) ) ); // Q10
+ st->cldfbBPF->Q_cldfb_state = Q10;
+ move16();
+ /* synthesis of the combined signal - needed for DFT stereo -> TD stereo switching */
+ max_real = 0;
+ max_imag = 0;
+ move32();
+ move32();
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
+ {
+ max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) );
+ max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) );
+ }
+ }
+ max_val = L_max( max_real, max_imag );
+ Q_real = sub( norm_l( max_val ), 3 ) /* Guard bits */;
+ FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
+ {
+ scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
+ scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
+ }
+#ifndef OPT_AVOID_STATE_BUF_RESCALE
+#ifdef OPT_STEREO_32KBPS_V1
+ scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q_real, Q11 ) ); // Q10 - > (Q_real-1)
+#else /* OPT_STEREO_32KBPS_V1 */
+ scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1)
+#endif /* OPT_STEREO_32KBPS_V1 */
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+
+#ifdef OPT_AVOID_STATE_BUF_RESCALE
+ cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*dummy*/, NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ), sub( Q10, sub( Q_real, 1 ) ), -10, st->cldfbSyn );
+#else /* OPT_AVOID_STATE_BUF_RESCALE */
+ cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*dummy*/, NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ), 0, st->cldfbSyn );
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+
+#ifndef OPT_AVOID_STATE_BUF_RESCALE
+ Scale_sig32( synth_fx, output_frame, negate( sub( Q_real, 1 ) ) ); // Q0
+ Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10
+ st->cldfbSyn->Q_cldfb_state = Q10;
+ move16();
+#endif /* OPT_AVOID_STATE_BUF_RESCALE */
+ IF( st->p_bpf_noise_buf_32 )
+ {
+ Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1
+ Copy32( bpf_error_signal_fx, st->p_bpf_noise_buf_32, st->L_frame );
+
+ Scale_sig32( st->p_bpf_noise_buf_32, st->L_frame, sub( Q11, sub( st->Q_syn, 1 ) ) ); // Q11
+ }
+
+ set32_fx( synth_fx, 0, output_frame );
}
- /* Bring CLDFB output to Q0 */
- Scale_sig( synth_out, output_frame, negate( st_fx->Q_syn2 ) );
- st_fx->Q_syn2 = 0;
- move16();
- /* save synthesis - needed in case of core switching */
- Copy( synth_out, st_fx->previoussynth_fx, output_frame );
+ /* Copy output signal */
+ Scale_sig( syn_tmp_fx, add( st->L_frame, L_SUBFR ), negate( st->Q_syn ) ); // Q0
+ IF( st->element_mode > EVS_MONO )
+ {
+ Copy( psyn_fx, output_fx, st->L_frame ); /*Q_syn*/
+ }
+
+ st->Q_syn2 = 0;
+ move16();
}
/*-----------------------------------------------------------------*
* Bandwidth extension 6kHz-7kHz
*-----------------------------------------------------------------*/
- IF( st_fx->hBWE_zero != NULL )
+
+ IF( st->hBWE_zero != NULL )
{
test();
test();
@@ -1459,14 +2279,27 @@ ivas_error acelp_core_dec_fx(
test();
test();
test();
- IF( ( EQ_16( st_fx->L_frame, L_FRAME ) && NE_16( st_fx->bwidth, NB ) && GE_16( output_frame, L_FRAME16k ) &&
- ( EQ_16( st_fx->extl, -1 ) || EQ_16( st_fx->extl, SWB_CNG ) || ( EQ_16( st_fx->extl, WB_BWE ) && st_fx->extl_brate == 0 && NE_16( st_fx->coder_type, AUDIO ) ) ) ) )
+ IF( ( EQ_16( st->L_frame, L_FRAME ) && ( st->bwidth != NB ) && GE_16( output_frame, L_FRAME16k ) &&
+ ( EQ_16( st->extl, -1 ) || EQ_16( st->extl, SWB_CNG ) || ( EQ_16( st->extl, WB_BWE ) && st->extl_brate == 0 && NE_16( st->coder_type, AUDIO ) ) ) ) )
{
- hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, st_fx->Q_syn2 );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 );
+ }
+ ELSE
+ {
+ Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q0
+ hf_synth_ivas_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 );
+ Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, output_frame, 0 );
+ }
}
ELSE
{
- hf_synth_reset_fx( st_fx->hBWE_zero );
+ hf_synth_reset_fx( st->hBWE_zero );
+ IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - it is a bug in EVS but condition is here to keep EVS bit-exact for the moment
+ {
+ set16_fx( st->hBWE_zero->mem_hp400_fx, 0, 6 );
+ }
}
}
@@ -1474,8 +2307,7 @@ ivas_error acelp_core_dec_fx(
* Populate parameters for SWB TBE
*-----------------------------------------------------------------*/
- /* Apply a non linearity to the SHB excitation */
- IF( hBWE_TD != NULL )
+ IF( st->hBWE_TD != NULL )
{
test();
test();
@@ -1489,11 +2321,11 @@ ivas_error acelp_core_dec_fx(
test();
test();
test();
- IF( ( !st_fx->bfi && ( st_fx->prev_bfi ) ) || ( ( EQ_16( st_fx->last_vbr_hw_BWE_disable_dec, 1 ) ) && ( st_fx->vbr_hw_BWE_disable_dec == 0 ) ) || ( ( EQ_16( st_fx->extl, SWB_TBE ) || EQ_16( st_fx->extl, WB_TBE ) || EQ_16( st_fx->extl, FB_TBE ) ) && NE_16( st_fx->last_extl, SWB_TBE ) && NE_16( st_fx->last_extl, WB_TBE ) && NE_16( st_fx->last_extl, FB_TBE ) ) || ( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && !st_fx->tdm_LRTD_flag ) )
+ IF( ( !st->bfi && st->prev_bfi ) || ( EQ_16( st->last_vbr_hw_BWE_disable_dec, 1 ) && ( st->vbr_hw_BWE_disable_dec == 0 ) ) || ( ( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, WB_TBE ) || EQ_16( st->extl, FB_TBE ) ) && NE_16( st->last_extl, SWB_TBE ) && NE_16( st->last_extl, WB_TBE ) && NE_16( st->last_extl, FB_TBE ) ) || ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) && !st->tdm_LRTD_flag ) )
{
- hBWE_TD->bwe_non_lin_prev_scale_fx = L_deposit_l( 0 );
+ st->hBWE_TD->bwe_non_lin_prev_scale_fx = 0;
move32();
- set16_fx( hBWE_TD->old_bwe_exc_extended_fx, 0, NL_BUFF_OFFSET );
+ set16_fx( st->hBWE_TD->old_bwe_exc_extended_fx, 0, NL_BUFF_OFFSET );
}
test();
@@ -1501,41 +2333,70 @@ ivas_error acelp_core_dec_fx(
test();
test();
test();
- IF( !st_fx->ppp_mode_dec && ( st_fx->idchan == 0 || NE_16( st_fx->element_mode, IVAS_CPE_TD ) || ( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && st_fx->tdm_LRTD_flag ) ) )
+ IF( !st->ppp_mode_dec && ( st->idchan == 0 || NE_16( st->element_mode, IVAS_CPE_TD ) || ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) && st->tdm_LRTD_flag ) ) )
{
- non_linearity_fx( bwe_exc_fx, bwe_exc_extended, L_FRAME32k, &hBWE_TD->bwe_non_lin_prev_scale_fx, st_fx->Q_exc,
- st_fx->coder_type, voice_factors, st_fx->L_frame );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ non_linearity_fx( bwe_exc_fx, bwe_exc_extended_fx, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame );
+ }
+ ELSE
+ {
+ Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc
+ non_linearity_ivas_fx( bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame );
+ Copy_Scale_sig_32_16( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, negate( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc
+ }
}
test();
- IF( ( st_fx->core_brate == FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_2k40 ) )
+ if ( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) )
{
- hBWE_TD->bwe_non_lin_prev_scale_fx = L_deposit_l( 0 );
+ st->hBWE_TD->bwe_non_lin_prev_scale_fx = 0;
move32();
}
}
+
/*----------------------------------------------------------------------*
* Updates
*----------------------------------------------------------------------*/
- updt_dec_fx( st_fx, old_exc_fx, pitch_buf_fx, Es_pred_fx, Aq_fx, lsf_new_fx, lsp_new_fx, voice_factors, old_bwe_exc_fx, gain_buf );
+ updt_dec_fx( st, old_exc_fx, pitch_buf_fx, Es_pred_fx, Aq_fx, lsf_new_fx, lsp_new_fx, voice_factors_fx, old_bwe_exc_fx, gain_buf_fx );
test();
test();
- IF( GT_32( st_fx->core_brate, SID_2k40 ) && st_fx->hTdCngDec != NULL && st_fx->hFdCngDec != NULL )
+ IF( GT_32( st->core_brate, SID_2k40 ) && st->hTdCngDec != NULL && st->hFdCngDec != NULL )
{
/* update CNG parameters in active frames */
- cng_params_upd_fx( lsp_new_fx, exc_fx, st_fx->L_frame, &st_fx->hTdCngDec->ho_circ_ptr, st_fx->hTdCngDec->ho_ener_circ_fx, &st_fx->hTdCngDec->ho_circ_size, st_fx->hTdCngDec->ho_lsp_circ_fx,
- st_fx->Q_exc, DEC, st_fx->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st_fx->last_active_brate );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ cng_params_upd_fx( lsp_new_fx, exc_fx, st->L_frame, &st->hTdCngDec->ho_circ_ptr, st->hTdCngDec->ho_ener_circ_fx, &st->hTdCngDec->ho_circ_size, st->hTdCngDec->ho_lsp_circ_fx,
+ st->Q_exc, DEC, st->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st->last_active_brate );
+ }
+ ELSE
+ {
+ cng_params_upd_ivas_fx( lsp_new_fx, exc_fx, st->L_frame, &st->hTdCngDec->ho_circ_ptr, st->hTdCngDec->ho_ener_circ_fx, &st->hTdCngDec->ho_circ_size,
+ st->hTdCngDec->ho_lsp_circ_fx, st->Q_exc, DEC, st->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st->last_active_brate, st->element_mode,
+ st->hFdCngDec->hFdCngCom->CngBandwidth );
+ }
+
/* Set 16k LSP flag for CNG buffer */
- st_fx->hTdCngDec->ho_16k_lsp[st_fx->hTdCngDec->ho_circ_ptr] = 0;
+ st->hTdCngDec->ho_16k_lsp[st->hTdCngDec->ho_circ_ptr] = 0;
move16();
- if ( NE_16( st_fx->L_frame, L_FRAME ) )
+ if ( NE_16( st->L_frame, L_FRAME ) )
{
- st_fx->hTdCngDec->ho_16k_lsp[st_fx->hTdCngDec->ho_circ_ptr] = 1;
+ st->hTdCngDec->ho_16k_lsp[st->hTdCngDec->ho_circ_ptr] = 1;
move16();
}
}
- return IVAS_ERR_OK;
+ IF( NE_16( st->element_mode, EVS_MONO ) )
+ {
+ IF( save_hb_synth_fx16 )
+ {
+ Copy_Scale_sig_32_16( save_hb_synth_fx, save_hb_synth_fx16, L_FRAME48k, 0 ); // Q0
+ }
+ Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q_syn2
+ }
+
+ pop_wmops();
+ return error;
}
diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c
deleted file mode 100644
index 38999e99e4f462d9b9c0af182a5532afb935d672..0000000000000000000000000000000000000000
--- a/lib_dec/acelp_core_dec_ivas_fx.c
+++ /dev/null
@@ -1,2156 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-#include
-#include
-#include
-#include "options.h"
-#include "cnst.h"
-#include "rom_com.h"
-#include "prot_fx.h"
-#include "ivas_cnst.h"
-#include "ivas_rom_com.h"
-#include "wmc_auto.h"
-#include "ivas_prot_fx.h"
-
-/*-------------------------------------------------------------------*
- * acelp_core_dec_ivas_fx()
- *
- * ACELP core decoder
- *-------------------------------------------------------------------*/
-static void rescale_fdCngDec( HANDLE_FD_CNG_DEC hFdCngDec, Word16 old_NoiseExp );
-ivas_error acelp_core_dec_ivas_fx(
- Decoder_State *st, /* i/o: decoder state structure */
- Word16 output_fx[], /* o : synthesis @internal Fs Q_syn*/
- Word16 synth_fx16[], /* o : synthesis Q_syn2*/
- Word16 save_hb_synth_fx16[], /* o : HB synthesis Q0*/
- Word32 bwe_exc_extended_fx[], /* i/o: bandwidth extended excitation 2*Q_exc*/
- Word16 *voice_factors_fx, /* o : voicing factors Q15*/
- Word16 old_syn_12k8_16k_fx[], /* o : intermediate ACELP synthesis at 12.8kHz or 16kHz to be used by SWB BWE Q_syn2-1*/
- const Word16 sharpFlag, /* i : formant sharpening flag */
- Word16 pitch_buf_fx[NB_SUBFR16k], /* o : Word16 pitch for each subframe Q6*/
- Word16 *unbits, /* o : number of unused bits */
- Word16 *sid_bw, /* o : 0-NB/WB, 1-SWB SID */
- STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle Qlog2(2.56)*/
- const Word16 tdm_lspQ_PCh_fx[M], /* i : Q LSPs for primary channel Q15*/
- const Word16 tdm_lsfQ_PCh_fx[M], /* i : Q LSFs for primary channel */
- const Word16 use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */
- const Word16 last_element_mode, /* i : last element mode */
- const Word32 last_element_brate, /* i : last element bitrate */
- const Word16 flag_sec_CNA, /* i : CNA flag for secondary channel */
- const Word16 nchan_out, /* i : number of output channels */
- STEREO_CNG_DEC_HANDLE hStereoCng, /* i : stereo CNG handle */
- const Word16 read_sid_info /* i : read SID info flag */
-)
-{
- Word32 synth_fx[960], save_hb_synth_fx[960] /*, bwe_exc_extended_fx[L_FRAME32k + NL_BUFF_OFFSET]*/;
-
- Word16 old_exc_fx[L_EXC_DEC], *exc_fx; /* excitation signal buffer */
- Word16 syn_tmp_fx[L_FRAME16k + L_SUBFR], *psyn_fx; /* synthesis signal buffer */
- Word16 output_frame; /* frame length at output sampling freq. */
- Word16 lsf_new_fx[M]; /* LSFs at the end of the frame Qlog2(2.56) */
- Word16 lsp_new_fx[M]; /* LSPs at the end of the frame Q15 */
- Word16 lsp_mid_fx[M]; /* LSPs in the middle of the frame */
- Word16 Aq_fx[NB_SUBFR16k * ( M + 1 )]; /* A(q) quantized for the 4 subframes */
- Word16 old_exc2_fx[L_FRAME16k + L_EXC_MEM], *exc2_fx; /* total excitation buffer */
- Word16 mem_tmp_fx[M]; /* temporary synthesis filter memory */
- Word32 enr_q_fx; /* E information for FER protection */
- Word16 tmp_noise_fx; /* Long term temporary noise energy */
- Word16 Es_pred_fx; /* predicted scaled innov. energy Q8 */
- Word16 FEC_pitch_fx; /* FEC pitch */
- Word16 old_bwe_exc_fx[( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 )]; /* excitation buffer */
- Word16 *bwe_exc_fx; /* Excitation for SWB TBE */
- Word16 i, j, int_fs;
- Word16 tc_subfr;
- Word16 allow_cn_step;
- Word16 temp_buf_fx[L_FRAME16k + L_SYN_MEM];
- Word16 last_pulse_pos;
- Word16 T0_tmp;
- Word16 do_WI;
- Word16 dct_buffer_fx[DCT_L_POST];
- Word16 exc_buffer_fx[DCT_L_POST];
- Word16 dct_exc_tmp_fx[L_FRAME16k];
- Word16 nb_bits; /* number of bits */
- Word16 indice; /* parameter indices to write */
- Word16 gain_buf_fx[NB_SUBFR16k];
- Word16 syn_fx_tmp2[L_FRAME_16k];
- Word16 pitch_buf_tmp[NB_SUBFR16k];
- Word16 update_flg;
- Word32 q_env_fx[20];
- Word16 exc3_fx[L_FRAME16k];
- Word16 syn1_tmp_fx[L_FRAME16k + 2], *syn1_fx;
- Word32 *realBuffer_fx[CLDFB_NO_COL_MAX], *imagBuffer_fx[CLDFB_NO_COL_MAX];
- Word32 realBufferTmp_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
- Word32 imagBufferTmp_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
- Word16 LSF_Q_prediction; /* LSF prediction mode */
- Word16 avoid_lpc_burst_on_recovery;
- Word16 tmpF_fx;
- Word16 uc_two_stage_flag;
- Word16 tdm_lp_reuse_flag, tdm_low_rate_mode, tdm_Pitch_reuse_flag;
- Word16 *old_exc_s_fx; /* Start of last excitation frame */
- Word16 *p_tdm_Pri_pitch_buf_fx;
- Word16 local_element_mode;
- ivas_error error;
-
- Word32 bpf_error_signal_fx[L_FRAME16k];
- set32_fx( bpf_error_signal_fx, 0, L_FRAME16k );
- Word16 bpf_error_signal_16fx[L_FRAME16k];
- set16_fx( bpf_error_signal_16fx, 0, L_FRAME16k );
- set16_fx( Aq_fx, 0, NB_SUBFR16k * ( M + 1 ) );
- set16_fx( old_bwe_exc_fx, 0, ( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 ) );
- Word16 tmp;
-
- error = IVAS_ERR_OK;
- move32();
-
- test();
- test();
- test();
- IF( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && EQ_16( nchan_out, 1 ) && EQ_16( st->idchan, 1 ) && LE_32( last_element_brate, IVAS_SID_5k2 ) )
- {
- /* In MDCT-Stereo DTX with mono output, we can skip CNG for the second channel, except for the first inactive frame following an active period */
- return error;
- }
-
- push_wmops( "acelp_core_dec" );
-
- /* output_frame = (int16_t) ( st->output_Fs / FRAMES_PER_SEC ); */
- output_frame = extract_l( Mpy_32_32( st->output_Fs, ONE_BY_FRAMES_PER_SEC_Q31 ) );
-
- /*----------------------------------------------------------------*
- * stereo SID and CNG frames processing
- *----------------------------------------------------------------*/
- test();
- test();
- IF( LE_32( st->core_brate, SID_2k40 ) && EQ_16( st->element_mode, IVAS_CPE_DFT ) && EQ_16( nchan_out, 2 ) )
- {
- IF( EQ_16( st->cng_type, FD_CNG ) )
- {
- configureFdCngDec_fx( st->hFdCngDec, st->bwidth, ACELP_14k25, st->L_frame, st->last_L_frame, st->element_mode );
- Word16 old_NoiseEstExp;
- old_NoiseEstExp = st->hFdCngDec->hFdCngCom->sidNoiseEstExp;
- move16();
- /* Only run parameter decoding in SID frames */
- IF( EQ_32( st->core_brate, SID_2k40 ) )
- {
- FdCng_decodeSID_ivas_fx( st );
- Word16 n1, n2;
- n1 = L_norm_arr( st->hFdCngDec->hFdCngCom->sidNoiseEst, NPART );
- n2 = L_norm_arr( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART );
-
- Word16 common_e = s_max( sub( old_NoiseEstExp, n2 ), sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, n1 ) );
- scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEst, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, common_e ) );
- scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, sub( old_NoiseEstExp, common_e ) );
- st->hFdCngDec->hFdCngCom->sidNoiseEstExp = common_e;
- move16();
- }
- FOR( i = 0; i < NPART; i++ )
- {
- st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] = Madd_32_32( Mpy_32_32( STEREO_DFT_FD_FILT_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] ),
- STEREO_DFT_FD_FILT_COMP_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEst[i] );
- move32();
- }
- ApplyFdCng_ivas_fx( NULL, 0, NULL, 0, NULL, NULL, NULL, st, 0, 0 );
- }
- ELSE
- {
- configureFdCngDec_fx( st->hFdCngDec, st->bwidth, ACELP_14k25, st->L_frame, st->last_L_frame, st->element_mode );
-
- /* decode CNG parameters */
- CNG_dec_ivas_fx( st, last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, sid_bw, q_env_fx );
-
- /* comfort noise generation */
- CNG_exc_fx( st->core_brate, st->L_frame, &st->hTdCngDec->Enew_fx, &st->hTdCngDec->cng_seed, NULL, NULL, &st->lp_ener_fx, st->last_core_brate, &st->first_CNG, &( st->hTdCngDec->cng_ener_seed ), NULL, allow_cn_step, &st->hTdCngDec->last_allow_cn_step, st->prev_Q_exc, st->Q_exc, st->hTdCngDec->num_ho, q_env_fx, st->hTdCngDec->lp_env_fx, st->hTdCngDec->old_env_fx, st->hTdCngDec->exc_mem_fx, st->hTdCngDec->exc_mem1_fx, sid_bw, &st->hTdCngDec->cng_ener_seed1, NULL, st->Opt_AMR_WB, st->element_mode );
-
- Copy( Aq_fx, st->Aq_cng, M + 1 ); /*Q12*/
-
- /* update old LSP and LSF vector */
- Copy( lsf_new_fx, st->lsf_old_fx, M ); /*Qlog2(2.56)*/
- Copy( lsp_new_fx, st->lsp_old_fx, M ); /*Q15*/
- }
-
- set16_fx( output_fx, 0, output_frame ); /* output and synth are not used in DFT domain CNG generation and the decoder output is unaffected if they are left uninitalized */
- set16_fx( synth_fx16, 0, output_frame ); /* They are however read in a few places which causes errors in the valgrind tests. Simplest solution from a code perspective was to set them to zero. */
-
- /* CN generation done in DFT domain */
- pop_wmops();
-
- return error;
- }
-
- /*----------------------------------------------------------------*
- * Active frames processing
- *----------------------------------------------------------------*/
-
- /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- set32_fx( realBufferTmp_fx[i], 0, CLDFB_NO_CHANNELS_MAX );
- set32_fx( imagBufferTmp_fx[i], 0, CLDFB_NO_CHANNELS_MAX );
- realBuffer_fx[i] = realBufferTmp_fx[i];
- imagBuffer_fx[i] = imagBufferTmp_fx[i];
- }
- /*----------------------------------------------------------------*
- * Initialization
- *----------------------------------------------------------------*/
-
- LSF_Q_prediction = -1;
- move16();
- set16_fx( syn_tmp_fx, 0, L_SUBFR );
- psyn_fx = syn_tmp_fx + L_SUBFR;
- syn1_tmp_fx[0] = 0;
- move16();
- syn1_tmp_fx[1] = 0;
- move16();
- syn1_fx = syn1_tmp_fx + 2;
-
- st->bpf_off = 0;
- move16();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( EQ_16( st->last_core, HQ_CORE ) || EQ_16( st->last_core, TCX_20_CORE ) || EQ_16( st->last_core, TCX_10_CORE ) || ( EQ_16( st->element_mode, IVAS_CPE_DFT ) && LE_32( st->last_core_brate, SID_2k40 ) ) || ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && LE_32( st->last_core_brate, SID_2k40 ) ) )
- {
- /* in case of HQ->ACELP switching, do not apply BPF */
- st->bpf_off = 1;
- move16();
- if ( st->hPFstat != NULL )
- {
- /* in case of core switching, reset post-filter memories */
- st->hPFstat->on = 0;
- move16();
- }
-
- if ( st->hGSCDec != NULL )
- {
- /* reset the GSC pre echo energy threshold in case of switching */
- st->hGSCDec->Last_frame_ener_fx = MAX_32;
- move32();
- }
- }
-
- test();
- if ( st->hGSCDec != NULL && ( st->prev_bfi > 0 ) )
- {
- /* reset the GSC pre echo energy threshold in case of FEC */
- st->hGSCDec->Last_frame_ener_fx = MAX_32;
- move32();
- }
- test();
- test();
- test();
- test();
- IF( st->hFdCngDec != NULL && ( EQ_16( st->element_mode, IVAS_CPE_DFT ) || EQ_16( st->element_mode, IVAS_CPE_TD ) ) && ( EQ_32( st->last_core_brate, SID_2k40 ) || st->last_core_brate == FRAME_NO_DATA ) )
- {
- set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, FFTLEN );
- set16_fx( hStereoCng->olapBufferSynth22_fx, 0, FFTLEN );
- }
-
- st->clas_dec = st->last_good;
- move16();
- enr_q_fx = 0;
- move32();
- Es_pred_fx = 0;
- move16();
- tmp_noise_fx = 0;
- move16();
- Copy( st->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); /*Q_exc*/
- exc_fx = old_exc_fx + L_EXC_MEM_DEC;
-
- IF( st->hWIDec != NULL )
- {
- Copy( st->hWIDec->old_exc2_fx, old_exc2_fx, L_EXC_MEM );
- }
- ELSE
- {
- set16_fx( old_exc2_fx, 0, L_EXC_MEM );
- }
- exc2_fx = old_exc2_fx + L_EXC_MEM;
-
- IF( st->hBWE_TD != NULL )
- {
- Copy( st->hBWE_TD->old_bwe_exc_fx, old_bwe_exc_fx, PIT16k_MAX * 2 ); /*Q_exc*/
- bwe_exc_fx = old_bwe_exc_fx + PIT16k_MAX * 2;
- }
- ELSE
- {
- bwe_exc_fx = NULL;
- }
-
- last_pulse_pos = 0;
- move16();
- do_WI = 0;
- move16();
- st->GSC_noisy_speech = 0;
- move16();
- st->relax_prev_lsf_interp = 0;
- move16();
- set16_fx( gain_buf_fx, 0, NB_SUBFR16k );
-
- IF( EQ_16( st->L_frame, L_FRAME ) )
- {
- st->gamma = GAMMA1;
- move16();
- st->inv_gamma = GAMMA1_INV;
- move16();
- st->preemph_fac = PREEMPH_FAC;
- move16();
- int_fs = INT_FS_12k8;
- move16();
- }
- ELSE
- {
- st->gamma = GAMMA16k;
- move16();
- st->inv_gamma = GAMMA16k_INV;
- move16();
- st->preemph_fac = PREEMPH_FAC_16k;
- move16();
- int_fs = INT_FS_16k;
- move16();
- }
- test();
- /* reset post-filter in case of switching */
- if ( st->hPFstat != NULL && ( st->hPFstat->on == 0 ) )
- {
- st->hPFstat->reset = 1;
- move16();
- }
-
- avoid_lpc_burst_on_recovery = 0;
- move16();
- test();
- test();
- if ( st->last_con_tcx && NE_16( st->L_frameTCX_past, st->L_frame ) && ( st->last_core != 0 ) )
- {
- avoid_lpc_burst_on_recovery = 1;
- move16();
- }
- test();
- /* TD stereo parameters */
- IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( st->idchan, 1 ) )
- {
- tdm_lp_reuse_flag = hStereoTD->tdm_lp_reuse_flag;
- move16();
- tdm_low_rate_mode = hStereoTD->tdm_low_rate_mode;
- move16();
- tdm_Pitch_reuse_flag = hStereoTD->tdm_Pitch_reuse_flag;
- move16();
- p_tdm_Pri_pitch_buf_fx = hStereoTD->tdm_Pri_pitch_buf_fx;
- }
- ELSE
- {
- tdm_lp_reuse_flag = 0;
- move16();
- tdm_low_rate_mode = 0;
- move16();
- test();
- if ( EQ_16( st->element_mode, IVAS_SCE ) && st->low_rate_mode )
- {
- tdm_low_rate_mode = 1;
- move16();
- }
- tdm_Pitch_reuse_flag = 0;
- move16();
- p_tdm_Pri_pitch_buf_fx = NULL;
- }
-
- /*----------------------------------------------------------------*
- * Updates in case of internal sampling rate switching
- *----------------------------------------------------------------*/
- test();
- test();
- IF( NE_16( st->last_L_frame, st->L_frame ) && ( st->last_core == ACELP_CORE || EQ_16( st->last_core, AMR_WB_CORE ) ) )
- {
- Word16 dec;
-
- IF( ( st->hPFstat->on != 0 ) )
- {
- Word16 mem_syn_r_size_old, mem_syn_r_size_new;
- mem_syn_r_size_old = mult_r( 2048, st->last_L_frame ); /* 1.25/20.f = 2048 (Q15)*/
- mem_syn_r_size_new = mult_r( 2048, st->L_frame ); /* 1.25/20.f = 2048 (Q15)*/
- lerp( st->hPFstat->mem_stp + sub( L_SYN_MEM, mem_syn_r_size_old ), st->hPFstat->mem_stp + sub( L_SYN_MEM, mem_syn_r_size_new ), mem_syn_r_size_new, mem_syn_r_size_old );
- lerp( st->hPFstat->mem_pf_in + sub( L_SYN_MEM, mem_syn_r_size_old ), st->hPFstat->mem_pf_in + sub( L_SYN_MEM, mem_syn_r_size_new ), mem_syn_r_size_new, mem_syn_r_size_old );
- }
-
- /* convert quantized LSP vector */
- st->rate_switching_reset = lsp_convert_poly_fx( st->lsp_old_fx, st->L_frame, 0 );
- move16();
-
- /* convert old quantized LSF vector */
- lsp2lsf_fx( st->lsp_old_fx, st->lsf_old_fx, M, int_fs );
-
- /* FEC - update adaptive LSF mean vector */
- Copy( st->lsf_old_fx, st->lsfoldbfi1_fx, M ); /*Qlog2(2.56)*/
- Copy( st->lsf_old_fx, st->lsfoldbfi0_fx, M ); /*Qlog2(2.56)*/
- Copy( st->lsf_old_fx, st->lsf_adaptive_mean_fx, M ); /*Qlog2(2.56)*/
-
- /* Reset LPC mem */
- IF( EQ_32( st->sr_core, INT_FS_16k ) )
- {
- Copy( GEWB2_Ave_fx, st->mem_AR_fx, M ); /*Qlog2(2.56)*/
- }
- ELSE
- {
- Copy( GEWB_Ave_fx, st->mem_AR_fx, M ); /*Qlog2(2.56)*/
- }
- set16_fx( st->mem_MA_fx, 0, M );
-
- /* update synthesis filter memories */
- dec = DEC;
- move16();
- if ( st->element_mode != EVS_MONO )
- {
- dec = DEC_IVAS;
- move16();
- }
- ivas_synth_mem_updt2_fx( st->L_frame, st->last_L_frame, st->old_exc_fx, st->mem_syn_r, st->mem_syn2_fx, NULL, dec );
- Copy( st->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); /*Q_exc*/
- Copy_Scale_sig( st->mem_syn2_fx, st->mem_syn1_fx, M, sub( -1, st->Q_syn ) ); /*Q-1*/
- Copy( st->mem_syn2_fx, st->mem_syn3_fx, M ); /*Q_syn*/
- }
-
- /* update buffer of old subframe pitch values */
- IF( NE_16( st->last_L_frame, st->L_frame ) )
- {
- IF( EQ_16( st->L_frame, L_FRAME ) )
- {
- IF( EQ_16( st->last_L_frame, L_FRAME32k ) )
- {
- tmpF_fx = 13107; // Q15
- move16();
- }
- ELSE IF( EQ_16( st->last_L_frame, 512 ) )
- {
- tmpF_fx = 16384; // Q15
- move16();
- }
- ELSE /* st->last_L_frame == L_FRAME16k */
- {
- tmpF_fx = 26214; // Q15
- move16();
- }
-
- FOR( i = NB_SUBFR16k - NB_SUBFR; i < NB_SUBFR16k; i++ )
- {
- st->old_pitch_buf_fx[i - 1] = Mpy_32_16_1( st->old_pitch_buf_fx[i], tmpF_fx ); // Q16
- move32();
- }
-
- FOR( i = 2 * NB_SUBFR16k - NB_SUBFR; i < 2 * NB_SUBFR16k; i++ )
- {
- st->old_pitch_buf_fx[i - 2] = Mpy_32_16_1( st->old_pitch_buf_fx[i], tmpF_fx ); // Q16
- move32();
- }
- }
- ELSE
- {
- Word16 exp = 0;
- move16();
- IF( EQ_16( st->last_L_frame, L_FRAME32k ) )
- {
- tmpF_fx = 16384; // Q15
- move16();
- }
- ELSE IF( EQ_16( st->last_L_frame, 512 ) )
- {
- tmpF_fx = 20480; // Q15
- move16();
- }
- ELSE /* st->last_L_frame == L_FRAME12k8 */
- {
- tmpF_fx = 20480; // Q14
- move16();
- exp = 1;
- move16();
- }
- FOR( i = 2 * NB_SUBFR - 1; i >= NB_SUBFR; i-- )
- {
- st->old_pitch_buf_fx[i + 2] = Mpy_32_16_1( L_shl( st->old_pitch_buf_fx[i], exp ), tmpF_fx ); // Q15
- move32();
- }
- st->old_pitch_buf_fx[NB_SUBFR + 1] = st->old_pitch_buf_fx[NB_SUBFR + 2];
- move32();
-
- FOR( i = NB_SUBFR - 1; i >= 0; i-- )
- {
- st->old_pitch_buf_fx[i + 1] = Mpy_32_16_1( L_shl( st->old_pitch_buf_fx[i], exp ), tmpF_fx ); // Q15
- move32();
- }
- st->old_pitch_buf_fx[0] = st->old_pitch_buf_fx[1];
- move32();
- }
- }
-
- IF( NE_16( st->bfi_pitch_frame, st->L_frame ) )
- {
- IF( EQ_16( st->L_frame, L_FRAME ) )
- {
- IF( EQ_16( st->bfi_pitch_frame, L_FRAME32k ) )
- {
- tmpF_fx = 13107; // Q15
- move16();
- }
- ELSE IF( EQ_16( st->bfi_pitch_frame, 512 ) )
- {
- tmpF_fx = 16384; // Q15
- move16();
- }
- ELSE /* st->bfi_pitch_frame == L_FRAME16k */
- {
- tmpF_fx = 26214; // Q15
- move16();
- }
- st->bfi_pitch_fx = mult_r( st->bfi_pitch_fx, tmpF_fx );
- move16();
- st->bfi_pitch_frame = L_FRAME;
- move16();
- }
- ELSE
- {
- Word16 exp = 0;
- move16();
- IF( EQ_16( st->bfi_pitch_frame, L_FRAME32k ) )
- {
- tmpF_fx = 16384; // Q15
- move16();
- }
- ELSE IF( EQ_16( st->bfi_pitch_frame, 512 ) )
- {
- tmpF_fx = 20480; // Q15
- move16();
- }
- ELSE /* st->bfi_pitch_frame == L_FRAME12k8 */
- {
- tmpF_fx = 20480; // Q14
- move16();
- exp = 1;
- move16();
- }
- st->bfi_pitch_fx = mult_r( shl_sat( st->bfi_pitch_fx, exp ), tmpF_fx );
- move16();
- st->bfi_pitch_frame = L_FRAME16k;
- move16();
- }
- }
- test();
- test();
- if ( EQ_16( st->last_bwidth, NB ) && NE_16( st->bwidth, NB ) && ( st->ini_frame != 0 ) )
- {
- st->rate_switching_reset = 1;
- move16();
- }
-
- /*----------------------------------------------------------------------*
- * GOOD frame
- *----------------------------------------------------------------------*/
-
- IF( !st->bfi )
- {
-
- /*----------------------------------------------------------------*
- * Decoding of TC subframe classification
- *----------------------------------------------------------------*/
-
- tc_subfr = -1;
- move16();
- IF( EQ_16( st->coder_type, TRANSITION ) )
- {
- tc_subfr = tc_classif_fx( st, st->L_frame );
- }
-
- /*----------------------------------------------------------------*
- * Decoding of GSC IVAS mode
- *----------------------------------------------------------------*/
- test();
- test();
- test();
- test();
- IF( st->element_mode > EVS_MONO && st->idchan == 0 && !( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) ) && !tdm_low_rate_mode )
- {
- test();
- test();
- IF( EQ_16( st->coder_type, AUDIO ) || ( EQ_16( st->coder_type, INACTIVE ) && EQ_16( st->inactive_coder_type_flag, 1 ) ) )
- {
- st->GSC_IVAS_mode = get_next_indice_fx( st, 2 );
- move16();
- }
- }
-
- /*----------------------------------------------------------------*
- * Decoding of inactive CNG frames
- *----------------------------------------------------------------*/
- test();
- IF( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) )
- {
- /* decode CNG parameters */
- IF( st->cng_type == LP_CNG )
- {
- CNG_dec_ivas_fx( st, last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, sid_bw, q_env_fx );
- Copy( Aq_fx, st->Aq_cng, add( M, 1 ) );
-
- /* comfort noise generation */
- local_element_mode = st->element_mode;
- move16();
- test();
- test();
- if ( ( EQ_16( nchan_out, 1 ) && EQ_16( st->element_mode, IVAS_CPE_DFT ) ) || EQ_16( st->masa_sid_format, 1 ) )
- {
- local_element_mode = IVAS_SCE; /* For DFT Stereo mono decoding, run CNG_exc as in SCE */
- move16();
- }
- CNG_exc_fx( st->core_brate, st->L_frame, &st->hTdCngDec->Enew_fx, &st->hTdCngDec->cng_seed, exc_fx, exc2_fx, &st->lp_ener_fx, st->last_core_brate, &st->first_CNG, &( st->hTdCngDec->cng_ener_seed ), bwe_exc_fx, allow_cn_step, &st->hTdCngDec->last_allow_cn_step, st->prev_Q_exc, st->Q_exc, st->hTdCngDec->num_ho, q_env_fx, st->hTdCngDec->lp_env_fx, st->hTdCngDec->old_env_fx, st->hTdCngDec->exc_mem_fx, st->hTdCngDec->exc_mem1_fx, sid_bw, &st->hTdCngDec->cng_ener_seed1, exc3_fx, st->Opt_AMR_WB, local_element_mode );
- }
- ELSE
- {
- test();
- IF( EQ_32( st->core_brate, SID_2k40 ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) )
- {
- Word16 old_NoiseEstExp = st->hFdCngDec->hFdCngCom->sidNoiseEstExp;
- move16();
- FdCng_decodeSID_ivas_fx( st );
- rescale_fdCngDec( st->hFdCngDec, sub( old_NoiseEstExp, st->hFdCngDec->hFdCngCom->sidNoiseEstExp ) );
- Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, sub( norm_s( st->hFdCngDec->hFdCngCom->A_cng[0] ), Q2 ) ); // Qx
- *sid_bw = 0;
- move16();
- }
-
- IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) )
- {
- assert( nchan_out == 1 );
-
- FOR( i = 0; i < NPART; i++ )
- {
- st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] = Madd_32_32( Mpy_32_32( STEREO_DFT_FD_FILT_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] ),
- STEREO_DFT_FD_FILT_COMP_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEst[i] );
- move32();
- }
-
- Word16 new_sidNoiseEstExp = 31 - Q4;
- move16();
- Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, new_sidNoiseEstExp ) ); // Q(31-sidNoiseEstExp)
- Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEst, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, new_sidNoiseEstExp ) ); // Q(31-sidNoiseEstExp)
- st->hFdCngDec->hFdCngCom->sidNoiseEstExp = new_sidNoiseEstExp;
- move16();
- Word16 new_cngNoiseLevelExp = 31 - Q4;
- move16();
- Scale_sig32( st->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, sub( st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, new_cngNoiseLevelExp ) ); // Q(31-cngNoiseLevelExp)
- st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = new_cngNoiseLevelExp;
- move16();
-
- test();
- ApplyFdCng_ivas_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( EQ_16( st->coder_type, AUDIO ) && !st->GSC_noisy_speech ) );
-
- IF( st->hFdCngDec->hFdCngCom->cngNoiseLevelExp < 0 )
- {
- Scale_sig32( st->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, st->hFdCngDec->hFdCngCom->cngNoiseLevelExp ); // Q(31-cngNoiseLevelExp)
- st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = 0;
- move16();
- }
- }
-
- IF( !read_sid_info )
- {
- Word32 noise_lvl_highest_fx;
-
- noise_lvl_highest_fx = st->hFdCngDec->hFdCngCom->cngNoiseLevel[( st->hFdCngDec->hFdCngCom->stopFFTbin - st->hFdCngDec->hFdCngCom->startBand ) - 1];
- move32();
- FOR( Word16 b = ( st->hFdCngDec->hFdCngCom->stopFFTbin - st->hFdCngDec->hFdCngCom->startBand ); b < st->hFdCngDec->hFdCngCom->stopBand; b++ )
- {
- st->hFdCngDec->hFdCngCom->cngNoiseLevel[b] = noise_lvl_highest_fx;
- move32();
- }
- }
-
- generate_comfort_noise_dec_ivas_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 1, nchan_out );
-
- FdCng_exc( st->hFdCngDec->hFdCngCom, &st->CNG_mode, st->L_frame, st->lsp_old_fx, st->first_CNG, st->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx );
-
- Copy( exc2_fx, exc3_fx, st->L_frame );
- }
-
- Word16 delta_mem_scale = 3;
- move16();
- test();
- if ( LT_32( st->lp_ener_fx, 40 ) && st->cng_type == LP_CNG ) /* very low energy frames, less than 0.3125 */
- {
- delta_mem_scale = 0;
- move16();
- }
- i = st->Q_exc;
- move16();
- test();
- IF( st->hMusicPF && st->hGSCDec )
- {
- Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame,
- L_FRAME32k, 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE );
- }
- IF( st->hPFstat != NULL )
- {
- Rescale_mem( st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn2_fx, st->mem_syn_clas_estim_fx, delta_mem_scale,
- &st->mem_deemph_fx, st->hBPF->pst_old_syn_fx, &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, 0, 0, NULL );
- }
- ELSE
- {
- Rescale_mem( st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn2_fx, st->mem_syn_clas_estim_fx, delta_mem_scale,
- &st->mem_deemph_fx, NULL, NULL, &st->agc_mem_fx[1], NULL, 0, 0, NULL );
- }
- Copy_Scale_sig( exc2_fx, exc2_fx, st->L_frame, sub( st->Q_exc, i ) ); // Q_exc
-
- /* update past excitation signals for LD music post-filter */
- IF( st->hMusicPF != NULL )
- {
- Copy( st->hMusicPF->dct_post_old_exc_fx + L_FRAME, st->hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
- Copy( exc2_fx, st->hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
-
- /* Update music post processing values */
- /* Filter energies update */
- FOR( i = 0; i < DCT_L_POST; i++ )
- {
- st->hMusicPF->filt_lfE_fx[i] = add( 9830, mult_r( 22937, st->hMusicPF->filt_lfE_fx[i] ) ); // Q15, 9830 =.3f in Q15, 22937=.7f in Q15
- move16();
- }
- }
-
-
- /* synthesis at 12.8kHz sampling rate */
- move16();
- syn_12k8_fx( st->L_frame, Aq_fx, exc2_fx, psyn_fx, st->mem_syn2_fx, 1, st->Q_exc, st->Q_syn );
- syn_12k8_fx( st->L_frame, Aq_fx, exc3_fx, syn1_fx, st->mem_syn3_fx, 1, st->Q_exc, st->Q_syn );
- st->Q_syn_cng = st->Q_syn;
- move16();
- st->Q_exc_cng = st->Q_exc;
- move16();
- /* reset the decoder */
- CNG_reset_dec_fx( st, pitch_buf_fx, voice_factors_fx );
-
- /* update st->mem_syn1 for ACELP core switching */
- Copy_Scale_sig( st->mem_syn3_fx, st->mem_syn1_fx, M, sub( -1, st->Q_syn ) ); // Q(-1)
-
- /* update old synthesis for classification */
- Copy( syn1_fx + st->L_frame - L_SYN_MEM_CLAS_ESTIM, st->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM );
-
- /* save and delay synthesis to be used by SWB BWE */
- Copy_Scale_sig( syn1_fx, temp_buf_fx, st->L_frame, sub( -1, st->Q_syn ) ); // Q_syn -> Q(-1)
- IF( st->hBWE_FD != NULL )
- {
- save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx );
- }
- }
-
- /*----------------------------------------------------------------*
- * Decoding of all other frames
- *----------------------------------------------------------------*/
-
- ELSE
- {
-
- /*-----------------------------------------------------------------*
- * Configure ACELP bit allocation
- *-----------------------------------------------------------------*/
-
- nb_bits = 0;
- move16();
- st->acelp_cfg.FEC_mode = 0;
- move16();
- uc_two_stage_flag = 0;
- move16();
- test();
- IF( !st->nelp_mode_dec && !st->ppp_mode_dec )
- {
- Word16 tc_subfr_tmp;
-
- tc_subfr_tmp = tc_subfr;
- move16();
- if ( LT_16( tc_subfr_tmp, L_SUBFR ) )
- {
- tc_subfr_tmp = 0;
- move16();
- }
-
- if ( EQ_16( tc_subfr, TC_0_192 ) )
- {
- nb_bits = -1;
- move16();
- }
-
- config_acelp1_IVAS( DEC, st->total_brate, st->core_brate, st->core, st->extl_orig, st->extl_brate_orig, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), st->next_bit_pos, st->coder_type, st->inactive_coder_type_flag, tc_subfr_tmp, 1, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
-
- test();
- test();
- IF( EQ_16( st->coder_type, TRANSITION ) && LT_16( tc_subfr, L_SUBFR ) && EQ_16( st->L_frame, L_FRAME ) )
- {
- config_acelp1_IVAS( DEC, st->total_brate, st->core_brate, st->core, st->extl_orig, st->extl_brate_orig, st->L_frame, -1, &( st->acelp_cfg ), st->next_bit_pos, TRANSITION, -1, tc_subfr, 2, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
- }
- }
-
- /*-----------------------------------------------------------------*
- * After CNG period, use the most up-to-date LSPs
- *-----------------------------------------------------------------*/
-
- test();
- test();
- IF( st->hTdCngDec != NULL && ( st->last_core_brate == FRAME_NO_DATA || EQ_32( st->last_core_brate, SID_2k40 ) ) )
- {
- Copy( st->lspCNG_fx, st->lsp_old_fx, M ); /*Q15*/
- lsp2lsf_fx( st->lspCNG_fx, st->lsf_old_fx, M, int_fs );
- }
-
- /*-----------------------------------------------------------------*
- * Reset higher ACELP pre-quantizer in case of switching
- *-----------------------------------------------------------------*/
-
- IF( !st->use_acelp_preq )
- {
- st->mem_preemp_preQ_fx = 0;
- move16();
- st->last_nq_preQ = 0;
- move16();
- st->last_code_preq = 0;
- move16();
- }
- st->use_acelp_preq = 0;
- move16();
- /*-----------------------------------------------------------------*
- * LSF de-quantization and interpolation
- *-----------------------------------------------------------------*/
-
- IF( !tdm_lp_reuse_flag )
- {
- lsf_dec_ivas_fx( st, tc_subfr, Aq_fx, &LSF_Q_prediction, lsf_new_fx, lsp_new_fx, lsp_mid_fx, tdm_low_rate_mode, tdm_lsfQ_PCh_fx );
- }
- ELSE
- {
- const Word16 *pt_interp_2_fx;
-
- IF( NE_16( st->active_cnt, 1 ) )
- {
- Word16 beta_index;
-
- beta_index = get_next_indice_fx( st, TDM_IC_LSF_PRED_BITS );
- tdm_SCh_lsf_reuse_fx( DEC, st->element_brate, lsf_new_fx, lsp_new_fx, tdm_lsfQ_PCh_fx, NULL, &beta_index );
- }
- ELSE
- {
- Copy( tdm_lspQ_PCh_fx, lsp_new_fx, M );
- Copy( tdm_lsfQ_PCh_fx, lsf_new_fx, M );
- }
-
- IF( st->rate_switching_reset )
- {
- /* extrapolation in case of unstable LSF convert */
- Copy( lsp_new_fx, st->lsp_old_fx, M );
- Copy( lsf_new_fx, st->lsf_old_fx, M );
- }
-
- pt_interp_2_fx = interpol_frac_fx;
- test();
- if ( EQ_16( tdm_low_rate_mode, 1 ) && GT_16( st->coder_type, UNVOICED ) )
- {
- pt_interp_2_fx = interpol_frac2_fx;
- }
-
- IF( EQ_16( st->active_cnt, 1 ) )
- {
- Copy( lsp_new_fx, st->lsp_old_fx, M );
- lsp2lsf_fx( lsp_new_fx, st->lsf_old_fx, M, st->sr_core );
- }
-
- /* LSP interpolation and conversion of LSPs to A(z) */
- int_lsp_fx( st->L_frame, st->lsp_old_fx, lsp_new_fx, Aq_fx, M, pt_interp_2_fx, 0 );
- /* Check LSF stability (distance between old LSFs and current LSFs) */
- st->stab_fac_fx = lsf_stab_ivas_fx( lsf_new_fx, st->lsf_old_fx, 0, st->L_frame );
- move16();
- }
- test();
- IF( EQ_16( st->last_core, HQ_CORE ) && st->element_mode > EVS_MONO )
- {
- /* Prepare ACB memory from last HQ frame */
- old_exc_s_fx = st->old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame );
- tmpF_fx = *old_exc_s_fx;
- st->mem_deemph_fx = shl_sat( old_exc_s_fx[st->L_frame - 1], st->Q_syn ); /* Q0 -> Q_syn */
- move16();
- PREEMPH_FX( old_exc_s_fx, st->preemph_fac, L_FRAME16k, &tmpF_fx );
- Copy( old_exc_s_fx + sub( st->L_frame, M ), st->mem_syn2_fx, M );
- Scale_sig( st->mem_syn2_fx, M, st->Q_syn ); /* Q0 -> Q_syn */
- Residu3_fx( Aq_fx, old_exc_s_fx, old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame ), st->L_frame, 0 );
- Scale_sig( old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame ), st->L_frame, st->Q_exc ); /* Q0 -> Q_exc */
- }
- test();
- IF( st->last_core != ACELP_CORE && st->element_mode > EVS_MONO )
- {
- /* Prepare ACB memory of old_bwe_exc */
- IF( EQ_16( st->L_frame, L_FRAME ) )
- {
- lerp( old_exc_fx, old_bwe_exc_fx, L_EXC_MEM_DEC * HIBND_ACB_L_FAC, L_EXC_MEM_DEC );
- }
- ELSE
- {
- lerp( old_exc_fx, old_bwe_exc_fx, L_EXC_MEM_DEC << 1, L_EXC_MEM_DEC );
- }
- }
-
- /*-----------------------------------------------------------------*
- * FEC - first good frame after lost frame(s) (possibility to correct the ACB)
- *-----------------------------------------------------------------*/
-
- IF( st->acelp_cfg.FEC_mode > 0 )
- {
- last_pulse_pos = 0;
- move16();
- /* decode the last glottal pulse position */
- T0_tmp = FEC_pos_dec_fx( st, &last_pulse_pos, &enr_q_fx, nb_bits );
- test();
- test();
- IF( NE_16( st->last_core, HQ_CORE ) || ( EQ_16( st->last_core, HQ_CORE ) && st->last_con_tcx ) )
- {
- test();
- test();
- test();
- test();
- test();
- test();
- IF( EQ_16( st->clas_dec, SIN_ONSET ) && last_pulse_pos != 0 && EQ_16( st->prev_bfi, 1 ) )
- {
- FEC_SinOnset_fx( old_exc_fx + L_EXC_MEM_DEC - L_EXC_MEM, last_pulse_pos, T0_tmp, enr_q_fx, Aq_fx, st->L_frame, st->Q_exc );
- }
- ELSE IF( ( EQ_16( st->coder_type, GENERIC ) || EQ_16( st->coder_type, VOICED ) ) && last_pulse_pos != 0 && EQ_16( st->old_bfi_cnt, 1 ) && st->hWIDec != NULL )
- {
- do_WI = FEC_enhACB_fx( st->L_frame, st->last_L_frame, old_exc_fx + L_EXC_MEM_DEC - L_EXC_MEM, T0_tmp, last_pulse_pos, st->bfi_pitch_fx );
- }
- }
- }
-
- /*------------------------------------------------------------*
- * In case of first frame after an erasure and transition from voiced to unvoiced or inactive
- * redo the LPC interpolation
- *------------------------------------------------------------*/
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( st->stab_fac_fx == 0 ) && ( st->old_bfi_cnt > 0 ) && NE_16( st->clas_dec, VOICED_CLAS ) && NE_16( st->clas_dec, ONSET ) && ( st->relax_prev_lsf_interp == 0 ) && !( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( st->idchan, 1 ) ) )
- {
- int_lsp4_ivas_fx( st->L_frame, st->lsp_old_fx, lsp_mid_fx, lsp_new_fx, Aq_fx, M, 2 );
- }
-
- /*---------------------------------------------------------------*
- * Decoding of the scaled predicted innovation energy
- *---------------------------------------------------------------*/
-
- IF( nb_bits > 0 )
- {
- indice = get_next_indice_fx( st, nb_bits );
- Es_pred_dec_fx( &Es_pred_fx, indice, nb_bits, uc_two_stage_flag );
- }
-
- /*------------------------------------------------------------*
- * Decode excitation according to coding type
- *------------------------------------------------------------*/
- test();
- test();
- IF( tdm_low_rate_mode ) /* tdm stereo low rate mode */
- {
- IF( LE_16( st->coder_type, UNVOICED ) )
- {
- tdm_low_rate_dec_fx( st, dct_exc_tmp_fx /*, &tmp_noise*/, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx );
- tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
- }
- ELSE /* GENERIC */
- {
- decod_gen_2sbfr_ivas_fx( st, sharpFlag, Aq_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, gain_buf_fx, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx );
-
- IF( EQ_16( st->element_mode, IVAS_CPE_TD ) )
- {
- tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
- }
- }
- }
- ELSE IF( st->nelp_mode_dec )
- {
- /* SC-VBR - NELP frames */
- Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st->Q_exc ) ); // Q0
- st->Q_exc = 0;
- move16();
- /* SC-VBR - NELP frames */
- decod_nelp_fx( st, &tmp_noise_fx, pitch_buf_fx, exc_fx, exc2_fx, voice_factors_fx, bwe_exc_fx, &st->Q_exc, st->bfi, gain_buf_fx );
- Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st->Q_exc ), st->Q_subfr, exc2_fx, L_FRAME, st->coder_type );
- }
- ELSE IF( EQ_16( st->coder_type, UNVOICED ) )
- {
- /* UNVOICED frames */
- decod_unvoiced_ivas_fx( st, Aq_fx, Es_pred_fx, uc_two_stage_flag, st->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, gain_buf_fx );
- tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
- }
- ELSE IF( st->ppp_mode_dec )
- {
- Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st->Q_exc ) ); // Q0
- st->Q_exc = 0;
- move16();
- /* SC-VBR - PPP frames */
- IF( NE_32( ( error = decod_ppp_fx( st, Aq_fx, pitch_buf_fx, exc_fx, exc2_fx, st->bfi, gain_buf_fx, voice_factors_fx, bwe_exc_fx ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st->Q_exc ), st->Q_subfr, exc2_fx, L_FRAME, st->coder_type );
- }
- ELSE IF( EQ_16( st->coder_type, TRANSITION ) )
- {
- decod_tran_fx( st, st->L_frame, tc_subfr, Aq_fx, Es_pred_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, unbits, sharpFlag, gain_buf_fx );
- }
- ELSE IF( EQ_16( st->coder_type, AUDIO ) || ( ( st->coder_type == INACTIVE ) && st->inactive_coder_type_flag ) )
- {
- /* AUDIO and INACTIVE frames (coded by GSC technology) */
- decod_audio_ivas_fx( st, dct_exc_tmp_fx, Aq_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf_fx,
- tdm_lp_reuse_flag, tdm_low_rate_mode, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx );
- tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
- }
- ELSE
- {
- /* GENERIC, VOICED and INACTIVE frames (coded by AVQ technology) */
- IF( NE_32( ( error = decod_gen_voic_ivas_fx( st, st->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf_fx, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( EQ_16( st->element_mode, IVAS_CPE_TD ) )
- {
- tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
- }
- }
-
- /* synthesis for ACELP core switching and SWB BWE */
- syn_12k8_fx( st->L_frame, Aq_fx, exc_fx, temp_buf_fx, st->mem_syn1_fx, 1, st->Q_exc, -1 );
-
- /* save and delay synthesis to be used by SWB BWE */
- IF( st->hBWE_FD != NULL )
- {
- save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx );
- }
-
- /*-----------------------------------------------------------------*
- * Apply energy matching when switching to inactive frames
- *-----------------------------------------------------------------*/
-
- Inac_switch_ematch_ivas_fx( exc2_fx, dct_exc_tmp_fx, st->hGSCDec->lt_ener_per_band_fx, st->coder_type, st->inactive_coder_type_flag, st->L_frame, st->Q_exc, st->bfi, st->last_core, st->last_codec_mode, tdm_low_rate_mode, st->element_mode );
-
- /*------------------------------------------------------------*
- * Decode information and modify the excitation signal of stationary unvoiced frames
- *------------------------------------------------------------*/
- test();
- test();
- test();
- test();
- IF( !( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) ) && NE_16( st->nelp_mode_dec, 1 ) && !( EQ_16( st->element_mode, IVAS_SCE ) && tdm_low_rate_mode ) )
- {
- stat_noise_uv_dec_fx( st, lsp_new_fx, lsp_mid_fx, Aq_fx, exc2_fx, uc_two_stage_flag );
- }
-
- /*------------------------------------------------------------*
- * Save filter memory in case the synthesis is redone after scaling
- * Synthesis at 12k8 Hz sampling rate
- *------------------------------------------------------------*/
-
- /* update past excitation signals for LD music post-filter */
- IF( st->hMusicPF != NULL )
- {
- Copy( st->hMusicPF->dct_post_old_exc_fx + L_FRAME, st->hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
- Copy( exc2_fx, st->hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
- Copy( st->hMusicPF->dct_post_old_exc_fx, exc_buffer_fx, DCT_L_POST - OFFSET2 );
- }
-
- test();
- test();
- test();
- IF( ( EQ_16( st->coder_type, AUDIO ) && !st->GSC_noisy_speech ) || ( GE_16( st->GSC_IVAS_mode, 1 ) && EQ_16( st->L_frame, L_FRAME ) ) )
- {
- Word16 last_coder_type = st->last_coder_type;
- move16();
- test();
- test();
- test();
- if ( ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) ) || ( GE_16( st->GSC_IVAS_mode, 1 ) && ( st->GSC_noisy_speech == 0 ) ) )
- {
- last_coder_type = AUDIO;
- move16();
- }
-
- Word16 qdct = 0;
- move16();
- /* Extrapolation of the last future part, windowing and high resolution DCT transform */
- Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, st->hMusicPF->filt_lfE_fx, st->last_core, st->element_mode, pitch_buf_fx, st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct );
-
- /* LD music post-filter */
- LD_music_post_filter_fx( st->hMusicPF, dct_buffer_fx, dct_buffer_fx, st->core_brate, &st->hMusicPF->Old_ener_Q, AUDIO, last_coder_type, qdct );
-
- /* Inverse DCT transform, retrieval of the aligned excitation, re-synthesis */
- Copy( st->mem_syn2_fx, mem_tmp_fx, M ); /*Q_syn*/
- Post_music_postP_fx( dct_buffer_fx, exc2_fx, st->mem_syn2_fx, st->mem_syn2_fx, Aq_fx, psyn_fx, &st->Q_exc, &st->prev_Q_syn,
- &st->Q_syn, st->mem_syn_clas_estim_fx, 0, &st->mem_deemph_fx, st->hBPF->pst_old_syn_fx,
- &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, temp_buf_fx, mem_tmp_fx );
- }
- ELSE
- {
- /* Core synthesis at 12.8kHz or 16kHz */
- i = 1;
- move16();
- test();
- if ( st->coder_type == INACTIVE && st->element_mode == EVS_MONO )
- {
- i = 0;
- move16();
- }
- /* add extra headroom in case a CNA addition is likely (i.e. st_fx->psf_lp_noise_fx is close to the threshold) */
- Word16 k = 0;
- move16();
- test();
- test();
- if ( st->coder_type == INACTIVE && st->flag_cna && GE_16( round_fx( L_shl( st->lp_noise, 1 ) ), 15 << 7 ) )
- {
- k = 1;
- move16();
- }
-
- Rescale_mem( st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn2_fx, st->mem_syn_clas_estim_fx, 4, &st->mem_deemph_fx,
- st->hBPF->pst_old_syn_fx, &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, i, k, temp_buf_fx );
-
- Copy( st->mem_syn2_fx, mem_tmp_fx, M ); /*Q_syn*/
- syn_12k8_fx( st->L_frame, Aq_fx, exc2_fx, psyn_fx, st->mem_syn2_fx, 1, st->Q_exc, st->Q_syn );
-
- IF( st->hMusicPF != NULL )
- {
- FOR( i = 0; i < DCT_L_POST; i++ )
- {
- st->hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, st->hMusicPF->filt_lfE_fx[i] ) );
- move16();
- }
- }
- }
-
- /*------------------------------------------------------------*
- * FEC - Estimate the classification information
- *------------------------------------------------------------*/
- FEC_clas_estim_fx( st, st->Opt_AMR_WB, st->L_frame, &st->clas_dec, st->coder_type, pitch_buf_fx,
- psyn_fx, &st->lp_ener_FER_fx, &st->decision_hyst,
- NULL, NULL, NULL, NULL, 0, NULL, st->Q_syn, temp_buf_fx,
- st->mem_syn_clas_estim_fx, &st->classifier_Q_mem_syn,
- 0, 0, 0, st->last_core_brate, st->acelp_cfg.FEC_mode );
- /*------------------------------------------------------------*
- * FEC - Estimate pitch
- *------------------------------------------------------------*/
-
- FEC_pitch_estim_fx( st->Opt_AMR_WB, st->last_core, st->L_frame, st->clas_dec, st->last_good, pitch_buf_fx, st->old_pitch_buf_fx,
- &st->bfi_pitch_fx, &st->bfi_pitch_frame, &st->upd_cnt, st->coder_type, st->element_mode );
-
- /*------------------------------------------------------------*
- * FEC - Smooth the speech energy evolution when recovering after a BAD frame
- * (smoothing is performed in the excitation domain and signal is resynthesized after)
- *------------------------------------------------------------*/
-
-
- Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); // Q0
- FEC_scale_syn_ivas_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction,
- &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate,
- exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, 0 );
- test();
- test();
- test();
- test();
- /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */
- IF( ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) && LE_32( st->total_brate, ACELP_7k20 ) ) || EQ_32( st->total_brate, ACELP_7k20 ) || EQ_32( st->total_brate, ACELP_8k00 ) )
- {
- frame_ener_fx( st->L_frame, st->clas_dec, psyn_fx, pitch_buf_tmp[( ( st->L_frame ) >> 6 ) - 1], &st->enr_old_fx, st->L_frame, st->Q_syn, 3, 0 );
- }
- }
-
- } /* End of GOOD FRAME */
-
- /*----------------------------------------------------------------*
- * BAD frame
- *----------------------------------------------------------------*/
-
- ELSE
- {
- /* SC-VBR */
- if ( EQ_16( st->last_nelp_mode_dec, 1 ) )
- {
- st->nelp_mode_dec = 1;
- move16();
- }
- test();
- test();
- /* long burst frame erasures */
- if ( GT_16( st->nbLostCmpt, 5 ) && GE_16( st->clas_dec, VOICED_CLAS ) && LT_16( st->clas_dec, INACTIVE_CLAS ) )
- {
- st->last_good = VOICED_TRANSITION;
- move16();
- }
-
- /* LSF estimation and A(z) calculation */
- lsf_dec_bfi( MODE1, lsf_new_fx, st->lsf_old_fx, st->lsf_adaptive_mean_fx, NULL, st->mem_MA_fx, st->mem_AR_fx, st->stab_fac_fx, st->last_coder_type, st->L_frame, st->last_good, st->nbLostCmpt, 0, NULL, NULL, NULL, st->hGSCDec->Last_GSC_pit_band_idx, st->Opt_AMR_WB, 0, st->bwidth );
-
- FEC_lsf2lsp_interp( st, st->L_frame, Aq_fx, lsf_new_fx, lsp_new_fx );
- IF( EQ_16( st->nelp_mode_dec, 1 ) )
- {
- /* SC-VBR */
- Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st->Q_exc ) ); // Q0
- st->Q_exc = 0;
- move16();
-
- decod_nelp_fx( st, &tmp_noise_fx, pitch_buf_fx, exc_fx, exc2_fx, voice_factors_fx, bwe_exc_fx, &st->Q_exc, st->bfi, gain_buf_fx );
- FEC_pitch_fx = pitch_buf_fx[3];
- move16();
- Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st->Q_exc ), st->Q_subfr, exc2_fx, L_FRAME, st->coder_type );
- }
- ELSE
- {
- /* calculation of excitation signal */
- FEC_exc_estim_fx( st, st->L_frame, exc_fx, exc2_fx, dct_exc_tmp_fx, pitch_buf_fx, voice_factors_fx, &FEC_pitch_fx, bwe_exc_fx, lsf_new_fx, &st->Q_exc, &tmp_noise_fx );
-
- Rescale_exc( NULL, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame, L_FRAME32k, (Word32) 0,
- &( st->Q_exc ), st->Q_subfr, exc2_fx, st->L_frame, st->last_coder_type );
-
- tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/
-
- /* SC-VBR */
- st->prev_gain_pit_dec_fx = st->lp_gainp_fx;
- move16();
- }
-
- /* synthesis for ACELP core switching and SWB BWE */
- syn_12k8_fx( st->L_frame, Aq_fx, exc_fx, temp_buf_fx, st->mem_syn1_fx, 1, st->Q_exc, -1 );
-
- /* save and delay synthesis to be used by SWB BWE */
- IF( st->hBWE_FD != NULL )
- {
- save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx );
- }
-
- /* Apply energy matching when switching to inactive frames */
- Inac_switch_ematch_ivas_fx( exc2_fx, dct_exc_tmp_fx, st->hGSCDec->lt_ener_per_band_fx, st->coder_type, st->inactive_coder_type_flag, st->L_frame, st->Q_exc, st->bfi, st->last_core, st->last_codec_mode, tdm_low_rate_mode, st->element_mode );
-
- /* update past excitation signals for LD music post-filter */
- IF( st->hMusicPF != NULL )
- {
- Copy( st->hMusicPF->dct_post_old_exc_fx + L_FRAME, st->hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 );
- Copy( exc2_fx, st->hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME );
-
- /* Update music post processing values */
- /* Filter energies update */
- FOR( i = 0; i < DCT_L_POST; i++ )
- {
- st->hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( 1228 << 16, 22938, st->hMusicPF->filt_lfE_fx[i] ) );
- move16();
- }
- /* Update circular buffer, keep last energy difference unchanged */
- FOR( i = 1; i < MAX_LT; i++ )
- {
- st->hMusicPF->LDm_lt_diff_etot_fx[i - 1] = st->hMusicPF->LDm_lt_diff_etot_fx[i];
- move16();
- }
- }
-
- /* synthesis at 12k8 Hz sampling rate */
- /* add extra headroom in case a CNA addition is likely (i.e. st_fx->psf_lp_noise_fx is close to the threshold) */
- Word16 k = 0;
- move16();
- test();
- test();
- if ( st->coder_type == INACTIVE && st->flag_cna && GE_16( round_fx( L_shl( st->lp_noise, 1 ) ), 15 << 7 ) )
- {
- k = 1;
- move16();
- }
-
- Rescale_mem( st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn2_fx, st->mem_syn_clas_estim_fx, 4, &st->mem_deemph_fx,
- st->hBPF->pst_old_syn_fx, &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, 1, k, temp_buf_fx );
- test();
- IF( EQ_32( st->total_brate, ACELP_7k20 ) || EQ_32( st->total_brate, ACELP_8k00 ) )
- {
- Copy( st->mem_syn2_fx, mem_tmp_fx, M );
- }
- syn_12k8_fx( st->L_frame, Aq_fx, exc2_fx, psyn_fx, st->mem_syn2_fx, 1, st->Q_exc, st->Q_syn );
-
- /* update buffer for classifier */
- IF( st->hWIDec != NULL )
- {
- Copy( exc2_fx + sub( st->L_frame, L_EXC_MEM ), st->hWIDec->old_exc2_fx, L_EXC_MEM );
- Copy( psyn_fx + sub( st->L_frame, L_EXC_MEM ), st->hWIDec->old_syn2_fx, L_EXC_MEM );
- }
- st->prev_Q_exc_fr = st->Q_exc;
- move16();
- st->prev_Q_syn_fr = st->Q_syn;
- move16();
- Copy( psyn_fx + sub( st->L_frame, L_SYN_MEM_CLAS_ESTIM ), st->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM );
-
- /*------------------------------------------------------------*
- * FEC - Smooth the speech energy evolution when recovering after a BAD frame
- * (smoothing is performed in the excitation domain and signal is resynthesized after)
- *------------------------------------------------------------*/
- test();
- IF( EQ_32( st->total_brate, ACELP_7k20 ) || EQ_32( st->total_brate, ACELP_8k00 ) )
- {
- Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); // Q0
-
- FEC_scale_syn_ivas_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction,
- &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate,
- exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, 0 );
- }
-
- /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */
- frame_ener_fx( st->L_frame, st->last_good, psyn_fx, shr( add( FEC_pitch_fx, 32 ), 6 ), &st->enr_old_fx, st->L_frame, st->Q_syn, 3, 0 );
-
- IF( NE_16( st->nelp_mode_dec, 1 ) )
- {
- /* modify the excitation signal of stationary unvoiced frames */
- stat_noise_uv_mod_fx( st->coder_type, 0, st->lsp_old_fx, lsp_new_fx, lsp_new_fx, Aq_fx, exc2_fx, st->Q_exc, 1, &st->ge_sm_fx,
- &st->uv_count, &st->act_count, st->lspold_s_fx, &st->noimix_seed, &st->min_alpha_fx,
- &st->exc_pe_fx, st->core_brate, st->bwidth, &st->Q_stat_noise, &st->Q_stat_noise_ge );
- }
- }
-
- IF( st->hBWE_TD != NULL )
- {
- IF( EQ_16( st->L_frame, L_FRAME ) )
- {
- Copy( Aq_fx + 2 * ( M + 1 ), st->hBWE_TD->cur_sub_Aq_fx, ( M + 1 ) );
- }
- ELSE
- {
- Copy( Aq_fx + 3 * ( M + 1 ), st->hBWE_TD->cur_sub_Aq_fx, ( M + 1 ) );
- }
- }
-
- /*--------------------------------------------------------*
- * Apply NB postfilter in case of 8kHz output
- *--------------------------------------------------------*/
- test();
- IF( st->last_bwidth == NB && st->hPFstat != NULL )
- {
- Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); // Q0
- IF( st->bwidth == NB )
- {
- st->hPFstat->on = 1;
- move16();
- nb_post_filt_fx( st->L_frame, st->hPFstat, &st->psf_lp_noise_fx, tmp_noise_fx, psyn_fx, Aq_fx, pitch_buf_tmp, st->coder_type, st->BER_detect, 0 );
- }
- ELSE
- {
- st->hPFstat->on = 0;
- move16();
- nb_post_filt_fx( st->L_frame, st->hPFstat, &st->psf_lp_noise_fx, tmp_noise_fx, psyn_fx, Aq_fx, pitch_buf_tmp, AUDIO, st->BER_detect, 0 );
- }
- }
- ELSE
- {
- st->psf_lp_noise_fx = round_fx( L_shl( st->lp_noise, 1 ) );
- move16();
- }
-
- /*------------------------------------------------------------------*
- * Perform fixed deemphasis through 1/(1 - g*z^-1)
- *-----------------------------------------------------------------*/
-
- /* update old synthesis buffer - needed for ACELP internal sampling rate switching */
- Copy( psyn_fx + sub( st->L_frame, L_SYN_MEM ), st->mem_syn_r, L_SYN_MEM );
- deemph_fx( psyn_fx, st->preemph_fac, st->L_frame, &( st->mem_deemph_fx ) );
- unscale_AGC( psyn_fx, st->Q_syn, syn_fx_tmp2, st->agc_mem_fx, st->L_frame );
- Copy( syn_fx_tmp2, psyn_fx, st->L_frame );
- IF( st->hTcxDec != NULL )
- {
- Copy_Scale_sig( psyn_fx + shr( st->L_frame, 1 ), st->hTcxDec->old_syn_Overl, shr( st->L_frame, 1 ), sub( -1, st->Q_syn ) ); /*Q-1*/
- st->hTcxDec->Q_old_syn_Overl = -1;
- }
- Copy_Scale_sig( psyn_fx + sub( st->L_frame, M + 1 ), st->syn, M + 1, sub( 0, st->Q_syn ) ); /*Q0*/
-
- /*------------------------------------------------------------------*
- * Formant post-filter
- *-----------------------------------------------------------------*/
-
- test();
- test();
- test();
- test();
- IF( st->hPFstat != NULL && GE_16( st->last_bwidth, WB ) && ( GT_32( st->core_brate, ACELP_24k40 ) || st->element_mode > EVS_MONO ) && LE_32( st->core_brate, ACELP_32k ) )
- {
- st->hPFstat->on = 1;
- move16();
- /*----ftf conversions---*/
- Copy( psyn_fx, temp_buf_fx + L_SYN_MEM, L_FRAME16k );
-
- set16_fx( st->hPFstat->mem_zero, 0, M );
-
- formant_post_filt_ivas_fx( st->hPFstat, temp_buf_fx + L_SYN_MEM, Aq_fx, psyn_fx, st->L_frame, st->lp_noise, st->total_brate, 0 );
- }
- ELSE IF( st->hPFstat != NULL && GE_16( st->last_bwidth, WB ) )
- {
- IF( st->hPFstat->on )
- {
- Copy( st->hPFstat->mem_pf_in + L_SYN_MEM - M, temp_buf_fx, M );
- Copy( psyn_fx, temp_buf_fx + M, L_SUBFR );
-
- Residu3_fx( Aq_fx, temp_buf_fx + M, temp_buf_fx + M + L_SUBFR, L_SUBFR, 1 );
- E_UTIL_synthesis( 1, Aq_fx, temp_buf_fx + M + L_SUBFR, temp_buf_fx, L_SUBFR, st->hPFstat->mem_stp + L_SYN_MEM - M, 0, M );
- scale_st_fx( psyn_fx, temp_buf_fx, &st->hPFstat->gain_prec, L_SUBFR );
- Copy( temp_buf_fx, psyn_fx, ( L_SUBFR >> 1 ) );
- blend_subfr2_fx( temp_buf_fx + L_SUBFR / 2, psyn_fx + L_SUBFR / 2, psyn_fx + L_SUBFR / 2 );
- }
- st->hPFstat->on = 0;
- move16();
- }
-
- /*----------------------------------------------------------------*
- * Comfort noise addition
- *----------------------------------------------------------------*/
- test();
- test();
- IF( ( st->hFdCngDec != NULL || EQ_16( st->idchan, 1 ) ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) )
- {
- test();
- test();
- test();
- test();
- test();
- IF( EQ_16( st->element_mode, IVAS_CPE_TD ) || st->flag_cna || ( EQ_16( st->cng_type, FD_CNG ) && LE_32( st->total_brate, ACELP_32k ) ) || ( st->cng_type == LP_CNG && LE_32( st->core_brate, SID_2k40 ) ) )
- {
- /*VAD only for non inactive frame*/
- test();
- st->VAD = st->VAD && st->coder_type != INACTIVE;
- move16();
- test();
- test();
- test();
- test();
- test();
- IF( st->idchan == 0 && ( st->flag_cna || ( EQ_16( st->cng_type, FD_CNG ) && LE_32( st->total_brate, ACELP_32k ) ) || ( st->cng_type == LP_CNG && LE_32( st->core_brate, SID_2k40 ) ) ) )
- {
- /*Noisy speech detector*/
- noisy_speech_detection_fx( st->hFdCngDec, st->VAD, psyn_fx, st->Q_syn );
-
- st->hFdCngDec->hFdCngCom->likelihood_noisy_speech = mult_r( st->hFdCngDec->hFdCngCom->likelihood_noisy_speech, 32440 /*0.99 Q15*/ );
- move16();
- IF( st->hFdCngDec->hFdCngCom->flag_noisy_speech != 0 )
- {
- st->hFdCngDec->hFdCngCom->likelihood_noisy_speech = add( st->hFdCngDec->hFdCngCom->likelihood_noisy_speech, 328 /*0.01 Q15*/ );
- move16();
- }
- move32();
- }
-
- if ( st->idchan == 0 )
- {
- st->lp_noise = st->hFdCngDec->lp_noise;
- move32();
- }
- test();
- IF( NE_16( st->element_mode, IVAS_CPE_TD ) && !st->cng_ism_flag )
- {
- /*Noise estimate*/
- /*==========================================================*/
- ApplyFdCng_ivas_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) );
- /*==========================================================*/
- }
-
- IF( !st->cna_dirac_flag )
- {
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- /* CNA: Generate additional comfort noise to mask potential coding artefacts */
- IF( st->flag_cna && !( EQ_16( st->coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->GSC_noisy_speech ) ) )
- {
- test();
- IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( nchan_out, 2 ) )
- {
- IF( hStereoCng->flag_cna_fade )
- {
- generate_stereo_masking_noise_fx( psyn_fx, st->Q_syn, st, hStereoTD, flag_sec_CNA, 1, hStereoCng, nchan_out );
- hStereoCng->flag_cna_fade = 0;
- move16();
- }
- ELSE
- {
- test();
- IF( NE_16( st->element_mode, last_element_mode ) && ( st->idchan == 0 ) )
- {
- /* Clear memory for secondary channel CNA */
- set16_fx( hStereoCng->olapBufferSynth22_fx, 0, shr( st->hFdCngDec->hFdCngCom->frameSize, 1 ) );
- }
-
- generate_stereo_masking_noise_fx( psyn_fx, st->Q_syn, st, hStereoTD, flag_sec_CNA, 0, hStereoCng, nchan_out );
- }
- }
- ELSE IF( NE_16( st->element_mode, IVAS_CPE_DFT ) )
- {
- IF( st->idchan == 0 )
- {
- IF( NE_16( st->element_mode, last_element_mode ) )
- {
- set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st->hFdCngDec->hFdCngCom->fftlen );
- }
- Word32 psyn_32_fx[L_FRAME16k];
- Word16 exp;
- Copy_Scale_sig_16_32_no_sat( psyn_fx, psyn_32_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( Q6, st->Q_syn ) ); // Q6
- Copy_Scale_sig_16_32_no_sat( st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), Q15 ); // Q15
- generate_masking_noise_ivas_fx( psyn_32_fx, &exp, st->hFdCngDec->hFdCngCom, st->hFdCngDec->hFdCngCom->frameSize, 0, 0, 0, st->element_mode, hStereoCng, nchan_out );
- Copy_Scale_sig_32_16( psyn_32_fx, psyn_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( st->Q_syn, exp ) ); // Q = st->Q_syn
- Copy_Scale_sig_32_16( st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), -Q15 ); // Q0
- }
- }
- }
- ELSE IF( st->flag_cna && EQ_16( st->coder_type, AUDIO ) && ( ( st->last_core == ACELP_CORE && !( EQ_16( st->last_coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->Last_GSC_noisy_speech_flag ) ) ) || EQ_16( st->last_core, TCX_20_CORE ) ) )
- {
- test();
- IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( nchan_out, 2 ) )
- {
- generate_stereo_masking_noise_fx( psyn_fx, st->Q_syn, st, hStereoTD, flag_sec_CNA, 1, hStereoCng, nchan_out );
- hStereoCng->flag_cna_fade = 1;
- move16();
- }
- ELSE
- {
- FOR( i = 0; i < ( st->hFdCngDec->hFdCngCom->frameSize ) / 2; i++ )
- {
- psyn_fx[i] = add( psyn_fx[i], shr_r( mult_r( st->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * ( st->hFdCngDec->hFdCngCom->frameSize / 4 )], st->hFdCngDec->hFdCngCom->fftlenFac ), negate( st->Q_syn ) ) );
- move16();
- }
- }
- }
- ELSE
- {
- IF( hStereoCng != NULL )
- {
- hStereoCng->flag_cna_fade = 1;
- move16();
- hStereoCng->enableSecCNA = 0;
- move16();
- }
- }
-
- IF( EQ_16( st->element_mode, IVAS_CPE_TD ) )
- {
- test();
- test();
- test();
- /*Noise estimate*/
- IF( ( st->idchan == 0 ) && ( EQ_16( nchan_out, 2 ) || ( st->core_brate != FRAME_NO_DATA && NE_32( st->core_brate, SID_2k40 ) ) ) )
- {
- ApplyFdCng_ivas_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) );
- }
- }
- }
- }
-
- IF( !st->cna_dirac_flag )
- {
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( st->flag_cna == 0 ) && EQ_16( st->L_frame, L_FRAME16k ) && EQ_16( st->last_flag_cna, 1 ) && ( ( st->last_core == ACELP_CORE && !( EQ_16( st->last_coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->Last_GSC_noisy_speech_flag ) ) ) || EQ_16( st->last_core, AMR_WB_CORE ) ) )
- {
- FOR( i = 0; i < ( st->hFdCngDec->hFdCngCom->frameSize ) / 2; i++ )
- {
- psyn_fx[i] = add( psyn_fx[i], shr_r( mult_r( st->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * ( st->hFdCngDec->hFdCngCom->frameSize / 4 )], st->hFdCngDec->hFdCngCom->fftlenFac ), -st->Q_syn ) );
- move16();
- }
- }
-
- test();
- test();
- test();
- IF( ( st->flag_cna == 0 ) || ( EQ_16( st->coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->GSC_noisy_speech ) ) )
- {
- IF( st->idchan == 0 )
- {
- set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st->hFdCngDec->hFdCngCom->fftlen );
- }
- IF( hStereoCng != NULL && ( st->idchan == 0 ) )
- {
- set16_fx( hStereoCng->olapBufferSynth22_fx, 0, st->hFdCngDec->hFdCngCom->fftlen );
- }
- }
- }
- }
-
- /*----------------------------------------------------------------*
- * Resample to the output sampling rate (8/16/32/48 kHz)
- * Bass post-filter
- *----------------------------------------------------------------*/
-
- /* check if the CLDFB works on the right sample rate */
- IF( NE_16( imult1616( st->cldfbAna->no_channels, st->cldfbAna->no_col ), st->L_frame ) )
- {
- resampleCldfb_ivas_fx( st->cldfbAna, L_mult0( st->L_frame, FRAMES_PER_SEC ) );
- resampleCldfb_ivas_fx( st->cldfbBPF, L_mult0( st->L_frame, FRAMES_PER_SEC ) );
-
- IF( st->ini_frame > 0 )
- {
- st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels );
- move16();
- }
- }
-
- /* analyze pitch coherence for bass post-filter */
-
- Word32 pitch_buf_fx_q20[12];
-
- Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, Q4 ); // Q(x+4)
- Word16 lim = shr( st->L_frame, 6 );
- FOR( Word16 lp = 0; lp < lim; lp++ )
- {
- pitch_buf_fx_q20[lp] = L_shl( pitch_buf_fx[lp], Q14 );
- move32();
- }
- bpf_pitch_coherence_ivas_fx( st, pitch_buf_fx_q20 );
- Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, -Q4 ); // Qx
-
- test();
- IF( !( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && st->bpf_off ) )
- {
- test();
- IF( NE_16( st->L_frame, st->last_L_frame ) && NE_16( st->last_codec_mode, MODE2 ) )
- {
- IF( EQ_16( st->L_frame, L_FRAME ) )
- {
- retro_interp5_4_fx( st->hBPF->pst_old_syn_fx );
- }
- ELSE IF( EQ_16( st->L_frame, L_FRAME16k ) )
- {
- retro_interp4_5_fx( psyn_fx, st->hBPF->pst_old_syn_fx );
- }
- }
-
- bass_psfilter_fx( st->hBPF, st->Opt_AMR_WB, psyn_fx, st->L_frame, pitch_buf_fx, st->bpf_off,
- st->stab_fac_fx, &st->stab_fac_smooth_fx, st->coder_type, st->Q_syn, bpf_error_signal_16fx );
- }
-
- Word32 syn_tmp_32_fx[L_FRAME16k + L_SUBFR], *syn_32_fx;
- set32_fx( syn_tmp_32_fx, 0, L_FRAME16k + L_SUBFR );
- syn_32_fx = syn_tmp_32_fx + L_SUBFR;
- test();
- IF( NE_16( st->element_mode, IVAS_CPE_DFT ) || use_cldfb_for_dft )
- {
- /* analysis of the synthesis at internal sampling rate */
- Word32 realBufferSave_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
- Word32 imagBufferSave_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
- Word32 *pRealSave_fx[CLDFB_NO_COL_MAX], *pImagSave_fx[CLDFB_NO_COL_MAX];
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- pRealSave_fx[i] = realBufferSave_fx[i];
- pImagSave_fx[i] = imagBufferSave_fx[i];
- }
- IF( st->p_bpf_noise_buf_32 )
- {
- Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1
- Copy32( bpf_error_signal_fx, st->p_bpf_noise_buf_32, st->L_frame );
- Scale_sig32( st->p_bpf_noise_buf_32, st->L_frame, sub( Q11, sub( st->Q_syn, 1 ) ) ); // Q11
- }
-
- FOR( i = 0; i < st->L_frame; i++ )
- {
- syn_32_fx[i] = L_shr( L_deposit_h( psyn_fx[i] ), add( 4, st->Q_syn ) ); // Q12
- move32();
- }
-
- Word16 offset = sub( st->cldfbAna->p_filter_length, st->cldfbAna->no_channels );
- Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12
- st->cldfbAna->Q_cldfb_state = Q12;
- move16();
- cldfbAnalysis_ivas_fx( syn_32_fx, realBuffer_fx, imagBuffer_fx, -1, st->cldfbAna );
- Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11
- st->cldfbAna->Q_cldfb_state = Q11;
- move16();
- /* analysis and add the BPF error signal */
- Word32 tmp_bpf_error_signal_fx[L_FRAME16k];
- Word16 q_bpf_error_signal;
- Word16 cldfb_state_offset = sub( st->cldfbBPF->p_filter_length, st->cldfbBPF->no_channels );
-
- q_bpf_error_signal = Q6;
- move16();
- Copy_Scale_sig_16_32_no_sat( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, st->L_frame, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- Scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0
- Scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0
- }
- Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, sub( q_bpf_error_signal, Q10 ) ); // q_bpf_error_signal (Q6)
- st->cldfbBPF->Q_cldfb_state = q_bpf_error_signal;
- move16();
- tmp = -1;
- move16();
- if ( st->bpf_off )
- {
- tmp = 0;
- move16();
- }
-
- addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx, tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF );
- Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( ( sub( q_bpf_error_signal, Q10 ) ) ) ); // Q10
- st->cldfbBPF->Q_cldfb_state = Q10;
- move16();
- /* set output mask for upsampling */
- IF( EQ_16( st->bwidth, NB ) )
- {
- /* set NB mask for upsampling */
- st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, 10 );
- move16();
- }
- ELSE IF( NE_16( st->cldfbSyn->bandsToZero, sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ) ) )
- {
- /* in case of BW switching, re-init to default */
- st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels );
- move16();
- }
- test();
- IF( !st->cng_sba_flag || EQ_16( st->element_mode, IVAS_CPE_MDCT ) )
- {
- test();
- test();
- test();
- /*WB/SWB-FD_CNG*/
- IF( ( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) ) && ( EQ_16( st->cng_type, FD_CNG ) ) && ( LT_16( st->hFdCngDec->hFdCngCom->numCoreBands, st->cldfbSyn->no_channels ) ) )
- {
- Word16 tmpBufferScale = 0;
- move16();
- generate_comfort_noise_dec_hf_ivas_fx( realBuffer_fx, imagBuffer_fx, /*realBuffer, imagBuffer,*/ &tmpBufferScale, st->hFdCngDec->hFdCngCom, st->cng_ism_flag );
-
- FOR( i = 0; i < st->hFdCngDec->hFdCngCom->numSlots; i++ )
- {
- Scale_sig32( realBuffer_fx[i] + st->hFdCngDec->hFdCngCom->numCoreBands, sub( st->hFdCngDec->hFdCngCom->regularStopBand, st->hFdCngDec->hFdCngCom->numCoreBands ), sub( add( tmpBufferScale, 15 ), Q31 ) ); // Q0
- Scale_sig32( imagBuffer_fx[i] + st->hFdCngDec->hFdCngCom->numCoreBands, sub( st->hFdCngDec->hFdCngCom->regularStopBand, st->hFdCngDec->hFdCngCom->numCoreBands ), sub( add( tmpBufferScale, 15 ), Q31 ) ); // Q0
- }
-
- IF( LT_16( st->hFdCngDec->hFdCngCom->regularStopBand, st->cldfbSyn->no_channels ) )
- {
- st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->hFdCngDec->hFdCngCom->regularStopBand );
- move16();
- }
- ELSE
- {
- st->cldfbSyn->bandsToZero = 0;
- move16();
- }
- }
- }
-
- IF( save_hb_synth_fx16 != NULL )
- {
- /* save and then zero-out lowband */
- Word16 Q_real = 0, Q_imag = 0;
- Word32 max_real = 0, max_imag = 0;
- move16();
- move16();
- move32();
- move32();
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
- {
- max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) );
- max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) );
- }
- }
- Word32 max_val = L_max( max_real, max_imag );
- Q_imag = sub( norm_l( max_val ), 3 ) /* Guard bits */;
- Q_real = Q_imag;
- move16();
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
- scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_imag ); // Q_imag
- }
-#ifndef OPT_AVOID_STATE_BUF_RESCALE
-#ifdef OPT_STEREO_32KBPS_V1
- scale_sig32( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( Q_real, Q11 ) ); // Q10 - > (Q_real-1)
-#else /* OPT_STEREO_32KBPS_V1 */
- scale_sig32_r( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); // (Q_real-1)
-#endif /* OPT_STEREO_32KBPS_V1 */
- st->cldfbSynHB->Q_cldfb_state = sub( Q_real, 1 );
- move16();
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
-
- FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
- {
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- realBufferSave_fx[i][j] = realBuffer_fx[i][j];
- imagBufferSave_fx[i][j] = imagBuffer_fx[i][j];
- move32();
- move32();
- IF( LT_16( j, st->hFdCngDec->hFdCngCom->numCoreBands ) && LT_16( i, st->hFdCngDec->hFdCngCom->numSlots ) )
- {
- realBuffer_fx[i][j] = 0;
- imagBuffer_fx[i][j] = 0;
- move32();
- move32();
- }
- }
- }
-
-#ifdef OPT_AVOID_STATE_BUF_RESCALE
- cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, sub( Q11, Q_real ), -10, st->cldfbSynHB );
-#else /* OPT_AVOID_STATE_BUF_RESCALE */
- cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, 0, st->cldfbSynHB );
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
-
-#ifndef OPT_AVOID_STATE_BUF_RESCALE
- Scale_sig32( save_hb_synth_fx, L_FRAME48k, negate( ( sub( Q_real, 1 ) ) ) ); // Q0
- Scale_sig32( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10
- st->cldfbSynHB->Q_cldfb_state = Q10;
- move16();
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
- /* restore lowband */
- FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
- {
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- realBuffer_fx[i][j] = realBufferSave_fx[i][j];
- imagBuffer_fx[i][j] = imagBufferSave_fx[i][j];
- move32();
- move32();
- }
- }
-#ifndef OPT_AVOID_STATE_BUF_RESCALE
- Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); // Q_real-1
- st->cldfbSynHB->Q_cldfb_state = sub( Q_real, 1 );
- move16();
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
-
-#ifdef OPT_AVOID_STATE_BUF_RESCALE
- cldfbSynthesis_ivas_fx( pRealSave_fx, pImagSave_fx, synth_fx, -1, sub( Q11, Q_real ), -10, st->cldfbSyn );
-#else /* OPT_AVOID_STATE_BUF_RESCALE */
- cldfbSynthesis_ivas_fx( pRealSave_fx, pImagSave_fx, synth_fx, -1, 0, st->cldfbSyn );
- Scale_sig32( synth_fx, L_FRAME48k, negate( sub( Q_real, 1 ) ) ); // Q0
- Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10
- st->cldfbSynHB->Q_cldfb_state = Q10;
- move16();
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
- }
- ELSE
- {
- /* synthesis of the combined signal */
- Word16 Q_real, Q_imag;
- Word32 max_real, max_imag;
- Q_real = 0;
- Q_imag = 0;
- max_real = 0;
- max_imag = 0;
- move16();
- move16();
- move32();
- move32();
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
- {
- max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) );
- max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) );
- }
- }
- Word32 max_val = L_max( max_real, max_imag );
- Q_imag = sub( norm_l( max_val ), 3 ) /* Guard bits */;
- Q_real = Q_imag;
- move16();
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
- scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
- }
-#ifdef OPT_STEREO_32KBPS_V1
- scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q_real, Q11 ) ); // Q10 - > (Q_real-1)
-#else /* OPT_STEREO_32KBPS_V1 */
- scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1)
-#endif /* OPT_STEREO_32KBPS_V1 */
- st->cldfbSyn->Q_cldfb_state = sub( Q_real, 1 );
- move16();
-
-#ifdef OPT_AVOID_STATE_BUF_RESCALE
- cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx, -1, 0, 0, st->cldfbSyn );
-#else /* OPT_AVOID_STATE_BUF_RESCALE */
- cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx, -1, 0, st->cldfbSyn );
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
- scale_sig32( synth_fx, output_frame, negate( sub( Q_real, 1 ) ) ); // Q0
- scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10
- st->cldfbSyn->Q_cldfb_state = Q10;
- move16();
- }
-
- /* save synthesis - needed in case of core switching */
- Copy32( synth_fx, st->previoussynth_fx_32, output_frame ); // Q0
- }
- ELSE
- {
- Word16 nSamples = NS2SA_FX2( i_mult( st->L_frame, FRAMES_PER_SEC ), FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ); /* IVAS-64: optimization is likely possible here (don't resample the whole frame) */
-
- /* analysis of the synthesis at internal sampling rate - needed for DFT stereo -> TD stereo switching */
- FOR( i = 0; i < st->L_frame; i++ )
- {
- syn_32_fx[i] = L_shr( L_deposit_h( psyn_fx[i] ), add( 4, st->Q_syn ) );
- move32();
- }
-
- Word16 offset = sub( st->cldfbAna->p_filter_length, st->cldfbAna->no_channels );
- Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12
- st->cldfbAna->Q_cldfb_state = Q12;
- move16();
- cldfbAnalysis_ivas_fx( syn_32_fx + sub( st->L_frame, nSamples ), realBuffer_fx, imagBuffer_fx, nSamples, st->cldfbAna );
-
- Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11
- st->cldfbAna->Q_cldfb_state = Q11;
- move16(); /* analysis and add the BPF error signal - needed for DFT stereo -> TD stereo switching */
- Word32 tmp_bpf_error_signal_fx[L_FRAME16k];
- Word16 q_bpf_error_signal;
- Word16 cldfb_state_offset;
- cldfb_state_offset = sub( st->cldfbBPF->p_filter_length, st->cldfbBPF->no_channels );
-
- // Get Q-factor
- q_bpf_error_signal = Q6;
- move16();
- Copy_Scale_sig_16_32_no_sat( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, L_FRAME16k, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- Scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0
- Scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0
- }
- Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, sub( q_bpf_error_signal, Q10 ) ); // q_bpf_error_signal (Q6)
- st->cldfbBPF->Q_cldfb_state = q_bpf_error_signal;
- move16();
- tmp = 0;
- move16();
- if ( !st->bpf_off )
- {
- tmp = nSamples;
- move16();
- }
- addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx + sub( st->L_frame, nSamples ), tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF );
-
-
- Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( sub( q_bpf_error_signal, Q10 ) ) ); // Q10
- st->cldfbBPF->Q_cldfb_state = Q10;
- move16();
- /* synthesis of the combined signal - needed for DFT stereo -> TD stereo switching */
- Word16 Q_real, Q_imag;
- Word32 max_real, max_imag;
- Q_real = 0;
- Q_imag = 0;
- max_real = 0;
- max_imag = 0;
- move16();
- move16();
- move32();
- move32();
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
- {
- max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) );
- max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) );
- }
- }
- Word32 max_val = L_max( max_real, max_imag );
- Q_imag = sub( norm_l( max_val ), 3 ) /* Guard bits */;
- Q_real = Q_imag;
- move16();
- FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
- {
- scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
- scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real
- }
-#ifndef OPT_AVOID_STATE_BUF_RESCALE
-#ifdef OPT_STEREO_32KBPS_V1
- scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q_real, Q11 ) ); // Q10 - > (Q_real-1)
-#else /* OPT_STEREO_32KBPS_V1 */
- scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1)
-#endif /* OPT_STEREO_32KBPS_V1 */
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
-
-#ifdef OPT_AVOID_STATE_BUF_RESCALE
- cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*dummy*/, NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ), sub( Q10, sub( Q_real, 1 ) ), -10, st->cldfbSyn );
-#else /* OPT_AVOID_STATE_BUF_RESCALE */
- cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*dummy*/, NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ), 0, st->cldfbSyn );
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
-
-#ifndef OPT_AVOID_STATE_BUF_RESCALE
- Scale_sig32( synth_fx, output_frame, negate( sub( Q_real, 1 ) ) ); // Q0
- Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10
- st->cldfbSyn->Q_cldfb_state = Q10;
- move16();
-#endif /* OPT_AVOID_STATE_BUF_RESCALE */
- IF( st->p_bpf_noise_buf_32 )
- {
- Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1
- Copy32( bpf_error_signal_fx, st->p_bpf_noise_buf_32, st->L_frame );
-
- Scale_sig32( st->p_bpf_noise_buf_32, st->L_frame, sub( Q11, sub( st->Q_syn, 1 ) ) ); // Q11
- }
-
- set32_fx( synth_fx, 0, output_frame );
- }
-
- /* Copy output signal */
- Scale_sig( syn_tmp_fx, add( st->L_frame, L_SUBFR ), negate( st->Q_syn ) ); // Q0
- IF( st->element_mode > EVS_MONO )
- {
- Copy( psyn_fx, output_fx, st->L_frame ); /*Q_syn*/
- }
-
- st->Q_syn2 = 0;
- move16();
- /*-----------------------------------------------------------------*
- * Bandwidth extension 6kHz-7kHz
- *-----------------------------------------------------------------*/
- IF( st->hBWE_zero != NULL )
- {
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( EQ_16( st->L_frame, L_FRAME ) && ( st->bwidth != NB ) && GE_16( output_frame, L_FRAME16k ) &&
- ( EQ_16( st->extl, -1 ) || EQ_16( st->extl, SWB_CNG ) || ( EQ_16( st->extl, WB_BWE ) && st->extl_brate == 0 && NE_16( st->coder_type, AUDIO ) ) ) ) )
- {
- Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q0
- hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 );
- Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, output_frame, 0 );
- }
- ELSE
- {
- hf_synth_reset_fx( st->hBWE_zero );
- set16_fx( st->hBWE_zero->mem_hp400_fx, 0, 6 );
- }
- }
-
- /*-----------------------------------------------------------------*
- * Populate parameters for SWB TBE
- *-----------------------------------------------------------------*/
-
- IF( st->hBWE_TD != NULL )
- {
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( !st->bfi && st->prev_bfi ) || ( EQ_16( st->last_vbr_hw_BWE_disable_dec, 1 ) && ( st->vbr_hw_BWE_disable_dec == 0 ) ) || ( ( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, WB_TBE ) || EQ_16( st->extl, FB_TBE ) ) && NE_16( st->last_extl, SWB_TBE ) && NE_16( st->last_extl, WB_TBE ) && NE_16( st->last_extl, FB_TBE ) ) || ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) && !st->tdm_LRTD_flag ) )
- {
- st->hBWE_TD->bwe_non_lin_prev_scale_fx = 0;
- move32();
- set16_fx( st->hBWE_TD->old_bwe_exc_extended_fx, 0, NL_BUFF_OFFSET );
- }
- test();
- test();
- test();
- test();
- test();
- IF( !st->ppp_mode_dec && ( st->idchan == 0 || NE_16( st->element_mode, IVAS_CPE_TD ) || ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) && st->tdm_LRTD_flag ) ) )
- {
- Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc
- non_linearity_ivas_fx( bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame );
- Copy_Scale_sig_32_16( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, negate( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc
- }
- test();
- if ( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) )
- {
- st->hBWE_TD->bwe_non_lin_prev_scale_fx = 0;
- move32();
- }
- }
- /*----------------------------------------------------------------------*
- * Updates
- *----------------------------------------------------------------------*/
-
- updt_dec_fx( st, old_exc_fx, pitch_buf_fx, Es_pred_fx, Aq_fx, lsf_new_fx, lsp_new_fx, voice_factors_fx, old_bwe_exc_fx, gain_buf_fx );
- test();
- test();
- IF( GT_32( st->core_brate, SID_2k40 ) && st->hTdCngDec != NULL && st->hFdCngDec != NULL )
- {
- /* update CNG parameters in active frames */
- cng_params_upd_ivas_fx( lsp_new_fx, exc_fx, st->L_frame, &st->hTdCngDec->ho_circ_ptr, st->hTdCngDec->ho_ener_circ_fx, &st->hTdCngDec->ho_circ_size,
- st->hTdCngDec->ho_lsp_circ_fx, st->Q_exc, DEC, st->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st->last_active_brate, st->element_mode,
- st->hFdCngDec->hFdCngCom->CngBandwidth );
-
-
- /* Set 16k LSP flag for CNG buffer */
- st->hTdCngDec->ho_16k_lsp[st->hTdCngDec->ho_circ_ptr] = 0;
- move16();
- if ( NE_16( st->L_frame, L_FRAME ) )
- {
- st->hTdCngDec->ho_16k_lsp[st->hTdCngDec->ho_circ_ptr] = 1;
- move16();
- }
- }
-
- {
- IF( save_hb_synth_fx16 )
- {
- Copy_Scale_sig_32_16( save_hb_synth_fx, save_hb_synth_fx16, L_FRAME48k, 0 ); // Q0
- }
- Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q_syn2
- }
-
- pop_wmops();
- return error;
-}
-
-
-static void rescale_fdCngDec( HANDLE_FD_CNG_DEC hFdCngDec, Word16 Exp_diff )
-{
- Scale_sig32( hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, Exp_diff );
-}
diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c
index 7657491885adbc296ef9f41cfad150842b149f7e..363db82020cf81eefbdb2258c27eb77877faf380 100644
--- a/lib_dec/acelp_core_switch_dec_fx.c
+++ b/lib_dec/acelp_core_switch_dec_fx.c
@@ -128,7 +128,7 @@ ivas_error acelp_core_switch_dec_fx(
* Excitation decoding
*----------------------------------------------------------------*/
- config_acelp1( DEC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &decode_bwe /* dummy */, &i, st_fx->element_mode, &i /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, 0, 0 );
+ config_acelp1_fx( DEC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &decode_bwe /* dummy */, &i, st_fx->element_mode, &i /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, 0, 0 );
decod_gen_voic_core_switch_fx( st_fx, L_frame_for_cs, 0, Aq, exc, cbrate, &st_fx->Q_exc );
@@ -916,7 +916,7 @@ static void decod_gen_voic_core_switch_fx(
* Decode pitch lag
*----------------------------------------------------------------------*/
- pitch = pit_decode_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR ); /*Q6*/
+ pitch = pit_decode_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL ); /*Q6*/
/*--------------------------------------------------------------*
* Find the adaptive codebook vector.
diff --git a/lib_dec/amr_wb_dec_fx.c b/lib_dec/amr_wb_dec_fx.c
index db4ad2bb021122533aba2ec98cb77b9455a90804..96ae82ddee71c1e6a9a0115bce5ce2e84dea8334 100644
--- a/lib_dec/amr_wb_dec_fx.c
+++ b/lib_dec/amr_wb_dec_fx.c
@@ -628,7 +628,7 @@ ivas_error amr_wb_dec_fx(
FEC_scale_syn_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, MOVING_AVERAGE,
&st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate,
- exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 );
+ exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, 0 );
frame_ener_fx( L_FRAME, st_fx->clas_dec, syn_fx, pitch_buf_tmp[3], &st_fx->enr_old_fx, L_FRAME, st_fx->Q_syn, 3, 0 );
}
@@ -710,7 +710,7 @@ ivas_error amr_wb_dec_fx(
FEC_scale_syn_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1,
MOVING_AVERAGE, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate,
st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx,
- st_fx->Q_exc, st_fx->Q_syn, 0, 0 );
+ st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, 0, 0 );
/* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */
frame_ener_fx( L_FRAME, st_fx->last_good, syn_fx, shr( FEC_pitch_fx, 6 ), &st_fx->enr_old_fx, L_FRAME, st_fx->Q_syn, 3, 0 );
@@ -792,12 +792,9 @@ ivas_error amr_wb_dec_fx(
st_fx->VAD = 0;
move16();
}
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- PMT( "Fixed point not done here " )
- ApplyFdCng_fx( syn, NULL, NULL, NULL, st, 0, 0 );
-#else
- ApplyFdCng_fx( syn_fx, st_fx->Q_syn, NULL, NULL, NULL, st_fx, 0, 0 );
-#endif
+
+ ApplyFdCng_fx( syn_fx, st_fx->Q_syn, NULL, 0, NULL, NULL, NULL, st_fx, 0, 0 );
+
st_fx->hFdCngDec->hFdCngCom->frame_type_previous = st_fx->m_frame_type;
move16();
diff --git a/lib_dec/ari_hm_dec.c b/lib_dec/ari_hm_dec_fx.c
similarity index 100%
rename from lib_dec/ari_hm_dec.c
rename to lib_dec/ari_hm_dec_fx.c
diff --git a/lib_dec/bass_psfilter_fx.c b/lib_dec/bass_psfilter_fx.c
index 45cf7feed026f9c1ef1b419d1f21e5fb08b2691a..4a5ef932892437f9d1ac7662c765c3aece88f343 100644
--- a/lib_dec/bass_psfilter_fx.c
+++ b/lib_dec/bass_psfilter_fx.c
@@ -1124,110 +1124,3 @@ void bpf_pitch_coherence_ivas_fx(
return;
}
-
-
-#ifdef ADD_BPF_ADAPT
-/*---------------------------------------------------------------------*
- * res_bpf_adapt()
- *
- * Analyze BPF output and decide if it should be applied on DFT stereo
- * residual signal
- *---------------------------------------------------------------------*/
-
-/*! r: Decision to enable or disable BPF on DFT stereo residual */
-int16_t res_bpf_adapt(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: DFT stereo decoder handle */
- const float *bpf_error_signal_8k, /* i : BPF modification signal */
- float res_buf[STEREO_DFT_BUF_MAX] /* i : residual buffer */
-)
-{
- float error_nrg;
- float tmp;
- float res_hb_nrg;
- float bpf_error_ratio;
- int16_t res_bpf_flag;
- int16_t i;
- int16_t i_start;
- int16_t i_end;
- float bw_inv;
-
- if ( hStereoDft->res_cod_band_max == 6 )
- {
- i_start = 39;
- i_end = 64;
- bw_inv = 0.04f; /* 1/(64 - 39) */
- }
- else
- {
- i_start = 28;
- i_end = 40;
- bw_inv = 0.083f; /* 1/(40 - 28) */
- }
-
- /* Measure energy of high frequency band in MDCT domain */
- res_hb_nrg = EPSILON;
- for ( i = i_start; i < i_end; i++ )
- {
- res_hb_nrg += res_buf[i] * res_buf[i];
- }
- res_hb_nrg *= bw_inv;
- res_hb_nrg = STEREO_DFT_BPF_ADAPT_ALPHA * res_hb_nrg + ( 1 - STEREO_DFT_BPF_ADAPT_ALPHA ) * hStereoDft->res_hb_nrg_mem;
- hStereoDft->res_hb_nrg_mem = res_hb_nrg;
-
- /* Measure energy of discontinuities at subframe boundaries */
- error_nrg = 0;
- for ( i = 0; i < L_FRAME8k; i += STEREO_DFT_L_SUBFR_8k )
- {
- tmp = bpf_error_signal_8k[i] - hStereoDft->bpf_error_signal_last;
- error_nrg += tmp * tmp;
- hStereoDft->bpf_error_signal_last = bpf_error_signal_8k[i + STEREO_DFT_L_SUBFR_8k - 1];
- }
- error_nrg *= 0.2f; /* Division by 5 for average value */
- bpf_error_ratio = min( 2, error_nrg / res_hb_nrg ); /* Form decision variable and apply limit */
- bpf_error_ratio = STEREO_DFT_BPF_ADAPT_BETA * bpf_error_ratio + ( 1 - STEREO_DFT_BPF_ADAPT_BETA ) * hStereoDft->bpf_error_ratio_mem;
- hStereoDft->bpf_error_ratio_mem = bpf_error_ratio;
-
- res_bpf_flag = bpf_error_ratio < 1;
-
- return res_bpf_flag;
-}
-
-/*---------------------------------------------------------------------*
- * bpf_pitch_coherence()
- *
- * Analyse pitch coherence
- *---------------------------------------------------------------------*/
-void bpf_pitch_coherence(
- Decoder_State *st, /* i/o: decoder state structure */
- const float pitch_buf[] /* i : pitch for every subfr [0,1,2,3] */
-)
-{
- int16_t nb_subfr;
- float pc, pcn1, pcn2, pcn3;
-
- nb_subfr = st->L_frame / L_SUBFR;
-
- if ( st->clas_dec > UNVOICED_CLAS && st->element_mode != EVS_MONO )
- {
- pc = (float) fabs( st->old_pitch_buf[nb_subfr + 3] + st->old_pitch_buf[nb_subfr + 2] - st->old_pitch_buf[nb_subfr] - st->old_pitch_buf[nb_subfr + 1] ) * 256.0f / (float) st->L_frame;
- pcn1 = K_PC_DEC * pc + C_PC_DEC;
- pcn1 = max( min( pcn1, 1.0f ), 0.0f );
-
- pc = (float) fabs( pitch_buf[nb_subfr - 1] + pitch_buf[nb_subfr - 2] - pitch_buf[1] - pitch_buf[0] ) * 256.0f / (float) st->L_frame;
- pcn2 = K_PC_DEC * pc + C_PC_DEC;
- pcn2 = max( min( pcn2, 1.0f ), 0.0f );
-
- pc = (float) fabs( st->old_pitch_buf[nb_subfr + 3] + st->old_pitch_buf[nb_subfr + 2] - pitch_buf[1] - pitch_buf[0] ) * 256.0f / (float) st->L_frame;
- pcn3 = K_PC_DEC * pc + C_PC_DEC;
- pcn3 = max( min( pcn3, 1.0f ), 0.0f );
-
- if ( pcn1 + pcn2 + pcn3 < 2.5f )
- {
- st->hBPF->psf_att = 0.4f;
- set_s( &st->hBPF->Track_on_hist[L_TRACK_HIST - nb_subfr], 1, nb_subfr );
- }
- }
-
- return;
-}
-#endif
diff --git a/lib_dec/cng_dec_fx.c b/lib_dec/cng_dec_fx.c
index 945f0ca758ed89671ff73a19fe0ba7ff25ab0357..fdb6488db8232ce7f77edebb2a5ea5fbb61a84b6 100644
--- a/lib_dec/cng_dec_fx.c
+++ b/lib_dec/cng_dec_fx.c
@@ -22,18 +22,19 @@ static void shb_CNG_decod_fx( Decoder_State *st_fx, const Word16 *synth_fx, Word
static void shb_CNG_decod_ivas_fx( Decoder_State *st_fx, const Word16 *synth_fx, Word16 *shb_synth_fx, const Word16 sid_bw, const Word16 Qsyn );
/*-----------------------------------------------------------------*
+ * CNG_dec_fx()
+ *
* Decode residual signal energy
*-----------------------------------------------------------------*/
void CNG_dec_fx(
Decoder_State *st_fx, /* i/o: State structure */
- const Word16 last_element_mode, /* i : last element mode Q0 */
+ const Word16 last_element_mode, /* i : last element mode Q0 */
Word16 Aq[], /* o : LP coefficients Q12 */
Word16 *lsp_new, /* i/o: current frame LSPs Q15 */
Word16 *lsf_new, /* i/o: current frame LSFs Qlog2(2.56) */
Word16 *allow_cn_step, /* o : allow CN step Q0 */
- Word16 *sid_bw /* i : 0-NB/WB, 1-SWB SID Q0 */
- ,
+ Word16 *sid_bw, /* i : 0-NB/WB, 1-SWB SID Q0 */
Word32 *q_env )
{
Word16 istep;
@@ -71,7 +72,6 @@ void CNG_dec_fx(
Word16 exp_pow;
Word16 tmp_loop;
Word16 enr_new, Aq_tmp[M + 1];
-
Word16 LSF_Q_prediction; /* o : LSF prediction mode - just temporary variable in CNG */
TD_CNG_DEC_HANDLE hTdCngDec;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
@@ -107,681 +107,9 @@ void CNG_dec_fx(
}
ELSE
{
- lsf_dec_fx( st_fx, 0, Aq, &LSF_Q_prediction, lsf_new, lsp_new, 0, 0,
- NULL );
- /* check IF LSPs may trigger too much synthesis energy */
-
- E_LPC_f_lsp_a_conversion( lsp_new, Aq_tmp, M );
- enr_new = Enr_1_Az_fx( Aq_tmp, 2 * L_SUBFR );
-
- IF( shr( enr_new, 14 ) > 0 )
- {
- /* Use old LSP vector */
- Copy( st_fx->lsp_old_fx, lsp_new, M ); /* Q15 */
- Copy( st_fx->lsf_old_fx, lsf_new, M ); /* Q2.56 */
- }
- }
- }
- ELSE
- {
- /* Use old LSP vector */
- Copy( st_fx->lsp_old_fx, lsp_new, M ); /* Q15 */
- Copy( st_fx->lsf_old_fx, lsf_new, M ); /* Q2.56 */
- }
-
- /* Initialize the CNG spectral envelope in case of the very first CNG frame */
- IF( st_fx->first_CNG == 0 )
- {
- Copy( st_fx->lsp_old_fx, st_fx->lspCNG_fx, M ); /* Q15 */
- }
-
- /*-----------------------------------------------------------------*
- * Decode residual signal energy
- *-----------------------------------------------------------------*/
-
- *allow_cn_step = 0;
- move16();
- test();
- IF( EQ_32( st_fx->core_brate, SID_1k75 ) || EQ_32( st_fx->core_brate, SID_2k40 ) )
- {
- istep = ISTEP_AMR_WB_SID_FX; /* Q15 */
- move16();
- if ( EQ_32( st_fx->core_brate, SID_2k40 ) )
- {
- istep = ISTEP_SID_FX; /* Q15 */
- move16();
- }
-
- /* initialize the energy quantization parameters */
- num_bits = 6;
- move16();
- if ( st_fx->Opt_AMR_WB == 0 )
- {
- num_bits = 7;
- move16();
- }
-
- /* decode the energy index */
- L_enr_index = get_next_indice_fx( st_fx, num_bits );
-
- IF( LE_32( st_fx->last_core_brate, SID_2k40 ) || EQ_16( st_fx->prev_bfi, 1 ) )
- {
- tmp1 = add( hTdCngDec->old_enr_index, 20 );
- }
- ELSE
- {
- tmp1 = add( hTdCngDec->old_enr_index, 40 );
- }
- IF( GT_16( L_enr_index, tmp1 ) && hTdCngDec->old_enr_index >= 0 ) /* Likely bit error and not startup */
- {
- L_enr_index = tmp1;
- move16();
- L_enr_index = s_min( L_enr_index, 127 ); /* Q0 */
- IF( st_fx->Opt_AMR_WB )
- {
- L_enr_index = s_min( L_enr_index, 63 ); /* Q0 */
- }
- }
-
- test();
- test();
- test();
- IF( GT_32( st_fx->last_core_brate, SID_1k75 ) &&
- NE_16( st_fx->first_CNG, 0 ) &&
- GE_16( hTdCngDec->old_enr_index, 0 ) &&
- GT_16( L_enr_index, add( hTdCngDec->old_enr_index, 1 ) ) )
- {
- *allow_cn_step = 1;
- move16();
- }
-
- hTdCngDec->old_enr_index = L_enr_index;
- move16();
- if ( !L_enr_index )
- {
- L_enr_index = -5;
- move16();
- }
- /* st_fx->Enew = L_enr_index / step - 2.0f;*/
- L_ener = L_mult( L_enr_index, istep ); /* Q16 (0+15) */
- /* subtract by 2 not done to leave Energy in Q2 */
-
- /* extract integral and fractional parts */
- ener_fra = L_Extract_lc( L_ener, &ener_int );
- ener_int = add( ener_int, 4 ); /* Q2 to Q6 */
-
- /* find the new energy value */
- hTdCngDec->Enew_fx = Pow2( ener_int, ener_fra );
- move32();
-
- IF( EQ_32( st_fx->core_brate, SID_2k40 ) )
- {
- burst_ho_cnt = get_next_indice_fx( st_fx, 3 ); /* 3bit */
-
- *sid_bw = get_next_indice_fx( st_fx, 1 );
- move16();
- IF( *sid_bw == 0 )
- {
- env_idx[0] = get_next_indice_fx( st_fx, 6 );
- move16();
-
- /* get quantized res_env_details */
- FOR( i = 0; i < NUM_ENV_CNG; i++ )
- {
- q_env[i] = L_deposit_l( CNG_details_codebook_fx[env_idx[0]][i] );
- move32();
- }
- }
- }
- /* Reset CNG history IF CNG frame length is changed */
- test();
- test();
- IF( EQ_16( st_fx->bwidth, WB ) && NE_16( st_fx->first_CNG, 0 ) && NE_16( st_fx->L_frame, st_fx->last_CNG_L_frame ) )
- {
- hTdCngDec->ho_hist_size = 0;
- move16();
- }
- }
-
- /*---------------------------------------------------------------------*
- * CNG spectral envelope update
- * Find A(z) coefficients
- *---------------------------------------------------------------------*/
- test();
- test();
- test();
- IF( LE_32( st_fx->last_core_brate, SID_2k40 ) )
- {
- /* Reset hangover counter if not first SID period */
- if ( GT_32( st_fx->core_brate, FRAME_NO_DATA ) )
- {
- hTdCngDec->num_ho = 0;
- move16();
- }
- /* Update LSPs IF last SID energy not outliers or insufficient number of hangover frames */
- test();
- IF( LT_16( hTdCngDec->num_ho, 3 ) || LT_32( Mult_32_16( hTdCngDec->Enew_fx, 21845 /*1/1.5f, Q15*/ ), st_fx->lp_ener_fx ) )
- {
- FOR( i = 0; i < M; i++ )
- {
- /* AR low-pass filter */
- st_fx->lspCNG_fx[i] = mac_r( L_mult( CNG_ISF_FACT_FX, st_fx->lspCNG_fx[i] ), 32768 - CNG_ISF_FACT_FX, lsp_new[i] );
- move16(); /* Q15 (15+15+1-16) */
- }
- }
- }
- ELSE
- {
- /* Update CNG_mode IF allowed */
- test();
- test();
- test();
- IF( ( st_fx->Opt_AMR_WB || EQ_16( st_fx->bwidth, WB ) ) && ( !st_fx->first_CNG || GE_16( hTdCngDec->act_cnt2, MIN_ACT_CNG_UPD ) ) )
- {
- IF( GT_32( st_fx->last_active_brate, ACELP_16k40 ) )
- {
- st_fx->CNG_mode = -1;
- move16();
- }
- ELSE
- {
- st_fx->CNG_mode = get_cng_mode( st_fx->last_active_brate );
- move16();
- }
- }
-
- /* If first sid after active burst update LSF history from circ buffer */
- burst_ho_cnt = s_min( burst_ho_cnt, hTdCngDec->ho_circ_size ); /* MODE1_DTX_IN_CODEC_B_FIX Q0*/
- hTdCngDec->act_cnt = 0;
- move16();
- s_ptr = add( sub( hTdCngDec->ho_circ_ptr, burst_ho_cnt ), 1 );
- IF( s_ptr < 0 )
- {
- s_ptr = add( s_ptr, hTdCngDec->ho_circ_size );
- }
-
- FOR( ll = burst_ho_cnt; ll > 0; ll-- )
- {
- hTdCngDec->ho_hist_ptr = add( hTdCngDec->ho_hist_ptr, 1 ); /* Q0 */
- move16();
- if ( EQ_16( hTdCngDec->ho_hist_ptr, HO_HIST_SIZE ) )
- {
- hTdCngDec->ho_hist_ptr = 0;
- move16();
- }
-
- /* Conversion between 12.8k and 16k LSPs */
- test();
- test();
- test();
- IF( ( EQ_16( st_fx->L_frame, L_FRAME16k ) && hTdCngDec->ho_16k_lsp[s_ptr] == 0 ) || ( EQ_16( st_fx->L_frame, L_FRAME ) && EQ_16( hTdCngDec->ho_16k_lsp[s_ptr], 1 ) ) )
- {
- /* Conversion from 16k LPSs to 12k8 */
- lsp_convert_poly_fx( &( hTdCngDec->ho_lsp_circ_fx[s_ptr * M] ), st_fx->L_frame, 0 );
- }
- /* update the circular buffers */
- Copy( &( hTdCngDec->ho_lsp_circ_fx[s_ptr * M] ), &( hTdCngDec->ho_lsp_hist_fx[hTdCngDec->ho_hist_ptr * M] ), M ); /* Qx */
- Copy32( &( hTdCngDec->ho_ener_circ_fx[s_ptr] ), &( hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr] ), 1 ); /* Q6 */
- hTdCngDec->ho_sid_bw = L_shl( L_and( hTdCngDec->ho_sid_bw, (Word32) 0x3fffffffL ), 1 );
- move32();
- Copy32( &( hTdCngDec->ho_env_circ_fx[s_ptr * NUM_ENV_CNG] ), &( hTdCngDec->ho_env_hist_fx[hTdCngDec->ho_hist_ptr * NUM_ENV_CNG] ), NUM_ENV_CNG ); /* Qx */
-
- hTdCngDec->ho_hist_size = add( hTdCngDec->ho_hist_size, 1 );
- move16();
-
- if ( GT_16( hTdCngDec->ho_hist_size, HO_HIST_SIZE ) )
- {
- hTdCngDec->ho_hist_size = HO_HIST_SIZE;
- move16();
- }
-
- s_ptr = add( s_ptr, 1 );
- if ( EQ_16( s_ptr, hTdCngDec->ho_circ_size ) )
- {
- s_ptr = 0;
- move16();
- }
- }
-
- IF( hTdCngDec->ho_hist_size > 0 ) /* can be -1 at init MODE1_DTX_IN_CODEC_B_FIX */
- {
- /* *allow_cn_step |= ( st_fx->ho_ener_hist[st_fx->ho_hist_ptr] > 4.0f * st_fx->lp_ener );*/
- L_tmp1 = L_shr( hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr], 2 );
- L_tmp1 = L_sub( L_tmp1, st_fx->lp_ener_fx );
+ lsf_dec_fx( st_fx, 0, Aq, &LSF_Q_prediction, lsf_new, lsp_new, 0, 0, NULL );
- test();
- test();
- IF( ( L_tmp1 > 0 && ( st_fx->first_CNG || st_fx->element_mode == EVS_MONO ) ) )
- {
- *allow_cn_step = s_or( *allow_cn_step, 1 );
- move16();
- }
- }
- IF( EQ_16( last_element_mode, IVAS_CPE_TD ) )
- {
- *allow_cn_step = 1;
- move16();
- }
- test();
- IF( EQ_16( *allow_cn_step, 0 ) && GT_16( hTdCngDec->ho_hist_size, 0 ) )
- {
- /* Use average of energies below last energy */
- ptr = hTdCngDec->ho_hist_ptr;
- move16();
- Copy( &( hTdCngDec->ho_lsp_hist_fx[ptr * M] ), tmp, M ); /* Qx */
- m1 = 0;
- move16();
- IF( L_and( hTdCngDec->ho_sid_bw, (Word32) 0x1 ) == 0 )
- {
- Copy32( &hTdCngDec->ho_env_hist_fx[ptr * NUM_ENV_CNG], tmp_env, NUM_ENV_CNG );
- m1 = 1;
- move16();
- }
- L_enr = Mult_32_16( hTdCngDec->ho_ener_hist_fx[ptr], W_DTX_HO_FX[0] ); /* Q6+15-15->Q6 */
-
- weights = W_DTX_HO_FX[0]; /* Q15 */
- move16();
-
- m = 1;
- move16();
- FOR( k = 1; k < hTdCngDec->ho_hist_size; k++ )
- {
- ptr--;
- if ( ptr < 0 )
- {
- ptr = HO_HIST_SIZE - 1;
- move16();
- }
-
- test();
- IF( LT_32( Mult_32_16( hTdCngDec->ho_ener_hist_fx[ptr], ONE_OVER_BUF_H_NRG_FX ), hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr] ) &&
- GT_32( hTdCngDec->ho_ener_hist_fx[ptr], Mult_32_16( hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr], BUF_L_NRG_FX ) ) )
- {
- /*enr += W_DTX_HO[k] * st_fx->ho_ener_hist[ptr];*/
- L_tmp1 = Mult_32_16( hTdCngDec->ho_ener_hist_fx[ptr], W_DTX_HO_FX[k] ); /* Q6+15-15->Q6 */
- L_enr = L_add( L_enr, L_tmp1 ); /* Q6 */
-
- /*weights += W_DTX_HO[k];*/
- weights = add( weights, W_DTX_HO_FX[k] ); /* Q15 */
-
- Copy( &hTdCngDec->ho_lsp_hist_fx[ptr * M], &tmp[m * M], M ); /* Qx */
- IF( EQ_32( L_and( hTdCngDec->ho_sid_bw, L_shl( (Word32) 0x1, k ) ), 0 ) )
- {
- Copy32( &hTdCngDec->ho_env_hist_fx[ptr * NUM_ENV_CNG], &tmp_env[m1 * NUM_ENV_CNG], NUM_ENV_CNG ); /* Qx */
- m1++;
- }
- m++;
- }
- }
-
- /*enr /= weights;*/
- exp = norm_s( weights );
- tmp1 = div_s( shl( 1, sub( 14, exp ) ), weights ); /* Q(15+14-exp-15) */
- L_tmp1 = Mult_32_16( L_enr, tmp1 ); /* Q(14-exp+6-15)->Q(5-exp) */
- L_enr = L_shl( L_tmp1, add( exp, 1 ) ); /* Q6 */
-
- st_fx->lp_ener_fx = L_enr; /* Q6 */
- move32();
- set32_fx( max_val, 0, 2 );
- set16_fx( max_idx, 0, 2 );
-
- FOR( i = 0; i < m; i++ )
- {
- IF( EQ_16( st_fx->L_frame, L_FRAME ) )
- {
- lsp2lsf_fx( &tmp[i * M], lsf_tmp, M, INT_FS_FX );
- ftmp_fx = 964;
- move16(); /*X2.56 */
- tmpv = sub( 16384, add( lsf_tmp[M - 1], ftmp_fx ) ); /*QX2.56*/
- L_tmp = L_mult0( tmpv, tmpv ); /*QX6.5536*/
- }
- ELSE
- {
- lsp2lsf_fx( &tmp[i * M], lsf_tmp, M, INT_FS_16k_FX );
- ftmp_fx = 1205;
- move16(); /*QX2.56*/
- tmpv = sub( 20480, add( lsf_tmp[M - 1], ftmp_fx ) ); /*QX2.56*/
- L_tmp = L_mult0( tmpv, tmpv ); /*QX6.5536*/
- }
-
- tmpv = sub( lsf_tmp[0], ftmp_fx ); /*QX2.56*/
- L_tmp = L_mac0( L_tmp, tmpv, tmpv ); /*QX6.5536*/
- FOR( j = 0; j < M - 1; j++ )
- {
- tmpv = sub( sub( lsf_tmp[j + 1], lsf_tmp[j] ), ftmp_fx ); /*QX2.56*/
- L_tmp = L_mac0( L_tmp, tmpv, tmpv ); /*QX6.5536*/
- }
-
- C[i] = Mpy_32_16_1( L_tmp, 1928 ); /*QX6.5536*/
- move32();
-
- IF( GT_32( C[i], max_val[0] ) )
- {
- max_val[1] = max_val[0];
- move32();
- max_idx[1] = max_idx[0];
- move16();
- max_val[0] = C[i];
- move32();
- max_idx[0] = i;
- move16();
- }
- ELSE IF( GT_32( C[i], max_val[1] ) )
- {
- max_val[1] = C[i];
- move32();
- max_idx[1] = i;
- move16();
- }
- }
-
- IF( EQ_16( m, 1 ) )
- {
- Copy( tmp, lsp_tmp, M ); /* Qx */
- }
- ELSE IF( LT_16( m, 4 ) )
- {
- FOR( i = 0; i < M; i++ )
- {
- L_tmp1 = 0;
- move32();
- FOR( j = 0; j < m; j++ )
- {
- L_tmp1 = L_add( L_tmp1, L_deposit_l( tmp[j * M + i] ) );
- }
-
- L_tmp1 = L_sub( L_tmp1, L_deposit_l( tmp[max_idx[0] * M + i] ) );
- tmpv = div_s( 1, sub( m, 1 ) ); /*Q15*/
- L_tmp1 = Mpy_32_16_1( L_tmp1, tmpv ); /*Q15*/
- lsp_tmp[i] = extract_l( L_tmp1 ); /*Q15*/
- move16();
- }
- }
- ELSE
- {
- FOR( i = 0; i < M; i++ )
- {
- L_tmp1 = 0;
- move32();
- FOR( j = 0; j < m; j++ )
- {
- L_tmp1 = L_add( L_tmp1, L_deposit_l( tmp[j * M + i] ) );
- }
-
- L_tmp1 = L_sub( L_tmp1, L_add( L_deposit_l( tmp[max_idx[0] * M + i] ), L_deposit_l( tmp[max_idx[1] * M + i] ) ) ); /*Q15*/
- tmpv = div_s( 1, sub( m, 2 ) ); /*Q15*/
- L_tmp1 = Mpy_32_16_1( L_tmp1, tmpv ); /*Q15*/
- lsp_tmp[i] = extract_l( L_tmp1 ); /*Q15*/
- move16();
- }
- }
-
- dist = 0;
- move16(); /*Q15*/
- max_dev = 0;
- move16(); /*Q15*/
- FOR( i = 0; i < M; i++ )
- {
- dev = abs_s( sub( lsp_tmp[i], lsp_new[i] ) ); /*Q15*/
- dist = add_o( dist, dev, &Overflow ); /*Q15*/
- if ( GT_16( dev, max_dev ) )
- {
- max_dev = dev;
- move16();
- }
- }
-
- test();
- IF( GT_16( dist, 13107 ) || GT_16( max_dev, 3277 ) ) /* 0.4 and 0.1 in Q15 */
- {
- FOR( i = 0; i < M; i++ )
- {
- st_fx->lspCNG_fx[i] = lsp_tmp[i];
- move16(); /*Q15*/
- }
- }
- ELSE
- {
- FOR( i = 0; i < M; i++ )
- {
- /* AR low-pass filter */
- st_fx->lspCNG_fx[i] = add( mult_r( 26214, lsp_tmp[i] ), mult_r( 6554, lsp_new[i] ) ); /* Q15 */
- move16();
- }
- }
- IF( m1 > 0 )
- {
- FOR( i = 0; i < NUM_ENV_CNG; i++ )
- {
- L_tmp = L_deposit_l( 0 );
- FOR( j = 0; j < m1; j++ )
- {
- /* env[i] += tmp_env[j*NUM_ENV_CNG+i];*/
- L_tmp = L_add_sat( L_tmp, tmp_env[j * NUM_ENV_CNG + i] );
- }
- /* env[i] /= (float)m1; */
- /* env[i] = env[i] - 2*st_fx->lp_ener_fx; */
- IF( EQ_16( m1, 1 ) )
- {
- L_tmp = L_sub_sat( L_tmp, L_add_sat( st_fx->lp_ener_fx, st_fx->lp_ener_fx ) ); /* Q6 */
- }
- ELSE
- {
- tmp1 = div_s( 1, m1 );
- L_tmp = Mult_32_16( L_tmp, tmp1 ); /* Q6 */
- L_tmp = L_sub_sat( L_tmp, L_add_sat( st_fx->lp_ener_fx, st_fx->lp_ener_fx ) ); /* Q6 */
- }
- env[i] = L_tmp; /* Q6 */
- move32();
- }
-
- Copy32( env, hTdCngDec->lp_env_fx, NUM_ENV_CNG ); /* Q6 */
- }
- }
- ELSE
- {
- Copy( lsp_new, st_fx->lspCNG_fx, M ); /* use newly analyzed ISFs */ /* Q15 */
- }
- }
-
- test();
- IF( EQ_32( st_fx->core_brate, SID_1k75 ) || EQ_32( st_fx->core_brate, SID_2k40 ) )
- {
- /* Update hangover memory during CNG */
- test();
- IF( ( *allow_cn_step == 0 ) && LT_32( hTdCngDec->Enew_fx, L_add_sat( st_fx->lp_ener_fx, L_shr( st_fx->lp_ener_fx, 1 ) ) ) )
- {
- /* update the pointer to circular buffer of old LSP vectors */
- hTdCngDec->ho_hist_ptr++;
- move16();
- if ( EQ_16( hTdCngDec->ho_hist_ptr, HO_HIST_SIZE ) )
- {
- hTdCngDec->ho_hist_ptr = 0;
- move16();
- }
-
- /* update the circular buffer of old LSP vectors with the new LSP vector */
- Copy( lsp_new, &( hTdCngDec->ho_lsp_hist_fx[( hTdCngDec->ho_hist_ptr ) * M] ), M ); /* Q15 */
-
- /* update the hangover energy buffer */
- hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr] = hTdCngDec->Enew_fx; /* Q6 */
- move32();
- test();
- IF( EQ_32( st_fx->core_brate, SID_2k40 ) && ( *sid_bw == 0 ) )
- {
- /* enr1 = (float)log10( st->Enew*L_frame + 0.1f ) / (float)log10( 2.0f );*/
- exp = norm_l( hTdCngDec->Enew_fx );
- L_tmp = L_shl( hTdCngDec->Enew_fx, exp ); /*Q(exp+6)*/
- L_tmp = Mult_32_16( L_tmp, shl( st_fx->L_frame, 5 ) ); /*Q(exp+6+5-15=exp-4)*/
- L_tmp = L_shr_sat( L_tmp, sub( exp, 10 ) ); /*Q6*/
- exp = norm_l( L_tmp );
- fra = Log2_norm_lc( L_shl( L_tmp, exp ) );
- exp = sub( sub( 30, exp ), 6 );
- L_tmp = L_Comp( exp, fra );
- enr1 = L_shr( L_tmp, 10 ); /* Q6 */
-
- FOR( i = 0; i < NUM_ENV_CNG; i++ )
- {
- /* get quantized envelope */
- /* env[i] = pow(2.0f,(enr1 - q_env[i])) + 2*st->Enew;*/
- L_tmp = L_sub( enr1, q_env[i] ); /* Q6 */
- L_tmp = L_shl( L_tmp, 10 ); /* 16 */
- temp_lo_fx = L_Extract_lc( L_tmp, &temp_hi_fx );
-
- exp_pow = sub( 14, temp_hi_fx );
- L_tmp = Pow2( 14, temp_lo_fx ); /* Qexp_pow */
- env[i] = L_shl( L_tmp, sub( 6, exp_pow ) ); /* Q6 */
- move32();
- L_tmp = L_add( hTdCngDec->Enew_fx, hTdCngDec->Enew_fx );
- env[i] = L_add( env[i], L_tmp ); /* Q6 */
- move32();
- }
- hTdCngDec->ho_sid_bw = L_shl( L_and( hTdCngDec->ho_sid_bw, (Word32) 0x3fffffffL ), 1 ); /* Q0 */
- move32();
- Copy32( env, &( hTdCngDec->ho_env_hist_fx[hTdCngDec->ho_hist_ptr * NUM_ENV_CNG] ), NUM_ENV_CNG ); /* Q6 */
- }
- ELSE IF( ( *sid_bw != 0 ) )
- {
- hTdCngDec->ho_sid_bw = L_shl( L_and( hTdCngDec->ho_sid_bw, (Word32) 0x3fffffffL ), 1 ); /* Q0 */
- move32();
- hTdCngDec->ho_sid_bw = L_or( hTdCngDec->ho_sid_bw, 0x1L ); /* Q0 */
- move32();
- }
-
- hTdCngDec->ho_hist_size = add( hTdCngDec->ho_hist_size, 1 );
- move16();
- if ( GT_16( hTdCngDec->ho_hist_size, HO_HIST_SIZE ) )
- {
- hTdCngDec->ho_hist_size = HO_HIST_SIZE;
- move16();
- }
- }
- /* Update the frame length memory */
- st_fx->last_CNG_L_frame = st_fx->L_frame;
- move16();
-
- if ( NE_32( st_fx->core_brate, SID_1k75 ) )
- {
- hTdCngDec->num_ho = m;
- move16();
- }
- }
-
- IF( st_fx->element_mode == EVS_MONO )
- {
- st_fx->last_CNG_L_frame = st_fx->L_frame;
- move16();
-
- IF( NE_32( st_fx->core_brate, SID_1k75 ) )
- {
- hTdCngDec->num_ho = m;
- move16();
- }
- }
- IF( st_fx->Opt_AMR_WB )
- {
- E_LPC_f_isp_a_conversion( st_fx->lspCNG_fx, Aq, M );
- }
- ELSE
- {
- E_LPC_f_lsp_a_conversion( st_fx->lspCNG_fx, Aq, M );
- }
-
- tmp_loop = shr( st_fx->L_frame, 6 );
- FOR( i = 1; i < tmp_loop; i++ ) /* L_frame/L_SUBFR */
- {
- Copy( Aq, &Aq[i * ( M + 1 )], add( M, 1 ) ); /* Q12 */
- }
-
- return;
-}
-
-void CNG_dec_ivas_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- const Word16 last_element_mode, /* i : last element mode Q0 */
- Word16 Aq[], /* o : LP coefficients Q12 */
- Word16 *lsp_new, /* i/o: current frame LSPs Q15 */
- Word16 *lsf_new, /* i/o: current frame LSFs Qlog2(2.56) */
- Word16 *allow_cn_step, /* o : allow CN step Q0 */
- Word16 *sid_bw /* i : 0-NB/WB, 1-SWB SID Q0 */
- ,
- Word32 *q_env )
-{
- Word16 istep;
- Word16 i, L_enr_index;
- Word32 L_ener;
- Word16 ener_fra, ener_int;
- Word16 num_bits;
- Word16 weights, ptr, j, k;
- Word16 m1;
- Word16 m = 0;
- move16();
- Word16 tmp[HO_HIST_SIZE * M];
- Word16 burst_ho_cnt = 0;
- move16();
- Word16 ll, s_ptr;
- Word32 L_enr, L_tmp1;
- Word16 tmp1, exp;
- Word16 lsf_tmp[M];
- Word32 C[M];
- Word32 max_val[2];
- Word16 max_idx[2];
- Word16 ftmp_fx;
- Word16 lsp_tmp[M];
- Word16 dev;
- Word16 max_dev;
- Word16 dist;
- Word16 tmpv;
- Word16 env_idx[2];
- Word32 enr1;
- Word32 env[NUM_ENV_CNG];
- Word32 tmp_env[HO_HIST_SIZE * NUM_ENV_CNG];
- Word32 L_tmp;
- Word16 fra;
- Word16 temp_lo_fx, temp_hi_fx;
- Word16 exp_pow;
- Word16 tmp_loop;
- Word16 enr_new, Aq_tmp[M + 1];
-
- Word16 LSF_Q_prediction; /* o : LSF prediction mode - just temporary variable in CNG */
- TD_CNG_DEC_HANDLE hTdCngDec;
-#ifdef BASOP_NOGLOB_DECLARE_LOCAL
- Flag Overflow = 0;
- move32();
-#endif
- hTdCngDec = st_fx->hTdCngDec;
-
- m = 0;
- move16();
- /*-----------------------------------------------------------------*
- * Decode CNG spectral envelope (only in SID frame)
- *-----------------------------------------------------------------*/
- test();
- IF( EQ_32( st_fx->core_brate, SID_1k75 ) || EQ_32( st_fx->core_brate, SID_2k40 ) )
- {
- /* de-quantize the LSF vector */
- IF( st_fx->Opt_AMR_WB != 0 )
- {
- /* Flt function */
- isf_dec_amr_wb_fx( st_fx, Aq, lsf_new, lsp_new );
- /* check IF ISPs may trigger too much synthesis energy */
-
- E_LPC_f_isp_a_conversion( lsp_new, Aq_tmp, M );
- enr_new = Enr_1_Az_fx( Aq_tmp, 2 * L_SUBFR );
-
- IF( ( shr( enr_new, 14 ) > 0 ) )
- {
- /* Use old LSP vector */
- Copy( st_fx->lsp_old_fx, lsp_new, M ); /* Q15 */
- Copy( st_fx->lsf_old_fx, lsf_new, M ); /* Q2.56 */
- }
- }
- ELSE
- {
- lsf_dec_ivas_fx( st_fx, 0, Aq, &LSF_Q_prediction, lsf_new, lsp_new, 0, 0,
- NULL );
/* check IF LSPs may trigger too much synthesis energy */
-
E_LPC_f_lsp_a_conversion( lsp_new, Aq_tmp, M );
enr_new = Enr_1_Az_fx( Aq_tmp, 2 * L_SUBFR );
diff --git a/lib_dec/core_dec_init_fx.c b/lib_dec/core_dec_init_fx.c
index 967a93bfbb1a0f63da3846387ed0f3b0ccfb998e..eb34e1bc1e4ad06bdf2fa06d34dfe06806550b3e 100644
--- a/lib_dec/core_dec_init_fx.c
+++ b/lib_dec/core_dec_init_fx.c
@@ -20,18 +20,7 @@
void open_decoder_LPD_fx(
Decoder_State *st,
const Word32 total_brate, /* Q0 */
-#ifdef NEW_IVAS_OPEN_DEC
- const Word32 last_total_brate,
-#endif
- const Word16 bwidth /* Q0 */
-#ifdef NEW_IVAS_OPEN_DEC
- ,
- const Word16 is_mct, /* i : MCT mode flag */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- const Word16 last_element_mode,
-#endif
- const Word16 is_init /* i : indicate call from init_decoder() to avoid double TC initialization */
-#endif
+ const Word16 bwidth /* Q0 */
)
{
Word16 i;
@@ -50,10 +39,8 @@ void open_decoder_LPD_fx(
hTcxLtpDec = st->hTcxLtpDec;
hTcxDec = st->hTcxDec;
-#ifndef NEW_IVAS_OPEN_DEC
st->total_brate = total_brate;
move32();
-#endif
if ( NE_16( st->codec_mode, MODE1 ) ) /*already updated in MODE1*/
{
@@ -70,40 +57,18 @@ void open_decoder_LPD_fx(
/* initializing variables for frame lengths etc. right in the beginning */
st->L_frame = extract_l( Mult_32_16( st->sr_core, 0x0290 ) );
move16();
-#ifndef NEW_IVAS_OPEN_DEC
hTcxDec->L_frameTCX = extract_l( Mult_32_16( st->output_Fs, 0x0290 ) );
move16();
-#endif
IF( st->ini_frame == 0 )
{
st->last_L_frame = st->L_frame_past = st->L_frame;
move16();
move16();
-#ifndef NEW_IVAS_OPEN_DEC
st->L_frameTCX_past = hTcxDec->L_frameTCX;
-#endif
move16();
}
-#ifdef NEW_IVAS_OPEN_DEC
- IF( st->hTcxDec != NULL )
- {
- hTcxDec->L_frameTCX = extract_l( Mult_32_16( st->output_Fs, 0x0290 ) );
- IF( st->ini_frame == 0 )
- {
- st->L_frameTCX_past = st->hTcxDec->L_frameTCX;
- move16();
- }
- }
-#endif
st->tcxonly = getTcxonly(
-#ifdef IVAS_CODE_SWITCHING
- st->element_mode,
-#endif
st->total_brate
-#ifdef IVAS_CODE_SWITCHING
- ,
- is_mct
-#endif
/*, st->is_ism_format Needed in the last version of float IVAS */
);
move16();
@@ -155,9 +120,6 @@ void open_decoder_LPD_fx(
// st->pit_res_max = initPitchLagParameters(12800, &st->pit_min, &st->pit_fr1, &st->pit_fr1b, &st->pit_fr2, &st->pit_max);
// hTcxDec->pit_max_TCX = (int16_t)(st->pit_max * st->output_Fs / 12800);
// hTcxDec->pit_min_TCX = (int16_t)(st->pit_min * st->output_Fs / 12800);
-#if 0
- PMT("Fixed point to be verified here")
-#endif
i = mult_r( hTcxDec->L_frameTCX, getInvFrameLen( L_FRAME ) ); /* Q6 */
hTcxDec->pit_max_TCX = extract_l( L_shr( L_mult( st->pit_max, i ), 7 ) ); /* Q0 */
move16();
@@ -243,7 +205,6 @@ void open_decoder_LPD_fx(
}
/*TCX config*/
-#ifndef NEW_IVAS_OPEN_DEC
st->hTcxCfg->preemph_fac = st->preemph_fac;
move16();
st->hTcxCfg->tcx_mdct_window_length_old = st->hTcxCfg->tcx_mdct_window_length;
@@ -304,34 +265,6 @@ void open_decoder_LPD_fx(
}
resetTecDec_Fx( st->hTECDec );
-
-#else
- if ( st->hIGFDec != NULL )
- {
- PMT( "To be done" )
- // IF (!is_init || st->element_mode != IVAS_CPE_MDCT)
- //{
- // init_tcx_cfg(st->hTcxCfg, total_brate, st->sr_core, st->output_Fs, st->L_frame, st->bwidth, st->hTcxDec->L_frameTCX, st->fscale, encoderLookahead, encoderLookaheadFB, st->preemph_fac, st->tcxonly, st->rf_flag, st->igf, st->hIGFDec->infoIGFStopFreq, st->element_mode, st->ini_frame, MCT_flag);
- // }
- // else
- //{
- // st->hTcxCfg->tcx_curr_overlap_mode = st->hTcxCfg->tcx_last_overlap_mode = ALDO_WINDOW;
- // st->hTcxCfg->last_aldo = 1;
- // }
- }
- /*Constraint for adaptive BPF, otherwise parameter estimation and post-processing not time aligned*/
- IF( st->tcxonly == 0 )
- {
- assert( 0 == ( st->hTcxCfg->lfacNext > 0 ? st->hTcxCfg->lfacNext : 0 ) );
- }
- // IF (st->tecDec_fx != NULL)
- {
- resetTecDec_Fx( &( st->tecDec_fx ) );
- }
-
-#endif
-
-
/* Initialize decoder delay */
@@ -447,7 +380,6 @@ void open_decoder_LPD_fx(
move16();
/*PLC*/
-#ifndef NEW_IVAS_OPEN_DEC
IF( st->prev_bfi != 0 )
{
PWord16 const *w;
@@ -498,10 +430,6 @@ void open_decoder_LPD_fx(
hTcxDec->Q_syn_Overl_TDAC = hHQ_core->Q_old_wtda_LB;
move16();
}
-#else
- PMT( "acelp_plc_mdct_transition is missing" )
- // acelp_plc_mdct_transition(st);
-#endif
}
test();
@@ -545,9 +473,6 @@ void open_decoder_LPD_fx(
set16_fx( hTcxDec->syn_Overl_TDAC, 0, L_FRAME32k / 2 ); /*HQ-CORE(bfi)->TCX don't need it*/ /* Q_syn_Overl_TDAC */
set16_fx( hTcxDec->syn_Overl_TDACFB, 0, L_FRAME_MAX / 2 ); /*HQ-CORE(bfi)->TCX don't need it*/ /* Q_syn_Overl_TDACFB */
set16_fx( hTcxDec->syn_Overl, 0, L_FRAME32k / 2 ); /*HQ-CORE(bfi)->TCX don't need it*/ /* Q_syn_Overl */
-#if 0
- PMT("to be moved to reset_tcx_overl_buf")
-#endif
}
IF( st->hTcxCfg != NULL )
{
@@ -575,15 +500,6 @@ void open_decoder_LPD_fx(
cldfb_reset_memory( st->cldfbAna );
cldfb_reset_memory( st->cldfbBPF );
cldfb_reset_memory( st->cldfbSyn );
-#ifndef NEW_IVAS_OPEN_DEC
-#if 0
- PMT("cldfbSynHB is missing ")
-#endif
- // IF (st->cldfbSynHB != NULL)
- //{
- // cldfb_reset_memory(st->cldfbSynHB);
- // }
-#endif
}
ELSE IF( ( NE_16( st->L_frame, st->last_L_frame ) ) && ( LE_16( st->L_frame, L_FRAME16k ) ) && ( LE_16( st->last_L_frame, L_FRAME16k ) ) ) /* Rate switching between 12.8 and 16 kHz*/
{
@@ -817,10 +733,6 @@ void open_decoder_LPD_fx(
test();
IF( EQ_16( st->core, ACELP_CORE ) && EQ_16( st->last_core, HQ_CORE ) )
{
- /*_DIFF_FLOAT_FIX_*/
-#if 0
- PMT("floating point is using L_frameTCX instead of output_frame, is it ok?")
-#endif
frame_ener_fx( st->output_frame_fx, UNVOICED_CLAS, st->previoussynth_fx, -1, &st->enr_old_fx, 1, 0, 0, 0 );
}
}
@@ -840,20 +752,6 @@ void open_decoder_LPD_fx(
move16();
if ( st->hTcxDec != NULL )
{
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- /* Todo: should be considered for other stereo modes as well */
- IF( is_init || MCT_flag || !( st->element_mode == IVAS_CPE_MDCT && st->element_mode == last_element_mode ) )
- {
- PMT( "Fixed point to be done" )
- st->hTcxDec->CngLevelBackgroundTrace_bfi = PLC_MIN_CNG_LEV;
- st->hTcxDec->NoiseLevelIndex_bfi = PLC_MIN_STAT_BUFF_SIZE - 1;
- st->hTcxDec->CurrLevelIndex_bfi = 0;
- st->hTcxDec->LastFrameLevel_bfi = PLC_MIN_CNG_LEV;
- set_f( st->hTcxDec->NoiseLevelMemory_bfi, PLC_MIN_CNG_LEV, PLC_MIN_STAT_BUFF_SIZE );
-
- st->hTcxDec->cummulative_damping_tcx = 1.0f;
- }
-#else
hTcxDec->conCngLevelBackgroundTrace = PLC_MIN_CNG_LEV_Q21; /*Q21*/
move16();
hTcxDec->conNoiseLevelIndex = PLC_MIN_STAT_BUFF_SIZE - 1; /* Q0 */
@@ -871,7 +769,6 @@ void open_decoder_LPD_fx(
hTcxDec->cummulative_damping_tcx = 32767 /*1.0f Q15*/;
move16();
-#endif
}
st->cummulative_damping = 32767 /*1.0f Q15*/;
move16();
@@ -891,10 +788,8 @@ void open_decoder_LPD_fx(
st->old_fpitch = L_deposit_h( st->pit_min );
move32();
-#ifndef NEW_IVAS_OPEN_DEC
st->old_fpitchFB = L_deposit_h( hTcxDec->pit_min_TCX );
move32();
-#endif
st->rate_switching_init = 1;
move16();
@@ -924,9 +819,6 @@ void open_decoder_LPD_fx(
test();
IF( hTcxLtpDec != NULL && ( EQ_16( st->ini_frame, 0 ) || ( EQ_16( st->last_codec_mode, MODE1 ) && st->element_mode == EVS_MONO ) ) )
{
-#if 0
- PMT("TO be verify, update seems to differ from float")
-#endif
hTcxLtpDec->tcxltp_pitch_int = st->pit_max; /* Q0 */
move16();
hTcxLtpDec->tcxltp_pitch_fr = 0; /* Q0 */
@@ -1059,12 +951,6 @@ void open_decoder_LPD_fx(
move16();
st->second_last_core = -1;
move16();
-#ifdef NEW_IVAS_OPEN_DEC
- IF( st->hTcxCfg != NULL && st->element_mode != EVS_MONO )
- {
- st->hTcxCfg->fIsTNSAllowed = getTnsAllowed( is_init ? total_brate : st->bits_frame_nominal * FRAMES_PER_SEC, st->igf );
- }
-#endif
IF( hTcxDec != NULL )
{
hTcxDec->tcxltp_second_last_pitch = st->old_fpitch; /*15Q16*/
@@ -1105,10 +991,8 @@ void open_decoder_LPD_fx(
hTcxDec->tcx_hm_LtpPitchLag = -1;
move16();
}
-#ifndef NEW_IVAS_OPEN_DEC
st->hTcxCfg->na_scale = 32767 /*1.0f Q15*/;
move16();
-#endif
if ( hTcxLtpDec != NULL )
{
hTcxLtpDec->tcxltp_gain = 0; /* Q15 */
diff --git a/lib_dec/core_dec_switch_fx.c b/lib_dec/core_dec_switch_fx.c
index 63c35f876e3da1d41836c8b99f588463a42c8502..94b6efb1bd051fd5f71bf9fab7d3a5c68025d7a2 100644
--- a/lib_dec/core_dec_switch_fx.c
+++ b/lib_dec/core_dec_switch_fx.c
@@ -10,21 +10,10 @@
#include "rom_com.h"
void mode_switch_decoder_LPD_fx(
- Decoder_State *st, /* i/o: decoder state structure */
- Word16 bwidth, /* i : audio bandwidth Q0*/
- Word32 total_brate, /* i : total bitrate Q0*/
-#ifdef IVAS_CODE_SWITCHING
- const Word32 last_total_brate, /* i : last frame total bitrate */
-#endif
+ Decoder_State *st, /* i/o: decoder state structure */
+ Word16 bwidth, /* i : audio bandwidth Q0*/
+ Word32 total_brate, /* i : total bitrate Q0*/
Word16 frame_size_index /* i : index determining the frame size Q0*/
-#ifdef IVAS_CODE_SWITCHING
- ,
- const Word16 MCT_flag /* i : hMCT handle allocated (1) or not (0)*/
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- ,
- const Word16 last_element_mode
-#endif
-#endif
)
{
Word16 fscale, switchWB;
@@ -100,15 +89,7 @@ void mode_switch_decoder_LPD_fx(
test();
IF( NE_16( fscale, st->fscale ) || ( switchWB != 0 ) || ( bSwitchFromAmrwbIO != 0 ) || EQ_16( st->last_codec_mode, MODE1 ) || st->force_lpd_reset )
{
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- open_decoder_LPD_fx( st, total_brate, last_total_brate, bwidth, MCT_flag, last_element_mode, 0 );
-#else
-#ifdef IVAS_CODE
- open_decoder_LPD_fx( st, total_brate, last_total_brate, bwidth, is_mct, 0 );
-#else
open_decoder_LPD_fx( st, total_brate, bwidth );
-#endif
-#endif
}
ELSE
{
@@ -153,9 +134,6 @@ void mode_switch_decoder_LPD_fx(
IF( ( st->hTcxCfg->fIsTNSAllowed != 0 ) && st->hIGFDec != NULL )
{
InitTnsConfigs( bwidth, st->hTcxCfg->tcx_coded_lines, st->hTcxCfg->tnsConfig, st->hIGFDec->infoIGFStopFreq, total_brate, st->element_mode, 0 /* 0 should be replaced with MCT_flag*/ );
-#ifdef IVAS_CODE
- SetAllowTnsOnWhite( st->hTcxCfg->tnsConfig, st->element_mode == IVAS_CPE_MDCT );
-#endif
}
}
}
diff --git a/lib_dec/dec_LPD_fx.c b/lib_dec/dec_LPD_fx.c
index d5294eb7a0a9eed009f3475c4f24be9270a76377..b638a36e55bbc3de081e4667c74e8cc8c5be9b66 100644
--- a/lib_dec/dec_LPD_fx.c
+++ b/lib_dec/dec_LPD_fx.c
@@ -555,7 +555,8 @@ void decoder_LPD_fx(
st->relax_prev_lsf_interp = 2;
move16();
}
- int_lsp4_fx( L_frame, &lsp[0], lspmid, &lsp[M], Aq, M, st->relax_prev_lsf_interp );
+
+ int_lsp4_ivas_fx( L_frame, &lsp[0], lspmid, &lsp[M], Aq, M, st->relax_prev_lsf_interp );
}
ELSE
{
@@ -569,11 +570,7 @@ void decoder_LPD_fx(
IF( bfi != 0 && ( st->last_core != ACELP_CORE ) )
{
/* PLC: [TCX: TD PLC] */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- con_tcx_fx( st, &synthFB[0], -1.f, NULL, 0, NULL );
-#else
con_tcx_fx( st, &synthFB[0] );
-#endif
lerp( synthFB, synth, st->L_frame, hTcxDec->L_frameTCX );
st->con_tcx = 1;
move16();
@@ -773,11 +770,7 @@ void decoder_LPD_fx(
{
TonalMDCTConceal_SaveTimeSignal( st->hTonalMDCTConc, synthFB, L_frameTCX );
}
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- decoder_tcx_post_fx( st, synth, synthFB, Aq, bfi, 0 );
-#else
decoder_tcx_post_fx( st, synth, synthFB, Aq, bfi );
-#endif
IF( EQ_16( st->core, TCX_20_CORE ) )
{
/* LPC Interpolation for BWE/post-processing */
diff --git a/lib_dec/dec_ace_fx.c b/lib_dec/dec_ace_fx.c
index e327d4cfb958cacf783da1add249812e3336ceab..9c366e3f3190c2138e9940a69e30a447609a0d1f 100644
--- a/lib_dec/dec_ace_fx.c
+++ b/lib_dec/dec_ace_fx.c
@@ -532,30 +532,24 @@ void decoder_acelp_fx(
move16();
IF( st->igf != 0 )
{
- prep_tbe_exc_fx( st->L_frame,
-#ifdef ADD_IVAS_TBE_CODE
- L_SUBFR,
-#endif
- i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc,
- gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate
-#ifdef ADD_IVAS_TBE_CODE
- ,
- st->element_mode, st->idchan, st->hBWE_TD != NULL, 0
-#endif
- );
+ prep_tbe_exc_fx( st->L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc,
+ gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 );
}
/*---------------------------------------------------------*
* Enhance the excitation *
*---------------------------------------------------------*/
+
E_UTIL_enhancer( st->voice_fac, stab_fac, st->past_gcode, gain_inov, &( st->gc_threshold_fx ), code, &exc2[i_subfr],
gain_pit, &st->dm_fx.prev_gain_code, st->dm_fx.prev_gain_pit, &st->dm_fx.prev_state, st->coder_type,
acelp_cfg.fixed_cdk_index[idx], L_SUBFR, st->L_frame, st->Q_exc );
} /* !RF_NELP frame partial copy */
+
/*----------------------------------------------------------*
* - compute the synthesis speech *
*----------------------------------------------------------*/
+
rescale_mem( &st->Q_exc, &prev_Q_syn, &st->Q_syn, mem_syn, syn, M, i_subfr );
E_UTIL_synthesis( sub( st->Q_exc, st->Q_syn ), p_A, &exc2[i_subfr], &syn[i_subfr], L_SUBFR, mem_syn, 1, M );
@@ -683,8 +677,9 @@ void decoder_acelp_fx(
FEC_scale_syn_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, syn, pBuf_scaleSyn, st->enr_old_fx, 0,
st->coder_type, LSF_Q_prediction, &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate,
- exc, exc2, A, &( st->old_enr_LP ), mem_back, mem_syn, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, force_scale_syn );
+ exc, exc2, A, &( st->old_enr_LP ), mem_back, mem_syn, st->Q_exc, st->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, force_scale_syn );
}
+
/* update ACELP synthesis memory */
Copy( mem_syn, st->mem_syn2_fx, M );
Copy( syn + st->L_frame - L_SYN_MEM, st->mem_syn_r, L_SYN_MEM );
diff --git a/lib_dec/dec_acelp_tcx_main_fx.c b/lib_dec/dec_acelp_tcx_main_fx.c
index 04a41ed46c9a3ca1b4f0110d3eb3b60872886ffa..eea558914c2af6701f3cca58975eaa6ed3a5a4d7 100644
--- a/lib_dec/dec_acelp_tcx_main_fx.c
+++ b/lib_dec/dec_acelp_tcx_main_fx.c
@@ -208,11 +208,7 @@ static void decode_frame_type_fx( Decoder_State *st )
move16();
/* Reconf Core */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- mode_switch_decoder_LPD_fx( st, st->bwidth, st->total_brate, st->last_total_brate, frame_size_index, 0, st->element_mode );
-#else
mode_switch_decoder_LPD_fx( st, st->bwidth, st->total_brate, frame_size_index );
-#endif
/* Reconf CLDFB */
IF( NE_16( i_mult( st->cldfbAna->no_channels, st->cldfbAna->no_col ), st->L_frame ) )
{
@@ -368,7 +364,7 @@ Word16 dec_acelp_tcx_frame_fx(
{
/* Copy back parameters from previous frame, because there is a high risk they are corrupt
* DO concealment with configuration used in previous frame */
- st->m_frame_type = (uint8_t) m_frame_type;
+ st->m_frame_type = (UWord8) m_frame_type;
move16();
st->bwidth = bwidth;
move16();
diff --git a/lib_dec/dec_amr_wb_fx.c b/lib_dec/dec_amr_wb_fx.c
index 415b4584e53c884068ce8f194e63305bc2ed8dd9..500fe34bab921a2c385caf751d34616d63e0045f 100644
--- a/lib_dec/dec_amr_wb_fx.c
+++ b/lib_dec/dec_amr_wb_fx.c
@@ -71,7 +71,7 @@ void decod_amr_wb_fx(
* Decode pitch lag
*----------------------------------------------------------------------*/
- *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 1, L_FRAME, i_subfr, -1, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR );
+ *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 1, L_FRAME, i_subfr, -1, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL );
/*--------------------------------------------------------------*
* Find the adaptive codebook vector
diff --git a/lib_dec/dec_gen_voic_fx.c b/lib_dec/dec_gen_voic_fx.c
index 325beb9f3b347fc5183cd875e42b633dd0075449..3e42d953561ca8a04f7ffddc2076c6560c30bf1a 100644
--- a/lib_dec/dec_gen_voic_fx.c
+++ b/lib_dec/dec_gen_voic_fx.c
@@ -18,8 +18,7 @@
/*----------------------------------------------------------------------*/
/* GLOBAL INPUT ARGUMENTS : */
/* _ (Struct) st_fx : decoder static memory */
-/* _ (Word16) L_frame : length of the frame */
-
+/* _ (Word16) L_frame : length of the frame */
/* _ (Word16[]) Aq_fx : LP filter coefficient Q12 */
/* _ (Word16) Es_pred_fx : predicted scaled innov. energy Q8 */
/* _ (Word16[]) pitch_buf_fx : floating pitch values for each subframe Q6*/
@@ -29,502 +28,30 @@
/* _ (Word16[]) exc_fx : adapt. excitation exc (Q_exc) */
/* _ (Word16[]) exc2_fx : adapt. excitation/total exc (Q_exc) */
/*----------------------------------------------------------------------*/
-
-
/*----------------------------------------------------------------------*/
/* RETURN ARGUMENTS : */
/* _ None */
/*======================================================================*/
ivas_error decod_gen_voic_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 L_frame, /* i : length of the frame */
- const Word16 sharpFlag_fx, /* i : formant sharpening flag */
- const Word16 *Aq_fx, /* i : LP filter coefficient Q12 */
- const Word16 Es_pred_fx, /* i : predicted scaled innov. energy Q8 */
- const Word16 do_WI_fx, /* i : do interpolation after a FER */
- Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe Q6 */
- Word16 *voice_factors_fx, /* o : voicing factors Q15 */
- Word16 *exc_fx, /* i/o: adapt. excitation exc Q_exc */
- Word16 *exc2_fx, /* i/o: adapt. excitation/total exc Q_exc */
- Word16 *bwe_exc_fx, /* o : excitation for SWB TBE Q_exc */
- Word16 *unbits, /* number of unused bits */
- Word16 *gain_buf /*Q14*/
-)
-{
-
-
- Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */
- Word16 gain_pit_fx = 0; /* pitch gain Q14 */
- move16();
- Word32 gain_code_fx = 0; /* gain/normalized gain of the algebraic excitation Q16 */
- move32();
- Word32 norm_gain_code_fx = 0; /* normalized gain of the algebraic excitation Q16 */
- move32();
- Word16 gain_inov_fx = 0; /* Innovation gain Q12 */
- move16();
- Word32 gc_mem[NB_SUBFR - 1]; /* gain_code from previous subframes */
- Word16 gp_mem[NB_SUBFR - 1]; /* gain_pitch from previous subframes */
- Word16 voice_fac_fx; /* voicing factor Q15 */
- Word16 code_fx[L_SUBFR]; /* algebraic codevector Q12 */
-
- const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */
- Word16 *pt_pitch_fx; /* pointer to floating pitch Q6 */
- Word16 i_subfr_fx, i; /* tmp variables */
- Word16 error_fx = 0;
- move16();
- Word16 gain_preQ_fx = 0; /* Gain of prequantizer excitation */
- move16();
- Word16 code_preQ_fx[L_SUBFR]; /* Prequantizer excitation */
- Word32 norm_gain_preQ_fx;
- Word16 pitch_limit_flag_fx;
-
- Word16 tmp1_fx, gain_code16;
- Word32 L_tmp_GC;
- Word32 L_tmp;
-
- Word16 harm_flag_acelp;
-
- Word16 shft_prev, ph_offset_fx;
- Word32 prev_res_nrg;
- Word32 prev_spch_nrg;
- Word32 curr_res_nrg;
- Word32 curr_spch_nrg;
- Word16 rint_bfi_pitch, rint_pitch;
- Word16 fraca, fracb, expa, expb, scale, exp1;
- Word16 *p_exc;
- Word16 mem_tmp_fx[M];
- Word16 syn_tmp_fx[L_FRAME16k];
- Word16 shft_curr;
- Word16 *p_syn;
- Word16 sp_enratio, Qsp_enratio;
- Word16 enratio, Qenratio;
- DTFS_STRUCTURE *PREVP, *CURRP;
- Word16 S_fx[PIT_MAX * 4 + 1], C_fx[PIT_MAX * 4 + 1];
- Word16 dummy2[2];
- Word16 out_fx[L_FRAME16k];
-
- Word16 pf_temp1[MAXLAG_WI]; /*may not need more than MAXLAG_WI/2+1 */
- Word16 pf_temp2[MAXLAG_WI];
- Word16 pf_temp[MAXLAG_WI];
- Word16 pf_n2[MAXLAG_WI];
- MUSIC_POSTFILT_HANDLE hMusicPF;
-#ifdef BASOP_NOGLOB_DECLARE_LOCAL
- Flag Overflow = 0;
- move32();
-#endif
-
- hMusicPF = st_fx->hMusicPF;
-
- GSC_DEC_HANDLE hGSCDec;
- hGSCDec = st_fx->hGSCDec;
- ivas_error error;
-
- error = IVAS_ERR_OK;
- move32();
-
- T0_fx = PIT_MIN;
- move16();
- T0_frac_fx = 0;
- move16();
-
- /* read harmonicity flag */
- harm_flag_acelp = 0;
- move16();
- test();
- test();
- IF( ( GE_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) && LE_32( st_fx->core_brate, MAX_BRATE_AVQ_EXC_TD ) ) && EQ_16( st_fx->coder_type, GENERIC ) )
- {
- harm_flag_acelp = (Word16) get_next_indice( st_fx, 1 );
- }
-
- /*------------------------------------------------------------------*
- * ACELP subframe loop
- *------------------------------------------------------------------*/
-
- p_Aq_fx = Aq_fx; /* pointer to interpolated LPC parameters */
- pt_pitch_fx = pitch_buf_fx; /* pointer to the pitch buffer */
- norm_gain_preQ_fx = 0;
- move32();
- gain_preQ_fx = 0;
- move16();
- set16_fx( code_preQ_fx, 0, L_SUBFR );
-
- FOR( i_subfr_fx = 0; i_subfr_fx < L_frame; i_subfr_fx += L_SUBFR )
- {
- /*----------------------------------------------------------------------*
- * Decode pitch lag
- *----------------------------------------------------------------------*/
-
- *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 0, L_frame, i_subfr_fx, st_fx->coder_type, &pitch_limit_flag_fx,
- &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_SUBFR );
- move16(); /*Q6*/
-
- /*--------------------------------------------------------------*
- * Find the adaptive codebook vector
- *--------------------------------------------------------------*/
-
- pred_lt4( &exc_fx[i_subfr_fx], &exc_fx[i_subfr_fx], T0_fx, T0_frac_fx, L_SUBFR + 1, pitch_inter4_2, L_INTERPOL2, PIT_UP_SAMP );
-
- tbe_celp_exc( L_frame, i_subfr_fx, T0_fx, T0_frac_fx, &error_fx, bwe_exc_fx );
-
- /*--------------------------------------------------------------*
- * LP filtering of the adaptive excitation
- *--------------------------------------------------------------*/
- lp_filt_exc_dec_fx( st_fx, MODE1, i_subfr_fx, L_SUBFR, L_frame, st_fx->acelp_cfg.ltf_mode, exc_fx );
- /*-----------------------------------------------------------------*
- * Transform-domain contribution decoding (active frames)
- *-----------------------------------------------------------------*/
-
- test();
- IF( GE_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) && ( st_fx->coder_type != INACTIVE ) )
- {
- gain_code_fx = 0;
- move16();
- transf_cdbk_dec_fx( st_fx, harm_flag_acelp, i_subfr_fx, Es_pred_fx, gain_code_fx, &gain_preQ_fx, &norm_gain_preQ_fx, code_preQ_fx, unbits );
- }
-
- /*--------------------------------------------------------------*
- * Innovation decoding
- *--------------------------------------------------------------*/
-
- inov_decode_fx( st_fx, st_fx->core_brate, 0, L_frame, sharpFlag_fx, i_subfr_fx, p_Aq_fx, st_fx->tilt_code_fx, *pt_pitch_fx, code_fx, L_SUBFR );
-
- /*--------------------------------------------------------------*
- * Gain decoding
- * Estimate spectrum tilt and voicing
- *--------------------------------------------------------------*/
-
- IF( LE_32( st_fx->core_brate, ACELP_8k00 ) )
- {
- gain_dec_lbr_fx( st_fx, st_fx->coder_type, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_SUBFR );
- }
- ELSE IF( GT_32( st_fx->core_brate, ACELP_32k ) )
- {
- gain_dec_SQ_fx( st_fx, i_subfr_fx, code_fx, Es_pred_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx );
- }
- ELSE
- {
- gain_dec_mless_fx( st_fx, L_frame, st_fx->coder_type, i_subfr_fx, -1, code_fx, Es_pred_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx );
- }
- st_fx->tilt_code_fx = est_tilt_fx( exc_fx + i_subfr_fx, gain_pit_fx, code_fx, gain_code_fx, &voice_fac_fx, st_fx->Q_exc ); // Q15
- move16();
-
- /*-----------------------------------------------------------------*
- * Transform domain contribution decoding
- *-----------------------------------------------------------------*/
- test();
- IF( GE_32( st_fx->core_brate, MAX_GSC_INACTIVE_BRATE ) && ( st_fx->coder_type == INACTIVE ) )
- {
- transf_cdbk_dec_fx( st_fx, harm_flag_acelp, i_subfr_fx, Es_pred_fx, gain_code_fx, &gain_preQ_fx, &norm_gain_preQ_fx, code_preQ_fx, unbits );
- }
-
- /* update LP filtered gains for the case of frame erasures */
- lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame );
-
- /*----------------------------------------------------------------------*
- * Find the total excitation
- *----------------------------------------------------------------------*/
-
- IF( EQ_16( L_frame, L_FRAME ) ) /* Rescaling for 12.8k core */
- {
- Rescale_exc( hMusicPF->dct_post_old_exc_fx, &exc_fx[i_subfr_fx], &bwe_exc_fx[i_subfr_fx * HIBND_ACB_L_FAC], hGSCDec->last_exc_dct_in_fx,
- L_SUBFR, L_SUBFR * HIBND_ACB_L_FAC, gain_code_fx, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, i_subfr_fx, st_fx->coder_type );
- }
- ELSE /* Rescaling for 16k core */
- {
-
- L_tmp_GC = L_max( gain_code_fx, L_shl( gain_preQ_fx, 16 ) ); /* Chose the maximum of gain_code or the prequantizer excitation x4 to keep some room*/
- Rescale_exc( hMusicPF->dct_post_old_exc_fx, &exc_fx[i_subfr_fx], &bwe_exc_fx[i_subfr_fx * 2], hGSCDec->last_exc_dct_in_fx,
- L_SUBFR, L_SUBFR * 2, L_tmp_GC, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, i_subfr_fx, st_fx->coder_type );
- }
-
- gain_code16 = round_fx( L_shl( gain_code_fx, st_fx->Q_exc ) ); /*Q_exc*/
-
- /*-----------------------------------------------------------------*
- * Add the ACELP pre-quantizer contribution
- *-----------------------------------------------------------------*/
-
- IF( gain_preQ_fx != 0 )
- {
- IF( st_fx->element_mode == EVS_MONO )
- {
- tmp1_fx = add( 15 - Q_AVQ_OUT_DEC - 2, st_fx->Q_exc );
- }
- ELSE
- {
- tmp1_fx = add( 15 - Q_AVQ_OUT - 2, st_fx->Q_exc );
- }
- FOR( i = 0; i < L_SUBFR; i++ )
- {
- Word32 Ltmp1;
- /* Contribution from AVQ layer */
- Ltmp1 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /* Q2 + Q6 -> Q9*/
- Ltmp1 = L_shl_sat( Ltmp1, tmp1_fx ); /* Q16 + Q_exc */
-
- /* Compute exc2 */
- L_tmp = L_shl_sat( L_mult( gain_pit_fx, exc_fx[i + i_subfr_fx] ), 1 ); // Q_exc+Q14+1+1
- exc2_fx[i + i_subfr_fx] = round_fx_sat( L_add_sat( L_tmp, Ltmp1 ) ); // Q_exc
- move16();
- /* gain_pit in Q14 */
- L_tmp = L_mult( gain_code16, code_fx[i] ); // Q_exc+Q9+1
- L_tmp = L_shl_sat( L_tmp, 5 ); // Q_exc+Q9+1+5
- L_tmp = L_mac_sat( L_tmp, exc_fx[i + i_subfr_fx], gain_pit_fx ); // Q_exc+Q15 +1
- L_tmp = L_shl_sat( L_tmp, 1 ); /* saturation can occur here */
-
- exc_fx[i + i_subfr_fx] = round_fx_sat( L_add_sat( L_tmp, Ltmp1 ) ); // Q_exc
- move16();
- }
- }
- ELSE
- {
- Acelp_dec_total_exc( exc_fx, exc2_fx, gain_code16, gain_pit_fx, i_subfr_fx, code_fx, L_SUBFR );
- }
-
- /*-----------------------------------------------------------------*
- * Prepare TBE excitation
- *-----------------------------------------------------------------*/
-
- Word16 idx = 0;
- move16();
- IF( i_subfr_fx != 0 )
- {
- idx = idiv1616( i_subfr_fx, L_SUBFR );
- }
-
- prep_tbe_exc_fx( L_frame, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
- &voice_factors_fx[idx], bwe_exc_fx, gain_preQ_fx, code_preQ_fx,
- st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate );
-
-
- /*----------------------------------------------------------------*
- * Excitation enhancements (update of total excitation signal)
- *----------------------------------------------------------------*/
-
- test();
- IF( GT_32( st_fx->core_brate, ACELP_32k ) || ( st_fx->coder_type == INACTIVE ) )
- {
- Copy( exc_fx + i_subfr_fx, exc2_fx + i_subfr_fx, L_SUBFR );
- }
- ELSE
- {
- enhancer_fx( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx,
- norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc );
- }
-
- p_Aq_fx += ( M + 1 );
- pt_pitch_fx++;
- gain_buf[idx] = gain_pit_fx; // Q14
- move16();
- }
-
- /* FEC fast recovery */
-
- IF( do_WI_fx )
- {
- /* shft_prev = L_EXC_MEM - rint_new_fx(st_fx->bfi_pitch_fx);*/
- L_tmp = L_shl( L_deposit_l( st_fx->bfi_pitch_fx ), 10 ); /*Q16*/
- rint_bfi_pitch = rint_new_fx( L_tmp ); /*Q0*/
- shft_prev = sub( L_EXC_MEM, rint_bfi_pitch ); /*Q0*/
-
- p_exc = st_fx->hWIDec->old_exc2_fx + shft_prev;
- p_syn = st_fx->hWIDec->old_syn2_fx + shft_prev;
- move16();
- move16();
-
- prev_res_nrg = L_deposit_l( 1 );
- prev_spch_nrg = L_deposit_l( 1 );
- FOR( i = 0; i < rint_bfi_pitch; i++ )
- {
- prev_res_nrg = L_mac0_sat( prev_res_nrg, *p_exc, *p_exc ); /* 2*st_fx->prev_Q_exc_fr */
- prev_spch_nrg = L_mac0_sat( prev_spch_nrg, *p_syn, *p_syn ); /* 2*st_fx->prev_Q_syn_fr */
- p_exc++;
- p_syn++;
- }
-
- Copy( st_fx->mem_syn2_fx, mem_tmp_fx, M );
-
- syn_12k8_fx( st_fx->L_frame, Aq_fx, exc2_fx, syn_tmp_fx, mem_tmp_fx, 1, st_fx->Q_exc, st_fx->Q_syn );
-
- L_tmp = L_shl( L_deposit_l( pitch_buf_fx[NB_SUBFR16k - 1] ), 10 ); /*Q16*/
- rint_pitch = rint_new_fx( L_tmp ); /*Q0*/
- shft_curr = sub( st_fx->L_frame, rint_pitch ); /*Q0*/
-
- p_exc = exc2_fx + shft_curr;
- p_syn = syn_tmp_fx + shft_curr;
-
- curr_res_nrg = L_deposit_l( 1 );
- curr_spch_nrg = L_deposit_l( 1 );
- FOR( i = 0; i < rint_pitch; i++ )
- {
- curr_res_nrg = L_mac0_sat( curr_res_nrg, *p_exc, *p_exc ); /* 2*st_fx->Q_exc */
- curr_spch_nrg = L_mac0_sat( curr_spch_nrg, *p_syn, *p_syn ); /* 2*st_fx->Q_syn */
- p_exc++;
- p_syn++;
- }
-
- /* enratio = (curr_res_nrg / prev_res_nrg); */
- IF( prev_res_nrg > 0 )
- {
- expa = norm_l( prev_res_nrg );
- fraca = extract_h( L_shl( prev_res_nrg, expa ) ); /* 2*st_fx->prev_Q_exc_fr -16+expa +1*/
- expa = sub( 30, add( expa, ( shl( st_fx->prev_Q_exc_fr, 1 ) ) ) );
-
- expb = norm_l( curr_res_nrg );
- fracb = round_fx_sat( L_shl_sat( curr_res_nrg, expb ) ); /* 2*st_fx->Q_exc +expb+1 -16*/
- expb = sub( 30, add( expb, shl( st_fx->Q_exc, 1 ) ) );
-
- scale = shr( sub( fraca, fracb ), 15 );
- fracb = shl( fracb, scale ); // Q(15-expb)+scale
- expb = sub( expb, scale );
-
- enratio = div_s( fracb, fraca ); // Q(15-(expb-expa))
- exp1 = sub( expb, expa );
- Qenratio = sub( 15, exp1 );
- }
- ELSE
- {
- enratio = 0;
- move16();
- Qenratio = 0;
- move16();
- }
-
- /* sp_enratio = curr_spch_nrg/prev_spch_nrg */
- IF( prev_spch_nrg > 0 )
- {
- expa = norm_l( prev_spch_nrg );
- fraca = extract_h( L_shl( prev_spch_nrg, expa ) ); /* 2*st_fx->prev_Q_syn_fr +expa+1-16*/
- expa = sub( 30, add( expa, shl( st_fx->prev_Q_syn_fr, 1 ) ) );
-
- expb = norm_l( curr_spch_nrg );
- fracb = round_fx_sat( L_shl_sat( curr_spch_nrg, expb ) ); /* 2*st_fx->Q_syn +expb-16 */
- expb = sub( 30, add( expb, shl( st_fx->Q_syn, 1 ) ) );
-
- scale = shr( sub( fraca, fracb ), 15 );
- fracb = shl( fracb, scale ); // Q(15-expb) +scale
- expb = sub( expb, scale );
-
- sp_enratio = div_s( fracb, fraca ); // Q(15-(expb-expa))
- exp1 = sub( expb, expa );
- Qsp_enratio = sub( 15, exp1 );
- }
- ELSE
- {
- sp_enratio = 0;
- move16();
- Qsp_enratio = 0;
- move16();
- }
-
- test();
- test();
- test();
- test();
- IF( GT_16( shl_ro( enratio, sub( 15, Qenratio ), &Overflow ), 8192 ) && /*compare with 0.25 in Q15*/
- LT_16( shl_ro( enratio, sub( 10, Qenratio ), &Overflow ), 15360 ) && /*compare with 15.0 in Q10*/
- GT_16( shl_ro( sp_enratio, sub( 15, Qsp_enratio ), &Overflow ), 4915 ) && /*compare with 0.15 in Q15*/
- LT_16( st_fx->bfi_pitch_fx, 9600 ) && /*Q6*/
- LT_16( pitch_buf_fx[NB_SUBFR16k - 1], 9600 ) ) /*Q6*/
- {
- IF( NE_32( ( error = DTFS_new_fx( &PREVP ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = DTFS_new_fx( &CURRP ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- GetSinCosTab_fx( rint_bfi_pitch, S_fx, C_fx );
- DTFS_to_fs_fx( st_fx->hWIDec->old_exc2_fx + shft_prev, rint_bfi_pitch, PREVP, (Word16) st_fx->output_Fs, do_WI_fx, S_fx, C_fx );
- PREVP->Q = add( PREVP->Q, st_fx->prev_Q_exc_fr );
- move16();
-
- GetSinCosTab_fx( rint_pitch, S_fx, C_fx );
- DTFS_to_fs_fx( exc2_fx + shft_curr, rint_pitch, CURRP, (Word16) st_fx->output_Fs, do_WI_fx, S_fx, C_fx );
- CURRP->Q = add( CURRP->Q, st_fx->Q_exc );
- move16();
-
- ph_offset_fx = 0;
- move16();
- IF( NE_32( ( error = WIsyn_fx( *PREVP, CURRP, dummy2, &( ph_offset_fx ), out_fx, (Word16) st_fx->L_frame, 1, S_fx, C_fx, pf_temp1, pf_temp2, pf_temp, pf_n2 ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
-
- Copy_Scale_sig( out_fx, exc2_fx, st_fx->L_frame, st_fx->Q_exc ); // Q_exc
- Copy_Scale_sig( out_fx, exc_fx, st_fx->L_frame, st_fx->Q_exc ); // Q_exc
-
- /* update bwe_exc for SWB-TBE */
- FOR( i_subfr_fx = 0; i_subfr_fx < L_frame; i_subfr_fx += L_SUBFR )
- {
- interp_code_4over2_fx( exc_fx + i_subfr_fx, bwe_exc_fx + shl( i_subfr_fx, 1 ), L_SUBFR );
- }
-
- free( PREVP );
- free( CURRP );
- }
- }
-
- /* SC-VBR */
- st_fx->prev_gain_pit_dec_fx = gain_pit_fx;
- move16(); /*Q14*/
- st_fx->prev_tilt_code_dec_fx = st_fx->tilt_code_fx;
- move16(); /*Q15*/
-
- return error;
-}
-
-/*======================================================================*/
-/* FUNCTION : decod_gen_voic_ivas_fx() */
-/*----------------------------------------------------------------------*/
-/* PURPOSE : Decode generic (GC), voiced (VC) and AMR-WB IO frames */
-/* */
-/*----------------------------------------------------------------------*/
-/* GLOBAL INPUT ARGUMENTS : */
-/* _ (Struct) st_fx : decoder static memory */
-/* _ (Word16) L_frame : length of the frame */
-
-/* _ (Word16[]) Aq_fx : LP filter coefficient Q12 */
-/* _ (Word16) Es_pred_fx : predicted scaled innov. energy Q8 */
-/* _ (Word16[]) pitch_buf_fx : floating pitch values for each subframe Q6*/
-/* _ (Word16[]) voice_factors_fx: frame error rate Q15 */
-/*----------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ (Word16[]) exc_fx : adapt. excitation exc (Q_exc) */
-/* _ (Word16[]) exc2_fx : adapt. excitation/total exc (Q_exc) */
-/*----------------------------------------------------------------------*/
-
-
-/*----------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ None */
-/*======================================================================*/
-
-ivas_error decod_gen_voic_ivas_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 L_frame, /* i : length of the frame */
- const Word16 sharpFlag_fx, /* i : formant sharpening flag */
- const Word16 *Aq_fx, /* i : LP filter coefficient Q12*/
- const Word16 Es_pred_fx, /* i : predicted scaled innov. energy Q8 */
- const Word16 do_WI_fx, /* i : do interpolation after a FER */
- Word16 *pitch_buf_fx, /* o : Word16 pitch values for each subframe Q6*/
- Word16 *voice_factors_fx, /* o : voicing factors Q15 */
- Word16 *exc_fx, /* i/o: adapt. excitation exc Q_exc */
- Word16 *exc2_fx, /* i/o: adapt. excitation/total exc Q_exc */
- Word16 *bwe_exc_fx, /* o : excitation for SWB TBE Q_exc */
- Word16 *unbits, /* number of unused bits */
- Word16 *gain_buf,
- const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
- const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6 */
+ Decoder_State *st_fx, /* i/o: decoder static memory */
+ const Word16 L_frame, /* i : length of the frame */
+ const Word16 sharpFlag_fx, /* i : formant sharpening flag */
+ const Word16 *Aq_fx, /* i : LP filter coefficient Q12 */
+ const Word16 Es_pred_fx, /* i : predicted scaled innov. energy Q8 */
+ const Word16 do_WI_fx, /* i : do interpolation after a FER */
+ Word16 *pitch_buf_fx, /* o : Word16 pitch values for each subframe Q6 */
+ Word16 *voice_factors_fx, /* o : voicing factors Q15 */
+ Word16 *exc_fx, /* i/o: adapt. excitation exc Q_exc */
+ Word16 *exc2_fx, /* i/o: adapt. excitation/total exc Q_exc */
+ Word16 *bwe_exc_fx, /* o : excitation for SWB TBE Q_exc */
+ Word16 *unbits, /* number of unused bits */
+ Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14 */
+ const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
+ const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6 */
)
{
-
-
- Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */
+ Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */
Word16 gain_pit_fx; /* pitch gain Q14 */
Word32 gain_code_fx; /* gain/normalized gain of the algebraic excitation Q16 */
Word32 norm_gain_code_fx; /* normalized gain of the algebraic excitation Q16 */
@@ -535,7 +62,7 @@ ivas_error decod_gen_voic_ivas_fx(
Word16 code_fx[L_SUBFR]; /* algebraic codevector Q12 */
const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */
- Word16 *pt_pitch_fx; /* pointer to Word16 pitch Q6 */
+ Word16 *pt_pitch_fx; /* pointer to Word16 pitch Q6 */
Word16 i_subfr_fx, i; /* tmp variables */
Word16 error_fx;
Word16 gain_preQ_fx; /* Gain of prequantizer excitation */
@@ -632,10 +159,8 @@ ivas_error decod_gen_voic_ivas_fx(
* Decode pitch lag
*----------------------------------------------------------------------*/
- /**pt_pitch_fx = pit_decode_fx(st_fx, st_fx->core_brate, 0, L_frame, i_subfr_fx, st_fx->coder_type, &pitch_limit_flag_fx,
- &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_SUBFR);*/
- *pt_pitch_fx = pit_decode_ivas_fx( st_fx, st_fx->core_brate, 0, L_frame, i_subfr_fx, st_fx->coder_type, &pitch_limit_flag_fx,
- &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_SUBFR, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf );
+ *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 0, L_frame, i_subfr_fx, st_fx->coder_type, &pitch_limit_flag_fx,
+ &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_SUBFR, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf );
move16(); /*Q6*/
/*--------------------------------------------------------------*
@@ -676,7 +201,7 @@ ivas_error decod_gen_voic_ivas_fx(
IF( LE_32( st_fx->core_brate, ACELP_8k00 ) )
{
- gain_dec_lbr_ivas_fx( st_fx, st_fx->coder_type, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_SUBFR );
+ gain_dec_lbr_fx( st_fx, st_fx->coder_type, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_SUBFR );
}
ELSE IF( GT_32( st_fx->core_brate, ACELP_32k ) )
{
@@ -699,7 +224,14 @@ ivas_error decod_gen_voic_ivas_fx(
}
/* update LP filtered gains for the case of frame erasures */
- lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame );
+ IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
+ {
+ lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame );
+ }
+ ELSE
+ {
+ lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame );
+ }
/*----------------------------------------------------------------------*
* Find the total excitation
@@ -780,10 +312,6 @@ ivas_error decod_gen_voic_ivas_fx(
* Prepare TBE excitation
*-----------------------------------------------------------------*/
- /*prep_tbe_exc_fx(L_frame, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
- &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx,
- st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate);*/
-
Word16 idx;
idx = 0;
move16();
@@ -792,10 +320,10 @@ ivas_error decod_gen_voic_ivas_fx(
idx = idiv1616( i_subfr_fx, L_SUBFR );
}
- prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
- &voice_factors_fx[idx], bwe_exc_fx, gain_preQ_fx, code_preQ_fx,
- st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate,
- st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
+ prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
+ &voice_factors_fx[idx], bwe_exc_fx, gain_preQ_fx, code_preQ_fx,
+ st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate,
+ st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
/*----------------------------------------------------------------*
@@ -809,8 +337,16 @@ ivas_error decod_gen_voic_ivas_fx(
}
ELSE
{
- enhancer_ivas_fx2( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx,
- norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc );
+ IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
+ {
+ enhancer_fx( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx,
+ norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc );
+ }
+ ELSE
+ {
+ enhancer_ivas_fx2( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx,
+ norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc );
+ }
}
p_Aq_fx += ( M + 1 );
diff --git a/lib_dec/dec_higher_acelp_fx.c b/lib_dec/dec_higher_acelp_fx.c
index aff7e56564e134e0492ba56f92bed3e6882af87b..6144765a8707dec75df9f6ffd037cb64681ddb17 100644
--- a/lib_dec/dec_higher_acelp_fx.c
+++ b/lib_dec/dec_higher_acelp_fx.c
@@ -8,7 +8,6 @@
#include "prot_fx.h" /* Function prototypes */
#include "rom_com.h" /* Static table prototypes */
-#define IVAS_CODE_AVQ
/*-----------------------------------------------------------------*
* transf_cdbk_dec()
* Transform domain contribution decoding
@@ -129,7 +128,6 @@ void transf_cdbk_dec_fx(
* Demultiplex and decode subvectors from bit-stream
*--------------------------------------------------------------*/
-#ifdef IVAS_CODE_AVQ
AVQ_demuxdec_fx( st_fx, code_preQ, &nBits, 8, nq, avq_bit_sFlag, trgtSvPos );
Word16 q_Code_preQ;
IF( ( st_fx->element_mode == EVS_MONO ) )
@@ -142,9 +140,6 @@ void transf_cdbk_dec_fx(
q_Code_preQ = Q_AVQ_OUT;
move16();
}
-#else
- AVQ_demuxdec_fx( st_fx, code_preQ, &nBits, 8, nq );
-#endif
FOR( i = 0; i < L_SUBFR; i++ )
{
code_preQ[i] = shl_o( code_preQ[i], q_Code_preQ, &Overflow );
@@ -185,7 +180,6 @@ void transf_cdbk_dec_fx(
st_fx->last_nq_preQ = nq[7];
move16();
-#ifdef IVAS_CODE_AVQ
/* TD pre-quantizer: in extreme cases at subframe boundaries, lower the preemphasis memory to avoid a saturation */
test();
test();
@@ -209,7 +203,6 @@ void transf_cdbk_dec_fx(
st_fx->last_code_preq = code_preQ[L_SUBFR - 1]; // q_Code_preQ
move16();
-#endif
PREEMPH_FX( code_preQ, FAC_PRE_AVQ_FX, L_SUBFR, &st_fx->mem_preemp_preQ_fx );
/*--------------------------------------------------------------*
* Compute normalized prequantizer excitation gain for FEC
diff --git a/lib_dec/dec_pit_exc_fx.c b/lib_dec/dec_pit_exc_fx.c
index 746b668198d4c2d0a3ff030739b0d40d82b23952..a18029cdccfe8bb1a5a2c0bd01a939c414b1adc9 100644
--- a/lib_dec/dec_pit_exc_fx.c
+++ b/lib_dec/dec_pit_exc_fx.c
@@ -14,13 +14,13 @@
/*--------------------------------------------------------------------------*/
/* INPUT ARGUMENTS : */
/* _ (Word16*) Aq_fx : LP filter coefficient Q12 */
-/* _ (Word16) coder_type : coding type Q0 */
+/* _ (Word16) coder_type : coding type Q0 */
/* _ (Word16) nb_subfr_fx :Number of subframe considered */
/* _ (Word16) Es_pred_fx :predicted scaled innov. energy */
/*--------------------------------------------------------------------------*/
/* OUTPUT ARGUMENTS : */
/* _ (Word16*) pitch_buf_fx : floating pitch values for each subframe Q6 */
-/* _ (Word16*) code_fx : innovation Q12 */
+/* _ (Word16*) code_fx : innovation Q12 */
/*--------------------------------------------------------------------------*/
/* INPUT/OUTPUT ARGUMENTS : */
/* Decoder_State_fx *st_fx : decoder state structure */
@@ -29,436 +29,30 @@
/* RETURN ARGUMENTS : */
/* _ None */
/*==========================================================================*/
-void dec_pit_exc_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 *Aq_fx, /* i : LP filter coefficient */
- const Word16 coder_type, /* i : coding type */
- const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
- Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */
- Word16 *code_fx, /* o : innovation */
- Word16 *exc_fx, /* i/o: adapt. excitation exc */
- Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */
- const Word16 nb_subfr_fx /* i : Number of subframe considered */
- ,
- Word16 *gain_buf /*Q14*/
-)
-{
- Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */
- Word16 gain_pit_fx; /* pitch gain Q14 */
- Word32 gain_code_fx; /* gain/normalized gain of the algebraic excitation Q16 */
- Word32 norm_gain_code_fx; /* normalized gain of the algebraic excitation Q16 */
- Word16 gain_inov_fx; /* Innovation gain Q12 */
- Word16 voice_fac_fx; /* voicing factor Q15 */
- Word16 L_subfr_fx, pit_idx_fx;
- const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */
- Word16 *pt_pitch_fx; /* pointer to floating pitch Q6 */
- Word16 i_subfr_fx, i; /* tmp variables */
- Word32 Local_BR_fx, Pitch_BR_fx;
- Word16 pitch_limit_flag, Pitch_CT_fx;
- Word16 exc2_bidon[L_SUBFR];
- Word16 *pt_gain; /* Pointer to floating gain values for each subframe */
-
- Word16 gain_code16, gain_pitx2;
- Word32 L_tmp;
- Word16 nbits;
- GSC_DEC_HANDLE hGSCDec;
- gain_pit_fx = 0;
- move16();
- hGSCDec = st_fx->hGSCDec;
-
- MUSIC_POSTFILT_HANDLE hMusicPF;
- hMusicPF = st_fx->hMusicPF;
-
- Word16 use_fcb;
- Word32 gc_mem[NB_SUBFR - 1]; /* gain_code from previous subframes */
- Word16 gp_mem[NB_SUBFR - 1]; /* gain_pitch from previous subframes */
-#ifdef BASOP_NOGLOB_DECLARE_LOCAL
- Flag Overflow = 0;
- move16();
-#endif
-
- use_fcb = 0;
- move16();
- test();
- test();
- IF( ( st_fx->GSC_IVAS_mode > 0 ) && ( EQ_16( st_fx->GSC_noisy_speech, 1 ) || GT_32( st_fx->core_brate, GSC_H_RATE_STG ) ) )
- {
- Local_BR_fx = ACELP_8k00;
- Pitch_CT_fx = GENERIC;
- Pitch_BR_fx = ACELP_8k00;
- move32();
- move32();
- move16();
- IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
- {
- Local_BR_fx = ACELP_14k80;
- move32();
- if ( st_fx->GSC_IVAS_mode > 0 )
- {
- Local_BR_fx = ACELP_9k60;
- move32();
- }
- Pitch_BR_fx = st_fx->core_brate;
- move32();
- }
- }
- ELSE IF( EQ_16( st_fx->GSC_noisy_speech, 1 ) )
- {
- Local_BR_fx = ACELP_7k20;
- move32();
- Pitch_CT_fx = GENERIC;
- move16();
- Pitch_BR_fx = ACELP_7k20;
- move32();
- if ( EQ_16( st_fx->L_frame, L_FRAME16k ) )
- {
- Pitch_BR_fx = st_fx->core_brate;
- move32();
- }
- }
- ELSE
- {
- Local_BR_fx = ACELP_7k20;
- move32();
- Pitch_CT_fx = AUDIO;
- move16();
- Pitch_BR_fx = st_fx->core_brate;
- move32();
- IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
- {
- Pitch_BR_fx = ACELP_13k20;
- move32();
- Pitch_CT_fx = GENERIC;
- move16();
- }
- }
- L_subfr_fx = mult_r( st_fx->L_frame, div_s( 1, nb_subfr_fx ) ); /* TV2Opt : this could be less complex with 2 ifs*/
-
- gain_code_fx = 0;
- move16();
- pitch_limit_flag = 1;
- move16(); /* always extended pitch Q range */
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( ( GE_32( st_fx->core_brate, MIN_RATE_FCB ) || ( EQ_16( st_fx->GSC_noisy_speech, 1 ) && ( ( EQ_16( st_fx->L_frame, L_FRAME ) && GE_32( st_fx->core_brate, ACELP_13k20 ) ) || ( EQ_16( st_fx->L_frame, L_FRAME16k ) && GE_32( st_fx->core_brate, GSC_H_RATE_STG ) ) || st_fx->GSC_IVAS_mode == 0 ) ) ) && EQ_16( L_subfr_fx, L_SUBFR ) ) )
- {
- use_fcb = 1;
- move16();
- }
- ELSE IF( ( st_fx->GSC_IVAS_mode > 0 ) && EQ_16( L_subfr_fx, 2 * L_SUBFR ) && LT_16( st_fx->GSC_IVAS_mode, 3 ) )
- {
- use_fcb = 2;
- st_fx->acelp_cfg.fcb_mode = 1;
- move16();
- move16();
- set16_fx( st_fx->acelp_cfg.gains_mode, 6, 4 );
- set16_fx( st_fx->acelp_cfg.pitch_bits, 9, 4 );
- set16_fx( st_fx->acelp_cfg.fixed_cdk_index, 14, 5 );
- }
- /*------------------------------------------------------------------*
- * ACELP subframe loop
- *------------------------------------------------------------------*/
- p_Aq_fx = Aq_fx; /* pointer to interpolated LPC parameters */
- pt_pitch_fx = pitch_buf_fx; /* pointer to the pitch buffer */
- pt_gain = gain_buf; /* pointer to the gain buffer */
- FOR( i_subfr_fx = 0; i_subfr_fx < st_fx->L_frame; i_subfr_fx += L_subfr_fx )
- {
- /*----------------------------------------------------------------------*
- * Decode pitch lag
- *----------------------------------------------------------------------*/
- *pt_pitch_fx = pit_decode_fx( st_fx, Pitch_BR_fx, 0, st_fx->L_frame, i_subfr_fx, Pitch_CT_fx, &pitch_limit_flag, &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_subfr_fx );
- move16();
-
- /*--------------------------------------------------------------*
- * Find the adaptive codebook vector.
- *--------------------------------------------------------------*/
-
- pred_lt4( &exc_fx[i_subfr_fx], &exc_fx[i_subfr_fx], T0_fx, T0_frac_fx, L_subfr_fx + 1, pitch_inter4_2, L_INTERPOL2, PIT_UP_SAMP );
-
- /*--------------------------------------------------------------*
- * Innovation decoding
- *--------------------------------------------------------------*/
-
- IF( EQ_16( use_fcb, 1 ) )
- {
- inov_decode_fx( st_fx, Local_BR_fx, 0, st_fx->L_frame, 1, i_subfr_fx, p_Aq_fx, st_fx->tilt_code_fx, *pt_pitch_fx, code_fx, L_subfr_fx );
- /*--------------------------------------------------------------*
- * Gain decoding
- * Estimate spectrum tilt and voicing
- *--------------------------------------------------------------*/
-
- gain_dec_mless_fx( st_fx, st_fx->L_frame, LOCAL_CT, i_subfr_fx, -1, code_fx, Es_pred_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx );
-
- st_fx->tilt_code_fx = est_tilt_fx( exc_fx + i_subfr_fx, gain_pit_fx, code_fx, gain_code_fx, &voice_fac_fx, 0 );
- move16();
- }
- ELSE IF( EQ_16( use_fcb, 2 ) ) /* IVAS only */
- {
- inov_decode_fx( st_fx, Local_BR_fx, 0, st_fx->L_frame, 1, i_subfr_fx, p_Aq_fx, st_fx->tilt_code_fx, *pt_pitch_fx, code_fx, L_subfr_fx );
- /*--------------------------------------------------------------*
- * Gain decoding
- * Estimate spectrum tilt and voicing
- *--------------------------------------------------------------*/
-
- gain_dec_lbr_fx( st_fx, GENERIC, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_subfr_fx );
-
- st_fx->tilt_code_fx = est_tilt_fx( exc_fx + i_subfr_fx, gain_pit_fx, code_fx, gain_code_fx, &voice_fac_fx, 0 );
- move16();
- }
- ELSE
- {
- nbits = 5;
- move16();
- if ( LT_32( st_fx->core_brate, MIN_RATE_FCB ) )
- {
- nbits = 4;
- move16();
- }
-
- set16_fx( code_fx, 0, L_SUBFR );
- gain_code_fx = L_deposit_l( 0 );
- st_fx->tilt_code_fx = 0;
- move16();
- pit_idx_fx = (Word16) get_next_indice( st_fx, nbits );
- move16();
-
- gain_pit_fx = add( 9590, dic_gp_fx[pit_idx_fx] );
- move16(); /*Q14 0.5853 in Q14 9590*/
-
- if ( st_fx->BER_detect ) /* Bitstream is corrupted, use the past pitch gain */
- {
- gain_pit_fx = st_fx->lp_gainp_fx;
- move16();
- }
- gain_code_fx = L_mult0( s_max( sub( 32767, shl_o( gain_pit_fx, 1, &Overflow ) ), 16384 ), st_fx->lp_gainc_fx ); /* Use gain pitch and past gain code as an indicator to help finding the best scaling value. gain_code_fx used a temp var*/
- }
-
- /*----------------------------------------------------------------------*
- * Find the total excitation
- *----------------------------------------------------------------------*/
-
- Rescale_exc( hMusicPF->dct_post_old_exc_fx, &exc_fx[i_subfr_fx], &bwe_exc_fx[( i_subfr_fx * ( 2 * HIBND_ACB_L_FAC ) ) / 2], hGSCDec->last_exc_dct_in_fx,
- L_subfr_fx, shr( imult1616( L_subfr_fx, 2 * HIBND_ACB_L_FAC ), 1 ), gain_code_fx, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, i_subfr_fx, coder_type );
-
- gain_code16 = round_fx( L_shl( gain_code_fx, st_fx->Q_exc ) ); /*Q_exc*/
-
- IF( use_fcb != 0 )
- {
- Acelp_dec_total_exc( exc_fx, exc2_bidon - i_subfr_fx, gain_code16, gain_pit_fx, i_subfr_fx, code_fx, L_subfr_fx );
- }
- ELSE
- {
- IF( norm_s( s_or( gain_pit_fx, 1 ) ) == 0 )
- {
- FOR( i = 0; i < L_subfr_fx; i++ )
- {
- L_tmp = L_shl_sat( L_mult( gain_pit_fx, exc_fx[i + i_subfr_fx] ), 1 ); /*Q16+Q_exc*/
- exc_fx[i + i_subfr_fx] = round_fx_sat( L_tmp ); /*Q_exc*/
- move16();
- }
- }
- ELSE
- {
- gain_pitx2 = shl( gain_pit_fx, 1 ); /*Q15*/
-
- FOR( i = 0; i < L_subfr_fx; i++ )
- {
- L_tmp = L_mult( gain_pitx2, exc_fx[i + i_subfr_fx] ); /*Q16+Q_exc*/
- exc_fx[i + i_subfr_fx] = round_fx_sat( L_tmp ); /*Q_exc*/
- move16();
- }
- }
- }
-
- IF( EQ_16( L_subfr_fx, L_FRAME16k ) )
- {
- /* update gains for FEC - equivalent to lp_gain_updt() */
- st_fx->lp_gainp_fx = gain_pit_fx;
- move16();
- st_fx->lp_gainc_fx = 0;
- move32();
-
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- pt_pitch_fx++;
- move16();
- move16();
- move16();
- move16();
- p_Aq_fx += 5 * ( M + 1 );
- }
- ELSE IF( EQ_16( L_subfr_fx, L_FRAME16k / 2 ) )
- {
- IF( i_subfr_fx == 0 )
- {
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- pt_pitch_fx++;
- p_Aq_fx += 2 * ( M + 1 );
- move16();
-
- /* update gains for FEC - equivalent to lp_gain_updt() */
- st_fx->lp_gainp_fx = extract_h( L_mult( 6554, gain_pit_fx ) ); /*Q14 (3/15 in Q15 9830)*/
- st_fx->lp_gainc_fx = 0;
- move16();
- move16();
- }
- ELSE
- {
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- pt_pitch_fx++;
- p_Aq_fx += 3 * ( M + 1 );
- move16();
- move16();
-
- /* update gains for FEC - equivalent to lp_gain_updt() */
- st_fx->lp_gainp_fx = extract_h( L_mult( 26214, gain_pit_fx ) ); /*Q14 (12/15 in Q15 9830)*/
- st_fx->lp_gainc_fx = 0;
- move16();
- move16();
- }
- }
- ELSE IF( EQ_16( L_subfr_fx, 128 ) ) /*2*L_SUBFR*/
- {
- p_Aq_fx += 2 * ( M + 1 );
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- move16();
- pt_pitch_fx++;
- *pt_gain = gain_pit_fx;
- move16();
- pt_gain++;
- *pt_gain = *( pt_gain - 1 );
- move16();
- pt_gain++;
- IF( i_subfr_fx == 0 )
- {
- /* update gains for FEC - equivalent to lp_gain_updt() */
- st_fx->lp_gainp_fx = extract_h( L_mult( 9830, gain_pit_fx ) ); /*Q14 (3/10 in Q15 9830)*/
- st_fx->lp_gainc_fx = 0;
- move16();
- move16();
- }
- ELSE
- {
- /* update gains for FEC - equivalent to lp_gain_updt() */
- st_fx->lp_gainp_fx = extract_h( L_mult( 22938, gain_pit_fx ) ); /*Q14 (7/10 in Q15 22938)*/
- st_fx->lp_gainc_fx = 0;
- move16();
- move16();
- }
- }
- ELSE IF( EQ_16( L_subfr_fx, 256 ) ) /*4*L_SUBFR*/
- {
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- move16();
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- move16();
- pt_pitch_fx++;
- *pt_pitch_fx = *( pt_pitch_fx - 1 );
- move16();
- pt_pitch_fx++;
- *pt_gain = gain_pit_fx;
- move16();
- pt_gain++;
- *pt_gain = *( pt_gain - 1 );
- move16();
- pt_gain++;
- *pt_gain = *( pt_gain - 1 );
- move16();
- pt_gain++;
- *pt_gain = *( pt_gain - 1 );
- move16();
- pt_gain++;
- p_Aq_fx += 4 * ( M + 1 );
-
- /* update gains for FEC - equivalent to lp_gain_updt() */
- st_fx->lp_gainp_fx = gain_pit_fx;
- move16();
- st_fx->lp_gainc_fx = 0;
- move16();
- }
- ELSE
- {
- p_Aq_fx += ( M + 1 );
- move16();
- pt_pitch_fx++;
- move16();
- *pt_gain = gain_pit_fx;
- move16();
- pt_gain++;
-
- lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, 0, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, st_fx->L_frame );
- }
- }
-
- return;
-}
-
-/*==========================================================================*/
-/* FUNCTION : void dec_pit_exc_ivas_fx() */
-/*--------------------------------------------------------------------------*/
-/* PURPOSE : Decode pitch only contribution */
-/*--------------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ (Word16*) Aq_fx : LP filter coefficient Q12 */
-/* _ (Word16) coder_type : coding type Q0 */
-/* _ (Word16) nb_subfr_fx :Number of subframe considered */
-/* _ (Word16) Es_pred_fx :predicted scaled innov. energy */
-/*--------------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ (Word16*) pitch_buf_fx : Word16 pitch values for each subframe Q6 */
-/* _ (Word16*) code_fx : innovation */
-/*--------------------------------------------------------------------------*/
-/* INPUT/OUTPUT ARGUMENTS : */
-/* Decoder_State_fx *st_fx : decoder state structure */
-/* _ (Word16*) exc_fx : adapt. excitation exc */
-/*--------------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ None */
-/*==========================================================================*/
-void dec_pit_exc_ivas_fx(
+void dec_pit_exc_fx(
Decoder_State *st_fx, /* i/o: decoder static memory */
const Word16 *Aq_fx, /* i : LP filter coefficient */
const Word16 coder_type, /* i : coding type */
const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
- Word16 *pitch_buf_fx, /* o : Word16 pitch values for each subframe */
+ Word16 *pitch_buf_fx, /* o : Word16 pitch values for each subframe */
Word16 *code_fx, /* o : innovation */
Word16 *exc_fx, /* i/o: adapt. excitation exc */
Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */
const Word16 nb_subfr_fx, /* i : Number of subframe considered */
- Word16 *gain_buf, /*Q14*/
+ Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/
const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer */
)
{
- Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */
- Word16 gain_pit_fx; /* pitch gain Q14 */
- Word32 gain_code_fx; /* gain/normalized gain of the algebraic excitation Q16 */
+ Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */
+ Word16 gain_pit_fx; /* pitch gain Q14 */
+ Word32 gain_code_fx; /* gain/normalized gain of the algebraic excitation Q16 */
Word32 norm_gain_code_fx; /* normalized gain of the algebraic excitation Q16 */
- Word16 gain_inov_fx; /* Innovation gain Q12 */
+ Word16 gain_inov_fx; /* Innovation gain Q12 */
Word16 voice_fac_fx; /* voicing factor Q15 */
Word16 L_subfr_fx, pit_idx_fx;
- const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */
+ const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */
Word16 *pt_pitch_fx; /* pointer to Word16 pitch Q6 */
Word16 i_subfr_fx, i; /* tmp variables */
Word32 Local_BR_fx, Pitch_BR_fx;
@@ -575,13 +169,14 @@ void dec_pit_exc_ivas_fx(
p_Aq_fx = Aq_fx; /* pointer to interpolated LPC parameters */
pt_pitch_fx = pitch_buf_fx; /* pointer to the pitch buffer */
pt_gain = gain_buf; /* pointer to the gain buffer */
+
FOR( i_subfr_fx = 0; i_subfr_fx < st_fx->L_frame; i_subfr_fx += L_subfr_fx )
{
/*----------------------------------------------------------------------*
* Decode pitch lag
*----------------------------------------------------------------------*/
- *pt_pitch_fx = pit_decode_ivas_fx( st_fx, Pitch_BR_fx, 0, st_fx->L_frame, i_subfr_fx, Pitch_CT_fx, &pitch_limit_flag, &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_subfr_fx, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf );
+ *pt_pitch_fx = pit_decode_fx( st_fx, Pitch_BR_fx, 0, st_fx->L_frame, i_subfr_fx, Pitch_CT_fx, &pitch_limit_flag, &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_subfr_fx, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf );
move16();
/*--------------------------------------------------------------*
@@ -618,7 +213,7 @@ void dec_pit_exc_ivas_fx(
* Estimate spectrum tilt and voicing
*--------------------------------------------------------------*/
- gain_dec_lbr_ivas_fx( st_fx, GENERIC, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_subfr_fx );
+ gain_dec_lbr_fx( st_fx, GENERIC, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_subfr_fx );
st_fx->tilt_code_fx = est_tilt_ivas_fx( exc_fx + i_subfr_fx, gain_pit_fx, code_fx, gain_code_fx, &voice_fac_fx, 0, L_subfr_fx, 0 );
move16();
diff --git a/lib_dec/dec_post_fx.c b/lib_dec/dec_post_fx.c
index a4f618a3fd751dec1eeea852d8e26230a86f39c8..37d088a8f98d7049e8ed7d130e26f5e2deab8e22 100644
--- a/lib_dec/dec_post_fx.c
+++ b/lib_dec/dec_post_fx.c
@@ -35,8 +35,6 @@ static void modify_pst_param_fx( const Word16 lp_noise, Word16 *g1, Word16 *g2,
static void Dec_formant_postfilt_fx( PFSTAT_HANDLE hPFstat, Word16 *signal_ptr, Word16 *coeff, Word16 *sig_out, Word16 gamma1, Word16 gamma2 );
-static void Dec_formant_postfilt_ivas_fx( PFSTAT_HANDLE hPFstat, Word16 *signal_ptr, Word16 *coeff, Word16 *sig_out, Word16 gamma1, Word16 gamma2 );
-
static void calc_st_filt_ivas_fx( Word16 *apond2, Word16 *apond1, Word16 *parcor0, Word16 *sig_ltp_ptr, Word16 *mem_zero, const Word16 extl );
@@ -81,7 +79,7 @@ void Init_post_filter_fx(
*--------------------------------------------------------------------------*/
void nb_post_filt_fx(
const Word16 L_frame, /* i : frame length */
- PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
+ PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
Word16 *psf_lp_noise, /* i : Long term noise Q8 */
const Word16 tmp_noise, /* i : noise energy Q0 */
Word16 *Synth, /* i : 12k8 synthesis Qsyn */
@@ -255,21 +253,21 @@ static void Dec_postfilt_fx(
*
* Main routine to perform formant post filtering
*--------------------------------------------------------------------------*/
+
void formant_post_filt_fx(
- PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
+ PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
Word16 *synth_in, /* i : 12k8 synthesis */
- Word16 *Aq, /* i : LP filter coefficient Q12 */
+ Word16 *Aq, /* i : LP filter coefficient Q12 */
Word16 *synth_out, /* i/o: input signal */
- Word16 L_frame,
- Word32 lp_noise, /* (i) : background noise energy (15Q16) */
- Word32 brate, /* (i) : bit-rate */
- const Word16 off_flag /* i : off flag */
+ const Word16 L_frame, /* i : frame length */
+ const Word32 lp_noise, /* (i) : background noise energy (15Q16) */
+ const Word32 brate, /* (i) : bit-rate */
+ const Word16 off_flag /* i : off flag */
)
{
Word16 i_subfr;
Word16 *p_Aq;
- Word16 post_G1, post_G2; // Q15
-
+ Word16 post_G1, post_G2;
/*default parameter for noisy speech and high bit-rates*/
IF( EQ_16( L_frame, L_FRAME ) )
@@ -378,134 +376,13 @@ void formant_post_filt_fx(
Dec_formant_postfilt_fx( hPFstat, &synth_in[i_subfr], p_Aq, &synth_out[i_subfr], post_G1, post_G2 );
p_Aq += ( M + 1 );
}
-}
-
-void formant_post_filt_ivas_fx(
- PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
- Word16 *synth_in, /* i : 12k8 synthesis */
- Word16 *Aq, /* i : LP filter coefficient Q12 */
- Word16 *synth_out, /* i/o: input signal */
- Word16 L_frame,
- Word32 lp_noise, /* (i) : background noise energy (15Q16) */
- Word32 brate, /* (i) : bit-rate */
- const Word16 off_flag /* i : off flag */
-)
-{
- Word16 i_subfr;
- Word16 *p_Aq;
- Word16 post_G1, post_G2;
-
-
- /*default parameter for noisy speech and high bit-rates*/
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- post_G2 = 22938 /*0.7f Q15*/;
- move16();
- IF( LT_32( lp_noise, LP_NOISE_THRESH ) )
- {
- /*Clean speech*/
- IF( LT_32( brate, ACELP_13k20 ) )
- {
- /*Low rates*/
-
- post_G1 = 26214 /*0.8f Q15*/;
- move16();
- }
- ELSE IF( LT_32( brate, ACELP_24k40 ) )
- {
- /*Low rates*/
-
- post_G1 = 24576 /*0.75f Q15*/;
- move16();
- }
- ELSE
- {
- post_G1 = 23593 /*0.72f Q15*/;
- move16();
- }
- }
- ELSE /*Noisy speech*/
- {
- post_G1 = 22938 /*0.7f Q15*/;
- move16();
- if ( LT_32( brate, ACELP_15k85 ) )
- {
- /*Low rates*/
- post_G1 = 24576 /*0.75f Q15*/;
- move16();
- }
- }
- }
- ELSE
- {
- post_G2 = 24904 /*0.76f Q15*/;
- move16();
- test();
- IF( GE_32( lp_noise, LP_NOISE_THRESH ) )
- {
- post_G1 = 24904 /*0.76f Q15*/;
- }
- ELSE IF( EQ_32( brate, ACELP_13k20 ) )
- {
- post_G1 = 26870 /*0.82f Q15*/;
- move16();
- }
- ELSE IF( EQ_32( brate, ACELP_16k40 ) )
- {
- post_G1 = 26214 /*0.80f Q15*/;
- move16();
- }
- ELSE IF( EQ_32( brate, ACELP_24k40 ) || EQ_32( brate, ACELP_32k ) )
- {
- post_G1 = 25559 /*0.78f Q15*/;
- move16();
- }
- ELSE
- {
- post_G1 = 24904 /*0.76f Q15*/;
- move16();
- }
- }
-
- /* Switch off post-filter */
- if ( off_flag != 0 )
- {
- post_G1 = post_G2;
- move16();
- }
-
- /* Reset post filter */
- IF( hPFstat->reset != 0 )
- {
- post_G1 = MAX16B;
- move16();
- post_G2 = MAX16B;
- move16();
- hPFstat->reset = 0;
- move16();
- Copy( &synth_in[L_frame - L_SYN_MEM], hPFstat->mem_pf_in, L_SYN_MEM );
- Copy( &synth_in[L_frame - L_SYN_MEM], hPFstat->mem_stp, L_SYN_MEM );
- hPFstat->gain_prec = 16384; // 1.Q14
- move16();
- Copy( synth_in, synth_out, L_frame );
- return;
- }
+ return;
+}
- /* input memory*/
- Copy( hPFstat->mem_pf_in, synth_in - L_SYN_MEM, L_SYN_MEM );
- Copy( &synth_in[L_frame - L_SYN_MEM], hPFstat->mem_pf_in, L_SYN_MEM );
- move16();
- p_Aq = Aq; // Q12
- FOR( i_subfr = 0; i_subfr < L_frame; i_subfr += L_SUBFR )
- {
- Dec_formant_postfilt_ivas_fx( hPFstat, &synth_in[i_subfr], p_Aq, &synth_out[i_subfr], post_G1, post_G2 );
- p_Aq += ( M + 1 );
- }
-}
/*----------------------------------------------------------------------------
- * Dec_formant_postfilt_fx
+ * Dec_formant_postfilt_fx()
*
* Post - adaptive postfilter main function
* Short term postfilter :
@@ -519,92 +396,14 @@ void formant_post_filt_ivas_fx(
* k1 = 1st parcor calculated on {hi}
* gamma3 = gamma3_minus if k1<0, gamma3_plus if k1>0
*----------------------------------------------------------------------------*/
-static void Dec_formant_postfilt_fx(
- PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
- Word16 *signal_ptr, /* i : input signal (pointer to current subframe Q14*/
- Word16 *coeff, /* i : LPC coefficients for current subframe Q12 */
- Word16 *sig_out, /* o : postfiltered output */
- Word16 gamma1, /* i : short term postfilt. den. weighting factor Q15*/
- Word16 gamma2 /* i : short term postfilt. num. weighting factor Q15*/
-)
-{
- /* Local variables and arrays */
- Word16 apond1[M + 1]; /* s.t. denominator coeff. Q12*/
- Word16 apond2[LONG_H_ST]; // Q12
- Word16 res2[L_SUBFR]; // Q14
- Word16 resynth[L_SUBFR + 1]; // Qy
- Word16 parcor0; // Q15
- Word16 i, max;
- Word16 scale_down;
-
- /* Compute weighted LPC coefficients */
- weight_a_fx( coeff, apond1, gamma1, M );
- weight_a_fx( coeff, apond2, gamma2, M );
- set16_fx( &apond2[M + 1], 0, LONG_H_ST - ( M + 1 ) );
-
- max = abs_s( signal_ptr[0] ); // Q14
- FOR( i = 1; i < L_SUBFR; i++ )
- {
- max = s_max( max, abs_s( signal_ptr[i] ) );
- }
- scale_down = 0;
- move16();
- if ( GT_16( max, 16384 /*1.Q14*/ ) )
- {
- scale_down = 1;
- move16();
- }
-
- /* Compute A(gamma2) residual */
- IF( !scale_down )
- {
- Residu3_fx( apond2, signal_ptr, res2, L_SUBFR, 1 );
- }
- ELSE
- {
- Residu3_fx( apond2, signal_ptr, res2, L_SUBFR, 0 );
- Scale_sig( hPFstat->mem_stp, L_SYN_MEM, -1 );
- }
-
- /* Controls short term pst filter gain and compute parcor0 */
- calc_st_filt_local_fx( apond2, apond1, &parcor0, res2, hPFstat->mem_zero );
-
- /* 1/A(gamma1) filtering, mem_stp is updated */
- resynth[0] = *( hPFstat->mem_stp + sub( L_SYN_MEM, 1 ) );
- move16();
-
- E_UTIL_synthesis( 1, apond1, res2, &( resynth[1] ), L_SUBFR, hPFstat->mem_stp + L_SYN_MEM - M, 0, M );
-
- IF( !scale_down )
- {
- Copy( &( resynth[1] ) + L_SUBFR - L_SYN_MEM, hPFstat->mem_stp, L_SYN_MEM );
- }
- ELSE
- {
- Copy_Scale_sig( &( resynth[1] ) + L_SUBFR - L_SYN_MEM, hPFstat->mem_stp, L_SYN_MEM, 1 );
- }
-
- /* Tilt filtering */
- Filt_mu_fx( resynth, sig_out, parcor0, L_SUBFR );
- IF( scale_down )
- {
- Scale_sig( sig_out, L_SUBFR, 1 );
- }
-
- /* Gain control */
- scale_st_fx( signal_ptr, sig_out, &hPFstat->gain_prec, L_SUBFR );
-
-
- return;
-}
-static void Dec_formant_postfilt_ivas_fx(
- PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
- Word16 *signal_ptr, /* i : input signal (pointer to current subframe Q14*/
- Word16 *coeff, /* i : LPC coefficients for current subframe Q12 */
- Word16 *sig_out, /* o : postfiltered output */
- Word16 gamma1, /* i : short term postfilt. den. weighting factor Q15*/
- Word16 gamma2 /* i : short term postfilt. num. weighting factor Q15*/
+static void Dec_formant_postfilt_fx(
+ PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */
+ Word16 *signal_ptr, /* i : input signal (pointer to current subframe Q14*/
+ Word16 *coeff, /* i : LPC coefficients for current subframe Q12 */
+ Word16 *sig_out, /* o : postfiltered output */
+ Word16 gamma1, /* i : short term postfilt. den. weighting factor Q15*/
+ Word16 gamma2 /* i : short term postfilt. num. weighting factor Q15*/
)
{
/* Local variables and arrays */
diff --git a/lib_dec/dec_ppp_fx.c b/lib_dec/dec_ppp_fx.c
index 4849e147a04c9f10f351aa1c9ae5d89750637be4..4b3f4f554ec8100ae08fb5f6f7bac0383f398224 100644
--- a/lib_dec/dec_ppp_fx.c
+++ b/lib_dec/dec_ppp_fx.c
@@ -6,6 +6,7 @@
#include
#include "options.h" /* Compilation switches */
#include "prot_fx.h" /* Function prototypes */
+
/*===================================================================*/
/* FUNCTION : void decod_ppp_fx () */
/*-------------------------------------------------------------------*/
@@ -45,20 +46,20 @@
/*-------------------------------------------------------------------*/
/* CALLED FROM : RX */
/*===================================================================*/
+
ivas_error decod_ppp_fx(
- Decoder_State *st_fx, /* i/o: state structure */
- const Word16 Aq_fx[], /* i : 12k8 Lp coefficient */
- Word16 *pitch_buf_fx, /* i/o: fixed pitch values for each subframe */
- Word16 *exc_fx, /* i/o: current non-enhanced excitation */
- Word16 *exc2_fx, /* i/o: current enhanced excitation */
- Word16 bfi, /* i : bad frame indicator */
- Word16 *gain_buf,
+ Decoder_State *st_fx, /* i/o: state structure */
+ const Word16 Aq_fx[], /* i : 12k8 Lp coefficient */
+ Word16 *pitch_buf_fx, /* i/o: fixed pitch values for each subframe */
+ Word16 *exc_fx, /* i/o: current non-enhanced excitation */
+ Word16 *exc2_fx, /* i/o: current enhanced excitation */
+ Word16 bfi, /* i : bad frame indicator */
+ Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/
Word16 *voice_factors, /* o : voicing factors */
Word16 *bwe_exc_fx /* o : excitation for SWB TBE */
)
{
Word16 k;
-
Word16 LPC_de_curr_fx[M + 1], p_Aq_curr_fx[M], p_Aq_old_fx[M + 1];
Word16 excQ_ppp_fx[L_FRAME], pitch_fx[NB_SUBFR], LPC_de_old_fx[M + 1];
ivas_error error;
diff --git a/lib_dec/dec_prm_fx.c b/lib_dec/dec_prm_fx.c
index 3d277807d2fed95764ba8e3c4992662fd26eac4b..16e588396b547fb2f56c6e88a6f44d616bbed3bc 100644
--- a/lib_dec/dec_prm_fx.c
+++ b/lib_dec/dec_prm_fx.c
@@ -1003,12 +1003,7 @@ void dec_prm_fx(
{
IF( st->lpcQuantization == 0 )
{
- decode_lpc_avq_fx( st, st->numlpc, param_lpc
-#ifdef IVAS_CODE_AVQ_LPC
- ,
- , ,
-#endif
- );
+ decode_lpc_avq_fx( st, st->numlpc, param_lpc );
move16();
}
ELSE IF( EQ_16( st->lpcQuantization, 1 ) )
diff --git a/lib_dec/dec_tcx_fx.c b/lib_dec/dec_tcx_fx.c
index af80ee1f54e8672c19b05e6c29432d91639ccd3f..883024002ea4c2191cd20d7a5ac09c021b9e6c2f 100644
--- a/lib_dec/dec_tcx_fx.c
+++ b/lib_dec/dec_tcx_fx.c
@@ -893,9 +893,6 @@ void decoder_tcx_fx(
TonalMDCTConceal_InsertNoise( st->hTonalMDCTConc, x, &x_e, st->tonal_mdct_plc_active, &st->seed_tcx_plc,
noiseTiltFactor, f,
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- concealment_noise,
-#endif
infoIGFStartLine );
}
}
diff --git a/lib_dec/dec_tran_fx.c b/lib_dec/dec_tran_fx.c
index e886fd33770a60b034c992b92348e9fdc33bb9e6..de3a1ff3fb8f8521004f0d0cb1d3dd1260e57e19 100644
--- a/lib_dec/dec_tran_fx.c
+++ b/lib_dec/dec_tran_fx.c
@@ -253,9 +253,11 @@ void decod_tran_fx(
{
tmp_idx_2 = idiv1616( i_subfr, L_SUBFR );
}
- prep_tbe_exc_fx( L_frame_fx, i_subfr, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
+
+ prep_tbe_exc_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
&voice_factors_fx[tmp_idx_2], bwe_exc_fx, gain_preQ_fx, code_preQ_fx,
- st_fx->Q_exc, T0, T0_frac, st_fx->coder_type, st_fx->core_brate );
+ st_fx->Q_exc, T0, T0_frac, st_fx->coder_type, st_fx->core_brate,
+ st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
/*----------------------------------------------------------------*
* Excitation enhancements (update of total excitation signal)
diff --git a/lib_dec/dec_uv_fx.c b/lib_dec/dec_uv_fx.c
index bbec94d94f903d1116d84751f4a0c9e43223c012..f1ba21979228b1e0634efef8bf139c511869fc4f 100644
--- a/lib_dec/dec_uv_fx.c
+++ b/lib_dec/dec_uv_fx.c
@@ -26,90 +26,6 @@ static void gain_dec_gacelp_uv_fx(
*-------------------------------------------------------------------*/
void decod_unvoiced_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 coder_type, /* Q0 i : coding type */
- Word16 *tmp_noise_fx, /* Q0 o : long term temporary noise energy */
- Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe*/
- Word16 *voice_factors_fx, /* Q15 o : voicing factors */
- Word16 *exc_fx, /* Q_X o : adapt. excitation exc */
- Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */
- Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */
- Word16 *gain_buf )
-{
- Word16 gain_pit_fx; /* Quantized pitch gain */
- Word32 gain_code_fx; /* Quantized algebraic codeebook gain */
- Word16 gain_inov_fx; /* inovation gain */
- Word32 norm_gain_code_fx; /* normalized algebraic codeebook gain */
- Word16 voice_fac_fx; /* Voicing factor */
- Word16 code_fx[L_SUBFR]; /* algebraic codevector */
- Word16 i_subfr_fx;
- Word16 *pt_pitch_fx;
-
- gain_pit_fx = 0;
- move16();
-
- test();
- IF( EQ_16( st_fx->last_ppp_mode_dec, 1 ) || EQ_16( st_fx->last_nelp_mode_dec, 1 ) )
- {
- /* SC_VBR - reset the decoder, to avoid memory not updated issue for this unrealistic case */
- CNG_reset_dec_fx( st_fx, pitch_buf_fx, voice_factors_fx );
- }
-
- move16(); /*Q12*/ /* pointer to interpolated LPC parameters */
- pt_pitch_fx = pitch_buf_fx;
- move16(); /* pointer to the pitch buffer */
-
- FOR( i_subfr_fx = 0; i_subfr_fx < L_FRAME; i_subfr_fx += L_SUBFR )
- {
- /*----------------------------------------------------------------*
- * Unvoiced subframe processing
- *----------------------------------------------------------------*/
-
- gaus_dec_fx( st_fx, i_subfr_fx, code_fx, &norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, &gain_inov_fx, &st_fx->tilt_code_fx,
- &voice_fac_fx, &gain_pit_fx, pt_pitch_fx, exc_fx, &gain_code_fx, exc2_fx, bwe_exc_fx, &( st_fx->Q_exc ), st_fx->Q_subfr );
-
- *tmp_noise_fx = extract_h( norm_gain_code_fx ); /*Q16*/
- move16();
-
- /*----------------------------------------------------------------*
- * Excitation enhancements (update of total excitation signal)
- *----------------------------------------------------------------*/
-
- enhancer_fx( st_fx->core_brate, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx,
- norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc );
-
- Word16 tmp_idx = 0;
- move16();
- IF( i_subfr_fx != 0 )
- {
- tmp_idx = idiv1616( i_subfr_fx, L_SUBFR );
- }
- voice_factors_fx[tmp_idx] = 0;
- move16();
-
- interp_code_5over2_fx( &exc_fx[i_subfr_fx], &bwe_exc_fx[( ( i_subfr_fx * 2 * HIBND_ACB_L_FAC ) >> 1 )], L_SUBFR );
-
- pt_pitch_fx++;
- st_fx->tilt_code_dec_fx[tmp_idx] = st_fx->tilt_code_fx;
- move16();
- }
-
- /* SC-VBR */
- st_fx->prev_gain_pit_dec_fx = gain_pit_fx;
- move16();
-
- set16_fx( gain_buf, 0, NB_SUBFR );
-
- return;
-}
-
-/*-------------------------------------------------------------------*
- * decod_unvoiced()
- *
- * Decode unvoiced (UC) frames
- *-------------------------------------------------------------------*/
-
-void decod_unvoiced_ivas_fx(
Decoder_State *st_fx, /* i/o: decoder static memory */
const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */
const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
@@ -203,7 +119,14 @@ void decod_unvoiced_ivas_fx(
move16();
/* update LP filtered gains for the case of frame erasures */
- lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_FRAME );
+ IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
+ {
+ lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_FRAME );
+ }
+ ELSE
+ {
+ lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_FRAME );
+ }
/*-------------------------------------------------------*
* - Find the total excitation. *
@@ -236,6 +159,7 @@ void decod_unvoiced_ivas_fx(
}
// Scale_sig(code_fx, L_SUBFR, 3); //Q12
}
+
*tmp_noise_fx = extract_h( norm_gain_code_fx ); /*Q16*/
move16();
@@ -243,10 +167,16 @@ void decod_unvoiced_ivas_fx(
* Excitation enhancements (update of total excitation signal)
*----------------------------------------------------------------*/
- /*enhancer_fx(st_fx->core_brate, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx,
- norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &(st_fx->dm_fx), st_fx->Q_exc);*/
- enhancer_ivas_fx( MODE1, st_fx->core_brate, uc_two_stage_flag, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx,
- norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx /*Q9/Q12?*/, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc );
+ IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
+ {
+ enhancer_fx( st_fx->core_brate, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx,
+ norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc );
+ }
+ ELSE
+ {
+ enhancer_ivas_fx( MODE1, st_fx->core_brate, uc_two_stage_flag, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx,
+ norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx /*Q9/Q12?*/, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc );
+ }
Word16 tmp_idx;
tmp_idx = 0;
@@ -257,6 +187,7 @@ void decod_unvoiced_ivas_fx(
}
voice_factors_fx[tmp_idx] = 0;
move16();
+
interp_code_5over2_fx( &exc_fx[i_subfr_fx], &bwe_exc_fx[( ( i_subfr_fx * 2 * HIBND_ACB_L_FAC ) >> 1 )], L_SUBFR );
p_Aq_fx += ( M + 1 );
diff --git a/lib_dec/dlpc_avq_fx.c b/lib_dec/dlpc_avq_fx.c
index 3d9a00b7f1bbbb7be3c76f639125fe0913d033f3..07f1ea6f21206fa6b7d77d2886afc525462e6f85 100644
--- a/lib_dec/dlpc_avq_fx.c
+++ b/lib_dec/dlpc_avq_fx.c
@@ -149,20 +149,11 @@ Word16 decode_lpc_avq_fx(
Decoder_State *st, /* i/o: decoder state structure */
const Word16 numlpc, /* i : Number of sets of lpc */
Word16 *param_lpc /* o : lpc parameters */
-#ifdef IVAS_CODE_AVQ_LPC
- ,
- const Word16 ch, /* i : channel */
- const Word16 element_mode, /* i : element mode */
- const Word16 sns_low_br_mode /* i : SNS low-bitrate mode */
-#endif
)
{
Word16 k, j;
Word16 nb, qn1, qn2, avqBits, q_type;
Word16 start_bit_pos;
-#ifdef IVAS_CODE_AVQ_LPC
- Word16 stereo_mode = 0;
-#endif
move16();
move16();
move16();
@@ -189,41 +180,11 @@ Word16 decode_lpc_avq_fx(
param_lpc[j] = q_type;
j = add( j, 1 );
}
-#ifdef IVAS_CODE_AVQ_LPC
- test();
- IF( EQ_16( element_mode, IVAS_CPE_MDCT ) && k == 0 )
- {
- stereo_mode = ch;
- move16();
- if ( ch == 0 )
- {
- stereo_mode = param_lpc[j];
- move16();
- }
- param_lpc[j++] = stereo_mode;
- move16();
- }
-#endif
/* Decode quantization indices */
IF( q_type == 0 )
{
/* Absolute quantizer with 1st stage stochastic codebook */
-#ifdef IVAS_CODE_AVQ_LPC
- IF( EQ_16( element_mode, IVAS_CPE_MDCT ) )
- {
- IF( NE_16( stereo_mode, 3 ) )
- {
- param_lpc[j] = get_next_indice_fx( st, SNS_ABS_QUANT_BITS );
- }
- ELSE
- {
- param_lpc[j] = sub( get_next_indice_fx( st, 1 ), 2 );
- }
- move16();
- }
- ELSE
-#endif
{
move16();
param_lpc[j] = get_next_indice_fx( st, 8 );
@@ -235,9 +196,6 @@ Word16 decode_lpc_avq_fx(
* - we are in low bitrate mode and no joint SNS coding is used
* - OR the side-SNS-is-zero flag is set for joint SNS
*/
-#ifdef IVAS_CODE_AVQ_LPC
- IF( NE_16( element_mode, IVAS_CPE_MDCT ) || ( !( sns_low_br_mode && ( EQ_16( stereo_mode, 0 ) || EQ_16( stereo_mode, 1 ) ) && !( EQ_16( q_type, 0 ) && EQ_16( param_lpc[j - 1], -2 ) ) ) ) )
-#endif
{
/* 2 bits to specify Q2,Q3,Q4,ext */
qn1 = add( 2, get_next_indice_fx( st, 2 ) );
@@ -321,21 +279,11 @@ Word16 decode_lpc_avq_fx(
pack4bits_fx( avqBits, st, ¶m_lpc[j] );
j = add( j, qn2 );
}
-#ifdef IVAS_CODE_AVQ_LPC
- ELSE
- {
- param_lpc[j] = 0;
- j = add( j, 1 );
- param_lpc[j] = 0;
- j = add( j, 1 );
- move16();
- move16();
- }
-#endif
}
return sub( st->next_bit_pos, start_bit_pos );
}
+
Word16 decode_lpc_avq_ivas_fx(
Decoder_State *st, /* i/o: decoder state structure */
const Word16 numlpc, /* i : Number of sets of lpc */
diff --git a/lib_dec/er_dec_tcx_fx.c b/lib_dec/er_dec_tcx_fx.c
index e804d200927334135725f05bc7294f3e4da06dce..3d0eab8153845c06cda2e6562038b4da91a1b2c2 100644
--- a/lib_dec/er_dec_tcx_fx.c
+++ b/lib_dec/er_dec_tcx_fx.c
@@ -121,17 +121,6 @@ con_tcx
void con_tcx_fx(
Decoder_State *st, /* i/o: coder memory state */
Word16 synth[] /* i/o: synth[] Q0*/
-#ifdef IVAS_CODE_CON_TCX
- ,
- const Word16 coh, /* i : coherence of stereo signal Q14*/
- Word16 *noise_seed, /* i/o: noise seed for stereo Q0*/
- const Word16 only_left /* i : TD-PLC only in left channel Q0*/
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- ,
- const float *A_cng /* i : CNG LP filter coefficients Q14*/
-#endif
-#endif
-
)
{
Word16 i, s, c, L_frame, L_subfr, fLowPassFilter, T0;
@@ -489,19 +478,7 @@ void con_tcx_fx(
move16();
/* PLC: calculate damping factor */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- alpha = 1.0f;
- if ( st->element_mode == IVAS_CPE_MDCT && st->nbLostCmpt >= MDCT_ST_PLC_FADEOUT_START_FRAME )
- {
- alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_START_FRAME, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 );
- }
- else if ( st->element_mode != IVAS_CPE_MDCT )
- {
- alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 );
- }
-#else
alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/
-#endif
IF( EQ_16( st->nbLostCmpt, 1 ) )
{
st->cummulative_damping = 32767 /*1.f Q15*/;
@@ -566,63 +543,15 @@ void con_tcx_fx(
{
calcGainc2_fx( &exc[0], Q_exc, L_subfr, &( st->Mode2_lp_gainc ) );
}
- set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/
- /* PLC: calculate damping factor */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- alpha = 1.0f;
- if ( st->element_mode == IVAS_CPE_MDCT && st->nbLostCmpt >= MDCT_ST_PLC_FADEOUT_START_FRAME )
- {
- alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_START_FRAME, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 );
- }
- else if ( st->element_mode != IVAS_CPE_MDCT )
- {
- alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 );
- }
-#else
+ set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/
+ /* PLC: calculate damping factor */
alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/
-#endif
}
/*-----------------------------------------------------------------*
* Construct the random part of excitation
*-----------------------------------------------------------------*/
-#ifdef IVAS_CODE_CON_TCX
- if ( coh != -1.f )
- {
- int16_t tmpSeed1;
- float alpha_coh;
- float random1, random2;
- tmpSeed1 = *noise_seed;
- noise = buf;
-
- alpha_coh = sqrtf( ( 1 - coh ) / ( 1 + coh ) );
- if ( st->idchan == 1 )
- {
- alpha_coh = -alpha_coh;
- }
-
- for ( i = 0; i < L_frame + L_FIR_FER2 - 1; i++ )
- {
- random1 = (float) own_random( &tmpSeed1 );
- random2 = (float) own_random( &tmpSeed1 );
- noise[i] = random1 + alpha_coh * random2;
- }
-
- if ( st->idchan == 1 || only_left )
- {
- *noise_seed = tmpSeed1;
- }
-
- for ( ; i < L_frame + ( L_frame / 2 ) + 2 * L_FIR_FER2; i++ )
- {
- random1 = (float) own_random( &tmpSeed1 );
- random2 = (float) own_random( &tmpSeed1 );
- noise[i] = random1 + alpha_coh * random2;
- }
- }
- else
-#endif /*IVAS_CODE_CON_TCX*/
{
tmpSeed = st->seed_acelp;
move16();
@@ -707,20 +636,9 @@ void con_tcx_fx(
}
/* PLC: [TCX: Fade-out] retrieve background level */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- if ( A_cng != NULL )
- {
- gainSynthDeemph = getLevelSynDeemph_fx( &( tmp ), A_cng, L_frame / 4, st->preemph_fac, 1 ) / 4.f;
- }
- else
- {
- gainSynthDeemph = getLevelSynDeemph_fx( &( tmp ), A_local, L_frame / 4, st->preemph_fac, 1 );
- }
-#else
tmp16 = 32767;
move16();
- gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e ); /*Q5*/
-#endif
+ gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e ); /*Q5*/
IF( st->tcxonly != 0 )
{
/* gainCNG = st->conCngLevelBackgroundTrace/gainSynthDeemph; */
@@ -728,19 +646,6 @@ void con_tcx_fx(
hTcxDec->conCngLevelBackgroundTrace_e,
gainSynthDeemph, gainSynthDeemph_e,
&gainCNG, &gainCNG_e );
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- if ( st->element_mode == IVAS_CPE_MDCT && A_cng != NULL )
- {
- if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME + MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN )
- {
- gainCNG = 0.f;
- }
- else if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME )
- {
- gainCNG *= 1.f - (float) ( st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME ) / MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN;
- }
- }
-#endif
}
ELSE
{
@@ -907,34 +812,6 @@ void con_tcx_fx(
/*buf[OLD_EXC_SIZE_DEC;3/2 L_frame] Q1: exc*/
/*buf[0;M] Q0: mem_syn*/
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- if ( A_cng != NULL )
- {
- float alpha_delayed;
-
- alpha_delayed = 1.0f;
- if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_DELAY_4_LSP_FADE )
- {
- alpha_delayed = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_DELAY_4_LSP_FADE, st->last_good, st->stab_fac, &( st->lp_gainp ), ACELP_CORE );
- }
-
- if ( st->plcBackgroundNoiseUpdated && alpha_delayed != 1.0f )
- {
- float lsp_local[M], lsp_fade[M], alpha_inv;
-
- alpha_inv = 1.0f - alpha_delayed;
-
- a2lsp_stab( A_local, lsp_local, lsp_local );
-
- for ( i = 0; i < M; i++ )
- {
- lsp_fade[i] = alpha_delayed * lsp_local[i] + alpha_inv * st->lspold_cng[i];
- }
-
- lsp2a_stab( lsp_fade, A_local, M );
- }
- }
-#endif
E_UTIL_synthesis(
sub( Q_exc, Q_syn ),
A_local,
@@ -1434,19 +1311,7 @@ void con_tcx_ivas_fx(
move16();
/* PLC: calculate damping factor */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- alpha = 1.0f;
- if ( st->element_mode == IVAS_CPE_MDCT && st->nbLostCmpt >= MDCT_ST_PLC_FADEOUT_START_FRAME )
- {
- alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_START_FRAME, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 );
- }
- else if ( st->element_mode != IVAS_CPE_MDCT )
- {
- alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 );
- }
-#else
alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/
-#endif
IF( EQ_16( st->nbLostCmpt, 1 ) )
{
st->cummulative_damping = 32767 /*1.f Q15*/;
@@ -1511,27 +1376,15 @@ void con_tcx_ivas_fx(
{
calcGainc2_fx( &exc[0], Q_exc, L_subfr, &( st->Mode2_lp_gainc ) );
}
- set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/
- /* PLC: calculate damping factor */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- alpha = 1.0f;
- if ( st->element_mode == IVAS_CPE_MDCT && st->nbLostCmpt >= MDCT_ST_PLC_FADEOUT_START_FRAME )
- {
- alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_START_FRAME, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 );
- }
- else if ( st->element_mode != IVAS_CPE_MDCT )
- {
- alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 );
- }
-#else
+ set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/
+ /* PLC: calculate damping factor */
alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/
-#endif
}
/*-----------------------------------------------------------------*
* Construct the random part of excitation
*-----------------------------------------------------------------*/
-#ifndef IVAS_CODE_CON_TCX
+
IF( NE_16( coh, -16384 ) )
{
Word16 tmpSeed1;
@@ -1581,7 +1434,6 @@ void con_tcx_ivas_fx(
}
}
ELSE
-#endif /*IVAS_CODE_CON_TCX*/
{
tmpSeed = st->seed_acelp; /*Q0*/
move16();
@@ -1666,7 +1518,6 @@ void con_tcx_ivas_fx(
}
/* PLC: [TCX: Fade-out] retrieve background level */
-#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
tmp16 = 32767;
move16();
IF( A_cng != NULL )
@@ -1677,11 +1528,6 @@ void con_tcx_ivas_fx(
{
gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e ); /*Q13*/
}
-#else
- tmp16 = 32767;
- move16();
- gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e );
-#endif
IF( st->tcxonly != 0 )
{
/* gainCNG = st->conCngLevelBackgroundTrace/gainSynthDeemph; */
@@ -1689,7 +1535,6 @@ void con_tcx_ivas_fx(
hTcxDec->conCngLevelBackgroundTrace_e,
gainSynthDeemph, gainSynthDeemph_e,
&gainCNG, &gainCNG_e );
-#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
test();
IF( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && A_cng != NULL )
{
@@ -1705,7 +1550,6 @@ void con_tcx_ivas_fx(
gainCNG = extract_l( Mpy_32_32( gainCNG, L_tmp ) ); /*Q15-gainCNG_e*/
}
}
-#endif
}
ELSE
{
@@ -1882,7 +1726,6 @@ void con_tcx_ivas_fx(
/*buf[OLD_EXC_SIZE_DEC;3/2 L_frame] Q1: exc*/
/*buf[0;M] Q0: mem_syn*/
-#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
IF( A_cng != NULL )
{
Word16 alpha_delayed;
@@ -1914,7 +1757,6 @@ void con_tcx_ivas_fx(
E_LPC_f_lsp_a_conversion( lsp_fade, A_local, M );
}
}
-#endif
E_UTIL_synthesis(
sub( Q_exc, Q_syn ),
diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c
index 9735129ec14bc56a1aed50c894ac3cf27a087b6a..cecbad2943bb83dc1528388e365cec92fa40c75e 100644
--- a/lib_dec/er_util_fx.c
+++ b/lib_dec/er_util_fx.c
@@ -579,12 +579,7 @@ Word16 GetPLCModeDecision_fx(
pitch = L_add( st->old_fpitch, 0 ); /*Q16*/
}
- TonalMDCTConceal_Detect( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- ( st->element_mode == IVAS_CPE_MDCT ? &( st->hTcxCfg->psychParamsTCX20 ) : st->hTcxCfg->psychParamsCurrent )
-#endif
- );
+ TonalMDCTConceal_Detect( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode );
test();
test();
diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c
index 74340b530f6fe9cc1c2733664b854cc317f057cf..9c81fddf347529f42c78a49bbaae321ffc589306 100644
--- a/lib_dec/evs_dec_fx.c
+++ b/lib_dec/evs_dec_fx.c
@@ -953,11 +953,9 @@ ivas_error evs_dec_fx(
}
st_fx->lp_noise = hFdCngDec->lp_noise; /*Q9.23*/
move32();
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- ApplyFdCng_fx( output, NULL, realBuffer, imagBuffer, st, concealWholeFrame, 0 );
-#else
- ApplyFdCng_fx( output_sp, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 );
-#endif
+
+ ApplyFdCng_fx( output_sp, 0, NULL, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 );
+
/* Generate additional comfort noise to mask potential coding artefacts */
test();
IF( EQ_16( st_fx->m_frame_type, ACTIVE_FRAME ) && st_fx->flag_cna )
@@ -1147,7 +1145,7 @@ ivas_error evs_dec_fx(
FOR( i = 0; i < tmps; i++ )
{
- output_sp[i + delay_comp] = msu_r_sat( L_mult_sat( output_sp[i + delay_comp], alpha ), shr( hHQ_core->old_out_fx[i + nz], timeIn_e ), add( alpha, -32768 ) ); /*timeIn_e*/
+ output_sp[i + delay_comp] = msu_r_sat( L_mult_sat( output_sp[i + delay_comp], alpha ), shr_sat( hHQ_core->old_out_fx[i + nz], timeIn_e ), add( alpha, -32768 ) ); /*timeIn_e*/
move16();
alpha = add( alpha, step );
}
diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c
index 4c42a795997fa4bcc4b1372ce91ec35361e16bb3..5c454591855e4f582172fc76de2c07dbac209905 100644
--- a/lib_dec/fd_cng_dec_fx.c
+++ b/lib_dec/fd_cng_dec_fx.c
@@ -554,571 +554,8 @@ void deleteFdCngDec_fx( HANDLE_FD_CNG_DEC *hFdCngDec )
Returns:
error
*/
-Word16 ApplyFdCng_fx(
- Word16 *timeDomainInput, /* i : pointer to time domain input Q*/
- Word16 Q,
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- Word16 *powerSpectrum,
-#endif
- Word32 **cldfbBufferReal, /* i/o: real part of the CLDFB buffer cldfbBufferScale*/
- Word32 **cldfbBufferImag, /* i/o: imaginary part of the CLDFB buffer cldfbBufferScale*/
- Word16 *cldfbBufferScale, /* o : pointer to the scalefactor for real and imaginary part of the CLDFB buffer */
- Decoder_State *st,
- const Word16 concealWholeFrame, /* i : binary flag indicating frame loss Q0*/
- Word16 is_music /*Q0*/ )
-{
- Word16 j, k, nBins;
- Word16 s, s1, s2, num, denom;
- Word32 *cngNoiseLevel;
- Word16 *cngNoiseLevel_exp;
- Word32 L_tmp;
- Word16 L_tmp_exp;
- Word16 facTab[NPART];
- Word16 facTabExp[NPART];
- Word16 tmp_loop;
- Word32 L_c;
- Word16 lsp_cng[M];
- HANDLE_FD_CNG_DEC hFdCngDec;
- HANDLE_FD_CNG_COM hFdCngCom;
-#ifdef BASOP_NOGLOB_DECLARE_LOCAL
- Flag Overflow = 0;
- Flag Carry = 0;
- move16();
- move16();
-#endif
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- int16_t L_frame, last_L_frame;
- int32_t sr_core;
-
- PMT( "Fix point code missing for IVAS_CODE_CNG_FIX185_PLC_FADEOUT" )
- /* limit L_frame and core fs values for MDCT-Stereo modes which can have higher core sampling than 16kHz, but use a downsampled buffer */
- L_frame = min( st->L_frame, L_FRAME16k );
- last_L_frame = min( st->last_L_frame, L_FRAME16k );
- sr_core = min( st->sr_core, INT_FS_16k );
-#endif
-
- hFdCngDec = st->hFdCngDec;
- hFdCngCom = hFdCngDec->hFdCngCom;
-
-
- if ( EQ_16( hFdCngCom->frame_type_previous, ACTIVE_FRAME ) )
- {
- hFdCngCom->inactive_frame_counter = 0;
- move16();
- }
- IF( EQ_16( st->element_mode, IVAS_CPE_TD ) )
- {
- hFdCngDec->flag_dtx_mode = hFdCngDec->flag_dtx_mode || st->first_CNG;
- test();
- move16();
- }
- cngNoiseLevel = hFdCngCom->cngNoiseLevel; /*Q31 - hFdCngCom->cngNoiseLevelExp*/
- move32();
- cngNoiseLevel_exp = &hFdCngCom->cngNoiseLevelExp;
- move16();
- nBins = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand );
-
- SWITCH( st->m_frame_type )
- {
- case ACTIVE_FRAME:
-
- /**************************
- * ACTIVE_FRAME at DECODER *
- **************************/
-
- hFdCngCom->inactive_frame_counter = 0;
- move16();
- hFdCngCom->sid_frame_counter = 0;
- move16();
-
- /* set noise estimation inactive during concealment, as no update with noise generated by concealment should be performed. */
- /* set noise estimation inactive during concealment, no update with noise generated by concealment should be performed. */
-
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- if ( concealWholeFrame == 0 &&
- ( timeDomainInput == NULL ||
- ( *timeDomainInput( -FLT_MAX ) &&
- *( timeDomainInput + hFdCngCom->frameSize - 1 ) < FLT_MAX &&
- *( timeDomainInput + hFdCngCom->frameSize - 1 ) > ( -FLT_MAX ) ) ) &&
- ( ( ( ( st->element_mode != IVAS_CPE_TD && st->element_mode != IVAS_CPE_DFT && hFdCngDec->flag_dtx_mode ) || !st->VAD ) &&
- !( st->cng_type == LP_CNG && hFdCngDec->flag_dtx_mode ) && ( is_music == 0 ) ) ||
- ( st->element_mode == IVAS_CPE_TD ) ) &&
- ( !st->BER_detect ) )
-#else
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF(
- ( concealWholeFrame == 0 ) &&
- ( LT_16( *timeDomainInput, MAXVAL_WORD16 ) ) && GT_16( *timeDomainInput, MINVAL_WORD16 ) && ( LT_16( *( timeDomainInput + sub( hFdCngCom->frameSize, 1 ) ), MAXVAL_WORD16 ) ) && GT_16( *( timeDomainInput + sub( hFdCngCom->frameSize, 1 ) ), MINVAL_WORD16 ) && ( ( ( hFdCngDec->flag_dtx_mode == 0 ) && ( st->VAD != 0 ) ) == 0 ) && ( ( ( st->cng_type == LP_CNG ) && ( hFdCngDec->flag_dtx_mode != 0 ) ) == 0 ) && ( is_music == 0 ) && ( st->BER_detect == 0 ) )
-#endif
- {
- /* Perform noise estimation at the decoder */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
-#else
- perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec );
-#endif
-
- /* Update the shaping parameters */
- test();
- IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) )
- {
- scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 );
- }
- hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp;
- move16();
-
-
- /* Update CNG levels */
- test();
- IF( hFdCngDec->flag_dtx_mode != 0 && EQ_16( st->cng_type, FD_CNG ) )
- {
- /* This needs to be done only once per inactive phase */
- bandcombinepow(
- hFdCngDec->bandNoiseShape,
- hFdCngDec->bandNoiseShape_exp,
- nBins,
- hFdCngCom->part,
- hFdCngCom->nFFTpart,
- hFdCngCom->psize_inv,
- hFdCngDec->partNoiseShape,
- &hFdCngDec->partNoiseShape_exp );
-
-
- j = 0;
- move16();
- s2 = -( WORD32_BITS - 1 );
- move16();
- FOR( k = 0; k < hFdCngCom->nFFTpart; k++ )
- {
- assert( hFdCngDec->partNoiseShape[k] >= 0 );
- assert( hFdCngCom->sidNoiseEst[k] >= 0 );
-
- /* add DELTA as it is done in FLC version, in order to avoid num > denom */
- facTab[k] = 0;
- move16();
- IF( hFdCngDec->partNoiseShape[k] != 0 )
- {
- s1 = norm_l( hFdCngCom->sidNoiseEst[k] );
- L_tmp = L_shl( hFdCngCom->sidNoiseEst[k], s1 ); /*Q31 - hFdCngCom->sidNoiseEstExp + s1*/
- L_tmp_exp = sub( hFdCngCom->sidNoiseEstExp, s1 );
- L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, L_tmp_exp, DELTA_MANTISSA_W32, DELTA_EXPONENT, &L_tmp_exp );
- L_tmp = L_shr( L_tmp, 1 );
- s = add( L_tmp_exp, 1 );
- num = extract_h( L_tmp ); /*Q15 - L_tmp_exp*/
-
- s1 = norm_l( hFdCngDec->partNoiseShape[k] );
- L_tmp = L_shl( hFdCngDec->partNoiseShape[k], s1 ); /*Q31 - hFdCngDec->partNoiseShape_exp + s1*/
- L_tmp_exp = sub( hFdCngDec->partNoiseShape_exp, s1 );
- L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, L_tmp_exp, DELTA_MANTISSA_W32, DELTA_EXPONENT, &L_tmp_exp );
- s = sub( s, L_tmp_exp );
- denom = extract_h( L_tmp ); /*Q15 - L_tmp_exp*/
-
- facTab[k] = div_s( num, denom ); /*Q15 - s*/
- move16();
- facTabExp[k] = s;
- move16();
- }
- /* Set unique exponent, if mantissa is equal to zero */
- if ( facTab[k] == 0 )
- {
- facTabExp[k] = -( WORD32_BITS - 1 );
- move16();
- }
- s2 = s_max( s2, facTabExp[k] );
- }
-
- FOR( k = 0; k < hFdCngCom->nFFTpart; k++ )
- {
- s = sub( facTabExp[k], s2 );
- s = s_max( s_min( s, WORD32_BITS - 1 ), -( WORD32_BITS - 1 ) );
- FOR( ; j <= hFdCngCom->part[k]; j++ )
- {
- cngNoiseLevel[j] = L_shl( Mpy_32_16_1( hFdCngDec->bandNoiseShape[j], facTab[k] ), s ); /*Q31 - hFdCngDec->bandNoiseShape_exp*/
- move32();
- }
- }
-
- /* adapt scaling for rest of the buffer */
- IF( NE_16( s2, -( WORD32_BITS - 1 ) ) )
- {
- s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) );
- FOR( ; k < hFdCngCom->npart; k++ )
- {
- FOR( ; j <= hFdCngCom->part[k]; j++ )
- {
- cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/
- move32();
- }
- }
-
- *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 );
- move16();
- }
- }
- ELSE
- {
- /* This sets the new CNG levels until a SID update overwrites it */
- test();
- test();
- test();
- IF( !( EQ_16( st->element_mode, IVAS_CPE_TD ) ) || ( EQ_16( st->element_mode, IVAS_CPE_TD ) && !hFdCngDec->flag_dtx_mode && !st->VAD ) )
- {
- Copy32( hFdCngDec->bandNoiseShape, cngNoiseLevel, nBins ); /*Q31 - hFdCngDec->bandNoiseShape_exp*/
- *cngNoiseLevel_exp = hFdCngDec->bandNoiseShape_exp;
- move16();
- }
- }
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- if ( st->element_mode == IVAS_CPE_MDCT && timeDomainInput == NULL )
- {
- st->hTcxDec->CngLevelBackgroundTrace_bfi = sqrtf( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / NORM_MDCT_FACTOR );
- }
- else
- {
- st->hTcxDec->CngLevelBackgroundTrace_bfi = (float) sqrt( ( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / 2 * hFdCngCom->fftlen ) / L_frame );
- }
-#endif
- /*st->cngTDLevel = (float)sqrt( (sumFLOAT(cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand) / 2 * hFdCngCom->fftlen) / st->Mode2_L_frame);*/
- tmp_loop = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand );
- L_tmp = L_deposit_h( 0 );
- L_c = L_deposit_h( 0 );
- FOR( j = 0; j < tmp_loop; j++ )
- {
-
- Carry = 0;
- move16();
- L_tmp = L_add_co( L_tmp, *( cngNoiseLevel + j ), &Carry, &Overflow ); /*Q31*/
- Overflow = 0;
- move16();
-
- IF( *( cngNoiseLevel + j ) < 0 )
- {
- L_c = L_msuNs( L_c, 0, 0 ); /*Q-1*/
- }
- IF( *( cngNoiseLevel + j ) >= 0 )
- {
- L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Q-1*/
- }
- }
- L_tmp = norm_llQ31( L_c, L_tmp, &L_tmp_exp ); /*Q31 - L_tmp_exp*/
- L_tmp_exp = sub( add( L_tmp_exp, *cngNoiseLevel_exp ), 1 );
-
- L_tmp = Mpy_32_16_1( L_tmp, hFdCngCom->fftlen ); /*Q16 - L_tmp_exp*/
-
- L_tmp = Mpy_32_16_1( L_tmp, T_DIV_L_Frame[L_shl( L_mac( -28000, st->L_frame, 95 ), 1 - 15 )] ); /*Q16,exp -7*/
- L_tmp_exp = add( L_tmp_exp, -7 ); /*->Q16, L_tmp_exp */
- L_tmp_exp = add( L_tmp_exp, 31 - 16 ); /*->Q31, L_tmp_exp*/
-
- st->cngTDLevel = round_fx_sat( Sqrt32( L_tmp, &L_tmp_exp ) ); /*Q15 - L_tmp_exp*/
- st->cngTDLevel_e = L_tmp_exp;
- move16();
- }
- ELSE IF( EQ_16( st->element_mode, IVAS_CPE_TD ) || EQ_16( st->element_mode, IVAS_CPE_DFT ) )
- {
- IF( hFdCngCom->active_frame_counter > 0 )
- {
- /* Perform noise estimation in active frames in the decoder for downward updates */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
-#else
- perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec );
-#endif
- }
- }
- test();
- test();
- L_tmp = 0;
- FOR( j = hFdCngCom->startBand; j < hFdCngCom->stopFFTbin; j++ )
- {
- L_tmp = L_add( L_tmp, L_shr( cngNoiseLevel[j], 16 ) );
- }
- L_tmp_exp = add( *cngNoiseLevel_exp, 16 );
- test();
- test();
- IF( EQ_16( concealWholeFrame, 1 ) && EQ_16( st->nbLostCmpt, 1 ) && ( GT_32( L_shl_o( L_tmp, L_tmp_exp, &Overflow ), 21474836 ) /*0.01f Q31*/ ) )
- {
- /* update isf cng estimate for concealment. Do that during concealment, in order to avoid addition clean channel complexity*/
-#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- lpc_from_spectrum( hFdCngCom, hFdCngCom->startBand, hFdCngCom->stopFFTbin, 0 );
- E_LPC_a_lsp_conversion( hFdCngCom->A_cng, lsp_cng, st->lspold_cng, M );
- Copy( lsp_cng, st->lspold_cng, M ); /*Q15*/
-
- lsp2lsf_fx( lsp_cng, st->lsf_cng, M, st->sr_core );
-#else
- if ( st->element_mode == IVAS_CPE_MDCT && st->core != ACELP_CORE )
- {
- float scf[SNS_NPTS];
- float scf_int[FDNS_NPTS];
- float whitenend_noise_shape[L_FRAME16k];
- int16_t inc, start_idx, stop_idx;
- float *noiseLevelPtr;
-
-
- inc = ( st->core > TCX_20 ) ? 2 : 1;
- start_idx = hFdCngCom->startBand / inc;
- stop_idx = L_frame / inc;
- noiseLevelPtr = cngNoiseLevel;
-
- set_zero( whitenend_noise_shape, start_idx );
- for ( j = start_idx; j < stop_idx; j++, noiseLevelPtr += inc )
- {
- whitenend_noise_shape[j] = *noiseLevelPtr;
- }
- if ( st->core == TCX_20_CORE )
- {
- st->hTonalMDCTConc->psychParams = &st->hTonalMDCTConc->psychParamsTCX20;
- }
- else
- {
- st->hTonalMDCTConc->psychParams = &st->hTonalMDCTConc->psychParamsTCX10;
- }
-
- sns_compute_scf( whitenend_noise_shape, st->hTonalMDCTConc->psychParams, L_frame, scf );
- sns_interpolate_scalefactors( scf_int, scf, ENC );
- sns_interpolate_scalefactors( st->hTonalMDCTConc->scaleFactorsBackground_flt, scf, DEC );
- sns_shape_spectrum( whitenend_noise_shape, st->hTonalMDCTConc->psychParams, scf_int, L_frame );
-
- mvr2r( whitenend_noise_shape + start_idx, cngNoiseLevel, stop_idx - start_idx );
- wmops_sub_end();
- }
- else if ( st->element_mode != IVAS_CPE_MDCT )
- {
- lpc_from_spectrum( hFdCngCom, hFdCngCom->startBand, hFdCngCom->stopFFTbin, 0.f );
- a2lsp_stab( hFdCngCom->A_cng, lsp_cng, st->lspold_cng );
- mvr2r( lsp_cng, st->lspold_cng, M );
- lsp2lsf( lsp_cng, st->lsf_cng, M, sr_core );
- }
-
-#endif
- st->plcBackgroundNoiseUpdated = 1;
- move16();
- }
- BREAK;
-
- case SID_FRAME:
-
- hFdCngDec->flag_dtx_mode = 1;
- move16();
- /* no break */
-
- case ZERO_FRAME:
-
- test();
- IF( st != NULL && st->cng_type == LP_CNG )
- {
- /* Perform noise estimation on inactive phase at the decoder */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
-#else
- perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec );
-#endif
- /* Update the shaping parameters */
-
- test();
- IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) )
- {
- scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 );
- }
- hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp;
- move16();
- /* This sets the new CNG levels until a SID update overwrites it */
- Copy32( hFdCngDec->bandNoiseShape, cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); /* This sets the new CNG levels until a SID update overwrites it Q31 - hFdCngDec->bandNoiseShape_exp*/
- *cngNoiseLevel_exp = hFdCngDec->bandNoiseShape_exp;
- move16();
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- st->cngTDLevel = (float) sqrt( ( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / 2 * hFdCngCom->fftlen ) / L_frame );
-#else
- /*st->cngTDLevel = (float)sqrt( (sumFLOAT(cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand) / 2 * hFdCngCom->fftlen) / st->Mode2_L_frame);*/
- tmp_loop = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand );
- L_tmp = L_deposit_h( 0 );
- L_c = L_deposit_h( 0 );
- FOR( j = 0; j < tmp_loop; j++ )
- {
-
- Carry = 0;
- move16();
- L_tmp = L_add_co( L_tmp, *( cngNoiseLevel + j ), &Carry, &Overflow ); /*Q31*/
- Overflow = 0;
- move16();
-
- IF( *( cngNoiseLevel + j ) < 0 )
- {
- L_c = L_msuNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Q-1*/
- }
- IF( *( cngNoiseLevel + j ) >= 0 )
- {
- L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Q-1*/
- }
- }
- L_tmp = norm_llQ31( L_c, L_tmp, &L_tmp_exp ); /*Q31 - L_tmp_exp*/
- L_tmp_exp = sub( add( L_tmp_exp, *cngNoiseLevel_exp ), 1 );
-
- L_tmp = Mpy_32_16_1( L_tmp, hFdCngCom->fftlen ); /*Q16 - L_tmp_exp*/
-
- L_tmp = Mpy_32_16_1( L_tmp, T_DIV_L_Frame[L_shl( L_mac( -28000, st->L_frame, 95 ), 1 - 15 )] ); /*Q16,exp -7*/
- L_tmp_exp = add( L_tmp_exp, -7 ); /*->Q16, L_tmp_exp */
- L_tmp_exp = add( L_tmp_exp, 31 - 16 ); /*->Q31, L_tmp_exp*/
-
- st->cngTDLevel = round_fx_o( Sqrt32( L_tmp, &L_tmp_exp ), &Overflow ); /*Q15 - L_tmp_exp*/
- move16();
- st->cngTDLevel_e = L_tmp_exp;
- move16();
-#endif
- BREAK;
- }
- hFdCngCom->inactive_frame_counter = add( hFdCngCom->inactive_frame_counter, 1 );
- move16();
-
- /*************************************
- * SID_FRAME or ZERO_FRAME at DECODER *
- *************************************/
-
- /* Detect first non-active frame */
- IF( EQ_16( hFdCngCom->inactive_frame_counter, 1 ) )
- {
- /* Compute the fine spectral structure of the comfort noise shape using the decoder-side noise estimates */
- bandcombinepow(
- hFdCngDec->bandNoiseShape,
- hFdCngDec->bandNoiseShape_exp,
- nBins,
- hFdCngCom->part,
- hFdCngCom->nFFTpart,
- hFdCngCom->psize_inv,
- hFdCngDec->partNoiseShape,
- &hFdCngDec->partNoiseShape_exp );
- }
-
- IF( EQ_16( st->m_frame_type, SID_FRAME ) )
- {
- IF( LT_32( hFdCngCom->msFrCnt_init_counter, L_deposit_l( hFdCngCom->msFrCnt_init_thresh ) ) )
- {
- /* At initialization, interpolate the bin/band-wise levels from the partition levels */
- scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband,
- hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 );
- *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp;
- move16();
- }
- ELSE
- {
- if ( EQ_16( st->element_mode, IVAS_CPE_DFT ) )
- {
- }
-
- /* Interpolate the CLDFB band levels from the SID (partition) levels */
- IF( GT_16( hFdCngCom->regularStopBand, hFdCngCom->numCoreBands ) )
- {
- scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband,
- hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 );
-
- *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp;
- move16();
- }
-
- s2 = -( WORD32_BITS - 1 );
- move16();
- /* Shape the SID noise levels in each FFT bin */
- j = 0;
- move16();
- FOR( k = 0; k < hFdCngCom->nFFTpart; k++ )
- {
- assert( hFdCngDec->partNoiseShape[k] >= 0 );
-
- /* add DELTA as it is done in FLC version, in order to avoid num > denom */
- facTab[k] = 0;
- move16();
- IF( hFdCngDec->partNoiseShape[k] != 0 )
- {
- s1 = norm_l( hFdCngCom->sidNoiseEst[k] );
- L_tmp = L_shl( hFdCngCom->sidNoiseEst[k], s1 ); /*Q31 - hFdCngCom->sidNoiseEstExp + s1*/
- L_tmp_exp = sub( hFdCngCom->sidNoiseEstExp, s1 );
- L_tmp = BASOP_Util_Add_Mant32Exp( hFdCngCom->sidNoiseEst[k], hFdCngCom->sidNoiseEstExp, DELTA_MANTISSA_W32, DELTA_EXPONENT, &L_tmp_exp );
- L_tmp = L_shr( L_tmp, 1 );
- s = add( L_tmp_exp, 1 );
- num = extract_h( L_tmp ); /*Q15 - L_tmp_exp*/
-
- s1 = norm_l( hFdCngDec->partNoiseShape[k] );
- L_tmp = L_shl( hFdCngDec->partNoiseShape[k], s1 ); /*Q31 - hFdCngDec->partNoiseShape_exp + s1*/
- L_tmp_exp = sub( hFdCngDec->partNoiseShape_exp, s1 );
- L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, L_tmp_exp, DELTA_MANTISSA_W32, DELTA_EXPONENT, &L_tmp_exp );
- s = sub( s, L_tmp_exp );
- denom = extract_h( L_tmp ); /*Q15 - L_tmp_exp*/
-
- facTab[k] = div_s( num, denom ); /*Q15 - s*/
- move16();
- facTabExp[k] = s;
- move16();
- }
- /* Set unique exponent, if mantissa is equal to zero */
- if ( facTab[k] == 0 )
- {
- facTabExp[k] = -( WORD32_BITS - 1 );
- move16();
- }
- s2 = s_max( s2, facTabExp[k] );
- }
-
- FOR( k = 0; k < hFdCngCom->nFFTpart; k++ )
- {
- s = sub( facTabExp[k], s2 );
- s = s_max( s_min( s, WORD32_BITS - 1 ), -( WORD32_BITS - 1 ) );
- FOR( ; j <= hFdCngCom->part[k]; j++ )
- {
- cngNoiseLevel[j] = L_shl( Mpy_32_16_1( hFdCngDec->bandNoiseShape[j], facTab[k] ), s ); /*Q31 - hFdCngDec->bandNoiseShape_exp*/
- move32();
- }
- }
- /* adapt scaling for rest of the buffer */
- s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) );
- FOR( ; k < hFdCngCom->npart; k++ )
- {
- FOR( ; j <= hFdCngCom->part[k]; j++ )
- {
- cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/
- move32();
- }
- }
- *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 );
- move16();
- }
- }
-
- IF( EQ_16( st->codec_mode, MODE2 ) )
- {
- /* Generate comfort noise during SID or zero frames */
- generate_comfort_noise_dec_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 );
- }
-
- BREAK;
-
- default:
- return -1;
- }
-
-
- return 0;
-}
-Word16 ApplyFdCng_ivas_fx(
+Word16 ApplyFdCng_fx(
Word16 *timeDomainInput, /* i : pointer to time domain input Q*/
Word16 Q,
Word32 *powerSpectrum, /*Q_power_spectrum*/
@@ -1220,11 +657,22 @@ Word16 ApplyFdCng_ivas_fx(
( !st->BER_detect ) )
{
/* Perform noise estimation at the decoder */
- perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec );
+ }
+ ELSE
+ {
+ perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
+ }
/* Update the shaping parameters */
test();
- IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) )
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 );
+ }
+ ELSE IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) )
{
scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 );
}
@@ -1460,7 +908,14 @@ Word16 ApplyFdCng_ivas_fx(
IF( hFdCngCom->active_frame_counter > 0 )
{
/* Perform noise estimation in active frames in the decoder for downward updates */
- perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec );
+ }
+ ELSE
+ {
+ perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
+ }
}
}
@@ -1518,29 +973,48 @@ Word16 ApplyFdCng_ivas_fx(
IF( st != NULL && EQ_16( st->cng_type, LP_CNG ) )
{
/* Perform noise estimation on inactive phase at the decoder */
- perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec );
+ }
+ ELSE
+ {
+ perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD );
+ }
/* Update the shaping parameters */
-
test();
- IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) )
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 );
+ }
+ ELSE IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) )
{
scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 );
}
hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp;
move16();
+
/* This sets the new CNG levels until a SID update overwrites it */
Copy32( hFdCngDec->bandNoiseShape, cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); /* This sets the new CNG levels until a SID update overwrites it */ /*Q31 - hFdCngDec->bandNoiseShape_exp*/
- Word16 shift1 = L_norm_arr( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) );
- Word16 shift2 = L_norm_arr( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ) );
- Word16 shift = s_max( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), sub( *cngNoiseLevel_exp, shift2 ) );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ *cngNoiseLevel_exp = hFdCngDec->bandNoiseShape_exp;
+ move16();
+ }
+ ELSE
+ {
+ Word16 shift1 = L_norm_arr( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) );
+ Word16 shift2 = L_norm_arr( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ) );
+ Word16 shift = s_max( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), sub( *cngNoiseLevel_exp, shift2 ) );
- scale_sig32( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), shift ) );
- scale_sig32( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ), sub( sub( *cngNoiseLevel_exp, shift2 ), shift ) );
+ scale_sig32( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( hFdCngDec->bandNoiseShape_exp, shift ) );
+ scale_sig32( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ), sub( *cngNoiseLevel_exp, shift ) );
- *cngNoiseLevel_exp = shift;
- move16();
+ *cngNoiseLevel_exp = shift;
+ move16();
+ }
/*st->cngTDLevel = (float)sqrt( (sumFLOAT(cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand) / 2 * hFdCngCom->fftlen) / st->Mode2_L_frame);*/
tmp_loop = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand );
@@ -1610,8 +1084,15 @@ Word16 ApplyFdCng_ivas_fx(
IF( LT_32( hFdCngCom->msFrCnt_init_counter, L_deposit_l( hFdCngCom->msFrCnt_init_thresh ) ) )
{
/* At initialization, interpolate the bin/band-wise levels from the partition levels */
- scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband,
- hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 );
+ }
+ ELSE
+ {
+ scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 );
+ }
+
*cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp;
move16();
}
@@ -1624,8 +1105,14 @@ Word16 ApplyFdCng_ivas_fx(
/* Interpolate the CLDFB band levels from the SID (partition) levels */
IF( GT_16( hFdCngCom->regularStopBand, hFdCngCom->numCoreBands ) )
{
- scalebands_fx( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband,
- hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ scalebands( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 );
+ }
+ ELSE
+ {
+ scalebands_fx( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 );
+ }
*cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp;
move16();
@@ -1688,17 +1175,34 @@ Word16 ApplyFdCng_ivas_fx(
move32();
}
}
- /* adapt scaling for rest of the buffer */
- s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) );
- FOR( ; j < FFTCLDFBLEN; j++ )
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
{
- cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/
- move32();
+ /* adapt scaling for rest of the buffer */
+ s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) );
+ FOR( ; k < hFdCngCom->npart; k++ )
+ {
+ FOR( ; j <= hFdCngCom->part[k]; j++ )
+ {
+ cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/
+ move32();
+ }
+ }
+ *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 );
+ move16();
}
+ ELSE
+ {
+ Word16 shift1 = L_norm_arr( cngNoiseLevel, j );
+ Word16 shift2 = L_norm_arr( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ) );
+ Word16 shift = s_max( sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift1 ), sub( *cngNoiseLevel_exp, shift2 ) );
- *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 );
- move16();
+ scale_sig32( cngNoiseLevel, j, sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift ) );
+ scale_sig32( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ), sub( *cngNoiseLevel_exp, shift ) );
+
+ *cngNoiseLevel_exp = shift;
+ move16();
+ }
}
}
ELSE IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) )
@@ -1761,25 +1265,29 @@ Word16 ApplyFdCng_ivas_fx(
move32();
}
}
- /* adapt scaling for rest of the buffer */
- s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) );
- FOR( ; j < FFTCLDFBLEN; j++ )
- {
- /* NOTE: saturation is added here as part of issue 1218 fix. after rescaling the fdcng noise estimation buffers, due to slight precision loss, values may slightly overflow */
- cngNoiseLevel[j] = L_shl_sat( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/
- move32();
- }
+ Word16 shift1 = L_norm_arr( cngNoiseLevel, j );
+ Word16 shift2 = L_norm_arr( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ) );
+ Word16 shift = s_max( sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift1 ), sub( *cngNoiseLevel_exp, shift2 ) );
+ scale_sig32( cngNoiseLevel, j, sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift ) );
+ scale_sig32( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ), sub( *cngNoiseLevel_exp, shift ) );
- *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 );
+ *cngNoiseLevel_exp = shift;
move16();
}
}
IF( EQ_16( st->codec_mode, MODE2 ) )
{
/* Generate comfort noise during SID or zero frames */
- generate_comfort_noise_dec_ivas_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 );
+ IF( EQ_16( st->element_mode, EVS_MONO ) )
+ {
+ generate_comfort_noise_dec_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 );
+ }
+ ELSE
+ {
+ generate_comfort_noise_dec_ivas_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 );
+ }
}
BREAK;
@@ -1810,9 +1318,6 @@ Word16 ApplyFdCng_ivas_fx(
void perform_noise_estimation_dec_fx(
const Word16 *timeDomainInput, /* i: pointer to time domain input Q*/
const Word16 Q,
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- float *power_spectrum,
-#endif
HANDLE_FD_CNG_DEC hFdCngDec /* i/o: FD_CNG structure containing all buffers and variables */
)
{
@@ -1843,53 +1348,11 @@ void perform_noise_estimation_dec_fx(
move16();
/* Perform STFT analysis */
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- IF( !( EQ_16( element_mode, IVAS_CPE_MDCT ) && power_spectrum != NULL ) )
- {
- /* Perform STFT analysis */
- AnalysisSTFT( timeDomainInput, Q, fftBuffer, &fftBuffer_exp, hFdCngDec->hFdCngCom );
- }
-#else
/* Perform STFT analysis */
AnalysisSTFT( timeDomainInput, Q, fftBuffer, &fftBuffer_exp, hFdCngDec->hFdCngCom );
-#endif
fftBuffer_exp = add( fftBuffer_exp, WORD16_BITS - 1 );
{
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- if ( element_mode == IVAS_CPE_MDCT && power_spectrum != NULL )
- {
- /* use power spectrum calculated in the MDCT-domain instead of calculating new power spectrum */
- periodog = power_spectrum;
- }
- else
- {
- /* Compute the squared magnitude in each FFT bin */
- if ( startBand == 0 )
- {
- ( *ptr_per ) = fftBuffer[0] * fftBuffer[0]; /* DC component */
- ptr_per++;
- ptr_r = fftBuffer + 2;
- }
- else
- {
- ptr_r = fftBuffer + 2 * startBand;
- }
-
- ptr_i = ptr_r + 1;
-
- for ( ; ptr_per < periodog + stopFFTbin - startBand; ptr_per++ )
- {
- ( *ptr_per ) = ( *ptr_r ) * ( *ptr_r ) + ( *ptr_i ) * ( *ptr_i );
- ptr_r += 2;
- ptr_i += 2;
- }
- /* Nyquist frequency is discarded */
-
- /* Rescale to get energy/sample: it should be 2*(1/N)*(2/N), parseval relation with 1/N,*2 for nrg computed till Nyquist only, 2/N as windowed samples correspond to half a frame*/
- v_multc( periodog, 4.f / (float) ( hFdCngDec->hFdCngCom->fftlen * hFdCngDec->hFdCngCom->fftlen ), periodog, stopFFTbin - startBand );
- }
-#else
assert( startBand != 0 );
len = sub( stopFFTbin, startBand );
@@ -1969,7 +1432,6 @@ void perform_noise_estimation_dec_fx(
}
hFdCngDec->hFdCngCom->periodog_exp = add( hFdCngDec->hFdCngCom->periodog_exp, sub( 2, s ) );
move16();
-#endif
/* Adjust to the desired frequency resolution by averaging over spectral partitions for SID transmission */
bandcombinepow( periodog, hFdCngDec->hFdCngCom->periodog_exp, sub( stopFFTbin, startBand ), part, npart, psize_inv, hFdCngDec->msPeriodog, &hFdCngDec->msPeriodog_exp );
@@ -2399,8 +1861,15 @@ void perform_noise_estimation_dec_ivas_fx(
ELSE
{
Copy32( msPeriodog, msNoiseEst, npart );
- scale_sig32( &msNoiseEst[npart], sub( NPART_SHAPING, npart ), sub( hFdCngDec->msNoiseEst_exp, hFdCngDec->msPeriodog_exp ) );
- hFdCngDec->msNoiseEst_exp = hFdCngDec->msPeriodog_exp;
+
+ Word16 shift1 = L_norm_arr( msNoiseEst, npart );
+ Word16 shift2 = L_norm_arr( &msNoiseEst[npart], sub( NPART_SHAPING, npart ) );
+ Word16 shift = s_max( sub( hFdCngDec->msPeriodog_exp, shift1 ), sub( hFdCngDec->msNoiseEst_exp, shift2 ) );
+
+ scale_sig32( msNoiseEst, npart, sub( hFdCngDec->msPeriodog_exp, shift ) );
+ scale_sig32( &msNoiseEst[npart], sub( NPART_SHAPING, npart ), sub( hFdCngDec->msNoiseEst_exp, shift ) );
+
+ hFdCngDec->msNoiseEst_exp = shift;
move16();
}
@@ -3499,7 +2968,9 @@ void generate_comfort_noise_dec_ivas_fx(
Word32 tmp1, tmp2;
Word16 scaleCldfb;
Word32 *fftBuffer = hFdCngCom->fftBuffer; /*hFdCngCom->fftBuffer_exp*/
- Word16 fftBuffer_exp = hFdCngCom->fftBuffer_exp;
+ Word16 fftBuffer_exp, fftBuffer_exp2;
+ fftBuffer_exp = hFdCngCom->fftBuffer_exp;
+ move16();
Word16 fftBuffer_temp_exp[FFTLEN];
Word16 *timeDomainOutput = hFdCngCom->timeDomainBuffer;
Word16 temp;
@@ -3532,6 +3003,8 @@ void generate_comfort_noise_dec_ivas_fx(
hFdCngCom->fftBuffer_exp = fftBuffer_exp;
move16();
set16_fx( fftBuffer_temp_exp, fftBuffer_exp, FFTLEN );
+ fftBuffer_exp2 = fftBuffer_exp;
+ move16();
fftBuffer_exp = 0;
move16();
@@ -3689,9 +3162,16 @@ void generate_comfort_noise_dec_ivas_fx(
/* Perform STFT synthesis */
SynthesisSTFT_ivas_fx( fftBuffer, fftBuffer_exp, timeDomainOutput, hFdCngCom->olapBufferSynth, hFdCngCom->olapWinSyn,
- tcx_transition, hFdCngCom, gen_exc, Q_new, st->element_mode, nchan_out );
- scale_sig32( fftBuffer + hFdCngCom->fftlen, sub( FFTLEN, hFdCngCom->fftlen ), sub( fftBuffer_exp, hFdCngCom->fftBuffer_exp ) ); /*Q31 - fftBuffer_exp*/
-
+ tcx_transition, hFdCngCom, gen_exc, Q_new, st->element_mode, nchan_out ); /* fftBuffer in hfDCngCom->fftBuffer_exp */
+ /* fftBuffer now in different Qs [0 to fftlen - 1] = hfDCngCom->fftBuffer_exp and [fftlen to FFTLEN(640)] = fftBuffer_exp2, bringing it in common exponent */
+ Word16 shift1 = L_norm_arr( fftBuffer, hFdCngCom->fftlen );
+ Word16 shift2 = L_norm_arr( fftBuffer + hFdCngCom->fftlen, sub( FFTLEN, hFdCngCom->fftlen ) );
+ Word16 shift = s_max( sub( hFdCngCom->fftBuffer_exp, shift1 ), sub( fftBuffer_exp2, shift2 ) );
+
+ scale_sig32( fftBuffer, hFdCngCom->fftlen, sub( hFdCngCom->fftBuffer_exp, shift ) );
+ scale_sig32( fftBuffer + hFdCngCom->fftlen, sub( FFTLEN, hFdCngCom->fftlen ), sub( fftBuffer_exp2, shift ) );
+ hFdCngCom->fftBuffer_exp = shift;
+ move16();
{
Word32 Lener, att;
Word16 exp;
@@ -5071,8 +4551,8 @@ void FdCng_decodeSID_ivas_fx(
Word16 shift2 = L_norm_arr( hFdCngCom->cngNoiseLevel + sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopBand, hFdCngCom->startBand ) ) );
Word16 shift = s_max( sub( hFdCngCom->sidNoiseEstExp, shift1 ), sub( hFdCngCom->cngNoiseLevelExp, shift2 ) );
- scale_sig32( hFdCngCom->cngNoiseLevel, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( sub( hFdCngCom->sidNoiseEstExp, shift1 ), shift ) );
- scale_sig32( hFdCngCom->cngNoiseLevel + sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopBand, hFdCngCom->startBand ) ), sub( sub( hFdCngCom->cngNoiseLevelExp, shift2 ), shift ) );
+ scale_sig32( hFdCngCom->cngNoiseLevel, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( hFdCngCom->sidNoiseEstExp, shift ) );
+ scale_sig32( hFdCngCom->cngNoiseLevel + sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopBand, hFdCngCom->startBand ) ), sub( hFdCngCom->cngNoiseLevelExp, shift ) );
hFdCngCom->cngNoiseLevelExp = shift;
move16();
@@ -5245,7 +4725,11 @@ void generate_masking_noise_ivas_fx(
}
ELSE
{
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( maskingNoise_fx, timeDomainBuffer, timeDomainBuffer, s_min( hFdCngCom->frameSize, length ) ); /*Q31 - *exp_out*/
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( maskingNoise_fx, timeDomainBuffer, timeDomainBuffer, s_min( hFdCngCom->frameSize, length ), 0 ); /*Q31 - *exp_out*/
+#endif /* VEC_ARITH_OPT_v1 */
}
return;
@@ -5444,10 +4928,11 @@ void generate_stereo_masking_noise_fx(
return;
}
void generate_masking_noise_lb_dirac_fx(
- HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */
- Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA Q11*/
- const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered Q0*/
- const Word16 cna_flag /* i : CNA flag for LB and HB Q0*/
+ HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */
+ Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA Q11*/
+ const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered Q0*/
+ SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i : common spatial rendering parameters handle */
+ const Word16 cna_flag /* i : CNA flag for LB and HB Q0*/
)
{
Word16 i;
@@ -5465,7 +4950,7 @@ void generate_masking_noise_lb_dirac_fx(
/* Init */
scale = 0;
move32();
- n_samples_out = i_mult( shr( hFdCngCom->frameSize, 4 ), nCldfbTs );
+ n_samples_out = i_mult( shr( hFdCngCom->frameSize, 4 /* DEFAULT_JBM_CLDFB_TIMESLOTS */ ), nCldfbTs );
n_samples_start = 0;
move16();
Word16 exp_out = Q11;
@@ -5498,6 +4983,11 @@ void generate_masking_noise_lb_dirac_fx(
test();
IF( cna_flag && tdBuffer != NULL )
{
+ Word16 cur_subframe;
+ Word16 cur_subframe_start_outfs;
+ Word16 cur_subframe_start_cngfs;
+ Word16 slot_size_cng;
+
WHILE( n_samples_out > 0 )
{
n_samples_out_loop = s_min( hFdCngCom->frameSize, n_samples_out );
@@ -5569,6 +5059,28 @@ void generate_masking_noise_lb_dirac_fx(
n_samples_out = sub( n_samples_out, hFdCngCom->frameSize );
n_samples_start = add( n_samples_start, hFdCngCom->frameSize );
}
+
+ /* move generated noise to the 5ms subframe starts in the tc buffer according to the output sampling frequency to avoid
+ overwriting it with the synthesis in case of shared tc and synth channel memory, i.e. non-TSM mode */
+ slot_size_cng = shr( hFdCngCom->frameSize, 4 /* DEFAULT_JBM_CLDFB_TIMESLOTS */ );
+ /* move start indices forward to the end of the last subframe */
+ cur_subframe_start_outfs = mult( nCldfbTs, hSpatParamRendCom->slot_size );
+ cur_subframe_start_cngfs = mult( nCldfbTs, slot_size_cng );
+
+ /* go from the last subframe back and move the LB noise */
+ FOR( cur_subframe = sub( hSpatParamRendCom->nb_subframes, 1 ); cur_subframe >= 0; cur_subframe-- )
+ {
+ Word16 move_size, subframe_size_outfs;
+ move_size = mult( slot_size_cng, hSpatParamRendCom->subframe_nbslots[cur_subframe] );
+ subframe_size_outfs = mult( hSpatParamRendCom->subframe_nbslots[cur_subframe], hSpatParamRendCom->slot_size );
+ cur_subframe_start_outfs = sub( cur_subframe_start_outfs, mult( hSpatParamRendCom->subframe_nbslots[cur_subframe], hSpatParamRendCom->slot_size ) );
+ cur_subframe_start_cngfs = sub( cur_subframe_start_cngfs, mult( hSpatParamRendCom->subframe_nbslots[cur_subframe], slot_size_cng ) );
+ /* move cna */
+ Copy32( tdBuffer + cur_subframe_start_cngfs, tdBuffer + cur_subframe_start_outfs, move_size );
+
+ /* set everything else to zero */
+ set_zero_fx( tdBuffer + cur_subframe_start_outfs + move_size, sub( subframe_size_outfs, move_size ) );
+ }
}
pop_wmops();
@@ -5661,7 +5173,7 @@ void generate_masking_noise_dirac_ivas_fx(
scale_fx = L_shl( scale_fx, q_shift ); /*q_scale+q_shift*/
q_scale = add( q_scale, q_shift );
scale_fx = Mpy_32_32( scale_fx, Mpy_32_16_1( L_mult( h_cldfb->scale, h_cldfb->scale ), CLDFB_SCALING ) ); // Q = q_scale + 2 * Q8 - 34
- q_scale = sub( add( q_scale, 2 * Q8 ), 31 );
+ q_scale = sub( add( q_scale, 2 * Q8 ), 31 + 3 );
ptr_level_fx = hFdCngCom->cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); /*Q31 - hFdCngCom->cngNoiseLevelExp*/
q_ptr_level = sub( 31, hFdCngCom->cngNoiseLevelExp );
@@ -5672,8 +5184,8 @@ void generate_masking_noise_dirac_ivas_fx(
q_shift = norm_l( scale_fx );
scale_fx = L_shl( scale_fx, q_shift ); /*q_scale+q_shift*/
q_scale = add( q_scale, q_shift );
- num = Mpy_32_32( scale_fx, *ptr_level_fx ); /*q_num*/
- q_num = sub( add( q_scale, q_ptr_level ), 31 );
+ num = Mpy_32_32( scale_fx, *ptr_level_fx ); /*q_num*/
+ q_num = sub( add( q_scale, q_ptr_level ), 31 - 1 ); // num = ( scale * *ptr_level ) * 0.5f
exp = sub( 31, q_num );
num = Sqrt32( num, &exp ); /*Q31 - exp*/
/* Real part in CLDFB band */
diff --git a/lib_dec/gain_dec_fx.c b/lib_dec/gain_dec_fx.c
index 5e17122311bc97e7495aa9840fa7036d069b3c24..db325cd80b92a8be09722e96ce43d699613736e6 100644
--- a/lib_dec/gain_dec_fx.c
+++ b/lib_dec/gain_dec_fx.c
@@ -601,376 +601,8 @@ void gain_dec_mless_fx(
/* RETURN ARGUMENTS : */
/* _ None */
/*==================================================================================*/
-void gain_dec_lbr_fx(
- Decoder_State *st_fx, /* i/o: decoder state structure */
- const Word16 coder_type, /* i : coding type */
- const Word16 i_subfr, /* i : subframe index */
- const Word16 *code_fx, /* i : algebraic excitation Q9 */
- Word16 *gain_pit_fx, /* o : quantized pitch gain Q14*/
- Word32 *gain_code_fx, /* o : quantized codebook gain Q16*/
- Word16 *gain_inov_fx, /* o : gain of the innovation (used for normalization) Q12*/
- Word32 *norm_gain_code_fx, /* o : norm. gain of the codebook excitation Q16*/
- Word32 gc_mem[], /* i/o: gain_code from previous subframes Q16*/
- Word16 gp_mem[], /* i/o: gain_pitch from previous subframes Q14*/
- const Word16 L_subfr /* i : subfr lenght */
-)
-{
- Word16 index, nBits, n_pred, ctype;
- Word16 gcode0_fx, aux_fx[10];
- Word32 L_tmp, L_tmp1, L_tmp2;
- Word16 expg, expg2, e_tmp, exp_gcode0, f_tmp, frac, tmp_fx;
- const Word16 *b_fx, *cdbk_fx = 0;
- /* Ecode = ( dotp( code, code, L_SUBFR ) + 0.01f ) / L_SUBFR;
- *gain_inov = 1.0f / (float)sqrt(Ecode); */
- Word16 shift_L_subfr;
- shift_L_subfr = 6;
- move16(); // for *cdbk_fx
- move16();
- if ( GT_16( L_subfr, L_SUBFR ) )
- {
- shift_L_subfr = add( shift_L_subfr, 1 );
- }
- L_tmp = Dot_product12( code_fx, code_fx, L_subfr, &expg ); /*Q31 - expg*/
- expg = sub( expg, add( 18, shift_L_subfr ) ); /* exp: -18 (code in Q9), -6 (/L_SUBFR) */
-
- expg2 = expg;
- move16();
- L_tmp2 = L_tmp; /* sets to 'L_tmp' in 1 clock */
- move32();
- L_tmp = Isqrt_lc( L_tmp, &expg ); /*Q31 - expg*/
-
- *gain_inov_fx = extract_h( L_shl_sat( L_tmp, sub( expg, 3 ) ) ); /* gain_inov in Q12 */
- move16();
-
- /*-----------------------------------------------------------------*
- * select the codebook, size and number of bits
- * set the gains searching range
- *-----------------------------------------------------------------*/
- nBits = st_fx->acelp_cfg.gains_mode[shr( i_subfr, shift_L_subfr )];
- move16();
-
- ctype = shl( sub( coder_type, 1 ), 1 );
-
- /*-----------------------------------------------------------------*
- * calculate prediction of gcode
- * search for the best codeword
- *-----------------------------------------------------------------*/
- IF( i_subfr == 0 )
- {
- b_fx = b_1sfr_fx;
- move16();
- n_pred = 2;
- move16();
- cdbk_fx = gp_gamma_1sfr_6b_fx;
- SWITCH( nBits )
- {
- case 8:
- {
- cdbk_fx = gp_gamma_1sfr_8b_fx; /* Q14/Q9*/
- BREAK;
- }
- case 7:
- {
- cdbk_fx = gp_gamma_1sfr_7b_fx; /* Q14/Q9*/
- BREAK;
- }
- case 6:
- {
- cdbk_fx = gp_gamma_1sfr_6b_fx; /* Q14/Q9*/
- BREAK;
- }
- }
-
- /* calculate predicted gain */
- aux_fx[0] = 4096; /*Q12*/
- move16();
- aux_fx[1] = shl( ctype, 12 ); /*Q12*/
- move16();
-
- /* gcode0 = (float)pow(10, dotp(b, aux, n_pred) - 0.5f * (float)log10(Ecode));
- gcode0 = (float)pow(10, dotp(b, aux, n_pred) - 0.05f * 10 * (float)log10(Ecode));
- gcode0 = (float)pow(10, 0.05(20 * dotp(b, aux, n_pred) - 10 * (float)log10(Ecode))); */
-
- e_tmp = norm_l( L_tmp2 );
- f_tmp = Log2_norm_lc( L_shl( L_tmp2, e_tmp ) ); /*Q15*/
- e_tmp = sub( expg2, add( 1, e_tmp ) );
- L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 12330 ); /* Q13 */ /* 10*log10(2) in Q12*/
-
- L_tmp = Dot_product( b_fx, aux_fx, n_pred ); /*Q25*/
- L_tmp = Mult_32_16( L_tmp, 160 ); /*Q13, 20 in Q3*/
- L_tmp = L_sub( L_tmp, L_tmp1 ); /*Q13*/
-
- gcode0_fx = round_fx( L_shl( L_tmp, 11 ) ); /* Q8 */
-
-
- /*-----------------------------------------------------------------*
- * gcode0 = pow(10.0, gcode0/20)
- * = pow(2, 3.321928*gcode0/20)
- * = pow(2, 0.166096*gcode0)
- *-----------------------------------------------------------------*/
-
- L_tmp = L_mult( gcode0_fx, 21771 ); /* *0.166096 in Q17 -> Q26 */
- L_tmp = L_shr( L_tmp, 10 ); /* From Q26 to Q16 */
- frac = L_Extract_lc( L_tmp, &exp_gcode0 ); /* Extract exponent of gcode0 */
-
- gcode0_fx = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */
- /* output of Pow2() will be: */
- /* 16384 < Pow2() <= 32767 */
- exp_gcode0 = sub( exp_gcode0, 14 );
-
- /* retrieve the codebook index and calculate both gains */
- /*index = (Word16)get_indice( st_fx,"gain", i_subfr, ACELP_CORE);move16();*/
- index = (Word16) get_next_indice_fx( st_fx, nBits ); /*Q0*/
- move16();
-
- *gain_pit_fx = cdbk_fx[index * 2]; /*Q14*/
- move16();
-
- L_tmp = L_mult( cdbk_fx[( ( index * 2 ) + 1 )], gcode0_fx ); /* Q9*Q0 -> Q10 */
- *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 6 ) ); /* Q10 -> Q16*/
- move16();
-
- gc_mem[0] = *gain_code_fx; /*Q16*/
- move32();
- gp_mem[0] = *gain_pit_fx; /*Q14*/
- move16();
- }
- ELSE IF( EQ_16( i_subfr, L_SUBFR ) || EQ_16( L_subfr, 2 * L_SUBFR ) )
- {
- b_fx = b_2sfr_fx; /*Q12*/
- move16();
- n_pred = 4;
- move16();
-
- cdbk_fx = gp_gamma_1sfr_6b_fx; /*Q14/Q9 */
- SWITCH( nBits )
- {
- case 7:
- {
- cdbk_fx = gp_gamma_2sfr_7b_fx; /* Q14/Q9*/
- BREAK;
- }
- case 6:
- {
- cdbk_fx = gp_gamma_2sfr_6b_fx; /* Q14/Q9*/
- BREAK;
- }
- }
-
- /* calculate predicted gain */
- aux_fx[0] = 4096; /*Q12*/
- move16();
- aux_fx[1] = shl( ctype, 12 ); /*Q12*/
- move16();
-
- /*aux_fx[2] = (float)log10(gc_mem[0]);
- = log2(gc_mem[0])*log10(2);*/
- e_tmp = norm_l( gc_mem[0] );
- f_tmp = Log2_norm_lc( L_shl( gc_mem[0], e_tmp ) ); /*Q15*/
- e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[0])=16*/
- L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */
- aux_fx[2] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */
- move16();
-
- aux_fx[3] = shr( gp_mem[0], 2 ); /*Q12*/
- move16();
-
- /*-----------------------------------------------------------------*
- * gcode0 = pow(10.0, dotp(b, aux, n_pred)
- * = pow(2, 3.321928*dotp(b, aux, n_pred)
- *-----------------------------------------------------------------*/
- L_tmp = Dot_product( b_fx, aux_fx, n_pred ); /*Q25*/
- L_tmp = Mult_32_16( L_tmp, 27213 ); /* *3.321928 in Q13 -> Q23 */
- L_tmp = L_shr( L_tmp, 7 ); /* From Q23 to Q16 */
- frac = L_Extract_lc( L_tmp, &exp_gcode0 ); /* Extract exponent of gcode0 */
-
- gcode0_fx = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */
- /* output of Pow2() will be: */
- /* 16384 < Pow2() <= 32767 */
- exp_gcode0 = sub( exp_gcode0, 14 );
-
- /* retrieve the codebook index and calculate both gains */
- index = (Word16) get_next_indice_fx( st_fx, nBits ); /*Q0*/
- move16();
-
- *gain_pit_fx = cdbk_fx[index * 2]; /*Q14*/
- move16();
-
- L_tmp = L_mult( cdbk_fx[( ( index * 2 ) + 1 )], gcode0_fx ); /* Q9*Q0 -> Q10 */
- *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 6 ) ); /*Q16*/
- move16();
-
- gc_mem[1] = *gain_code_fx; /*Q16*/
- move32();
- gp_mem[1] = *gain_pit_fx; /*Q14*/
- move16();
- }
- ELSE IF( EQ_16( i_subfr, 2 * L_SUBFR ) )
- {
- b_fx = b_3sfr_fx;
- move16();
- n_pred = 6;
- move16();
-
- cdbk_fx = gp_gamma_3sfr_6b_fx; /*Q14/Q9 */
-
- if ( EQ_16( nBits, 7 ) )
- {
- cdbk_fx = gp_gamma_3sfr_7b_fx; /*Q14*/
- // PMT("verify if gp_gamma_3sfr_7b_fx is correct")
- }
-
- /* calculate predicted gain */
- aux_fx[0] = 4096; /*Q12*/
- move16();
- aux_fx[1] = shl( ctype, 12 ); /*Q12*/
- move16();
-
- /*aux_fx[2] = (float)log10(gc_mem[0]);
- = log2(gc_mem[0])*log10(2);*/
- e_tmp = norm_l( gc_mem[0] );
- f_tmp = Log2_norm_lc( L_shl( gc_mem[0], e_tmp ) ); /*Q15*/
- e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[0])=16*/
- L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */
- aux_fx[2] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */
- move16();
- /*aux[3] = (float)log10(gc_mem[1]);
- = log2(gc_mem[1])*log10(2);*/
- e_tmp = norm_l( gc_mem[1] );
- f_tmp = Log2_norm_lc( L_shl( gc_mem[1], e_tmp ) ); /*Q15*/
- e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[1])=16*/
- L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */
- aux_fx[3] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */
- move16();
-
- aux_fx[4] = shr( gp_mem[0], 2 ); /*Q12*/
- move16();
- aux_fx[5] = shr( gp_mem[1], 2 ); /*Q12*/
- move16();
-
- /*-----------------------------------------------------------------*
- * gcode0 = pow(10.0, dotp(b, aux, n_pred)
- * = pow(2, 3.321928*dotp(b, aux, n_pred)
- *-----------------------------------------------------------------*/
- L_tmp = Dot_product( b_fx, aux_fx, n_pred ); /*Q25*/
- L_tmp = Mult_32_16( L_tmp, 27213 ); /* *3.321928 in Q13 -> Q23 */
- L_tmp = L_shr( L_tmp, 7 ); /* From Q23 to Q16 */
- frac = L_Extract_lc( L_tmp, &exp_gcode0 ); /* Extract exponent of gcode0 */
-
- gcode0_fx = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */
- /* output of Pow2() will be: */
- /* 16384 < Pow2() <= 32767 */
- exp_gcode0 = sub( exp_gcode0, 14 );
-
- /* retrieve the codebook index and calculate both gains */
- index = (Word16) get_next_indice_fx( st_fx, nBits );
- move16();
-
- *gain_pit_fx = cdbk_fx[( index * 2 )]; /*Q14*/
- move16();
-
- L_tmp = L_mult( cdbk_fx[( ( index * 2 ) + 1 )], gcode0_fx ); /* Q9*Q0 -> Q10 */
- *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 6 ) ); /* Q10 -> Q16*/
- move32();
- gc_mem[2] = *gain_code_fx; /*Q16*/
- move32();
- gp_mem[2] = *gain_pit_fx; /*Q14*/
- move16();
- }
- ELSE IF( EQ_16( i_subfr, 3 * L_SUBFR ) )
- {
- b_fx = b_4sfr_fx; /*Q12*/
- n_pred = 8;
- move16();
-
-
- cdbk_fx = gp_gamma_4sfr_6b_fx; /*Q14*/
-#ifdef IVAS_GAIN_MOD
- IF( EQ_16( nBits, 7 ) )
- {
- cdbk_fx = gp_gamma_4sfr_7b_fx;
- PMT( "verify if gp_gamma_4sfr_7b_fx is correct" )
- }
-#endif
-
- /* calculate predicted gain */
- aux_fx[0] = 4096; /*Q12*/
- move16();
- aux_fx[1] = shl( ctype, 12 ); /*Q12*/
- move16();
-
- /*aux[2] = (float)log10(gc_mem[0]);
- = log2(gc_mem[0])*log10(2);*/
- e_tmp = norm_l( gc_mem[0] );
- f_tmp = Log2_norm_lc( L_shl( gc_mem[0], e_tmp ) ); /*Q15*/
- e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[0])=16*/
- L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */
- aux_fx[2] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */
- move16();
-
- /*aux[3] = (float)log10(gc_mem[1]);
- = log2(gc_mem[1])*log10(2);*/
- e_tmp = norm_l( gc_mem[1] );
- f_tmp = Log2_norm_lc( L_shl( gc_mem[1], e_tmp ) ); /*Q15*/
- e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[1])=16*/
- L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */
- aux_fx[3] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */
- move16();
-
- /*aux[4] = (float)log10(gc_mem[2]);
- = log2(gc_mem[2])*log10(2);*/
- e_tmp = norm_l( gc_mem[2] );
- f_tmp = Log2_norm_lc( L_shl( gc_mem[2], e_tmp ) ); /*Q15*/
- e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[2])=16*/
- L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */
- aux_fx[4] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */
- move16();
-
- aux_fx[5] = shr( gp_mem[0], 2 ); /*Q12*/
- move16();
- aux_fx[6] = shr( gp_mem[1], 2 ); /*Q12*/
- move16();
- aux_fx[7] = shr( gp_mem[2], 2 ); /*Q12*/
- move16();
-
- /*-----------------------------------------------------------------*
- * gcode0 = pow(10.0, dotp(b, aux, n_pred)
- * = pow(2, 3.321928*dotp(b, aux, n_pred)
- *-----------------------------------------------------------------*/
- L_tmp = Dot_product( b_fx, aux_fx, n_pred ); /*Q25*/
- L_tmp = Mult_32_16( L_tmp, 27213 ); /* *3.321928 in Q13 -> Q23 */
- L_tmp = L_shr( L_tmp, 7 ); /* From Q23 to Q16 */
- frac = L_Extract_lc( L_tmp, &exp_gcode0 ); /* Extract exponent of gcode0 */
-
- gcode0_fx = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */
- /* output of Pow2() will be: */
- /* 16384 < Pow2() <= 32767 */
- exp_gcode0 = sub( exp_gcode0, 14 );
-
- /* retrieve the codebook index and calculate both gains */
- index = (Word16) get_next_indice_fx( st_fx, nBits ); /*Q0*/
- move16();
- *gain_pit_fx = cdbk_fx[( index * 2 )]; /*Q14*/
- move16();
-
- L_tmp = L_mult( cdbk_fx[( ( index * 2 ) + 1 )], gcode0_fx ); /* Q9*Q0 -> Q10 */
- *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 6 ) ); /*Q16*/
- move32();
- }
-
- /* *norm_gain_code = *gain_code / *gain_inov; */
- expg = sub( norm_s( *gain_inov_fx ), 1 );
- expg = s_max( expg, 0 );
-
- tmp_fx = div_s( shr( 8192, expg ), *gain_inov_fx ); /*Q15*/
- *norm_gain_code_fx = L_shr( Mult_32_16( *gain_code_fx, tmp_fx ), sub( 1, expg ) ); /*Q16*/
- move32();
-
- return;
-}
-
-void gain_dec_lbr_ivas_fx(
+void gain_dec_lbr_fx(
Decoder_State *st_fx, /* i/o: decoder state structure */
const Word16 coder_type, /* i : coding type */
const Word16 i_subfr, /* i : subframe index */
@@ -1581,24 +1213,28 @@ void lp_gain_updt_ivas_fx(
}
/*-------------------------------------------------*
- * Gain_dec_gaus_vbr
+ * gain_dec_gaus_fx()
*
* Decode gains of purely unvoiced sounds
*-------------------------------------------------*/
-Word32 gain_dec_gaus_fx( /* o : quantized codebook gain Q16 */
- Word16 index, /* i : quantization index */
- const Word16 bits, /* i : number of bits to quantize */
- const Word16 lowBound, /* i : lower bound of quantizer (dB) */
- const Word16 topBound, /* i : upper bound of quantizer (dB) */
- const Word16 inv_gain_inov, /* o : unscaled innovation gain Q12 */
- Word32 *L_norm_gain_code /* o : gain of normalized gaussian excitation Q16 */
+
+/*! r: quantized codebook gain Q16 */
+Word32 gain_dec_gaus_fx(
+ Word16 index, /* i : quantization index */
+ const Word16 bits, /* i : number of bits to quantize */
+ const Word16 lowBound, /* i : lower bound of quantizer (dB) */
+ const Word16 topBound, /* i : upper bound of quantizer (dB) */
+ const Word16 inv_gain_inov, /* o : unscaled innovation gain Q12 */
+ Word32 *L_norm_gain_code /* o : gain of normalized gaussian excitation Q16 */
)
{
Word16 stepSize, gain, expg, frac, expi, tmp_igi;
Word32 L_tmp, L_enr_q, L_gain;
Word16 stepSize_Exp;
+
stepSize_Exp = 14;
move16();
+
/*------------------------------------------------------------------------------------------*
* Quantize linearly the log E
*------------------------------------------------------------------------------------------*/
diff --git a/lib_dec/gs_dec_amr_wb_fx.c b/lib_dec/gs_dec_amr_wb_fx.c
index 65e9eaa87c777a89fa575441dfc820f571d521d5..eea37431a865aba1ec1ddcc180a859525f672e45 100644
--- a/lib_dec/gs_dec_amr_wb_fx.c
+++ b/lib_dec/gs_dec_amr_wb_fx.c
@@ -24,9 +24,6 @@
#define NORMALIZE_SPECS_Q_OUT 6
#define ENER_FX_Q_GUARD 1
-#ifdef ADD_IVAS_GS_DEC_IMPR
-#define CONTR_LIMIT 3012 to be verified for fixed point /* Threshold to allow an increase in the contribution length */
-#endif
/*-------------------------------------------------------------------*
* Local functions
*-------------------------------------------------------------------*/
@@ -34,12 +31,7 @@ static void NoiseFill_fx( Word16 *exc_diffQ_fx, Word16 *seed_tcx, const Word16 M
static void Ener_per_band_fx( const Word16 exc_diff_fx[], const Word16 exc_diff_exp, Word32 y_gain4_fx[] );
static void Apply_gain_fx( Word16 exc_diffQ_fx[], Word32 L_Ener_per_bd_iQ[], Word32 L_Ener_per_bd_yQ[], const Word16 Q_out );
static void normalize_spec_fx( Word16 fac_up_fx, Word16 fy_norm_fx[], const Word16 L_frame, const Word16 Q_out );
-static void gs_dec_amr_wb_fx( const long core_brate, Word16 *seed_tcx, const Word16 dct_in_fx[], const Word16 Q_dct_in, Word16 dct_out_fx[], Word16 Q_dct_out, const Word16 pitch_fx[], const Word16 voice_fac, const Word16 clas, const Word16 coder_type
-#ifdef ADD_IVAS_GS_DEC_IMPR
- ,
- const Word16 VeryLowRateSTflag
-#endif
-);
+static void gs_dec_amr_wb_fx( const long core_brate, Word16 *seed_tcx, const Word16 dct_in_fx[], const Word16 Q_dct_in, Word16 dct_out_fx[], Word16 Q_dct_out, const Word16 pitch_fx[], const Word16 voice_fac, const Word16 clas, const Word16 coder_type );
/*-------------------------------------------------------------------*
* NoiseFill_fx()
@@ -223,10 +215,6 @@ static void gs_dec_amr_wb_fx(
const Word16 voice_fac, /* i : gain pitch Q15*/
const Word16 clas, /* i : signal frame class Q0*/
const Word16 coder_type /* i : coder type Q0*/
-#ifdef ADD_IVAS_GS_DEC_IMPR
- ,
- const Word16 VeryLowRateSTflag /* i : Enable the noise enhancement for very low rate stereo generic mode */
-#endif
)
{
Word16 i, mDiff_len;
@@ -280,13 +268,7 @@ static void gs_dec_amr_wb_fx(
temp = Invert16( temp, &exp ); /* Q15 */
L_temp = L_mult( temp, 12800 ); /* Q15 */
L_temp = L_shl( L_temp, sub( 3, exp ) ); /* *8.0f */ /* Q15 */
-#ifdef ADD_IVAS_GS_DEC_IMPR
- test();
- test();
- IF( L_temp <= CONTR_LIMIT && ( VeryLowRateSTflag || GE_32( core_brate, ACELP_12k65 ) ) )
-#else
if ( GE_32( core_brate, ACELP_12k65 ) )
-#endif
{
L_temp = L_shl( L_temp, 1 ); /* Q16 */
}
@@ -311,16 +293,6 @@ static void gs_dec_amr_wb_fx(
mDiff_len = s_max( round_fx( L_temp ), BIN_1k2 ); /* Q0 */
-#ifdef ADD_IVAS_GS_DEC_IMPR
- IF( ( VeryLowRateSTflag && ( EQ_16( clas, VOICED_CLAS ) || EQ_16( clas, AUDIO_CLAS ) ) ) ) /* Do not apply normalization on VOICED signal in case of stereo */
- {
- Copy( dct_in_fx, exc_diffQ, L_FRAME );
-
- /* normalization of the spectrum and noise fill */
- normalize_spec_fx( 1 * 256, exc_diffQ + mDiff_len, sub( L_FRAME, mDiff_len ), NORMALIZE_SPECS_Q_OUT );
- }
- ELSE
-#endif
{
Copy( dct_in_fx, exc_diffQ_fx, mDiff_len ); /* Q_dct_in */
set16_fx( exc_diffQ_fx + mDiff_len, 0, sub( L_FRAME, mDiff_len ) );
@@ -387,10 +359,6 @@ void improv_amr_wb_gs_fx(
const Word16 Last_ener_fx, /* i : Last energy (Q8) Q0*/
const Word16 rate_switching_reset, /* i : rate switching reset flag Q0*/
const Word16 last_coder_type /* i : Last coder_type Q0*/
-#ifdef ADD_IVAS_GS_DEC_IMPR
- ,
- const Word16 VeryLowRateSTflag /* i : Enable the noise enhancement for very low rate stereo generic mode */
-#endif
)
{
Word16 i, exp_a, exp_b, exp_diff, j;
@@ -413,18 +381,10 @@ void improv_amr_wb_gs_fx(
test();
test();
test();
-#ifdef ADD_IVAS_GS_DEC_IMPR
- IF( VeryLowRateSTflag ||
- ( ( locattack == 0 && LE_32( core_brate, ACELP_12k65 ) ) &&
- ( ( LT_32( core_brate, ACELP_8k85 ) && NE_16( clas, AUDIO_CLAS ) &&
- ( EQ_16( clas, UNVOICED_CLAS ) || EQ_16( clas, VOICED_TRANSITION ) ) ) ||
- EQ_16( coder_type, INACTIVE ) ) ) )
-#else
IF( ( locattack == 0 && LE_32( core_brate, ACELP_12k65 ) ) &&
( ( LT_32( core_brate, ACELP_8k85 ) && NE_16( clas, AUDIO_CLAS ) &&
( ( clas == UNVOICED_CLAS ) || EQ_16( clas, VOICED_TRANSITION ) ) ) ||
( EQ_16( coder_type, INACTIVE ) ) ) )
-#endif
{
/*------------------------------------------------------------*
* two differents paths:
@@ -494,12 +454,7 @@ void improv_amr_wb_gs_fx(
* Go back to time domain -> Overwrite exctiation
*------------------------------------------------------------*/
edct_16fx( exc2_fx, dct_exc_in_fx, L_FRAME, 6, EVS_MONO );
- gs_dec_amr_wb_fx( core_brate, seed_tcx, dct_exc_in_fx, Q_exc2, dct_exc_out_fx, Q_exc2, pitch_buf_fx, lt_voice_fac_fx, clas, coder_type
-#ifdef ADD_IVAS_GS_DEC_IMPR
- ,
- VeryLowRateSTflag
-#endif
- );
+ gs_dec_amr_wb_fx( core_brate, seed_tcx, dct_exc_in_fx, Q_exc2, dct_exc_out_fx, Q_exc2, pitch_buf_fx, lt_voice_fac_fx, clas, coder_type );
edct_16fx( dct_exc_out_fx, exc2_fx, L_FRAME, 6, EVS_MONO );
/*------------------------------------------------------------*
diff --git a/lib_dec/gs_dec_fx.c b/lib_dec/gs_dec_fx.c
index 8f29eb9d13ce53f72ad042cec7c6fe757ca09f7d..70639810c96f45a36538bd07ca0c86d911e3e6fa 100644
--- a/lib_dec/gs_dec_fx.c
+++ b/lib_dec/gs_dec_fx.c
@@ -23,440 +23,25 @@
/* _ (Word16[]) voice_factors_fx: frame error rate Q15 */
/*--------------------------------------------------------------------------*/
/* INPUT/OUTPUT ARGUMENTS : */
-/* Decoder_State *st_fx : decoder memory structure */
+/* Decoder_State *st_fx : decoder memory structure */
/* _ (Word16[]) exc_fx : adapt. excitation exc (Q_exc) */
/* _ (Word16[]) exc2_fx : adapt. excitation/total exc (Q_exc) */
/*--------------------------------------------------------------------------*/
/* RETURN ARGUMENTS : */
/* _ None */
/*==========================================================================*/
-void decod_audio_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/
- const Word16 *Aq, /* i : LP filter coefficient Q12*/
- Word16 *pitch_buf, /* o : floating pitch values for each subframe Q6*/
- Word16 *voice_factors, /* o : voicing factors Q15*/
- Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/
- Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/
- Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/
- Word16 *lsf_new /* i : ISFs at the end of the frame Qx*/
- ,
- Word16 *gain_buf /*Q14*/
-)
-{
- Word16 tmp_nb_bits_tot, pit_band_idx;
- Word16 code[4 * L_SUBFR];
- Word16 Diff_len, nb_subfr, i;
- Word16 nb_frame_flg;
- Word16 Es_pred = 0;
- Word16 Len, max_len;
- Word16 gsc_attack_flag;
-
- Word16 low_pit;
- Word16 last_bin;
- Word16 nbits;
-
- Word16 exc_wo_nf[L_FRAME16k];
- GSC_DEC_HANDLE hGSCDec;
- hGSCDec = st_fx->hGSCDec;
-
-
- /*---------------------------------------------------------------*
- * Initialization
- *---------------------------------------------------------------*/
- move16(); // corresponding to initialization of Es_pred
- Diff_len = 0;
- move16();
-
- /* decode GSC attack flag (used to reduce possible pre-echo) */
- gsc_attack_flag = (Word16) get_next_indice_fx( st_fx, 1 ); /* Q0 */
- move16();
-
- /* decode GSC SWB speech flag */
- test();
- IF( st_fx->coder_type != INACTIVE && GE_32( st_fx->total_brate, ACELP_13k20 ) )
- {
- st_fx->GSC_noisy_speech = (Word16) get_next_indice_fx( st_fx, 1 ); /* Q0 */
- move16();
- }
-
- /* safety check in case of bit errors */
- test();
- test();
- IF( st_fx->GSC_noisy_speech && LT_16( st_fx->bwidth, SWB ) && st_fx->GSC_IVAS_mode == 0 )
- {
- st_fx->BER_detect = 1; /* Q0 */
- move16();
- st_fx->GSC_noisy_speech = 0; /* Q0 */
- move16();
- }
-
- /* set bit-allocation */
- config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
-
- /*---------------------------------------------------------------*
- * Decode energy dynamics
- *---------------------------------------------------------------*/
-
- IF( EQ_16( st_fx->GSC_noisy_speech, 1 ) )
- {
- nb_subfr = NB_SUBFR; /* Q0 */
- move16();
- hGSCDec->cor_strong_limit = 0;
- move16();
- hGSCDec->noise_lev = NOISE_LEVEL_SP3; /* Q0 */
- move16();
- }
- ELSE
- {
- IF( LE_32( st_fx->core_brate, ACELP_8k00 ) )
- {
- hGSCDec->noise_lev = add( (Word16) get_next_indice_fx( st_fx, 2 ), NOISE_LEVEL_SP2 ); /* Q0 */
- move16();
- }
- ELSE
- {
- hGSCDec->noise_lev = add( (Word16) get_next_indice_fx( st_fx, 3 ), NOISE_LEVEL_SP0 ); /* Q0 */
- move16();
- }
-
- /*---------------------------------------------------------------*
- * Decode number of subframes
- *---------------------------------------------------------------*/
-
-
- hGSCDec->cor_strong_limit = 1; /* Q0 */
- move16();
- nb_subfr = SWNB_SUBFR;
- move16();
-
- IF( GE_32( st_fx->core_brate, ACELP_9k60 ) )
- {
- nbits = 1;
- move16();
- nb_frame_flg = (Word16) get_next_indice_fx( st_fx, nbits ); /* Q0 */
- move16();
-
- IF( s_and( nb_frame_flg, 0x1 ) == 0 )
- {
- nb_subfr = 2 * SWNB_SUBFR; /* Q0 */
- move16();
- hGSCDec->cor_strong_limit = 0;
- move16();
- }
- }
- }
-
- /*---------------------------------------------------------------*
- * Decode the last band where the adaptive (pitch) contribution is significant
- *---------------------------------------------------------------*/
-
- IF( LT_32( st_fx->core_brate, CFREQ_BITRATE ) )
- {
- nbits = 3; /* Q0 */
- move16();
- test();
- if ( LT_32( st_fx->core_brate, ACELP_9k60 ) && st_fx->coder_type == INACTIVE )
- {
- nbits = 1; /* Q0 */
- move16();
- }
- }
- ELSE
- {
- nbits = 4; /* Q0 */
- move16();
- }
- test();
- IF( LT_32( st_fx->core_brate, ACELP_9k60 ) && st_fx->coder_type != INACTIVE )
- {
- pit_band_idx = 1; /* Q0 */
- move16();
- }
- ELSE
- {
- pit_band_idx = (Word16) get_next_indice_fx( st_fx, nbits ); /* Q0 */
- move16();
- }
-
- IF( pit_band_idx != 0 )
- {
- IF( LT_32( st_fx->core_brate, ACELP_9k60 ) )
- {
- pit_band_idx = 7 + BAND1k2; /* Q0 */
- move16(); /* At low rate, if pitch model is chosen, then for to be use on extented and constant frequency range */
- }
- ELSE
- {
- pit_band_idx = add( pit_band_idx, BAND1k2 ); /* Q0 */
- }
-
- /* detect bit errors in the bitstream */
- IF( GT_16( pit_band_idx, 13 ) ) /* The maximum decodable index is 10 + BAND1k2 (3) = 13 */
- {
- pit_band_idx = 13; /* Q0 */
- move16();
- st_fx->BER_detect = 1; /* Q0 */
- move16();
- }
- Diff_len = mfreq_loc_div_25[pit_band_idx]; /* Q0 */
- move16();
- }
- hGSCDec->Last_GSC_pit_band_idx = pit_band_idx; /* Q0 */
- move16();
-
-
- /*--------------------------------------------------------------------------------------*
- * Decode adaptive (pitch) excitation contribution
- * Reset unvaluable part of the adaptive (pitch) excitation contribution
- *--------------------------------------------------------------------------------------*/
- IF( GT_16( pit_band_idx, BAND1k2 ) )
- {
- /*---------------------------------------------------------------*
- * Decode adaptive (pitch) excitation contribution
- *---------------------------------------------------------------*/
- test();
- IF( EQ_16( st_fx->GSC_noisy_speech, 1 ) && EQ_16( nb_subfr, NB_SUBFR ) )
- {
- Word16 indice;
- nbits = Es_pred_bits_tbl[BIT_ALLOC_IDX_fx( st_fx->core_brate, GENERIC, -1, -1 )]; /* Q0 */
- move16();
- if ( st_fx->element_mode > EVS_MONO )
- {
- nbits = 5;
- move16();
- }
-
- indice = get_next_indice_fx( st_fx, nbits ); /* Q0 */
-
- Es_pred_dec_fx( &Es_pred, indice, nbits, 0 );
- }
-
- dec_pit_exc_fx( st_fx, Aq, st_fx->coder_type, Es_pred, pitch_buf, code, exc, bwe_exc, nb_subfr, gain_buf );
-
- IF( LT_32( st_fx->core_brate, ACELP_9k60 ) )
- {
- minimum_fx( pitch_buf, shr( st_fx->L_frame, 6 ), &low_pit );
- low_pit = shr( low_pit, 6 ); /*Q6 -> Q0 */
-
- IF( LT_16( low_pit, 64 ) )
- {
- pit_band_idx = 9 + BAND1k2; /* Q0 */
- move16();
- if ( st_fx->bwidth == NB )
- {
- pit_band_idx = 7 + BAND1k2; /* Q0 */
- move16();
- }
- }
- ELSE IF( LT_16( low_pit, 128 ) )
- {
- pit_band_idx = 5 + BAND1k2; /* Q0 */
- move16();
- }
- ELSE
- {
- pit_band_idx = 3 + BAND1k2; /* Q0 */
- move16();
- }
-
- Diff_len = mfreq_loc_div_25[pit_band_idx]; /* Q0 */
- move16();
- hGSCDec->Last_GSC_pit_band_idx = pit_band_idx; /* Q0 */
- move16();
- }
-
- /*---------------------------------------------------------------*
- * DCT transform
- *---------------------------------------------------------------*/
- edct_16fx( exc, dct_epit, st_fx->L_frame, 7, st_fx->element_mode );
-
- /*---------------------------------------------------------------*
- * Reset unvaluable part of the adaptive (pitch) excitation contribution
- *---------------------------------------------------------------*/
-
- max_len = sub( st_fx->L_frame, Diff_len ); /* Q0 */
-
- if ( st_fx->bwidth == NB )
- {
- max_len = sub( 160, Diff_len ); /* Q0 */
- }
-
- Len = 80;
- move16();
- if ( LT_16( max_len, 80 ) )
- {
- Len = max_len; /* Q0 */
- move16();
- }
-
- test();
- IF( EQ_32( st_fx->core_brate, ACELP_8k00 ) && NE_16( st_fx->bwidth, NB ) )
- {
- FOR( i = 0; i < max_len; i++ )
- {
- dct_epit[i + Diff_len] = 0;
- move16();
- }
- }
- ELSE
- {
- FOR( i = 0; i < Len; i++ )
- {
- dct_epit[i + Diff_len] = mult_r( dct_epit[i + Diff_len], sm_table_fx[i] ); /* Qx */
- move16();
- }
-
- FOR( ; i < max_len; i++ )
- {
- dct_epit[i + Diff_len] = 0;
- move16();
- }
- }
- // PMT("in the rare case of 4 subfr, bfi_pitch_fx might be wrong")
- st_fx->bfi_pitch_fx = mean_fx( pitch_buf, nb_subfr ); /* Q6 */
- move16();
- st_fx->bfi_pitch_frame = st_fx->L_frame; /* Q0 */
- move16();
-
- Diff_len = add( Diff_len, 1 ); /* Q0 */
- st_fx->bpf_off = 0;
- move16();
- }
- ELSE
- {
- /* No adaptive (pitch) excitation contribution */
- st_fx->bpf_off = 1; /* Q0 */
- move16();
- set16_fx( dct_epit, 0, st_fx->L_frame );
-
- IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
- {
- set16_fx( pitch_buf, L_SUBFR16k * 64, NB_SUBFR16k );
- }
- ELSE
- {
- set16_fx( pitch_buf, L_SUBFR * 64, NB_SUBFR );
- }
-
- set16_fx( gain_buf, 0, NB_SUBFR16k );
-
- st_fx->bfi_pitch_fx = L_SUBFR * 64;
- move16();
- st_fx->bfi_pitch_frame = st_fx->L_frame; /* Q0 */
- move16();
- st_fx->lp_gainp_fx = 0;
- move16();
- st_fx->lp_gainc_fx = 0;
- move16();
- st_fx->tilt_code_fx = 0;
- move16();
- pit_band_idx = 0;
- move16();
- Diff_len = 0;
- move16();
- }
-
- /*--------------------------------------------------------------------------------------*
- * GSC decoder
- *--------------------------------------------------------------------------------------*/
-
- /* find the current total number of bits used */
-
- tmp_nb_bits_tot = st_fx->next_bit_pos; /* Q0 */
- move16();
-
- if ( st_fx->extl_brate > 0 )
- {
- /* subtract 1 bit for TBE/BWE BWE flag (bit counted in extl_brate) */
- tmp_nb_bits_tot = sub( tmp_nb_bits_tot, 1 ); /* Q0 */
- }
-
- test();
- if ( st_fx->coder_type == INACTIVE && LE_32( st_fx->core_brate, ACELP_9k60 ) )
- {
- tmp_nb_bits_tot = add( tmp_nb_bits_tot, 5 ); /* Q0 */
- }
-
- gsc_dec_fx( st_fx, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st_fx->coder_type, &last_bin, lsf_new, exc_wo_nf, st_fx->Q_exc );
- /*--------------------------------------------------------------------------------------*
- * iDCT transform
- *--------------------------------------------------------------------------------------*/
-
- edct_16fx( dct_epit, exc, st_fx->L_frame, 7, st_fx->element_mode );
- edct_16fx( exc_wo_nf, exc_wo_nf, st_fx->L_frame, 7, st_fx->element_mode );
- /*----------------------------------------------------------------------*
- * Remove potential pre-echo in case an onset has been detected
- *----------------------------------------------------------------------*/
-
- pre_echo_att_fx( &hGSCDec->Last_frame_ener_fx, exc, gsc_attack_flag, st_fx->Q_exc, st_fx->last_coder_type, st_fx->L_frame );
-
- /*--------------------------------------------------------------------------------------*
- * Update BWE excitation
- *--------------------------------------------------------------------------------------*/
-
- IF( st_fx->hBWE_TD != NULL )
- {
- set16_fx( voice_factors, 0, NB_SUBFR16k );
- IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
- {
- interp_code_4over2_fx( exc, bwe_exc, st_fx->L_frame );
- }
- ELSE
- {
- interp_code_5over2_fx( exc, bwe_exc, L_FRAME );
- }
- }
- /*--------------------------------------------------------------------------------------*
- * Updates
- *--------------------------------------------------------------------------------------*/
-
- Copy( exc, exc2, st_fx->L_frame ); /* Q_exc */
- Copy( exc_wo_nf, exc, st_fx->L_frame ); /* Q_exc */
- /*--------------------------------------------------------------------------------------*
- * Channel aware mode parameters
- *--------------------------------------------------------------------------------------*/
-
- set16_fx( st_fx->tilt_code_dec_fx, 0, NB_SUBFR16k );
-
- return;
-}
-
-/*=========================================================================*/
-/* FUNCTION : void decod_audio_ivas_fx(); */
-/*-------------------------------------------------------------------------*/
-/* PURPOSE : Decode audio (AC) frames */
-/*-------------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ (Word16[]) Aq : LP filter coefficient Q12 */
-/* _ (Word16) coder_type : coding type Q0 */
-/* _(Word16) Q_exc :Q format of excitation */
-/*-------------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ (Word16[]) pitch_buf_fx : Word16 pitch values for each subframe Q6*/
-/* _ (Word16[]) voice_factors_fx: frame error rate Q15 */
-/*--------------------------------------------------------------------------*/
-/* INPUT/OUTPUT ARGUMENTS : */
-/* Decoder_State *st_fx : decoder memory structure */
-/* _ (Word16[]) exc_fx : adapt. excitation exc (Q_exc) */
-/* _ (Word16[]) exc2_fx : adapt. excitation/total exc (Q_exc) */
-/*--------------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ None */
-/*==========================================================================*/
-void decod_audio_ivas_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/
- const Word16 *Aq, /* i : LP filter coefficient Q12*/
- Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/
- Word16 *voice_factors, /* o : voicing factors Q15*/
- Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/
- Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/
- Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/
- Word16 *lsf_new /* i : ISFs at the end of the frame Qx*/
- ,
- Word16 *gain_buf, /*Q14*/
+void decod_audio_fx(
+ Decoder_State *st_fx, /* i/o: decoder static memory */
+ Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/
+ const Word16 *Aq, /* i : LP filter coefficient Q12*/
+ Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/
+ Word16 *voice_factors, /* o : voicing factors Q15*/
+ Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/
+ Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/
+ Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/
+ Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/
+ Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/
const Word16 tdm_lp_reuse_flag, /* i : LPC reuse flag Q0*/
const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag Q0*/
const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag Q0*/
@@ -518,7 +103,7 @@ void decod_audio_ivas_fx(
}
/* set bit-allocation */
- config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
+ config_acelp1_fx( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
/*---------------------------------------------------------------*
* Decode energy dynamics
@@ -728,7 +313,7 @@ void decod_audio_ivas_fx(
Es_pred_dec_fx( &Es_pred, indice, nbits, 0 );
}
- dec_pit_exc_ivas_fx( st_fx, Aq, st_fx->coder_type, Es_pred, pitch_buf, code, exc, bwe_exc, nb_subfr, gain_buf, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf );
+ dec_pit_exc_fx( st_fx, Aq, st_fx->coder_type, Es_pred, pitch_buf, code, exc, bwe_exc, nb_subfr, gain_buf, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf );
IF( LT_32( st_fx->core_brate, ACELP_9k60 ) )
{
@@ -884,9 +469,11 @@ void decod_audio_ivas_fx(
}
}
+
Word16 Q_exc_old = st_fx->Q_exc;
move16();
- gsc_dec_ivas_fx( st_fx, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st_fx->coder_type, &last_bin, lsf_new, exc_wo_nf, &st_fx->Q_exc );
+ gsc_dec_fx( st_fx, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st_fx->coder_type, &last_bin, lsf_new, exc_wo_nf, &st_fx->Q_exc );
+
IF( NE_16( Q_exc_old, st_fx->Q_exc ) )
{
Q_exc_old = sub( Q_exc_old, st_fx->Q_exc );
@@ -966,248 +553,18 @@ void decod_audio_ivas_fx(
/* RETURN ARGUMENTS : */
/* _None */
/*==========================================================================*/
-void gsc_dec_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/
- const Word16 pit_band_idx, /* i : bin position of the cut-off frequency Q0*/
- const Word16 Diff_len, /* i : Lenght of the difference signal (before pure spectral) Q0*/
- const Word16 bits_used, /* i : Number of bit used before frequency Q Q0*/
- const Word16 nb_subfr, /* i : Number of subframe considered Q0*/
- const Word16 coder_type, /* i : coding type Q0*/
- Word16 *last_bin, /* i : last bin of bit allocation Q0*/
- const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/
- Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/
- Word16 Q_exc )
-{
- Word16 i, j, bit, nb_subbands, pvq_len;
- Word16 bitallocation_band[MBANDS_GN_BITALLOC16k];
- Word16 bitallocation_exc[2];
- Word16 Ener_per_bd_iQ[MBANDS_GN_BITALLOC16k];
- Word16 max_ener_band[MBANDS_GN_BITALLOC16k];
- Word16 exc_diffQ[L_FRAME16k];
- Word16 bits_per_bands[MBANDS_GN_BITALLOC16k];
- Word16 concat_out[L_FRAME16k];
- Word16 inpulses_fx[NB_SFM];
- Word16 imaxpulse_fx[NB_SFM];
- Word16 mean_gain;
- Word16 Mbands_gn = 16;
- Word16 Qexc_diffQ = Q_PVQ_OUT;
- Word32 L_tmp;
- Word16 Q_tmp;
- Word16 seed_init;
- GSC_DEC_HANDLE hGSCDec;
- hGSCDec = st_fx->hGSCDec;
- move16();
- move16();
-
- move16(); // for Mbands_gn
- move16(); // for Qexc_diffQ
- set16_fx( inpulses_fx, 0, NB_SFM );
- set16_fx( imaxpulse_fx, 0, NB_SFM );
-
- /*--------------------------------------------------------------------------------------*
- * Initialization
- *--------------------------------------------------------------------------------------*/
- bit = bits_used;
- move16();
-
- set16_fx( exc_diffQ, 0, st_fx->L_frame );
-
- /*--------------------------------------------------------------------------------------*
- * Gain decoding
- *--------------------------------------------------------------------------------------*/
-
- test();
- IF( st_fx->bfi || st_fx->BER_detect )
- {
- /* copy old gain */
- Copy( hGSCDec->old_y_gain_fx, Ener_per_bd_iQ, Mbands_gn ); /* Q_old_gain */
- mean_gain = mult_r( st_fx->lp_gainc_fx, 3277 ); /*Q3*/
- FOR( i = 0; i < Mbands_gn; i++ )
- {
- Ener_per_bd_iQ[i] = add( Ener_per_bd_iQ[i], shl( mean_gain, 9 ) ); /*Q12*/
- move16();
- }
-
- st_fx->lp_gainc_fx = mult_r( st_fx->lp_gainc_fx, 32112 ); /*Q3*/
- move16();
- }
- ELSE
- {
- mean_gain = gsc_gaindec_fx( st_fx, Ener_per_bd_iQ, st_fx->core_brate, hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q12 */
-
- st_fx->lp_gainc_fx = mult_r( 640, mean_gain ); /*10 in Q6 x Q12 -> lp_gainc in Q3 */
- move16();
- }
-
- *last_bin = 0;
- move16();
- test();
- IF( EQ_32( st_fx->core_brate, ACELP_8k00 ) && st_fx->bwidth != NB )
- {
- bitallocation_exc[0] = 0;
- move16();
- bitallocation_exc[1] = 0;
- move16();
- }
-
- set16_fx( bitallocation_band, 0, MBANDS_GN );
-
- test();
- IF( ( EQ_16( st_fx->bfi, 1 ) ) || st_fx->BER_detect )
- {
- /*--------------------------------------------------------------------------------------*
- * Copy old spectrum
- * reduce spectral dynamic
- * save spectrum
- *--------------------------------------------------------------------------------------*/
- test();
- IF( EQ_16( st_fx->last_good, INACTIVE_CLAS ) || EQ_16( st_fx->Last_GSC_noisy_speech_flag, 1 ) )
- {
- FOR( i = 0; i < st_fx->L_frame; i++ )
- {
- L_tmp = L_shr( L_mult( Random( &hGSCDec->seed_tcx ), 26214 ), 5 ); /*Q10*/
- L_tmp = L_mac( L_tmp, hGSCDec->Last_GSC_spectrum_fx[i], 6554 ); /* Q10 */
- hGSCDec->Last_GSC_spectrum_fx[i] = round_fx( L_tmp ); /*Q10*/
- move16();
- }
- }
-
- Copy( hGSCDec->Last_GSC_spectrum_fx, exc_diffQ, st_fx->L_frame ); /* Q10 */
-
- FOR( i = 0; i < st_fx->L_frame; i++ )
- {
- hGSCDec->Last_GSC_spectrum_fx[i] = mult_r( hGSCDec->Last_GSC_spectrum_fx[i], 24576 ); /*Q10*/
- move16();
- }
- }
- ELSE
- {
- /*--------------------------------------------------------------------------------------*
- * PVQ decoder
- *--------------------------------------------------------------------------------------*/
-
- bands_and_bit_alloc_fx( hGSCDec->cor_strong_limit, hGSCDec->noise_lev, st_fx->core_brate, Diff_len, bit, &bit, Ener_per_bd_iQ,
- max_ener_band, bits_per_bands, &nb_subbands, NULL, NULL, &pvq_len, coder_type, st_fx->bwidth, st_fx->GSC_noisy_speech,
- st_fx->L_frame, st_fx->element_mode, st_fx->GSC_IVAS_mode );
-
- {
- pvq_core_dec_fx( st_fx, gsc_sfm_start, gsc_sfm_end, gsc_sfm_size, concat_out, &Q_tmp, bit, nb_subbands, bits_per_bands, NULL, inpulses_fx, imaxpulse_fx, ACELP_CORE );
- Scale_sig( concat_out, gsc_sfm_end[nb_subbands - 1], sub( Q_PVQ_OUT, Q_tmp ) ); /* Q_PVQ_OUT */
- }
- seed_init = 0;
- move16();
-
- /* Reorder Q bands */
- FOR( j = 0; j < nb_subbands; j++ )
- {
- Copy( concat_out + shl( j, 4 ), exc_diffQ + shl( max_ener_band[j], 4 ), 16 ); /* Q_PVQ_OUT */
-
- *last_bin = s_max( *last_bin, max_ener_band[j] ); /* Q0 */
- move16();
-
- bitallocation_band[max_ener_band[j]] = 1; /* Q0 */
- move16();
-
- seed_init = add( seed_init, inpulses_fx[j] ); /* Q0 */
- }
- test();
- IF( NE_16( st_fx->last_coder_type, AUDIO ) /* First audio frame */
- && NE_16( st_fx->last_coder_type, UNVOICED ) ) /* last_coder_type == INACTIVE is overwritten in update_dec to UNVOICED */
- {
- FOR( j = 0; j < nb_subbands * 16; j++ )
- {
- IF( concat_out[j] > 0 )
- {
- seed_init = extract_l( L_shl( seed_init, 3 ) ); /* Q0 */
- }
- if ( concat_out[j] < 0 )
- {
- seed_init = add( seed_init, 3 ); /* Q0 */
- move16();
- }
- }
-
- hGSCDec->seed_tcx = seed_init; /* Q0 */
- move16();
- }
- test();
- IF( EQ_32( st_fx->core_brate, ACELP_8k00 ) && st_fx->bwidth != NB )
- {
- if ( exc_diffQ[L_FRAME8k - 2] != 0 )
- {
- bitallocation_exc[0] = 1; /* Q0 */
- move16();
- }
-
- if ( exc_diffQ[L_FRAME8k - 1] != 0 )
- {
- bitallocation_exc[1] = 1; /* Q0 */
- move16();
- }
- }
-
- Copy( exc_diffQ, hGSCDec->Last_GSC_spectrum_fx, st_fx->L_frame ); /* Q_PVQ_OUT */
-
- /*--------------------------------------------------------------------------------------*
- * Skip adaptive (pitch) contribution frequency band (no noise added over the time contribution)
- * Find x pulses between 1.6-3.2kHz to code in the spectrum of the residual signal
- * Gain is based on the inter-correlation gain between the pulses found and residual signal
- *--------------------------------------------------------------------------------------*/
-
- freq_dnw_scaling_fx( hGSCDec->cor_strong_limit, st_fx->coder_type, hGSCDec->noise_lev, st_fx->core_brate, exc_diffQ, Qexc_diffQ, st_fx->L_frame );
- }
-
- /*--------------------------------------------------------------------------------------*
- * Estimate noise level
- *--------------------------------------------------------------------------------------*/
-
- highband_exc_dct_in_fx( st_fx->core_brate, mfreq_bindiv_loc, *last_bin, Diff_len, hGSCDec->noise_lev, pit_band_idx, exc_diffQ,
- &hGSCDec->seed_tcx, Ener_per_bd_iQ, nb_subfr, exc_dct_in, st_fx->last_coder_type, bitallocation_band, lsf_new,
- hGSCDec->last_exc_dct_in_fx, &hGSCDec->last_ener_fx, hGSCDec->last_bitallocation_band, bitallocation_exc, st_fx->bfi, coder_type,
- st_fx->bwidth, exc_wo_nf, Qexc_diffQ, Q_exc, st_fx->GSC_noisy_speech, hGSCDec->lt_ener_per_band_fx, st_fx->L_frame, st_fx->element_mode, st_fx->GSC_IVAS_mode );
-
- exc_dct_in[0] = 0;
- move16();
-
- return;
-}
-
-/*==========================================================================*/
-/* FUNCTION : void gsc_dec_ivas_fx () */
-/*--------------------------------------------------------------------------*/
-/* PURPOSE : Generic audio signal decoder */
-/*--------------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ (Word16) pit_band_idx : bin position of the cut-off frequency Q0 */
-/* _ (Word16) Diff_len : Lenght of the difference signal Q0 */
-/* _ (Word16) coder_type : coding type Q0 */
-/* _ (Word16) bits_used : Number of bit used before frequency Q Q0 */
-/* _ (Word16) nb_subfr : Number of subframe considered Q0 */
-/* _ (Word16) Qexc : Q format of exc_dct_in */
-/*--------------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ None */
-/*--------------------------------------------------------------------------*/
-/* INPUT/OUTPUT ARGUMENTS : */
-/* Decoder_State *st_fx:Decoder State Structure */
-/* _ (Word16[]) exc_dct_in : dctof pitch-only excitation / total excitation Qexc*/
-/*--------------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _None */
-/*==========================================================================*/
-void gsc_dec_ivas_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/
+void gsc_dec_fx(
+ Decoder_State *st_fx, /* i/o: State structure */
+ Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/
const Word16 pit_band_idx, /* i : bin position of the cut-off frequency ` Q0*/
const Word16 Diff_len, /* i : Lenght of the difference signal (before pure spectral) Q0*/
const Word16 bits_used, /* i : Number of bit used before frequency Q Q0*/
const Word16 nb_subfr, /* i : Number of subframe considered Q0*/
const Word16 coder_type, /* i : coding type Q0*/
Word16 *last_bin, /* i : last bin of bit allocation Q0*/
- const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/
- Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/
+ const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/
+ Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/
Word16 *Q_exc )
{
Word16 i, j, bit, nb_subbands, pvq_len;
@@ -1297,7 +654,15 @@ void gsc_dec_ivas_fx(
{
i--;
}
- mean_gain = gsc_gaindec_ivas_fx( st_fx, Ener_per_bd_iQ, brate_intermed_tbl[i], hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q3 */
+
+ IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
+ {
+ mean_gain = gsc_gaindec_fx( st_fx, Ener_per_bd_iQ, brate_intermed_tbl[i], hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q3 */
+ }
+ ELSE
+ {
+ mean_gain = gsc_gaindec_ivas_fx( st_fx, Ener_per_bd_iQ, brate_intermed_tbl[i], hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q3 */
+ }
st_fx->lp_gainc_fx = mult_r( 640, mean_gain ); /*10 in Q6 x Q12 -> lp_gainc in Q3 */
move16();
diff --git a/lib_dec/hf_synth_fx.c b/lib_dec/hf_synth_fx.c
index 94c7d4c6282edf47fa8278add6362ece82625d00..27d768f631bb7b007adeeae34f78ffe698833ad7 100644
--- a/lib_dec/hf_synth_fx.c
+++ b/lib_dec/hf_synth_fx.c
@@ -21,6 +21,7 @@
static void filt_6k_7k_scale_fx( Word16 signal[], Word16 lg, Word16 mem[], Word16 fact, Word16 exp );
static void hf_synthesis_fx( ZERO_BWE_DEC_HANDLE hBWE_zero, const Word32 core_brate, const Word16 output_subfr, const Word16 Aq[], const Word16 exc[], const Word16 Q_exc, Word16 synth[], Word16 synth16k[], const Word16 Q_syn );
+static void hf_synthesis_ivas_fx( ZERO_BWE_DEC_HANDLE hBWE_zero, const Word32 core_brate, const Word16 output_subfr, const Word16 Aq[], const Word16 exc[], const Word16 Q_exc, Word16 synth[], Word16 synth16k[], const Word16 Q_syn );
static void hf_synthesis_amr_wb_fx( const Word32 core_brate, const Word16 output_subfr, const Word16 Ap[], Word16 exc16k[], Word16 synth_out[], Word16 *mem_syn_hf, Word16 *delay_syn_hf, Word16 *mem_hp_interp, Word16 p_r, Word16 HF_corr_gain, Word16 til, Word16 voice_factors, const Word16 exc[], const Word16 Q_exc, const Word16 Q_out, Word16 qhf );
static void envelope_fx( AMRWB_IO_DEC_HANDLE hAmrwb_IO, const Word32 core_brate, const Word16 Aq[], Word16 Ap[], Word16 *r, Word16 tilt0, Word16 tilt, Word16 voice_factor );
static void AdaptiveStartBand_fx( Word16 *start_band, const Word32 rate, const Word16 *lsf, const Word16 voicing_fac, const Word16 clas, Word16 *voicing_flag, Word16 *start_band_old, Word32 *OptCrit_old );
@@ -182,11 +183,7 @@ static void hf_synthesis_fx(
* calculate energy scaling factor to respect tilt of synth12k8
* (tilt: 1=voiced, -1=unvoiced)
*-----------------------------------------------------------------*/
-#ifdef EVS_MONO
hp400_12k8_fx( synth, L_SUBFR, hBWE_zero->mem_hp400_fx );
-#else
- hp400_12k8_ivas_fx( synth, L_SUBFR, hBWE_zero->mem_hp400_fx );
-#endif
/* i: mem_hp400 in Q_syn */
/* i: synth in Q_syn */
/* o: synth in Q_syn-3 */
@@ -295,7 +292,213 @@ static void hf_synthesis_fx(
{
Copy( HF_syn, upsampled_HF_syn, L_SUBFR16k ); /* Q_syn */
}
+ Vr_add( synth16k, upsampled_HF_syn, synth16k, output_subfr );
+
+ return;
+}
+
+void hf_synth_ivas_fx(
+ ZERO_BWE_DEC_HANDLE hBWE_zero, /* i/o: handle to 0 bit BWE parameters */
+ const Word32 core_brate, /* i : core bitrate Q0*/
+ const Word16 output_frame, /* i : output frame length Q0*/
+ const Word16 *Aq, /* i : quantized Az Q12*/
+ const Word16 *exc, /* i : excitation at 12.8 kHz Q_exc*/
+ Word16 *synth, /* i : 12.8kHz synthesis signal Q_syn2*/
+ Word16 *synth16k, /* o : 16kHz synthesis signal Q_syn2*/
+ const Word16 Q_exc, /* i : excitation scaling */
+ const Word16 Q_syn2 /* i : synthesis scaling */
+)
+{
+ const Word16 *p_Aq;
+ Word16 i_subfr, output_subfr;
+
+ output_subfr = shr( output_frame, 2 );
+
+ p_Aq = Aq; /* Q12 */
+ FOR( i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR )
+ {
+ hf_synthesis_ivas_fx( hBWE_zero, core_brate, output_subfr, p_Aq, &exc[i_subfr], Q_exc, &synth[i_subfr], &synth16k[i_subfr * output_subfr / L_SUBFR], Q_syn2 );
+
+ p_Aq += ( M + 1 ); /* Q12 */
+ }
+
+ return;
+}
+
+static void hf_synthesis_ivas_fx(
+ ZERO_BWE_DEC_HANDLE hBWE_zero,
+ const Word32 core_brate, /* i : core bitrate Q0*/
+ const Word16 output_subfr, /* i : output sub-frame length Q0*/
+ const Word16 Aq[], /* i : quantized Az Q12*/
+ const Word16 exc[], /* i : excitation at 12.8 kHz Q_exc*/
+ const Word16 Q_exc, /* i : excitation scaling */
+ Word16 synth[], /* i : 12.8kHz synthesis signal Q_syn*/
+ Word16 synth16k[], /* i/o: 16kHz synthesis signal Q_syn*/
+ const Word16 Q_syn /* i : synthesis scaling */
+)
+{
+ Word16 i, s;
+ Word16 HF_syn[L_SUBFR16k], upsampled_HF_syn[L_FRAME48k / NB_SUBFR];
+ Word16 HF_exc[L_SUBFR16k];
+ Word16 exp1, exp2, scale, tmp, ener, Q_tmp, Q_ener, sft;
+ Word32 L_tmp, ONE, P_ONE;
+ Word16 Ap[M16k + 1];
+ Word64 prod;
+
+ /*-----------------------------------------------------------------*
+ * generate white noise vector
+ *-----------------------------------------------------------------*/
+
+ Random_Fill( &hBWE_zero->seed2, L_SUBFR16k, HF_exc, 3 ); /* 3 = Shift Right by 3 */
+
+ /* o: HF_exc in Q(-3) */
+
+ /*-----------------------------------------------------------------*
+ * calculate energy scaling factor so that white noise would have the
+ * same energy as exc12k8
+ *-----------------------------------------------------------------*/
+
+ /*ener = sum2_f( exc, L_SUBFR ) + 0.01f*/
+ ener = extract_h( Dot_product12( exc, exc, L_SUBFR, &exp2 ) );
+ exp2 = sub( exp2, add( Q_exc, Q_exc ) ); // ener exponent
+
+ /*tmp = round_fx(Dot_product12(HF_exc, HF_exc, output_subfr, &exp1)); */
+ L_tmp = Dot_product12( HF_exc, HF_exc, L_SUBFR16k, &exp1 );
+ tmp = round_fx( L_tmp );
+ exp1 = add( exp1, 6 ); /* tmp exponent */
+
+ ener = shr( ener, 1 ); /* to avoid the assertion in div_s() further*/
+ exp2 = add( exp2, 1 );
+
+ tmp = div_s( ener, tmp );
+ exp1 = sub( exp2, exp1 );
+
+ scale = Sqrt16( tmp, &exp1 ); /* scale exponent = exp1 */
+
+ /*-----------------------------------------------------------------*
+ * calculate energy scaling factor to respect tilt of synth12k8
+ * (tilt: 1=voiced, -1=unvoiced)
+ *-----------------------------------------------------------------*/
+
+ hp400_12k8_ivas_fx( synth, L_SUBFR, hBWE_zero->mem_hp400_fx );
+
+ /* i: mem_hp400 in Q_syn */
+ /* i: synth in Q_syn */
+ /* o: synth in Q_syn-3 */
+ prod = W_mac0_16_16( 1L, synth[0], synth[0] ); /* 2*(Q_syn-3) */
+ FOR( i = 1; i < L_SUBFR; i++ )
+ {
+ prod = W_mac0_16_16( prod, synth[i], synth[i] ); /* 2*(Q_syn-3) */
+ }
+ sft = W_norm( prod );
+ ener = extract_h( W_extract_h( W_shl( prod, sft ) ) );
+ Q_ener = sub( add( shl( sub( Q_syn, 3 ), 1 ), sft ), 48 );
+ prod = W_mac0_16_16( 1L, synth[1], synth[0] ); /* 2*(Q_syn-3) */
+ FOR( i = 2; i < L_SUBFR; i++ )
+ {
+ prod = W_mac0_16_16( prod, synth[i], synth[i - 1] ); /* 2*(Q_syn-3) */
+ }
+ sft = sub( W_norm( prod ), 1 );
+ tmp = extract_h( W_extract_h( W_shl( prod, sft ) ) );
+ Q_tmp = sub( add( shl( sub( Q_syn, 3 ), 1 ), sft ), 48 );
+
+ tmp = s_max( 0, tmp );
+ IF( tmp > 0 )
+ {
+ tmp = div_s( tmp, ener );
+ Q_tmp = add( 15, sub( Q_tmp, Q_ener ) );
+ }
+
+ /*-----------------------------------------------------------------*
+ * modify energy of white noise according to synthesis tilt
+ *-----------------------------------------------------------------*/
+ /* tmp = 1.0 - fac */
+ ONE = L_shl( 1, Q_tmp );
+ P_ONE = L_shl( 3277 /* 0.1 in Q15 */, sub( Q_tmp, 15 ) );
+ L_tmp = L_msu0( ONE, tmp, 1 );
+ test();
+ if ( core_brate == FRAME_NO_DATA || EQ_32( core_brate, SID_2k40 ) )
+ {
+ /* emphasize HF noise in CNG */
+ /*fac *= 2.0f;*/
+ L_tmp = L_add( L_tmp, L_tmp );
+ }
+ L_tmp = L_max( L_tmp, P_ONE );
+ L_tmp = L_min( L_tmp, ONE );
+
+ sft = norm_l( L_tmp );
+ L_tmp = L_shl( L_tmp, sft );
+
+ tmp = round_fx( L_tmp );
+ Q_tmp = sub( add( Q_tmp, sft ), 16 );
+
+ /*scale *= fac;*/
+ tmp = mult_r( scale, tmp ); /* Q = (15 - exp1) + Q_tmp - 15 */
+ Q_tmp = sub( Q_tmp, exp1 );
+ /*-----------------------------------------------------------------*
+ * modify HF excitation according to both calculated scaling factors
+ * high pass filtering (0.94ms of delay)
+ *-----------------------------------------------------------------*/
+
+ exp2 = sub( hBWE_zero->memExp1, exp1 );
+ hBWE_zero->memExp1 = exp1;
+ move16();
+
+ filt_6k_7k_scale_fx( HF_exc, L_SUBFR16k, hBWE_zero->mem_hf_fx, tmp, exp2 );
+ /* i: HF_exc in Q(-3) */
+ /* o: HF_exc in ((-3) + Q_tmp - 17) */
+ /* o: hBWE_zero->mem_hf_fx in Q(HF_exc)-2 */
+
+ /*-----------------------------------------------------------------*
+ * synthesis of noise: 4.8kHz..5.6kHz --> 6kHz..7kHz
+ *-----------------------------------------------------------------*/
+
+ /*weight_a( Aq, Ap, 0.6f, M );*/
+ weight_a_lc_fx( Aq, Ap, Gamma_19661_Tbl_fx, M );
+ /* o: Ap in Q14 */
+
+ Syn_filt_s( 0, Ap, M, HF_exc, HF_syn, L_SUBFR16k, hBWE_zero->mem_syn_hf_fx, 1 );
+ /* o: HF_syn in same Q as HF_exc */
+ /* o: mem_syn_hf_fx same Q as HF_syn */
+
+ Scale_sig( HF_syn, L_SUBFR16k, ( add( Q_syn, exp1 ) ) ); /* bring HF_syn to (Q_syn+exp1) */
+
+ /*-----------------------------------------------------------------*
+ * add filtered HF noise to speech synthesis
+ *-----------------------------------------------------------------*/
+
+ /* delay by 5 samples @16kHz to compensate CLDFB resampling delay (20samples) and HP filtering delay (roughly 15 samples) */
+ delay_signal_fx( HF_syn, L_SUBFR16k, hBWE_zero->delay_syn_hf_fx, NS2SA_FX2( 16000, DELAY_CLDFB_NS ) - 15 );
+
+ /* interpolate the HF synthesis */
+ IF( EQ_16( output_subfr, L_SUBFR48k ) ) /* 48kHz sampled output */
+ {
+ s = s_max( s_min( sub( s_min( Find_Max_Norm16( HF_syn, L_SUBFR16k ), Find_Max_Norm16( hBWE_zero->mem_hp_interp_fx, INTERP_3_1_MEM_LEN - 3 ) ), 3 ),
+ sub( Find_Max_Norm16( hBWE_zero->mem_hp_interp_fx + INTERP_3_1_MEM_LEN - 3, 3 ), 1 ) ),
+ 0 );
+ Scale_sig( HF_syn, L_SUBFR16k, s ); /* Q_syn+exp1+s */
+ Scale_sig( hBWE_zero->mem_hp_interp_fx, INTERP_3_1_MEM_LEN, s ); /* Qx + s */
+ interpolate_3_over_1_allpass_fx( HF_syn, L_SUBFR16k, upsampled_HF_syn, hBWE_zero->mem_hp_interp_fx );
+ Scale_sig( upsampled_HF_syn, 3 * L_SUBFR16k, -s ); /* Q_syn + exp1 + s */
+ Scale_sig( hBWE_zero->mem_hp_interp_fx, INTERP_3_1_MEM_LEN, -s ); /* Qx */
+ Scale_sig( HF_syn, L_SUBFR16k, -s ); /* Q_syn+exp1 */
+ Scale_sig( upsampled_HF_syn, L_SUBFR48k, -1 );
+ }
+ ELSE IF( EQ_16( output_subfr, L_SUBFR32k ) ) /* 32kHz sampled output */
+ {
+ s = s_max( sub( s_min( Find_Max_Norm16( HF_syn, L_SUBFR16k ), Find_Max_Norm16( hBWE_zero->mem_hp_interp_fx, 2 * ALLPASSSECTIONS_STEEP ) ), 2 ), 0 );
+ Scale_sig( HF_syn, L_SUBFR16k, s ); /* Q_syn+exp1+s */
+ Scale_sig( hBWE_zero->mem_hp_interp_fx, 2 * ALLPASSSECTIONS_STEEP, s ); /* Qx + s */
+ Interpolate_allpass_steep_fx( HF_syn, hBWE_zero->mem_hp_interp_fx, L_SUBFR16k, upsampled_HF_syn );
+ Scale_sig( upsampled_HF_syn, 2 * L_SUBFR16k, -s ); /* Q_syn + exp1 */
+ Scale_sig( hBWE_zero->mem_hp_interp_fx, 2 * ALLPASSSECTIONS_STEEP, -s ); /* Qx */
+ Scale_sig( HF_syn, L_SUBFR16k, -s ); /* Q_syn+exp1 */
+ }
+ ELSE /* 16kHz sampled output */
+ {
+ Copy( HF_syn, upsampled_HF_syn, L_SUBFR16k ); /* Q_syn */
+ }
Vr_add( synth16k, upsampled_HF_syn, synth16k, output_subfr );
return;
diff --git a/lib_dec/hq_classifier_dec_fx.c b/lib_dec/hq_classifier_dec_fx.c
index 5ff5dec58465b055c583514bb15712e079cbb800..c8dac0a0bc934199a60e6bf05c50e91235d4e3fc 100644
--- a/lib_dec/hq_classifier_dec_fx.c
+++ b/lib_dec/hq_classifier_dec_fx.c
@@ -99,17 +99,11 @@ Word16 hq_classifier_dec_fx( /* o : Consumed bits
max_brate = HQ_48k; /* Q0 */
move32();
}
-#ifndef SOLVED_COMP_ENC_DEC
test();
test();
test();
test();
IF( ( EQ_16( length, L_SPEC32k ) || EQ_16( length, L_FRAME48k ) ) && LE_32( core_brate, max_brate ) )
-#else
- /*_DIFF_FLOAT_FIX_ -> could this modification break the interoperability with EVS ?? */
- test();
- IF( ( EQ_16( length, L_SPEC32k ) || EQ_16( length, L_SPEC48k ) ) && LE_32( core_brate, max_brate ) )
-#endif
{
*hqswb_clas = get_next_indice( st_fx, 2 ); /* Q0 */
move16();
@@ -147,11 +141,7 @@ Word16 hq_classifier_dec_fx( /* o : Consumed bits
*hqswb_clas = HQ_GEN_SWB; /* Q0 */
move16();
}
-#ifndef SOLVED_COMP_ENC_DEC
ELSE IF( EQ_16( length, L_FRAME48k ) )
-#else
- ELSE IF( EQ_16( length, L_SPEC48k ) )
-#endif
{
*hqswb_clas = HQ_GEN_FB; /* Q0 */
move16();
diff --git a/lib_dec/hq_core_dec_fx.c b/lib_dec/hq_core_dec_fx.c
index 4d1ef677471054485e43ff9c2a27c3b2058f86d3..3c2cd5a8092c7c385a6916eae760689d1996e8b8 100644
--- a/lib_dec/hq_core_dec_fx.c
+++ b/lib_dec/hq_core_dec_fx.c
@@ -78,22 +78,10 @@ void hq_core_dec_fx(
/*num_bits = (short)(st->total_brate / 50); */
Mpy_32_16_ss( st_fx->total_brate, 5243, &L_tmp, &lsb ); /* 5243 is 1/50 in Q18. (0+18-15=3) */
num_bits = extract_l( L_shr( L_tmp, 3 ) ); /*Q0 */
-
-#ifdef ADD_IVAS_HQ_CODE_L_SPEC
- /* Set default spectrum length */
- L_spec = l_spec_tbl[st_fx->bwidth];
-#endif
IF( !st_fx->bfi )
{
IF( EQ_16( core_switching_flag, 1 ) )
{
-#ifdef ADD_IVAS_HQ_CODE_L_SPEC
- IF( NE_16( st_fx->element_mode, EVS_MONO ) )
- {
- L_spec = l_spec_ext_tbl[st_fx->bwidth];
- }
- ELSE
-#endif
{
core_switching_hq_prepare_dec_fx( st_fx, &num_bits, output_frame );
@@ -105,12 +93,6 @@ void hq_core_dec_fx(
}
}
}
-#ifdef ADD_IVAS_HQ_CODE
- IF( hq_recovery_flag )
- {
- acelp_plc_mdct_transition( st );
- }
-#endif
/* subtract signalling bits */
num_bits = sub( num_bits, st_fx->next_bit_pos ); /* Q0 */
@@ -145,9 +127,7 @@ void hq_core_dec_fx(
/* set inner frame (== coded bandwidth) length */
inner_frame = inner_frame_tbl[st_fx->bwidth]; /* Q0 */
move16();
-#ifndef ADD_IVAS_HQ_CODE_L_SPEC
L_spec = inner_frame; /* Q0 */
-#endif
move16();
IF( st_fx->bfi == 0 )
@@ -233,12 +213,6 @@ void hq_core_dec_fx(
move16();
}
-#ifdef ADD_IVAS_HQ_CODE
- test();
- test();
- test();
- IF( EQ_16( st_fx->element_mode, EVS_MONO ) || ( !core_switching_flag && !hq_recovery_flag ) )
-#endif
{
/* scaling (coefficients are in nominal level) */
IF( NE_16( output_frame, NORM_MDCT_FACTOR ) )
@@ -322,59 +296,6 @@ void hq_core_dec_fx(
* Overlap-add
* Pre-echo reduction
*--------------------------------------------------------------------------*/
-#ifdef ADD_IVAS_HQ_CODE
- if ( st->element_mode > EVS_MONO && ( core_switching_flag || hq_recovery_flag ) )
- {
- /* Initializations for TCX MDCT framework, to be used for switching frame */
- tcx_cfg = st->hTcxCfg;
- L_frameTCX_glob = hTcxDec->L_frameTCX;
- L_frame_glob = st->L_frame;
- L_spec = hTcxDec->L_frameTCX;
- st->fscale = sr2fscale( st->sr_core );
- fscaleFB = sr2fscale( st->output_Fs );
- encoderLookahead = ( L_LOOK_12k8 * st->fscale ) / FSCALE_DENOM;
- encoderLookaheadFB = ( L_LOOK_12k8 * fscaleFB ) / FSCALE_DENOM;
- mdctWindowLength = getMdctWindowLength( st->fscale );
- mdctWindowLengthFB = (int16_t) ( mdctWindowLength * st->output_Fs / st->sr_core );
- if ( core_switching_flag )
- {
- tcx_cfg->tcx_last_overlap_mode = TRANSITION_OVERLAP;
- tcx_cfg->tcx_curr_overlap_mode = FULL_OVERLAP;
- }
- else
- {
- tcx_cfg->tcx_last_overlap_mode = ALDO_WINDOW;
- tcx_cfg->tcx_curr_overlap_mode = ALDO_WINDOW;
- st->last_core = HQ_CORE; /* Needed to decode non-transition frame */
- }
-
- init_tcx_window_cfg( tcx_cfg, st->sr_core, st->output_Fs, st->L_frame, hTcxDec->L_frameTCX, encoderLookahead, encoderLookaheadFB, mdctWindowLength, mdctWindowLengthFB, st->element_mode );
-
- init_tcx_info( st, L_frame_glob, L_frameTCX_glob, 0, st->bfi, &tcx_offset, &tcx_offsetFB, &L_frame, &L_frameTCX, &left_rect, &L_spec );
-
- overlap = tcx_cfg->tcx_mdct_window_length;
- overlapFB = tcx_cfg->tcx_mdct_window_lengthFB;
- index = tcx_cfg->tcx_last_overlap_mode;
-
- /* LB synthesis */
- IMDCT_fx( t_audio_q, hTcxDec->syn_Overl, hTcxDec->syn_Overl_TDAC, wtda_audio, tcx_cfg->tcx_aldo_window_1_trunc, tcx_cfg->tcx_aldo_window_2, tcx_cfg->tcx_mdct_window_half, tcx_cfg->tcx_mdct_window_minimum, tcx_cfg->tcx_mdct_window_trans, tcx_cfg->tcx_mdct_window_half_length, tcx_cfg->tcx_mdct_window_min_length, index,
- MDCT_IV, left_rect, tcx_offset, overlap, L_frame, L_frameTCX, max( L_frameTCX, L_spec ) >> 1, L_frame_glob, 0, st->bfi, hHQ_core->old_outLB, 0, st, 0, acelp_zir );
-
- mvr2r( wtda_audio + ( overlap >> 1 ) - tcx_offset, output, L_frame_glob );
-
- /* FB synthesis */
- IMDCT_fx( t_audio_q, hTcxDec->syn_OverlFB, hTcxDec->syn_Overl_TDACFB, wtda_audio, tcx_cfg->tcx_aldo_window_1_FB_trunc, tcx_cfg->tcx_aldo_window_2_FB, tcx_cfg->tcx_mdct_window_halfFB, tcx_cfg->tcx_mdct_window_minimumFB, tcx_cfg->tcx_mdct_window_transFB, tcx_cfg->tcx_mdct_window_half_lengthFB, tcx_cfg->tcx_mdct_window_min_lengthFB, index,
- MDCT_IV, left_rect, tcx_offsetFB, overlapFB, L_frameTCX, L_frameTCX, max( L_frameTCX, L_spec ) >> 1, L_frameTCX_glob, 0, st->bfi, hHQ_core->old_out, 1, st, FSCALE_DENOM * L_frameTCX_glob / L_frame_glob, acelp_zir );
-
- mvr2r( wtda_audio + ( overlapFB >> 1 ) - tcx_offsetFB, synth, L_frameTCX_glob );
-
- if ( !core_switching_flag )
- {
- st->last_core = ACELP_CORE; /* Restore last core */
- }
- }
- else
-#endif
{
test();
IF( EQ_16( output_frame, L_FRAME8k ) || st_fx->bfi == 0 )
@@ -392,24 +313,6 @@ void hq_core_dec_fx(
move16();
}
}
-#ifdef ADD_IVAS_HQ_CODE
- if ( st->element_mode > EVS_MONO )
- {
- if ( st->bfi )
- {
- /* Rough resampling, but reduces energy loss in case of switch to ACELP in first good frame */
- lerp( t_audio_q, wtda_audio_LB, st->L_frame, inner_frame );
- v_multc( t_audio_q, 0.5f, wtda_audio_LB, st->L_frame );
- }
- else
- {
- /* LB synthesis for potential switch to ACELP */
- ener_match = (float) sqrt( (float) st->L_frame / (float) output_frame );
- v_multc( t_audio_q, ener_match, t_audio_q, inner_frame );
- inverse_transform( t_audio_q, wtda_audio_LB, is_transient, st->L_frame, inner_frame, st->element_mode );
- }
- }
-#endif
IF( EQ_16( output_frame, L_FRAME8k ) )
{
test();
@@ -465,13 +368,6 @@ void hq_core_dec_fx(
window_ola_fx( wtda_audio, synth, Q_synth, hHQ_core->old_out_fx, &hHQ_core->Q_old_wtda, output_frame,
st_fx->hTcxCfg->tcx_last_overlap_mode, st_fx->hTcxCfg->tcx_curr_overlap_mode, st_fx->prev_bfi && !hHQ_core->ph_ecu_active, hHQ_core->oldHqVoicing, hHQ_core->oldgapsynth_fx );
}
-#ifdef ADD_IVAS_HQ_CODE
- if ( st->element_mode > EVS_MONO )
- {
- /* LB synthesis for potential switch to ACELP */
- window_ola( wtda_audio_LB, output, hHQ_core->old_outLB, L_FRAME16k, st->hTcxCfg->tcx_last_overlap_mode, st->hTcxCfg->tcx_curr_overlap_mode, st->prev_bfi && !hHQ_core->ph_ecu_active, hHQ_core->oldHqVoicing, hHQ_core->oldgapsynth );
- }
-#endif
test();
test();
IF( ( st_fx->bfi == 0 && st_fx->prev_bfi == 0 ) || !( GE_16( output_frame, L_FRAME16k ) ) )
@@ -561,13 +457,6 @@ void hq_core_dec_fx(
Copy( &st_fx->mem_pitch_gain[2], &st_fx->mem_pitch_gain[nbsubfr + 2], nbsubfr ); /* Q14 */
set16_fx( &st_fx->mem_pitch_gain[2], 0, nbsubfr );
}
-#ifdef ADD_IVAS_HQ_CODE
- /* Move LB excitation to old_exc memory in case of switch HQ->ACELP */
- if ( st->element_mode > EVS_MONO )
- {
- mvr2r( output, st->old_exc + L_EXC_MEM_DEC - st->L_frame, st->L_frame );
- }
-#endif
return;
}
diff --git a/lib_dec/hq_hr_dec_fx.c b/lib_dec/hq_hr_dec_fx.c
index 89864bc3b7f272c2c992b4f253242c0d7217b5e5..6423015bc4f8afe008e206801dc367770e8d32d8 100644
--- a/lib_dec/hq_hr_dec_fx.c
+++ b/lib_dec/hq_hr_dec_fx.c
@@ -46,7 +46,6 @@ void ivas_hq_pred_hb_bws_fx(
}
ELSE
{
- // EVS_FUNC_MODIFIED
st_fx->prev_ener_shb_fx = 0;
move16();
L_tmp = L_deposit_l( 0 );
diff --git a/lib_dec/igf_dec_fx.c b/lib_dec/igf_dec_fx.c
index 5c2bff4e734aaae0f107ec51e57e00d68e294e14..79953aacaf2dd5ee9c9258bfb583d0589fe3d92c 100644
--- a/lib_dec/igf_dec_fx.c
+++ b/lib_dec/igf_dec_fx.c
@@ -244,7 +244,7 @@ static void IGF_replaceTCXNoise_2( Word32 *in, /**< in
g = getSqrtWord32( L_mult( divide3232( totalNoiseNrg, rE ), 8192 /*1.0f / 4.0f Q15*/ ) ); // ((Q15 + Q15 + Q1) / 2) -> Q15
- g = shl( g, 1 ); // Q16
+ g = shl_sat( g, 1 ); // Q16
FOR( sb = start; sb < stop; sb++ )
{
diff --git a/lib_dec/igf_scf_dec_fx.c b/lib_dec/igf_scf_dec_fx.c
index 3db6581dac3e32eebcab53deca5339f9c3b493ff..6478b3f92c60fc290385bd2e50e6df9c137494ca 100644
--- a/lib_dec/igf_scf_dec_fx.c
+++ b/lib_dec/igf_scf_dec_fx.c
@@ -189,9 +189,7 @@ static void decode_sfe_vector_fx(
{
/* (t == 0) && (f == 0) */
/* decode one of the IGF_SYMBOLS_IN_TABLE == 27 alphabet symbols using the new raw AC function */
-#ifdef FIX_969_USAN_IGF_ARITH
/* NOTE: the float equivalent uses a tmp variable + explicit cast here to avoid undefined behaviour here. This BASOP version does not need it as it already uses signed Word16 return value here. */
-#endif
res = ari_decode_14bits_s27_ext_fx( st, &hPrivateData->acState, (const UWord16 *) hPrivateData->cf_se00 );
pred = arith_decode_bits_fx( hPrivateData, st, 2 ); /* LSBs as 2 bit raw */
diff --git a/lib_dec/init_dec_fx.c b/lib_dec/init_dec_fx.c
index b588fdce1bd047a957cc644092befc7ee5368519..11c108380ec274e2d901fddf50bf2890f9a5fef8 100644
--- a/lib_dec/init_dec_fx.c
+++ b/lib_dec/init_dec_fx.c
@@ -448,7 +448,6 @@ ivas_error init_decoder_fx(
}
/* TCX core */
- // VE: reduction possible for MCT_CHAN_MODE_LFE channel - see I1-172
IF( idchan == 0 || EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) )
{
IF( ( st_fx->hTcxDec = (TCX_DEC_HANDLE) malloc( sizeof( TCX_DEC_DATA ) ) ) == NULL )
diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c
index 0709c6b7543533648436a277a56ea2ff6ab4fac5..75b746ae7653afb7e7ea57ce2a6130fc114572ab 100644
--- a/lib_dec/ivas_binRenderer_internal_fx.c
+++ b/lib_dec/ivas_binRenderer_internal_fx.c
@@ -61,12 +61,8 @@ static void ivas_binRenderer_filterModule_fx(
Word32 CLDFB_real[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : real part of LS signals Q_curr*/
Word32 CLDFB_imag[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : imag part of LS signals Q_curr*/
const Word16 numTimeSlots, /* i : number of time slots to process */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: fastconv binaural renderer handle */
- const Word16 pos_idx, /* i : pose index */
-#else
- BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: fastconv binaural renderer handle */
-#endif
+ BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: fastconv binaural renderer handle */
+ const Word16 pos_idx, /* i : pose index */
Word16 Q_curr )
{
Word16 bandIdx, k, chIdx, tapIdx;
@@ -74,25 +70,15 @@ static void ivas_binRenderer_filterModule_fx(
Word16 Q_filterStates;
const Word32 *filterTapsLeftRealPtr_fx, *filterTapsLeftImagPtr_fx, *filterTapsRightRealPtr_fx, *filterTapsRightImagPtr_fx;
Word16 shift_q;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Q_filterStates = hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx];
move16();
-#else
- Q_filterStates = hBinRenderer->hBinRenConvModule->Q_filterStatesLeft;
- move16();
-#endif
FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
{
FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][bandIdx][chIdx][0] );
filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][bandIdx][chIdx][0] );
-#else
- filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx][0] );
- filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx][0] );
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
filterTapsLeftRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx]; // Q29
filterTapsLeftImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftImag_fx[bandIdx][chIdx]; // Q29
@@ -136,11 +122,7 @@ static void ivas_binRenderer_filterModule_fx(
outImagLeft_fx = W_shr( outImagLeft_fx, shift_q ); // Q_curr
outRealRight_fx = W_shr( outRealRight_fx, shift_q ); // Q_curr
outImagRight_fx = W_shr( outImagRight_fx, shift_q ); // Q_curr
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx] = Q_curr;
-#else
- hBinRenderer->hBinRenConvModule->Q_filterStatesLeft = Q_curr;
-#endif
move16();
}
@@ -194,18 +176,11 @@ static ivas_error ivas_binRenderer_convModuleOpen(
const Word16 renderer_type,
const Word16 isLoudspeaker,
const AUDIO_CONFIG input_config,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
const HRTFS_FASTCONV_HANDLE hHrtf,
- const Word16 num_poses
-#else
- const HRTFS_FASTCONV_HANDLE hHrtf
-#endif
-)
+ const Word16 num_poses )
{
Word16 bandIdx, chIdx;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 pos_idx;
-#endif
BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule;
@@ -331,7 +306,6 @@ static ivas_error ivas_binRenderer_convModuleOpen(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( ( hBinRenConvModule->filterStatesLeftReal_fx = (Word32 ****) malloc( num_poses * sizeof( Word32 *** ) ) ) == NULL )
{
return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
@@ -388,45 +362,6 @@ static ivas_error ivas_binRenderer_convModuleOpen(
}
}
-#else
- IF( ( hBinRenConvModule->filterStatesLeftReal_fx = (Word32 ***) malloc( hBinRenderer->conv_band * sizeof( Word32 ** ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
- }
-
- IF( ( hBinRenConvModule->filterStatesLeftImag_fx = (Word32 ***) malloc( hBinRenderer->conv_band * sizeof( Word32 ** ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
- }
-
-
- FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
- {
- IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] = (Word32 **) malloc( hBinRenderer->nInChannels * sizeof( Word32 * ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
- }
-
- IF( ( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] = (Word32 **) malloc( hBinRenderer->nInChannels * sizeof( Word32 * ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
- }
-
-
- FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
- {
- IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] = (Word32 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word32 ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
- }
-
- IF( ( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] = (Word32 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word32 ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
- }
- }
- }
-#endif
/* set memories */
FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
{
@@ -467,12 +402,6 @@ static ivas_error ivas_binRenderer_convModuleOpen(
IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
{
/* set the memories to zero */
-#ifndef SPLIT_REND_WITH_HEAD_ROT
- set32_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] );
- set32_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] );
- hBinRenConvModule->Q_filterStatesLeft = 31;
- move16();
-#endif /* !SPLIT_REND_WITH_HEAD_ROT */
IF( isLoudspeaker )
{
hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx] = hHrtf->leftBRIRReal_fx[bandIdx][tmp];
@@ -483,13 +412,6 @@ static ivas_error ivas_binRenderer_convModuleOpen(
}
ELSE
{
-#ifndef SPLIT_REND_WITH_HEAD_ROT
- /* set the memories to zero */
- set32_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTaps );
- set32_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTaps );
- hBinRenConvModule->Q_filterStatesLeft = 31;
- move16();
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
IF( isLoudspeaker )
{
hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx] = hHrtf->leftHRIRReal_fx[bandIdx][tmp];
@@ -532,7 +454,6 @@ static ivas_error ivas_binRenderer_convModuleOpen(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
{
for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ )
@@ -567,7 +488,6 @@ static ivas_error ivas_binRenderer_convModuleOpen(
}
}
}
-#endif
hBinRenderer->hBinRenConvModule = hBinRenConvModule;
@@ -1095,24 +1015,54 @@ static void ivas_binaural_obtain_DMX_fx(
set32_fx( outRealRightPtr_fx, 0, CLDFB_NO_CHANNELS_MAX );
set32_fx( outImagRightPtr_fx, 0, CLDFB_NO_CHANNELS_MAX );
- FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
+#ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING
+ /*Ambisonics input requires different processing*/
+ if ( EQ_16( hBinRenderer->nInChannels, HOA3_CHANNELS ) )
{
- Word32 foa_const_fx = L_shl( hBinRenderer->hReverb->foa_enc_fx[chIdx][1], 1 ); // Q30
+ Word32 *inRealPtr_W, *inImagPtr_W;
+ Word32 *inRealPtr_Y, *inImagPtr_Y;
- inRealPtr_fx = (Word32 *) &( RealBuffer[chIdx][k][0] );
- inImagPtr_fx = (Word32 *) &( ImagBuffer[chIdx][k][0] );
+ inRealPtr_W = (Word32 *) &( RealBuffer[0][k][0] );
+ inImagPtr_W = (Word32 *) &( ImagBuffer[0][k][0] );
+
+ inRealPtr_Y = (Word32 *) &( RealBuffer[1][k][0] );
+ inImagPtr_Y = (Word32 *) &( ImagBuffer[1][k][0] );
FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
{
- outRealLeftPtr_fx[bandIdx] = L_add( outRealLeftPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], L_add( ONE_IN_Q30, foa_const_fx ) ) ); // Q_in - 1
- move32();
- outImagLeftPtr_fx[bandIdx] = L_add( outImagLeftPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], L_add( ONE_IN_Q30, foa_const_fx ) ) ); // Q_in - 1
- move32();
+ outRealLeftPtr_fx[bandIdx] = L_add( inRealPtr_W[bandIdx], inRealPtr_Y[bandIdx] );
+ outImagLeftPtr_fx[bandIdx] = L_add( inImagPtr_W[bandIdx], inImagPtr_Y[bandIdx] );
- outRealRightPtr_fx[bandIdx] = L_add( outRealRightPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], L_sub( ONE_IN_Q30, foa_const_fx ) ) ); // Q_in - 1
- move32();
- outImagRightPtr_fx[bandIdx] = L_add( outImagRightPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], L_sub( ONE_IN_Q30, foa_const_fx ) ) ); // Q_in - 1
- move32();
+ outRealRightPtr_fx[bandIdx] = L_sub( inRealPtr_W[bandIdx], inRealPtr_Y[bandIdx] );
+ outImagRightPtr_fx[bandIdx] = L_sub( inImagPtr_W[bandIdx], inImagPtr_Y[bandIdx] );
+ }
+ }
+ else
+#endif
+ {
+ FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
+ {
+ Word32 foa_const_fx = L_shl( hBinRenderer->hReverb->foa_enc_fx[chIdx][1], 1 ); // Q30
+ Word32 one_add_foa_const, one_sub_foa_const;
+
+ one_add_foa_const = L_add( ONE_IN_Q30, foa_const_fx ); // Q30
+ one_sub_foa_const = L_sub_sat( ONE_IN_Q30, foa_const_fx ); // Q30
+
+ inRealPtr_fx = (Word32 *) &( RealBuffer[chIdx][k][0] );
+ inImagPtr_fx = (Word32 *) &( ImagBuffer[chIdx][k][0] );
+
+ FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
+ {
+ outRealLeftPtr_fx[bandIdx] = L_add( outRealLeftPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], one_add_foa_const ) ); // Q_in - 1
+ move32();
+ outImagLeftPtr_fx[bandIdx] = L_add( outImagLeftPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], one_add_foa_const ) ); // Q_in - 1
+ move32();
+
+ outRealRightPtr_fx[bandIdx] = L_add( outRealRightPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], one_sub_foa_const ) ); // Q_in - 1
+ move32();
+ outImagRightPtr_fx[bandIdx] = L_add( outImagRightPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], one_sub_foa_const ) ); // Q_in - 1
+ move32();
+ }
}
}
}
@@ -1122,7 +1072,6 @@ static void ivas_binaural_obtain_DMX_fx(
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*-------------------------------------------------------------------------
* ivas_rend_openCldfbRend()
*
@@ -1225,7 +1174,6 @@ ivas_error ivas_rend_openCldfbRend(
return error;
}
-#endif
/*-------------------------------------------------------------------------
* ivas_binRenderer_open()
@@ -1264,7 +1212,6 @@ ivas_error ivas_binRenderer_open_fx(
move16();
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
hBinRenderer->numPoses = st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses;
@@ -1275,7 +1222,6 @@ ivas_error ivas_binRenderer_open_fx(
hBinRenderer->numPoses = 1;
move16();
}
-#endif
/* Declare some common variables needed for renderer */
/* Which format used for binaural rendering (needed for late reverb) ? MC or SBA */
@@ -1332,17 +1278,10 @@ ivas_error ivas_binRenderer_open_fx(
IVAS_OUTPUT_SETUP out_setup;
/* Allocate memories and buffers needed for convolutional module in CICP19 */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, 1, IVAS_AUDIO_CONFIG_7_1_4, st_ivas->hHrtfFastConv, hBinRenderer->numPoses ) ), IVAS_ERR_OK ) )
{
return error;
}
-#else
- IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, 1, IVAS_AUDIO_CONFIG_7_1_4, st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-#endif
ivas_output_init( &out_setup, IVAS_AUDIO_CONFIG_7_1_4 );
IF( st_ivas->hoa_dec_mtx == NULL )
@@ -1360,17 +1299,10 @@ ivas_error ivas_binRenderer_open_fx(
ELSE
{
/* Allocate memories and buffers needed for convolutional module */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, st_ivas->hIntSetup.is_loudspeaker_setup, st_ivas->hIntSetup.output_config, st_ivas->hHrtfFastConv, hBinRenderer->numPoses ) ), IVAS_ERR_OK ) )
{
return error;
}
-#else
- IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, st_ivas->hIntSetup.is_loudspeaker_setup, st_ivas->hIntSetup.output_config, st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-#endif
IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) )
{
@@ -1414,7 +1346,11 @@ ivas_error ivas_binRenderer_open_fx(
test();
IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
{
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ IF( NE_32( ( error = ivas_binaural_reverb_init( &( hBinRenderer->hReverb ), st_ivas->hHrtfStatistics, hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv->fastconvReverberationTimes_fx, st_ivas->hHrtfFastConv->fastconvReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) )
+#else
IF( NE_32( ( error = ivas_binaural_reverb_open_fastconv_fx( &( hBinRenderer->hReverb ), hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hIntSetup.output_config, st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) )
+#endif
{
return error;
}
@@ -1458,8 +1394,15 @@ ivas_error ivas_binRenderer_open_fx(
{
test();
test();
- /* NOTE to future self by @kiene: this should have been changed by NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM, but the BASOP repo code is not at that point yet, so not change needed here */
+#ifdef NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM
+ IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 )
+#else
+#ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING
+ IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && NE_16( hBinRenderer->nInChannels, HOA3_CHANNELS ) )
+#else
IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 )
+#endif
+#endif
{
FOR( k = 0; k < 11; k++ )
{
@@ -1491,18 +1434,12 @@ ivas_error ivas_binRenderer_open_fx(
* Close convolution module handle of fastconv binaural renderer
*------------------------------------------------------------------------*/
static void ivas_binRenderer_convModuleClose_fx(
-#ifdef SPLIT_REND_WITH_HEAD_ROT
BINAURAL_RENDERER_HANDLE *hBinRenderer, /* i/o: fastconv binaural renderer handle */
const Word16 num_poses /* i : number of poses */
-#else
- BINAURAL_RENDERER_HANDLE *hBinRenderer /* i/o: fastconv binaural renderer handle */
-#endif
)
{
Word16 bandIdx, chIdx;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 posIdx;
-#endif
BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule;
@@ -1540,7 +1477,6 @@ static void ivas_binRenderer_convModuleClose_fx(
free( hBinRenConvModule->filterTapsRightImag_fx );
hBinRenConvModule->filterTapsRightImag_fx = NULL;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
FOR( posIdx = 0; posIdx < num_poses; posIdx++ )
{
FOR( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ )
@@ -1566,25 +1502,6 @@ static void ivas_binRenderer_convModuleClose_fx(
free( hBinRenConvModule->filterStatesLeftImag_fx[posIdx] );
hBinRenConvModule->filterStatesLeftImag_fx[posIdx] = NULL;
}
-#else
- FOR( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ )
- {
- FOR( chIdx = 0; chIdx < ( *hBinRenderer )->nInChannels; chIdx++ )
- {
- free( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] );
- hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] = NULL;
-
- free( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] );
- hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] = NULL;
- }
-
- free( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] );
- hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] = NULL;
-
- free( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] );
- hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] = NULL;
- }
-#endif
free( hBinRenConvModule->filterStatesLeftReal_fx );
hBinRenConvModule->filterStatesLeftReal_fx = NULL;
@@ -1615,11 +1532,7 @@ void ivas_binRenderer_close_fx(
IF( ( *hBinRenderer )->hBinRenConvModule != NULL )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_binRenderer_convModuleClose_fx( hBinRenderer, ( *hBinRenderer )->numPoses );
-#else
- ivas_binRenderer_convModuleClose_fx( hBinRenderer );
-#endif
}
IF( ( *hBinRenderer )->hReverb != NULL )
@@ -1790,29 +1703,20 @@ void ivas_binaural_add_LFE_fx(
void ivas_binRenderer_fx(
BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
-#endif
- COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle*/
- const Word16 numTimeSlots, /* i : number of time slots to render */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
+ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle*/
+ const Word16 numTimeSlots, /* i : number of time slots to render */
Word32 Cldfb_RealBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */
Word32 Cldfb_ImagBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */
-#else
- Word32 Cldfb_RealBuffer_Binaural_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals Q_in*/
- Word32 Cldfb_ImagBuffer_Binaural_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals Q_in*/
-#endif
- Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/
- Word32 ImagBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/
- Word16 *Q_in /* i : LS signals exp */
+ Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/
+ Word32 ImagBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/
+ Word16 *Q_in /* i : LS signals exp */
)
{
Word16 chIdx, i, j, k;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 pos_idx, num_poses;
Word32 RealBuffer_local[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
Word32 ImagBuffer_local[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
-#endif
// to be checked: feasibility with 32 bit buffers
Word64 Cldfb_RealBuffer_Binaural_64fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
@@ -1820,14 +1724,11 @@ void ivas_binRenderer_fx(
push_wmops( "fastconv_binaural_rendering" );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
num_poses = hBinRenderer->numPoses;
-#endif
/* Compute Convolution */
/* memory reset for the binaural output */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ )
{
FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ )
@@ -1856,18 +1757,6 @@ void ivas_binRenderer_fx(
Copy32( ImagBuffer_fx[chIdx][k], ImagBuffer_local[chIdx][k], CLDFB_NO_CHANNELS_MAX );
}
}
-#else
- FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ )
- {
- FOR( k = 0; k < numTimeSlots; k++ )
- {
- set32_fx( Cldfb_RealBuffer_Binaural_fx[chIdx][k], 0, CLDFB_NO_CHANNELS_MAX );
- set32_fx( Cldfb_ImagBuffer_Binaural_fx[chIdx][k], 0, CLDFB_NO_CHANNELS_MAX );
- set64_fx( Cldfb_RealBuffer_Binaural_64fx[chIdx][k], 0, CLDFB_NO_CHANNELS_MAX );
- set64_fx( Cldfb_ImagBuffer_Binaural_64fx[chIdx][k], 0, CLDFB_NO_CHANNELS_MAX );
- }
- }
-#endif
/* Head rotation in HOA3 or CICPx */
test();
@@ -1906,11 +1795,7 @@ void ivas_binRenderer_fx(
hBinRenderer->nInChannels, hBinRenderer->conv_band, numTimeSlots, hBinRenderer->hoa_dec_mtx );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_binRenderer_filterModule_fx( Cldfb_RealBuffer_Binaural_64fx, Cldfb_ImagBuffer_Binaural_64fx, RealBuffer_fx, ImagBuffer_fx, numTimeSlots, hBinRenderer, 0, *Q_in );
-#else
- ivas_binRenderer_filterModule_fx( Cldfb_RealBuffer_Binaural_64fx, Cldfb_ImagBuffer_Binaural_64fx, RealBuffer_fx, ImagBuffer_fx, numTimeSlots, hBinRenderer, *Q_in );
-#endif
FOR( i = 0; i < BINAURAL_CHANNELS; i++ )
{
@@ -1918,22 +1803,14 @@ void ivas_binRenderer_fx(
{
FOR( k = 0; k < CLDFB_NO_CHANNELS_MAX; k++ )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Cldfb_RealBuffer_Binaural_fx[0][i][j][k] = W_extract_l( W_shr( Cldfb_RealBuffer_Binaural_64fx[i][j][k], 29 ) ); //(*Q_in + 29) - 29
move32();
Cldfb_ImagBuffer_Binaural_fx[0][i][j][k] = W_extract_l( W_shr( Cldfb_ImagBuffer_Binaural_64fx[i][j][k], 29 ) ); //(*Q_in + 29) - 29
move32();
-#else
- Cldfb_RealBuffer_Binaural_fx[i][j][k] = W_extract_l( W_shr( Cldfb_RealBuffer_Binaural_64fx[i][j][k], 29 ) ); //(*Q_in + 29) - 29
- move32();
- Cldfb_ImagBuffer_Binaural_fx[i][j][k] = W_extract_l( W_shr( Cldfb_ImagBuffer_Binaural_64fx[i][j][k], 29 ) ); //(*Q_in + 29) - 29
- move32();
-#endif
}
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( pMultiBinPoseData != NULL )
{
IF( GT_16( pMultiBinPoseData->num_poses, 1 ) )
@@ -2024,7 +1901,6 @@ void ivas_binRenderer_fx(
}
}
}
-#endif
/* Obtain the binaural dmx and compute the reverb */
IF( hBinRenderer->hReverb != NULL )
@@ -2066,18 +1942,12 @@ void ivas_binRenderer_fx(
{
FOR( k = 0; k < numTimeSlots; k++ )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ )
{
/* Combine first and second parts to generate binaural output signal with room effect */
v_add_32( Cldfb_RealBuffer_Binaural_fx[pos_idx][chIdx][k], reverbRe_fx[chIdx][k], Cldfb_RealBuffer_Binaural_fx[pos_idx][chIdx][k], hBinRenderer->conv_band ); // Q_in
v_add_32( Cldfb_ImagBuffer_Binaural_fx[pos_idx][chIdx][k], reverbIm_fx[chIdx][k], Cldfb_ImagBuffer_Binaural_fx[pos_idx][chIdx][k], hBinRenderer->conv_band ); // Q_in
}
-#else
- /* Combine first and second parts to generate binaural output signal with room effect */
- v_add_32( Cldfb_RealBuffer_Binaural_fx[chIdx][k], reverbRe_fx[chIdx][k], Cldfb_RealBuffer_Binaural_fx[chIdx][k], hBinRenderer->conv_band ); // Q_in
- v_add_32( Cldfb_ImagBuffer_Binaural_fx[chIdx][k], reverbIm_fx[chIdx][k], Cldfb_ImagBuffer_Binaural_fx[chIdx][k], hBinRenderer->conv_band ); // Q_in
-#endif
}
}
}
@@ -2085,7 +1955,6 @@ void ivas_binRenderer_fx(
return;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*-------------------------------------------------------------------------
* ivas_rend_CldfbMultiBinRendProcess()
*
@@ -2166,4 +2035,3 @@ void ivas_rend_CldfbMultiBinRendProcess(
return;
}
-#endif
diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c
index 03f0e4b40a7904afa92be4f0e71e70df0845e214..40012175640da7963da6eb8fbda62bc83507ad23 100644
--- a/lib_dec/ivas_core_dec_fx.c
+++ b/lib_dec/ivas_core_dec_fx.c
@@ -266,11 +266,7 @@ ivas_error ivas_core_dec_fx(
test();
test();
test();
-#ifdef NONBE_MDCT_ST_PLC_DO_NOT_SCALE_OLD_OUT_IF_FIRST_GOOD_IS_SID
IF( !st->bfi && st->prev_bfi && GT_32( st->total_brate, SID_2k40 ) && ( EQ_16( st->last_core_bfi, TCX_20_CORE ) || EQ_16( st->last_core_bfi, TCX_10_CORE ) ) && st->hTcxDec != NULL )
-#else
- IF( !st->bfi && st->prev_bfi && ( EQ_16( st->last_core_bfi, TCX_20_CORE ) || EQ_16( st->last_core_bfi, TCX_10_CORE ) ) && st->hTcxDec != NULL )
-#endif
{
conceal_eof_gain32 = L_shr_sat( st->hTcxDec->conceal_eof_gain32, sub( 16, st->hTcxDec->conceal_eof_gain_e ) ); // e = 31 - Q , 16 - e => 16 - (31 - Q) => Q - 15,
// shr(16 -e ) = shr(Q -15) => 15 - Q ==> Q15
@@ -520,7 +516,7 @@ ivas_error ivas_core_dec_fx(
Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, add( M, 1 ), sub( norm_s( sub( st->hFdCngDec->hFdCngCom->A_cng[0], 1 ) ), 3 ) ); // Qx
}
- IF( NE_32( ( error = acelp_core_dec_ivas_fx( st, output_16_fx[n], synth_16_fx[n], save_hb_synth_16_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], old_syn_12k8_16k_fx_16, sharpFlag[n], pitch_buf_fx[n], &unbits[n], &sid_bw[n], hStereoTD, tdm_lspQ_PCh_fx, tdm_lsfQ_PCh_fx, use_cldfb_for_dft, last_element_mode, last_element_brate, flag_sec_CNA, nchan_out, hStereoCng, read_sid_info ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = acelp_core_dec_fx( st, output_16_fx[n], synth_16_fx[n], save_hb_synth_16_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], old_syn_12k8_16k_fx_16, sharpFlag[n], pitch_buf_fx[n], &unbits[n], &sid_bw[n], hStereoTD, tdm_lspQ_PCh_fx, tdm_lsfQ_PCh_fx, use_cldfb_for_dft, last_element_mode, last_element_brate, flag_sec_CNA, nchan_out, hStereoCng, read_sid_info ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -604,7 +600,7 @@ ivas_error ivas_core_dec_fx(
st->hHQ_core->Q_old_wtda_LB = st->hHQ_core->Q_old_wtda;
move16();
- Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, Q11 ); // Q11
+ Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], output_frame, Q11 ); // Q11
IF( st->hTcxDec )
{
@@ -771,13 +767,8 @@ ivas_error ivas_core_dec_fx(
test();
test();
-#ifdef NONBE_MDCT_ST_DTX_SKIP_DEWHITENING_OF_NOISE_SHAPES_ON_SID_FRAMES
/* On first good active frame after frameloss undo the whitening of the bg noise shape */
IF( GT_32( sts[0]->core_brate, SID_2k40 ) && sts[0]->bfi == 0 && EQ_16( sts[0]->prev_bfi, 1 ) )
-#else
- IF( sts[0]->bfi == 0 && EQ_16( sts[0]->prev_bfi, 1 ) )
- /* On first good frame after frameloss undo the whitening of the bg noise shape */
-#endif
{
FOR( n = 0; n < n_channels; ++n )
{
@@ -1039,7 +1030,7 @@ ivas_error ivas_core_dec_fx(
/* Memories Re-Scaling */
Copy_Scale_sig_16_32_no_sat( hb_synth_16_fx[n], hb_synth_32_fx[n], L_FRAME48k, sub( Q11, Q_hb_synth_fx ) ); // Q11
Copy_Scale_sig_16_32_no_sat( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_input ) ); // Q11 // Q_input can get value <= -5
- Copy_Scale_sig_16_32_no_sat( synth_16_fx[n], synth_32_fx[n], L_FRAME48k, sub( Q11, Q_synth_fx ) ); // Q11
+ Copy_Scale_sig_16_32_no_sat( synth_16_fx[n], synth_32_fx[n], output_frame, sub( Q11, Q_synth_fx ) ); // Q11
IF( hBWE_FD != NULL )
{
diff --git a/lib_dec/ivas_cpe_dec_fx.c b/lib_dec/ivas_cpe_dec_fx.c
index c10c6beda022acd7c4dbefdb47d957741647b4c4..e26a56c1bb44b72f62e6c4bd06cc37c0619618f3 100644
--- a/lib_dec/ivas_cpe_dec_fx.c
+++ b/lib_dec/ivas_cpe_dec_fx.c
@@ -1264,7 +1264,7 @@ void destroy_cpe_dec(
IF( hCPE->hStereoDft != NULL )
{
- stereo_dft_dec_destroy( &( hCPE->hStereoDft ) );
+ stereo_dft_dec_destroy_fx( &( hCPE->hStereoDft ) );
hCPE->hStereoDft = NULL;
}
diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c
index 44a024e549e94a5e1d49a59ba8c2233206dc2bdc..e3b32d3fcab322564a565c85fd1b1036f8a2bd78 100644
--- a/lib_dec/ivas_dirac_dec_fx.c
+++ b/lib_dec/ivas_dirac_dec_fx.c
@@ -798,8 +798,10 @@ static ivas_error ivas_dirac_rend_config_fx(
nchan_transport_tmp = nchan_transport;
move16();
}
+
/* close and reopen the decorrelator */
ivas_dirac_dec_decorr_close_fx( &hDirACRend->h_freq_domain_decorr_ap_params, &hDirACRend->h_freq_domain_decorr_ap_state );
+
IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( hDirACRend->h_freq_domain_decorr_ap_params ), &( hDirACRend->h_freq_domain_decorr_ap_state ), hSpatParamRendCom->num_freq_bands, hDirACRend->num_outputs_diff,
hDirACRend->num_protos_diff, hDirACRend->synthesisConf, hDirACRend->frequency_axis_fx, nchan_transport_tmp, output_Fs ) ),
IVAS_ERR_OK ) )
@@ -978,9 +980,7 @@ ivas_error ivas_dirac_dec_config_fx(
Word16 need_parambin;
Word16 dec_param_estim_old;
Word16 dec_param_estim_new;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 num_poses, pos_idx;
-#endif
error = IVAS_ERR_OK;
move32();
@@ -1011,7 +1011,6 @@ ivas_error ivas_dirac_dec_config_fx(
move16();
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
num_poses = 1;
move16();
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
@@ -1019,7 +1018,6 @@ ivas_error ivas_dirac_dec_config_fx(
num_poses = st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses;
move16();
}
-#endif
sparfoa_flag = 0;
move16();
@@ -1067,11 +1065,7 @@ ivas_error ivas_dirac_dec_config_fx(
IF( !need_parambin )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin );
-#else
- ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin );
-#endif
}
need_dirac_rend = 0;
@@ -1110,12 +1104,14 @@ ivas_error ivas_dirac_dec_config_fx(
common_rend_config_flag = flag_config_inp;
move32();
}
+
IF( NE_32( ( error = ivas_spat_hSpatParamRendCom_config_fx( &st_ivas->hSpatParamRendCom, common_rend_config_flag, dec_param_estim_new,
st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, hodirac_flag, 0 ) ),
IVAS_ERR_OK ) )
{
return error;
}
+
IF( need_dirac_rend )
{
IF( st_ivas->hDirACRend == NULL )
@@ -1144,13 +1140,13 @@ ivas_error ivas_dirac_dec_config_fx(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0] == NULL )
-#else
- IF( st_ivas->hDiracDecBin == NULL )
-#endif
{
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) )
+#else
IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
+#endif
{
return error;
}
@@ -1160,75 +1156,44 @@ ivas_error ivas_dirac_dec_config_fx(
/* This is required to keep BE in rate switching. This probably means that 1TC and 2TC MASA perform differently. */
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params != NULL && !( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && st_ivas->nSCE > 0 ) )
-#else
- IF( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params != NULL && !( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && st_ivas->nSCE > 0 ) )
-#endif
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_dirac_dec_decorr_close_fx( &st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params, &st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_state ); // done
-#else
- ivas_dirac_dec_decorr_close_fx( &st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params, &st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_state ); // done
-#endif
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin[0]->hTdDecorr ), &( st_ivas->hDiracDecBin[0]->useTdDecorr ) ) ), IVAS_ERR_OK ) )
-#else
- IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) )
-#endif
{
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/* copy td-decorr flag to split renderer side rendereres */
FOR( pos_idx = 1; pos_idx < num_poses; pos_idx++ )
{
st_ivas->hDiracDecBin[pos_idx]->useTdDecorr = st_ivas->hDiracDecBin[0]->useTdDecorr;
}
- IF( !st_ivas->hDiracDecBin[0]->useTdDecorr )
-#else
- IF( !st_ivas->hDiracDecBin->useTdDecorr )
-#endif
+ IF( !st_ivas->hDiracDecBin[0]->useTdDecorr )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params == NULL )
-#else
- IF( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params == NULL )
-#endif
{
Word16 frequency_axis_fx[CLDFB_NO_CHANNELS_MAX];
+
ivas_dirac_dec_get_frequency_axis_fx( frequency_axis_fx, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSpatParamRendCom->num_freq_bands );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
+
IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params ), &( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_state ), st_ivas->hSpatParamRendCom->num_freq_bands, BINAURAL_CHANNELS, BINAURAL_CHANNELS,
DIRAC_SYNTHESIS_PSD_LS, frequency_axis_fx, BINAURAL_CHANNELS, st_ivas->hDecoderConfig->output_Fs ) ),
IVAS_ERR_OK ) )
{
return error;
}
-#else
- IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params ), &( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_state ), st_ivas->hSpatParamRendCom->num_freq_bands, BINAURAL_CHANNELS, BINAURAL_CHANNELS,
- DIRAC_SYNTHESIS_PSD_LS, frequency_axis_fx, BINAURAL_CHANNELS, st_ivas->hDecoderConfig->output_Fs ) ),
- IVAS_ERR_OK ) )
- {
- return error;
- }
-#endif
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
+
FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ )
{
st_ivas->hDiracDecBin[pos_idx]->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate );
move16();
}
-#else
- st_ivas->hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate );
- move16();
-#endif
}
}
}
@@ -1508,10 +1473,27 @@ void ivas_qmetadata_to_dirac_fx(
{
FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b )
{
- hSpatParamRendCom->azimuth[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) );
+ /* Right shifting -1 -> -1, Hence this change is done */
+ Word32 L_tmp = L_abs( q_direction->band_data[band].azimuth_fx[block] );
+ hSpatParamRendCom->azimuth[meta_write_index][b] = extract_h( L_shr( L_tmp, 6 ) );
move16();
- hSpatParamRendCom->elevation[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) );
+
+ IF( q_direction->band_data[band].azimuth_fx[block] < 0 )
+ {
+ hSpatParamRendCom->azimuth[meta_write_index][b] = negate( hSpatParamRendCom->azimuth[meta_write_index][b] );
+ move16();
+ }
+
+ L_tmp = L_abs( q_direction->band_data[band].elevation_fx[block] );
+ hSpatParamRendCom->elevation[meta_write_index][b] = extract_h( L_shr( L_tmp, 6 ) );
move16();
+
+ IF( q_direction->band_data[band].elevation_fx[block] < 0 )
+ {
+ hSpatParamRendCom->elevation[meta_write_index][b] = negate( hSpatParamRendCom->elevation[meta_write_index][b] );
+ move16();
+ }
+
hSpatParamRendCom->energy_ratio1_fx[meta_write_index][b] = q_direction->band_data[band].energy_ratio_fx[block];
move32();
hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b] = L_sub( ONE_IN_Q30, q_direction->band_data[band].energy_ratio_fx[block] );
@@ -1556,10 +1538,25 @@ void ivas_qmetadata_to_dirac_fx(
{
FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b )
{
- hSpatParamRendCom->azimuth2[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) );
+ /* Right shifting -1 -> -1, Hence this change is done */
+ Word32 L_tmp = L_abs( q_direction->band_data[band].azimuth_fx[block] );
+ hSpatParamRendCom->azimuth2[meta_write_index][b] = extract_h( L_shr( L_tmp, 6 ) );
move16();
- hSpatParamRendCom->elevation2[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) );
+ IF( q_direction->band_data[band].azimuth_fx[block] < 0 )
+ {
+ hSpatParamRendCom->azimuth2[meta_write_index][b] = negate( hSpatParamRendCom->azimuth2[meta_write_index][b] );
+ move16();
+ }
+
+ L_tmp = L_abs( q_direction->band_data[band].elevation_fx[block] );
+ hSpatParamRendCom->elevation2[meta_write_index][b] = extract_h( L_shr( L_tmp, 6 ) );
move16();
+ IF( q_direction->band_data[band].elevation_fx[block] < 0 )
+ {
+ hSpatParamRendCom->elevation2[meta_write_index][b] = negate( hSpatParamRendCom->elevation2[meta_write_index][b] );
+ move16();
+ }
+
hSpatParamRendCom->energy_ratio2_fx[meta_write_index][b] = q_direction->band_data[band].energy_ratio_fx[block];
move32();
hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b] = L_sub( hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b], q_direction->band_data[band].energy_ratio_fx[block] );
@@ -2243,17 +2240,34 @@ void ivas_dirac_dec_render_sf_fx(
/*CLDFB: last output channels reserved to LFT for CICPx*/
Word32 Cldfb_RealBuffer_fx[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
Word32 Cldfb_ImagBuffer_fx[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word32 Cldfb_RealBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
Word32 Cldfb_ImagBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
-#else
- Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
- Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
-#endif
Word16 index = 0, num_freq_bands = 0;
move16();
move16();
+
+ FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ )
+ {
+ FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ )
+ {
+ set32_fx( Cldfb_RealBuffer_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX );
+ set32_fx( Cldfb_ImagBuffer_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX );
+ }
+ }
+
+ FOR( Word16 p = 0; p < MAX_HEAD_ROT_POSES; p++ )
+ {
+ FOR( i = 0; i < BINAURAL_CHANNELS; i++ )
+ {
+ FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ )
+ {
+ set32_fx( Cldfb_RealBuffer_Binaural_fx[p][i][j], 0, CLDFB_NO_CHANNELS_MAX );
+ set32_fx( Cldfb_RealBuffer_Binaural_fx[p][i][j], 0, CLDFB_NO_CHANNELS_MAX );
+ }
+ }
+ }
+
/* local copies of azi, ele, diffuseness */
Word16 azimuth[CLDFB_NO_CHANNELS_MAX];
Word16 elevation[CLDFB_NO_CHANNELS_MAX];
@@ -2738,6 +2752,7 @@ void ivas_dirac_dec_render_sf_fx(
{
masa_band_mapping = st_ivas->hMasa->data.band_mapping;
}
+#ifndef FIX_998_UNUSED_FUNCTION
test();
test();
IF( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && EQ_16( st_ivas->hCombinedOrientationData->shd_rot_max_order, 1 ) )
@@ -2772,6 +2787,20 @@ void ivas_dirac_dec_render_sf_fx(
NULL,
hodirac_flag );
}
+#else
+ ivas_dirac_dec_compute_directional_responses_fx( hSpatParamRendCom,
+ hDirACRend,
+ st_ivas->hVBAPdata,
+ masa_band_mapping,
+ st_ivas->hMasaIsmData,
+ azimuth,
+ elevation,
+ md_idx,
+ surCohRatio_fx,
+ surCohRatio_q_fx,
+ hodirac_flag );
+
+#endif
}
test();
@@ -2871,10 +2900,10 @@ void ivas_dirac_dec_render_sf_fx(
test();
generate_masking_noise_dirac_ivas_fx( st->hFdCngDec->hFdCngCom,
st_ivas->cldfbAnaDec[1],
- st_ivas->hTcBuffer->tc_fx[1],
+ &st_ivas->hTcBuffer->tc_fx[1][hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->slots_rendered],
Cldfb_RealBuffer_fx[1][0],
Cldfb_ImagBuffer_fx[1][0],
- index_slot,
+ slot_idx,
st->cna_dirac_flag && st->flag_cna,
( ( ( st->core_brate == FRAME_NO_DATA ) || EQ_32( st->core_brate, SID_2k40 ) ) ) && EQ_16( st->cng_type, FD_CNG ) && st->cng_sba_flag, Q_input, &q_temp_cldfb );
Scale_sig32( Cldfb_RealBuffer_fx[1][0], CLDFB_NO_CHANNELS_MAX, sub( Q6, q_temp_cldfb ) ); // Q6
@@ -3150,7 +3179,11 @@ void ivas_dirac_dec_render_sf_fx(
v_multc_fixed( onset_filter_fx, 536870912 /* 0.25f in Q31 */, onset_filter_fx, hSpatParamRendCom->num_freq_bands );
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( onset_filter_fx, onset_filter_subframe_fx, onset_filter_subframe_fx, hSpatParamRendCom->num_freq_bands ); /* Q31 */
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( onset_filter_fx, onset_filter_subframe_fx, onset_filter_subframe_fx, hSpatParamRendCom->num_freq_bands, 0 ); /* Q31 */
+#endif /* VEC_ARITH_OPT_v1 */
p_onset_filter_fx = onset_filter_subframe_fx;
}
ELSE
@@ -3283,6 +3316,7 @@ void ivas_dirac_dec_render_sf_fx(
move16();
}
+#ifndef FIX_998_UNUSED_FUNCTION
test();
test();
IF( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order > 0 )
@@ -3325,6 +3359,24 @@ void ivas_dirac_dec_render_sf_fx(
hodirac_flag,
hDirAC->hConfig->dec_param_estim );
}
+#else
+ ivas_dirac_dec_output_synthesis_process_slot_fx( reference_power_fx,
+ DirAC_mem.reference_power_q,
+ p_onset_filter_fx,
+ azimuth,
+ elevation,
+ hSpatParamRendCom->diffuseness_vector_fx[md_idx],
+ hSpatParamRendCom->q_diffuseness_vector,
+ hSpatParamRendCom,
+ hDirACRend,
+ st_ivas->hVBAPdata,
+ hDirACRend->hOutSetup,
+ nchan_transport,
+ md_idx,
+ hodirac_flag,
+ hDirAC->hConfig->dec_param_estim );
+
+#endif
IF( hDirAC->hConfig->dec_param_estim )
{
@@ -3898,7 +3950,9 @@ void ivas_dirac_dec_render_sf_fx(
{
Word16 j, k, j2, l;
Word16 num_objects, nchan_out_woLFE, lfe_index;
+#ifndef FIX_1379_MASA_ANGLE_ROUND
Word16 az1, el1;
+#endif
Word16 n_slots_to_render;
Word16 n_samples_to_render;
Word16 interp_offset;
@@ -3932,13 +3986,20 @@ void ivas_dirac_dec_render_sf_fx(
Word16 el_q0 = extract_l( L_shr( st_ivas->hIsmMetaData[i]->elevation_fx, Q22 ) );
Word32 az1_32, el1_32;
rotateAziEle_fixed( az_q0, el_q0, &az1_32, &el1_32, st_ivas->hCombinedOrientationData->Rmat_fx[0], st_ivas->hIntSetup.is_planar_setup );
+#ifndef FIX_1379_MASA_ANGLE_ROUND
az1 = extract_h( az1_32 );
el1 = extract_h( el1_32 );
+#endif
IF( st_ivas->hEFAPdata != NULL )
{
+#ifdef FIX_1379_MASA_ANGLE_ROUND
+ const Word32 azi_fx = L_shl( az1_32, Q22 - Q16 ); // Q16 -> Q22
+ const Word32 ele_fx = L_shl( el1_32, Q22 - Q16 ); // Q16 -> Q22
+#else
const Word32 azi_fx = L_shl( az1, Q22 ); // Q0 -> Q22
const Word32 ele_fx = L_shl( el1, Q22 ); // Q0 -> Q22
+#endif
efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azi_fx, ele_fx, EFAP_MODE_EFAP );
}
}
@@ -4011,7 +4072,6 @@ void ivas_dirac_dec_render_sf_fx(
input_q = Q6;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
IF( st_ivas->hSplitBinRend->hCldfbDataOut != NULL )
@@ -4028,28 +4088,19 @@ void ivas_dirac_dec_render_sf_fx(
move16();
}
}
-#endif
ivas_binRenderer_fx( st_ivas->hBinRenderer,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData,
-#endif
st_ivas->hCombinedOrientationData,
hSpatParamRendCom->subframe_nbslots[subframe_idx],
Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx,
Cldfb_RealBuffer_fx, Cldfb_ImagBuffer_fx, &input_q );
-#ifndef SPLIT_REND_WITH_HEAD_ROT
- Scale_sig32( Cldfb_RealBuffer_Binaural_fx[0][0], i_mult( BINAURAL_CHANNELS, i_mult( MAX_PARAM_SPATIAL_SUBFRAMES, CLDFB_NO_CHANNELS_MAX ) ), sub( Q6, input_q ) ); // Q6
- Scale_sig32( Cldfb_ImagBuffer_Binaural_fx[0][0], i_mult( BINAURAL_CHANNELS, i_mult( MAX_PARAM_SPATIAL_SUBFRAMES, CLDFB_NO_CHANNELS_MAX ) ), sub( Q6, input_q ) ); // Q6
-#else
Word16 pos_idx;
FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ )
{
Scale_sig32( &Cldfb_RealBuffer_Binaural_fx[pos_idx][0][0][0], i_mult( BINAURAL_CHANNELS, i_mult( MAX_PARAM_SPATIAL_SUBFRAMES, CLDFB_NO_CHANNELS_MAX ) ), sub( Q6, input_q ) ); // Q6
Scale_sig32( &Cldfb_ImagBuffer_Binaural_fx[pos_idx][0][0][0], i_mult( BINAURAL_CHANNELS, i_mult( MAX_PARAM_SPATIAL_SUBFRAMES, CLDFB_NO_CHANNELS_MAX ) ), sub( Q6, input_q ) ); // Q6
}
-#endif
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ )
@@ -4064,7 +4115,6 @@ void ivas_dirac_dec_render_sf_fx(
}
}
}
-#endif
/* Inverse CLDFB*/
FOR( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ )
@@ -4075,17 +4125,10 @@ void ivas_dirac_dec_render_sf_fx(
Word32 *ImagBuffer_fx[MAX_PARAM_SPATIAL_SUBFRAMES];
FOR( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[0][ch][i];
move32();
ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[0][ch][i];
move32();
-#else
- RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[ch][i];
- move32();
- ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[ch][i];
- move32();
-#endif
}
scale_sig32( st_ivas->cldfbSynDec[ch]->cldfb_state_fx, st_ivas->cldfbSynDec[ch]->p_filter_length, sub( ( Q6 - 1 ), st_ivas->cldfbSynDec[ch]->Q_cldfb_state ) ); // Q6-1
diff --git a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c
index 6d367538d26d575e27d55756a9222a5c96d5c322..caddb5c5cc9fe94936879def3f490ad0ae42ed6b 100644
--- a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c
+++ b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c
@@ -30,6 +30,8 @@
*******************************************************************************************************/
+#define MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE
+
#include
#include
#include
@@ -516,10 +518,14 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx(
Word16 mixing_matrix_buffer_e;
Word32 input_f_real_fx[PARAM_MC_MAX_TRANSPORT_CHANS];
Word32 input_f_imag_fx[PARAM_MC_MAX_TRANSPORT_CHANS];
+#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE
+
+#else
Word32 output_f_real_fx[MAX_CICP_CHANNELS];
Word32 output_f_imag_fx[MAX_CICP_CHANNELS];
Word16 output_f_real_e;
Word16 output_f_imag_e;
+#endif
Word32 diff_f_real_fx[MAX_CICP_CHANNELS];
Word32 diff_f_imag_fx[MAX_CICP_CHANNELS];
@@ -527,8 +533,12 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx(
set_zero_fx( input_f_real_fx, PARAM_MC_MAX_TRANSPORT_CHANS );
set_zero_fx( input_f_imag_fx, PARAM_MC_MAX_TRANSPORT_CHANS );
+#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE
+
+#else
set_zero_fx( output_f_real_fx, MAX_CICP_CHANNELS );
set_zero_fx( output_f_imag_fx, MAX_CICP_CHANNELS );
+#endif
set_zero_fx( diff_f_real_fx, MAX_CICP_CHANNELS );
set_zero_fx( diff_f_imag_fx, MAX_CICP_CHANNELS );
@@ -592,6 +602,36 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx(
}
/* apply residual mixing */
+#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE
+ {
+ Word16 shifter;
+
+ shifter = 31 - mixing_matrix_res_smooth_e;
+ FOR( ch_idx = 0; ch_idx < nY; ch_idx++ )
+ {
+ int i;
+ Word16 idx;
+ Word64 temp_real, temp_imag;
+
+
+ idx = ch_idx;
+ temp_real = 0;
+ temp_imag = 0;
+ move64();
+ move64();
+ for ( i = 0; i < nY; i++ )
+ {
+ temp_real = W_add( temp_real, W_mult0_32_32( mixing_matrix_res_smooth_fx[idx], diff_f_real_fx[i] ) );
+ temp_imag = W_add( temp_imag, W_mult0_32_32( mixing_matrix_res_smooth_fx[idx], diff_f_imag_fx[i] ) );
+ idx += nY;
+ }
+ Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band] = W_extract_l( W_shr( temp_real, shifter ) );
+ Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band] = W_extract_l( W_shr( temp_imag, shifter ) );
+ }
+ }
+
+
+#else
matrix_product_mant_exp_fx( mixing_matrix_res_smooth_fx, mixing_matrix_res_smooth_e, nY, nY, 0, diff_f_real_fx, 25, nY, 1, 0, output_f_real_fx, &output_f_real_e );
scale_sig32( output_f_real_fx, nY, sub( Q6, sub( Q31, output_f_real_e ) ) ); // Q6
@@ -607,6 +647,7 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx(
Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band] = output_f_imag_fx[ch_idx]; // Q6
move32();
}
+#endif
}
ELSE
{
@@ -630,6 +671,36 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx(
}
/* apply mixing matrix */
+#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE
+ {
+ Word16 shifter;
+ shifter = 31 - mixing_matrix_smooth_e;
+
+ FOR( ch_idx = 0; ch_idx < nY; ch_idx++ )
+ {
+ int i;
+ Word16 idx;
+ Word64 temp_real, temp_imag;
+
+
+ idx = ch_idx;
+ temp_real = 0;
+ temp_imag = 0;
+ move64();
+ move64();
+ for ( i = 0; i < nX; i++ )
+ {
+ temp_real = W_add( temp_real, W_mult0_32_32( mixing_matrix_smooth_fx[idx], input_f_real_fx[i] ) );
+ temp_imag = W_add( temp_imag, W_mult0_32_32( mixing_matrix_smooth_fx[idx], input_f_imag_fx[i] ) );
+ idx += nY;
+ }
+ Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band], W_extract_l( W_shr( temp_real, shifter ) ) );
+ move32();
+ Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band], W_extract_l( W_shr( temp_imag, shifter ) ) );
+ move32();
+ }
+ }
+#else
matrix_product_mant_exp_fx( mixing_matrix_smooth_fx, mixing_matrix_smooth_e, nY, nX, 0, input_f_real_fx, 25, nX, 1, 0, output_f_real_fx, &output_f_real_e );
scale_sig32( output_f_real_fx, MAX_CICP_CHANNELS, sub( 6, sub( 31, output_f_real_e ) ) ); // Q6
@@ -646,6 +717,7 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx(
Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band], output_f_imag_fx[ch_idx] );
move32();
}
+#endif
}
}
diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c
deleted file mode 100644
index ba49051897aea72fdf720be956a9bcace9489d77..0000000000000000000000000000000000000000
--- a/lib_dec/ivas_init_dec.c
+++ /dev/null
@@ -1,3561 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-#include
-#include
-#include
-#include "options.h"
-#include "ivas_cnst.h"
-#include "ivas_prot_rend_fx.h"
-#include "rom_com.h"
-#include "ivas_rom_com.h"
-#include "ivas_stat_enc.h"
-#include "prot_fx.h"
-#include "wmc_auto.h"
-#include "ivas_prot_fx.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-#include "lib_isar_pre_rend.h"
-#include "isar_prot.h"
-#include "isar_stat.h"
-#endif
-
-
-/*-------------------------------------------------------------------*
- * Local function prototypes
- *-------------------------------------------------------------------*/
-
-static ivas_error ivas_read_format( Decoder_Struct *st_ivas, Word16 *num_bits_read );
-
-static ivas_error doSanityChecks_IVAS( Decoder_Struct *st_ivas );
-
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-static ivas_error ivas_dec_reconfig_split_rend( Decoder_Struct *st_ivas );
-
-
-/*-------------------------------------------------------------------*
- * ivas_dec_reconfig_split_rend()
- *
- * IVAS decoder split rend reconfig
- *-------------------------------------------------------------------*/
-
-static ivas_error ivas_dec_reconfig_split_rend(
- Decoder_Struct *st_ivas /* i : IVAS decoder structure */
-)
-{
- ivas_error error;
- Word16 cldfb_in_flag, num_ch, ch, isCldfbNeeded, i, pcm_out_flag;
- SPLIT_REND_WRAPPER *hSplitRendWrapper;
-
- hSplitRendWrapper = &st_ivas->hSplitBinRend->splitrend;
- move16();
- pcm_out_flag = ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0;
- move16();
- cldfb_in_flag = 0;
- move16();
-
- IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) )
- {
- cldfb_in_flag = 1;
- move16();
- }
-
- ISAR_PRE_REND_GetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &hSplitRendWrapper->multiBinPoseData, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->sr_pose_pred_axis : DEFAULT_AXIS );
-
- isCldfbNeeded = 0;
- move16();
-
- IF( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) && EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) ||
- ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) )
- {
- cldfb_in_flag = 0;
- move16();
- }
-
- IF( NE_16( st_ivas->renderer_type, RENDERER_DISABLE ) )
- {
- IF( EQ_16( cldfb_in_flag, 0 ) )
- {
- isCldfbNeeded = 1;
- move16();
- }
- ELSE IF( EQ_16( st_ivas->hRenderConfig->split_rend_config.codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) && cldfb_in_flag )
- {
- isCldfbNeeded = 1;
- move16();
- }
- ELSE IF( pcm_out_flag && cldfb_in_flag )
- {
- isCldfbNeeded = 1;
- move16();
- }
- }
- ELSE IF( st_ivas->hDecoderConfig->Opt_non_diegetic_pan )
- {
- isCldfbNeeded = 1;
- move16();
- }
-
- IF( EQ_16( isCldfbNeeded, 1 ) && hSplitRendWrapper->hCldfbHandles == NULL )
- {
- IF( ( hSplitRendWrapper->hCldfbHandles = (CLDFB_HANDLES_WRAPPER_HANDLE) malloc( sizeof( CLDFB_HANDLES_WRAPPER ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for CLDFB handles\n" ) );
- }
-
- num_ch = i_mult( MAX_HEAD_ROT_POSES, BINAURAL_CHANNELS );
- move16();
- FOR( ch = 0; ch < num_ch; ch++ )
- {
- hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL;
- move16();
- }
-
- num_ch = i_mult( hSplitRendWrapper->multiBinPoseData.num_poses, BINAURAL_CHANNELS );
- move16();
-
- FOR( ch = 0; ch < num_ch; ch++ )
- {
- IF( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ), CLDFB_ANALYSIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not open CLDFB handles\n" ) );
- }
- }
-
- FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
- {
- if ( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), CLDFB_SYNTHESIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
- {
- return error;
- }
- }
- }
- ELSE IF( EQ_16( isCldfbNeeded, 0 ) && hSplitRendWrapper->hCldfbHandles != NULL )
- {
- num_ch = i_mult( MAX_HEAD_ROT_POSES, BINAURAL_CHANNELS );
- move16();
- FOR( ch = 0; ch < num_ch; ch++ )
- {
- IF( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] != NULL )
- {
- deleteCldfb_ivas_fx( &hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] );
- hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL;
- move32();
- }
- }
-
- FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
- {
- IF( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] != NULL )
- {
- deleteCldfb_ivas_fx( &hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] );
- hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] = NULL;
- move32();
- }
- }
-
- free( hSplitRendWrapper->hCldfbHandles );
- hSplitRendWrapper->hCldfbHandles = NULL;
- move32();
- }
-
- IF( ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) &&
- ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || NE_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) &&
- !( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) /* td-rend not needed? */
- {
- FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
- {
- IF( st_ivas->hTdRendHandles[i] != NULL )
- {
- st_ivas->hTdRendHandles[i]->HrFiltSet_p = NULL;
- move32();
- ivas_td_binaural_close_fx( &st_ivas->hTdRendHandles[i] );
- }
- }
- }
-
- return IVAS_ERR_OK;
-}
-
-
-/*-------------------------------------------------------------------*
- * ivas_dec_init_split_rend()
- *
- * IVAS decoder split rend init
- *-------------------------------------------------------------------*/
-
-static ivas_error ivas_dec_init_split_rend(
- Decoder_Struct *st_ivas /* i : IVAS decoder structure */
-)
-{
- ivas_error error;
- Word16 cldfb_in_flag, pcm_out_flag;
- Word16 mixed_td_cldfb_flag;
-
- pcm_out_flag = ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0;
- cldfb_in_flag = 0;
- move16();
-
- IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) )
- {
- cldfb_in_flag = 1;
- move16();
- }
-
- ISAR_PRE_REND_GetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->sr_pose_pred_axis : DEFAULT_AXIS );
-
- IF( EQ_16( cldfb_in_flag, 1 ) && ( EQ_16( st_ivas->hSplitBinRend->splitrend.multiBinPoseData.poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ) )
- {
- IF( ( st_ivas->hSplitBinRend->hCldfbDataOut = (ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for cldfb data out buffer\n" ) );
- }
- }
-
- mixed_td_cldfb_flag = 0;
- move16();
- IF( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) && EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) ||
- ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) )
- {
- mixed_td_cldfb_flag = 1;
- move16();
- }
-
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- error = ISAR_PRE_REND_open( &st_ivas->hSplitBinRend->splitrend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hDecoderConfig->output_Fs, cldfb_in_flag, pcm_out_flag, st_ivas->hDecoderConfig->render_framesize, mixed_td_cldfb_flag );
- move16();
-#else
- error = ISAR_PRE_REND_open( &st_ivas->hSplitBinRend->splitrend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hDecoderConfig->output_Fs, cldfb_in_flag, pcm_out_flag, (int16_t) st_ivas->hDecoderConfig->render_framesize, mixed_td_cldfb_flag );
- move16();
-#endif
- return error;
-}
-#endif
-
-/*-------------------------------------------------------------------*
- * ivas_dec_setup()
- *
- * IVAS decoder setup
- *-------------------------------------------------------------------*/
-
-ivas_error ivas_dec_setup(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- UWord16 *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */
- Word16 *data /* o : output synthesis signal */
-)
-{
- Word16 k, idx, num_bits_read;
- Word16 nchan_ism, element_mode_flag;
- Decoder_State *st;
- Word32 ivas_total_brate;
- ivas_error error;
-
- error = IVAS_ERR_OK;
- move32();
- num_bits_read = 0;
- move16();
- element_mode_flag = 0;
- move16();
-
- ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;
- move32();
-
- /*-------------------------------------------------------------------*
- * Read IVAS format
- *-------------------------------------------------------------------*/
-
- ivas_read_format( st_ivas, &num_bits_read );
-
- Word16 SrcInd[MAX_NUM_TDREND_CHANNELS];
- Word16 num_src = 0;
- move16();
-
- /*-------------------------------------------------------------------*
- * Read other signling (ISM/MC mode, number of channels, etc.)
- *-------------------------------------------------------------------*/
-
- IF( is_DTXrate( ivas_total_brate ) == 0 )
- {
- /*-------------------------------------------------------------------*
- * Read IVAS format related signaling:
- * - in ISM : read number of objects
- * - in SBA : read SBA planar flag and SBA order
- * - in MASA : read number of TC
- * - in MC : read LS setup
- *-------------------------------------------------------------------*/
-
- IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) )
- {
- element_mode_flag = 1;
- move16();
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
- {
- /* read the number of objects */
- st_ivas->nchan_transport = 1;
- move16();
- nchan_ism = 1;
- move16();
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
- k = extract_l( L_sub( res_dec, 1 ) );
-
- WHILE( st_ivas->bit_stream[k] && ( nchan_ism < MAX_NUM_OBJECTS ) )
- {
- nchan_ism = add( nchan_ism, 1 );
- k = sub( k, 1 );
- }
-
- st_ivas->nchan_ism = nchan_ism;
- move16();
-
- IF( NE_32( ( error = ivas_ism_dec_config_fx( st_ivas, st_ivas->ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
- {
- /* read Ambisonic (SBA) planar flag */
- st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read];
- move16();
- num_bits_read = add( num_bits_read, SBA_PLANAR_BITS );
-
- /* read Ambisonic (SBA) order */
- st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1];
- move16();
- st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) );
- move16();
- num_bits_read = add( num_bits_read, SBA_ORDER_BITS );
- test();
- test();
- IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) && GT_32( ivas_total_brate, IVAS_SID_5k2 ) )
- {
- IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE
- {
- /* set Ambisonic (SBA) order used for analysis and coding */
- st_ivas->sba_analysis_order = ivas_sba_get_analysis_order_fx( ivas_total_brate, st_ivas->sba_order );
- move16();
- ivas_sba_config_fx( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
- {
- /* read number of MASA transport channels */
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
- IF( st_ivas->bit_stream[res_dec - 1] )
- {
- st_ivas->nchan_transport = 2;
- move16();
- element_mode_flag = 1;
- move16();
- }
- ELSE
- {
- st_ivas->nchan_transport = 1;
- move16();
- }
-
- IF( st_ivas->ini_frame > 0 )
- {
- /* reconfigure in case a change of operation mode is detected */
- test();
- test();
- IF( ( GT_32( ivas_total_brate, IVAS_SID_5k2 ) && NE_32( ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) || ( st_ivas->ini_active_frame == 0 ) )
- {
- IF( EQ_32( st_ivas->last_ivas_format, MASA_FORMAT ) )
- {
- test();
- test();
- test();
- IF( ( st_ivas->ini_active_frame == 0 ) && NE_32( ivas_total_brate, FRAME_NO_DATA ) && LT_32( ivas_total_brate, MASA_STEREO_MIN_BITRATE ) && EQ_16( st_ivas->nCPE, 1 ) )
- {
- st_ivas->hCPE[0]->nchan_out = 1;
- move16();
- }
- ELSE
- {
- IF( NE_32( ( error = ivas_masa_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- }
- ELSE
- {
- IF( NE_32( ( error = ivas_omasa_dec_config_fx( st_ivas, nSamplesRendered, &num_src, SrcInd, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- }
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
- {
- st_ivas->nchan_transport = 2; /* always 2 MASA transport channels */
- move16();
- /* for the DISC mode the number of objects are written at the end of the bitstream, in the MASA metadata */
-
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
- st_ivas->nchan_ism = add( add( shl( st_ivas->bit_stream[res_dec - 1], 1 ), st_ivas->bit_stream[res_dec - 2] ), 1 );
- move16();
- st_ivas->ism_mode = ivas_omasa_ism_mode_select_fx( ivas_total_brate, st_ivas->nchan_ism );
- move16();
- IF( st_ivas->ini_frame > 0 )
- {
- /* reconfigure in case a change of operation mode is detected */
- test();
- test();
- IF( ( GT_32( ivas_total_brate, IVAS_SID_5k2 ) && NE_32( ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) || ( st_ivas->ini_active_frame == 0 ) )
- {
- IF( NE_32( ( error = ivas_omasa_dec_config_fx( st_ivas, nSamplesRendered, &num_src, SrcInd, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
- {
- /* the number of objects is written at the end of the bitstream, in the SBA metadata */
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
- st_ivas->nchan_ism = add( add( shl( st_ivas->bit_stream[res_dec - 1], 1 ), st_ivas->bit_stream[res_dec - 2] ), 1 );
- move16();
-
- test();
- IF( LT_32( ivas_total_brate, IVAS_24k4 ) || GE_32( ivas_total_brate, IVAS_256k ) )
- {
- /* read Ambisonic (SBA) planar flag */
- st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read];
- move16();
- num_bits_read = add( num_bits_read, SBA_PLANAR_BITS );
- }
-
- st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1];
- move16();
- st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) );
- move16();
- num_bits_read = add( num_bits_read, SBA_ORDER_BITS );
-
- /* read Ambisonic (SBA) order */
- if ( LT_32( ivas_total_brate, IVAS_256k ) )
- {
- st_ivas->sba_order = 3;
- move16();
- }
-
- test();
- IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) )
- {
- IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE
- {
- /* set Ambisonic (SBA) order used for analysis and coding */
- st_ivas->sba_analysis_order = ivas_sba_get_analysis_order_fx( ivas_total_brate, st_ivas->sba_order );
- move16();
-
- ivas_sba_config_fx( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init );
-
- /*correct number of CPEs for discrete ISM coding*/
- test();
- IF( st_ivas->ini_frame > 0 && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
- {
- st_ivas->nCPE = add( st_ivas->nCPE, shr( add( st_ivas->nchan_ism, 1 ), 1 ) );
- move16();
- }
- }
-
- IF( GE_32( ivas_total_brate, IVAS_256k ) )
- {
- st_ivas->ism_mode = ISM_SBA_MODE_DISC;
- move32();
- }
- ELSE
- {
- st_ivas->ism_mode = ISM_MODE_NONE;
- move32();
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) )
- {
- /* read MC configuration */
- idx = 0;
- move16();
- FOR( k = 0; k < MC_LS_SETUP_BITS; k++ )
- {
- IF( st_ivas->bit_stream[num_bits_read + k] )
- {
- idx = add( idx, shl( 1, sub( ( MC_LS_SETUP_BITS - 1 ), k ) ) );
- }
- }
- num_bits_read = add( num_bits_read, MC_LS_SETUP_BITS );
-
- /* select MC format mode; reconfigure the MC format decoder */
- IF( NE_32( ( error = ivas_mc_dec_config_fx( st_ivas, idx, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- /*-------------------------------------------------------------------*
- * Read element mode
- *-------------------------------------------------------------------*/
-
- IF( st_ivas->ini_frame == 0 && element_mode_flag )
- {
- /* read stereo technology info */
- IF( LT_32( ivas_total_brate, MIN_BRATE_MDCT_STEREO ) )
- {
- /* 1 bit */
- IF( st_ivas->bit_stream[num_bits_read] )
- {
- st_ivas->element_mode_init = add( 1, IVAS_CPE_DFT );
- move16();
- }
- ELSE
- {
- st_ivas->element_mode_init = add( 0, IVAS_CPE_DFT );
- move16();
- }
- }
- ELSE
- {
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- }
- }
- }
- ELSE IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) )
- {
- SWITCH( st_ivas->sid_format )
- {
- case SID_DFT_STEREO:
- st_ivas->element_mode_init = IVAS_CPE_DFT;
- move16();
- BREAK;
- case SID_MDCT_STEREO:
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- BREAK;
- case SID_ISM:
- st_ivas->element_mode_init = IVAS_SCE;
- move16();
- BREAK;
- case SID_MASA_1TC:
- st_ivas->element_mode_init = IVAS_SCE;
- move16();
- st_ivas->nchan_transport = 1;
- move16();
- BREAK;
- case SID_MASA_2TC:; // empyt statement for declaration
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
- IF( EQ_16( st_ivas->bit_stream[( res_dec - 1 ) - SID_FORMAT_NBITS], 1 ) )
- {
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- }
- ELSE
- {
- st_ivas->element_mode_init = IVAS_CPE_DFT;
- move16();
- }
- st_ivas->nchan_transport = 2;
- move16();
- BREAK;
- case SID_SBA_1TC:
- st_ivas->element_mode_init = IVAS_SCE;
- move16();
- BREAK;
- case SID_SBA_2TC:
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- BREAK;
- }
-
- test();
- IF( st_ivas->ini_frame > 0 && EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
- {
- Word16 nchan_transport_old, nchan_transport;
- nchan_transport_old = st_ivas->nchan_transport;
- move16();
- IF( ( EQ_16( st_ivas->sid_format, SID_SBA_2TC ) ) )
- {
- nchan_transport = 2;
- }
- ELSE
- {
- nchan_transport = 1;
- }
- move16();
-
- IF( NE_16( nchan_transport_old, nchan_transport ) )
- {
- /*Setting the default bitrate for the reconfig function*/
- IF( EQ_16( st_ivas->sid_format, SID_SBA_2TC ) )
- {
- st_ivas->hDecoderConfig->ivas_total_brate = IVAS_48k;
- move16();
- }
- ELSE
- {
- st_ivas->hDecoderConfig->ivas_total_brate = IVAS_24k4;
- move16();
- }
-
- IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- st_ivas->last_active_ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;
- move32();
- st_ivas->hDecoderConfig->ivas_total_brate = ivas_total_brate;
- move32();
- }
- }
-
- IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
- {
- ISM_MODE last_ism_mode = st_ivas->ism_mode;
- move32();
- /* read the number of objects */
- st_ivas->nchan_transport = 1;
- move16();
- nchan_ism = 1;
- move16();
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
- k = extract_l( L_sub( L_sub( res_dec, 1 ), SID_FORMAT_NBITS ) );
- move16();
-
- WHILE( st_ivas->bit_stream[k] && ( nchan_ism < MAX_NUM_OBJECTS ) )
- {
- nchan_ism = add( nchan_ism, 1 );
- k = sub( k, 1 );
- }
- k = sub( k, 1 );
-
- test();
- IF( st_ivas->ini_frame > 0 && NE_16( nchan_ism, st_ivas->nchan_ism ) )
- {
- return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "wrong number of objects signalled!" );
- }
-
- st_ivas->nchan_ism = nchan_ism;
- move16();
- /* read ism_mode */
- st_ivas->ism_mode = ISM_MODE_DISC;
- move32();
- IF( GT_16( nchan_ism, 2 ) )
- {
- k = sub( k, nchan_ism ); /* SID metadata flags */
- idx = st_ivas->bit_stream[k];
- move16();
- st_ivas->ism_mode = (ISM_MODE) add( idx, 1 );
- move32();
- }
-
- if ( st_ivas->ini_frame == 0 )
- {
- last_ism_mode = st_ivas->ism_mode;
- move32();
- }
-
- IF( NE_32( ( error = ivas_ism_dec_config_fx( st_ivas, last_ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- }
-
- /*-------------------------------------------------------------------*
- * Initialize decoder in the first good frame based on IVAS format
- * and number of transport channels
- *-------------------------------------------------------------------*/
- test();
- IF( st_ivas->ini_frame == 0 && NE_32( st_ivas->ivas_format, UNDEFINED_FORMAT ) )
- {
- IF( NE_32( ( error = doSanityChecks_IVAS( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return IVAS_ERROR( error, "Sanity checks failed" );
- }
-
- IF( NE_32( ( error = ivas_init_decoder_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- /*-----------------------------------------------------------------*
- * reconfig split rendering as renderer might change after bitrate switching
- *-----------------------------------------------------------------*/
-
- IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
- {
- if ( ( error = ivas_dec_reconfig_split_rend( st_ivas ) ) != IVAS_ERR_OK )
- {
- return error;
- }
- }
-#endif
-
- /*----------------------------------------------------------------*
- * Reset bitstream pointers
- *----------------------------------------------------------------*/
-
- ivas_set_bitstream_pointers( st_ivas );
-
- reset_elements( st_ivas );
-
- /* update bitstream buffer pointer -> take into account already read bits */
- test();
- IF( ( st_ivas->nSCE > 0 ) || ( st_ivas->nCPE > 0 ) )
- {
- IF( st_ivas->nSCE > 0 )
- {
- st = st_ivas->hSCE[0]->hCoreCoder[0];
- }
- ELSE
- {
- st = st_ivas->hCPE[0]->hCoreCoder[0];
- }
- st->next_bit_pos = num_bits_read;
- move16();
- st->total_brate = ACELP_8k00; /* only temporary initialization - this is needed for get_next_indice() in the frame following NO_DATA frame */
- move32();
- }
-
- return error;
-}
-
-
-/*-------------------------------------------------------------------*
- * ivas_read_format()
- *
- * Read IVAS format signaling
- *-------------------------------------------------------------------*/
-
-static ivas_error ivas_read_format(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- Word16 *num_bits_read /* o : number of IVAS signaling bits read from the bitstream */
-)
-{
- Word16 k, idx;
- Word32 ivas_total_brate;
- ivas_error error;
-
- error = IVAS_ERR_OK;
- move32();
-
- ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;
- move32();
-
- *num_bits_read = 0;
- move16();
- test();
- test();
- IF( !st_ivas->bfi && is_DTXrate( ivas_total_brate ) == 0 )
- {
- /* read IVAS format */
- k = 0;
- move16();
- if ( st_ivas->bit_stream[*num_bits_read] )
- {
- k = 1;
- move16();
- }
- k = shl( k, 1 );
- ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
- move16();
- if ( st_ivas->bit_stream[*num_bits_read] )
- {
- k = add( k, 1 );
- }
- ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
- move16();
- SWITCH( k )
- {
- case 0:
- st_ivas->ivas_format = STEREO_FORMAT;
- move32();
- BREAK;
- case 1:
- st_ivas->ivas_format = MC_FORMAT;
- move32();
- BREAK;
- case 2:
- st_ivas->ivas_format = ISM_FORMAT;
- move32();
-
- IF( GE_32( ivas_total_brate, IVAS_24k4 ) )
- {
- IF( st_ivas->bit_stream[*num_bits_read] )
- {
- ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
- move16();
- IF( st_ivas->bit_stream[*num_bits_read] )
- {
- st_ivas->ivas_format = SBA_ISM_FORMAT;
- move32();
- }
- ELSE
- {
- st_ivas->ivas_format = MASA_ISM_FORMAT;
- move32();
- }
- }
-
- ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
- move16();
- }
- BREAK;
- case 3:
- IF( st_ivas->bit_stream[*num_bits_read] )
- {
- st_ivas->ivas_format = MASA_FORMAT;
- move32();
- }
- ELSE
- {
- st_ivas->ivas_format = SBA_FORMAT;
- move32();
- /* read Ambisonic (SBA) planar flag */
- st_ivas->sba_planar = st_ivas->bit_stream[( *num_bits_read ) + 1];
- move16();
-
- /* read Ambisonic (SBA) order */
- st_ivas->sba_order = st_ivas->bit_stream[( *num_bits_read ) + 2 + SBA_PLANAR_BITS];
- move16();
- st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[( *num_bits_read ) + 1 + SBA_PLANAR_BITS], 1 ) );
- move16();
- if ( st_ivas->sba_order == 0 )
- {
- st_ivas->ivas_format = SBA_ISM_FORMAT;
- move32();
- }
- }
- ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
- move16();
-
- BREAK;
- }
- }
- ELSE IF( ( st_ivas->bfi == 0 ) && EQ_32( ivas_total_brate, IVAS_SID_5k2 ) )
- {
- /* read IVAS format in SID frame */
- idx = 0;
- move16();
- FOR( k = 0; k < SID_FORMAT_NBITS; k++ )
- {
- idx += st_ivas->bit_stream[k] << ( SID_FORMAT_NBITS - 1 - k );
- }
-
- ( *num_bits_read ) = add( *num_bits_read, SID_FORMAT_NBITS );
- move16();
- st_ivas->sid_format = idx;
- move16();
-
- SWITCH( idx )
- {
- case SID_DFT_STEREO:
- case SID_MDCT_STEREO:
- st_ivas->ivas_format = STEREO_FORMAT;
- move32();
- BREAK;
- case SID_ISM:
- st_ivas->ivas_format = ISM_FORMAT;
- move32();
- BREAK;
- case SID_MULTICHANNEL:
- st_ivas->ivas_format = MC_FORMAT;
- move32();
- BREAK;
- case SID_SBA_1TC:
- st_ivas->ivas_format = SBA_FORMAT;
- move32();
- st_ivas->element_mode_init = IVAS_SCE;
- move16();
- BREAK;
- case SID_SBA_2TC:
- st_ivas->ivas_format = SBA_FORMAT;
- move32();
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- BREAK;
- case SID_MASA_1TC:
- st_ivas->ivas_format = MASA_FORMAT;
- move32();
- st_ivas->element_mode_init = IVAS_SCE;
- move16();
- BREAK;
- case SID_MASA_2TC:
- st_ivas->ivas_format = MASA_FORMAT;
- move32();
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
- IF( EQ_32( st_ivas->bit_stream[res_dec - 1], 1 ) )
- {
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- }
- ELSE
- {
- st_ivas->element_mode_init = IVAS_CPE_DFT;
- move16();
- }
- BREAK;
- default:
- /* This should actually be impossible, since only 3 bits are read, so if this happens something is broken */
- return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Invalid value %c found in SID format field.", st_ivas->sid_format );
- }
-
- IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
- {
- if ( st_ivas->sba_analysis_order == 0 )
- {
- st_ivas->sba_analysis_order = SBA_FOA_ORDER;
- move16();
- }
- }
-
- /* reset bitstream handle to avoid BER detection after reading the 2400 kbps for ch0 */
- st_ivas->bit_stream = st_ivas->bit_stream + ( *num_bits_read );
- ( *num_bits_read ) = 0;
- move16();
- }
- ELSE
- {
- /* In SID/NO_DATA frames, use the previous frame IVAS format */
- }
-
- return error;
-}
-
-
-/*-------------------------------------------------------------------*
- * getNumChanSynthesis()
- *
- * get number of output channels used for synthesis/decoding
- * (often different from number of output channels!)
- *-------------------------------------------------------------------*/
-
-/*! r: number of channels to be synthesised */
-
-Word16 getNumChanSynthesis(
- Decoder_Struct *st_ivas /* i : IVAS decoder structure */
-)
-{
- Word16 n;
-
- n = add( st_ivas->nSCE, imult1616( CPE_CHANNELS, st_ivas->nCPE ) );
- test();
- test();
- IF( st_ivas->sba_dirac_stereo_flag )
- {
- n = CPE_CHANNELS;
- move16();
- }
- ELSE IF( ( st_ivas->hMCT != NULL || EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) && NE_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
- {
- n = st_ivas->nchan_transport;
- move16();
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
- {
- IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
- {
- n = add( st_ivas->nchan_transport, st_ivas->nchan_ism );
- }
- ELSE
- {
- n = st_ivas->nchan_transport;
- move16();
- }
- }
-
- return n;
-}
-
-/*-------------------------------------------------------------------*
- * copy_decoder_config()
- *
- * Copy IVAS configuration structure to the CoreCoder state structure
- *-------------------------------------------------------------------*/
-
-void copy_decoder_config(
- Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
- Decoder_State *st /* o : decoder state structure */
-)
-{
- st->output_Fs = st_ivas->hDecoderConfig->output_Fs;
- move32();
- st->Opt_AMR_WB = st_ivas->hDecoderConfig->Opt_AMR_WB;
- move16();
- st->codec_mode = st_ivas->codec_mode;
- move16();
- st->ini_frame = st_ivas->ini_frame;
- move16();
-
- st->bfi = st_ivas->bfi;
- move16();
-
- st->writeFECoffset = st_ivas->writeFECoffset;
- move16();
-
- st->element_mode = st_ivas->element_mode_init;
- move16();
-
- return;
-}
-
-/*-------------------------------------------------------------------*
- * ivas_init_decoder_front()
- *
- * Set decoder parameters to initial values
- *-------------------------------------------------------------------*/
-ivas_error ivas_init_decoder_front(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-)
-{
- ivas_error error;
-
- error = IVAS_ERR_OK;
- move32();
- /*-----------------------------------------------------------------*
- * Resets
- *-----------------------------------------------------------------*/
-
- st_ivas->nSCE = 0;
- move16();
- st_ivas->nCPE = 0;
- move16();
- st_ivas->nCPE_old = 0;
- move16();
- st_ivas->nchan_transport = -1;
- move16();
- st_ivas->ism_mode = ISM_MODE_NONE;
- move32();
- st_ivas->mc_mode = MC_MODE_NONE;
- move32();
- st_ivas->sba_dirac_stereo_flag = 0;
- move16();
-
- /* HRTF binauralization latency in ns */
- st_ivas->binaural_latency_ns = 0;
- move32();
-
- /*-------------------------------------------------------------------*
- * Allocate and initialize Custom loudspeaker layout handle
- *--------------------------------------------------------------------*/
-
- IF( st_ivas->hDecoderConfig->Opt_LsCustom )
- {
- IF( EQ_32( ( error = ivas_ls_custom_open_fx( &( st_ivas->hLsSetupCustom ) ) ), IVAS_ERR_OK ) )
- {
- set_zero_fx( ( st_ivas->hLsSetupCustom )->ls_azimuth_fx, MAX_OUTPUT_CHANNELS );
- set_zero_fx( ( st_ivas->hLsSetupCustom )->ls_elevation_fx, MAX_OUTPUT_CHANNELS );
- }
- ELSE
- {
- return error;
- }
- }
-
- /*-------------------------------------------------------------------*
- * Allocate and initialize Head-Tracking handle
- *--------------------------------------------------------------------*/
-
- IF( st_ivas->hDecoderConfig->Opt_Headrotation )
- {
- IF( NE_32( ( error = ivas_headTrack_open_fx( &( st_ivas->hHeadTrackData ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- error = ivas_orient_trk_SetTrackingType_fx( st_ivas->hHeadTrackData->OrientationTracker, st_ivas->hDecoderConfig->orientation_tracking );
- IF( NE_32( ( error ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- /*-------------------------------------------------------------------*
- * Allocate and initialize external orientation handle
- *--------------------------------------------------------------------*/
-
- IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation )
- {
- IF( NE_32( ( error = ivas_external_orientation_open( &( st_ivas->hExtOrientationData ), st_ivas->hDecoderConfig->render_framesize ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- /*-------------------------------------------------------------------*
- * Allocate and initialize combined orientation handle
- *--------------------------------------------------------------------*/
- test();
- IF( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation )
- {
- IF( NE_32( ( error = ivas_combined_orientation_open( &( st_ivas->hCombinedOrientationData ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hDecoderConfig->render_framesize ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- /*-------------------------------------------------------------------*
- * Allocate HRTF binary handle
- *--------------------------------------------------------------------*/
-
- IF( st_ivas->hDecoderConfig->Opt_HRTF_binary )
- {
- IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( st_ivas->hHrtfTD ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_HRTF_CRend_binary_open_fx( &( st_ivas->hSetOfHRTF ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_HRTF_fastconv_binary_open_fx( &st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_HRTF_parambin_binary_open_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- /*-------------------------------------------------------------------*
- * Allocate and initialize Binaural Renderer configuration handle
- *--------------------------------------------------------------------*/
- test();
- test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ||
- ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) )
-#else
- IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
- {
- IF( NE_32( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_render_config_init_from_rom_fx( &st_ivas->hRenderConfig ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- return error;
-}
-
-
-/*-------------------------------------------------------------------*
- * ivas_init_decoder()
- *
- * Initialize IVAS decoder state structure
- *-------------------------------------------------------------------*/
-ivas_error ivas_init_decoder_fx(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-)
-{
- Word16 i, n, k;
- Word16 sce_id, cpe_id;
- Word16 numCldfbAnalyses, numCldfbSyntheses;
- Word16 granularity, n_channels_transport_jbm;
- Word32 output_Fs, ivas_total_brate;
- Word32 binauralization_delay_ns;
- AUDIO_CONFIG output_config;
- DECODER_CONFIG_HANDLE hDecoderConfig;
- ivas_error error;
- Word32 ism_total_brate;
-
- error = IVAS_ERR_OK;
- move32();
- output_Fs = st_ivas->hDecoderConfig->output_Fs;
- move32();
- hDecoderConfig = st_ivas->hDecoderConfig;
- output_config = hDecoderConfig->output_config;
- ivas_total_brate = hDecoderConfig->ivas_total_brate;
- move32();
- hDecoderConfig->last_ivas_total_brate = ivas_total_brate;
- move32();
- st_ivas->last_active_ivas_total_brate = ivas_total_brate;
- move32();
- /*-----------------------------------------------------------------*
- * Set number of output channels for EXTERNAL output config.
- *-----------------------------------------------------------------*/
-
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
- {
- hDecoderConfig->nchan_out = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 );
- move16();
- hDecoderConfig->nchan_out = add( hDecoderConfig->nchan_out, st_ivas->nchan_ism );
- move16();
- }
- ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
- {
- hDecoderConfig->nchan_out = add( st_ivas->nchan_transport, st_ivas->nchan_ism );
- move16();
- }
- ELSE IF( !EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
- {
- hDecoderConfig->nchan_out = st_ivas->nchan_transport;
- move16();
- }
-
- st_ivas->hOutSetup.nchan_out_woLFE = hDecoderConfig->nchan_out;
- move16();
- }
-
- /*-----------------------------------------------------------------*
- * Set output and intern setup & renderer selection
- *-----------------------------------------------------------------*/
-
- st_ivas->intern_config = output_config;
- move32();
- ivas_output_init( &( st_ivas->hOutSetup ), output_config );
- test();
- IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
- {
- st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER;
- move16();
- st_ivas->intern_config = IVAS_AUDIO_CONFIG_7_1_4;
- move32();
- st_ivas->hOutSetup.output_config = st_ivas->intern_config;
- move32();
- st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( st_ivas->intern_config );
- move16();
- }
- test();
- IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER;
- move32();
- st_ivas->intern_config = IVAS_AUDIO_CONFIG_HOA3;
- move32();
- st_ivas->hOutSetup.output_config = IVAS_AUDIO_CONFIG_HOA3;
- move32();
- st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 );
- move16();
- }
-
- /* Only initialize transport setup if it is used */
- IF( NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_INVALID ) )
- {
- ivas_output_init( &( st_ivas->hTransSetup ), st_ivas->transport_config );
- }
-
- test();
- IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) )
- {
- ivas_mcmasa_setNumTransportChannels_fx( &( st_ivas->nchan_transport ), &( st_ivas->element_mode_init ), ivas_total_brate );
-
- ivas_mcmasa_set_separate_channel_mode_fx( &( st_ivas->hOutSetup.separateChannelEnabled ), &( st_ivas->hOutSetup.separateChannelIndex ), ivas_total_brate );
- }
-
- ivas_renderer_select( st_ivas );
-
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- IF( EQ_16( ( error = ivas_ls_custom_output_init_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- st_ivas->hOutSetup.ls_azimuth_fx = st_ivas->hLsSetupCustom->ls_azimuth_fx;
- move32();
- st_ivas->hOutSetup.ls_elevation_fx = st_ivas->hLsSetupCustom->ls_elevation_fx;
- move32();
- st_ivas->hIntSetup.ls_azimuth_fx = st_ivas->hLsSetupCustom->ls_azimuth_fx;
- move32();
- st_ivas->hIntSetup.ls_elevation_fx = st_ivas->hLsSetupCustom->ls_elevation_fx;
- move32();
- }
- ELSE
- {
- return error;
- }
- }
-
- ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->intern_config );
-
- test();
- IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) )
- {
- ivas_mcmasa_set_separate_channel_mode_fx( &( st_ivas->hIntSetup.separateChannelEnabled ), &( st_ivas->hIntSetup.separateChannelIndex ), ivas_total_brate );
-
- test();
- IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && st_ivas->hOutSetup.separateChannelEnabled )
- {
- st_ivas->hLsSetupCustom->separate_ch_found = 0;
- move16();
- IF( GE_16( st_ivas->hOutSetup.nchan_out_woLFE, MCMASA_MIN_SPEAKERS_SEPARATE_CENTER ) )
- {
- /* check for a speaker at (0, 0) if minimum speaker count is available */
- FOR( i = 0; i < st_ivas->hOutSetup.nchan_out_woLFE; i++ )
- {
- test();
- IF( ( L_shr( st_ivas->hOutSetup.ls_azimuth_fx[i], Q22 ) == 0 ) && ( L_shr( st_ivas->hOutSetup.ls_elevation_fx[i], Q22 ) == 0 ) )
- {
- st_ivas->hIntSetup.separateChannelIndex = i;
- move16();
- st_ivas->hLsSetupCustom->separate_ch_found = 1;
- move16();
- BREAK;
- }
- }
- }
- }
- }
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- /*-----------------------------------------------------------------*
- * Initialize binuaral split rendering
- *-----------------------------------------------------------------*/
-
- IF( st_ivas->hSplitBinRend != NULL && ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ||
- ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan && EQ_16( st_ivas->hRenderConfig->split_rend_config.dof, 0 ) ) ) )
- {
- IF( ( error = ivas_dec_init_split_rend( st_ivas ) ) != IVAS_ERR_OK )
- {
- return error;
- }
- }
-#endif
-
- /*-----------------------------------------------------------------*
- * Allocate and initialize SCE/CPE and other handles
- *-----------------------------------------------------------------*/
-
- IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) )
- {
- st_ivas->nSCE = 1; /* in mono, there is always only one SCE */
- move16();
- st_ivas->nCPE = 0;
- move16();
- st_ivas->nCPE_old = 0;
- move16();
- st_ivas->nchan_transport = 1;
- move16();
- sce_id = 0;
- move16();
-
- IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) )
- {
- st_ivas->nchan_transport = CPE_CHANNELS;
- move16();
- st_ivas->intern_config = IVAS_AUDIO_CONFIG_STEREO;
- move32();
-
- st_ivas->nSCE = 0;
- move16();
- st_ivas->nCPE = 1; /* in stereo, there is always only one CPE */
- move16();
- st_ivas->nCPE_old = 0;
- move16();
- cpe_id = 0;
- move16();
-
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, ivas_total_brate ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < st_ivas->nchan_transport; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
- }
-
- /* init EFAP for custom LS output and set hTransSetup */
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hOutSetup.ls_azimuth_fx, st_ivas->hOutSetup.ls_elevation_fx, st_ivas->hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- ivas_output_init( &( st_ivas->hTransSetup ), IVAS_AUDIO_CONFIG_STEREO );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
- {
- Word32 element_brate_tmp[MAX_NUM_OBJECTS];
-
- st_ivas->nSCE = st_ivas->nchan_transport; /* "st_ivas->nchan_transport" is known from ivas_dec_setup */
- move16();
- st_ivas->nCPE = 0;
- move16();
- st_ivas->nCPE_old = 0;
- move16();
- st_ivas->ism_extmeta_active = -1;
- move16();
- st_ivas->ism_extmeta_cnt = 0;
- move16();
- IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
- {
- st_ivas->nchan_transport = MAX_PARAM_ISM_WAVE;
- move16();
- st_ivas->nSCE = MAX_PARAM_ISM_WAVE;
- move16();
-
- IF( NE_32( ( error = ivas_param_ism_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nSCE, element_brate_tmp ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
- {
- IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, element_brate_tmp[sce_id] ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
-
- st_ivas->hSCE[sce_id]->hCoreCoder[0]->is_ism_format = 1;
- move16();
- }
-
- st_ivas->hISMDTX.sce_id_dtx = 0;
- move16();
-
- IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
- {
- st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2 = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed3;
- move16();
- }
- ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MODE_DISC ) )
- {
- FOR( sce_id = 0; sce_id < st_ivas->nSCE; ++sce_id )
- {
- st_ivas->hSCE[sce_id]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2 = add( 2, sce_id );
- move16();
- }
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
- {
- IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_spar_dec_open_fx( st_ivas, 0 ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- set16_fx( st_ivas->hSpar->hFbMixer->cldfb_cross_fade_fx, 0, CLDFB_NO_COL_MAX );
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) && st_ivas->hOutSetup.is_loudspeaker_setup )
- {
- IF( NE_32( ( error = ivas_sba_get_hoa_dec_matrix_fx( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- Word16 hodirac_flag = ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order );
- IF( hodirac_flag )
- {
- IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, IVAS_MAX_NUM_BANDS, st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE
- {
- IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
-
- test();
- test();
- IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) )
- {
- IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band;
- move16();
- }
- ELSE
- {
- Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1];
-
- st_ivas->hSpar->enc_param_start_band = s_min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND );
- move16();
-
- IF( ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) )
- {
- st_ivas->hSpar->enc_param_start_band = 0;
- move16();
- set8_fx( (Word8 *) st_ivas->hQMetaData->twoDirBands, (Word8) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands );
- st_ivas->hQMetaData->numTwoDirBands = (UWord8) st_ivas->hQMetaData->q_direction[0].cfg.nbands;
- move16();
- }
-
- ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ),
- st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0, 1 );
- }
-
- st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas );
- move16();
-
- FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
- }
-
- FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, (res_dec) *CPE_CHANNELS ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
- }
- }
-
- /* create CPE element for DFT Stereo like upmix */
- test();
- IF( st_ivas->sba_dirac_stereo_flag && ( st_ivas->nCPE == 0 ) )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 );
-
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */
- st_ivas->hCPE[0]->hCoreCoder[1] = NULL;
- }
-
- IF( GT_16( st_ivas->nCPE, 1 ) )
- {
- IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- /* set CNA/CNG flags */
- ivas_sba_set_cna_cng_flag( st_ivas );
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
- {
- /* if we start in ISM_MODE_NONE in MASA_ISM, that appears as normal MASA, but we may change to a mode with ISMs */
- st_ivas->ism_extmeta_active = -1;
- move16();
- st_ivas->ism_extmeta_cnt = 0;
- move16();
- IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- test();
- test();
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) )
- {
- IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
- }
-
- FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
- }
- }
-
- /* set CNA/CNG flags */
- ivas_sba_set_cna_cng_flag( st_ivas );
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
- {
- Word32 temp_brate[MAX_SCE];
- st_ivas->ism_extmeta_active = -1;
- move16();
- st_ivas->ism_extmeta_cnt = 0;
- move16();
-
- st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas );
- move16();
- IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_spar_dec_open_fx( st_ivas, 0 ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) && st_ivas->hOutSetup.is_loudspeaker_setup )
- {
- IF( NE_32( ( error = ivas_sba_get_hoa_dec_matrix_fx( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- Word16 hodirac_flag = ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order );
- IF( hodirac_flag )
- {
- IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, IVAS_MAX_NUM_BANDS, st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE
- {
- IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
-
- test();
- test();
- IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) )
- {
- IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band;
- move16();
- }
- ELSE
- {
- Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1];
-
- st_ivas->hSpar->enc_param_start_band = s_min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND );
- move16();
- IF( ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) )
- {
- st_ivas->hSpar->enc_param_start_band = 0;
- move16();
- set8_fx( (Word8 *) st_ivas->hQMetaData->twoDirBands, (Word8) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands );
- st_ivas->hQMetaData->numTwoDirBands = (UWord8) st_ivas->hQMetaData->q_direction[0].cfg.nbands;
- move16();
- }
-
- ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ),
- st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0, 1 );
- }
-
- FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
- }
-
- IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
- {
- st_ivas->nCPE_old = st_ivas->nCPE;
- move16();
- st_ivas->nCPE = add( st_ivas->nCPE, shr( add( st_ivas->nchan_ism, 1 ), 1 ) );
- move16();
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- }
-
- FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
- }
- }
-
- /* create CPE element for DFT Stereo like upmix */
- test();
- IF( st_ivas->sba_dirac_stereo_flag && st_ivas->nCPE == 0 )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */
- st_ivas->hCPE[0]->hCoreCoder[1] = NULL;
- }
-
- IF( GT_16( st_ivas->nCPE, 1 ) )
- {
- IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
- {
- IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nchan_ism, temp_brate ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_osba_data_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- /* set CNA/CNG flags */
- ivas_sba_set_cna_cng_flag( st_ivas );
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
- {
- st_ivas->ism_extmeta_active = -1;
- move16();
- st_ivas->ism_extmeta_cnt = 0;
- move16();
-
- IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- k = 0;
- move16();
- ism_total_brate = 0;
- move32();
-
- WHILE( ( k < SIZE_IVAS_BRATE_TBL ) && ( ivas_total_brate != ivas_brate_tbl[k] ) )
- {
- k = add( k, 1 );
- }
- test();
- IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) )
- {
- /* one separated object */
- st_ivas->nSCE = 1;
- move16();
- ism_total_brate = sep_object_brate[k - 2][0];
- move32();
- IF( NE_32( ( error = create_sce_dec( st_ivas, 0, ism_total_brate ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- reset_indices_dec( st_ivas->hSCE[0]->hCoreCoder[0] );
-
- IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, 1, NULL ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
- {
- Word32 temp_brate[MAX_SCE];
- st_ivas->nSCE = st_ivas->nchan_ism; /* number of objects */
- move16();
- FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
- {
- temp_brate[sce_id] = sep_object_brate[k - 2][st_ivas->nSCE - 1];
- move32();
- ism_total_brate = L_add( ism_total_brate, temp_brate[sce_id] );
-
- IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, temp_brate[sce_id] ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
- }
-
- IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nchan_ism, temp_brate ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_omasa_data_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- test();
- test();
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) )
- {
- IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- IF( NE_32( ( error = create_cpe_dec( st_ivas, 0, ivas_total_brate - ism_total_brate ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[0]->hCoreCoder[n] );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) )
- {
- IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) )
- {
- /* init EFAP for custom LS setup */
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- st_ivas->nchan_transport = ivas_mc_ls_setup_get_num_channels_fx( ivas_mc_map_output_config_to_mc_ls_setup_fx( st_ivas->transport_config ) );
- move16();
- st_ivas->nSCE = 0;
- move16();
- st_ivas->nCPE = shr( st_ivas->nchan_transport, 1 );
- move16();
- st_ivas->nCPE_old = 0;
- move16();
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, sub( st_ivas->nchan_transport, 1 ), &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
- }
- }
-
- IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) )
- {
- /* init EFAP for custom LS setup */
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- st_ivas->nSCE = 0;
- move16();
- st_ivas->nCPE = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS >> 1;
- move16();
- st_ivas->nCPE_old = 0;
- move16();
- st_ivas->nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS;
- move16();
-
- IF( NE_32( ( error = ivas_mc_paramupmix_dec_open( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- st_ivas->element_mode_init = IVAS_CPE_MDCT;
- move16();
- FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, sub( st_ivas->nchan_transport, 1 ), &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
- }
- }
-
- IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) )
- {
- /* init EFAP for custom LS setup */
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- IF( NE_32( ( error = ivas_param_mc_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- st_ivas->hParamMC->proto_matrix_int_e = 0;
- move16();
- FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 );
-
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
- }
- }
-
- IF( GT_16( st_ivas->nCPE, 1 ) )
- {
- IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- }
- ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) )
- {
- Word32 brate_sce, brate_cpe;
-
- ivas_mcmasa_setNumTransportChannels_fx( &( st_ivas->nchan_transport ), &( st_ivas->element_mode_init ), ivas_total_brate );
-
- IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
-
- {
- return error;
- }
-
- st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas );
- move16();
- test();
- IF( NE_32( st_ivas->renderer_type, RENDERER_DISABLE ) && NE_32( st_ivas->renderer_type, RENDERER_MCMASA_MONO_STEREO ) )
- {
- IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- test();
- test();
- IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && st_ivas->hOutSetup.separateChannelEnabled && !st_ivas->hLsSetupCustom->separate_ch_found )
- {
- /* If no speaker matching the separated channel, compute panning gains for the separated channel. */
- IF( st_ivas->hVBAPdata == NULL )
- {
- /* Distribute signal to all channels if VBAP is not properly initialized. */
- Word16 inv_sqr, sqr, exp = 15, exp_sqr;
- move16();
- IF( EQ_16( st_ivas->hLsSetupCustom->num_spk, 1 ) )
- {
- inv_sqr = 32767; // (1.0f in Q15)-1
- move16();
- }
- ELSE
- {
- sqr = Sqrt16( st_ivas->hLsSetupCustom->num_spk, &exp );
- inv_sqr = BASOP_Util_Divide1616_Scale( 32767, sqr, &exp_sqr );
- exp_sqr = sub( exp_sqr, exp );
- IF( ( exp < 0 ) )
- {
- inv_sqr = shr( inv_sqr, exp ); // exp_sqr
- }
- ELSE
- {
- inv_sqr = shl( inv_sqr, exp ); // exp_sqr
- }
- }
- set16_fx( st_ivas->hLsSetupCustom->separate_ch_gains_fx, inv_sqr, st_ivas->hLsSetupCustom->num_spk );
- }
- }
-
-
- ivas_mcmasa_split_brate_fx( st_ivas->hOutSetup.separateChannelEnabled, ivas_total_brate, st_ivas->nSCE, st_ivas->nCPE, &brate_sce, &brate_cpe );
-
- FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
- {
- IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, brate_sce ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
- }
-
- FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
- {
- st_ivas->element_mode_init = IVAS_CPE_MDCT; /* element_mode_init was IVAS_SCE for SCE initialization */
- move16();
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, brate_cpe ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
- }
- }
-
- /* create CPE element for DFT Stereo like upmix */
- IF( st_ivas->sba_dirac_stereo_flag )
- {
- Word32 res_dec, res_frac;
- iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 );
- IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */
- st_ivas->hCPE[0]->hCoreCoder[1] = NULL;
- }
-
- /* set CNA/CNG flags */
- test();
- test();
- IF( EQ_16( st_ivas->nchan_transport, 1 ) && ( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) ) )
- {
- st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag = 1;
- move16();
- st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag = 1;
- move16();
- }
- }
- }
-
-
- /*-----------------------------------------------------------------*
- * Allocate and initialize HP20 filter memories
- *-----------------------------------------------------------------*/
-
- /* set number of output channels used for synthesis/decoding */
- n = getNumChanSynthesis( st_ivas );
-
- IF( n > 0 )
- {
- IF( ( st_ivas->mem_hp20_out_fx = (Word32 **) malloc( n * sizeof( Word32 * ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) );
- }
- }
- ELSE
- {
- st_ivas->mem_hp20_out_fx = NULL;
- }
-
- FOR( i = 0; i < n; i++ )
- {
- IF( ( st_ivas->mem_hp20_out_fx[i] = (Word32 *) malloc( ( L_HP20_MEM + 2 ) * sizeof( Word32 ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) );
- }
- set32_fx( st_ivas->mem_hp20_out_fx[i], 0, L_HP20_MEM + 2 );
- }
-
- /*-------------------------------------------------------------------*
- * Allocate and initialize rendering handles
- *--------------------------------------------------------------------*/
- test();
- test();
- test();
- test();
- test();
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
- {
- IF( NE_32( ( error = ivas_binRenderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- /* ParamISM is handled separately from other common config */
- ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) && ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) )
- {
- IF( NE_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) )
- {
- IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) )
- {
- Word16 SrcInd[MAX_NUM_TDREND_CHANNELS];
- Word16 num_src;
- IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- Word16 nchan_rend = num_src;
- move16();
- test();
- IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */
- }
- FOR( Word16 nS = 0; nS < nchan_rend; nS++ )
- {
- TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]];
- if ( Src_p->SrcSpatial_p != NULL )
- {
- Src_p->SrcSpatial_p->q_Pos_p = Q31;
- move16();
- }
- TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p;
- SrcSpatial_p->q_Pos_p = Q31;
- move16();
- }
-
- IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
- {
- IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- granularity = NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES );
-
- n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas );
-
-
- IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MC ) )
- {
- IF( NE_32( ( error = ivas_ls_setup_conversion_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) )
- {
- IF( NE_32( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) )
- {
- test();
- test();
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && EQ_32( st_ivas->ivas_format, MC_FORMAT ) && ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) )
- {
- IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hIntSetup.ls_azimuth_fx, st_ivas->hIntSetup.ls_elevation_fx, st_ivas->hIntSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config,
- st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ),
- IVAS_ERR_OK ) )
-#else
- IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config,
- st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ),
- IVAS_ERR_OK ) )
-#endif
- {
- return error;
- }
-
- st_ivas->binaural_latency_ns = st_ivas->hCrendWrapper->binaural_latency_ns;
- move32();
-
- test();
- IF( ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) && ( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) )
- {
- granularity = NS2SA_FX2( output_Fs, CLDFB_SLOT_NS );
-
- n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas );
-
-
- IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, MC_PARAMUPMIX_MAX_INPUT_CHANS, MC_PARAMUPMIX_MAX_INPUT_CHANS, granularity ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE
- {
- granularity = NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES );
-
- n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas );
-
- IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- }
-
- IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
- {
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
- {
- /* Allocate TD renderer for the objects in DISC mode */
- Word16 SrcInd[MAX_NUM_TDREND_CHANNELS];
- Word16 num_src;
- IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- Word16 nchan_rend = num_src;
- move16();
- test();
- if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */
- }
- FOR( Word16 nS = 0; nS < nchan_rend; nS++ )
- {
- TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]];
- if ( Src_p->SrcSpatial_p != NULL )
- {
- Src_p->SrcSpatial_p->q_Pos_p = Q31;
- move16();
- }
- TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p;
- SrcSpatial_p->q_Pos_p = Q31;
- move16();
- }
-
- /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */
- IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- test();
- test();
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && ( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) )
- {
- /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */
- IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- }
-
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( ( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) &&
- ( EQ_32( st_ivas->ism_mode, ISM_MODE_DISC ) || EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) &&
- ( EQ_32( st_ivas->renderer_type, RENDERER_TD_PANNING ) ||
- EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ||
- EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) ||
- EQ_32( st_ivas->renderer_type, RENDERER_OSBA_STEREO ) ||
- EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) ||
- EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) ||
- EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
- EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ||
- EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) )
- {
- IF( NE_32( ( error = ivas_ism_renderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
- {
- test();
- test();
- IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
- {
- /* Allocate TD renderer for the objects in DISC mode */
- Word16 SrcInd[MAX_NUM_TDREND_CHANNELS];
- Word16 num_src;
- IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- Word16 nchan_rend = num_src;
- move16();
-
- test();
- if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */
- }
- FOR( Word16 nS = 0; nS < nchan_rend; nS++ )
- {
- TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]];
- if ( Src_p->SrcSpatial_p != NULL )
- {
- Src_p->SrcSpatial_p->q_Pos_p = Q31;
- move16();
- }
- TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p;
- SrcSpatial_p->q_Pos_p = Q31;
- move16();
- }
- }
- }
-
- /*-----------------------------------------------------------------*
- * LFE handles for rendering after rendering to adjust LFE delay to binaural filter delay
- *-----------------------------------------------------------------*/
- test();
- IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) )
- {
- binauralization_delay_ns = st_ivas->binaural_latency_ns;
- move32();
- IF( st_ivas->hBinRenderer != NULL )
- {
- IF( st_ivas->hBinRenderer->render_lfe )
- {
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( NE_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#endif
- {
- /* Account for filterbank delay */
- binauralization_delay_ns = L_add( binauralization_delay_ns, IVAS_FB_DEC_DELAY_NS );
- }
- }
- ELSE
- {
- binauralization_delay_ns = 0;
- move32();
- }
- }
-
- IF( NE_32( ( error = ivas_create_lfe_dec_fx( &st_ivas->hLFE, output_Fs, binauralization_delay_ns ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- set32_fx( st_ivas->hLFE->prevsynth_buf_fx, 0, LFE_PLC_BUFLEN );
- set32_fx( st_ivas->hLFE->prior_out_buffer_fx, 0, L_FRAME48k );
- }
-
- /*-----------------------------------------------------------------*
- * CLDFB handles for rendering
- *-----------------------------------------------------------------*/
-
- ivas_init_dec_get_num_cldfb_instances_ivas_fx( st_ivas, &numCldfbAnalyses, &numCldfbSyntheses );
-
- FOR( i = 0; i < numCldfbAnalyses; i++ )
- {
- IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- FOR( ; i < MAX_INTERN_CHANNELS; i++ )
- {
- st_ivas->cldfbAnaDec[i] = NULL;
- }
-
- FOR( i = 0; i < numCldfbSyntheses; i++ )
- {
- IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- FOR( ; i < MAX_OUTPUT_CHANNELS; i++ )
- {
- st_ivas->cldfbSynDec[i] = NULL;
- }
-
- /* CLDFB Interpolation weights */
- test();
- test();
- test();
- IF( ( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) && !st_ivas->sba_dirac_stereo_flag && NE_16( st_ivas->hDecoderConfig->nchan_out, 1 ) )
- {
- Word16 Q_cldfbSynDec = Q11;
- move16();
- ivas_spar_get_cldfb_gains_fx( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig );
-
- FOR( i = 0; i < st_ivas->cldfbAnaDec[0]->cldfb_state_length; i++ )
- {
- st_ivas->cldfbAnaDec[0]->cldfb_state_fx[i] = L_shr( st_ivas->cldfbAnaDec[0]->cldfb_state_fx[i], 16 ); // Scaling down from 27 to 11
- move32();
- }
- st_ivas->cldfbAnaDec[0]->Q_cldfb_state = Q11;
- move16();
- FOR( i = 0; i < st_ivas->cldfbSynDec[0]->cldfb_state_length; i++ )
- {
- st_ivas->cldfbSynDec[0]->cldfb_state_fx[i] = L_shr( st_ivas->cldfbSynDec[0]->cldfb_state_fx[i], sub( 21, Q_cldfbSynDec ) ); // Scaling down from 21 to Q_cldfbSynDec
- move32();
- }
- st_ivas->cldfbSynDec[0]->Q_cldfb_state = Q11;
- move16();
- }
-
- /*-----------------------------------------------------------------*
- * Allocate and initialize limiter struct
- *-----------------------------------------------------------------*/
-
- IF( NE_32( ( error = ivas_limiter_open_fx( &st_ivas->hLimiter, hDecoderConfig->nchan_out, output_Fs ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-
- /*-----------------------------------------------------------------*
- * Allocate and initialize JBM struct + buffer
- *-----------------------------------------------------------------*/
-
- IF( st_ivas->hTcBuffer == NULL )
-
- {
- /* no module has yet open the TC buffer, open a default one */
- n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas );
-
- IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, ivas_jbm_dec_get_tc_buffer_mode( st_ivas ), n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- IF( st_ivas->hTcBuffer == NULL )
- {
- /* we need the handle anyway, but without the buffer*/
- IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_NONE, 0, 0, 0, 1 ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-
- IF( st_ivas->hJbmMetadata == NULL )
- {
- IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- IF( NE_32( ( error = ivas_jbm_dec_metadata_open( st_ivas ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- }
-
- /*-----------------------------------------------------------------*
- * Allocate floating-point output audio buffers
- *-----------------------------------------------------------------*/
- st_ivas->p_out_len = ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate );
- move16();
- FOR( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ )
- {
- /* note: these are intra-frame heap memories */
- IF( ( st_ivas->p_output_fx[n] = (Word32 *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( Word32 ) ) ) == NULL )
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) );
- }
- set32_fx( st_ivas->p_output_fx[n], 0, 48000 / FRAMES_PER_SEC );
- }
-
- FOR( ; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ )
- {
- st_ivas->p_output_fx[n] = NULL;
- }
- return error;
-}
-
-/*-------------------------------------------------------------------------
- * destroy_core_dec()
- *
- * Close core decoder handles
- *-------------------------------------------------------------------------*/
-
-void destroy_core_dec_fx(
- DEC_CORE_HANDLE hCoreCoder /* i/o: core decoder structure */
-)
-{
- IF( EQ_16( hCoreCoder->element_mode, EVS_MONO ) )
- {
- destroy_cldfb_decoder_fx( hCoreCoder );
- }
- ELSE
- {
- destroy_cldfb_decoder_ivas_fx( hCoreCoder );
- }
-
- IF( hCoreCoder->hGSCDec != NULL )
- {
- free( hCoreCoder->hGSCDec );
- hCoreCoder->hGSCDec = NULL;
- }
-
- IF( hCoreCoder->hPFstat != NULL )
- {
- free( hCoreCoder->hPFstat );
- hCoreCoder->hPFstat = NULL;
- }
-
- IF( hCoreCoder->hMusicPF != NULL )
- {
- free( hCoreCoder->hMusicPF );
- hCoreCoder->hMusicPF = NULL;
- }
-
- IF( hCoreCoder->hBPF != NULL )
- {
- free( hCoreCoder->hBPF );
- hCoreCoder->hBPF = NULL;
- }
-
- IF( hCoreCoder->hBWE_zero != NULL )
- {
- free( hCoreCoder->hBWE_zero );
- hCoreCoder->hBWE_zero = NULL;
- }
-
- IF( hCoreCoder->hTdCngDec != NULL )
- {
- free( hCoreCoder->hTdCngDec );
- hCoreCoder->hTdCngDec = NULL;
- }
-
- IF( hCoreCoder->hSC_VBR != NULL )
- {
- free( hCoreCoder->hSC_VBR );
- hCoreCoder->hSC_VBR = NULL;
- }
-
- IF( hCoreCoder->hAmrwb_IO != NULL )
- {
- free( hCoreCoder->hAmrwb_IO );
- hCoreCoder->hAmrwb_IO = NULL;
- }
-
- IF( hCoreCoder->hBWE_TD != NULL )
- {
- free( hCoreCoder->hBWE_TD );
- hCoreCoder->hBWE_TD = NULL;
- }
-
- IF( hCoreCoder->hBWE_FD != NULL )
- {
- free( hCoreCoder->hBWE_FD );
- hCoreCoder->hBWE_FD = NULL;
- }
-
- IF( hCoreCoder->hBWE_FD_HR != NULL )
- {
- free( hCoreCoder->hBWE_FD_HR );
- hCoreCoder->hBWE_FD_HR = NULL;
- }
-
- IF( hCoreCoder->hWIDec != NULL )
- {
- free( hCoreCoder->hWIDec );
- hCoreCoder->hWIDec = NULL;
- }
-
- IF( hCoreCoder->hTECDec != NULL )
- {
- free( hCoreCoder->hTECDec );
- hCoreCoder->hTECDec = NULL;
- }
-
- IF( hCoreCoder->hTcxLtpDec != NULL )
- {
- free( hCoreCoder->hTcxLtpDec );
- hCoreCoder->hTcxLtpDec = NULL;
- }
-
- IF( hCoreCoder->hTcxDec != NULL )
- {
- free( hCoreCoder->hTcxDec );
- hCoreCoder->hTcxDec = NULL;
- }
-
- IF( hCoreCoder->hTcxCfg != NULL )
- {
- free( hCoreCoder->hTcxCfg );
- hCoreCoder->hTcxCfg = NULL;
- }
-
- IF( hCoreCoder->hTonalMDCTConc != NULL )
- {
- free( hCoreCoder->hTonalMDCTConc );
- hCoreCoder->hTonalMDCTConc = NULL;
- }
-
- IF( hCoreCoder->hIGFDec != NULL )
- {
- free( hCoreCoder->hIGFDec );
- hCoreCoder->hIGFDec = NULL;
- }
-
- IF( hCoreCoder->hPlcInfo != NULL )
- {
- free( hCoreCoder->hPlcInfo );
- hCoreCoder->hPlcInfo = NULL;
- }
-
- IF( hCoreCoder->hHQ_core != NULL )
- {
- free( hCoreCoder->hHQ_core );
- hCoreCoder->hHQ_core = NULL;
- }
-
- IF( hCoreCoder->hHQ_nbfec != NULL )
- {
- free( hCoreCoder->hHQ_nbfec );
- hCoreCoder->hHQ_nbfec = NULL;
- }
-
- return;
-}
-
-/*-------------------------------------------------------------------------
- * ivas_initialize_handles_dec()
- *
- * NULL initialization of handles
- *-------------------------------------------------------------------------*/
-
-void ivas_initialize_handles_dec(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-)
-{
- Word16 i;
-
- FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ )
- {
- st_ivas->cldfbAnaDec[i] = NULL;
- }
-
- FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ )
- {
- st_ivas->cldfbSynDec[i] = NULL;
- }
-
- /* SCE handles */
- FOR( i = 0; i < MAX_SCE; i++ )
- {
- st_ivas->hSCE[i] = NULL;
- }
-
- /* CPE handles */
- FOR( i = 0; i < MAX_CPE; i++ )
- {
- st_ivas->hCPE[i] = NULL;
- }
-
- st_ivas->bit_stream = NULL;
- st_ivas->mem_hp20_out_fx = NULL;
- st_ivas->hLimiter = NULL;
-
- /* ISM metadata handles */
- FOR( i = 0; i < MAX_NUM_OBJECTS; i++ )
- {
- st_ivas->hIsmMetaData[i] = NULL;
- }
-
- /* spatial coding handles */
- st_ivas->hDirAC = NULL;
- st_ivas->hParamIsmDec = NULL;
- st_ivas->hSpar = NULL;
- st_ivas->hMasa = NULL;
- st_ivas->hQMetaData = NULL;
- st_ivas->hMCT = NULL;
- st_ivas->hMCParamUpmix = NULL;
- st_ivas->hParamMC = NULL;
- st_ivas->hLFE = NULL;
-
- /* rendering handles */
- st_ivas->hBinRenderer = NULL;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ )
- {
- st_ivas->hDiracDecBin[i] = NULL;
- }
-#else
- st_ivas->hDiracDecBin = NULL;
-#endif
- st_ivas->hDirACRend = NULL;
- st_ivas->hSpatParamRendCom = NULL;
- st_ivas->hLsSetUpConversion = NULL;
- st_ivas->hEFAPdata = NULL;
- st_ivas->hVBAPdata = NULL;
- st_ivas->hIsmRendererData = NULL;
- st_ivas->hBinRendererTd = NULL;
- st_ivas->hMonoDmxRenderer = NULL;
- st_ivas->hCrendWrapper = NULL;
- st_ivas->hReverb = NULL;
- st_ivas->hSetOfHRTF = NULL;
- st_ivas->hHrtfFastConv = NULL;
- st_ivas->hHrtfParambin = NULL;
- st_ivas->hoa_dec_mtx = NULL;
- st_ivas->hMasaIsmData = NULL;
- st_ivas->hSbaIsmData = NULL;
-
- st_ivas->hHeadTrackData = NULL;
- st_ivas->hHrtfTD = NULL;
- st_ivas->hLsSetupCustom = NULL;
- st_ivas->hRenderConfig = NULL;
- st_ivas->hExtOrientationData = NULL;
- st_ivas->hCombinedOrientationData = NULL;
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- st_ivas->hSplitBinRend = NULL;
- for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
- {
- st_ivas->hTdRendHandles[i] = NULL;
- }
-#endif
- /* JBM handles */
- st_ivas->hTcBuffer = NULL;
- st_ivas->hJbmMetadata = NULL;
-
- /* floating-point output audio buffers */
- FOR( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ )
- {
- st_ivas->p_output_fx[i] = NULL;
- }
-
- return;
-}
-
-
-/*-------------------------------------------------------------------------
- * ivas_destroy_dec()
- *
- * Close IVAS decoder handles
- *-------------------------------------------------------------------------*/
-
-void ivas_destroy_dec_fx(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
-)
-{
- Word16 i;
-
- /* CLDFB handles */
- FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ )
- {
- IF( st_ivas->cldfbAnaDec[i] != NULL )
- {
- deleteCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ) );
- }
- }
-
- FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ )
- {
- IF( st_ivas->cldfbSynDec[i] != NULL )
- {
- deleteCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ) );
- }
- }
-
- /* SCE handles */
- FOR( i = 0; i < MAX_SCE; i++ )
- {
- IF( st_ivas->hSCE[i] != NULL )
- {
- destroy_sce_dec( st_ivas->hSCE[i] );
- st_ivas->hSCE[i] = NULL;
- }
- }
-
- /* CPE handles */
- FOR( i = 0; i < MAX_CPE; i++ )
- {
- IF( st_ivas->hCPE[i] != NULL )
- {
- /* set pointer to NULL as core coder already deallocated in destroy_sce_dec() */
- test();
- IF( st_ivas->sba_dirac_stereo_flag && EQ_16( st_ivas->nchan_transport, 1 ) )
- {
- st_ivas->hCPE[i]->hCoreCoder[0] = NULL;
- st_ivas->hCPE[i]->hCoreCoder[1] = NULL;
- }
- destroy_cpe_dec( st_ivas->hCPE[i] );
- st_ivas->hCPE[i] = NULL;
- }
- }
-
- /* HP20 filter handles */
- IF( st_ivas->mem_hp20_out_fx != NULL )
- {
- FOR( i = 0; i < getNumChanSynthesis( st_ivas ); i++ )
- {
- free( st_ivas->mem_hp20_out_fx[i] );
- st_ivas->mem_hp20_out_fx[i] = NULL;
- }
- free( st_ivas->mem_hp20_out_fx );
- st_ivas->mem_hp20_out_fx = NULL;
- }
-
- /* ISM metadata handles */
- ivas_ism_metadata_close( st_ivas->hIsmMetaData, 0 );
-
- /* ISM renderer handle */
- ivas_ism_renderer_close( &( st_ivas->hIsmRendererData ) );
-
- /* DirAC handle */
- IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
- {
- ivas_param_ism_dec_close_fx( &( st_ivas->hParamIsmDec ), &( st_ivas->hSpatParamRendCom ), st_ivas->hDecoderConfig->output_config );
- }
- ELSE
- {
- ivas_dirac_rend_close_fx( &( st_ivas->hDirACRend ) );
- ivas_spat_hSpatParamRendCom_close_fx( &( st_ivas->hSpatParamRendCom ) );
- ivas_dirac_dec_close_fx( &( st_ivas->hDirAC ) );
- }
-
- /* SPAR handle */
- ivas_spar_dec_close_fx( &( st_ivas->hSpar ), st_ivas->hDecoderConfig->output_Fs, 0 );
-
- /* HOA decoder matrix */
- IF( st_ivas->hoa_dec_mtx != NULL )
- {
- free( st_ivas->hoa_dec_mtx );
- st_ivas->hoa_dec_mtx = NULL;
- }
-
- /* MASA decoder structure */
-
- ivas_masa_dec_close_fx( &( st_ivas->hMasa ) );
- /* Qmetadata handle */
- ivas_qmetadata_close_fx( &st_ivas->hQMetaData );
-
- /* MCT handle */
- ivas_mct_dec_close( &st_ivas->hMCT );
-
- /* LFE handle */
- ivas_lfe_dec_close_fx( &( st_ivas->hLFE ) );
-
- /* Param-Upmix MC handle */
- ivas_mc_paramupmix_dec_close( &( st_ivas->hMCParamUpmix ) );
-
- /* Parametric MC handle */
- ivas_param_mc_dec_close_fx( &st_ivas->hParamMC );
-
- /* EFAP handle */
- efap_free_data_fx( &st_ivas->hEFAPdata );
-
- /* VBAP handle */
- vbap_free_data_fx( &( st_ivas->hVBAPdata ) );
- /* Fastconv binaural renderer handle */
- ivas_binRenderer_close_fx( &st_ivas->hBinRenderer );
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- /* TD binaural renderer handles */
- for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
- {
- if ( st_ivas->hTdRendHandles[i] != NULL )
- {
- st_ivas->hTdRendHandles[i]->HrFiltSet_p = NULL;
- ivas_td_binaural_close_fx( &st_ivas->hTdRendHandles[i] );
- }
- }
-#endif
-
- /* Parametric binaural renderer handle */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin );
-#else
- ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin );
-#endif
-
- /* Crend handle */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses );
-#else
- ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) );
-#endif
-
- /* Reverb handle */
- ivas_reverb_close( &st_ivas->hReverb );
-
- /* LS config converter handle */
-
- ivas_ls_setup_conversion_close_fx( &st_ivas->hLsSetUpConversion );
- /* Custom LS configuration handle */
- IF( st_ivas->hLsSetupCustom != NULL )
- {
- free( st_ivas->hLsSetupCustom );
- st_ivas->hLsSetupCustom = NULL;
- }
-
- /* Mono downmix structure */
- ivas_mono_dmx_renderer_close( &st_ivas->hMonoDmxRenderer );
-
- /* OSBA structure */
-
- ivas_osba_data_close_fx( &st_ivas->hSbaIsmData );
-
- /* OMASA structure */
- ivas_omasa_data_close_fx( &st_ivas->hMasaIsmData );
- /* Head track data handle */
- ivas_headTrack_close_fx( &st_ivas->hHeadTrackData );
-
- /* External orientation data handle */
- ivas_external_orientation_close_fx( &st_ivas->hExtOrientationData );
-
- /* Combined orientation data handle */
- ivas_combined_orientation_close_fx( &st_ivas->hCombinedOrientationData );
-
- /* Time Domain binaural renderer handle */
- IF( st_ivas->hBinRendererTd != NULL )
- {
- ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd );
- }
- ELSE IF( st_ivas->hHrtfTD != NULL )
- {
- BSplineModelEvalDealloc_fx( &st_ivas->hHrtfTD->ModelParams, &st_ivas->hHrtfTD->ModelEval );
- ivas_HRTF_binary_close_fx( &st_ivas->hHrtfTD );
- }
-
- /* CRend binaural renderer handle */
- ivas_HRTF_CRend_binary_close_fx( &st_ivas->hSetOfHRTF );
-
- /* Fastconv HRTF memories */
- ivas_binaural_hrtf_close( &st_ivas->hHrtfFastConv );
-
- /* Fastconv HRTF filters */
- ivas_HRTF_fastconv_binary_close_fx( &st_ivas->hHrtfFastConv );
-
- /* Parametric binauralizer HRTF filters */
- ivas_HRTF_parambin_binary_close_fx( &st_ivas->hHrtfParambin );
-
- /* Config. Renderer */
- ivas_render_config_close( &( st_ivas->hRenderConfig ) );
-
- /* Limiter struct */
- ivas_limiter_close_fx( &( st_ivas->hLimiter ) );
-
- IF( st_ivas->hDecoderConfig != NULL )
- {
- free( st_ivas->hDecoderConfig );
- st_ivas->hDecoderConfig = NULL;
- }
-
- ivas_jbm_dec_tc_buffer_close( &st_ivas->hTcBuffer );
-
- IF( st_ivas->hJbmMetadata != NULL )
- {
- free( st_ivas->hJbmMetadata );
- st_ivas->hJbmMetadata = NULL;
- }
-
- /* floating-point output audio buffers */
- FOR( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ )
- {
-
- IF( st_ivas->p_output_fx[i] != NULL )
- {
- free( st_ivas->p_output_fx[i] );
- st_ivas->p_output_fx[i] = NULL;
- }
- }
-
- /* main IVAS handle */
- free( st_ivas );
-
- return;
-}
-
-
-/*-------------------------------------------------------------------*
- * ivas_init_dec_get_num_cldfb_instances()
- *
- * Return number of CLDFB analysis & synthesis instances
- *-------------------------------------------------------------------*/
-
-/*! r: number of cldfb instances */
-void ivas_init_dec_get_num_cldfb_instances(
- Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
- Word16 *numCldfbAnalyses, /* o : number of needed CLDFB analysis instances */
- Word16 *numCldfbSyntheses /* o : number of needed CLDFB synthesis instances */
-)
-{
- IVAS_FORMAT ivas_format;
- *numCldfbAnalyses = st_ivas->nchan_transport;
- move16();
- *numCldfbSyntheses = st_ivas->hDecoderConfig->nchan_out;
- move16();
-
- test();
- IF( ( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_NONE ) ) )
- {
- ivas_format = SBA_FORMAT;
- move32();
- }
- ELSE
- {
- ivas_format = st_ivas->ivas_format;
- move32();
- }
-
- SWITCH( st_ivas->renderer_type )
- {
- case RENDERER_BINAURAL_PARAMETRIC:
- case RENDERER_BINAURAL_PARAMETRIC_ROOM:
- case RENDERER_STEREO_PARAMETRIC:
- IF( EQ_16( st_ivas->nchan_transport, 1 ) )
- {
- *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
- move16();
- }
-
- test();
- IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) && st_ivas->hOutSetup.separateChannelEnabled )
- {
- *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
- move16();
- }
-
- IF( EQ_32( ivas_format, SBA_ISM_FORMAT ) )
- {
- IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
- {
- *numCldfbAnalyses = add( *numCldfbAnalyses, st_ivas->nchan_ism );
- move16();
- }
- }
-
- IF( EQ_32( ivas_format, MASA_ISM_FORMAT ) )
- {
- test();
- IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
- {
- *numCldfbAnalyses = add( *numCldfbAnalyses, st_ivas->nchan_ism );
- move16();
- }
- ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) )
- {
- *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
- move16();
- }
- }
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- if ( st_ivas->hDiracDecBin[0]->useTdDecorr )
-#else
- IF( st_ivas->hDiracDecBin->useTdDecorr )
-#endif
- {
- *numCldfbAnalyses = add( *numCldfbAnalyses, 2 );
- move16();
- }
- BREAK;
- case RENDERER_NON_DIEGETIC_DOWNMIX:
- case RENDERER_MONO_DOWNMIX:
- test();
- test();
- IF( EQ_32( ivas_format, ISM_FORMAT ) || EQ_32( ivas_format, MASA_ISM_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) )
- {
- /* CLDFB not used in rendering */
- *numCldfbAnalyses = 0;
- move16();
- *numCldfbSyntheses = 0;
- move16();
- }
- BREAK;
- case RENDERER_DIRAC:
- IF( EQ_32( ivas_format, SBA_FORMAT ) )
- {
- *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans;
- move16();
-
- test();
- IF( st_ivas->hOutSetup.is_loudspeaker_setup && EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) )
- {
- *numCldfbSyntheses = st_ivas->hOutSetup.nchan_out_woLFE;
- move16();
- }
- ELSE IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) )
- {
- *numCldfbSyntheses = st_ivas->hSpar->hFbMixer->fb_cfg->num_out_chans;
- move16();
- }
- ELSE
- {
- *numCldfbSyntheses = MAX_OUTPUT_CHANNELS;
- move16();
- }
- }
- IF( NE_32( ivas_format, SBA_FORMAT ) )
- {
- test();
- test();
- IF( GT_16( st_ivas->nchan_transport, 2 ) && ( st_ivas->sba_planar != 0 ) )
- {
- *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
- move16();
- }
- ELSE IF( EQ_16( st_ivas->nchan_transport, 1 ) && EQ_32( st_ivas->hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) )
- {
- *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
- move16();
- }
- }
- BREAK;
- case RENDERER_MC_PARAMMC:
- IF( LE_16( st_ivas->hDecoderConfig->nchan_out, 2 ) )
- {
- /* CLDFB not used in rendering */
- *numCldfbAnalyses = 0;
- move16();
- *numCldfbSyntheses = 0;
- move16();
- }
- ELSE
- {
- *numCldfbSyntheses = param_mc_get_num_cldfb_syntheses_fx( st_ivas );
- move16();
- }
- BREAK;
- case RENDERER_PARAM_ISM:
- /* Already correct with no exception */
- BREAK;
- case RENDERER_DISABLE:
- /* CLDFB not used */
- *numCldfbAnalyses = 0;
- move16();
- *numCldfbSyntheses = 0;
- move16();
- BREAK;
- case RENDERER_MC:
- case RENDERER_SBA_LINEAR_DEC:
- case RENDERER_TD_PANNING:
- case RENDERER_BINAURAL_OBJECTS_TD:
- case RENDERER_MCMASA_MONO_STEREO:
- case RENDERER_BINAURAL_MIXER_CONV:
- case RENDERER_BINAURAL_MIXER_CONV_ROOM:
- case RENDERER_BINAURAL_FASTCONV:
- case RENDERER_BINAURAL_FASTCONV_ROOM:
- case RENDERER_OSBA_STEREO:
- case RENDERER_OSBA_AMBI:
- case RENDERER_OSBA_LS:
- test();
- IF( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) )
- {
- IF( st_ivas->sba_dirac_stereo_flag != 0 )
- {
- *numCldfbAnalyses = 0;
- move16();
- *numCldfbSyntheses = 0;
- move16();
- }
- ELSE
- {
- *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans;
- move16();
-
- test();
- IF( st_ivas->hOutSetup.is_loudspeaker_setup && EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) )
- {
- *numCldfbSyntheses = st_ivas->hOutSetup.nchan_out_woLFE;
- move16();
- }
- ELSE IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) )
- {
- *numCldfbSyntheses = st_ivas->hSpar->hFbMixer->fb_cfg->num_out_chans;
- move16();
- }
- ELSE
- {
- *numCldfbSyntheses = MAX_OUTPUT_CHANNELS;
- move16();
- }
- test();
- IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
- {
- *numCldfbAnalyses = add( st_ivas->nchan_ism, st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans );
- move16();
- }
- }
- }
- ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) )
- {
- /* do nothing for ParamMC */
- }
- ELSE
- {
- /* CLDFB not used in rendering */
- *numCldfbAnalyses = 0;
- move16();
- *numCldfbSyntheses = 0;
- move16();
- }
- BREAK;
- case RENDERER_SBA_LINEAR_ENC:
- IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) )
- {
- *numCldfbSyntheses = param_mc_get_num_cldfb_syntheses_fx( st_ivas );
- move16();
- }
- ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
- {
- *numCldfbSyntheses = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe );
- move16();
- }
- ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) )
- {
- *numCldfbAnalyses = st_ivas->nchan_transport;
- move16();
- *numCldfbSyntheses = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe );
- move16();
- }
- ELSE
- {
- /* CLDFB not used in rendering */
- *numCldfbAnalyses = 0;
- move16();
- *numCldfbSyntheses = 0;
- move16();
- }
- BREAK;
- default:
- assert( 0 && "Renderer not handled for CLDFB reservation." );
- }
- test();
- test();
- IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) )
- {
- test();
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) )
- {
- *numCldfbAnalyses = s_max( MC_PARAMUPMIX_MAX_INPUT_CHANS, *numCldfbAnalyses );
- move16();
- }
- ELSE
- {
- *numCldfbAnalyses = s_max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbAnalyses );
- move16();
- }
- *numCldfbSyntheses = s_max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbSyntheses );
- move16();
- }
-
- return;
-}
-
-
-/*---------------------------------------------------------------------*
- * doSanityChecks_IVAS()
- *
- * Sanity checks - verify if the decoder set-up parameters are
- * not in conflict with the IVAS format
- *---------------------------------------------------------------------*/
-
-static ivas_error doSanityChecks_IVAS(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-)
-{
- Word32 output_Fs;
- AUDIO_CONFIG output_config;
-
- output_Fs = st_ivas->hDecoderConfig->output_Fs;
- move32();
- output_config = st_ivas->hDecoderConfig->output_config;
- move32();
- /*-----------------------------------------------------------------*
- * Sanity checks
- *-----------------------------------------------------------------*/
-
- IF( EQ_32( output_Fs, 8000 ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "8kHz output sampling rate is not supported in IVAS." );
- }
-
- assert( st_ivas->ivas_format != UNDEFINED_FORMAT && "\n IVAS format undefined" );
- assert( st_ivas->ivas_format != MONO_FORMAT && "\n Wrong IVAS format: MONO" );
-
- /* Verify output configuration compatible with non-diegetic panning */
- test();
- test();
- IF( st_ivas->hDecoderConfig->Opt_non_diegetic_pan && NE_32( st_ivas->ivas_format, MONO_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_ISM1 ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Error: Non-diegetic panning not supported in this IVAS format" );
- }
-
- /* Verify stereo output configuration */
- IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) )
- {
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- IF( NE_32( output_config, IVAS_AUDIO_CONFIG_MONO ) && NE_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_7_1 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1_2 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1_4 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_7_1_4 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Wrong output configuration specified for Stereo!" );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
- {
- /* Verify ISM output configuration */
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for ISM" );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
- {
- /* Verify SBA output coniguration */
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for SBA" );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
- {
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for MASA!" );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) )
- {
- /* Verify MC output configuration */
- test();
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for Multi-channel" );
- }
- }
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( ( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && NE_32( output_Fs, 48000 ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." );
- }
-#endif
-
- IF( st_ivas->hDecoderConfig->Opt_Headrotation )
- {
- test();
- test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) )
-#else
- IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) )
-#endif
- {
- return IVAS_ERROR( IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED, "Wrong set-up: Head-rotation not supported in this configuration" );
- }
- }
-
- IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation )
- {
- test();
- test();
- IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) )
- {
- return IVAS_ERROR( IVAS_ERR_EXT_ORIENTATION_NOT_SUPPORTED, "Wrong set-up: External orientation not supported in this configuration" );
- }
- }
-
- IF( st_ivas->hDecoderConfig->Opt_dpid_on )
- {
- test();
- IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) )
- {
- return IVAS_ERROR( IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED, "Wrong set-up: Directivity is not supported in this output configuration." );
- }
- }
-
- IF( st_ivas->hDecoderConfig->Opt_aeid_on )
- {
- IF( NE_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
- {
- return IVAS_ERROR( IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED, "Wrong set-up: Acoustic environment is not supported in this output configuration." );
- }
- }
-
- IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
- {
- test();
- IF( NE_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
-
- return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for combined MASA and ISM format" );
- }
- }
-
-
- return IVAS_ERR_OK;
-}
diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c
index dac7d0da670a406e6151a14afebf2ed923038300..f00ea46767ca397a2f8cab00e83a864764572631 100644
--- a/lib_dec/ivas_init_dec_fx.c
+++ b/lib_dec/ivas_init_dec_fx.c
@@ -1,4 +1,3407 @@
+/******************************************************************************************************
+
+ (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
+ Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
+ Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
+ Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
+ contributors to this repository. All Rights Reserved.
+
+ This software is protected by copyright law and by international treaties.
+ The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
+ Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
+ Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
+ Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
+ contributors to this repository retain full ownership rights in their respective contributions in
+ the software. This notice grants no license of any kind, including but not limited to patent
+ license, nor is any license granted by implication, estoppel or otherwise.
+
+ Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
+ contributions.
+
+ This software is provided "AS IS", without any express or implied warranties. The software is in the
+ development stage. It is intended exclusively for experts who have experience with such software and
+ solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
+ and fitness for a particular purpose are hereby disclaimed and excluded.
+
+ Any dispute, controversy or claim arising under or in relation to providing this software shall be
+ submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
+ accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
+ the United Nations Convention on Contracts on the International Sales of Goods.
+
+*******************************************************************************************************/
+
+#include
+#include
+#include
+#include "options.h"
+#include "ivas_cnst.h"
+#include "ivas_prot_rend_fx.h"
+#include "rom_com.h"
+#include "ivas_rom_com.h"
+#include "ivas_stat_enc.h"
+#include "prot_fx.h"
+#include "wmc_auto.h"
#include "ivas_prot_fx.h"
+#include "lib_isar_pre_rend.h"
+#include "isar_prot.h"
+#include "isar_stat.h"
+
+
+/*-------------------------------------------------------------------*
+ * Local function prototypes
+ *-------------------------------------------------------------------*/
+
+static ivas_error ivas_read_format( Decoder_Struct *st_ivas, Word16 *num_bits_read );
+
+static ivas_error doSanityChecks_IVAS( Decoder_Struct *st_ivas );
+
+static ivas_error ivas_dec_reconfig_split_rend( Decoder_Struct *st_ivas );
+
+
+/*-------------------------------------------------------------------*
+ * ivas_dec_reconfig_split_rend()
+ *
+ * IVAS decoder split rend reconfig
+ *-------------------------------------------------------------------*/
+
+static ivas_error ivas_dec_reconfig_split_rend(
+ Decoder_Struct *st_ivas /* i : IVAS decoder structure */
+)
+{
+ ivas_error error;
+ Word16 cldfb_in_flag, num_ch, ch, isCldfbNeeded, i, pcm_out_flag;
+ SPLIT_REND_WRAPPER *hSplitRendWrapper;
+
+ hSplitRendWrapper = &st_ivas->hSplitBinRend->splitrend;
+ move16();
+ pcm_out_flag = ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0;
+ move16();
+ cldfb_in_flag = 0;
+ move16();
+
+ IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
+ EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ||
+ EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) ||
+ EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) )
+ {
+ cldfb_in_flag = 1;
+ move16();
+ }
+
+ ISAR_PRE_REND_GetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &hSplitRendWrapper->multiBinPoseData, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->sr_pose_pred_axis : DEFAULT_AXIS );
+
+ isCldfbNeeded = 0;
+ move16();
+
+ IF( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) && EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) ||
+ ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) )
+ {
+ cldfb_in_flag = 0;
+ move16();
+ }
+
+ IF( NE_16( st_ivas->renderer_type, RENDERER_DISABLE ) )
+ {
+ IF( EQ_16( cldfb_in_flag, 0 ) )
+ {
+ isCldfbNeeded = 1;
+ move16();
+ }
+ ELSE IF( EQ_16( st_ivas->hRenderConfig->split_rend_config.codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) && cldfb_in_flag )
+ {
+ isCldfbNeeded = 1;
+ move16();
+ }
+ ELSE IF( pcm_out_flag && cldfb_in_flag )
+ {
+ isCldfbNeeded = 1;
+ move16();
+ }
+ }
+ ELSE IF( st_ivas->hDecoderConfig->Opt_non_diegetic_pan )
+ {
+ isCldfbNeeded = 1;
+ move16();
+ }
+
+ IF( EQ_16( isCldfbNeeded, 1 ) && hSplitRendWrapper->hCldfbHandles == NULL )
+ {
+ IF( ( hSplitRendWrapper->hCldfbHandles = (CLDFB_HANDLES_WRAPPER_HANDLE) malloc( sizeof( CLDFB_HANDLES_WRAPPER ) ) ) == NULL )
+ {
+ return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for CLDFB handles\n" ) );
+ }
+
+ num_ch = i_mult( MAX_HEAD_ROT_POSES, BINAURAL_CHANNELS );
+ move16();
+ FOR( ch = 0; ch < num_ch; ch++ )
+ {
+ hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL;
+ move16();
+ }
+
+ num_ch = i_mult( hSplitRendWrapper->multiBinPoseData.num_poses, BINAURAL_CHANNELS );
+ move16();
+
+ FOR( ch = 0; ch < num_ch; ch++ )
+ {
+ IF( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ), CLDFB_ANALYSIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
+ {
+ return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not open CLDFB handles\n" ) );
+ }
+ }
+
+ FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
+ {
+ if ( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), CLDFB_SYNTHESIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
+ {
+ return error;
+ }
+ }
+ }
+ ELSE IF( EQ_16( isCldfbNeeded, 0 ) && hSplitRendWrapper->hCldfbHandles != NULL )
+ {
+ num_ch = i_mult( MAX_HEAD_ROT_POSES, BINAURAL_CHANNELS );
+ move16();
+ FOR( ch = 0; ch < num_ch; ch++ )
+ {
+ IF( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] != NULL )
+ {
+ deleteCldfb_ivas_fx( &hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] );
+ hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL;
+ move32();
+ }
+ }
+
+ FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
+ {
+ IF( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] != NULL )
+ {
+ deleteCldfb_ivas_fx( &hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] );
+ hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] = NULL;
+ move32();
+ }
+ }
+
+ free( hSplitRendWrapper->hCldfbHandles );
+ hSplitRendWrapper->hCldfbHandles = NULL;
+ move32();
+ }
+
+ IF( ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) &&
+ ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || NE_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) &&
+ !( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) /* td-rend not needed? */
+ {
+ FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
+ {
+ IF( st_ivas->hTdRendHandles[i] != NULL )
+ {
+ st_ivas->hTdRendHandles[i]->HrFiltSet_p = NULL;
+ move32();
+ ivas_td_binaural_close_fx( &st_ivas->hTdRendHandles[i] );
+ }
+ }
+ }
+
+ return IVAS_ERR_OK;
+}
+
+
+/*-------------------------------------------------------------------*
+ * ivas_dec_init_split_rend()
+ *
+ * IVAS decoder split rend init
+ *-------------------------------------------------------------------*/
+
+static ivas_error ivas_dec_init_split_rend(
+ Decoder_Struct *st_ivas /* i : IVAS decoder structure */
+)
+{
+ ivas_error error;
+ Word16 cldfb_in_flag, pcm_out_flag;
+ Word16 mixed_td_cldfb_flag;
+
+ pcm_out_flag = ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0;
+ cldfb_in_flag = 0;
+ move16();
+
+ IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
+ EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ||
+ EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) ||
+ EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) )
+ {
+ cldfb_in_flag = 1;
+ move16();
+ }
+
+ ISAR_PRE_REND_GetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->sr_pose_pred_axis : DEFAULT_AXIS );
+
+ IF( EQ_16( cldfb_in_flag, 1 ) && ( EQ_16( st_ivas->hSplitBinRend->splitrend.multiBinPoseData.poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ) )
+ {
+ IF( ( st_ivas->hSplitBinRend->hCldfbDataOut = (ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA ) ) ) == NULL )
+ {
+ return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for cldfb data out buffer\n" ) );
+ }
+ }
+
+ mixed_td_cldfb_flag = 0;
+ move16();
+ IF( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) && EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) ||
+ ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) )
+ {
+ mixed_td_cldfb_flag = 1;
+ move16();
+ }
+
+ error = ISAR_PRE_REND_open( &st_ivas->hSplitBinRend->splitrend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hDecoderConfig->output_Fs, cldfb_in_flag, pcm_out_flag, st_ivas->hDecoderConfig->render_framesize, mixed_td_cldfb_flag );
+ move16();
+ return error;
+}
+
+/*-------------------------------------------------------------------*
+ * ivas_dec_setup()
+ *
+ * IVAS decoder setup
+ *-------------------------------------------------------------------*/
+
+ivas_error ivas_dec_setup(
+ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
+ UWord16 *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */
+ Word16 *data /* o : output synthesis signal */
+)
+{
+ Word16 k, idx, num_bits_read;
+ Word16 nchan_ism, element_mode_flag;
+ Decoder_State *st;
+ Word32 ivas_total_brate;
+ ivas_error error;
+
+ error = IVAS_ERR_OK;
+ move32();
+ num_bits_read = 0;
+ move16();
+ element_mode_flag = 0;
+ move16();
+
+ ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;
+ move32();
+
+ /*-------------------------------------------------------------------*
+ * Read IVAS format
+ *-------------------------------------------------------------------*/
+
+ ivas_read_format( st_ivas, &num_bits_read );
+
+ Word16 SrcInd[MAX_NUM_TDREND_CHANNELS];
+ Word16 num_src = 0;
+ move16();
+
+ /*-------------------------------------------------------------------*
+ * Read other signling (ISM/MC mode, number of channels, etc.)
+ *-------------------------------------------------------------------*/
+
+ IF( is_DTXrate( ivas_total_brate ) == 0 )
+ {
+ /*-------------------------------------------------------------------*
+ * Read IVAS format related signaling:
+ * - in ISM : read number of objects
+ * - in SBA : read SBA planar flag and SBA order
+ * - in MASA : read number of TC
+ * - in MC : read LS setup
+ *-------------------------------------------------------------------*/
+
+ IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) )
+ {
+ element_mode_flag = 1;
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
+ {
+ /* read the number of objects */
+ st_ivas->nchan_transport = 1;
+ move16();
+ nchan_ism = 1;
+ move16();
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
+ k = extract_l( L_sub( res_dec, 1 ) );
+
+ WHILE( st_ivas->bit_stream[k] && ( nchan_ism < MAX_NUM_OBJECTS ) )
+ {
+ nchan_ism = add( nchan_ism, 1 );
+ k = sub( k, 1 );
+ }
+
+ st_ivas->nchan_ism = nchan_ism;
+ move16();
+
+ IF( NE_32( ( error = ivas_ism_dec_config_fx( st_ivas, st_ivas->ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
+ {
+ /* read Ambisonic (SBA) planar flag */
+ st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read];
+ move16();
+ num_bits_read = add( num_bits_read, SBA_PLANAR_BITS );
+
+ /* read Ambisonic (SBA) order */
+ st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1];
+ move16();
+ st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) );
+ move16();
+ num_bits_read = add( num_bits_read, SBA_ORDER_BITS );
+ test();
+ test();
+ IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) && GT_32( ivas_total_brate, IVAS_SID_5k2 ) )
+ {
+ IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE
+ {
+ /* set Ambisonic (SBA) order used for analysis and coding */
+ st_ivas->sba_analysis_order = ivas_sba_get_analysis_order_fx( ivas_total_brate, st_ivas->sba_order );
+ move16();
+ ivas_sba_config_fx( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
+ {
+ /* read number of MASA transport channels */
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
+ IF( st_ivas->bit_stream[res_dec - 1] )
+ {
+ st_ivas->nchan_transport = 2;
+ move16();
+ element_mode_flag = 1;
+ move16();
+ }
+ ELSE
+ {
+ st_ivas->nchan_transport = 1;
+ move16();
+ }
+
+ IF( st_ivas->ini_frame > 0 )
+ {
+ /* reconfigure in case a change of operation mode is detected */
+ test();
+ test();
+ IF( ( GT_32( ivas_total_brate, IVAS_SID_5k2 ) && NE_32( ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) || ( st_ivas->ini_active_frame == 0 ) )
+ {
+ IF( EQ_32( st_ivas->last_ivas_format, MASA_FORMAT ) )
+ {
+ test();
+ test();
+ test();
+ IF( ( st_ivas->ini_active_frame == 0 ) && NE_32( ivas_total_brate, FRAME_NO_DATA ) && LT_32( ivas_total_brate, MASA_STEREO_MIN_BITRATE ) && EQ_16( st_ivas->nCPE, 1 ) )
+ {
+ st_ivas->hCPE[0]->nchan_out = 1;
+ move16();
+ }
+ ELSE
+ {
+ IF( NE_32( ( error = ivas_masa_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ }
+ ELSE
+ {
+ IF( NE_32( ( error = ivas_omasa_dec_config_fx( st_ivas, nSamplesRendered, &num_src, SrcInd, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ }
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
+ {
+ st_ivas->nchan_transport = 2; /* always 2 MASA transport channels */
+ move16();
+ /* for the DISC mode the number of objects are written at the end of the bitstream, in the MASA metadata */
+
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
+ st_ivas->nchan_ism = add( add( shl( st_ivas->bit_stream[res_dec - 1], 1 ), st_ivas->bit_stream[res_dec - 2] ), 1 );
+ move16();
+ st_ivas->ism_mode = ivas_omasa_ism_mode_select_fx( ivas_total_brate, st_ivas->nchan_ism );
+ move16();
+ IF( st_ivas->ini_frame > 0 )
+ {
+ /* reconfigure in case a change of operation mode is detected */
+ test();
+ test();
+ IF( ( GT_32( ivas_total_brate, IVAS_SID_5k2 ) && NE_32( ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) || ( st_ivas->ini_active_frame == 0 ) )
+ {
+ IF( NE_32( ( error = ivas_omasa_dec_config_fx( st_ivas, nSamplesRendered, &num_src, SrcInd, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
+ {
+ /* the number of objects is written at the end of the bitstream, in the SBA metadata */
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
+ st_ivas->nchan_ism = add( add( shl( st_ivas->bit_stream[res_dec - 1], 1 ), st_ivas->bit_stream[res_dec - 2] ), 1 );
+ move16();
+
+ test();
+ IF( LT_32( ivas_total_brate, IVAS_24k4 ) || GE_32( ivas_total_brate, IVAS_256k ) )
+ {
+ /* read Ambisonic (SBA) planar flag */
+ st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read];
+ move16();
+ num_bits_read = add( num_bits_read, SBA_PLANAR_BITS );
+ }
+
+ st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1];
+ move16();
+ st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) );
+ move16();
+ num_bits_read = add( num_bits_read, SBA_ORDER_BITS );
+
+ /* read Ambisonic (SBA) order */
+ if ( LT_32( ivas_total_brate, IVAS_256k ) )
+ {
+ st_ivas->sba_order = 3;
+ move16();
+ }
+
+ test();
+ IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) )
+ {
+ IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE
+ {
+ /* set Ambisonic (SBA) order used for analysis and coding */
+ st_ivas->sba_analysis_order = ivas_sba_get_analysis_order_fx( ivas_total_brate, st_ivas->sba_order );
+ move16();
+
+ ivas_sba_config_fx( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init );
+
+ /*correct number of CPEs for discrete ISM coding*/
+ test();
+ IF( st_ivas->ini_frame > 0 && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
+ {
+ st_ivas->nCPE = add( st_ivas->nCPE, shr( add( st_ivas->nchan_ism, 1 ), 1 ) );
+ move16();
+ }
+ }
+
+ IF( GE_32( ivas_total_brate, IVAS_256k ) )
+ {
+ st_ivas->ism_mode = ISM_SBA_MODE_DISC;
+ move32();
+ }
+ ELSE
+ {
+ st_ivas->ism_mode = ISM_MODE_NONE;
+ move32();
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) )
+ {
+ /* read MC configuration */
+ idx = 0;
+ move16();
+ FOR( k = 0; k < MC_LS_SETUP_BITS; k++ )
+ {
+ IF( st_ivas->bit_stream[num_bits_read + k] )
+ {
+ idx = add( idx, shl( 1, sub( ( MC_LS_SETUP_BITS - 1 ), k ) ) );
+ }
+ }
+ num_bits_read = add( num_bits_read, MC_LS_SETUP_BITS );
+
+ /* select MC format mode; reconfigure the MC format decoder */
+ IF( NE_32( ( error = ivas_mc_dec_config_fx( st_ivas, idx, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ /*-------------------------------------------------------------------*
+ * Read element mode
+ *-------------------------------------------------------------------*/
+
+ IF( st_ivas->ini_frame == 0 && element_mode_flag )
+ {
+ /* read stereo technology info */
+ IF( LT_32( ivas_total_brate, MIN_BRATE_MDCT_STEREO ) )
+ {
+ /* 1 bit */
+ IF( st_ivas->bit_stream[num_bits_read] )
+ {
+ st_ivas->element_mode_init = add( 1, IVAS_CPE_DFT );
+ move16();
+ }
+ ELSE
+ {
+ st_ivas->element_mode_init = add( 0, IVAS_CPE_DFT );
+ move16();
+ }
+ }
+ ELSE
+ {
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ }
+ }
+ }
+ ELSE IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) )
+ {
+ SWITCH( st_ivas->sid_format )
+ {
+ case SID_DFT_STEREO:
+ st_ivas->element_mode_init = IVAS_CPE_DFT;
+ move16();
+ BREAK;
+ case SID_MDCT_STEREO:
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ BREAK;
+ case SID_ISM:
+ st_ivas->element_mode_init = IVAS_SCE;
+ move16();
+ BREAK;
+ case SID_MASA_1TC:
+ st_ivas->element_mode_init = IVAS_SCE;
+ move16();
+ st_ivas->nchan_transport = 1;
+ move16();
+ BREAK;
+ case SID_MASA_2TC:; // empyt statement for declaration
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
+ IF( EQ_16( st_ivas->bit_stream[( res_dec - 1 ) - SID_FORMAT_NBITS], 1 ) )
+ {
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ }
+ ELSE
+ {
+ st_ivas->element_mode_init = IVAS_CPE_DFT;
+ move16();
+ }
+ st_ivas->nchan_transport = 2;
+ move16();
+ BREAK;
+ case SID_SBA_1TC:
+ st_ivas->element_mode_init = IVAS_SCE;
+ move16();
+ BREAK;
+ case SID_SBA_2TC:
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ BREAK;
+ }
+
+ test();
+ IF( st_ivas->ini_frame > 0 && EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
+ {
+ Word16 nchan_transport_old, nchan_transport;
+ nchan_transport_old = st_ivas->nchan_transport;
+ move16();
+ IF( ( EQ_16( st_ivas->sid_format, SID_SBA_2TC ) ) )
+ {
+ nchan_transport = 2;
+ }
+ ELSE
+ {
+ nchan_transport = 1;
+ }
+ move16();
+
+ IF( NE_16( nchan_transport_old, nchan_transport ) )
+ {
+ /*Setting the default bitrate for the reconfig function*/
+ IF( EQ_16( st_ivas->sid_format, SID_SBA_2TC ) )
+ {
+ st_ivas->hDecoderConfig->ivas_total_brate = IVAS_48k;
+ move16();
+ }
+ ELSE
+ {
+ st_ivas->hDecoderConfig->ivas_total_brate = IVAS_24k4;
+ move16();
+ }
+
+ IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ st_ivas->last_active_ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;
+ move32();
+ st_ivas->hDecoderConfig->ivas_total_brate = ivas_total_brate;
+ move32();
+ }
+ }
+
+ IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
+ {
+ ISM_MODE last_ism_mode = st_ivas->ism_mode;
+ move32();
+ /* read the number of objects */
+ st_ivas->nchan_transport = 1;
+ move16();
+ nchan_ism = 1;
+ move16();
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
+ k = extract_l( L_sub( L_sub( res_dec, 1 ), SID_FORMAT_NBITS ) );
+ move16();
+
+ WHILE( st_ivas->bit_stream[k] && ( nchan_ism < MAX_NUM_OBJECTS ) )
+ {
+ nchan_ism = add( nchan_ism, 1 );
+ k = sub( k, 1 );
+ }
+ k = sub( k, 1 );
+
+ test();
+ IF( st_ivas->ini_frame > 0 && NE_16( nchan_ism, st_ivas->nchan_ism ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "wrong number of objects signalled!" );
+ }
+
+ st_ivas->nchan_ism = nchan_ism;
+ move16();
+ /* read ism_mode */
+ st_ivas->ism_mode = ISM_MODE_DISC;
+ move32();
+ IF( GT_16( nchan_ism, 2 ) )
+ {
+ k = sub( k, nchan_ism ); /* SID metadata flags */
+ idx = st_ivas->bit_stream[k];
+ move16();
+ st_ivas->ism_mode = (ISM_MODE) add( idx, 1 );
+ move32();
+ }
+
+ if ( st_ivas->ini_frame == 0 )
+ {
+ last_ism_mode = st_ivas->ism_mode;
+ move32();
+ }
+
+ IF( NE_32( ( error = ivas_ism_dec_config_fx( st_ivas, last_ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ }
+
+ /*-------------------------------------------------------------------*
+ * Initialize decoder in the first good frame based on IVAS format
+ * and number of transport channels
+ *-------------------------------------------------------------------*/
+ test();
+ IF( st_ivas->ini_frame == 0 && NE_32( st_ivas->ivas_format, UNDEFINED_FORMAT ) )
+ {
+ IF( NE_32( ( error = doSanityChecks_IVAS( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return IVAS_ERROR( error, "Sanity checks failed" );
+ }
+
+ IF( NE_32( ( error = ivas_init_decoder_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ /*-----------------------------------------------------------------*
+ * reconfig split rendering as renderer might change after bitrate switching
+ *-----------------------------------------------------------------*/
+
+ IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
+ {
+ if ( ( error = ivas_dec_reconfig_split_rend( st_ivas ) ) != IVAS_ERR_OK )
+ {
+ return error;
+ }
+ }
+
+ /*----------------------------------------------------------------*
+ * Reset bitstream pointers
+ *----------------------------------------------------------------*/
+
+ ivas_set_bitstream_pointers( st_ivas );
+
+ reset_elements( st_ivas );
+
+ /* update bitstream buffer pointer -> take into account already read bits */
+ test();
+ IF( ( st_ivas->nSCE > 0 ) || ( st_ivas->nCPE > 0 ) )
+ {
+ IF( st_ivas->nSCE > 0 )
+ {
+ st = st_ivas->hSCE[0]->hCoreCoder[0];
+ }
+ ELSE
+ {
+ st = st_ivas->hCPE[0]->hCoreCoder[0];
+ }
+ st->next_bit_pos = num_bits_read;
+ move16();
+ st->total_brate = ACELP_8k00; /* only temporary initialization - this is needed for get_next_indice() in the frame following NO_DATA frame */
+ move32();
+ }
+
+ return error;
+}
+
+
+/*-------------------------------------------------------------------*
+ * ivas_read_format()
+ *
+ * Read IVAS format signaling
+ *-------------------------------------------------------------------*/
+
+static ivas_error ivas_read_format(
+ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
+ Word16 *num_bits_read /* o : number of IVAS signaling bits read from the bitstream */
+)
+{
+ Word16 k, idx;
+ Word32 ivas_total_brate;
+ ivas_error error;
+
+ error = IVAS_ERR_OK;
+ move32();
+
+ ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;
+ move32();
+
+ *num_bits_read = 0;
+ move16();
+ test();
+ test();
+ IF( !st_ivas->bfi && is_DTXrate( ivas_total_brate ) == 0 )
+ {
+ /* read IVAS format */
+ k = 0;
+ move16();
+ if ( st_ivas->bit_stream[*num_bits_read] )
+ {
+ k = 1;
+ move16();
+ }
+ k = shl( k, 1 );
+ ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
+ move16();
+ if ( st_ivas->bit_stream[*num_bits_read] )
+ {
+ k = add( k, 1 );
+ }
+ ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
+ move16();
+ SWITCH( k )
+ {
+ case 0:
+ st_ivas->ivas_format = STEREO_FORMAT;
+ move32();
+ BREAK;
+ case 1:
+ st_ivas->ivas_format = MC_FORMAT;
+ move32();
+ BREAK;
+ case 2:
+ st_ivas->ivas_format = ISM_FORMAT;
+ move32();
+
+ IF( GE_32( ivas_total_brate, IVAS_24k4 ) )
+ {
+ IF( st_ivas->bit_stream[*num_bits_read] )
+ {
+ ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
+ move16();
+ IF( st_ivas->bit_stream[*num_bits_read] )
+ {
+ st_ivas->ivas_format = SBA_ISM_FORMAT;
+ move32();
+ }
+ ELSE
+ {
+ st_ivas->ivas_format = MASA_ISM_FORMAT;
+ move32();
+ }
+ }
+
+ ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
+ move16();
+ }
+ BREAK;
+ case 3:
+ IF( st_ivas->bit_stream[*num_bits_read] )
+ {
+ st_ivas->ivas_format = MASA_FORMAT;
+ move32();
+ }
+ ELSE
+ {
+ st_ivas->ivas_format = SBA_FORMAT;
+ move32();
+ /* read Ambisonic (SBA) planar flag */
+ st_ivas->sba_planar = st_ivas->bit_stream[( *num_bits_read ) + 1];
+ move16();
+
+ /* read Ambisonic (SBA) order */
+ st_ivas->sba_order = st_ivas->bit_stream[( *num_bits_read ) + 2 + SBA_PLANAR_BITS];
+ move16();
+ st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[( *num_bits_read ) + 1 + SBA_PLANAR_BITS], 1 ) );
+ move16();
+ if ( st_ivas->sba_order == 0 )
+ {
+ st_ivas->ivas_format = SBA_ISM_FORMAT;
+ move32();
+ }
+ }
+ ( *num_bits_read ) = add( ( *num_bits_read ), 1 );
+ move16();
+
+ BREAK;
+ }
+ }
+ ELSE IF( ( st_ivas->bfi == 0 ) && EQ_32( ivas_total_brate, IVAS_SID_5k2 ) )
+ {
+ /* read IVAS format in SID frame */
+ idx = 0;
+ move16();
+ FOR( k = 0; k < SID_FORMAT_NBITS; k++ )
+ {
+ idx += st_ivas->bit_stream[k] << ( SID_FORMAT_NBITS - 1 - k );
+ }
+
+ ( *num_bits_read ) = add( *num_bits_read, SID_FORMAT_NBITS );
+ move16();
+ st_ivas->sid_format = idx;
+ move16();
+
+ SWITCH( idx )
+ {
+ case SID_DFT_STEREO:
+ case SID_MDCT_STEREO:
+ st_ivas->ivas_format = STEREO_FORMAT;
+ move32();
+ BREAK;
+ case SID_ISM:
+ st_ivas->ivas_format = ISM_FORMAT;
+ move32();
+ BREAK;
+ case SID_MULTICHANNEL:
+ st_ivas->ivas_format = MC_FORMAT;
+ move32();
+ BREAK;
+ case SID_SBA_1TC:
+ st_ivas->ivas_format = SBA_FORMAT;
+ move32();
+ st_ivas->element_mode_init = IVAS_SCE;
+ move16();
+ BREAK;
+ case SID_SBA_2TC:
+ st_ivas->ivas_format = SBA_FORMAT;
+ move32();
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ BREAK;
+ case SID_MASA_1TC:
+ st_ivas->ivas_format = MASA_FORMAT;
+ move32();
+ st_ivas->element_mode_init = IVAS_SCE;
+ move16();
+ BREAK;
+ case SID_MASA_2TC:
+ st_ivas->ivas_format = MASA_FORMAT;
+ move32();
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 );
+ IF( EQ_32( st_ivas->bit_stream[res_dec - 1], 1 ) )
+ {
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ }
+ ELSE
+ {
+ st_ivas->element_mode_init = IVAS_CPE_DFT;
+ move16();
+ }
+ BREAK;
+ default:
+ /* This should actually be impossible, since only 3 bits are read, so if this happens something is broken */
+ return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Invalid value %c found in SID format field.", st_ivas->sid_format );
+ }
+
+ IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
+ {
+ if ( st_ivas->sba_analysis_order == 0 )
+ {
+ st_ivas->sba_analysis_order = SBA_FOA_ORDER;
+ move16();
+ }
+ }
+
+ /* reset bitstream handle to avoid BER detection after reading the 2400 kbps for ch0 */
+ st_ivas->bit_stream = st_ivas->bit_stream + ( *num_bits_read );
+ ( *num_bits_read ) = 0;
+ move16();
+ }
+ ELSE
+ {
+ /* In SID/NO_DATA frames, use the previous frame IVAS format */
+ }
+
+ return error;
+}
+
+
+/*-------------------------------------------------------------------*
+ * getNumChanSynthesis()
+ *
+ * get number of output channels used for synthesis/decoding
+ * (often different from number of output channels!)
+ *-------------------------------------------------------------------*/
+
+/*! r: number of channels to be synthesised */
+
+Word16 getNumChanSynthesis(
+ Decoder_Struct *st_ivas /* i : IVAS decoder structure */
+)
+{
+ Word16 n;
+
+ n = add( st_ivas->nSCE, imult1616( CPE_CHANNELS, st_ivas->nCPE ) );
+ test();
+ test();
+ IF( st_ivas->sba_dirac_stereo_flag )
+ {
+ n = CPE_CHANNELS;
+ move16();
+ }
+ ELSE IF( ( st_ivas->hMCT != NULL || EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) && NE_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
+ {
+ n = st_ivas->nchan_transport;
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
+ {
+ IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
+ {
+ n = add( st_ivas->nchan_transport, st_ivas->nchan_ism );
+ }
+ ELSE
+ {
+ n = st_ivas->nchan_transport;
+ move16();
+ }
+ }
+
+ return n;
+}
+
+/*-------------------------------------------------------------------*
+ * copy_decoder_config()
+ *
+ * Copy IVAS configuration structure to the CoreCoder state structure
+ *-------------------------------------------------------------------*/
+
+void copy_decoder_config(
+ Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
+ Decoder_State *st /* o : decoder state structure */
+)
+{
+ st->output_Fs = st_ivas->hDecoderConfig->output_Fs;
+ move32();
+ st->Opt_AMR_WB = st_ivas->hDecoderConfig->Opt_AMR_WB;
+ move16();
+ st->codec_mode = st_ivas->codec_mode;
+ move16();
+ st->ini_frame = st_ivas->ini_frame;
+ move16();
+
+ st->bfi = st_ivas->bfi;
+ move16();
+
+ st->writeFECoffset = st_ivas->writeFECoffset;
+ move16();
+
+ st->element_mode = st_ivas->element_mode_init;
+ move16();
+
+ return;
+}
+
+/*-------------------------------------------------------------------*
+ * ivas_init_decoder_front()
+ *
+ * Set decoder parameters to initial values
+ *-------------------------------------------------------------------*/
+ivas_error ivas_init_decoder_front(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+)
+{
+ ivas_error error;
+
+ error = IVAS_ERR_OK;
+ move32();
+ /*-----------------------------------------------------------------*
+ * Resets
+ *-----------------------------------------------------------------*/
+
+ st_ivas->nSCE = 0;
+ move16();
+ st_ivas->nCPE = 0;
+ move16();
+ st_ivas->nCPE_old = 0;
+ move16();
+ st_ivas->nchan_transport = -1;
+ move16();
+ st_ivas->ism_mode = ISM_MODE_NONE;
+ move32();
+ st_ivas->mc_mode = MC_MODE_NONE;
+ move32();
+ st_ivas->sba_dirac_stereo_flag = 0;
+ move16();
+
+ /* HRTF binauralization latency in ns */
+ st_ivas->binaural_latency_ns = 0;
+ move32();
+
+ /*-------------------------------------------------------------------*
+ * Allocate and initialize Custom loudspeaker layout handle
+ *--------------------------------------------------------------------*/
+
+ IF( st_ivas->hDecoderConfig->Opt_LsCustom )
+ {
+ IF( EQ_32( ( error = ivas_ls_custom_open_fx( &( st_ivas->hLsSetupCustom ) ) ), IVAS_ERR_OK ) )
+ {
+ set_zero_fx( ( st_ivas->hLsSetupCustom )->ls_azimuth_fx, MAX_OUTPUT_CHANNELS );
+ set_zero_fx( ( st_ivas->hLsSetupCustom )->ls_elevation_fx, MAX_OUTPUT_CHANNELS );
+ }
+ ELSE
+ {
+ return error;
+ }
+ }
+
+ /*-------------------------------------------------------------------*
+ * Allocate and initialize Head-Tracking handle
+ *--------------------------------------------------------------------*/
+
+ IF( st_ivas->hDecoderConfig->Opt_Headrotation )
+ {
+ IF( NE_32( ( error = ivas_headTrack_open_fx( &( st_ivas->hHeadTrackData ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ error = ivas_orient_trk_SetTrackingType_fx( st_ivas->hHeadTrackData->OrientationTracker, st_ivas->hDecoderConfig->orientation_tracking );
+ IF( NE_32( ( error ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ /*-------------------------------------------------------------------*
+ * Allocate and initialize external orientation handle
+ *--------------------------------------------------------------------*/
+
+ IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation )
+ {
+ IF( NE_32( ( error = ivas_external_orientation_open( &( st_ivas->hExtOrientationData ), st_ivas->hDecoderConfig->render_framesize ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ /*-------------------------------------------------------------------*
+ * Allocate and initialize combined orientation handle
+ *--------------------------------------------------------------------*/
+ test();
+ IF( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation )
+ {
+ IF( NE_32( ( error = ivas_combined_orientation_open( &( st_ivas->hCombinedOrientationData ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hDecoderConfig->render_framesize ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ /*-------------------------------------------------------------------*
+ * Allocate HRTF binary handle
+ *--------------------------------------------------------------------*/
+
+ IF( st_ivas->hDecoderConfig->Opt_HRTF_binary ){
+ IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( st_ivas->hHrtfTD ) ) ), IVAS_ERR_OK ) ){
+ return error;
+}
+
+IF( NE_32( ( error = ivas_HRTF_CRend_binary_open_fx( &( st_ivas->hSetOfHRTF ) ) ), IVAS_ERR_OK ) )
+{
+ return error;
+}
+
+IF( NE_32( ( error = ivas_HRTF_fastconv_binary_open_fx( &st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) )
+{
+ return error;
+}
+
+IF( NE_32( ( error = ivas_HRTF_parambin_binary_open_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
+{
+ return error;
+}
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ), IVAS_ERR_OK ) )
+{
+ return error;
+}
+#endif
+}
+
+/*-------------------------------------------------------------------*
+ * Allocate and initialize Binaural Renderer configuration handle
+ *--------------------------------------------------------------------*/
+test();
+test();
+IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ||
+ ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) )
+{
+ IF( NE_32( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ IF( NE_32( ( error = ivas_render_config_init_from_rom_fx( &st_ivas->hRenderConfig ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+}
+
+return error;
+}
+
+
+/*-------------------------------------------------------------------*
+ * ivas_init_decoder()
+ *
+ * Initialize IVAS decoder state structure
+ *-------------------------------------------------------------------*/
+ivas_error ivas_init_decoder_fx(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+)
+{
+ Word16 i, n, k;
+ Word16 sce_id, cpe_id;
+ Word16 numCldfbAnalyses, numCldfbSyntheses;
+ Word16 granularity, n_channels_transport_jbm;
+ Word32 output_Fs, ivas_total_brate;
+ Word32 binauralization_delay_ns;
+ AUDIO_CONFIG output_config;
+ DECODER_CONFIG_HANDLE hDecoderConfig;
+ ivas_error error;
+ Word32 ism_total_brate;
+
+ error = IVAS_ERR_OK;
+ move32();
+ output_Fs = st_ivas->hDecoderConfig->output_Fs;
+ move32();
+ hDecoderConfig = st_ivas->hDecoderConfig;
+ output_config = hDecoderConfig->output_config;
+ ivas_total_brate = hDecoderConfig->ivas_total_brate;
+ move32();
+ hDecoderConfig->last_ivas_total_brate = ivas_total_brate;
+ move32();
+ st_ivas->last_active_ivas_total_brate = ivas_total_brate;
+ move32();
+ /*-----------------------------------------------------------------*
+ * Set number of output channels for EXTERNAL output config.
+ *-----------------------------------------------------------------*/
+
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
+ {
+ hDecoderConfig->nchan_out = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 );
+ move16();
+ hDecoderConfig->nchan_out = add( hDecoderConfig->nchan_out, st_ivas->nchan_ism );
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
+ {
+ hDecoderConfig->nchan_out = add( st_ivas->nchan_transport, st_ivas->nchan_ism );
+ move16();
+ }
+ ELSE IF( !EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
+ {
+ hDecoderConfig->nchan_out = st_ivas->nchan_transport;
+ move16();
+ }
+
+ st_ivas->hOutSetup.nchan_out_woLFE = hDecoderConfig->nchan_out;
+ move16();
+ }
+
+ /*-----------------------------------------------------------------*
+ * Set output and intern setup & renderer selection
+ *-----------------------------------------------------------------*/
+
+ st_ivas->intern_config = output_config;
+ move32();
+ ivas_output_init( &( st_ivas->hOutSetup ), output_config );
+ test();
+ IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
+ {
+ st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER;
+ move16();
+ st_ivas->intern_config = IVAS_AUDIO_CONFIG_7_1_4;
+ move32();
+ st_ivas->hOutSetup.output_config = st_ivas->intern_config;
+ move32();
+ st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( st_ivas->intern_config );
+ move16();
+ }
+ test();
+ IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER;
+ move32();
+ st_ivas->intern_config = IVAS_AUDIO_CONFIG_HOA3;
+ move32();
+ st_ivas->hOutSetup.output_config = IVAS_AUDIO_CONFIG_HOA3;
+ move32();
+ st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 );
+ move16();
+ }
+
+ /* Only initialize transport setup if it is used */
+ IF( NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_INVALID ) )
+ {
+ ivas_output_init( &( st_ivas->hTransSetup ), st_ivas->transport_config );
+ }
+
+ test();
+ IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) )
+ {
+ ivas_mcmasa_setNumTransportChannels_fx( &( st_ivas->nchan_transport ), &( st_ivas->element_mode_init ), ivas_total_brate );
+
+ ivas_mcmasa_set_separate_channel_mode_fx( &( st_ivas->hOutSetup.separateChannelEnabled ), &( st_ivas->hOutSetup.separateChannelIndex ), ivas_total_brate );
+ }
+
+ ivas_renderer_select( st_ivas );
+
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ IF( EQ_16( ( error = ivas_ls_custom_output_init_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ st_ivas->hOutSetup.ls_azimuth_fx = st_ivas->hLsSetupCustom->ls_azimuth_fx;
+ move32();
+ st_ivas->hOutSetup.ls_elevation_fx = st_ivas->hLsSetupCustom->ls_elevation_fx;
+ move32();
+ st_ivas->hIntSetup.ls_azimuth_fx = st_ivas->hLsSetupCustom->ls_azimuth_fx;
+ move32();
+ st_ivas->hIntSetup.ls_elevation_fx = st_ivas->hLsSetupCustom->ls_elevation_fx;
+ move32();
+ }
+ ELSE
+ {
+ return error;
+ }
+ }
+
+ ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->intern_config );
+
+ test();
+ IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) )
+ {
+ ivas_mcmasa_set_separate_channel_mode_fx( &( st_ivas->hIntSetup.separateChannelEnabled ), &( st_ivas->hIntSetup.separateChannelIndex ), ivas_total_brate );
+
+ test();
+ IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && st_ivas->hOutSetup.separateChannelEnabled )
+ {
+ st_ivas->hLsSetupCustom->separate_ch_found = 0;
+ move16();
+ IF( GE_16( st_ivas->hOutSetup.nchan_out_woLFE, MCMASA_MIN_SPEAKERS_SEPARATE_CENTER ) )
+ {
+ /* check for a speaker at (0, 0) if minimum speaker count is available */
+ FOR( i = 0; i < st_ivas->hOutSetup.nchan_out_woLFE; i++ )
+ {
+ test();
+ IF( ( L_shr( st_ivas->hOutSetup.ls_azimuth_fx[i], Q22 ) == 0 ) && ( L_shr( st_ivas->hOutSetup.ls_elevation_fx[i], Q22 ) == 0 ) )
+ {
+ st_ivas->hIntSetup.separateChannelIndex = i;
+ move16();
+ st_ivas->hLsSetupCustom->separate_ch_found = 1;
+ move16();
+ BREAK;
+ }
+ }
+ }
+ }
+ }
+
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ /*--------------------------------------------------------------------*
+ * Allocate and initialize HRTF Statistics handle
+ *--------------------------------------------------------------------*/
+
+ IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
+ {
+ IF( NE_32( ( error = ivas_HRTF_statistics_init( &st_ivas->hHrtfStatistics, output_Fs ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+#endif
+
+ /*-----------------------------------------------------------------*
+ * Initialize binuaral split rendering
+ *-----------------------------------------------------------------*/
+
+ IF( st_ivas->hSplitBinRend != NULL && ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ||
+ ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan && EQ_16( st_ivas->hRenderConfig->split_rend_config.dof, 0 ) ) ) )
+ {
+ IF( ( error = ivas_dec_init_split_rend( st_ivas ) ) != IVAS_ERR_OK )
+ {
+ return error;
+ }
+ }
+
+ /*-----------------------------------------------------------------*
+ * Allocate and initialize SCE/CPE and other handles
+ *-----------------------------------------------------------------*/
+
+ IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) )
+ {
+ st_ivas->nSCE = 1; /* in mono, there is always only one SCE */
+ move16();
+ st_ivas->nCPE = 0;
+ move16();
+ st_ivas->nCPE_old = 0;
+ move16();
+ st_ivas->nchan_transport = 1;
+ move16();
+ sce_id = 0;
+ move16();
+
+ IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) )
+ {
+ st_ivas->nchan_transport = CPE_CHANNELS;
+ move16();
+ st_ivas->intern_config = IVAS_AUDIO_CONFIG_STEREO;
+ move32();
+
+ st_ivas->nSCE = 0;
+ move16();
+ st_ivas->nCPE = 1; /* in stereo, there is always only one CPE */
+ move16();
+ st_ivas->nCPE_old = 0;
+ move16();
+ cpe_id = 0;
+ move16();
+
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, ivas_total_brate ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < st_ivas->nchan_transport; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
+ }
+
+ /* init EFAP for custom LS output and set hTransSetup */
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hOutSetup.ls_azimuth_fx, st_ivas->hOutSetup.ls_elevation_fx, st_ivas->hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ ivas_output_init( &( st_ivas->hTransSetup ), IVAS_AUDIO_CONFIG_STEREO );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
+ {
+ Word32 element_brate_tmp[MAX_NUM_OBJECTS];
+
+ st_ivas->nSCE = st_ivas->nchan_transport; /* "st_ivas->nchan_transport" is known from ivas_dec_setup */
+ move16();
+ st_ivas->nCPE = 0;
+ move16();
+ st_ivas->nCPE_old = 0;
+ move16();
+ st_ivas->ism_extmeta_active = -1;
+ move16();
+ st_ivas->ism_extmeta_cnt = 0;
+ move16();
+ IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
+ {
+ st_ivas->nchan_transport = MAX_PARAM_ISM_WAVE;
+ move16();
+ st_ivas->nSCE = MAX_PARAM_ISM_WAVE;
+ move16();
+
+ IF( NE_32( ( error = ivas_param_ism_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nSCE, element_brate_tmp ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
+ {
+ IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, element_brate_tmp[sce_id] ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
+
+ st_ivas->hSCE[sce_id]->hCoreCoder[0]->is_ism_format = 1;
+ move16();
+ }
+
+ st_ivas->hISMDTX.sce_id_dtx = 0;
+ move16();
+
+ IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
+ {
+ st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2 = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed3;
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MODE_DISC ) )
+ {
+ FOR( sce_id = 0; sce_id < st_ivas->nSCE; ++sce_id )
+ {
+ st_ivas->hSCE[sce_id]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2 = add( 2, sce_id );
+ move16();
+ }
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
+ {
+ IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ IF( NE_32( ( error = ivas_spar_dec_open_fx( st_ivas, 0 ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ set16_fx( st_ivas->hSpar->hFbMixer->cldfb_cross_fade_fx, 0, CLDFB_NO_COL_MAX );
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) && st_ivas->hOutSetup.is_loudspeaker_setup )
+ {
+ IF( NE_32( ( error = ivas_sba_get_hoa_dec_matrix_fx( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ Word16 hodirac_flag = ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order );
+ IF( hodirac_flag )
+ {
+ IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, IVAS_MAX_NUM_BANDS, st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE
+ {
+ IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+
+ test();
+ test();
+ IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) )
+ {
+ IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band;
+ move16();
+ }
+ ELSE
+ {
+ Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1];
+
+ st_ivas->hSpar->enc_param_start_band = s_min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND );
+ move16();
+ IF( ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) )
+ {
+ st_ivas->hSpar->enc_param_start_band = 0;
+ move16();
+ set8_fx( (Word8 *) st_ivas->hQMetaData->twoDirBands, (Word8) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands );
+ st_ivas->hQMetaData->numTwoDirBands = (UWord8) st_ivas->hQMetaData->q_direction[0].cfg.nbands;
+ move16();
+ }
+
+ ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ),
+ st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0, 1 );
+ }
+ st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas );
+ move16();
+ FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
+ }
+
+ FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, (res_dec) *CPE_CHANNELS ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
+ }
+ }
+
+ /* create CPE element for DFT Stereo like upmix */
+ test();
+ IF( st_ivas->sba_dirac_stereo_flag && ( st_ivas->nCPE == 0 ) )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 );
+
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */
+ st_ivas->hCPE[0]->hCoreCoder[1] = NULL;
+ }
+
+ IF( GT_16( st_ivas->nCPE, 1 ) )
+ {
+ IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ /* set CNA/CNG flags */
+ ivas_sba_set_cna_cng_flag( st_ivas );
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
+ {
+ /* if we start in ISM_MODE_NONE in MASA_ISM, that appears as normal MASA, but we may change to a mode with ISMs */
+ st_ivas->ism_extmeta_active = -1;
+ move16();
+ st_ivas->ism_extmeta_cnt = 0;
+ move16();
+ IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ test();
+ test();
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) )
+ {
+ IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
+ }
+
+ FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
+ }
+ }
+
+ /* set CNA/CNG flags */
+ ivas_sba_set_cna_cng_flag( st_ivas );
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
+ {
+ Word32 temp_brate[MAX_SCE];
+ st_ivas->ism_extmeta_active = -1;
+ move16();
+ st_ivas->ism_extmeta_cnt = 0;
+ move16();
+
+ st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas );
+ move16();
+ IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ IF( NE_32( ( error = ivas_spar_dec_open_fx( st_ivas, 0 ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) && st_ivas->hOutSetup.is_loudspeaker_setup )
+ {
+ IF( NE_32( ( error = ivas_sba_get_hoa_dec_matrix_fx( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ Word16 hodirac_flag = ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order );
+ IF( hodirac_flag )
+ {
+ IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, IVAS_MAX_NUM_BANDS, st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE
+ {
+ IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+
+ test();
+ test();
+ IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) )
+ {
+ IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band;
+ move16();
+ }
+ ELSE
+ {
+ Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1];
+
+ st_ivas->hSpar->enc_param_start_band = s_min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND );
+ move16();
+ IF( ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) )
+ {
+ st_ivas->hSpar->enc_param_start_band = 0;
+ move16();
+ set8_fx( (Word8 *) st_ivas->hQMetaData->twoDirBands, (Word8) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands );
+ st_ivas->hQMetaData->numTwoDirBands = (UWord8) st_ivas->hQMetaData->q_direction[0].cfg.nbands;
+ move16();
+ }
+
+ ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ),
+ st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0, 1 );
+ }
+
+ FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
+ }
+
+ IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
+ {
+ st_ivas->nCPE_old = st_ivas->nCPE;
+ move16();
+ st_ivas->nCPE = add( st_ivas->nCPE, shr( add( st_ivas->nchan_ism, 1 ), 1 ) );
+ move16();
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ }
+
+ FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
+ }
+ }
+
+ /* create CPE element for DFT Stereo like upmix */
+ test();
+ IF( st_ivas->sba_dirac_stereo_flag && st_ivas->nCPE == 0 )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */
+ st_ivas->hCPE[0]->hCoreCoder[1] = NULL;
+ }
+
+ IF( GT_16( st_ivas->nCPE, 1 ) )
+ {
+ IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
+ {
+ IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nchan_ism, temp_brate ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ IF( NE_32( ( error = ivas_osba_data_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ /* set CNA/CNG flags */
+ ivas_sba_set_cna_cng_flag( st_ivas );
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
+ {
+ st_ivas->ism_extmeta_active = -1;
+ move16();
+ st_ivas->ism_extmeta_cnt = 0;
+ move16();
+
+ IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ k = 0;
+ move16();
+ ism_total_brate = 0;
+ move32();
+
+ WHILE( ( k < SIZE_IVAS_BRATE_TBL ) && ( ivas_total_brate != ivas_brate_tbl[k] ) )
+ {
+ k = add( k, 1 );
+ }
+ test();
+ IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) )
+ {
+ /* one separated object */
+ st_ivas->nSCE = 1;
+ move16();
+ ism_total_brate = sep_object_brate[k - 2][0];
+ move32();
+ IF( NE_32( ( error = create_sce_dec( st_ivas, 0, ism_total_brate ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ reset_indices_dec( st_ivas->hSCE[0]->hCoreCoder[0] );
+
+ IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, 1, NULL ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
+ {
+ Word32 temp_brate[MAX_SCE];
+ st_ivas->nSCE = st_ivas->nchan_ism; /* number of objects */
+ move16();
+ FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
+ {
+ temp_brate[sce_id] = sep_object_brate[k - 2][st_ivas->nSCE - 1];
+ move32();
+ ism_total_brate = L_add( ism_total_brate, temp_brate[sce_id] );
+
+ IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, temp_brate[sce_id] ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
+ }
+
+ IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nchan_ism, temp_brate ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ IF( NE_32( ( error = ivas_omasa_data_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ test();
+ test();
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) )
+ {
+ IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, 0, ivas_total_brate - ism_total_brate ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[0]->hCoreCoder[n] );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) )
+ {
+ IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) )
+ {
+ /* init EFAP for custom LS setup */
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ st_ivas->nchan_transport = ivas_mc_ls_setup_get_num_channels_fx( ivas_mc_map_output_config_to_mc_ls_setup_fx( st_ivas->transport_config ) );
+ move16();
+ st_ivas->nSCE = 0;
+ move16();
+ st_ivas->nCPE = shr( st_ivas->nchan_transport, 1 );
+ move16();
+ st_ivas->nCPE_old = 0;
+ move16();
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, sub( st_ivas->nchan_transport, 1 ), &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
+ }
+ }
+
+ IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) )
+ {
+ /* init EFAP for custom LS setup */
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ st_ivas->nSCE = 0;
+ move16();
+ st_ivas->nCPE = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS >> 1;
+ move16();
+ st_ivas->nCPE_old = 0;
+ move16();
+ st_ivas->nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS;
+ move16();
+
+ IF( NE_32( ( error = ivas_mc_paramupmix_dec_open( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ st_ivas->element_mode_init = IVAS_CPE_MDCT;
+ move16();
+ FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, sub( st_ivas->nchan_transport, 1 ), &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
+ }
+ }
+
+ IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) )
+ {
+ /* init EFAP for custom LS setup */
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ IF( NE_32( ( error = ivas_param_mc_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ st_ivas->hParamMC->proto_matrix_int_e = 0;
+ move16();
+ FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 );
+
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
+ }
+ }
+
+ IF( GT_16( st_ivas->nCPE, 1 ) )
+ {
+ IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) )
+ {
+ Word32 brate_sce, brate_cpe;
+
+ ivas_mcmasa_setNumTransportChannels_fx( &( st_ivas->nchan_transport ), &( st_ivas->element_mode_init ), ivas_total_brate );
+
+ IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+
+ {
+ return error;
+ }
+
+ st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas );
+ move16();
+ test();
+ IF( NE_32( st_ivas->renderer_type, RENDERER_DISABLE ) && NE_32( st_ivas->renderer_type, RENDERER_MCMASA_MONO_STEREO ) )
+ {
+ IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ test();
+ test();
+ IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && st_ivas->hOutSetup.separateChannelEnabled && !st_ivas->hLsSetupCustom->separate_ch_found )
+ {
+ /* If no speaker matching the separated channel, compute panning gains for the separated channel. */
+ IF( st_ivas->hVBAPdata == NULL )
+ {
+ /* Distribute signal to all channels if VBAP is not properly initialized. */
+ Word16 inv_sqr, sqr, exp = 15, exp_sqr;
+ move16();
+ IF( EQ_16( st_ivas->hLsSetupCustom->num_spk, 1 ) )
+ {
+ inv_sqr = 32767; // (1.0f in Q15)-1
+ move16();
+ }
+ ELSE
+ {
+ sqr = Sqrt16( st_ivas->hLsSetupCustom->num_spk, &exp );
+ inv_sqr = BASOP_Util_Divide1616_Scale( 32767, sqr, &exp_sqr );
+ exp_sqr = sub( exp_sqr, exp );
+ IF( ( exp < 0 ) )
+ {
+ inv_sqr = shr( inv_sqr, exp ); // exp_sqr
+ }
+ ELSE
+ {
+ inv_sqr = shl( inv_sqr, exp ); // exp_sqr
+ }
+ }
+ set16_fx( st_ivas->hLsSetupCustom->separate_ch_gains_fx, inv_sqr, st_ivas->hLsSetupCustom->num_spk );
+ }
+ }
+
+
+ ivas_mcmasa_split_brate_fx( st_ivas->hOutSetup.separateChannelEnabled, ivas_total_brate, st_ivas->nSCE, st_ivas->nCPE, &brate_sce, &brate_cpe );
+
+ FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
+ {
+ IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, brate_sce ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] );
+ }
+
+ FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ )
+ {
+ st_ivas->element_mode_init = IVAS_CPE_MDCT; /* element_mode_init was IVAS_SCE for SCE initialization */
+ move16();
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, brate_cpe ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] );
+ }
+ }
+
+ /* create CPE element for DFT Stereo like upmix */
+ IF( st_ivas->sba_dirac_stereo_flag )
+ {
+ Word32 res_dec, res_frac;
+ iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 );
+ IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */
+ st_ivas->hCPE[0]->hCoreCoder[1] = NULL;
+ }
+
+ /* set CNA/CNG flags */
+ test();
+ test();
+ IF( EQ_16( st_ivas->nchan_transport, 1 ) && ( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) ) )
+ {
+ st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag = 1;
+ move16();
+ st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag = 1;
+ move16();
+ }
+ }
+ }
+
+
+ /*-----------------------------------------------------------------*
+ * Allocate and initialize HP20 filter memories
+ *-----------------------------------------------------------------*/
+
+ /* set number of output channels used for synthesis/decoding */
+ n = getNumChanSynthesis( st_ivas );
+
+ IF( n > 0 )
+ {
+ IF( ( st_ivas->mem_hp20_out_fx = (Word32 **) malloc( n * sizeof( Word32 * ) ) ) == NULL )
+ {
+ return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) );
+ }
+ }
+ ELSE
+ {
+ st_ivas->mem_hp20_out_fx = NULL;
+ }
+
+ FOR( i = 0; i < n; i++ )
+ {
+ IF( ( st_ivas->mem_hp20_out_fx[i] = (Word32 *) malloc( ( L_HP20_MEM + 2 ) * sizeof( Word32 ) ) ) == NULL )
+ {
+ return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) );
+ }
+ set32_fx( st_ivas->mem_hp20_out_fx[i], 0, L_HP20_MEM + 2 );
+ }
+
+ /*-------------------------------------------------------------------*
+ * Allocate and initialize rendering handles
+ *--------------------------------------------------------------------*/
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
+ {
+ IF( NE_32( ( error = ivas_binRenderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ /* ParamISM is handled separately from other common config */
+ ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) && ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) )
+ {
+ IF( NE_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) )
+ {
+ IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) )
+#else
+ IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
+#endif
+ {
+ return error;
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) )
+ {
+ Word16 SrcInd[MAX_NUM_TDREND_CHANNELS];
+ Word16 num_src;
+ IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ Word16 nchan_rend = num_src;
+ move16();
+ test();
+ IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */
+ }
+ FOR( Word16 nS = 0; nS < nchan_rend; nS++ )
+ {
+ TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]];
+ if ( Src_p->SrcSpatial_p != NULL )
+ {
+ Src_p->SrcSpatial_p->q_Pos_p = Q31;
+ move16();
+ }
+ TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p;
+ SrcSpatial_p->q_Pos_p = Q31;
+ move16();
+ }
+
+ IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
+ {
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ if ( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) )
+#else
+ IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) )
+#endif
+ {
+ return error;
+ }
+ }
+
+ granularity = NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES );
+
+ n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas );
+
+
+ IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MC ) )
+ {
+ IF( NE_32( ( error = ivas_ls_setup_conversion_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) )
+ {
+ IF( NE_32( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) )
+ {
+ test();
+ test();
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && EQ_32( st_ivas->ivas_format, MC_FORMAT ) && ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) )
+ {
+ IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hIntSetup.ls_azimuth_fx, st_ivas->hIntSetup.ls_elevation_fx, st_ivas->hIntSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config,
+ st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ),
+ IVAS_ERR_OK ) )
+#else
+ IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config,
+ st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ),
+ IVAS_ERR_OK ) )
+#endif
+ {
+ return error;
+ }
+
+ st_ivas->binaural_latency_ns = st_ivas->hCrendWrapper->binaural_latency_ns;
+ move32();
+
+ test();
+ IF( ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) && ( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) )
+ {
+ granularity = NS2SA_FX2( output_Fs, CLDFB_SLOT_NS );
+
+ n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas );
+
+
+ IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, MC_PARAMUPMIX_MAX_INPUT_CHANS, MC_PARAMUPMIX_MAX_INPUT_CHANS, granularity ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ ELSE
+ {
+ granularity = NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES );
+
+ n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas );
+
+ IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ }
+
+ IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
+ {
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
+ {
+ /* Allocate TD renderer for the objects in DISC mode */
+ Word16 SrcInd[MAX_NUM_TDREND_CHANNELS];
+ Word16 num_src;
+ IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ Word16 nchan_rend = num_src;
+ move16();
+ test();
+ if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */
+ }
+ FOR( Word16 nS = 0; nS < nchan_rend; nS++ )
+ {
+ TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]];
+ if ( Src_p->SrcSpatial_p != NULL )
+ {
+ Src_p->SrcSpatial_p->q_Pos_p = Q31;
+ move16();
+ }
+ TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p;
+ SrcSpatial_p->q_Pos_p = Q31;
+ move16();
+ }
+
+ /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */
+ IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ test();
+ test();
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && ( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) )
+ {
+ /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */
+ IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ }
+
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ IF( ( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) &&
+ ( EQ_32( st_ivas->ism_mode, ISM_MODE_DISC ) || EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) &&
+ ( EQ_32( st_ivas->renderer_type, RENDERER_TD_PANNING ) ||
+ EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ||
+ EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) ||
+ EQ_32( st_ivas->renderer_type, RENDERER_OSBA_STEREO ) ||
+ EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) ||
+ EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) ||
+ EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
+ EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ||
+ EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) )
+ {
+ IF( NE_32( ( error = ivas_ism_renderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
+ {
+ test();
+ test();
+ IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
+ {
+ /* Allocate TD renderer for the objects in DISC mode */
+ Word16 SrcInd[MAX_NUM_TDREND_CHANNELS];
+ Word16 num_src;
+ IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ Word16 nchan_rend = num_src;
+ move16();
+
+ test();
+ if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */
+ }
+ FOR( Word16 nS = 0; nS < nchan_rend; nS++ )
+ {
+ TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]];
+ if ( Src_p->SrcSpatial_p != NULL )
+ {
+ Src_p->SrcSpatial_p->q_Pos_p = Q31;
+ move16();
+ }
+ TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p;
+ SrcSpatial_p->q_Pos_p = Q31;
+ move16();
+ }
+ }
+ }
+
+ /*-----------------------------------------------------------------*
+ * LFE handles for rendering after rendering to adjust LFE delay to binaural filter delay
+ *-----------------------------------------------------------------*/
+ test();
+ IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) )
+ {
+ binauralization_delay_ns = st_ivas->binaural_latency_ns;
+ move32();
+ IF( st_ivas->hBinRenderer != NULL )
+ {
+ IF( st_ivas->hBinRenderer->render_lfe )
+ {
+ IF( NE_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
+ {
+ /* Account for filterbank delay */
+ binauralization_delay_ns = L_add( binauralization_delay_ns, IVAS_FB_DEC_DELAY_NS );
+ }
+ }
+ ELSE
+ {
+ binauralization_delay_ns = 0;
+ move32();
+ }
+ }
+
+ IF( NE_32( ( error = ivas_create_lfe_dec_fx( &st_ivas->hLFE, output_Fs, binauralization_delay_ns ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ set32_fx( st_ivas->hLFE->prevsynth_buf_fx, 0, LFE_PLC_BUFLEN );
+ set32_fx( st_ivas->hLFE->prior_out_buffer_fx, 0, L_FRAME48k );
+ }
+
+ /*-----------------------------------------------------------------*
+ * CLDFB handles for rendering
+ *-----------------------------------------------------------------*/
+
+ ivas_init_dec_get_num_cldfb_instances_ivas_fx( st_ivas, &numCldfbAnalyses, &numCldfbSyntheses );
+
+ FOR( i = 0; i < numCldfbAnalyses; i++ )
+ {
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ FOR( ; i < MAX_INTERN_CHANNELS; i++ )
+ {
+ st_ivas->cldfbAnaDec[i] = NULL;
+ }
+
+ FOR( i = 0; i < numCldfbSyntheses; i++ )
+ {
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ FOR( ; i < MAX_OUTPUT_CHANNELS; i++ )
+ {
+ st_ivas->cldfbSynDec[i] = NULL;
+ }
+
+ /* CLDFB Interpolation weights */
+ test();
+ test();
+ test();
+ IF( ( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) && !st_ivas->sba_dirac_stereo_flag && NE_16( st_ivas->hDecoderConfig->nchan_out, 1 ) )
+ {
+ Word16 Q_cldfbSynDec = Q11;
+ move16();
+ ivas_spar_get_cldfb_gains_fx( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig );
+
+ FOR( i = 0; i < st_ivas->cldfbAnaDec[0]->cldfb_state_length; i++ )
+ {
+ st_ivas->cldfbAnaDec[0]->cldfb_state_fx[i] = L_shr( st_ivas->cldfbAnaDec[0]->cldfb_state_fx[i], 16 ); // Scaling down from 27 to 11
+ move32();
+ }
+ st_ivas->cldfbAnaDec[0]->Q_cldfb_state = Q11;
+ move16();
+ FOR( i = 0; i < st_ivas->cldfbSynDec[0]->cldfb_state_length; i++ )
+ {
+ st_ivas->cldfbSynDec[0]->cldfb_state_fx[i] = L_shr( st_ivas->cldfbSynDec[0]->cldfb_state_fx[i], sub( 21, Q_cldfbSynDec ) ); // Scaling down from 21 to Q_cldfbSynDec
+ move32();
+ }
+ st_ivas->cldfbSynDec[0]->Q_cldfb_state = Q11;
+ move16();
+ }
+
+ /*-----------------------------------------------------------------*
+ * Allocate and initialize limiter struct
+ *-----------------------------------------------------------------*/
+
+ IF( NE_32( ( error = ivas_limiter_open_fx( &st_ivas->hLimiter, hDecoderConfig->nchan_out, output_Fs ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+
+ /*-----------------------------------------------------------------*
+ * Allocate and initialize JBM struct + buffer
+ *-----------------------------------------------------------------*/
+
+ IF( st_ivas->hTcBuffer == NULL )
+
+ {
+ /* no module has yet open the TC buffer, open a default one */
+ n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas );
+
+ IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, ivas_jbm_dec_get_tc_buffer_mode( st_ivas ), n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ IF( st_ivas->hTcBuffer == NULL )
+ {
+ /* we need the handle anyway, but without the buffer*/
+ IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_NONE, 0, 0, 0, 1 ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+
+ IF( st_ivas->hJbmMetadata == NULL )
+ {
+ IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ IF( NE_32( ( error = ivas_jbm_dec_metadata_open( st_ivas ) ), IVAS_ERR_OK ) )
+ {
+ return error;
+ }
+ }
+ }
+
+ /*-----------------------------------------------------------------*
+ * Allocate floating-point output audio buffers
+ *-----------------------------------------------------------------*/
+ st_ivas->p_out_len = ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate );
+ move16();
+ FOR( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ )
+ {
+ /* note: these are intra-frame heap memories */
+ IF( ( st_ivas->p_output_fx[n] = (Word32 *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( Word32 ) ) ) == NULL )
+ {
+ return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) );
+ }
+ set32_fx( st_ivas->p_output_fx[n], 0, 48000 / FRAMES_PER_SEC );
+ }
+
+ FOR( ; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ )
+ {
+ st_ivas->p_output_fx[n] = NULL;
+ }
+ return error;
+}
+
+/*-------------------------------------------------------------------------
+ * destroy_core_dec()
+ *
+ * Close core decoder handles
+ *-------------------------------------------------------------------------*/
+
+void destroy_core_dec_fx(
+ DEC_CORE_HANDLE hCoreCoder /* i/o: core decoder structure */
+)
+{
+ IF( EQ_16( hCoreCoder->element_mode, EVS_MONO ) )
+ {
+ destroy_cldfb_decoder_fx( hCoreCoder );
+ }
+ ELSE
+ {
+ destroy_cldfb_decoder_ivas_fx( hCoreCoder );
+ }
+
+ IF( hCoreCoder->hGSCDec != NULL )
+ {
+ free( hCoreCoder->hGSCDec );
+ hCoreCoder->hGSCDec = NULL;
+ }
+
+ IF( hCoreCoder->hPFstat != NULL )
+ {
+ free( hCoreCoder->hPFstat );
+ hCoreCoder->hPFstat = NULL;
+ }
+
+ IF( hCoreCoder->hMusicPF != NULL )
+ {
+ free( hCoreCoder->hMusicPF );
+ hCoreCoder->hMusicPF = NULL;
+ }
+
+ IF( hCoreCoder->hBPF != NULL )
+ {
+ free( hCoreCoder->hBPF );
+ hCoreCoder->hBPF = NULL;
+ }
+
+ IF( hCoreCoder->hBWE_zero != NULL )
+ {
+ free( hCoreCoder->hBWE_zero );
+ hCoreCoder->hBWE_zero = NULL;
+ }
+
+ IF( hCoreCoder->hTdCngDec != NULL )
+ {
+ free( hCoreCoder->hTdCngDec );
+ hCoreCoder->hTdCngDec = NULL;
+ }
+
+ IF( hCoreCoder->hSC_VBR != NULL )
+ {
+ free( hCoreCoder->hSC_VBR );
+ hCoreCoder->hSC_VBR = NULL;
+ }
+
+ IF( hCoreCoder->hAmrwb_IO != NULL )
+ {
+ free( hCoreCoder->hAmrwb_IO );
+ hCoreCoder->hAmrwb_IO = NULL;
+ }
+
+ IF( hCoreCoder->hBWE_TD != NULL )
+ {
+ free( hCoreCoder->hBWE_TD );
+ hCoreCoder->hBWE_TD = NULL;
+ }
+
+ IF( hCoreCoder->hBWE_FD != NULL )
+ {
+ free( hCoreCoder->hBWE_FD );
+ hCoreCoder->hBWE_FD = NULL;
+ }
+
+ IF( hCoreCoder->hBWE_FD_HR != NULL )
+ {
+ free( hCoreCoder->hBWE_FD_HR );
+ hCoreCoder->hBWE_FD_HR = NULL;
+ }
+
+ IF( hCoreCoder->hWIDec != NULL )
+ {
+ free( hCoreCoder->hWIDec );
+ hCoreCoder->hWIDec = NULL;
+ }
+
+ IF( hCoreCoder->hTECDec != NULL )
+ {
+ free( hCoreCoder->hTECDec );
+ hCoreCoder->hTECDec = NULL;
+ }
+
+ IF( hCoreCoder->hTcxLtpDec != NULL )
+ {
+ free( hCoreCoder->hTcxLtpDec );
+ hCoreCoder->hTcxLtpDec = NULL;
+ }
+
+ IF( hCoreCoder->hTcxDec != NULL )
+ {
+ free( hCoreCoder->hTcxDec );
+ hCoreCoder->hTcxDec = NULL;
+ }
+
+ IF( hCoreCoder->hTcxCfg != NULL )
+ {
+ free( hCoreCoder->hTcxCfg );
+ hCoreCoder->hTcxCfg = NULL;
+ }
+
+ IF( hCoreCoder->hTonalMDCTConc != NULL )
+ {
+ free( hCoreCoder->hTonalMDCTConc );
+ hCoreCoder->hTonalMDCTConc = NULL;
+ }
+
+ IF( hCoreCoder->hIGFDec != NULL )
+ {
+ free( hCoreCoder->hIGFDec );
+ hCoreCoder->hIGFDec = NULL;
+ }
+
+ IF( hCoreCoder->hPlcInfo != NULL )
+ {
+ free( hCoreCoder->hPlcInfo );
+ hCoreCoder->hPlcInfo = NULL;
+ }
+
+ IF( hCoreCoder->hHQ_core != NULL )
+ {
+ free( hCoreCoder->hHQ_core );
+ hCoreCoder->hHQ_core = NULL;
+ }
+
+ IF( hCoreCoder->hHQ_nbfec != NULL )
+ {
+ free( hCoreCoder->hHQ_nbfec );
+ hCoreCoder->hHQ_nbfec = NULL;
+ }
+
+ return;
+}
+
+/*-------------------------------------------------------------------------
+ * ivas_initialize_handles_dec()
+ *
+ * NULL initialization of handles
+ *-------------------------------------------------------------------------*/
+
+void ivas_initialize_handles_dec(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+)
+{
+ Word16 i;
+
+ FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ )
+ {
+ st_ivas->cldfbAnaDec[i] = NULL;
+ }
+
+ FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ )
+ {
+ st_ivas->cldfbSynDec[i] = NULL;
+ }
+
+ /* SCE handles */
+ FOR( i = 0; i < MAX_SCE; i++ )
+ {
+ st_ivas->hSCE[i] = NULL;
+ }
+
+ /* CPE handles */
+ FOR( i = 0; i < MAX_CPE; i++ )
+ {
+ st_ivas->hCPE[i] = NULL;
+ }
+
+ st_ivas->bit_stream = NULL;
+ st_ivas->mem_hp20_out_fx = NULL;
+ st_ivas->hLimiter = NULL;
+
+ /* ISM metadata handles */
+ FOR( i = 0; i < MAX_NUM_OBJECTS; i++ )
+ {
+ st_ivas->hIsmMetaData[i] = NULL;
+ }
+
+ /* spatial coding handles */
+ st_ivas->hDirAC = NULL;
+ st_ivas->hParamIsmDec = NULL;
+ st_ivas->hSpar = NULL;
+ st_ivas->hMasa = NULL;
+ st_ivas->hQMetaData = NULL;
+ st_ivas->hMCT = NULL;
+ st_ivas->hMCParamUpmix = NULL;
+ st_ivas->hParamMC = NULL;
+ st_ivas->hLFE = NULL;
+
+ /* rendering handles */
+ st_ivas->hBinRenderer = NULL;
+ for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ )
+ {
+ st_ivas->hDiracDecBin[i] = NULL;
+ }
+ st_ivas->hDirACRend = NULL;
+ st_ivas->hSpatParamRendCom = NULL;
+ st_ivas->hLsSetUpConversion = NULL;
+ st_ivas->hEFAPdata = NULL;
+ st_ivas->hVBAPdata = NULL;
+ st_ivas->hIsmRendererData = NULL;
+ st_ivas->hBinRendererTd = NULL;
+ st_ivas->hMonoDmxRenderer = NULL;
+ st_ivas->hCrendWrapper = NULL;
+ st_ivas->hReverb = NULL;
+ st_ivas->hSetOfHRTF = NULL;
+ st_ivas->hHrtfFastConv = NULL;
+ st_ivas->hHrtfParambin = NULL;
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ st_ivas->hHrtfStatistics = NULL;
+#endif
+ st_ivas->hoa_dec_mtx = NULL;
+ st_ivas->hMasaIsmData = NULL;
+ st_ivas->hSbaIsmData = NULL;
+
+ st_ivas->hHeadTrackData = NULL;
+ st_ivas->hHrtfTD = NULL;
+ st_ivas->hLsSetupCustom = NULL;
+ st_ivas->hRenderConfig = NULL;
+ st_ivas->hExtOrientationData = NULL;
+ st_ivas->hCombinedOrientationData = NULL;
+
+ st_ivas->hSplitBinRend = NULL;
+ for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
+ {
+ st_ivas->hTdRendHandles[i] = NULL;
+ }
+ /* JBM handles */
+ st_ivas->hTcBuffer = NULL;
+ st_ivas->hJbmMetadata = NULL;
+
+ /* floating-point output audio buffers */
+ FOR( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ )
+ {
+ st_ivas->p_output_fx[i] = NULL;
+ }
+
+ return;
+}
+
+
+/*-------------------------------------------------------------------------
+ * ivas_destroy_dec()
+ *
+ * Close IVAS decoder handles
+ *-------------------------------------------------------------------------*/
+
+void ivas_destroy_dec_fx(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
+)
+{
+ Word16 i;
+
+ /* CLDFB handles */
+ FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ )
+ {
+ IF( st_ivas->cldfbAnaDec[i] != NULL )
+ {
+ deleteCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ) );
+ }
+ }
+
+ FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ )
+ {
+ IF( st_ivas->cldfbSynDec[i] != NULL )
+ {
+ deleteCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ) );
+ }
+ }
+
+ /* SCE handles */
+ FOR( i = 0; i < MAX_SCE; i++ )
+ {
+ IF( st_ivas->hSCE[i] != NULL )
+ {
+ destroy_sce_dec( st_ivas->hSCE[i] );
+ st_ivas->hSCE[i] = NULL;
+ }
+ }
+
+ /* CPE handles */
+ FOR( i = 0; i < MAX_CPE; i++ )
+ {
+ IF( st_ivas->hCPE[i] != NULL )
+ {
+ /* set pointer to NULL as core coder already deallocated in destroy_sce_dec() */
+ test();
+ IF( st_ivas->sba_dirac_stereo_flag && EQ_16( st_ivas->nchan_transport, 1 ) )
+ {
+ st_ivas->hCPE[i]->hCoreCoder[0] = NULL;
+ st_ivas->hCPE[i]->hCoreCoder[1] = NULL;
+ }
+ destroy_cpe_dec( st_ivas->hCPE[i] );
+ st_ivas->hCPE[i] = NULL;
+ }
+ }
+
+ /* HP20 filter handles */
+ IF( st_ivas->mem_hp20_out_fx != NULL )
+ {
+ FOR( i = 0; i < getNumChanSynthesis( st_ivas ); i++ )
+ {
+ free( st_ivas->mem_hp20_out_fx[i] );
+ st_ivas->mem_hp20_out_fx[i] = NULL;
+ }
+ free( st_ivas->mem_hp20_out_fx );
+ st_ivas->mem_hp20_out_fx = NULL;
+ }
+
+ /* ISM metadata handles */
+ ivas_ism_metadata_close( st_ivas->hIsmMetaData, 0 );
+
+ /* ISM renderer handle */
+ ivas_ism_renderer_close( &( st_ivas->hIsmRendererData ) );
+
+ /* DirAC handle */
+ IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
+ {
+ ivas_param_ism_dec_close_fx( &( st_ivas->hParamIsmDec ), &( st_ivas->hSpatParamRendCom ), st_ivas->hDecoderConfig->output_config );
+ }
+ ELSE
+ {
+ ivas_dirac_rend_close_fx( &( st_ivas->hDirACRend ) );
+ ivas_spat_hSpatParamRendCom_close_fx( &( st_ivas->hSpatParamRendCom ) );
+ ivas_dirac_dec_close_fx( &( st_ivas->hDirAC ) );
+ }
+
+ /* SPAR handle */
+ ivas_spar_dec_close_fx( &( st_ivas->hSpar ), st_ivas->hDecoderConfig->output_Fs, 0 );
+
+ /* HOA decoder matrix */
+ IF( st_ivas->hoa_dec_mtx != NULL )
+ {
+ free( st_ivas->hoa_dec_mtx );
+ st_ivas->hoa_dec_mtx = NULL;
+ }
+
+ /* MASA decoder structure */
+
+ ivas_masa_dec_close_fx( &( st_ivas->hMasa ) );
+ /* Qmetadata handle */
+ ivas_qmetadata_close_fx( &st_ivas->hQMetaData );
+
+ /* MCT handle */
+ ivas_mct_dec_close( &st_ivas->hMCT );
+
+ /* LFE handle */
+ ivas_lfe_dec_close_fx( &( st_ivas->hLFE ) );
+
+ /* Param-Upmix MC handle */
+ ivas_mc_paramupmix_dec_close( &( st_ivas->hMCParamUpmix ) );
+
+ /* Parametric MC handle */
+ ivas_param_mc_dec_close_fx( &st_ivas->hParamMC );
+
+ /* EFAP handle */
+ efap_free_data_fx( &st_ivas->hEFAPdata );
+
+ /* VBAP handle */
+ vbap_free_data_fx( &( st_ivas->hVBAPdata ) );
+ /* Fastconv binaural renderer handle */
+ ivas_binRenderer_close_fx( &st_ivas->hBinRenderer );
+
+ /* TD binaural renderer handles */
+ for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
+ {
+ if ( st_ivas->hTdRendHandles[i] != NULL )
+ {
+ st_ivas->hTdRendHandles[i]->HrFiltSet_p = NULL;
+ ivas_td_binaural_close_fx( &st_ivas->hTdRendHandles[i] );
+ }
+ }
+
+ /* Parametric binaural renderer handle */
+ ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin );
+
+ /* Crend handle */
+ ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses );
+
+ /* Reverb handle */
+ ivas_reverb_close( &st_ivas->hReverb );
+
+ /* LS config converter handle */
+
+ ivas_ls_setup_conversion_close_fx( &st_ivas->hLsSetUpConversion );
+ /* Custom LS configuration handle */
+ IF( st_ivas->hLsSetupCustom != NULL )
+ {
+ free( st_ivas->hLsSetupCustom );
+ st_ivas->hLsSetupCustom = NULL;
+ }
+
+ /* Mono downmix structure */
+ ivas_mono_dmx_renderer_close( &st_ivas->hMonoDmxRenderer );
+
+ /* OSBA structure */
+
+ ivas_osba_data_close_fx( &st_ivas->hSbaIsmData );
+
+ /* OMASA structure */
+ ivas_omasa_data_close_fx( &st_ivas->hMasaIsmData );
+ /* Head track data handle */
+ ivas_headTrack_close_fx( &st_ivas->hHeadTrackData );
+
+ /* External orientation data handle */
+ ivas_external_orientation_close_fx( &st_ivas->hExtOrientationData );
+
+ /* Combined orientation data handle */
+ ivas_combined_orientation_close_fx( &st_ivas->hCombinedOrientationData );
+
+ /* Time Domain binaural renderer handle */
+ IF( st_ivas->hBinRendererTd != NULL )
+ {
+ ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd );
+ }
+ ELSE IF( st_ivas->hHrtfTD != NULL )
+ {
+ BSplineModelEvalDealloc_fx( &st_ivas->hHrtfTD->ModelParams, &st_ivas->hHrtfTD->ModelEval );
+ ivas_HRTF_binary_close_fx( &st_ivas->hHrtfTD );
+ }
+
+ /* CRend binaural renderer handle */
+ ivas_HRTF_CRend_binary_close_fx( &st_ivas->hSetOfHRTF );
+
+ /* Fastconv HRTF memories */
+ ivas_binaural_hrtf_close( &st_ivas->hHrtfFastConv );
+
+ /* Fastconv HRTF filters */
+ ivas_HRTF_fastconv_binary_close_fx( &st_ivas->hHrtfFastConv );
+
+ /* Parametric binauralizer HRTF filters */
+ ivas_HRTF_parambin_binary_close_fx( &st_ivas->hHrtfParambin );
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ /* HRTF statistics */
+ ivas_HRTF_statistics_close( &st_ivas->hHrtfStatistics );
+#endif
+
+ /* Config. Renderer */
+ ivas_render_config_close( &( st_ivas->hRenderConfig ) );
+
+ /* Limiter struct */
+ ivas_limiter_close_fx( &( st_ivas->hLimiter ) );
+
+ IF( st_ivas->hDecoderConfig != NULL )
+ {
+ free( st_ivas->hDecoderConfig );
+ st_ivas->hDecoderConfig = NULL;
+ }
+
+ ivas_jbm_dec_tc_buffer_close( &st_ivas->hTcBuffer );
+
+ IF( st_ivas->hJbmMetadata != NULL )
+ {
+ free( st_ivas->hJbmMetadata );
+ st_ivas->hJbmMetadata = NULL;
+ }
+
+ /* floating-point output audio buffers */
+ FOR( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ )
+ {
+
+ IF( st_ivas->p_output_fx[i] != NULL )
+ {
+ free( st_ivas->p_output_fx[i] );
+ st_ivas->p_output_fx[i] = NULL;
+ }
+ }
+
+ /* main IVAS handle */
+ free( st_ivas );
+
+ return;
+}
+
+
+/*-------------------------------------------------------------------*
+ * ivas_init_dec_get_num_cldfb_instances()
+ *
+ * Return number of CLDFB analysis & synthesis instances
+ *-------------------------------------------------------------------*/
+
+/*! r: number of cldfb instances */
+void ivas_init_dec_get_num_cldfb_instances(
+ Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
+ Word16 *numCldfbAnalyses, /* o : number of needed CLDFB analysis instances */
+ Word16 *numCldfbSyntheses /* o : number of needed CLDFB synthesis instances */
+)
+{
+ IVAS_FORMAT ivas_format;
+ *numCldfbAnalyses = st_ivas->nchan_transport;
+ move16();
+ *numCldfbSyntheses = st_ivas->hDecoderConfig->nchan_out;
+ move16();
+
+ test();
+ IF( ( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_NONE ) ) )
+ {
+ ivas_format = SBA_FORMAT;
+ move32();
+ }
+ ELSE
+ {
+ ivas_format = st_ivas->ivas_format;
+ move32();
+ }
+
+ SWITCH( st_ivas->renderer_type )
+ {
+ case RENDERER_BINAURAL_PARAMETRIC:
+ case RENDERER_BINAURAL_PARAMETRIC_ROOM:
+ case RENDERER_STEREO_PARAMETRIC:
+ IF( EQ_16( st_ivas->nchan_transport, 1 ) )
+ {
+ *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
+ move16();
+ }
+
+ test();
+ IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) && st_ivas->hOutSetup.separateChannelEnabled )
+ {
+ *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
+ move16();
+ }
+
+ IF( EQ_32( ivas_format, SBA_ISM_FORMAT ) )
+ {
+ IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
+ {
+ *numCldfbAnalyses = add( *numCldfbAnalyses, st_ivas->nchan_ism );
+ move16();
+ }
+ }
+
+ IF( EQ_32( ivas_format, MASA_ISM_FORMAT ) )
+ {
+ test();
+ IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
+ {
+ *numCldfbAnalyses = add( *numCldfbAnalyses, st_ivas->nchan_ism );
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) )
+ {
+ *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
+ move16();
+ }
+ }
+ IF( st_ivas->hDiracDecBin[0]->useTdDecorr )
+ {
+ *numCldfbAnalyses = add( *numCldfbAnalyses, 2 );
+ move16();
+ }
+ BREAK;
+ case RENDERER_NON_DIEGETIC_DOWNMIX:
+ case RENDERER_MONO_DOWNMIX:
+ test();
+ test();
+ IF( EQ_32( ivas_format, ISM_FORMAT ) || EQ_32( ivas_format, MASA_ISM_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) )
+ {
+ /* CLDFB not used in rendering */
+ *numCldfbAnalyses = 0;
+ move16();
+ *numCldfbSyntheses = 0;
+ move16();
+ }
+ BREAK;
+ case RENDERER_DIRAC:
+ IF( EQ_32( ivas_format, SBA_FORMAT ) )
+ {
+ *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans;
+ move16();
+
+ test();
+ IF( st_ivas->hOutSetup.is_loudspeaker_setup && EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) )
+ {
+ *numCldfbSyntheses = st_ivas->hOutSetup.nchan_out_woLFE;
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) )
+ {
+ *numCldfbSyntheses = st_ivas->hSpar->hFbMixer->fb_cfg->num_out_chans;
+ move16();
+ }
+ ELSE
+ {
+ *numCldfbSyntheses = MAX_OUTPUT_CHANNELS;
+ move16();
+ }
+ }
+ IF( NE_32( ivas_format, SBA_FORMAT ) )
+ {
+ test();
+ test();
+ IF( GT_16( st_ivas->nchan_transport, 2 ) && ( st_ivas->sba_planar != 0 ) )
+ {
+ *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
+ move16();
+ }
+ ELSE IF( EQ_16( st_ivas->nchan_transport, 1 ) && EQ_32( st_ivas->hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) )
+ {
+ *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 );
+ move16();
+ }
+ }
+ BREAK;
+ case RENDERER_MC_PARAMMC:
+ IF( LE_16( st_ivas->hDecoderConfig->nchan_out, 2 ) )
+ {
+ /* CLDFB not used in rendering */
+ *numCldfbAnalyses = 0;
+ move16();
+ *numCldfbSyntheses = 0;
+ move16();
+ }
+ ELSE
+ {
+ *numCldfbSyntheses = param_mc_get_num_cldfb_syntheses_fx( st_ivas );
+ move16();
+ }
+ BREAK;
+ case RENDERER_PARAM_ISM:
+ /* Already correct with no exception */
+ BREAK;
+ case RENDERER_DISABLE:
+ /* CLDFB not used */
+ *numCldfbAnalyses = 0;
+ move16();
+ *numCldfbSyntheses = 0;
+ move16();
+ BREAK;
+ case RENDERER_MC:
+ case RENDERER_SBA_LINEAR_DEC:
+ case RENDERER_TD_PANNING:
+ case RENDERER_BINAURAL_OBJECTS_TD:
+ case RENDERER_MCMASA_MONO_STEREO:
+ case RENDERER_BINAURAL_MIXER_CONV:
+ case RENDERER_BINAURAL_MIXER_CONV_ROOM:
+ case RENDERER_BINAURAL_FASTCONV:
+ case RENDERER_BINAURAL_FASTCONV_ROOM:
+ case RENDERER_OSBA_STEREO:
+ case RENDERER_OSBA_AMBI:
+ case RENDERER_OSBA_LS:
+ test();
+ IF( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) )
+ {
+ IF( st_ivas->sba_dirac_stereo_flag != 0 )
+ {
+ *numCldfbAnalyses = 0;
+ move16();
+ *numCldfbSyntheses = 0;
+ move16();
+ }
+ ELSE
+ {
+ *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans;
+ move16();
+
+ test();
+ IF( st_ivas->hOutSetup.is_loudspeaker_setup && EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) )
+ {
+ *numCldfbSyntheses = st_ivas->hOutSetup.nchan_out_woLFE;
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) )
+ {
+ *numCldfbSyntheses = st_ivas->hSpar->hFbMixer->fb_cfg->num_out_chans;
+ move16();
+ }
+ ELSE
+ {
+ *numCldfbSyntheses = MAX_OUTPUT_CHANNELS;
+ move16();
+ }
+ test();
+ IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
+ {
+ *numCldfbAnalyses = add( st_ivas->nchan_ism, st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans );
+ move16();
+ }
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) )
+ {
+ /* do nothing for ParamMC */
+ }
+ ELSE
+ {
+ /* CLDFB not used in rendering */
+ *numCldfbAnalyses = 0;
+ move16();
+ *numCldfbSyntheses = 0;
+ move16();
+ }
+ BREAK;
+ case RENDERER_SBA_LINEAR_ENC:
+ IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) )
+ {
+ *numCldfbSyntheses = param_mc_get_num_cldfb_syntheses_fx( st_ivas );
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
+ {
+ *numCldfbSyntheses = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe );
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) )
+ {
+ *numCldfbAnalyses = st_ivas->nchan_transport;
+ move16();
+ *numCldfbSyntheses = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe );
+ move16();
+ }
+ ELSE
+ {
+ /* CLDFB not used in rendering */
+ *numCldfbAnalyses = 0;
+ move16();
+ *numCldfbSyntheses = 0;
+ move16();
+ }
+ BREAK;
+ default:
+ assert( 0 && "Renderer not handled for CLDFB reservation." );
+ }
+ test();
+ test();
+ IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) )
+ {
+ test();
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) )
+ {
+ *numCldfbAnalyses = s_max( MC_PARAMUPMIX_MAX_INPUT_CHANS, *numCldfbAnalyses );
+ move16();
+ }
+ ELSE
+ {
+ *numCldfbAnalyses = s_max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbAnalyses );
+ move16();
+ }
+ *numCldfbSyntheses = s_max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbSyntheses );
+ move16();
+ }
+
+ return;
+}
+
void ivas_init_dec_get_num_cldfb_instances_ivas_fx(
Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
Word16 *numCldfbAnalyses, /* o : number of needed CLDFB analysis instances */
@@ -60,11 +3463,7 @@ void ivas_init_dec_get_num_cldfb_instances_ivas_fx(
move16();
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0]->useTdDecorr )
-#else
- IF( st_ivas->hDiracDecBin->useTdDecorr )
-#endif
{
*numCldfbAnalyses = add( *numCldfbAnalyses, 2 );
move16();
@@ -264,3 +3663,146 @@ void ivas_init_dec_get_num_cldfb_instances_ivas_fx(
return;
}
+
+
+/*---------------------------------------------------------------------*
+ * doSanityChecks_IVAS()
+ *
+ * Sanity checks - verify if the decoder set-up parameters are
+ * not in conflict with the IVAS format
+ *---------------------------------------------------------------------*/
+
+static ivas_error doSanityChecks_IVAS(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+)
+{
+ Word32 output_Fs;
+ AUDIO_CONFIG output_config;
+
+ output_Fs = st_ivas->hDecoderConfig->output_Fs;
+ move32();
+ output_config = st_ivas->hDecoderConfig->output_config;
+ move32();
+ /*-----------------------------------------------------------------*
+ * Sanity checks
+ *-----------------------------------------------------------------*/
+
+ IF( EQ_32( output_Fs, 8000 ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "8kHz output sampling rate is not supported in IVAS." );
+ }
+
+ assert( st_ivas->ivas_format != UNDEFINED_FORMAT && "\n IVAS format undefined" );
+ assert( st_ivas->ivas_format != MONO_FORMAT && "\n Wrong IVAS format: MONO" );
+
+ /* Verify output configuration compatible with non-diegetic panning */
+ test();
+ test();
+ IF( st_ivas->hDecoderConfig->Opt_non_diegetic_pan && NE_32( st_ivas->ivas_format, MONO_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_ISM1 ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Error: Non-diegetic panning not supported in this IVAS format" );
+ }
+
+ /* Verify stereo output configuration */
+ IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) )
+ {
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ IF( NE_32( output_config, IVAS_AUDIO_CONFIG_MONO ) && NE_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_7_1 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1_2 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1_4 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_7_1_4 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Wrong output configuration specified for Stereo!" );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
+ {
+ /* Verify ISM output configuration */
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for ISM" );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
+ {
+ /* Verify SBA output coniguration */
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for SBA" );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
+ {
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for MASA!" );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) )
+ {
+ /* Verify MC output configuration */
+ test();
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for Multi-channel" );
+ }
+ }
+
+ IF( ( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && NE_32( output_Fs, 48000 ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." );
+ }
+
+ IF( st_ivas->hDecoderConfig->Opt_Headrotation )
+ {
+ test();
+ test();
+ IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED, "Wrong set-up: Head-rotation not supported in this configuration" );
+ }
+ }
+
+ IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation )
+ {
+ test();
+ test();
+ IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_EXT_ORIENTATION_NOT_SUPPORTED, "Wrong set-up: External orientation not supported in this configuration" );
+ }
+ }
+
+ IF( st_ivas->hDecoderConfig->Opt_dpid_on )
+ {
+ test();
+ IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED, "Wrong set-up: Directivity is not supported in this output configuration." );
+ }
+ }
+
+ IF( st_ivas->hDecoderConfig->Opt_aeid_on )
+ {
+ IF( NE_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED, "Wrong set-up: Acoustic environment is not supported in this output configuration." );
+ }
+ }
+
+ IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
+ {
+ test();
+ IF( NE_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for combined MASA and ISM format" );
+ }
+ }
+
+
+ return IVAS_ERR_OK;
+}
diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c
index 18c6953f282aaab2cb794776bdea986e0c5aafe9..727a0a651e3b05c6d305962dca046ae4c4b55edd 100644
--- a/lib_dec/ivas_ism_dec_fx.c
+++ b/lib_dec/ivas_ism_dec_fx.c
@@ -196,18 +196,10 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx(
ivas_param_ism_dec_close_fx( &( st_ivas->hParamIsmDec ), &( st_ivas->hSpatParamRendCom ), st_ivas->hDecoderConfig->output_config );
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
{
/* close the parametric binaural renderer */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin );
-#else
- ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin );
-#endif
/* Open the TD Binaural renderer */
test();
IF( st_ivas->hHrtfTD == NULL || st_ivas->hBinRendererTd == NULL )
@@ -218,9 +210,13 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx(
{
return error;
}
- IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
+ IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
{
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) )
+#else
IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) )
+#endif
{
return error;
}
@@ -240,23 +236,13 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx(
IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
/* close the parametric binaural renderer */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin );
-#else
- ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin );
-#endif
/* Open Crend Binaural renderer */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) )
#else
- IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
+ IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) )
#endif
st_ivas->binaural_latency_ns = st_ivas->hCrendWrapper->binaural_latency_ns;
@@ -275,11 +261,7 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx(
}
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
{
/* open the parametric binaural renderer */
IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
@@ -287,7 +269,11 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx(
return error;
}
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) )
+#else
IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
+#endif
{
return error;
}
@@ -318,17 +304,17 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx(
return error;
}
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) )
+#else
IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
+#endif
{
return error;
}
/* close the crend binaural renderer */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses );
-#else
- ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) );
-#endif
}
}
@@ -369,16 +355,6 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx(
tc_nchan_full_new = tc_nchan_tc_new;
move16();
- test();
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) )
- {
- tc_nchan_allocate_new = 2 * BINAURAL_CHANNELS;
- move16();
- tc_nchan_full_new = tc_nchan_allocate_new;
- move16();
- }
-
test();
test();
test();
@@ -478,16 +454,12 @@ ivas_error ivas_ism_dec_config_fx(
IF( st_ivas->ini_active_frame != 0 )
{
/* ISM bit-rate switching */
+ test();
+ IF( ( NE_16( st_ivas->ism_mode, last_ism_mode ) ) || ( NE_32( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) )
{
- test();
- IF( ( NE_16( st_ivas->ism_mode, last_ism_mode ) ) || ( NE_32( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) )
+ IF( NE_16( ( error = ivas_ism_bitrate_switching_dec_fx( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
{
- IF( NE_16( ( error = ivas_ism_bitrate_switching_dec_fx( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered,
- data ) ),
- IVAS_ERR_OK ) )
- {
- return error;
- }
+ return error;
}
}
}
@@ -510,9 +482,7 @@ ivas_error ivas_ism_dec_config_fx(
/* ISM mode switching */
IF( NE_32( st_ivas->ism_mode, last_ism_mode ) )
{
- IF( NE_16( ( error = ivas_ism_bitrate_switching_dec_fx( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered,
- data ) ),
- IVAS_ERR_OK ) )
+ IF( NE_16( ( error = ivas_ism_bitrate_switching_dec_fx( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_dec/ivas_ism_dtx_dec_fx.c b/lib_dec/ivas_ism_dtx_dec_fx.c
index 73ea5cd1f27289546002cddce0f3de1f71654c66..d5943a90cf19cc9744f181178dca2ae722ff154e 100644
--- a/lib_dec/ivas_ism_dtx_dec_fx.c
+++ b/lib_dec/ivas_ism_dtx_dec_fx.c
@@ -161,7 +161,7 @@ void ivas_ism_dtx_limit_noise_energy_for_near_silence_fx(
)
{
Word32 fac_fx, cng_noise_nrg_obj_fx, cng_noise_nrg_dominant_fx;
- Word16 ch, cng_noise_level_len, Q_cng_noise_nrg_dominant, Q_fac;
+ Word16 ch, cng_noise_level_len, Q_cng_noise_nrg_dominant, exp;
HANDLE_FD_CNG_COM hFdCngCom;
hFdCngCom = hSCE[sce_id_dtx]->hCoreCoder[0]->hFdCngDec->hFdCngCom;
cng_noise_level_len = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand );
@@ -193,10 +193,10 @@ void ivas_ism_dtx_limit_noise_energy_for_near_silence_fx(
Q_temp = sub( Q_temp, 1 );
temp = L_shr( temp, 1 );
}
- fac_fx = getSqrtWord32( temp ); /*Resultant Q=Q_temp/2*/
- Q_fac = shr( Q_temp, 1 );
+ exp = sub( 31, Q_temp );
+ fac_fx = Sqrt32( temp, &exp );
v_multc_fixed( hFdCngCom->cngNoiseLevel, fac_fx, hFdCngCom->cngNoiseLevel, cng_noise_level_len ); /*Resultant Q of cngNoiseLevel is Q_cngNoiseLevel for ch*/
- scale_sig32( hFdCngCom->cngNoiseLevel, cng_noise_level_len, negate( sub( 31, Q_fac ) ) ); /*Restoring Q of hFdCngCom->cngNoiseLevel to Q_cngNoiseLevel */
+ scale_sig32( hFdCngCom->cngNoiseLevel, cng_noise_level_len, exp ); /*Restoring Q of hFdCngCom->cngNoiseLevel to Q_cngNoiseLevel */
}
}
}
diff --git a/lib_dec/ivas_ism_param_dec_fx.c b/lib_dec/ivas_ism_param_dec_fx.c
index d7ec5b6e7a803ad763c0e3231dff91866beefd6f..09e3c0e6ced9f1ae5c3b4e10d3cd1a679cacc762 100644
--- a/lib_dec/ivas_ism_param_dec_fx.c
+++ b/lib_dec/ivas_ism_param_dec_fx.c
@@ -527,11 +527,7 @@ static ivas_error ivas_param_ism_rendering_init_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) )
-#else
- IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) )
-#endif
{
/* computation of proto matrix */
ivas_ism_get_proto_matrix_fx( hOutSetup, nchan_transport, hParamIsmRendering->proto_matrix_fx );
@@ -708,13 +704,8 @@ ivas_error ivas_param_ism_dec_open_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ||
EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) )
-#else
- IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ||
- EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) ) )
-#endif
{
/* Initialize efap handle */
IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), hOutSetup.ls_azimuth_fx, hOutSetup.ls_elevation_fx, hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) )
@@ -737,11 +728,7 @@ ivas_error ivas_param_ism_dec_open_fx(
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
{
IF( NE_32( ( error = ivas_dirac_allocate_parameters_fx( hSpatParamRendCom, 1 ) ), IVAS_ERR_OK ) )
{
@@ -939,7 +926,7 @@ void ivas_ism_dec_digest_tc_fx(
EQ_32( st_ivas->renderer_type, RENDERER_OSBA_STEREO ) ||
( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && st_ivas->hDecoderConfig->Opt_Headrotation == 0 ) )
{
- Word16 i, num_objects;
+ int16_t i;
Word32 azimuth_fx, elevation_fx;
/* we have a full frame interpolator, adapt it */
@@ -981,9 +968,7 @@ void ivas_ism_dec_digest_tc_fx(
}
/* also get the gains here */
- num_objects = st_ivas->nchan_transport;
- move16();
- FOR( i = 0; i < num_objects; i++ )
+ FOR( i = 0; i < st_ivas->nchan_ism; i++ )
{
Copy32( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmRendererData->prev_gains_fx[i], MAX_OUTPUT_CHANNELS );
diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c
index 7f4f32731abc0f08e8e17b5882e507c7cf88da65..370905afda9659b887cf1c52e0be448256ad5737 100644
--- a/lib_dec/ivas_ism_renderer_fx.c
+++ b/lib_dec/ivas_ism_renderer_fx.c
@@ -171,7 +171,6 @@ void ivas_ism_render_sf_fx(
Word32 gain_fx, prev_gain_fx;
Word32 tc_local_fx[MAX_NUM_OBJECTS][L_FRAME48k];
Word32 *p_tc_fx[MAX_NUM_OBJECTS];
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
Word16 ism_md_subframe_update_jbm, slots_to_render, first_sf, last_sf, subframe_idx;
Word16 n_samples_rendered_loop;
@@ -184,12 +183,16 @@ void ivas_ism_render_sf_fx(
n_samples_rendered_loop = 0;
move16();
+#ifdef DEBUGGING
+ assert( slots_to_render == 0 );
+ assert( last_sf <= st_ivas->hTcBuffer->nb_subframes );
+#endif
+
WHILE( slots_to_render > 0 )
{
slots_to_render = sub( slots_to_render, st_ivas->hTcBuffer->subframe_nbslots[last_sf] );
last_sf = add( last_sf, 1 );
}
-#endif
num_objects = st_ivas->nchan_transport;
move16();
@@ -207,7 +210,6 @@ void ivas_ism_render_sf_fx(
interp_offset = st_ivas->hTcBuffer->n_samples_rendered;
move16();
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
/* Number of subframes to delay metadata to sync with audio */
IF( st_ivas->hDecoderConfig->Opt_delay_comp )
{
@@ -217,7 +219,6 @@ void ivas_ism_render_sf_fx(
{
ism_md_subframe_update_jbm = sub( st_ivas->hTcBuffer->nb_subframes, 2 );
}
-#endif
IF( st_ivas->hDecoderConfig->Opt_tsm )
{
@@ -241,21 +242,15 @@ void ivas_ism_render_sf_fx(
}
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ )
{
int16_t n_samples_in_subframe;
n_samples_in_subframe = st_ivas->hTcBuffer->n_samples_granularity * st_ivas->hTcBuffer->subframe_nbslots[subframe_idx];
-#endif
test();
IF( st_ivas->hCombinedOrientationData && EQ_16( st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx], 1 ) )
{
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
ivas_jbm_dec_get_adapted_linear_interpolator_fx( n_samples_in_subframe, n_samples_in_subframe, st_ivas->hIsmRendererData->interpolator_fx );
-#else
- ivas_jbm_dec_get_adapted_linear_interpolator_fx( n_samples_to_render, n_samples_to_render, st_ivas->hIsmRendererData->interpolator_fx );
-#endif
interp_offset = 0;
move16();
}
@@ -266,7 +261,6 @@ void ivas_ism_render_sf_fx(
test();
IF( st_ivas->hCombinedOrientationData != NULL && EQ_16( st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx], 1 ) )
{
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
if ( GE_16( subframe_idx, ism_md_subframe_update_jbm ) )
{
rotateAziEle_fx( extract_l( L_shr( st_ivas->hIsmMetaData[i]->azimuth_fx, 22 ) ), extract_l( L_shr( st_ivas->hIsmMetaData[i]->elevation_fx, 22 ) ), &azimuth, &elevation, st_ivas->hCombinedOrientationData->Rmat_fx[st_ivas->hCombinedOrientationData->subframe_idx], st_ivas->hIntSetup.is_planar_setup );
@@ -275,9 +269,6 @@ void ivas_ism_render_sf_fx(
{
rotateAziEle_fx( extract_l( L_shr( st_ivas->hIsmMetaData[i]->last_azimuth_fx, 22 ) ), extract_l( L_shr( st_ivas->hIsmMetaData[i]->last_elevation_fx, 22 ) ), &azimuth, &elevation, st_ivas->hCombinedOrientationData->Rmat_fx[st_ivas->hCombinedOrientationData->subframe_idx], st_ivas->hIntSetup.is_planar_setup );
}
-#else
- rotateAziEle_fx( extract_l( L_shr( st_ivas->hIsmMetaData[i]->azimuth_fx, 22 ) ), extract_l( L_shr( st_ivas->hIsmMetaData[i]->elevation_fx, 22 ) ), &azimuth, &elevation, st_ivas->hCombinedOrientationData->Rmat_fx[0], st_ivas->hIntSetup.is_planar_setup );
-#endif
IF( st_ivas->hEFAPdata != NULL )
{
@@ -313,18 +304,10 @@ void ivas_ism_render_sf_fx(
{
g1_fx = &st_ivas->hIsmRendererData->interpolator_fx[interp_offset];
tc_fx = p_tc_fx[i];
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
FOR( k = 0; k < n_samples_in_subframe; k++ )
-#else
- FOR( k = 0; k < n_samples_to_render; k++ )
-#endif
{
- g2_fx = sub( 32767, *g1_fx ); // 32767 = (1.0f in Q15) - 1
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
+ g2_fx = sub( 32767, *g1_fx ); // 32767 = (1.0f in Q15) - 1
output_fx[j2][k + n_samples_rendered_loop] = L_add( output_fx[j2][k + n_samples_rendered_loop], L_shl( Mpy_32_32( L_add( Mpy_32_16_1( gain_fx, *( g1_fx++ ) ), Mpy_32_16_1( prev_gain_fx, g2_fx ) ), *( tc_fx++ ) ), 1 ) ); // Q11( (30+15+1-16) + 11 -31 +1)
-#else
- output_fx[j2][k] = L_add( output_fx[j2][k], L_shl( Mpy_32_32( L_add( Mpy_32_16_1( gain_fx, *( g1_fx++ ) ), Mpy_32_16_1( prev_gain_fx, g2_fx ) ), *( tc_fx++ ) ), 1 ) ); // Q11( (30+15+1-16) + 11 -31 +1)
-#endif
move16();
}
}
@@ -337,21 +320,20 @@ void ivas_ism_render_sf_fx(
move32();
}
}
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
p_tc_fx[i] += n_samples_in_subframe;
-#endif
}
/* update combined orientation access index */
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_in_subframe );
-#else
- ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_to_render );
-#endif
-#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX
n_samples_rendered_loop = add( n_samples_rendered_loop, n_samples_in_subframe );
+#ifdef NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO
+ /* update rendered subframe and slots info for all cases apart from a following crend call, the update will
+ then happen in the crend call*/
+ if ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) )
+#else
IF( EQ_16( st_ivas->renderer_type, RENDERER_TD_PANNING ) )
+#endif
{
st_ivas->hTcBuffer->subframes_rendered = add( st_ivas->hTcBuffer->subframes_rendered, 1 );
st_ivas->hTcBuffer->slots_rendered = add( st_ivas->hTcBuffer->slots_rendered, st_ivas->hTcBuffer->subframe_nbslots[subframe_idx] );
@@ -359,7 +341,6 @@ void ivas_ism_render_sf_fx(
tc_offset = add( tc_offset, n_samples_in_subframe );
interp_offset = add( interp_offset, n_samples_in_subframe );
}
-#endif
return;
}
@@ -641,13 +622,6 @@ void ivas_omasa_separate_object_render_jbm_fx(
FOR( obj = 0; obj < num_objects; obj++ )
{
/* Delay the signal to match CLDFB delay. Delay the whole buffer with the first rendering call of the stretched buffer. */
- IF( slots_rendered == 0 )
- {
- Word16 tcBufferSize;
-
- tcBufferSize = i_mult( hSpatParamRendCom->num_slots, hSpatParamRendCom->slot_size );
- delay_signal32_fx( input_fx[obj], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer_fx[obj], st_ivas->hMasaIsmData->delayBuffer_size );
- }
offsetSamples = 0;
move16();
diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c
index 246befb84fe64fdf9305a9df0bdfbaf99efdc401..c7863bb9850a9ab1100d3f4b26e6c26489b25501 100644
--- a/lib_dec/ivas_jbm_dec_fx.c
+++ b/lib_dec/ivas_jbm_dec_fx.c
@@ -175,23 +175,6 @@ ivas_error ivas_jbm_dec_tc_fx(
{
hp20_fx_32( p_output_fx[n], output_frame, st_ivas->mem_hp20_out_fx[n], output_Fs );
}
-
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_MC ) && EQ_16( st_ivas->hDecoderConfig->nchan_out, 1 ) )
- {
- s = Q16 - Q11;
- move16();
- s = sub( s, find_guarded_bits_fx( st_ivas->nchan_transport ) );
- FOR( i = 0; i < s_max( st_ivas->hDecoderConfig->nchan_out, st_ivas->nchan_transport ); ++i )
- {
- Scale_sig32( p_output_fx[i], output_frame, s ); // Q(11+s)
- }
- ivas_ls_setup_conversion_fx( st_ivas, st_ivas->nchan_transport, output_frame, p_output_fx, p_output_fx );
- FOR( i = 0; i < s_max( st_ivas->hDecoderConfig->nchan_out, st_ivas->nchan_transport ); ++i )
- {
- Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11
- }
- }
}
ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
{
@@ -265,11 +248,7 @@ ivas_error ivas_jbm_dec_tc_fx(
test();
IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) )
{
-#ifdef NONBE_FIX_967_ISM_MONO_DMX
ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame );
-#else
- ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame );
-#endif
Scale_sig32( p_output_fx[0], L_FRAME48k, 3 );
}
@@ -798,11 +777,7 @@ ivas_error ivas_jbm_dec_tc_fx(
move16();
IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) )
{
-#ifdef NONBE_FIX_967_ISM_MONO_DMX
ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame );
-#else
- ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame );
-#endif
output_q = 8;
move16();
@@ -1090,11 +1065,7 @@ ivas_error ivas_jbm_dec_tc_fx(
}
ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
{
-#ifdef NONBE_FIX_967_ISM_MONO_DMX
ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame );
-#else
- ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame );
-#endif
Scale_sig32( p_output_fx[0], L_FRAME48k, Q11 - Q8 ); // Q11
@@ -1652,7 +1623,6 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx(
test();
test();
/* delay the objects here for all renderers where it is needed */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF(
(
EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
@@ -1661,14 +1631,6 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx(
EQ_16( st_ivas->renderer_type, RENDERER_OSBA_LS ) ||
EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) &&
( NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) )
-#else
- IF(
- EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) ||
- EQ_16( st_ivas->renderer_type, RENDERER_OSBA_LS ) ||
- EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
-#endif
{
FOR( n = 0; n < st_ivas->nchan_ism; n++ )
{
@@ -1740,6 +1702,30 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx(
{
ivas_ism_dec_digest_tc_fx( st_ivas );
}
+
+ if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_DIRAC )
+ {
+ int16_t num_objects;
+
+ /* Delay the signal to match CLDFB delay. Delay the whole buffer. */
+ num_objects = 0;
+ IF( ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC )
+ {
+ num_objects = 1;
+ }
+ ELSE IF( EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) )
+ {
+ num_objects = st_ivas->nchan_ism;
+ }
+ FOR( n = 0; n < num_objects; n++ )
+ {
+ if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC )
+ {
+ v_multc_fixed_16( st_ivas->hTcBuffer->tc_fx[CPE_CHANNELS + n], OMASA_TDREND_MATCHING_GAIN_FX, st_ivas->hTcBuffer->tc_fx[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available );
+ }
+ delay_signal32_fx( st_ivas->hTcBuffer->tc_fx[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available, st_ivas->hMasaIsmData->delayBuffer_fx[n], st_ivas->hMasaIsmData->delayBuffer_size );
+ }
+ }
}
ELSE IF( EQ_16( st_ivas->ivas_format, MC_FORMAT ) )
{
@@ -1848,9 +1834,7 @@ ivas_error ivas_jbm_dec_render_fx(
const Word16 output_q_factor = Q11;
move16();
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 nchan_out_syn_output;
-#endif
push_wmops( "ivas_dec_render" );
/*----------------------------------------------------------------*
@@ -1877,7 +1861,7 @@ ivas_error ivas_jbm_dec_render_fx(
{
FOR( n = 0; n < st_ivas->hTcBuffer->nchan_buffer_full; n++ )
{
- p_tc_fx[n] = p_output_fx[n];
+ p_tc_fx[n] = &p_output_fx[n][st_ivas->hTcBuffer->n_samples_rendered];
}
FOR( n = 0; n < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; n++ )
@@ -1978,9 +1962,12 @@ ivas_error ivas_jbm_dec_render_fx(
}
ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) )
{
+#ifdef FIX_1009_ISM_NONDIEGETIC_PANNING
+ ivas_apply_non_diegetic_panning_fx( p_tc_fx[0], p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered );
+#else
ivas_apply_non_diegetic_panning_fx( p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered );
+#endif
}
-#ifdef FIX_955_FASTCONV_REND_IN_ISM
#ifdef DEBUGGING
ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) )
#else
@@ -1988,11 +1975,6 @@ ivas_error ivas_jbm_dec_render_fx(
#endif
{
/* Convert to Ambisonics */
-#else
- ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) )
- {
-/* Convert to Ambisonics; used also for ISM->HOA3->binaural rendering */
-#endif
FOR( i = 0; i < st_ivas->nchan_transport; i++ )
{
FOR( j = 0; j < HOA3_CHANNELS; j++ )
@@ -2024,7 +2006,6 @@ ivas_error ivas_jbm_dec_render_fx(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/* Binaural rendering */
IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) )
{
@@ -2043,16 +2024,6 @@ ivas_error ivas_jbm_dec_render_fx(
}
}
}
-#else
- /* Binaural rendering */
- IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) )
- {
- IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-#endif
ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) )
{
st_ivas->hCrendWrapper->p_io_qfactor = &st_ivas->hCrendWrapper->io_qfactor;
@@ -2072,17 +2043,10 @@ ivas_error ivas_jbm_dec_render_fx(
scale_sig32( p_output_fx[i], *nSamplesRendered, negate( sub( 11, *st_ivas->hCrendWrapper->p_io_qfactor ) ) ); // Q11
}
-#if defined SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL, NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, *nSamplesRendered, output_Fs, 0 ) ), IVAS_ERR_OK ) )
{
return error;
}
-#else
- IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL, NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, *nSamplesRendered, output_Fs ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
-#endif
FOR( i = 0; i < nchan_out; i++ )
{
@@ -2104,24 +2068,7 @@ ivas_error ivas_jbm_dec_render_fx(
}
ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
{
-#ifndef FIX_959_MASA_LINEAR_REND
- IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) )
- {
- *nSamplesRendered = s_min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal );
- move16();
- FOR( n = 0; n < nchan_remapped; n++ )
- {
- Copy32( st_ivas->hTcBuffer->tc_fx[n] + st_ivas->hTcBuffer->n_samples_rendered, p_output_fx[n], *nSamplesRendered );
- }
- IF( NE_32( ( error = ivas_sba_linear_renderer_fx( p_output_fx, *nSamplesRendered, nchan_remapped, 0, output_config, st_ivas->hOutSetup ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
- ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) )
-#else
IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) )
-#endif
{
ivas_dirac_dec_render_fx( st_ivas, nchan_remapped, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output_fx );
}
@@ -2202,7 +2149,11 @@ ivas_error ivas_jbm_dec_render_fx(
/* add already rendered SBA part */
FOR( n = 0; n < nchan_out; n++ )
{
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( p_output_fx[n], p_tc_fx[n + st_ivas->nchan_ism], p_output_fx[n], *nSamplesRendered );
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( p_output_fx[n], p_tc_fx[n + st_ivas->nchan_ism], p_output_fx[n], *nSamplesRendered, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
}
}
ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
@@ -2315,39 +2266,25 @@ ivas_error ivas_jbm_dec_render_fx(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
- if ( ( error = ivas_rend_crendProcessSubframesSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData,
- &st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs ) ) != IVAS_ERR_OK )
+ IF( ( error = ivas_rend_crendProcessSubframesSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData,
+ &st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs ) ) != IVAS_ERR_OK )
{
return error;
}
}
- else
+ ELSE
{
-#endif
-
-#if defined SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData,
&st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs, 0 ) ),
IVAS_ERR_OK ) )
{
return error;
}
-#else
- IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData,
- &st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs ) ),
- IVAS_ERR_OK ) )
- {
- return error;
- }
-#endif
ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_tc_fx, p_output_fx );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
FOR( i = 0; i < nchan_in; i++ )
{
@@ -2371,7 +2308,6 @@ ivas_error ivas_jbm_dec_render_fx(
}
ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
IF( NE_32( ( error = ivas_td_binaural_renderer_sf_splitBinaural( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) )
@@ -2381,16 +2317,13 @@ ivas_error ivas_jbm_dec_render_fx(
}
else
{
-#endif
IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) )
{
return error;
}
ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_tc_fx, p_output_fx );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
}
}
ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) )
@@ -2402,10 +2335,8 @@ ivas_error ivas_jbm_dec_render_fx(
/* Rendering */
IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) && !st_ivas->hDecoderConfig->Opt_Headrotation )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*handled in CLDFB domain already*/
IF( NE_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#endif
{
ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_output_fx, p_output_fx );
}
@@ -2615,7 +2546,6 @@ ivas_error ivas_jbm_dec_render_fx(
move16();
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
FOR( i = 0; i < st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS; i++ )
@@ -2627,7 +2557,6 @@ ivas_error ivas_jbm_dec_render_fx(
move16();
IF( st_ivas->hDecoderConfig->Opt_Limiter )
-#endif
{
IF( NE_32( st_ivas->ivas_format, MONO_FORMAT ) )
{
@@ -2637,11 +2566,7 @@ ivas_error ivas_jbm_dec_render_fx(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_syn_output_fx( p_output_fx, output_q_factor, *nSamplesRendered, nchan_out_syn_output, data );
-#else
- ivas_syn_output_fx( p_output_fx, output_q_factor, *nSamplesRendered, nchan_out, data );
-#endif
*nSamplesAvailableNext = st_ivas->hTcBuffer->n_samples_available;
move16();
@@ -2673,8 +2598,12 @@ ivas_error ivas_jbm_dec_flush_renderer_fx(
Word16 n_slots_still_available;
Word16 n_samples_to_render;
DECODER_TC_BUFFER_HANDLE hTcBuffer;
+#ifdef NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER
+ Word32 *p_output_fx[MAX_CICP_CHANNELS + MAX_NUM_OBJECTS];
+#else
Word32 output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES];
Word32 *p_output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS];
+#endif
Word16 nchan_in, nchan_out;
IF( !st_ivas->hDecoderConfig->Opt_tsm )
{
@@ -2734,10 +2663,17 @@ ivas_error ivas_jbm_dec_flush_renderer_fx(
move16();
move16();
+#ifdef NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER
+ FOR( ch_idx = 0; ch_idx < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ )
+ {
+ p_output_fx[ch_idx] = st_ivas->p_output_fx[ch_idx];
+ }
+#else
FOR( ch_idx = 0; ch_idx < MAX_CICP_CHANNELS; ch_idx++ )
{
p_output_fx[ch_idx] = output_fx[ch_idx];
}
+#endif
test();
IF( EQ_16( st_ivas->ivas_format, ISM_FORMAT ) )
@@ -2758,26 +2694,18 @@ ivas_error ivas_jbm_dec_flush_renderer_fx(
/* Convert to CICPxx; used also for ISM->CICP19->binaural_room rendering */
set16_fx( st_ivas->hIsmRendererData->interpolator_fx, 32767, hTcBuffer->n_samples_granularity ); // 32767=1.0f in Q15
- ivas_ism_render_sf_fx( st_ivas, p_output_fx, *nSamplesRendered );
+ ivas_ism_render_sf_fx( st_ivas, p_output_fx, hTcBuffer->n_samples_granularity );
st_ivas->hCrendWrapper->p_io_qfactor = &st_ivas->hCrendWrapper->io_qfactor;
*st_ivas->hCrendWrapper->p_io_qfactor = 11;
+
move16();
-#if defined SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL,
NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs, 0 ) ),
IVAS_ERR_OK ) )
{
return error;
}
-#else
- IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL,
- NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs ) ),
- IVAS_ERR_OK ) )
- {
- return error;
- }
-#endif
}
}
ELSE
@@ -2805,25 +2733,16 @@ ivas_error ivas_jbm_dec_flush_renderer_fx(
*st_ivas->hCrendWrapper->p_io_qfactor = 11;
move16();
-#if defined SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, intern_config_old, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData,
hIntSetupOld, st_ivas->hEFAPdata, st_ivas->hTcBuffer, hTcBuffer->tc_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs, 0 ) ),
IVAS_ERR_OK ) )
{
return error;
}
-#else
- IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, intern_config_old, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData,
- hIntSetupOld, st_ivas->hEFAPdata, st_ivas->hTcBuffer, hTcBuffer->tc_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs ) ),
- IVAS_ERR_OK ) )
- {
- return error;
- }
-#endif
ivas_binaural_add_LFE_fx( st_ivas, hTcBuffer->n_samples_granularity, st_ivas->hTcBuffer->tc_fx, p_output_fx );
}
- ELSE IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) )
+ ELSE IF( EQ_16( renderer_type_old, RENDERER_BINAURAL_OBJECTS_TD ) )
{
IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, hTcBuffer->n_samples_granularity ) ), IVAS_ERR_OK ) )
{
@@ -2831,6 +2750,10 @@ ivas_error ivas_jbm_dec_flush_renderer_fx(
}
ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, st_ivas->hTcBuffer->tc_fx, p_output_fx );
}
+ ELSE
+ {
+ return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Wrong renderer in MCT VoIP renderer flushing!" );
+ }
}
ELSE
{
@@ -2933,18 +2856,22 @@ ivas_error ivas_jbm_dec_flush_renderer_fx(
*nSamplesRendered = n_samples_to_render;
move16();
/* Only write out the valid data*/
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDecoderConfig->Opt_Limiter )
-#endif
{
IF( NE_16( st_ivas->ivas_format, MONO_FORMAT ) )
{
#ifndef DISABLE_LIMITER
Word16 ch_idx, exp = 11;
move16();
+#ifdef NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER
+ FOR( ch_idx = 0; ch_idx < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ )
+ {
+ p_output_fx[ch_idx] = st_ivas->p_output_fx[ch_idx];
+#else
FOR( ch_idx = 0; ch_idx < MAX_CICP_CHANNELS; ch_idx++ )
{
p_output_fx[ch_idx] = output_fx[ch_idx];
+#endif
}
ivas_limiter_dec_fx( st_ivas->hLimiter, p_output_fx, st_ivas->hDecoderConfig->nchan_out, *nSamplesRendered, st_ivas->BER_detect, exp );
#endif
diff --git a/lib_dec/ivas_masa_dec_fx.c b/lib_dec/ivas_masa_dec_fx.c
index 23653c53b91395bc70c561e636fd1506971bb40a..8bf808ed6cfe3ec1868b6337956f0ac07b94e826 100644
--- a/lib_dec/ivas_masa_dec_fx.c
+++ b/lib_dec/ivas_masa_dec_fx.c
@@ -166,6 +166,16 @@ ivas_error ivas_masa_decode_fx(
}
move16();
+#ifdef NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS
+ test();
+ test();
+ IF( EQ_32( ivas_format, MASA_FORMAT ) && ( EQ_32( masa_brate, IVAS_SID_5k2 ) || EQ_32( ivas_total_brate, FRAME_NO_DATA ) ) )
+ {
+ hMasa->config.numberOfDirections = 1;
+ move16();
+ }
+#endif
+
test();
test();
test();
@@ -1579,9 +1589,7 @@ ivas_error ivas_masa_dec_reconfigure_fx(
Word16 numCldfbAnalyses_old, numCldfbSyntheses_old;
ivas_error error;
Word32 ism_total_brate;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 pos_idx;
-#endif
error = IVAS_ERR_OK;
move16();
@@ -1612,13 +1620,8 @@ ivas_error ivas_masa_dec_reconfigure_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend == NULL ) ||
( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin[0] == NULL ) )
-#else
- IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend == NULL ) ||
- ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin == NULL ) )
-#endif
{
/* init a new DirAC dec */
if ( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK )
@@ -1631,11 +1634,7 @@ ivas_error ivas_masa_dec_reconfigure_fx(
IF( st_ivas->hDirAC != NULL )
{
/* close all unnecessary parametric decoding and rendering */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin );
-#else
- ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin );
-#endif
ivas_dirac_rend_close_fx( &( st_ivas->hDirACRend ) );
ivas_spat_hSpatParamRendCom_close_fx( &( st_ivas->hSpatParamRendCom ) );
ivas_dirac_dec_close_fx( &( st_ivas->hDirAC ) );
@@ -1686,11 +1685,7 @@ ivas_error ivas_masa_dec_reconfigure_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin[0] != NULL )
-#else
- IF( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin != NULL )
-#endif
{
if ( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ), IVAS_ERR_OK ) )
{
@@ -1746,11 +1741,7 @@ ivas_error ivas_masa_dec_reconfigure_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend != NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin[0] != NULL ) )
-#else
- IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend != NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin != NULL ) )
-#endif
{
if ( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ), IVAS_ERR_OK ) )
{
@@ -1768,11 +1759,7 @@ ivas_error ivas_masa_dec_reconfigure_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend != NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin[0] != NULL ) )
-#else
- IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend != NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin != NULL ) )
-#endif
{
if ( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ) != IVAS_ERR_OK )
{
@@ -1782,7 +1769,6 @@ ivas_error ivas_masa_dec_reconfigure_fx(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ )
{
IF( st_ivas->hDiracDecBin[pos_idx] != NULL )
@@ -1792,14 +1778,6 @@ ivas_error ivas_masa_dec_reconfigure_fx(
move16();
}
}
-#else
- IF( st_ivas->hDiracDecBin != NULL )
- {
- /* regularization factor is bitrate-dependent */
- st_ivas->hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate );
- move16();
- }
-#endif
test();
IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && EQ_32( st_ivas->last_ivas_format, MASA_FORMAT ) ) /* note: switching within OMASA is handled in ivas_omasa_dec_config() */
@@ -1807,17 +1785,9 @@ ivas_error ivas_masa_dec_reconfigure_fx(
/*-----------------------------------------------------------------*
* TD Decorrelator
*-----------------------------------------------------------------*/
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0] != NULL )
-#else
- IF( st_ivas->hDiracDecBin != NULL )
-#endif
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin[0]->hTdDecorr ), &( st_ivas->hDiracDecBin[0]->useTdDecorr ) ) ), IVAS_ERR_OK ) )
-#else
- IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) )
-#endif
{
return error;
}
@@ -2054,11 +2024,7 @@ void ivas_spar_param_to_masa_param_mapping_fx(
move16();
hSpatParamRendCom->numSimultaneousDirections = 1;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hDiffuseDist = st_ivas->hDiracDecBin[0]->hDiffuseDist;
-#else
- hDiffuseDist = st_ivas->hDiracDecBin->hDiffuseDist;
-#endif
nchan_transport = st_ivas->nchan_transport;
move16();
band_grouping = hDirAC->band_grouping;
@@ -2620,13 +2586,9 @@ static void create_masa_ext_out_meta_fx(
{
FOR( b_new = bandMap[b_old]; b_new < bandMap[b_old + 1]; b_new++ )
{
- IF( EQ_32( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], ONE_IN_Q30 ) )
- {
- hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf]--;
- }
- UWord8 tmp = (UWord8) L_shr( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], Q30 - 8 ); // Q8
+ UWord8 tmp = (UWord8) W_extract_h( W_mult_32_16( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], UINT8_MAX << 1 ) ); // Q0
move16();
- extOutMeta->directToTotalRatio[dir][sf][b_new] = tmp; // Q8
+ extOutMeta->directToTotalRatio[dir][sf][b_new] = tmp; // Q0
move16();
}
}
@@ -2685,12 +2647,8 @@ static void create_masa_ext_out_meta_fx(
move16();
FOR( dir = 0; dir < numDirections; dir++ )
{
- /* todo: not optimal, but less invasive */
- IF( EQ_32( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], ONE_IN_Q30 ) )
- {
- hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf]--;
- }
- UWord8 tmp = (UWord8) L_shr( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], Q30 - 8 ); // Q8
+
+ UWord8 tmp = (UWord8) W_extract_h( W_mult_32_16( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], UINT8_MAX << 1 ) ); // Q0
move16();
extOutMeta->diffuseToTotalRatio[sf][b_new] = (UWord8) sub( extOutMeta->diffuseToTotalRatio[sf][b_new], tmp ); // Q8
move16();
diff --git a/lib_dec/ivas_mc_param_dec_fx.c b/lib_dec/ivas_mc_param_dec_fx.c
index b5962311337b000a9acb56faddd40ba4853fdaa2..1ee6d6cede436d386749f86de10f924c6b62ab3f 100644
--- a/lib_dec/ivas_mc_param_dec_fx.c
+++ b/lib_dec/ivas_mc_param_dec_fx.c
@@ -1849,13 +1849,8 @@ void ivas_param_mc_dec_render_fx(
/*CLDFB*/
Word32 Cldfb_RealBuffer_fx[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
Word32 Cldfb_ImagBuffer_fx[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word32 Cldfb_RealBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
Word32 Cldfb_ImagBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
-#else
- Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
- Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
-#endif
Word32 *p_output_f_fx[MAX_OUTPUT_CHANNELS];
FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ )
{
@@ -2089,8 +2084,13 @@ void ivas_param_mc_dec_render_fx(
{
IF( hLsSetup.index_lfe[idx_lfe] != ch )
{
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( Cldfb_RealBuffer_fx[ch][slot_idx], Cldfb_RealBuffer_fx[hLsSetup.index_lfe[idx_lfe]][slot_idx], Cldfb_RealBuffer_fx[ch][slot_idx], 1 );
+ v_add_fixed_no_hdrm( Cldfb_ImagBuffer_fx[ch][slot_idx], Cldfb_ImagBuffer_fx[hLsSetup.index_lfe[idx_lfe]][slot_idx], Cldfb_ImagBuffer_fx[ch][slot_idx], 1 );
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( Cldfb_RealBuffer_fx[ch][slot_idx], Cldfb_RealBuffer_fx[hLsSetup.index_lfe[idx_lfe]][slot_idx], Cldfb_RealBuffer_fx[ch][slot_idx], 1, 0 );
v_add_fixed( Cldfb_ImagBuffer_fx[ch][slot_idx], Cldfb_ImagBuffer_fx[hLsSetup.index_lfe[idx_lfe]][slot_idx], Cldfb_ImagBuffer_fx[ch][slot_idx], 1, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
}
}
}
@@ -2132,7 +2132,6 @@ void ivas_param_mc_dec_render_fx(
Word16 input_q = 6;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
IF( st_ivas->hSplitBinRend->hCldfbDataOut != NULL )
@@ -2149,13 +2148,10 @@ void ivas_param_mc_dec_render_fx(
move16();
}
}
-#endif
/* Implement binaural rendering */
ivas_binRenderer_fx( st_ivas->hBinRenderer,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData,
-#endif
st_ivas->hCombinedOrientationData,
hParamMC->subframe_nbslots[subframe_idx],
Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx,
@@ -2174,7 +2170,6 @@ void ivas_param_mc_dec_render_fx(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
int16_t pos_idx;
FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ )
{
@@ -2187,18 +2182,7 @@ void ivas_param_mc_dec_render_fx(
}
}
}
-#else
- FOR( Word16 idx1 = 0; idx1 < BINAURAL_CHANNELS; idx1++ )
- {
- FOR( Word16 idx2 = 0; idx2 < hParamMC->subframe_nbslots[subframe_idx]; idx2++ )
- {
- Scale_sig32( Cldfb_RealBuffer_Binaural_fx[idx1][idx2], CLDFB_NO_CHANNELS_MAX, sub( Q6, input_q ) ); // Q6
- Scale_sig32( Cldfb_ImagBuffer_Binaural_fx[idx1][idx2], CLDFB_NO_CHANNELS_MAX, sub( Q6, input_q ) ); // Q6
- }
- }
-#endif
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ )
@@ -2213,7 +2197,6 @@ void ivas_param_mc_dec_render_fx(
}
}
}
-#endif
/* update combined orientation access index */
ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, hParamMC->num_freq_bands * hParamMC->subframe_nbslots[subframe_idx] );
}
@@ -2237,13 +2220,8 @@ void ivas_param_mc_dec_render_fx(
{
IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[0][ch][i]; // Q6
ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[0][ch][i]; // Q6
-#else
- RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[ch][i]; // Q6
- ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[ch][i]; // Q6
-#endif
}
ELSE
{
diff --git a/lib_dec/ivas_mc_paramupmix_dec_fx.c b/lib_dec/ivas_mc_paramupmix_dec_fx.c
index 0cb6a579619c91a00e98f97c6f536e7876499498..89a86d21a72b6892718736a8817753ae776a2f26 100644
--- a/lib_dec/ivas_mc_paramupmix_dec_fx.c
+++ b/lib_dec/ivas_mc_paramupmix_dec_fx.c
@@ -119,13 +119,11 @@ void ivas_mc_paramupmix_dec_read_BS(
}
}
-#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS
FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ )
{
Copy32( hMCParamUpmix->alpha_prev_fx[i], hMCParamUpmix->alpha_sf_fx[i], IVAS_MAX_NUM_BANDS );
Copy32( hMCParamUpmix->beta_prev_fx[i], hMCParamUpmix->beta_sf_fx[i], IVAS_MAX_NUM_BANDS );
}
-#endif
hMCParamUpmix->first_frame = 1;
move16();
@@ -155,7 +153,6 @@ void ivas_mc_paramupmix_dec_read_BS(
move32();
-#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS
IF( EQ_16( hMCParamUpmix->first_frame, 0 ) )
{
FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ )
@@ -164,7 +161,6 @@ void ivas_mc_paramupmix_dec_read_BS(
Copy32( hMCParamUpmix->betas_fx[i], hMCParamUpmix->beta_prev_fx[i], IVAS_MAX_NUM_BANDS );
}
}
-#endif
FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ )
{
@@ -189,13 +185,11 @@ void ivas_mc_paramupmix_dec_read_BS(
move16();
}
-#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS
FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ )
{
Copy32( hMCParamUpmix->alpha_prev_fx[i], hMCParamUpmix->alpha_sf_fx[i], IVAS_MAX_NUM_BANDS );
Copy32( hMCParamUpmix->beta_prev_fx[i], hMCParamUpmix->beta_sf_fx[i], IVAS_MAX_NUM_BANDS );
}
-#endif
}
pop_wmops();
@@ -286,13 +280,6 @@ void ivas_mc_paramupmix_dec_render(
}
{
-#ifndef NONBE_FIX_952_MC_PARAMUPMIX_5MS
- FOR( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ )
- {
- Copy32( hMCParamUpmix->alpha_prev_fx[ch], hMCParamUpmix->alpha_sf_fx[ch], IVAS_MAX_NUM_BANDS );
- Copy32( hMCParamUpmix->beta_prev_fx[ch], hMCParamUpmix->beta_sf_fx[ch], IVAS_MAX_NUM_BANDS );
- }
-#endif
FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ )
{
@@ -309,14 +296,6 @@ void ivas_mc_paramupmix_dec_render(
/* update combined orientation access index */
ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_sf );
}
-
-#ifndef NONBE_FIX_952_MC_PARAMUPMIX_5MS
- FOR( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ )
- {
- Copy32( hMCParamUpmix->alphas_fx[ch], hMCParamUpmix->alpha_prev_fx[ch], IVAS_MAX_NUM_BANDS );
- Copy32( hMCParamUpmix->betas_fx[ch], hMCParamUpmix->beta_prev_fx[ch], IVAS_MAX_NUM_BANDS );
- }
-#endif
}
*nSamplesAvailable = imult1616( sub( st_ivas->hTcBuffer->num_slots, st_ivas->hTcBuffer->slots_rendered ), (Word16) slot_size );
@@ -753,22 +732,15 @@ static void ivas_mc_paramupmix_dec_sf(
Word32 Cldfb_RealBuffer_subfr_fx[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 };
Word32 Cldfb_ImagBuffer_subfr_fx[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 };
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word32 Cldfb_RealBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
Word32 Cldfb_ImagBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
int16_t slot_index_start;
-#else
- Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
- Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
-#endif
hMCParamUpmix = st_ivas->hMCParamUpmix;
assert( hMCParamUpmix );
push_wmops( "ivas_mc_paramupmix_dec_sf" );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
slot_index_start = st_ivas->hTcBuffer->slots_rendered;
-#endif
FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ )
{
@@ -885,7 +857,6 @@ static void ivas_mc_paramupmix_dec_sf(
Word16 input_q = 6;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*LFE handling for split rendering cases*/
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
@@ -904,20 +875,16 @@ static void ivas_mc_paramupmix_dec_sf(
move16();
}
}
-#endif
/* Implement binaural rendering */
ivas_binRenderer_fx( st_ivas->hBinRenderer,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData,
-#endif
st_ivas->hCombinedOrientationData,
st_ivas->hTcBuffer->subframe_nbslots[subframeIdx],
Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx,
Cldfb_RealBuffer_subfr_fx,
Cldfb_ImagBuffer_subfr_fx, &input_q );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
int16_t pos_idx;
FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ )
{
@@ -930,18 +897,7 @@ static void ivas_mc_paramupmix_dec_sf(
}
}
}
-#else
- FOR( Word16 idx1 = 0; idx1 < BINAURAL_CHANNELS; idx1++ )
- {
- FOR( Word16 idx2 = 0; idx2 < MAX_PARAM_SPATIAL_SUBFRAMES; idx2++ )
- {
- Scale_sig32( Cldfb_RealBuffer_Binaural_fx[idx1][idx2], CLDFB_NO_CHANNELS_MAX, sub( 6, input_q ) ); // Q6
- Scale_sig32( Cldfb_ImagBuffer_Binaural_fx[idx1][idx2], CLDFB_NO_CHANNELS_MAX, sub( 6, input_q ) ); // Q6
- }
- }
-#endif
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ )
@@ -956,7 +912,6 @@ static void ivas_mc_paramupmix_dec_sf(
}
}
}
-#endif
/* Implement CLDFB synthesis */
FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
@@ -966,13 +921,8 @@ static void ivas_mc_paramupmix_dec_sf(
FOR( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[subframeIdx]; slot_idx++ )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[0][ch][slot_idx]; // Q6
ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[0][ch][slot_idx]; // Q6
-#else
- RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[ch][slot_idx]; // Q6
- ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[ch][slot_idx]; // Q6
-#endif
}
#ifndef OPT_AVOID_STATE_BUF_RESCALE
scale_sig32( st_ivas->cldfbSynDec[ch]->cldfb_state_fx, st_ivas->cldfbSynDec[ch]->cldfb_size, Q5 - Q11 ); // Q11 -> Q5
diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c
index db9cddc39b60321ed51c9394b12e19a518e38286..ed43b99916d0840ed402ad3d5e58c7041bf682b5 100644
--- a/lib_dec/ivas_mct_dec_fx.c
+++ b/lib_dec/ivas_mct_dec_fx.c
@@ -398,7 +398,7 @@ ivas_error ivas_mct_dec_fx(
test();
IF( ( st_ivas->sba_dirac_stereo_flag != 0 ) && ( NE_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) || GE_16( cpe_id, sub( nCPE, 2 ) ) ) )
{
- Copy_Scale_sig_16_32_no_sat( synth_fx[n], synth_fx_32[n], L_FRAME48k, sub( Q11, ( sub( 15, e_sig[n] ) ) ) ); // Q11
+ Copy_Scale_sig_16_32_no_sat( synth_fx[n], synth_fx_32[n], output_frame, sub( Q11, ( sub( 15, e_sig[n] ) ) ) ); // Q11
Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[n]->hHQ_core->old_out_fx, hCPE->hCoreCoder[n]->hHQ_core->old_out_fx32, output_frame, sub( Q11, hCPE->hCoreCoder[n]->hHQ_core->Q_old_wtda ) );
ivas_post_proc_fx( NULL, hCPE, n, synth_fx_32[n], NULL, output_frame, 1, Q11 );
Copy_Scale_sig_32_16( synth_fx_32[n], synth_fx[n], output_frame, sub( sub( 15, e_sig[n] ), Q11 ) ); // Q0
@@ -1022,30 +1022,34 @@ static ivas_error ivas_mc_dec_reconfig_fx(
ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->intern_config );
/* transfer subframe info from DirAC or ParamMC to central tc buffer */
- test();
- IF( EQ_16( last_mc_mode, MC_MODE_PARAMMC ) )
- {
- st_ivas->hTcBuffer->nb_subframes = st_ivas->hParamMC->nb_subframes;
- move16();
- st_ivas->hTcBuffer->subframes_rendered = st_ivas->hParamMC->subframes_rendered;
- move16();
- st_ivas->hTcBuffer->num_slots = st_ivas->hParamMC->num_slots;
- move16();
- st_ivas->hTcBuffer->slots_rendered = st_ivas->hParamMC->slots_rendered;
- move16();
- Copy( st_ivas->hParamMC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS );
- }
- ELSE IF( EQ_16( last_mc_mode, MC_MODE_MCMASA ) && st_ivas->hSpatParamRendCom != NULL )
+
+ if ( st_ivas->hTcBuffer->tc_buffer_mode != TC_BUFFER_MODE_BUFFER )
{
- st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes;
- move16();
- st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered;
- move16();
- st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots;
- move16();
- st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered;
- move16();
- Copy( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS );
+ test();
+ IF( EQ_16( last_mc_mode, MC_MODE_PARAMMC ) )
+ {
+ st_ivas->hTcBuffer->nb_subframes = st_ivas->hParamMC->nb_subframes;
+ move16();
+ st_ivas->hTcBuffer->subframes_rendered = st_ivas->hParamMC->subframes_rendered;
+ move16();
+ st_ivas->hTcBuffer->num_slots = st_ivas->hParamMC->num_slots;
+ move16();
+ st_ivas->hTcBuffer->slots_rendered = st_ivas->hParamMC->slots_rendered;
+ move16();
+ Copy( st_ivas->hParamMC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS );
+ }
+ ELSE IF( EQ_16( last_mc_mode, MC_MODE_MCMASA ) && st_ivas->hSpatParamRendCom != NULL )
+ {
+ st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes;
+ move16();
+ st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered;
+ move16();
+ st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots;
+ move16();
+ st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered;
+ move16();
+ Copy( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS );
+ }
}
/* JBM: when granularity goes down (e.g. MCT with CREND -> ParamMC with binaural fastconv
@@ -1466,11 +1470,7 @@ static ivas_error ivas_mc_dec_reconfig_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
{
/* remove unneeded binaural renderers */
test();
@@ -1485,17 +1485,9 @@ static ivas_error ivas_mc_dec_reconfig_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hCrend[0] != NULL ) && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) && NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) || NE_16( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) )
-#else
- IF( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hCrend != NULL ) && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) && NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) || NE_16( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) )
-#endif
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses );
-#else
- ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) );
-#endif
}
test();
@@ -1508,21 +1500,13 @@ static ivas_error ivas_mc_dec_reconfig_fx(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0] != NULL )
-#else
- IF( st_ivas->hDiracDecBin != NULL )
-#endif
{
test();
test();
IF( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) && NE_16( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin );
-#else
- ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin );
-#endif
}
}
@@ -1547,38 +1531,25 @@ static ivas_error ivas_mc_dec_reconfig_fx(
}
IF( EQ_16( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( error = ivas_rend_initCrendWrapper( &st_ivas->hCrendWrapper, 1 ) ) != IVAS_ERR_OK )
-#else
- IF( ( error = ivas_rend_initCrendWrapper( &st_ivas->hCrendWrapper ) ) != IVAS_ERR_OK )
-#endif
{
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend Wrapper\n" );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
st_ivas->hCrendWrapper->hCrend[0] = NULL;
st_ivas->hCrendWrapper->hHrtfCrend = NULL;
IF( ( st_ivas->hCrendWrapper->hCrend[0] = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL )
{
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend\n" );
}
-#else
- st_ivas->hCrendWrapper->hCrend = NULL;
- st_ivas->hCrendWrapper->hHrtfCrend = NULL;
- IF( ( st_ivas->hCrendWrapper->hCrend = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL )
- {
- return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend\n" );
- }
-#endif
}
}
ELSE IF( st_ivas->hCrendWrapper == NULL && ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK )
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK )
#else
- IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK )
+ IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK )
#endif
{
return error;
diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c
index 1d24e0153383188ef0d0af15524a5cefeaee13b0..4f04c4dd8da59f05cda720a60dc07a1fb8591bcc 100644
--- a/lib_dec/ivas_mono_dmx_renderer_fx.c
+++ b/lib_dec/ivas_mono_dmx_renderer_fx.c
@@ -45,13 +45,8 @@
/*-------------------------------------------------------------------------
* Local constants
*------------------------------------------------------------------------*/
-#define DOWNMIX_ALPHA_FX 31130 /* Smoothing coefficient alpha */
-#ifdef NONBE_FIX_967_ISM_MONO_DMX
-#define DOWNMIX_ONE_MINUS_ALPHA_FX 1638 /* Smoothing coefficient (1 - alpha) */
-#endif
-#ifndef NONBE_FIX_967_ISM_MONO_DMX
-#define MONO_DOWNMIX_RENDERER_MAX_INPUT_CHANS 4
-#endif
+#define DOWNMIX_ALPHA_FX 31130 /* Smoothing coefficient alpha */
+#define DOWNMIX_ONE_MINUS_ALPHA_FX 1638 /* Smoothing coefficient (1 - alpha) */
/*-------------------------------------------------------------------------
* ivas_mono_dmx_renderer_open()
@@ -111,11 +106,7 @@ void ivas_mono_dmx_renderer_close(
*
* Downmix process
*------------------------------------------------------------------------*/
-#ifdef NONBE_FIX_967_ISM_MONO_DMX
void ivas_ism_mono_dmx_fx(
-#else
-void ivas_mono_downmix_render_passive_fx(
-#endif
Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
Word32 *output_f_fx[], /* i/o: synthesized core-coder transport channels/mono output Qin = 11/ Qout = 8*/
const Word16 output_frame /* i : output frame length */
@@ -170,13 +161,6 @@ void ivas_mono_downmix_render_passive_fx(
v_add_32( output_shr, proto_signal_fx, proto_signal_fx, output_frame );
}
-#ifndef NONBE_FIX_967_ISM_MONO_DMX
- /* compute the input energy, proto energy after smoothing */
- hDownmix->inputEnergy_fx = Mpy_32_16_1( hDownmix->inputEnergy_fx, DOWNMIX_ALPHA_FX );
- move32();
- hDownmix->protoEnergy_fx = Mpy_32_16_1( hDownmix->protoEnergy_fx, DOWNMIX_ALPHA_FX );
- move32();
-#endif
proto_norm = L_norm_arr( proto_signal_fx, output_frame );
@@ -197,7 +181,6 @@ void ivas_mono_downmix_render_passive_fx(
}
}
-#ifdef NONBE_FIX_967_ISM_MONO_DMX
hDownmix->inputEnergy_fx = Mpy_32_16_1( hDownmix->inputEnergy_fx, DOWNMIX_ALPHA_FX );
move32();
hDownmix->protoEnergy_fx = Mpy_32_16_1( hDownmix->protoEnergy_fx, DOWNMIX_ALPHA_FX );
@@ -205,7 +188,6 @@ void ivas_mono_downmix_render_passive_fx(
protoEner_pre = Mpy_32_16_1( protoEner_pre, DOWNMIX_ONE_MINUS_ALPHA_FX );
inputEner_pre = Mpy_32_16_1( inputEner_pre, DOWNMIX_ONE_MINUS_ALPHA_FX );
-#endif
/* compute the eq factor */
@@ -336,7 +318,10 @@ void ivas_mono_stereo_downmix_mcmasa_fx(
*------------------------------------------------------------------------*/
void ivas_apply_non_diegetic_panning_fx(
- Word32 *output_f_fx[], /* i/o: core-coder transport mono channel/stereo output */
+#ifdef FIX_1009_ISM_NONDIEGETIC_PANNING
+ Word32 *input_f_fx, /* i : non-diegetic object */
+#endif
+ Word32 *output_f_fx[], /* o: core-coder transport mono channel/stereo output */
const Word16 non_diegetic_pan_gain_fx, /* i : non-diegetic panning gain Q15*/
const Word16 output_frame /* i : output frame length per channel Q11*/
)
@@ -346,8 +331,13 @@ void ivas_apply_non_diegetic_panning_fx(
pan_left_fx = add( mult( non_diegetic_pan_gain_fx, 16384 ), 16384 ); // 0.5.Q15 = 16384
pan_right_fx = sub( 32767, pan_left_fx );
+#ifdef FIX_1009_ISM_NONDIEGETIC_PANNING
+ v_multc_fixed( input_f_fx, L_shl( L_deposit_l( pan_right_fx ), 16 ), output_f_fx[1], output_frame );
+ v_multc_fixed( input_f_fx, L_shl( L_deposit_l( pan_left_fx ), 16 ), output_f_fx[0], output_frame );
+#else
v_multc_fixed( output_f_fx[0], L_shl( L_deposit_l( pan_right_fx ), 16 ), output_f_fx[1], output_frame );
v_multc_fixed( output_f_fx[0], L_shl( L_deposit_l( pan_left_fx ), 16 ), output_f_fx[0], output_frame );
+#endif
return;
}
diff --git a/lib_dec/ivas_objectRenderer_internal_fx.c b/lib_dec/ivas_objectRenderer_internal_fx.c
index 71b16a6c6f6b9c59b7a8e00ee6247e8889688d97..08bf0f437ec7d1abf36ef64e9f968cbaf66c21ca 100644
--- a/lib_dec/ivas_objectRenderer_internal_fx.c
+++ b/lib_dec/ivas_objectRenderer_internal_fx.c
@@ -227,17 +227,13 @@ ivas_error ivas_td_binaural_renderer_sf_fx(
move16();
}
- IF( NE_32( ( error = TDREND_Update_listener_orientation_fx( st_ivas->hBinRendererTd,
- enableCombinedOrientation,
- tmp_Quaternion_fx,
- tmp_vector_fx ) ),
- IVAS_ERR_OK ) )
+ IF( NE_32( ( error = TDREND_Update_listener_orientation_fx( st_ivas->hBinRendererTd, enableCombinedOrientation, tmp_Quaternion_fx, tmp_vector_fx ) ), IVAS_ERR_OK ) )
{
return error;
}
test();
- IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
+ IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
{
FOR( i = 0; i < nchan_ism_internal; ++i )
{
@@ -269,7 +265,7 @@ ivas_error ivas_td_binaural_renderer_sf_fx(
}
test();
- IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
+ IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
{
/* add reverb to rendered signals */
v_add_32( reverb_signal_fx[0], output_fx_local[0], output_fx_local[0], output_frame ); // Q11
@@ -296,7 +292,6 @@ ivas_error ivas_td_binaural_renderer_sf_fx(
return IVAS_ERR_OK;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*---------------------------------------------------------------------*
* ivas_td_binaural_renderer_sf_splitBinaural()
*
@@ -450,4 +445,3 @@ ivas_error ivas_td_binaural_renderer_sf_splitBinaural(
return IVAS_ERR_OK;
}
-#endif
diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c
index 2e7d5e47b54055e1d71515e3a2b4b0b8590a42ea..35f4f1c4b9841352f3f2aad314e047ab8b82ed71 100644
--- a/lib_dec/ivas_omasa_dec_fx.c
+++ b/lib_dec/ivas_omasa_dec_fx.c
@@ -45,7 +45,6 @@
* Local constants
*------------------------------------------------------------------------*/
-#define OMASA_TDREND_MATCHING_GAIN_FX 26026
/*-------------------------------------------------------------------*
* ivas_omasa_data_open()
@@ -420,17 +419,9 @@ ivas_error ivas_omasa_dec_config_fx(
* TD Decorrelator
*-----------------------------------------------------------------*/
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0] != NULL )
-#else
- IF( st_ivas->hDiracDecBin != NULL )
-#endif
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin[0]->hTdDecorr ), &( st_ivas->hDiracDecBin[0]->useTdDecorr ) ) ), IVAS_ERR_OK ) )
-#else
- IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) )
-#endif
{
return error;
}
@@ -701,18 +692,26 @@ void ivas_omasa_dirac_rend_jbm_fx(
Word32 data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k];
test();
- IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) )
- {
- Copy32( output_f[CPE_CHANNELS], data_separated_objects[0], nSamplesAsked );
- }
- ELSE
+ if ( !st_ivas->hDecoderConfig->Opt_tsm )
{
- FOR( n = 0; n < st_ivas->nchan_ism; n++ )
+ *nSamplesRendered = min( nSamplesAsked, st_ivas->hTcBuffer->n_samples_available );
+
+
+ test();
+ IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) )
+ {
+ Copy32( &output_f[CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[0], *nSamplesRendered );
+ }
+ ELSE
{
- Copy32( output_f[n + CPE_CHANNELS], data_separated_objects[n], nSamplesAsked );
+ FOR( n = 0; n < st_ivas->nchan_ism; n++ )
+ {
+ Copy32( &output_f[n + CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[n], *nSamplesRendered );
+ }
}
}
+
subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered;
move16();
slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered;
@@ -751,19 +750,15 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx(
)
{
Word16 n;
- Word16 gain_fx = OMASA_TDREND_MATCHING_GAIN_FX; // Q15
move16();
ivas_error error;
- Word32 *tc_local_fx[MAX_TRANSPORT_CHANNELS];
Word32 *p_sepobj_fx[MAX_NUM_OBJECTS]; // Q11
Word32 data_separated_objects_fx[MAX_NUM_OBJECTS][L_FRAME48k];
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 slot_idx_start;
slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered;
move16();
-#endif
FOR( n = 0; n < MAX_NUM_OBJECTS; n++ )
{
@@ -771,27 +766,12 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx(
}
/* Delay the object signals to match the CLDFB delay. Delay the whole buffer with the first rendering call of the stretched buffer. */
- IF( st_ivas->hSpatParamRendCom->slots_rendered == 0 )
- {
- Word16 tcBufferSize;
-
- tcBufferSize = imult1616( st_ivas->hSpatParamRendCom->num_slots, st_ivas->hSpatParamRendCom->slot_size );
-
- FOR( n = 0; n < st_ivas->nchan_ism; n++ )
- {
- tc_local_fx[n] = st_ivas->hTcBuffer->tc_fx[n + 2]; // Q11
- v_multc_fixed_16( tc_local_fx[n], gain_fx, tc_local_fx[n], tcBufferSize );
-
- delay_signal32_fx( tc_local_fx[n], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer_fx[n], st_ivas->hMasaIsmData->delayBuffer_size );
- }
- }
ivas_dirac_dec_binaural_render_fx( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, nchan_transport, output_fx );
/* reset combined orientation access index before calling the td renderer */
ivas_combined_orientation_set_to_start_index( st_ivas->hCombinedOrientationData );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
Word16 slot_idx, num_cldfb_bands, nchan_transport_orig, cldfb_slots;
@@ -844,7 +824,6 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx(
}
else
{
-#endif
IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_sepobj_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) )
{
return error;
@@ -854,9 +833,7 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx(
{
v_add_fx( output_fx[n], p_sepobj_fx[n], output_fx[n], *nSamplesRendered );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
return IVAS_ERR_OK;
}
diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c
index c96a91d5815fbd78752717eefacc6ca25ff20c8f..a8754d84f477b017d0d9ae20ab83c2ec6da526a6 100644
--- a/lib_dec/ivas_osba_dec_fx.c
+++ b/lib_dec/ivas_osba_dec_fx.c
@@ -137,12 +137,10 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx(
Word32 output_separated_objects_fx[BINAURAL_CHANNELS][L_FRAME48k]; // VE2SB: TBV
Word32 *p_sepobj_fx[BINAURAL_CHANNELS];
Word16 channel_offset;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 slot_idx_start;
slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered;
move16();
-#endif
FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ )
{
@@ -162,7 +160,6 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx(
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
Word16 slot_idx, num_cldfb_bands, b, nchan_transport_orig;
@@ -217,7 +214,6 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx(
}
else
{
-#endif
IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_sepobj_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) )
{
return error;
@@ -232,9 +228,7 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx(
move32();
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
return IVAS_ERR_OK;
}
@@ -297,9 +291,14 @@ ivas_error ivas_osba_render_sf_fx(
p_output_ism[n] = &output_ism[n][0];
}
- FOR( n = 0; n < st_ivas->nchan_ism; n++ )
+ if ( !st_ivas->hDecoderConfig->Opt_tsm )
{
- v_shr( p_output[n], Q11 - Q11, output_ism[n], nSamplesAsked ); // Q11
+ int16_t tc_offset;
+ tc_offset = st_ivas->hTcBuffer->n_samples_rendered;
+ for ( n = 0; n < st_ivas->nchan_ism; n++ )
+ {
+ v_shr( &p_output[n][tc_offset], Q11 - Q11, &output_ism[n][tc_offset], nSamplesAsked ); // Q11
+ }
}
IF( NE_32( ( error = ivas_sba_dec_render_fx( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailableNext, p_output ) ), IVAS_ERR_OK ) )
diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c
index a8adb5387b933e7c9c5092e3327b0a906cdb3938..bdf7b67bc808ed5cf30f4c1811978ea2a83ccc1a 100644
--- a/lib_dec/ivas_output_config_fx.c
+++ b/lib_dec/ivas_output_config_fx.c
@@ -80,11 +80,7 @@ void ivas_renderer_select(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
{
test();
test();
@@ -95,11 +91,7 @@ void ivas_renderer_select(
{
IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) )
-#endif
{
*renderer_type = RENDERER_BINAURAL_PARAMETRIC;
move16();
@@ -113,11 +105,7 @@ void ivas_renderer_select(
ELSE /* ISM_MODE_DISC */
{
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
{
*renderer_type = RENDERER_BINAURAL_OBJECTS_TD;
move16();
@@ -137,11 +125,7 @@ void ivas_renderer_select(
{
*internal_config = output_config;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) )
-#endif
{
*renderer_type = RENDERER_BINAURAL_PARAMETRIC;
move16();
@@ -158,11 +142,7 @@ void ivas_renderer_select(
move16();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
*renderer_type = RENDERER_BINAURAL_FASTCONV;
move16();
@@ -217,11 +197,7 @@ void ivas_renderer_select(
*internal_config = output_config;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) )
-#endif
{
*renderer_type = RENDERER_BINAURAL_PARAMETRIC;
move16();
@@ -237,11 +213,7 @@ void ivas_renderer_select(
*internal_config = transport_config;
move16();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
{
test();
test();
@@ -265,16 +237,6 @@ void ivas_renderer_select(
move16();
}
-#if 0 // def DEBUGGING /*temp disabling this as paramMC crashes with CREND*/
- IF ( st_ivas->hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_CREND )
- {
- *renderer_type = RENDERER_BINAURAL_MIXER_CONV;
- }
- ELSE IF ( st_ivas->hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_FASTCONV )
- {
- *renderer_type = RENDERER_BINAURAL_FASTCONV;
- }
-#endif
test();
IF( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation )
{
@@ -445,11 +407,7 @@ void ivas_renderer_select(
*internal_config = IVAS_AUDIO_CONFIG_HOA3;
move16();
}
-#ifdef FIX_959_MASA_LINEAR_REND
*renderer_type = RENDERER_SBA_LINEAR_DEC;
-#else
- st_ivas->renderer_type = RENDERER_SBA_LINEAR_DEC;
-#endif
move16();
}
ELSE IF( ( EQ_32( ivas_format, MASA_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) && EQ_16( st_ivas->nchan_transport, 1 ) ) ||
diff --git a/lib_dec/ivas_qmetadata_dec_fx.c b/lib_dec/ivas_qmetadata_dec_fx.c
index 266389ea107fd4e6379448a03718d7bb03a6b543..182ed54abd6a38d87d513abcadd8f33ef049097b 100644
--- a/lib_dec/ivas_qmetadata_dec_fx.c
+++ b/lib_dec/ivas_qmetadata_dec_fx.c
@@ -72,8 +72,7 @@ static Word16 read_coherence_data_fx( UWord16 *bitstream, Word16 *p_bit_pos, IVA
static Word16 ivas_qmetadata_raw_decode_dir_512_fx( IVAS_QDIRECTION *q_direction, UWord16 *bitstream, Word16 *index, const Word16 nbands, const Word16 start_band, const SPHERICAL_GRID_DATA *sph_grid16 );
static Word16 read_surround_coherence( UWord16 *bitstream, Word16 *p_bit_pos, IVAS_QMETADATA *hQMetaData );
static ivas_error read_huf( Word16 *num_bits_read, const UWord16 *bitstream, UWord16 *out, const Word16 start_pos, const Word16 len, const Word16 *huff_code, const Word16 max_len );
-const Word16 inv_dfRatio_qsteps[9] = { 0, 0, ONE_IN_Q14, 0, 5461, 0, 0, 0, 2341 }; // Q14
-
+const Word32 inv_dfRatio_qsteps[9] = { 0, 0, ONE_IN_Q30, 0, 357913941, 0, 0, 0, 153391689 }; // Q30
/*-----------------------------------------------------------------------*
* Global function definitions
@@ -223,7 +222,7 @@ Word16 ivas_qmetadata_dec_decode(
IF( EQ_16( hQMetaData->twoDirBands[b], 1 ) )
{
Word32 diffRatio_fx, dir1ratio_fx, dir2ratio_fx;
- Word16 dfRatio_fx;
+ Word32 dfRatio_fx;
Word16 dfRatio_qsteps;
diffRatio_fx = diffuseness_reconstructions_fx[hQMetaData->q_direction[0].band_data[b].energy_ratio_index[0]]; // Q30
@@ -233,17 +232,25 @@ Word16 ivas_qmetadata_dec_decode(
/* already encoded as total and ratios in HO-DirAC */
IF( hodirac_flag )
{
-
- dfRatio_fx = usdequant_fx( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], 0 /* Q15 */, inv_dfRatio_qsteps[dfRatio_qsteps] ); // Q15
+ dfRatio_fx = usdequant32_fx( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], 0 /* Q15 */, inv_dfRatio_qsteps[dfRatio_qsteps] ); // Q31
dir1ratio_fx = L_sub( ONE_IN_Q30, diffRatio_fx );
- dir2ratio_fx = L_shl( (Word32) dfRatio_fx, Q15 ); /*Q30*/
+ dir2ratio_fx = L_shr( dfRatio_fx, 1 ); /*Q30*/
}
ELSE
{
- dfRatio_fx = usdequant_fx( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], shr( MAX_16, 1 ), shr( inv_dfRatio_qsteps[dfRatio_qsteps], 1 ) ); // Q15
+ IF( EQ_16( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], sub( dfRatio_qsteps, 1 ) ) )
+ {
+ dfRatio_fx = MAX_32; // Q31
+ move16();
+ dir1ratio_fx = L_sub( ONE_IN_Q30, diffRatio_fx ); // Q30
+ }
+ ELSE
+ {
+ dfRatio_fx = usdequant32_fx( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], L_shr( MAX_32, 1 ), L_shr( inv_dfRatio_qsteps[dfRatio_qsteps], 1 ) ); // Q31
+ dir1ratio_fx = Mpy_32_32( L_sub( ONE_IN_Q30, diffRatio_fx ), dfRatio_fx ); // Q30
+ }
- dir1ratio_fx = Mpy_32_16_1( L_sub( ONE_IN_Q30, diffRatio_fx ), dfRatio_fx ); // Q30
- dir2ratio_fx = L_sub( L_sub( ONE_IN_Q30, diffRatio_fx ), dir1ratio_fx ); // Q30
+ dir2ratio_fx = L_sub( L_sub( ONE_IN_Q30, diffRatio_fx ), dir1ratio_fx ); // Q30
}
/* Requantize the 1 - dirRatio separately for each direction to obtain inverted dirRatio index. These are used in further decoding. */
diff --git a/lib_dec/ivas_rom_dec.c b/lib_dec/ivas_rom_dec_fx.c
similarity index 100%
rename from lib_dec/ivas_rom_dec.c
rename to lib_dec/ivas_rom_dec_fx.c
diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c
index fdbcdef48b53768d6ba50d4ec54ff5bdfa5c4a2b..687991c8931e49533bf13399579596d9941e5bdc 100644
--- a/lib_dec/ivas_sba_dec_fx.c
+++ b/lib_dec/ivas_sba_dec_fx.c
@@ -183,11 +183,7 @@ ivas_error ivas_sba_dec_reconfigure_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) )
-#else
- IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) )
-#endif
{
RENDERER_TYPE renderer_type_new;
Word16 sba_order_internal;
@@ -198,11 +194,7 @@ ivas_error ivas_sba_dec_reconfigure_fx(
/* copy the logic from ivas_renderer_select(), because calling this function has too many side effects that would affect the flushing */
IF( LE_16( ivas_get_sba_num_TCs_fx( ivas_total_brate, sba_order_internal ), 2 ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) )
-#endif
{
renderer_type_new = RENDERER_BINAURAL_PARAMETRIC;
move16();
@@ -216,11 +208,7 @@ ivas_error ivas_sba_dec_reconfigure_fx(
ELSE
{
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
-#endif
+ IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
renderer_type_new = RENDERER_BINAURAL_FASTCONV;
move16();
@@ -282,7 +270,7 @@ ivas_error ivas_sba_dec_reconfigure_fx(
}
/* save old */
- IF( NE_16( ism_mode_old, ISM_SBA_MODE_DISC ) )
+ IF( NE_16( ism_mode_old, ISM_SBA_MODE_DISC ) && NE_16( st_ivas->hTcBuffer->tc_buffer_mode, TC_BUFFER_MODE_BUFFER ) )
{
test();
IF( st_ivas->hDirAC == NULL && st_ivas->hSpar != NULL )
@@ -423,7 +411,7 @@ ivas_error ivas_sba_dec_reconfigure_fx(
IF( st_ivas->hBinRenderer == NULL && ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) )
{
/* open fastconv binaural renderer */
- if ( NE_32( ( error = ivas_binRenderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = ivas_binRenderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -435,7 +423,7 @@ ivas_error ivas_sba_dec_reconfigure_fx(
IF( EQ_16( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) && st_ivas->hMonoDmxRenderer == NULL )
{
- if ( NE_32( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -446,9 +434,7 @@ ivas_error ivas_sba_dec_reconfigure_fx(
ivas_mono_dmx_renderer_close( &st_ivas->hMonoDmxRenderer );
}
- if ( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) ? IVAS_MAX_NUM_BANDS : ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ),
- st_ivas->ivas_format ) ),
- IVAS_ERR_OK ) )
+ IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) ? IVAS_MAX_NUM_BANDS : ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -639,7 +625,6 @@ ivas_error ivas_sba_dec_reconfigure_fx(
* TD Decorrelator
*-----------------------------------------------------------------*/
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0] != NULL )
{
IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin[0]->hTdDecorr ), &( st_ivas->hDiracDecBin[0]->useTdDecorr ) ) ), IVAS_ERR_OK ) )
@@ -647,15 +632,6 @@ ivas_error ivas_sba_dec_reconfigure_fx(
return error;
}
}
-#else
- IF( st_ivas->hDiracDecBin != NULL )
- {
- IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-#endif
/*-----------------------------------------------------------------*
* CLDFB instances
@@ -805,11 +781,7 @@ void ivas_sba_dec_digest_tc_fx(
ivas_spar_dec_digest_tc_fx( st_ivas, st_ivas->nchan_transport, nCldfbSlots, nSamplesForRendering );
}
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0] != NULL && st_ivas->hDiracDecBin[0]->useTdDecorr )
-#else
- IF( st_ivas->hDiracDecBin != NULL && ( st_ivas->hDiracDecBin->useTdDecorr ) )
-#endif
{
Word16 nSamplesLeftForTD, default_frame;
Word32 *decorr_signal[BINAURAL_CHANNELS];
@@ -832,17 +804,9 @@ void ivas_sba_dec_digest_tc_fx(
{
Word16 nSamplesToDecorr = s_min( nSamplesLeftForTD, default_frame ); /*Q0*/
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( st_ivas->hDiracDecBin[0]->hTdDecorr )
-#else
- IF( st_ivas->hDiracDecBin->hTdDecorr )
-#endif
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_td_decorr_process_fx( st_ivas->hDiracDecBin[0]->hTdDecorr, p_tc, decorr_signal, nSamplesToDecorr );
-#else
- ivas_td_decorr_process_fx( st_ivas->hDiracDecBin->hTdDecorr, p_tc, decorr_signal, nSamplesToDecorr );
-#endif
}
FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ )
@@ -886,7 +850,7 @@ void ivas_sba_dec_digest_tc_fx(
Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0];
Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, sub( norm_s( sub( st->hFdCngDec->hFdCngCom->A_cng[0], 1 ) ), 2 ) ); /*Q12 -> Q13*/
- generate_masking_noise_lb_dirac_fx( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc_fx[1], nCldfbSlots, st->cna_dirac_flag && st->flag_cna );
+ generate_masking_noise_lb_dirac_fx( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc_fx[1], nCldfbSlots, st_ivas->hSpatParamRendCom, st->cna_dirac_flag && st->flag_cna );
}
return;
diff --git a/lib_dec/ivas_spar_decoder_fx.c b/lib_dec/ivas_spar_decoder_fx.c
index 38b403606647791cede76f1d1ab907a18089bed4..7f12c592ed95f8864c686557a7c4b35679fb8ac0 100644
--- a/lib_dec/ivas_spar_decoder_fx.c
+++ b/lib_dec/ivas_spar_decoder_fx.c
@@ -294,8 +294,8 @@ ivas_error ivas_spar_dec_open_fx(
test();
test();
- test();
- IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && ( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
+
+ IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
{
/* get correct granularity in case of binaural rendering of the discrete objects with the td obj renderer */
Word32 quo, rem;
@@ -1536,9 +1536,9 @@ void ivas_spar_dec_set_render_map_fx(
/*-------------------------------------------------------------------*
- * ivas_spar_dec_upmixer()
+ * ivas_spar_dec_set_render_params()
*
- * IVAS SPAR upmixer
+ * IVAS SPAR set rendering parameters
*-------------------------------------------------------------------*/
void ivas_spar_dec_set_render_params_fx(
@@ -2036,13 +2036,8 @@ void ivas_spar_dec_upmixer_sf_fx(
test();
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) || !( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) &&
!( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) && EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) )
-#else
- IF( ( EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) || !( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) &&
- !( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) && EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) )
-#endif
{
FOR( ts = 0; ts < hSpar->subframe_nbslots[hSpar->subframes_rendered]; ts++ )
{
diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h
index d86ece7c87df0deb8a3a03bc1c84074ff185bae5..db23485b8693157965fe07dd21e4f3d4de9ed365 100644
--- a/lib_dec/ivas_stat_dec.h
+++ b/lib_dec/ivas_stat_dec.h
@@ -860,34 +860,7 @@ typedef struct renderer_struct
} ISM_RENDERER_DATA, *ISM_RENDERER_HANDLE;
-#ifndef SPLIT_REND_WITH_HEAD_ROT
-/* Fastconv binaural data structure */
-typedef struct ivas_binaural_rendering_struct
-{
- /* Common variables for all modules */
- IVAS_OUTPUT_SETUP_HANDLE hInputSetup; /* pointer to input spatial format for binaural renderer*/
- EFAP_HANDLE hEFAPdata; /* EFAP structure*/
- Word32 *hoa_dec_mtx; /* pointer to HOA decoder mtx */ /*Q29*/
- Word8 rotInCldfb; /* Flag to enable rotation within bin Renderer in CLDFB*/
- Word16 max_band; /* band upto which rendering is performed */
- Word16 conv_band; /* band upto which convolution in cldfb domain is performed */
- Word16 timeSlots; /* number of time slots of binaural renderer */
- Word16 nInChannels; /* number input channels */
- Word8 render_lfe; /* Flag to render LFE in binaural rendering*/
- IVAS_FORMAT ivas_format; /* format; corresponds to st_ivas->ivas_format, unless the signal gets transormed to a different domain for rendering */
-
- /* Convolution module structure */
- BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule;
-
- /* Variables related to reverberator module */
- Word32 earlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX];
- REVERB_STRUCT_HANDLE hReverb;
-
-} BINAURAL_RENDERER, *BINAURAL_RENDERER_HANDLE;
-#endif
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*----------------------------------------------------------------------------------*
* IVAS decoder specific ISAR wrapper structures
*----------------------------------------------------------------------------------*/
@@ -917,7 +890,6 @@ typedef struct
Word16 numTdSamplesPerChannelCached;
} ISAR_DEC_SPLIT_REND_WRAPPER, *ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE;
-#endif
/*----------------------------------------------------------------------------------*
* MASA decoder structures
@@ -1062,9 +1034,7 @@ typedef struct decoder_config_structure
Word16 Opt_tsm; /* indicates whether time scaling modification is activated */
IVAS_RENDER_FRAMESIZE render_framesize;
Word16 Opt_delay_comp; /* flag indicating delay compensation active */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
int16_t Opt_Limiter;
-#endif
} DECODER_CONFIG, *DECODER_CONFIG_HANDLE;
@@ -1141,11 +1111,7 @@ typedef struct Decoder_Struct
BINAURAL_RENDERER_HANDLE hBinRenderer; /* fastconv binaural renderer handle */
BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd; /* Time domain binaural object renderer handle */
TDREND_HRFILT_FiltSet_t *hHrtfTD; /* pointer to HRTF data for TD renderer */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
DIRAC_DEC_BIN_HANDLE hDiracDecBin[MAX_HEAD_ROT_POSES]; /* parametric binaural renderer handle */
-#else
- DIRAC_DEC_BIN_HANDLE hDiracDecBin; /* parametric binaural renderer handle */
-#endif
LSSETUP_CONVERSION_HANDLE hLsSetUpConversion; /* MC LS configuration convertion handle */
EFAP_HANDLE hEFAPdata; /* EFAP structure */
VBAP_HANDLE hVBAPdata; /* VBAP structure */
@@ -1155,6 +1121,9 @@ typedef struct Decoder_Struct
HRTFS_CREND_HANDLE hSetOfHRTF; /* Set of HRTFs handle (CRend) */
HRTFS_FASTCONV_HANDLE hHrtfFastConv; /* FASTCONV HRTF tables for binaural rendering */
HRTFS_PARAMBIN_HANDLE hHrtfParambin; /* HRTF tables for parametric binauralizer */
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ HRTFS_STATISTICS_HANDLE hHrtfStatistics; /* HRTF statistics handle */
+#endif
LSSETUP_CUSTOM_HANDLE hLsSetupCustom; /* Custom LS configuration handle */
Word32 *hoa_dec_mtx; /* Pointer to decoder matrix for SBA */
HEAD_TRACK_DATA_HANDLE hHeadTrackData; /* Head tracking data structure */
@@ -1169,10 +1138,8 @@ typedef struct Decoder_Struct
Word16 flag_omasa_brate;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE hSplitBinRend; /* ISAR split binaural rendering handle */
BINAURAL_TD_OBJECT_RENDERER_HANDLE hTdRendHandles[MAX_HEAD_ROT_POSES - 1];
-#endif
/* JBM module */
DECODER_TC_BUFFER_HANDLE hTcBuffer; /* JBM structure */
diff --git a/lib_dec/ivas_stereo_cng_dec.c b/lib_dec/ivas_stereo_cng_dec_fx.c
similarity index 99%
rename from lib_dec/ivas_stereo_cng_dec.c
rename to lib_dec/ivas_stereo_cng_dec_fx.c
index 6b8a8f949435c9e234e51f8e02128cb8ba4073de..8ec147ff7edf274f9e776c99924c186ac0e6a6c3 100644
--- a/lib_dec/ivas_stereo_cng_dec.c
+++ b/lib_dec/ivas_stereo_cng_dec_fx.c
@@ -1368,8 +1368,8 @@ static void FindEmEs_fx(
temp_q = 0;
move16();
}
- log_res = BASOP_Util_Log2( square_res );
- es_em_fx = Mpy_32_32( log_res, 1616107501 ); // 25+30-31
+ log_res = L_add( BASOP_Util_Log2( square_res ), L_shl( temp_q, Q25 ) );
+ es_em_fx = Mpy_32_32( log_res, 1616107501 /* 5 * (ln(2)/ln(10)) */ ); // 25+30-31
/* long-term estimate */
*lt_es_em_fx = L_add( Mpy_32_32( 858993459, *lt_es_em_fx ), Mpy_32_32( 1288490188, es_em_fx ) ); /* Q24 */
move32();
diff --git a/lib_dec/ivas_stereo_dft_dec.c b/lib_dec/ivas_stereo_dft_dec.c
deleted file mode 100644
index 92ae9159cd99b32fcbf18839bed6508bc7bcbe70..0000000000000000000000000000000000000000
--- a/lib_dec/ivas_stereo_dft_dec.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-#include
-#include
-#include "options.h"
-#include
-#include "cnst.h"
-#include "rom_com.h"
-#include "rom_dec.h"
-#include "prot_fx.h"
-#include "ivas_cnst.h"
-#include "ivas_rom_com.h"
-#include "ivas_rom_com_fx.h"
-#include "ivas_rom_dec.h"
-#include "wmc_auto.h"
-#include "ivas_prot_fx.h"
-
-/*-------------------------------------------------------------------*
- * Local constants
- *-------------------------------------------------------------------*/
-
-#define STEFI_DELAY_IND( d, buf_ind ) ( ( buf_ind ) + STEREO_DFT_PAST_MAX - ( d ) + 1 ) % STEREO_DFT_PAST_MAX
-
-#define STEREO_DFT_RES_RATIO_LIMIT_FX ( Word32 )( 0x170A3D71 )
-#define STEREO_DFT_STEFFI_DELAY_SHORT 2
-#define STEREO_DFT_STEFFI_DELAY_LONG 4
-#define STEREO_DFT_STEFFI_DELAY_OFFSET 2
-
-
-#define STEREO_DFT_BPF_SIZE 40 /* BPF: Number of weights for BPF in DFT: 40*40Hz=1.6kHz*/
-
-
-/*-------------------------------------------------------------------------
- * Local function prototypes
- *-------------------------------------------------------------------------*/
-
-
-/*-------------------------------------------------------------------------
- * stereo_dft_dec_create()
- *
- * Create DFT stereo handle
- *------------------------------------------------------------------------*/
-
-
-/*-------------------------------------------------------------------------
- * stereo_dft_dec_open()
- *
- * Open DFT decoder stereo handle
- *-------------------------------------------------------------------------*/
-
-
-/*-------------------------------------------------------------------------
- * stereo_dft_dec_reset()
- *
- * Reset DFT stereo memories
- *------------------------------------------------------------------------*/
-
-/*-------------------------------------------------------------------------
- * stereo_dft_dec_update()
- *
- * Update DFT memories for new frame
- *-------------------------------------------------------------------------*/
-
-/*-------------------------------------------------------------------------
- * stereo_dft_dec_destroy()
- *
- * destroy DFT stereo handle
- *-------------------------------------------------------------------------*/
-
-void stereo_dft_dec_destroy(
- STEREO_DFT_DEC_DATA_HANDLE *hStereoDft_glob /* i/o: decoder DFT stereo handle */
-)
-{
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft;
-
- hStereoDft = *hStereoDft_glob;
-
- IF( hStereoDft->hConfig != NULL )
- {
- free( hStereoDft->hConfig );
- hStereoDft->hConfig = NULL;
- }
-
- IF( hStereoDft->hBpf != NULL )
- {
- free( hStereoDft->hBpf );
- hStereoDft->hBpf = NULL;
- }
-
- IF( hStereoDft->hTcxLtpDec != NULL )
- {
- free( hStereoDft->hTcxLtpDec );
- hStereoDft->hTcxLtpDec = NULL;
- }
-
- free( hStereoDft );
- hStereoDft = NULL;
-
- return;
-}
-
-
-/*-------------------------------------------------------------------------
- * stereo_dft_dec_analyze()
- *
- * DFT analysis on a 20ms frame
- *-------------------------------------------------------------------------*/
-
-void stereo_dft_dec_analyze_fx(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const Word32 *input_fx, /* i : input signal q*/
- Word32 out_DFT_fx[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers q_out_DFT*/
- const Word16 chan, /* i : channel number Q0*/
- const Word16 input_frame, /* i : input frame size Q0*/
- const Word16 output_frame, /* i : output frame size Q0*/
- const DFT_STEREO_DEC_ANA_TYPE ana_type, /* i : type of signal to analyse */
- const Word16 k_offset, /* i : offset of DFT Q0*/
- const Word16 delay, /* i : delay in samples FOR input signal Q0*/
- Word16 *q,
- Word16 *q_out_DFT )
-{
-
- Word16 i, k;
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft;
- Word32 *pInput_fx, *pInput_buff_fx;
- Word32 *mem_fx, input_buff_fx[STEREO_DFT32MS_OVL_MAX + L_FRAME48k];
- Word32 DFT_fx[STEREO_DFT32MS_N_MAX], *pDFT_out_fx;
- Word16 NFFT, NFFT_core, ovl, zp;
- Word16 offset;
- Word32 fac_fx;
- const Word16 *trigo_fx, *win_left_fx, *win_right_fx, *win2_fx;
- Word16 trigo_dec_fx[STEREO_DFT32MS_N_MAX / 2 + 1];
- Word16 trigo_step;
- Word32 inputFs;
- Word16 delay_dec;
- Word16 mem_size;
- Word16 ovl2;
-
- push_wmops( "DFT_analysis" );
-
- hStereoDft = hCPE->hStereoDft;
-
- assert( output_frame == STEREO_DFT_NBDIV * hStereoDft->N );
-
- /*-----------------------------------------------------------------*
- * Initialization
- *-----------------------------------------------------------------*/
-
- IF( EQ_16( input_frame, output_frame ) )
- {
- trigo_fx = hStereoDft->dft_trigo_fx;
- trigo_step = i_mult( hStereoDft->dft_trigo_step, STEREO_DFT_TRIGO_DEC_STEP ); /* Q0 */
- win_right_fx = hStereoDft->win32ms_fx; /* Q15 */
- win_left_fx = hStereoDft->win32ms_fx; /* Q15 */
- win2_fx = hStereoDft->win232ms_fx; /* Q15 */
-
- test();
- IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) )
- {
- assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" );
- mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */
- }
- ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) )
- {
- mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */
- }
- ELSE
- {
- mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */
- }
- }
- ELSE IF( EQ_16( input_frame, L_FRAME ) )
- {
- trigo_fx = hStereoDft->dft_trigo_12k8_fx; /* Q15 */
- trigo_step = STEREO_DFT_TRIGO_SRATE_12k8_STEP * STEREO_DFT_TRIGO_DEC_STEP;
- move16();
- win_right_fx = hStereoDft->win32ms_12k8_fx; /* Q15 */
- win_left_fx = hStereoDft->win32ms_12k8_fx; /* Q15 */
- win2_fx = hStereoDft->win232ms_12k8_fx; /* Q15 */
-
- test();
- IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) )
- {
- assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" );
- mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */
- }
- ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) )
- {
- mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */
- }
- ELSE
- {
- assert( ( chan == 1 ) && "12.8kHz sampling rate only FOR second channel, i.e. residual coding or allpass signal" );
- mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */
- }
- }
- ELSE IF( EQ_16( input_frame, L_FRAME16k ) )
- {
- trigo_fx = hStereoDft->dft_trigo_16k_fx; /* Q15 */
- trigo_step = STEREO_DFT_TRIGO_SRATE_16k_STEP * STEREO_DFT_TRIGO_DEC_STEP;
- move16();
- win_right_fx = hStereoDft->win32ms_16k_fx; /* Q15 */
- win_left_fx = hStereoDft->win32ms_16k_fx; /* Q15 */
- win2_fx = hStereoDft->win232ms_16k_fx; /* Q15 */
-
- test();
- IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) )
- {
- assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" );
- mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */
- }
- ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) )
- {
- mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */
- }
- ELSE
- {
- assert( ( chan == 1 ) && ( hCPE->hStereoDft->hConfig->res_pred_mode == STEREO_DFT_RESPRED_ESF ) && "16kHz sampling rate only FOR second channel with allpass signal" );
- mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */
- }
- }
- ELSE IF( EQ_16( input_frame, L_FRAME8k ) )
- {
- assert( ( chan == 1 ) && "DFT stereo: 8kHz analysis only FOR residual coding" );
- trigo_fx = hStereoDft->dft_trigo_8k_fx; /* Q15 */
- trigo_step = STEREO_DFT_TRIGO_SRATE_8k_STEP * STEREO_DFT_TRIGO_DEC_STEP;
- move16();
- win_right_fx = hStereoDft->win32ms_8k_fx; /* Q15 */
- win_left_fx = hStereoDft->win32ms_8k_fx; /* Q15 */
- win2_fx = hStereoDft->win232ms_8k_fx; /* Q15 */
- mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */
- }
- ELSE
- {
- IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error in DFT stereo: sampling rate not supported" );
- mem_fx = NULL; /* to avoid compilation warning */
- trigo_fx = NULL; /* to avoid compilation warning */
- trigo_step = -1; /* to avoid compilation warning */
- move16();
- win_right_fx = NULL; /* to avoid compilation warning */
- win_left_fx = NULL; /* to avoid compilation warning */
- win2_fx = NULL; /* to avoid compilation warning */
- }
-
- inputFs = L_mult0( input_frame, FRAMES_PER_SEC ); /* Q0 */
- delay_dec = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL_NS );
- move16();
- zp = NS2SA_FX2( inputFs, STEREO_DFT32MS_ZP_NS );
- move16();
- ovl = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL_NS );
- move16();
- NFFT = NS2SA_FX2( inputFs, STEREO_DFT32MS_N_NS );
- Word16 qfac_fx;
- fac_fx = BASOP_Util_Divide3232_Scale_newton( hStereoDft->NFFT, NFFT, &qfac_fx ); /* qfac_fx */
- qfac_fx = sub( 31, qfac_fx );
- ovl2 = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL2_NS );
- move16();
-
- /* Offset FOR the time buffers */
- assert( ( delay >= -NS2SA( input_frame * FRAMES_PER_SEC, STEREO_DFT_DELAY_DEC_BWE_NS + STEREO_DFT_OVL_NS / 2 ) ) && ( delay <= NS2SA( input_frame * FRAMES_PER_SEC, STEREO_DFT_OVL_NS ) ) );
- mem_size = add( delay_dec, delay );
-
- /* Update buffers */
- Copy32( mem_fx, input_buff_fx, mem_size ); /* Q11 */
- Copy32( input_fx, input_buff_fx + mem_size, input_frame ); /* q */
- Copy32( input_buff_fx + input_frame, mem_fx, mem_size ); /* q */
- pInput_buff_fx = input_buff_fx; /* q */
-
- test();
- IF( EQ_16( hCPE->nchan_out, 1 ) && ( hCPE->hStereoDft->hConfig->res_cod_mode == STEREO_DFT_RES_COD_OFF ) )
- {
- pop_wmops();
- return;
- }
-
-
- /*-----------------------------------------------------------------*
- * DFT Analysis: loop over frame
- *-----------------------------------------------------------------*/
-
- assert( ( k_offset <= STEREO_DFT_NBDIV ) );
-
- FOR( i = 0; i < NFFT / 4; i++ )
- {
- trigo_dec_fx[i] = trigo_fx[i * trigo_step];
- move16();
- trigo_dec_fx[NFFT / 2 - i] = trigo_fx[i * trigo_step];
- move16();
- }
- trigo_dec_fx[NFFT / 4] = trigo_fx[NFFT / 4 * trigo_step];
- move16();
-
- FOR( k = 0; k < STEREO_DFT_NBDIV - k_offset; k++ )
- {
- set32_fx( DFT_fx, 0, STEREO_DFT32MS_N_MAX );
- IF( k == 0 )
- {
- offset = 0;
- move16();
- }
- ELSE
- {
- /* If OVL2 = OVL offset = 10ms */
- offset = NS2SA_FX2( inputFs, STEREO_DFT32MS_WIN_CENTER_NS - STEREO_DFT32MS_OVL2_NS / 2 );
- move16();
- }
-
- pInput_fx = pInput_buff_fx + offset; /* q */
- pDFT_out_fx = out_DFT_fx[chan] + i_mult( k, STEREO_DFT32MS_N_MAX ); /* q_out_DFT */
-
- /*Forwards FFT: L and R*/
- /* Zero Padding & Flat Portion */
- Copy32( pInput_fx, DFT_fx + zp, sub( NFFT, i_mult( 2, zp ) ) ); /* q */
-
- /* Overlapping portions */
- IF( k == 0 )
- {
- FOR( i = 0; i < ovl; i++ )
- {
- DFT_fx[i + zp] = Mpy_32_16_1( DFT_fx[i + zp], win_left_fx[STEREO_DFT32MS_STEP * i] ); /* q */
- move32();
- }
- FOR( i = 0; i < ovl2; i++ )
- {
- DFT_fx[NFFT - zp - 1 - i] = Mpy_32_16_1( DFT_fx[NFFT - zp - 1 - i], win2_fx[i] ); /* q */
- move32();
- }
- }
- ELSE
- {
- FOR( i = 0; i < ovl2; i++ )
- {
- DFT_fx[i + zp] = Mpy_32_16_1( DFT_fx[i + zp], win2_fx[i] ); /* q */
- move32();
- }
- FOR( i = 0; i < ovl; i++ )
- {
- DFT_fx[NFFT - zp - i - 1] = Mpy_32_16_1( DFT_fx[NFFT - zp - i - 1], win_right_fx[STEREO_DFT32MS_STEP * i] ); /* q */
- move32();
- }
- }
- Word16 q_DFT, q_shift, guarded_bits;
- q_DFT = *q;
- move16();
- guarded_bits = find_guarded_bits_fx( NFFT );
- q_shift = sub( L_norm_arr( DFT_fx, NFFT ), guarded_bits );
-
- FOR( Word16 j = 0; j < NFFT; j++ )
- {
- DFT_fx[j] = L_shl( DFT_fx[j], q_shift ); /* q + q_shift*/
- move32();
- }
-
- q_DFT = add( q_DFT, q_shift );
-
- rfft_fx( DFT_fx, trigo_dec_fx, NFFT, -1 );
-
- q_shift = sub( L_norm_arr( DFT_fx, NFFT ), sub( 31, qfac_fx ) );
- FOR( Word16 j = 0; j < NFFT; j++ )
- {
- DFT_fx[j] = L_shl( DFT_fx[j], q_shift ); /* q + q_shift */
- move32();
- }
- q_DFT = add( q_DFT, q_shift );
- IF( sub( q_out_DFT[chan], q_DFT ) > 0 )
- {
- FOR( Word32 j = 0; j < NFFT; j++ )
- {
- out_DFT_fx[chan][j] = L_shr( out_DFT_fx[chan][j], sub( q_out_DFT[chan], q_DFT ) ); /* q_DFT */
- move32();
- }
- q_out_DFT[chan] = q_DFT;
- move16();
- }
- ELSE
- {
- FOR( Word32 j = 0; j < NFFT; j++ )
- {
- DFT_fx[j] = L_shr( DFT_fx[j], sub( q_DFT, q_out_DFT[chan] ) ); /* q_DFT */
- move32();
- }
- q_DFT = q_out_DFT[chan];
- move16();
- }
-
- /*Resampling: filtering+scaling*/
- test();
- test();
- IF( ( ana_type == DFT_STEREO_DEC_ANA_FB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_NOCORE ) )
- {
- pDFT_out_fx[0] = L_shl( Mpy_32_32( DFT_fx[0], fac_fx ), sub( 31, qfac_fx ) ); /*DC*/ /* qDFT */
- move32();
- IF( EQ_16( NFFT, hStereoDft->NFFT ) ) /*Nyquist*/
- {
- pDFT_out_fx[1] = L_shl( Mpy_32_32( DFT_fx[1], fac_fx ), sub( 31, qfac_fx ) ); /* qDFT */
- move32();
- }
- ELSE
- {
- pDFT_out_fx[1] = 0;
- move32();
- }
- FOR( i = 2; i < NFFT; i++ )
- {
- pDFT_out_fx[i] = L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ); /* qDFT */
- move32();
- }
- FOR( i = NFFT; i < hStereoDft->NFFT; i++ )
- {
- pDFT_out_fx[i] = 0; /* qDFT */
- move32();
- }
- }
- ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) )
- {
- pDFT_out_fx[0] = L_sub( pDFT_out_fx[0], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[0], fac_fx ), dft_bpf_weights_fx[0] ), sub( 32, qfac_fx ) ) ); /* qDFT */
- move32();
-
- FOR( i = 1; i < STEREO_DFT_BPF_SIZE; i++ )
- {
- pDFT_out_fx[2 * i] = L_sub( pDFT_out_fx[2 * i], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[2 * i], fac_fx ), dft_bpf_weights_fx[i] ), sub( 32, qfac_fx ) ) ); /* qDFT */
- move32();
- pDFT_out_fx[2 * i + 1] = L_sub( pDFT_out_fx[2 * i + 1], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[2 * i + 1], fac_fx ), dft_bpf_weights_fx[i] ), sub( 32, qfac_fx ) ) ); /* qDFT */
- move32();
- }
- }
- ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_HB_ADD ) )
- {
- NFFT_core = NS2SA_FX2( L_mult0( hCPE->hCoreCoder[0]->L_frame, FRAMES_PER_SEC ), STEREO_DFT32MS_N_NS ); /* Q0 */
- move16();
-
- FOR( i = NFFT_core; i < NFFT; i++ )
- {
- pDFT_out_fx[i] = L_add( L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[i] ); /* qDFT */
- move32();
- }
- }
- ELSE
- {
- pDFT_out_fx[0] = L_add( pDFT_out_fx[0], L_shl( Mpy_32_32( DFT_fx[0], fac_fx ), sub( 31, qfac_fx ) ) ); /*DC*/ /* qDFT */
- move32();
- IF( EQ_16( NFFT, hStereoDft->NFFT ) ) /*Nyquist*/
- {
- pDFT_out_fx[1] = L_add( L_shl( Mpy_32_32( DFT_fx[1], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[1] ); /* qDFT */
- move32();
- }
- FOR( i = 2; i < NFFT; i++ )
- {
- pDFT_out_fx[i] = L_add( L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[i] ); /* qDFT */
- move32();
- }
- }
- }
-
- pop_wmops();
- return;
-}
-
-
-/*---------------------------------------------------------------
- * stereo_dft_dec_smooth_parameters()
- *
- *
- * ---------------------------------------------------------------*/
diff --git a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c
index e82005965b6a452c7d327e89d07b42b082048c7b..cdb64e46c62c5c73343b11c8a202d9623923088b 100644
--- a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c
+++ b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c
@@ -102,6 +102,8 @@ void stereo_dft_unify_dmx_fx(
Word16 num_plocs;
Word32 plocsi[STEREO_DFT_RES_N_PEAKS_MAX];
+ set32_fx( DFT_PRED_RES, 0, STEREO_DFT32MS_N_32k );
+
output_frame = extract_l( Mult_32_16( st0->output_Fs, INV_FRAME_PER_SEC_Q15 ) ); /* Q0 */
samp_ratio = BASOP_Util_Divide3232_Scale( st0->sr_core, st0->output_Fs, &q_samp_ratio );
samp_ratio = shr( samp_ratio, sub( Q15 - Q12, q_samp_ratio ) );
diff --git a/lib_dec/ivas_stereo_dft_dec_fx.c b/lib_dec/ivas_stereo_dft_dec_fx.c
index 324f2b7f3a07c34f698ba7c232b91052895d4661..914c7fad17b255839f68fe1cfd598a15caef587a 100644
--- a/lib_dec/ivas_stereo_dft_dec_fx.c
+++ b/lib_dec/ivas_stereo_dft_dec_fx.c
@@ -268,7 +268,7 @@ void stereo_dft_dec_reset_fx(
}
/*-------------------------------------------------------------------------
- * stereo_dft_dec_open()
+ * stereo_dft_dec_open_fx()
*
* Open DFT decoder stereo handle
*-------------------------------------------------------------------------*/
@@ -402,6 +402,8 @@ ivas_error stereo_dft_dec_create_fx(
return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TCX-LTP handle\n" ) );
}
set_zero_fx( hStereoDft_loc->hb_nrg_subr_fx, STEREO_DFT_NBDIV ); /*Setting hb_nrg_subr_fx to zero*/
+ hStereoDft_loc->q_hb_nrg_subr = Q31;
+ move16();
hStereoDft_loc->hConfig->force_mono_transmission = 0;
move16();
@@ -682,6 +684,402 @@ void stereo_dft_dec_update_fx(
return;
}
+/*-------------------------------------------------------------------------
+ * stereo_dft_dec_destroy_fx()
+ *
+ * destroy DFT stereo handle
+ *-------------------------------------------------------------------------*/
+
+void stereo_dft_dec_destroy_fx(
+ STEREO_DFT_DEC_DATA_HANDLE *hStereoDft_glob /* i/o: decoder DFT stereo handle */
+)
+{
+ STEREO_DFT_DEC_DATA_HANDLE hStereoDft;
+
+ hStereoDft = *hStereoDft_glob;
+
+ IF( hStereoDft->hConfig != NULL )
+ {
+ free( hStereoDft->hConfig );
+ hStereoDft->hConfig = NULL;
+ }
+
+ IF( hStereoDft->hBpf != NULL )
+ {
+ free( hStereoDft->hBpf );
+ hStereoDft->hBpf = NULL;
+ }
+
+ IF( hStereoDft->hTcxLtpDec != NULL )
+ {
+ free( hStereoDft->hTcxLtpDec );
+ hStereoDft->hTcxLtpDec = NULL;
+ }
+
+ free( hStereoDft );
+ hStereoDft = NULL;
+
+ return;
+}
+
+
+/*-------------------------------------------------------------------------
+ * stereo_dft_dec_analyze_fx()
+ *
+ * DFT analysis on a 20ms frame
+ *-------------------------------------------------------------------------*/
+
+void stereo_dft_dec_analyze_fx(
+ CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
+ const Word32 *input_fx, /* i : input signal q*/
+ Word32 out_DFT_fx[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers q_out_DFT*/
+ const Word16 chan, /* i : channel number Q0*/
+ const Word16 input_frame, /* i : input frame size Q0*/
+ const Word16 output_frame, /* i : output frame size Q0*/
+ const DFT_STEREO_DEC_ANA_TYPE ana_type, /* i : type of signal to analyse */
+ const Word16 k_offset, /* i : offset of DFT Q0*/
+ const Word16 delay, /* i : delay in samples FOR input signal Q0*/
+ Word16 *q,
+ Word16 *q_out_DFT )
+{
+
+ Word16 i, k;
+ STEREO_DFT_DEC_DATA_HANDLE hStereoDft;
+ Word32 *pInput_fx, *pInput_buff_fx;
+ Word32 *mem_fx, input_buff_fx[STEREO_DFT32MS_OVL_MAX + L_FRAME48k];
+ Word32 DFT_fx[STEREO_DFT32MS_N_MAX], *pDFT_out_fx;
+ Word16 NFFT, NFFT_core, ovl, zp;
+ Word16 offset;
+ Word32 fac_fx;
+ const Word16 *trigo_fx, *win_left_fx, *win_right_fx, *win2_fx;
+ Word16 trigo_dec_fx[STEREO_DFT32MS_N_MAX / 2 + 1];
+ Word16 trigo_step;
+ Word32 inputFs;
+ Word16 delay_dec;
+ Word16 mem_size;
+ Word16 ovl2;
+
+ push_wmops( "DFT_analysis" );
+
+ hStereoDft = hCPE->hStereoDft;
+
+ assert( output_frame == STEREO_DFT_NBDIV * hStereoDft->N );
+
+ /*-----------------------------------------------------------------*
+ * Initialization
+ *-----------------------------------------------------------------*/
+
+ IF( EQ_16( input_frame, output_frame ) )
+ {
+ trigo_fx = hStereoDft->dft_trigo_fx;
+ trigo_step = i_mult( hStereoDft->dft_trigo_step, STEREO_DFT_TRIGO_DEC_STEP ); /* Q0 */
+ win_right_fx = hStereoDft->win32ms_fx; /* Q15 */
+ win_left_fx = hStereoDft->win32ms_fx; /* Q15 */
+ win2_fx = hStereoDft->win232ms_fx; /* Q15 */
+
+ test();
+ IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) )
+ {
+ assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" );
+ mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */
+ }
+ ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) )
+ {
+ mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */
+ }
+ ELSE
+ {
+ mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */
+ }
+ }
+ ELSE IF( EQ_16( input_frame, L_FRAME ) )
+ {
+ trigo_fx = hStereoDft->dft_trigo_12k8_fx; /* Q15 */
+ trigo_step = STEREO_DFT_TRIGO_SRATE_12k8_STEP * STEREO_DFT_TRIGO_DEC_STEP;
+ move16();
+ win_right_fx = hStereoDft->win32ms_12k8_fx; /* Q15 */
+ win_left_fx = hStereoDft->win32ms_12k8_fx; /* Q15 */
+ win2_fx = hStereoDft->win232ms_12k8_fx; /* Q15 */
+
+ test();
+ IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) )
+ {
+ assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" );
+ mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */
+ }
+ ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) )
+ {
+ mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */
+ }
+ ELSE
+ {
+ assert( ( chan == 1 ) && "12.8kHz sampling rate only FOR second channel, i.e. residual coding or allpass signal" );
+ mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */
+ }
+ }
+ ELSE IF( EQ_16( input_frame, L_FRAME16k ) )
+ {
+ trigo_fx = hStereoDft->dft_trigo_16k_fx; /* Q15 */
+ trigo_step = STEREO_DFT_TRIGO_SRATE_16k_STEP * STEREO_DFT_TRIGO_DEC_STEP;
+ move16();
+ win_right_fx = hStereoDft->win32ms_16k_fx; /* Q15 */
+ win_left_fx = hStereoDft->win32ms_16k_fx; /* Q15 */
+ win2_fx = hStereoDft->win232ms_16k_fx; /* Q15 */
+
+ test();
+ IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) )
+ {
+ assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" );
+ mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */
+ }
+ ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) )
+ {
+ mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */
+ }
+ ELSE
+ {
+ assert( ( chan == 1 ) && ( hCPE->hStereoDft->hConfig->res_pred_mode == STEREO_DFT_RESPRED_ESF ) && "16kHz sampling rate only FOR second channel with allpass signal" );
+ mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */
+ }
+ }
+ ELSE IF( EQ_16( input_frame, L_FRAME8k ) )
+ {
+ assert( ( chan == 1 ) && "DFT stereo: 8kHz analysis only FOR residual coding" );
+ trigo_fx = hStereoDft->dft_trigo_8k_fx; /* Q15 */
+ trigo_step = STEREO_DFT_TRIGO_SRATE_8k_STEP * STEREO_DFT_TRIGO_DEC_STEP;
+ move16();
+ win_right_fx = hStereoDft->win32ms_8k_fx; /* Q15 */
+ win_left_fx = hStereoDft->win32ms_8k_fx; /* Q15 */
+ win2_fx = hStereoDft->win232ms_8k_fx; /* Q15 */
+ mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */
+ }
+ ELSE
+ {
+ IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error in DFT stereo: sampling rate not supported" );
+ mem_fx = NULL; /* to avoid compilation warning */
+ trigo_fx = NULL; /* to avoid compilation warning */
+ trigo_step = -1; /* to avoid compilation warning */
+ move16();
+ win_right_fx = NULL; /* to avoid compilation warning */
+ win_left_fx = NULL; /* to avoid compilation warning */
+ win2_fx = NULL; /* to avoid compilation warning */
+ }
+
+ inputFs = L_mult0( input_frame, FRAMES_PER_SEC ); /* Q0 */
+ delay_dec = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL_NS );
+ move16();
+ zp = NS2SA_FX2( inputFs, STEREO_DFT32MS_ZP_NS );
+ move16();
+ ovl = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL_NS );
+ move16();
+ NFFT = NS2SA_FX2( inputFs, STEREO_DFT32MS_N_NS );
+ Word16 qfac_fx;
+ fac_fx = BASOP_Util_Divide3232_Scale_newton( hStereoDft->NFFT, NFFT, &qfac_fx ); /* qfac_fx */
+ qfac_fx = sub( 31, qfac_fx );
+ ovl2 = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL2_NS );
+ move16();
+
+ /* Offset FOR the time buffers */
+ assert( ( delay >= -NS2SA( input_frame * FRAMES_PER_SEC, STEREO_DFT_DELAY_DEC_BWE_NS + STEREO_DFT_OVL_NS / 2 ) ) && ( delay <= NS2SA( input_frame * FRAMES_PER_SEC, STEREO_DFT_OVL_NS ) ) );
+ mem_size = add( delay_dec, delay );
+
+ /* Update buffers */
+ Copy32( mem_fx, input_buff_fx, mem_size ); /* Q11 */
+ Copy32( input_fx, input_buff_fx + mem_size, input_frame ); /* q */
+ Copy32( input_buff_fx + input_frame, mem_fx, mem_size ); /* q */
+ pInput_buff_fx = input_buff_fx; /* q */
+
+ test();
+ IF( EQ_16( hCPE->nchan_out, 1 ) && ( hCPE->hStereoDft->hConfig->res_cod_mode == STEREO_DFT_RES_COD_OFF ) )
+ {
+ pop_wmops();
+ return;
+ }
+
+
+ /*-----------------------------------------------------------------*
+ * DFT Analysis: loop over frame
+ *-----------------------------------------------------------------*/
+
+ assert( ( k_offset <= STEREO_DFT_NBDIV ) );
+
+ FOR( i = 0; i < NFFT / 4; i++ )
+ {
+ trigo_dec_fx[i] = trigo_fx[i * trigo_step];
+ move16();
+ trigo_dec_fx[NFFT / 2 - i] = trigo_fx[i * trigo_step];
+ move16();
+ }
+ trigo_dec_fx[NFFT / 4] = trigo_fx[NFFT / 4 * trigo_step];
+ move16();
+
+ FOR( k = 0; k < STEREO_DFT_NBDIV - k_offset; k++ )
+ {
+ set32_fx( DFT_fx, 0, STEREO_DFT32MS_N_MAX );
+ IF( k == 0 )
+ {
+ offset = 0;
+ move16();
+ }
+ ELSE
+ {
+ /* If OVL2 = OVL offset = 10ms */
+ offset = NS2SA_FX2( inputFs, STEREO_DFT32MS_WIN_CENTER_NS - STEREO_DFT32MS_OVL2_NS / 2 );
+ move16();
+ }
+
+ pInput_fx = pInput_buff_fx + offset; /* q */
+ pDFT_out_fx = out_DFT_fx[chan] + i_mult( k, STEREO_DFT32MS_N_MAX ); /* q_out_DFT */
+
+ /*Forwards FFT: L and R*/
+ /* Zero Padding & Flat Portion */
+ Copy32( pInput_fx, DFT_fx + zp, sub( NFFT, i_mult( 2, zp ) ) ); /* q */
+
+ /* Overlapping portions */
+ IF( k == 0 )
+ {
+ FOR( i = 0; i < ovl; i++ )
+ {
+ DFT_fx[i + zp] = Mpy_32_16_1( DFT_fx[i + zp], win_left_fx[STEREO_DFT32MS_STEP * i] ); /* q */
+ move32();
+ }
+ FOR( i = 0; i < ovl2; i++ )
+ {
+ DFT_fx[NFFT - zp - 1 - i] = Mpy_32_16_1( DFT_fx[NFFT - zp - 1 - i], win2_fx[i] ); /* q */
+ move32();
+ }
+ }
+ ELSE
+ {
+ FOR( i = 0; i < ovl2; i++ )
+ {
+ DFT_fx[i + zp] = Mpy_32_16_1( DFT_fx[i + zp], win2_fx[i] ); /* q */
+ move32();
+ }
+ FOR( i = 0; i < ovl; i++ )
+ {
+ DFT_fx[NFFT - zp - i - 1] = Mpy_32_16_1( DFT_fx[NFFT - zp - i - 1], win_right_fx[STEREO_DFT32MS_STEP * i] ); /* q */
+ move32();
+ }
+ }
+ Word16 q_DFT, q_shift, guarded_bits;
+ q_DFT = *q;
+ move16();
+ guarded_bits = find_guarded_bits_fx( NFFT );
+ q_shift = sub( L_norm_arr( DFT_fx, NFFT ), guarded_bits );
+
+ FOR( Word16 j = 0; j < NFFT; j++ )
+ {
+ DFT_fx[j] = L_shl( DFT_fx[j], q_shift ); /* q + q_shift*/
+ move32();
+ }
+
+ q_DFT = add( q_DFT, q_shift );
+
+ rfft_fx( DFT_fx, trigo_dec_fx, NFFT, -1 );
+
+ q_shift = sub( L_norm_arr( DFT_fx, NFFT ), sub( 31, qfac_fx ) );
+ FOR( Word16 j = 0; j < NFFT; j++ )
+ {
+ DFT_fx[j] = L_shl( DFT_fx[j], q_shift ); /* q + q_shift */
+ move32();
+ }
+ q_DFT = add( q_DFT, q_shift );
+ IF( sub( q_out_DFT[chan], q_DFT ) > 0 )
+ {
+ FOR( Word32 j = 0; j < NFFT; j++ )
+ {
+ out_DFT_fx[chan][j] = L_shr( out_DFT_fx[chan][j], sub( q_out_DFT[chan], q_DFT ) ); /* q_DFT */
+ move32();
+ }
+ q_out_DFT[chan] = q_DFT;
+ move16();
+ }
+ ELSE
+ {
+ FOR( Word32 j = 0; j < NFFT; j++ )
+ {
+ DFT_fx[j] = L_shr( DFT_fx[j], sub( q_DFT, q_out_DFT[chan] ) ); /* q_DFT */
+ move32();
+ }
+ q_DFT = q_out_DFT[chan];
+ move16();
+ }
+
+ /*Resampling: filtering+scaling*/
+ test();
+ test();
+ IF( ( ana_type == DFT_STEREO_DEC_ANA_FB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_NOCORE ) )
+ {
+ pDFT_out_fx[0] = L_shl( Mpy_32_32( DFT_fx[0], fac_fx ), sub( 31, qfac_fx ) ); /*DC*/ /* qDFT */
+ move32();
+ IF( EQ_16( NFFT, hStereoDft->NFFT ) ) /*Nyquist*/
+ {
+ pDFT_out_fx[1] = L_shl( Mpy_32_32( DFT_fx[1], fac_fx ), sub( 31, qfac_fx ) ); /* qDFT */
+ move32();
+ }
+ ELSE
+ {
+ pDFT_out_fx[1] = 0;
+ move32();
+ }
+ FOR( i = 2; i < NFFT; i++ )
+ {
+ pDFT_out_fx[i] = L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ); /* qDFT */
+ move32();
+ }
+ FOR( i = NFFT; i < hStereoDft->NFFT; i++ )
+ {
+ pDFT_out_fx[i] = 0; /* qDFT */
+ move32();
+ }
+ }
+ ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) )
+ {
+ pDFT_out_fx[0] = L_sub( pDFT_out_fx[0], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[0], fac_fx ), dft_bpf_weights_fx[0] ), sub( 32, qfac_fx ) ) ); /* qDFT */
+ move32();
+
+ FOR( i = 1; i < STEREO_DFT_BPF_SIZE; i++ )
+ {
+ pDFT_out_fx[2 * i] = L_sub( pDFT_out_fx[2 * i], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[2 * i], fac_fx ), dft_bpf_weights_fx[i] ), sub( 32, qfac_fx ) ) ); /* qDFT */
+ move32();
+ pDFT_out_fx[2 * i + 1] = L_sub( pDFT_out_fx[2 * i + 1], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[2 * i + 1], fac_fx ), dft_bpf_weights_fx[i] ), sub( 32, qfac_fx ) ) ); /* qDFT */
+ move32();
+ }
+ }
+ ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_HB_ADD ) )
+ {
+ NFFT_core = NS2SA_FX2( L_mult0( hCPE->hCoreCoder[0]->L_frame, FRAMES_PER_SEC ), STEREO_DFT32MS_N_NS ); /* Q0 */
+ move16();
+
+ FOR( i = NFFT_core; i < NFFT; i++ )
+ {
+ pDFT_out_fx[i] = L_add( L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[i] ); /* qDFT */
+ move32();
+ }
+ }
+ ELSE
+ {
+ pDFT_out_fx[0] = L_add( pDFT_out_fx[0], L_shl( Mpy_32_32( DFT_fx[0], fac_fx ), sub( 31, qfac_fx ) ) ); /*DC*/ /* qDFT */
+ move32();
+ IF( EQ_16( NFFT, hStereoDft->NFFT ) ) /*Nyquist*/
+ {
+ pDFT_out_fx[1] = L_add( L_shl( Mpy_32_32( DFT_fx[1], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[1] ); /* qDFT */
+ move32();
+ }
+ FOR( i = 2; i < NFFT; i++ )
+ {
+ pDFT_out_fx[i] = L_add( L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[i] ); /* qDFT */
+ move32();
+ }
+ }
+ }
+
+ pop_wmops();
+ return;
+}
+
+
/*-------------------------------------------------------------------------
* stereo_dft_dec_synthesize_fx()
*
diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c
index 90d9c58235bda9d978657307b0547a9e1c8abda4..3fed308b21c3368cd93ec8880bc612d2a9bfde60 100644
--- a/lib_dec/ivas_stereo_dft_plc_fx.c
+++ b/lib_dec/ivas_stereo_dft_plc_fx.c
@@ -188,6 +188,8 @@ Word32 imax_pos_fx(
Word32 posi, y1, y2, y3, y3_y1, y2i;
Word32 ftmp_den1, ftmp_den2;
Word16 q_div_2i, q_div_posi;
+ Word64 W_tmp;
+ Word16 shift1, shift2;
/* Seek the extrema of the parabola P(x) defined by 3 consecutive points so that P([-1 0 1]) = [y1 y2 y3] */
y1 = y[0]; /* Qx */
move32();
@@ -195,9 +197,13 @@ Word32 imax_pos_fx(
move32();
y3 = y[2]; /* Qx */
move32();
- y3_y1 = L_sub( y3, y1 ); /* Qx */
- ftmp_den1 = L_sub( L_add( y1, y3 ), L_shl( y2, 1 ) ); /* Qx */
- ftmp_den2 = L_shl( L_sub( L_sub( L_shl( y2, 1 ), y1 ), y3 ), 1 ); /* Qx */
+ y3_y1 = L_sub( y3, y1 ); /* Qx */
+ W_tmp = W_sub( W_add( y1, y3 ), W_shl( y2, 1 ) ); /* Qx */
+ shift1 = W_norm( W_tmp );
+ ftmp_den1 = W_extract_h( W_shl( W_tmp, shift1 ) ); /* Qx + shift1 - 32 */
+ W_tmp = W_shl( W_sub( W_sub( W_shl( y2, 1 ), y1 ), y3 ), 1 ); /* Qx */
+ shift2 = W_norm( W_tmp );
+ ftmp_den2 = W_extract_h( W_shl( W_tmp, shift2 ) ); /* Qx + shift2 - 32 */
test();
IF( ( ftmp_den2 == 0 ) || ( ftmp_den1 == 0 ) )
@@ -206,6 +212,7 @@ Word32 imax_pos_fx(
}
y2i = Mpy_32_16_1( Mpy_32_16_1( y3_y1, BASOP_Util_Divide3232_Scale( y3_y1, ftmp_den1, &q_div_2i ) ), (Word16) ( 0xF000 ) ); /* q_div_2i */
+ q_div_2i = sub( add( q_div_2i, shift1 ), 32 );
IF( q_div_2i < 0 )
{
y2i = L_shl( y2i, q_div_2i );
@@ -219,6 +226,7 @@ Word32 imax_pos_fx(
}
/* their corresponding normalized locations */
posi = BASOP_Util_Divide3232_Scale( y3_y1, ( ftmp_den2 ), &q_div_posi ); /* q_div_posi */
+ q_div_posi = sub( add( q_div_posi, shift2 ), 32 );
IF( ( q_div_posi != 0 ) )
{
posi = L_shl( posi, q_div_posi );
diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c
index c7bc98566326d456bc85283242ad1137e28fb4c6..772eb2d7d218c7061e3fd9208ac65f818c0ad218 100644
--- a/lib_dec/ivas_stereo_icbwe_dec_fx.c
+++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c
@@ -904,6 +904,9 @@ void stereo_icBWE_dec_fx(
winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */
alpha_fx = winSlope_fx; /* Q15 */
move16();
+#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx
+ Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx );
+#endif
FOR( i = 0; i < winLen_fx; i++ )
{
L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */
@@ -911,10 +914,17 @@ void stereo_icBWE_dec_fx(
tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */
synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */
move32();
+#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx
+ if ( LE_16( alpha_fx, winSlope_fx_ ) )
+ {
+ alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */
+ }
+#else
IF( LE_16( alpha_fx, sub( 32767 /* 1.0 in Q15*/, winSlope_fx ) ) )
{
alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */
}
+#endif
}
FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ )
diff --git a/lib_dec/ivas_stereo_mdct_core_dec_fx.c b/lib_dec/ivas_stereo_mdct_core_dec_fx.c
index 890e5fc9ef6db902a60454e094612449ceac424c..89cb92a4d08c1b9f834610892fdd5ce2dc73c68c 100644
--- a/lib_dec/ivas_stereo_mdct_core_dec_fx.c
+++ b/lib_dec/ivas_stereo_mdct_core_dec_fx.c
@@ -1097,8 +1097,8 @@ static void run_min_stats_fx(
{
arr_tmp = power_spec;
}
- ApplyFdCng_ivas_fx( NULL, 0, arr_tmp, power_spec_q, NULL, NULL, NULL, st, st->bfi, 0 );
- /*=================================================*/
+
+ ApplyFdCng_fx( NULL, 0, arr_tmp, power_spec_q, NULL, NULL, NULL, st, st->bfi, 0 );
}
/* restore VAD (see above) */
diff --git a/lib_dec/ivas_stereo_switching_dec_fx.c b/lib_dec/ivas_stereo_switching_dec_fx.c
index bcf714352d2e72e7f4c890d442651bd05648976f..522e741e82b87d6c3b43800adab58f3b91f170a0 100644
--- a/lib_dec/ivas_stereo_switching_dec_fx.c
+++ b/lib_dec/ivas_stereo_switching_dec_fx.c
@@ -512,7 +512,7 @@ ivas_error stereo_memory_dec_fx(
/* deallocate data structure of the previous CPE mode */
IF( hCPE->hStereoDft != NULL )
{
- stereo_dft_dec_destroy( &( hCPE->hStereoDft ) );
+ stereo_dft_dec_destroy_fx( &( hCPE->hStereoDft ) );
hCPE->hStereoDft = NULL;
}
@@ -684,7 +684,7 @@ ivas_error stereo_memory_dec_fx(
/* deallocate data structure of the previous CPE mode */
IF( hCPE->hStereoDft != NULL )
{
- stereo_dft_dec_destroy( &( hCPE->hStereoDft ) );
+ stereo_dft_dec_destroy_fx( &( hCPE->hStereoDft ) );
hCPE->hStereoDft = NULL;
}
@@ -2351,7 +2351,7 @@ static Word32 ncross_corr_self_fx(
q_prod = sub( 81, add( add( headroom_left_x, headroom_left_y ), q_prod ) );
energy = Sqrt32( energy, &q_prod );
- IF( LT_32( energy, L_shl_sat( 1, sub( 31, q_prod ) ) ) )
+ IF( LE_32( energy, L_shl_sat( 1, sub( 31, q_prod ) ) ) )
{
c_c_fx_return = W_shl_sat_l( c_c_fx, 31 - ( 2 * OUTPUT_Q + 1 ) ); // Q31
}
diff --git a/lib_dec/ivas_tcx_core_dec_fx.c b/lib_dec/ivas_tcx_core_dec_fx.c
index aa5a379e87c316892f9f161dd48749c31e46ede7..0be01f7b88612b359fb0b5b88b1fda3028fdeceb 100644
--- a/lib_dec/ivas_tcx_core_dec_fx.c
+++ b/lib_dec/ivas_tcx_core_dec_fx.c
@@ -875,11 +875,11 @@ void stereo_tcx_core_dec_fx(
{
Word16 buffer[L_FRAME16k];
lerp( signal_outFB_fx, buffer, st->L_frame, hTcxDec->L_frameTCX );
- ApplyFdCng_ivas_fx( buffer, 0 /* Q of buffer */, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 );
+ ApplyFdCng_fx( buffer, 0 /* Q of buffer */, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 );
}
ELSE
{
- ApplyFdCng_ivas_fx( signal_out_fx, 0, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 );
+ ApplyFdCng_fx( signal_out_fx, 0, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 );
}
}
@@ -915,7 +915,7 @@ void stereo_tcx_core_dec_fx(
test();
IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && st->idchan == 0 )
{
- ApplyFdCng_ivas_fx( signal_out_fx, 0, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 );
+ ApplyFdCng_fx( signal_out_fx, 0, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 );
}
}
@@ -923,6 +923,7 @@ void stereo_tcx_core_dec_fx(
return;
}
+
static void stereo_tcx_dec_mode_switch_reconf_ivas_fx(
Decoder_State *st, /* i/o: decoder state structure */
const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/
diff --git a/lib_dec/ivas_td_low_rate_dec_fx.c b/lib_dec/ivas_td_low_rate_dec_fx.c
index 3191a8b4abcdcd54fb80589a75dbfa64a9b3b950..6419f851707619786e1b829b5736688777677897 100644
--- a/lib_dec/ivas_td_low_rate_dec_fx.c
+++ b/lib_dec/ivas_td_low_rate_dec_fx.c
@@ -40,6 +40,13 @@
#include "prot_fx.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
+
+/*-------------------------------------------------------------------*
+ * tdm_low_rate_dec_fx()
+ *
+ * Low-bitrate decoder
+ *-------------------------------------------------------------------*/
+
void tdm_low_rate_dec_fx(
Decoder_State *st, /* i/o: decoder static memory */
Word16 dct_epit[], /* o : GSC excitation in DCT domain Q_exc*/
@@ -127,7 +134,7 @@ void tdm_low_rate_dec_fx(
tmp_nb_bits_tot = sub( tmp_nb_bits_tot, 1 ); /* Q0 */
}
- gsc_dec_ivas_fx( st, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st->coder_type, &last_bin, lsf_new, exc_wo_nf_fx, &st->Q_exc );
+ gsc_dec_fx( st, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st->coder_type, &last_bin, lsf_new, exc_wo_nf_fx, &st->Q_exc );
/*--------------------------------------------------------------------------------------*
* iDCT transform
@@ -188,19 +195,15 @@ void tdm_low_rate_dec_fx(
return;
}
+
/*---------------------------------------------------------------------*
* decod_gen_2sbfr()
*
* Decode generic (GC), 2 subframes mode
*---------------------------------------------------------------------*/
-/*---------------------------------------------------------------------*
- * decod_gen_2sbfr_ivas_fx()
- *
- * Decode generic (GC), 2 subframes mode
- *---------------------------------------------------------------------*/
-void decod_gen_2sbfr_ivas_fx(
- Decoder_State *st, /* i/o: decoder static memory */
+void decod_gen_2sbfr_fx(
+ Decoder_State *st, /* i/o: decoder static memory */
const Word16 sharpFlag, /* i : formant sharpening flag `Q0*/
const Word16 *Aq, /* i : LP filter coefficient Q12*/
Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/
@@ -222,12 +225,12 @@ void decod_gen_2sbfr_ivas_fx(
move32();
Word16 gain_inov = 0; /* Innovation gain */
move16();
- Word32 gc_mem[NB_SUBFR - 1]; /* gain_code from previous subframes */
- Word16 gp_mem[NB_SUBFR - 1]; /* gain_pitch from previous subframes */
+ Word32 gc_mem[NB_SUBFR - 1]; /* gain_code from previous subframes */
+ Word16 gp_mem[NB_SUBFR - 1]; /* gain_pitch from previous subframes */
Word16 voice_fac; /* voicing factor */
Word16 code[2 * L_SUBFR]; /* algebraic codevector */
const Word16 *p_Aq; /* Pointer to frame LP coefficient */
- Word16 *pt_pitch; /* pointer to Word16 pitch */
+ Word16 *pt_pitch; /* pointer to Word16 pitch */
Word16 i_subfr; /* tmp variables */
Word16 L_frame;
Word16 pitch_limit_flag;
@@ -263,7 +266,7 @@ void decod_gen_2sbfr_ivas_fx(
* Decode pitch lag
*----------------------------------------------------------------------*/
- *pt_pitch = pit_decode_ivas_fx( st, st->core_brate, 0, L_frame, i_subfr, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, 2 * L_SUBFR, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); /* Q6 */
+ *pt_pitch = pit_decode_fx( st, st->core_brate, 0, L_frame, i_subfr, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, 2 * L_SUBFR, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); /* Q6 */
test();
test();
@@ -295,7 +298,7 @@ void decod_gen_2sbfr_ivas_fx(
* Estimate spectrum tilt and voicing
*--------------------------------------------------------------*/
- gain_dec_lbr_ivas_fx( st, GENERIC, i_subfr, code, &gain_pit, &gain_code, &gain_inov, &norm_gain_code, gc_mem, gp_mem, 2 * L_SUBFR );
+ gain_dec_lbr_fx( st, GENERIC, i_subfr, code, &gain_pit, &gain_code, &gain_inov, &norm_gain_code, gc_mem, gp_mem, 2 * L_SUBFR );
st->tilt_code_fx = est_tilt_ivas_fx( exc + i_subfr, gain_pit, code, gain_code, &voice_fac, st->Q_exc, 2 * L_SUBFR, 0 ); /* Q15 */
move16();
@@ -312,10 +315,12 @@ void decod_gen_2sbfr_ivas_fx(
Word16 gain_code16 = round_fx( L_shl( gain_code, st->Q_exc ) ); /*Q_exc*/
Acelp_dec_total_exc( exc, exc2, gain_code16, gain_pit, i_subfr, code, 2 * L_SUBFR );
+
/*-----------------------------------------------------------------*
* Prepare TBE excitation
*-----------------------------------------------------------------*/
- prep_tbe_exc_ivas_fx( L_frame, 2 * L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR /*i_subfr / L_SUBFR*/], bwe_exc, 0, NULL, st->Q_exc, T0, T0_frac, GENERIC, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag );
+
+ prep_tbe_exc_fx( L_frame, 2 * L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR /*i_subfr / L_SUBFR*/], bwe_exc, 0, NULL, st->Q_exc, T0, T0_frac, GENERIC, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag );
voice_factors[i_subfr / L_SUBFR + 1] = voice_factors[i_subfr / L_SUBFR /*i_subfr / L_SUBFR*/]; /* Q15 */
move16();
@@ -323,6 +328,7 @@ void decod_gen_2sbfr_ivas_fx(
* Excitation enhancements (update of total excitation signal)
* called twice because adapting it to double the subfr length would need lot of modifications
*----------------------------------------------------------------*/
+
enhancer_ivas_fx2( st->core_brate, 0, GENERIC, i_subfr, L_frame, voice_fac, st->stab_fac_fx, norm_gain_code, gain_inov, &st->gc_threshold_fx, code, exc2, gain_pit, &st->dm_fx, st->Q_exc );
enhancer_ivas_fx2( st->core_brate, 0, GENERIC, i_subfr, L_frame, voice_fac, st->stab_fac_fx, norm_gain_code, gain_inov, &st->gc_threshold_fx, code + L_SUBFR, exc2 + L_SUBFR, gain_pit, &st->dm_fx, st->Q_exc );
diff --git a/lib_dec/jbm_jb4_circularbuffer.c b/lib_dec/jbm_jb4_circularbuffer_fx.c
similarity index 100%
rename from lib_dec/jbm_jb4_circularbuffer.c
rename to lib_dec/jbm_jb4_circularbuffer_fx.c
diff --git a/lib_dec/jbm_jb4_inputbuffer.c b/lib_dec/jbm_jb4_inputbuffer_fx.c
similarity index 100%
rename from lib_dec/jbm_jb4_inputbuffer.c
rename to lib_dec/jbm_jb4_inputbuffer_fx.c
diff --git a/lib_dec/jbm_jb4_jmf.c b/lib_dec/jbm_jb4_jmf_fx.c
similarity index 100%
rename from lib_dec/jbm_jb4_jmf.c
rename to lib_dec/jbm_jb4_jmf_fx.c
diff --git a/lib_dec/jbm_jb4sb.c b/lib_dec/jbm_jb4sb_fx.c
similarity index 100%
rename from lib_dec/jbm_jb4sb.c
rename to lib_dec/jbm_jb4sb_fx.c
diff --git a/lib_dec/jbm_pcmdsp_apa.c b/lib_dec/jbm_pcmdsp_apa_fx.c
similarity index 100%
rename from lib_dec/jbm_pcmdsp_apa.c
rename to lib_dec/jbm_pcmdsp_apa_fx.c
diff --git a/lib_dec/jbm_pcmdsp_similarityestimation.c b/lib_dec/jbm_pcmdsp_similarityestimation_fx.c
similarity index 100%
rename from lib_dec/jbm_pcmdsp_similarityestimation.c
rename to lib_dec/jbm_pcmdsp_similarityestimation_fx.c
diff --git a/lib_dec/jbm_pcmdsp_window.c b/lib_dec/jbm_pcmdsp_window_fx.c
similarity index 100%
rename from lib_dec/jbm_pcmdsp_window.c
rename to lib_dec/jbm_pcmdsp_window_fx.c
diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h
index 999e15328b57e9f7ff485dacb6ac7610cc476840..28b8594fe602085389fac17b0af3d57c0fd31961 100644
--- a/lib_dec/lib_dec.h
+++ b/lib_dec/lib_dec.h
@@ -144,7 +144,6 @@ ivas_error IVAS_DEC_GetSamples(
bool *needNewFrame /* o : indication that the decoder needs a new frame */
);
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_error IVAS_DEC_GetSplitBinauralBitstream(
IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
Word16 *pcmBuf_out, /* o : output synthesis signal for BINAURAL_SPLIT_PCM */
@@ -158,14 +157,10 @@ ivas_error IVAS_DEC_GetSplitRendBitstreamHeader(
IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */
ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
Word16 *pIsar_frame_size_ms, /* o: pointer to isar frame size setting */
-#endif
Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
,
Word16 *pLc3plusHighRes /* o: pointer to LC3plus High-Res setting */
-#endif
);
/*! r: decoder error code */
@@ -183,7 +178,6 @@ int16_t IVAS_DEC_is_split_rendering_enabled(
int16_t IVAS_DEC_is_split_rendering_coded_out(
IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */
);
-#endif
/*! r: error code */
ivas_error IVAS_DEC_GetObjectMetadata(
@@ -205,12 +199,8 @@ ivas_error IVAS_DEC_FeedHeadTrackData(
IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */
IVAS_VECTOR3 Pos, /* i : listener position */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
const Word16 subframe_idx, /* i : subframe index */
const ISAR_SPLIT_REND_ROT_AXIS rot_axis /* i : external control for rotation axis for split rendering */
-#else
- const Word16 subframe_idx /* i : subframe index */
-#endif
);
/*! r: error code */
@@ -287,12 +277,10 @@ ivas_error IVAS_DEC_EnableVoIP(
const IVAS_DEC_INPUT_FORMAT inputFormat /* i : format of the input bitstream */
);
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*! r: error code */
ivas_error IVAS_DEC_EnableSplitRendering(
IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */
);
-#endif
ivas_error IVAS_DEC_SetRenderFramesize(
IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
@@ -358,27 +346,33 @@ ivas_error IVAS_DEC_FeedCustomLsData(
);
/*! r: error code */
-ivas_error IVAS_DEC_GetHrtfHandle(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_DEC_HRTF_HANDLE *hHrtfTD /* o : HRTF handle */
+ivas_error IVAS_DEC_GetHrtfHandle(
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */
);
/*! r: error code */
ivas_error IVAS_DEC_GetHrtfCRendHandle(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* o : Set of HRTF handle */
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */
);
ivas_error IVAS_DEC_GetHrtfFastConvHandle(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */
);
ivas_error IVAS_DEC_GetHrtfParamBinHandle(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o : Parametric binauralizer HRTF handle */
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */
);
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ivas_error IVAS_DEC_GetHrtfStatisticsHandle(
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */
+);
+#endif
/*! r: error code*/
ivas_error IVAS_DEC_GetRenderConfig(
diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c
index 95d599d6dfc5bb5fd821abe181ad7ed106086eee..551a20c0fa51196a7e679b46ef848874fbd66cfb 100644
--- a/lib_dec/lib_dec_fx.c
+++ b/lib_dec/lib_dec_fx.c
@@ -1,4 +1,4 @@
-/******************************************************************************************************
+/******************************************************************************************************
(C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
@@ -114,11 +114,9 @@ static ivas_error IVAS_DEC_RendererFeedTcSamples( IVAS_DEC_HANDLE hIvasDec, cons
static ivas_error IVAS_DEC_GetRenderedSamples( IVAS_DEC_HANDLE hIvasDec, const UWord16 nSamplesForRendering, UWord16 *nSamplesRendered, UWord16 *nSamplesAvailableNext, Word16 *pcmBuf );
static ivas_error IVAS_DEC_GetBufferedNumberOfSamples( IVAS_DEC_HANDLE hIvasDec, Word16 *nSamplesBuffered );
static Word16 get_render_frame_size_ms( IVAS_RENDER_FRAMESIZE render_framesize );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
static ivas_error isar_set_split_rend_setup( ISAR_DEC_SPLIT_REND_WRAPPER *hSplitBinRend, const ISAR_SPLIT_REND_CONFIG_DATA *hSplitBinConfig, const COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, ISAR_SPLIT_REND_BITS_DATA *splitRendBits );
static ivas_error ivas_create_handle_isar( ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE *hSplitBinRend_out );
static void ivas_destroy_handle_isar( ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE *hSplitBinRend_out );
-#endif
/*---------------------------------------------------------------------*
* IVAS_DEC_Open()
@@ -276,7 +274,6 @@ ivas_error IVAS_DEC_Open(
return IVAS_ERR_WRONG_PARAMS;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*-------------------------------------------------------------------------*
* isar_set_split_rend_setup()
*
@@ -296,10 +293,8 @@ static ivas_error isar_set_split_rend_setup(
splitRendBits->codec = ISAR_SPLIT_REND_CODEC_DEFAULT;
splitRendBits->pose_correction = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE;
splitRendBits->codec_frame_size_ms = 0;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
splitRendBits->isar_frame_size_ms = 0;
splitRendBits->lc3plus_highres = 0;
-#endif
if ( ( hSplitBinRend->hMultiBinCldfbData = (ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA ) ) ) == NULL )
{
@@ -315,7 +310,6 @@ static ivas_error isar_set_split_rend_setup(
return IVAS_ERR_OK;
}
-#endif
/*---------------------------------------------------------------------*
* init_decoder_config()
@@ -338,10 +332,8 @@ static void init_decoder_config(
hDecoderConfig->Opt_non_diegetic_pan = 0;
hDecoderConfig->non_diegetic_pan_gain_fx = 0; // Q15
hDecoderConfig->Opt_tsm = 0;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hDecoderConfig->Opt_Limiter = 1;
move16();
-#endif
hDecoderConfig->Opt_delay_comp = 0;
hDecoderConfig->Opt_ExternalOrientation = 0;
hDecoderConfig->Opt_dpid_on = 0;
@@ -388,10 +380,8 @@ void IVAS_DEC_Close(
( *phIvasDec )->hVoIP = NULL;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/* destroy Split binaural renderer (ISAR) handle */
ivas_destroy_handle_isar( &( *phIvasDec )->st_ivas->hSplitBinRend );
-#endif
IF( ( *phIvasDec )->st_ivas )
{
@@ -578,13 +568,11 @@ ivas_error IVAS_DEC_Configure(
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
hDecoderConfig->Opt_Headrotation = TRUE;
move16();
}
-#endif
/* Set decoder parameters to initial values */
IF( NE_32( ( error = ivas_init_decoder_front( st_ivas ) ), IVAS_ERR_OK ) )
@@ -592,7 +580,6 @@ ivas_error IVAS_DEC_Configure(
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/* create ISAR handle */
IF( EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
@@ -601,7 +588,6 @@ ivas_error IVAS_DEC_Configure(
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for ISAR handle" );
}
}
-#endif
if ( EQ_16( hIvasDec->mode, IVAS_DEC_MODE_EVS ) )
{
@@ -624,7 +610,6 @@ ivas_error IVAS_DEC_Configure(
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*---------------------------------------------------------------------*
* IVAS_DEC_EnableSplitRendering( )
*
@@ -660,7 +645,6 @@ ivas_error IVAS_DEC_EnableSplitRendering(
return error;
}
-#endif
/*---------------------------------------------------------------------*
* get_render_framesize_ms( )
@@ -1123,7 +1107,6 @@ ivas_error IVAS_DEC_GetSamples(
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*----------------------------------------------------------------*
* Binaural split rendering setup
*----------------------------------------------------------------*/
@@ -1135,7 +1118,6 @@ ivas_error IVAS_DEC_GetSamples(
isar_set_split_rend_ht_setup_fx( &hIvasDec->st_ivas->hSplitBinRend->splitrend, hIvasDec->st_ivas->hCombinedOrientationData->Quaternions, hIvasDec->st_ivas->hCombinedOrientationData->Rmat_fx );
}
}
-#endif
hIvasDec->updateOrientation = false;
move16();
@@ -1299,7 +1281,6 @@ return IVAS_ERR_OK;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*---------------------------------------------------------------------*
* IVAS_DEC_GetSplitBinauralBitstream( )
*
@@ -1520,9 +1501,7 @@ IVAS_DEC_GetSplitBinauralBitstream(
Quaternion,
st_ivas->hRenderConfig->split_rend_config.splitRendBitRate,
st_ivas->hRenderConfig->split_rend_config.codec,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
st_ivas->hRenderConfig->split_rend_config.isar_frame_size_ms,
-#endif
st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms,
splitRendBits,
Cldfb_RealBuffer_Binaural,
@@ -1559,7 +1538,6 @@ IVAS_DEC_GetSplitBinauralBitstream(
return error;
}
-#endif
/*---------------------------------------------------------------------*
@@ -2227,15 +2205,11 @@ ivas_error IVAS_DEC_GetMasaMetadata(
*---------------------------------------------------------------------*/
ivas_error IVAS_DEC_FeedHeadTrackData(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */
- IVAS_VECTOR3 Pos, /* i : listener position */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */
+ IVAS_VECTOR3 Pos, /* i : listener position */
const Word16 subframe_idx, /* i : subframe index */
const ISAR_SPLIT_REND_ROT_AXIS rot_axis /* i : external control for rotation axis for split rendering */
-#else
- const Word16 subframe_idx /* i : subframe index */
-#endif
)
{
HEAD_TRACK_DATA_HANDLE hHeadTrackData;
@@ -2256,19 +2230,12 @@ ivas_error IVAS_DEC_FeedHeadTrackData(
/* Move head-tracking data to the decoder handle */
/* check for Euler angle signaling */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/* check for Euler angle signaling */
IF( EQ_32( orientation.w_fx, L_negate( 12582912 ) ) && EQ_16( orientation.q_fact, Q22 ) )
{
Euler2Quat_fx( deg2rad_fx( orientation.x_fx ), deg2rad_fx( orientation.y_fx ), deg2rad_fx( orientation.z_fx ), &orientation );
modify_Quat_q_fx( &orientation, &orientation, Q29 );
}
-#else
- IF( EQ_32( orientation.w_fx, -1610612736 /* -3.0f in Q29 */ ) )
- {
- Euler2Quat_fx( deg2rad_fx( orientation.x_fx ), deg2rad_fx( orientation.y_fx ), deg2rad_fx( orientation.z_fx ), &orientation );
- }
-#endif
Word32 updateRate_fx = 1677721600; // value is 200 in Q23
move32();
@@ -2306,10 +2273,8 @@ ivas_error IVAS_DEC_FeedHeadTrackData(
move32();
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hHeadTrackData->sr_pose_pred_axis = rot_axis;
move32();
-#endif
hIvasDec->updateOrientation = true;
move16();
@@ -2511,8 +2476,8 @@ ivas_error IVAS_DEC_FeedCustomLsData(
*---------------------------------------------------------------------*/
ivas_error IVAS_DEC_GetHrtfHandle(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_DEC_HRTF_HANDLE *hHrtfTD /* o : HRTF handle */
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */
)
{
test();
@@ -2522,7 +2487,7 @@ ivas_error IVAS_DEC_GetHrtfHandle(
return IVAS_ERR_UNEXPECTED_NULL_POINTER;
}
- *hHrtfTD = hIvasDec->st_ivas->hHrtfTD;
+ *hHrtfTD = &hIvasDec->st_ivas->hHrtfTD;
return IVAS_ERR_OK;
}
@@ -2535,8 +2500,8 @@ ivas_error IVAS_DEC_GetHrtfHandle(
*---------------------------------------------------------------------*/
ivas_error IVAS_DEC_GetHrtfCRendHandle(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* o : Set of HRTF handle */
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */
)
{
test();
@@ -2546,7 +2511,7 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle(
return IVAS_ERR_WRONG_PARAMS;
}
- *hSetOfHRTF = hIvasDec->st_ivas->hSetOfHRTF;
+ *hSetOfHRTF = &hIvasDec->st_ivas->hSetOfHRTF;
return IVAS_ERR_OK;
}
@@ -2559,8 +2524,8 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle(
*---------------------------------------------------------------------*/
ivas_error IVAS_DEC_GetHrtfFastConvHandle(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */
)
{
test();
@@ -2570,7 +2535,7 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle(
return IVAS_ERR_WRONG_PARAMS;
}
- *hHrtfFastConv = hIvasDec->st_ivas->hHrtfFastConv;
+ *hHrtfFastConv = &hIvasDec->st_ivas->hHrtfFastConv;
return IVAS_ERR_OK;
}
@@ -2583,8 +2548,8 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle(
*---------------------------------------------------------------------*/
ivas_error IVAS_DEC_GetHrtfParamBinHandle(
- IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
- IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o : Parametric binauralizer HRTF handle */
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */
)
{
test();
@@ -2594,10 +2559,33 @@ ivas_error IVAS_DEC_GetHrtfParamBinHandle(
return IVAS_ERR_WRONG_PARAMS;
}
- *hHrtfParambin = hIvasDec->st_ivas->hHrtfParambin;
+ *hHrtfParambin = &hIvasDec->st_ivas->hHrtfParambin;
+
+ return IVAS_ERR_OK;
+}
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+/*---------------------------------------------------------------------*
+ * IVAS_DEC_GetHrtfStatisticsHandle( )
+ *
+ *
+ *---------------------------------------------------------------------*/
+
+ivas_error IVAS_DEC_GetHrtfStatisticsHandle(
+ IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
+ IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */
+)
+{
+ if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hHrtfStatistics == NULL )
+ {
+ return IVAS_ERR_WRONG_PARAMS;
+ }
+
+ *hHrtfStatistics = &hIvasDec->st_ivas->hHrtfStatistics;
return IVAS_ERR_OK;
}
+#endif
/*---------------------------------------------------------------------*
* copyRendererConfigStruct( )
@@ -2625,23 +2613,18 @@ static ivas_error copyRendererConfigStruct(
Copy32( hRCin->roomAcoustics.pAcoustic_dsr_fx, hRCout->roomAcoustics.pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX ); // Q30
Copy( hRCin->directivity_fx, hRCout->directivity_fx, 3 * MAX_NUM_OBJECTS );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hRCout->split_rend_config.splitRendBitRate = SPLIT_REND_768k;
hRCout->split_rend_config.dof = 3;
hRCout->split_rend_config.hq_mode = 0;
hRCout->split_rend_config.codec_delay_ms = 0;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
hRCout->split_rend_config.isar_frame_size_ms = 20;
move16();
-#endif
hRCout->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */
hRCout->split_rend_config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT;
hRCout->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB;
hRCout->split_rend_config.rendererSelection = hRCin->split_rend_config.rendererSelection;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
hRCout->split_rend_config.lc3plus_highres = hRCin->split_rend_config.lc3plus_highres;
move16();
-#endif
move32();
move16();
move16();
@@ -2650,7 +2633,6 @@ static ivas_error copyRendererConfigStruct(
move32();
move32();
move32();
-#endif
hRCout->roomAcoustics.use_er = hRCin->roomAcoustics.use_er;
hRCout->roomAcoustics.lowComplexity = hRCin->roomAcoustics.lowComplexity;
@@ -2716,9 +2698,7 @@ ivas_error IVAS_DEC_FeedRenderConfig(
)
{
RENDER_CONFIG_HANDLE hRenderConfig;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_error error;
-#endif
test();
test();
@@ -2757,7 +2737,6 @@ ivas_error IVAS_DEC_FeedRenderConfig(
Copy( renderConfig.directivity_fx, hRenderConfig->directivity_fx, 3 * MAX_NUM_OBJECTS );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hRenderConfig->split_rend_config = renderConfig.split_rend_config;
/* Overwrite any pose correction settings if 0 DOF (no pose correction) was selected */
@@ -2770,7 +2749,6 @@ ivas_error IVAS_DEC_FeedRenderConfig(
{
return error;
}
-#endif
return IVAS_ERR_OK;
}
@@ -2826,13 +2804,8 @@ ivas_error IVAS_DEC_GetDelay(
}
move32();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
nSamples[1] = NS2SA_FX2( hDecoderConfig->output_Fs, get_delay_fx( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0], hDecoderConfig->output_config ) );
move16();
-#else
- nSamples[1] = NS2SA_FX2( hDecoderConfig->output_Fs, get_delay_fx( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0] ) );
- move16();
-#endif
nSamples[2] = extract_l( W_round64_L( W_mult0_32_32( L_shl( st_ivas->binaural_latency_ns, 1 ), out_fs_fx ) ) );
move16();
nSamples[0] = add( nSamples[1], nSamples[2] );
@@ -2998,8 +2971,17 @@ ivas_error IVAS_DEC_VoIP_FeedFrame(
return IVAS_ERR_INVALID_BITSTREAM;
}
- /* check if frame contains a partial copy and get its offset */
- evs_dec_previewFrame( au, auSize, &partialCopyFrameType, &partialCopyOffset );
+
+ partialCopyFrameType = 0;
+ move16();
+ partialCopyOffset = 0;
+ move16();
+
+ IF( EQ_16( hIvasDec->mode, (Word16) IVAS_DEC_MODE_EVS ) )
+ {
+ /* check if frame contains a partial copy and get its offset */
+ evs_dec_previewFrame( au, auSize, &partialCopyFrameType, &partialCopyOffset );
+ }
/* create data unit for primary copy in the frame */
dataUnit = JB4_AllocDataUnit( hIvasDec->hVoIP->hJBM );
@@ -3651,11 +3633,7 @@ static ivas_error printConfigInfo_dec(
test();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) )
-#else
- IF( ( EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) )
-#endif
{
fprintf( stdout, "Render framesize: %dms\n", get_render_frame_size_ms( st_ivas->hDecoderConfig->render_framesize ) );
}
@@ -4050,7 +4028,6 @@ static ivas_error IVAS_DEC_VoIP_reconfigure(
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*---------------------------------------------------------------------*
* IVAS_DEC_GetSplitRendBitstreamHeader()
*
@@ -4062,15 +4039,10 @@ IVAS_DEC_GetSplitRendBitstreamHeader(
IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */
ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */
ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- Word16 *pIsar_frame_size_ms, /* o: pointer to isar frame size setting */
-#endif
- Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
+ Word16 *pIsar_frame_size_ms, /* o: pointer to isar frame size setting */
+ Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */
,
- Word16 *pLc3plusHighRes
-#endif
-)
+ Word16 *pLc3plusHighRes )
{
if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL )
{
@@ -4080,10 +4052,8 @@ IVAS_DEC_GetSplitRendBitstreamHeader(
*pCodec = hIvasDec->st_ivas->hRenderConfig->split_rend_config.codec;
*pCodec_frame_size_ms = hIvasDec->st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms;
*poseCorrection = hIvasDec->st_ivas->hRenderConfig->split_rend_config.poseCorrectionMode;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
*pIsar_frame_size_ms = hIvasDec->st_ivas->hRenderConfig->split_rend_config.isar_frame_size_ms;
*pLc3plusHighRes = hIvasDec->st_ivas->hRenderConfig->split_rend_config.lc3plus_highres;
-#endif
return IVAS_ERR_OK;
}
@@ -4261,4 +4231,3 @@ Word16 IVAS_DEC_is_split_rendering_coded_out(
return isSplitCoded;
}
-#endif
diff --git a/lib_dec/lsf_dec_fx.c b/lib_dec/lsf_dec_fx.c
index 21e8705f3aa64d7b7efcb4a8b7b929fbfe49a626..913543db8c6b90d0f51beb13a097845f34b0b746 100644
--- a/lib_dec/lsf_dec_fx.c
+++ b/lib_dec/lsf_dec_fx.c
@@ -8,9 +8,11 @@
#include "rom_com.h" /* Static table prototypes */
#include "prot_fx.h" /* Function prototypes */
#include "ivas_prot_fx.h"
+
/*-------------------------------------------------------------------*
* Local functions
*-------------------------------------------------------------------*/
+
static void dqlsf_CNG_fx( Decoder_State *st_fx, Word16 *lsf_q );
/*--------------------------------------------------------------------------------------*
@@ -88,7 +90,6 @@ static void dqlsf_CNG_fx(
/* _ (Word16*) lsp_new : LP filter coefficient Q15 */
/* _ (Word16*) lsp_mid : LP filter coefficient Q15 */
/*---------------------------------------------------------------------------*/
-
/* _ (Word16[]) st_fx->lsf_adaptive_mean_fx : FEC - adaptive mean LSF */
/* vector for FEC Q(x2.56) */
/* _ (Word16[]) st_fx->mem_AR_fx : AR memory of LSF quantizer */
@@ -100,269 +101,15 @@ static void dqlsf_CNG_fx(
/*===========================================================================*/
void lsf_dec_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- const Word16 tc_subfr, /* i : TC subframe index Q0*/
- Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/
- Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/
- Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/
- Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/
- Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/
- const Word16 tdm_low_rate_mode /* i : secondary channel low rate mode flag Q0*/
- ,
- const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/
-)
-{
- Word16 i;
- Word16 no_param_lpc;
- Word16 param_lpc[NPRM_LPC_NEW];
- Word32 L_tmp;
- Word16 nBits = 0;
- move16();
- Word16 tmp_old[M + 1], tmp_new[M + 1];
- Word16 enr_old = 0, enr_new = 0;
- move16();
- move16();
- Word16 lsf_diff, coder_type;
-
- /* initialize */
- coder_type = st_fx->coder_type;
- if ( EQ_32( st_fx->core_brate, SID_2k40 ) )
- {
- coder_type = INACTIVE; /* Q0 */
- move16();
- }
- test();
- if ( EQ_16( coder_type, AUDIO ) && st_fx->GSC_IVAS_mode > 0 )
- {
- coder_type = GENERIC; /* Q0 */
- move16();
- }
- no_param_lpc = 0;
- nBits = 0;
- move16();
- move16();
-
- /* Find the number of bits for LSF quantization */
- IF( EQ_32( st_fx->core_brate, SID_2k40 ) )
- {
- nBits = LSF_BITS_CNG; /* Q0 */
- move16();
- }
- ELSE
- {
- test();
- IF( st_fx->nelp_mode_dec == 0 && st_fx->ppp_mode_dec == 0 )
- {
- nBits = st_fx->acelp_cfg.lsf_bits; /* Q0 */
- move16();
- }
- ELSE IF( EQ_16( st_fx->nelp_mode_dec, 1 ) )
- {
- IF( EQ_16( coder_type, UNVOICED ) )
- {
- nBits = 30; /* Q0 */
- move16();
- if ( st_fx->bwidth == NB )
- {
- nBits = 32; /* Q0 */
- move16();
- }
- }
- }
- ELSE IF( EQ_16( st_fx->ppp_mode_dec, 1 ) )
- {
- nBits = 26; /* Q0 */
- move16();
- }
- }
-
- /* LSF de-quantization */
- lsf_end_dec_fx( st_fx, 0, coder_type, st_fx->bwidth, nBits, lsf_new, param_lpc, LSF_Q_prediction, &no_param_lpc,
- tdm_lsfQ_PCh );
-
- /* convert quantized LSFs to LSPs */
-
- lsf2lsp_fx( lsf_new, lsp_new, M, st_fx->sr_core );
- /* set seed_acelp used in UC mode */
- test();
- IF( EQ_16( coder_type, UNVOICED ) && GT_16( st_fx->element_mode, EVS_MONO ) )
- {
- st_fx->seed_acelp = 0;
- move16();
- FOR( i = no_param_lpc - 1; i >= 0; i-- )
- {
- /* rightshift before *seed_acelp+param_lpc[i] to avoid overflows*/
- st_fx->seed_acelp = extract_l( L_add( imult3216( 31821L /* Q0 */, add( shr( ( st_fx->seed_acelp ), 1 ), param_lpc[i] ) ), 13849L /* Q0 */ ) ); /* Q0 */
- move16();
- }
- }
- IF( EQ_32( st_fx->core_brate, SID_2k40 ) )
- {
- /* return if SID frame (conversion to A(z) done in the calling function) */
- return;
- }
-
- /*-------------------------------------------------------------------------------------*
- * FEC - update adaptive LSF mean vector
- *-------------------------------------------------------------------------------------*/
-
- FOR( i = 0; i < M; i++ )
- {
- L_tmp = L_mult( lsf_new[i], 10922 ); /*Q(x2.56+16)*/
- L_tmp = L_mac( L_tmp, st_fx->lsfoldbfi1_fx[i], 10922 ); /*Q(x2.56+16)*/
- L_tmp = L_mac( L_tmp, st_fx->lsfoldbfi0_fx[i], 10922 ); /*Q(x2.56+16)*/
- st_fx->lsf_adaptive_mean_fx[i] = round_fx( L_tmp ); /*Q(x2.56)*/
- move16();
- }
-
- test();
- test();
- IF( ( st_fx->prev_bfi && ( EQ_16( coder_type, TRANSITION ) ) && ( EQ_16( tc_subfr, sub( st_fx->L_frame, L_SUBFR ) ) ) ) )
- {
- lsf_diff = 1205;
- move16(); /*int_fs / (float)(2*(M+1)); = 470.588 -> 1205 in Q2.56 */
- if ( EQ_16( st_fx->L_frame, L_FRAME ) )
- {
- lsf_diff = 964;
- move16(); /*int_fs / (float)(2*(M+1)); = 376.47 -> 964 in Q2.56 */
- }
- st_fx->lsf_old_fx[0] = lsf_diff;
- move16();
-
- FOR( i = 1; i < M; i++ )
- {
- st_fx->lsf_old_fx[i] = add( st_fx->lsf_old_fx[i - 1], lsf_diff ); /* Q2.56 */
- move16();
- }
- lsf2lsp_fx( st_fx->lsf_old_fx, st_fx->lsp_old_fx, M, st_fx->sr_core );
- }
- /*-------------------------------------------------------------------------------------*
- * Mid-frame LSF decoding
- * LSP interpolation and conversion of LSPs to A(z)
- *-------------------------------------------------------------------------------------*/
- IF( st_fx->rate_switching_reset )
- {
- /*extrapolation in case of unstable LSF convert*/
- Copy( lsp_new, st_fx->lsp_old_fx, M ); /* Q15 */
- Copy( lsf_new, st_fx->lsf_old_fx, M ); /* Q2.56 */
- }
- {
- /* Mid-frame LSF decoding */
- lsf_mid_dec_fx( st_fx, lsp_new, coder_type, lsp_mid );
- }
- test();
- test();
- IF( !( st_fx->prev_bfi && ( EQ_16( coder_type, TRANSITION ) ) && ( EQ_16( tc_subfr, sub( st_fx->L_frame, L_SUBFR ) ) ) ) )
- {
- IF( st_fx->prev_bfi )
- {
- /* check, if LSP interpolation can be relaxed */
- E_LPC_f_lsp_a_conversion( st_fx->lsp_old_fx, tmp_old, M );
- enr_old = Enr_1_Az_fx( tmp_old, 2 * L_SUBFR ); /* Q3 */
-
- E_LPC_f_lsp_a_conversion( lsp_new, tmp_new, M );
- enr_new = Enr_1_Az_fx( tmp_new, 2 * L_SUBFR ); /* Q3 */
-
- IF( LT_16( enr_new, mult_r( 9830 /*0.3 Q15*/, enr_old ) ) )
- {
- /* OLD CODE : if( st->safety_net == 1), replaced with a decision similar to MODE2 */
- st_fx->relax_prev_lsf_interp = -1;
- move16();
- test();
- test();
- test();
- test();
- if ( st_fx->clas_dec == UNVOICED_CLAS || EQ_16( st_fx->clas_dec, SIN_ONSET ) || st_fx->clas_dec == INACTIVE_CLAS || EQ_16( coder_type, GENERIC ) || EQ_16( coder_type, TRANSITION ) )
- {
- st_fx->relax_prev_lsf_interp = 1;
- move16();
- }
- }
- }
- }
- test();
- IF( EQ_16( st_fx->last_core, HQ_CORE ) && st_fx->core == ACELP_CORE )
- {
- /* update old LSPs/LSFs in case of HQ->ACELP core switching */
- Copy( lsp_mid, st_fx->lsp_old_fx, M ); /* Q15 */
- lsp2lsf_fx( lsp_mid, st_fx->lsf_old_fx, M, st_fx->sr_core ); /* Q15 */
- }
- test();
- IF( EQ_16( tdm_low_rate_mode, 1 ) && GT_16( coder_type, UNVOICED ) )
- {
- // PMT("To be verified")
- IF( EQ_16( st_fx->active_cnt, 1 ) )
- {
- Copy( lsp_mid, st_fx->lsp_old_fx, M ); /* Q15 */
- lsp2lsf_fx( lsp_mid, st_fx->lsf_old_fx, M, st_fx->sr_core ); /* Q15 */
- Copy( lsp_new, lsp_mid, M ); /* Q15 */
- }
-
- /* LSP interpolation and conversion of LSPs to A(z) - two-subframe mode */
- int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid, lsp_new, Aq, M, -2 );
- }
- ELSE
- {
- /* LSP interpolation and conversion of LSPs to A(z) */
- int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid, lsp_new, Aq, M, st_fx->relax_prev_lsf_interp );
- }
- /*------------------------------------------------------------------*
- * Check LSF stability (distance between old LSFs and current LSFs)
- *------------------------------------------------------------------*/
-
- IF( st_fx->element_mode == EVS_MONO )
- {
- st_fx->stab_fac_fx = lsf_stab_fx( lsf_new, st_fx->lsf_old_fx, 0, st_fx->L_frame ); /*Q15*/
- move16();
- }
- ELSE
- {
- st_fx->stab_fac_fx = lsf_stab_ivas_fx( lsf_new, st_fx->lsf_old_fx, 0, st_fx->L_frame ); /* Q15 */
- move16();
- }
-
- return;
-}
-
-/*===========================================================================*/
-/* FUNCTION : lsf_dec_ivas_fx() */
-/*---------------------------------------------------------------------------*/
-/* PURPOSE : LSF decoder */
-/*---------------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ (Struct) st_fx : decoder static memory */
-/* _ (Word16) L_frame : length of the frame */
-/* _ (Word16) coder_type : coding type */
-/* _ (Word16) bwidth : input signal bandwidth */
-/*---------------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ (Word16*) Aq : LP filter coefficient Q12 */
-/* _ (Word16*) lsf_new : LP filter coefficient Q(x2.56) */
-/* _ (Word16*) lsp_new : LP filter coefficient Q15 */
-/* _ (Word16*) lsp_mid : LP filter coefficient Q15 */
-/*---------------------------------------------------------------------------*/
-
-/* _ (Word16[]) st_fx->lsf_adaptive_mean_fx : FEC - adaptive mean LSF */
-/* vector for FEC Q(x2.56) */
-/* _ (Word16[]) st_fx->mem_AR_fx : AR memory of LSF quantizer */
-/* (past quantized LSFs without mean) Q(x2.56) */
-/* _ (Word16) st_fx->stab_fac_fx : LSF stability factor Q15 */
-/*---------------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ None */
-/*===========================================================================*/
-
-void lsf_dec_ivas_fx(
- Decoder_State *st_fx, /* i/o: State structure */
- const Word16 tc_subfr, /* i : TC subframe index Q0*/
- Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/
- Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/
- Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/
- Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/
- Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/
- const Word16 tdm_low_rate_mode /* i : secondary channel low rate mode flag Q0*/
- ,
- const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/
+ Decoder_State *st_fx, /* i/o: State structure */
+ const Word16 tc_subfr, /* i : TC subframe index Q0*/
+ Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/
+ Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/
+ Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/
+ Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/
+ Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/
+ const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag Q0*/
+ const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/
)
{
Word16 i;
diff --git a/lib_dec/lsf_msvq_ma_dec_fx.c b/lib_dec/lsf_msvq_ma_dec_fx.c
index 61e338c9c52451d70dec2d2a8f5656b29c664682..1b5d79c6824596fad3684066b2e2f67ebca9a257 100644
--- a/lib_dec/lsf_msvq_ma_dec_fx.c
+++ b/lib_dec/lsf_msvq_ma_dec_fx.c
@@ -185,9 +185,6 @@ Word16 D_lsf_tcxlpc(
M,
M,
indices + NumIndices,
-#ifdef IVAS_MSVQ
- 0, NULL,
-#endif
lsf_q );
NumIndices = add( NumIndices, TCXLPC_NUMSTAGES ); /* Q0 */
@@ -208,9 +205,6 @@ Word16 D_lsf_tcxlpc(
M,
M,
indices + NumIndices,
-#ifdef IVAS_MSVQ
- 0, NULL,
-#endif
lsf_rem_q_ind );
NumIndices = add( NumIndices, TCXLPC_IND_NUMSTAGES ); /* Q0 */
@@ -287,9 +281,6 @@ Word16 dec_lsf_tcxlpc(
M,
M,
flag + 1,
-#ifdef IVAS_MSVQ
- 0, NULL,
-#endif
lsf_q_ind );
/* Update flag */
diff --git a/lib_dec/pit_dec_fx.c b/lib_dec/pit_dec_fx.c
index 1d3e9649793cb0578063ec2b5235a452812ffe1d..38ec41cb209c196f3333a972a2195ff8f4c0aa46 100644
--- a/lib_dec/pit_dec_fx.c
+++ b/lib_dec/pit_dec_fx.c
@@ -319,246 +319,22 @@ void Mode2_delta_pit_dec(
/* _ (Word16 ) pitch : close loop integer pitch Q6 */
/*=======================================================================*/
-
-Word16 pit_decode_fx( /* o : floating pitch value */
- Decoder_State *st_fx, /* i/o: decoder state structure */
- const Word32 core_brate, /* i : core bitrate */
- const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */
- const Word16 L_frame, /* i : length of the frame */
- Word16 i_subfr, /* i : subframe index */
- const Word16 coder_type, /* i : coding type */
- Word16 *limit_flag, /* i/o: restrained(0) or extended(1) Q limits */
- Word16 *T0, /* o : close loop integer pitch */
- Word16 *T0_frac, /* o : close loop fractional part of the pitch */
- Word16 *T0_min, /* i/o: delta search min for sf 2 & 4 */
- Word16 *T0_max, /* i/o: delta search max for sf 2 & 4 */
- const Word16 L_subfr /* i : subframe length */
-)
-{
- Word16 pitch; /*Q2*/
- Word16 pitch_index, nBits, pit_flag;
-
- pitch_index = 0;
- move16();
-
- /*----------------------------------------------------------------*
- * Set pit_flag = 0 for every subframe with absolute pitch search
- *----------------------------------------------------------------*/
- pit_flag = i_subfr;
- move16();
-
- if ( EQ_16( i_subfr, PIT_DECODE_2XL_SUBFR ) )
- {
- pit_flag = 0;
- move16();
- }
-
- /*-------------------------------------------------------*
- * Retrieve the pitch index
- *-------------------------------------------------------*/
- IF( !Opt_AMR_WB )
- {
- /*----------------------------------------------------------------*
- * pitch Q: Set limit_flag to 0 for restrained limits, and 1 for extended limits
- *----------------------------------------------------------------*/
- test();
- test();
- IF( i_subfr == 0 )
- {
- *limit_flag = 1;
- move16();
-
- if ( EQ_16( coder_type, VOICED ) )
- {
- *limit_flag = 2;
- move16(); /* double-extended limits */
- }
- test();
- if ( EQ_16( coder_type, GENERIC ) && EQ_32( core_brate, ACELP_7k20 ) )
- {
- *limit_flag = 0;
- move16();
- }
- }
- ELSE IF( EQ_16( i_subfr, 2 * L_SUBFR ) && EQ_32( coder_type, GENERIC ) && LE_32( core_brate, ACELP_13k20 ) )
- {
- if ( GT_16( *T0, shr( add( PIT_FR1_EXTEND_8b, PIT_MIN ), 1 ) ) )
- {
- *limit_flag = 0;
- move16();
- }
- }
-
- /*-------------------------------------------------------*
- * Retrieve the number of Q bits
- *-------------------------------------------------------*/
-
- nBits = 0;
- move16();
- IF( NE_16( coder_type, AUDIO ) )
- {
- /* find the number of bits */
- nBits = st_fx->acelp_cfg.pitch_bits[shr( i_subfr, 6 )];
- move16();
- pitch_index = (Word16) get_next_indice_fx( st_fx, nBits );
- }
-
- /*-------------------------------------------------------*
- * Pitch decoding in AUDIO mode
- * (both ACELP@12k8 and ACELP@16k cores)
- *-------------------------------------------------------*/
- IF( EQ_16( coder_type, AUDIO ) )
- {
- test();
- if ( EQ_16( L_subfr, L_FRAME / 2 ) && i_subfr != 0 )
- {
- pit_flag = L_SUBFR;
- move16();
- }
- if ( pit_flag == 0 )
- {
- nBits = 10;
- move16();
- }
- if ( pit_flag != 0 )
- {
- nBits = 6;
- move16();
- }
-
- pitch_index = (Word16) get_next_indice_fx( st_fx, nBits );
-
- test();
- test();
- IF( EQ_16( L_subfr, L_FRAME / 2 ) && i_subfr != 0 && GE_16( pitch_index, 32 ) ) /* safety check in case of bit errors */
- {
- pitch_index = shr( pitch_index, 1 );
- st_fx->BER_detect = 1;
- move16();
- }
-
- pit_Q_dec_fx( 0, pitch_index, nBits, 4, pit_flag, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect );
- }
- ELSE IF( EQ_16( coder_type, VOICED ) )
- {
- /*-------------------------------------------------------*
- * Pitch decoding in VOICED mode
- * (ACELP@12k8 core only)
- *-------------------------------------------------------*/
- if ( EQ_16( i_subfr, 2 * L_SUBFR ) )
- {
- pit_flag = i_subfr;
- move16();
- }
-
- pit_Q_dec_fx( 0, pitch_index, nBits, 4, pit_flag, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect );
- }
- ELSE
- {
- /*-------------------------------------------------------*
- * Pitch decoding in GENERIC mode
- * (both ACELP@12k8 and ACELP@16k cores)
- *-------------------------------------------------------*/
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- pit_Q_dec_fx( 0, pitch_index, nBits, 8, pit_flag, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect );
- }
- ELSE
- {
- pit16k_Q_dec_fx( pitch_index, nBits, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect );
- }
- }
- }
-
- /*-------------------------------------------------------*
- * Pitch decoding in AMR-WB IO mode
- *-------------------------------------------------------*/
-
- ELSE
- {
- *limit_flag = 0;
- move16();
- test();
- test();
- IF( i_subfr == 0 || ( EQ_16( i_subfr, 2 * L_SUBFR ) && EQ_32( core_brate, ACELP_8k85 ) ) )
- {
- nBits = 8;
- move16();
- }
- ELSE
- {
- nBits = 5;
- move16();
- }
- IF( GT_32( core_brate, ACELP_8k85 ) )
- {
- nBits = 6;
- move16();
- test();
- if ( i_subfr == 0 || EQ_16( i_subfr, 2 * L_SUBFR ) )
- {
- nBits = 9;
- move16();
- }
- }
-
- pitch_index = (Word16) get_next_indice_fx( st_fx, nBits );
-
- pit_Q_dec_fx( 1, pitch_index, nBits, 8, pit_flag, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect );
- }
-
- /*-------------------------------------------------------*
- * Compute floating pitch output
- *-------------------------------------------------------*/
-
- pitch = shl( add( shl( *T0, 2 ), *T0_frac ), 4 ); /* save subframe pitch values Q6 */
-
- return pitch;
-}
-
-/*======================================================================*/
-/* FUNCTION : pit_decode_ivas_fx() */
-/*-----------------------------------------------------------------------*/
-/* PURPOSE : calculate pitch value */
-/* */
-/*-----------------------------------------------------------------------*/
-/* INPUT ARGUMENTS : */
-/* _ (Word32) core_brate : Core bitrate Q0 */
-/* _ (Word16) Opt_AMR_WB : flag indicating AMR-WB IO mode Q0 */
-/* _ (Word16) L_frame : length of the frame Q0 */
-/* _ (Word16) i_subfr : length of the frame Q0 */
-/* _ (Word16) coder_type : coding type Q0 */
-/* _ (Word16) L_subfr : subframe length */
-/*-----------------------------------------------------------------------*/
-/* OUTPUT ARGUMENTS : */
-/* _ (Word16 *) T0 : close loop integer pitch */
-/* _ (Word16 *) T0_frac : close loop fractional part of the pitch */
-/* _ (Word16 ) pitch : pitch value Q6 */
-/*-----------------------------------------------------------------------*/
-/* INPUT OUTPUT ARGUMENTS */
-/* _ (Word16 *) T0_min : delta search min for sf 2 & 4 */
-/* _ (Word16 *) T0_max : delta search max for sf 2 & 4 */
-/*-----------------------------------------------------------------------*/
-/* RETURN ARGUMENTS : */
-/* _ (Word16 ) pitch : close loop integer pitch Q6 */
-/*=======================================================================*/
-
-
-Word16 pit_decode_ivas_fx( /* o : floating pitch value */
- Decoder_State *st_fx, /* i/o: decoder state structure */
- const Word32 core_brate, /* i : core bitrate */
- const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */
- const Word16 L_frame, /* i : length of the frame */
- Word16 i_subfr, /* i : subframe index */
- const Word16 coder_type, /* i : coding type */
- Word16 *limit_flag, /* i/o: restrained(0) or extended(1) Q limits */
- Word16 *T0, /* o : close loop integer pitch */
- Word16 *T0_frac, /* o : close loop fractional part of the pitch */
- Word16 *T0_min, /* i/o: delta search min for sf 2 & 4 */
- Word16 *T0_max, /* i/o: delta search max for sf 2 & 4 */
- const Word16 L_subfr, /* i : subframe length */
- const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
- const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6 */
+/*! r: floating pitch value */
+Word16 pit_decode_fx(
+ Decoder_State *st_fx, /* i/o: decoder state structure */
+ const Word32 core_brate, /* i : core bitrate */
+ const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */
+ const Word16 L_frame, /* i : length of the frame */
+ Word16 i_subfr, /* i : subframe index */
+ const Word16 coder_type, /* i : coding type */
+ Word16 *limit_flag, /* i/o: restrained(0) or extended(1) Q limits */
+ Word16 *T0, /* o : close loop integer pitch */
+ Word16 *T0_frac, /* o : close loop fractional part of the pitch */
+ Word16 *T0_min, /* i/o: delta search min for sf 2 & 4 */
+ Word16 *T0_max, /* i/o: delta search max for sf 2 & 4 */
+ const Word16 L_subfr, /* i : subframe length */
+ const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
+ const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6 */
)
{
Word16 pitch; /*Q2*/
diff --git a/lib_dec/post_dec_fx.c b/lib_dec/post_dec_fx.c
index d581f810a7dd724424e19f9651b0a5c4a11e930c..cbcb225bc1c845d937119028fb6fcc025a19cfeb 100644
--- a/lib_dec/post_dec_fx.c
+++ b/lib_dec/post_dec_fx.c
@@ -168,10 +168,10 @@ void post_decoder(
/* Update synth2 memory */
Copy( synth_buf2 + L_frame, hBPF->pst_old_syn_fx, NBPSF_PIT_MAX );
-
return;
}
+
void post_decoder_ivas_fx(
Decoder_State *st,
Word16 synth_buf[], // Q0
diff --git a/lib_dec/rom_dec.c b/lib_dec/rom_dec_fx.c
similarity index 100%
rename from lib_dec/rom_dec.c
rename to lib_dec/rom_dec_fx.c
diff --git a/lib_dec/stat_noise_uv_dec_fx.c b/lib_dec/stat_noise_uv_dec_fx.c
index d2fa36b9b17a86f29e402983d364f6a9db1e6dd5..c87e30ffec5f0f1cd5c6cb17b5562769100885bd 100644
--- a/lib_dec/stat_noise_uv_dec_fx.c
+++ b/lib_dec/stat_noise_uv_dec_fx.c
@@ -76,10 +76,20 @@ void stat_noise_uv_dec_fx(
IF( !st_fx->Opt_AMR_WB )
{
- stat_noise_uv_mod_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count,
- st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx,
- &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth,
- &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge );
+ IF( st_fx->element_mode > EVS_MONO )
+ {
+ stat_noise_uv_mod_ivas_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, &st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count,
+ st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx,
+ &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth,
+ &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge );
+ }
+ ELSE
+ {
+ stat_noise_uv_mod_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count,
+ st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx,
+ &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth,
+ &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge );
+ }
}
diff --git a/lib_dec/swb_bwe_dec_hr_fx.c b/lib_dec/swb_bwe_dec_hr_fx.c
index 9fae1ded560681fb2420b3bc487adbb7ab23ece4..ff4d8bee65b694e9b56f26b48f8324857768f25f 100644
--- a/lib_dec/swb_bwe_dec_hr_fx.c
+++ b/lib_dec/swb_bwe_dec_hr_fx.c
@@ -11,7 +11,6 @@
#define Q_GUARD 1
#define Q_32_BITS 14 /* scaling of 't_audio32' */
#define MAKE_PSEUDO_FLT( v, e ) ( ( ( (Word32) ( v ) ) << 16 ) + ( e ) )
-#define AVQ_DEMUX
/*-----------------------------------------------------------*
* Gain_Dequant_HR()
*
@@ -595,11 +594,7 @@ Word16 swb_bwe_dec_hr_fx( /* o : Exponent of SHB
Nsv = ( NUM_TRANS_END_FREQ_COEF - NUM_TRANS_START_FREQ_COEF ) / WIDTH_BAND;
move16();
-#ifdef AVQ_DEMUX
AVQ_demuxdec_fx( st_fx, x_norm, &nBits, Nsv, nq, 0, sub( Nsv, 1 ) );
-#else
- AVQ_demuxdec_fx( st_fx, x_norm, &nBits, Nsv, nq );
-#endif
temp = add( len, NUM_TRANS_START_FREQ_COEF );
/* 't_audio' in Q8 */
t_audio_exp = 8;
@@ -848,11 +843,7 @@ Word16 swb_bwe_dec_hr_fx( /* o : Exponent of SHB
/* Nsv = i / WIDTH_BAND */
Nsv = shr( i, 3 );
-#ifdef AVQ_DEMUX
AVQ_demuxdec_fx( st_fx, x_norm, &nBits, Nsv, nq, 0, sub( Nsv, 1 ) );
-#else
- AVQ_demuxdec_fx( st_fx, x_norm, &nBits, Nsv, nq );
-#endif
/*---------------------------------------------------------------------*
* second stage decoding
*---------------------------------------------------------------------*/
@@ -889,11 +880,7 @@ Word16 swb_bwe_dec_hr_fx( /* o : Exponent of SHB
}
nBits = sub( nBits, NBITS_GLOB_GAIN_BWE_HR );
-#ifdef AVQ_DEMUX
AVQ_demuxdec_fx( st_fx, x_norm1, &nBits, Nsv2, nq2, 0, sub( Nsv2, 1 ) );
-#else
- AVQ_demuxdec_fx( st_fx, x_norm1, &nBits, Nsv2, nq2 );
-#endif
}
/*---------------------------------------------------------------------*
diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c
index 1b51a29fb642cfffd08c7a39517f1f2d7224b226..bd8700063219b0729e0b9e8448d42aa98512e6c0 100644
--- a/lib_dec/swb_tbe_dec_fx.c
+++ b/lib_dec/swb_tbe_dec_fx.c
@@ -618,6 +618,7 @@ void ivas_wb_tbe_dec_fx(
move16();
Word32 dummy2[HILBERT_MEM_SIZE];
Word16 f, inc;
+ Word64 W_tmp;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
Flag Overflow = 0;
move32();
@@ -853,17 +854,20 @@ void ivas_wb_tbe_dec_fx(
move16(); /* restrict this to 21 due to the Q factor requireemnt of the random number generator (keep 1 bit headroom) */
}
- prev_pow = 0;
- move32();
+ W_tmp = 0;
+ move64();
IF( st_fx->element_mode > EVS_MONO )
{
tmp = sub( shl( sub( st_fx->prev_Q_bwe_exc, 16 ), 1 ), 31 + 16 );
- prev_pow = L_shl_sat( 1407374848l /*0.00001f Q47*/, tmp ); /*Q(2*(st_fx->prev_Q_bwe_exc-16))*/
+ W_tmp = L_shl( 1407374848l /*0.00001f Q47*/, tmp ); /*Q(2*(st_fx->prev_Q_bwe_exc-16))*/
}
FOR( i = 0; i < L_SHB_LAHEAD / 4; i++ )
{
- prev_pow = L_mac0( prev_pow, hBWE_TD->state_syn_shbexc_fx[i], hBWE_TD->state_syn_shbexc_fx[i] ); /*Q(2*(st_fx->prev_Q_bwe_exc-16))*/
+ W_tmp = W_mac_16_16( W_tmp, hBWE_TD->state_syn_shbexc_fx[i], hBWE_TD->state_syn_shbexc_fx[i] ); /*Q(2*(st_fx->prev_Q_bwe_exc-16 + 1))*/
}
+ exp = W_norm( W_tmp );
+ prev_pow = W_extract_h( W_shl( W_tmp, exp ) );
+ exp = sub( add( add( shl( sub( st_fx->prev_Q_bwe_exc, 16 ), 1 ), 1 ), exp ), 32 );
rescale_genWB_mem( st_fx, sub( Q_bwe_exc, st_fx->prev_Q_bwe_exc ) );
@@ -901,7 +905,7 @@ void ivas_wb_tbe_dec_fx(
}
Lscale = root_a_over_b_fx( curr_pow, shl_r( Q_bwe_exc_ext, 1 ), prev_pow,
- shl_r( sub( st_fx->prev_Q_bwe_exc, 16 ), 1 ), &exp );
+ exp, &exp );
FOR( i = 0; i < L_SHB_LAHEAD / 4 - 1; i++ )
{
@@ -4644,7 +4648,12 @@ void fb_tbe_dec_fx(
fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k );
/* FB TBE synthesis */
- synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp );
+ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ ,
+ st->element_mode
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ );
/* add the fb_synth component to the hb_synth component */
/* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/
@@ -4713,7 +4722,12 @@ void fb_tbe_dec_ivas_fx(
fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k );
/* FB TBE synthesis */
- synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp );
+ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ ,
+ st->element_mode
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ );
test();
IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) )
@@ -6452,9 +6466,9 @@ void ivas_swb_tbe_dec_fx(
{
ener_fx = s_max( 1, ener_fx );
exp_ener = norm_s( ener_fx );
- tmp = shl( ener_fx, exp_ener ); /*Q(2+exp)*/
- inv_ener = div_s( 16384, tmp ); /*Q(15+14-2-exp)*/
- prev_ener_ratio_fx = L_shr( L_mult0( st->prev_ener_shb_fx, inv_ener ), add( sub( 9, exp_ener ), 1 ) ); /*Q: 1+27-exp-9+exp-1 = 18 */
+ tmp = shl( ener_fx, exp_ener ); /*Q(2+exp)*/
+ inv_ener = div_s( 16384, tmp ); /*Q(15+14-2-exp)*/
+ prev_ener_ratio_fx = L_shr_sat( L_mult0( st->prev_ener_shb_fx, inv_ener ), add( sub( 9, exp_ener ), 1 ) ); /*Q: 1+27-exp-9+exp-1 = 18 */
}
IF( EQ_16( st->nbLostCmpt, 1 ) )
@@ -7022,14 +7036,24 @@ void ivas_swb_tbe_dec_fx(
tmp1 = 0;
move16();
+
+#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx
+ Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16
+#endif
+
FOR( i = 0; i < L_FRAME16k; i++ )
{
+#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx
Word16 idx = 0;
move16();
IF( i != 0 )
{
idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k );
}
+#else
+ Word16 idx;
+ idx = extract_h( imult3216( idx32, i ) ); /*Q0*/
+#endif
L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/
White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */
move16();
diff --git a/lib_dec/tns_base_dec_fx.c b/lib_dec/tns_base_dec_fx.c
index 13f6ca461baaf7179c0019945c0757445019bdb0..a5df034908245daa19050eef823a8701900c0bfc 100644
--- a/lib_dec/tns_base_dec_fx.c
+++ b/lib_dec/tns_base_dec_fx.c
@@ -26,11 +26,8 @@ typedef Word32 ( *TLinearPredictionFilter )( Word16 order, Word16 const parCoeff
*
*
*---------------------------------------------------------------------*/
-#ifdef IVAS_CODE
-void
-#else
+
Word16
-#endif
ReadTnsData(
STnsConfig const *pTnsConfig,
Decoder_State *st,
@@ -47,20 +44,6 @@ ReadTnsData(
IF( GT_16( pTnsConfig->nMaxFilters, 1 ) )
{
-#ifdef IVAS_CODE
- IF( pTnsConfig->allowTnsOnWhite )
- {
- IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) )
- {
- ReadFromBitstream( &tnsEnabledOnWhiteSWBTCX10BitMap, 1, st, &stream, pnSize );
- }
- ELSE
- {
- ReadFromBitstream( &tnsEnabledOnWhiteSWBTCX20BitMap, 1, st, &stream, pnSize );
- }
- }
- ELSE
-#endif
{
IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) )
@@ -81,20 +64,10 @@ ReadTnsData(
move16();
*pnBits = sub( st->next_bit_pos, start_bit_pos );
-
-#ifdef IVAS_CODE
- return;
-#else
return TNS_NO_ERROR;
-#endif
}
-#define IVAS_CODE
-#ifdef IVAS_CODE
-void
-#else
-Word16
-#endif
-ReadTnsData_ivas_fx(
+
+void ReadTnsData_ivas_fx(
STnsConfig const *pTnsConfig,
Decoder_State *st,
Word16 *pnBits, /*Q0*/
@@ -109,7 +82,6 @@ ReadTnsData_ivas_fx(
IF( GT_16( pTnsConfig->nMaxFilters, 1 ) )
{
-#ifdef IVAS_CODE
IF( pTnsConfig->allowTnsOnWhite )
{
IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) )
@@ -122,7 +94,6 @@ ReadTnsData_ivas_fx(
}
}
ELSE
-#endif
{
IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) )
@@ -143,13 +114,9 @@ ReadTnsData_ivas_fx(
move16();
*pnBits = sub( st->next_bit_pos, start_bit_pos );
-#ifdef IVAS_CODE
return;
-#else
- return TNS_NO_ERROR;
-#endif
}
-#undef IVAS_CODE
+
/*---------------------------------------------------------------------*
* DecodeTnsData()
*
@@ -169,21 +136,6 @@ Word16 DecodeTnsData(
IF( GT_16( pTnsConfig->nMaxFilters, 1 ) )
{
-
-#ifdef IVAS_CODE
- IF( pTnsConfig->allowTnsOnWhite )
- {
- IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) )
- {
- SetParameters( &tnsEnabledOnWhiteSWBTCX10BitMap, 1, pTnsData, &stream, pnSize );
- }
- ELSE
- {
- SetParameters( &tnsEnabledOnWhiteSWBTCX20BitMap, 1, pTnsData, &stream, pnSize );
- }
- }
- ELSE
-#endif
{
IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) )
{
diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c
index bc7e1d536257616343132f5dc3090351c994cc12..fd6cf7835e410e763405e49170ac72cb81337ee2 100644
--- a/lib_dec/tonalMDCTconcealment_fx.c
+++ b/lib_dec/tonalMDCTconcealment_fx.c
@@ -103,18 +103,6 @@ ivas_error TonalMDCTConceal_Init(
hTonalMDCTConc->nScaleFactors = nScaleFactors;
move16();
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- PMTE()
- set_zero( hTonalMDCTConc->scaleFactorsBackground, FDNS_NPTS );
- PsychoacousticParameters_Init( INT_FS_16k, L_FRAME16k, 64, 1, 1, &hTonalMDCTConc->psychParamsTCX20 );
- PsychoacousticParameters_Init( INT_FS_16k, L_FRAME16k / 2, 64, 0, 1, &hTonalMDCTConc->psychParamsTCX10 );
- hTonalMDCTConc->psychParams = NULL;
- hTonalMDCTConc->scf_fadeout = 1.0f;
- hTonalMDCTConc->last_block_nrg = 0.0f;
- hTonalMDCTConc->curr_noise_nrg = 0.0f;
- hTonalMDCTConc->faded_signal_nrg = 0.0f;
-
-#endif
/* Offset the pointer to the end of buffer, so that pTCI is not destroyed when
new time samples are stored in lastPcmOut */
move16();
@@ -198,9 +186,6 @@ ivas_error TonalMDCTConceal_Init_ivas_fx(
hTonalMDCTConc->nScaleFactors = nScaleFactors;
move16();
- //#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- // PMTE()
- // To be uncommented when field of fixed type is added for scaleFactorsBackground
set32_fx( hTonalMDCTConc->scaleFactorsBackground_fx, 0, FDNS_NPTS );
hTonalMDCTConc->scf_fadeout = 16384 /*1.000000 Q14*/;
PsychoacousticParameters_Init_fx( INT_FS_16k, L_FRAME16k, 64, 1, 1, &hTonalMDCTConc->psychParamsTCX20 );
@@ -242,12 +227,7 @@ void TonalMDCTConceal_SaveFreqSignal(
Word16 nNewSamplesCore, // Q0
const Word16 *scaleFactors, // Q31-scaleFactors_exp
const Word16 *scaleFactors_exp,
- const Word16 gain_tcx_exp
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- ,
- const int16_t infoIGFStartLine
-#endif
-)
+ const Word16 gain_tcx_exp )
{
Word16 *temp;
Word16 nOldSamples, tmp_exp, s, i, max_exp;
@@ -340,20 +320,6 @@ void TonalMDCTConceal_SaveFreqSignal(
test();
IF( ( nNewSamples > 0 ) && ( LE_16( nNewSamples, 2 * L_FRAME_MAX ) ) )
{
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- int16_t i;
- PMTE()
- hTonalMDCTConc->last_block_nrg_flt = 0.0f;
- for ( i = 0; i < infoIGFStartLine; i++ )
- {
- hTonalMDCTConc->lastBlockData.spectralData[i] = mdctSpectrum[i];
- hTonalMDCTConc->last_block_nrg_flt += mdctSpectrum[i] * mdctSpectrum[i];
- }
- for ( ; i < nNewSamples; i++ )
- {
- hTonalMDCTConc->lastBlockData.spectralData[i] = mdctSpectrum[i];
- }
-#else
/* Store new data */
s = getScaleFactor32( mdctSpectrum, nNewSamples );
@@ -375,7 +341,6 @@ void TonalMDCTConceal_SaveFreqSignal(
move16();
}
hTonalMDCTConc->lastBlockData.spectralData_exp = sub( mdctSpectrum_exp, s );
-#endif
move16();
hTonalMDCTConc->lastBlockData.gain_tcx_exp = gain_tcx_exp;
@@ -485,17 +450,16 @@ void TonalMDCTConceal_SaveFreqSignal_ivas_fx(
IF( ( nNewSamples > 0 ) && ( LE_16( nNewSamples, 2 * L_FRAME_MAX ) ) )
{
/* Store new data */
- hTonalMDCTConc->last_block_nrg = 0;
- move32();
-
+ Word64 W_tmp = 0;
+ move64();
FOR( i = 0; i < infoIGFStartLine; i++ )
{
- Word16 tmp = extract_h( mdctSpectrum[i] );
- hTonalMDCTConc->last_block_nrg = L_add( hTonalMDCTConc->last_block_nrg,
- L_shr( L_mult0( tmp, tmp ), 16 ) ); // Q31-last_block_nrg_exp
- move32();
+ W_tmp = W_mac_32_16( W_tmp, Mpy_32_32( mdctSpectrum[i], mdctSpectrum[i] ), 1 ); // exp: mdctSpectrum_exp + mdctSpectrum_exp - 1
}
- hTonalMDCTConc->last_block_nrg_exp = sub( 31, sub( shl( sub( 15, mdctSpectrum_exp ), 1 ), 16 ) );
+ s = W_norm( W_tmp );
+ hTonalMDCTConc->last_block_nrg = W_extract_h( W_shl( W_tmp, s ) ); // exp:add( sub( shl( mdctSpectrum_exp, 1 ), s ), 31 )
+ move32();
+ hTonalMDCTConc->last_block_nrg_exp = add( sub( shl( mdctSpectrum_exp, 1 ), s ), 31 );
move16();
/* Store new data */
@@ -909,12 +873,7 @@ static void CalcPowerSpecAndDetectTonalComponents(
Word32 secondLastMDCT[], // Q31-secondLastMDCT_exp
Word16 secondLastMDCT_exp,
Word32 const pitchLag, /*15Q16*/
- Word16 element_mode
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- const PsychoacousticParameters *psychParamsCurrent
-#endif
-)
+ Word16 element_mode )
{
Word16 nSamples;
Word16 i;
@@ -1004,20 +963,9 @@ static void CalcPowerSpecAndDetectTonalComponents(
/* here mdct_shaping() is intentionally used rather then mdct_shaping_16() */
-#ifdef IVAS_CODE_MDCT_GSHAPE
- IF( psychParamsCurrent == NULL )
-#endif
{
mdct_shaping( powerSpectrum, hTonalMDCTConc->nSamplesCore, invScaleFactors, invScaleFactors_exp );
}
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ELSE
- {
- PMTE()
- sns_shape_spectrum( powerSpectrum, psychParamsCurrent, invScaleFactors, hTonalMDCTConc->nSamplesCore );
- nBands = psychParamsCurrent->nBands;
- }
-#endif
FOR( i = hTonalMDCTConc->nSamplesCore; i < nSamples; i++ )
{
powerSpectrum[i] = L_shl_sat( Mpy_32_16_1( powerSpectrum[i], invScaleFactors[FDNS_NPTS - 1] ), invScaleFactors_exp[FDNS_NPTS - 1] ); // powerSpectrum_exp+ 2*invScaleFactors_exp -15
@@ -1070,12 +1018,7 @@ void TonalMDCTConceal_Detect(
const TonalMDCTConcealPtr hTonalMDCTConc,
const Word32 pitchLag, /*15Q16*/
Word16 *numIndices,
- Word16 element_mode
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- const PsychoacousticParameters *psychParamsCurrent
-#endif
-)
+ Word16 element_mode )
{
Word32 secondLastMDST[L_FRAME_MAX];
Word32 secondLastMDCT[L_FRAME_MAX];
@@ -1147,9 +1090,6 @@ void TonalMDCTConceal_Detect(
{
/* If the second last frame was also lost, it is expected that pastTimeSignal could hold a bit different signal (e.g. including fade-out) from the one stored in TonalMDCTConceal_SaveTimeSignal. */
/* That is why we reuse the already stored information about the concealed spectrum in the second last frame */
-#ifdef IVAS_CODE_MDCT_GSHAPE
- IF( psychParamsCurrent == NULL )
-#endif
{
nSamples = hTonalMDCTConc->nNonZeroSamples;
move16();
@@ -1157,13 +1097,6 @@ void TonalMDCTConceal_Detect(
hTonalMDCTConc->secondLastBlockData.scaleFactors, hTonalMDCTConc->secondLastBlockData.scaleFactors_exp,
hTonalMDCTConc->secondLastBlockData.scaleFactors_max_e, powerSpectrum );
}
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ELSE
- {
- sns_shape_spectrum( powerSpectrum, psychParamsCurrent, hTonalMDCTConc->secondLastBlockData.scaleFactors, hTonalMDCTConc->nSamplesCore );
- nBands = psychParamsCurrent->nBands;
- }
-#endif
powerSpectrum_exp = getScaleFactor32( powerSpectrum, nSamples );
powerSpectrum_exp = sub( powerSpectrum_exp, 3 ); /*extra 3 bits of headroom for MA filter in getEnvelope*/
@@ -1598,9 +1531,12 @@ void TonalMDCTConceal_InsertNoise_ivas_fx(
move16();
Word32 y = concealment_noise[l]; // concealment_noise_e
move32();
- last_block_nrg_correct = L_add( last_block_nrg_correct, Mpy_32_16_1( L_msu( 0, x, fac ), x ) ); // exp = 2 * x_exp + ld
- y = L_negate( Mpy_32_32( y, y ) ); // Q31-2* concealment_noise_e
- hTonalMDCTConc->curr_noise_nrg = BASOP_Util_Add_Mant32Exp( hTonalMDCTConc->curr_noise_nrg, hTonalMDCTConc->curr_noise_nrg_exp, y, 2 * concealment_noise_e, &hTonalMDCTConc->curr_noise_nrg_exp ); // Q31- hTonalMDCTConc->curr_noise_nrg_exp
+ shift1 = norm_l( y );
+ y = L_shl( y, shift1 );
+
+ last_block_nrg_correct = L_add( last_block_nrg_correct, Mpy_32_16_1( L_msu( 0, x, fac ), x ) ); // exp = 2 * x_exp + ld
+ y = L_negate( Mpy_32_32( y, y ) ); // Q31-(2* concealment_noise_e + shift1)
+ hTonalMDCTConc->curr_noise_nrg = BASOP_Util_Add_Mant32Exp( hTonalMDCTConc->curr_noise_nrg, hTonalMDCTConc->curr_noise_nrg_exp, y, shl( sub( concealment_noise_e, shift1 ), 1 ), &hTonalMDCTConc->curr_noise_nrg_exp ); // Q31- hTonalMDCTConc->curr_noise_nrg_exp
move32();
}
}
@@ -1666,29 +1602,9 @@ void TonalMDCTConceal_InsertNoise_ivas_fx(
/* actual fadeout is done in this case */
ELSE
{
- Word32 num, den;
- Word16 exp_num, exp_den;
+ tmp = BASOP_Util_Divide3232_Scale( cngLevelBackgroundTrace_bfi, hTonalMDCTConc->curr_noise_nrg, &exp );
+ exp = add( exp, sub( cngLevelBackgroundTrace_bfi_e, hTonalMDCTConc->curr_noise_nrg_exp ) );
- exp_num = cngLevelBackgroundTrace_bfi_e;
- move16();
- exp_den = hTonalMDCTConc->curr_noise_nrg_exp;
- move16();
-
- ld = norm_l( cngLevelBackgroundTrace_bfi );
- num = L_shl( cngLevelBackgroundTrace_bfi, ld ); // Q15 - exp_num + ld
- exp_num = sub( exp_num, ld );
- ld = norm_l( hTonalMDCTConc->curr_noise_nrg );
- den = L_shl( hTonalMDCTConc->curr_noise_nrg, ld ); // Q15 - exp_den + ld
- exp_den = sub( exp_den, ld );
-
- exp = sub( exp_num, exp_den );
-
- IF( GT_32( num, den ) )
- {
- num = L_shr( num, 1 ); // Q31- exp -1
- exp = add( exp, 1 );
- }
- tmp = div_l( num, round_fx( den ) );
tmp = Sqrt16( tmp, &exp );
g = mult_r( g, tmp ); // exponent of g = exp
@@ -1817,32 +1733,12 @@ void TonalMDCTConceal_InsertNoise_ivas_fx(
test();
IF( GT_32( hTonalMDCTConc->faded_signal_nrg, 0 ) && flag )
{
- Word16 num_exp, den_exp;
- Word32 num, den;
+ Word16 num_exp;
+ Word32 num;
num = BASOP_Util_Add_Mant32Exp( hTonalMDCTConc->last_block_nrg, hTonalMDCTConc->last_block_nrg_exp, L_negate( last_block_nrg_correct ), last_block_nrg_correct_e, &num_exp ); // Q31-num_exp
-
- den = hTonalMDCTConc->faded_signal_nrg; // Q31 - hTonalMDCTConc->faded_signal_nrg_exp
- move32();
- den_exp = hTonalMDCTConc->faded_signal_nrg_exp;
- move16();
-
- ld = norm_l( num );
- num = L_shl( num, ld ); // Q31-num_exp + ld
- num_exp = sub( num_exp, ld );
-
- ld = norm_l( den );
- den = L_shl( den, ld ); // Q31-den_exp + ld
- den_exp = sub( den_exp, ld );
-
- exp = sub( num_exp, den_exp );
-
- IF( GT_32( num, den ) )
- {
- num = L_shr( num, 1 ); // Q31- exp -1
- exp = add( exp, 1 );
- }
- tmp = div_l( num, extract_h( den ) );
+ tmp = BASOP_Util_Divide3232_Scale( num, hTonalMDCTConc->faded_signal_nrg, &exp );
+ exp = add( exp, sub( num_exp, hTonalMDCTConc->faded_signal_nrg_exp ) );
tmp = Sqrt16( tmp, &exp );
FOR( i = 0; i < crossOverFreq; i++ )
@@ -2207,19 +2103,12 @@ void TonalMDCTConceal_InsertNoise(
Word16 *pSeed, /*IN/OUT*/
const Word16 tiltCompFactor, // Q15
Word16 crossfadeGain, // Q15
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- const Word16concealment_noise[L_FRAME48k],
- const float cngLevelBackgroundTrace_bfi,
-#endif
const Word16 crossOverFreq )
{
Word16 i, ld, fac;
Word16 rnd, exp, exp_last, exp_noise, inv_samples, inv_exp;
Word16 g, tiltFactor, tilt, tmp;
Word32 nrgNoiseInLastFrame, nrgWhiteNoise, L_tmp, L_tmp2;
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- float last_block_nrg_correct;
-#endif
g = sub( 32767 /*1.0f Q15*/, crossfadeGain );
@@ -2230,16 +2119,6 @@ void TonalMDCTConceal_InsertNoise(
rnd = *pSeed;
move16();
}
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- /* based on what is done in tcx_noise_filling() */
- /* always initialize these to avoid compiler warnings */
- tiltFactor = (float) pow( max( 0.375f, tiltCompFactor ), 1.0f / hTonalMDCTConc->lastBlockData.nSamples );
- tilt = 1.0f;
- nrgNoiseInLastFrame = 0.0f;
- nrgWhiteNoise = 0.0f;
- hTonalMDCTConc->faded_signal_nrg_flt = 0.0f;
- last_block_nrg_correct = 0.0f;
-#endif
IF( hTonalMDCTConc->lastBlockData.blockIsValid == 0 )
{
/* may just become active if the very first frame is lost */
@@ -2247,199 +2126,8 @@ void TonalMDCTConceal_InsertNoise(
*mdctSpectrum_exp = SPEC_EXP_DEC;
move16();
}
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
- else if ( concealment_noise != NULL )
- {
- if ( !tonalConcealmentActive )
- {
- /* if fadeout has not started yet, only apply sign scrambling */
- if ( crossfadeGain == 1.0f )
- {
- for ( i = 0; i < crossOverFreq; i++ )
- {
- if ( concealment_noise[i] > 0 )
- {
- mdctSpectrum[i] = hTonalMDCTConc->lastBlockData.spectralData[i];
- }
- else
- {
- mdctSpectrum[i] = -hTonalMDCTConc->lastBlockData.spectralData[i];
- }
- }
-
- for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ )
- {
- mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l];
- }
- }
- /* actual fadeout is done in this case */
- else
- {
- g *= (float) sqrt( cngLevelBackgroundTrace_bfi / hTonalMDCTConc->curr_noise_nrg_flt );
-
- for ( i = 0; i < crossOverFreq; i++ )
- {
- x = hTonalMDCTConc->lastBlockData.spectralData[i];
- y = concealment_noise[i];
-
- if ( y > 0 )
- {
- mdctSpectrum[i] = g * y + crossfadeGain * x;
- }
- else
- {
- mdctSpectrum[i] = g * y - crossfadeGain * x;
- }
-
- hTonalMDCTConc->faded_signal_nrg_flt += mdctSpectrum[i] * mdctSpectrum[i];
- }
- for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ )
- {
- mdctSpectrum[l] = 0.0f;
- }
- }
- }
- else
- {
- assert( hTonalMDCTConc->pTCI->numIndexes > 0 );
-
- /* initialize bins of tonal components with zero: basically not
- necessary, but currently the whole spectrum is rescaled in
- mdct_noiseShaping() and then there would be a processing of
- uninitialized values */
- for ( i = 0; i < hTonalMDCTConc->pTCI->numIndexes; i++ )
- {
- for ( l = hTonalMDCTConc->pTCI->lowerIndex[i]; l <= hTonalMDCTConc->pTCI->upperIndex[i]; l++ )
- {
- mdctSpectrum[l] = 0;
- if ( l < crossOverFreq )
- {
- last_block_nrg_correct += hTonalMDCTConc->lastBlockData.spectralData[l] * hTonalMDCTConc->lastBlockData.spectralData[l];
- hTonalMDCTConc->curr_noise_nrg_flt -= concealment_noise[l] * concealment_noise[l];
- }
- }
- }
-
- /* if fadeout has not started yet, only apply sign scrambling */
- if ( crossfadeGain == 1.0f )
- {
- for ( l = 0; l < hTonalMDCTConc->pTCI->lowerIndex[0]; l++ )
- {
- if ( concealment_noise[l] > 0 )
- {
- mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l];
- }
- else
- {
- mdctSpectrum[l] = -hTonalMDCTConc->lastBlockData.spectralData[l];
- }
- }
- for ( i = 1; i < hTonalMDCTConc->pTCI->numIndexes; i++ )
- {
- for ( l = hTonalMDCTConc->pTCI->upperIndex[i - 1] + 1; l < hTonalMDCTConc->pTCI->lowerIndex[i]; l++ )
- {
- if ( concealment_noise[l] > 0 )
- {
- mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l];
- }
- else
- {
- mdctSpectrum[l] = -hTonalMDCTConc->lastBlockData.spectralData[l];
- }
- }
- }
-
- for ( l = hTonalMDCTConc->pTCI->upperIndex[hTonalMDCTConc->pTCI->numIndexes - 1] + 1; l < crossOverFreq; l++ )
- {
- if ( concealment_noise[l] > 0 )
- {
- mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l];
- }
- else
- {
- mdctSpectrum[l] = -hTonalMDCTConc->lastBlockData.spectralData[l];
- }
- }
-
- for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ )
- {
- mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l];
- }
- }
- /* actual fadeout is done in this case */
- else
- {
- g *= (float) sqrt( cngLevelBackgroundTrace_bfi / hTonalMDCTConc->curr_noise_nrg_flt );
-
- for ( l = 0; l < hTonalMDCTConc->pTCI->lowerIndex[0]; l++ )
- {
- x = hTonalMDCTConc->lastBlockData.spectralData[l];
- y = concealment_noise[l];
-
- if ( y > 0 )
- {
- mdctSpectrum[l] = g * y + crossfadeGain * x;
- }
- else
- {
- mdctSpectrum[l] = g * y - crossfadeGain * x;
- }
- hTonalMDCTConc->faded_signal_nrg_flt += mdctSpectrum[l] * mdctSpectrum[l];
- }
- for ( i = 1; i < hTonalMDCTConc->pTCI->numIndexes; i++ )
- {
- for ( l = hTonalMDCTConc->pTCI->upperIndex[i - 1] + 1; l < hTonalMDCTConc->pTCI->lowerIndex[i]; l++ )
- {
- x = hTonalMDCTConc->lastBlockData.spectralData[l];
- y = concealment_noise[l];
-
- if ( y > 0 )
- {
- mdctSpectrum[l] = g * y + crossfadeGain * x;
- }
- else
- {
- mdctSpectrum[l] = g * y - crossfadeGain * x;
- }
- hTonalMDCTConc->faded_signal_nrg_flt += mdctSpectrum[l] * mdctSpectrum[l];
- }
- }
-
- for ( l = hTonalMDCTConc->pTCI->upperIndex[hTonalMDCTConc->pTCI->numIndexes - 1] + 1; l < crossOverFreq; l++ )
- {
- x = hTonalMDCTConc->lastBlockData.spectralData[l];
- y = concealment_noise[l];
-
- if ( y > 0 )
- {
- mdctSpectrum[l] = g * y + crossfadeGain * x;
- }
- else
- {
- mdctSpectrum[l] = g * y - crossfadeGain * x;
- }
- hTonalMDCTConc->faded_signal_nrg_flt += mdctSpectrum[l] * mdctSpectrum[l];
- }
-
- for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ )
- {
- mdctSpectrum[l] = 0.0f;
- }
- }
- }
-
- if ( hTonalMDCTConc->faded_signal_nrg_flt > 0.0f && hTonalMDCTConc->curr_noise_nrg_flt > MDCT_ST_PLC_FADEOUT_MIN_NOISE_NRG )
- {
- float nrg_corr_factor;
-
- nrg_corr_factor = sqrtf( ( hTonalMDCTConc->last_block_nrg_flt - last_block_nrg_correct ) / hTonalMDCTConc->faded_signal_nrg_flt );
- v_multc( mdctSpectrum, nrg_corr_factor, mdctSpectrum, crossOverFreq );
- }
- }
-#endif
ELSE
{
-#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
L_tmp = 805306368l /*0.375f Q31*/;
move32();
inv_exp = 15;
@@ -2456,7 +2144,6 @@ void TonalMDCTConceal_InsertNoise(
nrgNoiseInLastFrame = L_deposit_h( 0 );
nrgWhiteNoise = L_deposit_h( 0 );
exp_last = exp_noise = 0;
-#endif
move16();
move16();
IF( !tonalConcealmentActive )
@@ -2814,10 +2501,6 @@ void TonalMDCTConceal_Apply(
const TonalMDCTConcealPtr hTonalMDCTConc, /*IN */
Word32 *mdctSpectrum, // Q31-*mdctSpectrum_exp /*IN/OUT*/
Word16 *mdctSpectrum_exp /*IN */
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ,
- const PsychoacousticParameters *psychParamsCurrent
-#endif
)
{
Word16 i, l, exp;
@@ -2835,22 +2518,12 @@ void TonalMDCTConceal_Apply(
move16();
assert( hTonalMDCTConc->pTCI->upperIndex[hTonalMDCTConc->pTCI->numIndexes - 1] < nSamples );
-#ifdef IVAS_CODE_MDCT_GSHAPE
- IF( psychParamsCurrent == NULL )
-#endif
{
mdct_shaping_16( hTonalMDCTConc->secondLastPowerSpectrum, hTonalMDCTConc->nSamplesCore, nSamples,
hTonalMDCTConc->secondLastBlockData.scaleFactors, hTonalMDCTConc->secondLastBlockData.scaleFactors_exp,
hTonalMDCTConc->secondLastBlockData.scaleFactors_max_e, powerSpectrum );
}
-#ifdef IVAS_CODE_MDCT_GSHAPE
- ELSE
- {
- sns_shape_spectrum( powerSpectrum, psychParamsCurrent, hTonalMDCTConc->secondLastBlockData.scaleFactors, hTonalMDCTConc->nSamplesCore );
- nBands = psychParamsCurrent->nBands;
- }
-#endif
phaseDiff = hTonalMDCTConc->pTCI->phaseDiff; /* if multiple frame loss occurs use the phase from the last frame and continue rotating */
pCurrentPhase = hTonalMDCTConc->pTCI->phase_currentFramePredicted;
@@ -3576,216 +3249,3 @@ void TonalMdctConceal_whiten_noise_shape_ivas_fx(
pop_wmops();
}
-
-
-#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT
-void TonalMdctConceal_create_concealment_noise(
- float concealment_noise[L_FRAME48k],
- CPE_DEC_HANDLE hCPE,
- const int16_t L_frameTCX,
- const int16_t L_frame,
- const int16_t idchan,
- const int16_t subframe_idx,
- const int16_t core,
- const int16_t crossfade_gain,
- const TONALMDCTCONC_NOISE_GEN_MODE noise_gen_mode )
-{
- STEREO_MDCT_DEC_DATA_HANDLE hStereoMdct;
- TonalMDCTConcealPtr hTonalMDCTConc;
- Decoder_State *st;
- HANDLE_FD_CNG_COM hFdCngCom;
- int16_t *rnd_c, *rnd;
- int16_t crossOverFreq, i, save_rnd_c, max_noise_line;
- float c, c_inv;
- float noise_shape_buffer[L_FRAME48k];
- int16_t inc, start_idx, stop_idx;
- float *cngNoiseLevelPtr;
- float last_scf;
-
- wmops_sub_start( "create_conc_noise" );
-
- hStereoMdct = hCPE->hStereoMdct;
- st = hCPE->hCoreCoder[idchan];
- hTonalMDCTConc = st->hTonalMDCTConc;
- hFdCngCom = st->hFdCngDec->hFdCngCom;
- rnd = &hStereoMdct->noise_seeds_channels[idchan];
- rnd_c = &hStereoMdct->noise_seed_common;
-
- /* determine start bin for IGF */
- if ( st->igf == 0 )
- {
- if ( st->narrowBand == 0 )
- {
- /* minimum needed for output with sampling rates lower then the
- nominal sampling rate */
- crossOverFreq = min( L_frameTCX, L_frame );
- }
- else
- {
- crossOverFreq = L_frameTCX;
- }
- }
- else
- {
- crossOverFreq = min( st->hIGFDec->infoIGFStartLine, L_frameTCX );
- }
-
- /* for tonal mdct concealment with tonal components above the crossover frequency, conditionally raise the frequency index until which noise is generated */
- max_noise_line = crossOverFreq;
- if ( st->tonal_mdct_plc_active )
- {
- max_noise_line = max( max_noise_line, hTonalMDCTConc->pTCI->upperIndex[hTonalMDCTConc->pTCI->numIndexes - 1] + 1 );
- }
-
- /* first lost frame is handled separately */
- if ( !hTonalMDCTConc->lastBlockData.blockIsConcealed )
- {
- *rnd = 1977 + idchan;
- /* will be set twice when looping over two channels, but does not matter */
- *rnd_c = 1979;
- }
-
- if ( crossfade_gain == 1.0f )
- {
- /* In first frame, noise is weighted with zero anyway, we only need the random numbers for the sign scrambling */
- for ( i = 0; i < max_noise_line; i++ )
- {
- *rnd = own_random( rnd );
- concealment_noise[i] = *rnd;
- }
-
- wmops_sub_end();
-
- return;
- }
-
- save_rnd_c = *rnd_c;
-
- c = sqrtf( hStereoMdct->lastCoh );
- c_inv = sqrtf( 1 - hStereoMdct->lastCoh );
-
- /* pre-compute the noise shape for later weighting of the noise spectra */
- cngNoiseLevelPtr = &hFdCngCom->cngNoiseLevel_flt[0];
- inc = ( st->core > TCX_20_CORE ) ? 2 : 1;
- start_idx = hFdCngCom->startBand / inc;
- stop_idx = hFdCngCom->stopFFTbin / inc;
-
- for ( i = 0; i < start_idx; i++ )
- {
- noise_shape_buffer[i] = 0.0f;
- }
- for ( ; i < stop_idx; i++, cngNoiseLevelPtr += inc )
- {
- noise_shape_buffer[i] = sqrtf( *( cngNoiseLevelPtr ) );
- }
-
- last_scf = sqrtf( *( cngNoiseLevelPtr - inc ) );
-
- for ( ; i < max_noise_line; i++ )
- {
- noise_shape_buffer[i] = last_scf;
- }
-
- /* fill the noise vector */
- hTonalMDCTConc->curr_noise_nrg_flt = MDCT_ST_PLC_FADEOUT_MIN_NOISE_NRG;
- if ( noise_gen_mode == EQUAL_CORES || ( ( noise_gen_mode == TCX20_IN_0_TCX10_IN_1 && idchan == 0 ) || ( noise_gen_mode == TCX10_IN_0_TCX20_IN_1 && idchan == 1 ) ) )
- {
- /* current channel is TCX20 -> generate noise for "full-length" spectrum */
- for ( i = 0; i < max_noise_line; i++ )
- {
- *rnd = own_random( rnd );
- *rnd_c = own_random( rnd_c );
-
- concealment_noise[i] = ( c_inv * *rnd + c * *rnd_c ) * noise_shape_buffer[i];
- hTonalMDCTConc->curr_noise_nrg_flt += concealment_noise[i] * concealment_noise[i];
- }
- }
- else /* ( ( noise_gen_mode == TCX10_IN_0_TCX20_IN_1 && idchan == 0 ) || ( noise_gen_mode == TCX20_IN_0_TCX10_IN_1 && idchan == 1 ) ) */
- {
- /* current channel is TCX10 and the other is TCX20 -> generate noise for "half-length" spectrum, but "increment" mid seed twice, to have the same seed in mid as the other (TCX20) channel for next frame */
- for ( i = 0; i < max_noise_line; i++ )
- {
- *rnd = own_random( rnd );
- *rnd_c = own_random( rnd_c );
-
- concealment_noise[i] = ( c_inv * *rnd + c * *rnd_c ) * noise_shape_buffer[i];
- hTonalMDCTConc->curr_noise_nrg_flt += concealment_noise[i] * concealment_noise[i];
-
- *rnd_c = own_random( rnd_c );
- }
- }
- if ( st->tonal_mdct_plc_active )
- {
- for ( i = crossOverFreq; i < max( crossOverFreq, hTonalMDCTConc->pTCI->lowerIndex[hTonalMDCTConc->pTCI->numIndexes - 1] ); ++i )
- {
- concealment_noise[i] *= 0.0f;
- }
- }
- /* restore common seed
- - after finishing the first channel
- - after a first subframe if the current channel is TCX10 */
- if ( ( idchan == 0 && ( core == TCX_20 || ( core == TCX_10 && subframe_idx == 1 ) ) ) || ( core == TCX_10 && subframe_idx == 0 ) )
- {
- *rnd_c = save_rnd_c;
- }
- st->seed_tcx_plc = *rnd;
- wmops_sub_end();
-
- return;
-}
-void TonalMdctConceal_whiten_noise_shape(
- Decoder_State *st,
- const int16_t L_frame,
- const TONALMDCTCONC_NOISE_SHAPE_WHITENING_MODE whitening_mode )
-{
- int16_t inc, start_idx, stop_idx;
- float *noiseLevelPtr, *scfs_bg, *scfs_for_shaping;
- HANDLE_FD_CNG_COM hFdCngCom;
- float whitenend_noise_shape[L_FRAME16k];
- float scfs_int[FDNS_NPTS];
- const PsychoacousticParameters *psychParams;
-
- push_wmops( "apply_sns_on_noise_shape" );
-
- scfs_bg = &st->hTonalMDCTConc->scaleFactorsBackground_flt[0];
- psychParams = st->hTonalMDCTConc->psychParams;
- hFdCngCom = st->hFdCngDec->hFdCngCom;
-
- inc = ( ( whitening_mode == ON_FIRST_LOST_FRAME ? st->core : st->last_core ) > TCX_20_CORE ) ? 2 : 1;
- start_idx = hFdCngCom->startBand / inc;
- stop_idx = L_frame / inc;
- noiseLevelPtr = hFdCngCom->cngNoiseLevel_flt;
-
- set_zero( whitenend_noise_shape, start_idx );
- for ( int16_t j = start_idx; j < stop_idx; j++, noiseLevelPtr += inc )
- {
- whitenend_noise_shape[j] = *noiseLevelPtr;
- }
-
- if ( whitening_mode == ON_FIRST_LOST_FRAME )
- {
- float scf[SNS_NPTS];
-
- sns_compute_scf( whitenend_noise_shape, psychParams, L_frame, scf );
- sns_interpolate_scalefactors( scfs_int, scf, ENC );
- sns_interpolate_scalefactors( scfs_bg, scf, DEC );
- scfs_for_shaping = &scfs_int[0];
- }
- else /* whitening_mode == ON_FIRST_GOOD_FRAME */
- {
- scfs_for_shaping = &scfs_bg[0];
- }
-
- if ( sum_f( scfs_for_shaping, FDNS_NPTS ) > 0.0f )
- {
- sns_shape_spectrum( whitenend_noise_shape, psychParams, scfs_for_shaping, L_frame );
- mvr2r( whitenend_noise_shape + start_idx, hFdCngCom->cngNoiseLevel_flt, stop_idx - start_idx );
- }
- else
- {
- set_zero( hFdCngCom->cngNoiseLevel_flt, stop_idx - start_idx );
- }
-
- pop_wmops();
-}
-#endif
diff --git a/lib_dec/updt_dec_fx.c b/lib_dec/updt_dec_fx.c
index 0e1b951bb4afc1e1b5e636f067099700fba78b32..81046fb19c71b0ceef898d08f1e36163f092644a 100644
--- a/lib_dec/updt_dec_fx.c
+++ b/lib_dec/updt_dec_fx.c
@@ -576,23 +576,6 @@ void updt_dec_common_fx(
test();
test();
test();
-#ifdef IVAS_CODE
- /* Store long-term estimates of stab_fac and log energy diff to estimate env_stab in case of core switch ACELP/TCX->HQ */
- if ( st->element_mode != EVS_MONO )
- {
- output_frame = NS2SA( st->output_Fs, FRAME_SIZE_NS );
- log_energy = log2f( ( sum2_f( synth, output_frame ) / output_frame ) + 1.0f );
- log_energy_diff = fabsf( st->log_energy_old - log_energy );
- st->log_energy_old = log_energy;
- st->log_energy_diff_lt = ENV_SMOOTH_FAC * log_energy_diff + ( 1.0f - ENV_SMOOTH_FAC ) * st->log_energy_diff_lt;
- if ( st->core == HQ_CORE )
- {
- st->stab_fac = min( 1, ( STAB_FAC_EST1 + ( STAB_FAC_EST2 * st->hHQ_core->mem_env_delta ) + ( STAB_FAC_EST3 * st->log_energy_diff_lt ) ) );
- st->stab_fac = max( 0, st->stab_fac );
- }
- st->stab_fac_smooth_lt = ENV_SMOOTH_FAC * st->stab_fac + ( 1.0f - ENV_SMOOTH_FAC ) * st->stab_fac_smooth_lt;
- }
-#endif
IF( ( ( LE_32( st_fx->core_brate, SID_2k40 ) ) && EQ_16( st_fx->cng_type, FD_CNG ) ) || ( st_fx->tcxonly && EQ_16( st_fx->codec_mode, MODE2 ) ) )
{
@@ -964,23 +947,6 @@ void ivas_updt_dec_common_fx(
test();
test();
test();
-#ifdef IVAS_CODE
- /* Store long-term estimates of stab_fac and log energy diff to estimate env_stab in case of core switch ACELP/TCX->HQ */
- if ( st->element_mode != EVS_MONO )
- {
- output_frame = NS2SA( st->output_Fs, FRAME_SIZE_NS );
- log_energy = log2f( ( sum2_f( synth, output_frame ) / output_frame ) + 1.0f );
- log_energy_diff = fabsf( st->log_energy_old - log_energy );
- st->log_energy_old = log_energy;
- st->log_energy_diff_lt = ENV_SMOOTH_FAC * log_energy_diff + ( 1.0f - ENV_SMOOTH_FAC ) * st->log_energy_diff_lt;
- if ( st->core == HQ_CORE )
- {
- st->stab_fac = min( 1, ( STAB_FAC_EST1 + ( STAB_FAC_EST2 * st->hHQ_core->mem_env_delta ) + ( STAB_FAC_EST3 * st->log_energy_diff_lt ) ) );
- st->stab_fac = max( 0, st->stab_fac );
- }
- st->stab_fac_smooth_lt = ENV_SMOOTH_FAC * st->stab_fac + ( 1.0f - ENV_SMOOTH_FAC ) * st->stab_fac_smooth_lt;
- }
-#else
IF( st_fx->element_mode != EVS_MONO )
{
Word16 q_div = sub( Q31, shl( Qpostd, 1 ) );
@@ -1003,7 +969,6 @@ void ivas_updt_dec_common_fx(
st_fx->stab_fac_smooth_lt_fx = extract_h( L_add( L_mult( ENV_SMOOTH_FAC_FX, st_fx->stab_fac_fx ),
L_mult( sub( MAX_16, ENV_SMOOTH_FAC_FX ), st_fx->stab_fac_smooth_lt_fx ) ) ); // Q15
}
-#endif
test();
test();
diff --git a/lib_enc/ACcontextMapping_enc_fx.c b/lib_enc/ACcontextMapping_enc_fx.c
index 43bd30fd4a5a3d9514160fc45397991ee27fbfb9..5003712b7ceda9821bc022dd7e0275be48282386 100644
--- a/lib_enc/ACcontextMapping_enc_fx.c
+++ b/lib_enc/ACcontextMapping_enc_fx.c
@@ -1826,519 +1826,3 @@ Word16 RCcontextMapping_encode2_estimate_bandWise_fx(
return bandBits;
}
-
-
-#ifdef IVAS_CODE_RANGE_CODER
-
-/*-------------------------------------------------------------------*
- * RCcontextMapping_encode2_estimate_no_mem_s17_LCS()
- *
- * Range coder bit-estimation
- *-------------------------------------------------------------------*/
-
-int16_t RCcontextMapping_encode2_estimate_no_mem_s17_LCS(
- int16_t *x, /* Spectral coefficients */
- const int16_t nt, /* L - size of spectrum (no. of spectral coefficients) */
- int16_t *lastnz_out,
- int16_t *nEncoded, /* No. of spectral coefficients that can be coded without an overflow occuring */
- const int16_t target, /* Target bits */
- int16_t *stop,
- int16_t mode,
- CONTEXT_HM_CONFIG *hm_cfg /* context-based harmonic model configuration */
-)
-{
- /* Common variables */
- int16_t a1, b1;
- int16_t k, pki, lev1;
- uint16_t t;
- int16_t lastnz, lastnz2;
- int16_t rateFlag;
- float bit_estimate;
- int16_t symbol;
- const uint8_t *lookup;
- float nbits2;
-
- /* Initialization */
- bit_estimate = 2.0f;
- nbits2 = 0.f;
-
- /* bits to encode lastnz */
- k = 1;
-
- while ( k < nt / 2 )
- {
- bit_estimate++;
- k = k << 1;
- /* check while condition */
- }
-
- nbits2 = bit_estimate;
-
- if ( hm_cfg )
- {
- int16_t a1_i, b1_i;
- int16_t stop2;
- int16_t total_output_bits;
- int16_t nt_half;
- int32_t c[2], *ctx;
- int32_t p1, p2;
- int16_t ii[2];
- int16_t idx1, idx2, idx;
- int16_t numPeakIndicesOrig = 0, numHoleIndices = 0; /* only to avoid compiler warning */
-
- /* Rate flag */
- if ( target > 400 )
- {
- rateFlag = 2 << NBITS_CONTEXT; /* Select context-A for higher bitrates */
- }
- else
- {
- rateFlag = 0; /* Select context-B for lower bitrates */
- }
-
- nt_half = nt >> 1;
- stop2 = 0;
- c[0] = c[1] = 0;
-
- /* Find last non-zero tuple in the mapped domain signal */
- lastnz = find_last_nz_pair( x, nt, hm_cfg );
-
- lastnz2 = 2;
-
- /* mapped domain */
- numPeakIndicesOrig = hm_cfg->numPeakIndices;
- hm_cfg->numPeakIndices = min( hm_cfg->numPeakIndices, lastnz );
- numHoleIndices = lastnz - hm_cfg->numPeakIndices;
-
- /* Mark hole indices beyond lastnz as pruned */
- for ( k = numHoleIndices; k < hm_cfg->numHoleIndices; ++k )
- {
- hm_cfg->holeIndices[k] = hm_cfg->holeIndices[k] + nt;
- }
-
- ii[0] = numPeakIndicesOrig;
- ii[1] = 0;
-
- p1 = p2 = 0; /* to avoid compilation warnings */
-
- /* Main Loop through the 2-tuples */
- for ( k = 0; k < lastnz; k += 2 )
- {
- a1_i = get_next_coeff_mapped( ii, &p1, &idx1, hm_cfg );
- b1_i = get_next_coeff_mapped( ii, &p2, &idx2, hm_cfg );
-
- idx = min( idx1, idx2 );
-
- /* Get context */
- ctx = &c[p1 | p2];
-
- t = (uint16_t) ( *ctx + rateFlag );
- t += ( nt_half >= idx ) ? 0 : ( 1 << NBITS_CONTEXT );
-
- /* Init current 2-tuple encoding */
- a1 = (int16_t) abs( x[a1_i] );
- b1 = (int16_t) abs( x[b1_i] );
- lev1 = -( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) );
-
- /* Signs Bits */
- bit_estimate += min( a1, 1 );
- bit_estimate += min( b1, 1 );
-
- /* pre-compute address of ari_pk_s17_LC_ext[0][Val_esc] to avoid doing it multiple times inside the loop */
- lookup = &ari_lookup_s17_LC[t] + ( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) );
-
- /* check while condition */
- /* MSBs coding */
- while ( max( a1, b1 ) >= A_THRES )
- {
- pki = lookup[lev1]; /* ESC symbol */
-
- bit_estimate = bit_estimate + ari_bit_estimate_s17_LC[pki][VAL_ESC];
- bit_estimate += 2; /* Add 2 LSB bits corresponding to the bit-plane */
-
- ( a1 ) >>= 1;
- ( b1 ) >>= 1;
-
- lev1 = min( lev1 + ( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) ), 2 << ( NBITS_CONTEXT + NBITS_RATEQ ) );
-
- /* check while condition */
- }
-
- pki = lookup[lev1];
-
- symbol = a1 + A_THRES * b1;
- bit_estimate = bit_estimate + ari_bit_estimate_s17_LC[pki][symbol];
-
- /* Should we truncate? */
- if ( bit_estimate > target )
- {
- stop2 = 1;
-
- if ( *stop )
- {
- break;
- }
- }
- else
- {
- lastnz2 = b1_i + 1;
- nbits2 = bit_estimate;
- }
-
- /* Update context for next 2-tuple */
- if ( p1 == p2 ) /* peak-peak or hole-hole context */
- {
- lev1 >>= NBITS_CONTEXT + NBITS_RATEQ;
-
- if ( lev1 <= 0 )
- {
- t = 1 + ( a1 + b1 ) * ( lev1 + 2 );
- }
- else
- {
- t = 13 + lev1;
- }
-
- *ctx = ( *ctx & 0xf ) * 16 + t;
- }
- else
- {
- /* mixed context */
-
- if ( idx1 & 1 )
- {
- /* update first context */
- c[p1] = update_mixed_context( c[p1], (int16_t) abs( x[a1_i] ) );
- }
-
- if ( idx2 & 1 )
- {
- /* update second context */
- c[p2] = update_mixed_context( c[p2], (int16_t) abs( x[b1_i] ) );
- }
- }
-
- } /*end of the 2-tuples loop*/
-
- total_output_bits = (int16_t) ( bit_estimate + 0.5f );
- if ( *stop )
- {
- total_output_bits = (int16_t) ( nbits2 + 0.5f );
- }
-
- if ( stop2 )
- {
- stop2 = total_output_bits;
- }
- *nEncoded = lastnz2;
- *stop = stop2; /* If zero, it means no overflow occured during bit-estimation */
- *lastnz_out = lastnz;
-
- /* Restore hole indices beyond lastnz */
- for ( k = numHoleIndices; k < hm_cfg->numHoleIndices; ++k )
- {
- hm_cfg->holeIndices[k] = hm_cfg->holeIndices[k] - nt;
- }
- hm_cfg->numPeakIndices = numPeakIndicesOrig;
-
- return (int16_t) ( nbits2 + 0.5f );
- }
- else /* if (!hm_cfg) */
- {
- int16_t esc_nb, cp, rateQ;
- uint16_t s;
- int16_t tot_bits2;
- int16_t overflow_flag = 0;
-
- /* Rate flag */
- if ( target > 400 )
- {
- rateFlag = 2;
- }
- else
- {
- rateFlag = 0; /* Select context-B for lower bitrates */
- }
-
- t = 0;
- s = 0;
- cp = 0;
- lastnz = 1;
- lastnz2 = 0;
- tot_bits2 = 0;
-
- /* Find last non-zero tuple in the mapped domain signal */
- for ( lastnz = ( nt - 2 ); lastnz >= 0; lastnz -= 2 )
- {
- if ( ( x[lastnz] != 0 ) || ( x[lastnz + 1] != 0 ) )
- {
- break;
- }
- }
- lastnz += 2;
- if ( lastnz < 2 )
- {
- lastnz = 2; /* At least one tuple is coded */
- }
-
- lastnz2 = 2;
-
- /* Main Loop through the 2-tuples */
- for ( k = 0; k < lastnz; k += 2 )
- {
- /* Init current 2-tuple encoding */
- a1 = (int16_t) abs( x[k] );
- b1 = (int16_t) abs( x[k + 1] );
- lev1 = 0;
- esc_nb = 0;
- rateQ = rateFlag + ( k > ( nt >> 1 ) );
-
- /* Signs Bits */
- bit_estimate += min( a1, 1 );
- bit_estimate += min( b1, 1 );
-
- /* pre-compute address of ari_pk_s17_LC_ext[0][Val_esc] to avoid doing it multiple times inside the loop */
- lookup = &ari_lookup_s17_LC[t + ( rateQ << NBITS_CONTEXT )];
-
- /* check while condition */
- /* MSBs coding */
- while ( max( a1, b1 ) >= A_THRES )
- {
- pki = lookup[( esc_nb << ( NBITS_CONTEXT + NBITS_RATEQ ) )];
-
- bit_estimate = bit_estimate + ari_bit_estimate_s17_LC[pki][VAL_ESC];
- bit_estimate += 2; /* Add 2 LSB bits corresponding to the bit-plane */
-
- ( a1 ) >>= 1;
- ( b1 ) >>= 1;
-
- lev1++;
- esc_nb = min( lev1, 3 );
-
- /* check while condition */
- }
-
- pki = lookup[( esc_nb << ( NBITS_CONTEXT + NBITS_RATEQ ) )];
-
- symbol = a1 + A_THRES * b1;
- bit_estimate = bit_estimate + ari_bit_estimate_s17_LC[pki][symbol];
-
- /* Should we truncate? */
- if ( bit_estimate > target ) /* Overflow occured */
- {
- overflow_flag = 1;
- }
- else
- {
- if ( abs( x[k] ) || abs( x[k + 1] ) ) /* No overflow & non-zero tuple */
- {
- nbits2 = bit_estimate;
- lastnz2 = k + 2;
- }
- }
-
- /* Update context for next 2-tuple */
- if ( esc_nb < 2 )
- {
- cp = 1 + ( a1 + b1 ) * ( esc_nb + 1 );
- }
- else
- {
- cp = 12 + esc_nb;
- }
- /*shift old bits and replace last 4 bits*/
- s = ( s << 4 ) + cp;
- t = s & 0xFF;
-
- } /*end of the 2-tuples loop*/
-
- tot_bits2 = (int16_t) ( nbits2 + 0.5f );
- if ( lastnz2 < lastnz ) /* Overflow occured because unable to code all tuples */
- {
- overflow_flag = 1;
- }
- if ( mode == -1 )
- {
- tot_bits2 = (int16_t) ( bit_estimate + 0.5f );
- }
- if ( overflow_flag == 0 ) /* No overflow */
- {
- *stop = 0;
- }
- else /* Overflow */
- {
- if ( *stop )
- {
- *stop = tot_bits2;
- }
- else
- {
- *stop = (int16_t) ( bit_estimate + 0.5f );
- }
- }
-
- *lastnz_out = lastnz;
- *nEncoded = lastnz2;
- /* Safety mechanism to avoid overflow */
- if ( lastnz2 == 2 && overflow_flag == 1 )
- {
- for ( k = 0; k < lastnz2; k++ )
- {
- x[k] = 0;
- }
- }
-
- return tot_bits2;
- }
-}
-
-/*-------------------------------------------------------------------*
- * RCcontextMapping_encode2_estimate_bandWise_start()
- *
- * Range coder - start bandwise bit-estimation
- *-------------------------------------------------------------------*/
-
-int16_t RCcontextMapping_encode2_estimate_bandWise_start(
- int16_t *x,
- const int16_t nt,
- const int16_t target,
- HANDLE_RC_CONTEXT_MEM hContextMem )
-{
- int16_t i, k;
-
- /* Rate flag */
- if ( target > 400 )
- {
- hContextMem->rateFlag = 2 << NBITS_CONTEXT;
- }
- else
- {
- hContextMem->rateFlag = 0;
- }
-
- hContextMem->bit_estimate = 2.0f;
-
- /* Init */
- hContextMem->nt_half = nt >> 1;
-
- /* bits to encode lastnz */
- k = 1;
-
- while ( k < hContextMem->nt_half )
- {
- hContextMem->bit_estimate++;
-
- k = k << 1;
- /* check while condition */
- }
-
- /* bits to encode lastnz */
- hContextMem->nbits_old = (int16_t) hContextMem->bit_estimate;
-
- hContextMem->ctx = 0;
- hContextMem->lastnz = 2;
-
- /* Find last non-zero tuple */
-
- for ( i = nt; i >= 4; i -= 2 )
- {
-
- if ( x[i - 2] != 0 || x[i - 1] != 0 )
- {
- hContextMem->lastnz = i;
- break;
- }
- }
-
- return (int16_t) hContextMem->bit_estimate;
-}
-
-/*-------------------------------------------------------------------*
- * RCcontextMapping_encode2_estimate_bandWise()
- *
- * Range coder - bandwise bit-estimation
- *-------------------------------------------------------------------*/
-
-int16_t RCcontextMapping_encode2_estimate_bandWise(
- int16_t *x,
- const int16_t start_line,
- const int16_t end_line,
- HANDLE_RC_CONTEXT_MEM hContextMem )
-{
- int16_t a1, b1, a1_i, b1_i;
- int16_t k, pki, lev1;
- uint16_t t;
- int16_t bandBits = 0;
- int16_t total_output_bits; /* No. of bits after finalization */
- int16_t symbol;
- const uint8_t *lookup;
- int16_t idx;
-
- /* Main Loop through the 2-tuples */
- /*hContextMem->nt_half = end_line >> 1;*/
- for ( k = start_line; k < min( hContextMem->lastnz, end_line ); k += 2 )
- {
- a1_i = k;
- b1_i = k + 1;
-
- idx = k;
-
- /* Get context */
- t = hContextMem->ctx + hContextMem->rateFlag;
- t += ( hContextMem->nt_half >= idx ) ? 0 : ( 1 << NBITS_CONTEXT );
-
- /* Init current 2-tuple encoding */
- a1 = (int16_t) abs( x[a1_i] );
- b1 = (int16_t) abs( x[b1_i] );
- lev1 = -( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) );
-
- /* Signs Bits */
- hContextMem->bit_estimate += min( a1, 1 );
- hContextMem->bit_estimate += min( b1, 1 );
-
- /* pre-compute address of ari_pk_s17_LC_ext[0][Val_esc] to avoid doing it multiple times inside the loop */
- lookup = &ari_lookup_s17_LC[t] + ( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) );
-
- /* check while condition */
- /* MSBs coding */
- while ( max( a1, b1 ) >= A_THRES )
- {
- pki = lookup[lev1];
- hContextMem->bit_estimate = hContextMem->bit_estimate + ari_bit_estimate_s17_LC[pki][VAL_ESC];
- hContextMem->bit_estimate += 2; /* Add the 2 LSB bits that were shifted out */
-
- ( a1 ) >>= 1;
- ( b1 ) >>= 1;
-
- lev1 = min( lev1 + ( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) ), 2 << ( NBITS_CONTEXT + NBITS_RATEQ ) );
- /* check while condition */
- }
-
- pki = lookup[lev1];
- symbol = a1 + A_THRES * b1; /* MSB symbol */
- hContextMem->bit_estimate = hContextMem->bit_estimate + ari_bit_estimate_s17_LC[pki][symbol];
-
- /* Update context */
- lev1 >>= NBITS_CONTEXT + NBITS_RATEQ;
-
- if ( lev1 <= 0 )
- {
- t = 1 + ( a1 + b1 ) * ( lev1 + 2 );
- }
- else
- {
- t = 13 + lev1;
- }
-
- hContextMem->ctx = ( hContextMem->ctx & 0xf ) * 16 + t;
-
- } /*end of the 2-tuples loop*/
- total_output_bits = (int16_t) ( hContextMem->bit_estimate + 0.5f );
-
- bandBits = total_output_bits - hContextMem->nbits_old;
- hContextMem->nbits_old = total_output_bits;
-
- return bandBits;
-}
-
-#endif
diff --git a/lib_enc/acelp_core_enc_fx.c b/lib_enc/acelp_core_enc_fx.c
index 795f03403e1355a49da0ffba61995e412aa6ad98..f942a19ffd8db288686cc7642b6d994b245bef14 100644
--- a/lib_enc/acelp_core_enc_fx.c
+++ b/lib_enc/acelp_core_enc_fx.c
@@ -38,7 +38,6 @@ ivas_error acelp_core_enc_fx(
Word16 pitch_buf_fx[NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/
Word16 *unbits_fx, /* o : number of unused bits Q0*/
STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i/o: TD stereo encoder handle */
- const float tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */
const Word16 Q_new,
const Word16 shift )
{
@@ -107,8 +106,6 @@ ivas_error acelp_core_enc_fx(
* Initialization
*------------------------------------------------------------------*/
- (void) tdm_lsfQ_PCh;
-
Es_pred_fx = 0;
move16();
@@ -394,10 +391,10 @@ ivas_error acelp_core_enc_fx(
test();
IF( !nelp_mode && !ppp_mode )
{
- config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
- st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, st_fx->inactive_coder_type_flag,
- tc_subfr_fx, 0, &nb_bits, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx,
- tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
+ config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
+ st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, st_fx->inactive_coder_type_flag,
+ tc_subfr_fx, 0, &nb_bits, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx,
+ tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
}
/*-----------------------------------------------------------------*
@@ -460,15 +457,16 @@ ivas_error acelp_core_enc_fx(
{
tc_classif_enc_fx( Q_new, st_fx->L_frame, &tc_subfr_fx, &position, attack_flag, st_fx->pitch[0], res_fx );
- config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame,
- -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, tc_subfr_fx, 1, NULL, unbits_fx, st_fx->element_mode, &uc_two_stage_flag,
- tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
+ config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame,
+ -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, tc_subfr_fx, 1, NULL, unbits_fx, st_fx->element_mode, &uc_two_stage_flag,
+ tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
}
/*---------------------------------------------------------------*
* Calculation of prediction for scaled innovation energy
* (for memory-less gain quantizer)
*---------------------------------------------------------------*/
+
IF( nb_bits > 0 )
{
Es_pred_enc_fx( &Es_pred_fx, &indice, st_fx->L_frame, res_fx, st_fx->voicing_fx, nb_bits, 0, Q_new );
@@ -513,9 +511,9 @@ ivas_error acelp_core_enc_fx(
lsp_mid_bck_fx, mCb1_fx, Bin_E_fx, Bin_E_old_fx, mem_syn_bck_fx, mem_w0_bck_fx, streaklimit_fx, pstreaklen_fx );
/* Configure ACELP bit allocation */
- config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame,
- -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, st_fx->inactive_coder_type_flag, tc_subfr_fx, 0, &nb_bits, unbits_fx, 0, &uc_two_stage_flag, 0, 0,
- st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
+ config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame,
+ -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, st_fx->inactive_coder_type_flag, tc_subfr_fx, 0, &nb_bits, unbits_fx, 0, &uc_two_stage_flag, 0, 0,
+ st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode );
/* redo LSF quantization */
lsf_enc_fx( st_fx, lsf_new_fx, lsp_new_fx, lsp_mid_fx, Aq_fx, st_fx->Nb_ACELP_frames, tdm_low_rate_mode, st_fx->GSC_IVAS_mode, Q_new );
@@ -1173,7 +1171,7 @@ ivas_error acelp_core_enc_ivas_fx(
test();
IF( !nelp_mode && !ppp_mode )
{
- config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, st->inactive_coder_type_flag, tc_subfr, 0, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
+ config_acelp1_fx( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, st->inactive_coder_type_flag, tc_subfr, 0, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
}
/*-----------------------------------------------------------------*
@@ -1310,7 +1308,7 @@ ivas_error acelp_core_enc_ivas_fx(
{
tc_classif_enc_fx( Q_new, st->L_frame, &tc_subfr, &position, attack_flag, st->pitch[0], res_fx );
- config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, tc_subfr, 1, NULL, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
+ config_acelp1_fx( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, tc_subfr, 1, NULL, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
}
/*---------------------------------------------------------------*
@@ -1369,7 +1367,7 @@ ivas_error acelp_core_enc_ivas_fx(
lsf_syn_mem_restore_ivas_fx( st, tilt_code_bck_fx, gc_threshold_bck_fx, clip_var_bck_fx, next_force_sf_bck, lsp_new, lsp_mid, clip_var_fx, mem_AR_fx, mem_MA_fx, lsp_new_bck_fx, lsp_mid_bck_fx, Bin_E_fx, Bin_E_old_fx, mem_syn_bck_fx, mem_w0_bck_fx, streaklimit_fx, pstreaklen );
/* Configure ACELP bit allocation */
- config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, st->inactive_coder_type_flag, tc_subfr, 0, &nb_bits, unbits, 0, &uc_two_stage_flag, 0, 0, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
+ config_acelp1_fx( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, st->inactive_coder_type_flag, tc_subfr, 0, &nb_bits, unbits, 0, &uc_two_stage_flag, 0, 0, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode );
/* redo LSF quantization */
lsf_enc_ivas_fx( st, lsf_new_fx, lsp_new, lsp_mid, Aq, tdm_low_rate_mode, 0, NULL, Q_new );
@@ -1378,6 +1376,7 @@ ivas_error acelp_core_enc_ivas_fx(
calc_residu_fx( st, inp, res_fx, Aq );
st->hTdCngEnc->burst_ho_cnt = 0;
move16();
+
/* VOICED frames in SC-VBR */
encod_gen_voic_ivas_fx( st, inp, Aw, Aq, Es_pred_fx, res_fx, syn_fx, exc_fx, exc2_fx, pitch_buf, voice_factors_fx, bwe_exc_fx, unbits, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf_fx, 0, Q_new );
}
@@ -1447,8 +1446,9 @@ ivas_error acelp_core_enc_ivas_fx(
{
/* exc2 buffer is needed only for updating of Aq[] which is needed for core switching */
Copy( exc_fx, exc2_fx, st->L_frame ); // Q_new
-
- stat_noise_uv_enc_ivas_fx( st, epsP, lsp_new, lsp_mid, Aq, exc2_fx, uc_two_stage_flag, Q_new );
+ Word16 q_exc2 = Q_new;
+ move16();
+ stat_noise_uv_enc_ivas_fx( st, epsP, lsp_new, lsp_mid, Aq, exc2_fx, uc_two_stage_flag, &q_exc2 );
}
/*-----------------------------------------------------------------*
diff --git a/lib_enc/acelp_core_switch_enc_fx.c b/lib_enc/acelp_core_switch_enc_fx.c
index 8226748f745c1e5aa4ad7ce41b2a5e027a55b106..76fa6f151d2f431e7062f1a41b00a099016082d7 100644
--- a/lib_enc/acelp_core_switch_enc_fx.c
+++ b/lib_enc/acelp_core_switch_enc_fx.c
@@ -6,37 +6,21 @@
#include "options.h"
#include "cnst.h"
#include "rom_com_fx.h"
-//#include "prot_fx.h"
#include "rom_com.h" /* Common constants */
#include "prot_fx.h" /* Function prototypes */
#include "prot_fx_enc.h" /* Function prototypes */
#include "basop_util.h" /* Function prototypes */
+
/*---------------------------------------------------------------------*
* Local function prototypes
*---------------------------------------------------------------------*/
-static void encod_gen_voic_core_switch_fx( Encoder_State *st_fx,
- const Word16 L_frame_fx,
- const Word16 inp_fx[],
- const Word16 Aq_fx[],
- const Word16 A_fx[],
- const Word16 T_op[],
- Word16 *exc_fx,
- const Word32 core_bitrate_fx,
- Word16 shift,
- Word16 Q_new );
-static void encod_gen_voic_core_switch_ivas_fx( Encoder_State *st_fx,
- const Word16 L_frame_fx,
- const Word16 inp_fx[],
- const Word16 Aq_fx[],
- const Word16 A_fx[],
- const Word16 T_op[],
- Word16 *exc_fx,
- const Word32 core_bitrate_fx,
- Word16 shift,
- Word16 Q_new );
+static void encod_gen_voic_core_switch_fx( Encoder_State *st_fx, const Word16 L_frame_fx, const Word16 inp_fx[], const Word16 Aq_fx[], const Word16 A_fx[], const Word16 T_op[], Word16 *exc_fx, const Word32 core_bitrate_fx, Word16 shift, Word16 Q_new );
+
+static void encod_gen_voic_core_switch_ivas_fx( Encoder_State *st_fx, const Word16 L_frame_fx, const Word16 inp_fx[], const Word16 Aq_fx[], const Word16 A_fx[], const Word16 T_op[], Word16 *exc_fx, const Word32 core_bitrate_fx, Word16 shift, Word16 Q_new );
static void bwe_switch_enc_fx( Encoder_State *st_fx, const Word16 *new_speech );
+
static void bwe_switch_enc_ivas_fx( Encoder_State *st_fx, const Word16 *new_speech );
static Word16 dotprod_satcont( const Word16 *x, const Word16 *y, Word16 qx, Word16 qy, Word16 *qo, Word16 len, Word16 delta );
@@ -151,8 +135,8 @@ void acelp_core_switch_enc_fx(
* Excitation encoding
*----------------------------------------------------------------*/
- config_acelp1( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot,
- GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ );
+ config_acelp1_fx( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot,
+ GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ );
encod_gen_voic_core_switch_fx( st_fx, st_fx->last_L_frame, inp, Aq, A, T_op, exc, cbrate, shift, Q_new );
@@ -275,8 +259,8 @@ void acelp_core_switch_enc_ivas_fx(
* Excitation encoding
*----------------------------------------------------------------*/
- config_acelp1_IVAS( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot,
- GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ );
+ config_acelp1_fx( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot,
+ GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ );
encod_gen_voic_core_switch_ivas_fx( st_fx, st_fx->last_L_frame, inp, Aq, A, T_op, exc, cbrate, shift, Q_new );
diff --git a/lib_enc/acelp_enc_util_fx.c b/lib_enc/acelp_enc_util_fx.c
index 181583e91d23686fd8a753128ec344665e4e27a2..7f57b55da9f685b3d5800308105bf66c623742fe 100644
--- a/lib_enc/acelp_enc_util_fx.c
+++ b/lib_enc/acelp_enc_util_fx.c
@@ -180,9 +180,9 @@ void E_ACELP_conv(
}
void E_ACELP_conv_ivas_fx(
- const Word16 xn2[], /* i Qx*/
+ const Word16 xn2[], /* i Qnew - 1*/
const Word16 h2[], /* i Q12*/
- Word16 cn2[] /* o Q0*/
+ Word16 cn2[] /* o Qnew*/
)
{
Word16 i, k;
@@ -194,14 +194,14 @@ void E_ACELP_conv_ivas_fx(
{
/*cn2[k] = xn2[k]; */
Word64 L_tmp_64;
- L_tmp_64 = W_deposit32_l( L_mult0( xn2[k], 0x800 ) ); /* 4Q11 */
+ L_tmp_64 = W_deposit32_l( L_mult0( xn2[k], 0x800 ) ); /* Qnew -1 + 12 */
FOR( i = 0; i < k; i++ )
{
/*cn2[k]-=cn2[i]*h2[k-i];*/
- L_tmp_64 = W_msu0_16_16( L_tmp_64, cn2[i], h2[k - i] ); /*h2 4Q11*/
+ L_tmp_64 = W_msu0_16_16( L_tmp_64, cn2[i], h2[k - i] ); /*Qnew + 11*/
}
- L_tmp = W_sat_l( L_tmp_64 ); /* 4Q11 */
- cn2[k] = round_fx_o( L_shl_o( L_tmp, 5, &Overflow ), &Overflow ); /* Q0*/
+ L_tmp = W_sat_l( L_tmp_64 ); /* Qnew + 11 */
+ cn2[k] = round_fx_o( L_shl_o( L_tmp, 5, &Overflow ), &Overflow ); /* Qnew*/
move16();
}
}
diff --git a/lib_enc/analy_lp_fx.c b/lib_enc/analy_lp_fx.c
index c2f9d0585d356c513226ee2059d219e835976724..9b6ff2108359dcb6242fd83232ab5972e2236e01 100644
--- a/lib_enc/analy_lp_fx.c
+++ b/lib_enc/analy_lp_fx.c
@@ -3,17 +3,16 @@
====================================================================================*/
#include
-#include "options.h" /* Compilation switches */
-#include "cnst.h" /* Common constants */
-#include "rom_com_fx.h" /* Static table prototypes */
-#include "rom_com.h" /* Static table prototypes */
-#include "rom_enc.h" /* Static table prototypes */
-//#include "prot_fx.h" /* Function prototypes */
+#include "options.h" /* Compilation switches */
+#include "cnst.h" /* Common constants */
+#include "rom_com_fx.h" /* Static table prototypes */
+#include "rom_com.h" /* Static table prototypes */
+#include "rom_enc.h" /* Static table prototypes */
#include "prot_fx.h" /* Function prototypes */
#include "prot_fx_enc.h" /* Function prototypes */
/*-------------------------------------------------------------------*
- * analy_lp()
+ * analy_lp_fx()
*
* Perform LP analysis
*
@@ -23,23 +22,26 @@
* - find interpolated LSPs and convert back to A(z) for all subframes
* - update LSPs for the next frame
*-------------------------------------------------------------------*/
-void analy_lp_ivas_fx(
- const Word16 speech[], /* i :(Q_new) pointer to the speech frame */
- const Word16 L_frame, /* i :(q0) length of the frame */
- const Word16 L_look, /* i :(q0) look-ahead */
- Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */
- Word16 A[], /* o :(q14) A(z) filter coefficients */
+
+void analy_lp_fx(
+ const Word16 speech[], /* i :(Q_new) pointer to the speech frame */
+ const Word16 L_frame, /* i :(q0) length of the frame */
+ const Word16 L_look, /* i :(q0) look-ahead */
+ Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */
+ Word16 A[], /* o :(q14) A(z) filter coefficients */
Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */
- Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */
- Word16 lsp_new[], /* o :(q15) current frame LSPs */
- Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */
- Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */
- const Word16 Top[2], /* i :(q0) open loop pitch lag */
- const Word16 Tnc[2], /* i :(q15) open loop pitch gain */
- const Word32 Core_sr, /* i :(q0) Internal core sampling rate */
- const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */
- Word16 Q_new, /*i: stores Q for speech*/
- Word16 *Q_r /*stores q for ener*/ )
+ Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */
+ Word16 lsp_new[], /* o :(q15) current frame LSPs */
+ Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */
+ Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */
+ const Word16 Top[2], /* i :(q0) open loop pitch lag */
+ const Word16 Tnc[2], /* i :(q15) open loop pitch gain */
+ const Word32 Core_sr, /* i :(q0) Internal core sampling rate */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */
+ Word16 Q_new, /* i : stores Q for speech */
+ Word16 *Q_r /*stores q for ener*/
+)
{
Word16 r_h[M + 1]; /* Autocorrelations of windowed speech MSB */
Word16 r_l[M + 1]; /* Autocorrelations of windowed speech LSB */
@@ -74,19 +76,22 @@ void analy_lp_ivas_fx(
/* Autocorrelations */
autocorr_fx( pt, M, r_h, r_l, &Q_r[1 - i_subfr], wind_length, wind, 0, 0 );
- /*if ( r[0] < 100.0f && no_thr == 0 )*/
- /*r[0] = 100.0f*/
- IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( L_Comp( r_h[0], r_l[0] ) /* Q_r[1 - i_subfr]*/, sub( 31, add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ) ), 100 /*q0*/, 31 ), -1 ) )
+ IF( NE_16( element_mode, EVS_MONO ) )
{
- /*Q_min stores min of 24 and the actual Q for r*/
- Word16 Q_min = s_min( add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ), 24 ); /* comparing q with 24 because exponent of 100 is 7 so max q should be 24*/
- L_Extract( L_shl( 100, Q_min ), &r_h[0], &r_l[0] ); /*extracting high and low components of r[0]*/
- FOR( i = 1; i < 17; i++ )
+ /*if ( r[0] < 100.0f && no_thr == 0 )*/
+ /*r[0] = 100.0f*/
+ IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( L_Comp( r_h[0], r_l[0] ) /* Q_r[1 - i_subfr]*/, sub( 31, add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ) ), 100 /*q0*/, 31 ), -1 ) )
{
- L_Extract( L_shr( L_Comp( r_h[i], r_l[i] ), sub( add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ), Q_min ) ), &r_h[i], &r_l[i] ); /*scaling all the values to q24*/
+ /*Q_min stores min of 24 and the actual Q for r*/
+ Word16 Q_min = s_min( add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ), 24 ); /* comparing q with 24 because exponent of 100 is 7 so max q should be 24*/
+ L_Extract( L_shl( 100, Q_min ), &r_h[0], &r_l[0] ); /*extracting high and low components of r[0]*/
+ FOR( i = 1; i < 17; i++ )
+ {
+ L_Extract( L_shr( L_Comp( r_h[i], r_l[i] ), sub( add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ), Q_min ) ), &r_h[i], &r_l[i] ); /*scaling all the values to q24*/
+ }
+ Q_r[1 - i_subfr] = sub( Q_min, shl( Q_new, 1 ) ); /*updating the q (subtracting shl( Q_new, 1 ) as in later part it is being added-> to maintain q24 )*/
+ move16();
}
- Q_r[1 - i_subfr] = sub( Q_min, shl( Q_new, 1 ) ); /*updating the q (subtracting shl( Q_new, 1 ) as in later part it is being added-> to maintain q24 )*/
- move16();
}
/* Lag windowing */
@@ -124,92 +129,6 @@ void analy_lp_ivas_fx(
return;
}
-void analy_lp_fx(
- const Word16 speech[], /* i : pointer to the speech frame Q_new*/
- const Word16 L_frame, /* i : length of the frame Q0*/
- const Word16 L_look, /* i : look-ahead Q0*/
- Word32 *ener, /* o : residual energy from Levinson-Durbin Q_r*/
- Word16 A[], /* o : A(z) filter coefficients Q14*/
- Word16 epsP_h[], /* o : LP analysis residual energies for each iteration Q_r*/
- Word16 epsP_l[], /* o : LP analysis residual energies for each iteration Q_r*/
- Word16 lsp_new[], /* o : current frame LSPs Q15*/
- Word16 lsp_mid[], /* o : current mid-frame LSPs Q15*/
- Word16 lsp_old[], /* i/o: previous frame unquantized LSPs Q15*/
- const Word16 Top[2], /* i : open loop pitch lag Q0*/
- const Word16 Tnc[2], /* i : open loop pitch gain Q15*/
- const Word32 Core_sr, /* i : Internal core sampling rate Q0*/
- const Word16 sec_chan_low_rate, /* i : flag to signal second channel Q0*/
- Word16 Q_new,
- Word16 *Q_r )
-{
- Word16 r_h[M + 1]; /* Autocorrelations of windowed speech MSB */
- Word16 r_l[M + 1]; /* Autocorrelations of windowed speech LSB */
- Word32 LepsP[M + 1];
- Word16 i, i_subfr, wind_length = 0;
- Word16 *lsp;
- const Word16 *wind = NULL;
- const Word16 *pt;
- Word16 half_frame;
-
- IF( EQ_16( L_frame, L_FRAME ) )
- {
- wind_length = L_LP;
- move16();
- wind = Assym_window_W16fx; /* Q15 */
- }
- ELSE /* L_frame == L_FRAME16k */
- {
- wind_length = L_LP_16k;
- move16();
- wind = assym_window_16k_fx; /* Q15 */
- }
- lsp = lsp_mid; /* Q15 */
- half_frame = shr( L_frame, 1 );
-
- FOR( i_subfr = 0; i_subfr <= 1; i_subfr++ )
- {
- pt = speech + sub( add( half_frame, L_look ), wind_length );
- half_frame = shl( half_frame, 1 );
-
- /* Autocorrelations */
- autocorr_fx( pt, M, r_h, r_l, &Q_r[1 - i_subfr], wind_length, wind, 0, 0 );
-
- /* Lag windowing */
- adapt_lag_wind( r_h, r_l, M, Top[i_subfr], Tnc[i_subfr], Core_sr );
-
- /* Levinson-Durbin */
- E_LPC_lev_dur( r_h, r_l, A, LepsP, M, NULL );
- FOR( i = 0; i <= M; i++ )
- {
- L_Extract( LepsP[i], &epsP_h[i], &epsP_l[i] );
- }
- /*Q_r[... might not be needed from external...*/
- Q_r[1 - i_subfr] = add( Q_r[1 - i_subfr], shl( Q_new, 1 ) );
- move16();
-
- /* Conversion of A(z) to LSPs */
- E_LPC_a_lsp_conversion( A, lsp, lsp_old, M );
-
- lsp = lsp_new; /* Q15 */
- }
- IF( EQ_16( sec_chan_low_rate, 1 ) )
- {
- /* LSP interpolation */
- int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, -2 );
- }
- ELSE
- {
- /* LSP interpolation */
- int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, 0 );
- }
- Copy( lsp_new, lsp_old, M ); /* Q15 */
- *ener = L_Comp( epsP_h[M], epsP_l[M] ); /* Q_r */
- move32();
-
- return;
-}
-
-
/*-------------------------------------------------------------------*
* analy_lp_AMR_WB()
*
diff --git a/lib_enc/analy_sp_fx.c b/lib_enc/analy_sp_fx.c
index 4f96ea2d4872231719e0fdf89912fbdbfec04b0c..7062a30900dc52a2758064a42e9cf34d04fc4da7 100644
--- a/lib_enc/analy_sp_fx.c
+++ b/lib_enc/analy_sp_fx.c
@@ -438,7 +438,7 @@ void ivas_analy_sp_fx(
Word16 *q_fr_bands, /* o : energy in critical frequency bands Q0 */
Word32 *lf_E, /* o : per bin E for first... q_lf_E */
Word16 *q_lf_E, /* o : per bin E for first... Q0 */
- Word16 *Etot, /* o : total input energy Q8 */
+ Word32 *Etot, /* o : total input energy Q24 */
const Word16 min_band, /* i : minimum critical band Q0 */
const Word16 max_band, /* i : maximum critical band Q0 */
Word32 *Bin_E, /* o : per-bin energy spectrum q_Bin_E */
@@ -557,7 +557,7 @@ void ivas_analy_sp_fx(
/* Average total log energy over both half-frames */
/* *Etot = 10.0f * (float)log10(0.5f * *Etot); */
- *Etot = -12800 /* 10.f * logf(0.00001f) in Q8 */;
+ *Etot = -838860800 /* 10.f * log10f(0.00001f) in Q24 : This is when LEtot is 0*/;
move16();
IF( LEtot != 0 )
{
@@ -566,7 +566,7 @@ void ivas_analy_sp_fx(
LEtot = W_shl( LEtot, exp ); // q_fr_bands+2+exp
Ltmp = BASOP_Util_Log10( W_extract_h( LEtot ), sub( 61, add( *q_fr_bands, exp ) ) /* 31-(q_fr_bands+2+exp-32) */ ); // Q25
Ltmp = Mpy_32_32( Ltmp, 1342177280 /* 10.f in Q27 */ ); // (Q25, Q27) -> Q21
- *Etot = extract_h( L_shl( Ltmp, Q24 - Q21 ) ); // Q8
+ *Etot = L_shl( Ltmp, Q24 - Q21 ); // Q24
move16();
}
}
@@ -599,7 +599,7 @@ void ivas_analy_sp_fx(
}
/* Average total log energy over both half-frames */
- *Etot = -12800 /* 10.f * logf(0.00001f) in Q8 */;
+ *Etot = -838860800 /* 10.f * log10f(0.00001f) in Q24 : This is when LEtot is 0*/;
move16();
IF( LEtot != 0 )
{
@@ -607,7 +607,7 @@ void ivas_analy_sp_fx(
LEtot = W_shl( LEtot, exp ); // q_fr_bands+exp
Ltmp = BASOP_Util_Log10( W_extract_h( LEtot ), sub( 62, add( *q_fr_bands, exp ) ) /* 31-(q_fr_bands+1+exp-32) */ ); // Q25
Ltmp = Mpy_32_32( Ltmp, 1342177280 /* 10.f in Q27 */ ); // (Q25, Q27) -> Q21
- *Etot = extract_h( L_shl( Ltmp, Q24 - Q21 ) ); // Q8
+ *Etot = L_shl( Ltmp, Q24 - Q21 ); // Q24
move16();
}
}
@@ -620,7 +620,7 @@ void ivas_analy_sp_fx(
*q_fr_bands = add( *q_fr_bands, exp );
move16();
- exp = sub( getScaleFactor32( band_energies, 2 * NB_BANDS ), 1 );
+ exp = getScaleFactor32( band_energies, 2 * NB_BANDS );
scale_sig32( band_energies, 2 * NB_BANDS, exp ); /* q_band_energies + exp */
*q_band_energies = add( *q_band_energies, exp );
move16();
@@ -634,14 +634,14 @@ void ivas_analy_sp_fx(
move32();
Bin_E[L_FFT - 1] = Bin_E[L_FFT - 2]; // *q_Bin_E
move32();
-
+ Word32 add_const = 21475; // 1e-5 in Q31
FOR( i = 0; i < L_FFT / 2; i++ )
{
Bin_E_old[i] = Bin_E[i]; // *q_Bin_E
move32();
/* PS[i] = ( Bin_E[i] + 1e-5f + Bin_E[i + L_FFT / 2] + 1e-5f ) / 2.0f; */
- PS[i] = W_extract_h( W_mac_32_32( W_mult_32_32( Bin_E[i], ONE_IN_Q30 ), Bin_E[i + L_FFT / 2], ONE_IN_Q30 ) ); // *q_Bin_E
+ PS[i] = W_extract_h( W_add( W_mac_32_32( W_mult_32_32( Bin_E[i], ONE_IN_Q30 ), Bin_E[i + L_FFT / 2], ONE_IN_Q30 ), W_shr( W_shl( add_const, 32 ), sub( 31, *q_Bin_E ) ) ) ); // *q_Bin_E
move32();
/* Bin_E[i] = (float) ( 10.0f * log( PS[i] ) ); */
@@ -860,7 +860,7 @@ static void ivas_find_enr(
* Find the total energy over the input bandwidth
*-----------------------------------------------------------------*/
- etot = *LEtot; // *q_band
+ etot = *LEtot; // *q_band+1
move64();
FOR( i = min_band; i <= max_band; i++ )
{
diff --git a/lib_enc/bw_detect_fx.c b/lib_enc/bw_detect_fx.c
index 8a150d514caea3fc700b04b8921fc25dd0ddef92..819292a5099e6f80243e3a7ecdbbe23c230dc917 100644
--- a/lib_enc/bw_detect_fx.c
+++ b/lib_enc/bw_detect_fx.c
@@ -48,7 +48,7 @@ void bw_detect_fx(
const Word16 mct_on, /* i : flag MCT mode */
const Word16 Q_spec )
{
- Word16 Q_dct;
+ Word16 Q_dct, E_spect_bin, tmp_1;
Word16 i, j, k, bw_max, bin_width, n_bins;
Word16 max_NB, max_WB, max_SWB, max_FB, mean_NB, mean_WB, mean_SWB, mean_FB; /* Q11*/
const Word16 *pt, *pt1;
@@ -324,6 +324,7 @@ void bw_detect_fx(
set16_fx( spect_bin, 1, n_bins );
Q_dct = shl( Q_dct, 1 );
+ E_spect_bin = sub( Q31, Q_dct );
FOR( k = 0; k <= bw_max; k++ )
{
@@ -336,24 +337,33 @@ void bw_detect_fx(
sum32 = L_mac0_o( sum32, *pt1, *pt1, &Overflow );
pt1++;
}
-
- IF( LE_32( sum32, 1 ) )
+ tmp_1 = BASOP_Util_Cmp_Mant32Exp( sum32, E_spect_bin, MAX_32, Q31 - 41 ); /* Any sum32 in Q_dct if it is less than MAX_32 in Q41 will be less than 0.001 */
+ test();
+ IF( st->element_mode != EVS_MONO && tmp_1 < 0 )
{
- /*deal with zero spectrum*/
- spect_bin[i] = -1;
+ spect_bin[i] = -6144; /* log10f( 0.00100000005 ) in Q11 */
move16();
}
ELSE
{
- /* spect_bin[i] = (float)log10(spect_bin[i]);
- = log2(spect_bin[i])*log10(2); */
- e_tmp = norm_l( sum32 );
- L_tmp = L_shl( sum32, e_tmp );
- f_tmp = Log2_norm_lc( L_tmp );
- e_tmp = sub( sub( 30, e_tmp ), Q_dct );
- L_tmp = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */
- spect_bin[i] = round_fx( L_shl( L_tmp, 11 ) ); /* Q11 */
- move16();
+ IF( LE_32( sum32, 1 ) )
+ {
+ /*deal with zero spectrum*/
+ spect_bin[i] = -1;
+ move16();
+ }
+ ELSE
+ {
+ /* spect_bin[i] = (float)log10(spect_bin[i]);
+ = log2(spect_bin[i])*log10(2); */
+ e_tmp = norm_l( sum32 );
+ L_tmp = L_shl( sum32, e_tmp );
+ f_tmp = Log2_norm_lc( L_tmp );
+ e_tmp = sub( sub( 30, e_tmp ), Q_dct );
+ L_tmp = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */
+ spect_bin[i] = round_fx( L_shl( L_tmp, 11 ) ); /* Q11 */
+ move16();
+ }
}
}
}
@@ -1144,15 +1154,20 @@ Word16 set_bw_mct_fx(
{
bw_changed = 1;
move16();
+ }
- FOR( cpe_id = 0; cpe_id < nCPE; cpe_id++ )
+ /*
+ * always set bw for all CPEs even if it is the same value as before,
+ * in case of bw + br switching when changing to MCT, this overwrites
+ * potentially incorrect initial values
+ */
+ FOR( cpe_id = 0; cpe_id < nCPE; cpe_id++ )
+ {
+ FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
{
- FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
- {
- st = hCPE[cpe_id]->hCoreCoder[ch];
- st->bwidth = mct_bwidth;
- move16();
- }
+ st = hCPE[cpe_id]->hCoreCoder[ch];
+ st->bwidth = mct_bwidth;
+ move16();
}
}
return bw_changed;
diff --git a/lib_enc/cng_enc_fx.c b/lib_enc/cng_enc_fx.c
index b031ca5286e5688abb3280298481d225d47d5300..9dea812a6d01a5f464a9fb622dda064334c62c27 100644
--- a/lib_enc/cng_enc_fx.c
+++ b/lib_enc/cng_enc_fx.c
@@ -462,7 +462,6 @@ void CNG_enc_fx(
IF( hTdCngEnc->burst_ho_cnt > 0 )
{
/**allow_cn_step |= ( hTdCngEnc->ho_ener_hist_fx[hTdCngEnc->ho_hist_ptr] > 4 * hTdCngEnc->lp_ener_fx ); */
-#if 1
/*allow_cn_step |= (hDtxEnc->first_CNG || st->element_mode == EVS_MONO) && (hTdCngEnc->ho_ener_hist[hTdCngEnc->ho_hist_ptr] > lp_ener_thr_scale * hTdCngEnc->lp_ener);*/
/* (hTdCngEnc->ho_ener_hist[hTdCngEnc->ho_hist_ptr] > lp_ener_thr_scale * hTdCngEnc->lp_ener); */
L_tmp1 = L_shr( hTdCngEnc->ho_ener_hist_fx[hTdCngEnc->ho_hist_ptr], 2 );
@@ -471,10 +470,6 @@ void CNG_enc_fx(
L_tmp1 = L_add( L_tmp1, L_shr( hTdCngEnc->lp_ener_fx, 8 ) );
}
L_tmp1 = L_sub( L_tmp1, hTdCngEnc->lp_ener_fx );
-#else
- L_tmp1 = L_shr( hTdCngEnc->ho_ener_hist_fx[hTdCngEnc->ho_hist_ptr], 2 );
- L_tmp1 = L_sub( L_tmp1, hTdCngEnc->lp_ener_fx );
-#endif
test();
test();
IF( ( hDtxEnc->first_CNG > 0 || st_fx->element_mode == EVS_MONO ) && L_tmp1 > 0 )
diff --git a/lib_enc/cod4t64_fast.c b/lib_enc/cod4t64_fast_fx.c
similarity index 100%
rename from lib_enc/cod4t64_fast.c
rename to lib_enc/cod4t64_fast_fx.c
diff --git a/lib_enc/cod_ace_fx.c b/lib_enc/cod_ace_fx.c
index d3725dcba73c1b1a10380ea33ca42f9abc403a74..e1914aeb5bb7b2e51f123b8f0ca042512c174644 100644
--- a/lib_enc/cod_ace_fx.c
+++ b/lib_enc/cod_ace_fx.c
@@ -366,8 +366,9 @@ Word16 coder_acelp_fx( /* o : SEGSNR for CL decision *
IF( st->igf != 0 )
{
- prep_tbe_exc_fx( L_frame, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR],
- bwe_exc, gain_preQ, code_preQ, Q_new, T0, T0_frac, st->coder_type, st->core_brate );
+ prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR],
+ bwe_exc, gain_preQ, code_preQ, Q_new, T0, T0_frac, st->coder_type, st->core_brate,
+ st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag );
}
/*---------------------------------------------------------*
diff --git a/lib_enc/cod_tcx_fx.c b/lib_enc/cod_tcx_fx.c
index 4bb44eae27961630ea3f98bab5030ebce5fce018..c40db66789c9f646ee7fb3a82c6ef5e8e6cdc0a5 100644
--- a/lib_enc/cod_tcx_fx.c
+++ b/lib_enc/cod_tcx_fx.c
@@ -138,487 +138,7 @@ void HBAutocorrelation_fx(
move32();
}
}
-#ifdef ADD_IVAS_TNS
-/*-------------------------------------------------------------------*
- * TNSAnalysisStereo()
- *
- *
- *-------------------------------------------------------------------*/
-
-#define SIMILAR_TNS_THRESHOLD ( 0.04f )
-#define TNS_GAIN_THRESHOLD_FOR_WHITE ( 3.0f )
-
-void TNSAnalysisStereo(
- Encoder_State **sts, /* i : encoder state handle */
- float *mdst_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* o : MDST spectrum */
- const int16_t bWhitenedDomain, /* i : whitened domain flag */
- int16_t tnsSize[MCT_MAX_CHANNELS][NB_DIV], /* i : number of tns parameters put into prm */
- int16_t tnsBits[MCT_MAX_CHANNELS][NB_DIV], /* i : number of tns bits in the frame */
- int16_t param_core[][NB_DIV * NPRM_DIV], /* o : TNS parameters */
- const int16_t mct_on /* i : flag mct block (1) or stereo (0) */
-)
-{
- int16_t ch, k, L_spec, L_frame, nSubframes, iFilter;
- float *spectrum;
- Encoder_State *st = NULL;
- TCX_ENC_HANDLE hTcxEnc = NULL;
- int16_t individual_decision[NB_DIV];
- float maxPredictionGain = 0.f, meanPredictionGain;
-
- individual_decision[0] = 0;
- individual_decision[1] = 0;
- L_spec = -1;
- L_frame = -1;
-
- /* TNS filter analysis, loop over channels */
- for ( ch = 0; ch < CPE_CHANNELS; ch++ )
- {
- st = sts[ch];
- if ( st->mct_chan_mode == MCT_CHAN_MODE_IGNORE )
- {
- continue;
- }
-
- hTcxEnc = st->hTcxEnc;
-
- nSubframes = ( hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
-
- for ( k = 0; k < nSubframes; k++ )
- {
- /* reset tns on whitened domain flag */
- if ( !bWhitenedDomain )
- {
- hTcxEnc->bTnsOnWhithenedSpectra[k] = 0;
- hTcxEnc->fUseTns[k] = 0;
- }
-
- if ( st->hTcxCfg->fIsTNSAllowed && ( !bWhitenedDomain || hTcxEnc->bTnsOnWhithenedSpectra[k] ) )
- {
-
- spectrum = hTcxEnc->spectrum[k];
- L_frame = hTcxEnc->L_frameTCX;
- st->hTcxCfg->pCurrentTnsConfig = &st->hTcxCfg->tnsConfig[hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( st->last_core == ACELP_CORE )];
- L_spec = st->hTcxCfg->pCurrentTnsConfig->iFilterBorders[0];
-
- /*-----------------------------------------------------------*
- * Temporal Noise Shaping analysis *
- *-----------------------------------------------------------*/
-
- if ( hTcxEnc->transform_type[k] == TCX_5 )
- {
- /* rearrange LF sub-window lines prior to TNS analysis & filtering */
- tcx5TnsGrouping( L_frame >> 2, L_spec >> 1, spectrum );
- }
-
- /* WMOPS: All initializations are either for safety or static (tables) and thus not to be counted */
- ResetTnsData( &hTcxEnc->tnsData[k] );
- if ( st->hTcxCfg->pCurrentTnsConfig->maxOrder <= 0 )
- {
- break;
- }
-
- CalculateTnsFilt( st->hTcxCfg->pCurrentTnsConfig, spectrum, &hTcxEnc->tnsData[k], NULL );
- }
- }
- }
-
- if ( !mct_on )
- {
- /* TNS decision */
- /* if framing differs between channels, keep the filter decision per channel */
- if ( ( sts[0]->hTcxEnc->transform_type[0] != sts[1]->hTcxEnc->transform_type[0] &&
- sts[0]->hTcxEnc->transform_type[1] != sts[1]->hTcxEnc->transform_type[1] ) ||
- sts[0]->hTcxCfg->fIsTNSAllowed != sts[1]->hTcxCfg->fIsTNSAllowed )
- {
- individual_decision[0] = individual_decision[1] = 1;
- }
- else if ( bWhitenedDomain )
- {
- nSubframes = ( sts[0]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
- for ( k = 0; k < nSubframes; k++ )
- {
- if ( sts[0]->hTcxEnc->bTnsOnWhithenedSpectra[k] != sts[1]->hTcxEnc->bTnsOnWhithenedSpectra[k] )
- {
- individual_decision[k] = 1;
- }
- }
- }
-
- /* framing equal, check for similar filters, if very similar (also indicator for and M signal),
- * use at least the same decision, maybe use the same filter
- */
- {
- int16_t isTCX10;
- isTCX10 = ( sts[0]->hTcxEnc->tcxMode == TCX_20 ) ? 0 : 1;
-
- nSubframes = ( sts[0]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
-
- for ( k = 0; k < nSubframes; k++ )
- {
- if ( sts[0]->hTcxCfg->fIsTNSAllowed && individual_decision[k] != 1 && ( !bWhitenedDomain || sts[0]->hTcxEnc->bTnsOnWhithenedSpectra[k] ) )
- {
- float maxPredGain = -1.0f;
- sts[0]->hTcxCfg->pCurrentTnsConfig = &sts[0]->hTcxCfg->tnsConfig[sts[0]->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( sts[0]->last_core == ACELP_CORE )];
- sts[1]->hTcxCfg->pCurrentTnsConfig = &sts[1]->hTcxCfg->tnsConfig[sts[1]->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( sts[1]->last_core == ACELP_CORE )];
-
-#ifdef DEBUGGING
- assert( sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters == sts[1]->hTcxCfg->pCurrentTnsConfig->nMaxFilters );
-#endif
- for ( iFilter = sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- )
- {
- STnsFilter *pFilter[2];
- struct TnsParameters const *pTnsParameters[2];
- pFilter[0] = sts[0]->hTcxEnc->tnsData[k].filter + iFilter;
- pTnsParameters[0] = sts[0]->hTcxCfg->pCurrentTnsConfig->pTnsParameters + iFilter;
- pFilter[1] = sts[1]->hTcxEnc->tnsData[k].filter + iFilter;
- pTnsParameters[1] = sts[1]->hTcxCfg->pCurrentTnsConfig->pTnsParameters + iFilter;
-
-#ifdef DEBUGGING
- assert( pTnsParameters[0]->startLineFrequency == pTnsParameters[1]->startLineFrequency );
- assert( pTnsParameters[0]->nSubdivisions == pTnsParameters[1]->nSubdivisions );
-#endif
- /* if prediction gain and avgSqrCoef are both close we are pretty sure the filters are quite similar, use the avg of
- * both filters for the decision
- */
- meanPredictionGain = ( pFilter[0]->predictionGain + pFilter[1]->predictionGain ) * 0.5f;
- maxPredictionGain = max( maxPredictionGain, meanPredictionGain );
-
- if ( ( pFilter[0]->predictionGain > pTnsParameters[0]->minPredictionGain ) && ( sts[0]->element_brate < IVAS_80k ) &&
- ( pFilter[1]->predictionGain > pTnsParameters[1]->minPredictionGain ) && ( sts[0]->hTcxEnc->tnsData[k].nFilters == sts[1]->hTcxEnc->tnsData[k].nFilters ) )
- {
- pFilter[0]->predictionGain = pFilter[1]->predictionGain = meanPredictionGain; /* more TNS filter sync at 48kbps */
- }
- if ( ( fabs( pFilter[0]->predictionGain - pFilter[1]->predictionGain ) < SIMILAR_TNS_THRESHOLD * meanPredictionGain ) &&
- ( sts[0]->hTcxEnc->tnsData[k].nFilters == sts[1]->hTcxEnc->tnsData[k].nFilters ) )
- {
- float maxAvgSqrCoef = max( pFilter[0]->avgSqrCoef, pFilter[1]->avgSqrCoef );
- float meanLtpGain = ( sts[0]->hTcxEnc->tcxltp_gain + sts[1]->hTcxEnc->tcxltp_gain ) * 0.5f;
- maxPredGain = max( maxPredGain, meanPredictionGain );
- if ( ( meanPredictionGain > pTnsParameters[0]->minPredictionGain ) || ( maxAvgSqrCoef > pTnsParameters[0]->minAvgSqrCoef ) )
- {
- if ( sts[0]->hTcxEnc->tnsData[k].nFilters > 0 || sts[1]->hTcxEnc->tnsData[k].nFilters > 0 || isTCX10 || meanLtpGain < 0.6f )
- {
- ++sts[0]->hTcxEnc->tnsData[k].nFilters;
- pFilter[0]->filterType = TNS_FILTER_ON;
- ++sts[1]->hTcxEnc->tnsData[k].nFilters;
- pFilter[1]->filterType = TNS_FILTER_ON;
- }
- else
- {
- const float maxEnergyChange = ( GetTCXMaxenergyChange( sts[0]->hTranDet, isTCX10, NSUBBLOCKS, 3 ) + GetTCXMaxenergyChange( sts[1]->hTranDet, isTCX10, NSUBBLOCKS, 3 ) ) * 0.5f;
-
- if ( maxEnergyChange >= pTnsParameters[0]->minEnergyChange )
- {
- ++sts[0]->hTcxEnc->tnsData[k].nFilters;
- pFilter[0]->filterType = TNS_FILTER_ON;
- ++sts[1]->hTcxEnc->tnsData[k].nFilters;
- pFilter[1]->filterType = TNS_FILTER_ON;
- }
- else
- {
- pFilter[0]->filterType = TNS_FILTER_OFF;
- pFilter[1]->filterType = TNS_FILTER_OFF;
- }
- }
- }
- else if ( sts[0]->hTcxEnc->tnsData[k].nFilters > 0 && sts[1]->hTcxEnc->tnsData[k].nFilters > 0 ) /* If a previous filter is turned on */
- {
- pFilter[0]->filterType = TNS_FILTER_ON_ZERO;
- pFilter[1]->filterType = TNS_FILTER_ON_ZERO;
- ++sts[0]->hTcxEnc->tnsData[k].nFilters;
- ++sts[1]->hTcxEnc->tnsData[k].nFilters;
- }
- else if ( sts[0]->hTcxEnc->tnsData[k].nFilters != sts[1]->hTcxEnc->tnsData[k].nFilters ) /* sanity check */
- {
- assert( 0 );
- }
- else
- {
- pFilter[0]->filterType = TNS_FILTER_OFF;
- pFilter[1]->filterType = TNS_FILTER_OFF;
- }
- if ( ( pFilter[0]->filterType == TNS_FILTER_ON ) && ( pFilter[1]->filterType == TNS_FILTER_ON ) && ( sts[0]->element_brate < IVAS_80k ) )
- {
- int16_t tmpIntValue = 0;
- int16_t tmpCoeff[TNS_MAX_FILTER_ORDER];
- int16_t i, maxOrder = max( pFilter[0]->order, pFilter[1]->order );
-
- set_s( tmpCoeff, 0, TNS_MAX_FILTER_ORDER );
- for ( i = 0; i < maxOrder; i++ )
- {
- tmpIntValue = (int16_t) max( tmpIntValue, abs( pFilter[0]->coefIndex[i] - pFilter[1]->coefIndex[i] ) );
- }
- if ( tmpIntValue == 1 ) /* the TNS coefficients are sufficiently similar to equalize the two filters */
- {
- for ( i = maxOrder - 1; i >= 0; i-- )
- {
- tmpCoeff[i] = ( abs( pFilter[0]->coefIndex[i] ) < abs( pFilter[1]->coefIndex[i] ) ? pFilter[0]->coefIndex[i] : pFilter[1]->coefIndex[i] );
- if ( ( tmpIntValue > 0 ) && ( tmpCoeff[i] == 0 ) )
- {
- maxOrder--;
- }
- else
- {
- tmpIntValue = 0;
- }
- }
- /* make sure that maxOrder is non zero and not all coefficients are zero (could happen in rare cases) */
- if ( maxOrder > 0 )
- {
- for ( i = TNS_MAX_FILTER_ORDER - 1; i >= 0; i-- )
- {
- pFilter[0]->coefIndex[i] = pFilter[1]->coefIndex[i] = tmpCoeff[i];
- }
-
- pFilter[0]->order = pFilter[1]->order = maxOrder;
- }
- }
- }
- }
- else
- {
- individual_decision[k] = 1;
- }
- }
-
- if ( individual_decision[k] == 0 )
- {
- sts[0]->hTcxEnc->fUseTns[k] = ( sts[0]->hTcxEnc->tnsData[k].nFilters > 0 ) ? 1 : 0;
- sts[1]->hTcxEnc->fUseTns[k] = ( sts[1]->hTcxEnc->tnsData[k].nFilters > 0 ) ? 1 : 0;
- }
- else
- {
- sts[0]->hTcxEnc->tnsData[k].nFilters = 0;
- sts[1]->hTcxEnc->tnsData[k].nFilters = 0;
- sts[0]->hTcxEnc->fUseTns[k] = 0;
- sts[1]->hTcxEnc->fUseTns[k] = 0;
- for ( iFilter = sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- )
- {
- sts[0]->hTcxEnc->tnsData[k].filter[iFilter].filterType = TNS_FILTER_OFF;
- sts[1]->hTcxEnc->tnsData[k].filter[iFilter].filterType = TNS_FILTER_OFF;
- }
- }
-
- if ( !bWhitenedDomain && individual_decision[k] == 0 && maxPredGain < TNS_GAIN_THRESHOLD_FOR_WHITE && sts[0]->hTcxEnc->transform_type[k] != TCX_5 )
- {
- sts[0]->hTcxEnc->bTnsOnWhithenedSpectra[k] = 1;
- sts[1]->hTcxEnc->bTnsOnWhithenedSpectra[k] = 1;
- sts[0]->hTcxEnc->tnsData[k].nFilters = 0;
- sts[1]->hTcxEnc->tnsData[k].nFilters = 0;
- sts[0]->hTcxEnc->fUseTns[k] = 0;
- sts[1]->hTcxEnc->fUseTns[k] = 0;
- for ( iFilter = sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- )
- {
- ClearTnsFilterCoefficients( sts[0]->hTcxEnc->tnsData[k].filter + iFilter );
- ClearTnsFilterCoefficients( sts[1]->hTcxEnc->tnsData[k].filter + iFilter );
- }
- }
- maxPredictionGain = max( maxPredictionGain, maxPredGain );
- }
- }
- }
- }
-
- /* individual decision for each channel */
- for ( ch = 0; ch < CPE_CHANNELS; ch++ )
- {
- if ( sts[ch]->mct_chan_mode == MCT_CHAN_MODE_IGNORE )
- {
- continue;
- }
-
- int16_t isTCX10;
- isTCX10 = ( sts[ch]->hTcxEnc->tcxMode == TCX_20 ) ? 0 : 1;
-
- nSubframes = ( sts[ch]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
-
- for ( k = 0; k < nSubframes; k++ )
- {
- if ( sts[ch]->hTcxCfg->fIsTNSAllowed && ( individual_decision[k] || mct_on ) &&
- ( !bWhitenedDomain || sts[ch]->hTcxEnc->bTnsOnWhithenedSpectra[k] ) )
- {
- float maxPredGain = -1.0f;
-
- sts[ch]->hTcxCfg->pCurrentTnsConfig = &sts[ch]->hTcxCfg->tnsConfig[sts[ch]->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( sts[ch]->last_core == ACELP_CORE )];
-
- for ( iFilter = sts[ch]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- )
- {
- STnsFilter *pFilter;
- const struct TnsParameters *pTnsParameters;
- pFilter = sts[ch]->hTcxEnc->tnsData[k].filter + iFilter;
- pTnsParameters = sts[ch]->hTcxCfg->pCurrentTnsConfig->pTnsParameters + iFilter;
- maxPredGain = max( maxPredGain, pFilter->predictionGain );
-
- if ( ( pFilter->predictionGain > pTnsParameters->minPredictionGain ) || ( pFilter->avgSqrCoef > pTnsParameters->minAvgSqrCoef ) )
- {
- if ( sts[ch]->hTcxEnc->tnsData[k].nFilters > 0 || isTCX10 || sts[ch]->hTcxEnc->tcxltp_gain < 0.6f )
- {
- ++sts[ch]->hTcxEnc->tnsData[k].nFilters;
- pFilter->filterType = TNS_FILTER_ON;
- }
- else
- {
- const float maxEnergyChange = GetTCXMaxenergyChange( sts[ch]->hTranDet, isTCX10, NSUBBLOCKS, 3 );
-
- if ( maxEnergyChange >= pTnsParameters->minEnergyChange )
- {
- ++sts[ch]->hTcxEnc->tnsData[k].nFilters;
- pFilter->filterType = TNS_FILTER_ON;
- }
- else
- {
- pFilter->filterType = TNS_FILTER_OFF;
- }
- }
- }
- else if ( sts[ch]->hTcxEnc->tnsData[k].nFilters > 0 ) /* If a previous filter is turned on */
- {
- pFilter->filterType = TNS_FILTER_ON_ZERO;
- ++sts[ch]->hTcxEnc->tnsData[k].nFilters;
- }
- else
- {
- pFilter->filterType = TNS_FILTER_OFF;
- }
- }
-
- sts[ch]->hTcxEnc->fUseTns[k] = ( sts[ch]->hTcxEnc->tnsData[k].nFilters > 0 ) ? 1 : 0;
-
- if ( !bWhitenedDomain && maxPredGain < TNS_GAIN_THRESHOLD_FOR_WHITE && sts[ch]->hTcxEnc->transform_type[k] != TCX_5 )
- {
- sts[ch]->hTcxEnc->fUseTns[k] = 0;
- sts[ch]->hTcxEnc->bTnsOnWhithenedSpectra[k] = 1;
- sts[ch]->hTcxEnc->tnsData[k].nFilters = 0;
- for ( iFilter = sts[ch]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- )
- {
- ClearTnsFilterCoefficients( sts[ch]->hTcxEnc->tnsData[k].filter + iFilter );
- sts[ch]->hTcxEnc->tnsData[k].filter[iFilter].filterType = TNS_FILTER_OFF;
- }
- }
- maxPredictionGain = max( maxPredictionGain, maxPredGain );
- }
- }
- }
-
-
- /* we have the decision, set filter data accordingly */
- for ( ch = 0; ch < CPE_CHANNELS; ch++ )
- {
- if ( sts[ch]->mct_chan_mode == MCT_CHAN_MODE_IGNORE )
- {
- continue;
- }
-
- nSubframes = ( sts[ch]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
-
- for ( k = 0; k < nSubframes; k++ )
- {
- if ( sts[ch]->hTcxCfg->fIsTNSAllowed && ( !bWhitenedDomain || sts[ch]->hTcxEnc->bTnsOnWhithenedSpectra[k] ) )
- {
- sts[ch]->hTcxCfg->pCurrentTnsConfig = &sts[ch]->hTcxCfg->tnsConfig[sts[ch]->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( sts[ch]->last_core == ACELP_CORE )];
-
- for ( iFilter = sts[ch]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- )
- {
- STnsFilter *pFilter;
- pFilter = sts[ch]->hTcxEnc->tnsData[k].filter + iFilter;
- switch ( pFilter->filterType )
- {
- case TNS_FILTER_OFF:
- ClearTnsFilterCoefficients( sts[ch]->hTcxEnc->tnsData[k].filter + iFilter );
- break;
- case TNS_FILTER_ON_ZERO:
- /* Since TNS filter of order 0 is not allowed we have to signal in the stream filter of order 1 with the 0th coefficient equal to 0 */
- ClearTnsFilterCoefficients( pFilter );
- pFilter->order = 1;
- break;
- }
- }
- }
- }
- }
-
- /* Apply filters, loop over channels */
- for ( ch = 0; ch < CPE_CHANNELS; ch++ )
- {
- st = sts[ch];
- if ( st->mct_chan_mode == MCT_CHAN_MODE_IGNORE )
- {
- continue;
- }
-
- nSubframes = ( st->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
-
- for ( k = 0; k < nSubframes; k++ )
- {
- if ( bWhitenedDomain && ( ch > 0 ) && /* test for identical TNS filter data in both channels */
- sts[0]->hTcxCfg->fIsTNSAllowed && sts[0]->hTcxEnc->fUseTns[k] &&
- sts[1]->hTcxCfg->fIsTNSAllowed && sts[1]->hTcxEnc->fUseTns[k] )
- {
- int16_t equalFilterData = ( sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters == sts[1]->hTcxCfg->pCurrentTnsConfig->nMaxFilters &&
- sts[0]->hTcxEnc->bTnsOnWhithenedSpectra[k] == sts[1]->hTcxEnc->bTnsOnWhithenedSpectra[k] &&
- sts[0]->hTcxEnc->tnsData[k].nFilters == sts[1]->hTcxEnc->tnsData[k].nFilters )
- ? 1
- : 0;
- if ( equalFilterData )
- {
- for ( iFilter = st->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- )
- {
- const int16_t *pDataCh0 = (const int16_t *) &sts[0]->hTcxEnc->tnsData[k].filter[iFilter];
- const int16_t *pDataCh1 = (const int16_t *) &sts[1]->hTcxEnc->tnsData[k].filter[iFilter];
- int16_t i = 2 + TNS_MAX_FILTER_ORDER; /* excl. informative float data. Portable? */
-
- while ( ( i >= 0 ) && ( pDataCh0[i] == pDataCh1[i] ) )
- {
- i--;
- }
- if ( i >= 0 )
- {
- equalFilterData = 0;
- break;
- }
- }
- if ( equalFilterData )
- {
- st->hTcxEnc->tnsData[k].nFilters *= -1; /* signals common TNS */
- }
- }
- }
- if ( st->hTcxCfg->fIsTNSAllowed && ( !bWhitenedDomain || st->hTcxEnc->bTnsOnWhithenedSpectra[k] ) )
- {
- L_spec = st->hTcxCfg->pCurrentTnsConfig->iFilterBorders[0];
- spectrum = st->hTcxEnc->spectrum[k];
- /* If TNS should be used then get the residual after applying it inplace in the spectrum */
- if ( st->hTcxEnc->fUseTns[k] )
- {
- st->hTcxCfg->pCurrentTnsConfig = &st->hTcxCfg->tnsConfig[st->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( st->last_core == ACELP_CORE )];
-
- ApplyTnsFilter( st->hTcxCfg->pCurrentTnsConfig, &st->hTcxEnc->tnsData[k], spectrum, 1 );
- }
-
- if ( st->hTcxEnc->transform_type[k] == TCX_5 )
- {
- tcx5TnsUngrouping( L_frame >> 2, L_spec >> 1, st->hTcxEnc->spectrum[k], ENC );
- }
-
- st->hTcxEnc->tnsData[k].tnsOnWhitenedSpectra = st->hTcxEnc->bTnsOnWhithenedSpectra[k];
-
- EncodeTnsData( st->hTcxCfg->pCurrentTnsConfig, &st->hTcxEnc->tnsData[k], param_core[ch] + k * NPRM_DIV + 1 + NOISE_FILL_RANGES + LTPSIZE, tnsSize[ch] + k, tnsBits[ch] + k );
- }
-
- if ( st->hTcxEnc->transform_type[k] == TCX_5 )
- {
- tcx5SpectrumInterleaving( st->hTcxCfg->tcx5SizeFB, st->hTcxEnc->spectrum[k] );
- tcx5SpectrumInterleaving( st->hTcxCfg->tcx5SizeFB, mdst_spectrum[ch][k] );
- }
- }
- }
-
- return;
-}
-
-
-#endif
void TNSAnalysis_fx(
TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */
Word16 L_frame, /* input: frame length */
@@ -1317,154 +837,6 @@ void ShapeSpectrum_ivas_fx(
}
}
-#ifdef ADD_IVAS_TNS
-/*-----------------------------------------------------------*
- * EstimateStereoTCXNoiseLevel()
- *
- * Estimate and quantize stereo noise factors
- *-----------------------------------------------------------*/
-
-void EstimateStereoTCXNoiseLevel(
- Encoder_State **sts, /* i : state handle */
- float *q_spectrum[CPE_CHANNELS][NB_DIV], /* i : quantized MDCT spectrum */
- float gain_tcx[][NB_DIV], /* i : global gain */
- int16_t L_frame[][NB_DIV], /* i : frame length */
- int16_t noiseFillingBorder[][NB_DIV], /* i : noise filling border */
- int16_t hm_active[][NB_DIV], /* i : flag indicating if the harmonic model is active */
- const int16_t ignore_chan[], /* i : flag indicating whether the channel should be ignored */
- float fac_ns[][NB_DIV], /* o : noise filling level */
- int16_t param_core[][NB_DIV * NPRM_DIV], /* o : quantized noise filling level */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-)
-{
- int16_t ch, n;
- int16_t nSubframes, maxNfCalcBw, iStart, noiseTransWidth;
- float smooth_gain;
- float combined_q_spectrum[N_MAX];
- int16_t *fac_ns_q;
- int32_t total_brate;
-
- for ( ch = 0; ch < CPE_CHANNELS; ch++ )
- {
- Encoder_State *st = sts[ch];
- TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc;
-
- nSubframes = ( st->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
-
- if ( ignore_chan[ch] )
- {
- continue;
- }
- total_brate = ( st->element_mode == IVAS_CPE_MDCT && !MCT_flag ) ? st->element_brate : st->total_brate;
-
- for ( n = 0; n < nSubframes; n++ )
- {
- fac_ns_q = param_core[ch] + n * NPRM_DIV + 1;
- maxNfCalcBw = min( noiseFillingBorder[ch][n], (int16_t) ( hTcxEnc->measuredBwRatio * (float) L_frame[ch][n] + 0.5f ) );
- if ( ( total_brate >= HQ_96k && ( st->element_mode <= IVAS_SCE || st->bwidth < SWB ) ) || total_brate > IVAS_192k )
- {
- fac_ns[ch][n] = 0.0f;
- *fac_ns_q = 0;
- }
- else
- {
- iStart = L_frame[ch][n] / ( ( total_brate >= ACELP_13k20 && !st->rf_mode ) ? 6 : 8 ); /* noise filling start bin*/
-
- if ( n == 0 )
- {
- mvr2r( hTcxEnc->ltpGainMemory, &hTcxEnc->ltpGainMemory[1], N_LTP_GAIN_MEMS - 1 );
- hTcxEnc->ltpGainMemory[0] = st->hTcxEnc->tcxltp_gain;
- }
-
- smooth_gain = dotp( hTcxEnc->ltpGainMemory, nf_tw_smoothing_coeffs, N_LTP_GAIN_MEMS );
-
- noiseTransWidth = GetTransWidth( st->tcxonly, ( L_frame[ch][n] == st->L_frame >> 1 ), smooth_gain, ( st->hTcxCfg->ctx_hm && st->last_core != ACELP_CORE && hm_active[ch][n] ) );
-
- mvr2r( q_spectrum[ch][n], combined_q_spectrum, L_frame[ch][n] );
- tcx_noise_factor( hTcxEnc->spectrum[n], combined_q_spectrum, iStart, maxNfCalcBw, noiseTransWidth, L_frame[ch][n], gain_tcx[ch][n], hTcxEnc->noiseTiltFactor, &fac_ns[ch][n], fac_ns_q, st->element_mode );
-
- /* hysteresis for very tonal passages (more stationary noise filling level) */
- if ( *fac_ns_q == 1 )
- {
- hTcxEnc->noiseLevelMemory_cnt = (int16_t) min( INT16_MAX, 1 + abs( hTcxEnc->noiseLevelMemory_cnt ) ); /* update counter */
- }
- else
- {
- if ( ( *fac_ns_q == 2 ) && ( abs( hTcxEnc->noiseLevelMemory_cnt ) > 5 ) )
- {
- *fac_ns_q = 1; /* reduce noise filling level by one step */
- fac_ns[ch][n] = 0.75f / ( 1 << NBITS_NOISE_FILL_LEVEL );
-
- /* signal that noise level is changed by inverting sign of level memory */
- hTcxEnc->noiseLevelMemory_cnt = ( hTcxEnc->noiseLevelMemory_cnt < 0 ) ? 5 : -1 - hTcxEnc->noiseLevelMemory_cnt;
- }
- else
- {
- hTcxEnc->noiseLevelMemory_cnt = 0; /* reset memory since level is too different */
- }
- }
- } /* bitrate */
- }
-#ifdef DEBUG_MODE_MDCT
- dbgwrite( &smooth_gain, sizeof( float ), 1, 1, "./res/smooth_gain" );
- dbgwrite( &st->hTcxEnc->tcxltp_gain, sizeof( float ), 1, 1, "./res/tcxltp_gain" );
- dbgwrite( &noiseTransWidth, sizeof( int16_t ), 1, 1, "./res/noiseTrans" );
- dbgwrite( &fac_ns[ch][0], sizeof( float ), 2, 1, "./res/fac_ns" );
-#endif
- }
-
- return;
-}
-
-
-/*-----------------------------------------------------------*
- * DecideTonalSideInfo()
- *
- *
- *-----------------------------------------------------------*/
-
-static int16_t DecideTonalSideInfo(
- const float spectrum[],
- const int16_t L_frame_glob,
- float SFM2 )
-{
- float SFM, K, K2;
- int16_t Tonal_SideInfo;
-
- SFM = SFM_Cal( spectrum, min( 200, L_frame_glob ) );
-
- if ( L_frame_glob <= 256 )
- {
- K = 0.4f;
- K2 = 0.1f;
- }
- else if ( L_frame_glob == 320 || L_frame_glob == 512 )
- {
- K = 0.4f;
- K2 = 0.1f;
- }
- else /*FrameSize_Core == 640*/
- {
- K = 0.35f;
- K2 = 0.04f;
- }
-
-
- Tonal_SideInfo = 0;
- if ( SFM < K )
- {
- Tonal_SideInfo = 1;
- }
-
- if ( SFM2 < K2 )
- {
- Tonal_SideInfo = 1;
- }
-
- return Tonal_SideInfo;
-}
-#endif
-
/*-------------------------------------------------------------------*
* GetTransWidth()
*
diff --git a/lib_enc/core_enc_init_fx.c b/lib_enc/core_enc_init_fx.c
index 05f838a3a9011ad9f854add5bc806c8f02fb962a..2f7870ab6e066e873ef432c68027ae6a763cffe3 100644
--- a/lib_enc/core_enc_init_fx.c
+++ b/lib_enc/core_enc_init_fx.c
@@ -53,15 +53,7 @@ void init_coder_ace_plus_fx(
/* Bitrate */
st->tcxonly = (Word8) getTcxonly(
-#ifdef IVAS_CODE_SWITCHING
- st->element_mode,
-#endif
- st->total_brate
-#ifdef IVAS_CODE_SWITCHING
- ,
- MCT_flag, st->is_ism_format
-#endif
- );
+ st->total_brate );
move16();
/* Core Sampling Rate */
diff --git a/lib_enc/core_enc_switch_fx.c b/lib_enc/core_enc_switch_fx.c
index 2f21f1015672d3762613434dc5f43bfbb5482074..fb5fd037a51694a3422381d0784d3368ed1f37e3 100644
--- a/lib_enc/core_enc_switch_fx.c
+++ b/lib_enc/core_enc_switch_fx.c
@@ -49,11 +49,7 @@ void core_coder_mode_switch_fx(
switchWB = 1; /*force init when coming from MODE1*/
}
-#ifdef IVAS_CODE_SWITCHING
- tcxonly_tmp = getTcxonly( st->element_mode, st->total_brate, MCT_flag, st->is_ism_format );
-#else
tcxonly_tmp = getTcxonly( st->total_brate );
-#endif
if ( NE_16( tcxonly_tmp, st->tcxonly ) )
{
@@ -71,11 +67,7 @@ void core_coder_mode_switch_fx(
move32();
st->L_frame = extract_l( Mult_32_16( st->sr_core, 0x0290 ) );
assert( st->L_frame == st->sr_core / 50 );
-#ifdef IVAS_CODE_SWITCHING
- st->tcxonly = getTcxonly( st->element_mode, st->total_brate, MCT_flag, st->is_ism_format );
-#else
st->tcxonly = (Word8) getTcxonly( st->total_brate );
-#endif
/* st->bits_frame_nominal = (int)( (float)st->L_frame/(float)st->fscale ) * (float)FSCALE_DENOM/128.0f * (float)st->bitrate/100.0f + 0.49f ; */
/* st->bits_frame_nominal = extract_l(L_shr(Mpy_32_16_1( L_shl(st->bitrate,8), mult_r(div_s(st->fscale, shl(st->L_frame,4)), FL2WORD16(FSCALE_DENOM/12800.f))), 6)); */
tmp32 = L_shl( st->total_brate, 1 ); /* (float)st->L_frame/(float)st->fscale * (float)FSCALE_DENOM/128.0f * (float)st->bitrate */
@@ -118,9 +110,6 @@ void core_coder_mode_switch_fx(
IF( st->hTcxCfg->fIsTNSAllowed != 0 )
{
InitTnsConfigs( st->bwidth, st->hTcxCfg->tcx_coded_lines, st->hTcxCfg->tnsConfig, st->hIGFEnc->infoStopFrequency, st->total_brate, st->element_mode, MCT_flag );
-#ifdef IVAS_CODE
- SetAllowTnsOnWhite( st->hTcxCfg->tnsConfig, EQ_16( st->element_mode, IVAS_CPE_MDCT ) );
-#endif
}
st->narrowBand = 0;
diff --git a/lib_enc/core_enc_updt_fx.c b/lib_enc/core_enc_updt_fx.c
index ce2681e75e3efa460b226285a570115043c4752a..dcf57738a2e71e29ffe3746110370d1aa4dbc5fa 100644
--- a/lib_enc/core_enc_updt_fx.c
+++ b/lib_enc/core_enc_updt_fx.c
@@ -48,20 +48,6 @@ void core_encode_update_fx( Encoder_State *st )
if ( hTcxEnc != NULL )
{
Copy( hTcxEnc->buf_speech_ltp + st->L_frame, hTcxEnc->buf_speech_ltp, n );
-
-#ifdef IVAS_CODE
- IF( NE_16( st->element_mode, IVAS_CPE_MDCT ) )
- {
- st->hTcxEnc->kernel_switch_corr_past = 0.f;
- st->hTcxEnc->kernel_type[0] = MDCT_IV;
- st->hTcxEnc->kernel_symmetry_past = 0;
- st->hTcxEnc->enc_ste_pre_corr_past = 0;
- move16();
- move16();
- move16();
- move16();
- }
-#endif
}
/* Update previous mode */
diff --git a/lib_enc/corr_xh_fx.c b/lib_enc/corr_xh_fx.c
index 51165d141e93973a92e5c45de7c4a803f7c80075..56b22c2069b96dd3ce2e6b283ebd2c5e7ccfb8ca 100644
--- a/lib_enc/corr_xh_fx.c
+++ b/lib_enc/corr_xh_fx.c
@@ -133,7 +133,7 @@ void corr_xh_ivas_fx(
const Word16 Qx,
Word16 dn[], /* o : correlation between x[] and h[] Qdn*/
Word16 *Qdn,
- const Word16 h[], /* i : impulse response (of weighted synthesis filter) (Q15 - norm_s(h[0]))*/
+ const Word16 h[], /* i : impulse response (of weighted synthesis filter) (Q14 - norm_s(h[0]))*/
const Word16 L_subfr /* i : length of the subframe Q0*/
)
{
@@ -152,16 +152,16 @@ void corr_xh_ivas_fx(
L_maxloc = L_deposit_l( 0 );
FOR( i = k; i < L_subfr; i += STEP )
{
- L_tmp = L_mac( 0, x[i], h[0] ); // Qx+(15 - norm_s(h[0]))
+ L_tmp = L_mac( 0, x[i], h[0] ); // Qx+(14 - norm_s(h[0])) + 1
FOR( j = i; j < L_subfr - 1; j++ )
{
- L_tmp = L_mac_o( L_tmp, x[j + 1], h[j + 1 - i], &Overflow ); // Qx+(15 - norm_s(h[0]))
+ L_tmp = L_mac_o( L_tmp, x[j + 1], h[j + 1 - i], &Overflow ); // Qx+(14 - norm_s(h[0])) + 1
}
- y32[i] = L_tmp; // Qx+(15 - norm_s(h[0]))
+ y32[i] = L_tmp; // Qx+(14 - norm_s(h[0])) + 1
move32();
L_tmp = L_abs( L_tmp );
- L_maxloc = L_max( L_tmp, L_maxloc ); // Qx+(15 - norm_s(h[0]))
+ L_maxloc = L_max( L_tmp, L_maxloc ); // Qx+(14 - norm_s(h[0])) +1
}
/* tot += 3*max / 8 */
L_maxloc = L_shr( L_maxloc, 2 );
@@ -176,11 +176,11 @@ void corr_xh_ivas_fx(
FOR( i = 0; i < L_subfr; i++ )
{
- dn[i] = round_fx( L_shl( y32[i], j ) ); // Qx+(15 - norm_s(h[0])) +j - 16
+ dn[i] = round_fx( L_shl( y32[i], j ) ); // Qx+(14 - norm_s(h[0])) + 1 +j - 16
move16();
}
- *Qdn = sub( add( add( Qx, sub( 15, norm_s( h[0] ) ) ), j ), 16 );
+ *Qdn = sub( add( add( Qx, add( sub( 14, norm_s( h[0] ) ), 1 ) ), j ), 16 );
move16();
return;
}
diff --git a/lib_enc/enc_gen_voic_fx.c b/lib_enc/enc_gen_voic_fx.c
index 22af9097ddb2a538140f180f0c87660a2b0d6971..a485a1bf39cca3e3b503ba25c80494a3c8d25231 100644
--- a/lib_enc/enc_gen_voic_fx.c
+++ b/lib_enc/enc_gen_voic_fx.c
@@ -363,13 +363,15 @@ void encod_gen_voic_fx(
exc_fx[i + i_subfr_fx] = round_fx_o( Ltmp, &Overflow ); /* Q0 */
}
}
+
/*-----------------------------------------------------------------*
* Prepare TBE excitation
*-----------------------------------------------------------------*/
- prep_tbe_exc_fx( L_frame, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
+ prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
&voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new,
- T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate );
+ T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate,
+ st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
/*-----------------------------------------------------------------*
* Synthesize speech to update mem_syn[].
@@ -398,9 +400,11 @@ void encod_gen_voic_fx(
hSC_VBR->prev_tilt_code_fx = hLPDmem->tilt_code; /* Q15 */
move16();
}
+
return;
}
+
void encod_gen_voic_ivas_fx(
Encoder_State *st_fx, /* i/o: state structure */
const Word16 speech_fx[], /* i : input speech Qnew -1 */
@@ -518,7 +522,12 @@ void encod_gen_voic_ivas_fx(
set16_fx( code_preQ_fx, 0, L_SUBFR );
shift_wsp = add( Q_new, shift );
-
+#ifdef TEST_HR
+ if ( LT_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) )
+ {
+ shift_wsp = sub( shift_wsp, 1 );
+ }
+#endif
/* set and write harmonicity flag */
harm_flag_acelp = 0;
move16();
@@ -550,8 +559,8 @@ void encod_gen_voic_ivas_fx(
Copy( &res_fx[i_subfr_fx], &exc_fx[i_subfr_fx], L_SUBFR ); /*Q_new*/
- find_targets_ivas_new_fx( speech_fx, hLPDmem->mem_syn, i_subfr_fx, &hLPDmem->mem_w0, p_Aq_fx,
- res_fx, L_SUBFR, p_Aw_fx, st_fx->preemph_fac, xn_fx, cn_fx, h1_fx );
+ find_targets_ivas_fx( speech_fx, hLPDmem->mem_syn, i_subfr_fx, &hLPDmem->mem_w0, p_Aq_fx,
+ res_fx, L_SUBFR, p_Aw_fx, st_fx->preemph_fac, xn_fx, cn_fx, h1_fx );
q_h1 = sub( 14, norm_s( h1_fx[0] ) );
Copy_Scale_sig( h1_fx, h2_fx, L_SUBFR, sub( 11, q_h1 ) ); /*Q11*/
@@ -621,18 +630,33 @@ void encod_gen_voic_ivas_fx(
IF( LE_32( st_fx->core_brate, ACELP_8k00 ) )
{
+#ifdef TEST_HR
+ gain_enc_lbr_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->coder_type, i_subfr_fx, xn_fx, y1_fx, shift_wsp, y2_fx, code_fx,
+ &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, gc_mem, gp_mem, clip_gain_fx, L_SUBFR );
+#else
gain_enc_lbr_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->coder_type, i_subfr_fx, xn_fx, y1_fx, sub( shift_wsp, 1 ), y2_fx, code_fx,
&gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, gc_mem, gp_mem, clip_gain_fx, L_SUBFR );
+#endif
}
ELSE IF( GT_32( st_fx->core_brate, ACELP_32k ) )
{
+#ifdef TEST_HR
+ gain_enc_SQ_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr_fx, xn_fx, y1_fx, y2_fx, code_fx, Es_pred_fx,
+ &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, clip_gain_fx, shift_wsp );
+#else
gain_enc_SQ_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr_fx, xn_fx, y1_fx, y2_fx, code_fx, Es_pred_fx,
&gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, clip_gain_fx, sub( shift_wsp, 1 ) );
+#endif
}
ELSE
{
+#ifdef TEST_HR
+ gain_enc_mless_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->element_mode, L_frame, i_subfr_fx, -1, xn_fx, y1_fx, shift_wsp, y2_fx, code_fx, Es_pred_fx,
+ &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, clip_gain_fx );
+#else
gain_enc_mless_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->element_mode, L_frame, i_subfr_fx, -1, xn_fx, y1_fx, sub( shift_wsp, 1 ), y2_fx, code_fx, Es_pred_fx,
&gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, clip_gain_fx );
+#endif
}
IF( st_fx->Opt_SC_VBR )
{
@@ -736,10 +760,10 @@ void encod_gen_voic_ivas_fx(
* Prepare TBE excitation
*-----------------------------------------------------------------*/
- prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
- &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new,
- T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate,
- st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
+ prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx,
+ &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new,
+ T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate,
+ st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
/*-----------------------------------------------------------------*
* Synthesize speech to update mem_syn[].
diff --git a/lib_enc/enc_pit_exc_fx.c b/lib_enc/enc_pit_exc_fx.c
index 9180d73b823d3c0096b9548874617676c56baace..bfdf46ea07a7db5a2b3c6db64020d48167b02455 100644
--- a/lib_enc/enc_pit_exc_fx.c
+++ b/lib_enc/enc_pit_exc_fx.c
@@ -250,13 +250,8 @@ void enc_pit_exc_fx(
*----------------------------------------------------------------*/
Copy( &res[i_subfr], &exc[i_subfr], L_subfr ); /* Q_new */
/* condition on target (compared to float) has been put outside the loop */
-#if 1 // ndef BUG_FIX
find_targets_fx( speech, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq,
res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 );
-#else
- find_targets_fx( speech, hGSCEnc->mem_syn_tmp_fx, i_subfr, &hLPDmem->mem_w0, p_Aq, /*_DIFF_FLOAT_FIX_ --> Here I think mem_syn_tmp_fx should be used */
- res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 );
-#endif
Copy_Scale_sig( h1, h2, L_subfr, -2 ); /* Q13 */
Scale_sig( h1, L_subfr, add( 1, shift ) ); /* set h1[] in Q14 with scaling for convolution */
@@ -726,8 +721,8 @@ void enc_pit_exc_ivas_fx(
Copy( &res[i_subfr], &exc[i_subfr], L_subfr ); /* Q_new */
/* condition on target (compared to float) has been put outside the loop */
- find_targets_ivas_new_fx( speech, hGSCEnc->mem_syn_tmp_fx, i_subfr, &hGSCEnc->mem_w0_tmp_fx, p_Aq,
- res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 );
+ find_targets_ivas_fx( speech, hGSCEnc->mem_syn_tmp_fx, i_subfr, &hGSCEnc->mem_w0_tmp_fx, p_Aq,
+ res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 );
q_h1 = sub( 14, norm_s( h1[0] ) );
Copy_Scale_sig( h1, h2, L_subfr, sub( 11, q_h1 ) ); /*Q11*/
diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c
index d6935dd0ce0cbbf841fc6f7917dba300dfd34f33..9802dc15b82071197c49514f3cfd2167ca4d2698 100644
--- a/lib_enc/enc_tran_fx.c
+++ b/lib_enc/enc_tran_fx.c
@@ -308,8 +308,8 @@ Word16 encod_tran_fx(
* Prepare TBE excitation
*-----------------------------------------------------------------*/
- prep_tbe_exc_fx( L_frame_fx, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR],
- bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate );
+ prep_tbe_exc_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR],
+ bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
/*-----------------------------------------------------------------*
* Synthesize speech to update mem_syn[].
@@ -520,7 +520,12 @@ Word16 encod_tran_ivas_fx(
move16();
set16_fx( code_preQ, 0, L_SUBFR );
shift_wsp = add( Q_new, shift );
-
+#ifdef TEST_HR
+ if ( LT_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) )
+ {
+ shift_wsp = sub( shift_wsp, 1 );
+ }
+#endif
/*----------------------------------------------------------------*
* ACELP subframe loop
*----------------------------------------------------------------*/
@@ -535,12 +540,17 @@ Word16 encod_tran_ivas_fx(
Copy( &res_fx[i_subfr], &exc_fx[i_subfr], L_SUBFR ); /* Q_new */
+
find_targets_ivas_fx( speech_fx, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq,
res_fx, L_SUBFR, p_Aw, st_fx->preemph_fac, xn, cn, h1 );
q_h1 = sub( 14, norm_s( h1[0] ) );
Copy_Scale_sig( h1, h2_fx, L_SUBFR, sub( 11, q_h1 ) ); /*Q11*/
+#ifdef TEST_HR
+ Scale_sig( h1, L_SUBFR, sub( 14, q_h1 ) );
+#else
Scale_sig( h1, L_SUBFR, sub( 13, q_h1 ) );
+#endif
/* scaling of xn[] to limit dynamic at 12 bits */
Scale_sig( xn, L_SUBFR, shift );
@@ -559,7 +569,9 @@ Word16 encod_tran_ivas_fx(
IF( GE_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) )
{
+#ifndef TEST_HR
Scale_sig( h1, L_SUBFR, add( 1, shift ) ); /* set h1[] in Q14 with scaling for convolution */
+#endif
transf_cdbk_enc_ivas_fx( st_fx, 0, i_subfr, cn, exc_fx, p_Aq, Aw_fx, h1, xn, xn2, y1, y2, Es_pred_fx,
&gain_pit, gain_code, g_corr, clip_gain, &gain_preQ, code_preQ, unbits, Q_new, shift );
}
@@ -587,22 +599,37 @@ Word16 encod_tran_ivas_fx(
IF( Jopt_flag == 0 )
{
/* SQ gain_code */
+#ifdef TEST_HR
+ gain_enc_tc_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr, xn, y2, code, Es_pred_fx,
+ &gain_pit, &gain_code, &gain_inov, &norm_gain_code, shift_wsp );
+#else
gain_enc_tc_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr, xn, y2, code, Es_pred_fx,
&gain_pit, &gain_code, &gain_inov, &norm_gain_code, sub( shift_wsp, 1 ) );
+#endif
}
ELSE
{
IF( GT_32( st_fx->core_brate, ACELP_32k ) )
{
/* SQ gain_pit and gain_code */
+#ifdef TEST_HR
+ gain_enc_SQ_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr, xn, y1, y2, code, Es_pred_fx,
+ &gain_pit, &gain_code, &gain_inov, &norm_gain_code, g_corr, clip_gain, shift_wsp );
+#else
gain_enc_SQ_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr, xn, y1, y2, code, Es_pred_fx,
&gain_pit, &gain_code, &gain_inov, &norm_gain_code, g_corr, clip_gain, sub( shift_wsp, 1 ) );
+#endif
}
ELSE
{
/* VQ gain_pit and gain_code */
+#ifdef TEST_HR
+ gain_enc_mless_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->element_mode, L_frame_fx, i_subfr, tc_subfr, xn, y1, shift_wsp, y2, code, Es_pred_fx,
+ &gain_pit, &gain_code, &gain_inov, &norm_gain_code, g_corr, clip_gain );
+#else
gain_enc_mless_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->element_mode, L_frame_fx, i_subfr, tc_subfr, xn, y1, sub( shift_wsp, 1 ), y2, code, Es_pred_fx,
&gain_pit, &gain_code, &gain_inov, &norm_gain_code, g_corr, clip_gain );
+#endif
}
}
gp_clip_test_gain_pit_fx( st_fx->element_mode, st_fx->core_brate, gain_pit, st_fx->clip_var_fx );
@@ -687,9 +714,9 @@ Word16 encod_tran_ivas_fx(
* Prepare TBE excitation
*-----------------------------------------------------------------*/
- prep_tbe_exc_ivas_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR],
- bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate,
- st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
+ prep_tbe_exc_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR],
+ bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate,
+ st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag );
/*-----------------------------------------------------------------*
* Synthesize speech to update mem_syn[].
diff --git a/lib_enc/evs_enc_fx.c b/lib_enc/evs_enc_fx.c
index 396e97c6fa5adf5d01e3b2bd3b6ebcd39dd0fbfc..8e9a82378ad94cb3d5046e9e4943f57a63ef1be7 100644
--- a/lib_enc/evs_enc_fx.c
+++ b/lib_enc/evs_enc_fx.c
@@ -169,18 +169,6 @@ ivas_error evs_enc_fx(
{
updt_IO_switch_enc_fx( st, input_frame );
set16_fx( hBWE_TD->old_speech_shb_fx, 0, L_LOOK_16k + L_SUBFR16k );
-#if defined IVAS_CODE
- PMT( "find scaling factor for prev_enr_EnvSHBres, prev_pow_exc16kWhtnd and prev_mix_factor " )
- set16_fx( st->hBWE_TD->old_speech_shb, 0, L_LOOK_16k + L_SUBFR16k );
- set16_fx( st->hBWE_TD->mem_shb_res, 0, MAX_LEN_MA_FILTER );
- set16_fx( st->hBWE_TD->old_EnvSHBres, 0, L_FRAME4k );
- st->hBWE_TD->old_mean_EnvSHBres = 0;
- st->hBWE_TD->prev_enr_EnvSHBres = 1.0f;
- st->hBWE_TD->prev_shb_env_tilt = 0;
- st->hBWE_TD->prev_pow_exc16kWhtnd = 1.0f;
- st->hBWE_TD->prev_mix_factor = 1.0f;
- st->hBWE_TD->prev_Env_error = 0;
-#endif
cldfb_reset_memory( st->cldfbAnaEnc );
cldfb_reset_memory( st->cldfbSynTd );
}
@@ -281,7 +269,7 @@ ivas_error evs_enc_fx(
IF( EQ_16( st->core, ACELP_CORE ) )
{
acelp_core_enc_fx( st, inp, ener, A, Aw, epsP_h, epsP_l, lsp_new, lsp_mid, vad_hover_flag,
- attack_flag, bwe_exc_extended, voice_factors, old_syn_12k8_16k, pitch_buf, &unbits, NULL, NULL, Q_new, shift );
+ attack_flag, bwe_exc_extended, voice_factors, old_syn_12k8_16k, pitch_buf, &unbits, NULL, Q_new, shift );
}
/*---------------------------------------------------------------------*
* HQ core encoding
@@ -466,16 +454,6 @@ ivas_error evs_enc_fx(
{
set16_fx( hBWE_TD->old_speech_shb_fx, 0, L_LOOK_16k + L_SUBFR16k );
set16_fx( shb_speech, 0, L_FRAME16k );
-#if defined IVAS_CODE
- set_f( st->hBWE_TD->mem_shb_res, 0.0f, MAX_LEN_MA_FILTER );
- set_f( st->hBWE_TD->old_EnvSHBres, 0.0f, L_FRAME4k );
- st->hBWE_TD->old_mean_EnvSHBres = 0.0f;
- st->hBWE_TD->prev_enr_EnvSHBres = 1.0f;
- st->hBWE_TD->prev_shb_env_tilt = 0.0f;
- st->hBWE_TD->prev_pow_exc16kWhtnd = 1.0f;
- st->hBWE_TD->prev_mix_factor = 1.0f;
- st->hBWE_TD->prev_Env_error = 0.0f;
-#endif
}
/* SWB TBE encoder */
diff --git a/lib_enc/ext_sig_ana_fx.c b/lib_enc/ext_sig_ana_fx.c
index 200e7e8edc410168b73ffd26a52f84ac35c5bfe4..49d757be3054aaa7a7b2b829c14c21553ba46a77 100644
--- a/lib_enc/ext_sig_ana_fx.c
+++ b/lib_enc/ext_sig_ana_fx.c
@@ -70,24 +70,12 @@ void core_signal_analysis_high_bitrate_fx(
Word32 *tmpP32;
Word16 Q_exp;
-#ifdef IVAS_CODE
- int16_t disable_ltp = 0;
-#endif
TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc;
-#ifndef IVAS_CODE
/* dummy */
(void) vad_hover_flag;
(void) last_element_mode;
-#endif
-#ifdef IVAS_CODE
- if ( NE_16( last_element_mode, st->element_mode ) )
- {
- disable_ltp = 1; /* disable TCX-LTP in stereo switching to avoid discontinuities in synthesis */
- move16();
- }
-#endif
left_overlap = -1;
move16();
right_overlap = -1;
@@ -300,15 +288,6 @@ void core_signal_analysis_high_bitrate_fx(
WindowSignal( st->hTcxCfg, st->hTcxCfg->tcx_offsetFB, overlap_mode[frameno],
overlap_mode[frameno + 1], &left_overlap, &right_overlap, &hTcxEnc->speech_TCX[frameno * tcx10SizeFB],
&L_subframe, tcx20Win, st->element_mode != IVAS_CPE_MDCT /* truncate_aldo */, 1 );
-#ifdef IVAS_CODE
- if ( windowed_samples != NULL ) /* save windowed speech_TCX samples */
- {
- assert( L_subframe + ( left_overlap + right_overlap ) / 2 < 2 * L_FRAME_MAX / nSubframes - L_FRAME_MAX / 8 );
- windowed_samples[frameno * L_FRAME_MAX + 0] = (float) overlap_mode[frameno];
- windowed_samples[frameno * L_FRAME_MAX + 1] = (float) overlap_mode[frameno + 1];
- mvr2r( tcx20Win, windowed_samples + frameno * L_FRAME_MAX + 2, L_subframe + ( left_overlap + right_overlap ) / 2 );
- }
-#endif
}
IF( EQ_16( transform_type[frameno], TCX_5 ) )
@@ -321,15 +300,6 @@ void core_signal_analysis_high_bitrate_fx(
tcx20Win[folding_offset + i] = sub_sat( tcx20Win[folding_offset + i], tcx20Win[folding_offset - 1 - i] ); // Q0
move16();
}
-#ifdef IVAS_CODE
- if ( st->element_mode == IVAS_CPE_MDCT && frameno == 0 && overlap_mode[0] == FULL_OVERLAP && L_subframe - left_overlap > minWindowLen )
- {
- for ( i = minWindowLen; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */
- {
- tcx20Win[left_overlap + i] -= hTcxEnc->speech_TCX[-1 - i] * st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] * st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i];
- }
- }
-#endif
/* Outter right folding */
tmp = shr( right_overlap, 1 );
FOR( i = 0; i < tmp; i++ )
@@ -365,13 +335,6 @@ void core_signal_analysis_high_bitrate_fx(
tmpP16 += tcx5SizeFB;
tmpP32 += tcx5SizeFB;
-#ifdef IVAS_CODE
- /* high-band gain control in case of BWS */
- if ( st->bwidth_sw_cnt > 0 )
- {
- v_multc( hTcxEnc->spectrum[frameno] + i * tcx5SizeFB + L_FRAME16k / ( 2 * nSubframes ), (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, hTcxEnc->spectrum[frameno] + i * tcx5SizeFB + L_FRAME16k / ( 2 * nSubframes ), L_subframe - L_FRAME16k / ( 2 * nSubframes ) );
- }
-#endif
}
}
ELSE /* transform_type[frameno] != TCX_5 */
@@ -414,33 +377,12 @@ void core_signal_analysis_high_bitrate_fx(
}
ELSE
{
-#ifdef IVAS_CODE
- if ( st->element_mode == IVAS_CPE_MDCT && frameno == 0 && transform_type[0] == TCX_10 && overlap_mode[0] == FULL_OVERLAP && L_subframe - left_overlap > minWindowLen )
- {
- for ( i = minWindowLen; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */
- {
- tcx20Win[left_overlap + i] -= hTcxEnc->speech_TCX[-1 - i] * st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] * st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i];
- }
- }
-#endif
TCX_MDCT( tcx20Win, spectrum[frameno], &spectrum_e[frameno], left_overlap, sub( L_subframe, shr( add( left_overlap, right_overlap ), 1 ) ), right_overlap, st->element_mode );
}
/* For TCX20 at bitrates up to 64 kbps we need the power spectrum */
/* high-band gain control in case of BWS */
-#ifdef IVAS_CODE
- if ( st->bwidth_sw_cnt > 0 )
- {
- v_multc( hTcxEnc->spectrum[frameno] + L_FRAME16k / nSubframes, (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, hTcxEnc->spectrum[frameno] + L_FRAME16k / nSubframes, L_subframe - L_FRAME16k / nSubframes );
- }
-
- if ( st->mct_chan_mode == MCT_CHAN_MODE_LFE )
- {
- set_f( &hTcxEnc->spectrum[frameno][MCT_LFE_MAX_LINE], 0.f, L_subframe - MCT_LFE_MAX_LINE );
- st->hTcxCfg->tcx_coded_lines = MCT_LFE_MAX_LINE;
- }
-#endif
IF( NE_16( st->element_mode, IVAS_CPE_MDCT ) )
{
test();
@@ -461,94 +403,6 @@ void core_signal_analysis_high_bitrate_fx(
pMdstWin, powerSpec, &powerSpec_e );
}
}
-#ifdef IVAS_CODE
- if ( st->element_mode == IVAS_CPE_MDCT )
- {
- L_subframe = L_frameTCX / nSubframes;
-
- if ( transform_type[frameno] == TCX_20 && st->hTcxCfg->tcx_last_overlap_mode != TRANSITION_OVERLAP && st->mct_chan_mode != MCT_CHAN_MODE_LFE )
- {
- wtda_ext( hTcxEnc->new_speech_TCX, mdstWin, overlap_mode[frameno], overlap_mode[frameno + 1], L_frameTCX, 3 );
- }
- else
- {
- /* Windowing for the MDST */
- WindowSignal( st->hTcxCfg, st->hTcxCfg->tcx_offsetFB, overlap_mode[frameno] == ALDO_WINDOW ? FULL_OVERLAP : overlap_mode[frameno], overlap_mode[frameno + 1] == ALDO_WINDOW ? FULL_OVERLAP : overlap_mode[frameno + 1], &left_overlap, &right_overlap, &hTcxEnc->speech_TCX[frameno * tcx10SizeFB], &L_subframe, mdstWin, 0, 1 );
- }
-
- if ( transform_type[frameno] == TCX_5 )
- {
- /* Outer left folding */
- for ( i = 0; i < left_overlap / 2; i++ )
- {
- mdstWin[left_overlap / 2 + i] += mdstWin[left_overlap / 2 - 1 - i];
- }
-
- if ( frameno == 0 && overlap_mode[0] == FULL_OVERLAP && L_subframe - left_overlap > minWindowLen )
- {
- for ( i = minWindowLen; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */
- {
- mdstWin[left_overlap + i] += hTcxEnc->speech_TCX[-1 - i] * st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] * st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i];
- }
- }
-
- /* Outer right folding */
- for ( i = 0; i < right_overlap / 2; i++ )
- {
- mdstWin[L_subframe + left_overlap / 2 - 1 - i] -= mdstWin[L_subframe + left_overlap / 2 + i];
- }
-
- /* 2xTCX5 */
- L_subframe = tcx5SizeFB;
- folding_offset = left_overlap / 2;
-
- for ( i = 0; i < 2; i++ )
- {
- assert( st->mct_chan_mode != MCT_CHAN_MODE_LFE );
- WindowSignal( st->hTcxCfg, folding_offset, i == 0 ? RECTANGULAR_OVERLAP : MIN_OVERLAP, i == 1 ? RECTANGULAR_OVERLAP : MIN_OVERLAP, &left_overlap, &right_overlap, mdstWin + i * tcx5SizeFB, &L_subframe, tcx5Win, 0, 1 );
-
- TCX_MDST( tcx5Win, mdst_spectrum[frameno] + i * tcx5SizeFB, left_overlap, L_subframe - ( left_overlap + right_overlap ) / 2, right_overlap, st->element_mode );
- /* high-band gain control in case of BWS */
- if ( st->bwidth_sw_cnt > 0 )
- {
- v_multc( mdst_spectrum[frameno] + i * tcx5SizeFB + L_FRAME16k / ( 2 * nSubframes ), (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, mdst_spectrum[frameno] + i * tcx5SizeFB + L_FRAME16k / ( 2 * nSubframes ), L_subframe - L_FRAME16k / ( 2 * nSubframes ) );
- }
- }
- }
- else /* transform_type[frameno] != TCX_5 */
- {
- if ( transform_type[frameno] == TCX_20 && st->hTcxCfg->tcx_last_overlap_mode != TRANSITION_OVERLAP && st->mct_chan_mode != MCT_CHAN_MODE_LFE )
- {
- edst( mdstWin, mdst_spectrum[frameno], L_subframe, st->element_mode );
-
- v_multc( mdst_spectrum[frameno], (float) sqrt( (float) NORM_MDCT_FACTOR / L_subframe ), mdst_spectrum[frameno], L_subframe );
- }
- else
- {
- if ( frameno == 0 && transform_type[0] == TCX_10 && overlap_mode[0] == FULL_OVERLAP && L_subframe - left_overlap > minWindowLen )
- {
- for ( i = minWindowLen; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */
- {
- mdstWin[left_overlap + i] += hTcxEnc->speech_TCX[-1 - i] * st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] * st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i];
- }
- }
-
- TCX_MDST( mdstWin, mdst_spectrum[frameno], left_overlap, L_subframe - ( left_overlap + right_overlap ) / 2, right_overlap, st->element_mode );
- }
-
- /* high-band gain control in case of BWS */
- if ( st->bwidth_sw_cnt > 0 )
- {
- v_multc( mdst_spectrum[frameno] + L_FRAME16k / nSubframes, (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, mdst_spectrum[frameno] + L_FRAME16k / nSubframes, L_subframe - L_FRAME16k / nSubframes );
- }
- }
-
- if ( st->mct_chan_mode == MCT_CHAN_MODE_LFE )
- {
- set_f( &mdst_spectrum[frameno][MCT_LFE_MAX_LINE], 0.f, L_subframe - MCT_LFE_MAX_LINE );
- }
- }
-#endif
}
IF( NE_16( st->element_mode, IVAS_CPE_MDCT ) )
@@ -559,9 +413,6 @@ void core_signal_analysis_high_bitrate_fx(
st->hTcxCfg->tcx_coded_lines,
transform_type[frameno], ( frameno == 0 ) && ( st->last_core == ACELP_CORE ),
spectrum[frameno], &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL );
-#ifdef IVAS_CODE
- IF( st->hTcxCfg->fIsTNSAllowed )
-#endif
{
EncodeTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, &hTcxEnc->tnsData[frameno],
param_core + frameno * NPRM_DIV + 1 + NOISE_FILL_RANGES + LTPSIZE, pTnsSize + frameno, pTnsBits + frameno );
@@ -583,9 +434,6 @@ void core_signal_analysis_high_bitrate_fx(
* LPC analysis
*---------------------------------------------------------------*/
-#ifdef IVAS_CODE
- IF( st->tcxonly )
-#endif
{
HBAutocorrelation_fx( st->hTcxCfg, lpc_left_overlap_mode, lpc_right_overlap_mode, &st->speech_enc_pe[frameno * tcx10Size],
shr( L_frame, sub( nSubframes, 1 ) ), r, M );
@@ -1401,7 +1249,7 @@ void core_signal_analysis_high_bitrate_ivas_fx(
IF( st->igf )
{
Word16 q_spectrum = sub( Q31, hTcxEnc->spectrum_e[frameno] );
- ProcessIGF_ivas_fx( st, N_MAX + L_MDCT_OVLP_MAX, hTcxEnc->spectrum_fx[frameno], hTcxEnc->spectrum_fx[frameno], &q_spectrum, powerSpec, powerSpec_e, transform_type[frameno] == TCX_20, frameno, 0, vad_hover_flag );
+ ProcessIGF_ivas_fx( st, N_MAX + L_MDCT_OVLP_MAX, hTcxEnc->spectrum_fx[frameno], &q_spectrum, hTcxEnc->spectrum_fx[frameno], q_spectrum, powerSpec, powerSpec_e, transform_type[frameno] == TCX_20, frameno, 0, vad_hover_flag );
}
}
}
diff --git a/lib_enc/find_tar_fx.c b/lib_enc/find_tar_fx.c
index 4f24ec39f89d0468e5fead4014926f6e8497bf5f..989f309d2f2a5ee0305103ec476bc9ca9416ba80 100644
--- a/lib_enc/find_tar_fx.c
+++ b/lib_enc/find_tar_fx.c
@@ -173,141 +173,6 @@ void find_targets_ivas_fx(
Word16 *cn, /* o : target vector in residual domain Q_new*/
Word16 *h1 /* o : impulse response of weighted synthesis filter Q(14 - norm_s(h1[0]))*/
)
-{
- Word16 i;
- Word16 temp[M + 6 * L_SUBFR]; /* error of quantization */
- Word16 scale, scaleq, j, d, s, s2, tmp;
- Word16 Aqs[M + 1];
- Word32 h1_32[6 * L_SUBFR];
- Word16 sf;
- Word64 Ltmp64;
-#ifdef BASOP_NOGLOB_DECLARE_LOCAL
- Flag Overflow = 0;
- move16();
-#endif
- /*------------------------------------------------------------------------*
- * Find the target vector for excitation search:
- *
- * |------| res[n]
- * speech[n]---| A(z) |--------
- * |------| | |--------| error[n] |------|
- * zero -- (-)--| 1/A(z) |-----------| W(z) |-- target
- * exc |--------| |------|
- *
- * Instead of subtracting the zero-input response of filters from
- * the weighted input speech, the above configuration is used to
- * compute the target vector.
- *-----------------------------------------------------------------------*/
- FOR( i = 0; i < M; i++ )
- {
- temp[i] = sub_sat( speech[i + i_subfr - M], mem_syn[i] ); /* Q_new - 1 */
- move16();
- }
- Scale_sig( temp, M, 1 ); // scaling to make belong function output alligned //Qnew
-
- syn_filt_fx( 0, p_Aq, M, &res[i_subfr], temp + M, L_subfr, temp, 0 );
-
- Residu3_fx( Ap, temp + M, xn, L_subfr, 0 ); /* xn in Q_new */
-
- deemph_fx( xn, tilt_fac, L_subfr, mem_w0 ); /* xn in Q_new */
-
- *mem_w0 = shr( *mem_w0, 1 ); // Q_new - 1
-
- /*-----------------------------------------------------------------*
- * Find target in residual domain (cn[]) for innovation search
- *--------------------------------------------------------------*/
- IF( cn != NULL )
- {
- /* first half: xn[] --> cn[] */
- temp[0] = 0;
- move16();
- preemph_copy_fx( xn, cn, tilt_fac, shr( L_subfr, 1 ), temp );
- syn_filt_s_lc_fx( 1, Ap, cn, temp, shr( L_subfr, 1 ) ); /* Q_new -> Q_new - 1 */
- Residu3_lc_fx( p_Aq, M, temp, cn, shr( L_subfr, 1 ), 1 ); /* Q_new - 1 -> Q_new */
-
- /* second half: res[] --> cn[] (approximated and faster) */
- Copy( &res[i_subfr + shr( L_subfr, 1 )], cn + shr( L_subfr, 1 ), shr( L_subfr, 1 ) ); /* Q_new */
- }
- scale_sig( xn, L_subfr, -1 ); // Q_new - 1
-
- /*---------------------------------------------------------------*
- * Compute impulse response, h1[], of weighted synthesis filter *
- *---------------------------------------------------------------*/
-
- scale = norm_s( Ap[0] );
- scaleq = norm_s( p_Aq[0] );
- d = sub( scaleq, scale );
- IF( d >= 0 )
- {
- Copy( p_Aq, Aqs, M + 1 ); /* Q12 */
- s = add( scaleq, 1 );
- s2 = shr( 16384, d );
- }
- ELSE
- {
- Copy_Scale_sig( p_Aq, Aqs, M + 1, d ); /* Q12 */
- s = add( scale, 1 );
- s2 = 16384;
- move16();
- }
-
- set32_fx( h1_32, 0, L_subfr );
- Overflow = 0;
- move16();
- FOR( i = 0; i < M; i++ )
- {
- Ltmp64 = W_mult_16_16( Ap[i], s2 ); /* Q27 */
- FOR( j = 1; j <= i; j++ )
- {
- Ltmp64 = W_msu_16_16( Ltmp64, Aqs[j], extract_h( L_shl_o( h1_32[i - j], s, &Overflow ) ) ); /* Q27 */
- }
- h1_32[i] = W_extract_l( Ltmp64 ); /* Q27 */
- move32();
- }
-
- Ltmp64 = W_mult_16_16( Ap[i], s2 ); /* Q27 */
- FOR( j = 1; j <= M; j++ )
- {
- Ltmp64 = W_msu_16_16( Ltmp64, Aqs[j], extract_h( L_shl_o( h1_32[i - j], s, &Overflow ) ) ); /* Q27 */
- }
- h1_32[M] = W_extract_l( Ltmp64 ); /* Q27 */
- move32();
-
- FOR( i = M + 1; i < L_subfr; i++ )
- {
- Ltmp64 = W_msu_16_16( 0, Aqs[1], extract_h( L_shl_o( h1_32[i - 1], s, &Overflow ) ) ); /* Q27 */
- FOR( j = 2; j <= M; j++ )
- {
- Ltmp64 = W_msu_16_16( Ltmp64, Aqs[j], extract_h( L_shl_o( h1_32[i - j], s, &Overflow ) ) ); /* Q27 */
- }
- h1_32[i] = W_extract_l( Ltmp64 ); /* Q27 */
- move32();
- }
-
- sf = sub( L_norm_arr( h1_32, L_subfr ), 1 );
- Copy_Scale_sig32_16( h1_32, h1, L_subfr, sf ); // Q11 + sf
-
- tmp = 0;
- move16();
- Deemph2( h1, tilt_fac, L_subfr, &tmp ); // Q11 + sf - 1
-
- return;
-}
-
-void find_targets_ivas_new_fx(
- const Word16 *speech, /* i : pointer to the speech frame Q_new-1*/
- const Word16 *mem_syn, /* i : memory of the synthesis filter Q_new-1*/
- const Word16 i_subfr, /* i : subframe index Q0*/
- Word16 *mem_w0, /* i/o: weighting filter denominator memory Q_new-1*/
- const Word16 *p_Aq, /* i : interpolated quantized A(z) filter Q12*/
- const Word16 *res, /* i : residual signal Q_new*/
- const Word16 L_subfr, /* i : length of vectors for gain quantization Q0*/
- const Word16 *Ap, /* i : unquantized A(z) filter with bandwidth expansion Q12*/
- Word16 tilt_fac, /* i : tilt factor Q15*/
- Word16 *xn, /* o : Close-loop Pitch search target vector Q_new-1*/
- Word16 *cn, /* o : target vector in residual domain Q_new*/
- Word16 *h1 /* o : impulse response of weighted synthesis filter Q(14 - norm_s(h1[0]))*/
-)
{
Word16 i;
Word16 temp[M + 6 * L_SUBFR]; /* error of quantization */
@@ -354,13 +219,13 @@ void find_targets_ivas_new_fx(
/* first half: xn[] --> cn[] */
temp[0] = 0;
move16();
- preemph_copy_fx( xn, cn, tilt_fac, L_SUBFR / 2, temp );
- syn_filt_s_lc_fx( 1, Ap, cn, temp, L_SUBFR / 2 ); /* Q-1 -> Q-2 */
- Residu3_lc_fx( p_Aq, M, temp, cn, L_SUBFR / 2, 1 ); /* Q-2 -> Q-1 */
- Scale_sig( cn, L_SUBFR / 2, 1 );
+ preemph_copy_fx( xn, cn, tilt_fac, L_subfr / 2, temp );
+ syn_filt_s_lc_fx( 1, Ap, cn, temp, L_subfr / 2 ); /* Q-1 -> Q-2 */
+ Residu3_lc_fx( p_Aq, M, temp, cn, L_subfr / 2, 1 ); /* Q-2 -> Q-1 */
+ Scale_sig( cn, L_subfr / 2, 1 );
/* second half: res[] --> cn[] (approximated and faster) */
- Copy( &res[i_subfr + ( L_SUBFR / 2 )], cn + ( L_SUBFR / 2 ), L_SUBFR / 2 );
+ Copy( &res[i_subfr + ( L_subfr / 2 )], cn + ( L_subfr / 2 ), L_subfr / 2 );
}
/*---------------------------------------------------------------*
diff --git a/lib_enc/find_tilt_fx.c b/lib_enc/find_tilt_fx.c
index ed8ff425efa6840f334b4f8ad70a35ac646f95a9..dc78719d2b6cbcf57c535a7f86b0fb0e229e00b9 100644
--- a/lib_enc/find_tilt_fx.c
+++ b/lib_enc/find_tilt_fx.c
@@ -329,7 +329,7 @@ void find_tilt_ivas_fx(
{
hp_bckr = L_deposit_l( 1 );
}
- Ltmp = BASOP_Util_Divide3232_Scale_cadence( lp_bckr, hp_bckr, &e_tmp );
+ Ltmp = BASOP_Util_Divide3232_Scale_newton( lp_bckr, hp_bckr, &e_tmp );
Ltmp = Mpy_32_16_r( Ltmp, 3277 /* 0.1f in Q15 */ );
Ltmp = L_shr_sat( Ltmp, sub( 15, e_tmp ) );
*bckr_tilt_lt = L_add_sat( Mpy_32_16_r( *bckr_tilt_lt, 29491 /* 0.9f in Q15 */ ), Ltmp ); // Q16
diff --git a/lib_enc/find_uv_fx.c b/lib_enc/find_uv_fx.c
index 79dc78c6d31dc23cf4e86ffa62c9fbd78f63a9e2..c4fe2e895db461d4cfc4a15ff6aaad577c146168 100644
--- a/lib_enc/find_uv_fx.c
+++ b/lib_enc/find_uv_fx.c
@@ -729,7 +729,7 @@ Word16 find_uv_ivas_fx( /* o : coding typ
* Total frame energy difference (dE3)
*-----------------------------------------------------------------*/
- dE3 = sub( Etot, hNoiseEst->Etot_last_fx ); /*Q8*/
+ dE3 = sub( Etot, extract_h( hNoiseEst->Etot_last_32fx ) ); /*Q8*/
/*-----------------------------------------------------------------*
* Energy decrease after spike (dE2)
diff --git a/lib_enc/gs_enc_fx.c b/lib_enc/gs_enc_fx.c
index 77470c25546c948f20e5b3acb3de766be38742b8..7bf52970d7ff5f02edcaa6417a2b8b3d89cdf2c4 100644
--- a/lib_enc/gs_enc_fx.c
+++ b/lib_enc/gs_enc_fx.c
@@ -78,13 +78,7 @@ void encod_audio_fx(
* Encode GSC attack flag (used to reduce possible pre-echo)
* Encode GSC SWB speech flag
*---------------------------------------------------------------*/
-#ifdef GSC_IVAS // TVB -->>>>>>
- test();
- IF( ( st_fx->element_mode > EVS_MONO ) && st_fx->idchan == 0 )
- {
- push_indice( hBstr, IND_GSC_IVAS_SP, st_fx->GSC_IVAS_mode, 2 );
- }
-#endif
+
IF( attack_flag > 0 )
{
push_indice( hBstr, IND_GSC_ATTACK, 1, 1 );
diff --git a/lib_enc/hq_classifier_enc_fx.c b/lib_enc/hq_classifier_enc_fx.c
index 300e31e8e10c5c4c8183e5a0a31dabc01275a88f..aa2c319f1e9a936c00473a70f6caae499410ee37 100644
--- a/lib_enc/hq_classifier_enc_fx.c
+++ b/lib_enc/hq_classifier_enc_fx.c
@@ -141,9 +141,9 @@ static Word16 hf_spectrum_sparseness_fx(
}
}
Word16 l_shift = W_norm( inv_rms_fx );
- inv_rms32_fx = W_extract_h( W_shl( inv_rms_fx, l_shift ) ); // Q15+l_shift-32
- Word16 q_rms = sub( add( Q15, l_shift ), 32 ); // q_rms
- inv_rms32_div_fx = BASOP_Util_Divide3232_Scale_cadence( inv_rms32_fx, L_SPEC_HB, &inv_rms32_e ); /* Q31-inv_rms32_e */
+ inv_rms32_fx = W_extract_h( W_shl( inv_rms_fx, l_shift ) ); // Q15+l_shift-32
+ Word16 q_rms = sub( add( Q15, l_shift ), 32 ); // q_rms
+ inv_rms32_div_fx = BASOP_Util_Divide3232_Scale_newton( inv_rms32_fx, L_SPEC_HB, &inv_rms32_e ); /* Q31-inv_rms32_e */
inv_rms32_e = sub( 31, add( sub( Q31, inv_rms32_e ), q_rms ) );
// inv_rms = 1.0f / (float) sqrtf( inv_rms / L_SPEC_HB );
inv_rms32_fx = ISqrt32( inv_rms32_div_fx, &inv_rms32_e ); /* Q31-inv_rms32_e */
@@ -194,7 +194,6 @@ Word16 hq_classifier_enc_fx( /* o : Consumed bits
Word16 *hqswb_clas /* o : HQ class Q0 */
)
{
-#ifndef SOLVED_COMP_ENC_DEC
Word16 bits;
HQ_ENC_HANDLE hHQ_core = st_fx->hHQ_core;
@@ -277,88 +276,7 @@ Word16 hq_classifier_enc_fx( /* o : Consumed bits
*hqswb_clas = HQ_GEN_SWB; /* Q0 */
move16();
}
-#else
- Word16 bits;
- HQ_ENC_HANDLE hHQ_core = st_fx->hHQ_core;
- Word32 max_brate;
- Word16 harmonic_decision;
-
-
- max_brate = HQ_32k;
- move32();
- if ( st_fx->element_mode > EVS_MONO )
- {
- max_brate = HQ_48k;
- move32();
- }
-
- *hqswb_clas = HQ_NORMAL;
- bits = 1;
- move16();
- IF( EQ_16( is_transient, 1 ) )
- {
- *hqswb_clas = HQ_TRANSIENT;
- move16();
- }
-
- /* classification and limit bandwidth for bit allocation */
- test();
- IF( EQ_16( length, L_SPEC32k ) || EQ_16( length, L_SPEC48k ) )
- {
- IF( LE_32( st_fx->core_brate, max_brate ) )
- {
- test();
- IF( !is_transient && EQ_16( st_fx->bwidth, st_fx->last_bwidth ) )
- {
- /* Detect HQ_HARMONIC mode */
- *hqswb_clas = peak_avrg_ratio_fx( st_fx->total_brate, coefs, NUMC_N + 96, &hHQ_core->mode_count, &hHQ_core->mode_count1, 12 );
-
-#if 0
- harmonic_decision = hf_spectrum_sparseness( st, coefs );
-#else
- harmonic_decision = 0;
- move16();
-#endif
- test();
- IF( EQ_16( *hqswb_clas, HQ_HARMONIC ) && !harmonic_decision )
- {
- *hqswb_clas = HQ_NORMAL;
- move16();
- }
- ELSE
- {
- /* Detect harmonic VQ mode HQ_HVQ */
- hvq_classifier_fx( coefs, &hHQ_core->prev_Npeaks, hHQ_core->prev_peaks, hqswb_clas, Npeaks, peaks, st_fx->core_brate, st_fx->last_core,
- nf_gains, &hHQ_core->hvq_hangover, pe_gains );
- }
- }
- bits = 2;
- move16();
- }
- }
- ELSE IF( EQ_16( length, L_SPEC16k_EXT ) || EQ_16( length, L_SPEC48k_EXT ) )
- {
- bits = 0; /* HQ_NORMAL only -- no signalling needed */
- move16();
- }
- /* write signalling info to the bitstream */
- push_indice( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas, bits );
-
- IF( LE_32( st_fx->core_brate, HQ_32k ) && EQ_16( *hqswb_clas, HQ_NORMAL ) )
- {
- IF( EQ_16( length, L_SPEC32k ) )
- {
- *hqswb_clas = HQ_GEN_SWB;
- move16();
- }
- ELSE IF( EQ_16( length, L_SPEC48k ) )
- {
- *hqswb_clas = HQ_GEN_FB;
- move16();
- }
- }
-#endif
return bits;
}
Word16 hq_classifier_enc_ivas_fx( /* o : Consumed bits Q0 */
@@ -677,11 +595,8 @@ Word16 peak_avrg_ratio_fx(
test();
test();
test();
-#ifndef SOLVED_COMP_ENC_DEC /*This affect BE even if it shouldn't*/
+
IF( ( GE_16( add( k, k1 ), 5 ) && GT_16( k1, 2 ) && EQ_32( total_brate, HQ_24k40 ) ) || ( ( ( GE_16( add( k, k1 ), 10 ) && GT_16( k1, 5 ) ) || GE_16( *mode_count, 5 ) ) && LT_16( *mode_count1, 5 ) ) )
-#else
- if ( ( GE_16( add( k, k1 ), 5 ) && GT_16( k1, 2 ) && LT_32( total_brate, HQ_BWE_CROSSOVER_BRATE ) ) || ( ( ( GE_16( add( k, k1 ), 10 ) && GT_16( k1, 5 ) ) || GE_16( *mode_count, 5 ) ) && LT_16( *mode_count1, 5 ) ) )
-#endif
{
hqswb_clas = HQ_HARMONIC;
move16();
@@ -1177,11 +1092,7 @@ void hvq_classifier_fx(
L_input_max = L_deposit_l( 0 );
set32_fx( L_thr, 0, L_FRAME16k );
-#ifndef SOLVED_COMP_ENC_DEC
IF( EQ_32( L_core_brate, HQ_24k40 ) )
-#else
- IF( LT_32( L_core_brate, HQ_BWE_CROSSOVER_BRATE ) )
-#endif
{
nsub = HVQ_NSUB_24k;
move16();
@@ -1420,7 +1331,6 @@ void hvq_classifier_fx(
num_peak_cands = add( num_peak_cands, 1 );
}
}
-#ifndef ADD_IVAS_HQ_CODE
IF( EQ_32( L_core_brate, HQ_24k40 ) )
{
peak_th = HVQ_MAX_PEAKS_24k_CLAS;
@@ -1431,9 +1341,6 @@ void hvq_classifier_fx(
peak_th = HVQ_MAX_PEAKS_32k;
move16();
}
-#else
- peak_th = (int16_t) ( ( core_brate * HVQ_PEAKS_PER_DELTA_THR + HVQ_PEAKS_PER_DELTA_THR_OFFS ) / HVQ_PEAKS_BPS_DELTA );
-#endif
/* Find peaks */
pindx = maximum_32_fx( L_input_abs, num_peak_cands, &L_m );
i = 0;
@@ -1555,7 +1462,6 @@ void hvq_classifier_fx(
move16();
}
-#ifndef ADD_IVAS_HQ_CODE
IF( EQ_32( L_core_brate, HQ_24k40 ) )
{
*Npeaks = s_min( HVQ_MAX_PEAKS_24k, *Npeaks ); /* Q0 */
@@ -1566,9 +1472,6 @@ void hvq_classifier_fx(
*Npeaks = s_min( HVQ_MAX_PEAKS_32k, *Npeaks ); /* Q0 */
move16();
}
-#else
- *Npeaks = (int16_t) ( min( ( core_brate * HVQ_PEAKS_PER_DELTA + HVQ_PEAKS_PER_DELTA_OFFS ) / HVQ_PEAKS_BPS_DELTA, *Npeaks ) );
-#endif
}
ELSE
{
@@ -1581,99 +1484,3 @@ void hvq_classifier_fx(
return;
}
-
-#ifdef ADD_IVAS_HQ_CODE
-/*--------------------------------------------------------------------------*
- * hf_spectrum_sparseness()
- *
- * Detection of sparse spectrum in high band for activation of harmonic
- * modes HQ_HARMONIC and HQ_HVQ
- *--------------------------------------------------------------------------*/
-/*! r: Harmonic decision for high band */
-static int16_t hf_spectrum_sparseness(
- Encoder_State *st, /* i/o: encoder state structure */
- const float *coefs /* i : MDCT spectrum */
-)
-{
- int16_t i;
- float thr;
- int16_t low_count;
- float A[L_SPEC_HB];
- float Amax;
- float movmean;
- float inv_rms;
- float crest;
- float crest_mod;
- const float *p_num;
- float *crest_lp;
- float *crest_mod_lp;
- int16_t result;
-
- crest_lp = &st->hHQ_core->crest_lp;
- crest_mod_lp = &st->hHQ_core->crest_mod_lp;
-
- result = TRUE;
- if ( st->element_mode != EVS_MONO )
- {
- for ( i = 0; i < L_SPEC_HB; i++ )
- {
- A[i] = (float) fabsf( coefs[i + L_SPEC_HB] );
- }
- low_count = 0;
- inv_rms = 0.0f;
- crest_mod = 0.0f;
- maximum( A, L_SPEC_HB, &Amax );
- thr = Amax * PEAK_THRESHOLD;
- movmean = 0.0f; /* avoid uninitialized warning */
- p_num = &inv_tbl[HALF_WIN_LENGTH + 1]; /* Table for division 1./(11:21) */
- for ( i = 0; i < L_SPEC_HB; i++ )
- {
- inv_rms += A[i] * A[i];
- if ( A[i] < thr )
- {
- low_count += 1;
- }
- if ( i <= HALF_WIN_LENGTH )
- {
- if ( i == 0 )
- {
- movmean = sum_f( &A[0], i + HALF_WIN_LENGTH + 1 ) * ( *p_num );
- }
- else
- {
- p_num++;
- movmean = movmean + ( A[i + HALF_WIN_LENGTH] - movmean ) * ( *p_num );
- }
- }
- else
- {
- if ( L_SPEC_HB <= i + HALF_WIN_LENGTH )
- {
- p_num--;
- movmean = movmean + ( movmean - A[i - HALF_WIN_LENGTH - 1] ) * ( *p_num );
- }
- else
- {
- movmean = movmean + ( A[i + HALF_WIN_LENGTH] - A[i - HALF_WIN_LENGTH - 1] ) * ( *p_num );
- }
- }
- if ( crest_mod < movmean )
- {
- crest_mod = movmean;
- }
- }
- inv_rms = 1.0f / (float) sqrtf( inv_rms / L_SPEC_HB );
- crest = Amax * inv_rms;
- crest_mod = crest_mod * inv_rms;
- *crest_lp = HQ_CREST_FAC_SM * ( *crest_lp ) + ( 1.0f - HQ_CREST_FAC_SM ) * crest;
- *crest_mod_lp = HQ_CREST_FAC_SM * ( *crest_mod_lp ) + ( 1.0f - HQ_CREST_FAC_SM ) * crest_mod;
-
- if ( ( ( *crest_lp ) > HQ_CREST_THRESHOLD ) && ( ( *crest_mod_lp ) > HQ_CREST_MOD_THRESHOLD ) && ( low_count > LOW_COUNT_THRESHOLD ) )
- {
- result = FALSE;
- }
- }
-
- return result;
-}
-#endif
diff --git a/lib_enc/hq_core_enc_fx.c b/lib_enc/hq_core_enc_fx.c
index 66430cb8e9d0c29403f7711e854942050f46b78a..b5e1abbca2d5383df9a9a9538635b2e2cad57058 100644
--- a/lib_enc/hq_core_enc_fx.c
+++ b/lib_enc/hq_core_enc_fx.c
@@ -35,15 +35,6 @@ void hq_core_enc_fx(
Word16 tmp;
Word32 L_tmp;
UWord16 lsb;
-#ifdef ADD_IVAS_HQ_CODE_L_SPEC
- Word16 L_spec;
-#endif
-#ifdef ADD_IVAS_HQ_CODE
- Word16 left_overlap, right_overlap;
- Word16 overlap, nz, tcx_offset, L_frame;
- Word16 Aq_old[M + 1];
- Word16 output[L_FRAME16k];
-#endif
Word16 two_frames_buffer[2 * L_FRAME48k];
BSTR_ENC_HANDLE hBstr = st_fx->hBstr;
@@ -87,37 +78,6 @@ void hq_core_enc_fx(
is_transient = detect_transient_fx( audio, input_frame, 0, st_fx ); /* Q0 */
-#ifdef ADD_IVAS_HQ_CODE
- test();
- test();
- test();
- IF( ( st_fx->element_mode > EVS_MONO ) && ( ( st_fx->last_core == ACELP_CORE ) || EQ_16( st_fx->last_core, AMR_WB_CORE ) ) )
- {
- /*--------------------------------------------------------------------------
- * IVAS switching frame
- *--------------------------------------------------------------------------*/
-
- L_spec = input_frame;
- left_overlap = -1;
- right_overlap = -1;
- move16();
- move16();
- move16();
-
- WindowSignal( &( st_fx->tcx_cfg ), st_fx->hTcxCfg->tcx_offsetFB, TRANSITION_OVERLAP, FULL_OVERLAP, &left_overlap, &right_overlap, st_fx->hTcxEnc->speech_TCX, &L_spec, wtda_audio, 1, 1 );
- Q_audio = 16;
- move16(); /*tbv inspired from core_enc_ol*/
- TCX_MDCT( wtda_audio, t_audio, &Q_audio, left_overlap, sub( L_spec, shr( add( left_overlap, right_overlap ), 1 ) ), right_overlap, st_fx->element_mode );
-
- inner_frame = inner_frame_tbl[st_fx->bwidth];
- L_spec = l_spec_ext_tbl[st_fx->bwidth];
- is_transient = 0;
- move16();
- move16();
- move16();
- }
- ELSE
-#endif
{
/*--------------------------------------------------------------------------
* Windowing and time-domain aliasing
@@ -144,10 +104,8 @@ void hq_core_enc_fx(
move16();
}
}
-#ifndef ADD_IVAS_HQ_CODE
/* subtract signalling bits */
num_bits = sub( num_bits, hBstr->nb_bits_tot ); /* Q0 */
-#endif
direct_transform_fx( wtda_audio, t_audio, is_transient, input_frame, &Q_audio, st_fx->element_mode );
/* scale coefficients to their nominal level (8kHz) */
@@ -174,10 +132,6 @@ void hq_core_enc_fx(
/* limit encoded band-width according to the command-line OR BWD limitation */
inner_frame = inner_frame_tbl[st_fx->bwidth]; /* Q0 */
move16();
-#ifdef ADD_IVAS_HQ_CODE_L_SPEC
- L_spec = l_spec_tbl[st_fx->bwidth];
- move16();
-#endif
IF( GT_16( input_frame, inner_frame ) )
{
IF( EQ_16( is_transient, 1 ) )
@@ -193,31 +147,10 @@ void hq_core_enc_fx(
set32_fx( t_audio + inner_frame, 0, sub( input_frame, inner_frame ) );
}
}
-#ifdef ADD_IVAS_HQ_CODE_L_SPEC
- /* subtract signalling bits */
- num_bits = sub( num_bits, hBstr->nb_bits_tot_fx );
-#endif
-
/*--------------------------------------------------------------------------
* High-band gain control in case of BWS
*--------------------------------------------------------------------------*/
-#ifdef ADD_IVAS_HQ_CODE
- IF( st_fx->bwidth_sw_cnt > 0 )
- {
- IF( is_transient )
- {
- FOR( i = 0; i < NUM_TIME_SWITCHING_BLOCKS; i++ )
- {
- v_multc( t_audio + i * inner_frame / NUM_TIME_SWITCHING_BLOCKS + L_FRAME16k / NUM_TIME_SWITCHING_BLOCKS, (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, t_audio + i * inner_frame / NUM_TIME_SWITCHING_BLOCKS + L_FRAME16k / NUM_TIME_SWITCHING_BLOCKS, inner_frame / NUM_TIME_SWITCHING_BLOCKS - L_FRAME16k / NUM_TIME_SWITCHING_BLOCKS );
- }
- }
- ELSE
- {
- v_multc( t_audio + L_FRAME16k, (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, t_audio + L_FRAME16k, L_spec - L_FRAME16k );
- }
- }
-#endif
/*--------------------------------------------------------------------------
* Classify whether to put extra bits for FER mitigation
*--------------------------------------------------------------------------*/
@@ -263,12 +196,7 @@ void hq_core_enc_fx(
t_audio[i] = L_shr( t_audio[i], sub( Q_audio, 12 ) ); /* Q12 */
move32();
}
-
-#ifdef ADD_IVAS_HQ_CODE_L_SPEC
- hq_hr_enc_fx( st_fx, t_audio, L_spec, &num_bits, is_transient, vad_hover_flag );
-#else
hq_hr_enc_fx( st_fx, t_audio, inner_frame, &num_bits, is_transient, vad_hover_flag );
-#endif
Q_audio = 12;
move16();
}
@@ -286,51 +214,6 @@ void hq_core_enc_fx(
{
push_indice( hBstr, IND_UNUSED, 0, num_bits );
}
-#ifdef ADD_IVAS_HQ_CODE
- if ( st->element_mode > EVS_MONO && ( st->last_core == ACELP_CORE || st->last_core == AMR_WB_CORE ) )
- {
- overlap = st->hTcxCfg->tcx_mdct_window_length;
- nz = NS2SA( st->sr_core, N_ZERO_MDCT_NS );
- L_frame = (int16_t) ( st->L_frame + st->hTcxCfg->tcx_offset - st->hTcxCfg->lfacNext );
- tcx_offset = st->hTcxCfg->lfacNext;
- set_f( Aq_old, 0, M + 1 ); /* Dummy filter */
- Aq_old[0] = 1;
-
- /* Code taken from InternalTCXDecoder() */
- TCX_MDCT_Inverse( t_audio, wtda_audio, overlap, L_frame - overlap, overlap, st->element_mode );
-
- /* Window current frame */
- tcx_windowing_synthesis_current_frame( wtda_audio, st->hTcxCfg->tcx_aldo_window_2, st->hTcxCfg->tcx_mdct_window_half, st->hTcxCfg->tcx_mdct_window_minimum, overlap, /*st->hTcxCfg->tcx_mdct_window_length*/ st->hTcxCfg->tcx_mdct_window_half_length, st->hTcxCfg->tcx_mdct_window_min_length, st->last_core == ACELP_CORE, st->hTcxCfg->tcx_last_overlap_mode, /*left mode*/ st->hTcxEnc->acelp_zir, st->hTcxEnc->Txnq, NULL, Aq_old, st->hTcxCfg->tcx_mdct_window_trans, st->L_frame >> 1, tcx_offset < 0 ? -tcx_offset : 0, st->last_core, 0, 0 );
-
- /*Compute windowed synthesis in case of switching to ALDO windows in next frame*/
- mvr2r( wtda_audio + L_frame - nz, st->hTcxEnc->old_out, nz + overlap );
- set_zero( st->hTcxEnc->old_out + nz + overlap, nz );
-
- tcx_windowing_synthesis_past_frame( st->hTcxEnc->old_out + nz, st->hTcxCfg->tcx_aldo_window_1_trunc, st->hTcxCfg->tcx_mdct_window_half, st->hTcxCfg->tcx_mdct_window_minimum, overlap, st->hTcxCfg->tcx_mdct_window_half_length, st->hTcxCfg->tcx_mdct_window_min_length, FULL_OVERLAP );
-
- for ( i = 0; i < nz; i++ )
- {
- st->hTcxEnc->old_out[nz + overlap + i] = wtda_audio[L_frame - 1 - i] * st->hTcxCfg->tcx_aldo_window_1_trunc[-1 - i];
- }
- mvr2r( wtda_audio + ( overlap >> 1 ) - tcx_offset, output, st->L_frame );
- }
- else
- {
- ener_match = (float) sqrt( (float) L_FRAME16k / (float) NORM_MDCT_FACTOR );
- v_multc( t_audio, ener_match, t_audio, inner_frame );
-
- inverse_transform( t_audio, wtda_audio, is_transient, L_FRAME16k, inner_frame, st->element_mode );
-
- window_ola( wtda_audio, output, st->hTcxEnc->old_out, L_FRAME16k, st->hTcxCfg->tcx_last_overlap_mode, st->hTcxCfg->tcx_curr_overlap_mode, 0, 0, NULL );
- }
-
- if ( st->element_mode > EVS_MONO )
- {
- /* Store LB synthesis in case of switch to ACELP */
- mvr2r( output, st->hLPDmem->old_exc, L_FRAME16k );
- }
-#endif
-
return;
}
diff --git a/lib_enc/hq_hr_enc_fx.c b/lib_enc/hq_hr_enc_fx.c
index 705db9ecdf46b08c5bf6ce41e323890bffd7d01d..05654e775965c7471130beb49e398018b3df01ef 100644
--- a/lib_enc/hq_hr_enc_fx.c
+++ b/lib_enc/hq_hr_enc_fx.c
@@ -249,20 +249,6 @@ void hq_hr_enc_fx(
move16();
/* Prepare synthesis for LB generation in case of switch to ACELP */
-#ifdef ADD_IVAS_HQ_CODE
- IF( NE_16( hqswb_clas, HQ_HVQ ) )
- {
- apply_envelope_enc( t_audio_q, ynrm, num_sfm, sfm_start, sfm_end );
- }
-
- IF( is_transient )
- {
- de_interleave_spectrum( t_audio_q, length );
- }
- Copy32( t_audio_q, t_audio, length );
-#endif
-
-
return;
}
diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c
index bfb4a7423ed63994a1b9dc655feb3880858bd88f..18995bd1de3d00953b78877e201c290f9b1c0f7b 100644
--- a/lib_enc/igf_enc.c
+++ b/lib_enc/igf_enc.c
@@ -1002,12 +1002,12 @@ static void IGF_CalculateStereoEnvelope_fx(
const Word32 *pPowerSpectrum_fx, /* i : MDCT^2 + MDST^2 spectrum, or estimate */
Word16 pPowerSpectrum_e, /* i : exponent for pPowerSpectrum_fx */
const Word32 *pPowerSpectrumMsInv_fx, /* i : inverse power spectrum */
- Word16 pPowerSpectrumMsInv_e, /* i : exponent for pPowerSpectrumMsInv_fx */
+ Word16 *q_pPowerSpectrumMsInv, /* i : Q for pPowerSpectrumMsInv_fx */
const Word16 igfGridIdx, /* i : IGF grid index */
const Word16 coreMsMask[N_MAX], /* i : line wise ms Mask */
const Word16 isTransient, /* i : flag indicating if transient is detected */
- const Word16 last_core_acelp /* i : indicator if last frame was ACELP core */
-)
+ const Word16 last_core_acelp, /* i : indicator if last frame was ACELP core */
+ const Word16 mct_on )
{
IGF_ENC_PRIVATE_DATA_HANDLE hPrivateData;
H_IGF_GRID hGrid;
@@ -1047,6 +1047,32 @@ static void IGF_CalculateStereoEnvelope_fx(
Word16 slope_e; /*stores exponent for slope_fx*/
Word16 sfbEnergyR_e; /*stores exponent for sfbEnergyR*/
Word16 tmp_e;
+ Word32 temp_pPowerSpectrumMsInv[N_MAX], length;
+ Word16 q_temp_pPowerSpectrumMsInv = Q31, i;
+ move16();
+
+ IF( pPowerSpectrumMsInv_fx != NULL )
+ {
+ length = N_MAX;
+ move16();
+ if ( mct_on )
+ {
+ length = L_FRAME48k;
+ move16();
+ }
+ FOR( i = 0; i < length; i++ )
+ {
+ IF( pPowerSpectrumMsInv_fx[i] != 0 )
+ {
+ q_temp_pPowerSpectrumMsInv = s_min( q_temp_pPowerSpectrumMsInv, add( q_pPowerSpectrumMsInv[i], norm_l( pPowerSpectrumMsInv_fx[i] ) ) );
+ }
+ }
+ FOR( i = 0; i < length; i++ )
+ {
+ temp_pPowerSpectrumMsInv[i] = L_shl( pPowerSpectrumMsInv_fx[i], sub( q_temp_pPowerSpectrumMsInv, q_pPowerSpectrumMsInv[i] ) );
+ move32();
+ }
+ }
hPrivateData = &hIGFEnc->igfData;
hGrid = &hPrivateData->igfInfo.grid[(Word16) igfGridIdx];
@@ -1130,10 +1156,10 @@ static void IGF_CalculateStereoEnvelope_fx(
norm_exp = norm_l( pMDCTSpectrumMsInv_fx[strt_cpy] );
final_exp = sub( pMDCTSpectrumMsInv_e, norm_exp );
scaled_value = L_shl( pMDCTSpectrumMsInv_fx[strt_cpy], norm_exp );
- sfbEnergyTileR_fx = BASOP_Util_Add_Mant32Exp( sfbEnergyTileR_fx, sfbEnergyTileR_e, Mult_32_32( scaled_value, scaled_value ), shl( final_exp, 1 ), &sfbEnergyTileR_e ); /*resultant exponent is stored in sfbEnergyTileR_e*/
- sfbEnergyTileC_fx = BASOP_Util_Add_Mant32Exp( sfbEnergyTileC_fx, sfbEnergyTileC_e, pPowerSpectrumMsInv_fx[strt_cpy], pPowerSpectrumMsInv_e, &sfbEnergyTileC_e ); /*resultant exponent is stored in sfbEnergyTileC_e*/
- tileSrcSpec_fx[sub( strt_cpy, tmp )] = pPowerSpectrumMsInv_fx[strt_cpy]; /*resultant exponent is stored in tileSrcSpec_e*/
- tileSrcSpec_e = pPowerSpectrumMsInv_e;
+ sfbEnergyTileR_fx = BASOP_Util_Add_Mant32Exp( sfbEnergyTileR_fx, sfbEnergyTileR_e, Mult_32_32( scaled_value, scaled_value ), shl( final_exp, 1 ), &sfbEnergyTileR_e ); /*resultant exponent is stored in sfbEnergyTileR_e*/
+ sfbEnergyTileC_fx = BASOP_Util_Add_Mant32Exp( sfbEnergyTileC_fx, sfbEnergyTileC_e, pPowerSpectrumMsInv_fx[strt_cpy], sub( 31, q_pPowerSpectrumMsInv[strt_cpy] ), &sfbEnergyTileC_e ); /*resultant exponent is stored in sfbEnergyTileC_e*/
+ tileSrcSpec_fx[sub( strt_cpy, tmp )] = temp_pPowerSpectrumMsInv[strt_cpy]; /*resultant exponent is stored in tileSrcSpec_e*/
+ tileSrcSpec_e = sub( 31, q_temp_pPowerSpectrumMsInv );
}
ELSE
{
@@ -1171,13 +1197,13 @@ static void IGF_CalculateStereoEnvelope_fx(
move16();
// tmp_tb = IGF_getSFM_ivas(pPowerSpectrum, swb_offset[sfb], swb_offset[sfb + 1]) / IGF_getCrest_ivas(pPowerSpectrum, swb_offset[sfb], swb_offset[sfb + 1]);
- sfm = IGF_getSFM( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, swb_offset[sfb], swb_offset[sfb + 1] );
+ sfm = IGF_getSFM_ivas_fx( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, swb_offset[sfb], swb_offset[sfb + 1] );
crest = IGF_getCrest( &crest_exp, pPowerSpectrum_fx, pPowerSpectrum_e, swb_offset[sfb], swb_offset[sfb + 1] );
tmp_tb_fx = BASOP_Util_Divide1616_Scale( sfm, crest, &tmp_e );
tmp_tb_e = add( tmp_e, sub( sfm_exp, crest_exp ) ); /*stores the resultant exponent for tmp_tb_fx*/
// tmp_sb = IGF_getSFM_ivas(tileSrcSpec, 0, strt_cpy - tmp) / IGF_getCrest_ivas(tileSrcSpec, 0, strt_cpy - tmp);
- sfm = IGF_getSFM( &sfm_exp, tileSrcSpec_fx, &tileSrcSpec_e, 0, sub( strt_cpy, tmp ) );
+ sfm = IGF_getSFM_ivas_fx( &sfm_exp, tileSrcSpec_fx, &tileSrcSpec_e, 0, sub( strt_cpy, tmp ) );
crest = IGF_getCrest( &crest_exp, tileSrcSpec_fx, tileSrcSpec_e, 0, sub( strt_cpy, tmp ) );
tmp_sb_fx = BASOP_Util_Divide1616_Scale( sfm, crest, &tmp_e );
tmp_sb_e = add( tmp_e, sub( sfm_exp, crest_exp ) ); /*stores the resultant exponent for tmp_sb_fx*/
@@ -1322,7 +1348,7 @@ static void IGF_CalculateStereoEnvelope_fx(
{
Word16 shift = shr( width, 1 );
// shiftedSFM = IGF_getSFM_ivas( pPowerSpectrum, swb_offset[sfb] - shift, swb_offset[sfb + 1] - shift ) / IGF_getCrest_ivas( pPowerSpectrum, swb_offset[sfb] - shift, swb_offset[sfb + 1] - shift );
- sfm = IGF_getSFM( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, sub( swb_offset[sfb], shift ), sub( swb_offset[sfb + 1], shift ) );
+ sfm = IGF_getSFM_ivas_fx( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, sub( swb_offset[sfb], shift ), sub( swb_offset[sfb + 1], shift ) );
crest = IGF_getCrest( &crest_exp, pPowerSpectrum_fx, pPowerSpectrum_e, sub( swb_offset[sfb], shift ), sub( swb_offset[sfb + 1], shift ) );
shiftedSFM_fx = BASOP_Util_Divide1616_Scale( sfm, crest, &shiftedSFM_e );
}
@@ -1331,7 +1357,7 @@ static void IGF_CalculateStereoEnvelope_fx(
Word16 shift;
shift = shr( width, 1 );
// shiftedSFM = IGF_getSFM_ivas( pPowerSpectrum, swb_offset[sfb] + shift, swb_offset[sfb + 1] + shift ) / IGF_getCrest_ivas( pPowerSpectrum, swb_offset[sfb] + shift, swb_offset[sfb + 1] + shift );
- sfm = IGF_getSFM( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, add( swb_offset[sfb], shift ), add( swb_offset[sfb + 1], shift ) );
+ sfm = IGF_getSFM_ivas_fx( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, add( swb_offset[sfb], shift ), add( swb_offset[sfb + 1], shift ) );
crest = IGF_getCrest( &crest_exp, pPowerSpectrum_fx, pPowerSpectrum_e, add( swb_offset[sfb], shift ), add( swb_offset[sfb + 1], shift ) );
shiftedSFM_fx = BASOP_Util_Divide1616_Scale( sfm, crest, &shiftedSFM_e );
}
@@ -2620,24 +2646,25 @@ void IGFEncApplyMono_ivas_fx(
*-------------------------------------------------------------------*/
void IGFEncApplyStereo_fx(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo encoder structure */
- Word16 ms_mask[2][MAX_SFB], /* i : bandwise MS mask */
- const IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS], /* i : instance handle of IGF Encoder */
- const Word16 igfGridIdx, /* i : IGF grid index */
- Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */
- Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
- Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */
- Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */
- Word16 exp_pPowerSpectrumMsInv_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrumMsInv_fx */
- Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */
- Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i : exp of inverse spectrum */
- const Word16 frameno, /* i : flag indicating index of current subfr. */
- const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */
- const Word32 element_brate, /* i : element bitrate */
+ STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo encoder structure */
+ Word16 ms_mask[2][MAX_SFB], /* i : bandwise MS mask */
+ const IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS], /* i : instance handle of IGF Encoder */
+ const Word16 igfGridIdx, /* i : IGF grid index */
+ Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */
+ Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
+ Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */
+ Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */
+ Word16 *q_pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: Q of pPowerSpectrumMsInv_fx */
+ Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */
+ Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i : exp of inverse spectrum */
+ const Word16 frameno, /* i : flag indicating index of current subfr. */
+ const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */
+ const Word32 element_brate, /* i : element bitrate */
const Word16 mct_on )
{
Word32 *pPowerSpectrumParameter_fx[NB_DIV]; /* If it is NULL it informs a function that specific handling is needed */
Word32 *pPowerSpectrumParameterMsInv_fx[NB_DIV];
+ Word16 *q_pPowerSpectrumParameterMsInv_fx[NB_DIV];
Word16 coreMsMask[N_MAX];
Word16 sfb, ch, last_core_acelp;
STEREO_MDCT_BAND_PARAMETERS *sfbConf;
@@ -2681,6 +2708,8 @@ void IGFEncApplyStereo_fx(
pPowerSpectrumParameter_fx[1] = &pPowerSpectrum_fx[1][0];
pPowerSpectrumParameterMsInv_fx[0] = pPowerSpectrumMsInv_fx[0][0];
pPowerSpectrumParameterMsInv_fx[1] = pPowerSpectrumMsInv_fx[1][0];
+ q_pPowerSpectrumParameterMsInv_fx[0] = q_pPowerSpectrumMsInv_fx[0][0];
+ q_pPowerSpectrumParameterMsInv_fx[1] = q_pPowerSpectrumMsInv_fx[1][0];
}
ELSE
{
@@ -2688,6 +2717,8 @@ void IGFEncApplyStereo_fx(
pPowerSpectrumParameter_fx[1] = NULL;
pPowerSpectrumParameterMsInv_fx[0] = NULL;
pPowerSpectrumParameterMsInv_fx[1] = NULL;
+ q_pPowerSpectrumParameterMsInv_fx[0] = NULL;
+ q_pPowerSpectrumParameterMsInv_fx[1] = NULL;
}
FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
{
@@ -2696,7 +2727,7 @@ void IGFEncApplyStereo_fx(
IGF_UpdateInfo( hIGFEnc[ch], igfGridIdx );
IGF_CalculateStereoEnvelope_fx( hIGFEnc[ch], sts[ch]->hTcxEnc->spectrum_fx[frameno], sts[ch]->hTcxEnc->spectrum_e[frameno], inv_spectrum_fx[ch][frameno],
exp_inv_spectrum_fx[ch], pPowerSpectrumParameter_fx[ch], exp_pPowerSpectrum_fx[ch], pPowerSpectrumParameterMsInv_fx[ch],
- exp_pPowerSpectrumMsInv_fx[ch], igfGridIdx, coreMsMask, sts[ch]->hTranDet->transientDetector.bIsAttackPresent, last_core_acelp );
+ q_pPowerSpectrumParameterMsInv_fx[ch], igfGridIdx, coreMsMask, sts[ch]->hTranDet->transientDetector.bIsAttackPresent, last_core_acelp, mct_on );
IF( EQ_16( sts[ch]->core, TCX_20_CORE ) )
{
diff --git a/lib_enc/igf_enc_fx.c b/lib_enc/igf_enc_fx.c
index f508b313f61988d03b1f5682a0b01de6d276c3ad..f78ad202578f0f29537006d5e6b7694c97b9fce4 100644
--- a/lib_enc/igf_enc_fx.c
+++ b/lib_enc/igf_enc_fx.c
@@ -895,6 +895,103 @@ Word16 IGF_getSFM( /**< out: Q15| SFM value
return SFM /*Q15*/;
}
+/*************************************************************************
+calculates spectral flatness measurment
+**************************************************************************/
+Word16 IGF_getSFM_ivas_fx( /**< out: Q15| SFM value */
+ Word16 *SFM_exp, /**< out: | exponent of SFM Factor */
+ const Word32 *energy, /**< in: Q31| energies */
+ const Word16 *energy_exp, /**< in: | exponent of energies */
+ const Word16 start, /**< in: Q0 | start subband index */
+ const Word16 stop /**< in: Q0 | stop subband index */
+)
+{
+ Word16 n, i, s;
+ Word32 num;
+ Word32 denom;
+ Word16 denom_exp;
+ Word16 invDenom_exp, numf_exp;
+ Word16 numf;
+ Word32 SFM32;
+ Word16 invDenom, SFM;
+
+ num = 0;
+ move32();
+ denom = 65536; // 1.f in Q16
+ denom_exp = 15;
+ *SFM_exp = 0;
+ move16();
+ SFM = 32767 /*1.0f Q15*/;
+ move16();
+
+ FOR( i = start; i < stop; i++ )
+ {
+ /*ln(x * 2^-Qx * 2^xExp) = ln(x) - Qx + xExp*/
+
+ /* n = sub(sub(31,norm_l(tmp32)),1); */ /*<- ld */
+ /* n = sub(n,31); */ /*<- -Qx */
+ /* n = add(n,*energy_exp); */ /*<- +xExp */
+
+ n = sub( sub( *energy_exp, norm_l( energy[i] ) ), 1 ); /*<-- short form*/
+
+ if ( energy[i] == 0 ) /*special case: energy is zero*/
+ {
+ n = 0;
+ move16();
+ }
+
+ n = s_max( 0, n );
+ num = L_add( num, L_deposit_l( n ) ); /*Q0*/
+
+ denom = BASOP_Util_Add_Mant32Exp( energy[i], *energy_exp, denom, denom_exp, &denom_exp );
+ }
+
+ /* calculate SFM only if signal is present */
+ IF( denom != 0 )
+ {
+ /*numf = (float)num / (float)(stop - start);*/
+ numf = BASOP_Util_Divide3216_Scale( num, /*Q0*/
+ sub( stop, start ), /*Q0*/
+ &s ); /*Q-1 s*/
+ numf_exp = add( s, 16 ); /*-> numf Q15 numf_exp*/
+ /*denom /= (float)(stop - start);*/
+ /*return ((float)pow(2.0, numf + 0.5f) / denom);*/
+
+ /*SFM= ((float)pow(2.0, numf + 0.5f) * invDenom);*/
+ invDenom = BASOP_Util_Divide3232_uu_1616_Scale( L_deposit_l( sub( stop, start ) ) /*Q0*/,
+ denom /*Q31, denom_exp*/,
+ &s ); /*Q-16, s-denom_exp*/
+ invDenom_exp = add( sub( s, denom_exp ), 31 ); /*invDenom: Q15, invDenom_exp*/
+
+ /*add .5f to numf*/
+ SFM32 = L_add( L_shl( L_deposit_l( numf ), numf_exp ) /*16Q15*/, 16384l /*.5f Q15*/ ); /*16Q15*/
+ s = norm_l( SFM32 );
+ SFM32 = L_shl( SFM32, s );
+ s = sub( 16, s ); /*SFM32(numf) is Q31 now*/
+
+ /*do the pow2 and the mult*/
+ SFM32 = BASOP_util_Pow2( SFM32, s, &s );
+ SFM32 = Mpy_32_16_1( SFM32, invDenom );
+ *SFM_exp = add( s, invDenom_exp );
+
+ /*Transform to Q15*/
+ s = norm_l( SFM32 );
+ SFM = round_fx_sat( L_shl_sat( SFM32, s ) );
+ *SFM_exp = sub( *SFM_exp, s );
+ move16();
+ /**SFM_exp = s_min(*SFM_exp, 0);*/
+ IF( *SFM_exp > 0 )
+ {
+ *SFM_exp = 0;
+ move16();
+ SFM = 32767 /*1.0f Q15*/;
+ move16();
+ }
+ }
+
+ return SFM /*Q15*/;
+}
+
/**********************************************************************/ /*
calculates the IGF whitening levels by SFM and crest
**************************************************************************/
diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c
index 21a99add798b804e4456ac8834e30ba70f93d65e..f46bcc61cc31b644a1a9b44cddbdce9358d8d8dd 100644
--- a/lib_enc/init_enc_fx.c
+++ b/lib_enc/init_enc_fx.c
@@ -1,4 +1,4 @@
-/*====================================================================================
+/*====================================================================================
EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0
====================================================================================*/
@@ -20,7 +20,6 @@
*
* Initialization of state variables
*-----------------------------------------------------------------------*/
-#if 1
ivas_error init_encoder_fx(
Encoder_State *st_fx /* i/o: Encoder static variables structure */
)
@@ -378,6 +377,8 @@ ivas_error init_encoder_fx(
move16();
st_fx->hVAD->L_snr_sum_vad_fx = 0;
move32();
+ st_fx->hVAD->q_L_snr_sum_vad = Q31;
+ move16();
}
ELSE
{
@@ -749,7 +750,6 @@ ivas_error init_encoder_fx(
* TCX core
*-----------------------------------------------------------------*/
- // VE: reduction possible for MCT_CHAN_MODE_LFE channel - see I1-172
test();
IF( idchan == 0 || EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) )
{
@@ -947,7 +947,7 @@ ivas_error init_encoder_fx(
move32();
return error;
}
-#endif
+
/*-----------------------------------------------------------------------*
* LPDmem_enc_init_fx()
*
@@ -1185,6 +1185,8 @@ ivas_error init_encoder_ivas_fx(
st->mem_preemph_fx = 0;
move16();
+ st->mem_preemph_fx_q_inp = 0;
+ move16();
st->mem_preemph16k_fx = 0;
move16();
st->mem_preemph_enc = 0;
@@ -1192,10 +1194,8 @@ ivas_error init_encoder_ivas_fx(
st->exp_mem_preemph_enc = 0;
move16();
-#if 1 // TODO: Float Initializations. To be removed later
st->active_cnt = 0;
move16();
-#endif
st->pst_mem_deemp_err_fx = 0;
move16();
@@ -1299,6 +1299,8 @@ ivas_error init_encoder_ivas_fx(
/* stereo switching memories */
st->mem_preemph_DFT_fx = 0;
move16();
+ st->mem_preemph_DFT_fx_q_inp = 0;
+ move16();
set16_fx( st->inp_12k8_mem_stereo_sw_fx, 0, sub( sub( STEREO_DFT_OVL_12k8, L_MEM_RECALC_12K8 ), L_FILT ) );
st->mem_preemph16k_DFT_fx = 0;
move16();
@@ -1398,6 +1400,7 @@ ivas_error init_encoder_ivas_fx(
st->q_Bin_E_old = Q31;
move16();
set16_fx( st->mem_decim_fx, 0, shl( L_FILT_MAX, 1 ) );
+ set16_fx( st->mem_decim_fx_q_inp, 0, shl( L_FILT_MAX, 1 ) );
set16_fx( st->mem_decim16k_fx, 0, shl( L_FILT_MAX, 1 ) );
set16_fx( st->old_inp_12k8_fx, 0, L_INP_MEM );
set16_fx( st->old_inp_16k_fx, 0, L_INP_MEM );
@@ -1411,12 +1414,19 @@ ivas_error init_encoder_ivas_fx(
set16_fx( st->input_buff_fx, 0, add( L_FRAME48k, add( L_FRAME48k, NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ) ) );
st->q_inp = Q15;
move16();
+ st->mem_preemph_q = Q15;
+ move16();
+ st->mem_q = Q15;
+ move16();
st->q_old_inp = Q15;
move16();
set32_fx( st->input_buff32_fx, 0, add( L_FRAME48k, add( L_FRAME48k, NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ) ) );
st->q_inp32 = Q31;
move16();
+ st->q_old_inp32 = Q31;
+ move16();
st->old_input_signal_fx = st->input_buff_fx;
+ st->old_input_signal32_fx = st->input_buff32_fx;
/* st->input_Fs / FRAMES_PER_SEC */
Word16 frame_length = extract_l( Mpy_32_32( st->input_Fs, ONE_BY_FRAMES_PER_SEC_Q31 ) );
@@ -1427,11 +1437,10 @@ ivas_error init_encoder_ivas_fx(
}
ELSE
{
- st->input32_fx = st->input_buff32_fx + Mpy_32_32( st->input_Fs, 42949673 ) /* 1/50 in Q31*/; // st->input_Fs / FRAMES_PER_SEC
+ // st->input32_fx = st->input_buff32_fx + Mpy_32_32( st->input_Fs, 42949673 ) /* 1/50 in Q31*/; // st->input_Fs / FRAMES_PER_SEC
+ st->input32_fx = st->input_buff32_fx + frame_length;
st->input_fx = st->input_buff_fx + frame_length;
}
-#if 1 // TODO: To be removed later
-#endif
}
ELSE
{
@@ -1446,8 +1455,6 @@ ivas_error init_encoder_ivas_fx(
st->buf_speech_enc = NULL;
st->buf_wspeech_enc = NULL;
st->input_buff_fx = NULL;
-#if 1
-#endif
}
/*-----------------------------------------------------------------*
@@ -1948,12 +1955,6 @@ ivas_error init_encoder_ivas_fx(
st->hTcxEnc->spectrum_e[0] = st->hTcxEnc->spectrum_e[1] = 0;
move16();
move16();
-#if 1
- // set_f( st->hTcxEnc->spectrum_long, 0, N_MAX );
- // st->hTcxEnc->spectrum[0] = st->hTcxEnc->spectrum_long;
- // st->hTcxEnc->spectrum[1] = st->hTcxEnc->spectrum_long + N_TCX10_MAX;
- // set_f( st->hTcxEnc->old_out, 0, L_FRAME32k );
-#endif
set16_fx( st->hTcxEnc->old_out_fx, 0, L_FRAME32k );
st->hTcxEnc->Q_old_out = 0;
diff --git a/lib_enc/inov_enc_fx.c b/lib_enc/inov_enc_fx.c
index fe22ee398de7c7a3e1652e2229cdcd756af00fca..d019bf4747d93ff71f71c6e414e1826c8572237b 100644
--- a/lib_enc/inov_enc_fx.c
+++ b/lib_enc/inov_enc_fx.c
@@ -370,7 +370,7 @@ Word16 inov_encode_ivas_fx(
Word16 shift,
Word16 Q_new )
{
- Word16 dn[2 * L_SUBFR], Qdn;
+ Word16 dn[2 * L_SUBFR], Qdn, Qcn;
Word16 nBits, cmpl_flag;
Word16 stack_pulses;
Word16 g1, g2;
@@ -378,7 +378,7 @@ Word16 inov_encode_ivas_fx(
Word16 acelpautoc;
BSTR_ENC_HANDLE hBstr = st_fx->hBstr;
Word16 i, k;
- Word16 Qxn, Rw_q, j, max_xn2;
+ Word16 Qxn, max_xn2;
stack_pulses = 0;
move16();
@@ -416,20 +416,22 @@ Word16 inov_encode_ivas_fx(
test();
test();
+ Qcn = Q_new;
+ move16();
IF( GT_32( core_brate, ACELP_13k20 ) && !Opt_AMR_WB && EQ_16( L_subfr, L_SUBFR ) )
{
acelpautoc = 1;
move16();
- Word16 q_h1 = sub( 14, norm_s( h2[0] ) );
- Scale_sig( h2, L_SUBFR, sub( 11, q_h1 ) ); /* set h2[] in Q11*/
cb_shape_fx( 1, 1, 0, sharpFlag, 0, g1, g2, p_Aq, h2, tilt_code, shr( add( pt_pitch, 26 ), 6 ), 0, L_SUBFR );
/* h2: Q11, Rw: (Rw_e)Q */
- corr_hh_ivas_fx( h2, Rw, &Rw_q, L_subfr ); // Q(Rw) = Q11-2
- E_ACELP_conv_ivas_fx( xn2, h2, cn ); // Qcn = Qxn2
+ /* Rw_e = */ E_ACELP_hh_corr( h2, Rw, L_SUBFR, 3 );
+
+ E_ACELP_conv( xn2, h2, cn );
/* dn_e -> Rw_e*Q_xn */
- j = E_ACELP_toeplitz_mul_fx( Rw, cn, dn, L_SUBFR, 1 );
- Qdn = add( add( Qxn, Rw_q ), add( j, 1 ) );
+ /*dn_e = */ E_ACELP_toeplitz_mul_fx( Rw, cn, dn, L_SUBFR, 1 );
+ Qdn = Qcn;
+ move16();
}
ELSE
{
@@ -442,6 +444,18 @@ Word16 inov_encode_ivas_fx(
Scale_sig( h2, L_SUBFR, sub( 11, q_h1 ) ); /* set h2[] in Q11*/
cb_shape_fx( 1, 1, 0, sharpFlag, 0, g1, g2, p_Aq, h2, tilt_code, shr( add( pt_pitch, 26 ), 6 ), 0, L_subfr );
corr_xh_ivas_fx( xn2, Qxn, dn, &Qdn, h2, L_subfr ); // Q(dn) = Q_new+1
+ IF( LT_16( Qdn, Qcn ) )
+ {
+ scale_sig( cn, L_subfr, sub( Qdn, Qcn ) );
+ Qcn = Qdn;
+ move16();
+ }
+ ELSE
+ {
+ scale_sig( dn, L_subfr, sub( Qcn, Qdn ) );
+ Qdn = Qcn;
+ move16();
+ }
}
/*-----------------------------------------------------------------*
@@ -607,7 +621,7 @@ Word16 inov_encode_ivas_fx(
}
ELSE
{
- acelp_fast_fx( hBstr, nBits, dn, Qdn, cn, Q_new, h2, code, y2, L_subfr );
+ acelp_fast_fx( hBstr, nBits, dn, Qdn, cn, Qcn, h2, code, y2, L_subfr );
}
}
ELSE IF( ( EQ_16( st_fx->idchan, 1 ) && LE_16( st_fx->acelp_cfg.fixed_cdk_index[idx2], 7 ) ) || ( st_fx->idchan == 0 && LE_16( st_fx->acelp_cfg.fixed_cdk_index[idx2], 3 ) ) )
@@ -618,7 +632,7 @@ Word16 inov_encode_ivas_fx(
}
ELSE
{
- acelp_fast_fx( hBstr, st_fx->acelp_cfg.fixed_cdk_index[idx2], dn, Qdn, cn, Q_new, h2, code, y2, L_SUBFR );
+ acelp_fast_fx( hBstr, st_fx->acelp_cfg.fixed_cdk_index[idx2], dn, Qdn, cn, Qcn, h2, code, y2, L_SUBFR );
}
}
ELSE
diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c
index 3c62a0d184820697ae3019b943faf66aba8da570..6fcb8abd0304b5be804584d53549ffe60ac9ade9 100644
--- a/lib_enc/ivas_core_enc_fx.c
+++ b/lib_enc/ivas_core_enc_fx.c
@@ -419,7 +419,6 @@ ivas_error ivas_core_enc_fx(
}
}
-
/*---------------------------------------------------------------------*
* MDCT stereo: joint TCX Core Encoding
*---------------------------------------------------------------------*/
@@ -532,6 +531,12 @@ ivas_error ivas_core_enc_fx(
st->hTcxEnc->exp_buf_speech_ltp = st->exp_buf_speech_enc;
move16();
}
+ Scale_sig( st->input_fx, input_frame, sub( -1, st->q_inp ) );
+ Scale_sig( st->input_fx - input_frame, input_frame, sub( -1, st->q_old_inp ) );
+ st->q_inp = -1;
+ move16();
+ st->q_old_inp = -1;
+ move16();
}
Word16 Q_spec_old[2], L_spec;
@@ -612,6 +617,8 @@ ivas_error ivas_core_enc_fx(
* Postprocessing, BWEs and Updates
*---------------------------------------------------------------------*/
+ Word16 tmp_input_fx[L_FRAME48k], tmp_old_input_fx[L_FRAME48k], q_inp[2];
+
FOR( n = 0; n < n_CoreChannels; n++ )
{
st = sts[n];
@@ -626,6 +633,17 @@ ivas_error ivas_core_enc_fx(
move16();
}
+ Copy( st->input_fx - input_frame, tmp_old_input_fx, input_frame );
+ Copy( st->input_fx, tmp_input_fx, input_frame );
+ q_inp[0] = st->q_old_inp;
+ q_inp[1] = st->q_inp;
+
+ Scale_sig( st->input_fx - input_frame, 2 * input_frame, sub( -1, st->q_inp ) );
+ st->q_inp = -1;
+ move16();
+ st->q_old_inp = -1;
+ move16();
+
/*---------------------------------------------------------------------*
* Postprocessing for ACELP/HQ core switching
*---------------------------------------------------------------------*/
@@ -657,12 +675,6 @@ ivas_error ivas_core_enc_fx(
wb_bwe_enc_ivas_fx( st, new_inp_resamp16k_fx[n] );
}
- IF( st->hBWE_FD != NULL )
- {
- Scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, Q1 ); // Q-1 -> Q0
- st->Q_old_wtda = add( st->Q_old_wtda, Q1 );
- move16();
- }
/*---------------------------------------------------------------------*
* SWB(FB) TBE encoding
@@ -707,8 +719,6 @@ ivas_error ivas_core_enc_fx(
Scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, shift ); // st->Q_old_wtda
}
- Word16 q_new_swb_speech_buffer = getScaleFactor16( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX );
- Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // Q0->q_new_swb_speech_buffer
/* SWB TBE encoder */
test();
@@ -726,17 +736,15 @@ ivas_error ivas_core_enc_fx(
IF( EQ_16( st->extl, FB_TBE ) )
{
/* FB TBE encoder */
- fb_tbe_enc_ivas_fx( st, st->input_fx, fb_exc_fx, Q_fb_exc );
+ fb_tbe_enc_ivas_fx( st, st->input_fx, fb_exc_fx, Q_fb_exc, st->q_inp );
}
}
}
ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) )
{
- Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16
- Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, negate( q_new_swb_speech_buffer ) ); // q_new_swb_speech_buffer -> Q0
+ Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16
/* SWB(FB) BWE encoder */
- swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, shb_speech_fx, sub( Q_shb_spch, Q16 ), sub( Q_new[n], 1 ) );
- Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // Q0 -> q_new_swb_speech_buffer
+ swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, st->q_inp, shb_speech_fx, sub( Q_shb_spch, Q16 ), sub( Q_new[n], 1 ) );
}
Scale_sig( old_syn_12k8_16k_fx[n], L_FRAME16k, sub( Q1, Q_new[n] ) ); // Q0
@@ -758,6 +766,9 @@ ivas_error ivas_core_enc_fx(
* Inter-channel BWE encoding
*-------------------------------------------------------------------*/
+ Word16 q_new_swb_speech_buffer = getScaleFactor16( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX );
+ Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // st->q_inp+q_new_swb_speech_buffer
+ q_new_swb_speech_buffer = add( st->q_inp, q_new_swb_speech_buffer );
test();
test();
IF( n == 0 && GE_32( input_Fs, 32000 ) && hStereoICBWE != NULL )
@@ -766,7 +777,7 @@ ivas_error ivas_core_enc_fx(
stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, q_new_swb_speech_buffer );
q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, 16 );
- Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer - 16 - > q_new_swb_speech_buffer
+ Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp
Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31
stereo_icBWE_enc_ivas_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] );
@@ -787,6 +798,13 @@ ivas_error ivas_core_enc_fx(
}
}
+ Copy( tmp_old_input_fx, st->input_fx - input_frame, input_frame );
+ Copy( tmp_input_fx, st->input_fx, input_frame );
+ st->q_old_inp = q_inp[0];
+ move16();
+ st->q_inp = q_inp[1];
+ move16();
+
/*---------------------------------------------------------------------*
* Channel-aware mode - write signaling information into the bitstream
*---------------------------------------------------------------------*/
diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c
index 0d6a5901a1f81f12be0f48ff345d024303d55ca7..be208296dfa5d792ae08b9d2aa1a4f5fa1963597 100644
--- a/lib_enc/ivas_core_pre_proc_front_fx.c
+++ b/lib_enc/ivas_core_pre_proc_front_fx.c
@@ -58,10 +58,6 @@
static void calculate_energy_buffer_ivas_fx( CPE_ENC_HANDLE hCPE, Word32 enerBuffer_dft[], const Word16 no_channels, const Word32 input_Fs, Word16 enerBuffer_dft_e[] );
-#ifdef IVAS_FIXED_ENC
-static void calculate_energy_buffer_fx( CPE_ENC_HANDLE hCPE, Word64 enerBuffer_dft_fx[], Word16 *enerBuffer_dft_q_fx, const Word16 no_channels, const Word32 input_Fs );
-#endif
-
/*-------------------------------------------------------------------*
* pre_proc_front_ivas()
*
@@ -205,7 +201,7 @@ ivas_error pre_proc_front_ivas_fx(
Word16 S_map_fx[L_FFT / 2];
Word16 cor_map_sum_LR_fx[CPE_CHANNELS]; /* speech/music clasif. parameter */
Word16 S_map_LR_fx[L_FFT / 2]; /* short-term correlation map */
- Word16 Etot_fx; /* total energy Q8 */
+ Word32 Etot_fx; /* total energy Q8 */
Word32 tmpN_fx[NB_BANDS]; /* Temporary noise update */
Word32 tmpE_fx[NB_BANDS]; /* Temporary averaged energy of 2 sf. */
Word32 tmpN_LR_fx[CPE_CHANNELS][NB_BANDS]; /* Temporary noise update */
@@ -223,6 +219,7 @@ ivas_error pre_proc_front_ivas_fx(
Word16 res_cod_SNR_M_fx_e[STEREO_DFT_BAND_MAX];
Word16 Qfact_PS, q_lf_E_fx;
Word16 enerBuffer_fx_exp_buf[CLDFB_NO_CHANNELS_MAX];
+ Word32 bckr_temp[NB_BANDS];
#ifdef DEBUG_MODE_INFO
Word32 *in_buff_temp;
Word16 in_q_temp;
@@ -499,15 +496,16 @@ ivas_error pre_proc_front_ivas_fx(
* Change the sampling frequency to 12.8 kHz
* (if not available from downsampled DMX)
*----------------------------------------------------------------*/
-
- Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( st->q_inp, Q_inp_const ) ); /* st->q_inp */
+ Scale_sig( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX, sub( st->q_inp, st->mem_q ) ); /* st->q_inp */
test();
+
IF( EQ_16( element_mode, IVAS_SCE ) )
{
- new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx, input_frame, input_Fs, new_inp_12k8_fx, INT_FS_12k8, st->mem_decim_fx, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */
- Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/
-
- Copy( st->mem_decim_fx, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* Q(-1) */
+ new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx, input_frame, input_Fs, new_inp_12k8_fx, INT_FS_12k8, st->mem_decim_fx_q_inp, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */
+ Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/
+ st->mem_q = st->q_inp;
+ move16();
+ Copy( st->mem_decim_fx_q_inp, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* Q(-1) */
set16_fx( temp1F_icatdmResampBuf_fx, 0, L_FILT_MAX );
new_inp_out_size = modify_Fs_ivas_fx( temp1F_icatdmResampBuf_fx, NS2SA_FX2( st->input_Fs, DELAY_FIR_RESAMPL_NS ), input_Fs, new_inp_12k8_fx + L_FRAME, INT_FS_12k8, mem_decim_dummy_fx, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */
Scale_sig( new_inp_12k8_fx + L_FRAME, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/
@@ -521,13 +519,15 @@ ivas_error pre_proc_front_ivas_fx(
Word16 length_inp = NS2SA_FX2( input_Fs, L_MEM_RECALC_SCH_NS );
Word16 length_12k8 = NS2SA( INT_FS_12k8, L_MEM_RECALC_SCH_NS );
- new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx - lMemRecalc - length_inp, length_inp, input_Fs, new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, INT_FS_12k8, st->mem_decim_fx, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */
- Scale_sig( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/
+ new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx - lMemRecalc - length_inp, length_inp, input_Fs, new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, INT_FS_12k8, st->mem_decim_fx_q_inp, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */
+ Scale_sig( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/
}
- new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx - lMemRecalc, input_frame, input_Fs, new_inp_12k8_fx - lMemRecalc_12k8, INT_FS_12k8, st->mem_decim_fx, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */
- Copy( st->mem_decim_fx, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* st->q_inp */
- Scale_sig( new_inp_12k8_fx - lMemRecalc_12k8, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/
+ new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx - lMemRecalc, input_frame, input_Fs, new_inp_12k8_fx - lMemRecalc_12k8, INT_FS_12k8, st->mem_decim_fx_q_inp, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */
+ st->mem_q = st->q_inp;
+ move16();
+ Copy( st->mem_decim_fx_q_inp, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* st->q_inp */
+ Scale_sig( new_inp_12k8_fx - lMemRecalc_12k8, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/
IF( lMemRecalc > 0 )
{
@@ -541,10 +541,13 @@ ivas_error pre_proc_front_ivas_fx(
ELSE /* DFT stereo */
{
/* update the FIR resampling filter memory, needed for switching to time-domain (FIR) resampling */
- Copy( signal_in_fx + sub( input_frame, add( NS2SA_FX2( input_Fs, L_MEM_RECALC_NS ), 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ) ), st->mem_decim_fx, 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ); /* st->q_inp */
+ Copy( signal_in_fx + sub( input_frame, add( NS2SA_FX2( input_Fs, L_MEM_RECALC_NS ), 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ) ), st->mem_decim_fx_q_inp, 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ); /* st->q_inp */
+ st->mem_q = st->q_inp;
+ move16();
scale_sig( old_inp_12k8_fx, L_INP_MEM - STEREO_DFT_OVL_12k8, sub( Q_inp_const, st->q_inp ) );
scale_sig( st->input_fx - input_frame, input_frame_full, sub( Q_inp_const, st->q_inp ) );
- Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */
+ Copy_Scale_sig( st->mem_decim_fx_q_inp, st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */
+ // Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */
st->q_inp = Q_inp_const;
move16();
st->q_old_inp = Q_inp_const;
@@ -552,7 +555,7 @@ ivas_error pre_proc_front_ivas_fx(
}
IF( NE_16( Q_inp_const, st->q_inp ) )
{
- Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */
+ Copy_Scale_sig( st->mem_decim_fx_q_inp, st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */
}
Scale_sig( st->buf_speech_enc, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k, sub( -1, sub( 15, st->exp_buf_speech_enc ) ) ); /* Q(-1) */
@@ -585,24 +588,23 @@ ivas_error pre_proc_front_ivas_fx(
headroom = 2;
move16();
-
- st->mem_preemph_fx = shl_sat( st->mem_preemph_fx, sub( st->q_inp, -1 ) ); /*st->q_inp*/
+ st->mem_preemph_fx_q_inp = shl_sat( st->mem_preemph_fx_q_inp, sub( st->q_inp, st->mem_preemph_q ) ); /*st->q_inp*/
move16();
- st->mem_preemph_DFT_fx = shl_sat( st->mem_preemph_DFT_fx, sub( st->q_inp, -1 ) ); /*st->q_inp*/
+ st->mem_preemph_DFT_fx_q_inp = shl_sat( st->mem_preemph_DFT_fx_q_inp, sub( st->q_inp, st->mem_preemph_q ) ); /*st->q_inp*/
move16();
test();
IF( EQ_16( element_mode, IVAS_CPE_DFT ) )
{
Copy_Scale_sig( new_inp_12k8_fx - STEREO_DFT_OVL_12k8 + L_FRAME, st->inp_12k8_mem_stereo_sw_fx, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, sub( Q_inp_const, st->q_inp ) ); /* memory for TD/DFT stereo switching Q_inp_const*/
- st->mem_preemph_fx = st->mem_preemph_DFT_fx; /* st->q_inp */
+ st->mem_preemph_fx_q_inp = st->mem_preemph_DFT_fx_q_inp; /* st->q_inp */
move16();
- st->mem_preemph_DFT_fx = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */
+ st->mem_preemph_DFT_fx_q_inp = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */
move16();
// PREEMPH_FX( new_inp_12k8_fx - STEREO_DFT_OVL_12k8, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx );
- PREEMPH_32FX( new_inp_12k8_fx - STEREO_DFT_OVL_12k8, sig_out, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx );
- dummy_fx = st->mem_preemph_fx;
+ PREEMPH_32FX( new_inp_12k8_fx - STEREO_DFT_OVL_12k8, sig_out, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx_q_inp );
+ dummy_fx = st->mem_preemph_fx_q_inp;
move16();
// PREEMPH_FX( new_inp_12k8_fx - STEREO_DFT_OVL_12k8 + L_FRAME, PREEMPH_FAC, STEREO_DFT_OVL_12k8, &dummy_fx );
@@ -618,18 +620,18 @@ ivas_error pre_proc_front_ivas_fx(
{
IF( EQ_16( hCPE->last_element_mode, IVAS_CPE_DFT ) )
{
- st->mem_preemph_fx = st->mem_preemph_DFT_fx; /* st->q_inp */
+ st->mem_preemph_fx_q_inp = st->mem_preemph_DFT_fx_q_inp; /* st->q_inp */
move16();
Copy_Scale_sig( st->inp_12k8_mem_stereo_sw_fx, new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, sub( st->q_inp, Q_inp_const ) ); /* st->q_inp */
// PREEMPH_FX( new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), PREEMPH_FAC, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, &st->mem_preemph_fx );
- PREEMPH_32FX( new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), sig_out, PREEMPH_FAC, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, &st->mem_preemph_fx );
+ PREEMPH_32FX( new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), sig_out, PREEMPH_FAC, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, &st->mem_preemph_fx_q_inp );
preemp_start_idx = new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT );
move16();
preemp_len = STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT;
move16();
}
- st->mem_preemph_DFT_fx = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */
+ st->mem_preemph_DFT_fx_q_inp = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */
move16();
}
@@ -640,15 +642,15 @@ ivas_error pre_proc_front_ivas_fx(
Word16 length_12k8 = NS2SA( INT_FS_12k8, L_MEM_RECALC_SCH_NS );
move16();
// PREEMPH_FX( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, PREEMPH_FAC, length_12k8, &st->mem_preemph_fx );
- PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, sig_out, PREEMPH_FAC, length_12k8, &st->mem_preemph_fx );
+ PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, sig_out, PREEMPH_FAC, length_12k8, &st->mem_preemph_fx_q_inp );
preemp_start_idx = new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8;
preemp_len = length_12k8;
move16();
}
// PREEMPH_FX( new_inp_12k8_fx - lMemRecalc_12k8, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx );
- PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8, sig_out + preemp_len, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx );
- dummy_fx = st->mem_preemph_fx; /* st->q_inp */
+ PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8, sig_out + preemp_len, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx_q_inp );
+ dummy_fx = st->mem_preemph_fx_q_inp; /* st->q_inp */
move16();
// PREEMPH_FX( new_inp_12k8_fx - lMemRecalc_12k8 + L_FRAME, PREEMPH_FAC, lMemRecalc_12k8 + L_FILT, &dummy_fx );
PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8 + L_FRAME, sig_out + preemp_len + L_FRAME, PREEMPH_FAC, lMemRecalc_12k8 + L_FILT, &dummy_fx );
@@ -669,8 +671,8 @@ ivas_error pre_proc_front_ivas_fx(
ELSE /* IVAS_SCE or IVAS_CPE_MDCT */
{
// PREEMPH_FX( new_inp_12k8_fx, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx );
- PREEMPH_32FX( new_inp_12k8_fx, sig_out, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx );
- dummy_fx = st->mem_preemph_fx;
+ PREEMPH_32FX( new_inp_12k8_fx, sig_out, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx_q_inp );
+ dummy_fx = st->mem_preemph_fx_q_inp;
move16();
// PREEMPH_FX( new_inp_12k8_fx + L_FRAME, PREEMPH_FAC, L_FILT, &dummy_fx );
PREEMPH_32FX( new_inp_12k8_fx + L_FRAME, sig_out + L_FRAME, PREEMPH_FAC, L_FILT, &dummy_fx );
@@ -678,11 +680,12 @@ ivas_error pre_proc_front_ivas_fx(
preemp_len = L_FRAME + L_FILT;
move16();
}
- st->mem_preemph_fx = shl_sat( st->mem_preemph_fx, sub( -1, st->q_inp ) ); /*Q(-1) saturation added as float value goes above 65536 for +10 dB test (ltv48_MC512.wav and ltv48_MC51.wav) */
+ st->mem_preemph_fx = shl_sat( st->mem_preemph_fx_q_inp, sub( -1, st->q_inp ) ); /*Q(-1) saturation added as float value goes above 65536 for +10 dB test (ltv48_MC512.wav and ltv48_MC51.wav) */
move16();
- st->mem_preemph_DFT_fx = shl( st->mem_preemph_DFT_fx, sub( -1, st->q_inp ) ); /*Q(-1)*/
+ st->mem_preemph_DFT_fx = shl( st->mem_preemph_DFT_fx_q_inp, sub( -1, st->q_inp ) ); /*Q(-1)*/
+ move16();
+ st->mem_preemph_q = st->q_inp;
move16();
-
maximum_abs_32_fx( sig_out, preemp_len, &max_32 );
inp_max = s_max( extract_h( max_32 ), 1 );
@@ -739,7 +742,7 @@ ivas_error pre_proc_front_ivas_fx(
IF( hStereoClassif != NULL )
{
- IF( GT_32( sub( st->lp_speech_fx, Etot_fx ), 25 << Q8 ) ) /*Q8*/
+ IF( GT_32( sub( st->lp_speech_fx, extract_h( Etot_fx ) ), 25 << Q8 ) ) /*Q8*/
{
hStereoClassif->silence_flag = 2;
move16();
@@ -759,11 +762,11 @@ ivas_error pre_proc_front_ivas_fx(
IF( hCPE != NULL )
{
- noise_est_pre_32fx( L_deposit_h( Etot_fx ), st->ini_frame, st->hNoiseEst, st->idchan, element_mode, hCPE->last_element_mode );
+ noise_est_pre_32fx( ( Etot_fx ), st->ini_frame, st->hNoiseEst, st->idchan, element_mode, hCPE->last_element_mode );
}
ELSE
{
- noise_est_pre_32fx( L_deposit_h( Etot_fx ), st->ini_frame, st->hNoiseEst, st->idchan, element_mode, element_mode );
+ noise_est_pre_32fx( ( Etot_fx ), st->ini_frame, st->hNoiseEst, st->idchan, element_mode, element_mode );
}
test();
@@ -775,21 +778,9 @@ ivas_error pre_proc_front_ivas_fx(
move16();
}
- Word16 scale = add( L_norm_arr( st->hNoiseEst->enrO_fx, NB_BANDS ), st->hNoiseEst->q_enrO );
- scale = s_min( scale, fr_bands_fx_q );
-
- scale_sig32( st->hNoiseEst->enrO_fx, NB_BANDS, sub( scale, st->hNoiseEst->q_enrO ) );
- st->hNoiseEst->q_enrO = scale;
- move16();
-
- scale_sig32( fr_bands_fx, 2 * NB_BANDS, sub( scale, fr_bands_fx_q ) );
- fr_bands_fx_q = scale;
- move16();
-
st->vad_flag = wb_vad_ivas_fx( st, fr_bands_fx, fr_bands_fx_q, &i, &i, &i, &snr_sum_he_fx, &localVAD_HE_SAD,
&( st->flag_noisy_speech_snr ), NULL, NULL, -MAX_16, -MAX_16 ); //-100000f == max 16bit float
move16();
-
#ifdef DEBUG_FORCE_DIR
if ( st->force_dir[0] != '\0' )
{
@@ -913,18 +904,18 @@ ivas_error pre_proc_front_ivas_fx(
*----------------------------------------------------------------*/
noise_est_down_ivas_fx( fr_bands_fx, fr_bands_fx_q, st->hNoiseEst->bckr_fx, &st->hNoiseEst->q_bckr, tmpN_fx, &q_tmpN, tmpE_fx, &q_tmpE, st->min_band, st->max_band,
- &st->hNoiseEst->totalNoise_fx, Etot_fx, &st->hNoiseEst->Etot_last_fx, &st->hNoiseEst->Etot_v_h2_fx );
+ &st->hNoiseEst->totalNoise_fx, Etot_fx, &st->hNoiseEst->Etot_last_32fx, &st->hNoiseEst->Etot_v_h2_32fx );
test();
IF( lr_vad_enabled && st->idchan == 0 )
{
- noise_est_down_ivas_fx( fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], hCPE->hFrontVad[0]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[0]->hNoiseEst->q_bckr, tmpN_LR_fx[0], &q_tmpN_LR[0], tmpE_LR_fx[0], &q_tmpE_LR[0], st->min_band, st->max_band, &hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx, Etot_LR_fx[0], &hCPE->hFrontVad[0]->hNoiseEst->Etot_last_fx, &hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_fx );
- noise_est_down_ivas_fx( fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], hCPE->hFrontVad[1]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[1]->hNoiseEst->q_bckr, tmpN_LR_fx[1], &q_tmpN_LR[1], tmpE_LR_fx[1], &q_tmpE_LR[1], st->min_band, st->max_band, &hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx, Etot_LR_fx[1], &hCPE->hFrontVad[1]->hNoiseEst->Etot_last_fx, &hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_fx );
+ noise_est_down_ivas_fx( fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], hCPE->hFrontVad[0]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[0]->hNoiseEst->q_bckr, tmpN_LR_fx[0], &q_tmpN_LR[0], tmpE_LR_fx[0], &q_tmpE_LR[0], st->min_band, st->max_band, &hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_LR_fx[0] ), &hCPE->hFrontVad[0]->hNoiseEst->Etot_last_32fx, &hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_32fx );
+ noise_est_down_ivas_fx( fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], hCPE->hFrontVad[1]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[1]->hNoiseEst->q_bckr, tmpN_LR_fx[1], &q_tmpN_LR[1], tmpE_LR_fx[1], &q_tmpE_LR[1], st->min_band, st->max_band, &hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_LR_fx[1] ), &hCPE->hFrontVad[1]->hNoiseEst->Etot_last_32fx, &hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_32fx );
corr_shiftL_fx = correlation_shift_fx( hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx ); // Q15
corr_shiftR_fx = correlation_shift_fx( hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx ); // Q15
}
- *relE_fx = sub( Etot_fx, st->lp_speech_fx ); // Q8
+ *relE_fx = sub( extract_h( Etot_fx ), st->lp_speech_fx ); // Q8
move16();
corr_shift_fx = correlation_shift_fx( st->hNoiseEst->totalNoise_fx ); /* Q15 */
@@ -939,78 +930,41 @@ ivas_error pre_proc_front_ivas_fx(
test();
IF( st->idchan == 0 || EQ_16( element_mode, IVAS_CPE_MDCT ) )
{
- test();
- test();
- IF( EQ_16( element_mode, IVAS_CPE_TD ) && lr_vad_enabled && band_energies_LR_fx != NULL )
+ Word16 norm;
+ norm = L_norm_arr( st->hFdCngEnc->msPeriodog_fx, NPART );
+ IF( NE_16( norm, Q31 ) )
{
- Word16 normmsPeriodog_fx = Q31, zero_flag = 0;
- move16();
- move16();
- zero_flag = get_zero_flag( st->hFdCngEnc->msPeriodog_fx, NPART );
- IF( zero_flag )
- {
- normmsPeriodog_fx = getScaleFactor32( st->hFdCngEnc->msPeriodog_fx, NPART );
- move16();
- }
- st->hFdCngEnc->msPeriodog_fx_exp_cldfb = sub( 31, normmsPeriodog_fx );
- st->hFdCngEnc->msPeriodog_fx_exp_fft = sub( 31, normmsPeriodog_fx );
+ scale_sig32( st->hFdCngEnc->msPeriodog_fx, NPART, norm ); // exp:st->hFdCngEnc->msPeriodog_fx_exp-norm
+ st->hFdCngEnc->msPeriodog_fx_exp = sub( st->hFdCngEnc->msPeriodog_fx_exp, norm );
+ st->hFdCngEnc->msPeriodog_fx_exp_cldfb = sub( st->hFdCngEnc->msPeriodog_fx_exp_cldfb, norm );
+ st->hFdCngEnc->msPeriodog_fx_exp_fft = sub( st->hFdCngEnc->msPeriodog_fx_exp_fft, norm );
move16();
move16();
- Scale_sig32( st->hFdCngEnc->msPeriodog_fx, NPART, normmsPeriodog_fx ); /* exp(st->hFdCngEnc->msPeriodog_fx_exp - normmsPeriodog_fx) */
- st->hFdCngEnc->msPeriodog_fx_exp = sub( st->hFdCngEnc->msPeriodog_fx_exp, normmsPeriodog_fx );
- Word16 msNoiseEst_Q = Q31;
move16();
+ }
+ norm = L_norm_arr( st->hFdCngEnc->msNoiseEst_old_fx, NPART );
+ IF( NE_16( norm, Q31 ) )
+ {
+ scale_sig32( st->hFdCngEnc->msNoiseEst_old_fx, NPART, norm ); // exp:st->hFdCngEnc->msNoiseEst_old_fx_exp-norm
+ st->hFdCngEnc->msNoiseEst_old_fx_exp = sub( st->hFdCngEnc->msNoiseEst_old_fx_exp, norm );
move16();
- zero_flag = get_zero_flag( st->hFdCngEnc->msNoiseEst_old_fx, NPART );
- IF( zero_flag )
- {
- msNoiseEst_Q = getScaleFactor32( st->hFdCngEnc->msNoiseEst_old_fx, NPART );
- scale_sig32( st->hFdCngEnc->msNoiseEst_old_fx, NPART, msNoiseEst_Q ); /* exp(st->hFdCngEnc->msNoiseEst_old_fx_exp - msNoiseEst_Q) */
- st->hFdCngEnc->msNoiseEst_old_fx_exp = sub( st->hFdCngEnc->msNoiseEst_old_fx_exp, msNoiseEst_Q );
- move16();
- }
+ }
+
+ test();
+ test();
+ IF( EQ_16( element_mode, IVAS_CPE_TD ) && lr_vad_enabled && band_energies_LR_fx != NULL )
+ {
perform_noise_estimation_enc_ivas_fx( band_energies_LR_fx, sub( Q31, band_energies_LR_fx_q ), enerBuffer_fx, *enerBuffer_fx_exp, st->hFdCngEnc, input_Fs, hCPE );
}
ELSE
{
- Word16 normmsPeriodog_fx = Q31, zero_flag = 0;
- move16();
- move16();
- shift = getScaleFactor32( band_energies_fx, 2 * NB_BANDS );
- scale_sig32( band_energies_fx, 2 * NB_BANDS, shift );
- q_band_energies = add( q_band_energies, shift );
-
- zero_flag = get_zero_flag( st->hFdCngEnc->msPeriodog_fx, NPART ); /* Q0 */
- IF( zero_flag )
+ norm = L_norm_arr( st->hFdCngEnc->hFdCngCom->periodog, PERIODOGLEN );
+ IF( NE_16( norm, Q31 ) )
{
- normmsPeriodog_fx = getScaleFactor32( st->hFdCngEnc->msPeriodog_fx, NPART );
- }
- st->hFdCngEnc->msPeriodog_fx_exp_cldfb = sub( 31, normmsPeriodog_fx );
- st->hFdCngEnc->msPeriodog_fx_exp_fft = sub( 31, normmsPeriodog_fx );
- move16();
- move16();
- Scale_sig32( st->hFdCngEnc->msPeriodog_fx, NPART, normmsPeriodog_fx ); /* exp(st->hFdCngEnc->msPeriodog_fx_exp - normmsPeriodog_fx)*/
- st->hFdCngEnc->msPeriodog_fx_exp = sub( st->hFdCngEnc->msPeriodog_fx_exp, normmsPeriodog_fx );
- move16();
- Word16 msNoiseEst_Q = Q31;
- move16();
- zero_flag = get_zero_flag( st->hFdCngEnc->msNoiseEst_old_fx, NPART ); /* Q0 */
- IF( zero_flag )
- {
- msNoiseEst_Q = getScaleFactor32( st->hFdCngEnc->msNoiseEst_old_fx, NPART );
- scale_sig32( st->hFdCngEnc->msNoiseEst_old_fx, NPART, msNoiseEst_Q ); /* exp(st->hFdCngEnc->msNoiseEst_old_fx_exp - msNoiseEst_Q) */
- st->hFdCngEnc->msNoiseEst_old_fx_exp = sub( st->hFdCngEnc->msNoiseEst_old_fx_exp, msNoiseEst_Q );
+ scale_sig32( st->hFdCngEnc->hFdCngCom->periodog, PERIODOGLEN, norm ); // exp:st->hFdCngEnc->hFdCngCom->exp_cldfb_periodog-norm
+ st->hFdCngEnc->hFdCngCom->exp_cldfb_periodog = sub( st->hFdCngEnc->hFdCngCom->exp_cldfb_periodog, norm );
move16();
}
- zero_flag = get_zero_flag( st->hFdCngEnc->hFdCngCom->periodog, PERIODOGLEN ); /* Q0 */
- Word16 normmsperiodog = 31;
- move16();
- IF( zero_flag )
- {
- normmsperiodog = getScaleFactor32( st->hFdCngEnc->hFdCngCom->periodog, PERIODOGLEN );
- }
- st->hFdCngEnc->hFdCngCom->exp_cldfb_periodog = sub( 31, normmsperiodog );
- move16();
perform_noise_estimation_enc_ivas_fx( band_energies_fx, sub( Q31, q_band_energies ), enerBuffer_fx, *enerBuffer_fx_exp, st->hFdCngEnc, input_Fs, hCPE );
}
@@ -1150,8 +1104,7 @@ ivas_error pre_proc_front_ivas_fx(
move16();
}
- analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx,
- INT_FS_12k8, i, *Q_new, Q_r );
+ analy_lp_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, element_mode, i, *Q_new, Q_r );
FOR( Word16 idx = 0; idx < M + 1; idx++ )
{
@@ -1276,7 +1229,7 @@ ivas_error pre_proc_front_ivas_fx(
* Update estimated noise energy and voicing cut-off frequency
*-----------------------------------------------------------------*/
- scale = s_min( Q31, s_min( add( q_tmpN, L_norm_arr( tmpN_fx, NB_BANDS ) ), add( st->hNoiseEst->q_bckr, L_norm_arr( st->hNoiseEst->bckr_fx, NB_BANDS ) ) ) );
+ Word16 scale = s_min( Q31, s_min( add( q_tmpN, L_norm_arr( tmpN_fx, NB_BANDS ) ), add( st->hNoiseEst->q_bckr, L_norm_arr( st->hNoiseEst->bckr_fx, NB_BANDS ) ) ) );
scale = sub( scale, 1 ); // guard bits
scale_sig32( st->hNoiseEst->bckr_fx, NB_BANDS, sub( scale, st->hNoiseEst->q_bckr ) );
scale_sig32( tmpN_fx, NB_BANDS, sub( scale, q_tmpN ) );
@@ -1303,9 +1256,9 @@ ivas_error pre_proc_front_ivas_fx(
move16();
move16();
- noise_est_ivas_fx( st, old_pitch1, tmpN_fx, epsP_fx, Etot_fx, *relE_fx, corr_shift_fx, tmpE_fx, q_tmpE, fr_bands_fx, fr_bands_fx_q, cor_map_sum_fx,
- &ncharX_fx, &sp_div_fx, &q_sp_div, &non_staX_fx, loc_harm, lf_E_fx, q_lf_E_fx, &st->hNoiseEst->harm_cor_cnt, st->hNoiseEst->Etot_l_lp_fx,
- st->hNoiseEst->Etot_v_h2_fx, &st->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_fx,
+ noise_est_ivas_fx( st, old_pitch1, tmpN_fx, epsP_fx, extract_h( Etot_fx ), *relE_fx, corr_shift_fx, tmpE_fx, q_tmpE, fr_bands_fx, fr_bands_fx_q, cor_map_sum_fx,
+ &ncharX_fx, &sp_div_fx, &q_sp_div, &non_staX_fx, loc_harm, lf_E_fx, q_lf_E_fx, &st->hNoiseEst->harm_cor_cnt, extract_h( st->hNoiseEst->Etot_l_lp_32fx ),
+ extract_h( st->hNoiseEst->Etot_v_h2_32fx ), &st->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_fx,
hStereoClassif, NULL, st->ini_frame );
test();
@@ -1348,14 +1301,14 @@ ivas_error pre_proc_front_ivas_fx(
noise_est_ivas_fx( st, old_pitch1, tmpN_LR_fx[0], epsP_fx, Etot_LR_fx[0], sub( Etot_LR_fx[0], hCPE->hFrontVad[0]->lp_speech_fx ), corr_shiftL_fx,
tmpE_LR_fx[0], q_tmpE_LR[0], fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], &cor_map_sum_LR_fx[0], &ncharX_LR_fx, &sp_div_LR_fx, &q_sp_div_LR,
&non_staX_LR_fx, loc_harmLR_fx, lf_E_LR_fx[0], lf_E_LR_fx_q, &hCPE->hFrontVad[0]->hNoiseEst->harm_cor_cnt,
- hCPE->hFrontVad[0]->hNoiseEst->Etot_l_lp_fx, hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_fx, &hCPE->hFrontVad[0]->hNoiseEst->bg_cnt,
+ extract_h( hCPE->hFrontVad[0]->hNoiseEst->Etot_l_lp_32fx ), extract_h( hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_32fx ), &hCPE->hFrontVad[0]->hNoiseEst->bg_cnt,
st->lgBin_E_fx, &dummy_fx, S_map_LR_fx, NULL, hCPE->hFrontVad[0], hCPE->hFrontVad[0]->ini_frame );
/* Note: the index [0] in the last argument is intended, the ini_frame counter is only maintained in the zero-th channel's VAD handle */
noise_est_ivas_fx( st, old_pitch1, tmpN_LR_fx[1], epsP_fx, Etot_LR_fx[1], sub( Etot_LR_fx[1], hCPE->hFrontVad[1]->lp_speech_fx ), corr_shiftR_fx,
tmpE_LR_fx[1], q_tmpE_LR[1], fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], &cor_map_sum_LR_fx[1], &ncharX_LR_fx, &sp_div_LR_fx, &q_sp_div_LR,
&non_staX_LR_fx, loc_harmLR_fx, lf_E_LR_fx[1], lf_E_LR_fx_q, &hCPE->hFrontVad[1]->hNoiseEst->harm_cor_cnt,
- hCPE->hFrontVad[1]->hNoiseEst->Etot_l_lp_fx, hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_fx, &hCPE->hFrontVad[1]->hNoiseEst->bg_cnt,
+ extract_h( hCPE->hFrontVad[1]->hNoiseEst->Etot_l_lp_32fx ), extract_h( hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_32fx ), &hCPE->hFrontVad[1]->hNoiseEst->bg_cnt,
st->lgBin_E_fx, &dummy_fx, S_map_LR_fx, NULL, hCPE->hFrontVad[1], hCPE->hFrontVad[0]->ini_frame );
}
@@ -1373,17 +1326,17 @@ ivas_error pre_proc_front_ivas_fx(
* Find spectral tilt
* UC and VC frame selection
*-----------------------------------------------------------------*/
+
scale = s_min( Q31, s_min( add( st->hNoiseEst->q_bckr, L_norm_arr( st->hNoiseEst->bckr_fx, NB_BANDS ) ), add( fr_bands_fx_q, L_norm_arr( fr_bands_fx, 2 * NB_BANDS ) ) ) );
scale_sig32( fr_bands_fx, 2 * NB_BANDS, sub( scale, fr_bands_fx_q ) );
- scale_sig32( st->hNoiseEst->bckr_fx, NB_BANDS, sub( scale, st->hNoiseEst->q_bckr ) );
- st->hNoiseEst->q_bckr = fr_bands_fx_q = scale;
- move16();
+ Copy_Scale_sig32( st->hNoiseEst->bckr_fx, bckr_temp, NB_BANDS, sub( scale, st->hNoiseEst->q_bckr ) );
+ fr_bands_fx_q = scale;
move16();
- find_tilt_ivas_fx( fr_bands_fx, fr_bands_fx_q, st->hNoiseEst->bckr_fx, st->hNoiseEst->q_bckr, ee_fx, st->pitch, st->voicing_fx, lf_E_fx, q_lf_E_fx,
+ find_tilt_ivas_fx( fr_bands_fx, fr_bands_fx_q, bckr_temp, scale, ee_fx, st->pitch, st->voicing_fx, lf_E_fx, q_lf_E_fx,
corr_shift_fx, st->input_bwidth, st->max_band, hp_E_fx, MODE1, &( st->bckr_tilt_lt ), st->Opt_SC_VBR );
- st->coder_type = find_uv_ivas_fx( st, pitch_fr_fx, voicing_fr_fx, inp_12k8_fx, ee_fx, &dE1X_fx, corr_shift_fx, *relE_fx, Etot_fx, hp_E_fx,
+ st->coder_type = find_uv_ivas_fx( st, pitch_fr_fx, voicing_fr_fx, inp_12k8_fx, ee_fx, &dE1X_fx, corr_shift_fx, *relE_fx, extract_h( Etot_fx ), hp_E_fx,
&flag_spitch, last_core_orig, hStereoClassif, *Q_new /*q_inp_12k8*/, fr_bands_fx_q ); // Q0
Copy_Scale_sig_16_32_no_sat( st->lgBin_E_fx, st->Bin_E_fx, L_FFT / 2, sub( st->q_Bin_E, Q7 ) );
@@ -1415,7 +1368,7 @@ ivas_error pre_proc_front_ivas_fx(
* TC frame selection
*-----------------------------------------------------------------*/
- st->clas = signal_clas_fx( st, inp_12k8_fx, ee_fx, *relE_fx, L_look, tdm_SM_last_clas ); /* Q0 */
+ st->clas = signal_clas_ivas_fx( st, inp_12k8_fx, ee_fx, *relE_fx, L_look, tdm_SM_last_clas ); /* Q0 */
move16();
select_TC_fx( MODE1, st->tc_cnt, &st->coder_type, st->localVAD );
@@ -1457,7 +1410,7 @@ ivas_error pre_proc_front_ivas_fx(
scale_sig32( PS_fx, 128, shift );
Qfact_PS = add( Qfact_PS, shift );
- smc_dec = ivas_smc_gmm_fx( st, hStereoClassif, localVAD_HE_SAD, Etot_fx, lsp_new_fx, *cor_map_sum_fx /*Q8*/, epsP_fx, PS_fx, non_staX_fx, *relE_fx, &high_lpn_flag, flag_spitch, Qfact_PS, *epsP_fx_q, hSpMusClas->past_PS_Q ); /* Q0 */
+ smc_dec = ivas_smc_gmm_fx( st, hStereoClassif, localVAD_HE_SAD, extract_h( Etot_fx ), lsp_new_fx, *cor_map_sum_fx /*Q8*/, epsP_fx, PS_fx, non_staX_fx, *relE_fx, &high_lpn_flag, flag_spitch, Qfact_PS, *epsP_fx_q, hSpMusClas->past_PS_Q ); /* Q0 */
#ifdef DEBUG_FORCE_DIR
if ( st->force_dir[0] != '\0' )
@@ -1491,7 +1444,7 @@ ivas_error pre_proc_front_ivas_fx(
* Update of old per-band energy spectrum
*----------------------------------------------------------------*/
- ivas_long_enr_fx( st, Etot_fx, localVAD_HE_SAD, high_lpn_flag, NULL, 1, NULL, NULL );
+ ivas_long_enr_fx( st, extract_h( Etot_fx ), localVAD_HE_SAD, high_lpn_flag, NULL, 1, NULL, NULL );
Copy32( fr_bands_fx + NB_BANDS, st->hNoiseEst->enrO_fx, NB_BANDS ); /* fr_bands_fx_q */
st->hNoiseEst->q_enrO = fr_bands_fx_q;
@@ -1500,7 +1453,7 @@ ivas_error pre_proc_front_ivas_fx(
test();
IF( lr_vad_enabled && st->idchan == 0 )
{
- ivas_long_enr_fx( st, -1, localVAD_HE_SAD, high_lpn_flag, hCPE->hFrontVad, CPE_CHANNELS, localVAD_HE_SAD_LR, Etot_LR_fx );
+ ivas_long_enr_fx( st, -256 /*-1 q8*/, localVAD_HE_SAD, high_lpn_flag, hCPE->hFrontVad, CPE_CHANNELS, localVAD_HE_SAD_LR, Etot_LR_fx );
Copy32( fr_bands_LR_fx[0] + NB_BANDS, hCPE->hFrontVad[0]->hNoiseEst->enrO_fx, NB_BANDS ); // fr_bands_LR_fx_q
hCPE->hFrontVad[0]->hNoiseEst->q_enrO = fr_bands_LR_fx_q[0];
@@ -1575,12 +1528,6 @@ ivas_error pre_proc_front_ivas_fx(
move16();
IF( flag_16k_smc )
{
- Scale_sig( st->input_fx - input_frame, input_frame_full, sub( -1, st->q_inp ) ); /* Q(-1) */
- st->q_inp = -1;
- move16();
- st->q_old_inp = -1;
- move16();
-
Word16 Q_old_inp_16k = -1;
move16();
@@ -1678,7 +1625,7 @@ ivas_error pre_proc_front_ivas_fx(
st->q_Bin_E = add( *Q_new, Q_SCALE - 2 );
move16();
/* 2nd stage speech/music classification (ACELP/GSC/TCX core selection) */
- ivas_smc_mode_selection_fx( st, element_brate, smc_dec, *relE_fx, Etot_fx, attack_flag, inp_12k8_fx, *Q_new, S_map_fx, flag_spitch );
+ ivas_smc_mode_selection_fx( st, element_brate, smc_dec, *relE_fx, extract_h( Etot_fx ), attack_flag, inp_12k8_fx, *Q_new, S_map_fx, flag_spitch );
}
#ifdef DEBUG_FORCE_DIR
@@ -1718,13 +1665,6 @@ ivas_error pre_proc_front_ivas_fx(
st->exp_old_inp_12k8 = sub( Q15, add( *Q_new, shift ) );
move16();
- Scale_sig( st->input_fx - input_frame, input_frame_full, sub( -1, st->q_inp ) );
- st->q_inp = -1;
- move16();
- st->q_old_inp = -1;
- move16();
-
- // Scale_sig( old_inp_12k8_fx, L_INP_12k8, negate( add( *Q_new, 1 ) ) );
*Q_new = sub( *Q_new, Q_inp_const ); // ivas_core_enc will assume inp signal (12k8 and 16k) in Q_new - 1
move16();
@@ -1735,69 +1675,6 @@ ivas_error pre_proc_front_ivas_fx(
return error;
}
-#ifdef IVAS_FIXED_ENC
-/*-------------------------------------------------------------------*
- * calculate_energy_buffer_fx()
- *
- * calculate DFT-based energies
- *--------------------------------------------------------------------*/
-
-static void calculate_energy_buffer_fx(
- CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- Word64 enerBuffer_dft_fx[], /* o : energy buffer */
- Word16 *enerBuffer_dft_q_fx,
- const Word16 no_channels, /* i : no. of used CLDFB channels */
- const Word32 input_Fs /* i : input sampling rate */
-)
-{
- Word16 i, j;
- Word64 nrg_DMX_fx[CLDFB_NO_CHANNELS_MAX];
- Word64 *p_nrg_DMX_fx;
- Word32 *pDFT_DMX_fx;
- Word16 *pDFT_DMX_q_fx;
- Word32 chan_width_bins_fx;
- Word16 band_res_dft_fx, chan_width_f_fx, start, stop;
-
- Word16 temp_q1 = norm_l( input_Fs ) - 1;
- Word16 temp_q2 = norm_s( hCPE->hStereoDft->NFFT );
-
- band_res_dft_fx = div_l( L_shl( input_Fs, temp_q1 ), shl( hCPE->hStereoDft->NFFT, temp_q2 ) );
- chan_width_f_fx = 24000 / CLDFB_NO_CHANNELS_MAX;
- chan_width_bins_fx = L_shl( (Word32) div_s( chan_width_f_fx, band_res_dft_fx ), ( sub( add( temp_q1, 1 ), temp_q2 ) ) ); // Q16
-
- pDFT_DMX_fx = hCPE->hStereoDft->DFT_fx[0];
- pDFT_DMX_q_fx = hCPE->hStereoDft->DFT_q_fx;
- start = 1;
- p_nrg_DMX_fx = nrg_DMX_fx;
-
- *p_nrg_DMX_fx = Mpy_32_32( pDFT_DMX_fx[0], pDFT_DMX_fx[0] );
-
- FOR( i = 0; i < no_channels; i++ )
- {
- stop = (Word16) ( L_add( Mpy_32_16_1( chan_width_bins_fx, add( i, 1 ) ), 1 ) >> 1 );
- FOR( j = start; j < stop; j++ )
- {
- *p_nrg_DMX_fx = W_add( *p_nrg_DMX_fx, Mpy_32_32( pDFT_DMX_fx[2 * j], pDFT_DMX_fx[2 * j] ) );
- *p_nrg_DMX_fx = W_add( *p_nrg_DMX_fx, Mpy_32_32( pDFT_DMX_fx[2 * j + 1], pDFT_DMX_fx[2 * j + 1] ) );
- }
- enerBuffer_dft_q_fx[i] = 2 * pDFT_DMX_q_fx[i] - 31;
- start = stop;
- p_nrg_DMX_fx++;
- }
-
- FOR( i = 0; i < no_channels; i++ ) /* Consider only used channels, dependent on Fs */
- {
- enerBuffer_dft_fx[i] = nrg_DMX_fx[i] / 3;
- }
-
- /* Set remaining entries of enerBuffer to zero */
- FOR( ; i < CLDFB_NO_CHANNELS_MAX; i++ )
- {
- enerBuffer_dft_fx[i] = 0;
- }
- return;
-}
-#endif
/*-------------------------------------------------------------------*
* calculate_energy_buffer()
*
diff --git a/lib_enc/ivas_core_pre_proc_fx.c b/lib_enc/ivas_core_pre_proc_fx.c
index 781d290aca75f4549ce757d98faad2c652464777..938ab9964f486fa5d721c01f325c3b217d1617c2 100644
--- a/lib_enc/ivas_core_pre_proc_fx.c
+++ b/lib_enc/ivas_core_pre_proc_fx.c
@@ -565,9 +565,6 @@ ivas_error pre_proc_ivas_fx(
Scale_sig( st->buf_speech_enc_pe, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k, sub( Q_old_inp_16k, sub( Q15, st->exp_buf_speech_enc_pe ) ) ); /* Q15 - Q_old_inp_16k */
st->exp_buf_speech_enc_pe = sub( Q15, Q_old_inp_16k );
move16();
- Scale_sig( st->input_fx, input_frame, sub( -1, st->q_inp ) );
- st->q_inp = -1;
- move16();
Scale_sig( st->buf_wspeech_enc, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320, sub( Q_old_inp_16k, sub( Q15, st->exp_buf_wspeech_enc ) ) ); /* Q15 - Q_old_inp_16k */
st->mem_wsp_enc = shl( st->mem_wsp_enc, sub( Q_old_inp_16k, sub( Q15, st->exp_buf_wspeech_enc ) ) ); // Q_old_inp_16k
move16();
@@ -713,7 +710,7 @@ ivas_error ivas_compute_core_buffers_fx(
Word16 *inp_16k_fx, *new_inp_16k_fx;
Word16 delay, element_mode;
Word16 temp1F_icatdmResampBuf_fx[L_FILT_MAX]; /* temp buffers for ICA TDM resamplers */
- Word16 mem_decim16k_dummy_fx[2 * L_FILT_MAX];
+ Word16 mem_decim16k_dummy_fx[2 * L_FILT_MAX], input_buf_fx[L_FRAME48k * 2];
Word16 *signal_in_fx;
Word16 lMemRecalc, lMemRecalc_16k, L_frame_tmp, L_look;
Word32 input_Fs;
@@ -733,7 +730,12 @@ ivas_error ivas_compute_core_buffers_fx(
set16_fx( new_inp_resamp16k_fx, 0, L_FRAME16k );
set16_fx( epsP_h, 0, M + 1 );
set16_fx( epsP_l, 0, M + 1 );
- signal_in_fx = st->input_fx; /* st->q_inp */
+ set16_fx( input_buf_fx, 0, L_FRAME48k * 2 );
+
+ Copy_Scale_sig( st->input_fx - input_frame, input_buf_fx, input_frame, sub( -1, st->q_old_inp ) );
+ Copy_Scale_sig( st->input_fx, input_buf_fx + input_frame, input_frame, sub( -1, st->q_inp ) );
+
+ signal_in_fx = &input_buf_fx[input_frame]; /* st->q_inp */
input_Fs = st->input_Fs; /* Q0 */
move32();
@@ -884,8 +886,11 @@ ivas_error ivas_compute_core_buffers_fx(
IF( EQ_16( st->bwidth, WB ) )
{
- Copy_Scale_sig( new_inp_16k_fx - delay, st->hBWE_FD->old_input_wb_fx, delay, negate( add( Q_old_inp_16k, 1 ) ) ); /* Scaling to Q(-1) */
- Copy( new_inp_16k_fx - STEREO_DFT_OVL_16k, st->hBWE_FD->L_old_wtda_swb_fx + L_FRAME16k - STEREO_DFT_OVL_16k + delay, sub( STEREO_DFT_OVL_16k, delay ) ); /* Check Q here once. Q should be Q_old_wtda */
+ Copy_Scale_sig( new_inp_16k_fx - delay, st->hBWE_FD->old_input_wb_fx, delay, negate( add( Q_old_inp_16k, 1 ) ) ); /* Scaling to Q(-1) */
+ scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( Q_old_inp_16k, st->Q_old_wtda ) ); // st->Q_old_wtda->Q_old_inp_16k
+ Copy( new_inp_16k_fx - STEREO_DFT_OVL_16k, st->hBWE_FD->L_old_wtda_swb_fx + L_FRAME16k - STEREO_DFT_OVL_16k + delay, sub( STEREO_DFT_OVL_16k, delay ) );
+ st->Q_old_wtda = Q_old_inp_16k;
+ move16();
}
}
ELSE IF( EQ_16( element_mode, IVAS_CPE_TD ) )
@@ -896,8 +901,11 @@ ivas_error ivas_compute_core_buffers_fx(
test();
IF( EQ_16( st->bwidth, WB ) && st->hBWE_FD != NULL )
{
- Copy_Scale_sig( new_inp_16k_fx + L_FILT16k - delay, st->hBWE_FD->old_input_wb_fx, delay, negate( add( Q_old_inp_16k, 1 ) ) ); /* Scaling to Q(-1) */
- Copy( new_inp_16k_fx - L_MEM_RECALC_16K, st->hBWE_FD->L_old_wtda_swb_fx + L_FRAME16k - L_MEM_RECALC_16K - L_FILT16k + delay, sub( L_MEM_RECALC_16K + L_FILT16k, delay ) ); /* Check Q here once. Q should be Q_old_wtda */
+ Copy_Scale_sig( new_inp_16k_fx + L_FILT16k - delay, st->hBWE_FD->old_input_wb_fx, delay, negate( add( Q_old_inp_16k, 1 ) ) ); /* Scaling to Q(-1) */
+ scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( Q_old_inp_16k, st->Q_old_wtda ) ); // st->Q_old_wtda->Q_old_inp_16k
+ Copy( new_inp_16k_fx - L_MEM_RECALC_16K, st->hBWE_FD->L_old_wtda_swb_fx + L_FRAME16k - L_MEM_RECALC_16K - L_FILT16k + delay, sub( L_MEM_RECALC_16K + L_FILT16k, delay ) );
+ st->Q_old_wtda = Q_old_inp_16k;
+ move16();
}
}
ELSE IF( element_mode == IVAS_SCE )
@@ -1132,11 +1140,11 @@ ivas_error ivas_compute_core_buffers_fx(
IF( Q_new )
{
- analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, 0, sub( *Q_new, 1 ), Q_r );
+ analy_lp_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, sub( *Q_new, 1 ), Q_r );
}
ELSE
{
- analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, 0, -1, Q_r );
+ analy_lp_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, -1, Q_r );
}
/*--------------------------------------------------------------*
@@ -1163,11 +1171,8 @@ ivas_error ivas_compute_core_buffers_fx(
ELSE IF( GT_32( input_Fs, 8000 ) && EQ_32( sr_core, INT_FS_16k ) )
{
Copy( &old_inp_16k_fx[L_frame_tmp], st->old_inp_16k_fx, L_INP_MEM );
- IF( Q_new )
- {
- st->exp_old_inp_16k = sub( Q16, *Q_new ); //(*Q_new - 1)
- move16();
- }
+ st->exp_old_inp_16k = sub( Q16, *Q_new ); //(*Q_new - 1)
+ move16();
}
ELSE IF( GT_32( input_Fs, 8000 ) )
{
diff --git a/lib_enc/ivas_corecoder_enc_reconfig_fx.c b/lib_enc/ivas_corecoder_enc_reconfig_fx.c
index 2e09c42ed88a3f672723a0f9465157a031f56563..6a2748e1c7d1fafb83d1074ca97f07604372112f 100644
--- a/lib_enc/ivas_corecoder_enc_reconfig_fx.c
+++ b/lib_enc/ivas_corecoder_enc_reconfig_fx.c
@@ -38,6 +38,10 @@
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
#include "math.h"
+#include "wmc_auto.h"
+#ifdef DBG_BITSTREAM_ANALYSIS
+#include
+#endif
/*-------------------------------------------------------------------*
* ivas_corecoder_enc_reconfig()
*
@@ -192,6 +196,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
move16();
temp_ind_list[i].nb_bits = hBstr->ind_list[i].nb_bits; /* Q0 */
move16();
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( temp_ind_list[i].function_name, hBstr->ind_list[i].function_name, 100 );
+#endif
hBstr->ind_list[i].nb_bits = -1; /* Q0 */
move16();
}
@@ -213,24 +220,37 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
move16();
}
- Word16 q_com_sce = Q15;
+ Word16 q_com_sce = Q15, q_com_sce32 = Q31;
+ move16();
+ move16();
+ Word16 q_com_cpe = Q15, q_com_cpe32 = Q31;
move16();
- Word16 q_com_cpe = Q15;
move16();
IF( nSCE_old > 0 )
{
FOR( k = 0; k < nSCE_old; k++ )
{
shift = sub( getScaleFactor16( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame ), Q1 );
- Scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame, shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp + shift */
+ scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame, shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp + shift */
st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp = add( st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp, shift );
move16();
q_com_sce = s_min( q_com_sce, st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp );
shift = sub( getScaleFactor16( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ) ), Q1 );
- Scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_inp + shift */
+ scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_inp + shift */
st_ivas->hSCE[k]->hCoreCoder[0]->q_inp = add( st_ivas->hSCE[k]->hCoreCoder[0]->q_inp, shift );
move16();
q_com_sce = s_min( q_com_sce, st_ivas->hSCE[k]->hCoreCoder[0]->q_inp );
+
+ shift = sub( getScaleFactor32( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal32_fx, input_frame ), Q1 );
+ scale_sig32( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal32_fx, input_frame, shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp + shift */
+ st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp32 = add( st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp32, shift );
+ move16();
+ q_com_sce32 = s_min( q_com_sce32, st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp32 );
+ shift = sub( getScaleFactor32( st_ivas->hSCE[k]->hCoreCoder[0]->input32_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ) ), Q1 );
+ scale_sig32( st_ivas->hSCE[k]->hCoreCoder[0]->input32_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_inp + shift */
+ st_ivas->hSCE[k]->hCoreCoder[0]->q_inp32 = add( st_ivas->hSCE[k]->hCoreCoder[0]->q_inp32, shift );
+ move16();
+ q_com_sce32 = s_min( q_com_sce32, st_ivas->hSCE[k]->hCoreCoder[0]->q_inp32 );
}
}
@@ -242,15 +262,26 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
shift = sub( getScaleFactor16( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame ), Q1 );
- Scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame, shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp + shift */
+ scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame, shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp + shift */
st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp = add( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp, shift );
move16();
q_com_cpe = s_min( q_com_cpe, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp );
shift = sub( getScaleFactor16( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ) ), Q1 );
- Scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp + shift */
+ scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp + shift */
st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp = add( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp, shift );
move16();
q_com_cpe = s_min( q_com_cpe, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp );
+
+ shift = sub( getScaleFactor32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal32_fx, input_frame ), Q1 );
+ scale_sig32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal32_fx, input_frame, shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp + shift */
+ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32 = add( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32, shift );
+ move16();
+ q_com_cpe32 = s_min( q_com_cpe32, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32 );
+ shift = sub( getScaleFactor32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input32_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ) ), Q1 );
+ scale_sig32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input32_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp + shift */
+ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 = add( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32, shift );
+ move16();
+ q_com_cpe32 = s_min( q_com_cpe32, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 );
}
}
}
@@ -259,14 +290,16 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
{
FOR( k = 0; k < nSCE_old; k++ )
{
- Scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame, sub( q_com, st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp ) ); /* q_com */
+ scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame, sub( q_com, st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp ) ); /* q_com */
st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp = q_com;
move16();
- Scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), sub( q_com, st_ivas->hSCE[k]->hCoreCoder[0]->q_inp ) ); /* q_com */
+ scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), sub( q_com, st_ivas->hSCE[k]->hCoreCoder[0]->q_inp ) ); /* q_com */
st_ivas->hSCE[k]->hCoreCoder[0]->q_inp = q_com;
move16();
Copy_Scale_sig_16_32_DEPREC( st_ivas->hSCE[k]->hCoreCoder[0]->input_buff_fx, st_ivas->hSCE[k]->hCoreCoder[0]->input_buff32_fx, L_FRAME48k + NS2SA( 48000, IVAS_FB_ENC_DELAY_NS ) + L_FRAME48k, Q6 ); /* Q6 + q_com */
st_ivas->hSCE[k]->hCoreCoder[0]->q_inp32 = add( Q6, q_com );
+ st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp32 = add( Q6, q_com );
+ move16();
move16();
}
}
@@ -277,14 +310,16 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
{
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
- Scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame, sub( q_com, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp ) ); /* q_com */
+ scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame, sub( q_com, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp ) ); /* q_com */
st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp = q_com;
move16();
- Scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), sub( q_com, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp ) ); /* q_com */
+ scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), sub( q_com, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp ) ); /* q_com */
st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp = q_com;
move16();
Copy_Scale_sig_16_32_DEPREC( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_buff_fx, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_buff32_fx, L_FRAME48k + NS2SA( 48000, IVAS_FB_ENC_DELAY_NS ) + L_FRAME48k, Q6 ); /* Q6 + q_com */
st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 = add( Q6, q_com );
+ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32 = add( Q6, q_com );
+ move16();
move16();
}
}
@@ -301,7 +336,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
{
set32_fx( input_buff_fx[0], 0, len_inp_memory );
Copy32( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, input_buff_fx[0], len_inp_memory ); /* st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 */
- q_input_buff[0] = st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32;
+ q_input_buff[0] = st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp32;
move16();
}
@@ -311,7 +346,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
IF( nCPE_old > 0 )
{
Copy32( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, input_buff_fx[n + 1], len_inp_memory ); /* st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 */
- q_input_buff[n + 1] = st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32;
+ q_input_buff[n + 1] = st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp32;
move16();
}
}
@@ -334,7 +369,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
IF( GT_16( n_CoreCoder_existing, sce_id ) )
{
Copy32( st_ivas->hSCE[sce_id]->hCoreCoder[0]->input_buff32_fx, input_buff_fx[sce_id], len_inp_memory ); /* st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_inp32 */
- q_input_buff[sce_id] = st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_inp32;
+ q_input_buff[sce_id] = st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_old_inp32;
move16();
}
destroy_sce_enc_fx( st_ivas->hSCE[sce_id], ( EQ_16( st_ivas->hEncoderConfig->element_mode_init, EVS_MONO ) && !st_ivas->hEncoderConfig->stereo_dmx_evs ) );
@@ -349,7 +384,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
IF( n_CoreCoder_existing > cpe_id * CPE_CHANNELS + n )
{
Copy32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_buff32_fx, input_buff_fx[( cpe_id - st_ivas->nCPE ) * CPE_CHANNELS + n], len_inp_memory ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 */
- q_input_buff[( cpe_id - st_ivas->nCPE ) * CPE_CHANNELS + n] = st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32;
+ q_input_buff[( cpe_id - st_ivas->nCPE ) * CPE_CHANNELS + n] = st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32;
move16();
}
}
@@ -398,7 +433,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
IF( GT_16( n_CoreCoder_existing, sce_id ) && NE_16( hEncoderConfig->ivas_format, MASA_ISM_FORMAT ) )
{
Copy32( input_buff_fx[sce_id], st_ivas->hSCE[sce_id]->hCoreCoder[0]->input_buff32_fx, len_inp_memory ); /* q_input_buff[sce_id] */
- st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_inp32 = q_input_buff[sce_id];
+ st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_old_inp32 = q_input_buff[sce_id];
move16();
}
test();
@@ -475,7 +510,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
IF( GT_16( n_CoreCoder_existing, add( i_mult( cpe_id, CPE_CHANNELS ), n ) ) )
{
Copy32( input_buff_fx[n], st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_buff32_fx, len_inp_memory ); /* q_input_buff */
- st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 = q_input_buff[n];
+ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32 = q_input_buff[n];
move16();
}
}
@@ -517,6 +552,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
move16();
st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; /* Q0 */
move16();
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 );
+#endif
}
nb_bits = add( nb_bits, temp_ind_list[i].nb_bits ); /* Q0 */
@@ -541,6 +579,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
move16();
st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; /* Q0 */
move16();
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 );
+#endif
}
nb_bits = add( nb_bits, temp_ind_list[i].nb_bits ); /* Q0 */
@@ -560,7 +601,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
IF( st_ivas->nSCE )
{
Copy32( input_buff_fx[0], st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, len_inp_memory ); /* q_input_buff */
- st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 = q_input_buff[0];
+ // st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 = q_input_buff[0];
+ st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp32 = q_input_buff[0];
+ move16();
move16();
}
@@ -569,7 +612,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
Copy32( input_buff_fx[n + 1], st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, len_inp_memory ); /* q_input_buff */
- st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 = q_input_buff[n + 1];
+ // st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 = q_input_buff[n + 1];
+ st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp32 = q_input_buff[n + 1];
+ move16();
move16();
}
}
@@ -579,7 +624,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
{
IF( NE_16( input_frame, len_inp_memory ) )
{
- Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
+ Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp = 0;
move16();
Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx + sub( len_inp_memory, input_frame ), st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx + sub( len_inp_memory, input_frame ), sub( len_inp_memory, input_frame ), sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
@@ -588,7 +633,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
}
ELSE
{
- Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
+ Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp = 0;
move16();
}
@@ -600,7 +645,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
{
IF( NE_16( input_frame, len_inp_memory ) )
{
- Copy_Scale_sig32_16( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, st_ivas->hCPE[0]->hCoreCoder[n]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
+ Copy_Scale_sig32_16( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, st_ivas->hCPE[0]->hCoreCoder[n]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp = 0;
move16();
@@ -610,7 +655,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
}
ELSE
{
- Copy_Scale_sig32_16( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, st_ivas->hCPE[0]->hCoreCoder[n]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
+ Copy_Scale_sig32_16( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, st_ivas->hCPE[0]->hCoreCoder[n]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp32 ) ); // Q(q_data_fx) -> Q(q_input)
st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp = 0;
move16();
}
diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c
index 826c23fdd969aa958511a3aa7cae5e5c18e97a88..fe247dbce68326df036046b9a9063462142a067d 100644
--- a/lib_enc/ivas_cpe_enc_fx.c
+++ b/lib_enc/ivas_cpe_enc_fx.c
@@ -113,7 +113,9 @@ ivas_error ivas_cpe_enc_fx(
Word32 band_energies_LR_fx[2 * NB_BANDS]; /* energy in critical bands without minimum noise floor E_MIN (Q_buffer + QSCALE - band_ener_guardbits) */
Word16 Q_buffer[2];
Word16 orig_input_fx[CPE_CHANNELS][L_FRAME48k];
+ Word32 orig_input_fx32[CPE_CHANNELS][L_FRAME48k];
Word16 Q_orig_inp[CPE_CHANNELS];
+ Word16 Q_orig_inp32[CPE_CHANNELS];
Word16 Etot_last_fx[CPE_CHANNELS];
Word32 tmp, input_Fs;
Word16 max_bwidth, ivas_format;
@@ -127,7 +129,7 @@ ivas_error ivas_cpe_enc_fx(
Word16 e_old_wsp[CPE_CHANNELS], q_old_wsp;
move16(); // Q_new
move16(); // Q_new
- Word16 q_com;
+ Word16 q_com, shift, q_min, gb;
error = IVAS_ERR_OK;
move32();
@@ -217,27 +219,32 @@ ivas_error ivas_cpe_enc_fx(
#endif
}
- Word16 Q_min = s_min( q_data_fx, add( sts[0]->q_inp32, L_norm_arr( sts[0]->input32_fx - input_frame, input_frame ) ) );
- scale_sig32( sts[0]->input32_fx - input_frame, input_frame, sub( Q_min, sts[0]->q_inp32 ) );
+ Word16 norm, Q_min = s_min( q_data_fx, add( sts[0]->q_old_inp32, L_norm_arr( sts[0]->input32_fx - input_frame, input_frame ) ) );
+ norm = L_norm_arr( data_fx_ch0, input_frame );
+ IF( data_fx_ch1 != NULL ) /*this may happen for cases with odd number of channels*/
+ {
+ Q_min = s_min( Q_min, add( sts[1]->q_old_inp32, L_norm_arr( sts[1]->input32_fx - input_frame, input_frame ) ) );
+ norm = s_min( norm, L_norm_arr( data_fx_ch1, input_frame ) );
+ }
+ scale_sig32( sts[0]->input32_fx - input_frame, input_frame, sub( Q_min, sts[0]->q_old_inp32 ) );
+ sts[0]->q_old_inp32 = Q_min;
+ move16();
Copy_Scale_sig32( data_fx_ch0, sts[0]->input32_fx, input_frame, sub( Q_min, q_data_fx ) ); // Q(Q_min)
sts[0]->q_inp32 = Q_min;
move16();
- Word16 norm = L_norm_arr( sts[0]->input32_fx, input_frame );
-
Copy_Scale_sig32_16( sts[0]->input32_fx, sts[0]->input_fx, input_frame, norm );
sts[0]->q_inp = add( sub( sts[0]->q_inp32, Q16 ), norm );
move16();
IF( data_fx_ch1 != NULL ) /*this may happen for cases with odd number of channels*/
{
- Q_min = s_min( q_data_fx, add( sts[1]->q_inp32, L_norm_arr( sts[1]->input32_fx - input_frame, input_frame ) ) );
- scale_sig32( sts[1]->input32_fx - input_frame, input_frame, sub( Q_min, sts[1]->q_inp32 ) );
+ scale_sig32( sts[1]->input32_fx - input_frame, input_frame, sub( Q_min, sts[1]->q_old_inp32 ) );
+ sts[1]->q_old_inp32 = Q_min;
+ move16();
Copy_Scale_sig32( data_fx_ch1, sts[1]->input32_fx, input_frame, sub( Q_min, q_data_fx ) ); // Q(Q_min)
sts[1]->q_inp32 = Q_min;
move16();
- norm = L_norm_arr( sts[1]->input32_fx, input_frame );
-
Copy_Scale_sig32_16( sts[1]->input32_fx, sts[1]->input_fx, input_frame, norm );
sts[1]->q_inp = add( sub( sts[1]->q_inp32, Q16 ), norm );
move16();
@@ -297,8 +304,8 @@ ivas_error ivas_cpe_enc_fx(
}
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
- Scale_sig( sts[n]->input_fx, input_frame, sub( scale_inp, sts[n]->q_inp ) );
- Scale_sig( hCPE->hFrontVad[n]->mem_decim_fx, 2 * L_FILT_MAX, sub( scale_inp, hCPE->hFrontVad[n]->q_mem_decim ) );
+ scale_sig( sts[n]->input_fx, input_frame, sub( scale_inp, sts[n]->q_inp ) );
+ scale_sig( hCPE->hFrontVad[n]->mem_decim_fx, 2 * L_FILT_MAX, sub( scale_inp, hCPE->hFrontVad[n]->q_mem_decim ) );
sts[n]->q_inp = scale_inp;
move16();
hCPE->hFrontVad[n]->q_mem_decim = scale_inp;
@@ -379,58 +386,49 @@ ivas_error ivas_cpe_enc_fx(
/*----------------------------------------------------------------*
* Resets/updates in case of stereo switching
*----------------------------------------------------------------*/
- Word16 shift = norm_arr( sts[1]->old_input_signal_fx, input_frame );
- Scale_sig( sts[1]->old_input_signal_fx, input_frame, shift ); /* sts[1]->q_old_inp + shift */
- sts[1]->q_old_inp = add( sts[1]->q_old_inp, shift );
- move16();
- shift = norm_arr( sts[1]->input_fx, input_frame );
- Scale_sig( sts[1]->input_fx, input_frame, shift ); /* sts[1]->q_inp + shift */
- sts[1]->q_inp = add( sts[1]->q_inp, shift );
- move16();
-
- shift = norm_arr( sts[0]->old_input_signal_fx, input_frame );
- Scale_sig( sts[0]->old_input_signal_fx, input_frame, shift ); /* sts[1]->q_old_inp + shift */
- sts[0]->q_old_inp = add( sts[0]->q_old_inp, shift );
- move16();
- shift = norm_arr( sts[0]->input_fx, input_frame );
- Scale_sig( sts[0]->input_fx, input_frame, shift ); /* sts[1]->q_inp, shift */
- sts[0]->q_inp = add( sts[0]->q_inp, shift );
- move16();
-
- Word16 q_inp = s_min( s_min( sts[0]->q_inp, sts[0]->q_old_inp ), s_min( sts[1]->q_inp, sts[1]->q_old_inp ) );
-
- Scale_sig( sts[1]->input_fx, input_frame, sub( q_inp, sts[1]->q_inp ) ); /* q_inp */
- Scale_sig( sts[1]->old_input_signal_fx, input_frame, sub( q_inp, sts[1]->q_old_inp ) ); /* q_inp */
- sts[1]->q_inp = q_inp;
- sts[1]->q_old_inp = q_inp;
- move16();
- move16();
+ test();
+ IF( EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) && EQ_16( hCPE->last_element_mode, IVAS_CPE_DFT ) )
+ {
+ gb = find_guarded_bits_fx( sts[0]->encoderLookahead_FB );
+ shift = L_norm_arr( sts[1]->old_input_signal32_fx, shl( input_frame, 1 ) );
+ shift = s_min( shift, L_norm_arr( sts[0]->old_input_signal32_fx, shl( input_frame, 1 ) ) );
+
+ IF( LT_16( shift, gb ) )
+ {
+ shift = sub( shift, gb );
+ scale_sig32( sts[1]->input32_fx, input_frame, shift ); /* q_inp32 + shift */
+ scale_sig32( sts[0]->input32_fx, input_frame, shift ); /* q_inp32 + shift */
+ scale_sig32( sts[1]->old_input_signal32_fx, input_frame, shift ); /* q_old_inp32 + shift */
+ scale_sig32( sts[0]->old_input_signal32_fx, input_frame, shift ); /* q_old_inp32 + shift */
+ sts[1]->q_inp32 = add( sts[1]->q_inp32, shift );
+ sts[0]->q_inp32 = add( sts[0]->q_inp32, shift );
+ sts[1]->q_old_inp32 = add( sts[1]->q_old_inp32, shift );
+ sts[0]->q_old_inp32 = add( sts[0]->q_old_inp32, shift );
+ move16();
+ move16();
+ move16();
+ move16();
+ }
+ }
- Scale_sig( sts[0]->input_fx, input_frame, sub( q_inp, sts[0]->q_inp ) ); /* q_inp */
- Scale_sig( sts[0]->old_input_signal_fx, input_frame, sub( q_inp, sts[0]->q_old_inp ) ); /* q_inp */
- sts[0]->q_inp = q_inp;
- move16();
- sts[0]->q_old_inp = q_inp;
- move16();
- Scale_sig( sts[0]->buf_speech_enc, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k, sub( q_inp, sub( Q15, sts[0]->exp_buf_speech_enc ) ) ); // q_inp
- sts[0]->exp_buf_speech_enc = sub( Q15, q_inp );
- move16();
- stereo_switching_enc_fx( hCPE, sts[0]->old_input_signal_fx, input_frame, q_inp );
+ stereo_switching_enc_fx( hCPE, sts[0]->old_input_signal32_fx, input_frame, sts[0]->q_old_inp32 );
/*----------------------------------------------------------------*
* Temporal inter-channel alignment, stereo adjustment
*----------------------------------------------------------------*/
-
- Copy_Scale_sig_16_32_DEPREC( sts[0]->input_buff_fx, sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), Q6 ); /* Q6 + sts[0]->q_inp */
- sts[0]->q_inp32 = add( Q6, sts[0]->q_inp );
+ shift = s_min( L_norm_arr( sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ), L_norm_arr( sts[1]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ) );
+ q_min = add( sts[0]->q_inp32, sub( shift, find_guarded_bits_fx( input_frame ) ) );
+ scale_sig32( sts[1]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), sub( q_min, sts[1]->q_inp32 ) ); /* q_min */
+ scale_sig32( sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), sub( q_min, sts[0]->q_inp32 ) ); /* q_min */
+ sts[0]->q_inp32 = sts[1]->q_inp32 = sts[0]->q_old_inp32 = sts[1]->q_old_inp32 = q_min;
+ move16();
+ move16();
move16();
- Copy_Scale_sig_16_32_DEPREC( sts[1]->input_buff_fx, sts[1]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), Q6 ); /* Q6 + sts[0]->q_inp */
- sts[1]->q_inp32 = add( Q6, sts[1]->q_inp );
move16();
stereo_tca_enc_fx( hCPE, input_frame );
- shift = s_min( 0, sub( add( L_norm_arr( sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ), sts[0]->q_inp32 ), 16 ) );
+ shift = sub( add( L_norm_arr( sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ), sts[0]->q_inp32 ), 16 );
shift = s_min( shift, sub( add( L_norm_arr( sts[1]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ), sts[1]->q_inp32 ), 16 ) );
Copy_Scale_sig32_16( sts[0]->input_buff32_fx, sts[0]->input_buff_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), sub( add( Q16, shift ), sts[0]->q_inp32 ) ); // shift
Copy_Scale_sig32_16( sts[1]->input_buff32_fx, sts[1]->input_buff_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), sub( add( Q16, shift ), sts[1]->q_inp32 ) ); // shift
@@ -446,9 +444,12 @@ ivas_error ivas_cpe_enc_fx(
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
+ Copy32( sts[n]->input32_fx, orig_input_fx32[n], input_frame ); /* sts->q_inp32 */
Copy( sts[n]->input_fx, orig_input_fx[n], input_frame ); /* sts->q_inp */
Scale_sig( orig_input_fx[n], input_frame, sub( -1, sts[n]->q_inp ) ); // Q(-1)
Q_orig_inp[n] = -1;
+ Q_orig_inp32[n] = sts[n]->q_inp32;
+ move16();
move16();
IF( hCPE->hStereoICBWE != NULL )
@@ -630,10 +631,8 @@ ivas_error ivas_cpe_enc_fx(
* Stereo processing
* Stereo down-mix
*----------------------------------------------------------------*/
- // printf("\n%f %f ", hCPE->hStereoClassif->is_speech, hCPE->hCoreCoder[0]->hSpMusClas->past_dlp[0]);
IF( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) )
{
- /*flt2fix: dft_synthesize*/
test();
if ( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) && hCPE->hStereoDft->res_cod_mode[STEREO_DFT_OFFSET] )
{
@@ -654,7 +653,7 @@ ivas_error ivas_cpe_enc_fx(
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
q_com = sub( add( L_norm_arr( sts[n]->input32_fx, input_frame ), sts[n]->q_inp32 ), 16 );
- q_com = s_min( q_com, add( norm_arr( sts[n]->old_input_signal_fx, input_frame ), sts[n]->q_old_inp ) );
+ q_com = s_min( q_com, sub( add( L_norm_arr( sts[n]->old_input_signal32_fx, input_frame ), sts[n]->q_old_inp32 ), 16 ) );
q_com = s_min( q_com, add( norm_arr( hCPE->input_mem_fx[n], hCPE->hStereoDft->dft_ovl ), hCPE->q_input_mem[n] ) );
if ( EQ_16( q_com, Q15 ) )
@@ -667,7 +666,7 @@ ivas_error ivas_cpe_enc_fx(
sts[n]->q_inp = q_com;
move16();
- scale_sig( sts[n]->old_input_signal_fx, input_frame, sub( q_com, sts[n]->q_old_inp ) );
+ Copy_Scale_sig_32_16( sts[n]->old_input_signal32_fx, sts[n]->old_input_signal_fx, input_frame, sub( q_com, sts[n]->q_old_inp32 ) );
sts[n]->q_old_inp = q_com;
move16();
@@ -735,8 +734,8 @@ ivas_error ivas_cpe_enc_fx(
move16();
}
- Etot_last_fx[0] = sts[0]->hNoiseEst->Etot_last_fx; /* Q8 */
- Etot_last_fx[1] = sts[1]->hNoiseEst->Etot_last_fx; /* Q8 */
+ Etot_last_fx[0] = extract_h( sts[0]->hNoiseEst->Etot_last_32fx ); /* Q8 */
+ Etot_last_fx[1] = extract_h( sts[1]->hNoiseEst->Etot_last_32fx ); /* Q8 */
move16();
move16();
}
@@ -751,29 +750,32 @@ ivas_error ivas_cpe_enc_fx(
sts[1]->exp_old_inp_12k8 = Q15;
move16();
}
- }
- test();
- IF( hCPE->hStereoMdct != NULL && hCPE->hStereoMdct->hItd != NULL )
- {
- Word16 q_min;
+
q_min = sts[1]->q_old_inp;
move16();
q_min = s_min( q_min, sts[1]->q_inp );
q_min = s_min( q_min, sts[0]->q_old_inp );
q_min = s_min( q_min, sts[0]->q_inp );
+ q_min = s_min( q_min, hCPE->q_input_mem[0] );
+ q_min = s_min( q_min, hCPE->q_input_mem[1] );
shift = norm_arr( sts[1]->old_input_signal_fx, input_frame );
shift = s_min( shift, norm_arr( sts[1]->input_fx, input_frame ) );
shift = s_min( shift, norm_arr( sts[0]->old_input_signal_fx, input_frame ) );
shift = s_min( shift, norm_arr( sts[0]->input_fx, input_frame ) );
+ shift = s_min( shift, norm_arr( hCPE->input_mem_fx[0], hCPE->hStereoMdct->hDft_ana->dft_ovl ) );
+ shift = s_min( shift, norm_arr( hCPE->input_mem_fx[1], hCPE->hStereoMdct->hDft_ana->dft_ovl ) );
q_min = add( q_min, shift );
- scale_sig( sts[1]->input_fx, input_frame, sub( q_min, sts[1]->q_inp ) ); /* q_min */
- scale_sig( sts[1]->old_input_signal_fx, input_frame, sub( q_min, sts[1]->q_old_inp ) ); /* q_min */
- scale_sig( sts[0]->input_fx, input_frame, sub( q_min, sts[0]->q_inp ) ); /* q_min */
- scale_sig( sts[0]->old_input_signal_fx, input_frame, sub( q_min, sts[0]->q_old_inp ) ); /* q_min */
-
+ scale_sig( sts[1]->input_fx, input_frame, sub( q_min, sts[1]->q_inp ) ); /* q_min */
+ scale_sig( sts[1]->old_input_signal_fx, input_frame, sub( q_min, sts[1]->q_old_inp ) ); /* q_min */
+ scale_sig( sts[0]->input_fx, input_frame, sub( q_min, sts[0]->q_inp ) ); /* q_min */
+ scale_sig( sts[0]->old_input_signal_fx, input_frame, sub( q_min, sts[0]->q_old_inp ) ); /* q_min */
+ scale_sig( hCPE->input_mem_fx[0], hCPE->hStereoMdct->hDft_ana->dft_ovl, sub( q_min, hCPE->q_input_mem[0] ) ); /* q_min */
+ scale_sig( hCPE->input_mem_fx[1], hCPE->hStereoMdct->hDft_ana->dft_ovl, sub( q_min, hCPE->q_input_mem[1] ) ); /* q_min */
+ hCPE->q_input_mem[1] = q_min;
+ hCPE->q_input_mem[0] = q_min;
sts[1]->q_old_inp = q_min;
sts[0]->q_old_inp = q_min;
sts[1]->q_inp = q_min;
@@ -782,12 +784,11 @@ ivas_error ivas_cpe_enc_fx(
move16();
move16();
move16();
+ move16();
+ move16();
}
stereo_td_itd_mdct_stereo_fx( hCPE, vad_flag_dtx, vad_hover_flag, input_frame );
-
- Copy_Scale_sig_16_32_no_sat( sts[0]->input_fx - input_frame, sts[0]->input32_fx - input_frame, shl( input_frame, 1 ), sub( sts[0]->q_inp32, sts[0]->q_inp ) );
- Copy_Scale_sig_16_32_no_sat( sts[1]->input_fx - input_frame, sts[1]->input32_fx - input_frame, shl( input_frame, 1 ), sub( sts[1]->q_inp32, sts[1]->q_inp ) );
}
/*----------------------------------------------------------------*
@@ -813,30 +814,28 @@ ivas_error ivas_cpe_enc_fx(
Word16 out_16k_start_ind = 0, out_16k_end_ind = 0;
move16();
move16();
+
stereo_dft_enc_synthesize_fx( hCPE->hStereoDft, sts[0]->input32_fx, &out_start_ind, &out_end_ind, 0, input_Fs, input_Fs, 0, NULL );
- Scale_sig32( sts[0]->input32_fx - input_frame, add( out_start_ind, input_frame ), sub( Q15, sts[0]->q_inp32 ) ); // scaling initial part of the input buffer
+
+ scale_sig32( sts[0]->input32_fx - input_frame, add( out_start_ind, input_frame ), sub( Q15, sts[0]->q_old_inp32 ) ); // scaling initial part of the input buffer
+ scale_sig32( sts[0]->input32_fx + out_end_ind, sub( input_frame, out_end_ind ), sub( Q15, sts[0]->q_inp32 ) ); // scaling initial part of the input buffer
sts[0]->q_inp32 = Q15;
+ sts[0]->q_old_inp32 = Q15;
move16();
-
- // Normalise the input buffer from Q15
- Word16 input_norm, q_inp32, common_q, fir_delay_len;
- input_norm = L_norm_arr( sts[0]->input32_fx + out_start_ind, sub( out_end_ind, out_start_ind ) );
- q_inp32 = add( Q15, input_norm );
- fir_delay_len = NS2SA_FX2( sts[0]->input_Fs, DELAY_FIR_RESAMPL_NS );
move16();
- // Find common Q-factor between { q_inp, q_old_inp and q_inp32-16 }
- common_q = s_min( s_min( sub( q_inp32, 16 ), sts[0]->q_inp ), sts[0]->q_old_inp );
+ // Normalise the input buffer from Q15
+ Word16 input_norm, q_inp; //, common_q, fir_delay_len;
+ input_norm = L_norm_arr( sts[0]->input32_fx - input_frame, shl( input_frame, 1 ) );
+ q_inp = sub( add( Q15, input_norm ), 16 );
// Rescale the old input, input and FIR delay section of input buffer
- scale_sig( sts[0]->old_input_signal_fx, input_frame, sub( common_q, sts[0]->q_old_inp ) ); // q_old_inp -> common_q
- Copy_Scale_sig32_16( sts[0]->input32_fx + out_start_ind, sts[0]->input_fx + out_start_ind, sub( out_end_ind, out_start_ind ), sub( add( Q16, common_q ), Q15 ) ); // Q15 -> common_q
- scale_sig( sts[0]->input_fx + out_end_ind, add( sub( input_frame, out_end_ind ), fir_delay_len ), sub( common_q, sts[0]->q_inp ) ); // q_inp -> common_q
+ Copy_Scale_sig32_16( sts[0]->input32_fx - input_frame, sts[0]->input_fx - input_frame, shl( input_frame, 1 ), sub( add( Q16, q_inp ), Q15 ) ); // Q15 -> q_inp
// Update the Q-factors
- sts[0]->q_inp = common_q;
+ sts[0]->q_inp = q_inp;
move16();
- sts[0]->q_old_inp = common_q;
+ sts[0]->q_old_inp = q_inp;
move16();
/* iDFT & resampling to 12.8kHz internal sampling rate */
@@ -846,7 +845,7 @@ ivas_error ivas_cpe_enc_fx(
/* iDFT & resampling to 16kHz internal sampling rate for M channel */
IF( EQ_32( input_Fs, internal_Fs ) )
{
- Copy32( sts[0]->input32_fx - STEREO_DFT_OVL_16k, old_inp_16k_fx[0] + L_INP_MEM - STEREO_DFT_OVL_16k, add( input_frame, STEREO_DFT_OVL_16k ) ); /* Q_inp */
+ Copy32( sts[0]->input32_fx - STEREO_DFT_OVL_16k, old_inp_16k_fx[0] + L_INP_MEM - STEREO_DFT_OVL_16k, add( input_frame, STEREO_DFT_OVL_16k ) ); /* sts[0]->q_inp32 */
out_16k_start_ind = -STEREO_DFT_OVL_16k;
out_16k_end_ind = add( out_16k_start_ind, add( input_frame, STEREO_DFT_OVL_16k ) );
move16();
@@ -1019,7 +1018,15 @@ ivas_error ivas_cpe_enc_fx(
IF( ( NE_32( hCPE->last_element_brate, hCPE->element_brate ) || NE_16( hCPE->element_mode, hCPE->last_element_mode ) || ( EQ_16( hCPE->element_mode, IVAS_CPE_TD ) && NE_16( sts[0]->bits_frame_nominal, last_bits_frame_nominal ) ) || NE_16( sts[n]->last_bwidth, sts[n]->bwidth ) ) && ( n == 0 || EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) ) )
{
Word16 igf;
- igf = getIgfPresent_fx( sts[n]->element_mode, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->rf_mode ); /* Q0 */
+ Word16 bw;
+
+ /* float uses ternary operator for this: bw = ( hCPE->element_mode == IVAS_CPE_MDCT ) ? sts[n]->bwidth : sts[n]->max_bwidth; */
+ bw = sts[n]->max_bwidth;
+ IF( EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) )
+ {
+ bw = sts[n]->bwidth;
+ }
+ igf = getIgfPresent_fx( sts[n]->element_mode, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), bw, sts[n]->rf_mode ); /* Q0 */
IF( ( error = IGF_Reconfig_fx( &sts[n]->hIGFEnc, igf, 0, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->element_mode, sts[n]->rf_mode ) ) != IVAS_ERR_OK )
{
return error;
@@ -1220,12 +1227,12 @@ ivas_error ivas_cpe_enc_fx(
/* update input samples buffer */
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
+ Copy32( orig_input_fx32[n], sts[n]->old_input_signal32_fx, input_frame ); /* Q_orig_inp32 */
+ sts[n]->q_old_inp32 = Q_orig_inp32[n];
+ move16();
Copy( orig_input_fx[n], sts[n]->old_input_signal_fx, input_frame ); /* Q_orig_inp */
sts[n]->q_old_inp = Q_orig_inp[n];
move16();
- Copy_Scale_sig_16_32_no_sat( sts[n]->input_fx - input_frame, sts[n]->input32_fx - input_frame, input_frame, 16 ); // duplicating the data for input32_fx
- sts[n]->q_inp32 = add( Q_orig_inp[n], 16 );
- move16();
}
}
ELSE IF( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) )
@@ -1233,7 +1240,9 @@ ivas_error ivas_cpe_enc_fx(
Copy( sts[0]->input_fx, sts[0]->old_input_signal_fx, input_frame ); /* sts[n]->q_inp */
sts[0]->q_old_inp = sts[0]->q_inp;
move16();
- Copy32( sts[0]->input32_fx, sts[0]->input32_fx - input_frame, input_frame ); /* st->q_inp32 */
+ Copy32( sts[0]->input32_fx, sts[0]->old_input_signal32_fx, input_frame ); /* st->q_inp32 */
+ sts[0]->q_old_inp32 = sts[0]->q_inp32;
+ move16();
}
ELSE IF( st_ivas->hMCT == NULL ) /* note: in MCT, input buffers are updated later in ivas_mct_enc() */
{
@@ -1243,7 +1252,9 @@ ivas_error ivas_cpe_enc_fx(
Copy( sts[n]->input_fx, sts[n]->old_input_signal_fx, input_frame ); /* sts[n]->q_inp */
sts[n]->q_old_inp = sts[n]->q_inp;
move16();
- Copy32( sts[n]->input32_fx, sts[n]->input32_fx - input_frame, input_frame ); /* st->q_inp32 */
+ Copy32( sts[n]->input32_fx, sts[n]->old_input_signal32_fx, input_frame ); /* st->q_inp32 */
+ sts[n]->q_old_inp32 = sts[n]->q_inp32;
+ move16();
}
}
diff --git a/lib_enc/ivas_enc_cov_handler_fx.c b/lib_enc/ivas_enc_cov_handler_fx.c
index c05d59b9086289658e59e23ebab2248e3d9118f0..59c38aa5d75c5083b99a50ab60a4122fcdfd61b6 100644
--- a/lib_enc/ivas_enc_cov_handler_fx.c
+++ b/lib_enc/ivas_enc_cov_handler_fx.c
@@ -271,7 +271,7 @@ static Word16 ivas_spar_get_activeW_flag_fx(
}
ELSE
{
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( hCovEnc->bb_var_lt_fx[0], side_ch_var, &exp_diff ); // (Q31 - exp_diff)
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( hCovEnc->bb_var_lt_fx[0], side_ch_var, &exp_diff ); // (Q31 - exp_diff)
en_ratio = L_shl_sat( L_tmp, exp_diff ); // Q31
IF( LT_32( en_ratio, Mpy_32_32( IVAS_SPAR_DYN_ACTIVEW_THRESH_FX, IVAS_SPAR_DYN_ACTIVEW_THRESH_FX ) ) ) // LHS Q31 :: RHS Q31
{
diff --git a/lib_enc/ivas_enc_fx.c b/lib_enc/ivas_enc_fx.c
index ff5f65b32ac739159f0f5d74d2df5026a3d48a34..11368cec8f39d7fb776803aa4529e5a570ad68ca 100644
--- a/lib_enc/ivas_enc_fx.c
+++ b/lib_enc/ivas_enc_fx.c
@@ -247,8 +247,7 @@ ivas_error ivas_enc_fx(
IF( EQ_16( st_ivas->nchan_transport, 2 ) )
{
IF( ( error = ivas_masa_encode_fx( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format, ivas_total_brate, hEncoderConfig->Opt_DTX_ON, st_ivas->hCPE[0]->element_mode,
- ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) !=
- IVAS_ERR_OK )
+ ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -256,8 +255,7 @@ ivas_error ivas_enc_fx(
ELSE
{
IF( ( error = ivas_masa_encode_fx( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format, ivas_total_brate, hEncoderConfig->Opt_DTX_ON, -1,
- ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) !=
- IVAS_ERR_OK )
+ ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -649,8 +647,7 @@ ivas_error ivas_enc_fx(
}
IF( ( error = ivas_masa_encode_fx( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format, ivas_total_brate, 0, -1,
- ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) !=
- IVAS_ERR_OK )
+ ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) != IVAS_ERR_OK )
{
return error;
}
diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c
index b21a669528e03c94edff804b63e61db3c529f835..a4baf6a00f4d5645c9fe1e60954096d4b9137a3c 100644
--- a/lib_enc/ivas_front_vad_fx.c
+++ b/lib_enc/ivas_front_vad_fx.c
@@ -90,6 +90,7 @@ ivas_error front_vad_fx(
ivas_error error;
Word16 Q_new;
Word16 Qband, mem_decim_size;
+ Word32 Etot_LR_32fx;
error = IVAS_ERR_OK;
push_wmops( "front_vad" );
move16();
@@ -240,15 +241,15 @@ ivas_error front_vad_fx(
PREEMPH_FX( hFrontVad->buffer_12k8_fx + L_FFT / 2, PREEMPH_FAC, L_FRAME, &hFrontVad->mem_preemph_fx );
- Q_new = add( sub( Q_inp, Qband ), Q_add );
- Scale_sig( hFrontVad->buffer_12k8_fx, L_FFT / 2, sub( Q_new, Q_buffer[n] ) ); /* Q_new */
- Scale_sig( hFrontVad->buffer_12k8_fx + L_FFT / 2, 384 - L_FFT / 2, sub( Q_new, add( Q_inp, Qband ) ) ); /* Q_new */
+ Q_new = s_min( add( add( Q_inp, Qband ), Q_add ), Q_buffer[n] );
+ scale_sig( hFrontVad->buffer_12k8_fx, L_FFT / 2, sub( Q_new, Q_buffer[n] ) ); /* Q_new */
+ scale_sig( hFrontVad->buffer_12k8_fx + L_FFT / 2, 3 * L_FRAME / 2 - L_FFT / 2, sub( Q_new, add( Q_inp, Qband ) ) ); /* Q_new */
Q_buffer[n] = Q_new;
move16();
ivas_analy_sp_fx( IVAS_CPE_TD, hCPE, sts[0]->input_Fs, hFrontVad->buffer_12k8_fx + L_FFT / 2 - 3 * ( L_SUBFR / 2 ), Q_new, fr_bands_fx[n],
- &q_fr_bands[n], lf_E_fx[n], &q_lf_E[n], &Etot_LR_fx[n], sts[0]->min_band, sts[0]->max_band, Bin_E_fx, &q_Bin_E, Bin_E_old_fx,
+ &q_fr_bands[n], lf_E_fx[n], &q_lf_E[n], &Etot_LR_32fx, sts[0]->min_band, sts[0]->max_band, Bin_E_fx, &q_Bin_E, Bin_E_old_fx,
&q_Bin_E_old, PS_fx, q_PS_out, lgBin_E_fx, band_energies_fx, &q_band_energies, fft_buffLR_fx, &q_fft_buffLR );
if ( n == 0 )
{
@@ -275,21 +276,12 @@ ivas_error front_vad_fx(
/* add up energies for later calculating average of channel energies */
- Word32 Etot_fx = L_deposit_h( Etot_LR_fx[n] ); /* Q24 */
+ noise_est_pre_32fx( Etot_LR_32fx, hFrontVads[0]->ini_frame, hFrontVad->hNoiseEst, 0, 0, 0 );
- noise_est_pre_32fx( Etot_fx, hFrontVads[0]->ini_frame, hFrontVad->hNoiseEst, 0, 0, 0 );
-
- /* wb_vad */
- Word16 scale = s_min( q_fr_bands[n], add( hFrontVads[n]->hNoiseEst->q_enrO, L_norm_arr( hFrontVads[n]->hNoiseEst->enrO_fx, NB_BANDS ) ) );
-
- scale_sig32( hFrontVads[n]->hNoiseEst->enrO_fx, NB_BANDS, sub( scale, hFrontVads[n]->hNoiseEst->q_enrO ) ); // scale
- hFrontVads[n]->hNoiseEst->q_enrO = scale;
- move16();
-
- scale_sig32( fr_bands_fx[n], 2 * NB_BANDS, sub( scale, q_fr_bands[n] ) ); // scale
- q_fr_bands[n] = scale;
+ Etot_LR_fx[n] = extract_h( Etot_LR_32fx );
move16();
+ /* wb_vad */
hFrontVad->hVAD->vad_flag = wb_vad_ivas_fx( sts[n], fr_bands_fx[n], q_fr_bands[n], &dummy, &dummy, &dummy, &snr_sum_he_fx,
&localVAD_HE_SAD[n], &dummy_short, hFrontVad->hVAD, hFrontVad->hNoiseEst,
hFrontVad->lp_speech_fx, hFrontVad->lp_noise_fx ); // Q0
@@ -611,7 +603,7 @@ ivas_error front_vad_spar_fx(
Word16 q_tmpN, q_tmpE;
noise_est_down_ivas_fx( fr_bands_fx[0], q_fr_bands[0], hFrontVad->hNoiseEst->bckr_fx, &hFrontVad->hNoiseEst->q_bckr, tmpN_fx, &q_tmpN, tmpE_fx, &q_tmpE, st->min_band, st->max_band,
- &hFrontVad->hNoiseEst->totalNoise_fx, Etot_fx[0], &hFrontVad->hNoiseEst->Etot_last_fx, &hFrontVad->hNoiseEst->Etot_v_h2_fx );
+ &hFrontVad->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_fx[0] ) /*q8->q24*/, &hFrontVad->hNoiseEst->Etot_last_32fx, &hFrontVad->hNoiseEst->Etot_v_h2_32fx );
corr_shift_fx = correlation_shift_fx( hFrontVad->hNoiseEst->totalNoise_fx ); /* Q15 */
@@ -637,7 +629,8 @@ ivas_error front_vad_spar_fx(
hFrontVad->q_buffer_12k8 = Q_inp_12k8;
move16();
- analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, 0 /* <-- sec_chan_low_rate */, Q_inp_12k8, Q_r );
+ analy_lp_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, st->element_mode, 0, Q_inp_12k8, Q_r );
+
FOR( Word16 i = 0; i <= M; i++ )
{
epsP_fx[i] = L_Comp( epsP_h[i], epsP_l[i] ); // Q_r[0]
@@ -748,7 +741,7 @@ ivas_error front_vad_spar_fx(
noise_est_ivas_fx( st, old_pitch, tmpN_fx, epsP_fx, Etot_fx[0], sub( Etot_fx[0], hFrontVad->lp_speech_fx ), corr_shift_fx, tmpE_fx,
hFrontVad->hNoiseEst->ave_enr_q, fr_bands_fx[0], q_fr_bands[0], &cor_map_sum_fx, NULL, &sp_div_fx, &Q_sp_div, &non_staX_fx, &loc_harm,
- lf_E_fx[0], q_lf_E[0], &hFrontVad->hNoiseEst->harm_cor_cnt, hFrontVad->hNoiseEst->Etot_l_lp_fx, hFrontVad->hNoiseEst->Etot_v_h2_fx,
+ lf_E_fx[0], q_lf_E[0], &hFrontVad->hNoiseEst->harm_cor_cnt, extract_h( hFrontVad->hNoiseEst->Etot_l_lp_32fx ), extract_h( hFrontVad->hNoiseEst->Etot_v_h2_32fx ),
&hFrontVad->hNoiseEst->bg_cnt, st->lgBin_E_fx, &sp_floor, S_map_fx, NULL, hFrontVad, hFrontVad->ini_frame );
MVR2R_WORD16( st->pitch, st->pitch, 3 );
@@ -765,7 +758,7 @@ ivas_error front_vad_spar_fx(
ivas_smc_gmm_fx( st, NULL, localVAD_HE_SAD[0], Etot_fx_0, lsp_new_fx, cor_map_sum_fx, epsP_fx, PS_fx, non_sta_fx, relE_fx, &high_lpn_flag, flag_spitch, Qfact_PS, Q_esp, hSpMusClas->past_PS_Q );
/* long-term energy update */
- ivas_long_enr_fx( st, -1, localVAD_HE_SAD[0], high_lpn_flag, &hFrontVad, 1, localVAD_HE_SAD, Etot_fx );
+ ivas_long_enr_fx( st, -256 /*-1 q8*/, localVAD_HE_SAD[0], high_lpn_flag, &hFrontVad, 1, localVAD_HE_SAD, Etot_fx );
/* increase ini_frame counter */
hFrontVad->ini_frame = s_min( add( hFrontVad->ini_frame, 1 ), MAX_FRAME_COUNTER ); /* Q0 */
diff --git a/lib_enc/ivas_init_enc_fx.c b/lib_enc/ivas_init_enc_fx.c
index 04b99f039019bb15a831a85c5ef8fe516d11b782..7d88b12642a10e909e54a259de54435fe0479935 100644
--- a/lib_enc/ivas_init_enc_fx.c
+++ b/lib_enc/ivas_init_enc_fx.c
@@ -41,6 +41,9 @@
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
#include "prot_fx_enc.h"
+#ifdef DBG_BITSTREAM_ANALYSIS
+#include
+#endif
/*-------------------------------------------------------------------*
@@ -1175,6 +1178,13 @@ ivas_error ivas_init_encoder_fx(
move16();
}
+#ifdef BITSTERAM_ANALYSIS
+ for ( i = 0; i < st_ivas->ivas_max_num_indices; i++ )
+ {
+ memset( st_ivas->ind_list[i].function_name, 'A', 100 * sizeof( char ) );
+ }
+#endif
+
/* set the maximum allowed number of metadata indices in the list */
st_ivas->ivas_max_num_indices_metadata = get_ivas_max_num_indices_metadata_fx( st_ivas->hEncoderConfig->ivas_format, st_ivas->hEncoderConfig->ivas_total_brate ); /* Q0 */
move16();
diff --git a/lib_enc/ivas_ism_enc_fx.c b/lib_enc/ivas_ism_enc_fx.c
index 81c9e01ef8818e5f3d1976b93dd791b99b9966a1..3e7d8afcd71851e989044b64fe03ef9c50d05bbd 100644
--- a/lib_enc/ivas_ism_enc_fx.c
+++ b/lib_enc/ivas_ism_enc_fx.c
@@ -167,6 +167,8 @@ ivas_error ivas_ism_enc_fx(
*-----------------------------------------------------------------*/
Word16 Q_min = s_min( q_data, add( st->q_inp32, L_norm_arr( st->input32_fx - input_frame, input_frame ) ) );
scale_sig32( st->input32_fx - input_frame, input_frame, sub( Q_min, st->q_inp32 ) );
+ st->q_old_inp32 = Q_min;
+ move16();
Copy_Scale_sig32( data[sce_id], st->input32_fx, input_frame, sub( Q_min, q_data ) ); // Q(Q_min)
st->q_inp32 = Q_min;
move16();
@@ -358,9 +360,9 @@ ivas_error ivas_ism_enc_fx(
{
omasa_stereo_sw_cnt = NULL;
}
+
IF( ( error = ivas_ism_metadata_enc_fx( &ism_total_brate, nchan_ism, nchan_transport_ism, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData,
- nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag, lp_noise_CPE_fx, flag_omasa_ener_brate, omasa_stereo_sw_cnt, st_ivas->hSCE[0]->hCoreCoder[0]->ini_frame ) ) !=
- IVAS_ERR_OK )
+ nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag, lp_noise_CPE_fx, flag_omasa_ener_brate, omasa_stereo_sw_cnt, st_ivas->hSCE[0]->hCoreCoder[0]->ini_frame ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -474,7 +476,9 @@ ivas_error ivas_ism_enc_fx(
Copy( st->input_fx, st->old_input_signal_fx, input_frame ); /* st->q_inp */
st->q_old_inp = st->q_inp;
move16();
- Copy32( st->input32_fx, st->input32_fx - input_frame, input_frame ); /* st->q_inp32 */
+ Copy32( st->input32_fx, st->old_input_signal32_fx, input_frame ); /* st->q_inp32 */
+ st->q_old_inp32 = st->q_inp32;
+ move16();
hSCE->last_element_brate = hSCE->element_brate; /* Q0 */
move32();
diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c
index 2b9ffef15f53806e0f56f6d3bbf06b0ea710c928..9d0579d1243d17cdf9058de82941b6f0c453d91f 100644
--- a/lib_enc/ivas_masa_enc_fx.c
+++ b/lib_enc/ivas_masa_enc_fx.c
@@ -1477,7 +1477,7 @@ static void combine_freqbands_and_subframes_fx(
move16();
hMeta->directional_meta[i].energy_ratio_fx[j][k] =
- BASOP_Util_Divide3232_Scale_cadence( vecLen, L_add( energySum, EPSILON_FX ), &exp_diff ); /*exp_diff+vecLen_e-energySum_e*/
+ BASOP_Util_Divide3232_Scale_newton( vecLen, L_add( energySum, EPSILON_FX ), &exp_diff ); /*exp_diff+vecLen_e-energySum_e*/
move32();
exp_diff = add( exp_diff, sub( vecLen_e, energySum_e ) );
hMeta->directional_meta[i].energy_ratio_fx[j][k] =
@@ -1585,7 +1585,7 @@ static void combine_freqbands_and_subframes_fx(
{
energyRatioSum = BASOP_Util_Add_Mant32Exp( energyRatioSum, energyRatioSum_e, Mpy_32_32( energy[j][k], hMeta->directional_meta[i].energy_ratio_fx[j][k] ), add( energy_e[j][k], 1 ), &energyRatioSum_e ); // 31-energyRatioSum_e
}
- energyRatioTemp = BASOP_Util_Divide3232_Scale_cadence( energyRatioSum, L_add( energySum, EPSILON_FX ), &exp_diff );
+ energyRatioTemp = BASOP_Util_Divide3232_Scale_newton( energyRatioSum, L_add( energySum, EPSILON_FX ), &exp_diff );
exp_diff = add( exp_diff, sub( energyRatioSum_e, energySum_e ) );
energyRatioTemp = L_shl( energyRatioTemp, sub( exp_diff, 1 ) ); // Q30
@@ -2264,13 +2264,13 @@ static void compensate_energy_ratios_fx(
FOR( dir = 0; dir < numDirs; dir++ )
{
hMeta->directional_meta[dir].energy_ratio_fx[sf][band] =
- BASOP_Util_Divide3232_Scale_cadence( hMeta->directional_meta[dir].energy_ratio_fx[sf][band], ratioSum, &exp_diff );
+ BASOP_Util_Divide3232_Scale_newton( hMeta->directional_meta[dir].energy_ratio_fx[sf][band], ratioSum, &exp_diff );
move32();
hMeta->directional_meta[dir].energy_ratio_fx[sf][band] = L_shl( hMeta->directional_meta[dir].energy_ratio_fx[sf][band], sub( exp_diff, Q1 ) ); // Q30
move32();
}
hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] =
- BASOP_Util_Divide3232_Scale_cadence( hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band], ratioSum, &exp_diff );
+ BASOP_Util_Divide3232_Scale_newton( hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band], ratioSum, &exp_diff );
move32();
hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] = L_shl( hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band], sub( exp_diff, Q1 ) ); // Q30
move32();
@@ -2302,7 +2302,7 @@ static void reduce_metadata_further_fx(
Word16 bandEnergy_exp, shift;
UWord8 mergeOverFreqBands;
Word32 meanRatio;
- Word16 tmp, tmp2;
+ Word16 tmp, tmp2, q_totalEnergySum;
numCodingBands = hMasa->config.numCodingBands;
test();
@@ -2373,6 +2373,7 @@ static void reduce_metadata_further_fx(
tmp2 = s_min( 32, tmp2 );
totalEnergySum = W_extract_h( W_shl( W_tmp, tmp2 ) );
tmp2 = sub( tmp2, 32 );
+ q_totalEnergySum = add( hMasa->data.q_energy, tmp2 );
/* Determine onsets */
hMasa->data.onset_detector_1_fx = Mpy_32_32( hMasa->data.onset_detector_1_fx, LOWBITRATE_ONSET_ALPHA_Q31 );
@@ -2380,12 +2381,17 @@ static void reduce_metadata_further_fx(
tmp = hMasa->data.q_onset_detector;
move16();
- IF( BASOP_Util_Cmp_Mant32Exp( hMasa->data.onset_detector_1_fx, sub( 31, hMasa->data.q_onset_detector ), totalEnergySum, sub( 31, hMasa->data.q_energy ) ) < 0 )
+ IF( BASOP_Util_Cmp_Mant32Exp( hMasa->data.onset_detector_1_fx, sub( 31, hMasa->data.q_onset_detector ), totalEnergySum, sub( 31, q_totalEnergySum ) ) < 0 )
{
hMasa->data.onset_detector_1_fx = totalEnergySum; // hMasa->data.q_energy
hMasa->data.q_onset_detector = add( hMasa->data.q_energy, tmp2 );
move32();
move16();
+
+ shift = norm_l( hMasa->data.onset_detector_2_fx );
+ hMasa->data.onset_detector_2_fx = L_shl( hMasa->data.onset_detector_2_fx, shift );
+ move32();
+ tmp = add( tmp, shift );
}
IF( LT_16( tmp, hMasa->data.q_onset_detector ) )
{
@@ -2406,7 +2412,7 @@ static void reduce_metadata_further_fx(
IF( hMasa->data.onset_detector_1_fx != 0 )
{
- onset_filter = L_max( BASOP_Util_Divide3232_Scale_cadence( hMasa->data.onset_detector_2_fx, hMasa->data.onset_detector_1_fx, &onset_filter_e ), 0 );
+ onset_filter = L_max( BASOP_Util_Divide3232_Scale_newton( hMasa->data.onset_detector_2_fx, hMasa->data.onset_detector_1_fx, &onset_filter_e ), 0 );
IF( BASOP_Util_Cmp_Mant32Exp( onset_filter, onset_filter_e, ONE_IN_Q31, 0 ) > 0 )
{
@@ -2433,7 +2439,7 @@ static void reduce_metadata_further_fx(
Word32 bandRatio;
// threshold = totalEnergySum / ( MAX_PARAM_SPATIAL_SUBFRAMES * LOWBITRATE_NUM_BANDS ) * 0.5f; /* Average energy multiplied with energy ratio of 0.5f */
- threshold = BASOP_Util_Divide3232_Scale_cadence( totalEnergySum, ( MAX_PARAM_SPATIAL_SUBFRAMES * LOWBITRATE_NUM_BANDS ) * 2, &exp ); /* Average energy multiplied with energy ratio of 0.5f */
+ threshold = BASOP_Util_Divide3232_Scale_newton( totalEnergySum, ( MAX_PARAM_SPATIAL_SUBFRAMES * LOWBITRATE_NUM_BANDS ) * 2, &exp ); /* Average energy multiplied with energy ratio of 0.5f */
exp = add( exp, sub( sub( 31, add( hMasa->data.q_energy, tmp2 ) ), 31 ) );
bandRatio = hqmetadata->q_direction[0].band_data[band].energy_ratio_fx[0]; // Q30
move32();
@@ -2457,19 +2463,23 @@ static void reduce_metadata_further_fx(
}
/* Determine if to merge over frequency instead of time */
- meanRatio = 0;
- move32();
+ W_tmp = 0;
+ move64();
FOR( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ )
{
FOR( band = 0; band < numCodingBands; band++ )
{
- meanRatio = L_add( meanRatio, Mpy_32_32( hqmetadata->q_direction[0].band_data[band].energy_ratio_fx[sf], energy[sf][band] ) ); // hMasa->data.q_energy - 1
+ W_tmp = W_mac_32_16( W_tmp, Mpy_32_32( hqmetadata->q_direction[0].band_data[band].energy_ratio_fx[sf], energy[sf][band] ), 1 ); // hMasa->data.q_energy
}
}
+ shift = W_norm( W_tmp );
+ meanRatio = W_extract_h( W_shl( W_tmp, shift ) ); // Q:sub( add( hMasa->data.q_energy, shift ), 32 )
+ shift = sub( 31, sub( add( hMasa->data.q_energy, shift ), 32 ) );
+
IF( totalEnergySum != 0 )
{
- meanRatio = BASOP_Util_Divide3232_Scale_cadence( meanRatio, totalEnergySum, &exp );
- exp = add( add( exp, 1 ), tmp2 ); // 31 - (hMasa->data.q_energy - 1) - 31 - hMasa->data.q_energy - tmp2 => 1 + tmp2
+ meanRatio = BASOP_Util_Divide3232_Scale_newton( meanRatio, totalEnergySum, &exp );
+ exp = add( exp, sub( shift, sub( 31, add( hMasa->data.q_energy, tmp2 ) ) ) ); // exp + (shift - (31 - hMasa->data.q_energy - tmp2)) => 1 + tmp2
}
ELSE
{
@@ -4730,7 +4740,7 @@ static void ivas_encode_masaism_metadata_fx(
FOR( obj = 0; obj < nchan_ism; obj++ )
{
- hOmasaData->energy_ratio_ism_fx[sf][0][obj] = BASOP_Util_Divide3232_Scale_cadence( energy_ism_ind[obj], energy_ism, &L_tmp_e );
+ hOmasaData->energy_ratio_ism_fx[sf][0][obj] = BASOP_Util_Divide3232_Scale_newton( energy_ism_ind[obj], energy_ism, &L_tmp_e );
move32();
L_tmp_e = add( L_tmp_e, sub( energy_ism_ind_e[obj], energy_ism_e ) );
/* Scaling to Q30 */
@@ -4740,7 +4750,7 @@ static void ivas_encode_masaism_metadata_fx(
L_tmp = BASOP_Util_Add_Mant32Exp( eneBand32, eneBand_exp, energy_ism, energy_ism_e, &L_tmp_e );
IF( L_tmp != 0 )
{
- hOmasaData->masa_to_total_energy_ratio_fx[sf][0] = BASOP_Util_Divide3232_Scale_cadence( eneBand32, L_tmp, &tmp );
+ hOmasaData->masa_to_total_energy_ratio_fx[sf][0] = BASOP_Util_Divide3232_Scale_newton( eneBand32, L_tmp, &tmp );
move32();
tmp = add( tmp, sub( eneBand_exp, L_tmp_e ) );
/* Scaling to Q30 */
@@ -4791,7 +4801,7 @@ static void ivas_encode_masaism_metadata_fx(
{
FOR( obj = 0; obj < nchan_ism; obj++ )
{
- hOmasaData->energy_ratio_ism_fx[0][band][obj] = BASOP_Util_Divide3232_Scale_cadence( energy_ism_ind[obj], energy_ism, &L_tmp_e );
+ hOmasaData->energy_ratio_ism_fx[0][band][obj] = BASOP_Util_Divide3232_Scale_newton( energy_ism_ind[obj], energy_ism, &L_tmp_e );
move32();
L_tmp_e = add( L_tmp_e, sub( energy_ism_ind_e[obj], energy_ism_e ) );
/* Scaling to Q30 */
@@ -4819,7 +4829,7 @@ static void ivas_encode_masaism_metadata_fx(
L_tmp = BASOP_Util_Add_Mant32Exp( eneBand32, eneBand_exp, energy_ism, energy_ism_e, &L_tmp_e );
IF( L_tmp != 0 )
{
- hOmasaData->masa_to_total_energy_ratio_fx[0][band] = BASOP_Util_Divide3232_Scale_cadence( eneBand32, L_tmp, &tmp );
+ hOmasaData->masa_to_total_energy_ratio_fx[0][band] = BASOP_Util_Divide3232_Scale_newton( eneBand32, L_tmp, &tmp );
move32();
tmp = add( tmp, sub( eneBand_exp, L_tmp_e ) );
/* Scaling to Q30 */
@@ -4876,7 +4886,7 @@ static void ivas_encode_masaism_metadata_fx(
L_tmp = BASOP_Util_Add_Mant32Exp( eneBand32, eneBand_exp, hOmasaData->energy_ism_fx[sf][band], hOmasaData->energy_ism_fx_e[sf][band], &L_tmp_e );
IF( L_tmp != 0 )
{
- hOmasaData->masa_to_total_energy_ratio_fx[sf][band] = BASOP_Util_Divide3232_Scale_cadence( eneBand32, L_tmp, &tmp );
+ hOmasaData->masa_to_total_energy_ratio_fx[sf][band] = BASOP_Util_Divide3232_Scale_newton( eneBand32, L_tmp, &tmp );
move32();
tmp = add( tmp, sub( eneBand_exp, L_tmp_e ) );
/* Scaling to Q30 */
diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c
index d0316be0ff0de173e84415dc2bfe26286c531749..7f74f78f922ecc40682f6bbe91214d0c9cd0376e 100644
--- a/lib_enc/ivas_mc_param_enc_fx.c
+++ b/lib_enc/ivas_mc_param_enc_fx.c
@@ -30,6 +30,21 @@
*******************************************************************************************************/
+// helper macros to convert the 64 bitt accumulators into the 48 bit float format
+#define CONVERT_CY( x_64, y_fx, y_e ) \
+ { \
+ Word16 norm; \
+ norm = W_norm( x_64 ); \
+ y_fx = W_extract_h( W_shl( x_64, norm ) ); \
+ y_e = sub( sub62gb, norm ); \
+ }
+#define CONVERT_DMX( x_64, y_fx, y_e ) \
+ { \
+ Word16 norm; \
+ norm = W_norm( x_64 ); \
+ y_fx = W_extract_h( W_shl( x_64, norm ) ); \
+ y_e = sub( sub35gb, norm ); \
+ }
#include
#include
#include "options.h"
@@ -649,15 +664,22 @@ static void ivas_param_mc_param_est_enc_fx(
Word32 *p_slot_frame_f_real_fx[MAX_CICP_CHANNELS]; /* Output of the MDFT FB - real part */
Word32 *p_slot_frame_f_imag_fx[MAX_CICP_CHANNELS]; /* Output of the MDFT FB - imag part */
+#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
+ Word64 dmx_real_64[PARAM_MC_MAX_TRANSPORT_CHANS];
+ Word64 dmx_imag_64[PARAM_MC_MAX_TRANSPORT_CHANS];
+#else
Word32 dmx_real_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Real Part */
Word16 dmx_real_e[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Real Part */
Word32 dmx_imag_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Imag Part */
Word16 dmx_imag_e[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Imag Part */
- Word32 a_fx, b_fx, c_fx, d_fx; /* Tmp complex values */
- Word16 a_e, b_e, c_e, d_e; /* Tmp complex values */
+#endif
+ Word32 a_fx, b_fx, c_fx, d_fx; /* Tmp complex values */
+ Word16 a_e, b_e, c_e, d_e; /* Tmp complex values */
#ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE
Word64 Cy_sum_real_64[PARAM_MC_MAX_PARAMETER_BANDS][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS];
Word64 Cy_sum_imag_64[PARAM_MC_MAX_PARAM_BAND_ABS_COV_ENC][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS];
+ Word16 sub62gb;
+ Word16 sub35gb;
#else
Word32 Cy_sum_imag_fx[PARAM_MC_MAX_PARAM_BAND_ABS_COV_ENC][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS];
Word16 Cy_sum_imag_e[PARAM_MC_MAX_PARAM_BAND_ABS_COV_ENC][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS];
@@ -740,9 +762,16 @@ static void ivas_param_mc_param_est_enc_fx(
#if defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE ) || defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE )
Word16 gb = find_guarded_bits_fx( l_ts );
+#ifndef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
Word16 add20gb = add( 20, gb );
#endif
+#endif
+#ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE
+ sub35gb = sub( 32, sub( 11, find_guarded_bits_fx( l_ts ) ) ); // 31 - (((11 - gb) + 31 + norm) - 32)
+ sub62gb = sub( 63, shl( sub( 11, find_guarded_bits_fx( l_ts ) ), 1 ) ); // 31 - ((2*(11 - gb) + norm) - 32)
+#endif
+
FOR( ts = start_ts; ts < num_time_slots; ts++ )
{
#if !defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE ) && !defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE )
@@ -774,6 +803,26 @@ static void ivas_param_mc_param_est_enc_fx(
FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 )
{
+#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
+ Word64 real_64;
+ Word64 imag_64;
+
+ real_64 = 0;
+ imag_64 = 0;
+ move64();
+ move64();
+ FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ )
+ {
+ real_64 = W_add( real_64, W_mult0_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ) );
+ imag_64 = W_add( imag_64, W_mult0_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ) );
+ p_dmx_fac_fx++;
+ }
+ dmx_real_64[ch_idx1] = real_64;
+ dmx_imag_64[ch_idx1] = imag_64;
+ move64();
+ move64();
+
+#else
#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE
dmx_real_fx[ch_idx1] = 0;
move32();
@@ -814,14 +863,24 @@ static void ivas_param_mc_param_est_enc_fx(
move16();
move32();
move16();
+#endif
+
#endif
}
/* Cx for transport channels */
FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 )
{
+#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
+ CONVERT_DMX( dmx_real_64[ch_idx1], a_fx, a_e );
+ CONVERT_DMX( dmx_imag_64[ch_idx1], b_fx, b_e );
+#endif
FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 )
{
+#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
+ CONVERT_DMX( dmx_real_64[ch_idx2], c_fx, c_e );
+ CONVERT_DMX( dmx_imag_64[ch_idx2], d_fx, d_e );
+#else
a_fx = dmx_real_fx[ch_idx1];
move32();
a_e = dmx_real_e[ch_idx1];
@@ -838,6 +897,7 @@ static void ivas_param_mc_param_est_enc_fx(
move32();
d_e = dmx_imag_e[ch_idx2];
move16();
+#endif
/* (a-ib)(c+id) = ac + bd + i(ad-bc) */
L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e );
@@ -858,7 +918,6 @@ static void ivas_param_mc_param_est_enc_fx(
move32();
FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 )
{
- Word16 norm;
c_fx = slot_frame_f_real_fx[ch_idx2][cur_cldfb_band];
d_fx = slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band];
move32();
@@ -869,11 +928,6 @@ static void ivas_param_mc_param_est_enc_fx(
Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2] = W_add( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2],
W_sub( W_mult0_32_32( a_fx, d_fx ), W_mult0_32_32( b_fx, c_fx ) ) );
move64();
-
- // convert the 64 bit fixpoint back into the 48 bit float format
- norm = W_norm( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2] );
- Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = W_extract_h( W_shl( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], norm ) );
- Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] = sub( sub( 62, gb ), norm );
}
}
#else
@@ -953,6 +1007,26 @@ static void ivas_param_mc_param_est_enc_fx(
FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 )
{
+#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
+ Word64 real_64;
+ Word64 imag_64;
+
+ real_64 = 0;
+ imag_64 = 0;
+ move64();
+ move64();
+
+ FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ )
+ {
+ real_64 = W_add( real_64, W_mult0_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ) );
+ imag_64 = W_add( imag_64, W_mult0_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ) );
+ p_dmx_fac_fx++;
+ }
+ dmx_real_64[ch_idx1] = real_64;
+ dmx_imag_64[ch_idx1] = imag_64;
+ move64();
+ move64();
+#else
#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE
dmx_real_fx[ch_idx1] = 0;
move32();
@@ -997,12 +1071,18 @@ static void ivas_param_mc_param_est_enc_fx(
move32();
dmx_imag_e[ch_idx1] = imag_e;
move16();
+#endif
+
#endif
}
/* Cx for transport channels */
FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 )
{
+#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
+ CONVERT_DMX( dmx_real_64[ch_idx1], a_fx, a_e );
+ CONVERT_DMX( dmx_imag_64[ch_idx1], b_fx, b_e );
+#else
#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE
a_fx = dmx_real_fx[ch_idx1];
move32();
@@ -1012,9 +1092,20 @@ static void ivas_param_mc_param_est_enc_fx(
move32();
b_e = dmx_imag_e[ch_idx1];
move16();
+#endif
+
#endif
FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 )
{
+#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
+ CONVERT_DMX( dmx_real_64[ch_idx2], c_fx, c_e );
+ CONVERT_DMX( dmx_imag_64[ch_idx2], d_fx, d_e );
+
+ /* (a-ib)(c+id) = ac + bd + i(ad-bc) */
+ L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e );
+ Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cx_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e,
+ &Cx_sum_e[cur_param_band][ch_idx1][ch_idx2] );
+#else
#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE
a_fx = dmx_real_fx[ch_idx1];
move32();
@@ -1042,6 +1133,7 @@ static void ivas_param_mc_param_est_enc_fx(
L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, dmx_real_fx[ch_idx2] ), add( a_e, dmx_real_e[ch_idx2] ), Mpy_32_32( b_fx, dmx_imag_fx[ch_idx2] ), add( b_e, dmx_imag_e[ch_idx2] ), &tmp_e );
Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cx_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e,
&Cx_sum_e[cur_param_band][ch_idx1][ch_idx2] );
+#endif
#endif
move32();
}
@@ -1075,7 +1167,6 @@ static void ivas_param_mc_param_est_enc_fx(
move32();
FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 )
{
- Word16 norm;
c_fx = slot_frame_f_real_fx[ch_idx2][cur_cldfb_band];
d_fx = slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band];
move32();
@@ -1084,10 +1175,6 @@ static void ivas_param_mc_param_est_enc_fx(
Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2] = W_add( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2],
W_add( W_mult0_32_32( a_fx, c_fx ), W_mult0_32_32( b_fx, d_fx ) ) );
move64();
- // convert the 64 bit fixpoint back into the 48 bit float format
- norm = W_norm( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2] );
- Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = W_extract_h( W_shl( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], norm ) );
- Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] = sub( sub( 62, gb ), norm );
}
#else
FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 )
@@ -1135,14 +1222,6 @@ static void ivas_param_mc_param_est_enc_fx(
{
FOR( ch_idx1 = 0; ch_idx1 < nchan_input; ++ch_idx1 )
{
- Cy_sum_fx[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
- move32();
- Cy_sum_e[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
- move16();
- Cy_sum_fx[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0;
- move32();
- Cy_sum_e[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0;
- move16();
#ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE
Cy_sum_real_64[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
move64();
@@ -1153,6 +1232,14 @@ static void ivas_param_mc_param_est_enc_fx(
Cy_sum_imag_64[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0;
move64();
#else
+ Cy_sum_fx[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
+ move32();
+ Cy_sum_e[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
+ move16();
+ Cy_sum_fx[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0;
+ move32();
+ Cy_sum_e[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0;
+ move16();
Cy_sum_imag_fx[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
move32();
Cy_sum_imag_e[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
@@ -1174,7 +1261,7 @@ static void ivas_param_mc_param_est_enc_fx(
move64();
Cy_sum_real_64[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0;
move64();
-#endif
+#else
Cy_sum_fx[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
move32();
Cy_sum_e[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0;
@@ -1183,6 +1270,7 @@ static void ivas_param_mc_param_est_enc_fx(
move32();
Cy_sum_e[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0;
move16();
+#endif
}
}
}
@@ -1220,11 +1308,9 @@ static void ivas_param_mc_param_est_enc_fx(
FOR( k = 0; k < nchan_input; ++k )
{
#ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE
- Word16 norm;
- // convert the 64 bit fixpoint back into the 48 bit float format
- norm = W_norm( Cy_sum_real_64[cur_param_band][k][k] );
- Nrg_fx[k] = W_extract_h( W_shl( Cy_sum_real_64[cur_param_band][k][k], norm ) );
- Nrg_e[k] = sub( sub( 62, gb ), norm );
+ CONVERT_CY( Cy_sum_real_64[cur_param_band][k][k], Nrg_fx[k], Nrg_e[k] );
+ move32();
+ move16();
#else
Nrg_fx[k] = Cy_sum_fx[cur_param_band][k][k];
move32();
@@ -1361,10 +1447,9 @@ static void ivas_param_mc_param_est_enc_fx(
{
FOR( ch_idx2 = 0; ch_idx2 < MAX_CICP_CHANNELS; ch_idx2++ )
{
- Word16 norm;
- norm = W_norm( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2] );
- Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = W_extract_h( W_shl( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], norm ) );
- Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] = sub( sub( 62, gb ), norm );
+ CONVERT_CY( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] );
+ move32();
+ move16();
}
}
}
@@ -1407,11 +1492,9 @@ static void ivas_param_mc_param_est_enc_fx(
FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ch_idx2++ )
{
#ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE
- Word16 norm;
- // convert the 64 bit fixpoint back into the 48 bit float format
- norm = W_norm( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2] );
- imag_part_fx = W_extract_h( W_shl( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2], norm ) );
- imag_part_e = sub( sub( 62, gb ), norm );
+ CONVERT_CY( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2], imag_part_fx, imag_part_e );
+ move32();
+ move16();
#else
imag_part_fx = Cy_sum_imag_fx[cur_param_band][ch_idx1][ch_idx2];
move32();
@@ -1613,9 +1696,22 @@ static void ivas_param_mc_quantize_ilds_fx(
{
dmx_ener_fx = BASOP_Util_Add_Mant32Exp( dmx_ener_fx, dmx_ener_e, Cx_fx[k][k], Cx_e[k][k], &dmx_ener_e );
}
+ /* ener_fac = 10.0f * log10f( ( tot_ener + EPSILON ) / ( dmx_ener + EPSILON ) ); */
+ IF( tot_ener_fx == 0 )
+ {
+ tot_ener_fx = 9223; // 1e-15(EPSILON) in Q63
+ tot_ener_e = -32;
+ move32();
+ move16();
+ }
+ IF( dmx_ener_fx == 0 )
+ {
+ dmx_ener_fx = 9223; // 1e-15(EPSILON) in Q63
+ dmx_ener_e = -32;
+ move32();
+ move16();
+ }
- tot_ener_fx = BASOP_Util_Add_Mant32Exp( tot_ener_fx, tot_ener_e, EPSILON_FX, 0, &tot_ener_e );
- dmx_ener_fx = BASOP_Util_Add_Mant32Exp( dmx_ener_fx, dmx_ener_e, EPSILON_FX, 0, &dmx_ener_e );
L_tmp = L_deposit_h( BASOP_Util_Divide3232_Scale( tot_ener_fx, dmx_ener_fx, &tmp_e ) );
tmp_e = add( sub( tot_ener_e, dmx_ener_e ), tmp_e );
ener_fac_fx = BASOP_Util_Log10( L_tmp, tmp_e ); // Q25
@@ -2222,7 +2318,7 @@ static void ivas_param_mc_dec2bin_fx(
/* convert value to bitstream, MSB first */
FOR( idx = 0; idx < N; idx++ )
{
- bits[idx] = (UWord16) s_and( shr( val, sub( N, sub( 1, idx ) ) ), 1 );
+ bits[idx] = (UWord16) s_and( shr( val, sub( sub( N, 1 ), idx ) ), 1 );
move16();
}
diff --git a/lib_enc/ivas_mcmasa_enc_fx.c b/lib_enc/ivas_mcmasa_enc_fx.c
index 7a5718e9958d3eb7989f4168b4c8876fcc84f3c5..b89424e76a8dd84ee0b7019b562a7e0843f298b1 100644
--- a/lib_enc/ivas_mcmasa_enc_fx.c
+++ b/lib_enc/ivas_mcmasa_enc_fx.c
@@ -81,7 +81,16 @@ static void compute_cov_mtx_fx(
CovarianceMatrix *COVls, /* o : Output matrix, contains upper part of cov mtx */
Word16 inp_exp /*Stores exponent for temp*/
);
-static void computeIntensityVector_enc_fx( const Word16 *band_grouping, Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], const Word16 enc_param_start_band, const Word16 num_frequency_bands, Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS] );
+
+static void computeIntensityVector_enc_fx(
+ const Word16 *band_grouping,
+ Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX],
+ Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX],
+ const Word16 enc_param_start_band, /* i : first band to process */
+ const Word16 num_frequency_bands,
+ Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS],
+ Word16 *exp_intensity_real,
+ Word16 inp_q );
static void computeVerticalDiffuseness_fx(
Word32 **buffer_intensity, /* i : Intensity vectors */
@@ -737,7 +746,7 @@ void ivas_mcmasa_enc_fx(
move32();
hQMeta->q_direction[0].band_data[i].elevation_fx[j] = elevation_m_values_fx[j][i]; // Q22
move32();
- hQMeta->q_direction[0].band_data[i].energy_ratio_fx[j] = energyRatio_fx[k][i]; // Q30
+ hQMeta->q_direction[0].band_data[i].energy_ratio_fx[j] = energyRatio_fx[k][i]; // Q31
move32();
hQMeta->q_direction[0].band_data[i].distance[j] = fixedDistance;
move16();
@@ -938,7 +947,7 @@ void ivas_mcmasa_param_est_enc_fx(
Word32 renormalization_factor_coh_fx[MASA_FREQUENCY_BANDS]; // renormalization_factor_coh_e
Word16 renormalization_factor_coh_e[MASA_FREQUENCY_BANDS];
Word16 surroundingCoherence_e[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
- Word16 numAnalysisChannels;
+ Word16 numAnalysisChannels, shift;
FOR( i = 0; i < MCMASA_MAX_ANA_CHANS; i++ )
{
@@ -1168,7 +1177,7 @@ void ivas_mcmasa_param_est_enc_fx(
Foa_ImagBuffer_fx,
0,
num_freq_bands,
- intensity_real_fx );
+ intensity_real_fx, &c_e, inp_q );
computeDirectionVectors_fixed(
intensity_real_fx[0],
@@ -1188,7 +1197,8 @@ void ivas_mcmasa_param_est_enc_fx(
FoaEven_ImagBuffer_fx,
0,
num_freq_bands,
- intensity_even_real_fx );
+ intensity_even_real_fx, &shift, inp_q );
+
Word16 ref_e = 0;
move16();
computeReferencePower_enc_fx( hMcMasa->band_grouping,
@@ -1211,7 +1221,7 @@ void ivas_mcmasa_param_est_enc_fx(
/* only real part needed */
Copy32( intensity_even_real_fx[i], &( hMcMasa->buffer_intensity_real_fx[i][index - 1][0] ), num_freq_bands ); // hMcMasa->buffer_intensity_real_q
}
- hMcMasa->buffer_intensity_real_q[index - 1] = sub( shl( inp_q, 1 ), 31 );
+ hMcMasa->buffer_intensity_real_q[index - 1] = sub( 31, shift );
move16();
Copy32( reference_power_fx[ts], &( hMcMasa->buffer_energy_fx[( index - 1 ) * num_freq_bands] ), num_freq_bands ); // ref_e
hMcMasa->buffer_energy_q[index - 1] = sub( Q31, ref_e );
@@ -1227,7 +1237,7 @@ void ivas_mcmasa_param_est_enc_fx(
IF( !hMcMasa->isHorizontalSetup )
{
Copy32( intensity_real_fx[2], &( hMcMasa->buffer_intensity_real_vert_fx[index - 1][0] ), num_freq_bands );
- hMcMasa->buffer_intensity_real_vert_q[index - 1] = sub( shl( inp_q, 1 ), 31 );
+ hMcMasa->buffer_intensity_real_vert_q[index - 1] = sub( 31, c_e );
move16();
computeVerticalDiffuseness_fx( hMcMasa->buffer_intensity_real_vert_fx, hMcMasa->buffer_energy_fx, hMcMasa->no_col_avg_diff, num_freq_bands, vertical_diffuseness_vector_fx, hMcMasa->buffer_intensity_real_vert_q, hMcMasa->buffer_energy_q );
v_min_fx( diffuseness_vector_fx, out_exp, vertical_diffuseness_vector_fx, q_vdv, diffuseness_vector_fx, out_exp, num_freq_bands );
@@ -2071,21 +2081,30 @@ static void compute_cov_mtx_fx(
return;
}
+
static void computeIntensityVector_enc_fx(
const Word16 *band_grouping,
- Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX],
- Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX],
- const Word16 enc_param_start_band, /* i : first band to process */
+ Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], /*inp_q*/
+ Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], /*inp_q*/
+ const Word16 enc_param_start_band, /* i : first band to process */
const Word16 num_frequency_bands,
- Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS] )
+ Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS], /*exp: exp_intensity_real*/
+ Word16 *exp_intensity_real,
+ Word16 inp_q )
{
- /* Reminder
- * X = a + ib; Y = c + id
- * X*Y = ac - bd + i(ad +bc)
- */
Word16 i, j;
Word32 real, img;
- Word16 brange[2];
+ Word16 brange[2], shift = 63;
+ move16();
+ Flag is_zero = 0;
+ move16();
+
+ Word64 intensity_real64[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS];
+
+ FOR( i = 0; i < DIRAC_NUM_DIMS; i++ )
+ {
+ set64_fx( intensity_real64[i], 0, MASA_FREQUENCY_BANDS );
+ }
FOR( i = enc_param_start_band; i < enc_param_start_band + num_frequency_bands; i++ )
{
@@ -2108,17 +2127,51 @@ static void computeIntensityVector_enc_fx(
img = Cldfb_ImagBuffer[0][j];
move32();
/* Intensity is XYZ order, audio is WYZX order. */
- intensity_real[0][i] = L_add( intensity_real[0][i], L_add( Mpy_32_32( Cldfb_RealBuffer[3][j], real ), Mpy_32_32( Cldfb_ImagBuffer[3][j], img ) ) ); // output Q= 2* input_q -31
+ intensity_real64[0][i] = W_add( intensity_real64[0][i], W_add( W_mult0_32_32( Cldfb_RealBuffer[3][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[3][j], img ) ) ); // output Q= 2* input_q
move32();
- intensity_real[1][i] = L_add( intensity_real[1][i], L_add( Mpy_32_32( Cldfb_RealBuffer[1][j], real ), Mpy_32_32( Cldfb_ImagBuffer[1][j], img ) ) ); // output Q= 2* input_q -31
+ intensity_real64[1][i] = W_add( intensity_real64[1][i], W_add( W_mult0_32_32( Cldfb_RealBuffer[1][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[1][j], img ) ) ); // output Q= 2* input_q
move32();
- intensity_real[2][i] = L_add( intensity_real[2][i], L_add( Mpy_32_32( Cldfb_RealBuffer[2][j], real ), Mpy_32_32( Cldfb_ImagBuffer[2][j], img ) ) ); // output Q= 2* input_q -31
+ intensity_real64[2][i] = W_add( intensity_real64[2][i], W_add( W_mult0_32_32( Cldfb_RealBuffer[2][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[2][j], img ) ) ); // output Q= 2* input_q
move32();
}
}
+ FOR( i = 0; i < DIRAC_NUM_DIMS; i++ )
+ {
+ is_zero = is_zero_arr64( intensity_real64[i], MASA_FREQUENCY_BANDS );
+ IF( is_zero == 0 )
+ {
+ BREAK;
+ }
+ }
+ IF( is_zero == 0 )
+ {
+ FOR( i = 0; i < DIRAC_NUM_DIMS; i++ )
+ {
+ shift = s_min( shift, W_norm_arr( intensity_real64[i], MASA_FREQUENCY_BANDS ) );
+ }
+
+ FOR( i = 0; i < DIRAC_NUM_DIMS; i++ )
+ {
+ FOR( j = 0; j < MASA_FREQUENCY_BANDS; j++ )
+ {
+ intensity_real[i][j] = W_extract_h( W_shl( intensity_real64[i][j], shift ) );
+ move32();
+ }
+ }
+
+ *exp_intensity_real = sub( 31, sub( add( shift, shl( inp_q, 1 ) ), 32 ) );
+ move16();
+ }
+ ELSE
+ {
+ *exp_intensity_real = 0;
+ move16();
+ }
+
return;
}
+
static void computeVerticalDiffuseness_fx(
Word32 **buffer_intensity, /* i : Intensity vectors */
const Word32 *buffer_energy, /* i : Energy */
diff --git a/lib_enc/ivas_mct_core_enc_fx.c b/lib_enc/ivas_mct_core_enc_fx.c
index 548a5671741574d9d44a77d61906e8c9e8c8e2e9..71890120bfdece03191de1ec21b2313a6f278756 100644
--- a/lib_enc/ivas_mct_core_enc_fx.c
+++ b/lib_enc/ivas_mct_core_enc_fx.c
@@ -244,8 +244,8 @@ void ivas_mct_core_enc_fx(
Word32 inv_spectrum_long_fx[MCT_MAX_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */
Word16 total_side_bits;
Word16 chBitRatios[MCT_MAX_CHANNELS];
- Word16 q_powSpec[MCT_MAX_CHANNELS], q_powerSpecMsInv[MCT_MAX_CHANNELS], q_spec, q_origSpec, tmp_s;
- Word16 tmp_q_powSpec[L_FRAME48k], tmp_q_powSpecInv[L_FRAME48k], *tmp_q_psi[2];
+ Word16 q_powSpec[MCT_MAX_CHANNELS], q_spec, q_origSpec, tmp_s;
+ Word16 tmp_q_powSpec[L_FRAME48k], tmp_q_powSpecInv[MCT_MAX_CHANNELS][L_FRAME48k], *tmp_q_psi[MCT_MAX_CHANNELS][2];
Word64 W_tmp;
Encoder_State *sts[MCT_MAX_CHANNELS];
Encoder_State *st;
@@ -285,16 +285,17 @@ void ivas_mct_core_enc_fx(
inv_mdst_spectrum_fx[ch][0] = powerSpecMsInv_fx[ch][0] = powerSpecMsInv_long_fx[ch];
inv_mdst_spectrum_fx[ch][1] = powerSpecMsInv_fx[ch][1] = powerSpecMsInv_long_fx[ch] + N_TCX10_MAX;
+ set16_fx( tmp_q_powSpecInv[ch], 63, L_FRAME48k );
+
+ tmp_q_psi[ch][0] = tmp_q_powSpecInv[ch];
+ tmp_q_psi[ch][1] = &tmp_q_powSpecInv[ch][N_TCX10_MAX];
+
inv_spectrum_fx[ch][0] = inv_spectrum_long_fx[ch];
inv_spectrum_fx[ch][1] = inv_spectrum_long_fx[ch] + N_TCX10_MAX;
}
- set16_fx( tmp_q_powSpecInv, 63, L_FRAME48k );
set16_fx( tmp_q_powSpec, 63, L_FRAME48k );
- tmp_q_psi[0] = tmp_q_powSpecInv;
- tmp_q_psi[1] = &tmp_q_powSpecInv[N_TCX10_MAX];
-
FOR( ( cpe_id = 0, i = 0 ); cpe_id < nCPE; cpe_id++ )
{
FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
@@ -451,7 +452,7 @@ void ivas_mct_core_enc_fx(
tmp_s = W_norm( W_tmp );
W_tmp = W_shl( W_tmp, tmp_s );
powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_tmp );
- tmp_q_psi[n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
+ tmp_q_psi[ch][n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
move32();
move16();
}
@@ -465,7 +466,7 @@ void ivas_mct_core_enc_fx(
tmp_s = W_norm( W_tmp );
W_tmp = W_shl( W_tmp, tmp_s );
powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_tmp );
- tmp_q_psi[n][0] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
+ tmp_q_psi[ch][n][0] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
move32();
move16();
@@ -477,7 +478,7 @@ void ivas_mct_core_enc_fx(
tmp_s = W_norm( W_tmp );
W_tmp = W_shl( W_tmp, tmp_s );
powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_tmp );
- tmp_q_psi[n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
+ tmp_q_psi[ch][n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
move32();
move16();
}
@@ -486,7 +487,7 @@ void ivas_mct_core_enc_fx(
tmp_s = W_norm( W_tmp );
W_tmp = W_shl( W_tmp, tmp_s );
powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_tmp );
- tmp_q_psi[n][L_subframeTCX - 1] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
+ tmp_q_psi[ch][n][L_subframeTCX - 1] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
move32();
move16();
}
@@ -529,8 +530,6 @@ void ivas_mct_core_enc_fx(
{
q_powSpec[ch] = Q31;
move16();
- q_powerSpecMsInv[ch] = Q31;
- move16();
/* NOTE: This logic has been added because using a constant headroom while computing `powSpec` and `powSpecMsInv` leads to significant precision loss, which results in poor quality. */
FOR( i = 0; i < L_FRAME48k; i++ )
{
@@ -539,18 +538,12 @@ void ivas_mct_core_enc_fx(
q_powSpec[ch] = s_min( q_powSpec[ch], add( tmp_q_powSpec[i], norm_l( powerSpec_fx[ch][i] ) ) );
move16();
}
- IF( powerSpecMsInv_fx[ch][0][i] != 0 )
- {
- q_powerSpecMsInv[ch] = s_min( q_powerSpecMsInv[ch], add( tmp_q_powSpecInv[i], norm_l( powerSpecMsInv_fx[ch][0][i] ) ) );
- move16();
- }
}
FOR( n = 0; n < nSubframes; n++ )
{
FOR( i = 0; i < L_subframeTCX; i++ )
{
- powerSpecMsInv_fx[ch][n][i] = L_shr( powerSpecMsInv_fx[ch][n][i], sub( tmp_q_psi[n][i], q_powerSpecMsInv[ch] ) );
powerSpec_fx[ch][( i + ( n * L_subframeTCX ) )] = L_shr( powerSpec_fx[ch][( i + ( n * L_subframeTCX ) )], sub( tmp_q_powSpec[i + ( n * L_subframeTCX )], q_powSpec[ch] ) );
move32();
move32();
@@ -609,7 +602,7 @@ void ivas_mct_core_enc_fx(
{
IF( hMCT->currBlockDataCnt > 0 )
{
- mctStereoIGF_enc_fx( hMCT, sts, orig_spectrum_fx, q_origSpec, powerSpec_fx, q_powSpec, powerSpecMsInv_fx, q_powerSpecMsInv, inv_spectrum_fx, sp_aud_decision0 );
+ mctStereoIGF_enc_fx( hMCT, sts, orig_spectrum_fx, q_origSpec, powerSpec_fx, q_powSpec, powerSpecMsInv_fx, tmp_q_psi, inv_spectrum_fx, sp_aud_decision0 );
}
ELSE
{
@@ -646,7 +639,7 @@ void ivas_mct_core_enc_fx(
q_spectrum = sub( 31, st->hTcxEnc->spectrum_e[n] );
set16_fx( exp_powerSpec[ch], sub( Q31, q_powSpec[ch] ), N_MAX + L_MDCT_OVLP_MAX );
- ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], &q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 );
+ ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_origSpec, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 );
st->hIGFEnc->spec_be_igf_e = sub( 31, q_origSpec );
st->hTcxEnc->spectrum_e[n] = sub( 31, q_spectrum );
diff --git a/lib_enc/ivas_mct_enc_fx.c b/lib_enc/ivas_mct_enc_fx.c
index 56f5e44db890533036f9f12cb5adae4d75c8d495..e01387c37d7fffdd145b29b55d43de1adbfcdef1 100644
--- a/lib_enc/ivas_mct_enc_fx.c
+++ b/lib_enc/ivas_mct_enc_fx.c
@@ -183,7 +183,6 @@ ivas_error ivas_mct_enc_fx(
Word32 orig_spectrum_long_fx[MCT_MAX_BLOCKS][CPE_CHANNELS][L_FRAME48k];
Word16 switch_bw;
IVAS_FORMAT ivas_format;
- Word16 max_bwidth;
Word32 ivas_total_brate;
ivas_error error;
Word32 *pdata_fx[MAX_INPUT_CHANNELS];
@@ -198,7 +197,6 @@ ivas_error ivas_mct_enc_fx(
hMCT->hBstr = st_ivas->hCPE[0]->hCoreCoder[0]->hBstr; /* pointer to write MCT side bits */
ivas_format = st_ivas->hEncoderConfig->ivas_format;
- max_bwidth = st_ivas->hEncoderConfig->max_bwidth;
ivas_total_brate = st_ivas->hEncoderConfig->ivas_total_brate;
move32();
move16();
@@ -252,14 +250,14 @@ ivas_error ivas_mct_enc_fx(
{
FOR( n = 0; n < shr( hMCT->nchan_out_woLFE, 1 ); n++ )
{
- initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, max_bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, st_ivas->hCPE[0]->hCoreCoder[0]->hIGFEnc->igfData.igfInfo.grid, 0 );
+ initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, st_ivas->hCPE[0]->hCoreCoder[0]->bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, st_ivas->hCPE[0]->hCoreCoder[0]->hIGFEnc->igfData.igfInfo.grid, 0 );
}
}
ELSE
{
FOR( n = 0; n < shr( hMCT->nchan_out_woLFE, 1 ); n++ )
{
- initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, max_bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, NULL, 0 );
+ initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, st_ivas->hCPE[0]->hCoreCoder[0]->bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, NULL, 0 );
}
}
}
@@ -484,6 +482,9 @@ ivas_error ivas_mct_enc_fx(
Copy( hCPE->hCoreCoder[n]->input_fx, hCPE->hCoreCoder[n]->old_input_signal_fx, input_frame );
hCPE->hCoreCoder[n]->q_old_inp = hCPE->hCoreCoder[n]->q_inp;
move16();
+ Copy32( hCPE->hCoreCoder[n]->input32_fx, hCPE->hCoreCoder[n]->old_input_signal32_fx, input_frame );
+ hCPE->hCoreCoder[n]->q_old_inp32 = hCPE->hCoreCoder[n]->q_inp32;
+ move16();
/* common encoder updates */
updt_enc_common_ivas_fx( hCPE->hCoreCoder[n], Q_new_out[cpe_id][n] );
diff --git a/lib_enc/ivas_mct_enc_mct_fx.c b/lib_enc/ivas_mct_enc_mct_fx.c
index 66bdb1235b492cfd383cd176295a6c5afbc656ee..8ff17ae01a6cd7bee24f079d5b95a72684b777fb 100644
--- a/lib_enc/ivas_mct_enc_mct_fx.c
+++ b/lib_enc/ivas_mct_enc_mct_fx.c
@@ -385,7 +385,7 @@ static void getBlockValues_fx(
p_st[0] = sts[ch1];
p_st[1] = sts[ch2];
- stereo_coder_tcx_fx( hBlock->hStereoMdct, p_st, hBlock->mask, p_mdst_spectrum, p_inv_spectrum, p_inv_mdst_spectrum, 1, q_spec );
+ stereo_coder_tcx_fx( hBlock->hStereoMdct, p_st, hBlock->mask, p_mdst_spectrum, p_inv_spectrum, p_inv_mdst_spectrum, 1, sub( 31, q_spec ), sub( 31, q_spec ) );
test();
test();
@@ -986,19 +986,19 @@ void mctStereoIGF_enc_fx(
Word32 powerSpec_fx[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */
Word16 q_powerSpec[MCT_MAX_CHANNELS], /* i : Q for powSpec_fx */
Word32 *powerSpecMsInv_fx[MCT_MAX_CHANNELS][NB_DIV], /* i : same as powerSpec_fx but for inverse spect.*/
- Word16 q_powerSpecMsInv[MCT_MAX_CHANNELS], /* i : Q for powSpecMsInv_fx */
+ Word16 *q_powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : Q for powSpecMsInv_fx */
Word32 *inv_spectrum_fx[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */
const Word16 sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */
)
{
Word32 *p_powerSpecMsInv_fx[CPE_CHANNELS][NB_DIV];
+ Word16 *q_p_powerSpecMsInv_fx[CPE_CHANNELS][NB_DIV];
Word32 *p_inv_spectrum_fx[CPE_CHANNELS][NB_DIV];
Word32 *p_orig_spectrum_fx[CPE_CHANNELS][NB_DIV];
Word32 *p_powerSpec_fx[NB_DIV];
Word16 b, nSubframes, L_subframeTCX;
- Word16 p_ch[2], n, ch, ch1, ch2, s = 31;
- Word16 q_pSI_ch[2];
+ Word16 p_ch[2], n, ch, ch1, ch2;
Word16 q_pS_ch[2];
Encoder_State *p_st[NB_DIV];
Encoder_State *st;
@@ -1059,12 +1059,12 @@ void mctStereoIGF_enc_fx(
p_orig_spectrum_fx[1][n] = orig_spectrum_fx[ch2][n];
p_powerSpecMsInv_fx[0][n] = powerSpecMsInv_fx[ch1][n]; // q_powerSpec
p_powerSpecMsInv_fx[1][n] = powerSpecMsInv_fx[ch2][n];
+ q_p_powerSpecMsInv_fx[0][n] = q_powerSpecMsInv[ch1][n]; // q_powerSpec
+ q_p_powerSpecMsInv_fx[1][n] = q_powerSpecMsInv[ch2][n];
p_inv_spectrum_fx[0][n] = inv_spectrum_fx[ch1][n];
p_inv_spectrum_fx[1][n] = inv_spectrum_fx[ch2][n];
q_pS_ch[0] = q_powerSpec[ch1];
- q_pSI_ch[0] = q_powerSpecMsInv[ch1];
q_pS_ch[1] = q_powerSpec[ch2];
- q_pSI_ch[1] = q_powerSpecMsInv[ch2];
move16();
move16();
@@ -1072,35 +1072,18 @@ void mctStereoIGF_enc_fx(
IF( NE_16( hMCT->hBlockData[b]->hStereoMdct->mdct_stereo_mode[n], hMCT->hBlockData[b]->hStereoMdct->IGFStereoMode[n] ) ||
EQ_16( hMCT->hBlockData[b]->hStereoMdct->mdct_stereo_mode[n], SMDCT_BW_MS ) )
{
- Word16 exp_powerSpec_tmp[CPE_CHANNELS];
- FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
- {
- s = s_min( s, sub( 31, p_st[ch]->hTcxEnc->spectrum_e[n] ) );
- s = s_min( s, q_pS_ch[ch] );
- s = s_min( s, q_pSI_ch[ch] );
- }
+ Word16 exp_powerSpec_fx[CPE_CHANNELS], exp_inv_spectrum_fx[CPE_CHANNELS];
+
FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
{
- scale_sig32( p_st[ch]->hTcxEnc->spectrum_fx[0], N_MAX, sub( s, sub( 31, p_st[ch]->hTcxEnc->spectrum_e[0] ) ) );
- scale_sig32( p_inv_spectrum_fx[ch][0], L_FRAME48k, sub( s, sub( 31, p_st[ch]->hTcxEnc->spectrum_e[0] ) ) );
- p_st[ch]->hTcxEnc->spectrum_e[0] = sub( 31, s );
- p_st[ch]->hTcxEnc->spectrum_e[1] = sub( 31, s );
- move16();
- move16();
-
- scale_sig32( p_powerSpecMsInv_fx[ch][0], L_FRAME48k, sub( s, q_pSI_ch[ch] ) );
- scale_sig32( &p_powerSpec_fx[ch][0], sts[ch]->hTcxEnc->L_frameTCX, sub( s, q_pS_ch[ch] ) );
- q_powerSpec[ch1] = s;
- q_powerSpec[ch2] = s;
+ exp_powerSpec_fx[ch] = sub( Q31, q_pS_ch[ch] );
+ exp_inv_spectrum_fx[ch] = p_st[ch]->hTcxEnc->spectrum_e[n];
move16();
move16();
}
- exp_powerSpec_tmp[0] = p_st[0]->hTcxEnc->spectrum_e[0];
- exp_powerSpec_tmp[1] = p_st[1]->hTcxEnc->spectrum_e[0];
- move16();
- move16();
- ProcessStereoIGF_fx( hMCT->hBlockData[b]->hStereoMdct, p_st, hMCT->hBlockData[b]->mask, p_orig_spectrum_fx, q_origSpec, q_origSpec, p_powerSpec_fx, exp_powerSpec_tmp,
- p_powerSpecMsInv_fx, exp_powerSpec_tmp, p_inv_spectrum_fx, exp_powerSpec_tmp, n, sp_aud_decision0[ch1], p_st[0]->total_brate, 1 );
+
+ ProcessStereoIGF_fx( hMCT->hBlockData[b]->hStereoMdct, p_st, hMCT->hBlockData[b]->mask, p_orig_spectrum_fx, q_origSpec, q_origSpec, p_powerSpec_fx, exp_powerSpec_fx,
+ p_powerSpecMsInv_fx, q_p_powerSpecMsInv_fx, p_inv_spectrum_fx, exp_inv_spectrum_fx, n, sp_aud_decision0[ch1], p_st[0]->total_brate, 1 );
}
ELSE
{
@@ -1118,7 +1101,7 @@ void mctStereoIGF_enc_fx(
q_spectrum = sub( 31, st->hTcxEnc->spectrum_e[n] );
set16_fx( exp_powerSpec[p_ch[ch]], sub( Q31, q_powerSpec[p_ch[ch]] ), N_MAX + L_MDCT_OVLP_MAX );
- ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[p_ch[ch]][n], &q_spectrum, &powerSpec_fx[p_ch[ch]][n * L_subframeTCX], &exp_powerSpec[p_ch[ch]][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 );
+ ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[p_ch[ch]][n], q_origSpec, &powerSpec_fx[p_ch[ch]][n * L_subframeTCX], &exp_powerSpec[p_ch[ch]][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 );
st->hTcxEnc->spectrum_e[n] = sub( 31, q_spectrum );
move16();
@@ -1159,7 +1142,7 @@ void mctStereoIGF_enc_fx(
q_spectrum = sub( 31, st->hTcxEnc->spectrum_e[n] );
set16_fx( exp_powerSpec[ch], sub( Q31, q_powerSpec[ch] ), N_MAX + L_MDCT_OVLP_MAX );
- ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], &q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 );
+ ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_origSpec, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 );
st->hTcxEnc->spectrum_e[n] = sub( 31, q_spectrum );
move16();
diff --git a/lib_enc/ivas_mdct_core_enc_fx.c b/lib_enc/ivas_mdct_core_enc_fx.c
index e744c7f47379813ea4e9b180f2e91de1c8b0e821..4d8bc7b9979f5a8e60a9b8cbb79cc9c8e942020f 100644
--- a/lib_enc/ivas_mdct_core_enc_fx.c
+++ b/lib_enc/ivas_mdct_core_enc_fx.c
@@ -233,7 +233,7 @@ static Word16 kernel_switch_detect_fx(
L_tmp1 = Sqrt32( L_tmp1, &exp_tmp1 );
L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, exp_tmp, L_tmp1, exp_tmp1, &exp_tmp );
L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, exp_tmp, ONE_IN_Q30, 1, &exp_tmp );
- cov00 = BASOP_Util_Divide3232_Scale_cadence( cov00, L_tmp, &exp_tmp1 );
+ cov00 = BASOP_Util_Divide3232_Scale_newton( cov00, L_tmp, &exp_tmp1 );
exp_tmp = add( exp_tmp1, sub( sub( Q31, q_com ), exp_tmp ) );
/* Added saturation to handle overflows when value is very close to 1.f */
cov00 = L_shl_sat( cov00, exp_tmp ); // Q31
@@ -247,7 +247,7 @@ static Word16 kernel_switch_detect_fx(
L_tmp1 = Sqrt32( L_tmp1, &exp_tmp1 );
L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, exp_tmp, L_tmp1, exp_tmp1, &exp_tmp );
L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, exp_tmp, ONE_IN_Q30, 1, &exp_tmp );
- cov90 = BASOP_Util_Divide3232_Scale_cadence( cov90, L_tmp, &exp_tmp1 );
+ cov90 = BASOP_Util_Divide3232_Scale_newton( cov90, L_tmp, &exp_tmp1 );
exp_tmp = add( exp_tmp1, sub( sub( Q31, q_com ), exp_tmp ) );
/* Added saturation to handle overflows when value is very close to 1.f */
cov90 = L_shl_sat( cov90, exp_tmp ); // Q31
@@ -735,7 +735,7 @@ static void applyStereoPreProcessingCplx(
d_q = sub( 31, d_q );
deno = L_max( L_shl_sat( 1, d_q ), d_fx );
- sq_imp = BASOP_Util_Divide3232_Scale_cadence( n_fx, deno, &exp );
+ sq_imp = BASOP_Util_Divide3232_Scale_newton( n_fx, deno, &exp );
exp = add( exp, sub( d_q, n_q ) );
d_fx = Sqrt32( sq_imp, &exp );
*mdctSample1_fx = Mpy_32_32( dmxR1_fx, d_fx );
@@ -764,7 +764,7 @@ static void applyStereoPreProcessingCplx(
d_q = sub( 31, d_q );
deno = L_max( L_shl_sat( 1, d_q ), d_fx );
- sq_imp = BASOP_Util_Divide3232_Scale_cadence( n_fx, deno, &exp );
+ sq_imp = BASOP_Util_Divide3232_Scale_newton( n_fx, deno, &exp );
exp = add( exp, sub( d_q, n_q ) );
d_fx = Sqrt32( sq_imp, &exp );
*mdctSample2_fx = Mpy_32_32( dmxR2_fx, d_fx );
@@ -815,6 +815,7 @@ static UWord16 enc_ste_pre_mdct(
Word16 mdst_exp1[2 * 960], mdst_exp2[2 * 960];
Word16 x1, x2, x3, x4, ans, tmp;
Word32 maxSqrValue_fx;
+ Word64 sumL_64fx, sumR_64fx;
IF( LT_16( nSamplesMax, 512 ) )
{
@@ -885,7 +886,9 @@ static UWord16 enc_ste_pre_mdct(
{
return 0;
}
-
+ sumL_64fx = 0, sumR_64fx = 0;
+ move64();
+ move64();
FOR( s = fadeInOff; s < nSampProc; s++ )
{
Word32 absMagnL_fx, absMagnR_fx;
@@ -898,8 +901,8 @@ static UWord16 enc_ste_pre_mdct(
absMagnR_fx = Sqrt32( L_add( Mpy_32_32( sigR1_fx[s], sigR1_fx[s] ), Mpy_32_32( sigI1_fx[s], sigI1_fx[s] ) ), &absMagnR_e );
corr_fx = L_add( corr_fx, L_add( Mpy_32_32( sigR0_fx[s], sigR1_fx[s] ), Mpy_32_32( sigI0_fx[s], sigI1_fx[s] ) ) ); // q_com*2 - 31
- sumL_fx = L_add( sumL_fx, L_add( L_shr( sigR0_fx[s], 1 ), L_shr( sigI0_fx[s], 1 ) ) ); // q_com -1
- sumR_fx = L_add( sumR_fx, L_add( L_shr( sigR1_fx[s], 1 ), L_shr( sigI1_fx[s], 1 ) ) ); // q_com - 1
+ sumL_64fx = W_add( sumL_64fx, W_add( sigR0_fx[s], sigI0_fx[s] ) ); // q_com
+ sumR_64fx = W_add( sumR_64fx, W_add( sigR1_fx[s], sigI1_fx[s] ) ); // q_com
sumMagnL_fx = BASOP_Util_Add_Mant32Exp( sumMagnL_fx, sumMagnL_e, absMagnL_fx, absMagnL_e, &sumMagnL_e );
sumMagnR_fx = BASOP_Util_Add_Mant32Exp( sumMagnR_fx, sumMagnR_e, absMagnR_fx, absMagnR_e, &sumMagnR_e );
sumPrdLR_fx = BASOP_Util_Add_Mant32Exp( sumPrdLR_fx, sumPrdLR_e, Mpy_32_32( absMagnL_fx, absMagnR_fx ), add( absMagnL_e, absMagnR_e ), &sumPrdLR_e );
@@ -911,7 +914,14 @@ static UWord16 enc_ste_pre_mdct(
temp1 = L_shl( preproLen, x1 );
corr_fx = Mpy_32_32( corr_fx, temp1 );
x1 = sub( 62, add( shl( *q_com, 1 ), x1 ) );
- corr_fx = BASOP_Util_Add_Mant32Exp( corr_fx, x1, Mpy_32_32( sumL_fx, sumR_fx ), sub( 62, shl( sub( *q_com, 1 ), 1 ) ), &x1 );
+
+ x2 = W_norm( sumL_64fx );
+ sumL_fx = W_extract_h( W_shl( sumL_64fx, x2 ) );
+
+ x3 = W_norm( sumR_64fx );
+ sumR_fx = W_extract_h( W_shl( sumR_64fx, x3 ) );
+
+ corr_fx = BASOP_Util_Add_Mant32Exp( corr_fx, x1, Mpy_32_32( sumL_fx, sumR_fx ), sub( 62, add( sub( add( *q_com, x2 ), 32 ), sub( add( *q_com, x3 ), 32 ) ) ), &x1 );
IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( corr_fx, x1, -maxSqrValue_fx, 52 ), -1 ) )
{
@@ -956,7 +966,7 @@ static UWord16 enc_ste_pre_mdct(
ELSE
{
Word16 exp1;
- corr_fx = BASOP_Util_Divide3232_Scale_cadence( Mpy_32_32( corr_fx, corr_fx ), Mpy_32_32( sumL_fx, sumR_fx ), &exp1 );
+ corr_fx = BASOP_Util_Divide3232_Scale_newton( Mpy_32_32( corr_fx, corr_fx ), Mpy_32_32( sumL_fx, sumR_fx ), &exp1 );
corr_e = add( exp1, sub( shl( corr_e, 1 ), add( sumL_e, sumR_e ) ) );
}
test();
diff --git a/lib_enc/ivas_omasa_enc_fx.c b/lib_enc/ivas_omasa_enc_fx.c
index 265f2b601b4afc4af9c89895016542541f995fae..427935cb6217fd973661970c1a6539a321dd1104 100644
--- a/lib_enc/ivas_omasa_enc_fx.c
+++ b/lib_enc/ivas_omasa_enc_fx.c
@@ -1139,11 +1139,6 @@ static void ivas_omasa_param_est_enc_fx(
{
q = q_data;
move16();
-#if 0
- scale_sig32( hOMasa->cldfbAnaEnc[i]->cldfb_state_fx, hOMasa->cldfbAnaEnc[i]->cldfb_state_length, sub( q, hOMasa->cldfbAnaEnc[i]->Q_cldfb_state ) );
- hOMasa->cldfbAnaEnc[i]->Q_cldfb_state = q;
- move16();
-#endif
cldfbAnalysis_ts_fx_var_q( &( data[i][l_ts * ts] ), Chnl_RealBuffer_fx[i], Chnl_ImagBuffer_fx[i], l_ts, hOMasa->cldfbAnaEnc[i], &q ); /*q_data-5*/
norm_buff = s_min( norm_buff, L_norm_arr( Chnl_RealBuffer_fx[i], 60 ) );
norm_buff = s_min( norm_buff, L_norm_arr( Chnl_ImagBuffer_fx[i], 60 ) );
diff --git a/lib_enc/ivas_qmetadata_enc_fx.c b/lib_enc/ivas_qmetadata_enc_fx.c
index 10380f422357db94d0dd102c7e8b2dfc80a8faae..9a7c4038b3e4a6a25cac5ab22478160812bca365 100644
--- a/lib_enc/ivas_qmetadata_enc_fx.c
+++ b/lib_enc/ivas_qmetadata_enc_fx.c
@@ -43,6 +43,9 @@
#include "basop_util.h"
#include "ivas_rom_com_fx.h"
+#ifdef DBG_BITSTREAM_ANALYSIS
+#include
+#endif
/*-----------------------------------------------------------------------*
* Local function prototypes
@@ -1069,8 +1072,12 @@ void ivas_qmetadata_enc_sid_encode_fx(
{
/*compute the average direction */
ivas_qmetadata_azimuth_elevation_to_direction_vector_fx( q_direction->band_data[b].azimuth_fx[m], q_direction->band_data[b].elevation_fx[m], direction_vector_fx );
- scale_sig32( direction_vector_fx, 3, Q22 - Q30 ); // Q30 -> Q22
+ scale_sig32( direction_vector_fx, 3, Q22 - Q30 ); // Q30 -> Q22
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( avg_direction_vector_fx, direction_vector_fx, avg_direction_vector_fx, 3 ); // Q22
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( avg_direction_vector_fx, direction_vector_fx, avg_direction_vector_fx, 3, 0 ); // Q22
+#endif /* VEC_ARITH_OPT_v1 */
}
ivas_qmetadata_direction_vector_to_azimuth_elevation_fx( avg_direction_vector_fx, Q22, &avg_azimuth_fx[b], &avg_elevation_fx[b] );
@@ -1188,14 +1195,23 @@ void reset_metadata_spatial_fx(
{
hMetaData->ind_list[i].nb_bits = -1;
move16();
+#ifdef DBG_BITSTREAM_ANALYSIS
+ sprintf( hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial" );
+#endif
}
FOR( ( j = 0, i = next_ind_sid ); i < last_ind_sid; ( i++, j++ ) )
{
hMetaData->ind_list[j].value = hMetaData->ind_list[i].value;
hMetaData->ind_list[j].nb_bits = hMetaData->ind_list[i].nb_bits;
+#ifdef DBG_BITSTREAM_ANALYSIS
+ strncpy( hMetaData->ind_list[j].function_name, hMetaData->ind_list[i].function_name, 100 );
+#endif
hMetaData->nb_bits_tot = add( hMetaData->nb_bits_tot, hMetaData->ind_list[j].nb_bits );
hMetaData->ind_list[i].nb_bits = -1;
+#ifdef BISTREAM_ANALYSIS
+ sprintf( hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial" );
+#endif
move16();
move16();
move16();
@@ -1332,12 +1348,12 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512_fx(
ratioSum = L_add( hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k], hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] );
IF( GT_32( ratioSum, ONE_IN_Q30 /*1.0f*/ ) )
{
- hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_cadence( hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k], ratioSum, &div_e );
+ hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_newton( hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k], ratioSum, &div_e );
hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k] = L_shl( hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k], sub( div_e, 1 ) );
move32();
move32();
- hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_cadence( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], ratioSum, &div_e );
+ hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_newton( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], ratioSum, &div_e );
hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = L_shl( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], sub( div_e, 1 ) );
move32();
move32();
@@ -1385,12 +1401,12 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512_fx(
IF( GT_32( ratioSum, ONE_IN_Q30 /*1.0f*/ ) )
{
- hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_cadence( hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k], ratioSum, &div_e );
+ hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_newton( hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k], ratioSum, &div_e );
hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k] = L_shl( hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k], sub( div_e, 1 ) );
move32();
move32();
- hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_cadence( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], ratioSum, &div_e );
+ hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_newton( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], ratioSum, &div_e );
hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = L_shl( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], sub( div_e, 1 ) );
move32();
move32();
@@ -2003,6 +2019,9 @@ void restore_metadata_buffer_fx(
{
hMetaData->ind_list[i].nb_bits = -1;
move16();
+#ifdef DBG_BITSTREAM_ANALYSIS
+ sprintf( hMetaData->ind_list[i].function_name, "RESET in restore_metadata_buffer" );
+#endif
}
hMetaData->nb_bits_tot = bit_pos_start;
move16();
@@ -2402,7 +2421,11 @@ static Word16 ivas_qmetadata_entropy_encode_dir_fx(
/*compute the average direction */
ivas_qmetadata_azimuth_elevation_to_direction_vector_fx( q_direction->band_data[i].azimuth_fx[j], q_direction->band_data[i].elevation_fx[j], direction_vector );
scale_sig32( direction_vector, 3, -8 ); // Q30 -> Q22
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( avg_direction_vector, direction_vector, avg_direction_vector, 3 );
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( avg_direction_vector, direction_vector, avg_direction_vector, 3, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
}
}
}
@@ -2665,7 +2688,11 @@ static Word16 ivas_qmetadata_entropy_encode_dir_fx(
IF( LT_16( idx, 4 ) )
{
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( avg_direction_vector, direction_vector, avg_direction_vector, 3 );
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( avg_direction_vector, direction_vector, avg_direction_vector, 3, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
}
}
/* project the quantized average azimuth angle to the same grid as the current sample */
@@ -2696,7 +2723,11 @@ static Word16 ivas_qmetadata_entropy_encode_dir_fx(
ivas_qmetadata_azimuth_elevation_to_direction_vector_fx( q_direction->band_data[i].azimuth_fx[j], q_direction->band_data[i].elevation_fx[j], direction_vector );
scale_sig32( direction_vector, 3, -8 ); // Q30 -> Q22
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( avg_direction_vector, direction_vector, avg_direction_vector, 3 );
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( avg_direction_vector, direction_vector, avg_direction_vector, 3, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
ivas_qmetadata_direction_vector_to_azimuth_elevation_fx( avg_direction_vector, Q22, &avg_azimuth, &avg_elevation );
avg_azimuth_index_upd = quantize_phi_enc_fx( L_add( avg_azimuth, 180 << Q22 ), 0, &avg_azimuth, avg_azimuth_alphabet );
@@ -6619,7 +6650,7 @@ void ivas_omasa_encode_masa_to_total_fx(
{
j = imult1616( k, len_stream );
/* quantize with fixed common step */
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( dct_data[j], step, &tmp_e );
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( dct_data[j], step, &tmp_e );
tmp_e = add( tmp_e, Q6 );
q_idx[j] = rint_new_fx( L_shr( L_tmp, sub( 15, tmp_e ) ) /* Q16 */ ); // Q0
move16();
@@ -6642,7 +6673,7 @@ void ivas_omasa_encode_masa_to_total_fx(
{
FOR( i = 1; i < len_stream; i++ )
{
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( dct_data[j + i], step, &tmp_e );
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( dct_data[j + i], step, &tmp_e );
tmp_e = add( tmp_e, Q6 );
q_idx[j + i] = rint_new_fx( L_shr( L_tmp, sub( 15, tmp_e ) ) );
move16();
diff --git a/lib_enc/ivas_rom_enc.h b/lib_enc/ivas_rom_enc.h
index 0d0941cc43ce9a1d47dd0bdbe30308779e1d23f8..d1e644a93e45e0ffb4ef355a64c6eb3308e3fc9c 100644
--- a/lib_enc/ivas_rom_enc.h
+++ b/lib_enc/ivas_rom_enc.h
@@ -111,9 +111,9 @@ extern const UWord16 ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE]
/*----------------------------------------------------------------------------------*
* Stereo downmix to EVS ROM tables
*----------------------------------------------------------------------------------*/
-extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4];
-extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 4];
-extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 4];
+extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 2];
+extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 2];
+extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 2];
extern const Word32 Stereo_dmx_wnd_coef_32k_fx[L_FRAME32k];
extern const Word32 Stereo_dmx_wnd_coef_48k_fx[L_FRAME48k];
/*----------------------------------------------------------------------------------*
diff --git a/lib_enc/ivas_rom_enc_fx.c b/lib_enc/ivas_rom_enc_fx.c
index b26972b8aa56df444edcd9c4cb51e05eaeeba2be..793546c7a30a0bfea4080665af662fbd0584fc1a 100644
--- a/lib_enc/ivas_rom_enc_fx.c
+++ b/lib_enc/ivas_rom_enc_fx.c
@@ -508,27 +508,67 @@ const Word32 ari_bit_estimate_s17_LC_fx[RANGE_N_CONTEXT][RANGE_N_SYMBOLS] = // Q
/*----------------------------------------------------------------------------------*
* Stereo downmix to EVS ROM tables
*----------------------------------------------------------------------------------*/
+
+
// Q31
-const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4] = {
- 3309988, 29667578, 81733728, 158226416, 257262128, 376402368, 512713184, 662838656, 823081792, 989497088,
- 1157986560, 1324401920, 1484645120, 1634770560, 1771081600, 1890221568, 1989257344, 2065750016, 2117816064, 2144173568
-};
-// Q31
-const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 4] = {
- 827816, 7442688, 20631648, 40313376, 66366540, 98630536, 136906352, 180958112, 230514208, 285269056,
- 344885056, 408994752, 477202848, 549088896, 624209472, 702101440, 782284928, 864265344, 947537088, 1031587008,
- 1115896832, 1199946752, 1283218432, 1365198592, 1445382400, 1523274368, 1598395136, 1670280960, 1738488832, 1802598528,
- 1862214528, 1916969472, 1966525568, 2010577280, 2048853120, 2081117056, 2107170304, 2126851968, 2140040960, 2146655872
-};
-// Q31
-const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 4] = {
- 367944, 3309988, 9186011, 17979908, 29667578, 44216976, 61588232, 81733728, 104598264, 130119136,
- 158226416, 188843056, 221885136, 257262128, 294876992, 334626720, 376402368, 420089216, 465567840, 512713184,
- 561396544, 611484032, 662838656, 715319488, 768782656, 823081792, 878067904, 933590528, 989497088, 1045634688,
- 1101849216, 1157986560, 1213893504, 1269415808, 1324401920, 1378700928, 1432164224, 1484645120, 1535999488, 1586087424,
- 1634770560, 1681915904, 1727394560, 1771081600, 1812856960, 1852606720, 1890221568, 1925598592, 1958640640, 1989257344,
- 2017364480, 2042885504, 2065750016, 2085895424, 2103266688, 2117816064, 2129503616, 2138297728, 2144173568, 2147115776
-};
+ const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 2] = {
+ 204411, 817566, 1839231, 3269018, 5106382, 7350624, 10000889, 13056168, 16515298, 20376962,
+ 24639688, 29301856, 34361688, 39817260, 45666492, 51907160, 58536884, 65553148, 72953272, 80734440,
+ 88893688, 97427912, 106333872, 115608160, 125247248, 135247472, 145605040, 156315968, 167376224, 178781552,
+ 190527648, 202610016, 215024064, 227765072, 240828160, 254208400, 267900656, 281899744, 296200320, 310796928,
+ 325684032, 340855968, 356306944, 372031072, 388022368, 404274752, 420782016, 437537920, 454536032, 471769920,
+ 489232992, 506918624, 524820096, 542930496, 561243072, 579750720, 598446528, 617323264, 636373760, 655590784,
+ 674967040, 694495104, 714167552, 733976960, 753915712, 773976192, 794150848, 814431936, 834811776, 855282624,
+ 875836544, 896465920, 917162752, 937919168, 958727360, 979579264, 1000467072, 1021382784, 1042318400, 1063266048
+ };
+ // Q31
+ const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 2] = {
+ 51423, 205686, 462776, 822667, 1285325, 1850705, 2518754, 3289407, 4162591, 5138222,
+ 6216206, 7396441, 8678813, 10063200, 11549468, 13137475, 14827070, 16618091, 18510366, 20503712,
+ 22597942, 24792852, 27088232, 29483864, 31979518, 34574956, 37269924, 40064172, 42957428, 45949412,
+ 49039844, 52228420, 55514844, 58898792, 62379948, 65957972, 69632528, 73403256, 77269800, 81231792,
+ 85288840, 89440576, 93686584, 98026464, 102459800, 106986176, 111605144, 116316264, 121119096, 126013168,
+ 130998016, 136073168, 141238128, 146492400, 151835488, 157266880, 162786064, 168392496, 174085632, 179864960,
+ 185729888, 191679888, 197714368, 203832752, 210034448, 216318896, 222685456, 229133536, 235662512, 242271760,
+ 248960656, 255728544, 262574784, 269498720, 276499680, 283577024, 290730048, 297958048, 305260384, 312636288,
+ 320085120, 327606144, 335198624, 342861856, 350595072, 358397568, 366268576, 374207360, 382213120, 390285152,
+ 398422624, 406624768, 414890848, 423220000, 431611456, 440064448, 448578112, 457151680, 465784288, 474475136,
+ 483223360, 492028160, 500888704, 509804096, 518773504, 527796064, 536870912, 545997184, 555174016, 564400512,
+ 573675776, 582998976, 592369152, 601785472, 611246976, 620752768, 630301952, 639893568, 649526784, 659200640,
+ 668914176, 678666496, 688456704, 698283776, 708146816, 718044864, 727976960, 737942208, 747939584, 757968192,
+ 768027072, 778115200, 788231680, 798375424, 808545600, 818741184, 828961216, 839204672, 849470528, 859757952,
+ 870065856, 880393216, 890739136, 901102592, 911482560, 921878080, 932288192, 942711808, 953147968, 963595648,
+ 974053952, 984521728, 994998080, 1005481984, 1015972480, 1026468416, 1036968960, 1047472960, 1057979520, 1068487552
+ };
+ // Q31
+ const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 2] = {
+ 22902, 91608, 206114, 366416, 572507, 824378, 1122018, 1465415, 1854554, 2289418,
+ 2769989, 3296246, 3868167, 4485728, 5148901, 5857660, 6611973, 7411808, 8257132, 9147909,
+ 10084099, 11065664, 12092561, 13164746, 14282175, 15444799, 16652568, 17905432, 19203336, 20546226,
+ 21934042, 23366728, 24844222, 26366462, 27933380, 29544910, 31200986, 32901534, 34646484, 36435760,
+ 38269288, 40146984, 42068776, 44034576, 46044300, 48097868, 50195188, 52336168, 54520724, 56748756,
+ 59020172, 61334876, 63692768, 66093744, 68537712, 71024552, 73554176, 76126456, 78741304, 81398592,
+ 84098208, 86840048, 89623984, 92449904, 95317680, 98227200, 101178336, 104170952, 107204936, 110280144,
+ 113396456, 116553736, 119751848, 122990656, 126270024, 129589808, 132949864, 136350064, 139790240, 143270256,
+ 146789968, 150349232, 153947888, 157585760, 161262736, 164978624, 168733280, 172526544, 176358256, 180228256,
+ 184136368, 188082416, 192066256, 196087712, 200146592, 204242752, 208376000, 212546160, 216753072, 220996528,
+ 225276352, 229592384, 233944432, 238332288, 242755792, 247214752, 251708960, 256238240, 260802384, 265401216,
+ 270034528, 274702112, 279403808, 284139392, 288908640, 293711360, 298547360, 303416448, 308318400, 313252960,
+ 318220000, 323219264, 328250528, 333313632, 338408288, 343534304, 348691488, 353879616, 359098432, 364347744,
+ 369627296, 374936928, 380276320, 385645312, 391043680, 396471168, 401927520, 407412544, 412925984, 418467616,
+ 424037216, 429634528, 435259328, 440911328, 446590336, 452296128, 458028416, 463786944, 469571520, 475381856,
+ 481217728, 487078848, 492965024, 498875968, 504811424, 510771168, 516754912, 522762432, 528793440, 534847712,
+ 540924928, 547024960, 553147392, 559292032, 565458624, 571646912, 577856640, 584087488, 590339264, 596611584,
+ 602904320, 609217152, 615549760, 621901888, 628273344, 634663808, 641072960, 647500608, 653946432, 660410176,
+ 666891520, 673390208, 679906048, 686438592, 692987712, 699553088, 706134400, 712731392, 719343808, 725971328,
+ 732613696, 739270592, 745941760, 752626880, 759325760, 766038016, 772763456, 779501696, 786252480, 793015488,
+ 799790528, 806577216, 813375360, 820184576, 827004608, 833835136, 840675968, 847526656, 854387072, 861256832,
+ 868135616, 875023168, 881919232, 888823488, 895735616, 902655296, 909582336, 916516352, 923457088, 930404224,
+ 937357504, 944316544, 951281152, 958250944, 965225728, 972205056, 979188800, 986176512, 993168000, 1000162880,
+ 1007160960, 1014161856, 1021165248, 1028170944, 1035178560, 1042187776, 1049198400, 1056210048, 1063222464, 1070235328
+ };
+
+
// Q31
const Word32 Stereo_dmx_wnd_coef_32k_fx[L_FRAME32k] = {
5270712, 15812011, 26352928, 36893212, 47432604, 57970856, 68507712, 79042912, 89576208, 100107344,
diff --git a/lib_enc/ivas_sce_enc_fx.c b/lib_enc/ivas_sce_enc_fx.c
index a578a3cfaeacc1fa9b70066613cf8549931cf6e8..f0811aea67b6c18f2cf62a213d93fe7c12bd36d5 100644
--- a/lib_enc/ivas_sce_enc_fx.c
+++ b/lib_enc/ivas_sce_enc_fx.c
@@ -124,6 +124,8 @@ ivas_error ivas_sce_enc_fx(
Word16 Q_min = s_min( q_data_fx, add( st->q_inp32, L_norm_arr( st->input32_fx - input_frame, input_frame ) ) );
scale_sig32( st->input32_fx - input_frame, input_frame, sub( Q_min, st->q_inp32 ) );
+ st->q_old_inp32 = Q_min;
+ move16();
Copy_Scale_sig32( data_fx, st->input32_fx, input_frame, sub( Q_min, q_data_fx ) ); // Q(Q_min)
st->q_inp32 = Q_min;
move16();
@@ -366,7 +368,9 @@ ivas_error ivas_sce_enc_fx(
Copy( st->input_fx, st->old_input_signal_fx, input_frame );
st->q_old_inp = st->q_inp;
move16();
- Copy32( st->input32_fx, st->input32_fx - input_frame, input_frame ); /* st->q_inp32 */
+ Copy32( st->input32_fx, st->old_input_signal32_fx, input_frame ); /* st->q_inp32 */
+ st->q_old_inp32 = st->q_inp32;
+ move16();
hSCE->last_element_brate = hSCE->element_brate;
move32();
diff --git a/lib_enc/ivas_sns_enc_fx.c b/lib_enc/ivas_sns_enc_fx.c
index b7de878a12a6e567f1b868deb3d55472a407d51f..2eaefb48358859a5c23cb148d781654a24b39a7b 100644
--- a/lib_enc/ivas_sns_enc_fx.c
+++ b/lib_enc/ivas_sns_enc_fx.c
@@ -672,7 +672,11 @@ Word16 quantize_sns_fx(
Word32 ener_side_fx;
Word16 ener_side_q;
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( snsQ_out_fx[0][k], snsQ_out_fx[1][k], side_fx, M );
+#else /* VEC_ARITH_OPT_v1 */
v_sub_fixed( snsQ_out_fx[0][k], snsQ_out_fx[1][k], side_fx, M, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
Word64 L64_sum;
L64_sum = 1;
diff --git a/lib_enc/ivas_spar_md_enc_fx.c b/lib_enc/ivas_spar_md_enc_fx.c
index 63f1f344550d85dd552142c675b3b5c769fd4e0a..2a4953c2148e18d22ab0f6bf18f2b6590d4d5303 100644
--- a/lib_enc/ivas_spar_md_enc_fx.c
+++ b/lib_enc/ivas_spar_md_enc_fx.c
@@ -439,7 +439,11 @@ static void write_metadata_buffer_fx(
FOR( i = 0; i < hMetaData_tmp->nb_ind_tot; i++ )
{
+#ifdef DBG_BITSTREAM_ANALYSIS
+ push_next_indice_( hMetaData_tmp->ind_list[i].function_name, hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits );
+#else
push_next_indice( hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits );
+#endif
}
return;
diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h
index a2247c7a4138f22d981ae9cfcce98e0287e65f88..126bc61f6e2898d1f08c4792c9c59e6033650a14 100644
--- a/lib_enc/ivas_stat_enc.h
+++ b/lib_enc/ivas_stat_enc.h
@@ -1178,7 +1178,6 @@ typedef struct stereo_dmx_evs_phase_only_correlation_structure
typedef struct stereo_dmx_evs_correlation_filter_structure
{
- Word16 init_frmCntr;
Word32 isd_rate_s_fx; // Q31
Word32 iccr_s_fx; // Q31
@@ -1202,6 +1201,16 @@ typedef struct stereo_dmx_evs_correlation_filter_structure
STEREO_DMX_EVS_PHA prev_pha;
Word16 pha_hys_cnt;
+ STEREO_DMX_EVS_PHA proc_pha;
+ Word16 force_poc;
+
+ Word16 pha_ipd_chan2rephase;
+ Word16 pha_ipd_previouschan2rephase;
+ Word16 pha_ipd_chan_cnt;
+ Word16 pha_ipd_chan_thresh;
+ Word16 pha_ipd_chanswitch;
+ Word16 pha_ipd_chanswitch_allowed;
+
Word16 prc_thres;
STEREO_DMX_EVS_PRC curr_prc;
STEREO_DMX_EVS_PRC prev_prc;
@@ -1214,6 +1223,25 @@ typedef struct stereo_dmx_evs_correlation_filter_structure
Word16 trns_aux_energy_fx_e[CPE_CHANNELS];
Word32 crst_fctr_fx; // Q0
+ Word16 n_fad_g;
+ Word16 n_fad_cnt;
+
+ Word32 dmx_pha_ener_fx;
+ Word16 dmx_pha_ener_fx_e;
+ Word32 dmx_poc_ener_fx;
+ Word16 dmx_poc_ener_fx_e;
+
+ Word32 dmx_pha_ener_sgc_fx;
+ Word16 dmx_pha_ener_sgc_fx_e;
+ Word32 dmx_poc_ener_sgc_fx;
+ Word16 dmx_poc_ener_sgc_fx_e;
+
+ Word32 dmx_pha_gain_sgc_fx;
+ Word32 dmx_poc_gain_sgc_fx;
+
+ Word32 low_egy_thres_sgc;
+ Word16 low_egy_thres_sgc_e;
+
} STEREO_DMX_EVS_PHA_DATA, *STEREO_DMX_EVS_PHA_HANDLE;
typedef struct stereo_dmx_evs_enc_data_structure
diff --git a/lib_enc/ivas_stereo_classifier_fx.c b/lib_enc/ivas_stereo_classifier_fx.c
index 3e69a0ca660fbc73ad7cf1ca250e59d02d8a0997..3a040517a84649f0647394974932d5df16f9b9ed 100644
--- a/lib_enc/ivas_stereo_classifier_fx.c
+++ b/lib_enc/ivas_stereo_classifier_fx.c
@@ -890,7 +890,7 @@ void unclr_classifier_td_fx(
move16();
/* mean & std removal */
- fvn = BASOP_Util_Divide3232_Scale_cadence( L_sub( hStereoClassif->unclr_fv_fx[ind], unclr_mean_td[i] ), unclr_scale_td[i], &exp );
+ fvn = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->unclr_fv_fx[ind], unclr_mean_td[i] ), unclr_scale_td[i], &exp );
fvn = Mpy_32_32( fvn, unclr_coef_td[i] ); // Q = 31-exp+15-31 = 15-exp
exp = add( exp, 16 ); // exp = 31-(15-exp) = 16+exp
@@ -1016,7 +1016,7 @@ void unclr_classifier_dft_fx(
/* mean & std removal */
// fvn[i] = (hStereoClassif->unclr_fv[ind] - unclr_mean_dft[i]) / unclr_scale_dft[i];
- fvn[i] = BASOP_Util_Divide3232_Scale_cadence( L_sub( hStereoClassif->unclr_fv_fx[ind], unclr_mean_dft_Q15[i] ), unclr_scale_dft_Q15[i], &fvn_e[i] );
+ fvn[i] = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->unclr_fv_fx[ind], unclr_mean_dft_Q15[i] ), unclr_scale_dft_Q15[i], &fvn_e[i] );
move32();
/* LR */
@@ -1157,7 +1157,7 @@ void xtalk_classifier_td_fx(
move16();
/* mean & std removal */
- fvn = BASOP_Util_Divide3232_Scale_cadence( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_td[i] ), xtalk_scale_td[i], &exp );
+ fvn = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_td[i] ), xtalk_scale_td[i], &exp );
fvn = Mpy_32_32( fvn, xtalk_coef_td[i] ); // Q = 31-exp+15-31 = 15-exp
exp = add( exp, 16 ); // exp = 31-(15-exp) = 16+exp
@@ -1372,7 +1372,7 @@ void xtalk_classifier_dft_fx(
// ratio_m1_m2 = fabsf( m1 * m2 ) / fabsf( m1 + m2 + 1.0f );
Word16 exp;
- ratio_m1_m2 = BASOP_Util_Divide3232_Scale_cadence( L_abs( Mpy_32_32( m1, m2 ) ), L_abs( L_add( L_add( L_shr( m1, 2 ), L_shr( m2, 2 ) ), ONE_IN_Q29 ) ), &exp );
+ ratio_m1_m2 = BASOP_Util_Divide3232_Scale_newton( L_abs( Mpy_32_32( m1, m2 ) ), L_abs( L_add( L_add( L_shr( m1, 2 ), L_shr( m2, 2 ) ), ONE_IN_Q29 ) ), &exp );
exp = sub( exp, 2 );
// m2_m2 = hItd->prev_m2 * m2;
m2_m2 = Mpy_32_32( hItd->prev_m2_fx, m2 );
@@ -1406,7 +1406,7 @@ void xtalk_classifier_dft_fx(
/* mean & std removal */
// fvn[i] = ( hStereoClassif->xtalk_fv[ind] - xtalk_mean_dft[i] ) / xtalk_scale_dft[i];
- fvn[i] = BASOP_Util_Divide3232_Scale_cadence( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_dft_q15[i] ), xtalk_scale_dft_q15[i], &exp ); // Q15
+ fvn[i] = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_dft_q15[i] ), xtalk_scale_dft_q15[i], &exp ); // Q15
move32();
fvn[i] = L_shl_sat( fvn[i], sub( exp, 2 ) ); // Q29
move32();
@@ -1755,7 +1755,7 @@ static Word32 redge_detect_fx(
{
// edge_slope = ( inp_max - inp_min ) / i;
L_temp = BASOP_Util_Add_Mant32Exp( inp_max, 0, L_negate( inp_min ), 0, &L_temp_e );
- edge_slope = BASOP_Util_Divide3232_Scale_cadence( L_temp, i, &edge_slope_e );
+ edge_slope = BASOP_Util_Divide3232_Scale_newton( L_temp, i, &edge_slope_e );
edge_slope_e = add( edge_slope_e, sub( L_temp_e, 31 ) );
edge[i] = err0;
move32();
@@ -1788,7 +1788,7 @@ static Word32 redge_detect_fx(
}
// edge[i] /= i + 1;
- edge[i] = BASOP_Util_Divide3232_Scale_cadence( edge[i], add( i, 1 ), &L_temp_e );
+ edge[i] = BASOP_Util_Divide3232_Scale_newton( edge[i], add( i, 1 ), &L_temp_e );
move32();
edge_e[i] = add( L_temp_e, sub( edge_e[i], 31 ) );
move16();
diff --git a/lib_enc/ivas_stereo_cng_enc_fx.c b/lib_enc/ivas_stereo_cng_enc_fx.c
index aa7c2d0aa6d1211a5724d95e60d69deaacbfac59..b73a57f4690c86d566eb94bd7dadab969789f193 100644
--- a/lib_enc/ivas_stereo_cng_enc_fx.c
+++ b/lib_enc/ivas_stereo_cng_enc_fx.c
@@ -101,7 +101,7 @@ void stereo_dft_enc_sid_calc_coh_fx(
L_tmp1_e = sub( add( hStereoDft->Spd_L_smooth_fx_e, hStereoDft->Spd_R_smooth_fx_e ), W_tmp_q );
L_tmp2 = BASOP_Util_Add_Mant32Exp( Mpy_32_32( hStereoDft->xspec_smooth_fx[2 * k], hStereoDft->xspec_smooth_fx[2 * k] ), shl( hStereoDft->xspec_smooth_fx_e[2 * k], 1 ), Mpy_32_32( hStereoDft->xspec_smooth_fx[2 * k + 1], hStereoDft->xspec_smooth_fx[2 * k + 1] ), shl( hStereoDft->xspec_smooth_fx_e[2 * k + 1], 1 ), &L_tmp2_e );
L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e );
- L_tmp3 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp3_e );
+ L_tmp3 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp3_e );
L_tmp3_e = add( L_tmp3_e, sub( L_tmp1_e, L_tmp2_e ) );
L_tmp3 = Mpy_32_32( prev_cohBand[b], L_tmp3 );
xspec_scale = Sqrt32( L_tmp3, &L_tmp3_e );
@@ -137,7 +137,7 @@ void stereo_dft_enc_sid_calc_coh_fx(
L_tmp2 = W_extract_h( W_shl( W_tmp, W_tmp_q ) );
L_tmp2_e = sub( add( hStereoDft->Spd_L_smooth_fx_e, hStereoDft->Spd_R_smooth_fx_e ), W_tmp_q );
L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e );
- L_tmp3 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp3_e );
+ L_tmp3 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp3_e );
L_tmp3_e = add( L_tmp3_e, sub( L_tmp1_e, L_tmp2_e ) );
L_tmp3 = Mpy_32_32( coh_weight, L_tmp3 );
L_tmp3_e = add( coh_weight_e, L_tmp3_e );
@@ -150,7 +150,7 @@ void stereo_dft_enc_sid_calc_coh_fx(
IF( coh_weight_sum > 0 )
{
// cohBand[b] = cohBand[b] / coh_weight_sum;
- cohBand[b] = BASOP_Util_Divide3232_Scale_cadence( cohBand[b], coh_weight_sum, &L_tmp1_e );
+ cohBand[b] = BASOP_Util_Divide3232_Scale_newton( cohBand[b], coh_weight_sum, &L_tmp1_e );
move32();
cohBand_e[b] = add( L_tmp1_e, sub( cohBand_e[b], coh_weight_sum_e ) );
move16();
@@ -510,7 +510,7 @@ void stereo_dft_cng_side_gain_fx(
hStereoCng->prev_sg_average_fx[b] = hStereoCng->sg_average_fx[b];
move32();
// hStereoCng->sg_average[b] = hStereoCng->sg_average[b] / (float) hStereoCng->sg_average_counter;
- hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_cadence( hStereoCng->sg_average_fx[b], hStereoCng->sg_average_counter, &tmp_e );
+ hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_newton( hStereoCng->sg_average_fx[b], hStereoCng->sg_average_counter, &tmp_e );
move32();
tmp_e = sub( tmp_e, 31 - 5 );
hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub( tmp_e, 5 ) ); // Q31
@@ -535,7 +535,7 @@ void stereo_dft_cng_side_gain_fx(
tmp = hStereoCng->sg_average_fx[b];
move32();
// hStereoCng->sg_average[b] = ( hStereoCng->sg_average[b] + prev_weight * hStereoCng->prev_sg_average[b] ) / ( (float) hStereoCng->sg_average_counter + prev_weight * (float) hStereoCng->prev_sg_average_counter );
- hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_cadence( L_add( hStereoCng->sg_average_fx[b], Mpy_32_16_1( hStereoCng->prev_sg_average_fx[b], prev_weight ) ), L_add( L_shl( hStereoCng->sg_average_counter, Q15 ), L_mult0( prev_weight, hStereoCng->prev_sg_average_counter ) ), &tmp_e );
+ hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_newton( L_add( hStereoCng->sg_average_fx[b], Mpy_32_16_1( hStereoCng->prev_sg_average_fx[b], prev_weight ) ), L_add( L_shl( hStereoCng->sg_average_counter, Q15 ), L_mult0( prev_weight, hStereoCng->prev_sg_average_counter ) ), &tmp_e );
move32();
tmp_e = sub( tmp_e, 16 - 5 );
hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub( tmp_e, 5 ) ); // Q26
@@ -571,7 +571,7 @@ void stereo_dft_cng_side_gain_fx(
W_tmp_q = W_norm( W_tmp );
hStereoDft->sidSideGain_fx[b] = W_extract_h( W_shl( W_tmp, W_tmp_q ) );
move32();
- hStereoDft->sidSideGain_fx[b] = BASOP_Util_Divide3232_Scale_cadence( hStereoDft->sidSideGain_fx[b], sgSum, &tmp_e );
+ hStereoDft->sidSideGain_fx[b] = BASOP_Util_Divide3232_Scale_newton( hStereoDft->sidSideGain_fx[b], sgSum, &tmp_e );
move32();
tmp_e = sub( tmp_e, W_tmp_q );
hStereoDft->sidSideGain_fx[b] = L_shl_sat( hStereoDft->sidSideGain_fx[b], tmp_e ); // Q31: saturation is fine since stereo_dft_quantize_res_gains_fx limits value to 1.0
diff --git a/lib_enc/ivas_stereo_dft_enc_fx.c b/lib_enc/ivas_stereo_dft_enc_fx.c
index 01318af28c5aca29760bd9db19eba5c4905e1055..80c4b5a21c8d67576543e593b880993231f2e9b9 100644
--- a/lib_enc/ivas_stereo_dft_enc_fx.c
+++ b/lib_enc/ivas_stereo_dft_enc_fx.c
@@ -880,7 +880,7 @@ void stereo_dft_enc_update_fx(
// hStereoDft->res_cod_line_max = (int16_t) ( 0.5f + ( hStereoDft->band_limits[hStereoDft->res_cod_band_max] - 1 ) * 2.f * hStereoDft->N / (float) ( hStereoDft->NFFT ) );
Word32 tmp = L_shl( L_mult0( sub( hStereoDft->band_limits[hStereoDft->res_cod_band_max], 1 ), hStereoDft->N ), 1 );
Word16 exp;
- tmp = BASOP_Util_Divide3232_Scale_cadence( tmp, hStereoDft->NFFT, &exp );
+ tmp = BASOP_Util_Divide3232_Scale_newton( tmp, hStereoDft->NFFT, &exp );
hStereoDft->res_cod_line_max = extract_l( L_shr( tmp, sub( 31, exp ) ) );
move16();
// hStereoDft->res_cod_line_max = 8 * (hStereoDft->res_cod_line_max / 8);
@@ -1030,7 +1030,7 @@ void stereo_dft_enc_analyze_fx(
FOR( n = 0; n < n_channels; n++ )
{
- Scale_sig( &mem[n][0], dft_ovl, sts[n]->q_inp - q_input_mem[n] ); // Q(sts[n]->q_inp)
+ Scale_sig( &mem[n][0], dft_ovl, sub( sts[n]->q_inp, q_input_mem[n] ) ); // Q(sts[n]->q_inp)
q_input_mem[n] = sts[n]->q_inp;
move16();
}
@@ -1115,8 +1115,7 @@ void stereo_dft_enc_analyze_fx(
Word32 stereo_dft_enc_synthesize_fx(
STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: encoder stereo handle */
- // float *output, /* o : output synthesis */
- Word32 *output_fx, /* o : output synthesis Q15 */
+ Word32 *output_fx, /* o : output synthesis Q15 */
Word16 *output_start_index,
Word16 *output_end_index,
const Word16 chan, /* i : channel number */
@@ -1126,25 +1125,18 @@ Word32 stereo_dft_enc_synthesize_fx(
Word16 *nrg_out_fx_e )
{
Word16 i, j, sign;
- // float *pDFT_in;
Word32 *pDFT_in_fx;
Word16 DFT_in_fx_e;
Word16 offset, NFFT, N, ovl, zp;
Word16 temp_exp;
- // float fac;
Word32 fac_fx;
- // float *mem;
Word32 *mem_fx;
- // const float *trigo, *win, *win_ana;
const Word16 *trigo_fx;
const Word32 *win_fx;
const Word16 *win_ana_fx;
- // float tmp[STEREO_DFT_N_MAX_ENC];
Word32 tmp_fx[STEREO_DFT_N_MAX_ENC];
- // float nrg;
Word32 nrg_fx;
Word16 nrg_fx_e;
- // float trigo_enc[STEREO_DFT_N_MAX_ENC / 2 + 1];
Word16 trigo_enc_fx[STEREO_DFT_N_MAX_ENC / 2 + 1];
Word16 trigo_step;
Word16 scal_fac;
@@ -1226,7 +1218,7 @@ Word32 stereo_dft_enc_synthesize_fx(
zp = STEREO_DFT_ZP_12k8_ENC;
move16();
// fac = (float) ( NFFT ) / (float) ( hStereoDft->NFFT );
- fac_fx = BASOP_Util_Divide3232_Scale_cadence( NFFT, hStereoDft->NFFT, &temp_exp );
+ fac_fx = BASOP_Util_Divide3232_Scale_newton( NFFT, hStereoDft->NFFT, &temp_exp );
fac_fx = L_shl( fac_fx, temp_exp );
ovl = STEREO_DFT_OVL_12k8;
move16();
@@ -1250,7 +1242,7 @@ Word32 stereo_dft_enc_synthesize_fx(
zp = STEREO_DFT_ZP_16k_ENC;
move16();
// fac = (float) ( NFFT ) / (float) ( hStereoDft->NFFT );
- fac_fx = BASOP_Util_Divide3232_Scale_cadence( NFFT, hStereoDft->NFFT, &temp_exp );
+ fac_fx = BASOP_Util_Divide3232_Scale_newton( NFFT, hStereoDft->NFFT, &temp_exp );
fac_fx = L_shl( fac_fx, temp_exp );
ovl = STEREO_DFT_OVL_16k;
move16();
@@ -1283,7 +1275,7 @@ Word32 stereo_dft_enc_synthesize_fx(
zp = STEREO_DFT_ZP_32k_ENC;
move16();
// fac = (float) ( NFFT ) / (float) ( hStereoDft->NFFT );
- fac_fx = BASOP_Util_Divide3232_Scale_cadence( NFFT, hStereoDft->NFFT, &temp_exp );
+ fac_fx = BASOP_Util_Divide3232_Scale_newton( NFFT, hStereoDft->NFFT, &temp_exp );
fac_fx = L_shl( fac_fx, temp_exp );
ovl = STEREO_DFT_OVL_32k;
move16();
@@ -1307,7 +1299,7 @@ Word32 stereo_dft_enc_synthesize_fx(
zp = STEREO_DFT_ZP_8k_ENC;
move16();
// fac = (float) ( NFFT ) / (float) ( hStereoDft->NFFT );
- fac_fx = BASOP_Util_Divide3232_Scale_cadence( NFFT, hStereoDft->NFFT, &temp_exp );
+ fac_fx = BASOP_Util_Divide3232_Scale_newton( NFFT, hStereoDft->NFFT, &temp_exp );
fac_fx = L_shl( fac_fx, temp_exp );
ovl = STEREO_DFT_OVL_8k;
move16();
@@ -1511,7 +1503,7 @@ Word32 stereo_dft_enc_synthesize_fx(
move32();
// output[offset + N + i] = ( tmp[zp + N + i] - ifft_deviation ) / win_ana[ovl - 1 - i] + ifft_deviation;
Word16 L_temp_e;
- Word32 L_temp = BASOP_Util_Divide3232_Scale_cadence( L_sub_sat( tmp_fx[zp + N + i], ifft_deviation ), L_deposit_h( win_ana_fx[ovl - 1 - i] ), &L_temp_e );
+ Word32 L_temp = BASOP_Util_Divide3232_Scale_newton( L_sub_sat( tmp_fx[zp + N + i], ifft_deviation ), L_deposit_h( win_ana_fx[ovl - 1 - i] ), &L_temp_e );
L_temp = L_shl_sat( L_temp, L_temp_e );
output_fx[offset + N + i] = L_add_sat( L_temp, ifft_deviation ); // Q15
move32();
@@ -1733,7 +1725,7 @@ void stereo_dft_enc_process_fx(
}
// if ( fabsf( hStereoDft->hItd->deltaItd[k_offset] * 32000.f / input_Fs ) > 80.0f )
- tmp_32fx = L_abs( BASOP_Util_Divide3232_Scale_cadence( hStereoDft->hItd->deltaItd_fx[k_offset], input_Fs, &tmp_e ) );
+ tmp_32fx = L_abs( BASOP_Util_Divide3232_Scale_newton( hStereoDft->hItd->deltaItd_fx[k_offset], input_Fs, &tmp_e ) );
tmp_e = add( tmp_e, 15 - 31 );
IF( BASOP_Util_Cmp_Mant32Exp( tmp_32fx, tmp_e, 5368709 /* 80.0f / 32000.f in Q31 */, 0 ) > 0 )
{
@@ -2026,13 +2018,13 @@ void stereo_dft_enc_process_fx(
// wR = sqrtf( 0.5f * ( comb_nrgL + comb_nrgR ) + frac_dot_prod ) / sum_abs;
L_tmp1 = BASOP_Util_Add_Mant32Exp( L_tmp1, sub( L_tmp1_e, 1 ), frac_dot_prod, frac_dot_prod_e, &L_tmp1_e );
L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e );
- wR = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &wR_e );
+ wR = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &wR_e );
wR_e = add( wR_e, sub( L_tmp1_e, sum_abs_e ) );
// wL = wR + sqrtf( 2.f ) * ( 1.f - ( sqrtf( Sr + Si ) / sum_abs ) );
L_tmp1 = BASOP_Util_Add_Mant32Exp( Sr, Sr_e, Si, Si_e, &L_tmp1_e );
L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e );
- L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &L_tmp2_e );
+ L_tmp2 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &L_tmp2_e );
L_tmp2_e = add( L_tmp2_e, sub( L_tmp1_e, sum_abs_e ) );
L_tmp2 = L_shl_sat( L_tmp2, L_tmp2_e ); // Q31 saturation expected
L_tmp1 = L_sub( MAX_32, L_tmp2 ); // Q31
@@ -2111,13 +2103,13 @@ void stereo_dft_enc_process_fx(
// wR = sqrtf( 0.5f * ( comb_nrgL + comb_nrgR ) + frac_dot_prod ) / sum_abs;
L_tmp1 = BASOP_Util_Add_Mant32Exp( L_tmp1, sub( L_tmp1_e, 1 ), frac_dot_prod, frac_dot_prod_e, &L_tmp1_e );
L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e );
- wR = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &wR_e );
+ wR = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &wR_e );
wR_e = add( wR_e, sub( L_tmp1_e, sum_abs_e ) );
// wL = wR + sqrtf( 2.f ) * ( 1.f - ( sqrtf( Sr + Si ) / sum_abs ) );
L_tmp1 = BASOP_Util_Add_Mant32Exp( Sr, Sr_e, Si, Si_e, &L_tmp1_e );
L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e );
- L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &L_tmp2_e );
+ L_tmp2 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &L_tmp2_e );
L_tmp2_e = add( L_tmp2_e, sub( L_tmp1_e, sum_abs_e ) );
L_tmp2 = L_shl_sat( L_tmp2, L_tmp2_e ); // Q31 saturation expected
L_tmp1 = L_sub( MAX_32, L_tmp2 ); // Q31
@@ -2191,7 +2183,7 @@ void stereo_dft_enc_process_fx(
// wR = sqrtf( 0.5f * ( sum_nrg_L2 + sum_nrg_R2 ) + dot_prod_nrg_ratio[b] ) / sum_abs;
L_tmp1 = BASOP_Util_Add_Mant32Exp( L_tmp3, sub( L_tmp3_e, 1 ), dot_prod_nrg_ratio_fx[b], dot_prod_nrg_ratio_fx_e[b], &L_tmp1_e );
L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e );
- wR = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &wR_e );
+ wR = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &wR_e );
wR_e = add( wR_e, sub( L_tmp1_e, sum_abs_e ) );
// wL = wR + sqrtf( 2.f ) * ( 1.f - sqrtf( sum_nrg_Mid ) / sum_abs );
@@ -2200,7 +2192,7 @@ void stereo_dft_enc_process_fx(
L_tmp1_e = sum_nrg_Mid_e;
move16();
L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e );
- L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &L_tmp2_e );
+ L_tmp2 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &L_tmp2_e );
L_tmp2_e = add( L_tmp2_e, sub( L_tmp1_e, sum_abs_e ) );
L_tmp2 = L_shl_sat( L_tmp2, L_tmp2_e ); // Q31 saturation expected
L_tmp1 = L_sub( MAX_32, L_tmp2 ); // Q31
@@ -2478,7 +2470,7 @@ static void stereo_dft_enc_get_res_cod_mode_flag_fx(
L_tmp1 = L_sub( MAX_32, g ); // Q31
L_tmp2 = BASOP_Util_Add_Mant32Exp( hStereoDft->res_cod_NRG_S_fx[b], hStereoDft->res_cod_NRG_S_fx_e[b], Mpy_32_32( Mpy_32_32( L_tmp1, L_tmp1 ), hStereoDft->res_cod_NRG_M_fx[b] ), hStereoDft->res_cod_NRG_M_fx_e[b], &L_tmp2_e );
L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, MAX_32, 0, &L_tmp2_e );
- L_tmp1 = BASOP_Util_Divide3232_Scale_cadence( hStereoDft->res_cod_NRG_S_fx[b], L_tmp2, &L_tmp1_e );
+ L_tmp1 = BASOP_Util_Divide3232_Scale_newton( hStereoDft->res_cod_NRG_S_fx[b], L_tmp2, &L_tmp1_e );
L_tmp1_e = add( L_tmp1_e, sub( hStereoDft->res_cod_NRG_S_fx_e[b], L_tmp2_e ) );
L_tmp1 = L_shl( L_tmp1, L_tmp1_e ); // Q31
*res_dmx_ratio = L_max( L_tmp1, *res_dmx_ratio );
@@ -2494,7 +2486,7 @@ static void stereo_dft_enc_get_res_cod_mode_flag_fx(
/*Calculate the energy ratio of the inter-frame */
//*frame_nrg_ratio = dmx_res_all / hStereoDft->dmx_res_all_prev;
- *frame_nrg_ratio = BASOP_Util_Divide3232_Scale_cadence( dmx_res_all, hStereoDft->dmx_res_all_prev_fx, &L_tmp1_e );
+ *frame_nrg_ratio = BASOP_Util_Divide3232_Scale_newton( dmx_res_all, hStereoDft->dmx_res_all_prev_fx, &L_tmp1_e );
move32();
L_tmp1_e = add( L_tmp1_e, sub( dmx_res_all_e, hStereoDft->dmx_res_all_prev_fx_e ) );
*frame_nrg_ratio = L_shr_r_sat( *frame_nrg_ratio, sub( 3, L_tmp1_e ) ); // Q28
@@ -2741,7 +2733,7 @@ void stereo_dft_enc_res_fx(
L_tmp2_e = hStereoDft->res_cod_NRG_M_fx_e[b];
L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, hStereoDft->res_cod_NRG_S_fx[b], hStereoDft->res_cod_NRG_S_fx_e[b], &L_tmp2_e );
L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, MAX_32, 0, &L_tmp2_e );
- in_phase_ratio = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &in_phase_ratio_e );
+ in_phase_ratio = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &in_phase_ratio_e );
in_phase_ratio_e = add( in_phase_ratio_e, sub( hStereoDft->res_cod_NRG_M_fx_e[b], L_tmp2_e ) );
in_phase_ratio = L_shl_sat( in_phase_ratio, in_phase_ratio_e ); // Q31 : bound from 0.0 to 1.0
in_phase_ratio = L_max( 0, in_phase_ratio );
@@ -3512,7 +3504,7 @@ static void stereo_dft_enc_compute_prm_fx(
W_shift = W_norm( W_tmp );
L_tmp2 = W_extract_h( W_shl( W_tmp, W_shift ) );
L_tmp2_e = sub( add( sub_nrg_DMX2_e, 31 ), W_shift );
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp_e );
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp_e );
L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, L_tmp2_e ) );
L_tmp = L_shl( L_tmp, L_tmp_e ); // Q31hStereoDft->gainIPD_sm_fx = L_add( L_shr( hStereoDft->gainIPD_sm_fx, 1 ), L_
gain_IPD = L_add_sat( gain_IPD, L_tmp ); // Q31: saturation expected
@@ -3597,7 +3589,7 @@ static void stereo_dft_enc_compute_prm_fx(
// dot_prod_nrg_ratio[b2] = sum_past_dot_prod_abs2 / ( sum_past_nrgL2 + sum_past_nrgR2 + EPSILON );
L_tmp2 = BASOP_Util_Add_Mant32Exp( sum_past_nrgL2, sum_past_nrgL2_e, sum_past_nrgR2, sum_past_nrgR2_e, &L_tmp2_e );
L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e );
- dot_prod_nrg_ratio_fx[b2] = BASOP_Util_Divide3232_Scale_cadence( sum_past_dot_prod_abs2, L_tmp2, &L_tmp_e );
+ dot_prod_nrg_ratio_fx[b2] = BASOP_Util_Divide3232_Scale_newton( sum_past_dot_prod_abs2, L_tmp2, &L_tmp_e );
move32();
L_tmp_e = add( L_tmp_e, sub( sum_past_dot_prod_abs2_e, L_tmp2_e ) );
dot_prod_nrg_ratio_fx[b2] = L_shl( dot_prod_nrg_ratio_fx[b2], L_tmp_e ); // Q31
@@ -3624,7 +3616,7 @@ static void stereo_dft_enc_compute_prm_fx(
// dot_prod_nrg_ratio[b2] /= ( sum_nrg_L2 + sum_nrg_R2 + EPSILON );
L_tmp2 = BASOP_Util_Add_Mant32Exp( sum_nrg_L2, sum_nrg_L2_e, sum_nrg_R2, sum_nrg_R2_e, &L_tmp2_e );
L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e );
- dot_prod_nrg_ratio_fx[b2] = BASOP_Util_Divide3232_Scale_cadence( dot_prod_nrg_ratio_fx[b2], L_tmp2, &L_tmp_e );
+ dot_prod_nrg_ratio_fx[b2] = BASOP_Util_Divide3232_Scale_newton( dot_prod_nrg_ratio_fx[b2], L_tmp2, &L_tmp_e );
move32();
L_tmp_e = add( L_tmp_e, sub( dot_prod_nrg_ratio_fx_e[b2], L_tmp2_e ) );
dot_prod_nrg_ratio_fx[b2] = L_shl( dot_prod_nrg_ratio_fx[b2], L_tmp_e ); // Q31
@@ -3691,7 +3683,7 @@ static void stereo_dft_enc_compute_prm_fx(
}
// c = sqrtf( sum_past_nrgL / sum_past_nrgR );
- c = BASOP_Util_Divide3232_Scale_cadence( sum_past_nrgL, sum_past_nrgR, &c_e );
+ c = BASOP_Util_Divide3232_Scale_newton( sum_past_nrgL, sum_past_nrgR, &c_e );
c_e = add( c_e, sub( sum_past_nrgL_e, sum_past_nrgR_e ) );
c = Sqrt32( c, &c_e );
// sum_past_nrg_dmx = sum_past_nrgL + sum_past_nrgR + 2 * sum_past_dot_prod_abs;
@@ -3718,7 +3710,7 @@ static void stereo_dft_enc_compute_prm_fx(
{
// g = ( sum_past_nrgL - sum_past_nrgR ) / ( sum_past_nrg_dmx );
L_tmp1 = BASOP_Util_Add_Mant32Exp( sum_past_nrgL, sum_past_nrgL_e, L_negate( sum_past_nrgR ), sum_past_nrgR_e, &L_tmp1_e );
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_past_nrg_dmx, &L_tmp_e );
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_past_nrg_dmx, &L_tmp_e );
L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, sum_past_nrg_dmx_e ) );
g = L_shl_sat( L_tmp, L_tmp_e ); // Q31 saturation expected
pSideGain[b] = g;
@@ -3731,7 +3723,7 @@ static void stereo_dft_enc_compute_prm_fx(
// pSideGain[b] = ( c - 1 ) / ( c + 1 );
L_tmp1 = BASOP_Util_Add_Mant32Exp( c, c_e, MIN_32, 0, &L_tmp1_e );
L_tmp2 = BASOP_Util_Add_Mant32Exp( c, c_e, MAX_32, 0, &L_tmp2_e );
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp_e );
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp_e );
L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, L_tmp2_e ) );
pSideGain[b] = L_shl_sat( L_tmp, L_tmp_e ); // Q31 saturation expected
move32();
@@ -3774,7 +3766,7 @@ static void stereo_dft_enc_compute_prm_fx(
// pPredGain[b] = sqrtf( pPredGain[b] / ( reg + sum_past_nrg_dmx ) );
L_tmp2 = BASOP_Util_Add_Mant32Exp( reg, reg_e, sum_past_nrg_dmx, sum_past_nrg_dmx_e, &L_tmp2_e );
- L_tmp1 = BASOP_Util_Divide3232_Scale_cadence( L_tmp, L_tmp2, &L_tmp1_e );
+ L_tmp1 = BASOP_Util_Divide3232_Scale_newton( L_tmp, L_tmp2, &L_tmp1_e );
L_tmp1_e = add( L_tmp1_e, sub( L_tmp_e, L_tmp2_e ) );
L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e );
pPredGain[b] = L_shl( L_tmp1, L_tmp1_e ); // Q31
@@ -3913,14 +3905,14 @@ static void stereo_dft_enc_compute_prm_fx(
}
// c = sqrtf( sum_energy_L / sum_energy_R );
- c = BASOP_Util_Divide3232_Scale_cadence( sum_energy_L, sum_energy_R, &c_e );
+ c = BASOP_Util_Divide3232_Scale_newton( sum_energy_L, sum_energy_R, &c_e );
c_e = add( c_e, sub( sum_energy_L_e, sum_energy_R_e ) );
c = Sqrt32( c, &c_e );
// g = fabsf( ( c - 1 ) / ( c + 1 ) );
L_tmp1 = BASOP_Util_Add_Mant32Exp( c, c_e, MIN_32, 0, &L_tmp1_e );
L_tmp2 = BASOP_Util_Add_Mant32Exp( c, c_e, MAX_32, 0, &L_tmp2_e );
- g = L_abs( BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp_e ) );
+ g = L_abs( BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp_e ) );
L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, L_tmp2_e ) );
g = L_shl_sat( g, L_tmp_e ); // Q31 saturation expected
IF( GT_32( g, 1717986918 /*0.8f in Q31*/ ) )
@@ -4326,7 +4318,7 @@ static Word32 stereo_dft_calc_mean_ipd_change_fx(
ipd_mean_change = L_add( ipd_mean_change, ipd_change[b] );
}
// ipd_mean_change /= gipd_band_max;
- ipd_mean_change = BASOP_Util_Divide3232_Scale_cadence( ipd_mean_change, gipd_band_max, &ipd_mean_change_e );
+ ipd_mean_change = BASOP_Util_Divide3232_Scale_newton( ipd_mean_change, gipd_band_max, &ipd_mean_change_e );
ipd_mean_change_e = add( ipd_mean_change_e, 18 - 31 );
ipd_mean_change = L_shr( ipd_mean_change, sub( 18, ipd_mean_change_e ) ); // Q13
@@ -4510,13 +4502,13 @@ static void stereo_dft_enc_get_reverb_flag_fx(
FOR( b = 0; b <= s_min( hStereoDft->nbands, 6 ); b++ ) /* choose the subbands used for stereo filling */
{
// norm_dmx = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_DMX[b]);
- norm_dmx = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_DMX[b], &norm_dmx_e );
+ norm_dmx = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_DMX[b], &norm_dmx_e );
norm_dmx_e = add( norm_dmx_e, sub( 31, sub_nrg_DMX_e[b] ) );
// norm_l = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_L[b]);
- norm_l = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_L[b], &norm_l_e );
+ norm_l = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_L[b], &norm_l_e );
norm_l_e = add( norm_l_e, sub( 31, sub_nrg_L_e[b] ) );
// norm_r = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_R[b]);
- norm_r = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_R[b], &norm_r_e );
+ norm_r = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_R[b], &norm_r_e );
norm_r_e = add( norm_r_e, sub( 31, sub_nrg_R_e[b] ) );
FOR( i = hStereoDft->band_limits[b]; i < hStereoDft->band_limits[b + 1]; i++ ) /* normalization on each subbands */
@@ -4562,13 +4554,13 @@ static void stereo_dft_enc_get_reverb_flag_fx(
FOR( ; b < s_min( hStereoDft->nbands, 10 ); b++ ) /* choose the subbands used for stereo filling */
{
// norm_dmx = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_DMX[b]);
- norm_dmx = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_DMX[b], &norm_dmx_e );
+ norm_dmx = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_DMX[b], &norm_dmx_e );
norm_dmx_e = add( norm_dmx_e, sub( 31, sub_nrg_DMX_e[b] ) );
// norm_l = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_L[b]);
- norm_l = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_L[b], &norm_l_e );
+ norm_l = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_L[b], &norm_l_e );
norm_l_e = add( norm_l_e, sub( 31, sub_nrg_L_e[b] ) );
// norm_r = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_R[b]);
- norm_r = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_R[b], &norm_r_e );
+ norm_r = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_R[b], &norm_r_e );
norm_r_e = add( norm_r_e, sub( 31, sub_nrg_R_e[b] ) );
FOR( i = hStereoDft->band_limits[b]; i < hStereoDft->band_limits[b + 1]; i++ ) /* normalization on each subbands */
@@ -4614,7 +4606,7 @@ static void stereo_dft_enc_get_reverb_flag_fx(
FOR( b = 0; b < hStereoDft->nbands; b++ ) /* choose the subbands used for stereo filling */
{
// sub_nrg_DMX[b] /= (hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]);
- sub_nrg_DMX[b] = BASOP_Util_Divide3232_Scale_cadence( sub_nrg_DMX[b], sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), &L_tmp_e );
+ sub_nrg_DMX[b] = BASOP_Util_Divide3232_Scale_newton( sub_nrg_DMX[b], sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), &L_tmp_e );
move32();
sub_nrg_DMX_e[b] = add( L_tmp_e, sub( sub_nrg_DMX_e[b], 31 ) );
move16();
@@ -4735,12 +4727,12 @@ static void stereo_dft_enc_get_reverb_flag_fx(
// fac = ((diff_l_l > diff_r_l) ? diff_r_l / diff_l_l : diff_l_l / diff_r_l);
IF( BASOP_Util_Cmp_Mant32Exp( diff_l_l, diff_l_l_e, diff_r_l, diff_r_l_e ) > 0 )
{
- fac = BASOP_Util_Divide3232_Scale_cadence( diff_r_l, diff_l_l, &L_tmp_e );
+ fac = BASOP_Util_Divide3232_Scale_newton( diff_r_l, diff_l_l, &L_tmp_e );
L_tmp_e = add( L_tmp_e, sub( diff_r_l_e, diff_l_l_e ) );
}
ELSE
{
- fac = BASOP_Util_Divide3232_Scale_cadence( diff_l_l, diff_r_l, &L_tmp_e );
+ fac = BASOP_Util_Divide3232_Scale_newton( diff_l_l, diff_r_l, &L_tmp_e );
L_tmp_e = add( L_tmp_e, sub( diff_l_l_e, diff_r_l_e ) );
}
fac = L_shl_sat( fac, L_tmp_e ); // Q31
@@ -4792,7 +4784,7 @@ static Word32 stereo_dft_gain_offset_fx(
* function @ 32kHz from which the values are interpolated: */
k0 = shr( tau, 3 );
// alpha = s_and(tau, 7) / 8.f;
- alpha = BASOP_Util_Divide3232_Scale_cadence( s_and( tau, 7 ), 8, &alpha_e );
+ alpha = BASOP_Util_Divide3232_Scale_newton( s_and( tau, 7 ), 8, &alpha_e );
alpha = L_shl( alpha, alpha_e ); // Q31
// wnt = (1 - alpha) * Wn_table[k0] + alpha * Wn_table[k0 + 1];
wnt = L_add( Mpy_32_32( L_sub( MAX_32, alpha ), Wn_table_fx[k0] ), Mpy_32_32( alpha, Wn_table_fx[k0 + 1] ) ); // Q31
@@ -4803,12 +4795,12 @@ static Word32 stereo_dft_gain_offset_fx(
L_tmp1 = BASOP_Util_Add_Mant32Exp( MAX_32, 0, c, c_e, &L_tmp1_e );
L_tmp1 = Mpy_32_32( L_tmp1, L_tmp1 );
L_tmp1_e = shl( L_tmp1_e, 1 );
- L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( L_tmp, L_tmp1, &L_tmp2_e );
+ L_tmp2 = BASOP_Util_Divide3232_Scale_newton( L_tmp, L_tmp1, &L_tmp2_e );
L_tmp2_e = add( add( L_tmp2_e, sub( L_tmp_e, L_tmp1_e ) ), 3 /*multiply by 8*/ );
L_tmp2 = Mpy_32_32( L_tmp2, L_sub( MAX_32, wnt ) );
L_tmp1 = BASOP_Util_Add_Mant32Exp( MAX_32, 0, L_tmp, L_tmp_e, &L_tmp1_e );
L_tmp1 = BASOP_Util_Add_Mant32Exp( L_tmp1, L_tmp1_e, Mpy_32_32( c, wnt ), add( c_e, 1 ), &L_tmp1_e );
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( L_tmp2, L_tmp1, &L_tmp_e );
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( L_tmp2, L_tmp1, &L_tmp_e );
L_tmp_e = add( L_tmp_e, sub( L_tmp2_e, L_tmp1_e ) );
L_tmp = Sqrt32( L_tmp, &L_tmp_e );
go = L_shl( L_tmp, L_tmp_e );
@@ -4838,7 +4830,7 @@ static void stereo_dft_enc_calculate_nrg_for_icbwe_fx(
Word32 tmp;
// bandResDft = ( (float) input_Fs ) / hStereoDft->NFFT;
- bandResDft = BASOP_Util_Divide3232_Scale_cadence( input_Fs, hStereoDft->NFFT, &bandResDft_e );
+ bandResDft = BASOP_Util_Divide3232_Scale_newton( input_Fs, hStereoDft->NFFT, &bandResDft_e );
// shbBins[0] = (int16_t) ( 6400 / bandResDft );
shbBins[0] = BASOP_Util_Divide3232_Scale( 6400, bandResDft, &tmp_e );
move16();
diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c
index b7429e2e796656a838a89b3a0f99a4f7b2a28175..1beacd19a265a59b2acec77ecc942480f86abe82 100644
--- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c
+++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c
@@ -232,7 +232,7 @@ static Word32 itd_vad_ms_snr_calc_fx(
move32();
}
// E_band[i] = E_band[i] / ( itd_vad_band_tbl[i + 1] - itd_vad_band_tbl[i] );
- E_band[i] = BASOP_Util_Divide3232_Scale_cadence( E_band[i], L_sub( itd_vad_band_tbl[i + 1], itd_vad_band_tbl[i] ), &exp );
+ E_band[i] = BASOP_Util_Divide3232_Scale_newton( E_band[i], L_sub( itd_vad_band_tbl[i + 1], itd_vad_band_tbl[i] ), &exp );
move32();
E_band_e[i] = add( exp, sub( E_band_e[i], 31 ) );
move16();
@@ -245,7 +245,7 @@ static Word32 itd_vad_ms_snr_calc_fx(
FOR( i = 0; i < STEREO_DFT_ITD_VAD_BAND_NUM; i++ )
{
// snr[i] = E_band[i] / E_band_n[i];
- snr[i] = BASOP_Util_Divide3232_Scale_cadence( E_band[i], E_band_n[i], &snr_e[i] );
+ snr[i] = BASOP_Util_Divide3232_Scale_newton( E_band[i], E_band_n[i], &snr_e[i] );
move32();
snr_e[i] = add( snr_e[i], sub( E_band_e[i], E_band_n_exp[i] ) );
move16();
@@ -327,7 +327,7 @@ static void itd_vad_background_update_fx(
L_temp = L_shl( *vad_frm_cnt, q_temp );
L_temp_e = sub( 31, q_temp );
L_temp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( E_band_n[i], L_temp ), add( E_band_n_exp[i], L_temp_e ), E_band[i], E_band_e[i], &L_temp_e );
- E_band_n[i] = BASOP_Util_Divide3232_Scale_cadence( L_temp, L_add( *vad_frm_cnt, 1 ), &E_band_n_e_tmp );
+ E_band_n[i] = BASOP_Util_Divide3232_Scale_newton( L_temp, L_add( *vad_frm_cnt, 1 ), &E_band_n_e_tmp );
move32();
E_band_n_exp[i] = add( E_band_n_e_tmp, sub( L_temp_e, 31 ) );
move16();
@@ -536,7 +536,7 @@ static Word32 calc_mean_E_ratio_fx(
L_temp1 = BASOP_Util_Add_Mant32Exp( acorr, acorr_e, fi[b], fi_e[b], &L_temp1_e );
L_temp2 = BASOP_Util_Add_Mant32Exp( acorr, acorr_e, L_negate( fi[b] ), fi_e[b], &L_temp2_e );
L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_temp2_e );
- Er[b] = BASOP_Util_Divide3232_Scale_cadence( L_temp1, L_temp2, &Er_e[b] );
+ Er[b] = BASOP_Util_Divide3232_Scale_newton( L_temp1, L_temp2, &Er_e[b] );
move32();
Er_e[b] = add( Er_e[b], sub( L_temp1_e, L_temp2_e ) );
move16();
@@ -585,7 +585,7 @@ static Word32 calc_mean_E_ratio_fx(
L_temp1 = BASOP_Util_Add_Mant32Exp( acorr, acorr_e, total_fi, total_fi_e, &L_temp1_e );
L_temp2 = BASOP_Util_Add_Mant32Exp( acorr, acorr_e, L_negate( total_fi ), total_fi_e, &L_temp2_e );
L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_temp2_e );
- *total_mEr = BASOP_Util_Divide3232_Scale_cadence( L_temp1, L_temp2, total_mEr_e );
+ *total_mEr = BASOP_Util_Divide3232_Scale_newton( L_temp1, L_temp2, total_mEr_e );
move32();
*total_mEr_e = add( *total_mEr_e, sub( L_temp1_e, L_temp2_e ) );
move16();
@@ -1302,14 +1302,14 @@ void stereo_dft_enc_compute_itd_fx(
// g_ILD = sqrtf( sum_nrg_L / ( sum_nrg_R + 1.0f ) );
L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_R, sum_nrg_R_e, MAX_32, 0, &L_temp_e );
- g_ILD = BASOP_Util_Divide3232_Scale_cadence( sum_nrg_L, L_temp, &g_ILD_e );
+ g_ILD = BASOP_Util_Divide3232_Scale_newton( sum_nrg_L, L_temp, &g_ILD_e );
g_ILD_e = add( g_ILD_e, sub( sum_nrg_L_e, L_temp_e ) );
g_ILD = Sqrt32( g_ILD, &g_ILD_e );
// g_ILD = fabsf( ( g_ILD - 1 ) / ( g_ILD + 1 ) );
L_temp = BASOP_Util_Add_Mant32Exp( g_ILD, g_ILD_e, MIN_32, 0, &L_temp_e );
L_temp2 = BASOP_Util_Add_Mant32Exp( g_ILD, g_ILD_e, MAX_32, 0, &L_temp2_e );
- g_ILD = L_abs( BASOP_Util_Divide3232_Scale_cadence( L_temp, L_temp2, &g_ILD_e ) );
+ g_ILD = L_abs( BASOP_Util_Divide3232_Scale_newton( L_temp, L_temp2, &g_ILD_e ) );
g_ILD_e = add( g_ILD_e, sub( L_temp_e, L_temp2_e ) );
g_ILD = L_shl_sat( g_ILD, g_ILD_e ); // Q31
@@ -1339,7 +1339,7 @@ void stereo_dft_enc_compute_itd_fx(
// g_IPD = ( sum_nrg_L + sum_nrg_R + 2 * grand_dot_prod_real ) / grand_nrg_DMX;
L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, sum_nrg_R, sum_nrg_R_e, &L_temp_e );
L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, grand_dot_prod_real, add( grand_dot_prod_real_e, 1 ), &L_temp_e );
- g_IPD = BASOP_Util_Divide3232_Scale_cadence( L_temp, grand_nrg_DMX, &g_IPD_e );
+ g_IPD = BASOP_Util_Divide3232_Scale_newton( L_temp, grand_nrg_DMX, &g_IPD_e );
g_IPD_e = add( g_IPD_e, sub( L_temp_e, grand_nrg_DMX_e ) );
// if ( g_IPD >= 1.0f )
IF( BASOP_Util_Cmp_Mant32Exp( g_IPD, g_IPD_e, ONE_IN_Q29 - ONE_IN_Q14 /*Adjusting threshold for precision loss*/, 2 ) >= 0 )
@@ -1366,7 +1366,7 @@ void stereo_dft_enc_compute_itd_fx(
// angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / ( sum_nrg_L - sum_nrg_R + 1.0f ) ) );
L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e );
L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e );
- L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, L_temp, &L_temp2_e );
+ L_temp2 = BASOP_Util_Divide3232_Scale_newton( grand_dot_prod_real, L_temp, &L_temp2_e );
L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) );
angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14
// angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13
@@ -1378,7 +1378,7 @@ void stereo_dft_enc_compute_itd_fx(
// g_side = fabsf( sum_nrg_L - sum_nrg_R ) / ( grand_nrg_DMX );
L_temp = L_abs( BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ) );
- g_side = BASOP_Util_Divide3232_Scale_cadence( L_temp, grand_nrg_DMX, &g_side_e );
+ g_side = BASOP_Util_Divide3232_Scale_newton( L_temp, grand_nrg_DMX, &g_side_e );
g_side_e = add( g_side_e, sub( L_temp_e, grand_nrg_DMX_e ) );
g_side = L_shl_sat( g_side, g_side_e ); // Q31
g_side_e = 0;
@@ -1443,7 +1443,7 @@ void stereo_dft_enc_compute_itd_fx(
ELSE
{
// sfm_L = expf( log_prod_L / ( NFFT_mid ) ) / ( sum_abs_L / ( NFFT_mid ) );
- L_temp = BASOP_Util_Divide3232_Scale_cadence( log_prod_L, NFFT_mid, &L_temp_e );
+ L_temp = BASOP_Util_Divide3232_Scale_newton( log_prod_L, NFFT_mid, &L_temp_e );
L_temp_e = add( L_temp_e, sub( log_prod_L_e, 31 ) );
L_temp = BASOP_Util_fPow( 1459366444 /*2.718 in Q29*/, 2, L_temp, L_temp_e, &L_temp_e );
q_temp = norm_l( NFFT_mid );
@@ -1451,7 +1451,7 @@ void stereo_dft_enc_compute_itd_fx(
L_temp2_e = sub( 31, q_temp );
L_temp = Mpy_32_32( L_temp, L_temp2 );
L_temp_e = add( L_temp_e, L_temp2_e );
- sfm_L = BASOP_Util_Divide3232_Scale_cadence( L_temp, sum_abs_L, &sfm_L_e );
+ sfm_L = BASOP_Util_Divide3232_Scale_newton( L_temp, sum_abs_L, &sfm_L_e );
sfm_L_e = add( sfm_L_e, sub( L_temp_e, sum_abs_L_e ) );
sfm_L = L_shl_sat( sfm_L, sfm_L_e ); // Q31 - should be rechecked for -10dB tests
}
@@ -1467,7 +1467,7 @@ void stereo_dft_enc_compute_itd_fx(
ELSE
{
// sfm_R = expf( log_prod_R / ( NFFT_mid ) ) / ( sum_abs_R / ( NFFT_mid ) );
- L_temp = BASOP_Util_Divide3232_Scale_cadence( log_prod_R, NFFT_mid, &L_temp_e );
+ L_temp = BASOP_Util_Divide3232_Scale_newton( log_prod_R, NFFT_mid, &L_temp_e );
L_temp_e = add( L_temp_e, sub( log_prod_R_e, 31 ) );
L_temp = BASOP_Util_fPow( 1459366444 /*2.718 in Q29*/, 2, L_temp, L_temp_e, &L_temp_e );
q_temp = norm_l( NFFT_mid );
@@ -1475,7 +1475,7 @@ void stereo_dft_enc_compute_itd_fx(
L_temp2_e = sub( 31, q_temp );
L_temp = Mpy_32_32( L_temp, L_temp2 );
L_temp_e = add( L_temp_e, L_temp2_e );
- sfm_R = BASOP_Util_Divide3232_Scale_cadence( L_temp, sum_abs_R, &sfm_L_e );
+ sfm_R = BASOP_Util_Divide3232_Scale_newton( L_temp, sum_abs_R, &sfm_L_e );
sfm_R_e = add( sfm_L_e, sub( L_temp_e, sum_abs_R_e ) );
// sfm_R = L_shl_r( sfm_R, sfm_R_e ); // Q31
sfm_R = L_shl_sat( sfm_R, sfm_R_e ); // Q31
@@ -1663,7 +1663,7 @@ void stereo_dft_enc_compute_itd_fx(
}
// cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L );
- cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e );
+ cng_xcorr_filt = BASOP_Util_Divide3232_Scale_newton( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e );
cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31
cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31
@@ -1724,7 +1724,7 @@ void stereo_dft_enc_compute_itd_fx(
// cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L );
IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) != 0 )
{
- cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e );
+ cng_xcorr_filt = BASOP_Util_Divide3232_Scale_newton( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e );
cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31
cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31
}
@@ -1917,7 +1917,7 @@ void stereo_dft_enc_compute_itd_fx(
}
// tmpf1 = (float) ( NFFT / 2 + 1 ) / tmpf3;
- tmpf1 = BASOP_Util_Divide3232_Scale_cadence( add( shr( NFFT, 1 ), 1 ), tmpf3, &tmpf1_e );
+ tmpf1 = BASOP_Util_Divide3232_Scale_newton( add( shr( NFFT, 1 ), 1 ), tmpf3, &tmpf1_e );
tmpf1_e = add( tmpf1_e, sub( 31, tmpf3_e ) );
FOR( i = 0; i < NFFT; i++ )
{
@@ -1995,7 +1995,7 @@ void stereo_dft_enc_compute_itd_fx(
L_temp = L_abs( BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ) );
L_temp2 = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, sum_nrg_R, sum_nrg_R_e, &L_temp2_e );
L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, 1407374883, -16, &L_temp2_e );
- es_em = BASOP_Util_Divide3232_Scale_cadence( L_temp, L_temp2, &es_em_e );
+ es_em = BASOP_Util_Divide3232_Scale_newton( L_temp, L_temp2, &es_em_e );
es_em_e = add( es_em_e, sub( L_temp_e, L_temp2_e ) );
hStereoClassif->unclr_fv_fx[E_es_em] = L_shr_r( es_em, sub( 16, es_em_e ) ); // Q15
@@ -2027,7 +2027,7 @@ void stereo_dft_enc_compute_itd_fx(
move16();
}
L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, 1407374883, -16, &L_temp2_e );
- d_prodL_prodR = BASOP_Util_Divide3232_Scale_cadence( L_temp, L_temp2, &d_prodL_prodR_e );
+ d_prodL_prodR = BASOP_Util_Divide3232_Scale_newton( L_temp, L_temp2, &d_prodL_prodR_e );
d_prodL_prodR_e = add( d_prodL_prodR_e, sub( L_temp_e, L_temp2_e ) );
d_prodL_prodR = BASOP_Util_Add_Mant32Exp( d_prodL_prodR, d_prodL_prodR_e, MAX_32, 0, &d_prodL_prodR_e );
d_prodL_prodR = BASOP_Util_Loge( d_prodL_prodR, d_prodL_prodR_e ); // Q25
@@ -2046,7 +2046,7 @@ void stereo_dft_enc_compute_itd_fx(
// xcorr_abs[i] = logf( xcorr_abs[i] / ( sum_nrg_L + sum_nrg_R + 1e-5f ) + 1e-5f );
L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, sum_nrg_R, sum_nrg_R_e, &L_temp_e );
L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, 1407374883, -16, &L_temp_e );
- L_temp2 = BASOP_Util_Divide3232_Scale_cadence( xcorr_abs[i], L_temp, &L_temp2_e );
+ L_temp2 = BASOP_Util_Divide3232_Scale_newton( xcorr_abs[i], L_temp, &L_temp2_e );
L_temp2_e = add( L_temp2_e, sub( xcorr_abs_e[i], L_temp_e ) );
L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, 1407374883, -16, &L_temp2_e );
xcorr_abs[i] = BASOP_Util_Loge( L_temp2, L_temp2_e );
@@ -2112,12 +2112,12 @@ void stereo_dft_enc_compute_itd_fx(
move16();
// hStereoClassif->ave_ener_L = sum_nrg_L / ( NFFT_mid * NFFT_mid );
- hStereoClassif->ave_ener_L_fx = BASOP_Util_Divide3232_Scale_cadence( sum_nrg_L, L_mult0( NFFT_mid, NFFT_mid ), &hStereoClassif->ave_ener_L_fx_e );
+ hStereoClassif->ave_ener_L_fx = BASOP_Util_Divide3232_Scale_newton( sum_nrg_L, L_mult0( NFFT_mid, NFFT_mid ), &hStereoClassif->ave_ener_L_fx_e );
move32();
hStereoClassif->ave_ener_L_fx_e = add( hStereoClassif->ave_ener_L_fx_e, sub( sum_nrg_L_e, 31 ) );
move16();
// hStereoClassif->ave_ener_R = sum_nrg_R / ( NFFT_mid * NFFT_mid );
- hStereoClassif->ave_ener_R_fx = BASOP_Util_Divide3232_Scale_cadence( sum_nrg_R, L_mult0( NFFT_mid, NFFT_mid ), &hStereoClassif->ave_ener_R_fx_e );
+ hStereoClassif->ave_ener_R_fx = BASOP_Util_Divide3232_Scale_newton( sum_nrg_R, L_mult0( NFFT_mid, NFFT_mid ), &hStereoClassif->ave_ener_R_fx_e );
move32();
hStereoClassif->ave_ener_R_fx_e = add( hStereoClassif->ave_ener_R_fx_e, sub( sum_nrg_R_e, 31 ) );
move16();
@@ -2145,7 +2145,7 @@ void stereo_dft_enc_compute_itd_fx(
{
// thres *= 1.0f + 1.f * min( 1.f, max( 0.f, ( -1.0f * sfm_L + 0.5f ) / ( 0.5f - 0.2f ) ) );
L_temp = BASOP_Util_Add_Mant32Exp( L_negate( sfm_L ), 0, ONE_IN_Q30, 0, &L_temp_e );
- L_temp2 = BASOP_Util_Divide3232_Scale_cadence( L_temp, 644245094, &L_temp2_e );
+ L_temp2 = BASOP_Util_Divide3232_Scale_newton( L_temp, 644245094, &L_temp2_e );
L_temp2_e = add( L_temp2_e, L_temp_e - 0 );
L_temp2 = L_shl_sat( L_temp2, sub( L_temp2_e, 1 ) ); // Q30
L_temp2_e = 1;
@@ -2363,7 +2363,7 @@ void stereo_dft_enc_compute_itd_fx(
L_temp = Mpy_32_32( den_cor_cur, den_cor_prev );
L_temp_e = add( den_cor_cur_e, den_cor_prev_e );
L_temp = Sqrt32( L_temp, &L_temp_e );
- cor_lb[i] = BASOP_Util_Divide3232_Scale_cadence( num_cor, L_temp, &cor_lb_e[i] );
+ cor_lb[i] = BASOP_Util_Divide3232_Scale_newton( num_cor, L_temp, &cor_lb_e[i] );
move32();
cor_lb_e[i] = add( cor_lb_e[i], sub( num_cor_e, L_temp_e ) );
move16();
@@ -2375,7 +2375,7 @@ void stereo_dft_enc_compute_itd_fx(
// par_L[i] = xcorr_max / ( sum_nrg_L_tmp + FLT_MIN );
IF( xcorr_max )
{
- par_L[i] = BASOP_Util_Divide3232_Scale_cadence( xcorr_max, sum_nrg_L_tmp, &par_L_e[i] );
+ par_L[i] = BASOP_Util_Divide3232_Scale_newton( xcorr_max, sum_nrg_L_tmp, &par_L_e[i] );
move32();
par_L_e[i] = add( par_L_e[i], sub( xcorr_max_e, sum_nrg_L_tmp_e ) );
move16();
diff --git a/lib_enc/ivas_stereo_dft_td_itd_fx.c b/lib_enc/ivas_stereo_dft_td_itd_fx.c
index c457faa4f97bd09da06ee2738486bdab5e8aff4c..309ec3377d8505c7f3cfd058bd0dd3e764637d83 100644
--- a/lib_enc/ivas_stereo_dft_td_itd_fx.c
+++ b/lib_enc/ivas_stereo_dft_td_itd_fx.c
@@ -499,8 +499,8 @@ void stereo_td_itd_fx(
Copy( shift_input, sts[ch]->input_fx, input_frame );
sts[ch]->q_inp = q_new_shift;
move16();
- /*sts[ch]->q_old_inp = q_new_shift;
- move16();*/
+ Copy_Scale_sig_16_32_no_sat( sts[ch]->input_fx, sts[ch]->input32_fx, input_frame, sub( sts[ch]->q_inp32, sts[ch]->q_inp ) );
+
IF( EQ_16( sts[0]->element_mode, IVAS_CPE_DFT ) )
{
// here shift_mem has same as input_mem, no need to update q //
@@ -512,6 +512,7 @@ void stereo_td_itd_fx(
sts[ch]->q_old_inp = q_new_shift;
move16();
Scale_sig( mdct_mem[ch], input_frame, sub( sts[ch]->q_inp, q_shift_mem ) ); // Q(sts[ch]->q_inp)
+ Copy_Scale_sig_16_32_no_sat( shift_mem, sts[ch]->old_input_signal32_fx, input_frame, sub( sts[ch]->q_old_inp32, q_shift_mem ) );
}
}
}
@@ -531,7 +532,7 @@ void stereo_td_itd_mdct_stereo_fx(
const Word16 input_frame /* i : frame length */
)
{
- Word16 i, n, q_com;
+ Word16 i;
Word32 bin_nrgL_fx[STEREO_DFT_N_32k_ENC];
Word16 bin_nrgL_e[STEREO_DFT_N_32k_ENC];
Word32 bin_nrgR_fx[STEREO_DFT_N_32k_ENC];
@@ -575,37 +576,6 @@ void stereo_td_itd_mdct_stereo_fx(
/*call ITD function*/
stereo_dft_enc_compute_itd_fx( hCPE, DFT_fx[0], DFT_tmp_e[0], DFT_fx[1], DFT_tmp_e[1], STEREO_DFT_OFFSET, input_frame, vad_flag_dtx, vad_hover_flag, bin_nrgL_fx, bin_nrgL_e, bin_nrgR_fx, bin_nrgR_e );
- q_com = MAX_16;
- move16();
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- q_com = s_min( q_com, add( norm_arr( hCPE->hCoreCoder[n]->input_fx, input_frame ), hCPE->hCoreCoder[n]->q_inp ) );
- q_com = s_min( q_com, add( norm_arr( hCPE->hCoreCoder[n]->old_input_signal_fx, input_frame ), hCPE->hCoreCoder[n]->q_old_inp ) );
- q_com = s_min( q_com, add( norm_arr( hCPE->input_mem_fx[n], hStereoMdct->hDft_ana->dft_ovl ), hCPE->q_input_mem[n] ) );
-
- if ( EQ_16( q_com, Q15 ) )
- {
- q_com = 0;
- move16();
- }
- }
-
- FOR( n = 0; n < CPE_CHANNELS; n++ )
- {
- scale_sig( hCPE->hCoreCoder[n]->input_fx, input_frame, sub( q_com, hCPE->hCoreCoder[n]->q_inp ) );
- hCPE->hCoreCoder[n]->q_inp = q_com;
- move16();
-
- scale_sig( hCPE->hCoreCoder[n]->old_input_signal_fx, input_frame, sub( q_com, hCPE->hCoreCoder[n]->q_old_inp ) );
- hCPE->hCoreCoder[n]->q_old_inp = q_com;
- move16();
-
- scale_sig( hCPE->input_mem_fx[n], hStereoMdct->hDft_ana->dft_ovl, sub( q_com, hCPE->q_input_mem[n] ) );
- hCPE->q_input_mem[n] = q_com;
- move16();
- }
-
/* Time Domain ITD compensation using extrapolation */
stereo_td_itd_fx( hStereoMdct->hItd, NULL, NULL, 1, hStereoMdct->hDft_ana->dft_ovl, hCPE->hCoreCoder, input_frame, hCPE->input_mem_fx, hCPE->q_input_mem );
}
diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c
index 625ff8ee90fc1f2eeeb5dc932c1312b3b861106f..8e960d71e66dd172e8a0026d71a59dee3ba17c71 100644
--- a/lib_enc/ivas_stereo_dmx_evs_fx.c
+++ b/lib_enc/ivas_stereo_dmx_evs_fx.c
@@ -98,32 +98,52 @@
#define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576
+#define STEREO_DMX_EVS_POC_RENORM_TH 33554432 // 65536 << 9
+#define STEREO_DMX_EVS_POC_RENORM_SHIFT 3
+
+#define STEREO_DMX_EVS_FAD_R 3
+#define STEREO_DMX_EVS_FAD_IR 10923 /* 1/3 in Q15 */
+#define STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 29491 // 0.9f
+#define STEREO_DMX_EVS_SGC_GR_S 32919 // 1.00461543f
+#define STEREO_DMX_EVS_SGC_GIR_S 32617 // 1/1.00461543f
+#define STEREO_DMX_EVS_SGC_GL 32391 // 0.9885f
+#define STEREO_DMX_EVS_SGC_GH 33148 // 1.0116f
+#define STEREO_DMX_EVS_SGC_LEGY_THRES_16 2.5E8
+#define STEREO_DMX_EVS_SGC_LEGY_THRES_32 3.E8
+#define STEREO_DMX_EVS_SGC_LEGY_THRES_48 5.E8
+#define STEREO_DMX_EVS_SGC_LEGY_THRES_E 22
+#define STEREO_DMX_EVS_SGC_GMAX 46340 // 1.4142f
+#define STEREO_DMX_EVS_SGC_GMIN 23170 // 0.7071f
+#define STEREO_DMX_EVS_IPD_ILD_THRES_Q29 1696512082 // 3.16f (5dB)
+#define STEREO_DMX_EVS_IPD_SF_THRES_Q31 107374182 // 0.05f
+
const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = {
- 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264,
- 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264,
- 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264,
- 2027355264, 2023718656, 2020082048, 2016445440, 2012808832, 2009172224, 2005535616, 2001899008, 1998262400, 1994625664,
- 1990989056, 1987352448, 1983715840, 1980079232, 1976442624, 1972806016, 1969169408, 1965532800, 1961896192, 1958259584,
- 1954622976, 1950986368, 1947349760, 1943713152, 1940076544, 1936439936, 1932803328, 1929166592, 1925529984, 1921893376,
- 1918256768, 1914620160, 1910983552, 1907346944, 1903710336, 1900073728, 1896437120, 1892800512, 1889163904, 1885527296,
- 1881890688, 1878254080, 1874617344, 1870980864, 1867344128, 1863707520, 1860070912, 1856434304, 1852797696, 1849161088,
- 1845524480, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872,
- 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872
+ 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520,
+ 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520,
+ 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520,
+ 2027355520, 2023718912, 2020082304, 2016445696, 2012809088, 2009172480, 2005535872, 2001899264, 1998262656, 1994625920,
+ 1990989312, 1987352704, 1983716096, 1980079488, 1976442880, 1972806272, 1969169664, 1965533056, 1961896448, 1958259840,
+ 1954623232, 1950986624, 1947350016, 1943713408, 1940076800, 1936440192, 1932803584, 1929166848, 1925530240, 1921893632,
+ 1918257024, 1914620416, 1910983808, 1907347200, 1903710592, 1900073984, 1896437376, 1892800768, 1889164160, 1885527552,
+ 1881890944, 1878254336, 1874617600, 1870981120, 1867344384, 1863707776, 1860071168, 1856434560, 1852797952, 1849161344,
+ 1845524736, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128,
+ 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128
};
+
/*-----------------------------------------------------------------------*
* Local function prototypes
*-----------------------------------------------------------------------*/
@@ -202,6 +222,11 @@ static Word32 find_poc_peak_fx(
const Word16 input_frame, /* i : input frame length per channel */
const Word32 ratio_fixed /* i : adapting ratio */
);
+static Word32 spectral_flatness_fx(
+ const Word32 *sig_fx, /* i : input signal (mantissa) */
+ const Word16 *sig_fx_e, /* i : input signal (exponent) - can be NULL */
+ const Word16 sig_length /* i : input signal length */
+);
/*-------------------------------------------------------------------*
* estimate_itd_wnd_fft()
*
@@ -307,7 +332,7 @@ static void calc_poc_fx(
Word16 cos_step, cos_max;
Word32 eps_cos, eps_sin, EPS;
- Word16 isd_cnt_h, isd_cnt_l, ild_cnt, n, freq_8k, freq_ipd_max, nsbd, input_frame_pha;
+ Word16 isd_cnt_h, isd_cnt_l, ild_cnt, n, freq_8k, freq_ipd_max, nsbd, input_frame_pha, pha_ipd_ild_chan2rephase;
Word32 Nr, Ni, Dr, Di, tPr, tPi, Pn, energy;
Word16 Nr_e, Ni_e, tPr_e, tPi_e, Pn_e, energy_e;
Word16 isd_rate, isd_rate_e;
@@ -412,6 +437,17 @@ static void calc_poc_fx(
Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) );
Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) );
+ IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
+ {
+ Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ }
+
specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
move32();
specPOi[i] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e
@@ -424,6 +460,17 @@ static void calc_poc_fx(
Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) );
Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) );
+ IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
+ {
+ Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ }
+
specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
move32();
specPOi[j] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e
@@ -444,6 +491,18 @@ static void calc_poc_fx(
Li = L_add( L_sub( specLi[i], Mpy_32_32_r( specRr[i], eps_sin ) ), Mpy_32_32_r( specRi[i], eps_cos ) );
Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) );
Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) );
+
+ IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
+ {
+ Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ }
+
specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
move32();
specPOi[i] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e
@@ -454,6 +513,18 @@ static void calc_poc_fx(
Li = L_sub( L_sub( specLi[j], Mpy_32_32_r( specRr[j], eps_sin ) ), Mpy_32_32_r( specRi[j], eps_cos ) );
Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) );
Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) );
+
+ IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
+ ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
+ {
+ Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
+ }
+
specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
move32();
specPOi[j] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e
@@ -567,14 +638,6 @@ static void calc_poc_fx(
specPOr[n0] = imult3216( Mpy_32_32_r( wnd[i * step + bias], gamma ), sign_fx( Mpy_32_32_r( specLr[n0], specRr[n0] ) ) ); // Q31
move32();
-
- hPHA->init_frmCntr = sub( hPHA->init_frmCntr, 1 );
- move16();
- if ( hPHA->init_frmCntr < 0 )
- {
- hPHA->init_frmCntr = 0;
- move16();
- }
freq_8k = L_FRAME16k / 2;
move16();
// freq_ipd_max = (int16_t) ( freq_8k * 5000.0f / ( 8000.0f * STEREO_DMX_EVS_SUBBAND_SIZE ) );
@@ -799,38 +862,41 @@ static void calc_poc_fx(
tPr = L_shl_sat( Mpy_32_32_r( tPr, Pn ), add( tPr_e, Pn_e ) ); // Q31
tPi = L_shl_sat( Mpy_32_32_r( tPi, Pn ), add( tPi_e, Pn_e ) ); // Q31
- IF( hPHA->init_frmCntr == 0 )
- {
- Pr[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pr[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPr ) );
- move32();
- Pi[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pi[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPi ) );
- move32();
-
- // Pn = (float) inv_sqrt( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON );
- Pn = L_add( L_shr( Mpy_32_32_r( Pr[n], Pr[n] ), 1 ), L_shr( Mpy_32_32_r( Pi[n], Pi[n] ), 1 ) );
- Pn = BASOP_Util_Add_Mant32Exp( Pn, 1, EPSILON_FX_M, EPSILON_FX_E, &Pn_e );
- Pn = Isqrt_lc( Pn, &Pn_e );
+ Pr[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pr[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPr ) );
+ move32();
+ Pi[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pi[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPi ) );
+ move32();
- Pr[n] = L_shl_sat( Mpy_32_32_r( Pr[n], Pn ), Pn_e ); // Q31
- move32();
- Pi[n] = L_shl_sat( Mpy_32_32_r( Pi[n], Pn ), Pn_e ); // Q31
- move32();
- }
- ELSE
- {
- Pr[n] = tPr;
- move32();
- Pi[n] = tPi;
- move32();
- }
+ // Pn = (float) inv_sqrt( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON );
+ Pn = L_add( L_shr( Mpy_32_32_r( Pr[n], Pr[n] ), 1 ), L_shr( Mpy_32_32_r( Pi[n], Pi[n] ), 1 ) );
+ Pn = BASOP_Util_Add_Mant32Exp( Pn, 1, EPSILON_FX_M, EPSILON_FX_E, &Pn_e );
+ Pn = Isqrt_lc( Pn, &Pn_e );
+ Pr[n] = L_shl_sat( Mpy_32_32_r( Pr[n], Pn ), Pn_e ); // Q31
+ move32();
+ Pi[n] = L_shl_sat( Mpy_32_32_r( Pi[n], Pn ), Pn_e ); // Q31
+ move32();
// Pr[n] = ( Pr[n] > 1.0f ) ? 1.0f : Pr[n];
// Pr[n] = ( Pr[n] < -1.0f ) ? -1.0f : Pr[n];
}
+
+ /* Computes Spectral flatness on one channel */
+ tmp1 = spectral_flatness_fx( &tEl[1], &tEl_e[1], nsbd - 1 );
+ IF( LT_32( tmp1, STEREO_DMX_EVS_IPD_SF_THRES_Q31 ) )
+ {
+ hPHA->pha_ipd_chanswitch_allowed = 0;
+ move16();
+ }
+ ELSE
+ {
+ hPHA->pha_ipd_chanswitch_allowed = 1;
+ move16();
+ }
+
// ICCr = (float) sqrt( ( Nr * Nr + Ni * Ni ) / ( eneL * eneR + EPSILON ) );
L_tmp1 = BASOP_Util_Add_Mant32Exp( Mpy_32_32_r( Nr, Nr ), shl( Nr_e, 1 ), Mpy_32_32_r( Ni, Ni ), shl( Ni_e, 1 ), &L_tmp1_e );
L_tmp2 = BASOP_Util_Add_Mant32Exp( Mpy_32_32_r( eneL, eneR ), add( eneL_e, eneR_e ), EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e );
- ICCr = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp_e );
+ ICCr = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp_e );
L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, L_tmp2_e ) );
ICCr = Sqrt32( ICCr, &L_tmp_e );
// Saturation to handle values close to 1.0f
@@ -840,11 +906,35 @@ static void calc_poc_fx(
hPHA->iccr_s_fx = L_add( Mpy_32_32_r( STEREO_DMX_EVS_ICCR_FORGETTING_Q31, hPHA->iccr_s_fx ), Mpy_32_32_r( MAX_32 - STEREO_DMX_EVS_ICCR_FORGETTING_Q31, ICCr ) ); // Q31
move32();
+
IF( EQ_32( hPHA->curr_pha, STEREO_DMX_EVS_PHA_IPD ) )
{
- hPHA->p_curr_taps_fx[0] = NULL;
- hPHA->p_curr_taps_fx[1] = hPHA->curr_taps_fx[1];
+ hPHA->force_poc = FALSE;
+ hPHA->proc_pha = STEREO_DMX_EVS_PHA_IPD;
+ move16();
+ move32();
+ }
+ ELSE
+ {
+ test();
+ test();
+ test();
+ IF( LT_32( hPHA->iccr_s_fx, STEREO_DMX_EVS_ICCR_HYST_L_Q31 ) || ( LT_32( hPHA->iccr_s_fx, STEREO_DMX_EVS_ICCR_HYST_H_Q31 ) && EQ_32( hPHA->proc_pha, STEREO_DMX_EVS_PHA_IPD2 ) && EQ_16( hPHA->force_poc, FALSE ) ) )
+ {
+ hPHA->force_poc = FALSE;
+ hPHA->proc_pha = STEREO_DMX_EVS_PHA_IPD2;
+ move16();
+ move32();
+ }
+ ELSE
+ {
+ hPHA->force_poc = TRUE;
+ move16();
+ }
+ }
+ IF( hPHA->proc_pha == STEREO_DMX_EVS_PHA_IPD )
+ {
rfft_pha_buf[0] = ONE_IN_Q22;
move32();
rfft_pha_buf[1] = ONE_IN_Q22;
@@ -891,122 +981,238 @@ static void calc_poc_fx(
}
rfft_fx( rfft_pha_buf, hPHA->rfft_ipd_coef_fx, input_frame_pha, +1 );
- // mvr2r( rfft_pha_buf, hPHA->p_curr_taps[1], hPHA->pha_len );
- Copy_Scale_sig32( rfft_pha_buf, hPHA->p_curr_taps_fx[1], hPHA->pha_len, 9 ); // Q22->Q31
- }
- ELSE
- {
- test();
- test();
- IF( LT_32( hPHA->iccr_s_fx, STEREO_DMX_EVS_ICCR_HYST_L_Q31 ) || ( LT_32( hPHA->iccr_s_fx, STEREO_DMX_EVS_ICCR_HYST_H_Q31 ) && ( hPHA->p_curr_taps_fx[0] != NULL ) ) )
+
+ /* Choose best channel to phase align */
+ /* Channel selection based on ILD */
+ IF( BASOP_Util_Cmp_Mant32Exp( hPHA->trns_aux_energy_fx[0], hPHA->trns_aux_energy_fx_e[0], Mpy_32_32_r( STEREO_DMX_EVS_IPD_ILD_THRES_Q29, hPHA->trns_aux_energy_fx[1] ), add( 2, hPHA->trns_aux_energy_fx_e[1] ) ) > 0 )
+ {
+ pha_ipd_ild_chan2rephase = 1;
+ }
+ ELSE IF( BASOP_Util_Cmp_Mant32Exp( hPHA->trns_aux_energy_fx[1], hPHA->trns_aux_energy_fx_e[1], Mpy_32_32_r( STEREO_DMX_EVS_IPD_ILD_THRES_Q29, hPHA->trns_aux_energy_fx[0] ), add( 2, hPHA->trns_aux_energy_fx_e[0] ) ) > 0 )
+ {
+ pha_ipd_ild_chan2rephase = 0;
+ }
+ ELSE
{
- /* IPDn */
+ pha_ipd_ild_chan2rephase = -1;
+ }
+ move16();
- set32_fx( &( Pr[freq_ipd_max] ), MAX_32, sub( nsbd, freq_ipd_max ) );
- set32_fx( &( Pi[freq_ipd_max] ), 0, sub( nsbd, freq_ipd_max ) );
+ /* Channel selection based on spikyness of R2L/L2R impulse responses */
+ tmp1 = spectral_flatness_fx( rfft_pha_buf, NULL, hPHA->pha_len );
+ rfft_pha_buf[sub( input_frame_pha, hPHA->pha_len )] = rfft_pha_buf[0];
+ move32();
+ tmp2 = spectral_flatness_fx( &rfft_pha_buf[sub( input_frame_pha, hPHA->pha_len )], NULL, hPHA->pha_len );
- FOR( n = 0; n < CPE_CHANNELS; n++ )
+ // /* Combined ILD/SF channel selection with tempo */
+ IF( ( GT_32( tmp1, tmp2 ) && ( EQ_16( pha_ipd_ild_chan2rephase, -1 ) ) ) || EQ_16( pha_ipd_ild_chan2rephase, 0 ) ) /* L => R */
+ {
+ IF( EQ_16( hPHA->pha_ipd_previouschan2rephase, 0 ) )
{
- hPHA->p_curr_taps_fx[n] = hPHA->curr_taps_fx[n];
+ hPHA->pha_ipd_chan_cnt = add( hPHA->pha_ipd_chan_cnt, 1 );
+ IF( GE_32( hPHA->pha_ipd_chan_cnt, hPHA->pha_ipd_chan_thresh ) )
+ {
+ /* Avoid channel switch in case of too harmonic signals */
+ IF( EQ_16( hPHA->pha_ipd_chanswitch_allowed, 1 ) )
+ {
+ IF( NE_16( hPHA->pha_ipd_chan2rephase, 0 ) )
+ {
+ hPHA->pha_ipd_chanswitch = 1;
+ move16();
+ }
+ ELSE
+ {
+ hPHA->pha_ipd_chanswitch = 0;
+ move16();
+ }
+ hPHA->pha_ipd_chan2rephase = 0;
+ move16();
+ }
+ }
}
-
- rfft_pha_buf[0] = ONE_IN_Q22;
- move32();
- rfft_pha_buf[1] = ONE_IN_Q22;
- move32();
-
- ild_cnt = 0;
- move16();
- isd_rate = BASOP_Util_Divide1616_Scale( isd_cnt_l, freq_8k, &isd_rate_e );
- // Saturation to handle values close to 1.0f
- isd_rate = shl_sat( isd_rate, isd_rate_e ); // Q15
- FOR( i = 1; i < nsbd; i++ )
+ ELSE
{
- // rfft_pha_buf[i * 2] = (float) sqrt( ( 1.0f + Pr[i] ) / 2.0f );
- L_tmp = L_add( ONE_IN_Q30, L_shr( Pr[i], 1 ) );
- L_tmp_e = 0;
+ hPHA->pha_ipd_previouschan2rephase = 0;
+ hPHA->pha_ipd_chan_cnt = 1;
+ hPHA->pha_ipd_chanswitch = 0;
move16();
- L_tmp = Sqrt32( L_tmp, &L_tmp_e );
- rfft_pha_buf[i * 2] = L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ); // Q22
- move32();
- // rfft_pha_buf[i * 2 + 1] = (float) sqrt( ( 1.0f - Pr[i] ) / 2.0f ) * sign( Pi[i] );
- L_tmp = L_sub_sat( ONE_IN_Q30, L_shr( Pr[i], 1 ) ); // saturating as Pr does not exceed 1.0f
- L_tmp_e = 0;
move16();
- L_tmp = Sqrt32( L_tmp, &L_tmp_e );
- rfft_pha_buf[i * 2 + 1] = imult3216( L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ), sign_fx( Pi[i] ) ); // Q22
- move32();
- IF( GT_16( isd_rate, STEREO_DMX_EVS_ISD_DIST_THRES_IPD_Q15 ) )
- {
- // rfft_pha_buf[i * 2 + 1] = (float) sqrt( ( 1.0f - rfft_pha_buf[i * 2] ) / 2.0f ) * sign( rfft_pha_buf[i * 2 + 1] );
- L_tmp = L_sub( ONE_IN_Q21, L_shr( rfft_pha_buf[i * 2], 1 ) );
- L_tmp_e = 9;
- move16();
- L_tmp = Sqrt32( L_tmp, &L_tmp_e );
- rfft_pha_buf[i * 2 + 1] = imult3216( L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ), sign_fx( rfft_pha_buf[i * 2 + 1] ) ); // Q22
- move32();
- // rfft_pha_buf[i * 2] = (float) sqrt( ( 1.0f + rfft_pha_buf[i * 2] ) / 2.0f );
- L_tmp = L_add( ONE_IN_Q21, L_shr( rfft_pha_buf[i * 2], 1 ) ); // Q22
- L_tmp_e = 9;
- move16();
- L_tmp = Sqrt32( L_tmp, &L_tmp_e );
- rfft_pha_buf[i * 2] = L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ); // Q22
- move32();
- }
+ move16();
+ }
+ }
+ ELSE
+ {
+ IF( EQ_16( hPHA->pha_ipd_previouschan2rephase, 1 ) )
+ {
+ hPHA->pha_ipd_chan_cnt = add( hPHA->pha_ipd_chan_cnt, 1 );
- // if ( ( tEr[i] > STEREO_DMX_EVS_LR_EGY * tEl[i] ) || ( tEl[i] > STEREO_DMX_EVS_LR_EGY * tEr[i] ) )
- test();
- IF( BASOP_Util_Cmp_Mant32Exp( tEr[i], tEr_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEl[i] ), add( 4, tEl_e[i] ) ) > 0 || BASOP_Util_Cmp_Mant32Exp( tEl[i], tEl_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEr[i] ), add( 4, tEr_e[i] ) ) > 0 )
+ IF( GE_16( hPHA->pha_ipd_chan_cnt, hPHA->pha_ipd_chan_thresh ) )
{
- ild_cnt = add( ild_cnt, 1 );
- tEr[i] = MAX_32;
- move32();
- tEr_e[i] = 0;
- move16();
- }
- ELSE
- {
- tEr[i] = MIN_32;
- move32();
- tEr_e[i] = 0;
+ /* Avoid channel switch in case of too harmonic signals */
+ IF( EQ_16( hPHA->pha_ipd_chanswitch_allowed, 1 ) )
+ {
+ IF( NE_16( hPHA->pha_ipd_chan2rephase, 1 ) )
+ {
+ hPHA->pha_ipd_chanswitch = 1;
+ move16();
+ }
+ ELSE
+ {
+ hPHA->pha_ipd_chanswitch = 0;
+ move16();
+ }
+ hPHA->pha_ipd_chan2rephase = 1;
+ move16();
+ }
+ hPHA->pha_ipd_chan_cnt = hPHA->pha_ipd_chan_thresh;
move16();
}
}
- IF( GT_16( ild_cnt, mult_r( nsbd, STEREO_DMX_EVS_ILD_PRC_Q15 ) ) )
+ ELSE
+ {
+ hPHA->pha_ipd_previouschan2rephase = 1;
+ hPHA->pha_ipd_chan_cnt = 1;
+ hPHA->pha_ipd_chanswitch = 0;
+ move16();
+ move16();
+ move16();
+ }
+ }
+
+ IF( EQ_16( hPHA->pha_ipd_chanswitch, 0 ) )
+ {
+ IF( EQ_16( hPHA->pha_ipd_chan2rephase, 0 ) )
{
- FOR( i = 1; i < nsbd; i++ )
+ hPHA->p_curr_taps_fx[1] = NULL;
+ hPHA->p_curr_taps_fx[0] = hPHA->curr_taps_fx[0];
+ p_curr_taps = hPHA->p_curr_taps_fx[0];
+
+ L_tmp = L_shl( 1, 8 );
+ p_curr_taps[0] = W_extract_l( W_mult_32_32( L_tmp, rfft_pha_buf[0] ) ); // Q22 -> Q31
+ j = sub( input_frame_pha, 1 );
+ FOR( i = 1; i < hPHA->pha_len; i++ )
{
- IF( tEr[i] > 0 )
- {
- rfft_pha_buf[i * 2] = ONE_IN_Q22;
- move32();
- rfft_pha_buf[i * 2 + 1] = 0;
- move32();
- }
+ p_curr_taps[i] = W_extract_l( W_mult_32_32( L_tmp, rfft_pha_buf[j] ) ); // Q22 -> Q31
+ j = sub( j, 1 );
}
}
+ ELSE
+ {
+ hPHA->p_curr_taps_fx[0] = NULL;
+ hPHA->p_curr_taps_fx[1] = hPHA->curr_taps_fx[1];
+ Copy_Scale_sig32( rfft_pha_buf, hPHA->p_curr_taps_fx[1], hPHA->pha_len, 9 ); // Q22->Q31
+ }
+ }
+ }
+
+ IF( EQ_16( hPHA->pha_ipd_chanswitch, 1 ) )
+ {
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ hPHA->p_curr_taps_fx[n] = NULL;
+ }
+ }
+ ELSE IF( EQ_32( hPHA->proc_pha, STEREO_DMX_EVS_PHA_IPD2 ) )
+ {
+ /* IPDn */
- rfft_fx( rfft_pha_buf, hPHA->rfft_ipd_coef_fx, input_frame_pha, +1 );
- // mvr2r( rfft_pha_buf, hPHA->p_curr_taps[1], hPHA->pha_len );
- Copy_Scale_sig32( rfft_pha_buf, hPHA->p_curr_taps_fx[1], hPHA->pha_len, 9 ); // Q22->Q31
+ set32_fx( &( Pr[freq_ipd_max] ), MAX_32, sub( nsbd, freq_ipd_max ) );
+ set32_fx( &( Pi[freq_ipd_max] ), 0, sub( nsbd, freq_ipd_max ) );
- /* PHA L2R */
- p_curr_taps = hPHA->p_curr_taps_fx[0];
- p_curr_taps[0] = L_shl( rfft_pha_buf[0], 9 ); // Q22->Q31
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
+ {
+ hPHA->p_curr_taps_fx[n] = hPHA->curr_taps_fx[n];
+ }
+
+ rfft_pha_buf[0] = ONE_IN_Q22;
+ move32();
+ rfft_pha_buf[1] = ONE_IN_Q22;
+ move32();
+
+ ild_cnt = 0;
+ move16();
+ isd_rate = BASOP_Util_Divide1616_Scale( isd_cnt_l, freq_8k, &isd_rate_e );
+ // Saturation to handle values close to 1.0f
+ isd_rate = shl_sat( isd_rate, isd_rate_e ); // Q15
+ FOR( i = 1; i < nsbd; i++ )
+ {
+ // rfft_pha_buf[i * 2] = (float) sqrt( ( 1.0f + Pr[i] ) / 2.0f );
+ L_tmp = L_add( ONE_IN_Q30, L_shr( Pr[i], 1 ) );
+ L_tmp_e = 0;
+ move16();
+ L_tmp = Sqrt32( L_tmp, &L_tmp_e );
+ rfft_pha_buf[i * 2] = L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ); // Q22
+ move32();
+ // rfft_pha_buf[i * 2 + 1] = (float) sqrt( ( 1.0f - Pr[i] ) / 2.0f ) * sign( Pi[i] );
+ L_tmp = L_sub_sat( ONE_IN_Q30, L_shr( Pr[i], 1 ) ); // saturating as Pr does not exceed 1.0f
+ L_tmp_e = 0;
+ move16();
+ L_tmp = Sqrt32( L_tmp, &L_tmp_e );
+ rfft_pha_buf[i * 2 + 1] = imult3216( L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ), sign_fx( Pi[i] ) ); // Q22
move32();
- FOR( i = 1; i < hPHA->pha_len; i++ )
+ IF( GT_16( isd_rate, STEREO_DMX_EVS_ISD_DIST_THRES_IPD_Q15 ) )
{
- p_curr_taps[i] = L_shl( rfft_pha_buf[input_frame_pha - i], 9 ); // Q22->Q31
+ // rfft_pha_buf[i * 2 + 1] = (float) sqrt( ( 1.0f - rfft_pha_buf[i * 2] ) / 2.0f ) * sign( rfft_pha_buf[i * 2 + 1] );
+ L_tmp = L_sub( ONE_IN_Q21, L_shr( rfft_pha_buf[i * 2], 1 ) );
+ L_tmp_e = 9;
+ move16();
+ L_tmp = Sqrt32( L_tmp, &L_tmp_e );
+ rfft_pha_buf[i * 2 + 1] = imult3216( L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ), sign_fx( rfft_pha_buf[i * 2 + 1] ) ); // Q22
+ move32();
+ // rfft_pha_buf[i * 2] = (float) sqrt( ( 1.0f + rfft_pha_buf[i * 2] ) / 2.0f );
+ L_tmp = L_add( ONE_IN_Q21, L_shr( rfft_pha_buf[i * 2], 1 ) ); // Q22
+ L_tmp_e = 9;
+ move16();
+ L_tmp = Sqrt32( L_tmp, &L_tmp_e );
+ rfft_pha_buf[i * 2] = L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ); // Q22
move32();
}
+
+ // if ( ( tEr[i] > STEREO_DMX_EVS_LR_EGY * tEl[i] ) || ( tEl[i] > STEREO_DMX_EVS_LR_EGY * tEr[i] ) )
+ test();
+ IF( BASOP_Util_Cmp_Mant32Exp( tEr[i], tEr_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEl[i] ), add( 4, tEl_e[i] ) ) > 0 || BASOP_Util_Cmp_Mant32Exp( tEl[i], tEl_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEr[i] ), add( 4, tEr_e[i] ) ) > 0 )
+ {
+ ild_cnt = add( ild_cnt, 1 );
+ tEr[i] = MAX_32;
+ move32();
+ tEr_e[i] = 0;
+ move16();
+ }
+ ELSE
+ {
+ tEr[i] = MIN_32;
+ move32();
+ tEr_e[i] = 0;
+ move16();
+ }
}
- ELSE
+ IF( GT_16( ild_cnt, mult_r( nsbd, STEREO_DMX_EVS_ILD_PRC_Q15 ) ) )
{
- FOR( n = 0; n < CPE_CHANNELS; n++ )
+ FOR( i = 1; i < nsbd; i++ )
{
- hPHA->p_curr_taps_fx[n] = NULL;
+ IF( tEr[i] > 0 )
+ {
+ rfft_pha_buf[i * 2] = ONE_IN_Q22;
+ move32();
+ rfft_pha_buf[i * 2 + 1] = 0;
+ move32();
+ }
}
}
+
+ rfft_fx( rfft_pha_buf, hPHA->rfft_ipd_coef_fx, input_frame_pha, +1 );
+ // mvr2r( rfft_pha_buf, hPHA->p_curr_taps[1], hPHA->pha_len );
+ Copy_Scale_sig32( rfft_pha_buf, hPHA->p_curr_taps_fx[1], hPHA->pha_len, 9 ); // Q22->Q31
+
+ /* PHA L2R */
+ p_curr_taps = hPHA->p_curr_taps_fx[0];
+ p_curr_taps[0] = L_shl( rfft_pha_buf[0], 9 ); // Q22->Q31
+ move32();
+ FOR( i = 1; i < hPHA->pha_len; i++ )
+ {
+ p_curr_taps[i] = L_shl( rfft_pha_buf[input_frame_pha - i], 9 ); // Q22->Q31
+ move32();
+ }
}
FOR( n = 0; n < CPE_CHANNELS; n++ )
@@ -1039,7 +1245,6 @@ static void calc_poc_fx(
}
}
-
rfft_buf[0] = L_shr_r( specPOr[0], 10 ); // Q31->Q21
move32();
rfft_buf[1] = L_shr_r( specPOr[n0], 10 ); // Q31->Q21
@@ -1533,25 +1738,90 @@ static void weighted_ave_fx(
const Word32 wnd_fx[] /* i : window coef Q31 */
)
{
- Word16 i, len;
+
+ Word16 i, j, len, len2;
Word32 gain_tmp_fx = 0, gain_sub_fx;
move32();
- len = shr( input_frame, 4 );
+
+ len = shr( input_frame, 1 );
+ len2 = shr( input_frame, 2 );
gain_sub_fx = L_sub( gain_fx, old_gain_fx );
- FOR( i = 0; i < len; i++ )
+
+ FOR( i = 0; i < len2; i++ )
{
gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31
dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_tmp_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16
move32();
}
+ FOR( ; i < len; i++ )
+ {
+ j = add( i, 1 );
+ gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, L_sub( MAX_32, wnd_fx[sub( len, j )] ) ) ); // Q31
+ dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_tmp_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16
+ move32();
+ }
FOR( ; i < input_frame; i++ )
{
dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16
move32();
}
+
return;
}
+
+/*-------------------------------------------------------------------*
+ * spectral_flatness_fx()
+ *
+ * computes spectral flatness SF
+ * SF(x) = exp(mean_i(ln(x_i))) / mean_i(x_i)
+ *-------------------------------------------------------------------*/
+static Word32 spectral_flatness_fx(
+ const Word32 *sig_fx, /* i : input signal (mantissa) */
+ const Word16 *sig_fx_e, /* i : input signal (exponent) */
+ const Word16 sig_length /* i : input signal length */
+)
+{
+ Word32 L_geoMean, L_ariMean, L_tmp;
+ Word16 i, geoMean, ariMean, geoMean_e, ariMean_e, L_tmp_e, sf;
+
+ L_geoMean = 0;
+ geoMean_e = 0;
+ L_ariMean = 0;
+ ariMean_e = 0;
+
+ IF( sig_fx_e == NULL )
+ {
+ FOR( i = 0; i < sig_length; i++ )
+ {
+ L_tmp = BASOP_Util_Add_Mant32Exp( L_abs( sig_fx[i] ), 0, EPSILON_FX_M, EPSILON_FX_E, &L_tmp_e );
+ L_ariMean = BASOP_Util_Add_Mant32Exp( L_ariMean, ariMean_e, L_tmp, L_tmp_e, &ariMean_e );
+ L_geoMean = BASOP_Util_Add_Mant32Exp( L_geoMean, geoMean_e, BASOP_Util_Loge( L_tmp, L_tmp_e ), 6, &geoMean_e ); // +6 : compensate result of log /64
+ }
+ }
+ ELSE
+ {
+ FOR( i = 0; i < sig_length; i++ )
+ {
+ L_tmp = BASOP_Util_Add_Mant32Exp( L_abs( sig_fx[i] ), sig_fx_e[i], EPSILON_FX_M, EPSILON_FX_E, &L_tmp_e );
+ L_ariMean = BASOP_Util_Add_Mant32Exp( L_ariMean, ariMean_e, L_tmp, L_tmp_e, &ariMean_e );
+ L_geoMean = BASOP_Util_Add_Mant32Exp( L_geoMean, geoMean_e, BASOP_Util_Loge( L_tmp, L_tmp_e ), 6, &geoMean_e ); // +6 : compensate result of log /64
+ }
+ }
+
+ ariMean = BASOP_Util_Divide3216_Scale( L_ariMean, sig_length, &L_tmp_e );
+ ariMean_e = add( sub( ariMean_e, Q15 ), L_tmp_e ); // (Q16)-1 : compensate result of division
+
+ geoMean = BASOP_Util_Divide3216_Scale( L_geoMean, sig_length, &L_tmp_e );
+ geoMean_e = add( sub( geoMean_e, Q15 ), L_tmp_e ); // (Q16)-1 : compensate result of division
+ geoMean = extract_h( BASOP_Util_fPow( (Word32) 1459366444, (Word16) 2, L_deposit_h( geoMean ), geoMean_e, &geoMean_e ) ); /* e=2,718281828459045 */
+
+ sf = BASOP_Util_Divide1616_Scale( geoMean, ariMean, &L_tmp_e );
+ L_tmp_e = add( sub( geoMean_e, ariMean_e ), L_tmp_e );
+
+ return L_shl_sat( L_deposit_h( sf ), L_tmp_e );
+}
+
/*-------------------------------------------------------------------*
* calc_energy()
*
@@ -1633,6 +1903,42 @@ static void calc_energy_fx(
return;
}
+/*-------------------------------------------------------------------*
+ * calc_energy_sgc()
+ *
+ * calculate energy for switch gain control
+ *-------------------------------------------------------------------*/
+static void calc_energy_sgc(
+ const Word32 src[], /* i : input signal */
+ Word32 *energy, /* i/o : calculated energy (mantissa) */
+ Word16 *energy_e, /* i/o : calculated energy (exponent) */
+ const Word16 input_frame, /* i : input frame length */
+ const Word16 ratio /* i : adapting ratio */
+)
+{
+ Word16 i, l_tmp_e, l_energy_e;
+ Word32 l_energy;
+ Word64 w_tmp;
+
+ l_energy = 0;
+ l_energy_e = 0;
+ FOR( i = 0; i < input_frame; i++ )
+ {
+ w_tmp = W_mult0_32_32( src[i], src[i] );
+ l_tmp_e = W_norm( w_tmp );
+ IF( l_tmp_e != 0 )
+ {
+ w_tmp = W_shl( w_tmp, l_tmp_e );
+ }
+ l_energy = BASOP_Util_Add_Mant32Exp( l_energy, l_energy_e, W_round64_L( w_tmp ), sub( 32, l_tmp_e ), &l_energy_e ); // Q(2x26 - l_energy_e)
+ }
+
+ *energy = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( *energy, ratio ), *energy_e, Mpy_32_16_1( l_energy, sub( MAX_16, ratio ) ), l_energy_e, energy_e );
+ move32();
+
+ return;
+}
+
/*-------------------------------------------------------------------*
* adapt_gain()
*
@@ -1647,27 +1953,34 @@ static void adapt_gain_fx(
const Word32 wnd_fx[] /* i : window coef Q31 */
)
{
- Word16 i, len;
+
+ Word16 i, j, len, len2;
Word32 gain_tmp_fx, gain_sub_fx;
- len = shr( input_frame, 4 );
- // gain_sub = gain - old_gain;
- gain_sub_fx = L_sub( gain_fx, old_gain_fx ); // Q31
+ len = shr( input_frame, 1 );
+ len2 = shr( input_frame, 2 );
+ gain_sub_fx = L_sub( gain_fx, old_gain_fx );
- FOR( i = 0; i < len; i++ )
+ FOR( i = 0; i < len2; i++ )
{
- // gain_tmp = old_gain + gain_sub * wnd[i];
- gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 // dst[i] = src[i] * gain_tmp;
+ gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31
dst_fx[i] = Mpy_32_32( src_fx[i], gain_tmp_fx ); // Q16
move32();
}
+ FOR( ; i < len; i++ )
+ {
+ j = add( i, 1 );
+ gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, L_sub( MAX_32, wnd_fx[sub( len, j )] ) ) ); // Q31
+ dst_fx[i] = Mpy_32_32( src_fx[i], gain_tmp_fx ); // Q16
+ move32();
+ }
FOR( ; i < input_frame; i++ )
{
- // dst[i] = src[i] * gain;
dst_fx[i] = Mpy_32_32( src_fx[i], gain_fx ); // Q16
move32();
}
+
return;
}
@@ -1764,6 +2077,50 @@ static void create_M_signal_fx(
return;
}
+/*-------------------------------------------------------------------*
+ * apply_gain_sgc()
+ *
+ * Apply gain for switching
+ *-------------------------------------------------------------------*/
+
+static void apply_gain_sgc(
+ Word32 data[], /* i/o : input signal */
+ Word32 *gain, /* i : gain */
+ const Word16 input_frame /* i : input frame length */
+)
+{
+ Word16 n;
+ Word32 lr;
+ Word64 W_tmp;
+
+ IF( GT_32( *gain, STEREO_DMX_EVS_SGC_GH ) )
+ {
+ lr = STEREO_DMX_EVS_SGC_GIR_S;
+ move32();
+ }
+ ELSE IF( LT_32( *gain, STEREO_DMX_EVS_SGC_GL ) )
+ {
+ lr = STEREO_DMX_EVS_SGC_GR_S;
+ move32();
+ }
+ ELSE
+ {
+ return;
+ }
+
+ FOR( n = 0; n < input_frame; n++ )
+ {
+ W_tmp = W_mult_32_32( data[n], *gain );
+ W_tmp = W_shr( W_tmp, 16 );
+ data[n] = W_extract_l( W_tmp );
+ }
+
+ W_tmp = W_mult_32_32( *gain, lr );
+ *gain = W_shr( W_tmp, 16 );
+
+ return;
+}
+
/*-------------------------------------------------------------------*
* stereo_dmx_evs_enc()
*
@@ -1778,16 +2135,22 @@ void stereo_dmx_evs_enc_fx(
)
{
Word16 n;
- Word16 dmx_weight, corr; // Q15
+ Word16 dmx_weight, corr; // Q15
+
+ Word16 k, m, pha_len, fad_len, sbfad_len;
+
Word32 data_fx[CPE_CHANNELS][L_FRAME48k]; // Q16/Q11
- Word16 k, m, pha_len, fad_len;
Word32 mem_prev[STEREO_DMX_EVS_FAD_LEN_MAX], data_mem[STEREO_DMX_EVS_DATA_LEN_MAX]; // Q11
Word32 *p_data_mem, *p_prev_taps, *p_curr_taps, *fad_g, *p_data;
- Word32 dmx_poc_data[L_FRAME48k] /*Q11*/, dmx_pha_data[L_FRAME48k] /*Q11*/, *p_dmx_data, fx_tmp;
- Word16 fx_tmp_e;
- STEREO_DMX_EVS_PRC curr_prc;
- Word16 input_subframe, is_transient;
+
+ Word32 dmx_poc_data[L_FRAME48k] /*Q11*/, dmx_pha_data[L_FRAME48k] /*Q11*/, *p_dmx_data, fx_tmp, *p_dmx_data_fo;
+ Word16 n_fad_r, n_fad_g, m_fad_g, n_fad_cnt;
+
+ STEREO_DMX_EVS_PRC prev_prc;
+ STEREO_DMX_EVS_PHA_HANDLE hPHA;
+
+ Word16 input_subframe, is_transient, dmx_gain_sgc;
Word32 *p_sub_frame, subframe_energy[STEREO_DMX_EVS_NB_SBFRM];
Word16 subframe_energy_e[STEREO_DMX_EVS_NB_SBFRM];
@@ -1799,6 +2162,7 @@ void stereo_dmx_evs_enc_fx(
Word64 W_tmp;
Word16 W_tmp_q;
+ push_wmops( "stereo_dmx_evs_enc" );
if ( is_binaural )
{
/* use of is_binaural flag is to be considered */
@@ -1825,6 +2189,7 @@ void stereo_dmx_evs_enc_fx(
BREAK;
}
move16();
+ hPHA = hStereoDmxEVS->hPHA;
FOR( n = 0; n < input_frame; n++ )
{
@@ -1839,7 +2204,6 @@ void stereo_dmx_evs_enc_fx(
set32_fx( data_fx[1] + n_samples, 0, sub( input_frame, n_samples ) );
}
-
// input_subframe = n_samples / STEREO_DMX_EVS_NB_SBFRM;
IF( EQ_16( n_samples, L_FRAME16k ) )
{
@@ -1869,8 +2233,6 @@ void stereo_dmx_evs_enc_fx(
{
fx_tmp = 0;
move32();
- fx_tmp_e = 0;
- move16();
FOR( m = 0; m < STEREO_DMX_EVS_NB_SBFRM; m++ )
{
p_sub_frame = &( data_fx[k][m * input_subframe] );
@@ -1885,41 +2247,30 @@ void stereo_dmx_evs_enc_fx(
W_tmp_q = W_norm( W_tmp );
W_tmp = W_shl( W_tmp, W_tmp_q );
L_tmp1 = W_extract_h( W_tmp ); // Q(31-(30-W_tmp_q))
- L_tmp1_e = sub( 15 * 2, W_tmp_q );
+ L_tmp1_e = sub( 15 << 1, W_tmp_q );
subframe_energy[m] = BASOP_Util_Add_Mant32Exp( subframe_energy[m], subframe_energy_e[m], L_tmp1, L_tmp1_e, &subframe_energy_e[m] );
move32();
}
L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e );
- L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e );
+ L_tmp2 = BASOP_Util_Divide3232_Scale_newton( subframe_energy[m], L_tmp1, &L_tmp2_e );
L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) );
- // if ( subframe_energy[m] / ( hStereoDmxEVS->hPHA->trns_aux_energy[k] + EPSILON ) > hStereoDmxEVS->hPHA->crst_fctr )
- if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, hStereoDmxEVS->hPHA->crst_fctr_fx, 31 ) > 0 )
+ // if ( subframe_energy[m] / ( hPHA->trns_aux_energy[k] + EPSILON ) > hPHA->crst_fctr )
+ if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, hPHA->crst_fctr_fx, 31 ) > 0 )
{
is_transient = 1;
move16();
}
- IF( hStereoDmxEVS->hPHA->init_frmCntr == 0 )
- {
- // hStereoDmxEVS->hPHA->trns_aux_energy[k] = STEREO_DMX_EVS_TRNS_EGY_FORGETTING * hStereoDmxEVS->hPHA->trns_aux_energy[k] + ( 1.0f - STEREO_DMX_EVS_TRNS_EGY_FORGETTING ) * subframe_energy[m];
- hStereoDmxEVS->hPHA->trns_aux_energy_fx[k] = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ), hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], Mpy_32_16_1( subframe_energy[m], sub( MAX_16, STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ) ), subframe_energy_e[m], &hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k] );
- move32();
- }
- ELSE
- {
- // hStereoDmxEVS->hPHA->trns_aux_energy[k] = 0.5f * hStereoDmxEVS->hPHA->trns_aux_energy[k] + 0.5f * subframe_energy[m];
- hStereoDmxEVS->hPHA->trns_aux_energy_fx[k] = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], add( hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], 1 ), subframe_energy[m], add( subframe_energy_e[m], 1 ), &hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k] );
- move32();
- }
-
- fx_tmp = BASOP_Util_Add_Mant32Exp( fx_tmp, fx_tmp_e, subframe_energy[m], subframe_energy_e[m], &fx_tmp_e );
+ // hPHA->trns_aux_energy[k] = STEREO_DMX_EVS_TRNS_EGY_FORGETTING * hPHA->trns_aux_energy[k] + ( 1.0f - STEREO_DMX_EVS_TRNS_EGY_FORGETTING ) * subframe_energy[m];
+ hPHA->trns_aux_energy_fx[k] = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( hPHA->trns_aux_energy_fx[k], STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ), hPHA->trns_aux_energy_fx_e[k], Mpy_32_16_1( subframe_energy[m], sub( MAX_16, STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ) ), subframe_energy_e[m], &hPHA->trns_aux_energy_fx_e[k] );
+ move32();
}
FOR( m = 1; m < STEREO_DMX_EVS_NB_SBFRM; m++ )
{
L_tmp1 = BASOP_Util_Add_Mant32Exp( subframe_energy[m - 1], subframe_energy_e[m - 1], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e );
- L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e );
+ L_tmp2 = BASOP_Util_Divide3232_Scale_newton( subframe_energy[m], L_tmp1, &L_tmp2_e );
L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) );
// if ( subframe_energy[m] / ( subframe_energy[m - 1] + EPSILON ) > STEREO_DMX_EVS_TRNS_DTC_INST )
if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, STEREO_DMX_EVS_TRNS_DTC_INST_Q0, 31 ) > 0 )
@@ -1930,14 +2281,14 @@ void stereo_dmx_evs_enc_fx(
}
}
- estimate_itd_fx( &corr, hStereoDmxEVS->hPOC, hStereoDmxEVS->hPHA, data_fx[0], data_fx[1], &hStereoDmxEVS->itd_fx, input_frame );
+ estimate_itd_fx( &corr, hStereoDmxEVS->hPOC, hPHA, data_fx[0], data_fx[1], &hStereoDmxEVS->itd_fx, input_frame );
/* poc */
IF( hStereoDmxEVS->itd_fx )
{
// dmx_weight = ( ( hStereoDmxEVS->itd > 0 ) ? ( -1 ) : 1 ) * 0.5f * corr + 0.5f;
- IF( hStereoDmxEVS->itd_fx > 0 )
+ IF( GT_16( hStereoDmxEVS->itd_fx, 0 ) )
{
dmx_weight = add( negate( shr( corr, 1 ) ), ONE_IN_Q14 );
}
@@ -1962,11 +2313,11 @@ void stereo_dmx_evs_enc_fx(
/* pha */
- pha_len = hStereoDmxEVS->hPHA->pha_len;
+ pha_len = hPHA->pha_len;
move16();
- fad_len = hStereoDmxEVS->hPHA->fad_len;
+ fad_len = hPHA->fad_len;
move16();
- fad_g = hStereoDmxEVS->hPHA->fad_g_fx;
+ fad_g = hPHA->fad_g_fx;
set_zero_fx( dmx_pha_data, n_samples );
set_zero_fx( mem_prev, fad_len );
@@ -1974,12 +2325,12 @@ void stereo_dmx_evs_enc_fx(
FOR( k = 0; k < CPE_CHANNELS; k++ )
{
p_data = data_fx[k];
- Copy32( hStereoDmxEVS->hPHA->data_mem_fx[k], data_mem, pha_len );
- Copy32( &( p_data[n_samples - pha_len] ), hStereoDmxEVS->hPHA->data_mem_fx[k], pha_len );
+ Copy32( hPHA->data_mem_fx[k], data_mem, pha_len );
+ Copy32( &( p_data[sub( n_samples, pha_len )] ), hPHA->data_mem_fx[k], pha_len );
p_data_mem = &( data_mem[pha_len] );
Copy32( p_data, p_data_mem, n_samples );
- p_prev_taps = hStereoDmxEVS->hPHA->p_prev_taps_fx[k];
+ p_prev_taps = hPHA->p_prev_taps_fx[k];
IF( p_prev_taps )
{
FOR( n = 0; n < fad_len; n++ )
@@ -1987,7 +2338,7 @@ void stereo_dmx_evs_enc_fx(
FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ )
{
// ftmp += p_data_mem[n - m] * p_prev_taps[m];
- fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_prev_taps[m] ) ); // Q25
+ fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_prev_taps[m] ) ); // Q25
}
fx_tmp = L_shl( fx_tmp, 1 ); // Q26
mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) );
@@ -2004,7 +2355,7 @@ void stereo_dmx_evs_enc_fx(
}
}
- p_curr_taps = hStereoDmxEVS->hPHA->p_curr_taps_fx[k];
+ p_curr_taps = hPHA->p_curr_taps_fx[k];
IF( p_curr_taps )
{
FOR( n = 0; n < n_samples; n++ )
@@ -2012,7 +2363,7 @@ void stereo_dmx_evs_enc_fx(
FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ )
{
// ftmp += p_data_mem[n - m] * p_curr_taps[m];
- fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_curr_taps[m] ) ); // Q25
+ fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_curr_taps[m] ) ); // Q25
}
fx_tmp = L_shl( fx_tmp, 1 ); // Q26
// dmx_pha_data[n] += ftmp * INV_SQRT_2;
@@ -2041,59 +2392,59 @@ void stereo_dmx_evs_enc_fx(
/* prc switch */
- curr_prc = hStereoDmxEVS->hPHA->curr_prc;
+ prev_prc = hPHA->curr_prc;
move32();
- // if ( abs( (int16_t) hStereoDmxEVS->itd ) > hStereoDmxEVS->hPHA->prc_thres )
- IF( GT_16( abs_s( hStereoDmxEVS->itd_fx ), hStereoDmxEVS->hPHA->prc_thres ) )
+ // if ( abs( (int16_t) hStereoDmxEVS->itd ) > hPHA->prc_thres )
+ IF( GT_16( abs_s( hStereoDmxEVS->itd_fx ), hPHA->prc_thres ) )
{
- IF( NE_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) )
+ IF( NE_32( hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) )
{
- IF( EQ_32( hStereoDmxEVS->hPHA->prev_prc, STEREO_DMX_EVS_PRC_POC ) )
+ IF( EQ_32( hPHA->prev_prc, STEREO_DMX_EVS_PRC_POC ) )
{
- hStereoDmxEVS->hPHA->prc_hys_cnt = add( hStereoDmxEVS->hPHA->prc_hys_cnt, 1 );
+ hPHA->prc_hys_cnt = add( hPHA->prc_hys_cnt, 1 );
move16();
}
ELSE
{
- hStereoDmxEVS->hPHA->prc_hys_cnt = 0;
+ hPHA->prc_hys_cnt = 0;
move16();
}
- if ( GE_16( hStereoDmxEVS->hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) )
+ if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) )
{
- hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC;
+ hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC;
move32();
}
}
- hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_POC;
+ hPHA->prev_prc = STEREO_DMX_EVS_PRC_POC;
move32();
}
ELSE
{
- IF( NE_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_PHA ) )
+ IF( NE_32( hPHA->curr_prc, STEREO_DMX_EVS_PRC_PHA ) )
{
- IF( EQ_32( hStereoDmxEVS->hPHA->prev_prc, STEREO_DMX_EVS_PRC_PHA ) )
+ IF( EQ_32( hPHA->prev_prc, STEREO_DMX_EVS_PRC_PHA ) )
{
- hStereoDmxEVS->hPHA->prc_hys_cnt = add( hStereoDmxEVS->hPHA->prc_hys_cnt, 1 );
+ hPHA->prc_hys_cnt = add( hPHA->prc_hys_cnt, 1 );
move16();
}
ELSE
{
- hStereoDmxEVS->hPHA->prc_hys_cnt = 0;
+ hPHA->prc_hys_cnt = 0;
move16();
}
- if ( GE_16( hStereoDmxEVS->hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) )
+ if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) )
{
- hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA;
+ hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA;
move32();
}
}
- hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_PHA;
+ hPHA->prev_prc = STEREO_DMX_EVS_PRC_PHA;
move32();
}
- // if ( ( is_transient == 1 ) || ( hStereoDmxEVS->aux_dmx_energy[0] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[1] ) || ( hStereoDmxEVS->aux_dmx_energy[1] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[0] ) || ( ( hStereoDmxEVS->hPHA->p_curr_taps[0] == NULL ) && ( hStereoDmxEVS->hPHA->p_curr_taps[1] == NULL ) ) )
+ // if ( ( is_transient == 1 ) || ( hStereoDmxEVS->aux_dmx_energy[0] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[1] ) || ( hStereoDmxEVS->aux_dmx_energy[1] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[0] ) || ( ( hPHA->p_curr_taps[0] == NULL ) && ( hPHA->p_curr_taps[1] == NULL ) ) )
test();
test();
test();
@@ -2101,54 +2452,192 @@ void stereo_dmx_evs_enc_fx(
IF( EQ_16( is_transient, 1 ) ||
BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->aux_dmx_energy_fx[0], hStereoDmxEVS->aux_dmx_energy_fx_e[0], Mpy_32_32( STEREO_DMX_EVS_ILDS_EGY_Q17, hStereoDmxEVS->aux_dmx_energy_fx[1] ), add( hStereoDmxEVS->aux_dmx_energy_fx_e[1], 14 ) ) > 0 ||
BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->aux_dmx_energy_fx[1], hStereoDmxEVS->aux_dmx_energy_fx_e[1], Mpy_32_32( STEREO_DMX_EVS_ILDS_EGY_Q17, hStereoDmxEVS->aux_dmx_energy_fx[0] ), add( hStereoDmxEVS->aux_dmx_energy_fx_e[0], 14 ) ) > 0 ||
- ( ( hStereoDmxEVS->hPHA->p_curr_taps_fx[0] == NULL ) && ( hStereoDmxEVS->hPHA->p_curr_taps_fx[1] == NULL ) ) )
+ EQ_16( hPHA->force_poc, TRUE ) )
{
- hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC;
+ hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC;
move32();
- hStereoDmxEVS->hPHA->prc_hys_cnt = 0;
+ hPHA->prc_hys_cnt = 0;
move16();
}
- IF( EQ_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) )
+ calc_energy_sgc( dmx_poc_data, &( hPHA->dmx_poc_ener_fx ), &( hPHA->dmx_poc_ener_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 );
+ calc_energy_sgc( dmx_pha_data, &( hPHA->dmx_pha_ener_fx ), &( hPHA->dmx_pha_ener_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 );
+
+ IF( NE_32( prev_prc, hPHA->curr_prc ) && EQ_16( is_transient, 0 ) && !( ( BASOP_Util_Cmp_Mant32Exp( hPHA->dmx_pha_ener_fx, hPHA->dmx_pha_ener_fx_e, hPHA->low_egy_thres_sgc, hPHA->low_egy_thres_sgc_e ) < 0 ) && ( BASOP_Util_Cmp_Mant32Exp( hPHA->dmx_poc_ener_fx, hPHA->dmx_poc_ener_fx_e, hPHA->low_egy_thres_sgc, hPHA->low_egy_thres_sgc_e ) < 0 ) ) )
+ {
+ IF( EQ_32( hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) )
+ {
+ apply_gain_sgc( dmx_pha_data, &( hPHA->dmx_pha_gain_sgc_fx ), n_samples );
+ calc_energy_sgc( dmx_pha_data, &( hPHA->dmx_pha_ener_sgc_fx ), &( hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 );
+
+ L_tmp1 = BASOP_Util_Add_Mant32Exp( hPHA->dmx_poc_ener_fx, hPHA->dmx_poc_ener_fx_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e );
+ BASOP_Util_Divide_MantExp( extract_h( hPHA->dmx_pha_ener_sgc_fx ), hPHA->dmx_pha_ener_sgc_fx_e, extract_h( L_tmp1 ), L_tmp1_e, &dmx_gain_sgc, &L_tmp2_e );
+ dmx_gain_sgc = Sqrt16( dmx_gain_sgc, &L_tmp2_e );
+ hPHA->dmx_poc_gain_sgc_fx = L_shl( L_deposit_l( dmx_gain_sgc ), L_tmp2_e ); // Q15
+ hPHA->dmx_poc_gain_sgc_fx = L_min( hPHA->dmx_poc_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMAX );
+ hPHA->dmx_poc_gain_sgc_fx = L_max( hPHA->dmx_poc_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMIN );
+
+ apply_gain_sgc( dmx_poc_data, &( hPHA->dmx_poc_gain_sgc_fx ), n_samples );
+ calc_energy_sgc( dmx_poc_data, &( hPHA->dmx_poc_ener_sgc_fx ), &( hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 );
+ }
+ ELSE
+ {
+ apply_gain_sgc( dmx_poc_data, &( hPHA->dmx_poc_gain_sgc_fx ), n_samples );
+ calc_energy_sgc( dmx_poc_data, &( hPHA->dmx_poc_ener_sgc_fx ), &( hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 );
+
+ L_tmp1 = BASOP_Util_Add_Mant32Exp( hPHA->dmx_pha_ener_fx, hPHA->dmx_pha_ener_fx_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e );
+ BASOP_Util_Divide_MantExp( extract_h( hPHA->dmx_poc_ener_sgc_fx ), hPHA->dmx_poc_ener_sgc_fx_e, extract_h( L_tmp1 ), L_tmp1_e, &dmx_gain_sgc, &L_tmp2_e );
+ dmx_gain_sgc = Sqrt16( dmx_gain_sgc, &L_tmp2_e );
+ hPHA->dmx_pha_gain_sgc_fx = L_shl( L_deposit_l( dmx_gain_sgc ), L_tmp2_e ); // Q15
+ hPHA->dmx_pha_gain_sgc_fx = L_min( hPHA->dmx_pha_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMAX );
+ hPHA->dmx_pha_gain_sgc_fx = L_max( hPHA->dmx_pha_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMIN );
+
+ apply_gain_sgc( dmx_pha_data, &( hPHA->dmx_pha_gain_sgc_fx ), n_samples );
+ calc_energy_sgc( dmx_pha_data, &( hPHA->dmx_pha_ener_sgc_fx ), &( hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 );
+ }
+ }
+ ELSE
+ {
+ apply_gain_sgc( dmx_poc_data, &( hPHA->dmx_poc_gain_sgc_fx ), n_samples );
+ calc_energy_sgc( dmx_poc_data, &( hPHA->dmx_poc_ener_sgc_fx ), &( hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 );
+
+ apply_gain_sgc( dmx_pha_data, &( hPHA->dmx_pha_gain_sgc_fx ), n_samples );
+ calc_energy_sgc( dmx_pha_data, &( hPHA->dmx_pha_ener_sgc_fx ), &( hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 );
+ }
+
+ IF( EQ_32( hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) )
{
p_dmx_data = dmx_poc_data;
+ p_dmx_data_fo = dmx_pha_data;
+ }
+ ELSE
+ {
+ p_dmx_data = dmx_pha_data;
+ p_dmx_data_fo = dmx_poc_data;
+ }
+
+ IF( EQ_16( is_transient, 1 ) )
+ {
+ n_fad_r = 1;
+ move16();
+ }
+ ELSE
+ {
+ n_fad_r = STEREO_DMX_EVS_FAD_R;
+ move16();
+ }
- IF( NE_32( curr_prc, hStereoDmxEVS->hPHA->curr_prc ) )
+ IF( NE_32( prev_prc, hPHA->curr_prc ) )
+ {
+ IF( EQ_16( hPHA->n_fad_g, input_frame ) )
{
- fad_len = hStereoDmxEVS->hPHA->fad_len_prc;
+ hPHA->n_fad_g = 0;
+ hPHA->n_fad_cnt = 0;
+ move16();
+ move16();
+ }
+ ELSE
+ {
+ hPHA->n_fad_g = sub( input_frame, add( hPHA->n_fad_g, 1 ) );
+ hPHA->n_fad_cnt = 0;
move16();
- fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx;
-
- FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len; ( n++, m-- ) )
- {
- p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n] ); // Q26
- move32();
- p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m], dmx_pha_data[n] ) ); // Q26
- move32();
- }
}
}
- ELSE
+ ELSE IF( is_transient )
{
- p_dmx_data = dmx_pha_data;
+ hPHA->n_fad_cnt = 0;
+ move16();
+ }
+
+ fad_len = s_min( n_samples, sub( mult0( input_frame, n_fad_r ), add( mult0( hPHA->n_fad_g, n_fad_r ), hPHA->n_fad_cnt ) ) );
+
+ IF( NE_16( fad_len, 0 ) )
+ {
+ fad_g = hPHA->fad_g_prc_fx;
+ move32();
+ n_fad_g = hPHA->n_fad_g;
+ n_fad_cnt = hPHA->n_fad_cnt;
+ move16();
+ move16();
+ m_fad_g = sub( input_frame, add( n_fad_g, 1 ) );
+
+ IF( EQ_16( n_fad_r, 1 ) )
+ {
+ n_fad_cnt = 0;
+ move16();
+ FOR( n = 0; n < fad_len; n++ )
+ {
+ p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26;
+ n_fad_g = add( n_fad_g, 1 );
- IF( NE_32( curr_prc, hStereoDmxEVS->hPHA->curr_prc ) )
+ p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26
+ m_fad_g = sub( m_fad_g, 1 );
+ }
+ }
+ ELSE
{
- fad_len = hStereoDmxEVS->hPHA->fad_len_prc;
+ n = 0;
+ sbfad_len = 0;
+ move16();
move16();
- fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx;
+ IF( NE_16( n_fad_cnt, 0 ) )
+ {
+ sbfad_len = s_min( fad_len, sub( n_fad_r, n_fad_cnt ) );
+ FOR( ; n < sbfad_len; n++ )
+ {
+ p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26;
+ p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26
+ }
+ n_fad_cnt = 0;
+ move16();
+ n_fad_g = add( n_fad_g, 1 );
+ m_fad_g = sub( m_fad_g, 1 );
+ }
- FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len; ( n++, m-- ) )
+ sbfad_len = sub( fad_len, sbfad_len );
+ IF( EQ_16( n_fad_r, STEREO_DMX_EVS_FAD_R ) )
{
- p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n] ); // Q26
- move32();
- p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m], dmx_poc_data[n] ) ); // Q26
- move32();
+ sbfad_len = L_mult( sbfad_len, STEREO_DMX_EVS_FAD_IR ) >> 16;
+ }
+
+ FOR( k = 0; k < sbfad_len; k++ )
+ {
+ FOR( m = 0; m < n_fad_r; m++ )
+ {
+ p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26;
+ p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26
+ n = add( n, 1 );
+ }
+ n_fad_g = add( n_fad_g, 1 );
+ m_fad_g = sub( m_fad_g, 1 );
+ }
+
+ FOR( ; n < fad_len; n++ )
+ {
+ p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26;
+ p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26
+ n_fad_cnt = add( n_fad_cnt, 1 );
+ IF( GE_16( n_fad_cnt, n_fad_r ) )
+ {
+ n_fad_cnt = 0;
+ move16();
+ n_fad_g = add( n_fad_g, 1 );
+ m_fad_g = sub( m_fad_g, 1 );
+ }
}
}
+
+ hPHA->n_fad_g = n_fad_g;
+ hPHA->n_fad_cnt = n_fad_cnt;
+ move16();
+ move16();
}
Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15
+ pop_wmops();
+
+ pop_wmops();
+
return;
}
@@ -2168,7 +2657,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
Word16 n, input_frame;
Word16 m, len, pha_len, fad_len, fad_len2, rfft_ipd_coef_step, n0, input_frame_pha;
- Word32 *fad_g, fad_r, *ipd_ff;
+ Word32 *fad_g, fad_r;
Word16 *win;
const Word16 *p_ipd_w;
Word16 tmp_e;
@@ -2359,6 +2848,10 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
move16();
hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_16_Q0;
move32();
+ hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_16;
+ hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E;
+ move32();
+ move16();
}
ELSE IF( EQ_32( input_Fs, 32000 ) )
{
@@ -2370,6 +2863,10 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
move16();
hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_32_Q0;
move32();
+ hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_32;
+ hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E;
+ move32();
+ move16();
}
ELSE IF( EQ_32( input_Fs, 48000 ) )
{
@@ -2381,6 +2878,10 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
move16();
hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_48_Q0;
move32();
+ hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_48;
+ hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E;
+ move32();
+ move16();
}
ELSE
{
@@ -2389,8 +2890,6 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
hStereoDmxEVS->hPHA->pha_len = shr( len, 1 );
move16();
- hStereoDmxEVS->hPHA->init_frmCntr = 10; // (int16_t)(FRAMES_PER_SEC * 0.2f)
- move16();
hStereoDmxEVS->hPHA->isd_rate_s_fx = 0;
move32();
hStereoDmxEVS->hPHA->iccr_s_fx = 0;
@@ -2406,7 +2905,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
move16();
IF( EQ_32( input_Fs, 16000 ) )
{
- hStereoDmxEVS->hPHA->win_fx[pha_len - 1] = 7373; /*0.45f in Q14*/
+ hStereoDmxEVS->hPHA->win_fx[sub( pha_len, 1 )] = 7373; /*0.45f in Q14*/
move16();
}
ELSE IF( EQ_32( input_Fs, 32000 ) || EQ_32( input_Fs, 48000 ) )
@@ -2419,7 +2918,34 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
fad_g = hStereoDmxEVS->hPHA->fad_g_fx;
// fad_r = 1.0f / (float) ( fad_len + 1 );
+#ifdef FIX_1481_HARDCODE_DIV
+ SWITCH( fad_len )
+ {
+ case STEREO_DMX_EVS_FAD_LEN_16:
+ fad_r = 853658096;
+ move32();
+ tmp_e = -6;
+ move16();
+ BREAK;
+ case STEREO_DMX_EVS_FAD_LEN_32:
+ fad_r = 856317467;
+ move32();
+ tmp_e = -7;
+ move16();
+ BREAK;
+ case STEREO_DMX_EVS_FAD_LEN_48:
+ fad_r = 571471740;
+ move32();
+ tmp_e = -7;
+ move16();
+ BREAK;
+ default:
+ fad_r = BASOP_Util_Divide3232_Scale_newton( 1, add( fad_len, 1 ), &tmp_e );
+ BREAK;
+ }
+#else
fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e );
+#endif
fad_r = L_shl_r( fad_r, tmp_e );
fad_len2 = shr( fad_len, 1 );
FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len2; ( n++, m-- ) )
@@ -2439,26 +2965,25 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
/* Compute the forgetting factor */
// replaced below logic with table as it is same for all frame lengths
- ipd_ff = hStereoDmxEVS->hPHA->ipd_ff_fx;
- Copy32( ipd_ff_Q31, ipd_ff, STEREO_DMX_EVS_NB_SUBBAND_MAX );
-
- // a_min = 0.8576958985908941f;
- // a_max = 0.9440608762859234f;
- // itrh = (int16_t)((3000 * input_frame) / (input_Fs * STEREO_DMX_EVS_SUBBAND_SIZE)); /* 3kHz */
- // n0 = L_FRAME16k / (2 * STEREO_DMX_EVS_SUBBAND_SIZE);
- // a_step = (a_min - a_max) / (n0 + 1 - itrh);
- // for (n = 0; n < itrh; n++)
- //{
- // ipd_ff[n] = a_max;
- // }
- // for (; n < (n0 + 1); n++) /* 8kHz */
- //{
- // ipd_ff[n] = a_max + (n - itrh) * a_step;
- // }
- // for (; n < STEREO_DMX_EVS_NB_SUBBAND_MAX; n++)
- //{
- // ipd_ff[n] = a_min;
- // }
+ Copy32( ipd_ff_Q31, hStereoDmxEVS->hPHA->ipd_ff_fx, STEREO_DMX_EVS_NB_SUBBAND_MAX );
+
+ hStereoDmxEVS->hPHA->proc_pha = STEREO_DMX_EVS_PHA_IPD;
+ hStereoDmxEVS->hPHA->force_poc = FALSE;
+ move16();
+ move32();
+
+ hStereoDmxEVS->hPHA->pha_ipd_chan_cnt = 0;
+ move16();
+ hStereoDmxEVS->hPHA->pha_ipd_chan_thresh = 10;
+ move16();
+ hStereoDmxEVS->hPHA->pha_ipd_chan2rephase = 1;
+ move16();
+ hStereoDmxEVS->hPHA->pha_ipd_previouschan2rephase = 1;
+ move16();
+ hStereoDmxEVS->hPHA->pha_ipd_chanswitch = 0;
+ move16();
+ hStereoDmxEVS->hPHA->pha_ipd_chanswitch_allowed = 0;
+ move16();
set32_fx( hStereoDmxEVS->hPHA->Pr_fx, MAX_32, STEREO_DMX_EVS_NB_SUBBAND_MAX );
set_zero_fx( hStereoDmxEVS->hPHA->Pi_fx, STEREO_DMX_EVS_NB_SUBBAND_MAX );
@@ -2497,7 +3022,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
{
win[n] = p_ipd_w[n * len];
move16();
- win[input_frame_pha - n] = p_ipd_w[n * len];
+ win[sub( input_frame_pha, n )] = p_ipd_w[n * len];
move16();
}
win[n0] = p_ipd_w[n0 * len];
@@ -2510,34 +3035,40 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
hStereoDmxEVS->hPHA->prc_hys_cnt = 0;
move16();
- // hStereoDmxEVS->hPHA->fad_len_prc = (int16_t) ( STEREO_DMX_EVS_FADE_LEN_PRC * (float) input_Fs / 1000.0f );
- SWITCH( input_Fs )
+ fad_len = input_frame;
+ move16();
+
+ fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx;
+ move32();
+ // fad_r = 1.0f / (float) ( fad_len + 1 );
+#ifdef FIX_1481_HARDCODE_DIV
+ SWITCH( fad_len )
{
- case 8000:
- hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 8;
- move16();
- BREAK;
- case 16000:
- hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 16;
+ case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 16:
+ fad_r = 856317467;
+ move32();
+ tmp_e = -7;
move16();
BREAK;
- case 32000:
- hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 32;
+ case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 32:
+ fad_r = 857653375;
+ move32();
+ tmp_e = -8;
move16();
BREAK;
- case 48000:
- hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 48;
+ case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 48:
+ fad_r = 572066403;
+ move32();
+ tmp_e = -8;
move16();
BREAK;
default:
- IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid sample rate\n" );
+ fad_r = BASOP_Util_Divide3232_Scale_newton( 1, add( fad_len, 1 ), &tmp_e );
BREAK;
}
- fad_len = hStereoDmxEVS->hPHA->fad_len_prc;
- move16();
- fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx;
- // fad_r = 1.0f / (float) ( fad_len + 1 );
+#else
fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e );
+#endif
fad_r = L_shl_r( fad_r, tmp_e );
fad_len2 = shr( fad_len, 1 );
FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len2; ( n++, m-- ) )
@@ -2556,6 +3087,36 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
move16();
}
+
+ hStereoDmxEVS->hPHA->dmx_poc_ener_fx = 0;
+ move32();
+ hStereoDmxEVS->hPHA->dmx_poc_ener_fx_e = 0;
+ move16();
+ hStereoDmxEVS->hPHA->dmx_pha_ener_fx = 0;
+ move32();
+ hStereoDmxEVS->hPHA->dmx_pha_ener_fx_e = 0;
+ move16();
+
+ hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx = 0;
+ move32();
+ hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e = 0;
+ move16();
+ hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx = 0;
+ move32();
+ hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e = 0;
+ move16();
+
+ hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = ONE_IN_Q15;
+ hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = ONE_IN_Q15;
+ move32();
+ move32();
+
+ hStereoDmxEVS->hPHA->n_fad_g = input_frame;
+ hStereoDmxEVS->hPHA->n_fad_cnt = 0;
+ move16();
+ move16();
+
+
*hStereoDmxEVS_out = hStereoDmxEVS;
return IVAS_ERR_OK;
diff --git a/lib_enc/ivas_stereo_eclvq_enc_fx.c b/lib_enc/ivas_stereo_eclvq_enc_fx.c
index 3abc07811450ec80c6e98e508eef739e2d647f27..a09daffe033c27d824800c93d8e8855231389091 100644
--- a/lib_enc/ivas_stereo_eclvq_enc_fx.c
+++ b/lib_enc/ivas_stereo_eclvq_enc_fx.c
@@ -89,7 +89,7 @@ void ECSQ_quantize_vector_fx(
}
ELSE
{
- inv_global_gain = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q15, global_gain, &inv_global_gain_e );
+ inv_global_gain = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q15, global_gain, &inv_global_gain_e );
inv_global_gain = L_shl( inv_global_gain, inv_global_gain_e ); // Q31
FOR( i = 0; i < N; ++i )
{
@@ -140,7 +140,7 @@ Word32 ECSQ_compute_optimal_gain_fx( // Q15
IF( sum_sq_output != 0 )
{
// optimal_global_gain = sum_input_output / sum_sq_output;
- optimal_global_gain = BASOP_Util_Divide3232_Scale_cadence( sum_input_output, sum_sq_output, &optimal_global_gain_e ); // 31 - ( sum_input_output_e - 31 + optimal_global_gain_e ) = 62 - ( sum_input_output_e + optimal_global_gain_e )
+ optimal_global_gain = BASOP_Util_Divide3232_Scale_newton( sum_input_output, sum_sq_output, &optimal_global_gain_e ); // 31 - ( sum_input_output_e - 31 + optimal_global_gain_e ) = 62 - ( sum_input_output_e + optimal_global_gain_e )
optimal_global_gain = L_shr( optimal_global_gain, sub( sub( 62, add( sum_input_output_e, optimal_global_gain_e ) ), 15 ) ); // Q15
}
@@ -427,7 +427,7 @@ static Word16 get_best_param_fx(
IF( LE_16( sub( count, count0 ), ECSQ_NONZERO_MAX ) && EQ_32( sum_abs, L_shl( sub( count, count0 ), 10 ) ) )
{
//*avg_abs_sum = ( sum_abs + 0.25f * count0 ) / count;
- *avg_abs_sum = BASOP_Util_Divide3232_Scale_cadence( L_add( sum_abs, L_shl( count0, 8 ) ), L_shl( count, 10 ), &L_tmp_e );
+ *avg_abs_sum = BASOP_Util_Divide3232_Scale_newton( L_add( sum_abs, L_shl( count0, 8 ) ), L_shl( count, 10 ), &L_tmp_e );
move32();
*avg_abs_sum = L_shr_r( *avg_abs_sum, sub( 21, L_tmp_e ) ); // Q10
move32();
@@ -438,7 +438,7 @@ static Word16 get_best_param_fx(
}
//*avg_abs_sum = ( sum_abs + 0.25f * count0 ) / count;
- *avg_abs_sum = BASOP_Util_Divide3232_Scale_cadence( L_add( sum_abs, L_shl( count0, 8 ) ), L_shl( count, 10 ), &L_tmp_e );
+ *avg_abs_sum = BASOP_Util_Divide3232_Scale_newton( L_add( sum_abs, L_shl( count0, 8 ) ), L_shl( count, 10 ), &L_tmp_e );
move32();
*avg_abs_sum = L_shr_r( *avg_abs_sum, sub( 21, L_tmp_e ) ); // Q10
move32();
@@ -478,7 +478,7 @@ static Word32 get_est_size_fx( // Q10
// if ( param < 0 )
//{
// //two_to_param = 1.0f / two_to_param;
- // two_to_param = BASOP_Util_Divide3232_Scale_cadence( 1, two_to_param,&two_to_param_e);
+ // two_to_param = BASOP_Util_Divide3232_Scale_newton( 1, two_to_param,&two_to_param_e);
// }
IF( NE_16( param, ECSQ_ALL_ZERO_PARAM ) ) /* not all values are zeros */
@@ -508,8 +508,8 @@ static Word32 get_est_size_fx( // Q10
nonzero = sub( N, N0 );
// required_avg_abs_sum = ( nonzero + 0.25f * N0 ) / N; /* the vector must have nonzero +-1 and N0 zeros */
- required_avg_abs_sum = BASOP_Util_Divide3232_Scale_cadence( L_add( L_shl( nonzero, 10 ), L_shl( N0, 8 ) ), L_shl( N, 10 ), &required_avg_abs_sum_e ); /* the vector must have nonzero +-1 and N0 zeros */
- required_avg_abs_sum = L_shr_r( required_avg_abs_sum, sub( 21, required_avg_abs_sum_e ) ); // Q10
+ required_avg_abs_sum = BASOP_Util_Divide3232_Scale_newton( L_add( L_shl( nonzero, 10 ), L_shl( N0, 8 ) ), L_shl( N, 10 ), &required_avg_abs_sum_e ); /* the vector must have nonzero +-1 and N0 zeros */
+ required_avg_abs_sum = L_shr_r( required_avg_abs_sum, sub( 21, required_avg_abs_sum_e ) ); // Q10
test();
IF( EQ_32( avg_abs_sum, required_avg_abs_sum ) && LE_16( nonzero, ECSQ_NONZERO_MAX ) )
@@ -847,18 +847,18 @@ Word32 ECSQ_encode_target_SNR_fx(
/* target_ratio is the target ratio between the sum squared values of input and sum squared values of quantization error */
// target_ratio = powf( 10.0f, target_SNR / 10.0f );
- L_tmp1 = BASOP_Util_Divide3232_Scale_cadence( target_SNR, 10, &L_tmp1_e );
+ L_tmp1 = BASOP_Util_Divide3232_Scale_newton( target_SNR, 10, &L_tmp1_e );
L_tmp1_e = add( L_tmp1_e, 6 - 31 );
target_ratio = BASOP_Util_fPow( 10 << 27, 4, L_tmp1, L_tmp1_e, &target_ratio_e );
// target_sum_squared_error = sum_squared / target_ratio;
- target_sum_squared_error = BASOP_Util_Divide3232_Scale_cadence( sum_squared, target_ratio, &target_sum_squared_error_e );
+ target_sum_squared_error = BASOP_Util_Divide3232_Scale_newton( sum_squared, target_ratio, &target_sum_squared_error_e );
target_sum_squared_error_e = add( target_sum_squared_error_e, sub( sum_squared_e, target_ratio_e ) );
/* the mean of squared quantization error for uniform scalar quantization is 1 / 12, approximately 0.0833 */
/* when including global_gain, the relationship is target_sum_squared_error ~ (0.0833 * N) * global_gain ^ 2 */
/* the representable range for global_gain is from 1 (global_gain_index 0) to 29145 (global_gain_index 126) inclusive */
// global_gain = sqrtf( target_sum_squared_error / ( 0.0833f * (float) N ) );
- global_gain = BASOP_Util_Divide3232_Scale_cadence( target_sum_squared_error, L_mult0( 5459 /*0.0833f in Q16*/, N ), &global_gain_e );
+ global_gain = BASOP_Util_Divide3232_Scale_newton( target_sum_squared_error, L_mult0( 5459 /*0.0833f in Q16*/, N ), &global_gain_e );
global_gain_e = add( global_gain_e, sub( target_sum_squared_error_e, 15 ) );
global_gain = Sqrt32( global_gain, &global_gain_e );
global_gain = L_shr( global_gain, sub( 16, global_gain_e ) ); // Q15
@@ -885,7 +885,7 @@ Word32 ECSQ_encode_target_SNR_fx(
adjust_size = L_sub( test_size, max_bits_fixpt );
/* assume doubling the quantization step size will reduce the entropy with (up to) one bit */
// adjust_global_gain_index = (int16_t) ceil( adjust_size / ( 1024.0f * N * log_base2( global_gain_step ) ) );
- adjust_global_gain_index = BASOP_Util_Divide3232_Scale_cadence( adjust_size, N, &tmp_e );
+ adjust_global_gain_index = BASOP_Util_Divide3232_Scale_newton( adjust_size, N, &tmp_e );
adjust_global_gain_index = Mpy_32_32( adjust_global_gain_index, 17816838 /*/ ( 1024.0f * log_base2( global_gain_step ) )*/ );
IF( NE_32( adjust_global_gain_index, L_shl( L_shr( adjust_global_gain_index, sub( 31, tmp_e ) ), sub( 31, tmp_e ) ) ) )
{
diff --git a/lib_enc/ivas_stereo_ica_enc_fx.c b/lib_enc/ivas_stereo_ica_enc_fx.c
index a8a088f209906e8817948a6de6915e0926e82a27..d0252a1f154a32df2845bea6d5c3dc695368e2a0 100644
--- a/lib_enc/ivas_stereo_ica_enc_fx.c
+++ b/lib_enc/ivas_stereo_ica_enc_fx.c
@@ -150,7 +150,7 @@ static void tcaTargetCh_LA_fx(
deno_exp = 0;
move16();
}
- gAdj = BASOP_Util_Divide3232_Scale_cadence( tempF2, deno, &gAdj_exp ); /* Q31-gAdj_exp */
+ gAdj = BASOP_Util_Divide3232_Scale_newton( tempF2, deno, &gAdj_exp ); /* Q31-gAdj_exp */
gAdj_exp = add( gAdj_exp, sub( tempF2_exp, deno_exp ) );
}
@@ -923,7 +923,7 @@ static void corrStatsEst_fx(
IF( tempF_fx != 0 )
{
temp32 = BASOP_Util_Add_Mant32Exp( XY_hat_fx, XY_hat_exp, L_negate( Mpy_32_32( X_hat_fx, Y_hat_fx ) ), add( X_hat_exp, Y_hat_exp ), &exp ); /* Q31-exp */
- beta_reg_fx = BASOP_Util_Divide3232_Scale_cadence( temp32, tempF_fx, &beta_reg_exp ); /* Q31-beta_reg_exp */
+ beta_reg_fx = BASOP_Util_Divide3232_Scale_newton( temp32, tempF_fx, &beta_reg_exp ); /* Q31-beta_reg_exp */
if ( beta_reg_fx )
{
beta_reg_exp = add( beta_reg_exp, sub( exp, tempF_exp ) );
@@ -2088,6 +2088,10 @@ void stereo_tca_enc_fx(
move16();
sts[1]->q_inp32 = sub( sts[1]->q_inp32, 2 );
move16();
+ sts[0]->q_old_inp32 = sub( sts[0]->q_old_inp32, 2 );
+ move16();
+ sts[1]->q_old_inp32 = sub( sts[1]->q_old_inp32, 2 );
+ move16();
}
/* update L/R DS memories */
@@ -2319,17 +2323,17 @@ static void unclr_calc_corr_features_fx(
move32();
}
- hStereoClassif->unclr_fv_fx[E_corrEst0] = L_shl( corrEst[abs_s( lagSearchRange[0] )], sub( corrEst_exp, 16 ) ); /* Q15 */
+ hStereoClassif->unclr_fv_fx[E_corrEst0] = L_shl_sat( corrEst[abs_s( lagSearchRange[0] )], sub( corrEst_exp, 16 ) ); /* Q15 */
move32();
- hStereoClassif->unclr_fv_fx[E_corrEstMax] = L_shl( corrEstMax, sub( corrEst_exp, 16 ) ); /* Q15 */
+ hStereoClassif->unclr_fv_fx[E_corrEstMax] = L_shl_sat( corrEstMax, sub( corrEst_exp, 16 ) ); /* Q15 */
move32();
- hStereoClassif->unclr_fv_fx[E_corrLagMax] = L_shl( corrLagMax, 15 ); /* Q15 */
+ hStereoClassif->unclr_fv_fx[E_corrLagMax] = L_shl_sat( corrLagMax, 15 ); /* Q15 */
move32();
- hStereoClassif->xtalk_fv_fx[E_corrEst0] = L_shl( corrEst[abs_s( lagSearchRange[0] )], sub( corrEst_exp, 16 ) ); /* Q15 */
+ hStereoClassif->xtalk_fv_fx[E_corrEst0] = L_shl_sat( corrEst[abs_s( lagSearchRange[0] )], sub( corrEst_exp, 16 ) ); /* Q15 */
move32();
- hStereoClassif->xtalk_fv_fx[E_corrEstMax] = L_shl( corrEstMax, sub( corrEst_exp, 16 ) ); /* Q15 */
+ hStereoClassif->xtalk_fv_fx[E_corrEstMax] = L_shl_sat( corrEstMax, sub( corrEst_exp, 16 ) ); /* Q15 */
move32();
- hStereoClassif->xtalk_fv_fx[E_corrLagMax] = L_shl( corrLagMax, 15 ); /* Q15 */
+ hStereoClassif->xtalk_fv_fx[E_corrLagMax] = L_shl_sat( corrLagMax, 15 ); /* Q15 */
move32();
/* L/M and R/M correlation */
@@ -2345,9 +2349,9 @@ static void unclr_calc_corr_features_fx(
move32();
}
- ic_Lm = BASOP_Util_Divide3232_Scale_cadence( corrL, ener, &exp1 ); /* Q31-exp1 */
+ ic_Lm = BASOP_Util_Divide3232_Scale_newton( corrL, ener, &exp1 ); /* Q31-exp1 */
exp1 = add( exp1, sub( corrL_exp, ener_exp ) );
- ic_Rm = BASOP_Util_Divide3232_Scale_cadence( corrR, ener, &exp2 ); /* Q31-exp2 */
+ ic_Rm = BASOP_Util_Divide3232_Scale_newton( corrR, ener, &exp2 ); /* Q31-exp2 */
exp2 = add( exp2, sub( corrR_exp, ener_exp ) );
m_corrL_corrR = L_sub( L_max( L_abs( L_shl( ic_Lm, sub( exp1, s_max( exp1, exp2 ) ) ) ), L_abs( L_shl( ic_Rm, sub( exp2, s_max( exp1, exp2 ) ) ) ) ), L_min( L_abs( L_shl( ic_Lm, sub( exp1, s_max( exp1, exp2 ) ) ) ), L_abs( L_shl( ic_Rm, sub( exp2, s_max( exp1, exp2 ) ) ) ) ) ); // s_max(exp1, exp2)
@@ -2405,7 +2409,7 @@ static void unclr_calc_corr_features_fx(
}
ELSE
{
- *corrEst_ncorr = BASOP_Util_Divide3232_Scale_cadence( num, den, &exp ); /* Q31-corrEst_ncorr_exp */
+ *corrEst_ncorr = BASOP_Util_Divide3232_Scale_newton( num, den, &exp ); /* Q31-corrEst_ncorr_exp */
*corrEst_ncorr_exp = add( exp, sub( num_exp, den_exp ) );
move32();
move16();
diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c
index 46134a27003ae2e970766643382ee84a84056feb..2a71fc34dffdcc079e6195b14b4779c77da04ffc 100644
--- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c
+++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c
@@ -137,8 +137,10 @@ void stereo_mdct_core_enc_fx(
Word32 *orig_spectrum_fx[CPE_CHANNELS][NB_DIV]; /* Pointers to MDCT output for a short block (L/R) */
Word64 powerSpec64[CPE_CHANNELS][N_MAX];
Word16 exp_powerSpec64[CPE_CHANNELS][NB_DIV];
- Word32 powerSpecMsInv_long_fx[CPE_CHANNELS][N_MAX]; /* MS inv power spectrum, also inverse MDST spectrum */
+ Word32 powerSpecMsInv_long_fx[CPE_CHANNELS][N_MAX]; /* MS inv power spectrum, also inverse MDST spectrum */
+ Word16 q_powerSpecMsInv_long_fx[CPE_CHANNELS][N_MAX]; /*Q: MS inv power spectrum, also inverse MDST spectrum */
Word32 *powerSpecMsInv_fx[CPE_CHANNELS][NB_DIV];
+ Word16 *q_powerSpecMsInv_fx[CPE_CHANNELS][NB_DIV];
Word32 quantized_spectrum_long_fx[CPE_CHANNELS][N_MAX]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */
Word32 *quantized_spectrum_fx[CPE_CHANNELS][NB_DIV];
Word32 *inv_mdst_spectrum_fx[CPE_CHANNELS][NB_DIV];
@@ -152,8 +154,6 @@ void stereo_mdct_core_enc_fx(
Word32 *p_mdst_spectrum_long_fx[CPE_CHANNELS];
Word32 mdst_spectrum_long_fx[CPE_CHANNELS][N_MAX];
Word32 *mdst_spectrum_fx[CPE_CHANNELS][NB_DIV];
- Word16 exp_powSpecMsInv[MCT_MAX_CHANNELS], q_spec, tmp_s;
- Word16 tmp_q_powSpecInv[N_MAX], *tmp_q_psi[2];
Word64 W_tmp;
Encoder_State *st, **sts;
STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct;
@@ -186,11 +186,6 @@ void stereo_mdct_core_enc_fx(
set16_fx( exp_powerSpec64[ch], 0, NB_DIV );
}
- set16_fx( tmp_q_powSpecInv, 63, N_MAX );
-
- tmp_q_psi[0] = tmp_q_powSpecInv;
- tmp_q_psi[1] = &tmp_q_powSpecInv[N_TCX10_MAX];
-
sts = hCPE->hCoreCoder;
hStereoMdct = hCPE->hStereoMdct;
hBstr = sts[0]->hBstr;
@@ -254,6 +249,9 @@ void stereo_mdct_core_enc_fx(
{
inv_mdst_spectrum_fx[ch][0] = powerSpecMsInv_fx[ch][0] = powerSpecMsInv_long_fx[ch];
inv_mdst_spectrum_fx[ch][1] = powerSpecMsInv_fx[ch][1] = powerSpecMsInv_long_fx[ch] + N_TCX10_MAX;
+ q_powerSpecMsInv_fx[ch][0] = q_powerSpecMsInv_long_fx[ch];
+ q_powerSpecMsInv_fx[ch][1] = q_powerSpecMsInv_long_fx[ch] + N_TCX10_MAX;
+ set16_fx( q_powerSpecMsInv_long_fx[ch], 63, N_MAX );
quantized_spectrum_fx[ch][0] = quantized_spectrum_long_fx[ch];
quantized_spectrum_fx[ch][1] = quantized_spectrum_long_fx[ch] + N_TCX10_MAX;
inv_spectrum_fx[ch][0] = quantized_spectrum_fx[ch][0];
@@ -343,61 +341,59 @@ void stereo_mdct_core_enc_fx(
IF( !hStereoMdct->isSBAStereoMode )
{
/* Common q for mdst_spectrum and spectrum */
- Word16 k;
- q_spec = 0;
+ Word16 exp1, exp2;
Word16 length;
- FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
- {
- FOR( k = 0; k <= ( ( sts[ch]->core == TCX_20_CORE ) ? 1 : NB_DIV ) - 1; k++ )
- {
- q_spec = s_max( q_spec, sts[ch]->hTcxEnc->spectrum_e[k] );
- q_spec = s_max( q_spec, mdst_spectrum_e[ch][k] );
- }
- }
- q_spec = sub( Q31, q_spec );
/*find headroom to increase precision*/
- Word16 hdrm_min = MAX_16;
+ exp1 = MIN_16;
+ exp2 = MIN_16;
+ move16();
move16();
FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
{
length = sts[ch]->hTcxEnc->spectrum_length;
move16();
- IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
+ if ( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
{
length = shr( length, 1 );
}
- hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[0], length ) );
- hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][0], length ) );
+ exp1 = s_max( exp1, sub( sts[ch]->hTcxEnc->spectrum_e[0], L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[0], length ) ) );
+ exp2 = s_max( exp2, sub( mdst_spectrum_e[ch][0], L_norm_arr( mdst_spectrum_fx[ch][0], length ) ) );
IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
{
- hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[1], length ) );
- hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][1], length ) );
+ exp1 = s_max( exp1, sub( sts[ch]->hTcxEnc->spectrum_e[1], L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[1], length ) ) );
+ exp2 = s_max( exp2, sub( mdst_spectrum_e[ch][1], L_norm_arr( mdst_spectrum_fx[ch][1], length ) ) );
}
}
- q_spec = sub( add( hdrm_min, q_spec ), 1 ); /* 1 guard bit to avoid over-flows in stereo_coder_tcx_fx */
+ exp1 = add( exp1, 2 ); /* 2 guard bit to avoid over-flows in stereo_coder_tcx_fx */
+ exp2 = add( exp2, 2 ); /* 2 guard bit to avoid over-flows in stereo_coder_tcx_fx (ms_processing_fx) */
FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
{
length = sts[ch]->hTcxEnc->spectrum_length;
move16();
- IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
+ if ( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
{
length = shr( length, 1 );
}
- FOR( k = 0; k <= ( ( sts[ch]->core == TCX_20_CORE ) ? 1 : NB_DIV ) - 1; k++ )
+
+ scale_sig32( sts[ch]->hTcxEnc->spectrum_fx[0], length, sub( sts[ch]->hTcxEnc->spectrum_e[0], exp1 ) ); /* exp1 */
+ sts[ch]->hTcxEnc->spectrum_e[0] = exp1;
+ scale_sig32( mdst_spectrum_fx[ch][0], length, sub( mdst_spectrum_e[ch][0], exp2 ) ); /* exp2 */
+ mdst_spectrum_e[ch][0] = exp2;
+ IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
{
- Scale_sig32( sts[ch]->hTcxEnc->spectrum_fx[k], length, sub( q_spec, sub( Q31, sts[ch]->hTcxEnc->spectrum_e[k] ) ) ); /* q_spec */
- sts[ch]->hTcxEnc->spectrum_e[k] = sub( Q31, q_spec );
- Scale_sig32( mdst_spectrum_fx[ch][k], length, sub( q_spec, sub( Q31, mdst_spectrum_e[ch][k] ) ) ); /* q_spec */
- mdst_spectrum_e[ch][k] = sub( Q31, q_spec );
+ scale_sig32( sts[ch]->hTcxEnc->spectrum_fx[1], length, sub( sts[ch]->hTcxEnc->spectrum_e[1], exp1 ) ); /* exp1 */
+ sts[ch]->hTcxEnc->spectrum_e[1] = exp1;
+ scale_sig32( mdst_spectrum_fx[ch][1], length, sub( mdst_spectrum_e[ch][1], exp2 ) ); /* exp2 */
+ mdst_spectrum_e[ch][1] = exp2;
}
}
- stereo_coder_tcx_fx( hStereoMdct, sts, ms_mask, mdst_spectrum_fx, inv_spectrum_fx, inv_mdst_spectrum_fx, 0, q_spec );
- exp_inv_spectrum[0] = exp_inv_spectrum[1] = sub( Q31, q_spec );
+ stereo_coder_tcx_fx( hStereoMdct, sts, ms_mask, mdst_spectrum_fx, inv_spectrum_fx, inv_mdst_spectrum_fx, 0, sts[0]->hTcxEnc->spectrum_e[0], mdst_spectrum_e[0][0] );
+ exp_inv_spectrum[0] = exp_inv_spectrum[1] = sts[0]->hTcxEnc->spectrum_e[0];
move16();
move16();
}
@@ -406,10 +402,13 @@ void stereo_mdct_core_enc_fx(
* Power spectrum calculation
*---------------------------------------------------------------*/
Word16 length, exp, shift1, shift2, norm;
- Word32 mdct, mdst;
+ Word32 mdct, mdst, imdct, imdst;
FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
{
+ L_subframeTCX = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 ); /* Q0 */
+ nSubframes = NB_DIV;
+ move16();
IF( EQ_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
{
nSubframes = 1;
@@ -417,12 +416,6 @@ void stereo_mdct_core_enc_fx(
move16();
move16();
}
- ELSE
- {
- nSubframes = NB_DIV;
- move16();
- L_subframeTCX = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 ); /* Q0 */
- }
/* in MCT only relevant for bitrate switching from non-MCT bitrates */
IF( EQ_16( sts[ch]->last_core, ACELP_CORE ) )
@@ -432,8 +425,6 @@ void stereo_mdct_core_enc_fx(
FOR( n = 0; n < nSubframes; n++ )
{
- q_spec = sub( 31, sts[ch]->hTcxEnc->spectrum_e[n] );
-
IF( sts[ch]->hTcxEnc->tns_ms_flag[n] )
{
exp = add( s_max( mdst_spectrum_e[ch][n], sts[ch]->hTcxEnc->spectrum_e[n] ), 1 );
@@ -443,16 +434,18 @@ void stereo_mdct_core_enc_fx(
/* power spectrum: MDCT^2 + MDST^2 */
FOR( i = 0; i < L_subframeTCX; i++ )
{
- W_tmp = W_mac_32_32( W_mult_32_32( inv_mdst_spectrum_fx[ch][n][i], inv_mdst_spectrum_fx[ch][n][i] ), inv_spectrum_fx[ch][n][i], inv_spectrum_fx[ch][n][i] ); /* 2*q_spec+1 */
- tmp_s = W_norm( W_tmp );
- W_tmp = W_shl( W_tmp, tmp_s ); /* 2*q_spec+1+tmp_s */
- powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_tmp ); /* 2*q_spec+1+tmp_s-32 */
- tmp_q_psi[n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
+ mdst = L_shl( mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp
+ mdct = L_shl( sts[ch]->hTcxEnc->spectrum_fx[n][i], shift2 ); // exp: exp
+ imdst = L_shl( inv_mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp
+ imdct = L_shl( inv_spectrum_fx[ch][n][i], shift2 ); // exp: exp
+
+ W_tmp = W_mac_32_32( W_mult_32_32( imdct, imdct ), imdst, imdst ); // exp: 2*exp
+ norm = W_norm( W_tmp );
+ powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*exp-norm
+ q_powerSpecMsInv_fx[ch][n][i] = sub( 31, sub( shl( exp, 1 ), norm ) );
move32();
move16();
- mdst = L_shl( mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp
- mdct = L_shl( sts[ch]->hTcxEnc->spectrum_fx[n][i], shift2 ); // exp: exp
powerSpec64[ch][i + n * L_subframeTCX] = W_mac_32_32( W_mult_32_32( mdct, mdct ), mdst, mdst ); // exp: 2*exp
move64();
}
@@ -463,33 +456,35 @@ void stereo_mdct_core_enc_fx(
{
IF( NE_16( hStereoMdct->mdct_stereo_mode[n], SMDCT_DUAL_MONO ) )
{
+ exp = shl( add( sts[ch]->hTcxEnc->spectrum_e[n], 1 ), 1 ); // 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)
/* power spectrum: MDCT^2 + MDST^2 */
- W_tmp = W_mult_32_32( inv_spectrum_fx[ch][n][0], inv_spectrum_fx[ch][n][0] ); /* 2*q_spec+1 */
- tmp_s = W_norm( W_tmp );
- W_tmp = W_shl( W_tmp, tmp_s ); /* 2*q_spec+1+tmp_s */
- powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_tmp ); /* 2*q_spec+1+tmp_s-32 */
- tmp_q_psi[n][0] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
+ mdct = L_shr( inv_spectrum_fx[ch][n][0], 1 ); // exp: sts[ch]->hTcxEnc->spectrum_e[n]+1
+ W_tmp = W_mult_32_32( mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp)
+ norm = W_norm( W_tmp );
+ powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm)
+ q_powerSpecMsInv_fx[ch][n][0] = sub( 31, sub( exp, norm ) );
move32();
move16();
FOR( i = 1; i < L_subframeTCX - 1; i++ )
{
- Word32 mdst_fx = L_sub( inv_spectrum_fx[ch][n][i + 1], inv_spectrum_fx[ch][n][i - 1] ); /* An MDST estimate q_spec*/
-
- W_tmp = W_mac_32_32( W_mult_32_32( mdst_fx, mdst_fx ), inv_spectrum_fx[ch][n][i], inv_spectrum_fx[ch][n][i] ); /* 2*q_spec+1 */
- tmp_s = W_norm( W_tmp );
- W_tmp = W_shl( W_tmp, tmp_s ); /* 2*q_spec+1+tmp_s */
- powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_tmp ); /* 2*q_spec+1+tmp_s-32 */
- tmp_q_psi[n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
+ /* float mdst = ( inv_spectrum[ch][n][i + 1] - inv_spectrum[ch][n][i - 1] );
+ powerSpecMsInv[ch][n][i] = mdst * mdst + inv_spectrum[ch][n][i] * inv_spectrum[ch][n][i]; */
+ mdst = L_sub( L_shr( inv_spectrum_fx[ch][n][i + 1], 1 ), L_shr( inv_spectrum_fx[ch][n][i - 1], 1 ) ); // exp: sts[ch]->hTcxEnc->spectrum_e[n]+1
+ mdct = L_shr( inv_spectrum_fx[ch][n][i], 1 ); // exp: sts[ch]->hTcxEnc->spectrum_e[n]+1
+ W_tmp = W_mac_32_32( W_mult_32_32( mdst, mdst ), mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp)
+ norm = W_norm( W_tmp );
+ powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm)
+ q_powerSpecMsInv_fx[ch][n][i] = sub( 31, sub( exp, norm ) );
move32();
move16();
}
- W_tmp = W_mult_32_32( inv_spectrum_fx[ch][n][L_subframeTCX - 1], inv_spectrum_fx[ch][n][L_subframeTCX - 1] ); /* 2*q_spec+1 */
- tmp_s = W_norm( W_tmp );
- W_tmp = W_shl( W_tmp, tmp_s ); /* 2*q_spec+1+tmp_s */
- powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_tmp ); /* 2*q_spec+1+tmp_s-32 */
- tmp_q_psi[n][L_subframeTCX - 1] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32
+ mdct = L_shr( inv_spectrum_fx[ch][n][L_subframeTCX - 1], 1 ); // exp: sts[ch]->hTcxEnc->spectrum_e[n]+1
+ W_tmp = W_mult_32_32( mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp)
+ norm = W_norm( W_tmp );
+ powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm)
+ q_powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = sub( 31, sub( exp, norm ) );
move32();
move16();
}
@@ -515,32 +510,6 @@ void stereo_mdct_core_enc_fx(
move16();
}
}
-
- /* Aligning the Q-factors */
- {
- Word16 q_temp = Q31;
- move16();
- FOR( n = 0; n < nSubframes; n++ )
- {
- FOR( i = 0; i < L_subframeTCX; i++ )
- {
- if ( powerSpecMsInv_fx[ch][n][i] != 0 )
- {
- q_temp = s_min( q_temp, tmp_q_psi[n][i] );
- }
- }
- }
- FOR( n = 0; n < nSubframes; n++ )
- {
- FOR( i = 0; i < L_subframeTCX; i++ )
- {
- powerSpecMsInv_fx[ch][n][i] = L_shr_sat( powerSpecMsInv_fx[ch][n][i], sub( tmp_q_psi[n][i], q_temp ) );
- move32();
- }
- }
- exp_powSpecMsInv[ch] = sub( Q31, q_temp );
- move16();
- }
}
FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
@@ -658,7 +627,7 @@ void stereo_mdct_core_enc_fx(
move16();
ProcessStereoIGF_fx( hStereoMdct, sts, ms_mask, orig_spectrum_fx, sub( Q31, p_orig_spectrum_e[0] ), sub( Q31, p_orig_spectrum_e[1] ),
- p_powerSpec_fx, exp_powSpec, powerSpecMsInv_fx, exp_powSpecMsInv, inv_spectrum_fx, exp_inv_spectrum,
+ p_powerSpec_fx, exp_powSpec, powerSpecMsInv_fx, q_powerSpecMsInv_fx, inv_spectrum_fx, exp_inv_spectrum,
n, hCPE->hCoreCoder[0]->sp_aud_decision0, hCPE->hCoreCoder[0]->element_brate, 0 );
}
ELSE
@@ -718,7 +687,7 @@ void stereo_mdct_core_enc_fx(
q_spectrum = sub( Q31, st->hTcxEnc->spectrum_e[n] );
Scale_sig32( orig_spectrum_fx[ch][n], st->hIGFEnc->infoStopLine, sub( q_spectrum, sub( Q31, p_orig_spectrum_e[ch] ) ) ); /* q_spectrum */
- ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], &q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 );
+ ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 );
}
}
}
@@ -795,7 +764,7 @@ void stereo_mdct_core_enc_fx(
Scale_sig32( orig_spectrum_fx[ch][n], st->hIGFEnc->infoStopLine, sub( q_spectrum, sub( Q31, p_orig_spectrum_e[ch] ) ) ); /* q_spectrum */
- ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], &q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 );
+ ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 );
}
}
}
diff --git a/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c b/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c
index 9a1198e20608799d30d2c37da62da198d0eb75f0..2f1b7d6c8d6a37248247971dece778020c06e8e5 100644
--- a/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c
+++ b/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c
@@ -190,7 +190,8 @@ void stereo_coder_tcx_fx(
Word32 *inv_mdst_spectrum_fx[CPE_CHANNELS][NB_DIV],
/* i/o: inverse MDST spectrum */ // Q( q_spec ) (same as spectrum buffer in hTcxEnc)
const Word16 mct_on, /* i : flag mct block (1) or stereo (0) Q0*/
- Word16 q_spec )
+ Word16 exp_spec,
+ Word16 exp_mdct_spec )
{
STEREO_MDCT_BAND_PARAMETERS *sfbConf = NULL;
Word32 nrgRatio_fx[CPE_CHANNELS];
@@ -255,8 +256,8 @@ void stereo_coder_tcx_fx(
tmp = Inv16( extract_h( nrgRatio_fx[k] ), &e_tmp ); /* Q15-e_tmp */
tmp = shl( tmp, e_tmp ); /* Q15 */
- v_multc_fixed_16( sts[1]->hTcxEnc->spectrum_fx[k], tmp, sts[1]->hTcxEnc->spectrum_fx[k], L_frameTCX ); /* Q31-spectrum_e[k] */
- v_multc_fixed_16( mdst_spectrum_fx[1][k], tmp, mdst_spectrum_fx[1][k], L_frameTCX ); /* q_spec */
+ v_multc_fixed_16( sts[1]->hTcxEnc->spectrum_fx[k], tmp, sts[1]->hTcxEnc->spectrum_fx[k], L_frameTCX ); /* exp: exp_spec */
+ v_multc_fixed_16( mdst_spectrum_fx[1][k], tmp, mdst_spectrum_fx[1][k], L_frameTCX ); /* exp: exp_mdct_spec */
}
ELSE IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( nrgRatio_fx[k], nrgRatio_e[k], ONE_IN_Q27, 4 ), -1 ) && LT_16( k, EQ_16( sts[0]->core, TCX_20_CORE ) ? 1 : NB_DIV ) )
{
@@ -264,8 +265,8 @@ void stereo_coder_tcx_fx(
L_frameTCX = idiv1616( L_frameTCX, ( sts[0]->core == TCX_20_CORE ) ? 1 : NB_DIV ); /* Q0 */
/* This operation is resulting in some high MLDs in fixed point. */
- v_multc_fixed_16( sts[0]->hTcxEnc->spectrum_fx[k], extract_l( L_shr( nrgRatio_fx[k], 16 - nrgRatio_e[k] ) ), sts[0]->hTcxEnc->spectrum_fx[k], L_frameTCX ); /* Q31-spectrum_e[k] */
- v_multc_fixed_16( mdst_spectrum_fx[0][k], extract_l( L_shr( nrgRatio_fx[k], 16 - nrgRatio_e[k] ) ), mdst_spectrum_fx[0][k], L_frameTCX ); /* q_spec */
+ v_multc_fixed_16( sts[0]->hTcxEnc->spectrum_fx[k], extract_l( L_shr( nrgRatio_fx[k], 16 - nrgRatio_e[k] ) ), sts[0]->hTcxEnc->spectrum_fx[k], L_frameTCX ); /* exp: exp_spec */
+ v_multc_fixed_16( mdst_spectrum_fx[0][k], extract_l( L_shr( nrgRatio_fx[k], 16 - nrgRatio_e[k] ) ), mdst_spectrum_fx[0][k], L_frameTCX ); /* exp: exp_mdct_spec */
}
}
}
@@ -356,7 +357,7 @@ void stereo_coder_tcx_fx(
move16();
const Word16 sfbWidth = sub( endLine, startLine );
- nrgRatio_e[0] = nrgRatio_e[1] = sub( Q31, q_spec );
+ nrgRatio_e[0] = nrgRatio_e[1] = exp_spec;
move16();
move16();
@@ -370,10 +371,12 @@ void stereo_coder_tcx_fx(
{
Word32 tmp_fx;
Word16 tmp_e;
- tmp_e = sub( Q31, q_spec );
+ tmp_e = exp_mdct_spec;
+ move16();
tmp_fx = sum2_32_fx( &mdst_spectrum_fx[0][k][startLine], sfbWidth, &tmp_e ); /* Q31-tmp_e */
nrgRatio_fx[0] = BASOP_Util_Add_Mant32Exp( nrgRatio_fx[0], nrgRatio_e[0], tmp_fx, tmp_e, &nrgRatio_e[0] ); /* Q31-nrgRatio_e[0] */
- tmp_e = sub( Q31, q_spec );
+ tmp_e = exp_mdct_spec;
+ move16();
tmp_fx = sum2_32_fx( &mdst_spectrum_fx[1][k][startLine], sfbWidth, &tmp_e ); /* Q31-tmp_e */
nrgRatio_fx[1] = BASOP_Util_Add_Mant32Exp( nrgRatio_fx[1], nrgRatio_e[1], tmp_fx, tmp_e, &nrgRatio_e[1] ); /* Q31-nrgRatio_e[1] */
}
@@ -382,14 +385,14 @@ void stereo_coder_tcx_fx(
Word16 fTemp_e, tmp_e;
Word32 fTemp_fx = BASOP_Util_Add_Mant32Exp( nrgRatio_fx[0], nrgRatio_e[0], nrgRatio_fx[1], nrgRatio_e[1], &fTemp_e ); /* Q31-fTemp_e */
fTemp_e = sub( fTemp_e, 1 );
- nrgRatio_fx[0] = BASOP_Util_Divide3232_Scale_cadence( fTemp_fx, nrgRatio_fx[0], &tmp_e ); /* Q31 - tmp_e - fTemp_e + nrgRatio_e[0] */
+ nrgRatio_fx[0] = BASOP_Util_Divide3232_Scale_newton( fTemp_fx, nrgRatio_fx[0], &tmp_e ); /* Q31 - tmp_e - fTemp_e + nrgRatio_e[0] */
move32();
nrgRatio_e[0] = add( tmp_e, sub( fTemp_e, nrgRatio_e[0] ) );
move16();
nrgRatio_fx[0] = Sqrt32( nrgRatio_fx[0], &nrgRatio_e[0] ); /* Q31-nrgRatio_e[0] */
move32();
- nrgRatio_fx[1] = BASOP_Util_Divide3232_Scale_cadence( fTemp_fx, nrgRatio_fx[1], &tmp_e ); /* Q31 - tmp_e - fTemp_e + nrgRatio_e[1] */
+ nrgRatio_fx[1] = BASOP_Util_Divide3232_Scale_newton( fTemp_fx, nrgRatio_fx[1], &tmp_e ); /* Q31 - tmp_e - fTemp_e + nrgRatio_e[1] */
move32();
nrgRatio_e[1] = add( tmp_e, sub( fTemp_e, nrgRatio_e[1] ) );
move16();
@@ -426,15 +429,15 @@ void stereo_coder_tcx_fx(
move32();
- v_multc_fixed( &sts[0]->hTcxEnc->spectrum_fx[k][startLine], nrgRatio_fx[0], &sts[0]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth ); /* q_spec+30-31 */
- v_multc_fixed( &mdst_spectrum_fx[0][k][startLine], nrgRatio_fx[0], &mdst_spectrum_fx[0][k][startLine], sfbWidth ); /* q_spec+30-31 */
- scale_sig32( &sts[0]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth, Q1 ); // Scaling back to q_spec
- scale_sig32( &mdst_spectrum_fx[0][k][startLine], sfbWidth, Q1 ); // Scaling back to q_spec
+ v_multc_fixed( &sts[0]->hTcxEnc->spectrum_fx[k][startLine], nrgRatio_fx[0], &sts[0]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth ); /* exp: exp_spec+1 */
+ v_multc_fixed( &mdst_spectrum_fx[0][k][startLine], nrgRatio_fx[0], &mdst_spectrum_fx[0][k][startLine], sfbWidth ); /* exp: exp_mdct_spec+1 */
+ scale_sig32( &sts[0]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth, Q1 ); // exp: exp_spec
+ scale_sig32( &mdst_spectrum_fx[0][k][startLine], sfbWidth, Q1 ); // exp: exp_mdct_spec
- v_multc_fixed( &sts[1]->hTcxEnc->spectrum_fx[k][startLine], nrgRatio_fx[1], &sts[1]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth ); /* q_spec+30-31 */
- v_multc_fixed( &mdst_spectrum_fx[1][k][startLine], nrgRatio_fx[1], &mdst_spectrum_fx[1][k][startLine], sfbWidth ); /* q_spec+30-31 */
- scale_sig32( &sts[1]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth, Q1 ); // Scaling back to q_spec
- scale_sig32( &mdst_spectrum_fx[1][k][startLine], sfbWidth, Q1 ); // Scaling back to q_spec
+ v_multc_fixed( &sts[1]->hTcxEnc->spectrum_fx[k][startLine], nrgRatio_fx[1], &sts[1]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth ); /* exp: exp_spec+1 */
+ v_multc_fixed( &mdst_spectrum_fx[1][k][startLine], nrgRatio_fx[1], &mdst_spectrum_fx[1][k][startLine], sfbWidth ); /* exp: exp_mdct_spec+1 */
+ scale_sig32( &sts[1]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth, Q1 ); // exp: exp_spec
+ scale_sig32( &mdst_spectrum_fx[1][k][startLine], sfbWidth, Q1 ); // exp: exp_mdct_spec
}
}
}
@@ -469,11 +472,11 @@ void stereo_coder_tcx_fx(
nAvailBitsMS[k] = idiv1616( nAvailBitsMS[k], nSubframes ); /* Q0 */
move16();
- MsStereoDecision_fx( sfbConf, sts[0]->hTcxEnc->spectrum_fx[k], sts[1]->hTcxEnc->spectrum_fx[k], inv_spectrum_fx[0][k], inv_spectrum_fx[1][k], q_spec, &hStereoMdct->mdct_stereo_mode[k], &ms_mask[k][0], nAvailBitsMS[k] );
+ MsStereoDecision_fx( sfbConf, sts[0]->hTcxEnc->spectrum_fx[k], sts[1]->hTcxEnc->spectrum_fx[k], inv_spectrum_fx[0][k], inv_spectrum_fx[1][k], sub( Q31, exp_spec ), &hStereoMdct->mdct_stereo_mode[k], &ms_mask[k][0], nAvailBitsMS[k] );
IF( sts[0]->igf )
{
- IGFEncStereoEncoder_fx( sfbConf, sts[0]->hIGFEnc, sts[0]->hTcxEnc->spectrum_fx[k], sts[1]->hTcxEnc->spectrum_fx[k], q_spec, &ms_mask[k][0],
+ IGFEncStereoEncoder_fx( sfbConf, sts[0]->hIGFEnc, sts[0]->hTcxEnc->spectrum_fx[k], sts[1]->hTcxEnc->spectrum_fx[k], sub( Q31, exp_spec ), &ms_mask[k][0],
&hStereoMdct->IGFStereoMode[k], hStereoMdct->mdct_stereo_mode[k], (Word16) EQ_16( sts[0]->core, TCX_20_CORE ), (Word16) EQ_16( sts[0]->last_core, ACELP_CORE ) );
}
ELSE
diff --git a/lib_enc/ivas_stereo_switching_enc_fx.c b/lib_enc/ivas_stereo_switching_enc_fx.c
index 5f1208ba794687db7eb81e76deb2b7cd32935510..a54e56fb9a42651b8f8a61ea9c092cb971cd0b1d 100644
--- a/lib_enc/ivas_stereo_switching_enc_fx.c
+++ b/lib_enc/ivas_stereo_switching_enc_fx.c
@@ -628,23 +628,6 @@ ivas_error stereo_memory_enc_fx(
return error;
}
-static void v_multc_fixed_32_16(
- const Word16 x[], /* i : Input vector Qx*/
- const Word32 c, /* i : Constant Q31*/
- Word32 y[], /* o : Output vector that contains c*x Qx*/
- const Word16 N /* i : Vector length Q0*/
-)
-{
- Word16 i;
-
- FOR( i = 0; i < N; i++ )
- {
- y[i] = Mpy_32_16_1( c, x[i] ); /* Q16+Qx */
- move32();
- }
-
- return;
-}
/*-------------------------------------------------------------------*
* Function stereo_switching_enc()
*
@@ -653,7 +636,7 @@ static void v_multc_fixed_32_16(
void stereo_switching_enc_fx(
CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- Word16 old_input_signal_pri[], /* i : old input signal of primary channel q_inp*/
+ Word32 old_input_signal_pri[], /* i : old input signal of primary channel q_inp*/
const Word16 input_frame, /* i : input frame length Q0*/
const Word16 q_inp )
{
@@ -672,8 +655,8 @@ void stereo_switching_enc_fx(
{
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
- Copy( sts[n]->input_fx + input_frame - dft_ovl, hCPE->input_mem_fx[n], dft_ovl ); /* sts[n]->q_inp */
- hCPE->q_input_mem[n] = sts[n]->q_inp;
+ Copy_Scale_sig32_16( sts[n]->input32_fx + input_frame - dft_ovl, hCPE->input_mem_fx[n], dft_ovl, 0 ); /* sts[n]->q_inp32 - 16*/
+ hCPE->q_input_mem[n] = sub( sts[n]->q_inp32, 16 );
move16();
}
}
@@ -681,9 +664,9 @@ void stereo_switching_enc_fx(
/* save original stereo input (MDCT overlap part) for both channels in unused old input of right channel for possible DFT->MDCT transition */
IF( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) )
{
- Copy( sts[0]->input_fx + sub( (Word16) Mpy_32_32( sts[0]->input_Fs, 42949673 /* 1/50 in Q31*/ ), sts[0]->encoderLookahead_FB ), sts[1]->input_fx - shl( sts[0]->encoderLookahead_FB, 1 ), sts[0]->encoderLookahead_FB ); /* sts[0]->q_inp */
+ Copy32( sts[0]->input32_fx + sub( extract_l( Mpy_32_32( sts[0]->input_Fs, 42949673 /* 1/50 in Q31*/ ) ), sts[0]->encoderLookahead_FB ), sts[1]->input32_fx - shl( sts[0]->encoderLookahead_FB, 1 ), sts[0]->encoderLookahead_FB ); /* sts[0]->q_inp32 */
- Copy( sts[1]->input_fx + sub( (Word16) Mpy_32_32( sts[1]->input_Fs, 42949673 /* 1/50 in Q31*/ ), sts[1]->encoderLookahead_FB ), sts[1]->input_fx - sts[1]->encoderLookahead_FB, sts[1]->encoderLookahead_FB ); /* sts[1]->q_inp */
+ Copy32( sts[1]->input32_fx + sub( extract_l( Mpy_32_32( sts[1]->input_Fs, 42949673 /* 1/50 in Q31*/ ) ), sts[1]->encoderLookahead_FB ), sts[1]->input32_fx - sts[1]->encoderLookahead_FB, sts[1]->encoderLookahead_FB ); /* sts[1]->q_inp32 */
}
@@ -694,7 +677,7 @@ void stereo_switching_enc_fx(
/* window DFT synthesis overlap memory @input_Fs, primary channel */
FOR( i = 0; i < dft_ovl; i++ )
{
- hCPE->hStereoDft->output_mem_dmx_fx[i] = L_shr( Mpy_32_16_r( hCPE->hStereoDft->win_fx[dft_ovl - 1 - i], old_input_signal_pri[input_frame - dft_ovl + i] ), add( q_inp, 1 ) ); // Q31 + q_inp - Q15 - (q_inp + 1) -> Q15
+ hCPE->hStereoDft->output_mem_dmx_fx[i] = L_shl( Mpy_32_32_r( hCPE->hStereoDft->win_fx[dft_ovl - 1 - i], old_input_signal_pri[input_frame - dft_ovl + i] ), sub( 15, q_inp ) ); // Q15
move32();
}
/* reset 48kHz BWE overlap memory */
@@ -728,7 +711,7 @@ void stereo_switching_enc_fx(
/* update DFT synthesis overlap memory @12.8kHz */
FOR( i = 0; i < STEREO_DFT_OVL_12k8; i++ )
{
- hCPE->hStereoDft->output_mem_dmx_12k8_fx[i] = L_shr( Mpy_32_16_r( hCPE->hStereoDft->win_12k8_fx[STEREO_DFT_OVL_12k8 - 1 - i], sts[0]->buf_speech_enc[L_FRAME32k + L_FRAME - STEREO_DFT_OVL_12k8 + i] ), q_inp + 1 ); /* Q15 */
+ hCPE->hStereoDft->output_mem_dmx_12k8_fx[i] = L_shr( Mpy_32_16_r( hCPE->hStereoDft->win_12k8_fx[STEREO_DFT_OVL_12k8 - 1 - i], sts[0]->buf_speech_enc[L_FRAME32k + L_FRAME - STEREO_DFT_OVL_12k8 + i] ), sub( 16, sts[0]->exp_buf_speech_enc ) ); /* Q15 */
move32();
}
Word16 q_dmx = Q15;
@@ -816,10 +799,10 @@ void stereo_switching_enc_fx(
offset = sub( sts[0]->cldfbAnaEnc->p_filter_length, sts[0]->cldfbAnaEnc->no_channels ); /* Q0 */
FOR( i = 0; i < offset; i++ )
{
- sts[0]->cldfbAnaEnc->cldfb_state_fx[i] = L_deposit_h( old_input_signal_pri[input_frame - offset - NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) + i] ); /* Q16+q_inp */
+ sts[0]->cldfbAnaEnc->cldfb_state_fx[i] = old_input_signal_pri[input_frame - offset - NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) + i]; /* q_inp */
move32();
}
- sts[0]->cldfbAnaEnc->Q_cldfb_state = add( Q16, q_inp );
+ sts[0]->cldfbAnaEnc->Q_cldfb_state = q_inp;
move16();
}
@@ -838,18 +821,18 @@ void stereo_switching_enc_fx(
test();
IF( hCPE->hStereoTD != NULL && EQ_16( hCPE->hStereoTD->tdm_last_ratio_idx, LRTD_STEREO_LEFT_IS_PRIM ) )
{
- v_multc_fixed_32_16( hCPE->hCoreCoder[1]->old_input_signal_fx + sub( input_frame, add( offset, NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) ) ), -MAX_32, sts[1]->cldfbAnaEnc->cldfb_state_fx, offset ); /* Q16+q_inp */
- sts[1]->cldfbAnaEnc->Q_cldfb_state = add( Q16, q_inp );
+ v_multc_fixed( hCPE->hCoreCoder[1]->old_input_signal32_fx + sub( input_frame, add( offset, NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) ) ), -MAX_32, sts[1]->cldfbAnaEnc->cldfb_state_fx, offset ); /* Q16+q_inp */
+ sts[1]->cldfbAnaEnc->Q_cldfb_state = q_inp;
move16();
}
ELSE
{
FOR( i = 0; i < offset; i++ )
{
- sts[1]->cldfbAnaEnc->cldfb_state_fx[i] = L_shr( L_deposit_h( hCPE->hCoreCoder[1]->old_input_signal_fx[input_frame - offset - NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) + i] ), 5 ); /* Q11+q_inp */
+ sts[1]->cldfbAnaEnc->cldfb_state_fx[i] = ( hCPE->hCoreCoder[1]->old_input_signal32_fx[input_frame - offset - NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) + i] ); /* q_inp */
move32();
}
- sts[1]->cldfbAnaEnc->Q_cldfb_state = add( Q16 - 5, q_inp );
+ sts[1]->cldfbAnaEnc->Q_cldfb_state = q_inp;
move16();
}
@@ -915,6 +898,8 @@ void stereo_switching_enc_fx(
IF( sts[0]->hLPDmem != NULL )
{
Copy( sts[0]->hLPDmem->old_exc, sts[1]->hLPDmem->old_exc, L_EXC_MEM );
+ sts[1]->hLPDmem->q_lpd_old_exc = sts[0]->hLPDmem->q_lpd_old_exc;
+ move16();
}
Copy( sts[0]->lsf_old_fx, sts[1]->lsf_old_fx, M ); /* Qlog2(2.56) */
Copy( sts[0]->lsp_old_fx, sts[1]->lsp_old_fx, M ); /* Q15 */
@@ -929,9 +914,9 @@ void stereo_switching_enc_fx(
tmp_fx = div_s( 64, shl( sts[0]->encoderLookahead_FB, Q6 ) ); /* Q15 */
FOR( i = 0; i < sts[0]->encoderLookahead_FB; i++ )
{
- sts[1]->input32_fx[-sts[0]->encoderLookahead_FB + i] = L_shr( Mpy_32_16_1( L_add( Mpy_32_16_1( sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i], sts[0]->encoderLookahead_FB - i ), Mpy_32_16_1( sts[1]->input32_fx[-sts[0]->encoderLookahead_FB + i], i ) ), tmp_fx ), 13 ); /* q_inp32+0-15+15-15-13 */
+ sts[1]->input32_fx[-sts[0]->encoderLookahead_FB + i] = ( Mpy_32_16_1( L_add( imult3216( sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i], sts[0]->encoderLookahead_FB - i ), imult3216( sts[1]->input32_fx[-sts[0]->encoderLookahead_FB + i], i ) ), tmp_fx ) ); /* sts[0]->q_inp32 */
move32();
- sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i] = L_shr( Mpy_32_16_1( L_add( Mpy_32_16_1( sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i], sts[0]->encoderLookahead_FB - i ), Mpy_32_16_1( sts[1]->input32_fx[-2 * sts[0]->encoderLookahead_FB + i], i ) ), tmp_fx ), 13 ); /* q_inp32+0-15+15-15-13 */
+ sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i] = ( Mpy_32_16_1( L_add( imult3216( sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i], sts[0]->encoderLookahead_FB - i ), imult3216( sts[1]->input32_fx[-2 * sts[0]->encoderLookahead_FB + i], i ) ), tmp_fx ) ); /* sts[0]->q_inp32 */
move32();
}
/* restore continuous signal in right channel (part of old_output was used to store original left channel) */
diff --git a/lib_enc/ivas_stereo_td_analysis_fx.c b/lib_enc/ivas_stereo_td_analysis_fx.c
index 6ffd05c0c488dcfb4e56c7a582c7f79c21ed4628..909d0c206f5dd2718f1a229b6d52ef6e42aba110 100644
--- a/lib_enc/ivas_stereo_td_analysis_fx.c
+++ b/lib_enc/ivas_stereo_td_analysis_fx.c
@@ -340,8 +340,8 @@ Word16 stereo_tdm_ener_analysis_fx(
test();
IF( ( LE_32( hStereoTD->tdm_lt_rms_L_fx, rms_thd_fx ) && LE_32( hStereoTD->tdm_lt_rms_R_fx, L_shl( rms_thd_fx, 1 ) ) ) ||
( LE_32( hStereoTD->tdm_lt_rms_R_fx, rms_thd_fx ) && LE_32( hStereoTD->tdm_lt_rms_L_fx, L_shl( rms_thd_fx, 1 ) ) ) ||
- ( sts[0]->hVAD->hangover_cnt != 0 && LT_16( sts[1]->hNoiseEst->Etot_last_fx, 3072 /*12 in Q8*/ ) ) ||
- ( sts[1]->hVAD->hangover_cnt != 0 && LT_16( sts[0]->hNoiseEst->Etot_last_fx, 3072 /*12 in Q8*/ ) ) ||
+ ( sts[0]->hVAD->hangover_cnt != 0 && LT_32( sts[1]->hNoiseEst->Etot_last_32fx, 201326592 /*12 in Q24*/ ) ) ||
+ ( sts[1]->hVAD->hangover_cnt != 0 && LT_32( sts[0]->hNoiseEst->Etot_last_32fx, 201326592 /*12 in Q24*/ ) ) ||
( NE_16( sts[0]->hSpMusClas->past_dec[0], sts[1]->hSpMusClas->past_dec[0] ) ) )
{
test();
@@ -873,8 +873,8 @@ static Word16 Get_dt_lt_ener_fx(
move32();
*tdm_lt_rms_R = L_shl( Mpy_32_32( 1932735282 /* 0.9f in Q31 */, rms_R ), sub( Q16, q_rms_R ) ); // (Q31, q_rms_R) -> q_rms_R -> Q16
move32();
- L_tmp = Mpy_32_16_1( 1932735282 /* 0.9f in Q31 */, sts[0]->hNoiseEst->Etot_last_fx ); //(Q31, Q8) -> Q24
- sts[1]->hNoiseEst->Etot_last_fx = extract_h( L_tmp ); // (Q24 >> Q16) -> Q8
+ L_tmp = Mpy_32_32( 1932735282 /* 0.9f in Q31 */, sts[0]->hNoiseEst->Etot_last_32fx ); //(Q31, Q24) -> Q24
+ sts[1]->hNoiseEst->Etot_last_32fx = L_tmp; // (Q24 >> Q16) -> Q8
sts[1]->hVAD->hangover_cnt = 0;
move16();
}
@@ -2013,7 +2013,7 @@ static void Get_corr_n_fx(
}
ELSE
{
- *ic_Lm = BASOP_Util_Divide3232_Scale_cadence( corrL, ener, &exp_diff ); // (Q31 - exp_diff)
+ *ic_Lm = BASOP_Util_Divide3232_Scale_newton( corrL, ener, &exp_diff ); // (Q31 - exp_diff)
move32();
IF( *ic_Lm == 0 )
{
@@ -2025,7 +2025,7 @@ static void Get_corr_n_fx(
*q_ic_Lm = sub( Q31, exp_diff );
move16();
}
- *ic_Rm = BASOP_Util_Divide3232_Scale_cadence( corrR, ener, &exp_diff ); // (Q31 - exp_diff)
+ *ic_Rm = BASOP_Util_Divide3232_Scale_newton( corrR, ener, &exp_diff ); // (Q31 - exp_diff)
move16();
IF( *ic_Rm == 0 )
{
@@ -2041,7 +2041,7 @@ static void Get_corr_n_fx(
/* *es_em = 10 * ( log10f( sqrtf( ener_side / len ) ) - log10f( sqrtf( ener / len ) ) );
is simplified to
*es_em = 10 * ( log10f( sqrtf( ener_side / ener ) ) ); */
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( ener_side, ener, &exp_diff ); // (Q31 - exp_diff)
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( ener_side, ener, &exp_diff ); // (Q31 - exp_diff)
L_tmp = Sqrt32( L_tmp, &exp_diff ); /* (Q31 - exp_diff) */
L_tmp = BASOP_Util_Log2( L_tmp ); /* Q25 */
*es_em = Mpy_32_32( Mpy_32_32( L_add( L_tmp, L_shl( exp_diff, Q25 ) ), LOG10_2_Q31 ), TEN_IN_Q27 ); // (Q25, Q27) -> Q21
diff --git a/lib_enc/ivas_tcx_core_enc_fx.c b/lib_enc/ivas_tcx_core_enc_fx.c
index fd84d2f214607c54aa281af61db11af3acfc41d6..5f2e9a8e094bc63e7bcff04b9133fe9530f4b5ff 100644
--- a/lib_enc/ivas_tcx_core_enc_fx.c
+++ b/lib_enc/ivas_tcx_core_enc_fx.c
@@ -1086,7 +1086,7 @@ Word16 ivas_acelp_tcx20_switching_fx(
nrg_s = BASOP_Util_Add_Mant32Exp( nrg_s, e_num, Mpy_32_32( y_fx[i], y_fx[i] ), shl( e_x, 1 ), &e_num ); /* Q31-e_num */
nrg_n = BASOP_Util_Add_Mant32Exp( nrg_n, e_den, Mpy_32_32( x_fx[i], x_fx[i] ), shl( temp_ene_e, 1 ), &e_den ); /* Q31-e_den */
}
- res_cod_SNR_M[iter] = BASOP_Util_Divide3232_Scale_cadence( nrg_s, nrg_n, &temp_e ); /* Q31-res_cod_SNR_M_e[iter] */
+ res_cod_SNR_M[iter] = BASOP_Util_Divide3232_Scale_newton( nrg_s, nrg_n, &temp_e ); /* Q31-res_cod_SNR_M_e[iter] */
move32();
res_cod_SNR_M_e[iter] = add( temp_e, sub( e_num, e_den ) );
move16();
diff --git a/lib_enc/ivas_td_low_rate_enc_fx.c b/lib_enc/ivas_td_low_rate_enc_fx.c
index 77ddb35aaf38b39ea89084727e9e325ef7dccb92..d10527a241855fcf154159a26d233abe764773e3 100644
--- a/lib_enc/ivas_td_low_rate_enc_fx.c
+++ b/lib_enc/ivas_td_low_rate_enc_fx.c
@@ -365,11 +365,12 @@ void encod_gen_2sbfr(
move16();
move16();
}
+
/*-----------------------------------------------------------------*
* Prepare TBE excitation
*-----------------------------------------------------------------*/
- prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], bwe_exc, 0, NULL, Q_new, T0, T0_frac, coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag );
+ prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], bwe_exc, 0, NULL, Q_new, T0, T0_frac, coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag );
voice_factors[i_subfr / L_SUBFR + 1] = voice_factors[i_subfr / L_SUBFR]; /* Q15 */
move16();
@@ -378,6 +379,7 @@ void encod_gen_2sbfr(
* Synthesize speech to update mem_syn_flt[].
* Update A(z) filters
*-----------------------------------------------------------------*/
+
Syn_filt_s( 1, p_Aq, M, &exc[i_subfr], &syn[i_subfr], 2 * L_SUBFR, hLPDmem->mem_syn, 1 );
p_Aw += 2 * ( M + 1 );
p_Aq += 2 * ( M + 1 );
diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h
index 8cf6be1cd0e6ca1385d5c7ec3588583ea115ac20..16fc9fe4b1b6d07c9fd9947b0b9482b3143b23d2 100644
--- a/lib_enc/lib_enc.h
+++ b/lib_enc/lib_enc.h
@@ -302,6 +302,10 @@ ivas_error IVAS_ENC_EncodeFrameToSerial(
Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */
UWord16 *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME */
UWord16 *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value */
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ int32_t frame
+#endif
);
/*! r: error code */
@@ -311,6 +315,10 @@ ivas_error IVAS_ENC_EncodeFrameToCompact(
const Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */
UWord8 *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */
UWord16 *numOutBits /* o : number of bits written to output bitstream */
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ int32_t frame
+#endif
);
/* Setter functions - apply changes to encoder configuration */
diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc_fx.c
similarity index 98%
rename from lib_enc/lib_enc.c
rename to lib_enc/lib_enc_fx.c
index 79b799c3887536503b820965373674f5d62ae5f9..32c26be28431c5601bdc278f7e48d0c49bdf054d 100644
--- a/lib_enc/lib_enc.c
+++ b/lib_enc/lib_enc_fx.c
@@ -1572,13 +1572,8 @@ ivas_error IVAS_ENC_GetDelay(
return IVAS_ERR_UNEXPECTED_NULL_POINTER;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
*delay = NS2SA_FX2( hEncoderConfig->input_Fs, get_delay_fx( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL, IVAS_AUDIO_CONFIG_INVALID ) );
move16();
-#else
- *delay = NS2SA_FX2( hEncoderConfig->input_Fs, get_delay_fx( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL ) ); /*Q0*/
- move16();
-#endif
*delay = imult1616( *delay, hEncoderConfig->nchan_inp ); /*Q0*/
move16();
@@ -1665,6 +1660,10 @@ ivas_error IVAS_ENC_EncodeFrameToSerial(
Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() Q0*/
UWord16 *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME Q0*/
UWord16 *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value Q0*/
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ int32_t frame
+#endif
)
{
Encoder_Struct *st_ivas;
@@ -1788,7 +1787,12 @@ ivas_error IVAS_ENC_EncodeFrameToSerial(
st_ivas->ind_list[i].nb_bits = -1;
move16();
}
-
+#ifdef DBG_BITSTREAM_ANALYSIS
+ for ( i = 0; i < st_ivas->ivas_max_num_indices; i++ )
+ {
+ memset( st_ivas->ind_list[i].function_name, 'A', 100 * sizeof( char ) );
+ }
+#endif
/* de-allocate old buffer of metadata indices */
IF( st_ivas->ind_list_metadata != NULL )
{
@@ -1928,7 +1932,12 @@ ivas_error IVAS_ENC_EncodeFrameToSerial(
ELSE
#endif
{
- write_indices_ivas_fx( st_ivas, outputBitStream, numOutBits );
+ write_indices_ivas_fx( st_ivas, outputBitStream, numOutBits
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ frame
+#endif
+ );
}
/* Reset switching flag before next call - can be set to "true" by some setters */
hIvasEnc->switchingActive = false;
@@ -2655,41 +2664,7 @@ static ivas_error sanitizeBandwidth_fx(
}
}
- IF( EQ_16( hEncoderConfig->ivas_format, MONO_FORMAT ) )
- {
-#if 0 // IVAS_fmToDo: temporary disabled to keep EVS bit-exactness -> to be verified
- if (max_bwidth_tmp == FB && hEncoderConfig->ivas_total_brate < ACELP_16k40)
- {
- if (hEncoderConfig->ivas_total_brate < ACELP_9k60)
- {
- max_bwidth_tmp = WB;
- }
- else
- {
- max_bwidth_tmp = SWB;
- }
- }
-
- if (max_bwidth_tmp == SWB && hEncoderConfig->ivas_total_brate < ACELP_9k60)
- {
- max_bwidth_tmp = WB;
- }
-
- /* in case of 8kHz input sampling or "-max_band NB", require the total bitrate to be below 24.40 kbps */
- if ((max_bwidth_tmp == NB || hEncoderConfig->input_Fs == 8000) && hEncoderConfig->ivas_total_brate > ACELP_24k40)
- {
- if (hEncoderConfig->input_Fs >= 16000)
- {
- max_bwidth_tmp = WB;
- }
- else
- {
- return IVAS_ERR_INVALID_BITRATE;
- }
- }
-#endif
- }
- ELSE
+ IF( NE_16( hEncoderConfig->ivas_format, MONO_FORMAT ) )
{
Word32 quo = 0, rem;
move32();
diff --git a/lib_enc/long_enr_fx.c b/lib_enc/long_enr_fx.c
index af57edd3bd4629ef64c1c16842bc91d572fd67c7..60c40b3fe770908e01a5e17cb49a89bd2c45f234 100644
--- a/lib_enc/long_enr_fx.c
+++ b/lib_enc/long_enr_fx.c
@@ -94,7 +94,7 @@ void ivas_long_enr_fx(
}
FOR( n = 0; n < n_chan; n++ )
{
- hFrontVad[n]->hNoiseEst->Etot_last_fx = Etot_LR[n]; /* Q8 */
+ hFrontVad[n]->hNoiseEst->Etot_last_32fx = L_deposit_h( Etot_LR[n] ); /* Q24 */
move16();
}
}
@@ -141,7 +141,7 @@ void ivas_long_enr_fx(
}
}
/* Update */
- st_fx->hNoiseEst->Etot_last_fx = Etot; /* Q8 */
+ st_fx->hNoiseEst->Etot_last_32fx = L_deposit_h( Etot ); /* Q24 */
move16();
}
diff --git a/lib_enc/lsf_enc_fx.c b/lib_enc/lsf_enc_fx.c
index 8fe425d740baaa1f32abe09edb9ca45d3b1c7a9e..23ed7d0c2489486806792721a6538f2ce3d37f2f 100644
--- a/lib_enc/lsf_enc_fx.c
+++ b/lib_enc/lsf_enc_fx.c
@@ -289,13 +289,16 @@ void lsf_enc_fx(
{
int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid, lsp_new, Aq, M, 0 );
}
+
/*------------------------------------------------------------------*
* Check LSF stability (distance between old LSFs and current LSFs)
*------------------------------------------------------------------*/
+
IF( NE_32( st_fx->core_brate, SID_2k40 ) )
{
st_fx->stab_fac_fx = lsf_stab_fx( lsf_new, st_fx->lsf_old_fx, 0, st_fx->L_frame );
}
+
return;
}
diff --git a/lib_enc/lsf_msvq_ma_enc.c b/lib_enc/lsf_msvq_ma_enc.c
deleted file mode 100644
index 60375ddcce113a6c5ac6236fdbd3afd55aec93e9..0000000000000000000000000000000000000000
--- a/lib_enc/lsf_msvq_ma_enc.c
+++ /dev/null
@@ -1,794 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-/*====================================================================================
- EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
- ====================================================================================*/
-
-#include
-#include "options.h"
-#include "cnst.h"
-#include "prot_fx.h"
-#include "rom_com.h"
-#include "rom_enc.h"
-#include "basop_proto_func.h"
-#include "wmc_auto.h"
-
-#ifndef swap
-#define swap( x, y, type ) \
- { \
- type u__p; \
- u__p = x; \
- x = y; \
- y = u__p; \
- }
-#endif
-
-/*--------------------------------------------------------------------------*
- * Local constants
- *--------------------------------------------------------------------------*/
-
-#define kMaxC 8
-
-/*--------------------------------------------------------------------------*
- * msvq_encmsvq_stage1_dct_search()
- *
- * stage1 search in a segmentwise truncated dct N domain without weights
- *--------------------------------------------------------------------------*/
-
-/*! r: (p_max , best candidate sofar ) */
-Word16 msvq_stage1_dct_search_fx(
- const Word32 *u_fx, /* i : target exp : u_e */
- const Word16 u_e, /* i : exp for target Q0 */
- const Word16 N, /* i : target length and IDCT synthesis length */
- const Word16 maxC_st1, /* i : number of final stage 1 candidates to provide */
- const DCTTYPE dcttype, /* e.g. DCT_T2_16_XX, DCT_T2_24_XX; */
- const Word16 max_dct_trunc, /* i : maximum of truncation lenghts */
- Word32 *invTrfMatrix_fx, /* i : IDCT synthesis matrix for dim N Q31 */
- const Word16 *midQ_truncQ_fx, /* i : midQ vector */
- const Word32 *dct_scaleF_fx, /* i : global scale factors Q10 */
- const Word16 n_segm, /* i : number of segments */
- const Word16 *cols_per_segment, /* i : remaining length per segment */
- const Word16 *trunc_dct_cols_per_segment, /* i : trunc length per segment */
- const Word16 *entries_per_segment, /* i : number of rows per segment */
- const Word16 *cum_entries_per_segment, /* i : number of cumulative entries */
- const Word8 *const W8Qx_dct_sections[], /* i : Word8(byte) segment table ptrs */
- const Word16 *col_syn_shift[], /* i : columnwise syn shift tables */
- const Word8 *segm_neighbour_fwd, /* i : circular neighbour list fwd */
- const Word8 *segm_neighbour_rev, /* i : circular neighbour list reverse */
- const Word16 npost_check, /* i : number of neigbours to check , should be even */
- Word32 *st1_mse_ptr_fx, /* i : dynRAM buffer for MSEs exp : u_e */
- Word16 *indices_st1_local, /* o : selected cand indices */
- Word32 *st1_syn_vec_ptr_fx, /* i/o: buffer for IDCT24 synthesis i :exp : u_e */
- Word32 *dist1_ptr_fx, /* o : resulting stage 1 MSEs in DCT-N domain */
- Word16 *dist1_ptr_e )
-{
- Word32 dct_target_fx[FDCNG_VQ_DCT_MAXTRUNC]; // Q20
- Word32 u_mr_fx[FDCNG_VQ_MAX_LEN];
- Word16 dist1_ptr_e_buf[2 * LSFMBEST_MAX];
- Word64 mse_trunc_segm_fx[FDCNG_VQ_DCT_NSEGM];
- Word32 tmp_fx, check_mse;
- Word16 tmp_e, check_mse_e;
- Word64 mse_fx; /* Word64 in BASOP */
-
- Word16 p_max, c, c2, segm, j_full, j, i;
- Word16 n_ana, p_mins[2], idx_min[2];
-
- Word16 st1_mse_ptr_e[128];
-
- const Word8 *cbpW8;
- const Word16 *dct_col_shift_tab;
-
- Word32 *st1_mse_pair_fx;
- Word16 *st1_mse_pair_e;
- Word16 *st1_idx_pair;
-
- Word32 tmp2_fx;
- Word16 check_ind[FDCNG_VQ_DCT_NPOST];
- assert( ( npost_check % 2 == 0 ) && ( npost_check <= FDCNG_VQ_DCT_NPOST ) );
-
- assert( n_segm <= FDCNG_VQ_DCT_NSEGM );
-
- n_ana = N; /* VQ stage#1 core is currently always using stored DCT N coeffs */
- move16();
- assert( n_ana >= max_dct_trunc ); /* check for FDCNGVQ WB , SWB, FB operation */
-
- /* remove mid stage#1 vector, in original input domain */
- tmp_e = s_max( 12, u_e );
- FOR( i = 0; i < n_ana; i++ )
- {
- u_mr_fx[i] = L_sub( L_shl( u_fx[i], sub( u_e, tmp_e ) ), L_shl( midQ_truncQ_fx[i], sub( Q31 - Q10, tmp_e ) ) ); // tmp_e
- move32();
- }
-
- dctT2_N_apply_matrix_fx( (const Word32 *) u_mr_fx, dct_target_fx, s_min( max_dct_trunc, n_ana ), n_ana, invTrfMatrix_fx, max_dct_trunc, dcttype ); // exp : tmp_e
-
- /* init search state ptr's at the top */
- set32_fx( dist1_ptr_fx, MAX_32, maxC_st1 );
- set16_fx( dist1_ptr_e_buf, 32, maxC_st1 );
- st1_mse_pair_fx = &( dist1_ptr_fx[0] ); /* req. ptr post upd +=2 */ // st1_mse_pair_e
- st1_mse_pair_e = &( dist1_ptr_e_buf[0] ); /* req. ptr post upd +=2 */
- st1_idx_pair = &( indices_st1_local[0] ); /* req. ptr post upd +=2 */
- set64_fx( mse_trunc_segm_fx, 0, n_segm );
-
- // set16_fx( mse_trunc_segm_e, u_e, FDCNG_VQ_DCT_NSEGM );
-
- FOR( segm = 0; segm < n_segm; segm++ )
- { /* point to a new paired location for each segment */
- p_max = 0; /* req. to point to one of 1 or 0, this init can potentially be omitted here,as p_max is always 1 or 0 */
- move16();
-
- /* compute segment common trunction error in dctN domain */
-
- FOR( i = 0; i < trunc_dct_cols_per_segment[segm]; i++ )
- {
- mse_trunc_segm_fx[segm] = W_mac_32_32( mse_trunc_segm_fx[segm], dct_target_fx[cols_per_segment[segm] + i], dct_target_fx[cols_per_segment[segm] + i] ); // Q41
- move64();
- }
-
- cbpW8 = W8Qx_dct_sections[segm]; /* Word8 column variable Qx storage , table ptr init */
-
- FOR( j = 0; j < entries_per_segment[segm]; j++ )
- {
- /* unweighted segmented search DCT domain loop */
- j_full = add( j, cum_entries_per_segment[segm] ); /* or simply use j_full++ */
-
- mse_fx = mse_trunc_segm_fx[segm]; /* init mse with with common mse truncation part, in BASOP a move32() */ // Q41
- move64();
-
- dct_col_shift_tab = col_syn_shift[segm]; /* ptr init */
-
- FOR( c2 = 0; c2 < cols_per_segment[segm]; c2++ )
- {
-#define WMC_TOOL_SKIP
- tmp_fx = L_sub( dct_target_fx[c2], Mpy_32_32( L_shl( cbpW8[c2], add( sub( Q31, tmp_e ), dct_col_shift_tab[c2] ) ), dct_scaleF_fx[1] ) ); /* note: BASOP shift left defined for signed integers */
- LOGIC( 1 );
- SHIFT( 1 );
- ADD( 1 ); /* in BASOP: s_and(for W8->W16), shl(), sub()*/
-#undef WMC_TOOL_SKIP
- mse_fx = W_mac_32_32( mse_fx, tmp_fx, tmp_fx ); /* L_mac or L_mac0() square Word16 -> Word32*/ // Q41
- }
- Word16 L_tmp = W_norm( mse_fx );
- st1_mse_ptr_fx[j_full] = W_extract_h( W_lshl( mse_fx, L_tmp ) ); /* save MSE in shared dynamic RAM, move32() in BASOP */ // st1_mse_ptr_e
- move32();
- st1_mse_ptr_e[j_full] = sub( shl( tmp_e, 1 ), L_tmp );
- move16();
-
-#define WMC_TOOL_SKIP
- cbpW8 += cols_per_segment[segm]; /* fixed pointer increment for each segment */
-#undef WMC_TOOL_SKIP
-
- /* overwrite with a new worst index at p_max */
-
- /* Note: The three inner loop if's below are not 100% properly instrumented by WMC tool */
- // if ( st1_mse_ptr_fx[j_full] < st1_mse_pair_fx[p_max] ) /* L_sub */
- IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( st1_mse_ptr_fx[j_full], st1_mse_ptr_e[j_full], st1_mse_pair_fx[p_max], st1_mse_pair_e[p_max] ), -1 ) ) /* L_sub */
- {
- st1_idx_pair[p_max] = j_full; /* move16, single BASOP */
- move16();
- } /* BASOP 2 ops */
-
- IF( EQ_16( st1_idx_pair[p_max], j_full ) )
- { /* idx updated --> also update mse */
- st1_mse_pair_fx[p_max] = st1_mse_ptr_fx[j_full]; /* move32(), single BASOP */
- move32();
- st1_mse_pair_e[p_max] = st1_mse_ptr_e[j_full]; /* move32(), single BASOP */
- move16();
- } /* BASOP 3 ops */
-
- /* avoid WC costly candidate list management by always updating p_max,
- as we have only a pair in each segment to maintain */
- p_max = 0;
- move16();
- if ( EQ_16( BASOP_Util_Cmp_Mant32Exp( st1_mse_pair_fx[0], st1_mse_pair_e[0], st1_mse_pair_fx[1], st1_mse_pair_e[1] ), -1 ) ) /* L_sub()*/
- {
- p_max = 1; /* move16() */
- move16();
- } /* BASOP 3 ops ,Note 2 ops possible in BASOP with L_sub and L_lshr */
-
- /* Note: logical shift right not available in ANSI-C */
- /* p_max = (st1_mse_pair[0] - st1_mse_pair[1]) ">>>" 31; */
- /* in java logical shift right is available as >>> , in BASOP it is available as L_lshr */
-
- /* Cost: weighted sum with cond moves ('if') => 8 in float , 7 in BASOP with L_lshr */
- } /* j in section */
-
- st1_mse_pair_fx += 2; /* req. ptr init */
- st1_mse_pair_e += 2; /* req. ptr init */
- st1_idx_pair += 2; /* req. ptr init */
-
- } /* next segment */
-
- tmp_e = 0;
- move16();
- FOR( j = 0; j < maxC_st1; j++ )
- {
- /* compute_full mse using stored DCT24 domain MSE's */
- /* calculate MSE from stage1 inner using existing inner DCT domain variables */
- tmp_e = s_max( dist1_ptr_e_buf[j], tmp_e );
- }
-
- FOR( j = 0; j < maxC_st1; j++ )
- {
- /* compute_full mse using stored DCT24 domain MSE's */
- /* calculate MSE from stage1 inner using existing inner DCT domain variables */
- dist1_ptr_fx[j] = L_shr( dist1_ptr_fx[j], sub( tmp_e, dist1_ptr_e_buf[j] ) );
- move32();
- *dist1_ptr_e = tmp_e;
- move16();
- }
-
-
- assert( ( maxC_st1 >= 3 ) );
- assert( ( maxC_st1 <= 8 ) );
-
- p_max = maximum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* establish current worst candidate for MSVQ stage#2 among all maxC_st1 candidates so far */
-
- p_mins[0] = minimum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* find best entry among all maxC_pre */
- move16();
- tmp_fx = dist1_ptr_fx[p_mins[0]];
- move32();
- dist1_ptr_fx[p_mins[0]] = MAX_32; /* exclude 1st */
- move32();
-
- p_mins[1] = minimum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* find 2nd best entry */
- move16();
- tmp2_fx = dist1_ptr_fx[p_mins[1]];
- move32();
- dist1_ptr_fx[p_mins[1]] = MAX_32; /* exclude 2nd */
- move32();
-
- dist1_ptr_fx[p_mins[0]] = tmp_fx; /* restore 1st */
- move32();
- dist1_ptr_fx[p_mins[1]] = tmp2_fx; /* restore 2nd */
- move32();
-
- idx_min[0] = indices_st1_local[p_mins[0]];
- move16();
- idx_min[1] = indices_st1_local[p_mins[1]];
- move16();
-
-
- /* use global exclusion list to never reselect the two (best) global MSE values sofar */
- st1_mse_ptr_fx[idx_min[0]] = MAX_32; /* move32() */
- move32();
- st1_mse_ptr_e[idx_min[0]] = MAX_16;
- move16();
- st1_mse_ptr_fx[idx_min[1]] = MAX_32; /* move32() */
- move32();
- st1_mse_ptr_e[idx_min[1]] = MAX_16;
- move16();
-
- /* circular MSE-neigbour list in use to potentially replace some segment search candidates */
- /* using both 1st and 2nd best neighbours in fwd and rev directions */
- check_ind[0] = segm_neighbour_fwd[idx_min[0]];
- move16();
- check_ind[1] = segm_neighbour_rev[idx_min[0]];
- move16();
-
- check_ind[2] = segm_neighbour_fwd[idx_min[1]];
- move16();
- check_ind[3] = segm_neighbour_rev[idx_min[1]];
- move16();
-
- check_ind[4] = segm_neighbour_fwd[check_ind[0]];
- move16();
- check_ind[5] = segm_neighbour_rev[check_ind[1]];
- move16();
-
- check_ind[6] = segm_neighbour_fwd[check_ind[2]];
- move16();
- check_ind[FDCNG_VQ_DCT_NPOST - 1] = segm_neighbour_rev[check_ind[3]];
- move16();
-
- FOR( i = 0; i < npost_check; i++ )
- {
- /* move MSE from DCT-inner loop search to input synthesis domain */
- /* multiplication by fdcng_dct_scaleF[2] to get the float outer loop scale correct in IDCT synthesis domain */
- check_mse = st1_mse_ptr_fx[check_ind[i]];
- move32();
- check_mse_e = st1_mse_ptr_e[check_ind[i]];
- move16();
-
- IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( check_mse, check_mse_e, dist1_ptr_fx[p_max], *dist1_ptr_e ), -1 ) )
- { /* new winner , replace worst */
- dist1_ptr_fx[p_max] = L_shl( check_mse, sub( check_mse_e, *dist1_ptr_e ) );
- move32();
- indices_st1_local[p_max] = check_ind[i];
- move16();
- st1_mse_ptr_fx[check_ind[i]] = MAX_32; /* exclude, BASOP: move32() */
- move32();
- st1_mse_ptr_e[check_ind[i]] = MAX_16;
- move16();
- p_max = maximum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* establish a new current worst candidate among all maxC */
- }
- }
-
- /* extract the selected stage one vectors in DCT_N domain , apply IDCT_N and scale up */
- /* always extract full length signal(e.g. 24) to be able to update WB(e.g. N_in==21) candidate MSE values */
- /* in the case that only a part of the IDCT N vector is in final use */
-
- /* note: synthesis not yet fully parameterized/generalized for other IDCT lengths */
- assert( N == 24 );
- {
- FOR( c = 0; c < maxC_st1; c++ )
- {
- dec_FDCNG_MSVQ_stage1_fx( indices_st1_local[c], N, invTrfMatrix_fx, dcttype + 1, &( st1_syn_vec_ptr_fx[c * N] ), NULL ); // Q11 : output
- scale_sig32( &( st1_syn_vec_ptr_fx[c * N] ), N, sub( 11, s_max( u_e, 12 ) ) );
- }
- }
-
- return p_max; /*ptr to worst performing candidate */
-}
-
-
-/*--------------------------------------------------------------------------*
- * msvq_stage1_dct_recalc_candidates_fdcng_wb()
- *
- * recalc MSE for fdcng WB(0..20) coeffs ,
- essentially subtract res21^2 ,res22^2, res23^2 that was included in stage1 MSE in the DCT24 domain truncated search,
- excludes the waveform contributions at pos 21,22,23 to the MSE, important to keep the WB MSEs update for the subsequent stages
- *--------------------------------------------------------------------------*/
-
-/*! r: (updated p_max) */
-Word16 msvq_stage1_dct_recalc_candidates_fdcng_wb_fx(
- const Word32 *st1_syn_vec_ptr_fx, /* i : IDCT24 synthesis vectors st1_syn_vec_e*/
- const Word16 st1_syn_vec_e, /* i : exp for IDCT24 synthesis vectors */
- const Word32 *u_fx, /* i : target signal u_e*/
- const Word16 u_e, /* i : exp for target signal */
- const Word16 maxC_st1, /* i : number of candidates in stage1 */
- Word32 *dist_ptr_fx, /* i/o: updated MSE vector for stage1 */
- Word16 *dist_ptr_e /* i/o: exp for updated MSE vector for stage1 */
-)
-{
- Word16 i;
- Word16 p_max_local, c;
- const Word32 *p2_fx;
- Word16 tmp_e;
- Word32 res24_fx, high_diff_fx[FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB];
- Word64 acc;
- Word16 res24_e[FD_CNG_maxC_37bits];
- Word16 dist_e;
-
- dist_e = *dist_ptr_e;
- move16();
- FOR( c = 0; c < maxC_st1; c++ )
- { /* point to extended synthesis part */
- p2_fx = (const Word32 *) &( st1_syn_vec_ptr_fx[c * FDCNG_VQ_MAX_LEN + FDCNG_VQ_MAX_LEN_WB] ); /* ptr init to synthesis candidate c */
- tmp_e = s_max( st1_syn_vec_e, u_e );
- tmp_e = add( tmp_e, 1 );
- /* for stage#1 use "u" instead of the shortened resid[0], to access the extended/extrapolated input target */
- FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ )
- {
- high_diff_fx[i] = L_sub( L_shr( p2_fx[i], sub( tmp_e, st1_syn_vec_e ) ), L_shr( u_fx[FDCNG_VQ_MAX_LEN_WB + i], sub( tmp_e, u_e ) ) ); // tmp_e
- move32();
- }
- acc = 0;
- move64();
- FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ )
- {
- acc = W_mac_32_32( acc, high_diff_fx[i], high_diff_fx[i] );
- }
- res24_e[c] = tmp_e;
- move16();
- tmp_e = W_norm( acc );
- res24_fx = W_extract_h( W_shl( acc, tmp_e ) );
-
- res24_e[c] = sub( shl( res24_e[c], 1 ), tmp_e );
- move16();
-
- dist_ptr_fx[c] = BASOP_Util_Add_Mant32Exp( dist_ptr_fx[c], *dist_ptr_e, L_negate( res24_fx ), res24_e[c], &res24_e[c] ); /* remove DCT24 high band error contribution */
- move32();
- dist_e = s_max( dist_e, res24_e[c] );
- move16();
- }
-
-
- FOR( c = 0; c < maxC_st1; c++ )
- {
- dist_ptr_fx[c] = L_shl( dist_ptr_fx[c], sub( res24_e[c], dist_e ) );
- move32();
- }
- *dist_ptr_e = dist_e;
- move16();
- /* finally update p_max, as it may potentially change,
- due to the core DCT24 search originally optimizing over the longer basis vectors than DCT21 */
- p_max_local = maximum_32_fx( dist_ptr_fx, maxC_st1, NULL );
-
- return p_max_local;
-}
-
-
-/*--------------------------------------------------------------------------*
- * msvq_enc()
- *
- * MSVQ encoder
- *--------------------------------------------------------------------------*/
-
-
-void msvq_enc_ivas_fx(
- const Word16 *const *cb, /* i : Codebook (indexed cb[*stages][levels][p]) Q_cb */
- const Word16 Q_cb, /* i : Codebook Q */
- const Word16 dims[], /* i : Dimension of each codebook stage (NULL: full dim.) */
- const Word16 offs[], /* i : Starting dimension of each codebook stage (NULL: 0) */
- const Word32 u_fx[], /* i : Vector to be encoded (prediction and mean removed) (exp : u_e) */
- const Word16 u_e, /* i : Exponent for Vector to be encoded */
- const Word16 *levels, /* i : Number of levels in each stage */
- const Word16 maxC, /* i : Tree search size (number of candidates kept from from one stage to the next == M-best) */
- const Word16 stages, /* i : Number of stages */
- const Word16 w[], /* i : Weights Q8 */
- const Word16 N, /* i : Vector dimension */
- const Word16 maxN, /* i : Codebook dimension */
- const Word16 applyDCT_flag, /* i : applyDCT flag */
- Word32 *invTrfMatrix_fx, /* i/o: synthesis matrix Q31 */
- Word16 Idx[] /* o : Indices */
-)
-{
- Word16 j;
- const Word16 *cbp, *cb_stage;
- Word32 resid_buf_fx[2 * LSFMBEST_MAX * M_MAX], *resid_fx[2];
- Word32 *pTmp, *p1, *p2; // pTmp_e
- Word16 pTmp_e;
- Word16 *indices[2], m, s, c, c2, p_max, i;
- Word16 idx_buf[2 * LSFMBEST_MAX * MAX_VQ_STAGES_USED], parents[LSFMBEST_MAX];
- Word32 dist_buf_fx[2 * LSFMBEST_MAX], *dist_fx[2], tmp, en, ss2, Tmp[M_MAX];
- Word16 dist_buf_e[2 * LSFMBEST_MAX], *dist_e[2];
- Word16 tmp_e, tmp_n, en_e;
- Word16 resid_e;
- Word16 n, maxn, start;
- Word64 W_acc; /*64 bit accumulator*/
-
- Word32 *st1_syn_vec_ptr_fx = &( resid_buf_fx[1 * LSFMBEST_MAX * M_MAX] ) - FDCNG_VQ_MAX_LEN * maxC;
- Word32 *st1_mse_ptr_fx = &( resid_buf_fx[1 * LSFMBEST_MAX * M_MAX] ) - ( levels[0] );
- Word16 indices_st1_local[FDCNG_VQ_DCT_NSEGM * 2];
-
- /*----------------------------------------------------------------*
- * Allocate memory for previous (parent) and current nodes.
- * Parent node is indexed [0], current node is indexed [1].
- *----------------------------------------------------------------*/
- indices[0] = idx_buf;
- indices[1] = idx_buf + maxC * stages; /*move16();*/
- /*vr_iset(0, idx_buf, 2*stages*maxC);*/
- set16_fx( idx_buf, 0, (Word16) ( 2 * stages * maxC ) );
-
- resid_fx[0] = resid_buf_fx;
- resid_fx[1] = resid_buf_fx + maxC * N; /*move16();*/
-
- dist_fx[0] = dist_buf_fx;
- dist_e[0] = dist_buf_e;
- dist_fx[1] = dist_buf_fx + maxC;
- dist_e[1] = dist_buf_e + maxC;
-
- /*vr_iset(0, parents, maxC);*/
- set16_fx( parents, 0, maxC );
-
- /*----------------------------------------------------------------*
- * LSF weights are normalized, so it is always better to multiply it first
- * Set up inital distance vector
- *----------------------------------------------------------------*/
- W_acc = W_mult_32_32( Mpy_32_16_1( u_fx[0], shl( w[0], 2 ) ), u_fx[0] ); // 2*Qu - 6 + 1
- FOR( j = 1; j < N; j++ )
- {
- W_acc = W_mac_32_32( W_acc, Mpy_32_16_1( u_fx[j], shl( w[j], 2 ) ), u_fx[j] ); // 2*Qu - 6 + 1
- }
-
- tmp_n = W_norm( W_acc );
- ss2 = W_extract_h( W_shl( W_acc, tmp_n ) );
- tmp_e = sub( add( shl( u_e, 1 ), 5 ), tmp_n );
-
- /* Set up inital error (residual) vectors */
- pTmp = resid_fx[1]; /*move16();*/
- resid_e = u_e;
- move16();
- IF( applyDCT_flag != 0 )
- {
- resid_e = s_max( u_e, 12 );
- }
- FOR( c = 0; c < maxC; c++ )
- {
- Copy32( u_fx, pTmp + c * N, N );
- test();
- IF( applyDCT_flag != 0 && LT_16( u_e, 12 ) )
- {
- scale_sig32( pTmp + c * N, N, sub( u_e, resid_e ) );
- }
- dist_fx[1][c] = ss2;
- move32();
- dist_e[1][c] = tmp_e;
- move16();
- }
-
- /* Loop over all stages */
- m = 1;
- move16();
- FOR( s = 0; s < stages; s++ )
- {
- /* codebook pointer is set to point to first stage */
- cbp = cb[s]; /*Q_cb*/
- cb_stage = cbp;
-
- /* Set up pointers to parent and current nodes */
- swap( indices[0], indices[1], Word16 * );
- move16();
- move16();
- move16();
- swap( resid_fx[0], resid_fx[1], Word32 * );
- move32();
- move32();
- move32();
- swap( dist_fx[0], dist_fx[1], Word32 * );
- swap( dist_e[0], dist_e[1], Word16 * );
- move32();
- move32();
- move32();
- move16();
- move16();
- move16();
-
- /* p_max points to maximum distortion node (worst of best) */
- p_max = 0;
- move16();
-
- n = N;
- move16();
- maxn = maxN;
- move16();
- if ( dims )
- {
- n = dims[s];
- move16();
- }
- if ( dims )
- {
- maxn = n;
- move16();
- }
-
- assert( ( maxn % 4 ) == 0 );
-
- start = 0;
- move16();
- if ( offs )
- {
- start = offs[s];
- move16();
- }
-
- set32_fx( Tmp, 0, start );
- set32_fx( Tmp + start + n, 0, sub( N, add( start, n ) ) );
-
- /* Set distortions to a large value */
- FOR( j = 0; j < maxC; j++ )
- {
- dist_fx[1][j] = MAX_32;
- move32();
- dist_e[1][j] = MAX_16 / 2;
- move16();
- }
-
- test();
- IF( !s && applyDCT_flag != 0 ) /* means: m==1 */
- {
- /* stage 1 candidates search in truncated dct24 domain without any weights */
- assert( N == FDCNG_VQ_MAX_LEN || N == FDCNG_VQ_MAX_LEN_WB ); /* 21 and 24 allowed */
- assert( maxC == 2 * FDCNG_VQ_DCT_NSEGM );
- p_max = msvq_stage1_dct_search_fx( u_fx, u_e, FDCNG_VQ_MAX_LEN, maxC, DCT_T2_24_XX, FDCNG_VQ_DCT_MAXTRUNC, (Word32 *) invTrfMatrix_fx, cdk1r_tr_midQ_truncQ_fx, fdcng_dct_scaleF_fx, FDCNG_VQ_DCT_NSEGM,
- cdk1_ivas_cols_per_segment, cdk1_ivas_trunc_dct_cols_per_segment, cdk1_ivas_entries_per_segment, cdk1_ivas_cum_entries_per_segment, cdk_37bits_ivas_stage1_W8Qx_dct_sections,
- stage1_dct_col_syn_shift, cdk1_ivas_segm_neighbour_fwd, cdk1_ivas_segm_neighbour_rev, FDCNG_VQ_DCT_NPOST, st1_mse_ptr_fx, indices_st1_local, st1_syn_vec_ptr_fx, dist_fx[1], &dist_e[1][0] );
-
- /* move established stage#1 indices to the global MSVQ list structure */
- set16_fx( dist_e[1], dist_e[1][0], maxC );
- FOR( c = 0; c < maxC; c++ )
- {
- indices[1][c * stages] = indices_st1_local[c];
- move16();
- }
- }
- ELSE
- {
- FOR( j = 0; j < levels[s]; j++ )
- {
- /* Compute weighted codebook element and its energy */
- en = 0;
- move32();
- en_e = 0;
- move16();
- W_acc = 0;
- move64();
- FOR( c2 = 0; c2 < n; c2++ )
- {
- Tmp[start + c2] = L_mult0( shl( w[start + c2], 2 ), cbp[c2] );
- move32();
- W_acc = W_mac_32_16( W_acc, Tmp[start + c2], cbp[c2] );
- }
-
- tmp_n = W_norm( W_acc );
-
- en = W_extract_h( W_shl( W_acc, tmp_n ) );
- en_e = sub( sub( 52, shl( Q_cb, 1 ) ), tmp_n );
-
- cbp += maxn; /* pointer is incremented */
-
- /* Iterate over all parent nodes */
- FOR( c = 0; c < m; c++ )
- {
- pTmp = &resid_fx[0][c * N];
- pTmp_e = resid_e;
- move16();
- /*tmp = (*pTmp++) * Tmp[0];*/
- W_acc = W_mult_32_32( pTmp[0], Tmp[0] );
-
- FOR( i = 1; i < N; i++ )
- {
- W_acc = W_mac_32_32( W_acc, pTmp[i], Tmp[i] );
- }
- tmp_n = W_norm( W_acc );
- tmp = W_extract_h( W_shl( W_acc, tmp_n ) );
- tmp_e = sub( add( pTmp_e, sub( Q31 - Q10, Q_cb ) ), tmp_n );
-
-
- tmp_n = s_max( tmp_e, en_e );
- tmp_n = s_max( dist_e[0][c], tmp_n );
-
- IF( NE_16( dist_e[0][c], MAX_16 / 2 ) )
- {
- tmp_n = add( tmp_n, 2 );
- tmp = L_sub( L_shl( en, sub( en_e, tmp_n ) ), L_shl( tmp, add( sub( tmp_e, tmp_n ), 1 ) ) );
- tmp = L_add( tmp, L_shl( dist_fx[0][c], sub( dist_e[0][c], tmp_n ) ) );
- }
- ELSE
- {
- tmp = MAX_32 - 1;
- move32();
- tmp_n = MAX_16 / 2;
- move32();
- }
-
- IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( tmp, tmp_n, dist_fx[1][p_max], dist_e[1][p_max] ), -1 ) )
- {
- /* Replace worst */
- dist_fx[1][p_max] = tmp;
- move32();
- dist_e[1][p_max] = tmp_n;
- move16();
- indices[1][p_max * stages + s] = j;
- move16();
- parents[p_max] = c;
- move16();
-
- p_max = 0;
- move16();
- tmp_e = p_max;
- move16();
-
- tmp_n = dist_e[1][0];
- move16();
- FOR( c2 = 1; c2 < maxC; c2++ )
- {
- if ( EQ_16( BASOP_Util_Cmp_Mant32Exp( dist_fx[1][c2], dist_e[1][c2], dist_fx[1][p_max], dist_e[1][p_max] ), 1 ) )
- {
- p_max = c2;
- move16();
- }
- test();
- if ( GT_16( dist_e[1][c2], tmp_n ) && NE_16( dist_e[1][c2], MAX_16 / 2 ) )
- {
- tmp_n = dist_e[1][c2];
- move16();
- }
- }
- FOR( c2 = 0; c2 < maxC; c2++ )
- {
- IF( NE_16( dist_e[1][c2], MAX_16 / 2 ) )
- {
- dist_fx[1][c2] = L_shl( dist_fx[1][c2], sub( dist_e[1][c2], tmp_n ) );
- move32();
- dist_e[1][c2] = tmp_n;
- move16();
- }
- }
- } /*IF (L_sub(tmp,dist[1][p_max]) < 0) */
- } /* FOR (c=0; c= max_dct_trunc ); /* check for FDCNGVQ WB , SWB, FB operation */
+
+ /* remove mid stage#1 vector, in original input domain */
+ tmp_e = s_max( 12, u_e );
+ FOR( i = 0; i < n_ana; i++ )
+ {
+ u_mr_fx[i] = L_sub( L_shl( u_fx[i], sub( u_e, tmp_e ) ), L_shl( midQ_truncQ_fx[i], sub( Q31 - Q10, tmp_e ) ) ); // tmp_e
+ move32();
+ }
+
+ dctT2_N_apply_matrix_fx( (const Word32 *) u_mr_fx, dct_target_fx, s_min( max_dct_trunc, n_ana ), n_ana, invTrfMatrix_fx, max_dct_trunc, dcttype ); // exp : tmp_e
+
+ /* init search state ptr's at the top */
+ set32_fx( dist1_ptr_fx, MAX_32, maxC_st1 );
+ set16_fx( dist1_ptr_e_buf, 32, maxC_st1 );
+ st1_mse_pair_fx = &( dist1_ptr_fx[0] ); /* req. ptr post upd +=2 */ // st1_mse_pair_e
+ st1_mse_pair_e = &( dist1_ptr_e_buf[0] ); /* req. ptr post upd +=2 */
+ st1_idx_pair = &( indices_st1_local[0] ); /* req. ptr post upd +=2 */
+ set64_fx( mse_trunc_segm_fx, 0, n_segm );
+
+ // set16_fx( mse_trunc_segm_e, u_e, FDCNG_VQ_DCT_NSEGM );
+
+ FOR( segm = 0; segm < n_segm; segm++ )
+ { /* point to a new paired location for each segment */
+ p_max = 0; /* req. to point to one of 1 or 0, this init can potentially be omitted here,as p_max is always 1 or 0 */
+ move16();
+
+ /* compute segment common trunction error in dctN domain */
+
+ FOR( i = 0; i < trunc_dct_cols_per_segment[segm]; i++ )
+ {
+ mse_trunc_segm_fx[segm] = W_mac_32_32( mse_trunc_segm_fx[segm], dct_target_fx[cols_per_segment[segm] + i], dct_target_fx[cols_per_segment[segm] + i] ); // Q41
+ move64();
+ }
+
+ cbpW8 = W8Qx_dct_sections[segm]; /* Word8 column variable Qx storage , table ptr init */
+
+ FOR( j = 0; j < entries_per_segment[segm]; j++ )
+ {
+ /* unweighted segmented search DCT domain loop */
+ j_full = add( j, cum_entries_per_segment[segm] ); /* or simply use j_full++ */
+
+ mse_fx = mse_trunc_segm_fx[segm]; /* init mse with with common mse truncation part, in BASOP a move32() */ // Q41
+ move64();
+
+ dct_col_shift_tab = col_syn_shift[segm]; /* ptr init */
+
+ FOR( c2 = 0; c2 < cols_per_segment[segm]; c2++ )
+ {
+#define WMC_TOOL_SKIP
+ tmp_fx = L_sub( dct_target_fx[c2], Mpy_32_32( L_shl( cbpW8[c2], add( sub( Q31, tmp_e ), dct_col_shift_tab[c2] ) ), dct_scaleF_fx[1] ) ); /* note: BASOP shift left defined for signed integers */
+ LOGIC( 1 );
+ SHIFT( 1 );
+ ADD( 1 ); /* in BASOP: s_and(for W8->W16), shl(), sub()*/
+#undef WMC_TOOL_SKIP
+ mse_fx = W_mac_32_32( mse_fx, tmp_fx, tmp_fx ); /* L_mac or L_mac0() square Word16 -> Word32*/ // Q41
+ }
+ Word16 L_tmp = W_norm( mse_fx );
+ st1_mse_ptr_fx[j_full] = W_extract_h( W_lshl( mse_fx, L_tmp ) ); /* save MSE in shared dynamic RAM, move32() in BASOP */ // st1_mse_ptr_e
+ move32();
+ st1_mse_ptr_e[j_full] = sub( shl( tmp_e, 1 ), L_tmp );
+ move16();
+
+#define WMC_TOOL_SKIP
+ cbpW8 += cols_per_segment[segm]; /* fixed pointer increment for each segment */
+#undef WMC_TOOL_SKIP
+
+ /* overwrite with a new worst index at p_max */
+
+ /* Note: The three inner loop if's below are not 100% properly instrumented by WMC tool */
+ // if ( st1_mse_ptr_fx[j_full] < st1_mse_pair_fx[p_max] ) /* L_sub */
+ IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( st1_mse_ptr_fx[j_full], st1_mse_ptr_e[j_full], st1_mse_pair_fx[p_max], st1_mse_pair_e[p_max] ), -1 ) ) /* L_sub */
+ {
+ st1_idx_pair[p_max] = j_full; /* move16, single BASOP */
+ move16();
+ } /* BASOP 2 ops */
+
+ IF( EQ_16( st1_idx_pair[p_max], j_full ) )
+ { /* idx updated --> also update mse */
+ st1_mse_pair_fx[p_max] = st1_mse_ptr_fx[j_full]; /* move32(), single BASOP */
+ move32();
+ st1_mse_pair_e[p_max] = st1_mse_ptr_e[j_full]; /* move32(), single BASOP */
+ move16();
+ } /* BASOP 3 ops */
+
+ /* avoid WC costly candidate list management by always updating p_max,
+ as we have only a pair in each segment to maintain */
+ p_max = 0;
+ move16();
+ if ( EQ_16( BASOP_Util_Cmp_Mant32Exp( st1_mse_pair_fx[0], st1_mse_pair_e[0], st1_mse_pair_fx[1], st1_mse_pair_e[1] ), -1 ) ) /* L_sub()*/
+ {
+ p_max = 1; /* move16() */
+ move16();
+ } /* BASOP 3 ops ,Note 2 ops possible in BASOP with L_sub and L_lshr */
+
+ /* Note: logical shift right not available in ANSI-C */
+ /* p_max = (st1_mse_pair[0] - st1_mse_pair[1]) ">>>" 31; */
+ /* in java logical shift right is available as >>> , in BASOP it is available as L_lshr */
+
+ /* Cost: weighted sum with cond moves ('if') => 8 in float , 7 in BASOP with L_lshr */
+ } /* j in section */
+
+ st1_mse_pair_fx += 2; /* req. ptr init */
+ st1_mse_pair_e += 2; /* req. ptr init */
+ st1_idx_pair += 2; /* req. ptr init */
+
+ } /* next segment */
+
+ tmp_e = 0;
+ move16();
+ FOR( j = 0; j < maxC_st1; j++ )
+ {
+ /* compute_full mse using stored DCT24 domain MSE's */
+ /* calculate MSE from stage1 inner using existing inner DCT domain variables */
+ tmp_e = s_max( dist1_ptr_e_buf[j], tmp_e );
+ }
+
+ FOR( j = 0; j < maxC_st1; j++ )
+ {
+ /* compute_full mse using stored DCT24 domain MSE's */
+ /* calculate MSE from stage1 inner using existing inner DCT domain variables */
+ dist1_ptr_fx[j] = L_shr( dist1_ptr_fx[j], sub( tmp_e, dist1_ptr_e_buf[j] ) );
+ move32();
+ *dist1_ptr_e = tmp_e;
+ move16();
+ }
+
+
+ assert( ( maxC_st1 >= 3 ) );
+ assert( ( maxC_st1 <= 8 ) );
+
+ p_max = maximum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* establish current worst candidate for MSVQ stage#2 among all maxC_st1 candidates so far */
+
+ p_mins[0] = minimum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* find best entry among all maxC_pre */
+ move16();
+ tmp_fx = dist1_ptr_fx[p_mins[0]];
+ move32();
+ dist1_ptr_fx[p_mins[0]] = MAX_32; /* exclude 1st */
+ move32();
+
+ p_mins[1] = minimum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* find 2nd best entry */
+ move16();
+ tmp2_fx = dist1_ptr_fx[p_mins[1]];
+ move32();
+ dist1_ptr_fx[p_mins[1]] = MAX_32; /* exclude 2nd */
+ move32();
+
+ dist1_ptr_fx[p_mins[0]] = tmp_fx; /* restore 1st */
+ move32();
+ dist1_ptr_fx[p_mins[1]] = tmp2_fx; /* restore 2nd */
+ move32();
+
+ idx_min[0] = indices_st1_local[p_mins[0]];
+ move16();
+ idx_min[1] = indices_st1_local[p_mins[1]];
+ move16();
+
+
+ /* use global exclusion list to never reselect the two (best) global MSE values sofar */
+ st1_mse_ptr_fx[idx_min[0]] = MAX_32; /* move32() */
+ move32();
+ st1_mse_ptr_e[idx_min[0]] = MAX_16;
+ move16();
+ st1_mse_ptr_fx[idx_min[1]] = MAX_32; /* move32() */
+ move32();
+ st1_mse_ptr_e[idx_min[1]] = MAX_16;
+ move16();
+
+ /* circular MSE-neigbour list in use to potentially replace some segment search candidates */
+ /* using both 1st and 2nd best neighbours in fwd and rev directions */
+ check_ind[0] = segm_neighbour_fwd[idx_min[0]];
+ move16();
+ check_ind[1] = segm_neighbour_rev[idx_min[0]];
+ move16();
+
+ check_ind[2] = segm_neighbour_fwd[idx_min[1]];
+ move16();
+ check_ind[3] = segm_neighbour_rev[idx_min[1]];
+ move16();
+
+ check_ind[4] = segm_neighbour_fwd[check_ind[0]];
+ move16();
+ check_ind[5] = segm_neighbour_rev[check_ind[1]];
+ move16();
+
+ check_ind[6] = segm_neighbour_fwd[check_ind[2]];
+ move16();
+ check_ind[FDCNG_VQ_DCT_NPOST - 1] = segm_neighbour_rev[check_ind[3]];
+ move16();
+
+ FOR( i = 0; i < npost_check; i++ )
+ {
+ /* move MSE from DCT-inner loop search to input synthesis domain */
+ /* multiplication by fdcng_dct_scaleF[2] to get the float outer loop scale correct in IDCT synthesis domain */
+ check_mse = st1_mse_ptr_fx[check_ind[i]];
+ move32();
+ check_mse_e = st1_mse_ptr_e[check_ind[i]];
+ move16();
+
+ IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( check_mse, check_mse_e, dist1_ptr_fx[p_max], *dist1_ptr_e ), -1 ) )
+ { /* new winner , replace worst */
+ dist1_ptr_fx[p_max] = L_shl( check_mse, sub( check_mse_e, *dist1_ptr_e ) );
+ move32();
+ indices_st1_local[p_max] = check_ind[i];
+ move16();
+ st1_mse_ptr_fx[check_ind[i]] = MAX_32; /* exclude, BASOP: move32() */
+ move32();
+ st1_mse_ptr_e[check_ind[i]] = MAX_16;
+ move16();
+ p_max = maximum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* establish a new current worst candidate among all maxC */
+ }
+ }
+
+ /* extract the selected stage one vectors in DCT_N domain , apply IDCT_N and scale up */
+ /* always extract full length signal(e.g. 24) to be able to update WB(e.g. N_in==21) candidate MSE values */
+ /* in the case that only a part of the IDCT N vector is in final use */
+
+ /* note: synthesis not yet fully parameterized/generalized for other IDCT lengths */
+ assert( N == 24 );
+ {
+ FOR( c = 0; c < maxC_st1; c++ )
+ {
+ dec_FDCNG_MSVQ_stage1_fx( indices_st1_local[c], N, invTrfMatrix_fx, dcttype + 1, &( st1_syn_vec_ptr_fx[c * N] ), NULL ); // Q11 : output
+ scale_sig32( &( st1_syn_vec_ptr_fx[c * N] ), N, sub( 11, s_max( u_e, 12 ) ) );
+ }
+ }
+
+ return p_max; /*ptr to worst performing candidate */
+}
+
+
+/*--------------------------------------------------------------------------*
+ * msvq_stage1_dct_recalc_candidates_fdcng_wb()
+ *
+ * recalc MSE for fdcng WB(0..20) coeffs ,
+ essentially subtract res21^2 ,res22^2, res23^2 that was included in stage1 MSE in the DCT24 domain truncated search,
+ excludes the waveform contributions at pos 21,22,23 to the MSE, important to keep the WB MSEs update for the subsequent stages
+ *--------------------------------------------------------------------------*/
+
+/*! r: (updated p_max) */
+Word16 msvq_stage1_dct_recalc_candidates_fdcng_wb_fx(
+ const Word32 *st1_syn_vec_ptr_fx, /* i : IDCT24 synthesis vectors st1_syn_vec_e*/
+ const Word16 st1_syn_vec_e, /* i : exp for IDCT24 synthesis vectors */
+ const Word32 *u_fx, /* i : target signal u_e*/
+ const Word16 u_e, /* i : exp for target signal */
+ const Word16 maxC_st1, /* i : number of candidates in stage1 */
+ Word32 *dist_ptr_fx, /* i/o: updated MSE vector for stage1 */
+ Word16 *dist_ptr_e /* i/o: exp for updated MSE vector for stage1 */
+)
+{
+ Word16 i;
+ Word16 p_max_local, c;
+ const Word32 *p2_fx;
+ Word16 tmp_e;
+ Word32 res24_fx, high_diff_fx[FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB];
+ Word64 acc;
+ Word16 res24_e[FD_CNG_maxC_37bits];
+ Word16 dist_e;
+
+ dist_e = *dist_ptr_e;
+ move16();
+ FOR( c = 0; c < maxC_st1; c++ )
+ { /* point to extended synthesis part */
+ p2_fx = (const Word32 *) &( st1_syn_vec_ptr_fx[c * FDCNG_VQ_MAX_LEN + FDCNG_VQ_MAX_LEN_WB] ); /* ptr init to synthesis candidate c */
+ tmp_e = s_max( st1_syn_vec_e, u_e );
+ tmp_e = add( tmp_e, 1 );
+ /* for stage#1 use "u" instead of the shortened resid[0], to access the extended/extrapolated input target */
+ FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ )
+ {
+ high_diff_fx[i] = L_sub( L_shr( p2_fx[i], sub( tmp_e, st1_syn_vec_e ) ), L_shr( u_fx[FDCNG_VQ_MAX_LEN_WB + i], sub( tmp_e, u_e ) ) ); // tmp_e
+ move32();
+ }
+ acc = 0;
+ move64();
+ FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ )
+ {
+ acc = W_mac_32_32( acc, high_diff_fx[i], high_diff_fx[i] );
+ }
+ res24_e[c] = tmp_e;
+ move16();
+ tmp_e = W_norm( acc );
+ res24_fx = W_extract_h( W_shl( acc, tmp_e ) );
+
+ res24_e[c] = sub( shl( res24_e[c], 1 ), tmp_e );
+ move16();
+
+ dist_ptr_fx[c] = BASOP_Util_Add_Mant32Exp( dist_ptr_fx[c], *dist_ptr_e, L_negate( res24_fx ), res24_e[c], &res24_e[c] ); /* remove DCT24 high band error contribution */
+ move32();
+ dist_e = s_max( dist_e, res24_e[c] );
+ move16();
+ }
+
+
+ FOR( c = 0; c < maxC_st1; c++ )
+ {
+ dist_ptr_fx[c] = L_shl( dist_ptr_fx[c], sub( res24_e[c], dist_e ) );
+ move32();
+ }
+ *dist_ptr_e = dist_e;
+ move16();
+ /* finally update p_max, as it may potentially change,
+ due to the core DCT24 search originally optimizing over the longer basis vectors than DCT21 */
+ p_max_local = maximum_32_fx( dist_ptr_fx, maxC_st1, NULL );
+
+ return p_max_local;
+}
+
+
/*--------------------------------------------------------------------------*
* depack_mul_values_fx()
*
*--------------------------------------------------------------------------*/
+
static Word32 depack_mul_values_fx( Word16 *Tmp, const Word16 *w, const Word16 *cbp, const Word16 N )
{
Word16 i, val0, val1, val2, val3;
@@ -65,10 +440,13 @@ static Word32 depack_mul_values_fx( Word16 *Tmp, const Word16 *w, const Word16 *
return en;
}
+
+
/*--------------------------------------------------------------------------*
* depack_sub_values()
*
*--------------------------------------------------------------------------*/
+
static void depack_sub_values_fx( Word16 *pTmp, const Word16 *p1, const Word16 *cbp, const Word16 N )
{
Word16 j, val0, val1, val2, val3;
@@ -88,11 +466,14 @@ static void depack_sub_values_fx( Word16 *pTmp, const Word16 *p1, const Word16 *
move16(); /*3Q12*1.28*/
}
}
+
+
/*--------------------------------------------------------------------------*
* msvq_enc_find_p_max_8()
*
* Unroll of inner search loop for maxC == 8
*--------------------------------------------------------------------------*/
+
static Word16 msvq_enc_find_p_max_8_fx( Word32 dist[] )
{
Word16 p_max;
@@ -139,11 +520,14 @@ static Word16 msvq_enc_find_p_max_8_fx( Word32 dist[] )
BASOP_SATURATE_WARNING_ON_EVS
return p_max;
}
+
+
/*--------------------------------------------------------------------------*
* msvq_enc_find_p_max_6()
*
* Unroll of inner search loop for maxC == 6
*--------------------------------------------------------------------------*/
+
static Word16 msvq_enc_find_p_max_6_fx( Word32 dist[] )
{
Word16 p_max;
@@ -180,11 +564,14 @@ static Word16 msvq_enc_find_p_max_6_fx( Word32 dist[] )
BASOP_SATURATE_WARNING_ON_EVS
return p_max;
}
+
+
/*--------------------------------------------------------------------------*
* msvq_enc_fx()
*
* MSVQ encoder
*--------------------------------------------------------------------------*/
+
void msvq_enc_fx(
const Word16 *const *cb, /* i : Codebook (indexed cb[*stages][levels][p]) (0Q15) */
const Word16 dims[], /* i : Dimension of each codebook stage (NULL: full dim.) */
@@ -400,6 +787,449 @@ void msvq_enc_fx(
return;
}
+
+/*--------------------------------------------------------------------------*
+ * msvq_enc_ivas_fx()
+ *
+ * MSVQ encoder
+ *--------------------------------------------------------------------------*/
+
+void msvq_enc_ivas_fx(
+ const Word16 *const *cb, /* i : Codebook (indexed cb[*stages][levels][p]) Q_cb */
+ const Word16 Q_cb, /* i : Codebook Q */
+ const Word16 dims[], /* i : Dimension of each codebook stage (NULL: full dim.) */
+ const Word16 offs[], /* i : Starting dimension of each codebook stage (NULL: 0) */
+ const Word32 u_fx[], /* i : Vector to be encoded (prediction and mean removed) (exp : u_e) */
+ const Word16 u_e, /* i : Exponent for Vector to be encoded */
+ const Word16 *levels, /* i : Number of levels in each stage */
+ const Word16 maxC, /* i : Tree search size (number of candidates kept from from one stage to the next == M-best) */
+ const Word16 stages, /* i : Number of stages */
+ const Word16 w[], /* i : Weights Q8 */
+ const Word16 N, /* i : Vector dimension */
+ const Word16 maxN, /* i : Codebook dimension */
+ const Word16 applyDCT_flag, /* i : applyDCT flag */
+ Word32 *invTrfMatrix_fx, /* i/o: synthesis matrix Q31 */
+ Word16 Idx[] /* o : Indices */
+)
+{
+ Word16 j;
+ const Word16 *cbp, *cb_stage;
+ Word32 resid_buf_fx[2 * LSFMBEST_MAX * M_MAX], *resid_fx[2];
+ Word32 *pTmp, *p1, *p2; // pTmp_e
+ Word16 pTmp_e;
+ Word16 *indices[2], m, s, c, c2, p_max, i;
+ Word16 idx_buf[2 * LSFMBEST_MAX * MAX_VQ_STAGES_USED], parents[LSFMBEST_MAX];
+ Word32 dist_buf_fx[2 * LSFMBEST_MAX], *dist_fx[2], tmp, en, ss2, Tmp[M_MAX];
+ Word16 dist_buf_e[2 * LSFMBEST_MAX], *dist_e[2];
+ Word16 tmp_e, tmp_n, en_e;
+ Word16 resid_e;
+ Word16 n, maxn, start;
+ Word64 W_acc; /*64 bit accumulator*/
+
+ Word32 *st1_syn_vec_ptr_fx = &( resid_buf_fx[1 * LSFMBEST_MAX * M_MAX] ) - FDCNG_VQ_MAX_LEN * maxC;
+ Word32 *st1_mse_ptr_fx = &( resid_buf_fx[1 * LSFMBEST_MAX * M_MAX] ) - ( levels[0] );
+ Word16 indices_st1_local[FDCNG_VQ_DCT_NSEGM * 2];
+
+ /*----------------------------------------------------------------*
+ * Allocate memory for previous (parent) and current nodes.
+ * Parent node is indexed [0], current node is indexed [1].
+ *----------------------------------------------------------------*/
+ indices[0] = idx_buf;
+ indices[1] = idx_buf + maxC * stages; /*move16();*/
+ /*vr_iset(0, idx_buf, 2*stages*maxC);*/
+ set16_fx( idx_buf, 0, (Word16) ( 2 * stages * maxC ) );
+
+ resid_fx[0] = resid_buf_fx;
+ resid_fx[1] = resid_buf_fx + maxC * N; /*move16();*/
+
+ dist_fx[0] = dist_buf_fx;
+ dist_e[0] = dist_buf_e;
+ dist_fx[1] = dist_buf_fx + maxC;
+ dist_e[1] = dist_buf_e + maxC;
+
+ /*vr_iset(0, parents, maxC);*/
+ set16_fx( parents, 0, maxC );
+
+ /*----------------------------------------------------------------*
+ * LSF weights are normalized, so it is always better to multiply it first
+ * Set up inital distance vector
+ *----------------------------------------------------------------*/
+ W_acc = W_mult_32_32( Mpy_32_16_1( u_fx[0], shl( w[0], 2 ) ), u_fx[0] ); // 2*Qu - 6 + 1
+ FOR( j = 1; j < N; j++ )
+ {
+ W_acc = W_mac_32_32( W_acc, Mpy_32_16_1( u_fx[j], shl( w[j], 2 ) ), u_fx[j] ); // 2*Qu - 6 + 1
+ }
+
+ tmp_n = W_norm( W_acc );
+ ss2 = W_extract_h( W_shl( W_acc, tmp_n ) );
+ tmp_e = sub( add( shl( u_e, 1 ), 5 ), tmp_n );
+
+ /* Set up inital error (residual) vectors */
+ pTmp = resid_fx[1]; /*move16();*/
+ resid_e = u_e;
+ move16();
+ IF( applyDCT_flag != 0 )
+ {
+ resid_e = s_max( u_e, 12 );
+ }
+ FOR( c = 0; c < maxC; c++ )
+ {
+ Copy32( u_fx, pTmp + c * N, N );
+ test();
+ IF( applyDCT_flag != 0 && LT_16( u_e, 12 ) )
+ {
+ scale_sig32( pTmp + c * N, N, sub( u_e, resid_e ) );
+ }
+ dist_fx[1][c] = ss2;
+ move32();
+ dist_e[1][c] = tmp_e;
+ move16();
+ }
+
+ /* Loop over all stages */
+ m = 1;
+ move16();
+ FOR( s = 0; s < stages; s++ )
+ {
+ /* codebook pointer is set to point to first stage */
+ cbp = cb[s]; /*Q_cb*/
+ cb_stage = cbp;
+
+ /* Set up pointers to parent and current nodes */
+ swap( indices[0], indices[1], Word16 * );
+ move16();
+ move16();
+ move16();
+ swap( resid_fx[0], resid_fx[1], Word32 * );
+ move32();
+ move32();
+ move32();
+ swap( dist_fx[0], dist_fx[1], Word32 * );
+ swap( dist_e[0], dist_e[1], Word16 * );
+ move32();
+ move32();
+ move32();
+ move16();
+ move16();
+ move16();
+
+ /* p_max points to maximum distortion node (worst of best) */
+ p_max = 0;
+ move16();
+
+ n = N;
+ move16();
+ maxn = maxN;
+ move16();
+ if ( dims )
+ {
+ n = dims[s];
+ move16();
+ }
+ if ( dims )
+ {
+ maxn = n;
+ move16();
+ }
+
+ assert( ( maxn % 4 ) == 0 );
+
+ start = 0;
+ move16();
+ if ( offs )
+ {
+ start = offs[s];
+ move16();
+ }
+
+ set32_fx( Tmp, 0, start );
+ set32_fx( Tmp + start + n, 0, sub( N, add( start, n ) ) );
+
+ /* Set distortions to a large value */
+ FOR( j = 0; j < maxC; j++ )
+ {
+ dist_fx[1][j] = MAX_32;
+ move32();
+ dist_e[1][j] = MAX_16 / 2;
+ move16();
+ }
+
+ test();
+ IF( !s && applyDCT_flag != 0 ) /* means: m==1 */
+ {
+ /* stage 1 candidates search in truncated dct24 domain without any weights */
+ assert( N == FDCNG_VQ_MAX_LEN || N == FDCNG_VQ_MAX_LEN_WB ); /* 21 and 24 allowed */
+ assert( maxC == 2 * FDCNG_VQ_DCT_NSEGM );
+ p_max = msvq_stage1_dct_search_fx( u_fx, u_e, FDCNG_VQ_MAX_LEN, maxC, DCT_T2_24_XX, FDCNG_VQ_DCT_MAXTRUNC, (Word32 *) invTrfMatrix_fx, cdk1r_tr_midQ_truncQ_fx, fdcng_dct_scaleF_fx, FDCNG_VQ_DCT_NSEGM,
+ cdk1_ivas_cols_per_segment, cdk1_ivas_trunc_dct_cols_per_segment, cdk1_ivas_entries_per_segment, cdk1_ivas_cum_entries_per_segment, cdk_37bits_ivas_stage1_W8Qx_dct_sections,
+ stage1_dct_col_syn_shift, cdk1_ivas_segm_neighbour_fwd, cdk1_ivas_segm_neighbour_rev, FDCNG_VQ_DCT_NPOST, st1_mse_ptr_fx, indices_st1_local, st1_syn_vec_ptr_fx, dist_fx[1], &dist_e[1][0] );
+
+ /* move established stage#1 indices to the global MSVQ list structure */
+ set16_fx( dist_e[1], dist_e[1][0], maxC );
+ FOR( c = 0; c < maxC; c++ )
+ {
+ indices[1][c * stages] = indices_st1_local[c];
+ move16();
+ }
+ }
+ ELSE
+ {
+ FOR( j = 0; j < levels[s]; j++ )
+ {
+ /* Compute weighted codebook element and its energy */
+ en = 0;
+ move32();
+ en_e = 0;
+ move16();
+ W_acc = 0;
+ move64();
+ FOR( c2 = 0; c2 < n; c2++ )
+ {
+ Tmp[start + c2] = L_mult0( shl( w[start + c2], 2 ), cbp[c2] );
+ move32();
+ W_acc = W_mac_32_16( W_acc, Tmp[start + c2], cbp[c2] );
+ }
+
+ tmp_n = W_norm( W_acc );
+
+ en = W_extract_h( W_shl( W_acc, tmp_n ) );
+ en_e = sub( sub( 52, shl( Q_cb, 1 ) ), tmp_n );
+
+ cbp += maxn; /* pointer is incremented */
+
+ /* Iterate over all parent nodes */
+ FOR( c = 0; c < m; c++ )
+ {
+ pTmp = &resid_fx[0][c * N];
+ pTmp_e = resid_e;
+ move16();
+ /*tmp = (*pTmp++) * Tmp[0];*/
+ W_acc = W_mult_32_32( pTmp[0], Tmp[0] );
+
+ FOR( i = 1; i < N; i++ )
+ {
+ W_acc = W_mac_32_32( W_acc, pTmp[i], Tmp[i] );
+ }
+ tmp_n = W_norm( W_acc );
+ tmp = W_extract_h( W_shl( W_acc, tmp_n ) );
+ tmp_e = sub( add( pTmp_e, sub( Q31 - Q10, Q_cb ) ), tmp_n );
+
+
+ tmp_n = s_max( tmp_e, en_e );
+ tmp_n = s_max( dist_e[0][c], tmp_n );
+
+ IF( NE_16( dist_e[0][c], MAX_16 / 2 ) )
+ {
+ tmp_n = add( tmp_n, 2 );
+ tmp = L_sub( L_shl( en, sub( en_e, tmp_n ) ), L_shl( tmp, add( sub( tmp_e, tmp_n ), 1 ) ) );
+ tmp = L_add( tmp, L_shl( dist_fx[0][c], sub( dist_e[0][c], tmp_n ) ) );
+ }
+ ELSE
+ {
+ tmp = MAX_32 - 1;
+ move32();
+ tmp_n = MAX_16 / 2;
+ move32();
+ }
+
+ IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( tmp, tmp_n, dist_fx[1][p_max], dist_e[1][p_max] ), -1 ) )
+ {
+ /* Replace worst */
+ dist_fx[1][p_max] = tmp;
+ move32();
+ dist_e[1][p_max] = tmp_n;
+ move16();
+ indices[1][p_max * stages + s] = j;
+ move16();
+ parents[p_max] = c;
+ move16();
+
+ p_max = 0;
+ move16();
+ tmp_e = p_max;
+ move16();
+
+ tmp_n = dist_e[1][0];
+ move16();
+ FOR( c2 = 1; c2 < maxC; c2++ )
+ {
+ if ( EQ_16( BASOP_Util_Cmp_Mant32Exp( dist_fx[1][c2], dist_e[1][c2], dist_fx[1][p_max], dist_e[1][p_max] ), 1 ) )
+ {
+ p_max = c2;
+ move16();
+ }
+ test();
+ if ( GT_16( dist_e[1][c2], tmp_n ) && NE_16( dist_e[1][c2], MAX_16 / 2 ) )
+ {
+ tmp_n = dist_e[1][c2];
+ move16();
+ }
+ }
+ FOR( c2 = 0; c2 < maxC; c2++ )
+ {
+ IF( NE_16( dist_e[1][c2], MAX_16 / 2 ) )
+ {
+ dist_fx[1][c2] = L_shl( dist_fx[1][c2], sub( dist_e[1][c2], tmp_n ) );
+ move32();
+ dist_e[1][c2] = tmp_n;
+ move16();
+ }
+ }
+ } /*IF (L_sub(tmp,dist[1][p_max]) < 0) */
+ } /* FOR (c=0; chTcxEnc;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
Flag Overflow = 0;
#endif
test();
-#ifdef IVAS_CODE
- IF( EQ_32( st_fx->input_Fs, 32000 ) || EQ_32( st_fx->input_Fs, 48000 ) )
- {
- gain2_start = GAIN2_START_SWB;
- gain2_start_rs = GAIN2_START_SWB_RS;
- gain3_start = GAIN3_START_SWB;
- gain3_start_rs = GAIN3_START_SWB_RS;
- gain4_start = GAIN4_START_SWB;
- // gain4_start_rs = GAIN4_START_SWB_RS;
- H1_start = H1_START_SWB;
- H2_start = H2_START_SWB;
- H_length = H_LENGTH_SWB;
- move16();
- move16();
- move16();
- move16();
- move16();
- move16();
- }
- ELSE IF( EQ_32( st_fx->input_Fs, 16000 ) )
- {
- gain2_start = GAIN2_START_WB;
- gain2_start_rs = GAIN2_START_SWB_RS;
- gain3_start = GAIN3_START_WB;
- gain2_start_rs = GAIN2_START_SWB_RS;
- gain4_start = GAIN4_START_WB;
- H1_start = H1_START_WB;
- H2_start = H2_START_WB;
- H_length = H_LENGTH_WB;
- move16();
- move16();
- move16();
- move16();
- move16();
- move16();
- }
- ELSE
- {
- assert( !"Unknown sampling frequency in MDCT_classifier" );
- H1_start = -1; /* to avoid compilation warning */
- H2_start = -1; /* to avoid compilation warning */
- H_length = -1; /* to avoid compilation warning */
- gain2_start = -1; /* to avoid compilation warning */
- gain3_start = -1; /* to avoid compilation warning */
- gain4_start = -1; /* to avoid compilation warning */
- move16();
- move16();
- move16();
- move16();
- move16();
- move16();
- }
-#endif
-#ifdef IVAS_CODE
- if ( NE_16( st_fx->element_mode, IVAS_CPE_DFT ) )
-#endif
{
dft_mag_square_fx( fft_buff, magSq, 256 );
}
-#ifdef IVAS_CODE
- ELSE
- {
- float norm_val;
-
- norm_val = ( L_FFT * L_FFT ) / 4.f;
- for ( k = 0; k < 128; k++ )
- {
- X[k + 1] = st->Bin_E_old[k] * norm_val;
- }
- X[0] = X[1];
- }
-#endif
nf = L_add( magSq[0], 0 );
pe = L_add( magSq[0], 0 );
np = 0;
@@ -295,10 +222,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
gain1 = L_deposit_l( 0 );
gain2 = L_deposit_l( 0 );
gain3 = L_deposit_l( 0 );
-#ifdef IVAS_CODE
- PMT( "MDCT_classifier needs review for different sampling rate" )
-#endif
- // IVAS_CODE to adapt
+
FOR( k = 0; k < 8; k++ )
{
gain1 = L_add( gain1, L_shr( cldfbBuf_Ener[k], 3 ) );
diff --git a/lib_enc/mslvq_enc_fx.c b/lib_enc/mslvq_enc_fx.c
index 8f8dd4537e60c9085f7237e3bee200ad9c7b7d3b..4955dede80a4a7e57d285bebf54ec13d0fda2508 100644
--- a/lib_enc/mslvq_enc_fx.c
+++ b/lib_enc/mslvq_enc_fx.c
@@ -1221,10 +1221,10 @@ Word32 mslvq_ivas_16(
}
ELSE
{
- p_sigma = sigma_p_fx[mode];
+ p_sigma = sigma_p_ivas_fx[mode];
/* inverse sigma is precomputed to save complexity */
- p_inv_sigma = inv_sigma_p_fx[mode];
+ p_inv_sigma = inv_sigma_p_ivas_fx[mode];
p_scales = scales_p_ivas_fx[mode_glb];
diff --git a/lib_enc/nois_est_fx.c b/lib_enc/nois_est_fx.c
index c8f698da907bbefd41bbee045fe960fe0ab9a892..4f178214f47fe7d14821c7cdc9739a2c2de1a37f 100644
--- a/lib_enc/nois_est_fx.c
+++ b/lib_enc/nois_est_fx.c
@@ -359,17 +359,17 @@ void noise_est_init_ivas_fx(
hNoiseEst->Etot_lp_fx = 0;
hNoiseEst->Etot_h_fx = 0;
hNoiseEst->Etot_l_fx = 0;
- hNoiseEst->Etot_l_lp_fx = 0;
- hNoiseEst->Etot_last_fx = 0;
- hNoiseEst->Etot_v_h2_fx = 0;
+ hNoiseEst->Etot_l_lp_32fx = 0;
+ hNoiseEst->Etot_last_32fx = 0;
+ hNoiseEst->Etot_v_h2_32fx = 0;
hNoiseEst->sign_dyn_lp_fx = 0;
move16();
move16();
move16();
move16();
- move16();
- move16();
- move16();
+ move32();
+ move32();
+ move32();
return;
}
@@ -510,12 +510,12 @@ void noise_est_pre_32fx(
move32();
Etot_l_32fx = Etot;
move32();
- hNoiseEst->Etot_l_lp_fx = extract_h( Etot ); // Q8
- move16();
- hNoiseEst->Etot_last_fx = extract_h( Etot ); // Q8
- move16();
- hNoiseEst->Etot_v_h2_fx = 0;
- move16();
+ hNoiseEst->Etot_l_lp_32fx = Etot; // Q24
+ move32();
+ hNoiseEst->Etot_last_32fx = Etot; // Q24
+ move32();
+ hNoiseEst->Etot_v_h2_32fx = 0;
+ move32();
Etot_lp_32fx = Etot;
move32();
hNoiseEst->sign_dyn_lp_fx = 0;
@@ -538,20 +538,20 @@ void noise_est_pre_32fx(
)
{
/* *Etot_l += min(2,(*Etot_last-*Etot_l)*0.1f); */
- tmp = Mpy_32_32( L_sub( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), 214748365 ); /* 0.1f factor in Q31 */
- tmp = L_min( 33554432, tmp ); /* 2.0 in Q24 is 33554432 */
- Etot_l_32fx = L_add( Etot_l_32fx, tmp ); /* Q24 */
+ tmp = Mpy_32_32( L_sub( ( hNoiseEst->Etot_last_32fx ), Etot_l_32fx ), 214748365 ); /* 0.1f factor in Q31 */
+ tmp = L_min( 33554432, tmp ); /* 2.0 in Q24 is 33554432 */
+ Etot_l_32fx = L_add( Etot_l_32fx, tmp ); /* Q24 */
}
/* Avoids large steps in short active segments */
test();
- IF( ( GT_32( L_sub( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), 503316480 ) ) /* 30.0f*Q24 */
+ IF( ( GT_32( L_sub( hNoiseEst->Etot_last_32fx, Etot_l_32fx ), 503316480 ) ) /* 30.0f*Q24 */
&& ( GT_16( hNoiseEst->harm_cor_cnt, HE_LT_CNT_PRE_SHORT_FX ) ) )
{
/* *Etot_l += (*Etot_last-*Etot_l)*0.02f; */
- Etot_l_32fx = L_add( Etot_l_32fx, Mpy_32_32( L_sub( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), 42949673 ) ); /* 0.02 in Q24*/
+ Etot_l_32fx = L_add( Etot_l_32fx, Mpy_32_32( L_sub( hNoiseEst->Etot_last_32fx, Etot_l_32fx ), 42949673 ) ); /* 0.02 in Q24*/
}
- ELSE IF( GT_32( L_sub( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), 167772160 ) ) /* 10.0 in Q24*/
+ ELSE IF( GT_32( L_sub( hNoiseEst->Etot_last_32fx, Etot_l_32fx ), 167772160 ) ) /* 10.0 in Q24*/
{
Etot_l_32fx = L_add( Etot_l_32fx, 1342177 ); /* 0.08 in Q24*/
}
@@ -560,10 +560,10 @@ void noise_est_pre_32fx(
Etot_l_32fx = L_min( Etot_l_32fx, Etot ); // Q24
test();
- IF( LT_16( ini_frame_fx, 100 ) && LT_32( Etot_l_32fx, L_deposit_h( hNoiseEst->Etot_l_lp_fx ) ) )
+ IF( LT_16( ini_frame_fx, 100 ) && LT_32( Etot_l_32fx, ( hNoiseEst->Etot_l_lp_32fx ) ) )
{
/**Etot_l_lp = 0.1f * *Etot_l + (1.0f - 0.1) * *Etot_l_lp; */
- hNoiseEst->Etot_l_lp_fx = extract_h( L_add( Mpy_32_32( 214748364 /* 0.1f in Q31*/, Etot_l_32fx ), Mpy_32_32( 1932735283 /* 0.9f in Q31*/, L_deposit_h( hNoiseEst->Etot_l_lp_fx ) ) ) ); // Q8
+ hNoiseEst->Etot_l_lp_32fx = W_round64_L( W_add( W_mult_32_32( 214748364 /* 0.1f in Q31*/, Etot_l_32fx ), W_mult_32_32( 1932735283 /* 0.9f in Q31*/, hNoiseEst->Etot_l_lp_32fx ) ) ); // Q8
move16();
}
ELSE
@@ -572,16 +572,16 @@ void noise_est_pre_32fx(
test();
test();
test();
- IF( ( ( GT_16( hNoiseEst->harm_cor_cnt, HE_LT_CNT_FX ) ) && ( GT_32( L_sub_sat( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), HE_LT_THR2_Q24 ) ) ) || ( ( sub( hNoiseEst->harm_cor_cnt, HE_LT_CNT_FX ) > 0 ) && ( LT_16( ini_frame_fx, HE_LT_CNT_INIT_FX ) ) ) || ( GT_32( L_sub_sat( L_deposit_h( hNoiseEst->Etot_l_lp_fx ), Etot_l_32fx ), HE_LT_THR2_Q24 ) ) )
+ IF( ( ( GT_16( hNoiseEst->harm_cor_cnt, HE_LT_CNT_FX ) ) && ( GT_32( L_sub_sat( hNoiseEst->Etot_last_32fx, Etot_l_32fx ), HE_LT_THR2_Q24 ) ) ) || ( ( sub( hNoiseEst->harm_cor_cnt, HE_LT_CNT_FX ) > 0 ) && ( LT_16( ini_frame_fx, HE_LT_CNT_INIT_FX ) ) ) || ( GT_32( L_sub_sat( hNoiseEst->Etot_l_lp_32fx, Etot_l_32fx ), HE_LT_THR2_Q24 ) ) )
{
/**Etot_l_lp = 0.03f * *Etot_l + (1.0f - 0.03f) * *Etot_l_lp; */
- hNoiseEst->Etot_l_lp_fx = extract_h( L_add( Mpy_32_32( 64424509 /* 0.03f in Q31*/, Etot_l_32fx ), Mpy_32_32( 2083059139 /* 0.97f in Q31*/, L_deposit_h( hNoiseEst->Etot_l_lp_fx ) ) ) ); // Q8
+ hNoiseEst->Etot_l_lp_32fx = W_extract_h( W_add( W_mult_32_32( 64424509 /* 0.03f in Q31*/, Etot_l_32fx ), W_mult_32_32( 2083059139 /* 0.97f in Q31*/, hNoiseEst->Etot_l_lp_32fx ) ) ); // Q24
move16();
}
ELSE
{
/* *Etot_l_lp = 0.02f * *Etot_l + (1.0f - 0.02f) * *Etot_l_lp; */
- hNoiseEst->Etot_l_lp_fx = extract_h( L_add( Mpy_32_32( 42949673 /* 0.02f in Q31*/, Etot_l_32fx ), Mpy_32_32( 2104533975 /* 0.98f in Q31*/, L_deposit_h( hNoiseEst->Etot_l_lp_fx ) ) ) ); // Q8
+ hNoiseEst->Etot_l_lp_32fx = W_extract_h( W_add( W_mult_32_32( 42949673 /* 0.02f in Q31*/, Etot_l_32fx ), W_mult_32_32( 2104533975 /* 0.98f in Q31*/, hNoiseEst->Etot_l_lp_32fx ) ) ); // Q24
move16();
}
}
@@ -748,9 +748,9 @@ void noise_est_down_ivas_fx(
const Word16 min_band, /* i : minimum critical band */
const Word16 max_band, /* i : maximum critical band */
Word16 *totalNoise, /* o : noise estimate over all critical bands */
- Word16 Etot, /* i : Energy of current frame */
- Word16 *Etot_last, /* i/o: Energy of last frame Q8 */
- Word16 *Etot_v_h2 /* i/o: Energy variations of noise frames Q8 */
+ Word32 Etot, /* i : Energy of current frame Q24*/
+ Word32 *Etot_last, /* i/o: Energy of last frame Q24 */
+ Word32 *Etot_v_h2 /* i/o: Energy variations of noise frames Q24 */
)
{
@@ -770,9 +770,10 @@ void noise_est_down_ivas_fx(
Copy32( bckr, bckr32, NB_BANDS );
set16_fx( bckr_q, *q_bckr, NB_BANDS );
- L_Etot = L_shl( Etot, 16 ); /*Q24 for later AR1 computations*/
- L_Etot_last = L_shl( *Etot_last, 16 );
- L_Etot_v_h2 = L_shl( *Etot_v_h2, 16 );
+ L_Etot = Etot; /*Q24 for later AR1 computations*/
+ move32();
+ L_Etot_last = *Etot_last;
+ L_Etot_v_h2 = *Etot_v_h2;
/*-----------------------------------------------------------------*
* Estimate total noise energy
@@ -900,7 +901,7 @@ void noise_est_down_ivas_fx(
L_Etot_v_h2 = Madd_32_16( L_tmp, L_Etot_v_h2, 32113 /* 0.98 in Q15 */ ); // Q24
/* if (*Etot_v_h2 < 0.1f) { *Etot_v_h2 = 0.1f; } */
- *Etot_v_h2 = s_max( round_fx( L_Etot_v_h2 ), 26 /* 0.1 in Q8*/ ); // Q8
+ *Etot_v_h2 = L_max( L_Etot_v_h2, 1677722 /* 0.1 in Q24*/ ); // Q24
move16();
return;
@@ -2253,6 +2254,7 @@ void noise_est_ivas_fx(
Word16 tmp_enr, tmp_floor; /* constants in Q8 */
Word16 vad_bwidth_fx; /* vad ns control variabel for input bwidth from teh BWD */
/* for DTX operation */
+ Word32 L_tmp;
Word16 lim_Etot_fx; /* Q8 */
Word32 lim_Etot_sq_fx; /* Q16 */
@@ -2989,7 +2991,7 @@ void noise_est_ivas_fx(
move16();
/* st->lt_Ellp_dist = 0.03f* (Etot - st->Etot_l_lp) + 0.97f*st->lt_Ellp_dist;*/
- tmp = sub( Etot, hNoiseEst->Etot_l_lp_fx ); /* Q8 */
+ tmp = sub( Etot, extract_h( hNoiseEst->Etot_l_lp_32fx ) ); /* Q8 */
hNoiseEst->lt_Ellp_dist_fx = mac_r( L_mult( tmp, 983 /* 0.03 in Q15*/ ), hNoiseEst->lt_Ellp_dist_fx, 31785 /* 0.97 in Q15*/ ); // Q8
move16();
@@ -3001,7 +3003,7 @@ void noise_est_ivas_fx(
} */
IF( *st_harm_cor_cnt == 0 )
{
- hNoiseEst->lt_haco_ev_fx = mac_r( 64424509 /* 0.03 in Q32*/, hNoiseEst->lt_haco_ev_fx, 31785 /* 0.97 in Q15*/ ); // Q15
+ hNoiseEst->lt_haco_ev_fx = mac_r( 64424509 /* 0.03 in Q31*/, hNoiseEst->lt_haco_ev_fx, 31785 /* 0.97 in Q15*/ ); // Q15
move16();
}
ELSE
@@ -3180,7 +3182,7 @@ void noise_est_ivas_fx(
{
tmp = shl( tmp, 1 ); /*1.5 + 1.5 Q13 */
}
- Ltmp = L_deposit_h( hNoiseEst->Etot_l_lp_fx );
+ Ltmp = hNoiseEst->Etot_l_lp_32fx;
Etot_l_lp_thr = round_fx( L_add( Ltmp, L_shl( L_mult( tmp, Etot_v_h2 ), 2 ) ) ); /* Q13+Q8+1 +2 = Q24 -> Q8*/
/* enr_bgd = Etot < Etot_l_lp_thr; */
@@ -3365,8 +3367,8 @@ void noise_est_ivas_fx(
move16();
test();
test();
- if ( ( GT_16( hNoiseEst->sign_dyn_lp_fx, 15 * 256 ) ) /* 15 in Q8 */
- && ( LT_16( sub( Etot, hNoiseEst->Etot_l_lp_fx ), shl( Etot_v_h2, 1 ) ) ) /* Q8 , Etot_v_h2 has limited dynmics can be upscaled*/
+ if ( ( GT_16( hNoiseEst->sign_dyn_lp_fx, 15 * 256 ) ) /* 15 in Q8 */
+ && ( LT_16( sub( Etot, extract_h( hNoiseEst->Etot_l_lp_32fx ) ), shl( Etot_v_h2, 1 ) ) ) /* Q8 , Etot_v_h2 has limited dynmics can be upscaled*/
&& ( GT_16( *st_harm_cor_cnt, 20 ) ) )
{
sd1_bgd = 1;
@@ -3492,7 +3494,7 @@ void noise_est_ivas_fx(
) */
ELSE IF( ( LT_16( hNoiseEst->act_pred_fx, 26214 /* 0.8 in Q15*/ ) && ( ( aE_bgd != 0 ) || ( PAU != 0 ) ) && ( LT_16( hNoiseEst->lt_haco_ev_fx, 3277 /* 0.1 in q15*/ ) ) ) ||
( ( LT_16( hNoiseEst->act_pred_fx, 22938 /* 0.70 in Q15 */ ) ) && ( ( aE_bgd != 0 ) || ( LT_16( non_staB, 17 * 256 /* 17.0 in Q8 */ ) ) ) && ( PAU != 0 ) && ( LT_16( hNoiseEst->lt_haco_ev_fx, 4915 /* 0.15 in Q15 */ ) ) ) ||
- ( GT_16( hNoiseEst->harm_cor_cnt, 80 ) && GT_16( hNoiseEst->totalNoise_fx, 5 * 256 /* 5.0 in Q8 */ ) && LT_16( Etot, s_max( 1 * 256, add( Etot_l_lp, add( hNoiseEst->Etot_v_h2_fx, shr( hNoiseEst->Etot_v_h2_fx, 1 ) ) /* 1.5= 1.0+.5 */ ) ) ) ) ||
+ ( GT_16( hNoiseEst->harm_cor_cnt, 80 ) && GT_16( hNoiseEst->totalNoise_fx, 5 * 256 /* 5.0 in Q8 */ ) && LT_16( Etot, s_max( 1 * 256, add( Etot_l_lp, extract_h( L_add( hNoiseEst->Etot_v_h2_32fx, L_shr( hNoiseEst->Etot_v_h2_32fx, 1 ) ) ) /* 1.5= 1.0+.5 */ ) ) ) ) ||
( GT_16( hNoiseEst->harm_cor_cnt, 50 ) && GT_16( hNoiseEst->first_noise_updt, 30 ) && ( aE_bgd != 0 ) && GT_16( hNoiseEst->lt_aEn_zero_fx, 16384 /*.5 in Q15*/ ) ) || ( tn_ini != 0 ) )
{
updt_step = 3277;
@@ -3558,14 +3560,14 @@ void noise_est_ivas_fx(
}
/*st->lt_aEn_zero = 0.2f * (st->aEn==0) + (1-0.2f) *st->lt_aEn_zero;*/
/* y(n+1)= alpha*tmp + (1-alpha)*y(n) */
- tmp = 0;
- move16();
+ L_tmp = 0;
+ move32();
if ( hNoiseEst->aEn == 0 )
{
- tmp = 6554; // 0.2 in Q15
- move16();
+ L_tmp = 429496730; // 0.2 in Q31
+ move32();
}
- hNoiseEst->lt_aEn_zero_fx = mac_r( tmp, hNoiseEst->lt_aEn_zero_fx, 26214 /* 0.8 in Q15*/ ); // Q15
+ hNoiseEst->lt_aEn_zero_fx = mac_r( L_tmp, hNoiseEst->lt_aEn_zero_fx, 26214 /* 0.8 in Q15*/ ); // Q15
move16();
IF( st_fx->element_mode > EVS_MONO )
diff --git a/lib_enc/pitch_ol_fx.c b/lib_enc/pitch_ol_fx.c
index 91181714af9242f49697b8f221c167f31d525faf..fdadcd318be997001ac0ec11996edee7c1423496 100644
--- a/lib_enc/pitch_ol_fx.c
+++ b/lib_enc/pitch_ol_fx.c
@@ -1686,13 +1686,17 @@ void pitch_ol_ivas_fx(
move16();
/* enr1 = dotp( pt2, pt2, len[j] ) + 0.01f; */
- temp = 167772 /*0.01f in Q24*/;
+ temp = 0;
move64();
FOR( m = 0; m < len[j]; m++ )
{
temp = W_mac0_16_16( temp, pt2[m], pt2[m] ); // 2*qwsp
}
+
temp = W_shl( temp, sub( Q24, shl( qwsp, 1 ) ) ); // Q24
+
+ temp = W_add( temp, 167772 ); /*0.01f in Q24*/
+
enr1_exp = W_norm( temp );
enr1 = W_extract_h( W_shl( temp, enr1_exp ) ); // enr1_exp+24-32
enr1_exp = sub( 39, enr1_exp ); // 31-(enr1_exp+24-32)
@@ -1724,13 +1728,18 @@ void pitch_ol_ivas_fx(
move16();
/* enr1 = dotp(pt4, pt4, len1[j]) + 0.01f; */
- temp = 167772 /*0.01f in Q24*/;
+ temp = 0;
+ move64();
move64();
FOR( m = 0; m < len1[j]; m++ )
{
temp = W_mac0_16_16( temp, pt4[m], pt4[m] ); // 2*qwsp
}
+
temp = W_shl( temp, sub( Q24, shl( qwsp, 1 ) ) ); // Q24
+
+ temp = W_add( temp, 167772 ); /*0.01f in Q24*/
+
enr1_exp = W_norm( temp );
enr1 = W_extract_h( W_shl( temp, enr1_exp ) ); // enr1_exp+24-32
enr1_exp = sub( 39, enr1_exp ); // 31-(enr1_exp+24-32)
diff --git a/lib_enc/pre_proc_fx.c b/lib_enc/pre_proc_fx.c
index cbb2cf421564b73d0e51c62baef7b4988667fe3e..f7ebc8298cbff4ec232d23900b37bf55e03dea18 100644
--- a/lib_enc/pre_proc_fx.c
+++ b/lib_enc/pre_proc_fx.c
@@ -414,7 +414,7 @@ void pre_proc_fx(
alw_voicing[1] = st->voicing_fx[2];
move16();
- analy_lp_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, -1 /*IVAS_CODE !! LowRateFlag*/, *Q_new, Q_r );
+ analy_lp_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, EVS_MONO, 0, *Q_new, Q_r );
lsp2lsf_fx( lsp_new, lsf_new, M, INT_FS_12k8 );
stab_fac = lsf_stab_fx( lsf_new, st->lsf_old1_fx, 0, L_FRAME );
@@ -1127,7 +1127,7 @@ void pre_proc_fx(
Copy( st->lsp_old1_fx, st->lspold_enc_fx, M );
}
- analy_lp_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, -1 /*IVAS_CODE !! LowRateFlag*/, *Q_new, Q_r );
+ analy_lp_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, EVS_MONO, 0, *Q_new, Q_r );
/*--------------------------------------------------------------*
* Compute Weighted Input
diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h
index d6532b207ae1558aa79c20ed75f88e56466df7d5..8e323af82452d586d670578d067b0cd1af1a2d5b 100644
--- a/lib_enc/prot_fx_enc.h
+++ b/lib_enc/prot_fx_enc.h
@@ -41,9 +41,8 @@
#include "ivas_error_utils.h"
#include "complex_basop.h"
#include "ivas_stat_enc.h"
-/*----------------------------------------------------------------------------------*
- * Prototypes of RAM counting tool macros
- *----------------------------------------------------------------------------------*/
+
+
ivas_error acelp_core_enc_fx(
Encoder_State *st_fx, /* i/o: encoder state structure */
const Word16 inp_fx[], /* i : input signal of the current frame Q_new*/
@@ -62,58 +61,42 @@ ivas_error acelp_core_enc_fx(
Word16 pitch_buf_fx[NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/
Word16 *unbits_fx, /* o : number of unused bits Q0*/
STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i/o: TD stereo encoder handle */
- const float tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */
const Word16 Q_new,
const Word16 shift
);
-void analy_lp_ivas_fx(
- const Word16 speech[], /* i :(Q_new) pointer to the speech frame */
- const Word16 L_frame, /* i :(q0) length of the frame */
- const Word16 L_look, /* i :(q0) look-ahead */
- Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */
- Word16 A[], /* o :(q14) A(z) filter coefficients */
- Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */
- Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */
- Word16 lsp_new[], /* o :(q15) current frame LSPs */
- Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */
- Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */
- const Word16 Top[2], /* i :(q0) open loop pitch lag */
- const Word16 Tnc[2], /* i :(q15) open loop pitch gain */
- const Word32 Core_sr, /* i :(q0) Internal core sampling rate */
- const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */
- Word16 Q_new, /*i: stores Q for speech*/
- Word16 *Q_r /*stores q for ener*/ );
-
void analy_lp_fx(
- const Word16 speech[], /* i : pointer to the speech frame Q_new*/
- const Word16 L_frame, /* i : length of the frame Q0*/
- const Word16 L_look, /* i : look-ahead Q0*/
- Word32 *ener, /* o : residual energy from Levinson-Durbin Q_r*/
- Word16 A[], /* o : A(z) filter coefficients Q14*/
- Word16 epsP_h[], /* o : LP analysis residual energies for each iteration Q_r*/
- Word16 epsP_l[], /* o : LP analysis residual energies for each iteration Q_r*/
- Word16 lsp_new[], /* o : current frame LSPs Q15*/
- Word16 lsp_mid[], /* o : current mid-frame LSPs Q15*/
- Word16 lsp_old[], /* i/o: previous frame unquantized LSPs Q15*/
- const Word16 Top[2], /* i : open loop pitch lag Q0*/
- const Word16 Tnc[2], /* i : open loop pitch gain Q15*/
- const Word32 Core_sr, /* i : Internal core sampling rate Q0*/
- const Word16 sec_chan_low_rate, /* i : flag to signal second channel Q0*/
- Word16 Q_new,
- Word16 *Q_r );
-
-void AVQ_cod_fx( /* o: comfort noise gain factor */
- const Word16 xri[], /* i: vector to quantize */
- Word16 xriq[], /* o: quantized normalized vector (assuming the bit budget is enough) */
- const Word16 NB_BITS, /* i: number of allocated bits */
- const Word16 Nsv, /* i: number of subvectors (lg=Nsv*8) */
- const Word16 Q_in_ref /* i: Scaling i */
+ const Word16 speech[], /* i :(Q_new) pointer to the speech frame */
+ const Word16 L_frame, /* i :(q0) length of the frame */
+ const Word16 L_look, /* i :(q0) look-ahead */
+ Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */
+ Word16 A[], /* o :(q14) A(z) filter coefficients */
+ Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */
+ Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */
+ Word16 lsp_new[], /* o :(q15) current frame LSPs */
+ Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */
+ Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */
+ const Word16 Top[2], /* i :(q0) open loop pitch lag */
+ const Word16 Tnc[2], /* i :(q15) open loop pitch gain */
+ const Word32 Core_sr, /* i :(q0) Internal core sampling rate */
+ const Word16 element_mode, /* i : element mode */
+ const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */
+ Word16 Q_new, /* i : stores Q for speech */
+ Word16 *Q_r /*stores q for ener*/
+);
+
+/*1 r: comfort noise gain factor */
+void AVQ_cod_fx(
+ const Word16 xri[], /* i: vector to quantize */
+ Word16 xriq[], /* o: quantized normalized vector (assuming the bit budget is enough) */
+ const Word16 NB_BITS, /* i: number of allocated bits */
+ const Word16 Nsv, /* i: number of subvectors (lg=Nsv*8) */
+ const Word16 Q_in_ref /* i: Scaling i */
);
void AVQ_encmux_fx(
- BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
+ BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
const Word16 extl, /* i : extension layer */
Word16 xriq[], /* i/o: rounded subvectors [0..8*Nsv-1] followed
by rounded bit allocations [8*Nsv..8*Nsv+Nsv-1] */
@@ -125,7 +108,7 @@ void AVQ_encmux_fx(
);
void AVQ_encmux_ivas_fx(
- BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
+ BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
const Word16 extl, /* i : extension layer */
Word16 xriq[], /* i/o: rounded subvectors [0..8*Nsv-1] followed
by rounded bit allocations [8*Nsv..8*Nsv+Nsv-1] */
@@ -146,15 +129,15 @@ void bw_detect_fx(
const Word16 mct_on, /* i : flag MCT mode */
const Word16 Q_spec );
-void core_switching_post_enc_fx( /*done */
- Encoder_State *st_fx, /* i/o: encoder state structure */
- const Word16 inp12k8[], /* i : i signal @12.8 kHz Qinp*/
- const Word16 inp16k[], /* i : i signal @16 kHz Qinp*/
- const Word16 A[], /* i : unquant. LP filter coefs. (Q12) */
- Word16 Qshift,
- Word16 Q_new,
- const Word16 Qsp, /* i/o : Q from acelp synthsis */
- Word16 *Qmus /* i/o : Q from mdct synthsis / Q of output synthesis */
+void core_switching_post_enc_fx(
+ Encoder_State *st_fx, /* i/o: encoder state structure */
+ const Word16 inp12k8[], /* i : i signal @12.8 kHz Qinp*/
+ const Word16 inp16k[], /* i : i signal @16 kHz Qinp*/
+ const Word16 A[], /* i : unquant. LP filter coefs. (Q12) */
+ Word16 Qshift,
+ Word16 Q_new,
+ const Word16 Qsp, /* i/o : Q from acelp synthsis */
+ Word16 *Qmus /* i/o : Q from mdct synthsis / Q of output synthesis */
);
void core_switching_pre_enc_fx(
@@ -165,8 +148,9 @@ void core_switching_pre_enc_fx(
const Word16 last_element_mode /* i : last_element_mode Q0*/
);
-Word16 correlation_shift_fx( /* o : noise dependent voicing correction Q15 */
- const Word16 totalNoise_fx /* i/o: noise estimate over all critical bands Q8 */
+/*! r: noise dependent voicing correction Q15 */
+Word16 correlation_shift_fx(
+ const Word16 totalNoise_fx /* i/o: noise estimate over all critical bands Q8 */
);
void dtx_fx(
@@ -211,9 +195,10 @@ void fb_tbe_enc_fx(
void fb_tbe_enc_ivas_fx(
Encoder_State *st, /* i/o: encoder state structure */
- const Word16 new_input[], /* i : i speech at 48 kHz sample rate Q0*/
+ const Word16 new_input[], /* i : i speech at 48 kHz sample rate Q_new_input*/
const Word16 fb_exc[], /* i : FB excitation from the SWB part Q_fb_exc*/
- Word16 Q_fb_exc );
+ Word16 Q_fb_exc,
+ Word16 Q_new_input );
void fb_tbe_reset_enc_fx(
Word32 elliptic_bpf_2_48k_mem_fx[][4],
@@ -363,9 +348,9 @@ void noise_est_down_ivas_fx(
const Word16 min_band, /* i : minimum critical band */
const Word16 max_band, /* i : maximum critical band */
Word16 *totalNoise, /* o : noise estimate over all critical bands */
- Word16 Etot, /* i : Energy of current frame */
- Word16 *Etot_last, /* i/o: Energy of last frame Q8 */
- Word16 *Etot_v_h2 /* i/o: Energy variations of noise frames Q8 */
+ Word32 Etot, /* i : Energy of current frame Q24*/
+ Word32 *Etot_last, /* i/o: Energy of last frame Q24 */
+ Word32 *Etot_v_h2 /* i/o: Energy variations of noise frames Q24 */
);
void noise_est_fx(
@@ -564,6 +549,15 @@ Word16 signal_clas_fx( /* o : classification for current
Word16 *uc_clas /* o : temporary classification used in music/speech class*/
);
+Word16 signal_clas_ivas_fx( /* o : classification for current frames */
+ Encoder_State *st, /* i/o: encoder state structure */
+ const Word16 *speech, /* i : pointer to speech signal for E computation */
+ const Word32 *ee, /* i : lf/hf E ration for 2 half-frames */
+ const Word16 relE, /* i : frame relative E to the long term average */
+ const Word16 L_look, /* i : look-ahead */
+ Word16 *uc_clas /* o : temporary classification used in music/speech class*/
+);
+
void speech_music_classif_fx(
Encoder_State *st, /* i/o: state structure */
const Word16 *new_inp, /* i : new input signal */
@@ -633,6 +627,7 @@ void swb_bwe_enc_ivas_fx(
Word16 *old_input_16k_fx, /* i : input signal @16kHz for SWB BWE */
const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */
const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */
+ const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */
Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */
Word16 Q_shb_speech,
Word16 Q_slb_speech );
@@ -1238,8 +1233,9 @@ void ProcessIGF_ivas_fx(
Encoder_State *st, /* i : Encoder state */
Word16 powerSpec_len, /* i : length of pPowerSpectrum buffer */
Word32 *pMDCTSpectrum, /* i : MDCT spectrum */
- const Word32 *pITFMDCTSpectrum, /* i : MDCT spectrum fir ITF */
Word16 *q_spectrum, /* i/o: Q of spectrum */
+ const Word32 *pITFMDCTSpectrum, /* i : MDCT spectrum fir ITF */
+ const Word16 q_ITFMDCTSpectrum, /* i : Q of MDCT spectrum fir ITF */
Word32 *pPowerSpectrum, /* i : MDCT^2 + MDST^2 spectrum, or estimate */
Word16 *q_powerSpec, /* i/o: Q of power spectrum */
const Word16 isTCX20, /* i : flag indicating if the input is TCX20 or TCX10/2xTCX5 */
@@ -2192,7 +2188,7 @@ void stat_noise_uv_enc_ivas_fx(
Word16 *Aq, /* i : A(z) quantized for the 4 subframes Q=12 */
Word16 *exc2, /* i/o: excitation buffer Q=Q_stat_noise */
const Word16 uc_two_stage_flag, /* o : flag undicating two-stage UC */
- Word16 Q_new );
+ Word16 *Q_new );
void analy_sp_fx(
const Word16 element_mode, /* i : element mode */
@@ -2223,7 +2219,7 @@ void ivas_analy_sp_fx(
Word16 *q_fr_bands, /* o : energy in critical frequency bands Q0 */
Word32 *lf_E, /* o : per bin E for first... q_lf_E */
Word16 *q_lf_E, /* o : per bin E for first... Q0 */
- Word16 *Etot, /* o : total input energy Q8 */
+ Word32 *Etot, /* o : total input energy Q24 */
const Word16 min_band, /* i : minimum critical band Q0 */
const Word16 max_band, /* i : maximum critical band Q0 */
Word32 *Bin_E, /* o : per-bin energy spectrum q_Bin_E */
@@ -2317,22 +2313,8 @@ void find_targets_fx(
Word16 *cn, /* o : target vector in residual domain Q_new*/
Word16 *h1 /* o : impulse response of weighted synthesis filter Q14*/
);
-void find_targets_ivas_fx(
- const Word16 *speech, /* i : pointer to the speech frame Q_new-1*/
- const Word16 *mem_syn, /* i : memory of the synthesis filter Q_new-1*/
- const Word16 i_subfr, /* i : subframe index Q0*/
- Word16 *mem_w0, /* i/o: weighting filter denominator memory Q_new-1*/
- const Word16 *p_Aq, /* i : interpolated quantized A(z) filter Q12*/
- const Word16 *res, /* i : residual signal Q_new*/
- const Word16 L_subfr, /* i : length of vectors for gain quantization Q0*/
- const Word16 *Ap, /* i : unquantized A(z) filter with bandwidth expansion Q12*/
- Word16 tilt_fac, /* i : tilt factor Q15*/
- Word16 *xn, /* o : Close-loop Pitch search target vector Q_new-1*/
- Word16 *cn, /* o : target vector in residual domain Q_new*/
- Word16 *h1 /* o : impulse response of weighted synthesis filter Q(14 - norm_s(h1[0]))*/
-);
-void find_targets_ivas_new_fx(
+void find_targets_ivas_fx(
const Word16 *speech, /* i : pointer to the speech frame Q_new-1*/
const Word16 *mem_syn, /* i : memory of the synthesis filter Q_new-1*/
const Word16 i_subfr, /* i : subframe index Q0*/
@@ -3066,6 +3048,13 @@ Word16 IGF_getSFM( /**< out: Q15| SFM value
const Word16 start, /**< in: Q0 | start subband index */
const Word16 stop /**< in: Q0 | stop subband index */
);
+Word16 IGF_getSFM_ivas_fx( /**< out: Q15| SFM value */
+ Word16 *SFM_exp, /**< out: | exponent of SFM Factor */
+ const Word32 *energy, /**< in: Q31| energies */
+ const Word16 *energy_exp, /**< in: | exponent of energies */
+ const Word16 start, /**< in: Q0 | start subband index */
+ const Word16 stop /**< in: Q0 | stop subband index */
+);
/* IGFEnc.c */
void IGF_ErodeSpectrum( Word16 *highPassEner_exp, /**< out: | exponent of highPassEner */
const IGF_ENC_INSTANCE_HANDLE hInstance, /**< in: | instance handle of IGF Encoder */
@@ -4819,5 +4808,9 @@ ivas_error write_indices_ivas_fx(
Encoder_Struct *st_ivas, /* i/o: encoder state structure */
UWord16 *bit_stream, /* i/o: output bitstream */
UWord16 *num_bits /* i : number of indices written to output */
+#ifdef DBG_BITSTREAM_ANALYSIS
+ ,
+ int32_t frame
+#endif
);
#endif
diff --git a/lib_enc/rom_enc.h b/lib_enc/rom_enc.h
index 35fd3027d58538bd9b81b5120e1530337cbd9060..7da1da92a8b6ee4f7c4de48692af7927ec4ce9ca 100644
--- a/lib_enc/rom_enc.h
+++ b/lib_enc/rom_enc.h
@@ -52,7 +52,6 @@ extern const Word16 W_HIST_S_FX[DTX_HIST_SIZE]; /* CNG & DTX - table for calcula
extern const Word16 bwd_start_bin[]; // Q0
extern const Word16 bwd_end_bin[]; // Q0
-extern const float h_fir[]; /* 2nd order fir filter for wsp, decimation by 2 */
extern const Word16 h_fir_fx[]; /* 2nd order fir filter for wsp, decimation by 2 Q15*/
extern const Word16 preemphCompensation_fx[]; // Q11
diff --git a/lib_enc/rom_enc.c b/lib_enc/rom_enc_fx.c
similarity index 100%
rename from lib_enc/rom_enc.c
rename to lib_enc/rom_enc_fx.c
diff --git a/lib_enc/set_impulse_fx.c b/lib_enc/set_impulse_fx.c
index 9ad5f4a2cdb9a4bab773a1008a6b70cb948771af..d4dd73abe8ea2be7536ea15ce15c6270737b279f 100644
--- a/lib_enc/set_impulse_fx.c
+++ b/lib_enc/set_impulse_fx.c
@@ -285,10 +285,10 @@ static void convolve_tc_fx(
L_sum = L_mult( g[0], h[n] ); /* Qx */
FOR( i = 1; i < len; i++ )
{
- L_sum = L_mac( L_sum, g[i], h[n - i] ); /* Qx + 16 */
+ L_sum = L_mac_sat( L_sum, g[i], h[n - i] ); /* Qx + 16 */
}
- y[n] = round_fx( L_sum ); /* Qx */
+ y[n] = round_fx_sat( L_sum ); /* Qx */
}
}
/*-------------------------------------------------------------------*
diff --git a/lib_enc/sig_clas_fx.c b/lib_enc/sig_clas_fx.c
index cf5d31d22001c277a70040332e8c73383e4be02a..beb97514a0d139e512f3936143a461e75d89de6e 100644
--- a/lib_enc/sig_clas_fx.c
+++ b/lib_enc/sig_clas_fx.c
@@ -100,7 +100,238 @@ Word16 signal_clas_fx( /* o : classification for current
een = round_fx( L_shl( Ltmp, 16 - 5 ) ); /* Q14 -> Q9 */
een = mac_r( C_EE_FX, een, K_EE_FX );
}
+ /* compute zero crossing rate */
+ pt1 = speech + sub( L_look, 1 );
+ tmpS = shr( *pt1, 15 ); /* sets 'tmpS to -1 if *pt1 < 0 */
+ Ltmp = L_deposit_l( 0 );
+ FOR( i = 0; i < L_FRAME; i++ )
+ {
+ tmp16 = add( 1, tmpS );
+ pt1++;
+ tmpS = shr( *pt1, 15 ); /* pt1 >=0 ---> 0 OTHERWISE -1 */
+ Ltmp = L_msu0( Ltmp, tmpS, tmp16 );
+ }
+ zc = extract_l( Ltmp );
+
+ /* compute pitch stability */
+ pc = add( abs_s( sub( st->pitch[1], st->pitch[0] ) ), abs_s( sub( st->pitch[2], st->pitch[1] ) ) );
+ st->tdm_pc = pc;
+ move16();
+ /*-----------------------------------------------------------------*
+ * Transform parameters to the range <0:1>
+ * Compute the merit function
+ *-----------------------------------------------------------------*/
+
+ /* corn = K_COR * mean_voi2 + C_COR */
+ Ltmp = L_mult( C_COR_FX, 32767 );
+ corn = round_fx( L_shl( L_mac( Ltmp, mean_voi2, K_COR_FX ), -4 ) ); /*Q13+Q13*Q15 =>Q13->Q9*/
+ /* Limit [0, 1] */
+ corn = s_max( corn, 0 );
+ corn = s_min( corn, 512 );
+
+ Ltmp = L_mult( C_ZC_FX, 4 ); /*Q13*Q2 -> Q16*/
+ zcn = round_fx( L_shl( L_mac( Ltmp, zc, K_ZC_FX ), 16 - 7 ) ); /*Q0*Q15 + Q16*/
+ /* Limit [0, 1] */
+ zcn = s_max( zcn, 0 );
+ zcn = s_min( zcn, 512 );
+
+ Ltmp = L_mult( C_RELE_FX, 256 ); /*Q15*Q8 ->Q24*/
+ relEn = round_fx( L_shl( L_mac( Ltmp, relE, K_RELE_FX ), 1 ) ); /*relE in Q8 but relEn in Q9*/
+ /* Limit [0.5, 1] */
+ relEn = s_max( relEn, 256 );
+ relEn = s_min( relEn, 512 );
+
+ Ltmp = L_mult( C_PC_FX, 2 ); /*Q14*Q1 -> Q16*/
+ pcn = round_fx( L_shl( L_mac( Ltmp, pc, K_PC_FX ), 16 - 7 ) ); /*Q16 + Q0*Q15*/
+ /* Limit [0, 1] */
+ pcn = s_max( pcn, 0 );
+ pcn = s_min( pcn, 512 );
+
+ Ltmp = L_mult( een, 10923 );
+ Ltmp = L_mac( Ltmp, corn, 21845 );
+ Ltmp = L_mac( Ltmp, zcn, 10923 );
+ Ltmp = L_mac( Ltmp, relEn, 10923 );
+ Ltmp = L_mac( Ltmp, pcn, 10923 );
+
+ fmerit1 = round_fx_o( L_shl_o( Ltmp, 16 - 10 - 1, &Overflow ), &Overflow ); /* fmerit1 ->Q15 */
+
+ /*-----------------------------------------------------------------*
+ * FEC classification
+ *-----------------------------------------------------------------*/
+
+ st->fmerit_dt = sub( st->prev_fmerit, fmerit1 ); /*Q15*/
+ move16();
+ st->prev_fmerit = fmerit1;
+ move16();
+ /* FEC classification */
+ test();
+ test();
+ IF( st->localVAD == 0 || EQ_16( st->coder_type, UNVOICED ) || LT_16( relE, -1536 ) )
+ {
+ clas = UNVOICED_CLAS;
+ *clas_mod = clas;
+ move16();
+ move16();
+ }
+ ELSE
+ {
+ SWITCH( st->last_clas )
+ {
+ case VOICED_CLAS:
+ case ONSET:
+ case VOICED_TRANSITION:
+
+ IF( LT_16( fmerit1, 16056 ) ) /*0.49f*/
+ {
+ clas = UNVOICED_CLAS;
+ move16();
+ }
+ ELSE IF( LT_16( fmerit1, 21626 ) ) /*0.66*/
+ {
+ clas = VOICED_TRANSITION;
+ move16();
+ }
+ ELSE
+ {
+ clas = VOICED_CLAS;
+ move16();
+ }
+ IF( LT_16( fmerit1, 14745 /* 0.45f*/ ) )
+ {
+ *clas_mod = UNVOICED_CLAS;
+ move16();
+ }
+ ELSE IF( LT_16( fmerit1, 21626 /* 0.66f*/ ) )
+ {
+ *clas_mod = VOICED_TRANSITION;
+ move16();
+ }
+ ELSE
+ {
+ *clas_mod = VOICED_CLAS;
+ move16();
+ }
+ BREAK;
+
+ case UNVOICED_CLAS:
+ case UNVOICED_TRANSITION:
+ IF( GT_16( fmerit1, 20643 ) ) /*0.63*/
+ {
+ clas = ONSET;
+ move16();
+ }
+ ELSE IF( GT_16( fmerit1, 19169 ) ) /*0.585*/
+ {
+ clas = UNVOICED_TRANSITION;
+ move16();
+ }
+ ELSE
+ {
+ clas = UNVOICED_CLAS;
+ move16();
+ }
+ *clas_mod = clas;
+ move16();
+
+ BREAK;
+
+ default:
+ clas = UNVOICED_CLAS;
+ *clas_mod = clas;
+ move16();
+ move16();
+ BREAK;
+ }
+ }
+ /* Onset classification */
+
+ /* tc_cnt == -1: frame after TC frame in continuous block of GC/VC frames */
+ /* tc_cnt == 0: UC frame */
+ /* tc_cnt == 1: onset/transition frame, coded by GC coder type */
+ /* tc_cnt == 2: frame after onset/transition frame, coded by TC coder type */
+
+ if ( clas == 0 )
+ {
+ st->tc_cnt = 0;
+ move16();
+ }
+
+ test();
+ IF( GE_16( clas, VOICED_TRANSITION ) && st->tc_cnt >= 0 )
+ {
+ st->tc_cnt = add( st->tc_cnt, 1 );
+ move16();
+ }
+
+ if ( GT_16( st->tc_cnt, 2 ) )
+ {
+ st->tc_cnt = -1;
+ move16();
+ }
+ return clas;
+}
+
+Word16 signal_clas_ivas_fx( /* o : classification for current frames */
+ Encoder_State *st, /* i/o: encoder state structure */
+ const Word16 *speech, /* i : pointer to speech signal for E computation in Qx */
+ const Word32 *ee, /* i : lf/hf E ration for 2 half-frames in Q6 */
+ const Word16 relE, /* i : frame relative E to the long term average in Q8 */
+ const Word16 L_look, /* i : look-ahead */
+ Word16 *clas_mod /* o : class flag for NOOP detection */
+)
+{
+ Word32 Ltmp;
+ Word16 mean_voi2, een, corn, zcn, relEn, pcn, fmerit1;
+ Word16 i, clas, pc, zc, exp_ee;
+ Word16 tmp16, tmpS;
+ const Word16 *pt1;
+ Word64 tmp64;
+#ifdef BASOP_NOGLOB_DECLARE_LOCAL
+ Flag Overflow = 0;
+ move32();
+#endif
+
+ /*----------------------------------------------------------------*
+ * Calculate average voicing
+ * Calculate average spectral tilt
+ * Calculate zero-crossing rate
+ * Calculate pitch stability
+ *----------------------------------------------------------------*/
+
+ /* average voicing on second half-frame and look-ahead */
+ Ltmp = L_mult( st->voicing_fx[1], 16384 ); /* Q15*Q14->Q30 */
+ mean_voi2 = mac_r( Ltmp, st->voicing_fx[2], 16384 );
+
+ /* average spectral tilt in dB */
+ tmp64 = W_mult0_32_32( ee[0], ee[1] );
+ exp_ee = W_norm( tmp64 );
+ Ltmp = W_extract_h( W_shl( tmp64, exp_ee ) ); // Q = Q6+Q6 + exp_ee - 32
+ exp_ee = sub( 31, sub( add( Q12, exp_ee ), 32 ) );
+ IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( Ltmp, exp_ee, ONE_IN_Q31, 0 ), -1 ) )
+ {
+ een = 0;
+ move16();
+ }
+ ELSE
+ {
+ /* mean_ee2 = 0.5f * 20.0f * (float)log10( tmp ); */
+ /* een = K_EE_ENC * mean_ee2 + C_EE_ENC; */
+ Ltmp = BASOP_Util_Log10( Ltmp, exp_ee ); // Q25
+ Ltmp = Mpy_32_32( Ltmp, 671088640 /*20.f in Q25*/ ); // Q25 + Q25 -Q31 = Q19 * 0.5 = Q20
+ een = extract_l( L_shl( Mpy_32_16_1( Ltmp, K_EE_FX ), Q9 - Q20 ) ); // Q9
+
+ IF( GT_16( een, 512 ) )
+ {
+ een = 512;
+ move16();
+ }
+ ELSE IF( een < 0 )
+ {
+ een = 0;
+ move16();
+ }
+ }
/* compute zero crossing rate */
pt1 = speech + sub( L_look, 1 );
tmpS = shr( *pt1, 15 ); /* sets 'tmpS to -1 if *pt1 < 0 */
@@ -272,6 +503,7 @@ Word16 signal_clas_fx( /* o : classification for current
}
return clas;
}
+
/*-------------------------------------------------------------------*
* select_TC_fx()
*
diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c
index 3f6449a0c833664e90dec64c1e959ea729483a92..817e5fb70a5782fc5c56d32aab9605d3abb3dc30 100644
--- a/lib_enc/speech_music_classif_fx.c
+++ b/lib_enc/speech_music_classif_fx.c
@@ -1937,6 +1937,7 @@ Word16 ivas_smc_gmm_fx(
/* calculation of differential normalized power spectrum */
sum_PS_fx = 0;
move32();
+ Word16 q_temp32;
Word16 sum_PS_e = 0;
move16();
Word64 sum = W_shl( 21475 /* 1e-5 in Q31 */, sub( Qfact_PS, 30 ) ); // Qfact_PS+1
@@ -1961,8 +1962,22 @@ Word16 ivas_smc_gmm_fx(
FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ )
{
- temp32 = BASOP_Util_Divide3232_Scale_cadence( PS_fx[i], sum_PS_fx, &temp_exp ); // 31-temp_exp
- PS_norm_fx[i] = L_shl( temp32, sub( Qfact_PS_past, add( sub( 31, temp_exp ), sub( Qfact_PS, sub( 31, sum_PS_e ) ) ) ) ); // Qfact_PS_past
+ temp32 = BASOP_Util_Divide3232_Scale_newton( PS_fx[i], sum_PS_fx, &temp_exp ); // 31-temp_exp
+ q_temp32 = add( sub( 31, temp_exp ), sub( Qfact_PS, sub( 31, sum_PS_e ) ) );
+ test();
+ if ( temp32 == 0 )
+ {
+ q_temp32 = 31;
+ move16();
+ }
+ IF( LT_16( q_temp32, 31 ) && EQ_32( temp32, L_shl( 1, q_temp32 ) ) )
+ {
+ temp32 = ONE_IN_Q31;
+ move32();
+ q_temp32 = Q31;
+ move16();
+ }
+ PS_norm_fx[i] = L_shl( temp32, sub( Qfact_PS_past, q_temp32 ) ); // Qfact_PS_past
move32();
dPS_fx[i] = L_abs( L_sub( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ) );
move32();
@@ -1991,8 +2006,8 @@ Word16 ivas_smc_gmm_fx(
{
Word32 tmp_max;
tmp_max = L_max( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] );
-
- temp32 = BASOP_Util_Divide3232_Scale_cadence( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp
+ /* Saturation doesn't have a significant impact here, as a value of 1e-5 in Q31 format is added to prevent division by zero */
+ temp32 = BASOP_Util_Divide3232_Scale_newton( tmp_max, L_add_sat( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp
ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp );
}
temp32_log = L_add( BASOP_Util_Log2( L_add_sat( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) );
@@ -2166,7 +2181,11 @@ Word16 ivas_smc_gmm_fx(
}
/* PCA */
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( FV_fx, pca_mean_fx, FV_fx, N_SMC_FEATURES );
+#else /* VEC_ARITH_OPT_v1 */
v_sub_fixed( FV_fx, pca_mean_fx, FV_fx, N_SMC_FEATURES, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
v_mult_mat_fixed( FV_fx, FV_fx, pca_components_fx, N_SMC_FEATURES, N_PCA_COEF, 0 );
/*------------------------------------------------------------------*
* Calculation of posterior probability
@@ -2593,7 +2612,7 @@ static Word16 attack_det_ivas_fx( /* o : attack flag
Word16 *last_strong_attack /* i/o: last strong attack flag */
)
{
- Word16 i, j, tmp, tmp1, attack, exp1;
+ Word16 i, j, tmp, tmp1, attack, exp1, etmp_e, etmp2_e, s;
Word32 L_tmp, etmp, etmp2, finc[ATT_NSEG], mean_finc;
Word16 att_3lsub_pos;
Word16 attack1;
@@ -2646,29 +2665,42 @@ static Word16 attack_det_ivas_fx( /* o : attack flag
exp1 = norm_s( att_3lsub_pos );
tmp = div_s( shl( 1, sub( 14, exp1 ) ), att_3lsub_pos ); /*Q(29-exp1) */
- L_tmp = L_shr_o( finc[0], Qx, &Overflow ); /*Qx */
-
- FOR( i = 1; i < att_3lsub_pos; i++ )
+ W_tmp = 0;
+ move64();
+ FOR( i = 0; i < att_3lsub_pos; i++ )
{
- L_tmp = L_add_o( L_tmp, L_shr_o( finc[i], Qx, &Overflow ), &Overflow ); /*Qx */
+ W_tmp = W_add( W_tmp, finc[i] ); /* *q_ finc_prev */
}
- L_tmp = Mult_32_16( L_tmp, tmp ); /*Q(14-exp1+Qx) */
- etmp = L_shl( L_tmp, sub( exp1, 14 ) ); /*Qx */
+ s = W_norm( W_tmp );
+ L_tmp = W_extract_h( W_shl( W_tmp, s ) ); // *q_finc_prev + s - 32
+
+ L_tmp = Mpy_32_16_1( L_tmp, tmp ); /* *q_finc_prev + s - 32 + Q29 - exp1 - 15 => *q_finc_prev + s - exp1 - 18 */
+ etmp = L_tmp;
+ move32();
+ etmp_e = sub( 31, add( *q_finc_prev, sub( s, add( exp1, 18 ) ) ) );
+
tmp1 = sub( ATT_NSEG, attack );
exp1 = norm_s( tmp1 );
tmp = div_s( shl( 1, sub( 14, exp1 ) ), tmp1 ); /*Q(29-exp1) */
- L_tmp = L_shr_o( finc[attack], Qx, &Overflow ); /*Qx */
- FOR( i = 1; i < tmp1; i++ )
+ W_tmp = 0;
+ move64();
+ FOR( i = 0; i < tmp1; i++ )
{
- L_tmp = L_add_o( L_tmp, L_shr_o( finc[i + attack], Qx, &Overflow ), &Overflow ); /*Qx */
+ W_tmp = W_add( W_tmp, finc[i + attack] ); /* *q_finc_prev */
}
- L_tmp = Mult_32_16( L_tmp, tmp ); /*Q(14-exp1+Qx) */
- etmp2 = L_shl( L_tmp, sub( exp1, 14 ) ); /*Qx */
+ s = W_norm( W_tmp );
+ L_tmp = W_extract_h( W_shl( W_tmp, s ) ); // *q_finc_prev + s - 32
+
+ L_tmp = Mpy_32_16_1( L_tmp, tmp ); /* *q_finc_prev + s - 32 + Q29 - exp1 - 15 => *q_finc_prev + s - exp1 - 18 */
+ etmp2 = L_tmp;
+ move32();
+ etmp2_e = sub( 31, add( *q_finc_prev, sub( s, add( exp1, 18 ) ) ) );
/* and compare them */
- if ( GT_32( etmp, L_shr( etmp2, 3 ) ) )
+ /* if ( etmp * 8 > etmp2 ) */
+ if ( BASOP_Util_Cmp_Mant32Exp( etmp, add( etmp_e, 3 ), etmp2, etmp2_e ) > 0 )
{
/* stop, if the attack is not sufficiently strong */
attack = 0;
@@ -2676,7 +2708,8 @@ static Word16 attack_det_ivas_fx( /* o : attack flag
}
test();
- if ( EQ_16( last_clas, VOICED_CLAS ) && GT_32( L_add( L_shl( etmp, 4 ), L_shl( etmp, 2 ) ), etmp2 ) )
+ /* if ( last_clas == VOICED_CLAS && etmp * 20 > etmp2 ) */
+ if ( EQ_16( last_clas, VOICED_CLAS ) && BASOP_Util_Cmp_Mant32Exp( etmp, etmp_e, Mpy_32_16_1( etmp2, 1638 /* 1/20 in Q15 */ ), etmp2_e ) > 0 )
{
/* stop, if the signal was voiced and the attack is not sufficiently strong */
attack = 0;
diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h
index c6176709b2f4733d215c207e15f0a3b502358d4b..41383f109e706376c2f2a14a1941ae520149eac1 100644
--- a/lib_enc/stat_enc.h
+++ b/lib_enc/stat_enc.h
@@ -54,6 +54,9 @@ typedef struct
Word16 id; /* id of the indice */
UWord16 value; /* value of the quantized indice */
Word16 nb_bits; /* number of bits used for the quantization of the indice */
+#ifdef DBG_BITSTREAM_ANALYSIS
+ char function_name[100];
+#endif
} Indice, *INDICE_HANDLE;
typedef struct
@@ -224,7 +227,8 @@ typedef struct vad_structure
Word16 trigger_SID;
Word16 snr_sum_vad_fx; /*Q15 */
Word16 running_avg_fx; /*Q15 */
- Word32 L_snr_sum_vad_fx; /*Q4*/
+ Word32 L_snr_sum_vad_fx; // EVS:Q4, IVAS:q_L_snr_sum_vad
+ Word16 q_L_snr_sum_vad;
Word16 hangover_terminate_flag; /* CNG and DTX - flag indicating whether to early terminate DTX hangover */
Word16 vad_flag; /* VAD flag */
@@ -545,8 +549,10 @@ typedef struct noise_estimation_structure
Word16 bg_cnt; /* Noise estimator - pause length counter */
Word16 Etot_l_fx; /* Q8 Noise estimator - Track energy from below */
Word16 Etot_h_fx; /* Q8 Noise estimator - Track energy from above */
- Word16 Etot_l_lp_fx; /* Q8 Noise estimator - Smoothed low energy */
- Word16 Etot_last_fx; /*Q8*/
+ Word16 Etot_l_lp_fx; /* EVS- Q8 Noise estimator - Smoothed low energy */
+ Word32 Etot_l_lp_32fx; /* IVAS-Q24 Noise estimator - Smoothed low energy */
+ Word16 Etot_last_fx; /*EVS- Q8*/
+ Word32 Etot_last_32fx; /* IVAS - Q24*/
Word16 Etot_lp_fx; /* Q8 Noise estimator - Filtered input energy */
Word16 lt_tn_track_fx; /* Q15 */
@@ -562,6 +568,7 @@ typedef struct noise_estimation_structure
Word16 lt_aEn_zero_fx; /* Q15 */
Word16 Etot_v_h2_fx;
+ Word32 Etot_v_h2_32fx; /* Q24 */
Word16 sign_dyn_lp_fx; /*Q8*/
Word16 Etot_st_est_fx; /* Q8 Noise estimation - short term estimate of E{ Etot } */
@@ -1011,7 +1018,7 @@ typedef struct fd_bwe_enc_structure
{
Word16 new_input_hp_fx[NS2SA( 16000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_NS + DELAY_FIR_RESAMPL_NS - DELAY_CLDFB_NS )]; // Q_new_input_hp
Word16 Q_new_input_hp;
- Word16 old_input_fx[NS2SA( 48000, DELAY_FD_BWE_ENC_NS + DELAY_FIR_RESAMPL_NS )]; // q0
+ Word16 old_input_fx[NS2SA( 48000, DELAY_FD_BWE_ENC_NS + DELAY_FIR_RESAMPL_NS )]; // st->q_inp
Word16 old_input_wb_fx[NS2SA( 16000, DELAY_FD_BWE_ENC_NS )]; /* Q(-1) */
Word16 old_input_lp_fx[NS2SA( 16000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_NS )]; // st->hBWE_FD->prev_Q_input_lp
Word16 old_syn_12k8_16k_fx[NS2SA( 16000, DELAY_FD_BWE_ENC_NS )]; // st->Q_syn
@@ -1359,7 +1366,10 @@ typedef struct enc_core_structure
Word16 no_scales_fx[MAX_NO_MODES][2]; /* LSF LVQ structure Q0*/
Word16 no_scales_p_fx[MAX_NO_MODES_p][2]; /* LSF LVQ structure Q0*/
- Word16 mem_preemph_fx; /* preemphasis filter memory Q(-1) */
+ Word16 mem_preemph_fx; /* preemphasis filter memory Q(-1) */
+ Word16 mem_q; /* preemphasis filter memory Q(-1) */
+ Word16 mem_preemph_q; /* preemphasis filter memory Q(-1) */
+ Word16 mem_preemph_fx_q_inp; /* preemphasis filter memory Q(-1) */
Word16 old_wsp_fx[L_WSP_MEM]; /* old weighted signal vector */
Word16 exp_old_wsp;
@@ -1452,16 +1462,19 @@ typedef struct enc_core_structure
Word16 q_inp32;
Word16 q_inp;
Word16 *old_input_signal_fx;
+ Word32 *old_input_signal32_fx;
Word16 q_old_inp;
+ Word16 q_old_inp32;
Word16 Q_old_wtda;
SIGNAL_BUFFERS_ENC_HANDLE hSignalBuf;
Word32 *Bin_E_old_fx; /* per bin energy of old 2nd frames */
Word16 q_Bin_E_old;
- Word16 *mem_decim_fx; /* decimation filter memory Q(-1) */
- Word16 *mem_decim16k_fx; /* ACELP@16kHz - decimation filter memory @16kHz Q(-1) */
- Word16 *old_inp_12k8_fx; /* memory of input signal at 12.8kHz */
- Word16 *old_inp_16k_fx; /* ACELP@16kHz - memory of input signal @16 kHz */
+ Word16 *mem_decim_fx; /* decimation filter memory Q(-1) */
+ Word16 mem_decim_fx_q_inp[2 * L_FILT_MAX]; /* decimation filter memory Q(-1) */
+ Word16 *mem_decim16k_fx; /* ACELP@16kHz - decimation filter memory @16kHz Q(-1) */
+ Word16 *old_inp_12k8_fx; /* memory of input signal at 12.8kHz */
+ Word16 *old_inp_16k_fx; /* ACELP@16kHz - memory of input signal @16 kHz */
Word16 *buf_speech_enc_pe; // exp_buf_speech_enc_pe
Word16 *buf_synth; /*can be reduced to PIT_MAX_MAX+L_FRAME_MAX if no rate switching*/
@@ -1771,6 +1784,7 @@ typedef struct enc_core_structure
/* stereo switching memories */
Word16 mem_preemph_DFT_fx; /* Q(-1) */
+ Word16 mem_preemph_DFT_fx_q_inp; /* Q(-1) */
Word16 inp_12k8_mem_stereo_sw_fx[STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT]; /* Q(-1) */
Word16 mem_preemph16k_DFT_fx; /* Q(-1) */
Word16 inp_16k_mem_stereo_sw_fx[STEREO_DFT_OVL_16k - L_MEM_RECALC_16K - L_FILT16k]; /* Q(-1) */
diff --git a/lib_enc/stat_noise_uv_enc_fx.c b/lib_enc/stat_noise_uv_enc_fx.c
index 1445559a19b6d347f2d611d30167244ad4d0969f..24932542ce178bea11bb597e42f06d43d7575017 100644
--- a/lib_enc/stat_noise_uv_enc_fx.c
+++ b/lib_enc/stat_noise_uv_enc_fx.c
@@ -118,7 +118,7 @@ void stat_noise_uv_enc_ivas_fx(
Word16 *Aq, /* i : A(z) quantized for the 4 subframes Q=12 */
Word16 *exc2, /* i/o: excitation buffer Q=Q_stat_noise */
const Word16 uc_two_stage_flag, /* o : flag undicating two-stage UC */
- Word16 Q_new )
+ Word16 *Q_new )
{
Word16 noisiness = 0;
move16();
diff --git a/lib_enc/swb_bwe_enc_fx.c b/lib_enc/swb_bwe_enc_fx.c
index 1ebef740457eef7370a81d919388c7d080210f3f..6b309c3345bb12892421926486682ef51660e8a9 100644
--- a/lib_enc/swb_bwe_enc_fx.c
+++ b/lib_enc/swb_bwe_enc_fx.c
@@ -270,6 +270,7 @@ void swb_bwe_enc_ivas_fx(
Word16 *old_input_16k_fx, /* i : input signal @16kHz for SWB BWE */
const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */
const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */
+ const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */
Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */
Word16 Q_shb_speech,
Word16 Q_slb_speech )
@@ -287,7 +288,7 @@ void swb_bwe_enc_ivas_fx(
Word16 old_input_lp_fx[L_FRAME16k];
Word16 new_input_hp_fx[L_FRAME16k];
Word16 yorig_fx[L_FRAME48k];
- Word16 scl, new_input_fx_exp;
+ Word16 scl, new_input_fx_q;
Word16 max;
Word16 Sample_Delay_SWB_BWE;
Word16 Sample_Delay_HP;
@@ -412,7 +413,7 @@ void swb_bwe_enc_ivas_fx(
* SWB BWE encoding
* FB BWE encoding
*---------------------------------------------------------------------*/
- new_input_fx_exp = 0;
+ new_input_fx_q = Q_new_swb_speech;
move16();
test();
IF( ( EQ_16( st_fx->idchan, 1 ) ) && ( EQ_16( last_element_mode, IVAS_CPE_DFT ) ) )
@@ -424,12 +425,12 @@ void swb_bwe_enc_ivas_fx(
}
}
/* MDCT of the core synthesis signal */
- wtda_fx( old_input_fx, &new_input_fx_exp, L_old_input_fx, hBWE_FD->L_old_wtda_swb_fx,
+ wtda_fx( old_input_fx, &new_input_fx_q, L_old_input_fx, hBWE_FD->L_old_wtda_swb_fx,
&st_fx->Q_old_wtda, ALDO_WINDOW, ALDO_WINDOW, /* window overlap of current frame (0: full, 2: none, or 3: half) */
inner_frame );
/* DCT of the ACELP core synthesis */
- direct_transform_fx( L_old_input_fx, yorig_32, 0, inner_frame, &new_input_fx_exp, st_fx->element_mode );
+ direct_transform_fx( L_old_input_fx, yorig_32, 0, inner_frame, &new_input_fx_q, st_fx->element_mode );
/* high-band gain control in case of BWS */
IF( st_fx->bwidth_sw_cnt > 0 )
@@ -438,7 +439,7 @@ void swb_bwe_enc_ivas_fx(
}
/* Convert to 16 Bits (Calc Shift Required to Stay within MAX_Q_NEW_INPUT) */
- scl = sub( 16 + 8, new_input_fx_exp );
+ scl = sub( 16 + 8, new_input_fx_q );
/* Possible to Upscale? */
IF( scl > 0 )
{
@@ -449,7 +450,7 @@ void swb_bwe_enc_ivas_fx(
scl = s_min( Q_synth, scl );
}
Copy_Scale_sig32_16( yorig_32, yorig_fx, inner_frame, scl );
- Q_synth = add( sub( new_input_fx_exp, 16 ), scl );
+ Q_synth = add( sub( new_input_fx_q, 16 ), scl );
max = 0;
move16();
Q_synth_hf = 0;
@@ -558,12 +559,12 @@ void swb_bwe_enc_ivas_fx(
IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
{
SWB_BWE_encoding_ivas_fx( st_fx, old_input_fx, old_input_lp_fx, new_input_hp_fx, old_syn_12k8_16k_fx, yorig_32,
- SWB_fenv_fx, tilt_nb_fx, 80, Q_slb_speech, Q_shb, new_input_fx_exp, new_input_fx_exp );
+ SWB_fenv_fx, tilt_nb_fx, 80, Q_slb_speech, Q_shb, new_input_fx_q, new_input_fx_q );
}
ELSE
{
SWB_BWE_encoding_ivas_fx( st_fx, old_input_fx, old_input_lp_fx, new_input_hp_fx, old_syn_12k8_16k_fx, yorig_32,
- SWB_fenv_fx, tilt_nb_fx, 6, Q_slb_speech, Q_shb, new_input_fx_exp, new_input_fx_exp );
+ SWB_fenv_fx, tilt_nb_fx, 6, Q_slb_speech, Q_shb, new_input_fx_q, new_input_fx_q );
}
diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c
index ba165cba418cb68d6b0680bad403d394d7b64462..0e89e16c17a0d96f74bd352d092809a4086d4a7d 100644
--- a/lib_enc/swb_pre_proc_fx.c
+++ b/lib_enc/swb_pre_proc_fx.c
@@ -778,7 +778,7 @@ void swb_pre_proc_fx(
/*full implementation pending*/
void swb_pre_proc_ivas_fx(
Encoder_State *st, /* i/o: encoder state structure */
- Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */
+ Word16 *new_swb_speech, /* o : original input signal at 32kHz - st->q_inp */
Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */
Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */
Word16 *Q_shb_spch,
@@ -846,6 +846,9 @@ void swb_pre_proc_ivas_fx(
test();
test();
+ scale_sig( hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( st->q_inp, st->Q_old_wtda ) ); // st->Q_old_wtda -> st->q_inp
+ st->Q_old_wtda = st->q_inp;
+ move16();
IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && GE_16( st->bwidth, SWB ) )
{
Copy( st->input_fx - hCPE->hStereoTCA->lMemRecalc, hBWE_FD->L_old_wtda_swb_fx + L_FRAME32k - sub( hCPE->hStereoTCA->lMemRecalc, Sample_Delay_SWB_BWE ), sub( hCPE->hStereoTCA->lMemRecalc, Sample_Delay_SWB_BWE ) );
@@ -880,6 +883,8 @@ void swb_pre_proc_ivas_fx(
IF( NE_16( st->extl, WB_BWE ) )
{
Copy( old_input_fx, hBWE_FD->L_old_wtda_swb_fx, L_FRAME32k );
+ st->Q_old_wtda = st->q_inp;
+ move16();
}
}
@@ -929,6 +934,10 @@ void swb_pre_proc_ivas_fx(
test();
test();
+ scale_sig( hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( st->q_inp, st->Q_old_wtda ) ); // st->Q_old_wtda -> st->q_inp
+ st->Q_old_wtda = st->q_inp;
+ move16();
+
IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && GE_16( st->bwidth, SWB ) )
{
IF( EQ_16( st->bwidth, SWB ) )
@@ -1029,6 +1038,8 @@ void swb_pre_proc_ivas_fx(
set16_fx( old_input_fx, 0, Sample_Delay_SWB_BWE );
Copy( new_swb_speech + inner_frame - Sample_Delay_SWB_BWE, hBWE_FD->old_input_fx, Sample_Delay_SWB_BWE );
Copy( old_input_fx, hBWE_FD->L_old_wtda_swb_fx, inner_frame );
+ st->Q_old_wtda = st->q_inp;
+ move16();
}
/* resample 48 kHz to 32kHz */
@@ -1057,8 +1068,9 @@ void swb_pre_proc_ivas_fx(
{
Word16 out_start_ind, out_end_ind;
stereo_dft_enc_synthesize_fx( hCPE->hStereoDft, new_swb_speech_fx, &out_start_ind, &out_end_ind, st->idchan, input_Fs, 32000, 0, NULL );
- Copy_Scale_sig32_16( new_swb_speech_fx - STEREO_DFT_OVL_MAX, new_swb_speech - STEREO_DFT_OVL_MAX, L_FRAME48k + STEREO_DFT_OVL_MAX, add( q_reImBuffer, 1 ) ); // Q0
- Copy( new_swb_speech - Sample_Delay_SWB_BWE32k, hBWE_FD->old_input_fx, Sample_Delay_SWB_BWE32k ); // Q0
+ Copy_Scale_sig32_16( new_swb_speech_fx - STEREO_DFT_OVL_MAX, new_swb_speech - STEREO_DFT_OVL_MAX, L_FRAME48k + STEREO_DFT_OVL_MAX, add( st->q_inp, add( q_reImBuffer, 1 ) ) ); // st->q_inp
+
+ Copy( new_swb_speech - Sample_Delay_SWB_BWE32k, hBWE_FD->old_input_fx, Sample_Delay_SWB_BWE32k ); // st->q_inp
}
}
}
diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c
index 316a5b5494e613ab5cf8ed39e651ca6c57ff478e..903f3a46c7f62292b1922a6ff7c7a51398098549 100644
--- a/lib_enc/swb_tbe_enc_fx.c
+++ b/lib_enc/swb_tbe_enc_fx.c
@@ -5683,7 +5683,11 @@ static void Quant_shb_res_gshape_fx(
move16();
IF( NE_16( st_fx->codec_mode, MODE2 ) )
{
+#ifdef FIX_1486_IND_SHB_RES
+ push_indice( st_fx->hBstr, IND_SHB_RES_GS + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS );
+#else
push_indice( st_fx->hBstr, IND_SHB_RES_GS1 + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS );
+#endif
}
}
}
@@ -5719,7 +5723,11 @@ static void Quant_shb_res_gshape_ivas_fx(
}
ELSE
{
+#ifdef FIX_1486_IND_SHB_RES
+ push_indice( st->hBstr, IND_SHB_RES_GS + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS );
+#else
push_indice( st->hBstr, IND_SHB_RES_GS1 + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS );
+#endif
}
}
}
@@ -7299,7 +7307,12 @@ void fb_tbe_enc_fx(
Word16 ratio;
Word16 tmp_vec[L_FRAME48k];
Word16 idxGain;
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ Word16 input_fhb_buffer[L_FRAME48k + 4];
+ Word16 *input_fhb = &input_fhb_buffer[0] + 4;
+#else
Word16 input_fhb[L_FRAME48k];
+#endif
Word16 Sample_Delay_HP;
Word32 fb_exc_energy, temp2;
Word32 L_tmp;
@@ -7325,7 +7338,16 @@ void fb_tbe_enc_fx(
Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp );
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ elliptic_bpf_48k_generic_fx(
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ st->element_mode,
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ 0, // IsUpsampled3
+ input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx );
+#else
elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx );
+#endif
Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2;
IF( NE_16( st->last_extl, FB_TBE ) )
@@ -7415,14 +7437,20 @@ void fb_tbe_enc_fx(
void fb_tbe_enc_ivas_fx(
Encoder_State *st, /* i/o: encoder state structure */
- const Word16 new_input[], /* i : input speech at 48 kHz sample rate Q0 */
+ const Word16 new_input[], /* i : input speech at 48 kHz sample rate Q_new_input */
const Word16 fb_exc[], /* i : FB excitation from the SWB part Q_fb_exc */
- Word16 Q_fb_exc )
+ Word16 Q_fb_exc,
+ Word16 Q_new_input )
{
Word16 ratio;
Word16 tmp_vec[L_FRAME48k];
Word16 idxGain;
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ Word16 input_fhb_new_buffer[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) + 4];
+ Word16 *input_fhb_new = &input_fhb_new_buffer[0] + 4;
+#else
Word16 input_fhb_new[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS )];
+#endif
Word16 input_fhb[L_FRAME48k];
Word16 Sample_Delay_HP;
Word64 fb_exc_energy;
@@ -7446,14 +7474,32 @@ void fb_tbe_enc_ivas_fx(
}
Copy_Scale_sig( new_input - NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_fhb_new, L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), exp_temp );
-
+ exp_temp = add( exp_temp, Q_new_input );
IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) )
{
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ elliptic_bpf_48k_generic_fx(
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ st->element_mode,
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ 0, // IsUpsampled3
+ input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx );
+#else
elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx );
+#endif
}
ELSE
{
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic
+ elliptic_bpf_48k_generic_fx(
+#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2
+ st->element_mode,
+#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/
+ 0, // IsUpsampled3
+ input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx );
+#else
elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx );
+#endif
}
test();
diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c
index 2abe538e445a952f02ea71d5d0f20dbe69988d01..680a69fa512fef1409147e308c1dd3280c5c839a 100644
--- a/lib_enc/tcx_utils_enc_fx.c
+++ b/lib_enc/tcx_utils_enc_fx.c
@@ -2786,7 +2786,7 @@ void tcx_noise_factor_ivas_fx(
/* noise level factor: average of segment magnitudes of noise bins */
IF( n > 0 )
{
- tmp4 = BASOP_Util_Divide3232_Scale_cadence( Mpy_32_16_1( sqErrorNrg, att ), n, &s );
+ tmp4 = BASOP_Util_Divide3232_Scale_newton( Mpy_32_16_1( sqErrorNrg, att ), n, &s );
s = add( add( exp_sqErrorNrg, -15 ), s );
BASOP_SATURATE_WARNING_OFF_EVS;
tmp4 = L_shl_o( tmp4, s, &Overflow );
@@ -3761,7 +3761,7 @@ Word16 tcx_res_Q_spec_ivas_fx(
return bits;
}
-#if 1 // TV
+
void ProcessIGF_fx(
IGF_ENC_INSTANCE_HANDLE const hInstance, /**< in: instance handle of IGF Encoder */
Encoder_State *st, /**< in: Encoder state */
@@ -3893,7 +3893,7 @@ void ProcessIGF_fx(
}
#endif
}
-#endif
+
void attenuateNbSpectrum_fx( Word16 L_frame, Word32 *spectrum )
{
Word16 i, length, att;
@@ -3926,8 +3926,9 @@ void ProcessIGF_ivas_fx(
Encoder_State *st, /* i : Encoder state */
Word16 powerSpec_len, /* i : length of pPowerSpectrum buffer */
Word32 *pMDCTSpectrum, /* i : MDCT spectrum (*q_spectrum) */
- const Word32 *pITFMDCTSpectrum, /* i : MDCT spectrum fir ITF */
Word16 *q_spectrum, /* i/o: Q of spectrum */
+ const Word32 *pITFMDCTSpectrum, /* i : MDCT spectrum fir ITF */
+ const Word16 q_ITFMDCTSpectrum, /* i : Q of MDCT spectrum fir ITF */
Word32 *pPowerSpectrum, /* i : MDCT^2 + MDST^2 spectrum, or estimate (*q_powerSpec) */
Word16 *exp_powerSpec, /* i/o: Q of power spectrum */
const Word16 isTCX20, /* i : flag indicating if the input is TCX20 or TCX10/2xTCX5 */
@@ -3969,7 +3970,7 @@ void ProcessIGF_ivas_fx(
}
}
- IGFSaveSpectrumForITF_ivas_fx( hIGFEnc, igfGridIdx, pITFMDCTSpectrum, sub( Q31, *q_spectrum ) );
+ IGFSaveSpectrumForITF_ivas_fx( hIGFEnc, igfGridIdx, pITFMDCTSpectrum, sub( Q31, q_ITFMDCTSpectrum ) );
IGFEncApplyMono_ivas_fx( st, powerSpec_len, igfGridIdx, pMDCTSpectrum, sub( Q31, *q_spectrum ), pPowerSpectrum, exp_powerSpec, isTCX20, st->hTcxEnc->fUseTns[frameno], sp_aud_decision0, vad_hover_flag );
@@ -4028,15 +4029,15 @@ void ProcessStereoIGF_fx(
Word32 *pITFMDCTSpectrum_fx[CPE_CHANNELS][NB_DIV], /* i : MDCT spectrum fir ITF */
Word16 q_pITFMDCTSpectrum_1,
Word16 q_pITFMDCTSpectrum_2,
- Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
- Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */
- Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */
- Word16 exp_pPowerSpectrumMsInv_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrumMsInv_fx */
- Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */
- Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i/o: exp of inv_spectrum_fx */
- const Word16 frameno, /* i : flag indicating index of current subfr. */
- const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */
- const Word32 element_brate, /* i : element bitrate */
+ Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
+ Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */
+ Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */
+ Word16 *q_pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: Q of pPowerSpectrumMsInv_fx */
+ Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */
+ Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i/o: exp of inv_spectrum_fx */
+ const Word16 frameno, /* i : flag indicating index of current subfr. */
+ const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */
+ const Word32 element_brate, /* i : element bitrate */
const Word16 mct_on )
{
Word16 ch, igfGridIdx, isIndepFlag, bsBits, pBsStart, curr_order;
@@ -4077,7 +4078,7 @@ void ProcessStereoIGF_fx(
IGFSaveSpectrumForITF_ivas_fx( hIGFEnc[1], igfGridIdx, pITFMDCTSpectrum_fx[1][frameno], sub( Q31, q_pITFMDCTSpectrum_2 ) );
- IGFEncApplyStereo_fx( hStereoMdct, ms_mask, hIGFEnc, igfGridIdx, sts, pPowerSpectrum_fx, exp_pPowerSpectrum_fx, pPowerSpectrumMsInv_fx, exp_pPowerSpectrumMsInv_fx,
+ IGFEncApplyStereo_fx( hStereoMdct, ms_mask, hIGFEnc, igfGridIdx, sts, pPowerSpectrum_fx, exp_pPowerSpectrum_fx, pPowerSpectrumMsInv_fx, q_pPowerSpectrumMsInv_fx,
inv_spectrum_fx, exp_inv_spectrum_fx, frameno, sp_aud_decision0, element_brate, mct_on );
FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
diff --git a/lib_enc/transient_detection_fx.c b/lib_enc/transient_detection_fx.c
index 60d661db444fe5413372f79525dec4dfc24e032d..1ad69a3302b2c79e2879d313f98413b1a7eba2fc 100644
--- a/lib_enc/transient_detection_fx.c
+++ b/lib_enc/transient_detection_fx.c
@@ -458,7 +458,7 @@ Word32 GetTCXAvgTemporalFlatnessMeasure_ivas_fx( struct TransientDetection const
}
/* exponent = AVG_FLAT_E */
- i = BASOP_Util_Divide3232_Scale_cadence( sumTempFlatness, nTotBlocks, &exp );
+ i = BASOP_Util_Divide3232_Scale_newton( sumTempFlatness, nTotBlocks, &exp );
exp = add( exp, sub( sumTempFlatness_exp, 31 ) );
i = L_shl_sat( i, sub( exp, 10 ) ); // Can be saturated, since it is used for comparision againt 3.25/20.0f, Q21
return i;
@@ -638,16 +638,6 @@ void RunTransientDetection_fx( Word16 const *input, Word16 nSamplesAvailable, Tr
/* Update the delay buffer. */
UpdateDelayBuffer( filteredInput, nSamplesAvailable, &pTransientDetection->delayBuffer );
-#ifdef IVAS_CODE
- /* compute ramp up flag */
- pSubblockEnergies->ramp_up_flag = ( ( pSubblockEnergies->ramp_up_flag << 1 ) & 0x0003 );
- e0 = dotp( filteredInput + length / 2, filteredInput + length / 2, pSubblockEnergies->pDelayBuffer->nSubblockSize / 2 ) + 0.5f * MIN_BLOCK_ENERGY;
- e1 = pSubblockEnergies->subblockNrg[pSubblockEnergies->nDelay + 4] - e0;
- if ( e1 > e0 )
- {
- pSubblockEnergies->ramp_up_flag |= 0x0001;
- }
-#endif
}
@@ -1569,12 +1559,12 @@ static void CalculateSubblockEnergies_ivas_fx( Word16 const *input, Word16 nSamp
IF( GT_32( w0, w1 ) )
{
- pSubblockNrgChange[w] = BASOP_Util_Divide3232_Scale_cadence( w0, w1, &k );
+ pSubblockNrgChange[w] = BASOP_Util_Divide3232_Scale_newton( w0, w1, &k );
pSubblockNrgChange_exp[w] = k;
}
ELSE
{
- pSubblockNrgChange[w] = BASOP_Util_Divide3232_Scale_cadence( w1, w0, &k );
+ pSubblockNrgChange[w] = BASOP_Util_Divide3232_Scale_newton( w1, w0, &k );
pSubblockNrgChange_exp[w] = k;
}
move32();
@@ -1582,72 +1572,7 @@ static void CalculateSubblockEnergies_ivas_fx( Word16 const *input, Word16 nSamp
}
}
}
-#ifdef IVAS_CODE
-/*-------------------------------------------------------------------*
- * set_transient_stereo()
- *
- *
- *-------------------------------------------------------------------*/
-
-void set_transient_stereo(
- CPE_ENC_HANDLE hCPE, /* i : CPE structure */
- float currFlatness[] /* i/o: current flatness */
-)
-{
- int16_t n, attackIsPresent;
- float currFlatnessMax;
- Encoder_State **sts;
-
- sts = hCPE->hCoreCoder;
-
- /* for DFT/TD based stereo ,map avg. flatness to individual stereo channels (M/S or X/Y) */
- maximum( currFlatness, CPE_CHANNELS, &currFlatnessMax );
- attackIsPresent = 0;
-
- for ( n = 0; n < CPE_CHANNELS; n++ )
- {
- attackIsPresent = max( attackIsPresent, sts[n]->hTranDet->transientDetector.bIsAttackPresent );
- }
-
- set_f( currFlatness, currFlatnessMax, CPE_CHANNELS );
-
- for ( n = 0; n < CPE_CHANNELS; n++ )
- {
- sts[n]->hTranDet->transientDetector.bIsAttackPresent = attackIsPresent;
- }
-
- if ( hCPE->hStereoDft != NULL )
- {
- if ( hCPE->hStereoDft->attackPresent )
- {
- hCPE->hStereoDft->wasTransient = 1;
- }
- else if ( hCPE->hStereoDft->wasTransient )
- {
- hCPE->hStereoDft->wasTransient = 0;
- }
-
- hCPE->hStereoDft->attackPresent = attackIsPresent;
- hCPE->hStereoDft->hItd->currFlatness = 0;
- for ( n = 0; n < CPE_CHANNELS; n++ )
- {
- hCPE->hStereoDft->hItd->currFlatness = max( hCPE->hStereoDft->hItd->currFlatness, currFlatness[n] );
- }
- }
-
- if ( hCPE->hStereoMdct != NULL )
- {
- hCPE->hStereoMdct->hItd->currFlatness = 0;
- for ( n = 0; n < CPE_CHANNELS; n++ )
- {
- hCPE->hStereoMdct->hItd->currFlatness = max( hCPE->hStereoMdct->hItd->currFlatness, currFlatness[n] );
- }
- }
-
- return;
-}
-#endif
/*-------------------------------------------------------------------*
* transient_analysis()
*
diff --git a/lib_enc/transition_enc_fx.c b/lib_enc/transition_enc_fx.c
index 6718552c50c293060c7af36aa7625249778aeb3b..d0d62769791a9dfe181c3452d45ef076c2b5167c 100644
--- a/lib_enc/transition_enc_fx.c
+++ b/lib_enc/transition_enc_fx.c
@@ -212,11 +212,11 @@ void transition_enc_fx(
IF( EQ_16( *tc_subfr, TC_0_0 ) )
{
/* this is called only to compute unused bits */
- config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
- L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, TC_0_0, 3, NULL, unbits_ACELP,
- st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/
- );
+ config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
+ L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, TC_0_0, 3, NULL, unbits_ACELP,
+ st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ );
}
+
*clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, sub( shift_wsp, 1 ) );
move16();
updt_tar_fx( xn_fx, xn2_fx, y1_fx, *gain_pit_fx, L_SUBFR );
@@ -324,10 +324,11 @@ void transition_enc_fx(
IF( LE_16( sub( i_subfr, *tc_subfr ), L_SUBFR ) )
{
- config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
- st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, *tc_subfr, 2, NULL,
- unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ );
+ config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
+ st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, *tc_subfr, 2, NULL,
+ unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ );
}
+
/*-----------------------------------------------------------------*
* get number of bits for pitch encoding
*-----------------------------------------------------------------*/
@@ -915,8 +916,6 @@ void transition_enc_ivas_fx(
/* set limit_flag to 0 for restrained limits, and 1 for extended limits */
limit_flag = 0;
move16();
- Word16 h1_fx_q15[L_SUBFR + ( M + 1 )];
- Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 0 );
pit_start = PIT_MIN;
move16();
@@ -1033,11 +1032,12 @@ void transition_enc_ivas_fx(
IF( EQ_16( *tc_subfr, TC_0_0 ) )
{
/* this is called only to compute unused bits */
- config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
- L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, TC_0_0, 3, NULL, unbits_ACELP,
- st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/
+ config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
+ L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, TC_0_0, 3, NULL, unbits_ACELP,
+ st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/
);
}
+
*clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, sub( shift_wsp, 1 ) );
move16();
updt_tar_fx( xn_fx, xn2_fx, y1_fx, *gain_pit_fx, L_SUBFR );
@@ -1145,10 +1145,11 @@ void transition_enc_ivas_fx(
IF( LE_16( sub( i_subfr, *tc_subfr ), L_SUBFR ) )
{
- config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
- st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, *tc_subfr, 2, NULL,
- unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ );
+ config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate,
+ st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, *tc_subfr, 2, NULL,
+ unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ );
}
+
/*-----------------------------------------------------------------*
* get number of bits for pitch encoding
*-----------------------------------------------------------------*/
@@ -1423,8 +1424,7 @@ void transition_enc_ivas_fx(
*clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, ( Q_new + shift - 1 ) );
move16();
- Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 1 );
- lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx_q15,
+ lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx,
xn_fx, y1_fx, xn2_fx, L_SUBFR, st_fx->L_frame, g_corr_fx, *clip_gain, gain_pit_fx, &lp_flag );
IF( EQ_16( lp_flag, NORMAL_OPERATION ) )
@@ -1660,8 +1660,7 @@ void transition_enc_ivas_fx(
*clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, Q_new );
move16();
- Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 1 );
- lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx_q15,
+ lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx,
xn_fx, y1_fx, xn2_fx, L_SUBFR, st_fx->L_frame, g_corr_fx, *clip_gain, gain_pit_fx, &lp_flag );
IF( EQ_16( lp_flag, NORMAL_OPERATION ) )
{
@@ -2082,7 +2081,11 @@ static void tc_enc_ivas_fx(
/*--------------------------------------------------------------*
* compute glottal-shape codebook excitation
*--------------------------------------------------------------*/
+#ifdef TEST_HR
+ Copy( h1, h1_fx, L_SUBFR + ( M + 1 ) );
+#else
Copy_Scale_sig( h1, h1_fx, L_SUBFR + ( M + 1 ), 1 );
+#endif
/* create filtered glottal codebook contribution */
conv_fx( &exc_fx[i_subfr], h1_fx, yy1_fx, L_SUBFR );
diff --git a/lib_enc/updt_enc_fx.c b/lib_enc/updt_enc_fx.c
index fb2a6215b4509732b14ab9dcada955c97c4b8e3d..aed3bf81271924fb7dbf5f7228293c5434829f37 100644
--- a/lib_enc/updt_enc_fx.c
+++ b/lib_enc/updt_enc_fx.c
@@ -204,20 +204,6 @@ void updt_IO_switch_enc_fx(
set16_fx( hBWE_TD->old_speech_wb_fx, 0, ( L_LOOK_12k8 + L_SUBFR ) * 5 / 16 );
set16_fx( hBWE_TD->old_bwe_exc_fx, 0, PIT16k_MAX * 2 );
set16_fx( hBWE_TD->old_bwe_exc_extended_fx, 0, NL_BUFF_OFFSET );
-#ifdef IVAS_CODE
- set16_fx( st->hBWE_TD->mem_shb_res, 0, MAX_LEN_MA_FILTER );
- set16_fx( st->hBWE_TD->old_EnvSHBres, 0, L_FRAME4k );
- st->hBWE_TD->old_mean_EnvSHBres = 0;
- st->hBWE_TD->prev_enr_EnvSHBres = 32767;
- st->hBWE_TD->prev_pow_exc16kWhtnd = 32767;
- st->hBWE_TD->prev_mix_factor = 32767;
- st->hBWE_TD->prev_Env_error = 0;
- move16();
- move16();
- move16();
- move16();
- move16();
-#endif
hBWE_TD->bwe_non_lin_prev_scale_fx = 0;
move16();
set16_fx( hBWE_TD->decim_state1_fx, 0, ( 2 * ALLPASSSECTIONS_STEEP + 1 ) );
@@ -251,23 +237,6 @@ void updt_IO_switch_enc_fx(
st->use_acelp_preq = 0;
move16();
-#ifdef IVAS_CODE
- set16_fx( st->hSpMusClas->finc_prev, 0, ATT_NSEG );
- set16_fx( st->hSpMusClas->tod_lt_Bin_E, 0, TOD_NSPEC );
- set16_fx( st->hSpMusClas->tod_S_map_lt, 0, TOD_NSPEC );
- st->hSpMusClas->lt_finc = 0;
- st->hSpMusClas->last_strong_attack = 0;
- st->hSpMusClas->tod_thr_lt = TOD_THR_MASS;
- st->hSpMusClas->tod_weight = 0;
- st->hSpMusClas->tod_S_mass_prev = TOD_THR_MASS;
- st->hSpMusClas->tod_S_mass_lt = TOD_THR_MASS;
- move16();
- move16();
- move16();
- move16();
- move16();
- move16();
-#endif
}
ELSE /* switching to AMR-WB IO mode */
{
@@ -362,7 +331,14 @@ void updt_enc_common_fx(
move16();
st->last_bwidth = st->bwidth;
move16();
- st->hNoiseEst->Etot_last_fx = Etot;
+ IF( GT_16( st->element_mode, EVS_MONO ) )
+ {
+ st->hNoiseEst->Etot_last_32fx = L_deposit_h( Etot );
+ }
+ ELSE
+ {
+ st->hNoiseEst->Etot_last_fx = Etot;
+ }
move16();
st->last_coder_type_raw = st->coder_type_raw;
move16();
diff --git a/lib_enc/vad_fx.c b/lib_enc/vad_fx.c
index 1fdcb94fac335e5852dc782acc3a47dd2c9705c3..721a6e34875876d1a91f54b1a940fb20ea2de7d3 100644
--- a/lib_enc/vad_fx.c
+++ b/lib_enc/vad_fx.c
@@ -142,6 +142,8 @@ void wb_vad_init_ivas_fx(
{
hVAD->L_snr_sum_vad_fx = 0;
move32();
+ hVAD->q_L_snr_sum_vad = Q31;
+ move16();
hVAD->hangover_cnt = 0;
move16(); /* Hangover counter initialized to 0 */
hVAD->nb_active_frames = ACTIVE_FRAMES_FX;
@@ -213,6 +215,29 @@ void wb_vad_init_ivas_fx(
*
* accumulate snr_sum with significance thresholds
*-----------------------------------------------------------------*/
+static void sign_thr_snr_acc_ivas_fx(
+ Word32 *L_snr_sum, /* o: q_snr_sum */
+ Word16 *q_snr_sum,
+ Word32 L_snr, /* i: q_snr */
+ Word16 q_snr,
+ Word32 sign_thr, /* i: q_snr */
+ Word32 min_snr /* i: q_snr */
+)
+{
+ /*if( snr >= sign_thr ) */
+ Word32 L_tmp;
+ Word16 exp_snr_sum = sub( 31, *q_snr_sum );
+ L_tmp = min_snr;
+ move32();
+ IF( GE_32( L_snr, sign_thr ) )
+ {
+ L_tmp = L_add( L_snr, 0 ); /* q_snr */
+ }
+ *L_snr_sum = BASOP_Util_Add_Mant32Exp( *L_snr_sum, exp_snr_sum, L_tmp, sub( 31, q_snr ), &exp_snr_sum ); /* q_snr */
+ *q_snr_sum = sub( 31, exp_snr_sum );
+ move32();
+ move32();
+}
static void sign_thr_snr_acc_fx(
Word32 *L_snr_sum, /* o: Q4 */
Word32 L_snr, /* i: Q4 */
@@ -1895,7 +1920,8 @@ Word16 wb_vad_ivas_fx(
)
{
Word16 i, flag = 0, hangover_short;
- Word16 snr_sum, thr1 = 0, thr1_nb_mod, thr2 = 0, nk = 0, nc = 0, th_clean = 0;
+ Word16 snr_sum, thr1 = 0, thr1_nb_mod, thr2 = 0, nk = 0, th_clean = 0;
+ Word32 nc;
Word16 lp_snr; /* Q8 */
const Word32 *pt1;
const Word32 *pt2;
@@ -1904,8 +1930,8 @@ Word16 wb_vad_ivas_fx(
Word16 min_snr, sign_thr;
Word32 L_snr, L_snr_sum;
- Word32 ftmp, ftmp1, ftmp2;
- Word16 m_noise_local, e_noise, e_num, m_num, snr_tmp, shift_snr, q_snr_tmp, q_snr;
+ Word32 ener, fr_enr, ftmp, ftmp1;
+ Word16 m_noise_local, e_noise, e_num, m_num, q_snr_tmp, q_snr;
Word32 L_snr_tmp;
Word16 snr_sumt;
Word32 L_vad_thr;
@@ -1924,7 +1950,7 @@ Word16 wb_vad_ivas_fx(
Word16 nb_sig_snr; /* Q0 */
Word16 nv;
- Word16 nv_ofs; /* Q8 */
+ Word32 nv_ofs; /* Q24 */
Word32 L_snr_sum_HE_SAD; /* Q4 */
Word16 snr_sum_HE_SAD; /*Q8 log */
Word16 sign_thr_HE_SAD, min_snr_HE_SAD;
@@ -1934,13 +1960,14 @@ Word16 wb_vad_ivas_fx(
Word32 L_snr_sum_ol;
Word16 snr_sum_ol; /* Q8 log */
- Word32 L_snr_outlier;
+ Word32 L_snr_outlier, L_snr_outlier_Q4;
Word16 snr_outlier_index;
Word32 L_accum_ener_L;
Word32 L_accum_ener_H;
Word16 vad_bwidth_fx;
Word16 last_7k2_coder_type;
- Word16 q_shift;
+ Word16 q_shift, q_ener, q_diff1, q_diff2;
+ Word16 q_L_snr_sum_ol, e_snr, f_snr;
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
Flag Overflow = 0;
move32();
@@ -1955,7 +1982,7 @@ Word16 wb_vad_ivas_fx(
move16(); /*thr1*/
move16(); /*thr2*/
move16(); /*nk*/
- move16(); /*nc*/
+ move32(); /*nc*/
move16(); /*th_clean*/
move16(); /*flag*/
@@ -2028,12 +2055,12 @@ Word16 wb_vad_ivas_fx(
{
nk = 3277;
move16(); /*0.1 Q15 */
- nc = 4122;
- move16(); /*16.1 Q8 */
- nv = 525;
- move16(); /* 2.05 Q8*/
- nv_ofs = 422;
- move16(); /* 1.65 Q8*/
+ nc = 270113178;
+ move32(); /*16.1 Q24 */
+ nv = 8397;
+ move16(); /* 2.05 Q12*/
+ nv_ofs = 27682406;
+ move32(); /* 1.65 Q24*/
th_clean = TH16_2_FX;
move16(); /* 35 Q8 */
sign_thr = 21;
@@ -2062,12 +2089,12 @@ Word16 wb_vad_ivas_fx(
// move16();
nk = 3277;
move16(); /* 0.1 Q15 */
- nc = 4096;
- move16(); /* 16.0 Q8 */
- nv = 1024;
- move16(); /* 4.0 Q8 */
- nv_ofs = 294;
- move16(); /*1.15 Q8*/
+ nc = 268435456;
+ move32(); /* 16.0 Q24 */
+ nv = 16384;
+ move16(); /* 4.0 Q12 */
+ nv_ofs = 19293798;
+ move32(); /*1.15 Q24*/
th_clean = TH8_1_FX;
move16(); /*20 Q8 */
sign_thr = 28;
@@ -2180,12 +2207,12 @@ Word16 wb_vad_ivas_fx(
nb_sig_snr = 20;
move16();
- pt1 = fr_bands;
- pt2 = fr_bands + NB_BANDS;
- pt3 = hNoiseEst->bckr_fx;
-
L_snr_sum = L_deposit_l( 0 );
L_snr_sum_HE_SAD = L_deposit_l( 0 );
+ Word16 q_snr_sum = 0;
+ Word16 q_snr_sum_HE_SAD = 0;
+ move16();
+ move16();
snr_sumt = 0;
move16();
L_mssnr_hov = L_deposit_l( 0 );
@@ -2199,81 +2226,89 @@ Word16 wb_vad_ivas_fx(
q_snr = 0;
move16();
move16();
- q_shift = add( sub( q_fr_bands, hNoiseEst->q_bckr ), 15 - 4 );
+
+ pt1 = fr_bands;
+ pt2 = fr_bands + NB_BANDS;
+ pt3 = hNoiseEst->bckr_fx;
+
+ q_ener = s_min( q_fr_bands, hNoiseEst->q_enrO );
+ q_diff1 = sub( q_ener, hNoiseEst->q_enrO );
+ q_diff2 = sub( q_ener, q_fr_bands );
+ q_shift = add( Q31 + Q1, sub( q_ener, hNoiseEst->q_bckr ) );
+
FOR( i = st_fx->min_band; i <= st_fx->max_band; i++ )
{
- ftmp = L_add( *pt1++, 0 );
- ftmp1 = L_add( *pt2++, 0 );
- ftmp2 = L_add( *pt3++, 0 );
+ ener = L_shl( hNoiseEst->enrO_fx[i], q_diff1 ); // q_ener
+ ftmp = L_shl( *pt1++, q_diff2 ); // q_ener
+ ftmp1 = L_shl( *pt2++, q_diff2 ); // q_ener
/*fr_enr = ( 0.2f * st->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 );*/
- L_tmp = Mult_32_16( hNoiseEst->enrO_fx[i], 13107 ); /* L_tmp(high word) = Qenr0fx*Q16+1 -16 -> Qener0+1 */
- L_tmp1 = Madd_32_16( L_tmp, ftmp, 26214 ); /* 26214 = .4 in Q16 */
- L_tmp1 = Madd_32_16( L_tmp1, ftmp1, 26214 ); /* L_tmp1 re_used a bit later for final snr[i]*/
-
- L_tmp2 = Madd_32_16( L_tmp, ftmp, 19661 ); /* 19661 = 0.3 in Q16 */
- L_tmp2 = Msub_32_16( L_tmp2, ftmp1, -32768 ); /* -32768= -0.5 in Q16 */
+ L_tmp = Mpy_32_16_1( ener, 13107 /* 0.2 in Q16 */ ); // q_ener+1
+ fr_enr = Madd_32_16( Madd_32_16( L_tmp, ftmp, 26214 /* 0.4 in Q16 */ ), ftmp1, 26214 /* 0.4 in Q16 */ ); // q_ener+1
IF( GT_32( ftmp, ftmp1 ) )
{
- /*snr[i] = ( 0.2f * st->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 ) / ftmp2 ;*/
- /*snr[i] = L_tmp1/(ftmp2) */
- IF( ftmp2 != 0 )
+ /* snr[i] = ( 0.2f * hNoiseEst->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 ) / *pt3++; */
+ IF( *pt3 != 0 )
{
- e_num = norm_l( L_tmp1 );
- m_num = extract_h( L_shl( L_tmp1, e_num ) ); // q_fr_bands+1+e_num-16
+ /* Since fr_enr = 0.2f * hNoiseEst->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 */
+ e_num = sub( norm_l( fr_enr ), 1 );
+ m_num = extract_h( L_shl( fr_enr, e_num ) ); // q_ener+1+e_num-16
- e_noise = norm_l( ftmp2 );
- m_noise_local = extract_h( L_shl( ftmp2, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16
-
- m_num = shr( m_num, 1 ); // q_fr_bands+e_num-16
- shift_snr = add( sub( e_num, e_noise ), q_shift );
+ e_noise = norm_l( *pt3 );
+ m_noise_local = extract_h( L_shl( *pt3++, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16
- snr_tmp = div_s( m_num, m_noise_local ); // q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise
- L_snr = L_shr_o( snr_tmp, shift_snr, &Overflow ); /* L_snr in Q4 */
+ L_snr = L_deposit_h( div_s( m_num, m_noise_local ) ); // 31+(q_ener+1+e_num-16)-(hNoiseEst->q_bckr+e_noise-16)
+ q_snr_tmp = add( q_shift, sub( e_num, e_noise ) );
}
ELSE
{
- L_snr = L_shr_o( L_tmp1, sub( Q3, q_fr_bands ), &Overflow ); // q_fr_bands+1 -> Q4
+ L_snr = Mpy_32_16_1( fr_enr, 18286 /* (1/E_MIN) in Q6 */ ); // q_ener+1+6-15
+ q_snr_tmp = sub( q_ener, 8 );
}
}
ELSE
{
- /*snr[i] = ( 0.2f * st->enrO[i] + 0.3f * ftmp + 0.5f * ftmp1 ) / ftmp2 ;*/
- /*snr[i] =L_tmp2/( ftmp2 ) */
- IF( ftmp2 != 0 )
- {
- e_num = norm_l( L_tmp2 );
- m_num = extract_h( L_shl( L_tmp2, e_num ) ); // q_fr_bands+1+e_num-16
+ /* snr[i] = ( 0.2f * hNoiseEst->enrO[i] + 0.3f * ftmp + 0.5f * ftmp1 ) / *pt3++; */
+ /* Since, L_tmp = 0.2f * hNoiseEst->enrO[i] */
+ L_tmp = Msub_32_16( Madd_32_16( L_tmp, ftmp, 19661 /* 0.3 in Q16 */ ), ftmp1, -32768 /* -0.5 in Q16 */ ); // q_ener+1
- e_noise = norm_l( ftmp2 );
- m_noise_local = extract_h( L_shl( ftmp2, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16
+ IF( *pt3 != 0 )
+ {
+ e_num = sub( norm_l( L_tmp ), 1 );
+ m_num = extract_h( L_shl( L_tmp, e_num ) ); // q_ener+1+e_num-16
- m_num = shr( m_num, 1 ); // q_fr_bands+e_num-16
- shift_snr = add( sub( e_num, e_noise ), q_shift );
+ e_noise = norm_l( *pt3 );
+ m_noise_local = extract_h( L_shl( *pt3++, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16
- snr_tmp = div_s( m_num, m_noise_local ); // q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise
- L_snr = L_shr_o( snr_tmp, shift_snr, &Overflow ); /* L_snr in Q4 */
+ L_snr = L_deposit_h( div_s( m_num, m_noise_local ) ); // 31+(q_ener+1+e_num-16)-(hNoiseEst->q_bckr+e_noise-16)
+ q_snr_tmp = add( q_shift, sub( e_num, e_noise ) );
}
ELSE
{
- L_snr = L_shr_o( L_tmp2, sub( Q3, q_fr_bands ), &Overflow ); // q_fr_bands+1 -> Q4
+ L_snr = Mpy_32_16_1( L_tmp, 18286 /* (1/E_MIN) in Q6 */ ); // q_ener+1+6-15
+ q_snr_tmp = sub( q_ener, 8 );
}
}
- IF( LT_32( L_snr, 2 * ( 1 << 4 ) ) )
+ if ( LT_32( L_snr, L_shl_sat( 2, q_snr_tmp ) ) )
{
nb_sig_snr = sub( nb_sig_snr, 1 ); /* nb_sig_snr--; */
}
- L_snr = L_max( L_snr, 1 * ( 1 << 4 ) ); /* if ( snr[i] < 1 ){snr[i] = 1;}*/
-
+ IF( LT_32( L_snr, L_shl_sat( 1, q_snr_tmp ) ) )
+ {
+ L_snr = ONE_IN_Q30;
+ q_snr_tmp = Q30;
+ move32();
+ move16();
+ }
/* snr[i] = (float)log10(snr[i]); */
Word16 exp = norm_l( L_snr );
Word16 val = Log2_norm_lc( L_shl( L_snr, exp ) );
- exp = sub( sub( 30, exp ), Q4 );
- L_snr = L_mac( L_deposit_h( exp ), val, 1 ); // Q16
- L_snr = Mpy_32_16_1( L_snr, 9864 /* log2 in Q15 */ ); // Q16
+ exp = sub( sub( 30, exp ), q_snr_tmp );
+ L_snr = L_mac( val, exp, ONE_IN_Q14 ); // Q15
+ L_snr = Mpy_32_16_1( L_snr, 19728 /* log2 in Q16 */ ); // Q16
/* snr_sumt += snr[i];*/
L_snr_sumt = L_add( L_snr_sumt, L_snr ); // Q16
@@ -2346,29 +2381,35 @@ Word16 wb_vad_ivas_fx(
L_mssnr_hov = BASOP_Util_Add_Mant32Exp( L_mssnr_hov, L_mssnr_hov_e, L_msnr, L_msnr_e, &L_mssnr_hov_e ); /*L_mssnr_hov_e mssnr_hov += msnr; */
/* recompute after he1 modifications */
- /* snr[i] = fr_enr / st->bckr[i] = L_tmp1/st->bckr[i];*/
+ /* snr[i] = fr_enr / st->bckr[i] ;*/
IF( hNoiseEst->bckr_fx[i] != 0 )
{
- e_num = sub( norm_l( L_tmp1 ), 1 );
- m_num = extract_h( L_shl( L_tmp1, e_num ) ); // q_fr_bands+1+e_num-16
+ e_num = sub( norm_l( fr_enr ), 1 );
+ m_num = extract_h( L_shl( fr_enr, e_num ) ); // q_ener+1+e_num-16
e_noise = norm_l( hNoiseEst->bckr_fx[i] );
m_noise_local = extract_h( L_shl( hNoiseEst->bckr_fx[i], e_noise ) ); // hNoiseEst->q_bckr+e_noise-16
- L_snr_tmp = L_deposit_h( div_s( m_num, m_noise_local ) ); // 32+q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise
- q_snr_tmp = add( 32, sub( add( q_fr_bands, e_num ), add( hNoiseEst->q_bckr, e_noise ) ) );
+ L_snr_tmp = L_deposit_h( div_s( m_num, m_noise_local ) ); // 31+q_ener+1+e_num-hNoiseEst->q_bckr-e_noise
+ q_snr_tmp = add( 32, sub( add( q_ener, e_num ), add( hNoiseEst->q_bckr, e_noise ) ) );
}
ELSE
{
- L_snr_tmp = Mpy_32_16_1( L_tmp1, 18286 /* 1/E_MIN in Q6 */ ); // q_fr_bands-8
- q_snr_tmp = sub( q_fr_bands, 8 );
+ L_snr_tmp = Mpy_32_16_1( fr_enr, 18286 /* 1/E_MIN in Q6 */ ); // q_ener+1+6-15
+ q_snr_tmp = sub( q_ener, 8 );
}
/* conditional snrsum, snr_sum = snr_sum + snr[i];*/
+ IF( GT_16( q_snr_tmp, 28 ) ) // added to avoid overflow while scaling sign_thr_HE_SAD,min_snr_HE_SAD,sign_thr and min_snr while scaling to q_snr_tmp
+ {
+ L_snr_tmp = L_shl( L_snr_tmp, sub( 28, q_snr_tmp ) );
+ q_snr_tmp = 28;
+ move16();
+ }
exp = sub( Q4, q_snr_tmp );
L_snr = L_shl_sat( L_snr_tmp, exp ); // Q4
- sign_thr_snr_acc_fx( &L_snr_sum_HE_SAD, L_snr, sign_thr_HE_SAD, min_snr_HE_SAD );
- sign_thr_snr_acc_fx( &L_snr_sum, L_snr, sign_thr, min_snr );
+ sign_thr_snr_acc_ivas_fx( &L_snr_sum_HE_SAD, &q_snr_sum_HE_SAD, L_snr_tmp, q_snr_tmp, L_shl( sign_thr_HE_SAD, sub( q_snr_tmp, 4 ) ), L_shl( min_snr_HE_SAD, sub( q_snr_tmp, 4 ) ) );
+ sign_thr_snr_acc_ivas_fx( &L_snr_sum, &q_snr_sum, L_snr_tmp, q_snr_tmp, L_shl( sign_thr, sub( q_snr_tmp, 4 ) ), L_shl( min_snr, sub( q_snr_tmp, 4 ) ) );
/* if( snr[i] < 1.0f ) { snr[i] = 1.0f;} */
IF( LT_32( L_snr, 16 /* 1.0 in Q4 */ ) )
@@ -2412,10 +2453,10 @@ Word16 wb_vad_ivas_fx(
move16();
move16();
}
- } /* end of band loop */
+ } /* end of band loop */
+ L_snr_sum_HE_SAD = L_shl_o( L_snr_sum_HE_SAD, sub( 4, q_snr_sum_HE_SAD ), &Overflow ); // q_snr_sum_HE_SAD->q4
- L_snr_outlier = L_shl_sat( L_snr_outlier, sub( Q4, q_snr ) ); // q_snr -> Q4
- snr_sumt = extract_h( L_shl( L_snr_sumt, Q4 ) ); // Q16 -> Q4
+ snr_sumt = extract_h( L_shl( L_snr_sumt, Q4 ) ); // Q16 -> Q4
test();
test();
@@ -2447,51 +2488,66 @@ Word16 wb_vad_ivas_fx(
}
}
+ L_snr_outlier_Q4 = L_shl_sat( L_snr_outlier, sub( Q4, q_snr ) ); // Q4
/* Separated SNR_SUM outlier modification */
- L_snr_sum_ol = L_snr_sum; /* snr_sum_ol = snr_sum; */
+ /* snr_sum_ol = snr_sum; */
+ L_snr_sum_ol = L_snr_sum; // q_snr_sum
+ q_L_snr_sum_ol = q_snr_sum;
move32();
+ move16();
test();
test();
test();
- IF( ( EQ_16( st_fx->max_band, 19 ) ) && LT_32( L_snr_outlier, MAX_SNR_OUTLIER_3_FX ) && GT_16( snr_outlier_index, 3 ) && LT_16( snr_outlier_index, MAX_SNR_OUTLIER_IND_FX ) )
+ IF( ( EQ_16( st_fx->max_band, 19 ) ) && LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_3_FX ) && GT_16( snr_outlier_index, 3 ) && LT_16( snr_outlier_index, MAX_SNR_OUTLIER_IND_FX ) )
{
+ q_L_snr_sum_ol = s_min( add( norm_l( L_snr_sum_ol ), q_snr_sum ), add( norm_l( L_snr_outlier ), q_snr ) );
+ L_tmp1 = L_shl( L_snr_sum_ol, sub( q_L_snr_sum_ol, q_snr_sum ) ); // q_L_snr_sum_ol
+ L_tmp2 = L_shl( L_snr_outlier, sub( q_L_snr_sum_ol, q_snr ) ); // q_L_snr_sum_ol
test();
test();
IF( LT_32( L_accum_ener_H, Mult_32_16( L_accum_ener_L, INV_OUTLIER_THR_1_FX ) ) /* float:: (accum_ener_L*INV_OUTLIER_THR_1 > accum_ener_H ) !!! */
- || LT_32( L_snr_outlier, MAX_SNR_OUTLIER_1_FX ) )
+ || LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_1_FX ) )
{
- /* as weight1 is 1.0 we do not need to multiply here , i.e. no need to loose any precisison */
- L_snr_sum_ol = L_sub( L_snr_sum_ol, L_snr_outlier ); /*Q4 */
+ /* snr_sum_ol = SNR_OUTLIER_WGHT_1 * ( snr_sum_ol - snr_outlier );
+ As SNR_OUTLIER_WGHT_1 is 1.0f we do not need to multiply here , i.e. no need to loose any precisison */
+ L_snr_sum_ol = L_sub( L_tmp1, L_tmp2 ); // q_L_snr_sum_ol
}
ELSE IF( LT_32( L_accum_ener_H, Mult_32_16( L_accum_ener_L, INV_OUTLIER_THR_2_FX ) ) /* float:: (accum_ener_L *INV_OUTLIER_THR_2 > accum_ener_H ) !!! */
- || LT_32( L_snr_outlier, MAX_SNR_OUTLIER_2_FX ) )
+ || LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_2_FX ) )
{
- /* L_snr_sum = SNR_OUTLIER_WGHT_2 * (snr_sum - snr_outlier); */
-
- /* 1.01*x -> (1*x + 0.01*x) to not drop down to Q3 */
- L_tmp = L_sub( L_snr_sum_ol, L_snr_outlier );
- L_tmp2 = Mult_32_16( L_tmp, 20972 ); /* 0.01(in Q21)= 20972 Q4*Q21+1-16 -> Q10 */
- L_snr_sum_ol = L_add( L_tmp, L_shr( L_tmp2, 6 ) ); /* Q4 */
+ /* snr_sum_ol = SNR_OUTLIER_WGHT_2 * (snr_sum_ol - snr_outlier); */
+ L_snr_sum_ol = Mpy_32_32( 1084479242 /* 1.01f in Q30 */, L_sub( L_tmp1, L_tmp2 ) ); // q_L_snr_sum_ol+30-31
+ q_L_snr_sum_ol = sub( q_L_snr_sum_ol, 1 );
}
ELSE
{
- /* L_snr_sum = SNR_OUTLIER_WGHT_3 * (snr_sum - snr_outlier);*/
- /* 1.02*x -> (1*x + 0.02*x) to not drop down to Q3 */
- L_tmp = L_sub( L_snr_sum_ol, L_snr_outlier );
- L_tmp2 = Mult_32_16( L_tmp, 20972 ); /* 0.02(in Q20)= 20972 Q4*Q20+1-16 -> Q9 */
- L_snr_sum_ol = L_add( L_tmp, L_shr( L_tmp2, 5 ) ); /* Q4 */
+ /* snr_sum_ol = SNR_OUTLIER_WGHT_2 * (snr_sum_ol - snr_outlier); */
+ L_snr_sum_ol = Mpy_32_32( 1095216660 /* 1.02f in Q30 */, L_sub( L_tmp1, L_tmp2 ) ); // q_L_snr_sum_ol+30-31
+ q_L_snr_sum_ol = sub( q_L_snr_sum_ol, 1 );
}
}
/*st_fx->snr_sum_vad_fx = 0.5f * st->snr_sum_vad + 0.5f * snr_sum_ol;*/
- hVAD->L_snr_sum_vad_fx = L_shr( L_add_o( hVAD->L_snr_sum_vad_fx, L_snr_sum_ol, &Overflow ), 1 ); /*Q4*/
+ q_snr_tmp = s_min( add( hVAD->q_L_snr_sum_vad, norm_l( hVAD->L_snr_sum_vad_fx ) ), add( norm_l( L_snr_sum_ol ), q_L_snr_sum_ol ) );
+ /* 0.5f * st->snr_sum_vad */
+ L_tmp1 = L_shl( hVAD->L_snr_sum_vad_fx, sub( sub( q_snr_tmp, 1 ), hVAD->q_L_snr_sum_vad ) ); // q_snr_tmp
+ /* 0.5f * snr_sum_ol */
+ L_tmp2 = L_shl( L_snr_sum_ol, sub( sub( q_snr_tmp, 1 ), q_L_snr_sum_ol ) ); // q_snr_tmp
+ hVAD->L_snr_sum_vad_fx = L_add( L_tmp1, L_tmp2 ); // q_snr_tmp
+ hVAD->q_L_snr_sum_vad = q_snr_tmp;
move32();
+ move16();
/* snr_sum_ol = 10.0f * (float)log10( snr_sum_ol ); */
- snr_sum_ol = vad_snr_log_fx( L_snr_sum_ol, LG10 );
+ e_snr = norm_l( L_snr_sum_ol );
+ f_snr = Log2_norm_lc( L_shl( L_snr_sum_ol, e_snr ) ); // Q15
+ e_snr = sub( sub( 30, e_snr ), q_L_snr_sum_ol );
+ L_tmp = L_mac( f_snr, e_snr, ONE_IN_Q14 ); // Q15
+ L_snr_sum_ol = Mpy_32_16_1( L_tmp, 24660 /* 10*log(2) in Q13 */ ); // Q13
+ snr_sum_ol = extract_h( L_shl( L_snr_sum_ol, Q24 - Q13 ) ); // Q8
snr_sum = snr_sum_ol;
move16(); /* note for NB no outlier modification */
@@ -2520,9 +2576,9 @@ Word16 wb_vad_ivas_fx(
/*thr1 = nk * lp_snr + nc*1.0 + nv * ( st->Etot_v_h2 - nv_ofs); */ /* Linear function for noisy speech */
- L_tmp = L_shl( L_mult( sub( hNoiseEst->Etot_v_h2_fx, nv_ofs ), nv ), 7 ); /* Q8+Q8+1 +7 --> Q24 */
- L_tmp = L_mac( L_tmp, nc, (Word16) 32767 ); /* Q8+Q15+1 = Q24 */
- thr1 = mac_r( L_tmp, lp_snr, nk ); /* Q8+Q15+1 - 16 --> Q8 */
+ L_tmp = L_shl( Mpy_32_16_1( L_sub( hNoiseEst->Etot_v_h2_32fx, nv_ofs ), nv ), 3 ); // Q24 (24+12-15+3)
+ L_tmp = L_add( L_tmp, nc ); // Q24
+ thr1 = mac_r( L_tmp, lp_snr, nk ); // Q24
test();
IF( st_fx->element_mode > EVS_MONO && LT_16( hNoiseEst->first_noise_updt_cnt, 100 ) )
@@ -2589,33 +2645,38 @@ Word16 wb_vad_ivas_fx(
test();
IF( ( LE_16( snr_outlier_index, 4 ) && ( st_fx->last_coder_type > UNVOICED ) && !st_fx->Opt_SC_VBR ) ||
( LE_16( snr_outlier_index, 4 ) && ( last_7k2_coder_type > UNVOICED ) && st_fx->Opt_SC_VBR ) )
-
-
{
- thr1_ol = sub( thr1_ol, (Word16) ( 1 << 8 ) ); /*thr1_ol = thr1 - 1.0f ; */
+ /*thr1_ol = thr1 - 1.0f ; */
+ thr1_ol = sub( thr1, ONE_IN_Q8 ); // Q8
+
/*snr_sum_ol = 10.0f * (float)log10( hVAD->L_snr_sum_vad_fx );*/
- snr_sum_ol = vad_snr_log_fx( hVAD->L_snr_sum_vad_fx, LG10 ); /* snr in Q8 */
+ e_snr = norm_l( hVAD->L_snr_sum_vad_fx );
+ f_snr = Log2_norm_lc( L_shl( hVAD->L_snr_sum_vad_fx, e_snr ) ); // Q15
+ e_snr = sub( sub( 30, e_snr ), hVAD->q_L_snr_sum_vad );
+ L_tmp = L_mac( f_snr, e_snr, ONE_IN_Q14 ); // Q15
+ L_snr_sum_ol = Mpy_32_16_1( L_tmp, 24660 /* 10*log(2) in Q13 */ ); // Q13
+ snr_sum_ol = round_fx( L_shl( L_snr_sum_ol, Q24 - Q13 ) ); // Q8
}
- ELSE IF( ( ( LE_16( st_fx->last_coder_type, UNVOICED ) ) && ( LT_32( L_snr_outlier, MAX_SNR_OUTLIER_2_FX ) ) && ( st_fx->Opt_SC_VBR == 0 ) ) ||
- ( ( LE_16( last_7k2_coder_type, UNVOICED ) ) && ( LT_32( L_snr_outlier, MAX_SNR_OUTLIER_2_FX ) ) && ( st_fx->Opt_SC_VBR != 0 ) ) )
-
+ ELSE IF( ( ( LE_16( st_fx->last_coder_type, UNVOICED ) ) && ( LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_2_FX ) ) && ( st_fx->Opt_SC_VBR == 0 ) ) ||
+ ( ( LE_16( last_7k2_coder_type, UNVOICED ) ) && ( LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_2_FX ) ) && ( st_fx->Opt_SC_VBR != 0 ) ) )
{
/* thr1_ol = thr1 + (float)(1.0f - 0.04f * snr_outlier); */
- L_tmp2 = Msub_32_16( (Word32) ( 1 << ( 24 - 16 ) ), L_snr_outlier, 20972 ); /* (1.0)Q24(Q8 in high 32bit word) - Q4*Q19+1 */
- tmp2 = round_fx( L_shl( L_tmp2, 16 ) ); /* high word is in Q8 */
- thr1_ol = add( thr1_ol, tmp2 ); /* (Q8 , Q8) */
+ L_tmp = Mpy_32_16_1( L_snr_outlier, 20972 /*0.04f in Q19*/ ); // q_snr+19-15
+ L_tmp = L_shl( L_tmp, sub( Q24 - 4, q_snr ) ); // Q24 (24-(q_nsr+4))
+ tmp2 = round_fx( L_sub( ONE_IN_Q24, L_tmp ) ); // Q8
+ thr1_ol = add( thr1, tmp2 ); // Q8
}
ELSE
{
- /*thr1_ol = thr1 + max(0, (float)(0.6f - 0.01f * L_snr_outlier)); */
- thr1_ol = thr1;
- move16();
- L_tmp2 = Msub_32_16( (Word32) 614, L_snr_outlier, 20972 ); /* .6*1024= */ /* 0.6 Q26(Q10 in high word) - Q4*Q21+1 */
- tmp2 = round_fx( L_shl_o( L_tmp2, 14, &Overflow ) ); /* Q10(high word)+ 14 -16 --> Q8*/
- IF( L_tmp2 > 0 )
- {
- thr1_ol = add( thr1_ol, tmp2 ); /* Q24 >>16 + Q8 */
- }
+ /*thr1_ol = thr1 + max(0, (float)(0.6f - 0.01f * snr_outlier)); */
+ /* Saturation is added in the below step for 0.04f * snr_outlier in Q24.
+ In case of saturation, 0.04f * snr_outlier will be much greater than 0.6f and (0.6f - 0.01f * snr_outlier) becomes negative.
+ max(0, (float)(0.6f - 0.01f * snr_outlier)) gives zero. Hence addition of saturation has no impact */
+ L_tmp = Mpy_32_16_1( L_snr_outlier, 20972 /*0.04f in Q21*/ ); // q_snr+21-15
+ L_tmp = L_shl_sat( L_tmp, sub( Q24 - 6, q_snr ) ); // Q24 (24-(q_nsr+6))
+ tmp2 = round_fx( L_sub( 10066330 /* 0.6 in Q24*/, L_tmp ) ); // Q8
+ tmp2 = s_max( 0, tmp2 ); // Q8
+ thr1_ol = add( thr1, tmp2 ); // Q8
}
}
diff --git a/lib_isar/isar_MSPred.c b/lib_isar/isar_MSPred.c
index 1df47d695c796fd6d5ece3eb4c14ebf3677914bb..040fcc3a963c49ead1c0613be96c3a3a0ef975ff 100644
--- a/lib_isar/isar_MSPred.c
+++ b/lib_isar/isar_MSPred.c
@@ -32,7 +32,6 @@
#include "options.h"
#include
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "isar_lcld_rom_tables.h"
#include "isar_lcld_prot.h"
#include "isar_prot.h"
@@ -547,4 +546,3 @@ void writeMSPred(
return;
}
#endif
-#endif
diff --git a/lib_isar/isar_NoiseGen.c b/lib_isar/isar_NoiseGen.c
index 7273b0e817dc4014bbd0e76cea9c127b4ec754c6..1a6881681d5b92d7df492e4a762ce2105cd1b0d3 100644
--- a/lib_isar/isar_NoiseGen.c
+++ b/lib_isar/isar_NoiseGen.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#include "prot_fx.h"
#include "isar_lcld_prot.h"
@@ -55,4 +54,3 @@ void DeleteNoiseGen( NoiseGen *psNoiseGen )
extern float GetNoise( NoiseGen *psNoiseGen );
extern Word32 GetNoise_fx( NoiseGen *psNoiseGen );
-#endif
diff --git a/lib_isar/isar_PerceptualModel.c b/lib_isar/isar_PerceptualModel.c
index 16558dd36f2532f3dd185d39e82492448dc9157c..b9a5b1b334053d18d4ee4aff9537b8d708cd0837 100644
--- a/lib_isar/isar_PerceptualModel.c
+++ b/lib_isar/isar_PerceptualModel.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "isar_lcld_prot.h"
#include "prot_fx.h"
#include "isar_lcld_rom_tables.h"
@@ -466,4 +465,3 @@ void PerceptualModelStereo_fx(
return;
}
-#endif
diff --git a/lib_isar/isar_PredDecoder.c b/lib_isar/isar_PredDecoder.c
index b30a6e0a8c1fedd176a9cfd606d39e69357c43f3..a202aaa1c0d203c83ae8986be88c65d80d584f76 100644
--- a/lib_isar/isar_PredDecoder.c
+++ b/lib_isar/isar_PredDecoder.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#include "prot_fx.h"
#include "isar_prot.h"
@@ -492,4 +491,3 @@ void ApplyInversePredictors_fx(
return;
}
-#endif
diff --git a/lib_isar/isar_PredEncoder.c b/lib_isar/isar_PredEncoder.c
index 0cd32b70cb625f7d6ea0e22b8a864cebf15c5d60..8eed33ca60041619cb72d302b2576ab2a177a176 100644
--- a/lib_isar/isar_PredEncoder.c
+++ b/lib_isar/isar_PredEncoder.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#include "isar_lcld_prot.h"
#include "isar_lcld_rom_tables.h"
@@ -1212,4 +1211,3 @@ Word32 WritePredictors(
return iBitsWritten;
}
-#endif
diff --git a/lib_isar/isar_RMSEnvGrouping.c b/lib_isar/isar_RMSEnvGrouping.c
index 9b5de2574e70af2087769539a52211f7ceb26bdf..9a7b2ba54ed8aa6fc838b0d074e15ea1433dffab 100644
--- a/lib_isar/isar_RMSEnvGrouping.c
+++ b/lib_isar/isar_RMSEnvGrouping.c
@@ -34,7 +34,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#include "prot_fx.h"
#include "isar_lcld_prot.h"
@@ -961,4 +960,3 @@ void ComputeEnvelopeGrouping(
return;
}
-#endif
diff --git a/lib_isar/isar_cnst.h b/lib_isar/isar_cnst.h
index 046beabdcd60ce2abf0196f51574d78e53daf74b..4aef03cf2160135ceaf7e44b4cf4903d8077cef6 100644
--- a/lib_isar/isar_cnst.h
+++ b/lib_isar/isar_cnst.h
@@ -38,7 +38,6 @@
/* clang-format off */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*----------------------------------------------------------------------------------*
* Split Binaural Rendering Constants
@@ -76,12 +75,8 @@ typedef enum
#define MAX_SPLIT_REND_MD_BANDS 20
#define MAX_SPLIT_MD_SUBFRAMES 1
#define COMPLEX_MD_BAND_THRESH MAX_SPLIT_REND_MD_BANDS
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
#define COMPLEX_MD_BAND_THRESH_LOW 4
#define COMPLEX_MD_BAND_THRESH_HIGH 10
-#else
-#define COMPLEX_MD_BAND_THRESH_LOW 5
-#endif
#define SPLIT_REND_RO_MD_BAND_THRESH 4
#define ISAR_SPLIT_REND_PRED_63QUANT_PNTS_LOG2_CEIL 6
@@ -140,9 +135,7 @@ typedef enum
#define ISAR_SPLIT_REND_ROT_AXIS_BITS 3
#define ISAR_SPLIT_REND_RO_FLAG_BITS 1
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
#define IVAS_LC3PLUS_MAX_NUM_DECODERS 2
-#endif
/*----------------------------------------------------------------------------------*
* Split rendering bitrate constants
*----------------------------------------------------------------------------------*/
@@ -153,7 +146,6 @@ typedef enum
#define SPLIT_REND_512k 512000
#define SPLIT_REND_768k 768000
-#endif /*SPLIT_REND_WITH_HEAD_ROT */
#endif /*ISAR_CNST_H */
/* clang-format on */
diff --git a/lib_isar/isar_lc3plus_common.c b/lib_isar/isar_lc3plus_common.c
index 2e5a31cb6e9af5ea6748a1422d7c83c7781ab5a3..5c56c0b437aff18d7f88ab7711c814c466764780 100644
--- a/lib_isar/isar_lc3plus_common.c
+++ b/lib_isar/isar_lc3plus_common.c
@@ -35,7 +35,6 @@
#include "ivas_error.h"
#include "lc3.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*-----------------------------------------------------------------------------------------*
* Function ISAR_LC3PLUS_LC3plusErrToIvasErr()
*
@@ -57,7 +56,6 @@ ivas_error ISAR_LC3PLUS_LC3plusErrToIvasErr(
return IVAS_ERR_INTERNAL;
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtpError )
{
switch ( lc3PlusRtpError )
@@ -85,5 +83,3 @@ ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtp
return IVAS_ERR_UNKNOWN;
}
-#endif
-#endif
diff --git a/lib_isar/isar_lc3plus_common.h b/lib_isar/isar_lc3plus_common.h
index 57060944273cbb46aa0dbfc2ccf684414ae367f9..2638ea8a9cbb34fca0705c0b84e46692e34e9a19 100644
--- a/lib_isar/isar_lc3plus_common.h
+++ b/lib_isar/isar_lc3plus_common.h
@@ -37,11 +37,8 @@
#include
#include "options.h"
#include "ivas_error.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "lc3.h"
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
#include "isar_lc3plus_payload.h"
-#endif
/*! common configuration parameters between encoder and decoder */
typedef struct LC3PLUS_CONFIG
@@ -54,19 +51,14 @@ typedef struct LC3PLUS_CONFIG
int32_t samplerate;
/*! number of channels */
int16_t channels;
-#if defined ISAR_BITSTREAM_UPDATE_LC3PLUS || defined ISAR_BITSTREAM_UPDATE_LC3PLUS
/*! high resolution mode enabled (1) or disabled (0)*/
int16_t high_res_mode_enabled;
-#endif
} LC3PLUS_CONFIG;
/*! utility function to convert LC3PLUS_Errors to the suitable ivas_error */
ivas_error ISAR_LC3PLUS_LC3plusErrToIvasErr( const LC3PLUS_Error lc3PlusError );
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/*! utility function to convert LC3PLUS_Errors to the suitable ivas_error */
ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtpError );
-#endif
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
#endif /* ISAR_LC3PLUS_COM_H */
diff --git a/lib_isar/isar_lc3plus_dec.c b/lib_isar/isar_lc3plus_dec.c
index fd1adb157297496d5ee95e28015732691cbcbd51..38371d1343b81d0c4c484f9d29f3f78f00cdff85 100644
--- a/lib_isar/isar_lc3plus_dec.c
+++ b/lib_isar/isar_lc3plus_dec.c
@@ -40,29 +40,6 @@
#include "ivas_error_utils.h"
#include "wmc_auto.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
-/*-------------------------------------------------------------------------
- * isar_LC3PLUS_AllocateSubframeDecodingMatrix()
- *
- *
- *------------------------------------------------------------------------*/
-
-static void isar_LC3PLUS_DEC_FreeSubframeDecodingMatrix(
- int16_t **subframeChannelMatrix )
-{
- for ( int16_t i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ )
- {
- free( subframeChannelMatrix[i] );
- }
-
- free( subframeChannelMatrix );
-
- return;
-}
-#endif
-
/*-------------------------------------------------------------------------
* ISAR_LC3PLUS_DEC_Open()
@@ -78,37 +55,22 @@ ivas_error ISAR_LC3PLUS_DEC_Open(
LC3PLUS_Error err;
int32_t decoder_size;
Word32 scratch_size;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int16_t i;
if ( 0 == config.lc3plus_frame_duration_us )
{
return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid lc3plus_frame_duration_us (0)\n" );
}
-#else
- int16_t lc3plusFrameIdx;
- int16_t numLC3plusFramesPerIvasFrame;
- int16_t i;
-#endif
if ( ( *handle = malloc( sizeof( struct ISAR_LC3PLUS_DEC_HANDLE ) ) ) == NULL )
{
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( config.channels > IVAS_LC3PLUS_MAX_NUM_DECODERS )
{
return IVAS_ERROR( IVAS_ERR_INIT_ERROR, "Maximum number of channels exceeds IVAS_LC3PLUS_MAX_NUM_DECODERS\n" );
}
-#else
-
- if ( 0 == config.lc3plus_frame_duration_us )
- {
- return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid lc3plus_frame_duration_us (0)\n" );
- }
- numLC3plusFramesPerIvasFrame = (int16_t) ( config.isar_frame_duration_us / config.lc3plus_frame_duration_us );
-#endif
( *handle )->num_decs = 0;
@@ -168,11 +130,7 @@ ivas_error ISAR_LC3PLUS_DEC_Open(
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
err = lc3plus_dec_init( ( *handle )->handles[iCh], config.samplerate, 1, LC3PLUS_PLC_ADVANCED, config.high_res_mode_enabled );
-#else
- err = lc3plus_dec_init( ( *handle )->handles[iCh], config.samplerate, 1, LC3PLUS_PLC_ADVANCED, 0 );
-#endif
if ( LC3PLUS_OK != err )
{
ISAR_LC3PLUS_DEC_Close( handle );
@@ -193,24 +151,10 @@ ivas_error ISAR_LC3PLUS_DEC_Open(
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" );
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- if ( ( ( *handle )->selective_decoding_states[iCh]->frame_actions = malloc( numLC3plusFramesPerIvasFrame * sizeof( SelectiveDecAction ) ) ) == NULL )
- {
- ISAR_LC3PLUS_DEC_Close( handle );
- return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" );
- }
-#endif
( *handle )->selective_decoding_states[iCh]->has_skipped_a_frame = 0;
( *handle )->selective_decoding_states[iCh]->shall_decode_cached_frame = 0;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
( *handle )->selective_decoding_states[iCh]->frame_action = DEC_ACTION_DECODE_AND_USE;
-#else
- for ( lc3plusFrameIdx = 0; lc3plusFrameIdx < numLC3plusFramesPerIvasFrame; lc3plusFrameIdx++ )
- {
- ( *handle )->selective_decoding_states[iCh]->frame_actions[lc3plusFrameIdx] = DEC_ACTION_DECODE_AND_USE;
- }
-#endif
/* allocate and configure per LC3plus decoder bitstream cache */
if ( ( ( *handle )->bitstream_caches[iCh] = malloc( sizeof( ISAR_LC3PLUS_DEC_BITSTREAM_CACHE ) ) ) == NULL )
@@ -218,11 +162,7 @@ ivas_error ISAR_LC3PLUS_DEC_Open(
ISAR_LC3PLUS_DEC_Close( handle );
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity = 400 /*LC3plus max non-HR octet count*/;
-#else
- ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity = 400 /*LC3plus max non-HR octet count*/ * numLC3plusFramesPerIvasFrame;
-#endif
if ( ( ( *handle )->bitstream_caches[iCh]->bitstream_cache = malloc( ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity ) ) == NULL )
{
ISAR_LC3PLUS_DEC_Close( handle );
@@ -254,156 +194,6 @@ ivas_error ISAR_LC3PLUS_DEC_Open(
return IVAS_ERR_OK;
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
-/*-------------------------------------------------------------------------
- * ISAR_LC3PLUS_DEC_AllocateSubframeDecodingMatrix()
- *
- *
- *------------------------------------------------------------------------*/
-
-ivas_error ISAR_LC3PLUS_DEC_AllocateSubframeDecodingMatrix(
- int16_t ***subframeChannelMatrix,
- const uint32_t num_decs )
-{
- int16_t i;
-
- if ( ( *subframeChannelMatrix = malloc( MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( int16_t * ) ) ) == NULL )
- {
- return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "subframeChannelMatrix allocation failed\n" );
- }
-
- for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ )
- {
- ( *subframeChannelMatrix )[i] = NULL;
- }
-
- for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ )
- {
- if ( ( ( *subframeChannelMatrix )[i] = malloc( num_decs * sizeof( int16_t ) ) ) == NULL )
- {
- isar_LC3PLUS_DEC_FreeSubframeDecodingMatrix( *subframeChannelMatrix );
- return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "subframeChannelMatrix allocation failed\n" );
- }
- }
-
- return IVAS_ERR_OK;
-}
-
-
-/*-------------------------------------------------------------------------
- * ISAR_LC3PLUS_DEC_SetSelectiveDecodingMatrix()
- *
- *
- *------------------------------------------------------------------------*/
-
-ivas_error ISAR_LC3PLUS_DEC_SetSelectiveDecodingMatrix(
- ISAR_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder handle */
- int16_t *subframeChannelMatrix[MAX_PARAM_SPATIAL_SUBFRAMES] )
-{
- int16_t numIvasSubFramesPerLC3frame;
- uint32_t decIdx;
- int16_t ivasSubframeIdx;
- int16_t effectiveIsarSubframeDuration;
- int16_t actual_num_spatial_subframes;
-
- if ( NULL == handle )
- {
- return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "ISAR_LC3PLUS_DEC_HANDLE is NULL\n" );
- }
-
- if ( NULL == subframeChannelMatrix )
- {
- return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "subframeChannelMatrix is NULL\n" );
- }
-
- if ( handle->config.lc3plus_frame_duration_us == 0 || handle->config.isar_frame_duration_us % handle->config.lc3plus_frame_duration_us != 0 )
- {
- return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "invalid isar_frame_duration_us/lc3plus_frame_duration_us values\n" );
- }
-
- effectiveIsarSubframeDuration = (int16_t) ( handle->config.isar_frame_duration_us == 20000 ? handle->config.isar_frame_duration_us / MAX_PARAM_SPATIAL_SUBFRAMES : handle->config.isar_frame_duration_us );
- numIvasSubFramesPerLC3frame = (int16_t) handle->config.lc3plus_frame_duration_us / effectiveIsarSubframeDuration;
- actual_num_spatial_subframes = (int16_t) handle->config.isar_frame_duration_us / effectiveIsarSubframeDuration;
- /* 0.5(0) = 10ms lc3plus, 5ms subframe */
- if ( numIvasSubFramesPerLC3frame != 1 )
- {
- return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "Selective decoding is only implemented for aligned IVAS-Subframes & LC3plus \n" );
- }
-
- /* map subframeChannelMatrix to lc3plus skip states */
- /* 1st pass: Flag the required frames */
- for ( decIdx = 0; decIdx < handle->num_decs; decIdx++ )
- {
- for ( ivasSubframeIdx = 0; ivasSubframeIdx < actual_num_spatial_subframes; ivasSubframeIdx++ )
- {
- if ( 1 == subframeChannelMatrix[ivasSubframeIdx][decIdx] )
- {
- /* subframe needed by the user, definitely decode */
- handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] = DEC_ACTION_DECODE_AND_USE;
- }
- else
- {
-
- /* subframe not needed by the user, but might be required to re-initialize a decoder after inactivity */
- if (
- ( ivasSubframeIdx != actual_num_spatial_subframes - 1 ) && 1 == subframeChannelMatrix[ivasSubframeIdx + 1][decIdx] )
- {
- /* ... but if the following subframe is required, it needs to be decoded and dropped */
- handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] = DEC_ACTION_DECODE_AND_DROP;
- }
- else
- {
- handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] = DEC_ACTION_SKIP;
- }
- }
- }
- }
-
- /* if a decoder was paused before, it needs to either:
- * - Decode the cached frame (if available) and the first required frame OR
- * - Decode the previous LC3plus subframe, even if it isn't needed by the user */
- for ( decIdx = 0; decIdx < handle->num_decs; decIdx++ )
- {
- if ( handle->selective_decoding_states[decIdx]->has_skipped_a_frame )
- {
- /* find the first frame required by the user */
- for ( ivasSubframeIdx = 0; ivasSubframeIdx < actual_num_spatial_subframes; ivasSubframeIdx++ )
- {
- if ( DEC_ACTION_DECODE_AND_USE == handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] )
- {
- /* The first required frame is the first subframe. To flush the decoder, the cached frame must be decoded and dropped */
- if ( 0 == ivasSubframeIdx )
- {
- handle->selective_decoding_states[decIdx]->shall_decode_cached_frame = 1;
- break;
- }
- /* The first required frame is not the first frame, so the cache is useless. Instead we decode & drop the previous frame*/
- else
- {
- handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx - 1] = DEC_ACTION_DECODE_AND_DROP;
- break;
- }
- }
- }
- }
- }
-
- /* if a dec gets paused & caching is activated we need to flag the last useful LC3plus frame for caching */
- for ( decIdx = 0; decIdx < handle->num_decs; decIdx++ )
- {
- for ( ivasSubframeIdx = 0; ivasSubframeIdx < actual_num_spatial_subframes; ivasSubframeIdx++ )
- {
- if ( handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] == DEC_ACTION_SKIP && handle->selective_decoding_states[decIdx]->frame_actions[actual_num_spatial_subframes - 1] != DEC_ACTION_DECODE_AND_USE )
- {
- handle->selective_decoding_states[decIdx]->frame_actions[actual_num_spatial_subframes - 1] = DEC_ACTION_CACHE;
- }
- }
- }
-
- return IVAS_ERR_OK;
-}
-#endif
-
/*-------------------------------------------------------------------------
* ISAR_LC3PLUS_DEC_GetDelay()
@@ -472,9 +262,6 @@ void ISAR_LC3PLUS_DEC_Close(
if ( NULL != ( *handle )->selective_decoding_states && NULL != ( *handle )->selective_decoding_states[iDec] )
{
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- free( ( *handle )->selective_decoding_states[iDec]->frame_actions );
-#endif
free( ( *handle )->selective_decoding_states[iDec] );
}
@@ -559,17 +346,10 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal(
)
{
uint32_t iDec;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int32_t config_num_media_times;
int32_t iMediaTime;
int32_t iFtd;
LC3PLUS_RTP_PAYLOAD payload;
-#else
- int32_t iLc3plusFrame;
- int32_t lc3framesPerIvasFrame;
- int32_t bitstreamOffsetPerCoder;
- uint8_t *bitstream_in_iter = bitstream_in;
-#endif
int32_t ivasSampleIndex;
int16_t numSamplesPerLC3plusChannel;
ivas_error err;
@@ -600,7 +380,6 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal(
return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "isar_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
config_num_media_times = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us;
if ( !badFrameIndicator )
{
@@ -629,25 +408,13 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal(
return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "LC3plus config change (number of media times per frame data block) in bitstream is not supported\n" );
}
}
-#endif
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
numSamplesPerLC3plusChannel = (int16_t) ( handle->config.samplerate / ( 1000000 / handle->config.isar_frame_duration_us ) / config_num_media_times );
for ( iDec = 0; iDec < handle->num_decs; iDec++ )
{
for ( iMediaTime = 0; iMediaTime < config_num_media_times; iMediaTime++ )
{
iFtd = iDec + iMediaTime * handle->num_decs;
-#else
- lc3framesPerIvasFrame = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us;
-
- numSamplesPerLC3plusChannel = (int16_t) ( handle->config.samplerate / ( 1000000 / handle->config.isar_frame_duration_us ) / lc3framesPerIvasFrame );
- bitstreamOffsetPerCoder = bitstream_in_size / handle->num_decs / lc3framesPerIvasFrame;
- for ( iDec = 0; iDec < handle->num_decs; iDec++ )
- {
- for ( iLc3plusFrame = 0; iLc3plusFrame < lc3framesPerIvasFrame; iLc3plusFrame++ )
- {
-#endif
if ( handle->selective_decoding_states[iDec]->shall_decode_cached_frame )
{
if ( 0 == handle->bitstream_caches[iDec]->bitstream_cache_size )
@@ -670,27 +437,10 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal(
handle->bitstream_caches[iDec]->bitstream_cache_size = 0;
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
switch ( handle->selective_decoding_states[iDec]->frame_action )
-#else
- switch ( handle->selective_decoding_states[iDec]->frame_actions[iLc3plusFrame] )
-#endif
{
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- case DEC_ACTION_DECODE_AND_DROP:
- {
- err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], bitstream_in_iter, bitstreamOffsetPerCoder, &handle->pcm_conversion_buffer, badFrameIndicator, handle->scratch );
- if ( err != IVAS_ERR_OK )
- {
- return IVAS_ERROR( err, "lc3plus decoding failed\n" );
- }
- handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0;
- break;
- }
-#endif
case DEC_ACTION_DECODE_AND_USE:
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( badFrameIndicator )
{
err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], bitstream_in, bitstream_in_size, &handle->pcm_conversion_buffer, badFrameIndicator, handle->scratch );
@@ -717,33 +467,9 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal(
}
handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0;
break;
-#else
- err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], bitstream_in_iter, bitstreamOffsetPerCoder, &handle->pcm_conversion_buffer, badFrameIndicator );
- if ( err != IVAS_ERR_OK )
- {
- return IVAS_ERROR( err, "lc3plus decoding failed\n" );
- }
-
- for ( int32_t iSampleInt16 = 0; iSampleInt16 < numSamplesPerLC3plusChannel; iSampleInt16++ )
- {
- ivasSampleIndex = iSampleInt16 + iLc3plusFrame * numSamplesPerLC3plusChannel;
- pcm_out[iDec][ivasSampleIndex] = handle->pcm_conversion_buffer[iSampleInt16];
- }
- handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0;
- break;
-#endif
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- case DEC_ACTION_SKIP:
- {
- /* log that this instance has skipped a frame and must decode twice once reactivated */
- handle->selective_decoding_states[iDec]->has_skipped_a_frame = 1;
- break;
- }
-#endif
case DEC_ACTION_CACHE:
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( handle->bitstream_caches[iDec]->bitstream_cache_capacity < (int32_t) payload.ftds[iFtd].frame_data_length )
{
return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "bitstream_cache_capacity is too low for LC3plus frame size\n" );
@@ -754,41 +480,15 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal(
/* log that this instance has skipped a frame and must decode twice once reactivated */
handle->selective_decoding_states[iDec]->has_skipped_a_frame = 1;
break;
-#else
- if ( handle->bitstream_caches[iDec]->bitstream_cache_capacity < bitstreamOffsetPerCoder )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "bitstream_cache_capacity is too low for LC3plus frame size\n" );
- }
- /* store bit rate of cached frame */
- mvc2c( bitstream_in_iter, handle->bitstream_caches[iDec]->bitstream_cache, (int16_t) bitstreamOffsetPerCoder );
- handle->bitstream_caches[iDec]->bitstream_cache_size = bitstreamOffsetPerCoder;
- /* log that this instance has skipped a frame and must decode twice once reactivated */
- handle->selective_decoding_states[iDec]->has_skipped_a_frame = 1;
- break;
-#endif
}
case DEC_ACTION_NUM_ENUMS:
default:
return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid LC3plus decoder state\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
} /* for each media time */
/* reset skipping state, must be set by the user before each decode call*/
handle->selective_decoding_states[iDec]->frame_action = DEC_ACTION_DECODE_AND_USE;
} /* for each dec/channel */
-#else
-
- bitstream_in_iter += bitstreamOffsetPerCoder;
- }
-
- /* reset skipping state, must be set by the user before each decode call*/
- for ( iLc3plusFrame = 0; iLc3plusFrame < lc3framesPerIvasFrame; iLc3plusFrame++ )
- {
- handle->selective_decoding_states[iDec]->frame_actions[iLc3plusFrame] = DEC_ACTION_DECODE_AND_USE;
- }
- }
-
-#endif
return IVAS_ERR_OK;
}
@@ -855,4 +555,3 @@ ivas_error ISAR_LC3PLUS_DEC_Conceal(
return isar_LC3PLUS_DEC_Decode_or_Conceal_internal( handle, bitstream_in, 0, badFrameIndicator, pcm_out );
}
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
diff --git a/lib_isar/isar_lc3plus_dec.h b/lib_isar/isar_lc3plus_dec.h
index 5e297a40714f2e3687997889273a2f9ca23d2b00..f3e9699405844875e995738c1ed5310d4db836c7 100644
--- a/lib_isar/isar_lc3plus_dec.h
+++ b/lib_isar/isar_lc3plus_dec.h
@@ -35,7 +35,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "lc3.h"
#include "ivas_error.h"
#include "ivas_cnst.h"
@@ -44,13 +43,7 @@
typedef enum
{
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- DEC_ACTION_DECODE_AND_DROP = 0,
-#endif
DEC_ACTION_DECODE_AND_USE,
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- DEC_ACTION_SKIP,
-#endif
DEC_ACTION_CACHE,
DEC_ACTION_NUM_ENUMS
} SelectiveDecAction;
@@ -60,13 +53,8 @@ typedef struct ISAR_LC3PLUS_DEC_SELECTIVE_DECODING_STATE
{
/*! indicates that the decoder has skipped one or more frames. This means it must decode two frames to flush algorithmic delay when re-activated */
int16_t has_skipped_a_frame;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/*! action to execute for the next frame */
SelectiveDecAction frame_action;
-#else
- /*! if set to 1, decoder will skip decoding for the next frame */
- SelectiveDecAction *frame_actions;
-#endif
/*! if set to 1, decoder will decode the cache before decoding any of current frames */
int16_t shall_decode_cached_frame;
} ISAR_LC3PLUS_DEC_SELECTIVE_DECODING_STATE;
@@ -104,13 +92,6 @@ void ISAR_LC3PLUS_DEC_Close(
ISAR_LC3PLUS_DEC_HANDLE *handle /* i/o: pointer to decoder handle */
);
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
-/*! Sets a matrix[MAX_PARAM_SPATIAL_SUBFRAMES][numLC3plusDecoders] where all require subframes must be flagged with 1, frames that are not required with 0 */
-ivas_error ISAR_LC3PLUS_DEC_SetSelectiveDecodingMatrix(
- ISAR_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */
- int16_t *subframeChannelMatrix[MAX_PARAM_SPATIAL_SUBFRAMES] /* i : */
-);
-#endif
ivas_error ISAR_LC3PLUS_DEC_Decode(
ISAR_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */
@@ -124,13 +105,5 @@ ivas_error ISAR_LC3PLUS_DEC_Conceal(
Word32 **pcm_out /* o : decoded samples */
);
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
-ivas_error ISAR_LC3PLUS_DEC_AllocateSubframeDecodingMatrix(
- int16_t ***subframeChannelMatrix,
- const uint32_t num_decs );
-
-void isar_LC3PLUS_DEC_FreeSubframeDecodingMatrix( int16_t **subframeChannelMatrix );
-#endif
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
#endif /* ISAR_LC3PLUS_DEC_H */
diff --git a/lib_isar/isar_lc3plus_enc.c b/lib_isar/isar_lc3plus_enc.c
index 08ec7c0a8b120ac8ecf95918e806ad3b2012c2cb..7b11084af7aa0c9d056a6b34c3a4212f2fcb6852 100644
--- a/lib_isar/isar_lc3plus_enc.c
+++ b/lib_isar/isar_lc3plus_enc.c
@@ -38,11 +38,8 @@
#include "wmc_auto.h"
#include "options.h"
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
static const LC3PLUS_RTP_FDL s_fdl_request = LC3PLUS_RTP_FDL_NO_REQ_OR_NO_DATA;
-#endif
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
static int32_t limit_per_channel_bitrate( LC3PLUS_CONFIG config,
int32_t per_channel_bitrate )
{
@@ -79,9 +76,7 @@ static int32_t limit_per_channel_bitrate( LC3PLUS_CONFIG config,
assert( false && "unreachable" );
return -1;
}
-#endif
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*-------------------------------------------------------------------*
* Function ISAR_LC3PLUS_ENC_Open()
*
@@ -93,19 +88,9 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
ISAR_LC3PLUS_ENC_HANDLE *handle /* o : encoder handle */
)
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int32_t num_lc3plus_media_times_per_ivas_frame;
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- int32_t lc3plus_num_bytes_per_frame;
-#endif
bool is_last_media_time, is_last_channel;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ivas_error ivas_err;
-#endif
-#endif
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- int32_t bitsPerSecondPerChannel;
-#endif
Word32 scratch_size;
int32_t encoder_size;
LC3PLUS_Error err;
@@ -118,10 +103,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
{
return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid number of channels\n" );
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- bitsPerSecondPerChannel = bitsPerSecond / config.channels;
-#endif
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( config.lc3plus_frame_duration_us != 2500 && config.lc3plus_frame_duration_us != 5000 && config.lc3plus_frame_duration_us != 10000 )
{
return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid lc3plus_frame_duration_us\n" );
@@ -130,7 +111,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
{
return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid isar_frame_duration_us\n" );
}
-#endif
encoder_size = lc3plus_enc_get_size( config.samplerate, 1 );
if ( 0 == encoder_size )
{
@@ -141,10 +121,8 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
{
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
( *handle )->config = config;
( *handle )->frame_type_descriptors = NULL;
-#endif
( *handle )->pcm_conversion_buffer = NULL;
( *handle )->scratch = NULL;
@@ -160,7 +138,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
( *handle )->handles[i] = NULL;
}
( *handle )->num_encs = config.channels;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
num_lc3plus_media_times_per_ivas_frame = config.isar_frame_duration_us / config.lc3plus_frame_duration_us;
( *handle )->fdl_request = s_fdl_request;
( *handle )->num_ftds = config.channels * num_lc3plus_media_times_per_ivas_frame;
@@ -170,7 +147,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
ISAR_LC3PLUS_ENC_Close( handle );
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus frame_type_descriptors\n" );
}
-#endif
for ( int32_t iCh = 0; iCh < config.channels; iCh++ )
{
@@ -180,11 +156,7 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
err = lc3plus_enc_init( ( *handle )->handles[iCh], config.samplerate, 1, config.high_res_mode_enabled, lfeChans );
-#else
- err = lc3plus_enc_init( ( *handle )->handles[iCh], config.samplerate, 1, 0, lfeChans );
-#endif
if ( err != LC3PLUS_OK )
{
ISAR_LC3PLUS_ENC_Close( handle );
@@ -197,14 +169,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
ISAR_LC3PLUS_ENC_Close( handle );
return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_set_frame_dms failed\n" );
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- err = lc3plus_enc_set_bitrate( ( *handle )->handles[iCh], bitsPerSecondPerChannel );
- if ( err != LC3PLUS_OK )
- {
- ISAR_LC3PLUS_ENC_Close( handle );
- return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_set_bitrate failed\n" );
- }
-#endif
}
if ( config.isar_frame_duration_us < config.lc3plus_frame_duration_us || config.isar_frame_duration_us % config.lc3plus_frame_duration_us != 0 )
@@ -213,9 +177,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "Current pcm_conversion_buffer sizing requires that lc3plus uses a shorter or equal frame duration than ivas\n" );
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ( *handle )->config = config;
-#endif
( *handle )->pcm_conversion_buffer = malloc( sizeof( int16_t ) * config.samplerate * config.lc3plus_frame_duration_us / 1000000 );
if ( NULL == ( *handle )->pcm_conversion_buffer )
{
@@ -223,24 +184,13 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder wrapper pcm_conversion_buffer\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/* update FDI fields */
for ( int32_t iMediaTime = 0; iMediaTime < num_lc3plus_media_times_per_ivas_frame; ++iMediaTime )
{
for ( uint32_t iEnc = 0; iEnc < ( *handle )->num_encs; ++iEnc )
{
int32_t ftd_index = iEnc + iMediaTime * ( *handle )->num_encs;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
( *handle )->frame_type_descriptors[ftd_index].frame_data_length = 0; /* will be set to the correct value in IVAS_LC3PLUS_ENC_SetBitrate */
-#else
- lc3plus_num_bytes_per_frame = lc3plus_enc_get_num_bytes( ( *handle )->handles[iEnc] );
- if ( lc3plus_num_bytes_per_frame <= 0 )
- {
- ISAR_LC3PLUS_ENC_Close( handle );
- return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc_get_num_bytes reported invalid result failed\n" );
- }
- ( *handle )->frame_type_descriptors[ftd_index].frame_data_length = lc3plus_num_bytes_per_frame;
-#endif
if ( 0 != LC3PLUS_RTP_ftd_bwr_from_samplerate( &( *handle )->frame_type_descriptors[ftd_index].bwr, config.samplerate, config.high_res_mode_enabled ) )
{
ISAR_LC3PLUS_ENC_Close( handle );
@@ -277,15 +227,12 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
}
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ivas_err = IVAS_LC3PLUS_ENC_SetBitrate( *handle, bitsPerSecond );
if ( ivas_err != IVAS_ERR_OK )
{
ISAR_LC3PLUS_ENC_Close( handle );
return ivas_err;
}
-#endif
-#endif
scratch_size = lc3plus_enc_get_scratch_size( ( *handle )->handles[0] );
( *handle )->scratch = malloc( sizeof( uint8_t ) * scratch_size );
IF( NULL == ( *handle )->scratch )
@@ -297,7 +244,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open(
return IVAS_ERR_OK;
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/*-------------------------------------------------------------------*
* Function IVAS_LC3PLUS_ENC_SetBitrate()
*
@@ -340,12 +286,10 @@ ivas_error IVAS_LC3PLUS_ENC_SetBitrate(
}
minPayloadOverhead = fdrLength + ( numSubframes * LC3PLUS_RTP_FTD_MIN_SIZE );
targetLc3PlusBitratePerChannel = ( availableOctetsPerIsarFrame - minPayloadOverhead ) / handle->config.channels * 8 * lc3plusPacketRate / numLc3plusMediaTimesPerIvasFrame;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( targetLc3PlusBitratePerChannel <= 0 )
{
return IVAS_ERROR( IVAS_ERR_LC3PLUS_INVALID_BITRATE, "available LC3plus bitrate <= 0\n" );
}
-#endif
targetLc3PlusBitratePerChannel = limit_per_channel_bitrate( handle->config, targetLc3PlusBitratePerChannel );
targetLc3PlusOctetCount = targetLc3PlusBitratePerChannel / 8 / lc3plusPacketRate;
/* check resulting octet count. If it requires larger than 1-byte length fields, decrease the bitrate by enough to make room for the additional length field */
@@ -394,7 +338,6 @@ ivas_error IVAS_LC3PLUS_ENC_SetBitrate(
}
return IVAS_ERR_OK;
}
-#endif
/*-------------------------------------------------------------------*
@@ -451,15 +394,11 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize(
Word32 *bsSize /* o : size of each bitstream frame in bytes */
)
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
LC3PLUS_RTP_ERR rtp_err;
int32_t num_lc3plus_media_times_per_ivas_frame;
int32_t iMediaTime;
int32_t ftd_frame_data_length_size, lc3plus_frame_data_length;
int32_t ftd_index;
-#else
- int32_t bitstreamSizeMultiplier;
-#endif
if ( NULL == handle )
{
return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" );
@@ -469,7 +408,6 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize(
return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bsSize is NULL\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( 0 == handle->config.lc3plus_frame_duration_us )
{
return IVAS_ERROR( IVAS_ERR_INIT_ERROR, "lc3plus_frame_duration_us is 0\n" );
@@ -480,9 +418,7 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize(
}
num_lc3plus_media_times_per_ivas_frame = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us;
-#endif
*bsSize = 0;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int32_t fdl_request_length;
rtp_err = LC3PLUS_RTP_frame_data_length_get_size( &fdl_request_length, handle->fdl_request );
if ( rtp_err != LC3PLUS_RTP_ERR_NO_ERROR )
@@ -490,14 +426,12 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize(
return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid LC3plus frame_data_length request\n" );
}
*bsSize += fdl_request_length;
-#endif
for ( uint32_t iEnc = 0; iEnc < handle->num_encs; iEnc++ )
{
if ( NULL == handle->handles[iEnc] )
{
return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3plus encoder handle is NULL\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
lc3plus_frame_data_length = lc3plus_enc_get_num_bytes( handle->handles[iEnc] );
for ( iMediaTime = 0; iMediaTime < num_lc3plus_media_times_per_ivas_frame; ++iMediaTime )
{
@@ -516,18 +450,6 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize(
*bsSize += ftd_frame_data_length_size;
}
}
-#else
- *bsSize += lc3plus_enc_get_num_bytes( handle->handles[iEnc] );
- }
-
- if ( handle->config.isar_frame_duration_us % handle->config.lc3plus_frame_duration_us != 0 )
- {
- return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "isar_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" );
- }
- bitstreamSizeMultiplier = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us;
-
- *bsSize *= bitstreamSizeMultiplier;
-#endif
return IVAS_ERR_OK;
}
@@ -547,12 +469,10 @@ void ISAR_LC3PLUS_ENC_Close(
{
return;
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( NULL != ( *handle )->frame_type_descriptors )
{
free( ( *handle )->frame_type_descriptors );
}
-#endif
for ( uint32_t iEnc = 0; iEnc < ( *handle )->num_encs; iEnc++ )
{
if ( NULL != ( *handle )->handles[iEnc] )
@@ -585,24 +505,15 @@ void ISAR_LC3PLUS_ENC_Close(
*
*-------------------------------------------------------------------*/
ivas_error ISAR_LC3PLUS_ENC_Encode(
- ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */
- Word32 **pcm_in, /* i : pointer input samples */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
+ ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */
+ Word32 **pcm_in, /* i : pointer input samples */
void *bitstream_out, /* o : pointer to bitstream frame */
const Word32 bitstream_out_size, /* i : size of the bitstream_out buffer in bytes. Must be equal to ISAR_LC3PLUS_ENC_GetOutputBitstreamSize. */
-#else
- void *bitstream_out /* o : pointer to bitstream frame */
-#endif
Word16 q_in[16] )
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int32_t ftdIndex;
LC3PLUS_RTP_ERR rtpErr;
uint32_t num_media_times;
-#else
- uint32_t lc3framesPerIvasFrame;
- uint8_t *bitstream_out_iter = bitstream_out;
-#endif
uint32_t numSamplesPerLC3plusChannel;
int32_t ivasSampleIndex;
int32_t num_bytes = 0;
@@ -627,7 +538,6 @@ ivas_error ISAR_LC3PLUS_ENC_Encode(
{
return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "isar_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
num_media_times = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us;
numSamplesPerLC3plusChannel = handle->config.samplerate / ( 1000000 / handle->config.isar_frame_duration_us ) / num_media_times;
@@ -637,39 +547,20 @@ ivas_error ISAR_LC3PLUS_ENC_Encode(
{
return IVAS_ERROR( IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( rtpErr ), "LC3PLUS_RTP_payload_serialize failed\n" );
}
-#else
- lc3framesPerIvasFrame = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us;
-
- numSamplesPerLC3plusChannel = handle->config.samplerate / ( 1000000 / handle->config.isar_frame_duration_us ) / lc3framesPerIvasFrame;
-#endif
for ( uint32_t iEnc = 0; iEnc < handle->num_encs; iEnc++ )
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
for ( uint32_t iMediaTime = 0; iMediaTime < num_media_times; iMediaTime++ )
-#else
- for ( uint32_t iLc3plusFrame = 0; iLc3plusFrame < lc3framesPerIvasFrame; iLc3plusFrame++ )
-#endif
{
for ( uint32_t iSampleInt16 = 0; iSampleInt16 < numSamplesPerLC3plusChannel; iSampleInt16++ )
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ivasSampleIndex = iSampleInt16 + iMediaTime * numSamplesPerLC3plusChannel;
-#else
- ivasSampleIndex = iSampleInt16 + iLc3plusFrame * numSamplesPerLC3plusChannel;
-#endif
handle->pcm_conversion_buffer[iSampleInt16] = (Word16) max( INT16_MIN, min( L_shr( pcm_in[iEnc][ivasSampleIndex], q_in[iEnc] ), INT16_MAX ) );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ftdIndex = iMediaTime * handle->num_encs + iEnc;
-#endif
num_bytes = 0;
push_wmops( "lc3plus_enc16" );
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
err = lc3plus_enc16( handle->handles[iEnc], &handle->pcm_conversion_buffer, handle->frame_type_descriptors[ftdIndex].frame_data, &num_bytes, handle->scratch );
-#else
- err = lc3plus_enc16( handle->handles[iEnc], &handle->pcm_conversion_buffer, bitstream_out_iter, &num_bytes, NULL );
-#endif
pop_wmops();
if ( err != LC3PLUS_OK )
{
@@ -679,15 +570,10 @@ ivas_error ISAR_LC3PLUS_ENC_Encode(
{
return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc16 did not produce output\n" );
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( num_bytes != (int32_t) handle->frame_type_descriptors[ftdIndex].frame_data_length )
{
return IVAS_ERROR( IVAS_ERR_INTERNAL, "payload format and lc3plus enc bitrate are not aligned\n" );
}
-#else
-
- bitstream_out_iter += num_bytes;
-#endif
}
}
@@ -695,4 +581,3 @@ ivas_error ISAR_LC3PLUS_ENC_Encode(
return IVAS_ERR_OK;
}
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
diff --git a/lib_isar/isar_lc3plus_enc.h b/lib_isar/isar_lc3plus_enc.h
index 6d0f47030d09b8594f25b73fea448eb725658f6a..f0c37afc8592509ff35ddc3f0e2e05dd28c1f296 100644
--- a/lib_isar/isar_lc3plus_enc.h
+++ b/lib_isar/isar_lc3plus_enc.h
@@ -35,13 +35,10 @@
#include
#include "ivas_error.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "lc3.h"
#include "isar_lc3plus_common.h"
#include "typedef.h"
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
#include "isar_lc3plus_payload.h"
-#endif
/* encoder wrapper */
typedef struct ISAR_LC3PLUS_ENC_HANDLE
@@ -50,30 +47,22 @@ typedef struct ISAR_LC3PLUS_ENC_HANDLE
LC3PLUS_Enc **handles;
uint32_t num_encs;
int16_t *pcm_conversion_buffer;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
LC3PLUS_RTP_FTD *frame_type_descriptors;
int32_t num_ftds;
LC3PLUS_RTP_FDL fdl_request;
-#endif
uint8_t *scratch;
} * ISAR_LC3PLUS_ENC_HANDLE;
ivas_error ISAR_LC3PLUS_ENC_Open(
- const LC3PLUS_CONFIG config, /* i : encoder configuration */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
+ const LC3PLUS_CONFIG config, /* i : encoder configuration */
const uint32_t initialBitsPerSecond, /* i : initial target bit rate */
-#else
- const uint32_t bitsPerSecond, /* i : bit rate */
-#endif
- ISAR_LC3PLUS_ENC_HANDLE *handle /* o : LC3plus encoder handle */
+ ISAR_LC3PLUS_ENC_HANDLE *handle /* o : LC3plus encoder handle */
);
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ivas_error IVAS_LC3PLUS_ENC_SetBitrate(
ISAR_LC3PLUS_ENC_HANDLE handle, /* o : LC3plus encoder handle */
const uint32_t bitsPerSecond /* i : new target bit rate */
);
-#endif
ivas_error ISAR_LC3PLUS_ENC_GetDelay(
ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */
@@ -90,15 +79,10 @@ void ISAR_LC3PLUS_ENC_Close(
);
ivas_error ISAR_LC3PLUS_ENC_Encode(
- ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */
- Word32 **pcm_in, /* i : pointer input samples */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
+ ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */
+ Word32 **pcm_in, /* i : pointer input samples */
void *bitstream_out, /* o : pointer to bitstream frame */
const Word32 bitstream_out_size, /* i : size of the bitstream_out buffer in bytes. Must be equal to ISAR_LC3PLUS_ENC_GetOutputBitstreamSize. */
-#else
- void *bitstream_out /* o : pointer to bitstream frame */
-#endif
Word16 q_in[16] );
-#endif
#endif /* ISAR_LC3PLUS_ENC_H */
diff --git a/lib_isar/isar_lc3plus_payload.c b/lib_isar/isar_lc3plus_payload.c
index cd053978d1ca7a5ffdc914a853e4e829e6be592f..2493aa6a30eb9ca3ab8f493dc1dad4e057666b98 100644
--- a/lib_isar/isar_lc3plus_payload.c
+++ b/lib_isar/isar_lc3plus_payload.c
@@ -36,8 +36,6 @@
#include "isar_lc3plus_payload.h"
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
static LC3PLUS_RTP_ERR s_frame_duration_ms_from_fdi( int32_t *frame_duration_us, const LC3PLUS_RTP_FTD_FDI fdi )
{
if ( NULL == frame_duration_us )
@@ -818,6 +816,3 @@ LC3PLUS_RTP_ERR LC3PLUS_RTP_ftd_fdi_from_frame_duration_us( LC3PLUS_RTP_FTD_FDI
return LC3PLUS_RTP_ERR_INVALID_PARAMETERS;
}
-
-#endif /* ISAR_BITSTREAM_UPDATE_LC3PLUS */
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
diff --git a/lib_isar/isar_lc3plus_payload.h b/lib_isar/isar_lc3plus_payload.h
index c225c91591685f0f55f9d906d9719cb89a9fd136..e95128578493f5561fdcb2292aef37f0c202e428 100644
--- a/lib_isar/isar_lc3plus_payload.h
+++ b/lib_isar/isar_lc3plus_payload.h
@@ -38,8 +38,6 @@
#include "lc3.h"
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/* Implementation of the "B.2.6 Table of contents" part of the RTP payload format
* for LC3plus as specified in ETSI TS 103 634. */
@@ -211,6 +209,4 @@ LC3PLUS_RTP_ERR LC3PLUS_RTP_payload_deserialize(
uint8_t *serialized_buffer,
const size_t serialized_buffer_size );
-#endif /* ISAR_BITSTREAM_UPDATE_LC3PLUS */
-#endif /* #ifdef SPLIT_REND_WITH_HEAD_ROT */
#endif /* ISAR_LC3PLUS_PAYLOAD_H */
diff --git a/lib_isar/isar_lcld_decoder.c b/lib_isar/isar_lcld_decoder.c
index a64a12aead2cf63dcd1e648ce57fb1e6fd6cdfbf..ce517a492ef8c296aa6eb2a9a689d82ad225c05e 100644
--- a/lib_isar/isar_lcld_decoder.c
+++ b/lib_isar/isar_lcld_decoder.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "isar_lcld_prot.h"
#include "isar_lcld_rom_tables.h"
#include "prot_fx.h"
@@ -1991,5 +1990,3 @@ static void ComputeAllocation(
return;
}
-
-#endif
diff --git a/lib_isar/isar_lcld_encoder.c b/lib_isar/isar_lcld_encoder.c
index 48445d08024b8b01cefa578719ab31a79441988f..327edb6ad3aed00682d86685ded5e61991568be8 100644
--- a/lib_isar/isar_lcld_encoder.c
+++ b/lib_isar/isar_lcld_encoder.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#include
#include "isar_lcld_prot.h"
@@ -2139,4 +2138,3 @@ static Word32 ComputeAllocation(
}
return iBitsUsed;
}
-#endif
diff --git a/lib_isar/isar_lcld_prot.h b/lib_isar/isar_lcld_prot.h
index 49e03f5ef5fc1d31a475e63bcc787beef25bf58a..3f79a2c120386746bd93f3b739750a1c17a7ee3d 100644
--- a/lib_isar/isar_lcld_prot.h
+++ b/lib_isar/isar_lcld_prot.h
@@ -34,7 +34,6 @@
#define ISAR_LCLD_PROT_H
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "typedef.h"
#include "common_api_types.h"
#include "isar_lcld_rom_tables.h"
@@ -450,7 +449,6 @@ void ComputeEnvelopeGrouping(
Word16 q_final
);
-#endif
/* clang-format on */
#endif /* _LCLD_ENCODER_H_ */
diff --git a/lib_isar/isar_lcld_rom_tables.c b/lib_isar/isar_lcld_rom_tables.c
index 8ecf743363a2a4de7584df44b28eb841e83809f0..42554611f84607cf59e98b094c8a4e326d3eff1a 100644
--- a/lib_isar/isar_lcld_rom_tables.c
+++ b/lib_isar/isar_lcld_rom_tables.c
@@ -32,7 +32,6 @@
#include "isar_lcld_rom_tables.h"
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "wmc_auto.h"
#include "prot_fx.h"
#include "isar_lcld_prot.h"
@@ -21204,4 +21203,3 @@ const Word32 c_pfWindowLUT[LCLD_PRED_WIN_LEN] = /* Q31 */
{
190779840, 338280192, 610825408, 966922816, 1352359680, 1708457216, 1981002240, 2128502656, 2128502528, 1981002240, 1708456960, 1352359808, 966922624, 610825152, 338280192, 190779776
};
-#endif
diff --git a/lib_isar/isar_prot.h b/lib_isar/isar_prot.h
index 618454f665a7c6026357381ecc54b11ad841d0da..112ee1155fc9eddb2ae34719993fea4759495d3b 100644
--- a/lib_isar/isar_prot.h
+++ b/lib_isar/isar_prot.h
@@ -36,7 +36,6 @@
#include "isar_stat.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#include "options.h"
@@ -199,15 +198,8 @@ void isar_split_rend_get_quant_params_fx(
Word16 bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS],
Word16 pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS],
Word16 pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS],
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
const Word16 ro_flag,
-#endif
- Word16 *num_quant_strats
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- ,
- Word16 *num_complex_bands
-#endif
-);
+ Word16 *num_quant_strats );
void isar_split_rend_get_quant_params(
const int16_t num_md_bands,
@@ -293,7 +285,6 @@ void isar_rend_CldfbSplitPreRendProcess(
const Word16 low_res_pre_rend_rot,
const Word16 ro_md_flag );
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Word16 isar_renderSplitGetRot_axisNumBits(
const Word16 dof );
@@ -305,7 +296,6 @@ Word16 isar_renderSplitGetCodeFromRot_axis(
const Word16 dof,
const ISAR_SPLIT_REND_ROT_AXIS rot_axis,
Word16 *num_bits );
-#endif
void isar_init_split_post_rend_handles(
ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper );
@@ -329,13 +319,6 @@ void isar_set_split_rend_ht_setup_fx(
Word32 Rmat_fx[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] );
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
-Word32 isar_get_lc3plus_bitrate(
- const Word32 SplitRendBitRate,
- const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode,
- const Word16 split_prerender_frame_size_ms );
-#endif
-
ivas_error isar_split_rend_validate_config(
const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig,
const Word16 is_pcm_out );
@@ -344,41 +327,29 @@ Word32 isar_get_lcld_bitrate(
const Word32 SplitRendBitRate,
const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode );
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
-Word8 isar_get_lc3plus_bitrate_id(
- const Word32 SplitRendBitRate );
-#endif
ivas_error splitRendLc3plusEncodeAndWrite(
SPLIT_REND_WRAPPER *hSplitBin,
ISAR_SPLIT_REND_BITS_HANDLE pBits,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const int32_t available_bits,
-#else
- const int32_t SplitRendBitRate,
-#endif
Word32 *in[],
Word16 Q_sig );
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ivas_error isar_framesize_to_ms(
const IVAS_RENDER_FRAMESIZE frame_size, /* i : frame size enum */
Word16 *ms /* o : frame size in ms */
);
-#endif
Word32 isar_get_split_rend_md_target_brate(
const Word32 SplitRendBitRate,
const Word16 pcm_out_flag );
ivas_error isar_split_rend_choose_default_codec(
ISAR_SPLIT_REND_CODEC *pCodec, /* i/o: pointer to codec setting */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- Word16 *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */
-#endif
- Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */
- const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */
- const Word16 pcm_out_flag, /* i : flag to indicate PCM output */
- const Word16 num_subframes /* i : number of subframes */
+ Word16 *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */
+ Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */
+ const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */
+ const Word16 pcm_out_flag, /* i : flag to indicate PCM output */
+ const Word16 num_subframes /* i : number of subframes */
);
void ISAR_SPLIT_REND_BITStream_init(
@@ -393,12 +364,6 @@ Word16 wrap_a(
Word16 val,
const Word16 min_val,
const Word16 max_val );
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
-Word32 isar_get_lc3plus_size_from_id(
- const Word8 SplitRendBitRateId,
- const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode,
- const Word16 split_prerender_frame_size_ms );
-#endif
void isar_renderSplitUpdateNoCorrectionPoseData(
const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config,
@@ -412,12 +377,7 @@ ivas_error split_renderer_open_lc3plus(
SPLIT_REND_WRAPPER *hSplitRendWrapper,
const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig,
const Word32 OutSampleRate,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- const IVAS_RENDER_FRAMESIZE ivas_frame_size
-#else
- const int16_t num_subframes
-#endif
-);
+ const IVAS_RENDER_FRAMESIZE ivas_frame_size );
ISAR_POST_REND_AudioConfigType isar_getAudioConfigType(
const IVAS_AUDIO_CONFIG config );
@@ -429,9 +389,7 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
SPLIT_REND_WRAPPER *hSplitBin,
const IVAS_QUATERNION headPosition,
const Word32 SplitRendBitRate,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const Word16 isar_frame_size_ms,
-#endif
const Word16 codec_frame_size_ms,
ISAR_SPLIT_REND_BITS_HANDLE pBits,
const Word16 max_bands,
@@ -447,7 +405,6 @@ void lc3plusTimeAlignCldfbPoseCorr( SPLIT_REND_WRAPPER *hSplitBin,
Word32 Cldfb_In_BinImag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
Word16 *Q_in );
-#endif
void ivas_cmult_fix( Word32 in1_re_fx, Word16 exp_re1, Word32 in1_im_fx, Word16 exp_im1, Word32 in2_re_fx, Word16 exp_re2, Word32 in2_im_fx, Word16 exp_im2, Word32 *out1_re_fx, Word32 *out1_im_fx, Word16 *exp_out1_re, Word16 *exp_out1_im );
diff --git a/lib_isar/isar_rom_post_rend.c b/lib_isar/isar_rom_post_rend.c
index 99742bc4f28f85d176637967b41495f82ec08f17..0af50df5c428ccb2480245c91f6cb2444b9668ea 100644
--- a/lib_isar/isar_rom_post_rend.c
+++ b/lib_isar/isar_rom_post_rend.c
@@ -43,7 +43,6 @@
/* clang-format off */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*----------------------------------------------------------------------*
* Binuaral split rendering ROM tables
*-----------------------------------------------------------------------*/
@@ -187,7 +186,6 @@ const int32_t ivas_split_rend_huff_roll_pred_consts[ISAR_SPLIT_REND_ROLL_PRED_QU
{14,10,1022},{15,10,1023},
};
-#endif
/* Tables for split renderer fixed converison */
const Word16 fade_table_fx[4] =
diff --git a/lib_isar/isar_rom_post_rend.h b/lib_isar/isar_rom_post_rend.h
index b9acd75e1e16af8a9cbd036d472d327033629c01..90bcae60bdc74a36a5a7c0f57e78531075466bd0 100644
--- a/lib_isar/isar_rom_post_rend.h
+++ b/lib_isar/isar_rom_post_rend.h
@@ -41,7 +41,6 @@
#include "cnst.h"
#include "isar_cnst.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*----------------------------------------------------------------------*
* Binuaral split rendering ROM tables
*-----------------------------------------------------------------------*/
@@ -74,7 +73,6 @@ extern const int32_t ivas_split_rend_huff_roll_pred_consts[ISAR_SPLIT_REND_ROLL_
extern const int32_t ivas_split_rend_huff_p_d_consts[ISAR_SPLIT_REND_D_QUANT_PNTS][3];
extern const int32_t ivas_split_rend_huff_p_d_diff_consts[ISAR_SPLIT_REND_D_QUANT_PNTS][3];
extern const int32_t split_rend_brate_tbl[];
-#endif
/* Tables for fixed point conversion */
extern const Word16 fade_table_fx[4];
diff --git a/lib_isar/isar_splitRend_lcld_dec.c b/lib_isar/isar_splitRend_lcld_dec.c
index ddf9515b9d59e71dc4c762e748a0cf1c9572a42c..7238887093099a97b947b90b5b1208586e37bf6c 100644
--- a/lib_isar/isar_splitRend_lcld_dec.c
+++ b/lib_isar/isar_splitRend_lcld_dec.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "isar_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
@@ -282,4 +281,3 @@ void isar_splitBinLCLDDecProcess(
return;
}
-#endif
diff --git a/lib_isar/isar_splitRend_lcld_enc.c b/lib_isar/isar_splitRend_lcld_enc.c
index 6804e97a408d1d52d0b65a80b8262c220b9a07b5..e75910e8c33aee38471a8adac3c5953799d7b3a4 100644
--- a/lib_isar/isar_splitRend_lcld_enc.c
+++ b/lib_isar/isar_splitRend_lcld_enc.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "isar_prot.h"
#include "ivas_prot_fx.h"
#ifdef DEBUGGING
@@ -236,4 +235,3 @@ void isar_splitBinLCLDEncProcess(
return;
}
-#endif
diff --git a/lib_isar/isar_splitRendererPLC.c b/lib_isar/isar_splitRendererPLC.c
index e3a0ce0e8b4bff86eafd047de36493b2893a57bb..c81d0e12f198acaba7682689fb92b7ce003ac1f9 100644
--- a/lib_isar/isar_splitRendererPLC.c
+++ b/lib_isar/isar_splitRendererPLC.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#include "ivas_prot_fx.h"
#include "prot_fx.h"
@@ -1294,4 +1293,3 @@ void isar_splitBinRendPLC(
return;
}
-#endif
diff --git a/lib_isar/isar_splitRendererPost.c b/lib_isar/isar_splitRendererPost.c
index 306b47d711df41e90977a2f288e069701d988dc6..b1cf6659bc467cf2cab943c3e3488f8f747f51b8 100644
--- a/lib_isar/isar_splitRendererPost.c
+++ b/lib_isar/isar_splitRendererPost.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
#include
@@ -239,22 +238,9 @@ static void ivas_split_rend_unquant_md_fx(
quantstep = pred_quant_step;
move32();
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- hMd->pred_mat_re_fx[ch1][ch2] = Mpy_32_16_1( quantstep, extract_l( L_shl( hMd->pred_mat_re_idx[ch1][ch2], Q9 ) ) ); /* Q25 */
- move32();
- hMd->pred_mat_re_fx[ch1][ch2] = L_add( hMd->pred_mat_re_fx[ch1][ch2], L_shr( fix_pos_rot_mat[ch1][ch2], Q6 ) ); /* Q25 */
- move32();
- }
- }
-#endif
IF( real_only )
{
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
{
FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
@@ -265,7 +251,6 @@ static void ivas_split_rend_unquant_md_fx(
move32();
}
}
-#endif
FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
{
@@ -278,7 +263,6 @@ static void ivas_split_rend_unquant_md_fx(
}
ELSE
{
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
{
FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
@@ -289,7 +273,6 @@ static void ivas_split_rend_unquant_md_fx(
move32();
}
}
-#endif
FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
{
@@ -385,34 +368,6 @@ static void isar_splitBinPostRendMdBase2Dec(
{
IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], ANY_YAW ) )
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( b = 0; b < pred_real_bands_yaw; b++ )
- {
- hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_code_len ) );
- hMd->pred_mat_re_idx[ch1][ch2] = add( code, min_pred_idx );
- move16();
- }
- }
- }
- FOR( b = 0; b < pred_imag_bands_yaw; b++ )
- {
- hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_code_len ) );
- hMd->pred_mat_im_idx[ch1][ch2] = add( code, min_pred_idx );
- move16();
- }
- }
- }
-#else
FOR( b = 0; b < pred_imag_bands_yaw; b++ )
{
hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
@@ -450,7 +405,6 @@ static void isar_splitBinPostRendMdBase2Dec(
hMd->pred_mat_re_idx[1][0] = 0;
move16();
}
-#endif
FOR( b = 0; b < d_bands_yaw; b++ )
{
hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
@@ -474,34 +428,6 @@ static void isar_splitBinPostRendMdBase2Dec(
}
ELSE
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( b = 0; b < pred_real_bands_roll; b++ )
- {
- hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_roll_code_len ) );
- hMd->pred_mat_re_idx[ch1][ch2] = add( code, min_pred_roll_idx );
- move16();
- }
- }
- }
- FOR( b = 0; b < pred_imag_bands_roll; b++ )
- {
- hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_roll_code_len ) );
- hMd->pred_mat_im_idx[ch1][ch2] = add( code, min_pred_roll_idx );
- move16();
- }
- }
- }
-#else
FOR( b = 0; b < pred_imag_bands_roll; b++ )
{
hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
@@ -539,7 +465,6 @@ static void isar_splitBinPostRendMdBase2Dec(
hMd->pred_mat_re_idx[1][0] = 0;
move16();
}
-#endif
}
}
}
@@ -599,36 +524,6 @@ static void ivas_splitBinPostRendMdHuffDec(
{
IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], ANY_YAW ) )
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( b = 0; b < pred_real_bands_yaw; b++ )
- {
- hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred[pred_cb_idx], pBits, pHuff_cfg->pred_idx_trav[pred_cb_idx] );
- move16();
- // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred, pBits );
- }
- }
- isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, 1, min_pred_idx, max_pred_idx );
- }
- FOR( b = 0; b < pred_imag_bands_yaw; b++ )
- {
- hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred[pred_cb_idx], pBits, pHuff_cfg->pred_idx_trav[pred_cb_idx] );
- move16();
- // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred, pBits );
- }
- }
- isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_im_idx, -1, min_pred_idx, max_pred_idx );
- }
-#else
FOR( b = 0; b < pred_imag_bands_yaw; b++ )
{
hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
@@ -668,7 +563,6 @@ static void ivas_splitBinPostRendMdHuffDec(
move16();
isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, -1, min_pred_idx, max_pred_idx );
}
-#endif
FOR( b = 0; b < d_bands_yaw; b++ )
{
hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
@@ -689,37 +583,6 @@ static void ivas_splitBinPostRendMdHuffDec(
}
ELSE
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( b = 0; b < pred_real_bands_roll; b++ )
- {
- hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
-
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred_roll, pBits, pHuff_cfg->pred_roll_idx_trav );
- move16();
- // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred_roll, pBits );
- }
- }
- isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, 1, min_pred_roll_idx, max_pred_roll_idx );
- }
- FOR( b = 0; b < pred_imag_bands_roll; b++ )
- {
- hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred_roll, pBits, pHuff_cfg->pred_roll_idx_trav );
- move16();
- // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred_roll, pBits );
- }
- }
- isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_im_idx, -1, min_pred_roll_idx, max_pred_roll_idx );
- }
-#else
FOR( b = 0; b < pred_imag_bands_roll; b++ )
{
hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b];
@@ -760,7 +623,6 @@ static void ivas_splitBinPostRendMdHuffDec(
move16();
isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, -1, min_pred_roll_idx, max_pred_roll_idx );
}
-#endif
}
}
}
@@ -789,11 +651,7 @@ void isar_splitBinPostRendMdDec_fx(
Word16 pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS];
Word16 pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS];
Word16 d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS];
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Word16 num_quant_strats;
-#else
- Word16 num_complex_bands, num_quant_strats;
-#endif
Word32 quant_strat_bits, is_huff_coding, quant_strat;
Word16 pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS];
Word32 pred_1byquantstep_yaw_fx[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; // Q26
@@ -804,9 +662,7 @@ void isar_splitBinPostRendMdDec_fx(
ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd;
ISAR_SPLIT_REND_CONFIG_DATA split_rend_config;
ISAR_SPLIT_REND_ROT_AXIS rot_axis;
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Word16 ro_md_flag, num_bits, axis_code;
-#endif
hBinHrSplitPostRend->low_Res = 1;
move16();
@@ -814,7 +670,6 @@ void isar_splitBinPostRendMdDec_fx(
split_rend_config.dof = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_DOF_BITS ) );
split_rend_config.hq_mode = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HQ_MODE_BITS ) );
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
num_bits = isar_renderSplitGetRot_axisNumBits( split_rend_config.dof );
if ( num_bits > 0 )
{
@@ -826,9 +681,6 @@ void isar_splitBinPostRendMdDec_fx(
}
rot_axis = isar_renderSplitGetRot_axisFromCode( split_rend_config.dof, axis_code );
ro_md_flag = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_RO_FLAG_BITS );
-#else
- rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_ROT_AXIS_BITS );
-#endif
isar_renderSplitGetMultiBinPoseData_fx( &split_rend_config, pMultiBinPoseData, rot_axis );
set_fix_rotation_mat_fx( hBinHrSplitPostRend->fix_pos_rot_mat_fx, pMultiBinPoseData );
@@ -862,7 +714,6 @@ void isar_splitBinPostRendMdDec_fx(
move32();
}
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
isar_split_rend_get_quant_params_fx(
MAX_SPLIT_REND_MD_BANDS,
pred_real_bands_yaw,
@@ -876,21 +727,6 @@ void isar_splitBinPostRendMdDec_fx(
pred_imag_bands_roll,
ro_md_flag,
&num_quant_strats );
-#else
- isar_split_rend_get_quant_params_fx(
- MAX_SPLIT_REND_MD_BANDS,
- pred_real_bands_yaw,
- pred_imag_bands_yaw,
- pred_quant_pnts_yaw,
- pred_quantstep_yaw_fx,
- pred_1byquantstep_yaw_fx,
- d_bands_yaw,
- bands_pitch,
- pred_real_bands_roll,
- pred_imag_bands_roll,
- &num_quant_strats,
- &num_complex_bands );
-#endif
quant_strat_bits = L_deposit_l( ceil_log_2( num_quant_strats ) );
is_huff_coding = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 );
quant_strat = ISAR_SPLIT_REND_BITStream_read_int32( pBits, quant_strat_bits );
@@ -2121,5 +1957,3 @@ void isar_init_split_post_rend_handles(
return;
}
-
-#endif
diff --git a/lib_isar/isar_splitRendererPre.c b/lib_isar/isar_splitRendererPre.c
index 8bdc824f87a5ed2fd3922f6ede336962c7820db2..b30f25ca7cd4d36a8b2972e9740ce5fbdaf1fbac 100644
--- a/lib_isar/isar_splitRendererPre.c
+++ b/lib_isar/isar_splitRendererPre.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
#include
@@ -912,11 +911,7 @@ static void isar_split_rend_quant_md_fx(
{
int16_t ch1, ch2;
int16_t gd_idx_min;
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Word32 quant_val;
-#else
- Word32 sign, quant_val;
-#endif
#ifdef DEBUG_QUANT_MD_FX
float quant_val_flt;
Word16 tmp;
@@ -931,7 +926,6 @@ static void isar_split_rend_quant_md_fx(
#endif
IF( real_only == 1 )
{
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
{
hMd->pred_mat_re_fx[ch1][ch1] = hMd->pred_mat_re2[ch1];
@@ -948,25 +942,9 @@ static void isar_split_rend_quant_md_fx(
hMd->pred_mat_re_idx[ch1][ch2] = (Word16) L_shr_r( Mpy_32_32( onebyquantstep, quant_val ), sub( Q_frame, 5 ) ); // Q25*Q26 = Q20 -> Q16 -> Q0
}
}
-#else
- for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- sign = GE_32( hMd->pred_mat_re_fx[ch1][ch2], 0 ) ? 1 : -1;
- Word16 exp_out;
- ivas_calculate_abs_fx( hMd->pred_mat_re_fx[ch1][ch2], Q31 - Q_frame, hMd->pred_mat_im_fx[ch1][ch2], Q31 - Q_frame, &hMd->pred_mat_re_fx[ch1][ch2], &exp_out );
- hMd->pred_mat_re_fx[ch1][ch2] = L_shr_r( hMd->pred_mat_re_fx[ch1][ch2], sub( sub( Q31, Q_frame ), exp_out ) ); // Q_frame
- hMd->pred_mat_re_fx[ch1][ch2] = (Word32) W_mult0_32_32( hMd->pred_mat_re_fx[ch1][ch2], sign );
- hMd->pred_mat_im_fx[ch1][ch2] = 0;
- }
- }
-#endif
}
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
else
{
-#endif
for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
{
for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
@@ -986,9 +964,7 @@ static void isar_split_rend_quant_md_fx(
#endif
}
}
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
}
-#endif
if ( real_only == 0 )
{
@@ -1067,7 +1043,6 @@ static void isar_split_rend_quant_md_fx(
}
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
static void get_lr_gains( Word32 cov_ii_re_fx[][BINAURAL_CHANNELS],
const Word16 exp_cov_ii_re,
Word32 cov_oo_re_fx[][BINAURAL_CHANNELS],
@@ -1123,7 +1098,6 @@ static void get_lr_gains( Word32 cov_ii_re_fx[][BINAURAL_CHANNELS],
move16();
return;
}
-#endif
static void ComputeCoeffs_fx(
Word32 cov_ii_re_fx[][BINAURAL_CHANNELS],
@@ -1216,7 +1190,6 @@ static void ComputeCoeffs_fx(
{
IF( real_only )
{
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Word32 gd_tmp_fx[BINAURAL_CHANNELS];
get_lr_gains( cov_ii_re_fx, exp_cov_ii_re,
cov_oo_re_fx, exp_cov_oo_re,
@@ -1235,79 +1208,12 @@ static void ComputeCoeffs_fx(
hMd->pred_mat_re2[i] = gd_tmp_fx[i];
set32_fx( hMd->pred_mat_im_fx[i], 0, BINAURAL_CHANNELS );
}
-
-
-#else
- Word32 gd_tmp_fx[BINAURAL_CHANNELS];
- Word16 exp_gd_tmp_buf[BINAURAL_CHANNELS] = { 0 };
- Word16 exp_gd_tmp = 0;
-
- FOR( i = 0; i < BINAURAL_CHANNELS; i++ )
- {
- gd_tmp_fx[i] = cov_ii_re_fx[i][i];
- move32();
- exp_gd_tmp_buf[i] = exp_cov_ii_re;
- move16();
-
- Word16 flag = BASOP_Util_Cmp_Mant32Exp( gd_tmp_fx[i], exp_gd_tmp_buf[i], EPSILON_FX, 0 );
- IF( EQ_16( flag, negate( 1 ) ) )
- {
- gd_tmp_fx[i] = ONE_IN_Q25;
- move32();
- exp_gd_tmp_buf[i] = 6;
- move16();
- }
- ELSE
- {
- Word16 tmp, tmp_sqrt, exp_tmp = 0;
- tmp = BASOP_Util_Divide3232_Scale( cov_oo_re_fx[i][i], gd_tmp_fx[i], &exp_tmp );
- exp_tmp = exp_tmp + ( exp_cov_oo_re - exp_gd_tmp_buf[i] );
- tmp_sqrt = Sqrt16( tmp, &exp_tmp );
- gd_tmp_fx[i] = L_deposit_h( tmp_sqrt );
- move32();
- exp_gd_tmp_buf[i] = exp_tmp;
- move16();
- }
- hMd->pred_mat_re_fx[i][i] = gd_tmp_fx[i];
- move32();
- set32_fx( hMd->pred_mat_im_fx[i], 0, BINAURAL_CHANNELS );
- }
- hMd->pred_mat_re_fx[1][0] = 0;
- move32();
- hMd->pred_mat_re_fx[0][1] = 0;
- move32();
-
- Word16 max_gd_exp = MIN16B;
- FOR( i = 0; i < BINAURAL_CHANNELS; i++ )
- {
- max_gd_exp = max( max_gd_exp, exp_gd_tmp_buf[i] );
- }
- exp_gd_tmp = max_gd_exp;
-
- FOR( i = 0; i < BINAURAL_CHANNELS; i++ )
- {
- hMd->pred_mat_re_fx[i][i] = L_shr( hMd->pred_mat_re_fx[i][i], max_gd_exp - exp_gd_tmp_buf[i] );
- move32();
- }
-
- exp_pred_re = exp_gd_tmp;
- move16();
- exp_pred_im = exp_gd_tmp;
- move16();
-
- hMd->exp_pred_mat_re = exp_pred_re;
- move16();
- hMd->exp_pred_mat_im = exp_pred_im;
- move16();
-#endif
}
ELSE
{
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
get_lr_gains( cov_ii_re_fx, exp_cov_ii_re,
cov_oo_re_fx, exp_cov_oo_re,
hMd->pred_mat_re2, &hMd->exp_pred_mat_re2 );
-#endif
Word16 exp_norm_fact = 0;
cov_norm_fact_fx = GetNormFact_fx( cov_ii_re_fx, exp_cov_ii_re, cov_ii_im_fx, exp_cov_ii_im, cov_io_re_fx, exp_cov_io_re, cov_io_im_fx, exp_cov_io_im, cov_oo_re_fx, exp_cov_oo_re, &exp_norm_fact );
@@ -1580,19 +1486,12 @@ static void get_base2_bits(
pose_type = hBinHrSplitPreRend->pose_type[pose_idx];
IF( EQ_32( pose_type, ANY_YAW ) )
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_real_bands_yaw[q] ), bin_ch_2_num_sf ) );
- move32();
- base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_imag_bands_yaw[q] ), bin_ch_2_num_sf ) );
- move32();
-#else
base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_real_bands_yaw[q] ), bin_ch_num_sf ) );
move32();
base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_imag_bands_yaw[q] ), bin_ch_num_sf ) );
move32();
base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_imag_bands_yaw[q] ), bin_ch_2_num_sf ) );
move32();
-#endif
base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( d_gain_bits, d_bands_yaw[q] ), num_subframes ) );
@@ -1607,19 +1506,12 @@ static void get_base2_bits(
}
ELSE
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_real_bands_roll[q] ), bin_ch_2_num_sf ) );
- move32();
- base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_imag_bands_roll[q] ), bin_ch_2_num_sf ) );
- move32();
-#else
base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_real_bands_roll[q] ), bin_ch_num_sf ) );
move32();
base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_imag_bands_roll[q] ), bin_ch_num_sf ) );
move32();
base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_imag_bands_roll[q] ), bin_ch_2_num_sf ) );
move32();
-#endif
}
}
}
@@ -1683,33 +1575,6 @@ static void isar_SplitRenderer_code_md_base2(
{
IF( EQ_32( hBinHrSplitPreRend->pose_type[pos_idx], ANY_YAW ) )
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( b = 0; b < pred_real_bands_yaw; b++ )
- {
- hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- code = L_sub( hMd->pred_mat_re_idx[ch1][ch2], min_pred_idx );
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_code_len );
- }
- }
- }
-
- FOR( b = 0; b < pred_imag_bands_yaw; b++ )
- {
- hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- code = L_sub( hMd->pred_mat_im_idx[ch1][ch2], min_pred_idx );
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_code_len );
- }
- }
- }
-#else
FOR( b = 0; b < pred_imag_bands_yaw; b++ )
{
hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
@@ -1740,7 +1605,6 @@ static void isar_SplitRenderer_code_md_base2(
ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_code_len );
}
}
-#endif
FOR( b = 0; b < d_bands_yaw; b++ )
{
hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
@@ -1762,33 +1626,6 @@ static void isar_SplitRenderer_code_md_base2(
}
ELSE
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( b = 0; b < pred_real_bands_roll; b++ )
- {
- hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- code = L_sub( hMd->pred_mat_re_idx[ch1][ch2], min_pred_roll_idx );
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_roll_code_len );
- }
- }
- }
-
- FOR( b = 0; b < pred_imag_bands_roll; b++ )
- {
- hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- code = L_sub( hMd->pred_mat_im_idx[ch1][ch2], min_pred_roll_idx );
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_roll_code_len );
- }
- }
- }
-#else
FOR( b = 0; b < pred_imag_bands_roll; b++ )
{
hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
@@ -1819,7 +1656,6 @@ static void isar_SplitRenderer_code_md_base2(
ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_roll_code_len );
}
}
-#endif
}
}
}
@@ -1895,35 +1731,6 @@ static void isar_SplitRenderer_code_md_huff(
{
IF( EQ_32( hBinHrSplitPreRend->pose_type[pos_idx], ANY_YAW ) )
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( b = 0; b < pred_real_bands_yaw; b++ )
- {
- hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
- isar_SplitRenderer_getdiagdiff( hMd->pred_mat_re_idx, sym_adj_idx, -1, min_pred_idx, max_pred_idx );
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- isar_split_rend_huffman_encode( &pHuff_cfg->pred[pred_cb_idx], sym_adj_idx[ch1][ch2], &code, &len );
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len );
- }
- }
- }
- FOR( b = 0; b < pred_imag_bands_yaw; b++ )
- {
- hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
- isar_SplitRenderer_getdiagdiff( hMd->pred_mat_im_idx, sym_adj_idx, 1, min_pred_idx, max_pred_idx );
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- isar_split_rend_huffman_encode( &pHuff_cfg->pred[pred_cb_idx], sym_adj_idx[ch1][ch2], &code, &len );
-
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len );
- }
- }
- }
-#else
FOR( b = 0; b < pred_imag_bands_yaw; b++ )
{
hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
@@ -1958,7 +1765,6 @@ static void isar_SplitRenderer_code_md_huff(
ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len );
}
}
-#endif
FOR( b = 0; b < d_bands_yaw; b++ )
{
hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
@@ -1980,34 +1786,6 @@ static void isar_SplitRenderer_code_md_huff(
}
ELSE
{
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- FOR( b = 0; b < pred_real_bands_roll; b++ )
- {
- hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
- isar_SplitRenderer_getdiagdiff( hMd->pred_mat_re_idx, sym_adj_idx, -1, min_pred_roll_idx, max_pred_roll_idx );
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- isar_split_rend_huffman_encode( &pHuff_cfg->pred_roll, sym_adj_idx[ch1][ch2], &code, &len );
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len );
- }
- }
- }
- FOR( b = 0; b < pred_imag_bands_roll; b++ )
- {
- hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
- isar_SplitRenderer_getdiagdiff( hMd->pred_mat_im_idx, sym_adj_idx, 1, min_pred_roll_idx, max_pred_roll_idx );
- FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ )
- {
- FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ )
- {
- isar_split_rend_huffman_encode( &pHuff_cfg->pred_roll, sym_adj_idx[ch1][ch2], &code, &len );
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len );
- }
- }
- }
-#else
FOR( b = 0; b < pred_imag_bands_roll; b++ )
{
hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b];
@@ -2041,7 +1819,6 @@ static void isar_SplitRenderer_code_md_huff(
ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len );
}
}
-#endif
}
}
}
@@ -2073,17 +1850,11 @@ static void isar_SplitRenderer_quant_code(
MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
ISAR_SPLIT_REND_BITS_HANDLE pBits,
const Word16 low_res_pre_rend_rot,
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
const int16_t ro_md_flag,
-#endif
const Word32 target_md_bits,
Word16 Q_frame )
{
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Word16 q, num_subframes, sf_idx, pos_idx, b, num_quant_strats;
-#else
- Word16 num_complex_bands, q, num_subframes, sf_idx, pos_idx, b, num_quant_strats;
-#endif
Word32 overhead_bits, quant_strat_bits, huff_bits, start_bit;
Word16 pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS];
Word16 pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS];
@@ -2097,9 +1868,7 @@ static void isar_SplitRenderer_quant_code(
float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS];
#endif
ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd;
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Word16 rot_axis_code, num_bits;
-#endif
IF( low_res_pre_rend_rot )
{
@@ -2114,16 +1883,12 @@ static void isar_SplitRenderer_quant_code(
ISAR_SPLIT_REND_BITStream_write_int32( pBits, pMultiBinPoseData->dof, ISAR_SPLIT_REND_DOF_BITS );
ISAR_SPLIT_REND_BITStream_write_int32( pBits, pMultiBinPoseData->hq_mode, ISAR_SPLIT_REND_HQ_MODE_BITS );
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
rot_axis_code = isar_renderSplitGetCodeFromRot_axis( pMultiBinPoseData->dof, pMultiBinPoseData->rot_axis, &num_bits );
if ( num_bits > 0 )
{
ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) rot_axis_code, num_bits );
}
ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) ro_md_flag, ISAR_SPLIT_REND_RO_FLAG_BITS );
-#else
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) pMultiBinPoseData->rot_axis, ISAR_SPLIT_REND_ROT_AXIS_BITS );
-#endif
/* code ref pose*/
FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ )
@@ -2147,15 +1912,9 @@ static void isar_SplitRenderer_quant_code(
ISAR_SPLIT_REND_BITStream_write_int32( pBits, angle, ISAR_SPLIT_REND_HEAD_POSE_BITS );
}
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
isar_split_rend_get_quant_params_fx( MAX_SPLIT_REND_MD_BANDS, pred_real_bands_yaw, pred_imag_bands_yaw,
pred_quant_pnts_yaw, pred_quantstep_yaw_fx, pred_1byquantstep_yaw_fx,
d_bands_yaw, bands_pitch, pred_real_bands_roll, pred_imag_bands_roll, ro_md_flag, &num_quant_strats );
-#else
- isar_split_rend_get_quant_params_fx( MAX_SPLIT_REND_MD_BANDS, pred_real_bands_yaw, pred_imag_bands_yaw,
- pred_quant_pnts_yaw, pred_quantstep_yaw_fx, pred_1byquantstep_yaw_fx,
- d_bands_yaw, bands_pitch, pred_real_bands_roll, pred_imag_bands_roll, &num_quant_strats, &num_complex_bands );
-#endif
#ifdef DEBUG_QUANT_MD_FX
fixedToFloat_arrL( pred_quantstep_yaw_fx, pred_quantstep_yaw, Q31, ISAR_SPLIT_REND_NUM_QUANT_STRATS );
fixedToFloat_arrL( pred_1byquantstep_yaw_fx, pred_1byquantstep_yaw, Q26, ISAR_SPLIT_REND_NUM_QUANT_STRATS );
@@ -2568,9 +2327,7 @@ void isar_rend_CldfbSplitPreRendProcess(
ELSE
{
exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re );
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re2 );
-#endif
exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_im );
}
}
@@ -2600,19 +2357,13 @@ void isar_rend_CldfbSplitPreRendProcess(
Scale_sig32( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_fx[i], BINAURAL_CHANNELS, sub( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re, exp_frame ) );
Scale_sig32( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_fx[i], BINAURAL_CHANNELS, sub( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_im, exp_frame ) );
}
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Scale_sig32( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re2, BINAURAL_CHANNELS, sub( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re2, exp_frame ) );
-#endif
}
}
}
}
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
isar_SplitRenderer_quant_code( hBinHrSplitPreRend, headPosition, pMultiBinPoseData, pBits, low_res_pre_rend_rot, ro_md_flag, target_md_bits, Q_frame );
-#else
- isar_SplitRenderer_quant_code( hBinHrSplitPreRend, headPosition, pMultiBinPoseData, pBits, low_res_pre_rend_rot, target_md_bits, Q_frame );
-#endif
#ifdef DEBUG_QUANT_CODE_OUT
for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ )
{
@@ -2925,51 +2676,31 @@ ivas_error split_renderer_open_lc3plus(
SPLIT_REND_WRAPPER *hSplitRendWrapper,
const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig,
const Word32 OutSampleRate,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- const IVAS_RENDER_FRAMESIZE isar_frame_size
-#else
- const int16_t num_subframes
-#endif
-)
+ const IVAS_RENDER_FRAMESIZE isar_frame_size )
{
ivas_error error;
Word16 i, delayBufferLength;
LC3PLUS_CONFIG config;
-#if defined ISAR_BITSTREAM_UPDATE_LC3PLUS
int16_t isar_frame_size_ms;
if ( ( error = isar_framesize_to_ms( isar_frame_size, &isar_frame_size_ms ) ) != IVAS_ERR_OK )
{
return error;
}
-#endif
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/* Check configuration validity */
if ( isar_frame_size_ms < pSplitRendConfig->codec_frame_size_ms )
{
return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "SR codec frame doesn't fit in one output frame" );
}
-#endif
config.lc3plus_frame_duration_us = pSplitRendConfig->codec_frame_size_ms * 1000;
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- config.ivas_frame_duration_us = ( pSplitRendConfig->dof == 0 ) ? config.lc3plus_frame_duration_us * num_subframes : 20000;
-#endif
config.samplerate = OutSampleRate;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
config.isar_frame_duration_us = isar_frame_size_ms * 1000;
-#endif
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
config.high_res_mode_enabled = ( pSplitRendConfig->lc3plus_highres != 0 );
-#endif
config.channels = BINAURAL_CHANNELS;
if ( ( error = ISAR_LC3PLUS_ENC_Open( config,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, pSplitRendConfig->poseCorrectionMode ),
-#else
- isar_get_lc3plus_bitrate( pSplitRendConfig->splitRendBitRate, pSplitRendConfig->poseCorrectionMode, (int16_t) ( config.isar_frame_duration_us / 1000 ) ),
-#endif
&hSplitRendWrapper->hLc3plusEnc ) ) != IVAS_ERR_OK )
{
return error;
@@ -3027,13 +2758,7 @@ ivas_error split_renderer_open_lc3plus(
ivas_error splitRendLc3plusEncodeAndWrite(
SPLIT_REND_WRAPPER *hSplitBin,
ISAR_SPLIT_REND_BITS_HANDLE pBits,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const int32_t available_bits,
-#endif
-#else
- const int32_t SplitRendBitRate,
-#endif
Word32 *in[],
Word16 Q_sig )
{
@@ -3055,29 +2780,20 @@ ivas_error splitRendLc3plusEncodeAndWrite(
channel_ptrs[i] = in[i];
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( ( error = IVAS_LC3PLUS_ENC_SetBitrate( hSplitBin->hLc3plusEnc, available_bits * FRAMES_PER_SEC ) ) != IVAS_ERR_OK )
{
return error;
}
-#endif
if ( ( error = ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( hSplitBin->hLc3plusEnc, &lc3plusBitstreamSize ) ) != IVAS_ERR_OK )
{
return error;
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ISAR_SPLIT_REND_BITStream_write_int32( pBits, isar_get_lc3plus_bitrate_id( SplitRendBitRate ), 8 );
-#endif
/* Write bitstream */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
set16_fx( Q_in, Q_sig, 16 );
move16();
if ( ( error = ISAR_LC3PLUS_ENC_Encode( hSplitBin->hLc3plusEnc, channel_ptrs, &pBits->bits_buf[pBits->bits_written / 8], lc3plusBitstreamSize, Q_in ) ) != IVAS_ERR_OK )
-#else
- if ( ( error = ISAR_LC3PLUS_ENC_Encode( hSplitBin->hLc3plusEnc, channel_ptrs, &pBits->bits_buf[pBits->bits_written / 8] ) ) != IVAS_ERR_OK )
-#endif
{
return error;
}
@@ -3086,9 +2802,7 @@ ivas_error splitRendLc3plusEncodeAndWrite(
pBits->codec = ISAR_SPLIT_REND_CODEC_LC3PLUS;
pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode;
pBits->codec_frame_size_ms = (int16_t) ( hSplitBin->hLc3plusEnc->config.lc3plus_frame_duration_us / 1000 );
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
pBits->isar_frame_size_ms = (int16_t) ( hSplitBin->hLc3plusEnc->config.isar_frame_duration_us / 1000 );
-#endif
return IVAS_ERR_OK;
}
@@ -3102,9 +2816,7 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
SPLIT_REND_WRAPPER *hSplitBin,
const IVAS_QUATERNION headPosition,
const Word32 SplitRendBitRate,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const int16_t isar_frame_size_ms,
-#endif
const Word16 codec_frame_size_ms,
ISAR_SPLIT_REND_BITS_HANDLE pBits,
const Word16 max_bands,
@@ -3116,11 +2828,7 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
const Word16 ro_md_flag )
{
ivas_error error;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int32_t bit_len, available_bits, target_md_bits, tmp_32;
-#else
- Word32 bit_len, available_bits, target_md_bits, actual_md_bits, tmp_32;
-#endif
Word16 num_cldfb_bands, ch, slot_idx, pos_idx, num_poses;
Word16 tmp, tmp_e;
Word32 Cldfb_In_BinReal_fx[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] = { 0 };
@@ -3166,10 +2874,6 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
}
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- actual_md_bits = pBits->bits_written;
- move32();
-#endif
test();
test();
@@ -3243,9 +2947,6 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
tmp_32 = BASOP_Util_Divide3232_Scale_cadence( target_md_bits, 48000, &tmp_e );
target_md_bits = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- actual_md_bits = pBits->bits_written;
-#endif
/*scaling to max Q*/
Word16 scale_factor = 31;
move32();
@@ -3283,34 +2984,20 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
tmp_e = 0;
tmp_32 = BASOP_Util_Divide3232_Scale_cadence( available_bits, L_mult0( 16, FRAMES_PER_SEC ), &tmp_e );
available_bits = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
available_bits = L_sub( available_bits, pBits->bits_written );
-#else
- actual_md_bits = L_sub( pBits->bits_written, actual_md_bits );
- available_bits = L_sub( available_bits, actual_md_bits );
-#endif
pBits->codec_frame_size_ms = codec_frame_size_ms;
move16();
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
pBits->isar_frame_size_ms = isar_frame_size_ms;
move16();
-#endif
isar_splitBinLCLDEncProcess( hSplitBin->hSplitBinLCLDEnc, Cldfb_In_BinReal_fx, Cldfb_In_BinImag_fx, available_bits, pBits, &q_final );
}
ELSE
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written;
IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, available_bits, in_fx, Q_in ) ) != IVAS_ERR_OK )
{
return error;
}
-#else
- IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, SplitRendBitRate, in_flt ) ) != IVAS_ERR_OK )
- {
- return error;
- }
-#endif
}
}
ELSE
@@ -3445,5 +3132,3 @@ void lc3plusTimeAlignCldfbPoseCorr(
return;
}
-
-#endif
diff --git a/lib_isar/isar_splitRenderer_utils.c b/lib_isar/isar_splitRenderer_utils.c
index 7f21a40c7cdafc2f51b4c7cf8e7f4d0f1305d57c..62f3870d3d3d3a46a3e9979009668414e64c12f6 100644
--- a/lib_isar/isar_splitRenderer_utils.c
+++ b/lib_isar/isar_splitRenderer_utils.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
#include "ivas_prot_fx.h"
#include "prot_fx.h"
@@ -738,135 +737,6 @@ Word32 isar_get_lcld_bitrate(
return -1;
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
-/*-------------------------------------------------------------------------
- * Function isar_get_lc3plus_bitrate()
- *
- *
- *------------------------------------------------------------------------*/
-
-Word32 isar_get_lc3plus_bitrate(
- const Word32 SplitRendBitRate,
- ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode,
- const Word16 split_prerender_frame_size_ms )
-{
- IF( EQ_32( poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) )
- {
- Word32 inBandMdBps = (Word32) ( 8 * 1000 / split_prerender_frame_size_ms );
- return L_sub( isar_get_lcld_bitrate( SplitRendBitRate, poseCorrectionMode ), inBandMdBps );
- }
-
- IF( EQ_32( poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) )
- {
- return SplitRendBitRate;
- }
-
- /* Should not be reached */
- assert( 0 );
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function isar_get_lc3plus_bitrate_id()
- *
- *
- *------------------------------------------------------------------------*/
-
-Word8 isar_get_lc3plus_bitrate_id(
- const Word32 SplitRendBitRate )
-{
- SWITCH( SplitRendBitRate )
- {
- case SPLIT_REND_768k:
- {
- return 4;
- }
- case SPLIT_REND_512k:
- {
- return 3;
- }
- case SPLIT_REND_384k:
- {
- return 2;
- }
- case SPLIT_REND_320k:
- {
- return 1;
- }
- case SPLIT_REND_256k:
- {
- return 0;
- }
- default:
- {
- BREAK;
- }
- }
-
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function ivas_mat_mult_2by2_complex()
- *
- *
- *------------------------------------------------------------------------*/
-
-Word32 isar_get_lc3plus_size_from_id(
- const Word8 SplitRendBitRateId,
- const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode,
- const Word16 split_prerender_frame_size_ms )
-{
- Word32 bitrate;
-
- SWITCH( SplitRendBitRateId )
- {
- case 4:
- {
- bitrate = SPLIT_REND_768k;
- move32();
- BREAK;
- }
- case 3:
- {
- bitrate = SPLIT_REND_512k;
- move32();
- BREAK;
- }
- case 2:
- {
- bitrate = SPLIT_REND_384k;
- move32();
- BREAK;
- }
- case 1:
- {
- bitrate = SPLIT_REND_320k;
- move32();
- BREAK;
- }
- case 0:
- {
- bitrate = SPLIT_REND_256k;
- move32();
- BREAK;
- }
- default:
- {
- bitrate = -1;
- move32();
- BREAK;
- }
- }
-
- bitrate = isar_get_lc3plus_bitrate( bitrate, poseCorrectionMode, split_prerender_frame_size_ms );
-
- /* Return size in bytes */
- return (Word32) ( bitrate * split_prerender_frame_size_ms / 1000 / 8 );
-}
-#endif
/*-------------------------------------------------------------------------
* Function isar_split_rend_validate_config()
@@ -940,65 +810,39 @@ ivas_error isar_split_rend_validate_config(
BREAK;
case SPLIT_REND_384k:
case SPLIT_REND_512k:
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
case SPLIT_REND_768k:
-#endif
/* Always valid */
BREAK;
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- case SPLIT_REND_768k:
- test();
- IF( EQ_16( pSplitRendConfig->dof, 0 ) && EQ_32( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Bitrate is too high for LC3plus with 0 DOF" );
- }
- BREAK;
-#endif
default:
return IVAS_ERR_LC3PLUS_INVALID_BITRATE;
}
}
ELSE
{
- IF( EQ_16( pSplitRendConfig->dof, 1 ) ){
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- IF( LT_32( pSplitRendConfig->splitRendBitRate, 34000 ) ){
+ IF( EQ_16( pSplitRendConfig->dof, 1 ) )
+ {
+ IF( LT_32( pSplitRendConfig->splitRendBitRate, 34000 ) )
+ {
return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "1DOF metadata needs atleast 34 kbps" );
+ }
+ }
+ ELSE IF( EQ_16( pSplitRendConfig->dof, 2 ) )
+ {
+ IF( LT_32( pSplitRendConfig->splitRendBitRate, 50000 ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "2DOF metadata needs atleast 50 kbps" );
+ }
+ }
+ ELSE IF( EQ_16( pSplitRendConfig->dof, 3 ) )
+ {
+ IF( LT_32( pSplitRendConfig->splitRendBitRate, 82000 ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "3DOF metadata needs atleast 128 kbps" );
+ }
+ }
}
-#else
- IF( LT_32( pSplitRendConfig->splitRendBitRate, 50000 ) ){
- return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "1DOF metadata needs atleast 50 kbps" );
- }
-#endif
-}
-ELSE IF( EQ_16( pSplitRendConfig->dof, 2 ) ){
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- IF( LT_32( pSplitRendConfig->splitRendBitRate, 50000 ) ){
- return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "2DOF metadata needs atleast 50 kbps" );
-}
-#else
- IF( LT_32( pSplitRendConfig->splitRendBitRate, 66000 ) ){
- return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "2DOF metadata needs atleast 66 kbps" );
-}
-#endif
-}
-ELSE IF( EQ_16( pSplitRendConfig->dof, 3 ) )
-{
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- IF( LT_32( pSplitRendConfig->splitRendBitRate, 82000 ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "3DOF metadata needs atleast 128 kbps" );
- }
-#else
- IF( LT_32( pSplitRendConfig->splitRendBitRate, 128000 ) )
- {
- return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "3DOF metadata needs atleast 128 kbps" );
- }
-#endif
-}
-}
-return IVAS_ERR_OK;
+ return IVAS_ERR_OK;
}
@@ -1019,25 +863,13 @@ void isar_split_rend_get_quant_params_fx(
Word16 bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS],
Word16 pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS],
Word16 pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS],
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
const Word16 ro_flag,
-#endif
- Word16 *num_quant_strats
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- ,
- Word16 *num_complex_bands
-#endif
-)
+ Word16 *num_quant_strats )
{
Word16 q;
*num_quant_strats = ISAR_SPLIT_REND_NUM_QUANT_STRATS;
move16();
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- *num_complex_bands = COMPLEX_MD_BAND_THRESH_LOW;
- move16();
- assert( *num_complex_bands <= num_md_bands );
-#endif
pred_quant_pnts_yaw[0] = ISAR_SPLIT_REND_PRED_63QUANT_PNTS;
move16();
@@ -1063,24 +895,6 @@ void isar_split_rend_get_quant_params_fx(
move16();
}
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- pred_imag_bands_yaw[0] = num_md_bands;
- move16();
- pred_imag_bands_roll[0] = num_md_bands;
- move16();
- pred_imag_bands_yaw[1] = num_md_bands;
- move16();
- pred_imag_bands_roll[1] = num_md_bands;
- move16();
-
- FOR( q = 2; q < *num_quant_strats; q++ )
- {
- pred_imag_bands_yaw[q] = LT_16( q, sub( *num_quant_strats, 1 ) ) ? num_md_bands : *num_complex_bands;
- move16();
- pred_imag_bands_roll[q] = *num_complex_bands;
- move16();
- }
-#else
IF( ro_flag )
{
FOR( q = 0; q < *num_quant_strats; q++ )
@@ -1107,7 +921,6 @@ void isar_split_rend_get_quant_params_fx(
pred_imag_bands_roll[q] = SPLIT_REND_RO_MD_BAND_THRESH;
move16();
}
-#endif
FOR( q = 0; q < *num_quant_strats; q++ )
{
@@ -1120,7 +933,6 @@ void isar_split_rend_get_quant_params_fx(
return;
}
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
/*-------------------------------------------------------------------------
* Function isar_renderSplitGetRot_axisNumBits()
*
@@ -1212,7 +1024,6 @@ Word16 isar_renderSplitGetCodeFromRot_axis(
return code;
}
-#endif
/*-------------------------------------------------------------------------
* Function isar_renderSplitGetMultiBinPoseData()
@@ -1287,10 +1098,6 @@ void isar_renderSplitGetMultiBinPoseData_fx(
SWITCH( rot_axis )
{
case DEFAULT_AXIS:
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- case YAW:
- case PITCH:
-#endif
case YAW_PITCH:
{
num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES;
@@ -1299,9 +1106,6 @@ void isar_renderSplitGetMultiBinPoseData_fx(
move16();
BREAK;
}
-#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
- case ROLL:
-#endif
case YAW_ROLL:
{
num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES;
@@ -1466,7 +1270,6 @@ void isar_init_multi_bin_pose_data_fx_enc(
return;
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ivas_error isar_framesize_to_ms(
const IVAS_RENDER_FRAMESIZE frame_size, /* i : frame size enum */
int16_t *ms /* o : frame size in ms */
@@ -1489,7 +1292,6 @@ ivas_error isar_framesize_to_ms(
return IVAS_ERR_OK;
}
-#endif
/*-------------------------------------------------------------------------
* Function isar_split_rend_choose_default_codec()
@@ -1499,13 +1301,11 @@ ivas_error isar_framesize_to_ms(
ivas_error isar_split_rend_choose_default_codec(
ISAR_SPLIT_REND_CODEC *pCodec, /* i/o: pointer to codec setting */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- int16_t *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */
-#endif
- Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */
- const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */
- const Word16 pcm_out_flag, /* i : flag to indicate PCM output */
- const Word16 num_subframes /* i : number of subframes */
+ int16_t *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */
+ Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */
+ const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */
+ const Word16 pcm_out_flag, /* i : flag to indicate PCM output */
+ const Word16 num_subframes /* i : number of subframes */
)
{
IF( EQ_16( pcm_out_flag, 0 ) )
@@ -1538,12 +1338,10 @@ ivas_error isar_split_rend_choose_default_codec(
return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Unknown split codec value" );
}
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
IF( *pIsar_frame_size_ms == 0 ) /* isar frame size hasn't been set yet - use default for current configuration */
{
*pIsar_frame_size_ms = 20;
}
-#endif
return IVAS_ERR_OK;
}
@@ -1560,6 +1358,3 @@ Word32 get_bit(
{
return L_and( state, ( L_shl( 1, (Word16) bit_id ) ) );
}
-
-
-#endif
diff --git a/lib_isar/isar_stat.h b/lib_isar/isar_stat.h
index fec4a5d807680260fd15bec8d3c859960b12c84a..3fc1580e25d6b864a58e2d400ce9dfaaac5428f3 100644
--- a/lib_isar/isar_stat.h
+++ b/lib_isar/isar_stat.h
@@ -38,7 +38,6 @@
#include "options.h"
#include "stat_com.h"
#include "ivas_stat_com.h"
-#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "isar_lcld_prot.h"
#include "isar_lc3plus_enc.h"
#include "isar_lc3plus_dec.h"
@@ -115,10 +114,8 @@ typedef struct isar_binaural_head_rot_split_rendering_md_struct
Word16 exp_pred_mat_re;
Word32 pred_mat_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; /* Q25 */
Word16 exp_pred_mat_im;
-#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS
Word32 pred_mat_re2[BINAURAL_CHANNELS];
Word16 exp_pred_mat_re2;
-#endif
Word32 gd_fx; /* Q25 */
Word32 gd2_fx; /* Q25 */
Word16 exp_gd;
@@ -255,6 +252,5 @@ typedef struct
Word32 lc3plusDelaySamples;
} SPLIT_REND_WRAPPER;
-#endif
#endif /* ISAR_STAT_H */
diff --git a/lib_isar/lib_isar_post_rend.c b/lib_isar/lib_isar_post_rend.c
index 82c01004e7a93cfd5679e0ca51a8d51931db873e..c784ed1a9aa5d47a4b2e4e07872e558ebe706792 100644
--- a/lib_isar/lib_isar_post_rend.c
+++ b/lib_isar/lib_isar_post_rend.c
@@ -38,14 +38,6 @@
#include "prot_fx.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
-#ifndef SPLIT_REND_WITH_HEAD_ROT
-
-int32_t ISAR_POST_REND_void_func( void )
-{
- return 0;
-}
-
-#else
#include "ivas_prot_rend_fx.h"
#include
@@ -81,18 +73,9 @@ typedef struct
{
const int32_t *pOutSampleRate;
const AUDIO_CONFIG *pOutConfig;
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- const LSSETUP_CUSTOM_STRUCT *pCustomLsOut;
- const EFAP_WRAPPER *pEfapOutWrapper;
-#endif
const ISAR_POST_REND_HeadRotData *pHeadRotData;
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- const RENDER_CONFIG_HANDLE *hhRendererConfig;
-#endif
const int16_t *pSplitRendBFI;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRenderConfig;
-#endif
} rendering_context;
/* Common base for input structs */
@@ -215,10 +198,8 @@ static void convertBitsBufferToInternalBitsBuff(
hBits->codec = outBits.config.codec;
hBits->pose_correction = outBits.config.poseCorrection;
hBits->codec_frame_size_ms = outBits.config.codec_frame_size_ms;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
hBits->isar_frame_size_ms = outBits.config.isar_frame_size_ms;
hBits->lc3plus_highres = outBits.config.lc3plusHighRes;
-#endif
return;
}
@@ -234,10 +215,8 @@ static void convertInternalBitsBuffToBitsBuffer(
hOutBits->config.codec = bits.codec;
hOutBits->config.poseCorrection = bits.pose_correction;
hOutBits->config.codec_frame_size_ms = bits.codec_frame_size_ms;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
hOutBits->config.isar_frame_size_ms = bits.isar_frame_size_ms;
hOutBits->config.lc3plusHighRes = bits.lc3plus_highres;
-#endif
return;
}
@@ -463,9 +442,7 @@ static rendering_context getRendCtx(
ctx.pOutSampleRate = &hIvasRend->sampleRateOut;
ctx.pHeadRotData = &hIvasRend->headRotData;
ctx.pSplitRendBFI = &hIvasRend->splitRendBFI;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
ctx.pSplitRenderConfig = &hIvasRend->splitRenderConfig;
-#endif
return ctx;
}
@@ -487,12 +464,7 @@ static ivas_error getRendInputNumChannels(
static ivas_error updateSplitPostRendPanGains(
input_split_post_rend *inputSplitPostRend,
const AUDIO_CONFIG outConfig,
- ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
- int16_t num_subframes
-#endif
-)
+ ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg )
{
ivas_error error;
rendering_context rendCtx;
@@ -504,30 +476,9 @@ static ivas_error updateSplitPostRendPanGains(
rendCtx = inputSplitPostRend->base.ctx;
isar_renderSplitGetMultiBinPoseData_fx( hRendCfg, &inputSplitPostRend->splitPostRendWrapper.multiBinPoseData, rendCtx.pHeadRotData->sr_pose_pred_axis );
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
config.high_res_mode_enabled = ( hRendCfg->lc3plus_highres != 0 );
-#endif
config.lc3plus_frame_duration_us = hRendCfg->codec_frame_size_ms * 1000;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
config.isar_frame_duration_us = hRendCfg->isar_frame_size_ms * 1000;
-#else
- IF( NE_16( num_subframes, MAX_PARAM_SPATIAL_SUBFRAMES ) )
- {
- IF( hRendCfg->codec == ISAR_SPLIT_REND_CODEC_LC3PLUS )
- {
- config.ivas_frame_duration_us = ( hRendCfg->poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ? config.lc3plus_frame_duration_us * num_subframes : 20000;
- }
- ELSE
- {
- config.ivas_frame_duration_us = ( hRendCfg->poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ? config.lc3plus_frame_duration_us : 20000;
- }
- iNumLCLDIterationsPerFrame = 1;
- }
- ELSE
- {
- config.ivas_frame_duration_us = 20000;
- }
-#endif
IF( GT_16( hRendCfg->codec_frame_size_ms, 0 ) )
{
@@ -572,12 +523,7 @@ static ivas_error setRendInputActiveSplitPostRend(
void *input,
const AUDIO_CONFIG inConfig,
const IVAS_REND_InputId id,
- ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
- const int16_t num_subframes
-#endif
-)
+ ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg )
{
ivas_error error;
rendering_context rendCtx;
@@ -597,12 +543,7 @@ static ivas_error setRendInputActiveSplitPostRend(
inputSplitPostRend->numCachedSamples = 0;
- if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
- num_subframes
-#endif
- ) ) != IVAS_ERR_OK )
+ if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -928,12 +869,7 @@ ivas_error ISAR_POST_REND_AddInput(
Word32 maxNumInputsOfType;
void *inputsArray;
Word32 inputStructSize;
- ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, ISAR_SPLIT_REND_CONFIG_DATA *
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
- int16_t
-#endif
- );
+ ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, ISAR_SPLIT_REND_CONFIG_DATA * );
Word32 inputIndex;
/* Validate function arguments */
@@ -961,12 +897,7 @@ ivas_error ISAR_POST_REND_AddInput(
}
*inputId = makeInputId( inConfig, inputIndex );
- if ( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, &hIvasRend->splitRenderConfig
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ,
- hIvasRend->num_subframes
-#endif
- ) ) != IVAS_ERR_OK )
+ if ( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, &hIvasRend->splitRenderConfig ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -1159,9 +1090,7 @@ ivas_error ISAR_POST_REND_InitConfig(
hIvasRend->splitRenderConfig.hq_mode = 0;
hIvasRend->splitRenderConfig.codec_delay_ms = 0;
hIvasRend->splitRenderConfig.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
hIvasRend->splitRenderConfig.isar_frame_size_ms = 0; /* 0 means "use default for selected codec" */
-#endif
hIvasRend->splitRenderConfig.codec = ISAR_SPLIT_REND_CODEC_DEFAULT;
hIvasRend->splitRenderConfig.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB;
hIvasRend->splitRenderConfig.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT;
@@ -1194,9 +1123,7 @@ Word16 ISAR_POST_REND_GetRenderConfig(
splitRenderConfig->hq_mode = 0;
splitRenderConfig->codec_delay_ms = 0;
splitRenderConfig->codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
splitRenderConfig->isar_frame_size_ms = 0; /* 0 means "use default for selected codec" */
-#endif
splitRenderConfig->codec = ISAR_SPLIT_REND_CODEC_DEFAULT;
splitRenderConfig->poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB;
splitRenderConfig->rendererSelection = hRCin.rendererSelection;
@@ -1310,18 +1237,11 @@ static ivas_error splitBinLc3plusDecode(
ISAR_SPLIT_POST_REND_WRAPPER *hSplitBin,
ISAR_SPLIT_REND_BITS_HANDLE bits,
Word32 outputBuffer[BINAURAL_CHANNELS][L_FRAME48k],
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ISAR_SPLIT_REND_POSE_CORRECTION_MODE pose_correction,
-#endif
const int16_t SplitRendBFI )
{
ivas_error error;
Word32 *channel_ptrs[MAX_HEAD_ROT_POSES * 2];
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
Word32 lc3plusBitstreamSize;
-#else
- Word32 lc3plusBitrateId, lc3plusBitstreamSize;
-#endif
push_wmops( "splitBinLc3plusDecode" );
assert( hSplitBin->hLc3plusDec != NULL );
@@ -1338,15 +1258,9 @@ static ivas_error splitBinLc3plusDecode(
{
++bits->bits_read;
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
/* Size is in bytes */
assert( ( bits->bits_written - bits->bits_read ) % 8 == 0 );
lc3plusBitstreamSize = ( bits->bits_written - bits->bits_read ) / 8;
-#else
- /* Read LC3plus bitstream size info */
- lc3plusBitrateId = ISAR_SPLIT_REND_BITStream_read_int32( bits, 8 );
- lc3plusBitstreamSize = isar_get_lc3plus_size_from_id( (Word8) lc3plusBitrateId, pose_correction, (Word16) ( hSplitBin->hLc3plusDec->config.ivas_frame_duration_us / 1000 ) );
-#endif
if ( ( error = ISAR_LC3PLUS_DEC_Decode( hSplitBin->hLc3plusDec, &bits->bits_buf[bits->bits_read / 8], lc3plusBitstreamSize, channel_ptrs ) ) != IVAS_ERR_OK )
{
@@ -1394,9 +1308,6 @@ static ivas_error renderSplitBinauralWithPostRot(
Word16 Q_cldfb_final[MAX_PARAM_SPATIAL_SUBFRAMES] = { 0 };
Word16 Q_out[MAX_PARAM_SPATIAL_SUBFRAMES][BINAURAL_CHANNELS] = { 0 };
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- uint32_t ivas_frame_duration_us;
-#endif
Word16 iNumBlocksPerFrame, iNumLCLDIterationsPerFrame;
const ISAR_POST_REND_HeadRotData *pHeadRotData;
@@ -1404,24 +1315,15 @@ static ivas_error renderSplitBinauralWithPostRot(
push_wmops( "renderSplitBinauralWithPostRot" );
error = IVAS_ERR_OK;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
if ( outAudio.config.numSamplesPerChannel / *splitBinInput->base.ctx.pOutSampleRate > splitBinInput->hBits->config.isar_frame_size_ms )
{
return IVAS_ERR_INTERNAL_FATAL;
}
-#endif
pHeadRotData = splitBinInput->base.ctx.pHeadRotData;
hSplitBin = &splitBinInput->splitPostRendWrapper;
convertBitsBufferToInternalBitsBuff( *splitBinInput->hBits, &bits );
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ivas_frame_duration_us = 20000;
- if ( splitBinInput->splitPostRendWrapper.hLc3plusDec != NULL )
- {
- ivas_frame_duration_us = splitBinInput->splitPostRendWrapper.hLc3plusDec->config.isar_frame_duration_us;
- }
-#endif
iNumLCLDIterationsPerFrame = 1;
iNumBlocksPerFrame = CLDFB_NO_COL_MAX;
@@ -1466,13 +1368,7 @@ static ivas_error renderSplitBinauralWithPostRot(
{
isPostRendInputCldfb = 1;
}
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
numSamplesPerChannelCacheSize = (int16_t) ( *splitBinInput->base.ctx.pOutSampleRate * bits.isar_frame_size_ms / 1000 ) - outBufNumSamplesPerChannel;
-#else
- preRendFrameSize_ms = (int16_t) ( ivas_frame_duration_us ) / 1000;
-
- numSamplesPerChannelCacheSize = (int16_t) ( *splitBinInput->base.ctx.pOutSampleRate * ( preRendFrameSize_ms - bits.codec_frame_size_ms ) / 1000 );
-#endif
outBufNumColPerChannel = MAX_PARAM_SPATIAL_SUBFRAMES;
numColPerChannelCacheSize = sub( DEPR_i_mult( iNumBlocksPerFrame, iNumLCLDIterationsPerFrame ), outBufNumColPerChannel );
@@ -1519,9 +1415,6 @@ static ivas_error renderSplitBinauralWithPostRot(
Q_out[sf_idx][0] = 0;
Q_out[sf_idx][1] = 0;
if ( ( error = splitBinLc3plusDecode( hSplitBin, &bits, tmpCrendBuffer_fx,
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- bits.pose_correction,
-#endif
SplitRendBFI ) ) != IVAS_ERR_OK ) // Q0
{
return error;
@@ -1579,11 +1472,7 @@ static ivas_error renderSplitBinauralWithPostRot(
copyBufferTo2dArray_fx( splitBinInput->base.inputBuffer, tmpCrendBuffer_fx );
IF( splitBinInput->numCachedSamples == 0 )
{
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
preRendFrameSize_ms = splitBinInput->base.ctx.pSplitRenderConfig->isar_frame_size_ms;
-#else
- preRendFrameSize_ms = (int16_t) ( ivas_frame_duration_us ) / 1000;
-#endif
numSamplesPerChannelCacheSize = (Word16) ( *splitBinInput->base.ctx.pOutSampleRate * preRendFrameSize_ms / 1000 );
numSamplesPerChannelCacheSize -= outAudio.config.numSamplesPerChannel;
splitBinInput->numCachedSamples = numSamplesPerChannelCacheSize;
@@ -1877,11 +1766,9 @@ ivas_error ISAR_REND_SetSplitRendBitstreamHeader(
const ISAR_SPLIT_REND_CODEC codec, /* o: codec setting */
const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, /* o: pose correction mode */
const int16_t codec_frame_size_ms /* i: codec frame size setting */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
,
const int16_t isar_frame_size_ms, /* i: isar codec frame size setting */
const int16_t lc3plus_highres /* i: LC3plus Hig-Res setting. Ignored if codec is not LC3plus */
-#endif
)
{
IF( hIvasRend == NULL )
@@ -1889,14 +1776,10 @@ ivas_error ISAR_REND_SetSplitRendBitstreamHeader(
return IVAS_ERR_UNEXPECTED_NULL_POINTER;
}
hIvasRend->splitRenderConfig.codec = codec;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
hIvasRend->splitRenderConfig.isar_frame_size_ms = isar_frame_size_ms;
-#endif
hIvasRend->splitRenderConfig.codec_frame_size_ms = codec_frame_size_ms;
hIvasRend->splitRenderConfig.poseCorrectionMode = poseCorrection;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
hIvasRend->splitRenderConfig.lc3plus_highres = lc3plus_highres;
-#endif
return IVAS_ERR_OK;
}
@@ -1924,6 +1807,3 @@ int32_t ISAR_POST_REND_GetCntFramesLimited(
return hIvasRend->hLimiter->cnt_frames_limited;
}
#endif
-
-
-#endif
diff --git a/lib_isar/lib_isar_post_rend.h b/lib_isar/lib_isar_post_rend.h
index ef437eaa3a314b6808545e3260c9207cdf5c8466..70b46f57cc08d3f674b9b3c199e2bfa7733856de 100644
--- a/lib_isar/lib_isar_post_rend.h
+++ b/lib_isar/lib_isar_post_rend.h
@@ -36,11 +36,6 @@
#include "common_api_types.h"
#include
-#ifndef SPLIT_REND_WITH_HEAD_ROT
-
-int32_t ISAR_POST_REND_void_func( void );
-
-#else
/*---------------------------------------------------------------------*
* Renderer constants
@@ -61,10 +56,8 @@ typedef struct
ISAR_SPLIT_REND_CODEC codec;
ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection;
int16_t codec_frame_size_ms;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int16_t isar_frame_size_ms;
int16_t lc3plusHighRes;
-#endif
} ISAR_POST_REND_BitstreamBufferConfig;
typedef struct
@@ -200,11 +193,9 @@ ivas_error ISAR_REND_SetSplitRendBitstreamHeader(
const ISAR_SPLIT_REND_CODEC codec, /* o: codec setting */
const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, /* o: pose correction mode */
const int16_t codec_frame_size_ms /* i: codec frame size setting */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
,
const int16_t isar_frame_size_ms, /* i: isar frame size setting */
const int16_t lc3plus_highres /* i: LC3plus Hig-Res setting. Ignored if codec is not LC3plus */
-#endif
);
@@ -218,7 +209,6 @@ int32_t ISAR_POST_REND_GetCntFramesLimited(
);
#endif
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
/* clang-format on */
diff --git a/lib_isar/lib_isar_pre_rend.c b/lib_isar/lib_isar_pre_rend.c
index fa3462fdc7a0f2ac8cb5003383f5938b244603ea..13ae12ac60eeb49a38c2b855acda80f49ed532c5 100644
--- a/lib_isar/lib_isar_pre_rend.c
+++ b/lib_isar/lib_isar_pre_rend.c
@@ -47,14 +47,6 @@
#include "wmc_auto.h"
-#ifndef SPLIT_REND_WITH_HEAD_ROT
-int32_t ISAR_PRE_REND_void_func( void )
-{
- return 0;
-}
-
-#else
-
/*-------------------------------------------------------------------*
* Local constants
*-------------------------------------------------------------------*/
@@ -83,11 +75,7 @@ ivas_error ISAR_PRE_REND_open(
const Word32 OutSampleRate,
const Word16 cldfb_in_flag,
const Word16 pcm_out_flag,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const IVAS_RENDER_FRAMESIZE ivas_frame_size, /* i: IVAS frame size */
-#else
- const int16_t num_subframes, /* i: number of subframes */
-#endif
const int16_t mixed_td_cldfb_flag )
{
ivas_error error, ch, num_ch;
@@ -95,18 +83,10 @@ ivas_error ISAR_PRE_REND_open(
Word16 cldfb_in_flag_local = cldfb_in_flag;
if ( ( error = isar_split_rend_choose_default_codec( &( pSplitRendConfig->codec ),
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
&pSplitRendConfig->isar_frame_size_ms,
-#endif
&pSplitRendConfig->codec_frame_size_ms,
cldfb_in_flag_local,
- pcm_out_flag, (int16_t)
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ivas_frame_size
-#else
- num_subframes
-#endif
- ) ) != IVAS_ERR_OK )
+ pcm_out_flag, (int16_t) ivas_frame_size ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -192,12 +172,7 @@ ivas_error ISAR_PRE_REND_open(
IF( EQ_16( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) )
{
if ( ( error = split_renderer_open_lc3plus( hSplitRendWrapper, pSplitRendConfig, OutSampleRate,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
- ivas_frame_size
-#else
- num_subframes
-#endif
- ) ) != IVAS_ERR_OK )
+ ivas_frame_size ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -252,7 +227,6 @@ void ISAR_PRE_REND_close(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
IF( hSplitBinRend->hCldfbHandles->cldfbSyn[ch] != NULL )
@@ -261,7 +235,6 @@ void ISAR_PRE_REND_close(
hSplitBinRend->hCldfbHandles->cldfbSyn[ch] = NULL;
}
}
-#endif
free( hSplitBinRend->hCldfbHandles );
hSplitBinRend->hCldfbHandles = NULL;
@@ -323,9 +296,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
const IVAS_QUATERNION headPosition,
const Word32 SplitRendBitRate,
ISAR_SPLIT_REND_CODEC splitCodec,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const Word16 isar_frame_size_ms, /* i: ISAR framesize */
-#endif
Word16 codec_frame_size_ms,
ISAR_SPLIT_REND_BITS_HANDLE pBits,
Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
@@ -340,11 +311,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
Word16 *Q_out )
{
ivas_error error;
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
int32_t bit_len, target_md_bits, available_bits, tmp_32;
-#else
- Word32 bit_len, target_md_bits, actual_md_bits, available_bits, tmp_32;
-#endif
Word16 q1 = 31, q2 = 31, q_final, Q_cldfb, tmp, tmp_e;
Word16 i, j;
error = IVAS_ERR_OK;
@@ -369,9 +336,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
IF( EQ_16( cldfb_in_flag, 0 ) )
{
error = isar_renderMultiTDBinToSplitBinaural( hSplitBin, headPosition, SplitRendBitRate,
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
isar_frame_size_ms,
-#endif
codec_frame_size_ms, pBits, max_bands, pOutput_fx, Q_out[0], low_res_pre_rend_rot, pcm_out_flag, ro_md_flag );
Q_out[1] = Q_out[0];
@@ -390,16 +355,10 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
move16();
}
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- actual_md_bits = pBits->bits_written;
-#endif
IF( hSplitBin->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB )
{
target_md_bits = isar_get_split_rend_md_target_brate( SplitRendBitRate, pcm_out_flag ) * L_FRAME48k / 48000;
-#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS
- actual_md_bits = pBits->bits_written;
-#endif
/*float2fix, to be removed*/
Word16 Q_Cldfb_re = 31, Q_Cldfb_im = 31;
move16();
@@ -439,12 +398,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
tmp_e = 0;
tmp_32 = BASOP_Util_Divide3232_Scale_cadence( available_bits, L_mult0( 16, FRAMES_PER_SEC ), &tmp_e );
available_bits = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
available_bits = L_sub( available_bits, pBits->bits_written );
-#else
- actual_md_bits = L_sub( pBits->bits_written, actual_md_bits );
- available_bits = L_sub( available_bits, actual_md_bits );
-#endif
pBits->codec_frame_size_ms = codec_frame_size_ms;
q_final = sub( s_min( Q_buff_re, Q_buff_im ), 2 );
FOR( i = 0; i < hSplitBin->hSplitBinLCLDEnc->iChannels; i++ )
@@ -523,7 +477,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
#ifdef OPT_AVOID_STATE_BUF_RESCALE
cldfbSynthesis_ivas_fx( Cldfb_In_BinReal_p_fx, Cldfb_In_BinImag_p_fx, pOutput_fx[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * num_slots, 0, 0, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); // Q_cldfb - 1
#else
- cldfbSynthesis_ivas_fx( Cldfb_In_BinReal_p_fx, Cldfb_In_BinImag_p_fx, pOutput_fx[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * num_slots, 0, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); // Q_cldfb - 1
+ cldfbSynthesis_ivas_fx( Cldfb_In_BinReal_p_fx, Cldfb_In_BinImag_p_fx, pOutput_fx[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * num_slots, 0, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); // Q_cldfb - 1
#endif
Q_out[ch] = sub( Q_cldfb, 1 );
move16();
@@ -532,12 +486,8 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
}
assert( Q_out[0] == Q_out[1] );
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written;
IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, available_bits, pOutput_fx, Q_out[0] ) ) != IVAS_ERR_OK )
-#else
- IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, SplitRendBitRate, pOutput_fx ) ) != IVAS_ERR_OK )
-#endif
{
return error;
}
@@ -638,5 +588,3 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
fclose(fp1);*/
return error;
}
-
-#endif
diff --git a/lib_isar/lib_isar_pre_rend.h b/lib_isar/lib_isar_pre_rend.h
index a4d03e8a59af26e0be87ce0659006e5ea438e6bb..dd0ad575579a2359d68ca2b974dd203c5e6c20ae 100644
--- a/lib_isar/lib_isar_pre_rend.h
+++ b/lib_isar/lib_isar_pre_rend.h
@@ -36,22 +36,13 @@
#include "isar_stat.h"
#include "isar_prot.h"
-#ifndef SPLIT_REND_WITH_HEAD_ROT
-
-int32_t ISAR_PRE_REND_void_func( void );
-
-#else
ivas_error ISAR_PRE_REND_open(
SPLIT_REND_WRAPPER *hSplitBinRend, /* i/o: Split renderer pre-renerer handle */
ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, /* i/o: Split renderer pre-renerer config */
const int32_t output_Fs, /* i: output sampling rate */
const int16_t cldfb_in_flag, /* i: Flag to indicate CLDFB or time doamin input */
const int16_t pcm_out_flag, /* i: Flag to indicate PCM output */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const IVAS_RENDER_FRAMESIZE ivas_frame_size, /* i: IVAS frame size */
-#else
- const int16_t num_subframes, /* i: number of subframes */
-#endif
const int16_t mixed_td_cldfb_flag /* i: Flag to indicate combined TD and CLDFB input */
);
@@ -71,9 +62,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
const IVAS_QUATERNION headPosition, /* i: head rotation QUATERNION */
const Word32 SplitRendBitRate, /* i: Split renderer bitrate */
ISAR_SPLIT_REND_CODEC splitCodec, /* i/o: Split renderer codec */
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
const Word16 isar_frame_size_ms, /* i: ISAR framesize */
-#endif
Word16 codec_frame_size_ms, /* i/o: Split renderer codec framesize */
ISAR_SPLIT_REND_BITS_HANDLE pBits, /* i/o: Split renderer bitstream handle */
Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: CLDFB real buffer */
@@ -87,5 +76,4 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
Word16 Q_buff,
Word16 *Q_out );
-#endif
#endif /* LIB_ISAR_PRE_REND_H */
diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c
index ef2c477a3c82d5e42fc9ec596f8d58660070a9e3..369a1d2b4302ba0b542c95696e61c2441e42641b 100644
--- a/lib_rend/ivas_crend_fx.c
+++ b/lib_rend/ivas_crend_fx.c
@@ -71,6 +71,10 @@ ivas_error ivas_hrtf_init(
hHrtf->max_num_ir = 0;
hHrtf->max_num_iterations = 0;
hHrtf->index_frequency_max_diffuse = 0;
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->same_inv_diffuse_weight = 1;
+ move16();
+#endif
move32();
move16();
move16();
@@ -79,10 +83,16 @@ ivas_error ivas_hrtf_init(
FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = 0;
move16();
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = 0;
+ move16();
+#endif
hHrtf->num_iterations[i][j] = 0;
move16();
hHrtf->pIndex_frequency_max[i][j] = NULL;
@@ -101,6 +111,11 @@ ivas_error ivas_hrtf_init(
hHrtf->pOut_to_bin_diffuse_im_fx[j] = NULL;
}
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->init_from_rom = 1;
+ move16();
+#endif
+
return IVAS_ERR_OK;
}
@@ -191,11 +206,7 @@ static ivas_error ivas_rend_initCrend_fx(
test();
test();
- if ( NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
-#endif
- )
+ if ( NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
{
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Encountered unsupported output type in Crend" );
}
@@ -220,8 +231,31 @@ static ivas_error ivas_rend_initCrend_fx(
return IVAS_ERR_INTERNAL_FATAL;
}
- IF( hSetOfHRTF == NULL )
- {
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ test();
+ IF( ( hSetOfHRTF == NULL ) ||
+ ( ( hSetOfHRTF->hHRTF_hrir_combined == NULL ) && ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) && ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ||
+ ( ( hSetOfHRTF->hHRTF_hrir_combined == NULL ) && ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) && ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL ) ) ||
+ ( ( hSetOfHRTF->hHRTF_brir_combined == NULL ) && ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) && ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) ||
+ ( ( hSetOfHRTF->hHRTF_hrir_foa == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_FOA ) ) ||
+ ( ( hSetOfHRTF->hHRTF_hrir_hoa2 == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_HOA2 ) ) ||
+ ( ( hSetOfHRTF->hHRTF_hrir_hoa3 == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_HOA3 ) ) )
+ {
+ hHrtf->init_from_rom = 1;
+ move16();
IF( EQ_32( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) )
{
hHrtf->max_num_ir = sub( hHrtf->max_num_ir, 1 ); /* subtract LFE */
@@ -390,6 +424,7 @@ static ivas_error ivas_rend_initCrend_fx(
IF( EQ_32( output_Fs, 48000 ) )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[tmp]; // Q15
@@ -399,11 +434,14 @@ static ivas_error ivas_rend_initCrend_fx(
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[tmp]; // Q15
}
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[j][tmp];
+#endif
hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_48kHz[tmp][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[tmp][j];
@@ -412,6 +450,9 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[j][tmp];
+#endif
hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_48kHz[tmp][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[tmp][j];
@@ -426,6 +467,7 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE IF( EQ_32( output_Fs, 32000 ) )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[tmp]; // Q15
@@ -435,11 +477,14 @@ static ivas_error ivas_rend_initCrend_fx(
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[tmp]; // Q15
}
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[j][tmp];
+#endif
hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_32kHz[tmp][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[tmp][j];
@@ -448,6 +493,9 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[j][tmp];
+#endif
hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_32kHz[tmp][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[tmp][j];
@@ -462,6 +510,7 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE IF( EQ_32( output_Fs, 16000 ) )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[tmp]; // Q15
@@ -471,11 +520,14 @@ static ivas_error ivas_rend_initCrend_fx(
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[tmp]; // Q15
}
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[j][tmp];
+#endif
hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_16kHz[tmp][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[tmp][j];
@@ -484,6 +536,9 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[j][tmp];
+#endif
hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_16kHz[tmp][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[tmp][j];
@@ -517,11 +572,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_48kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[i][j];
@@ -557,11 +617,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_32kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[i][j];
@@ -598,11 +663,17 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15
move16();
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_16kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[i][j];
@@ -646,11 +717,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_48kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[i][j];
@@ -686,11 +762,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_32kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[i][j];
@@ -727,11 +808,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_16kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[i][j];
@@ -775,11 +861,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_48kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[i][j];
@@ -815,11 +906,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_32kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[i][j];
@@ -856,11 +952,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15
+ move16();
+#endif
hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_16kHz[i][j];
hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[i][j];
@@ -903,6 +1004,7 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE
{
+ hHrtf->init_from_rom = 0;
IF( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED )
{
hHrtf->max_num_ir = sub( hHrtf->max_num_ir, 1 ); /* subtract LFE */
@@ -912,12 +1014,20 @@ static ivas_error ivas_rend_initCrend_fx(
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
+ IF( hSetOfHRTF->hHRTF_brir_combined == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Invalid command wrong output format" );
+ }
hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_brir_combined->latency_s_fx; // Q31
hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_brir_combined->max_num_iterations;
hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_brir_combined->index_frequency_max_diffuse;
}
ELSE
{
+ IF( hSetOfHRTF->hHRTF_hrir_combined == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Invalid command wrong output format" );
+ }
hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_combined->latency_s_fx; // Q31
hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_combined->max_num_iterations;
hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_combined->index_frequency_max_diffuse;
@@ -977,6 +1087,7 @@ static ivas_error ivas_rend_initCrend_fx(
return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Channel configuration not specified!\n\n" );
}
move16();
+#ifndef FIX_INV_DIFFUSE_WEIGHT
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
@@ -987,11 +1098,15 @@ static ivas_error ivas_rend_initCrend_fx(
hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight_fx[tmp]; // Q15
}
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_brir_combined->inv_diffuse_weight_fx[j][tmp];
+ move16();
+#endif
hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_brir_combined->num_iterations[tmp][j];
hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_brir_combined->pIndex_frequency_max[tmp][j];
@@ -1000,6 +1115,10 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight_fx[j][tmp];
+ move16();
+#endif
hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_combined->num_iterations[tmp][j];
hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_combined->pIndex_frequency_max[tmp][j];
@@ -1017,6 +1136,10 @@ static ivas_error ivas_rend_initCrend_fx(
{
IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_HOA3 ) )
{
+ IF( hSetOfHRTF->hHRTF_hrir_hoa3 == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " );
+ }
hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_hoa3->latency_s_fx; // Q31
hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa3->max_num_iterations;
hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa3->index_frequency_max_diffuse;
@@ -1026,11 +1149,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_hoa3->inv_diffuse_weight_fx[i]; // Q31
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_hoa3->inv_diffuse_weight_fx[j][i];
+ move16();
+#endif
hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_hoa3->num_iterations[i][j];
hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_hoa3->pIndex_frequency_max[i][j];
@@ -1057,6 +1185,10 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_HOA2 ) )
{
+ IF( hSetOfHRTF->hHRTF_hrir_hoa2 == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " );
+ }
hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_hoa2->latency_s_fx; // Q31
hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa2->max_num_iterations;
hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa2->index_frequency_max_diffuse;
@@ -1066,11 +1198,16 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_hoa2->inv_diffuse_weight_fx[i]; // Q15
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_hoa2->inv_diffuse_weight_fx[j][i];
+ move16();
+#endif
hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_hoa2->num_iterations[i][j];
hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_hoa2->pIndex_frequency_max[i][j];
@@ -1097,6 +1234,10 @@ static ivas_error ivas_rend_initCrend_fx(
}
ELSE IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_FOA ) )
{
+ IF( hSetOfHRTF->hHRTF_hrir_foa == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " );
+ }
hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_foa->latency_s_fx; // Q31
hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_foa->max_num_iterations;
hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_foa->index_frequency_max_diffuse;
@@ -1106,11 +1247,17 @@ static ivas_error ivas_rend_initCrend_fx(
FOR( i = 0; i < hHrtf->max_num_ir; i++ )
{
+#ifndef FIX_INV_DIFFUSE_WEIGHT
hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_foa->inv_diffuse_weight_fx[i]; // Q31
move16();
-
+#endif
FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_foa->inv_diffuse_weight_fx[j][i];
+ move16();
+#endif
+
hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_foa->num_iterations[i][j];
hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_foa->pIndex_frequency_max[i][j];
@@ -1142,6 +1289,21 @@ static ivas_error ivas_rend_initCrend_fx(
}
}
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hHrtf->same_inv_diffuse_weight = 1;
+ for ( i = 0; i < hHrtf->max_num_ir; i++ )
+ {
+ if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR )
+ {
+ if ( hHrtf->inv_diffuse_weight_fx[0][i] != hHrtf->inv_diffuse_weight_fx[1][i] )
+ {
+ hHrtf->same_inv_diffuse_weight = 0;
+ break;
+ }
+ }
+ }
+#endif
+
pCrend->hHrtfCrend = hHrtf;
return IVAS_ERR_OK;
@@ -1399,19 +1561,12 @@ static ivas_error ivas_er_init_handle(
*------------------------------------------------------------------------*/
ivas_error ivas_rend_initCrendWrapper(
-#ifdef SPLIT_REND_WITH_HEAD_ROT
CREND_WRAPPER_HANDLE *pCrend,
- const int16_t num_poses
-#else
- CREND_WRAPPER_HANDLE *pCrend
-#endif
-)
+ const int16_t num_poses )
{
Word16 i;
CREND_HANDLE hCrend;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 pos_idx;
-#endif
IF( pCrend == NULL )
{
@@ -1430,9 +1585,7 @@ ivas_error ivas_rend_initCrendWrapper(
move16();
( *pCrend )->p_io_qfactor = &( *pCrend )->io_qfactor;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ )
-#endif
{
hCrend = NULL;
IF( ( hCrend = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL )
@@ -1454,8 +1607,15 @@ ivas_error ivas_rend_initCrendWrapper(
}
hCrend->hTrack = NULL;
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hCrend->freq_buffer_re_diffuse_fx[0] = NULL;
+ hCrend->freq_buffer_re_diffuse_fx[1] = NULL;
+ hCrend->freq_buffer_im_diffuse_fx[0] = NULL;
+ hCrend->freq_buffer_im_diffuse_fx[1] = NULL;
+#else
hCrend->freq_buffer_re_diffuse_fx = NULL;
hCrend->freq_buffer_im_diffuse_fx = NULL;
+#endif
hCrend->hReverb = NULL;
hCrend->reflections = NULL;
hCrend->delay_line_rw_index = 0;
@@ -1469,17 +1629,12 @@ ivas_error ivas_rend_initCrendWrapper(
move32();
move32();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
( *pCrend )->hCrend[pos_idx] = hCrend;
-#else
- ( *pCrend )->hCrend = hCrend;
-#endif
}
return IVAS_ERR_OK;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*-------------------------------------------------------------------------
* ivas_rend_openMultiBinCrend()
*
@@ -1495,10 +1650,10 @@ ivas_error ivas_rend_openMultiBinCrend(
{
ivas_error error;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, output_Fs, pMultiBinPoseData->num_poses ) ) != IVAS_ERR_OK )
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, NULL /* hHrtfStatistics */, output_Fs, pMultiBinPoseData->num_poses ) ) != IVAS_ERR_OK )
#else
- if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, output_Fs ) ) != IVAS_ERR_OK )
+ if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, output_Fs, pMultiBinPoseData->num_poses ) ) != IVAS_ERR_OK )
#endif
{
return error;
@@ -1506,7 +1661,6 @@ ivas_error ivas_rend_openMultiBinCrend(
return error;
}
-#endif
/*-------------------------------------------------------------------------
* ivas_rend_openCrend()
@@ -1520,31 +1674,23 @@ ivas_error ivas_rend_openCrend(
const AUDIO_CONFIG outConfig,
RENDER_CONFIG_DATA *hRendCfg,
HRTFS_CREND_HANDLE hSetOfHRTF,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- const Word32 output_Fs,
- const Word16 num_poses
-#else
- const Word32 output_Fs
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ HRTFS_STATISTICS_HANDLE hHrtfStatistics,
#endif
-)
+ const Word32 output_Fs,
+ const Word16 num_poses )
{
Word16 i, subframe_length;
Word32 max_total_ir_len;
HRTFS_HANDLE hHrtf;
CREND_HANDLE hCrend;
ivas_error error;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 pos_idx;
-#endif
error = IVAS_ERR_OK;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( error = ivas_rend_initCrendWrapper( pCrend, num_poses ) ) != IVAS_ERR_OK )
-#else
- IF( NE_32( ( error = ivas_rend_initCrendWrapper( pCrend ) ), IVAS_ERR_OK ) )
-#endif
{
return error;
}
@@ -1559,15 +1705,9 @@ ivas_error ivas_rend_openCrend(
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ )
-#endif
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hCrend = ( *pCrend )->hCrend[pos_idx];
-#else
- hCrend = ( *pCrend )->hCrend;
-#endif
hHrtf = ( *pCrend )->hHrtfCrend;
IF( hHrtf != NULL )
@@ -1602,22 +1742,80 @@ ivas_error ivas_rend_openCrend(
IF( max_total_ir_len > 0 )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ IF( ( hCrend->freq_buffer_re_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" );
+ }
+ IF( hHrtf->same_inv_diffuse_weight == 0 )
+ {
+ IF( ( hCrend->freq_buffer_re_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" );
+ }
+ }
+ ELSE
+ {
+ hCrend->freq_buffer_re_diffuse_fx[1] = NULL;
+ }
+#else
IF( ( hCrend->freq_buffer_re_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL )
{
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" );
}
+#endif
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[0], max_total_ir_len );
+ IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL )
+ {
+ set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[1], max_total_ir_len );
+ }
+#else
set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx, max_total_ir_len );
-
+#endif
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ IF( ( hCrend->freq_buffer_im_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" );
+ }
+ IF( hHrtf->same_inv_diffuse_weight == 0 )
+ {
+ IF( ( hCrend->freq_buffer_im_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" );
+ }
+ }
+ ELSE
+ {
+ hCrend->freq_buffer_im_diffuse_fx[1] = NULL;
+ }
+#else
IF( ( hCrend->freq_buffer_im_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL )
{
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" );
}
+#endif
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[0], max_total_ir_len );
+ IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL )
+ {
+ set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[1], max_total_ir_len );
+ }
+#else
set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx, max_total_ir_len );
+#endif
}
ELSE
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ hCrend->freq_buffer_re_diffuse_fx[0] = NULL;
+ hCrend->freq_buffer_im_diffuse_fx[0] = NULL;
+ hCrend->freq_buffer_re_diffuse_fx[1] = NULL;
+ hCrend->freq_buffer_im_diffuse_fx[1] = NULL;
+#else
hCrend->freq_buffer_re_diffuse_fx = NULL;
hCrend->freq_buffer_im_diffuse_fx = NULL;
+#endif
}
max_total_ir_len = add( extract_l( L_shr( L_add( L_shl( Mult_32_32( hHrtf->latency_s_fx, output_Fs ), 1 ), 1 ), 1 ) ), subframe_length ); /*(int16_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length;*/
@@ -1636,7 +1834,11 @@ ivas_error ivas_rend_openCrend(
IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
{
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) )
+#else
IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, NULL, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) )
+#endif
{
return error;
}
@@ -1691,11 +1893,7 @@ ivas_error ivas_rend_openCrend(
move32();
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
( *pCrend )->hCrend[pos_idx] = hCrend;
-#else
- ( *pCrend )->hCrend = hCrend;
-#endif
}
return IVAS_ERR_OK;
}
@@ -1707,18 +1905,11 @@ ivas_error ivas_rend_openCrend(
*------------------------------------------------------------------------*/
void ivas_rend_closeCrend(
-#ifdef SPLIT_REND_WITH_HEAD_ROT
CREND_WRAPPER_HANDLE *pCrend,
- const Word16 num_poses
-#else
- CREND_WRAPPER_HANDLE *pCrend
-#endif
-)
+ const Word16 num_poses )
{
Word16 i;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 pos_idx;
-#endif
CREND_HANDLE hCrend;
test();
@@ -1732,15 +1923,9 @@ void ivas_rend_closeCrend(
ivas_hrtf_close( &( *pCrend )->hHrtfCrend );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ )
-#endif
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hCrend = ( *pCrend )->hCrend[pos_idx];
-#else
- hCrend = ( *pCrend )->hCrend;
-#endif
IF( hCrend != NULL )
{
FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ )
@@ -1771,7 +1956,31 @@ void ivas_rend_closeCrend(
free( hCrend->lfe_delay_line_fx );
hCrend->lfe_delay_line_fx = NULL;
}
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ IF( hCrend->freq_buffer_re_diffuse_fx[0] != NULL )
+ {
+ free( hCrend->freq_buffer_re_diffuse_fx[0] );
+ hCrend->freq_buffer_re_diffuse_fx[0] = NULL;
+ }
+ IF( hCrend->freq_buffer_im_diffuse_fx[0] != NULL )
+ {
+ free( hCrend->freq_buffer_im_diffuse_fx[0] );
+ hCrend->freq_buffer_im_diffuse_fx[0] = NULL;
+ }
+
+ IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL )
+ {
+ free( hCrend->freq_buffer_re_diffuse_fx[1] );
+ hCrend->freq_buffer_re_diffuse_fx[1] = NULL;
+ }
+
+ IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL )
+ {
+ free( hCrend->freq_buffer_im_diffuse_fx[1] );
+ hCrend->freq_buffer_im_diffuse_fx[1] = NULL;
+ }
+#else
IF( hCrend->freq_buffer_re_diffuse_fx != NULL )
{
free( hCrend->freq_buffer_re_diffuse_fx );
@@ -1782,6 +1991,7 @@ void ivas_rend_closeCrend(
free( hCrend->freq_buffer_im_diffuse_fx );
hCrend->freq_buffer_im_diffuse_fx = NULL;
}
+#endif
IF( hCrend->hTrack != NULL )
{
free( hCrend->hTrack );
@@ -1807,11 +2017,7 @@ void ivas_rend_closeCrend(
}
free( hCrend );
hCrend = NULL;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
( *pCrend )->hCrend[pos_idx] = hCrend;
-#else
- ( *pCrend )->hCrend = hCrend;
-#endif
}
}
@@ -1822,7 +2028,6 @@ void ivas_rend_closeCrend(
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*-------------------------------------------------------------------------
* ivas_rend_closeCldfbRend()
*
@@ -1844,7 +2049,6 @@ void ivas_rend_closeCldfbRend(
return;
}
-#endif
/*-----------------------------------------------------------------------------------------*
* Function ivas_rend_crendConvolver()
@@ -1859,13 +2063,8 @@ static ivas_error ivas_rend_crendConvolver(
Word32 *pcm_in[], // Qx
Word32 *pcm_out[], // Qx
const Word32 output_Fs,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
const Word16 i_ts,
- const Word16 pos_idx
-#else
- const Word16 i_ts
-#endif
-)
+ const Word16 pos_idx )
{
Word16 i, j, k, m;
Word16 subframe_length, idx_in;
@@ -1875,6 +2074,9 @@ static ivas_error ivas_rend_crendConvolver(
Word16 nchan_in, nchan_out;
const Word32 *pIn;
Word32 *pFreq_buf_re, *pFreq_buf_im;
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ Word32 *pFreq_buf2_re, *pFreq_buf2_im;
+#endif
const Word32 *pFreq_filt_re, *pFreq_filt_im;
Word32 pOut[L_FRAME48k * 2];
Word32 tmp_out_re[L_FRAME48k];
@@ -1882,11 +2084,7 @@ static ivas_error ivas_rend_crendConvolver(
CREND_HANDLE hCrend;
ivas_error error;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hCrend = pCrend->hCrend[pos_idx];
-#else
- hCrend = pCrend->hCrend;
-#endif
IF( NE_32( ( error = getAudioConfigNumChannels( inConfig, &nchan_in ) ), IVAS_ERR_OK ) )
{
@@ -1921,8 +2119,18 @@ static ivas_error ivas_rend_crendConvolver(
IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ set32_fx( &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse], 0, subframe_length );
+ set32_fx( &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse], 0, subframe_length );
+ if ( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 )
+ {
+ set32_fx( &hCrend->freq_buffer_re_diffuse_fx[1][offset_diffuse], 0, subframe_length );
+ set32_fx( &hCrend->freq_buffer_im_diffuse_fx[1][offset_diffuse], 0, subframe_length );
+ }
+#else
set32_fx( &hCrend->freq_buffer_re_diffuse_fx[offset_diffuse], 0, subframe_length );
set32_fx( &hCrend->freq_buffer_im_diffuse_fx[offset_diffuse], 0, subframe_length );
+#endif
}
i = 0;
@@ -1935,6 +2143,38 @@ static ivas_error ivas_rend_crendConvolver(
{
IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 )
{
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ IF( pCrend->hHrtfCrend->same_inv_diffuse_weight )
+ {
+ pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse];
+ pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse];
+ pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset];
+ pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset];
+
+ FOR( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ )
+ {
+ pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i];
+ pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i];
+ }
+ }
+ ELSE
+ {
+ pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse];
+ pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse];
+ pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse_fx[1][offset_diffuse];
+ pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse_fx[1][offset_diffuse];
+ pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset];
+ pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset];
+
+ for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ )
+ {
+ pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i];
+ pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i];
+ pFreq_buf2_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i];
+ pFreq_buf2_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i];
+ }
+ }
+#else
pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[offset_diffuse]; // Qx
pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[offset_diffuse]; // Qx
pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; // Qx
@@ -1946,6 +2186,7 @@ static ivas_error ivas_rend_crendConvolver(
move32();
move32();
}
+#endif
}
pFreq_buf_re = &hCrend->freq_buffer_re_fx[i][offset]; // Qx
pFreq_buf_im = &hCrend->freq_buffer_im_fx[i][offset]; // Qx
@@ -2006,9 +2247,21 @@ static ivas_error ivas_rend_crendConvolver(
index_in = index_in % pCrend->hHrtfCrend->num_iterations_diffuse[0];
move16();
offset_diffuse = L_mult0( index_in, subframe_length );
-
- pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[offset_diffuse]; // Qx
- pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[offset_diffuse]; // Qx
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+ if ( pCrend->hHrtfCrend->same_inv_diffuse_weight )
+ {
+ pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse];
+ pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse];
+ }
+ else
+ {
+ pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[j][offset_diffuse];
+ pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[j][offset_diffuse];
+ }
+#else
+ pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[offset_diffuse]; // Qx
+ pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[offset_diffuse]; // Qx
+#endif
pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_re_fx[j][offset]; // Q31
pFreq_filt_im = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_im_fx[j][offset]; // Q31
FOR( k = 0; k < pCrend->hHrtfCrend->pIndex_frequency_max_diffuse[j][m]; k++ )
@@ -2072,11 +2325,8 @@ ivas_error ivas_rend_crendProcessSubframe(
Word32 *output[], /* i/o: input/output audio channels Qx */
const Word16 n_samples_to_render, /* i : output frame length per channel */
const Word32 output_Fs /* i : output sampling rate */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
,
- const Word16 pos_idx
-#endif
-)
+ const Word16 pos_idx )
{
Word16 subframe_idx, subframe_len;
Word16 nchan_out, nchan_in, ch, first_sf, last_sf, slot_size, slots_to_render;
@@ -2087,11 +2337,7 @@ ivas_error ivas_rend_crendProcessSubframe(
ivas_error error;
Word8 combinedOrientationEnabled;
CREND_HANDLE hCrend;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hCrend = pCrend->hCrend[pos_idx];
-#else
- hCrend = pCrend->hCrend;
-#endif
combinedOrientationEnabled = 0;
move16();
@@ -2222,16 +2468,11 @@ ivas_error ivas_rend_crendProcessSubframe(
test();
IF( EQ_32( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) || EQ_32( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( NE_32( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, tc_local_fx, p_pcm_tmp_fx, output_Fs, 0, pos_idx ) ), IVAS_ERR_OK ) )
-#else
- IF( NE_32( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, tc_local_fx, p_pcm_tmp_fx, output_Fs, 0 ) ), IVAS_ERR_OK ) )
-#endif
{
return error;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( pCrend->hCrend[0]->hReverb != NULL )
{
IF( NE_32( ( error = ivas_reverb_process_fx( pCrend->hCrend[pos_idx]->hReverb, inConfig, 1, tc_local_fx, p_pcm_tmp_fx, 0 ) ), IVAS_ERR_OK ) )
@@ -2239,15 +2480,6 @@ ivas_error ivas_rend_crendProcessSubframe(
return error;
}
}
-#else
- IF( pCrend->hCrend->hReverb != NULL )
- {
- IF( NE_32( ( error = ivas_reverb_process_fx( pCrend->hCrend->hReverb, inConfig, 1, tc_local_fx, p_pcm_tmp_fx, 0 ) ), IVAS_ERR_OK ) )
- {
- return error;
- }
- }
-#endif
FOR( ch = 0; ch < nchan_in; ch++ )
{
@@ -2273,11 +2505,7 @@ ivas_error ivas_rend_crendProcessSubframe(
ivas_combined_orientation_update_index( hCombinedOrientationData, subframe_len );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( pCrend->hCrend[0]->hReverb != NULL )
-#else
- IF( pCrend->hCrend->hReverb != NULL )
-#endif
{
*pCrend->p_io_qfactor = sub( *pCrend->p_io_qfactor, 2 );
move16();
@@ -2308,7 +2536,6 @@ ivas_error ivas_rend_crendProcessSubframe(
return IVAS_ERR_OK;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*-----------------------------------------------------------------------------------------*
* Function ivas_rend_crend_ProcessSplitBin()
*
@@ -2647,4 +2874,3 @@ ivas_error ivas_rend_crendProcessSubframesSplitBin(
return IVAS_ERR_OK;
}
-#endif
diff --git a/lib_rend/ivas_dirac_ana_fx.c b/lib_rend/ivas_dirac_ana_fx.c
index 8124c4967cdeac890fdaf3c55d94f20489afe838..c2430d008f8f644170650776b450055cffa1c46b 100644
--- a/lib_rend/ivas_dirac_ana_fx.c
+++ b/lib_rend/ivas_dirac_ana_fx.c
@@ -578,7 +578,11 @@ static void ivas_dirac_dmx_fx(
v_add_fx( data_in_fx[0], data_in_fx[1], data_out_fx[0], input_frame );
v_multc_fixed( data_out_fx[0], ONE_IN_Q30, data_out_fx[0], input_frame ); // ONE_IN_Q30 = 0.5* ONE_IN_Q31
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( data_in_fx[0], data_in_fx[1], data_out_fx[1], input_frame );
+#else /* VEC_ARITH_OPT_v1 */
v_sub_fixed( data_in_fx[0], data_in_fx[1], data_out_fx[1], input_frame, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
v_multc_fixed( data_out_fx[1], ONE_IN_Q30, data_out_fx[1], input_frame );
FOR( i = 0; i < nchan_transport; i++ )
diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
index 32bcb732e538ffec57d83efb36a1a19a8b5fa9d0..a1d3a4908446ee80905c39b4f287499fb711dc1d 100644
--- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
+++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
@@ -108,36 +108,32 @@ static void ivas_dirac_dec_binaural_internal_fx( Decoder_Struct *st_ivas, COMBIN
static void ivas_dirac_dec_decorrelate_slot_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, const Word16 num_freq_bands, const Word16 slot, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME] /*q_inp*/[CLDFB_NO_CHANNELS_MAX], Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word16 q_inp, Word32 decRe[][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 decIm[] /*q_inp*/[CLDFB_NO_CHANNELS_MAX] );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
static void ivas_dirac_dec_binaural_formulate_input_covariance_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const Word16 subframe, Word32 *subFrameTotalEne, Word16 *subFrameTotalEne_e, Word32 *IIReneLimiter, Word16 q );
static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, const SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, const PARAMBIN_REND_CONFIG_HANDLE hConfig, Word32 Rmat[3][3], const Word16 subframe, const Word16 isHeadtracked, const Word32 *subFrameTotalEne, Word16 *subFrameTotalEne_e, const Word32 *IIReneLimiter, const MASA_ISM_DATA_HANDLE hMasaIsmData );
-#else
-static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, Word32 inRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q*/, Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q*/, Word32 Rmat_fx[3][3] /*Q30*/, const Word16 subframe, const Word16 isHeadtracked, const MASA_ISM_DATA_HANDLE hMasaIsmData, Word16 q );
-#endif
static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, const Word16 max_band_decorr, Word32 Rmat[3][3] /*Q30*/, const Word16 subframe, const Word16 isHeadtracked, const Word16 nchanSeparateChannels, const MASA_ISM_DATA_HANDLE hMasaIsmData );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
static void ivas_dirac_dec_binaural_process_output_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, HANDLE_CLDFB_FILTER_BANK cldfbSynDec[MAX_OUTPUT_CHANNELS], Word32 *output_fx[] /*q_out*/, Word16 *q_out, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, const Word16 q_inp, const Word16 max_band_decorr, const Word16 numInChannels, const Word16 processReverb, const Word16 subframe, const Word16 q_mat, Word32 outRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 outIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 reverbRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 reverbIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 decorrRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 decorrIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word16 *Q_inp_mix, const Word8 recompute );
-#else
-static void ivas_dirac_dec_binaural_process_output_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, HANDLE_CLDFB_FILTER_BANK cldfbSynDec[MAX_OUTPUT_CHANNELS], Word32 *output_fx[] /*q_out*/, Word16 *q_out, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, const Word16 q_inp, const Word16 max_band_decorr, const Word16 numInChannels, const Word16 processReverb, const Word16 subframe, const Word16 q_mat );
-#endif
static void adaptTransportSignalsHeadtracked_fx( COMBINED_ORIENTATION_HANDLE hHeadTrackData, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word16 q_inp, const Word16 nBins, const Word16 nSlots, Word32 Rmat[3][3] /*Q30*/ );
static void ivas_dirac_dec_binaural_check_and_switch_transports_headtracked_fx( COMBINED_ORIENTATION_HANDLE hHeadTrackData, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const Word16 nBins, const Word16 nSlots, Word32 Rmat[3][3] /*Q30*/ );
-
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+static void hrtfShGetHrtf_fx( const Word16 bin, const Word16 aziDeg, const Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 useCachedValue, HRTFS_PARAMBIN_HANDLE hHrtfParambin );
+#else
static void hrtfShGetHrtf_fx( const Word16 bin, const Word16 aziDeg, const Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 useCachedValue );
-static void getDirectPartGains_fx( const Word16 bin, Word16 aziDeg, Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, const UWord8 renderStereoOutputInsteadOfBinaural, Word32 Rmat[3][3] /*Q30*/, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 isHeadtracked );
+#endif
-#ifdef SPLIT_REND_WITH_HEAD_ROT
-static void ivas_masa_ext_rend_parambin_internal_fx( MASA_EXT_REND_HANDLE hMasaExtRend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, Word32 *output_fx[] /*Q11*/, const Word16 subframe, const SPLIT_REND_WRAPPER *hSplitRendWrapper, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] );
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+static void getDirectPartGains_fx( const Word16 bin, Word16 aziDeg, Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, const UWord8 renderStereoOutputInsteadOfBinaural, Word32 Rmat[3][3] /*Q30*/, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 isHeadtracked, HRTFS_PARAMBIN_HANDLE hHrtfParambin );
#else
-static void ivas_masa_ext_rend_parambin_internal_fx( MASA_EXT_REND_HANDLE hMasaExtRend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, Word32 *output_fx[] /*Q11*/, const Word16 subframe );
+static void getDirectPartGains_fx( const Word16 bin, Word16 aziDeg, Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, const UWord8 renderStereoOutputInsteadOfBinaural, Word32 Rmat[3][3] /*Q30*/, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 isHeadtracked );
#endif
+static void ivas_masa_ext_rend_parambin_internal_fx( MASA_EXT_REND_HANDLE hMasaExtRend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, Word32 *output_fx[] /*Q11*/, const Word16 subframe, const SPLIT_REND_WRAPPER *hSplitRendWrapper, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] );
+
static void formulate2x2MixingMatrix_fx( Word32 Ein1_fx /*q_Ein*/, Word32 Ein2_fx /*q_Ein*/, Word16 q_Ein, Word32 CinRe_fx /*q_Cin*/, Word32 CinIm_fx /*q_Cin*/, Word16 q_Cin, Word32 Eout1_fx /*q_Eout*/, Word32 Eout2_fx /*q_Eout*/, Word16 q_Eout, Word32 CoutRe_fx /*q_Cout*/, Word32 CoutIm_fx /*q_Cout*/, Word16 q_Cout, Word32 Q_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*Q31*/, Word32 Mre_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_M*/, Word32 Mim_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_M*/, Word16 *q_M, const Word16 regularizationFactor_fx /*Q14*/ );
static void matrixMul_fx( Word32 Are[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_A*/, Word32 Aim[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_A*/, Word16 *q_A, Word32 Bre[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_B*/, Word32 Bim[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_B*/, Word16 *q_B, Word32 outRe[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_out*/, Word32 outIm[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_out*/, Word16 *q_out );
@@ -161,8 +157,12 @@ static void matrixTransp2Mul_fx(
* Initialize parametric binaural renderer
*------------------------------------------------------------------------*/
ivas_error ivas_dirac_dec_init_binaural_data_fx(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
+ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ HRTFS_PARAMBIN_HANDLE *phHrtfParambin /* i : HRTF structure for rendering */
+#else
HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : HRTF structure for rendering */
+#endif
)
{
DIRAC_DEC_BIN_HANDLE hDiracDecBin;
@@ -177,7 +177,6 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx(
Word16 tmp2;
ivas_error error;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 num_poses, pos_idx;
num_poses = 1;
@@ -191,9 +190,6 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx(
{
hDiracDecBin = st_ivas->hDiracDecBin[pos_idx];
move32();
-#else
- hDiracDecBin = st_ivas->hDiracDecBin;
-#endif
IF( hDiracDecBin == NULL )
{
@@ -206,6 +202,9 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx(
hDiracDecBin->hReverb = NULL;
hDiracDecBin->h_freq_domain_decorr_ap_params = NULL;
hDiracDecBin->h_freq_domain_decorr_ap_state = NULL;
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ hDiracDecBin->phHrtfParambin = NULL;
+#endif
}
output_Fs = st_ivas->hDecoderConfig->output_Fs;
@@ -297,7 +296,11 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx(
}
ELSE IF( EQ_32( renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) /* Indication of binaural rendering with room effect */
{
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ Copy32( ( *phHrtfParambin )->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins );
+#else
Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins );
+#endif
hDiracDecBin->q_earlyPartEneCorrection = Q28;
move16();
/* reconfiguration needed when Reverb. parameters are changed -> close and open the handle again */
@@ -309,14 +312,19 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx(
ivas_binaural_reverb_close_fx( &( hDiracDecBin->hReverb ) );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( hDiracDecBin->hReverb == NULL && EQ_16( pos_idx, 0 ) ) /* open reverb only for the main direction */
+ {
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes_fx, ( *phHrtfParambin )->parametricReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) )
#else
- IF( hDiracDecBin->hReverb == NULL )
+ if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes_fx, st_ivas->hHrtfParambin->parametricReverberationEneCorrections_fx ) ) != IVAS_ERR_OK )
#endif
- {
+#else
/* Todo Philips: Room acoustics should be passed here once the underlying part works. Probably enough to pick it from st_ivas but you know best. */
- IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) )
+ if ( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK )
+#endif
{
return error;
}
@@ -349,10 +357,8 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx(
ivas_dirac_dec_decorr_close_fx( &hDiracDecBin->h_freq_domain_decorr_ap_params, &hDiracDecBin->h_freq_domain_decorr_ap_state );
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( pos_idx == 0 ) /* open decorrelator only for the main direction */
{
-#endif
IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( hDiracDecBin->hTdDecorr ), &( hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) )
{
return error;
@@ -379,23 +385,21 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx(
return error;
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
else
{
hDiracDecBin->useTdDecorr = st_ivas->hDiracDecBin[0]->useTdDecorr; /* copy the flag, but the implementation re-uses the decorrelated signal */
}
-#endif
hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); /* Q14 */
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ hDiracDecBin->phHrtfParambin = phHrtfParambin;
+#endif
+
st_ivas->hDiracDecBin[pos_idx] = hDiracDecBin;
}
-#else
- st_ivas->hDiracDecBin = hDiracDecBin;
-#endif
/* allocate transport channels */
IF( st_ivas->hTcBuffer == NULL )
@@ -436,16 +440,13 @@ void ivas_dirac_dec_close_binaural_data(
DIRAC_DEC_BIN_HANDLE *hBinaural /* i/o: decoder DirAC binaural data handle */
)
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
int16_t pos_idx;
-#endif
test();
IF( hBinaural == NULL || *hBinaural == NULL )
{
return;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ )
{
IF( hBinaural[pos_idx] != NULL )
@@ -466,21 +467,6 @@ void ivas_dirac_dec_close_binaural_data(
hBinaural[pos_idx] = NULL;
}
}
-#else
- IF( ( *hBinaural )->hReverb != NULL )
- {
- ivas_binaural_reverb_close_fx( &( ( *hBinaural )->hReverb ) );
- }
-
- ivas_td_decorr_dec_close( &( ( *hBinaural )->hTdDecorr ) );
- IF( ( *hBinaural )->h_freq_domain_decorr_ap_params != NULL )
- {
- ivas_dirac_dec_decorr_close_fx( &( *hBinaural )->h_freq_domain_decorr_ap_params, &( *hBinaural )->h_freq_domain_decorr_ap_state );
- }
-
- free( *hBinaural );
- *hBinaural = NULL;
-#endif
return;
}
@@ -688,7 +674,6 @@ static void ivas_dirac_dec_binaural_internal_fx(
Word16 nBins, offsetSamples;
Word16 i, j;
Word16 q_mat, q_out;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
Word16 pos_idx;
MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData;
Word32 tmp_Cldfb_out_re[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
@@ -704,9 +689,6 @@ static void ivas_dirac_dec_binaural_internal_fx(
Word16 Q_inp_mix;
hDiracDecBin = st_ivas->hDiracDecBin[0];
-#else
- hDiracDecBin = st_ivas->hDiracDecBin;
-#endif
assert( hDiracDecBin );
hSpatParamRendCom = st_ivas->hSpatParamRendCom;
nBins = hSpatParamRendCom->num_freq_bands;
@@ -830,17 +812,15 @@ static void ivas_dirac_dec_binaural_internal_fx(
IF( st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag )
{
Word16 numCoreBands, b;
- Word16 slotInFrame;
numCoreBands = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->numCoreBands;
move16();
- slotInFrame = add( hSpatParamRendCom->slots_rendered, slot );
generate_masking_noise_dirac_ivas_fx( st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom,
st_ivas->cldfbAnaDec[1],
- st_ivas->hTcBuffer->tc_fx[nchan_transport],
+ &st_ivas->hTcBuffer->tc_fx[nchan_transport][hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->slots_rendered],
Cldfb_RealBuffer_in_fx[2][slot], Cldfb_ImagBuffer_in_fx[2][slot],
- slotInFrame,
+ slot,
st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->hSCE[0]->hCoreCoder[0]->flag_cna,
( st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == FRAME_NO_DATA || st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == SID_2k40 ) && ( st_ivas->hSCE[0]->hCoreCoder[0]->cng_type == FD_CNG ) && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag,
11, &q_cldfb[2][slot] );
@@ -849,11 +829,14 @@ static void ivas_dirac_dec_binaural_internal_fx(
st_ivas->cldfbAnaDec[1], /*nothing will be analyzed, just get cnst*/
NULL,
Cldfb_RealBuffer_in_fx[1][slot], Cldfb_ImagBuffer_in_fx[1][slot],
- slotInFrame,
+ slot,
st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->hSCE[0]->hCoreCoder[0]->flag_cna,
( st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == FRAME_NO_DATA || st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == SID_2k40 ) && ( st_ivas->hSCE[0]->hCoreCoder[0]->cng_type == FD_CNG ) && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag,
0, &q_cldfb[1][slot] );
+ scale_sig32( Cldfb_RealBuffer_in_fx[1][slot], CLDFB_NO_CHANNELS_MAX, negate( add( sub( q_cldfb[1][slot], q_input ), 5 ) ) );
+ scale_sig32( Cldfb_ImagBuffer_in_fx[1][slot], CLDFB_NO_CHANNELS_MAX, negate( add( sub( q_cldfb[1][slot], q_input ), 5 ) ) );
+
/* LB: Copy first channel + LB-CNG to first and second channels with same scaling (dual-mono)*/
FOR( b = 0; b < numCoreBands; b++ )
{
@@ -993,18 +976,13 @@ static void ivas_dirac_dec_binaural_internal_fx(
IF( EQ_16( nchan_transport, 2 ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/* in case of split rendering, determine the prototype rotation based on the main direction and use the same prototypes for the offset directions */
-#endif
adaptTransportSignalsHeadtracked_fx( hCombinedOrientationData, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat_fx );
ivas_dirac_dec_binaural_check_and_switch_transports_headtracked_fx( hCombinedOrientationData, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat_fx );
}
}
test();
-#ifndef SPLIT_REND_WITH_HEAD_ROT
- ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, Rmat_fx, subframe, hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0, st_ivas->hMasaIsmData, q_inp );
-#endif
IF( EQ_32( config_data.ivas_format, ISM_FORMAT ) )
{
@@ -1022,13 +1000,11 @@ static void ivas_dirac_dec_binaural_internal_fx(
move16();
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_dirac_dec_binaural_formulate_input_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, subframe,
subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, q_inp );
ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Rmat_fx, subframe,
hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0, subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, st_ivas->hMasaIsmData );
-#endif
nchanSeparateChannels = 0;
move16();
@@ -1095,7 +1071,6 @@ static void ivas_dirac_dec_binaural_internal_fx(
hDiracDecBin->q_processMtxDecPrev = q_mat;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
pMultiBinPoseData = NULL;
IF( st_ivas->hSplitBinRend != NULL )
{
@@ -1103,11 +1078,7 @@ static void ivas_dirac_dec_binaural_internal_fx(
move32();
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
-#else
- if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 )
-#endif
{
ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat,
tmp_Cldfb_out_re, tmp_Cldfb_out_im, reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 );
@@ -1126,13 +1097,9 @@ static void ivas_dirac_dec_binaural_internal_fx(
ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat, NULL, NULL,
reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 );
}
-#else
- ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat );
-#endif
hDiracDecBin->hDiffuseDist = NULL;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 )
{
/* quaternion-based rotation from ivas_binRenderer_internal.c:ivas_binRenderer(), but using absolute rotation instead of delta rotations */
@@ -1244,7 +1211,6 @@ static void ivas_dirac_dec_binaural_internal_fx(
}
/* update this counter only after the last rendering of split directions */
-#endif
hSpatParamRendCom->slots_rendered = add( hSpatParamRendCom->slots_rendered, hSpatParamRendCom->subframe_nbslots[subframe] );
hSpatParamRendCom->subframes_rendered = add( hSpatParamRendCom->subframes_rendered, 1 );
@@ -1328,7 +1294,6 @@ static void ivas_dirac_dec_decorrelate_slot_fx(
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
static void ivas_dirac_dec_binaural_formulate_input_covariance_matrices_fx(
DIRAC_DEC_BIN_HANDLE hDiracDecBin,
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom,
@@ -1625,674 +1590,36 @@ static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx(
move32();
qualityBasedSmFactor_fx = Mpy_32_32( qualityBasedSmFactor_fx, qualityBasedSmFactor_fx ); /*Q31*/
- nBins = hSpatParamRendCom->num_freq_bands; /* Actually bins */
- move16();
-
- q_earlyPartEneCorrection = s_min( Q31, add( getScaleFactor32( hDiracDecBin->earlyPartEneCorrection_fx, nBins ), hDiracDecBin->q_earlyPartEneCorrection ) );
- scale_sig32( hDiracDecBin->earlyPartEneCorrection_fx, nBins, sub( q_earlyPartEneCorrection, hDiracDecBin->q_earlyPartEneCorrection ) );
- hDiracDecBin->q_earlyPartEneCorrection = q_earlyPartEneCorrection;
- move16();
-
- set32_fx( hDiracDecBin->ChCrossReOut_fx, 0, nBins );
- set32_fx( hDiracDecBin->ChCrossImOut_fx, 0, nBins );
- set16_fx( hDiracDecBin->ChCrossReOut_e, 0, nBins );
- set16_fx( hDiracDecBin->ChCrossImOut_e, 0, nBins );
-
- FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
- {
- set32_fx( hDiracDecBin->ChEneOut_fx[ch], 0, nBins );
- set16_fx( hDiracDecBin->ChEneOut_e[ch], 0, nBins );
- }
- set32_fx( hDiracDecBin->frameMeanDiffuseness_fx, 0, nBins );
-
- set32_fx( frameMeanDiffusenessEneWeight_fx, 0, CLDFB_NO_CHANNELS_MAX );
-
- FOR( idx = 0; idx < MAX_GAIN_CACHE_SIZE; idx++ )
- {
- gainCache[idx].azi = -1000; /* Use -1000 as value for uninitialized cache. */
- move16();
- }
-
- dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe];
-
- /* Determine target covariance matrix containing target binaural properties */
- FOR( bin = 0; bin < nBins; bin++ )
- {
- Word32 diffuseness_fx = ONE_IN_Q30; /* ratio1 and ratio2 are subtracted from diffuseness further below */
- Word32 diffusenessValForDecorrelationReduction_fx = ONE_IN_Q30;
- Word32 diffEneValForDecorrelationReduction_fx;
- Word16 q_diffEneValForDecorrelationReduction;
- Word16 surCoh_fx = 0, spreadCoh_fx = 0; /* Default values if spreadSurroundCoherenceApplied == false */
- Word32 diffEne_fx, dirEne_fx, meanEnePerCh_fx;
- Word16 q_meanEnePerCh;
- Word16 q_diffEne, q_dirEne;
- Word16 dirIndex;
- move16();
- move16();
- move32();
- move32();
-
- /* When BINAURAL_ROOM is not indicated, hBinaural->earlyPartEneCorrection[bin] values are all 1.0f.
- * When BINAURAL_ROOM is indicated, the binaural audio output is based on combined use of the
- * HRTF data set and a BRIR-based data set. The HRTF data set is spectrally corrected to match
- * the early spectrum of the BRIR data, using the spectral correction data in
- * hBinaural->earlyPartEneCorrection[bin], based on the BRIR set. */
- meanEnePerCh_fx = Mpy_32_32( hDiracDecBin->earlyPartEneCorrection_fx[bin], subFrameTotalEne_fx[bin] ); // Q( q_meanEnePerCh )
- q_meanEnePerCh = add( sub( q_earlyPartEneCorrection, subFrameTotalEne_e[bin] ), 1 ); // q_earlyPartEneCorrection + 31 - subFrameTotalEne_e[bin] - 31 + Q1(0.5f)
- /* Determine direct part target covariance matrix (for 1 or 2 directions) */
- FOR( dirIndex = 0; dirIndex < hSpatParamRendCom->numSimultaneousDirections; dirIndex++ )
- {
- Word16 aziDeg, eleDeg;
- Word32 lRealp_fx, lImagp_fx, rRealp_fx, rImagp_fx;
- Word32 lRealpTmp_fx, lImagpTmp_fx, rRealpTmp_fx, rImagpTmp_fx;
- Word32 hrtfEne_fx[BINAURAL_CHANNELS], hrtfCrossRe_fx, hrtfCrossIm_fx, ratio_fx;
- UWord8 isIsmDirection = 0;
- move16();
-
- test();
- test();
- IF( dirIndex == 0 ) /* For first of the two simultaneous directions */
- {
- aziDeg = hSpatParamRendCom->azimuth[dirac_read_idx][bin];
- move16();
- eleDeg = hSpatParamRendCom->elevation[dirac_read_idx][bin];
- move16();
- ratio_fx = hSpatParamRendCom->energy_ratio1_fx[dirac_read_idx][bin];
- move32();
- spreadCoh_fx = hSpatParamRendCom->spreadCoherence_fx[dirac_read_idx][bin];
- move16();
- gainCacheBaseIndex = 0;
- move16();
- }
- ELSE IF( NE_32( ivas_format, MASA_ISM_FORMAT ) || ( EQ_32( ivas_format, MASA_ISM_FORMAT ) && LT_16( dirIndex, hSpatParamRendCom->numParametricDirections ) ) ) /* For second of the two simultaneous directions */
- {
- IF( LT_32( ( ratio_fx = hSpatParamRendCom->energy_ratio2_fx[dirac_read_idx][bin] ), 10737418 /* 0.01 in Q30 */ ) )
- {
- /* This touches only MASA path where second direction always has smaller ratio and
- * for non-2dir it is zero. As the whole direction contribution is multiplied with
- * the ratio, a very small ratio does not contribute any energy to output. Thus,
- * it is better to save complexity. */
- CONTINUE;
- }
- aziDeg = hSpatParamRendCom->azimuth2[dirac_read_idx][bin];
- move16();
- eleDeg = hSpatParamRendCom->elevation2[dirac_read_idx][bin];
- move16();
- spreadCoh_fx = hSpatParamRendCom->spreadCoherence2_fx[dirac_read_idx][bin];
- move16();
- gainCacheBaseIndex = 3;
- move16();
- }
- ELSE /* For object directions of MASA_ISM_FORMAT */
- {
- isIsmDirection = 1;
- move16();
- UWord16 ismDirIndex;
- ismDirIndex = sub( dirIndex, hSpatParamRendCom->numParametricDirections );
- assert( hMasaIsmData != NULL && "hMasaIsmData should not be NULL if we use it" );
- IF( hMasaIsmData->ism_is_edited[ismDirIndex] )
- {
- aziDeg = hMasaIsmData->azimuth_ism_edited[ismDirIndex];
- move16();
- eleDeg = hMasaIsmData->elevation_ism_edited[ismDirIndex];
- move16();
- }
- ELSE
- {
- aziDeg = hMasaIsmData->azimuth_ism[ismDirIndex][dirac_read_idx];
- move16();
- eleDeg = hMasaIsmData->elevation_ism[ismDirIndex][dirac_read_idx];
- move16();
- }
- ratio_fx = hMasaIsmData->energy_ratio_ism_fx[ismDirIndex][dirac_read_idx][bin];
- move32();
- spreadCoh_fx = 0;
- move16();
- gainCacheBaseIndex = add( 6, ismDirIndex );
- }
-
- diffuseness_fx = L_sub( diffuseness_fx, ratio_fx ); /* diffuseness = 1 - ratio1 - ratio2 */
-
- if ( diffuseness_fx < 0 )
- {
- diffuseness_fx = 0;
- move32();
- }
- IF( isIsmDirection )
- {
- /* Objects cause lesser decorrelation reduction, to avoid removing all decorrelation when only objects are present */
- diffusenessValForDecorrelationReduction_fx = L_sub( diffusenessValForDecorrelationReduction_fx, L_shr( ratio_fx, 1 ) ); /*Q30*/
- }
- ELSE
- {
- diffusenessValForDecorrelationReduction_fx = L_sub( diffusenessValForDecorrelationReduction_fx, ratio_fx ); /*Q30*/
- }
-
- IF( separateCenterChannelRendering )
- {
- /* In masa + mono rendering mode, the center directions originate from phantom sources, so the
- * spread coherence is increased */
- Word16 azi_scaled, ele_scaled;
- Word32 doaVectorX_fx, num, den;
- Word16 e = 0, spatialAngleDeg_fx, altSpreadCoh_fx;
- move16();
-
- azi_scaled = i_mult( aziDeg, 91 );
- ele_scaled = i_mult( eleDeg, 91 );
- doaVectorX_fx = L_mult( getCosWord16R2( azi_scaled ), getCosWord16R2( ele_scaled ) ); /*Q31*/
- num = Sqrt32( L_sub( ONE_IN_Q31, Mpy_32_32( doaVectorX_fx, doaVectorX_fx ) ), &e );
- den = doaVectorX_fx;
- move32();
- spatialAngleDeg_fx = BASOP_util_atan2( num, den, e ); // Q13
- Word16 numr, num_e = 0, denr, den_e;
- move16();
- num_e = sub( norm_s( spatialAngleDeg_fx ), 1 );
- numr = shl( spatialAngleDeg_fx, num_e );
- denr = 17157;
- move16();
- den_e = 4;
- move16();
- altSpreadCoh_fx = sub( 32767, shl_sat( div_s( numr, denr ), sub( den_e, num_e ) ) ); // 4289 = pi/6 in Q13
- spreadCoh_fx = s_max( spreadCoh_fx, altSpreadCoh_fx );
- }
-
- getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked );
-
- Word16 q_lr = Q28;
- move16();
- if ( hDiracDecBin->renderStereoOutputInsteadOfBinaural )
- {
- /* Synthesizing spread coherence is not needed for stereo loudspeaker output,
- * as directional sound is reproduced with two loudspeakers in any case */
- spreadCoh_fx = 0;
- move32();
- }
-
- IF( spreadCoh_fx > 0 )
- {
- Word32 centerMul_fx, sidesMul_fx;
- Word32 hrtfEneCenter_fx, hrtfEneSides_fx, hrtfEneRealized_fx;
- Word16 eneCorrectionFactor_fx, eneCorrectionFactor_e;
- Word16 w1_fx, w2_fx, w3_fx, eq_fx;
-
- hrtfEneCenter_fx = L_add( Mpy_32_32( lRealp_fx, lRealp_fx ), // Q25
- L_add( Mpy_32_32( lImagp_fx, lImagp_fx ), // Q25
- L_add( Mpy_32_32( rRealp_fx, rRealp_fx ), // Q25
- Mpy_32_32( rImagp_fx, rImagp_fx ) ) ) ); // Q25
-
- /* Spread coherence is synthesized as coherent sources at 30 degree horizontal spacing.
- * The following formulas determine the gains for these sources.
- * spreadCoh = 0: Only panning
- * spreadCoh = 0.5: Three sources coherent panning (e.g. 30 0 -30 deg azi)
- * spreadCoh = 1.0: Two sources coherent panning with gap (as above, but center is silent) */
- IF( LT_16( spreadCoh_fx, 16384 ) )
- {
- /* 0.0f < spreadCoh < 0.5f */
- sidesMul_fx = L_mult0( spreadCoh_fx, 9459 ); /* 2*sqrt(1/3) in Q13 = 9459 */ // Q28
- centerMul_fx = L_add( L_sub( ONE_IN_Q28, L_shl( spreadCoh_fx, 14 ) ), sidesMul_fx ); // Q28
- }
- ELSE
- {
- /* 0.5f <= spreadCoh < 1.0f */
- // centerMul = 2.0f - ( 2.0f * spreadCoh );
- centerMul_fx = L_shl( sub( 32767, spreadCoh_fx ), 14 ); // Q28
- sidesMul_fx = Isqrt( L_add( L_shr( centerMul_fx, 22 ), L_shl( 2, Q6 ) ) ); // Q28
- centerMul_fx = L_shl( Mpy_32_32( centerMul_fx, sidesMul_fx ), 3 ); // Q28
- }
-
- /* Apply the gain for the center source of the three coherent sources */
- lRealp_fx = Mpy_32_32( lRealp_fx, centerMul_fx ); // Q25
- lImagp_fx = Mpy_32_32( lImagp_fx, centerMul_fx ); // Q25
- rRealp_fx = Mpy_32_32( rRealp_fx, centerMul_fx ); // Q25
- rImagp_fx = Mpy_32_32( rImagp_fx, centerMul_fx ); // Q25
-
- /* Apply the gain for the left source of the three coherent sources */
- getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked );
-
- hrtfEneSides_fx = L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25
- L_add( Mpy_32_32( lImagpTmp_fx, lImagpTmp_fx ), // Q25
- L_add( Mpy_32_32( rRealpTmp_fx, rRealpTmp_fx ), // Q25
- Mpy_32_32( rImagpTmp_fx, rImagpTmp_fx ) ) ) ); // Q25
- lRealp_fx = L_add( lRealp_fx, Mpy_32_32( sidesMul_fx, lRealpTmp_fx ) ); // Q25
- lImagp_fx = L_add( lImagp_fx, Mpy_32_32( sidesMul_fx, lImagpTmp_fx ) ); // Q25
- rRealp_fx = L_add( rRealp_fx, Mpy_32_32( sidesMul_fx, rRealpTmp_fx ) ); // Q25
- rImagp_fx = L_add( rImagp_fx, Mpy_32_32( sidesMul_fx, rImagpTmp_fx ) ); // Q25
-
- /* Apply the gain for the right source of the three coherent sources.
- * -30 degrees to 330 wrapping due to internal functions. */
-
- getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked );
-
- hrtfEneSides_fx = L_add( hrtfEneSides_fx,
- L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25
- L_add( Mpy_32_32( lImagpTmp_fx, lImagpTmp_fx ), // Q25
- L_add( Mpy_32_32( rRealpTmp_fx, rRealpTmp_fx ), // Q25
- Mpy_32_32( rImagpTmp_fx, rImagpTmp_fx ) ) ) ) ); // Q25
- lRealp_fx = L_add( lRealp_fx, Mpy_32_32( sidesMul_fx, lRealpTmp_fx ) ); // Q25
- lImagp_fx = L_add( lImagp_fx, Mpy_32_32( sidesMul_fx, lImagpTmp_fx ) ); // Q25
- rRealp_fx = L_add( rRealp_fx, Mpy_32_32( sidesMul_fx, rRealpTmp_fx ) ); // Q25
- rImagp_fx = L_add( rImagp_fx, Mpy_32_32( sidesMul_fx, rImagpTmp_fx ) ); // Q25
-
- /* Formulate an eneCorrectionFactor that compensates for the coherent summation of the HRTFs */
- hrtfEneRealized_fx = L_add( Mpy_32_32( lRealp_fx, lRealp_fx ), // Q19
- L_add( Mpy_32_32( lImagp_fx, lImagp_fx ), // Q19
- L_add( Mpy_32_32( rRealp_fx, rRealp_fx ), // Q19
- Mpy_32_32( rImagp_fx, rImagp_fx ) ) ) ); // Q19
-
- eneCorrectionFactor_fx = BASOP_Util_Divide3232_Scale( L_add( Mpy_32_32( hrtfEneSides_fx, Mpy_32_32( sidesMul_fx, sidesMul_fx ) ),
- Mpy_32_32( hrtfEneCenter_fx, Mpy_32_32( centerMul_fx, centerMul_fx ) ) ),
- L_max( 1, hrtfEneRealized_fx ), &eneCorrectionFactor_e );
-
- /* Weighting factors to determine appropriate target spectrum for spread coherent sound */
- IF( LT_16( spreadCoh_fx, 16384 ) )
- {
- w1_fx = sub( 32767, shl( spreadCoh_fx, 1 ) ); /*Q15*/
- w2_fx = shl( spreadCoh_fx, 1 ); /*Q15*/
- w3_fx = 0;
- move16();
- }
- ELSE
- {
- w1_fx = 0;
- move16();
- w2_fx = shl( sub( 32767, spreadCoh_fx ), 1 ); /*Q15*/
- w3_fx = shl( sub( spreadCoh_fx, 16384 ), 1 ); /*Q15*/
- }
-
- test();
- IF( ( EQ_32( ivas_format, MC_FORMAT ) && EQ_32( mc_mode, MC_MODE_MCMASA ) ) )
- {
- idx = s_min( bin, MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS - 1 );
-
- /* Apply the target spectrum to the eneCorrectionFactor */
- IF( separateCenterChannelRendering ) /* spreadCoh mostly originates from phantom sources in separate channel rendering mode */
- {
- eneCorrectionFactor_fx = mult_r( eneCorrectionFactor_fx, add( mult_r( w1_fx, 8192 ), shr( mult_r( add( w2_fx, w3_fx ), spreadCohEne1_fx[idx] ), 1 ) ) );
- eneCorrectionFactor_e = add( eneCorrectionFactor_e, 2 );
- }
- ELSE
- {
- eneCorrectionFactor_fx = mult_r( eneCorrectionFactor_fx, add( mult_r( w1_fx, 4096 ), add( shr( mult_r( w2_fx, spreadCohEne05_fx[idx] ), 1 ), shr( mult_r( w3_fx, spreadCohEne1_fx[idx] ), 2 ) ) ) );
- eneCorrectionFactor_e = add( eneCorrectionFactor_e, 3 );
- }
- }
-
- /* Equalize the spread coherent combined HRTFs */
- Word16 tmp, tmp_e;
- tmp_e = eneCorrectionFactor_e;
- move16();
- tmp = Sqrt16( eneCorrectionFactor_fx, &tmp_e );
- IF( GE_16( shr( tmp, sub( 15, tmp_e ) ), 4 ) )
- {
- eq_fx = 32767; // Q13
- move16();
- }
- ELSE
- {
- eq_fx = shl( tmp, sub( tmp_e, 2 ) ); // Q13
- }
-
- lRealp_fx = Mpy_32_16_1( lRealp_fx, eq_fx ); // Q23
- lImagp_fx = Mpy_32_16_1( lImagp_fx, eq_fx ); // Q23
- rRealp_fx = Mpy_32_16_1( rRealp_fx, eq_fx ); // Q23
- rImagp_fx = Mpy_32_16_1( rImagp_fx, eq_fx ); // Q23
- q_lr = Q23;
- move16();
- }
-
- hrtfEne_fx[0] = L_add( Mpy_32_32( lRealp_fx, lRealp_fx ), Mpy_32_32( lImagp_fx, lImagp_fx ) ); // Q( 2*q_lr - 31 )
- hrtfEne_fx[1] = L_add( Mpy_32_32( rRealp_fx, rRealp_fx ), Mpy_32_32( rImagp_fx, rImagp_fx ) ); // Q( 2*q_lr - 31 )
- move32();
- move32();
- hrtfCrossRe_fx = L_add( Mpy_32_32( lRealp_fx, rRealp_fx ), Mpy_32_32( lImagp_fx, rImagp_fx ) ); // Q( 2*q_lr - 31 )
- hrtfCrossIm_fx = L_add( Mpy_32_32( -lImagp_fx, rRealp_fx ), Mpy_32_32( lRealp_fx, rImagp_fx ) ); // Q( 2*q_lr - 31 )
-
- /* Add direct part (1 or 2) covariance matrix */
- dirEne_fx = Mpy_32_32( ratio_fx, meanEnePerCh_fx ); // Q(q_meanEnePerCh - 1)
- shift = norm_l( dirEne_fx );
- dirEne_fx = L_shl( dirEne_fx, shift );
- q_dirEne = add( sub( q_meanEnePerCh, 1 ), shift );
-
- hDiracDecBin->ChEneOut_fx[0][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[0][bin], hDiracDecBin->ChEneOut_e[0][bin], Mpy_32_32( dirEne_fx, hrtfEne_fx[0] ), sub( 31, sub( add( q_dirEne, shl( q_lr, 1 ) ), 62 ) ), &hDiracDecBin->ChEneOut_e[0][bin] ); /* Dir ene part*/
- hDiracDecBin->ChEneOut_fx[1][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[1][bin], hDiracDecBin->ChEneOut_e[1][bin], Mpy_32_32( dirEne_fx, hrtfEne_fx[1] ), sub( 31, sub( add( q_dirEne, shl( q_lr, 1 ) ), 62 ) ), &hDiracDecBin->ChEneOut_e[1][bin] );
- hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( dirEne_fx, hrtfCrossRe_fx ), sub( 31, sub( add( q_dirEne, shl( q_lr, 1 ) ), 62 ) ), &hDiracDecBin->ChCrossReOut_e[bin] ); /* Dir cross re */
- hDiracDecBin->ChCrossImOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossImOut_fx[bin], hDiracDecBin->ChCrossImOut_e[bin], Mpy_32_32( dirEne_fx, hrtfCrossIm_fx ), sub( 31, sub( add( q_dirEne, shl( q_lr, 1 ) ), 62 ) ), &hDiracDecBin->ChCrossImOut_e[bin] ); /* Dir cross im */
- move32();
- move32();
- move32();
- move32();
- }
-
- /* Add diffuse / ambient part covariance matrix */
- diffuseness_fx = L_max( 0, diffuseness_fx ); // Q30
- diffEne_fx = Mpy_32_32( diffuseness_fx, meanEnePerCh_fx ); // Q(2q - 32)
- shift = norm_l( diffEne_fx );
- diffEne_fx = L_shl( diffEne_fx, shift );
- q_diffEne = add( shift, sub( q_meanEnePerCh, 1 ) );
-
- surCoh_fx = hSpatParamRendCom->surroundingCoherence_fx[dirac_read_idx][bin]; // Q15
- move16();
-
- diffusenessValForDecorrelationReduction_fx = L_max( 0, diffusenessValForDecorrelationReduction_fx ); // Q30
- diffEneValForDecorrelationReduction_fx = Mpy_32_32( diffusenessValForDecorrelationReduction_fx, meanEnePerCh_fx ); // resulting Q = q_meanEnePerCh - 1
- q_diffEneValForDecorrelationReduction = sub( q_meanEnePerCh, 1 );
-
- test();
- IF( ( EQ_32( ivas_format, MC_FORMAT ) && EQ_32( mc_mode, MC_MODE_MCMASA ) ) )
- {
- IF( !hDiracDecBin->renderStereoOutputInsteadOfBinaural )
- {
- Word32 spectrumModVal;
-
- idx = s_min( bin, MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS - 1 );
- /* Apply target spectrum that emphasizes low frequencies when the sound is surround coherent */
- spectrumModVal = L_add( L_sub( ONE_IN_Q29, L_shl( surCoh_fx, 14 ) ), L_mult( surCoh_fx, surCohEne_fx[idx] ) ); // Q29
- diffEne_fx = Mpy_32_32( diffEne_fx, spectrumModVal ); // Q-2
- q_diffEne = sub( q_diffEne, 2 );
- /* Modify also the value for decorrelation reduction */
- diffEneValForDecorrelationReduction_fx = Mpy_32_32( diffEneValForDecorrelationReduction_fx, spectrumModVal ); // Q-2
- q_diffEneValForDecorrelationReduction = sub( q_diffEneValForDecorrelationReduction, 2 );
- }
- }
- hDiracDecBin->ChEneOut_fx[0][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[0][bin], hDiracDecBin->ChEneOut_e[0][bin], diffEne_fx, sub( 31, q_diffEne ), &hDiracDecBin->ChEneOut_e[0][bin] ); /* Diff ene part*/
- hDiracDecBin->ChEneOut_fx[1][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[1][bin], hDiracDecBin->ChEneOut_e[1][bin], diffEne_fx, sub( 31, q_diffEne ), &hDiracDecBin->ChEneOut_e[1][bin] );
-
- move32();
- move32();
- IF( hDiracDecBin->renderStereoOutputInsteadOfBinaural )
- {
- /* When rendering stereo, ambience (except for surround coherent sound) has zero ICC. */
- hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_16_1( diffEne_fx, surCoh_fx ), sub( 31, q_diffEne ), &hDiracDecBin->ChCrossReOut_e[bin] );
- move32();
- }
- ELSE /* When rendering binaural, ambience has frequency dependent ICC. */
- {
- test();
- test();
- IF( ( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) && LT_16( bin, BINAURAL_COHERENCE_DIFFERENCE_BINS ) )
- {
- Word32 diffuseFieldCoherence_fx;
- Word16 tmp_exp;
- temp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( hDiracDecBin->hDiffuseDist->diffuseRatioX_fx[bin], hDiracDecBin->diffuseFieldCoherenceX_fx[bin] ), 0, Mpy_32_32( hDiracDecBin->hDiffuseDist->diffuseRatioY_fx[bin], hDiracDecBin->diffuseFieldCoherenceY_fx[bin] ), 0, &tmp_exp );
- diffuseFieldCoherence_fx = BASOP_Util_Add_Mant32Exp( temp, tmp_exp, Mpy_32_32( hDiracDecBin->hDiffuseDist->diffuseRatioZ_fx[bin], hDiracDecBin->diffuseFieldCoherenceZ_fx[bin] ), 0, &tmp_exp );
- temp = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( diffuseFieldCoherence_fx, sub( 32767, surCoh_fx ) ), tmp_exp, L_shl( surCoh_fx, 16 ), 0, &tmp_exp );
- hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( temp, diffEne_fx ), add( tmp_exp, sub( 31, q_diffEne ) ), &hDiracDecBin->ChCrossReOut_e[bin] );
- }
- ELSE
- {
- hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( L_add( Mpy_32_16_1( hDiracDecBin->diffuseFieldCoherence_fx[bin], sub( 32767, surCoh_fx ) ), L_shl( surCoh_fx, 16 ) ), diffEne_fx ), sub( 31, q_diffEne ), &hDiracDecBin->ChCrossReOut_e[bin] );
- }
- move32();
- }
-
- /* Store parameters for formulating average diffuseness over frame */
- Word32 frameMeanDiffuseness = BASOP_Util_Add_Mant32Exp( hDiracDecBin->frameMeanDiffuseness_fx[bin], 2 /*Q29*/, diffEneValForDecorrelationReduction_fx, sub( 31, q_diffEneValForDecorrelationReduction ), &exp1 ); // exp = exp1
- frameMeanDiffusenessEneWeight_fx[bin] = L_add( frameMeanDiffusenessEneWeight_fx[bin], meanEnePerCh_fx );
- move32();
-
- /* Formulate average diffuseness over frame */
- frameMeanDiffuseness = BASOP_Util_Divide3232_Scale_cadence( frameMeanDiffuseness, L_max( EPSILLON_FX, frameMeanDiffusenessEneWeight_fx[bin] ), &exp ); // exp = exp + 31 - q_meanEnePerCh - exp1
- exp = sub( exp, sub( sub( 31, q_meanEnePerCh ), exp1 ) );
- hDiracDecBin->frameMeanDiffuseness_fx[bin] = L_shl( frameMeanDiffuseness, sub( exp, 2 ) ); // Q29
- move32();
- }
-
- FOR( bin = 0; bin < nBins; bin++ )
- {
- hDiracDecBin->ChCrossReOut_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossReOut_fx[bin], qualityBasedSmFactor_fx );
- hDiracDecBin->ChCrossImOut_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossImOut_fx[bin], qualityBasedSmFactor_fx );
-
- FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
- {
- hDiracDecBin->ChEneOut_fx[ch][bin] = Mpy_32_32( hDiracDecBin->ChEneOut_fx[ch][bin], qualityBasedSmFactor_fx );
- move32();
- }
- hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossReOutPrev_fx[bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChCrossReOutPrev_e[bin], &hDiracDecBin->ChCrossReOut_e[bin] );
- hDiracDecBin->ChCrossImOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossImOut_fx[bin], hDiracDecBin->ChCrossImOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossImOutPrev_fx[bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChCrossImOutPrev_e[bin], &hDiracDecBin->ChCrossImOut_e[bin] );
- move32();
- move32();
-
- FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
- {
- hDiracDecBin->ChEneOut_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[ch][bin], hDiracDecBin->ChEneOut_e[ch][bin], Mpy_32_32( hDiracDecBin->ChEneOutPrev_fx[ch][bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChEneOutPrev_e[ch][bin], &hDiracDecBin->ChEneOut_e[ch][bin] );
- move32();
- }
-
-
- hDiracDecBin->ChCrossReOutPrev_fx[bin] = hDiracDecBin->ChCrossReOut_fx[bin];
- move32();
- hDiracDecBin->ChCrossImOutPrev_fx[bin] = hDiracDecBin->ChCrossImOut_fx[bin];
- move32();
- hDiracDecBin->ChCrossReOutPrev_e[bin] = hDiracDecBin->ChCrossReOut_e[bin];
- move16();
- hDiracDecBin->ChCrossImOutPrev_e[bin] = hDiracDecBin->ChCrossImOut_e[bin];
- move16();
-
- FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
- {
- hDiracDecBin->ChEnePrev_fx[ch][bin] = hDiracDecBin->ChEne_fx[ch][bin];
- move32();
- hDiracDecBin->ChEnePrev_e[ch][bin] = hDiracDecBin->ChEne_e[ch][bin];
- move16();
- hDiracDecBin->ChEneOutPrev_fx[ch][bin] = hDiracDecBin->ChEneOut_fx[ch][bin];
- move32();
- hDiracDecBin->ChEneOutPrev_e[ch][bin] = hDiracDecBin->ChEneOut_e[ch][bin];
- move16();
- }
- }
-
- return;
-}
-
-
-#else
-static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx(
- DIRAC_DEC_BIN_HANDLE hDiracDecBin,
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom,
- PARAMBIN_REND_CONFIG_HANDLE hConfig,
- Word32 inRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /*q*/
- Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /*q*/
- Word32 Rmat_fx[3][3], /*Q30*/
- const Word16 subframe,
- const Word16 isHeadtracked,
- const MASA_ISM_DATA_HANDLE hMasaIsmData,
- Word16 q )
-{
- Word16 ch, slot, bin;
- Word16 separateCenterChannelRendering;
- Word16 nBins, idx, shift;
- Word32 frameMeanDiffusenessEneWeight_fx[CLDFB_NO_CHANNELS_MAX];
- Word32 IIReneLimiterFactor_fx; // Q26
- Word32 qualityBasedSmFactor_fx;
- Word32 lowBitRateEQ_fx[CLDFB_NO_CHANNELS_MAX];
- UWord8 applyLowBitRateEQ;
- Word16 dirac_read_idx;
- Word32 subFrameTotalEne_fx[CLDFB_NO_CHANNELS_MAX];
- Word16 subFrameTotalEne_e[CLDFB_NO_CHANNELS_MAX];
- PARAMBIN_HRTF_GAIN_CACHE gainCache[MAX_GAIN_CACHE_SIZE];
- IVAS_FORMAT ivas_format;
- MC_MODE mc_mode;
- Word32 ivas_total_brate;
- Word16 nchan_transport;
- Word16 gainCacheBaseIndex;
- Word16 q_earlyPartEneCorrection;
- Word16 exp, exp1;
- Word64 temp64;
- Word32 temp;
-
- separateCenterChannelRendering = hConfig->separateCenterChannelRendering;
- move16();
- ivas_format = hConfig->ivas_format;
- move32();
- mc_mode = hConfig->mc_mode;
- move32();
- ivas_total_brate = hConfig->ivas_total_brate;
- move32();
- nchan_transport = hConfig->nchan_transport;
- move16();
- qualityBasedSmFactor_fx = hConfig->qualityBasedSmFactor_fx; /*Q31*/
- move32();
- qualityBasedSmFactor_fx = Mpy_32_32( qualityBasedSmFactor_fx, qualityBasedSmFactor_fx ); /*Q31*/
-
- nBins = hSpatParamRendCom->num_freq_bands; /* Actually bins */
- move16();
-
- q_earlyPartEneCorrection = s_min( Q31, add( getScaleFactor32( hDiracDecBin->earlyPartEneCorrection_fx, nBins ), hDiracDecBin->q_earlyPartEneCorrection ) );
- scale_sig32( hDiracDecBin->earlyPartEneCorrection_fx, nBins, sub( q_earlyPartEneCorrection, hDiracDecBin->q_earlyPartEneCorrection ) );
- hDiracDecBin->q_earlyPartEneCorrection = q_earlyPartEneCorrection;
- move16();
-
- set32_fx( hDiracDecBin->ChCrossRe_fx, 0, nBins );
- set32_fx( hDiracDecBin->ChCrossIm_fx, 0, nBins );
- set32_fx( hDiracDecBin->ChCrossReOut_fx, 0, nBins );
- set32_fx( hDiracDecBin->ChCrossImOut_fx, 0, nBins );
-
- set16_fx( hDiracDecBin->ChCrossRe_e, 0, nBins );
- set16_fx( hDiracDecBin->ChCrossIm_e, 0, nBins );
- set16_fx( hDiracDecBin->ChCrossReOut_e, 0, nBins );
- set16_fx( hDiracDecBin->ChCrossImOut_e, 0, nBins );
- FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
- {
- set32_fx( hDiracDecBin->ChEne_fx[ch], 0, nBins );
- set32_fx( hDiracDecBin->ChEneOut_fx[ch], 0, nBins );
-
- set16_fx( hDiracDecBin->ChEne_e[ch], 0, nBins );
- set16_fx( hDiracDecBin->ChEneOut_e[ch], 0, nBins );
- }
- set32_fx( hDiracDecBin->frameMeanDiffuseness_fx, 0, nBins );
-
- set32_fx( frameMeanDiffusenessEneWeight_fx, 0, CLDFB_NO_CHANNELS_MAX );
-
- set16_fx( subFrameTotalEne_e, 0, CLDFB_NO_CHANNELS_MAX );
-
- FOR( idx = 0; idx < MAX_GAIN_CACHE_SIZE; idx++ )
- {
- gainCache[idx].azi = -1000; /* Use -1000 as value for uninitialized cache. */
- move16();
- }
-
- /* Determine EQ for low bit rates (13.2 and 16.4 kbps) */
- applyLowBitRateEQ = 0;
- move16();
- test();
- test();
- IF( ( EQ_32( ivas_format, MASA_FORMAT ) || EQ_32( ivas_format, MC_FORMAT ) ) && LT_32( ivas_total_brate, MASA_STEREO_MIN_BITRATE ) )
- {
- applyLowBitRateEQ = 1;
- move16();
- IF( EQ_32( ivas_total_brate, IVAS_16k4 ) )
- {
- FOR( bin = 0; bin < LOW_BIT_RATE_BINAURAL_EQ_BINS; bin++ )
- {
- lowBitRateEQ_fx[bin + LOW_BIT_RATE_BINAURAL_EQ_OFFSET] = L_add( L_shr( lowBitRateBinauralEQ_fx[bin], 1 ), ONE_IN_Q30 ); // Q31
- move32();
- }
- }
- ELSE
- {
- FOR( bin = 0; bin < LOW_BIT_RATE_BINAURAL_EQ_BINS; bin++ )
- {
- lowBitRateEQ_fx[bin + LOW_BIT_RATE_BINAURAL_EQ_OFFSET] = lowBitRateBinauralEQ_fx[bin]; // Q31
- move32();
- }
- }
- }
+ nBins = hSpatParamRendCom->num_freq_bands; /* Actually bins */
+ move16();
- /* Formulate input and target covariance matrices for this subframe */
- set32_fx( subFrameTotalEne_fx, 0, CLDFB_NO_CHANNELS_MAX );
- dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe];
+ q_earlyPartEneCorrection = s_min( Q31, add( getScaleFactor32( hDiracDecBin->earlyPartEneCorrection_fx, nBins ), hDiracDecBin->q_earlyPartEneCorrection ) );
+ scale_sig32( hDiracDecBin->earlyPartEneCorrection_fx, nBins, sub( q_earlyPartEneCorrection, hDiracDecBin->q_earlyPartEneCorrection ) );
+ hDiracDecBin->q_earlyPartEneCorrection = q_earlyPartEneCorrection;
move16();
- exp = sub( 63, shl( q, 1 ) ); // exp for the energy (inRe_fx * inRe_fx + inIm_fx * inIm_fx) computed below
+ set32_fx( hDiracDecBin->ChCrossReOut_fx, 0, nBins );
+ set32_fx( hDiracDecBin->ChCrossImOut_fx, 0, nBins );
+ set16_fx( hDiracDecBin->ChCrossReOut_e, 0, nBins );
+ set16_fx( hDiracDecBin->ChCrossImOut_e, 0, nBins );
- /* Calculate input covariance matrix */
- FOR( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ )
+ FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
- FOR( bin = 0; bin < nBins; bin++ )
- {
- FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
- {
- Word32 instEne_fx;
- temp64 = W_mult0_32_32( inRe_fx[ch][slot][bin], inRe_fx[ch][slot][bin] ); // 2q
- temp64 = W_add( temp64, W_mult0_32_32( inIm_fx[ch][slot][bin], inIm_fx[ch][slot][bin] ) ); // 2q
- exp1 = W_norm( temp64 );
- instEne_fx = W_extract_h( W_shl( temp64, exp1 ) ); // 2q - 32 + exp1
- /* exp of instEne_fx = 31 - (2q -32 + exp1) = 63 - 2q - exp1 = exp - exp1*/
-
- hDiracDecBin->ChEne_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEne_fx[ch][bin], hDiracDecBin->ChEne_e[ch][bin], instEne_fx, sub( exp, exp1 ), &hDiracDecBin->ChEne_e[ch][bin] );
- subFrameTotalEne_fx[bin] = BASOP_Util_Add_Mant32Exp( subFrameTotalEne_fx[bin], subFrameTotalEne_e[bin], instEne_fx, sub( exp, exp1 ), &subFrameTotalEne_e[bin] );
- move32();
- move32();
- }
- temp64 = W_mult0_32_32( inRe_fx[0][slot][bin], inRe_fx[1][slot][bin] ); // 2q
- temp64 = W_add( temp64, W_mult0_32_32( inIm_fx[0][slot][bin], inIm_fx[1][slot][bin] ) ); // 2q
- exp1 = W_norm( temp64 );
- temp = W_extract_h( W_shl( temp64, exp1 ) ); // // 2q - 32 + exp1
- hDiracDecBin->ChCrossRe_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossRe_fx[bin], hDiracDecBin->ChCrossRe_e[bin], temp, sub( exp, exp1 ), &hDiracDecBin->ChCrossRe_e[bin] );
- move32();
-
- temp64 = W_mult0_32_32( inRe_fx[0][slot][bin], inIm_fx[1][slot][bin] ); // 2q
- temp64 = W_sub( temp64, W_mult0_32_32( inIm_fx[0][slot][bin], inRe_fx[1][slot][bin] ) ); // 2q
- exp1 = W_norm( temp64 );
- temp = W_extract_h( W_shl( temp64, exp1 ) ); // // 2q - 32 + exp1
- hDiracDecBin->ChCrossIm_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossIm_fx[bin], hDiracDecBin->ChCrossIm_e[bin], temp, sub( exp, exp1 ), &hDiracDecBin->ChCrossIm_e[bin] );
- move32();
- }
+ set32_fx( hDiracDecBin->ChEneOut_fx[ch], 0, nBins );
+ set16_fx( hDiracDecBin->ChEneOut_e[ch], 0, nBins );
}
+ set32_fx( hDiracDecBin->frameMeanDiffuseness_fx, 0, nBins );
- /* Apply EQ at low bit rates */
- IF( applyLowBitRateEQ != 0 )
- {
- Word16 lastEqBin = LOW_BIT_RATE_BINAURAL_EQ_OFFSET + LOW_BIT_RATE_BINAURAL_EQ_BINS - 1;
-
- FOR( bin = LOW_BIT_RATE_BINAURAL_EQ_OFFSET; bin < lastEqBin; bin++ )
- {
- subFrameTotalEne_fx[bin] = Mpy_32_32( subFrameTotalEne_fx[bin], lowBitRateEQ_fx[bin] ); // exp = subFrameTotalEne_e[bin]
- move32();
- }
- FOR( ; bin < nBins; bin++ )
- {
- subFrameTotalEne_fx[bin] = Mpy_32_32( subFrameTotalEne_fx[bin], lowBitRateEQ_fx[lastEqBin] ); // exp = subFrameTotalEne_e[bin]
- move32();
- }
- }
+ set32_fx( frameMeanDiffusenessEneWeight_fx, 0, CLDFB_NO_CHANNELS_MAX );
- test();
- test();
- IF( ( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) && EQ_16( nchan_transport, 2 ) )
+ FOR( idx = 0; idx < MAX_GAIN_CACHE_SIZE; idx++ )
{
- Word32 tempRe, tempIm;
- Word32 subFrameSumEne_fx[CLDFB_NO_CHANNELS_MAX];
- Word16 subFrameSumEne_e[CLDFB_NO_CHANNELS_MAX];
-
- set32_fx( subFrameSumEne_fx, 0, CLDFB_NO_CHANNELS_MAX );
- set16_fx( subFrameSumEne_e, 0, CLDFB_NO_CHANNELS_MAX );
- FOR( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ )
- {
- FOR( bin = 0; bin < nBins; bin++ )
- {
- tempRe = L_add( inRe_fx[0][slot][bin], inRe_fx[1][slot][bin] ); // q
- tempIm = L_add( inIm_fx[0][slot][bin], inIm_fx[1][slot][bin] ); // q
- temp64 = W_add( W_mult0_32_32( tempRe, tempRe ), W_mult0_32_32( tempIm, tempIm ) ); // 2q
- exp1 = W_norm( temp64 );
- temp64 = W_shl( temp64, exp1 ); // 2q + exp1
- subFrameSumEne_fx[bin] = BASOP_Util_Add_Mant32Exp( subFrameSumEne_fx[bin], subFrameTotalEne_e[bin], W_extract_h( temp64 ), sub( exp /* 63 - 2q */, exp1 ) /*31 - (2q + exp1 - 32)*/, &subFrameTotalEne_e[bin] );
- move32();
- }
- }
- FOR( bin = 0; bin < nBins; bin++ )
- {
- temp = L_shl_sat( subFrameTotalEne_fx[bin], sub( subFrameTotalEne_e[bin], subFrameSumEne_e[bin] ) ); // subFrameSumEne_e[bin]
- IF( GT_32( subFrameSumEne_fx[bin], temp ) )
- {
- subFrameTotalEne_fx[bin] = subFrameSumEne_fx[bin];
- move32();
- subFrameTotalEne_e[bin] = subFrameSumEne_e[bin];
- move16();
- }
- }
+ gainCache[idx].azi = -1000; /* Use -1000 as value for uninitialized cache. */
+ move16();
}
+ dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe];
+
/* Determine target covariance matrix containing target binaural properties */
FOR( bin = 0; bin < nBins; bin++ )
{
@@ -2434,7 +1761,11 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric
spreadCoh_fx = s_max( spreadCoh_fx, altSpreadCoh_fx );
}
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked, *hDiracDecBin->phHrtfParambin );
+#else
getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked );
+#endif
Word16 q_lr = Q28;
move16();
@@ -2485,7 +1816,11 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric
rImagp_fx = Mpy_32_32( rImagp_fx, centerMul_fx ); // Q25
/* Apply the gain for the left source of the three coherent sources */
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked, *hDiracDecBin->phHrtfParambin );
+#else
getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked );
+#endif
hrtfEneSides_fx = L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25
L_add( Mpy_32_32( lImagpTmp_fx, lImagpTmp_fx ), // Q25
@@ -2499,7 +1834,11 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric
/* Apply the gain for the right source of the three coherent sources.
* -30 degrees to 330 wrapping due to internal functions. */
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked, *hDiracDecBin->phHrtfParambin );
+#else
getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked );
+#endif
hrtfEneSides_fx = L_add( hrtfEneSides_fx,
L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25
@@ -2675,91 +2014,32 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric
move32();
}
- test();
- /* Temporal IIR-type smoothing of covariance matrices. Also apply encoding quality based smoothing factor. */
- IF( EQ_32( ivas_format, MASA_FORMAT ) && LT_32( ivas_total_brate, MASA_STEREO_MIN_BITRATE ) )
- {
- IIReneLimiterFactor_fx = L_add( L_shl( 16, Q26 ), L_sub( L_shl( 1, Q26 ), L_shr( qualityBasedSmFactor_fx, 5 ) ) ); // Q26
- }
- ELSE
- {
- IIReneLimiterFactor_fx = L_add( L_shl( 8, Q26 ), L_sub( L_shl( 1, Q26 ), L_shr( qualityBasedSmFactor_fx, 5 ) ) ); // Q26
- }
-
FOR( bin = 0; bin < nBins; bin++ )
{
- Word32 IIReneLimiter_fx;
-
- /* Temporally smooth cov mtx estimates for resulting mixing matrix stability. The design principle is that
- * the energy history (IIR) must not be more than double of the current frame energy. This provides more
- * robust performance at energy offsets when compared to typical IIR averaging. */
- Word16 num_e, den_e;
- Word32 num, den;
- num = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEne_fx[0][bin], hDiracDecBin->ChEne_e[0][bin], hDiracDecBin->ChEne_fx[1][bin], hDiracDecBin->ChEne_e[1][bin], &num_e );
- num = Mpy_32_32( num, IIReneLimiterFactor_fx ); /*Q = (31 - num_e + 26 - 31) = (26 - num_e)*/
- den_e = 0;
- move16();
- den = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEnePrev_fx[0][bin], hDiracDecBin->ChEnePrev_e[0][bin], hDiracDecBin->ChEnePrev_fx[1][bin], hDiracDecBin->ChEnePrev_e[1][bin], &den_e );
- den = L_max( 1, den );
- IIReneLimiter_fx = BASOP_Util_Divide3232_Scale_cadence( num, den, &exp );
- exp = add( sub( num_e, den_e ), add( 5, exp ) );
- IF( L_shr_sat( IIReneLimiter_fx, sub( 31, exp ) ) > 0 )
- {
- IIReneLimiter_fx = ONE_IN_Q31; /*Q31*/
- move32();
- }
- ELSE
- {
- IIReneLimiter_fx = L_shl( IIReneLimiter_fx, exp ); /*Q31*/
- }
-
- hDiracDecBin->ChCrossRe_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossRe_fx[bin], qualityBasedSmFactor_fx );
- hDiracDecBin->ChCrossIm_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossIm_fx[bin], qualityBasedSmFactor_fx );
hDiracDecBin->ChCrossReOut_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossReOut_fx[bin], qualityBasedSmFactor_fx );
hDiracDecBin->ChCrossImOut_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossImOut_fx[bin], qualityBasedSmFactor_fx );
- move32();
- move32();
- move32();
- move32();
FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
- hDiracDecBin->ChEne_fx[ch][bin] = Mpy_32_32( hDiracDecBin->ChEne_fx[ch][bin], qualityBasedSmFactor_fx );
hDiracDecBin->ChEneOut_fx[ch][bin] = Mpy_32_32( hDiracDecBin->ChEneOut_fx[ch][bin], qualityBasedSmFactor_fx );
move32();
- move32();
}
-
- hDiracDecBin->ChCrossRe_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossRe_fx[bin], hDiracDecBin->ChCrossRe_e[bin], Mpy_32_32( hDiracDecBin->ChCrossRePrev_fx[bin], IIReneLimiter_fx ), hDiracDecBin->ChCrossRePrev_e[bin], &hDiracDecBin->ChCrossRe_e[bin] );
- hDiracDecBin->ChCrossIm_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossIm_fx[bin], hDiracDecBin->ChCrossIm_e[bin], Mpy_32_32( hDiracDecBin->ChCrossImPrev_fx[bin], IIReneLimiter_fx ), hDiracDecBin->ChCrossImPrev_e[bin], &hDiracDecBin->ChCrossIm_e[bin] );
- hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossReOutPrev_fx[bin], IIReneLimiter_fx ), hDiracDecBin->ChCrossReOutPrev_e[bin], &hDiracDecBin->ChCrossReOut_e[bin] );
- hDiracDecBin->ChCrossImOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossImOut_fx[bin], hDiracDecBin->ChCrossImOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossImOutPrev_fx[bin], IIReneLimiter_fx ), hDiracDecBin->ChCrossImOutPrev_e[bin], &hDiracDecBin->ChCrossImOut_e[bin] );
- move32();
- move32();
+ hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossReOutPrev_fx[bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChCrossReOutPrev_e[bin], &hDiracDecBin->ChCrossReOut_e[bin] );
+ hDiracDecBin->ChCrossImOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossImOut_fx[bin], hDiracDecBin->ChCrossImOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossImOutPrev_fx[bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChCrossImOutPrev_e[bin], &hDiracDecBin->ChCrossImOut_e[bin] );
move32();
move32();
FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
- hDiracDecBin->ChEne_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEne_fx[ch][bin], hDiracDecBin->ChEne_e[ch][bin], Mpy_32_32( hDiracDecBin->ChEnePrev_fx[ch][bin], IIReneLimiter_fx ), hDiracDecBin->ChEnePrev_e[ch][bin], &hDiracDecBin->ChEne_e[ch][bin] );
- hDiracDecBin->ChEneOut_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[ch][bin], hDiracDecBin->ChEneOut_e[ch][bin], Mpy_32_32( hDiracDecBin->ChEneOutPrev_fx[ch][bin], IIReneLimiter_fx ), hDiracDecBin->ChEneOutPrev_e[ch][bin], &hDiracDecBin->ChEneOut_e[ch][bin] );
- move32();
+ hDiracDecBin->ChEneOut_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[ch][bin], hDiracDecBin->ChEneOut_e[ch][bin], Mpy_32_32( hDiracDecBin->ChEneOutPrev_fx[ch][bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChEneOutPrev_e[ch][bin], &hDiracDecBin->ChEneOut_e[ch][bin] );
move32();
}
- /* Store energy values and coefficients for next round */
- hDiracDecBin->ChCrossRePrev_fx[bin] = hDiracDecBin->ChCrossRe_fx[bin];
- move32();
- hDiracDecBin->ChCrossImPrev_fx[bin] = hDiracDecBin->ChCrossIm_fx[bin];
- move32();
+
hDiracDecBin->ChCrossReOutPrev_fx[bin] = hDiracDecBin->ChCrossReOut_fx[bin];
move32();
hDiracDecBin->ChCrossImOutPrev_fx[bin] = hDiracDecBin->ChCrossImOut_fx[bin];
move32();
- hDiracDecBin->ChCrossRePrev_e[bin] = hDiracDecBin->ChCrossRe_e[bin];
- move16();
- hDiracDecBin->ChCrossImPrev_e[bin] = hDiracDecBin->ChCrossIm_e[bin];
- move16();
hDiracDecBin->ChCrossReOutPrev_e[bin] = hDiracDecBin->ChCrossReOut_e[bin];
move16();
hDiracDecBin->ChCrossImOutPrev_e[bin] = hDiracDecBin->ChCrossImOut_e[bin];
@@ -2769,10 +2049,10 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric
{
hDiracDecBin->ChEnePrev_fx[ch][bin] = hDiracDecBin->ChEne_fx[ch][bin];
move32();
- hDiracDecBin->ChEneOutPrev_fx[ch][bin] = hDiracDecBin->ChEneOut_fx[ch][bin];
- move32();
hDiracDecBin->ChEnePrev_e[ch][bin] = hDiracDecBin->ChEne_e[ch][bin];
move16();
+ hDiracDecBin->ChEneOutPrev_fx[ch][bin] = hDiracDecBin->ChEneOut_fx[ch][bin];
+ move32();
hDiracDecBin->ChEneOutPrev_e[ch][bin] = hDiracDecBin->ChEneOut_e[ch][bin];
move16();
}
@@ -2780,7 +2060,7 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric
return;
}
-#endif
+
static void ivas_dirac_dec_binaural_determine_processing_matrices_fx(
DIRAC_DEC_BIN_HANDLE hDiracDecBin,
@@ -3108,6 +2388,21 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices_fx(
exp = sub( get_min_scalefactor( resultMtxRe_fx[0][0], resultMtxRe_fx[1][1] ), 2 );
tmp2 = L_add( L_shl( resultMtxRe_fx[0][0], exp ), L_shl( resultMtxRe_fx[1][1], exp ) );
q_tmp2 = add( q_res, exp );
+
+ /*Limiting value to Q63*/
+ IF( GT_16( q_tmp2, 63 ) )
+ {
+ tmp2 = L_shl( tmp2, sub( 63, q_tmp2 ) );
+ q_tmp2 = 63;
+ move16();
+ IF( EQ_32( tmp2, -1 ) )
+ {
+ tmp2 = 0;
+ move32();
+ q_tmp2 = 31;
+ move16();
+ }
+ }
IF( LT_16( q_CrEne, q_tmp2 ) )
{
realizedOutputEne_fx = L_add( tmp1, L_shr( tmp2, sub( q_tmp2, q_CrEne ) ) );
@@ -3246,7 +2541,8 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices_fx(
q_tmp_sq = sub( 31, exp );
IF( EQ_16( ivas_format, MASA_ISM_FORMAT ) )
{
- gainFactor_fx = Mpy_32_32( 1705746262, tmp1 ); // 1705746262 = 0.7943f in Q31
+ Word32 gainfactor_fx = L_shl( (Word32) OMASA_TDREND_MATCHING_GAIN_FX, Q16 ); // constant in Q31 as Word32
+ gainFactor_fx = Mpy_32_32( gainfactor_fx, tmp1 ); // 1705746262 = 0.7943f in Q31
}
ELSE
{
@@ -3289,7 +2585,11 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices_fx(
q_processMtxPrev_SCCR[bin] = q_processMtx_bin;
move16();
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[chB], isHeadtracked, *hDiracDecBin->phHrtfParambin );
+#else
getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[chB], isHeadtracked );
+#endif
hDiracDecBin->processMtxRe_fx[0][add( chB, 2 )][bin] = extract_h( Mpy_32_32( lRealp_fx, gainFactor_fx ) );
move16();
@@ -3392,9 +2692,7 @@ static void ivas_dirac_dec_binaural_process_output_fx(
const Word16 numInChannels,
const Word16 processReverb,
const Word16 subframe,
- const Word16 q_mat
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- ,
+ const Word16 q_mat,
Word32 outRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
Word32 outIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
Word32 reverbRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
@@ -3402,9 +2700,7 @@ static void ivas_dirac_dec_binaural_process_output_fx(
Word32 decorrRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
Word32 decorrIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
Word16 *Q_inp_mix,
- const Word8 recompute
-#endif
-)
+ const Word8 recompute )
{
Word16 slot, bin, chA, chB;
Word16 nBins;
@@ -3420,10 +2716,6 @@ static void ivas_dirac_dec_binaural_process_output_fx(
Word32 decSlotRe_fx[BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX], decSlotIm_fx[BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX];
Word32 outSlotRe_fx[CLDFB_NO_CHANNELS_MAX], outSlotIm_fx[CLDFB_NO_CHANNELS_MAX];
-#ifndef SPLIT_REND_WITH_HEAD_ROT
- Word32 reverbRe_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
- Word32 reverbIm_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
-#endif
Word16 q_inp[6][CLDFB_SLOTS_PER_SUBFRAME];
Word16 interpVal_fx;
Word32 *decSlotRePointer_fx;
@@ -3434,21 +2726,15 @@ static void ivas_dirac_dec_binaural_process_output_fx(
IF( processReverb )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( recompute == 1 )
{
-#endif
/* Process second / room effect part of binaural output when needed */
ivas_binaural_reverb_processSubframe_fx( hDiracDecBin->hReverb, numInChannels, nSlots, inRe_fx, inIm_fx, reverbRe_fx, reverbIm_fx );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
}
-#endif
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( EQ_16( recompute, 1 ) )
{
-#endif
// scaling input and reverb to same q//
// input scaling is to maintain precision in ivas_dirac_dec_decorrelate_slot fn//
Word16 shift = s_min( L_norm_arr( cldfbSynDec[0]->cldfb_state_fx, cldfbSynDec[0]->p_filter_length ), L_norm_arr( cldfbSynDec[1]->cldfb_state_fx, cldfbSynDec[1]->p_filter_length ) );
@@ -3461,11 +2747,7 @@ static void ivas_dirac_dec_binaural_process_output_fx(
q_inp[i][j] = s_min( L_norm_arr( inRe_fx[i][j], nBins ), L_norm_arr( inIm_fx[i][j], nBins ) );
move16();
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( processReverb && EQ_16( recompute, 1 ) ) && LT_16( i, 2 ) )
-#else
- IF( ( processReverb ) && LT_16( i, 2 ) )
-#endif
{
q_reverb = s_min( L_norm_arr( reverbRe_fx[i][j], CLDFB_NO_CHANNELS_MAX ), L_norm_arr( reverbIm_fx[i][j], CLDFB_NO_CHANNELS_MAX ) );
q_inp[i][j] = s_min( q_reverb, q_inp[i][j] );
@@ -3493,11 +2775,7 @@ static void ivas_dirac_dec_binaural_process_output_fx(
scale_sig32( inRe_fx[i][j], nBins, q_inp_mix ); /*q_input + q_inp_mix*/
scale_sig32( inIm_fx[i][j], nBins, q_inp_mix ); /*q_input + q_inp_mix*/
test();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( ( processReverb && EQ_16( recompute, 1 ) ) && LT_16( i, 2 ) )
-#else
- IF( ( processReverb ) && LT_16( i, 2 ) )
-#endif
{
scale_sig32( reverbRe_fx[i][j], CLDFB_NO_CHANNELS_MAX, sub( add( q_inp_mix, q_mat ), 15 ) ); /*q_inp_mix+q_mat-15*/
scale_sig32( reverbIm_fx[i][j], CLDFB_NO_CHANNELS_MAX, sub( add( q_inp_mix, q_mat ), 15 ) ); /*q_inp_mix+q_mat-15*/
@@ -3512,7 +2790,6 @@ static void ivas_dirac_dec_binaural_process_output_fx(
cldfbSynDec[1]->Q_cldfb_state = add( cldfbSynDec[1]->Q_cldfb_state, cldfb_state_shift );
move16();
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
*Q_inp_mix = q_inp_mix;
move16();
}
@@ -3520,7 +2797,6 @@ static void ivas_dirac_dec_binaural_process_output_fx(
{
q_inp_mix = *Q_inp_mix;
}
-#endif
q_inp_mix = add( q_inp_mix, q_input );
@@ -3546,12 +2822,9 @@ static void ivas_dirac_dec_binaural_process_output_fx(
test();
IF( !hDiracDecBin->useTdDecorr && ( max_band_decorr > 0 ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( recompute == 1 )
{
-#endif
ivas_dirac_dec_decorrelate_slot_fx( hDiracDecBin, nBins, slot, inRe_fx, inIm_fx, q_inp_mix, decSlotRe_fx, decSlotIm_fx );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
{
Copy32( decSlotRe_fx[chA], decorrRe_fx[chA][slot], CLDFB_NO_CHANNELS_MAX );
@@ -3566,7 +2839,6 @@ static void ivas_dirac_dec_binaural_process_output_fx(
Copy32( decorrIm_fx[chA][slot], decSlotIm_fx[chA], CLDFB_NO_CHANNELS_MAX );
}
}
-#endif
}
FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
@@ -3656,7 +2928,6 @@ static void ivas_dirac_dec_binaural_process_output_fx(
outSlotRePr_fx = &( outSlotRe_fx[0] );
outSlotImPr_fx = &( outSlotIm_fx[0] );
-#ifdef SPLIT_REND_WITH_HEAD_ROT
IF( outRe_fx != NULL && outIm_fx != NULL )
{
/* provide the data outside in CLDFB domain => mainly for split rendering */
@@ -3676,27 +2947,13 @@ static void ivas_dirac_dec_binaural_process_output_fx(
cldfbSynDec[chA]->Q_cldfb_state = sub( q_result, 1 );
move16();
}
-#else
-#ifdef OPT_AVOID_STATE_BUF_RESCALE
- cldfbSynthesis_ivas_fx( &outSlotRePr_fx, &outSlotImPr_fx, &( output_fx[chA][nBins * slot + offsetSamples] ), nBins, 0, 0, cldfbSynDec[chA] );
-#else
- cldfbSynthesis_ivas_fx( &outSlotRePr_fx, &outSlotImPr_fx, &( output_fx[chA][nBins * slot + offsetSamples] ), nBins, 0, cldfbSynDec[chA] );
-#endif
- cldfbSynDec[chA]->Q_cldfb_state = sub( q_result, 1 );
- move16();
-#endif /* SPLIT_REND_WITH_HEAD_ROT */
}
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( recompute == 1 )
{
*q_out = sub( q_result, 1 );
move16();
}
-#else
- *q_out = sub( q_result, 1 );
- move16();
-#endif
return;
}
@@ -4417,17 +3674,10 @@ static void eig2x2_fx(
tmp3 = BASOP_Util_Add_Mant32Exp( tmp2, sub( 31, q_tmp2 ), epsilon_mant, epsilon_exp, &exp_tmp3 );
-#if 1
- tmp2 = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, tmp3, &exp );
+ tmp2 = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, tmp3, &exp );
exp = sub( exp, sub( Q30, sub( 31, exp_tmp3 ) ) );
normVal_fx = Sqrt32( tmp2, &exp ); // q_tmp2
q_tmp2 = sub( 31, exp );
-#else
- /* Note: This code part does not work yet, see pipeline issue for BASOP #1009 */
- /* although the same code works at other places: mantissa and q_format is fine */
- normVal_fx = ISqrt32( tmp3, &exp );
- q_tmp2 = sub( 31, exp );
-#endif
IF( LT_16( q_tmp1, q_c ) )
{
@@ -4493,17 +3743,10 @@ static void eig2x2_fx(
tmp3 = BASOP_Util_Add_Mant32Exp( tmp2, sub( 31, q_tmp2 ), epsilon_mant, epsilon_exp, &exp_tmp3 );
-#if 1
- tmp2 = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, tmp3, &exp );
+ tmp2 = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, tmp3, &exp );
exp = sub( exp, sub( Q30, sub( 31, exp_tmp3 ) ) );
normVal_fx = Sqrt32( tmp2, &exp ); // q_tmp2
q_tmp2 = sub( 31, exp );
-#else
- /* Note: This code part does not work yet, see pipeline issue for BASOP #1009 */
- /* although the same code works at other places: mantissa and q_format is fine */
- normVal_fx = ISqrt32( tmp3, &exp_tmp3 );
- q_tmp2 = sub( 31, exp_tmp3 );
-#endif
IF( LT_16( q_tmp1, q_c ) )
{
@@ -4688,24 +3931,53 @@ static void matrixTransp1Mul_fx(
Word16 chA, chB;
Word16 size = i_mult( BINAURAL_CHANNELS, BINAURAL_CHANNELS );
+ Word64 tmp_outRe_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS];
+ Word64 tmp_outIm_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS];
+ Word16 q_tmp_outRe_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS];
+ Word16 q_tmp_outIm_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS];
+ Word64 tmp64_1, tmp64_2;
+ Word16 tmp16, q_common = 63;
+ move16();
+
+ FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
+ {
+ FOR( chB = 0; chB < BINAURAL_CHANNELS; chB++ )
+ {
+ tmp64_1 = W_mac_32_32( W_mult_32_32( Are_fx[0][chA], Bre_fx[0][chB] ), Are_fx[1][chA], Bre_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 )
+ tmp64_2 = W_mac_32_32( W_mult_32_32( Aim_fx[0][chA], Bim_fx[0][chB] ), Aim_fx[1][chA], Bim_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 )
+ tmp_outRe_fx[chA][chB] = W_add( tmp64_1, tmp64_2 ); // Q: add( add( q_A, q_B ), 1 )
+ move64();
+ tmp16 = W_norm( tmp_outRe_fx[chA][chB] );
+ tmp_outRe_fx[chA][chB] = W_shl( tmp_outRe_fx[chA][chB], tmp16 ); // Q:add( tmp16, add( add( q_A, q_B ), 1 ) )
+ move64();
+ q_tmp_outRe_fx[chA][chB] = add( tmp16, add( add( q_A, q_B ), 1 ) );
+ move16();
+ q_common = s_min( q_tmp_outRe_fx[chA][chB], q_common );
+
+
+ tmp64_1 = W_mac_32_32( W_mult_32_32( Are_fx[0][chA], Bim_fx[0][chB] ), Are_fx[1][chA], Bim_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 )
+ tmp64_2 = W_mac_32_32( W_mult_32_32( Aim_fx[0][chA], Bre_fx[0][chB] ), Aim_fx[1][chA], Bre_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 )
+ tmp_outIm_fx[chA][chB] = W_sub( tmp64_1, tmp64_2 ); // Q: add( add( q_A, q_B ), 1 )
+ move64();
+ tmp16 = W_norm( tmp_outIm_fx[chA][chB] );
+ tmp_outIm_fx[chA][chB] = W_shl( tmp_outIm_fx[chA][chB], tmp16 ); // Q:add( tmp16, add( add( q_A, q_B ), 1 ) )
+ move64();
+ q_tmp_outIm_fx[chA][chB] = add( tmp16, add( add( q_A, q_B ), 1 ) );
+ move16();
+ q_common = s_min( q_tmp_outIm_fx[chA][chB], q_common );
+ }
+ }
FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
{
FOR( chB = 0; chB < BINAURAL_CHANNELS; chB++ )
{
- outRe_fx[chA][chB] = Madd_32_32( Madd_32_32( Madd_32_32( Mpy_32_32( Are_fx[0][chA], Bre_fx[0][chB] ),
- Are_fx[1][chA], Bre_fx[1][chB] ),
- Aim_fx[0][chA], Bim_fx[0][chB] ),
- Aim_fx[1][chA], Bim_fx[1][chB] );
+ outRe_fx[chA][chB] = W_extract_h( W_shl( tmp_outRe_fx[chA][chB], sub( q_common, q_tmp_outRe_fx[chA][chB] ) ) );
move32();
- outIm_fx[chA][chB] = Msub_32_32( Msub_32_32( Madd_32_32( Mpy_32_32( Are_fx[0][chA], Bim_fx[0][chB] ),
- Are_fx[1][chA], Bim_fx[1][chB] ),
- Aim_fx[0][chA], Bre_fx[0][chB] ),
- Aim_fx[1][chA], Bre_fx[1][chB] );
+ outIm_fx[chA][chB] = W_extract_h( W_shl( tmp_outIm_fx[chA][chB], sub( q_common, q_tmp_outIm_fx[chA][chB] ) ) );
move32();
}
}
- *q_out = sub( add( q_A, q_B ), 31 );
-
+ *q_out = sub( q_common, 32 );
move16();
if ( L_and( is_zero_arr( outRe_fx[0], size ), is_zero_arr( outIm_fx[0], size ) ) )
{
@@ -4839,11 +4111,11 @@ static void chol2x2_fx(
// 4611686 = 1e-12 in Q62
IF( outRe[0][0] == 0 )
{
- outRe[1][0] = BASOP_Util_Divide3232_Scale_cadence( c_re, 4611686, &exp );
+ outRe[1][0] = BASOP_Util_Divide3232_Scale_newton( c_re, 4611686, &exp );
move32();
q_re2 = add( sub( 31, exp ), sub( q_c, 62 ) );
- outIm[1][0] = BASOP_Util_Divide3232_Scale_cadence( c_im, 4611686, &exp );
+ outIm[1][0] = BASOP_Util_Divide3232_Scale_newton( c_im, 4611686, &exp );
move32();
q_im = add( sub( 31, exp ), sub( q_c, 62 ) );
}
@@ -4900,7 +4172,7 @@ static void chol2x2_fx(
}
ELSE
{
- temp = BASOP_Util_Divide3232_Scale_cadence( temp, e1, &exp );
+ temp = BASOP_Util_Divide3232_Scale_newton( temp, e1, &exp );
q_tmp = add( sub( 31, exp ), sub( q_tmp, q_e ) );
}
if ( temp == 0 )
@@ -4945,7 +4217,7 @@ static void chol2x2_fx(
// 4611686 = Q62
IF( outRe[1][1] == 0 )
{
- // outRe[0][1] = BASOP_Util_Divide3232_Scale_cadence( c_re, 4611686, &exp );
+ // outRe[0][1] = BASOP_Util_Divide3232_Scale_newton( c_re, 4611686, &exp );
Word32 tmp1 = 1953125005; /* 1/4611686 Q62 */
exp = 9;
@@ -4953,7 +4225,7 @@ static void chol2x2_fx(
move32();
q_re2 = add( sub( 31, exp ), sub( q_c, 62 ) );
- // outIm[0][1] = BASOP_Util_Divide3232_Scale_cadence( -c_im, 4611686, &exp );
+ // outIm[0][1] = BASOP_Util_Divide3232_Scale_newton( -c_im, 4611686, &exp );
outIm[0][1] = Mpy_32_32( tmp1, -c_im );
move32();
q_im = add( sub( 31, exp ), sub( q_c, 62 ) );
@@ -4961,13 +4233,13 @@ static void chol2x2_fx(
ELSE
{
{
- // outRe[0][1] = BASOP_Util_Divide3232_Scale_cadence( c_re, outRe[1][1], &exp );
- Word32 tmp1 = BASOP_Util_Divide3232_Scale_cadence( 0x7FFFFFFF, outRe[1][1], &exp );
+ // outRe[0][1] = BASOP_Util_Divide3232_Scale_newton( c_re, outRe[1][1], &exp );
+ Word32 tmp1 = BASOP_Util_Divide3232_Scale_newton( 0x7FFFFFFF, outRe[1][1], &exp );
outRe[0][1] = Mpy_32_32( tmp1, c_re );
move32();
q_re2 = add( sub( 31, exp ), sub( q_c, q_re1 ) );
- // outIm[0][1] = BASOP_Util_Divide3232_Scale_cadence( -c_im, outRe[1][1], &exp );
+ // outIm[0][1] = BASOP_Util_Divide3232_Scale_newton( -c_im, outRe[1][1], &exp );
outIm[0][1] = Mpy_32_32( tmp1, -c_im );
move32();
q_im = add( sub( 31, exp ), sub( q_c, q_re1 ) );
@@ -4990,12 +4262,12 @@ static void chol2x2_fx(
// 4611686 = 1e-12 in Q62
IF( e2 == 0 )
{
- temp = BASOP_Util_Divide3232_Scale_cadence( temp, 4611686, &exp );
+ temp = BASOP_Util_Divide3232_Scale_newton( temp, 4611686, &exp );
q_tmp = add( sub( 31, exp ), sub( q_tmp, 62 ) );
}
ELSE
{
- temp = BASOP_Util_Divide3232_Scale_cadence( temp, e2, &exp );
+ temp = BASOP_Util_Divide3232_Scale_newton( temp, e2, &exp );
q_tmp = add( sub( 31, exp ), sub( q_tmp, q_e ) );
}
if ( temp == 0 )
@@ -5143,7 +4415,7 @@ static void formulate2x2MixingMatrix_fx(
}
ELSE
{
- maxEneDiv_fx = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, maxEne_fx, &exp );
+ maxEneDiv_fx = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, maxEne_fx, &exp );
q_maxEneDiv = add( sub( 31, exp ), sub( Q30, q_maxEne ) );
}
exp = norm_l( maxEneDiv_fx );
@@ -5208,7 +4480,7 @@ static void formulate2x2MixingMatrix_fx(
}
ELSE
{
- temp = BASOP_Util_Divide3232_Scale_cadence( E_out1, 4611686, &exp ); // 4611686 = Q62
+ temp = BASOP_Util_Divide3232_Scale_newton( E_out1, 4611686, &exp ); // 4611686 = Q62
exp = sub( exp, sub( q_eout, 62 ) );
Ghat_fx[0] = Sqrt32( temp, &exp ); // Q = 31 - exp
}
@@ -5217,7 +4489,7 @@ static void formulate2x2MixingMatrix_fx(
{
temp = BASOP_Util_Add_Mant32Exp( temp, sub( 31, q_ein ), EPSILON_MANT, EPSILON_EXP, &exp_temp );
- temp = BASOP_Util_Divide3232_Scale_cadence( E_out1, temp, &exp );
+ temp = BASOP_Util_Divide3232_Scale_newton( E_out1, temp, &exp );
exp = sub( exp, sub( q_eout, sub( 31, exp_temp ) ) );
Ghat_fx[0] = Sqrt32( temp, &exp ); // Q = 31 - exp
}
@@ -5235,7 +4507,7 @@ static void formulate2x2MixingMatrix_fx(
}
ELSE
{
- temp = BASOP_Util_Divide3232_Scale_cadence( E_out2, 4611686, &exp1 ); // 4611686 = Q62
+ temp = BASOP_Util_Divide3232_Scale_newton( E_out2, 4611686, &exp1 ); // 4611686 = Q62
exp1 = sub( exp1, sub( q_eout, 62 ) );
Ghat_fx[1] = Sqrt32( temp, &exp1 ); // Q = 31 - exp1
}
@@ -5244,7 +4516,7 @@ static void formulate2x2MixingMatrix_fx(
{
temp = BASOP_Util_Add_Mant32Exp( temp, sub( 31, q_ein ), EPSILON_MANT, EPSILON_EXP, &exp_temp );
- temp = BASOP_Util_Divide3232_Scale_cadence( E_out2, temp, &exp1 );
+ temp = BASOP_Util_Divide3232_Scale_newton( E_out2, temp, &exp1 );
exp1 = sub( exp1, sub( q_eout, sub( 31, exp_temp ) ) );
Ghat_fx[1] = Sqrt32( temp, &exp1 ); // Q = 31 - exp1
}
@@ -5303,7 +4575,7 @@ static void formulate2x2MixingMatrix_fx(
}
ELSE
{
- temp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, D_fx[0], &exp );
+ temp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, D_fx[0], &exp );
exp = sub( exp, sub( Q30, q_D ) );
}
div_fx[0] = Sqrt32( temp, &exp ); // Q = 31 - exp
@@ -5436,7 +4708,7 @@ static void formulate2x2MixingMatrix_fx(
Word16 Pre_shift, Pim_shift;
temp = BASOP_Util_Add_Mant32Exp( Sx_fx[chB], sub( 31, q_Sx ), EPSILON_MANT, EPSILON_EXP, &exp_temp );
- temp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, temp, &exp );
+ temp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, temp, &exp );
Pre_shift = norm_l( Pre_fx[chA][chB] );
Pim_shift = norm_l( Pim_fx[chA][chB] );
Pre_fx[chA][chB] = Mpy_32_32( L_shl( Pre_fx[chA][chB], Pre_shift ), temp );
@@ -5480,7 +4752,7 @@ static void formulate2x2MixingMatrix_fx(
{
Word16 Pre_shift, Pim_shift;
temp = BASOP_Util_Add_Mant32Exp( Sx_fx[chB], sub( 31, q_Sx ), EPSILON_MANT, EPSILON_EXP, &exp_temp );
- temp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, temp, &exp );
+ temp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, temp, &exp );
q_temp = add( sub( sub( q_P, exp ), sub( 31, Q30 ) ), exp_temp );
Pre_shift = norm_l( Pre_fx[0][chB] );
@@ -5564,7 +4836,13 @@ static void getDirectPartGains_fx(
const UWord8 renderStereoOutputInsteadOfBinaural,
Word32 Rmat[3][3], /*Q30*/
PARAMBIN_HRTF_GAIN_CACHE *gainCache,
- const Word16 isHeadtracked )
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ const Word16 isHeadtracked,
+ HRTFS_PARAMBIN_HANDLE hHrtfParambin
+#else
+ const Word16 isHeadtracked
+#endif
+)
{
// float aziRad, eleRad;
Word32 y, mappedX;
@@ -5693,7 +4971,11 @@ static void getDirectPartGains_fx(
test();
IF( EQ_16( aziDeg, gainCache->azi ) && EQ_16( eleDeg, gainCache->ele ) )
{
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ hrtfShGetHrtf_fx( bin, aziDeg, eleDeg, lRealp, lImagp, rRealp, rImagp, gainCache, TRUE, hHrtfParambin );
+#else
hrtfShGetHrtf_fx( bin, aziDeg, eleDeg, lRealp, lImagp, rRealp, rImagp, gainCache, TRUE );
+#endif
}
ELSE
{
@@ -5708,7 +4990,11 @@ static void getDirectPartGains_fx(
// eleDeg = L_shr(eleDeg_32, 22);
// aziDeg = L_shr(aziDeg_32, 22);
}
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ hrtfShGetHrtf_fx( bin, aziDeg, eleDeg, lRealp, lImagp, rRealp, rImagp, gainCache, FALSE, hHrtfParambin );
+#else
hrtfShGetHrtf_fx( bin, aziDeg, eleDeg, lRealp, lImagp, rRealp, rImagp, gainCache, FALSE );
+#endif
}
}
@@ -5724,9 +5010,21 @@ static void hrtfShGetHrtf_fx(
Word32 *rRealp,
Word32 *rImagp,
PARAMBIN_HRTF_GAIN_CACHE *gainCache,
- const Word16 useCachedValue )
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ const Word16 useCachedValue,
+ HRTFS_PARAMBIN_HANDLE hHrtfParambin
+#else
+ const Word16 useCachedValue
+#endif
+)
{
Word16 k;
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ Word16( *hrtfShCoeffsReInt_fx )[16][60];
+ Word16( *hrtfShCoeffsImInt_fx )[16][60];
+ hrtfShCoeffsReInt_fx = hHrtfParambin->hrtfShCoeffsRe_fx;
+ hrtfShCoeffsImInt_fx = hHrtfParambin->hrtfShCoeffsIm_fx;
+#endif
*lRealp = 0;
*lImagp = 0;
@@ -5744,10 +5042,17 @@ static void hrtfShGetHrtf_fx(
FOR( k = 0; k < HRTF_SH_CHANNELS; k++ )
{
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ *lRealp = Madd_32_16( *lRealp, shVec[k], hrtfShCoeffsReInt_fx[0][k][bin] ); // Q28
+ *lImagp = Madd_32_16( *lImagp, shVec[k], hrtfShCoeffsImInt_fx[0][k][bin] ); // Q28
+ *rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsReInt_fx[1][k][bin] ); // Q28
+ *rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsImInt_fx[1][k][bin] ); // Q28
+#else
*lRealp = Madd_32_16( *lRealp, shVec[k], hrtfShCoeffsRe_fx[0][k][bin] ); // Q28
*lImagp = Madd_32_16( *lImagp, shVec[k], hrtfShCoeffsIm_fx[0][k][bin] ); // Q28
*rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsRe_fx[1][k][bin] ); // Q28
*rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsIm_fx[1][k][bin] ); // Q28
+#endif
move32();
move32();
move32();
@@ -5766,11 +5071,18 @@ static void hrtfShGetHrtf_fx(
FOR( k = 0; k < HRTF_SH_CHANNELS; k++ )
{
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ *lRealp = Madd_32_16( *lRealp, shVec[k], hrtfShCoeffsReInt_fx[0][k][bin] ); // Q28
+ *lImagp = Madd_32_16( *lImagp, shVec[k], hrtfShCoeffsImInt_fx[0][k][bin] ); // Q28
+ *rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsReInt_fx[1][k][bin] ); // Q28
+ *rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsImInt_fx[1][k][bin] ); // Q28
+#else
*lRealp = Madd_32_16( *lRealp, shVec[k], hrtfShCoeffsRe_fx[0][k][bin] ); // Q28
*lImagp = Madd_32_16( *lImagp, shVec[k], hrtfShCoeffsIm_fx[0][k][bin] ); // Q28
*rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsRe_fx[1][k][bin] ); // Q28
*rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsIm_fx[1][k][bin] ); // Q28
- gainCache->shVec_fx[k] = shVec[k]; // Q29
+#endif
+ gainCache->shVec_fx[k] = shVec[k]; // Q29
move32();
move32();
move32();
@@ -6208,15 +5520,10 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
MASA_EXT_REND_HANDLE hMasaExtRend,
COMBINED_ORIENTATION_HANDLE hCombinedOrientationData,
Word32 *output_fx[], /* Q11*/
-#ifdef SPLIT_REND_WITH_HEAD_ROT
const Word16 subframe,
const SPLIT_REND_WRAPPER *hSplitRendWrapper,
Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
- Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]
-#else
- const Word16 subframe
-#endif
-)
+ Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] )
{
DIRAC_DEC_BIN_HANDLE hDiracDecBin;
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;
@@ -6227,7 +5534,6 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
Word16 i, j;
Word16 nchan_transport;
Word16 q_mat;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
int16_t pos_idx;
const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData;
Word32 tmp_Cldfb_out_re[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
@@ -6244,9 +5550,6 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
Word16 Q_inp_mix;
hDiracDecBin = hMasaExtRend->hDiracDecBin[0];
-#else
- hDiracDecBin = hMasaExtRend->hDiracDecBin;
-#endif
hSpatParamRendCom = hMasaExtRend->hSpatParamRendCom;
Word32 Cldfb_RealBuffer_in_fx[6][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
@@ -6261,11 +5564,7 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
}
}
Word32 Rmat_fx[3][3];
-#ifdef SPLIT_REND_WITH_HEAD_ROT
hDiracDecBin = hMasaExtRend->hDiracDecBin[0];
-#else
- hDiracDecBin = hMasaExtRend->hDiracDecBin;
-#endif
assert( hDiracDecBin );
hSpatParamRendCom = hMasaExtRend->hSpatParamRendCom;
nBins = hSpatParamRendCom->num_freq_bands;
@@ -6369,29 +5668,21 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
IF( EQ_16( nchan_transport, 2 ) )
{
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/* in case of split rendering, determine the prototype rotation based on the main direction and use the same prototypes for the offset directions */
-#endif
adaptTransportSignalsHeadtracked_fx( hCombinedOrientationData, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat_fx );
ivas_dirac_dec_binaural_check_and_switch_transports_headtracked_fx( hCombinedOrientationData, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat_fx );
}
}
test();
-#ifndef SPLIT_REND_WITH_HEAD_ROT
- ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, Rmat_fx, subframe,
- hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0, NULL, q_inp );
-#endif
/* Always using CLDFB decorrelation in MASA EXT renderer */
max_band_decorr = hDiracDecBin->h_freq_domain_decorr_ap_params->max_band_decorr;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_dirac_dec_binaural_formulate_input_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, subframe,
subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, q_inp );
ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Rmat_fx, subframe,
hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0,
subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, NULL );
-#endif
ivas_dirac_dec_binaural_determine_processing_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, max_band_decorr, Rmat_fx, subframe,
hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0,
@@ -6442,7 +5733,6 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
move16();
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
pMultiBinPoseData = NULL;
if ( hSplitRendWrapper != NULL )
{
@@ -6465,13 +5755,9 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, hMasaExtRend->cldfbSynRend, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat, NULL, NULL,
reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 );
}
-#else
- ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, hMasaExtRend->cldfbSynRend, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat );
-#endif
hDiracDecBin->hDiffuseDist = NULL;
-#ifdef SPLIT_REND_WITH_HEAD_ROT
if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 )
{
/* quaternion-based rotation from ivas_binRenderer_internal.c:ivas_binRenderer(), but using absolute rotation instead of delta rotations */
@@ -6578,7 +5864,6 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
}
/* update this counter only after the last rendering of split directions */
-#endif
hSpatParamRendCom->slots_rendered = add( hSpatParamRendCom->slots_rendered, hSpatParamRendCom->subframe_nbslots[subframe] );
hSpatParamRendCom->subframes_rendered = add( hSpatParamRendCom->subframes_rendered, 1 );
@@ -6596,17 +5881,13 @@ static void ivas_masa_ext_rend_parambin_internal_fx(
}
void ivas_masa_ext_rend_parambin_render_fx(
- MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA ext rend structure */
- COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */
- Word32 *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output Q11*/
-#ifdef SPLIT_REND_WITH_HEAD_ROT
+ MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA ext rend structure */
+ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */
+ Word32 *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output Q11*/
const Word16 num_subframes, /* i : number of subframes to render */
const SPLIT_REND_WRAPPER *hSplitRendWrapper, /* i : split rendering orientation data */
Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : rendered orientations for split rend. real part of cldfb */
Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] /* o : rendered orientations for split rend. imag part of cldfb */
-#else
- const Word16 num_subframes /* i : number of subframes to render */
-#endif
)
{
Word16 subframe;
@@ -6629,11 +5910,7 @@ void ivas_masa_ext_rend_parambin_render_fx(
hSpatParamRendCom->slots_rendered = 0;
move16();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
ivas_masa_ext_rend_parambin_internal_fx( hMasaExtRend, hCombinedOrientationData, p_output, hSpatParamRendCom->dirac_read_idx, hSplitRendWrapper, Cldfb_Out_Real, Cldfb_Out_Imag );
-#else
- ivas_masa_ext_rend_parambin_internal_fx( hMasaExtRend, hCombinedOrientationData, p_output, hSpatParamRendCom->dirac_read_idx );
-#endif
FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
p_output[ch] += n_samples_sf;
diff --git a/lib_rend/ivas_dirac_decorr_dec_fx.c b/lib_rend/ivas_dirac_decorr_dec_fx.c
index 1afac99c4157d81f9bba3dcdb70fd94669950391..9b2bf02d74943af89a58d3608a206131598894ed 100644
--- a/lib_rend/ivas_dirac_decorr_dec_fx.c
+++ b/lib_rend/ivas_dirac_decorr_dec_fx.c
@@ -63,8 +63,8 @@
* Local function prototypes
*------------------------------------------------------------------------*/
-static void get_lattice_coeffs_fx( const Word16 band_index, const Word16 channel_index, Word16 *lattice_coeffs );
-static void lattice2allpass_fx( const Word16 filter_length, const Word16 *lattice_coeffs_fx, Word16 *filter_coeffs_num_real_fx, Word16 *filter_coeffs_den_real_fx );
+static void get_lattice_coeffs_fx( const Word16 band_index, const Word16 channel_index, Word32 *lattice_coeffs );
+static void lattice2allpass_fx( const Word16 filter_length, const Word32 *lattice_coeffs_fx, Word32 *filter_coeffs_num_real_fx, Word32 *filter_coeffs_den_real_fx );
/*-------------------------------------------------------------------------
* ivas_dirac_dec_decorr_open()
@@ -90,7 +90,8 @@ ivas_error ivas_dirac_dec_decorr_open_fx(
Word16 split_frequencies_bands[DIRAC_DECORR_NUM_SPLIT_BANDS + 1] = { 0, 0, 0, 23768 };
move16();
Word16 *split_freq_ptr;
- Word16 cur_lattice_delta_phi_fx, lattice_coeffs_fx[2 * DIRAC_MAX_DECORR_FILTER_LEN];
+ Word16 cur_lattice_delta_phi_fx;
+ Word32 lattice_coeffs_fx[2 * DIRAC_MAX_DECORR_FILTER_LEN];
ivas_error error;
@@ -277,12 +278,12 @@ ivas_error ivas_dirac_dec_decorr_open_fx(
freq_domain_decorr_ap_state->q_decorr_buffer = Q31;
move16();
- IF( ( freq_domain_decorr_ap_params->filter_coeff_num_real_fx = (Word16 *) malloc( sizeof( Word16 ) * imult1616( add( ap_filter_length[split_band_index_start], 1 ), imult1616( freq_domain_decorr_ap_params->max_band_decorr, num_outputs_diff ) ) ) ) == NULL )
+ IF( ( freq_domain_decorr_ap_params->filter_coeff_num_real_fx = (Word32 *) malloc( sizeof( Word32 ) * imult1616( add( ap_filter_length[split_band_index_start], 1 ), imult1616( freq_domain_decorr_ap_params->max_band_decorr, num_outputs_diff ) ) ) ) == NULL )
{
return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD decorrelator\n" ) );
}
- IF( ( freq_domain_decorr_ap_params->filter_coeff_den_real_fx = (Word16 *) malloc( sizeof( Word16 ) * imult1616( add( ap_filter_length[split_band_index_start], 1 ), imult1616( freq_domain_decorr_ap_params->max_band_decorr, num_outputs_diff ) ) ) ) == NULL )
+ IF( ( freq_domain_decorr_ap_params->filter_coeff_den_real_fx = (Word32 *) malloc( sizeof( Word32 ) * imult1616( add( ap_filter_length[split_band_index_start], 1 ), imult1616( freq_domain_decorr_ap_params->max_band_decorr, num_outputs_diff ) ) ) ) == NULL )
{
return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD decorrelator\n" ) );
}
@@ -414,7 +415,7 @@ void ivas_dirac_dec_decorr_process_fx(
Word32 frame_ma_fx[2 * ( DIRAC_MAX_DECORR_FILTER_LEN + 1 )];
Word32 *p_frame_dec_fx, *decorr_buffer_fx;
Word16 *phase_coeff_real_fx, *phase_coeff_imag_fx;
- Word16 *filter_coeff_num_real_fx, *filter_coeff_den_real_fx;
+ Word32 *filter_coeff_num_real_fx, *filter_coeff_den_real_fx;
Word32 *decorr_buffer_start_ptr_fx, *decorr_buffer_ptr_fx;
Word32 input_real_fx, input_imag_fx, filter_frame_imag_fx, filter_frame_real_fx;
Word16 q_aux_buffer, q_onset_dec, q_frame_f;
@@ -666,8 +667,8 @@ void ivas_dirac_dec_decorr_process_fx(
/* MA part of filter impulse response */
FOR( l = 0; l < filter_length; l++ )
{
- frame_ma_fx[2 * l] = Mpy_32_16_1( input_real_fx, filter_coeff_num_real_fx[l] ); // Q_qux -3 = q_deorr
- frame_ma_fx[2 * l + 1] = Mpy_32_16_1( input_imag_fx, filter_coeff_num_real_fx[l] ); // Q_qux - 3 = q_deorr
+ frame_ma_fx[2 * l] = Mpy_32_32( input_real_fx, filter_coeff_num_real_fx[l] ); // Q_qux -3 = q_deorr
+ frame_ma_fx[2 * l + 1] = Mpy_32_32( input_imag_fx, filter_coeff_num_real_fx[l] ); // Q_qux - 3 = q_deorr
move32();
move32();
}
@@ -691,12 +692,12 @@ void ivas_dirac_dec_decorr_process_fx(
FOR( l = 1; l < filter_length; l++ )
{
// q adjustment needed//
- Word32 temp_1 = Mpy_32_16_1( filter_frame_real_fx, filter_coeff_den_real_fx[l] ); // q_decorr - 3
+ Word32 temp_1 = Mpy_32_32( filter_frame_real_fx, filter_coeff_den_real_fx[l] ); // q_decorr - 3
temp_1 = L_shl( temp_1, 3 ); // q_decorr
decorr_buffer_ptr_fx[0] = L_sub( L_add( decorr_buffer_ptr_fx[0], frame_ma_fx[2 * l] ), temp_1 ); // q_deocor
move32();
- Word32 temp_2 = Mpy_32_16_1( filter_frame_imag_fx, filter_coeff_den_real_fx[l] ); // q_decorr - 3
+ Word32 temp_2 = Mpy_32_32( filter_frame_imag_fx, filter_coeff_den_real_fx[l] ); // q_decorr - 3
temp_2 = L_shl( temp_2, 3 ); // q_decorr
decorr_buffer_ptr_fx[1] = L_sub( L_add( decorr_buffer_ptr_fx[1], frame_ma_fx[2 * l + 1] ), temp_2 ); // q_decorr
move32();
@@ -1146,16 +1147,16 @@ void ivas_dirac_dec_decorr_close_fx(
static void get_lattice_coeffs_fx(
const Word16 band_index, // Q0
const Word16 channel_index, // Q0
- Word16 *lattice_coeffs ) // Q12
+ Word32 *lattice_coeffs ) // Q31
{
Word16 k;
FOR( k = 0; k < ap_filter_length[band_index]; k++ )
{
- Word16 cur_lattice_coeff = ap_lattice_coeffs_fx[band_index][add( imult1616( channel_index, ap_filter_length[band_index] ), k )]; // Q12
- lattice_coeffs[k] = cur_lattice_coeff; // Q12
- move16();
- move16();
+ Word32 cur_lattice_coeff = ap_lattice_coeffs_fx[band_index][add( imult1616( channel_index, ap_filter_length[band_index] ), k )]; // Q31
+ lattice_coeffs[k] = cur_lattice_coeff; // Q31
+ move32();
+ move32();
}
return;
@@ -1165,40 +1166,40 @@ static void get_lattice_coeffs_fx(
/* convert lattice filter coeffs to all pass transfer function coeffs */
static void lattice2allpass_fx(
const Word16 filter_length, // Q0
- const Word16 *lattice_coeffs_fx, // Q15
- Word16 *filter_coeffs_num_real_fx, // Q12
- Word16 *filter_coeffs_den_real_fx ) // Q12
+ const Word32 *lattice_coeffs_fx, // Q31
+ Word32 *filter_coeffs_num_real_fx, // Q28
+ Word32 *filter_coeffs_den_real_fx ) // Q28
{
Word16 i, p;
- Word16 alpha_real_fx[2][DIRAC_MAX_DECORR_FILTER_LEN + 1];
- Word16 *alpha_real_p_old_fx = &alpha_real_fx[0][0];
- Word16 *alpha_real_p_fx = &alpha_real_fx[1][0];
- Word16 *tmp_fx;
+ Word32 alpha_real_fx[2][DIRAC_MAX_DECORR_FILTER_LEN + 1];
+ Word32 *alpha_real_p_old_fx = &alpha_real_fx[0][0];
+ Word32 *alpha_real_p_fx = &alpha_real_fx[1][0];
+ Word32 *tmp_fx;
FOR( i = 0; i < 2; i++ )
{
- set16_fx( alpha_real_fx[i], 0, DIRAC_MAX_DECORR_FILTER_LEN + 1 );
+ set32_fx( alpha_real_fx[i], 0, DIRAC_MAX_DECORR_FILTER_LEN + 1 );
}
- alpha_real_p_fx[0] = ONE_IN_Q12;
- move16();
- alpha_real_p_old_fx[0] = ONE_IN_Q12;
- move16();
+ alpha_real_p_fx[0] = ONE_IN_Q28;
+ move32();
+ alpha_real_p_old_fx[0] = ONE_IN_Q28;
+ move32();
/* recursion */
- Word16 lattice_alpha = 0;
- move16();
+ Word32 lattice_alpha = 0;
+ move32();
FOR( p = 1; p < filter_length; p++ )
{
- alpha_real_p_fx[p] = shr( lattice_coeffs_fx[( p - 1 )], 3 ); /* Q12 */
+ alpha_real_p_fx[p] = L_shr( lattice_coeffs_fx[( p - 1 )], 3 ); /* Q28 */
move16();
FOR( i = 1; i < p; i++ )
{
- lattice_alpha = mult( lattice_coeffs_fx[( p - 1 )], alpha_real_p_old_fx[sub( p, i )] ); /* Q12 */
- alpha_real_p_fx[i] = add( alpha_real_p_old_fx[i], lattice_alpha ); /* Q12 */
- move16();
+ lattice_alpha = Mpy_32_32( lattice_coeffs_fx[( p - 1 )], alpha_real_p_old_fx[sub( p, i )] ); /* Q28 */
+ alpha_real_p_fx[i] = L_add( alpha_real_p_old_fx[i], lattice_alpha ); /* Q28 */
+ move32();
}
/* switch pointers */
tmp_fx = alpha_real_p_old_fx;
@@ -1208,10 +1209,10 @@ static void lattice2allpass_fx(
FOR( i = 0; i < filter_length; i++ )
{
- filter_coeffs_den_real_fx[i] = alpha_real_p_old_fx[i]; /* Q12 */
- move16();
- filter_coeffs_num_real_fx[i] = alpha_real_p_old_fx[sub( sub( filter_length, i ), 1 )]; /* Q12 */
- move16();
+ filter_coeffs_den_real_fx[i] = alpha_real_p_old_fx[i]; /* Q28 */
+ move32();
+ filter_coeffs_num_real_fx[i] = alpha_real_p_old_fx[sub( sub( filter_length, i ), 1 )]; /* Q28 */
+ move32();
}
return;
diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c
index 7b446a80e77b5a241d8c5d5494857461f6d1f885..548e06fb6bd342df52d80bae6b9a686251a4db79 100644
--- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c
+++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c
@@ -650,8 +650,10 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
Word16 q_diffuseness,
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
+#ifndef FIX_998_UNUSED_FUNCTION
const Word16 sh_rot_max_order,
- const Word32 *p_Rmat, /* i : rotation matrix Q30*/
+ const Word32 *p_Rmat, /* i : rotation matrix Q30*/
+#endif
const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */
const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */
const Word16 nchan_transport, /* i : number of transport channels*/
@@ -705,8 +707,10 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
md_idx,
NULL,
0,
+#ifndef FIX_998_UNUSED_FUNCTION
2,
p_Rmat,
+#endif
hodirac_flag );
{
@@ -777,8 +781,10 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
md_idx,
NULL,
0,
+#ifndef FIX_998_UNUSED_FUNCTION
sh_rot_max_order,
p_Rmat,
+#endif
hodirac_flag );
{
@@ -1227,10 +1233,17 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
{
Scale_sig32( aux_buf, num_freq_bands, sub( h_dirac_output_synthesis_state->q_cy_auto_diff_smooth, temp_q ) ); /*temp_q->(h_dirac_output_synthesis_state->q_cy_auto_diff_smooth)*/
}
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( aux_buf,
+ &h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff],
+ &h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff],
+ num_freq_bands_diff ); /*h_dirac_output_synthesis_state->q_cy_auto_diff_smooth*/
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( aux_buf,
&h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff],
&h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff],
num_freq_bands_diff, 0 ); /*h_dirac_output_synthesis_state->q_cy_auto_diff_smooth*/
+#endif /* VEC_ARITH_OPT_v1 */
}
return;
@@ -2097,9 +2110,9 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
move16();
exp1 = 0;
move16();
- tmp32 = BASOP_Util_Divide3232_Scale_cadence( L_shl( p_cy_auto_dir_smooth[num_freq_bands], sub( q_com, q_cy_auto_dir_smooth_local[1] ) ),
- ( L_add( Sqrt32( h_dirac_output_synthesis_state->direct_power_factor_fx[0], &exp ), EPSILON_FX ) ), // (Q31 - exp)
- &exp1 );
+ tmp32 = BASOP_Util_Divide3232_Scale_newton( L_shl( p_cy_auto_dir_smooth[num_freq_bands], sub( q_com, q_cy_auto_dir_smooth_local[1] ) ),
+ ( L_add( Sqrt32( h_dirac_output_synthesis_state->direct_power_factor_fx[0], &exp ), EPSILON_FX ) ), // (Q31 - exp)
+ &exp1 );
target_power_y = L_shr( tmp32, 1 ); // Q31 + (q_com - (31 - exp))
q_target_power_y = add( sub( Q31, exp1 ), sub( q_com, sub( Q31, exp ) ) );
q_target_power_y = sub( q_target_power_y, 1 );
@@ -2108,9 +2121,9 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
move16();
exp1 = 0;
move16();
- tmp32 = BASOP_Util_Divide3232_Scale_cadence( L_shl( p_cy_auto_diff_smooth[num_freq_bands], sub( q_com, h_dirac_output_synthesis_state->q_cy_auto_diff_smooth ) ),
- ( L_add( Sqrt32( h_dirac_output_synthesis_state->diffuse_power_factor_fx[0], &exp ), EPSILON_FX ) ), // (Q31 - exp)
- &exp1 );
+ tmp32 = BASOP_Util_Divide3232_Scale_newton( L_shl( p_cy_auto_diff_smooth[num_freq_bands], sub( q_com, h_dirac_output_synthesis_state->q_cy_auto_diff_smooth ) ),
+ ( L_add( Sqrt32( h_dirac_output_synthesis_state->diffuse_power_factor_fx[0], &exp ), EPSILON_FX ) ), // (Q31 - exp)
+ &exp1 );
target_power_y1 = L_shr( tmp32, 1 ); // Q31 + (q_com - (31 - exp))
q_target_power_y1 = add( sub( Q31, exp1 ), sub( q_com, sub( Q31, exp ) ) );
q_target_power_y1 = sub( q_target_power_y1, 1 );
@@ -2127,9 +2140,6 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
move16();
}
- subtract_power_y = masa_stereo_type_detect->subtract_power_y_fx; // q_subtract_power_y
- move32();
-
a = 858993; /* ( 0.0004f in Q31 ); Temporal smoothing coefficient */
move32();
b = L_sub( ONE_IN_Q31, a ); /* Temporal smoothing coefficient */
@@ -2145,24 +2155,52 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
move32();
masa_stereo_type_detect->q_target_power_y_smooth = q_com;
move16();
- masa_stereo_type_detect->subtract_power_y_smooth_fx =
- L_add( Mpy_32_32( a, subtract_power_y ),
- Mpy_32_32( b, masa_stereo_type_detect->subtract_power_y_smooth_fx ) ); //(Q31, q_subtract_power_y) -> q_subtract_power_y
+
+ IF( NE_16( masa_stereo_type_detect->q_subtract_power_y, masa_stereo_type_detect->q_subtract_power_y_smooth ) )
+ {
+ exp = s_min( add( masa_stereo_type_detect->q_subtract_power_y, norm_l( masa_stereo_type_detect->subtract_power_y_fx ) ), add( masa_stereo_type_detect->q_subtract_power_y_smooth, norm_l( masa_stereo_type_detect->subtract_power_y_smooth_fx ) ) );
+ masa_stereo_type_detect->subtract_power_y_fx = L_shl( masa_stereo_type_detect->subtract_power_y_fx, sub( exp, masa_stereo_type_detect->q_subtract_power_y ) );
+ move32();
+ masa_stereo_type_detect->subtract_power_y_smooth_fx = L_shl( masa_stereo_type_detect->subtract_power_y_smooth_fx, sub( exp, masa_stereo_type_detect->q_subtract_power_y_smooth ) );
+ move32();
+ masa_stereo_type_detect->q_subtract_power_y = exp;
+ move16();
+ masa_stereo_type_detect->q_subtract_power_y_smooth = exp;
+ move16();
+ }
+ subtract_power_y = masa_stereo_type_detect->subtract_power_y_fx; // q_subtract_power_y
move32();
+ W_temp = W_add( W_mult0_32_32( a, subtract_power_y ), W_mult0_32_32( b, masa_stereo_type_detect->subtract_power_y_smooth_fx ) ); // Q31 + masa_stereo_type_detect->q_subtract_power_y_smooth
+ IF( W_temp )
+ {
+ exp = W_norm( W_temp );
+ masa_stereo_type_detect->subtract_power_y_smooth_fx = W_extract_h( W_shl( W_temp, exp ) ); // Q31 + masa_stereo_type_detect->q_subtract_power_y_smooth + exp - 32
+ move32();
+ masa_stereo_type_detect->q_subtract_power_y_smooth = sub( add( masa_stereo_type_detect->q_subtract_power_y_smooth, exp ), 1 );
+ move16();
+ }
+ ELSE
+ {
+ masa_stereo_type_detect->subtract_power_y_smooth_fx = 0; // Q31
+ move32();
+ masa_stereo_type_detect->q_subtract_power_y_smooth = Q31;
+ move16();
+ }
exp = 0;
move16();
- IF( masa_stereo_type_detect->target_power_y_smooth_fx != 0 )
+ test();
+ IF( masa_stereo_type_detect->target_power_y_smooth_fx && masa_stereo_type_detect->subtract_power_y_smooth_fx )
{
subtract_target_ratio = L_sub( BASOP_Util_Log2( masa_stereo_type_detect->subtract_power_y_smooth_fx ),
BASOP_Util_Log2( masa_stereo_type_detect->target_power_y_smooth_fx ) ); // Q25
- exp = sub( masa_stereo_type_detect->q_subtract_power_y, q_com );
+ exp = sub( masa_stereo_type_detect->q_subtract_power_y_smooth, q_com );
L_tmp = Mpy_32_32( L_sub( subtract_target_ratio, L_shl( exp, 25 ) ), LOG10_2_Q31 ); // Q25
}
ELSE
{
subtract_target_ratio = BASOP_Util_Log2( masa_stereo_type_detect->subtract_power_y_smooth_fx ); // Q25
- exp = sub( 31, masa_stereo_type_detect->q_subtract_power_y );
+ exp = sub( 31, masa_stereo_type_detect->q_subtract_power_y_smooth );
L_tmp = L_sub( Mpy_32_32( L_add( subtract_target_ratio, L_shl( exp, 25 ) ), LOG10_2_Q31 ), -503316480 /* L_shl( -15, 25 ) */ /*log(EPSILON)*/ ); // Q25
}
subtract_target_ratio_db = Mpy_32_32( 1342177280 /* 10.0f * in Q27*/, L_tmp ); // (Q27, (Q25, Q31)) -> (Q27, Q25) -> Q21
@@ -2171,6 +2209,8 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
move32();
masa_stereo_type_detect->subtract_power_y_fx = 0;
move32();
+ masa_stereo_type_detect->q_subtract_power_y = Q31;
+ move16();
}
/*-----------------------------------------------------------------*
@@ -2268,7 +2308,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
IF( EQ_32( *( p_power_smooth_prev ), EPSILON_FX ) )
{
p_power_smooth_prev++;
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q31, EPSILON_FX, &exp ); /*Q=31-(exp-(31-q_proto_power_smooth))*/
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q31, EPSILON_FX, &exp ); /*Q=31-(exp-(31-q_proto_power_smooth))*/
exp_arr[k * num_freq_bands + l] = exp;
move16();
@@ -2277,7 +2317,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
}
ELSE
{
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q31, *( p_power_smooth_prev++ ), &exp ); /*Q=31-(exp-(31-q_proto_power_smooth))*/
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q31, *( p_power_smooth_prev++ ), &exp ); /*Q=31-(exp-(31-q_proto_power_smooth))*/
exp_arr[k * num_freq_bands + l] = exp;
move16();
@@ -2495,7 +2535,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
exp = 0;
move16();
- L_tmp = BASOP_Util_Divide3232_Scale_cadence( *( p_cy_auto_diff_smooth_prev++ ), ( *( p_power_diff_smooth_prev++ ) ), &exp ); // (Q31 - exp) + (q_a - q_b)
+ L_tmp = BASOP_Util_Divide3232_Scale_newton( *( p_cy_auto_diff_smooth_prev++ ), ( *( p_power_diff_smooth_prev++ ) ), &exp ); // (Q31 - exp) + (q_a - q_b)
exp = sub( Q31, add( sub( Q31, exp ), sub( h_dirac_output_synthesis_state->q_cy_auto_diff_smooth_prev, h_dirac_output_synthesis_state->proto_power_diff_smooth_q ) ) );
*( p_gains_diff ) = Sqrt32( L_tmp, &exp ); // (31 - exp)
@@ -2778,6 +2818,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
return;
}
+#ifndef FIX_998_UNUSED_FUNCTION
/*-------------------------------------------------------------------------
* ivas_dirac_dec_get_response_split_order()
@@ -3061,6 +3102,7 @@ static void ivas_dirac_dec_get_response_split_order_fx(
return;
}
+#endif
/*-------------------------------------------------------------------------
* ivas_dirac_dec_compute_directional_responses()
@@ -3079,9 +3121,11 @@ void ivas_dirac_dec_compute_directional_responses_fx(
const Word16 md_idx,
const Word32 *surCohRatio_fx, /*i:Q_surCohRatio*/
Word16 Q_surCohRatio,
+#ifndef FIX_998_UNUSED_FUNCTION
const Word16 shd_rot_max_order, /* i : split-order rotation method */
const Word32 *p_Rmat, /* i : rotation matrix Q30*/
- const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */
+#endif
+ const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */
)
{
Word16 k, l, i;
@@ -3194,6 +3238,7 @@ void ivas_dirac_dec_compute_directional_responses_fx(
exp_direct_response_dir2 = 0;
move16();
+#ifndef FIX_998_UNUSED_FUNCTION
IF( p_Rmat != 0 )
{
ivas_dirac_dec_get_response_split_order_fx( azimuth[k], elevation[k], direct_response_hoa_fx, shd_rot_max_order, p_Rmat, &Q_direct_response_hoa );
@@ -3205,10 +3250,11 @@ void ivas_dirac_dec_compute_directional_responses_fx(
}
ELSE
{
+#endif
#ifdef FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx
ivas_dirac_dec_get_response_fx_29( azimuth[k], elevation[k], direct_response_hoa_fx, hDirACRend->hOutSetup.ambisonics_order );
#else
- ivas_dirac_dec_get_response_fx( azimuth[k], elevation[k], direct_response_hoa_fx, hDirACRend->hOutSetup.ambisonics_order, Q_direct_response_hoa );
+ ivas_dirac_dec_get_response_fx( azimuth[k], elevation[k], direct_response_hoa_fx, hDirACRend->hOutSetup.ambisonics_order, Q_direct_response_hoa );
#endif
IF( hodirac_flag )
@@ -3216,10 +3262,12 @@ void ivas_dirac_dec_compute_directional_responses_fx(
#ifdef FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx
ivas_dirac_dec_get_response_fx_29( azimuth2[k], elevation2[k], direct_response_dir2_fx, hDirACRend->hOutSetup.ambisonics_order );
#else
- ivas_dirac_dec_get_response_fx( azimuth2[k], elevation2[k], direct_response_dir2_fx, hDirACRend->hOutSetup.ambisonics_order, Q_direct_response_dir2 );
+ ivas_dirac_dec_get_response_fx( azimuth2[k], elevation2[k], direct_response_dir2_fx, hDirACRend->hOutSetup.ambisonics_order, Q_direct_response_dir2 );
#endif
}
+#ifndef FIX_998_UNUSED_FUNCTION
}
+#endif
test();
test();
@@ -3982,10 +4030,11 @@ void ivas_lfe_synth_with_filters_fx(
}
ELSE
{
- lfeGain_fx = extract_h( BASOP_Util_Divide3232_Scale_cadence( hMasaLfeSynth->targetEneLfeSmooth_fx, L_add( EPSILON_FX, hMasaLfeSynth->transportEneSmooth_fx ), &lfeGain_fx_exp ) ); /*Q(31-(lfeGain_fx_exp+hMasaLfeSynth->transportEneSmooth_q-hMasaLfeSynth->targetEneLfeSmooth_q))-16*/
+ Flag overFlow;
+ lfeGain_fx = extract_h( BASOP_Util_Divide3232_Scale_newton( hMasaLfeSynth->targetEneLfeSmooth_fx, L_add( EPSILON_FX, hMasaLfeSynth->transportEneSmooth_fx ), &lfeGain_fx_exp ) ); /*Q(31-(lfeGain_fx_exp+hMasaLfeSynth->transportEneSmooth_q-hMasaLfeSynth->targetEneLfeSmooth_q))-16*/
lfeGain_fx_exp = add( sub( hMasaLfeSynth->transportEneSmooth_q, hMasaLfeSynth->targetEneLfeSmooth_q ), lfeGain_fx_exp );
- lfeGain_fx = Sqrt16( lfeGain_fx, &lfeGain_fx_exp ); // Q15-lfeGain_fx_exp
- lfeGain_fx = shl_r( lfeGain_fx, lfeGain_fx_exp ); // Q15
+ lfeGain_fx = Sqrt16( lfeGain_fx, &lfeGain_fx_exp ); // Q15-lfeGain_fx_exp
+ lfeGain_fx = shl_ro( lfeGain_fx, lfeGain_fx_exp, &overFlow ); // Q15
}
IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( hMasaLfeSynth->targetEneTransSmooth_fx, sub( Q31, hMasaLfeSynth->targetEneTransSmooth_q ), /*EPSILON + */ hMasaLfeSynth->transportEneSmooth_fx, sub( Q31, hMasaLfeSynth->transportEneSmooth_q ) ), 1 ) )
{
diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c
index f67f3761bee66257e79a5fc22dce5e97b9af76c5..02a02f863d2c7609ee108bd0cac35daf4f68c207 100644
--- a/lib_rend/ivas_dirac_rend_fx.c
+++ b/lib_rend/ivas_dirac_rend_fx.c
@@ -986,6 +986,7 @@ ivas_error ivas_dirac_alloc_mem_fx(
}
hDirAC_mem->reference_power_len = imult1616( 5, num_freq_bands );
+ set16_fx( hDirAC_mem->reference_power_q, Q31, 2 );
}
IF( hDirACRend->proto_signal_decorr_on )
@@ -1753,7 +1754,7 @@ void protoSignalComputation2_fx(
Word32 RealSubtract_fx, ImagSubtract_fx;
Word32 left_bb_power_fx, right_bb_power_fx, total_bb_power_fx, lr_bb_power_fx;
Word32 left_hi_power_fx, right_hi_power_fx, total_hi_power_fx, lr_hi_power_fx;
- Word32 sum_power_fx, Left_power_fx, Right_power_fx;
+ Word32 sum_power_fx, Left_power_fx, Right_power_fx, Total_power_fx;
Word16 q_lr_bb_power, q_lr_hi_power;
Word32 lr_total_bb_ratio_fx, lr_total_hi_ratio_fx;
Word32 min_sum_total_ratio_fx, min_sum_total_ratio_db_fx;
@@ -2119,7 +2120,10 @@ void protoSignalComputation2_fx(
#else
q_Left_Right_power = add( shl( add( q_cldfb, min_q_shift ), 1 ), sub( head_room, 32 ) );
#endif
-
+ Word16 exp_left_hi_power = 0, exp_right_hi_power = 0, exp_total_hi_power = 0, exp_temppp;
+ move16();
+ move16();
+ move16();
FOR( l = 0; l < num_freq_bands; l++ )
{
#ifdef FIX_867_CLDFB_NRG_SCALE
@@ -2163,19 +2167,30 @@ void protoSignalComputation2_fx(
left_bb_power_fx = L_add( left_bb_power_fx, Left_power_fx ); // q_Left_Right_power
right_bb_power_fx = L_add( right_bb_power_fx, Right_power_fx ); // q_Left_Right_power
// total_bb_power_fx = L_add( total_bb_power_fx, reference_power_fx[l] );
- total_bb_power_fx = L_add( total_bb_power_fx, W_extract_h( W_shl( reference_power_64fx[l], head_room ) ) ); // q_Left_Right_power
+ total_bb_power_fx = L_add( total_bb_power_fx, W_extract_h( W_shl( reference_power_64fx[l], head_room ) ) ); // q_Left_Right_power
#endif
-
IF( GT_16( l, MASA_HI_FREQ_START_BIN ) )
{
- left_hi_power_fx = L_add( left_hi_power_fx, Left_power_fx ); // q_Left_Right_power
- right_hi_power_fx = L_add( right_hi_power_fx, Right_power_fx ); // q_Left_Right_power
- // total_hi_power_fx = L_add( total_hi_power_fx, reference_power_fx[l] );
-#ifdef FIX_867_CLDFB_NRG_SCALE
- total_hi_power_fx = L_add( total_hi_power_fx, W_extract_h( W_shl( reference_power_64fx[l], sub( head_room, total_shift[qidx] ) ) ) ); // q_Left_Right_power
-#else
- total_hi_power_fx = L_add( total_hi_power_fx, W_extract_h( W_shl( reference_power_64fx[l], head_room ) ) ); // q_Left_Right_power
-#endif
+ W_tmp1 = W_add( W_mult0_32_32( RealBuffer_fx[0][0][l], RealBuffer_fx[0][0][l] ), W_mult0_32_32( ImagBuffer_fx[0][0][l], ImagBuffer_fx[0][0][l] ) );
+ q_shift = W_norm( W_tmp1 );
+ Left_power_fx = W_extract_h( W_shl( W_tmp1, q_shift ) );
+ exp_temppp = sub( 31, sub( add( shl( q_cldfb, 1 ), q_shift ), 32 ) );
+
+ left_hi_power_fx = BASOP_Util_Add_Mant32Exp( left_hi_power_fx, exp_left_hi_power, Left_power_fx, exp_temppp, &exp_left_hi_power ); // exp:exp_left_hi_power
+
+ W_tmp2 = W_add( W_mult0_32_32( RealBuffer_fx[1][0][l], RealBuffer_fx[1][0][l] ), W_mult0_32_32( ImagBuffer_fx[1][0][l], ImagBuffer_fx[1][0][l] ) );
+ q_shift = W_norm( W_tmp2 );
+ Right_power_fx = W_extract_h( W_shl( W_tmp2, q_shift ) );
+ exp_temppp = sub( 31, sub( add( shl( q_cldfb, 1 ), q_shift ), 32 ) );
+
+ right_hi_power_fx = BASOP_Util_Add_Mant32Exp( right_hi_power_fx, exp_right_hi_power, Right_power_fx, exp_temppp, &exp_right_hi_power ); // exp:exp_right_hi_power
+
+ W_tmp2 = W_add( W_tmp1, W_tmp2 );
+ q_shift = W_norm( W_tmp2 );
+ Total_power_fx = W_extract_h( W_shl( W_tmp2, q_shift ) );
+ exp_temppp = sub( 31, sub( add( shl( q_cldfb, 1 ), q_shift ), 32 ) );
+
+ total_hi_power_fx = BASOP_Util_Add_Mant32Exp( total_hi_power_fx, exp_total_hi_power, Total_power_fx, exp_temppp, &exp_total_hi_power ); // exp:exp_total_hi_power
}
IF( LT_16( l, s_min( num_freq_bands, MASA_SUM_FREQ_RANGE_BINS ) ) )
@@ -2184,8 +2199,8 @@ void protoSignalComputation2_fx(
re_aux = L_shl( Real_aux_fx, sub( temp_q_shift, min_q_shift[0] ) ); // q_cldfb+temp_q_shift
im_aux = L_shl( Imag_aux_fx, sub( temp_q_shift, min_q_shift[0] ) ); // q_cldfb+temp_q_shift
#else
- re_aux = L_shl( Real_aux_fx, sub( temp_q_shift, min_q_shift ) ); // q_cldfb+temp_q_shift
- im_aux = L_shl( Imag_aux_fx, sub( temp_q_shift, min_q_shift ) ); // q_cldfb+temp_q_shift
+ re_aux = L_shl( Real_aux_fx, sub( temp_q_shift, min_q_shift ) ); // q_cldfb+temp_q_shift
+ im_aux = L_shl( Imag_aux_fx, sub( temp_q_shift, min_q_shift ) ); // q_cldfb+temp_q_shift
#endif
sum_power_fx = Madd_32_32( Mpy_32_32( re_aux, re_aux ), im_aux, im_aux ); // 2*(q_cldfb+temp_q_shift)-31
@@ -2215,7 +2230,7 @@ void protoSignalComputation2_fx(
move32();
}
#else
- temp = Mpy_32_32( a_fx, W_extract_l( W_shr( reference_power_64fx[l], 31 ) ) ); // 2*(q_cldfb+min_q_shift) -31
+ temp = Mpy_32_32( a_fx, W_extract_l( W_shr( reference_power_64fx[l], 31 ) ) ); // 2*(q_cldfb+min_q_shift) -31
IF( LT_16( q_temp, stereo_type_detect->q_total_power ) )
{
stereo_type_detect->total_power_fx[l] = L_add( temp, L_shr( Mpy_32_32( b_fx, stereo_type_detect->total_power_fx[l] ), sub( stereo_type_detect->q_total_power, q_temp ) ) ); // q_temp
@@ -2691,8 +2706,8 @@ void protoSignalComputation2_fx(
q_lr_bb_power = stereo_type_detect->q_right_bb_power;
move16();
}
- q_lr_bb_power = sub( q_lr_bb_power, 1 ); /* = (lr_bb_power_fx * 2) */
- temp = BASOP_Util_Divide3232_Scale_cadence( lr_bb_power_fx, L_add( stereo_type_detect->total_bb_power_fx, EPSILON_FX ), &exp ); // Q(31-(exp+stereo_type_detect->q_total_bb_power-q_lr_bb_power))
+ q_lr_bb_power = sub( q_lr_bb_power, 1 ); /* = (lr_bb_power_fx * 2) */
+ temp = BASOP_Util_Divide3232_Scale_newton( lr_bb_power_fx, L_add( stereo_type_detect->total_bb_power_fx, EPSILON_FX ), &exp ); // Q(31-(exp+stereo_type_detect->q_total_bb_power-q_lr_bb_power))
exp = sub( 31, add( sub( 31, exp ), sub( q_lr_bb_power, stereo_type_detect->q_total_bb_power ) ) );
temp = BASOP_Util_Log2( temp ); // q25
IF( NE_32( temp, MIN_32 ) )
@@ -2703,15 +2718,16 @@ void protoSignalComputation2_fx(
lr_total_bb_ratio_fx = Mpy_32_16_1( temp, 20480 ); // Q21
#ifdef FIX_867_CLDFB_NRG_SCALE
- stereo_type_detect->left_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, left_hi_power_fx ), sub( 31, q_temp_total ), Mpy_32_32( b2_fx, stereo_type_detect->left_hi_power_fx ), sub( 31, stereo_type_detect->q_left_hi_power ), &stereo_type_detect->q_left_hi_power );
+ stereo_type_detect->left_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, left_hi_power_fx ), exp_left_hi_power, Mpy_32_32( b2_fx, stereo_type_detect->left_hi_power_fx ), sub( 31, stereo_type_detect->q_left_hi_power ), &stereo_type_detect->q_left_hi_power );
move32();
stereo_type_detect->q_left_hi_power = sub( 31, stereo_type_detect->q_left_hi_power );
move16();
- stereo_type_detect->right_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, right_hi_power_fx ), sub( 31, q_temp_total ), Mpy_32_32( b2_fx, stereo_type_detect->right_hi_power_fx ), sub( 31, stereo_type_detect->q_right_hi_power ), &stereo_type_detect->q_right_hi_power );
+
+ stereo_type_detect->right_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, right_hi_power_fx ), exp_right_hi_power, Mpy_32_32( b2_fx, stereo_type_detect->right_hi_power_fx ), sub( 31, stereo_type_detect->q_right_hi_power ), &stereo_type_detect->q_right_hi_power );
move32();
stereo_type_detect->q_right_hi_power = sub( 31, stereo_type_detect->q_right_hi_power );
move16();
- stereo_type_detect->total_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, total_hi_power_fx ), sub( 31, q_temp_total ), Mpy_32_32( b2_fx, stereo_type_detect->total_hi_power_fx ), sub( 31, stereo_type_detect->q_total_hi_power ), &stereo_type_detect->q_total_hi_power );
+ stereo_type_detect->total_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, total_hi_power_fx ), exp_total_hi_power, Mpy_32_32( b2_fx, stereo_type_detect->total_hi_power_fx ), sub( 31, stereo_type_detect->q_total_hi_power ), &stereo_type_detect->q_total_hi_power );
move32();
#else
stereo_type_detect->left_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, left_hi_power_fx ), sub( 31, q_temp ), Mpy_32_32( b2_fx, stereo_type_detect->left_hi_power_fx ), sub( 31, stereo_type_detect->q_left_hi_power ), &stereo_type_detect->q_left_hi_power );
@@ -2740,8 +2756,8 @@ void protoSignalComputation2_fx(
move32();
q_lr_hi_power = stereo_type_detect->q_right_hi_power;
}
- q_lr_hi_power = sub( q_lr_hi_power, 1 ); /* = (q_lr_hi_power * 2) */
- temp = BASOP_Util_Divide3232_Scale_cadence( lr_hi_power_fx, L_add( stereo_type_detect->total_hi_power_fx, EPSILON_FX ), &exp ); // Q=31-(exp+ stereo_type_detect->q_total_hi_power-q_lr_hi_power)
+ q_lr_hi_power = sub( q_lr_hi_power, 1 ); /* = (q_lr_hi_power * 2) */
+ temp = BASOP_Util_Divide3232_Scale_newton( lr_hi_power_fx, L_add( stereo_type_detect->total_hi_power_fx, EPSILON_FX ), &exp ); // Q=31-(exp+ stereo_type_detect->q_total_hi_power-q_lr_hi_power)
exp = sub( 31, add( sub( 31, exp ), sub( q_lr_hi_power, stereo_type_detect->q_total_hi_power ) ) );
temp = BASOP_Util_Log2( temp ); // q25
IF( NE_32( temp, MIN_32 ) )
@@ -3419,7 +3435,7 @@ void computeDirectionAngles_fx(
}
ELSE
{
- temp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, intensityNorm, &exp ); // Q=31-(exp-(30-q_intensityNorm))
+ temp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, intensityNorm, &exp ); // Q=31-(exp-(30-q_intensityNorm))
exp = sub( exp, sub( Q30, q_intensityNorm ) );
temp = Sqrt32( temp, &exp ); // Q=31-exp
q_temp = sub( 31, exp );
@@ -4165,7 +4181,7 @@ static void ivas_masa_ext_dirac_render_sf_fx(
hDirACRend->h_output_synthesis_psd_state.direct_power_factor_fx[i] = L_add( hDirACRend->h_output_synthesis_psd_state.direct_power_factor_fx[i], surCohEner_fx ); // q29
move32();
- surCohRatio_fx[i] = L_deposit_h( BASOP_Util_Divide3232_Scale( surCohEner_fx, L_add( L_add( 1, dirEne_fx ), surCohEner_fx ), &surCohRatio_exp[i] ) ); // 31-surCohRatio_exp
+ surCohRatio_fx[i] = BASOP_Util_Divide3232_Scale_newton( surCohEner_fx, L_add( L_add( 1, dirEne_fx ), surCohEner_fx ), &surCohRatio_exp[i] ); // 31-surCohRatio_exp
move32();
temp_exp = s_max( temp_exp, surCohRatio_exp[i] );
}
@@ -4223,8 +4239,10 @@ static void ivas_masa_ext_dirac_render_sf_fx(
md_idx,
surCohRatio_fx,
Q_surCohRatio,
+#ifndef FIX_998_UNUSED_FUNCTION
0,
NULL,
+#endif
0 );
Word16 proto_direct_buffer_f_temp_q[60];
@@ -4527,9 +4545,13 @@ static void ivas_masa_ext_dirac_render_sf_fx(
hDirACRend->h_freq_domain_decorr_ap_params,
hDirACRend->h_freq_domain_decorr_ap_state );
- v_multc_fixed( onset_filter_fx, 536870912 /* 0.25f in Q31 */, onset_filter_fx, hSpatParamRendCom->num_freq_bands ); /* Q31 */
+ v_multc_fixed( onset_filter_fx, 536870912 /* 0.25f in Q31 */, onset_filter_fx, hSpatParamRendCom->num_freq_bands ); /* Q31 */
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( onset_filter_fx, onset_filter_subframe_fx, onset_filter_subframe_fx, hSpatParamRendCom->num_freq_bands ); /* Q31 */
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( onset_filter_fx, onset_filter_subframe_fx, onset_filter_subframe_fx, hSpatParamRendCom->num_freq_bands, 0 ); /* Q31 */
- p_onset_filter_fx = onset_filter_subframe_fx; /*q31*/
+#endif /* VEC_ARITH_OPT_v1 */
+ p_onset_filter_fx = onset_filter_subframe_fx; /*q31*/
}
ELSE
{
@@ -4599,8 +4621,10 @@ static void ivas_masa_ext_dirac_render_sf_fx(
hSpatParamRendCom->q_diffuseness_vector,
hSpatParamRendCom,
hDirACRend,
+#ifndef FIX_998_UNUSED_FUNCTION
0,
0,
+#endif
hMasaExtRend->hVBAPdata,
hDirACRend->hOutSetup,
nchan_transport,
@@ -4626,7 +4650,11 @@ static void ivas_masa_ext_dirac_render_sf_fx(
DirAC_mem.reference_power_smooth_q = DirAC_mem.reference_power_q;
move16();
#endif
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( reference_power_fix, reference_power_smooth_fx, reference_power_smooth_fx, hSpatParamRendCom->num_freq_bands ); // DirAC_mem.reference_power_smooth_q
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( reference_power_fix, reference_power_smooth_fx, reference_power_smooth_fx, hSpatParamRendCom->num_freq_bands, 0 ); // DirAC_mem.reference_power_smooth_q
+#endif /* VEC_ARITH_OPT_v1 */
}
}
/*Rescaling proto_direct_buffer_f*/
@@ -4960,7 +4988,7 @@ static void ivas_masa_ext_dirac_render_sf_fx(
hSpatParamRendCom->num_freq_bands ) );
}
}
- scale_factor = sub( scale_factor, 3 ); // guard bits
+ scale_factor = sub( scale_factor, find_guarded_bits_fx( hSpatParamRendCom->num_freq_bands ) ); // guard bits
FOR( ch = 0; ch < hDirACRend->num_outputs_dir; ch++ )
{
@@ -4998,10 +5026,20 @@ static void ivas_masa_ext_dirac_render_sf_fx(
ELSE
{
/* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */
+ /* cldfb_state_fx should be in 1 less q-factor compared to cld buffers for cldfbSynthesis_ivas_fx function */
Word16 q_out = sub( q_cldfb, 1 );
- scale_sig32( hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_fx, hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_length, sub( q_out, hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state ) ); // q_out
- hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state = q_out;
- move16();
+ Word16 max_shift = L_norm_arr( hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_fx, hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_length );
+ IF( GT_16( max_shift, sub( q_out, hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state ) ) )
+ {
+ scale_sig32( hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_fx, hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_length, sub( q_out, hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state ) ); // q_out
+ hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state = q_out;
+ move16();
+ }
+ ELSE
+ {
+ scale_sig32( Cldfb_RealBuffer_fx[idx_in][i], hSpatParamRendCom->num_freq_bands, sub( hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state, q_out ) );
+ scale_sig32( Cldfb_ImagBuffer_fx[idx_in][i], hSpatParamRendCom->num_freq_bands, sub( hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state, q_out ) );
+ }
FOR( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ )
{
RealBuffer_fx[i] = Cldfb_RealBuffer_fx[idx_in][i]; // q_cldfb
diff --git a/lib_rend/ivas_efap_fx.c b/lib_rend/ivas_efap_fx.c
index 543decbddee50bf407465f629883234eb976979b..4fb88643bb143d6c704e885a0fcd4e0c3f0b4702 100644
--- a/lib_rend/ivas_efap_fx.c
+++ b/lib_rend/ivas_efap_fx.c
@@ -1525,7 +1525,11 @@ static void get_poly_gains_fx(
A[1] = elePoly[i - 1]; // q22
move32();
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( P, A, P_minus_A, 2 ); /* Precalculate value of (P-A) q22*/
+#else /* VEC_ARITH_OPT_v1 */
v_sub_fixed( P, A, P_minus_A, 2, 0 ); /* Precalculate value of (P-A) q22*/
+#endif /* VEC_ARITH_OPT_v1 */
FOR( j = i; j < numChan - 2 + i; ++j )
{
@@ -1578,7 +1582,11 @@ static Word32 get_tri_gain_fx(
tmpN[1] = L_sub( C[0], B[0] ); // q22
move32();
- v_sub_fixed( B, A, tmpSub1, 2, 0 ); // tmpSub1 q22
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( B, A, tmpSub1, 2 ); // tmpSub1 q22
+#else /* VEC_ARITH_OPT_v1 */
+ v_sub_fixed( B, A, tmpSub1, 2, 0 ); // tmpSub1 q22
+#endif /* VEC_ARITH_OPT_v1 */
tmpDot1 = dotp_fixed( tmpN, tmpSub1, 2 ); // Q13
@@ -2237,7 +2245,11 @@ static void sort_channels_vertex_fx(
move32();
}
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( tmpV1, tmpV2, tmpV3, 3 ); // tmpV3 Q30
+#else /* VEC_ARITH_OPT_v1 */
v_sub_fixed( tmpV1, tmpV2, tmpV3, 3, 0 ); // tmpV3 Q30
+#endif /* VEC_ARITH_OPT_v1 */
Word16 exp2 = 2;
move16();
normV = ISqrt32( dotp_fixed( tmpV3, tmpV3, 3 ) /*q29*/, &exp2 ); // q=31-exp2
@@ -2419,7 +2431,11 @@ static Word16 in_poly_fx( /* Angles are in Q22 */
A[1] = poly.polyEle[0]; // q22
move32();
- v_sub_fixed( P, A, P_minus_A, 2, 0 ); /* Precalculate value of (P-A) q22*/
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( P, A, P_minus_A, 2 ); /* Precalculate value of (P-A) q22*/
+#else /* VEC_ARITH_OPT_v1 */
+ v_sub_fixed( P, A, P_minus_A, 2, 0 ); /* Precalculate value of (P-A) q22*/
+#endif /* VEC_ARITH_OPT_v1 */
FOR( n = 1; n < sub( numVertices, 1 ); ++n )
{
@@ -2487,8 +2503,13 @@ static Word16 in_tri_fx(
I'll just compute the determinant and if it's equal to 0, that means the two vectors are colinear
*/
- v_sub_fixed( B, A, tmpDot1, 2, 0 ); // tmpDot1 q22
- v_sub_fixed( C, A, tmpDot2, 2, 0 ); // tmpDot2 q22
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( B, A, tmpDot1, 2 ); // tmpDot1 q22
+ v_sub_fixed_no_hdrm( C, A, tmpDot2, 2 ); // tmpDot2 q22
+#else /* VEC_ARITH_OPT_v1 */
+ v_sub_fixed( B, A, tmpDot1, 2, 0 ); // tmpDot1 q22
+ v_sub_fixed( C, A, tmpDot2, 2, 0 ); // tmpDot2 q22
+#endif /* VEC_ARITH_OPT_v1 */
/* Verification of the non-colinearity : Q22 * Q22 = Q13 */
invFactor = L_sub( Mpy_32_32( tmpDot1[0], tmpDot2[1] ), Mpy_32_32( tmpDot1[1], tmpDot2[0] ) ); /*q22+q22-q31->q13*/
diff --git a/lib_rend/ivas_hrtf_fx.c b/lib_rend/ivas_hrtf_fx.c
index 93f9fbd83ad15a678ebf73f29f0f0e2d4f617709..0e535170b4c5c96f2543c80fba3bdcde1b1472dc 100644
--- a/lib_rend/ivas_hrtf_fx.c
+++ b/lib_rend/ivas_hrtf_fx.c
@@ -33,6 +33,9 @@
#include
#include "options.h"
#include "prot_fx.h"
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+#include "ivas_rom_binaural_crend_head.h"
+#endif
#include "ivas_prot_rend_fx.h"
#include "ivas_error.h"
#include "wmc_auto.h"
@@ -54,6 +57,8 @@ ivas_error ivas_HRTF_binary_open_fx(
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF binary!" );
}
+ set_c( (int8_t *) ( *hHrtfTD ), 0, (int32_t) sizeof( TDREND_HRFILT_FiltSet_t ) );
+
return IVAS_ERR_OK;
}
@@ -184,6 +189,8 @@ ivas_error ivas_HRTF_parambin_binary_open_fx(
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for parametric binauralizer HRTF tables!" );
}
+ set_c( (int8_t *) ( *hHrtfParambin ), 0, (int32_t) sizeof( HRTFS_PARAMBIN ) );
+
return IVAS_ERR_OK;
}
@@ -208,3 +215,98 @@ void ivas_HRTF_parambin_binary_close_fx(
return;
}
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+/*-----------------------------------------------------------------------*
+ * ivas_HRTF_statistics_binary_open()
+ *
+ * Allocate HRTF binary handle for statistics handler
+ *-----------------------------------------------------------------------*/
+
+ivas_error ivas_HRTF_statistics_binary_open(
+ HRTFS_STATISTICS **hHrtfStatistics )
+{
+ *hHrtfStatistics = (HRTFS_STATISTICS *) malloc( sizeof( HRTFS_STATISTICS ) );
+ if ( *hHrtfStatistics == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for statistics HRTF tables!" );
+ }
+
+ return IVAS_ERR_OK;
+}
+
+
+/*-----------------------------------------------------------------------*
+ * ivas_HRTF_statistics_close()
+ *
+ * Close HRTF binary handle for statistics handler
+ *-----------------------------------------------------------------------*/
+
+void ivas_HRTF_statistics_close(
+ HRTFS_STATISTICS **hHrtfStatistics )
+{
+ if ( hHrtfStatistics == NULL || *hHrtfStatistics == NULL )
+ {
+ return;
+ }
+
+ free( *hHrtfStatistics );
+ *hHrtfStatistics = NULL;
+
+ return;
+}
+
+/*-----------------------------------------------------------------------*
+ * ivas_HRTF_statistics_init()
+ *
+ * Allocates HRTF statistics handle and initializes from ROM
+ *-----------------------------------------------------------------------*/
+
+ivas_error ivas_HRTF_statistics_init(
+ HRTFS_STATISTICS_HANDLE *hHrtfStatistics,
+ int32_t sampleRate )
+{
+ HRTFS_STATISTICS *HrtfStatistics;
+
+ if ( hHrtfStatistics != NULL && *hHrtfStatistics != NULL )
+ {
+ /* Tables already loaded from file */
+ return IVAS_ERR_OK;
+ }
+
+ /* Initialise tables from ROM */
+ if ( ( HrtfStatistics = (HRTFS_STATISTICS *) malloc( sizeof( HRTFS_STATISTICS ) ) ) == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for statistics HRTF tables!" );
+ }
+
+ HrtfStatistics->average_energy_l = NULL;
+ HrtfStatistics->average_energy_r = NULL;
+ HrtfStatistics->inter_aural_coherence = NULL;
+
+ switch ( sampleRate )
+ {
+ case 48000:
+ HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_48kHz_fx;
+ HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_48kHz_fx;
+ HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_48kHz_fx;
+ break;
+ case 32000:
+ HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_32kHz_fx;
+ HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_32kHz_fx;
+ HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_32kHz_fx;
+ break;
+ case 16000:
+ HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_16kHz_fx;
+ HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_16kHz_fx;
+ HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_16kHz_fx;
+ break;
+ }
+ HrtfStatistics->fromROM = TRUE;
+
+ *hHrtfStatistics = HrtfStatistics;
+
+
+ return IVAS_ERR_OK;
+}
+#endif
diff --git a/lib_rend/ivas_objectRenderer_fx.c b/lib_rend/ivas_objectRenderer_fx.c
index 1b5bc0d1b5e5644d47cd293d00556fb30dbe3cc0..9eea08c71c7ddcf882b37e82c27be0291f1be424 100644
--- a/lib_rend/ivas_objectRenderer_fx.c
+++ b/lib_rend/ivas_objectRenderer_fx.c
@@ -802,8 +802,7 @@ ivas_error ivas_td_binaural_open_ext_fx(
{
directivity_fx = hRendCfg->directivity_fx;
}
-
- return ivas_td_binaural_open_unwrap_fx( &pTDRend->hHrtfTD, outFs, *num_src, ivas_format, transport_config, directivity_fx, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns, SrcInd );
+ return ivas_td_binaural_open_unwrap_fx( pTDRend->hHrtfTD, outFs, nchan_transport, ivas_format, transport_config, directivity_fx, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns, SrcInd );
}
/*---------------------------------------------------------------------*
* ivas_td_binaural_renderer_ext()
@@ -932,13 +931,13 @@ ivas_error ivas_td_binaural_renderer_ext_fx(
}
}
-
IF( NE_32( ( error = ivas_td_binaural_renderer_unwrap_fx( hReverb, transport_config, pTDRend->hBinRendererTd, num_src, lfe_idx, ivas_format, hIsmMetaData, *hCombinedOrientationData,
ism_md_subframe_update_ext, p_output_fx, output_frame, num_subframes ) ),
IVAS_ERR_OK ) )
{
return error;
}
+
IF( hReverb != NULL )
{
*exp = sub( *exp, 2 );
diff --git a/lib_rend/ivas_objectRenderer_hrFilt_fx.c b/lib_rend/ivas_objectRenderer_hrFilt_fx.c
index 30bf8f00aaac87f2bbee5753662ab91eea5e3ad1..a098aaa25e23a3567661fc4be6bca4f218a72e59 100644
--- a/lib_rend/ivas_objectRenderer_hrFilt_fx.c
+++ b/lib_rend/ivas_objectRenderer_hrFilt_fx.c
@@ -97,7 +97,7 @@ ivas_error TDREND_REND_RenderSourceHRFilt_fx(
TDREND_firfilt_fx( RightOutputFrame_fx, Src_p->hrf_right_prev_fx, right_filter_e, hrf_right_delta_fx, intp_count, Src_p->mem_hrf_right_fx, subframe_length, Src_p->filterlength, Src_p->Gain_fx, Src_p->prevGain_fx );
Src_p->prevGain_fx = Src_p->Gain_fx;
- move16();
+ move32();
/* Copy to accumulative output frame */
v_add_32( LeftOutputFrame_fx, output_buf_fx[0], output_buf_fx[0], subframe_length ); // Same Q as Src_p->InputFrame_p_fx Q11
diff --git a/lib_rend/ivas_objectRenderer_mix_fx.c b/lib_rend/ivas_objectRenderer_mix_fx.c
index 0e61282d474afcbfe1fafe00f76aced101e92bb7..c46ca25db4a0e3823a2d3ea3b47e8f84956b7e5d 100644
--- a/lib_rend/ivas_objectRenderer_mix_fx.c
+++ b/lib_rend/ivas_objectRenderer_mix_fx.c
@@ -38,6 +38,9 @@
#include "ivas_error.h"
#include "wmc_auto.h"
#include "ivas_rom_rend.h"
+#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
+#include "ivas_rom_binaural_crend_head.h"
+#endif
#include "ivas_prot_fx.h"
/*-------------------------------------------------------------------*
@@ -153,7 +156,8 @@ void TDREND_MIX_Dealloc_fx(
hBinRendererTd->Listener_p = NULL;
}
/* Dealloc HR filter set */
- IF( hBinRendererTd->HrFiltSet_p != NULL )
+ test();
+ IF( ( *hBinRendererTd->pHrFiltSet_p != NULL ) && ( hBinRendererTd->HrFiltSet_p != NULL ) )
{
IF( EQ_16( hBinRendererTd->HrFiltSet_p->FilterMethod, TDREND_HRFILT_Method_BSplineModel ) )
{
@@ -182,8 +186,13 @@ void TDREND_MIX_Dealloc_fx(
hBinRendererTd->HrFiltSet_p->RightFiltSet_p_fx = NULL;
}
}
- free( hBinRendererTd->HrFiltSet_p );
- hBinRendererTd->HrFiltSet_p = NULL;
+
+ IF( EQ_16( hBinRendererTd->HrFiltSet_p->ModelParams.modelROM, 1 ) )
+ {
+ free( hBinRendererTd->HrFiltSet_p );
+ hBinRendererTd->HrFiltSet_p = NULL;
+ *hBinRendererTd->pHrFiltSet_p = NULL;
+ }
}
return;
@@ -247,6 +256,9 @@ ivas_error TDREND_MIX_Init_fx(
{
hBinRendererTd->HrFiltSet_p = *hHrtfTD;
}
+
+ hBinRendererTd->pHrFiltSet_p = hHrtfTD;
+
IF( NE_32( hBinRendererTd->HrFiltSet_p->SampleRate, output_Fs ) )
{
return ( IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "The sampling rate for the HR filter set does not match the output sampling rate.\n" ) );
@@ -397,6 +409,8 @@ static ivas_error DefaultBSplineModel_fx(
model = &( HrFiltSet_p->ModelParams );
modelITD = &( HrFiltSet_p->ModelParamsITD );
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+#else
SWITCH( output_Fs )
{
case 48000:
@@ -410,11 +424,29 @@ static ivas_error DefaultBSplineModel_fx(
HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_32kHz_fx; // Q23
BREAK;
case 16000:
+#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB
+ for ( i = 0; i < 3; i++ )
+ {
+ HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( float ) );
+ if ( HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] == NULL )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
+ }
+ }
+ floatToFixed_arr32( defaultHRIR_coherence_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[2], Q27, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */
+ floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[1], Q23, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */
+ floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[0], Q23, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */
+ HrFiltSet_p->lr_energy_and_iac_fx[0] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[0];
+ HrFiltSet_p->lr_energy_and_iac_fx[1] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[1];
+ HrFiltSet_p->lr_energy_and_iac_fx[2] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[2];
+#else
HrFiltSet_p->lr_energy_and_iac_fx[0] = defaultHRIR_left_avg_power_16kHz_fx; // Q23
HrFiltSet_p->lr_energy_and_iac_fx[1] = defaultHRIR_right_avg_power_16kHz_fx; // Q23
HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_16kHz_fx; // Q23
+#endif
BREAK;
}
+#endif
/* Set ROM flag for correct deallocation */
model->modelROM = TRUE;
diff --git a/lib_rend/ivas_objectRenderer_sfx_fx.c b/lib_rend/ivas_objectRenderer_sfx_fx.c
index 210706d5be5ff42adb52c59029465e96f58dfdcf..a570273cfcc46e92c17c4184d7d7904307a02e53 100644
--- a/lib_rend/ivas_objectRenderer_sfx_fx.c
+++ b/lib_rend/ivas_objectRenderer_sfx_fx.c
@@ -278,8 +278,8 @@ void TDREND_firfilt_fx(
Word32 *mem_fx, /* i/o: filter memory Qx */
const Word16 subframe_length, /* i : Length of signal Q0 */
const Word16 filterlength, /* i : Filter length Q0 */
- const Word16 Gain_fx, /* i : Gain Q14 */
- const Word16 prevGain_fx /* i : Previous gain Q14 */
+ const Word32 Gain_fx, /* i : Gain Q30 */
+ const Word32 prevGain_fx /* i : Previous gain Q30 */
)
{
/* NOTE: this function is implemented with the assumption that the exponent/Q-factor of input signal will not change. */
@@ -289,15 +289,15 @@ void TDREND_firfilt_fx(
Word32 *p_filter_fx; // exp(filter_e)
Word16 i, j;
Word32 tmp_fx;
- Word16 step_fx /* Q15 */, gain_tmp_fx /* Q15 */, gain_delta_fx /* Q14 */;
+ Word32 step_fx /* Q31 */, gain_tmp_fx /* Q31 */, gain_delta_fx /* Q30 */;
Word16 tmp_e;
Word64 tmp64_fx;
- gain_delta_fx = sub( Gain_fx, prevGain_fx ); // Q14
- step_fx = BASOP_Util_Divide1616_Scale( gain_delta_fx, subframe_length, &tmp_e ); // exp(tmp_e)
- tmp_e = sub( tmp_e, Q14 );
- step_fx = shl_sat( step_fx, tmp_e ); // Q15
- gain_tmp_fx = shl_sat( prevGain_fx, 1 ); // Q15
+ gain_delta_fx = L_sub( Gain_fx, prevGain_fx ); // Q30
+ step_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( gain_delta_fx, subframe_length, &tmp_e ) ); // exp(tmp_e)
+ tmp_e = sub( tmp_e, Q30 );
+ step_fx = L_shl_sat( step_fx, tmp_e ); // Q31
+ gain_tmp_fx = L_shl_sat( prevGain_fx, 1 ); // Q31
/* Handle memory */
p_signal_fx = buffer_fx + sub( filterlength, 1 ); // Qx
@@ -328,8 +328,8 @@ void TDREND_firfilt_fx(
tmp_fx = W_extract_h( tmp64_fx ); // Qx
/* Apply linear gain interpolation in case of abrupt gain changes */
- gain_tmp_fx = add( gain_tmp_fx, step_fx ); // Q15
- signal_fx[i] = Mpy_32_16_1( tmp_fx, gain_tmp_fx ); // Qx
+ gain_tmp_fx = L_add_sat( gain_tmp_fx, step_fx ); /* Saturating values which just exceeds 1, Q31*/
+ signal_fx[i] = Mpy_32_32( tmp_fx, gain_tmp_fx ); // Qx
move32();
IF( LT_16( i, intp_count ) )
{
diff --git a/lib_rend/ivas_objectRenderer_sources_fx.c b/lib_rend/ivas_objectRenderer_sources_fx.c
index 7e35b80b2c0c2eefa628c9266a19555fd25ca8cc..cdb2d98472c9f750d7d0e189b1a1a1febf2cf4a8 100644
--- a/lib_rend/ivas_objectRenderer_sources_fx.c
+++ b/lib_rend/ivas_objectRenderer_sources_fx.c
@@ -275,8 +275,8 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx(
/* o : Length of filters */ // Q0
Word16 *itd,
/* o : ITD value */ // Q0
- Word16 *Gain,
- /* o : Gain value */ // Q14
+ Word32 *Gain,
+ /* o : Gain value */ // Q30
TDREND_SRC_t *Src_p, /* i/o: Source pointer */
const Word16 subframe_update_flag )
{
@@ -368,8 +368,8 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx(
/* Update total gains */
- *Gain = extract_h( L_shl( Mpy_32_32( L_shl( L_mult( *SrcRend_p->SrcGain_p_fx, *SrcRend_p->DirGain_p_fx ), 1 ), L_shl( L_mult( *SrcRend_p->DistGain_p_fx, hBinRendererTd->Gain_fx ), 1 ) ), 1 ) ); // Q14
- move16();
+ *Gain = L_shl( Mpy_32_32( L_shl( L_mult( *SrcRend_p->SrcGain_p_fx, *SrcRend_p->DirGain_p_fx ), 1 ), L_shl( L_mult( *SrcRend_p->DistGain_p_fx, hBinRendererTd->Gain_fx ), 1 ) ), 1 ); // Q30
+ move32();
/* Delta for interpolation, in case the angular step exceeds MAX_ANGULAR_STEP */
Word32 ele_tmp = Src_p->elev_prev_fx; // Q22
move32();
@@ -417,8 +417,8 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx(
{
*itd = 0; // Q0
move16();
- *Gain = ONE_IN_Q14; // Q14
- move16();
+ *Gain = ONE_IN_Q30; // Q30
+ move32();
set32_fx( hrf_left, 0, *filterlength );
set32_fx( hrf_right, 0, *filterlength );
hrf_left[0] = L_shr( L_add( SrcSpatial_p->Pos_p_fx[1], ONE_IN_Q25 ), 1 ); // Q25
@@ -886,9 +886,9 @@ void TDREND_SRC_Init_fx(
move32();
Src_p->elev_prev_fx = 0; // Q22
move32();
- Src_p->Gain_fx = ONE_IN_Q14; // Q14
- move16();
- Src_p->prevGain_fx = ONE_IN_Q14; // Q14
- move16();
+ Src_p->Gain_fx = ONE_IN_Q30; // Q30
+ move32();
+ Src_p->prevGain_fx = ONE_IN_Q30; // Q30
+ move32();
return;
}
diff --git a/lib_rend/ivas_omasa_ana_fx.c b/lib_rend/ivas_omasa_ana_fx.c
index ba632c6ba13d6c9cb6cfda1d137ad77445dcd078..7b7f64c842dd0f57b94045da2fcdc29a554dd933 100644
--- a/lib_rend/ivas_omasa_ana_fx.c
+++ b/lib_rend/ivas_omasa_ana_fx.c
@@ -538,8 +538,13 @@ static void ivas_omasa_param_est_ana_fx(
FOR( i = 1; i < nchan_ism; i++ )
{
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( Chnl_RealBuffer_fx[i], Foa_RealBuffer_fx[0], Foa_RealBuffer_fx[0], num_freq_bins ); // Q: Chnl_RealBuffer_q
+ v_add_fixed_no_hdrm( Chnl_ImagBuffer_fx[i], Foa_ImagBuffer_fx[0], Foa_ImagBuffer_fx[0], num_freq_bins ); // Q: Chnl_ImagBuffer_q
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( Chnl_RealBuffer_fx[i], Foa_RealBuffer_fx[0], Foa_RealBuffer_fx[0], num_freq_bins, 0 ); // Q: Chnl_RealBuffer_q
v_add_fixed( Chnl_ImagBuffer_fx[i], Foa_ImagBuffer_fx[0], Foa_ImagBuffer_fx[0], num_freq_bins, 0 ); // Q: Chnl_ImagBuffer_q
+#endif /* VEC_ARITH_OPT_v1 */
}
/* Y */
diff --git a/lib_rend/ivas_orient_trk_fx.c b/lib_rend/ivas_orient_trk_fx.c
index 16d2fcc73e18b18f402269116f276e184e1af7d2..ee91e7060e252c6d06e9827ba3f2e5d353710038 100644
--- a/lib_rend/ivas_orient_trk_fx.c
+++ b/lib_rend/ivas_orient_trk_fx.c
@@ -141,22 +141,22 @@ static void QuaternionDivision_fx(
{
Word16 scale_e, result_e = 0, w_q, x_q, y_q, z_q, result_q;
- r->w_fx = BASOP_Util_Divide3232_Scale_cadence( ( q.w_fx ), d, &scale_e );
+ r->w_fx = BASOP_Util_Divide3232_Scale_newton( ( q.w_fx ), d, &scale_e );
move32();
result_e = add( scale_e, sub( sub( Q31, q.q_fact ), den_e ) ); // e+e1-e2//
w_q = sub( Q31, result_e );
- r->x_fx = BASOP_Util_Divide3232_Scale_cadence( ( q.x_fx ), d, &scale_e );
+ r->x_fx = BASOP_Util_Divide3232_Scale_newton( ( q.x_fx ), d, &scale_e );
move32();
result_e = add( scale_e, sub( sub( Q31, q.q_fact ), den_e ) );
x_q = sub( Q31, result_e );
- r->y_fx = BASOP_Util_Divide3232_Scale_cadence( ( q.y_fx ), d, &scale_e );
+ r->y_fx = BASOP_Util_Divide3232_Scale_newton( ( q.y_fx ), d, &scale_e );
move32();
result_e = add( scale_e, sub( sub( Q31, q.q_fact ), den_e ) );
y_q = sub( Q31, result_e );
- r->z_fx = BASOP_Util_Divide3232_Scale_cadence( ( q.z_fx ), d, &scale_e );
+ r->z_fx = BASOP_Util_Divide3232_Scale_newton( ( q.z_fx ), d, &scale_e );
move32();
result_e = add( scale_e, sub( sub( Q31, q.q_fact ), den_e ) );
z_q = sub( Q31, result_e );
@@ -506,15 +506,15 @@ static IVAS_VECTOR3 VectorNormalize_fx(
move16();
length_fx = VectorLength_fx( p, &q_len );
- result_fx.x_fx = BASOP_Util_Divide3232_Scale_cadence( p.x_fx, length_fx, &scale );
+ result_fx.x_fx = BASOP_Util_Divide3232_Scale_newton( p.x_fx, length_fx, &scale );
move32();
x_qfact = sub( Q31, add( scale, sub( q_len, p.q_fact ) ) ); // e+(e1-e2)//
- result_fx.y_fx = BASOP_Util_Divide3232_Scale_cadence( p.y_fx, length_fx, &scale );
+ result_fx.y_fx = BASOP_Util_Divide3232_Scale_newton( p.y_fx, length_fx, &scale );
move32();
y_qfact = sub( Q31, add( scale, sub( q_len, p.q_fact ) ) );
- result_fx.z_fx = BASOP_Util_Divide3232_Scale_cadence( p.z_fx, length_fx, &scale );
+ result_fx.z_fx = BASOP_Util_Divide3232_Scale_newton( p.z_fx, length_fx, &scale );
move32();
z_qfact = sub( Q31, add( scale, sub( q_len, p.q_fact ) ) );
@@ -696,20 +696,12 @@ ivas_error ivas_orient_trk_SetReferenceRotation_fx(
return IVAS_ERR_UNEXPECTED_NULL_POINTER;
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/* check for Euler angle signaling */
IF( EQ_32( refRot.w_fx, L_negate( 12582912 ) ) && EQ_16( refRot.q_fact, Q22 ) )
{
Euler2Quat_fx( deg2rad_fx( refRot.x_fx ), deg2rad_fx( refRot.y_fx ), deg2rad_fx( refRot.z_fx ), &pOTR->refRot );
modify_Quat_q_fx( &pOTR->refRot, &pOTR->refRot, Q29 );
}
-#else
- /* check for Euler angle signaling */
- IF( EQ_32( refRot.w_fx, -1610612736 /* -3.0f in Q29 */ ) )
- {
- Euler2Quat_fx( deg2rad_fx( refRot.x_fx ), deg2rad_fx( refRot.y_fx ), deg2rad_fx( refRot.z_fx ), &pOTR->refRot );
- }
-#endif
pOTR->refRot = refRot;
return IVAS_ERR_OK;
diff --git a/lib_rend/ivas_output_init.c b/lib_rend/ivas_output_init.c
deleted file mode 100644
index c5271d06564129ee4b24bdeaa8d933ebb7d65729..0000000000000000000000000000000000000000
--- a/lib_rend/ivas_output_init.c
+++ /dev/null
@@ -1,508 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-#include
-#include "options.h"
-#include "ivas_cnst.h"
-#include "prot_fx.h"
-#include "ivas_prot_rend_fx.h"
-#include "ivas_rom_com.h"
-#include "ivas_rom_com_fx.h"
-#include "wmc_auto.h"
-#include "ivas_prot_fx.h"
-/*-------------------------------------------------------------------------*
- * audioCfg2channels()
- *
- * Map Audio configuration to number of channels
- *-------------------------------------------------------------------------*/
-
-/*! r: number of audio channels */
-Word16 audioCfg2channels(
- AUDIO_CONFIG output_config /* i : output audio configuration */
-)
-{
- Word16 nchan_out;
-
- SWITCH( output_config )
- {
- case IVAS_AUDIO_CONFIG_MONO:
- nchan_out = 1;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_STEREO:
- nchan_out = 2;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_5_1:
- nchan_out = 6;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_7_1:
- nchan_out = 8;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_5_1_2:
- nchan_out = 8;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_5_1_4:
- nchan_out = 10;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_7_1_4:
- nchan_out = 12;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_FOA:
- nchan_out = 4;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_HOA2:
- nchan_out = 9;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_HOA3:
- nchan_out = 16;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_OBA:
- nchan_out = 8;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_BINAURAL:
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED:
- case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM:
-#endif
- case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR:
- case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB:
- nchan_out = 2;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_ISM1:
- nchan_out = 1;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_ISM2:
- nchan_out = 2;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_ISM3:
- nchan_out = 3;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_ISM4:
- nchan_out = 4;
- move16();
- BREAK;
- default:
- IVAS_ERROR( IVAS_ERR_INTERNAL, "Error: illegal output configuration\n" );
- nchan_out = -1;
- move16();
- BREAK;
- }
-
- return ( nchan_out );
-}
-
-/*-------------------------------------------------------------------------*
- * ivas_output_init()
- *
- * Initialize and configure IVAS output parameters
- *-------------------------------------------------------------------------*/
-void ivas_output_init(
- IVAS_OUTPUT_SETUP *hOutSetup, /* o : IVAS output setup structure */
- const AUDIO_CONFIG output_config /* i : output audio configuration */
-)
-{
- Word16 nchan_out;
-
- /* set general default values */
- hOutSetup->output_config = output_config;
- move16();
- hOutSetup->is_loudspeaker_setup = 0;
- move16();
- hOutSetup->is_binaural_setup = 0;
- move16();
- hOutSetup->ambisonics_order = -1;
- move16();
- hOutSetup->separateChannelEnabled = 0;
- move16();
- hOutSetup->separateChannelIndex = 0;
- move16();
-
- IF( EQ_16( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- hOutSetup->is_loudspeaker_setup = 1;
- move16();
- /* set in ivas_init_decoder: */
- /* hOutSetup->ls_azimuth */
- /* hOutSetup->ls_elevation */
- /* hOutSetup->num_lfe */
- /* hOutSetup->index_lfe[0] */
- /* hOutSetup->is_planar_setup */
- }
- ELSE
- {
- /* Set default values for all other than custom LS setup */
- hOutSetup->ls_azimuth_fx = NULL;
- hOutSetup->ls_elevation_fx = NULL;
- hOutSetup->num_lfe = 0;
- move16();
- hOutSetup->index_lfe[0] = -1;
- move16();
- hOutSetup->is_planar_setup = 0;
- move16();
-
- /* set output setup specific values */
- SWITCH( output_config )
- {
- case IVAS_AUDIO_CONFIG_MONO:
- hOutSetup->is_loudspeaker_setup = 1;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_STEREO:
- hOutSetup->is_loudspeaker_setup = 1;
- move16();
- hOutSetup->ls_azimuth_fx = ls_azimuth_CICP2_fx; // Q22
- hOutSetup->ls_elevation_fx = ls_elevation_CICP2_fx; // Q22
- BREAK;
- case IVAS_AUDIO_CONFIG_FOA:
- hOutSetup->ambisonics_order = SBA_FOA_ORDER;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_HOA2:
- hOutSetup->ambisonics_order = SBA_HOA2_ORDER;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_HOA3:
- hOutSetup->ambisonics_order = SBA_HOA3_ORDER;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_5_1:
- hOutSetup->num_lfe = 1;
- move16();
- hOutSetup->index_lfe[0] = 3;
- move16();
- hOutSetup->is_loudspeaker_setup = 1;
- move16();
- hOutSetup->ls_azimuth_fx = ls_azimuth_CICP6_fx; // Q22
- hOutSetup->ls_elevation_fx = ls_elevation_CICP6_fx; // Q22
- hOutSetup->is_planar_setup = 1;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_7_1:
- hOutSetup->num_lfe = 1;
- move16();
- hOutSetup->index_lfe[0] = 3;
- move16();
- hOutSetup->is_loudspeaker_setup = 1;
- move16();
- hOutSetup->ls_azimuth_fx = ls_azimuth_CICP12_fx; // Q22
- hOutSetup->ls_elevation_fx = ls_elevation_CICP12_fx; // Q22
- hOutSetup->is_planar_setup = 1;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_5_1_2:
- hOutSetup->num_lfe = 1;
- move16();
- hOutSetup->index_lfe[0] = 3;
- move16();
- hOutSetup->is_loudspeaker_setup = 1;
- move16();
- hOutSetup->ls_azimuth_fx = ls_azimuth_CICP14_fx; // Q22
- hOutSetup->ls_elevation_fx = ls_elevation_CICP14_fx; // Q22
- hOutSetup->is_planar_setup = 0;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_5_1_4:
- hOutSetup->num_lfe = 1;
- move16();
- hOutSetup->index_lfe[0] = 3;
- move16();
- hOutSetup->is_loudspeaker_setup = 1;
- move16();
- hOutSetup->ls_azimuth_fx = ls_azimuth_CICP16_fx; // Q22
- hOutSetup->ls_elevation_fx = ls_elevation_CICP16_fx; // Q22
- hOutSetup->is_planar_setup = 0;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_7_1_4:
- hOutSetup->num_lfe = 1;
- move16();
- hOutSetup->index_lfe[0] = 3;
- move16();
- hOutSetup->is_loudspeaker_setup = 1;
- move16();
- hOutSetup->ls_azimuth_fx = ls_azimuth_CICP19_fx; // Q22
- hOutSetup->ls_elevation_fx = ls_elevation_CICP19_fx; // Q22
- hOutSetup->is_planar_setup = 0;
- move16();
- BREAK;
- case IVAS_AUDIO_CONFIG_BINAURAL:
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED:
- case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM:
-#endif
- case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR:
- case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB:
- case IVAS_AUDIO_CONFIG_ISM1:
- case IVAS_AUDIO_CONFIG_ISM2:
- case IVAS_AUDIO_CONFIG_ISM3:
- case IVAS_AUDIO_CONFIG_ISM4:
- hOutSetup->is_binaural_setup = 1;
- move16();
- case IVAS_AUDIO_CONFIG_EXTERNAL:
- /* Default values are used */
- BREAK;
- default:
- return;
- }
- }
-
- test();
- IF( NE_16( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) && NE_16( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_out = audioCfg2channels( output_config );
- hOutSetup->nchan_out_woLFE = sub( nchan_out, hOutSetup->num_lfe );
- move16();
- }
-
- return;
-}
-
-
-/*-----------------------------------------------------------------*
- * ivas_get_nchan_buffers_dec()
- *
- * Return number of decoder audio buffers
- *-----------------------------------------------------------------*/
-
-/*! r: number of decoder buffers */
-Word16 ivas_get_nchan_buffers_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const Word16 sba_analysis_order, /* i : SBA order evaluated in SBA decoder */
- const Word32 ivas_total_brate /* i : total IVAS bitrate */
-)
-{
- Word16 nchan_out_buff;
- AUDIO_CONFIG output_config;
-
- output_config = st_ivas->hDecoderConfig->output_config;
- move16();
-
- nchan_out_buff = MAX_OUTPUT_CHANNELS;
- move16();
-
- IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) )
- {
- nchan_out_buff = st_ivas->hDecoderConfig->nchan_out;
- move16();
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) )
- {
- nchan_out_buff = s_max( st_ivas->hDecoderConfig->nchan_out, CPE_CHANNELS );
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
- {
- nchan_out_buff = st_ivas->nchan_ism;
- move16();
-
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
- }
- ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) );
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
- {
- Word16 nchan_internal;
- nchan_internal = ivas_sba_get_nchan_metadata_fx( sba_analysis_order, ivas_total_brate );
- nchan_out_buff = st_ivas->hDecoderConfig->nchan_out;
- move16();
-
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
- }
- ELSE
- {
- nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) );
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
- }
- nchan_out_buff = s_max( nchan_out_buff, nchan_internal );
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
- {
- nchan_out_buff = CPE_CHANNELS;
- move16();
-
- test();
- test();
- test();
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
- }
- else if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
- EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
-#endif
- )
- {
- nchan_out_buff = shl( CPE_CHANNELS, 1 );
- }
- ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) );
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
- {
- nchan_out_buff = add( st_ivas->nchan_ism, CPE_CHANNELS );
-
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
- }
- ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) );
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
- }
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
- {
- Word16 nchan_internal;
- nchan_internal = ivas_sba_get_nchan_metadata_fx( sba_analysis_order, ivas_total_brate );
- nchan_out_buff = add( st_ivas->nchan_ism, st_ivas->nchan_transport );
-
- IF( st_ivas->hMCT != NULL )
- {
- nchan_out_buff = shl( shr( add( nchan_out_buff, 1 ), 1 ), 1 ); /* ensure odd number of channels in MCT */
- }
-
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
- }
- ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) );
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
-
- test();
- IF( EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) )
- {
- nchan_out_buff = s_max( add( nchan_out_buff, st_ivas->nchan_ism ), audioCfg2channels( output_config ) ); /* needed for ivas_sba_upmixer_renderer() */
- }
- ELSE
- {
- nchan_out_buff = s_max( add( nchan_out_buff, st_ivas->nchan_ism ), audioCfg2channels( output_config ) ); /* needed for ivas_spar_dec_upmixer_sf() which is based on 'nchan_out' */
- }
- }
- ELSE IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
- {
- nchan_out_buff = add( st_ivas->hDecoderConfig->nchan_out, st_ivas->nchan_ism ); /*take into account sba_ch_idx' in ivas_dec() */
- }
-
- test();
- IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, add( nchan_internal, st_ivas->nchan_ism ) );
- }
- nchan_out_buff = s_min( nchan_out_buff, MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS );
- }
- ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) )
- {
- nchan_out_buff = st_ivas->hDecoderConfig->nchan_out;
-
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
- {
- nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
- }
- ELSE
- {
- nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) );
- nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
- }
- }
-
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
- {
- nchan_out_buff = max( nchan_out_buff, st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS );
- }
-#endif
-
- return nchan_out_buff;
-}
-
-/*-------------------------------------------------------------------*
- * ivas_output_buff_dec()
- *
- * Allocate/reallocate output audio buffers
- *-------------------------------------------------------------------*/
-ivas_error ivas_output_buff_dec_fx(
- Word32 *p_output_f[], /* i/o: output audio buffers */
- const Word16 nchan_out_buff_old, /* i : previous frame number of output channels */
- const Word16 nchan_out_buff /* i : number of output channels */
-)
-{
- Word16 ch;
- IF( GT_16( nchan_out_buff, nchan_out_buff_old ) )
- {
- FOR( ch = nchan_out_buff_old; ch < nchan_out_buff; ch++ )
- {
- /* note: these are intra-frame heap memories */
- IF( ( p_output_f[ch] = (Word32 *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( Word32 ) ) ) == NULL ) /* note: 32000 == max internal sampling rate */
- {
- return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) );
- }
- }
- }
- ELSE
- {
- FOR( ch = nchan_out_buff; ch < nchan_out_buff_old; ch++ )
- {
- free( p_output_f[ch] );
- p_output_f[ch] = NULL;
- }
- }
- return IVAS_ERR_OK;
-}
diff --git a/lib_rend/ivas_output_init_fx.c b/lib_rend/ivas_output_init_fx.c
index 3b01f62ca0af91b601d6b42e79f8426dfdd906c1..5c19acb5fc00de4a18d30664cf1c7bfdc8a9734d 100644
--- a/lib_rend/ivas_output_init_fx.c
+++ b/lib_rend/ivas_output_init_fx.c
@@ -1,7 +1,468 @@
+/******************************************************************************************************
-#include "ivas_prot_fx.h"
-#include "ivas_prot_rend_fx.h"
+ (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
+ Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
+ Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
+ Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
+ contributors to this repository. All Rights Reserved.
+
+ This software is protected by copyright law and by international treaties.
+ The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
+ Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
+ Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
+ Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
+ contributors to this repository retain full ownership rights in their respective contributions in
+ the software. This notice grants no license of any kind, including but not limited to patent
+ license, nor is any license granted by implication, estoppel or otherwise.
+
+ Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
+ contributions.
+
+ This software is provided "AS IS", without any express or implied warranties. The software is in the
+ development stage. It is intended exclusively for experts who have experience with such software and
+ solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
+ and fitness for a particular purpose are hereby disclaimed and excluded.
+
+ Any dispute, controversy or claim arising under or in relation to providing this software shall be
+ submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
+ accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
+ the United Nations Convention on Contracts on the International Sales of Goods.
+
+*******************************************************************************************************/
+
+#include
#include
+#include "options.h"
+#include "ivas_cnst.h"
+#include "prot_fx.h"
+#include "ivas_prot_rend_fx.h"
+#include "ivas_rom_com.h"
+#include "ivas_rom_com_fx.h"
+#include "wmc_auto.h"
+#include "ivas_prot_fx.h"
+/*-------------------------------------------------------------------------*
+ * audioCfg2channels()
+ *
+ * Map Audio configuration to number of channels
+ *-------------------------------------------------------------------------*/
+
+/*! r: number of audio channels */
+Word16 audioCfg2channels(
+ AUDIO_CONFIG output_config /* i : output audio configuration */
+)
+{
+ Word16 nchan_out;
+
+ SWITCH( output_config )
+ {
+ case IVAS_AUDIO_CONFIG_MONO:
+ nchan_out = 1;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_STEREO:
+ nchan_out = 2;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_5_1:
+ nchan_out = 6;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_7_1:
+ nchan_out = 8;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_5_1_2:
+ nchan_out = 8;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_5_1_4:
+ nchan_out = 10;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_7_1_4:
+ nchan_out = 12;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_FOA:
+ nchan_out = 4;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_HOA2:
+ nchan_out = 9;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_HOA3:
+ nchan_out = 16;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_OBA:
+ nchan_out = 8;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_BINAURAL:
+ case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED:
+ case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM:
+ case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR:
+ case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB:
+ nchan_out = 2;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_ISM1:
+ nchan_out = 1;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_ISM2:
+ nchan_out = 2;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_ISM3:
+ nchan_out = 3;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_ISM4:
+ nchan_out = 4;
+ move16();
+ BREAK;
+ default:
+ IVAS_ERROR( IVAS_ERR_INTERNAL, "Error: illegal output configuration\n" );
+ nchan_out = -1;
+ move16();
+ BREAK;
+ }
+
+ return ( nchan_out );
+}
+
+/*-------------------------------------------------------------------------*
+ * ivas_output_init()
+ *
+ * Initialize and configure IVAS output parameters
+ *-------------------------------------------------------------------------*/
+void ivas_output_init(
+ IVAS_OUTPUT_SETUP *hOutSetup, /* o : IVAS output setup structure */
+ const AUDIO_CONFIG output_config /* i : output audio configuration */
+)
+{
+ Word16 nchan_out;
+
+ /* set general default values */
+ hOutSetup->output_config = output_config;
+ move16();
+ hOutSetup->is_loudspeaker_setup = 0;
+ move16();
+ hOutSetup->is_binaural_setup = 0;
+ move16();
+ hOutSetup->ambisonics_order = -1;
+ move16();
+ hOutSetup->separateChannelEnabled = 0;
+ move16();
+ hOutSetup->separateChannelIndex = 0;
+ move16();
+
+ IF( EQ_16( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ hOutSetup->is_loudspeaker_setup = 1;
+ move16();
+ /* set in ivas_init_decoder: */
+ /* hOutSetup->ls_azimuth */
+ /* hOutSetup->ls_elevation */
+ /* hOutSetup->num_lfe */
+ /* hOutSetup->index_lfe[0] */
+ /* hOutSetup->is_planar_setup */
+ }
+ ELSE
+ {
+ /* Set default values for all other than custom LS setup */
+ hOutSetup->ls_azimuth_fx = NULL;
+ hOutSetup->ls_elevation_fx = NULL;
+ hOutSetup->num_lfe = 0;
+ move16();
+ hOutSetup->index_lfe[0] = -1;
+ move16();
+ hOutSetup->is_planar_setup = 0;
+ move16();
+
+ /* set output setup specific values */
+ SWITCH( output_config )
+ {
+ case IVAS_AUDIO_CONFIG_MONO:
+ hOutSetup->is_loudspeaker_setup = 1;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_STEREO:
+ hOutSetup->is_loudspeaker_setup = 1;
+ move16();
+ hOutSetup->ls_azimuth_fx = ls_azimuth_CICP2_fx; // Q22
+ hOutSetup->ls_elevation_fx = ls_elevation_CICP2_fx; // Q22
+ BREAK;
+ case IVAS_AUDIO_CONFIG_FOA:
+ hOutSetup->ambisonics_order = SBA_FOA_ORDER;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_HOA2:
+ hOutSetup->ambisonics_order = SBA_HOA2_ORDER;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_HOA3:
+ hOutSetup->ambisonics_order = SBA_HOA3_ORDER;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_5_1:
+ hOutSetup->num_lfe = 1;
+ move16();
+ hOutSetup->index_lfe[0] = 3;
+ move16();
+ hOutSetup->is_loudspeaker_setup = 1;
+ move16();
+ hOutSetup->ls_azimuth_fx = ls_azimuth_CICP6_fx; // Q22
+ hOutSetup->ls_elevation_fx = ls_elevation_CICP6_fx; // Q22
+ hOutSetup->is_planar_setup = 1;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_7_1:
+ hOutSetup->num_lfe = 1;
+ move16();
+ hOutSetup->index_lfe[0] = 3;
+ move16();
+ hOutSetup->is_loudspeaker_setup = 1;
+ move16();
+ hOutSetup->ls_azimuth_fx = ls_azimuth_CICP12_fx; // Q22
+ hOutSetup->ls_elevation_fx = ls_elevation_CICP12_fx; // Q22
+ hOutSetup->is_planar_setup = 1;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_5_1_2:
+ hOutSetup->num_lfe = 1;
+ move16();
+ hOutSetup->index_lfe[0] = 3;
+ move16();
+ hOutSetup->is_loudspeaker_setup = 1;
+ move16();
+ hOutSetup->ls_azimuth_fx = ls_azimuth_CICP14_fx; // Q22
+ hOutSetup->ls_elevation_fx = ls_elevation_CICP14_fx; // Q22
+ hOutSetup->is_planar_setup = 0;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_5_1_4:
+ hOutSetup->num_lfe = 1;
+ move16();
+ hOutSetup->index_lfe[0] = 3;
+ move16();
+ hOutSetup->is_loudspeaker_setup = 1;
+ move16();
+ hOutSetup->ls_azimuth_fx = ls_azimuth_CICP16_fx; // Q22
+ hOutSetup->ls_elevation_fx = ls_elevation_CICP16_fx; // Q22
+ hOutSetup->is_planar_setup = 0;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_7_1_4:
+ hOutSetup->num_lfe = 1;
+ move16();
+ hOutSetup->index_lfe[0] = 3;
+ move16();
+ hOutSetup->is_loudspeaker_setup = 1;
+ move16();
+ hOutSetup->ls_azimuth_fx = ls_azimuth_CICP19_fx; // Q22
+ hOutSetup->ls_elevation_fx = ls_elevation_CICP19_fx; // Q22
+ hOutSetup->is_planar_setup = 0;
+ move16();
+ BREAK;
+ case IVAS_AUDIO_CONFIG_BINAURAL:
+ case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED:
+ case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM:
+ case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR:
+ case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB:
+ case IVAS_AUDIO_CONFIG_ISM1:
+ case IVAS_AUDIO_CONFIG_ISM2:
+ case IVAS_AUDIO_CONFIG_ISM3:
+ case IVAS_AUDIO_CONFIG_ISM4:
+ hOutSetup->is_binaural_setup = 1;
+ move16();
+ case IVAS_AUDIO_CONFIG_EXTERNAL:
+ /* Default values are used */
+ BREAK;
+ default:
+ return;
+ }
+ }
+
+ test();
+ IF( NE_16( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) && NE_16( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_out = audioCfg2channels( output_config );
+ hOutSetup->nchan_out_woLFE = sub( nchan_out, hOutSetup->num_lfe );
+ move16();
+ }
+
+ return;
+}
+
+
+/*-----------------------------------------------------------------*
+ * ivas_get_nchan_buffers_dec()
+ *
+ * Return number of decoder audio buffers
+ *-----------------------------------------------------------------*/
+
+/*! r: number of decoder buffers */
+Word16 ivas_get_nchan_buffers_dec(
+ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
+ const Word16 sba_analysis_order, /* i : SBA order evaluated in SBA decoder */
+ const Word32 ivas_total_brate /* i : total IVAS bitrate */
+)
+{
+ Word16 nchan_out_buff;
+ AUDIO_CONFIG output_config;
+
+ output_config = st_ivas->hDecoderConfig->output_config;
+ move16();
+
+ nchan_out_buff = MAX_OUTPUT_CHANNELS;
+ move16();
+
+ IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) )
+ {
+ nchan_out_buff = st_ivas->hDecoderConfig->nchan_out;
+ move16();
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) )
+ {
+ nchan_out_buff = s_max( st_ivas->hDecoderConfig->nchan_out, CPE_CHANNELS );
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) )
+ {
+ nchan_out_buff = st_ivas->nchan_ism;
+ move16();
+
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
+ }
+ ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) );
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) )
+ {
+ Word16 nchan_internal;
+ nchan_internal = ivas_sba_get_nchan_metadata_fx( sba_analysis_order, ivas_total_brate );
+ nchan_out_buff = st_ivas->hDecoderConfig->nchan_out;
+ move16();
+
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
+ }
+ ELSE
+ {
+ nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) );
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
+ }
+ nchan_out_buff = s_max( nchan_out_buff, nchan_internal );
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) )
+ {
+ nchan_out_buff = CPE_CHANNELS;
+ move16();
+
+ test();
+ test();
+ test();
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
+ }
+ ELSE if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
+ EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
+ {
+ nchan_out_buff = shl( CPE_CHANNELS, 1 );
+ }
+ ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) );
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) )
+ {
+ nchan_out_buff = add( st_ivas->nchan_ism, CPE_CHANNELS );
+
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
+ }
+ ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) );
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
+ }
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) )
+ {
+ Word16 nchan_internal;
+ nchan_internal = ivas_sba_get_nchan_metadata_fx( sba_analysis_order, ivas_total_brate );
+ nchan_out_buff = add( st_ivas->nchan_ism, st_ivas->nchan_transport );
+
+ IF( st_ivas->hMCT != NULL )
+ {
+ nchan_out_buff = shl( shr( add( nchan_out_buff, 1 ), 1 ), 1 ); /* ensure odd number of channels in MCT */
+ }
+
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
+ }
+ ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) );
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
+
+ test();
+ IF( EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) )
+ {
+ nchan_out_buff = s_max( add( nchan_out_buff, st_ivas->nchan_ism ), audioCfg2channels( output_config ) ); /* needed for ivas_sba_upmixer_renderer() */
+ }
+ ELSE
+ {
+ nchan_out_buff = s_max( add( nchan_out_buff, st_ivas->nchan_ism ), audioCfg2channels( output_config ) ); /* needed for ivas_spar_dec_upmixer_sf() which is based on 'nchan_out' */
+ }
+ }
+ ELSE IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) )
+ {
+ nchan_out_buff = add( st_ivas->hDecoderConfig->nchan_out, st_ivas->nchan_ism ); /*take into account sba_ch_idx' in ivas_dec() */
+ }
+
+ test();
+ IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, add( nchan_internal, st_ivas->nchan_ism ) );
+ }
+ nchan_out_buff = s_min( nchan_out_buff, MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS );
+ }
+ ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) )
+ {
+ nchan_out_buff = st_ivas->hDecoderConfig->nchan_out;
+
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) )
+ {
+ nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) );
+ }
+ ELSE
+ {
+ nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) );
+ nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) );
+ }
+ }
+
+ IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
+ {
+ nchan_out_buff = max( nchan_out_buff, st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS );
+ }
+
+ return nchan_out_buff;
+}
Word16 ivas_get_nchan_buffers_dec_ivas_fx(
Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
@@ -159,6 +620,42 @@ Word16 ivas_get_nchan_buffers_dec_ivas_fx(
return nchan_out_buff;
}
+
+/*-------------------------------------------------------------------*
+ * ivas_output_buff_dec()
+ *
+ * Allocate/reallocate output audio buffers
+ *-------------------------------------------------------------------*/
+ivas_error ivas_output_buff_dec_fx(
+ Word32 *p_output_f[], /* i/o: output audio buffers */
+ const Word16 nchan_out_buff_old, /* i : previous frame number of output channels */
+ const Word16 nchan_out_buff /* i : number of output channels */
+)
+{
+ Word16 ch;
+ IF( GT_16( nchan_out_buff, nchan_out_buff_old ) )
+ {
+ FOR( ch = nchan_out_buff_old; ch < nchan_out_buff; ch++ )
+ {
+ /* note: these are intra-frame heap memories */
+ IF( ( p_output_f[ch] = (Word32 *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( Word32 ) ) ) == NULL ) /* note: 32000 == max internal sampling rate */
+ {
+ return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) );
+ }
+ }
+ }
+ ELSE
+ {
+ FOR( ch = nchan_out_buff; ch < nchan_out_buff_old; ch++ )
+ {
+ free( p_output_f[ch] );
+ p_output_f[ch] = NULL;
+ }
+ }
+ return IVAS_ERR_OK;
+}
+
+
/*---------------------------------------------------------------------*
* get_channel_config()
*
diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h
index 4e23011b47814863f848ef9019b4b447c455a005..96774b44f019200f5ea8f03a8de24301b96dfffc 100644
--- a/lib_rend/ivas_prot_rend_fx.h
+++ b/lib_rend/ivas_prot_rend_fx.h
@@ -220,18 +220,18 @@ void ivas_masa_ext_rend_parambin_render_fx(
MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA ext rend structure */
COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */
Word32 *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output Q11*/
-#ifdef SPLIT_REND_WITH_HEAD_ROT
const Word16 num_subframes, /* i : number of subframes to render */
const SPLIT_REND_WRAPPER *hSplitRendWrapper, /* i : split rendering orientation data */
Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : rendered orientations for split rend. real part of cldfb */
Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] /* o : rendered orientations for split rend. imag part of cldfb */
-#else
- const Word16 num_subframes /* i : number of subframes to render */
-#endif
);
ivas_error ivas_dirac_dec_init_binaural_data_fx(
Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
+#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF
+ HRTFS_PARAMBIN_HANDLE *phHrtfParambin /* i : HRTF structure for rendering */
+#else
HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : HRTF structure for rendering */
+#endif
);
void ivas_dirac_dec_close_binaural_data(
@@ -472,8 +472,10 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
Word16 q_diffuseness,
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
+#ifndef FIX_998_UNUSED_FUNCTION
const Word16 sh_rot_max_order,
const Word32 *p_Rmat, /* i : rotation matrix */
+#endif
const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */
const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */
const Word16 nchan_transport, /* i : number of transport channels*/
@@ -545,8 +547,10 @@ void ivas_dirac_dec_compute_directional_responses_fx(
const Word16 md_idx,
const Word32 *surCohRatio_fx,
Word16 Q_surCohRatio,
+#ifndef FIX_998_UNUSED_FUNCTION
const Word16 shd_rot_max_order, /* i : split-order rotation method */
const Word32 *p_Rmat, /* i : rotation matrix */
+#endif
const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */
);
@@ -620,6 +624,21 @@ void ivas_HRTF_CRend_binary_close_fx(
HRTFS_CREND **hSetOfHRTF /* i/o: Set of HRTF handle */
);
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ivas_error ivas_HRTF_statistics_init(
+ HRTFS_STATISTICS_HANDLE *hHrtfStatistics, /* i/o: HRTF statistics structure */
+ int32_t sampleRate /* i : Sample rate */
+);
+
+void ivas_HRTF_statistics_close(
+ HRTFS_STATISTICS **hHrtfStatistics /* i/o: HRTF statistics structure */
+);
+
+ivas_error ivas_HRTF_statistics_binary_open(
+ HRTFS_STATISTICS **hHrtfStatistics /* i/o: HRTF statistics structure */
+);
+
+#endif
/*----------------------------------------------------------------------------------*
* TD object renderer
@@ -763,7 +782,7 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx(
Word16 *intp_count, /* o : Interpolation count */
Word16 *filterlength, /* o : Length of filters */
Word16 *itd, /* o : ITD value */
- Word16 *Gain, /* o : Gain value */
+ Word32 *Gain, /* o : Gain value Q30 */
TDREND_SRC_t *Src_p, /* i/o: Source pointer */
const Word16 subframe_update_flag);
@@ -850,8 +869,8 @@ void TDREND_firfilt_fx(
Word32 *mem_fx, /* i/o: filter memory Qx */
const Word16 subframe_length, /* i : Length of signal */
const Word16 filterlength, /* i : Filter length */
- const Word16 Gain_fx, /* i : Gain Q14 */
- const Word16 prevGain_fx /* i : Previous gain Q14 */
+ const Word32 Gain_fx, /* i : Gain Q30 */
+ const Word32 prevGain_fx /* i : Previous gain Q30 */
);
@@ -865,21 +884,16 @@ ivas_error ivas_rend_openCrend(
const AUDIO_CONFIG outConfig,
RENDER_CONFIG_DATA *hRendCfg,
HRTFS_CREND_HANDLE hSetOfHRTF,
-#ifdef SPLIT_REND_WITH_HEAD_ROT
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ HRTFS_STATISTICS_HANDLE hHrtfStatistics,
+#endif
const Word32 output_Fs,
const Word16 num_poses
-#else
- const Word32 output_Fs
-#endif
);
void ivas_rend_closeCrend(
-#ifdef SPLIT_REND_WITH_HEAD_ROT
CREND_WRAPPER_HANDLE *pCrend ,
const Word16 num_poses
-#else
- CREND_WRAPPER_HANDLE *pCrend
-#endif
);
ivas_error ivas_hrtf_init(
@@ -887,12 +901,8 @@ ivas_error ivas_hrtf_init(
);
ivas_error ivas_rend_initCrendWrapper(
-#ifdef SPLIT_REND_WITH_HEAD_ROT
CREND_WRAPPER_HANDLE *pCrend,
const Word16 num_poses
-#else
- CREND_WRAPPER_HANDLE *pCrend
-#endif
);
ivas_error ivas_rend_crendProcessSubframe(
@@ -908,10 +918,8 @@ ivas_error ivas_rend_crendProcessSubframe(
Word32 *output[], /* i/o: input/output audio channels */
const Word16 n_samples_to_render, /* i : output frame length per channel */
const Word32 output_Fs /* i : output sampling rate */
-#ifdef SPLIT_REND_WITH_HEAD_ROT
,
const Word16 pos_idx
-#endif
);
@@ -919,16 +927,35 @@ ivas_error ivas_rend_crendProcessSubframe(
* Reverberator
*----------------------------------------------------------------------------------*/
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ivas_error ivas_binaural_reverb_init(
+#else
ivas_error ivas_binaural_reverb_open_fastconv_fx(
+#endif
REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */
+#else
+#endif
const Word16 numBins, /* i : number of CLDFB bins */
const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */
+#else
IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */
const AUDIO_CONFIG internal_config, /* i : internal audio config for FastConv */
+#endif
const Word32 sampling_rate, /* i : sampling rate */
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ const Word32 *defaultTimes, /* i : default reverberation times */
+ const Word32 *defaultEne /* i : default reverberation energies */
+#else
const HRTFS_FASTCONV_HANDLE hHrtfFastConv /* i : FastConv HRTF handle */
+#endif
);
+
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
ivas_error ivas_binaural_reverb_open_parambin(
REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */
const Word16 numBins, /* i : number of CLDFB bins Q0 */
@@ -937,6 +964,7 @@ ivas_error ivas_binaural_reverb_open_parambin(
const Word32 sampling_rate, /* i : sampling rate Q0 */
const HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : Parametric binauralizer HRTF handle */
);
+#endif
void ivas_binaural_reverb_close_fx(
REVERB_STRUCT_HANDLE *hReverb /* i/o: binaural reverb handle */
@@ -957,9 +985,13 @@ void ivas_binaural_reverb_processSubframe_fx(
ivas_error ivas_reverb_open_fx(
REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */
+#else
const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */
const HRTFS_HANDLE hHrtf, /* i : HRTF handle */
const Word32 *lr_energy_and_iac_fx[], /* i : precomuputed lr energies and iac */
+#endif
RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */
const Word32 output_Fs /* i : output sampling rate */
);
@@ -1105,6 +1137,14 @@ void ivas_reverb_calc_color_levels_fx(
const Word32 *pT60_filter_coeff, //input in Q31
Word32 *pTarget_color_L, //output in Q30
Word32 *pTarget_color_R); //output in Q30
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ivas_error ivas_reverb_prepare_cldfb_params(
+ const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params,
+ const HRTFS_STATISTICS_HANDLE hHrtfStatistics,
+ const int32_t output_Fs,
+ float *pOutput_t60,
+ float *pOutput_ene );
+#else
ivas_error ivas_reverb_prepare_cldfb_params(
IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params,
const HRTFS_FASTCONV_HANDLE hHrtfFastConv,
@@ -1113,6 +1153,7 @@ ivas_error ivas_reverb_prepare_cldfb_params(
const int32_t output_Fs,
float *pOutput_t60,
float *pOutput_ene );
+#endif
void ivas_reverb_interpolate_acoustic_data_fx(
const Word16 input_table_size,
const Word32 *pInput_fc, //input in Q16
@@ -1125,6 +1166,7 @@ void ivas_reverb_interpolate_acoustic_data_fx(
Word16 *pOutput_t60_e, //output e
Word16 *pOutput_dsr_e //output e
);
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
void ivas_reverb_get_hrtf_set_properties_fx(
Word32 **ppHrtf_set_L_re,
Word32 **ppHrtf_set_L_im,
@@ -1138,7 +1180,7 @@ void ivas_reverb_get_hrtf_set_properties_fx(
Word32 *pOut_avg_pwr_R, //output in Q23
Word32 *out_i_a_coherence //output in Q27
);
-
+#endif
/*---------------------------------------------------------------------------------*
* Shoebox Prototypes
*-----------------------------------------------------------------------------------*/
@@ -1513,7 +1555,6 @@ void masaPrerendClose_fx(
MASA_PREREND_HANDLE *hMasaPrerendPtr /* i/o: prerenderer handle to be closed */
);
-#ifdef SPLIT_REND_WITH_HEAD_ROT
/*----------------------------------------------------------------------------------*
* Split rendering
*----------------------------------------------------------------------------------*/
@@ -1592,7 +1633,6 @@ void ivas_rend_closeCldfbRend(
CLDFB_REND_WRAPPER *pCldfbRend
);
-#endif
/* clang-format on */
diff --git a/lib_rend/ivas_reflections_fx.c b/lib_rend/ivas_reflections_fx.c
index 9344a58726d5e524fe635034300448bccc5b8e2d..6bd0ed87c14b7a2cbbd9a3f6f89856361688c014 100644
--- a/lib_rend/ivas_reflections_fx.c
+++ b/lib_rend/ivas_reflections_fx.c
@@ -56,17 +56,9 @@ static UWord16 LC_mixing_7_1[7] = { 0, 1, 2, 3, 4, 3, 4 };
static UWord16 LC_mixing_5_1_2[7] = { 0, 1, 2, 3, 4, 0, 1 };
-#ifdef NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER
static UWord16 LC_mixing_5_1_4[9] = { 0, 1, 2, 3, 4, 0, 1, 3, 4 };
-#else
-static UWord16 LC_mixing_5_1_4[9] = { 0, 1, 2, 3, 4, 0, 1, 2, 3 };
-#endif
-#ifdef NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER
static UWord16 LC_mixing_7_1_4[11] = { 0, 1, 2, 3, 4, 3, 4, 0, 1, 3, 4 };
-#else
-static UWord16 LC_mixing_7_1_4[11] = { 0, 1, 2, 3, 4, 3, 4, 0, 1, 2, 3 };
-#endif
/*-----------------------------------------------------------------------------------------*
@@ -346,17 +338,13 @@ ivas_error ivas_er_encoder_init(
p_y_fx = reflections->shoebox_data.az_angle.data_fx[i]; // Q23
move32();
move32();
-#ifdef SPLIT_REND_WITH_HEAD_ROT
- p_x_fx = L_shr( p_x_fx, 1 ); // Q22
- p_y_fx = L_shr( p_y_fx, 1 ); // Q22
-#endif
+ p_x_fx = L_shr( p_x_fx, 1 ); // Q22
+ p_y_fx = L_shr( p_y_fx, 1 ); // Q22
rad_el_angle = deg2rad_fx( p_x_fx ); // Q22
rad_az_angle = deg2rad_fx( p_y_fx ); // Q22
-#ifdef SPLIT_REND_WITH_HEAD_ROT
rad_el_angle = L_shl( rad_el_angle, 1 ); // Q23
rad_az_angle = L_shl( rad_az_angle, 1 ); // Q23
-#endif
rad_el_angle = L_shr( rad_el_angle, 10 ); // Q13
rad_az_angle = L_shr( rad_az_angle, 10 ); // Q13
diff --git a/lib_rend/ivas_render_config_fx.c b/lib_rend/ivas_render_config_fx.c
index 0ce576cb3416b17527a80e46d2df14a1b18ffe39..fc5c263510d659daf4507178a7402fc36b1a1e0d 100644
--- a/lib_rend/ivas_render_config_fx.c
+++ b/lib_rend/ivas_render_config_fx.c
@@ -137,7 +137,6 @@ ivas_error ivas_render_config_init_from_rom_fx(
move16();
}
-#ifdef SPLIT_REND_WITH_HEAD_ROT
( *hRenderConfig )->split_rend_config.splitRendBitRate = SPLIT_REND_768k;
move32();
( *hRenderConfig )->split_rend_config.dof = 3;
@@ -146,10 +145,8 @@ ivas_error ivas_render_config_init_from_rom_fx(
move16();
( *hRenderConfig )->split_rend_config.codec_delay_ms = 0;
move16();
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
( *hRenderConfig )->split_rend_config.isar_frame_size_ms = 20;
move16();
-#endif
( *hRenderConfig )->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */
move16();
( *hRenderConfig )->split_rend_config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT;
@@ -158,11 +155,8 @@ ivas_error ivas_render_config_init_from_rom_fx(
move32();
( *hRenderConfig )->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT;
move32();
-#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
( *hRenderConfig )->split_rend_config.lc3plus_highres = 0;
move16();
-#endif
-#endif
return IVAS_ERR_OK;
}
diff --git a/lib_rend/ivas_reverb_filter_design_fx.c b/lib_rend/ivas_reverb_filter_design_fx.c
index 62c97f88f4b4c78c399967ee85854c694ac44929..75710875524f3ed4099464bad3714ab71d395adb 100644
--- a/lib_rend/ivas_reverb_filter_design_fx.c
+++ b/lib_rend/ivas_reverb_filter_design_fx.c
@@ -411,7 +411,7 @@ static void response_step_limit_fx(
IF( X[i] )
{
- desiredChange = BASOP_Util_Divide3232_Scale_cadence( X[i], X[i - 1], &div_e );
+ desiredChange = BASOP_Util_Divide3232_Scale_newton( X[i], X[i - 1], &div_e );
desiredChange_q = sub( 31, ( div_e ) );
}
@@ -459,7 +459,7 @@ static void response_step_limit_fx(
IF( X[i] )
{
- desiredChange = BASOP_Util_Divide3232_Scale_cadence( X[i], X[i + 1], &div_e );
+ desiredChange = BASOP_Util_Divide3232_Scale_newton( X[i], X[i + 1], &div_e );
desiredChange_q = sub( 31, ( div_e ) );
}
IF( GT_16( desiredChange_q, 30 ) )
@@ -742,9 +742,9 @@ void ivas_reverb_calc_color_levels_fx(
move16();
cos_w = getCosWord16R2( (Word16) L_abs( L_shl( Mpy_32_32( pFc[freq_idx], fs_inverted ), 3 ) ) ); // q = 15
H_filter = L_add( L_shr( L_add( L_shr( Mpy_32_32( coefB[0], coefB[0] ), 1 ), L_shr( Mpy_32_32( coefB[1], coefB[1] ), 1 ) ), 2 ), L_shr( Mpy_32_32( coefB[0], Mpy_32_32( coefB[1], L_shl( cos_w, 15 ) ) ), 1 ) ); // q = 28
- H_filter = BASOP_Util_Divide3232_Scale_cadence( H_filter, L_add( ONE_IN_Q28, L_shr( L_add( L_shr( Mpy_32_32( coefA[1], coefA[1] ), 2 ), Mpy_32_32( coefA[1], L_shl( cos_w, 15 ) ) ), 1 ) ), &temp );
+ H_filter = BASOP_Util_Divide3232_Scale_newton( H_filter, L_add( ONE_IN_Q28, L_shr( L_add( L_shr( Mpy_32_32( coefA[1], coefA[1] ), 2 ), Mpy_32_32( coefA[1], L_shl( cos_w, 15 ) ) ), 1 ) ), &temp );
H_filter = Sqrt32( H_filter, &temp );
- T60_est = BASOP_Util_Divide3232_Scale_cadence( L_shl( i_mult( -3, pLoop_delays[loop_idx] ), 2 ), Mpy_32_32( Mpy_32_32( L_add( BASOP_Util_Log2( H_filter ), L_shl( temp, 25 ) ), LOG10_2_Q31 ), L_shl( output_Fs, 8 ) ), &temp ); // conversion of log2 to log10.
+ T60_est = BASOP_Util_Divide3232_Scale_newton( L_shl( i_mult( -3, pLoop_delays[loop_idx] ), 2 ), Mpy_32_32( Mpy_32_32( L_add( BASOP_Util_Log2( H_filter ), L_shl( temp, 25 ) ), LOG10_2_Q31 ), L_shl( output_Fs, 8 ) ), &temp ); // conversion of log2 to log10.
t60[freq_idx] = BASOP_Util_Add_Mant32Exp( T60_est, temp, t60[freq_idx], t60_e[freq_idx], &result_e );
move16();
t60_e[freq_idx] = result_e;
@@ -775,14 +775,14 @@ void ivas_reverb_calc_color_levels_fx(
{
Word16 temp, temp1, temp2, temp3 = 0, temp4, temp5;
move16();
- Word32 var1 = BASOP_Util_Divide3232_Scale_cadence( (Word32) i_mult( -6, minDelay ), L_shr( Mpy_32_32( t60[freq_idx], L_shl( output_Fs, 11 ) ), sub( 11, t60_e[freq_idx] ) ), &temp );
+ Word32 var1 = BASOP_Util_Divide3232_Scale_newton( (Word32) i_mult( -6, minDelay ), L_shr( Mpy_32_32( t60[freq_idx], L_shl( output_Fs, 11 ) ), sub( 11, t60_e[freq_idx] ) ), &temp );
var1 = Mpy_32_32( var1, LOG2_10_Q29 ); // e = temp + (31 - 29)
Word32 A0_square_est = BASOP_util_Pow2( var1, add( temp, 31 - 29 ), &temp );
Word16 alpha_e;
- Word32 alpha = BASOP_Util_Divide3232_Scale_cadence( -log__0_001, t60[freq_idx], &alpha_e ); // alpha_e = 1 + alpha_e + (3 - t60_e[257])
+ Word32 alpha = BASOP_Util_Divide3232_Scale_newton( -log__0_001, t60[freq_idx], &alpha_e ); // alpha_e = 1 + alpha_e + (3 - t60_e[257])
- Word32 div11 = BASOP_Util_Divide3232_Scale_cadence( A0_square_est, alpha, &temp1 ); // e = temp1 + (temp - alpha_e)
- Word32 div2 = BASOP_Util_Divide3232_Scale_cadence( L_shl( output_Fs, 11 ), L_shr( L_add( Mpy_32_16_1( 1884631649, shl( minDelayDiff, 3 ) ), 14037339 ), 8 ), &temp2 ); // e = temp2, 26.7741 in Q19, 0.8776 in Q31
+ Word32 div11 = BASOP_Util_Divide3232_Scale_newton( A0_square_est, alpha, &temp1 ); // e = temp1 + (temp - alpha_e)
+ Word32 div2 = BASOP_Util_Divide3232_Scale_newton( L_shl( output_Fs, 11 ), L_shr( L_add( Mpy_32_16_1( 1884631649, shl( minDelayDiff, 3 ) ), 14037339 ), 8 ), &temp2 ); // e = temp2, 26.7741 in Q19, 0.8776 in Q31
const Word32 revPredNormEnergy = Mpy_32_32( div2, div11 ); // q = (15 - temp2) + (15 - temp1) - 15 + 1
// L_max
@@ -794,7 +794,7 @@ void ivas_reverb_calc_color_levels_fx(
L_tmp = W_extract_h( W_shl( W_tmp1, W_shift ) );
temp4 = sub( 3, W_shift );
div2 = Sqrt32( L_tmp, &temp4 );
- pTarget_color_L[freq_idx] = BASOP_Util_Divide3232_Scale_cadence( div2, div1, &temp5 );
+ pTarget_color_L[freq_idx] = BASOP_Util_Divide3232_Scale_newton( div2, div1, &temp5 );
move32();
temp5 = add( temp5, sub( temp4, temp3 ) );
pTarget_color_L_e[freq_idx] = temp5;
@@ -807,7 +807,7 @@ void ivas_reverb_calc_color_levels_fx(
L_tmp = W_extract_h( W_shl( W_tmp2, W_shift ) );
temp4 = sub( 3, W_shift );
div2 = Sqrt32( L_tmp, &temp4 );
- pTarget_color_R[freq_idx] = BASOP_Util_Divide3232_Scale_cadence( div2, div1, &temp5 );
+ pTarget_color_R[freq_idx] = BASOP_Util_Divide3232_Scale_newton( div2, div1, &temp5 );
move32();
temp5 = add( temp5, sub( temp4, temp3 ) );
pTarget_color_R_e[freq_idx] = temp5;
@@ -825,7 +825,7 @@ void ivas_reverb_calc_color_levels_fx(
Word32 div1;
Word16 temp = 0;
move16();
- div1 = BASOP_Util_Divide3232_Scale_cadence( L_mult0( 1000, sub( freq_count, 1 ) ), L_shr( output_Fs, 1 ), &temp );
+ div1 = BASOP_Util_Divide3232_Scale_newton( L_mult0( 1000, sub( freq_count, 1 ) ), L_shr( output_Fs, 1 ), &temp );
div1 = BASOP_Util_Add_Mant32Exp( div1, temp, ONE_IN_Q30, 1, &temp );
idx_pivot = extract_l( L_shr( div1, sub( 31, temp ) ) );
/* Perform step limiting */
@@ -839,7 +839,7 @@ void ivas_reverb_calc_color_levels_fx(
}
/*-------------------------------------------------------------------*
- * ivas_reverb_interpolate_acoustic_data()
+ * ivas_reverb_interpolate_acoustic_data_fx()
*
* Interpolates data from the input T60 and DSR tables to the FFT pFilter uniform grid
* Note: the fc frequencies both for the input and the output must be in the ascending order
@@ -919,6 +919,9 @@ void ivas_reverb_interpolate_acoustic_data_fx(
return;
}
+
+
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
/*-------------------------------------------------------------------*
* ivas_reverb_get_hrtf_set_properties()
*
@@ -1174,3 +1177,4 @@ void ivas_reverb_get_hrtf_set_properties_fx(
return;
}
+#endif
diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c
index 9b149940c08947d8a2548fe6ba486729f34fd7fa..b5da387084038b1b34ac744da64829670cfa0eae 100644
--- a/lib_rend/ivas_reverb_fx.c
+++ b/lib_rend/ivas_reverb_fx.c
@@ -1257,28 +1257,39 @@ static void set_fft_and_datablock_sizes_fx(
}
/*-----------------------------------------------------------------------------------------*
- * Function set_reverb_acoustic_data()
+ * Function set_reverb_acoustic_data_fx()
*
* Sets reverb acoustic data (room acoustics and HRTF), interpolating it to the filter grid
*-----------------------------------------------------------------------------------------*/
static void set_reverb_acoustic_data_fx(
ivas_reverb_params_t *pParams,
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+#else
const AUDIO_CONFIG input_audio_config,
const HRTFS_HANDLE hHrtf,
+#endif
IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pRoomAcoustics,
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
const Word16 subframe_len,
+#endif
const Word16 nr_fc_input,
const Word16 nr_fc_fft_filter )
{
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ int16_t bin_idx;
+#else
Word16 nr_out_ch, hrtf_idx, offset, iter_idx, bin_idx;
+#endif
+ Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp;
+ Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e;
+ Word16 pow_exp;
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
Word32 *pHrtf_set_l_re_fx[MAX_INTERN_CHANNELS];
Word32 *pHrtf_set_l_im_fx[MAX_INTERN_CHANNELS];
Word32 *pHrtf_set_r_re_fx[MAX_INTERN_CHANNELS];
Word32 *pHrtf_set_r_im_fx[MAX_INTERN_CHANNELS];
- Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp;
- Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e;
- Word16 pow_exp;
+#endif
Word32 *pFc_input_fx = pRoomAcoustics->pFc_input_fx;
Word32 *pAcoustic_rt60_fx = pRoomAcoustics->pAcoustic_rt60_fx;
@@ -1290,6 +1301,7 @@ static void set_reverb_acoustic_data_fx(
Word32 *pDsr_fx = pParams->pDsr_fx;
Word16 *pDsr_e = pParams->pDsr_e;
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
/* use crend hrtf filters */
IF( hHrtf != NULL )
{
@@ -1330,7 +1342,7 @@ static void set_reverb_acoustic_data_fx(
pParams->pHrtf_avg_pwr_response_r_const_fx = (const Word32 *) pParams->pHrtf_avg_pwr_response_r_fx;
pParams->pHrtf_inter_aural_coherence_const_fx = (const Word32 *) pParams->pHrtf_inter_aural_coherence_fx;
}
-
+#endif
/* interpolate input table data for T60 and DSR to the FFT filter grid */
ivas_reverb_interpolate_acoustic_data_fx( nr_fc_input, pFc_input_fx, pAcoustic_rt60_fx, pAcoustic_dsr_fx,
nr_fc_fft_filter, pFc_fx, pRt60_fx, pDsr_fx, pRt60_e, pDsr_e );
@@ -1461,13 +1473,16 @@ static ivas_error setup_FDN_branches_fx(
*------------------------------------------------------------------------*/
ivas_error ivas_reverb_open_fx(
- REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */
+ REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */
+#else
const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */
const HRTFS_HANDLE hHrtf, /* i : HRTF handle */
const Word32 *lr_energy_and_iac_fx[], /* i : precomuputed lr energies and iac */
- RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */
- const Word32 output_Fs /* i : output sampling rate */
-)
+#endif
+ RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */
+ const int32_t output_Fs )
{
ivas_error error;
REVERB_HANDLE pState = NULL;
@@ -1541,6 +1556,13 @@ ivas_error ivas_reverb_open_fx(
}
test();
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ set_reverb_acoustic_data_fx( ¶ms, &hRenderConfig->roomAcoustics, nr_fc_input, nr_fc_fft_filter );
+ params.pHrtf_avg_pwr_response_l_const_fx = hHrtfStatistics->average_energy_l;
+ params.pHrtf_avg_pwr_response_r_const_fx = hHrtfStatistics->average_energy_r;
+ params.pHrtf_inter_aural_coherence_const_fx = hHrtfStatistics->inter_aural_coherence;
+#else
IF( hHrtf == NULL && lr_energy_and_iac_fx != NULL )
{
params.pHrtf_avg_pwr_response_l_const_fx = lr_energy_and_iac_fx[0];
@@ -1564,6 +1586,7 @@ ivas_error ivas_reverb_open_fx(
params.pDsr_fx[i] = L_abs( params.pDsr_fx[i] );
move32();
}
+#endif
/* set reverb acoustic configuration based on renderer config */
pState->pConfig.roomAcoustics.override = hRenderConfig->roomAcoustics.override;
@@ -1727,8 +1750,10 @@ ivas_error ivas_reverb_open_fx(
{
return error;
}
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
free( pDsr_e );
free( pRt60_e );
+#endif
*hReverb = pState;
return error;
@@ -2177,13 +2202,23 @@ void ivas_binaural_reverb_processSubframe_fx(
{
IF( s_and( ch, 1 ) )
{
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( hReverb->preDelayBufferReal_fx[idx], inReal[ch][sample], hReverb->preDelayBufferReal_fx[idx], hReverb->numBins );
+ v_add_fixed_no_hdrm( hReverb->preDelayBufferImag_fx[idx], inImag[ch][sample], hReverb->preDelayBufferImag_fx[idx], hReverb->numBins );
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( hReverb->preDelayBufferReal_fx[idx], inReal[ch][sample], hReverb->preDelayBufferReal_fx[idx], hReverb->numBins, 0 );
v_add_fixed( hReverb->preDelayBufferImag_fx[idx], inImag[ch][sample], hReverb->preDelayBufferImag_fx[idx], hReverb->numBins, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
}
ELSE
{
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( hReverb->preDelayBufferReal_fx[idx], inImag[ch][sample], hReverb->preDelayBufferReal_fx[idx], hReverb->numBins );
+ v_add_fixed_no_hdrm( hReverb->preDelayBufferImag_fx[idx], inReal[ch][sample], hReverb->preDelayBufferImag_fx[idx], hReverb->numBins );
+#else /* VEC_ARITH_OPT_v1 */
v_sub_fixed( hReverb->preDelayBufferReal_fx[idx], inImag[ch][sample], hReverb->preDelayBufferReal_fx[idx], hReverb->numBins, 0 );
v_add_fixed( hReverb->preDelayBufferImag_fx[idx], inReal[ch][sample], hReverb->preDelayBufferImag_fx[idx], hReverb->numBins, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
}
}
idx = add( idx, 1 ) % hReverb->preDelayBufferLength;
@@ -2213,20 +2248,40 @@ void ivas_binaural_reverb_processSubframe_fx(
SWITCH( phaseShiftTypePr[tapIdx] )
{
case 0: /* 0 degrees phase */
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( hReverb->outputBufferReal_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots );
+ v_add_fixed_no_hdrm( hReverb->outputBufferImag_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots );
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( hReverb->outputBufferReal_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots, 0 );
v_add_fixed( hReverb->outputBufferImag_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
BREAK;
case 1: /* 90 degrees phase */
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( hReverb->outputBufferReal_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots );
+ v_add_fixed_no_hdrm( hReverb->outputBufferImag_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots );
+#else /* VEC_ARITH_OPT_v1 */
v_sub_fixed( hReverb->outputBufferReal_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots, 0 );
v_add_fixed( hReverb->outputBufferImag_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
BREAK;
case 2: /* 180 degrees phase */
+#ifdef VEC_ARITH_OPT_v1
+ v_sub_fixed_no_hdrm( hReverb->outputBufferReal_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots );
+ v_sub_fixed_no_hdrm( hReverb->outputBufferImag_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots );
+#else /* VEC_ARITH_OPT_v1 */
v_sub_fixed( hReverb->outputBufferReal_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots, 0 );
v_sub_fixed( hReverb->outputBufferImag_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
BREAK;
default: /* 270 degrees phase */
+#ifdef VEC_ARITH_OPT_v1
+ v_add_fixed_no_hdrm( hReverb->outputBufferReal_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots );
+ v_sub_fixed_no_hdrm( hReverb->outputBufferImag_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots );
+#else /* VEC_ARITH_OPT_v1 */
v_add_fixed( hReverb->outputBufferReal_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots, 0 );
v_sub_fixed( hReverb->outputBufferImag_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots, 0 );
+#endif /* VEC_ARITH_OPT_v1 */
BREAK;
}
}
@@ -2416,6 +2471,61 @@ static ivas_error ivas_binaural_reverb_open_fx(
return IVAS_ERR_OK;
}
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+/*-------------------------------------------------------------------------
+ * ivas_binaural_reverb_init()
+ *
+ * Allocate and initialize binaural room reverberator handle
+ * for CLDFB renderers
+ *------------------------------------------------------------------------*/
+ivas_error ivas_binaural_reverb_init(
+ REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */
+ const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */
+ const Word16 numBins, /* i : number of CLDFB bins */
+ const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */
+ const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */
+ const Word32 sampling_rate, /* i : sampling rate */
+ const Word32 *defaultTimes, /* i : default reverberation times */
+ const Word32 *defaultEne /* i : default reverberation energies */
+)
+{
+ ivas_error error;
+ const Word32 *revTimes;
+ const Word32 *revEne;
+ Word32 t60[CLDFB_NO_CHANNELS_MAX];
+ Word32 ene[CLDFB_NO_CHANNELS_MAX];
+ Word16 preDelay;
+
+ error = IVAS_ERR_OK;
+
+ if ( ( roomAcoustics != NULL ) && roomAcoustics->override )
+ {
+ float t60_temp[CLDFB_NO_CHANNELS_MAX];
+ float ene_temp[CLDFB_NO_CHANNELS_MAX];
+ if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60_temp, ene_temp ) ) != IVAS_ERR_OK )
+ {
+ return error;
+ }
+ floatToFixed_arrL32( t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX );
+ floatToFixed_arrL32( ene_temp, ene, Q15, CLDFB_NO_CHANNELS_MAX );
+ revTimes = t60;
+ revEne = ene;
+
+ preDelay = (int16_t) roundf( 48000.0f * roomAcoustics->acousticPreDelay / CLDFB_NO_CHANNELS_MAX );
+ }
+ else
+ {
+ revTimes = defaultTimes;
+ revEne = defaultEne;
+ preDelay = 10;
+ }
+
+ error = ivas_binaural_reverb_open_fx( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay );
+
+ return error;
+}
+#else
+
/*-------------------------------------------------------------------------
* ivas_binaural_reverb_open_fastconv()
*
@@ -2445,17 +2555,15 @@ ivas_error ivas_binaural_reverb_open_fastconv_fx(
/* THIS PART IS YET TO BE CONVERTED AS REVERB_UTILS.C IS NOT INVOKED IN GPROF */
float t60_flt[CLDFB_NO_CHANNELS_MAX];
float ene_flt[CLDFB_NO_CHANNELS_MAX];
+
revTimes = t60;
revEne = ene;
- if ( NE_32( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics,
- hHrtfFastConv,
- internal_config,
- false,
- sampling_rate, t60_flt, ene_flt ) ),
- IVAS_ERR_OK ) )
+
+ IF( NE_32( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfFastConv, internal_config, false, sampling_rate, t60_flt, ene_flt ) ), IVAS_ERR_OK ) )
{
return error;
}
+
preDelay = (Word16) roundf( 48000.0f * roomAcoustics->acousticPreDelay / CLDFB_NO_CHANNELS_MAX );
floatToFixed_arrL( t60_flt, t60, Q31, CLDFB_NO_CHANNELS_MAX );
floatToFixed_arrL( ene_flt, ene, Q31, CLDFB_NO_CHANNELS_MAX );
@@ -2473,17 +2581,19 @@ ivas_error ivas_binaural_reverb_open_fastconv_fx(
return error;
}
+
/*-------------------------------------------------------------------------
* ivas_binaural_reverb_open_parambin()
*
* Allocate and initialize binaural room reverberator handle for ParamBin
*------------------------------------------------------------------------*/
+
ivas_error ivas_binaural_reverb_open_parambin(
REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */
- const Word16 numBins, /* i : number of CLDFB bins Q0 */
- const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame Q0 */
+ const Word16 numBins, /* i : number of CLDFB bins Q0 */
+ const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame Q0 */
IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */
- const Word32 sampling_rate, /* i : sampling rate Q0 */
+ const Word32 sampling_rate, /* i : sampling rate Q0 */
const HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : Parametric binauralizer HRTF handle */
)
{
@@ -2516,6 +2626,7 @@ ivas_error ivas_binaural_reverb_open_parambin(
return error;
}
+#endif
/*-------------------------------------------------------------------------
* ivas_binaural_reverb_close()
*
diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c
index b3e1e72fa1f947d9930e486943970c422f2097a3..75cc4b816d5570970a89f7d7d4fa13855f310146 100644
--- a/lib_rend/ivas_reverb_utils_fx.c
+++ b/lib_rend/ivas_reverb_utils_fx.c
@@ -64,8 +64,11 @@ typedef struct cldfb_convolver_state
float filter_states_im[BINAURAL_CONVBANDS][CLDFB_CONVOLVER_NTAPS_MAX];
} cldfb_convolver_state;
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+static void ivas_reverb_set_energies( const Word32 *avg_pwr_l, const Word32 *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_l_out, float *avg_pwr_r_out );
+#else
static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right );
-
+#endif
/*-----------------------------------------------------------------------------------------*
* Function ivas_reverb_prepare_cldfb_params()
@@ -73,6 +76,15 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCO
* Prepares reverb parameters for CLDFB-based reverberator
*-----------------------------------------------------------------------------------------*/
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ivas_error ivas_reverb_prepare_cldfb_params(
+ const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params,
+ const HRTFS_STATISTICS_HANDLE hHrtfStatistics,
+ const int32_t output_Fs,
+ float *pOutput_t60,
+ float *pOutput_ene )
+#else
ivas_error ivas_reverb_prepare_cldfb_params(
IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params,
const HRTFS_FASTCONV_HANDLE hHrtfFastConv,
@@ -81,6 +93,7 @@ ivas_error ivas_reverb_prepare_cldfb_params(
const int32_t output_Fs,
float *pOutput_t60,
float *pOutput_ene )
+#endif
{
int16_t idx;
float fc[CLDFB_NO_CHANNELS_MAX];
@@ -89,11 +102,13 @@ ivas_error ivas_reverb_prepare_cldfb_params(
float delay_diff, ln_1e6_inverted, exp_argument;
const float dist = DEFAULT_SRC_DIST;
const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f;
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
ivas_error error;
+#endif
for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ )
{
- fc[idx] = ( (float) idx + 0.5f ) * ( (float) MAX_SAMPLING_RATE / (float) ( 2 * CLDFB_NO_CHANNELS_MAX ) );
+ fc[idx] = ( idx + 0.5f ) * ( MAX_SAMPLING_RATE / ( 2 * CLDFB_NO_CHANNELS_MAX ) );
}
Word32 *fc_fx = (Word32 *) malloc( pInput_params->nBands * sizeof( Word32 * ) );
Word32 *pOutput_t60_fx = (Word32 *) malloc( pInput_params->nBands * sizeof( Word32 * ) );
@@ -133,11 +148,14 @@ ivas_error ivas_reverb_prepare_cldfb_params(
exp_argument = max( exp_argument, -23.0f );
pOutput_ene[idx] *= expf( exp_argument );
}
-
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right );
+#else
if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK )
{
return error;
}
+#endif
for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ )
{
@@ -147,7 +165,7 @@ ivas_error ivas_reverb_prepare_cldfb_params(
return IVAS_ERR_OK;
}
-
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
/*-----------------------------------------------------------------------------------------*
* Function ivas_cldfb_convolver()
*
@@ -260,7 +278,20 @@ static ivas_error ivas_reverb_get_cldfb_hrtf_set_properties(
return IVAS_ERR_OK;
}
+#endif
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+/*-----------------------------------------------------------------------------------------*
+ * Function ivas_reverb_set_energies()
+ *
+ * Function gets the precalculated left/right energies and computes average
+ * left/right energies to CLDFB bin center frequencies.
+ *-----------------------------------------------------------------------------------------*/
+static void ivas_reverb_set_energies(
+ const Word32 *avg_pwr_l,
+ const Word32 *avg_pwr_r,
+#else
/*-----------------------------------------------------------------------------------------*
* Function ivas_reverb_get_fastconv_hrtf_set_energies()
*
@@ -273,22 +304,73 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies(
const HRTFS_FASTCONV_HANDLE hHrtfFastConv,
const AUDIO_CONFIG input_audio_config,
const int16_t use_brir,
+#endif
const int32_t sampling_rate,
float *avg_pwr_left,
float *avg_pwr_right )
{
int16_t freq_idx;
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
float avg_pwr_left_fft[FFT_SPECTRUM_SIZE];
float avg_pwr_right_fft[FFT_SPECTRUM_SIZE];
+#endif
float input_fc[FFT_SPECTRUM_SIZE];
+
+#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
ivas_error error;
+#endif
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+ const int16_t avg_pwr_len = sampling_rate == 16000 ? LR_IAC_LENGTH_NR_FC_16KHZ : LR_IAC_LENGTH_NR_FC;
+
+ for ( freq_idx = 0; freq_idx < avg_pwr_len; freq_idx++ )
+ {
+ input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( avg_pwr_len - 1 ) );
+ }
+#else
for ( freq_idx = 0; freq_idx < FFT_SPECTRUM_SIZE; freq_idx++ )
{
input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( FFT_SPECTRUM_SIZE - 1 ) );
}
+#endif
+
+#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
+
+ Word32 *input_fc_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) );
+
+ Word32 *output_fc_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) );
+ Word16 *avg_pwr_left_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) );
+ Word16 *avg_pwr_right_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) );
+ Word32 *avg_pwr_left_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) );
+ Word32 *avg_pwr_right_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) );
+
+ for ( int i = 0; i < 60; i++ )
+ {
+ input_fc_fx[i] = (Word32) input_fc[i] * ( 1 << 16 );
+ }
+ for ( int i = 0; i < 257; i++ )
+ {
+ output_fc_fx[i] = (Word32) input_fc[i] * ONE_IN_Q16;
+ }
+
+ ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_l, avg_pwr_r,
+ CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e );
+ for ( int i = 0; i < 257; i++ )
+ {
+ avg_pwr_left[i] = (float) fabs( me2f( avg_pwr_left_fx[i], avg_pwr_left_e[i] ) );
+ avg_pwr_right[i] = (float) fabs( me2f( avg_pwr_right_fx[i], avg_pwr_right_e[i] ) );
+ }
+
+ free( input_fc_fx );
+ free( output_fc_fx );
+ free( avg_pwr_left_e );
+ free( avg_pwr_right_e );
+ free( avg_pwr_left_fx );
+ free( avg_pwr_left_fx );
+
+#else
if ( ( error = ivas_reverb_get_cldfb_hrtf_set_properties( input_audio_config, hHrtfFastConv, use_brir, sampling_rate, avg_pwr_left_fft, avg_pwr_right_fft ) ) != IVAS_ERR_OK )
{
return error;
@@ -322,6 +404,7 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies(
avg_pwr_left[i] = (float) fabs( me2f( avg_pwr_left_fx[i], avg_pwr_left_e[i] ) );
avg_pwr_right[i] = (float) fabs( me2f( avg_pwr_right_fx[i], avg_pwr_right_e[i] ) );
}
+
free( input_fc_fx );
free( avg_pwr_left_fft_fx );
free( avg_pwr_right_fft_fx );
@@ -331,4 +414,5 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies(
free( avg_pwr_right_fx );
free( avg_pwr_right_e );
return IVAS_ERR_OK;
+#endif
}
diff --git a/lib_rend/ivas_rom_binaural_crend_head.h b/lib_rend/ivas_rom_binaural_crend_head.h
index 2b4c3e919fcb39f74d9d8ae84b4a89ea1bf52ecf..9e40c49ba23eeebac208911d9393b0e56678892a 100644
--- a/lib_rend/ivas_rom_binaural_crend_head.h
+++ b/lib_rend/ivas_rom_binaural_crend_head.h
@@ -57,42 +57,54 @@ extern Word32 CRendBin_Combined_HRIR_latency_s_fx;
/* Sample Rate = 48000 */
extern Word16 CRendBin_Combined_HRIR_max_num_iterations_48kHz;
-extern UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz;
-extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[15];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS];
+#else
+extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS];
+#endif
extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][240];
-extern Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][240];
+extern Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240];
+extern Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 32000 */
extern Word16 CRendBin_Combined_HRIR_max_num_iterations_32kHz;
-extern UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz;
-extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[15];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS];
+#else
+extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS];
+#endif
extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][160];
-extern Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][160];
+extern Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160];
+extern Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 16000 */
extern Word16 CRendBin_Combined_HRIR_max_num_iterations_16kHz;
-extern UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz;
-extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[15];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS];
+#else
+extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS];
+#endif
extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][80];
-extern Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][80];
+extern Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80];
+extern Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS];
@@ -106,42 +118,54 @@ extern Word32 CRendBin_FOA_HRIR_latency_s_fx;
/* Sample Rate = 48000 */
extern Word16 CRendBin_FOA_HRIR_max_num_iterations_48kHz;
-extern UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz;
-extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[4];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS];
+#else
+extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[FOA_CHANNELS];
+#endif
extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[4][BINAURAL_CHANNELS][240];
-extern Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[4][BINAURAL_CHANNELS][240];
+extern Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240];
+extern Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 32000 */
extern Word16 CRendBin_FOA_HRIR_max_num_iterations_32kHz;
-extern UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz;
-extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[4];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS];
+#else
+extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[FOA_CHANNELS];
+#endif
extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[4][BINAURAL_CHANNELS][160];
-extern Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[4][BINAURAL_CHANNELS][160];
+extern Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160];
+extern Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 16000 */
extern Word16 CRendBin_FOA_HRIR_max_num_iterations_16kHz;
-extern UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz;
-extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[4];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS];
+#else
+extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[FOA_CHANNELS];
+#endif
extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[4][BINAURAL_CHANNELS][80];
-extern Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[4][BINAURAL_CHANNELS][80];
+extern Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80];
+extern Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS];
@@ -154,42 +178,54 @@ extern Word32 CRendBin_HOA2_HRIR_latency_s_fx;
/* Sample Rate = 48000 */
extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_48kHz;
-extern UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz;
-extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[9];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS];
+#else
+extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[HOA2_CHANNELS];
+#endif
extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[9][BINAURAL_CHANNELS][240];
-extern Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[9][BINAURAL_CHANNELS][240];
+extern Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240];
+extern Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 32000 */
extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_32kHz;
-extern UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz;
-extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[9];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS];
+#else
+extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[HOA2_CHANNELS];
+#endif
extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[9][BINAURAL_CHANNELS][160];
-extern Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[9][BINAURAL_CHANNELS][160];
+extern Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160];
+extern Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 16000 */
extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_16kHz;
-extern UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz;
-extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[9];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS];
+#else
+extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[HOA2_CHANNELS];
+#endif
extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[9][BINAURAL_CHANNELS][80];
-extern Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[9][BINAURAL_CHANNELS][80];
+extern Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80];
+extern Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS];
@@ -201,42 +237,54 @@ extern Word32 CRendBin_HOA3_HRIR_latency_s_fx;
/* Sample Rate = 48000 */
extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_48kHz;
-extern UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz;
-extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[16];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS];
+#else
+extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[HOA3_CHANNELS];
+#endif
extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[16][BINAURAL_CHANNELS][240];
-extern Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[16][BINAURAL_CHANNELS][240];
+extern Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240];
+extern Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 32000 */
extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_32kHz;
-extern UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz;
-extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[16];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS];
+#else
+extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[HOA3_CHANNELS];
+#endif
extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[16][BINAURAL_CHANNELS][160];
-extern Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[16][BINAURAL_CHANNELS][160];
+extern Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160];
+extern Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 16000 */
extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_16kHz;
-extern UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1];
extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz;
-extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[16];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS];
+#else
+extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[HOA3_CHANNELS];
+#endif
extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
-extern Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[16][BINAURAL_CHANNELS][80];
-extern Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[16][BINAURAL_CHANNELS][80];
+extern Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80];
+extern Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS];
@@ -249,42 +297,75 @@ extern Word32 CRendBin_Combined_BRIR_latency_s_fx;
/* Sample Rate = 48000 */
extern Word16 CRendBin_Combined_BRIR_max_num_iterations_48kHz;
-extern UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22];
extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz;
-extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[15];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS];
+#else
+extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS];
+#endif
extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40];
-extern Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][2955];
-extern Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][2955];
+extern Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955];
+extern Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS][2885];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS][2885];
/* Sample Rate = 32000 */
extern Word16 CRendBin_Combined_BRIR_max_num_iterations_32kHz;
-extern UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22];
extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz;
-extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[15];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS];
+#else
+extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS];
+#endif
extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40];
-extern Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][2819];
-extern Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][2819];
+extern Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819];
+extern Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS][2870];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS][2870];
/* Sample Rate = 16000 */
extern Word16 CRendBin_Combined_BRIR_max_num_iterations_16kHz;
-extern UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS];
extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23];
extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz;
-extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[15];
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS];
+#else
+extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS];
+#endif
extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40];
-extern Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][1774];
-extern Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][1774];
+extern Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774];
+extern Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS][2522];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS][2522];
+
+#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
+extern const Word32 defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/
+extern const Word32 defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/
+extern const Word32 defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/
+
+extern const Word32 defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/
+extern const Word32 defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/
+extern const Word32 defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/
+
+#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB
+extern Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-27*/
+extern Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/
+extern Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/
+#else
+extern const Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/
+extern const Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/
+extern const Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/
+#endif
+#endif
+
#endif /* _IVAS_ROM_BINAURAL_CREND_HEAD_ */
diff --git a/lib_rend/ivas_rom_binaural_crend_head_fx.c b/lib_rend/ivas_rom_binaural_crend_head_fx.c
index be015058b11ea110a13953c52676ad6ac5cdc9b3..71a98fb0ef71988424409e3b0053af90cc2fa0e5 100644
--- a/lib_rend/ivas_rom_binaural_crend_head_fx.c
+++ b/lib_rend/ivas_rom_binaural_crend_head_fx.c
@@ -57,33 +57,45 @@ const Word32 CRendBin_Combined_HRIR_latency_s_fx = 44741;/*Q-31*/
/* Sample Rate = 48000 */
const Word16 CRendBin_Combined_HRIR_max_num_iterations_48kHz = 1;
-const UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
+const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz = 0;
-const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 32000 */
const Word16 CRendBin_Combined_HRIR_max_num_iterations_32kHz = 1;
-const UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
+const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz = 0;
-const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
+#endif
const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 16000 */
const Word16 CRendBin_Combined_HRIR_max_num_iterations_16kHz = 1;
-const UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
+const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz = 0;
-const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
+#endif
const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
@@ -97,33 +109,45 @@ const Word32 CRendBin_FOA_HRIR_latency_s_fx = 44741; // Q31
/* Sample Rate = 48000 */
const Word16 CRendBin_FOA_HRIR_max_num_iterations_48kHz = 1;
-const UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
+const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz = 0;
-const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[4]={0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}};
+#else
+const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[FOA_CHANNELS]={0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 32000 */
const Word16 CRendBin_FOA_HRIR_max_num_iterations_32kHz = 1;
-const UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
+const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz = 0;
-const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[4]={0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}};
+#else
+const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[FOA_CHANNELS]={0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 16000 */
const Word16 CRendBin_FOA_HRIR_max_num_iterations_16kHz = 1;
-const UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
+const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz = 0;
-const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[4]={0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}};
+#else
+const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[FOA_CHANNELS]={0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
@@ -136,33 +160,45 @@ const Word32 CRendBin_HOA2_HRIR_latency_s_fx = 44741; // Q31
/* Sample Rate = 48000 */
const Word16 CRendBin_HOA2_HRIR_max_num_iterations_48kHz = 1;
-const UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
+const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz = 0;
-const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 32000 */
const Word16 CRendBin_HOA2_HRIR_max_num_iterations_32kHz = 1;
-const UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
+const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz = 0;
-const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 16000 */
const Word16 CRendBin_HOA2_HRIR_max_num_iterations_16kHz = 1;
-const UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
+const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz = 0;
-const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
@@ -174,34 +210,46 @@ const Word32 CRendBin_HOA3_HRIR_latency_s_fx = 44741;/*Q-31*/
/* Sample Rate = 48000 */
const Word16 CRendBin_HOA3_HRIR_max_num_iterations_48kHz = 1;
-const UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
+const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz = 0;
-const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 32000 */
const Word16 CRendBin_HOA3_HRIR_max_num_iterations_32kHz = 1;
-const UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
+const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz = 0;
-const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+#endif
const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 16000 */
const Word16 CRendBin_HOA3_HRIR_max_num_iterations_16kHz = 1;
-const UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
-const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
+const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz = 0;
-const float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[16]={0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f};
-const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+#else
+const float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[HOA3_CHANNELS]={0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f};
+#endif
+const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
@@ -213,59439 +261,59797 @@ const Word32 CRendBin_Combined_BRIR_latency_s_fx = 313176;/*Q-31*/
/* Sample Rate = 48000 */
const Word16 CRendBin_Combined_BRIR_max_num_iterations_48kHz = 22;
-const UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} };
+const UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} };
const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {40, 40};
-const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}};
const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz = 98;
-const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[15]={0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f};
-const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[15]={7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907,};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f},{0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f}};
+const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907},{7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907}};
+#else
+const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[HRTF_LS_CHANNELS]={0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f};
+const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]={7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907};
+#endif
const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98},{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98}};
/* Sample Rate = 32000 */
const Word16 CRendBin_Combined_BRIR_max_num_iterations_32kHz = 22;
-const UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} };
+const UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} };
const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {40, 40};
-const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160}},{{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160}},{{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160},{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160}},{{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160},{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160}},{{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160},{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160}},{{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160},{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160}}};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160}},{{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160}},{{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160},{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160}},{{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160},{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160}},{{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160},{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160}},{{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160},{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160}}};
const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz = 97;
-const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[15]={0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f};
-const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[15]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907,};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f},{0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f}};
+const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907},{7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}};
+#else
+const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[HRTF_LS_CHANNELS]={0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f};
+const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907};
+#endif
const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97},{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97}};
/* Sample Rate = 16000 */
const Word16 CRendBin_Combined_BRIR_max_num_iterations_16kHz = 23;
-const UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]={{23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23} };
+const UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23} };
const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {40, 40};
-const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23]={{{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80},{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80}},{{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80},{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80}},{{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80},{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80}},{{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80},{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80}},{{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80},{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80}},{{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80},{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80}},{{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80},{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80}},{{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80},{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80}},{{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80},{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80}},{{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80},{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80}},{{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80},{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80}},{{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80},{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80}},{{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80},{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80}},{{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80},{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80}},{{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80},{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80}}};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23]={{{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80},{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80}},{{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80},{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80}},{{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80},{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80}},{{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80},{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80}},{{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80},{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80}},{{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80},{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80}},{{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80},{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80}},{{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80},{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80}},{{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80},{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80}},{{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80},{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80}},{{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80},{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80}},{{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80},{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80}},{{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80},{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80}},{{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80},{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80}},{{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80},{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80}}};
const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz = 77;
-const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[15]={0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f};
-const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[15]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907};
+#ifdef FIX_INV_DIFFUSE_WEIGHT
+const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f},{0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f}};
+const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907},{7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}};
+#else
+const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[HRTF_LS_CHANNELS]={0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f};
+const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907};
+#endif
const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]={{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77},{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77}};
//BRIR and HRIR coeff tables in Q29
-const Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][2955] ={
+const Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955] ={
{
{
-4881767,
-5023501, -1853815, 6442, 4696010, -2676302, 1832340, -340376, 657130, -3187403, -6676527,
--1373316, 2622615, -1711545, 1595044, 2317672, 1963874, -1463510, 1111323, -4126927, -760209,
-1038845, 1705639, -134755, -98247, 518617, 1014686, -3453154, -2878165, 1218160, 2386928,
--1188095, 2498597, 4788889, -6432788, 922344, -3082176, -2074469, 1426466, -788663, 3940096,
--1213865, 3547643, 1880122, 572304, -242666, 1890859, 126702, -398895, -1990181, 5753109,
--3987340, -1225139, 2041183, 2226404, -84826, -1961190, 1124208, -2168422, 2252710, 416612,
-831613, -59593, -746787, -726386, 3005403, -7708393, 1824824, -1005559, -4444755, -772557,
-3782256, 1804423, 2357400, -3384971, 2731062, -1190243, 1726040, 1020592, 1348620, -1440962,
-586263, 2006824, -1318555, -3025805, 1251446, -2810519, 564788, 2028298, 24696, -1029718,
--1138703, 527744, 1123671, -475131, 1345399, 38655, 971736, 788127, -339839, -214748,
-387621, -459025, -235686, -361851, 395137, -628139, 330176, -908922, -191126, -855235,
--89657, -287763, -908922, -230854, 466541, -8884140, 7032472, -3280281, 1623498, 1366337,
-284542, -1851131, -82141, -4964446, -6192806, 1779727, -1127429, 2024003, 2050847, 5713917,
--4540854, 741419, 3921305, 3787624, -3668439, -3931506, -2037425, -3405372, 405874, -1095217,
--2614561, -2014340, 104690, -6270653, -5959267, -1210644, 1298691, -481036, 597000, -657130,
-1471026, -3261491, 3939559, -1287417, 2284386, -409096, 1642288, -2968896, 1127966, 2175938,
-2638184, 1169305, 584116, 978179, -991601, -2449742, 5217312, 3939022, 1720134, -1848447,
-6446746, 4366908, -1709934, 4109747, -227096, -3093450, -681289, -1073742, -2725694, 1904818,
-2211908, 1085553, -2069637, 4555350, -2869038, 2697240, 3890704, -659814, 489089, -5519570,
--2377801, -5945309, 980863, 2929705, -2783139, -793495, 1224603, -2651606, -658741, 1396401,
--54224, 1021665, -517007, -1378148, -3853123, -1867237, -605054, -881005, -217970, -11811,
-355945, -417686, -556735, -1380295, -550830, 115427, 431107, 386547, -686121, -61203,
-93952, 287226, -62814, 294742, 37044, 475668, 50466, -637266, -1071594, -1159104,
-537, -655519, -850404, 239444, 7524783, 3449396, -2877091, 1291175, 993211, 11982422,
--3519189, 3437048, 5852967, -1124745, 5328444, 2168422, 3632469, -4740034, -1738388, -5556077,
--2550674, 3743064, -86436, -2645163, 656056, -3898220, -281320, -2554432, 3583613, -1566053,
--464930, -1412507, 1917703, 825171, 68719, -464393, 1581085, -5863167, -4482872, 2003065,
-565325, -580894, -2938831, 6957847, 2030983, -912681, 2333778, 2744484, 35970, 1348620,
-686658, -3464428, 3155190, -4121558, -3068754, 3657165, -4343286, 3754338, 1727651, -3331821,
-5717139, 3042984, 2218888, -1577864, 5186173, 1170916, -666257, -1528472, 1606855, 567473,
--860604, -6112276, -840203, -1225139, 1896228, -3609920, 4855998, -1720134, 3987340, -4172561,
-180926, -479963, 4956929, -2341294, -1570347, 845572, 1872606, -110595, 1009854, -802085,
--4478577, -558346, -273804, -286689, -570157, -139586, 69256, -671089, -821413, -983548,
--1014686, 28991, -366683, -30602, 668404, -810675, 534723, 549756, 1391033, -1662689,
-1108102, 431107, 872415, -151398, 1293859, 416612, -548682, -1033477, -234076, -519691,
-12522514, -10364830, -9095667, -2920041, 9592809, -1321776, -5172215, 6571837, -4350802, 3112241,
--221728, -7122667, -4836133, 6032819, -3880503, 2995740, -4049617, 3991098, -1751273, -1089311,
--433255, -3921305, 2099165, 2895345, -3932580, 983548, -1987496, 829466, 1831267, -563714,
-2616172, 797253, 2145873, 3372086, -4283693, -3155727, 3921305, 214212, 3052111, 2964064,
--2705293, -4057134, -1589675, 719407, 5391795, -5773510, 2425046, -6448894, -7840463, -1837709,
--4466766, -738198, -5298379, -10136660, -5338645, 4728759, 4443681, 2873333, -3339337, 9735080,
--2947958, 1654099, -5330592, -5055714, 1379758, 12885, -448824, -6386080, -2046015, -354335,
--1248762, -1231045, -3401077, -2761664, 756451, -875100, -1844152, 226023, -3293166, 607201,
-1949915, 3332358, 1901597, -2798171, 2998424, -1928440, -136365, 3314104, 1451699, 493384,
--1034550, 1708323, 1999307, 1531693, 387621, -848793, 340376, 2356327, 1261647, 1518808,
-698469, -879931, 1309965, 244276, -93416, 358630, -617938, 223338, 396748, -701153,
-1343251, 1919850, 2317672, -152471, -121333, 323733, -1410360, 2105071, -89657, 1309428,
--272730, 15993384, -5283884, 7463580, -2025077, 10040560, -1978906, -1598265, 1681480, 1991791,
--1723893, -11630235, 1125818, -1167694, -3096672, -229781, -565325, 4066797, -1331977, 9803263,
--1311039, 1054951, -712965, 5519033, -1101122, 1864016, -4614406, -239444, -3169686, -3370476,
--944893, -1024887, 41876, 3507915, -6328098, -1951526, 2151779, -813359, 4383014, 919123,
--1104880, -2995740, -2881923, -3178813, -5785321, 2086280, 2459406, 2066416, -10086731, -1584843,
-7132330, 3897683, -1610076, -423054, -3118146, -7038378, -7342247, 7223062, -2257542, -5035313,
--2743410, 3871376, 3180960, 250719, 3565360, 1358820, 3448322, -1812476, -7197829, -2571612,
--3238942, -3791919, 5308580, 3390340, -584116, 5787469, 8838506, -2221035, 3747896, -3532074,
--432718, -58519, 3850975, -415001, 966905, 761820, 1197222, 2938295, -3033858, 2279017,
--1575716, 129386, -1931662, 217433, 1021129, 2059974, 1578937, -155156, 566936, 26307,
--235686, 1012002, -2861522, -510564, -2283849, 420370, -409633, -473520, -999654, -708133,
--1191317, 1169842, 602369, -23965918, 13195213, 4814659, -1092532, -1052804, 78383, -3637837,
--6666863, -1437203, 3279208, 10165114, 6835978, -9239012, -1751810, -5491116, 3780108, -455803,
--12481712, -3673271, 7688529, 4753992, 2641405, 6519761, 3959423, -649077, -802622, 1937567,
--4737349, -2794950, 1117228, 5690295, -2367601, -4754529, -6883759, -3460670, 3473018, 11194832,
-801548, -1938641, 2394981, -2283849, -8261370, 637803, -5823976, -4582193, -5433134, 3423626,
--307090, -7747584, 1477469, 2966212, 3064459, -8383776, -4639102, -3107946, -2063195, -893353,
--3084324, -1479616, -3994320, -8136279, -930934, -6906308, -8298951, -5131949, -1450625, 1458141,
--4932233, -7286949, 2175401, 5889474, -288300, -1054415, -678068, 4290673, -6364068, 4792110,
-7549479, 7344394, 5786395, 9869835, 141197, -4034585, 2669322, 464393, -1025423, -893890,
-27380, -2224256, 3273839, 190589, 261993, -1978906, -533650, 1094680, 1245541, -1142998,
--1047435, 645856, 3377455, -415001, 1294933, 1156420, 2889976, -2308008, 166430, -26307,
--2573759, 415001, 378494, 2218888, 259309, 475668, 1905892, 1216013, -3212099, 1233193,
--1138703, 1047972, -9897752, 3763465, -4885526, -824634, 1314797, 2950106, -390842, 5151814,
-144955, -1009317, -13895293, 6473590, -2568391, -2931852, 5008469, -8039642, -11072963, 4550518,
--3870839, -5173288, -1627793, 10037339, 6308770, -3636764, -2148558, 4684736, -1375463, -472446,
-1358820, 4573604, 8353175, 5339718, 6760279, -1007707, -283468, 192737, -4440460, 1165010,
--1867237, 11389716, -8679055, -5003100, -4588099, -4271345, 2739116, 1570884, 4074850, -645856,
--5733245, -7652021, -2218351, -9533754, -13322452, -2641405, 363462, 10384157, 2054068, -8176007,
--2106682, 7793218, -3289945, 2632815, 2335925, 4388920, -6169721, -9216463, -4094178, -4674535,
-14926085, 1700807, -4790499, 3282966, 2486786, -1066763, 1876901, 3449933, -419296, 6660958,
--8778913, -7822209, 2543695, -3593814, 7952132, -3643743, -212064, 4316979, -1320703, 3829500,
--238371, -155693, -270583, -1254131, -147640, 3450469, 1258425, 3353833, 1852742, 1693291,
-108448, -1175747, -551903, 1428077, -445603, 461172, -689879, 2421288, -1983738, 1427540,
--1779190, 2442763, -2305324, 261993, -234613, -202937, 1695438, 2306934, -2412698, 1722819,
-908386, -758599, 3505767, 8449274, 2602750, -804770, 5808944, -1219234, -7451769, -1469953,
--748398, 7141994, -4187056, -1081795, -2310693, 1065689, -2339684, 340913, 2273648, 3315715,
-4847945, 3127810, 1472100, 12599823, 4919348, 4067334, -634581, -10135586, 566936, -8462696,
-2457795, -5775121, 1294396, -92342, 3136400, 15517717, 4349192, -2546379, 5530844, -4539781,
-4699231, -2863670, 8061117, -4574677, -136902, -6251862, 3634079, 6082748, -7367480, 14576045,
--3704946, 960462, -2357937, -4068408, 1481227, -4525285, -12696460, 2025077, -3257196, -805306,
--7878044, 1743757, -2850248, -13072807, -5968931, -3723737, -11560978, 6408091, 16432545, 19926500,
--19174882, -14671608, -8169565, 712965, 4664872, -5986111, 2642479, -6780143, 1671816, 9148817,
-14173929, -9917616, 15882252, 5026186, 1786706, 2636036, 2801393, -3628174, 5398237, 4962835,
-6024766, 4605279, 1888712, 7026030, -46708, 2147484, -209380, -101469, 3776887, -1219771,
--4735202, -1343788, 2971044, 2280628, 886374, -118112, -370978, -480499, 2995740, 2372970,
-1009317, -2820720, 623844, 691490, -24696, 3197066, 1355599, 1956358, -85362, 2373506,
-1346472, 2400887, 3360812, 3499325, 158377, 57445, -1867237, 3867618, 3455301, -488016,
--1154273, 319438, 2471217, -1005559, 7070590, -13735842, 19587198, 263067, 11410654, 4032974,
--4198868, -4343286, 10564546, -6462852, 6622840, 8184597, -1215476, -6022081, 194884, 8469139,
-4723927, 4275640, 3717831, -930397, 1254667, 2739116, 10806675, 7543573, -5977521, -5151814,
--1023276, -2693481, -1343788, -5905580, -3960497, 5328981, 9517648, 2298881, 14424111, -4228932,
-15785615, 555125, 7365332, 17362942, 12287901, 3811784, 3455301, 7752953, -1859721, -7257421,
--171262, 7284265, -4427575, -8303246, 174483, -1466731, 15897821, 12700755, -289373, 17941152,
--1739999, 9561671, 5015985, 7523172, -1136556, -6436546, 8003672, -1823214, 9385577, 6326487,
-19979114, -11430519, -2059974, -22890028, 4702453, -11352672, -1642825, 10256382, -4406637, 4100083,
--1988570, 12021613, -3335579, -8707509, -759672, -3091840, 3541738, -744640, 5807870, 6749541,
-1728724, -2026688, 5395016, -1414118, 2274185, -172336, -3755412, 2305861, 2460480, 4629975,
-2411624, 5211406, 2325725, -304943, 113817, -1880122, -31675, 5101885, -1991791, -4208531,
-2209761, -494995, 696322, 4137127, 902480, 855235, 1730335, 2678449, -999117, -742493,
-1844152, 3308736, 5588290, 4990215, -82678, 2252174, -22012, -459562, 2404108, 3443490,
-3100430, -1967632, -10737, -788663, 4136054, 588947, -842350, 501437, -13181255, -9683004,
-4715874, -7831873, 4438312, -4739497, 1265405, 12062416, -2091649, -11455752, 3055869, -4836670,
-11615202, -12242804, -8551817, 4920422, 5578089, 8457327, 265214, -895501, 5452998, -3395172,
--8381092, 5126044, -3469797, -6716255, 1954747, 6456947, -4820027, 12191265, 4923107, -513785,
-1569274, 5931887, 2585570, -21006686, 8514236, -2223719, -2252174, -3694746, 11094437, -19864,
-11817066, 405874, 1000727, 1213328, -3170223, -1369021, 5724118, -6802692, 1556926, 18927384,
-1642825, 13889924, 1054951, -2951180, -1562294, -9529996, -19597398, -14362908, 6448357, 8872866,
--3898220, 14866492, 6381785, -10808822, -6249715, 13601625, 9730248, 8978629, 2773475, -4325569,
-109522, -862752, -8442295, -2713883, -4940286, -23137526, -9913321, -648003, 15453829, 3328063,
--3585224, 1542430, 13269301, -3413962, 669478, -42413, 3361349, -4483409, -2090575, -3383361,
--1870995, -1279363, 3194382, -285078, -567473, -333397, 2506114, 1866163, 3907883, -2895345,
--4306242, 1417339, -4555350, -2663954, 590558, 1515050, 549219, -947040, 4795331, -2374580,
--1399623, -5673652, 2126009, -5146445, 3970161, 1582696, 2647311, -4386772, 412317, -892816,
-2096481, -2604898, 1645509, -2350958, 2673080, -4864588, 213675, -5676873, 6107981, 5746666,
-12443594, 4695473, 4124242, 14296872, 11941620, 9955197, 323196, 3659849, 702227, -2406256,
--2878165, 2282775, -1220308, -8682813, 1806034, 8372502, -178778, -2508261, 2531346, -21111912,
-6920266, -8454643, 5138929, 7052873, 6349036, -7975755, 4175782, -889595, -255551, 12381317,
-9028021, 47245, 4799089, 3536369, -1768453, -7190312, 1656247, 6004901, 42950, 8798241,
-2583960, 7951595, 15751256, 750546, 6315213, 6700686, 8414378, -432718, -5504001, 13597330,
--5360119, 10963441, -13069585, -10766946, 14918569, -826781, 4887136, 8761196, 13011067, 16838956,
-7067369, 2255932, -8319352, 3651259, -1752884, -15189689, 12771622, 7925289, -12435004, -799938,
-712965, -15566572, 5154498, 12262132, 7227893, -166967, 4683125, 3310883, -7274601, 13427678,
-1242319, -2704756, 6899865, 13281649, 5188858, -595390, -4712116, -3715147, -1650878, 2223719,
-3714073, 5456219, 1750199, 898185, 1675037, 6386080, 5708012, 7106024, -139050, -811749,
-2797098, 6077379, -23622, 516470, -1273995, 2779918, 460098, -758599, -2357400, 1411434,
--4461934, -7936563, -402116, 4377646, -155693, 3080565, -3800509, 2354179, 130460, 2680597,
-387621, -2181307, 1752347, -1490891, -1202591, -556735, -4808216, 3328600, -1792612, 1344862,
-2612414, 79457, -716723, -2270427, -3124589, -704912, -34845608, -21667036, 7091528, 7424388,
-14332843, 23693188, -6510634, -3702799, -7533910, -6987375, -8889509, -9532680, 787053, 3822521,
-3011309, 14945412, 666257, 14664629, -726923, 5043366, 6803765, 5209796, 10932302, 7775502,
-568546, 9606768, -103079, -1146756, -5519033, 6495601, -855235, -14330695, -12362526, 7762617,
--1771674, 17066052, 10221485, 10969346, 4089346, -21500070, 5204427, 13495324, -2045478, 3914326,
--3264175, 2663954, 16999480, -608812, 14252849, 23688356, 1364189, -8968429, -221728, 228170,
--14848776, 20103668, 9622874, -2694555, -1114007, 14558865, 6907381, -17695266, -14356465, 5647882,
--6228240, 8425115, 6132140, 2652679, -6963216, -12579422, -572304, 3156801, 2392834, 13559749,
--18213882, 2643016, -1218697, -15487115, -7346542, -15575699, 13605920, -4642860, 18800146, -14789183,
-1401233, -7130720, 10697153, 4616553, -4587025, -918049, 9862319, 589484, 3102040, -5718749,
--2995740, -4840965, 8749922, 4302484, 2684, 2291902, 2649995, -8013872, 578210, -2276870,
-2840584, 1640141, -1687922, -8189966, -2805688, -6057515, 7244536, -5388037, 1216013, -1470489,
-7176891, -1538672, -1200443, -2568927, -4395899, -294742, -2899103, 2805688, 7919920, 6825240,
--429497, -7215008, 9176734, 24713242, -29417304, -8230768, -14341433, -604517, 4662187, 778463,
-19720880, -20353850, 9621800, -2778844, 3928821, -2464238, 10828149, -5971615, -10080825, -841814,
--2939905, 7656853, -640487, 5177583, 11470784, -2385854, -8603356, -1148367, 12899934, -7589207,
-3071975, 2906082, 507343, -1168231, 12810814, -480499, -3311420, -21400748, 6880538, -5291937,
--13525389, -11757473, -3131031, -13033615, -7690139, -11317239, 5364951, -13356811, 13326210, -12258374,
-8259222, -6330782, 16157130, -15652471, -9105331, -2351495, 9357660, 3863860, 70867, -6437082,
--12839805, 1312113, 5005785, 18327700, 9596031, 4007205, -10487236, 6242735, -9304510, -10472741,
-9136469, -10166188, 4838281, 11882564, 9894531, -2630131, -3796214, -8553964, 14274324, 1409286,
-13660680, 22113176, -4337380, -11584064, -5192079, -3847754, -7975218, 3512210, -13229036, 5770826,
-4297652, 3985730, 10437844, -7372848, 373662, -1329829, 2636036, 9521942, 263067, 7492034,
--2726231, -162135, 924492, -4220879, -1530619, 4508642, 2358474, -6039261, -7927436, -3741990,
-3476776, 3152506, -3491272, 11323681, 3295851, -8242042, 4148939, 6063420, 15052250, 12264816,
-6850473, 2561948, 1439888, -6299644, -4968741, -181462, -5033165, 980326, -2924336, -9207873,
-5085242, -3025805, -1298691, 1126355, 5015985, 155156, -4264366, 15992311, 22290880, -24363202,
-17250200, 11905649, 225486, 8462159, 29749090, -8858907, -9046275, 2470680, 8495982, 12119324,
-3753265, -12147241, 12938589, -5280126, 26246008, -1091459, -4759361, 8220568, 6629282, 6531572,
--649614, 24592446, -21117818, 4674535, -739271, 6469295, -9018894, -17667348, 8236137, 6389301,
-6652368, -6437082, -4958540, 20493974, 7475391, 25854630, 2042794, -10096394, -1398549, 5444408,
--2637110, 26854284, -3782256, 14445049, -2994666, 24055574, 8560944, 6206765, -6281390, -1760937,
-13107703, -133681, 14061186, 10491531, 12386686, -17293686, 2369748, 11696807, 14185203, 10464151,
-7977365, 19168976, 23655606, -18687402, -2532420, 36088464, -9105331, -10260140, 23270132, 31442918,
-269509, -700617, -17551920, -14551886, -1257889, 15602006, -2662880, -3392487, 403190, -1602023,
--4756677, -12646531, -4799089, -1305670, -7577933, 122407, 7116224, -4521527, 9190693, -9979357,
-8067023, -2318746, 6988449, -7569343, -63888, 5041218, 2865817, 8884140, -1939715, -5234492,
--2455648, 2399276, 8151311, 2152316, -3316789, 11324218, -3929895, 5810017, 5881958, -1404454,
--1593433, -2976949, 16751983, -6556805, 1904281, 4017942, 6054830, -3411815, -11330124, -6733435,
--2203318, 12558484, 5961952, -1282585, 496606, 4270808, -1099512, -150324, 4286378, 2115808,
-895501, -182536, 9993852, 22502944, -1388885, 7006166, -19249506, 18299246, -9762998, -6044093,
--16851842, -10961293, 34517040, 436476, -24321326, -10890963, -733903, 43487, -3219078, 26641682,
-12459700, -2341294, -11159399, -1126355, 7011534, -3376918, 35554276, 7485591, 15627775, 5312875,
--8019778, -20221242, 4727149, -317291, 3147137, -15693810, -1660542, -10632192, 11985643, -26307,
-1960653, 12346957, -11277510, -8366597, 2451353, 439160, 3693135, -17342542, -13544179, -29637422,
--15449534, 1152662, -16865800, 2141041, -12239046, -7452842, 21919902, 6765647, -10665478, 6434398,
-2484639, -227096, 21089364, -3755412, 25549150, 9629854, -10997801, -31336618, 5437429, 4816806,
-17273284, -9494025, -22404160, -8148090, 6497212, 947040, -5343476, -16299401, -5178120, -22963580,
--25957708, 7928510, -1442572, 26411902, -8506183, -16402480, -14086419, -1498407, 18811420, -1219234,
-6933688, 11858405, 9249212, -4343286, 6139656, 8031052, 2765959, 8230768, 8312373, -6105833,
--838056, 11609297, -2332704, 1414118, 11285027, -2382096, 6705518, -8568460, 3274376, 6221797,
--3777424, 3609920, 3734474, -8037495, 10356240, -10023380, 5022428, 4911832, 8231305, -2311766,
--5609228, 10730976, -1424319, 7855495, -11720429, -6015102, -8595840, -7573101, 1130113, -6296422,
-4512937, 301721, 1911797, -12093554, 1336809, -3665755, 16426639, -17712446, -850404, 27506044,
--5641977, 8308078, 3061775, 3850975, -25334402, 21470004, -1897839, -20213726, -11771968, 10980084,
--2851858, 5623186, 74088, -8228621, -6125697, 3940633, -6137509, -1217086, -166430, -29392608,
--7566122, -19620484, 4584878, 7332046, 5369, -8488466, 3702262, -3921842, 11813844, -25974888,
-1939715, 4844186, 15195594, -11157788, 14169097, -10985989, 9080098, 2652142, 11062225, -16863116,
-5421860, -8217346, -18041010, 12112345, -14566382, -29349660, 4525822, -2505040, 23529978, -10998874,
-3441880, 11008538, 15670188, 17819282, 2064269, -5735929, -10871099, 628139, 8533026, 11831561,
--22908282, 26146150, -23622, -17184702, -12878996, -22957138, 9641128, 5923834, 9431211, 4373351,
-24824910, -8470749, 26965416, -14253923, 6453189, -5623723, -12263205, -37042484, 21249888, 4319664,
--9714679, -25053618, -1288490, 4987531, -1984275, 9562208, -6648073, -7858180, -1130650, 4239133,
--6926709, -6733435, -4304631, -1022739, 4115653, -1917166, -2069637, -9759239, 7649874, 524523,
--5308580, 4889284, -3798362, 8043937, -2206540, 4169340, 5338645, 9872519, -3110093, 8992588,
-1165010, 777926, -9195525, -7085623, 2498060, 3830037, 1501091, 795106, -1619740, -5853504,
--3209951, -2619930, -6508486, -2784750, 11937862, -5570036, -6467147, 3953518, -14443438, 248571,
--3636764, -21937082, -54224, 12146704, -4784057, -23766202, -3757560, -34746284, 16877610, -38405060,
-22974316, -26546656, -23154168, 6629282, 19937238, 14886357, -13176960, 13965623, 25074020, 4466766,
-3772592, 5906654, 2289755, -14744086, 17995376, -30137248, -18699214, 1703491, -1835025, -1926293,
--3975529, -7504919, 4057670, 27752468, 7209103, 3861713, 2633889, -13051869, 16146930, -2911451,
--27881318, -4298189, 636192, 599685, -19061064, -13495324, 14733348, -4791573, 25256556, 4673998,
-59056, -20526186, -11207180, 7558069, 3300682, -5601711, 21651468, -17107928, -10341744, -754841,
--1215476, 20381768, 1709397, 23843510, 59593, -19504520, 4909685, -16631187, 12720619, -2346126,
-17315160, 32628866, -50177568, 17100950, 7019587, 9185324, 19086834, 4699768, -22972170, -5364414,
--2018098, -4186519, 11851962, -23617488, 2317135, -6200859, -3277597, -16281684, -8654359, -24621436,
-2831457, -1574106, 2627983, 6750615, -9887015, -1833414, 12050604, -7386270, 2449742, -4127464,
--12015171, 5601711, 7437810, -8533026, -779537, -13464186, -669478, -19464792, 7105487, 4728759,
--2297808, 2036351, -4773856, 768799, 4083440, -3164317, -3491272, 11042361, 13700946, -3104725,
-4640176, 2128156, 14065481, 6127845, -17375828, 2259690, 10209674, -5786395, 10318122, 3205119,
-4518843, 41084048, 35499516, -10193568, -13768591, -841814, -27055610, 15756088, -1569811, 5927055,
-2076617, -13692356, 40987408, -17650704, -72368592, -10616622, 14412300, -48730700, -8370892, 15212774,
--41280004, 5695664, 26835492, -18993420, 26771604, -25759604, 22997402, 28532542, -18268106, 7749195,
--2656437, 590558, -7753490, -11330124, -2108292, 17550846, -11355894, -18891414, -10327786, -15218143,
--1632625, -11951820, -1973001, 6269579, -2861522, 17142826, -15176804, -18643380, 14810121, -19718732,
--29236916, -37484864, -13074417, -918586, 7262253, 20845624, -8741332, 9329206, 9757092, -6897718,
--3251290, 34367792, -22762790, -903554, 23519240, 7274064, 18489298, -4650913, 6727530, 26090852,
-13406740, -1443109, -3205119, -16120086, 6581501, 26246546, -24445344, 18559628, -24190866, 7035157,
-34160560, 7860327, -19215684, 19417010, 3071439, -12283606, -9592273, 23502062, 7727720, 10129680,
--1430224, 1766842, 6439230, 7702487, -712428, -2367064, 9993315, 8716636, 1830193, -11632382,
-12787728, 1574642, -4420595, 3140695, 4380330, -8469676, -2249489, 6522982, 1257352, 10869488,
--13428215, 20194400, 15649250, -2782602, -12805445, -5203353, 13465259, 15394237, 24836186, -767725,
-4783520, 4064113, 13618268, -20718386, -11050414, 20785494, 13006772, 1409286, -3354370, 1786170,
-5748277, -10844792, -8507256, -7295002, 1525787, 6628745, -3343632, -27380, 10799158, -11534135,
--8179229, 36349920, 24700356, -34613680, -6816650, 31329102, -9260486, -19042812, -13391708, -19107772,
--11199127, 31629750, 19363860, -2312840, 14464376, -3211025, 17585744, -10714870, -5871757, 35121020,
--14326937, 6528887, -9903121, -3550327, -201863, 9768903, 28589450, 11166915, -19053012, -5418101,
--695785, -2687039, 16173773, 2366527, 28783260, -8196945, 5129802, -2717104, 8535174, -23735064,
-14592688, -21874268, 15159624, -933082, 22162568, -5491653, 16481400, -7271917, 5317170, 9594957,
--9301825, 9934796, 22370338, 27956480, -14493367, 28642600, 12118250, 33935612, -9491878, 6606197,
--1080184, -3891240, -6283001, -2068564, -10980621, -54957328, -34594888, -10435697, -532039, 8100845,
-4054449, 13027710, 20958366, -30115774, -1553168, -11999065, 46148888, -2940442, -13856101, -3716757,
--40219148, -33475512, 50985020, 20970178, 11503533, -7545184, 16062641, 1620813, -36829344, 7861401,
-2631204, -13747653, -14302241, 2641942, 322659, 4257923, -7624104, -3605088, -17999672, -14984604,
-6593312, 8398272, 7109245, 5747740, -9323300, -13482976, -8345659, -17542258, 11409044, 4227322,
--31754304, -3398393, -9160628, -1821603, 15634755, -14275398, -20536386, -4137127, 13359496, 4901632,
--14252312, 8938364, 18442590, -33812132, -9177808, 12625056, -595390, -2163053, -6516539, -931471,
-5977521, 10698764, 2418067, -4275103, 27278948, -39689256, 37171332, -10973105, -11228118, 9502078,
-17248588, -31097710, -6311455, 454193, 6089190, 1580548, -993211, 15466714, -9546102, 1909650,
-8062728, 8968965, 12857521, 10650445, 3469260, -17098802, -3549254, 23060754, -22604412, -19304804,
-23856396, 8108899, 16815870, 26139170, 40519260, -9298067, -25991532, 34313568, -14027900, -5881958,
-35704600, 11188927, -13299903, -37476812, -24838332, -3828427, -13962402, 17525614, 35176856, 18037788,
--12278238, 36221068, 12052215, -13211319, 9852655, 40432824, 11560441, 7787850, -8703751, -32499480,
--43714176, -34672196, -2661806, 26193932, 7860327, 16533477, 61915176, 30545808, -37327024, -25074556,
-16303159, -51483772, -23804320, 44320840, 15677704, -57192860, -47871168, -22159346, -36694052, -34350076,
--20716238, 31077310, -9036611, -6544994, 80981608, 13622563, -23549306, -6495065, -25432648, 43111272,
--9287867, 9351754, 2782065, 601832, -23826332, -9149891, -2062658, -11980811, 2632278, 9236327,
-20900922, 2734284, -14578730, -635118, -300648, -9483825, 4134443, 6113349, 6918656, -18730352,
-4567161, -17351668, 2771328, 9086540, -1272384, 13824426, -3610994, -917512, 13743895, -2883534,
-7563975, 15525770, -5552856, 4619238, 10448045, 11671574, 9317932, 1918240, 2115272, 8120173,
--8874476, -3309272, 5291400, 15343771, -55486144, 38359428, 16440061, 12377559, 15388868, -6000070,
-18894098, 15501611, 22158810, -4271345, 30406220, -19197430, 23053236, -8479339, -17744120, -5680631,
--29075318, 2945811, -10708427, 10187126, -7416335, -11315091, 27793270, -32068374, 20589000, -1177895,
--13989245, -5671505, 12284680, 13861470, 10024454, 26264798, 21194590, -15359340, -3238942, -13753559,
-11791296, -12203613, 9185861, 12594992, 5760625, 7019587, 4670777, -7623030, 29046864, -2838974,
-8601209, 2789045, 13361106, 7318088, -34839700, 2131378, -20859582, 5181341, 15316390, -2978560,
--14781130, -13639742, 32383516, -34404300, -27758910, 50745576, -21661130, 13057237, 5019743, 16200080,
--7718593, 8406862, -35454956, 2276870, 34359740, -18573586, -13943611, 29498910, -2059974, -24744380,
--18238578, 10773925, -9674414, -5876589, 18362596, -13719736, 4549444, 22752590, -25847114, 1535451,
-15086609, -8544301, -5163088, -6911676, 9277666, 2400350, 3731253, -3561065, 5262409, 3803194,
--5094368, 221191, 898185, 13499082, 6876780, -12994424, 15669651, 3747896, -7993471, 4401805,
-4782446, -1597728, -4679904, 11063836, 13422, 3610994, 1406602, 14358613, -6750615, -5652714,
-8830453, -13238700, 16436840, -1417876, -9279277, -1714766, -984621, 1791538, -177167, -6503118,
--934692, 8376797, 17611514, -32603096, -132843336, -143325200, -5032091, -82140712, 73058464, 263656768,
-115024592, 159074848, 200876688, -75631152, -53428320, -21169894, -180067040, -125899448, -40688372, -197477760,
--85950888, -17417702, -80603648, 19429896, 185732096, 168731008, 182606976, 236609216, 142669152, -12641162,
-53350472, -52825952, -210161872, -114121040, -84362824, -174628000, -119640608, 6853157, -134372880, -44130252,
-29917132, -134300400, -68745248, 100774968, 39242044, 109274704, 271997056, 221112976, 178884848, 321623264,
-233545824, -3811784, 33775084, -59936804, -287829376, -275176416, -283816800, -442253856, -299460160, -185071744,
--181103744, 2303176, 143847584, 161939600, 226965936, 343455104, 317917248, 268363520, 265022032, 151783600,
-53501872, 8539469, -16121697, -120237608, -206951392, -254203552, -272117312, -367538080, -305455936, -235603648,
--115174376, 123300456, 363875520, 338856800, 371360576, 260402256, 31915366, -35298724, -111276160, -153110208,
--103421200, -50761144, -51122460, -22655416, -23368918, -37251324, 412854, 5426691, 27194122, 84680648,
-76976552, 56690884, 77987480, -7340636, -50173272, -6750078, -58942520, -51096688, 31779000, 34293704,
-8041253, 7859790, -89912992, -230230656, -217934160, -185678416, -139811392, 68093488, 210111952, 256853536,
-324523968, 290842848, 179467888, 124528280, 44261248, -51707648, -108306728, -129288176, -167586944, -205741824,
--231963664, -270989888, -240906864, -83403432, 59290412, 139456512, 180895968, 196524288, 147496160, 102245456,
-51210504, -2077690, -6065568, 24787866, 39709120, 43389372, 47182364, 38930120, 2864206, -33474976,
--71459128, -127287800, -122781840, -100001336, -83619256, -46903192, -7081328, 23574002, 33800856, 35664872,
-22436372, 13960791, 20300162, 32255742, 45293652, 61579092, 73202888, 70543768, 51367808, 25616258,
--5674726, -28797218, -38020660, -50489488, -63231044, -62474596, -48408576, -36935644, -26674432, -20204600,
--12170864, 2449742, 21632140, 32340566, 29753386, 27722940, 23781234, 13908715, 11783243, 9941239,
-4184372, 8645232, 17462800, 16416976, 14577119, 15021111, 3346317, -10750303, -20018306, -33758980,
--40598716, -34304440, -26386132, -19046570, -2747169, 7810398, 11220065, 14671608, 11000485, 4314295,
-4697621, 10699837, 13073880, 20334522, 22259204, 18894098, 15375983, 6019397, -6820408, -17784386,
--23818814, -25642566, -22677964, -15161771, -5388574, 3470871, 7589207, 8280160, 6216429, 4721243,
-4328790, 4366908, 3847754, 2950106, 1348083, -134755, -1145683, -1647120, -1563905, -1193464,
--614717, -255551, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+5023501, -1853815, 6442, 4696010, -2676302, 1832340, -340376, 657130, -3187403, -6676527,
+-1373316, 2622615, -1711545, 1595044, 2317672, 1963874, -1463510, 1111323, -4126927, -760209,
+1038845, 1705639, -134755, -98247, 518617, 1014686, -3453154, -2878165, 1218160, 2386928,
+-1188095, 2498597, 4788889, -6432788, 922344, -3082176, -2074469, 1426466, -788663, 3940096,
+-1213865, 3547643, 1880122, 572304, -242666, 1890859, 126702, -398895, -1990181, 5753109,
+-3987340, -1225139, 2041183, 2226404, -84826, -1961190, 1124208, -2168422, 2252710, 416612,
+831613, -59593, -746787, -726386, 3005403, -7708393, 1824824, -1005559, -4444755, -772557,
+3782256, 1804423, 2357400, -3384971, 2731062, -1190243, 1726040, 1020592, 1348620, -1440962,
+586263, 2006824, -1318555, -3025805, 1251446, -2810519, 564788, 2028298, 24696, -1029718,
+-1138703, 527744, 1123671, -475131, 1345399, 38655, 971736, 788127, -339839, -214748,
+387621, -459025, -235686, -361851, 395137, -628139, 330176, -908922, -191126, -855235,
+-89657, -287763, -908922, -230854, 466541, -8884140, 7032472, -3280281, 1623498, 1366337,
+284542, -1851131, -82141, -4964446, -6192806, 1779727, -1127429, 2024003, 2050847, 5713917,
+-4540854, 741419, 3921305, 3787624, -3668439, -3931506, -2037425, -3405372, 405874, -1095217,
+-2614561, -2014340, 104690, -6270653, -5959267, -1210644, 1298691, -481036, 597000, -657130,
+1471026, -3261491, 3939559, -1287417, 2284386, -409096, 1642288, -2968896, 1127966, 2175938,
+2638184, 1169305, 584116, 978179, -991601, -2449742, 5217312, 3939022, 1720134, -1848447,
+6446746, 4366908, -1709934, 4109747, -227096, -3093450, -681289, -1073742, -2725694, 1904818,
+2211908, 1085553, -2069637, 4555350, -2869038, 2697240, 3890704, -659814, 489089, -5519570,
+-2377801, -5945309, 980863, 2929705, -2783139, -793495, 1224603, -2651606, -658741, 1396401,
+-54224, 1021665, -517007, -1378148, -3853123, -1867237, -605054, -881005, -217970, -11811,
+355945, -417686, -556735, -1380295, -550830, 115427, 431107, 386547, -686121, -61203,
+93952, 287226, -62814, 294742, 37044, 475668, 50466, -637266, -1071594, -1159104,
+537, -655519, -850404, 239444, 7524783, 3449396, -2877091, 1291175, 993211, 11982422,
+-3519189, 3437048, 5852967, -1124745, 5328444, 2168422, 3632469, -4740034, -1738388, -5556077,
+-2550674, 3743064, -86436, -2645163, 656056, -3898220, -281320, -2554432, 3583613, -1566053,
+-464930, -1412507, 1917703, 825171, 68719, -464393, 1581085, -5863167, -4482872, 2003065,
+565325, -580894, -2938831, 6957847, 2030983, -912681, 2333778, 2744484, 35970, 1348620,
+686658, -3464428, 3155190, -4121558, -3068754, 3657165, -4343286, 3754338, 1727651, -3331821,
+5717139, 3042984, 2218888, -1577864, 5186173, 1170916, -666257, -1528472, 1606855, 567473,
+-860604, -6112276, -840203, -1225139, 1896228, -3609920, 4855998, -1720134, 3987340, -4172561,
+180926, -479963, 4956929, -2341294, -1570347, 845572, 1872606, -110595, 1009854, -802085,
+-4478577, -558346, -273804, -286689, -570157, -139586, 69256, -671089, -821413, -983548,
+-1014686, 28991, -366683, -30602, 668404, -810675, 534723, 549756, 1391033, -1662689,
+1108102, 431107, 872415, -151398, 1293859, 416612, -548682, -1033477, -234076, -519691,
+12522514, -10364830, -9095667, -2920041, 9592809, -1321776, -5172215, 6571837, -4350802, 3112241,
+-221728, -7122667, -4836133, 6032819, -3880503, 2995740, -4049617, 3991098, -1751273, -1089311,
+-433255, -3921305, 2099165, 2895345, -3932580, 983548, -1987496, 829466, 1831267, -563714,
+2616172, 797253, 2145873, 3372086, -4283693, -3155727, 3921305, 214212, 3052111, 2964064,
+-2705293, -4057134, -1589675, 719407, 5391795, -5773510, 2425046, -6448894, -7840463, -1837709,
+-4466766, -738198, -5298379, -10136660, -5338645, 4728759, 4443681, 2873333, -3339337, 9735080,
+-2947958, 1654099, -5330592, -5055714, 1379758, 12885, -448824, -6386080, -2046015, -354335,
+-1248762, -1231045, -3401077, -2761664, 756451, -875100, -1844152, 226023, -3293166, 607201,
+1949915, 3332358, 1901597, -2798171, 2998424, -1928440, -136365, 3314104, 1451699, 493384,
+-1034550, 1708323, 1999307, 1531693, 387621, -848793, 340376, 2356327, 1261647, 1518808,
+698469, -879931, 1309965, 244276, -93416, 358630, -617938, 223338, 396748, -701153,
+1343251, 1919850, 2317672, -152471, -121333, 323733, -1410360, 2105071, -89657, 1309428,
+-272730, 15993384, -5283884, 7463580, -2025077, 10040560, -1978906, -1598265, 1681480, 1991791,
+-1723893, -11630235, 1125818, -1167694, -3096672, -229781, -565325, 4066797, -1331977, 9803263,
+-1311039, 1054951, -712965, 5519033, -1101122, 1864016, -4614406, -239444, -3169686, -3370476,
+-944893, -1024887, 41876, 3507915, -6328098, -1951526, 2151779, -813359, 4383014, 919123,
+-1104880, -2995740, -2881923, -3178813, -5785321, 2086280, 2459406, 2066416, -10086731, -1584843,
+7132330, 3897683, -1610076, -423054, -3118146, -7038378, -7342247, 7223062, -2257542, -5035313,
+-2743410, 3871376, 3180960, 250719, 3565360, 1358820, 3448322, -1812476, -7197829, -2571612,
+-3238942, -3791919, 5308580, 3390340, -584116, 5787469, 8838506, -2221035, 3747896, -3532074,
+-432718, -58519, 3850975, -415001, 966905, 761820, 1197222, 2938295, -3033858, 2279017,
+-1575716, 129386, -1931662, 217433, 1021129, 2059974, 1578937, -155156, 566936, 26307,
+-235686, 1012002, -2861522, -510564, -2283849, 420370, -409633, -473520, -999654, -708133,
+-1191317, 1169842, 602369, -23965918, 13195213, 4814659, -1092532, -1052804, 78383, -3637837,
+-6666863, -1437203, 3279208, 10165114, 6835978, -9239012, -1751810, -5491116, 3780108, -455803,
+-12481712, -3673271, 7688529, 4753992, 2641405, 6519761, 3959423, -649077, -802622, 1937567,
+-4737349, -2794950, 1117228, 5690295, -2367601, -4754529, -6883759, -3460670, 3473018, 11194832,
+801548, -1938641, 2394981, -2283849, -8261370, 637803, -5823976, -4582193, -5433134, 3423626,
+-307090, -7747584, 1477469, 2966212, 3064459, -8383776, -4639102, -3107946, -2063195, -893353,
+-3084324, -1479616, -3994320, -8136279, -930934, -6906308, -8298951, -5131949, -1450625, 1458141,
+-4932233, -7286949, 2175401, 5889474, -288300, -1054415, -678068, 4290673, -6364068, 4792110,
+7549479, 7344394, 5786395, 9869835, 141197, -4034585, 2669322, 464393, -1025423, -893890,
+27380, -2224256, 3273839, 190589, 261993, -1978906, -533650, 1094680, 1245541, -1142998,
+-1047435, 645856, 3377455, -415001, 1294933, 1156420, 2889976, -2308008, 166430, -26307,
+-2573759, 415001, 378494, 2218888, 259309, 475668, 1905892, 1216013, -3212099, 1233193,
+-1138703, 1047972, -9897752, 3763465, -4885526, -824634, 1314797, 2950106, -390842, 5151814,
+144955, -1009317, -13895293, 6473590, -2568391, -2931852, 5008469, -8039642, -11072963, 4550518,
+-3870839, -5173288, -1627793, 10037339, 6308770, -3636764, -2148558, 4684736, -1375463, -472446,
+1358820, 4573604, 8353175, 5339718, 6760279, -1007707, -283468, 192737, -4440460, 1165010,
+-1867237, 11389716, -8679055, -5003100, -4588099, -4271345, 2739116, 1570884, 4074850, -645856,
+-5733245, -7652021, -2218351, -9533754, -13322452, -2641405, 363462, 10384157, 2054068, -8176007,
+-2106682, 7793218, -3289945, 2632815, 2335925, 4388920, -6169721, -9216463, -4094178, -4674535,
+14926085, 1700807, -4790499, 3282966, 2486786, -1066763, 1876901, 3449933, -419296, 6660958,
+-8778913, -7822209, 2543695, -3593814, 7952132, -3643743, -212064, 4316979, -1320703, 3829500,
+-238371, -155693, -270583, -1254131, -147640, 3450469, 1258425, 3353833, 1852742, 1693291,
+108448, -1175747, -551903, 1428077, -445603, 461172, -689879, 2421288, -1983738, 1427540,
+-1779190, 2442763, -2305324, 261993, -234613, -202937, 1695438, 2306934, -2412698, 1722819,
+908386, -758599, 3505767, 8449274, 2602750, -804770, 5808944, -1219234, -7451769, -1469953,
+-748398, 7141994, -4187056, -1081795, -2310693, 1065689, -2339684, 340913, 2273648, 3315715,
+4847945, 3127810, 1472100, 12599823, 4919348, 4067334, -634581, -10135586, 566936, -8462696,
+2457795, -5775121, 1294396, -92342, 3136400, 15517717, 4349192, -2546379, 5530844, -4539781,
+4699231, -2863670, 8061117, -4574677, -136902, -6251862, 3634079, 6082748, -7367480, 14576045,
+-3704946, 960462, -2357937, -4068408, 1481227, -4525285, -12696460, 2025077, -3257196, -805306,
+-7878044, 1743757, -2850248, -13072807, -5968931, -3723737, -11560978, 6408091, 16432545, 19926500,
+-19174882, -14671608, -8169565, 712965, 4664872, -5986111, 2642479, -6780143, 1671816, 9148817,
+14173929, -9917616, 15882252, 5026186, 1786706, 2636036, 2801393, -3628174, 5398237, 4962835,
+6024766, 4605279, 1888712, 7026030, -46708, 2147484, -209380, -101469, 3776887, -1219771,
+-4735202, -1343788, 2971044, 2280628, 886374, -118112, -370978, -480499, 2995740, 2372970,
+1009317, -2820720, 623844, 691490, -24696, 3197066, 1355599, 1956358, -85362, 2373506,
+1346472, 2400887, 3360812, 3499325, 158377, 57445, -1867237, 3867618, 3455301, -488016,
+-1154273, 319438, 2471217, -1005559, 7070590, -13735842, 19587198, 263067, 11410654, 4032974,
+-4198868, -4343286, 10564546, -6462852, 6622840, 8184597, -1215476, -6022081, 194884, 8469139,
+4723927, 4275640, 3717831, -930397, 1254667, 2739116, 10806675, 7543573, -5977521, -5151814,
+-1023276, -2693481, -1343788, -5905580, -3960497, 5328981, 9517648, 2298881, 14424111, -4228932,
+15785615, 555125, 7365332, 17362942, 12287901, 3811784, 3455301, 7752953, -1859721, -7257421,
+-171262, 7284265, -4427575, -8303246, 174483, -1466731, 15897821, 12700755, -289373, 17941152,
+-1739999, 9561671, 5015985, 7523172, -1136556, -6436546, 8003672, -1823214, 9385577, 6326487,
+19979114, -11430519, -2059974, -22890028, 4702453, -11352672, -1642825, 10256382, -4406637, 4100083,
+-1988570, 12021613, -3335579, -8707509, -759672, -3091840, 3541738, -744640, 5807870, 6749541,
+1728724, -2026688, 5395016, -1414118, 2274185, -172336, -3755412, 2305861, 2460480, 4629975,
+2411624, 5211406, 2325725, -304943, 113817, -1880122, -31675, 5101885, -1991791, -4208531,
+2209761, -494995, 696322, 4137127, 902480, 855235, 1730335, 2678449, -999117, -742493,
+1844152, 3308736, 5588290, 4990215, -82678, 2252174, -22012, -459562, 2404108, 3443490,
+3100430, -1967632, -10737, -788663, 4136054, 588947, -842350, 501437, -13181255, -9683004,
+4715874, -7831873, 4438312, -4739497, 1265405, 12062416, -2091649, -11455752, 3055869, -4836670,
+11615202, -12242804, -8551817, 4920422, 5578089, 8457327, 265214, -895501, 5452998, -3395172,
+-8381092, 5126044, -3469797, -6716255, 1954747, 6456947, -4820027, 12191265, 4923107, -513785,
+1569274, 5931887, 2585570, -21006686, 8514236, -2223719, -2252174, -3694746, 11094437, -19864,
+11817066, 405874, 1000727, 1213328, -3170223, -1369021, 5724118, -6802692, 1556926, 18927384,
+1642825, 13889924, 1054951, -2951180, -1562294, -9529996, -19597398, -14362908, 6448357, 8872866,
+-3898220, 14866492, 6381785, -10808822, -6249715, 13601625, 9730248, 8978629, 2773475, -4325569,
+109522, -862752, -8442295, -2713883, -4940286, -23137526, -9913321, -648003, 15453829, 3328063,
+-3585224, 1542430, 13269301, -3413962, 669478, -42413, 3361349, -4483409, -2090575, -3383361,
+-1870995, -1279363, 3194382, -285078, -567473, -333397, 2506114, 1866163, 3907883, -2895345,
+-4306242, 1417339, -4555350, -2663954, 590558, 1515050, 549219, -947040, 4795331, -2374580,
+-1399623, -5673652, 2126009, -5146445, 3970161, 1582696, 2647311, -4386772, 412317, -892816,
+2096481, -2604898, 1645509, -2350958, 2673080, -4864588, 213675, -5676873, 6107981, 5746666,
+12443594, 4695473, 4124242, 14296872, 11941620, 9955197, 323196, 3659849, 702227, -2406256,
+-2878165, 2282775, -1220308, -8682813, 1806034, 8372502, -178778, -2508261, 2531346, -21111912,
+6920266, -8454643, 5138929, 7052873, 6349036, -7975755, 4175782, -889595, -255551, 12381317,
+9028021, 47245, 4799089, 3536369, -1768453, -7190312, 1656247, 6004901, 42950, 8798241,
+2583960, 7951595, 15751256, 750546, 6315213, 6700686, 8414378, -432718, -5504001, 13597330,
+-5360119, 10963441, -13069585, -10766946, 14918569, -826781, 4887136, 8761196, 13011067, 16838956,
+7067369, 2255932, -8319352, 3651259, -1752884, -15189689, 12771622, 7925289, -12435004, -799938,
+712965, -15566572, 5154498, 12262132, 7227893, -166967, 4683125, 3310883, -7274601, 13427678,
+1242319, -2704756, 6899865, 13281649, 5188858, -595390, -4712116, -3715147, -1650878, 2223719,
+3714073, 5456219, 1750199, 898185, 1675037, 6386080, 5708012, 7106024, -139050, -811749,
+2797098, 6077379, -23622, 516470, -1273995, 2779918, 460098, -758599, -2357400, 1411434,
+-4461934, -7936563, -402116, 4377646, -155693, 3080565, -3800509, 2354179, 130460, 2680597,
+387621, -2181307, 1752347, -1490891, -1202591, -556735, -4808216, 3328600, -1792612, 1344862,
+2612414, 79457, -716723, -2270427, -3124589, -704912, -34845608, -21667036, 7091528, 7424388,
+14332843, 23693188, -6510634, -3702799, -7533910, -6987375, -8889509, -9532680, 787053, 3822521,
+3011309, 14945412, 666257, 14664629, -726923, 5043366, 6803765, 5209796, 10932302, 7775502,
+568546, 9606768, -103079, -1146756, -5519033, 6495601, -855235, -14330695, -12362526, 7762617,
+-1771674, 17066052, 10221485, 10969346, 4089346, -21500070, 5204427, 13495324, -2045478, 3914326,
+-3264175, 2663954, 16999480, -608812, 14252849, 23688356, 1364189, -8968429, -221728, 228170,
+-14848776, 20103668, 9622874, -2694555, -1114007, 14558865, 6907381, -17695266, -14356465, 5647882,
+-6228240, 8425115, 6132140, 2652679, -6963216, -12579422, -572304, 3156801, 2392834, 13559749,
+-18213882, 2643016, -1218697, -15487115, -7346542, -15575699, 13605920, -4642860, 18800146, -14789183,
+1401233, -7130720, 10697153, 4616553, -4587025, -918049, 9862319, 589484, 3102040, -5718749,
+-2995740, -4840965, 8749922, 4302484, 2684, 2291902, 2649995, -8013872, 578210, -2276870,
+2840584, 1640141, -1687922, -8189966, -2805688, -6057515, 7244536, -5388037, 1216013, -1470489,
+7176891, -1538672, -1200443, -2568927, -4395899, -294742, -2899103, 2805688, 7919920, 6825240,
+-429497, -7215008, 9176734, 24713242, -29417304, -8230768, -14341433, -604517, 4662187, 778463,
+19720880, -20353850, 9621800, -2778844, 3928821, -2464238, 10828149, -5971615, -10080825, -841814,
+-2939905, 7656853, -640487, 5177583, 11470784, -2385854, -8603356, -1148367, 12899934, -7589207,
+3071975, 2906082, 507343, -1168231, 12810814, -480499, -3311420, -21400748, 6880538, -5291937,
+-13525389, -11757473, -3131031, -13033615, -7690139, -11317239, 5364951, -13356811, 13326210, -12258374,
+8259222, -6330782, 16157130, -15652471, -9105331, -2351495, 9357660, 3863860, 70867, -6437082,
+-12839805, 1312113, 5005785, 18327700, 9596031, 4007205, -10487236, 6242735, -9304510, -10472741,
+9136469, -10166188, 4838281, 11882564, 9894531, -2630131, -3796214, -8553964, 14274324, 1409286,
+13660680, 22113176, -4337380, -11584064, -5192079, -3847754, -7975218, 3512210, -13229036, 5770826,
+4297652, 3985730, 10437844, -7372848, 373662, -1329829, 2636036, 9521942, 263067, 7492034,
+-2726231, -162135, 924492, -4220879, -1530619, 4508642, 2358474, -6039261, -7927436, -3741990,
+3476776, 3152506, -3491272, 11323681, 3295851, -8242042, 4148939, 6063420, 15052250, 12264816,
+6850473, 2561948, 1439888, -6299644, -4968741, -181462, -5033165, 980326, -2924336, -9207873,
+5085242, -3025805, -1298691, 1126355, 5015985, 155156, -4264366, 15992311, 22290880, -24363202,
+17250200, 11905649, 225486, 8462159, 29749090, -8858907, -9046275, 2470680, 8495982, 12119324,
+3753265, -12147241, 12938589, -5280126, 26246008, -1091459, -4759361, 8220568, 6629282, 6531572,
+-649614, 24592446, -21117818, 4674535, -739271, 6469295, -9018894, -17667348, 8236137, 6389301,
+6652368, -6437082, -4958540, 20493974, 7475391, 25854630, 2042794, -10096394, -1398549, 5444408,
+-2637110, 26854284, -3782256, 14445049, -2994666, 24055574, 8560944, 6206765, -6281390, -1760937,
+13107703, -133681, 14061186, 10491531, 12386686, -17293686, 2369748, 11696807, 14185203, 10464151,
+7977365, 19168976, 23655606, -18687402, -2532420, 36088464, -9105331, -10260140, 23270132, 31442918,
+269509, -700617, -17551920, -14551886, -1257889, 15602006, -2662880, -3392487, 403190, -1602023,
+-4756677, -12646531, -4799089, -1305670, -7577933, 122407, 7116224, -4521527, 9190693, -9979357,
+8067023, -2318746, 6988449, -7569343, -63888, 5041218, 2865817, 8884140, -1939715, -5234492,
+-2455648, 2399276, 8151311, 2152316, -3316789, 11324218, -3929895, 5810017, 5881958, -1404454,
+-1593433, -2976949, 16751983, -6556805, 1904281, 4017942, 6054830, -3411815, -11330124, -6733435,
+-2203318, 12558484, 5961952, -1282585, 496606, 4270808, -1099512, -150324, 4286378, 2115808,
+895501, -182536, 9993852, 22502944, -1388885, 7006166, -19249506, 18299246, -9762998, -6044093,
+-16851842, -10961293, 34517040, 436476, -24321326, -10890963, -733903, 43487, -3219078, 26641682,
+12459700, -2341294, -11159399, -1126355, 7011534, -3376918, 35554276, 7485591, 15627775, 5312875,
+-8019778, -20221242, 4727149, -317291, 3147137, -15693810, -1660542, -10632192, 11985643, -26307,
+1960653, 12346957, -11277510, -8366597, 2451353, 439160, 3693135, -17342542, -13544179, -29637422,
+-15449534, 1152662, -16865800, 2141041, -12239046, -7452842, 21919902, 6765647, -10665478, 6434398,
+2484639, -227096, 21089364, -3755412, 25549150, 9629854, -10997801, -31336618, 5437429, 4816806,
+17273284, -9494025, -22404160, -8148090, 6497212, 947040, -5343476, -16299401, -5178120, -22963580,
+-25957708, 7928510, -1442572, 26411902, -8506183, -16402480, -14086419, -1498407, 18811420, -1219234,
+6933688, 11858405, 9249212, -4343286, 6139656, 8031052, 2765959, 8230768, 8312373, -6105833,
+-838056, 11609297, -2332704, 1414118, 11285027, -2382096, 6705518, -8568460, 3274376, 6221797,
+-3777424, 3609920, 3734474, -8037495, 10356240, -10023380, 5022428, 4911832, 8231305, -2311766,
+-5609228, 10730976, -1424319, 7855495, -11720429, -6015102, -8595840, -7573101, 1130113, -6296422,
+4512937, 301721, 1911797, -12093554, 1336809, -3665755, 16426639, -17712446, -850404, 27506044,
+-5641977, 8308078, 3061775, 3850975, -25334402, 21470004, -1897839, -20213726, -11771968, 10980084,
+-2851858, 5623186, 74088, -8228621, -6125697, 3940633, -6137509, -1217086, -166430, -29392608,
+-7566122, -19620484, 4584878, 7332046, 5369, -8488466, 3702262, -3921842, 11813844, -25974888,
+1939715, 4844186, 15195594, -11157788, 14169097, -10985989, 9080098, 2652142, 11062225, -16863116,
+5421860, -8217346, -18041010, 12112345, -14566382, -29349660, 4525822, -2505040, 23529978, -10998874,
+3441880, 11008538, 15670188, 17819282, 2064269, -5735929, -10871099, 628139, 8533026, 11831561,
+-22908282, 26146150, -23622, -17184702, -12878996, -22957138, 9641128, 5923834, 9431211, 4373351,
+24824910, -8470749, 26965416, -14253923, 6453189, -5623723, -12263205, -37042484, 21249888, 4319664,
+-9714679, -25053618, -1288490, 4987531, -1984275, 9562208, -6648073, -7858180, -1130650, 4239133,
+-6926709, -6733435, -4304631, -1022739, 4115653, -1917166, -2069637, -9759239, 7649874, 524523,
+-5308580, 4889284, -3798362, 8043937, -2206540, 4169340, 5338645, 9872519, -3110093, 8992588,
+1165010, 777926, -9195525, -7085623, 2498060, 3830037, 1501091, 795106, -1619740, -5853504,
+-3209951, -2619930, -6508486, -2784750, 11937862, -5570036, -6467147, 3953518, -14443438, 248571,
+-3636764, -21937082, -54224, 12146704, -4784057, -23766202, -3757560, -34746284, 16877610, -38405060,
+22974316, -26546656, -23154168, 6629282, 19937238, 14886357, -13176960, 13965623, 25074020, 4466766,
+3772592, 5906654, 2289755, -14744086, 17995376, -30137248, -18699214, 1703491, -1835025, -1926293,
+-3975529, -7504919, 4057670, 27752468, 7209103, 3861713, 2633889, -13051869, 16146930, -2911451,
+-27881318, -4298189, 636192, 599685, -19061064, -13495324, 14733348, -4791573, 25256556, 4673998,
+59056, -20526186, -11207180, 7558069, 3300682, -5601711, 21651468, -17107928, -10341744, -754841,
+-1215476, 20381768, 1709397, 23843510, 59593, -19504520, 4909685, -16631187, 12720619, -2346126,
+17315160, 32628866, -50177568, 17100950, 7019587, 9185324, 19086834, 4699768, -22972170, -5364414,
+-2018098, -4186519, 11851962, -23617488, 2317135, -6200859, -3277597, -16281684, -8654359, -24621436,
+2831457, -1574106, 2627983, 6750615, -9887015, -1833414, 12050604, -7386270, 2449742, -4127464,
+-12015171, 5601711, 7437810, -8533026, -779537, -13464186, -669478, -19464792, 7105487, 4728759,
+-2297808, 2036351, -4773856, 768799, 4083440, -3164317, -3491272, 11042361, 13700946, -3104725,
+4640176, 2128156, 14065481, 6127845, -17375828, 2259690, 10209674, -5786395, 10318122, 3205119,
+4518843, 41084048, 35499516, -10193568, -13768591, -841814, -27055610, 15756088, -1569811, 5927055,
+2076617, -13692356, 40987408, -17650704, -72368592, -10616622, 14412300, -48730700, -8370892, 15212774,
+-41280004, 5695664, 26835492, -18993420, 26771604, -25759604, 22997402, 28532542, -18268106, 7749195,
+-2656437, 590558, -7753490, -11330124, -2108292, 17550846, -11355894, -18891414, -10327786, -15218143,
+-1632625, -11951820, -1973001, 6269579, -2861522, 17142826, -15176804, -18643380, 14810121, -19718732,
+-29236916, -37484864, -13074417, -918586, 7262253, 20845624, -8741332, 9329206, 9757092, -6897718,
+-3251290, 34367792, -22762790, -903554, 23519240, 7274064, 18489298, -4650913, 6727530, 26090852,
+13406740, -1443109, -3205119, -16120086, 6581501, 26246546, -24445344, 18559628, -24190866, 7035157,
+34160560, 7860327, -19215684, 19417010, 3071439, -12283606, -9592273, 23502062, 7727720, 10129680,
+-1430224, 1766842, 6439230, 7702487, -712428, -2367064, 9993315, 8716636, 1830193, -11632382,
+12787728, 1574642, -4420595, 3140695, 4380330, -8469676, -2249489, 6522982, 1257352, 10869488,
+-13428215, 20194400, 15649250, -2782602, -12805445, -5203353, 13465259, 15394237, 24836186, -767725,
+4783520, 4064113, 13618268, -20718386, -11050414, 20785494, 13006772, 1409286, -3354370, 1786170,
+5748277, -10844792, -8507256, -7295002, 1525787, 6628745, -3343632, -27380, 10799158, -11534135,
+-8179229, 36349920, 24700356, -34613680, -6816650, 31329102, -9260486, -19042812, -13391708, -19107772,
+-11199127, 31629750, 19363860, -2312840, 14464376, -3211025, 17585744, -10714870, -5871757, 35121020,
+-14326937, 6528887, -9903121, -3550327, -201863, 9768903, 28589450, 11166915, -19053012, -5418101,
+-695785, -2687039, 16173773, 2366527, 28783260, -8196945, 5129802, -2717104, 8535174, -23735064,
+14592688, -21874268, 15159624, -933082, 22162568, -5491653, 16481400, -7271917, 5317170, 9594957,
+-9301825, 9934796, 22370338, 27956480, -14493367, 28642600, 12118250, 33935612, -9491878, 6606197,
+-1080184, -3891240, -6283001, -2068564, -10980621, -54957328, -34594888, -10435697, -532039, 8100845,
+4054449, 13027710, 20958366, -30115774, -1553168, -11999065, 46148888, -2940442, -13856101, -3716757,
+-40219148, -33475512, 50985020, 20970178, 11503533, -7545184, 16062641, 1620813, -36829344, 7861401,
+2631204, -13747653, -14302241, 2641942, 322659, 4257923, -7624104, -3605088, -17999672, -14984604,
+6593312, 8398272, 7109245, 5747740, -9323300, -13482976, -8345659, -17542258, 11409044, 4227322,
+-31754304, -3398393, -9160628, -1821603, 15634755, -14275398, -20536386, -4137127, 13359496, 4901632,
+-14252312, 8938364, 18442590, -33812132, -9177808, 12625056, -595390, -2163053, -6516539, -931471,
+5977521, 10698764, 2418067, -4275103, 27278948, -39689256, 37171332, -10973105, -11228118, 9502078,
+17248588, -31097710, -6311455, 454193, 6089190, 1580548, -993211, 15466714, -9546102, 1909650,
+8062728, 8968965, 12857521, 10650445, 3469260, -17098802, -3549254, 23060754, -22604412, -19304804,
+23856396, 8108899, 16815870, 26139170, 40519260, -9298067, -25991532, 34313568, -14027900, -5881958,
+35704600, 11188927, -13299903, -37476812, -24838332, -3828427, -13962402, 17525614, 35176856, 18037788,
+-12278238, 36221068, 12052215, -13211319, 9852655, 40432824, 11560441, 7787850, -8703751, -32499480,
+-43714176, -34672196, -2661806, 26193932, 7860327, 16533477, 61915176, 30545808, -37327024, -25074556,
+16303159, -51483772, -23804320, 44320840, 15677704, -57192860, -47871168, -22159346, -36694052, -34350076,
+-20716238, 31077310, -9036611, -6544994, 80981608, 13622563, -23549306, -6495065, -25432648, 43111272,
+-9287867, 9351754, 2782065, 601832, -23826332, -9149891, -2062658, -11980811, 2632278, 9236327,
+20900922, 2734284, -14578730, -635118, -300648, -9483825, 4134443, 6113349, 6918656, -18730352,
+4567161, -17351668, 2771328, 9086540, -1272384, 13824426, -3610994, -917512, 13743895, -2883534,
+7563975, 15525770, -5552856, 4619238, 10448045, 11671574, 9317932, 1918240, 2115272, 8120173,
+-8874476, -3309272, 5291400, 15343771, -55486144, 38359428, 16440061, 12377559, 15388868, -6000070,
+18894098, 15501611, 22158810, -4271345, 30406220, -19197430, 23053236, -8479339, -17744120, -5680631,
+-29075318, 2945811, -10708427, 10187126, -7416335, -11315091, 27793270, -32068374, 20589000, -1177895,
+-13989245, -5671505, 12284680, 13861470, 10024454, 26264798, 21194590, -15359340, -3238942, -13753559,
+11791296, -12203613, 9185861, 12594992, 5760625, 7019587, 4670777, -7623030, 29046864, -2838974,
+8601209, 2789045, 13361106, 7318088, -34839700, 2131378, -20859582, 5181341, 15316390, -2978560,
+-14781130, -13639742, 32383516, -34404300, -27758910, 50745576, -21661130, 13057237, 5019743, 16200080,
+-7718593, 8406862, -35454956, 2276870, 34359740, -18573586, -13943611, 29498910, -2059974, -24744380,
+-18238578, 10773925, -9674414, -5876589, 18362596, -13719736, 4549444, 22752590, -25847114, 1535451,
+15086609, -8544301, -5163088, -6911676, 9277666, 2400350, 3731253, -3561065, 5262409, 3803194,
+-5094368, 221191, 898185, 13499082, 6876780, -12994424, 15669651, 3747896, -7993471, 4401805,
+4782446, -1597728, -4679904, 11063836, 13422, 3610994, 1406602, 14358613, -6750615, -5652714,
+8830453, -13238700, 16436840, -1417876, -9279277, -1714766, -984621, 1791538, -177167, -6503118,
+-934692, 8376797, 17611514, -32603096, -132843336, -143325200, -5032091, -82140712, 73058464, 263656768,
+115024592, 159074848, 200876688, -75631152, -53428320, -21169894, -180067040, -125899448, -40688372, -197477760,
+-85950888, -17417702, -80603648, 19429896, 185732096, 168731008, 182606976, 236609216, 142669152, -12641162,
+53350472, -52825952, -210161872, -114121040, -84362824, -174628000, -119640608, 6853157, -134372880, -44130252,
+29917132, -134300400, -68745248, 100774968, 39242044, 109274704, 271997056, 221112976, 178884848, 321623264,
+233545824, -3811784, 33775084, -59936804, -287829376, -275176416, -283816800, -442253856, -299460160, -185071744,
+-181103744, 2303176, 143847584, 161939600, 226965936, 343455104, 317917248, 268363520, 265022032, 151783600,
+53501872, 8539469, -16121697, -120237608, -206951392, -254203552, -272117312, -367538080, -305455936, -235603648,
+-115174376, 123300456, 363875520, 338856800, 371360576, 260402256, 31915366, -35298724, -111276160, -153110208,
+-103421200, -50761144, -51122460, -22655416, -23368918, -37251324, 412854, 5426691, 27194122, 84680648,
+76976552, 56690884, 77987480, -7340636, -50173272, -6750078, -58942520, -51096688, 31779000, 34293704,
+8041253, 7859790, -89912992, -230230656, -217934160, -185678416, -139811392, 68093488, 210111952, 256853536,
+324523968, 290842848, 179467888, 124528280, 44261248, -51707648, -108306728, -129288176, -167586944, -205741824,
+-231963664, -270989888, -240906864, -83403432, 59290412, 139456512, 180895968, 196524288, 147496160, 102245456,
+51210504, -2077690, -6065568, 24787866, 39709120, 43389372, 47182364, 38930120, 2864206, -33474976,
+-71459128, -127287800, -122781840, -100001336, -83619256, -46903192, -7081328, 23574002, 33800856, 35664872,
+22436372, 13960791, 20300162, 32255742, 45293652, 61579092, 73202888, 70543768, 51367808, 25616258,
+-5674726, -28797218, -38020660, -50489488, -63231044, -62474596, -48408576, -36935644, -26674432, -20204600,
+-12170864, 2449742, 21632140, 32340566, 29753386, 27722940, 23781234, 13908715, 11783243, 9941239,
+4184372, 8645232, 17462800, 16416976, 14577119, 15021111, 3346317, -10750303, -20018306, -33758980,
+-40598716, -34304440, -26386132, -19046570, -2747169, 7810398, 11220065, 14671608, 11000485, 4314295,
+4697621, 10699837, 13073880, 20334522, 22259204, 18894098, 15375983, 6019397, -6820408, -17784386,
+-23818814, -25642566, -22677964, -15161771, -5388574, 3470871, 7589207, 8280160, 6216429, 4721243,
+4328790, 4366908, 3847754, 2950106, 1348083, -134755, -1145683, -1647120, -1563905, -1193464,
+-614717, -255551, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-7737921,
-3799972, -8803609, 1763084, 674847, 584652, -5995775, -2106682, 1692754, -1291711, 1998234,
-3170223, 1929514, -52076, 2508798, -6786049, 199179, -236760, -133144, 3773129, 5731097,
--5946382, -1305670, -3596498, -1146219, 2153926, 3944391, 659814, 1005022, -1445793, -1910724,
--1559610, -1173063, -2694555, 1523103, -2716567, -1815161, 3144453, -2627983, 2263448, 406411,
--6721087, -2249489, -3693672, -854699, 2888366, -1957968, -567473, -1924682, -2006287, -1381906,
-2823404, 4296578, 806917, 2405182, 1903207, -2224793, -4268124, 2339684, 1916629, -900333,
--3670587, -3042448, 2800319, 600222, 2099165, 1028645, -5654862, -1835562, -2092723, 3169149,
-1285806, -5668820, 1520418, -2986613, -918049, -258235, -2050847, 1666447, -1869921, 476205,
-2195265, 2287070, 1398549, 1589138, 1030792, -142271, 1099512, 1372779, 143345, -1068373,
-1540283, 355409, 28991, -409633, -1007707, 531502, 976568, 214212, 803159, -263067,
--507343, 28991, -787590, 883153, -134755, 1036698, -179315, 234613, -84289, 966905,
-498216, -6442, -377957, 628139, -427349, -11036992, 7195144, -5310190, 660888, -766115,
--2068027, 5496485, -4959077, -3320547, -67646, 5813238, -2246805, -404264, -695248, 4797479,
--2997887, -7861401, -1795296, -4074850, -5510980, 138513, -495532, 836445, 3089692, 5125507,
-3175592, 437013, 7877507, 3025805, 208843, 5596343, 5879274, -542777, -3258807, 159988,
-2565169, 2030983, -104153, -1212255, -4666482, -4131759, -2054068, 4474282, 1823751, 7755101,
-4372814, -419833, 2562485, 3117073, 1010391, -4935455, 5209259, -2160906, 2697776, -282394,
-1612223, -5871757, -979789, -1917703, 1997160, -1844689, -2242510, 5976984, -470836, -4619238,
-1744294, -3533684, 2774012, -2026688, 4485020, 3833795, 4299799, 1388348, -4241817, 2229088,
--685584, 2195802, -1863479, 570694, 5910412, -2376191, 2845953, 3840238, -636192, 158914,
--226023, -794032, -1631014, 908386, -140123, 1408212, -77846, 1121523, 31675, 15569,
-814970, 1366873, 561567, 1308354, 1508607, -379568, -1175210, 1931125, 179315, -143345,
-115964, 1142998, -370978, -1195612, 547608, -355409, 280784, -46171, 1173063, 304943,
-621160, 308164, -1052267, 2207613, 2478196, 141197, -2120640, 2314987, 911070, 712428,
-1101659, -8665633, 2825552, -5516886, 929324, 1807108, 1894618, -2523293, 4619774, 746251,
--1698660, -780610, 5389110, 3877282, -2335925, -2997887, -2466385, 2096481, 3823595, -2294586,
--2518998, 760209, -9837623, -10737, -4196720, -1645509, -4175245, -5465346, -671626, 4999342,
-1375463, -4451197, -1184337, 4282083, 1292248, -2726231, 4830765, -2088965, -6737193, -1993402,
-3782256, -1656784, 4474819, 8570607, 6918119, 972810, -97711, 2434173, -1052804, -5033165,
-49392, 1919850, -3621194, 3066070, -7177964, -1055488, 440234, -3027415, -2348810, 3143379,
-6247030, -4880694, -5124433, 3200288, 3192235, 5908802, 1889249, -3417183, 4694400, 4081293,
--1362042, 4548907, -5018133, 5094905, 1219234, 3461744, 683437, -2670933, -1557463, -463856,
-1104344, 132070, -2477123, 875100, 11811, -1414118, -1197759, 361314, -381178, 1134945,
-47782, 1874216, -1353989, -945430, -86436, 268435, 1578401, -777389, -1614371, 759136,
-39192, -301721, 1065689, -210453, 637266, -682900, 641561, 1006096, 103616, 1607928,
-14766098, -5761162, -2546916, -964757, 10641318, -1078574, 8043937, -5879274, 7086159, -7048578,
--6185827, 1465121, 3346853, -4168803, -1036698, 2102387, -559956, 2747169, -4297115, 4922570,
-1770600, -5315559, -217433, 2108829, 1643362, 929860, 10011032, 7974681, 6236830, -17717,
-4043175, 363462, 1155346, 2986076, -9268539, -1431298, 5624260, 3653407, 4362613, -120259,
--1654636, 2026151, -379031, 11293080, -1726577, 1890859, 1121523, 536871, -3359201, 6766184,
--784368, 7035694, -3898220, -4089883, 2909304, -2729989, -9425843, -4352413, 1883343, -909459,
--6745246, 1864016, 8053, 8746701, 756451, 745177, -2689187, 3174518, 3224447, -733903,
--521302, 7681549, 5647345, 5603859, -3720516, -5297306, -4620311, -9039296, 742493, -6403796,
--2165737, 388158, -3490735, -3990025, -2222646, -463856, -1363652, 2109366, 3954591, -755914,
--464930, -1793686, 912144, -1302986, -1493038, 620086, 1080721, 2684, 1394254, -830002,
-46171, -802085, -533650, -443992, 811749, -501437, -491237, -304943, -1284732, -1473174,
-88047, -175020, -1765232, 1486596, 1503239, 1815161, -34360, -1291175, -746251, 1423782,
-381178, 10944650, -8536784, -141734, -8932995, -5842766, -3434900, 7889855, 4658429, -10806675,
--14804215, -5650567, 5322538, 3810173, -2157684, 5173825, 121333, -1190243, 651224, -7744900,
-2426657, -952409, 723702, 2550674, 599685, 51003, 3355980, 2964064, -5127654, -5102421,
-5986111, -1793686, -2841121, 3704946, -10107132, 2507724, 2194192, -9294846, 3482145, 9789304,
-5949067, 6746320, 1435593, 3761318, 9285182, 1816234, 1826435, -10484015, 5652177, 8056822,
-6590628, 1341640, 6694244, -7443179, 7488813, -2136209, -7339026, -11327976, -41876, -7172059,
--5788006, -2420214, -6889665, -17264158, 824097, 998580, -510027, 2797098, 8611409, 3308199,
-3516505, 2375117, -6130529, 1006096, 2972654, 2588255, 2274185, 2624762, -6293201, -1787780,
--7951595, -3518652, -504659, 1976222, -2860985, 2955474, 644245, 610959, -1936493, -214212,
--993211, 128849, -1079647, 1188632, 421981, 929324, -220654, -1349157, -1149441, -1087701,
-1307281, 913754, 73014, -442382, -1034550, -1078037, -1095217, -3488587, 620623, 635118,
--2665027, -1300301, -919123, -23438710, 11577621, 1511829, -9092446, 2237141, -979789, -2669322,
--1838246, -5144297, 2796024, -2628520, 567473, 3399467, 3140695, 10182831, -4086662, -9695889,
-5307506, -12300249, -5288179, 2026151, 1716913, 1420024, 4012036, 4958003, 4280472, -75162,
-5658083, 381178, -2216740, 7499550, 4660577, -2267743, 4474819, -7730941, 14652818, 564788,
-2744484, -1360968, -12538620, -2164127, -4652524, -4389994, 1972464, 10479183, 319438, 448824,
--1326608, -2879239, -6755447, 2154463, -1094143, 3757560, -8518531, 2891050, 4576825, 2011655,
--6303402, -2239826, 1694902, 824634, 5155572, 1014686, 17816062, -5070746, -7552700, -8611409,
--2576981, 186831, 6381785, -8578660, -1081258, -3675418, 3956202, -12528956, -511101, -3392487,
--5212480, 1563905, -1486059, 3419868, -407485, 6281390, 4016331, -17717, 1376537, 485868,
-834834, 7282117, 921271, 5206574, 1935957, -1318018, 183073, 184684, 1555852, -960999,
-826244, -282931, 2259690, 403727, -1592359, -2400887, 1996623, -928250, -2794950, -1264331,
--1438814, -670015, -807991, -61203, 3598109, 52076, 1063004, 417686, 1498944, -1406602,
--704375, -2585570, -2863670, 10741176, -3266860, -2386391, 2422362, 3269544, -8409546, -8485245,
--7750806, -7275675, -11992622, 7786239, -6961605, 2284923, 3082176, 11164231, -1688459, -2482491,
-8769786, 2138894, 1942399, -10002442, -6511708, 5122286, 2296734, 4100620, 6093485, -10545218,
-248571, 4696010, 10323491, 30602, 1091995, -1401233, 134755, -6835441, -1192927, -2033667,
--12836584, -907849, 4088272, -7307350, 3311420, -7961259, 78920, -5468030, -1027034, -1615982,
-855235, 10584947, -2925410, 268972, 5479842, -2866354, 3259343, -8546985, -15342697, -8272644,
--4568772, -2062658, 1764158, 10442139, -4735202, 2892124, 2627446, -7298223, 2622615, -5592585,
--1897839, 3899830, 10579041, -1485522, -450435, 3464428, -127238, -9709847, -9196599, -3785477,
-9396315, -1001264, -13821742, 1101122, -9045201, -3943854, -1794760, -853625, 3198140, -3409667,
--962610, 3580929, -877247, 4185446, 3627637, 2662343, -1550483, 4100620, -3453691, -2560874,
--2417530, 713501, -312996, -654446, -741419, -576063, -1131724, 903554, -224949, 2680597,
--1680943, -1021129, 1177895, -1436667, -814970, -3916473, -4773856, -323196, 480499, 2502355,
-416612, 1552631, 207769, 10230612, 10744934, -3405372, 920734, 11270531, -11641509, -10376641,
-8611409, -2176475, 1106491, 7798587, -1640141, -2256469, 7806640, -14705968, 6145562, -758599,
-2396055, 7009387, 7257421, -8282308, 1475858, -11342472, 3383897, -3488050, -1275605, -7927973,
--471910, -11319386, 1015760, -9826885, 6736120, -3520800, 1219771, 12014097, 5558225, 5315559,
--9746891, 1667521, 11179800, -2776696, -16041703, 8457864, -2012729, 1444720, -3204583, -7530689,
-10497437, 3672734, 8544301, 2025614, 1189706, -7221451, -9264781, 3191698, 4258460, 4493610,
-6075768, 14012331, -519691, -11097659, -7186554, 8380018, -1273995, -9561671, -2524367, -717796,
--2613488, -12068321, 147640, 1488743, 2939905, -4466766, 6838125, -498753, 724239, 9632001,
-4968204, 10032507, -10051834, -4344897, 1819456, -5664525, 4535486, 2642479, 2768643, -583042,
--1298154, -1007170, -177167, -4117263, 5025649, -2021856, 3075734, -993748, 3586835, -1618129,
--1804960, 40265, 2056216, -1964948, -81604, -632434, -2001992, -1194001, 903017, -2384244,
--692564, -4844723, -3635153, 1761474, 3200288, 1463510, 1455994, -693637, -383863, -2386391,
--351650, 2177012, -3103114, -660888, 1431835, -849330, 2509872, 2204929, -1735167, -934155,
-2246268, 1319629, -1164473, -77846, 8213588, -10011032, 11712913, -2644089, 12389907, -10129680,
-9170292, 1002338, -973347, 15431817, -8069170, 916439, -7831873, -2340220, 23527830, 11348377,
-4993973, 3397319, 6690486, -3767760, -32749, -19900730, 3694209, -838592, -8603356, 9531069,
-7155953, -306016, 1699196, -11504070, 10130754, -5377299, 10759430, 7040525, 5745593, -8257075,
--1449552, -6943889, 10332081, 2369748, -3759707, 18300318, 8754754, -2075006, 964220, -15178951,
-2578591, 694174, 12052215, -5422396, -15424838, -2664490, -4265440, -3009698, -21801790, -10877542,
--23221278, -11842835, -8295730, 2723546, -5834176, 10955388, 1373853, -12550431, 7573101, -8400419,
-11866995, -10583873, -8565775, 6168647, 10572599, 10394895, 44023, -9769977, -7777649, 4760971,
--6376416, 227633, -3214246, 3918084, -4371740, -6459094, 11379516, 5257577, 1568200, -1823751,
-4299799, 2407866, 5289252, -510564, 3588445, 1248762, 5939403, 99858, -258235, 317291,
--2895882, 85899, 1535451, 708670, 672162, 139586, 4583267, 2071248, -3575560, 379568,
-2099165, -1158031, -1348083, -891206, 302795, 849867, 2324651, -597000, 1595580, 2645163,
--522912, -2728378, -205085, -2972654, -1262184, -2747169, -1719598, 2340220, 198642, -1547262,
-1560147, 839666, 3274376, -1931125, -962610, -2940442, 1299765, 640487, -14133127, -16832514,
--11062762, -1352915, 59593, -1941325, 4347044, 6469295, 4578435, 275952, 2585034, -5152350,
-3844533, -10745471, -15088220, 761283, 12062953, 2341831, -3869229, 9706626, 5860483, 9404368,
-15641734, 2273112, -4464082, -9511205, -7558606, 4767414, -8704825, -5952288, 2593087, -6832756,
--15393700, -8314520, -586800, -1540820, 3944928, -3246459, 8962523, 2800856, 3574487, 12295418,
--1644973, 1705102, 3067144, -9310952, 11594801, 2142652, -10181220, -16838956, 4639102, 1819456,
--12156905, 13447543, 8832600, -11251204, 4189204, 11349451, 6512781, 3249143, 9477919, -3923990,
--3420942, 978179, -4803384, -7866770, 14236206, -12153147, -1097364, 5486284, 1484448, 21961242,
--18527416, 6024229, -2113661, 194884, 6354404, 528281, 1592359, -4777614, 3163780, -10879689,
--23376970, -1049583, 8590, -11885785, -7439420, -1413044, 4773856, 4185983, 1968169, 1284195,
--3643206, 161598, -5222680, -2502355, -769336, -2924336, -4676683, 1989107, -643171, 1131724,
--2244657, -1584306, 1482301, -3779034, -8328479, -2738579, 890669, -2063195, -8018167, -4369056,
-3764002, 2646237, 1949378, -1373316, -2887292, -3714073, -426276, -1728188, -4412005, -3639985,
--5256503, -2634963, -3442416, -3492882, 208306, -646393, 1831804, -1200443, 1786706, -1005559,
-3109020, -4121021, -11110544, 9889162, -20132122, -14292577, 10697690, -449898, -18327700, 9475235,
--10697153, 20860120, 4227322, -27359478, -3422552, 2529199, -6856916, 2098092, 4841502, 9759776,
-8393977, -15883863, -629213, 1519345, -3231426, -14557255, -2184528, -3000035, -4937602, -4423817,
--136902, 1103270, 12490302, 13623099, -4138738, 7345468, 6406481, 6202470, 13636521, 187905,
-3729105, -15600395, -5281199, 5515275, -2999498, 7550016, 18697604, 2750927, -16193100, -36287640,
-12885, -11183558, 10404558, -6855842, -3597035, -7128572, -19505058, 8536248, 26316338, 1536525,
-6976638, -20562156, 4366371, -2332704, -9149354, 2359011, 10167261, 5224828, 8228084, -8857833,
-13127031, 7624641, -15038828, -22524420, -1311039, -17129940, -15894600, -10217727, -11683385, 1533303,
-21246130, 8101919, 912144, -2829310, 13732621, -6929393, -9982041, -1629403, 2260227, -1600412,
-2650532, 2099702, 273804, 2124935, 5355288, 1904281, -407485, 379031, -1856500, -2011118,
-5618891, -1661079, 5534066, 121870, -2874944, 650688, -1431835, -2277407, 6664179, -1575716,
-3687230, -7988103, -842887, 3870303, 141734, 1578401, 6816113, -4993437, 6247567, -622233,
-863825, 1847373, -1847373, 4625680, 869194, 263067, 1014149, 213675, 2317672, 5957657,
--2289218, 2079838, 2552821, 2303713, 2851322, -952409, -39602820, -25012278, 17933100, 14439680,
-23497230, -98247, 9247065, 2282775, 7404524, -311385, 4768488, -10431402, -12510703, -7765838,
--11202885, -7226820, -7988103, 9558450, 22583474, 4929012, -27604828, -6560026, 4811974, -7332046,
-6715718, -15773267, -1299765, -537408, 893353, 7683160, 5803575, 1076963, -1924145, -3525631,
-6394670, 12475269, -10027138, -15517180, 10295037, 4913443, 13511430, 6180995, 19654308, -13617194,
--4808753, 12566537, 18737332, 16305843, 9622874, 4588636, -4056597, 1234266, -2397129, 69793,
-6470905, -24522652, 13147432, -1934883, 3536906, -1622961, 18584860, -5683853, -313533, -4085588,
-11770895, 10024454, -20958904, 15007153, -17835388, -901406, -9065065, -8952322, 8085276, 1484448,
--27783070, -2459406, -2231236, -5119601, -3273302, -652298, -3585761, 14412300, 1372779, 13786845,
--4405563, 16302622, 7645042, -8419210, 3540664, -2102387, 889058, 1060320, 1489817, 2200634,
-791885, -3157338, -5269925, 8112657, 3546032, 6659884, 1807108, -3955128, 7608535, 304406,
-351114, 5780489, -16229608, -7494181, -7241315, 2279554, -270583, -10982768, 423591, 1854352,
--561030, -2055679, -81604, 3787088, -4072166, -151398, 4326106, 2194728, 5283884, -4651450,
--2339147, 1342177, 5737003, 21943524, -24479702, -593242, -13928042, -39230232, -4667019, -14498199,
--30972620, 6153078, -232465, -6043019, 1912334, 16598438, -1108638, -17605608, 5998996, 680752,
--5681705, -4257387, -3167539, 860067, 19128710, -4329327, -739271, 8672613, 6396817, -2786897,
-9244917, 8463770, -4126390, -4052302, -7733089, 10635950, -2583423, -18387828, 2769180, -1242856,
-6274411, 24034100, -16095390, -25787520, -16282758, -7549479, 3526705, 8569533, 4531728, 18290118,
-9116605, -12931610, -7489886, -17629768, 15206869, 9356049, 1658931, 3214246, -10138807, 1042603,
--10725607, 18440442, 18077518, 1271847, -8478802, -4714264, 1749662, 16786342, 33503966, 20623360,
--3214783, -7512972, 423591, 10658498, 4595615, 9836549, 13550622, -13481365, -668404, -25984016,
--17541720, -16702591, -11220602, 6967511, 15901043, 10937671, 1693291, -3191698, -1535451, -14470819,
--18216030, -4603131, -9698036, -9121974, 2044941, -1858647, -2365990, 84826, 541166, 4138201,
--4672388, 9275519, -9483825, 3976603, -12059731, -4039417, -67646, 2214056, -406411, 2101850,
-4553739, -3271691, 491774, 11025181, 13424457, 16210280, 8852464, 10150618, 4547297, 1923609,
-704375, 278099, 558883, -2847563, -8816494, -8594230, -1481227, 6662568, -64425, 1019518,
--3643743, -2557116, 968515, 8155069, 5087389, 9734543, 7824357, 6975564, 8409009, -19132468,
--2240899, -9904195, 14416058, -15895674, 3092377, 1403917, 28186796, -17420924, -5097053, -17918604,
--3867618, -17699560, -14870251, -10733123, 5563057, -19040126, -13807246, -20705500, -5279589, -3113315,
--6328098, -9356586, -23072028, 6034966, -16305843, 6594923, -17108466, 21098490, 3258807, 9455907,
--4063576, -19903952, 10671383, 6171868, -6689949, 10654740, 14919106, -8062191, -21435644, -11487964,
-28752658, -12285754, -928787, 737124, -4867809, 6314676, 18638010, 3301219, 7932268, -6004365,
-13335873, 181462, 10506564, 3193845, 3571802, -331786, 1083942, 22784264, 6915434, 54556824,
--33298882, 21254720, 29908542, -7909719, 687195, 15413564, -11172284, -3286187, 25041270, 9906342,
--4170950, 13275207, -5685463, -24260122, -17934172, 6069863, 976031, -32411434, -9015673, -3330747,
--16825534, 8625368, 5040681, -10959146, -8960376, -6628745, 943819, 2956011, 6851547, -5713380,
-800475, 3974455, -1801202, -7232725, 1976759, 1477469, 2258079, 6700686, 1186485, -4141422,
-530965, 7763691, 6901476, 3321084, -7763691, -215285, 14228153, -4116726, -3032784, 7855495,
--7769059, -13456669, -3851512, 673773, -1778117, -6942278, -2153926, -482647, -7630547, -1646046,
-764504, -2182917, -7926362, -13066364, 4879083, 13872744, 4989679, -383326, 437013, -2713346,
--8335458, -6707129, 30298310, 33864744, 431644, 24432458, 24334748, -1395328, 10935524, -24574192,
--7638063, 21674552, 2034741, 21399674, 29972966, 24671366, -4996658, 16084116, -25166360, -39244188,
--16803522, -14708116, 9421548, 26307, 10082436, 10892037, 23600846, 18247168, 6354404, -18734648,
--2293513, 18649284, 5996848, -9217000, 12009265, 25730612, -2919504, 8927090, -21049098, 10024454,
--16620987, -4547834, -10559714, -21857626, 13354664, 1463510, 6502581, 26064546, -14144401, -15924128,
-9401147, 27009438, -21287468, -14275398, 8769249, -6915434, 38191388, 28242632, -26922466, -10206990,
--21290690, 1087164, 23285702, -10875931, -16230681, -7442105, 1394254, 5557151, -19423452, 4581657,
-38919920, 2760053, -26091926, -39840652, 32052804, -38435124, -32258426, -18911814, -16523813, -27830852,
-7356742, 6971269, 44560824, 11076721, 19545860, -9946071, 21258478, -2701535, -9216463, 7962333,
-883153, -2157147, 21799106, 2687576, 11100343, 13835700, 7434589, 16608102, -4866735, 4409858,
--3738769, -1465658, -3721052, -14172855, -10518912, -11723113, 13259101, 4656282, 11793443, 14638859,
--3384971, 8726300, 19011672, 6775848, -6318971, 9757092, 11355357, 3830037, -2831457, -14003741,
--12601971, 12295954, 5114769, 8142185, 16216723, 36195300, 15479599, 9046812, 6528887, 10164040,
--5564667, -1320703, 18161270, -11880416, -14530948, -2930778, 6907381, -6333466, 6547141, 3888556,
--35296040, -20395726, -26501558, 7192997, 14959371, 5339718, 22877144, 20519206, 28975996, 9059160,
-31629212, 14156749, 20478940, -9879499, -3753265, -9931575, -24060406, -17309792, -37315212, -22164716,
--7020661, -21776558, 5019743, -766115, -371515, 9044127, 7573638, 3486440, 18366890, -4483946,
--14838038, 21807160, 2228551, -28678570, -12173011, -3038153, -34319472, -26156350, -25251186, 2422899,
-12566537, 3402151, -13015362, -1618666, 14703284, 8947491, 34656628, 6460168, -45978700, -15373299,
--7719130, 7422241, 7507066, -5285494, -11976516, 17165374, -25318832, -4730370, -20233590, 15584826,
--40053256, -24995636, -32598802, -26440356, 1594507, -14912126, -11179263, -26540214, 13697724, 47670916,
--878321, 30804580, -16740172, 7535520, -22269406, -124017, 34339336, 8056285, -15669651, 1752884,
-13465796, -22993644, -35128536, -19192062, 9493488, -27709518, 12291123, -490163, -343597, 17645336,
-9692131, -4834523, 21024402, 20388746, 16902844, -5527086, -5203353, -3721052, 223338, 14148159,
-10748693, 7065758, 853625, 14739791, 8758512, 2126009, 2467459, 10856067, -4077535, -3968013,
-8216273, -11680164, 10915123, -10184441, -9256191, -11959873, 21121038, 12553116, 19685982, 6735583,
-7798587, 1421097, 1952063, 9046812, -13706314, -23378580, 2454037, 6127845, 6425271, 8456791,
--1496259, -9281424, 26570816, 10942503, 26805428, -43408696, 19020262, 32825362, -3042984, 37787124,
--19826642, -57363584, -29601988, -293668, -5590437, 6447820, -20443508, 19964618, 28229210, -25186762,
-22455162, -13757317, -16799764, -40042516, -16232292, -22975390, -15072651, -18362058, 18260590, 2783139,
--35801236, -45967424, 34947612, 7946763, 12635257, -10692321, 2955474, -12389907, 499827, 10650445,
-16222628, 14616847, 39122320, 1316944, -27777164, 37845104, -3823058, -9752260, -17363480, 16006269,
--30899068, -20813412, 17818208, -16106664, -24023362, -30325690, -26432840, -5631776, 3747896, 2932389,
--8027831, 32811940, 28080496, -2639794, -15702400, -27343372, -31242666, 7808788, 6832756, -6138582,
--2866891, 45015016, 3240016, -13074954, 19637664, 9377524, -29425358, 23626078, 43010340, -46881180,
-76025752, 20297478, 22106734, 8351564, 22264574, -5978058, -46582140, 32101660, 2957085, -5776194,
-33541548, -39483636, 7151121, 6985228, 8590, -3782793, 1897302, -3049427, -10688563, 5867462,
-11927124, -9701257, -1009317, -14367739, -16274705, 21453362, -4501663, -10486163, 5158793, -5708012,
--12895639, -23803782, -5229123, -8079371, 21104932, -19972672, -1769527, 24576876, -4949413, 19641422,
--6757594, -17152488, 9186398, -3450469, -7897908, 10171556, 2665027, 27062052, -3351685, -413927,
-17643726, 54181012, 23703924, 1108102, -18360986, 25803090, -600222, 1724966, -12633646, 23539106,
--27655832, 19917910, 19108846, 20178294, 9655086, -7581154, 26759794, 33652680, -7069516, 13831942,
--21122650, 33866892, 14325863, 11261404, -21854942, -47486232, 9260486, -14619532, -11005854, -19318762,
--24408836, 14552423, 6388764, -11854110, 2528125, 1066226, -12983686, -57979376, -3796751, -12360916,
--6124624, -950798, 40628244, 27808840, -13796509, 10465225, -27078696, 2952790, 19934554, -30774514,
--28698972, -23480586, 36751500, -26600344, 7489349, 29620778, -40189620, -37197640, 34019364, 27174258,
-28523952, 38330436, 13989782, -49149460, 10870562, 14473503, -4548907, 80142480, -8503498, -12254615,
--36451924, -31370978, 15950435, -28916942, 18608482, 6517613, 21074330, 43889732, -28403156, -19259708,
-53265112, -32613298, -36197984, 23477902, -46559056, 33668248, -35458712, 8001524, 11886859, -25537876,
-10351945, -29640644, 20380694, 37765648, -1781338, 6541235, 7524246, 1389959, -11787001, -10894185,
--2718714, 10947335, -5123359, 7387881, -7917236, -23430120, 9795210, 2078227, 15680926, 7907572,
-13659070, -4728759, -4898410, -23214836, 16051367, -3110630, -21476448, 4993437, 43420508, 12124693,
--11424076, 12894566, 23256712, -11599096, 2301029, 18107582, -9332964, 18064632, 5833640, -5553930,
--28382218, 4871567, -11026792, -569620, 34744136, -15888695, 1556926, 6890738, 4803384, -9893457,
-11570642, 39775156, 2896956, -34773664, 48527760, 11450383, -3736085, 34481072, 16837882, 27814746,
-10081899, -42438036, -9718974, -16131897, 19287624, 48526152, -31511638, 7495255, -15380815, 21392158,
-24557012, -33425046, 27074400, -26919782, -24360518, 11754252, 22194780, 588411, 7035694, 17303350,
--27237608, 23240604, 1357210, 28449326, -5607080, -7964480, 8898098, 42309724, -19649476, 34119756,
--17176648, 6605660, 8516383, 34103652, -2522757, -2573759, 11353746, 51582556, 2922188, -40910636,
--3797288, -49182744, 28841242, -215285, 79594336, 16830904, -23920284, -7421704, 17202954, -18035642,
-27624692, 51960516, 35281544, 478352, 14700062, 22337588, -3089692, -24628954, -3857418, -5834176,
--84131968, 51832204, 38377680, 35583268, 8140037, -36517960, -11368778, 27010512, 13615583, 23487566,
-12283606, -80371184, -29169808, 48875116, 12971338, 15578920, 41791644, -30296162, -1543504, -4520990,
-23417236, 5761162, -2950643, -6839199, 18323404, -5268315, -22443888, 10526428, -11140608, -12836584,
-10734197, 16322486, -12905303, -4161823, -1064078, 12813498, -17428440, 13327820, -15474230, 6693170,
--26298084, -26572426, 25413322, 3077344, 1660542, -3320010, -19607600, -6141267, 16797618, 1573569,
-5277441, 28742458, -5151277, -22346714, -2780991, -12826383, 9249212, 10578504, -11162083, -9196599,
-10788958, 23767812, 29756070, -1234803, 31532040, -19452980, 32090386, -29314762, 4984847, 15346992,
--15029701, 2156074, 6077379, -8025147, -15684684, -29677150, 45252312, -10146860, -8836358, -15101105,
--2459406, -6255620, 14766634, -30426622, -8682276, -19060528, 6615324, -19166828, 18446348, -179315,
-9557376, -21143050, -38308424, 1748052, -27966680, -29406030, 13407277, -22580254, -18917184, 37042484,
--13606993, -21800180, 2921115, -22419730, 10621991, 13916231, -3931506, -18343268, -5159330, 10510322,
-9523553, -8415452, -608812, 32605244, -5650567, -20344724, -25472378, -3839164, -11052025, -38788388,
-36455684, 12373801, -44147968, 27145804, -1753420, -18778134, 85541256, 47860968, 39517996, 20658256,
-12232067, -20453708, 3408057, 9175661, 10312753, 3602404, 37622304, 8144332, -10807748, -18633716,
--75187160, 15155329, 10208064, -624918, -14430016, -28691456, -5311801, -18585398, -16081431, -1461900,
-24154896, -16626892, 41558640, 5746666, -7884486, -3195456, -3160022, 2966749, 17702782, -7057705,
-4714801, 11840151, 4574140, 1999307, 9870372, -15731928, 7872138, 2411087, 24520506, -8752606,
--5616207, -7016903, -5674726, -19537806, -10004053, 6588480, -20477330, 15188615, -3789772, -10398116,
-14816563, 8706972, 12541841, -4945655, -1430761, 1160715, 2778307, -13670881, 7419019, 484794,
--130997, -1661616, 9127879, 4320737, -39349952, 65700116, 8141111, 21354578, 11521250, -16622597,
-12000675, 18316962, 4365835, -2153926, -16209207, -3055332, 4235912, -7713762, -5925981, 2509335,
-7143605, 18935974, -13554917, 7818451, 519154, 15064598, -5671505, 2783676, 4785131, -17844516,
-14046154, 2069101, 3281892, 4889821, 5025649, -11395085, 11627550, -9854802, 2174864, 11143830,
--6461242, 10922639, -5081483, 13831405, 10652593, 6110665, -17710298, 12814035, 9648107, 7708930,
-21481816, -21136070, -2093797, -417149, -4712116, 6172942, -11069204, -17544404, 11617350, 13218836,
-6473053, -1875290, 2587718, -2079301, 6723772, -6290517, 2570538, -13077102, 11443940, -20184198,
-18589692, 10311143, -6600828, -488553, 7560753, 351114, 6749004, -63888, 525597, -874026,
--7046431, 9477919, 12847858, -11771432, -2931852, 2224793, 7006703, -5451924, -5789079, 1338419,
-2121177, -1505923, 1039919, -4441533, 1330903, 5216238, -4482872, 970663, 2900177, -4537096,
-3453154, 4555887, -714575, -1696512, -2535641, 752156, 9516037, -3855270, 983548, -9259949,
-254477, 9940165, -7438347, 7363185, -3767760, 422517, 16423418, -3076270, 31675, -492311,
--5461051, 8524436, 3240553, 3590056, 3239479, -2858301, 1925219, 9366787, -3077881, 6346351,
--4525822, -821949, 12642773, -52740052, -122714728, -19705310, 71701792, 65058016, 160388576, 83687976,
--43239584, -13376139, -88902600, -150936960, -10461467, -68659888, -9595494, 109775072, 46888696, 84780504,
-130302328, -15292231, -19128710, -66337916, -112613504, -89646704, -5797669, -33772940, -12768401, 93390304,
-29640106, 60695404, 110547624, 17965312, -465467, 11294153, -67262408, -101979704, 17486422, -105378632,
--68840808, 23192286, -10584410, 16939352, 135420848, 15369540, 51917028, 110402136, -22025130, 3255585,
-24663850, -106780400, -88888104, -31686658, -121310816, -47176996, 15475841, 22253836, 83580064, 117504400,
-83919368, 59023588, 51620140, -19805704, -71042520, -58565100, -87835304, -92522184, -39539468, -23601920,
-652298, 77263776, 92465280, 28722594, 72266048, 20849918, -22821846, 14979235, -50291384, -70203384,
--13643500, -32733556, -21699248, 39222180, -1404454, 27280558, 49131204, -13698798, -1013612, -236223,
--24768540, -7889318, -1636919, -18868866, 20863878, 7287486, -4755066, 33705292, 10920491, -5118528,
-32725504, -11718818, -34867080, 432718, -53312356, -37652368, 11656541, -35811436, 7718593, 40913860,
-30391188, 55863564, 61351460, 22018150, 21781926, -2854006, -50337016, -70839040, -72449120, -76120240,
--48037060, -3928821, 24492588, 52068964, 91118808, 97281544, 81201192, 63106492, -3610457, -59942712,
--85295904, -109619376, -111293344, -59787556, -17729624, 46332496, 98919536, 89058832, 54117660, 39574904,
-11865921, -8658654, -13118441, -39715024, -45245868, -34539052, -28333900, -20845624, -3913252, 3833795,
-16726213, 24142548, 25353192, 23786602, 22161494, 10681047, 805306, -8604430, -12870406, -19087908,
--18429168, -14185740, -7497939, -3231963, 3518115, 6052146, 8740795, 6889665, 5964636, 4750234,
-4688494, 1338956, 1243930, 1018981, 423054, -2266132, -659814, -3400540, -6561100, -7131257,
--6762963, -6407555, -265751, 1012002, 3613141, 7634841, 9371619, 8734890, 7911867, 2665027,
--877247, -5407901, -8227010, -9317932, -7037304, -5051419, -1835562, 1433445, 4271345, 4689031,
-5375152, 4203699, 2879239, 1453846, -31139, -2088965, -1560147, -2231773, -1773822, -1399086,
--1402307, -683974, 300648, -1142461, -682363, -148176, 590558, 1393180, 1385664, 1470489,
-2398739, 1546188, 823560, -73014, -1124745, -1881196, -1870458, -2114198, -1498407, -860067,
--192200, 445603, 1000727, 1009854, 1067836, 875636, 597537, 151398, -43487, -292595,
--419833, -466004, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+3799972, -8803609, 1763084, 674847, 584652, -5995775, -2106682, 1692754, -1291711, 1998234,
+3170223, 1929514, -52076, 2508798, -6786049, 199179, -236760, -133144, 3773129, 5731097,
+-5946382, -1305670, -3596498, -1146219, 2153926, 3944391, 659814, 1005022, -1445793, -1910724,
+-1559610, -1173063, -2694555, 1523103, -2716567, -1815161, 3144453, -2627983, 2263448, 406411,
+-6721087, -2249489, -3693672, -854699, 2888366, -1957968, -567473, -1924682, -2006287, -1381906,
+2823404, 4296578, 806917, 2405182, 1903207, -2224793, -4268124, 2339684, 1916629, -900333,
+-3670587, -3042448, 2800319, 600222, 2099165, 1028645, -5654862, -1835562, -2092723, 3169149,
+1285806, -5668820, 1520418, -2986613, -918049, -258235, -2050847, 1666447, -1869921, 476205,
+2195265, 2287070, 1398549, 1589138, 1030792, -142271, 1099512, 1372779, 143345, -1068373,
+1540283, 355409, 28991, -409633, -1007707, 531502, 976568, 214212, 803159, -263067,
+-507343, 28991, -787590, 883153, -134755, 1036698, -179315, 234613, -84289, 966905,
+498216, -6442, -377957, 628139, -427349, -11036992, 7195144, -5310190, 660888, -766115,
+-2068027, 5496485, -4959077, -3320547, -67646, 5813238, -2246805, -404264, -695248, 4797479,
+-2997887, -7861401, -1795296, -4074850, -5510980, 138513, -495532, 836445, 3089692, 5125507,
+3175592, 437013, 7877507, 3025805, 208843, 5596343, 5879274, -542777, -3258807, 159988,
+2565169, 2030983, -104153, -1212255, -4666482, -4131759, -2054068, 4474282, 1823751, 7755101,
+4372814, -419833, 2562485, 3117073, 1010391, -4935455, 5209259, -2160906, 2697776, -282394,
+1612223, -5871757, -979789, -1917703, 1997160, -1844689, -2242510, 5976984, -470836, -4619238,
+1744294, -3533684, 2774012, -2026688, 4485020, 3833795, 4299799, 1388348, -4241817, 2229088,
+-685584, 2195802, -1863479, 570694, 5910412, -2376191, 2845953, 3840238, -636192, 158914,
+-226023, -794032, -1631014, 908386, -140123, 1408212, -77846, 1121523, 31675, 15569,
+814970, 1366873, 561567, 1308354, 1508607, -379568, -1175210, 1931125, 179315, -143345,
+115964, 1142998, -370978, -1195612, 547608, -355409, 280784, -46171, 1173063, 304943,
+621160, 308164, -1052267, 2207613, 2478196, 141197, -2120640, 2314987, 911070, 712428,
+1101659, -8665633, 2825552, -5516886, 929324, 1807108, 1894618, -2523293, 4619774, 746251,
+-1698660, -780610, 5389110, 3877282, -2335925, -2997887, -2466385, 2096481, 3823595, -2294586,
+-2518998, 760209, -9837623, -10737, -4196720, -1645509, -4175245, -5465346, -671626, 4999342,
+1375463, -4451197, -1184337, 4282083, 1292248, -2726231, 4830765, -2088965, -6737193, -1993402,
+3782256, -1656784, 4474819, 8570607, 6918119, 972810, -97711, 2434173, -1052804, -5033165,
+49392, 1919850, -3621194, 3066070, -7177964, -1055488, 440234, -3027415, -2348810, 3143379,
+6247030, -4880694, -5124433, 3200288, 3192235, 5908802, 1889249, -3417183, 4694400, 4081293,
+-1362042, 4548907, -5018133, 5094905, 1219234, 3461744, 683437, -2670933, -1557463, -463856,
+1104344, 132070, -2477123, 875100, 11811, -1414118, -1197759, 361314, -381178, 1134945,
+47782, 1874216, -1353989, -945430, -86436, 268435, 1578401, -777389, -1614371, 759136,
+39192, -301721, 1065689, -210453, 637266, -682900, 641561, 1006096, 103616, 1607928,
+14766098, -5761162, -2546916, -964757, 10641318, -1078574, 8043937, -5879274, 7086159, -7048578,
+-6185827, 1465121, 3346853, -4168803, -1036698, 2102387, -559956, 2747169, -4297115, 4922570,
+1770600, -5315559, -217433, 2108829, 1643362, 929860, 10011032, 7974681, 6236830, -17717,
+4043175, 363462, 1155346, 2986076, -9268539, -1431298, 5624260, 3653407, 4362613, -120259,
+-1654636, 2026151, -379031, 11293080, -1726577, 1890859, 1121523, 536871, -3359201, 6766184,
+-784368, 7035694, -3898220, -4089883, 2909304, -2729989, -9425843, -4352413, 1883343, -909459,
+-6745246, 1864016, 8053, 8746701, 756451, 745177, -2689187, 3174518, 3224447, -733903,
+-521302, 7681549, 5647345, 5603859, -3720516, -5297306, -4620311, -9039296, 742493, -6403796,
+-2165737, 388158, -3490735, -3990025, -2222646, -463856, -1363652, 2109366, 3954591, -755914,
+-464930, -1793686, 912144, -1302986, -1493038, 620086, 1080721, 2684, 1394254, -830002,
+46171, -802085, -533650, -443992, 811749, -501437, -491237, -304943, -1284732, -1473174,
+88047, -175020, -1765232, 1486596, 1503239, 1815161, -34360, -1291175, -746251, 1423782,
+381178, 10944650, -8536784, -141734, -8932995, -5842766, -3434900, 7889855, 4658429, -10806675,
+-14804215, -5650567, 5322538, 3810173, -2157684, 5173825, 121333, -1190243, 651224, -7744900,
+2426657, -952409, 723702, 2550674, 599685, 51003, 3355980, 2964064, -5127654, -5102421,
+5986111, -1793686, -2841121, 3704946, -10107132, 2507724, 2194192, -9294846, 3482145, 9789304,
+5949067, 6746320, 1435593, 3761318, 9285182, 1816234, 1826435, -10484015, 5652177, 8056822,
+6590628, 1341640, 6694244, -7443179, 7488813, -2136209, -7339026, -11327976, -41876, -7172059,
+-5788006, -2420214, -6889665, -17264158, 824097, 998580, -510027, 2797098, 8611409, 3308199,
+3516505, 2375117, -6130529, 1006096, 2972654, 2588255, 2274185, 2624762, -6293201, -1787780,
+-7951595, -3518652, -504659, 1976222, -2860985, 2955474, 644245, 610959, -1936493, -214212,
+-993211, 128849, -1079647, 1188632, 421981, 929324, -220654, -1349157, -1149441, -1087701,
+1307281, 913754, 73014, -442382, -1034550, -1078037, -1095217, -3488587, 620623, 635118,
+-2665027, -1300301, -919123, -23438710, 11577621, 1511829, -9092446, 2237141, -979789, -2669322,
+-1838246, -5144297, 2796024, -2628520, 567473, 3399467, 3140695, 10182831, -4086662, -9695889,
+5307506, -12300249, -5288179, 2026151, 1716913, 1420024, 4012036, 4958003, 4280472, -75162,
+5658083, 381178, -2216740, 7499550, 4660577, -2267743, 4474819, -7730941, 14652818, 564788,
+2744484, -1360968, -12538620, -2164127, -4652524, -4389994, 1972464, 10479183, 319438, 448824,
+-1326608, -2879239, -6755447, 2154463, -1094143, 3757560, -8518531, 2891050, 4576825, 2011655,
+-6303402, -2239826, 1694902, 824634, 5155572, 1014686, 17816062, -5070746, -7552700, -8611409,
+-2576981, 186831, 6381785, -8578660, -1081258, -3675418, 3956202, -12528956, -511101, -3392487,
+-5212480, 1563905, -1486059, 3419868, -407485, 6281390, 4016331, -17717, 1376537, 485868,
+834834, 7282117, 921271, 5206574, 1935957, -1318018, 183073, 184684, 1555852, -960999,
+826244, -282931, 2259690, 403727, -1592359, -2400887, 1996623, -928250, -2794950, -1264331,
+-1438814, -670015, -807991, -61203, 3598109, 52076, 1063004, 417686, 1498944, -1406602,
+-704375, -2585570, -2863670, 10741176, -3266860, -2386391, 2422362, 3269544, -8409546, -8485245,
+-7750806, -7275675, -11992622, 7786239, -6961605, 2284923, 3082176, 11164231, -1688459, -2482491,
+8769786, 2138894, 1942399, -10002442, -6511708, 5122286, 2296734, 4100620, 6093485, -10545218,
+248571, 4696010, 10323491, 30602, 1091995, -1401233, 134755, -6835441, -1192927, -2033667,
+-12836584, -907849, 4088272, -7307350, 3311420, -7961259, 78920, -5468030, -1027034, -1615982,
+855235, 10584947, -2925410, 268972, 5479842, -2866354, 3259343, -8546985, -15342697, -8272644,
+-4568772, -2062658, 1764158, 10442139, -4735202, 2892124, 2627446, -7298223, 2622615, -5592585,
+-1897839, 3899830, 10579041, -1485522, -450435, 3464428, -127238, -9709847, -9196599, -3785477,
+9396315, -1001264, -13821742, 1101122, -9045201, -3943854, -1794760, -853625, 3198140, -3409667,
+-962610, 3580929, -877247, 4185446, 3627637, 2662343, -1550483, 4100620, -3453691, -2560874,
+-2417530, 713501, -312996, -654446, -741419, -576063, -1131724, 903554, -224949, 2680597,
+-1680943, -1021129, 1177895, -1436667, -814970, -3916473, -4773856, -323196, 480499, 2502355,
+416612, 1552631, 207769, 10230612, 10744934, -3405372, 920734, 11270531, -11641509, -10376641,
+8611409, -2176475, 1106491, 7798587, -1640141, -2256469, 7806640, -14705968, 6145562, -758599,
+2396055, 7009387, 7257421, -8282308, 1475858, -11342472, 3383897, -3488050, -1275605, -7927973,
+-471910, -11319386, 1015760, -9826885, 6736120, -3520800, 1219771, 12014097, 5558225, 5315559,
+-9746891, 1667521, 11179800, -2776696, -16041703, 8457864, -2012729, 1444720, -3204583, -7530689,
+10497437, 3672734, 8544301, 2025614, 1189706, -7221451, -9264781, 3191698, 4258460, 4493610,
+6075768, 14012331, -519691, -11097659, -7186554, 8380018, -1273995, -9561671, -2524367, -717796,
+-2613488, -12068321, 147640, 1488743, 2939905, -4466766, 6838125, -498753, 724239, 9632001,
+4968204, 10032507, -10051834, -4344897, 1819456, -5664525, 4535486, 2642479, 2768643, -583042,
+-1298154, -1007170, -177167, -4117263, 5025649, -2021856, 3075734, -993748, 3586835, -1618129,
+-1804960, 40265, 2056216, -1964948, -81604, -632434, -2001992, -1194001, 903017, -2384244,
+-692564, -4844723, -3635153, 1761474, 3200288, 1463510, 1455994, -693637, -383863, -2386391,
+-351650, 2177012, -3103114, -660888, 1431835, -849330, 2509872, 2204929, -1735167, -934155,
+2246268, 1319629, -1164473, -77846, 8213588, -10011032, 11712913, -2644089, 12389907, -10129680,
+9170292, 1002338, -973347, 15431817, -8069170, 916439, -7831873, -2340220, 23527830, 11348377,
+4993973, 3397319, 6690486, -3767760, -32749, -19900730, 3694209, -838592, -8603356, 9531069,
+7155953, -306016, 1699196, -11504070, 10130754, -5377299, 10759430, 7040525, 5745593, -8257075,
+-1449552, -6943889, 10332081, 2369748, -3759707, 18300318, 8754754, -2075006, 964220, -15178951,
+2578591, 694174, 12052215, -5422396, -15424838, -2664490, -4265440, -3009698, -21801790, -10877542,
+-23221278, -11842835, -8295730, 2723546, -5834176, 10955388, 1373853, -12550431, 7573101, -8400419,
+11866995, -10583873, -8565775, 6168647, 10572599, 10394895, 44023, -9769977, -7777649, 4760971,
+-6376416, 227633, -3214246, 3918084, -4371740, -6459094, 11379516, 5257577, 1568200, -1823751,
+4299799, 2407866, 5289252, -510564, 3588445, 1248762, 5939403, 99858, -258235, 317291,
+-2895882, 85899, 1535451, 708670, 672162, 139586, 4583267, 2071248, -3575560, 379568,
+2099165, -1158031, -1348083, -891206, 302795, 849867, 2324651, -597000, 1595580, 2645163,
+-522912, -2728378, -205085, -2972654, -1262184, -2747169, -1719598, 2340220, 198642, -1547262,
+1560147, 839666, 3274376, -1931125, -962610, -2940442, 1299765, 640487, -14133127, -16832514,
+-11062762, -1352915, 59593, -1941325, 4347044, 6469295, 4578435, 275952, 2585034, -5152350,
+3844533, -10745471, -15088220, 761283, 12062953, 2341831, -3869229, 9706626, 5860483, 9404368,
+15641734, 2273112, -4464082, -9511205, -7558606, 4767414, -8704825, -5952288, 2593087, -6832756,
+-15393700, -8314520, -586800, -1540820, 3944928, -3246459, 8962523, 2800856, 3574487, 12295418,
+-1644973, 1705102, 3067144, -9310952, 11594801, 2142652, -10181220, -16838956, 4639102, 1819456,
+-12156905, 13447543, 8832600, -11251204, 4189204, 11349451, 6512781, 3249143, 9477919, -3923990,
+-3420942, 978179, -4803384, -7866770, 14236206, -12153147, -1097364, 5486284, 1484448, 21961242,
+-18527416, 6024229, -2113661, 194884, 6354404, 528281, 1592359, -4777614, 3163780, -10879689,
+-23376970, -1049583, 8590, -11885785, -7439420, -1413044, 4773856, 4185983, 1968169, 1284195,
+-3643206, 161598, -5222680, -2502355, -769336, -2924336, -4676683, 1989107, -643171, 1131724,
+-2244657, -1584306, 1482301, -3779034, -8328479, -2738579, 890669, -2063195, -8018167, -4369056,
+3764002, 2646237, 1949378, -1373316, -2887292, -3714073, -426276, -1728188, -4412005, -3639985,
+-5256503, -2634963, -3442416, -3492882, 208306, -646393, 1831804, -1200443, 1786706, -1005559,
+3109020, -4121021, -11110544, 9889162, -20132122, -14292577, 10697690, -449898, -18327700, 9475235,
+-10697153, 20860120, 4227322, -27359478, -3422552, 2529199, -6856916, 2098092, 4841502, 9759776,
+8393977, -15883863, -629213, 1519345, -3231426, -14557255, -2184528, -3000035, -4937602, -4423817,
+-136902, 1103270, 12490302, 13623099, -4138738, 7345468, 6406481, 6202470, 13636521, 187905,
+3729105, -15600395, -5281199, 5515275, -2999498, 7550016, 18697604, 2750927, -16193100, -36287640,
+12885, -11183558, 10404558, -6855842, -3597035, -7128572, -19505058, 8536248, 26316338, 1536525,
+6976638, -20562156, 4366371, -2332704, -9149354, 2359011, 10167261, 5224828, 8228084, -8857833,
+13127031, 7624641, -15038828, -22524420, -1311039, -17129940, -15894600, -10217727, -11683385, 1533303,
+21246130, 8101919, 912144, -2829310, 13732621, -6929393, -9982041, -1629403, 2260227, -1600412,
+2650532, 2099702, 273804, 2124935, 5355288, 1904281, -407485, 379031, -1856500, -2011118,
+5618891, -1661079, 5534066, 121870, -2874944, 650688, -1431835, -2277407, 6664179, -1575716,
+3687230, -7988103, -842887, 3870303, 141734, 1578401, 6816113, -4993437, 6247567, -622233,
+863825, 1847373, -1847373, 4625680, 869194, 263067, 1014149, 213675, 2317672, 5957657,
+-2289218, 2079838, 2552821, 2303713, 2851322, -952409, -39602820, -25012278, 17933100, 14439680,
+23497230, -98247, 9247065, 2282775, 7404524, -311385, 4768488, -10431402, -12510703, -7765838,
+-11202885, -7226820, -7988103, 9558450, 22583474, 4929012, -27604828, -6560026, 4811974, -7332046,
+6715718, -15773267, -1299765, -537408, 893353, 7683160, 5803575, 1076963, -1924145, -3525631,
+6394670, 12475269, -10027138, -15517180, 10295037, 4913443, 13511430, 6180995, 19654308, -13617194,
+-4808753, 12566537, 18737332, 16305843, 9622874, 4588636, -4056597, 1234266, -2397129, 69793,
+6470905, -24522652, 13147432, -1934883, 3536906, -1622961, 18584860, -5683853, -313533, -4085588,
+11770895, 10024454, -20958904, 15007153, -17835388, -901406, -9065065, -8952322, 8085276, 1484448,
+-27783070, -2459406, -2231236, -5119601, -3273302, -652298, -3585761, 14412300, 1372779, 13786845,
+-4405563, 16302622, 7645042, -8419210, 3540664, -2102387, 889058, 1060320, 1489817, 2200634,
+791885, -3157338, -5269925, 8112657, 3546032, 6659884, 1807108, -3955128, 7608535, 304406,
+351114, 5780489, -16229608, -7494181, -7241315, 2279554, -270583, -10982768, 423591, 1854352,
+-561030, -2055679, -81604, 3787088, -4072166, -151398, 4326106, 2194728, 5283884, -4651450,
+-2339147, 1342177, 5737003, 21943524, -24479702, -593242, -13928042, -39230232, -4667019, -14498199,
+-30972620, 6153078, -232465, -6043019, 1912334, 16598438, -1108638, -17605608, 5998996, 680752,
+-5681705, -4257387, -3167539, 860067, 19128710, -4329327, -739271, 8672613, 6396817, -2786897,
+9244917, 8463770, -4126390, -4052302, -7733089, 10635950, -2583423, -18387828, 2769180, -1242856,
+6274411, 24034100, -16095390, -25787520, -16282758, -7549479, 3526705, 8569533, 4531728, 18290118,
+9116605, -12931610, -7489886, -17629768, 15206869, 9356049, 1658931, 3214246, -10138807, 1042603,
+-10725607, 18440442, 18077518, 1271847, -8478802, -4714264, 1749662, 16786342, 33503966, 20623360,
+-3214783, -7512972, 423591, 10658498, 4595615, 9836549, 13550622, -13481365, -668404, -25984016,
+-17541720, -16702591, -11220602, 6967511, 15901043, 10937671, 1693291, -3191698, -1535451, -14470819,
+-18216030, -4603131, -9698036, -9121974, 2044941, -1858647, -2365990, 84826, 541166, 4138201,
+-4672388, 9275519, -9483825, 3976603, -12059731, -4039417, -67646, 2214056, -406411, 2101850,
+4553739, -3271691, 491774, 11025181, 13424457, 16210280, 8852464, 10150618, 4547297, 1923609,
+704375, 278099, 558883, -2847563, -8816494, -8594230, -1481227, 6662568, -64425, 1019518,
+-3643743, -2557116, 968515, 8155069, 5087389, 9734543, 7824357, 6975564, 8409009, -19132468,
+-2240899, -9904195, 14416058, -15895674, 3092377, 1403917, 28186796, -17420924, -5097053, -17918604,
+-3867618, -17699560, -14870251, -10733123, 5563057, -19040126, -13807246, -20705500, -5279589, -3113315,
+-6328098, -9356586, -23072028, 6034966, -16305843, 6594923, -17108466, 21098490, 3258807, 9455907,
+-4063576, -19903952, 10671383, 6171868, -6689949, 10654740, 14919106, -8062191, -21435644, -11487964,
+28752658, -12285754, -928787, 737124, -4867809, 6314676, 18638010, 3301219, 7932268, -6004365,
+13335873, 181462, 10506564, 3193845, 3571802, -331786, 1083942, 22784264, 6915434, 54556824,
+-33298882, 21254720, 29908542, -7909719, 687195, 15413564, -11172284, -3286187, 25041270, 9906342,
+-4170950, 13275207, -5685463, -24260122, -17934172, 6069863, 976031, -32411434, -9015673, -3330747,
+-16825534, 8625368, 5040681, -10959146, -8960376, -6628745, 943819, 2956011, 6851547, -5713380,
+800475, 3974455, -1801202, -7232725, 1976759, 1477469, 2258079, 6700686, 1186485, -4141422,
+530965, 7763691, 6901476, 3321084, -7763691, -215285, 14228153, -4116726, -3032784, 7855495,
+-7769059, -13456669, -3851512, 673773, -1778117, -6942278, -2153926, -482647, -7630547, -1646046,
+764504, -2182917, -7926362, -13066364, 4879083, 13872744, 4989679, -383326, 437013, -2713346,
+-8335458, -6707129, 30298310, 33864744, 431644, 24432458, 24334748, -1395328, 10935524, -24574192,
+-7638063, 21674552, 2034741, 21399674, 29972966, 24671366, -4996658, 16084116, -25166360, -39244188,
+-16803522, -14708116, 9421548, 26307, 10082436, 10892037, 23600846, 18247168, 6354404, -18734648,
+-2293513, 18649284, 5996848, -9217000, 12009265, 25730612, -2919504, 8927090, -21049098, 10024454,
+-16620987, -4547834, -10559714, -21857626, 13354664, 1463510, 6502581, 26064546, -14144401, -15924128,
+9401147, 27009438, -21287468, -14275398, 8769249, -6915434, 38191388, 28242632, -26922466, -10206990,
+-21290690, 1087164, 23285702, -10875931, -16230681, -7442105, 1394254, 5557151, -19423452, 4581657,
+38919920, 2760053, -26091926, -39840652, 32052804, -38435124, -32258426, -18911814, -16523813, -27830852,
+7356742, 6971269, 44560824, 11076721, 19545860, -9946071, 21258478, -2701535, -9216463, 7962333,
+883153, -2157147, 21799106, 2687576, 11100343, 13835700, 7434589, 16608102, -4866735, 4409858,
+-3738769, -1465658, -3721052, -14172855, -10518912, -11723113, 13259101, 4656282, 11793443, 14638859,
+-3384971, 8726300, 19011672, 6775848, -6318971, 9757092, 11355357, 3830037, -2831457, -14003741,
+-12601971, 12295954, 5114769, 8142185, 16216723, 36195300, 15479599, 9046812, 6528887, 10164040,
+-5564667, -1320703, 18161270, -11880416, -14530948, -2930778, 6907381, -6333466, 6547141, 3888556,
+-35296040, -20395726, -26501558, 7192997, 14959371, 5339718, 22877144, 20519206, 28975996, 9059160,
+31629212, 14156749, 20478940, -9879499, -3753265, -9931575, -24060406, -17309792, -37315212, -22164716,
+-7020661, -21776558, 5019743, -766115, -371515, 9044127, 7573638, 3486440, 18366890, -4483946,
+-14838038, 21807160, 2228551, -28678570, -12173011, -3038153, -34319472, -26156350, -25251186, 2422899,
+12566537, 3402151, -13015362, -1618666, 14703284, 8947491, 34656628, 6460168, -45978700, -15373299,
+-7719130, 7422241, 7507066, -5285494, -11976516, 17165374, -25318832, -4730370, -20233590, 15584826,
+-40053256, -24995636, -32598802, -26440356, 1594507, -14912126, -11179263, -26540214, 13697724, 47670916,
+-878321, 30804580, -16740172, 7535520, -22269406, -124017, 34339336, 8056285, -15669651, 1752884,
+13465796, -22993644, -35128536, -19192062, 9493488, -27709518, 12291123, -490163, -343597, 17645336,
+9692131, -4834523, 21024402, 20388746, 16902844, -5527086, -5203353, -3721052, 223338, 14148159,
+10748693, 7065758, 853625, 14739791, 8758512, 2126009, 2467459, 10856067, -4077535, -3968013,
+8216273, -11680164, 10915123, -10184441, -9256191, -11959873, 21121038, 12553116, 19685982, 6735583,
+7798587, 1421097, 1952063, 9046812, -13706314, -23378580, 2454037, 6127845, 6425271, 8456791,
+-1496259, -9281424, 26570816, 10942503, 26805428, -43408696, 19020262, 32825362, -3042984, 37787124,
+-19826642, -57363584, -29601988, -293668, -5590437, 6447820, -20443508, 19964618, 28229210, -25186762,
+22455162, -13757317, -16799764, -40042516, -16232292, -22975390, -15072651, -18362058, 18260590, 2783139,
+-35801236, -45967424, 34947612, 7946763, 12635257, -10692321, 2955474, -12389907, 499827, 10650445,
+16222628, 14616847, 39122320, 1316944, -27777164, 37845104, -3823058, -9752260, -17363480, 16006269,
+-30899068, -20813412, 17818208, -16106664, -24023362, -30325690, -26432840, -5631776, 3747896, 2932389,
+-8027831, 32811940, 28080496, -2639794, -15702400, -27343372, -31242666, 7808788, 6832756, -6138582,
+-2866891, 45015016, 3240016, -13074954, 19637664, 9377524, -29425358, 23626078, 43010340, -46881180,
+76025752, 20297478, 22106734, 8351564, 22264574, -5978058, -46582140, 32101660, 2957085, -5776194,
+33541548, -39483636, 7151121, 6985228, 8590, -3782793, 1897302, -3049427, -10688563, 5867462,
+11927124, -9701257, -1009317, -14367739, -16274705, 21453362, -4501663, -10486163, 5158793, -5708012,
+-12895639, -23803782, -5229123, -8079371, 21104932, -19972672, -1769527, 24576876, -4949413, 19641422,
+-6757594, -17152488, 9186398, -3450469, -7897908, 10171556, 2665027, 27062052, -3351685, -413927,
+17643726, 54181012, 23703924, 1108102, -18360986, 25803090, -600222, 1724966, -12633646, 23539106,
+-27655832, 19917910, 19108846, 20178294, 9655086, -7581154, 26759794, 33652680, -7069516, 13831942,
+-21122650, 33866892, 14325863, 11261404, -21854942, -47486232, 9260486, -14619532, -11005854, -19318762,
+-24408836, 14552423, 6388764, -11854110, 2528125, 1066226, -12983686, -57979376, -3796751, -12360916,
+-6124624, -950798, 40628244, 27808840, -13796509, 10465225, -27078696, 2952790, 19934554, -30774514,
+-28698972, -23480586, 36751500, -26600344, 7489349, 29620778, -40189620, -37197640, 34019364, 27174258,
+28523952, 38330436, 13989782, -49149460, 10870562, 14473503, -4548907, 80142480, -8503498, -12254615,
+-36451924, -31370978, 15950435, -28916942, 18608482, 6517613, 21074330, 43889732, -28403156, -19259708,
+53265112, -32613298, -36197984, 23477902, -46559056, 33668248, -35458712, 8001524, 11886859, -25537876,
+10351945, -29640644, 20380694, 37765648, -1781338, 6541235, 7524246, 1389959, -11787001, -10894185,
+-2718714, 10947335, -5123359, 7387881, -7917236, -23430120, 9795210, 2078227, 15680926, 7907572,
+13659070, -4728759, -4898410, -23214836, 16051367, -3110630, -21476448, 4993437, 43420508, 12124693,
+-11424076, 12894566, 23256712, -11599096, 2301029, 18107582, -9332964, 18064632, 5833640, -5553930,
+-28382218, 4871567, -11026792, -569620, 34744136, -15888695, 1556926, 6890738, 4803384, -9893457,
+11570642, 39775156, 2896956, -34773664, 48527760, 11450383, -3736085, 34481072, 16837882, 27814746,
+10081899, -42438036, -9718974, -16131897, 19287624, 48526152, -31511638, 7495255, -15380815, 21392158,
+24557012, -33425046, 27074400, -26919782, -24360518, 11754252, 22194780, 588411, 7035694, 17303350,
+-27237608, 23240604, 1357210, 28449326, -5607080, -7964480, 8898098, 42309724, -19649476, 34119756,
+-17176648, 6605660, 8516383, 34103652, -2522757, -2573759, 11353746, 51582556, 2922188, -40910636,
+-3797288, -49182744, 28841242, -215285, 79594336, 16830904, -23920284, -7421704, 17202954, -18035642,
+27624692, 51960516, 35281544, 478352, 14700062, 22337588, -3089692, -24628954, -3857418, -5834176,
+-84131968, 51832204, 38377680, 35583268, 8140037, -36517960, -11368778, 27010512, 13615583, 23487566,
+12283606, -80371184, -29169808, 48875116, 12971338, 15578920, 41791644, -30296162, -1543504, -4520990,
+23417236, 5761162, -2950643, -6839199, 18323404, -5268315, -22443888, 10526428, -11140608, -12836584,
+10734197, 16322486, -12905303, -4161823, -1064078, 12813498, -17428440, 13327820, -15474230, 6693170,
+-26298084, -26572426, 25413322, 3077344, 1660542, -3320010, -19607600, -6141267, 16797618, 1573569,
+5277441, 28742458, -5151277, -22346714, -2780991, -12826383, 9249212, 10578504, -11162083, -9196599,
+10788958, 23767812, 29756070, -1234803, 31532040, -19452980, 32090386, -29314762, 4984847, 15346992,
+-15029701, 2156074, 6077379, -8025147, -15684684, -29677150, 45252312, -10146860, -8836358, -15101105,
+-2459406, -6255620, 14766634, -30426622, -8682276, -19060528, 6615324, -19166828, 18446348, -179315,
+9557376, -21143050, -38308424, 1748052, -27966680, -29406030, 13407277, -22580254, -18917184, 37042484,
+-13606993, -21800180, 2921115, -22419730, 10621991, 13916231, -3931506, -18343268, -5159330, 10510322,
+9523553, -8415452, -608812, 32605244, -5650567, -20344724, -25472378, -3839164, -11052025, -38788388,
+36455684, 12373801, -44147968, 27145804, -1753420, -18778134, 85541256, 47860968, 39517996, 20658256,
+12232067, -20453708, 3408057, 9175661, 10312753, 3602404, 37622304, 8144332, -10807748, -18633716,
+-75187160, 15155329, 10208064, -624918, -14430016, -28691456, -5311801, -18585398, -16081431, -1461900,
+24154896, -16626892, 41558640, 5746666, -7884486, -3195456, -3160022, 2966749, 17702782, -7057705,
+4714801, 11840151, 4574140, 1999307, 9870372, -15731928, 7872138, 2411087, 24520506, -8752606,
+-5616207, -7016903, -5674726, -19537806, -10004053, 6588480, -20477330, 15188615, -3789772, -10398116,
+14816563, 8706972, 12541841, -4945655, -1430761, 1160715, 2778307, -13670881, 7419019, 484794,
+-130997, -1661616, 9127879, 4320737, -39349952, 65700116, 8141111, 21354578, 11521250, -16622597,
+12000675, 18316962, 4365835, -2153926, -16209207, -3055332, 4235912, -7713762, -5925981, 2509335,
+7143605, 18935974, -13554917, 7818451, 519154, 15064598, -5671505, 2783676, 4785131, -17844516,
+14046154, 2069101, 3281892, 4889821, 5025649, -11395085, 11627550, -9854802, 2174864, 11143830,
+-6461242, 10922639, -5081483, 13831405, 10652593, 6110665, -17710298, 12814035, 9648107, 7708930,
+21481816, -21136070, -2093797, -417149, -4712116, 6172942, -11069204, -17544404, 11617350, 13218836,
+6473053, -1875290, 2587718, -2079301, 6723772, -6290517, 2570538, -13077102, 11443940, -20184198,
+18589692, 10311143, -6600828, -488553, 7560753, 351114, 6749004, -63888, 525597, -874026,
+-7046431, 9477919, 12847858, -11771432, -2931852, 2224793, 7006703, -5451924, -5789079, 1338419,
+2121177, -1505923, 1039919, -4441533, 1330903, 5216238, -4482872, 970663, 2900177, -4537096,
+3453154, 4555887, -714575, -1696512, -2535641, 752156, 9516037, -3855270, 983548, -9259949,
+254477, 9940165, -7438347, 7363185, -3767760, 422517, 16423418, -3076270, 31675, -492311,
+-5461051, 8524436, 3240553, 3590056, 3239479, -2858301, 1925219, 9366787, -3077881, 6346351,
+-4525822, -821949, 12642773, -52740052, -122714728, -19705310, 71701792, 65058016, 160388576, 83687976,
+-43239584, -13376139, -88902600, -150936960, -10461467, -68659888, -9595494, 109775072, 46888696, 84780504,
+130302328, -15292231, -19128710, -66337916, -112613504, -89646704, -5797669, -33772940, -12768401, 93390304,
+29640106, 60695404, 110547624, 17965312, -465467, 11294153, -67262408, -101979704, 17486422, -105378632,
+-68840808, 23192286, -10584410, 16939352, 135420848, 15369540, 51917028, 110402136, -22025130, 3255585,
+24663850, -106780400, -88888104, -31686658, -121310816, -47176996, 15475841, 22253836, 83580064, 117504400,
+83919368, 59023588, 51620140, -19805704, -71042520, -58565100, -87835304, -92522184, -39539468, -23601920,
+652298, 77263776, 92465280, 28722594, 72266048, 20849918, -22821846, 14979235, -50291384, -70203384,
+-13643500, -32733556, -21699248, 39222180, -1404454, 27280558, 49131204, -13698798, -1013612, -236223,
+-24768540, -7889318, -1636919, -18868866, 20863878, 7287486, -4755066, 33705292, 10920491, -5118528,
+32725504, -11718818, -34867080, 432718, -53312356, -37652368, 11656541, -35811436, 7718593, 40913860,
+30391188, 55863564, 61351460, 22018150, 21781926, -2854006, -50337016, -70839040, -72449120, -76120240,
+-48037060, -3928821, 24492588, 52068964, 91118808, 97281544, 81201192, 63106492, -3610457, -59942712,
+-85295904, -109619376, -111293344, -59787556, -17729624, 46332496, 98919536, 89058832, 54117660, 39574904,
+11865921, -8658654, -13118441, -39715024, -45245868, -34539052, -28333900, -20845624, -3913252, 3833795,
+16726213, 24142548, 25353192, 23786602, 22161494, 10681047, 805306, -8604430, -12870406, -19087908,
+-18429168, -14185740, -7497939, -3231963, 3518115, 6052146, 8740795, 6889665, 5964636, 4750234,
+4688494, 1338956, 1243930, 1018981, 423054, -2266132, -659814, -3400540, -6561100, -7131257,
+-6762963, -6407555, -265751, 1012002, 3613141, 7634841, 9371619, 8734890, 7911867, 2665027,
+-877247, -5407901, -8227010, -9317932, -7037304, -5051419, -1835562, 1433445, 4271345, 4689031,
+5375152, 4203699, 2879239, 1453846, -31139, -2088965, -1560147, -2231773, -1773822, -1399086,
+-1402307, -683974, 300648, -1142461, -682363, -148176, 590558, 1393180, 1385664, 1470489,
+2398739, 1546188, 823560, -73014, -1124745, -1881196, -1870458, -2114198, -1498407, -860067,
+-192200, 445603, 1000727, 1009854, 1067836, 875636, 597537, 151398, -43487, -292595,
+-419833, -466004, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-4391067,
-4664335, 1187559, -2494302, -1096290, -5590437, -1477469, 4733591, -2462627, -1784559, 1475858,
--703301, -151398, 329102, -1475321, -1174137, 5728950, 2807298, -668941, 312996, -823023,
--1668595, 810675, 2073396, 3163244, -766115, 1225139, 1484985, -5024575, -1511829, 13959,
--965294, 3120294, 319438, -1039382, 2825552, -2102387, 980326, 4348655, -2360622, 296890,
-618475, 3306051, -1226213, 4551592, -6383932, -2323577, 2834679, -1253594, -5404143, 409096,
-1133871, 1830730, 1903207, -571231, -2304787, 218506, -2087891, -1430761, 674847, 2711198,
-2522220, -3613678, 3234110, -3956202, 3587372, 216896, 3150896, -1197759, -2536178, -1127966,
-2131915, -391379, -489089, -617402, 2937221, -3111167, 1646046, 773631, 819265, 1000727,
-2357937, 750009, -1452773, -1677722, -892816, 1269700, -234613, -1230508, 277025, -1487132,
--290984, -98784, -1486059, -605054, -819265, 205622, 863288, -1025960, -699006, 430034,
--168577, -1469416, 27917, 805843, -529892, -71941, 345208, -134755, 622233, 421444,
-88584, -1111323, -325881, 41876, -457414, 30602, -75162, -779537, 486405, -1321239,
--212064, -15295989, 5012227, -5564667, -2221572, -4557497, -4678830, 2648384, -1565516, -3952981,
--2126546, 5358509, 7968775, -4369593, -1630477, -395137, -5750961, -5405753, 397821, -553514,
-3502546, 1174674, 2607045, -2310693, -1447941, -2991445, 833761, 5139465, 2228551, 992137,
--3325379, 2508261, 754304, 1531693, -2173254, 182536, 754304, 1147293, -2950106, -2162516,
-799401, -4073240, -4160750, 1772748, 3144990, -3552475, -1788854, -1376000, 248571, 3131568,
-2526515, 1085553, 470836, 8114267, 3184182, -2576981, 3156801, 2242510, -2263985, 3827353,
--1437203, -974421, -27917, -1685238, 3404299, -1932735, 889058, 2043868, 1640678, -3048890,
-1188632, 554051, 607201, -1074816, -1512902, -645319, 4757750, 303869, -1420024, -1035624,
-1116692, -4301947, 822486, 2538863, -173946, 1638530, -952409, -1560147, 1028108, 928787,
--408022, 1591285, 819265, -474594, 1131724, 1177895, 1987496, 243203, -2147, -158377,
--610422, -866510, -95563, -170188, -541166, 569620, -199716, 1958505, 11601780, 4604742,
--843961, 493384, 2632815, 1359894, -820339, -5062156, 129386, 4427038, -4610111, -545998,
--8622684, 2219961, 3464428, 198642, -2079301, 6244346, 4380867, -4080756, 1921998, 202937,
--3582003, 5568425, 3055332, -399969, 2229088, 5303748, -1689533, -1138166, 322659, -3221,
-93416, 1247151, 6521908, 1285269, 943819, -10635413, -595390, 447213, 1231582, -4832375,
-1075352, -3905199, -3005403, -4128537, -2709588, -11811, 1195612, -2537252, 2464238, -6126771,
--3534221, -408559, -117038, 1916629, -2477123, -605590, -2246805, 1285806, 3260954, -2032056,
-317291, -1764695, -351650, 5075578, 3967476, -1653026, 3715684, -1836635, -3238942, -4036733,
--339302, -410169, -2735894, 2397666, -468151, 656056, -338766, -927713, 142808, -614180,
--2226941, -178241, -3524558, 353798, -1757179, -1160715, -2968359, 3354906, -1083406, 1117228,
-2276870, 878321, -1224066, -315143, -1370095, -137976, 540629, -1347009, 1303523, -151934,
-102542, 151934, -525060, 749472, 413927, 206695, 53687, 1876364, 875100, -662499,
--1355599, -1236414, 1111323, 1516660, -54761, 353261, 1461363, 193274, 18290118, -8063801,
-1437203, -744103, -3461207, 2844879, 5075041, -3415573, 5461588, -377420, 5830418, 1563905,
-2011118, -2617246, 3273302, 1220845, 3353296, -7298223, 3797825, -4345433, 1264331, -3660923,
-4460324, -1310502, 4493610, -2756832, 1608465, -1832340, -469225, -274878, -533650, 1722282,
-9417253, 346819, 2713346, -2699924, -4471598, 112743, 12348, 113280, 1371705, -3121368,
-6152004, -468151, 5145908, 290984, -2329483, -2927020, -7901129, 3773666, 2477659, -3732864,
-335544, 3064996, 1594507, -9190693, 5373004, -379568, 3798362, -5549098, -5970005, -2934537,
--5816997, -1126355, 6565932, 1309428, -2617246, 324807, 3681861, -1334661, -3088082, -1637456,
--3454228, 2348810, -5199058, -973884, -4006668, -1573569, -92342, 4338454, 1998770, 413391,
-1302449, 5464809, 2834679, 608275, 1949915, -1633161, -690953, 302258, 27380, 816581,
-388158, -1021665, 467078, 1885491, -210990, 354335, 653372, -1010391, -1352915, 1158567,
--1604707, 1750199, 998580, 1616518, -35970, -710817, 958315, 1599875, 359704, -759136,
-468688, -114890, 4755603, -11307575, 2250563, -3597035, -10333691, -7978439, 4172561, 4654134,
-6145562, -3111704, -1634772, 4211753, 1993939, 6317360, 2032056, -760746, 610959, 4013110,
-7878581, -2079301, 2268280, -149250, 6376953, 1423245, -430570, -1340567, -4933844, -7499013,
-43487, -1125281, 2201171, -477278, 1716913, 1248225, 418759, 420907, 1447404, -2599529,
-250719, 3482682, 5504538, -2769180, 624918, -2447595, -3214783, 4515621, -3543885, -8805757,
--3470334, -2301566, 4171487, 288300, 4605816, 4175782, -2276333, 123480, -3658239, -569620,
--1586454, 5363878, -6866579, -264677, 2276870, -7309498, -8178155, 57445, 2492155, 5092758,
--3624953, -8692477, 4475893, -8026757, 9278203, 5185636, 1506997, 3893925, -117575, -3904125,
-11802570, -1150514, 5701032, -293668, 8249559, 5611375, 3002719, -919660, -1633698, -2852932,
--1043140, 1171989, 279710, 2206540, -2358474, 1343788, -1261647, -928787, -897111, -1038845,
-1104344, -678605, -38118, -1837172, -97711, 996432, 1978369, -2091112, -2467996, 258235,
-1069447, -104690, 1289027, -821949, 138513, -1051193, -324270, 584116, 1218697, 1418950,
-891743, -1286343, -1801739, -24828132, 5218922, 1346472, -12427488, -15704548, -2454574, -12104828,
-9996000, 2925410, -7265474, 546535, -3336653, 1189706, -4934381, 730144, -203474, 146029,
-7070053, -2409477, -1546725, -2826089, -2488397, -6501507, -4335770, 6700149, -2647847, 4269735,
--3599720, 1898376, 193274, 3867081, -3762928, 2950643, -3780645, 1774358, -1396401, -2320893,
-2473364, -6070400, 2449205, -3046206, -1045825, -4387309, 10903311, 5242545, 9570261, -3953518,
-4083440, 3313031, -1801739, 1781875, -4411469, 4861366, 10486163, 8319889, -5647345, -1439888,
-2519535, -4052302, -2704219, -7166690, -13508746, -4513474, 7052337, 2604361, -3271691, 1477469,
-797253, -3604551, -6373732, -6417218, 4715874, 640487, -9907953, 1164473, 1046898, -386547,
--664646, 3418257, 7326678, -633508, 74088, 1119376, 75162, -1798518, -6523519, 2294050,
-2308545, 1467268, 3168075, 1977833, -2745021, 838056, -1698123, 478889, -1423782, -496606,
--1584306, 154082, 455267, -88584, -1124745, -1059246, -273804, 627065, 40802, 2541547,
-948114, 2379949, 2532957, 2770254, -3103114, -3117073, -1132261, 2554432, -750009, 1010928,
--872952, 1463510, 1491427, 1029182, -1472637, -758599, -9820443, -4126390, -2596845, 7315403,
--2008434, 1695438, -7666517, -7990787, 336081, 2250026, -4704600, -2712272, -4418448, 8983998,
-1935420, -3074123, -6647536, -6548215, -6415608, -1812476, 3000035, 9029095, 2887829, 5085778,
--4127464, 9620727, 5462125, 1741609, 54224, 9898289, -5858873, 913217, 3092377, 6693170,
--10933376, -5565204, 4693326, 1887101, -1555315, 11317776, -5010080, 3189013, 6788196, 2109903,
-1098438, 4982699, 1979980, 2474438, 2494839, 1074816, 2882997, -175020, 4271345, -1008244,
-10546829, -7709467, 8670465, 6928319, -6088116, 6862821, 1218160, 5834176, 5852430, -12954695,
--392990, -516470, -3951907, 2076617, -3570192, 3597035, -1522566, 8267812, -951335, 1305670,
-3336653, 2330020, 3227668, -5259725, -1818919, -5374078, -5039071, -2850248, 7970386, 1210644,
--2604361, 2383170, 2161979, 1036161, -1401233, 852014, -1005559, 3178813, 1151051, 1022202,
--1576790, 994285, -3058017, -256624, 3455838, 1847373, -614180, 1188632, 1195075, -954020,
-1431298, 1021129, 3351685, 1900523, -1935420, -719407, -1166621, 1069984, -3064996, 916976,
-1617592, 1050120, -492311, -116501, -312996, 12948790, -3466576, -2046015, -3219078, 9214315,
-4817343, 957241, 3489124, -6283537, 13787382, 4551592, -1132261, 5191542, 6636798, -11316165,
--800475, 2646237, 1276142, -40265, 9507984, -4617627, -5847598, 13123809, 1939715, -955630,
--1356136, 6848862, 476741, -1018444, -1340567, -3211562, 3374234, -1997697, 4516695, 3197603,
--8337606, -7866233, 928787, 15503758, -240518, 3153043, -9630927, 4712653, 6315213, -3974455,
-4665945, 5851893, -9767829, -5937256, -1281511, -12445205, -6663105, -7431367, 2117956, -2552821,
--2824478, -1373316, 8677445, -11997454, 5228586, 2600066, -3960497, 7315940, -4758287, 699543,
--10145250, -214212, 6014565, 5469641, 11386495, -13548474, -3445638, -15040439, -3308736, -306553,
--3661460, 1685775, -820339, 13682155, 10536092, 6012954, -6898791, 349503, 2533494, 6669548,
-8116952, -187368, -58519, -1167694, 77846, 4668630, -325344, -402116, -288837, 85899,
-132607, 570157, 1791001, -1923609, -712428, 1956358, 217970, 1808718, -173409, 206158,
--1685238, 2483028, 1413581, 39728, 2211371, -1171452, -267362, 2183454, 462246, -360777,
--2818572, -168577, 482647, 406948, -1088774, 2801393, 4539781, -833761, -261456, -2084133,
-1409823, 8769249, -10027675, 240518, -6179921, 16931298, -7282117, -4216584, 14661945, 11037529,
-1971927, -20656108, -5105643, 9382893, 678068, -1069447, -3018825, -1701344, -1693828, 1357747,
-3096672, 2827162, 2674691, 18149458, -3893925, -2723546, -75162, 2302103, -5523865, 3126199,
-1845225, -758062, -6070937, -3836480, 6493454, 6972343, 13255343, 3335042, -5582921, 3295851,
--261993, 3342022, 158377, 7329362, -6260452, -9280351, -9577777, 6136972, -2796024, 1223529,
-2379949, -3466039, -721018, 15765751, 5317170, -13436268, 9411347, 2962991, 15946140, -8414378,
--7956964, 4568772, 8540006, 5894843, 3230352, -1546188, 407485, 4057670, -5323612, -1569274,
-73551, 6743099, -5036386, 13615583, -594316, -253940, -7175280, -8041253, 15543487, 4586488,
--12942347, -3068754, 10681584, 7416335, 1387274, 2646237, -6641093, 1984812, 1636383, 2042794,
-1090385, 2275259, -3110630, -3712462, 383863, -170188, -3117073, -1057636, 2698850, 2695092,
--4133369, 1009854, -104690, 1702955, 2313914, -725850, -806380, -1045825, 1530082, 4759898,
--3580929, 2600066, -322659, 67109, -2138894, -526134, -1616518, -1077500, 2209224, -845572,
--1436667, -3172370, -203474, -1816234, -12150999, -10302553, -3977677, 3834869, 3935264, 18884434,
-18333604, -2076080, 1525250, 861141, 186831, -155693, -3732864, -12221329, -9366250, -4810900,
-4392141, -3372086, -10630581, -2974802, 2075006, -742493, -16322486, -4762582, 3670050, -1625645,
-1595580, 1178432, 4964982, 7254200, 1211718, -5175436, 5358509, 5583458, 3937411, -170188,
-7217693, -14307610, 4855461, -12671764, 15897285, -11202348, 4376572, -11889006, -1934346, -13288629,
--7002944, -8264591, -8948027, 6213207, -7863012, -1481764, 2828236, -55298, -4169876, -2991982,
--1337346, -12998719, 475131, 897648, 6517613, -20317880, 528281, -485868, 9546102, 11460046,
--7704635, -4720169, 480499, 8813273, -16787954, 10829223, -7522099, -4968204, 871878, -16345035,
--798864, -1288490, -2515777, -2893734, -1999844, 16464220, 6747931, 3409667, -3888556, -3658775,
--4071092, 545998, 4078072, -6550362, -134755, -1116155, -1726577, 907312, 4898947, -1781338,
--3067681, 3099356, 1928977, -39192, 3454228, 1870458, 2901787, -1713155, -2165201, 4158602,
--2942590, 1088774, -3871376, -724776, 220117, -771484, -1440962, -3434900, -3760781, -4012036,
-1021665, -196495, -835371, -2886218, -2707440, -1101122, -1406602, 933082, 4152697, -1070521,
-3189550, -9531606, -25071334, -9928354, -4660577, 4534412, 6945499, -8129836, -2996277, -10262287,
--9047885, 4982699, -7934952, 8450885, 3511673, 6110128, -871342, -8043400, 14420353, 5820218,
-8126078, -10086731, 4449586, 2003065, -14788646, 9346386, 5623186, 681289, -10040560, -3771518,
-5100274, 5441187, -151398, 1963337, 7312719, -6945499, -5146445, 8642548, -16887812, -16604880,
--21915070, -4811437, 7137699, -19178640, -16043850, -9649718, 381715, 7067906, 2270964, 2080912,
-386547, -5463199, -7652558, -18105434, 9666361, 2836826, 22137872, -5163088, 620623, -13558675,
--16322486, 2200097, 10600516, 849330, -10291279, 6934225, 2789045, 15185931, 1503775, 2017561,
--7269769, -1261647, 6405407, -14654428, -27590870, -7573101, -6881612, 1613834, 7267622, -13095892,
--6684580, 4440460, -4612795, -944356, 4323422, -2426657, -2215666, 5813238, 1402844, -380641,
-2802466, 4546760, 4929549, 1074816, -3307125, -8645232, -805306, -5222680, 1450625, 1107028,
-1119376, 3774740, -3149822, 3444027, 4519380, 3164317, 2554969, 2675765, -6512781, -5819681,
--2263985, -4992900, 564251, 1605781, 1717450, 6241125, -1442572, 4020090, 2371359, -2421825,
--1340567, -3590593, -5059472, -1227287, -6664716, -2014340, -1513439, -23601920, -18136574, -8348343,
-12462921, -1093069, 21340082, 4207458, -1839320, -11985106, 4271882, 21969294, -22999550, -20730734,
--6832756, -3460670, -14418205, 13654238, 4018479, 7387881, 8864276, -14477798, -1707250, 5776731,
--9094056, 17026860, 263604, 3808562, -4951024, 4180614, -11256036, -6459094, -3860639, 6381248,
-3058017, 10333691, -16979616, 1487132, -118648, -12698071, 13836237, -8302709, -20205136, 3956739,
-7296613, 1430224, -6027450, -1510755, -8409009, 1345935, 6899328, 2884071, -13808320, 5366562,
--3139084, -15398531, -9062381, -18909130, 430034, -2988760, -491774, 2393371, 11579769, 14324790,
-11971684, -6175626, -10424422, 3391951, -2646774, -1816771, -8056822, 14902463, 12372727, -2717641,
-22986128, -14720464, 7668664, 14427332, 15607374, 356482, 9924596, -6486475, -2526515, -12930536,
--5437966, 7624641, -2612951, -10089415, 6255620, -5812165, 6572911, -3003256, -6832219, 3498788,
--1348083, -3987877, -2973191, 2546916, -3317862, 2211371, 4642860, -4944581, 6294275, -847719,
--3402688, 2263448, 770947, 326954, -2823941, 3592203, -5565741, 1826972, 2121714, 155693,
--3707631, -470836, -2190970, 2760590, 5219996, 11176579, 5734855, 8910983, -427886, -163209,
-4653597, -5819144, 1578937, -7868917, -3128347, 1632088, -77846, 8629126, -20440824, 2600066,
-248571, -12920872, 1893007, -28755342, -24869472, -5946382, -209380, 1081795, -617402, -10217727,
--348966, -2915746, 9210020, 1803886, -570157, 1735704, -21721260, 7521562, 4065187, 12070469,
-5016522, 5232881, 14181445, 7065758, 2063195, 35459788, 7596187, 13647259, 18824842, 886374,
-13280576, 3331284, -7354595, 8621073, 623844, 4153770, -7202660, 544387, -4668093, 3012920,
--4653060, 9978283, 1216013, -6199249, -7739531, 1073205, -21021718, 12233677, 8265665, -1066763,
--1889786, 4811437, -5576478, -4634807, -6885907, -8326868, 6970732, -6641630, 11508365, 13378286,
-13122199, 13944685, -3218004, -21117818, 355409, 8921721, 21322902, -4937065, -765578, 10098542,
-14898705, 21927956, -2822331, 9663676, -6467147, -3754338, -17592722, -13731010, -5982353, -6228240,
--5009006, 3684008, 786516, -7547868, 8579734, 5405753, 6747931, 12062953, 4849555, 4526359,
--1412507, 22549, -1757715, -3442416, 129386, 2183991, 38118, 6371047, 5112085, 3119757,
--334471, -5207648, 332323, -3736622, -4122095, 2666101, 3256659, 979253, -6470905, -1452236,
--9424232, -2290291, 3118146, 4695473, -2997887, 3906273, -5373004, -6272800, -3148211, -3776887,
-3529390, 1831804, -5498095, -3788698, 4334696, 16988206, 22158810, -17118666, -17897666, -23526220,
-20537460, -2530273, -8762270, 6920266, 6688338, 19213536, 15964393, 755377, 17536352, 25056840,
-6925635, -13197361, 11870216, -12233677, -6960532, -2749316, -8625368, -10310069, 4948876, -5333276,
--5237176, -12380243, 27333172, 3193845, -14928769, -256087, -2232846, 12104828, 12822088, 4907000,
--8830990, 12931073, -3810710, 7890392, -25463788, 1084479, 10260677, -11063836, 3400004, -12001749,
--9817758, 25817586, 10597295, 7624641, -2043331, -23314694, -5830955, 6449431, 4751845, 3503620,
--5695127, 18134962, -13133473, 9974525, -6289443, 6520297, 7216619, 14320495, 19439022, -23066658,
--821413, 11509975, 5478768, 16271484, 15773804, -23003308, -164283, -6534793, -12030740, -973884,
--12572443, 4844723, 9221832, -4836670, 16893716, -4092567, -10469520, -12660490, 10424959, 12000139,
-11942157, -3592203, 1880122, -952409, -17923972, -17355426, -16294569, 9685151, 4747013, 2918430,
-7730941, -791348, -4727149, 11810623, 1398012, -345208, 7130720, 11428371, 6812355, 610422,
-1010928, -3743601, 6835441, 3264712, 14686104, -1693828, 1529008, 10227391, 8244727, 2636573,
--1780264, 6426345, -508954, -1699196, 11523397, -9782862, 205085, 6984154, 274341, -2509872,
--3869766, -2132451, -335544, 7553774, 1170379, 233539, 8367670, 5995238, -5920613, 9008694,
--742493, 17474612, 34820372, 1487669, -16656957, 4702989, -11147051, 7209640, -9693204, -10420664,
-31601296, -23994908, 39680664, 24334210, -5879810, 8026220, 19164680, 2810519, -29950954, 11790759,
--24259050, 5810554, 2144799, -11931419, 498753, -1585380, 17303350, -8614094, -882616, -614180,
--5284421, 36644124, -2116345, -5440650, 4700842, 12383464, -12484396, -26266946, 20763482, -3259880,
--1603633, 23752780, -13944148, -3784403, -16599512, 4507568, -11606075, 13451301, 12321724, 25283398,
--7241852, 7124814, 16824460, -23817204, 2913599, -15144592, -24067386, -30656402, -16190416, -33152316,
--37402184, -5141076, 2401961, -17501992, -18950470, 11818676, -1347009, -10524280, -20430086, 14823543,
--10924249, 3932580, 18493592, -34799972, -10095321, -6311455, 15467788, 41845328, -19776176, 1320703,
--12563316, -18415210, 8956617, -22057342, 17832704, 31222802, -8901857, -14421963, -15436112, -3774740,
--3714073, 415001, 10065256, 7541963, -8226473, 8360154, -1065152, 6603512, 340913, -7427072,
--2184528, 9240622, -15162845, 7230578, -7963406, 2211908, -6491843, -2355253, -9146670, 2202245,
--8793946, -13475997, -6587406, 3349538, -10140955, 107911, 3004867, 15051176, -8663486, -4902169,
-4860829, 6280853, -10819023, -6586869, 3019899, -2792266, -5790153, 10549513, 1780801, -8006356,
-7228967, 2200097, -12628814, 2205466, -10137733, 11254425, -5009543, -16146393, -23897198, -18126372,
-20149302, -16412681, 8167954, 19173270, 8227010, 12325482, -22778360, 32864016, 20702816, 17939004,
--13154948, 23561116, -2527588, 15591805, 10277857, 3491272, 8537858, 11452530, 7012608, -3806415,
--5796595, -5209259, 2428804, -15786152, -18592914, 10523207, 4694936, 6119792, -15280420, 4208531,
-4733591, 11516955, 17190606, 25789668, -14487998, 3924526, 36719288, 7930120, 3999152, 3567507,
--7486128, 2713883, 36567888, 10611254, 23712514, 6760816, -25222732, -10516227, -18346490, 53014392,
-21607980, -20464982, -12752832, -18252000, 3168075, -11972221, -28715078, 6627672, -21725556, 32463510,
--2193655, -26851598, 35451732, 28683402, 4182225, -7786776, 4930623, -16341814, 21878564, 38927436,
--10314364, 18465138, 43622372, -6845641, -6976638, -4952634, 26605712, -1921461, -14515379, -13733158,
--13853954, -231928, -1603633, -12170327, 1091995, -5101885, 13479755, 3331821, -12712566, -8087961,
--14494441, -1584306, 2127620, -2375117, -10108206, -11415486, -7984881, 7165079, 12189117, 1890859,
--12406013, -1817845, 16103980, 132070, 14774687, 7697655, -8043937, -724776, -12566537, 12508019,
-5750961, -16385300, -30698278, 2848637, -1822677, -9343701, 10319196, -65498, -5203890, -4379793,
-3352759, 856309, -1029182, 9115531, -24970940, 10110890, -3297998, 25043954, -51946556, -35604204,
-20760798, 9997073, 7610145, 17634062, -17621714, -23039816, -12603582, -18955302, 10940355, -20349556,
-6131066, 13720273, 22494354, 863288, 18879602, 11020886, 3240553, -5854041, -19415936, -13703093,
-11577084, -23834384, 12357158, 2926483, 20566450, 15669651, -7459285, -29699698, -19206020, -1699733,
--1316944, -7782481, 20575040, -35932232, -2618320, 1352378, -37553584, -638340, -4469987, -2922725,
-4216584, 22176526, -21345988, -59222768, 22318798, 24248312, 14587856, 46336256, -37901476, -4814659,
-25881472, 19731080, -23719494, -11038603, -6410239, 36502928, 7356742, 34842384, -50130320, 7399692,
--59836412, -35893040, -34610456, 41309532, 13258027, -26564372, 24407226, 2877091, -23159538, 23787140,
--34737160, -36617816, 5665062, -38035156, 11483132, -65000036, 10116259, 20549808, -27515172, 30481920,
--13626857, -7323456, 20551956, -7013145, -5412733, -14496588, -877784, 4803921, 11416560, -1335735,
-10621991, 20511690, -15256261, -1692217, -12095165, 7294465, -7841000, -2143189, 4649302, 2508798,
-2920578, -2723546, 21300354, -7034083, 1877438, 9013526, -18485540, -16443282, -17946520, -8472360,
--30339112, -14048838, -10992969, 26229366, 5360119, 23334020, 10228465, 4667556, 10781979, 7347616,
-1107028, 8784819, 2032056, 18249852, 44950052, 16610786, -16135655, -10553272, 6184216, -11461120,
--13423383, -1633698, 20910048, -3674882, 3894999, -22293028, -4616016, 30690226, -22439594, 16955458,
-40130028, 20023674, -1712081, -7710003, -13203803, -25720948, -18878528, 22065932, -12602508, 20700668,
-14961519, 7066832, 983548, 8045011, -6394670, -32706176, -11316702, 23296976, 18521510, 19352048,
--20642150, 35582732, -9162239, 13797582, -26331908, 24070070, 41555420, -8421894, -14775761, -1597191,
-1544578, -9300752, 9098351, 18101676, -34057480, 22304838, 21725018, -5380521, 25182466, 13268228,
-10882373, -16025597, 3322694, 22436372, -47496432, -42395084, -17601850, 11143293, -21848498, -64404644,
-26989574, 17580912, -8313983, -10990284, 521839, -3849901, -22003654, -59170692, -3541201, 41887744,
-10222022, -7543037, -4983773, 8986682, 34403760, 27292906, -40303972, -16724603, 26954678, -5779952,
--10780368, -46201500, -2652679, 25220048, 8444443, -7184944, 15636902, -5883032, 1688996, -17457432,
--2811593, 10485089, 15910169, -9102109, -3221762, 3180423, 9220758, -5768141, 5694590, 669478,
--11227045, 6689412, 19344532, 3236795, 5810554, 3524021, 8762807, -9168681, -15887621, 1473174,
-17292076, -14201309, 6245956, -4848481, 1603097, -13773960, -26331908, -14427869, 9891847, 32053878,
--3217468, 15108621, -21206402, -9409736, -14315126, 8836895, 6314676, 10087268, -7185481, -11048266,
--705448, 2275259, 2543158, -4990752, -1094143, 21876416, 28997472, 645856, -32695976, 43296492,
--12164421, -30227442, 27084064, -4350802, -16445430, 20932060, 5602248, -4383014, 17657684, -24212342,
-22961968, -8206609, 770947, -7041599, -6015102, -33754148, 13364864, -12885976, 5316633, -13532905,
--1116692, -10089415, 9664750, -5911486, 36477696, 6444599, 23863912, -9286793, 5967320, 15083925,
--6406481, 10424422, -2068027, 18219252, -915902, -6125697, 28806882, -25742960, 14361834, 19684908,
--11556146, 22280142, -13641890, -558883, 11463805, -8722542, 26192858, 23450522, 4876399, 39027296,
--24055038, -55116240, -9276592, -34080564, -22546968, 80483392, -2050847, 24689620, -3757560, -33973192,
--875100, 33811056, 47887276, 29111826, 48238388, -25953950, -7763154, -11632382, -27542552, 18259516,
--7733626, -17004850, -1775969, -33431488, -61097520, 15374909, 21509196, -18087182, 12177306, -3808562,
--18226768, 19450834, 14328011, -7125351, 20042464, -7369090, -17895518, 9190156, -8886287, 23763518,
-2235531, 1773822, 13426068, 4476430, -15141907, -6352257, 7792682, -4988605, 14794015, -20637854,
-13316009, -21638046, -5512591, 5394479, -15358803, 9801115, 616328, -23051626, -3736622, 1487132,
--6192269, -56908, -4310537, -16911970, 6922414, 5073967, -2695629, 16983912, 26029650, -14187888,
--20310364, -1296543, -9691057, 28168544, 28918014, -17043504, -10807211, -3547106, -14343043, 303332,
-5078262, 24316494, -26086558, 30828202, -18967112, 4054449, -286689, 3002719, -24087788, -3908957,
--21809844, -18073222, -164819, -7254737, -16511465, -6709813, 11710228, -14115947, 10772852, -6780143,
-33152852, -15672336, 9739912, 1817308, -8533026, -27012124, -10067403, 20215338, 3454228, -6884833,
-26531624, -20007032, -20233590, -2927557, 25322054, -23447300, -3491809, 4361540, 6694244, -26088706,
-7548942, 8794482, -9502078, -27270358, 239444, -21219822, 8659191, 4585415, 7814693, -41576896,
--17940078, 23408108, 63411436, -29018410, -4235912, 4935455, -11002096, -18170932, -610959, 52993452,
-11999065, -5611912, -4932233, -14249091, -3526168, -10955388, 20371030, 894427, -13431436, -14331232,
-479426, 9354976, -21470004, 16376710, 4645544, 17871358, 457951, 22781044, 9385040, -16181826,
-21297132, 20402706, 50659140, 16041703, 3688303, 5086852, -18860812, 6059125, 16394964, 17063906,
-5684926, -1347546, 399432, -2215666, 6163815, 7032472, -1945083, 9128953, -2645163, -1082869,
-17333952, 7344931, 2768643, -5389647, 4954245, 13193603, 13761612, 15983721, 5592585, 5794448,
--9279814, -183073, -777389, 2837363, 8851391, -484794, -7463043, 8156680, -7808788, 6771016,
--583042, 8011725, 967441, -6762963, -2097018, 446677, 1612760, 3942780, -1212255, 2799782,
-1945620, -196495, -40537512, 53643068, 7337415, 12146168, 12811351, -12495670, -14384919, 426276,
--5592048, 7551090, 17619566, -24947854, 8150238, -5335423, 6385543, 5953899, 4134443, 14069239,
-11011222, -10697153, 9893457, 8563628, -8671002, -14944876, 4466766, -5371394, -12380243, 7268159,
-5987185, -1149441, -8115341, 118112, -5932961, -2963528, 504659, 3087008, 5592048, -11216844,
--1712081, 8773008, -4029753, 7859790, 1466731, 5636071, 11611444, 3329674, -11976516, 1123134,
-11078868, -6448357, -640487, 5268851, -19002546, -1281511, -4741107, -17792976, 24368570, -6346888,
--1074816, 14359149, 2432562, -11038066, 4249334, -10558103, -2154463, 7921531, -9815611, -3675418,
-18008262, -19323058, 2001992, 1576253, 6516539, -8672613, 5764383, -3077881, 5370857, -7465727,
-298500, -1924682, 18149994, -8460549, -859530, 4582730, -9229348, -1048509, 12556337, -2824478,
-8082592, -5710159, -5252745, 769873, 4847408, -4970888, 9257802, -238908, -2066416, -2197413,
--2965675, -3102577, 7895761, -6932614, 7729868, 4061965, -10228465, 2270964, -1060857, -1056562,
-5986648, -8683887, -3437048, 1051730, -5683853, 5700496, -5844377, -1050656, 9590662, 1530082,
--1817308, 4177930, -4844723, -4045322, -2358474, 4463008, 8000987, -2683281, -2321967, 663036,
--6920266, 12566537, -53253300, -108307264, -13989245, 67903432, 52196736, 149959328, 72122704, -35019016,
--30605400, -71170296, -124615256, -15794742, -48343616, -15032922, 87898120, 56021404, 59797220, 114428664,
--4062502, -25382182, -43229920, -113250768, -62542776, -20146618, -21087216, 3111167, 51484308, 39875012,
-42315628, 79861160, 46699180, -29411400, 42543260, -44788456, -104469712, 13327820, -70131448, -97534416,
-37977176, -8404177, -18119394, 119859112, 39222180, 31841276, 103282688, -11120744, -20380156, 31424666,
--69305200, -86073832, -23197118, -73705936, -65904124, 13931263, 14219026, 29746406, 90103048, 79825192,
-48316236, 57248692, 11023034, -45193792, -48700636, -60234232, -82812336, -38665980, -21061446, -28143846,
-24955908, 79723720, 52005076, 51399484, 42216308, -29825326, -382252, 8392366, -68357624, -28177670,
--17176648, -20016696, 31268436, 16009491, -3986804, 25593174, -6003291, -5350993, 4320200, -18446348,
--13955422, 9077413, -11476689, 18545668, 23288386, -8722542, 12600897, 23779086, -13936632, 15570867,
-7737921, -46506444, 8170102, -15108621, -50536732, 765578, -28885802, -25812754, 36658620, 39727372,
-38316476, 71102648, 22617834, 22623740, 24065238, -31128850, -62147104, -69342248, -88809720, -66136592,
--19991462, 11570105, 53782656, 89197880, 98794984, 77186464, 56215752, 11107322, -52376588, -78829832,
--96288336, -89441624, -46396384, -2952253, 25212532, 64072860, 59112708, 32298690, 32434520, 12625056,
--912144, -186294, -10008348, -19592568, -16251083, -20317880, -24624658, -18060338, -13399761, -3456375,
-6895570, 16695612, 20103132, 21766894, 18805514, 13237626, 6739341, -35433, -10909217, -18176302,
--16645146, -11653320, -8116415, -6350109, -1699733, 2315524, 7962870, 9302362, 6191732, 5869073,
-5098126, 2101313, 2913062, 2610266, -3103651, -4044249, -1980517, -3850438, -3483219, -5171678,
--6981470, -3368865, 298500, 693637, 3617436, 5631239, 5721434, 6972343, 5208722, 1904818,
--717796, -3526705, -4970888, -4906464, -4493610, -4117263, -2047626, 840740, 2229625, 2108292,
-2018635, 1798518, 1785096, 1616518, 572841, 127238, 437550, 316754, 164283, -168577,
--993748, -1340567, -2186138, -2949032, -2353105, -1235340, 207232, 1484448, 2149094, 2724620,
-2834142, 1893544, 1155883, 581968, -1116692, -1840394, -1715303, -1751810, -1512902, -962610,
--784368, -62277, 495532, 667867, 862752, 912681, 585726, 301185, 42950, -235686,
--376883, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+4664335, 1187559, -2494302, -1096290, -5590437, -1477469, 4733591, -2462627, -1784559, 1475858,
+-703301, -151398, 329102, -1475321, -1174137, 5728950, 2807298, -668941, 312996, -823023,
+-1668595, 810675, 2073396, 3163244, -766115, 1225139, 1484985, -5024575, -1511829, 13959,
+-965294, 3120294, 319438, -1039382, 2825552, -2102387, 980326, 4348655, -2360622, 296890,
+618475, 3306051, -1226213, 4551592, -6383932, -2323577, 2834679, -1253594, -5404143, 409096,
+1133871, 1830730, 1903207, -571231, -2304787, 218506, -2087891, -1430761, 674847, 2711198,
+2522220, -3613678, 3234110, -3956202, 3587372, 216896, 3150896, -1197759, -2536178, -1127966,
+2131915, -391379, -489089, -617402, 2937221, -3111167, 1646046, 773631, 819265, 1000727,
+2357937, 750009, -1452773, -1677722, -892816, 1269700, -234613, -1230508, 277025, -1487132,
+-290984, -98784, -1486059, -605054, -819265, 205622, 863288, -1025960, -699006, 430034,
+-168577, -1469416, 27917, 805843, -529892, -71941, 345208, -134755, 622233, 421444,
+88584, -1111323, -325881, 41876, -457414, 30602, -75162, -779537, 486405, -1321239,
+-212064, -15295989, 5012227, -5564667, -2221572, -4557497, -4678830, 2648384, -1565516, -3952981,
+-2126546, 5358509, 7968775, -4369593, -1630477, -395137, -5750961, -5405753, 397821, -553514,
+3502546, 1174674, 2607045, -2310693, -1447941, -2991445, 833761, 5139465, 2228551, 992137,
+-3325379, 2508261, 754304, 1531693, -2173254, 182536, 754304, 1147293, -2950106, -2162516,
+799401, -4073240, -4160750, 1772748, 3144990, -3552475, -1788854, -1376000, 248571, 3131568,
+2526515, 1085553, 470836, 8114267, 3184182, -2576981, 3156801, 2242510, -2263985, 3827353,
+-1437203, -974421, -27917, -1685238, 3404299, -1932735, 889058, 2043868, 1640678, -3048890,
+1188632, 554051, 607201, -1074816, -1512902, -645319, 4757750, 303869, -1420024, -1035624,
+1116692, -4301947, 822486, 2538863, -173946, 1638530, -952409, -1560147, 1028108, 928787,
+-408022, 1591285, 819265, -474594, 1131724, 1177895, 1987496, 243203, -2147, -158377,
+-610422, -866510, -95563, -170188, -541166, 569620, -199716, 1958505, 11601780, 4604742,
+-843961, 493384, 2632815, 1359894, -820339, -5062156, 129386, 4427038, -4610111, -545998,
+-8622684, 2219961, 3464428, 198642, -2079301, 6244346, 4380867, -4080756, 1921998, 202937,
+-3582003, 5568425, 3055332, -399969, 2229088, 5303748, -1689533, -1138166, 322659, -3221,
+93416, 1247151, 6521908, 1285269, 943819, -10635413, -595390, 447213, 1231582, -4832375,
+1075352, -3905199, -3005403, -4128537, -2709588, -11811, 1195612, -2537252, 2464238, -6126771,
+-3534221, -408559, -117038, 1916629, -2477123, -605590, -2246805, 1285806, 3260954, -2032056,
+317291, -1764695, -351650, 5075578, 3967476, -1653026, 3715684, -1836635, -3238942, -4036733,
+-339302, -410169, -2735894, 2397666, -468151, 656056, -338766, -927713, 142808, -614180,
+-2226941, -178241, -3524558, 353798, -1757179, -1160715, -2968359, 3354906, -1083406, 1117228,
+2276870, 878321, -1224066, -315143, -1370095, -137976, 540629, -1347009, 1303523, -151934,
+102542, 151934, -525060, 749472, 413927, 206695, 53687, 1876364, 875100, -662499,
+-1355599, -1236414, 1111323, 1516660, -54761, 353261, 1461363, 193274, 18290118, -8063801,
+1437203, -744103, -3461207, 2844879, 5075041, -3415573, 5461588, -377420, 5830418, 1563905,
+2011118, -2617246, 3273302, 1220845, 3353296, -7298223, 3797825, -4345433, 1264331, -3660923,
+4460324, -1310502, 4493610, -2756832, 1608465, -1832340, -469225, -274878, -533650, 1722282,
+9417253, 346819, 2713346, -2699924, -4471598, 112743, 12348, 113280, 1371705, -3121368,
+6152004, -468151, 5145908, 290984, -2329483, -2927020, -7901129, 3773666, 2477659, -3732864,
+335544, 3064996, 1594507, -9190693, 5373004, -379568, 3798362, -5549098, -5970005, -2934537,
+-5816997, -1126355, 6565932, 1309428, -2617246, 324807, 3681861, -1334661, -3088082, -1637456,
+-3454228, 2348810, -5199058, -973884, -4006668, -1573569, -92342, 4338454, 1998770, 413391,
+1302449, 5464809, 2834679, 608275, 1949915, -1633161, -690953, 302258, 27380, 816581,
+388158, -1021665, 467078, 1885491, -210990, 354335, 653372, -1010391, -1352915, 1158567,
+-1604707, 1750199, 998580, 1616518, -35970, -710817, 958315, 1599875, 359704, -759136,
+468688, -114890, 4755603, -11307575, 2250563, -3597035, -10333691, -7978439, 4172561, 4654134,
+6145562, -3111704, -1634772, 4211753, 1993939, 6317360, 2032056, -760746, 610959, 4013110,
+7878581, -2079301, 2268280, -149250, 6376953, 1423245, -430570, -1340567, -4933844, -7499013,
+43487, -1125281, 2201171, -477278, 1716913, 1248225, 418759, 420907, 1447404, -2599529,
+250719, 3482682, 5504538, -2769180, 624918, -2447595, -3214783, 4515621, -3543885, -8805757,
+-3470334, -2301566, 4171487, 288300, 4605816, 4175782, -2276333, 123480, -3658239, -569620,
+-1586454, 5363878, -6866579, -264677, 2276870, -7309498, -8178155, 57445, 2492155, 5092758,
+-3624953, -8692477, 4475893, -8026757, 9278203, 5185636, 1506997, 3893925, -117575, -3904125,
+11802570, -1150514, 5701032, -293668, 8249559, 5611375, 3002719, -919660, -1633698, -2852932,
+-1043140, 1171989, 279710, 2206540, -2358474, 1343788, -1261647, -928787, -897111, -1038845,
+1104344, -678605, -38118, -1837172, -97711, 996432, 1978369, -2091112, -2467996, 258235,
+1069447, -104690, 1289027, -821949, 138513, -1051193, -324270, 584116, 1218697, 1418950,
+891743, -1286343, -1801739, -24828132, 5218922, 1346472, -12427488, -15704548, -2454574, -12104828,
+9996000, 2925410, -7265474, 546535, -3336653, 1189706, -4934381, 730144, -203474, 146029,
+7070053, -2409477, -1546725, -2826089, -2488397, -6501507, -4335770, 6700149, -2647847, 4269735,
+-3599720, 1898376, 193274, 3867081, -3762928, 2950643, -3780645, 1774358, -1396401, -2320893,
+2473364, -6070400, 2449205, -3046206, -1045825, -4387309, 10903311, 5242545, 9570261, -3953518,
+4083440, 3313031, -1801739, 1781875, -4411469, 4861366, 10486163, 8319889, -5647345, -1439888,
+2519535, -4052302, -2704219, -7166690, -13508746, -4513474, 7052337, 2604361, -3271691, 1477469,
+797253, -3604551, -6373732, -6417218, 4715874, 640487, -9907953, 1164473, 1046898, -386547,
+-664646, 3418257, 7326678, -633508, 74088, 1119376, 75162, -1798518, -6523519, 2294050,
+2308545, 1467268, 3168075, 1977833, -2745021, 838056, -1698123, 478889, -1423782, -496606,
+-1584306, 154082, 455267, -88584, -1124745, -1059246, -273804, 627065, 40802, 2541547,
+948114, 2379949, 2532957, 2770254, -3103114, -3117073, -1132261, 2554432, -750009, 1010928,
+-872952, 1463510, 1491427, 1029182, -1472637, -758599, -9820443, -4126390, -2596845, 7315403,
+-2008434, 1695438, -7666517, -7990787, 336081, 2250026, -4704600, -2712272, -4418448, 8983998,
+1935420, -3074123, -6647536, -6548215, -6415608, -1812476, 3000035, 9029095, 2887829, 5085778,
+-4127464, 9620727, 5462125, 1741609, 54224, 9898289, -5858873, 913217, 3092377, 6693170,
+-10933376, -5565204, 4693326, 1887101, -1555315, 11317776, -5010080, 3189013, 6788196, 2109903,
+1098438, 4982699, 1979980, 2474438, 2494839, 1074816, 2882997, -175020, 4271345, -1008244,
+10546829, -7709467, 8670465, 6928319, -6088116, 6862821, 1218160, 5834176, 5852430, -12954695,
+-392990, -516470, -3951907, 2076617, -3570192, 3597035, -1522566, 8267812, -951335, 1305670,
+3336653, 2330020, 3227668, -5259725, -1818919, -5374078, -5039071, -2850248, 7970386, 1210644,
+-2604361, 2383170, 2161979, 1036161, -1401233, 852014, -1005559, 3178813, 1151051, 1022202,
+-1576790, 994285, -3058017, -256624, 3455838, 1847373, -614180, 1188632, 1195075, -954020,
+1431298, 1021129, 3351685, 1900523, -1935420, -719407, -1166621, 1069984, -3064996, 916976,
+1617592, 1050120, -492311, -116501, -312996, 12948790, -3466576, -2046015, -3219078, 9214315,
+4817343, 957241, 3489124, -6283537, 13787382, 4551592, -1132261, 5191542, 6636798, -11316165,
+-800475, 2646237, 1276142, -40265, 9507984, -4617627, -5847598, 13123809, 1939715, -955630,
+-1356136, 6848862, 476741, -1018444, -1340567, -3211562, 3374234, -1997697, 4516695, 3197603,
+-8337606, -7866233, 928787, 15503758, -240518, 3153043, -9630927, 4712653, 6315213, -3974455,
+4665945, 5851893, -9767829, -5937256, -1281511, -12445205, -6663105, -7431367, 2117956, -2552821,
+-2824478, -1373316, 8677445, -11997454, 5228586, 2600066, -3960497, 7315940, -4758287, 699543,
+-10145250, -214212, 6014565, 5469641, 11386495, -13548474, -3445638, -15040439, -3308736, -306553,
+-3661460, 1685775, -820339, 13682155, 10536092, 6012954, -6898791, 349503, 2533494, 6669548,
+8116952, -187368, -58519, -1167694, 77846, 4668630, -325344, -402116, -288837, 85899,
+132607, 570157, 1791001, -1923609, -712428, 1956358, 217970, 1808718, -173409, 206158,
+-1685238, 2483028, 1413581, 39728, 2211371, -1171452, -267362, 2183454, 462246, -360777,
+-2818572, -168577, 482647, 406948, -1088774, 2801393, 4539781, -833761, -261456, -2084133,
+1409823, 8769249, -10027675, 240518, -6179921, 16931298, -7282117, -4216584, 14661945, 11037529,
+1971927, -20656108, -5105643, 9382893, 678068, -1069447, -3018825, -1701344, -1693828, 1357747,
+3096672, 2827162, 2674691, 18149458, -3893925, -2723546, -75162, 2302103, -5523865, 3126199,
+1845225, -758062, -6070937, -3836480, 6493454, 6972343, 13255343, 3335042, -5582921, 3295851,
+-261993, 3342022, 158377, 7329362, -6260452, -9280351, -9577777, 6136972, -2796024, 1223529,
+2379949, -3466039, -721018, 15765751, 5317170, -13436268, 9411347, 2962991, 15946140, -8414378,
+-7956964, 4568772, 8540006, 5894843, 3230352, -1546188, 407485, 4057670, -5323612, -1569274,
+73551, 6743099, -5036386, 13615583, -594316, -253940, -7175280, -8041253, 15543487, 4586488,
+-12942347, -3068754, 10681584, 7416335, 1387274, 2646237, -6641093, 1984812, 1636383, 2042794,
+1090385, 2275259, -3110630, -3712462, 383863, -170188, -3117073, -1057636, 2698850, 2695092,
+-4133369, 1009854, -104690, 1702955, 2313914, -725850, -806380, -1045825, 1530082, 4759898,
+-3580929, 2600066, -322659, 67109, -2138894, -526134, -1616518, -1077500, 2209224, -845572,
+-1436667, -3172370, -203474, -1816234, -12150999, -10302553, -3977677, 3834869, 3935264, 18884434,
+18333604, -2076080, 1525250, 861141, 186831, -155693, -3732864, -12221329, -9366250, -4810900,
+4392141, -3372086, -10630581, -2974802, 2075006, -742493, -16322486, -4762582, 3670050, -1625645,
+1595580, 1178432, 4964982, 7254200, 1211718, -5175436, 5358509, 5583458, 3937411, -170188,
+7217693, -14307610, 4855461, -12671764, 15897285, -11202348, 4376572, -11889006, -1934346, -13288629,
+-7002944, -8264591, -8948027, 6213207, -7863012, -1481764, 2828236, -55298, -4169876, -2991982,
+-1337346, -12998719, 475131, 897648, 6517613, -20317880, 528281, -485868, 9546102, 11460046,
+-7704635, -4720169, 480499, 8813273, -16787954, 10829223, -7522099, -4968204, 871878, -16345035,
+-798864, -1288490, -2515777, -2893734, -1999844, 16464220, 6747931, 3409667, -3888556, -3658775,
+-4071092, 545998, 4078072, -6550362, -134755, -1116155, -1726577, 907312, 4898947, -1781338,
+-3067681, 3099356, 1928977, -39192, 3454228, 1870458, 2901787, -1713155, -2165201, 4158602,
+-2942590, 1088774, -3871376, -724776, 220117, -771484, -1440962, -3434900, -3760781, -4012036,
+1021665, -196495, -835371, -2886218, -2707440, -1101122, -1406602, 933082, 4152697, -1070521,
+3189550, -9531606, -25071334, -9928354, -4660577, 4534412, 6945499, -8129836, -2996277, -10262287,
+-9047885, 4982699, -7934952, 8450885, 3511673, 6110128, -871342, -8043400, 14420353, 5820218,
+8126078, -10086731, 4449586, 2003065, -14788646, 9346386, 5623186, 681289, -10040560, -3771518,
+5100274, 5441187, -151398, 1963337, 7312719, -6945499, -5146445, 8642548, -16887812, -16604880,
+-21915070, -4811437, 7137699, -19178640, -16043850, -9649718, 381715, 7067906, 2270964, 2080912,
+386547, -5463199, -7652558, -18105434, 9666361, 2836826, 22137872, -5163088, 620623, -13558675,
+-16322486, 2200097, 10600516, 849330, -10291279, 6934225, 2789045, 15185931, 1503775, 2017561,
+-7269769, -1261647, 6405407, -14654428, -27590870, -7573101, -6881612, 1613834, 7267622, -13095892,
+-6684580, 4440460, -4612795, -944356, 4323422, -2426657, -2215666, 5813238, 1402844, -380641,
+2802466, 4546760, 4929549, 1074816, -3307125, -8645232, -805306, -5222680, 1450625, 1107028,
+1119376, 3774740, -3149822, 3444027, 4519380, 3164317, 2554969, 2675765, -6512781, -5819681,
+-2263985, -4992900, 564251, 1605781, 1717450, 6241125, -1442572, 4020090, 2371359, -2421825,
+-1340567, -3590593, -5059472, -1227287, -6664716, -2014340, -1513439, -23601920, -18136574, -8348343,
+12462921, -1093069, 21340082, 4207458, -1839320, -11985106, 4271882, 21969294, -22999550, -20730734,
+-6832756, -3460670, -14418205, 13654238, 4018479, 7387881, 8864276, -14477798, -1707250, 5776731,
+-9094056, 17026860, 263604, 3808562, -4951024, 4180614, -11256036, -6459094, -3860639, 6381248,
+3058017, 10333691, -16979616, 1487132, -118648, -12698071, 13836237, -8302709, -20205136, 3956739,
+7296613, 1430224, -6027450, -1510755, -8409009, 1345935, 6899328, 2884071, -13808320, 5366562,
+-3139084, -15398531, -9062381, -18909130, 430034, -2988760, -491774, 2393371, 11579769, 14324790,
+11971684, -6175626, -10424422, 3391951, -2646774, -1816771, -8056822, 14902463, 12372727, -2717641,
+22986128, -14720464, 7668664, 14427332, 15607374, 356482, 9924596, -6486475, -2526515, -12930536,
+-5437966, 7624641, -2612951, -10089415, 6255620, -5812165, 6572911, -3003256, -6832219, 3498788,
+-1348083, -3987877, -2973191, 2546916, -3317862, 2211371, 4642860, -4944581, 6294275, -847719,
+-3402688, 2263448, 770947, 326954, -2823941, 3592203, -5565741, 1826972, 2121714, 155693,
+-3707631, -470836, -2190970, 2760590, 5219996, 11176579, 5734855, 8910983, -427886, -163209,
+4653597, -5819144, 1578937, -7868917, -3128347, 1632088, -77846, 8629126, -20440824, 2600066,
+248571, -12920872, 1893007, -28755342, -24869472, -5946382, -209380, 1081795, -617402, -10217727,
+-348966, -2915746, 9210020, 1803886, -570157, 1735704, -21721260, 7521562, 4065187, 12070469,
+5016522, 5232881, 14181445, 7065758, 2063195, 35459788, 7596187, 13647259, 18824842, 886374,
+13280576, 3331284, -7354595, 8621073, 623844, 4153770, -7202660, 544387, -4668093, 3012920,
+-4653060, 9978283, 1216013, -6199249, -7739531, 1073205, -21021718, 12233677, 8265665, -1066763,
+-1889786, 4811437, -5576478, -4634807, -6885907, -8326868, 6970732, -6641630, 11508365, 13378286,
+13122199, 13944685, -3218004, -21117818, 355409, 8921721, 21322902, -4937065, -765578, 10098542,
+14898705, 21927956, -2822331, 9663676, -6467147, -3754338, -17592722, -13731010, -5982353, -6228240,
+-5009006, 3684008, 786516, -7547868, 8579734, 5405753, 6747931, 12062953, 4849555, 4526359,
+-1412507, 22549, -1757715, -3442416, 129386, 2183991, 38118, 6371047, 5112085, 3119757,
+-334471, -5207648, 332323, -3736622, -4122095, 2666101, 3256659, 979253, -6470905, -1452236,
+-9424232, -2290291, 3118146, 4695473, -2997887, 3906273, -5373004, -6272800, -3148211, -3776887,
+3529390, 1831804, -5498095, -3788698, 4334696, 16988206, 22158810, -17118666, -17897666, -23526220,
+20537460, -2530273, -8762270, 6920266, 6688338, 19213536, 15964393, 755377, 17536352, 25056840,
+6925635, -13197361, 11870216, -12233677, -6960532, -2749316, -8625368, -10310069, 4948876, -5333276,
+-5237176, -12380243, 27333172, 3193845, -14928769, -256087, -2232846, 12104828, 12822088, 4907000,
+-8830990, 12931073, -3810710, 7890392, -25463788, 1084479, 10260677, -11063836, 3400004, -12001749,
+-9817758, 25817586, 10597295, 7624641, -2043331, -23314694, -5830955, 6449431, 4751845, 3503620,
+-5695127, 18134962, -13133473, 9974525, -6289443, 6520297, 7216619, 14320495, 19439022, -23066658,
+-821413, 11509975, 5478768, 16271484, 15773804, -23003308, -164283, -6534793, -12030740, -973884,
+-12572443, 4844723, 9221832, -4836670, 16893716, -4092567, -10469520, -12660490, 10424959, 12000139,
+11942157, -3592203, 1880122, -952409, -17923972, -17355426, -16294569, 9685151, 4747013, 2918430,
+7730941, -791348, -4727149, 11810623, 1398012, -345208, 7130720, 11428371, 6812355, 610422,
+1010928, -3743601, 6835441, 3264712, 14686104, -1693828, 1529008, 10227391, 8244727, 2636573,
+-1780264, 6426345, -508954, -1699196, 11523397, -9782862, 205085, 6984154, 274341, -2509872,
+-3869766, -2132451, -335544, 7553774, 1170379, 233539, 8367670, 5995238, -5920613, 9008694,
+-742493, 17474612, 34820372, 1487669, -16656957, 4702989, -11147051, 7209640, -9693204, -10420664,
+31601296, -23994908, 39680664, 24334210, -5879810, 8026220, 19164680, 2810519, -29950954, 11790759,
+-24259050, 5810554, 2144799, -11931419, 498753, -1585380, 17303350, -8614094, -882616, -614180,
+-5284421, 36644124, -2116345, -5440650, 4700842, 12383464, -12484396, -26266946, 20763482, -3259880,
+-1603633, 23752780, -13944148, -3784403, -16599512, 4507568, -11606075, 13451301, 12321724, 25283398,
+-7241852, 7124814, 16824460, -23817204, 2913599, -15144592, -24067386, -30656402, -16190416, -33152316,
+-37402184, -5141076, 2401961, -17501992, -18950470, 11818676, -1347009, -10524280, -20430086, 14823543,
+-10924249, 3932580, 18493592, -34799972, -10095321, -6311455, 15467788, 41845328, -19776176, 1320703,
+-12563316, -18415210, 8956617, -22057342, 17832704, 31222802, -8901857, -14421963, -15436112, -3774740,
+-3714073, 415001, 10065256, 7541963, -8226473, 8360154, -1065152, 6603512, 340913, -7427072,
+-2184528, 9240622, -15162845, 7230578, -7963406, 2211908, -6491843, -2355253, -9146670, 2202245,
+-8793946, -13475997, -6587406, 3349538, -10140955, 107911, 3004867, 15051176, -8663486, -4902169,
+4860829, 6280853, -10819023, -6586869, 3019899, -2792266, -5790153, 10549513, 1780801, -8006356,
+7228967, 2200097, -12628814, 2205466, -10137733, 11254425, -5009543, -16146393, -23897198, -18126372,
+20149302, -16412681, 8167954, 19173270, 8227010, 12325482, -22778360, 32864016, 20702816, 17939004,
+-13154948, 23561116, -2527588, 15591805, 10277857, 3491272, 8537858, 11452530, 7012608, -3806415,
+-5796595, -5209259, 2428804, -15786152, -18592914, 10523207, 4694936, 6119792, -15280420, 4208531,
+4733591, 11516955, 17190606, 25789668, -14487998, 3924526, 36719288, 7930120, 3999152, 3567507,
+-7486128, 2713883, 36567888, 10611254, 23712514, 6760816, -25222732, -10516227, -18346490, 53014392,
+21607980, -20464982, -12752832, -18252000, 3168075, -11972221, -28715078, 6627672, -21725556, 32463510,
+-2193655, -26851598, 35451732, 28683402, 4182225, -7786776, 4930623, -16341814, 21878564, 38927436,
+-10314364, 18465138, 43622372, -6845641, -6976638, -4952634, 26605712, -1921461, -14515379, -13733158,
+-13853954, -231928, -1603633, -12170327, 1091995, -5101885, 13479755, 3331821, -12712566, -8087961,
+-14494441, -1584306, 2127620, -2375117, -10108206, -11415486, -7984881, 7165079, 12189117, 1890859,
+-12406013, -1817845, 16103980, 132070, 14774687, 7697655, -8043937, -724776, -12566537, 12508019,
+5750961, -16385300, -30698278, 2848637, -1822677, -9343701, 10319196, -65498, -5203890, -4379793,
+3352759, 856309, -1029182, 9115531, -24970940, 10110890, -3297998, 25043954, -51946556, -35604204,
+20760798, 9997073, 7610145, 17634062, -17621714, -23039816, -12603582, -18955302, 10940355, -20349556,
+6131066, 13720273, 22494354, 863288, 18879602, 11020886, 3240553, -5854041, -19415936, -13703093,
+11577084, -23834384, 12357158, 2926483, 20566450, 15669651, -7459285, -29699698, -19206020, -1699733,
+-1316944, -7782481, 20575040, -35932232, -2618320, 1352378, -37553584, -638340, -4469987, -2922725,
+4216584, 22176526, -21345988, -59222768, 22318798, 24248312, 14587856, 46336256, -37901476, -4814659,
+25881472, 19731080, -23719494, -11038603, -6410239, 36502928, 7356742, 34842384, -50130320, 7399692,
+-59836412, -35893040, -34610456, 41309532, 13258027, -26564372, 24407226, 2877091, -23159538, 23787140,
+-34737160, -36617816, 5665062, -38035156, 11483132, -65000036, 10116259, 20549808, -27515172, 30481920,
+-13626857, -7323456, 20551956, -7013145, -5412733, -14496588, -877784, 4803921, 11416560, -1335735,
+10621991, 20511690, -15256261, -1692217, -12095165, 7294465, -7841000, -2143189, 4649302, 2508798,
+2920578, -2723546, 21300354, -7034083, 1877438, 9013526, -18485540, -16443282, -17946520, -8472360,
+-30339112, -14048838, -10992969, 26229366, 5360119, 23334020, 10228465, 4667556, 10781979, 7347616,
+1107028, 8784819, 2032056, 18249852, 44950052, 16610786, -16135655, -10553272, 6184216, -11461120,
+-13423383, -1633698, 20910048, -3674882, 3894999, -22293028, -4616016, 30690226, -22439594, 16955458,
+40130028, 20023674, -1712081, -7710003, -13203803, -25720948, -18878528, 22065932, -12602508, 20700668,
+14961519, 7066832, 983548, 8045011, -6394670, -32706176, -11316702, 23296976, 18521510, 19352048,
+-20642150, 35582732, -9162239, 13797582, -26331908, 24070070, 41555420, -8421894, -14775761, -1597191,
+1544578, -9300752, 9098351, 18101676, -34057480, 22304838, 21725018, -5380521, 25182466, 13268228,
+10882373, -16025597, 3322694, 22436372, -47496432, -42395084, -17601850, 11143293, -21848498, -64404644,
+26989574, 17580912, -8313983, -10990284, 521839, -3849901, -22003654, -59170692, -3541201, 41887744,
+10222022, -7543037, -4983773, 8986682, 34403760, 27292906, -40303972, -16724603, 26954678, -5779952,
+-10780368, -46201500, -2652679, 25220048, 8444443, -7184944, 15636902, -5883032, 1688996, -17457432,
+-2811593, 10485089, 15910169, -9102109, -3221762, 3180423, 9220758, -5768141, 5694590, 669478,
+-11227045, 6689412, 19344532, 3236795, 5810554, 3524021, 8762807, -9168681, -15887621, 1473174,
+17292076, -14201309, 6245956, -4848481, 1603097, -13773960, -26331908, -14427869, 9891847, 32053878,
+-3217468, 15108621, -21206402, -9409736, -14315126, 8836895, 6314676, 10087268, -7185481, -11048266,
+-705448, 2275259, 2543158, -4990752, -1094143, 21876416, 28997472, 645856, -32695976, 43296492,
+-12164421, -30227442, 27084064, -4350802, -16445430, 20932060, 5602248, -4383014, 17657684, -24212342,
+22961968, -8206609, 770947, -7041599, -6015102, -33754148, 13364864, -12885976, 5316633, -13532905,
+-1116692, -10089415, 9664750, -5911486, 36477696, 6444599, 23863912, -9286793, 5967320, 15083925,
+-6406481, 10424422, -2068027, 18219252, -915902, -6125697, 28806882, -25742960, 14361834, 19684908,
+-11556146, 22280142, -13641890, -558883, 11463805, -8722542, 26192858, 23450522, 4876399, 39027296,
+-24055038, -55116240, -9276592, -34080564, -22546968, 80483392, -2050847, 24689620, -3757560, -33973192,
+-875100, 33811056, 47887276, 29111826, 48238388, -25953950, -7763154, -11632382, -27542552, 18259516,
+-7733626, -17004850, -1775969, -33431488, -61097520, 15374909, 21509196, -18087182, 12177306, -3808562,
+-18226768, 19450834, 14328011, -7125351, 20042464, -7369090, -17895518, 9190156, -8886287, 23763518,
+2235531, 1773822, 13426068, 4476430, -15141907, -6352257, 7792682, -4988605, 14794015, -20637854,
+13316009, -21638046, -5512591, 5394479, -15358803, 9801115, 616328, -23051626, -3736622, 1487132,
+-6192269, -56908, -4310537, -16911970, 6922414, 5073967, -2695629, 16983912, 26029650, -14187888,
+-20310364, -1296543, -9691057, 28168544, 28918014, -17043504, -10807211, -3547106, -14343043, 303332,
+5078262, 24316494, -26086558, 30828202, -18967112, 4054449, -286689, 3002719, -24087788, -3908957,
+-21809844, -18073222, -164819, -7254737, -16511465, -6709813, 11710228, -14115947, 10772852, -6780143,
+33152852, -15672336, 9739912, 1817308, -8533026, -27012124, -10067403, 20215338, 3454228, -6884833,
+26531624, -20007032, -20233590, -2927557, 25322054, -23447300, -3491809, 4361540, 6694244, -26088706,
+7548942, 8794482, -9502078, -27270358, 239444, -21219822, 8659191, 4585415, 7814693, -41576896,
+-17940078, 23408108, 63411436, -29018410, -4235912, 4935455, -11002096, -18170932, -610959, 52993452,
+11999065, -5611912, -4932233, -14249091, -3526168, -10955388, 20371030, 894427, -13431436, -14331232,
+479426, 9354976, -21470004, 16376710, 4645544, 17871358, 457951, 22781044, 9385040, -16181826,
+21297132, 20402706, 50659140, 16041703, 3688303, 5086852, -18860812, 6059125, 16394964, 17063906,
+5684926, -1347546, 399432, -2215666, 6163815, 7032472, -1945083, 9128953, -2645163, -1082869,
+17333952, 7344931, 2768643, -5389647, 4954245, 13193603, 13761612, 15983721, 5592585, 5794448,
+-9279814, -183073, -777389, 2837363, 8851391, -484794, -7463043, 8156680, -7808788, 6771016,
+-583042, 8011725, 967441, -6762963, -2097018, 446677, 1612760, 3942780, -1212255, 2799782,
+1945620, -196495, -40537512, 53643068, 7337415, 12146168, 12811351, -12495670, -14384919, 426276,
+-5592048, 7551090, 17619566, -24947854, 8150238, -5335423, 6385543, 5953899, 4134443, 14069239,
+11011222, -10697153, 9893457, 8563628, -8671002, -14944876, 4466766, -5371394, -12380243, 7268159,
+5987185, -1149441, -8115341, 118112, -5932961, -2963528, 504659, 3087008, 5592048, -11216844,
+-1712081, 8773008, -4029753, 7859790, 1466731, 5636071, 11611444, 3329674, -11976516, 1123134,
+11078868, -6448357, -640487, 5268851, -19002546, -1281511, -4741107, -17792976, 24368570, -6346888,
+-1074816, 14359149, 2432562, -11038066, 4249334, -10558103, -2154463, 7921531, -9815611, -3675418,
+18008262, -19323058, 2001992, 1576253, 6516539, -8672613, 5764383, -3077881, 5370857, -7465727,
+298500, -1924682, 18149994, -8460549, -859530, 4582730, -9229348, -1048509, 12556337, -2824478,
+8082592, -5710159, -5252745, 769873, 4847408, -4970888, 9257802, -238908, -2066416, -2197413,
+-2965675, -3102577, 7895761, -6932614, 7729868, 4061965, -10228465, 2270964, -1060857, -1056562,
+5986648, -8683887, -3437048, 1051730, -5683853, 5700496, -5844377, -1050656, 9590662, 1530082,
+-1817308, 4177930, -4844723, -4045322, -2358474, 4463008, 8000987, -2683281, -2321967, 663036,
+-6920266, 12566537, -53253300, -108307264, -13989245, 67903432, 52196736, 149959328, 72122704, -35019016,
+-30605400, -71170296, -124615256, -15794742, -48343616, -15032922, 87898120, 56021404, 59797220, 114428664,
+-4062502, -25382182, -43229920, -113250768, -62542776, -20146618, -21087216, 3111167, 51484308, 39875012,
+42315628, 79861160, 46699180, -29411400, 42543260, -44788456, -104469712, 13327820, -70131448, -97534416,
+37977176, -8404177, -18119394, 119859112, 39222180, 31841276, 103282688, -11120744, -20380156, 31424666,
+-69305200, -86073832, -23197118, -73705936, -65904124, 13931263, 14219026, 29746406, 90103048, 79825192,
+48316236, 57248692, 11023034, -45193792, -48700636, -60234232, -82812336, -38665980, -21061446, -28143846,
+24955908, 79723720, 52005076, 51399484, 42216308, -29825326, -382252, 8392366, -68357624, -28177670,
+-17176648, -20016696, 31268436, 16009491, -3986804, 25593174, -6003291, -5350993, 4320200, -18446348,
+-13955422, 9077413, -11476689, 18545668, 23288386, -8722542, 12600897, 23779086, -13936632, 15570867,
+7737921, -46506444, 8170102, -15108621, -50536732, 765578, -28885802, -25812754, 36658620, 39727372,
+38316476, 71102648, 22617834, 22623740, 24065238, -31128850, -62147104, -69342248, -88809720, -66136592,
+-19991462, 11570105, 53782656, 89197880, 98794984, 77186464, 56215752, 11107322, -52376588, -78829832,
+-96288336, -89441624, -46396384, -2952253, 25212532, 64072860, 59112708, 32298690, 32434520, 12625056,
+-912144, -186294, -10008348, -19592568, -16251083, -20317880, -24624658, -18060338, -13399761, -3456375,
+6895570, 16695612, 20103132, 21766894, 18805514, 13237626, 6739341, -35433, -10909217, -18176302,
+-16645146, -11653320, -8116415, -6350109, -1699733, 2315524, 7962870, 9302362, 6191732, 5869073,
+5098126, 2101313, 2913062, 2610266, -3103651, -4044249, -1980517, -3850438, -3483219, -5171678,
+-6981470, -3368865, 298500, 693637, 3617436, 5631239, 5721434, 6972343, 5208722, 1904818,
+-717796, -3526705, -4970888, -4906464, -4493610, -4117263, -2047626, 840740, 2229625, 2108292,
+2018635, 1798518, 1785096, 1616518, 572841, 127238, 437550, 316754, 164283, -168577,
+-993748, -1340567, -2186138, -2949032, -2353105, -1235340, 207232, 1484448, 2149094, 2724620,
+2834142, 1893544, 1155883, 581968, -1116692, -1840394, -1715303, -1751810, -1512902, -962610,
+-784368, -62277, 495532, 667867, 862752, 912681, 585726, 301185, 42950, -235686,
+-376883, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-1049583,
-2694555, 4660577, -3473555, -3004867, -4648765, 4219806, 2105071, 372052, 6239514, -619012,
--73551, -1902671, -1538672, 1357747, -1663226, -3244848, 1832877, 532039, 5211943, 7121056,
--1848447, -4182761, -5153961, -320512, -2945274, -2838437, -1946157, -391916, -4104915, 3961571,
--1467268, -1548336, -2713883, -1999844, 762894, 4450660, -459025, -1278827, 1347546, -4363687,
-3281355, -2720325, -9791452, 4862977, 3233037, 5401458, 5602248, 1070521, 2952253, -2918430,
-834834, 4247186, 335007, -46171, -1017370, -558346, 2280628, -2063732, -1488743, 111669,
-2168422, -1791001, -2232309, -3270618, 4197257, 1670205, 521839, -1015760, -4190814, -139586,
-3140158, 1953136, -593242, -788663, 3145527, -375810, -225486, -1362578, -1288490, -1911797,
--2265595, 147640, 483721, 1085016, -2331630, -919123, 1304060, -1612223, 1407139, 385473,
-633508, -598611, -33286, 311385, 688805, 178778, -266825, 435939, -292595, -791348,
--254477, -1314797, 882616, 458488, -372588, 25770, -592706, 795643, 817118, 269509,
-85899, 313533, 293132, -814433, 34897, -153008, -195421, -314069, -106300, 469225,
-142808, -14672682, 7678865, -707596, 234076, 2680597, 3770981, -5457293, -679679, -967978,
-3139084, 1202591, -3332895, 10461467, -1103807, -633508, 4664335, 3830037, 1263794, 2661806,
-8543764, -4207458, 284542, -2138357, 870805, -2611877, 230318, 279710, 976568, -4721243,
-425202, -1123671, -1762547, -190052, 2994666, -1627256, 2785823, 4041027, -6929930, 949725,
--2805688, -755377, -4258997, 2147484, -2519535, -423054, -1414118, -4334696, 1681480, -2904472,
-2003065, 1102733, -2130304, -3152506, 121870, 2951180, 2232309, 5353140, 2490007, -2297271,
--6537477, -428960, 1178432, 8282845, -2543158, -1245004, -69256, -1601486, -4289062, -2046015,
--3991635, -530428, 3352759, -743029, 3987340, 2564096, 2071785, 2888903, 542240, -5163625,
--1185948, -3319473, -2093260, -5735392, -171262, -1627793, 798327, 1567663, 704375, -846109,
--1146219, 206158, 1541893, -1286343, -332323, 45097, -443992, -111669, -506269, 618475,
--1951526, -669478, -442382, 67646, -168041, -358093, 30065, -2901251, 10624138, 5491653,
--1836635, -4421669, 6037651, -7270843, -1297080, 3882651, -3061775, -2238752, -3189013, 6978248,
--2599529, 2083059, 489089, 2056216, 9569724, -9826348, 2786897, 4762045, -3346853, -9103183,
--4799089, -722628, 455267, -1384053, -1735704, 3661997, 5372467, -559956, -3994320, 185220,
--5032091, 1358820, -3200825, 1630477, 5745593, 2038499, -5992553, -263067, 250719, 8659191,
-1531156, 4281009, -1369558, 1839857, 1428614, -10703595, 64425, 4916664, 2220498, 5510980,
--5077725, -3159485, -5055714, 1240709, 3073586, -1115618, 979789, 171799, -2586644, 841277,
--1967632, 1585380, 1495186, -466004, 2496450, 431644, -482647, 1044214, 6206765, 1056562,
-3194382, 4002910, 2173790, -3758, -192200, -6015639, -106300, 6198712, 2132988, 2692408,
--213138, -538482, 3869766, -3063386, 236760, -374199, 1923072, 967978, -70867, -2673080,
-337155, -1402307, -468688, 333397, -912144, -710280, 537408, -179315, 1955821, 753230,
-1781338, 792958, 487479, 907849, -835371, -1119913, 39728, 13959, 2250026, 1324997,
-265751, 703301, 2136209, -476741, 144955, 585189, 897648, -23622, 22066468, -5772436,
--2124398, -3416647, 4468914, 2960306, 7472170, 2927020, -1167694, 3546032, -216359, 3972845,
-1505386, 5545877, 61203, 4643397, 6068789, -6859600, 1161789, 1690607, 1076963, 1003949,
-1461900, -4107063, -66035, -4719632, -727997, -236760, -7937100, -5425081, 1918777, -103616,
--331249, 3067681, 3022583, -1674500, -6848326, 1966558, 6073084, 3962644, 5661304, -1611687,
-3036542, 5596880, -9494562, 2922188, 4102231, -4740570, 5792301, -4143033, -905164, 502511,
-1102196, -3219078, 2714956, -905164, -1112933, -3347390, -2718178, 3196530, 3243237, 1404991,
-3192771, 4958003, 2716567, 6922951, -1517197, -7962870, 7585986, 1165010, 3702799, 1503775,
--1340030, 1909650, 1415729, 249645, 5197448, -1684164, 5128728, -7495255, -1739462, 876173,
-2265059, 419296, -4085051, -1955284, 642098, 146566, -459562, 162672, 1536525, -2076080,
--1162862, -1210107, -1474248, 759136, -464393, -638340, -1204738, -947040, 2224793, -628139,
--767189, -120796, -813896, -744103, 1120987, -544924, 1199907, -351114, 79457, 857920,
--290984, 20938, 9922448, -11135776, 7601555, 1697586, 7781944, 1891396, -4197794, 1532230,
-6024766, -6939057, -1371705, 922344, -7831873, -1459215, -5990406, -3628711, -4330401, -4773320,
-2199023, -7485055, -4592931, -5941551, -1418413, 5957120, 2234457, -7171522, -2710124, -7506529,
--1756642, 1771137, 11062225, -8698383, 3738769, -2133525, -3100967, -6456410, 434329, 1226750,
-7138236, 3791383, 1010391, -5845988, -10205379, -46708, 3157338, 8221105, 2958159, 2707977,
--5873368, 2292439, 5215164, 497142, 920197, -3107946, -3055332, -971200, 3089692, 633508,
--1932735, 165356, -6468758, -841277, -5430450, 3608846, -1036161, 3607773, -5316633, -4510790,
--7369090, -767725, -4691715, -1975148, 2054605, -7180112, -3008625, 941672, 4147865, -8646306,
-5240397, -4016331, -4280472, -4548907, -3746285, 2728378, -2471754, 1317481, 1649804, -2222109,
-474057, 1918777, 1555315, 191663, -1934346, -213675, -855235, -2251100, -269509, 1832340,
-1175747, -1066226, 1735704, -1265942, -886911, -163746, 690416, -1655173, 271657, -120259,
-1338419, 1024887, 2110977, -1486059, 618475, -265751, -517544, 701153, -1661616, -548145,
-1082869, 586263, -692564, -27327266, 4422743, 3134789, -7876433, -1744294, -16106, 285615,
--1493575, -2612414, -2001992, -8115878, 6274411, -3927211, 883690, -6760279, -2385318, 9797894,
-8893804, -5621576, -3374771, 287763, -134755, -4614943, -5363878, -3816615, 663572, 420907,
-186831, -555661, 2307471, -6672769, 2108292, 226560, -11745662, -1417339, -3496640, 5377299,
-7888781, 1222992, -1358283, 369367, -6871411, -8647380, 4659503, 8537858, 9545028, -2577517,
-1764158, 5541045, 5758478, -2980171, 5315022, 8598525, -330712, 7235410, 6176700, -7240241,
-2397666, 401579, 7803419, -4781909, -5044439, 4459250, 5924371, -1831804, 561567, -8534637,
-6028524, -4784594, 6362457, -10610717, 1187022, 2493766, 5091147, 321049, -4393752, -9058623,
--5499706, 7569880, -7464653, -381178, 892279, 4069482, -2228014, -1634235, 3241090, -6069326,
--5214627, 2124398, 1483911, -473520, 4365298, -2037425, 1072668, 1079111, 1204202, 1597728,
-401579, -1721208, 1098975, 2189360, -874563, 270046, -400506, -1163936, 960462, -2836826,
--343061, -3056943, -523986, -613643, -930934, -1592359, 679679, -941135, 13422, -2391223,
-992674, -474594, 871342, 902480, 414464, 342524, -10536092, 3815542, -9303973, 11908871,
-11454141, 410169, -15377594, 6453189, 934155, -2817499, 10710575, 107911, -9140227, -915902,
-11638288, -14463302, 517007, -3571265, -11407433, -3125126, 265751, -2193118, -5814849, 3445101,
--4807142, 4019553, -4086662, -7702487, 4197257, -515396, 6005975, -11500312, 4776004, 9167608,
--3604015, 814433, 9205726, 13447006, -3503620, -2665564, -11221139, 726923, -9248138, -691490,
--6421513, 389768, 960999, 5474473, 2644626, 5009543, -3512210, 978179, 3114925, -516470,
-12402255, -8127152, -3996467, 16318728, 16371878, -3149822, -978179, -10169946, -5184026, 593242,
--2790655, -6706055, 9907953, 3111704, -2517388, 14537927, 2854006, -6866042, -141734, -13207561,
--6612639, -7454990, -6404870, -1688996, -10321343, -7408819, 4321811, 4027606, -714038, 2408403,
--3029563, 3550864, -2263985, -3315715, 634045, -4807142, -2185602, 6353867, 548682, 3206730,
--1631014, 722628, 526670, 1553704, 1406065, -192737, -79994, -3023657, 9127, 745714,
-546535, -791885, -836445, 2181307, 668404, -363998, 118112, -449361, 113817, 1248762,
-774705, -333934, -1130650, 408559, -736050, 13082470, -3531000, -188979, 9000104, -2201171,
-5306969, -2971581, -11501922, -784905, -17717, -2399276, -6825240, -7625715, 3920768, -6050535,
-10590852, -3308736, -7728257, 6524592, 13302051, -3358665, 3712462, -3631395, 7677791, 120796,
--16217797, 5718212, 8977019, 846645, -2716030, -9470940, 7880191, 5232881, 5069135, 982474,
-3190087, 10516764, -7477538, 1264868, 2054068, -5937793, -11400991, 10790568, 6020471, 20129974,
--1042066, 8847633, -2980171, -6402186, 1065152, -1052267, -299037, -1866700, -6589554, 14434848,
-324270, 1069984, 2041183, -2085207, 11916387, 1451699, 9975598, 4105452, 1669669, 10611790,
--5047661, -12033961, -2374580, 2145873, 1536525, -5017059, 5837935, -3611531, -16759499, 1447941,
-3316789, -9320616, 4300336, -1029718, 1796370, -47245, -3813931, -4275103, -29528, 1514513,
-5099737, -533650, 1422171, -2046015, -1476395, 2237141, 1504849, -364535, 1551557, -1779727,
--205622, 41876, -2306934, -3383361, 2051384, -3758633, -964220, -1683627, -3229816, -972810,
--440234, -1273995, 1391569, -629213, -1365800, -481573, 6146635, 2333778, 2339147, -1325534,
-870268, -2010045, -2513630, -905701, -873489, 986232, -1666447, 2894808, -3871376, -1302986,
-818728, 10547903, -17708688, 2812130, 7810398, 11670500, -12429098, -1858647, 8282845, 5753109,
-7055021, 1182727, 14987288, 2717104, 6162205, -1950989, 802622, 6143951, 3321084, 7104950,
-478352, -10043781, -14637785, 7640210, 3641059, -2842732, 1617055, 4265977, -13704167, 55298,
--8683887, 3947075, -564251, 8849780, -2957085, 3914863, -2159295, 2240899, 1120987, -447750,
-4922570, 6636262, 2301029, 3815005, -10764799, 4345433, -1982127, -18661632, -12457553, 3099893,
--13683229, -1001801, 11116986, -8254927, 22187264, 7993471, -4597763, 12033425, 457951, -4027606,
--9108015, -8977555, -12490839, -1989644, 7124277, -8921721, -1214402, 7969312, 3553012, 4473209,
-16219944, 1953673, 10562935, 18790, 1977833, -17597554, 4736812, 1258425, -16082505, -15171435,
-8595840, -5824513, 890132, 4529043, -2729452, -4169340, 794569, -973347, -1222455, 862752,
--2986076, 2509872, -2185602, 514859, -5173288, 2680597, 710817, 1057099, -410169, 6164352,
--5178657, 380105, -1552631, -1308891, 1114544, 1219234, 1593970, 2940442, 4850092, 3035468,
--3360275, 727997, -555125, 4500052, -1650878, 2886218, -4815195, -3592203, -2842732, -2309082,
--467615, -302258, 2153926, 2658048, -9218610, -298500, 5756867, -102005, 4033511, -9443022,
-7299834, -599148, 2107755, 6801081, -12738873, -8763881, 2285996, -193274, 6954089, 14372571,
--1359894, 3568581, 15435576, -5762773, -10500658, -622770, 11302743, -2474975, -13066901, 1025960,
-4795331, -2585034, -4102768, -980863, 16743930, -3214246, 14410689, 10879689, 13146895, 703838,
-1057099, 7669738, 2564632, -2692945, 2696703, -10446434, 7843147, 13164075, 8260833, 1109712,
-7344394, -5807333, 5637145, -5650567, 8251169, -7475928, 129386, -617938, -594316, 23432268,
--3523484, -1335198, -2056216, 3235721, 6454799, 12326556, 14088566, -7730405, 3366718, 14012331,
--7883413, -9797357, 5867462, -4279398, 6049999, 26770532, -12672301, 1789928, 2494839, -7000797,
-3009162, 8724152, 6120329, 704375, -5500780, -13220983, 6242198, -5778879, 7223598, -4982699,
-1006096, -6556805, -1445257, -10952167, 922881, -3492345, -3876208, -1382443, 1315334, 2738579,
-5410585, 2272038, -3119220, -799938, 5516349, -3284039, -2874407, 368293, 381178, -4998805,
--75162, -2532957, -1245004, -960462, -903017, 1888712, 1186485, 3893388, -2513630, -2534031,
-292595, -3030636, 1401770, 6128382, -3085934, -3306588, -6125160, 3110630, -1553168, -4185446,
--1504312, -9036074, -14268955, -10978473, -14848776, -5697274, 1725503, 11969537, 8891119, 3240016,
-12618614, 3814468, 7731478, 7099044, -3347927, 10929081, 11870216, 8371965, -15877420, -8903467,
--9167608, 3505767, -6300180, 469762, 4607963, -4607426, -11178189, 7300908, -5260798, 2605435,
-2494839, 11497091, -11889543, 18626736, -18299782, 19026168, 39728, 9552544, -9139690, 3369939,
--20459076, -11429445, -9908490, 9067213, 4261682, 13139916, -1213865, -40265, -6570763, -16465294,
-10850698, -8990440, -4576288, 7838316, 18783502, 18078592, 8581882, -1205275, -12126840, 7195144,
--18677202, -1464047, -10556493, 6049999, 20384452, -19459960, 7211250, 9026411, -11979201, -1205275,
--1944547, 6777459, -7897908, -11559904, 2424509, -4683125, -16840566, 8602283, -1547799, -15952045,
-11968463, 15640123, -5028333, 511101, 2348810, -6756521, 10308458, 4694400, -2735894, -2549600,
--6528887, -3832722, 8304320, 4650376, 4804995, -377420, -7199976, -2239289, -2340220, -8193724,
--1581085, 2428804, -329639, -2420214, -577673, -5852430, 931471, -2010582, 4136054, 2174327,
-1002338, -6781217, 5750961, 485331, -2735357, -1739462, -923418, -372052, 3495567, -2524367,
--843424, 2496450, 7050189, 3406446, 2226404, -4184909, 5673652, -13493177, -15786152, -4325569,
-10481868, -12045236, 8275328, -16616155, -2813741, -6276558, -5732708, -13135621, -1001264, -4786204,
--7816304, 6594923, -8730058, 9788767, 2218888, 7686381, -11595338, -21860310, -1640678, 4733591,
--9039832, -6573985, 3798362, 3061775, -10604811, -4939213, 15554224, 7643431, -1830193, 8588861,
-22254374, 969589, 2992519, 2445447, -1479616, -177704, 3447785, 3139084, -16756278, -5980742,
--20518132, -6365142, -19121732, -8925479, 1249299, 22753662, 10733123, -10990821, -12921409, 8595303,
-18024904, 11449309, -7778186, 13842143, -5004711, -854699, -23734526, -6943889, -2885681, -2780991,
--16170552, -26058640, 8607651, 106837, -18990198, 5055177, 30221538, 4079682, 3598646, -18801220,
--1506997, -114354, 4401268, -21134460, 19863150, 3263638, 5633387, 11027329, 4401805, 11947525,
--701153, 5688684, -4427038, -9071508, -7476465, 4202626, -5985037, -1815697, -8064338, 2914672,
-6953552, 265751, 5888937, 773094, -2084670, 31675, -4551055, 3430068, 3607236, 735513,
-822486, -3112778, -1123134, 1927904, 5143224, 3709241, -4151623, -1431835, -1596654, -9844602,
--13611288, -10057203, -3134253, -1173600, 1801202, -2275259, -3716221, -4140885, 188979, -2748242,
--3486440, -6098854, -3165928, 10053982, -5978595, -5325223, -1372779, 12293270, -18218178, -3615826,
-4514548, -8704825, 21276194, -17325362, -17822504, -14488535, 20585242, 9248138, -11709155, -10574209,
--6985228, -2122788, -6279242, -6506876, 1151588, 7732552, 20347944, -2142115, 8755291, 7587060,
-7432978, -13399761, -16684874, -12011950, 14275398, -2366527, 17314086, 5777805, -1746441, -23394686,
--18983756, -1905355, 1712618, -13540421, -8360154, -6324340, -6376953, -30719754, -6533182, -7452305,
--10937134, -5368172, -7096897, -14066018, 10098005, 19275814, 10844792, 594853, 11513197, 14490146,
--4971425, 4635881, 3843459, 1489280, -423591, -3612068, 10298795, 4139275, 17153026, -3885335,
-1860258, 6111739, 33609192, -336081, 17956184, 22534082, -1767916, -19539416, 1883880, 19576998,
-3066607, -16634408, -14754823, -19077170, 12683575, -15575699, -4032438, 22437982, -9418326, -14949171,
-4845797, -4061429, 650151, 6163278, -9180493, -4172561, 2086280, -2763812, -4039954, -805306,
-1942936, 11224897, -820339, -5768141, -4767951, -12885, -4068408, -3497714, -2900177, -5607617,
--2433636, 2149094, -2445984, -515933, -7418483, 1988570, -479963, 1561221, 7916162, 4803921,
--4263829, 2094870, 1926830, -6760816, -10036802, 3842922, 4387309, 576063, -10256382, -11399380,
--1522029, -7976291, -2312840, -1199907, -10116259, 18689014, 13568339, -31836982, 9867150, 12446278,
--5721434, 8987756, 29911226, 2287607, 6528351, -10696079, 6806987, -11295227, -7259032, -6109054,
-2048699, 7546258, 10663867, -1748052, 4305168, -3471944, -1996623, -6007049, 7813083, 28192166,
--9423158, -9358197, 10034117, 6974490, 881542, -20857972, 13243532, -16672526, 9305584, 11639898,
-1178969, 2798708, -3546032, 19320374, 14650670, -41339, 9813463, -8032126, 12410845, 1883880,
-14034343, 20468740, -586800, 5028333, -2823941, -7845832, -650151, 8795019, 10046465, -19985020,
--12125230, 4407710, 21351356, -10629507, 14135274, 9316858, 2657511, -23255638, 2688113, 3354370,
--27569932, 15954730, -15475841, -18512920, -34862788, 8227010, 20994338, -9790378, -19492172, 3782793,
-23284092, 14669998, 2515240, -3292629, 244276, 8000451, -7232188, 10755135, 17876728, 16859894,
--1338956, 6999186, 17692580, -3053185, -303869, -2226404, 15231565, -2520609, 3702262, -7425462,
-3833258, -4676683, 542240, -63888, -1245004, -3746285, 3309272, 8725763, 3002182, 2273648,
--8170102, 1780801, -8428873, 2258079, 13215077, -5116380, 189515, 1445793, -6290517, -8489003,
--9427453, -2444910, 5980742, -3077344, 1612223, -6012418, -566936, -95563, -17421998, -4793184,
--711354, 3351685, 4487167, -3944391, 6234682, 2954401, 3359738, -5499706, -5004711, -3466576,
-1622424, 8037495, 22104586, 16107201, -5177583, -42331196, 5294084, 21626770, 10465762, 4931696,
--18414136, 183073, -12628278, 3299072, -968515, 3832722, 6692633, 9236327, 4086125, -22871238,
-13692356, -2923262, 4333622, 17901960, 7044820, 3595425, -6036577, 22135724, -510027, 22004728,
--26101590, -7444252, 8665633, -15054934, -13020193, 1239098, -3217468, -11714523, 1656247, 19485730,
--394063, 1585380, -9836012, -20645908, -13122199, -5674189, 8920647, -1992865, 2253784, -9992241,
--10982231, -5181878, 16899086, -11150809, 9826348, 6773164, 5626407, 2178622, -17030620, -24274618,
--1784559, 16783658, -20216948, 10193568, -17378512, 11343545, -18294414, -608275, -18035104, 26204132,
--23405962, -13776108, 6314139, 4583267, 12064026, 10203232, -5912560, -2923799, -5951214, 3553012,
--50466, 15766288, -18951006, -7243999, -24410446, 13071196, -8544301, 1309965, -825171, 7067906,
--5245229, 2869038, -9868761, -14967424, 10051297, -7564511, 455803, 2885681, 13285408, 5580237,
--9185324, 2366527, -2970507, -11735461, -2025614, 3196530, 4027606, -10572599, -5121212, 12432857,
--1009317, -9800578, -4236449, 14530948, -16399796, -5277441, 3627100, -3496640, 6161668, -877784,
--7068980, -9472550, -2906619, -4037806, -2808909, -2861522, 2955474, -390842, 6437082, -6136972,
-3696356, 1570347, -2677375, 6579890, -36390720, -5186173, 10853382, 2627983, -8694088, -13014825,
-1171452, -12375948, -1178432, -19092204, 17810156, -7175817, 11138998, -24817932, -14079440, -562641,
-30334280, -24902758, -2183991, -19507204, -15501074, -4789426, 18997178, -4488241, 8417599, 8832600,
--10125385, -21645562, 30370788, 13156022, -17418240, 3289945, 2209224, 8302172, -16947404, 15087683,
--1367947, -31877248, 3337190, 6269042, 8175470, -26433914, -6328635, 3221226, 23180476, 4312684,
-12907987, -34082712, -20673288, 10314901, -16106, 22063784, -5957120, -3857954, 1685238, 11155104,
-10314364, 3821984, -43211664, 12048994, -5038534, 9761387, 23019950, -7413114, -2052994, -26446798,
-8536248, 11764452, -13839995, -8356933, 23829552, 37484864, 9844065, 5987185, -10653130, -4566087,
--20548198, 1415729, 258235, -25531970, 9259413, -925029, -7421167, -2100776, 11950210, -9888088,
--6539625, -1306207, -2705830, -1091995, 10558103, -4731444, 227096, 5886253, 2435783, 8163659,
-7055021, 5156108, 3794067, 9800578, 11728482, -15867757, 5005248, -9986336, 7776575, 948114,
--9887015, -6942815, -3828963, -3507915, -6471979, 5787469, -3281892, -6662568, 10812580, -1942399,
--3379603, 5899675, 11139535, -287226, -3946538, 2809982, 10400800, 10989748, 7124814, -3947075,
-1939178, 1818919, 9370545, 5445482, -30714384, -19923816, -6546604, 157840, -17288854, 14591615,
--36384280, 2274722, -22150756, 12224014, -7910256, -24674588, -1745367, -6298033, -8382703, -28172838,
--20431696, 6463389, 23068270, -14691473, 28363428, -23289998, -15151571, 5567352, -1852205, 13131863,
--7432978, -7822209, -11065983, -2758443, -38685844, -10805601, 1593970, -1242319, -6067178, -14954002,
-12750684, -13182328, 21364778, -6026913, -2152852, -14375792, -13200045, -25484188, -10836739, 10024991,
-4398584, -1116155, 2160369, -8877697, -6585796, -11576011, -9634149, 5730560, 8154533, 4060355,
--22073448, 26203058, 3936338, -10755672, 21061982, 15163382, 25014964, -4258997, 14775224, -33272038,
--17776870, -31419296, 32803350, -10059350, -22160958, -21348672, -45699524, -18920942, 32339494, -1730872,
--15770046, 12037183, -31058520, -20692078, 8315057, -1504312, -25853556, -25310780, 99858, -14406931,
-4346507, 5817533, -19131394, 19366544, -11227581, -16751446, 1882269, -9807021, 27599996, -10174778,
-12618077, 2255932, 16928614, -8118562, -4450123, 1890323, -7156490, 15569, -15479599, -11719892,
--2683818, 6894497, 690416, 11277510, 4806069, 8435316, -6757594, 227633, -13440563, -3118146,
--4621922, 4389994, 13526463, 6336688, 5635534, 6532646, 5796595, 1707786, -17646410, -5095442,
--12084427, -2852395, 2406792, 8553964, 40581000, 51857436, -4583804, -22624814, -5130339, -8384850,
--22818088, 10234370, 980863, -16512002, 49631032, 17353816, -11323681, -33927556, -2702071, 8479876,
-9359807, 10242960, 23951958, -6559489, -11273752, 11291469, -42378444, -28370406, -10774462, -2866891,
-4993437, -22643604, -20449950, 22184580, 17913234, -13273060, -25460566, 16601122, 916439, 29146722,
--23152022, -5260798, -7598871, -1318555, -18196166, -27644558, 23804856, -17095580, -10418517, -21107080,
--4277251, 14150843, 13661217, -8446053, 2342905, 2579128, 18109192, 27078158, 20365662, -34467648,
--16100759, -20415054, -4616553, 11880416, 4837744, -23550916, -33442226, 28876138, 2363843, -28159954,
--46304580, 23687282, -5550172, 12767327, 12302934, 12479027, 2218888, 9218074, -17845052, -6940131,
-13214541, 2334852, -8039642, 5257040, -1607928, -24817394, 13123273, -31520228, -1461900, -1527398,
--4886599, -11316165, -3793530, 13881871, -329639, -3167002, 7742216, -10196252, 31351650, -2427194,
-3386045, -2286533, 943819, 7649337, 169651, 7364795, -15023796, 3375844, -2212982, -10966662,
-1789928, 5201743, 10910291, -5200669, 3544422, -26215406, -7869454, -1487669, -13007845, 11604465,
--862215, -3223373, -6655052, -10851772, -15180562, -22392886, 7490423, -2319819, 17090748, 19314468,
-13103408, -13309030, -17619566, -23412940, -7976828, 21305186, 18254148, 2884608, 8953933, -7611756,
--12651900, -10366440, 814433, 2962991, -9757092, 4614406, 18109730, 22435298, -27785218, -23295366,
-66279936, -5314485, -6478422, -9914395, -20917028, -2248952, 23911694, 38454988, -17696340, -10654740,
--3901978, -17446694, -4356708, -9819906, 15265924, -15760382, 17473538, 8375186, -6011344, -21994528,
--1627793, -9035001, 33062122, -18128520, -459562, 99321, -3313567, 15008226, -9548786, -1203128,
-6858526, -4481262, -32321240, 16525424, -14760729, -17013440, -3954591, -18147848, -10601053, -33013266,
-31609886, 1512902, -21113522, -38689064, 22524420, -22793928, -22360674, 368830, -17428978, 7912404,
-14261976, 44146896, -12585328, 17333414, -3768834, -21234318, -18170932, -5209259, 66242356, -58402964,
--4349192, 60978872, -55790016, -21049098, 31304942, -4540854, -25259240, 58982248, -29237452, -12015171,
-26944478, 6804839, 11442330, -17352742, 19422916, 27567784, 12764643, -6913824, -1916629, 27846958,
--4155918, 15982647, -495532, 11192685, -16003585, -1948841, 7187628, 4585952, 2929705, 862215,
-994822, 11668889, -5438503, 3112241, 4135517, 4038880, -25070260, -10124312, 7834557, -20970714,
-6200859, 12193949, -9082245, -9264244, -7429220, 5200132, -10385231, 12236362, 10074383, -1177358,
-5761162, -7344931, -15200963, -14472966, 28927142, 5418101, 17971216, 3912715, 3396246, 11696807,
--10124312, -2157684, 18261128, -10781442, -25393994, 19082540, -2749853, 11245835, -3125126, -7248831,
--7377143, 30946850, -40259412, 35478040, -6465000, -22613002, 18916646, 6415608, -3923453, 3686693,
-2272575, -4658966, 6680285, -8061117, -10328859, -4901095, -14176076, -11882564, -26322244, -10304700,
-22008486, 20710870, -32642826, 10444287, 16807280, 14003204, -5893232, -32259500, -3226057, -16154983,
--37682968, 23185844, 59471876, -34701188, -4060355, 42130944, -12411919, -15529528, 34176664, 25256018,
-12305081, -14301167, -28155122, 8904004, -11673184, -17956184, 62213140, 45656576, -38080252, -28167470,
-33443836, -62001076, -22024056, -17833778, -10975252, 42698956, 28302760, 18456548, 20345796, -72784128,
--25606058, 68602440, 39628052, 7792145, -18756660, 23379654, -24637544, -49582176, -33136746, 23603530,
--18291728, -4254165, 27514634, 51201380, -6561637, -29462938, 3385508, 20002200, -35525820, -13430900,
-36294084, 32564442, 32683628, 22536230, -6933688, -21336860, -10739566, 27611272, 7744900, 11382737,
--5738077, 2751464, 12404939, 724776, -5434744, -6365142, -8362302, 5834176, 4160750, 26458072,
-7176891, -5716602, -11064373, 2246268, 983011, -4354023, -9761387, 2259690, 20423644, -22497576,
--6979322, 19568944, -4931160, -932008, 12906377, -5494337, 9452149, 3733937, 11164231, -22752590,
--3575024, 4276177, 25067040, 5732171, 11827803, 10197326, 5498095, -5313949, 8021925, 11610907,
--13967234, 6276021, -61499636, 26322780, 105764, -6488622, 31217970, -5553393, -23900420, 11709691,
-10685879, 30495342, 17223892, -16831976, 716723, 4523675, 20870856, 4650913, -24391656, -1165010,
--1551557, 4705137, -22694608, -24813100, 35451196, -13075491, -37393060, 18909668, 32902670, -18847390,
--6476274, 1916629, 22514756, -27296128, -35650912, 9483288, 29848412, -6767258, -12921409, -7684234,
--7443179, 12771622, 5429376, 7515119, 75459888, 3891240, -9783399, 741419, 2254321, 40529996,
-1175210, -14810658, 9084930, -32218160, -18852758, 7966628, 56371, 34770980, 27752468, -18347564,
--5375689, -17368310, 716186, 12250320, 3103114, 3568581, 12499965, -9378061, -37241124, 9113921,
-25006374, -12210592, 22063784, -34765076, 16130823, 10011032, -30222074, 4791573, 540629, -13533442,
-1327682, -6012418, 14949171, 14239427, -25313464, -15983721, 33683280, -26145076, 12370043, -2825552,
--9917079, 6976638, -1024350, -15575162, 8609799, 4788352, 6165426, -921271, -2574296, 1221381,
-4677757, -6235756, -5466420, 4111358, 3304977, -3673808, -252329, 6969122, 12585865, -7933879,
--5038534, 1094680, -2201171, 3877282, -3059627, -2216203, 2967823, -689879, 7610682, -2936147,
-3798362, -10331007, 6020471, -7390565, 6367289, 10451803, -881005, -393526, 1643899, -13316546,
-10450729, 21100100, -39589936, -130214280, -154093232, -13858249, -106873816, 41982232, 260532176, 140152832,
-211603376, 223013488, -24254218, -64273648, 19048716, -162438880, -198572448, -61350924, -218593968, -175475184,
-44484588, -126225328, -34413424, 251605088, 91071560, 177882512, 307292576, 182902800, 81787448, 62261456,
-21759914, -136901008, -170455440, -56240448, -232802800, -232939696, 30671436, -174201184, -142995568, 85938536,
--146616768, -150730272, 113749528, 46227268, -20840256, 268606176, 251486448, 160610832, 340967264, 321362336,
-109740176, 127911640, 99643240, -161809136, -162257424, -205122800, -406199232, -479413376, -344867072, -343273120,
--253272608, 8677445, 23332946, 167186432, 289026080, 356322304, 324591072, 376766880, 322743168, 190393760,
-127935264, 42631308, -63723356, -143001472, -203539568, -174811616, -253581856, -283915584, -235557488, -275279488,
--206656112, 32745904, 66126392, 160399312, 321615200, 256187280, 197332816, 149243664, 58674084, -48759152,
--39924944, -80635864, -101040720, -77058696, -87799872, -84696752, -36244156, -34275988, 1788317, 52346524,
-37096168, 73486888, 88126288, 15408732, 63887640, 61531848, -17208860, 20471962, 14237817, -46772732,
-1871532, 15173583, -54303420, -59117004, -82729664, -169825696, -190070560, -147715744, -141366160, -46255188,
-69153808, 124996968, 203141216, 306776640, 330991104, 307147616, 214999088, 65689376, -69609072, -148442128,
--221878544, -273578688, -269337952, -210184432, -144614768, -68605664, -21357798, 8660265, 24625194, 62510564,
-102779640, 106274672, 98368712, 101282848, 71738304, 64864208, 55816320, 22701050, 4789426, 14002130,
-11826192, 7431367, 4471061, -12984760, -34911104, -52956948, -76360760, -96848832, -97089344, -78134584,
--60030220, -31525060, 5239860, 32794760, 47868484, 55713780, 49017388, 43458088, 47481400, 46005004,
-36797132, 31502512, 26009786, 17885318, 9236864, 511101, -17603998, -32460290, -35913980, -33692944,
--30681636, -28620052, -26534844, -19709068, -7157026, 732292, -2668249, -8731132, -4916127, 675921,
-3926674, 7726110, 8959302, 12268574, 19513648, 26594974, 26102664, 26889716, 23726474, 15349139,
-9273908, 5373541, -2098629, -8809515, -13642964, -24398098, -33830920, -37126236, -38620884, -33381022,
--21327734, -5653251, 11912629, 27623082, 35036196, 34208876, 26719528, 17685602, 8708583, 462246,
--4380867, -6918656, -7317551, -6398965, -6178848, -6049462, -5478768, -4278325, -3321084, -1988570,
--689342, 200790, 984084, 1385127, 1319092, 1007170, 503585, 139050, -35433, -62814,
--51540, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+2694555, 4660577, -3473555, -3004867, -4648765, 4219806, 2105071, 372052, 6239514, -619012,
+-73551, -1902671, -1538672, 1357747, -1663226, -3244848, 1832877, 532039, 5211943, 7121056,
+-1848447, -4182761, -5153961, -320512, -2945274, -2838437, -1946157, -391916, -4104915, 3961571,
+-1467268, -1548336, -2713883, -1999844, 762894, 4450660, -459025, -1278827, 1347546, -4363687,
+3281355, -2720325, -9791452, 4862977, 3233037, 5401458, 5602248, 1070521, 2952253, -2918430,
+834834, 4247186, 335007, -46171, -1017370, -558346, 2280628, -2063732, -1488743, 111669,
+2168422, -1791001, -2232309, -3270618, 4197257, 1670205, 521839, -1015760, -4190814, -139586,
+3140158, 1953136, -593242, -788663, 3145527, -375810, -225486, -1362578, -1288490, -1911797,
+-2265595, 147640, 483721, 1085016, -2331630, -919123, 1304060, -1612223, 1407139, 385473,
+633508, -598611, -33286, 311385, 688805, 178778, -266825, 435939, -292595, -791348,
+-254477, -1314797, 882616, 458488, -372588, 25770, -592706, 795643, 817118, 269509,
+85899, 313533, 293132, -814433, 34897, -153008, -195421, -314069, -106300, 469225,
+142808, -14672682, 7678865, -707596, 234076, 2680597, 3770981, -5457293, -679679, -967978,
+3139084, 1202591, -3332895, 10461467, -1103807, -633508, 4664335, 3830037, 1263794, 2661806,
+8543764, -4207458, 284542, -2138357, 870805, -2611877, 230318, 279710, 976568, -4721243,
+425202, -1123671, -1762547, -190052, 2994666, -1627256, 2785823, 4041027, -6929930, 949725,
+-2805688, -755377, -4258997, 2147484, -2519535, -423054, -1414118, -4334696, 1681480, -2904472,
+2003065, 1102733, -2130304, -3152506, 121870, 2951180, 2232309, 5353140, 2490007, -2297271,
+-6537477, -428960, 1178432, 8282845, -2543158, -1245004, -69256, -1601486, -4289062, -2046015,
+-3991635, -530428, 3352759, -743029, 3987340, 2564096, 2071785, 2888903, 542240, -5163625,
+-1185948, -3319473, -2093260, -5735392, -171262, -1627793, 798327, 1567663, 704375, -846109,
+-1146219, 206158, 1541893, -1286343, -332323, 45097, -443992, -111669, -506269, 618475,
+-1951526, -669478, -442382, 67646, -168041, -358093, 30065, -2901251, 10624138, 5491653,
+-1836635, -4421669, 6037651, -7270843, -1297080, 3882651, -3061775, -2238752, -3189013, 6978248,
+-2599529, 2083059, 489089, 2056216, 9569724, -9826348, 2786897, 4762045, -3346853, -9103183,
+-4799089, -722628, 455267, -1384053, -1735704, 3661997, 5372467, -559956, -3994320, 185220,
+-5032091, 1358820, -3200825, 1630477, 5745593, 2038499, -5992553, -263067, 250719, 8659191,
+1531156, 4281009, -1369558, 1839857, 1428614, -10703595, 64425, 4916664, 2220498, 5510980,
+-5077725, -3159485, -5055714, 1240709, 3073586, -1115618, 979789, 171799, -2586644, 841277,
+-1967632, 1585380, 1495186, -466004, 2496450, 431644, -482647, 1044214, 6206765, 1056562,
+3194382, 4002910, 2173790, -3758, -192200, -6015639, -106300, 6198712, 2132988, 2692408,
+-213138, -538482, 3869766, -3063386, 236760, -374199, 1923072, 967978, -70867, -2673080,
+337155, -1402307, -468688, 333397, -912144, -710280, 537408, -179315, 1955821, 753230,
+1781338, 792958, 487479, 907849, -835371, -1119913, 39728, 13959, 2250026, 1324997,
+265751, 703301, 2136209, -476741, 144955, 585189, 897648, -23622, 22066468, -5772436,
+-2124398, -3416647, 4468914, 2960306, 7472170, 2927020, -1167694, 3546032, -216359, 3972845,
+1505386, 5545877, 61203, 4643397, 6068789, -6859600, 1161789, 1690607, 1076963, 1003949,
+1461900, -4107063, -66035, -4719632, -727997, -236760, -7937100, -5425081, 1918777, -103616,
+-331249, 3067681, 3022583, -1674500, -6848326, 1966558, 6073084, 3962644, 5661304, -1611687,
+3036542, 5596880, -9494562, 2922188, 4102231, -4740570, 5792301, -4143033, -905164, 502511,
+1102196, -3219078, 2714956, -905164, -1112933, -3347390, -2718178, 3196530, 3243237, 1404991,
+3192771, 4958003, 2716567, 6922951, -1517197, -7962870, 7585986, 1165010, 3702799, 1503775,
+-1340030, 1909650, 1415729, 249645, 5197448, -1684164, 5128728, -7495255, -1739462, 876173,
+2265059, 419296, -4085051, -1955284, 642098, 146566, -459562, 162672, 1536525, -2076080,
+-1162862, -1210107, -1474248, 759136, -464393, -638340, -1204738, -947040, 2224793, -628139,
+-767189, -120796, -813896, -744103, 1120987, -544924, 1199907, -351114, 79457, 857920,
+-290984, 20938, 9922448, -11135776, 7601555, 1697586, 7781944, 1891396, -4197794, 1532230,
+6024766, -6939057, -1371705, 922344, -7831873, -1459215, -5990406, -3628711, -4330401, -4773320,
+2199023, -7485055, -4592931, -5941551, -1418413, 5957120, 2234457, -7171522, -2710124, -7506529,
+-1756642, 1771137, 11062225, -8698383, 3738769, -2133525, -3100967, -6456410, 434329, 1226750,
+7138236, 3791383, 1010391, -5845988, -10205379, -46708, 3157338, 8221105, 2958159, 2707977,
+-5873368, 2292439, 5215164, 497142, 920197, -3107946, -3055332, -971200, 3089692, 633508,
+-1932735, 165356, -6468758, -841277, -5430450, 3608846, -1036161, 3607773, -5316633, -4510790,
+-7369090, -767725, -4691715, -1975148, 2054605, -7180112, -3008625, 941672, 4147865, -8646306,
+5240397, -4016331, -4280472, -4548907, -3746285, 2728378, -2471754, 1317481, 1649804, -2222109,
+474057, 1918777, 1555315, 191663, -1934346, -213675, -855235, -2251100, -269509, 1832340,
+1175747, -1066226, 1735704, -1265942, -886911, -163746, 690416, -1655173, 271657, -120259,
+1338419, 1024887, 2110977, -1486059, 618475, -265751, -517544, 701153, -1661616, -548145,
+1082869, 586263, -692564, -27327266, 4422743, 3134789, -7876433, -1744294, -16106, 285615,
+-1493575, -2612414, -2001992, -8115878, 6274411, -3927211, 883690, -6760279, -2385318, 9797894,
+8893804, -5621576, -3374771, 287763, -134755, -4614943, -5363878, -3816615, 663572, 420907,
+186831, -555661, 2307471, -6672769, 2108292, 226560, -11745662, -1417339, -3496640, 5377299,
+7888781, 1222992, -1358283, 369367, -6871411, -8647380, 4659503, 8537858, 9545028, -2577517,
+1764158, 5541045, 5758478, -2980171, 5315022, 8598525, -330712, 7235410, 6176700, -7240241,
+2397666, 401579, 7803419, -4781909, -5044439, 4459250, 5924371, -1831804, 561567, -8534637,
+6028524, -4784594, 6362457, -10610717, 1187022, 2493766, 5091147, 321049, -4393752, -9058623,
+-5499706, 7569880, -7464653, -381178, 892279, 4069482, -2228014, -1634235, 3241090, -6069326,
+-5214627, 2124398, 1483911, -473520, 4365298, -2037425, 1072668, 1079111, 1204202, 1597728,
+401579, -1721208, 1098975, 2189360, -874563, 270046, -400506, -1163936, 960462, -2836826,
+-343061, -3056943, -523986, -613643, -930934, -1592359, 679679, -941135, 13422, -2391223,
+992674, -474594, 871342, 902480, 414464, 342524, -10536092, 3815542, -9303973, 11908871,
+11454141, 410169, -15377594, 6453189, 934155, -2817499, 10710575, 107911, -9140227, -915902,
+11638288, -14463302, 517007, -3571265, -11407433, -3125126, 265751, -2193118, -5814849, 3445101,
+-4807142, 4019553, -4086662, -7702487, 4197257, -515396, 6005975, -11500312, 4776004, 9167608,
+-3604015, 814433, 9205726, 13447006, -3503620, -2665564, -11221139, 726923, -9248138, -691490,
+-6421513, 389768, 960999, 5474473, 2644626, 5009543, -3512210, 978179, 3114925, -516470,
+12402255, -8127152, -3996467, 16318728, 16371878, -3149822, -978179, -10169946, -5184026, 593242,
+-2790655, -6706055, 9907953, 3111704, -2517388, 14537927, 2854006, -6866042, -141734, -13207561,
+-6612639, -7454990, -6404870, -1688996, -10321343, -7408819, 4321811, 4027606, -714038, 2408403,
+-3029563, 3550864, -2263985, -3315715, 634045, -4807142, -2185602, 6353867, 548682, 3206730,
+-1631014, 722628, 526670, 1553704, 1406065, -192737, -79994, -3023657, 9127, 745714,
+546535, -791885, -836445, 2181307, 668404, -363998, 118112, -449361, 113817, 1248762,
+774705, -333934, -1130650, 408559, -736050, 13082470, -3531000, -188979, 9000104, -2201171,
+5306969, -2971581, -11501922, -784905, -17717, -2399276, -6825240, -7625715, 3920768, -6050535,
+10590852, -3308736, -7728257, 6524592, 13302051, -3358665, 3712462, -3631395, 7677791, 120796,
+-16217797, 5718212, 8977019, 846645, -2716030, -9470940, 7880191, 5232881, 5069135, 982474,
+3190087, 10516764, -7477538, 1264868, 2054068, -5937793, -11400991, 10790568, 6020471, 20129974,
+-1042066, 8847633, -2980171, -6402186, 1065152, -1052267, -299037, -1866700, -6589554, 14434848,
+324270, 1069984, 2041183, -2085207, 11916387, 1451699, 9975598, 4105452, 1669669, 10611790,
+-5047661, -12033961, -2374580, 2145873, 1536525, -5017059, 5837935, -3611531, -16759499, 1447941,
+3316789, -9320616, 4300336, -1029718, 1796370, -47245, -3813931, -4275103, -29528, 1514513,
+5099737, -533650, 1422171, -2046015, -1476395, 2237141, 1504849, -364535, 1551557, -1779727,
+-205622, 41876, -2306934, -3383361, 2051384, -3758633, -964220, -1683627, -3229816, -972810,
+-440234, -1273995, 1391569, -629213, -1365800, -481573, 6146635, 2333778, 2339147, -1325534,
+870268, -2010045, -2513630, -905701, -873489, 986232, -1666447, 2894808, -3871376, -1302986,
+818728, 10547903, -17708688, 2812130, 7810398, 11670500, -12429098, -1858647, 8282845, 5753109,
+7055021, 1182727, 14987288, 2717104, 6162205, -1950989, 802622, 6143951, 3321084, 7104950,
+478352, -10043781, -14637785, 7640210, 3641059, -2842732, 1617055, 4265977, -13704167, 55298,
+-8683887, 3947075, -564251, 8849780, -2957085, 3914863, -2159295, 2240899, 1120987, -447750,
+4922570, 6636262, 2301029, 3815005, -10764799, 4345433, -1982127, -18661632, -12457553, 3099893,
+-13683229, -1001801, 11116986, -8254927, 22187264, 7993471, -4597763, 12033425, 457951, -4027606,
+-9108015, -8977555, -12490839, -1989644, 7124277, -8921721, -1214402, 7969312, 3553012, 4473209,
+16219944, 1953673, 10562935, 18790, 1977833, -17597554, 4736812, 1258425, -16082505, -15171435,
+8595840, -5824513, 890132, 4529043, -2729452, -4169340, 794569, -973347, -1222455, 862752,
+-2986076, 2509872, -2185602, 514859, -5173288, 2680597, 710817, 1057099, -410169, 6164352,
+-5178657, 380105, -1552631, -1308891, 1114544, 1219234, 1593970, 2940442, 4850092, 3035468,
+-3360275, 727997, -555125, 4500052, -1650878, 2886218, -4815195, -3592203, -2842732, -2309082,
+-467615, -302258, 2153926, 2658048, -9218610, -298500, 5756867, -102005, 4033511, -9443022,
+7299834, -599148, 2107755, 6801081, -12738873, -8763881, 2285996, -193274, 6954089, 14372571,
+-1359894, 3568581, 15435576, -5762773, -10500658, -622770, 11302743, -2474975, -13066901, 1025960,
+4795331, -2585034, -4102768, -980863, 16743930, -3214246, 14410689, 10879689, 13146895, 703838,
+1057099, 7669738, 2564632, -2692945, 2696703, -10446434, 7843147, 13164075, 8260833, 1109712,
+7344394, -5807333, 5637145, -5650567, 8251169, -7475928, 129386, -617938, -594316, 23432268,
+-3523484, -1335198, -2056216, 3235721, 6454799, 12326556, 14088566, -7730405, 3366718, 14012331,
+-7883413, -9797357, 5867462, -4279398, 6049999, 26770532, -12672301, 1789928, 2494839, -7000797,
+3009162, 8724152, 6120329, 704375, -5500780, -13220983, 6242198, -5778879, 7223598, -4982699,
+1006096, -6556805, -1445257, -10952167, 922881, -3492345, -3876208, -1382443, 1315334, 2738579,
+5410585, 2272038, -3119220, -799938, 5516349, -3284039, -2874407, 368293, 381178, -4998805,
+-75162, -2532957, -1245004, -960462, -903017, 1888712, 1186485, 3893388, -2513630, -2534031,
+292595, -3030636, 1401770, 6128382, -3085934, -3306588, -6125160, 3110630, -1553168, -4185446,
+-1504312, -9036074, -14268955, -10978473, -14848776, -5697274, 1725503, 11969537, 8891119, 3240016,
+12618614, 3814468, 7731478, 7099044, -3347927, 10929081, 11870216, 8371965, -15877420, -8903467,
+-9167608, 3505767, -6300180, 469762, 4607963, -4607426, -11178189, 7300908, -5260798, 2605435,
+2494839, 11497091, -11889543, 18626736, -18299782, 19026168, 39728, 9552544, -9139690, 3369939,
+-20459076, -11429445, -9908490, 9067213, 4261682, 13139916, -1213865, -40265, -6570763, -16465294,
+10850698, -8990440, -4576288, 7838316, 18783502, 18078592, 8581882, -1205275, -12126840, 7195144,
+-18677202, -1464047, -10556493, 6049999, 20384452, -19459960, 7211250, 9026411, -11979201, -1205275,
+-1944547, 6777459, -7897908, -11559904, 2424509, -4683125, -16840566, 8602283, -1547799, -15952045,
+11968463, 15640123, -5028333, 511101, 2348810, -6756521, 10308458, 4694400, -2735894, -2549600,
+-6528887, -3832722, 8304320, 4650376, 4804995, -377420, -7199976, -2239289, -2340220, -8193724,
+-1581085, 2428804, -329639, -2420214, -577673, -5852430, 931471, -2010582, 4136054, 2174327,
+1002338, -6781217, 5750961, 485331, -2735357, -1739462, -923418, -372052, 3495567, -2524367,
+-843424, 2496450, 7050189, 3406446, 2226404, -4184909, 5673652, -13493177, -15786152, -4325569,
+10481868, -12045236, 8275328, -16616155, -2813741, -6276558, -5732708, -13135621, -1001264, -4786204,
+-7816304, 6594923, -8730058, 9788767, 2218888, 7686381, -11595338, -21860310, -1640678, 4733591,
+-9039832, -6573985, 3798362, 3061775, -10604811, -4939213, 15554224, 7643431, -1830193, 8588861,
+22254374, 969589, 2992519, 2445447, -1479616, -177704, 3447785, 3139084, -16756278, -5980742,
+-20518132, -6365142, -19121732, -8925479, 1249299, 22753662, 10733123, -10990821, -12921409, 8595303,
+18024904, 11449309, -7778186, 13842143, -5004711, -854699, -23734526, -6943889, -2885681, -2780991,
+-16170552, -26058640, 8607651, 106837, -18990198, 5055177, 30221538, 4079682, 3598646, -18801220,
+-1506997, -114354, 4401268, -21134460, 19863150, 3263638, 5633387, 11027329, 4401805, 11947525,
+-701153, 5688684, -4427038, -9071508, -7476465, 4202626, -5985037, -1815697, -8064338, 2914672,
+6953552, 265751, 5888937, 773094, -2084670, 31675, -4551055, 3430068, 3607236, 735513,
+822486, -3112778, -1123134, 1927904, 5143224, 3709241, -4151623, -1431835, -1596654, -9844602,
+-13611288, -10057203, -3134253, -1173600, 1801202, -2275259, -3716221, -4140885, 188979, -2748242,
+-3486440, -6098854, -3165928, 10053982, -5978595, -5325223, -1372779, 12293270, -18218178, -3615826,
+4514548, -8704825, 21276194, -17325362, -17822504, -14488535, 20585242, 9248138, -11709155, -10574209,
+-6985228, -2122788, -6279242, -6506876, 1151588, 7732552, 20347944, -2142115, 8755291, 7587060,
+7432978, -13399761, -16684874, -12011950, 14275398, -2366527, 17314086, 5777805, -1746441, -23394686,
+-18983756, -1905355, 1712618, -13540421, -8360154, -6324340, -6376953, -30719754, -6533182, -7452305,
+-10937134, -5368172, -7096897, -14066018, 10098005, 19275814, 10844792, 594853, 11513197, 14490146,
+-4971425, 4635881, 3843459, 1489280, -423591, -3612068, 10298795, 4139275, 17153026, -3885335,
+1860258, 6111739, 33609192, -336081, 17956184, 22534082, -1767916, -19539416, 1883880, 19576998,
+3066607, -16634408, -14754823, -19077170, 12683575, -15575699, -4032438, 22437982, -9418326, -14949171,
+4845797, -4061429, 650151, 6163278, -9180493, -4172561, 2086280, -2763812, -4039954, -805306,
+1942936, 11224897, -820339, -5768141, -4767951, -12885, -4068408, -3497714, -2900177, -5607617,
+-2433636, 2149094, -2445984, -515933, -7418483, 1988570, -479963, 1561221, 7916162, 4803921,
+-4263829, 2094870, 1926830, -6760816, -10036802, 3842922, 4387309, 576063, -10256382, -11399380,
+-1522029, -7976291, -2312840, -1199907, -10116259, 18689014, 13568339, -31836982, 9867150, 12446278,
+-5721434, 8987756, 29911226, 2287607, 6528351, -10696079, 6806987, -11295227, -7259032, -6109054,
+2048699, 7546258, 10663867, -1748052, 4305168, -3471944, -1996623, -6007049, 7813083, 28192166,
+-9423158, -9358197, 10034117, 6974490, 881542, -20857972, 13243532, -16672526, 9305584, 11639898,
+1178969, 2798708, -3546032, 19320374, 14650670, -41339, 9813463, -8032126, 12410845, 1883880,
+14034343, 20468740, -586800, 5028333, -2823941, -7845832, -650151, 8795019, 10046465, -19985020,
+-12125230, 4407710, 21351356, -10629507, 14135274, 9316858, 2657511, -23255638, 2688113, 3354370,
+-27569932, 15954730, -15475841, -18512920, -34862788, 8227010, 20994338, -9790378, -19492172, 3782793,
+23284092, 14669998, 2515240, -3292629, 244276, 8000451, -7232188, 10755135, 17876728, 16859894,
+-1338956, 6999186, 17692580, -3053185, -303869, -2226404, 15231565, -2520609, 3702262, -7425462,
+3833258, -4676683, 542240, -63888, -1245004, -3746285, 3309272, 8725763, 3002182, 2273648,
+-8170102, 1780801, -8428873, 2258079, 13215077, -5116380, 189515, 1445793, -6290517, -8489003,
+-9427453, -2444910, 5980742, -3077344, 1612223, -6012418, -566936, -95563, -17421998, -4793184,
+-711354, 3351685, 4487167, -3944391, 6234682, 2954401, 3359738, -5499706, -5004711, -3466576,
+1622424, 8037495, 22104586, 16107201, -5177583, -42331196, 5294084, 21626770, 10465762, 4931696,
+-18414136, 183073, -12628278, 3299072, -968515, 3832722, 6692633, 9236327, 4086125, -22871238,
+13692356, -2923262, 4333622, 17901960, 7044820, 3595425, -6036577, 22135724, -510027, 22004728,
+-26101590, -7444252, 8665633, -15054934, -13020193, 1239098, -3217468, -11714523, 1656247, 19485730,
+-394063, 1585380, -9836012, -20645908, -13122199, -5674189, 8920647, -1992865, 2253784, -9992241,
+-10982231, -5181878, 16899086, -11150809, 9826348, 6773164, 5626407, 2178622, -17030620, -24274618,
+-1784559, 16783658, -20216948, 10193568, -17378512, 11343545, -18294414, -608275, -18035104, 26204132,
+-23405962, -13776108, 6314139, 4583267, 12064026, 10203232, -5912560, -2923799, -5951214, 3553012,
+-50466, 15766288, -18951006, -7243999, -24410446, 13071196, -8544301, 1309965, -825171, 7067906,
+-5245229, 2869038, -9868761, -14967424, 10051297, -7564511, 455803, 2885681, 13285408, 5580237,
+-9185324, 2366527, -2970507, -11735461, -2025614, 3196530, 4027606, -10572599, -5121212, 12432857,
+-1009317, -9800578, -4236449, 14530948, -16399796, -5277441, 3627100, -3496640, 6161668, -877784,
+-7068980, -9472550, -2906619, -4037806, -2808909, -2861522, 2955474, -390842, 6437082, -6136972,
+3696356, 1570347, -2677375, 6579890, -36390720, -5186173, 10853382, 2627983, -8694088, -13014825,
+1171452, -12375948, -1178432, -19092204, 17810156, -7175817, 11138998, -24817932, -14079440, -562641,
+30334280, -24902758, -2183991, -19507204, -15501074, -4789426, 18997178, -4488241, 8417599, 8832600,
+-10125385, -21645562, 30370788, 13156022, -17418240, 3289945, 2209224, 8302172, -16947404, 15087683,
+-1367947, -31877248, 3337190, 6269042, 8175470, -26433914, -6328635, 3221226, 23180476, 4312684,
+12907987, -34082712, -20673288, 10314901, -16106, 22063784, -5957120, -3857954, 1685238, 11155104,
+10314364, 3821984, -43211664, 12048994, -5038534, 9761387, 23019950, -7413114, -2052994, -26446798,
+8536248, 11764452, -13839995, -8356933, 23829552, 37484864, 9844065, 5987185, -10653130, -4566087,
+-20548198, 1415729, 258235, -25531970, 9259413, -925029, -7421167, -2100776, 11950210, -9888088,
+-6539625, -1306207, -2705830, -1091995, 10558103, -4731444, 227096, 5886253, 2435783, 8163659,
+7055021, 5156108, 3794067, 9800578, 11728482, -15867757, 5005248, -9986336, 7776575, 948114,
+-9887015, -6942815, -3828963, -3507915, -6471979, 5787469, -3281892, -6662568, 10812580, -1942399,
+-3379603, 5899675, 11139535, -287226, -3946538, 2809982, 10400800, 10989748, 7124814, -3947075,
+1939178, 1818919, 9370545, 5445482, -30714384, -19923816, -6546604, 157840, -17288854, 14591615,
+-36384280, 2274722, -22150756, 12224014, -7910256, -24674588, -1745367, -6298033, -8382703, -28172838,
+-20431696, 6463389, 23068270, -14691473, 28363428, -23289998, -15151571, 5567352, -1852205, 13131863,
+-7432978, -7822209, -11065983, -2758443, -38685844, -10805601, 1593970, -1242319, -6067178, -14954002,
+12750684, -13182328, 21364778, -6026913, -2152852, -14375792, -13200045, -25484188, -10836739, 10024991,
+4398584, -1116155, 2160369, -8877697, -6585796, -11576011, -9634149, 5730560, 8154533, 4060355,
+-22073448, 26203058, 3936338, -10755672, 21061982, 15163382, 25014964, -4258997, 14775224, -33272038,
+-17776870, -31419296, 32803350, -10059350, -22160958, -21348672, -45699524, -18920942, 32339494, -1730872,
+-15770046, 12037183, -31058520, -20692078, 8315057, -1504312, -25853556, -25310780, 99858, -14406931,
+4346507, 5817533, -19131394, 19366544, -11227581, -16751446, 1882269, -9807021, 27599996, -10174778,
+12618077, 2255932, 16928614, -8118562, -4450123, 1890323, -7156490, 15569, -15479599, -11719892,
+-2683818, 6894497, 690416, 11277510, 4806069, 8435316, -6757594, 227633, -13440563, -3118146,
+-4621922, 4389994, 13526463, 6336688, 5635534, 6532646, 5796595, 1707786, -17646410, -5095442,
+-12084427, -2852395, 2406792, 8553964, 40581000, 51857436, -4583804, -22624814, -5130339, -8384850,
+-22818088, 10234370, 980863, -16512002, 49631032, 17353816, -11323681, -33927556, -2702071, 8479876,
+9359807, 10242960, 23951958, -6559489, -11273752, 11291469, -42378444, -28370406, -10774462, -2866891,
+4993437, -22643604, -20449950, 22184580, 17913234, -13273060, -25460566, 16601122, 916439, 29146722,
+-23152022, -5260798, -7598871, -1318555, -18196166, -27644558, 23804856, -17095580, -10418517, -21107080,
+-4277251, 14150843, 13661217, -8446053, 2342905, 2579128, 18109192, 27078158, 20365662, -34467648,
+-16100759, -20415054, -4616553, 11880416, 4837744, -23550916, -33442226, 28876138, 2363843, -28159954,
+-46304580, 23687282, -5550172, 12767327, 12302934, 12479027, 2218888, 9218074, -17845052, -6940131,
+13214541, 2334852, -8039642, 5257040, -1607928, -24817394, 13123273, -31520228, -1461900, -1527398,
+-4886599, -11316165, -3793530, 13881871, -329639, -3167002, 7742216, -10196252, 31351650, -2427194,
+3386045, -2286533, 943819, 7649337, 169651, 7364795, -15023796, 3375844, -2212982, -10966662,
+1789928, 5201743, 10910291, -5200669, 3544422, -26215406, -7869454, -1487669, -13007845, 11604465,
+-862215, -3223373, -6655052, -10851772, -15180562, -22392886, 7490423, -2319819, 17090748, 19314468,
+13103408, -13309030, -17619566, -23412940, -7976828, 21305186, 18254148, 2884608, 8953933, -7611756,
+-12651900, -10366440, 814433, 2962991, -9757092, 4614406, 18109730, 22435298, -27785218, -23295366,
+66279936, -5314485, -6478422, -9914395, -20917028, -2248952, 23911694, 38454988, -17696340, -10654740,
+-3901978, -17446694, -4356708, -9819906, 15265924, -15760382, 17473538, 8375186, -6011344, -21994528,
+-1627793, -9035001, 33062122, -18128520, -459562, 99321, -3313567, 15008226, -9548786, -1203128,
+6858526, -4481262, -32321240, 16525424, -14760729, -17013440, -3954591, -18147848, -10601053, -33013266,
+31609886, 1512902, -21113522, -38689064, 22524420, -22793928, -22360674, 368830, -17428978, 7912404,
+14261976, 44146896, -12585328, 17333414, -3768834, -21234318, -18170932, -5209259, 66242356, -58402964,
+-4349192, 60978872, -55790016, -21049098, 31304942, -4540854, -25259240, 58982248, -29237452, -12015171,
+26944478, 6804839, 11442330, -17352742, 19422916, 27567784, 12764643, -6913824, -1916629, 27846958,
+-4155918, 15982647, -495532, 11192685, -16003585, -1948841, 7187628, 4585952, 2929705, 862215,
+994822, 11668889, -5438503, 3112241, 4135517, 4038880, -25070260, -10124312, 7834557, -20970714,
+6200859, 12193949, -9082245, -9264244, -7429220, 5200132, -10385231, 12236362, 10074383, -1177358,
+5761162, -7344931, -15200963, -14472966, 28927142, 5418101, 17971216, 3912715, 3396246, 11696807,
+-10124312, -2157684, 18261128, -10781442, -25393994, 19082540, -2749853, 11245835, -3125126, -7248831,
+-7377143, 30946850, -40259412, 35478040, -6465000, -22613002, 18916646, 6415608, -3923453, 3686693,
+2272575, -4658966, 6680285, -8061117, -10328859, -4901095, -14176076, -11882564, -26322244, -10304700,
+22008486, 20710870, -32642826, 10444287, 16807280, 14003204, -5893232, -32259500, -3226057, -16154983,
+-37682968, 23185844, 59471876, -34701188, -4060355, 42130944, -12411919, -15529528, 34176664, 25256018,
+12305081, -14301167, -28155122, 8904004, -11673184, -17956184, 62213140, 45656576, -38080252, -28167470,
+33443836, -62001076, -22024056, -17833778, -10975252, 42698956, 28302760, 18456548, 20345796, -72784128,
+-25606058, 68602440, 39628052, 7792145, -18756660, 23379654, -24637544, -49582176, -33136746, 23603530,
+-18291728, -4254165, 27514634, 51201380, -6561637, -29462938, 3385508, 20002200, -35525820, -13430900,
+36294084, 32564442, 32683628, 22536230, -6933688, -21336860, -10739566, 27611272, 7744900, 11382737,
+-5738077, 2751464, 12404939, 724776, -5434744, -6365142, -8362302, 5834176, 4160750, 26458072,
+7176891, -5716602, -11064373, 2246268, 983011, -4354023, -9761387, 2259690, 20423644, -22497576,
+-6979322, 19568944, -4931160, -932008, 12906377, -5494337, 9452149, 3733937, 11164231, -22752590,
+-3575024, 4276177, 25067040, 5732171, 11827803, 10197326, 5498095, -5313949, 8021925, 11610907,
+-13967234, 6276021, -61499636, 26322780, 105764, -6488622, 31217970, -5553393, -23900420, 11709691,
+10685879, 30495342, 17223892, -16831976, 716723, 4523675, 20870856, 4650913, -24391656, -1165010,
+-1551557, 4705137, -22694608, -24813100, 35451196, -13075491, -37393060, 18909668, 32902670, -18847390,
+-6476274, 1916629, 22514756, -27296128, -35650912, 9483288, 29848412, -6767258, -12921409, -7684234,
+-7443179, 12771622, 5429376, 7515119, 75459888, 3891240, -9783399, 741419, 2254321, 40529996,
+1175210, -14810658, 9084930, -32218160, -18852758, 7966628, 56371, 34770980, 27752468, -18347564,
+-5375689, -17368310, 716186, 12250320, 3103114, 3568581, 12499965, -9378061, -37241124, 9113921,
+25006374, -12210592, 22063784, -34765076, 16130823, 10011032, -30222074, 4791573, 540629, -13533442,
+1327682, -6012418, 14949171, 14239427, -25313464, -15983721, 33683280, -26145076, 12370043, -2825552,
+-9917079, 6976638, -1024350, -15575162, 8609799, 4788352, 6165426, -921271, -2574296, 1221381,
+4677757, -6235756, -5466420, 4111358, 3304977, -3673808, -252329, 6969122, 12585865, -7933879,
+-5038534, 1094680, -2201171, 3877282, -3059627, -2216203, 2967823, -689879, 7610682, -2936147,
+3798362, -10331007, 6020471, -7390565, 6367289, 10451803, -881005, -393526, 1643899, -13316546,
+10450729, 21100100, -39589936, -130214280, -154093232, -13858249, -106873816, 41982232, 260532176, 140152832,
+211603376, 223013488, -24254218, -64273648, 19048716, -162438880, -198572448, -61350924, -218593968, -175475184,
+44484588, -126225328, -34413424, 251605088, 91071560, 177882512, 307292576, 182902800, 81787448, 62261456,
+21759914, -136901008, -170455440, -56240448, -232802800, -232939696, 30671436, -174201184, -142995568, 85938536,
+-146616768, -150730272, 113749528, 46227268, -20840256, 268606176, 251486448, 160610832, 340967264, 321362336,
+109740176, 127911640, 99643240, -161809136, -162257424, -205122800, -406199232, -479413376, -344867072, -343273120,
+-253272608, 8677445, 23332946, 167186432, 289026080, 356322304, 324591072, 376766880, 322743168, 190393760,
+127935264, 42631308, -63723356, -143001472, -203539568, -174811616, -253581856, -283915584, -235557488, -275279488,
+-206656112, 32745904, 66126392, 160399312, 321615200, 256187280, 197332816, 149243664, 58674084, -48759152,
+-39924944, -80635864, -101040720, -77058696, -87799872, -84696752, -36244156, -34275988, 1788317, 52346524,
+37096168, 73486888, 88126288, 15408732, 63887640, 61531848, -17208860, 20471962, 14237817, -46772732,
+1871532, 15173583, -54303420, -59117004, -82729664, -169825696, -190070560, -147715744, -141366160, -46255188,
+69153808, 124996968, 203141216, 306776640, 330991104, 307147616, 214999088, 65689376, -69609072, -148442128,
+-221878544, -273578688, -269337952, -210184432, -144614768, -68605664, -21357798, 8660265, 24625194, 62510564,
+102779640, 106274672, 98368712, 101282848, 71738304, 64864208, 55816320, 22701050, 4789426, 14002130,
+11826192, 7431367, 4471061, -12984760, -34911104, -52956948, -76360760, -96848832, -97089344, -78134584,
+-60030220, -31525060, 5239860, 32794760, 47868484, 55713780, 49017388, 43458088, 47481400, 46005004,
+36797132, 31502512, 26009786, 17885318, 9236864, 511101, -17603998, -32460290, -35913980, -33692944,
+-30681636, -28620052, -26534844, -19709068, -7157026, 732292, -2668249, -8731132, -4916127, 675921,
+3926674, 7726110, 8959302, 12268574, 19513648, 26594974, 26102664, 26889716, 23726474, 15349139,
+9273908, 5373541, -2098629, -8809515, -13642964, -24398098, -33830920, -37126236, -38620884, -33381022,
+-21327734, -5653251, 11912629, 27623082, 35036196, 34208876, 26719528, 17685602, 8708583, 462246,
+-4380867, -6918656, -7317551, -6398965, -6178848, -6049462, -5478768, -4278325, -3321084, -1988570,
+-689342, 200790, 984084, 1385127, 1319092, 1007170, 503585, 139050, -35433, -62814,
+-51540, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-8851391,
--10554345, 5538361, 401043, 8317741, 3059627, 3714610, 2408940, 3423089, -24696, -33286,
--1786706, -5329518, -3050501, 1511829, -200790, -922881, -573915, 2948495, 2304250, 105764,
-2659659, -2349884, -6079526, 2031520, -1364189, 761820, -3068754, 2532420, -2500745, -1211718,
--950262, 4478577, -975494, 21475, -1776506, -435939, -4912906, 1746441, -780073, 2756832,
--2304250, 386010, -1056562, -3927211, 1328219, -330712, -1019518, 1844152, 3344706, -615254,
--1953673, -5776731, 592169, -3408594, 1672353, 121870, -2190970, -27380, -906238, -753230,
--4154307, 2789045, -3677029, 2127083, -1410360, -2433099, -2063732, -4427575, 2534568, 290447,
-1293322, 2761127, -2818036, -4543539, 3011846, -4352413, 205622, -2881386, 1001801, -2217277,
-2066416, -1093069, 1122060, -1906429, 419833, -854699, 1244467, -885300, -970663, -947577,
--883690, -1706713, 321049, 487479, -241055, -1334124, 1027034, -995359, 213675, -648540,
--1133871, -391916, -362388, -142808, -197032, -126165, -923418, -486942, 219580, -545461,
--248034, -270583, -630286, -165356, -452582, -601832, -505732, -15754477, -202937, -2121177,
-4103305, 43487, 1560684, -1335198, 2027225, 365072, 1771137, -1854889, 10121627, -2243584,
--1453846, -4394289, 1435056, -5298379, -1712618, 356482, -2580202, -73014, 3702262, 2094870,
-1394791, 2470143, 3597572, -4442607, -1699733, -125091, 2281702, -4195110, 4035122, -3517578,
--1769527, 3204046, -629750, 708670, -2594697, 2956011, 3124589, 3323768, -5180805, -1620276,
-5576478, -117038, -851477, -1295470, 6082211, 3928285, 4704063, 41339, -1109175, -1452773,
--340913, -171262, 686658, 1777580, -5892159, -577136, -2746095, -3525631, -459025, 956704,
--3057480, 769336, -2336999, -903017, -945430, -119722, 2037962, 1838783, -1066763, -746787,
--1334661, -4827543, -1131187, -3012383, 79457, -3958349, 1060320, 12885, 3950296, -1414118,
-543313, -3475166, 299037, 430034, -1596117, -1693828, 1678259, 3758, 447213, -210990,
-1178432, -360240, 490163, -250719, -270583, 1376537, 656593, 545461, 221728, -209917,
-850940, 5290326, 6274947, -4456566, 513249, -3809099, 5745056, 1009854, -2451353, -3454228,
--3061238, -685584, 680752, 1481227, 7661148, -4646081, -784905, -1880122, 2968359, -8675297,
--1064615, 5436355, -207769, 4558571, 1985886, 3644280, 3797825, 1616518, -810138, -4105989,
-1278290, -1192390, 456877, 6365679, 1562831, 5452998, -2954938, -1568737, 363462, -7479686,
-811212, 5480915, -1686848, 454730, -4694400, 3439195, -135291, 1492501, -5545340, 3166465,
--3743601, -2119566, -3907883, -4587562, 2549600, 820876, -1523640, -2380486, -2247879, -1676111,
--1152662, 2495913, -2595234, -4661114, -7136625, 6484864, 4970351, 205622, -7139310, 2085744,
--3453154, 2723546, -2350958, 440771, -4395899, -2800319, -5709086, -2623688, -845035, 5453535,
-3235721, -6229313, 2618856, 69793, -588947, 2627983, -418222, 2072322, 4333085, 161598,
-872952, 2839510, 549756, 512712, 2823941, -574452, -126702, 151398, 324270, 541703,
-664646, -710817, 784368, -671089, 162672, 72478, 688805, 99321, 1771137, 1518271,
-66035, -159988, 1736777, 838592, -1388348, 181999, 596464, 26716844, -9944460, 11959873,
--9532143, 799401, 2826089, 2793339, -7872138, -2685428, -2655364, -13170517, -89121, 677531,
--4757213, -785442, -74625, 9385577, 1720671, -6578280, 4772246, 5210332, 1149441, 9514963,
--7107097, -2612951, -3806952, 1994476, 7618735, -572841, 463320, 2822331, -1384053, 3394098,
-1523103, 8706972, -1335198, 3401614, -5734318, 5196911, -4021163, 5804649, -122943, -6107444,
--933082, 8778376, -407485, 5933498, 3554086, 5705864, 491237, -4548371, -3703873, 76773,
--2757906, 4681515, 3097745, -4668630, 623844, -3651259, 6185827, -1704565, 4959077, 5925445,
-1023276, 6109054, -299574, -2986613, -1027034, -3801046, 156766, 8033737, -5063767, -5183489,
--1970316, 2269890, -3553012, -2206003, 1544041, 3852586, -1620813, 1406602, -7820599, 1908039,
-492848, -571768, 2720325, 160524, 722628, 1844689, -250719, -1022739, 828392, -1810329,
-551903, -761283, 214212, 329102, -289373, -637803, -1572495, -134755, -1254131, -786516,
--535797, -2610266, -22202296, 2502355, -6493991, -4623533, -7129109, -8650601, 3498788, 7860864,
--1115618, 3097745, 1293322, 4070019, 965831, 361314, 2472828, -4702989, 11118597, -506269,
--6385006, 7329899, -2165737, 3151969, -7206419, -4446902, -5091684, 2298344, 1402844, 5752572,
-222265, -3457986, 642635, -3079492, -3417720, -3771518, -1289564, -5278515, -2667175, 5060545,
--4598300, -255014, -3588982, -5605469, -2488934, 785442, 1860795, 3679176, -2820183, -2547989,
-3601867, 696858, 1378685, 1020592, 2242510, 3418257, -5400922, -1745904, -518617, -7545721,
-2051921, -462783, 4493073, -4393752, -3382824, -4102231, 747861, 4799626, 3684545, 8410620,
-5620502, -5080410, 2117419, -2262911, 3968013, 2542084, -5550709, 4088809, 1101122, -6111202,
-816044, -1054951, 548145, -1088774, -4207458, 845035, -3015604, -3115462, 1182190, -1682017,
-745714, 2338073, -1508607, -1955284, -2097018, -3078955, -578747, 2499134, -637803, 2596845,
-25770, 1777043, 1163399, 958315, -1126355, -373125, 433255, -1028645, -1228361, 358630,
--1188095, -387084, 317828, -2144263, 1236951, -1064078, -392990, 324807, -88047, 246424,
-704375, -916976, 622770, 1555852, -28246926, 7887171, -8353175, -6940131, -4966056, 1060857,
--1374390, 16805670, 1744831, 4102768, -1762010, 171799, -6761353, 6921340, 2087891, -883690,
-1466195, 9004399, -4358318, -1429150, 2149631, 726386, 4561256, -3776887, -1653026, 5018133,
-1896765, 4631586, 634581, -4687420, -3049427, 2816425, -375273, -1518808, -2905009, -1619203,
--106837, 8541616, 2218888, -1414118, 266288, 734439, -2469606, 6185290, 4737349, -1336272,
--6293738, 1708860, -3292093, 5891085, 4575214, -4392678, 1843078, -5720360, -5113159, -4459787,
--5652177, -1872606, 1348620, -3340411, 367220, -3700651, -3147137, 6765111, 4314295, -5531918,
--7536057, 963683, 6566468, -4899484, -3636227, 5588826, 4391067, 6359773, -3954591, -69793,
-1843615, 2685428, 7101729, 2005750, -844498, -163746, -5045513, -663036, -18790, -4287451,
-394600, -1187559, -1932735, 193274, -521302, 2274722, -448287, -737661, 1100585, -550293,
--1759863, -1095754, 454730, 1859184, -768262, -545998, 122407, -324270, 3360812, 703301,
-4336843, -2910377, 839129, 330176, -1712618, 67109, -81068, -2176475, 645856, -327491,
--2464774, -2238752, -1163399, -2135136, -1652489, 705448, -1057099, -14930917, -1480690, 2512556,
-7260106, -1416266, -3805341, 1700270, 10669236, -13439490, 3114925, -2729452, -2495376, -6051609,
-3635153, -10771241, -7010461, 3699578, -5630702, 3402688, 15341623, -2718178, 6200859, -7218230,
-7408819, -1928977, 2209761, -6475200, 3021510, 1833414, -3468186, 1520955, -699543, -3333432,
--221728, 4209068, 6605123, -5177046, -8248485, -6541772, -6054830, 779000, 4844186, 12824235,
--146029, 8633958, 9025337, -8402030, 6456947, -12355010, -4513474, 774705, -5491116, -5126581,
-3426847, -11966316, -2361158, 8311836, -3587372, -3138011, 1101122, -3663070, 3403762, -3635153,
-5837935, 7526930, -2085744, 2331094, 316217, -7646116, 659814, -4953708, -3402688, -6045167,
-3433826, 2609193, -5789616, 453656, 4320737, 3995930, 5117991, 5253282, -802085, -5031554,
-4159139, 2153926, 2493229, 1336272, 3009698, -363462, -92879, 416612, 1241782, 1431298,
--2046552, -657667, -1649804, -1128503, 2418604, 2042794, 2334852, -4256850, 871878, -559956,
--1735167, -2075543, 2188286, -1381906, -2302103, 549756, 555125, -798864, 5150740, 1667521,
--1001264, -1178969, -2381023, -703838, 2110440, 3157338, 812823, -38655, 3230889, 35344896,
--1748052, -14031121, -1790465, -651761, 1304060, 4420058, 1782411, -1658931, -1488206, -7084012,
--3372623, 3913252, 8611409, -7121056, -4489852, 5735929, 437013, -2113124, 2281165, -599685,
--8231842, -8386461, 11337103, -1093606, -751619, -1932735, 5811091, -485868, 590021, 3684008,
--6251862, 6573985, 2724083, 1045288, 2499671, 6571837, -15902116, -7139310, -3884261, 14603963,
-1868848, 1066226, -4526359, -4994510, 4361540, -688269, 5060545, -1836099, -10166724, 1060857,
-1223529, -1564442, 4915590, 2187749, 1308891, 8086350, 19760070, -1591285, -1686312, 7505456,
-2274185, -2361695, 5159867, 15363635, -1741609, 2920041, 5558762, 4454418, 3990562, 4065724,
-4560182, 3500935, -4080756, 6117107, 10963978, -2561411, 4196183, 37044, -1395328, -7619272,
-4724464, 1770600, -631360, 2277943, 2621541, 606127, 292595, -2582349, -2957085, -1182190,
--5878200, -2628520, -3987340, 5076115, 2486249, 1916629, -838592, -788663, 288837, -3393561,
--3758, 1219234, -4669703, 4064650, -2041183, 706522, -1435593, 202937, 1537061, 1837709,
--3640522, -3611531, -3001645, 385473, -629213, -1015760, -286152, 2499671, -674847, 244276,
--1501091, -3212099, -1750199, -105764, 7136625, 7946763, -10135049, -2946885, -8603356, 8507793,
-15950972, -7649874, -1795833, -8776229, -3812320, -10618233, 7560753, -6487548, -2633889, -700080,
-75699, -4236449, -5195300, 9507984, -8641474, -3210488, 991601, 6481106, 6943352, -9982041,
--2923799, 3812320, -8563628, 4848481, -6791417, -2790655, 2513093, 179315, -3710852, -1056562,
-2058363, 11110007, 1387274, 2491081, 14496, -9542344, 10412611, -5126581, -7785702, 6215892,
--5545340, -6316287, 8213051, -3735011, 1065689, -1840930, 1118839, 10746008, -1825361, 2385854,
--9402220, -770410, 10988137, 2421825, 10887742, 9271224, -3040837, -2414845, -12617540, 1907502,
--2101313, 8345659, 10293426, -5939403, 2582886, -18605798, -5052492, 6114423, -6389301, 9584220,
-674310, 2039036, -3379603, -760746, -4424890, 746251, -3040300, 6751689, 6713034, -347892,
-2308008, -148176, 3809099, 1584306, 2769180, 5694590, -1694902, -6508486, 3000572, 1421097,
-4130148, -1117228, 4380330, -939524, -1471563, 1042066, -2575370, -1790465, 483184, -4596152,
-1308354, -1636383, 4066797, 1683090, -255014, -914828, -2613488, -4086125, -279173, 485868,
-1679332, -1540283, 946503, -3850438, -5369, 163746, -1953673, 2475512, 303869, -6442,
-1129040, -1306744, 248034, -44560, 6364605, -8176007, 2750927, -7647726, -865973, -10317585,
-16855062, -5007932, 1114007, -5368709, -15441481, 8846559, 3076270, -11533061, 7084549, -5214627,
--3847754, 3987340, 15953656, -8014409, 15410880, -338229, -10888816, 422517, 3575560, -9584756,
-10510859, -5564130, 7774428, 16938278, 1627793, -7959648, -2250563, -935766, 3859028, -6773701,
--3713536, -940598, 8333847, -3016141, -3390340, -11138998, -407485, -13163538, -2451353, 14855755,
--3368865, 8448201, 775778, 2234457, -19534586, 242666, -12509092, 10030896, 17453136, 5369783,
-4366908, 1063541, 2595234, -10215580, 3569655, 5426691, -4563940, -1290101, -4047470, -2582349,
-7858180, 162672, 9536438, 29268592, 10677826, 2908230, -10075993, -9362492, -6076305, 5741835,
--9976135, -877784, -923418, 2026688, 5619965, -5475010, -1044751, 5434744, 5965710, 1221381,
-1007170, 4057134, 5136781, 4290136, -60130, -961536, -977105, 446140, -2137283, -2662880,
-2323577, -1349694, 3617973, -4444755, -1412507, 3063386, 2602213, -269509, 2351495, -2290291,
-1069984, 1610613, 2184528, -2513093, -2470680, 3470334, 2480344, 1946694, -898722, -1753420,
-841814, -4946729, -1297617, 790274, -2632815, 1200980, -1825898, -1287953, 563714, 399432,
--412317, -981937, -3278671, 30987116, -16178068, -63888, -7841537, -15140297, -20332912, 6126234,
--6255620, 6463389, -19224810, 4228932, 7377680, 6669011, -7854422, -17626546, -13795435, -11531450,
-527744, -6556268, -12763569, -8677981, -4226248, -10367514, -7116224, 2136746, 13914620, -20401,
-2291902, -156766, -11567958, 7662759, -731218, 2469069, -2309619, -7576859, 7063074, -9528922,
--13405130, 12619688, -13069585, 2945811, 221728, -18513456, -10889353, 7634305, 4832, 9320616,
--5667210, -19690814, 258772, 963683, 7789460, 8224863, 18997178, -10550050, -38102804, -13186623,
--12773770, 8858907, -24707874, -8221105, -3839701, -22707492, -7313793, -147640, -4033511, -4065724,
-5350456, -5952288, -206695, -5570573, 5735929, -13262859, 5208722, 11083700, -13323525, -6637335,
-7073811, 5525476, 4886062, -13758928, 3670050, 399432, -1632088, 7654706, -1522029, 6335614,
-5740224, -978716, 2025077, 1407676, -1340030, -4425964, 7993471, -2276333, -5026723, 398358,
-136902, 4323422, 1802276, 244813, 1627793, -3802657, -3770981, 695785, 1800128, 2684892,
-4735202, -278636, 2358474, -200790, 2127620, -4464082, -1682554, -3024194, -2639794, -257698,
--279710, 1966021, -4967130, -2179696, -3624416, -2587718, -5216775, -6614250, -5729487, -409633,
--182536, 992674, -3376918, -4562866, -17725330, 7021198, 8766028, -2913062, -3416110, -8823473,
--9756555, 22551800, 8203925, -21007222, 7272990, -11430519, -1100585, -10378788, -21616034, 6382322,
--11272679, -4671851, 878858, 678068, -5518496, -18226230, -11352135, 9020505, -11228118, -250719,
--9938017, -15146739, -5950677, 16956530, 2676302, 3079492, -14760192, -4860829, -3052648, -1838246,
-5945846, 7489349, 9500468, 11902965, -5811628, 6752763, 2280628, -6723235, 4139275, -11361799,
--10042707, -8526584, 3668976, -9862319, 423054, -14882599, -13217762, -6655589, 15489800, 12276627,
-11752641, 13172665, -12070469, 16476568, 474594, 7670275, 22391812, -4468377, -4206921, 3811784,
--10888279, 4617627, -5155035, -13805099, 1747515, 11579232, -13571023, -9450539, -1730335, 12438225,
--10334765, 1348083, 3699578, 7554311, 1767379, -2871186, -7078643, 2061584, 5140539, -2687576,
-578210, -3428995, 1068910, -3248069, 1284732, 414464, 1838246, -1113470, 1239098, 2674691,
-6236830, -616328, -239981, 710280, 2846490, -4512400, -2066416, -4985920, -1560684, -969052,
--6047851, 1313723, 5261872, -289910, -7188702, -1007170, -766115, -5951751, -7047505, -9907416,
--4320200, 4067871, 495532, 2936684, -1669132, -1616518, -3772592, -329102, -9029095, -1414118,
-5171141, 8666707, -588947, 2752000, -5199595, 851477, -3163780, 4544613, 1742683, -8490613,
--19796042, 22637162, -17690970, 23441394, 13120588, 8924942, 5017596, 9206799, 10005126, 9244917,
-25197500, -8828842, 1775969, -1692217, -4349192, -774168, 3123515, -2350421, 4847408, -1644973,
-7881265, 6601365, -1419487, -4376035, -25116432, -8959839, -18218178, -853625, 9605157, 9677098,
-3082713, 4923643, 7241852, 5969468, 7019587, 17974438, 26831198, 17985712, 3631395, -3428458,
--5182415, -7719667, 9388799, 9543954, 10721849, -7990787, -6281927, -9907416, -1632625, 13056164,
-128312, 15648713, -9498857, 8373039, 5057861, 14041322, -29389924, -21069498, -8617852, -11834246,
--12081743, 3606699, -4930086, 18479634, 5494874, -20646982, -1697049, 33356326, -11248519, 10388452,
--5039608, 13696114, -6385543, -4194036, 497142, -5689221, -7441568, -557809, 5616744, 8235600,
-5763846, -2190433, 6499896, -1750736, 3011846, -8527121, -5779416, 5425618, 3474629, -8574365,
--3716221, -3654480, -1135482, 2100239, -2238752, -4218195, 1944010, 353261, 1414118, -700617,
--2402497, 3767760, 1254667, -2181844, 5040144, -733366, 1494649, -967978, 5943161, -5066988,
-5295695, 2283849, -4940286, 3244311, 195958, 841814, -5150203, -15129022, 5679021, 94489,
-1114007, -1767379, 5774047, -1433445, -2670396, 1802276, 4516695, 3689377, -2206003, 4583267,
--14397804, -7163469, 12100533, 5334887, 8950175, 23195508, 2066953, 15526844, 22664542, 15760919,
--10125385, -22877680, -682363, -10460930, 24850144, 7205345, 19435264, -2689187, -10276246, -3748433,
--11221139, 4535486, -8612483, 1117765, -9603010, 5112622, -6990596, -2918967, -15476915, -15371688,
--1435593, -22049288, 12202539, 8396661, -6518687, 11373610, -5291400, 4452808, 12699681, -13929653,
--18221936, 3302293, -3903589, 30798674, 13167296, -33716568, -9012989, -9547175, -17313550, -18403398,
--37602440, 6674379, -13408351, -3513820, 5508296, 1392106, 7866770, -1479079, -4357245, -28563144,
-3504693, -12981002, 3618510, 16764868, 3636227, 11242077, -16916266, -22598508, 4679904, 14013941,
-9547712, 5262409, 9078487, 14565308, 18341120, 18737332, -16543140, -10035728, -11883101, -8592619,
--13890461, 19761144, 11712376, 11135776, 3175055, 8511551, 7429757, -711354, 10463614, -15946140,
--5472325, -1920924, 1443109, -3469260, -11157788, 621160, -2145336, 1444183, 3812320, 11521250,
-789200, 5373541, 5567352, 832687, 5904507, 155156, -3324305, 667331, -8503498, -3562675,
-4794794, 6617471, 2220498, 1173063, -10422812, -1077500, 554588, -5151277, -3346317, 1515587,
-3590593, -9793062, -10572599, -4975183, 3853660, 3058017, 5704791, 1243930, -3221762, 2338073,
--10923176, -9995463, 40831180, 26975616, 37464464, 2448668, -7403987, -25419764, -7485591, 4275640,
-5922760, -6045167, -19641960, -7086696, 32370094, 13397077, -4457639, 9928354, -713501, -11866995,
--3455838, -7736847, 22074522, -1675574, 1309965, 9540733, 641024, 10824391, -97711, 15314243,
--14059039, 17642652, 3582540, -8186208, -4952098, -9069897, 15922518, -22022444, -23791434, 15075872,
-24908126, 1189706, 17197586, 23656680, -26601416, 8879845, 5449240, -1439351, -231928, 3973919,
--9979357, 18579492, -11252277, -8928700, 7505992, 967978, -2003602, -4293357, -5539971, 2699924,
--17570712, -5241471, 14164265, -17317846, -3988414, -11689827, 445603, 35116728, -11018739, 2280091,
-9395241, 197569, -8075076, -21896280, 21422224, 10016401, -44146896, 10966125, 11115912, 8240969,
--9896678, -4586488, 22557168, 1037772, 1665374, 5808407, -15684147, 625992, 9985262, -4052302,
-5771363, -1228898, -5095979, -13053479, 1996086, -1694365, 12125230, -1104344, -513785, -8684961,
-9606231, -3206730, -3337190, -13778255, -6937446, 4878009, -8886287, 760209, -4379793, 5546951,
--5203353, -11078868, 5609764, -11936251, -3280281, -5411122, 558346, 754304, -4491999, 11949136,
--1476932, 16103443, 9805410, -1590212, 1686312, 10313827, -7134478, 1870458, 1219234, 9900973,
--8942122, -5270462, 454193, -18234284, -43700756, 38878044, 23174570, 12326556, 8668318, 19206556,
--44100188, 18107582, 20364588, 8722542, -28232430, 15710453, 28540594, 13230110, 31470836, 11481521,
-537945, -1247151, -987306, -5358509, 13334800, 22362284, 21296058, 7446937, -6544457, -11105175,
-2654827, -10110353, -11840688, 12458090, 8564165, 2374043, -11866995, -11543261, -2538326, -10035191,
-5118528, 25701084, -4570919, -8307004, 8672076, 4659503, 7612293, 8977019, -1968169, -5184563,
-20645908, 13663365, 6748468, 9113921, -1666447, -20517596, 4757750, 13662828, 1768453, -15270756,
-20434380, 5331128, 28425704, 1057099, 25553444, 2734284, -8378408, -2719251, 6127845, 36381056,
--4597763, 13078175, 8963060, 17190606, 9003325, 81068, -1105954, 11215770, 51760800, 2423435,
-20765630, -17547088, -13107703, 6577743, 8137890, 10091563, 4148402, 1658394, -25440702, -10061498,
--26676042, 1458141, -4582730, -8808441, -7460895, -2962991, -11255499, 1416802, -1169305, -11829951,
-8459475, -13778255, -6696391, -12439836, -8509941, -814970, 1367410, -9949829, -11552925, 2781528,
-7340636, 8579197, -1747515, -3278671, -14862734, -19422916, 1940252, 2381559, -8857296, 17685064,
-17107392, 25323128, 8878771, -5564667, 3457986, 7827578, 9582072, 11511586, 1696512, -11989938,
-3025268, 15389405, 7876970, 803159, 6154152, -28472948, 31227096, -463856, 27638652, 695248,
-1881196, -25073482, -7707856, -11271605, 19173808, 4896263, 8500277, 5087926, -19262928, 1930588,
-1547262, -16893180, -24217710, -24720222, 8383240, -9171366, 22544284, 1327682, -7152731, -5819681,
-4860293, -8694624, 1451699, 6645388, -9490267, 5365488, 7592429, 2630668, 2163053, 17093970,
-28659244, -5572720, -242666, 14450954, 11777337, 17301738, -12822088, -4968204, 5173825, -17104170,
-1645509, 1546188, -22816476, 29427506, -1477469, 14884209, 12753905, 9040369, -17379048, 1711545,
-14761803, -11978664, 26307748, 7319161, -9698573, 21882322, 16371878, 11553999, -36772436, -7386807,
-7231651, -12438225, 1893544, -20371030, -5212480, -30919470, -8969502, -4636417, -8667781, -34267396,
--3556770, -9270687, 51552492, -7318088, 10405632, -5181878, 8144869, -4206921, -8559333, 5718749,
--7202660, -950798, -3940096, 14025216, 4845260, 6253473, -22457310, -19800336, -15059229, -6045704,
-3796751, -27885076, -4674535, -2085744, 1939178, 10446971, 7606924, -656056, 10713259, -9630927,
-48855, 787053, -16335371, -22109954, 4217658, -6318971, -20890720, -5463199, -9945534, 1633698,
--22334366, -2297271, -9870909, 13301514, 2684, -9205189, -3663070, 4319664, 4941360, -1860795,
-9756018, -9842454, -6520297, 13214541, 12097312, 21910238, -7486128, -1610076, -3106872, 5869610,
-15591268, 13636521, 10031433, -8127689, 6086506, 17149804, 16530255, 7013682, -21041582, -24319716,
-10110890, -3746285, 7178501, -4850092, 19757924, -15559593, -3604551, -5663988, 17169668, -13717052,
-30464204, 37598680, 38320772, 1945620, -7682086, 5858873, -5528160, 9055939, -2142115, -651761,
--11860015, -31580894, -10865730, -30261266, 16608102, 15666430, -18877456, -14186277, -18925774, -9038222,
--3161633, 40247600, -24696, -21168284, -22797686, -1762547, 27930172, 13174275, -57512832, -12042551,
--10590852, 7088307, 20910586, -25163676, -8359080, -15147813, 5956583, -34185256, 16281147, -6035503,
--1286343, 8977555, 868657, -16940962, 32821066, -3735548, 15339476, 35310536, 72653664, 43499428,
--1599339, 24269250, 36791764, 47617764, 51496120, 14506252, 31336618, 8739722, -123480, 19191524,
--15934329, 31728534, 13222594, -14324253, -48399988, -35185444, 3999152, -13972065, -10360535, -9190693,
--5850819, -6228240, -20263118, -13251048, 184147, -3389266, -1632625, -6540162, -2301029, -10602127,
-12202002, -21602074, -9263708, 5848135, 3362960, 1606855, -6054294, -6962142, -4320200, 3988414,
--3955665, 10673531, -13452911, -16465294, -16769700, -10277857, 11770358, 13553843, -5756867, -2692945,
-4467303, -2918967, 22377854, 4707284, 1442572, 18121540, 10945187, 10257456, 25479894, 16876000,
-19022410, 5864778, 8859444, 21271900, 7709467, 16466905, -15955804, 8644695, -7516730, -16585553,
-18587008, -23964306, 39470212, -4922570, -7555921, 506806, 31369368, -21355652, -4009352, -1140314,
-146029, 11268384, -8477729, 16349867, 5455682, -3319473, 3546032, 1701344, 12703976, -40009232,
--12865575, -1409286, 3897146, -4125316, -29337310, 23627688, -1649804, 3076807, 8286066, -19106698,
--8973260, -44097504, 11285563, -10462540, 8058433, 31906776, -9168145, 6561637, -4510790, 15132244,
--26613764, -35249332, 30348776, -3043521, 2244121, 5053566, 30515206, 22383222, 26424250, -610959,
--36342404, 21170430, 9583146, -8630200, -13141526, 20238422, -4168803, 25630218, 42174432, 33003066,
-5191005, 2764348, 30982820, -6324340, 9190693, 25756918, -18090402, 29804926, 17832168, 10561325,
--21634288, -10546292, -28712930, -914291, 9183714, 41925860, 17190606, -39087960, -4115653, 25159382,
--4223027, 12219182, 16372415, -27721866, -7379828, 13463649, 2708514, 7513509, -12641699, 8947491,
-14660871, 1956358, -354335, 22276384, 3668439, -4813048, -6382859, 7399692, -2573222, 11986180,
-1274532, 9081708, 9684078, -1540283, -11327439, 21976274, -3799972, -6694244, -2071785, -14852534,
--15652471, -9783936, -11057930, 7196755, 12304008, -12986907, -11892228, 2687039, 18811420, -28098750,
--7566122, 10990821, -4082903, 184147, -4590247, -2922725, -21026012, -146566, -6175089, 5763846,
-776315, 3535832, -564788, 1934346, -5052492, 8796093, 4145180, -2320893, -4952098, 3730716,
-435939, -1570884, -55158656, 12639552, -9129490, -2161979, 43073692, 18519362, -13506062, -10454487,
--163746, -27857694, -34135328, 2892124, 295279, -19200652, 20379620, 2477659, -19704236, 12459700,
-37047316, -4955856, -21351894, 13415330, -12576738, -13691282, 6908455, 30103426, -9805410, 4417911,
-8243116, -9269613, -22413286, -14687714, 29705604, 10468446, -29310468, 25075630, 9816685, -20065014,
--10509785, 41286984, -13441100, -31661426, -16293495, 54871964, -54175644, -25087440, 32115618, -14530411,
--17437568, -51592220, 40235792, -33029910, 11806865, 1729798, -6222871, -58262840, -17252346, 49894636,
-31425738, -39412768, -10826539, -17059610, -8109435, 8099235, 10801843, 13001940, -68880536, 37674916,
-28840168, 30320858, 434865, 15881178, -33725156, -29931090, 58885612, 24196236, 6488085, 23746874,
--31758598, 6405944, -14076218, 15180025, -8610873, 41369124, -16902844, -14350559, 5687611, 5016522,
--15691126, 9443022, 4494147, 3548180, -3003256, 2123325, 3271691, 3395709, -3931506, -2207613,
-8600135, 529355, -4655745, 18124226, 5267241, -16052977, 1704028, 15552077, 3975529, -15266998,
-20450486, 36885716, -18192944, -21095806, -5812702, -4731980, 12418898, 27033598, 8091719, -24953760,
--8416525, -3600793, 3626026, 7633231, -4306779, 11079405, -8083666, -921271, 6349573, -10664404,
--45574972, 7809325, 56734372, 17680232, 6018860, 1475858, 4187593, 24285356, 33273648, -7709467,
-6147709, 8546985, -5828808, 20039780, -10695005, -2929705, -8116415, 15377057, 11388643, -6395743,
-10462540, -15236933, -12443594, 15355045, -10019085, 16881906, -11404749, -5104032, -428960, 9191230,
--678605, 6818261, 2694555, 17195438, -12462921, -2554432, 201863, -6956237, 16579648, 14390288,
--12060268, -4325032, -7452305, 3753802, -15530065, 8240969, 4653060, 7558606, -6270116, -4758287,
-18884434, -22901302, -4054986, 9550397, -6300180, -4229469, 9825811, -28125594, 6662568, -10230075,
-1568200, -10018548, 24144696, -7973070, -10586021, 9882183, -5618354, -15974594, 30736934, -928250,
-3051038, -6969122, -11987791, -14073534, 15454366, -17556752, -8536784, 17718350, -24391120, -10650982,
-3027415, -2349884, 2876554, -453119, 3362423, 10743861, -3988951, 4169340, -5053566, 11279658,
-6118181, -549756, 864362, 6847252, -6170258, 4959614, 723702, 5462662, -2592550, 8527121,
--4470524, 2248952, -7567196, -6513855, -10302553, 1846836, 511638, 3360275, -5090610, 11368778,
--3856881, -2018098, 9716290, 8587787, 4551055, -4069482, -6655589, 5847598, 7738994, 4851166,
-3301756, -151934, 6992744, 7616588, 3318399, 6464463, 789737, -5091684, -300648, 14928233,
--42287176, -119658328, -98298920, 52078088, 14983530, 119087096, 212701280, 31659278, 67102960, 24467354,
--169536848, -53552336, -114994528, -138956688, 3964792, 22286048, -57943404, 84127672, 110051560, 61826056,
-175484848, 101261904, -22524956, -41554344, -81365472, -158361888, -125089848, -36792300, -111544056, -15458124,
-96311960, 16170552, 22443888, 145644496, 74282000, 46027552, 151780384, 23479512, -41867880, 59427852,
--79454208, -157319824, -65857416, -132712344, -166206112, -2324651, -34698504, -43645996, 110716200, 122110216,
-77644952, 184184848, 148529632, 70176544, 63369020, 36800892, -123001424, -113037096, -143292992, -189079488,
--151702544, -63895156, -43982076, 3999152, 108756088, 132379480, 138436464, 132839584, 122972432, 26353920,
-2264522, -20769388, -93776856, -102605160, -59391880, -107593224, -45352172, 9517648, -23533200, 54172960,
-97235376, 29862370, 41058276, 18399104, -26593364, -16446504, -40691056, -52773336, -6400575, 14998563,
-367757, 43750684, 40218072, 4694936, 38710004, 134218, -49121004, 43423192, 12976707, -43511240,
-30601642, -32198296, -65643744, 30071750, -46743740, -115453552, 1731946, -50758996, -33752000, 114666496,
-51730196, 54581520, 163784816, 108777024, 60182692, 71656160, -17970144, -103492072, -131838856, -178711440,
--197983504, -125429152, -80383000, -13737990, 75077640, 167717392, 184826944, 171645680, 178404352, 95595768,
-4105989, -45518600, -117962352, -150462368, -97784592, -108713672, -87010672, -17450988, 2742874, 11485279,
-42071888, 36158792, 31053150, 56232396, 55504936, 47275240, 55187644, 38605312, 12290049, -4423280,
--24950538, -54898808, -61031484, -51034948, -54644332, -40052716, -21967684, -3133179, 16164109, 40825812,
-44159780, 40898288, 37124088, 26186416, 9602473, 817654, -3697967, -15650324, -16220481, -9794136,
--12292733, -14273250, -10107132, -15697569, -14224932, 247497, 1376000, 110595, 5337571, 2545842,
-2959233, 12268574, 12438762, 13592498, 15623480, 8404177, 2361158, 529355, -4701916, -9816685,
--12713640, -14305999, -14755897, -10423349, -4828617, -312996, 3998615, 8468602, 8866960, 9455371,
-9275519, 5036386, 177704, -948651, -3879429, -4543539, -3332895, -1042603, 864362, 2592013,
-2745558, 2111513, 460098, -2187212, -4085588, -4489852, -4865124, -4706211, -3590056, -1403381,
-1792612, 3970697, 4594542, 5500780, 5881421, 4587562, 3154117, 1469416, -689879, -2100239,
--2970507, -3582540, -3296388, -2416993, -1619740, -624918, 387084, 992674, 1302449, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-10554345, 5538361, 401043, 8317741, 3059627, 3714610, 2408940, 3423089, -24696, -33286,
+-1786706, -5329518, -3050501, 1511829, -200790, -922881, -573915, 2948495, 2304250, 105764,
+2659659, -2349884, -6079526, 2031520, -1364189, 761820, -3068754, 2532420, -2500745, -1211718,
+-950262, 4478577, -975494, 21475, -1776506, -435939, -4912906, 1746441, -780073, 2756832,
+-2304250, 386010, -1056562, -3927211, 1328219, -330712, -1019518, 1844152, 3344706, -615254,
+-1953673, -5776731, 592169, -3408594, 1672353, 121870, -2190970, -27380, -906238, -753230,
+-4154307, 2789045, -3677029, 2127083, -1410360, -2433099, -2063732, -4427575, 2534568, 290447,
+1293322, 2761127, -2818036, -4543539, 3011846, -4352413, 205622, -2881386, 1001801, -2217277,
+2066416, -1093069, 1122060, -1906429, 419833, -854699, 1244467, -885300, -970663, -947577,
+-883690, -1706713, 321049, 487479, -241055, -1334124, 1027034, -995359, 213675, -648540,
+-1133871, -391916, -362388, -142808, -197032, -126165, -923418, -486942, 219580, -545461,
+-248034, -270583, -630286, -165356, -452582, -601832, -505732, -15754477, -202937, -2121177,
+4103305, 43487, 1560684, -1335198, 2027225, 365072, 1771137, -1854889, 10121627, -2243584,
+-1453846, -4394289, 1435056, -5298379, -1712618, 356482, -2580202, -73014, 3702262, 2094870,
+1394791, 2470143, 3597572, -4442607, -1699733, -125091, 2281702, -4195110, 4035122, -3517578,
+-1769527, 3204046, -629750, 708670, -2594697, 2956011, 3124589, 3323768, -5180805, -1620276,
+5576478, -117038, -851477, -1295470, 6082211, 3928285, 4704063, 41339, -1109175, -1452773,
+-340913, -171262, 686658, 1777580, -5892159, -577136, -2746095, -3525631, -459025, 956704,
+-3057480, 769336, -2336999, -903017, -945430, -119722, 2037962, 1838783, -1066763, -746787,
+-1334661, -4827543, -1131187, -3012383, 79457, -3958349, 1060320, 12885, 3950296, -1414118,
+543313, -3475166, 299037, 430034, -1596117, -1693828, 1678259, 3758, 447213, -210990,
+1178432, -360240, 490163, -250719, -270583, 1376537, 656593, 545461, 221728, -209917,
+850940, 5290326, 6274947, -4456566, 513249, -3809099, 5745056, 1009854, -2451353, -3454228,
+-3061238, -685584, 680752, 1481227, 7661148, -4646081, -784905, -1880122, 2968359, -8675297,
+-1064615, 5436355, -207769, 4558571, 1985886, 3644280, 3797825, 1616518, -810138, -4105989,
+1278290, -1192390, 456877, 6365679, 1562831, 5452998, -2954938, -1568737, 363462, -7479686,
+811212, 5480915, -1686848, 454730, -4694400, 3439195, -135291, 1492501, -5545340, 3166465,
+-3743601, -2119566, -3907883, -4587562, 2549600, 820876, -1523640, -2380486, -2247879, -1676111,
+-1152662, 2495913, -2595234, -4661114, -7136625, 6484864, 4970351, 205622, -7139310, 2085744,
+-3453154, 2723546, -2350958, 440771, -4395899, -2800319, -5709086, -2623688, -845035, 5453535,
+3235721, -6229313, 2618856, 69793, -588947, 2627983, -418222, 2072322, 4333085, 161598,
+872952, 2839510, 549756, 512712, 2823941, -574452, -126702, 151398, 324270, 541703,
+664646, -710817, 784368, -671089, 162672, 72478, 688805, 99321, 1771137, 1518271,
+66035, -159988, 1736777, 838592, -1388348, 181999, 596464, 26716844, -9944460, 11959873,
+-9532143, 799401, 2826089, 2793339, -7872138, -2685428, -2655364, -13170517, -89121, 677531,
+-4757213, -785442, -74625, 9385577, 1720671, -6578280, 4772246, 5210332, 1149441, 9514963,
+-7107097, -2612951, -3806952, 1994476, 7618735, -572841, 463320, 2822331, -1384053, 3394098,
+1523103, 8706972, -1335198, 3401614, -5734318, 5196911, -4021163, 5804649, -122943, -6107444,
+-933082, 8778376, -407485, 5933498, 3554086, 5705864, 491237, -4548371, -3703873, 76773,
+-2757906, 4681515, 3097745, -4668630, 623844, -3651259, 6185827, -1704565, 4959077, 5925445,
+1023276, 6109054, -299574, -2986613, -1027034, -3801046, 156766, 8033737, -5063767, -5183489,
+-1970316, 2269890, -3553012, -2206003, 1544041, 3852586, -1620813, 1406602, -7820599, 1908039,
+492848, -571768, 2720325, 160524, 722628, 1844689, -250719, -1022739, 828392, -1810329,
+551903, -761283, 214212, 329102, -289373, -637803, -1572495, -134755, -1254131, -786516,
+-535797, -2610266, -22202296, 2502355, -6493991, -4623533, -7129109, -8650601, 3498788, 7860864,
+-1115618, 3097745, 1293322, 4070019, 965831, 361314, 2472828, -4702989, 11118597, -506269,
+-6385006, 7329899, -2165737, 3151969, -7206419, -4446902, -5091684, 2298344, 1402844, 5752572,
+222265, -3457986, 642635, -3079492, -3417720, -3771518, -1289564, -5278515, -2667175, 5060545,
+-4598300, -255014, -3588982, -5605469, -2488934, 785442, 1860795, 3679176, -2820183, -2547989,
+3601867, 696858, 1378685, 1020592, 2242510, 3418257, -5400922, -1745904, -518617, -7545721,
+2051921, -462783, 4493073, -4393752, -3382824, -4102231, 747861, 4799626, 3684545, 8410620,
+5620502, -5080410, 2117419, -2262911, 3968013, 2542084, -5550709, 4088809, 1101122, -6111202,
+816044, -1054951, 548145, -1088774, -4207458, 845035, -3015604, -3115462, 1182190, -1682017,
+745714, 2338073, -1508607, -1955284, -2097018, -3078955, -578747, 2499134, -637803, 2596845,
+25770, 1777043, 1163399, 958315, -1126355, -373125, 433255, -1028645, -1228361, 358630,
+-1188095, -387084, 317828, -2144263, 1236951, -1064078, -392990, 324807, -88047, 246424,
+704375, -916976, 622770, 1555852, -28246926, 7887171, -8353175, -6940131, -4966056, 1060857,
+-1374390, 16805670, 1744831, 4102768, -1762010, 171799, -6761353, 6921340, 2087891, -883690,
+1466195, 9004399, -4358318, -1429150, 2149631, 726386, 4561256, -3776887, -1653026, 5018133,
+1896765, 4631586, 634581, -4687420, -3049427, 2816425, -375273, -1518808, -2905009, -1619203,
+-106837, 8541616, 2218888, -1414118, 266288, 734439, -2469606, 6185290, 4737349, -1336272,
+-6293738, 1708860, -3292093, 5891085, 4575214, -4392678, 1843078, -5720360, -5113159, -4459787,
+-5652177, -1872606, 1348620, -3340411, 367220, -3700651, -3147137, 6765111, 4314295, -5531918,
+-7536057, 963683, 6566468, -4899484, -3636227, 5588826, 4391067, 6359773, -3954591, -69793,
+1843615, 2685428, 7101729, 2005750, -844498, -163746, -5045513, -663036, -18790, -4287451,
+394600, -1187559, -1932735, 193274, -521302, 2274722, -448287, -737661, 1100585, -550293,
+-1759863, -1095754, 454730, 1859184, -768262, -545998, 122407, -324270, 3360812, 703301,
+4336843, -2910377, 839129, 330176, -1712618, 67109, -81068, -2176475, 645856, -327491,
+-2464774, -2238752, -1163399, -2135136, -1652489, 705448, -1057099, -14930917, -1480690, 2512556,
+7260106, -1416266, -3805341, 1700270, 10669236, -13439490, 3114925, -2729452, -2495376, -6051609,
+3635153, -10771241, -7010461, 3699578, -5630702, 3402688, 15341623, -2718178, 6200859, -7218230,
+7408819, -1928977, 2209761, -6475200, 3021510, 1833414, -3468186, 1520955, -699543, -3333432,
+-221728, 4209068, 6605123, -5177046, -8248485, -6541772, -6054830, 779000, 4844186, 12824235,
+-146029, 8633958, 9025337, -8402030, 6456947, -12355010, -4513474, 774705, -5491116, -5126581,
+3426847, -11966316, -2361158, 8311836, -3587372, -3138011, 1101122, -3663070, 3403762, -3635153,
+5837935, 7526930, -2085744, 2331094, 316217, -7646116, 659814, -4953708, -3402688, -6045167,
+3433826, 2609193, -5789616, 453656, 4320737, 3995930, 5117991, 5253282, -802085, -5031554,
+4159139, 2153926, 2493229, 1336272, 3009698, -363462, -92879, 416612, 1241782, 1431298,
+-2046552, -657667, -1649804, -1128503, 2418604, 2042794, 2334852, -4256850, 871878, -559956,
+-1735167, -2075543, 2188286, -1381906, -2302103, 549756, 555125, -798864, 5150740, 1667521,
+-1001264, -1178969, -2381023, -703838, 2110440, 3157338, 812823, -38655, 3230889, 35344896,
+-1748052, -14031121, -1790465, -651761, 1304060, 4420058, 1782411, -1658931, -1488206, -7084012,
+-3372623, 3913252, 8611409, -7121056, -4489852, 5735929, 437013, -2113124, 2281165, -599685,
+-8231842, -8386461, 11337103, -1093606, -751619, -1932735, 5811091, -485868, 590021, 3684008,
+-6251862, 6573985, 2724083, 1045288, 2499671, 6571837, -15902116, -7139310, -3884261, 14603963,
+1868848, 1066226, -4526359, -4994510, 4361540, -688269, 5060545, -1836099, -10166724, 1060857,
+1223529, -1564442, 4915590, 2187749, 1308891, 8086350, 19760070, -1591285, -1686312, 7505456,
+2274185, -2361695, 5159867, 15363635, -1741609, 2920041, 5558762, 4454418, 3990562, 4065724,
+4560182, 3500935, -4080756, 6117107, 10963978, -2561411, 4196183, 37044, -1395328, -7619272,
+4724464, 1770600, -631360, 2277943, 2621541, 606127, 292595, -2582349, -2957085, -1182190,
+-5878200, -2628520, -3987340, 5076115, 2486249, 1916629, -838592, -788663, 288837, -3393561,
+-3758, 1219234, -4669703, 4064650, -2041183, 706522, -1435593, 202937, 1537061, 1837709,
+-3640522, -3611531, -3001645, 385473, -629213, -1015760, -286152, 2499671, -674847, 244276,
+-1501091, -3212099, -1750199, -105764, 7136625, 7946763, -10135049, -2946885, -8603356, 8507793,
+15950972, -7649874, -1795833, -8776229, -3812320, -10618233, 7560753, -6487548, -2633889, -700080,
+75699, -4236449, -5195300, 9507984, -8641474, -3210488, 991601, 6481106, 6943352, -9982041,
+-2923799, 3812320, -8563628, 4848481, -6791417, -2790655, 2513093, 179315, -3710852, -1056562,
+2058363, 11110007, 1387274, 2491081, 14496, -9542344, 10412611, -5126581, -7785702, 6215892,
+-5545340, -6316287, 8213051, -3735011, 1065689, -1840930, 1118839, 10746008, -1825361, 2385854,
+-9402220, -770410, 10988137, 2421825, 10887742, 9271224, -3040837, -2414845, -12617540, 1907502,
+-2101313, 8345659, 10293426, -5939403, 2582886, -18605798, -5052492, 6114423, -6389301, 9584220,
+674310, 2039036, -3379603, -760746, -4424890, 746251, -3040300, 6751689, 6713034, -347892,
+2308008, -148176, 3809099, 1584306, 2769180, 5694590, -1694902, -6508486, 3000572, 1421097,
+4130148, -1117228, 4380330, -939524, -1471563, 1042066, -2575370, -1790465, 483184, -4596152,
+1308354, -1636383, 4066797, 1683090, -255014, -914828, -2613488, -4086125, -279173, 485868,
+1679332, -1540283, 946503, -3850438, -5369, 163746, -1953673, 2475512, 303869, -6442,
+1129040, -1306744, 248034, -44560, 6364605, -8176007, 2750927, -7647726, -865973, -10317585,
+16855062, -5007932, 1114007, -5368709, -15441481, 8846559, 3076270, -11533061, 7084549, -5214627,
+-3847754, 3987340, 15953656, -8014409, 15410880, -338229, -10888816, 422517, 3575560, -9584756,
+10510859, -5564130, 7774428, 16938278, 1627793, -7959648, -2250563, -935766, 3859028, -6773701,
+-3713536, -940598, 8333847, -3016141, -3390340, -11138998, -407485, -13163538, -2451353, 14855755,
+-3368865, 8448201, 775778, 2234457, -19534586, 242666, -12509092, 10030896, 17453136, 5369783,
+4366908, 1063541, 2595234, -10215580, 3569655, 5426691, -4563940, -1290101, -4047470, -2582349,
+7858180, 162672, 9536438, 29268592, 10677826, 2908230, -10075993, -9362492, -6076305, 5741835,
+-9976135, -877784, -923418, 2026688, 5619965, -5475010, -1044751, 5434744, 5965710, 1221381,
+1007170, 4057134, 5136781, 4290136, -60130, -961536, -977105, 446140, -2137283, -2662880,
+2323577, -1349694, 3617973, -4444755, -1412507, 3063386, 2602213, -269509, 2351495, -2290291,
+1069984, 1610613, 2184528, -2513093, -2470680, 3470334, 2480344, 1946694, -898722, -1753420,
+841814, -4946729, -1297617, 790274, -2632815, 1200980, -1825898, -1287953, 563714, 399432,
+-412317, -981937, -3278671, 30987116, -16178068, -63888, -7841537, -15140297, -20332912, 6126234,
+-6255620, 6463389, -19224810, 4228932, 7377680, 6669011, -7854422, -17626546, -13795435, -11531450,
+527744, -6556268, -12763569, -8677981, -4226248, -10367514, -7116224, 2136746, 13914620, -20401,
+2291902, -156766, -11567958, 7662759, -731218, 2469069, -2309619, -7576859, 7063074, -9528922,
+-13405130, 12619688, -13069585, 2945811, 221728, -18513456, -10889353, 7634305, 4832, 9320616,
+-5667210, -19690814, 258772, 963683, 7789460, 8224863, 18997178, -10550050, -38102804, -13186623,
+-12773770, 8858907, -24707874, -8221105, -3839701, -22707492, -7313793, -147640, -4033511, -4065724,
+5350456, -5952288, -206695, -5570573, 5735929, -13262859, 5208722, 11083700, -13323525, -6637335,
+7073811, 5525476, 4886062, -13758928, 3670050, 399432, -1632088, 7654706, -1522029, 6335614,
+5740224, -978716, 2025077, 1407676, -1340030, -4425964, 7993471, -2276333, -5026723, 398358,
+136902, 4323422, 1802276, 244813, 1627793, -3802657, -3770981, 695785, 1800128, 2684892,
+4735202, -278636, 2358474, -200790, 2127620, -4464082, -1682554, -3024194, -2639794, -257698,
+-279710, 1966021, -4967130, -2179696, -3624416, -2587718, -5216775, -6614250, -5729487, -409633,
+-182536, 992674, -3376918, -4562866, -17725330, 7021198, 8766028, -2913062, -3416110, -8823473,
+-9756555, 22551800, 8203925, -21007222, 7272990, -11430519, -1100585, -10378788, -21616034, 6382322,
+-11272679, -4671851, 878858, 678068, -5518496, -18226230, -11352135, 9020505, -11228118, -250719,
+-9938017, -15146739, -5950677, 16956530, 2676302, 3079492, -14760192, -4860829, -3052648, -1838246,
+5945846, 7489349, 9500468, 11902965, -5811628, 6752763, 2280628, -6723235, 4139275, -11361799,
+-10042707, -8526584, 3668976, -9862319, 423054, -14882599, -13217762, -6655589, 15489800, 12276627,
+11752641, 13172665, -12070469, 16476568, 474594, 7670275, 22391812, -4468377, -4206921, 3811784,
+-10888279, 4617627, -5155035, -13805099, 1747515, 11579232, -13571023, -9450539, -1730335, 12438225,
+-10334765, 1348083, 3699578, 7554311, 1767379, -2871186, -7078643, 2061584, 5140539, -2687576,
+578210, -3428995, 1068910, -3248069, 1284732, 414464, 1838246, -1113470, 1239098, 2674691,
+6236830, -616328, -239981, 710280, 2846490, -4512400, -2066416, -4985920, -1560684, -969052,
+-6047851, 1313723, 5261872, -289910, -7188702, -1007170, -766115, -5951751, -7047505, -9907416,
+-4320200, 4067871, 495532, 2936684, -1669132, -1616518, -3772592, -329102, -9029095, -1414118,
+5171141, 8666707, -588947, 2752000, -5199595, 851477, -3163780, 4544613, 1742683, -8490613,
+-19796042, 22637162, -17690970, 23441394, 13120588, 8924942, 5017596, 9206799, 10005126, 9244917,
+25197500, -8828842, 1775969, -1692217, -4349192, -774168, 3123515, -2350421, 4847408, -1644973,
+7881265, 6601365, -1419487, -4376035, -25116432, -8959839, -18218178, -853625, 9605157, 9677098,
+3082713, 4923643, 7241852, 5969468, 7019587, 17974438, 26831198, 17985712, 3631395, -3428458,
+-5182415, -7719667, 9388799, 9543954, 10721849, -7990787, -6281927, -9907416, -1632625, 13056164,
+128312, 15648713, -9498857, 8373039, 5057861, 14041322, -29389924, -21069498, -8617852, -11834246,
+-12081743, 3606699, -4930086, 18479634, 5494874, -20646982, -1697049, 33356326, -11248519, 10388452,
+-5039608, 13696114, -6385543, -4194036, 497142, -5689221, -7441568, -557809, 5616744, 8235600,
+5763846, -2190433, 6499896, -1750736, 3011846, -8527121, -5779416, 5425618, 3474629, -8574365,
+-3716221, -3654480, -1135482, 2100239, -2238752, -4218195, 1944010, 353261, 1414118, -700617,
+-2402497, 3767760, 1254667, -2181844, 5040144, -733366, 1494649, -967978, 5943161, -5066988,
+5295695, 2283849, -4940286, 3244311, 195958, 841814, -5150203, -15129022, 5679021, 94489,
+1114007, -1767379, 5774047, -1433445, -2670396, 1802276, 4516695, 3689377, -2206003, 4583267,
+-14397804, -7163469, 12100533, 5334887, 8950175, 23195508, 2066953, 15526844, 22664542, 15760919,
+-10125385, -22877680, -682363, -10460930, 24850144, 7205345, 19435264, -2689187, -10276246, -3748433,
+-11221139, 4535486, -8612483, 1117765, -9603010, 5112622, -6990596, -2918967, -15476915, -15371688,
+-1435593, -22049288, 12202539, 8396661, -6518687, 11373610, -5291400, 4452808, 12699681, -13929653,
+-18221936, 3302293, -3903589, 30798674, 13167296, -33716568, -9012989, -9547175, -17313550, -18403398,
+-37602440, 6674379, -13408351, -3513820, 5508296, 1392106, 7866770, -1479079, -4357245, -28563144,
+3504693, -12981002, 3618510, 16764868, 3636227, 11242077, -16916266, -22598508, 4679904, 14013941,
+9547712, 5262409, 9078487, 14565308, 18341120, 18737332, -16543140, -10035728, -11883101, -8592619,
+-13890461, 19761144, 11712376, 11135776, 3175055, 8511551, 7429757, -711354, 10463614, -15946140,
+-5472325, -1920924, 1443109, -3469260, -11157788, 621160, -2145336, 1444183, 3812320, 11521250,
+789200, 5373541, 5567352, 832687, 5904507, 155156, -3324305, 667331, -8503498, -3562675,
+4794794, 6617471, 2220498, 1173063, -10422812, -1077500, 554588, -5151277, -3346317, 1515587,
+3590593, -9793062, -10572599, -4975183, 3853660, 3058017, 5704791, 1243930, -3221762, 2338073,
+-10923176, -9995463, 40831180, 26975616, 37464464, 2448668, -7403987, -25419764, -7485591, 4275640,
+5922760, -6045167, -19641960, -7086696, 32370094, 13397077, -4457639, 9928354, -713501, -11866995,
+-3455838, -7736847, 22074522, -1675574, 1309965, 9540733, 641024, 10824391, -97711, 15314243,
+-14059039, 17642652, 3582540, -8186208, -4952098, -9069897, 15922518, -22022444, -23791434, 15075872,
+24908126, 1189706, 17197586, 23656680, -26601416, 8879845, 5449240, -1439351, -231928, 3973919,
+-9979357, 18579492, -11252277, -8928700, 7505992, 967978, -2003602, -4293357, -5539971, 2699924,
+-17570712, -5241471, 14164265, -17317846, -3988414, -11689827, 445603, 35116728, -11018739, 2280091,
+9395241, 197569, -8075076, -21896280, 21422224, 10016401, -44146896, 10966125, 11115912, 8240969,
+-9896678, -4586488, 22557168, 1037772, 1665374, 5808407, -15684147, 625992, 9985262, -4052302,
+5771363, -1228898, -5095979, -13053479, 1996086, -1694365, 12125230, -1104344, -513785, -8684961,
+9606231, -3206730, -3337190, -13778255, -6937446, 4878009, -8886287, 760209, -4379793, 5546951,
+-5203353, -11078868, 5609764, -11936251, -3280281, -5411122, 558346, 754304, -4491999, 11949136,
+-1476932, 16103443, 9805410, -1590212, 1686312, 10313827, -7134478, 1870458, 1219234, 9900973,
+-8942122, -5270462, 454193, -18234284, -43700756, 38878044, 23174570, 12326556, 8668318, 19206556,
+-44100188, 18107582, 20364588, 8722542, -28232430, 15710453, 28540594, 13230110, 31470836, 11481521,
+537945, -1247151, -987306, -5358509, 13334800, 22362284, 21296058, 7446937, -6544457, -11105175,
+2654827, -10110353, -11840688, 12458090, 8564165, 2374043, -11866995, -11543261, -2538326, -10035191,
+5118528, 25701084, -4570919, -8307004, 8672076, 4659503, 7612293, 8977019, -1968169, -5184563,
+20645908, 13663365, 6748468, 9113921, -1666447, -20517596, 4757750, 13662828, 1768453, -15270756,
+20434380, 5331128, 28425704, 1057099, 25553444, 2734284, -8378408, -2719251, 6127845, 36381056,
+-4597763, 13078175, 8963060, 17190606, 9003325, 81068, -1105954, 11215770, 51760800, 2423435,
+20765630, -17547088, -13107703, 6577743, 8137890, 10091563, 4148402, 1658394, -25440702, -10061498,
+-26676042, 1458141, -4582730, -8808441, -7460895, -2962991, -11255499, 1416802, -1169305, -11829951,
+8459475, -13778255, -6696391, -12439836, -8509941, -814970, 1367410, -9949829, -11552925, 2781528,
+7340636, 8579197, -1747515, -3278671, -14862734, -19422916, 1940252, 2381559, -8857296, 17685064,
+17107392, 25323128, 8878771, -5564667, 3457986, 7827578, 9582072, 11511586, 1696512, -11989938,
+3025268, 15389405, 7876970, 803159, 6154152, -28472948, 31227096, -463856, 27638652, 695248,
+1881196, -25073482, -7707856, -11271605, 19173808, 4896263, 8500277, 5087926, -19262928, 1930588,
+1547262, -16893180, -24217710, -24720222, 8383240, -9171366, 22544284, 1327682, -7152731, -5819681,
+4860293, -8694624, 1451699, 6645388, -9490267, 5365488, 7592429, 2630668, 2163053, 17093970,
+28659244, -5572720, -242666, 14450954, 11777337, 17301738, -12822088, -4968204, 5173825, -17104170,
+1645509, 1546188, -22816476, 29427506, -1477469, 14884209, 12753905, 9040369, -17379048, 1711545,
+14761803, -11978664, 26307748, 7319161, -9698573, 21882322, 16371878, 11553999, -36772436, -7386807,
+7231651, -12438225, 1893544, -20371030, -5212480, -30919470, -8969502, -4636417, -8667781, -34267396,
+-3556770, -9270687, 51552492, -7318088, 10405632, -5181878, 8144869, -4206921, -8559333, 5718749,
+-7202660, -950798, -3940096, 14025216, 4845260, 6253473, -22457310, -19800336, -15059229, -6045704,
+3796751, -27885076, -4674535, -2085744, 1939178, 10446971, 7606924, -656056, 10713259, -9630927,
+48855, 787053, -16335371, -22109954, 4217658, -6318971, -20890720, -5463199, -9945534, 1633698,
+-22334366, -2297271, -9870909, 13301514, 2684, -9205189, -3663070, 4319664, 4941360, -1860795,
+9756018, -9842454, -6520297, 13214541, 12097312, 21910238, -7486128, -1610076, -3106872, 5869610,
+15591268, 13636521, 10031433, -8127689, 6086506, 17149804, 16530255, 7013682, -21041582, -24319716,
+10110890, -3746285, 7178501, -4850092, 19757924, -15559593, -3604551, -5663988, 17169668, -13717052,
+30464204, 37598680, 38320772, 1945620, -7682086, 5858873, -5528160, 9055939, -2142115, -651761,
+-11860015, -31580894, -10865730, -30261266, 16608102, 15666430, -18877456, -14186277, -18925774, -9038222,
+-3161633, 40247600, -24696, -21168284, -22797686, -1762547, 27930172, 13174275, -57512832, -12042551,
+-10590852, 7088307, 20910586, -25163676, -8359080, -15147813, 5956583, -34185256, 16281147, -6035503,
+-1286343, 8977555, 868657, -16940962, 32821066, -3735548, 15339476, 35310536, 72653664, 43499428,
+-1599339, 24269250, 36791764, 47617764, 51496120, 14506252, 31336618, 8739722, -123480, 19191524,
+-15934329, 31728534, 13222594, -14324253, -48399988, -35185444, 3999152, -13972065, -10360535, -9190693,
+-5850819, -6228240, -20263118, -13251048, 184147, -3389266, -1632625, -6540162, -2301029, -10602127,
+12202002, -21602074, -9263708, 5848135, 3362960, 1606855, -6054294, -6962142, -4320200, 3988414,
+-3955665, 10673531, -13452911, -16465294, -16769700, -10277857, 11770358, 13553843, -5756867, -2692945,
+4467303, -2918967, 22377854, 4707284, 1442572, 18121540, 10945187, 10257456, 25479894, 16876000,
+19022410, 5864778, 8859444, 21271900, 7709467, 16466905, -15955804, 8644695, -7516730, -16585553,
+18587008, -23964306, 39470212, -4922570, -7555921, 506806, 31369368, -21355652, -4009352, -1140314,
+146029, 11268384, -8477729, 16349867, 5455682, -3319473, 3546032, 1701344, 12703976, -40009232,
+-12865575, -1409286, 3897146, -4125316, -29337310, 23627688, -1649804, 3076807, 8286066, -19106698,
+-8973260, -44097504, 11285563, -10462540, 8058433, 31906776, -9168145, 6561637, -4510790, 15132244,
+-26613764, -35249332, 30348776, -3043521, 2244121, 5053566, 30515206, 22383222, 26424250, -610959,
+-36342404, 21170430, 9583146, -8630200, -13141526, 20238422, -4168803, 25630218, 42174432, 33003066,
+5191005, 2764348, 30982820, -6324340, 9190693, 25756918, -18090402, 29804926, 17832168, 10561325,
+-21634288, -10546292, -28712930, -914291, 9183714, 41925860, 17190606, -39087960, -4115653, 25159382,
+-4223027, 12219182, 16372415, -27721866, -7379828, 13463649, 2708514, 7513509, -12641699, 8947491,
+14660871, 1956358, -354335, 22276384, 3668439, -4813048, -6382859, 7399692, -2573222, 11986180,
+1274532, 9081708, 9684078, -1540283, -11327439, 21976274, -3799972, -6694244, -2071785, -14852534,
+-15652471, -9783936, -11057930, 7196755, 12304008, -12986907, -11892228, 2687039, 18811420, -28098750,
+-7566122, 10990821, -4082903, 184147, -4590247, -2922725, -21026012, -146566, -6175089, 5763846,
+776315, 3535832, -564788, 1934346, -5052492, 8796093, 4145180, -2320893, -4952098, 3730716,
+435939, -1570884, -55158656, 12639552, -9129490, -2161979, 43073692, 18519362, -13506062, -10454487,
+-163746, -27857694, -34135328, 2892124, 295279, -19200652, 20379620, 2477659, -19704236, 12459700,
+37047316, -4955856, -21351894, 13415330, -12576738, -13691282, 6908455, 30103426, -9805410, 4417911,
+8243116, -9269613, -22413286, -14687714, 29705604, 10468446, -29310468, 25075630, 9816685, -20065014,
+-10509785, 41286984, -13441100, -31661426, -16293495, 54871964, -54175644, -25087440, 32115618, -14530411,
+-17437568, -51592220, 40235792, -33029910, 11806865, 1729798, -6222871, -58262840, -17252346, 49894636,
+31425738, -39412768, -10826539, -17059610, -8109435, 8099235, 10801843, 13001940, -68880536, 37674916,
+28840168, 30320858, 434865, 15881178, -33725156, -29931090, 58885612, 24196236, 6488085, 23746874,
+-31758598, 6405944, -14076218, 15180025, -8610873, 41369124, -16902844, -14350559, 5687611, 5016522,
+-15691126, 9443022, 4494147, 3548180, -3003256, 2123325, 3271691, 3395709, -3931506, -2207613,
+8600135, 529355, -4655745, 18124226, 5267241, -16052977, 1704028, 15552077, 3975529, -15266998,
+20450486, 36885716, -18192944, -21095806, -5812702, -4731980, 12418898, 27033598, 8091719, -24953760,
+-8416525, -3600793, 3626026, 7633231, -4306779, 11079405, -8083666, -921271, 6349573, -10664404,
+-45574972, 7809325, 56734372, 17680232, 6018860, 1475858, 4187593, 24285356, 33273648, -7709467,
+6147709, 8546985, -5828808, 20039780, -10695005, -2929705, -8116415, 15377057, 11388643, -6395743,
+10462540, -15236933, -12443594, 15355045, -10019085, 16881906, -11404749, -5104032, -428960, 9191230,
+-678605, 6818261, 2694555, 17195438, -12462921, -2554432, 201863, -6956237, 16579648, 14390288,
+-12060268, -4325032, -7452305, 3753802, -15530065, 8240969, 4653060, 7558606, -6270116, -4758287,
+18884434, -22901302, -4054986, 9550397, -6300180, -4229469, 9825811, -28125594, 6662568, -10230075,
+1568200, -10018548, 24144696, -7973070, -10586021, 9882183, -5618354, -15974594, 30736934, -928250,
+3051038, -6969122, -11987791, -14073534, 15454366, -17556752, -8536784, 17718350, -24391120, -10650982,
+3027415, -2349884, 2876554, -453119, 3362423, 10743861, -3988951, 4169340, -5053566, 11279658,
+6118181, -549756, 864362, 6847252, -6170258, 4959614, 723702, 5462662, -2592550, 8527121,
+-4470524, 2248952, -7567196, -6513855, -10302553, 1846836, 511638, 3360275, -5090610, 11368778,
+-3856881, -2018098, 9716290, 8587787, 4551055, -4069482, -6655589, 5847598, 7738994, 4851166,
+3301756, -151934, 6992744, 7616588, 3318399, 6464463, 789737, -5091684, -300648, 14928233,
+-42287176, -119658328, -98298920, 52078088, 14983530, 119087096, 212701280, 31659278, 67102960, 24467354,
+-169536848, -53552336, -114994528, -138956688, 3964792, 22286048, -57943404, 84127672, 110051560, 61826056,
+175484848, 101261904, -22524956, -41554344, -81365472, -158361888, -125089848, -36792300, -111544056, -15458124,
+96311960, 16170552, 22443888, 145644496, 74282000, 46027552, 151780384, 23479512, -41867880, 59427852,
+-79454208, -157319824, -65857416, -132712344, -166206112, -2324651, -34698504, -43645996, 110716200, 122110216,
+77644952, 184184848, 148529632, 70176544, 63369020, 36800892, -123001424, -113037096, -143292992, -189079488,
+-151702544, -63895156, -43982076, 3999152, 108756088, 132379480, 138436464, 132839584, 122972432, 26353920,
+2264522, -20769388, -93776856, -102605160, -59391880, -107593224, -45352172, 9517648, -23533200, 54172960,
+97235376, 29862370, 41058276, 18399104, -26593364, -16446504, -40691056, -52773336, -6400575, 14998563,
+367757, 43750684, 40218072, 4694936, 38710004, 134218, -49121004, 43423192, 12976707, -43511240,
+30601642, -32198296, -65643744, 30071750, -46743740, -115453552, 1731946, -50758996, -33752000, 114666496,
+51730196, 54581520, 163784816, 108777024, 60182692, 71656160, -17970144, -103492072, -131838856, -178711440,
+-197983504, -125429152, -80383000, -13737990, 75077640, 167717392, 184826944, 171645680, 178404352, 95595768,
+4105989, -45518600, -117962352, -150462368, -97784592, -108713672, -87010672, -17450988, 2742874, 11485279,
+42071888, 36158792, 31053150, 56232396, 55504936, 47275240, 55187644, 38605312, 12290049, -4423280,
+-24950538, -54898808, -61031484, -51034948, -54644332, -40052716, -21967684, -3133179, 16164109, 40825812,
+44159780, 40898288, 37124088, 26186416, 9602473, 817654, -3697967, -15650324, -16220481, -9794136,
+-12292733, -14273250, -10107132, -15697569, -14224932, 247497, 1376000, 110595, 5337571, 2545842,
+2959233, 12268574, 12438762, 13592498, 15623480, 8404177, 2361158, 529355, -4701916, -9816685,
+-12713640, -14305999, -14755897, -10423349, -4828617, -312996, 3998615, 8468602, 8866960, 9455371,
+9275519, 5036386, 177704, -948651, -3879429, -4543539, -3332895, -1042603, 864362, 2592013,
+2745558, 2111513, 460098, -2187212, -4085588, -4489852, -4865124, -4706211, -3590056, -1403381,
+1792612, 3970697, 4594542, 5500780, 5881421, 4587562, 3154117, 1469416, -689879, -2100239,
+-2970507, -3582540, -3296388, -2416993, -1619740, -624918, 387084, 992674, 1302449, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-10530723,
--12826383, 6532109, -2314451, 5718212, -2777770, -2840584, -5715528, 1399623, 1261647, -214748,
-134218, -602369, -4362613, -468688, -2477659, -2852932, -2704219, -62277, 370978, -176631,
--455803, 2226941, -566936, -6618545, 4184372, 2103460, -2230699, 708670, -25770, 114354,
-974421, 4326106, -2348273, 296353, -7511898, 3805878, 780610, 1742146, 2647311, 4283156,
--2333778, -1759863, -820876, -3753802, 340913, -528281, 3317862, -1721745, -188979, -1794223,
--2069637, 4039954, -2976949, -1413044, 410169, -2690260, 2317672, -57982, -1249836, 2515777,
-4568235, 328565, -142271, -592169, 3909494, -3808026, 67109, -557272, 2061047, -903554,
--1733019, 4261682, -42950, 935229, -1139777, 920734, 2298344, -1771674, -2511482, 175020,
-2244657, 3764539, -1644436, -1087701, 944893, 248034, 597537, -1658931, -521302, 1064615,
--201327, 762357, -1320703, -372052, -804770, -1115618, -815507, -734439, 617938, 153008,
--563714, 642098, 433792, -484794, -140660, -82678, -706522, -1264331, -345208, 49929,
-294742, 761820, -75162, 510564, 289373, -569083, 545998, -15329275, 2623151, 1826972,
-5393405, -2094870, 1645509, 6265821, -2405719, 1721745, -3777424, -5555540, 2054068, -3778498,
--4308389, -4329327, 1324461, 1665911, -7386270, 4362613, 2903935, -1250372, -2692408, 1741072,
--654446, -1677722, 555661, 2462627, 1835562, 3927748, 777389, -1186485, 4056597, -2023467,
-8824010, 1988570, 5445482, 2096481, 4780836, 2124398, 3302830, 1780264, 416075, 187368,
-6685654, 1134408, -1043677, 445066, 3543348, 2608656, 409633, -294742, -1342177, 745177,
-8153996, 2333241, 3784403, -3924526, -1991791, -4139275, -2588792, -4018479, 3049427, 1908039,
--2538326, -1829119, 1840930, -1915019, 2051384, -901406, -577136, -2780455, -4655745, 2018098,
--7581691, -1076426, -1592896, -1927904, 447213, -1778653, 390842, 2866891, 1423245, -1955284,
-389768, -1551557, -3280818, -539018, 1626719, -165356, -2523830, 928787, 506806, 969589,
-1791538, 65498, 284542, -1207960, -690416, -180926, 19327, 627602, -1345399, -1188632,
-129386, 8551280, 11814381, -3731253, 3114388, -5996848, -398358, 267899, 15119359, -1640141,
--4101157, -6637872, 69793, 4277788, 6910066, -1661616, -9260486, -2725157, -3582003, -2591476,
-3037079, -758062, 5757404, 566399, -3384971, -7508140, 2145336, -780610, 1643362, -980326,
-756988, 3553012, 1253057, -9424769, 1043140, 5923834, 2874407, 653909, 1357210, -1585917,
-4082367, -5607617, -620086, 4470524, -3223910, -84826, 7320235, -3504693, -431107, -2594160,
-4472135, -4874788, -3635690, 2130304, -5048197, -2534568, 6380711, 3713536, -5857262, -2216203,
--949725, -1519882, -2714956, 1988570, -2342368, 2293513, -153545, 267899, 959388, 4791573,
--637803, 6638409, 3393024, -5250598, -2462627, -2607045, 3956202, 1117228, -355409, -2161442,
-5325760, 1997160, -184147, -203474, -1435593, -1328219, 1522029, 536334, 1697049, 4133369,
-1449552, -314606, 192737, 253940, 1285269, -367220, 437550, 1930588, 354872, 2410014,
--537, 797253, 1194001, 1443646, 465467, 882616, 1026497, 827318, 1351304, -526134,
-358093, 897111, 1385127, -213138, -1202054, -1402307, 239444, 28406376, -10473815, 5777805,
--7996156, -813896, 296890, -563714, -4233227, 2346126, 3279745, 816044, -3076807, -6554657,
--235149, 4042101, 2865817, -2867965, -4942434, -374199, 4443144, 8123931, -4361540, -561567,
--3291556, -7062000, 799401, -3539053, 2157147, -2612414, 5519033, -9651328, 6539625, -400506,
--5759551, 1432909, 2428804, -652835, -3049964, 219043, 7572564, -255014, 1247151, -1039382,
-2898029, 1367410, -1788854, -2811593, -6226629, 4068945, -1305670, -1799054, 2390686, 75699,
--10467372, 8074539, -11266773, -6465537, -7981660, 1753957, -941672, 4816269, -2619393, 2578591,
--4809827, 2345589, -1264868, -1927367, -5306969, 3281355, 3719442, 6413460, -1561221, -572841,
-1716913, -1899986, -1156420, 1265942, 3673808, -4840428, 2399276, 3543885, 3881040, -6142877,
--5067525, 2158758, -3174518, 1653026, -69793, -329639, 526134, 819265, -281320, 1501628,
--1819992, 918586, -579284, 3658239, 194347, 929324, 792421, 275415, -1446330, -78920,
-330712, -390305, -22395034, 2284923, 238371, -1900523, -3453154, 3920232, -3036542, 2609193,
--802622, -37044, 3622805, 4715874, -2896956, 3474092, -1009854, -1912334, -6279779, -305480,
--8485782, -6229850, 7475928, 2669322, -2889439, -1054415, -871878, 5189394, 2741800, -2663417,
-4733591, 3149822, 1860258, 1640141, 2019172, 3605625, 3106872, 3063922, 8362302, 7523709,
-3256659, 838592, -5182952, 5786395, -7704635, 1531156, -2138357, 6267968, -4708358, -6133750,
-10566693, -2451353, -5641440, -5035849, 7868917, 4830228, 303332, 4046396, 5717139, 2623688,
-9236864, -542240, -1439351, 5240397, 3215857, 315143, 224412, -4789963, 2894808, 3000035,
-7461969, 3037616, 4653597, -2852932, -3806415, -8118562, -1848447, -4387846, -3476239, -3693672,
-4124779, -137976, 336081, -2372433, -2733210, -756988, -2401961, 759136, -1611687, -2685965,
-1125281, -257161, 121333, -2513093, -346819, 112743, -3153580, -426812, -734976, 220654,
--1404991, -1640141, -1000727, -602369, 78920, -520228, 525060, -732829, 909996, 223875,
-807454, 1752884, -376883, 1851131, 401043, 1220308, -819265, 388695, -1565516, -579284,
--242666, -1902134, -566936, -927713, -29732984, 8126615, -6255620, -9305584, -9199820, 5897527,
--6798397, 5223217, -8570070, 4900021, 4202089, 2627983, -9028021, 6380711, 5369, 3908420,
--7459822, 4335770, 9079561, 6966974, 364535, -3095061, 1377074, -1821066, -9546639, -1842541,
--4527433, 2326262, -5961415, 5334887, 5236102, -1908039, -108448, 7297150, -1458678, 4987531,
--3804804, -6146635, 3379066, 5369, 3492345, 8949638, 5493800, -215822, -15288473, -7271917,
--2022930, 2252174, -2253784, 8597988, -13267154, 4350265, 1932735, -21475, 4312147, -1620276,
-6616397, -13916768, -6432788, 5549635, -13984950, -2500745, 6696391, 2470143, -2999498, -9292162,
-3608310, 6182606, 4569309, -1566589, -9752797, -738198, 190052, -1007170, -411780, -4719632,
-2305324, -7617662, 4868883, 781147, -4471061, 1018981, -5401458, 530965, -6483253, -1735704,
-2428267, 2544231, 330176, -523986, -2159295, -1604707, 576063, -3767223, 3237332, 350040,
--1761474, 122407, -3232500, -2530273, 861141, -1267552, 1929514, -1653562, -869194, -1046361,
--1154809, -2156074, -267899, -1155346, -388695, 741419, -413927, -913217, 946503, -303869,
--760209, -787590, -1893007, -1300301, 381715, 1167694, -190589, -14039711, 1512365, 2335389,
-10994043, -10390600, 12006044, 3397319, -968515, -2828236, -1294396, 1105417, -8778376, -1690607,
-2815351, -2894808, -5150740, -1403381, 8307541, -8591008, -1863479, 8581882, 42413, -3420942,
-3035468, -4194573, 6329708, 2765422, -75699, 3147674, -3665755, -5796059, -407485, 424665,
-4738423, -10152766, -5458904, -4491462, -3124589, -3022046, -3064996, 1501091, 504122, 823023,
--7555921, -7787850, -6159520, 203474, -9708237, -5388037, 5826660, -3957276, 1293322, 597537,
--175557, 2405719, 3459596, 3265249, 3915400, 5709086, -1006096, 6177774, -389768, 3111704,
--511101, -4007741, -228707, -6448894, 3976603, -7544110, 7026567, -8415988, -120796, -8680666,
-828392, -8723079, -8355322, 3928821, 11522324, 3445638, -7418483, 5266704, 7516, -3313567,
--1952063, -3471407, 4588099, 3914863, 5640903, 981400, 4400194, -3743601, -390305, 4269198,
-515396, 1294396, 857920, -2128693, 2588792, -270046, 970126, 3777424, 1127966, -987843,
--2269890, -1086627, 1583232, 1518808, 1253594, 401579, -1766842, 97174, -368830, -4037269,
-3890704, 406948, 1428614, 140123, -940598, -1934883, 1374390, -1972464, -914828, 38830264,
-267899, -11457362, 1574642, -6314139, 15363098, -2752000, 4181688, 932545, 557809, -13882408,
--7204271, 7375533, 6470368, -10984916, -2086817, -537945, 9397388, 4504347, 3457449, 9190693,
-1287953, 403190, 7971996, -3069291, -12621298, 1622961, 9316321, 5410585, -3788698, -28454,
-6440304, 3823058, 1624571, -574452, -7162395, 3172907, -7773354, 532576, -14469208, 3521336,
-4212826, -1380832, -6758131, 8842264, 4583804, -2106145, 6868190, 3024194, -6129455, 10657961,
-991064, -4089346, 2345589, 10932302, 1556926, -519691, -9494562, -5665599, 1126355, 3550864,
-12543989, -4429722, -5221070, 867583, 6767258, -4723391, -5692979, -734439, 9071508, 6381785,
--2480344, -7339562, -546535, 7836168, -3388729, 16532940, 3482682, 2263985, -8758512, 7043747,
-270046, -2100239, -4533338, 183610, -2606508, 201863, 10206990, 4482335, 3613141, 1731946,
-1035624, -78383, -837519, 709207, 1925219, 3490198, 418222, 419833, 1216550, -3097208,
--97174, 974421, -797790, 2999498, -2466922, -325881, -1287953, 1020055, 5355288, 1621350,
--1876364, -676457, 1159641, 200790, 1687385, -624918, -2528125, 1927367, 1819456, -2133525,
--653909, 4585952, 1511829, 2222109, 8858370, 4729833, -13822279, -1390496, -6962679, 13990856,
--5179731, 6542309, 1298691, 8773008, 3500935, 1331977, -660351, 3583077, -3929895, -5891622,
--16353625, -12115029, 4076461, 10836739, 14566918, -5310190, -7021735, -6208912, 3301756, -3393561,
--673236, -564788, 2021856, 2229088, 9754408, -5141076, 981400, 2403034, 4803384, -4668093,
--3402151, -7714835, -5161477, -5376762, -9121974, -23337242, -191663, -3119757, -9951976, 2258616,
--1048509, -12658342, 4339528, -10735271, 2841658, -1303523, -790274, 5447093, 7149510, -205622,
--10377715, 3078955, -6476811, -7260106, 10180146, 9096741, 10255845, -3323231, 1749125, 1336272,
--5075041, 790274, -2381023, 15888695, -2516314, -1655173, -1462973, -133681, -9594957, -12045236,
-2976949, -902480, -773631, 2691334, 17427904, -2165201, -7983808, -3449933, 9211631, -1355599,
--2818572, -2647847, -54224, -7406671, 1917166, -1453310, 1514513, -3762928, 302258, -4725538,
--256087, -340913, 2038499, -2011118, -818728, -2910377, 4015258, 196495, -2691334, 581431,
-1430761, -3091303, 928250, 1142461, 4884452, -1040993, 1248762, 3291019, 2225867, -1792612,
-2164127, -3663607, -5719286, 650151, 720481, -2289755, -5317170, -1192927, -1189169, 4784057,
-1963337, 3184182, -395674, 3990025, 4538707, -15261629, 5652177, 1875290, 16141024, -10842645,
--6138582, -3592740, 8622684, -8209830, -7892003, 7149510, 4812511, -8303783, -8380555, -8199630,
--18372260, 12081206, 11336566, 12028593, -5164698, 3815005, 11929272, -17259326, 32212, 11359115,
-10523207, 4789963, -18790, -5511517, 1163936, -2643552, -14939507, 1916629, 4103305, 2216740,
-9921374, -8715026, 948651, -16307454, -2065879, 3252364, -8966281, 3495030, 2762201, 7330973,
-8935143, 12449500, -2536178, -4850629, -14992120, -10676752, 4630512, 22060562, -6833293, -887985,
--10152229, -5351530, -8054675, 4776004, 4882841, -1664837, 723165, -16094853, -2126009, 10943577,
--8711804, -7521562, 6475200, -2879776, 9473624, 2374043, -6961605, 1153199, -10517838, -3000035,
--2778844, 20318416, -2032593, -5910412, 4440996, 4171487, -1785633, -3421478, -1040456, -2744484,
--3776350, -3482682, -2692408, 1454920, 1570347, 3300682, -851477, -21475, -1963874, 2011655,
-504659, -5177046, 1383516, -17717, -574989, 1911261, -128312, -2814277, -2825552, -6699075,
-2229625, -2088965, 1971927, 2597918, -3179350, 1473711, 901406, -646393, 2535105, 38118,
-7274064, 1050656, -1341640, 201327, -2138894, -354335, 1249836, 233539, -656593, 620086,
--2871723, 2306934, -9378598, 22081500, -10710038, -5456219, -323733, -608812, -15476915, 1122060,
--11366094, 8418136, -21464100, -3025268, -6781754, 7488276, -7305203, -7347079, -18140868, 12428025,
--7387344, 5181341, -5753109, 3805878, 9845139, -6935836, -11850889, -3894462, 8318278, 17132624,
-5588826, 7250442, 967441, -16990354, -9044127, -9096204, -4621385, 3130494, 15650324, 6828461,
-9167608, 8617852, -2248416, -3476239, -5096516, -14172318, 903017, -9846213, 15622407, -6942278,
-10798622, 2433099, -5461588, 3726958, -3594888, -4703526, -8317741, 12884365, 3457986, 21664888,
-4832375, -22996328, -5651640, 7581154, 6144488, 3547106, -1188632, 2215666, 24348170, 12282533,
--3977677, 2773475, -6406481, 17726404, -555661, -519691, 6950868, -15295989, -6560563, -5087389,
--16429324, -19423990, 4002910, 7167764, -1719061, -9482214, -2414309, -2898566, -7472170, 294742,
--1436667, -5827197, 6082748, 9341017, -1902134, -1171452, -1274532, -3419868, 2735894, 794569,
--937377, -1671279, -1489280, -902480, 3124589, -1586454, -4211753, -871878, -106837, 1566053,
-962610, -2452426, 6575595, -1940788, 4032974, -578210, 3383361, 1921461, -949725, -4214437,
--4132832, 1647657, -1055488, -6461779, -2353105, -1437740, 2542084, 823023, -405874, 2069101,
-3146064, 1245541, -1732482, -2525978, -13390097, 8005282, 17891224, -1761474, -782758, -415001,
-16625818, 5152350, 3977140, 2842195, 1954210, 2829847, -6568079, 1220845, -20626044, 2957622,
--9949292, 8609799, 21060372, -2740189, 1515587, -16632261, 22200150, 10776610, 9418863, -2768643,
--12242804, 1469953, -4194036, 11274826, 8061117, -10102837, 512175, 5949067, 4176856, -7819525,
--6972880, 32556926, -7581691, -5674726, 6830609, -8288213, -6078453, 10354092, 10106595, 402653,
-3866008, 3688840, -12639015, -6266358, -577136, 4296041, 10991358, 2729989, 2563022, -14230300,
--1388348, 4203699, -19472844, 4263829, -5450851, -1957431, -3631395, 5719286, -5828808, -10540923,
--11325829, -17838072, 2202781, -7225746, -3539590, 11436424, -3929895, 3716221, -20187956, -29528,
-18482854, 4345433, -9423695, -5561983, 11200738, 5784247, -12416214, 6943889, -9011378, -6882685,
--3013457, -1716913, 4134980, -1181653, 653372, -1896228, -2539936, 1508607, 2165201, -3124589,
-2590939, 8205535, 1183800, -1098975, 3415573, 5194763, -2294050, 3542811, -2401961, -3155190,
-793495, 2365990, 6697465, 1821066, -773094, 2503429, -1148367, 3540127, -2099165, 3257733,
--2578591, 1104344, 2716030, 860067, -4834523, -2646237, 8500277, -3624953, -7044283, 3441880,
-1662152, 2576444, -1968706, 11096585, 3071975, -2527588, -1442035, 2806224, -1246614, -10273562,
--10315975, 24589224, -14688251, 3854196, -9383430, 28986198, 6171331, 5376762, -9244380, -10935524,
-1070521, 8296803, -8866960, -14139032, -8403104, -20569672, -8011188, -12067784, -9664, -27652610,
-1949915, 15015743, 9242233, 12277164, -8543227, 3219615, 13313862, -1517734, 9656160, 3612068,
-15043123, -7518341, 12546673, 9997073, 7136625, 16319802, -9119289, 9731859, -4981089, -5768678,
--3841312, 3628174, -31591632, -10078141, -19636054, 22759032, -14324253, -16146930, -3459596, 12853763,
-358630, -5755256, 17879948, -6366216, -5671505, -12953084, -31960462, 1575716, 2966212, 13343927,
--13405667, 63888, -8177081, -10755672, 17082696, -3427384, 8551817, -18562848, -18106508, -11264089,
-14232985, -1446330, -9040906, -9556839, -400506, -15743739, -10784126, 1551020, -6635188, -11739219,
-17313014, -23781234, -22705882, 5945846, 64961, 10031970, 1116155, -1081795, -7351911, -6448894,
-1024350, -11243151, -4577362, 9594957, 1228898, 1649268, -5611375, 5680631, 2055142, -6143951,
-2823941, -4555887, -992674, -4673998, 4001836, -6220724, -1627793, 4228396, 8173860, 913754,
-260382, -8990440, -2800856, -628676, 1216550, -1342714, 7547868, -339839, -3026878, 4865661,
--5804649, -5258114, 3105798, 6953015, -2087891, -4988068, -6861747, 5337571, 4185446, 8616778,
--11810086, -9664, 15998753, 2165737, -4750771, 8294656, -12877386, 25841208, 16236050, -77309,
--11723113, -13249974, 5618891, -3278671, -1149441, -623844, 23557358, -11457899, 488016, -7945153,
-8701604, -14518063, -13338558, -26261040, 6154688, -10619844, -14767171, -1717450, -25010668, -12217034,
-7115687, 5436355, -3396246, 13141526, 1256815, 15910706, -6942815, -21689048, -3274913, -15860777,
--3009162, -4689568, -20861730, 2841121, 17055852, -47822852, 6102612, 232465, 11919071, -2263448,
--14891188, -28325846, 11367705, -3370476, 10624675, 6470368, -3440269, 16726750, -20623360, 29078002,
--7237557, 16281684, 33800856, 13651554, 24056112, 9587978, 6328098, -3139621, 12572443, -4525285,
--13117904, -17558364, -11413339, -446677, 9981504, -1480153, -7715909, -10834592, -9818295, 13532905,
--5944772, -4661114, 12006581, 2347737, 9045201, -766652, -1297617, -3474092, 2136209, 4714264,
--6123013, -817654, -14997489, -10659572, 7386807, -3471944, -370441, -1999844, -275415, -5536213,
--8974871, 6708739, -5399311, 8661875, -8633958, -3772592, -952946, -5851893, -3040837, 4472135,
-1775432, 10473815, -2573222, -5906117, 3877819, -12029130, 208843, 1719061, -1899449, 1025960,
--1359894, 6262063, 8693014, 1714229, -305480, -3957812, -7262253, -3280818, 423591, 14471892,
-7134478, -6930467, 40353904, 32874216, 29614336, -6815576, 14496, -25249038, 18767396, 23305566,
-7881802, 22512608, 8943196, 7620883, 7852811, -4034585, 3051574, 6196564, -5825050, -24319716,
--14811195, -942208, -16202227, -18838800, -44218836, 9657234, 7549479, 11466489, -8533563, -3058017,
--5956583, 273267, -13890461, -432718, -10605885, 12184822, 10082973, -6339909, -8650064, -23311472,
-39113192, -12276627, 7646653, -48855, 2428267, 6226092, -16305843, 19520090, -9961103, 6653441,
-4279935, -14638859, -15160698, -2815888, -1423782, 9055939, 41273024, -3482682, 6044093, 1348620,
-12368969, 8861054, 9184251, -7331509, -2296734, 3559991, -20117626, 4048544, -17235166, -27347668,
-9401683, 853625, 2042257, -20023138, -48220672, 20786568, 21594022, 14959908, -27407260, 25959320,
-27461484, 10201084, 7870528, 237834, -8086887, -18170932, 13458280, -12804371, 686658, 222265,
--7354595, 5485210, -13193066, -1364726, -2699387, 6455336, -3768297, -6009196, -8260296, 12426414,
--6969122, -2960843, 3082713, -11166915, 6049999, 5083094, -4027606, -3907883, 920734, -10371272,
-9429064, -3478387, -2762201, -864899, 641024, 7077569, -5748814, -13111461, 3726421, -7306813,
--2448668, -7488276, -6828461, 1030792, -5561983, -2455648, -5199058, 16851304, -7667054, -13681618,
-1955284, -4906464, -543313, -23617488, -47219944, 39336532, 6395743, 7049652, -15673946, -11263552,
--50240916, 13994077, 36075576, 11116986, -31787052, -15866146, 5264020, -12327093, -7788387, 14830522,
--16504486, 9347459, 8357470, 6919729, -18382996, 6678674, 5807333, -8591008, -17198122, -9931038,
--6565395, -4398047, -16401406, -14148696, -7733626, -16930762, 13500693, -6275484, -21856552, -7507603,
-13554380, -2713883, -15128485, -8308078, -7676717, 15032, -11973295, -7209103, -19899658, -18927384,
-8178692, -6692633, 25029458, 16455093, 1693291, 14945949, -21713208, 14158360, -20606716, 17452062,
--2892124, 8954470, -9142912, 30960808, -7619272, 17361868, -4342212, 25473452, 10323491, 6236293,
--26152056, 28508382, 22865870, 9967008, 10669773, -20420958, -3823058, 8418673, 14067092, -3587372,
-3458523, -22568442, 14586783, 24831354, -464393, -17721036, -955093, -11710228, -9972914, 4883378,
-20938, -4879620, 5808407, -12936441, -2971044, 517007, 3764539, -8919573, -12191265, 4731444,
--5902359, -11570105, -20700132, -1520955, 6516539, -1728724, -10392210, -12613245, -3806952, 8021925,
--8610873, 3322157, 4711579, 1299765, 3478387, -1084479, -5522791, -4728759, -1510218, 5774584,
-1998770, -2273648, -7743826, 10652056, -6853157, -6069326, -4991826, 2108292, 12468827, -8445516,
-12276627, 10278394, -4077535, 3711389, 6551973, -33640332, 27238146, -4041564, 12670154, -18884972,
--6622303, -5251135, -4954245, -4965519, 15609522, -248034, -14330695, 10227391, 1157494, 7182796,
-13123809, 13258027, 9664, -12783970, 48810156, -14293651, 37372120, -401043, 1564442, -22256520,
--10145786, 2902324, 17734994, 8451959, -6698539, 14440217, 2385854, -21499532, 2796024, 2405182,
-20768314, -1431298, 12162811, -16449188, -668941, 13887240, 6551436, 11521787, 31553514, 25191594,
--4688494, 12772159, -2674154, 24733642, -20985210, 16330539, 6228240, -1503239, 14555644, -8589935,
-38821136, -7384660, 18428094, -14919106, -13401372, 89121, 41407244, 13131326, -39649528, 34039764,
--1315871, 11572253, -30032022, 9447854, 2787434, -59479392, 24137180, 44461500, 16700443, -19376208,
--12438225, 8565239, 43861280, 24698210, 33303714, -12868259, -16993574, -15563888, 6589017, 8653285,
--2045478, -17502528, -8051990, 20483236, 3269007, 4241817, -7735236, 9116605, -2945811, 3842922,
--4983236, -6253473, -7221988, 12148315, 20891794, 20089710, 4241280, 10407243, 19177566, 12411919,
-13401372, 18224620, 10258529, 17377974, 13290239, 4370129, -27592480, -5893232, -13085692, 7036230,
-15519864, -18748070, -6803228, 20813948, 11416023, 1841467, -5309117, 17523466, -14499273, 2681133,
-18453326, 14114873, 7932268, 9272298, 11170673, 6017786, 2130841, -1839857, 2641942, 965294,
-9556302, 11321534, 7347079, -9314710, -4706748, -16291885, 20001126, 2797098, 13253732, -11181947,
-26809186, -9779641, 12399571, 3868155, 5439576, 3632469, 2201171, -28597502, -16524350, -167504,
-2412698, 18964964, 15815680, -23416698, 2223183, -13072807, -11659226, 5305895, 1304596, -8289824,
-9426916, 36907192, -24831890, -2379412, 57046292, -35196184, 4001836, 19975892, -10554345, -8847096,
-11762305, 18403398, -20603494, 9669582, -37309308, -4466229, 55506548, 1977833, 15694347, -6339372,
-30327300, 30055108, -8461086, -995359, -14442364, 3047279, -10676752, -27574226, -17432198, -32814624,
--23864448, 35482872, 14464913, 10145250, 47858284, -34423628, -20067160, 5597416, 17944374, -13836237,
-8740795, -14791330, 26521424, 15386183, 9200894, 18958522, 69446936, -16942572, -5394479, -19888920,
--22306450, -1926293, 29235842, -23360864, -2913062, 20302848, 22370874, 25934624, 15479062, -18345416,
-4666482, -10366977, -2037425, 14911053, 5091684, -1805497, 11648488, -21519396, 1537598, -111132,
-5840619, -5210332, -5254356, 12309376, -4555887, -3662533, 14330695, 17677548, 14717242, 5885179,
-6373732, 11480448, 3799972, 408022, 8554501, 307627, -4485020, 3110630, 165356, -1818919,
--23365158, 5184563, 15578383, 24362666, -5474473, -7644505, -7874823, 12099997, 14696304, -32723892,
-4212826, -14919643, -1663226, 1162862, 2480344, 8756365, 6957847, 5688148, -7963943, -16777216,
-13727252, -4046396, 31344672, -28466506, 7196755, -2046015, -9131100, -8274792, -4114042, 9622874,
-5916855, 6546604, -1509144, 17554606, 3070365, -22907744, -18064096, -2460480, -10616085, -13157632,
-3006477, 14534706, -2040110, -3252901, -21027624, 10399190, -3375844, 21562884, -7322919, -41333692,
-5061082, -12217034, -6241125, 118648, -33571612, -17598628, -28840168, 580357, -2103997, -8029978,
--38182260, -15464030, -3344706, 20024212, 22057342, 1838783, 1677185, 10816875, 2433636, -26164404,
-22990424, 31387084, -13604846, 4806606, -13633837, 5727876, -124017, 23933706, -26801670, -19362786,
--61283816, -21659520, 15424301, 24765318, 17543868, 16016470, -15117748, -4933307, 12198781, 11807402,
-26563836, 12686260, 11331734, 20546050, 5143760, -22470196, -24183350, -32678258, 13645111, -20859046,
-1800665, -18280992, -28337120, -42800960, 6039798, -12343736, -13456133, 3898220, 3998078, -1551557,
--6231461, 966368, 14074071, 9883257, 3562139, -5386426, 10155987, 23131620, -5156108, -12527346,
--10407780, 11386495, -6087043, -5103495, -20651276, -19825570, -15391552, -33934536, -1967095, 170725,
--13706314, 6105833, 9101573, 6785512, 16852914, 4764193, 19904490, 1389422, 5404680, 22131966,
--10853919, -524523, 3183108, -102542, -15430207, -486405, -3078955, 26656178, -1833951, -10951630,
-8185671, 3395709, 7633768, 17107928, -3082713, -185757, 9628780, 4460324, 415001, -1198296,
--5352603, 5732708, -49129596, 20526722, -14724759, 1762547, 34804268, 29117730, -11643119, -4967667,
-17886928, -11270531, -11862163, -9891310, 2333778, -3457449, -1399086, 4083440, -3926674, 17102560,
-40889700, -17394080, -32195074, 31964220, -24965034, -6813966, 136902, 39908300, 2989834, -12212203,
-11668889, 11045045, -41972568, -12418898, 6790344, -1743220, -19999516, -1619740, 7741679, -61612916,
--28578712, 30327300, -30464204, -33901788, -20984674, 24737402, -32436130, -50710140, 50782620, -15137612,
--31997506, -2006824, 19752554, -19654308, -34336116, -1013612, 15436112, -1933809, -44131864, 10180146,
--775778, -19875498, 46134928, 43404404, -3430605, -17910014, -34456912, 52948356, 7274601, 9216463,
-18228914, -13233331, -51645908, 23043036, 39284992, 31358094, -19624780, 11207717, 42872900, 24786794,
--29832842, -6735046, -23420994, 10307385, 6355478, 26870926, 26613228, -32285806, -1194538, -3540127,
-4737349, -12662100, 12815646, -8358543, 7394323, 6566468, 5393942, -9229885, 6966974, -13706314,
-22304838, -11518565, -5767068, 14052596, 12358768, -13084618, 2014340, -6196027, -15105937, -8216273,
-6018860, 11725798, 7232188, -12340515, 6813966, -7985418, -18769008, 782758, 3332895, -3142842,
--1553168, 12626130, 795643, 1279363, 5997385, -1857037, 3226594, -20229296, 15092515, 5400922,
--51140176, 5202279, 47486768, 25675852, 6323803, -1005022, -9033390, 12044162, -17245904, 39351564,
--3402688, 10194642, 14316200, -14085345, 167504, -2134599, -15511811, -469762, 5382668, 21889300,
--441308, -14252312, 6518687, 17530446, -3329137, 28026272, -22448184, 4197794, 6054294, 7004018,
-24304146, -13927505, 1819456, -1353452, -32529546, 4145717, -10872173, -18008798, 7172596, -7120519,
-24939802, 17788680, -13612899, -29291140, 13362180, 2353642, 5434208, 15679852, 34754876, -6429029,
-6929930, -14702210, 19801946, 13967234, 14718853, -17183090, 22732726, -8374650, -10411538, -20643224,
--2144263, -8429410, 29540248, -22718766, 1279900, 6940667, -7141457, -14039711, 41385768, -2266132,
-9577240, -4269735, 4707284, -3906273, 11378442, -1891396, -5397700, -3789772, -4786741, 13515725,
-9384504, 12700218, 6999186, 3787088, -9294846, 9288941, 467615, 4988605, 4320737, 11392401,
--1952600, 56908, 1606855, 3408594, 3605088, 8405251, -7532836, 5175436, 4537633, 3964255,
-3338263, 2645700, 8293582, 2976949, -11521250, 6489696, 7534447, 7842074, 3288871, 8452496,
-2152316, -865973, 4705137, 2545305, 6058052, -819265, -5858336, 1085553, 8495982, -4733054,
-3387119, 166967, 9279277, 8284992, 3076270, 5745056, 8620536, 3875134, 6958384, 16689706,
--44396540, -124570160, -118455200, 51470352, 5023501, 113868712, 241192480, 52823804, 97189208, 51869784,
--178961088, -80073224, -120373976, -176707840, -11886322, 20905216, -83530672, 74221864, 126175936, 77317464,
-217321056, 133438728, 1173063, -20079508, -76971184, -191963024, -155593248, -66986456, -147392544, -43436616,
-84170624, 25076166, 21255794, 199150656, 76747848, 48541720, 184213296, 8769249, -9389872, 85004384,
--42388644, -151886144, -73640976, -151770720, -221850096, -24515674, -100831336, -82188496, 70899712, 137723488,
-63592896, 243323856, 193715376, 112453520, 147090288, 49947248, -72261752, -111118856, -148339040, -237334528,
--190449056, -127634616, -108925200, -33776160, 82558400, 125672888, 139852720, 188247872, 158296928, 74334072,
-26876832, 40891308, -63684164, -97307856, -69318624, -145430816, -109667696, -18749680, -65541736, 26057030,
-106378824, 38182260, 54191748, 77508056, 8049843, 4753455, -19057844, -72790568, -38388416, 738734,
--29322816, 22639310, 30674120, -12412455, 38947300, 33801928, -53022980, 40510668, 46875272, -33086280,
-76542760, 11850889, -75806176, 53009024, -41699836, -147508512, -24664386, -89593552, -109226384, 67418104,
-8250096, 17264158, 141813376, 90447176, 100240240, 161683504, 118549688, 39527120, 16706349, -112363320,
--204874240, -203387632, -204411984, -192866576, -118081536, 6199786, 110640504, 163078304, 222916320, 207487184,
-195545024, 154524864, 25860534, -70851392, -78206520, -163796624, -203262016, -121908888, -109767552, -60799556,
-10871636, 29502130, 34922380, 69923680, 60793652, 57636312, 80866720, 67270464, 42054172, 37154688,
-7705172, -23409182, -41954316, -50718196, -68838664, -57800596, -46001248, -35788352, -11805791, 12075837,
-20795694, 30060476, 35089884, 33999496, 25931402, 20927228, 9119289, -715649, -4572530, -4766877,
--9295920, -7206419, -4793184, -5450851, -5377299, -1381369, -7475928, -8608188, -8471286, -13127031,
--14709726, -8643622, -7382512, 4129074, 17818746, 23784992, 24197308, 22899692, 14922864, 10889353,
-4014721, -6808597, -17940078, -21398600, -23333484, -20936892, -15610059, -7123204, 973347, 10068477,
-15825344, 16633335, 13915157, 10421738, 3864934, -1120987, -5113159, -7458748, -8167417, -5198521,
--2738579, 943819, 3526705, 5567888, 5354214, 3582003, -625455, -3535295, -5954436, -6616934,
--5913633, -3850438, -1870995, 1142461, 3083787, 4349728, 4837207, 4627828, 3320547, 2259153,
-1078574, 20401, -941135, -1369558, -1687922, -1490354, -1090922, -672699, -493384, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-12826383, 6532109, -2314451, 5718212, -2777770, -2840584, -5715528, 1399623, 1261647, -214748,
+134218, -602369, -4362613, -468688, -2477659, -2852932, -2704219, -62277, 370978, -176631,
+-455803, 2226941, -566936, -6618545, 4184372, 2103460, -2230699, 708670, -25770, 114354,
+974421, 4326106, -2348273, 296353, -7511898, 3805878, 780610, 1742146, 2647311, 4283156,
+-2333778, -1759863, -820876, -3753802, 340913, -528281, 3317862, -1721745, -188979, -1794223,
+-2069637, 4039954, -2976949, -1413044, 410169, -2690260, 2317672, -57982, -1249836, 2515777,
+4568235, 328565, -142271, -592169, 3909494, -3808026, 67109, -557272, 2061047, -903554,
+-1733019, 4261682, -42950, 935229, -1139777, 920734, 2298344, -1771674, -2511482, 175020,
+2244657, 3764539, -1644436, -1087701, 944893, 248034, 597537, -1658931, -521302, 1064615,
+-201327, 762357, -1320703, -372052, -804770, -1115618, -815507, -734439, 617938, 153008,
+-563714, 642098, 433792, -484794, -140660, -82678, -706522, -1264331, -345208, 49929,
+294742, 761820, -75162, 510564, 289373, -569083, 545998, -15329275, 2623151, 1826972,
+5393405, -2094870, 1645509, 6265821, -2405719, 1721745, -3777424, -5555540, 2054068, -3778498,
+-4308389, -4329327, 1324461, 1665911, -7386270, 4362613, 2903935, -1250372, -2692408, 1741072,
+-654446, -1677722, 555661, 2462627, 1835562, 3927748, 777389, -1186485, 4056597, -2023467,
+8824010, 1988570, 5445482, 2096481, 4780836, 2124398, 3302830, 1780264, 416075, 187368,
+6685654, 1134408, -1043677, 445066, 3543348, 2608656, 409633, -294742, -1342177, 745177,
+8153996, 2333241, 3784403, -3924526, -1991791, -4139275, -2588792, -4018479, 3049427, 1908039,
+-2538326, -1829119, 1840930, -1915019, 2051384, -901406, -577136, -2780455, -4655745, 2018098,
+-7581691, -1076426, -1592896, -1927904, 447213, -1778653, 390842, 2866891, 1423245, -1955284,
+389768, -1551557, -3280818, -539018, 1626719, -165356, -2523830, 928787, 506806, 969589,
+1791538, 65498, 284542, -1207960, -690416, -180926, 19327, 627602, -1345399, -1188632,
+129386, 8551280, 11814381, -3731253, 3114388, -5996848, -398358, 267899, 15119359, -1640141,
+-4101157, -6637872, 69793, 4277788, 6910066, -1661616, -9260486, -2725157, -3582003, -2591476,
+3037079, -758062, 5757404, 566399, -3384971, -7508140, 2145336, -780610, 1643362, -980326,
+756988, 3553012, 1253057, -9424769, 1043140, 5923834, 2874407, 653909, 1357210, -1585917,
+4082367, -5607617, -620086, 4470524, -3223910, -84826, 7320235, -3504693, -431107, -2594160,
+4472135, -4874788, -3635690, 2130304, -5048197, -2534568, 6380711, 3713536, -5857262, -2216203,
+-949725, -1519882, -2714956, 1988570, -2342368, 2293513, -153545, 267899, 959388, 4791573,
+-637803, 6638409, 3393024, -5250598, -2462627, -2607045, 3956202, 1117228, -355409, -2161442,
+5325760, 1997160, -184147, -203474, -1435593, -1328219, 1522029, 536334, 1697049, 4133369,
+1449552, -314606, 192737, 253940, 1285269, -367220, 437550, 1930588, 354872, 2410014,
+-537, 797253, 1194001, 1443646, 465467, 882616, 1026497, 827318, 1351304, -526134,
+358093, 897111, 1385127, -213138, -1202054, -1402307, 239444, 28406376, -10473815, 5777805,
+-7996156, -813896, 296890, -563714, -4233227, 2346126, 3279745, 816044, -3076807, -6554657,
+-235149, 4042101, 2865817, -2867965, -4942434, -374199, 4443144, 8123931, -4361540, -561567,
+-3291556, -7062000, 799401, -3539053, 2157147, -2612414, 5519033, -9651328, 6539625, -400506,
+-5759551, 1432909, 2428804, -652835, -3049964, 219043, 7572564, -255014, 1247151, -1039382,
+2898029, 1367410, -1788854, -2811593, -6226629, 4068945, -1305670, -1799054, 2390686, 75699,
+-10467372, 8074539, -11266773, -6465537, -7981660, 1753957, -941672, 4816269, -2619393, 2578591,
+-4809827, 2345589, -1264868, -1927367, -5306969, 3281355, 3719442, 6413460, -1561221, -572841,
+1716913, -1899986, -1156420, 1265942, 3673808, -4840428, 2399276, 3543885, 3881040, -6142877,
+-5067525, 2158758, -3174518, 1653026, -69793, -329639, 526134, 819265, -281320, 1501628,
+-1819992, 918586, -579284, 3658239, 194347, 929324, 792421, 275415, -1446330, -78920,
+330712, -390305, -22395034, 2284923, 238371, -1900523, -3453154, 3920232, -3036542, 2609193,
+-802622, -37044, 3622805, 4715874, -2896956, 3474092, -1009854, -1912334, -6279779, -305480,
+-8485782, -6229850, 7475928, 2669322, -2889439, -1054415, -871878, 5189394, 2741800, -2663417,
+4733591, 3149822, 1860258, 1640141, 2019172, 3605625, 3106872, 3063922, 8362302, 7523709,
+3256659, 838592, -5182952, 5786395, -7704635, 1531156, -2138357, 6267968, -4708358, -6133750,
+10566693, -2451353, -5641440, -5035849, 7868917, 4830228, 303332, 4046396, 5717139, 2623688,
+9236864, -542240, -1439351, 5240397, 3215857, 315143, 224412, -4789963, 2894808, 3000035,
+7461969, 3037616, 4653597, -2852932, -3806415, -8118562, -1848447, -4387846, -3476239, -3693672,
+4124779, -137976, 336081, -2372433, -2733210, -756988, -2401961, 759136, -1611687, -2685965,
+1125281, -257161, 121333, -2513093, -346819, 112743, -3153580, -426812, -734976, 220654,
+-1404991, -1640141, -1000727, -602369, 78920, -520228, 525060, -732829, 909996, 223875,
+807454, 1752884, -376883, 1851131, 401043, 1220308, -819265, 388695, -1565516, -579284,
+-242666, -1902134, -566936, -927713, -29732984, 8126615, -6255620, -9305584, -9199820, 5897527,
+-6798397, 5223217, -8570070, 4900021, 4202089, 2627983, -9028021, 6380711, 5369, 3908420,
+-7459822, 4335770, 9079561, 6966974, 364535, -3095061, 1377074, -1821066, -9546639, -1842541,
+-4527433, 2326262, -5961415, 5334887, 5236102, -1908039, -108448, 7297150, -1458678, 4987531,
+-3804804, -6146635, 3379066, 5369, 3492345, 8949638, 5493800, -215822, -15288473, -7271917,
+-2022930, 2252174, -2253784, 8597988, -13267154, 4350265, 1932735, -21475, 4312147, -1620276,
+6616397, -13916768, -6432788, 5549635, -13984950, -2500745, 6696391, 2470143, -2999498, -9292162,
+3608310, 6182606, 4569309, -1566589, -9752797, -738198, 190052, -1007170, -411780, -4719632,
+2305324, -7617662, 4868883, 781147, -4471061, 1018981, -5401458, 530965, -6483253, -1735704,
+2428267, 2544231, 330176, -523986, -2159295, -1604707, 576063, -3767223, 3237332, 350040,
+-1761474, 122407, -3232500, -2530273, 861141, -1267552, 1929514, -1653562, -869194, -1046361,
+-1154809, -2156074, -267899, -1155346, -388695, 741419, -413927, -913217, 946503, -303869,
+-760209, -787590, -1893007, -1300301, 381715, 1167694, -190589, -14039711, 1512365, 2335389,
+10994043, -10390600, 12006044, 3397319, -968515, -2828236, -1294396, 1105417, -8778376, -1690607,
+2815351, -2894808, -5150740, -1403381, 8307541, -8591008, -1863479, 8581882, 42413, -3420942,
+3035468, -4194573, 6329708, 2765422, -75699, 3147674, -3665755, -5796059, -407485, 424665,
+4738423, -10152766, -5458904, -4491462, -3124589, -3022046, -3064996, 1501091, 504122, 823023,
+-7555921, -7787850, -6159520, 203474, -9708237, -5388037, 5826660, -3957276, 1293322, 597537,
+-175557, 2405719, 3459596, 3265249, 3915400, 5709086, -1006096, 6177774, -389768, 3111704,
+-511101, -4007741, -228707, -6448894, 3976603, -7544110, 7026567, -8415988, -120796, -8680666,
+828392, -8723079, -8355322, 3928821, 11522324, 3445638, -7418483, 5266704, 7516, -3313567,
+-1952063, -3471407, 4588099, 3914863, 5640903, 981400, 4400194, -3743601, -390305, 4269198,
+515396, 1294396, 857920, -2128693, 2588792, -270046, 970126, 3777424, 1127966, -987843,
+-2269890, -1086627, 1583232, 1518808, 1253594, 401579, -1766842, 97174, -368830, -4037269,
+3890704, 406948, 1428614, 140123, -940598, -1934883, 1374390, -1972464, -914828, 38830264,
+267899, -11457362, 1574642, -6314139, 15363098, -2752000, 4181688, 932545, 557809, -13882408,
+-7204271, 7375533, 6470368, -10984916, -2086817, -537945, 9397388, 4504347, 3457449, 9190693,
+1287953, 403190, 7971996, -3069291, -12621298, 1622961, 9316321, 5410585, -3788698, -28454,
+6440304, 3823058, 1624571, -574452, -7162395, 3172907, -7773354, 532576, -14469208, 3521336,
+4212826, -1380832, -6758131, 8842264, 4583804, -2106145, 6868190, 3024194, -6129455, 10657961,
+991064, -4089346, 2345589, 10932302, 1556926, -519691, -9494562, -5665599, 1126355, 3550864,
+12543989, -4429722, -5221070, 867583, 6767258, -4723391, -5692979, -734439, 9071508, 6381785,
+-2480344, -7339562, -546535, 7836168, -3388729, 16532940, 3482682, 2263985, -8758512, 7043747,
+270046, -2100239, -4533338, 183610, -2606508, 201863, 10206990, 4482335, 3613141, 1731946,
+1035624, -78383, -837519, 709207, 1925219, 3490198, 418222, 419833, 1216550, -3097208,
+-97174, 974421, -797790, 2999498, -2466922, -325881, -1287953, 1020055, 5355288, 1621350,
+-1876364, -676457, 1159641, 200790, 1687385, -624918, -2528125, 1927367, 1819456, -2133525,
+-653909, 4585952, 1511829, 2222109, 8858370, 4729833, -13822279, -1390496, -6962679, 13990856,
+-5179731, 6542309, 1298691, 8773008, 3500935, 1331977, -660351, 3583077, -3929895, -5891622,
+-16353625, -12115029, 4076461, 10836739, 14566918, -5310190, -7021735, -6208912, 3301756, -3393561,
+-673236, -564788, 2021856, 2229088, 9754408, -5141076, 981400, 2403034, 4803384, -4668093,
+-3402151, -7714835, -5161477, -5376762, -9121974, -23337242, -191663, -3119757, -9951976, 2258616,
+-1048509, -12658342, 4339528, -10735271, 2841658, -1303523, -790274, 5447093, 7149510, -205622,
+-10377715, 3078955, -6476811, -7260106, 10180146, 9096741, 10255845, -3323231, 1749125, 1336272,
+-5075041, 790274, -2381023, 15888695, -2516314, -1655173, -1462973, -133681, -9594957, -12045236,
+2976949, -902480, -773631, 2691334, 17427904, -2165201, -7983808, -3449933, 9211631, -1355599,
+-2818572, -2647847, -54224, -7406671, 1917166, -1453310, 1514513, -3762928, 302258, -4725538,
+-256087, -340913, 2038499, -2011118, -818728, -2910377, 4015258, 196495, -2691334, 581431,
+1430761, -3091303, 928250, 1142461, 4884452, -1040993, 1248762, 3291019, 2225867, -1792612,
+2164127, -3663607, -5719286, 650151, 720481, -2289755, -5317170, -1192927, -1189169, 4784057,
+1963337, 3184182, -395674, 3990025, 4538707, -15261629, 5652177, 1875290, 16141024, -10842645,
+-6138582, -3592740, 8622684, -8209830, -7892003, 7149510, 4812511, -8303783, -8380555, -8199630,
+-18372260, 12081206, 11336566, 12028593, -5164698, 3815005, 11929272, -17259326, 32212, 11359115,
+10523207, 4789963, -18790, -5511517, 1163936, -2643552, -14939507, 1916629, 4103305, 2216740,
+9921374, -8715026, 948651, -16307454, -2065879, 3252364, -8966281, 3495030, 2762201, 7330973,
+8935143, 12449500, -2536178, -4850629, -14992120, -10676752, 4630512, 22060562, -6833293, -887985,
+-10152229, -5351530, -8054675, 4776004, 4882841, -1664837, 723165, -16094853, -2126009, 10943577,
+-8711804, -7521562, 6475200, -2879776, 9473624, 2374043, -6961605, 1153199, -10517838, -3000035,
+-2778844, 20318416, -2032593, -5910412, 4440996, 4171487, -1785633, -3421478, -1040456, -2744484,
+-3776350, -3482682, -2692408, 1454920, 1570347, 3300682, -851477, -21475, -1963874, 2011655,
+504659, -5177046, 1383516, -17717, -574989, 1911261, -128312, -2814277, -2825552, -6699075,
+2229625, -2088965, 1971927, 2597918, -3179350, 1473711, 901406, -646393, 2535105, 38118,
+7274064, 1050656, -1341640, 201327, -2138894, -354335, 1249836, 233539, -656593, 620086,
+-2871723, 2306934, -9378598, 22081500, -10710038, -5456219, -323733, -608812, -15476915, 1122060,
+-11366094, 8418136, -21464100, -3025268, -6781754, 7488276, -7305203, -7347079, -18140868, 12428025,
+-7387344, 5181341, -5753109, 3805878, 9845139, -6935836, -11850889, -3894462, 8318278, 17132624,
+5588826, 7250442, 967441, -16990354, -9044127, -9096204, -4621385, 3130494, 15650324, 6828461,
+9167608, 8617852, -2248416, -3476239, -5096516, -14172318, 903017, -9846213, 15622407, -6942278,
+10798622, 2433099, -5461588, 3726958, -3594888, -4703526, -8317741, 12884365, 3457986, 21664888,
+4832375, -22996328, -5651640, 7581154, 6144488, 3547106, -1188632, 2215666, 24348170, 12282533,
+-3977677, 2773475, -6406481, 17726404, -555661, -519691, 6950868, -15295989, -6560563, -5087389,
+-16429324, -19423990, 4002910, 7167764, -1719061, -9482214, -2414309, -2898566, -7472170, 294742,
+-1436667, -5827197, 6082748, 9341017, -1902134, -1171452, -1274532, -3419868, 2735894, 794569,
+-937377, -1671279, -1489280, -902480, 3124589, -1586454, -4211753, -871878, -106837, 1566053,
+962610, -2452426, 6575595, -1940788, 4032974, -578210, 3383361, 1921461, -949725, -4214437,
+-4132832, 1647657, -1055488, -6461779, -2353105, -1437740, 2542084, 823023, -405874, 2069101,
+3146064, 1245541, -1732482, -2525978, -13390097, 8005282, 17891224, -1761474, -782758, -415001,
+16625818, 5152350, 3977140, 2842195, 1954210, 2829847, -6568079, 1220845, -20626044, 2957622,
+-9949292, 8609799, 21060372, -2740189, 1515587, -16632261, 22200150, 10776610, 9418863, -2768643,
+-12242804, 1469953, -4194036, 11274826, 8061117, -10102837, 512175, 5949067, 4176856, -7819525,
+-6972880, 32556926, -7581691, -5674726, 6830609, -8288213, -6078453, 10354092, 10106595, 402653,
+3866008, 3688840, -12639015, -6266358, -577136, 4296041, 10991358, 2729989, 2563022, -14230300,
+-1388348, 4203699, -19472844, 4263829, -5450851, -1957431, -3631395, 5719286, -5828808, -10540923,
+-11325829, -17838072, 2202781, -7225746, -3539590, 11436424, -3929895, 3716221, -20187956, -29528,
+18482854, 4345433, -9423695, -5561983, 11200738, 5784247, -12416214, 6943889, -9011378, -6882685,
+-3013457, -1716913, 4134980, -1181653, 653372, -1896228, -2539936, 1508607, 2165201, -3124589,
+2590939, 8205535, 1183800, -1098975, 3415573, 5194763, -2294050, 3542811, -2401961, -3155190,
+793495, 2365990, 6697465, 1821066, -773094, 2503429, -1148367, 3540127, -2099165, 3257733,
+-2578591, 1104344, 2716030, 860067, -4834523, -2646237, 8500277, -3624953, -7044283, 3441880,
+1662152, 2576444, -1968706, 11096585, 3071975, -2527588, -1442035, 2806224, -1246614, -10273562,
+-10315975, 24589224, -14688251, 3854196, -9383430, 28986198, 6171331, 5376762, -9244380, -10935524,
+1070521, 8296803, -8866960, -14139032, -8403104, -20569672, -8011188, -12067784, -9664, -27652610,
+1949915, 15015743, 9242233, 12277164, -8543227, 3219615, 13313862, -1517734, 9656160, 3612068,
+15043123, -7518341, 12546673, 9997073, 7136625, 16319802, -9119289, 9731859, -4981089, -5768678,
+-3841312, 3628174, -31591632, -10078141, -19636054, 22759032, -14324253, -16146930, -3459596, 12853763,
+358630, -5755256, 17879948, -6366216, -5671505, -12953084, -31960462, 1575716, 2966212, 13343927,
+-13405667, 63888, -8177081, -10755672, 17082696, -3427384, 8551817, -18562848, -18106508, -11264089,
+14232985, -1446330, -9040906, -9556839, -400506, -15743739, -10784126, 1551020, -6635188, -11739219,
+17313014, -23781234, -22705882, 5945846, 64961, 10031970, 1116155, -1081795, -7351911, -6448894,
+1024350, -11243151, -4577362, 9594957, 1228898, 1649268, -5611375, 5680631, 2055142, -6143951,
+2823941, -4555887, -992674, -4673998, 4001836, -6220724, -1627793, 4228396, 8173860, 913754,
+260382, -8990440, -2800856, -628676, 1216550, -1342714, 7547868, -339839, -3026878, 4865661,
+-5804649, -5258114, 3105798, 6953015, -2087891, -4988068, -6861747, 5337571, 4185446, 8616778,
+-11810086, -9664, 15998753, 2165737, -4750771, 8294656, -12877386, 25841208, 16236050, -77309,
+-11723113, -13249974, 5618891, -3278671, -1149441, -623844, 23557358, -11457899, 488016, -7945153,
+8701604, -14518063, -13338558, -26261040, 6154688, -10619844, -14767171, -1717450, -25010668, -12217034,
+7115687, 5436355, -3396246, 13141526, 1256815, 15910706, -6942815, -21689048, -3274913, -15860777,
+-3009162, -4689568, -20861730, 2841121, 17055852, -47822852, 6102612, 232465, 11919071, -2263448,
+-14891188, -28325846, 11367705, -3370476, 10624675, 6470368, -3440269, 16726750, -20623360, 29078002,
+-7237557, 16281684, 33800856, 13651554, 24056112, 9587978, 6328098, -3139621, 12572443, -4525285,
+-13117904, -17558364, -11413339, -446677, 9981504, -1480153, -7715909, -10834592, -9818295, 13532905,
+-5944772, -4661114, 12006581, 2347737, 9045201, -766652, -1297617, -3474092, 2136209, 4714264,
+-6123013, -817654, -14997489, -10659572, 7386807, -3471944, -370441, -1999844, -275415, -5536213,
+-8974871, 6708739, -5399311, 8661875, -8633958, -3772592, -952946, -5851893, -3040837, 4472135,
+1775432, 10473815, -2573222, -5906117, 3877819, -12029130, 208843, 1719061, -1899449, 1025960,
+-1359894, 6262063, 8693014, 1714229, -305480, -3957812, -7262253, -3280818, 423591, 14471892,
+7134478, -6930467, 40353904, 32874216, 29614336, -6815576, 14496, -25249038, 18767396, 23305566,
+7881802, 22512608, 8943196, 7620883, 7852811, -4034585, 3051574, 6196564, -5825050, -24319716,
+-14811195, -942208, -16202227, -18838800, -44218836, 9657234, 7549479, 11466489, -8533563, -3058017,
+-5956583, 273267, -13890461, -432718, -10605885, 12184822, 10082973, -6339909, -8650064, -23311472,
+39113192, -12276627, 7646653, -48855, 2428267, 6226092, -16305843, 19520090, -9961103, 6653441,
+4279935, -14638859, -15160698, -2815888, -1423782, 9055939, 41273024, -3482682, 6044093, 1348620,
+12368969, 8861054, 9184251, -7331509, -2296734, 3559991, -20117626, 4048544, -17235166, -27347668,
+9401683, 853625, 2042257, -20023138, -48220672, 20786568, 21594022, 14959908, -27407260, 25959320,
+27461484, 10201084, 7870528, 237834, -8086887, -18170932, 13458280, -12804371, 686658, 222265,
+-7354595, 5485210, -13193066, -1364726, -2699387, 6455336, -3768297, -6009196, -8260296, 12426414,
+-6969122, -2960843, 3082713, -11166915, 6049999, 5083094, -4027606, -3907883, 920734, -10371272,
+9429064, -3478387, -2762201, -864899, 641024, 7077569, -5748814, -13111461, 3726421, -7306813,
+-2448668, -7488276, -6828461, 1030792, -5561983, -2455648, -5199058, 16851304, -7667054, -13681618,
+1955284, -4906464, -543313, -23617488, -47219944, 39336532, 6395743, 7049652, -15673946, -11263552,
+-50240916, 13994077, 36075576, 11116986, -31787052, -15866146, 5264020, -12327093, -7788387, 14830522,
+-16504486, 9347459, 8357470, 6919729, -18382996, 6678674, 5807333, -8591008, -17198122, -9931038,
+-6565395, -4398047, -16401406, -14148696, -7733626, -16930762, 13500693, -6275484, -21856552, -7507603,
+13554380, -2713883, -15128485, -8308078, -7676717, 15032, -11973295, -7209103, -19899658, -18927384,
+8178692, -6692633, 25029458, 16455093, 1693291, 14945949, -21713208, 14158360, -20606716, 17452062,
+-2892124, 8954470, -9142912, 30960808, -7619272, 17361868, -4342212, 25473452, 10323491, 6236293,
+-26152056, 28508382, 22865870, 9967008, 10669773, -20420958, -3823058, 8418673, 14067092, -3587372,
+3458523, -22568442, 14586783, 24831354, -464393, -17721036, -955093, -11710228, -9972914, 4883378,
+20938, -4879620, 5808407, -12936441, -2971044, 517007, 3764539, -8919573, -12191265, 4731444,
+-5902359, -11570105, -20700132, -1520955, 6516539, -1728724, -10392210, -12613245, -3806952, 8021925,
+-8610873, 3322157, 4711579, 1299765, 3478387, -1084479, -5522791, -4728759, -1510218, 5774584,
+1998770, -2273648, -7743826, 10652056, -6853157, -6069326, -4991826, 2108292, 12468827, -8445516,
+12276627, 10278394, -4077535, 3711389, 6551973, -33640332, 27238146, -4041564, 12670154, -18884972,
+-6622303, -5251135, -4954245, -4965519, 15609522, -248034, -14330695, 10227391, 1157494, 7182796,
+13123809, 13258027, 9664, -12783970, 48810156, -14293651, 37372120, -401043, 1564442, -22256520,
+-10145786, 2902324, 17734994, 8451959, -6698539, 14440217, 2385854, -21499532, 2796024, 2405182,
+20768314, -1431298, 12162811, -16449188, -668941, 13887240, 6551436, 11521787, 31553514, 25191594,
+-4688494, 12772159, -2674154, 24733642, -20985210, 16330539, 6228240, -1503239, 14555644, -8589935,
+38821136, -7384660, 18428094, -14919106, -13401372, 89121, 41407244, 13131326, -39649528, 34039764,
+-1315871, 11572253, -30032022, 9447854, 2787434, -59479392, 24137180, 44461500, 16700443, -19376208,
+-12438225, 8565239, 43861280, 24698210, 33303714, -12868259, -16993574, -15563888, 6589017, 8653285,
+-2045478, -17502528, -8051990, 20483236, 3269007, 4241817, -7735236, 9116605, -2945811, 3842922,
+-4983236, -6253473, -7221988, 12148315, 20891794, 20089710, 4241280, 10407243, 19177566, 12411919,
+13401372, 18224620, 10258529, 17377974, 13290239, 4370129, -27592480, -5893232, -13085692, 7036230,
+15519864, -18748070, -6803228, 20813948, 11416023, 1841467, -5309117, 17523466, -14499273, 2681133,
+18453326, 14114873, 7932268, 9272298, 11170673, 6017786, 2130841, -1839857, 2641942, 965294,
+9556302, 11321534, 7347079, -9314710, -4706748, -16291885, 20001126, 2797098, 13253732, -11181947,
+26809186, -9779641, 12399571, 3868155, 5439576, 3632469, 2201171, -28597502, -16524350, -167504,
+2412698, 18964964, 15815680, -23416698, 2223183, -13072807, -11659226, 5305895, 1304596, -8289824,
+9426916, 36907192, -24831890, -2379412, 57046292, -35196184, 4001836, 19975892, -10554345, -8847096,
+11762305, 18403398, -20603494, 9669582, -37309308, -4466229, 55506548, 1977833, 15694347, -6339372,
+30327300, 30055108, -8461086, -995359, -14442364, 3047279, -10676752, -27574226, -17432198, -32814624,
+-23864448, 35482872, 14464913, 10145250, 47858284, -34423628, -20067160, 5597416, 17944374, -13836237,
+8740795, -14791330, 26521424, 15386183, 9200894, 18958522, 69446936, -16942572, -5394479, -19888920,
+-22306450, -1926293, 29235842, -23360864, -2913062, 20302848, 22370874, 25934624, 15479062, -18345416,
+4666482, -10366977, -2037425, 14911053, 5091684, -1805497, 11648488, -21519396, 1537598, -111132,
+5840619, -5210332, -5254356, 12309376, -4555887, -3662533, 14330695, 17677548, 14717242, 5885179,
+6373732, 11480448, 3799972, 408022, 8554501, 307627, -4485020, 3110630, 165356, -1818919,
+-23365158, 5184563, 15578383, 24362666, -5474473, -7644505, -7874823, 12099997, 14696304, -32723892,
+4212826, -14919643, -1663226, 1162862, 2480344, 8756365, 6957847, 5688148, -7963943, -16777216,
+13727252, -4046396, 31344672, -28466506, 7196755, -2046015, -9131100, -8274792, -4114042, 9622874,
+5916855, 6546604, -1509144, 17554606, 3070365, -22907744, -18064096, -2460480, -10616085, -13157632,
+3006477, 14534706, -2040110, -3252901, -21027624, 10399190, -3375844, 21562884, -7322919, -41333692,
+5061082, -12217034, -6241125, 118648, -33571612, -17598628, -28840168, 580357, -2103997, -8029978,
+-38182260, -15464030, -3344706, 20024212, 22057342, 1838783, 1677185, 10816875, 2433636, -26164404,
+22990424, 31387084, -13604846, 4806606, -13633837, 5727876, -124017, 23933706, -26801670, -19362786,
+-61283816, -21659520, 15424301, 24765318, 17543868, 16016470, -15117748, -4933307, 12198781, 11807402,
+26563836, 12686260, 11331734, 20546050, 5143760, -22470196, -24183350, -32678258, 13645111, -20859046,
+1800665, -18280992, -28337120, -42800960, 6039798, -12343736, -13456133, 3898220, 3998078, -1551557,
+-6231461, 966368, 14074071, 9883257, 3562139, -5386426, 10155987, 23131620, -5156108, -12527346,
+-10407780, 11386495, -6087043, -5103495, -20651276, -19825570, -15391552, -33934536, -1967095, 170725,
+-13706314, 6105833, 9101573, 6785512, 16852914, 4764193, 19904490, 1389422, 5404680, 22131966,
+-10853919, -524523, 3183108, -102542, -15430207, -486405, -3078955, 26656178, -1833951, -10951630,
+8185671, 3395709, 7633768, 17107928, -3082713, -185757, 9628780, 4460324, 415001, -1198296,
+-5352603, 5732708, -49129596, 20526722, -14724759, 1762547, 34804268, 29117730, -11643119, -4967667,
+17886928, -11270531, -11862163, -9891310, 2333778, -3457449, -1399086, 4083440, -3926674, 17102560,
+40889700, -17394080, -32195074, 31964220, -24965034, -6813966, 136902, 39908300, 2989834, -12212203,
+11668889, 11045045, -41972568, -12418898, 6790344, -1743220, -19999516, -1619740, 7741679, -61612916,
+-28578712, 30327300, -30464204, -33901788, -20984674, 24737402, -32436130, -50710140, 50782620, -15137612,
+-31997506, -2006824, 19752554, -19654308, -34336116, -1013612, 15436112, -1933809, -44131864, 10180146,
+-775778, -19875498, 46134928, 43404404, -3430605, -17910014, -34456912, 52948356, 7274601, 9216463,
+18228914, -13233331, -51645908, 23043036, 39284992, 31358094, -19624780, 11207717, 42872900, 24786794,
+-29832842, -6735046, -23420994, 10307385, 6355478, 26870926, 26613228, -32285806, -1194538, -3540127,
+4737349, -12662100, 12815646, -8358543, 7394323, 6566468, 5393942, -9229885, 6966974, -13706314,
+22304838, -11518565, -5767068, 14052596, 12358768, -13084618, 2014340, -6196027, -15105937, -8216273,
+6018860, 11725798, 7232188, -12340515, 6813966, -7985418, -18769008, 782758, 3332895, -3142842,
+-1553168, 12626130, 795643, 1279363, 5997385, -1857037, 3226594, -20229296, 15092515, 5400922,
+-51140176, 5202279, 47486768, 25675852, 6323803, -1005022, -9033390, 12044162, -17245904, 39351564,
+-3402688, 10194642, 14316200, -14085345, 167504, -2134599, -15511811, -469762, 5382668, 21889300,
+-441308, -14252312, 6518687, 17530446, -3329137, 28026272, -22448184, 4197794, 6054294, 7004018,
+24304146, -13927505, 1819456, -1353452, -32529546, 4145717, -10872173, -18008798, 7172596, -7120519,
+24939802, 17788680, -13612899, -29291140, 13362180, 2353642, 5434208, 15679852, 34754876, -6429029,
+6929930, -14702210, 19801946, 13967234, 14718853, -17183090, 22732726, -8374650, -10411538, -20643224,
+-2144263, -8429410, 29540248, -22718766, 1279900, 6940667, -7141457, -14039711, 41385768, -2266132,
+9577240, -4269735, 4707284, -3906273, 11378442, -1891396, -5397700, -3789772, -4786741, 13515725,
+9384504, 12700218, 6999186, 3787088, -9294846, 9288941, 467615, 4988605, 4320737, 11392401,
+-1952600, 56908, 1606855, 3408594, 3605088, 8405251, -7532836, 5175436, 4537633, 3964255,
+3338263, 2645700, 8293582, 2976949, -11521250, 6489696, 7534447, 7842074, 3288871, 8452496,
+2152316, -865973, 4705137, 2545305, 6058052, -819265, -5858336, 1085553, 8495982, -4733054,
+3387119, 166967, 9279277, 8284992, 3076270, 5745056, 8620536, 3875134, 6958384, 16689706,
+-44396540, -124570160, -118455200, 51470352, 5023501, 113868712, 241192480, 52823804, 97189208, 51869784,
+-178961088, -80073224, -120373976, -176707840, -11886322, 20905216, -83530672, 74221864, 126175936, 77317464,
+217321056, 133438728, 1173063, -20079508, -76971184, -191963024, -155593248, -66986456, -147392544, -43436616,
+84170624, 25076166, 21255794, 199150656, 76747848, 48541720, 184213296, 8769249, -9389872, 85004384,
+-42388644, -151886144, -73640976, -151770720, -221850096, -24515674, -100831336, -82188496, 70899712, 137723488,
+63592896, 243323856, 193715376, 112453520, 147090288, 49947248, -72261752, -111118856, -148339040, -237334528,
+-190449056, -127634616, -108925200, -33776160, 82558400, 125672888, 139852720, 188247872, 158296928, 74334072,
+26876832, 40891308, -63684164, -97307856, -69318624, -145430816, -109667696, -18749680, -65541736, 26057030,
+106378824, 38182260, 54191748, 77508056, 8049843, 4753455, -19057844, -72790568, -38388416, 738734,
+-29322816, 22639310, 30674120, -12412455, 38947300, 33801928, -53022980, 40510668, 46875272, -33086280,
+76542760, 11850889, -75806176, 53009024, -41699836, -147508512, -24664386, -89593552, -109226384, 67418104,
+8250096, 17264158, 141813376, 90447176, 100240240, 161683504, 118549688, 39527120, 16706349, -112363320,
+-204874240, -203387632, -204411984, -192866576, -118081536, 6199786, 110640504, 163078304, 222916320, 207487184,
+195545024, 154524864, 25860534, -70851392, -78206520, -163796624, -203262016, -121908888, -109767552, -60799556,
+10871636, 29502130, 34922380, 69923680, 60793652, 57636312, 80866720, 67270464, 42054172, 37154688,
+7705172, -23409182, -41954316, -50718196, -68838664, -57800596, -46001248, -35788352, -11805791, 12075837,
+20795694, 30060476, 35089884, 33999496, 25931402, 20927228, 9119289, -715649, -4572530, -4766877,
+-9295920, -7206419, -4793184, -5450851, -5377299, -1381369, -7475928, -8608188, -8471286, -13127031,
+-14709726, -8643622, -7382512, 4129074, 17818746, 23784992, 24197308, 22899692, 14922864, 10889353,
+4014721, -6808597, -17940078, -21398600, -23333484, -20936892, -15610059, -7123204, 973347, 10068477,
+15825344, 16633335, 13915157, 10421738, 3864934, -1120987, -5113159, -7458748, -8167417, -5198521,
+-2738579, 943819, 3526705, 5567888, 5354214, 3582003, -625455, -3535295, -5954436, -6616934,
+-5913633, -3850438, -1870995, 1142461, 3083787, 4349728, 4837207, 4627828, 3320547, 2259153,
+1078574, 20401, -941135, -1369558, -1687922, -1490354, -1090922, -672699, -493384, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-5042829,
--1938641, 1176284, -935766, -2905009, -210453, 6729677, -3454228, 785442, -1456531, -75699,
--2573222, 4843113, -2512019, -2677375, -3024194, 5770826, -3430605, -898185, -1620813, 1622961,
-2665027, 3376918, -4763656, -11811, 4562329, 2017561, 782221, -252329, -568546, 2059437,
-4651987, 1121523, -5970005, -3080029, -3211025, 5212480, -531502, 3976603, -2498060, 1842004,
-5219459, -2544231, -3926137, 1394254, -1466731, -265751, -3512210, -1422171, -2623688, 996432,
--4763119, -1575716, -1215476, -155693, 6456947, -2108829, -964757, -233002, -1685238, -671626,
--602906, 3902515, 2027761, 2391760, -3348464, 2458869, 2594160, -2289755, 1078037, 1530082,
--1719061, -2348810, 2752537, -4116189, 2914672, 1752347, 779000, -3815005, -1310502, 1417876,
--325881, -795106, -1016834, -92879, -2032593, -2378338, -352724, -394600, 298500, -897111,
-33823, 1403381, -39192, 520228, 215822, 273804, 30602, -280784, -1013075, -625455,
-721018, -326954, 57445, -102005, -3131031, 3389266, 430034, -1408749, -2124935, -553514,
--1062468, 40802, -2641942, -2020782, 1552631, -387084, -993748, -4642860, -665183, 4387846,
--2900177, -697932, 3311420, -1855426, -3477850, -2643552, 2268817, 54224, -310311, -640487,
--3333968, 1167694, -1467268, -756451, 3837553, -2059974, -5127117, -1503775, 316754, 1578401,
-1385664, 475668, -3888019, -871878, -4743255, -4305168, -1139240, 4576288, -757525, -8950712,
--375273, 3056943, 2655901, -1823214, 1795833, 1962800, 208843, 2702071, -4810900, -3395172,
--427349, 1434519, 249108, 1030255, -493921, 1294933, 1175747, 1897839, -255014, 1180579,
-1123134, -875636, 1882269, -432718, -4692789, -3839701, -2479807, -1968169, -2093797, 670552,
--1049583, 3681324, 3047279, -534723, -1433982, -1247151, -652298, 1121523, 1750736, 239981,
--984621, 206695, 266288, -978716, 1323387, 27917, -274878, -480499, -84826, -724776,
-544924, -129386, 123480, -843424, 538482, -526134, 30602, 20938, 380641, -129386,
--384936, -153008, -784368, -303332, 107374, -387621, 93952, -251256, -712428, 4068408,
-2253784, 6116034, 363462, -1257352, -807454, 4314295, -1237488, 2294050, -4042101, -469225,
--157840, 2244657, 1540820, 3866544, 2699924, -2055679, -3993246, -3262565, 2144799, -1416802,
-2949569, 1845225, 344671, -239981, 2441689, 1714766, -1875827, 2014340, -4299263, -635118,
--3990562, -3411278, -4790499, 1334661, 2636036, -546535, 3690451, -2962454, 3413425, -7085086,
-2644089, 1154809, 5143760, 1481764, 1806571, 2765422, -190589, -1839320, 1880122, 4501663,
-1480153, 2159295, -800475, -121870, -6512244, -469762, 958315, 1200443, -1013612, 3398393,
-6391448, -2200097, -4718022, 3057480, 615791, -3331821, -123480, -1564442, -3388192, 370978,
-4576288, 1126892, 1618666, 747861, -569083, 1731946, 1018444, -126165, 1455457, 62277,
--496606, -376883, -952409, 868120, -1364726, -192737, 2082522, -500364, -126702, 794569,
--586263, 1442035, -2135136, -955093, -46171, -850404, -976568, 190589, -583579, 679679,
-1501091, -621697, 812286, 213675, 12348, -2684, 138513, -1799591, -540629, -424665,
-265751, 1440962, 779537, 2273112, 3338800, 3209414, -3204046, 4923643, -1817845, -3355980,
--4932770, 1081795, -6507949, -456340, 624381, 1734093, -4167192, 2609193, -112743, 539018,
-1679332, 1005559, 1414655, -5616207, -418222, -1314260, -3672734, 2064806, 1023813, 776852,
-3069291, 10898480, -850940, 505196, 1518808, 2648921, 1029718, -9051644, 1825898, -1553704,
--1074279, 4865661, 103616, 2390686, 3512210, -4497368, -2516851, -1341640, -4345433, -9292162,
-395674, -3542274, -596464, -868120, -229781, -2204392, -4556424, 1217623, -4361540, -1438277,
-935229, -4884989, 4949950, 1654636, 1380295, -2092723, -407485, -857383, 954557, -1622961,
-2523830, -4022774, 1276142, 5939403, 4941897, -1811939, 2495376, -2439542, 1037235, -4555350,
--184147, 2714956, 3182034, 2804077, -532039, 5284958, 454193, 2602750, 2357400, -171262,
-1079647, 505732, 165356, -985158, 503585, 755377, -358093, 13959, -639413, -1554778,
--264677, 924492, -823023, 2078227, -632971, -1207423, -992137, 673236, -574989, 859530,
--215822, -996969, 507343, -340913, 1081795, 590021, 621160, 357556, -1971390, -549219,
-228707, 736587, -4832, 66572, -553514, 7349763, -9269076, 417149, -5699422, 2951180,
-4246649, 5173825, -777389, -4869419, 146029, 5097590, 1103270, 994285, -3794604, -487479,
--6660421, 8904004, -450972, -6812892, 7423314, 1878511, 2214593, -457951, -2650532, -848256,
--3506841, -3454228, 2755759, 3907347, -771484, 3688303, -2999498, -1860795, 19864, 5138392,
-4859756, -1331977, -2708514, 4006668, 2559801, 399969, 3389803, 829466, -3940096, 4194036,
-2619930, -285078, -1356136, 1178432, -4248797, 11400454, -569083, -377957, 8493835, -741419,
--5164162, -2783139, -592169, 2094870, -5367636, 3717294, 1133871, 158377, -4871567, -4091493,
--8625368, -732292, 4054449, 2039036, 4912369, -2678986, -1898376, 10275709, -2823404, 1745904,
--1401233, -4210679, 349503, 1908576, -4407710, -7821136, 350577, -4809290, -4865124, -2353642,
-2574296, 264677, -715112, -2967286, -1005559, 382252, -1100049, -797790, 827855, 2837363,
-418222, 744103, -1956358, -970663, -181462, 22012, -2770254, -2006287, -1749662, -62814,
-700617, 316754, -885837, 112206, -154082, -237834, -1441498, -492311, -187368, -513785,
--743029, -970126, -9827422, -161061, -4164508, -4702453, 1354525, -5637682, 101469, 3767223,
-2024540, 7950522, -13407277, 8519068, -1479616, 3695283, -2616709, -1966021, -7075422, 6194954,
-5451924, 1332514, -6296959, -397284, -3668976, -484258, 6431177, 4467840, 932545, 6134824,
--151934, 265214, 542777, -268435, -4395362, 9198746, -993211, 34360, 10683194, -6987912,
-2504503, -3360275, -765578, 3345780, -1534914, -5522791, 10280004, 8014946, -358093, 2568391,
-4269735, 11126113, -1515050, -2064806, -6132140, 1013075, 2056216, -6467147, -6911676, -6069863,
-7153268, 117575, -3027952, 4912906, 3462818, 18790, -1779190, 1569811, -3961034, -1039382,
--4304631, -996432, 3950296, -7881265, 1800128, -1686312, -5485747, 3289945, 5174362, 2196876,
-5390721, 4685810, -4046396, -6424734, -3240016, 2787434, -2567317, -4943508, 3146064, 5348845,
--3945464, 646393, 1107565, 581968, -3687766, 2110440, -1662689, -1303523, -2379412, -1240172,
--1870995, -194884, -240518, 696858, 1094143, -935229, -836445, -366146, -1493038, -856846,
--428423, -586800, 1120987, 1445793, 337692, 2130841, -1942399, 1472637, -1681480, -745714,
-1508070, 7385733, 7834557, 1328219, -6685654, -888521, -6347962, 2698313, 16829830, 4181688,
-11673184, 4312684, 184684, -10817949, -2629057, 1825361, 10547903, -4610648, -2276333, -4009889,
-1047435, 8486855, -6144488, 4175245, 7351374, 1664300, 2731062, -4744865, 9075266, -1896228,
-11807939, -71404, -3556770, -11002096, 1394791, 81068, 13212393, -3933653, -1030792, 8393440,
-104690, 1147830, -2671470, -8593156, 969589, 5015448, -6156836, -4846334, 1336272, -10312216,
-5728413, 5792837, -1701344, -629213, 2967286, 5907728, -450435, -3562675, -90194, 8655970,
--1052267, -1277216, -3208341, 11194295, 11334956, 812286, -1998770, 1808181, -433255, 2992519,
-5266167, -380105, 7584912, -2883534, -4135517, -6046777, 2112587, -447213, -9226663, -6638409,
--3800509, 7350300, -2083059, -3360275, -889595, 59056, -3094524, -4694936, -1616518, -1334661,
--2783676, 524523, -1725503, -1501628, 1551557, -2957622, -3058017, 1043140, 2552821, -1439888,
--1948305, -1451162, -2557116, -1186485, 872952, -834297, 507880, 1449552, -399432, -701690,
--2244657, 1377611, 156766, -7449084, 7464653, 5669894, 398895, -4955856, -5561446, -2443837,
--11005854, 12688944, 9532143, -2094333, 3504693, 1107565, -2136746, 9612137, -819265, -4530117,
-14243722, -15524159, 3953518, 6629819, -99321, -6372658, 6764037, 1012002, 9801115, -3850438,
--1105417, 2585034, 3887482, 624918, -1393180, 14286672, 6133214, -6590091, -9939628, 6841346,
--9943386, -2912525, -11441256, -1517197, 17008608, 6937983, 8197482, 19327, -9098351, -1546725,
--4471061, -2006287, 12707734, -2027761, -14108431, -1174674, 2709588, -8983998, -1534377, 5728950,
-4488778, -6051072, -3191698, 6122476, 8102993, -2407866, 8443369, 113817, 2084670, 3141769,
-668941, 3300146, 5043902, 4894652, 4747013, -2561411, -10252087, -11304354, 2757906, -2299955,
-8005282, -1478006, 9509594, 3200825, 4395899, -5128191, -4598300, 3374234, -230318, 664109,
-839129, 390842, -4626217, -2128156, -761820, -3831111, -166430, -3295314, 533113, -1874753,
-1353989, -491237, 2385854, -31139, 1280974, 400506, -1283122, -1098975, -1526324, 2994666,
-291521, -921807, 904628, 1536525, 1250909, 268972, -2292976, -6277632, -3600793, 1074,
--3082176, -97174, -558346, -624918, 3704409, -635118, 6110128, -957241, 5689221, -11860015,
-4032438, 3162707, 1557463, -7823283, -6569690, -8323110, 6200322, 3146601, -5992553, -5983963,
-7836705, 2436857, -802622, -5063230, -8256001, -3468186, 3127810, -5348308, 453656, -9884330,
--2885681, 966905, 3162170, 6178848, -1192390, 3879966, 5363878, -5816460, -13674639, 9118752,
-256087, -2326262, 8677445, -1551557, 180389, -6150930, 7604777, -5159330, -6487548, -2659122,
-6203544, 9484362, 7956427, 2332704, 1464584, -17278116, 7588671, -1236951, 3090766, -6103149,
--1290638, -6807523, -2469069, -1824824, -8950712, -4627291, -3771518, -5012764, 8921184, -3136400,
-11655467, -1623498, -840740, 7211787, 8290898, 14055817, 9608916, -409633, -4801237, -755377,
--153545, -7057705, 1553704, -4633733, -7681549, 14367739, -9436580, -10055055, -1600412, 5264020,
-632971, 1540820, 556198, 5953362, -252329, 1520955, 2025077, -2535641, 208306, 3601330,
--2244657, 1391033, 2565169, 2051921, 4568772, 896574, -60666, 2429878, 329102, -1032403,
-1614908, 2520072, 931471, -154082, 696322, 281320, 5320391, 293132, 4307852, 2801393,
-545998, 4503810, 4984847, 367757, -261456, 545998, 592169, 478889, -553514, -751619,
-1177358, 147103, -3008088, -4388920, -17980880, 4206384, -12315819, -7298223, 12013560, 9383430,
--20555714, -18833968, 828929, 8300561, -4638028, 5192079, -6660421, -586800, -11855183, -2965138,
--10684268, -599148, -2790118, 527207, 4362076, 3601330, 6953015, -663036, -5586679, 5192079,
--6698002, -2583960, 2394444, 609885, 3694209, 7355669, -974958, 1078037, 1838246, -2744484,
--576063, -10352482, -12276627, -11897059, 198642, -11970611, 4253628, 1762010, -4609574, -5482526,
--2241973, -1859184, -856846, -7066295, -11227045, -490700, 18305150, 10139881, -2370285, -10673531,
--10995653, 12655658, -11557757, -3726958, -1906429, -7692824, -5763846, -7845295, -9167071, -12866111,
--17415556, -2390686, -2655901, -2367064, 6076305, 5714991, 1640678, 5022965, -3816079, -4755603,
-16448651, 7015292, -4166118, -11871290, 3896072, -6976638, -8249559, 88047, 13820668, -2597918,
-53150, 9501541, -892279, -6149320, 430570, 2344515, -30065, -2457795, -2309619, 32749,
-2467996, 1226213, 1700807, 1045288, 4825396, -1273995, 2667175, -6642704, 3272765, 1725503,
--1054415, 1522029, -1260573, 2569464, -1065152, -1873143, -976568, 2339684, 2100776, 344134,
-2760053, -3738232, 3982509, -1822677, -2158221, 395137, 1018981, -15089831, 1525250, 7344394,
-7983808, 7401840, 3011309, 14768782, -6092948, -11049340, -3042984, 1745904, -2404108, 4585415,
-9739912, 19909320, 12419972, 7196755, 9141838, -7914014, -15037217, -5251135, -11321534, 12428562,
-2629594, -2825015, -9232032, 14129906, 12048994, -4715337, -1147293, -227096, -7650411, -6344741,
--11390253, 3147137, 3591130, 6183143, -10788958, 803696, 2747705, -4953171, -10496900, 146566,
-5687074, 7710540, 1061931, -20187420, -7431367, -10036265, 3827890, 11795591, -287226, -11389716,
-2396055, -10997264, 5727876, -2779381, 673236, -7838852, 15868830, 12622372, -4297115, -3876208,
--9626632, -764504, 12617003, 2839510, 15571941, 15181636, 12451110, 7379828, 2305861, -10337986,
--6010807, -13713294, 15382962, 15670188, -1578401, -12118787, 7420630, 18228914, -541166, 2249489,
--4740570, -500901, -12341052, 1848983, -9801652, 6447820, 1969779, 9098888, 8792872, 4900021,
-439160, 772020, 5312875, 2028835, -1639604, -3736085, -1538135, -5680631, 662499, 4373888,
--4052302, -2112587, -4592931, 3092377, -1292785, 6618008, -6617471, 1696512, -550293, 6311992,
--3388729, 2103460, 3484292, 718333, -547608, 261456, 774168, -2859375, -1508607, 3813394,
-4322348, -10351945, -2937758, 6800544, 12182138, -13701483, -16549046, -14354318, 14834280, -6800544,
-9762461, -613107, -296353, 24154360, -3432216, 1351841, -11359652, -17442936, 3777424, -2991982,
-4118874, 2529736, -1824287, -10173167, 2288144, 3176128, 1241782, -9628243, 5612449, 3969087,
-17490718, -8731132, 763967, 9364639, 9570261, -57445, 9666898, -3004867, -66035, 8612483,
-7178501, 1608465, -4430259, -14891725, -11439109, 8040179, -720481, -3745748, -3357591, 1714766,
-18919330, -1632088, -7274064, 9450539, -5263483, 8910447, 1744831, 27571006, -6005975, -1331440,
--593242, 3733937, 9032853, -2294586, -3796214, 5801964, -13680545, 10293426, 19161996, 5414343,
--4682588, 10575283, -4744865, -1003949, 21735756, -13298829, 4374424, 8337069, -4307852, 18148922,
-3879966, 3568044, -7704635, -11111080, 1324997, 4440996, -12057047, 11256572, -599685, 2536178,
--527744, 2988760, 10171019, -2863133, 10262824, 4740570, 2974265, 5643050, 4789426, -3574487,
-6234145, 5964636, -6214818, 1698660, 4087735, 8283382, 1424319, 2092186, 3700651, 4678293,
-7083475, 375273, -392990, -878321, 4631586, 4074313, -5543192, -492848, 2823941, 4531728,
-3198140, -3321084, 6674916, -620086, 1852742, 489626, 5374615, 2687039, 2119030, 2500208,
-3482682, 2576981, -1338419, -841277, 825707, 5517423, 1078574, 568546, -828929, 752693,
-1746441, 2200097, 409633, 2586644, 3024194, 5087926, -13772350, -3765076, 9818832, -4396436,
--7083475, -6264747, -6470368, 1470489, 9862319, -952946, -21185464, 294205, -16048145, 6612639,
-7211250, 425739, 3520263, -6859063, -705448, 8948564, -20298016, 5522791, -4269198, 11756936,
-8132521, 5463736, 1102733, -7855495, -18311594, -659814, -15981573, 10335839, 337692, -4553739,
-17245368, 9181029, -6599218, -5050345, -3351148, -2250563, -4566087, -8827768, 1851668, 2992519,
-24841554, -468688, -17434882, 355409, 12229919, 1258425, -8888435, 6102612, -13507135, 9524090,
--5603859, 6442988, -7794292, 4072166, -13828721, 37261524, 1565516, 25869124, -2298344, -6584722,
-6777996, -7816304, -7914551, 14602889, 13963476, -11684459, -31928786, 30955976, -10566693, -7954280,
--3868692, -3864934, 4182761, -2382633, 2499671, 13591424, 3280818, -10211285, -8485782, -6011881,
-4048007, -6298033, -871878, 6570763, -16550120, -980863, 1144072, -2151779, -4809290, 2332167,
--3393024, 9543954, -3537443, 4512400, -4011500, -2476049, 258772, -3736622, 2478196, 2646774,
--1721745, 2780455, -3863323, 2400350, -1016297, 212601, -1740536, 566936, -6959995, -4570919,
--998580, -2306934, -5711233, -7009387, -4267587, -1294933, -3046743, -85362, -5090610, 559956,
--4532801, -720481, -5899138, 3723737, -3309809, -1939715, -1714766, -15661598, -5507759, -4703526,
--13457743, -23756000, -5804649, 464930, -12585328, 6282464, -5341329, 10690174, -9061844, -3732327,
--12945568, 31122944, 26322780, -5800354, 5925445, 18122614, -18890876, 19317690, -7930120, -7919920,
-6995428, 2632278, 3350075, -2733210, -4117263, 637803, 6284611, 5474473, -8370892, 9757629,
--9026411, -15013595, 11022497, 9754408, -12533788, -15534360, -18026514, -2544231, -2945274, 5165772,
--11758010, -14685567, -7509214, 24867324, 8710194, 8533563, -10562398, 9661529, 13072270, -10058277,
-24365350, 4628364, -8664560, -11293617, 6548752, -9466645, -20765630, 5180268, -202400, 581431,
-11404212, 10704669, -9110699, 1853278, -26630408, -3195993, -10486700, 22180822, 1342714, 3229279,
--12835510, 10555419, -22626424, -2634426, 8880382, 2674154, -2444373, -2464238, 2761127, -924492,
-2568391, -3265249, 648540, 2003065, 5398237, 1462973, 1725503, -1104880, 3204583, -3195456,
-1032403, 10182831, -1975148, 583042, -3218004, 4611721, 2083059, -403190, 5259725, -5405217,
--5266704, 5850283, -4807679, -1643899, -4407710, 2559801, -6442988, -2761664, -2110440, 5304822,
-5160940, -8126078, 1283122, 4374424, -2864743, -9178882, -4527433, 7055021, -2143726, -1024887,
--4493073, -11515344, 14629732, 15419469, 13950054, 9421548, -106300, 12786118, 11586211, 1959579,
--2181307, 5168993, 43487, -12986907, -1540820, 4969277, -10167798, 14562623, -15146739, 12165495,
-13218836, -3768834, -2978023, 5636608, 17635136, 13246216, -15935402, -3441343, -4265440, -1232119,
-3981972, -7393250, -7786776, 17341468, 430570, 24886652, -16227997, -15341086, 12501576, -8238821,
-4504884, -9700721, 8342974, 9580998, 6282464, -3840238, -14263050, 1466195, 4734128, -11799886,
--21787832, -693637, 1978369, -12795781, 23524072, -2622615, -6677601, 31328028, 29438780, 3007551,
--4099546, -1029182, -6291590, 7159711, -15448997, 14546517, 1906429, -8323110, 17477832, 2883534,
-3536369, -4908611, -9504226, -23397908, 5144834, -7912941, -3881577, 10917807, 4379793, -5064304,
--15357729, -4151623, -17487496, 7561827, 15707232, -2123325, -11887396, -8202314, -11855720, 236223,
-6366216, 7748658, -1632625, -8276402, -4384625, -4463008, 1084479, -2425583, -4043175, 3493419,
--656056, -2355253, 4112431, -9353902, 2682744, 2579128, 14624364, 1461363, -3280818, -7363722,
-6429566, -7694971, -1060320, 5628555, -10447508, 9853192, 2036888, -263604, 1948305, 6720550,
--3352222, -10122701, 200253, -2888903, -1344862, 10060961, 9376450, -1028108, 2878702, -25773562,
--59732796, 20059108, 19007378, -6653978, 4264903, -14360760, 25814900, 16521129, -14593225, 4195110,
-3535295, 399969, -6552510, -4713190, -30793842, 13066364, 15243376, -3486440, 17717, -1698123,
-10267119, -7698192, 19568944, 5821828, -23201414, -13133473, 29525216, 19395536, -19196894, -4492536,
--6806450, -11742441, 1866163, -4671851, 4234838, 38352448, 10475425, 40182640, 22966800, 25907242,
-23613194, 46278272, -3003793, -4262218, 11093901, -3236795, -38762616, 31482110, -13595182, 18067316,
--25611964, -20361366, -38269232, 7638063, -3495030, -12827457, 9377524, -17972290, 100932, -25688200,
--25655450, 7238094, 15036681, -20841866, -5504001, -14440754, -20063402, -22534620, -16179679, 12374875,
--9759776, -28143310, 40499396, 25390772, 40832792, -5295158, -8752606, -8090645, -14368276, -23111220,
--1450625, -5055177, -17482664, -5814849, 5182952, -12374875, -11159399, 1323924, -1805497, -5498095,
--4510253, 10099079, 10754598, 369367, 2734821, 7660074, 9587978, 1976222, -774705, -1441498,
-4523675, -1884954, 1151588, -1731946, -6701760, -152471, 6376416, -6581501, 8700530, 10988137,
-4654671, 384400, 1814087, 1183800, -7286412, 628139, 4184372, -3735548, 76236, -1694365,
-1217086, -2583960, 992137, 4100083, -5582384, -4744865, 8836358, 3619584, -1101659, 1365800,
--4890357, -21755084, -57050052, 24711632, 29519310, -13357348, -5815386, -1476932, 33427730, 1083406,
-7153268, 7058242, -7853348, 6649683, 15576236, -3113851, -14966350, 3739843, 28434294, -15058155,
--9417790, 6235756, -3960497, 21287468, -5319317, 9599789, -10958609, -13166759, -13146895, 13955422,
--4190814, 12388833, 14447733, -3724274, 1912871, 93416, -11783243, 3914863, -10686952, 12635794,
-30949534, 50818052, -620623, -1446330, -21505438, 11629698, 16640314, -497679, 18686866, 26708792,
-11242614, 15188078, -23417772, -14066018, 19474456, 50774028, -9291088, -29802778, 7604777, -9906342,
--528818, 13766444, 267362, -13593571, -6492917, -7015829, -34524020, -14433238, 234076, 5729487,
-12051678, -1983201, -13271449, -7648800, 3265249, -5383742, -13328357, 13741748, 33229088, 14373108,
-17902498, 1832340, -4529043, -27021250, -5968931, 7674033, 5983427, -6052683, 15334644, -4336307,
-8584029, -18915036, 1102196, -6524592, -5438503, 178778, 5255966, 5143224, -5331128, -10292889,
-9963250, -3905736, 8186745, 731218, -2062121, 671089, 1759863, 7567733, 254477, -1205812,
--3913789, -4340602, 6521371, 2156611, 6010270, -12874164, 8960376, 5174362, 2439005, -4669167,
--1705102, 9343164, -1125281, 363462, -7204271, 668404, -11053635, -2341831, 3198677, 9362492,
-4648765, 8269423, 1904281, -1410897, -8090108, 18234820, 6133214, 9613211, 3829500, 27430882,
--8506183, -3311957, -10631118, 6452115, -6565395, 6123013, 31095564, 6237367, -32742146, -7900056,
--9484362, -27981176, 17947594, 8543764, -3161096, 4081830, 1841467, -12504260, -26844, -785979,
--12439299, -3649112, 27138288, 39873940, 18845242, -13760538, -21842056, 10449119, 18252000, 2131378,
-14615774, -10021769, -6935299, 15032922, 4793721, 307627, -33302640, -43418900, -1335735, -25352656,
--14705431, 9197672, 36479840, 7988103, 1876364, -10457708, -12530030, -18153754, -15983721, 3082713,
-11045582, -3802120, -18023830, -29027536, 11632382, 857383, -16154983, -27052388, -18325014, -29787208,
--53864260, -32449552, -4810900, -6366216, 64874408, -7837779, -2390149, 37436544, 4418985, 2193118,
-22502944, -13319767, -32749662, -38021196, -5885179, -18162880, -20177220, -21393768, -23480586, 4687957,
-21260624, 33820184, 20067698, 4233764, 2214056, -8576513, 17428440, 3685082, -5264020, -21654152,
-4501663, 15927886, -753230, 37044, -7795366, 4469451, 8796093, 14577656, 4095788, 6259378,
-5564130, 7348689, 8996883, 9481140, -2627983, 7243999, 1466195, -4873178, -11375221, -13462038,
-1385664, 3385508, -13553843, -6495065, -13037373, 4420058, 6723235, 10525891, 15201500, 25825638,
-19092740, 19742354, 11642046, 7822746, -4680441, 2270427, 102005, -11754252, -18406620, -13622563,
--17818746, -11115912, -15484968, 20488604, -29073170, 7343321, 4614406, -12658879, -40772660, 27740120,
-8229694, -2618856, -41285912, 10988674, 6400038, -21794274, 3637837, 19126026, 11743514, 5572720,
--18696530, -3804804, -6984691, 3298535, -7046431, 1735167, -14486925, -20817170, 22826678, -15767899,
-34694208, -21406654, -19407346, -13131326, -24394340, 2150705, -486942, 36465884, -27034672, -28483686,
-14668924, 9394704, -23608898, -31361314, -3503620, -17668958, 20302310, 4335233, -25997438, 16864726,
--4464619, -39917964, 26182658, -17802102, 17077326, -29699162, -7305203, -821949, -12528420, -5116380,
-3382824, 37499896, -10161893, -3505230, -10821707, 10712722, -17792976, 13886166, 29255170, -1797981,
-29414620, 23142358, -3568044, 47227460, -2817499, 5462662, -1440425, 13334263, 47554952, -3911642,
--13220983, -50888920, 39368208, 14066018, 33603288, 11459510, -26491896, 11774116, 7506529, 4854924,
--23526758, 13420162, 2699387, 3877819, -12670690, -3675955, 16026670, 13772886, 561030, -1651952,
--1689533, -1841467, 3888556, 10096394, -20672752, -6082748, -2903935, 3301219, -4264903, 4590247,
-4399657, 6513855, -4863514, -10953777, 16982300, 26666378, 9290014, -13664975, -11787001, -5043902,
--4045859, 7228430, 3587908, -2655901, -16874926, -12048457, -13677323, -1323924, 13042205, 5758478,
-10994043, 4225174, -18387292, -3280281, 8008504, 17870286, 11158325, -7488813, -5634460, -4292820,
-2563559, 3117610, -389231, -1067836, -3511136, 28094992, -53687628, 2218888, -60441464, -20150376,
--10134512, 18600430, 56120728, 47718696, 17679696, 28236726, -18087182, -15220827, 2868501, -3974455,
-13114683, 4257923, -12491912, 18925236, 27804544, 23124104, 17332878, 14667850, -314606, 2737505,
--9249212, 26309896, 12369506, -4863514, -15977815, 5541045, 10890426, -2711198, 34393560, 35906464,
--20533702, -15155866, 913754, 27924804, 17471926, 4591857, 3554622, -6500433, -12381854, 7058242,
-42863772, -17165374, -21002390, -22879290, 22463752, 9252433, -12667469, -19771882, -31762894, -37644316,
-4282083, 8410620, 6953552, -8201777, -2660195, -10263898, 7588134, -30002494, -49376016, -22189412,
--3321084, -8292508, -19206020, 24899536, 41525356, -9189619, 21482890, 45832668, 29943438, 10713259,
--31403190, 5217312, 5792837, -27772870, -15300821, -4338991, -22085796, 24358370, 34662532, -1971390,
--7852274, -4168803, -9960029, -5522254, -13993540, -13738527, -4973572, -6777996, 5084168, -3007551,
--3715684, 6890202, -20848308, -2457795, 1832877, 21366926, -21677774, -3467649, -4855461, 4116189,
--13763760, -4799626, 4345433, -7519951, -12714714, -2037425, -872952, -12504797, 14912126, -20219096,
--2175938, -7421167, 4614943, -2092186, -5859946, -11788075, 499290, 6003291, -4110821, 2827699,
--34241088, 27611272, -3508452, 23722714, 14389751, 546535, 15731928, -6903086, -1768453, 13547401,
-16604880, 2558190, 83752, -545998, -15119895, -9822590, 4040491, -21075404, 565862, -7924215,
-510027, -17869748, 3043521, 994822, -16260746, 13574244, 5770289, 9186935, -20421496, -5513665,
-3845606, -1072131, 1473711, 11710228, 2587181, 3278134, -2349347, -4529043, -3202972, -1678795,
-7554848, -3424163, -13042205, 10557030, -17932562, -5632850, -6156299, 2146947, -8781598, -10401874,
-13644037, -1743220, -13698798, 8366060, -19102404, 15295452, 4752382, 718333, 15749108, 17533668,
-2428267, 4995047, -13174275, 17008070, -8332237, -11639361, -1012539, 2514167, 32148368, -14453102,
--23757074, 20344724, -7751342, 20328618, -3452080, 1333051, -8899709, 12312061, -20648056, -17121350,
--6788733, 8087424, 4820564, -1250909, 9880035, -12275017, -12431783, -8250096, 2925410, 3592203,
-723702, -533650, -3768834, 2130841, -17149268, 3471407, 3483219, -4132296, -1599875, 5168993,
--2762738, -7323456, 8848706, -4423817, 1080721, -375810, -2261300, 5983963, 2571612, -6213207,
--729608, -1475858, -5577015, -1196148, -2078764, -11410654, 3461744, 6973417, 5549635, -5179194,
-5178657, -8324721, -2625299, 209380, -5418638, 17029008, -7153268, -88985816, -169941648, -60316372,
--133006008, -151604832, 37460704, -4872641, 51227148, 197127184, 213702544, 150970240, 215222960, 176933328,
-58897424, 62124556, 46027552, -118398824, -121929288, -67728416, -118351584, -127957816, -42705932, -37557880,
--107821392, -81184008, -12982612, -48010220, -58766428, -14440217, -44924820, -79646408, -45259292, 15089831,
--31822486, -39283380, 47145856, -7773354, -44203268, 40669584, 75154952, -17148194, 18944028, 116335632,
-16208670, -37056976, 77280424, 67519568, -66566624, 38422240, 85146656, -26311506, 9481677, 147371072,
-112496464, 56756384, 206929376, 230348224, 117882896, 212154736, 273915840, 171976928, 162282656, 225223792,
-144879440, 92214560, 102109088, 53202832, -61710092, -119579944, -162224672, -277040960, -337111968, -382238656,
--432253024, -426240608, -461988160, -412734016, -306328352, -306341216, -241457152, -21568788, -12390444, 6324340,
-173333072, 136924624, 45683420, 90886880, 135238864, 50106700, 60397976, 137297760, 100008312, 20435454,
-82429552, 116239528, 50026168, 62649076, 142983760, 53582940, -22580254, 65940096, 46171972, -31615254,
-62284004, 138097152, 65064460, 101812200, 220379072, 183271616, 173681504, 258810976, 239046608, 164758704,
-143289776, 128441000, 48124572, -1900523, 6903623, -27049704, -86038392, -85689432, -98371392, -168444864,
--188407328, -180655456, -202628496, -243159040, -212962192, -205905568, -219639792, -170103792, -114982720, -90008016,
--56703768, 2044404, 22759032, 19047106, 31616328, 34708168, 17814450, 16254304, 31880468, 27560268,
-18758270, 22564684, 26389890, 19977504, 25969520, 39737036, 43741556, 42039676, 49045304, 52041580,
-43067784, 49382460, 45434848, 28339268, 14612552, 6326487, -397284, -5661841, -4162897, -4232691,
--8332774, -8964670, -3345243, 4051765, 14475114, 20694764, 24975772, 25930328, 23259396, 23247584,
-28804736, 27916214, 27014270, 31185220, 29529510, 21956410, 22815404, 21766358, 13243532, 10821707,
-13297756, 6174553, -708133, -2150168, -9614821, -20323248, -21838298, -24748138, -34369404, -38190848,
--35816808, -40867152, -43764644, -38876972, -38421704, -40087616, -35231616, -28348394, -26904748, -23046258,
--16352014, -16281147, -15825881, -11970074, -8026757, -6051609, -550830, 4383014, 6077379, 8376797,
-13872207, 18928458, 21829708, 25740812, 25997974, 23320062, 20241644, 18300318, 16487306, 14206141,
-11686069, 9198746, 7044820, 5297306, 4930086, 4467303, 3384971, 2837363, 2339147, 1272921,
-561567, 102542, -360240, -734439, -869194, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-1938641, 1176284, -935766, -2905009, -210453, 6729677, -3454228, 785442, -1456531, -75699,
+-2573222, 4843113, -2512019, -2677375, -3024194, 5770826, -3430605, -898185, -1620813, 1622961,
+2665027, 3376918, -4763656, -11811, 4562329, 2017561, 782221, -252329, -568546, 2059437,
+4651987, 1121523, -5970005, -3080029, -3211025, 5212480, -531502, 3976603, -2498060, 1842004,
+5219459, -2544231, -3926137, 1394254, -1466731, -265751, -3512210, -1422171, -2623688, 996432,
+-4763119, -1575716, -1215476, -155693, 6456947, -2108829, -964757, -233002, -1685238, -671626,
+-602906, 3902515, 2027761, 2391760, -3348464, 2458869, 2594160, -2289755, 1078037, 1530082,
+-1719061, -2348810, 2752537, -4116189, 2914672, 1752347, 779000, -3815005, -1310502, 1417876,
+-325881, -795106, -1016834, -92879, -2032593, -2378338, -352724, -394600, 298500, -897111,
+33823, 1403381, -39192, 520228, 215822, 273804, 30602, -280784, -1013075, -625455,
+721018, -326954, 57445, -102005, -3131031, 3389266, 430034, -1408749, -2124935, -553514,
+-1062468, 40802, -2641942, -2020782, 1552631, -387084, -993748, -4642860, -665183, 4387846,
+-2900177, -697932, 3311420, -1855426, -3477850, -2643552, 2268817, 54224, -310311, -640487,
+-3333968, 1167694, -1467268, -756451, 3837553, -2059974, -5127117, -1503775, 316754, 1578401,
+1385664, 475668, -3888019, -871878, -4743255, -4305168, -1139240, 4576288, -757525, -8950712,
+-375273, 3056943, 2655901, -1823214, 1795833, 1962800, 208843, 2702071, -4810900, -3395172,
+-427349, 1434519, 249108, 1030255, -493921, 1294933, 1175747, 1897839, -255014, 1180579,
+1123134, -875636, 1882269, -432718, -4692789, -3839701, -2479807, -1968169, -2093797, 670552,
+-1049583, 3681324, 3047279, -534723, -1433982, -1247151, -652298, 1121523, 1750736, 239981,
+-984621, 206695, 266288, -978716, 1323387, 27917, -274878, -480499, -84826, -724776,
+544924, -129386, 123480, -843424, 538482, -526134, 30602, 20938, 380641, -129386,
+-384936, -153008, -784368, -303332, 107374, -387621, 93952, -251256, -712428, 4068408,
+2253784, 6116034, 363462, -1257352, -807454, 4314295, -1237488, 2294050, -4042101, -469225,
+-157840, 2244657, 1540820, 3866544, 2699924, -2055679, -3993246, -3262565, 2144799, -1416802,
+2949569, 1845225, 344671, -239981, 2441689, 1714766, -1875827, 2014340, -4299263, -635118,
+-3990562, -3411278, -4790499, 1334661, 2636036, -546535, 3690451, -2962454, 3413425, -7085086,
+2644089, 1154809, 5143760, 1481764, 1806571, 2765422, -190589, -1839320, 1880122, 4501663,
+1480153, 2159295, -800475, -121870, -6512244, -469762, 958315, 1200443, -1013612, 3398393,
+6391448, -2200097, -4718022, 3057480, 615791, -3331821, -123480, -1564442, -3388192, 370978,
+4576288, 1126892, 1618666, 747861, -569083, 1731946, 1018444, -126165, 1455457, 62277,
+-496606, -376883, -952409, 868120, -1364726, -192737, 2082522, -500364, -126702, 794569,
+-586263, 1442035, -2135136, -955093, -46171, -850404, -976568, 190589, -583579, 679679,
+1501091, -621697, 812286, 213675, 12348, -2684, 138513, -1799591, -540629, -424665,
+265751, 1440962, 779537, 2273112, 3338800, 3209414, -3204046, 4923643, -1817845, -3355980,
+-4932770, 1081795, -6507949, -456340, 624381, 1734093, -4167192, 2609193, -112743, 539018,
+1679332, 1005559, 1414655, -5616207, -418222, -1314260, -3672734, 2064806, 1023813, 776852,
+3069291, 10898480, -850940, 505196, 1518808, 2648921, 1029718, -9051644, 1825898, -1553704,
+-1074279, 4865661, 103616, 2390686, 3512210, -4497368, -2516851, -1341640, -4345433, -9292162,
+395674, -3542274, -596464, -868120, -229781, -2204392, -4556424, 1217623, -4361540, -1438277,
+935229, -4884989, 4949950, 1654636, 1380295, -2092723, -407485, -857383, 954557, -1622961,
+2523830, -4022774, 1276142, 5939403, 4941897, -1811939, 2495376, -2439542, 1037235, -4555350,
+-184147, 2714956, 3182034, 2804077, -532039, 5284958, 454193, 2602750, 2357400, -171262,
+1079647, 505732, 165356, -985158, 503585, 755377, -358093, 13959, -639413, -1554778,
+-264677, 924492, -823023, 2078227, -632971, -1207423, -992137, 673236, -574989, 859530,
+-215822, -996969, 507343, -340913, 1081795, 590021, 621160, 357556, -1971390, -549219,
+228707, 736587, -4832, 66572, -553514, 7349763, -9269076, 417149, -5699422, 2951180,
+4246649, 5173825, -777389, -4869419, 146029, 5097590, 1103270, 994285, -3794604, -487479,
+-6660421, 8904004, -450972, -6812892, 7423314, 1878511, 2214593, -457951, -2650532, -848256,
+-3506841, -3454228, 2755759, 3907347, -771484, 3688303, -2999498, -1860795, 19864, 5138392,
+4859756, -1331977, -2708514, 4006668, 2559801, 399969, 3389803, 829466, -3940096, 4194036,
+2619930, -285078, -1356136, 1178432, -4248797, 11400454, -569083, -377957, 8493835, -741419,
+-5164162, -2783139, -592169, 2094870, -5367636, 3717294, 1133871, 158377, -4871567, -4091493,
+-8625368, -732292, 4054449, 2039036, 4912369, -2678986, -1898376, 10275709, -2823404, 1745904,
+-1401233, -4210679, 349503, 1908576, -4407710, -7821136, 350577, -4809290, -4865124, -2353642,
+2574296, 264677, -715112, -2967286, -1005559, 382252, -1100049, -797790, 827855, 2837363,
+418222, 744103, -1956358, -970663, -181462, 22012, -2770254, -2006287, -1749662, -62814,
+700617, 316754, -885837, 112206, -154082, -237834, -1441498, -492311, -187368, -513785,
+-743029, -970126, -9827422, -161061, -4164508, -4702453, 1354525, -5637682, 101469, 3767223,
+2024540, 7950522, -13407277, 8519068, -1479616, 3695283, -2616709, -1966021, -7075422, 6194954,
+5451924, 1332514, -6296959, -397284, -3668976, -484258, 6431177, 4467840, 932545, 6134824,
+-151934, 265214, 542777, -268435, -4395362, 9198746, -993211, 34360, 10683194, -6987912,
+2504503, -3360275, -765578, 3345780, -1534914, -5522791, 10280004, 8014946, -358093, 2568391,
+4269735, 11126113, -1515050, -2064806, -6132140, 1013075, 2056216, -6467147, -6911676, -6069863,
+7153268, 117575, -3027952, 4912906, 3462818, 18790, -1779190, 1569811, -3961034, -1039382,
+-4304631, -996432, 3950296, -7881265, 1800128, -1686312, -5485747, 3289945, 5174362, 2196876,
+5390721, 4685810, -4046396, -6424734, -3240016, 2787434, -2567317, -4943508, 3146064, 5348845,
+-3945464, 646393, 1107565, 581968, -3687766, 2110440, -1662689, -1303523, -2379412, -1240172,
+-1870995, -194884, -240518, 696858, 1094143, -935229, -836445, -366146, -1493038, -856846,
+-428423, -586800, 1120987, 1445793, 337692, 2130841, -1942399, 1472637, -1681480, -745714,
+1508070, 7385733, 7834557, 1328219, -6685654, -888521, -6347962, 2698313, 16829830, 4181688,
+11673184, 4312684, 184684, -10817949, -2629057, 1825361, 10547903, -4610648, -2276333, -4009889,
+1047435, 8486855, -6144488, 4175245, 7351374, 1664300, 2731062, -4744865, 9075266, -1896228,
+11807939, -71404, -3556770, -11002096, 1394791, 81068, 13212393, -3933653, -1030792, 8393440,
+104690, 1147830, -2671470, -8593156, 969589, 5015448, -6156836, -4846334, 1336272, -10312216,
+5728413, 5792837, -1701344, -629213, 2967286, 5907728, -450435, -3562675, -90194, 8655970,
+-1052267, -1277216, -3208341, 11194295, 11334956, 812286, -1998770, 1808181, -433255, 2992519,
+5266167, -380105, 7584912, -2883534, -4135517, -6046777, 2112587, -447213, -9226663, -6638409,
+-3800509, 7350300, -2083059, -3360275, -889595, 59056, -3094524, -4694936, -1616518, -1334661,
+-2783676, 524523, -1725503, -1501628, 1551557, -2957622, -3058017, 1043140, 2552821, -1439888,
+-1948305, -1451162, -2557116, -1186485, 872952, -834297, 507880, 1449552, -399432, -701690,
+-2244657, 1377611, 156766, -7449084, 7464653, 5669894, 398895, -4955856, -5561446, -2443837,
+-11005854, 12688944, 9532143, -2094333, 3504693, 1107565, -2136746, 9612137, -819265, -4530117,
+14243722, -15524159, 3953518, 6629819, -99321, -6372658, 6764037, 1012002, 9801115, -3850438,
+-1105417, 2585034, 3887482, 624918, -1393180, 14286672, 6133214, -6590091, -9939628, 6841346,
+-9943386, -2912525, -11441256, -1517197, 17008608, 6937983, 8197482, 19327, -9098351, -1546725,
+-4471061, -2006287, 12707734, -2027761, -14108431, -1174674, 2709588, -8983998, -1534377, 5728950,
+4488778, -6051072, -3191698, 6122476, 8102993, -2407866, 8443369, 113817, 2084670, 3141769,
+668941, 3300146, 5043902, 4894652, 4747013, -2561411, -10252087, -11304354, 2757906, -2299955,
+8005282, -1478006, 9509594, 3200825, 4395899, -5128191, -4598300, 3374234, -230318, 664109,
+839129, 390842, -4626217, -2128156, -761820, -3831111, -166430, -3295314, 533113, -1874753,
+1353989, -491237, 2385854, -31139, 1280974, 400506, -1283122, -1098975, -1526324, 2994666,
+291521, -921807, 904628, 1536525, 1250909, 268972, -2292976, -6277632, -3600793, 1074,
+-3082176, -97174, -558346, -624918, 3704409, -635118, 6110128, -957241, 5689221, -11860015,
+4032438, 3162707, 1557463, -7823283, -6569690, -8323110, 6200322, 3146601, -5992553, -5983963,
+7836705, 2436857, -802622, -5063230, -8256001, -3468186, 3127810, -5348308, 453656, -9884330,
+-2885681, 966905, 3162170, 6178848, -1192390, 3879966, 5363878, -5816460, -13674639, 9118752,
+256087, -2326262, 8677445, -1551557, 180389, -6150930, 7604777, -5159330, -6487548, -2659122,
+6203544, 9484362, 7956427, 2332704, 1464584, -17278116, 7588671, -1236951, 3090766, -6103149,
+-1290638, -6807523, -2469069, -1824824, -8950712, -4627291, -3771518, -5012764, 8921184, -3136400,
+11655467, -1623498, -840740, 7211787, 8290898, 14055817, 9608916, -409633, -4801237, -755377,
+-153545, -7057705, 1553704, -4633733, -7681549, 14367739, -9436580, -10055055, -1600412, 5264020,
+632971, 1540820, 556198, 5953362, -252329, 1520955, 2025077, -2535641, 208306, 3601330,
+-2244657, 1391033, 2565169, 2051921, 4568772, 896574, -60666, 2429878, 329102, -1032403,
+1614908, 2520072, 931471, -154082, 696322, 281320, 5320391, 293132, 4307852, 2801393,
+545998, 4503810, 4984847, 367757, -261456, 545998, 592169, 478889, -553514, -751619,
+1177358, 147103, -3008088, -4388920, -17980880, 4206384, -12315819, -7298223, 12013560, 9383430,
+-20555714, -18833968, 828929, 8300561, -4638028, 5192079, -6660421, -586800, -11855183, -2965138,
+-10684268, -599148, -2790118, 527207, 4362076, 3601330, 6953015, -663036, -5586679, 5192079,
+-6698002, -2583960, 2394444, 609885, 3694209, 7355669, -974958, 1078037, 1838246, -2744484,
+-576063, -10352482, -12276627, -11897059, 198642, -11970611, 4253628, 1762010, -4609574, -5482526,
+-2241973, -1859184, -856846, -7066295, -11227045, -490700, 18305150, 10139881, -2370285, -10673531,
+-10995653, 12655658, -11557757, -3726958, -1906429, -7692824, -5763846, -7845295, -9167071, -12866111,
+-17415556, -2390686, -2655901, -2367064, 6076305, 5714991, 1640678, 5022965, -3816079, -4755603,
+16448651, 7015292, -4166118, -11871290, 3896072, -6976638, -8249559, 88047, 13820668, -2597918,
+53150, 9501541, -892279, -6149320, 430570, 2344515, -30065, -2457795, -2309619, 32749,
+2467996, 1226213, 1700807, 1045288, 4825396, -1273995, 2667175, -6642704, 3272765, 1725503,
+-1054415, 1522029, -1260573, 2569464, -1065152, -1873143, -976568, 2339684, 2100776, 344134,
+2760053, -3738232, 3982509, -1822677, -2158221, 395137, 1018981, -15089831, 1525250, 7344394,
+7983808, 7401840, 3011309, 14768782, -6092948, -11049340, -3042984, 1745904, -2404108, 4585415,
+9739912, 19909320, 12419972, 7196755, 9141838, -7914014, -15037217, -5251135, -11321534, 12428562,
+2629594, -2825015, -9232032, 14129906, 12048994, -4715337, -1147293, -227096, -7650411, -6344741,
+-11390253, 3147137, 3591130, 6183143, -10788958, 803696, 2747705, -4953171, -10496900, 146566,
+5687074, 7710540, 1061931, -20187420, -7431367, -10036265, 3827890, 11795591, -287226, -11389716,
+2396055, -10997264, 5727876, -2779381, 673236, -7838852, 15868830, 12622372, -4297115, -3876208,
+-9626632, -764504, 12617003, 2839510, 15571941, 15181636, 12451110, 7379828, 2305861, -10337986,
+-6010807, -13713294, 15382962, 15670188, -1578401, -12118787, 7420630, 18228914, -541166, 2249489,
+-4740570, -500901, -12341052, 1848983, -9801652, 6447820, 1969779, 9098888, 8792872, 4900021,
+439160, 772020, 5312875, 2028835, -1639604, -3736085, -1538135, -5680631, 662499, 4373888,
+-4052302, -2112587, -4592931, 3092377, -1292785, 6618008, -6617471, 1696512, -550293, 6311992,
+-3388729, 2103460, 3484292, 718333, -547608, 261456, 774168, -2859375, -1508607, 3813394,
+4322348, -10351945, -2937758, 6800544, 12182138, -13701483, -16549046, -14354318, 14834280, -6800544,
+9762461, -613107, -296353, 24154360, -3432216, 1351841, -11359652, -17442936, 3777424, -2991982,
+4118874, 2529736, -1824287, -10173167, 2288144, 3176128, 1241782, -9628243, 5612449, 3969087,
+17490718, -8731132, 763967, 9364639, 9570261, -57445, 9666898, -3004867, -66035, 8612483,
+7178501, 1608465, -4430259, -14891725, -11439109, 8040179, -720481, -3745748, -3357591, 1714766,
+18919330, -1632088, -7274064, 9450539, -5263483, 8910447, 1744831, 27571006, -6005975, -1331440,
+-593242, 3733937, 9032853, -2294586, -3796214, 5801964, -13680545, 10293426, 19161996, 5414343,
+-4682588, 10575283, -4744865, -1003949, 21735756, -13298829, 4374424, 8337069, -4307852, 18148922,
+3879966, 3568044, -7704635, -11111080, 1324997, 4440996, -12057047, 11256572, -599685, 2536178,
+-527744, 2988760, 10171019, -2863133, 10262824, 4740570, 2974265, 5643050, 4789426, -3574487,
+6234145, 5964636, -6214818, 1698660, 4087735, 8283382, 1424319, 2092186, 3700651, 4678293,
+7083475, 375273, -392990, -878321, 4631586, 4074313, -5543192, -492848, 2823941, 4531728,
+3198140, -3321084, 6674916, -620086, 1852742, 489626, 5374615, 2687039, 2119030, 2500208,
+3482682, 2576981, -1338419, -841277, 825707, 5517423, 1078574, 568546, -828929, 752693,
+1746441, 2200097, 409633, 2586644, 3024194, 5087926, -13772350, -3765076, 9818832, -4396436,
+-7083475, -6264747, -6470368, 1470489, 9862319, -952946, -21185464, 294205, -16048145, 6612639,
+7211250, 425739, 3520263, -6859063, -705448, 8948564, -20298016, 5522791, -4269198, 11756936,
+8132521, 5463736, 1102733, -7855495, -18311594, -659814, -15981573, 10335839, 337692, -4553739,
+17245368, 9181029, -6599218, -5050345, -3351148, -2250563, -4566087, -8827768, 1851668, 2992519,
+24841554, -468688, -17434882, 355409, 12229919, 1258425, -8888435, 6102612, -13507135, 9524090,
+-5603859, 6442988, -7794292, 4072166, -13828721, 37261524, 1565516, 25869124, -2298344, -6584722,
+6777996, -7816304, -7914551, 14602889, 13963476, -11684459, -31928786, 30955976, -10566693, -7954280,
+-3868692, -3864934, 4182761, -2382633, 2499671, 13591424, 3280818, -10211285, -8485782, -6011881,
+4048007, -6298033, -871878, 6570763, -16550120, -980863, 1144072, -2151779, -4809290, 2332167,
+-3393024, 9543954, -3537443, 4512400, -4011500, -2476049, 258772, -3736622, 2478196, 2646774,
+-1721745, 2780455, -3863323, 2400350, -1016297, 212601, -1740536, 566936, -6959995, -4570919,
+-998580, -2306934, -5711233, -7009387, -4267587, -1294933, -3046743, -85362, -5090610, 559956,
+-4532801, -720481, -5899138, 3723737, -3309809, -1939715, -1714766, -15661598, -5507759, -4703526,
+-13457743, -23756000, -5804649, 464930, -12585328, 6282464, -5341329, 10690174, -9061844, -3732327,
+-12945568, 31122944, 26322780, -5800354, 5925445, 18122614, -18890876, 19317690, -7930120, -7919920,
+6995428, 2632278, 3350075, -2733210, -4117263, 637803, 6284611, 5474473, -8370892, 9757629,
+-9026411, -15013595, 11022497, 9754408, -12533788, -15534360, -18026514, -2544231, -2945274, 5165772,
+-11758010, -14685567, -7509214, 24867324, 8710194, 8533563, -10562398, 9661529, 13072270, -10058277,
+24365350, 4628364, -8664560, -11293617, 6548752, -9466645, -20765630, 5180268, -202400, 581431,
+11404212, 10704669, -9110699, 1853278, -26630408, -3195993, -10486700, 22180822, 1342714, 3229279,
+-12835510, 10555419, -22626424, -2634426, 8880382, 2674154, -2444373, -2464238, 2761127, -924492,
+2568391, -3265249, 648540, 2003065, 5398237, 1462973, 1725503, -1104880, 3204583, -3195456,
+1032403, 10182831, -1975148, 583042, -3218004, 4611721, 2083059, -403190, 5259725, -5405217,
+-5266704, 5850283, -4807679, -1643899, -4407710, 2559801, -6442988, -2761664, -2110440, 5304822,
+5160940, -8126078, 1283122, 4374424, -2864743, -9178882, -4527433, 7055021, -2143726, -1024887,
+-4493073, -11515344, 14629732, 15419469, 13950054, 9421548, -106300, 12786118, 11586211, 1959579,
+-2181307, 5168993, 43487, -12986907, -1540820, 4969277, -10167798, 14562623, -15146739, 12165495,
+13218836, -3768834, -2978023, 5636608, 17635136, 13246216, -15935402, -3441343, -4265440, -1232119,
+3981972, -7393250, -7786776, 17341468, 430570, 24886652, -16227997, -15341086, 12501576, -8238821,
+4504884, -9700721, 8342974, 9580998, 6282464, -3840238, -14263050, 1466195, 4734128, -11799886,
+-21787832, -693637, 1978369, -12795781, 23524072, -2622615, -6677601, 31328028, 29438780, 3007551,
+-4099546, -1029182, -6291590, 7159711, -15448997, 14546517, 1906429, -8323110, 17477832, 2883534,
+3536369, -4908611, -9504226, -23397908, 5144834, -7912941, -3881577, 10917807, 4379793, -5064304,
+-15357729, -4151623, -17487496, 7561827, 15707232, -2123325, -11887396, -8202314, -11855720, 236223,
+6366216, 7748658, -1632625, -8276402, -4384625, -4463008, 1084479, -2425583, -4043175, 3493419,
+-656056, -2355253, 4112431, -9353902, 2682744, 2579128, 14624364, 1461363, -3280818, -7363722,
+6429566, -7694971, -1060320, 5628555, -10447508, 9853192, 2036888, -263604, 1948305, 6720550,
+-3352222, -10122701, 200253, -2888903, -1344862, 10060961, 9376450, -1028108, 2878702, -25773562,
+-59732796, 20059108, 19007378, -6653978, 4264903, -14360760, 25814900, 16521129, -14593225, 4195110,
+3535295, 399969, -6552510, -4713190, -30793842, 13066364, 15243376, -3486440, 17717, -1698123,
+10267119, -7698192, 19568944, 5821828, -23201414, -13133473, 29525216, 19395536, -19196894, -4492536,
+-6806450, -11742441, 1866163, -4671851, 4234838, 38352448, 10475425, 40182640, 22966800, 25907242,
+23613194, 46278272, -3003793, -4262218, 11093901, -3236795, -38762616, 31482110, -13595182, 18067316,
+-25611964, -20361366, -38269232, 7638063, -3495030, -12827457, 9377524, -17972290, 100932, -25688200,
+-25655450, 7238094, 15036681, -20841866, -5504001, -14440754, -20063402, -22534620, -16179679, 12374875,
+-9759776, -28143310, 40499396, 25390772, 40832792, -5295158, -8752606, -8090645, -14368276, -23111220,
+-1450625, -5055177, -17482664, -5814849, 5182952, -12374875, -11159399, 1323924, -1805497, -5498095,
+-4510253, 10099079, 10754598, 369367, 2734821, 7660074, 9587978, 1976222, -774705, -1441498,
+4523675, -1884954, 1151588, -1731946, -6701760, -152471, 6376416, -6581501, 8700530, 10988137,
+4654671, 384400, 1814087, 1183800, -7286412, 628139, 4184372, -3735548, 76236, -1694365,
+1217086, -2583960, 992137, 4100083, -5582384, -4744865, 8836358, 3619584, -1101659, 1365800,
+-4890357, -21755084, -57050052, 24711632, 29519310, -13357348, -5815386, -1476932, 33427730, 1083406,
+7153268, 7058242, -7853348, 6649683, 15576236, -3113851, -14966350, 3739843, 28434294, -15058155,
+-9417790, 6235756, -3960497, 21287468, -5319317, 9599789, -10958609, -13166759, -13146895, 13955422,
+-4190814, 12388833, 14447733, -3724274, 1912871, 93416, -11783243, 3914863, -10686952, 12635794,
+30949534, 50818052, -620623, -1446330, -21505438, 11629698, 16640314, -497679, 18686866, 26708792,
+11242614, 15188078, -23417772, -14066018, 19474456, 50774028, -9291088, -29802778, 7604777, -9906342,
+-528818, 13766444, 267362, -13593571, -6492917, -7015829, -34524020, -14433238, 234076, 5729487,
+12051678, -1983201, -13271449, -7648800, 3265249, -5383742, -13328357, 13741748, 33229088, 14373108,
+17902498, 1832340, -4529043, -27021250, -5968931, 7674033, 5983427, -6052683, 15334644, -4336307,
+8584029, -18915036, 1102196, -6524592, -5438503, 178778, 5255966, 5143224, -5331128, -10292889,
+9963250, -3905736, 8186745, 731218, -2062121, 671089, 1759863, 7567733, 254477, -1205812,
+-3913789, -4340602, 6521371, 2156611, 6010270, -12874164, 8960376, 5174362, 2439005, -4669167,
+-1705102, 9343164, -1125281, 363462, -7204271, 668404, -11053635, -2341831, 3198677, 9362492,
+4648765, 8269423, 1904281, -1410897, -8090108, 18234820, 6133214, 9613211, 3829500, 27430882,
+-8506183, -3311957, -10631118, 6452115, -6565395, 6123013, 31095564, 6237367, -32742146, -7900056,
+-9484362, -27981176, 17947594, 8543764, -3161096, 4081830, 1841467, -12504260, -26844, -785979,
+-12439299, -3649112, 27138288, 39873940, 18845242, -13760538, -21842056, 10449119, 18252000, 2131378,
+14615774, -10021769, -6935299, 15032922, 4793721, 307627, -33302640, -43418900, -1335735, -25352656,
+-14705431, 9197672, 36479840, 7988103, 1876364, -10457708, -12530030, -18153754, -15983721, 3082713,
+11045582, -3802120, -18023830, -29027536, 11632382, 857383, -16154983, -27052388, -18325014, -29787208,
+-53864260, -32449552, -4810900, -6366216, 64874408, -7837779, -2390149, 37436544, 4418985, 2193118,
+22502944, -13319767, -32749662, -38021196, -5885179, -18162880, -20177220, -21393768, -23480586, 4687957,
+21260624, 33820184, 20067698, 4233764, 2214056, -8576513, 17428440, 3685082, -5264020, -21654152,
+4501663, 15927886, -753230, 37044, -7795366, 4469451, 8796093, 14577656, 4095788, 6259378,
+5564130, 7348689, 8996883, 9481140, -2627983, 7243999, 1466195, -4873178, -11375221, -13462038,
+1385664, 3385508, -13553843, -6495065, -13037373, 4420058, 6723235, 10525891, 15201500, 25825638,
+19092740, 19742354, 11642046, 7822746, -4680441, 2270427, 102005, -11754252, -18406620, -13622563,
+-17818746, -11115912, -15484968, 20488604, -29073170, 7343321, 4614406, -12658879, -40772660, 27740120,
+8229694, -2618856, -41285912, 10988674, 6400038, -21794274, 3637837, 19126026, 11743514, 5572720,
+-18696530, -3804804, -6984691, 3298535, -7046431, 1735167, -14486925, -20817170, 22826678, -15767899,
+34694208, -21406654, -19407346, -13131326, -24394340, 2150705, -486942, 36465884, -27034672, -28483686,
+14668924, 9394704, -23608898, -31361314, -3503620, -17668958, 20302310, 4335233, -25997438, 16864726,
+-4464619, -39917964, 26182658, -17802102, 17077326, -29699162, -7305203, -821949, -12528420, -5116380,
+3382824, 37499896, -10161893, -3505230, -10821707, 10712722, -17792976, 13886166, 29255170, -1797981,
+29414620, 23142358, -3568044, 47227460, -2817499, 5462662, -1440425, 13334263, 47554952, -3911642,
+-13220983, -50888920, 39368208, 14066018, 33603288, 11459510, -26491896, 11774116, 7506529, 4854924,
+-23526758, 13420162, 2699387, 3877819, -12670690, -3675955, 16026670, 13772886, 561030, -1651952,
+-1689533, -1841467, 3888556, 10096394, -20672752, -6082748, -2903935, 3301219, -4264903, 4590247,
+4399657, 6513855, -4863514, -10953777, 16982300, 26666378, 9290014, -13664975, -11787001, -5043902,
+-4045859, 7228430, 3587908, -2655901, -16874926, -12048457, -13677323, -1323924, 13042205, 5758478,
+10994043, 4225174, -18387292, -3280281, 8008504, 17870286, 11158325, -7488813, -5634460, -4292820,
+2563559, 3117610, -389231, -1067836, -3511136, 28094992, -53687628, 2218888, -60441464, -20150376,
+-10134512, 18600430, 56120728, 47718696, 17679696, 28236726, -18087182, -15220827, 2868501, -3974455,
+13114683, 4257923, -12491912, 18925236, 27804544, 23124104, 17332878, 14667850, -314606, 2737505,
+-9249212, 26309896, 12369506, -4863514, -15977815, 5541045, 10890426, -2711198, 34393560, 35906464,
+-20533702, -15155866, 913754, 27924804, 17471926, 4591857, 3554622, -6500433, -12381854, 7058242,
+42863772, -17165374, -21002390, -22879290, 22463752, 9252433, -12667469, -19771882, -31762894, -37644316,
+4282083, 8410620, 6953552, -8201777, -2660195, -10263898, 7588134, -30002494, -49376016, -22189412,
+-3321084, -8292508, -19206020, 24899536, 41525356, -9189619, 21482890, 45832668, 29943438, 10713259,
+-31403190, 5217312, 5792837, -27772870, -15300821, -4338991, -22085796, 24358370, 34662532, -1971390,
+-7852274, -4168803, -9960029, -5522254, -13993540, -13738527, -4973572, -6777996, 5084168, -3007551,
+-3715684, 6890202, -20848308, -2457795, 1832877, 21366926, -21677774, -3467649, -4855461, 4116189,
+-13763760, -4799626, 4345433, -7519951, -12714714, -2037425, -872952, -12504797, 14912126, -20219096,
+-2175938, -7421167, 4614943, -2092186, -5859946, -11788075, 499290, 6003291, -4110821, 2827699,
+-34241088, 27611272, -3508452, 23722714, 14389751, 546535, 15731928, -6903086, -1768453, 13547401,
+16604880, 2558190, 83752, -545998, -15119895, -9822590, 4040491, -21075404, 565862, -7924215,
+510027, -17869748, 3043521, 994822, -16260746, 13574244, 5770289, 9186935, -20421496, -5513665,
+3845606, -1072131, 1473711, 11710228, 2587181, 3278134, -2349347, -4529043, -3202972, -1678795,
+7554848, -3424163, -13042205, 10557030, -17932562, -5632850, -6156299, 2146947, -8781598, -10401874,
+13644037, -1743220, -13698798, 8366060, -19102404, 15295452, 4752382, 718333, 15749108, 17533668,
+2428267, 4995047, -13174275, 17008070, -8332237, -11639361, -1012539, 2514167, 32148368, -14453102,
+-23757074, 20344724, -7751342, 20328618, -3452080, 1333051, -8899709, 12312061, -20648056, -17121350,
+-6788733, 8087424, 4820564, -1250909, 9880035, -12275017, -12431783, -8250096, 2925410, 3592203,
+723702, -533650, -3768834, 2130841, -17149268, 3471407, 3483219, -4132296, -1599875, 5168993,
+-2762738, -7323456, 8848706, -4423817, 1080721, -375810, -2261300, 5983963, 2571612, -6213207,
+-729608, -1475858, -5577015, -1196148, -2078764, -11410654, 3461744, 6973417, 5549635, -5179194,
+5178657, -8324721, -2625299, 209380, -5418638, 17029008, -7153268, -88985816, -169941648, -60316372,
+-133006008, -151604832, 37460704, -4872641, 51227148, 197127184, 213702544, 150970240, 215222960, 176933328,
+58897424, 62124556, 46027552, -118398824, -121929288, -67728416, -118351584, -127957816, -42705932, -37557880,
+-107821392, -81184008, -12982612, -48010220, -58766428, -14440217, -44924820, -79646408, -45259292, 15089831,
+-31822486, -39283380, 47145856, -7773354, -44203268, 40669584, 75154952, -17148194, 18944028, 116335632,
+16208670, -37056976, 77280424, 67519568, -66566624, 38422240, 85146656, -26311506, 9481677, 147371072,
+112496464, 56756384, 206929376, 230348224, 117882896, 212154736, 273915840, 171976928, 162282656, 225223792,
+144879440, 92214560, 102109088, 53202832, -61710092, -119579944, -162224672, -277040960, -337111968, -382238656,
+-432253024, -426240608, -461988160, -412734016, -306328352, -306341216, -241457152, -21568788, -12390444, 6324340,
+173333072, 136924624, 45683420, 90886880, 135238864, 50106700, 60397976, 137297760, 100008312, 20435454,
+82429552, 116239528, 50026168, 62649076, 142983760, 53582940, -22580254, 65940096, 46171972, -31615254,
+62284004, 138097152, 65064460, 101812200, 220379072, 183271616, 173681504, 258810976, 239046608, 164758704,
+143289776, 128441000, 48124572, -1900523, 6903623, -27049704, -86038392, -85689432, -98371392, -168444864,
+-188407328, -180655456, -202628496, -243159040, -212962192, -205905568, -219639792, -170103792, -114982720, -90008016,
+-56703768, 2044404, 22759032, 19047106, 31616328, 34708168, 17814450, 16254304, 31880468, 27560268,
+18758270, 22564684, 26389890, 19977504, 25969520, 39737036, 43741556, 42039676, 49045304, 52041580,
+43067784, 49382460, 45434848, 28339268, 14612552, 6326487, -397284, -5661841, -4162897, -4232691,
+-8332774, -8964670, -3345243, 4051765, 14475114, 20694764, 24975772, 25930328, 23259396, 23247584,
+28804736, 27916214, 27014270, 31185220, 29529510, 21956410, 22815404, 21766358, 13243532, 10821707,
+13297756, 6174553, -708133, -2150168, -9614821, -20323248, -21838298, -24748138, -34369404, -38190848,
+-35816808, -40867152, -43764644, -38876972, -38421704, -40087616, -35231616, -28348394, -26904748, -23046258,
+-16352014, -16281147, -15825881, -11970074, -8026757, -6051609, -550830, 4383014, 6077379, 8376797,
+13872207, 18928458, 21829708, 25740812, 25997974, 23320062, 20241644, 18300318, 16487306, 14206141,
+11686069, 9198746, 7044820, 5297306, 4930086, 4467303, 3384971, 2837363, 2339147, 1272921,
+561567, 102542, -360240, -734439, -869194, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-4409858,
-3595961, 3853123, -1881733, 3867081, -2391223, -550293, 5157719, -2161979, 2434173, 1473174,
--5794985, -2631204, 4287988, -1717450, -861141, 2688113, 1765232, 1906429, 483721, 6626061,
-1101122, -1742146, 1456531, -2331630, 4088809, -1217623, -2304787, -1015223, -5427765, -1854889,
--4008278, 1274532, -105227, 1430761, -1628866, 2233383, 1030255, -274341, 653909, 336618,
-483721, 703301, -2889439, 7094212, 1012002, -2619930, 5236102, -1293859, -4591857, -5017059,
-4830228, -994285, -428423, 3197066, 323196, -863288, 2480344, -295279, 1420560, 396211,
-1815697, -991064, 1980517, -934692, 2360622, 3462281, 1857037, -2085207, -2156611, -1064615,
-898722, -2225867, 1514513, -1104344, 1889786, 2490007, -3156801, -1781875, 2680597, 787590,
--898722, 4172561, 2391760, 1981054, -248034, 1085016, -123480, 540092, -523986, 619012,
-208843, 284542, -992137, 1535988, 470299, 93416, -308701, 614180, 976031, -549756,
-1053878, -78383, 4519916, 853088, 993211, 3787624, 1074, 2722473, 1269163, -354872,
-246961, -3033858, 1351841, 200253, 4646081, 1622424, 1491964, 172336, 1340030, 5112085,
--4908611, 2714419, 679142, -3244848, -1484985, -2024003, -698469, -1879585, 1255741, 5912560,
-3694209, 4408247, 3479461, 6029597, 4367445, -5529771, -10024454, -1292785, 419296, -2461553,
-5208722, -250719, 7825431, -3703336, -3736622, 3368328, 137439, 256624, 3068754, -5776194,
-1428614, -4142496, 5401458, 3187403, -68183, 8256001, 320512, -813896, -1073742, -1475321,
--2101850, 3899294, 2046552, -2036351, -708670, -5783174, -2582349, -780073, 5994701, 4107599,
-692027, 3024194, 66572, 3222299, -41339, 1323924, -3507378, -2248952, 796180, 436476,
--227096, -1767379, 1578401, 1896228, -530965, -1814087, -373662, 1912871, -347892, 1014149,
--965831, -544387, -770947, 604517, -680752, 102005, -89657, 965831, -852014, 933082,
-1411971, -694711, 300111, 114354, -75699, 1746978, -608275, 441308, -700080, 693637,
-467615, 296890, -251256, 1537061, -122407, 76773, 607201, 1730335, 3673271, 8293045,
-2466922, 408559, 304943, 2369211, 2216740, 537408, 1352378, 1912334, -76773, -129923,
-2409477, 9375914, 3173444, 7324530, -4074313, -3323768, -1313723, -4330401, -5066988, -2001992,
-3842922, -6273337, -828392, -700080, -9879499, 2041720, -9980430, -3292629, -1279363, 2429341,
-91268, 2138357, -1899986, -54224, -6713571, 2536178, -2184528, -3738769, 777389, 1950989,
--251792, 543313, 2963528, 5184026, -8584566, 2412698, 654446, -2510945, -2687576, -513785,
-1264331, -1112933, -5134097, -1181116, 1488206, 2756832, -284542, 6500970, 644782, 329639,
-2716030, -4095251, 6192806, 1990717, 3712462, 1661079, 3120294, -600222, -500901, 1845225,
-1143535, -817654, -1764695, -1464047, -2969433, -52076, -4012573, 306016, 2472828, -181999,
--1658394, -3180960, 2939905, -1680406, 1245541, 462783, -416612, -3027415, 345745, -264141,
-842350, -912144, -792958, 281320, -891206, -1657857, -807454, -682900, -69256, -1087164,
--91805, -612033, 1536525, -252329, -676457, -246424, 868120, -295279, -1196685, -1378685,
-1590212, 35970, 237297, -869194, 4882841, 5339718, -209380, 5895380, 335007, -807991,
-690416, 462246, -1136556, -90194, -4176856, -2393908, 3659312, 4318053, -5127654, -1243930,
-2079301, -3422552, -9776956, 2396592, 3565897, 4207458, -2274185, -2608119, -3509525, 5287642,
-6021008, 1014149, 2354179, -4780836, -3888019, 4477504, 1665374, -3588445, 6216965, -6291054,
-1005559, 577673, 5827197, 2134599, -1334661, 936840, -2069637, 3199214, -7686918, -2285460,
--11058467, -4829154, 5542656, -483721, 8519605, -1183264, -7182259, 4507568, 957778, -2936684,
--376883, 332323, -2930242, 1883880, 5087926, 5760088, 121333, 2746095, -302258, 6556805,
--3382287, 2828236, -654446, -127775, 177167, 2261837, -709207, 8208756, 789737, 733366,
--1305670, 4832375, 1624571, -1644436, -3492345, 64961, 3279208, 1135482, 941135, -2156074,
--141197, 656593, -359167, -578747, -619012, -1154273, 868120, 69256, 365072, 694174,
-1709397, -685584, -1821066, 1975685, -557272, 193810, 13959, -237834, -257161, 783295,
-695248, 957241, -369367, 893353, -46171, 517007, 867047, -205622, 90194, 759136,
-1129576, 629750, 704912, 231928, 68183, 5929739, -8257612, -1213865, -5624797, -5835787,
-1974611, 1032403, 11812234, 538482, 4293894, -10012106, -2460480, 2113661, -5244692, 3331284,
-909996, 763430, 2818036, 3282429, 7721278, 3400004, -1319092, 2394981, -3973919, 1060320,
-3066070, -289373, 570157, 3388729, 4392141, 10726144, 2029909, -1678795, -7471633, -383326,
-5529234, -8817568, 886911, -713501, 2669322, -4454418, -5246840, 9283035, -6054830, 1861332,
--454193, -5924908, 13437879, 3423089, 7009924, 3753265, 7672959, -1487669, -2990908, 4877472,
--4627291, 3736085, -3702262, 2006287, 5268315, 2891587, -2467459, -465467, 2656974, -4782983,
--3570192, 219580, -630823, 7942469, -4466766, -7538742, -1190780, 4099546, 6667937, -4232691,
--7148436, -1611687, 9777493, 1245541, -77309, -3573950, 412317, -260919, 2972117, 3070902,
--267362, 1440962, 1606318, -4854924, -1174674, 1600949, -303332, 2752000, 1050120, 229781,
--2101850, -265214, -345208, 1025423, -393526, 2876018, -636729, -353798, -1520418, 273804,
--1904281, 33823, -270046, 681289, 1637993, 10201, 1360431, -140123, -1791001, -391916,
-98784, 936840, -3098819, 3641596, -12882754, 7384660, 2209761, -2842195, 3990025, -10522133,
--8767639, 1195612, -4299799, 10058277, 8948027, 9500468, -6250251, 3723200, 199179, 9469329,
-726386, 6708202, 2728378, -2771865, -8419210, -7641821, 2514703, -10198937, -91805, -2375654,
--4915053, -6798933, -3956739, 102542, 8305393, 71941, 3277597, -11678553, -6481643, -1206349,
--7282654, 550293, 7420093, -7918309, 3351685, -61203, -2653753, -704375, -1639067, 8132521,
-4413616, 4069482, -1876364, -2434173, 11220065, -3342022, -2974802, -9165460, 6782290, -13025562,
-1854352, -4265440, 2106145, 4664335, -3077344, -6941204, -4240744, 499827, 9530532, -4733054,
--979789, -6120329, -4880694, 3082713, 3354370, 7497939, -8670465, -52076, -4561256, -3033858,
-1899449, -3436511, -6796786, -3903052, -541166, 6299644, 6466074, 2229088, 407485, 945430,
-2984466, 259846, 516470, 1336809, -1749125, 194884, 2712809, -784368, 374736, 3242164,
--734439, -115964, 580357, 2360085, 46171, 370978, 919123, 404264, 2039573, -2332704,
--2523293, -172336, -881542, 26844, 1502702, -630823, 2723546, 1773285, -11988864, 3309272,
-1187022, 2097018, -16535624, 14922327, 379031, -249108, -219580, -5315022, 1818382, 269509,
-5388574, -4575214, 6032819, 1780801, -3640522, -6315750, -7926362, 4092567, 782221, -612570,
-621160, -4534412, 5054640, 3801046, 9266392, 5544266, 3707094, 5152350, -1128503, -4997732,
--3732327, 382252, -2602750, 4053912, -4419522, -6717866, -7380365, 511638, -10122164, 4727149,
-5400922, -6019397, 6283537, -7285339, 3762928, -10783052, 1529008, -1924145, 860067, -2816425,
--97711, -10027138, -1626182, -3406983, -6342056, -1650341, -4940823, 1659468, -4446902, -2531346,
--6411850, 2928631, -6128919, -388158, 9987946, -1625108, 357556, 3289408, -2146410, -10014790,
--11440719, -1851668, -7981660, 463856, -2134599, 7566122, 605590, 2888366, -7518341, 735513,
--1651952, -1311576, 5532455, 1423245, -597000, -2916820, 1543504, 2192044, 824097, 2953864,
--68183, 1678259, -813359, -231928, 478889, 571231, 1080184, -209917, 3230889, -836982,
--2668249, 1183264, 9127, 887985, 1096290, 746251, -351114, -1327682, 852014, -2384244,
-991064, 4900021, 3397856, -10203232, -221191, 1941862, -9490804, -10819559, 6082211, -10619844,
-2190970, 7256884, -5090073, -12221866, -5169530, 398895, 8250096, -3194919, 14467060, -881005,
--1014149, -8176544, -5767604, -871342, 3017752, 914828, -2843268, -2384244, -551366, -2986076,
--6030134, 5167920, -4976257, -3020973, 5504001, 1695975, -8559870, -9135395, -8377334, 7444789,
--7783555, -8434242, 14039711, -8643085, 6260452, -1124208, 3872450, -12466679, 5859946, 813896,
--1932735, -526134, -2344515, 4150012, 3081639, 11923903, -2879776, -2160369, 5719823, 11523934,
-3247532, 2389613, -5315559, -3495030, -9329206, -1923072, -140123, -21475, 6932614, -2074469,
-3753265, 12053289, -1743757, -365609, -1298691, -163209, -12079596, -13846975, 807454, 9255118,
-212601, -18406620, 4928475, -6400575, 3202972, -11471321, -7082938, -1736241, 432718, -4166118,
-1956358, 4323422, -423054, -515396, -308701, -1921998, 1997697, -2200634, 1988570, 331249,
-711891, -1917166, -1255741, -2697776, 1373316, 241592, -763430, -2589865, -496069, -752156,
--1602023, -1909650, 1273995, -2177549, -766115, 1918240, 649614, -1042066, -81068, 82141,
--2738579, 322659, -1707250, -2245194, -162672, -576599, 5097590, -863825, 6038724, -930397,
--2567854, -3707094, 5122286, 3160022, -2865817, 2324114, 5212480, -2744484, -17769354, -7734163,
--3494493, -1983738, 7922604, -13931263, -10229538, 8537321, 5291937, 21496312, 6054294, 4949950,
-5905043, 2719251, -3861713, 422517, -4067334, 6842957, 299037, 6907918, 201327, -205085,
--9447854, 4887136, -6412386, 4963372, -992674, 5206037, 2056753, 6991133, -10931766, 1269163,
--7586523, 9104257, 547608, -9154723, 12078522, 8930311, 5732708, -5487895, -18417894, 5293011,
--2007360, -2291365, 9012989, -878321, 4167729, 8713415, -1933272, -11064373, -98247, 4955856,
-3221226, -2973728, -1236951, -8109972, 3008088, 1106491, 1709934, -1219234, 1143535, 6975027,
--4350802, 3182571, -1152662, -265751, 12562779, -3377455, 5767604, 4145717, -3969087, -4420058,
-1560147, 948114, -2123325, 1059246, -2210835, 2025614, -1976222, 4785668, 425202, 4575751,
-868120, -115964, 5748814, 2044941, -1717987, 1619203, -1362578, -1794760, 822486, 2294586,
--2192044, 1464047, -1138703, -2235531, -116501, 2289755, -1068373, -2488934, 751082, -1162862,
--3871913, 1670742, -5906, -1968169, -1180579, -645856, -2201171, -179852, 2836289, 4100620,
--3893388, 530965, 4539244, -5114769, -20094542, 4049617, 4835597, 20276004, -4303557, -3308199,
-9574019, 12583180, -20623360, -11783243, 11207717, -5883032, 339302, 4572530, -13148506, -28760712,
--11312407, 16285979, 12945031, 10945187, -3371013, 6119792, -3386045, 5632850, -6017786, 1959042,
--14522358, 3513283, -5144834, 7391102, 7191386, 215822, -6869800, 6726456, 4235912, 11640972,
--1235340, -7285875, -3635153, -18435610, -9431748, 4474819, -1255741, -12361453, 8341900, 11429445,
--16274168, 15678241, -1523103, -1767379, 9860708, 1994476, 9322763, -1267552, 3320547, -3595961,
--1920387, 4690105, 18756122, -6832219, 11934640, -1046898, 1097901, 4455492, 10390600, -9667435,
-1098438, 15211700, 4531191, -7038915, 4045859, 5979668, 1387811, 11943230, 8643622, 15024869,
--1384053, 4274566, -157840, 475668, -8402567, -5869610, -6684580, -3281355, -33823, -1453310,
--2716567, -2440615, 4482872, 6465000, 2969433, -3413425, 5229660, -1584306, -856846, -3204046,
--2544231, 3253975, 1083406, -1258962, 197569, -3550864, -2975339, -3495567, 67646, -1979980,
-3049964, 1817308, -1303523, 1292248, 3575024, -2252174, 1643362, 2026151, -1912871, -1793149,
--2035278, -399432, -581431, 2157684, -752156, 304406, -934155, -13071733, -3333432, 13481902,
-8565775, 10162966, -6597607, -3332358, -1059783, -1428077, 14446659, 1860258, -14860587, -6632503,
--4543002, 9525701, 1862942, 2043331, 8099772, 17718350, -26203596, 17369384, -3449933, -3112778,
--6772090, 5158793, 5349382, 10201084, 1591285, 9720585, -1006633, -2614561, 3023657, -1644436,
-4976794, 8934606, 1063004, -692027, 11774116, -8771934, -1624571, 2854006, -1023276, 10356777,
--12247099, 1096290, -10479720, 1683627, -11110544, -1591285, 345208, 6071473, 15053324, -8804683,
--4836133, -9127879, -528281, -13331042, -8644159, -8775155, 5907728, 10842645, 140660, 21508122,
--13653164, 19216220, -13566191, -3204583, 5942624, 4344897, 19082002, 10963441, -14284524, 7431904,
--5987722, -19788524, -493921, -12559021, 15785615, 23941222, 15262166, -3017752, -8492224, -3170223,
-13418552, -2037425, 6995428, 769873, 3102577, 4694936, 1503775, 1842541, 1586454, -5898064,
-4068945, 25233, 1719061, -2306398, -1926293, -5603322, -3106335, -1962263, 3417183, -1751810,
-2291902, 2837363, -1090922, -761283, 79994, 3237332, 2091649, 1167157, 6135898, -145492,
-6410776, -5751498, -2512019, 4068945, 3976066, -2440078, 1362578, -2056753, -4159676, 435939,
--1474784, -13663902, -8779987, -344671, 16441135, -3273839, 7224672, 15262703, -13073344, 5506148,
--20855288, 12444131, -12837120, -6340446, 20004348, 6707665, 21573620, -9386114, 38655, -9943386,
-6160594, 27683748, 7034620, 9298604, -14161044, -2826625, 583042, 10570451, 9344775, 17666274,
--14589467, -5168457, -15867220, -13503914, 881542, 953483, 9219147, -9262097, 6421513, -21532282,
-13302051, 10042707, 4720706, -3769908, -2647847, 1246077, 6248641, 1960116, 1676111, -255551,
-14432164, 12320651, 5270462, 970126, -11133629, -10995116, 29908542, 964757, 3629247, 16590385,
-7289633, -4886599, -3656091, 10500658, 21501680, -15816754, -6648073, -17805324, -16532403, 21007222,
-9343164, 73551, -4276714, 6869264, 15963857, 10124849, 16474958, 4495220, -7534983, 11887396,
--8717710, -22146998, 6386080, 649077, 246961, -85362, 9096204, 15791521, -3372086, 8294656,
-9252970, 8393440, 882616, 1757179, 8092792, -30602, -2675765, -1934346, -3583077, 7894687,
--4801237, -1472100, 1881733, 4397510, 516470, -879931, 8433705, 1658394, -1963874, 6323803,
-8058433, 3644817, -3571265, -168041, -1685238, 2391223, -73551, -104690, -380105, -2024540,
-2703682, 969589, 569083, 2653753, 3499862, -776852, -4135517, -1670205, -668941, 4711043,
-1544578, -3517041, 1048509, 1822677, 5025649, 2179159, -437013, 4702989, 76236, 2425046,
--1969779, -64961, -185220, 813359, -685047, 6516539, -14008036, -10451266, -4101157, -13019656,
-14673756, -1640141, -3744138, -12393128, -2069101, -11535745, -28617368, 4987531, -3531000, -9008157,
-6460168, -15155329, -930934, -8272644, -22950158, -5233418, -9965398, -10844256, 18315888, -4883915,
--6637335, -3310883, -443992, -4628364, -6499896, -1016297, 4810364, 15538118, 11662984, -420370,
--934155, -26011932, 1557463, 3578782, 10637560, -5988258, -5448703, 39522288, -6827388, -19288162,
--18808198, 16405701, -11019275, 4752918, -22289270, 5559299, -6292664, -11873437, -10345502, -25267292,
-4003447, 7292855, 17923972, 5323612, -9808632, 14208289, 1606318, 13368623, 14747844, 42739756,
-11376295, 3002719, -16688632, -18570902, -5089000, 2025077, -2464238, -16801912, 7472170, 19580220,
-4417374, 13940927, 21428666, 19338628, -8295730, -15397995, -10667088, 1408749, 3308199, -1843078,
--16510391, 3212099, -13453985, 4128537, -6045704, 923418, -7494181, 4886599, -1360968, 3128347,
-255551, -3086471, -7669738, -1672353, -340376, 4460324, 5945309, 4877472, 6871948, 463856,
-5850819, 10579041, 74625, 2054605, 5735929, 2105071, -5518496, -2983392, -9272298, -2622078,
-5251135, 3144990, 462783, -1138166, 3239479, 2001992, -2143189, -4180077, -8163659, 1103270,
-1009317, -1068373, -2845953, -537408, -3060164, 1596117, -5761162, -17280800, -7495255, -2703682,
-5287105, -6337761, 10224707, -5359046, -7093139, 19887310, 10326175, 22620520, 259309, -6611566,
--8969502, 23985782, -20657182, -7727183, 27999428, -16940962, 5575405, 5805185, 7245073, 1618666,
-15723338, -4942434, 14148159, -5405217, 3074123, 3359201, -7317014, 10502269, -15982647, -11138461,
--10380936, -4789426, -14209899, -26171384, -4786741, -7858180, 4131759, -6767258, -34764540, 9626632,
-21794274, -1290638, -4669703, 34121904, -42335492, -9186398, 23572928, -5814849, 18287434, -13483513,
--8376260, 6326487, -40404904, 13032541, -13776644, 20163260, 14810658, -21497386, 42349988, 6225555,
-2222109, -2199560, 16672526, -30687542, 12526809, -1468879, -4893042, 8191040, -19842748, 28026272,
-25438554, -47084652, 6737193, -9392020, -44196824, -7630010, -19746112, 10847477, 2761664, 7633768,
--17860622, 27698780, -2741263, -7463580, 12779138, -553514, 9069897, -1959042, 14334990, 325881,
-7132330, 2210298, -660888, -1547262, 7999914, -5830418, -6556268, 126165, -7697119, 11462731,
--2539936, -5968931, 584116, 5265630, 2503429, 5431523, 2078227, 13303661, 3119220, -7259569,
-13774497, -7508140, 7819525, 11876121, -3358128, 2658048, 8303783, -5761162, 435402, -7509214,
-8118025, 1165010, 25794500, -11758010, -33597380, -33707976, 2518462, 4023311, -14899778, 8623221,
--18816252, 5856725, -8607114, 17134772, 21986474, 585726, 21267604, 19339700, -10965588, -409096,
--13988172, -3610994, -3390340, 7385733, -1497870, -2269890, -2459406, -22560926, -34053720, -13768591,
-17564806, 13553843, -14688788, -16874390, 9641665, 9774809, -22193706, 10997801, -14810658, -2864743,
-16935592, 23570780, 37581, -14173929, 8943733, 1681480, 14642080, 2435783, 12197707, 12599287,
--3718368, -48724256, 5383742, 1153736, 19543174, -7280507, 19934016, 19759534, -13418552, -65978212,
--8951786, 2579665, -8031052, 39494372, 41441064, 28875066, 41178000, -10798622, 19301584, -16407312,
-27484032, 19230716, -32639604, 40980968, -42603928, -36303212, -34227668, 10732586, 25551834, 21257404,
-7056095, -26759794, 24490440, 3317325, -8945880, -11521787, 1341104, 23117662, -18083422, -7301445,
-35374424, 6451041, 16115791, 3003256, 1611687, 8633421, -13521631, 7115150, -5595269, 164283,
-3519189, -3533148, -7067369, -4689031, -6203007, -13587129, 2898566, 12389907, -2615098, 12670154,
-9772124, -8296266, -6608344, -6181532, 7768522, 4842039, -16576426, -9645423, 718870, 687195,
--2593087, 2063732, 10637023, -384936, 8424041, 766115, -6505265, 4085588, 14106820, -26162256,
--49355616, 10287520, 18090402, -2727304, 24896314, 9489730, -31164820, -7918846, 6529961, 7573638,
-8476655, -6358699, 14327474, 1151051, -9356586, -4330401, 5049271, 20422032, 26665304, 20138564,
-31994822, -30923764, -8646843, -8083129, -31637802, -7646653, 5343476, 1526324, 3425773, -12657269,
--14315126, 15959562, 35963372, -17148730, 18521510, -12265890, 4751308, -11320460, -2014877, -28193240,
--10325101, -1699196, -39023000, -22859964, -38194072, -32266478, 21225728, 50140520, 39994736, 1073205,
--2619930, 29528, -9134322, -17384954, -61022896, -20473036, -8842264, 4860829, 2502892, -21609592,
--15130096, 7787313, 26702886, 15877420, 8533026, 17415018, 29959008, 11655467, -30211336, 22908818,
--17942226, -9460739, 17721036, 40022116, 8522289, 51348480, -12399034, -53645752, -6317897, -17404818,
--32945620, 49359376, 13907104, 15967615, -238908, -4540854, 14175540, 11681774, 538482, -2145336,
--8741332, -1875827, -2705830, 13379360, 16175384, 19366008, -2379949, -871878, -952409, -863288,
-12621298, -5647882, -4460861, -7675107, -6071473, 7102802, -1671279, -401579, 1979980, 4462471,
-7331509, 9126269, -1491427, -5708549, -9866077, 4649839, 1613297, 4369056, 11875048, 10394895,
--5574331, 2471217, 5231270, -9597641, -3101503, -2371896, -9245991, -4376035, -620086, 7954817,
--13295071, -20837570, -34230352, 21442624, -3180960, -20610474, 10181220, 22728966, 19699942, -40018356,
--34553548, 8820252, -15973520, 4264903, 19795504, -10531797, -7730405, 32627256, 8960912, -4376035,
--10186589, -9072045, 12333535, -7161321, -1290638, -812823, -13079786, -4967130, -21860846, -29147796,
-10597295, 16129750, -18362058, 13660680, 9383967, -6252936, -12699681, 2113124, 23284628, 13466870,
-4301947, -23033910, -25784300, -12493523, 7133404, 29148332, -21614960, -11380053, -9757092, 17459578,
-46875808, 12505334, -45589468, -10028212, -5251135, 23609972, 657667, 12291660, -5843840, -10714870,
--10001905, -25759066, 24254218, 25691958, 10426570, 27155468, -8338142, 17607756, -7975755, -19379966,
--21468930, -22956064, 4202626, -43091408, 45439680, -2005750, -17088602, -24861956, -20327544, -1258425,
--13269301, -3922379, -23667418, -14567455, -42147588, -11638288, -27728846, 10389526, -9771051, 8351564,
-9594957, 10279467, -6867653, 23480586, -5187247, 17042430, 744103, 4193499, -1202591, 7481296,
--3494493, -9243306, 2037425, 2805151, 8815420, -13860933, -4770098, 3730716, -13673028, 160524,
-5170067, -17110612, -7430294, 4228932, -2280628, -13085692, -20287278, -12146168, 7562364, -3775276,
-9475235, 2359548, 474594, 13939853, 1072131, 12001212, 4721243, 7512972, 27880780, 16729971,
--7697655, 4320200, -9594957, 470836, -4495220, 35093104, 26348550, 10092099, 5232344, 16529719,
-14982993, -23772108, -34270616, 11697343, 26826366, 38359428, 244276, -8560407, -23914914, -14054744,
-16135655, -447213, -20411296, -41206988, -41181220, 8695698, -12362526, 23124104, -47449724, -15676631,
-9261560, 6840809, 9066676, -15022185, 6925635, -1272384, -8887361, -1767379, -22248468, 20557860,
-25393458, 18847928, -29963302, -16036871, -678605, 10173167, 15130096, 16151225, 12999255, -3395172,
--2087354, -4067871, 21517250, 59540056, 37665788, -31010200, -30431990, -19396610, -39217884, 46275052,
-24761560, -14352170, -40678172, -39060580, 44493712, 27307938, 6037651, 34160024, -35403952, -3940633,
-2299418, -9161165, 3565360, -13244605, -35804996, 8900246, -27338004, 36685464, 34827352, -13277355,
--6046777, 370978, 4109210, 39037496, 40109624, -63418952, -35214972, -20404852, 8138426, 17770428,
-17388176, -24598888, -26175142, -31156230, -3681861, 32219234, 894427, 6375879, -7181186, -34462816,
-8118025, -14479945, -17818746, 7814156, 60477436, 20329690, -11082626, -15495705, -14236206, -11976516,
-16041166, 18769544, 21984864, -3970161, 14267881, -21384642, 5383205, 7721815, 9944997, -7736310,
-4385699, 17765058, -4385699, -5110474, -2741800, 17532056, 11678016, 27328876, 7149510, -9809168,
--7109782, 10080825, 34120292, 27504970, 6009196, -20379082, -24721294, -8115341, -5741298, 5845988,
-2683281, -10107669, -12418898, 23341536, -38104948, 33253784, 49027052, 53202832, -59936804, 11034308,
--1861868, -5133023, 25401510, -10813117, -17797270, 17588428, 8965207, 36461588, -3714073, -28852516,
-873489, -13163001, 21538188, -33155536, -11742441, -15579994, -22094922, 30280056, -22143778, -3144990,
-20852604, 12106976, -7350300, -11582990, -31032750, 4011500, 40881648, 24897388, -1756642, 12156905,
--9220758, 33390686, -22506702, 15422691, -12422119, 20740398, 34473020, -7662759, -22389664, 11050414,
--30534534, 50571092, 5932961, -26847304, -9189083, -41884520, 5342403, 59974924, -10921565, -35302484,
--24649892, 36764384, 10985453, -19320374, -978716, 9465034, 20638392, 50527604, -41229540, 18353468,
-41436232, -6295349, -48959944, -47436304, -27755690, 83027624, -60772176, 20567524, -64005212, -30798674,
-133728640, 12826920, -58290224, -56055764, -64561948, 81420768, 10511932, -15443092, -64689188, -15585363,
-20245402, 65876744, -23607288, 7126962, -28483686, 9749039, 40065604, 24366960, -35791036, 16853452,
-6603512, 15461882, 13814762, -36435280, 1279900, -8696235, -13726715, 7145215, -13307956, -26882738,
-10330470, -7979513, 34929360, 5116380, -32044214, -36728412, -11617887, 936303, 28182502, 21070572,
-5007932, -17192754, 7307350, -799401, -13540421, 881542, 17980880, 15646029, 3974455, -27116276,
-6837588, 10430865, 17226576, 15097347, 11129871, -5366562, -17428978, -6731288, -4053912, -5556614,
-8462696, -14344117, -3867618, -5180268, -6699612, 21807696, -56304872, 9904731, -50585588, 22379464,
-23964306, 47298328, 20949776, 10868952, 12394739, -14703821, -36109400, -25110526, -23703924, 10161893,
-5915781, -6132140, 21636972, 33363306, -14892262, -20917028, 23177254, 4140349, -30816928, -7071664,
-13991393, -25420838, -4473209, 5642514, 12974559, 6925098, 18340584, 31426276, 5566278, -20007032,
--2294586, 6070400, -15889232, -7092065, 14701136, -11135776, -20124070, 28033252, -6742562, -6921340,
--11132555, -10992969, 18175764, 4645007, 4166118, 24195698, -11540577, -18660560, -1068910, 1816771,
--7907035, 6200859, -1300838, -6634651, -1188632, -23536958, 5267778, 4630512, -3992709, 12709882,
-8585103, 4453881, 5689758, -24310588, 28819768, -10770704, -10408853, 8842264, -26331908, 8594766,
--19716584, 2313914, -15595563, 5087926, 6896644, 10682657, 965831, 9477382, 14283451, -5492190,
--3207804, 7931731, -470836, -5003100, 4361540, 1024887, -3275986, -5034239, -4574677, -3016678,
-10314901, -9833864, 10005663, 703301, 2720862, 5015985, 2988760, 7298223, -394063, -181999,
--4440460, -966368, -6124624, 12402792, 919660, -5538897, -9051644, -2946348, 4810364, -8841190,
-11753178, -5687611, -14908368, 864362, 6334003, -848793, -430034, 1547262, -7047505, -4254702,
--26296474, 42213088, -2301029, 23848342, -21853868, 2581275, -4047470, 7456063, 6730214, 12729209,
--6668474, 9337259, -5986648, 5093295, -1056025, 4005057, 10096931, -1380295, 15720117, -6478422,
-11849815, 510564, -619549, -4595078, 7547332, -6219113, 6806987, -4193499, 371515, -3499325,
-3675955, -2879239, 8891656, -2930242, -6422050, 14314052, -10095858, 7427072, 5963025, 2100776,
-6883759, -8967892, -6255620, 6505265, 6084358, -4013647, -942208, 6944962, -744640, -9967008,
-4221953, -5123896, 4954782, 6739878, 3121904, 2229088, 2110977, -10719165, 5069672, 2866354,
--3312494, 3758633, -5102958, 2298881, -2596308, -602906, -1449552, 3579318, 7020661, -10007274,
-8710194, -1866163, -3598109, 4952634, -6995965, 3142306, 4734665, -1316944, -2611877, 3266323,
--1466195, 1868848, -1043677, -3641059, -661425, 3662533, -1122060, 1341104, -898185, -2703682,
-1552094, 1405528, 2547453, -3866008, 2884608, -380641, -1669669, 3425237, -4087198, 6073621,
-3031710, -2446521, 6199249, -609885, -2621004, 126702, -2618856, 3655017, -4262218, 4210679,
-1627793, 2208687, 969052, -2618320, 1970316, 851477, 370441, 270583, 51540, -1138703,
-1015760, -2731599, 3048890, 1146219, -3105261, 10505490, -35705136, -111235896, -16381005, 53992572,
-27906550, 131262256, 24379844, 28213104, 17726940, -35378184, -49851148, -35498980, -63896764, -54886996,
--31175556, -12775917, 36496484, 99694248, 79027400, 68106904, 38662220, -30687004, -49984292, -36739688,
--68867120, -65174520, -20052128, -9148280, -15282031, 25267830, 39439076, 26139170, 48110612, 37243808,
-11314018, 34258808, 6896644, -5091684, 3068217, -20649666, -54427972, -46187540, -39347268, -55077048,
--23168128, 16093779, 10959146, 35275640, 39829916, 34910568, 35717484, 36592048, 23077396, 22679038,
-2370822, -20318954, -38086696, -25915296, -35862440, -47240884, -23390928, -21665962, -17772574, 6702834,
-17804250, 17169132, 33282776, 41767484, 20075750, 29451128, 24999930, -6954089, 2790655, 11319386,
--13993540, -12533788, -22375706, -39969504, -40281960, -31855772, -33148020, -6450504, 13770202, 9309878,
-26182120, 39493836, 30984430, 28775208, 29407642, 19753628, 6371047, 1910724, -9266929, -17143898,
--18609556, -27480812, -34964256, -37014028, -32044214, -28596430, -16495359, 3760244, 17976586, 41459320,
-54621784, 48119204, 39703216, 33872796, 19422378, 4161823, -17011292, -34704408, -47583404, -49632104,
--54958940, -40343700, -17002164, -4183298, 11357504, 32729798, 41998336, 45558328, 46680924, 39243116,
-16462610, -1105954, -12227772, -26508538, -34762928, -32407138, -29035052, -20714090, -8677981, 1166621,
-11362336, 15033459, 11312407, 12700218, 9842454, 6940667, 5160940, 5612449, 1630477, 1927904,
--704912, -2715493, -3616363, -2928631, -4643397, -5155572, -5890011, -4970351, -4926865, -3838090,
--2816962, 416612, 1785096, 3362423, 4625143, 6303938, 5869073, 5486821, 4158602, 3415036,
-1660005, -222801, -2260764, -3211025, -4683125, -5371394, -5515812, -4553202, -4558571, -2728378,
--954020, 1069447, 2522220, 4196720, 4169876, 4653060, 4553202, 4736275, 4203699, 2286533,
--846645, -2369211, -4050154, -4757213, -4413079, -3476239, -3455301, -2323577, -1741609, -461709,
-772557, 2214056, 3180960, 4277251, 4177393, 3694209, 2515240, 1178432, -209917, -959925,
--2129767, -2925410, -3491809, -3375844, -2894808, -1573032, -515396, 761820, 1632088, 2141578,
-2193118, 1863479, 1089311, 905701, 479426, 188442, -266288, -522375, -768262, -783832,
--811749, -644245, -504659, -276489, -158377, -15569, 23622, 133144, 138513, 161061,
-100395, 93416, 76236, 71404, 74088, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+3595961, 3853123, -1881733, 3867081, -2391223, -550293, 5157719, -2161979, 2434173, 1473174,
+-5794985, -2631204, 4287988, -1717450, -861141, 2688113, 1765232, 1906429, 483721, 6626061,
+1101122, -1742146, 1456531, -2331630, 4088809, -1217623, -2304787, -1015223, -5427765, -1854889,
+-4008278, 1274532, -105227, 1430761, -1628866, 2233383, 1030255, -274341, 653909, 336618,
+483721, 703301, -2889439, 7094212, 1012002, -2619930, 5236102, -1293859, -4591857, -5017059,
+4830228, -994285, -428423, 3197066, 323196, -863288, 2480344, -295279, 1420560, 396211,
+1815697, -991064, 1980517, -934692, 2360622, 3462281, 1857037, -2085207, -2156611, -1064615,
+898722, -2225867, 1514513, -1104344, 1889786, 2490007, -3156801, -1781875, 2680597, 787590,
+-898722, 4172561, 2391760, 1981054, -248034, 1085016, -123480, 540092, -523986, 619012,
+208843, 284542, -992137, 1535988, 470299, 93416, -308701, 614180, 976031, -549756,
+1053878, -78383, 4519916, 853088, 993211, 3787624, 1074, 2722473, 1269163, -354872,
+246961, -3033858, 1351841, 200253, 4646081, 1622424, 1491964, 172336, 1340030, 5112085,
+-4908611, 2714419, 679142, -3244848, -1484985, -2024003, -698469, -1879585, 1255741, 5912560,
+3694209, 4408247, 3479461, 6029597, 4367445, -5529771, -10024454, -1292785, 419296, -2461553,
+5208722, -250719, 7825431, -3703336, -3736622, 3368328, 137439, 256624, 3068754, -5776194,
+1428614, -4142496, 5401458, 3187403, -68183, 8256001, 320512, -813896, -1073742, -1475321,
+-2101850, 3899294, 2046552, -2036351, -708670, -5783174, -2582349, -780073, 5994701, 4107599,
+692027, 3024194, 66572, 3222299, -41339, 1323924, -3507378, -2248952, 796180, 436476,
+-227096, -1767379, 1578401, 1896228, -530965, -1814087, -373662, 1912871, -347892, 1014149,
+-965831, -544387, -770947, 604517, -680752, 102005, -89657, 965831, -852014, 933082,
+1411971, -694711, 300111, 114354, -75699, 1746978, -608275, 441308, -700080, 693637,
+467615, 296890, -251256, 1537061, -122407, 76773, 607201, 1730335, 3673271, 8293045,
+2466922, 408559, 304943, 2369211, 2216740, 537408, 1352378, 1912334, -76773, -129923,
+2409477, 9375914, 3173444, 7324530, -4074313, -3323768, -1313723, -4330401, -5066988, -2001992,
+3842922, -6273337, -828392, -700080, -9879499, 2041720, -9980430, -3292629, -1279363, 2429341,
+91268, 2138357, -1899986, -54224, -6713571, 2536178, -2184528, -3738769, 777389, 1950989,
+-251792, 543313, 2963528, 5184026, -8584566, 2412698, 654446, -2510945, -2687576, -513785,
+1264331, -1112933, -5134097, -1181116, 1488206, 2756832, -284542, 6500970, 644782, 329639,
+2716030, -4095251, 6192806, 1990717, 3712462, 1661079, 3120294, -600222, -500901, 1845225,
+1143535, -817654, -1764695, -1464047, -2969433, -52076, -4012573, 306016, 2472828, -181999,
+-1658394, -3180960, 2939905, -1680406, 1245541, 462783, -416612, -3027415, 345745, -264141,
+842350, -912144, -792958, 281320, -891206, -1657857, -807454, -682900, -69256, -1087164,
+-91805, -612033, 1536525, -252329, -676457, -246424, 868120, -295279, -1196685, -1378685,
+1590212, 35970, 237297, -869194, 4882841, 5339718, -209380, 5895380, 335007, -807991,
+690416, 462246, -1136556, -90194, -4176856, -2393908, 3659312, 4318053, -5127654, -1243930,
+2079301, -3422552, -9776956, 2396592, 3565897, 4207458, -2274185, -2608119, -3509525, 5287642,
+6021008, 1014149, 2354179, -4780836, -3888019, 4477504, 1665374, -3588445, 6216965, -6291054,
+1005559, 577673, 5827197, 2134599, -1334661, 936840, -2069637, 3199214, -7686918, -2285460,
+-11058467, -4829154, 5542656, -483721, 8519605, -1183264, -7182259, 4507568, 957778, -2936684,
+-376883, 332323, -2930242, 1883880, 5087926, 5760088, 121333, 2746095, -302258, 6556805,
+-3382287, 2828236, -654446, -127775, 177167, 2261837, -709207, 8208756, 789737, 733366,
+-1305670, 4832375, 1624571, -1644436, -3492345, 64961, 3279208, 1135482, 941135, -2156074,
+-141197, 656593, -359167, -578747, -619012, -1154273, 868120, 69256, 365072, 694174,
+1709397, -685584, -1821066, 1975685, -557272, 193810, 13959, -237834, -257161, 783295,
+695248, 957241, -369367, 893353, -46171, 517007, 867047, -205622, 90194, 759136,
+1129576, 629750, 704912, 231928, 68183, 5929739, -8257612, -1213865, -5624797, -5835787,
+1974611, 1032403, 11812234, 538482, 4293894, -10012106, -2460480, 2113661, -5244692, 3331284,
+909996, 763430, 2818036, 3282429, 7721278, 3400004, -1319092, 2394981, -3973919, 1060320,
+3066070, -289373, 570157, 3388729, 4392141, 10726144, 2029909, -1678795, -7471633, -383326,
+5529234, -8817568, 886911, -713501, 2669322, -4454418, -5246840, 9283035, -6054830, 1861332,
+-454193, -5924908, 13437879, 3423089, 7009924, 3753265, 7672959, -1487669, -2990908, 4877472,
+-4627291, 3736085, -3702262, 2006287, 5268315, 2891587, -2467459, -465467, 2656974, -4782983,
+-3570192, 219580, -630823, 7942469, -4466766, -7538742, -1190780, 4099546, 6667937, -4232691,
+-7148436, -1611687, 9777493, 1245541, -77309, -3573950, 412317, -260919, 2972117, 3070902,
+-267362, 1440962, 1606318, -4854924, -1174674, 1600949, -303332, 2752000, 1050120, 229781,
+-2101850, -265214, -345208, 1025423, -393526, 2876018, -636729, -353798, -1520418, 273804,
+-1904281, 33823, -270046, 681289, 1637993, 10201, 1360431, -140123, -1791001, -391916,
+98784, 936840, -3098819, 3641596, -12882754, 7384660, 2209761, -2842195, 3990025, -10522133,
+-8767639, 1195612, -4299799, 10058277, 8948027, 9500468, -6250251, 3723200, 199179, 9469329,
+726386, 6708202, 2728378, -2771865, -8419210, -7641821, 2514703, -10198937, -91805, -2375654,
+-4915053, -6798933, -3956739, 102542, 8305393, 71941, 3277597, -11678553, -6481643, -1206349,
+-7282654, 550293, 7420093, -7918309, 3351685, -61203, -2653753, -704375, -1639067, 8132521,
+4413616, 4069482, -1876364, -2434173, 11220065, -3342022, -2974802, -9165460, 6782290, -13025562,
+1854352, -4265440, 2106145, 4664335, -3077344, -6941204, -4240744, 499827, 9530532, -4733054,
+-979789, -6120329, -4880694, 3082713, 3354370, 7497939, -8670465, -52076, -4561256, -3033858,
+1899449, -3436511, -6796786, -3903052, -541166, 6299644, 6466074, 2229088, 407485, 945430,
+2984466, 259846, 516470, 1336809, -1749125, 194884, 2712809, -784368, 374736, 3242164,
+-734439, -115964, 580357, 2360085, 46171, 370978, 919123, 404264, 2039573, -2332704,
+-2523293, -172336, -881542, 26844, 1502702, -630823, 2723546, 1773285, -11988864, 3309272,
+1187022, 2097018, -16535624, 14922327, 379031, -249108, -219580, -5315022, 1818382, 269509,
+5388574, -4575214, 6032819, 1780801, -3640522, -6315750, -7926362, 4092567, 782221, -612570,
+621160, -4534412, 5054640, 3801046, 9266392, 5544266, 3707094, 5152350, -1128503, -4997732,
+-3732327, 382252, -2602750, 4053912, -4419522, -6717866, -7380365, 511638, -10122164, 4727149,
+5400922, -6019397, 6283537, -7285339, 3762928, -10783052, 1529008, -1924145, 860067, -2816425,
+-97711, -10027138, -1626182, -3406983, -6342056, -1650341, -4940823, 1659468, -4446902, -2531346,
+-6411850, 2928631, -6128919, -388158, 9987946, -1625108, 357556, 3289408, -2146410, -10014790,
+-11440719, -1851668, -7981660, 463856, -2134599, 7566122, 605590, 2888366, -7518341, 735513,
+-1651952, -1311576, 5532455, 1423245, -597000, -2916820, 1543504, 2192044, 824097, 2953864,
+-68183, 1678259, -813359, -231928, 478889, 571231, 1080184, -209917, 3230889, -836982,
+-2668249, 1183264, 9127, 887985, 1096290, 746251, -351114, -1327682, 852014, -2384244,
+991064, 4900021, 3397856, -10203232, -221191, 1941862, -9490804, -10819559, 6082211, -10619844,
+2190970, 7256884, -5090073, -12221866, -5169530, 398895, 8250096, -3194919, 14467060, -881005,
+-1014149, -8176544, -5767604, -871342, 3017752, 914828, -2843268, -2384244, -551366, -2986076,
+-6030134, 5167920, -4976257, -3020973, 5504001, 1695975, -8559870, -9135395, -8377334, 7444789,
+-7783555, -8434242, 14039711, -8643085, 6260452, -1124208, 3872450, -12466679, 5859946, 813896,
+-1932735, -526134, -2344515, 4150012, 3081639, 11923903, -2879776, -2160369, 5719823, 11523934,
+3247532, 2389613, -5315559, -3495030, -9329206, -1923072, -140123, -21475, 6932614, -2074469,
+3753265, 12053289, -1743757, -365609, -1298691, -163209, -12079596, -13846975, 807454, 9255118,
+212601, -18406620, 4928475, -6400575, 3202972, -11471321, -7082938, -1736241, 432718, -4166118,
+1956358, 4323422, -423054, -515396, -308701, -1921998, 1997697, -2200634, 1988570, 331249,
+711891, -1917166, -1255741, -2697776, 1373316, 241592, -763430, -2589865, -496069, -752156,
+-1602023, -1909650, 1273995, -2177549, -766115, 1918240, 649614, -1042066, -81068, 82141,
+-2738579, 322659, -1707250, -2245194, -162672, -576599, 5097590, -863825, 6038724, -930397,
+-2567854, -3707094, 5122286, 3160022, -2865817, 2324114, 5212480, -2744484, -17769354, -7734163,
+-3494493, -1983738, 7922604, -13931263, -10229538, 8537321, 5291937, 21496312, 6054294, 4949950,
+5905043, 2719251, -3861713, 422517, -4067334, 6842957, 299037, 6907918, 201327, -205085,
+-9447854, 4887136, -6412386, 4963372, -992674, 5206037, 2056753, 6991133, -10931766, 1269163,
+-7586523, 9104257, 547608, -9154723, 12078522, 8930311, 5732708, -5487895, -18417894, 5293011,
+-2007360, -2291365, 9012989, -878321, 4167729, 8713415, -1933272, -11064373, -98247, 4955856,
+3221226, -2973728, -1236951, -8109972, 3008088, 1106491, 1709934, -1219234, 1143535, 6975027,
+-4350802, 3182571, -1152662, -265751, 12562779, -3377455, 5767604, 4145717, -3969087, -4420058,
+1560147, 948114, -2123325, 1059246, -2210835, 2025614, -1976222, 4785668, 425202, 4575751,
+868120, -115964, 5748814, 2044941, -1717987, 1619203, -1362578, -1794760, 822486, 2294586,
+-2192044, 1464047, -1138703, -2235531, -116501, 2289755, -1068373, -2488934, 751082, -1162862,
+-3871913, 1670742, -5906, -1968169, -1180579, -645856, -2201171, -179852, 2836289, 4100620,
+-3893388, 530965, 4539244, -5114769, -20094542, 4049617, 4835597, 20276004, -4303557, -3308199,
+9574019, 12583180, -20623360, -11783243, 11207717, -5883032, 339302, 4572530, -13148506, -28760712,
+-11312407, 16285979, 12945031, 10945187, -3371013, 6119792, -3386045, 5632850, -6017786, 1959042,
+-14522358, 3513283, -5144834, 7391102, 7191386, 215822, -6869800, 6726456, 4235912, 11640972,
+-1235340, -7285875, -3635153, -18435610, -9431748, 4474819, -1255741, -12361453, 8341900, 11429445,
+-16274168, 15678241, -1523103, -1767379, 9860708, 1994476, 9322763, -1267552, 3320547, -3595961,
+-1920387, 4690105, 18756122, -6832219, 11934640, -1046898, 1097901, 4455492, 10390600, -9667435,
+1098438, 15211700, 4531191, -7038915, 4045859, 5979668, 1387811, 11943230, 8643622, 15024869,
+-1384053, 4274566, -157840, 475668, -8402567, -5869610, -6684580, -3281355, -33823, -1453310,
+-2716567, -2440615, 4482872, 6465000, 2969433, -3413425, 5229660, -1584306, -856846, -3204046,
+-2544231, 3253975, 1083406, -1258962, 197569, -3550864, -2975339, -3495567, 67646, -1979980,
+3049964, 1817308, -1303523, 1292248, 3575024, -2252174, 1643362, 2026151, -1912871, -1793149,
+-2035278, -399432, -581431, 2157684, -752156, 304406, -934155, -13071733, -3333432, 13481902,
+8565775, 10162966, -6597607, -3332358, -1059783, -1428077, 14446659, 1860258, -14860587, -6632503,
+-4543002, 9525701, 1862942, 2043331, 8099772, 17718350, -26203596, 17369384, -3449933, -3112778,
+-6772090, 5158793, 5349382, 10201084, 1591285, 9720585, -1006633, -2614561, 3023657, -1644436,
+4976794, 8934606, 1063004, -692027, 11774116, -8771934, -1624571, 2854006, -1023276, 10356777,
+-12247099, 1096290, -10479720, 1683627, -11110544, -1591285, 345208, 6071473, 15053324, -8804683,
+-4836133, -9127879, -528281, -13331042, -8644159, -8775155, 5907728, 10842645, 140660, 21508122,
+-13653164, 19216220, -13566191, -3204583, 5942624, 4344897, 19082002, 10963441, -14284524, 7431904,
+-5987722, -19788524, -493921, -12559021, 15785615, 23941222, 15262166, -3017752, -8492224, -3170223,
+13418552, -2037425, 6995428, 769873, 3102577, 4694936, 1503775, 1842541, 1586454, -5898064,
+4068945, 25233, 1719061, -2306398, -1926293, -5603322, -3106335, -1962263, 3417183, -1751810,
+2291902, 2837363, -1090922, -761283, 79994, 3237332, 2091649, 1167157, 6135898, -145492,
+6410776, -5751498, -2512019, 4068945, 3976066, -2440078, 1362578, -2056753, -4159676, 435939,
+-1474784, -13663902, -8779987, -344671, 16441135, -3273839, 7224672, 15262703, -13073344, 5506148,
+-20855288, 12444131, -12837120, -6340446, 20004348, 6707665, 21573620, -9386114, 38655, -9943386,
+6160594, 27683748, 7034620, 9298604, -14161044, -2826625, 583042, 10570451, 9344775, 17666274,
+-14589467, -5168457, -15867220, -13503914, 881542, 953483, 9219147, -9262097, 6421513, -21532282,
+13302051, 10042707, 4720706, -3769908, -2647847, 1246077, 6248641, 1960116, 1676111, -255551,
+14432164, 12320651, 5270462, 970126, -11133629, -10995116, 29908542, 964757, 3629247, 16590385,
+7289633, -4886599, -3656091, 10500658, 21501680, -15816754, -6648073, -17805324, -16532403, 21007222,
+9343164, 73551, -4276714, 6869264, 15963857, 10124849, 16474958, 4495220, -7534983, 11887396,
+-8717710, -22146998, 6386080, 649077, 246961, -85362, 9096204, 15791521, -3372086, 8294656,
+9252970, 8393440, 882616, 1757179, 8092792, -30602, -2675765, -1934346, -3583077, 7894687,
+-4801237, -1472100, 1881733, 4397510, 516470, -879931, 8433705, 1658394, -1963874, 6323803,
+8058433, 3644817, -3571265, -168041, -1685238, 2391223, -73551, -104690, -380105, -2024540,
+2703682, 969589, 569083, 2653753, 3499862, -776852, -4135517, -1670205, -668941, 4711043,
+1544578, -3517041, 1048509, 1822677, 5025649, 2179159, -437013, 4702989, 76236, 2425046,
+-1969779, -64961, -185220, 813359, -685047, 6516539, -14008036, -10451266, -4101157, -13019656,
+14673756, -1640141, -3744138, -12393128, -2069101, -11535745, -28617368, 4987531, -3531000, -9008157,
+6460168, -15155329, -930934, -8272644, -22950158, -5233418, -9965398, -10844256, 18315888, -4883915,
+-6637335, -3310883, -443992, -4628364, -6499896, -1016297, 4810364, 15538118, 11662984, -420370,
+-934155, -26011932, 1557463, 3578782, 10637560, -5988258, -5448703, 39522288, -6827388, -19288162,
+-18808198, 16405701, -11019275, 4752918, -22289270, 5559299, -6292664, -11873437, -10345502, -25267292,
+4003447, 7292855, 17923972, 5323612, -9808632, 14208289, 1606318, 13368623, 14747844, 42739756,
+11376295, 3002719, -16688632, -18570902, -5089000, 2025077, -2464238, -16801912, 7472170, 19580220,
+4417374, 13940927, 21428666, 19338628, -8295730, -15397995, -10667088, 1408749, 3308199, -1843078,
+-16510391, 3212099, -13453985, 4128537, -6045704, 923418, -7494181, 4886599, -1360968, 3128347,
+255551, -3086471, -7669738, -1672353, -340376, 4460324, 5945309, 4877472, 6871948, 463856,
+5850819, 10579041, 74625, 2054605, 5735929, 2105071, -5518496, -2983392, -9272298, -2622078,
+5251135, 3144990, 462783, -1138166, 3239479, 2001992, -2143189, -4180077, -8163659, 1103270,
+1009317, -1068373, -2845953, -537408, -3060164, 1596117, -5761162, -17280800, -7495255, -2703682,
+5287105, -6337761, 10224707, -5359046, -7093139, 19887310, 10326175, 22620520, 259309, -6611566,
+-8969502, 23985782, -20657182, -7727183, 27999428, -16940962, 5575405, 5805185, 7245073, 1618666,
+15723338, -4942434, 14148159, -5405217, 3074123, 3359201, -7317014, 10502269, -15982647, -11138461,
+-10380936, -4789426, -14209899, -26171384, -4786741, -7858180, 4131759, -6767258, -34764540, 9626632,
+21794274, -1290638, -4669703, 34121904, -42335492, -9186398, 23572928, -5814849, 18287434, -13483513,
+-8376260, 6326487, -40404904, 13032541, -13776644, 20163260, 14810658, -21497386, 42349988, 6225555,
+2222109, -2199560, 16672526, -30687542, 12526809, -1468879, -4893042, 8191040, -19842748, 28026272,
+25438554, -47084652, 6737193, -9392020, -44196824, -7630010, -19746112, 10847477, 2761664, 7633768,
+-17860622, 27698780, -2741263, -7463580, 12779138, -553514, 9069897, -1959042, 14334990, 325881,
+7132330, 2210298, -660888, -1547262, 7999914, -5830418, -6556268, 126165, -7697119, 11462731,
+-2539936, -5968931, 584116, 5265630, 2503429, 5431523, 2078227, 13303661, 3119220, -7259569,
+13774497, -7508140, 7819525, 11876121, -3358128, 2658048, 8303783, -5761162, 435402, -7509214,
+8118025, 1165010, 25794500, -11758010, -33597380, -33707976, 2518462, 4023311, -14899778, 8623221,
+-18816252, 5856725, -8607114, 17134772, 21986474, 585726, 21267604, 19339700, -10965588, -409096,
+-13988172, -3610994, -3390340, 7385733, -1497870, -2269890, -2459406, -22560926, -34053720, -13768591,
+17564806, 13553843, -14688788, -16874390, 9641665, 9774809, -22193706, 10997801, -14810658, -2864743,
+16935592, 23570780, 37581, -14173929, 8943733, 1681480, 14642080, 2435783, 12197707, 12599287,
+-3718368, -48724256, 5383742, 1153736, 19543174, -7280507, 19934016, 19759534, -13418552, -65978212,
+-8951786, 2579665, -8031052, 39494372, 41441064, 28875066, 41178000, -10798622, 19301584, -16407312,
+27484032, 19230716, -32639604, 40980968, -42603928, -36303212, -34227668, 10732586, 25551834, 21257404,
+7056095, -26759794, 24490440, 3317325, -8945880, -11521787, 1341104, 23117662, -18083422, -7301445,
+35374424, 6451041, 16115791, 3003256, 1611687, 8633421, -13521631, 7115150, -5595269, 164283,
+3519189, -3533148, -7067369, -4689031, -6203007, -13587129, 2898566, 12389907, -2615098, 12670154,
+9772124, -8296266, -6608344, -6181532, 7768522, 4842039, -16576426, -9645423, 718870, 687195,
+-2593087, 2063732, 10637023, -384936, 8424041, 766115, -6505265, 4085588, 14106820, -26162256,
+-49355616, 10287520, 18090402, -2727304, 24896314, 9489730, -31164820, -7918846, 6529961, 7573638,
+8476655, -6358699, 14327474, 1151051, -9356586, -4330401, 5049271, 20422032, 26665304, 20138564,
+31994822, -30923764, -8646843, -8083129, -31637802, -7646653, 5343476, 1526324, 3425773, -12657269,
+-14315126, 15959562, 35963372, -17148730, 18521510, -12265890, 4751308, -11320460, -2014877, -28193240,
+-10325101, -1699196, -39023000, -22859964, -38194072, -32266478, 21225728, 50140520, 39994736, 1073205,
+-2619930, 29528, -9134322, -17384954, -61022896, -20473036, -8842264, 4860829, 2502892, -21609592,
+-15130096, 7787313, 26702886, 15877420, 8533026, 17415018, 29959008, 11655467, -30211336, 22908818,
+-17942226, -9460739, 17721036, 40022116, 8522289, 51348480, -12399034, -53645752, -6317897, -17404818,
+-32945620, 49359376, 13907104, 15967615, -238908, -4540854, 14175540, 11681774, 538482, -2145336,
+-8741332, -1875827, -2705830, 13379360, 16175384, 19366008, -2379949, -871878, -952409, -863288,
+12621298, -5647882, -4460861, -7675107, -6071473, 7102802, -1671279, -401579, 1979980, 4462471,
+7331509, 9126269, -1491427, -5708549, -9866077, 4649839, 1613297, 4369056, 11875048, 10394895,
+-5574331, 2471217, 5231270, -9597641, -3101503, -2371896, -9245991, -4376035, -620086, 7954817,
+-13295071, -20837570, -34230352, 21442624, -3180960, -20610474, 10181220, 22728966, 19699942, -40018356,
+-34553548, 8820252, -15973520, 4264903, 19795504, -10531797, -7730405, 32627256, 8960912, -4376035,
+-10186589, -9072045, 12333535, -7161321, -1290638, -812823, -13079786, -4967130, -21860846, -29147796,
+10597295, 16129750, -18362058, 13660680, 9383967, -6252936, -12699681, 2113124, 23284628, 13466870,
+4301947, -23033910, -25784300, -12493523, 7133404, 29148332, -21614960, -11380053, -9757092, 17459578,
+46875808, 12505334, -45589468, -10028212, -5251135, 23609972, 657667, 12291660, -5843840, -10714870,
+-10001905, -25759066, 24254218, 25691958, 10426570, 27155468, -8338142, 17607756, -7975755, -19379966,
+-21468930, -22956064, 4202626, -43091408, 45439680, -2005750, -17088602, -24861956, -20327544, -1258425,
+-13269301, -3922379, -23667418, -14567455, -42147588, -11638288, -27728846, 10389526, -9771051, 8351564,
+9594957, 10279467, -6867653, 23480586, -5187247, 17042430, 744103, 4193499, -1202591, 7481296,
+-3494493, -9243306, 2037425, 2805151, 8815420, -13860933, -4770098, 3730716, -13673028, 160524,
+5170067, -17110612, -7430294, 4228932, -2280628, -13085692, -20287278, -12146168, 7562364, -3775276,
+9475235, 2359548, 474594, 13939853, 1072131, 12001212, 4721243, 7512972, 27880780, 16729971,
+-7697655, 4320200, -9594957, 470836, -4495220, 35093104, 26348550, 10092099, 5232344, 16529719,
+14982993, -23772108, -34270616, 11697343, 26826366, 38359428, 244276, -8560407, -23914914, -14054744,
+16135655, -447213, -20411296, -41206988, -41181220, 8695698, -12362526, 23124104, -47449724, -15676631,
+9261560, 6840809, 9066676, -15022185, 6925635, -1272384, -8887361, -1767379, -22248468, 20557860,
+25393458, 18847928, -29963302, -16036871, -678605, 10173167, 15130096, 16151225, 12999255, -3395172,
+-2087354, -4067871, 21517250, 59540056, 37665788, -31010200, -30431990, -19396610, -39217884, 46275052,
+24761560, -14352170, -40678172, -39060580, 44493712, 27307938, 6037651, 34160024, -35403952, -3940633,
+2299418, -9161165, 3565360, -13244605, -35804996, 8900246, -27338004, 36685464, 34827352, -13277355,
+-6046777, 370978, 4109210, 39037496, 40109624, -63418952, -35214972, -20404852, 8138426, 17770428,
+17388176, -24598888, -26175142, -31156230, -3681861, 32219234, 894427, 6375879, -7181186, -34462816,
+8118025, -14479945, -17818746, 7814156, 60477436, 20329690, -11082626, -15495705, -14236206, -11976516,
+16041166, 18769544, 21984864, -3970161, 14267881, -21384642, 5383205, 7721815, 9944997, -7736310,
+4385699, 17765058, -4385699, -5110474, -2741800, 17532056, 11678016, 27328876, 7149510, -9809168,
+-7109782, 10080825, 34120292, 27504970, 6009196, -20379082, -24721294, -8115341, -5741298, 5845988,
+2683281, -10107669, -12418898, 23341536, -38104948, 33253784, 49027052, 53202832, -59936804, 11034308,
+-1861868, -5133023, 25401510, -10813117, -17797270, 17588428, 8965207, 36461588, -3714073, -28852516,
+873489, -13163001, 21538188, -33155536, -11742441, -15579994, -22094922, 30280056, -22143778, -3144990,
+20852604, 12106976, -7350300, -11582990, -31032750, 4011500, 40881648, 24897388, -1756642, 12156905,
+-9220758, 33390686, -22506702, 15422691, -12422119, 20740398, 34473020, -7662759, -22389664, 11050414,
+-30534534, 50571092, 5932961, -26847304, -9189083, -41884520, 5342403, 59974924, -10921565, -35302484,
+-24649892, 36764384, 10985453, -19320374, -978716, 9465034, 20638392, 50527604, -41229540, 18353468,
+41436232, -6295349, -48959944, -47436304, -27755690, 83027624, -60772176, 20567524, -64005212, -30798674,
+133728640, 12826920, -58290224, -56055764, -64561948, 81420768, 10511932, -15443092, -64689188, -15585363,
+20245402, 65876744, -23607288, 7126962, -28483686, 9749039, 40065604, 24366960, -35791036, 16853452,
+6603512, 15461882, 13814762, -36435280, 1279900, -8696235, -13726715, 7145215, -13307956, -26882738,
+10330470, -7979513, 34929360, 5116380, -32044214, -36728412, -11617887, 936303, 28182502, 21070572,
+5007932, -17192754, 7307350, -799401, -13540421, 881542, 17980880, 15646029, 3974455, -27116276,
+6837588, 10430865, 17226576, 15097347, 11129871, -5366562, -17428978, -6731288, -4053912, -5556614,
+8462696, -14344117, -3867618, -5180268, -6699612, 21807696, -56304872, 9904731, -50585588, 22379464,
+23964306, 47298328, 20949776, 10868952, 12394739, -14703821, -36109400, -25110526, -23703924, 10161893,
+5915781, -6132140, 21636972, 33363306, -14892262, -20917028, 23177254, 4140349, -30816928, -7071664,
+13991393, -25420838, -4473209, 5642514, 12974559, 6925098, 18340584, 31426276, 5566278, -20007032,
+-2294586, 6070400, -15889232, -7092065, 14701136, -11135776, -20124070, 28033252, -6742562, -6921340,
+-11132555, -10992969, 18175764, 4645007, 4166118, 24195698, -11540577, -18660560, -1068910, 1816771,
+-7907035, 6200859, -1300838, -6634651, -1188632, -23536958, 5267778, 4630512, -3992709, 12709882,
+8585103, 4453881, 5689758, -24310588, 28819768, -10770704, -10408853, 8842264, -26331908, 8594766,
+-19716584, 2313914, -15595563, 5087926, 6896644, 10682657, 965831, 9477382, 14283451, -5492190,
+-3207804, 7931731, -470836, -5003100, 4361540, 1024887, -3275986, -5034239, -4574677, -3016678,
+10314901, -9833864, 10005663, 703301, 2720862, 5015985, 2988760, 7298223, -394063, -181999,
+-4440460, -966368, -6124624, 12402792, 919660, -5538897, -9051644, -2946348, 4810364, -8841190,
+11753178, -5687611, -14908368, 864362, 6334003, -848793, -430034, 1547262, -7047505, -4254702,
+-26296474, 42213088, -2301029, 23848342, -21853868, 2581275, -4047470, 7456063, 6730214, 12729209,
+-6668474, 9337259, -5986648, 5093295, -1056025, 4005057, 10096931, -1380295, 15720117, -6478422,
+11849815, 510564, -619549, -4595078, 7547332, -6219113, 6806987, -4193499, 371515, -3499325,
+3675955, -2879239, 8891656, -2930242, -6422050, 14314052, -10095858, 7427072, 5963025, 2100776,
+6883759, -8967892, -6255620, 6505265, 6084358, -4013647, -942208, 6944962, -744640, -9967008,
+4221953, -5123896, 4954782, 6739878, 3121904, 2229088, 2110977, -10719165, 5069672, 2866354,
+-3312494, 3758633, -5102958, 2298881, -2596308, -602906, -1449552, 3579318, 7020661, -10007274,
+8710194, -1866163, -3598109, 4952634, -6995965, 3142306, 4734665, -1316944, -2611877, 3266323,
+-1466195, 1868848, -1043677, -3641059, -661425, 3662533, -1122060, 1341104, -898185, -2703682,
+1552094, 1405528, 2547453, -3866008, 2884608, -380641, -1669669, 3425237, -4087198, 6073621,
+3031710, -2446521, 6199249, -609885, -2621004, 126702, -2618856, 3655017, -4262218, 4210679,
+1627793, 2208687, 969052, -2618320, 1970316, 851477, 370441, 270583, 51540, -1138703,
+1015760, -2731599, 3048890, 1146219, -3105261, 10505490, -35705136, -111235896, -16381005, 53992572,
+27906550, 131262256, 24379844, 28213104, 17726940, -35378184, -49851148, -35498980, -63896764, -54886996,
+-31175556, -12775917, 36496484, 99694248, 79027400, 68106904, 38662220, -30687004, -49984292, -36739688,
+-68867120, -65174520, -20052128, -9148280, -15282031, 25267830, 39439076, 26139170, 48110612, 37243808,
+11314018, 34258808, 6896644, -5091684, 3068217, -20649666, -54427972, -46187540, -39347268, -55077048,
+-23168128, 16093779, 10959146, 35275640, 39829916, 34910568, 35717484, 36592048, 23077396, 22679038,
+2370822, -20318954, -38086696, -25915296, -35862440, -47240884, -23390928, -21665962, -17772574, 6702834,
+17804250, 17169132, 33282776, 41767484, 20075750, 29451128, 24999930, -6954089, 2790655, 11319386,
+-13993540, -12533788, -22375706, -39969504, -40281960, -31855772, -33148020, -6450504, 13770202, 9309878,
+26182120, 39493836, 30984430, 28775208, 29407642, 19753628, 6371047, 1910724, -9266929, -17143898,
+-18609556, -27480812, -34964256, -37014028, -32044214, -28596430, -16495359, 3760244, 17976586, 41459320,
+54621784, 48119204, 39703216, 33872796, 19422378, 4161823, -17011292, -34704408, -47583404, -49632104,
+-54958940, -40343700, -17002164, -4183298, 11357504, 32729798, 41998336, 45558328, 46680924, 39243116,
+16462610, -1105954, -12227772, -26508538, -34762928, -32407138, -29035052, -20714090, -8677981, 1166621,
+11362336, 15033459, 11312407, 12700218, 9842454, 6940667, 5160940, 5612449, 1630477, 1927904,
+-704912, -2715493, -3616363, -2928631, -4643397, -5155572, -5890011, -4970351, -4926865, -3838090,
+-2816962, 416612, 1785096, 3362423, 4625143, 6303938, 5869073, 5486821, 4158602, 3415036,
+1660005, -222801, -2260764, -3211025, -4683125, -5371394, -5515812, -4553202, -4558571, -2728378,
+-954020, 1069447, 2522220, 4196720, 4169876, 4653060, 4553202, 4736275, 4203699, 2286533,
+-846645, -2369211, -4050154, -4757213, -4413079, -3476239, -3455301, -2323577, -1741609, -461709,
+772557, 2214056, 3180960, 4277251, 4177393, 3694209, 2515240, 1178432, -209917, -959925,
+-2129767, -2925410, -3491809, -3375844, -2894808, -1573032, -515396, 761820, 1632088, 2141578,
+2193118, 1863479, 1089311, 905701, 479426, 188442, -266288, -522375, -768262, -783832,
+-811749, -644245, -504659, -276489, -158377, -15569, 23622, 133144, 138513, 161061,
+100395, 93416, 76236, 71404, 74088, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-3562139,
-2681133, 1685775, -3515968, -622233, 4472135, 1325534, 1097364, 2467996, -594316, 673773,
--1175747, -4686883, -1853278, -233002, -1045825, 1347009, -1463510, -453656, -3983045, -3758,
-669478, -2800319, -625455, -3535295, -1275068, -1124208, -4299799, -1963337, 1344862, 1869921,
-4780299, 2845416, 6111202, -661962, -1021129, 901943, -2137820, 5334887, 290984, 2522757,
-4202626, 745714, -1737314, 1734093, -2285460, -2998961, -783295, -1294396, -1692754, -5543192,
--1826435, 30602, 833224, 1659468, 428960, 2825015, -3183645, 2493229, -57982, 624381,
-1721745, -2185065, -4944044, -2108292, 2047626, 3071439, 2283312, 202400, 2327336, 1804423,
-3179887, 1627256, 1347009, -2121177, 120796, -336618, -474594, -1803886, -2288681, -958851,
--566936, -193810, -1777580, 25770, 197032, 686658, 109522, 1254667, -723702, 578210,
--1134945, -1621350, 755914, -224949, -95563, 1149978, 738734, 1009854, 13959, 110059,
--1004486, 577673, 116501, 349503, -200253, 1555852, -392453, 99321, -725850, -522375,
--809601, 671089, -570157, -1389959, -891206, -2522757, 2493766, -3905736, -2381559, 6417755,
--983011, 5679558, -2831457, 597000, 2833605, 1289027, 234613, -3730179, -5312875, -5543729,
-651224, 193810, -1534914, 809601, -4902705, 9912248, 1163399, -5434744, 1508070, -2822867,
--3081102, 2992519, 4229469, -11274, 988916, 2048163, -255014, 72478, 3330747, -1749125,
--754841, 247497, 6025839, -67646, -652298, -2208150, -3485366, 1893007, -824634, -3575024,
--1591285, -4314295, 632434, -3908420, 135828, -2947421, -944356, -2586107, -5442261, -2199023,
--299037, 5231807, 807991, -1448478, 2870112, 4794794, 761283, -6410776, 3020973, 33286,
-1252520, 2173254, -1458141, 4146254, -1998770, -3606699, -3768297, -6702297, 675384, -2255395,
--2353105, -2993055, -3143916, -135291, -3433826, 1150514, -500901, -1926293, -689879, -2182380,
-89121, -49929, -2515240, -1015223, 1078037, -324807, 206158, 621697, 280247, 485331,
-364535, -648003, -2250563, -366146, -820339, 690953, -254477, 316217, -400506, 64425,
-2147, -451508, -1400696, -1136556, -158914, -476741, -518617, -419296, -1042603, -354872,
--4859756, 8383240, -1984812, -7423851, 673236, 2673080, 335544, 2472828, 2030446, -5852967,
-2225867, -1279900, -144418, 352724, -992674, 4661650, -1308891, -2842195, -162672, 3750580,
-2384781, 1465658, 2233383, 8931921, 2421288, -2907156, 4075387, -3573413, 1315871, -2859375,
-8380018, 1413044, -2607045, -1503239, -2614561, -815507, 5587753, -4266513, -3612604, -1003949,
-4641249, 2735357, -4127464, 1315871, 1034013, -2340757, 204548, -8900783, 3085397, -1953136,
--1643899, -5596343, 8754217, 612033, -4447439, -3428995, -4364224, 467078, -884763, 610959,
-45097, -5078799, 6941204, -3754875, -3490198, 2847027, 803159, 2829847, -1861332, -276489,
--4162360, 513249, 988916, -5241471, -3944928, 525060, -3679176, 1483911, -3285113, -813896,
--882616, 2524904, -4262755, -4358318, -858993, -577673, -1013612, -153008, -1879048, -353261,
--1352915, -1023813, -857920, -1260573, -1639067, -11274, -2220498, 747324, -1456531, 139050,
-197569, -401043, -805306, 30065, -552440, 1323924, -128849, -840740, -9664, -1600412,
--295816, -920197, 133681, 392453, -1156957, -1351841, -337155, 7232188, 261456, 1592896,
--5911486, 1866163, 3460133, 2530810, -208306, -2950643, 7779260, 1378148, -1497870, 3743601,
-3076270, -3585224, 4786204, -3156801, 7864622, 1138166, 7024956, -732829, 1279363, -2708514,
--7851737, 882079, 212064, 297427, -1314797, 1651415, 4223564, -1022739, -4005057, -2662880,
--5717675, -1573569, -2787434, -3030636, 586800, 2009508, 3191161, -3690988, 2647311, -2464774,
--3027952, -398895, 2709051, 514322, 717796, -5754183, -5505611, -1039919, -1588601, -4204773,
-9259949, 4282083, -516470, 1785633, 3761855, -9264781, -4626217, 6233608, -3400004, 5847061,
-1394254, -1205812, -6154688, -4585952, 7475391, 3930432, 7073275, -7345468, -435402, -5093295,
--331249, 1818382, -2641405, 869731, 622770, -4574140, 4191888, 462783, 703301, -745177,
--8070781, 885837, -1879585, -2566243, -2467459, -494995, 1503775, -1315871, 719407, -2871723,
--518617, -1318555, 1923072, -358630, -129386, -937377, 158914, -980326, 721018, -1627793,
--679679, 525597, -363462, -111669, -2684, -24159, 854699, 457414, -32212, -1149441,
--1076426, -1246614, 1168768, 468688, 1657321, 796716, -574989, 673773, -12133283, 627602,
--1573569, 3263102, -7349226, 2326799, -2490544, 12228846, -3266860, -6365679, -2340757, -5342940,
-1641751, 4526896, -1468342, 8541079, 858993, -2546916, 2045478, 1023276, 2211908, -3054796,
--552440, 3165391, 5007395, 1968169, -1021129, 2390686, -4505958, -1421634, 6301791, 4496831,
-7402913, 5244155, -142808, -3798362, -7933342, 5440650, -883690, -5795522, 2978560, -1548336,
--8883603, 208306, -7408819, -610422, 6664716, -1158567, -4988068, -2313377, 6364605, -5556077,
--9069360, 9164386, -1748052, -2258616, 2137820, 1141388, 1073205, 2184528, 2199560, 1197222,
--6686191, -2560338, 5140539, -722091, -1992328, 1533303, 8835285, -4512937, -4924180, -2268280,
-3611531, 1815161, -7987029, -3571265, -2754148, -3504693, 2611340, -498753, -612570, -2990908,
--2358474, -6336688, -3639985, 1496259, 201863, 977642, -260919, 3712999, 3864397, 651224,
-1408749, -1969779, 441308, 159988, 1578401, -2420214, -1097901, 272194, 55298, 1091995,
--46708, -1386201, 1391569, 491237, -2654290, -545461, 771484, 450435, 456877, -692564,
-357556, -1320166, -1270237, -1131187, 680215, -595390, -644782, -221191, -10695005, -296890,
-2770254, 10158135, 10498511, -3476239, 5191542, -6869800, 2164127, 4425427, 6717329, -2049236,
-10110890, -1985886, 8564702, -4791573, 7163469, -3708168, -12112882, -2804077, 2930778, -4225174,
-4571993, -2676838, -2968359, 1232119, -13271986, -4336843, -350577, -2364916, -872415, -6448357,
--2282775, -2346663, 2018098, 13380434, 7672422, -7893613, 4195646, 10686416, 2585570, -3844533,
-2598455, -2909304, -3286724, 7674033, 5304822, -5455146, -808528, 5451924, 11454678, -3782256,
-6192269, 17063368, 7286412, -7961796, 3105261, 1925219, -9629854, 1364726, -7973070, 3460133,
--8681203, -2088965, 271120, 4002910, -5695664, -1613297, -2866891, -5159867, 6505802, 5603322,
--395674, -3796751, 935229, 949188, 847719, 1535451, 4810900, 908386, -6597607, -164819,
-7827041, 202937, 1691680, 1551020, 2313377, -2509872, -1235877, -4006668, -1772748, -3688840,
--388695, 2138894, -561030, -2101313, 1073742, -449898, 370441, -1149978, -860067, 1446330,
--198105, 3499325, 774705, -772557, 1771674, -62277, -918586, -1345399, -1885491, 770410,
--1041530, -494458, 828392, -99858, 1556389, 90194, -2253247, 4655208, -2326799, -10760504,
-2470143, -8645769, 1383516, -2870649, 11156178, -5678484, 1563905, 2929168, 1095217, 4045322,
--1654099, 12215424, 945430, -7935489, -1488206, -5853504, -950798, -1910187, -5486821, -6879464,
--1778653, -4433480, -2106145, 7813083, 2892661, -6619619, 2564096, -7904351, -1512902, 5737003,
--10794327, -9522479, 5397164, 5077725, 2618320, -333397, -6564321, 2583423, -3247532, -6193343,
--2877628, 322659, 1935957, 10222559, -4057670, -1171452, 519154, 4758824, 2490544, -3560528,
--4599910, -8222178, -2529199, -1834488, -4539781, -5280663, 3329137, 6822019, -59593, -4388383,
-7545721, 1438814, -3765076, 913217, -1136019, -1001264, -2637110, -1494112, 4887136, -3927748,
--5891085, -3397856, 3037616, -4552129, 7973070, 3565897, -1354525, -3304977, -3757023, 2255395,
-4939750, 10167798, -2977486, 5193689, 140123, -39192, 523986, 1615445, -1911261, 26307,
-1224066, 2123325, -1380295, 1479616, -1191317, 4916664, 1848983, 3691525, 7516, 2501819,
--171799, 2217814, -482647, -226023, 2572686, 966368, 278099, 1361505, 267362, 2558190,
--1954747, 581431, 1722819, 2348810, 2003602, -813359, -2666638, -67109, 1605244, 332860,
-255014, 2105071, 5546414, 10596758, -7931194, -293132, 7211250, -3474629, -5203353, 6629819,
--10501732, -657130, 1922535, -1380295, -3927748, -4632122, -2236067, 1799054, -578747, 5004711,
-2513093, -1694902, -4010963, -2932389, 8247411, 307627, -10117332, 4694400, -6405944, -6279242,
-3823595, 7260642, 7402376, 5614596, -194347, 3789235, 2573759, 3576634, -3326452, -183073,
--3000572, -7288560, 3043521, -1893007, -412854, -1619740, 693637, -1217623, 8020315, 14931991,
-2448668, -2607582, -57445, -10692858, 10349261, -7296076, -4737349, -7021735, -8596377, 14514305,
-782758, -8091719, -2936684, 10010495, 5158793, -7614977, -5690295, 11476689, 918586, 1171452,
-14849849, -7113003, 4073240, -5346161, -14755360, 6914898, 7092602, 1170916, -8521215, -1210107,
--1855963, 1747515, -3701725, 5384815, 3318936, -11675869, 4945655, 5573794, 7117298, 1218697,
--6240588, 10415296, 1764158, -937914, -805843, -3507915, -3682398, -1331977, 655519, 3137474,
--11811, 246424, -339302, -2813741, 1176284, 1253594, 553514, -1296006, -775778, 2097555,
-751082, 2390686, -1569274, 556735, -3656628, 405874, 3448859, -4632659, 640487, -3631395,
-4217658, -1765232, -97711, -2829310, -17180, 2433099, -290984, 3321084, 11274, -952946,
-2408940, 5088463, 6485938, 11972221, 10969346, -375273, 9361955, 4240207, 9545565, 9224516,
--15173583, 5579163, -4867809, -6529961, -4745939, -1379221, -9652939, -1975685, 2439005, -8246337,
--16988206, 3959960, -1136019, -15300821, -11210938, -10002442, -5557688, 608812, -2820720, 3709778,
--1962800, 6168647, 11978127, -6758668, 4117800, -2619393, -5391795, -3909494, 792958, -1105954,
--426812, 8938364, -300648, 9009768, 11659226, 3527779, 5057324, 7738994, -938987, 1619203,
--11380590, 10766946, -9269613, -3219078, -2908767, 1015223, -2515240, -8840653, -7784628, -17142826,
-15659988, -17512730, -16976932, 2950643, 16419660, 5872294, -2048163, -4043712, 7587060, -8184060,
-9473624, -2676838, 1262184, 1040456, -6178848, 6626061, -7311645, -5955509, -643171, 2433099,
--6982006, -1040456, 3847754, -496606, -1869921, 5109938, -3274913, -6264210, -1398549, 3257196,
--4137127, -2389613, -2814814, -578747, 1963874, -1297617, 628139, -989990, -2245731, 716186,
--1425392, 1525787, -1493038, 2182380, -588411, 4021163, -518080, 1591285, 2210835, -1315871,
--2631204, -224412, -609349, -99858, -781147, 1898912, 141197, 2438468, -2087891, 897111,
--4531191, 259846, 241592, -1625108, 1303523, 7084012, 9243306, 9242233, 10062035, 23796266,
-10657961, 13580687, -6788196, 22025130, -12656195, 561030, 4813048, -144955, -8355859, 2712809,
--2348273, -18858664, 7076496, -4780836, 1966021, -1803349, -6289443, -27380, 5540508, -7636989,
--4000762, -1221918, 4368519, -11514270, 7215545, 2710124, -10579041, -856309, 4231617, -9565966,
-3512747, -11464878, 5217312, -1011465, -3759707, -474057, -7530689, 9576166, 11288785, -10849624,
--6247567, 4882304, -3918621, 2994666, 2674154, 702764, 299037, 13073880, -3369939, -8777839,
-8043937, -355945, -6959995, -5810017, -10951630, 2078227, 2898566, 5421860, 5154498, -5048197,
--8527121, 4713727, 2292439, 16354162, 1651415, -2046015, 338229, 1078574, -4908074, -2176475,
--6134287, 6692096, 3797288, 4354023, -1364189, -10478110, -9621800, -3139084, -930934, -3770445,
--6695854, 1850594, -2980707, 4310537, 673773, -709207, 2598992, 2777233, 4345970, 4148402,
-3258270, -33823, -1090922, 1176821, 2887292, 2297808, -1426466, -1264868, -936840, 756451,
--107911, -827318, -48318, -5155035, 530965, 3361886, 2476586, -4015795, -2992519, 5752572,
-2974802, 5705327, 2148021, -4171487, 3854733, -1019518, -3264175, 614717, -4612795, -2472828,
--1260036, 1725503, -1017907, -12868796, -14463839, 24157580, 16847010, 21597244, 1386201, -13846438,
-4889821, 11275900, 8028368, -3525631, -8759586, -2570538, -3216394, -4244502, -7541426, -3018288,
--6333466, 16109349, 2579128, 2668785, 127238, 948651, 1714766, -5941551, 10660646, 6027450,
--631360, 3885872, -1513976, 10979547, 2025614, -959925, -17941152, -1316408, 1131187, 1721745,
--3357591, 2257005, -8497056, 14579266, 11802570, 11400991, 9942849, -7802345, -10818486, 8317741,
-2562485, 4074313, -708670, -12583717, -9109089, 743029, -7100655, 99321, -5963025, -2580202,
-7561827, 2421825, -5391258, 1948305, -13923747, 443992, -23608898, -11981885, -22305376, 19282792,
-17367774, 18551574, 22465364, 10896332, -3710852, -9942849, -3016678, -531502, 3230889, 17813914,
--5870147, -13498008, 10319733, -8582418, 4498978, -1948305, -1938104, 4195646, -4000225, -7289097,
--2061047, -8979703, -1902134, -8071854, -1852742, 1159104, -705985, -951335, -2190433, -2799782,
--5581847, -59056, 2944200, 484258, -2805688, 1010928, 4895726, -631897, 3277597, 1817845,
-1945083, 1399623, -6451041, 5688148, -2485712, -2024003, 3813394, 1338419, 4214974, 457951,
--5363878, -970663, 134755, 966368, -3274376, 184684, -213675, -8565239, -11525545, 10165114,
-13189308, -6476811, 12245489, 1728188, -5199058, 4925254, -17747342, -5505611, 5006858, -5653788,
--10883447, -20512764, 10079215, -8814347, 2373506, 13289166, 3190087, 15495705, 11854110, 6739341,
-2544768, -9149354, -2684355, -4789426, 839129, 8629663, 4498978, 1782411, 7368017, 21066814,
--1099512, -17916456, -7866770, 2895882, 4302484, -1025423, 445066, 1697049, -7642358, 471373,
--16863652, 3793530, -17641578, -6432788, -13661217, 6726456, -6815040, -11209328, 17105780, 4797479,
-1394791, -7698729, -10261751, 2562485, 4067334, 1506997, 5573794, -8746701, 19230716, -23350664,
-6074158, -9733470, -14173392, -7941932, 12239046, 3687230, -13287018, 9385577, -10581189, 25934624,
--2418067, -2848637, -12617003, 1508070, -16831440, -9031779, 22453552, -9041980, -10197863, -6662031,
-6713571, 840203, 9517111, 4740570, 4975183, 6933151, 3769908, -641024, 715649, 3304441,
-1416802, -1839320, 5573794, -1756105, -1943473, -4207458, -3774203, -1701344, 2056753, -3314641,
-243203, 1610613, -1365800, 1403381, 260382, 5493263, 2882460, -15569, -1123134, 537,
--401043, 3278134, -2923799, 2972117, -825707, 1309428, 4609037, -1471026, 241592, -648540,
--2319282, 5632313, -794032, 4390531, 24475408, 25183540, 23757074, 5132486, -6271189, -3880503,
--15176804, 12467216, 442382, 7348689, -4487167, 2416993, -5500780, -4210679, -8744017, 4846871,
--9108015, 15163919, -39289288, -11380590, 358093, -11829414, 8536248, -12161737, 2593624, -4649302,
-12455405, 2285460, 11992086, 946503, -2739652, -108985, 4435628, -13708999, -9836012, -10645076,
--1446867, 13506062, -26407070, 9270150, 23097260, 2913599, -16871706, -584652, -14199699, -13596256,
-9540733, -1709934, -11589432, 6562173, 1035624, -4264366, -6520834, 3849901, 9637907, 5896453,
--13475997, -9804873, 7807714, 11753715, -9470403, -12517682, 6270116, 13158169, -15845745, -471910,
--14141180, -19412178, 23242216, -3782256, 3638374, -4273493, 14425721, -3313567, 3572876, -7648800,
-12553116, 7008313, 11552388, 13367549, -13197361, -14552960, -5908265, -2731062, -8732205, -21934934,
-2473901, 1268089, 35433, -1551557, -3526168, -2892124, 6367289, -488016, -2684892, 5905043,
--6395743, -3359738, 2432025, 11529303, -3440806, -3476776, 599685, -1387274, 3998078, -1327145,
--603980, -1960116, -3189550, -7995619, -11525008, 2100239, -789200, -8750459, -4376035, 2368675,
--3043521, -9924596, -5530308, -622770, -1716913, 841277, 2851858, 1233193, -7516, 8216810,
-2835215, 12907987, -4124779, 23085, -18434000, -8367670, -3927211, -15562814, -22544284, -3870303,
--7266548, 22038550, 6895570, 32567126, 6206765, -8811125, 4645007, 6525129, -25877714, 1932735,
-23463944, 15083388, -14912663, 2532957, 11926587, -20669530, -2988760, -10126459, 9366250, -7827041,
-6309307, 1876901, -3769908, 1592359, 348966, -6338298, 7595113, -13889387, -5198521, -5705864,
--17601312, -3327526, -1969779, 740882, 1697586, -4453344, -5268851, 33293512, 10281078, -12296491,
--22840100, -7969849, 2760053, 24194624, -5352603, -2630131, -12868259, -3078955, -8937290, 19922742,
--15428059, 17824114, 22405770, -21784610, 15083388, 6010270, -9050033, -7946227, 5776194, 10760504,
--48153564, -5975374, 296353, -6213744, 13172665, -6117107, -35900020, -13675176, -10196789, -15957414,
--15610059, 3253438, 3500398, -8859444, -7880191, -14687714, 1927904, -5181341, 1659468, -6145025,
--7305203, -8273718, 2372970, -1342714, 5650030, -7106024, 4041564, -511638, -7328825, -15626702,
--3654480, -529355, 5555004, -1847373, -20975546, 4785131, 10708427, 4549981, -112743, -7069516,
-7965017, -652835, -2089502, -12475806, -1828582, -4032974, 11050414, -1211181, 2094333, 483184,
-2682207, 7199976, -4555350, 830002, 744103, -1932198, 969052, 3350075, -14879914, -12688407,
--4611721, -10173704, -7010997, -2503429, -6332393, -8022462, -7760469, -1890859, -1880122, -3196530,
--5609228, -2151242, -3857954, -677531, -1861332, -6859600, 5530844, 32288490, -934692, -37592240,
--21012590, -23256712, -4326643, -12854837, -504659, -19080930, 31369904, 18647138, -3313567, 24663850,
-771484, 26590142, 6418292, -15315317, -20860120, -13160317, -16820166, -7519951, 4173098, 11477226,
--3686693, 3767760, -13884556, 2397666, -20052666, -1805497, -1101122, 6916508, -7501161, 32217086,
-4208531, -833224, 21422224, -8296266, -15107547, -8891656, 13150653, -1002875, -8556112, 3585761,
--68183, 27395986, 6815040, 75162, -10582799, -16550656, -41731512, 2694555, -33142652, 16802448,
-56989920, -40707164, -8654896, 9206799, -6962142, -7184944, -11353746, 9505299, -11656004, -39384852,
--10413685, -39274256, -8162586, -1176284, -24557550, -3514894, -35362076, 15332496, -3499325, -22491670,
-55253680, 4247723, 22567368, 18831284, 30515206, -18747532, -1188632, -11325829, -4010963, -7684770,
-14535243, 9130564, 13068512, -26889716, -5322538, -14662481, -18785650, -15869367, -9611063, -2192581,
-10574746, 8597451, 6098854, 7580618, -2049236, 2384244, 15106474, -2878702, 14951855, 4271882,
--12790949, -3646964, 4719632, -5701569, -2080375, 17337710, 397821, -5439039, 19683298, -9194988,
--1240709, -16243029, -3788698, -11384885, 8592619, -8747238, -3687766, -3433826, 3381750, -3988414,
-7787313, 3221, 8051453, 2014877, -2801929, -5648956, -7410966, -5829881, -11323144, -65821448,
--6505265, -16522202, -18129056, 24529632, 19534586, -22802518, -17948132, 45893336, -4756140, 15167140,
-2743410, -1966021, -4849555, -4533338, -14376329, 249108, 5646809, 8559333, 5893232, 16674674,
--12382391, 104153, -12058121, -7002944, 5430986, 23486492, 15220827, 20787642, 18664318, -3687230,
-7001334, 11378442, 414464, -18286360, -3018288, 26321170, -4250944, -36592584, -15920907, 4468914,
--30976914, -13154411, -31755378, -21677774, -19704236, 30100742, 20689932, -6052683, 20707112, 8216273,
-29053844, 19662898, 9597641, -50067508, -10893111, 2656974, -43976708, -32054952, -12090333, -8244190,
--51574504, 11574937, 29087130, 38887172, 46501076, -15145665, -29714732, 42413, -29984240, -22195318,
--41779296, -46483356, -32743756, -27518930, 31389232, 1717450, 6578816, -27999428, -29393682, -26304528,
--2335925, 41049148, 51970180, 1706713, -18642842, -14245333, -20527796, -53919020, -23935852, -23854786,
--6390375, -1794760, -12030740, 14464913, 198105, -3981972, -19080930, -24967182, -12947716, -13989245,
--22028350, -4734665, -5459441, -1984812, -5778879, -10006737, 13653164, 8483097, -1227824, -12110734,
-9053254, 14852534, 1271847, -12436615, -6458020, 10438918, 2958159, -2652679, -11934104, 10426570,
--2299418, -3797825, 1322850, 8126615, 2185065, -2159832, 1376537, 6339372, 1163399, -21005612,
--50077172, 18849000, 1924145, -34216932, 31049392, 15170898, 9258876, -7835094, -30604326, -8049843,
-466004, 28925530, 38632692, 1844152, 10146323, 2090575, 814433, -2274722, 4879620, -16775605,
-54586888, 12775917, -18345952, -18389976, -8384313, 1997160, 26486526, -13436268, -4465156, -419296,
-13217225, -13482439, 6783901, 497142, -3415573, -45828912, -14607721, 14148159, 23157390, 7948374,
--5442261, -13508209, -30353608, -3680787, 4529580, -7530689, 153008, -8225399, -19693498, 19067508,
--4857608, 6565932, -21028160, -4727686, 52505440, 3580929, -6222334, 5784784, 6544457, 4595615,
-26268556, -10147934, -12390981, 19466940, -2595771, 11386495, 7009387, 16915728, -7022809, -20040318,
-9611600, -9458592, 1237488, 74327632, 71615896, 31935766, -6723772, -4076998, 8792335, 33474438,
-15356119, -10458782, -1416802, -4852776, -19387482, -20683488, 10852309, 5201206, 2612414, 16524350,
--2523830, -9834401, 9791989, 3857954, 14583561, -21976810, -17828946, -22325240, 3022583, -10253698,
-998043, -4800163, 7706782, 8447664, 18188112, 10269804, -19751480, -14819785, 6813966, -12435004,
--7055021, 1083942, 6166500, -8506720, -19420232, -2577517, 483184, -2093260, 8356396, 1839857,
--15698642, 4351876, 24938190, 28423020, 21343840, 24191940, 17468168, 21774410, -6153078, -1810866,
-8445516, -2864206, 8318815, 7372848, 11233487, 20685636, 37041408, 5350456, -38277824, -9739912,
-8956081, 6206765, -8902393, 29645474, 14874009, 11817603, -9309878, 34627636, -1713155, 1326071,
--8854612, 18706194, 12394739, -25654914, -37876780, -10170483, 6715182, 2735357, -7002408, -34561064,
--3213709, 13083007, 3129958, -11256036, -4571993, -9988483, -13209709, 8826695, 10278930, -21930104,
--24940338, -8179765, -31009128, 9092446, 27727236, -23475218, 26664230, -11804718, -14276471, -26412438,
--37343132, -41752452, -39775156, -20025822, 261993, 15796890, 7296076, 15737297, -20854750, -46612744,
--18339510, -44772348, -79296368, -29702920, 64397128, 110442936, 64655900, -26297012, -21351356, -96963720,
--87351584, 61601644, 10943040, 80726056, 83250960, 86900608, 29351270, -33718176, -42375220, -46963856,
--54166516, -7223598, 54649700, 92560304, 29736742, 10272488, -3818226, -45057964, -66756140, -44533444,
-9162776, 64173792, 30021284, 41842644, 33851860, 13041131, -23641110, -25941602, 1598265, -14016626,
-5617281, 31841276, 33404108, 25069188, 5313949, 13177497, 1007170, -20070920, 4960151, 9397388,
--2773475, 4464082, -5438503, 45871860, 26668526, 29421600, 17790828, -14629195, -39026756, -55195160,
-9059160, 20496658, 38507604, 39103528, 49707804, 24854438, -35660576, -44328356, -54477904, -8723079,
-616328, 30920006, 17915920, 10460930, 16879222, -26473104, -80688480, -53451404, -49435072, -10372883,
-7256884, 19934554, -4209605, -9821516, -17898740, -21132312, -3553012, 7644505, -24987582, 34979824,
-16791712, 31067646, -68302328, 15490873, 9204115, -20984674, 15274514, -15690052, -7792682, -4664872,
--9807558, 29436632, 54138064, -15710453, 10833518, -7511898, 12919798, 27597312, -8500277, -4983773,
--15080167, 7967165, -9602473, -29840896, 21736292, 36910412, -4945655, -19242528, -17781164, -38767984,
--10790568, 29493004, 19891604, 10315975, -42862700, -24755654, -18751828, 37896644, 32730336, 28858422,
--83591336, -55498492, -6870337, 41342280, 88025352, 423591, -106110392, -38858716, 3423089, 35824860,
--3040300, 19704236, 14709726, -46208480, -20402168, -12715251, -27893128, 2018098, -52262236, 8253854,
-20512764, -62909460, -40467180, -19550154, -8197482, 69835096, -547071, -106938240, 10154913, 15187004,
-16211354, 42273752, 19535658, -45624364, 2170032, -1650341, 91450592, 64717104, -53832048, 49052284,
--28759638, 19583978, 50443316, 18299782, -27886686, 25522306, -11233487, 6641630, 17407502, -1756642,
--18924162, 34761856, -22406844, 25512642, -12021077, 13785771, -4292283, 28000502, -9881109, 22032646,
--38301980, -6462852, -566936, -4887673, 12163884, 23871966, -24387898, 49081276, -19276350, -16724066,
--33494840, 24570972, 51354388, 10296110, -67914704, 5607617, -15362561, 33090576, 16105054, 14991046,
--27365920, -1750736, -17463338, 16549046, -7181722, -10755135, -4101157, 22396644, -5481989, -13582297,
--16898012, 12759274, 1847910, 12165495, -7617662, 439160, -13035226, -827318, -2851322, 6250788,
-1789391, 13773960, -3000035, -4007741, -14442901, 9823664, 3364033, 8747238, -48855, -8228621,
--10762114, 3240553, 2488934, 7453916, 23659364, -56435332, 8038568, -41430864, 7578470, 35223564,
-31142808, 10218264, -20151986, 4067871, -11965779, -2939368, -14853608, -10964515, 7663296, 2086280,
--21633750, -2465311, 11287174, -2377801, 1291711, 4109747, -13793824, -13653164, -338766, 9082782,
-1221381, -21990770, 1855426, 11323144, 3565360, 2654827, 23054310, -2508798, -6124624, 8288213,
-8837432, -15551003, -17260936, 12841952, 2495913, -13236552, 8924942, 3889093, 4332012, -9250823,
-3754875, 10472741, 1275068, -13029857, 17733920, -2120640, -19850266, 631360, 15558519, 4879083,
--12986370, 11861626, 3933653, -18090940, 7465727, 966368, 18518288, -16738024, 1523640, 12783970,
--29355028, 972810, 12693239, -452582, 8801462, -4847408, -18788334, 2532420, -19881940, 18711562,
-9655086, 5302137, -7380365, -7758322, 15440407, -13259101, 13779329, 15160698, -21613886, -6980396,
-937914, 16784196, 274341, -9666898, 6213744, -11716134, -693637, 1744294, 9897752, 718333,
-1636919, -6032819, 10300405, -3401077, -11997454, 10964515, -4839892, 4754529, -2711735, 7919920,
-9954660, -11376295, 2006287, -6142877, 2698850, -6242198, 22124988, -6203544, -12402792, 10028749,
--5583995, -1828046, -6308770, 6576132, 6026376, -8892730, 5009006, 8765491, -4506495, 636729,
--12344810, -28123982, 45632416, 6292664, 20543902, -17999134, 7747048, -4031901, 5373004, 4839892,
--7807177, 2913062, 8238284, -4992363, 18112950, 664646, 452582, 6055367, 5832029, -833224,
--4789963, 7644505, -1342714, -5535139, -1236414, 7683697, -8582955, 1662689, 3701725, -10902774,
-13322989, -2814814, -6595459, 20503638, -8614094, -12288975, 9368934, 5113696, -5811091, 8826158,
-7055021, -2611340, -3013457, -1724966, 2583960, 5033165, 2909304, -145492, -3668439, 10521596,
--11425687, 10085657, 1491427, -1345935, 2743410, 3128884, 3207267, 362925, -10178536, 2733210,
-8588861, -6277095, -127775, -84826, 6519761, -756451, -2668785, 9908490, -5176510, 5281736,
--10454487, -3918084, 9938554, -9628780, 9552007, -2583960, 6257231, 7672422, -8893267, -3067144,
-10793790, -9170292, -574452, 1066763, 3198140, 738198, -1336272, 329102, 716723, 4954782,
--4387846, 1036161, 3106872, -392990, -2317672, 489089, 1784022, -504122, 549219, -1967632,
-2166811, 3065533, -5578626, -941135, 9383430, -4659503, 2608656, -767189, 5305359, 1464047,
--3088618, 539555, -689879, -3223910, -2291902, 11116449, -2003602, -2632815, 1501091, 1180042,
--972273, 2310156, 4507032, 79994, 1097364, 361314, -1083942, 623844, 1251446, -2197413,
-1383516, -204548, 10712722, -37781216, -120830312, -6137509, 65150360, 29242822, 138766640, 11844983,
-29326574, 1230508, -40429600, -50955492, -34489660, -62100396, -43421044, -27322434, 1022202, 47426104,
-93452584, 68751688, 59871308, 19489488, -32482300, -47766480, -42903504, -50617800, -56092808, -22756348,
--10721312, -4909685, 27436788, 36352068, 27464168, 50821812, 32866164, 12167105, 34153044, 788127,
--14770929, -9808632, -30570504, -62799940, -38118908, -36770824, -37430640, 1947768, 17513266, 12055973,
-46198280, 37827388, 26135412, 37204616, 39633960, 11201275, 11922829, -4231080, -34029024, -47392816,
--36145908, -47502340, -33709052, -11810086, -8295730, 2909840, 25917444, 20222316, 18330384, 36489504,
-30241402, 22165252, 37768868, 10313290, -7672422, -1582696, -15066208, -32786706, -18986440, -41472740,
--52320756, -30908196, -26004954, -11354283, 30480846, 41019084, 38348152, 44130252, 36408436, 20629264,
-19986630, 9625559, -4202089, -11263015, -21001854, -31178242, -31107912, -35283156, -36934572, -31688268,
--10715943, -3779034, 12526809, 31780074, 35502200, 35008816, 41030360, 32531692, 24472186, 20244328,
-6736656, -15875273, -28122908, -45986216, -58580668, -54976656, -43457016, -21962316, 5632850, 29387776,
-40496708, 46462420, 48568564, 41781440, 29655138, 15029701, -9559523, -23853174, -31381716, -36566276,
--31868120, -24114630, -16514686, -6933151, 7757248, 10098005, 13931800, 15859167, 14251238, 11206643,
-9087614, 5993090, 5408975, 2290828, -1725503, -3134253, -3041374, -5001490, -5328444, -7093676,
--8138426, -9179419, -7223598, -5677947, -2936684, -325881, 4667556, 7592429, 9059160, 8913131,
-10022306, 8800925, 6479495, 2731599, -1291175, -5437966, -6752763, -7977365, -7904351, -8789651,
--7717520, -5583995, -1465121, 1134408, 3344169, 5185100, 6529424, 6298033, 6855842, 6331319,
-5337571, 3164854, 974958, -2584497, -4889284, -6817187, -6794102, -6506339, -5331665, -3772592,
--938450, 598611, 1988570, 3254512, 4522064, 4980015, 4960151, 3805878, 2895882, 1393180,
-163209, -1280437, -2283849, -3639985, -3945464, -4173635, -3545496, -2755759, -1115081, 220654,
-1824824, 2705830, 2957622, 2472828, 2287070, 1906429, 1676111, 916976, 188979, -734439,
--1352915, -2070711, -2260764, -2221572, -1614908, -959388, -178241, 202400, 667867, 842887,
-1013075, 921807, 784905, 541703, 404264, 157303, 9127, -141197, -185757, -218506,
--226023, -214212, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+2681133, 1685775, -3515968, -622233, 4472135, 1325534, 1097364, 2467996, -594316, 673773,
+-1175747, -4686883, -1853278, -233002, -1045825, 1347009, -1463510, -453656, -3983045, -3758,
+669478, -2800319, -625455, -3535295, -1275068, -1124208, -4299799, -1963337, 1344862, 1869921,
+4780299, 2845416, 6111202, -661962, -1021129, 901943, -2137820, 5334887, 290984, 2522757,
+4202626, 745714, -1737314, 1734093, -2285460, -2998961, -783295, -1294396, -1692754, -5543192,
+-1826435, 30602, 833224, 1659468, 428960, 2825015, -3183645, 2493229, -57982, 624381,
+1721745, -2185065, -4944044, -2108292, 2047626, 3071439, 2283312, 202400, 2327336, 1804423,
+3179887, 1627256, 1347009, -2121177, 120796, -336618, -474594, -1803886, -2288681, -958851,
+-566936, -193810, -1777580, 25770, 197032, 686658, 109522, 1254667, -723702, 578210,
+-1134945, -1621350, 755914, -224949, -95563, 1149978, 738734, 1009854, 13959, 110059,
+-1004486, 577673, 116501, 349503, -200253, 1555852, -392453, 99321, -725850, -522375,
+-809601, 671089, -570157, -1389959, -891206, -2522757, 2493766, -3905736, -2381559, 6417755,
+-983011, 5679558, -2831457, 597000, 2833605, 1289027, 234613, -3730179, -5312875, -5543729,
+651224, 193810, -1534914, 809601, -4902705, 9912248, 1163399, -5434744, 1508070, -2822867,
+-3081102, 2992519, 4229469, -11274, 988916, 2048163, -255014, 72478, 3330747, -1749125,
+-754841, 247497, 6025839, -67646, -652298, -2208150, -3485366, 1893007, -824634, -3575024,
+-1591285, -4314295, 632434, -3908420, 135828, -2947421, -944356, -2586107, -5442261, -2199023,
+-299037, 5231807, 807991, -1448478, 2870112, 4794794, 761283, -6410776, 3020973, 33286,
+1252520, 2173254, -1458141, 4146254, -1998770, -3606699, -3768297, -6702297, 675384, -2255395,
+-2353105, -2993055, -3143916, -135291, -3433826, 1150514, -500901, -1926293, -689879, -2182380,
+89121, -49929, -2515240, -1015223, 1078037, -324807, 206158, 621697, 280247, 485331,
+364535, -648003, -2250563, -366146, -820339, 690953, -254477, 316217, -400506, 64425,
+2147, -451508, -1400696, -1136556, -158914, -476741, -518617, -419296, -1042603, -354872,
+-4859756, 8383240, -1984812, -7423851, 673236, 2673080, 335544, 2472828, 2030446, -5852967,
+2225867, -1279900, -144418, 352724, -992674, 4661650, -1308891, -2842195, -162672, 3750580,
+2384781, 1465658, 2233383, 8931921, 2421288, -2907156, 4075387, -3573413, 1315871, -2859375,
+8380018, 1413044, -2607045, -1503239, -2614561, -815507, 5587753, -4266513, -3612604, -1003949,
+4641249, 2735357, -4127464, 1315871, 1034013, -2340757, 204548, -8900783, 3085397, -1953136,
+-1643899, -5596343, 8754217, 612033, -4447439, -3428995, -4364224, 467078, -884763, 610959,
+45097, -5078799, 6941204, -3754875, -3490198, 2847027, 803159, 2829847, -1861332, -276489,
+-4162360, 513249, 988916, -5241471, -3944928, 525060, -3679176, 1483911, -3285113, -813896,
+-882616, 2524904, -4262755, -4358318, -858993, -577673, -1013612, -153008, -1879048, -353261,
+-1352915, -1023813, -857920, -1260573, -1639067, -11274, -2220498, 747324, -1456531, 139050,
+197569, -401043, -805306, 30065, -552440, 1323924, -128849, -840740, -9664, -1600412,
+-295816, -920197, 133681, 392453, -1156957, -1351841, -337155, 7232188, 261456, 1592896,
+-5911486, 1866163, 3460133, 2530810, -208306, -2950643, 7779260, 1378148, -1497870, 3743601,
+3076270, -3585224, 4786204, -3156801, 7864622, 1138166, 7024956, -732829, 1279363, -2708514,
+-7851737, 882079, 212064, 297427, -1314797, 1651415, 4223564, -1022739, -4005057, -2662880,
+-5717675, -1573569, -2787434, -3030636, 586800, 2009508, 3191161, -3690988, 2647311, -2464774,
+-3027952, -398895, 2709051, 514322, 717796, -5754183, -5505611, -1039919, -1588601, -4204773,
+9259949, 4282083, -516470, 1785633, 3761855, -9264781, -4626217, 6233608, -3400004, 5847061,
+1394254, -1205812, -6154688, -4585952, 7475391, 3930432, 7073275, -7345468, -435402, -5093295,
+-331249, 1818382, -2641405, 869731, 622770, -4574140, 4191888, 462783, 703301, -745177,
+-8070781, 885837, -1879585, -2566243, -2467459, -494995, 1503775, -1315871, 719407, -2871723,
+-518617, -1318555, 1923072, -358630, -129386, -937377, 158914, -980326, 721018, -1627793,
+-679679, 525597, -363462, -111669, -2684, -24159, 854699, 457414, -32212, -1149441,
+-1076426, -1246614, 1168768, 468688, 1657321, 796716, -574989, 673773, -12133283, 627602,
+-1573569, 3263102, -7349226, 2326799, -2490544, 12228846, -3266860, -6365679, -2340757, -5342940,
+1641751, 4526896, -1468342, 8541079, 858993, -2546916, 2045478, 1023276, 2211908, -3054796,
+-552440, 3165391, 5007395, 1968169, -1021129, 2390686, -4505958, -1421634, 6301791, 4496831,
+7402913, 5244155, -142808, -3798362, -7933342, 5440650, -883690, -5795522, 2978560, -1548336,
+-8883603, 208306, -7408819, -610422, 6664716, -1158567, -4988068, -2313377, 6364605, -5556077,
+-9069360, 9164386, -1748052, -2258616, 2137820, 1141388, 1073205, 2184528, 2199560, 1197222,
+-6686191, -2560338, 5140539, -722091, -1992328, 1533303, 8835285, -4512937, -4924180, -2268280,
+3611531, 1815161, -7987029, -3571265, -2754148, -3504693, 2611340, -498753, -612570, -2990908,
+-2358474, -6336688, -3639985, 1496259, 201863, 977642, -260919, 3712999, 3864397, 651224,
+1408749, -1969779, 441308, 159988, 1578401, -2420214, -1097901, 272194, 55298, 1091995,
+-46708, -1386201, 1391569, 491237, -2654290, -545461, 771484, 450435, 456877, -692564,
+357556, -1320166, -1270237, -1131187, 680215, -595390, -644782, -221191, -10695005, -296890,
+2770254, 10158135, 10498511, -3476239, 5191542, -6869800, 2164127, 4425427, 6717329, -2049236,
+10110890, -1985886, 8564702, -4791573, 7163469, -3708168, -12112882, -2804077, 2930778, -4225174,
+4571993, -2676838, -2968359, 1232119, -13271986, -4336843, -350577, -2364916, -872415, -6448357,
+-2282775, -2346663, 2018098, 13380434, 7672422, -7893613, 4195646, 10686416, 2585570, -3844533,
+2598455, -2909304, -3286724, 7674033, 5304822, -5455146, -808528, 5451924, 11454678, -3782256,
+6192269, 17063368, 7286412, -7961796, 3105261, 1925219, -9629854, 1364726, -7973070, 3460133,
+-8681203, -2088965, 271120, 4002910, -5695664, -1613297, -2866891, -5159867, 6505802, 5603322,
+-395674, -3796751, 935229, 949188, 847719, 1535451, 4810900, 908386, -6597607, -164819,
+7827041, 202937, 1691680, 1551020, 2313377, -2509872, -1235877, -4006668, -1772748, -3688840,
+-388695, 2138894, -561030, -2101313, 1073742, -449898, 370441, -1149978, -860067, 1446330,
+-198105, 3499325, 774705, -772557, 1771674, -62277, -918586, -1345399, -1885491, 770410,
+-1041530, -494458, 828392, -99858, 1556389, 90194, -2253247, 4655208, -2326799, -10760504,
+2470143, -8645769, 1383516, -2870649, 11156178, -5678484, 1563905, 2929168, 1095217, 4045322,
+-1654099, 12215424, 945430, -7935489, -1488206, -5853504, -950798, -1910187, -5486821, -6879464,
+-1778653, -4433480, -2106145, 7813083, 2892661, -6619619, 2564096, -7904351, -1512902, 5737003,
+-10794327, -9522479, 5397164, 5077725, 2618320, -333397, -6564321, 2583423, -3247532, -6193343,
+-2877628, 322659, 1935957, 10222559, -4057670, -1171452, 519154, 4758824, 2490544, -3560528,
+-4599910, -8222178, -2529199, -1834488, -4539781, -5280663, 3329137, 6822019, -59593, -4388383,
+7545721, 1438814, -3765076, 913217, -1136019, -1001264, -2637110, -1494112, 4887136, -3927748,
+-5891085, -3397856, 3037616, -4552129, 7973070, 3565897, -1354525, -3304977, -3757023, 2255395,
+4939750, 10167798, -2977486, 5193689, 140123, -39192, 523986, 1615445, -1911261, 26307,
+1224066, 2123325, -1380295, 1479616, -1191317, 4916664, 1848983, 3691525, 7516, 2501819,
+-171799, 2217814, -482647, -226023, 2572686, 966368, 278099, 1361505, 267362, 2558190,
+-1954747, 581431, 1722819, 2348810, 2003602, -813359, -2666638, -67109, 1605244, 332860,
+255014, 2105071, 5546414, 10596758, -7931194, -293132, 7211250, -3474629, -5203353, 6629819,
+-10501732, -657130, 1922535, -1380295, -3927748, -4632122, -2236067, 1799054, -578747, 5004711,
+2513093, -1694902, -4010963, -2932389, 8247411, 307627, -10117332, 4694400, -6405944, -6279242,
+3823595, 7260642, 7402376, 5614596, -194347, 3789235, 2573759, 3576634, -3326452, -183073,
+-3000572, -7288560, 3043521, -1893007, -412854, -1619740, 693637, -1217623, 8020315, 14931991,
+2448668, -2607582, -57445, -10692858, 10349261, -7296076, -4737349, -7021735, -8596377, 14514305,
+782758, -8091719, -2936684, 10010495, 5158793, -7614977, -5690295, 11476689, 918586, 1171452,
+14849849, -7113003, 4073240, -5346161, -14755360, 6914898, 7092602, 1170916, -8521215, -1210107,
+-1855963, 1747515, -3701725, 5384815, 3318936, -11675869, 4945655, 5573794, 7117298, 1218697,
+-6240588, 10415296, 1764158, -937914, -805843, -3507915, -3682398, -1331977, 655519, 3137474,
+-11811, 246424, -339302, -2813741, 1176284, 1253594, 553514, -1296006, -775778, 2097555,
+751082, 2390686, -1569274, 556735, -3656628, 405874, 3448859, -4632659, 640487, -3631395,
+4217658, -1765232, -97711, -2829310, -17180, 2433099, -290984, 3321084, 11274, -952946,
+2408940, 5088463, 6485938, 11972221, 10969346, -375273, 9361955, 4240207, 9545565, 9224516,
+-15173583, 5579163, -4867809, -6529961, -4745939, -1379221, -9652939, -1975685, 2439005, -8246337,
+-16988206, 3959960, -1136019, -15300821, -11210938, -10002442, -5557688, 608812, -2820720, 3709778,
+-1962800, 6168647, 11978127, -6758668, 4117800, -2619393, -5391795, -3909494, 792958, -1105954,
+-426812, 8938364, -300648, 9009768, 11659226, 3527779, 5057324, 7738994, -938987, 1619203,
+-11380590, 10766946, -9269613, -3219078, -2908767, 1015223, -2515240, -8840653, -7784628, -17142826,
+15659988, -17512730, -16976932, 2950643, 16419660, 5872294, -2048163, -4043712, 7587060, -8184060,
+9473624, -2676838, 1262184, 1040456, -6178848, 6626061, -7311645, -5955509, -643171, 2433099,
+-6982006, -1040456, 3847754, -496606, -1869921, 5109938, -3274913, -6264210, -1398549, 3257196,
+-4137127, -2389613, -2814814, -578747, 1963874, -1297617, 628139, -989990, -2245731, 716186,
+-1425392, 1525787, -1493038, 2182380, -588411, 4021163, -518080, 1591285, 2210835, -1315871,
+-2631204, -224412, -609349, -99858, -781147, 1898912, 141197, 2438468, -2087891, 897111,
+-4531191, 259846, 241592, -1625108, 1303523, 7084012, 9243306, 9242233, 10062035, 23796266,
+10657961, 13580687, -6788196, 22025130, -12656195, 561030, 4813048, -144955, -8355859, 2712809,
+-2348273, -18858664, 7076496, -4780836, 1966021, -1803349, -6289443, -27380, 5540508, -7636989,
+-4000762, -1221918, 4368519, -11514270, 7215545, 2710124, -10579041, -856309, 4231617, -9565966,
+3512747, -11464878, 5217312, -1011465, -3759707, -474057, -7530689, 9576166, 11288785, -10849624,
+-6247567, 4882304, -3918621, 2994666, 2674154, 702764, 299037, 13073880, -3369939, -8777839,
+8043937, -355945, -6959995, -5810017, -10951630, 2078227, 2898566, 5421860, 5154498, -5048197,
+-8527121, 4713727, 2292439, 16354162, 1651415, -2046015, 338229, 1078574, -4908074, -2176475,
+-6134287, 6692096, 3797288, 4354023, -1364189, -10478110, -9621800, -3139084, -930934, -3770445,
+-6695854, 1850594, -2980707, 4310537, 673773, -709207, 2598992, 2777233, 4345970, 4148402,
+3258270, -33823, -1090922, 1176821, 2887292, 2297808, -1426466, -1264868, -936840, 756451,
+-107911, -827318, -48318, -5155035, 530965, 3361886, 2476586, -4015795, -2992519, 5752572,
+2974802, 5705327, 2148021, -4171487, 3854733, -1019518, -3264175, 614717, -4612795, -2472828,
+-1260036, 1725503, -1017907, -12868796, -14463839, 24157580, 16847010, 21597244, 1386201, -13846438,
+4889821, 11275900, 8028368, -3525631, -8759586, -2570538, -3216394, -4244502, -7541426, -3018288,
+-6333466, 16109349, 2579128, 2668785, 127238, 948651, 1714766, -5941551, 10660646, 6027450,
+-631360, 3885872, -1513976, 10979547, 2025614, -959925, -17941152, -1316408, 1131187, 1721745,
+-3357591, 2257005, -8497056, 14579266, 11802570, 11400991, 9942849, -7802345, -10818486, 8317741,
+2562485, 4074313, -708670, -12583717, -9109089, 743029, -7100655, 99321, -5963025, -2580202,
+7561827, 2421825, -5391258, 1948305, -13923747, 443992, -23608898, -11981885, -22305376, 19282792,
+17367774, 18551574, 22465364, 10896332, -3710852, -9942849, -3016678, -531502, 3230889, 17813914,
+-5870147, -13498008, 10319733, -8582418, 4498978, -1948305, -1938104, 4195646, -4000225, -7289097,
+-2061047, -8979703, -1902134, -8071854, -1852742, 1159104, -705985, -951335, -2190433, -2799782,
+-5581847, -59056, 2944200, 484258, -2805688, 1010928, 4895726, -631897, 3277597, 1817845,
+1945083, 1399623, -6451041, 5688148, -2485712, -2024003, 3813394, 1338419, 4214974, 457951,
+-5363878, -970663, 134755, 966368, -3274376, 184684, -213675, -8565239, -11525545, 10165114,
+13189308, -6476811, 12245489, 1728188, -5199058, 4925254, -17747342, -5505611, 5006858, -5653788,
+-10883447, -20512764, 10079215, -8814347, 2373506, 13289166, 3190087, 15495705, 11854110, 6739341,
+2544768, -9149354, -2684355, -4789426, 839129, 8629663, 4498978, 1782411, 7368017, 21066814,
+-1099512, -17916456, -7866770, 2895882, 4302484, -1025423, 445066, 1697049, -7642358, 471373,
+-16863652, 3793530, -17641578, -6432788, -13661217, 6726456, -6815040, -11209328, 17105780, 4797479,
+1394791, -7698729, -10261751, 2562485, 4067334, 1506997, 5573794, -8746701, 19230716, -23350664,
+6074158, -9733470, -14173392, -7941932, 12239046, 3687230, -13287018, 9385577, -10581189, 25934624,
+-2418067, -2848637, -12617003, 1508070, -16831440, -9031779, 22453552, -9041980, -10197863, -6662031,
+6713571, 840203, 9517111, 4740570, 4975183, 6933151, 3769908, -641024, 715649, 3304441,
+1416802, -1839320, 5573794, -1756105, -1943473, -4207458, -3774203, -1701344, 2056753, -3314641,
+243203, 1610613, -1365800, 1403381, 260382, 5493263, 2882460, -15569, -1123134, 537,
+-401043, 3278134, -2923799, 2972117, -825707, 1309428, 4609037, -1471026, 241592, -648540,
+-2319282, 5632313, -794032, 4390531, 24475408, 25183540, 23757074, 5132486, -6271189, -3880503,
+-15176804, 12467216, 442382, 7348689, -4487167, 2416993, -5500780, -4210679, -8744017, 4846871,
+-9108015, 15163919, -39289288, -11380590, 358093, -11829414, 8536248, -12161737, 2593624, -4649302,
+12455405, 2285460, 11992086, 946503, -2739652, -108985, 4435628, -13708999, -9836012, -10645076,
+-1446867, 13506062, -26407070, 9270150, 23097260, 2913599, -16871706, -584652, -14199699, -13596256,
+9540733, -1709934, -11589432, 6562173, 1035624, -4264366, -6520834, 3849901, 9637907, 5896453,
+-13475997, -9804873, 7807714, 11753715, -9470403, -12517682, 6270116, 13158169, -15845745, -471910,
+-14141180, -19412178, 23242216, -3782256, 3638374, -4273493, 14425721, -3313567, 3572876, -7648800,
+12553116, 7008313, 11552388, 13367549, -13197361, -14552960, -5908265, -2731062, -8732205, -21934934,
+2473901, 1268089, 35433, -1551557, -3526168, -2892124, 6367289, -488016, -2684892, 5905043,
+-6395743, -3359738, 2432025, 11529303, -3440806, -3476776, 599685, -1387274, 3998078, -1327145,
+-603980, -1960116, -3189550, -7995619, -11525008, 2100239, -789200, -8750459, -4376035, 2368675,
+-3043521, -9924596, -5530308, -622770, -1716913, 841277, 2851858, 1233193, -7516, 8216810,
+2835215, 12907987, -4124779, 23085, -18434000, -8367670, -3927211, -15562814, -22544284, -3870303,
+-7266548, 22038550, 6895570, 32567126, 6206765, -8811125, 4645007, 6525129, -25877714, 1932735,
+23463944, 15083388, -14912663, 2532957, 11926587, -20669530, -2988760, -10126459, 9366250, -7827041,
+6309307, 1876901, -3769908, 1592359, 348966, -6338298, 7595113, -13889387, -5198521, -5705864,
+-17601312, -3327526, -1969779, 740882, 1697586, -4453344, -5268851, 33293512, 10281078, -12296491,
+-22840100, -7969849, 2760053, 24194624, -5352603, -2630131, -12868259, -3078955, -8937290, 19922742,
+-15428059, 17824114, 22405770, -21784610, 15083388, 6010270, -9050033, -7946227, 5776194, 10760504,
+-48153564, -5975374, 296353, -6213744, 13172665, -6117107, -35900020, -13675176, -10196789, -15957414,
+-15610059, 3253438, 3500398, -8859444, -7880191, -14687714, 1927904, -5181341, 1659468, -6145025,
+-7305203, -8273718, 2372970, -1342714, 5650030, -7106024, 4041564, -511638, -7328825, -15626702,
+-3654480, -529355, 5555004, -1847373, -20975546, 4785131, 10708427, 4549981, -112743, -7069516,
+7965017, -652835, -2089502, -12475806, -1828582, -4032974, 11050414, -1211181, 2094333, 483184,
+2682207, 7199976, -4555350, 830002, 744103, -1932198, 969052, 3350075, -14879914, -12688407,
+-4611721, -10173704, -7010997, -2503429, -6332393, -8022462, -7760469, -1890859, -1880122, -3196530,
+-5609228, -2151242, -3857954, -677531, -1861332, -6859600, 5530844, 32288490, -934692, -37592240,
+-21012590, -23256712, -4326643, -12854837, -504659, -19080930, 31369904, 18647138, -3313567, 24663850,
+771484, 26590142, 6418292, -15315317, -20860120, -13160317, -16820166, -7519951, 4173098, 11477226,
+-3686693, 3767760, -13884556, 2397666, -20052666, -1805497, -1101122, 6916508, -7501161, 32217086,
+4208531, -833224, 21422224, -8296266, -15107547, -8891656, 13150653, -1002875, -8556112, 3585761,
+-68183, 27395986, 6815040, 75162, -10582799, -16550656, -41731512, 2694555, -33142652, 16802448,
+56989920, -40707164, -8654896, 9206799, -6962142, -7184944, -11353746, 9505299, -11656004, -39384852,
+-10413685, -39274256, -8162586, -1176284, -24557550, -3514894, -35362076, 15332496, -3499325, -22491670,
+55253680, 4247723, 22567368, 18831284, 30515206, -18747532, -1188632, -11325829, -4010963, -7684770,
+14535243, 9130564, 13068512, -26889716, -5322538, -14662481, -18785650, -15869367, -9611063, -2192581,
+10574746, 8597451, 6098854, 7580618, -2049236, 2384244, 15106474, -2878702, 14951855, 4271882,
+-12790949, -3646964, 4719632, -5701569, -2080375, 17337710, 397821, -5439039, 19683298, -9194988,
+-1240709, -16243029, -3788698, -11384885, 8592619, -8747238, -3687766, -3433826, 3381750, -3988414,
+7787313, 3221, 8051453, 2014877, -2801929, -5648956, -7410966, -5829881, -11323144, -65821448,
+-6505265, -16522202, -18129056, 24529632, 19534586, -22802518, -17948132, 45893336, -4756140, 15167140,
+2743410, -1966021, -4849555, -4533338, -14376329, 249108, 5646809, 8559333, 5893232, 16674674,
+-12382391, 104153, -12058121, -7002944, 5430986, 23486492, 15220827, 20787642, 18664318, -3687230,
+7001334, 11378442, 414464, -18286360, -3018288, 26321170, -4250944, -36592584, -15920907, 4468914,
+-30976914, -13154411, -31755378, -21677774, -19704236, 30100742, 20689932, -6052683, 20707112, 8216273,
+29053844, 19662898, 9597641, -50067508, -10893111, 2656974, -43976708, -32054952, -12090333, -8244190,
+-51574504, 11574937, 29087130, 38887172, 46501076, -15145665, -29714732, 42413, -29984240, -22195318,
+-41779296, -46483356, -32743756, -27518930, 31389232, 1717450, 6578816, -27999428, -29393682, -26304528,
+-2335925, 41049148, 51970180, 1706713, -18642842, -14245333, -20527796, -53919020, -23935852, -23854786,
+-6390375, -1794760, -12030740, 14464913, 198105, -3981972, -19080930, -24967182, -12947716, -13989245,
+-22028350, -4734665, -5459441, -1984812, -5778879, -10006737, 13653164, 8483097, -1227824, -12110734,
+9053254, 14852534, 1271847, -12436615, -6458020, 10438918, 2958159, -2652679, -11934104, 10426570,
+-2299418, -3797825, 1322850, 8126615, 2185065, -2159832, 1376537, 6339372, 1163399, -21005612,
+-50077172, 18849000, 1924145, -34216932, 31049392, 15170898, 9258876, -7835094, -30604326, -8049843,
+466004, 28925530, 38632692, 1844152, 10146323, 2090575, 814433, -2274722, 4879620, -16775605,
+54586888, 12775917, -18345952, -18389976, -8384313, 1997160, 26486526, -13436268, -4465156, -419296,
+13217225, -13482439, 6783901, 497142, -3415573, -45828912, -14607721, 14148159, 23157390, 7948374,
+-5442261, -13508209, -30353608, -3680787, 4529580, -7530689, 153008, -8225399, -19693498, 19067508,
+-4857608, 6565932, -21028160, -4727686, 52505440, 3580929, -6222334, 5784784, 6544457, 4595615,
+26268556, -10147934, -12390981, 19466940, -2595771, 11386495, 7009387, 16915728, -7022809, -20040318,
+9611600, -9458592, 1237488, 74327632, 71615896, 31935766, -6723772, -4076998, 8792335, 33474438,
+15356119, -10458782, -1416802, -4852776, -19387482, -20683488, 10852309, 5201206, 2612414, 16524350,
+-2523830, -9834401, 9791989, 3857954, 14583561, -21976810, -17828946, -22325240, 3022583, -10253698,
+998043, -4800163, 7706782, 8447664, 18188112, 10269804, -19751480, -14819785, 6813966, -12435004,
+-7055021, 1083942, 6166500, -8506720, -19420232, -2577517, 483184, -2093260, 8356396, 1839857,
+-15698642, 4351876, 24938190, 28423020, 21343840, 24191940, 17468168, 21774410, -6153078, -1810866,
+8445516, -2864206, 8318815, 7372848, 11233487, 20685636, 37041408, 5350456, -38277824, -9739912,
+8956081, 6206765, -8902393, 29645474, 14874009, 11817603, -9309878, 34627636, -1713155, 1326071,
+-8854612, 18706194, 12394739, -25654914, -37876780, -10170483, 6715182, 2735357, -7002408, -34561064,
+-3213709, 13083007, 3129958, -11256036, -4571993, -9988483, -13209709, 8826695, 10278930, -21930104,
+-24940338, -8179765, -31009128, 9092446, 27727236, -23475218, 26664230, -11804718, -14276471, -26412438,
+-37343132, -41752452, -39775156, -20025822, 261993, 15796890, 7296076, 15737297, -20854750, -46612744,
+-18339510, -44772348, -79296368, -29702920, 64397128, 110442936, 64655900, -26297012, -21351356, -96963720,
+-87351584, 61601644, 10943040, 80726056, 83250960, 86900608, 29351270, -33718176, -42375220, -46963856,
+-54166516, -7223598, 54649700, 92560304, 29736742, 10272488, -3818226, -45057964, -66756140, -44533444,
+9162776, 64173792, 30021284, 41842644, 33851860, 13041131, -23641110, -25941602, 1598265, -14016626,
+5617281, 31841276, 33404108, 25069188, 5313949, 13177497, 1007170, -20070920, 4960151, 9397388,
+-2773475, 4464082, -5438503, 45871860, 26668526, 29421600, 17790828, -14629195, -39026756, -55195160,
+9059160, 20496658, 38507604, 39103528, 49707804, 24854438, -35660576, -44328356, -54477904, -8723079,
+616328, 30920006, 17915920, 10460930, 16879222, -26473104, -80688480, -53451404, -49435072, -10372883,
+7256884, 19934554, -4209605, -9821516, -17898740, -21132312, -3553012, 7644505, -24987582, 34979824,
+16791712, 31067646, -68302328, 15490873, 9204115, -20984674, 15274514, -15690052, -7792682, -4664872,
+-9807558, 29436632, 54138064, -15710453, 10833518, -7511898, 12919798, 27597312, -8500277, -4983773,
+-15080167, 7967165, -9602473, -29840896, 21736292, 36910412, -4945655, -19242528, -17781164, -38767984,
+-10790568, 29493004, 19891604, 10315975, -42862700, -24755654, -18751828, 37896644, 32730336, 28858422,
+-83591336, -55498492, -6870337, 41342280, 88025352, 423591, -106110392, -38858716, 3423089, 35824860,
+-3040300, 19704236, 14709726, -46208480, -20402168, -12715251, -27893128, 2018098, -52262236, 8253854,
+20512764, -62909460, -40467180, -19550154, -8197482, 69835096, -547071, -106938240, 10154913, 15187004,
+16211354, 42273752, 19535658, -45624364, 2170032, -1650341, 91450592, 64717104, -53832048, 49052284,
+-28759638, 19583978, 50443316, 18299782, -27886686, 25522306, -11233487, 6641630, 17407502, -1756642,
+-18924162, 34761856, -22406844, 25512642, -12021077, 13785771, -4292283, 28000502, -9881109, 22032646,
+-38301980, -6462852, -566936, -4887673, 12163884, 23871966, -24387898, 49081276, -19276350, -16724066,
+-33494840, 24570972, 51354388, 10296110, -67914704, 5607617, -15362561, 33090576, 16105054, 14991046,
+-27365920, -1750736, -17463338, 16549046, -7181722, -10755135, -4101157, 22396644, -5481989, -13582297,
+-16898012, 12759274, 1847910, 12165495, -7617662, 439160, -13035226, -827318, -2851322, 6250788,
+1789391, 13773960, -3000035, -4007741, -14442901, 9823664, 3364033, 8747238, -48855, -8228621,
+-10762114, 3240553, 2488934, 7453916, 23659364, -56435332, 8038568, -41430864, 7578470, 35223564,
+31142808, 10218264, -20151986, 4067871, -11965779, -2939368, -14853608, -10964515, 7663296, 2086280,
+-21633750, -2465311, 11287174, -2377801, 1291711, 4109747, -13793824, -13653164, -338766, 9082782,
+1221381, -21990770, 1855426, 11323144, 3565360, 2654827, 23054310, -2508798, -6124624, 8288213,
+8837432, -15551003, -17260936, 12841952, 2495913, -13236552, 8924942, 3889093, 4332012, -9250823,
+3754875, 10472741, 1275068, -13029857, 17733920, -2120640, -19850266, 631360, 15558519, 4879083,
+-12986370, 11861626, 3933653, -18090940, 7465727, 966368, 18518288, -16738024, 1523640, 12783970,
+-29355028, 972810, 12693239, -452582, 8801462, -4847408, -18788334, 2532420, -19881940, 18711562,
+9655086, 5302137, -7380365, -7758322, 15440407, -13259101, 13779329, 15160698, -21613886, -6980396,
+937914, 16784196, 274341, -9666898, 6213744, -11716134, -693637, 1744294, 9897752, 718333,
+1636919, -6032819, 10300405, -3401077, -11997454, 10964515, -4839892, 4754529, -2711735, 7919920,
+9954660, -11376295, 2006287, -6142877, 2698850, -6242198, 22124988, -6203544, -12402792, 10028749,
+-5583995, -1828046, -6308770, 6576132, 6026376, -8892730, 5009006, 8765491, -4506495, 636729,
+-12344810, -28123982, 45632416, 6292664, 20543902, -17999134, 7747048, -4031901, 5373004, 4839892,
+-7807177, 2913062, 8238284, -4992363, 18112950, 664646, 452582, 6055367, 5832029, -833224,
+-4789963, 7644505, -1342714, -5535139, -1236414, 7683697, -8582955, 1662689, 3701725, -10902774,
+13322989, -2814814, -6595459, 20503638, -8614094, -12288975, 9368934, 5113696, -5811091, 8826158,
+7055021, -2611340, -3013457, -1724966, 2583960, 5033165, 2909304, -145492, -3668439, 10521596,
+-11425687, 10085657, 1491427, -1345935, 2743410, 3128884, 3207267, 362925, -10178536, 2733210,
+8588861, -6277095, -127775, -84826, 6519761, -756451, -2668785, 9908490, -5176510, 5281736,
+-10454487, -3918084, 9938554, -9628780, 9552007, -2583960, 6257231, 7672422, -8893267, -3067144,
+10793790, -9170292, -574452, 1066763, 3198140, 738198, -1336272, 329102, 716723, 4954782,
+-4387846, 1036161, 3106872, -392990, -2317672, 489089, 1784022, -504122, 549219, -1967632,
+2166811, 3065533, -5578626, -941135, 9383430, -4659503, 2608656, -767189, 5305359, 1464047,
+-3088618, 539555, -689879, -3223910, -2291902, 11116449, -2003602, -2632815, 1501091, 1180042,
+-972273, 2310156, 4507032, 79994, 1097364, 361314, -1083942, 623844, 1251446, -2197413,
+1383516, -204548, 10712722, -37781216, -120830312, -6137509, 65150360, 29242822, 138766640, 11844983,
+29326574, 1230508, -40429600, -50955492, -34489660, -62100396, -43421044, -27322434, 1022202, 47426104,
+93452584, 68751688, 59871308, 19489488, -32482300, -47766480, -42903504, -50617800, -56092808, -22756348,
+-10721312, -4909685, 27436788, 36352068, 27464168, 50821812, 32866164, 12167105, 34153044, 788127,
+-14770929, -9808632, -30570504, -62799940, -38118908, -36770824, -37430640, 1947768, 17513266, 12055973,
+46198280, 37827388, 26135412, 37204616, 39633960, 11201275, 11922829, -4231080, -34029024, -47392816,
+-36145908, -47502340, -33709052, -11810086, -8295730, 2909840, 25917444, 20222316, 18330384, 36489504,
+30241402, 22165252, 37768868, 10313290, -7672422, -1582696, -15066208, -32786706, -18986440, -41472740,
+-52320756, -30908196, -26004954, -11354283, 30480846, 41019084, 38348152, 44130252, 36408436, 20629264,
+19986630, 9625559, -4202089, -11263015, -21001854, -31178242, -31107912, -35283156, -36934572, -31688268,
+-10715943, -3779034, 12526809, 31780074, 35502200, 35008816, 41030360, 32531692, 24472186, 20244328,
+6736656, -15875273, -28122908, -45986216, -58580668, -54976656, -43457016, -21962316, 5632850, 29387776,
+40496708, 46462420, 48568564, 41781440, 29655138, 15029701, -9559523, -23853174, -31381716, -36566276,
+-31868120, -24114630, -16514686, -6933151, 7757248, 10098005, 13931800, 15859167, 14251238, 11206643,
+9087614, 5993090, 5408975, 2290828, -1725503, -3134253, -3041374, -5001490, -5328444, -7093676,
+-8138426, -9179419, -7223598, -5677947, -2936684, -325881, 4667556, 7592429, 9059160, 8913131,
+10022306, 8800925, 6479495, 2731599, -1291175, -5437966, -6752763, -7977365, -7904351, -8789651,
+-7717520, -5583995, -1465121, 1134408, 3344169, 5185100, 6529424, 6298033, 6855842, 6331319,
+5337571, 3164854, 974958, -2584497, -4889284, -6817187, -6794102, -6506339, -5331665, -3772592,
+-938450, 598611, 1988570, 3254512, 4522064, 4980015, 4960151, 3805878, 2895882, 1393180,
+163209, -1280437, -2283849, -3639985, -3945464, -4173635, -3545496, -2755759, -1115081, 220654,
+1824824, 2705830, 2957622, 2472828, 2287070, 1906429, 1676111, 916976, 188979, -734439,
+-1352915, -2070711, -2260764, -2221572, -1614908, -959388, -178241, 202400, 667867, 842887,
+1013075, 921807, 784905, 541703, 404264, 157303, 9127, -141197, -185757, -218506,
+-226023, -214212, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-2823404,
-606664, 3182034, -341450, 234076, -4857608, -2471217, 653372, 6309844, -4161287, 1273995,
--6667400, 6730751, 391916, 2432025, -835371, 1020592, -1329292, -2384244, -5803038, 2379412,
--5817533, -2747169, -3305514, 3218541, 2547453, 1200443, 2657511, 5061082, 282394, -4692789,
-3001645, 447213, -268972, 2451353, -972810, -1733556, -6835441, 1051730, -1993402, 1435593,
-2801393, -3730716, -1514513, 3303904, 1005022, 350040, -3503083, 8666170, 5204964, 806380,
-4169876, 3418794, 3316789, -8010651, 452582, -819265, -2152852, 1908039, 1278290, -1322850,
--1530082, -472446, -2425583, 2306398, -941135, 4591320, -212064, -1227824, -2240362, -4099010,
--781684, 3079492, -175020, 671626, 3635690, 960999, 4211753, -127238, 605590, -481036,
-4531191, 4014721, 4060355, 849867, -42950, 1780801, -129386, 521302, 48855, 164819,
--379031, -1311039, -1114007, -277025, -1270774, 543313, 586263, -567473, 1302449, -570157,
--427349, -316754, 512175, 112206, 1160178, 62277, -20938, 55298, 1516124, 723165,
--156229, -459025, 33823, -259846, 836982, 395137, 1617055, 363998, 2059437, 7208566,
--3514357, 2400350, -2006287, -3139621, -1298691, -2176475, 3928285, -3266323, -6060199, -1553168,
-1575716, -5046587, -3061238, 5681705, 9813463, -1664837, 3740380, -3378529, -3566970, -164283,
-1018444, -439160, -119722, 3642669, -6251862, 2028298, -478889, -1311039, -5274220, 453119,
-103079, 2957085, 865973, -4115116, 5402532, -4319664, 5039608, -571231, 896574, 2055679,
--616865, -2534031, 3934727, 971200, 5264556, 803696, -4685273, 8453569, 6698002, -2343979,
--713501, -1628866, -5900212, -3177739, -992137, -1011465, 2348273, -3234110, 235686, 2318209,
--14496, -88047, -399969, -554588, -3233574, 5113159, 140123, -109522, -1636383, -568546,
--4714801, -4169340, 1356136, 3413962, -453656, -883153, -27380, -33286, -2426657, 4583267,
-603443, 1518271, -1214402, 1252520, 762357, -187368, -105227, -198105, 40802, 1088774,
--624381, 690953, 713501, -138513, -206695, 572304, 1203665, 1097901, -804233, 307627,
-355945, -600759, -362388, 1724429, -263067, -79994, -1370632, -1235340, -2093797, -762894,
--7494718, 9299141, -1989107, -1057099, 6652368, -2556579, 3445101, 14747307, -1735704, 470836,
--5600101, -4514548, -6984154, 4097399, -2867965, 2018098, 3892851, -4384625, -3744675, -2734284,
-344134, 1482301, -5425618, -2105071, 2410014, 2076617, -2135673, -855235, 3358128, -3406446,
-563178, -1676111, -594853, -2361158, 2069101, -2163590, 933619, 1986959, -874026, 6219650,
-287763, -805843, -4546223, 579284, 6641630, 947577, 2260227, -6019934, -8616241, -3106872,
--7408819, -6533719, -145492, -2800319, -230854, -7932805, 6842420, -7341710, 1111860, 5090073,
--4537633, -7672422, -5454609, -1583232, 5146982, 4578435, 6878927, -3996467, -3511673, -2799782,
--2400350, 4992900, 1305670, -2012192, -1067299, 2396592, 2715493, 854162, 1269163, 1758252,
--340913, -2811056, -430570, -1846836, 747861, 287763, 660888, 609885, 185757, 1240172,
-196495, 1439888, 176094, -1006633, 1462973, -1603097, -1034550, 379568, -392990, 1475858,
--826781, -604517, -243203, 238908, -518080, -939524, 957778, -260919, 718333, -784368,
--756988, -937377, -1100585, -667331, -996969, 1552094, -1285806, 8017094, 829466, -3230352,
-451508, -2675228, -597537, 5607617, 9413495, -3226057, -3296924, -8551280, 1079647, 2137283,
-4859756, -3230889, 5240934, 820876, 8071854, -6487548, 1037235, -12242804, -1348083, 1450625,
--2990371, -2763275, -1081258, 4495757, -3693135, -6443525, 1823751, -9448391, -2057826, -4546223,
-2080375, -1018981, 3191161, 404801, -7193534, -7784628, 212601, 4122095, 7691213, -1544041,
--3130494, 6425271, -7104950, -3881577, 3428458, 3045132, 5090610, -4876936, 180926, 1950452,
--3065533, -1051193, 3006477, -4429185, 5745593, -2518462, -1068910, -6150393, -5096516, 2443300,
--12885, 96637, -867047, -3782793, 3558381, -2385318, 4425427, -96637, -5855114, -6163278,
-2246805, -3110093, 1096827, -8765491, -8351027, -1353989, 7859254, 33823, -1621350, 369367,
-1132261, 817118, -361314, 1232119, -4099010, 741956, 690416, 1219771, 1576790, 1728188,
-921807, -2321967, 165893, 2001992, 933082, 521302, -1147293, -1429150, 323196, -29528,
--474057, 1876364, -41339, -159988, -1324461, 2347200, 1954210, -144955, 166967, -1198296,
-679142, 711354, 324270, 76773, 775778, -1087701, -565325, 4747013, -13127031, 2973728,
--5735392, 4745402, 5432060, -6237367, -11515881, 1551557, -1588601, 7200513, -4419522, 10453950,
--4486094, 6896644, -8662949, -3249143, 3536369, 5112085, 1391033, -97711, -5336497, -754841,
--4211216, -5253819, 2821257, -4493073, 1676111, 955093, 2078764, -2581812, 4835060, -981400,
-4153770, -1013612, -8119099, -1408749, -2636036, 751082, 7993471, 443455, -749472, -483184,
--3319473, 2721399, -3132642, 4186519, 4543539, 1606318, 1713692, 8046621, -2063732, -1530082,
--6544457, 4556961, 4022237, 793495, 995896, 789200, 286152, 2309619, 4888747, 3237869,
-1831804, 1736241, -1311039, 6380711, 2146947, -1393180, -5004174, 2451353, -1522029, 9346386,
-5291937, 1124745, -4388920, -1683627, 7122130, -2849711, 892279, 4093641, -2359548, -2951716,
--5740224, 658741, 2036888, -514859, 2694555, -2293513, -879395, -1802276, 1966021, -238371,
--674847, -2797098, 615254, 634045, 1600412, 1867774, -692564, 252866, 2098629, -232465,
-2130841, -220117, 620086, 3120831, 626528, 3208878, -281857, -787590, -237834, -358093,
-78920, 159988, -2504503, 844498, 1951526, 133144, 769873, -671089, -16847010, -9156333,
-3373697, -3299609, 6764037, 6745246, 10189810, 4206921, 4117800, 2502355, -12279311, -2761127,
--1705102, 1085016, -1236951, 3802120, 2705293, -4734665, -3774740, 3133716, 5967857, 7518877,
-6491843, 8542690, -4700305, -4705137, -6230924, 6580964, -3825742, 5433134, -1388348, -307090,
--5835250, -3515968, -3340948, 4931160, 6101001, 1052804, 6099391, 8713952, -3479461, 2183454,
-10250476, -5185636, 3323231, 3451006, 378494, 7683697, 9877888, 7486128, 17136382, 3154654,
--2439005, -3204583, -2943663, -217433, 3012383, 5165772, -952946, -1712081, -1817845, -4627291,
-1925219, 2448668, 4438849, -10735808, -1472100, 2670933, 7096360, 4914517, -9142912, -6808597,
-1724966, 1672353, 7405598, -6561100, 410169, -697932, 783295, -9320616, -2512556, -3236795,
--2253784, -3854733, -1603097, 251792, 3563749, -48318, 201327, 1348083, 1705639, -3587372,
--558883, 222801, 16643, 1224066, -1220845, -2360085, -1568737, -1812476, 2526515, -2469606,
--1165010, -2836289, 704912, -642635, 1799054, -2600603, 1078574, -910533, 1060320, 912144,
-187368, 2170569, -2097018, 1046898, 1225676, 324270, 2589329, 4055523, 8126078, -1059783,
-1654099, 6947647, 10201621, 5743445, -11275900, 31675, -11996381, -8507256, -5157719, -1000727,
--7344394, 8753680, 3230889, 5180268, -14922327, -1073205, 9745818, 4958540, -4385699, -6272263,
--3838627, 3801583, -11419244, -667331, -7342247, 11225971, -1489280, -3284039, 1186485, -402116,
--1935420, 1981054, -2977486, 5213017, 3697430, 7493644, -566399, 382252, 11556146, -3660386,
-7731478, -1257889, -1372242, 20376398, 2415919, -2185065, -4613332, -15762530, 1649804, -16154983,
--2731062, 17009682, -4812511, -3307125, -11833172, -3467112, 408022, -6354941, 3404299, -618475,
--8676371, 9204115, 3280818, 2996277, 2520072, -6411313, 7018514, -10988137, 3164317, 4218732,
-449898, -1456531, -4460861, -3495567, -4543539, -1454920, 3635153, 4693863, -1198833, -3843459,
--2288681, 5232344, 2134062, 10017474, -190052, 753767, 4064650, -418222, -1860258, -1389959,
--1280974, -1108102, -1667521, 1174674, -1902134, -75162, 2027761, 747324, 2067490, 2008434,
-1599875, 177167, 3008088, 2183454, 1288490, 924492, 899796, -3164854, -2699387, 2288144,
-310311, -1954747, 330176, -2222646, 624381, 2524904, 906775, -434865, 913217, 2163053,
-469225, -1768990, 854699, 6581501, -13445395, 5712307, -4782446, -6828461, -6511708, 5026723,
-6440841, 3729642, 11212012, 8255464, 1622424, 3332895, -8894340, 1732482, 3919695, 8681740,
-1633161, -4253092, 3135326, 4024384, -7977902, 1097364, -8181376, 6280316, 5719823, 7378217,
--7286949, 4359929, 7907572, -3658775, 1997697, 10514080, -382789, -6601365, -5267778, 2300492,
--1807108, -6707665, -2793876, 70330, 1494112, 3557844, -4641786, 7323456, 4428112, -1740536,
-8848170, -1152125, 3320547, 11619497, -12461311, 22841710, -10593000, 3095598, 6847789, -2440615,
--1331977, 2847563, 15451682, -896038, -2201171, -512712, -3736085, 7484518, 8398272, -2755222,
-3562675, 2955474, 2703145, 5125507, 6603512, 500901, 7145752, 1504312, -6233072, -9562208,
-2223719, 890669, 4314295, 1816771, 14303852, -1494112, 7968238, 6419903, -4496294, -8223252,
--1006096, 883690, 2075543, -2263985, 3647501, 1695438, -3569118, -1007170, -3408594, -1279900,
-2052458, -1122597, 3051038, -824097, 1067836, 753230, -1478543, 1599875, 1837172, -2894808,
-1877975, 1238024, 560493, 638876, -136365, 515933, 3398930, 1032940, -1251983, 585189,
-911607, 1664837, 2083596, -683974, -2405719, -720481, -2104534, -1590212, 2512556, 2302639,
-2961917, 7598334, 10007274, 6150393, -10654203, 20393578, -6428493, 3860102, -14981383, 5942088,
--13251048, 10246181, 1049583, -2855617, -7504382, 9686762, 1283658, 6177774, 6373732, 3269544,
--11165841, 5694590, -6765111, -1243930, 5015448, 5465883, 1257352, -2079301, -11190000, 1552631,
-10275172, 1146219, 6645388, 7448547, -11685532, 6424198, -5951214, -5859409, 8590471, 9535901,
-4935455, 5366025, 1466731, 5144297, -12046310, -5364951, -3862249, 346282, 12779675, 6146098,
-5048734, -944893, 5603322, -285078, 14075682, 5207648, 5321465, 2159295, -816044, -20859582,
-7706245, 4936528, -1961190, -1473711, -15610596, 148176, -5987185, 3728032, 13536126, -2274722,
--7798587, 15825881, -742493, 8939438, -5307506, 57982, -9905268, -910533, 155693, -17095044,
--5120138, -2946885, -7724499, -3564286, -1547799, 1080184, 8531416, 635655, -238908, -1652489,
--4452808, -708670, 758062, -1622961, 575526, 212601, 2261837, -4008815, -1612223, -534723,
--3725884, 202937, -2426657, -1508607, -1240172, -2982855, -1566589, 3500935, -1199907, 625455,
--985695, 3795141, -199716, 1720671, -2492155, -5549635, -1712618, -240518, 2371896, 1002875,
-3390340, -226560, -1109712, 2905009, -3567507, 4238596, -115427, 13352516, -11515881, 1670742,
-4852776, 6036577, -19982336, 13251048, 3699041, -14209362, -9088151, 7742216, 17794050, -6276021,
--3240553, -12303471, 25478282, 9891310, 1581085, 4237522, -13386876, -8672613, -567473, 1104344,
-13214004, 2859911, 10186052, 11449309, -504122, 703838, 7975755, -2109903, -8515310, -8145943,
--2074469, 11335492, -6131066, 14341970, -6658810, 21064130, 9367861, 16988206, -4605279, 2743410,
-13635984, -10622528, 6355478, 6149320, 5783174, -6085432, 7261179, 1753420, 2314987, 6195491,
-12968117, 10900627, -11066520, -2592550, 5697811, -10797548, -6857989, -2854006, -22090628, 5908802,
--10919954, -6849399, 2130304, -2740726, 7561827, 14078366, 9025337, 5691369, -7603703, -1798518,
--461709, -14947023, 2732673, 1269163, 18476950, 3976066, 4157528, -4003983, 14276471, -127775,
--406948, 44023, -4641786, -2122251, 601832, -850404, -5029407, 467078, -1290638, 913217,
--5997922, -6508486, -2132451, 5196374, -854699, 2027225, 1975685, 1610613, -416612, -1370095,
--1785633, -3600256, -6008659, 2079301, 331249, -1461900, -7098507, 5258114, 3593277, 2045478,
--566399, 462783, -2399276, 1807644, -1252520, -2318746, 864899, 3063386, 1872069, -1850594,
--421981, -730681, 2279554, -15912317, -23484882, 12710956, -9561134, 10422812, 3410741, 5047661,
-6172405, -15775415, -28704340, 2546379, 4154844, 16180216, -15946677, -17482664, 15093589, -6023692,
-6866579, -3294240, 3595425, 2397129, 3980898, -7960722, 3848291, -1144609, -2493229, 9975598,
-3724811, -1430761, -12950400, -1764695, -370441, -2382633, -617938, -7005629, -17178258, -7632157,
-12610024, -5368172, 6218039, -9735617, 7215008, 3720516, -129386, -4901095, -21307332, 11781632,
-11433740, 14703821, -10281615, -4355097, 19981798, 17663590, 8159901, 3799972, 11293080, 4158065,
-10147397, -5443334, 8814347, -16843788, -1070521, 4704600, -4386236, 20053740, 781684, 10967736,
--6537477, -10771778, 23172960, -386010, 9198746, -3061775, 328028, -27249956, -2294050, 5802501,
--10517301, 12845173, 9738301, 2404108, -5576478, -20755966, -442919, -4216584, 5174362, 6313602,
-1053878, -2522220, 4884452, 222801, 2399813, -1312649, -6279242, -2290291, -5733782, 10051297,
-3082713, -198105, -208843, 1263257, 9279814, -1598802, -2223183, 1439351, -727997, 123480,
-4162897, 2277407, 3741990, -2673617, -350577, -4286378, 834834, 75699, 3918621, 3923990,
--4342749, 7012608, 7122130, -5553393, 433792, 921271, -805843, -11775190, -15426449, -4479114,
--3613678, -26416196, -24779814, -6492380, 120259, 18651432, 15171972, 15015743, -5807333, -2414309,
--3759170, 16033113, 6889128, -6727530, -1190243, -5356361, 11595875, 9000104, -6694244, -9374303,
--8603893, -17573396, 7339026, 489626, 497679, 3835406, -2628520, 6663642, 24712704, -14068165,
-7450695, 1474248, -9526237, -5455682, -11310260, 4287451, -5027259, -5683316, 12795781, 1570884,
--4269198, 12919798, -1758252, -5705864, 4495757, 9425843, -5190468, 10129680, 18196166, 17549236,
--11997454, -168577, 4383551, 9888625, -15193447, -3167539, -4196720, 18927920, 8065949, -2043331,
--11514807, -12779675, -11361262, 17093432, 14156212, -27087284, -22599044, -17140678, -12072079, 4083440,
--10888279, 6607271, 1802813, 2683818, -21791054, -6988449, 19696184, 15189689, -6602439, -13987098,
-13605383, 7126425, -1640678, 221191, -1739462, -3320547, 7730941, -6943352, 1689533, 1182727,
--292595, -5019743, -9154186, 1760937, 7431367, -736587, 812823, -3204583, 7057168, 7721815,
-754841, -1033477, 2600066, -286152, 3118683, 3360275, 4860829, -6545530, -636729, 2382633,
--8053, -4067334, 1080184, 8182450, 7617662, -2918967, 5835250, -8961986, 2232846, -2901787,
--2493229, -3599183, -5601711, 2080912, 21873194, 17247514, 10717017, 1695975, -14231911, -7374459,
--2170569, 5906117, 9100499, -12587475, 3317325, 823560, -10752987, -5064304, 8721468, -6372121,
-6937446, 3011846, 8152922, -10031970, -13959, -22449258, 3396246, -28404766, 11726334, 11602854,
--11025181, 13095892, 15592342, 495532, 4453881, -18301392, 10836202, 1116692, -7594039, 9978283,
--2330020, 179315, -161598, 1254667, 19178640, -2128156, -17180, 23549306, -224949, -10824928,
--31052614, -25511032, 28399934, 17710834, 7005092, 7176891, -11868605, -23907936, -11751031, 3820910,
--9185324, 18748606, -994285, 2516851, 20205136, -4116726, -6265284, -4512400, -12713640, -21579526,
--17149268, 48868676, -23711440, -10711648, 14021458, -24707336, -17805860, 17744658, 24852828, 8212515,
--4511327, 29261612, 14130442, -23488102, -8149164, -13103945, -12800076, 26607322, 1933272, -17674328,
--12222403, -13749264, 3889630, -2811056, 8115341, -165893, -4076461, -6430640, 608275, 7390565,
--3948149, 3434363, -3845606, 3699578, 3346317, 10280541, -3978750, -1457605, 8803072, 737124,
-4505958, 4615479, 6287296, 1214939, -3655017, -2022930, -926102, -1432909, 3861713, -1153199,
--4094715, 8298951, 8553964, -4669703, 2196339, -5322002, 1962263, 2046552, 5288179, -1294933,
--500901, -2607045, 2531883, 5944772, -20065550, -14812268, -10340134, -18363670, -1665374, 17376364,
--1271847, 3565360, 8546985, 5670431, -14784888, -7162395, -12220793, -6547141, 15646566, -4793721,
--1719598, -2157147, 9482751, 9458592, 28247464, 4492536, 20790326, -1225139, 7008313, -11340324,
--8544837, 7445326, -14430016, -16039018, 513785, 5041755, -8238821, 6572911, -9643812, 2930778,
--25355876, 14139569, 7905424, 11563663, 1430224, -10313290, -21246666, -7581691, -1905355, 17498770,
--13347148, -7901129, 4878546, 40029096, -11078331, 40693204, -24980604, 9852118, -9218610, 17853106,
--7095823, 30873298, -29057602, 44217764, -4195110, 9088151, 19128710, -32804960, 29229936, -35038880,
-23630910, -57089780, 30933428, -29351806, 25990458, -38290172, 33642480, 1125281, 21802864, 9434433,
--17863306, 15518254, -12794708, 38670276, -17630840, 6358699, -23091354, 6240588, -1558536, 4230006,
--8266739, 10726681, -10612327, 7595650, -3768297, 2440615, 3243237, 3406446, 4467840, -2644089,
--6110665, -4960687, -5855651, -13434658, 7741679, 1974611, -9237401, -4304631, -2800856, 5963025,
--10281078, 9750650, -7878044, 1932198, -4230006, 4734665, 1573569, -107911, 14814953, -13153874,
-8011188, -12709882, 19110456, -3655017, 18670222, -7377680, 5822902, 8425652, 2814277, 2894271,
--28454, 8929237, -13362180, 14619532, -10191957, 9615358, -2174327, 57445, -3871376, 134755,
-790811, -3788161, 1775432, 3494493, 1713155, -17594334, -15943455, 18514530, 31947040, -26500486,
-40503688, -2368138, -27917, -1571958, 7014219, -12072616, -8883603, -18079128, -4063576, 566936,
-16643, -106837, 15905875, 2715493, 17440252, 17083770, -10897943, 6279779, 36400384, 11890080,
-7777112, 5453535, -31619550, 1599875, -5146445, -3969624, -29001230, -6138582, 16627429, 4694936,
-5512054, 8366060, 21072720, 5495948, -6535330, -2170569, -1844152, 7905424, -14384919, -8843875,
-21758842, 13512504, 10117869, 16832514, 12412455, -7336878, -3703873, -25127706, -11064373, 10215580,
-8033737, 18966576, -13700946, -6812355, -4825396, 13943074, 8132521, 12517682, 5138392, -9912785,
--9231495, 31367220, -9624485, -30476552, 7015829, 22050898, 15079093, -397821, -2667712, 2727304,
-5019743, 3122441, 27986006, -33738580, -28847684, 3357591, 11348914, -14515916, -7526930, 2464774,
--11462194, 5424544, -5617817, -1429687, 2981244, -2179696, -7711077, 296890, 6351720, -4094178,
-35970, -11158862, -1981591, -9816148, 7201050, -3112241, 6602439, -3989488, 4116726, 1735704,
-5568962, 8762270, -8895951, -3966402, -2673080, 6912213, -4327717, -8002598, -14717779, -36507,
--5895380, -2179696, 2209761, 1484985, 394600, 2900177, 4789426, -930397, 14799384, 1847373,
--1210644, -11454678, 1963874, -2094333, -668941, 2820720, -12044162, -6117107, -12439836, -64132988,
-17700098, -7830799, -4088809, 15709380, -10886131, 16858284, -2290291, -27804008, -5084705, 2681133,
-9736691, 12388296, 2870112, -19710678, 19470160, -7665443, -1789928, -12121471, -5458904, 10428181,
--2105608, 9300215, 15697032, -3659312, -20308216, 4480725, 22253300, -20755966, 7612830, 17265768,
--3159485, -13736379, -25604984, -17288318, 18038326, 46244448, -14259828, -18477486, 52114060, -3427384,
--7518341, 37495600, 21831318, 18620830, 15052250, 6162205, -11040750, 19039590, 17741974, 12212203,
-5653788, -34514896, 21537114, 19051938, -36427764, -21079700, -13093745, -10217190, -10041097, 39726300,
-19835770, -22739168, 21235928, -8427263, -21254182, 9239548, 10805601, -9402757, -9010305, -33350422,
-3745212, 5681168, 24380918, 11668889, 3016141, 20376398, -16203301, 42165304, -44836236, -52312164,
-36922760, -22582938, -1400159, 25888990, -16319265, -11241003, -3228742, -3091840, 3221762, 15881715,
-7803419, -13018046, -796180, 6181532, -1553704, 8822937, -347355, 4876399, 956704, -6910066,
-3709778, 14097156, 9714679, -617938, 1891933, 9427453, -1511829, -1122597, 2396592, 21837762,
-11213623, -3505767, 4780836, -19362786, -840740, 5115306, -8910983, -12001212, 11337103, -5184026,
--325881, 11656541, -10100689, 4491462, -1716376, -2881923, 14467060, -8159364, -1939178, -16961362,
--69671888, 21549462, 39443368, -24302536, -4992900, -18877992, 40577240, 27322434, 17179870, -3136400,
--14079440, 3002719, 16400869, 7693360, -6966437, -1454383, 22404160, -1373853, -8151311, -29822106,
--14111652, 25334938, 14744086, -15823196, 12822625, -11430519, -3585761, 7669201, 7171522, -6846715,
-4653597, -26128970, 7573101, 35555888, -4443144, -6810208, -34783868, -20844550, 16962436, -27385248,
--14874545, 6388227, 7047505, -8400419, 22892176, 21654152, -22140556, 8388071, 12425340, 35831300,
-32785096, -5073967, 10761577, -770947, 37474664, 16367047, 15229417, 35561792, -15780247, -23062900,
--11814381, -29552060, 25062208, 11901891, 12270722, 6600291, 42492796, -27993524, -6509023, 18232136,
--9970767, 20222316, -920734, 2463164, 9412958, -24426552, -37155224, 4799089, 7217693, 41036264,
-31191664, 865436, -30138860, -4659503, -32923072, -76236, -987843, -9146133, -8393440, 4593468,
--2793339, -2365453, -8305930, -5319854, -7370164, -4311611, 1201517, -8713415, -8005282, -1222455,
-8294656, 4326106, -10657961, 9868224, -5367636, 18210662, -5595806, -15954193, -5829345, 8134668,
--4919348, -12069395, 14010183, -2870649, -12643310, -19553376, 3121368, -3031710, 2397666, 4486094,
--7479149, -6331319, -17144436, -3688840, -4460861, 1351304, 3287798, 6488622, 5608154, -12985834,
-155693, -16462073, -5974300, 1804423, 1871532, 16173236, 27514098, 24012088, 24739548, 31856310,
--18404472, 25082072, -49142480, -21498996, 18538152, 4370129, 35813048, 16326244, 30533996, -13353053,
-4000225, -26593364, 17969070, 29698088, 27006754, 2680060, 19126026, -47201152, -30757872, 29222958,
-8472897, -29438780, -15236396, 3546032, 43193948, 13305272, -17655000, -22260816, 4347581, -6535330,
-26543972, 28666222, -2896419, -4723927, 5645198, -8206072, 34345244, 9828496, -8222178, 6869264,
--16437914, -9783399, -77154792, -26273388, 13678397, -12130598, -11602854, -450972, -13973139, -14002667,
-35268660, 23564338, -17862232, 32142462, 66728760, 13649406, 47511464, 6490233, 9604084, 34812856,
-22990960, -18892488, -21387864, -37625524, -23393614, -2564632, -37090264, 13623099, -4522601, -35953172,
--25775710, -25757456, -32297618, -19670950, -13019120, -17254494, 5005785, 30474404, 37281388, 19574850,
--3950833, -27354110, -3541201, 949725, 2253247, -13385266, -2441689, -9078487, 7227893, 10402948,
-1096290, 7585449, -317291, -5413270, 8857833, -9761387, 1145683, 8368207, 18219788, 2388539,
--244276, 12209518, 5147519, 32960652, -8369281, -27060978, -1466195, 18036178, 3162170, -7468948,
--8287140, -22037478, -20784958, -11877732, -8323110, -3965329, -12511777, -18112950, -19178640, -10628970,
--1626719, 2464774, 25210384, 18130130, -6870337, 29255706, 52244520, 36021352, 25398826, 15727633,
-9918690, -13072807, -8424578, -13052942, -11729019, -3267933, -941135, 30181272, -3629247, 25592100,
--17056388, 6598144, -57732412, 15876883, -9024263, 29219736, -7641284, -34653408, 34242700, -13281113,
-4992363, 19360102, 14408542, 31321586, -5119064, 4519916, -6309307, 35752380, -7949985, 6553047,
-24813100, -29217588, 24464134, -7525320, 14855218, 23728620, -6749004, 5115306, 3735011, 2209224,
--8025684, 10432476, 10101226, -4487704, -14386530, -2855080, -16722992, -5630702, -3402688, 13213467,
--7179038, -26423712, -17500382, 27329414, 27628450, -26602490, -22326314, 32775432, 38587060, -15256798,
--4089883, 27726162, 894427, 14143327, 20127290, -47261284, -14130442, -3441880, 45324252, 3929895,
--3465502, -45048840, 8669928, 17350058, 11312944, 1343788, 11835319, 4383551, 6002217, 56865904,
--1971927, 2744484, 33413772, -20403242, 22130356, 3923990, 16647830, 10738492, -26125750, -8806830,
-30611306, 20147154, 11599096, -7573101, 10567230, 5119601, -216896, 3833795, 7646653, -4009889,
-13231720, -9100499, -2574833, 13604846, 7997229, 2549600, -29268054, 2352568, 14164265, -11176579,
-4921496, -26076894, -16561931, 17875118, 8621073, 14653892, 12814572, -10539313, -28471338, -8135742,
-9506910, 24390046, 14795089, -3908957, -5615670, -8889509, 20096688, -617938, -4246112, -8507793,
-10571525, 4299799, -4588636, -20786032, -13181792, 12797392, 12812424, 9045201, -14327474, -20063402,
-9780714, 26007638, 12029667, 1598265, -13335873, -3355980, 5909338, -498753, 285615, 1308891,
--3463354, -6214281, 1961190, 6644315, 1867237, 988379, 3077344, 816581, 714038, 1209570,
-3242164, 362388, -286689, 2496987, 33086818, -55910812, -3810173, -47302624, -43822088, 11062225,
-9314710, 8067023, 1168231, 41771240, 23858544, 53768160, 58893664, -6450504, -28849832, 6162205,
--7774428, -5360119, 12829067, 5708012, -4628901, -27067420, -29523606, 32097902, 14921790, -3645354,
-5011153, 5221607, 3043521, 5912023, -2935610, -7684770, -43681428, 956704, 25221658, -7373385,
--33648384, -11078331, 27795954, -51409148, -17586280, 32489280, 19760070, 38800196, -1032940, 2819109,
--35701380, -36151276, -45436996, 38318624, 54368916, -71502616, -35535484, -3754875, 36395552, -28375776,
--4532801, 65544960, 26758720, 16615081, 43486008, 31690416, 47730508, -17223892, 47458852, -7234336,
--37059664, -54662048, -12716861, 20907364, -43190192, -8500814, 9415105, -9162776, -15144592, 9206799,
-8458938, -29800630, 22287122, 10824391, 32342714, -7792145, -31485332, 39361228, 8069170, -35945120,
-307627, -8389145, 15075872, -15934329, -16203838, -8407935, -1557999, -557272, -12254079, -15016279,
-11750494, -15666430, -10737, -15484431, 8617852, 14634564, 2441689, 21898428, 15193447, -22138946,
--8093329, -32212, -19741818, 3287798, -3220689, 7858180, -5091147, 6922951, 19359028, 13959,
-3866008, -13509283, 20819854, 13104482, -14447733, -4329864, 14904610, 13817447, -1868848, -21288006,
--2580739, -41360000, 32074278, -2589865, 9890236, 12487617, 12095165, 511638, -13862007, 22782654,
-5800890, 21994528, -4589173, -46287400, -4097399, 13516262, -15140297, -16871168, -10283762, -15542413,
-19022948, -4741107, -16377784, -820876, 17706002, -23523000, 16678432, -8085813, 8931921, -23170812,
--5680094, 9555228, -1873680, -2029909, 3002182, 13189308, -2186675, -1996623, -16143708, 8231842,
--4335770, 2740189, 5168457, 1836099, 12199318, -17534204, -13353053, 18623516, 16087874, -22048752,
-10714870, -17794050, 20811800, -17187922, 7938174, 5466420, -14521284, 32621888, 3300682, -36022428,
-16805670, 4506495, -27816892, 15818901, -10120554, 16839494, -24095840, 12571906, -25531970, 11920145,
-18421114, -16409996, 9638443, -17444546, 766115, 729071, 1833414, -11416560, 380641, 8935679,
--335544, -15733539, 12133819, -9806484, -21201570, 9341554, -9323300, 4791573, 10109816, -7419556,
--4404489, 1928440, -1237488, 6597607, -3222299, -2217814, 5929739, 7465727, 2630668, -7226283,
--4227859, 7215008, 4406637, -16530792, 15393700, -2043868, -5521181, 2263448, -1017907, 3739843,
-8340827, -1875827, 15641197, -4424353, -6545530, -7396471, -2844879, 1628330, -7129109, 2089502,
--2298881, -2838437, 2052994, 2641405, -2851858, 70330, -667867, -3092913, 3356517, 2266132,
--3375844, 9809168, 20000588, -10193568, -111706192, -201515040, -67036924, -156194000, -154528624, 83120504,
-17218524, 115629112, 261337488, 235485536, 193056096, 235827520, 144277616, 32201518, 45320496, -33617784,
--175205680, -173144096, -129608688, -168237632, -115404160, -23932632, -77922520, -107443976, -46699180, -13472776,
--55904904, -26603028, -1181653, -27955942, -49770080, 10402411, 42821896, -14577119, 59461676, 88911192,
-2092723, 17135308, 120197880, 59584620, 636192, 112688128, 92080880, -21654688, 43554728, 105212200,
--2103460, 8578123, 148440512, 79753784, 33079838, 179580096, 197829952, 97299800, 187543504, 233316576,
-61098056, 31294206, 94934344, -38032472, -113018840, -65927748, -147030688, -260668544, -260181072, -295284896,
--393307872, -396089408, -380151840, -388895872, -348046976, -298370304, -239091696, -156690608, -79844512, 38310036,
-171604352, 226413488, 276238336, 374259168, 329042272, 294158016, 328540288, 242524448, 113074680, 133015672,
-150251376, 55391656, 72312216, 150549872, 73711304, 13664975, 64360620, 57960584, -33617244, -429497,
-40072044, -60286308, -76906224, 16911434, -15777025, -25393994, 83626768, 71807560, 6933688, 65237868,
-94745368, 16280610, -7783555, 4870493, -98256504, -177180288, -185147456, -236020272, -297016864, -281414848,
--251886416, -229454336, -204745392, -150393648, -142765792, -155847184, -104554000, -34390876, 8930311, 38075420,
-101494912, 121813328, 137777184, 247362192, 288292160, 266512928, 245753728, 195856416, 123822296, 106148504,
-90205584, 55292336, 39353712, 36453536, 14416595, -3268470, -4954245, -10351945, -21728240, -26823682,
--22114250, -30316026, -41684268, -39770324, -38636452, -43732968, -44300976, -37630892, -39605504, -37008124,
--28435368, -27448062, -29050086, -24123220, -19923816, -19261318, -13589813, -7288560, -5177046, -5042292,
--6925098, -7172596, -7733089, -7992934, -6492917, -5804649, -11095511, -17236778, -22021372, -25350508,
--27209692, -22492206, -17958332, -17541720, -14499810, -8620536, -6453725, 1058173, 12206297, 18081276,
-19878720, 26056492, 29393146, 28156732, 31595390, 36076652, 32991792, 33191508, 37349036, 36407900,
-34822520, 35712652, 30326228, 21599928, 15795279, 10532334, 2860985, -3503083, -7540889, -13227962,
--18807662, -20139638, -20585242, -21851720, -20174536, -19476066, -21349746, -20744156, -19586124, -18283138,
--16120086, -13944685, -11451457, -9069897, -7029788, -4107599, -2130304, -979789, 294742, 1420560,
-1697049, 2155000, 2633889, 2876018, 2913062, 3060701, 3073586, 2917894, 2745558, 2698313,
-2647311, 2597918, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+606664, 3182034, -341450, 234076, -4857608, -2471217, 653372, 6309844, -4161287, 1273995,
+-6667400, 6730751, 391916, 2432025, -835371, 1020592, -1329292, -2384244, -5803038, 2379412,
+-5817533, -2747169, -3305514, 3218541, 2547453, 1200443, 2657511, 5061082, 282394, -4692789,
+3001645, 447213, -268972, 2451353, -972810, -1733556, -6835441, 1051730, -1993402, 1435593,
+2801393, -3730716, -1514513, 3303904, 1005022, 350040, -3503083, 8666170, 5204964, 806380,
+4169876, 3418794, 3316789, -8010651, 452582, -819265, -2152852, 1908039, 1278290, -1322850,
+-1530082, -472446, -2425583, 2306398, -941135, 4591320, -212064, -1227824, -2240362, -4099010,
+-781684, 3079492, -175020, 671626, 3635690, 960999, 4211753, -127238, 605590, -481036,
+4531191, 4014721, 4060355, 849867, -42950, 1780801, -129386, 521302, 48855, 164819,
+-379031, -1311039, -1114007, -277025, -1270774, 543313, 586263, -567473, 1302449, -570157,
+-427349, -316754, 512175, 112206, 1160178, 62277, -20938, 55298, 1516124, 723165,
+-156229, -459025, 33823, -259846, 836982, 395137, 1617055, 363998, 2059437, 7208566,
+-3514357, 2400350, -2006287, -3139621, -1298691, -2176475, 3928285, -3266323, -6060199, -1553168,
+1575716, -5046587, -3061238, 5681705, 9813463, -1664837, 3740380, -3378529, -3566970, -164283,
+1018444, -439160, -119722, 3642669, -6251862, 2028298, -478889, -1311039, -5274220, 453119,
+103079, 2957085, 865973, -4115116, 5402532, -4319664, 5039608, -571231, 896574, 2055679,
+-616865, -2534031, 3934727, 971200, 5264556, 803696, -4685273, 8453569, 6698002, -2343979,
+-713501, -1628866, -5900212, -3177739, -992137, -1011465, 2348273, -3234110, 235686, 2318209,
+-14496, -88047, -399969, -554588, -3233574, 5113159, 140123, -109522, -1636383, -568546,
+-4714801, -4169340, 1356136, 3413962, -453656, -883153, -27380, -33286, -2426657, 4583267,
+603443, 1518271, -1214402, 1252520, 762357, -187368, -105227, -198105, 40802, 1088774,
+-624381, 690953, 713501, -138513, -206695, 572304, 1203665, 1097901, -804233, 307627,
+355945, -600759, -362388, 1724429, -263067, -79994, -1370632, -1235340, -2093797, -762894,
+-7494718, 9299141, -1989107, -1057099, 6652368, -2556579, 3445101, 14747307, -1735704, 470836,
+-5600101, -4514548, -6984154, 4097399, -2867965, 2018098, 3892851, -4384625, -3744675, -2734284,
+344134, 1482301, -5425618, -2105071, 2410014, 2076617, -2135673, -855235, 3358128, -3406446,
+563178, -1676111, -594853, -2361158, 2069101, -2163590, 933619, 1986959, -874026, 6219650,
+287763, -805843, -4546223, 579284, 6641630, 947577, 2260227, -6019934, -8616241, -3106872,
+-7408819, -6533719, -145492, -2800319, -230854, -7932805, 6842420, -7341710, 1111860, 5090073,
+-4537633, -7672422, -5454609, -1583232, 5146982, 4578435, 6878927, -3996467, -3511673, -2799782,
+-2400350, 4992900, 1305670, -2012192, -1067299, 2396592, 2715493, 854162, 1269163, 1758252,
+-340913, -2811056, -430570, -1846836, 747861, 287763, 660888, 609885, 185757, 1240172,
+196495, 1439888, 176094, -1006633, 1462973, -1603097, -1034550, 379568, -392990, 1475858,
+-826781, -604517, -243203, 238908, -518080, -939524, 957778, -260919, 718333, -784368,
+-756988, -937377, -1100585, -667331, -996969, 1552094, -1285806, 8017094, 829466, -3230352,
+451508, -2675228, -597537, 5607617, 9413495, -3226057, -3296924, -8551280, 1079647, 2137283,
+4859756, -3230889, 5240934, 820876, 8071854, -6487548, 1037235, -12242804, -1348083, 1450625,
+-2990371, -2763275, -1081258, 4495757, -3693135, -6443525, 1823751, -9448391, -2057826, -4546223,
+2080375, -1018981, 3191161, 404801, -7193534, -7784628, 212601, 4122095, 7691213, -1544041,
+-3130494, 6425271, -7104950, -3881577, 3428458, 3045132, 5090610, -4876936, 180926, 1950452,
+-3065533, -1051193, 3006477, -4429185, 5745593, -2518462, -1068910, -6150393, -5096516, 2443300,
+-12885, 96637, -867047, -3782793, 3558381, -2385318, 4425427, -96637, -5855114, -6163278,
+2246805, -3110093, 1096827, -8765491, -8351027, -1353989, 7859254, 33823, -1621350, 369367,
+1132261, 817118, -361314, 1232119, -4099010, 741956, 690416, 1219771, 1576790, 1728188,
+921807, -2321967, 165893, 2001992, 933082, 521302, -1147293, -1429150, 323196, -29528,
+-474057, 1876364, -41339, -159988, -1324461, 2347200, 1954210, -144955, 166967, -1198296,
+679142, 711354, 324270, 76773, 775778, -1087701, -565325, 4747013, -13127031, 2973728,
+-5735392, 4745402, 5432060, -6237367, -11515881, 1551557, -1588601, 7200513, -4419522, 10453950,
+-4486094, 6896644, -8662949, -3249143, 3536369, 5112085, 1391033, -97711, -5336497, -754841,
+-4211216, -5253819, 2821257, -4493073, 1676111, 955093, 2078764, -2581812, 4835060, -981400,
+4153770, -1013612, -8119099, -1408749, -2636036, 751082, 7993471, 443455, -749472, -483184,
+-3319473, 2721399, -3132642, 4186519, 4543539, 1606318, 1713692, 8046621, -2063732, -1530082,
+-6544457, 4556961, 4022237, 793495, 995896, 789200, 286152, 2309619, 4888747, 3237869,
+1831804, 1736241, -1311039, 6380711, 2146947, -1393180, -5004174, 2451353, -1522029, 9346386,
+5291937, 1124745, -4388920, -1683627, 7122130, -2849711, 892279, 4093641, -2359548, -2951716,
+-5740224, 658741, 2036888, -514859, 2694555, -2293513, -879395, -1802276, 1966021, -238371,
+-674847, -2797098, 615254, 634045, 1600412, 1867774, -692564, 252866, 2098629, -232465,
+2130841, -220117, 620086, 3120831, 626528, 3208878, -281857, -787590, -237834, -358093,
+78920, 159988, -2504503, 844498, 1951526, 133144, 769873, -671089, -16847010, -9156333,
+3373697, -3299609, 6764037, 6745246, 10189810, 4206921, 4117800, 2502355, -12279311, -2761127,
+-1705102, 1085016, -1236951, 3802120, 2705293, -4734665, -3774740, 3133716, 5967857, 7518877,
+6491843, 8542690, -4700305, -4705137, -6230924, 6580964, -3825742, 5433134, -1388348, -307090,
+-5835250, -3515968, -3340948, 4931160, 6101001, 1052804, 6099391, 8713952, -3479461, 2183454,
+10250476, -5185636, 3323231, 3451006, 378494, 7683697, 9877888, 7486128, 17136382, 3154654,
+-2439005, -3204583, -2943663, -217433, 3012383, 5165772, -952946, -1712081, -1817845, -4627291,
+1925219, 2448668, 4438849, -10735808, -1472100, 2670933, 7096360, 4914517, -9142912, -6808597,
+1724966, 1672353, 7405598, -6561100, 410169, -697932, 783295, -9320616, -2512556, -3236795,
+-2253784, -3854733, -1603097, 251792, 3563749, -48318, 201327, 1348083, 1705639, -3587372,
+-558883, 222801, 16643, 1224066, -1220845, -2360085, -1568737, -1812476, 2526515, -2469606,
+-1165010, -2836289, 704912, -642635, 1799054, -2600603, 1078574, -910533, 1060320, 912144,
+187368, 2170569, -2097018, 1046898, 1225676, 324270, 2589329, 4055523, 8126078, -1059783,
+1654099, 6947647, 10201621, 5743445, -11275900, 31675, -11996381, -8507256, -5157719, -1000727,
+-7344394, 8753680, 3230889, 5180268, -14922327, -1073205, 9745818, 4958540, -4385699, -6272263,
+-3838627, 3801583, -11419244, -667331, -7342247, 11225971, -1489280, -3284039, 1186485, -402116,
+-1935420, 1981054, -2977486, 5213017, 3697430, 7493644, -566399, 382252, 11556146, -3660386,
+7731478, -1257889, -1372242, 20376398, 2415919, -2185065, -4613332, -15762530, 1649804, -16154983,
+-2731062, 17009682, -4812511, -3307125, -11833172, -3467112, 408022, -6354941, 3404299, -618475,
+-8676371, 9204115, 3280818, 2996277, 2520072, -6411313, 7018514, -10988137, 3164317, 4218732,
+449898, -1456531, -4460861, -3495567, -4543539, -1454920, 3635153, 4693863, -1198833, -3843459,
+-2288681, 5232344, 2134062, 10017474, -190052, 753767, 4064650, -418222, -1860258, -1389959,
+-1280974, -1108102, -1667521, 1174674, -1902134, -75162, 2027761, 747324, 2067490, 2008434,
+1599875, 177167, 3008088, 2183454, 1288490, 924492, 899796, -3164854, -2699387, 2288144,
+310311, -1954747, 330176, -2222646, 624381, 2524904, 906775, -434865, 913217, 2163053,
+469225, -1768990, 854699, 6581501, -13445395, 5712307, -4782446, -6828461, -6511708, 5026723,
+6440841, 3729642, 11212012, 8255464, 1622424, 3332895, -8894340, 1732482, 3919695, 8681740,
+1633161, -4253092, 3135326, 4024384, -7977902, 1097364, -8181376, 6280316, 5719823, 7378217,
+-7286949, 4359929, 7907572, -3658775, 1997697, 10514080, -382789, -6601365, -5267778, 2300492,
+-1807108, -6707665, -2793876, 70330, 1494112, 3557844, -4641786, 7323456, 4428112, -1740536,
+8848170, -1152125, 3320547, 11619497, -12461311, 22841710, -10593000, 3095598, 6847789, -2440615,
+-1331977, 2847563, 15451682, -896038, -2201171, -512712, -3736085, 7484518, 8398272, -2755222,
+3562675, 2955474, 2703145, 5125507, 6603512, 500901, 7145752, 1504312, -6233072, -9562208,
+2223719, 890669, 4314295, 1816771, 14303852, -1494112, 7968238, 6419903, -4496294, -8223252,
+-1006096, 883690, 2075543, -2263985, 3647501, 1695438, -3569118, -1007170, -3408594, -1279900,
+2052458, -1122597, 3051038, -824097, 1067836, 753230, -1478543, 1599875, 1837172, -2894808,
+1877975, 1238024, 560493, 638876, -136365, 515933, 3398930, 1032940, -1251983, 585189,
+911607, 1664837, 2083596, -683974, -2405719, -720481, -2104534, -1590212, 2512556, 2302639,
+2961917, 7598334, 10007274, 6150393, -10654203, 20393578, -6428493, 3860102, -14981383, 5942088,
+-13251048, 10246181, 1049583, -2855617, -7504382, 9686762, 1283658, 6177774, 6373732, 3269544,
+-11165841, 5694590, -6765111, -1243930, 5015448, 5465883, 1257352, -2079301, -11190000, 1552631,
+10275172, 1146219, 6645388, 7448547, -11685532, 6424198, -5951214, -5859409, 8590471, 9535901,
+4935455, 5366025, 1466731, 5144297, -12046310, -5364951, -3862249, 346282, 12779675, 6146098,
+5048734, -944893, 5603322, -285078, 14075682, 5207648, 5321465, 2159295, -816044, -20859582,
+7706245, 4936528, -1961190, -1473711, -15610596, 148176, -5987185, 3728032, 13536126, -2274722,
+-7798587, 15825881, -742493, 8939438, -5307506, 57982, -9905268, -910533, 155693, -17095044,
+-5120138, -2946885, -7724499, -3564286, -1547799, 1080184, 8531416, 635655, -238908, -1652489,
+-4452808, -708670, 758062, -1622961, 575526, 212601, 2261837, -4008815, -1612223, -534723,
+-3725884, 202937, -2426657, -1508607, -1240172, -2982855, -1566589, 3500935, -1199907, 625455,
+-985695, 3795141, -199716, 1720671, -2492155, -5549635, -1712618, -240518, 2371896, 1002875,
+3390340, -226560, -1109712, 2905009, -3567507, 4238596, -115427, 13352516, -11515881, 1670742,
+4852776, 6036577, -19982336, 13251048, 3699041, -14209362, -9088151, 7742216, 17794050, -6276021,
+-3240553, -12303471, 25478282, 9891310, 1581085, 4237522, -13386876, -8672613, -567473, 1104344,
+13214004, 2859911, 10186052, 11449309, -504122, 703838, 7975755, -2109903, -8515310, -8145943,
+-2074469, 11335492, -6131066, 14341970, -6658810, 21064130, 9367861, 16988206, -4605279, 2743410,
+13635984, -10622528, 6355478, 6149320, 5783174, -6085432, 7261179, 1753420, 2314987, 6195491,
+12968117, 10900627, -11066520, -2592550, 5697811, -10797548, -6857989, -2854006, -22090628, 5908802,
+-10919954, -6849399, 2130304, -2740726, 7561827, 14078366, 9025337, 5691369, -7603703, -1798518,
+-461709, -14947023, 2732673, 1269163, 18476950, 3976066, 4157528, -4003983, 14276471, -127775,
+-406948, 44023, -4641786, -2122251, 601832, -850404, -5029407, 467078, -1290638, 913217,
+-5997922, -6508486, -2132451, 5196374, -854699, 2027225, 1975685, 1610613, -416612, -1370095,
+-1785633, -3600256, -6008659, 2079301, 331249, -1461900, -7098507, 5258114, 3593277, 2045478,
+-566399, 462783, -2399276, 1807644, -1252520, -2318746, 864899, 3063386, 1872069, -1850594,
+-421981, -730681, 2279554, -15912317, -23484882, 12710956, -9561134, 10422812, 3410741, 5047661,
+6172405, -15775415, -28704340, 2546379, 4154844, 16180216, -15946677, -17482664, 15093589, -6023692,
+6866579, -3294240, 3595425, 2397129, 3980898, -7960722, 3848291, -1144609, -2493229, 9975598,
+3724811, -1430761, -12950400, -1764695, -370441, -2382633, -617938, -7005629, -17178258, -7632157,
+12610024, -5368172, 6218039, -9735617, 7215008, 3720516, -129386, -4901095, -21307332, 11781632,
+11433740, 14703821, -10281615, -4355097, 19981798, 17663590, 8159901, 3799972, 11293080, 4158065,
+10147397, -5443334, 8814347, -16843788, -1070521, 4704600, -4386236, 20053740, 781684, 10967736,
+-6537477, -10771778, 23172960, -386010, 9198746, -3061775, 328028, -27249956, -2294050, 5802501,
+-10517301, 12845173, 9738301, 2404108, -5576478, -20755966, -442919, -4216584, 5174362, 6313602,
+1053878, -2522220, 4884452, 222801, 2399813, -1312649, -6279242, -2290291, -5733782, 10051297,
+3082713, -198105, -208843, 1263257, 9279814, -1598802, -2223183, 1439351, -727997, 123480,
+4162897, 2277407, 3741990, -2673617, -350577, -4286378, 834834, 75699, 3918621, 3923990,
+-4342749, 7012608, 7122130, -5553393, 433792, 921271, -805843, -11775190, -15426449, -4479114,
+-3613678, -26416196, -24779814, -6492380, 120259, 18651432, 15171972, 15015743, -5807333, -2414309,
+-3759170, 16033113, 6889128, -6727530, -1190243, -5356361, 11595875, 9000104, -6694244, -9374303,
+-8603893, -17573396, 7339026, 489626, 497679, 3835406, -2628520, 6663642, 24712704, -14068165,
+7450695, 1474248, -9526237, -5455682, -11310260, 4287451, -5027259, -5683316, 12795781, 1570884,
+-4269198, 12919798, -1758252, -5705864, 4495757, 9425843, -5190468, 10129680, 18196166, 17549236,
+-11997454, -168577, 4383551, 9888625, -15193447, -3167539, -4196720, 18927920, 8065949, -2043331,
+-11514807, -12779675, -11361262, 17093432, 14156212, -27087284, -22599044, -17140678, -12072079, 4083440,
+-10888279, 6607271, 1802813, 2683818, -21791054, -6988449, 19696184, 15189689, -6602439, -13987098,
+13605383, 7126425, -1640678, 221191, -1739462, -3320547, 7730941, -6943352, 1689533, 1182727,
+-292595, -5019743, -9154186, 1760937, 7431367, -736587, 812823, -3204583, 7057168, 7721815,
+754841, -1033477, 2600066, -286152, 3118683, 3360275, 4860829, -6545530, -636729, 2382633,
+-8053, -4067334, 1080184, 8182450, 7617662, -2918967, 5835250, -8961986, 2232846, -2901787,
+-2493229, -3599183, -5601711, 2080912, 21873194, 17247514, 10717017, 1695975, -14231911, -7374459,
+-2170569, 5906117, 9100499, -12587475, 3317325, 823560, -10752987, -5064304, 8721468, -6372121,
+6937446, 3011846, 8152922, -10031970, -13959, -22449258, 3396246, -28404766, 11726334, 11602854,
+-11025181, 13095892, 15592342, 495532, 4453881, -18301392, 10836202, 1116692, -7594039, 9978283,
+-2330020, 179315, -161598, 1254667, 19178640, -2128156, -17180, 23549306, -224949, -10824928,
+-31052614, -25511032, 28399934, 17710834, 7005092, 7176891, -11868605, -23907936, -11751031, 3820910,
+-9185324, 18748606, -994285, 2516851, 20205136, -4116726, -6265284, -4512400, -12713640, -21579526,
+-17149268, 48868676, -23711440, -10711648, 14021458, -24707336, -17805860, 17744658, 24852828, 8212515,
+-4511327, 29261612, 14130442, -23488102, -8149164, -13103945, -12800076, 26607322, 1933272, -17674328,
+-12222403, -13749264, 3889630, -2811056, 8115341, -165893, -4076461, -6430640, 608275, 7390565,
+-3948149, 3434363, -3845606, 3699578, 3346317, 10280541, -3978750, -1457605, 8803072, 737124,
+4505958, 4615479, 6287296, 1214939, -3655017, -2022930, -926102, -1432909, 3861713, -1153199,
+-4094715, 8298951, 8553964, -4669703, 2196339, -5322002, 1962263, 2046552, 5288179, -1294933,
+-500901, -2607045, 2531883, 5944772, -20065550, -14812268, -10340134, -18363670, -1665374, 17376364,
+-1271847, 3565360, 8546985, 5670431, -14784888, -7162395, -12220793, -6547141, 15646566, -4793721,
+-1719598, -2157147, 9482751, 9458592, 28247464, 4492536, 20790326, -1225139, 7008313, -11340324,
+-8544837, 7445326, -14430016, -16039018, 513785, 5041755, -8238821, 6572911, -9643812, 2930778,
+-25355876, 14139569, 7905424, 11563663, 1430224, -10313290, -21246666, -7581691, -1905355, 17498770,
+-13347148, -7901129, 4878546, 40029096, -11078331, 40693204, -24980604, 9852118, -9218610, 17853106,
+-7095823, 30873298, -29057602, 44217764, -4195110, 9088151, 19128710, -32804960, 29229936, -35038880,
+23630910, -57089780, 30933428, -29351806, 25990458, -38290172, 33642480, 1125281, 21802864, 9434433,
+-17863306, 15518254, -12794708, 38670276, -17630840, 6358699, -23091354, 6240588, -1558536, 4230006,
+-8266739, 10726681, -10612327, 7595650, -3768297, 2440615, 3243237, 3406446, 4467840, -2644089,
+-6110665, -4960687, -5855651, -13434658, 7741679, 1974611, -9237401, -4304631, -2800856, 5963025,
+-10281078, 9750650, -7878044, 1932198, -4230006, 4734665, 1573569, -107911, 14814953, -13153874,
+8011188, -12709882, 19110456, -3655017, 18670222, -7377680, 5822902, 8425652, 2814277, 2894271,
+-28454, 8929237, -13362180, 14619532, -10191957, 9615358, -2174327, 57445, -3871376, 134755,
+790811, -3788161, 1775432, 3494493, 1713155, -17594334, -15943455, 18514530, 31947040, -26500486,
+40503688, -2368138, -27917, -1571958, 7014219, -12072616, -8883603, -18079128, -4063576, 566936,
+16643, -106837, 15905875, 2715493, 17440252, 17083770, -10897943, 6279779, 36400384, 11890080,
+7777112, 5453535, -31619550, 1599875, -5146445, -3969624, -29001230, -6138582, 16627429, 4694936,
+5512054, 8366060, 21072720, 5495948, -6535330, -2170569, -1844152, 7905424, -14384919, -8843875,
+21758842, 13512504, 10117869, 16832514, 12412455, -7336878, -3703873, -25127706, -11064373, 10215580,
+8033737, 18966576, -13700946, -6812355, -4825396, 13943074, 8132521, 12517682, 5138392, -9912785,
+-9231495, 31367220, -9624485, -30476552, 7015829, 22050898, 15079093, -397821, -2667712, 2727304,
+5019743, 3122441, 27986006, -33738580, -28847684, 3357591, 11348914, -14515916, -7526930, 2464774,
+-11462194, 5424544, -5617817, -1429687, 2981244, -2179696, -7711077, 296890, 6351720, -4094178,
+35970, -11158862, -1981591, -9816148, 7201050, -3112241, 6602439, -3989488, 4116726, 1735704,
+5568962, 8762270, -8895951, -3966402, -2673080, 6912213, -4327717, -8002598, -14717779, -36507,
+-5895380, -2179696, 2209761, 1484985, 394600, 2900177, 4789426, -930397, 14799384, 1847373,
+-1210644, -11454678, 1963874, -2094333, -668941, 2820720, -12044162, -6117107, -12439836, -64132988,
+17700098, -7830799, -4088809, 15709380, -10886131, 16858284, -2290291, -27804008, -5084705, 2681133,
+9736691, 12388296, 2870112, -19710678, 19470160, -7665443, -1789928, -12121471, -5458904, 10428181,
+-2105608, 9300215, 15697032, -3659312, -20308216, 4480725, 22253300, -20755966, 7612830, 17265768,
+-3159485, -13736379, -25604984, -17288318, 18038326, 46244448, -14259828, -18477486, 52114060, -3427384,
+-7518341, 37495600, 21831318, 18620830, 15052250, 6162205, -11040750, 19039590, 17741974, 12212203,
+5653788, -34514896, 21537114, 19051938, -36427764, -21079700, -13093745, -10217190, -10041097, 39726300,
+19835770, -22739168, 21235928, -8427263, -21254182, 9239548, 10805601, -9402757, -9010305, -33350422,
+3745212, 5681168, 24380918, 11668889, 3016141, 20376398, -16203301, 42165304, -44836236, -52312164,
+36922760, -22582938, -1400159, 25888990, -16319265, -11241003, -3228742, -3091840, 3221762, 15881715,
+7803419, -13018046, -796180, 6181532, -1553704, 8822937, -347355, 4876399, 956704, -6910066,
+3709778, 14097156, 9714679, -617938, 1891933, 9427453, -1511829, -1122597, 2396592, 21837762,
+11213623, -3505767, 4780836, -19362786, -840740, 5115306, -8910983, -12001212, 11337103, -5184026,
+-325881, 11656541, -10100689, 4491462, -1716376, -2881923, 14467060, -8159364, -1939178, -16961362,
+-69671888, 21549462, 39443368, -24302536, -4992900, -18877992, 40577240, 27322434, 17179870, -3136400,
+-14079440, 3002719, 16400869, 7693360, -6966437, -1454383, 22404160, -1373853, -8151311, -29822106,
+-14111652, 25334938, 14744086, -15823196, 12822625, -11430519, -3585761, 7669201, 7171522, -6846715,
+4653597, -26128970, 7573101, 35555888, -4443144, -6810208, -34783868, -20844550, 16962436, -27385248,
+-14874545, 6388227, 7047505, -8400419, 22892176, 21654152, -22140556, 8388071, 12425340, 35831300,
+32785096, -5073967, 10761577, -770947, 37474664, 16367047, 15229417, 35561792, -15780247, -23062900,
+-11814381, -29552060, 25062208, 11901891, 12270722, 6600291, 42492796, -27993524, -6509023, 18232136,
+-9970767, 20222316, -920734, 2463164, 9412958, -24426552, -37155224, 4799089, 7217693, 41036264,
+31191664, 865436, -30138860, -4659503, -32923072, -76236, -987843, -9146133, -8393440, 4593468,
+-2793339, -2365453, -8305930, -5319854, -7370164, -4311611, 1201517, -8713415, -8005282, -1222455,
+8294656, 4326106, -10657961, 9868224, -5367636, 18210662, -5595806, -15954193, -5829345, 8134668,
+-4919348, -12069395, 14010183, -2870649, -12643310, -19553376, 3121368, -3031710, 2397666, 4486094,
+-7479149, -6331319, -17144436, -3688840, -4460861, 1351304, 3287798, 6488622, 5608154, -12985834,
+155693, -16462073, -5974300, 1804423, 1871532, 16173236, 27514098, 24012088, 24739548, 31856310,
+-18404472, 25082072, -49142480, -21498996, 18538152, 4370129, 35813048, 16326244, 30533996, -13353053,
+4000225, -26593364, 17969070, 29698088, 27006754, 2680060, 19126026, -47201152, -30757872, 29222958,
+8472897, -29438780, -15236396, 3546032, 43193948, 13305272, -17655000, -22260816, 4347581, -6535330,
+26543972, 28666222, -2896419, -4723927, 5645198, -8206072, 34345244, 9828496, -8222178, 6869264,
+-16437914, -9783399, -77154792, -26273388, 13678397, -12130598, -11602854, -450972, -13973139, -14002667,
+35268660, 23564338, -17862232, 32142462, 66728760, 13649406, 47511464, 6490233, 9604084, 34812856,
+22990960, -18892488, -21387864, -37625524, -23393614, -2564632, -37090264, 13623099, -4522601, -35953172,
+-25775710, -25757456, -32297618, -19670950, -13019120, -17254494, 5005785, 30474404, 37281388, 19574850,
+-3950833, -27354110, -3541201, 949725, 2253247, -13385266, -2441689, -9078487, 7227893, 10402948,
+1096290, 7585449, -317291, -5413270, 8857833, -9761387, 1145683, 8368207, 18219788, 2388539,
+-244276, 12209518, 5147519, 32960652, -8369281, -27060978, -1466195, 18036178, 3162170, -7468948,
+-8287140, -22037478, -20784958, -11877732, -8323110, -3965329, -12511777, -18112950, -19178640, -10628970,
+-1626719, 2464774, 25210384, 18130130, -6870337, 29255706, 52244520, 36021352, 25398826, 15727633,
+9918690, -13072807, -8424578, -13052942, -11729019, -3267933, -941135, 30181272, -3629247, 25592100,
+-17056388, 6598144, -57732412, 15876883, -9024263, 29219736, -7641284, -34653408, 34242700, -13281113,
+4992363, 19360102, 14408542, 31321586, -5119064, 4519916, -6309307, 35752380, -7949985, 6553047,
+24813100, -29217588, 24464134, -7525320, 14855218, 23728620, -6749004, 5115306, 3735011, 2209224,
+-8025684, 10432476, 10101226, -4487704, -14386530, -2855080, -16722992, -5630702, -3402688, 13213467,
+-7179038, -26423712, -17500382, 27329414, 27628450, -26602490, -22326314, 32775432, 38587060, -15256798,
+-4089883, 27726162, 894427, 14143327, 20127290, -47261284, -14130442, -3441880, 45324252, 3929895,
+-3465502, -45048840, 8669928, 17350058, 11312944, 1343788, 11835319, 4383551, 6002217, 56865904,
+-1971927, 2744484, 33413772, -20403242, 22130356, 3923990, 16647830, 10738492, -26125750, -8806830,
+30611306, 20147154, 11599096, -7573101, 10567230, 5119601, -216896, 3833795, 7646653, -4009889,
+13231720, -9100499, -2574833, 13604846, 7997229, 2549600, -29268054, 2352568, 14164265, -11176579,
+4921496, -26076894, -16561931, 17875118, 8621073, 14653892, 12814572, -10539313, -28471338, -8135742,
+9506910, 24390046, 14795089, -3908957, -5615670, -8889509, 20096688, -617938, -4246112, -8507793,
+10571525, 4299799, -4588636, -20786032, -13181792, 12797392, 12812424, 9045201, -14327474, -20063402,
+9780714, 26007638, 12029667, 1598265, -13335873, -3355980, 5909338, -498753, 285615, 1308891,
+-3463354, -6214281, 1961190, 6644315, 1867237, 988379, 3077344, 816581, 714038, 1209570,
+3242164, 362388, -286689, 2496987, 33086818, -55910812, -3810173, -47302624, -43822088, 11062225,
+9314710, 8067023, 1168231, 41771240, 23858544, 53768160, 58893664, -6450504, -28849832, 6162205,
+-7774428, -5360119, 12829067, 5708012, -4628901, -27067420, -29523606, 32097902, 14921790, -3645354,
+5011153, 5221607, 3043521, 5912023, -2935610, -7684770, -43681428, 956704, 25221658, -7373385,
+-33648384, -11078331, 27795954, -51409148, -17586280, 32489280, 19760070, 38800196, -1032940, 2819109,
+-35701380, -36151276, -45436996, 38318624, 54368916, -71502616, -35535484, -3754875, 36395552, -28375776,
+-4532801, 65544960, 26758720, 16615081, 43486008, 31690416, 47730508, -17223892, 47458852, -7234336,
+-37059664, -54662048, -12716861, 20907364, -43190192, -8500814, 9415105, -9162776, -15144592, 9206799,
+8458938, -29800630, 22287122, 10824391, 32342714, -7792145, -31485332, 39361228, 8069170, -35945120,
+307627, -8389145, 15075872, -15934329, -16203838, -8407935, -1557999, -557272, -12254079, -15016279,
+11750494, -15666430, -10737, -15484431, 8617852, 14634564, 2441689, 21898428, 15193447, -22138946,
+-8093329, -32212, -19741818, 3287798, -3220689, 7858180, -5091147, 6922951, 19359028, 13959,
+3866008, -13509283, 20819854, 13104482, -14447733, -4329864, 14904610, 13817447, -1868848, -21288006,
+-2580739, -41360000, 32074278, -2589865, 9890236, 12487617, 12095165, 511638, -13862007, 22782654,
+5800890, 21994528, -4589173, -46287400, -4097399, 13516262, -15140297, -16871168, -10283762, -15542413,
+19022948, -4741107, -16377784, -820876, 17706002, -23523000, 16678432, -8085813, 8931921, -23170812,
+-5680094, 9555228, -1873680, -2029909, 3002182, 13189308, -2186675, -1996623, -16143708, 8231842,
+-4335770, 2740189, 5168457, 1836099, 12199318, -17534204, -13353053, 18623516, 16087874, -22048752,
+10714870, -17794050, 20811800, -17187922, 7938174, 5466420, -14521284, 32621888, 3300682, -36022428,
+16805670, 4506495, -27816892, 15818901, -10120554, 16839494, -24095840, 12571906, -25531970, 11920145,
+18421114, -16409996, 9638443, -17444546, 766115, 729071, 1833414, -11416560, 380641, 8935679,
+-335544, -15733539, 12133819, -9806484, -21201570, 9341554, -9323300, 4791573, 10109816, -7419556,
+-4404489, 1928440, -1237488, 6597607, -3222299, -2217814, 5929739, 7465727, 2630668, -7226283,
+-4227859, 7215008, 4406637, -16530792, 15393700, -2043868, -5521181, 2263448, -1017907, 3739843,
+8340827, -1875827, 15641197, -4424353, -6545530, -7396471, -2844879, 1628330, -7129109, 2089502,
+-2298881, -2838437, 2052994, 2641405, -2851858, 70330, -667867, -3092913, 3356517, 2266132,
+-3375844, 9809168, 20000588, -10193568, -111706192, -201515040, -67036924, -156194000, -154528624, 83120504,
+17218524, 115629112, 261337488, 235485536, 193056096, 235827520, 144277616, 32201518, 45320496, -33617784,
+-175205680, -173144096, -129608688, -168237632, -115404160, -23932632, -77922520, -107443976, -46699180, -13472776,
+-55904904, -26603028, -1181653, -27955942, -49770080, 10402411, 42821896, -14577119, 59461676, 88911192,
+2092723, 17135308, 120197880, 59584620, 636192, 112688128, 92080880, -21654688, 43554728, 105212200,
+-2103460, 8578123, 148440512, 79753784, 33079838, 179580096, 197829952, 97299800, 187543504, 233316576,
+61098056, 31294206, 94934344, -38032472, -113018840, -65927748, -147030688, -260668544, -260181072, -295284896,
+-393307872, -396089408, -380151840, -388895872, -348046976, -298370304, -239091696, -156690608, -79844512, 38310036,
+171604352, 226413488, 276238336, 374259168, 329042272, 294158016, 328540288, 242524448, 113074680, 133015672,
+150251376, 55391656, 72312216, 150549872, 73711304, 13664975, 64360620, 57960584, -33617244, -429497,
+40072044, -60286308, -76906224, 16911434, -15777025, -25393994, 83626768, 71807560, 6933688, 65237868,
+94745368, 16280610, -7783555, 4870493, -98256504, -177180288, -185147456, -236020272, -297016864, -281414848,
+-251886416, -229454336, -204745392, -150393648, -142765792, -155847184, -104554000, -34390876, 8930311, 38075420,
+101494912, 121813328, 137777184, 247362192, 288292160, 266512928, 245753728, 195856416, 123822296, 106148504,
+90205584, 55292336, 39353712, 36453536, 14416595, -3268470, -4954245, -10351945, -21728240, -26823682,
+-22114250, -30316026, -41684268, -39770324, -38636452, -43732968, -44300976, -37630892, -39605504, -37008124,
+-28435368, -27448062, -29050086, -24123220, -19923816, -19261318, -13589813, -7288560, -5177046, -5042292,
+-6925098, -7172596, -7733089, -7992934, -6492917, -5804649, -11095511, -17236778, -22021372, -25350508,
+-27209692, -22492206, -17958332, -17541720, -14499810, -8620536, -6453725, 1058173, 12206297, 18081276,
+19878720, 26056492, 29393146, 28156732, 31595390, 36076652, 32991792, 33191508, 37349036, 36407900,
+34822520, 35712652, 30326228, 21599928, 15795279, 10532334, 2860985, -3503083, -7540889, -13227962,
+-18807662, -20139638, -20585242, -21851720, -20174536, -19476066, -21349746, -20744156, -19586124, -18283138,
+-16120086, -13944685, -11451457, -9069897, -7029788, -4107599, -2130304, -979789, 294742, 1420560,
+1697049, 2155000, 2633889, 2876018, 2913062, 3060701, 3073586, 2917894, 2745558, 2698313,
+2647311, 2597918, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-8483634,
-933082, 5575942, 1903744, 3631932, -5309117, -2911988, 236223, -944893, 1418413, 4414690,
--10631655, -79994, 3491272, 2092723, 3217468, -3083250, -4298189, 4639102, -80531, 1288490,
-2893734, 3837017, 1415729, 795106, 3455838, -518080, -1108638, -2995203, 1607928, -848793,
--487479, -1559610, 1986422, 5048197, 20401, -1059246, 2379412, -3243774, -4839892, -2684355,
--980863, -3148748, 282931, -735513, 2033130, -1968706, 565325, -3937948, -376883, -3240553,
--153008, -1489817, -1273995, 1633698, -1861868, -200790, 2660732, -1409286, 3172907, 3830574,
-281857, 5181341, -2653216, -189515, 2486786, -911070, 1679332, 2347737, 1279363, -2745021,
-1080184, 1236951, 883690, 153008, -2279017, 3016678, -812286, 1433982, -492848, -642635,
-197032, -3169149, -253940, -2465848, -1136019, -123480, -420370, -99858, -236760, -1333587,
-1575716, 166430, 447213, 92879, 883690, -551903, 1115081, -99321, 480499, -199179,
--471910, 605054, 70867, -204011, -3221, 861141, 199716, -173409, 554588, 264677,
--101469, 14155675, -3929895, 1413044, -3022583, -197569, -1232656, 1678259, 1146756, 4889284,
-1537061, 899796, 1923072, -1116155, -9695352, -9273371, -2864743, 1300301, 2904472, -2312840,
-580894, -2978560, -1032940, 206158, 1700807, -4083977, -4457103, -1278827, -239981, 2483028,
-846645, -959388, -3204583, 626528, -1744294, 143881, 2323577, -3246995, 1631551, 2983392,
--2243047, -6004365, -1534377, 2253247, -314069, 1839320, -249645, 1599339, -235149, 1752347,
-377420, -5600638, 1159104, 2363843, -846645, 1618666, 311922, -275952, -1073205, 108448,
--3282966, -245350, -867047, -4152160, -661962, -80531, 3780645, -3641596, 6188511, 7195144,
-5668820, -2384781, -1093606, -1245541, 2772402, -982474, -1494649, 1756642, -3998078, -3624953,
-497142, 3314641, -54224, -1598265, -3570192, -2081985, -2710661, -1400159, -2497524, 1006096,
--1476395, -352187, -1551557, -783832, 136902, 905701, 120796, 930397, -539555, 122943,
-741419, 420907, 595390, 612033, 374199, -611496, 743566, -13307956, -85899, -2052458,
-919660, -460635, -6888591, -1319629, -1452773, 2151242, 3350611, -4615479, 3686693, -1177895,
-2541010, 2545305, -1384053, 5536213, 339839, 240518, -959925, 956704, -1373316, 1016297,
--1542967, 199716, -3616899, 381715, 3994857, -8053, 1685238, 4195110, -4129074, -4365298,
-1823214, -1988570, 3368328, -3412352, -1021665, -7123740, -5478231, -4765266, 2080912, 600222,
-2535105, -2597382, -1833414, -551366, 4470524, -4953171, 2046552, 846109, 374736, 2487860,
--1715839, -2279554, -2964064, 1797981, 974421, -4387309, -4806606, -5618891, -154082, -1222992,
-1833951, -275415, -1047972, 503048, 763430, 2483028, -6682432, 805306, 3821984, 5631239,
-5818070, 4774393, -834297, -3563749, 5216775, 1563905, 1022202, -2625299, 1516124, 1047972,
-171799, -672162, -1526324, -256087, 1793686, -1404991, -2261837, -960462, -965294, 352724,
--176094, -585726, 1566589, 91268, 1996623, -217433, 585726, 1292248, 1261110, 936303,
-719944, -825707, -859530, -320512, 802085, -190052, 783832, -577136, 1359357, 1087164,
--1151051, 30602, 110595, -1949915, 1461363, -7878044, 4720169, -4225174, 5645198, 7381975,
-4563403, -186831, 2117956, 405338, 6027987, -3449396, -3462281, 1653562, -1036698, 2407866,
-4616016, -6847252, 2042257, 5949604, 2753074, -542777, -151934, 628676, -2916283, -149787,
--2760590, -3814468, -1069984, 5630166, -2254321, 2558727, -2090039, -3610994, 6768332, -6096169,
-4510790, 4936528, 897111, 3089692, -4537633, -1322850, -1858110, -1510218, 3102040, 858457,
--4872104, 666794, -562641, 794032, -1130650, 1607392, 1548873, 5610838, -6088653, 2771328,
-2175938, -717260, 2160906, 518080, 3420405, 3180423, 1987496, -2050310, 2704756, 4838281,
--226023, 2786897, -2198487, 5756867, 5961415, 6536940, -2014877, -4779225, 1402844, -768799,
-2272575, 1593970, -127238, -472983, -6768869, -1865090, -1648194, -649077, -1468879, -2122788,
-2188286, 755377, 621697, 2561411, -260919, 2590939, 1612760, 754304, -481573, 342524,
--695785, -1264331, 702227, 76773, 1214402, -523449, 215285, -215822, -988379, 1350230,
--157840, -1399623, 416612, 1067836, 38118, -1784022, 309775, -896038, 2170569, 1532230,
-1554778, -319438, 409633, 1163399, 30602, 533113, 1062468, 531502, 10890426, -1012002,
--3415036, 10357314, -4105452, 4646081, -2501282, -9918690, 1760400, -2860985, 307627, 11866458,
--4604205, -5633387, 452045, 6233608, -10048613, -3737695, 7534447, -2658585, 2433636, 3554622,
--2689723, 3234110, -2102387, -3488587, 700617, -988916, -1220308, -1296543, 4202089, -3374771,
-8181913, 2030983, 179315, -4699231, -1387811, 4992900, -5734855, 1213328, 1993402, -904091,
--7997229, 5466420, 1462436, 1338419, 717260, -1111323, 4138738, -2460480, 5656472, 3206730,
--2186138, -9762461, 4350265, 2608656, -231391, -2770791, 2367601, 6288906, 6407555, -708670,
-3796214, -5758478, 4192962, -1025960, -1970316, 2480881, 4962298, -3482145, 4912906, 869731,
--2054068, -1737314, 4012036, -3352759, 9504226, -4889821, 3945464, -3288334, 871878, -2939368,
-3815542, -3412352, 190052, 2153926, -636192, 405338, -2908767, -1008780, -380105, 6442,
-824097, -1284195, 1671816, -173946, -1122597, 1667521, -3337727, -3404299, -1911261, 47782,
--304943, -688805, 125628, -2324651, 2863670, 173946, -156766, 1977833, -1599339, -338229,
-2270427, 954020, 817654, 3512210, 3137474, 10137733, 1253057, -2680060, -13184476, 3950296,
-7326678, 4347581, 2805151, -1198296, 3679713, 14147085, -1829656, 6488622, 545461, 3590056,
-1304060, 170725, 2756295, -1280974, -6183679, -1789391, -4622996, -1264868, -6480032, 2214056,
-86973, 7384660, 1364189, -3562139, 2369211, -1145683, -1927367, 4702989, 1618666, 3493956,
-1989644, -2152852, -8436390, 431644, 4748087, -414464, -1698660, 2092723, -4504347, -1955821,
--7865696, -9701794, 4886599, 5468567, 4236985, -1440962, -1677185, -7516, -259309, 2759517,
--586800, 3030100, 2690260, -170725, 2776160, -2749853, 678605, -1487132, 1609002, 2013803,
-8942659, -49929, 7300908, -2851322, -7699266, -762894, -1120450, -2963528, 5969468, -555125,
-2415382, 494995, -4416300, -5268851, -1924145, -1166084, 495532, 5283884, 1672890, 508954,
-2179159, 3524558, -1596654, 2644626, -400506, 2243584, 1364726, 526670, 3112778, -396748,
-1785633, 1016834, 883690, -631897, -925029, -1911797, -927713, 1829656, 2807298, -759672,
-169651, -1669132, -317291, 71941, -1696512, 1110786, -3119757, 79457, -235149, -45634,
-1862405, 1999844, -308701, 4710506, -11614128, -382789, 11820287, 16256988, -6761889, 1825898,
-2573222, -5647882, -3304977, 639950, -4722317, -4908611, 11368242, 1593433, -7563438, -1200980,
--4942971, -2804077, 7385197, -2323577, -3301219, 6722698, 4129611, 6793028, -2906082, 1403381,
-6600828, 299037, -4003447, 1822140, -602906, 834834, -8417599, -5710159, 2478196, -587874,
-1966558, -7715909, 3594888, 2834679, 1773285, -13607530, -8007430, -3441880, -1737851, 1945620,
--5991480, -3973382, 1296543, 10446971, 6838125, 3707094, -1889249, -1134945, -3987877, 3025268,
--1185948, -7711077, -5942624, -703301, -162135, 10945724, 6014565, -5405217, -6094559, 7571491,
-1467805, -4548371, 2147, 6796249, 2529736, 213138, -8875550, 9738301, -3467649, 6496675,
-8460549, 8962523, 748398, -3291556, -2730526, 4611185, 5225902, -4597226, 3660923, 5011153,
-3486440, -1512902, -1231045, 721018, 2989834, 2499671, -2686502, -4077535, -3897146, 1915555,
--1895691, -1201517, -2721399, -519154, -1965484, 1001264, -1631551, 1191853, 881542, -297963,
--49392, 2206003, -1652489, -3246459, -643171, 3010772, -1861332, -1600949, -1765232, -1206349,
--271657, -51003, -2076080, -45634, -1528472, -699543, 494995, 2019172, -1380295, -43487,
--491774, -875636, 1792612, 2185065, -3198140, 4770098, -6204081, 6983080, -693100, -1948841,
-3690451, -7144141, 2374580, 3820374, 727997, 2655901, 3300146, -1964948, 7784628, -3731253,
--13418552, -7998303, -1808181, 480499, -2881923, -5755256, -6296959, -4282620, 13082470, -3687230,
--1086090, 1853815, -2779381, 1526324, 10723460, -5224828, 5063767, -3401077, -6976101, 6164889,
-4431870, 2822867, 9605157, 177704, 4497368, -460635, 1102733, -416075, -3221762, 2090039,
--784905, 6956774, 1348083, -4855998, -1289564, -1427003, -380105, -7891466, 3107946, -7780334,
-1833414, 10384694, -6844568, -13062069, 2974802, 1771137, 5925445, -2675228, -169651, 6062347,
--3809099, 2954401, 4446902, 1228361, -2780991, 5986111, 1250909, 7697119, 1593970, -4831302,
--4595078, 4991289, 8399882, 2939905, -125091, -6977711, -1450625, -2263985, 4964982, 1240172,
--9537512, 1466731, 2474438, 670015, 917512, 3664144, -1712081, 1532230, -2633352, 1600949,
-1441498, 1168231, 1902671, 827318, 1245004, 1155883, -2234994, 695785, -708670, -364535,
-2112587, 884763, 1160715, 2407866, -774168, -7633768, 703838, -525060, 529892, -705448,
--497679, 2113661, 1370095, -1238561, -1468879, -10373420, 23951422, -5589363, 10761577, 1015760,
-4493073, 3253438, -62277, -13418552, 11422466, -16729434, 5414343, 4018479, 15081241, -7066295,
-6794102, -10641855, 6949257, -3440269, -11469173, -5490042, 2694555, 2940442, 4182761, 2135136,
-6017249, 3948686, 9124121, -2827699, -7486128, -6736120, 2617246, -78383, -3703336, 6113886,
-2658048, -1250909, 3634079, 7567733, -708133, 1960116, -1141924, 3743064, 2189360, -9683541,
--4225711, -12688407, -2935073, -2152852, -307627, 6094559, 5407901, 809601, -3519726, -67109,
--1924682, -3011309, 1678259, 17858474, 1589138, -388158, 5658083, -424665, 6485401, -2788508,
-63888, -4236449, 17892834, 4227859, -7386270, -8422968, -5654325, 706522, -401043, -11450920,
-621160, 2368138, 767189, 12506408, -3261491, 1844152, -7767985, -2535641, -21078626, -3637301,
-1078574, 810138, -8107288, 2122788, -3906273, 2647847, 1212255, -3823595, -484794, 2775086,
-4264366, 7960185, 2082522, -2887292, -2734821, -6391448, -2498597, 608812, 1056562, -3671660,
--1418950, 3477850, 1220308, -945967, -893890, -2716567, -2558727, -1224603, 718870, -5316096,
--3780108, 1010928, 2122251, 36507, -1384053, 1337346, 4358855, 747861, 341450, -350577,
--1923072, 150861, -6245420, 2656437, 1444183, 12532178, 1087701, 10433549, 6334540, 10231686,
-3433826, -10344966, 10155450, -6618545, 17566416, -11345156, -3352222, -15694347, -3309809, -1661079,
-6986301, -7298223, 10248866, 8265128, -4969277, 586263, 11717745, 16490527, -5248450, 419833,
--2150168, 5171141, 80531, -1925219, 2392834, 4521527, -7856569, 5928129, 1127966, 6796249,
-2594160, 1039382, -13418552, -2166274, 15571404, -1861868, 5211406, 11938398, 3445101, -926102,
--4166655, -5497558, -3293166, 547608, -5118528, -3069828, 9025874, 8346195, 2618856, 13859859,
-9207336, -2900714, -1382443, 1899449, 3212099, -4233764, -11047193, 14413373, 6344741, -2955474,
-13188771, 13793824, 15369540, 6668474, 2318209, -5571110, 388158, -7796977, -6256694, -3979287,
--15417322, 6193880, -1954747, 13151727, -3119757, -10330470, -1946157, 992674, -1533303, -13780403,
-2203855, 3678103, 6276021, 6644852, -4655745, 2138894, -3177739, -8961449, 1764695, 3471407,
--685584, -2649458, -6760279, 7094212, 4010963, -6322729, -7172059, -4019016, 4124242, -730144,
--2033130, 1919314, -3183108, 1990181, -811749, 1227824, 3111167, -4572530, -2122788, 2051921,
--963683, 85362, 9201967, 3012920, 626528, -619549, 2197413, -3052111, -1722282, -292058,
-3024194, -1898912, 13769665, 851477, 2552284, -2020782, 1179505, -1721208, -20752746, 2449742,
--154082, -3700651, -1503239, -10184978, 11777874, 12066711, 13499619, -21789980, 7097434, 4549444,
-598611, 21561810, 8890582, -10673531, -1194538, 21286932, 2564632, 3825742, 4394289, -6211597,
-3607773, 4414153, 13256953, 6730751, -10030896, -16568910, 6343130, 3967476, -8303246, -1542430,
-873489, -10175851, 1229971, 12490302, 5375152, 7014219, 10190884, 16422881, 1620813, 14468134,
-2924873, -5704254, -761820, -8516920, -4399121, 3605088, 4964446, 3769371, 7334731, -10247792,
--4566624, 18429168, -1283122, -3929358, -10204305, 8752606, 7988639, 2763275, 3386582, -119722,
-5157182, -7979513, 13226352, -6600291, -7757248, -6369437, -4306242, 17838610, 4889821, 3731253,
--19302656, -10641318, -15852724, 1178969, -1620813, -1561221, -15033996, -20987894, -521839, 9451612,
--5104569, 2702608, -1299765, -1427003, 5353677, -7304129, -3052111, -3325379, 6449967, 1066763,
--4603131, -66035, -675384, -111132, -2142115, -4397510, 1176821, 7029788, -3338800, -2302103,
--4421132, -2044404, -3071439, -1543504, 3159485, -1032403, 4947266, -1600949, -964757, -2784213,
--1975148, 7388418, -671089, -494995, -3401614, -559420, 4460324, 1196685, -5274757, 1214939,
-511101, 1561758, 19444928, 22871238, -5832566, 6438156, -1647120, -6665253, 1343251, -15292768,
--9436043, -657667, -3059091, 30666066, -13768591, 3940096, -19450296, -2844879, 11912092, -4979478,
--10814191, -11357504, -4132832, 4705137, 6083821, -746251, -946503, -12768401, 3044595, 8964134,
-4549444, 5501853, 1668058, 2016487, -7431367, -2428267, 5036923, 1851668, 20401, 580894,
--8970039, 4027069, -9441412, -1520418, -216896, 2771865, -10487236, -1067836, 5189394, 7565585,
--11954505, -6271726, 21316460, -8163122, -16748225, 14117021, -13620952, -4289062, -6009733, -2436857,
--10450729, -7255811, -2172180, -10544682, -15042586, 24317032, 13438416, 10845329, 7440494, -9426916,
--3661460, -6354404, 6857989, -11425687, 8134131, -6091338, 3514357, 8156680, 5339181, 1664837,
--15493021, 15224585, -18513994, -4852240, -17948132, -7285875, 11863773, -675921, 6743099, 13615583,
-4352950, -1369558, 2677375, -4740034, 290984, -1437203, -5117991, 6156836, -2112050, -2833605,
-7051800, 3738232, -1840930, 493384, 346282, 1131724, -3145527, 3075197, 985158, 1664300,
--3769371, 2602213, -1739999, 6678138, -2964601, 4724464, -1407676, -2311229, 7079717, -4709969,
--2038499, -4212289, 2862596, 7001334, 3236795, -1978369, 3317325, -2803540, 3388192, 4878009,
--5263483, -12696460, -812286, 32272922, -14238353, 14120242, -28556700, 8054138, -18099530, -3262028,
-10325101, -748398, 6669548, 10821170, 8649527, -12360379, 9479530, 2090039, 7042136, -2527052,
-9715753, 9047349, -1824287, 2032056, 5890548, 6666326, -9091909, -2993592, -13319767, -1490891,
-11975979, 493921, -5512591, 1398549, 4502737, 1007707, -4776541, -9405978, 2553358, -6301254,
-6311992, -5942088, 22959284, -1961726, -12315282, -13837848, 3270081, -7515119, 7301445, -15539729,
--12199318, -15789374, 3782793, -13306346, -3110630, -19175956, 13945222, 3022583, 9417253, 5927055,
--20777978, 1784559, -1762010, -7639673, -11566347, -3011309, -9834401, -12354473, -6812355, 5992553,
-8364449, 12202539, -6828461, 1863479, 5309654, -17361332, 8155606, -11836393, -993748, 10081899,
-4312684, 4184372, 1939715, 20517596, -11548630, -4092030, -4333622, 5520107, -17249126, 1563368,
--1310502, 16106, 11360188, 6727530, 5667746, 2201171, -4130685, 874026, -2000381, 8378408,
--3063386, -869731, -4519916, 9476845, 3819300, -3071975, 2645700, -8040179, 5760625, 3076807,
-4552666, 908386, -1548336, 5401458, 9564355, 3416110, -4504884, -6091338, -2470680, 2593624,
--6307697, -1265405, -9642738, -6906308, -3736622, 194347, -5258114, 4116189, -4121558, 9760850,
--7431367, 49929, 60666, -26827440, -7793755, 30001420, 26545046, 14891188, -12911209, 13119514,
-19846508, -13215077, 17529372, -14221174, 16183974, 3770981, -1122597, 5290863, -382789, 8480950,
--12848395, -3700114, -5813775, 6444599, -12181601, -10976326, 17057462, -1707250, -3591130, 1553168,
--16542603, -429497, 26538066, 14423574, 2994666, -316217, 5634997, 25069724, 10702522, 318364,
-4212289, -7021735, -3008625, -6054294, 10776610, -5666673, 7191386, 1292248, 12877923, -15353434,
--340913, -989990, 374736, -4380330, 7180112, 11512660, -2748242, -3368865, 11674258, 1268089,
-1432909, 26418880, 4151086, 286152, -12155294, 5284958, -9045201, 12193412, -14203457, -12646531,
-1910724, -12459700, -13253195, -20292110, 5401995, -6824703, 10416906, -3504693, 5872294, -29604672,
-6003828, -10065793, -17923436, 9250823, 12352863, 6396280, 3814468, 2166811, 5175436, 7815767,
--3833258, -4651450, -5447629, -428960, -5973226, 3652870, 772557, -8608188, -5905043, 4815195,
-2903398, 310311, 8715562, -3127273, -920734, -7023882, -1480690, -27917, 3608310, 2214056,
--5845988, -3646427, -1621350, -7114614, -1336272, -6686191, 2655364, 1719598, 7850127, 5283347,
--559956, -3252364, -6442, -20938, -2244121, -559420, -8209293, -1534914, 3359738, 3570192,
-1038308, -1459215, 7907572, 1242319, 22466438, -34221224, 14556718, 15164456, -24284818, -2356327,
--20787642, -6772627, -18646600, -8365523, 21636434, -7227356, -1429687, -14984604, -2787971, 3599183,
--22258132, -746787, 14457397, -27538256, 1161789, -18764712, -10050760, 501437, 2183991, -12388296,
--9900973, -10362145, -2873870, -8893267, -431644, 4917738, -2570538, 7133404, -13345000, -8490077,
-18178450, -8321499, 9914395, -10616085, 10309532, 9406515, 1739462, 2590402, 9614821, 557272,
-13637058, 17170742, -3061775, 2633889, 25506738, 1612223, 13183939, -810138, -9932112, -19883014,
-3515968, 13984950, -21894670, 393526, -12808129, -6711424, -28436978, 12459700, 19032610, -4832375,
-9255118, -4532264, 20685636, 22811646, -1661616, -22393960, -21689048, 31265214, -24110336, 9188546,
-3765076, 3332895, 23487028, -9836549, 38160784, -541703, -8447664, -9810242, -6684580, 6167036,
--2211908, -2808909, -60130, 9902584, -2265595, -6082748, 8398809, -2877091, 4323422, -7467875,
--4381941, 7270306, 731755, 10821170, -3364033, 4654671, -7719667, -2173254, -10629507, 2320356,
-4588636, 5446019, 1225139, 5591511, 711354, -1606855, 6045167, -9077950, 6248641, -7688529,
--2582886, 4793184, -9352828, -2333778, -5285494, -15939161, -4099546, 1126355, 5979668, -7749195,
--3883187, -6808060, -2047626, 1748589, 12221866, 6307697, 37322728, 42058468, -2474438, -31711354,
-31336618, -34671124, 4898410, 14705968, 3657165, -3711389, -15984258, 18014166, -8049843, -6458020,
--16275242, -9480067, -5062156, -20341502, -11170673, -9096204, -5066451, -3349538, 14143864, -215822,
-12229919, 80531, -5252745, -17825188, -19490024, -4941897, -686121, -276489, -2935610, -7311645,
--8402567, 9320616, 22507776, -12231530, 7773354, -7645579, -7827041, 8908836, -8673150, -14127221,
-31591632, -3508988, 2938295, 1523640, -17593796, -3904125, -3659312, 8910983, -22737020, -10117332,
-24137180, 3843459, -10200547, 13062606, 24533390, -13963476, -17201344, 8925479, -14573361, 200253,
--27315456, 8796630, 23317914, -2420214, 12186970, 7045894, 4122095, 26650272, 8431021, -161598,
-15445239, -2278480, -2078764, 9374303, 10150618, -38756712, 3596498, -16882980, 13748190, -680752,
-586263, 9578314, -2851858, -3748970, -5029407, 5133560, 2041183, -3839701, 5236639, -5593658,
-629750, -2995740, -7401840, 3379603, -3670050, 8309688, 4674535, -193274, 113280, 2241436,
--2143726, 4895726, 2507187, 1491964, 2103460, -1460289, 1915019, -3405372, -6405407, -3621194,
--1599875, 832687, -8354249, 6808060, 4704063, 279173, 2598455, -5733782, 8003135, 899259,
--4607963, 2806761, 3508452, -10183367, -1998770, 944893, -716723, 73014, 1941862, -1726577,
-1583769, -50870128, -35539780, 15261093, -14882599, -14006962, -43226700, -12256226, 9593346, 3906273,
--8265665, -23899882, -1611, 12584791, -587337, 1979980, 13026636, 22894324, -19275276, 51721608,
--12920335, -16755741, -4884989, -2574296, 544387, -20031190, 776315, -3266323, 11171210, -6555731,
-15681999, -6048388, -12768938, 5679021, 6648073, -11366094, 13061532, -38842612, 622233, -2818572,
-15939161, 19210852, -13378823, 17935784, -6455336, 5354214, -8116415, -2510945, -4873178, 14413910,
--1580011, 18877992, 29307784, -24927990, -6751152, 13924821, -16702054, 10605885, -19015968, -10350871,
--9314710, -11008001, -19419694, -9807558, 9491341, 7810935, 15426986, 19934016, 14561013, -23480050,
-3269544, 4701379, 5955509, 5104569, 15495168, -7143068, -15788300, 9503152, -3894999, -12273406,
-2741800, -21239150, -8624831, -18464064, 2000918, 11350525, -6550899, 10919954, 5984500, -348429,
--3795141, -24159, -16440061, -5983427, 5813238, 3073049, 3923990, 1444183, 2147484, 1780264,
-5464272, 1693828, -10959146, -1291175, 1954210, -853088, 3162707, -4867272, -4444218, -10699300,
-3077881, 9980430, -10768557, -7481296, 5915781, -2525441, -10997264, 7672422, -5233955, -4244502,
-6965900, -250719, -1868848, -3187940, -4760971, -6416145, -6824166, -1581085, -5777268, -3347390,
--2870649, 5069672, -118648, 52613, 7655243, -10128070, -34349000, 26819924, -44115220, 31874026,
--4000225, -19435800, -16535624, -18483392, -12383464, -9494025, 1442035, 23518704, -1382980, -18738942,
-20948166, 29549374, -44055092, -11352672, 3572339, -3143379, -6483790, -1686312, -5719286, -7367480,
--12489228, 17068736, -5342940, -11810086, -20740398, -20503638, 21189758, 5960341, -3360275, -1735704,
-452045, -4083440, -5221070, 5136781, -18213346, 10721849, 21630530, 16404628, 10292889, 20825222,
-23976118, -12973486, 5427765, -18924162, 21485038, -11490111, -3073586, 457414, -30365418, 10559714,
-25707526, 4890357, -10030359, -7882876, 33480880, -12749610, -13927505, 9872519, -33406256, -3363496,
--16392816, 1311039, -32666984, 14388677, 6086506, 14116484, -53234508, -45356464, 7848516, -15461345,
--10440529, -6055904, -35555888, 12479027, -20892868, -22535694, 17771500, -14966350, -8883066, 8055748,
--3455301, -6396280, -993211, -1328756, 7806103, -17076790, -8062728, -16451872, 322659, -6878390,
-3710315, -1820529, -13219909, -4905390, 5025649, -246961, 1239635, 4239670, -14520748, 2522220,
--18474264, 9265318, 3087545, -12952548, 4569845, -15524696, -3251827, -5273683, 1442572, 9217000,
--6160594, 9517648, -4516158, 15750182, -6700686, 10142565, -5093831, -1020055, -291521, -1176284,
-3252364, -898185, 171799, -572841, -3259343, 697395, 5581310, -846645, -2182917, -1217086,
-1875827, -1247688, -1905355, -772557, -846109, 1142461, -854162, 19327, -763430, -1169305,
--718333, 1716376, 36507, -1829119, -5906, 554588, -2441689, 2180233, 38620884, -55790016,
-55032488, 15551003, -2736431, 3743064, -41195716, 7463580, 18114024, -7969849, 46769508, -14440217,
-19760070, -17637284, 51616380, -2761127, -7890929, -20927228, -8160438, 6783364, -6106907, 20395726,
-15697569, -6453725, 605590, -21508660, 7058779, 20180440, 20526186, -24129664, 8924942, -5493263,
-21979496, -7078106, 14011794, -14668924, -11592654, -31910534, 1290101, -20560546, -29819958, 40257804,
--19071802, -4565550, -8658117, -10821170, 4763119, 2468533, 13753022, -7827578, 21563420, 1151588,
-39793408, 14639396, 44136696, 37234684, -4619774, 24573118, 18700288, -7695508, 22145388, 30236570,
--14212584, -32146756, 16938814, 10521059, 24705726, 12108050, -3321084, -1307818, -34138548, -4163971,
--10632192, -13104482, 43521976, -6090264, -1306207, 54050016, 36010616, 18814642, 23789286, 11637214,
-766115, 5275831, 31143344, -632434, -9181566, 8453569, 26048440, 11603391, 14508400, 6538551,
-17786534, -2025077, 4560182, 5889474, 12227235, 3405372, 2524367, 1289564, 700617, 9483825,
-15046344, 5680094, 20139102, 465467, 12144557, 11752104, 22815404, -1411971, 15388868, 13264470,
-2324114, 11021423, -55298, 1632088, -4708895, 3932580, 5842230, 2193118, 2691334, -192737,
--3511673, -377420, 4831838, -3968550, 2320893, 9666361, -3028489, 18865644, 1493038, 4214974,
--2047626, -8981313, 4846871, -3552475, 5571110, 16944720, -38510824, 73568496, -10142028, -8298414,
--4857608, 53516904, -33087892, 26810260, -36222144, 34083788, 6721087, -6715718, 671626, 19958176,
--8807367, 18615998, -8889509, -188979, 37422052, 11535745, -9888088, -150861, 9145059, 7390565,
--36792300, 9750113, -13580687, -3306588, -19534586, 18629420, 17402134, 2776696, 8086887, 31463320,
--10743861, -50015432, 11647414, 32804424, -13029320, -32869384, 8407935, 23508504, 7601555, 57445,
--39764956, -18869402, -23694798, 21946746, 8526584, 22611392, -47822852, 3080029, -9124121, -52397528,
--13968844, 7760469, 23374286, 33078764, -17960480, 61746596, 11622718, 1122597, -13113072, -24846922,
--17623324, 11687680, -28993714, 58226872, -19029390, 2452963, 34005940, -22606024, 20586316, -22075058,
--13107166, 48331804, -24866250, 31720480, 28739236, 10680510, 12848395, -41722924, -5455146, -2113124,
--15080167, 19768660, 17296370, 7295539, 4941360, 19252728, -5034239, 7576323, -2789045, 5828808,
--8725226, 6904697, -1917703, 5855114, 3946538, 1387811, -14764487, -2317135, 1437203, -4991826,
--2212982, 10294500, 5102958, 16894790, -8153459, 3665755, -27998354, -22923852, -3891777, -1261647,
-15781320, 12444131, -8368207, -5582921, -22487376, 106837, 6955163, -3347927, -638876, 5436355,
--7516193, 5137855, -16780974, 1144072, -6065568, -6079526, 9997610, -43248172, 24785720, 15886547,
-24789478, -9801652, -6967511, 10084583, 126702, 2922188, 978179, 4961761, 1219234, -6739341,
-32040456, -7391102, -22010634, 9403294, -534723, -19346680, 6806450, 4566087, 13245142, -8883603,
--14656576, 15880642, -12668006, -1658394, -3748433, 13049721, -22337588, 7714835, -13845901, 11417634,
--19676318, 7083475, -6577743, 3470871, 43231532, -29633664, 5660230, 9583683, -26751740, 9793599,
-12369506, -19767050, -4109747, -7523709, 35954780, 3102577, -41536092, 24958592, -33572684, 6186364,
-17412334, -16047608, 19913078, -23995446, -19830400, 27400818, -4628901, 11690364, -40929428, 7747584,
-8868034, -2095944, -6300717, -263067, 16632798, 705448, -54439784, 33066954, -3416647, 12749074,
--14292041, -16569984, 51939576, -1302986, -33201708, 2957622, 16779900, 3913252, -50483044, 1877975,
-46845208, -8492761, -21658446, 5212480, 22664542, -2943126, 83752, -3905199, -2335925, 3324305,
--8189966, -4706211, 15390478, -6597070, -415001, -8967892, 9029632, 13813152, -2457258, -1978369,
-14544370, 4846871, -9984725, -2292439, 6271189, 4280472, -8480413, 4638028, 10010495, -8258149,
-2156611, 2595771, 6455336, -15448460, 998580, 9837086, 3688840, -10734734, 623307, 7759932,
-1279363, -7940321, -5406290, 8698383, 21048024, -6551436, -106514112, -227261216, -90339808, -170964928,
--208346176, 74546672, -296890, 76447200, 289189824, 252627296, 143950128, 276778432, 154566208, 17940078,
-95986616, 59269476, -103961296, -73320464, -21233782, -115290880, -139544032, -46102180, -70414376, -110349520,
--27364848, -4532801, -140662864, -96759704, -14258218, -85299664, -110590040, -31887984, -54039280, -120263376,
--22720914, 12764106, -67253280, -51162724, 51511152, -17904644, -72162968, 15705085, 48518636, -35364760,
-29916594, 106194144, -15094126, -27753542, 105079056, 56315076, -25705916, 174244144, 236658608, 147485952,
-249518816, 373060320, 287053056, 273210912, 399023936, 345994528, 254754912, 312487872, 284094912, 180900800,
-160053568, 86361056, -29238526, -124050464, -222340800, -316038176, -376195104, -471784992, -504119104, -531599904,
--602326720, -601882752, -454811808, -465380640, -423807520, -190611184, -147416160, -143347216, 64187212, 122146184,
-3046206, 127283504, 176451216, 60701848, 84324704, 165521600, 123800288, 72280008, 116941760, 144709792,
-61733176, 90252296, 179455552, 106909256, 70509408, 165423344, 124139584, 50385872, 107630272, 122924648,
-16128676, 63675576, 147852640, 84950160, 101817568, 208285520, 195940704, 206478944, 267224272, 269111904,
-215923040, 204262736, 174369760, 106613976, 76947024, 41098544, -6082748, -41659572, -113491288, -155152480,
--209835456, -279681824, -311481760, -351964512, -409767808, -390216576, -350481152, -309506624, -226271232, -148282128,
--78575352, -28872918, 12364674, 26057030, 31842888, 41044320, 43493524, 36816460, 39323648, 43449500,
-42179264, 47282760, 61100740, 68599216, 73390792, 81787992, 84344568, 85528368, 89899568, 83154328,
-71506376, 53586696, 33440078, 21274584, 5987722, -3935801, -6850473, -10212358, -14584635, -14309757,
--12278238, -6786585, 812286, 8786966, 17835388, 20947092, 22754736, 26548804, 28432684, 28261422,
-29658360, 32751810, 31223876, 28227062, 31469762, 28022514, 20662014, 25450366, 26267484, 17830556,
-17988934, 15598784, 4242354, 1209033, -210453, -12014097, -19874962, -22814866, -28948616, -35170952,
--36511516, -39032124, -44935020, -45916960, -45435924, -48728552, -51187956, -48898204, -47878684, -48764520,
--44014288, -37648072, -34082176, -27918362, -17423072, -9823127, -3357591, 5983963, 14271103, 18410914,
-22398792, 27732604, 29164976, 28369870, 29122562, 28196998, 25244744, 23264764, 21437792, 18597746,
-15851651, 13785234, 11205033, 8602283, 6847789, 5546951, 4046396, 3058017, 2118493, 1206349,
-641561, 303869, 10201, -122943, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+933082, 5575942, 1903744, 3631932, -5309117, -2911988, 236223, -944893, 1418413, 4414690,
+-10631655, -79994, 3491272, 2092723, 3217468, -3083250, -4298189, 4639102, -80531, 1288490,
+2893734, 3837017, 1415729, 795106, 3455838, -518080, -1108638, -2995203, 1607928, -848793,
+-487479, -1559610, 1986422, 5048197, 20401, -1059246, 2379412, -3243774, -4839892, -2684355,
+-980863, -3148748, 282931, -735513, 2033130, -1968706, 565325, -3937948, -376883, -3240553,
+-153008, -1489817, -1273995, 1633698, -1861868, -200790, 2660732, -1409286, 3172907, 3830574,
+281857, 5181341, -2653216, -189515, 2486786, -911070, 1679332, 2347737, 1279363, -2745021,
+1080184, 1236951, 883690, 153008, -2279017, 3016678, -812286, 1433982, -492848, -642635,
+197032, -3169149, -253940, -2465848, -1136019, -123480, -420370, -99858, -236760, -1333587,
+1575716, 166430, 447213, 92879, 883690, -551903, 1115081, -99321, 480499, -199179,
+-471910, 605054, 70867, -204011, -3221, 861141, 199716, -173409, 554588, 264677,
+-101469, 14155675, -3929895, 1413044, -3022583, -197569, -1232656, 1678259, 1146756, 4889284,
+1537061, 899796, 1923072, -1116155, -9695352, -9273371, -2864743, 1300301, 2904472, -2312840,
+580894, -2978560, -1032940, 206158, 1700807, -4083977, -4457103, -1278827, -239981, 2483028,
+846645, -959388, -3204583, 626528, -1744294, 143881, 2323577, -3246995, 1631551, 2983392,
+-2243047, -6004365, -1534377, 2253247, -314069, 1839320, -249645, 1599339, -235149, 1752347,
+377420, -5600638, 1159104, 2363843, -846645, 1618666, 311922, -275952, -1073205, 108448,
+-3282966, -245350, -867047, -4152160, -661962, -80531, 3780645, -3641596, 6188511, 7195144,
+5668820, -2384781, -1093606, -1245541, 2772402, -982474, -1494649, 1756642, -3998078, -3624953,
+497142, 3314641, -54224, -1598265, -3570192, -2081985, -2710661, -1400159, -2497524, 1006096,
+-1476395, -352187, -1551557, -783832, 136902, 905701, 120796, 930397, -539555, 122943,
+741419, 420907, 595390, 612033, 374199, -611496, 743566, -13307956, -85899, -2052458,
+919660, -460635, -6888591, -1319629, -1452773, 2151242, 3350611, -4615479, 3686693, -1177895,
+2541010, 2545305, -1384053, 5536213, 339839, 240518, -959925, 956704, -1373316, 1016297,
+-1542967, 199716, -3616899, 381715, 3994857, -8053, 1685238, 4195110, -4129074, -4365298,
+1823214, -1988570, 3368328, -3412352, -1021665, -7123740, -5478231, -4765266, 2080912, 600222,
+2535105, -2597382, -1833414, -551366, 4470524, -4953171, 2046552, 846109, 374736, 2487860,
+-1715839, -2279554, -2964064, 1797981, 974421, -4387309, -4806606, -5618891, -154082, -1222992,
+1833951, -275415, -1047972, 503048, 763430, 2483028, -6682432, 805306, 3821984, 5631239,
+5818070, 4774393, -834297, -3563749, 5216775, 1563905, 1022202, -2625299, 1516124, 1047972,
+171799, -672162, -1526324, -256087, 1793686, -1404991, -2261837, -960462, -965294, 352724,
+-176094, -585726, 1566589, 91268, 1996623, -217433, 585726, 1292248, 1261110, 936303,
+719944, -825707, -859530, -320512, 802085, -190052, 783832, -577136, 1359357, 1087164,
+-1151051, 30602, 110595, -1949915, 1461363, -7878044, 4720169, -4225174, 5645198, 7381975,
+4563403, -186831, 2117956, 405338, 6027987, -3449396, -3462281, 1653562, -1036698, 2407866,
+4616016, -6847252, 2042257, 5949604, 2753074, -542777, -151934, 628676, -2916283, -149787,
+-2760590, -3814468, -1069984, 5630166, -2254321, 2558727, -2090039, -3610994, 6768332, -6096169,
+4510790, 4936528, 897111, 3089692, -4537633, -1322850, -1858110, -1510218, 3102040, 858457,
+-4872104, 666794, -562641, 794032, -1130650, 1607392, 1548873, 5610838, -6088653, 2771328,
+2175938, -717260, 2160906, 518080, 3420405, 3180423, 1987496, -2050310, 2704756, 4838281,
+-226023, 2786897, -2198487, 5756867, 5961415, 6536940, -2014877, -4779225, 1402844, -768799,
+2272575, 1593970, -127238, -472983, -6768869, -1865090, -1648194, -649077, -1468879, -2122788,
+2188286, 755377, 621697, 2561411, -260919, 2590939, 1612760, 754304, -481573, 342524,
+-695785, -1264331, 702227, 76773, 1214402, -523449, 215285, -215822, -988379, 1350230,
+-157840, -1399623, 416612, 1067836, 38118, -1784022, 309775, -896038, 2170569, 1532230,
+1554778, -319438, 409633, 1163399, 30602, 533113, 1062468, 531502, 10890426, -1012002,
+-3415036, 10357314, -4105452, 4646081, -2501282, -9918690, 1760400, -2860985, 307627, 11866458,
+-4604205, -5633387, 452045, 6233608, -10048613, -3737695, 7534447, -2658585, 2433636, 3554622,
+-2689723, 3234110, -2102387, -3488587, 700617, -988916, -1220308, -1296543, 4202089, -3374771,
+8181913, 2030983, 179315, -4699231, -1387811, 4992900, -5734855, 1213328, 1993402, -904091,
+-7997229, 5466420, 1462436, 1338419, 717260, -1111323, 4138738, -2460480, 5656472, 3206730,
+-2186138, -9762461, 4350265, 2608656, -231391, -2770791, 2367601, 6288906, 6407555, -708670,
+3796214, -5758478, 4192962, -1025960, -1970316, 2480881, 4962298, -3482145, 4912906, 869731,
+-2054068, -1737314, 4012036, -3352759, 9504226, -4889821, 3945464, -3288334, 871878, -2939368,
+3815542, -3412352, 190052, 2153926, -636192, 405338, -2908767, -1008780, -380105, 6442,
+824097, -1284195, 1671816, -173946, -1122597, 1667521, -3337727, -3404299, -1911261, 47782,
+-304943, -688805, 125628, -2324651, 2863670, 173946, -156766, 1977833, -1599339, -338229,
+2270427, 954020, 817654, 3512210, 3137474, 10137733, 1253057, -2680060, -13184476, 3950296,
+7326678, 4347581, 2805151, -1198296, 3679713, 14147085, -1829656, 6488622, 545461, 3590056,
+1304060, 170725, 2756295, -1280974, -6183679, -1789391, -4622996, -1264868, -6480032, 2214056,
+86973, 7384660, 1364189, -3562139, 2369211, -1145683, -1927367, 4702989, 1618666, 3493956,
+1989644, -2152852, -8436390, 431644, 4748087, -414464, -1698660, 2092723, -4504347, -1955821,
+-7865696, -9701794, 4886599, 5468567, 4236985, -1440962, -1677185, -7516, -259309, 2759517,
+-586800, 3030100, 2690260, -170725, 2776160, -2749853, 678605, -1487132, 1609002, 2013803,
+8942659, -49929, 7300908, -2851322, -7699266, -762894, -1120450, -2963528, 5969468, -555125,
+2415382, 494995, -4416300, -5268851, -1924145, -1166084, 495532, 5283884, 1672890, 508954,
+2179159, 3524558, -1596654, 2644626, -400506, 2243584, 1364726, 526670, 3112778, -396748,
+1785633, 1016834, 883690, -631897, -925029, -1911797, -927713, 1829656, 2807298, -759672,
+169651, -1669132, -317291, 71941, -1696512, 1110786, -3119757, 79457, -235149, -45634,
+1862405, 1999844, -308701, 4710506, -11614128, -382789, 11820287, 16256988, -6761889, 1825898,
+2573222, -5647882, -3304977, 639950, -4722317, -4908611, 11368242, 1593433, -7563438, -1200980,
+-4942971, -2804077, 7385197, -2323577, -3301219, 6722698, 4129611, 6793028, -2906082, 1403381,
+6600828, 299037, -4003447, 1822140, -602906, 834834, -8417599, -5710159, 2478196, -587874,
+1966558, -7715909, 3594888, 2834679, 1773285, -13607530, -8007430, -3441880, -1737851, 1945620,
+-5991480, -3973382, 1296543, 10446971, 6838125, 3707094, -1889249, -1134945, -3987877, 3025268,
+-1185948, -7711077, -5942624, -703301, -162135, 10945724, 6014565, -5405217, -6094559, 7571491,
+1467805, -4548371, 2147, 6796249, 2529736, 213138, -8875550, 9738301, -3467649, 6496675,
+8460549, 8962523, 748398, -3291556, -2730526, 4611185, 5225902, -4597226, 3660923, 5011153,
+3486440, -1512902, -1231045, 721018, 2989834, 2499671, -2686502, -4077535, -3897146, 1915555,
+-1895691, -1201517, -2721399, -519154, -1965484, 1001264, -1631551, 1191853, 881542, -297963,
+-49392, 2206003, -1652489, -3246459, -643171, 3010772, -1861332, -1600949, -1765232, -1206349,
+-271657, -51003, -2076080, -45634, -1528472, -699543, 494995, 2019172, -1380295, -43487,
+-491774, -875636, 1792612, 2185065, -3198140, 4770098, -6204081, 6983080, -693100, -1948841,
+3690451, -7144141, 2374580, 3820374, 727997, 2655901, 3300146, -1964948, 7784628, -3731253,
+-13418552, -7998303, -1808181, 480499, -2881923, -5755256, -6296959, -4282620, 13082470, -3687230,
+-1086090, 1853815, -2779381, 1526324, 10723460, -5224828, 5063767, -3401077, -6976101, 6164889,
+4431870, 2822867, 9605157, 177704, 4497368, -460635, 1102733, -416075, -3221762, 2090039,
+-784905, 6956774, 1348083, -4855998, -1289564, -1427003, -380105, -7891466, 3107946, -7780334,
+1833414, 10384694, -6844568, -13062069, 2974802, 1771137, 5925445, -2675228, -169651, 6062347,
+-3809099, 2954401, 4446902, 1228361, -2780991, 5986111, 1250909, 7697119, 1593970, -4831302,
+-4595078, 4991289, 8399882, 2939905, -125091, -6977711, -1450625, -2263985, 4964982, 1240172,
+-9537512, 1466731, 2474438, 670015, 917512, 3664144, -1712081, 1532230, -2633352, 1600949,
+1441498, 1168231, 1902671, 827318, 1245004, 1155883, -2234994, 695785, -708670, -364535,
+2112587, 884763, 1160715, 2407866, -774168, -7633768, 703838, -525060, 529892, -705448,
+-497679, 2113661, 1370095, -1238561, -1468879, -10373420, 23951422, -5589363, 10761577, 1015760,
+4493073, 3253438, -62277, -13418552, 11422466, -16729434, 5414343, 4018479, 15081241, -7066295,
+6794102, -10641855, 6949257, -3440269, -11469173, -5490042, 2694555, 2940442, 4182761, 2135136,
+6017249, 3948686, 9124121, -2827699, -7486128, -6736120, 2617246, -78383, -3703336, 6113886,
+2658048, -1250909, 3634079, 7567733, -708133, 1960116, -1141924, 3743064, 2189360, -9683541,
+-4225711, -12688407, -2935073, -2152852, -307627, 6094559, 5407901, 809601, -3519726, -67109,
+-1924682, -3011309, 1678259, 17858474, 1589138, -388158, 5658083, -424665, 6485401, -2788508,
+63888, -4236449, 17892834, 4227859, -7386270, -8422968, -5654325, 706522, -401043, -11450920,
+621160, 2368138, 767189, 12506408, -3261491, 1844152, -7767985, -2535641, -21078626, -3637301,
+1078574, 810138, -8107288, 2122788, -3906273, 2647847, 1212255, -3823595, -484794, 2775086,
+4264366, 7960185, 2082522, -2887292, -2734821, -6391448, -2498597, 608812, 1056562, -3671660,
+-1418950, 3477850, 1220308, -945967, -893890, -2716567, -2558727, -1224603, 718870, -5316096,
+-3780108, 1010928, 2122251, 36507, -1384053, 1337346, 4358855, 747861, 341450, -350577,
+-1923072, 150861, -6245420, 2656437, 1444183, 12532178, 1087701, 10433549, 6334540, 10231686,
+3433826, -10344966, 10155450, -6618545, 17566416, -11345156, -3352222, -15694347, -3309809, -1661079,
+6986301, -7298223, 10248866, 8265128, -4969277, 586263, 11717745, 16490527, -5248450, 419833,
+-2150168, 5171141, 80531, -1925219, 2392834, 4521527, -7856569, 5928129, 1127966, 6796249,
+2594160, 1039382, -13418552, -2166274, 15571404, -1861868, 5211406, 11938398, 3445101, -926102,
+-4166655, -5497558, -3293166, 547608, -5118528, -3069828, 9025874, 8346195, 2618856, 13859859,
+9207336, -2900714, -1382443, 1899449, 3212099, -4233764, -11047193, 14413373, 6344741, -2955474,
+13188771, 13793824, 15369540, 6668474, 2318209, -5571110, 388158, -7796977, -6256694, -3979287,
+-15417322, 6193880, -1954747, 13151727, -3119757, -10330470, -1946157, 992674, -1533303, -13780403,
+2203855, 3678103, 6276021, 6644852, -4655745, 2138894, -3177739, -8961449, 1764695, 3471407,
+-685584, -2649458, -6760279, 7094212, 4010963, -6322729, -7172059, -4019016, 4124242, -730144,
+-2033130, 1919314, -3183108, 1990181, -811749, 1227824, 3111167, -4572530, -2122788, 2051921,
+-963683, 85362, 9201967, 3012920, 626528, -619549, 2197413, -3052111, -1722282, -292058,
+3024194, -1898912, 13769665, 851477, 2552284, -2020782, 1179505, -1721208, -20752746, 2449742,
+-154082, -3700651, -1503239, -10184978, 11777874, 12066711, 13499619, -21789980, 7097434, 4549444,
+598611, 21561810, 8890582, -10673531, -1194538, 21286932, 2564632, 3825742, 4394289, -6211597,
+3607773, 4414153, 13256953, 6730751, -10030896, -16568910, 6343130, 3967476, -8303246, -1542430,
+873489, -10175851, 1229971, 12490302, 5375152, 7014219, 10190884, 16422881, 1620813, 14468134,
+2924873, -5704254, -761820, -8516920, -4399121, 3605088, 4964446, 3769371, 7334731, -10247792,
+-4566624, 18429168, -1283122, -3929358, -10204305, 8752606, 7988639, 2763275, 3386582, -119722,
+5157182, -7979513, 13226352, -6600291, -7757248, -6369437, -4306242, 17838610, 4889821, 3731253,
+-19302656, -10641318, -15852724, 1178969, -1620813, -1561221, -15033996, -20987894, -521839, 9451612,
+-5104569, 2702608, -1299765, -1427003, 5353677, -7304129, -3052111, -3325379, 6449967, 1066763,
+-4603131, -66035, -675384, -111132, -2142115, -4397510, 1176821, 7029788, -3338800, -2302103,
+-4421132, -2044404, -3071439, -1543504, 3159485, -1032403, 4947266, -1600949, -964757, -2784213,
+-1975148, 7388418, -671089, -494995, -3401614, -559420, 4460324, 1196685, -5274757, 1214939,
+511101, 1561758, 19444928, 22871238, -5832566, 6438156, -1647120, -6665253, 1343251, -15292768,
+-9436043, -657667, -3059091, 30666066, -13768591, 3940096, -19450296, -2844879, 11912092, -4979478,
+-10814191, -11357504, -4132832, 4705137, 6083821, -746251, -946503, -12768401, 3044595, 8964134,
+4549444, 5501853, 1668058, 2016487, -7431367, -2428267, 5036923, 1851668, 20401, 580894,
+-8970039, 4027069, -9441412, -1520418, -216896, 2771865, -10487236, -1067836, 5189394, 7565585,
+-11954505, -6271726, 21316460, -8163122, -16748225, 14117021, -13620952, -4289062, -6009733, -2436857,
+-10450729, -7255811, -2172180, -10544682, -15042586, 24317032, 13438416, 10845329, 7440494, -9426916,
+-3661460, -6354404, 6857989, -11425687, 8134131, -6091338, 3514357, 8156680, 5339181, 1664837,
+-15493021, 15224585, -18513994, -4852240, -17948132, -7285875, 11863773, -675921, 6743099, 13615583,
+4352950, -1369558, 2677375, -4740034, 290984, -1437203, -5117991, 6156836, -2112050, -2833605,
+7051800, 3738232, -1840930, 493384, 346282, 1131724, -3145527, 3075197, 985158, 1664300,
+-3769371, 2602213, -1739999, 6678138, -2964601, 4724464, -1407676, -2311229, 7079717, -4709969,
+-2038499, -4212289, 2862596, 7001334, 3236795, -1978369, 3317325, -2803540, 3388192, 4878009,
+-5263483, -12696460, -812286, 32272922, -14238353, 14120242, -28556700, 8054138, -18099530, -3262028,
+10325101, -748398, 6669548, 10821170, 8649527, -12360379, 9479530, 2090039, 7042136, -2527052,
+9715753, 9047349, -1824287, 2032056, 5890548, 6666326, -9091909, -2993592, -13319767, -1490891,
+11975979, 493921, -5512591, 1398549, 4502737, 1007707, -4776541, -9405978, 2553358, -6301254,
+6311992, -5942088, 22959284, -1961726, -12315282, -13837848, 3270081, -7515119, 7301445, -15539729,
+-12199318, -15789374, 3782793, -13306346, -3110630, -19175956, 13945222, 3022583, 9417253, 5927055,
+-20777978, 1784559, -1762010, -7639673, -11566347, -3011309, -9834401, -12354473, -6812355, 5992553,
+8364449, 12202539, -6828461, 1863479, 5309654, -17361332, 8155606, -11836393, -993748, 10081899,
+4312684, 4184372, 1939715, 20517596, -11548630, -4092030, -4333622, 5520107, -17249126, 1563368,
+-1310502, 16106, 11360188, 6727530, 5667746, 2201171, -4130685, 874026, -2000381, 8378408,
+-3063386, -869731, -4519916, 9476845, 3819300, -3071975, 2645700, -8040179, 5760625, 3076807,
+4552666, 908386, -1548336, 5401458, 9564355, 3416110, -4504884, -6091338, -2470680, 2593624,
+-6307697, -1265405, -9642738, -6906308, -3736622, 194347, -5258114, 4116189, -4121558, 9760850,
+-7431367, 49929, 60666, -26827440, -7793755, 30001420, 26545046, 14891188, -12911209, 13119514,
+19846508, -13215077, 17529372, -14221174, 16183974, 3770981, -1122597, 5290863, -382789, 8480950,
+-12848395, -3700114, -5813775, 6444599, -12181601, -10976326, 17057462, -1707250, -3591130, 1553168,
+-16542603, -429497, 26538066, 14423574, 2994666, -316217, 5634997, 25069724, 10702522, 318364,
+4212289, -7021735, -3008625, -6054294, 10776610, -5666673, 7191386, 1292248, 12877923, -15353434,
+-340913, -989990, 374736, -4380330, 7180112, 11512660, -2748242, -3368865, 11674258, 1268089,
+1432909, 26418880, 4151086, 286152, -12155294, 5284958, -9045201, 12193412, -14203457, -12646531,
+1910724, -12459700, -13253195, -20292110, 5401995, -6824703, 10416906, -3504693, 5872294, -29604672,
+6003828, -10065793, -17923436, 9250823, 12352863, 6396280, 3814468, 2166811, 5175436, 7815767,
+-3833258, -4651450, -5447629, -428960, -5973226, 3652870, 772557, -8608188, -5905043, 4815195,
+2903398, 310311, 8715562, -3127273, -920734, -7023882, -1480690, -27917, 3608310, 2214056,
+-5845988, -3646427, -1621350, -7114614, -1336272, -6686191, 2655364, 1719598, 7850127, 5283347,
+-559956, -3252364, -6442, -20938, -2244121, -559420, -8209293, -1534914, 3359738, 3570192,
+1038308, -1459215, 7907572, 1242319, 22466438, -34221224, 14556718, 15164456, -24284818, -2356327,
+-20787642, -6772627, -18646600, -8365523, 21636434, -7227356, -1429687, -14984604, -2787971, 3599183,
+-22258132, -746787, 14457397, -27538256, 1161789, -18764712, -10050760, 501437, 2183991, -12388296,
+-9900973, -10362145, -2873870, -8893267, -431644, 4917738, -2570538, 7133404, -13345000, -8490077,
+18178450, -8321499, 9914395, -10616085, 10309532, 9406515, 1739462, 2590402, 9614821, 557272,
+13637058, 17170742, -3061775, 2633889, 25506738, 1612223, 13183939, -810138, -9932112, -19883014,
+3515968, 13984950, -21894670, 393526, -12808129, -6711424, -28436978, 12459700, 19032610, -4832375,
+9255118, -4532264, 20685636, 22811646, -1661616, -22393960, -21689048, 31265214, -24110336, 9188546,
+3765076, 3332895, 23487028, -9836549, 38160784, -541703, -8447664, -9810242, -6684580, 6167036,
+-2211908, -2808909, -60130, 9902584, -2265595, -6082748, 8398809, -2877091, 4323422, -7467875,
+-4381941, 7270306, 731755, 10821170, -3364033, 4654671, -7719667, -2173254, -10629507, 2320356,
+4588636, 5446019, 1225139, 5591511, 711354, -1606855, 6045167, -9077950, 6248641, -7688529,
+-2582886, 4793184, -9352828, -2333778, -5285494, -15939161, -4099546, 1126355, 5979668, -7749195,
+-3883187, -6808060, -2047626, 1748589, 12221866, 6307697, 37322728, 42058468, -2474438, -31711354,
+31336618, -34671124, 4898410, 14705968, 3657165, -3711389, -15984258, 18014166, -8049843, -6458020,
+-16275242, -9480067, -5062156, -20341502, -11170673, -9096204, -5066451, -3349538, 14143864, -215822,
+12229919, 80531, -5252745, -17825188, -19490024, -4941897, -686121, -276489, -2935610, -7311645,
+-8402567, 9320616, 22507776, -12231530, 7773354, -7645579, -7827041, 8908836, -8673150, -14127221,
+31591632, -3508988, 2938295, 1523640, -17593796, -3904125, -3659312, 8910983, -22737020, -10117332,
+24137180, 3843459, -10200547, 13062606, 24533390, -13963476, -17201344, 8925479, -14573361, 200253,
+-27315456, 8796630, 23317914, -2420214, 12186970, 7045894, 4122095, 26650272, 8431021, -161598,
+15445239, -2278480, -2078764, 9374303, 10150618, -38756712, 3596498, -16882980, 13748190, -680752,
+586263, 9578314, -2851858, -3748970, -5029407, 5133560, 2041183, -3839701, 5236639, -5593658,
+629750, -2995740, -7401840, 3379603, -3670050, 8309688, 4674535, -193274, 113280, 2241436,
+-2143726, 4895726, 2507187, 1491964, 2103460, -1460289, 1915019, -3405372, -6405407, -3621194,
+-1599875, 832687, -8354249, 6808060, 4704063, 279173, 2598455, -5733782, 8003135, 899259,
+-4607963, 2806761, 3508452, -10183367, -1998770, 944893, -716723, 73014, 1941862, -1726577,
+1583769, -50870128, -35539780, 15261093, -14882599, -14006962, -43226700, -12256226, 9593346, 3906273,
+-8265665, -23899882, -1611, 12584791, -587337, 1979980, 13026636, 22894324, -19275276, 51721608,
+-12920335, -16755741, -4884989, -2574296, 544387, -20031190, 776315, -3266323, 11171210, -6555731,
+15681999, -6048388, -12768938, 5679021, 6648073, -11366094, 13061532, -38842612, 622233, -2818572,
+15939161, 19210852, -13378823, 17935784, -6455336, 5354214, -8116415, -2510945, -4873178, 14413910,
+-1580011, 18877992, 29307784, -24927990, -6751152, 13924821, -16702054, 10605885, -19015968, -10350871,
+-9314710, -11008001, -19419694, -9807558, 9491341, 7810935, 15426986, 19934016, 14561013, -23480050,
+3269544, 4701379, 5955509, 5104569, 15495168, -7143068, -15788300, 9503152, -3894999, -12273406,
+2741800, -21239150, -8624831, -18464064, 2000918, 11350525, -6550899, 10919954, 5984500, -348429,
+-3795141, -24159, -16440061, -5983427, 5813238, 3073049, 3923990, 1444183, 2147484, 1780264,
+5464272, 1693828, -10959146, -1291175, 1954210, -853088, 3162707, -4867272, -4444218, -10699300,
+3077881, 9980430, -10768557, -7481296, 5915781, -2525441, -10997264, 7672422, -5233955, -4244502,
+6965900, -250719, -1868848, -3187940, -4760971, -6416145, -6824166, -1581085, -5777268, -3347390,
+-2870649, 5069672, -118648, 52613, 7655243, -10128070, -34349000, 26819924, -44115220, 31874026,
+-4000225, -19435800, -16535624, -18483392, -12383464, -9494025, 1442035, 23518704, -1382980, -18738942,
+20948166, 29549374, -44055092, -11352672, 3572339, -3143379, -6483790, -1686312, -5719286, -7367480,
+-12489228, 17068736, -5342940, -11810086, -20740398, -20503638, 21189758, 5960341, -3360275, -1735704,
+452045, -4083440, -5221070, 5136781, -18213346, 10721849, 21630530, 16404628, 10292889, 20825222,
+23976118, -12973486, 5427765, -18924162, 21485038, -11490111, -3073586, 457414, -30365418, 10559714,
+25707526, 4890357, -10030359, -7882876, 33480880, -12749610, -13927505, 9872519, -33406256, -3363496,
+-16392816, 1311039, -32666984, 14388677, 6086506, 14116484, -53234508, -45356464, 7848516, -15461345,
+-10440529, -6055904, -35555888, 12479027, -20892868, -22535694, 17771500, -14966350, -8883066, 8055748,
+-3455301, -6396280, -993211, -1328756, 7806103, -17076790, -8062728, -16451872, 322659, -6878390,
+3710315, -1820529, -13219909, -4905390, 5025649, -246961, 1239635, 4239670, -14520748, 2522220,
+-18474264, 9265318, 3087545, -12952548, 4569845, -15524696, -3251827, -5273683, 1442572, 9217000,
+-6160594, 9517648, -4516158, 15750182, -6700686, 10142565, -5093831, -1020055, -291521, -1176284,
+3252364, -898185, 171799, -572841, -3259343, 697395, 5581310, -846645, -2182917, -1217086,
+1875827, -1247688, -1905355, -772557, -846109, 1142461, -854162, 19327, -763430, -1169305,
+-718333, 1716376, 36507, -1829119, -5906, 554588, -2441689, 2180233, 38620884, -55790016,
+55032488, 15551003, -2736431, 3743064, -41195716, 7463580, 18114024, -7969849, 46769508, -14440217,
+19760070, -17637284, 51616380, -2761127, -7890929, -20927228, -8160438, 6783364, -6106907, 20395726,
+15697569, -6453725, 605590, -21508660, 7058779, 20180440, 20526186, -24129664, 8924942, -5493263,
+21979496, -7078106, 14011794, -14668924, -11592654, -31910534, 1290101, -20560546, -29819958, 40257804,
+-19071802, -4565550, -8658117, -10821170, 4763119, 2468533, 13753022, -7827578, 21563420, 1151588,
+39793408, 14639396, 44136696, 37234684, -4619774, 24573118, 18700288, -7695508, 22145388, 30236570,
+-14212584, -32146756, 16938814, 10521059, 24705726, 12108050, -3321084, -1307818, -34138548, -4163971,
+-10632192, -13104482, 43521976, -6090264, -1306207, 54050016, 36010616, 18814642, 23789286, 11637214,
+766115, 5275831, 31143344, -632434, -9181566, 8453569, 26048440, 11603391, 14508400, 6538551,
+17786534, -2025077, 4560182, 5889474, 12227235, 3405372, 2524367, 1289564, 700617, 9483825,
+15046344, 5680094, 20139102, 465467, 12144557, 11752104, 22815404, -1411971, 15388868, 13264470,
+2324114, 11021423, -55298, 1632088, -4708895, 3932580, 5842230, 2193118, 2691334, -192737,
+-3511673, -377420, 4831838, -3968550, 2320893, 9666361, -3028489, 18865644, 1493038, 4214974,
+-2047626, -8981313, 4846871, -3552475, 5571110, 16944720, -38510824, 73568496, -10142028, -8298414,
+-4857608, 53516904, -33087892, 26810260, -36222144, 34083788, 6721087, -6715718, 671626, 19958176,
+-8807367, 18615998, -8889509, -188979, 37422052, 11535745, -9888088, -150861, 9145059, 7390565,
+-36792300, 9750113, -13580687, -3306588, -19534586, 18629420, 17402134, 2776696, 8086887, 31463320,
+-10743861, -50015432, 11647414, 32804424, -13029320, -32869384, 8407935, 23508504, 7601555, 57445,
+-39764956, -18869402, -23694798, 21946746, 8526584, 22611392, -47822852, 3080029, -9124121, -52397528,
+-13968844, 7760469, 23374286, 33078764, -17960480, 61746596, 11622718, 1122597, -13113072, -24846922,
+-17623324, 11687680, -28993714, 58226872, -19029390, 2452963, 34005940, -22606024, 20586316, -22075058,
+-13107166, 48331804, -24866250, 31720480, 28739236, 10680510, 12848395, -41722924, -5455146, -2113124,
+-15080167, 19768660, 17296370, 7295539, 4941360, 19252728, -5034239, 7576323, -2789045, 5828808,
+-8725226, 6904697, -1917703, 5855114, 3946538, 1387811, -14764487, -2317135, 1437203, -4991826,
+-2212982, 10294500, 5102958, 16894790, -8153459, 3665755, -27998354, -22923852, -3891777, -1261647,
+15781320, 12444131, -8368207, -5582921, -22487376, 106837, 6955163, -3347927, -638876, 5436355,
+-7516193, 5137855, -16780974, 1144072, -6065568, -6079526, 9997610, -43248172, 24785720, 15886547,
+24789478, -9801652, -6967511, 10084583, 126702, 2922188, 978179, 4961761, 1219234, -6739341,
+32040456, -7391102, -22010634, 9403294, -534723, -19346680, 6806450, 4566087, 13245142, -8883603,
+-14656576, 15880642, -12668006, -1658394, -3748433, 13049721, -22337588, 7714835, -13845901, 11417634,
+-19676318, 7083475, -6577743, 3470871, 43231532, -29633664, 5660230, 9583683, -26751740, 9793599,
+12369506, -19767050, -4109747, -7523709, 35954780, 3102577, -41536092, 24958592, -33572684, 6186364,
+17412334, -16047608, 19913078, -23995446, -19830400, 27400818, -4628901, 11690364, -40929428, 7747584,
+8868034, -2095944, -6300717, -263067, 16632798, 705448, -54439784, 33066954, -3416647, 12749074,
+-14292041, -16569984, 51939576, -1302986, -33201708, 2957622, 16779900, 3913252, -50483044, 1877975,
+46845208, -8492761, -21658446, 5212480, 22664542, -2943126, 83752, -3905199, -2335925, 3324305,
+-8189966, -4706211, 15390478, -6597070, -415001, -8967892, 9029632, 13813152, -2457258, -1978369,
+14544370, 4846871, -9984725, -2292439, 6271189, 4280472, -8480413, 4638028, 10010495, -8258149,
+2156611, 2595771, 6455336, -15448460, 998580, 9837086, 3688840, -10734734, 623307, 7759932,
+1279363, -7940321, -5406290, 8698383, 21048024, -6551436, -106514112, -227261216, -90339808, -170964928,
+-208346176, 74546672, -296890, 76447200, 289189824, 252627296, 143950128, 276778432, 154566208, 17940078,
+95986616, 59269476, -103961296, -73320464, -21233782, -115290880, -139544032, -46102180, -70414376, -110349520,
+-27364848, -4532801, -140662864, -96759704, -14258218, -85299664, -110590040, -31887984, -54039280, -120263376,
+-22720914, 12764106, -67253280, -51162724, 51511152, -17904644, -72162968, 15705085, 48518636, -35364760,
+29916594, 106194144, -15094126, -27753542, 105079056, 56315076, -25705916, 174244144, 236658608, 147485952,
+249518816, 373060320, 287053056, 273210912, 399023936, 345994528, 254754912, 312487872, 284094912, 180900800,
+160053568, 86361056, -29238526, -124050464, -222340800, -316038176, -376195104, -471784992, -504119104, -531599904,
+-602326720, -601882752, -454811808, -465380640, -423807520, -190611184, -147416160, -143347216, 64187212, 122146184,
+3046206, 127283504, 176451216, 60701848, 84324704, 165521600, 123800288, 72280008, 116941760, 144709792,
+61733176, 90252296, 179455552, 106909256, 70509408, 165423344, 124139584, 50385872, 107630272, 122924648,
+16128676, 63675576, 147852640, 84950160, 101817568, 208285520, 195940704, 206478944, 267224272, 269111904,
+215923040, 204262736, 174369760, 106613976, 76947024, 41098544, -6082748, -41659572, -113491288, -155152480,
+-209835456, -279681824, -311481760, -351964512, -409767808, -390216576, -350481152, -309506624, -226271232, -148282128,
+-78575352, -28872918, 12364674, 26057030, 31842888, 41044320, 43493524, 36816460, 39323648, 43449500,
+42179264, 47282760, 61100740, 68599216, 73390792, 81787992, 84344568, 85528368, 89899568, 83154328,
+71506376, 53586696, 33440078, 21274584, 5987722, -3935801, -6850473, -10212358, -14584635, -14309757,
+-12278238, -6786585, 812286, 8786966, 17835388, 20947092, 22754736, 26548804, 28432684, 28261422,
+29658360, 32751810, 31223876, 28227062, 31469762, 28022514, 20662014, 25450366, 26267484, 17830556,
+17988934, 15598784, 4242354, 1209033, -210453, -12014097, -19874962, -22814866, -28948616, -35170952,
+-36511516, -39032124, -44935020, -45916960, -45435924, -48728552, -51187956, -48898204, -47878684, -48764520,
+-44014288, -37648072, -34082176, -27918362, -17423072, -9823127, -3357591, 5983963, 14271103, 18410914,
+22398792, 27732604, 29164976, 28369870, 29122562, 28196998, 25244744, 23264764, 21437792, 18597746,
+15851651, 13785234, 11205033, 8602283, 6847789, 5546951, 4046396, 3058017, 2118493, 1206349,
+641561, 303869, 10201, -122943, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-7136625,
-232465, 5719286, 3935801, 3961034, 2498597, 1589138, -2220498, 112206, -2531346, 6118181,
-3750580, 1489817, 903554, 906775, -54224, -1899449, 3012383, 4218732, 4048544, 2495913,
--3048353, -4396436, -4825396, -4569845, -466004, 2430415, -4718022, 3980361, -936840, 6936372,
--1136019, 4417911, 72478, -5698348, 1653026, -706522, 4647155, 351114, -528818, -2306398,
--3910568, 384936, 2227478, -4998268, -6865505, 4835597, -3972308, -3639448, -3454228, 2739652,
--2723009, 1184337, -1211718, -306553, -4040491, -1190243, -2746095, -3994320, 1336272, 3158949,
--1151588, -4396973, -855772, -870268, -2214593, -3796214, -286689, -3081639, -3660386, -629750,
-261993, 897648, -1235340, 573378, -671626, -5143760, -1134945, 672699, -1423245, -1294396,
--1617592, 1691680, -1977296, 1740536, -135291, 330176, 660888, -1231582, 1250909, 46708,
--687732, 344134, -335544, -1040456, 179315, 842350, -550830, -434329, -47782, 1338956,
-591095, 219580, 202937, 739271, 476741, 852551, 231928, 1087164, -876173, -349503,
--396748, 13454522, -4745939, -3119757, -4234301, -2921115, 282931, -9060234, 1492501, -4512937,
--8866960, -1923609, 7543573, -5482526, 1447404, -679679, 2512019, 3789235, 4064650, 6578280,
--1445257, -3828963, 1659468, 1559073, -3066607, -478352, -2080375, -1376000, 787053, -3512747,
--2197413, -545461, -4398047, -5173288, 2596845, 3925600, -2377801, -5939940, -1058710, -1425929,
-810675, 4721243, 291521, -2018098, -340376, 6334540, 772557, -3948686, -3786014, 1605781,
-1185948, 5044976, 2869575, -381178, -4882304, 224412, -307090, 4130685, -4494684, -1551557,
-2438468, 4807142, -1388885, 381178, -3697967, -2116882, 2236067, 88584, 457414, 1266479,
--1448478, 1715303, 506806, 2109903, 1314260, 782221, 8427800, 2531346, -361851, -1194538,
--2504503, 3564286, 2231773, 3856344, 2773475, 923955, 1024350, -876710, 761820, -1641214,
--1701881, -1357210, 431107, -659814, -425739, -318364, 1350767, 162135, 1769527, 103616,
--574989, -288300, -180926, -312996, 570694, 350577, 710817, -9887015, -2312840, -4658429,
-4546760, 1162326, 124017, 3239479, -1898912, -7638063, -4020626, 5102958, -262530, 5257040,
--373662, -2947421, 5823439, 2200634, 12746389, -2376728, 5543192, 826781, -5981816, 1531156,
--5078799, 3320010, 1184337, 1319092, -5428302, 2746095, -933082, -1901597, 2250026, 8689256,
-3237869, -26307, -6939057, 6054830, -1255741, 51003, 4282083, -6302328, -1168231, 4388383,
--2573222, -2232309, -7126425, -7773354, -579284, 4749160, 2794950, -3102577, -73014, 3103651,
-3868155, 1561758, -779000, -1475858, -6830072, 3245385, 8524973, 3898757, -2443837, -1173600,
-2705293, 4089346, -309238, -1240709, 1023276, -5603859, -1034550, -3918621, -1835562, -337155,
--2415919, 6516003, 5663452, -1661079, 2845416, 2128693, -1076426, -3804267, 908386, -2938295,
--1118839, 905164, -3821447, -787590, 385473, -1081795, 1090385, 1666447, -2445447, -848256,
--161598, 194884, -1919850, 536334, -889058, 1475321, -1703491, 1627256, -1166621, 414464,
-258772, -801011, 640487, 315143, -624381, 590558, 622233, 677531, -1268626, -563178,
-19864, -1759326, 227633, 1090385, -362925, -7386807, 8371428, -7109245, 7649874, -14496,
--5997385, -14223321, -5565741, -4042101, 2197950, 7542500, 5918465, -1745904, -1087701, -1683090,
--4035659, -1122597, -4542465, 1636383, 1756105, 2894808, 4770098, 2849174, 9068287, 86973,
-1882806, -3113315, -677531, -2088965, 3374234, 1060857, -4123169, -5998996, 316217, -4289599,
-613107, 4179003, -6788196, 4893579, -11467026, -3111704, -8487929, 1530082, -456340, 213138,
--3282429, -4453881, 1672353, 4160213, 3004330, 1153199, -6802692, 2171643, -4674535, -1734630,
--1287417, -9297530, -3580929, 2884071, 3704946, -244276, -6374805, 1190780, 2534031, -1168768,
--1199370, 855772, 5707475, 2100776, -1174137, -1721208, 1079647, -13276818, 1051730, 3470871,
-3271155, 9498320, 1395864, -5194763, 6007586, -1985886, 983548, 2164664, 2053531, -1277753,
--4306242, 332860, 2679523, 2552821, 4096325, -1170916, -1217623, 783295, -669478, -422517,
-730681, -1057099, 469762, 1000191, -456877, -2068564, -1556389, -2684, 345745, 645319,
--937914, 2116345, -970126, -508954, 1406065, 1611687, -355409, -2302639, -1160715, 1026497,
--1117765, -572841, -643171, 587874, 1946694, -269509, 471910, 2009508, 9548786, -2421288,
-137976, 6301791, -3248069, -3030636, 9418326, -7169374, -16976396, -11135776, -6564321, 10206990,
-4340065, 1420560, -9834938, 10416369, -4491462, 2927020, -2697240, 4097936, 5006322, -402116,
-124017, -81604, -1697049, -5369783, -4346507, -1309965, 559420, 4737886, 2670933, 7394860,
-3517041, -3207267, -1727651, 6584722, -4740034, 8077223, -6459094, 1750199, 3529390, 2302639,
--5241471, 7123740, -705448, 7653632, 10050223, 1561758, -4034585, -3878356, 4239670, -4818954,
--10241350, -2614561, 2130841, -6539625, 3727495, 3062312, -2197413, -4055523, -1760937, -1534377,
-1947768, -760746, -5778879, -2163053, 9920838, 8024610, 4279935, -11813844, -11659762, -6323803,
-11139535, 5695127, -903017, 1594507, -5535139, 7095286, -345745, -5446019, -1936493, 773631,
--572304, -2706903, -432718, -2133525, -1185411, 2135673, 3047279, -1755568, -64425, 324807,
-484794, 493384, -3092913, 3569655, -278099, -3441880, -2101850, -430570, -1122060, 116501,
--289910, -380105, -400506, 893353, 139050, -1552094, -140123, 681289, -428423, -2441689,
--1738388, -2272575, -853625, 1757715, 4894115, 7155953, -287226, 2822867, -10989211, -3641059,
-1920387, 3899294, -13653701, -1420560, 6027987, -4042638, -8846559, 5679558, -10306848, -7537668,
--4023311, 1011465, -3675955, -2470143, -234076, 7837779, -6470368, 1815697, -1981054, -2635499,
--5430450, -1431298, -7975218, -2310693, -136365, 1637993, -5545877, -1097364, -3461207, 607738,
--1715839, -2412698, 1585917, 6460168, 1720671, -3226057, 3267396, -4770635, -1105954, 1954747,
--1748589, 3263102, -933619, -268435, -22308598, 1576790, -7665443, 3881577, 3344706, 5038534,
--12232067, -12497281, 1801739, 525597, 3042984, 167504, 6810745, -2635499, 3750043, 4598300,
--2047089, 10612327, -3189550, -6775848, -1356136, -5595806, -91268, -11150809, 272194, 5633387,
-2709588, 8458938, -2216203, -2218351, 3809099, -4358318, 1157494, 2801393, 5519570, -2827162,
-3213173, -4328790, 980326, 243203, 692027, -2100776, -922881, -1550483, 1837172, -1946694,
--3087008, -2684, -1398549, -1937030, -606664, -1505923, -571768, -926639, 1027034, -1510218,
-1020055, -3107946, -224949, -1839857, -690416, 304943, 325881, -398895, -1398549, 186831,
--1002338, 520765, 170188, 8673150, -17505750, 4679367, 744103, 4849555, 7044283, 1266479,
--6788733, -14921253, 1064078, -6041409, 11326903, -4626217, 2341294, 806380, 2425583, 8524973,
--3765613, -281320, -3954591, -2254321, 2242510, -2177549, 8028368, 5947456, 1726577, -1725503,
-126165, 5340255, -535260, 2563559, -104690, -4452271, 3930969, -1167157, -3291019, 4708358,
-8051990, -10201, 3164317, 528818, -5300527, -3357054, 9776956, -4745402, 4693326, 7063611,
--9389335, 6681359, 3627637, 3371549, -4147328, 6850473, 2021856, -1234803, 8853538, 281320,
--68719, -4177393, -2312303, -51540, -3815542, -9477919, -2439005, 9580998, 7307350, 7872138,
--839666, -8409546, 3514357, 10049150, -1838246, -7210713, -316217, -5112622, -1246077, -898185,
-7921531, -813896, 4094715, -1096290, 423054, -5609228, 1525250, -1018981, 2236604, 2088965,
--3757560, 2527052, -5981279, 526670, 2244657, 88584, -1490891, -175557, 1271310, -4263292,
--699543, -4017942, 1304060, -2569464, -1490354, -2493766, -3963718, -2747705, -952409, 504659,
--1152125, -180926, 1370632, 344671, -965831, -836445, -1117228, 2233383, 176631, 750009,
-1605781, 845035, 1162862, -632971, 2088965, -392453, 158914, 731218, -660888, -1184337,
-638876, 1992865, -8324721, -2466385, -13412109, -3933116, -7786239, -9179419, -8703751, -3093987,
-11673721, 12702903, 17509508, 3901978, -6702297, -4131759, 14490146, -71941, -3398930, 11095511,
--1180579, 466541, -17380658, 7834021, 4350802, -11605539, 16038482, -2255932, 7195681, -1968706,
-3753802, 7117835, -2147, 12598213, 4820564, 3560528, -1479079, -4494684, 1192927, 7624104,
--2068564, 2250026, 3563212, 10103911, -491237, -3085397, 6509560, -7688529, -4834523, 3446175,
-11158325, -4975720, -6006512, -1912334, 9193377, 62277, 1286880, -3462281, -1588601, 3282429,
-4842576, 408559, -3987877, -12758737, 1496796, 3731253, 12112345, 3502546, -991601, 9292162,
-16630113, -3448859, 5818070, 3906810, 6883222, -1363115, -5864241, 3409130, -13809930, -3772592,
--2103460, -4496831, -2800856, 7164543, 2469606, -8952859, -5281736, 235149, -2927020, -338766,
--6845104, -227096, -2350958, -1741609, -948651, 667867, -1912871, -493921, -936303, 1446330,
--543850, 1325534, -1875290, -73014, 282931, 605590, 2768107, 67646, -1068910, 2573759,
-3779571, -317828, -2325725, -1480690, -3274376, -2873870, 3926137, -680752, 1057636, 1427540,
-1389422, 1289027, -3014530, 1461363, -1095754, -15311022, 21101174, -10850698, 4680978, -927176,
--7468948, 16051903, 3670050, 1869385, -17257716, 4302484, -6969658, -7929584, 1757715, -7742753,
-8514773, 5101348, -1600412, 1597191, -4338454, -2032056, -6365679, -4137127, -7616588, -11673184,
--2988760, -8209293, -2313914, 4253628, -3409667, -4482335, 8986145, 5602785, 9019431, -7654169,
--997506, -1647657, -8407935, -55835, -4541391, -20694226, 1648731, 234076, -3330747, 6995428,
--897648, 7732015, 6513318, 2323041, 12214350, 10866804, -11020886, -3115999, -64425, -539018,
-3711926, 1342177, 10358924, -2383707, 16638166, -160524, -10063645, -8176544, 1126355, 2893197,
-3275450, 12069932, 3046206, 2917357, 11314554, 15143518, 462783, -9515500, -9044127, -980326,
--3144453, -2306398, 19578608, 1275068, -9135395, 6273874, -8020315, 7364795, 1069984, -1700270,
--2518462, -6174553, 1507534, 1853278, -1066763, 1621350, 3156801, 1709397, 2094333, -1032403,
--1015760, 71941, -1281511, -1077500, 2058900, 736050, 1407139, 1847373, 3357054, 50466,
--1845762, 3143379, 1688996, 483721, 566936, -836445, 311922, -280247, 3335579, 5345087,
--3161633, 2466922, -843961, 2128156, 103079, 325881, 4496831, -408022, 256624, 237297,
-3655554, 2391760, 2619393, 1690070, 273267, 12633109, 865436, 8479339, -9513353, 4095788,
-638340, -805843, 5556614, 13369159, -3835406, -1330366, 12288438, -16514686, -9266929, -7270843,
--18919330, 3588982, -6085969, -2752000, 2130841, -12931610, 13929116, 10499584, 14802605, 6597607,
--9427453, 776852, 463320, 11070815, -2200634, -462246, -571231, -7039452, 419296, -4181688,
-6106907, -7461432, -2925410, -2583960, -3324842, -8720931, 3911105, -12742631, -2075543, -991601,
-7794829, 4600984, 909459, 36507, -2364916, 825707, -30602, 6493454, 1373316, 1813550,
--1208496, -19888382, -9359271, 2199023, 8045548, 9739912, -15665356, 10281615, 2917894, -6199249,
-1329292, 3265249, -3839701, 14930380, -26844, 2791192, -3711389, -21015812, -7349226, -9617506,
--2654827, 300111, -5982353, 2928631, 4279398, -4379256, -1077500, 13378823, 197569, 6779069,
--8438537, 966368, -322123, 7670275, 6651831, 4856535, -2056753, 1528472, 5422396, 3342558,
--446677, 5854041, 5547487, 6221260, 612033, 2332704, 1948305, 959388, -1026497, -867047,
-5217849, 963683, -3084324, 427349, -638876, 2934537, -2310693, 895501, 2604361, -2260764,
-4172024, 1473711, -840203, 317828, -4045859, 2751464, 2578054, -500901, -1094680, -2375654,
--3405909, 868657, 19536196, 3223910, 7976828, -11555073, -10446434, 6215892, 10205916, 1308891,
--3427384, 18749680, 5995238, 200253, -5020817, 4178466, -1306207, -1937030, -555661, -3080029,
-1007707, -6075231, -14630806, 4986994, 1658394, 4622459, 1607392, 8327942, 2641405, -8718784,
--17839146, 586263, 1488206, -1328219, -15592342, -7562901, -2223719, 4523675, -3291556, 1877975,
--13618804, 785442, -2929705, 202937, 1525787, 3934727, -1338419, -12838194, -11766063, -7310571,
-5150740, 3810710, -3027415, -2577517, -20618528, -11640435, -271657, -20141250, 18788334, -19011136,
--5104032, -12272332, 20140712, 6517613, -13935021, 7188702, -1485522, 7663296, -11849815, -3869766,
-673236, 8235600, -11241003, -4452808, -3721589, -11481521, 974421, 7794829, -1298691, -2027761,
-14011794, -21862458, 17447230, -2771328, 3807489, -9807558, 7106561, -1017370, 5694053, -4931696,
-439160, 4483946, 4932233, -1283122, -2247342, 116501, 649077, 665183, -1455994, 5500780,
-5843303, 4097399, 1206886, 4151086, -224949, 5082557, -1680943, 1001801, -54224, -1799591,
--1763084, 426812, -3961034, -4911295, -1284195, -230854, 5221607, -227096, -660351, -1306207,
--3318936, 2531346, -950798, -1748589, -1082869, 2679523, -379568, -5588826, -585189, 2081449,
-652298, -471373, 17247514, 37541236, -4869956, -11497091, -10769630, -9480603, -13683766, 2449205,
--23404350, -43487, -18062484, -8253854, 5755256, 11593727, 6695854, -8029442, -986232, 11039140,
--608812, 12716324, -7342784, -7381975, -6527814, 6088116, -4257387, -5557688, 2142115, -6695854,
--6867116, 8680666, 20217484, 7754027, 8719320, 3978750, -11704323, -2630668, -9475235, -8899709,
--1318555, -1469416, -7421704, -11904039, -24143084, -2092723, -8689256, 3318936, -4363150, 9266929,
-8547522, 4961761, 8939974, 6385543, -816044, 17172890, 24363202, 5978058, -28277528, 5962489,
--4971962, -16444356, 2431488, 8311299, 4151623, 908386, 7916162, -281857, -13414793, 1013075,
-6527814, -13371844, -7008313, -12516072, -23437636, 18725520, 2677912, -1183800, 13054553, 10295037,
-836982, 943819, 12903155, -17185238, -7448547, 2152852, 9549860, 8167417, 12243341, 8942122,
--7045357, -3946001, -1463510, -2545842, -911070, -1522029, -3353833, -4338454, -6941204, -6902013,
--4967130, -2498597, -631360, 3738232, -1789391, -1214939, -7968238, -5310190, 975494, 4489852,
-3068217, 1991791, 1850057, 1455994, -1000191, -3896072, -1872069, -2336462, -2157147, 1053341,
--4317516, 1177358, -3036542, 3640522, -235686, -909459, -2899640, 3061775, -2653753, -622770,
-5776731, -2051384, -24159, 27737972, -20232518, 24002962, -1823751, -2677375, -11956115, -4295504,
--11878269, -10050760, 12894029, -11129871, 6745783, 28760712, 10788421, -4037806, -12728672, -10625749,
-12907987, -10217190, -17468706, -7059853, 1970853, 1890323, -19969450, 1637456, -5947456, 10712185,
--6200859, -79994, 2491618, 30255360, -7107097, -9374303, 14727443, -11375221, 17659294, -10009421,
-12971338, 2378338, -9106404, -8240969, 16422344, -20781200, 16158204, -8822937, 1789928, -4794257,
-8893267, -7029251, -3565360, -45634, -6329171, 30878668, -8666170, 21150030, 8252243, 9832791,
--8590, 8157754, 13550622, 15276662, -3990025, -14329085, 211527, 12661027, 5130876, -1963337,
--18206366, 24766928, -5005248, -15969225, -4371203, -9695352, 7793755, 10839424, 551903, 18002892,
--4676683, 9359807, -20049444, -3305514, -21402896, -6440841, -7758322, -226023, 1308891, -3884261,
-7795366, 2790655, -5697811, -9635222, -7242926, -1858647, -812823, -4690105, -963146, -1480153,
-6181532, -1519882, 360240, -2021319, -9218610, -2530810, -3648038, 1433982, -1456531, -4939750,
--8046085, 3522410, -5411659, 2842195, 3702262, -5391795, -13864691, -3025805, -2103460, -3410741,
--4898410, 884226, -2250563, 1819456, 1711008, -6016176, -750546, -6054294, 5987185, 3963181,
--3282429, 1934883, -5521718, -31294742, -13383655, 19131932, -3827890, -7894150, 22250614, 2094333,
--11609297, 8411693, 12102144, 10248329, 1581622, -19270982, -7966628, 2896419, 2820183, 10010495,
-6634651, 11296838, -9837623, -7798050, 3795677, -2709051, 9285182, -18122614, -3067144, -19600084,
--6328098, 3499325, -2698313, -2498060, 20924544, 4317516, -15507516, -2394444, 1247151, -15888158,
--2145336, 735513, 9528385, 24019604, -8534637, 8001524, -13424457, 1979980, -7895761, -10216117,
-9814000, 20998632, -16671452, 1566053, 18753974, -8513699, -1723356, -7085623, 12279311, 2910377,
--15232638, -238908, -5316096, -5000416, -1506460, -7543573, 11368242, -27006754, 5720897, 2200634,
--11320997, 15038828, 23167054, 16285442, 44119516, 13314399, -11294690, -15727633, -12931073, -7136088,
-16210817, -5907191, 22505092, 1995012, 27401354, -32610076, -20845086, 9729712, -5319854, -3441880,
-13160854, -8940511, -979789, 13888850, 6257231, 10280541, 15335181, 11870216, -2554432, 4795868,
--9319005, 248571, -320512, -6658810, -7144141, 4697084, -9858024, -939524, 15024332, 1269163,
--8891656, -11777874, 2224793, -14775224, -5346698, 15686831, 8264591, -2689187, -3554086, 2932389,
--2861522, -5093295, 1132261, -3751117, -5539971, -1080721, -7631083, 5334887, 4818954, 5101348,
--2779918, -2181307, 3434363, 7946763, 21740050, -51583632, -2232309, 29113972, -39231840, -1967095,
-7495792, -40524628, 17874580, 4730370, 32141924, -3418257, 11240466, 9343701, -35674000, -29577830,
--11625403, -3036542, -17945984, -22035330, -11737072, 19996830, 13974750, 12040404, 1125281, 2084670,
-6199786, 1060857, -25945898, -9838159, -33256468, -10761041, 18320184, 5311264, 12320651, 41408316,
-10645613, 15528454, -828392, 8131984, 36468032, 27359478, 7512972, 17884244, 16426102, 36363340,
-29867740, -40028020, 24780350, -2420751, 23709294, 24107114, 9961103, 43695924, 38613368, -21555368,
-19031000, -459562, 18131204, -32247688, 2972654, 3286724, 1048509, -7433515, 20174536, 21828098,
--21461414, -7388418, -12664248, 7563438, -17812304, -22112102, 20485384, 35009352, 12770548, 36441724,
--10688026, 49579492, 48577152, 13451301, 25412784, -7622493, -12921409, 11287174, 11169062, 5302137,
-3742527, 2818036, 6439767, -7107097, -12690555, -9169755, -23723252, -24917252, -10108206, 11363410,
--433255, 9999758, 1674500, 6023155, 14916421, 18261664, -6082748, 8283382, -1001264, -7795366,
--6431714, -5592585, -15651935, -7326141, 142808, -13616657, -4868346, -12274480, -6795712, 2441152,
-16807818, -8149164, 5986111, 4598836, -2957622, 9163313, 5356898, 6953015, 106300, 12224551,
-7866770, 5226439, -5053566, -7693360, -3312494, -16594143, 23670638, 42750492, -6043556, -58822800,
--18911278, 5793374, -4759361, -9910100, -13050258, 18254, -33720860, -20289962, -28028956, -4667556,
--8314520, 9120900, -20058572, -5878200, 5186710, 9159018, -404801, 10210748, 20093468, 4038343,
-29066728, -18983218, 6874632, 1031329, 27721330, 7175280, -5640903, -28236726, 18502182, -4974109,
-25273736, -21501680, -17140140, -16316044, -8802535, -26015690, -3734474, -4596152, -24546274, 13315472,
-27581744, -13530758, 3943854, -36135708, 34476776, -11020886, -19036368, 15737297, 13668733, -20684026,
-1630477, -12911745, 4367982, -9466645, 43202004, -1646583, -3887482, -10726144, 76389216, 1932735,
--10560251, 32787244, 26161182, -27827630, 21546778, -34085396, -19116900, -35612796, 27041650, -24500104,
-12960064, 18727132, 14722611, -31552978, 39679056, -7161858, -52382496, -59499792, -23643794, -7285875,
--17481054, 13926431, 13480829, 23608898, 3666292, 2117956, -17901424, 17864380, 27713276, 41012644,
-10572062, -11649025, 3767760, 34923988, 5580773, -19132468, -4984310, 37277096, 8293582, -21876952,
--5938866, 18463528, 10361072, 16829830, 10997801, 23670102, -58519, 13066364, 4336843, 16801376,
-7623030, 26637924, 8533563, 16889422, -3558381, 5408975, 964220, -1810866, 6770479, -2183454,
-8865886, 16691854, 2200634, 9775882, 908922, 12661027, -28516436, -6349573, 21442088, 1961190,
--16522202, -78857208, 5629092, 50667728, -30623116, -20429548, 40692668, -29619706, -1924145, -8421357,
-39058968, -67092220, 37499896, 22244710, -18928994, 6990596, 36637680, 26148298, -12825846, 14957760,
-6724845, -10232760, 17234094, -383863, 10451803, 15843597, -6757058, 3817689, -1703491, 7549479,
--9698573, -7829726, -611496, 13594645, -39766564, -19705846, 19796578, -4483409, -26360362, -31166430,
-5409512, 38743288, -16798690, -24778740, 19077170, 28894930, -6303938, 7252589, -5087389, 26912266,
--14601278, 40360880, -5435281, 57445, 22154516, 449361, 5124433, -28702192, 45106284, -23322210,
--28193240, 21381420, -29853780, -9904195, 5090073, 14880451, 41685880, -14804752, 26010322, -5319854,
-13640279, -70565240, -53900764, -9942312, -20978230, 10736344, 9802189, 26743150, -4168803, -5652177,
-32003948, -35020088, -709743, 22332220, 22165790, -8181376, 24692304, 3059627, -5169530, -169651,
--5385352, 23533200, -13018046, -1388885, 23070416, 5231807, -5121212, 9010841, -11319923, 2892661,
--770947, 341450, 9391483, 4292820, -12951474, -3044058, 4155918, -10217727, -14795089, -263067,
-11026255, 19115288, -16067473, 18673980, 6540162, -18797462, 15663746, 17709224, -8819715, -21288006,
-19649476, -9767829, 3744675, 10662256, -10537165, -28176596, 9343701, 7467875, -15385647, -14788109,
-1260573, 10525354, -12160663, 4465692, -5252208, -25849260, -11890617, 19741818, -32350230, 32572496,
--27478664, -34584688, 20266340, -16494285, -11000485, 20691542, -14766634, 17352204, -11517492, 8298951,
-39908300, -34892316, -2122788, -4973572, 33683280, 4910222, 3558381, -31197032, -29256244, -10137733,
--8253317, -4206384, -9154723, 6273337, 2145336, -2831994, 5335423, 7531762, 3830574, 5935645,
--5692979, 15945066, -9681393, 15273977, -27705224, 1394254, -22365506, -29133836, -17003238, 39661340,
--16513076, -16879222, -12429098, 9419400, -7414724, 17869748, 25870198, -26317412, 24329380, 4674535,
--36509368, -18103288, 76741400, 39979704, -57437672, -10503879, 37172404, -18251464, -20699594, 15182173,
--17832704, -39594228, 29127394, 13480292, -53949084, 22772990, 27973658, -31584652, -20682952, 32844688,
--7520488, -24033026, 6001680, 16491064, -38977364, 7845832, 7384660, 11713986, -29653528, -8576513,
--2197950, -9269076, -1661079, 2323577, 3753802, -18040474, 3306588, 27535036, 9818295, 2073396,
-9354439, -115964, -4110821, -14574972, -4236449, -7727183, -10579578, -25217364, 7210177, -14238890,
--3668439, 31750008, -27381490, -17787608, 23516020, -16363825, -5697274, -6876780, 10802916, -17754858,
--6206765, 29306710, 15701864, -13761075, 16642461, 9494562, -11679627, -7271380, 39763344, -31082142,
--24082418, 42306500, 144955, -33065880, 4965519, 21026550, -19434728, -41378252, 28256590, 3843459,
--45949172, 8370355, 13303661, -33428268, -352187, 23130010, -5953899, -14636712, 12332999, 9922985,
--22917408, -1946694, 17573396, -12840342, -16414291, 11803107, 1065689, 47661788, 67630704, -27452358,
-75749800, -6299644, -21081846, -16404628, -26006564, -2481954, 12510703, 44523240, 1290101, 13481365,
--11636677, -39021388, 488553, 1071594, 25258166, 4490389, -29472066, 54006528, -23452132, 9788767,
-24206436, -27467926, -22218940, -39045548, -17157858, 23500450, 29549912, 36381056, -14099841, -90383288,
-19737522, 46577308, 60018948, 51359220, -1014149, -26181046, -32134946, 10459319, 30505542, -20030116,
--10581189, -80161808, -49060336, 42406360, 71888088, 14339822, -2197413, -17960480, -31764504, -7857106,
-19786378, -28388124, 10724533, -4443144, 45371496, -2433099, 17567490, -89640800, -11539503, 602906,
-54550916, 41939280, -1358283, -27210228, -7574175, 64639256, 29239600, -76978160, -94932200, -37516004,
-18836652, 146545360, 15694347, -26080116, 20058034, -39910448, 104294152, 31352724, -83384640, -52591336,
--10557030, 73229728, 10901164, -31287764, -28654948, -26902064, 20842402, 39155608, 19754702, -43373800,
--3711926, -15298674, 35173096, -4421669, 21220896, -8106214, -9138080, -28991030, 10932839, -9308805,
--3148211, 21456582, -34799436, 19651622, -5347235, -5925445, 51003, 15376520, 34307660, 16739635,
-2246268, -7451232, 7201587, -964757, 13888314, 3922379, 15339476, 3149285, 3831648, -18130668,
-8039642, 8494372, 6217502, -585189, 5113159, 2524904, 15222438, 17691508, 14202920, 1298154,
--10040023, -15431817, 4350802, 6841346, -8898635, 7502234, -12367895, 31361314, -36153960, 1126355,
--14556718, 8357470, -22401476, 21018496, 5786395, -11906723, -22601728, -11073499, -4313758, 6595459,
--30842160, 7133941, -15126875, -5842766, -24164560, -11325829, 19512036, -20537996, -7321846, -2785823,
-9509594, 6515466, -8068096, 11129334, -17712982, -1347009, 158914, 9542344, -11627550, 16844324,
-12463995, -12692702, -14840186, -5573257, 23795730, -17102560, 7467338, 17812304, 3882651, -17192754,
--6691022, 7530689, -10923712, 8150774, 708670, 3998615, -16040629, 3461744, -13062069, -452045,
-11981885, 15354508, 11774653, -8693551, 11228118, 1559073, -14281303, -1974611, -128849, 17088602,
--4748623, 3714610, 14642617, -3034395, -19292994, 26964878, -10992432, 16015396, 11537356, 2889439,
-3652870, -11172284, -14000520, 18636400, 2755759, 16418586, 4843113, 9022653, 4446902, -345745,
--915902, -14040785, 1546188, 3970161, 4952098, 5786932, -1816234, 6714108, 1063541, -683974,
-1736241, 1003412, 6699612, -1680406, 5208722, -6356552, -1733556, 166430, 448824, -3499862,
--2158758, 12724914, 7831873, -1961190, -9066676, -9990094, -3856344, -3925600, 11394011, 1333587,
--3560528, -7405598, -4006668, 1260573, -6411850, 13424457, 1113470, -5184026, 2138357, -56371,
--2527588, 3935801, -4012036, 11694122, -10950556, 8098161, -10666014, -29316374, 54380192, 4793184,
-2824478, -22190486, 12495670, -2015413, 14158897, 10750303, 16597364, 1690070, 4114042, -9583683,
-2560874, 15194521, -1659468, 8243116, -1489280, 2517388, 3243237, 6070937, -6659884, 11465415,
--8068633, 913754, -1429150, 3788161, -1191853, 2184528, 8683887, 9542880, -4837207, 4126927,
-1736777, -2319282, -4318590, 12761422, -4123169, 2583423, -3826816, 6604049, -194884, -6333466,
-12823699, -8213588, -2945811, 3295851, -6258304, -3839164, -2049236, 395674, -2490007, 79457,
--1397475, -3493419, 4258460, -8491150, 5116917, 3437585, -3009162, 5405217, -4357781, 6428493,
--3527779, 1132798, 1137630, -4073240, 6316287, -115427, 756451, -2160906, 8557185, -10448045,
-10871636, -7918309, 1182727, 1782948, -443455, 1926293, -1893007, 6264210, -6122476, 319438,
-5345624, -6707129, 4011500, 3635153, -1103807, 714575, 3607773, 1677722, -1864553, 2392297,
-548145, -943819, 384936, 2090039, 128849, -2872260, 627602, 1045825, -1552094, 3106335,
--831613, 2537252, -1820529, 343597, 1945083, -1442572, 208306, 1340030, -2188823, 3418794,
--464930, 1647657, -580357, 3605088, -1436667, 357556, 3329137, -3116536, 3871376, -2391760,
-1606855, -2456185, 3797288, -673773, 10441602, -49767932, -123915712, 19270444, 94399624, 87701088,
-152145456, -38821672, -40707164, -103574744, -141405360, -29154774, 51162724, 54731304, 103092104, 55992952,
-4440460, -26766236, -71937480, -51158428, -8811662, -8011188, 25665650, 23781770, 13775571, 8771397,
-6939057, -3802120, -17655536, -1380832, 20453708, 145492, 4326643, -1182190, -15287936, -11740830,
--26020522, -25537338, 11604465, 10664404, 23705536, 35984848, 27007292, 13160317, 4800700, -38884488,
--27454504, -21288542, -21274046, -23790898, 4998805, 15133317, 26389352, 33639256, 27888834, 6044093,
--3251290, -22356916, -22755810, -13575855, -6558952, 2158221, 3799972, 7518877, 710817, -7324530,
-2521146, -11673184, 6123550, 9859634, 1185948, 19770808, 23997592, 7370701, -4495757, -26379152,
--34640520, -14010183, -6344741, -4088272, 17709224, 13634911, -3538516, 15467788, 16899086, 9376987,
-11696270, -6487548, -12441447, -10103911, -14322642, -11471321, -2054605, -11016054, -4267050, 543850,
-8865886, 12368432, 17988934, 15412490, 14331769, 11264089, -5810017, -13492103, -22464290, -27848568,
--16089484, -12125230, 1646046, 13182328, 19610820, 22568442, 17982492, 16413218, 10714870, -14107357,
--24949466, -22682260, -10966662, -3314104, -928787, 1613834, 9666898, 8343511, 4134443, 1832877,
-7934952, 4354023, 6920803, 1810329, -10374494, -11609833, -7459822, -3148211, 3732864, 2458869,
--3670587, -2245731, 3725884, 1773822, 1695438, 4695473, 7846369, 3408594, 345208, -3952444,
--4258460, -3828427, -4348655, -6011881, -4258997, -450972, 3551938, 4544613, 6331856, 6458557,
-3845606, -332860, -2737505, -3791383, -3174518, -3306051, -2165737, -1748589, -288837, 1487669,
-2672007, 1889249, 1401770, 854699, 1426466, 652298, -390842, -2512019, -2100776, -912144,
-949188, 1065152, 516470, -1080184, -647466, -289910, 143345, 0, 756451, 957778,
-641024, -492311, -200790, 83752, 599685, 225486, -157840, -796180, -796716, -895501,
--185757, 229781, 344671, -29528, 395137, 705985, 1163936, 606664, 3758, -780610,
--862752, -899259, -387084, -205085, 3221, 118648, 578210, 399969, 267362, -62277,
--8590, -107911, -31675, -82678, 110059, 4832, -104153, -298500, -116501, -40265,
-102542, 5369, 39728, -20401, 34360, 12885, 81604, 35433, 49929, 9664,
-9664, -28454, -39192, -47245, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+232465, 5719286, 3935801, 3961034, 2498597, 1589138, -2220498, 112206, -2531346, 6118181,
+3750580, 1489817, 903554, 906775, -54224, -1899449, 3012383, 4218732, 4048544, 2495913,
+-3048353, -4396436, -4825396, -4569845, -466004, 2430415, -4718022, 3980361, -936840, 6936372,
+-1136019, 4417911, 72478, -5698348, 1653026, -706522, 4647155, 351114, -528818, -2306398,
+-3910568, 384936, 2227478, -4998268, -6865505, 4835597, -3972308, -3639448, -3454228, 2739652,
+-2723009, 1184337, -1211718, -306553, -4040491, -1190243, -2746095, -3994320, 1336272, 3158949,
+-1151588, -4396973, -855772, -870268, -2214593, -3796214, -286689, -3081639, -3660386, -629750,
+261993, 897648, -1235340, 573378, -671626, -5143760, -1134945, 672699, -1423245, -1294396,
+-1617592, 1691680, -1977296, 1740536, -135291, 330176, 660888, -1231582, 1250909, 46708,
+-687732, 344134, -335544, -1040456, 179315, 842350, -550830, -434329, -47782, 1338956,
+591095, 219580, 202937, 739271, 476741, 852551, 231928, 1087164, -876173, -349503,
+-396748, 13454522, -4745939, -3119757, -4234301, -2921115, 282931, -9060234, 1492501, -4512937,
+-8866960, -1923609, 7543573, -5482526, 1447404, -679679, 2512019, 3789235, 4064650, 6578280,
+-1445257, -3828963, 1659468, 1559073, -3066607, -478352, -2080375, -1376000, 787053, -3512747,
+-2197413, -545461, -4398047, -5173288, 2596845, 3925600, -2377801, -5939940, -1058710, -1425929,
+810675, 4721243, 291521, -2018098, -340376, 6334540, 772557, -3948686, -3786014, 1605781,
+1185948, 5044976, 2869575, -381178, -4882304, 224412, -307090, 4130685, -4494684, -1551557,
+2438468, 4807142, -1388885, 381178, -3697967, -2116882, 2236067, 88584, 457414, 1266479,
+-1448478, 1715303, 506806, 2109903, 1314260, 782221, 8427800, 2531346, -361851, -1194538,
+-2504503, 3564286, 2231773, 3856344, 2773475, 923955, 1024350, -876710, 761820, -1641214,
+-1701881, -1357210, 431107, -659814, -425739, -318364, 1350767, 162135, 1769527, 103616,
+-574989, -288300, -180926, -312996, 570694, 350577, 710817, -9887015, -2312840, -4658429,
+4546760, 1162326, 124017, 3239479, -1898912, -7638063, -4020626, 5102958, -262530, 5257040,
+-373662, -2947421, 5823439, 2200634, 12746389, -2376728, 5543192, 826781, -5981816, 1531156,
+-5078799, 3320010, 1184337, 1319092, -5428302, 2746095, -933082, -1901597, 2250026, 8689256,
+3237869, -26307, -6939057, 6054830, -1255741, 51003, 4282083, -6302328, -1168231, 4388383,
+-2573222, -2232309, -7126425, -7773354, -579284, 4749160, 2794950, -3102577, -73014, 3103651,
+3868155, 1561758, -779000, -1475858, -6830072, 3245385, 8524973, 3898757, -2443837, -1173600,
+2705293, 4089346, -309238, -1240709, 1023276, -5603859, -1034550, -3918621, -1835562, -337155,
+-2415919, 6516003, 5663452, -1661079, 2845416, 2128693, -1076426, -3804267, 908386, -2938295,
+-1118839, 905164, -3821447, -787590, 385473, -1081795, 1090385, 1666447, -2445447, -848256,
+-161598, 194884, -1919850, 536334, -889058, 1475321, -1703491, 1627256, -1166621, 414464,
+258772, -801011, 640487, 315143, -624381, 590558, 622233, 677531, -1268626, -563178,
+19864, -1759326, 227633, 1090385, -362925, -7386807, 8371428, -7109245, 7649874, -14496,
+-5997385, -14223321, -5565741, -4042101, 2197950, 7542500, 5918465, -1745904, -1087701, -1683090,
+-4035659, -1122597, -4542465, 1636383, 1756105, 2894808, 4770098, 2849174, 9068287, 86973,
+1882806, -3113315, -677531, -2088965, 3374234, 1060857, -4123169, -5998996, 316217, -4289599,
+613107, 4179003, -6788196, 4893579, -11467026, -3111704, -8487929, 1530082, -456340, 213138,
+-3282429, -4453881, 1672353, 4160213, 3004330, 1153199, -6802692, 2171643, -4674535, -1734630,
+-1287417, -9297530, -3580929, 2884071, 3704946, -244276, -6374805, 1190780, 2534031, -1168768,
+-1199370, 855772, 5707475, 2100776, -1174137, -1721208, 1079647, -13276818, 1051730, 3470871,
+3271155, 9498320, 1395864, -5194763, 6007586, -1985886, 983548, 2164664, 2053531, -1277753,
+-4306242, 332860, 2679523, 2552821, 4096325, -1170916, -1217623, 783295, -669478, -422517,
+730681, -1057099, 469762, 1000191, -456877, -2068564, -1556389, -2684, 345745, 645319,
+-937914, 2116345, -970126, -508954, 1406065, 1611687, -355409, -2302639, -1160715, 1026497,
+-1117765, -572841, -643171, 587874, 1946694, -269509, 471910, 2009508, 9548786, -2421288,
+137976, 6301791, -3248069, -3030636, 9418326, -7169374, -16976396, -11135776, -6564321, 10206990,
+4340065, 1420560, -9834938, 10416369, -4491462, 2927020, -2697240, 4097936, 5006322, -402116,
+124017, -81604, -1697049, -5369783, -4346507, -1309965, 559420, 4737886, 2670933, 7394860,
+3517041, -3207267, -1727651, 6584722, -4740034, 8077223, -6459094, 1750199, 3529390, 2302639,
+-5241471, 7123740, -705448, 7653632, 10050223, 1561758, -4034585, -3878356, 4239670, -4818954,
+-10241350, -2614561, 2130841, -6539625, 3727495, 3062312, -2197413, -4055523, -1760937, -1534377,
+1947768, -760746, -5778879, -2163053, 9920838, 8024610, 4279935, -11813844, -11659762, -6323803,
+11139535, 5695127, -903017, 1594507, -5535139, 7095286, -345745, -5446019, -1936493, 773631,
+-572304, -2706903, -432718, -2133525, -1185411, 2135673, 3047279, -1755568, -64425, 324807,
+484794, 493384, -3092913, 3569655, -278099, -3441880, -2101850, -430570, -1122060, 116501,
+-289910, -380105, -400506, 893353, 139050, -1552094, -140123, 681289, -428423, -2441689,
+-1738388, -2272575, -853625, 1757715, 4894115, 7155953, -287226, 2822867, -10989211, -3641059,
+1920387, 3899294, -13653701, -1420560, 6027987, -4042638, -8846559, 5679558, -10306848, -7537668,
+-4023311, 1011465, -3675955, -2470143, -234076, 7837779, -6470368, 1815697, -1981054, -2635499,
+-5430450, -1431298, -7975218, -2310693, -136365, 1637993, -5545877, -1097364, -3461207, 607738,
+-1715839, -2412698, 1585917, 6460168, 1720671, -3226057, 3267396, -4770635, -1105954, 1954747,
+-1748589, 3263102, -933619, -268435, -22308598, 1576790, -7665443, 3881577, 3344706, 5038534,
+-12232067, -12497281, 1801739, 525597, 3042984, 167504, 6810745, -2635499, 3750043, 4598300,
+-2047089, 10612327, -3189550, -6775848, -1356136, -5595806, -91268, -11150809, 272194, 5633387,
+2709588, 8458938, -2216203, -2218351, 3809099, -4358318, 1157494, 2801393, 5519570, -2827162,
+3213173, -4328790, 980326, 243203, 692027, -2100776, -922881, -1550483, 1837172, -1946694,
+-3087008, -2684, -1398549, -1937030, -606664, -1505923, -571768, -926639, 1027034, -1510218,
+1020055, -3107946, -224949, -1839857, -690416, 304943, 325881, -398895, -1398549, 186831,
+-1002338, 520765, 170188, 8673150, -17505750, 4679367, 744103, 4849555, 7044283, 1266479,
+-6788733, -14921253, 1064078, -6041409, 11326903, -4626217, 2341294, 806380, 2425583, 8524973,
+-3765613, -281320, -3954591, -2254321, 2242510, -2177549, 8028368, 5947456, 1726577, -1725503,
+126165, 5340255, -535260, 2563559, -104690, -4452271, 3930969, -1167157, -3291019, 4708358,
+8051990, -10201, 3164317, 528818, -5300527, -3357054, 9776956, -4745402, 4693326, 7063611,
+-9389335, 6681359, 3627637, 3371549, -4147328, 6850473, 2021856, -1234803, 8853538, 281320,
+-68719, -4177393, -2312303, -51540, -3815542, -9477919, -2439005, 9580998, 7307350, 7872138,
+-839666, -8409546, 3514357, 10049150, -1838246, -7210713, -316217, -5112622, -1246077, -898185,
+7921531, -813896, 4094715, -1096290, 423054, -5609228, 1525250, -1018981, 2236604, 2088965,
+-3757560, 2527052, -5981279, 526670, 2244657, 88584, -1490891, -175557, 1271310, -4263292,
+-699543, -4017942, 1304060, -2569464, -1490354, -2493766, -3963718, -2747705, -952409, 504659,
+-1152125, -180926, 1370632, 344671, -965831, -836445, -1117228, 2233383, 176631, 750009,
+1605781, 845035, 1162862, -632971, 2088965, -392453, 158914, 731218, -660888, -1184337,
+638876, 1992865, -8324721, -2466385, -13412109, -3933116, -7786239, -9179419, -8703751, -3093987,
+11673721, 12702903, 17509508, 3901978, -6702297, -4131759, 14490146, -71941, -3398930, 11095511,
+-1180579, 466541, -17380658, 7834021, 4350802, -11605539, 16038482, -2255932, 7195681, -1968706,
+3753802, 7117835, -2147, 12598213, 4820564, 3560528, -1479079, -4494684, 1192927, 7624104,
+-2068564, 2250026, 3563212, 10103911, -491237, -3085397, 6509560, -7688529, -4834523, 3446175,
+11158325, -4975720, -6006512, -1912334, 9193377, 62277, 1286880, -3462281, -1588601, 3282429,
+4842576, 408559, -3987877, -12758737, 1496796, 3731253, 12112345, 3502546, -991601, 9292162,
+16630113, -3448859, 5818070, 3906810, 6883222, -1363115, -5864241, 3409130, -13809930, -3772592,
+-2103460, -4496831, -2800856, 7164543, 2469606, -8952859, -5281736, 235149, -2927020, -338766,
+-6845104, -227096, -2350958, -1741609, -948651, 667867, -1912871, -493921, -936303, 1446330,
+-543850, 1325534, -1875290, -73014, 282931, 605590, 2768107, 67646, -1068910, 2573759,
+3779571, -317828, -2325725, -1480690, -3274376, -2873870, 3926137, -680752, 1057636, 1427540,
+1389422, 1289027, -3014530, 1461363, -1095754, -15311022, 21101174, -10850698, 4680978, -927176,
+-7468948, 16051903, 3670050, 1869385, -17257716, 4302484, -6969658, -7929584, 1757715, -7742753,
+8514773, 5101348, -1600412, 1597191, -4338454, -2032056, -6365679, -4137127, -7616588, -11673184,
+-2988760, -8209293, -2313914, 4253628, -3409667, -4482335, 8986145, 5602785, 9019431, -7654169,
+-997506, -1647657, -8407935, -55835, -4541391, -20694226, 1648731, 234076, -3330747, 6995428,
+-897648, 7732015, 6513318, 2323041, 12214350, 10866804, -11020886, -3115999, -64425, -539018,
+3711926, 1342177, 10358924, -2383707, 16638166, -160524, -10063645, -8176544, 1126355, 2893197,
+3275450, 12069932, 3046206, 2917357, 11314554, 15143518, 462783, -9515500, -9044127, -980326,
+-3144453, -2306398, 19578608, 1275068, -9135395, 6273874, -8020315, 7364795, 1069984, -1700270,
+-2518462, -6174553, 1507534, 1853278, -1066763, 1621350, 3156801, 1709397, 2094333, -1032403,
+-1015760, 71941, -1281511, -1077500, 2058900, 736050, 1407139, 1847373, 3357054, 50466,
+-1845762, 3143379, 1688996, 483721, 566936, -836445, 311922, -280247, 3335579, 5345087,
+-3161633, 2466922, -843961, 2128156, 103079, 325881, 4496831, -408022, 256624, 237297,
+3655554, 2391760, 2619393, 1690070, 273267, 12633109, 865436, 8479339, -9513353, 4095788,
+638340, -805843, 5556614, 13369159, -3835406, -1330366, 12288438, -16514686, -9266929, -7270843,
+-18919330, 3588982, -6085969, -2752000, 2130841, -12931610, 13929116, 10499584, 14802605, 6597607,
+-9427453, 776852, 463320, 11070815, -2200634, -462246, -571231, -7039452, 419296, -4181688,
+6106907, -7461432, -2925410, -2583960, -3324842, -8720931, 3911105, -12742631, -2075543, -991601,
+7794829, 4600984, 909459, 36507, -2364916, 825707, -30602, 6493454, 1373316, 1813550,
+-1208496, -19888382, -9359271, 2199023, 8045548, 9739912, -15665356, 10281615, 2917894, -6199249,
+1329292, 3265249, -3839701, 14930380, -26844, 2791192, -3711389, -21015812, -7349226, -9617506,
+-2654827, 300111, -5982353, 2928631, 4279398, -4379256, -1077500, 13378823, 197569, 6779069,
+-8438537, 966368, -322123, 7670275, 6651831, 4856535, -2056753, 1528472, 5422396, 3342558,
+-446677, 5854041, 5547487, 6221260, 612033, 2332704, 1948305, 959388, -1026497, -867047,
+5217849, 963683, -3084324, 427349, -638876, 2934537, -2310693, 895501, 2604361, -2260764,
+4172024, 1473711, -840203, 317828, -4045859, 2751464, 2578054, -500901, -1094680, -2375654,
+-3405909, 868657, 19536196, 3223910, 7976828, -11555073, -10446434, 6215892, 10205916, 1308891,
+-3427384, 18749680, 5995238, 200253, -5020817, 4178466, -1306207, -1937030, -555661, -3080029,
+1007707, -6075231, -14630806, 4986994, 1658394, 4622459, 1607392, 8327942, 2641405, -8718784,
+-17839146, 586263, 1488206, -1328219, -15592342, -7562901, -2223719, 4523675, -3291556, 1877975,
+-13618804, 785442, -2929705, 202937, 1525787, 3934727, -1338419, -12838194, -11766063, -7310571,
+5150740, 3810710, -3027415, -2577517, -20618528, -11640435, -271657, -20141250, 18788334, -19011136,
+-5104032, -12272332, 20140712, 6517613, -13935021, 7188702, -1485522, 7663296, -11849815, -3869766,
+673236, 8235600, -11241003, -4452808, -3721589, -11481521, 974421, 7794829, -1298691, -2027761,
+14011794, -21862458, 17447230, -2771328, 3807489, -9807558, 7106561, -1017370, 5694053, -4931696,
+439160, 4483946, 4932233, -1283122, -2247342, 116501, 649077, 665183, -1455994, 5500780,
+5843303, 4097399, 1206886, 4151086, -224949, 5082557, -1680943, 1001801, -54224, -1799591,
+-1763084, 426812, -3961034, -4911295, -1284195, -230854, 5221607, -227096, -660351, -1306207,
+-3318936, 2531346, -950798, -1748589, -1082869, 2679523, -379568, -5588826, -585189, 2081449,
+652298, -471373, 17247514, 37541236, -4869956, -11497091, -10769630, -9480603, -13683766, 2449205,
+-23404350, -43487, -18062484, -8253854, 5755256, 11593727, 6695854, -8029442, -986232, 11039140,
+-608812, 12716324, -7342784, -7381975, -6527814, 6088116, -4257387, -5557688, 2142115, -6695854,
+-6867116, 8680666, 20217484, 7754027, 8719320, 3978750, -11704323, -2630668, -9475235, -8899709,
+-1318555, -1469416, -7421704, -11904039, -24143084, -2092723, -8689256, 3318936, -4363150, 9266929,
+8547522, 4961761, 8939974, 6385543, -816044, 17172890, 24363202, 5978058, -28277528, 5962489,
+-4971962, -16444356, 2431488, 8311299, 4151623, 908386, 7916162, -281857, -13414793, 1013075,
+6527814, -13371844, -7008313, -12516072, -23437636, 18725520, 2677912, -1183800, 13054553, 10295037,
+836982, 943819, 12903155, -17185238, -7448547, 2152852, 9549860, 8167417, 12243341, 8942122,
+-7045357, -3946001, -1463510, -2545842, -911070, -1522029, -3353833, -4338454, -6941204, -6902013,
+-4967130, -2498597, -631360, 3738232, -1789391, -1214939, -7968238, -5310190, 975494, 4489852,
+3068217, 1991791, 1850057, 1455994, -1000191, -3896072, -1872069, -2336462, -2157147, 1053341,
+-4317516, 1177358, -3036542, 3640522, -235686, -909459, -2899640, 3061775, -2653753, -622770,
+5776731, -2051384, -24159, 27737972, -20232518, 24002962, -1823751, -2677375, -11956115, -4295504,
+-11878269, -10050760, 12894029, -11129871, 6745783, 28760712, 10788421, -4037806, -12728672, -10625749,
+12907987, -10217190, -17468706, -7059853, 1970853, 1890323, -19969450, 1637456, -5947456, 10712185,
+-6200859, -79994, 2491618, 30255360, -7107097, -9374303, 14727443, -11375221, 17659294, -10009421,
+12971338, 2378338, -9106404, -8240969, 16422344, -20781200, 16158204, -8822937, 1789928, -4794257,
+8893267, -7029251, -3565360, -45634, -6329171, 30878668, -8666170, 21150030, 8252243, 9832791,
+-8590, 8157754, 13550622, 15276662, -3990025, -14329085, 211527, 12661027, 5130876, -1963337,
+-18206366, 24766928, -5005248, -15969225, -4371203, -9695352, 7793755, 10839424, 551903, 18002892,
+-4676683, 9359807, -20049444, -3305514, -21402896, -6440841, -7758322, -226023, 1308891, -3884261,
+7795366, 2790655, -5697811, -9635222, -7242926, -1858647, -812823, -4690105, -963146, -1480153,
+6181532, -1519882, 360240, -2021319, -9218610, -2530810, -3648038, 1433982, -1456531, -4939750,
+-8046085, 3522410, -5411659, 2842195, 3702262, -5391795, -13864691, -3025805, -2103460, -3410741,
+-4898410, 884226, -2250563, 1819456, 1711008, -6016176, -750546, -6054294, 5987185, 3963181,
+-3282429, 1934883, -5521718, -31294742, -13383655, 19131932, -3827890, -7894150, 22250614, 2094333,
+-11609297, 8411693, 12102144, 10248329, 1581622, -19270982, -7966628, 2896419, 2820183, 10010495,
+6634651, 11296838, -9837623, -7798050, 3795677, -2709051, 9285182, -18122614, -3067144, -19600084,
+-6328098, 3499325, -2698313, -2498060, 20924544, 4317516, -15507516, -2394444, 1247151, -15888158,
+-2145336, 735513, 9528385, 24019604, -8534637, 8001524, -13424457, 1979980, -7895761, -10216117,
+9814000, 20998632, -16671452, 1566053, 18753974, -8513699, -1723356, -7085623, 12279311, 2910377,
+-15232638, -238908, -5316096, -5000416, -1506460, -7543573, 11368242, -27006754, 5720897, 2200634,
+-11320997, 15038828, 23167054, 16285442, 44119516, 13314399, -11294690, -15727633, -12931073, -7136088,
+16210817, -5907191, 22505092, 1995012, 27401354, -32610076, -20845086, 9729712, -5319854, -3441880,
+13160854, -8940511, -979789, 13888850, 6257231, 10280541, 15335181, 11870216, -2554432, 4795868,
+-9319005, 248571, -320512, -6658810, -7144141, 4697084, -9858024, -939524, 15024332, 1269163,
+-8891656, -11777874, 2224793, -14775224, -5346698, 15686831, 8264591, -2689187, -3554086, 2932389,
+-2861522, -5093295, 1132261, -3751117, -5539971, -1080721, -7631083, 5334887, 4818954, 5101348,
+-2779918, -2181307, 3434363, 7946763, 21740050, -51583632, -2232309, 29113972, -39231840, -1967095,
+7495792, -40524628, 17874580, 4730370, 32141924, -3418257, 11240466, 9343701, -35674000, -29577830,
+-11625403, -3036542, -17945984, -22035330, -11737072, 19996830, 13974750, 12040404, 1125281, 2084670,
+6199786, 1060857, -25945898, -9838159, -33256468, -10761041, 18320184, 5311264, 12320651, 41408316,
+10645613, 15528454, -828392, 8131984, 36468032, 27359478, 7512972, 17884244, 16426102, 36363340,
+29867740, -40028020, 24780350, -2420751, 23709294, 24107114, 9961103, 43695924, 38613368, -21555368,
+19031000, -459562, 18131204, -32247688, 2972654, 3286724, 1048509, -7433515, 20174536, 21828098,
+-21461414, -7388418, -12664248, 7563438, -17812304, -22112102, 20485384, 35009352, 12770548, 36441724,
+-10688026, 49579492, 48577152, 13451301, 25412784, -7622493, -12921409, 11287174, 11169062, 5302137,
+3742527, 2818036, 6439767, -7107097, -12690555, -9169755, -23723252, -24917252, -10108206, 11363410,
+-433255, 9999758, 1674500, 6023155, 14916421, 18261664, -6082748, 8283382, -1001264, -7795366,
+-6431714, -5592585, -15651935, -7326141, 142808, -13616657, -4868346, -12274480, -6795712, 2441152,
+16807818, -8149164, 5986111, 4598836, -2957622, 9163313, 5356898, 6953015, 106300, 12224551,
+7866770, 5226439, -5053566, -7693360, -3312494, -16594143, 23670638, 42750492, -6043556, -58822800,
+-18911278, 5793374, -4759361, -9910100, -13050258, 18254, -33720860, -20289962, -28028956, -4667556,
+-8314520, 9120900, -20058572, -5878200, 5186710, 9159018, -404801, 10210748, 20093468, 4038343,
+29066728, -18983218, 6874632, 1031329, 27721330, 7175280, -5640903, -28236726, 18502182, -4974109,
+25273736, -21501680, -17140140, -16316044, -8802535, -26015690, -3734474, -4596152, -24546274, 13315472,
+27581744, -13530758, 3943854, -36135708, 34476776, -11020886, -19036368, 15737297, 13668733, -20684026,
+1630477, -12911745, 4367982, -9466645, 43202004, -1646583, -3887482, -10726144, 76389216, 1932735,
+-10560251, 32787244, 26161182, -27827630, 21546778, -34085396, -19116900, -35612796, 27041650, -24500104,
+12960064, 18727132, 14722611, -31552978, 39679056, -7161858, -52382496, -59499792, -23643794, -7285875,
+-17481054, 13926431, 13480829, 23608898, 3666292, 2117956, -17901424, 17864380, 27713276, 41012644,
+10572062, -11649025, 3767760, 34923988, 5580773, -19132468, -4984310, 37277096, 8293582, -21876952,
+-5938866, 18463528, 10361072, 16829830, 10997801, 23670102, -58519, 13066364, 4336843, 16801376,
+7623030, 26637924, 8533563, 16889422, -3558381, 5408975, 964220, -1810866, 6770479, -2183454,
+8865886, 16691854, 2200634, 9775882, 908922, 12661027, -28516436, -6349573, 21442088, 1961190,
+-16522202, -78857208, 5629092, 50667728, -30623116, -20429548, 40692668, -29619706, -1924145, -8421357,
+39058968, -67092220, 37499896, 22244710, -18928994, 6990596, 36637680, 26148298, -12825846, 14957760,
+6724845, -10232760, 17234094, -383863, 10451803, 15843597, -6757058, 3817689, -1703491, 7549479,
+-9698573, -7829726, -611496, 13594645, -39766564, -19705846, 19796578, -4483409, -26360362, -31166430,
+5409512, 38743288, -16798690, -24778740, 19077170, 28894930, -6303938, 7252589, -5087389, 26912266,
+-14601278, 40360880, -5435281, 57445, 22154516, 449361, 5124433, -28702192, 45106284, -23322210,
+-28193240, 21381420, -29853780, -9904195, 5090073, 14880451, 41685880, -14804752, 26010322, -5319854,
+13640279, -70565240, -53900764, -9942312, -20978230, 10736344, 9802189, 26743150, -4168803, -5652177,
+32003948, -35020088, -709743, 22332220, 22165790, -8181376, 24692304, 3059627, -5169530, -169651,
+-5385352, 23533200, -13018046, -1388885, 23070416, 5231807, -5121212, 9010841, -11319923, 2892661,
+-770947, 341450, 9391483, 4292820, -12951474, -3044058, 4155918, -10217727, -14795089, -263067,
+11026255, 19115288, -16067473, 18673980, 6540162, -18797462, 15663746, 17709224, -8819715, -21288006,
+19649476, -9767829, 3744675, 10662256, -10537165, -28176596, 9343701, 7467875, -15385647, -14788109,
+1260573, 10525354, -12160663, 4465692, -5252208, -25849260, -11890617, 19741818, -32350230, 32572496,
+-27478664, -34584688, 20266340, -16494285, -11000485, 20691542, -14766634, 17352204, -11517492, 8298951,
+39908300, -34892316, -2122788, -4973572, 33683280, 4910222, 3558381, -31197032, -29256244, -10137733,
+-8253317, -4206384, -9154723, 6273337, 2145336, -2831994, 5335423, 7531762, 3830574, 5935645,
+-5692979, 15945066, -9681393, 15273977, -27705224, 1394254, -22365506, -29133836, -17003238, 39661340,
+-16513076, -16879222, -12429098, 9419400, -7414724, 17869748, 25870198, -26317412, 24329380, 4674535,
+-36509368, -18103288, 76741400, 39979704, -57437672, -10503879, 37172404, -18251464, -20699594, 15182173,
+-17832704, -39594228, 29127394, 13480292, -53949084, 22772990, 27973658, -31584652, -20682952, 32844688,
+-7520488, -24033026, 6001680, 16491064, -38977364, 7845832, 7384660, 11713986, -29653528, -8576513,
+-2197950, -9269076, -1661079, 2323577, 3753802, -18040474, 3306588, 27535036, 9818295, 2073396,
+9354439, -115964, -4110821, -14574972, -4236449, -7727183, -10579578, -25217364, 7210177, -14238890,
+-3668439, 31750008, -27381490, -17787608, 23516020, -16363825, -5697274, -6876780, 10802916, -17754858,
+-6206765, 29306710, 15701864, -13761075, 16642461, 9494562, -11679627, -7271380, 39763344, -31082142,
+-24082418, 42306500, 144955, -33065880, 4965519, 21026550, -19434728, -41378252, 28256590, 3843459,
+-45949172, 8370355, 13303661, -33428268, -352187, 23130010, -5953899, -14636712, 12332999, 9922985,
+-22917408, -1946694, 17573396, -12840342, -16414291, 11803107, 1065689, 47661788, 67630704, -27452358,
+75749800, -6299644, -21081846, -16404628, -26006564, -2481954, 12510703, 44523240, 1290101, 13481365,
+-11636677, -39021388, 488553, 1071594, 25258166, 4490389, -29472066, 54006528, -23452132, 9788767,
+24206436, -27467926, -22218940, -39045548, -17157858, 23500450, 29549912, 36381056, -14099841, -90383288,
+19737522, 46577308, 60018948, 51359220, -1014149, -26181046, -32134946, 10459319, 30505542, -20030116,
+-10581189, -80161808, -49060336, 42406360, 71888088, 14339822, -2197413, -17960480, -31764504, -7857106,
+19786378, -28388124, 10724533, -4443144, 45371496, -2433099, 17567490, -89640800, -11539503, 602906,
+54550916, 41939280, -1358283, -27210228, -7574175, 64639256, 29239600, -76978160, -94932200, -37516004,
+18836652, 146545360, 15694347, -26080116, 20058034, -39910448, 104294152, 31352724, -83384640, -52591336,
+-10557030, 73229728, 10901164, -31287764, -28654948, -26902064, 20842402, 39155608, 19754702, -43373800,
+-3711926, -15298674, 35173096, -4421669, 21220896, -8106214, -9138080, -28991030, 10932839, -9308805,
+-3148211, 21456582, -34799436, 19651622, -5347235, -5925445, 51003, 15376520, 34307660, 16739635,
+2246268, -7451232, 7201587, -964757, 13888314, 3922379, 15339476, 3149285, 3831648, -18130668,
+8039642, 8494372, 6217502, -585189, 5113159, 2524904, 15222438, 17691508, 14202920, 1298154,
+-10040023, -15431817, 4350802, 6841346, -8898635, 7502234, -12367895, 31361314, -36153960, 1126355,
+-14556718, 8357470, -22401476, 21018496, 5786395, -11906723, -22601728, -11073499, -4313758, 6595459,
+-30842160, 7133941, -15126875, -5842766, -24164560, -11325829, 19512036, -20537996, -7321846, -2785823,
+9509594, 6515466, -8068096, 11129334, -17712982, -1347009, 158914, 9542344, -11627550, 16844324,
+12463995, -12692702, -14840186, -5573257, 23795730, -17102560, 7467338, 17812304, 3882651, -17192754,
+-6691022, 7530689, -10923712, 8150774, 708670, 3998615, -16040629, 3461744, -13062069, -452045,
+11981885, 15354508, 11774653, -8693551, 11228118, 1559073, -14281303, -1974611, -128849, 17088602,
+-4748623, 3714610, 14642617, -3034395, -19292994, 26964878, -10992432, 16015396, 11537356, 2889439,
+3652870, -11172284, -14000520, 18636400, 2755759, 16418586, 4843113, 9022653, 4446902, -345745,
+-915902, -14040785, 1546188, 3970161, 4952098, 5786932, -1816234, 6714108, 1063541, -683974,
+1736241, 1003412, 6699612, -1680406, 5208722, -6356552, -1733556, 166430, 448824, -3499862,
+-2158758, 12724914, 7831873, -1961190, -9066676, -9990094, -3856344, -3925600, 11394011, 1333587,
+-3560528, -7405598, -4006668, 1260573, -6411850, 13424457, 1113470, -5184026, 2138357, -56371,
+-2527588, 3935801, -4012036, 11694122, -10950556, 8098161, -10666014, -29316374, 54380192, 4793184,
+2824478, -22190486, 12495670, -2015413, 14158897, 10750303, 16597364, 1690070, 4114042, -9583683,
+2560874, 15194521, -1659468, 8243116, -1489280, 2517388, 3243237, 6070937, -6659884, 11465415,
+-8068633, 913754, -1429150, 3788161, -1191853, 2184528, 8683887, 9542880, -4837207, 4126927,
+1736777, -2319282, -4318590, 12761422, -4123169, 2583423, -3826816, 6604049, -194884, -6333466,
+12823699, -8213588, -2945811, 3295851, -6258304, -3839164, -2049236, 395674, -2490007, 79457,
+-1397475, -3493419, 4258460, -8491150, 5116917, 3437585, -3009162, 5405217, -4357781, 6428493,
+-3527779, 1132798, 1137630, -4073240, 6316287, -115427, 756451, -2160906, 8557185, -10448045,
+10871636, -7918309, 1182727, 1782948, -443455, 1926293, -1893007, 6264210, -6122476, 319438,
+5345624, -6707129, 4011500, 3635153, -1103807, 714575, 3607773, 1677722, -1864553, 2392297,
+548145, -943819, 384936, 2090039, 128849, -2872260, 627602, 1045825, -1552094, 3106335,
+-831613, 2537252, -1820529, 343597, 1945083, -1442572, 208306, 1340030, -2188823, 3418794,
+-464930, 1647657, -580357, 3605088, -1436667, 357556, 3329137, -3116536, 3871376, -2391760,
+1606855, -2456185, 3797288, -673773, 10441602, -49767932, -123915712, 19270444, 94399624, 87701088,
+152145456, -38821672, -40707164, -103574744, -141405360, -29154774, 51162724, 54731304, 103092104, 55992952,
+4440460, -26766236, -71937480, -51158428, -8811662, -8011188, 25665650, 23781770, 13775571, 8771397,
+6939057, -3802120, -17655536, -1380832, 20453708, 145492, 4326643, -1182190, -15287936, -11740830,
+-26020522, -25537338, 11604465, 10664404, 23705536, 35984848, 27007292, 13160317, 4800700, -38884488,
+-27454504, -21288542, -21274046, -23790898, 4998805, 15133317, 26389352, 33639256, 27888834, 6044093,
+-3251290, -22356916, -22755810, -13575855, -6558952, 2158221, 3799972, 7518877, 710817, -7324530,
+2521146, -11673184, 6123550, 9859634, 1185948, 19770808, 23997592, 7370701, -4495757, -26379152,
+-34640520, -14010183, -6344741, -4088272, 17709224, 13634911, -3538516, 15467788, 16899086, 9376987,
+11696270, -6487548, -12441447, -10103911, -14322642, -11471321, -2054605, -11016054, -4267050, 543850,
+8865886, 12368432, 17988934, 15412490, 14331769, 11264089, -5810017, -13492103, -22464290, -27848568,
+-16089484, -12125230, 1646046, 13182328, 19610820, 22568442, 17982492, 16413218, 10714870, -14107357,
+-24949466, -22682260, -10966662, -3314104, -928787, 1613834, 9666898, 8343511, 4134443, 1832877,
+7934952, 4354023, 6920803, 1810329, -10374494, -11609833, -7459822, -3148211, 3732864, 2458869,
+-3670587, -2245731, 3725884, 1773822, 1695438, 4695473, 7846369, 3408594, 345208, -3952444,
+-4258460, -3828427, -4348655, -6011881, -4258997, -450972, 3551938, 4544613, 6331856, 6458557,
+3845606, -332860, -2737505, -3791383, -3174518, -3306051, -2165737, -1748589, -288837, 1487669,
+2672007, 1889249, 1401770, 854699, 1426466, 652298, -390842, -2512019, -2100776, -912144,
+949188, 1065152, 516470, -1080184, -647466, -289910, 143345, 0, 756451, 957778,
+641024, -492311, -200790, 83752, 599685, 225486, -157840, -796180, -796716, -895501,
+-185757, 229781, 344671, -29528, 395137, 705985, 1163936, 606664, 3758, -780610,
+-862752, -899259, -387084, -205085, 3221, 118648, 578210, 399969, 267362, -62277,
+-8590, -107911, -31675, -82678, 110059, 4832, -104153, -298500, -116501, -40265,
+102542, 5369, 39728, -20401, 34360, 12885, 81604, 35433, 49929, 9664,
+9664, -28454, -39192, -47245, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-5833103,
--75162, 1282048, 973347, 4169340, 551366, -506806, -2681670, 6125160, 3785477, 202937,
--750546, 6084358, 2068564, -1939178, -5328981, 3406983, -1532230, 2646237, -5071820, 330712,
--1210107, -3767760, -1018981, -1894618, -699006, 292058, 27917, -2746632, -1685238, -434329,
--526670, -1707250, 1833951, -173409, -1826972, 3263638, -5421860, -2570538, 2592550, -3255048,
-451508, -2019708, -2975339, 2027225, 1840930, -1596117, 2039036, 3926674, 2211908, -2034204,
--2379949, 430034, 773631, -2398739, 2602213, 4329864, -3689914, -1178969, 2132451, 1595044,
--877784, -1129040, -1801202, 2386391, 727997, -2858301, 3253438, 1583769, -2668785, -2002529,
-3420942, -2579665, -3294777, -6212134, -5399311, 2939905, 3402688, 272194, 1494649, -590558,
-1224066, -2301566, 3490198, -291521, 1615982, -1600949, 901943, -1458678, -1136556, 52613,
-2236604, -496069, -568546, -1003949, 333934, -759136, 155156, 258772, -461172, -547071,
-71941, -33823, -180926, -600222, 302795, -224412, 7785165, -754841, -1580548, -3195993,
-4980552, -2660732, -290984, -4058207, -4331475, -5443871, -2566243, 4258997, -4421669, -1655710,
--1561221, 1473174, -1107565, -6063420, 3148748, 1512902, 11769284, -1207423, 5501316, -1103807,
--300648, -537945, 599148, -2487860, 4551592, -1202054, -929324, -2756832, -514859, -988379,
-7057705, 1308891, -726386, -6628209, -688805, -1277753, 1987496, -4213363, -1177358, 1136556,
-937914, -1167694, -723165, -2618856, -997506, -3147137, -1428614, 6101001, -1809792, 1930051,
-3393561, -826781, -3331284, -4355097, 1116155, 1020055, 1300301, 2704219, 3192235, 2639794,
-1511829, -1210644, -1188632, -1400696, -6144488, -1466731, -639413, 2967823, 2514703, -1515050,
--165356, 3259880, -3417183, 1340030, 79994, -849330, -1984812, -2996814, -54761, 1784022,
-1785096, 1900523, -812823, 781684, -729071, 159988, 2652679, 1084479, 187368, 24696,
--427886, -62277, 150324, 533650, -360240, -371515, 1138166, 595927, 1159104, 1212791,
-226560, 675384, -195958, 197569, 64961, -539018, -1395328, -246424, -10292889, -2487323,
--173946, -2175401, -1500017, 3646427, -7222525, -6047851, -3530463, -2342905, 1060320, 8180839,
--1742683, 11274, 1007170, -5815386, -1503239, -4852240, -730144, 8662412, -642098, -4172561,
--2707440, 136365, 1785633, 1757715, -2398739, -10909217, -5211943, -1436130, -4198868, 416075,
-221191, 4456566, -2836289, 3961571, 983011, -1997697, -5835787, -4879083, 6804839, -5578626,
-3748433, 1117228, -3572339, -1320166, -3187940, -2276870, 3215857, -5994164, 3135863, 1085553,
--74088, 1036698, 444529, -572841, 156766, -3023657, -4162360, 328028, -1253057, -3062312,
--1226750, -4750234, 5577015, 3831648, 982474, 4575751, 561567, -1905892, 5666136, -2951180,
--1846836, -1889786, 4317516, -4166655, 1887638, 3048353, 191126, 1899449, 4699768, 1743220,
--119722, 326418, 1018444, 807991, -900333, -530428, 80531, -210453, 1523640, 760209,
-1609539, 1211181, 474594, -1402844, -1660005, 1045288, -38655, -66035, 1556926, -1041530,
--834297, 4832, 388695, 534723, -132607, -1697049, 1455994, 415538, -1267552, -7022809,
-8428873, 9573482, 2566780, 2516851, -2840584, 4423280, 2180233, -5721434, 1691143, 3555696,
--6818261, -5965173, 5847598, -5236102, -821413, -3402151, 5895380, 1227287, -753767, -2271501,
--114354, -3943317, 3523484, -2006287, 2107218, -1006633, -98247, 3806952, 1460289, 470836,
--1568737, 3728032, 2352032, 1056562, -390305, 3858491, -369367, 642635, -2544231, 4719096,
-1017370, 1835025, 3451006, -9713069, -3188476, -1978906, -3507378, -3433826, 921271, 5295158,
--2376191, -1515587, -2998424, -1399086, 1108102, 2282775, -6683506, -481573, 2265595, 186831,
--576063, 2798171, 1827509, -6300180, -1788317, -1437203, 3798899, -4174171, 5386963, 5793374,
-3031173, 1126892, -2787971, -231928, 423591, 3842922, -1100585, 384400, 426812, 505732,
-5763846, 544924, 6145562, 2194728, 44023, -3058017, -1741609, 2443837, -565862, -97711,
-201327, 56908, 520228, 2486786, 692564, 911607, 54761, 875636, -2107755, -275415,
-608275, 720481, -572841, -434865, -30602, 716186, -658204, -560493, 819265, 722628,
-1519345, 615254, 1402844, -970126, 71404, 57982, -613643, 1253057, 1928440, 10733123,
--1941325, -107374, 3946001, 2573222, 1933809, 3651796, 9534291, -2601140, -830539, -9098888,
-221191, -7810935, -9931575, 405338, 4287451, -12827457, 4409858, 4264366, 2347200, -3858491,
--3054259, -4211753, -1581622, 301721, 307627, 4150012, 5445482, -685584, -5290326, -3175055,
-4038880, -5665599, -2814277, -4778688, 1076963, -7758322, 3928285, 678605, -497142, 1318555,
--220654, -1726577, 37581, 5096516, -5779416, 7100655, -5313949, -557809, 1326071, -3478387,
--2868501, 2820720, 1383516, -1053878, -2690260, 5319854, 2216740, -3590593, -7307887, 921271,
-1721745, 4363150, -154082, -1825361, 393526, 2346663, -1723893, 10273562, -3391951, -1582696,
--7254737, -4744865, 11527155, 4748623, -2537252, -580894, -3983045, -4400731, -340376, 1680406,
-322659, -2093797, 2500208, 1449015, 3458523, -282394, -2477123, 1087701, 115427, -1053341,
-1019518, 1056025, -250182, 534187, 1371705, 536334, -313533, -945967, 578747, 446140,
--955093, 1982127, 1602560, 609349, -934692, -2331094, 178778, -96100, -89657, 1167694,
--1195612, 878858, 1275068, 404264, -728534, 2997887, 6936372, -9137543, -5376762, 6484327,
--4763656, -5074504, -5579163, -6677064, 4891968, -1646046, -148176, -1493575, 304943, -7435126,
--1444183, 3483219, 3798362, 907312, -3905199, -5693516, -4721243, -6010807, 1279363, 7291781,
-1023276, 2396592, 2528662, 2469069, -4205847, 4514548, 2821794, -3130494, -2516314, -9766756,
-1557463, 2246805, -7668127, -558346, 2418067, -1394791, 998580, -643171, -8231842, 7091528,
--7665980, 6115497, 370441, 3107409, -8635032, -4803384, -7728257, -6075768, 1174137, -2134062,
--2719251, -3403225, 16643, 3917010, -7149510, -73551, 2127083, -2273112, -7977365, -4971425,
--1639604, 1559073, 3928285, 1738388, -6565395, 7094749, -2234994, -1491964, 7039989, -9141301,
--2989297, -1785096, -1609002, 11045045, -3978750, -141197, -4130685, -3403762, 2028298, 1560684,
--223338, 1223529, -852014, -1505386, 2079838, 74088, 863825, 925029, 2681133, -995896,
-796716, 636192, 205085, 742493, -3003793, 3985193, 3597035, -1175210, -598074, 606127,
--499827, 721018, 132070, -231391, -1437203, 937377, -735513, 390842, 3497177, 2267206,
-1884954, -1389422, 2497524, 1035087, -992137, 1174137, 390305, 879931, 295279, 14107357,
--12709882, -6732898, -8490077, 6011344, 2221035, -4371203, 2786897, -139050, 8365523, 458488,
-15032, -8210904, 5675800, 9242233, 9700721, 8051990, -4600984, -767725, 1184337, -5268851,
--3624953, 1290638, 519691, -7559680, -3738769, -3228742, 3588445, -639950, -5725192, -2675228,
-1789928, 4424890, 486942, -1641214, 3221, -4048007, -179852, -319975, 544924, -8635032,
-4933307, 5821828, 1149978, 2966749, 3446175, -7004018, 9858024, 8865349, 1593433, -6242735,
-3489124, -2253784, -9220758, -2399813, -2943126, -206695, 515933, -238371, -5586679, -5011690,
--11438035, -9561134, 92879, 5696201, -5258651, 2365453, 707596, -3585224, -9321690, -980326,
-5395553, -3660923, 4839892, 9527848, 2882997, -4015258, 5501316, -75699, -607738, 2566780,
-4278325, -428960, -772557, 1140851, 2755222, -1586454, -6265821, 310311, -196495, 612570,
-755377, 2042794, 4551592, -1687385, -822486, 3404835, 3118146, 625992, 437013, -2269890,
-4387846, 449361, -314606, 2594160, 809064, 916439, 429497, 2335389, 2101850, 2323041,
-3875134, 264141, 2305324, 284542, 2568927, 1186485, 1449552, 963146, 2430952, 2117956,
-1740536, -13553843, 1387274, -5086852, -18141404, -13965086, 3439732, 88047, -3163244, 3185255,
-8663486, -1424319, 5174362, 4583267, 2644089, -1426466, -4754529, 3809636, -4056060, 448287,
--3489661, 5405753, 9911711, -8989903, -2623688, 521302, 3573950, 933082, -2834142, -1660542,
--3381750, -290447, -4175245, 5231807, 1111323, -6327024, 6959458, -7053410, -2294586, 8571144,
-7531225, 6365142, -7352447, -4822175, -6593312, 7556458, 10228465, -180389, -2184528, 8129300,
--12068858, 1451699, 3162707, -1185948, -10152766, 9057549, 3122978, 4591857, 8464307, 430034,
--12241731, 3175055, 4936528, -3140158, -972273, 8374113, -8769249, -8188892, -7117298, 832687,
-10751377, 5830955, -1633698, 12370580, -16557099, -6099928, 120259, 7912404, 3617436, -2400887,
--13178570, -2062658, -5334887, 1442035, 4902169, 12749610, 2094333, -3621194, 1588601, -2189360,
--934692, -4237522, -67109, -3493956, 1104880, 3468186, 1885491, 3191698, 3529926, 1136556,
-685047, 15569, 549756, -1762547, -1925219, 153008, 3722663, 1432372, -565325, 667867,
-1437740, 3059627, 308701, -1034013, 420907, -1009317, 2361695, -4571456, -2873870, -2024540,
-2752537, 2468533, -4107063, 887985, -14602889, 14660334, 5929203, -408559, -1544578, 1187559,
-2477659, 7919920, -1561221, 831076, -2598455, -1889249, 4446902, 2268817, 5171141, 2248952,
-2965675, -9989557, -4168803, 16632261, 1641214, 4909685, 6960532, 2583423, -5701569, -10535018,
-3217468, -4423280, 346282, 3641059, -5268315, -6186901, 7431367, 8731132, -4621922, -3297461,
-6751689, -8403640, 3610994, -6478958, 2846490, -6271726, 8985608, 1211181, -1246077, 3131031,
-15473157, 4234301, 5963562, -1800665, 739271, 2597918, 11412802, -1042066, 16378858, 440234,
-7754564, -332323, 14779519, 5201743, 11016054, 8351564, -1920387, -5011690, -1393180, -5718212,
--6311455, 8646843, -1813013, -3447248, 1291711, 77846, -4505958, -2215666, 1295470, 3843459,
-1017370, -7488813, -7432978, -3878892, -7588134, -245887, -221191, -2260227, 2022393, -196495,
-2996814, -496069, -3132642, 587337, -1359894, -5716602, -3640522, 766115, 7521562, -3241627,
-2744484, -900333, -146566, 3474629, -2703145, 1153736, 1657857, -1967632, -1380295, -987306,
--2237141, 1030792, -2780991, -3578782, -1416802, -3873524, 4743792, -1386738, 226023, -447750,
--353798, 476205, -1661616, 679142, 1148904, 595390, 1891933, 2574833, 391379, 1913408,
--1520418, -4176319, 756988, -1173063, 1668058, -1719598, 17145510, -4397510, -66035, -20947092,
--664109, 11317239, -5799817, 9842991, -13291313, 2018635, 1428077, -312459, -17652316, -726386,
--29469382, 1466195, -3174518, -12307766, -2073932, 1727651, -6400575, 1192390, 7556458, 1214939,
--6680285, 1321776, -2009508, 6617471, -7188702, 485331, 9563282, 2196339, 871342, -1354525,
-7349763, -4617627, 848793, 27917, 5661841, 1134408, -9887015, -5257577, -6947647, 8301098,
--18594524, 9096204, 7524783, 6439767, 3656628, 1444183, -8088497, 5878200, -12021077, -2818572,
--2455111, -2463164, -444529, 815507, 3981435, -9267466, -3566434, 15760919, 6678138, -5683316,
--6567542, 1755568, -2673080, 4835597, -3099893, -924492, -4990215, 14292577, 7354595, -4846871,
-989453, -7213935, 1781338, -5436355, -1794760, 5698885, 5378373, -1606318, 10499048, -4045859,
-5260261, -6774774, 7362648, 1097901, -4121558, -5701032, -8435316, 2200097, -835371, 3925063,
--989453, -2491618, 1671816, 1626719, 2689187, 2113661, 4872641, -153545, 1639604, -3653944,
-3081639, -2616709, -1221918, -1957968, -284005, -4662724, -697932, 1853815, 4342212, -4006668,
--1836099, -2891050, 3014530, 2255395, -1751273, -348966, -3020436, 2425046, 399969, 10776073,
-10889890, 6299644, 5622112, -5371394, 6260452, 10463614, -7860327, -333397, -20323248, 11562589,
-7881265, -2944200, 4651450, -1360968, 1576253, 7176354, -4584341, 11257109, -10245644, 926639,
-12698608, 5521718, 743029, 9774809, -3518652, 4458176, 2553358, 5209259, 8667244, -5203890,
--1079647, 15995532, 7991324, -412317, 2181307, -10939819, 14741938, -12502650, -817118, 12876312,
-3984119, 13867376, -8774081, 2170569, -595927, -3473018, 1839320, -13521094, -9468255, 12618614,
--6345278, -2782602, -4316442, -14376329, 10137197, -3440269, -2394981, -6407555, 6228240, 14472966,
--11486353, -2401961, 9782862, -10837276, -4718559, 8690866, 12202539, -20272782, -5407364, -1803349,
-8603893, -376347, 10051834, -2516851, -7392176, 418759, 5345087, 12974022, 6566468, -8840653,
--468688, 6346351, -13016435, -8035347, -2500208, -6733972, -6781217, -869731, 6164352, -5910412,
-1438277, 6359236, 1782411, 1080184, 4494147, -1185411, 2893197, 2723546, 2739652, 1503775,
--513785, -3988951, -1334661, -1161789, -3568044, -1684701, 556198, 389231, -532039, 488553,
-3941169, -3316252, -1046898, -2480344, 1893007, 1780801, -766652, -2757369, -5944235, 2934000,
-2274722, 3803194, 1066226, 879931, -412854, -3761318, 1500017, -1548873, -1683627, -1137630,
-1032403, -727460, 10566156, 22397718, 4325569, -13252658, -4725001, 4389994, -29392072, 917512,
-176631, -4612258, -1444183, 13564044, -22180822, 4865661, 10368588, -8170639, 9190156, 17127792,
-4252018, -15855946, 4291209, -4005057, -284005, -15544560, -4685810, 14146012, -1585917, 12968117,
--3412352, -4571993, 2131915, -11011222, -6171868, -7933342, -5859409, -4346507, 10606959, -11732777,
-1913408, 20431160, 13821205, 4587025, -20783884, 3429532, 13656385, 5681705, 824634, -7446400,
--9016210, -22231288, -15322833, 3139621, -7574712, -7622493, -421444, 9451076, 6734509, -6710350,
-308701, 13459354, -5178120, -2321967, 631897, 17703856, 694174, -932545, 9043591, 2784750,
--20172388, 5621576, 5870147, -142271, -16700980, 7013145, 9817758, -7396471, -5220533, -13760001,
-3674345, -5082020, 5215164, 2559801, -3206193, -5862094, 3809636, 1686848, 5870147, -2958696,
-9141838, 3173444, -6230387, 701153, -299037, -8642011, 186831, 643708, -3758, -228707,
--4502200, -3972308, -1797981, -163746, 5742372, 1840930, 3015067, 4571993, -2088428, -2804077,
-2223183, -4531728, -3981972, -228170, -197032, 1333587, -1299765, 949725, 2838437, 2931315,
-398358, -1840930, -402653, -301721, -479963, -35433, -719944, 286152, -77846, 3819837,
--2214593, -2872260, 7117298, 5000953, -663572, 1889786, -3189550, 1360968, 99858, -1345399,
--6765647, 22994182, 1116155, -4823785, -473520, 10078678, -5087389, 2668785, -2643016, 2266132,
-8622147, -16147466, 16747688, 18991272, 5236639, 7953743, -6635188, 10708427, 25054692, 676457,
--3033858, -4782446, 10582799, -3939559, -6243272, -2262374, 3660923, -12685723, 5442798, -11188390,
-12506408, 2746095, 12595528, -8120173, 11468636, 3331821, 15055471, 2393908, 3060701, -5560909,
-9324911, 2250563, -3138547, 13531294, -5455146, -9844065, 19174882, 15285252, 5557151, 14442364,
-20994874, 25490630, -8096014, -8141648, -9167608, 3089692, -11891154, 13763223, -1846299, -1377611,
--19817516, 4465156, 22213570, 22645752, -1006633, -3088082, -15741592, 140123, 14705968, -7677254,
--9375377, 8286603, 1195612, -8190503, 2750390, -1414655, -5058935, -1215476, -4355097, -269509,
-8486855, 6302328, -1868311, 1443109, -2195802, -8690329, -11317239, -2181844, 5469104, 2168422,
-7788387, -1682554, -7556995, -2126546, 8082055, -3938485, 4552666, 7458211, -7699803, -2106145,
--846645, 1845762, -517007, 4954782, 3585224, 1739999, -7670812, 1837172, 4038880, 1179505,
-1599875, 2657511, -6815576, -3212636, -96100, -419833, -3662533, -8790187, -2925410, 696322,
-4418985, 924492, -3670050, -4232154, 1566589, -30114164, -20984674, 11334419, 4515085, -15690052,
-1830193, 7226283, -14301167, -8913131, -6063957, 17476758, 7923678, 5727876, -5313412, -4012036,
--4188667, -10550050, -14178761, -25070260, 13344463, 11494406, -5190468, 28767154, 13889924, 27632746,
-18985902, 1978906, -8606578, 7493108, 3540127, 12699145, 14494978, 16063178, -2105071, -2545842,
-6915971, -6914898, -1488743, -6063957, -11669426, -19209242, -5505611, 20059644, -4744328, -7660074,
--11051488, 8135205, 12157442, 8239895, 948651, 11933567, 22917946, -13314935, -6036040, -10186589,
--7425999, -21663816, -5209796, 5813775, -9826885, -7536594, -25104620, -35691180, 4092030, -23420456,
--37141804, -26702886, -11205033, 24420110, 8489003, 15015206, 11187853, -24571508, -10355703, 2437394,
-12600897, -12059194, -14512694, -13864691, -4275640, 7692824, -8291971, -30681636, -19374598, -4158065,
--6155225, -1927904, -4476430, 17799418, 16085726, 16856672, 16994112, 5926518, -28991, 6658273,
-1882269, -213138, 5098126, -13638132, -5287642, 6386617, 8278550, -47782, -4445291, -4714801,
-2151779, -7264937, -10953240, 10495289, -8139500, -3828963, 1005559, -9263708, -8978629, -16045461,
--6315750, -3497714, 1248762, 14055280, -3442953, -1667521, -4267050, 7352984, -3614215, 750009,
-6740415, 917512, -4648229, 3449396, 6715718, -3698504, -943282, 181462, -2265059, 4105989,
--57084948, -8475581, 19116362, -19057844, 8643085, -7079180, -30697206, -9179956, 34087544, 42752640,
--21809844, 1343788, -7125351, -33865816, -26820460, -25352118, -27051852, -14232448, -17458506, -945967,
-6504191, -4272419, 7647190, 7035157, -10719165, -2567854, -14931454, 7046968, -23851564, -21507586,
-5883569, 4314295, -6063957, -7566659, 19779398, -5145908, 27235462, 6386617, 25290914, -16222628,
-11353746, 7464117, 30509838, 16462073, 11089069, 3331821, 5130876, -3077881, 9392557, 12780749,
--9067750, -13042742, 21539798, -2448131, -25663504, -49961208, -60017336, -43275016, 7850664, 352724,
--55848532, 18759344, 10203769, 14545980, -18657338, 2850248, 7231115, 2915209, 29549374, 29908004,
-59574956, 19983946, -30867394, -40006008, -24235964, -21937082, -25232932, -22607098, -217970, 12943958,
-17514876, -10550050, 22873922, -18774376, -26103200, -20423644, -13211856, -10049150, -20272246, 13389024,
--870268, 12815109, 10172093, 1751273, 22475564, -11192148, -4444218, -21511344, 7907572, 11892228,
--1256815, -1701344, 7155953, -20665236, 1330366, -7206955, 4558034, -9849434, -13806709, 8926016,
-140123, -5762236, -1724429, 10443750, -7501698, 5493263, -6945499, 6222871, 5790153, -2772938,
--6892349, 4870493, 5682242, -15242839, 6964290, -3766150, -4002373, -4584878, 3849365, -10273025,
--4702453, 32338956, -8652212, -61108796, -17459042, 50303192, -6958384, 11214696, 7183870, 9385577,
-17638894, 14417131, 5058398, -9982578, -3674882, 2483028, -10845866, -2550674, 18516678, -16564615,
--9809705, -16608639, -3927748, 2826625, 2177549, 4363150, 8698383, -12646531, 11304891, 27509266,
--427886, -16115791, 1544578, -10561325, -3543885, 16292958, -17146584, 1901060, 5544803, 19927038,
-29042568, -18459770, -10390063, 11149198, 1664300, 3098819, 3485366, -12276627, -31047782, -5647345,
--14372571, 28292024, -53727892, -35509180, -14426795, -5964099, 15729781, 3162707, -18849538, -3310346,
--21736292, -23780698, -8290361, -17233020, 3311957, 13921063, 64969432, 11870216, -9425306, -41816340,
--34053720, 10013716, -836982, -39276404, 21336324, 20838108, -39567388, -919123, 10581726, 11310260,
-43146704, 18659486, 9205726, -42606612, -21622476, -29468308, 26886496, -2895882, -8473434, -4959077,
-8572218, 27867358, 24114630, -12797392, -24894168, -37015100, 9196599, 21503290, -7395397, -4026532,
-19443316, 10687489, 16987670, 3954591, 6242735, -14445049, -3936338, -6985228, 7521025, 7239168,
--1685775, -3588982, -1810329, 9846749, 11713986, -17002164, 9977746, 6998113, 14101988, -9178345,
--5820755, 8303246, 3382287, -12410845, -932008, 13791677, 3015604, -10851235, -3557844, 1433982,
--20789252, -71877888, 10918344, 11826729, -1828582, -586263, -5012764, -20276004, 8753680, -4013647,
-37523520, -37562712, -7225209, 39516920, -1240172, -25755308, -2685428, 23547158, 28492276, 17730162,
--4474819, 20562156, -14578730, 14071387, -5602248, -4620311, -12545599, 22469122, 15446850, -13757317,
--6054830, -1544578, 22757958, -1557463, 2885144, -13740137, 15502148, 10264435, -15950435, 30406220,
-1849520, -26334592, 24240258, -28656022, -14889578, 27108222, -56219512, -35625144, 31346818, -19063212,
-23368380, -35435628, 8522289, 13721884, -19272056, 1285269, -1058173, -36588828, -8114804, 38863548,
-40960568, -45502496, -14783277, 14583025, -36410584, 48192216, 48227652, 7372312, -67815920, -35321276,
-73147048, -37837588, -7154879, 59464360, -34069292, -69990248, -15323370, 64256468, -13205951, -45951856,
--10916733, -84339736, -3360812, 69333656, -24545202, -68061272, -6453189, -18706194, -8722005, 21000242,
--1914482, -230318, -24476482, -15781857, -7435126, 28083180, -34372088, 2304787, 6149320, -10345502,
-1780801, 33321966, -20389284, -25722560, -2926483, 9819906, 21096342, -7568269, 10901164, 16252156,
-2367064, -23157926, -12101607, 1146219, -18358838, -8595303, 36826124, -13065291, -34768836, -8868034,
-21218212, 9146133, -2075006, 5200132, -31369904, -17821966, 24967718, 36698348, 5000953, -26138098,
--12434467, 1769527, 10190347, 18702972, 2509335, -10253161, -39760660, -37519760, -836445, -47367584,
--13868986, -20135344, -18868328, -14310831, 30993020, -3370476, -9681930, -13002477, 6220724, -16640851,
--39335456, 30629022, 9853729, 26456998, 8511551, 27359478, -10654203, -16908212, 6304475, -28616294,
-22472342, -25920128, -5234492, 17077326, -19412178, -4155918, -11683922, -31386010, 4993437, -23700704,
--16829830, -20682416, -15046344, -9459665, -20763482, 3704409, 23614804, -15791521, -5331665, 2873870,
-21794274, -9804337, 7915625, -22055194, 36110476, 11192685, 15663209, 9800042, 34656092, -2027225,
--40044128, 8893804, 14980309, -11229729, 195958, 21235392, -27744952, -27858768, -32248226, 28123446,
-8679592, -40097816, 15962246, -26473104, -4821101, -37424196, 16904454, 26547192, 5856725, -41459320,
-23625542, 19199578, -4928475, -36449240, 10193568, -22005802, -7159711, -1614908, -10755135, 18009334,
--15913391, -29578902, 15041512, -6635725, 12782360, -208843, -729608, -243203, -7644505, -9254044,
-6623377, 26313654, -2830384, -37318432, -9923522, 15433965, -18025978, -7924215, 18274012, -6824703,
--2176475, -14987288, 29614874, 17067664, -8216273, 13037373, -1932198, 5796595, 24113020, -4412005,
--20348482, 8556649, 13950591, -10838350, 17506286, -2895345, 10969883, 1080184, -7289633, 14118094,
-21196738, -12034498, -21407190, 8404177, 13895830, -10937134, -1717450, 12311524, 4791573, -8567386,
--8574902, 10903311, 35111356, 66104916, -16107738, 32705640, 6230387, -15805480, -29783450, -17409650,
-38371776, -12775917, 6985228, 14817637, -4070555, 35391068, -5406290, 27748174, 28959354, -35898412,
-18249316, -9492415, 681826, 12998182, 10697153, -1336809, 5619965, 10506564, 35481260, 36575404,
-28105730, -20820928, -7264401, -48864916, -1670742, 11421392, 21807696, 4984847, -40550396, 17588428,
--24422794, 31221192, -28480466, -19854024, 1833951, -23736674, -4269198, -13732084, 47976932, -26403312,
--13107703, -50567336, -16645146, -26572962, 71096208, 43301324, -15247134, -48091824, -51731808, -30656402,
-35254164, 46252504, 23248658, 6791417, -62035972, -28731720, 20091320, 17322676, 2462627, 22339736,
--13052942, -40708236, 19031536, -69045360, 74855912, -7029251, -48767208, 112939384, 15968688, 39305932,
-67460512, -112114216, -81013824, 22391276, -6891812, 17160542, 24319716, -70070240, -5426155, 14178224,
-1174137, 58756228, 3930969, -30707942, -3448322, 31609886, -18556406, 13842143, 15984258, 702227,
--13079786, 15501074, -41049688, 31221728, -8201777, -12924093, 17346300, 4763119, 1014686, 18540300,
--4597226, 11144903, -2497524, 7190849, -5564130, -21336324, 12776454, 9169755, 12071006, -12348,
-134755, 8549132, 4462471, 3396246, 24730422, 27850716, 1370632, 18301392, -17300128, 2721399,
--11431592, 21155398, 18960134, 3118146, -5743445, -12458626, -29805462, -12890271, 2354716, -29436632,
-19801410, -41559176, 25612500, -17151952, 42075112, -19087908, -2014340, 23916526, 4217121, 2017024,
--10909754, -9495636, 1052267, -16230145, 17738214, -2167885, 18842558, -14900852, -14627585, 4867272,
-715649, -15111842, 9434433, -1997697, 8234526, -4715874, -4074313, 7778723, -7542500, -725850,
-5873368, -3175055, -3598646, 29778082, -2055142, -10131828, -5351530, 14072997, -1289564, -16410533,
-8656507, 17365626, 3551938, 287226, -10334228, 3542274, -8361765, 7882876, 21285322, -7686918,
-9752797, -8157754, -2351495, -8925479, -4110284, 5456756, 6921340, -12575664, 7537131, 2065342,
--1524177, -12581033, 2190970, 4351339, -9141301, 13180718, 11267310, -22610856, 5805722, -20772072,
--23332410, 15919833, -8251706, 19261854, 10679973, 401043, 10056666, -3301219, -11978127, -3085397,
-830539, 13348221, -5999533, 3943854, 5701032, -8001524, -1293322, 4487167, -2222109, -1728724,
-7980049, -321049, 3151432, -6700686, 2850248, -907312, -6507949, 12374338, 1276142, 10048613,
--4862440, 8199630, -4057670, 324270, -6455873, 5379984, -3030100, 12214350, -3688303, 11527155,
--11939472, 2389613, 1024350, -2865280, 655519, 1165547, 9647033, -744103, -10801306, 6971806,
--5965710, 829466, 6982543, -7211250, 12010339, -24503862, 51458540, 9631464, 12569759, -6653441,
-4619238, -1599339, 9671729, 2981244, 21876952, 1411434, -12016245, 7136088, -7873749, 3288334,
-4405563, -10183367, 440234, 2335925, -10994043, 9841381, 2456721, -4570382, 13271986, -4873714,
-5188321, -4183298, 2395518, 2455111, 1127429, -1773285, -4046933, -1916629, 1776506, 239981,
--2322504, -6591164, 4758287, -4454955, 2326799, 4181151, -4542465, 857920, -4249334, 1105954,
--6685117, -10768557, 10937671, -6009733, -2954401, 4598836, 2057826, -1966021, 1158567, 9403831,
--10553272, 4445828, -4038343, 8137890, -8886287, 4923643, 2364916, -1625645, 1823751, 133144,
-18790, 3947612, -5658620, 3058554, 2653216, -1577864, -646929, 7110319, -1208496, 2377265,
--8436926, 11171210, -8820252, -200253, 5516886, -5138392, 3731790, 1190780, 1248762, -5368172,
-4174171, 4391067, -2906619, 1700807, 2103460, -3841312, 1219234, 1797981, -930397, 3850975,
-60666, -147103, -534723, 3452080, 2591476, -2285460, 2935073, -1626719, 1249836, 1489280,
--501974, 4311074, -2088428, -21475, 2664490, -3503620, 153008, -402116, -2565706, 294742,
-2368138, -788127, -2179159, 4298726, -2907693, 607738, 9752260, -45808512, -113716240, 24562918,
-94565520, 63920388, 133380744, -43626668, -37286220, -76741400, -122638496, -12127914, 38233260, 50383188,
-65773128, 33148020, 3645890, -10761041, -28424630, -40565968, -6133214, -10844792, 4006131, 9296994,
--468688, 2325725, 4918812, 2160906, 16077136, 19055696, 11869679, -2203318, 2222109, -14130442,
--29593398, -31575526, -15454366, -20717312, 17067664, 31399432, 33369212, 36590436, 20088098, -5943161,
--14434311, -26931592, -28403156, -19776714, -11089606, -1302449, 7204271, 13779866, 14846628, 12440910,
-10768557, -1869921, 2915209, -3203509, 1453310, -2414845, -1439351, -882079, -10048613, -10591926,
--7620346, -15950972, 54224, -3027415, 2040110, 27055610, 35716412, 12016782, 12128451, -9816148,
--19572702, -13584982, -23575076, -18994492, 6724845, -1657857, -11406359, 8770860, 9468792, 11212012,
-26750666, 11085311, 11760694, 2887292, -14333916, -14200772, -11553999, -12688407, -15981573, -13714904,
--8104604, 2495913, 17887466, 26856430, 25225416, 10181220, 5139465, -6580964, -12132746, -10984916,
--12022687, -13974213, -6322729, -5831492, -418222, 4684736, 3676492, 10821707, 14454176, 10388989,
-7161321, 2479270, -843961, -6837051, -6983617, -11012833, -12304544, -9743133, -8606578, -2209761,
-9312026, 13800804, 14954539, 13212930, 5462662, 2441152, -6564858, -10540923, -5542119, -7788923,
--10510859, -8010114, 1541893, 7206419, 6845641, 3811247, 4391604, 3900904, 3070902, 907849,
--648003, -1088237, -2707440, -3576097, -3234110, -3854733, -4467840, -2411624, 2134062, 3740917,
-4836133, 4030827, 2955474, 1007707, 134755, -1179505, -1682017, -2179696, -2368138, -2689723,
--1528472, -598611, 963146, 1566053, 1571958, 1340567, 1220845, 251792, 40265, -292058,
-193810, 183610, 629213, -887448, -1576253, -1376537, -751619, -707059, 336081, 965294,
-1271847, 751082, -404264, -536871, 740882, 1180042, 1013612, -317291, -1243930, -1464584,
--526670, -38118, 273804, -170188, -271657, -355409, 91805, 351650, 860067, 669478,
-655519, 456340, 129386, -431107, -631897, -853625, -719407, -745177, -435402, 155156,
-786516, 755377, 723702, 434329, 302795, 181999, -110059, -589484, -540629, -440771,
--238371, -86973, 122943, 4295, 20401, 77309, 208843, 239444, 201863, 39728,
--55835, -110059, -84826, -52613, -22549, -25770, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-75162, 1282048, 973347, 4169340, 551366, -506806, -2681670, 6125160, 3785477, 202937,
+-750546, 6084358, 2068564, -1939178, -5328981, 3406983, -1532230, 2646237, -5071820, 330712,
+-1210107, -3767760, -1018981, -1894618, -699006, 292058, 27917, -2746632, -1685238, -434329,
+-526670, -1707250, 1833951, -173409, -1826972, 3263638, -5421860, -2570538, 2592550, -3255048,
+451508, -2019708, -2975339, 2027225, 1840930, -1596117, 2039036, 3926674, 2211908, -2034204,
+-2379949, 430034, 773631, -2398739, 2602213, 4329864, -3689914, -1178969, 2132451, 1595044,
+-877784, -1129040, -1801202, 2386391, 727997, -2858301, 3253438, 1583769, -2668785, -2002529,
+3420942, -2579665, -3294777, -6212134, -5399311, 2939905, 3402688, 272194, 1494649, -590558,
+1224066, -2301566, 3490198, -291521, 1615982, -1600949, 901943, -1458678, -1136556, 52613,
+2236604, -496069, -568546, -1003949, 333934, -759136, 155156, 258772, -461172, -547071,
+71941, -33823, -180926, -600222, 302795, -224412, 7785165, -754841, -1580548, -3195993,
+4980552, -2660732, -290984, -4058207, -4331475, -5443871, -2566243, 4258997, -4421669, -1655710,
+-1561221, 1473174, -1107565, -6063420, 3148748, 1512902, 11769284, -1207423, 5501316, -1103807,
+-300648, -537945, 599148, -2487860, 4551592, -1202054, -929324, -2756832, -514859, -988379,
+7057705, 1308891, -726386, -6628209, -688805, -1277753, 1987496, -4213363, -1177358, 1136556,
+937914, -1167694, -723165, -2618856, -997506, -3147137, -1428614, 6101001, -1809792, 1930051,
+3393561, -826781, -3331284, -4355097, 1116155, 1020055, 1300301, 2704219, 3192235, 2639794,
+1511829, -1210644, -1188632, -1400696, -6144488, -1466731, -639413, 2967823, 2514703, -1515050,
+-165356, 3259880, -3417183, 1340030, 79994, -849330, -1984812, -2996814, -54761, 1784022,
+1785096, 1900523, -812823, 781684, -729071, 159988, 2652679, 1084479, 187368, 24696,
+-427886, -62277, 150324, 533650, -360240, -371515, 1138166, 595927, 1159104, 1212791,
+226560, 675384, -195958, 197569, 64961, -539018, -1395328, -246424, -10292889, -2487323,
+-173946, -2175401, -1500017, 3646427, -7222525, -6047851, -3530463, -2342905, 1060320, 8180839,
+-1742683, 11274, 1007170, -5815386, -1503239, -4852240, -730144, 8662412, -642098, -4172561,
+-2707440, 136365, 1785633, 1757715, -2398739, -10909217, -5211943, -1436130, -4198868, 416075,
+221191, 4456566, -2836289, 3961571, 983011, -1997697, -5835787, -4879083, 6804839, -5578626,
+3748433, 1117228, -3572339, -1320166, -3187940, -2276870, 3215857, -5994164, 3135863, 1085553,
+-74088, 1036698, 444529, -572841, 156766, -3023657, -4162360, 328028, -1253057, -3062312,
+-1226750, -4750234, 5577015, 3831648, 982474, 4575751, 561567, -1905892, 5666136, -2951180,
+-1846836, -1889786, 4317516, -4166655, 1887638, 3048353, 191126, 1899449, 4699768, 1743220,
+-119722, 326418, 1018444, 807991, -900333, -530428, 80531, -210453, 1523640, 760209,
+1609539, 1211181, 474594, -1402844, -1660005, 1045288, -38655, -66035, 1556926, -1041530,
+-834297, 4832, 388695, 534723, -132607, -1697049, 1455994, 415538, -1267552, -7022809,
+8428873, 9573482, 2566780, 2516851, -2840584, 4423280, 2180233, -5721434, 1691143, 3555696,
+-6818261, -5965173, 5847598, -5236102, -821413, -3402151, 5895380, 1227287, -753767, -2271501,
+-114354, -3943317, 3523484, -2006287, 2107218, -1006633, -98247, 3806952, 1460289, 470836,
+-1568737, 3728032, 2352032, 1056562, -390305, 3858491, -369367, 642635, -2544231, 4719096,
+1017370, 1835025, 3451006, -9713069, -3188476, -1978906, -3507378, -3433826, 921271, 5295158,
+-2376191, -1515587, -2998424, -1399086, 1108102, 2282775, -6683506, -481573, 2265595, 186831,
+-576063, 2798171, 1827509, -6300180, -1788317, -1437203, 3798899, -4174171, 5386963, 5793374,
+3031173, 1126892, -2787971, -231928, 423591, 3842922, -1100585, 384400, 426812, 505732,
+5763846, 544924, 6145562, 2194728, 44023, -3058017, -1741609, 2443837, -565862, -97711,
+201327, 56908, 520228, 2486786, 692564, 911607, 54761, 875636, -2107755, -275415,
+608275, 720481, -572841, -434865, -30602, 716186, -658204, -560493, 819265, 722628,
+1519345, 615254, 1402844, -970126, 71404, 57982, -613643, 1253057, 1928440, 10733123,
+-1941325, -107374, 3946001, 2573222, 1933809, 3651796, 9534291, -2601140, -830539, -9098888,
+221191, -7810935, -9931575, 405338, 4287451, -12827457, 4409858, 4264366, 2347200, -3858491,
+-3054259, -4211753, -1581622, 301721, 307627, 4150012, 5445482, -685584, -5290326, -3175055,
+4038880, -5665599, -2814277, -4778688, 1076963, -7758322, 3928285, 678605, -497142, 1318555,
+-220654, -1726577, 37581, 5096516, -5779416, 7100655, -5313949, -557809, 1326071, -3478387,
+-2868501, 2820720, 1383516, -1053878, -2690260, 5319854, 2216740, -3590593, -7307887, 921271,
+1721745, 4363150, -154082, -1825361, 393526, 2346663, -1723893, 10273562, -3391951, -1582696,
+-7254737, -4744865, 11527155, 4748623, -2537252, -580894, -3983045, -4400731, -340376, 1680406,
+322659, -2093797, 2500208, 1449015, 3458523, -282394, -2477123, 1087701, 115427, -1053341,
+1019518, 1056025, -250182, 534187, 1371705, 536334, -313533, -945967, 578747, 446140,
+-955093, 1982127, 1602560, 609349, -934692, -2331094, 178778, -96100, -89657, 1167694,
+-1195612, 878858, 1275068, 404264, -728534, 2997887, 6936372, -9137543, -5376762, 6484327,
+-4763656, -5074504, -5579163, -6677064, 4891968, -1646046, -148176, -1493575, 304943, -7435126,
+-1444183, 3483219, 3798362, 907312, -3905199, -5693516, -4721243, -6010807, 1279363, 7291781,
+1023276, 2396592, 2528662, 2469069, -4205847, 4514548, 2821794, -3130494, -2516314, -9766756,
+1557463, 2246805, -7668127, -558346, 2418067, -1394791, 998580, -643171, -8231842, 7091528,
+-7665980, 6115497, 370441, 3107409, -8635032, -4803384, -7728257, -6075768, 1174137, -2134062,
+-2719251, -3403225, 16643, 3917010, -7149510, -73551, 2127083, -2273112, -7977365, -4971425,
+-1639604, 1559073, 3928285, 1738388, -6565395, 7094749, -2234994, -1491964, 7039989, -9141301,
+-2989297, -1785096, -1609002, 11045045, -3978750, -141197, -4130685, -3403762, 2028298, 1560684,
+-223338, 1223529, -852014, -1505386, 2079838, 74088, 863825, 925029, 2681133, -995896,
+796716, 636192, 205085, 742493, -3003793, 3985193, 3597035, -1175210, -598074, 606127,
+-499827, 721018, 132070, -231391, -1437203, 937377, -735513, 390842, 3497177, 2267206,
+1884954, -1389422, 2497524, 1035087, -992137, 1174137, 390305, 879931, 295279, 14107357,
+-12709882, -6732898, -8490077, 6011344, 2221035, -4371203, 2786897, -139050, 8365523, 458488,
+15032, -8210904, 5675800, 9242233, 9700721, 8051990, -4600984, -767725, 1184337, -5268851,
+-3624953, 1290638, 519691, -7559680, -3738769, -3228742, 3588445, -639950, -5725192, -2675228,
+1789928, 4424890, 486942, -1641214, 3221, -4048007, -179852, -319975, 544924, -8635032,
+4933307, 5821828, 1149978, 2966749, 3446175, -7004018, 9858024, 8865349, 1593433, -6242735,
+3489124, -2253784, -9220758, -2399813, -2943126, -206695, 515933, -238371, -5586679, -5011690,
+-11438035, -9561134, 92879, 5696201, -5258651, 2365453, 707596, -3585224, -9321690, -980326,
+5395553, -3660923, 4839892, 9527848, 2882997, -4015258, 5501316, -75699, -607738, 2566780,
+4278325, -428960, -772557, 1140851, 2755222, -1586454, -6265821, 310311, -196495, 612570,
+755377, 2042794, 4551592, -1687385, -822486, 3404835, 3118146, 625992, 437013, -2269890,
+4387846, 449361, -314606, 2594160, 809064, 916439, 429497, 2335389, 2101850, 2323041,
+3875134, 264141, 2305324, 284542, 2568927, 1186485, 1449552, 963146, 2430952, 2117956,
+1740536, -13553843, 1387274, -5086852, -18141404, -13965086, 3439732, 88047, -3163244, 3185255,
+8663486, -1424319, 5174362, 4583267, 2644089, -1426466, -4754529, 3809636, -4056060, 448287,
+-3489661, 5405753, 9911711, -8989903, -2623688, 521302, 3573950, 933082, -2834142, -1660542,
+-3381750, -290447, -4175245, 5231807, 1111323, -6327024, 6959458, -7053410, -2294586, 8571144,
+7531225, 6365142, -7352447, -4822175, -6593312, 7556458, 10228465, -180389, -2184528, 8129300,
+-12068858, 1451699, 3162707, -1185948, -10152766, 9057549, 3122978, 4591857, 8464307, 430034,
+-12241731, 3175055, 4936528, -3140158, -972273, 8374113, -8769249, -8188892, -7117298, 832687,
+10751377, 5830955, -1633698, 12370580, -16557099, -6099928, 120259, 7912404, 3617436, -2400887,
+-13178570, -2062658, -5334887, 1442035, 4902169, 12749610, 2094333, -3621194, 1588601, -2189360,
+-934692, -4237522, -67109, -3493956, 1104880, 3468186, 1885491, 3191698, 3529926, 1136556,
+685047, 15569, 549756, -1762547, -1925219, 153008, 3722663, 1432372, -565325, 667867,
+1437740, 3059627, 308701, -1034013, 420907, -1009317, 2361695, -4571456, -2873870, -2024540,
+2752537, 2468533, -4107063, 887985, -14602889, 14660334, 5929203, -408559, -1544578, 1187559,
+2477659, 7919920, -1561221, 831076, -2598455, -1889249, 4446902, 2268817, 5171141, 2248952,
+2965675, -9989557, -4168803, 16632261, 1641214, 4909685, 6960532, 2583423, -5701569, -10535018,
+3217468, -4423280, 346282, 3641059, -5268315, -6186901, 7431367, 8731132, -4621922, -3297461,
+6751689, -8403640, 3610994, -6478958, 2846490, -6271726, 8985608, 1211181, -1246077, 3131031,
+15473157, 4234301, 5963562, -1800665, 739271, 2597918, 11412802, -1042066, 16378858, 440234,
+7754564, -332323, 14779519, 5201743, 11016054, 8351564, -1920387, -5011690, -1393180, -5718212,
+-6311455, 8646843, -1813013, -3447248, 1291711, 77846, -4505958, -2215666, 1295470, 3843459,
+1017370, -7488813, -7432978, -3878892, -7588134, -245887, -221191, -2260227, 2022393, -196495,
+2996814, -496069, -3132642, 587337, -1359894, -5716602, -3640522, 766115, 7521562, -3241627,
+2744484, -900333, -146566, 3474629, -2703145, 1153736, 1657857, -1967632, -1380295, -987306,
+-2237141, 1030792, -2780991, -3578782, -1416802, -3873524, 4743792, -1386738, 226023, -447750,
+-353798, 476205, -1661616, 679142, 1148904, 595390, 1891933, 2574833, 391379, 1913408,
+-1520418, -4176319, 756988, -1173063, 1668058, -1719598, 17145510, -4397510, -66035, -20947092,
+-664109, 11317239, -5799817, 9842991, -13291313, 2018635, 1428077, -312459, -17652316, -726386,
+-29469382, 1466195, -3174518, -12307766, -2073932, 1727651, -6400575, 1192390, 7556458, 1214939,
+-6680285, 1321776, -2009508, 6617471, -7188702, 485331, 9563282, 2196339, 871342, -1354525,
+7349763, -4617627, 848793, 27917, 5661841, 1134408, -9887015, -5257577, -6947647, 8301098,
+-18594524, 9096204, 7524783, 6439767, 3656628, 1444183, -8088497, 5878200, -12021077, -2818572,
+-2455111, -2463164, -444529, 815507, 3981435, -9267466, -3566434, 15760919, 6678138, -5683316,
+-6567542, 1755568, -2673080, 4835597, -3099893, -924492, -4990215, 14292577, 7354595, -4846871,
+989453, -7213935, 1781338, -5436355, -1794760, 5698885, 5378373, -1606318, 10499048, -4045859,
+5260261, -6774774, 7362648, 1097901, -4121558, -5701032, -8435316, 2200097, -835371, 3925063,
+-989453, -2491618, 1671816, 1626719, 2689187, 2113661, 4872641, -153545, 1639604, -3653944,
+3081639, -2616709, -1221918, -1957968, -284005, -4662724, -697932, 1853815, 4342212, -4006668,
+-1836099, -2891050, 3014530, 2255395, -1751273, -348966, -3020436, 2425046, 399969, 10776073,
+10889890, 6299644, 5622112, -5371394, 6260452, 10463614, -7860327, -333397, -20323248, 11562589,
+7881265, -2944200, 4651450, -1360968, 1576253, 7176354, -4584341, 11257109, -10245644, 926639,
+12698608, 5521718, 743029, 9774809, -3518652, 4458176, 2553358, 5209259, 8667244, -5203890,
+-1079647, 15995532, 7991324, -412317, 2181307, -10939819, 14741938, -12502650, -817118, 12876312,
+3984119, 13867376, -8774081, 2170569, -595927, -3473018, 1839320, -13521094, -9468255, 12618614,
+-6345278, -2782602, -4316442, -14376329, 10137197, -3440269, -2394981, -6407555, 6228240, 14472966,
+-11486353, -2401961, 9782862, -10837276, -4718559, 8690866, 12202539, -20272782, -5407364, -1803349,
+8603893, -376347, 10051834, -2516851, -7392176, 418759, 5345087, 12974022, 6566468, -8840653,
+-468688, 6346351, -13016435, -8035347, -2500208, -6733972, -6781217, -869731, 6164352, -5910412,
+1438277, 6359236, 1782411, 1080184, 4494147, -1185411, 2893197, 2723546, 2739652, 1503775,
+-513785, -3988951, -1334661, -1161789, -3568044, -1684701, 556198, 389231, -532039, 488553,
+3941169, -3316252, -1046898, -2480344, 1893007, 1780801, -766652, -2757369, -5944235, 2934000,
+2274722, 3803194, 1066226, 879931, -412854, -3761318, 1500017, -1548873, -1683627, -1137630,
+1032403, -727460, 10566156, 22397718, 4325569, -13252658, -4725001, 4389994, -29392072, 917512,
+176631, -4612258, -1444183, 13564044, -22180822, 4865661, 10368588, -8170639, 9190156, 17127792,
+4252018, -15855946, 4291209, -4005057, -284005, -15544560, -4685810, 14146012, -1585917, 12968117,
+-3412352, -4571993, 2131915, -11011222, -6171868, -7933342, -5859409, -4346507, 10606959, -11732777,
+1913408, 20431160, 13821205, 4587025, -20783884, 3429532, 13656385, 5681705, 824634, -7446400,
+-9016210, -22231288, -15322833, 3139621, -7574712, -7622493, -421444, 9451076, 6734509, -6710350,
+308701, 13459354, -5178120, -2321967, 631897, 17703856, 694174, -932545, 9043591, 2784750,
+-20172388, 5621576, 5870147, -142271, -16700980, 7013145, 9817758, -7396471, -5220533, -13760001,
+3674345, -5082020, 5215164, 2559801, -3206193, -5862094, 3809636, 1686848, 5870147, -2958696,
+9141838, 3173444, -6230387, 701153, -299037, -8642011, 186831, 643708, -3758, -228707,
+-4502200, -3972308, -1797981, -163746, 5742372, 1840930, 3015067, 4571993, -2088428, -2804077,
+2223183, -4531728, -3981972, -228170, -197032, 1333587, -1299765, 949725, 2838437, 2931315,
+398358, -1840930, -402653, -301721, -479963, -35433, -719944, 286152, -77846, 3819837,
+-2214593, -2872260, 7117298, 5000953, -663572, 1889786, -3189550, 1360968, 99858, -1345399,
+-6765647, 22994182, 1116155, -4823785, -473520, 10078678, -5087389, 2668785, -2643016, 2266132,
+8622147, -16147466, 16747688, 18991272, 5236639, 7953743, -6635188, 10708427, 25054692, 676457,
+-3033858, -4782446, 10582799, -3939559, -6243272, -2262374, 3660923, -12685723, 5442798, -11188390,
+12506408, 2746095, 12595528, -8120173, 11468636, 3331821, 15055471, 2393908, 3060701, -5560909,
+9324911, 2250563, -3138547, 13531294, -5455146, -9844065, 19174882, 15285252, 5557151, 14442364,
+20994874, 25490630, -8096014, -8141648, -9167608, 3089692, -11891154, 13763223, -1846299, -1377611,
+-19817516, 4465156, 22213570, 22645752, -1006633, -3088082, -15741592, 140123, 14705968, -7677254,
+-9375377, 8286603, 1195612, -8190503, 2750390, -1414655, -5058935, -1215476, -4355097, -269509,
+8486855, 6302328, -1868311, 1443109, -2195802, -8690329, -11317239, -2181844, 5469104, 2168422,
+7788387, -1682554, -7556995, -2126546, 8082055, -3938485, 4552666, 7458211, -7699803, -2106145,
+-846645, 1845762, -517007, 4954782, 3585224, 1739999, -7670812, 1837172, 4038880, 1179505,
+1599875, 2657511, -6815576, -3212636, -96100, -419833, -3662533, -8790187, -2925410, 696322,
+4418985, 924492, -3670050, -4232154, 1566589, -30114164, -20984674, 11334419, 4515085, -15690052,
+1830193, 7226283, -14301167, -8913131, -6063957, 17476758, 7923678, 5727876, -5313412, -4012036,
+-4188667, -10550050, -14178761, -25070260, 13344463, 11494406, -5190468, 28767154, 13889924, 27632746,
+18985902, 1978906, -8606578, 7493108, 3540127, 12699145, 14494978, 16063178, -2105071, -2545842,
+6915971, -6914898, -1488743, -6063957, -11669426, -19209242, -5505611, 20059644, -4744328, -7660074,
+-11051488, 8135205, 12157442, 8239895, 948651, 11933567, 22917946, -13314935, -6036040, -10186589,
+-7425999, -21663816, -5209796, 5813775, -9826885, -7536594, -25104620, -35691180, 4092030, -23420456,
+-37141804, -26702886, -11205033, 24420110, 8489003, 15015206, 11187853, -24571508, -10355703, 2437394,
+12600897, -12059194, -14512694, -13864691, -4275640, 7692824, -8291971, -30681636, -19374598, -4158065,
+-6155225, -1927904, -4476430, 17799418, 16085726, 16856672, 16994112, 5926518, -28991, 6658273,
+1882269, -213138, 5098126, -13638132, -5287642, 6386617, 8278550, -47782, -4445291, -4714801,
+2151779, -7264937, -10953240, 10495289, -8139500, -3828963, 1005559, -9263708, -8978629, -16045461,
+-6315750, -3497714, 1248762, 14055280, -3442953, -1667521, -4267050, 7352984, -3614215, 750009,
+6740415, 917512, -4648229, 3449396, 6715718, -3698504, -943282, 181462, -2265059, 4105989,
+-57084948, -8475581, 19116362, -19057844, 8643085, -7079180, -30697206, -9179956, 34087544, 42752640,
+-21809844, 1343788, -7125351, -33865816, -26820460, -25352118, -27051852, -14232448, -17458506, -945967,
+6504191, -4272419, 7647190, 7035157, -10719165, -2567854, -14931454, 7046968, -23851564, -21507586,
+5883569, 4314295, -6063957, -7566659, 19779398, -5145908, 27235462, 6386617, 25290914, -16222628,
+11353746, 7464117, 30509838, 16462073, 11089069, 3331821, 5130876, -3077881, 9392557, 12780749,
+-9067750, -13042742, 21539798, -2448131, -25663504, -49961208, -60017336, -43275016, 7850664, 352724,
+-55848532, 18759344, 10203769, 14545980, -18657338, 2850248, 7231115, 2915209, 29549374, 29908004,
+59574956, 19983946, -30867394, -40006008, -24235964, -21937082, -25232932, -22607098, -217970, 12943958,
+17514876, -10550050, 22873922, -18774376, -26103200, -20423644, -13211856, -10049150, -20272246, 13389024,
+-870268, 12815109, 10172093, 1751273, 22475564, -11192148, -4444218, -21511344, 7907572, 11892228,
+-1256815, -1701344, 7155953, -20665236, 1330366, -7206955, 4558034, -9849434, -13806709, 8926016,
+140123, -5762236, -1724429, 10443750, -7501698, 5493263, -6945499, 6222871, 5790153, -2772938,
+-6892349, 4870493, 5682242, -15242839, 6964290, -3766150, -4002373, -4584878, 3849365, -10273025,
+-4702453, 32338956, -8652212, -61108796, -17459042, 50303192, -6958384, 11214696, 7183870, 9385577,
+17638894, 14417131, 5058398, -9982578, -3674882, 2483028, -10845866, -2550674, 18516678, -16564615,
+-9809705, -16608639, -3927748, 2826625, 2177549, 4363150, 8698383, -12646531, 11304891, 27509266,
+-427886, -16115791, 1544578, -10561325, -3543885, 16292958, -17146584, 1901060, 5544803, 19927038,
+29042568, -18459770, -10390063, 11149198, 1664300, 3098819, 3485366, -12276627, -31047782, -5647345,
+-14372571, 28292024, -53727892, -35509180, -14426795, -5964099, 15729781, 3162707, -18849538, -3310346,
+-21736292, -23780698, -8290361, -17233020, 3311957, 13921063, 64969432, 11870216, -9425306, -41816340,
+-34053720, 10013716, -836982, -39276404, 21336324, 20838108, -39567388, -919123, 10581726, 11310260,
+43146704, 18659486, 9205726, -42606612, -21622476, -29468308, 26886496, -2895882, -8473434, -4959077,
+8572218, 27867358, 24114630, -12797392, -24894168, -37015100, 9196599, 21503290, -7395397, -4026532,
+19443316, 10687489, 16987670, 3954591, 6242735, -14445049, -3936338, -6985228, 7521025, 7239168,
+-1685775, -3588982, -1810329, 9846749, 11713986, -17002164, 9977746, 6998113, 14101988, -9178345,
+-5820755, 8303246, 3382287, -12410845, -932008, 13791677, 3015604, -10851235, -3557844, 1433982,
+-20789252, -71877888, 10918344, 11826729, -1828582, -586263, -5012764, -20276004, 8753680, -4013647,
+37523520, -37562712, -7225209, 39516920, -1240172, -25755308, -2685428, 23547158, 28492276, 17730162,
+-4474819, 20562156, -14578730, 14071387, -5602248, -4620311, -12545599, 22469122, 15446850, -13757317,
+-6054830, -1544578, 22757958, -1557463, 2885144, -13740137, 15502148, 10264435, -15950435, 30406220,
+1849520, -26334592, 24240258, -28656022, -14889578, 27108222, -56219512, -35625144, 31346818, -19063212,
+23368380, -35435628, 8522289, 13721884, -19272056, 1285269, -1058173, -36588828, -8114804, 38863548,
+40960568, -45502496, -14783277, 14583025, -36410584, 48192216, 48227652, 7372312, -67815920, -35321276,
+73147048, -37837588, -7154879, 59464360, -34069292, -69990248, -15323370, 64256468, -13205951, -45951856,
+-10916733, -84339736, -3360812, 69333656, -24545202, -68061272, -6453189, -18706194, -8722005, 21000242,
+-1914482, -230318, -24476482, -15781857, -7435126, 28083180, -34372088, 2304787, 6149320, -10345502,
+1780801, 33321966, -20389284, -25722560, -2926483, 9819906, 21096342, -7568269, 10901164, 16252156,
+2367064, -23157926, -12101607, 1146219, -18358838, -8595303, 36826124, -13065291, -34768836, -8868034,
+21218212, 9146133, -2075006, 5200132, -31369904, -17821966, 24967718, 36698348, 5000953, -26138098,
+-12434467, 1769527, 10190347, 18702972, 2509335, -10253161, -39760660, -37519760, -836445, -47367584,
+-13868986, -20135344, -18868328, -14310831, 30993020, -3370476, -9681930, -13002477, 6220724, -16640851,
+-39335456, 30629022, 9853729, 26456998, 8511551, 27359478, -10654203, -16908212, 6304475, -28616294,
+22472342, -25920128, -5234492, 17077326, -19412178, -4155918, -11683922, -31386010, 4993437, -23700704,
+-16829830, -20682416, -15046344, -9459665, -20763482, 3704409, 23614804, -15791521, -5331665, 2873870,
+21794274, -9804337, 7915625, -22055194, 36110476, 11192685, 15663209, 9800042, 34656092, -2027225,
+-40044128, 8893804, 14980309, -11229729, 195958, 21235392, -27744952, -27858768, -32248226, 28123446,
+8679592, -40097816, 15962246, -26473104, -4821101, -37424196, 16904454, 26547192, 5856725, -41459320,
+23625542, 19199578, -4928475, -36449240, 10193568, -22005802, -7159711, -1614908, -10755135, 18009334,
+-15913391, -29578902, 15041512, -6635725, 12782360, -208843, -729608, -243203, -7644505, -9254044,
+6623377, 26313654, -2830384, -37318432, -9923522, 15433965, -18025978, -7924215, 18274012, -6824703,
+-2176475, -14987288, 29614874, 17067664, -8216273, 13037373, -1932198, 5796595, 24113020, -4412005,
+-20348482, 8556649, 13950591, -10838350, 17506286, -2895345, 10969883, 1080184, -7289633, 14118094,
+21196738, -12034498, -21407190, 8404177, 13895830, -10937134, -1717450, 12311524, 4791573, -8567386,
+-8574902, 10903311, 35111356, 66104916, -16107738, 32705640, 6230387, -15805480, -29783450, -17409650,
+38371776, -12775917, 6985228, 14817637, -4070555, 35391068, -5406290, 27748174, 28959354, -35898412,
+18249316, -9492415, 681826, 12998182, 10697153, -1336809, 5619965, 10506564, 35481260, 36575404,
+28105730, -20820928, -7264401, -48864916, -1670742, 11421392, 21807696, 4984847, -40550396, 17588428,
+-24422794, 31221192, -28480466, -19854024, 1833951, -23736674, -4269198, -13732084, 47976932, -26403312,
+-13107703, -50567336, -16645146, -26572962, 71096208, 43301324, -15247134, -48091824, -51731808, -30656402,
+35254164, 46252504, 23248658, 6791417, -62035972, -28731720, 20091320, 17322676, 2462627, 22339736,
+-13052942, -40708236, 19031536, -69045360, 74855912, -7029251, -48767208, 112939384, 15968688, 39305932,
+67460512, -112114216, -81013824, 22391276, -6891812, 17160542, 24319716, -70070240, -5426155, 14178224,
+1174137, 58756228, 3930969, -30707942, -3448322, 31609886, -18556406, 13842143, 15984258, 702227,
+-13079786, 15501074, -41049688, 31221728, -8201777, -12924093, 17346300, 4763119, 1014686, 18540300,
+-4597226, 11144903, -2497524, 7190849, -5564130, -21336324, 12776454, 9169755, 12071006, -12348,
+134755, 8549132, 4462471, 3396246, 24730422, 27850716, 1370632, 18301392, -17300128, 2721399,
+-11431592, 21155398, 18960134, 3118146, -5743445, -12458626, -29805462, -12890271, 2354716, -29436632,
+19801410, -41559176, 25612500, -17151952, 42075112, -19087908, -2014340, 23916526, 4217121, 2017024,
+-10909754, -9495636, 1052267, -16230145, 17738214, -2167885, 18842558, -14900852, -14627585, 4867272,
+715649, -15111842, 9434433, -1997697, 8234526, -4715874, -4074313, 7778723, -7542500, -725850,
+5873368, -3175055, -3598646, 29778082, -2055142, -10131828, -5351530, 14072997, -1289564, -16410533,
+8656507, 17365626, 3551938, 287226, -10334228, 3542274, -8361765, 7882876, 21285322, -7686918,
+9752797, -8157754, -2351495, -8925479, -4110284, 5456756, 6921340, -12575664, 7537131, 2065342,
+-1524177, -12581033, 2190970, 4351339, -9141301, 13180718, 11267310, -22610856, 5805722, -20772072,
+-23332410, 15919833, -8251706, 19261854, 10679973, 401043, 10056666, -3301219, -11978127, -3085397,
+830539, 13348221, -5999533, 3943854, 5701032, -8001524, -1293322, 4487167, -2222109, -1728724,
+7980049, -321049, 3151432, -6700686, 2850248, -907312, -6507949, 12374338, 1276142, 10048613,
+-4862440, 8199630, -4057670, 324270, -6455873, 5379984, -3030100, 12214350, -3688303, 11527155,
+-11939472, 2389613, 1024350, -2865280, 655519, 1165547, 9647033, -744103, -10801306, 6971806,
+-5965710, 829466, 6982543, -7211250, 12010339, -24503862, 51458540, 9631464, 12569759, -6653441,
+4619238, -1599339, 9671729, 2981244, 21876952, 1411434, -12016245, 7136088, -7873749, 3288334,
+4405563, -10183367, 440234, 2335925, -10994043, 9841381, 2456721, -4570382, 13271986, -4873714,
+5188321, -4183298, 2395518, 2455111, 1127429, -1773285, -4046933, -1916629, 1776506, 239981,
+-2322504, -6591164, 4758287, -4454955, 2326799, 4181151, -4542465, 857920, -4249334, 1105954,
+-6685117, -10768557, 10937671, -6009733, -2954401, 4598836, 2057826, -1966021, 1158567, 9403831,
+-10553272, 4445828, -4038343, 8137890, -8886287, 4923643, 2364916, -1625645, 1823751, 133144,
+18790, 3947612, -5658620, 3058554, 2653216, -1577864, -646929, 7110319, -1208496, 2377265,
+-8436926, 11171210, -8820252, -200253, 5516886, -5138392, 3731790, 1190780, 1248762, -5368172,
+4174171, 4391067, -2906619, 1700807, 2103460, -3841312, 1219234, 1797981, -930397, 3850975,
+60666, -147103, -534723, 3452080, 2591476, -2285460, 2935073, -1626719, 1249836, 1489280,
+-501974, 4311074, -2088428, -21475, 2664490, -3503620, 153008, -402116, -2565706, 294742,
+2368138, -788127, -2179159, 4298726, -2907693, 607738, 9752260, -45808512, -113716240, 24562918,
+94565520, 63920388, 133380744, -43626668, -37286220, -76741400, -122638496, -12127914, 38233260, 50383188,
+65773128, 33148020, 3645890, -10761041, -28424630, -40565968, -6133214, -10844792, 4006131, 9296994,
+-468688, 2325725, 4918812, 2160906, 16077136, 19055696, 11869679, -2203318, 2222109, -14130442,
+-29593398, -31575526, -15454366, -20717312, 17067664, 31399432, 33369212, 36590436, 20088098, -5943161,
+-14434311, -26931592, -28403156, -19776714, -11089606, -1302449, 7204271, 13779866, 14846628, 12440910,
+10768557, -1869921, 2915209, -3203509, 1453310, -2414845, -1439351, -882079, -10048613, -10591926,
+-7620346, -15950972, 54224, -3027415, 2040110, 27055610, 35716412, 12016782, 12128451, -9816148,
+-19572702, -13584982, -23575076, -18994492, 6724845, -1657857, -11406359, 8770860, 9468792, 11212012,
+26750666, 11085311, 11760694, 2887292, -14333916, -14200772, -11553999, -12688407, -15981573, -13714904,
+-8104604, 2495913, 17887466, 26856430, 25225416, 10181220, 5139465, -6580964, -12132746, -10984916,
+-12022687, -13974213, -6322729, -5831492, -418222, 4684736, 3676492, 10821707, 14454176, 10388989,
+7161321, 2479270, -843961, -6837051, -6983617, -11012833, -12304544, -9743133, -8606578, -2209761,
+9312026, 13800804, 14954539, 13212930, 5462662, 2441152, -6564858, -10540923, -5542119, -7788923,
+-10510859, -8010114, 1541893, 7206419, 6845641, 3811247, 4391604, 3900904, 3070902, 907849,
+-648003, -1088237, -2707440, -3576097, -3234110, -3854733, -4467840, -2411624, 2134062, 3740917,
+4836133, 4030827, 2955474, 1007707, 134755, -1179505, -1682017, -2179696, -2368138, -2689723,
+-1528472, -598611, 963146, 1566053, 1571958, 1340567, 1220845, 251792, 40265, -292058,
+193810, 183610, 629213, -887448, -1576253, -1376537, -751619, -707059, 336081, 965294,
+1271847, 751082, -404264, -536871, 740882, 1180042, 1013612, -317291, -1243930, -1464584,
+-526670, -38118, 273804, -170188, -271657, -355409, 91805, 351650, 860067, 669478,
+655519, 456340, 129386, -431107, -631897, -853625, -719407, -745177, -435402, 155156,
+786516, 755377, 723702, 434329, 302795, 181999, -110059, -589484, -540629, -440771,
+-238371, -86973, 122943, 4295, 20401, 77309, 208843, 239444, 201863, 39728,
+-55835, -110059, -84826, -52613, -22549, -25770, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-6444599,
-798327, 2026688, 1962800, 10102837, 2733210, 2121714, -3013457, 372052, -5147519, 1188632,
-4697084, -2405719, 208843, -1010391, -2541547, -4082367, 3124052, -6818261, -3449933, -3429532,
-3672734, 4026532, 2113124, 951872, 2910377, 2401424, 4817880, -1694902, 1676111, 2991982,
-621697, 975494, -3542274, -1534377, -1490891, -1342177, 3251827, -6272263, 1030255, -2182917,
-6541235, 141734, -1197222, -1660005, -2719788, -915365, -2837900, -8267812, -2628520, -1631014,
--1349694, -1866163, 836982, -1561758, -405338, -546535, 2873333, 1277753, -390305, 1831267,
--1633698, 3528316, -2338610, -3856881, 3694746, 3876208, -1698660, -3704946, 337155, 2006287,
-1508607, 1741609, -1764695, 6442, 1409286, 1909650, 823023, -544387, 217970, 2376728,
-4591857, 2216740, -587874, -71404, -1111323, -1171452, 944356, -1537598, 916976, 1122060,
--466004, -166430, 483721, 426276, -483721, 367757, 243203, -2133525, 315143, 148713,
-636192, 360240, -831076, 748935, 583579, -71404, 9132174, -1735167, -898722, 960462,
-2503966, -6768332, 4179003, -8029978, -383326, -3898757, -592169, -2584497, -626528, -646393,
-4002373, -3415036, 4336843, -4567161, -4985920, 2081449, 6640557, -7876433, -2202781, -3821447,
-33823, -1998770, 2101850, 2794413, 1403381, 2847027, -4584878, 143881, 6385006, 2493766,
-795106, -4672925, -6663642, -4020626, 998580, -3421478, -1939178, 1275068, 4293894, -3911105,
--3850438, 1529545, -2820720, 4931160, 1639604, -533113, 3473555, 3294240, -24159, 5544803,
-2734821, 1720134, 1455457, 3626563, 5727876, -3809099, 1079111, 1555315, -4061429, 335007,
-3263102, -1301912, 8281234, -2588255, -2222646, -1753420, 3040837, 4198868, -5403606, -2218351,
-1445793, -1002875, 1301912, 494458, -2379412, 1026497, 483721, -1764695, -2873870, 1148904,
-779537, 2590402, 199716, 780073, 1181116, -144955, -877247, 1890323, 93952, -36507,
-1632625, -926102, 780073, 2175938, -206695, -506806, 396748, -359704, 660351, -1381906,
--444529, -660351, 68183, -236760, 842350, 59593, -866510, 5369, -11746736, -1891396,
--2608656, -2083059, -1039919, -1426466, 6268505, 7490960, -1695438, 6114423, 2340757, -3361349,
-1603097, -5100274, 914291, 1093606, -6860137, -1005559, 1080184, 1212791, 4765803, -903554,
-4141422, -2755759, -5259725, -5555004, -1580548, -2805151, -4210142, 4381404, -1701344, -834297,
--753230, 923418, 2391223, -6732361, 38118, 951335, -3184182, 8046085, 641024, -1971927,
--1729798, 8590471, -601295, 1100049, 5087389, 160524, 3114388, 1217623, 299574, 4744865,
--14496, -3303367, 4263292, 2289755, 2743410, 3862249, 1286880, -3118683, 2240899, 3170760,
-3083250, 4752382, 42413, -4383014, -3497714, 5571647, 7755101, -7056095, 1433445, -1860795,
--1231045, 1631014, 2970507, 2846490, -2245194, -899796, -2168959, -3635153, -3171297, -1161252,
--2010582, -3123515, 729071, -846109, 1204202, 1020055, -957778, 570694, 207232, -2536715,
-874563, -1712618, -3075197, 214748, -896038, -1291711, -1372779, -387621, 574989, -463320,
-906775, -587337, -1027571, -1427003, -1308354, -563178, 253403, 1028108, -1989644, -8659191,
-9226127, 8546985, 6443525, -4497368, 5036923, 9095130, -2289218, 7107097, 2674691, 1066226,
--1108102, 7836705, 3704409, -1836635, -5622112, 3258807, -2330020, -3007551, 3175055, 3748970,
-1644973, -5582384, 905701, 5010080, -2444910, 1698123, -10977936, 1580548, -883153, 5288179,
-1293859, -2278480, -3309809, 6768332, -5826660, 471373, -4705674, 549756, -1440962, 3780645,
--787590, -1233193, -5765994, -1384053, -1016297, 7160784, 358093, -6550899, -241055, -361851,
-2240899, 3424163, -2913062, 12885, -3717294, 3969624, -868657, 4798016, -2586644, 7143068,
-3550327, -7883413, 8356396, -1204202, -5768678, 983011, 7636989, 1551020, 1178432, -6174016,
--399432, -2391760, -3332895, -3234110, 297963, 2911451, 3763465, 2043331, 2059437, -2409477,
-1818919, -2088428, -231928, -111669, -958315, -401043, 2179696, -3432216, 942745, -335007,
-309775, 1153736, 947577, -92342, 1502702, 163746, -2249489, -2446521, 1449552, 662499,
--85899, -1615445, -306553, 390305, -204548, -705985, -1560147, 993748, -11274, -981400,
-1109175, -653372, -413927, -1257889, -754841, -474594, -1573032, 1119376, 912144, 10045392,
--3352759, -7137162, -298500, -10743324, 64425, -9220221, -3156801, 6471979, -6557878, -7241315,
-2268280, 687195, 731755, -1635846, -2323577, -5218922, 3661460, -10288594, -3114388, 1132261,
-6503118, 459562, 6596533, 2400350, 14404247, 5571110, -75699, 712965, 6899865, -1547799,
--1967632, -1199370, 1206886, -4433480, -2168422, -7531225, -456877, -3414499, -2021319, 9464497,
-228707, 5953362, -2274722, 2478196, -515396, 3586835, -1094680, 3345243, -3145527, -3904662,
--565325, 1214939, -3950833, -3941169, 433255, 2159832, 4437238, -540092, -1960116, -799401,
-4214437, 7140383, 466541, -4713190, -6791954, 188979, 1965484, 810675, 9454834, -5785858,
--240518, 4290136, -1473174, -4830765, 6687264, 3119757, 1252520, -3177739, -3450469, -5779416,
--2222109, -534723, -2966749, -1430224, -2558727, 598611, 762894, 1566053, 268972, 533113,
--3194919, -1597191, -3430605, -1121523, -932545, -2576444, -1618666, 1022202, -228707, -1029718,
--220654, 973347, -2115272, 1205812, -1501628, -76773, -576063, -1096290, -336618, 77309,
-1078037, -1443109, -2217814, 1949915, 1191317, 635118, 8924942, -6823630, -1378148, 584652,
--518080, -236760, -5617817, -4317516, -595927, 3755412, 1370632, 1519345, 1584843, 3946538,
--795643, 3611531, 2922188, -9246528, -3549791, -10854993, 2830920, -3810173, 5481989, -3503620,
--4793721, -3500935, 2852395, -7226820, -6018860, 8443906, -4593468, 9153649, -2153926, 2769180,
--3211562, -6128919, 6780680, -5194763, -5854578, -564788, -3183645, -6860137, -5298379, -8655970,
-359704, 5601174, 3212099, -3350075, 9639517, 3557307, -3543885, -4456029, -6976638, 327491,
--2616709, -4855998, -2464238, -2046015, -3441343, 1860258, 7706782, -442382, 499827, -5199595,
-2446521, 2636573, -4553739, -3583077, 1834488, 9401683, 3725347, -2300492, -1254131, -1944010,
--9668508, -7574175, -6424734, 6736120, 7114077, -1008780, -3350611, 3146601, -2146410, 2766496,
--1442572, 1326071, 198642, 171262, -3155727, 2127620, -1858110, -1283658, -521302, 1908576,
-1376537, -153008, -2646237, 1694902, -415001, 1254667, -921807, -545461, -2345589, -971200,
--126165, -245350, 403727, 486405, -339839, 433792, -1961726, 902480, 139050, 320512,
--744103, 2421288, 1458678, -56371, -995359, 279710, -1515587, 2735357, 558883, 12694850,
--2521683, -124017, -2199023, 8227547, 7798050, 2625836, -13258564, -2289755, -16081431, 9363566,
-3903052, 164819, 16414291, 7709467, -1542430, -7496329, 6714108, -3264175, 1599875, 2211908,
-985695, 5310727, -4893579, 9149354, 3433826, 802085, -2884608, -4802847, 6189048, 5189394,
--1100585, 3340411, -7953743, 1378685, -10592463, 4189204, 513785, 5265093, -8710731, 1693291,
--2896419, 1809792, 9745818, 8223789, 317828, 2309082, -6178311, 7924215, 154619, 16975322,
-17977122, -2495376, -4886062, -5017059, -3977677, -10565083, -2995740, -13766981, 759672, -1243393,
--827318, -2887829, 4735202, 7978439, 12596065, 11666742, 9000104, -15005005, -10693395, -568009,
-686658, 15532749, -11070278, 8298414, -646393, -3259880, -1671279, -485331, -3153580, -8762270,
--5719823, -1734093, 2479270, 710280, -271120, -2464774, 1313723, -3172907, -348429, -1735167,
-3267933, 3598109, -942745, -807991, 3404835, 2528125, 397821, -616865, 1221918, 116501,
-476205, -781147, 1449552, -223338, -911070, -1500554, 397821, 1372779, 2173790, 4663261,
-3678103, -1918240, 412854, -3502546, -674310, 1406065, -310311, -783832, 61203, 580357,
-742493, -4709969, 9103720, 1893007, -6867653, -3828963, 17166448, 16886738, 18927384, -1942936,
--886911, -3311420, 3113851, 9228274, 10616622, 3036005, -4682588, -9222369, -18701362, 5452461,
--11099269, -2482491, -1209033, -2448668, 1171452, -619549, -3501472, -472983, -10876468, -4336843,
-564251, -2056753, -12145094, -5145908, 949188, 8706972, -2560338, 197032, -9686225, -3294240,
-33286, 6306086, -3979287, 3857418, -10816338, -3040300, 2414309, 4022237, -3024194, 14364518,
--3045132, -1875827, -7589207, -2523293, 5720360, 1928977, -742493, 7473780, 10331007, 12104828,
--2225867, -6126771, -6981470, 54224, 1353989, 2807298, -4980552, 3877282, 5086852, 4311611,
-4159676, 12110197, 8111583, 5389110, -740345, 2694555, -12186433, -2305861, 1184874, 6156299,
-9707163, -1894618, -5622649, 1690070, 3281355, -2865280, 4928475, 3995393, 5334887, 808528,
-2279554, -292058, -526134, -3960497, 2976949, -1258962, 1921998, 1764695, 472446, 2849174,
-155693, 4605279, 3173444, 2069101, 1207960, 1277753, -89657, -623844, 273804, -1958505,
--240518, -2441689, -3995930, -1571958, 700617, 658741, 1585917, -818191, 1006096, -1621350,
-622770, 2035815, -195958, 350577, -17642652, 21931714, -627065, 3214783, 11991012, 202400,
--4217658, 619012, -21415244, -13037373, -6129992, 3410741, -4224637, 2435783, -10018011, 6920803,
--3504157, -103079, 13202193, -12890271, -8575439, 12349105, -3880503, -18121540, 1278290, -11178189,
-2302103, -940061, 6778532, 2908767, 3415036, 1366873, -2191507, 8036421, -901406, 10328859,
-6318971, -3692598, -6208912, -5833640, 2813204, -2875481, 2831457, 1984812, 6087580, 1760400,
--11431055, 657667, 3884261, -3969087, 486405, -7901666, -1749662, 676457, 517007, 18080202,
--3158949, 12840878, 15394773, -4255239, 8243653, -2556043, -447750, -8585640, 5444408, 13067975,
-9156870, 2009508, 3604015, 8089571, -521302, 6699612, -2727304, -3783866, -6521908, 3535832,
-16738561, 3713536, -2150168, 1298691, -11747809, -4008278, 295816, 11041287, 8096014, 3459059,
-7191923, -2091649, 7065758, -109522, 4453881, 522912, -319975, -885300, 4936528, -562104,
--3069291, -1944010, -1203128, -791348, -1218697, -2513093, 3577171, -2338610, -3039226, -932008,
--4000225, -2815351, -3408594, -2017561, -2368675, -3129421, 1083406, 679142, 1355599, 1057636,
--1787780, -994822, -3135326, -4192425, -333934, -2352568, 1396938, -1150514, 398358, 1983738,
-2172180, 1422708, 3699578, -1023813, -274878, 2734821, 21058224, 3080565, 5266167, -4956393,
--2501282, 14307073, -9410273, -2160369, -18539226, 17405892, 9105868, 1270237, -6282464, -17502528,
-1797444, -4644471, 2171643, -19628538, 7033546, 10393284, -11389180, -2714419, 1736241, 1225139,
-3828427, 11278584, 13889387, 60666, 1611, 2613488, 561567, -8384850, -9575093, -6350109,
--12628278, -6213744, 10825465, 5040144, -3998615, -5329518, -3499325, -22239340, 4874788, 5361730,
--10378788, 17068736, 652835, 12735115, -4538707, 8266202, -2680060, -10991358, 1037772, 10147934,
--5543192, 5578089, 6552510, 18127984, 5064840, 5706938, 17412334, 9925133, 6626061, -24006182,
-5025112, 3692061, 4713190, 505196, -9747965, 17426830, -12878996, 9946607, 10464688, -15654619,
--3367254, 21455510, -19040664, 3255048, -4416300, -2053531, -6819335, 8360691, -3515968, -7116761,
--6024766, 3744675, 8179765, -7562901, 9490267, -7806103, -3350075, 10727755, 4020626, -876710,
--4641786, -5010616, -59056, -1984812, -8076686, -932545, -1655173, -2280091, -657667, 6444599,
--459562, -5936719, 641024, 2517388, 6240588, 3848828, 4981089, -1960116, 2678449, -3543885,
-278099, -1204738, 2677912, 5116380, -3671123, 2353642, 2534031, -275415, -3156264, 1756105,
-1498407, -10980084, -16589311, -7285875, -6890202, -22287660, 15271830, 2438468, 16299401, 984621,
-2405719, -7675644, -3949223, 7968238, -518617, 8237748, -8036958, -2531346, 1548336, -3612068,
--6560563, 9812927, -9846213, 11678553, -3970161, 3843996, -2410014, -7821136, -6988986, 3455838,
--2467459, -21475, 6087043, 23314156, 1772211, -2907693, -7740068, 3410741, 18872624, -3381750,
--2956548, -10852845, -3660923, 1644436, -10220412, -3700114, -14628659, 9567040, -17933100, -32564442,
--3294777, 1132261, 15699179, -16028281, 15080704, 9829033, -7519951, -15124190, -2294586, 2598992,
-4592394, 649614, 9595494, -6213744, -2216203, -32118840, -4158602, 33378876, 3406983, -5482526,
--4265977, -17137994, 13131326, -5428302, -4744865, -4138738, -2324651, -7346542, -10945724, 3459059,
-6573448, -198642, 5057324, -9241159, -16978542, -477815, -8858907, -2448131, 501974, -8798777,
-2271501, -6372658, -11314018, -8359080, -3949223, 3874061, 5469104, -836982, -13414793, -3238405,
-1066763, -6536404, -2780455, -396748, -6032819, -3486440, 1880122, -95026, -4695473, -1772748,
-2464774, 1020055, -6307697, -2400887, 359704, 6206228, 6884833, 1989644, -1796907, -2228014,
--566936, 4689568, -745714, -227633, 578747, 1908039, -5243082, 5314485, -890669, 3661460,
-605054, -3637837, 15421617, 13775034, -4468377, -5697811, -1419487, -22228604, 14570677, -14069239,
--11621108, -9009768, 5444408, 2199560, 13498545, 1612223, -7482370, -8728447, -9052180, 6944425,
--3529390, -4863514, 12321187, 13800804, 4631049, -9360881, 11343009, 18377092, -7124277, -4070555,
-15855409, 4063039, 3095598, -10431402, -118112, 15124190, -22466974, 15365246, -3457986, 2055679,
-9121974, 11111080, -206695, 5537287, -10650982, -8629126, 5669894, 21160766, 5555540, 5143760,
-7896834, -10714333, 2117419, 9383430, 5309117, -1782411, 7435126, 4687957, -12846784, 10306311,
--12527883, 2769717, 8908836, -9856413, 7340636, -12023224, -4938139, 2186138, 278099, 7663833,
--5083094, 6572911, -5197984, 916439, 2284386, -2248952, -5105106, -9719511, 25772488, 2763275,
-7595113, -11322608, -26674432, 18679886, -18203146, -7818451, -314069, -4170413, -2920041, -1578937,
--7665443, 4628364, 3510599, 1993402, -7111929, 8494908, 6293738, -2852395, -3170223, 2502355,
--2656437, 2357400, -2683281, 9019431, 3041374, 843424, 6111739, 6752763, -4206921, 42950,
-2933463, 4697621, 1612223, 2253247, -4560182, -5553930, 4162897, 5833103, 8093866, -1149441,
--7992934, -1067836, 394063, 3805878, -12133819, 4472672, -4270271, -1705102, 2409477, 2791729,
--3258807, 4126927, -5906, 3287261, -2243584, 7810935, 2325725, 3264175, -1458141, 4451197,
--14687178, 15363635, -5776194, -15374909, -19902342, -5637145, -2099165, 11547556, -17526688, -2903935,
--2130841, 9074192, 17250736, 14258755, 8857833, 1267552, -4519916, -2776160, -1858110, 12096239,
-9943923, -2459943, 1511829, -2758980, 7776575, -19053548, 11235634, 6129992, 8780524, 2902861,
-1970316, 16231218, -6507949, -14006962, 8053, -4680978, 884226, -19390166, -10741713, -1239635,
-16054051, -10998874, -3507915, 2545305, -715649, 361314, 15779173, 6272263, -2521683, 1289564,
-7688529, 5011153, 18395882, -5537824, 8369281, 9283035, 4959077, -3100430, 2959233, -20202990,
-8528194, -3868155, 851477, -4722854, -11119670, -14977088, 2962454, -7203197, -20249160, 4732517,
--17214228, -12738336, -3028489, -25982404, -15733002, 3752728, 10972031, -13038447, 2725694, 906775,
-29651380, 28061706, 26535918, -933082, 1431298, -14121316, -8502962, 10969346, -6067178, -4073240,
-1771137, -3697967, 6172942, -7793218, -3872450, -425739, 2303176, -4745402, 5654325, 5598490,
-193274, -2610803, 1517197, 5462662, -4624606, -6176700, -1605244, 4893042, -6914898, 11421929,
-6595996, -703301, 5190468, -2024540, -4874788, -7814693, -4212826, -6953552, -3737695, 3784403,
-630286, 11510512, -2792266, -3925063, -1844689, -26360898, -29148870, 17122960, 15370614, 5066988,
-16666084, 28007482, 7866770, -10867878, 8944806, -4410395, -8082055, 12734041, 787590, -11661373,
-6935299, 9128416, 1999307, 3124052, 565862, 1294933, 25630218, -689879, 5376226, 2267743,
-15850577, 808528, 25421912, -253940, -11394548, 20315732, 4037269, -9175124, -3338263, 10695542,
--2388002, -321049, 8329552, -15676631, 15369004, -3407520, -22868016, -6492380, 2084133, -22843858,
--2693481, -2499671, 9842454, 9529996, 16941498, -12109660, 2461553, 2595771, 3408594, 7181186,
--11028939, -12386149, 6285148, -421981, 12916577, 10503879, 3136937, 27170500, -4695473, -4307852,
--18797998, 27729382, 4776004, 19209242, 11684459, -31175556, 4311611, 2721936, 18901614, -10203769,
-7975755, 75699, -8408472, -1124208, -6823093, 15250892, -29542396, -3665218, -2253247, 28454,
-1186485, 4636954, 7051263, -188979, 13428752, -612570, -2087891, -4436165, -2965138, 802085,
--4865661, 1526861, -1433982, 4028143, 2727841, -1465121, 988379, -1652489, -8346732, -503585,
-263067, 2024003, -8522289, 4432406, -1870995, 4662187, 3572876, 6612102, -6932614, 7738458,
--4373888, 2478733, 5464809, 5044439, -1888712, 158914, -3207804, 4377109, -409096, 2132988,
--251256, -909459, 11171210, 6352794, 13422, 5264556, 1425392, 5478768, 1060857, 17191144,
--36191540, 21551072, 21920440, -9299141, 5235029, 3085397, 5953362, 194884, 17453674, -12659953,
--2716030, -13583371, -87510, -7656853, 1252520, 3708704, -19850266, 8987219, 21615496, -14811732,
--14216342, -14489609, 28769838, -12513387, -7037841, 2723009, -9832254, -29743186, 5255430, 21678310,
--29680372, -13404593, 10276246, 15985331, 4338454, -4463008, 6889128, -10482405, -4926865, -495532,
-14715632, -20151450, -16061567, 11463805, 18477486, 7331509, -23073638, -7412040, 577673, -1010391,
--4008278, 12111808, -3578245, 18252000, -14804215, -3165928, -25233, -16885664, 10744398, -19666118,
--13571560, 6364605, -8826158, 19251654, 27738510, 16440061, -18353468, 9794136, -5401995, -5425081,
--12958453, -3955665, -21116206, 16219407, 11873974, 5823439, 626528, -9903121, -5614059, 6609418,
--22046604, 17871896, -4215511, -2942053, 9294846, 1749125, 8462696, -2308545, -1345935, -7430294,
--2190433, 817118, 1487132, -5802501, -2092723, -2709588, -2144799, 10102837, 1040456, -50466,
--4806069, 4176319, 3952444, -3430068, 2171643, 4699768, 994285, 7832410, -2791192, -5299453,
-1079111, -8718247, 4533338, 3430068, 1100585, -140660, 3478387, -615254, 5707475, 1984812,
-4047470, -6859063, -2166274, 6669548, 304943, 2803540, 3279208, -6380174, 885300, 6725919,
-21095268, 35125316, -193810, -26490284, 5682779, -31620086, 5484673, 14443438, 6822019, 1966558,
-19104552, 14139032, -791885, -2848100, -26127360, -14058502, 449361, -12202002, 35535484, -6416681,
--7981123, -15261093, 1972464, 13397077, 9398999, -430570, 6922414, 10448582, -15670725, 5440650,
-30502320, 10833518, -20823076, -14671071, 9950902, -10274099, -1343788, 7471096, -4561256, -17183628,
--4048007, 2149631, 29072096, -6219650, 6514392, -7658464, -23361400, 4160213, 29495152, -7853348,
--17563196, 5202279, -10725607, 7266011, -6095096, -7114614, 20298552, -5104569, -2226404, 9961103,
--17343078, 6362457, 21481278, -8779450, 1925219, -12463995, 37711960, -6763500, 4574677, 12297028,
--8650064, -2004676, -9955734, 5368709, -11260867, -9483825, -8862665, 14512158, -19466940, 2974802,
--2800319, -5727876, 15303505, 453119, -5094905, -6342593, 894964, 5827734, 4540854, -8587250,
--1482838, 519691, -2327336, -10648298, -6378027, -1825898, 2673617, 1007707, 976031, 1654099,
-8888972, -8715026, 9341017, 1977296, 2777770, 779537, 7431904, -3985730, 12133283, -2473901,
--71404, 9388262, 12192338, -6139119, 8012799, -3760781, 2766496, -6811818, 6226092, 5329518,
--10295037, -313533, -4043712, -1212255, -5082557, 3992709, -6281927, 6004901, -1140851, -2063195,
--10433549, -58262304, -20553030, -1269700, 18335216, -9952513, -29265370, -11164231, -4468377, 14010720,
-3492882, -4100083, -14578193, 14952392, 26734024, -12454331, 20160040, 4886599, -38779796, 14165339,
-17898740, -6578816, -15890305, -3164854, 23566486, 25143276, -2305324, -19463182, 1140851, -2423435,
--2690260, -16259672, 3762391, 7086696, -25636122, 17329120, 14725295, -18168248, 3127810, -20355998,
-6932614, 48959944, -44144212, 45248016, 20382304, 1825361, 27624156, 13595182, -28639916, 16874390,
--21580600, -5027259, 23190140, 866510, 6514929, -12177306, -21016886, 63149440, -15070503, 688805,
-24793772, -12290586, 4697621, 1680406, 15254113, 35474820, 33753076, 31883152, 1831267, -855772,
--5333813, 1401770, -8843875, 2181307, 27081380, -7447474, -9616432, 2493229, 3607236, 15586973,
-18266496, 5021891, 5008469, 12860206, 5405753, -10233296, 3107409, -5392869, -14957760, -6883222,
-7628399, -11392401, -16221018, -12440373, -710280, 1234803, -9360344, 4490389, 10280004, 1382443,
--3516505, -861678, -11884711, 13675713, -2185602, -3275450, 9499931, -8209293, 6417755, -6207302,
--4904316, 16134582, -186831, -12404939, 15399605, -9780714, 9237401, 4137664, -6210523, 4427575,
--2257005, 11057930, -5294621, 3695283, 448287, 692564, -1306744, 11781095, -6285148, -1668595,
--970663, 1883343, -1844152, 4988068, 9135932, 14837501, -3950833, -42844448, 19428822, -31130460,
-43725988, 5146982, -38075420, 8566312, 308164, 17850420, 8396124, -9223979, 32341104, 7890392,
-1609002, 21607980, -17321604, -24044838, 745714, 12576738, 43589624, -6144488, 68719, -4574140,
-31399432, 3422552, -25025164, -14763413, 4678293, -2763812, 13868986, -24268712, 11606075, 3965866,
-7132330, -2163590, -9543954, 5531918, 9694815, 108448, 29151554, -47097000, 4052302, -16603807,
--10394895, -6066105, -34515432, -50039592, -51883740, -37650756, 3921842, 205622, -30129732, -228170,
--5556614, 3256659, -18731962, -48205640, 47435228, -833761, -7107097, 9700721, -47234976, -3219078,
--11832635, 8869107, 13749264, 64755760, 48143900, -5387500, -698469, -1503775, 12606803, 19596862,
-11764452, 8954470, -1928977, -7792682, -45984068, 8689256, -1069447, -17861158, -8148090, 29989072,
--4343286, -5438503, 14166413, -1184337, 15549392, -6075231, 7736310, -848256, -3425237, 11110007,
-13387413, -6149857, 1748052, 6028524, -2690797, 2857764, 537408, -137439, 9078487, -3895535,
--4871567, 7681549, -9113384, 11874511, -242129, 6437619, 9687836, -4923643, 2263985, 8625905,
--2250563, -5618354, -2279554, 998043, -1756105, 2384781, -11854647, -707596, -9434433, 9749576,
-1241782, 6576132, 4428112, -1357210, 77309, -602906, 4219806, 6087043, 4743792, -729071,
--5887327, -836982, -12341589, 58750856, -56296284, 9513889, -10931766, 2066416, 23664732, -17459042,
-5834713, 789200, -60898880, 1392643, -6926709, 2836289, 6921877, -27276264, -10231686, -45079440,
--11694122, -2314451, 2353642, -17140678, -12897787, -19708532, -8269960, 19305878, 4129611, 39119100,
-9503689, -13402445, -14030584, 23984708, -26934276, 46032384, -36181880, 10370199, -29213294, 462246,
-27661736, -50591492, 47418048, 8252780, 5380521, -34788700, -7041599, -6716792, -114354, 16479790,
-16476568, 20779588, -40120364, -1160178, -15850577, -13780403, -15522549, -21718040, -15042049, 599148,
-22783728, -24626806, 6459631, -45212048, -15207942, 11232413, 13281649, 2273112, -51394116, -27902256,
--18405008, -26280904, -21770652, 1647120, -17185238, 27101780, 8038032, 13493177, -9611600, -14310831,
-45556720, -15507516, 12130061, -9368397, 3398393, 34153044, 4435628, 6016713, -19394462, 19324668,
-11164231, -8254927, 17947058, -13792751, 4822712, -5241471, 12088185, 2260764, -4276714, 6455336,
-15436649, -5545877, 4810364, 5349919, 4483946, -2065342, 4009889, -2446521, 10517838, -3772592,
-1576253, 9921374, -2319282, -4181151, 2907156, 4157528, -7212861, -1785096, -19638202, 11918534,
-8057359, -177167, -11013907, -4661114, 703838, 3798362, 14533096, -2697776, -4327717, 4876399,
-3514894, -2515777, 14671608, 2532420, -18569292, 4457639, 17725866, -2360085, 25269976, -47755740,
-72659032, -54796268, -5830955, -33084134, 6443525, 656593, -20035486, -28305446, 32976758, 22152904,
-10305774, -14474577, 14505715, 4473209, 31126702, -24748138, -16401943, 19342386, 32357210, -41443752,
-16623671, -1540283, 19578072, -14981383, 5650567, -18406082, 3662533, -34430068, 11156714, 36796596,
--1355062, -2893197, 45674292, 7917772, -21253108, -44801876, 38128572, -20284056, 17119202, -16482474,
-45601280, 20124606, -5175973, 4645544, -26626112, 3480534, 11237245, -12845173, 12623983, -55409908,
-21565030, 50153944, 39099236, -21780852, -22706956, -22711250, 25249038, 2006824, -8215736, 2010045,
-64677912, -31680216, -14931454, 25066502, -21759914, -58583352, 24705188, 13053479, -42004780, 23443006,
-40360344, 35721780, -11091216, -16018617, -28706488, 15274514, -17781164, -11308112, 25832618, 17674864,
-7871602, 22789634, 12707198, -8858370, -8394514, -29473140, 6706055, -12397423, 10035728, -10939819,
-20837034, 14480482, 3039226, -3970161, 19801410, -10946261, -1720134, 2552821, 7494718, 4603668,
-9052180, 8441221, 514322, -4848481, -3045669, 7082938, 3571265, 2831994, 798864, 11165841,
-35999344, -1119376, -3042448, 5381057, -12757663, 4430259, 12836584, -18676666, 8017094, 9616969,
--7332583, -5258114, 8311299, 4756677, -10959683, -46898360, 25070798, -2731062, 6548752, -17177722,
-15026480, 332860, 8246337, 2514167, 2739652, -9758166, 7482370, 25409026, -32405528, 27880244,
--4751845, -17097192, 5735392, -11624866, 7548405, -11909944, -9797894, 8259222, -25849798, -2639258,
-34438660, -49707268, 14027900, 2384244, -8318815, -15270219, -18077518, -11744588, 36133024, -29743722,
--4262218, 11691975, -30232812, 7684770, 16594143, 11112154, 5682242, 5243082, -17055316, 13442174,
--44475996, 637803, 38938712, -16267726, -4376035, -8722005, -10985453, -295279, -31481036, 16701517,
-12650826, -26013006, 24422258, 6820408, -29673930, 12224551, -5762773, 21544092, 18762028, -27579058,
-9638443, 30680562, -28879896, 16183437, -20565914, 16218870, 18753438, -29297582, 16513076, -2090039,
--15543487, 22402550, 1174674, -35239132, 10836739, 15723338, 4732517, -9773198, 1705639, 26776974,
--12370043, -24957518, 26601954, -1078037, 2010582, -1106491, -3363496, 16426102, -12227772, -5795522,
-11569568, 4500589, -2866891, -11911555, 17648020, -6638946, -11600707, 1040993, 9272834, -5463199,
--4316442, -2676302, 13774497, -10678362, -5604933, 1090922, 7461432, -6538551, 5339718, -154619,
-13649406, -8552890, 2129230, 1264868, 1305133, 12124693, 22726282, -9742060, -107778984, -235927392,
--93603440, -156848992, -213573696, 80554256, 28566902, 69540352, 317378208, 264364896, 174210848, 272515136,
-185121680, 21909166, 45882060, 33170032, -145693888, -94066224, -64885144, -166638288, -170088224, -47278464,
--47776144, -105819944, -31785980, -23027468, -127413424, -109594144, -35851704, -60446832, -120363776, -29632590,
--20510080, -94363112, -11270531, 65066608, -28760712, -23274428, 96199216, 58896348, -39800388, 85205168,
-140754672, 15393700, 79008608, 172852032, 84334904, 43409236, 186479424, 136257840, 101245264, 226518192,
-306565632, 242429968, 281605440, 365037856, 238260624, 155841808, 204504336, 131644504, -37111200, -9382893,
--91223496, -225601216, -318817024, -342947232, -458939264, -522025888, -554204864, -536141312, -515258112, -512292960,
--427953760, -327641568, -307483680, -200805296, 15673946, 84666688, 109923784, 333779104, 327557280, 225815952,
-332813248, 305007648, 165339056, 160667216, 212138640, 128190280, 60155312, 148279984, 151293984, 67783176,
-122181616, 184613264, 122301880, 72661720, 157024544, 129997920, 25854092, 79507360, 115389664, 12598213,
-21614422, 126342904, 77158016, 41384156, 133992776, 132815424, 48302276, 105766792, 91292216, -24161338,
--66640176, -69076496, -158614752, -214687168, -211965232, -244640800, -269623008, -279608288, -273707520, -280787232,
--312185600, -322973472, -308976192, -344664160, -295132448, -201167136, -153895664, -52661668, 88653496, 185942016,
-272508160, 351890976, 357875456, 306459872, 278437888, 228783776, 173322864, 139827488, 117795920, 95318744,
-74786656, 67928664, 63155884, 47057272, 40037684, 35871568, 19665582, 944356, -9678172, -26363046,
--44558140, -56114284, -59055264, -64900712, -62697396, -51506320, -38879116, -28726352, -16068546, -8058970,
--1786170, 5812165, 10996190, 10759430, 11323144, 7328825, 823560, -2627446, -5781026, -12096239,
--14780593, -16276315, -20671140, -21386790, -18957448, -22625888, -25163140, -22430466, -24363738, -27937152,
--26048976, -31117038, -37219648, -35335232, -35476968, -37627672, -32907502, -28376312, -25067040, -17754322,
--8554501, -3359738, 2591476, 11011759, 18143016, 24471114, 31445604, 37023156, 39361228, 42083164,
-45114872, 46407660, 47404092, 48569636, 46903728, 43354472, 38542500, 32251446, 24950002, 15705622,
-6451578, -2192044, -11038066, -16878684, -19400368, -20314658, -19907710, -17541720, -15591805, -14633490,
--13009993, -11562052, -10954314, -10108206, -8999567, -8184060, -7532299, -6605660, -5648419, -4878546,
--4104378, -3309272, -2682744, -2281165, -1988570, -1767916, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+798327, 2026688, 1962800, 10102837, 2733210, 2121714, -3013457, 372052, -5147519, 1188632,
+4697084, -2405719, 208843, -1010391, -2541547, -4082367, 3124052, -6818261, -3449933, -3429532,
+3672734, 4026532, 2113124, 951872, 2910377, 2401424, 4817880, -1694902, 1676111, 2991982,
+621697, 975494, -3542274, -1534377, -1490891, -1342177, 3251827, -6272263, 1030255, -2182917,
+6541235, 141734, -1197222, -1660005, -2719788, -915365, -2837900, -8267812, -2628520, -1631014,
+-1349694, -1866163, 836982, -1561758, -405338, -546535, 2873333, 1277753, -390305, 1831267,
+-1633698, 3528316, -2338610, -3856881, 3694746, 3876208, -1698660, -3704946, 337155, 2006287,
+1508607, 1741609, -1764695, 6442, 1409286, 1909650, 823023, -544387, 217970, 2376728,
+4591857, 2216740, -587874, -71404, -1111323, -1171452, 944356, -1537598, 916976, 1122060,
+-466004, -166430, 483721, 426276, -483721, 367757, 243203, -2133525, 315143, 148713,
+636192, 360240, -831076, 748935, 583579, -71404, 9132174, -1735167, -898722, 960462,
+2503966, -6768332, 4179003, -8029978, -383326, -3898757, -592169, -2584497, -626528, -646393,
+4002373, -3415036, 4336843, -4567161, -4985920, 2081449, 6640557, -7876433, -2202781, -3821447,
+33823, -1998770, 2101850, 2794413, 1403381, 2847027, -4584878, 143881, 6385006, 2493766,
+795106, -4672925, -6663642, -4020626, 998580, -3421478, -1939178, 1275068, 4293894, -3911105,
+-3850438, 1529545, -2820720, 4931160, 1639604, -533113, 3473555, 3294240, -24159, 5544803,
+2734821, 1720134, 1455457, 3626563, 5727876, -3809099, 1079111, 1555315, -4061429, 335007,
+3263102, -1301912, 8281234, -2588255, -2222646, -1753420, 3040837, 4198868, -5403606, -2218351,
+1445793, -1002875, 1301912, 494458, -2379412, 1026497, 483721, -1764695, -2873870, 1148904,
+779537, 2590402, 199716, 780073, 1181116, -144955, -877247, 1890323, 93952, -36507,
+1632625, -926102, 780073, 2175938, -206695, -506806, 396748, -359704, 660351, -1381906,
+-444529, -660351, 68183, -236760, 842350, 59593, -866510, 5369, -11746736, -1891396,
+-2608656, -2083059, -1039919, -1426466, 6268505, 7490960, -1695438, 6114423, 2340757, -3361349,
+1603097, -5100274, 914291, 1093606, -6860137, -1005559, 1080184, 1212791, 4765803, -903554,
+4141422, -2755759, -5259725, -5555004, -1580548, -2805151, -4210142, 4381404, -1701344, -834297,
+-753230, 923418, 2391223, -6732361, 38118, 951335, -3184182, 8046085, 641024, -1971927,
+-1729798, 8590471, -601295, 1100049, 5087389, 160524, 3114388, 1217623, 299574, 4744865,
+-14496, -3303367, 4263292, 2289755, 2743410, 3862249, 1286880, -3118683, 2240899, 3170760,
+3083250, 4752382, 42413, -4383014, -3497714, 5571647, 7755101, -7056095, 1433445, -1860795,
+-1231045, 1631014, 2970507, 2846490, -2245194, -899796, -2168959, -3635153, -3171297, -1161252,
+-2010582, -3123515, 729071, -846109, 1204202, 1020055, -957778, 570694, 207232, -2536715,
+874563, -1712618, -3075197, 214748, -896038, -1291711, -1372779, -387621, 574989, -463320,
+906775, -587337, -1027571, -1427003, -1308354, -563178, 253403, 1028108, -1989644, -8659191,
+9226127, 8546985, 6443525, -4497368, 5036923, 9095130, -2289218, 7107097, 2674691, 1066226,
+-1108102, 7836705, 3704409, -1836635, -5622112, 3258807, -2330020, -3007551, 3175055, 3748970,
+1644973, -5582384, 905701, 5010080, -2444910, 1698123, -10977936, 1580548, -883153, 5288179,
+1293859, -2278480, -3309809, 6768332, -5826660, 471373, -4705674, 549756, -1440962, 3780645,
+-787590, -1233193, -5765994, -1384053, -1016297, 7160784, 358093, -6550899, -241055, -361851,
+2240899, 3424163, -2913062, 12885, -3717294, 3969624, -868657, 4798016, -2586644, 7143068,
+3550327, -7883413, 8356396, -1204202, -5768678, 983011, 7636989, 1551020, 1178432, -6174016,
+-399432, -2391760, -3332895, -3234110, 297963, 2911451, 3763465, 2043331, 2059437, -2409477,
+1818919, -2088428, -231928, -111669, -958315, -401043, 2179696, -3432216, 942745, -335007,
+309775, 1153736, 947577, -92342, 1502702, 163746, -2249489, -2446521, 1449552, 662499,
+-85899, -1615445, -306553, 390305, -204548, -705985, -1560147, 993748, -11274, -981400,
+1109175, -653372, -413927, -1257889, -754841, -474594, -1573032, 1119376, 912144, 10045392,
+-3352759, -7137162, -298500, -10743324, 64425, -9220221, -3156801, 6471979, -6557878, -7241315,
+2268280, 687195, 731755, -1635846, -2323577, -5218922, 3661460, -10288594, -3114388, 1132261,
+6503118, 459562, 6596533, 2400350, 14404247, 5571110, -75699, 712965, 6899865, -1547799,
+-1967632, -1199370, 1206886, -4433480, -2168422, -7531225, -456877, -3414499, -2021319, 9464497,
+228707, 5953362, -2274722, 2478196, -515396, 3586835, -1094680, 3345243, -3145527, -3904662,
+-565325, 1214939, -3950833, -3941169, 433255, 2159832, 4437238, -540092, -1960116, -799401,
+4214437, 7140383, 466541, -4713190, -6791954, 188979, 1965484, 810675, 9454834, -5785858,
+-240518, 4290136, -1473174, -4830765, 6687264, 3119757, 1252520, -3177739, -3450469, -5779416,
+-2222109, -534723, -2966749, -1430224, -2558727, 598611, 762894, 1566053, 268972, 533113,
+-3194919, -1597191, -3430605, -1121523, -932545, -2576444, -1618666, 1022202, -228707, -1029718,
+-220654, 973347, -2115272, 1205812, -1501628, -76773, -576063, -1096290, -336618, 77309,
+1078037, -1443109, -2217814, 1949915, 1191317, 635118, 8924942, -6823630, -1378148, 584652,
+-518080, -236760, -5617817, -4317516, -595927, 3755412, 1370632, 1519345, 1584843, 3946538,
+-795643, 3611531, 2922188, -9246528, -3549791, -10854993, 2830920, -3810173, 5481989, -3503620,
+-4793721, -3500935, 2852395, -7226820, -6018860, 8443906, -4593468, 9153649, -2153926, 2769180,
+-3211562, -6128919, 6780680, -5194763, -5854578, -564788, -3183645, -6860137, -5298379, -8655970,
+359704, 5601174, 3212099, -3350075, 9639517, 3557307, -3543885, -4456029, -6976638, 327491,
+-2616709, -4855998, -2464238, -2046015, -3441343, 1860258, 7706782, -442382, 499827, -5199595,
+2446521, 2636573, -4553739, -3583077, 1834488, 9401683, 3725347, -2300492, -1254131, -1944010,
+-9668508, -7574175, -6424734, 6736120, 7114077, -1008780, -3350611, 3146601, -2146410, 2766496,
+-1442572, 1326071, 198642, 171262, -3155727, 2127620, -1858110, -1283658, -521302, 1908576,
+1376537, -153008, -2646237, 1694902, -415001, 1254667, -921807, -545461, -2345589, -971200,
+-126165, -245350, 403727, 486405, -339839, 433792, -1961726, 902480, 139050, 320512,
+-744103, 2421288, 1458678, -56371, -995359, 279710, -1515587, 2735357, 558883, 12694850,
+-2521683, -124017, -2199023, 8227547, 7798050, 2625836, -13258564, -2289755, -16081431, 9363566,
+3903052, 164819, 16414291, 7709467, -1542430, -7496329, 6714108, -3264175, 1599875, 2211908,
+985695, 5310727, -4893579, 9149354, 3433826, 802085, -2884608, -4802847, 6189048, 5189394,
+-1100585, 3340411, -7953743, 1378685, -10592463, 4189204, 513785, 5265093, -8710731, 1693291,
+-2896419, 1809792, 9745818, 8223789, 317828, 2309082, -6178311, 7924215, 154619, 16975322,
+17977122, -2495376, -4886062, -5017059, -3977677, -10565083, -2995740, -13766981, 759672, -1243393,
+-827318, -2887829, 4735202, 7978439, 12596065, 11666742, 9000104, -15005005, -10693395, -568009,
+686658, 15532749, -11070278, 8298414, -646393, -3259880, -1671279, -485331, -3153580, -8762270,
+-5719823, -1734093, 2479270, 710280, -271120, -2464774, 1313723, -3172907, -348429, -1735167,
+3267933, 3598109, -942745, -807991, 3404835, 2528125, 397821, -616865, 1221918, 116501,
+476205, -781147, 1449552, -223338, -911070, -1500554, 397821, 1372779, 2173790, 4663261,
+3678103, -1918240, 412854, -3502546, -674310, 1406065, -310311, -783832, 61203, 580357,
+742493, -4709969, 9103720, 1893007, -6867653, -3828963, 17166448, 16886738, 18927384, -1942936,
+-886911, -3311420, 3113851, 9228274, 10616622, 3036005, -4682588, -9222369, -18701362, 5452461,
+-11099269, -2482491, -1209033, -2448668, 1171452, -619549, -3501472, -472983, -10876468, -4336843,
+564251, -2056753, -12145094, -5145908, 949188, 8706972, -2560338, 197032, -9686225, -3294240,
+33286, 6306086, -3979287, 3857418, -10816338, -3040300, 2414309, 4022237, -3024194, 14364518,
+-3045132, -1875827, -7589207, -2523293, 5720360, 1928977, -742493, 7473780, 10331007, 12104828,
+-2225867, -6126771, -6981470, 54224, 1353989, 2807298, -4980552, 3877282, 5086852, 4311611,
+4159676, 12110197, 8111583, 5389110, -740345, 2694555, -12186433, -2305861, 1184874, 6156299,
+9707163, -1894618, -5622649, 1690070, 3281355, -2865280, 4928475, 3995393, 5334887, 808528,
+2279554, -292058, -526134, -3960497, 2976949, -1258962, 1921998, 1764695, 472446, 2849174,
+155693, 4605279, 3173444, 2069101, 1207960, 1277753, -89657, -623844, 273804, -1958505,
+-240518, -2441689, -3995930, -1571958, 700617, 658741, 1585917, -818191, 1006096, -1621350,
+622770, 2035815, -195958, 350577, -17642652, 21931714, -627065, 3214783, 11991012, 202400,
+-4217658, 619012, -21415244, -13037373, -6129992, 3410741, -4224637, 2435783, -10018011, 6920803,
+-3504157, -103079, 13202193, -12890271, -8575439, 12349105, -3880503, -18121540, 1278290, -11178189,
+2302103, -940061, 6778532, 2908767, 3415036, 1366873, -2191507, 8036421, -901406, 10328859,
+6318971, -3692598, -6208912, -5833640, 2813204, -2875481, 2831457, 1984812, 6087580, 1760400,
+-11431055, 657667, 3884261, -3969087, 486405, -7901666, -1749662, 676457, 517007, 18080202,
+-3158949, 12840878, 15394773, -4255239, 8243653, -2556043, -447750, -8585640, 5444408, 13067975,
+9156870, 2009508, 3604015, 8089571, -521302, 6699612, -2727304, -3783866, -6521908, 3535832,
+16738561, 3713536, -2150168, 1298691, -11747809, -4008278, 295816, 11041287, 8096014, 3459059,
+7191923, -2091649, 7065758, -109522, 4453881, 522912, -319975, -885300, 4936528, -562104,
+-3069291, -1944010, -1203128, -791348, -1218697, -2513093, 3577171, -2338610, -3039226, -932008,
+-4000225, -2815351, -3408594, -2017561, -2368675, -3129421, 1083406, 679142, 1355599, 1057636,
+-1787780, -994822, -3135326, -4192425, -333934, -2352568, 1396938, -1150514, 398358, 1983738,
+2172180, 1422708, 3699578, -1023813, -274878, 2734821, 21058224, 3080565, 5266167, -4956393,
+-2501282, 14307073, -9410273, -2160369, -18539226, 17405892, 9105868, 1270237, -6282464, -17502528,
+1797444, -4644471, 2171643, -19628538, 7033546, 10393284, -11389180, -2714419, 1736241, 1225139,
+3828427, 11278584, 13889387, 60666, 1611, 2613488, 561567, -8384850, -9575093, -6350109,
+-12628278, -6213744, 10825465, 5040144, -3998615, -5329518, -3499325, -22239340, 4874788, 5361730,
+-10378788, 17068736, 652835, 12735115, -4538707, 8266202, -2680060, -10991358, 1037772, 10147934,
+-5543192, 5578089, 6552510, 18127984, 5064840, 5706938, 17412334, 9925133, 6626061, -24006182,
+5025112, 3692061, 4713190, 505196, -9747965, 17426830, -12878996, 9946607, 10464688, -15654619,
+-3367254, 21455510, -19040664, 3255048, -4416300, -2053531, -6819335, 8360691, -3515968, -7116761,
+-6024766, 3744675, 8179765, -7562901, 9490267, -7806103, -3350075, 10727755, 4020626, -876710,
+-4641786, -5010616, -59056, -1984812, -8076686, -932545, -1655173, -2280091, -657667, 6444599,
+-459562, -5936719, 641024, 2517388, 6240588, 3848828, 4981089, -1960116, 2678449, -3543885,
+278099, -1204738, 2677912, 5116380, -3671123, 2353642, 2534031, -275415, -3156264, 1756105,
+1498407, -10980084, -16589311, -7285875, -6890202, -22287660, 15271830, 2438468, 16299401, 984621,
+2405719, -7675644, -3949223, 7968238, -518617, 8237748, -8036958, -2531346, 1548336, -3612068,
+-6560563, 9812927, -9846213, 11678553, -3970161, 3843996, -2410014, -7821136, -6988986, 3455838,
+-2467459, -21475, 6087043, 23314156, 1772211, -2907693, -7740068, 3410741, 18872624, -3381750,
+-2956548, -10852845, -3660923, 1644436, -10220412, -3700114, -14628659, 9567040, -17933100, -32564442,
+-3294777, 1132261, 15699179, -16028281, 15080704, 9829033, -7519951, -15124190, -2294586, 2598992,
+4592394, 649614, 9595494, -6213744, -2216203, -32118840, -4158602, 33378876, 3406983, -5482526,
+-4265977, -17137994, 13131326, -5428302, -4744865, -4138738, -2324651, -7346542, -10945724, 3459059,
+6573448, -198642, 5057324, -9241159, -16978542, -477815, -8858907, -2448131, 501974, -8798777,
+2271501, -6372658, -11314018, -8359080, -3949223, 3874061, 5469104, -836982, -13414793, -3238405,
+1066763, -6536404, -2780455, -396748, -6032819, -3486440, 1880122, -95026, -4695473, -1772748,
+2464774, 1020055, -6307697, -2400887, 359704, 6206228, 6884833, 1989644, -1796907, -2228014,
+-566936, 4689568, -745714, -227633, 578747, 1908039, -5243082, 5314485, -890669, 3661460,
+605054, -3637837, 15421617, 13775034, -4468377, -5697811, -1419487, -22228604, 14570677, -14069239,
+-11621108, -9009768, 5444408, 2199560, 13498545, 1612223, -7482370, -8728447, -9052180, 6944425,
+-3529390, -4863514, 12321187, 13800804, 4631049, -9360881, 11343009, 18377092, -7124277, -4070555,
+15855409, 4063039, 3095598, -10431402, -118112, 15124190, -22466974, 15365246, -3457986, 2055679,
+9121974, 11111080, -206695, 5537287, -10650982, -8629126, 5669894, 21160766, 5555540, 5143760,
+7896834, -10714333, 2117419, 9383430, 5309117, -1782411, 7435126, 4687957, -12846784, 10306311,
+-12527883, 2769717, 8908836, -9856413, 7340636, -12023224, -4938139, 2186138, 278099, 7663833,
+-5083094, 6572911, -5197984, 916439, 2284386, -2248952, -5105106, -9719511, 25772488, 2763275,
+7595113, -11322608, -26674432, 18679886, -18203146, -7818451, -314069, -4170413, -2920041, -1578937,
+-7665443, 4628364, 3510599, 1993402, -7111929, 8494908, 6293738, -2852395, -3170223, 2502355,
+-2656437, 2357400, -2683281, 9019431, 3041374, 843424, 6111739, 6752763, -4206921, 42950,
+2933463, 4697621, 1612223, 2253247, -4560182, -5553930, 4162897, 5833103, 8093866, -1149441,
+-7992934, -1067836, 394063, 3805878, -12133819, 4472672, -4270271, -1705102, 2409477, 2791729,
+-3258807, 4126927, -5906, 3287261, -2243584, 7810935, 2325725, 3264175, -1458141, 4451197,
+-14687178, 15363635, -5776194, -15374909, -19902342, -5637145, -2099165, 11547556, -17526688, -2903935,
+-2130841, 9074192, 17250736, 14258755, 8857833, 1267552, -4519916, -2776160, -1858110, 12096239,
+9943923, -2459943, 1511829, -2758980, 7776575, -19053548, 11235634, 6129992, 8780524, 2902861,
+1970316, 16231218, -6507949, -14006962, 8053, -4680978, 884226, -19390166, -10741713, -1239635,
+16054051, -10998874, -3507915, 2545305, -715649, 361314, 15779173, 6272263, -2521683, 1289564,
+7688529, 5011153, 18395882, -5537824, 8369281, 9283035, 4959077, -3100430, 2959233, -20202990,
+8528194, -3868155, 851477, -4722854, -11119670, -14977088, 2962454, -7203197, -20249160, 4732517,
+-17214228, -12738336, -3028489, -25982404, -15733002, 3752728, 10972031, -13038447, 2725694, 906775,
+29651380, 28061706, 26535918, -933082, 1431298, -14121316, -8502962, 10969346, -6067178, -4073240,
+1771137, -3697967, 6172942, -7793218, -3872450, -425739, 2303176, -4745402, 5654325, 5598490,
+193274, -2610803, 1517197, 5462662, -4624606, -6176700, -1605244, 4893042, -6914898, 11421929,
+6595996, -703301, 5190468, -2024540, -4874788, -7814693, -4212826, -6953552, -3737695, 3784403,
+630286, 11510512, -2792266, -3925063, -1844689, -26360898, -29148870, 17122960, 15370614, 5066988,
+16666084, 28007482, 7866770, -10867878, 8944806, -4410395, -8082055, 12734041, 787590, -11661373,
+6935299, 9128416, 1999307, 3124052, 565862, 1294933, 25630218, -689879, 5376226, 2267743,
+15850577, 808528, 25421912, -253940, -11394548, 20315732, 4037269, -9175124, -3338263, 10695542,
+-2388002, -321049, 8329552, -15676631, 15369004, -3407520, -22868016, -6492380, 2084133, -22843858,
+-2693481, -2499671, 9842454, 9529996, 16941498, -12109660, 2461553, 2595771, 3408594, 7181186,
+-11028939, -12386149, 6285148, -421981, 12916577, 10503879, 3136937, 27170500, -4695473, -4307852,
+-18797998, 27729382, 4776004, 19209242, 11684459, -31175556, 4311611, 2721936, 18901614, -10203769,
+7975755, 75699, -8408472, -1124208, -6823093, 15250892, -29542396, -3665218, -2253247, 28454,
+1186485, 4636954, 7051263, -188979, 13428752, -612570, -2087891, -4436165, -2965138, 802085,
+-4865661, 1526861, -1433982, 4028143, 2727841, -1465121, 988379, -1652489, -8346732, -503585,
+263067, 2024003, -8522289, 4432406, -1870995, 4662187, 3572876, 6612102, -6932614, 7738458,
+-4373888, 2478733, 5464809, 5044439, -1888712, 158914, -3207804, 4377109, -409096, 2132988,
+-251256, -909459, 11171210, 6352794, 13422, 5264556, 1425392, 5478768, 1060857, 17191144,
+-36191540, 21551072, 21920440, -9299141, 5235029, 3085397, 5953362, 194884, 17453674, -12659953,
+-2716030, -13583371, -87510, -7656853, 1252520, 3708704, -19850266, 8987219, 21615496, -14811732,
+-14216342, -14489609, 28769838, -12513387, -7037841, 2723009, -9832254, -29743186, 5255430, 21678310,
+-29680372, -13404593, 10276246, 15985331, 4338454, -4463008, 6889128, -10482405, -4926865, -495532,
+14715632, -20151450, -16061567, 11463805, 18477486, 7331509, -23073638, -7412040, 577673, -1010391,
+-4008278, 12111808, -3578245, 18252000, -14804215, -3165928, -25233, -16885664, 10744398, -19666118,
+-13571560, 6364605, -8826158, 19251654, 27738510, 16440061, -18353468, 9794136, -5401995, -5425081,
+-12958453, -3955665, -21116206, 16219407, 11873974, 5823439, 626528, -9903121, -5614059, 6609418,
+-22046604, 17871896, -4215511, -2942053, 9294846, 1749125, 8462696, -2308545, -1345935, -7430294,
+-2190433, 817118, 1487132, -5802501, -2092723, -2709588, -2144799, 10102837, 1040456, -50466,
+-4806069, 4176319, 3952444, -3430068, 2171643, 4699768, 994285, 7832410, -2791192, -5299453,
+1079111, -8718247, 4533338, 3430068, 1100585, -140660, 3478387, -615254, 5707475, 1984812,
+4047470, -6859063, -2166274, 6669548, 304943, 2803540, 3279208, -6380174, 885300, 6725919,
+21095268, 35125316, -193810, -26490284, 5682779, -31620086, 5484673, 14443438, 6822019, 1966558,
+19104552, 14139032, -791885, -2848100, -26127360, -14058502, 449361, -12202002, 35535484, -6416681,
+-7981123, -15261093, 1972464, 13397077, 9398999, -430570, 6922414, 10448582, -15670725, 5440650,
+30502320, 10833518, -20823076, -14671071, 9950902, -10274099, -1343788, 7471096, -4561256, -17183628,
+-4048007, 2149631, 29072096, -6219650, 6514392, -7658464, -23361400, 4160213, 29495152, -7853348,
+-17563196, 5202279, -10725607, 7266011, -6095096, -7114614, 20298552, -5104569, -2226404, 9961103,
+-17343078, 6362457, 21481278, -8779450, 1925219, -12463995, 37711960, -6763500, 4574677, 12297028,
+-8650064, -2004676, -9955734, 5368709, -11260867, -9483825, -8862665, 14512158, -19466940, 2974802,
+-2800319, -5727876, 15303505, 453119, -5094905, -6342593, 894964, 5827734, 4540854, -8587250,
+-1482838, 519691, -2327336, -10648298, -6378027, -1825898, 2673617, 1007707, 976031, 1654099,
+8888972, -8715026, 9341017, 1977296, 2777770, 779537, 7431904, -3985730, 12133283, -2473901,
+-71404, 9388262, 12192338, -6139119, 8012799, -3760781, 2766496, -6811818, 6226092, 5329518,
+-10295037, -313533, -4043712, -1212255, -5082557, 3992709, -6281927, 6004901, -1140851, -2063195,
+-10433549, -58262304, -20553030, -1269700, 18335216, -9952513, -29265370, -11164231, -4468377, 14010720,
+3492882, -4100083, -14578193, 14952392, 26734024, -12454331, 20160040, 4886599, -38779796, 14165339,
+17898740, -6578816, -15890305, -3164854, 23566486, 25143276, -2305324, -19463182, 1140851, -2423435,
+-2690260, -16259672, 3762391, 7086696, -25636122, 17329120, 14725295, -18168248, 3127810, -20355998,
+6932614, 48959944, -44144212, 45248016, 20382304, 1825361, 27624156, 13595182, -28639916, 16874390,
+-21580600, -5027259, 23190140, 866510, 6514929, -12177306, -21016886, 63149440, -15070503, 688805,
+24793772, -12290586, 4697621, 1680406, 15254113, 35474820, 33753076, 31883152, 1831267, -855772,
+-5333813, 1401770, -8843875, 2181307, 27081380, -7447474, -9616432, 2493229, 3607236, 15586973,
+18266496, 5021891, 5008469, 12860206, 5405753, -10233296, 3107409, -5392869, -14957760, -6883222,
+7628399, -11392401, -16221018, -12440373, -710280, 1234803, -9360344, 4490389, 10280004, 1382443,
+-3516505, -861678, -11884711, 13675713, -2185602, -3275450, 9499931, -8209293, 6417755, -6207302,
+-4904316, 16134582, -186831, -12404939, 15399605, -9780714, 9237401, 4137664, -6210523, 4427575,
+-2257005, 11057930, -5294621, 3695283, 448287, 692564, -1306744, 11781095, -6285148, -1668595,
+-970663, 1883343, -1844152, 4988068, 9135932, 14837501, -3950833, -42844448, 19428822, -31130460,
+43725988, 5146982, -38075420, 8566312, 308164, 17850420, 8396124, -9223979, 32341104, 7890392,
+1609002, 21607980, -17321604, -24044838, 745714, 12576738, 43589624, -6144488, 68719, -4574140,
+31399432, 3422552, -25025164, -14763413, 4678293, -2763812, 13868986, -24268712, 11606075, 3965866,
+7132330, -2163590, -9543954, 5531918, 9694815, 108448, 29151554, -47097000, 4052302, -16603807,
+-10394895, -6066105, -34515432, -50039592, -51883740, -37650756, 3921842, 205622, -30129732, -228170,
+-5556614, 3256659, -18731962, -48205640, 47435228, -833761, -7107097, 9700721, -47234976, -3219078,
+-11832635, 8869107, 13749264, 64755760, 48143900, -5387500, -698469, -1503775, 12606803, 19596862,
+11764452, 8954470, -1928977, -7792682, -45984068, 8689256, -1069447, -17861158, -8148090, 29989072,
+-4343286, -5438503, 14166413, -1184337, 15549392, -6075231, 7736310, -848256, -3425237, 11110007,
+13387413, -6149857, 1748052, 6028524, -2690797, 2857764, 537408, -137439, 9078487, -3895535,
+-4871567, 7681549, -9113384, 11874511, -242129, 6437619, 9687836, -4923643, 2263985, 8625905,
+-2250563, -5618354, -2279554, 998043, -1756105, 2384781, -11854647, -707596, -9434433, 9749576,
+1241782, 6576132, 4428112, -1357210, 77309, -602906, 4219806, 6087043, 4743792, -729071,
+-5887327, -836982, -12341589, 58750856, -56296284, 9513889, -10931766, 2066416, 23664732, -17459042,
+5834713, 789200, -60898880, 1392643, -6926709, 2836289, 6921877, -27276264, -10231686, -45079440,
+-11694122, -2314451, 2353642, -17140678, -12897787, -19708532, -8269960, 19305878, 4129611, 39119100,
+9503689, -13402445, -14030584, 23984708, -26934276, 46032384, -36181880, 10370199, -29213294, 462246,
+27661736, -50591492, 47418048, 8252780, 5380521, -34788700, -7041599, -6716792, -114354, 16479790,
+16476568, 20779588, -40120364, -1160178, -15850577, -13780403, -15522549, -21718040, -15042049, 599148,
+22783728, -24626806, 6459631, -45212048, -15207942, 11232413, 13281649, 2273112, -51394116, -27902256,
+-18405008, -26280904, -21770652, 1647120, -17185238, 27101780, 8038032, 13493177, -9611600, -14310831,
+45556720, -15507516, 12130061, -9368397, 3398393, 34153044, 4435628, 6016713, -19394462, 19324668,
+11164231, -8254927, 17947058, -13792751, 4822712, -5241471, 12088185, 2260764, -4276714, 6455336,
+15436649, -5545877, 4810364, 5349919, 4483946, -2065342, 4009889, -2446521, 10517838, -3772592,
+1576253, 9921374, -2319282, -4181151, 2907156, 4157528, -7212861, -1785096, -19638202, 11918534,
+8057359, -177167, -11013907, -4661114, 703838, 3798362, 14533096, -2697776, -4327717, 4876399,
+3514894, -2515777, 14671608, 2532420, -18569292, 4457639, 17725866, -2360085, 25269976, -47755740,
+72659032, -54796268, -5830955, -33084134, 6443525, 656593, -20035486, -28305446, 32976758, 22152904,
+10305774, -14474577, 14505715, 4473209, 31126702, -24748138, -16401943, 19342386, 32357210, -41443752,
+16623671, -1540283, 19578072, -14981383, 5650567, -18406082, 3662533, -34430068, 11156714, 36796596,
+-1355062, -2893197, 45674292, 7917772, -21253108, -44801876, 38128572, -20284056, 17119202, -16482474,
+45601280, 20124606, -5175973, 4645544, -26626112, 3480534, 11237245, -12845173, 12623983, -55409908,
+21565030, 50153944, 39099236, -21780852, -22706956, -22711250, 25249038, 2006824, -8215736, 2010045,
+64677912, -31680216, -14931454, 25066502, -21759914, -58583352, 24705188, 13053479, -42004780, 23443006,
+40360344, 35721780, -11091216, -16018617, -28706488, 15274514, -17781164, -11308112, 25832618, 17674864,
+7871602, 22789634, 12707198, -8858370, -8394514, -29473140, 6706055, -12397423, 10035728, -10939819,
+20837034, 14480482, 3039226, -3970161, 19801410, -10946261, -1720134, 2552821, 7494718, 4603668,
+9052180, 8441221, 514322, -4848481, -3045669, 7082938, 3571265, 2831994, 798864, 11165841,
+35999344, -1119376, -3042448, 5381057, -12757663, 4430259, 12836584, -18676666, 8017094, 9616969,
+-7332583, -5258114, 8311299, 4756677, -10959683, -46898360, 25070798, -2731062, 6548752, -17177722,
+15026480, 332860, 8246337, 2514167, 2739652, -9758166, 7482370, 25409026, -32405528, 27880244,
+-4751845, -17097192, 5735392, -11624866, 7548405, -11909944, -9797894, 8259222, -25849798, -2639258,
+34438660, -49707268, 14027900, 2384244, -8318815, -15270219, -18077518, -11744588, 36133024, -29743722,
+-4262218, 11691975, -30232812, 7684770, 16594143, 11112154, 5682242, 5243082, -17055316, 13442174,
+-44475996, 637803, 38938712, -16267726, -4376035, -8722005, -10985453, -295279, -31481036, 16701517,
+12650826, -26013006, 24422258, 6820408, -29673930, 12224551, -5762773, 21544092, 18762028, -27579058,
+9638443, 30680562, -28879896, 16183437, -20565914, 16218870, 18753438, -29297582, 16513076, -2090039,
+-15543487, 22402550, 1174674, -35239132, 10836739, 15723338, 4732517, -9773198, 1705639, 26776974,
+-12370043, -24957518, 26601954, -1078037, 2010582, -1106491, -3363496, 16426102, -12227772, -5795522,
+11569568, 4500589, -2866891, -11911555, 17648020, -6638946, -11600707, 1040993, 9272834, -5463199,
+-4316442, -2676302, 13774497, -10678362, -5604933, 1090922, 7461432, -6538551, 5339718, -154619,
+13649406, -8552890, 2129230, 1264868, 1305133, 12124693, 22726282, -9742060, -107778984, -235927392,
+-93603440, -156848992, -213573696, 80554256, 28566902, 69540352, 317378208, 264364896, 174210848, 272515136,
+185121680, 21909166, 45882060, 33170032, -145693888, -94066224, -64885144, -166638288, -170088224, -47278464,
+-47776144, -105819944, -31785980, -23027468, -127413424, -109594144, -35851704, -60446832, -120363776, -29632590,
+-20510080, -94363112, -11270531, 65066608, -28760712, -23274428, 96199216, 58896348, -39800388, 85205168,
+140754672, 15393700, 79008608, 172852032, 84334904, 43409236, 186479424, 136257840, 101245264, 226518192,
+306565632, 242429968, 281605440, 365037856, 238260624, 155841808, 204504336, 131644504, -37111200, -9382893,
+-91223496, -225601216, -318817024, -342947232, -458939264, -522025888, -554204864, -536141312, -515258112, -512292960,
+-427953760, -327641568, -307483680, -200805296, 15673946, 84666688, 109923784, 333779104, 327557280, 225815952,
+332813248, 305007648, 165339056, 160667216, 212138640, 128190280, 60155312, 148279984, 151293984, 67783176,
+122181616, 184613264, 122301880, 72661720, 157024544, 129997920, 25854092, 79507360, 115389664, 12598213,
+21614422, 126342904, 77158016, 41384156, 133992776, 132815424, 48302276, 105766792, 91292216, -24161338,
+-66640176, -69076496, -158614752, -214687168, -211965232, -244640800, -269623008, -279608288, -273707520, -280787232,
+-312185600, -322973472, -308976192, -344664160, -295132448, -201167136, -153895664, -52661668, 88653496, 185942016,
+272508160, 351890976, 357875456, 306459872, 278437888, 228783776, 173322864, 139827488, 117795920, 95318744,
+74786656, 67928664, 63155884, 47057272, 40037684, 35871568, 19665582, 944356, -9678172, -26363046,
+-44558140, -56114284, -59055264, -64900712, -62697396, -51506320, -38879116, -28726352, -16068546, -8058970,
+-1786170, 5812165, 10996190, 10759430, 11323144, 7328825, 823560, -2627446, -5781026, -12096239,
+-14780593, -16276315, -20671140, -21386790, -18957448, -22625888, -25163140, -22430466, -24363738, -27937152,
+-26048976, -31117038, -37219648, -35335232, -35476968, -37627672, -32907502, -28376312, -25067040, -17754322,
+-8554501, -3359738, 2591476, 11011759, 18143016, 24471114, 31445604, 37023156, 39361228, 42083164,
+45114872, 46407660, 47404092, 48569636, 46903728, 43354472, 38542500, 32251446, 24950002, 15705622,
+6451578, -2192044, -11038066, -16878684, -19400368, -20314658, -19907710, -17541720, -15591805, -14633490,
+-13009993, -11562052, -10954314, -10108206, -8999567, -8184060, -7532299, -6605660, -5648419, -4878546,
+-4104378, -3309272, -2682744, -2281165, -1988570, -1767916, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-3986804,
-2424509, 3884798, -1372779, 3452080, -563714, 3643743, 1831804, -803696, -1430224, 3690988,
-309775, 734439, -4200478, -674847, -304406, -189515, 5737540, 2802466, -211527, -4308389,
--3133716, -1854352, 523449, -100395, 1241246, 2637110, 801548, 971736, -4348118, -670552,
--4232154, 168577, -2341294, 2768643, 2763812, -1104344, -2284386, 2894808, 618475, -1087701,
--3912715, -532039, -2509872, 701153, 2390149, -3968550, -1938104, -664109, -1553704, 10126996,
-2411624, 5845988, 424665, 1917703, -45097, -2927020, -2716030, -3455301, 1631551, -2850785,
-2049773, 63888, 2502892, 2560874, 6218039, 1876364, -516470, -315143, -3694209, 6023155,
-5541045, 969589, 1708323, 1569811, 1714766, -350577, -3092377, 921271, 1788317, -1161252,
-517544, -951335, -2825552, 1345399, -2356863, -1600412, -733903, 188442, -1054415, -1144072,
--1342714, -28991, -73551, -210990, 272194, -471373, 900333, -500364, -839129, -81068,
-1129576, 425202, -461172, -1515587, -445603, 1403917, 96100, 634045, 557272, 394600,
-14017700, -3288871, -2905546, -1114544, -2749316, 664109, -6631430, 540629, 1347546, 359704,
-4544613, 539018, -911070, -3974455, 2581812, -5611375, -4832912, 1774358, -2344515, -1111860,
--816044, 959925, 3820374, 5216238, 415001, -785442, 6200322, 2247342, -334471, 245350,
--2499671, 98247, 6804302, 23085, -3125663, -2528125, -706522, 2320356, -3111704, -3847217,
--3923990, -3212099, 3120294, -3020436, 1183800, -3674345, 1327145, 4492536, 319438, 3198140,
--1323924, -2502355, -1220308, 2224793, -106300, 3432216, 5019206, 751082, -1481764, -2562485,
--100932, -362388, 257698, 178241, -4371203, -445603, -2027225, -2219424, 2162516, 471373,
-1398549, 1639604, -5205501, -2899640, 2201171, -960462, 3900904, 722628, 3291556, -646929,
--799401, -881005, -1864016, -424665, -2055679, -819802, 92879, 3071975, -702764, -48318,
--494458, 987306, 7516, 1197222, 270046, -236760, -734439, 968515, -1462436, 27917,
-114890, -830539, 739808, 919123, -1227824, 445603, -586263, 566936, 568546, 18254,
-938987, 118648, -426812, -9847823, -4792647, -2021319, -6691022, -2237678, -6417755, 2050847,
--450435, -3951370, -4575751, -576063, -3715684, 30065, 3315715, -117575, -5717139, -2046015,
-209917, -2163053, -1769527, 1811939, 5627481, 7175280, -1013075, -1762547, 4086125, 4626217,
--1280437, -923955, -773631, -3060701, 1093069, 1589675, -2742874, -2026688, -543313, 2841658,
-6146098, 514859, -1904818, 124017, -2912525, -998580, -4703526, -2151242, -2018098, -7514582,
--687732, -3345243, -2281702, -8261907, 5327907, -3528853, -3111704, 1611150, -397284, -483721,
-1222455, -6844568, -1684701, -2376191, -426812, -3901441, -424128, -1774358, 1971927, 2538326,
--2141578, -1090385, -3202972, 1300301, -370978, -560493, 137439, -5036923, 5906, -4540854,
-843961, -195958, -1339493, 1495722, 5796059, 2821257, -1203128, 428423, -860604, -2083059,
-349503, 998580, -976568, -37581, -1240709, 158377, -433255, -1586454, 820339, 780610,
--1666984, -720481, 622770, -634045, 379568, -1052267, -781684, -832150, -1547799, -1699733,
--5906, 586800, -795106, -977642, 133681, -397284, -96637, -471373, 123480, -214212,
--478352, -1381369, 942208, -407485, -588411, -607738, -1139777, -77309, 269509, -932545,
-177167, 193274, 183610, -735513, 344134, -18544596, -1514513, -9170292, 8131447, -4803384,
-14680735, -9485435, 9237401, -8414915, -549756, -184684, -6484864, 4947803, 139586, -2461553,
-1466195, -2163590, -884763, -6336688, -97711, -4798016, 3711389, 1244467, 4553202, -2758443,
-6811818, 6093485, -6014028, 1614371, -5116917, 5343476, 20938, -3854196, 289373, -605054,
--221728, 3899294, 558346, -5979132, 2413772, 4174171, -302258, 4941360, -2353642, 4013647,
--6140730, -3194919, 3999688, -3602404, 1001264, 5320928, -4931160, 7900056, 3146064, -7970923,
-1906966, -7683697, 2724083, 4146791, 2856153, 3987877, 5861020, 1887638, -725313, -566936,
-386547, 1762547, 4216048, -1553704, 7968238, 1446867, 5462125, 2864743, 1590749, 289910,
-5484137, 885300, 1367947, -3243237, -4263829, 2075006, 2967823, 215822, 4723391, -665183,
--22012, -979789, 5609228, 1580548, -1979443, 1156957, 975494, 693100, 1928977, 178241,
-3505230, -661425, 1225676, 540629, 1359894, -1000191, 694711, 207769, 111132, 186294,
--1151051, -1193464, 477815, -1442035, -545998, -1554778, 951335, -151934, -424665, -594316,
-12274480, 128849, -3262565, -1054951, -4492536, -5379984, 8981850, -1672890, -1234803, 8243116,
--569620, -1523640, 3685082, 6426345, 1883343, 3220152, -96637, -6895570, -1775432, 5281199,
--7856569, -7792145, -2874944, 1774895, -5519570, -3302830, 179315, -728534, 5558225, -2062658,
--1135482, 5842766, 8121247, -6924561, 1893544, -1610613, 3007551, 855772, -3026878, -622233,
-3419331, 5186710, -1308354, -7195681, -1560147, -588411, -1841467, -3566434, 597537, -410706,
-1392643, -949725, 1080184, 6820408, -4935455, 695785, -3741454, -3045669, -5169530, -1535451,
--2955474, -7203197, -185220, 540629, -2746632, -513249, -2911451, 2838437, 3598109, -513249,
-1124745, -2570538, -648003, 8790724, -1081258, -3591667, -11805254, -5374615, -79457, -4025458,
-2819646, -1118839, 1100049, 18254, -2310693, -420370, 3538516, -2894271, 758062, -796716,
-415001, 33286, -2409477, -1817845, -968515, -1897302, -304406, -3019362, -554051, -1704565,
-417149, -1184874, -312459, -1622961, -1684701, -1722282, -363998, -172872, 705448, 457951,
--155156, 504122, 488016, -87510, 1782411, 1477469, 62277, 875636, -615254, -922344,
-295816, 15694884, 17655000, 3248606, -6606734, 3915400, 6881075, 6898255, 3838090, 5176510,
-2248952, 8563091, -1011465, -1203665, -3676492, 5323075, -3328600, -7798587, -10681047, 1077500,
--5186710, -4494684, 3610994, -1247151, -2929705, 8748848, -758062, 10902238, -2147, -4498442,
--3101503, 3738232, 2455648, -2309619, -8855149, 12470438, 7173669, -61203, 6720550, 3947075,
-4332012, -4267050, 4906464, 2427194, 900333, -1655710, -2357400, -5691369, -7948911, 2086280,
-3693135, -6242735, 2351495, 5149666, 7774428, 1955821, 7014756, 3174518, 5963025, -9035001,
-2551211, 694174, 1695438, 99321, -701690, 3658239, 3346853, 3217468, 4769025, -1728724,
-2272038, 1272384, 6902013, 8436926, -4413616, -5194226, 683974, -2190970, -4631049, 1785096,
-4658966, -3049964, 1929514, -8684961, -6365679, 1327145, -4415764, -2165737, -1476932, -4014184,
--57982, -176094, 424128, -216896, 1632625, 1893007, -201327, 895501, 286152, 1402307,
-1559073, -102542, 60130, -227633, 1713155, 773094, 921807, 2066416, -434865, -1242856,
-1597191, -599685, -57445, 2390149, 1502165, 2255395, 3210488, 381715, 1415729, 751082,
-2114198, 447213, 871342, 1056025, 14501420, 4559108, 6386080, -5355824, 2076080, -13198971,
-679142, -9546639, 7175280, 4807679, -4032438, 6024229, 3421478, -6478958, -1621350, 9271761,
--325881, 6371584, -1776506, 1248762, 7407745, -9276592, -729608, 1472100, 2698313, 577136,
-2971581, 347892, 8993125, -4217121, -2601677, -2763812, 6798933, 822486, -3209951, 4092030,
-11475616, -8063801, 1410897, 1501091, -704912, 4590783, -2328946, 8727910, 2944200, 2174327,
--7198902, -760209, -1911261, 4021163, 3056406, 4346507, -4944044, -3274376, 4178466, -8665633,
--4827543, 1906966, 9266929, 5568962, 8195872, -8986682, -2829847, -9132711, -2352568, 2705293,
--774168, -8621073, 1125818, -5303211, -73551, -9430674, -11364483, -4693863, -8202314, 417686,
-2903398, 1581085, -3506304, 4481262, 7289097, 1990717, 2154463, 4136591, -1313186, -7041062,
--421444, -4861366, 2519535, 744103, -466004, 1245541, 658204, -5175436, -2611340, -1512902,
-2573759, 313533, -1789391, -673236, -149787, -806917, 430570, -1101122, -468688, 301185,
-2346126, 534187, 767189, 469225, -447750, 630286, 1570884, 745714, 2041720, 547071,
-1061931, 59593, 1619740, -2568391, 1601486, -16980690, -15298137, -10963441, 3534221, 3577708,
-12969727, -5523865, 12324409, -4834523, -19958176, -1649268, -1729798, -7636989, -12865038, -4610111,
--147103, -7878581, 67646, -12196097, 1037772, -12865038, 7580618, -3137474, 5558762, -2415919,
--97711, -3907347, -4560719, 8163122, 1706176, -2207076, 9239012, 1151051, 1595580, 3258270,
-8511551, 7492571, 5742372, 270046, -9795747, -908386, 4893579, 1571958, 6207839, -2791192,
-2835215, -14446659, 4730907, 8910447, -10912438, 6616934, 2392834, 10516227, 8072928, 93952,
--2626909, -145492, 7174206, 3587908, -9183714, -7460358, -12744779, -6121939, -8519068, -1855963,
--10568304, -2175938, -3473555, 10980084, -4970888, 5475010, -2716030, -1495186, -3442953, -7428683,
--3919695, -2323577, -2403571, 6946036, -20488604, -4296041, 9729712, 533113, 1946694, 5245229,
-9850507, -6030671, 1262184, 2678449, -358093, -5906, -1333587, 2756295, 4129074, -1677722,
-421981, -308701, 4601521, -1586990, -42413, 4624606, 1020592, 1683090, 2192581, 2216203,
--656056, 465467, -1124208, -1679869, -909459, -3041911, 994822, 2134062, 1507534, 906238,
--3976066, 100932, -448287, -105764, -1814087, 1216013, 1914482, -897648, -103616, 2240899,
-2383707, -2399276, -22849226, 17104708, -5131412, 10014790, 5719823, -657667, -15202037, 11541114,
-1351841, -1276142, 7186554, 5036923, -6433324, -345745, 12429098, 3969624, -5995775, 8764955,
--5196911, -4205310, -2989834, 2649458, -212064, -1885491, 946503, 3622268, 3175592, 3311957,
--9624485, 5534602, -8046085, 10324028, -6856379, 10274636, 3094524, 763967, -10604811, -10719701,
--3769371, -3731253, 11936788, 3220152, 9484898, 3865471, -9044664, 95563, -2296197, 3957812,
--69793, 3456912, -1404991, -6119792, -3759170, 5972689, 15185931, 10941966, 934155, 3604551,
--1451699, -2411087, 7624104, 6436546, -3185792, 9583683, 13516799, 19131394, 73551, -11337640,
--13718662, 4430259, 2080912, -793495, 3017215, -163746, -4634807, -728534, 11352135, -2360085,
--5465883, 20614770, 4911295, -3751654, 5775658, -80531, -571768, -878858, -3659312, -688269,
-5983963, 2927557, -2389613, -3267396, 4089346, 3386045, -648540, 8252243, 2093797, 1386738,
-566936, 3592203, 1110786, 3353833, 2105071, 1042066, 362388, 4281546, 2140504, 2190970,
-317291, 4250944, -910533, 1548873, 2312303, 1652489, -687732, 4775467, 5354751, 1571421,
--1238561, 5749888, 150324, -2905546, -778463, 4161287, -64425, -512712, -1205812, -927713,
--68183, 986769, 2520072, 3858491, 1116155, 4081830, -1226750, 10491531, -15344308, 12918188,
-5310190, -10470057, 24532316, 3701188, -12527346, 2918967, 6830609, 674310, 4932770, 17629768,
--16842714, 11017665, -6813429, 9778567, -3718905, 2114735, -15603079, 2688650, -1697049, 6310381,
--5983963, 915365, 1193464, 208843, -9162776, 8836358, 920734, -901943, 4136591, -1701344,
-4074850, -2125472, 12383464, 9833328, 12257300, 12259984, -1979443, 4324495, 5280663, 605054,
--6416145, 8694624, -10237055, 3227668, 10139881, -5963562, 5369783, -11263552, 3616363, -914291,
--2703145, -903554, 863825, 3580929, 3367254, 12021613, -7838852, -300111, 7898982, 17098802,
--15089294, 3951370, -3711926, 5259188, -2779918, 24939264, -15302968, 5549098, -8530879, -4635344,
-2214056, 2694555, 1369558, -21635898, -11462731, 18054432, 9836549, -1874753, -9714679, -11136850,
--4458176, 4116189, -12090333, -6493454, 5947993, 3435974, -247497, -237297, -8461622, 1691143,
--2462090, -3078418, 3872987, -1968169, -2609730, -882616, -7402376, 2625299, -1917166, -2399813,
--2691871, 3483219, -3570192, 4220342, -642098, -942745, 1408749, 1564979, 5316096, -5365488,
--1165010, -4057134, -886911, 2765422, 2018098, 7079717, -2282238, 3951370, 865973, -2452426,
--1670205, -593242, 2639258, -318364, 1353452, 11513734, -15075872, -3175055, 21392158, -6382859,
--398358, 11476153, 2716567, 7094212, -15914464, 15327665, 1024350, 1174674, -4019553, -9559523,
--1293322, -1452236, -10246181, -6166500, 11418707, -3588982, 2214056, -5559835, -25022480, 8514236,
-1164473, -7704098, 4809290, 9736154, -884226, 1106491, -1934883, 2474438, 6599754, 2127620,
-10589242, 7270306, 1677185, 9271761, -7419556, -7295539, -10416369, 3978214, 6055367, 1789928,
--16536698, 4729833, -14127221, 20533164, -4840428, 7319698, 17508434, -6859063, 11131481, 2807835,
-12117176, 4905927, -5819681, -17919140, -12868259, -10010495, -1365800, -10509785, -2087891, -9183714,
--5965710, 18089328, 3931506, -7667054, -6817724, 3674345, 6724845, -1538135, 2636573, -32801738,
-13232794, 2267206, -10516227, -12916040, -3360812, -21655226, 2357400, 10807748, 1207423, -9289477,
-5772973, 4880157, -7641821, 3860639, 2295123, -1883880, 270046, -4878009, 1305133, 1729798,
-1284732, -6366216, -3484829, 2651069, -3991098, 947577, -2405719, -1521492, 1553168, 5410585,
--6819335, 2404108, 5322002, -6338835, -5980742, 812286, -5488968, 1286880, -3642669, 3815542,
-2061584, -6351720, 3578782, -4166118, -2705830, 4415764, 1023813, 9913321, 3068217, 0,
--617938, 790274, -2592550, 1111323, 7341710, -20116016, -24706800, 15188615, -12053289, -14048301,
--3903589, 9599252, 19579682, -12613245, 1194538, 9419400, -2631204, -3854733, 5148592, 3424700,
-14751065, 5062693, -13900125, -357019, -6981470, -306016, -8204462, -10823318, 1833951, 11188927,
--668941, 5091684, -8993662, 2860448, 11023034, 8620536, 1413044, 1043140, 6937446, 6638946,
-4247186, 10143639, -12470438, 13997298, 10069014, 3584150, -10287520, 949188, 8156143, -8053064,
-9453760, -6356552, 10690174, -2634963, 13917842, -21495774, 23134842, 5577015, 21822728, 1581085,
--4474282, -1335735, 7956427, 694711, -18003430, 888521, -1171452, -18621904, 6053757, 13536126,
--17729088, 15042586, -15595563, 5069672, 6169184, 3433826, -19545860, -9313100, -9543417, 2066953,
-1565516, -11308649, -16727287, 3458523, -14701136, 10265509, -7046968, -3711926, 5186710, -9070971,
--7026030, -9311489, -3801583, -5120138, 391379, -7415798, -5551245, -6752763, -10128070, -4824322,
--2040110, -2158758, -2490007, -2831994, -1888712, -4722317, -5236639, 3684008, -6287296, -3327526,
--1540283, 5083094, -2309619, 308164, -8058433, -5735392, -2563559, -6442, -1756642, -6824166,
--868120, -451508, 5763309, 3794067, -4490925, -4159139, 1025960, -2152852, 4279398, -2193118,
-2341294, -4165045, -11730629, 17230336, 3302293, 11268384, 10906533, 2914135, -8813273, 1686848,
-29219736, -20458002, 4645544, -3767760, -11288248, 454193, 3722663, 4550518, -374199, -127238,
--6037651, -8702677, -13476534, -6886443, 9761387, -8581882, -13543106, 7458748, -5010616, 2746095,
--2005750, 5758478, -5910412, 12345347, -4769025, 1175747, -535260, 1146756, 11291469, 3752728,
--5614596, 5982890, -5161477, 9289477, -5948530, 3712462, -13798656, -10060424, -7514582, 2202781,
--7029251, -11969537, 4706748, 8596914, 2299955, -6436009, 3774740, 6031745, 6757058, 18777060,
-25844966, 35340600, -3868155, 5514201, 8320426, 4876399, 4545149, 5566815, -7496329, 13946833,
--2220498, 18252000, 22455162, 16514149, 6524056, 9242770, 2916283, 31610960, 8914741, -5930276,
--5237713, -4628364, -2021856, -2156611, 1490891, -2644626, -6119255, 5199595, -9576166, 2687576,
--2301029, 2844879, -4840965, -3832185, -3090229, 7100655, -7161858, -6832219, -650151, 2878165,
--3679176, -8738648, -3023120, 416612, -4257387, 4541928, 8629663, -5071820, -693637, 1793149,
--999117, 2881386, 4971962, -2433099, -6154688, -1052267, 2837900, -2996277, 7844221, 9419937,
-5693516, -2740189, -6476811, -860067, 9185324, 1046898, -323733, 4132832, 1240172, -82678,
--1610613, 2318209, 2300492, -6255083, -4630512, -241055, 35455492, 28388660, -12352863, -5672578,
--14739791, 8517457, 4153770, 17372606, -3047816, -7504382, -3395172, -11234561, 2539936, 446677,
-16374563, -6114960, 6105296, -22020834, 12141336, -1710471, 8543764, -88047, 7740605, 1342177,
--12548284, -6451578, -10766946, -8147553, 9057012, 21876416, 9510131, -2571075, -6785512, -266825,
--1848447, 5480915, 7370701, -13940390, -290447, -4837207, -4691178, -15137075, -11734388, -24551644,
-434329, -1195612, 8842801, -7329899, 15741592, -11931419, -5294621, 31596464, 31222264, -21561272,
-4802311, 18169322, -10541460, -4967667, 9293235, -3430068, -13236015, 35148400, -8766565, -53255984,
-17708150, -626528, -27515172, 21088826, 22414898, -7898982, 15682536, 20043002, -9477382, 770410,
-12634183, -13660680, 5711233, 11083700, -19694572, -2632278, -6520834, 1145146, -7233799, 186294,
-2716567, -8232379, 6660421, -9555765, -4478041, 4774930, 9459129, -5393405, 502511, 1995012,
--1469416, 3319473, -6981470, 10304700, -5231807, 10880226, 10408316, -156229, 500364, 7187091,
--5226975, 1637456, -318364, 8984535, -6690486, 5490042, 1602023, -20691542, 3984656, -2483028,
--3946538, 1242319, -622770, 2345052, -11778948, 1726040, -3093987, -10243497, 1744831, 17923436,
--16766479, 5638219, 9733470, -14149770, -95563, 8048232, -12870406, -6191196, 2864743, 6593312,
-12154221, 6095633, -9163313, -1409823, 9085466, -9659918, 10390600, -4643934, -12461311, 11875585,
-6309307, 6077379, -2858838, -2900714, -4193499, -308164, 10049150, -19741280, 10311680, -109522,
-17074106, -10251013, 375273, -12822088, 6056978, -21061982, 2700998, 1257352, -8160975, -6135898,
-3765613, -14083735, -24519968, 15364709, -1059783, 4831838, -14367739, 9316321, -2048163, 9988483,
-10711648, 5454609, -10037875, 8875013, -4643397, -1970853, -18882286, 3068754, -13345000, -14695231,
--21556978, -8682813, 3832722, 6368900, -22262426, -10866267, 1545115, -7791071, -30010010, -23762444,
--24406152, -4833449, -14460618, 13396540, 18781892, 5352066, -17960480, -20917028, -24405078, -2027225,
--1508607, 13776644, -11615202, -20336670, -9815611, -13452911, 4990752, 529892, 5200132, 2735357,
--6490770, 1735167, 5345087, -5065914, -1944010, -4253092, -2542084, -3003256, -6300180, -48318,
-8460549, 535260, 2677375, 2638721, -1127966, 6389838, -3700651, 9739375, 8797704, -3111167,
--7358353, -132070, -2650532, -4026532, -4523675, -4022774, 7128035, 543313, 6730751, -6483253,
--7013682, -1097364, 3838090, -11450920, 2294586, 1404454, -8270497, 2100776, -6757058, -15043123,
-9698036, -3424700, 1457068, -2318209, 1889786, -7595650, -1746441, -562641, -15952045, 26459682,
-29443612, -7537668, 19724100, -6065031, -8259222, -8170639, 19186692, -17398376, -4297115, -8447127,
-30651034, 863288, 10969346, 3778498, -3288334, 15191836, 8287140, 12393128, 3616363, -2243047,
--5811628, 11861089, -2401961, -12146168, 14458471, -651761, 12611098, -14770929, 9744207, 3366181,
--15173046, -11635066, 26584236, 17296908, -2053531, 9458055, 7684234, -17364016, -11651709, 5470715,
-3913789, 11796128, 1090385, 2439542, 4276714, 14450417, 5616744, 3574487, -15002858, 40170292,
-26671746, 2940979, -18571976, 8862128, -6534793, 4866735, -4586488, 8490613, -6376953, 1217086,
-21821656, -15564961, -7889318, -20866024, 5340792, -5772973, -4097936, 18827526, 5506148, 2283849,
-1167694, -7937637, -15934866, 11069741, -500901, 107374, 11530377, 11814918, -1447404, -8884140,
--10681584, 19498078, -2553895, -1254131, -4330938, 14638859, -1712618, -10411001, 6225555, 5375689,
-8698919, 4105989, 2718714, 13532905, -3336116, -5076115, 4200478, -437013, -6979, 1104344,
-5692443, -3611531, -605590, -4576288, 898722, 6473053, -3637301, 1471563, 7633768, -2986076,
-1160715, 5903970, -195421, -1699196, -13317620, 8182987, -7734163, 5344013, -9123047, -1921461,
-2780455, -5411659, -2782602, 12038256, 8127152, 987843, -2551211, 11258183, 1565516, 5359046,
-4317516, 2508261, -2739652, 4835597, 1855963, 4788352, -9891847, -21233782, 54554676, -61572116,
--7256884, -32489816, 39528732, 10519986, 6854768, -15600395, 3576097, -12764643, 35408248, -6440304,
--2413235, 3483219, -1889249, -14062260, 5191005, 7916162, 10631655, -24158654, -12713103, -12523051,
-4813585, -7431904, -6567005, -939524, -325881, 15575699, -8223789, 608812, 11800960, -1656247,
--15920370, 1815697, 12432320, -1676648, -25035902, 18469970, 2160906, 159988, -115964, -10717017,
-8154533, -46359876, -32307280, -4689031, -11610907, 1905892, 3469260, -21818434, 33940444, -13663365,
-46781856, -6808597, -16451872, 15842524, 2633352, 14117021, 21643950, 6678674, -22320946, -6376416,
-25003152, 57920320, 1897302, -15064061, 24194624, 1894618, 28544352, 4420595, 38654704, -10185515,
--1569811, -1246614, 9017284, 1131187, 14847702, 26977764, 1602023, -5954436, -4858145, 8452496,
--7386807, -3381213, 17738752, 12758737, 1947231, -3525095, -6693170, -7726110, -4597763, -6324876,
-12793634, -8129300, -5509370, 6118718, 2282238, -2649458, 5733245, 6300180, -3621194, 5371394,
-9092983, -4925791, 605054, -13100187, 16269336, -304943, 13086228, 642098, -13634374, -142808,
-1420560, 3353296, 1465658, -237834, -11712376, -11093364, -649077, -6555731, 8652748, 2924873,
--3998078, -645319, 6810208, 1146219, -3921842, 137976, 4938676, -195958, -2368675, -751082,
-2681670, 80351856, 25131464, 9139690, -2240362, -8318815, -11217918, 26422102, 24250996, -27343910,
-16669842, 12723841, 3097208, -8061117, -14415521, -37394668, -13876502, 12329240, 4161287, -11836930,
-22991496, -7109782, 9448391, 9389872, -5262409, -5049271, 23982024, 903017, -8805220, 15106474,
--12701829, 29418916, -14054744, -8403104, -1357747, 11639361, 6260989, 29748554, -8840116, -17360794,
--6041945, 8062191, 2249489, 16061567, 4561256, 1652489, -6198712, 12992276, 55558624, 23785528,
--20343112, 18014704, -10565620, -16540993, 13873281, -355409, 4202089, -863825, 10056129, -14417668,
--22081500, -58877024, -15343234, 21326660, -7594576, -20062866, 9087077, -4504347, 9051644, -23460722,
--20538534, -9565966, 9123584, 9635759, 28421410, 5172751, -1772211, -21871048, -31028454, -3684545,
--13834090, 2924336, 11478837, -14694157, -15095736, -3098282, -18832894, -31596464, -10357851, -8251706,
--16782584, -3768297, 9658845, -8676371, -4465156, -10004589, -2159295, -22454090, -14210973, -14228690,
-631360, 2297271, 8414378, -12471511, 7355132, -16887812, 940061, -9861782, -1078037, 5493800,
--5050345, 8233989, -22235582, -4257387, 7881265, 3402151, 7264401, -2654827, -5902896, 11204496,
--1951526, -2088965, 7911867, -11027865, -8689793, -1452773, 2347200, -14694157, -6856379, -7910793,
--4308389, -1058710, 34897, 1480690, -6493991, 891206, -1840394, -12930536, 17361868, -14618458,
-48495548, 40635224, 18845780, -11605539, -17566954, 28929826, 24776592, -33342904, -7031399, -20583094,
-27977954, -5190468, -40513352, -17898740, 13996225, 24742232, -46773804, 18258442, -32475322, 11531987,
--19296752, -5299453, 22060026, -7915625, 3113315, 13899051, 29504278, -19881940, -32994476, 6941741,
--2855080, 3177739, 30263414, 7309498, 22519050, -29265908, -5601174, 8879845, -26033944, 41718628,
--5176510, 24842628, -3781719, -6306086, 20442970, 20300700, -12151536, 45982456, -11106785, -20576652,
-22134650, 39451960, 2026151, 6824166, 1702418, 17178796, -18972482, 13701483, 60260000, 27423366,
--2105608, 26020522, 32339494, -24509768, -74196632, 5208722, 44423920, 50040664, 13606993, -5257040,
--21989696, 25791278, 55530704, 25616796, 13409425, -54976656, 10133975, -31309238, -19425600, -48513804,
-40754944, 8527121, -14257681, -19523848, 14241575, -14211510, 7653632, 5124433, 7129109, -18200460,
--3920768, -2573759, 9410273, -6497749, 7945153, 6688338, -8231842, -5599027, 11092290, 150861,
-11921219, -5437966, 4380330, -8204462, 4187056, 22347788, 4204773, 3937411, -2941516, -24680492,
--12390981, -15350213, 8000451, 40784472, 38674568, 34717832, -2775086, -25749402, -24136106, -11750494,
-16237124, 17886928, -1370632, -8728447, -13050795, -19236622, 5005785, 10362145, 8833137, 8056285,
-6501507, -91805, 662499, -3671660, 3773129, -5313949, 3642132, -1408212, -781147, -191126,
-4734665, 1115081, 2039573, 311922, 2244121, -4032438, 440234, -1891933, -607738, 34152508,
--67017596, 51501488, 10842645, -30612380, 617402, 28893318, -18913426, 1014149, 16102906, -19805704,
-1886028, -17777406, -11236708, 19202262, -16137266, -9074192, -34091304, 15038291, 33469606, 9564355,
--14811195, -25224342, -3901441, 19298898, 10493679, -21518324, -421981, 26353920, -3310883, 1974611,
--8774618, -6212670, 61610768, -29314226, -7388418, -6670621, 10465762, 28731184, -30217780, -16860430,
-40571336, -4608500, -2472828, -48237852, -39896488, 16906602, 27313308, 15017353, -49457624, 34127272,
--805306, -7444789, 7201050, -35306780, -9728101, -4467303, -17476758, 32009318, -24808804, -13706851,
--26686242, -15346455, -35217660, 10759430, -55111408, -15364172, 6534256, -27370216, 6847789, 15384573,
-6765647, -300111, -9842991, -19753628, 29250874, -6251862, -2777770, -10419591, 17719962, 35504348,
-5350993, -47785808, 4251481, -21246130, 3215857, 4501663, -8717173, 3408594, -14322105, -4777614,
--1206886, -10799158, 204548, -3052648, 8409546, 7552700, -2631741, 3830037, 15648713, -7024419,
--5649493, 16062641, -11660299, 10677826, -5677410, -5355824, 1145146, -6770479, -3335579, 9790378,
--19051938, 5764383, 4418985, 7085086, 13549011, -9540733, 1569274, 10203769, 3635690, -3437585,
--9048422, -1753957, -2246268, 266288, -9287867, 2789045, -1697049, -3736085, 2181844, 1238024,
--4356171, 9782862, -4249870, -2964601, 155156, 2586107, -443992, -38739532, 23372138, -799401,
-30278982, -6342056, 31326954, 3840775, -4070019, 13940390, 36368708, 17342004, 9286256, 7170985,
-4609037, 14215268, -18373870, -1606318, -13785234, -14563697, 22369800, 13811541, 8544837, -6579890,
--5655398, -2793876, 23409182, 3445101, -10389526, -17089138, -786516, -4159676, 17611514, 2523293,
-14730664, 27520002, -7718593, -70289824, 4604205, 56820808, 5946382, -41978472, -5412733, 15924128,
-12646531, 22207128, 20358144, -1849520, -13223131, -13747653, 17822504, -11030550, 1996623, 6038724,
--72815800, -12827457, -13999446, 11356430, 57235272, -1258962, 4600447, -13498545, 3893925, 11582453,
-24015310, 12315819, -14185740, -7693897, -35348656, -2377265, 24312736, -10962367, -5039608, 8708583,
-24701430, 19765440, -5314485, -25381646, 166430, 8919573, 2815351, -16957604, 2083059, 1763621,
--1242856, -14683956, -18665390, 15960635, 13358959, -949725, -2891050, -14379551, 11221676, 4344360,
-2590939, 4063576, 3613678, 6192269, 471910, -15915538, 8796630, 139050, -913217, 600759,
-4227322, 1683627, -2042257, -328028, 688805, -5432060, -2944200, -21919902, 3489124, 14962592,
--10640781, 5141076, -17397302, 9546102, 4666482, -2915746, -4731980, -2079838, -1606855, 1752884,
--3728032, 19725174, -2285460, -114974128, -216266096, -86909736, -146375712, -168225808, 104614128, 36575404,
-96118680, 289042720, 189186864, 152665680, 228787008, 114221432, 7376607, 90491736, 22529788, -91556352,
--64340756, -72960760, -167657808, -136184288, -58856620, -121946472, -134399728, -55560772, -82726976, -138758576,
--71731856, 10737418, -87282864, -79863840, 17602386, -17298518, -79598096, 89179624, 58194124, -66844188,
-66133908, 100366944, 15184857, 57383448, 201639056, 95770792, 60429116, 237221248, 166195904, 96238944,
-233818560, 313495040, 194053072, 281115264, 364082240, 260193952, 172519168, 227442672, 119684632, -115854592,
--76347336, -153031296, -356576768, -357509312, -362166144, -546620480, -539802752, -542292224, -564992768, -533350656,
--518883040, -408425088, -326990368, -247233344, -101946416, 29992294, 79237312, 201849504, 350595488, 297107584,
-398215424, 566326848, 475965600, 444584416, 541227072, 401013568, 205641968, 222919536, 209086528, 78510392,
-55818468, 112277424, 41457708, -9803263, 37524056, 13407277, -78087336, -69707856, -42112692, -139520400,
--160383200, -69931728, -122039888, -167891344, -69459288, -44569412, -91621856, -1279900, 29465624, -30203284,
--4640176, -22274774, -128250408, -184597696, -207071648, -258466832, -304471840, -273139520, -249846832, -232501072,
--174679008, -111100600, -79272752, -14313515, 61551176, 95938832, 138836432, 228888464, 278005728, 324459552,
-347487552, 329436352, 293428960, 224679408, 153418912, 85848344, 11886322, -14376866, -24871082, -40209484,
--45617920, -46239080, -53912040, -56945896, -51776368, -46379740, -51896628, -55413132, -53262428, -55683176,
--61290792, -58942520, -56664576, -44727252, -30185030, -23958938, -15392089, 850404, 6777996, 14328011,
-30232274, 39797704, 41323492, 40657772, 31958314, 21353504, 12538083, -404801, -11883638, -17962090,
--29010356, -37242200, -40296456, -47302624, -49655192, -45314052, -42583528, -39825620, -33300492, -29113972,
--23296976, -16974784, -12474733, -6114960, -579821, 6496675, 10862509, 15374372, 20226612, 25370908,
-28627568, 33884608, 39545376, 43643848, 45848776, 47496968, 48521320, 47852380, 46573016, 46170900,
-41958072, 36586144, 29709900, 21926344, 14084808, 5937793, -3006477, -10468983, -18383534, -24939802,
--31581968, -37468220, -43444132, -45805828, -47371340, -46968688, -43336756, -39413840, -34636764, -27095874,
--19742890, -12797392, -4628364, 2423435, 7080254, 11267310, 14266271, 14582488, 13673028, 12974022,
-11217918, 8858907, 7205345, 6215892, 4965519, 4001836, 3454764, 3042448, 2530273, 2335389,
-2358474, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+2424509, 3884798, -1372779, 3452080, -563714, 3643743, 1831804, -803696, -1430224, 3690988,
+309775, 734439, -4200478, -674847, -304406, -189515, 5737540, 2802466, -211527, -4308389,
+-3133716, -1854352, 523449, -100395, 1241246, 2637110, 801548, 971736, -4348118, -670552,
+-4232154, 168577, -2341294, 2768643, 2763812, -1104344, -2284386, 2894808, 618475, -1087701,
+-3912715, -532039, -2509872, 701153, 2390149, -3968550, -1938104, -664109, -1553704, 10126996,
+2411624, 5845988, 424665, 1917703, -45097, -2927020, -2716030, -3455301, 1631551, -2850785,
+2049773, 63888, 2502892, 2560874, 6218039, 1876364, -516470, -315143, -3694209, 6023155,
+5541045, 969589, 1708323, 1569811, 1714766, -350577, -3092377, 921271, 1788317, -1161252,
+517544, -951335, -2825552, 1345399, -2356863, -1600412, -733903, 188442, -1054415, -1144072,
+-1342714, -28991, -73551, -210990, 272194, -471373, 900333, -500364, -839129, -81068,
+1129576, 425202, -461172, -1515587, -445603, 1403917, 96100, 634045, 557272, 394600,
+14017700, -3288871, -2905546, -1114544, -2749316, 664109, -6631430, 540629, 1347546, 359704,
+4544613, 539018, -911070, -3974455, 2581812, -5611375, -4832912, 1774358, -2344515, -1111860,
+-816044, 959925, 3820374, 5216238, 415001, -785442, 6200322, 2247342, -334471, 245350,
+-2499671, 98247, 6804302, 23085, -3125663, -2528125, -706522, 2320356, -3111704, -3847217,
+-3923990, -3212099, 3120294, -3020436, 1183800, -3674345, 1327145, 4492536, 319438, 3198140,
+-1323924, -2502355, -1220308, 2224793, -106300, 3432216, 5019206, 751082, -1481764, -2562485,
+-100932, -362388, 257698, 178241, -4371203, -445603, -2027225, -2219424, 2162516, 471373,
+1398549, 1639604, -5205501, -2899640, 2201171, -960462, 3900904, 722628, 3291556, -646929,
+-799401, -881005, -1864016, -424665, -2055679, -819802, 92879, 3071975, -702764, -48318,
+-494458, 987306, 7516, 1197222, 270046, -236760, -734439, 968515, -1462436, 27917,
+114890, -830539, 739808, 919123, -1227824, 445603, -586263, 566936, 568546, 18254,
+938987, 118648, -426812, -9847823, -4792647, -2021319, -6691022, -2237678, -6417755, 2050847,
+-450435, -3951370, -4575751, -576063, -3715684, 30065, 3315715, -117575, -5717139, -2046015,
+209917, -2163053, -1769527, 1811939, 5627481, 7175280, -1013075, -1762547, 4086125, 4626217,
+-1280437, -923955, -773631, -3060701, 1093069, 1589675, -2742874, -2026688, -543313, 2841658,
+6146098, 514859, -1904818, 124017, -2912525, -998580, -4703526, -2151242, -2018098, -7514582,
+-687732, -3345243, -2281702, -8261907, 5327907, -3528853, -3111704, 1611150, -397284, -483721,
+1222455, -6844568, -1684701, -2376191, -426812, -3901441, -424128, -1774358, 1971927, 2538326,
+-2141578, -1090385, -3202972, 1300301, -370978, -560493, 137439, -5036923, 5906, -4540854,
+843961, -195958, -1339493, 1495722, 5796059, 2821257, -1203128, 428423, -860604, -2083059,
+349503, 998580, -976568, -37581, -1240709, 158377, -433255, -1586454, 820339, 780610,
+-1666984, -720481, 622770, -634045, 379568, -1052267, -781684, -832150, -1547799, -1699733,
+-5906, 586800, -795106, -977642, 133681, -397284, -96637, -471373, 123480, -214212,
+-478352, -1381369, 942208, -407485, -588411, -607738, -1139777, -77309, 269509, -932545,
+177167, 193274, 183610, -735513, 344134, -18544596, -1514513, -9170292, 8131447, -4803384,
+14680735, -9485435, 9237401, -8414915, -549756, -184684, -6484864, 4947803, 139586, -2461553,
+1466195, -2163590, -884763, -6336688, -97711, -4798016, 3711389, 1244467, 4553202, -2758443,
+6811818, 6093485, -6014028, 1614371, -5116917, 5343476, 20938, -3854196, 289373, -605054,
+-221728, 3899294, 558346, -5979132, 2413772, 4174171, -302258, 4941360, -2353642, 4013647,
+-6140730, -3194919, 3999688, -3602404, 1001264, 5320928, -4931160, 7900056, 3146064, -7970923,
+1906966, -7683697, 2724083, 4146791, 2856153, 3987877, 5861020, 1887638, -725313, -566936,
+386547, 1762547, 4216048, -1553704, 7968238, 1446867, 5462125, 2864743, 1590749, 289910,
+5484137, 885300, 1367947, -3243237, -4263829, 2075006, 2967823, 215822, 4723391, -665183,
+-22012, -979789, 5609228, 1580548, -1979443, 1156957, 975494, 693100, 1928977, 178241,
+3505230, -661425, 1225676, 540629, 1359894, -1000191, 694711, 207769, 111132, 186294,
+-1151051, -1193464, 477815, -1442035, -545998, -1554778, 951335, -151934, -424665, -594316,
+12274480, 128849, -3262565, -1054951, -4492536, -5379984, 8981850, -1672890, -1234803, 8243116,
+-569620, -1523640, 3685082, 6426345, 1883343, 3220152, -96637, -6895570, -1775432, 5281199,
+-7856569, -7792145, -2874944, 1774895, -5519570, -3302830, 179315, -728534, 5558225, -2062658,
+-1135482, 5842766, 8121247, -6924561, 1893544, -1610613, 3007551, 855772, -3026878, -622233,
+3419331, 5186710, -1308354, -7195681, -1560147, -588411, -1841467, -3566434, 597537, -410706,
+1392643, -949725, 1080184, 6820408, -4935455, 695785, -3741454, -3045669, -5169530, -1535451,
+-2955474, -7203197, -185220, 540629, -2746632, -513249, -2911451, 2838437, 3598109, -513249,
+1124745, -2570538, -648003, 8790724, -1081258, -3591667, -11805254, -5374615, -79457, -4025458,
+2819646, -1118839, 1100049, 18254, -2310693, -420370, 3538516, -2894271, 758062, -796716,
+415001, 33286, -2409477, -1817845, -968515, -1897302, -304406, -3019362, -554051, -1704565,
+417149, -1184874, -312459, -1622961, -1684701, -1722282, -363998, -172872, 705448, 457951,
+-155156, 504122, 488016, -87510, 1782411, 1477469, 62277, 875636, -615254, -922344,
+295816, 15694884, 17655000, 3248606, -6606734, 3915400, 6881075, 6898255, 3838090, 5176510,
+2248952, 8563091, -1011465, -1203665, -3676492, 5323075, -3328600, -7798587, -10681047, 1077500,
+-5186710, -4494684, 3610994, -1247151, -2929705, 8748848, -758062, 10902238, -2147, -4498442,
+-3101503, 3738232, 2455648, -2309619, -8855149, 12470438, 7173669, -61203, 6720550, 3947075,
+4332012, -4267050, 4906464, 2427194, 900333, -1655710, -2357400, -5691369, -7948911, 2086280,
+3693135, -6242735, 2351495, 5149666, 7774428, 1955821, 7014756, 3174518, 5963025, -9035001,
+2551211, 694174, 1695438, 99321, -701690, 3658239, 3346853, 3217468, 4769025, -1728724,
+2272038, 1272384, 6902013, 8436926, -4413616, -5194226, 683974, -2190970, -4631049, 1785096,
+4658966, -3049964, 1929514, -8684961, -6365679, 1327145, -4415764, -2165737, -1476932, -4014184,
+-57982, -176094, 424128, -216896, 1632625, 1893007, -201327, 895501, 286152, 1402307,
+1559073, -102542, 60130, -227633, 1713155, 773094, 921807, 2066416, -434865, -1242856,
+1597191, -599685, -57445, 2390149, 1502165, 2255395, 3210488, 381715, 1415729, 751082,
+2114198, 447213, 871342, 1056025, 14501420, 4559108, 6386080, -5355824, 2076080, -13198971,
+679142, -9546639, 7175280, 4807679, -4032438, 6024229, 3421478, -6478958, -1621350, 9271761,
+-325881, 6371584, -1776506, 1248762, 7407745, -9276592, -729608, 1472100, 2698313, 577136,
+2971581, 347892, 8993125, -4217121, -2601677, -2763812, 6798933, 822486, -3209951, 4092030,
+11475616, -8063801, 1410897, 1501091, -704912, 4590783, -2328946, 8727910, 2944200, 2174327,
+-7198902, -760209, -1911261, 4021163, 3056406, 4346507, -4944044, -3274376, 4178466, -8665633,
+-4827543, 1906966, 9266929, 5568962, 8195872, -8986682, -2829847, -9132711, -2352568, 2705293,
+-774168, -8621073, 1125818, -5303211, -73551, -9430674, -11364483, -4693863, -8202314, 417686,
+2903398, 1581085, -3506304, 4481262, 7289097, 1990717, 2154463, 4136591, -1313186, -7041062,
+-421444, -4861366, 2519535, 744103, -466004, 1245541, 658204, -5175436, -2611340, -1512902,
+2573759, 313533, -1789391, -673236, -149787, -806917, 430570, -1101122, -468688, 301185,
+2346126, 534187, 767189, 469225, -447750, 630286, 1570884, 745714, 2041720, 547071,
+1061931, 59593, 1619740, -2568391, 1601486, -16980690, -15298137, -10963441, 3534221, 3577708,
+12969727, -5523865, 12324409, -4834523, -19958176, -1649268, -1729798, -7636989, -12865038, -4610111,
+-147103, -7878581, 67646, -12196097, 1037772, -12865038, 7580618, -3137474, 5558762, -2415919,
+-97711, -3907347, -4560719, 8163122, 1706176, -2207076, 9239012, 1151051, 1595580, 3258270,
+8511551, 7492571, 5742372, 270046, -9795747, -908386, 4893579, 1571958, 6207839, -2791192,
+2835215, -14446659, 4730907, 8910447, -10912438, 6616934, 2392834, 10516227, 8072928, 93952,
+-2626909, -145492, 7174206, 3587908, -9183714, -7460358, -12744779, -6121939, -8519068, -1855963,
+-10568304, -2175938, -3473555, 10980084, -4970888, 5475010, -2716030, -1495186, -3442953, -7428683,
+-3919695, -2323577, -2403571, 6946036, -20488604, -4296041, 9729712, 533113, 1946694, 5245229,
+9850507, -6030671, 1262184, 2678449, -358093, -5906, -1333587, 2756295, 4129074, -1677722,
+421981, -308701, 4601521, -1586990, -42413, 4624606, 1020592, 1683090, 2192581, 2216203,
+-656056, 465467, -1124208, -1679869, -909459, -3041911, 994822, 2134062, 1507534, 906238,
+-3976066, 100932, -448287, -105764, -1814087, 1216013, 1914482, -897648, -103616, 2240899,
+2383707, -2399276, -22849226, 17104708, -5131412, 10014790, 5719823, -657667, -15202037, 11541114,
+1351841, -1276142, 7186554, 5036923, -6433324, -345745, 12429098, 3969624, -5995775, 8764955,
+-5196911, -4205310, -2989834, 2649458, -212064, -1885491, 946503, 3622268, 3175592, 3311957,
+-9624485, 5534602, -8046085, 10324028, -6856379, 10274636, 3094524, 763967, -10604811, -10719701,
+-3769371, -3731253, 11936788, 3220152, 9484898, 3865471, -9044664, 95563, -2296197, 3957812,
+-69793, 3456912, -1404991, -6119792, -3759170, 5972689, 15185931, 10941966, 934155, 3604551,
+-1451699, -2411087, 7624104, 6436546, -3185792, 9583683, 13516799, 19131394, 73551, -11337640,
+-13718662, 4430259, 2080912, -793495, 3017215, -163746, -4634807, -728534, 11352135, -2360085,
+-5465883, 20614770, 4911295, -3751654, 5775658, -80531, -571768, -878858, -3659312, -688269,
+5983963, 2927557, -2389613, -3267396, 4089346, 3386045, -648540, 8252243, 2093797, 1386738,
+566936, 3592203, 1110786, 3353833, 2105071, 1042066, 362388, 4281546, 2140504, 2190970,
+317291, 4250944, -910533, 1548873, 2312303, 1652489, -687732, 4775467, 5354751, 1571421,
+-1238561, 5749888, 150324, -2905546, -778463, 4161287, -64425, -512712, -1205812, -927713,
+-68183, 986769, 2520072, 3858491, 1116155, 4081830, -1226750, 10491531, -15344308, 12918188,
+5310190, -10470057, 24532316, 3701188, -12527346, 2918967, 6830609, 674310, 4932770, 17629768,
+-16842714, 11017665, -6813429, 9778567, -3718905, 2114735, -15603079, 2688650, -1697049, 6310381,
+-5983963, 915365, 1193464, 208843, -9162776, 8836358, 920734, -901943, 4136591, -1701344,
+4074850, -2125472, 12383464, 9833328, 12257300, 12259984, -1979443, 4324495, 5280663, 605054,
+-6416145, 8694624, -10237055, 3227668, 10139881, -5963562, 5369783, -11263552, 3616363, -914291,
+-2703145, -903554, 863825, 3580929, 3367254, 12021613, -7838852, -300111, 7898982, 17098802,
+-15089294, 3951370, -3711926, 5259188, -2779918, 24939264, -15302968, 5549098, -8530879, -4635344,
+2214056, 2694555, 1369558, -21635898, -11462731, 18054432, 9836549, -1874753, -9714679, -11136850,
+-4458176, 4116189, -12090333, -6493454, 5947993, 3435974, -247497, -237297, -8461622, 1691143,
+-2462090, -3078418, 3872987, -1968169, -2609730, -882616, -7402376, 2625299, -1917166, -2399813,
+-2691871, 3483219, -3570192, 4220342, -642098, -942745, 1408749, 1564979, 5316096, -5365488,
+-1165010, -4057134, -886911, 2765422, 2018098, 7079717, -2282238, 3951370, 865973, -2452426,
+-1670205, -593242, 2639258, -318364, 1353452, 11513734, -15075872, -3175055, 21392158, -6382859,
+-398358, 11476153, 2716567, 7094212, -15914464, 15327665, 1024350, 1174674, -4019553, -9559523,
+-1293322, -1452236, -10246181, -6166500, 11418707, -3588982, 2214056, -5559835, -25022480, 8514236,
+1164473, -7704098, 4809290, 9736154, -884226, 1106491, -1934883, 2474438, 6599754, 2127620,
+10589242, 7270306, 1677185, 9271761, -7419556, -7295539, -10416369, 3978214, 6055367, 1789928,
+-16536698, 4729833, -14127221, 20533164, -4840428, 7319698, 17508434, -6859063, 11131481, 2807835,
+12117176, 4905927, -5819681, -17919140, -12868259, -10010495, -1365800, -10509785, -2087891, -9183714,
+-5965710, 18089328, 3931506, -7667054, -6817724, 3674345, 6724845, -1538135, 2636573, -32801738,
+13232794, 2267206, -10516227, -12916040, -3360812, -21655226, 2357400, 10807748, 1207423, -9289477,
+5772973, 4880157, -7641821, 3860639, 2295123, -1883880, 270046, -4878009, 1305133, 1729798,
+1284732, -6366216, -3484829, 2651069, -3991098, 947577, -2405719, -1521492, 1553168, 5410585,
+-6819335, 2404108, 5322002, -6338835, -5980742, 812286, -5488968, 1286880, -3642669, 3815542,
+2061584, -6351720, 3578782, -4166118, -2705830, 4415764, 1023813, 9913321, 3068217, 0,
+-617938, 790274, -2592550, 1111323, 7341710, -20116016, -24706800, 15188615, -12053289, -14048301,
+-3903589, 9599252, 19579682, -12613245, 1194538, 9419400, -2631204, -3854733, 5148592, 3424700,
+14751065, 5062693, -13900125, -357019, -6981470, -306016, -8204462, -10823318, 1833951, 11188927,
+-668941, 5091684, -8993662, 2860448, 11023034, 8620536, 1413044, 1043140, 6937446, 6638946,
+4247186, 10143639, -12470438, 13997298, 10069014, 3584150, -10287520, 949188, 8156143, -8053064,
+9453760, -6356552, 10690174, -2634963, 13917842, -21495774, 23134842, 5577015, 21822728, 1581085,
+-4474282, -1335735, 7956427, 694711, -18003430, 888521, -1171452, -18621904, 6053757, 13536126,
+-17729088, 15042586, -15595563, 5069672, 6169184, 3433826, -19545860, -9313100, -9543417, 2066953,
+1565516, -11308649, -16727287, 3458523, -14701136, 10265509, -7046968, -3711926, 5186710, -9070971,
+-7026030, -9311489, -3801583, -5120138, 391379, -7415798, -5551245, -6752763, -10128070, -4824322,
+-2040110, -2158758, -2490007, -2831994, -1888712, -4722317, -5236639, 3684008, -6287296, -3327526,
+-1540283, 5083094, -2309619, 308164, -8058433, -5735392, -2563559, -6442, -1756642, -6824166,
+-868120, -451508, 5763309, 3794067, -4490925, -4159139, 1025960, -2152852, 4279398, -2193118,
+2341294, -4165045, -11730629, 17230336, 3302293, 11268384, 10906533, 2914135, -8813273, 1686848,
+29219736, -20458002, 4645544, -3767760, -11288248, 454193, 3722663, 4550518, -374199, -127238,
+-6037651, -8702677, -13476534, -6886443, 9761387, -8581882, -13543106, 7458748, -5010616, 2746095,
+-2005750, 5758478, -5910412, 12345347, -4769025, 1175747, -535260, 1146756, 11291469, 3752728,
+-5614596, 5982890, -5161477, 9289477, -5948530, 3712462, -13798656, -10060424, -7514582, 2202781,
+-7029251, -11969537, 4706748, 8596914, 2299955, -6436009, 3774740, 6031745, 6757058, 18777060,
+25844966, 35340600, -3868155, 5514201, 8320426, 4876399, 4545149, 5566815, -7496329, 13946833,
+-2220498, 18252000, 22455162, 16514149, 6524056, 9242770, 2916283, 31610960, 8914741, -5930276,
+-5237713, -4628364, -2021856, -2156611, 1490891, -2644626, -6119255, 5199595, -9576166, 2687576,
+-2301029, 2844879, -4840965, -3832185, -3090229, 7100655, -7161858, -6832219, -650151, 2878165,
+-3679176, -8738648, -3023120, 416612, -4257387, 4541928, 8629663, -5071820, -693637, 1793149,
+-999117, 2881386, 4971962, -2433099, -6154688, -1052267, 2837900, -2996277, 7844221, 9419937,
+5693516, -2740189, -6476811, -860067, 9185324, 1046898, -323733, 4132832, 1240172, -82678,
+-1610613, 2318209, 2300492, -6255083, -4630512, -241055, 35455492, 28388660, -12352863, -5672578,
+-14739791, 8517457, 4153770, 17372606, -3047816, -7504382, -3395172, -11234561, 2539936, 446677,
+16374563, -6114960, 6105296, -22020834, 12141336, -1710471, 8543764, -88047, 7740605, 1342177,
+-12548284, -6451578, -10766946, -8147553, 9057012, 21876416, 9510131, -2571075, -6785512, -266825,
+-1848447, 5480915, 7370701, -13940390, -290447, -4837207, -4691178, -15137075, -11734388, -24551644,
+434329, -1195612, 8842801, -7329899, 15741592, -11931419, -5294621, 31596464, 31222264, -21561272,
+4802311, 18169322, -10541460, -4967667, 9293235, -3430068, -13236015, 35148400, -8766565, -53255984,
+17708150, -626528, -27515172, 21088826, 22414898, -7898982, 15682536, 20043002, -9477382, 770410,
+12634183, -13660680, 5711233, 11083700, -19694572, -2632278, -6520834, 1145146, -7233799, 186294,
+2716567, -8232379, 6660421, -9555765, -4478041, 4774930, 9459129, -5393405, 502511, 1995012,
+-1469416, 3319473, -6981470, 10304700, -5231807, 10880226, 10408316, -156229, 500364, 7187091,
+-5226975, 1637456, -318364, 8984535, -6690486, 5490042, 1602023, -20691542, 3984656, -2483028,
+-3946538, 1242319, -622770, 2345052, -11778948, 1726040, -3093987, -10243497, 1744831, 17923436,
+-16766479, 5638219, 9733470, -14149770, -95563, 8048232, -12870406, -6191196, 2864743, 6593312,
+12154221, 6095633, -9163313, -1409823, 9085466, -9659918, 10390600, -4643934, -12461311, 11875585,
+6309307, 6077379, -2858838, -2900714, -4193499, -308164, 10049150, -19741280, 10311680, -109522,
+17074106, -10251013, 375273, -12822088, 6056978, -21061982, 2700998, 1257352, -8160975, -6135898,
+3765613, -14083735, -24519968, 15364709, -1059783, 4831838, -14367739, 9316321, -2048163, 9988483,
+10711648, 5454609, -10037875, 8875013, -4643397, -1970853, -18882286, 3068754, -13345000, -14695231,
+-21556978, -8682813, 3832722, 6368900, -22262426, -10866267, 1545115, -7791071, -30010010, -23762444,
+-24406152, -4833449, -14460618, 13396540, 18781892, 5352066, -17960480, -20917028, -24405078, -2027225,
+-1508607, 13776644, -11615202, -20336670, -9815611, -13452911, 4990752, 529892, 5200132, 2735357,
+-6490770, 1735167, 5345087, -5065914, -1944010, -4253092, -2542084, -3003256, -6300180, -48318,
+8460549, 535260, 2677375, 2638721, -1127966, 6389838, -3700651, 9739375, 8797704, -3111167,
+-7358353, -132070, -2650532, -4026532, -4523675, -4022774, 7128035, 543313, 6730751, -6483253,
+-7013682, -1097364, 3838090, -11450920, 2294586, 1404454, -8270497, 2100776, -6757058, -15043123,
+9698036, -3424700, 1457068, -2318209, 1889786, -7595650, -1746441, -562641, -15952045, 26459682,
+29443612, -7537668, 19724100, -6065031, -8259222, -8170639, 19186692, -17398376, -4297115, -8447127,
+30651034, 863288, 10969346, 3778498, -3288334, 15191836, 8287140, 12393128, 3616363, -2243047,
+-5811628, 11861089, -2401961, -12146168, 14458471, -651761, 12611098, -14770929, 9744207, 3366181,
+-15173046, -11635066, 26584236, 17296908, -2053531, 9458055, 7684234, -17364016, -11651709, 5470715,
+3913789, 11796128, 1090385, 2439542, 4276714, 14450417, 5616744, 3574487, -15002858, 40170292,
+26671746, 2940979, -18571976, 8862128, -6534793, 4866735, -4586488, 8490613, -6376953, 1217086,
+21821656, -15564961, -7889318, -20866024, 5340792, -5772973, -4097936, 18827526, 5506148, 2283849,
+1167694, -7937637, -15934866, 11069741, -500901, 107374, 11530377, 11814918, -1447404, -8884140,
+-10681584, 19498078, -2553895, -1254131, -4330938, 14638859, -1712618, -10411001, 6225555, 5375689,
+8698919, 4105989, 2718714, 13532905, -3336116, -5076115, 4200478, -437013, -6979, 1104344,
+5692443, -3611531, -605590, -4576288, 898722, 6473053, -3637301, 1471563, 7633768, -2986076,
+1160715, 5903970, -195421, -1699196, -13317620, 8182987, -7734163, 5344013, -9123047, -1921461,
+2780455, -5411659, -2782602, 12038256, 8127152, 987843, -2551211, 11258183, 1565516, 5359046,
+4317516, 2508261, -2739652, 4835597, 1855963, 4788352, -9891847, -21233782, 54554676, -61572116,
+-7256884, -32489816, 39528732, 10519986, 6854768, -15600395, 3576097, -12764643, 35408248, -6440304,
+-2413235, 3483219, -1889249, -14062260, 5191005, 7916162, 10631655, -24158654, -12713103, -12523051,
+4813585, -7431904, -6567005, -939524, -325881, 15575699, -8223789, 608812, 11800960, -1656247,
+-15920370, 1815697, 12432320, -1676648, -25035902, 18469970, 2160906, 159988, -115964, -10717017,
+8154533, -46359876, -32307280, -4689031, -11610907, 1905892, 3469260, -21818434, 33940444, -13663365,
+46781856, -6808597, -16451872, 15842524, 2633352, 14117021, 21643950, 6678674, -22320946, -6376416,
+25003152, 57920320, 1897302, -15064061, 24194624, 1894618, 28544352, 4420595, 38654704, -10185515,
+-1569811, -1246614, 9017284, 1131187, 14847702, 26977764, 1602023, -5954436, -4858145, 8452496,
+-7386807, -3381213, 17738752, 12758737, 1947231, -3525095, -6693170, -7726110, -4597763, -6324876,
+12793634, -8129300, -5509370, 6118718, 2282238, -2649458, 5733245, 6300180, -3621194, 5371394,
+9092983, -4925791, 605054, -13100187, 16269336, -304943, 13086228, 642098, -13634374, -142808,
+1420560, 3353296, 1465658, -237834, -11712376, -11093364, -649077, -6555731, 8652748, 2924873,
+-3998078, -645319, 6810208, 1146219, -3921842, 137976, 4938676, -195958, -2368675, -751082,
+2681670, 80351856, 25131464, 9139690, -2240362, -8318815, -11217918, 26422102, 24250996, -27343910,
+16669842, 12723841, 3097208, -8061117, -14415521, -37394668, -13876502, 12329240, 4161287, -11836930,
+22991496, -7109782, 9448391, 9389872, -5262409, -5049271, 23982024, 903017, -8805220, 15106474,
+-12701829, 29418916, -14054744, -8403104, -1357747, 11639361, 6260989, 29748554, -8840116, -17360794,
+-6041945, 8062191, 2249489, 16061567, 4561256, 1652489, -6198712, 12992276, 55558624, 23785528,
+-20343112, 18014704, -10565620, -16540993, 13873281, -355409, 4202089, -863825, 10056129, -14417668,
+-22081500, -58877024, -15343234, 21326660, -7594576, -20062866, 9087077, -4504347, 9051644, -23460722,
+-20538534, -9565966, 9123584, 9635759, 28421410, 5172751, -1772211, -21871048, -31028454, -3684545,
+-13834090, 2924336, 11478837, -14694157, -15095736, -3098282, -18832894, -31596464, -10357851, -8251706,
+-16782584, -3768297, 9658845, -8676371, -4465156, -10004589, -2159295, -22454090, -14210973, -14228690,
+631360, 2297271, 8414378, -12471511, 7355132, -16887812, 940061, -9861782, -1078037, 5493800,
+-5050345, 8233989, -22235582, -4257387, 7881265, 3402151, 7264401, -2654827, -5902896, 11204496,
+-1951526, -2088965, 7911867, -11027865, -8689793, -1452773, 2347200, -14694157, -6856379, -7910793,
+-4308389, -1058710, 34897, 1480690, -6493991, 891206, -1840394, -12930536, 17361868, -14618458,
+48495548, 40635224, 18845780, -11605539, -17566954, 28929826, 24776592, -33342904, -7031399, -20583094,
+27977954, -5190468, -40513352, -17898740, 13996225, 24742232, -46773804, 18258442, -32475322, 11531987,
+-19296752, -5299453, 22060026, -7915625, 3113315, 13899051, 29504278, -19881940, -32994476, 6941741,
+-2855080, 3177739, 30263414, 7309498, 22519050, -29265908, -5601174, 8879845, -26033944, 41718628,
+-5176510, 24842628, -3781719, -6306086, 20442970, 20300700, -12151536, 45982456, -11106785, -20576652,
+22134650, 39451960, 2026151, 6824166, 1702418, 17178796, -18972482, 13701483, 60260000, 27423366,
+-2105608, 26020522, 32339494, -24509768, -74196632, 5208722, 44423920, 50040664, 13606993, -5257040,
+-21989696, 25791278, 55530704, 25616796, 13409425, -54976656, 10133975, -31309238, -19425600, -48513804,
+40754944, 8527121, -14257681, -19523848, 14241575, -14211510, 7653632, 5124433, 7129109, -18200460,
+-3920768, -2573759, 9410273, -6497749, 7945153, 6688338, -8231842, -5599027, 11092290, 150861,
+11921219, -5437966, 4380330, -8204462, 4187056, 22347788, 4204773, 3937411, -2941516, -24680492,
+-12390981, -15350213, 8000451, 40784472, 38674568, 34717832, -2775086, -25749402, -24136106, -11750494,
+16237124, 17886928, -1370632, -8728447, -13050795, -19236622, 5005785, 10362145, 8833137, 8056285,
+6501507, -91805, 662499, -3671660, 3773129, -5313949, 3642132, -1408212, -781147, -191126,
+4734665, 1115081, 2039573, 311922, 2244121, -4032438, 440234, -1891933, -607738, 34152508,
+-67017596, 51501488, 10842645, -30612380, 617402, 28893318, -18913426, 1014149, 16102906, -19805704,
+1886028, -17777406, -11236708, 19202262, -16137266, -9074192, -34091304, 15038291, 33469606, 9564355,
+-14811195, -25224342, -3901441, 19298898, 10493679, -21518324, -421981, 26353920, -3310883, 1974611,
+-8774618, -6212670, 61610768, -29314226, -7388418, -6670621, 10465762, 28731184, -30217780, -16860430,
+40571336, -4608500, -2472828, -48237852, -39896488, 16906602, 27313308, 15017353, -49457624, 34127272,
+-805306, -7444789, 7201050, -35306780, -9728101, -4467303, -17476758, 32009318, -24808804, -13706851,
+-26686242, -15346455, -35217660, 10759430, -55111408, -15364172, 6534256, -27370216, 6847789, 15384573,
+6765647, -300111, -9842991, -19753628, 29250874, -6251862, -2777770, -10419591, 17719962, 35504348,
+5350993, -47785808, 4251481, -21246130, 3215857, 4501663, -8717173, 3408594, -14322105, -4777614,
+-1206886, -10799158, 204548, -3052648, 8409546, 7552700, -2631741, 3830037, 15648713, -7024419,
+-5649493, 16062641, -11660299, 10677826, -5677410, -5355824, 1145146, -6770479, -3335579, 9790378,
+-19051938, 5764383, 4418985, 7085086, 13549011, -9540733, 1569274, 10203769, 3635690, -3437585,
+-9048422, -1753957, -2246268, 266288, -9287867, 2789045, -1697049, -3736085, 2181844, 1238024,
+-4356171, 9782862, -4249870, -2964601, 155156, 2586107, -443992, -38739532, 23372138, -799401,
+30278982, -6342056, 31326954, 3840775, -4070019, 13940390, 36368708, 17342004, 9286256, 7170985,
+4609037, 14215268, -18373870, -1606318, -13785234, -14563697, 22369800, 13811541, 8544837, -6579890,
+-5655398, -2793876, 23409182, 3445101, -10389526, -17089138, -786516, -4159676, 17611514, 2523293,
+14730664, 27520002, -7718593, -70289824, 4604205, 56820808, 5946382, -41978472, -5412733, 15924128,
+12646531, 22207128, 20358144, -1849520, -13223131, -13747653, 17822504, -11030550, 1996623, 6038724,
+-72815800, -12827457, -13999446, 11356430, 57235272, -1258962, 4600447, -13498545, 3893925, 11582453,
+24015310, 12315819, -14185740, -7693897, -35348656, -2377265, 24312736, -10962367, -5039608, 8708583,
+24701430, 19765440, -5314485, -25381646, 166430, 8919573, 2815351, -16957604, 2083059, 1763621,
+-1242856, -14683956, -18665390, 15960635, 13358959, -949725, -2891050, -14379551, 11221676, 4344360,
+2590939, 4063576, 3613678, 6192269, 471910, -15915538, 8796630, 139050, -913217, 600759,
+4227322, 1683627, -2042257, -328028, 688805, -5432060, -2944200, -21919902, 3489124, 14962592,
+-10640781, 5141076, -17397302, 9546102, 4666482, -2915746, -4731980, -2079838, -1606855, 1752884,
+-3728032, 19725174, -2285460, -114974128, -216266096, -86909736, -146375712, -168225808, 104614128, 36575404,
+96118680, 289042720, 189186864, 152665680, 228787008, 114221432, 7376607, 90491736, 22529788, -91556352,
+-64340756, -72960760, -167657808, -136184288, -58856620, -121946472, -134399728, -55560772, -82726976, -138758576,
+-71731856, 10737418, -87282864, -79863840, 17602386, -17298518, -79598096, 89179624, 58194124, -66844188,
+66133908, 100366944, 15184857, 57383448, 201639056, 95770792, 60429116, 237221248, 166195904, 96238944,
+233818560, 313495040, 194053072, 281115264, 364082240, 260193952, 172519168, 227442672, 119684632, -115854592,
+-76347336, -153031296, -356576768, -357509312, -362166144, -546620480, -539802752, -542292224, -564992768, -533350656,
+-518883040, -408425088, -326990368, -247233344, -101946416, 29992294, 79237312, 201849504, 350595488, 297107584,
+398215424, 566326848, 475965600, 444584416, 541227072, 401013568, 205641968, 222919536, 209086528, 78510392,
+55818468, 112277424, 41457708, -9803263, 37524056, 13407277, -78087336, -69707856, -42112692, -139520400,
+-160383200, -69931728, -122039888, -167891344, -69459288, -44569412, -91621856, -1279900, 29465624, -30203284,
+-4640176, -22274774, -128250408, -184597696, -207071648, -258466832, -304471840, -273139520, -249846832, -232501072,
+-174679008, -111100600, -79272752, -14313515, 61551176, 95938832, 138836432, 228888464, 278005728, 324459552,
+347487552, 329436352, 293428960, 224679408, 153418912, 85848344, 11886322, -14376866, -24871082, -40209484,
+-45617920, -46239080, -53912040, -56945896, -51776368, -46379740, -51896628, -55413132, -53262428, -55683176,
+-61290792, -58942520, -56664576, -44727252, -30185030, -23958938, -15392089, 850404, 6777996, 14328011,
+30232274, 39797704, 41323492, 40657772, 31958314, 21353504, 12538083, -404801, -11883638, -17962090,
+-29010356, -37242200, -40296456, -47302624, -49655192, -45314052, -42583528, -39825620, -33300492, -29113972,
+-23296976, -16974784, -12474733, -6114960, -579821, 6496675, 10862509, 15374372, 20226612, 25370908,
+28627568, 33884608, 39545376, 43643848, 45848776, 47496968, 48521320, 47852380, 46573016, 46170900,
+41958072, 36586144, 29709900, 21926344, 14084808, 5937793, -3006477, -10468983, -18383534, -24939802,
+-31581968, -37468220, -43444132, -45805828, -47371340, -46968688, -43336756, -39413840, -34636764, -27095874,
+-19742890, -12797392, -4628364, 2423435, 7080254, 11267310, 14266271, 14582488, 13673028, 12974022,
+11217918, 8858907, 7205345, 6215892, 4965519, 4001836, 3454764, 3042448, 2530273, 2335389,
+2358474, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-6914898,
--610959, 6533719, -5777805, 2272038, -9754408, 127775, -3511136, 3959960, -3275450, 920734,
--2211371, -4068408, -1021665, -366683, 3001109, 3742527, -3497714, -6128382, 3254512, 1122060,
-2284923, 1380295, 2579128, -3542811, -2644089, 659278, -647466, 3227668, 2342905, -2705830,
--554588, 2463701, 4567161, 2809982, 67646, -3541201, 1946157, -593779, -1861868, 2518998,
-1116155, -3252901, -2701535, -2203855, 1860795, -3187403, -1687922, 2703682, 1071594, -84826,
--3316789, 1245004, -2847027, -7419556, 768799, -2519535, -4759361, 2211908, -1329292, -1360968,
--1609002, 111669, 3689377, 2209761, 1267552, 1673964, 2794413, -5589900, 2951716, -2219961,
--2112587, -1231582, 1894618, 361851, 3964792, 5720897, 2269353, 446677, 686658, -81604,
-3693135, -1541356, -94489, 1789928, 166967, -1511292, -1511292, 521302, -2147, -1707250,
--817118, 537408, -47782, -226023, -639413, -845572, 610422, 366146, 658204, -252329,
-258235, -175557, -1540820, -613107, 766652, 1264868, -668404, -842350, 332323, 800475,
-14845554, -1257352, 2717641, 3264712, -1525787, 1536525, 5910412, -4616553, -821949, 1688459,
--2300492, -454730, 4339528, -1406602, -986232, -303869, 1677722, -832687, 2085744, -1470489,
--1451162, -666794, -3379066, -5759015, -1092532, -1848447, -780073, 3389803, -6106907, 7496329,
-37044, 129923, 249108, 1415192, -189515, -2881923, 444529, 2310693, 5648419, 282394,
--50466, -861678, -1917166, 3761855, 1776506, -1373316, 2065342, -3745748, 629213, 1196685,
--2845416, -9739375, -3059627, -242666, -583579, -462783, -868120, -1239635, -717260, -1850594,
-2375654, 7178501, 4056060, 315680, -24159, -190589, 2497524, -1466195, -6556268, -224949,
--3420405, 2146947, -3879429, 2189360, -9456981, -56908, -1357210, 3209951, 5135171, -786516,
--1238024, 775242, -34360, 2769717, 1002875, 465467, 3734474, -2759517, -377420, 478352,
-1327682, 8590, 1353989, 78383, 862215, 402116, -194347, 282394, -350040, -37581,
-774168, 1194001, 129386, -323733, -478352, 159988, -219580, 678068, 469762, 332323,
--235686, 128312, 440771, -13082470, -12614856, -4750771, -1873143, -1804423, 5369, 3184718,
-755377, 2586107, -5927055, 2924336, 3684008, 3561602, 4175245, -3238942, 892816, 9836012,
--6092411, -218506, -4342212, -6291054, -759136, -449898, 5444945, -2647311, 566399, -4699768,
-3003793, 1877975, 2356327, -10531260, 1615982, -1927904, -3700651, -996432, -59593, -7813620,
--5066451, -4364224, -359704, 6524592, 2255395, 2159832, 3127273, -2921652, 1837172, -2621541,
-5571110, 8584029, -813359, -790811, 2432025, 599685, 2210835, 4823249, -2273112, 4990215,
--790811, -154619, 2943663, 4041564, -1540283, -5841156, -5383205, 2074469, -744640, -1003949,
--2378338, 2650532, -4484483, 1662152, 3343095, 5665599, -3305514, 5432597, 3536906, 1766305,
-2703682, 655519, -931471, -3659849, 2592013, -1722282, -3429532, -4317516, 1778653, -1423245,
-2590939, 457414, -1675574, -2014877, -1040993, 858993, -1078574, -379568, -1382980, -605054,
--96100, 1328219, 683974, -42413, 756988, 2617783, -266825, 8053, 1514513, -825707,
-415538, -575526, -462783, 753767, 1085016, 1108638, 693100, -15032, -359704, 818191,
-372588, 1793149, 2129767, -1707786, -193810, 943819, 278099, -972273, 307090, 1227287,
-1050120, -556735, 129923, 690953, -624918, -14268418, 6223408, -6368363, 11526082, -10666014,
-8441221, 4320737, -4410932, -5521718, -3059627, 2227478, 2010045, -2965138, 6811282, -2401961,
--6442988, -1284732, 7043210, 4842039, -7056632, 1171989, -854699, -7388418, -3042984, -4738423,
--1083406, -5646809, -1478543, -2332167, -7801271, -2753074, 4010963, 5748814, -1068373, -6672769,
--1324997, 4802311, -1429687, 209380, 357556, 151398, -6643778, -153545, -766115, -1648731,
--280247, 1224603, -4748623, 2777233, -5086315, -66035, -1611, 152471, 3832185, 125091,
--1732482, 1595044, 2667175, 6324876, 2900177, 1473711, -1785096, -3847754, -3636227, -1481227,
--3974455, -2833068, 2396055, 4155918, -2990908, -5019206, -3430605, 1652489, 920197, -4705137,
--1595044, 637803, -3956739, -1790465, 587874, 1269163, 1657321, -1798518, -2171106, -2987687,
-150324, -326418, -1127429, 981937, -962610, -299574, -2275259, -473520, -740345, 2073396,
-1038308, -784905, 1032940, -81068, 352187, -949188, 153008, -547608, -11274, -783832,
--1502702, 1147830, -69256, -1431298, -882616, -104153, -1306744, -1525250, 1478006, -881005,
-17473000, 6942278, -1186485, 3949223, -2825552, 9788767, 4129611, 17643726, 319975, -17097192,
-4367445, 10349797, -6174553, 1804423, 7120519, -5494337, 5017596, -4456029, -977642, -5491653,
--5233955, -1662152, 1438814, -577136, 2354179, -2359011, 7560216, -4536559, 2128693, 1388348,
-4915053, -9037148, -4718022, -3568044, -1078574, -3204583, 840740, 5502927, 3922916, 8744553,
--1291711, -657130, -4997732, -1646583, 5513128, -5397164, 4551592, -5049271, -2130304, 8027294,
-11590506, 8309151, 1449015, -6126234, 4282620, 3184718, -3269544, 6749541, -4467303, 1328219,
-1056025, -12343736, -119185, -11701102, -4720169, 1861868, -3106872, -5586679, -4780836, 972810,
-8023536, 2001992, -3295851, -4082903, -3603478, 806380, 1290638, 3841848, -6099928, -5484137,
-361851, -1059246, 351650, -1577327, -918049, -980326, -540092, 1822140, 457414, 836445,
--806917, -1267015, -1251446, 359704, 3190624, 1069447, 2314451, 742493, -3690988, 2771865,
-1230508, 506806, 524523, 1603633, -382789, 1382980, 255551, -31675, -1162326, -843424,
--1600412, 470299, 1511829, -292058, -769873, -858457, -5232881, -583042, -656593, 180926,
--839129, 10790032, 21914534, -9630390, -7174206, -1986959, -2647311, 7599945, -7382512, -13390097,
--4689031, 872415, -3334505, 3768297, 1739462, 6583111, 2712809, -2719788, 9483825, 8898635,
--4202626, 591632, -6239514, -1106491, 263604, -3855270, -813359, 6627135, 9516037, 326418,
-1500554, 3888556, 2445447, 1485522, 576599, -3688303, -6972880, 737124, -9995463, 301185,
-2195802, -3215857, 3811784, -2567854, -5564667, -483721, 5252208, 2305861, -2476586, 16137803,
--133144, 5168993, -9725953, -2203318, 6526203, -3153043, -7225209, 4145180, -8452496, -7554311,
-1619203, 9132711, -7607461, -4281009, -2311766, 328028, -3495567, -3444564, 12301860, 7195681,
--1214939, 637803, -5927055, -4232154, -2466385, 3673808, 4806069, 377420, 3833795, 2488397,
--891743, 3597035, -3449396, 12323872, 6915434, 1313723, 299037, 1091459, -2189897, -848793,
--2180770, -2245731, -165893, -128312, -2104534, 1021129, -3125126, -957778, 2255932, -892816,
-2313914, 1333587, 2182917, 51540, 1474248, 1758789, 1530619, 266825, 2608119, 849867,
-272730, -2005750, 91805, -769336, -134218, 93416, 870268, -172336, 782758, -1911797,
--187368, 739808, 931471, 1421097, 8759586, -15546708, -2042257, -11663521, -6615860, -10561325,
--2643552, -1576790, -1535451, -4028143, 4805532, -14906221, 7755101, -5049808, 4639102, 2051384,
-6308233, 401579, 2656974, -5979668, -2489471, 2844342, -5936182, -4309463, 7423851, 2077690,
-3402688, 3003256, -678068, 2026688, 11019275, -3874597, 1130650, -4885526, 8878771, -5266704,
--19470698, 6101538, 3157875, 8276939, 4531191, 11388106, -7575249, -2988224, 6931004, -2797634,
--6462852, -3047279, 3649649, -9453760, 9477919, -282394, 6348499, -7974681, -3429532, -2865280,
--8603893, -1722819, -6820408, -3103651, 830539, 10062035, 8159364, -862215, -12183748, -6953015,
--2163053, 9773735, 8144332, 5907191, 5520644, -3400004, -14114873, -3590056, -315143, 3375844,
--4387846, -1351841, 7375533, -1344325, 8699993, 154082, 6059662, 2324651, 390842, -2150168,
--123480, 3285650, 971200, -1465121, 402653, -3884261, -566399, -183610, -5146445, -3105261,
--3249680, -1597728, 1147830, -2072322, 962073, -2792803, -256624, -789737, -1423782, 2340757,
-1227824, -447750, -3461744, -1349694, 1544041, 2382096, 157840, -3442953, -1724429, 825171,
-1913945, 530965, 988379, 299574, -1717450, -20419348, -24676198, -13923747, 10191957, 864362,
--4564477, -5191542, -7848516, -789200, 2730526, -13745506, -1265942, 8759586, -5269925, -3739843,
-9787694, 2608119, -6359236, 2500745, -6150930, 14484777, -4602595, -3386582, 4733054, -7463043,
--4643934, -4358318, 2508798, -5168993, -1886028, 2463164, 1812476, -16908212, 7650948, 7432441,
--4811974, 13172128, 5119064, 1297617, 12664785, 7231651, 2325188, 1809255, 13689671, -1311039,
--2240899, -871878, 8446053, 4725001, -12250320, 4826470, 3950833, -46171, -6481643, -19859928,
-8873939, -1265942, -4809290, -12439299, -6949794, 7712151, -1529545, -3593277, -8211978, -16146930,
-1742683, -2199560, -8485782, -3576097, -15196131, -2404645, -3329137, -2852932, -541703, 5531918,
-11868605, 5080410, -3814468, -8363912, 3379603, 630286, 5023501, 3126199, -1774895, 3623879,
-1430761, -347355, -4431333, 459025, -7290170, -404264, -1503775, 1270774, -2738042, 3542274,
-2195802, -780610, -478889, -669478, 636729, -1644973, -299037, 2051921, -663572, -702227,
-3968550, -1474784, -846109, 3111704, -2229625, 1892470, -6067178, -4002910, -2141578, -3267933,
--192737, -3248069, -4226248, -3230889, -780610, -650151, 1619203, -131533, -2525441, 1571421,
-726386, -1401233, -21228950, 16979080, 898185, 8653822, -1613834, -758599, 1542430, 9356586,
-870805, -1214939, -12851616, 4510253, -1465658, -9922985, 2521146, -6495601, -5028333, 18306762,
-5150203, 5614059, -4023848, 6538014, 7864622, 7636989, -4516695, 6666326, 3405909, -7747048,
-4962298, -7532836, -2664490, 4777614, 2202781, -795106, -4239670, -3932043, 12125766, -3562675,
--5430986, -3440806, 2417530, 2641942, -5904507, -9847286, -793495, -10563472, -1323924, -9523016,
--3671123, -2262374, 1793686, -4852240, -8320963, 10411538, -4383014, -11463805, 7253663, 12240657,
--6003828, -3915937, 6114423, 4503273, 12052215, 7854959, 1149978, -106300, -12548821, 3024731,
-11872363, 9626632, -8567923, 9180493, 9841381, -6618008, -18600966, -5954436, -16669842, 2811056,
-9436043, 4823249, 1069447, -4955319, -6794102, -721555, 791885, 2908767, -1599339, 5457293,
--2517925, -1881196, 2043868, 5779952, -8544837, -1091459, -1156957, -2545305, -25233, 2347737,
--559956, -229244, -1421097, -128849, -1435593, 512175, -194884, -141734, 719944, 3045132,
--2692408, -1454383, 1631014, 1975685, 6231998, -568009, 2554969, 2543695, -2806761, 2306398,
-928787, -2319819, 532039, 988379, 657667, 2624762, 5426155, 1236414, -1939178, 3754875,
--1239635, -1997160, 226560, -3512210, -1607928, -186831, 106837, 3991635, -33833068, 16094316,
-4501663, -1666447, 22688702, -1423245, 11446625, -10254771, -2460480, 1718524, 68183, 12937515,
-8200703, -17751100, 10960757, 755914, 6551436, -15996606, -697395, 9122511, -15702937, 19476602,
-5222144, -286689, -7061463, 1091459, 8393440, -14097693, 1217086, 3504157, 2403571, -8722542,
--3278134, 8102456, 4552129, -957241, 1140314, -5763846, -9802726, 3946001, -16519518, -759672,
-23477902, 22917946, -7439420, 2772402, -1090922, 6504191, 16469589, 1314797, 7834021, 2550137,
--8779450, -732829, -1746978, -25058450, -11370389, 15381352, 622770, 4687420, -6125697, -1612760,
-5404680, 7405598, -776315, 19162534, 181462, 14929306, 1772211, 3084860, 1862405, -9905268,
--12442520, 15120432, 3421478, -8009041, 10930692, -9118752, 717260, 9254044, 1410360, -2471217,
-4243428, -4090956, -3955128, 4592394, 6301791, 376347, -8703751, -4218195, -9369471, -3389266,
-2180233, 2901787, 1382980, -3664681, -1794223, -6743636, 4696547, -159988, -2807298, -1299228,
-1906429, 1040993, 5848672, 5265630, 3340948, 3397319, 1057099, 4168266, -2970507, 1878511,
-2153389, 2099702, -2612951, 4213900, 2132988, -709207, -904628, -1185948, -1194001, -2026151,
--4821101, -1427540, -204548, -1952600, -3566970, 11307038, -24597814, 9886478, 15495705, -2140504,
-4605816, 6979859, -3767223, -2374580, 9557376, -3593814, 14504641, -13804025, 7539815, 17954038,
--19239306, 791885, -9157944, 11348377, 4768488, 9416179, -9745818, -7582228, -129386, 24267102,
-260382, 12288975, -5462662, 765578, -1691143, -2130304, -10786810, -390305, -3045132, 4966593,
--4832375, -6953552, -5892695, -415001, -2072859, 10985989, 1853815, -6024229, -5524939, -5542119,
--2073932, -2621004, 17847736, 816044, 8945880, 653372, -4332012, -3873524, 14834280, 11137387,
--4321274, -13968307, 7872675, 5487895, -30929134, 1840394, 17385490, 17045114, 3920232, 13565654,
--18680424, 30586610, 2633352, 5896990, 5994164, 14621142, -1190780, -13001940, -4019016, -15370077,
-17507360, -7702487, -5254356, 15382962, -511638, -5963562, -4716948, -11457899, 10863583, -18741090,
--2816962, 1880122, -517007, 2748779, -3959423, -8000451, -5199058, 2585034, 2009508, -3738769,
-919123, -3560528, -3987877, -2816425, 3394635, 1890859, -4520990, 4238596, 779537, -5337571,
-2394981, -904091, -1973001, -4048007, -4763656, 984084, 2218351, 9831180, -4333622, 5863167,
-640487, -1845225, -767725, -1049583, -2635499, 1589675, -345208, -2798708, -1041530, -1905355,
-711891, 2081449, 1520955, -4003447, 9460739, -18210662, -14552960, 13073880, 11008538, 26833882,
--9422621, -7057705, -4738423, 5083631, -11339787, -1340567, 4486630, -770410, 14440217, 9308268,
--11501386, 1071058, 3408594, 8351027, -13103945, 13823352, -200253, 6138045, -2298344, -6270653,
--13748190, 4888747, -2357400, -5791227, 2801929, -8436390, -8193724, -1825898, 4350265, 16737488,
--24860344, -15040975, -13397077, -15065672, -4252018, 17353278, -10228465, -461172, 17093432, -2493766,
--7675644, -14788646, -3973382, -6366752, -30588220, -23749558, -6685654, 5375152, -2905546, 5358509,
--6781754, -4895189, 14553497, 8782671, -15289547, -7901666, -17114908, -6807523, 1418950, 6856379,
--3055869, 1836099, -14603426, -11694659, -10662793, -300648, 2506650, 921271, -13822279, 451508,
-18615462, 8027294, 21248276, -16732119, 25966298, 2296734, -16131897, -2685428, 750546, 4553739,
--2703682, 7066832, -9865003, 4683125, -8738111, 4122095, 5975910, -1886028, 13293998, -1114007,
-3138011, -3587908, -4801774, -2711735, 384936, 3002182, -5082020, -907312, 1706176, -1133335,
-5107253, -1531693, -2557116, -8586176, 3794604, 548682, 4491999, 1909650, -2880849, -8078834,
-2603287, -10327249, 2619393, -2683818, -430570, 1102196, -2224793, 818191, 1621887, 7178501,
-2803003, -3099356, -13096966, 2528662, -1422708, 30231202, 3311957, 14570677, -12584791, -8538395,
--3084324, -14206678, -9025337, -13719736, -6382859, -8880919, 16401943, 4147865, 4145180, 16924318,
--442919, -932008, 7638600, 15236396, 23772644, 17416092, -3565360, -6410776, -27364848, 7586523,
-8582955, 3386045, -17064442, 19781008, 7872138, 11644730, -3234647, 1151051, 11214696, 24704116,
-24004036, 13900125, 2904472, 25688200, 664646, -7587060, 8319352, 15606301, 12625593, 23118736,
-12178380, 585726, 2774549, -13838385, 6031208, -34692060, -5961952, -3416110, 7707319, 27407260,
-15374372, 4111358, 19853486, -14337675, -13078175, 2895345, -33749852, -7977902, 1388885, 6562710,
-7813620, 9016747, -2033130, 14905684, 1849520, 7755637, 27345520, -16743393, -8761196, -4555350,
-5207111, -3107946, -25820806, -4776004, 17596482, -1175747, 22318260, -11878806, 605590, 9345312,
--2172717, 2701535, -9329743, -4452808, -7247221, -4712116, -8040716, -6472516, 1729798, 1495186,
--16121697, -7364795, -9092983, -2304787, 2944737, 4987531, -7206419, -176631, 2126009, -11206643,
-1656247, -4432943, -7456063, -3763465, 542777, 2898029, -5129802, -1158031, -7829726, -485331,
--2132988, -2400887, -5727876, -8209830, 2060511, 2901787, -4601521, -3033321, -3395709, -2396592,
-1453310, 5651103, 1492501, 1888712, -1818382, -23300734, -7351911, 4222490, 17595944, 32337346,
--13018046, 560493, 5331665, -5941551, 29965450, 5306969, -14786499, 26261578, -5434744, -8822400,
-18785114, -17069810, -9997610, 1141388, 1628330, 2335925, 12295954, 6583111, 9974525, -3064459,
-5280663, 15056008, 897111, 10264435, 1861332, 391379, 16617228, -21737904, -7924215, -7374459,
-14458471, -11083163, -2908230, -6531035, 14316737, -6091338, 31884764, 23337242, -21777632, 10652056,
--26162256, 3748433, 9404905, 5083631, 5610838, -33301028, -6500433, -32116692, 4219806, 2649458,
-3874597, -5072357, -5865315, 15362024, -27780922, 9539122, -12055973, -52245056, -19610820, -17099338,
-8549669, -7610145, 7898982, 26150446, 27827094, 15793132, 14615774, 13616120, 3906810, -20774220,
-21758842, 37581, -24186572, -19201726, -30383672, -40170828, -20776368, -4066797, 32071058, 11582453,
-1895691, 12309376, -9877351, -230854, 6117644, 5134097, -2651606, 4706748, 1455457, 3263638,
-1279363, -9936944, 7945690, 5317170, 3866544, 1589675, -5262946, 2812667, -7791608, -2764348,
--12065100, 9977746, 7466264, -1660005, 1013075, 7978439, 12612171, -5723044, -12460237, -3770445,
-10001368, -2255395, -7473243, 10754061, -1015760, -6279779, 7349226, 2959233, 399969, -1876901,
--363462, -5344013, 3543348, -3423626, -1617592, 8269423, -41307920, -19126564, -14265197, 7780334,
--31483184, 11448772, -18772766, 27026618, -31308700, -39730060, -8513699, -5612449, 31379032, 15400679,
-14041859, -7887171, 3761318, -19186156, -15416785, 3752728, 6672769, -24766928, -23051090, -16102906,
--1952063, 12706124, 9161165, -17343614, -21948356, -12645994, -12910672, -29764660, -17157320, 13395466,
--8213051, -35433, -4000225, 9876277, 15551540, -3898220, -44693428, 19079318, 37609416, 14146549,
--694174, -44800804, -10598369, 19793356, -5462125, 50438484, -5228586, -40345848, 6830609, -6653978,
-3501472, 1293322, -7956964, 11058467, 13623099, -42571716, -11261404, 2527052, 15302432, -7764227,
--21618718, 19585588, 2110440, -14317810, -42436960, -49234284, -25267292, -2974802, 3824132, 39770324,
-56098180, 28998008, 22124988, 9772661, -32233192, 12034498, 60666, -16757889, -4657892, -53228604,
--11024644, -143881, 645319, 2096481, 23553600, 8963597, 7202660, -9374840, -2816962, 20468204,
--13543106, -8053, -580894, 4146791, -9977746, -16631187, -18587544, 8596377, -8523363, -2840047,
-11320997, 639413, 2073396, -14135811, 5158256, 4898947, 2790118, -11582990, -5694053, -7538205,
--12132209, 1939178, -6910066, 13662828, 5561446, -8862128, 2058363, -3100967, 9567040, -12282533,
--1331977, -251792, 6900939, 6222334, 3368865, 7463580, 233002, 4238059, 3481608, 75240848,
-69099048, -29091960, 35857072, 31799938, -8902393, -5312875, -16469052, -8854075, -19366544, -13554380,
-57309896, -3044058, 33389076, 481573, 1631014, 524523, -22610856, 5477694, 4683662, -49612240,
-7399692, 12128451, -26157962, -5370857, -8072391, -3466576, 7343321, -1379758, 1501091, 21998286,
-8859444, -10542534, 6728067, 35012036, 555661, 16201690, -885300, 13248363, -19267224, -23102092,
--13036836, -42518028, 11378442, 4921496, -18997178, -51681880, -33903400, -48300664, 35256312, -24996172,
-5461588, 8914741, 7969312, 6914361, 37616936, -36055712, 155693, -20118700, 39816496, -89248344,
-18292802, 7126425, 28550258, 26262652, 66035, -8023536, -13758928, -3715147, -26066156, 19335406,
-52617644, -3752191, 10799158, 33535642, -23308250, 13495324, 16130287, -28971166, -20378546, -53961432,
-44858784, -8415452, -39687108, 26895086, -6752763, 17695802, -1317481, 15396384, 2449742, -11265162,
-18500572, 18221936, 2774012, 10617159, 16808354, 10481868, -11517492, -4461934, -11254962, -4473746,
-14136885, 27779312, -1343788, -4579509, -1273458, 18029736, -27825482, 16367583, -7669738, 37486476,
-7158637, -21471616, -4646081, 16960288, -8765491, -10976863, -8806830, -6078990, -8660802, 9615358,
-6226629, 24271398, -19931870, 1885491, -2436320, 13610214, 689879, -955093, 7534447, 10077604,
-7059316, 16152298, 1800128, 18536542, 9991168, -249645, -26069914, -24720758, 30581778, -62266824,
-42949136, -25680146, -17935246, -11290932, 3926137, -18034030, -14020921, 19519552, -5977521, -42599632,
-14712410, -2621541, 7556995, -9605157, 37884832, -30912490, 1335198, 15698105, -10705743, 11883638,
--25191594, 2052458, -21672942, -11014981, 23616414, 3001645, 9477382, -13434121, 22830972, -6599218,
--10620917, 8716099, -13944148, -11660299, -7440494, -7720741, -23526758, -31578748, -8756365, 17470316,
-300111, -9916006, -31471372, 1171452, -24870544, -1703491, 10047539, -24678882, -6041945, 18080738,
-18429168, 13310104, -30550640, -14534169, 21090436, 6792491, -572304, 16999480, -100317016, -23293756,
--11173894, -45668924, 4498978, 12429635, -2665027, 8309688, 21519934, -12511777, -21322366, 5318244,
--19360638, -5992553, 20884278, 32989106, -12567611, -40137008, -24138790, 2434173, -21347062, 3168612,
--16566763, -15809238, 4151086, -32231582, 361851, -20199232, -6167036, -11173894, 4460861, 7870528,
--3210488, -20089710, 4356171, -1571421, -12566537, 15256261, -698469, -14906221, -5086315, -4130685,
--5574868, -10450192, 5437429, -9587441, 7522635, 10164040, -4205310, 849867, -6238440, -14239427,
--19675782, 3110630, 2530273, 8676908, -22775674, 4338454, -177167, -15096273, 11198590, -6528887,
-7987566, 17965312, -41304700, 7818451, 5698885, 11417634, -6949794, -4749697, 13501767, -1441498,
-999654, 67515816, -8414378, -18512920, 2677912, -7360500, 33494302, 6432251, -2726231, 31854698,
-32259500, 10717554, 12534862, 17797270, -39561480, -21769042, 32964410, -4337917, -32472638, -16313360,
--14704357, 22587770, 12075837, -11783243, -46945068, 14778982, 7421704, 6403260, 7757785, -5500780,
-4805532, -35079684, 31550830, 22060026, 11651709, -17486960, -14979772, 108985, 15795816, -3273302,
-16420734, 7332046, -37170796, -16356309, 5878200, -37244344, 2218351, 7337952, -32932198, -46206868,
--6504728, 14190572, -26980448, -56141128, -24686936, -14554034, 36550172, -22014928, 41244572, -8301635,
-1918777, 17845052, 2391760, -62909996, -4233764, 2859375, 29459718, -55954832, -77683072, 5861557,
--5104569, -49247704, 27888834, 13408351, -1906429, 96637, 45638860, -65133180, 53613004, 11624329,
-7116761, 22050898, -23616952, -21037286, -4164508, 10450729, -13475997, -666794, 27469538, -23029614,
--18815178, 24709484, -13887240, -6521908, 10116795, 7074885, -27434104, 14287746, -9264781, -2106145,
-9550934, 9885404, -29234232, -4334159, -22764938, 13082470, 17495012, 1593970, -37595996, 26966490,
--6634651, -147103, 15880105, -3566434, -13810467, -1989644, 21016886, -31448824, 21638046, 1693291,
--2609193, 8537321, 4005594, -19449760, 8997956, 454193, 682363, -25480968, 17649094, -16473347,
-19493246, 3552475, -24140400, 2580202, 2683281, -6205154, 11002096, 2648384, 30775052, 11538967,
-73584600, -31986768, -33311766, -14300094, -2018098, 69823824, -10501195, 57686780, -41697688, -16901234,
-24049670, -45417132, -15395847, -42787000, 6266894, 41865732, -59332824, -22318798, -5665062, 16976932,
--1111323, 5702106, 15650324, -4975183, -37813964, -35203700, 1136019, 23432268, 64639256, -15332496,
-17110612, -19621022, 31625992, 231928, 3200288, -9887015, -39060580, 402653, 34947076, -6975564,
--2629594, -14128832, -34130496, 43350180, 16300475, 28624346, 38987564, -2834142, 1792612, 23646480,
--63666984, 20924544, -32399086, 73843912, -7568806, 6453725, 10714870, -22714472, -22517976, 6600828,
--32287954, 46512884, -28224378, -35869420, -35850092, 48668420, 16332150, 27807228, -6874095, 27773406,
-28631326, -30646202, -9054865, -28497644, -15008763, 50731080, 36125508, 3892851, 9548249, -79189536,
-53160420, 69468952, 7621420, -6622303, -13851806, -42946452, 60323888, -4488241, 3637301, -12913356,
-1287953, -27477054, 56438016, -14547591, 27268210, 3467112, -10346039, -4279935, 54352812, -31264678,
-26549340, 8038032, -23727546, 2246805, -7939247, 14141180, 3902515, 21219286, -9699647, 1342714,
-3736622, -1243393, 21551072, 36678484, -12057584, -2914672, 3867618, 19692962, 5480915, -29970282,
--19866372, 39767104, 7514582, 18981608, -40438728, -49093088, 43976708, 28455768, 13431436, -4446902,
--37666864, -1839857, 33430952, 9824201, 1459752, -3656091, -6631967, 5748814, 4498442, 6989523,
--5551782, 3664681, 7174743, 4686346, -3106872, 1026497, 1371168, 6929393, 17611514, 6583648,
--55529632, 37969660, -39504036, 4795331, -18224084, 14663555, -1572495, 20898238, -3406983, -18044768,
-31062814, -10899553, -4413079, 4820564, -13128641, -11310796, 35850092, -8429410, -5013301, -4152697,
--1930588, 16543140, -12660490, 3949759, -9295383, 8302172, -8134668, -6040335, -19380504, 28268402,
--17524004, 9438728, 4397510, 19624242, -22065932, 5013838, -9106404, 22260278, 2767033, 1877975,
-17379048, 5345087, -29203094, -4167192, -5140002, 8205535, 12553653, 10772852, -26581552, 11455215,
--20128902, 14260902, -11557757, 3156801, -6717329, 14092861, -5648956, 4205310, -29748554, 7157026,
-14142254, -13360570, 13215077, 2021319, 4718022, 8561480, -12139188, 20618528, 7828115, -944356,
--6665253, 10133438, -6467147, 18741626, -15760919, -4404489, -15019501, 19412178, -19246822, 17660906,
--16095390, 21432960, -18301392, 11362873, -18053896, 15845208, -1508070, 1886028, -5436892, 1116155,
--3395172, -2457795, -5771363, 9554155, 3318399, -975494, 2721936, -2516851, -5320391, 9618042,
-1102196, 3856344, -6350646, 709207, 8949638, -10371272, -2965675, 6582038, -219580, -2837363,
--7269232, 17219060, -5706938, -8114804, 4001299, 1906429, -3069291, 2194192, -1372779, 2047626,
--3283503, 2833605, -5391795, 8690329, -7283728, 9965935, 3722663, -6702297, 2074469, -1003949,
-604517, -407485, 4083977, 464930, -3260954, 2867965, -3521873, -23032836, 46790984, 3981972,
-5957120, -18597208, -13677860, -29577292, 19966230, -8242042, -5976447, -12811351, -428423, -11414412,
--1353989, -1443109, 5288716, 5903433, -840740, -1307281, -8359080, 7930657, 7417946, -6922414,
-3367254, -15806553, 6397354, 3154654, -2711198, -2398739, -5230734, 5122286, 1181116, -11239393,
--2970507, -3250753, -9316321, 15455440, 1680943, -9767829, 1570347, -3790309, 13476534, -4589710,
--6205154, 2663417, -7935489, 15715285, 517007, -8592619, 2544231, -3465502, 7721278, -9810242,
--1892470, 3318399, -3522410, 6939057, -3850438, 2053531, 3185255, -8843338, 1312113, 8912594,
--13464186, -826781, 4170950, -12495670, 22943178, -20868172, 10513006, 3847217, -11890617, 23715198,
--16027744, 3859565, 3084324, -9941239, 7863012, -4024921, -7653095, 7607461, -9130564, 6044630,
--4160213, -3053722, 6863358, -5593658, 2251100, -2230699, -3221, 1389959, -3027952, 1516660,
--105764, -2954401, 6491843, -5406827, 4854387, 243203, -4432406, 4462471, -7868917, -699543,
-2152852, -1240172, -1031866, 1185948, -4062502, 5120138, -2502355, -1730335, 597537, 592169,
--3157875, -419296, -1800665, 1815161, 2594697, -3561065, 3224984, -3396246, -617402, 3419331,
--2448668, 10912438, -50017580, -115480400, 30313342, 106902808, 90390272, 121278600, -59773060, -77473696,
--116496696, -119083336, 8209293, 88786104, 98046584, 107383848, 35735740, -23368380, -85169736, -141049408,
--77248208, 35879084, 55619828, 94067840, 71339944, 19478750, -12603045, -29717952, -70616240, -45784888,
--43523052, -7991324, 37272800, 57067232, 30090004, 38094748, 19321448, -21476448, -3297998, -45917496,
--63851132, -10945724, -14848776, 11258720, 60349660, 34729104, 29989072, 8827232, -22520124, -23269060,
--19972672, -33112050, -8603356, 1449015, 14264660, 17296908, 28907278, 8201240, -943282, -14581414,
--26775900, -2319819, 9740449, 9897752, 16986058, -4338454, -13405667, -6497749, -13421773, -10620917,
-2956011, 7577933, 21742198, 18338436, 17631378, 986232, -9338333, -35228396, -32640140, -13368623,
-2181307, 27158688, 29251948, 11998528, 12454331, -1420024, -23435490, -14434848, -1609539, -5552856,
-1353452, 2436320, 5747740, 4683662, -2949032, -7722351, 4635344, 7045357, 5909875, 6000070,
--455803, -4470524, -2658048, -11990475, -4819490, -6641093, -11135240, 6594386, 16412144, 18976776,
-6403260, 6808060, -3605625, -4509716, -16949014, -25388626, -9667435, 2836826, 8017630, 9776419,
-20874614, 19251654, 9467719, -7726646, -16153909, -18402324, -17064442, -12763569, -759672, 15333570,
-23947128, 18835042, 5586679, -9067213, -10700374, -10858214, -6147172, -4194036, -4590247, 4595078,
-11019812, 7967701, 1839857, -1497870, -746251, -2891050, -3097208, -4609574, -1896228, 2537789,
-2284923, 1255741, 1578401, 1206349, 1132798, -2383170, -2913599, -942745, 1337346, 981937,
-406948, 405874, 486942, -950262, -707059, -392990, 235686, 255014, 717796, 611496,
-458488, -226560, -814433, -1455457, -126702, 246424, 128312, 375810, 1008244, 306016,
-312996, 819265, 107911, -2259153, -1759326, -574989, 489626, 965831, 1487132, 491774,
-172872, -100395, -37581, -596464, -501974, -308164, -151398, -493921, -73014, 44023,
-466004, 667331, 784905, 386547, 340376, -267899, -661962, -1149441, -758062, -419296,
-221728, 833761, 1273458, 831076, 170725, -435402, -548682, -841814, -622770, -64425,
-352724, 328565, 312459, 92342, 56908, -45097, 2147, -67646, -55835, -78383,
-6979, -20401, -32749, -75699, 4832, 40802, 45634, 24159, 37044, -6442,
--17180, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-610959, 6533719, -5777805, 2272038, -9754408, 127775, -3511136, 3959960, -3275450, 920734,
+-2211371, -4068408, -1021665, -366683, 3001109, 3742527, -3497714, -6128382, 3254512, 1122060,
+2284923, 1380295, 2579128, -3542811, -2644089, 659278, -647466, 3227668, 2342905, -2705830,
+-554588, 2463701, 4567161, 2809982, 67646, -3541201, 1946157, -593779, -1861868, 2518998,
+1116155, -3252901, -2701535, -2203855, 1860795, -3187403, -1687922, 2703682, 1071594, -84826,
+-3316789, 1245004, -2847027, -7419556, 768799, -2519535, -4759361, 2211908, -1329292, -1360968,
+-1609002, 111669, 3689377, 2209761, 1267552, 1673964, 2794413, -5589900, 2951716, -2219961,
+-2112587, -1231582, 1894618, 361851, 3964792, 5720897, 2269353, 446677, 686658, -81604,
+3693135, -1541356, -94489, 1789928, 166967, -1511292, -1511292, 521302, -2147, -1707250,
+-817118, 537408, -47782, -226023, -639413, -845572, 610422, 366146, 658204, -252329,
+258235, -175557, -1540820, -613107, 766652, 1264868, -668404, -842350, 332323, 800475,
+14845554, -1257352, 2717641, 3264712, -1525787, 1536525, 5910412, -4616553, -821949, 1688459,
+-2300492, -454730, 4339528, -1406602, -986232, -303869, 1677722, -832687, 2085744, -1470489,
+-1451162, -666794, -3379066, -5759015, -1092532, -1848447, -780073, 3389803, -6106907, 7496329,
+37044, 129923, 249108, 1415192, -189515, -2881923, 444529, 2310693, 5648419, 282394,
+-50466, -861678, -1917166, 3761855, 1776506, -1373316, 2065342, -3745748, 629213, 1196685,
+-2845416, -9739375, -3059627, -242666, -583579, -462783, -868120, -1239635, -717260, -1850594,
+2375654, 7178501, 4056060, 315680, -24159, -190589, 2497524, -1466195, -6556268, -224949,
+-3420405, 2146947, -3879429, 2189360, -9456981, -56908, -1357210, 3209951, 5135171, -786516,
+-1238024, 775242, -34360, 2769717, 1002875, 465467, 3734474, -2759517, -377420, 478352,
+1327682, 8590, 1353989, 78383, 862215, 402116, -194347, 282394, -350040, -37581,
+774168, 1194001, 129386, -323733, -478352, 159988, -219580, 678068, 469762, 332323,
+-235686, 128312, 440771, -13082470, -12614856, -4750771, -1873143, -1804423, 5369, 3184718,
+755377, 2586107, -5927055, 2924336, 3684008, 3561602, 4175245, -3238942, 892816, 9836012,
+-6092411, -218506, -4342212, -6291054, -759136, -449898, 5444945, -2647311, 566399, -4699768,
+3003793, 1877975, 2356327, -10531260, 1615982, -1927904, -3700651, -996432, -59593, -7813620,
+-5066451, -4364224, -359704, 6524592, 2255395, 2159832, 3127273, -2921652, 1837172, -2621541,
+5571110, 8584029, -813359, -790811, 2432025, 599685, 2210835, 4823249, -2273112, 4990215,
+-790811, -154619, 2943663, 4041564, -1540283, -5841156, -5383205, 2074469, -744640, -1003949,
+-2378338, 2650532, -4484483, 1662152, 3343095, 5665599, -3305514, 5432597, 3536906, 1766305,
+2703682, 655519, -931471, -3659849, 2592013, -1722282, -3429532, -4317516, 1778653, -1423245,
+2590939, 457414, -1675574, -2014877, -1040993, 858993, -1078574, -379568, -1382980, -605054,
+-96100, 1328219, 683974, -42413, 756988, 2617783, -266825, 8053, 1514513, -825707,
+415538, -575526, -462783, 753767, 1085016, 1108638, 693100, -15032, -359704, 818191,
+372588, 1793149, 2129767, -1707786, -193810, 943819, 278099, -972273, 307090, 1227287,
+1050120, -556735, 129923, 690953, -624918, -14268418, 6223408, -6368363, 11526082, -10666014,
+8441221, 4320737, -4410932, -5521718, -3059627, 2227478, 2010045, -2965138, 6811282, -2401961,
+-6442988, -1284732, 7043210, 4842039, -7056632, 1171989, -854699, -7388418, -3042984, -4738423,
+-1083406, -5646809, -1478543, -2332167, -7801271, -2753074, 4010963, 5748814, -1068373, -6672769,
+-1324997, 4802311, -1429687, 209380, 357556, 151398, -6643778, -153545, -766115, -1648731,
+-280247, 1224603, -4748623, 2777233, -5086315, -66035, -1611, 152471, 3832185, 125091,
+-1732482, 1595044, 2667175, 6324876, 2900177, 1473711, -1785096, -3847754, -3636227, -1481227,
+-3974455, -2833068, 2396055, 4155918, -2990908, -5019206, -3430605, 1652489, 920197, -4705137,
+-1595044, 637803, -3956739, -1790465, 587874, 1269163, 1657321, -1798518, -2171106, -2987687,
+150324, -326418, -1127429, 981937, -962610, -299574, -2275259, -473520, -740345, 2073396,
+1038308, -784905, 1032940, -81068, 352187, -949188, 153008, -547608, -11274, -783832,
+-1502702, 1147830, -69256, -1431298, -882616, -104153, -1306744, -1525250, 1478006, -881005,
+17473000, 6942278, -1186485, 3949223, -2825552, 9788767, 4129611, 17643726, 319975, -17097192,
+4367445, 10349797, -6174553, 1804423, 7120519, -5494337, 5017596, -4456029, -977642, -5491653,
+-5233955, -1662152, 1438814, -577136, 2354179, -2359011, 7560216, -4536559, 2128693, 1388348,
+4915053, -9037148, -4718022, -3568044, -1078574, -3204583, 840740, 5502927, 3922916, 8744553,
+-1291711, -657130, -4997732, -1646583, 5513128, -5397164, 4551592, -5049271, -2130304, 8027294,
+11590506, 8309151, 1449015, -6126234, 4282620, 3184718, -3269544, 6749541, -4467303, 1328219,
+1056025, -12343736, -119185, -11701102, -4720169, 1861868, -3106872, -5586679, -4780836, 972810,
+8023536, 2001992, -3295851, -4082903, -3603478, 806380, 1290638, 3841848, -6099928, -5484137,
+361851, -1059246, 351650, -1577327, -918049, -980326, -540092, 1822140, 457414, 836445,
+-806917, -1267015, -1251446, 359704, 3190624, 1069447, 2314451, 742493, -3690988, 2771865,
+1230508, 506806, 524523, 1603633, -382789, 1382980, 255551, -31675, -1162326, -843424,
+-1600412, 470299, 1511829, -292058, -769873, -858457, -5232881, -583042, -656593, 180926,
+-839129, 10790032, 21914534, -9630390, -7174206, -1986959, -2647311, 7599945, -7382512, -13390097,
+-4689031, 872415, -3334505, 3768297, 1739462, 6583111, 2712809, -2719788, 9483825, 8898635,
+-4202626, 591632, -6239514, -1106491, 263604, -3855270, -813359, 6627135, 9516037, 326418,
+1500554, 3888556, 2445447, 1485522, 576599, -3688303, -6972880, 737124, -9995463, 301185,
+2195802, -3215857, 3811784, -2567854, -5564667, -483721, 5252208, 2305861, -2476586, 16137803,
+-133144, 5168993, -9725953, -2203318, 6526203, -3153043, -7225209, 4145180, -8452496, -7554311,
+1619203, 9132711, -7607461, -4281009, -2311766, 328028, -3495567, -3444564, 12301860, 7195681,
+-1214939, 637803, -5927055, -4232154, -2466385, 3673808, 4806069, 377420, 3833795, 2488397,
+-891743, 3597035, -3449396, 12323872, 6915434, 1313723, 299037, 1091459, -2189897, -848793,
+-2180770, -2245731, -165893, -128312, -2104534, 1021129, -3125126, -957778, 2255932, -892816,
+2313914, 1333587, 2182917, 51540, 1474248, 1758789, 1530619, 266825, 2608119, 849867,
+272730, -2005750, 91805, -769336, -134218, 93416, 870268, -172336, 782758, -1911797,
+-187368, 739808, 931471, 1421097, 8759586, -15546708, -2042257, -11663521, -6615860, -10561325,
+-2643552, -1576790, -1535451, -4028143, 4805532, -14906221, 7755101, -5049808, 4639102, 2051384,
+6308233, 401579, 2656974, -5979668, -2489471, 2844342, -5936182, -4309463, 7423851, 2077690,
+3402688, 3003256, -678068, 2026688, 11019275, -3874597, 1130650, -4885526, 8878771, -5266704,
+-19470698, 6101538, 3157875, 8276939, 4531191, 11388106, -7575249, -2988224, 6931004, -2797634,
+-6462852, -3047279, 3649649, -9453760, 9477919, -282394, 6348499, -7974681, -3429532, -2865280,
+-8603893, -1722819, -6820408, -3103651, 830539, 10062035, 8159364, -862215, -12183748, -6953015,
+-2163053, 9773735, 8144332, 5907191, 5520644, -3400004, -14114873, -3590056, -315143, 3375844,
+-4387846, -1351841, 7375533, -1344325, 8699993, 154082, 6059662, 2324651, 390842, -2150168,
+-123480, 3285650, 971200, -1465121, 402653, -3884261, -566399, -183610, -5146445, -3105261,
+-3249680, -1597728, 1147830, -2072322, 962073, -2792803, -256624, -789737, -1423782, 2340757,
+1227824, -447750, -3461744, -1349694, 1544041, 2382096, 157840, -3442953, -1724429, 825171,
+1913945, 530965, 988379, 299574, -1717450, -20419348, -24676198, -13923747, 10191957, 864362,
+-4564477, -5191542, -7848516, -789200, 2730526, -13745506, -1265942, 8759586, -5269925, -3739843,
+9787694, 2608119, -6359236, 2500745, -6150930, 14484777, -4602595, -3386582, 4733054, -7463043,
+-4643934, -4358318, 2508798, -5168993, -1886028, 2463164, 1812476, -16908212, 7650948, 7432441,
+-4811974, 13172128, 5119064, 1297617, 12664785, 7231651, 2325188, 1809255, 13689671, -1311039,
+-2240899, -871878, 8446053, 4725001, -12250320, 4826470, 3950833, -46171, -6481643, -19859928,
+8873939, -1265942, -4809290, -12439299, -6949794, 7712151, -1529545, -3593277, -8211978, -16146930,
+1742683, -2199560, -8485782, -3576097, -15196131, -2404645, -3329137, -2852932, -541703, 5531918,
+11868605, 5080410, -3814468, -8363912, 3379603, 630286, 5023501, 3126199, -1774895, 3623879,
+1430761, -347355, -4431333, 459025, -7290170, -404264, -1503775, 1270774, -2738042, 3542274,
+2195802, -780610, -478889, -669478, 636729, -1644973, -299037, 2051921, -663572, -702227,
+3968550, -1474784, -846109, 3111704, -2229625, 1892470, -6067178, -4002910, -2141578, -3267933,
+-192737, -3248069, -4226248, -3230889, -780610, -650151, 1619203, -131533, -2525441, 1571421,
+726386, -1401233, -21228950, 16979080, 898185, 8653822, -1613834, -758599, 1542430, 9356586,
+870805, -1214939, -12851616, 4510253, -1465658, -9922985, 2521146, -6495601, -5028333, 18306762,
+5150203, 5614059, -4023848, 6538014, 7864622, 7636989, -4516695, 6666326, 3405909, -7747048,
+4962298, -7532836, -2664490, 4777614, 2202781, -795106, -4239670, -3932043, 12125766, -3562675,
+-5430986, -3440806, 2417530, 2641942, -5904507, -9847286, -793495, -10563472, -1323924, -9523016,
+-3671123, -2262374, 1793686, -4852240, -8320963, 10411538, -4383014, -11463805, 7253663, 12240657,
+-6003828, -3915937, 6114423, 4503273, 12052215, 7854959, 1149978, -106300, -12548821, 3024731,
+11872363, 9626632, -8567923, 9180493, 9841381, -6618008, -18600966, -5954436, -16669842, 2811056,
+9436043, 4823249, 1069447, -4955319, -6794102, -721555, 791885, 2908767, -1599339, 5457293,
+-2517925, -1881196, 2043868, 5779952, -8544837, -1091459, -1156957, -2545305, -25233, 2347737,
+-559956, -229244, -1421097, -128849, -1435593, 512175, -194884, -141734, 719944, 3045132,
+-2692408, -1454383, 1631014, 1975685, 6231998, -568009, 2554969, 2543695, -2806761, 2306398,
+928787, -2319819, 532039, 988379, 657667, 2624762, 5426155, 1236414, -1939178, 3754875,
+-1239635, -1997160, 226560, -3512210, -1607928, -186831, 106837, 3991635, -33833068, 16094316,
+4501663, -1666447, 22688702, -1423245, 11446625, -10254771, -2460480, 1718524, 68183, 12937515,
+8200703, -17751100, 10960757, 755914, 6551436, -15996606, -697395, 9122511, -15702937, 19476602,
+5222144, -286689, -7061463, 1091459, 8393440, -14097693, 1217086, 3504157, 2403571, -8722542,
+-3278134, 8102456, 4552129, -957241, 1140314, -5763846, -9802726, 3946001, -16519518, -759672,
+23477902, 22917946, -7439420, 2772402, -1090922, 6504191, 16469589, 1314797, 7834021, 2550137,
+-8779450, -732829, -1746978, -25058450, -11370389, 15381352, 622770, 4687420, -6125697, -1612760,
+5404680, 7405598, -776315, 19162534, 181462, 14929306, 1772211, 3084860, 1862405, -9905268,
+-12442520, 15120432, 3421478, -8009041, 10930692, -9118752, 717260, 9254044, 1410360, -2471217,
+4243428, -4090956, -3955128, 4592394, 6301791, 376347, -8703751, -4218195, -9369471, -3389266,
+2180233, 2901787, 1382980, -3664681, -1794223, -6743636, 4696547, -159988, -2807298, -1299228,
+1906429, 1040993, 5848672, 5265630, 3340948, 3397319, 1057099, 4168266, -2970507, 1878511,
+2153389, 2099702, -2612951, 4213900, 2132988, -709207, -904628, -1185948, -1194001, -2026151,
+-4821101, -1427540, -204548, -1952600, -3566970, 11307038, -24597814, 9886478, 15495705, -2140504,
+4605816, 6979859, -3767223, -2374580, 9557376, -3593814, 14504641, -13804025, 7539815, 17954038,
+-19239306, 791885, -9157944, 11348377, 4768488, 9416179, -9745818, -7582228, -129386, 24267102,
+260382, 12288975, -5462662, 765578, -1691143, -2130304, -10786810, -390305, -3045132, 4966593,
+-4832375, -6953552, -5892695, -415001, -2072859, 10985989, 1853815, -6024229, -5524939, -5542119,
+-2073932, -2621004, 17847736, 816044, 8945880, 653372, -4332012, -3873524, 14834280, 11137387,
+-4321274, -13968307, 7872675, 5487895, -30929134, 1840394, 17385490, 17045114, 3920232, 13565654,
+-18680424, 30586610, 2633352, 5896990, 5994164, 14621142, -1190780, -13001940, -4019016, -15370077,
+17507360, -7702487, -5254356, 15382962, -511638, -5963562, -4716948, -11457899, 10863583, -18741090,
+-2816962, 1880122, -517007, 2748779, -3959423, -8000451, -5199058, 2585034, 2009508, -3738769,
+919123, -3560528, -3987877, -2816425, 3394635, 1890859, -4520990, 4238596, 779537, -5337571,
+2394981, -904091, -1973001, -4048007, -4763656, 984084, 2218351, 9831180, -4333622, 5863167,
+640487, -1845225, -767725, -1049583, -2635499, 1589675, -345208, -2798708, -1041530, -1905355,
+711891, 2081449, 1520955, -4003447, 9460739, -18210662, -14552960, 13073880, 11008538, 26833882,
+-9422621, -7057705, -4738423, 5083631, -11339787, -1340567, 4486630, -770410, 14440217, 9308268,
+-11501386, 1071058, 3408594, 8351027, -13103945, 13823352, -200253, 6138045, -2298344, -6270653,
+-13748190, 4888747, -2357400, -5791227, 2801929, -8436390, -8193724, -1825898, 4350265, 16737488,
+-24860344, -15040975, -13397077, -15065672, -4252018, 17353278, -10228465, -461172, 17093432, -2493766,
+-7675644, -14788646, -3973382, -6366752, -30588220, -23749558, -6685654, 5375152, -2905546, 5358509,
+-6781754, -4895189, 14553497, 8782671, -15289547, -7901666, -17114908, -6807523, 1418950, 6856379,
+-3055869, 1836099, -14603426, -11694659, -10662793, -300648, 2506650, 921271, -13822279, 451508,
+18615462, 8027294, 21248276, -16732119, 25966298, 2296734, -16131897, -2685428, 750546, 4553739,
+-2703682, 7066832, -9865003, 4683125, -8738111, 4122095, 5975910, -1886028, 13293998, -1114007,
+3138011, -3587908, -4801774, -2711735, 384936, 3002182, -5082020, -907312, 1706176, -1133335,
+5107253, -1531693, -2557116, -8586176, 3794604, 548682, 4491999, 1909650, -2880849, -8078834,
+2603287, -10327249, 2619393, -2683818, -430570, 1102196, -2224793, 818191, 1621887, 7178501,
+2803003, -3099356, -13096966, 2528662, -1422708, 30231202, 3311957, 14570677, -12584791, -8538395,
+-3084324, -14206678, -9025337, -13719736, -6382859, -8880919, 16401943, 4147865, 4145180, 16924318,
+-442919, -932008, 7638600, 15236396, 23772644, 17416092, -3565360, -6410776, -27364848, 7586523,
+8582955, 3386045, -17064442, 19781008, 7872138, 11644730, -3234647, 1151051, 11214696, 24704116,
+24004036, 13900125, 2904472, 25688200, 664646, -7587060, 8319352, 15606301, 12625593, 23118736,
+12178380, 585726, 2774549, -13838385, 6031208, -34692060, -5961952, -3416110, 7707319, 27407260,
+15374372, 4111358, 19853486, -14337675, -13078175, 2895345, -33749852, -7977902, 1388885, 6562710,
+7813620, 9016747, -2033130, 14905684, 1849520, 7755637, 27345520, -16743393, -8761196, -4555350,
+5207111, -3107946, -25820806, -4776004, 17596482, -1175747, 22318260, -11878806, 605590, 9345312,
+-2172717, 2701535, -9329743, -4452808, -7247221, -4712116, -8040716, -6472516, 1729798, 1495186,
+-16121697, -7364795, -9092983, -2304787, 2944737, 4987531, -7206419, -176631, 2126009, -11206643,
+1656247, -4432943, -7456063, -3763465, 542777, 2898029, -5129802, -1158031, -7829726, -485331,
+-2132988, -2400887, -5727876, -8209830, 2060511, 2901787, -4601521, -3033321, -3395709, -2396592,
+1453310, 5651103, 1492501, 1888712, -1818382, -23300734, -7351911, 4222490, 17595944, 32337346,
+-13018046, 560493, 5331665, -5941551, 29965450, 5306969, -14786499, 26261578, -5434744, -8822400,
+18785114, -17069810, -9997610, 1141388, 1628330, 2335925, 12295954, 6583111, 9974525, -3064459,
+5280663, 15056008, 897111, 10264435, 1861332, 391379, 16617228, -21737904, -7924215, -7374459,
+14458471, -11083163, -2908230, -6531035, 14316737, -6091338, 31884764, 23337242, -21777632, 10652056,
+-26162256, 3748433, 9404905, 5083631, 5610838, -33301028, -6500433, -32116692, 4219806, 2649458,
+3874597, -5072357, -5865315, 15362024, -27780922, 9539122, -12055973, -52245056, -19610820, -17099338,
+8549669, -7610145, 7898982, 26150446, 27827094, 15793132, 14615774, 13616120, 3906810, -20774220,
+21758842, 37581, -24186572, -19201726, -30383672, -40170828, -20776368, -4066797, 32071058, 11582453,
+1895691, 12309376, -9877351, -230854, 6117644, 5134097, -2651606, 4706748, 1455457, 3263638,
+1279363, -9936944, 7945690, 5317170, 3866544, 1589675, -5262946, 2812667, -7791608, -2764348,
+-12065100, 9977746, 7466264, -1660005, 1013075, 7978439, 12612171, -5723044, -12460237, -3770445,
+10001368, -2255395, -7473243, 10754061, -1015760, -6279779, 7349226, 2959233, 399969, -1876901,
+-363462, -5344013, 3543348, -3423626, -1617592, 8269423, -41307920, -19126564, -14265197, 7780334,
+-31483184, 11448772, -18772766, 27026618, -31308700, -39730060, -8513699, -5612449, 31379032, 15400679,
+14041859, -7887171, 3761318, -19186156, -15416785, 3752728, 6672769, -24766928, -23051090, -16102906,
+-1952063, 12706124, 9161165, -17343614, -21948356, -12645994, -12910672, -29764660, -17157320, 13395466,
+-8213051, -35433, -4000225, 9876277, 15551540, -3898220, -44693428, 19079318, 37609416, 14146549,
+-694174, -44800804, -10598369, 19793356, -5462125, 50438484, -5228586, -40345848, 6830609, -6653978,
+3501472, 1293322, -7956964, 11058467, 13623099, -42571716, -11261404, 2527052, 15302432, -7764227,
+-21618718, 19585588, 2110440, -14317810, -42436960, -49234284, -25267292, -2974802, 3824132, 39770324,
+56098180, 28998008, 22124988, 9772661, -32233192, 12034498, 60666, -16757889, -4657892, -53228604,
+-11024644, -143881, 645319, 2096481, 23553600, 8963597, 7202660, -9374840, -2816962, 20468204,
+-13543106, -8053, -580894, 4146791, -9977746, -16631187, -18587544, 8596377, -8523363, -2840047,
+11320997, 639413, 2073396, -14135811, 5158256, 4898947, 2790118, -11582990, -5694053, -7538205,
+-12132209, 1939178, -6910066, 13662828, 5561446, -8862128, 2058363, -3100967, 9567040, -12282533,
+-1331977, -251792, 6900939, 6222334, 3368865, 7463580, 233002, 4238059, 3481608, 75240848,
+69099048, -29091960, 35857072, 31799938, -8902393, -5312875, -16469052, -8854075, -19366544, -13554380,
+57309896, -3044058, 33389076, 481573, 1631014, 524523, -22610856, 5477694, 4683662, -49612240,
+7399692, 12128451, -26157962, -5370857, -8072391, -3466576, 7343321, -1379758, 1501091, 21998286,
+8859444, -10542534, 6728067, 35012036, 555661, 16201690, -885300, 13248363, -19267224, -23102092,
+-13036836, -42518028, 11378442, 4921496, -18997178, -51681880, -33903400, -48300664, 35256312, -24996172,
+5461588, 8914741, 7969312, 6914361, 37616936, -36055712, 155693, -20118700, 39816496, -89248344,
+18292802, 7126425, 28550258, 26262652, 66035, -8023536, -13758928, -3715147, -26066156, 19335406,
+52617644, -3752191, 10799158, 33535642, -23308250, 13495324, 16130287, -28971166, -20378546, -53961432,
+44858784, -8415452, -39687108, 26895086, -6752763, 17695802, -1317481, 15396384, 2449742, -11265162,
+18500572, 18221936, 2774012, 10617159, 16808354, 10481868, -11517492, -4461934, -11254962, -4473746,
+14136885, 27779312, -1343788, -4579509, -1273458, 18029736, -27825482, 16367583, -7669738, 37486476,
+7158637, -21471616, -4646081, 16960288, -8765491, -10976863, -8806830, -6078990, -8660802, 9615358,
+6226629, 24271398, -19931870, 1885491, -2436320, 13610214, 689879, -955093, 7534447, 10077604,
+7059316, 16152298, 1800128, 18536542, 9991168, -249645, -26069914, -24720758, 30581778, -62266824,
+42949136, -25680146, -17935246, -11290932, 3926137, -18034030, -14020921, 19519552, -5977521, -42599632,
+14712410, -2621541, 7556995, -9605157, 37884832, -30912490, 1335198, 15698105, -10705743, 11883638,
+-25191594, 2052458, -21672942, -11014981, 23616414, 3001645, 9477382, -13434121, 22830972, -6599218,
+-10620917, 8716099, -13944148, -11660299, -7440494, -7720741, -23526758, -31578748, -8756365, 17470316,
+300111, -9916006, -31471372, 1171452, -24870544, -1703491, 10047539, -24678882, -6041945, 18080738,
+18429168, 13310104, -30550640, -14534169, 21090436, 6792491, -572304, 16999480, -100317016, -23293756,
+-11173894, -45668924, 4498978, 12429635, -2665027, 8309688, 21519934, -12511777, -21322366, 5318244,
+-19360638, -5992553, 20884278, 32989106, -12567611, -40137008, -24138790, 2434173, -21347062, 3168612,
+-16566763, -15809238, 4151086, -32231582, 361851, -20199232, -6167036, -11173894, 4460861, 7870528,
+-3210488, -20089710, 4356171, -1571421, -12566537, 15256261, -698469, -14906221, -5086315, -4130685,
+-5574868, -10450192, 5437429, -9587441, 7522635, 10164040, -4205310, 849867, -6238440, -14239427,
+-19675782, 3110630, 2530273, 8676908, -22775674, 4338454, -177167, -15096273, 11198590, -6528887,
+7987566, 17965312, -41304700, 7818451, 5698885, 11417634, -6949794, -4749697, 13501767, -1441498,
+999654, 67515816, -8414378, -18512920, 2677912, -7360500, 33494302, 6432251, -2726231, 31854698,
+32259500, 10717554, 12534862, 17797270, -39561480, -21769042, 32964410, -4337917, -32472638, -16313360,
+-14704357, 22587770, 12075837, -11783243, -46945068, 14778982, 7421704, 6403260, 7757785, -5500780,
+4805532, -35079684, 31550830, 22060026, 11651709, -17486960, -14979772, 108985, 15795816, -3273302,
+16420734, 7332046, -37170796, -16356309, 5878200, -37244344, 2218351, 7337952, -32932198, -46206868,
+-6504728, 14190572, -26980448, -56141128, -24686936, -14554034, 36550172, -22014928, 41244572, -8301635,
+1918777, 17845052, 2391760, -62909996, -4233764, 2859375, 29459718, -55954832, -77683072, 5861557,
+-5104569, -49247704, 27888834, 13408351, -1906429, 96637, 45638860, -65133180, 53613004, 11624329,
+7116761, 22050898, -23616952, -21037286, -4164508, 10450729, -13475997, -666794, 27469538, -23029614,
+-18815178, 24709484, -13887240, -6521908, 10116795, 7074885, -27434104, 14287746, -9264781, -2106145,
+9550934, 9885404, -29234232, -4334159, -22764938, 13082470, 17495012, 1593970, -37595996, 26966490,
+-6634651, -147103, 15880105, -3566434, -13810467, -1989644, 21016886, -31448824, 21638046, 1693291,
+-2609193, 8537321, 4005594, -19449760, 8997956, 454193, 682363, -25480968, 17649094, -16473347,
+19493246, 3552475, -24140400, 2580202, 2683281, -6205154, 11002096, 2648384, 30775052, 11538967,
+73584600, -31986768, -33311766, -14300094, -2018098, 69823824, -10501195, 57686780, -41697688, -16901234,
+24049670, -45417132, -15395847, -42787000, 6266894, 41865732, -59332824, -22318798, -5665062, 16976932,
+-1111323, 5702106, 15650324, -4975183, -37813964, -35203700, 1136019, 23432268, 64639256, -15332496,
+17110612, -19621022, 31625992, 231928, 3200288, -9887015, -39060580, 402653, 34947076, -6975564,
+-2629594, -14128832, -34130496, 43350180, 16300475, 28624346, 38987564, -2834142, 1792612, 23646480,
+-63666984, 20924544, -32399086, 73843912, -7568806, 6453725, 10714870, -22714472, -22517976, 6600828,
+-32287954, 46512884, -28224378, -35869420, -35850092, 48668420, 16332150, 27807228, -6874095, 27773406,
+28631326, -30646202, -9054865, -28497644, -15008763, 50731080, 36125508, 3892851, 9548249, -79189536,
+53160420, 69468952, 7621420, -6622303, -13851806, -42946452, 60323888, -4488241, 3637301, -12913356,
+1287953, -27477054, 56438016, -14547591, 27268210, 3467112, -10346039, -4279935, 54352812, -31264678,
+26549340, 8038032, -23727546, 2246805, -7939247, 14141180, 3902515, 21219286, -9699647, 1342714,
+3736622, -1243393, 21551072, 36678484, -12057584, -2914672, 3867618, 19692962, 5480915, -29970282,
+-19866372, 39767104, 7514582, 18981608, -40438728, -49093088, 43976708, 28455768, 13431436, -4446902,
+-37666864, -1839857, 33430952, 9824201, 1459752, -3656091, -6631967, 5748814, 4498442, 6989523,
+-5551782, 3664681, 7174743, 4686346, -3106872, 1026497, 1371168, 6929393, 17611514, 6583648,
+-55529632, 37969660, -39504036, 4795331, -18224084, 14663555, -1572495, 20898238, -3406983, -18044768,
+31062814, -10899553, -4413079, 4820564, -13128641, -11310796, 35850092, -8429410, -5013301, -4152697,
+-1930588, 16543140, -12660490, 3949759, -9295383, 8302172, -8134668, -6040335, -19380504, 28268402,
+-17524004, 9438728, 4397510, 19624242, -22065932, 5013838, -9106404, 22260278, 2767033, 1877975,
+17379048, 5345087, -29203094, -4167192, -5140002, 8205535, 12553653, 10772852, -26581552, 11455215,
+-20128902, 14260902, -11557757, 3156801, -6717329, 14092861, -5648956, 4205310, -29748554, 7157026,
+14142254, -13360570, 13215077, 2021319, 4718022, 8561480, -12139188, 20618528, 7828115, -944356,
+-6665253, 10133438, -6467147, 18741626, -15760919, -4404489, -15019501, 19412178, -19246822, 17660906,
+-16095390, 21432960, -18301392, 11362873, -18053896, 15845208, -1508070, 1886028, -5436892, 1116155,
+-3395172, -2457795, -5771363, 9554155, 3318399, -975494, 2721936, -2516851, -5320391, 9618042,
+1102196, 3856344, -6350646, 709207, 8949638, -10371272, -2965675, 6582038, -219580, -2837363,
+-7269232, 17219060, -5706938, -8114804, 4001299, 1906429, -3069291, 2194192, -1372779, 2047626,
+-3283503, 2833605, -5391795, 8690329, -7283728, 9965935, 3722663, -6702297, 2074469, -1003949,
+604517, -407485, 4083977, 464930, -3260954, 2867965, -3521873, -23032836, 46790984, 3981972,
+5957120, -18597208, -13677860, -29577292, 19966230, -8242042, -5976447, -12811351, -428423, -11414412,
+-1353989, -1443109, 5288716, 5903433, -840740, -1307281, -8359080, 7930657, 7417946, -6922414,
+3367254, -15806553, 6397354, 3154654, -2711198, -2398739, -5230734, 5122286, 1181116, -11239393,
+-2970507, -3250753, -9316321, 15455440, 1680943, -9767829, 1570347, -3790309, 13476534, -4589710,
+-6205154, 2663417, -7935489, 15715285, 517007, -8592619, 2544231, -3465502, 7721278, -9810242,
+-1892470, 3318399, -3522410, 6939057, -3850438, 2053531, 3185255, -8843338, 1312113, 8912594,
+-13464186, -826781, 4170950, -12495670, 22943178, -20868172, 10513006, 3847217, -11890617, 23715198,
+-16027744, 3859565, 3084324, -9941239, 7863012, -4024921, -7653095, 7607461, -9130564, 6044630,
+-4160213, -3053722, 6863358, -5593658, 2251100, -2230699, -3221, 1389959, -3027952, 1516660,
+-105764, -2954401, 6491843, -5406827, 4854387, 243203, -4432406, 4462471, -7868917, -699543,
+2152852, -1240172, -1031866, 1185948, -4062502, 5120138, -2502355, -1730335, 597537, 592169,
+-3157875, -419296, -1800665, 1815161, 2594697, -3561065, 3224984, -3396246, -617402, 3419331,
+-2448668, 10912438, -50017580, -115480400, 30313342, 106902808, 90390272, 121278600, -59773060, -77473696,
+-116496696, -119083336, 8209293, 88786104, 98046584, 107383848, 35735740, -23368380, -85169736, -141049408,
+-77248208, 35879084, 55619828, 94067840, 71339944, 19478750, -12603045, -29717952, -70616240, -45784888,
+-43523052, -7991324, 37272800, 57067232, 30090004, 38094748, 19321448, -21476448, -3297998, -45917496,
+-63851132, -10945724, -14848776, 11258720, 60349660, 34729104, 29989072, 8827232, -22520124, -23269060,
+-19972672, -33112050, -8603356, 1449015, 14264660, 17296908, 28907278, 8201240, -943282, -14581414,
+-26775900, -2319819, 9740449, 9897752, 16986058, -4338454, -13405667, -6497749, -13421773, -10620917,
+2956011, 7577933, 21742198, 18338436, 17631378, 986232, -9338333, -35228396, -32640140, -13368623,
+2181307, 27158688, 29251948, 11998528, 12454331, -1420024, -23435490, -14434848, -1609539, -5552856,
+1353452, 2436320, 5747740, 4683662, -2949032, -7722351, 4635344, 7045357, 5909875, 6000070,
+-455803, -4470524, -2658048, -11990475, -4819490, -6641093, -11135240, 6594386, 16412144, 18976776,
+6403260, 6808060, -3605625, -4509716, -16949014, -25388626, -9667435, 2836826, 8017630, 9776419,
+20874614, 19251654, 9467719, -7726646, -16153909, -18402324, -17064442, -12763569, -759672, 15333570,
+23947128, 18835042, 5586679, -9067213, -10700374, -10858214, -6147172, -4194036, -4590247, 4595078,
+11019812, 7967701, 1839857, -1497870, -746251, -2891050, -3097208, -4609574, -1896228, 2537789,
+2284923, 1255741, 1578401, 1206349, 1132798, -2383170, -2913599, -942745, 1337346, 981937,
+406948, 405874, 486942, -950262, -707059, -392990, 235686, 255014, 717796, 611496,
+458488, -226560, -814433, -1455457, -126702, 246424, 128312, 375810, 1008244, 306016,
+312996, 819265, 107911, -2259153, -1759326, -574989, 489626, 965831, 1487132, 491774,
+172872, -100395, -37581, -596464, -501974, -308164, -151398, -493921, -73014, 44023,
+466004, 667331, 784905, 386547, 340376, -267899, -661962, -1149441, -758062, -419296,
+221728, 833761, 1273458, 831076, 170725, -435402, -548682, -841814, -622770, -64425,
+352724, 328565, 312459, 92342, 56908, -45097, 2147, -67646, -55835, -78383,
+6979, -20401, -32749, -75699, 4832, 40802, 45634, 24159, 37044, -6442,
+-17180, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-5501316,
--4846334, 6116571, -1204202, 4890894, 1455457, 7255274, -1642825, -3696893, -2532420, 4446365,
-163209, -1569274, -387084, 5022428, -1286880, 940598, 1791001, -3316252, -2508798, -1058173,
-961536, -3444027, 926102, 738734, -3986804, -1278827, -2368675, 370441, -1719061, 673773,
-6613176, 3397319, -1879585, 339839, -3078418, 2421288, -797253, 3908957, -8016020, -860067,
-1288490, -2844342, 558346, 3928821, 3023657, -3605625, -2640331, -2894808, -499290, -2290828,
--1130650, -3520800, 1394254, -295816, -4051765, -2105608, -1610076, -192737, 887448, -881542,
--381715, 1772748, 740345, -1921998, 1056562, 4371740, -2195265, -569620, -4646081, -1780264,
--321049, 1948305, -1939178, 570694, 834834, 657130, 1557463, -3618510, -77846, -2038499,
-1762010, -1304060, -3451006, -991064, -66035, -57982, -1500017, -1623498, 1744831, -766115,
--270046, 630823, 1037772, 47782, -185220, 193274, 635118, 38655, -343597, 775242,
-184147, -678605, -575526, 723165, -213138, 260382, -419296, 651761, -559420, -395674,
--54761, -135828, 276489, 7499550, -2850248, 2417530, 6265821, -5143224, -5794985, -880468,
--1471563, -102542, 3176128, 1754494, -8043400, 1219234, -4628364, -6356552, -439697, 2286533,
-2476586, -2095944, -299574, -709207, 3410741, -746787, 2799782, -1356673, 298500, 587337,
-831076, -4038880, 1654636, 3063386, -1482301, 3913789, -2216203, -464930, -4962835, 3472481,
-856309, -1338419, -3854196, -3826816, -1749125, -1330903, 1888712, -454193, 1627256, 1599875,
--3419868, 2078227, -4584878, 1594507, 2630668, 4996121, 4823249, -4215511, 2047626, -306016,
--1127429, 2907693, -2270964, -2723546, -2041183, 2362769, 1176284, 3091303, -3134789, 4675072,
--1549410, -280247, 1401770, 739808, 2748242, -2136746, 3923990, 4933844, 8690329, 3999688,
-2753074, -5187247, -956704, -3401077, -2443837, 3119220, -430034, 3863860, 1583769, -357019,
--795106, -725313, 2244657, -1757715, 1787780, 2082522, -1692754, 971200, 768262, 177704,
-1277216, -845572, -246961, -1735704, -99858, 93952, 870805, -9277666, -9980430, 1080721,
--867047, 2310156, 2151242, 6506876, 2913599, 3082176, 1534377, -3256659, 1184337, 8235600,
--5587753, -668404, 204011, 6602976, 3948149, 881005, 2897492, -571231, 2226404, 3020436,
-6762963, 3732864, 3775276, 2013803, 1589138, 3279745, 1153199, -4791036, 2865817, 3883187,
--1446330, 2813204, 3715147, -1351841, 1135482, 4665945, 1688996, -1169842, 1641214, 4764193,
--294205, -86973, -994285, 1283658, 4449049, -1361505, -2583960, 1268089, -1605781, 2346126,
-2775086, -3377992, 671626, -2192044, 126165, 1342714, 3736622, 3087008, -8010651, -43487,
-3851512, -2052994, -3367254, 422517, 561567, 3897683, -376347, -8518531, -3762928, 2729452,
--2411087, 3981435, -1161789, 1611, 966905, 5000416, 3098819, 2110440, -2633352, 4105452,
--543850, 2508798, 1190780, 483721, 813359, 845035, -114890, -673236, 501437, -369367,
--2111513, -885837, -898722, -272730, -526670, -17717, -674310, -1499481, 688805, 306016,
--810138, 161598, 1349694, 1018981, 432181, -204548, -289373, -153545, -128849, 1323924,
--16643, -16726213, 2426657, 1808181, 7906498, -228707, 6188511, 3215320, 1627793, -9767829,
-81604, -73014, -7570954, 1301912, 5776194, 1165010, -45097, -640487, -2982855, -3412889,
-1622424, 2335389, -207769, 1586454, 1817308, 6944425, 847182, 3122978, 3263102, -3513820,
-836982, -762894, -934155, -373662, 2585034, -304406, -1662689, -2662880, -1590212, 968515,
--4829154, -3382287, 2113124, -3797288, 1324461, -6293738, -7590818, -1860258, 9505836, -2408940,
--506806, 5670968, 1920387, 503585, 6018323, -753230, 715649, -664109, 1797981, 3929895,
--1454383, -5873905, 3859565, -3384434, -6578816, -2543695, -1808718, 89121, 2479270, 7270306,
-91268, 26307, -2765422, -166967, 4273493, -1901597, -2148558, 5217312, -4283156, -229781,
-2379412, -5128728, -987843, -1709397, -1733556, 689879, -2767570, -3840238, 277025, 2557653,
--1105417, -1594507, -2204929, -2149631, -285078, 1744294, 765041, -108985, -633508, -1644436,
-110595, -472446, -2122251, -3041374, -2671470, 82678, -322659, 1398012, -2075543, 22012,
--285078, 1140851, -144955, 562641, -610959, 127775, 343597, -945430, 14867029, 397284,
--1002338, -5767068, -3359738, 7803419, -3292093, 6072547, 5207648, -6112812, -1078574, 4532801,
--3469797, -1715839, -1674500, -2271501, 892816, 1572495, 184147, 2801393, -1413581, 368830,
-988379, -1293322, -2932926, -3034931, -3438121, 184684, 3791919, 1615982, -3396782, 229244,
-1433982, 7353521, -2303713, 6576132, -6159520, 2668249, 4693326, -3237869, -2034204, -6251325,
-2814277, -132070, -4440996, 4228932, -5481989, 5963025, -434329, 8469139, 1857573, 865436,
-1959042, 3490198, 1789928, -2821794, 4103841, -845572, -4603131, -7093676, -2024003, 2924336,
--3635153, -2345589, 2633889, -3991098, 7602092, -7477001, -149250, 4906464, -4351339, -1736777,
--7899519, -636192, -3166465, -1759863, -2455111, 6682969, 2529736, 635118, 156229, 5760088,
-452582, -548682, 4532801, 3783329, 3366718, 7169374, -1666447, 656593, -2160906, 1992328,
-2250563, 438624, 566399, -1264868, -180389, -1771137, -993748, 122407, 519154, 1102733,
--704375, -296353, 2180770, 1034013, -1006633, 4430259, -386010, -1156957, -1980517, -1246614,
-1494112, -1580548, 5906, -230318, -1720134, 648540, 326418, -470299, 978716, 1137093,
--1349157, 1181653, 1974611, 7182796, 12743168, -3771518, -5601711, 1430224, -2309082, 3491272,
-11596412, 39728, -2715493, 3660923, 1964411, 3414499, 2051384, -6361384, 199179, -5679558,
-3112778, 2705830, 1627256, 10610717, -546535, 7904888, -246424, -219580, 2375654, -89657,
-8308078, 1081795, 5216775, -1962800, 7080254, -3230352, 3757023, 14084808, -2346663, -3579318,
-9903121, 2075006, 6437082, -175020, -6224482, 1911797, -3608846, 4247723, -7492034, -1009854,
--3914863, 4189741, -675384, 855235, 7638600, -3744138, -7767985, 2154463, -711354, -372052,
-6202470, 1201517, 843961, -2823404, -5127117, -5389647, -1847910, -4449586, -3406983, 4602595,
--2366527, -439160, -1731946, 542240, -25233, 4112431, 2522220, -4704600, -6845104, -1584843,
-167504, 1879048, -1903207, -1660542, 5533529, 3193845, 2699924, 821949, -4600447, -2090039,
-2409477, 120796, -1554241, 2005213, -679679, 1230508, -1531693, 138513, -900869, -2560874,
--3116536, -790274, -2763812, 741956, -456340, 293132, 1803349, -466004, -1507534, 2313914,
-438087, 1488743, 799401, 177704, -904091, 1164473, -338229, -222265, -139586, -209380,
-43487, -427886, 580894, 1491964, -1829656, 527207, -2147484, 371515, -1068910, 2673617,
-17445620, -9300752, 6061810, 145492, 2941516, -4332012, -3410741, -2026151, 3723200, 4814659,
-953483, -2790118, -5188858, 2567317, 4760435, -1047972, 1433982, -2695092, 5198521, 1858110,
--10021769, -3365107, 3111167, -682363, -4309463, -302795, 4434017, -3421478, 1448478, -6564321,
-3684545, 8064338, -3467112, 8535711, 208843, -1681480, 5672578, -357019, 360240, 5097590,
--11329050, 1578401, 3325915, 4672925, 3150896, 3624953, -5128728, -4026532, -258235, 1678259,
--5546951, 1690070, 5231270, 4651450, 1686312, 14442901, -4667019, -1946157, -6671695, -2946885,
--4400731, -6184216, 7425462, 3006477, 7250979, -1271310, -11805254, 6701223, -4217121, 3624416,
-3286724, 1508607, 1947231, -9393630, 10900627, 2263985, -5162551, -9021579, -5644661, -5703717,
-704375, 4402342, -4212289, 207769, 2717641, 2244121, -68719, -2070711, 383326, -337692,
-1660542, 1701881, 1912871, 1235877, 1240709, 535797, -3302293, -3049427, 70330, -1217623,
-987306, 1165010, -1571958, 1949378, -579821, 610959, 1671279, 592169, 1282048, 240518,
--3505767, -401579, -113817, 1047435, 825171, 249645, -845035, -1095754, 1792075, -715649,
-4460861, 607201, 1891396, -20812338, -17487496, -16105590, 3848828, 3562675, 1574106, 944356,
--957778, -1057636, 643171, -2570001, -5714991, -3901441, -10159208, -4363687, -4826470, 6409702,
--7762617, -3310346, -4306779, 1554241, 292595, -1848983, 2524904, -472983, -8070244, 51540,
-7789460, 1200980, -7178501, -6300717, 3049427, -2415382, 6568079, 4701916, -6773164, 7105487,
-11060078, -8882529, -9131100, -4763119, 3622805, 8861591, -5956583, -6134287, 3462818, -3445101,
-867047, -588947, -598074, -9676561, 2086280, 6229313, -2886218, 3666292, -4733591, -5624797,
--5623186, -2644089, -9826348, 17393006, -3446711, -921271, 3187403, 2104534, 3845606, 2575907,
-5543192, 2684355, 4837207, 10860899, -13517336, 9833328, -3081102, -2362232, -282394, -15052787,
--512175, 4927401, 612033, 850404, 4461398, 1813013, -192200, 2793339, -4985384, 6239514,
--1978906, -3233037, 3435974, -1866163, -1727651, 868657, 2838437, -1789928, -3062312, 1363652,
-2759517, 361851, -919123, -2568391, -1372242, 654446, -3818763, -2408403, -1213328, 2176475,
--722628, 412854, 2292976, 307090, -3804267, -635118, -3212636, -2745021, -2665564, -1481764,
--2964064, 2943663, -758599, 456340, 5898064, -856846, -1560684, -1261110, 3273839, 1063004,
--881542, -852551, -20667382, 15853261, 4202089, 3463891, -3825742, 15520938, -2441689, 7320772,
--24159, 6589554, -9235253, 3670587, 3615289, 1431298, -4549444, 13826573, -3752728, 4230543,
-3164854, 14352707, -9681930, -602906, 3970697, -2463701, -7111392, 4311074, -6692096, 1757715,
-1806034, -7802345, 3010235, 677531, 368830, 15797427, 9826885, -1280437, -6477885, -4998805,
-3486440, -795643, -9483825, 2727304, -865973, 2830920, 7080254, 10531797, -7237557, 7179575,
-3528316, -4672925, 3364033, 2797098, -7490423, -3971771, -4714801, 7563438, -8163122, -6831683,
--18648212, -13565117, 3723737, -2495913, -2731062, -7097971, -14487462, 5602785, 1051193, -356482,
-7006166, 6091874, 8436926, 5121749, 1990181, -167504, 1291175, 9687299, -7169374, 13239237,
--4911295, -3645890, -12095165, 2004139, -2284923, -6037651, -1165547, 1556926, -3105798, 3597572,
--1537598, 251256, -1565516, -376347, -1359357, -186294, 2080375, 3554086, 182536, 2956011,
--3302830, -2165737, -1724429, 1302449, 2372433, -3148211, -1334124, -1400696, 372588, -1697586,
-1362578, -200253, 1168768, 2308008, -80531, -3347927, 4810364, 4874251, 1851668, 175557,
--2252174, 12885, -1235877, -363998, -276489, 5388037, -25176562, 22930294, 16418586, -6961605,
--5907191, 6054830, -132607, 380641, 10844256, 7621420, 132070, -1811939, 4254165, -2751464,
--1785633, 2927557, -5134634, 6025302, 4068408, -5347771, 6507413, -904628, 1617055, -671089,
--11201812, -797253, 7828115, 8126615, 3072512, 3377455, 4267050, -5312338, -6678674, 2621541,
-4804995, -389231, -2694018, -5839008, 2163590, -1839857, 6891275, 8155069, -1118839, 9429064,
--5186173, 10528575, 5614596, 12727062, 744640, 1706713, -3902515, -5450851, -1186485, 9727564,
-15988016, 803696, 12141873, -5491653, -12013024, 1407139, 4279935, -10514080, 10590316, -3737159,
-3623879, -22950694, -9981504, -319975, -5658083, 4239133, 7348152, 15649787, 3112778, -51003,
--7932268, -13916768, 3365644, 424665, -11720429, 4563403, 2315524, -8493835, -2547989, 1825898,
-8936753, 42950, 2574833, 2627983, 4570919, 3739843, -7898982, 2586644, -318901, -1695438,
--12885, -540629, -1420024, 3122978, 2923262, -3376381, -1507534, -203474, 2035278, -1390496,
-2980707, 315143, 2121714, 1899449, -2696166, 1739462, 2127620, 5795522, 359167, 3245385,
-3541738, 766115, 4189204, 1434519, 2072322, 853625, 368830, 1432909, 4952634, -2345052,
--4916664, 1006096, 5745056, -10121090, 16269336, -7567196, 1600949, 12050068, 12498355, -1369558,
--7811472, -4394289, -4328254, 535260, -9976672, -8024610, 7632694, 1591285, 4768488, 5860483,
-7043210, -3753802, 4434554, -2254858, 5388037, 23613730, 5281199, -12030203, 10878078, 12490302,
-184147, -2575370, 306553, -6841346, -9192304, -5062156, 12812424, 8405788, 6930467, 10762114,
-1903744, -2387465, -5523328, -14702210, 6235756, 7052337, 3807489, -2721399, -2125472, -5380521,
-1621350, 11126113, 7632694, -13760001, 8420820, -11678016, 11456288, 2041720, 4068945, 4798016,
--2327336, -6817724, -2275796, 4265977, 20087026, -3745748, 9861782, -5034776, -9584756, 10351408,
-9425306, 1976222, 1894081, 9333501, 3103114, 69793, -1458678, -6769406, -2264522, -9695352,
-2614561, -7646653, -3898757, 13957033, -1096290, -135828, -40802, 6146635, -2509335, 1455457,
-4096325, 6185290, 6949257, 5517959, 2054605, 2635499, 3005403, 5538361, -1261110, -5426155,
-6571300, 2171106, 3483219, 3612604, -136365, -1061931, 119722, -3619047, 1582696, 5945309,
-426276, 245350, -1680943, -3025805, 5152350, 5264556, 836982, 9793062, -1592359, 3871913,
-7664906, -115964, 1914482, -1785096, -3344169, 180926, 1437203, 2236067, 5444408, 1846299,
-4007741, 933082, 743029, 5299453, -1248225, 469762, 4264903, 708670, 1113470, 229244,
-1831267, 5906, 2610803, -595390, 1875827, 231928, 8437463, -4363687, 8580808, 10967199,
--12723841, 8449811, 4881231, -3145527, 739271, 5780489, -5346161, -11280195, 16764331, 3536369,
-3180423, 3040300, 9942312, 2802466, -10069014, 10616622, -14422500, -16932908, 1474248, 1905892,
--9304510, -3166465, -27521614, -19604378, -14676440, -5086852, -15094663, -7566122, 5724655, -13705778,
-9525701, 8613557, -11040750, 14119705, 7625715, -2943663, -1417339, -7540352, 343061, -13346074,
-28962038, 8295193, 4540854, -14612016, 3554086, -4633733, 19228568, -4038880, -454730, -17695802,
-17187386, 957778, 6766721, 5368709, 10054518, 5466957, -3816079, 5527086, -8464844, 8454643,
--3058017, 4893042, -13581760, 30722974, 4804458, -14566918, 7874823, 8809515, 7157563, 10298258,
-9086540, -14169097, 11214696, -518080, 9069360, -7296613, 2778844, -18180596, 7663296, 7557532,
-2396055, -4565550, -13427678, -1145683, 9422085, -12309913, -1498407, -1699733, 93416, 3398930,
-2951180, -3001109, 5380521, -597537, -2386928, 3823595, 3347927, -4073240, -2855617, -8175470,
--302258, -7633768, 4591857, 903017, 939524, 5423470, 9084393, 5287642, 4394826, 2476586,
--2927557, -1584843, 328028, -6068789, -4473746, -1675574, -1657321, 2717641, 7467875, 1896228,
-4830228, -1422171, 193810, 1889249, 71941, 1541356, 5760088, -22425634, 6215355, -3121904,
--2236067, 13221520, -2502355, -2319819, 1228361, 11832635, -3156801, 6878927, -5866926, -6897718,
--8809515, -11143293, 19202798, 9992778, 6927246, -6102612, -17707076, -21701396, 10361072, 7133404,
--7746511, 5111548, -5284958, 468688, 19108310, 8328479, -5498095, 10296110, -3554086, 5322002,
--6449967, 6446209, -14222247, -20855288, -8150774, -9325985, -1641751, 24314884, -19889994, 11424613,
-6524592, 4938676, -4444755, 9548786, 4217658, -19073412, -24276766, -8653822, -11106785, 27382028,
-19812684, -6675453, -12290586, -1052804, -12611098, -2683818, 19894826, 18452254, 10423349, -16335908,
-3459059, -12766790, 19945828, 9473087, -2178085, 40802, 6673843, -11848204, 2595234, 17625472,
-9526774, -15994995, 17287244, -8879845, 10306311, 27521076, 10454487, -6509023, -8218420, 23551990,
-2538863, -1457068, -10769630, 4134443, -5108864, 1498944, -3212636, -572304, -759136, -11756399,
-1421634, -1475321, -3407520, 5151814, -971200, -4163971, 688805, -2477659, 593242, -3071439,
--4633733, 4064650, -5130339, -3246459, 2342368, 6128919, -365609, 4330401, 3510062, -811749,
--78383, -5897527, 750009, 2007897, -5060545, 6718403, 3250753, -4076998, -2804614, -2838974,
--1331440, -6570763, 3841312, 6275484, 229781, -4879083, -2907156, 3280818, -1480153, 3160559,
-4352413, 364535, 1571421, 61740, -15569, -18072686, -7261179, 29464550, 13480829, 16852914,
-3885872, -25027312, 7343321, -20361366, 12896713, 36901824, 12926778, 23042500, -10806138, 6442988,
-10544145, -1415729, 2499671, -9839233, 2134599, 14332306, 475131, -4195646, -13504451, 6975564,
-5158793, -13752485, 6724308, -5405753, 10002979, 14409078, 15336254, 18539226, 1596654, -14900852,
-3657702, 8604430, -457951, 25348360, 1963874, -29770028, -18787798, 8092256, -7792682, -35081292,
-970126, 14532559, 5180268, 1260036, -3457449, 18028126, -14689325, -18146236, -3740380, -6687801,
--17668422, -1261647, 978716, -10418517, -15254113, -9461813, 444529, 1866700, -21905406, 6154152,
--9303973, 4954245, 24656870, -3709241, -8966281, 17083770, -3316252, 14172318, -14002667, 9043591,
-319975, -16173236, -18009334, 31670016, 2820720, 4011500, 1224066, -275415, 31768262, 25885232,
-7987566, -2723009, 12279848, -6470905, 3999688, 7180649, -1676648, 9534827, 3945464, 2553895,
--14896020, 8374113, 4373888, -1138703, 1037772, -5265630, 3917547, 10991895, -2161442, -3997004,
--6568079, -7178501, 6517076, 7700340, 147103, -294205, -6475200, -6973417, 900333, -9872519,
-1068910, -3508988, 9714679, 3226057, 145492, -6645388, -11317776, -2851858, -5639292, -7773891,
-4000762, 4100083, 8291435, 3042984, 978716, 9425843, -1443109, 25322054, 3419868, -34316788,
--15446313, 21547314, -30687004, 17681844, -29036126, 2535641, -4520990, -42033772, -5424544, 19164680,
-38973072, 12542378, -5512054, 9603547, -14769319, -4818417, -33757908, -1706176, -22891638, -3133179,
--4920422, -15721728, -16761110, -5419175, 9812390, -15097884, 10644003, 19588808, -19885162, 7442105,
-6559489, 3628711, -21175800, -3050501, -123480, -22086870, 5905580, 28591598, -2065342, -41008884,
-14683956, -24685862, -63466196, 18132278, -26201984, -32469952, 1817845, -14751065, 4610111, 11452530,
--6192806, 16954920, -13921600, 14840186, -11479374, -28216324, 225486, 20577726, 19565724, -36727340,
-5488432, -4188130, -27464706, -7124277, -6773701, 48110076, 23940148, 28322088, 12829604, 12455405,
-29657822, 42805792, -9689983, -19918448, -21982716, 4112431, -27321360, -8160438, 14165876, 23245974,
-3238942, 2344515, 19966766, -4363150, -11331197, -15149960, 12021077, 13907104, 13390634, 3396246,
-15357729, 6645925, -9453760, -1823214, -9163313, 14297946, 2230162, -1363652, -15770046, 5050882,
-12557411, 1665374, 184684, 12600360, -9890773, -6288906, 6750078, 984621, -5034239, -9176198,
--3104188, 14788109, -788127, -31790274, -3075197, -492848, -7453916, -5952825, -8585640, -4888210,
-6876780, 6568079, 3598646, 2534568, -5408438, -628139, -6645925, 55730420, 60240136, -35342748,
--14003741, 26911192, -12198781, 10869488, -16782584, 5043902, -17246442, -32266478, 43992276, 6445136,
-13805636, 11348377, 4104378, 5814312, 1302449, 8953396, 10909754, -31209380, -25789668, -22528714,
--21340082, -15919833, -10095858, -8293582, -16793322, -9444633, -14242648, 16194711, 12227772, 6258841,
--7877507, 3332895, -33121178, -16558710, 8931384, -29992830, -2845416, 14682883, 25868588, 3860639,
-4949413, -11038603, -19487340, -22826140, 18297634, -2426120, 18108656, -64107756, 3908420, -7397008,
-7282117, 39302708, 4707284, 6614787, 4308926, -11426760, -13341779, 427886, -2740189, -35959076,
-7592966, -13145284, 32172526, 2224256, -35558036, -48127792, -30106110, -6016176, -34013992, -33076080,
--20740398, 23444616, -6238977, -22758494, -30971546, 25789668, -3510062, 15287399, -17527224, 9405442,
-25141128, -16777752, -24651502, -10194642, -12850005, 26586384, 5340255, -11571716, 10190884, 7839926,
-22810572, 14381698, 6436009, -20444582, -20726438, -4440996, 2087891, -5316096, 3376381, 14262513,
--3441880, -1152125, -10721849, -7563438, -6019397, -10758356, -2410551, 4465692, 6134824, 33549600,
-1835025, -8382166, -3085934, 4503273, 10042170, -594853, 16136192, 6962679, 37832220, 5933498,
--786516, 1391033, 6489696, 1879585, -1802813, -10962367, -16832514, 62400508, -36721972, 23473070,
-44129716, -21665962, 5994701, 35179540, -45254460, 1464584, 4764730, 21551072, -50709068, 2473901,
-3134253, 16253767, -22271552, -54224, 8781598, -30004104, 4164508, -2592550, -5792837, 15993921,
--5152350, -4821101, 6662031, -4236449, -5286568, 15673409, -15208479, 4065724, -6403260, 3739306,
--9823664, -5673652, -11927661, -192200, 2050847, 30991410, 10201621, 14872398, -3390877, -10201,
-23021024, -1351841, -9007083, 12662100, 9392557, -10848014, -30633318, 27504434, -30529702, 4583804,
-14351633, 18733574, -30043296, 31495532, 51034948, -28397786, -52266532, 69302520, 24443196, -34812320,
-15729244, -33530810, -41322416, -20912196, -7703024, -43380244, 34613680, -60317448, 17818746, 28182502,
--23953570, -80507552, 75587128, -13598403, -19697794, 50057844, -50485728, 25574382, 42925512, -13356275,
--11979738, 12938589, 14642617, -8533563, 5181341, 3966402, 13506598, -7198365, -5118528, 14823543,
--186294, 2954938, -1767916, 2393371, 12082280, 8562554, -1805497, -11410654, 17777944, 18882824,
--3810173, -17168594, -1910187, 7701413, 1639067, 11420318, -79457, 9919764, 4293357, 14787572,
-11197517, 12328704, -19254338, 4363150, -501974, 216359, -56371, -12241194, -20783346, 29647622,
--5007932, -28541132, 10035728, 6178311, 2797634, -5219459, -19429358, -15075872, 34979824, -22874996,
--18271864, -36584532, -16787954, 21935472, 17039210, -9671193, -12106976, 11741904, 29027000, -12305618,
-21922050, 26248692, -18438832, -2538326, 16057272, -4008278, -537, -5151814, 1470489, -26561152,
-7385197, -5792301, 972273, 6556805, -5302137, 5635534, -11011222, -22222698, -10516227, -38788388,
-4929012, 48318, -5748814, 7354058, 3765613, -2400887, -8816494, 15782931, 24774446, -25840134,
-38036768, -4142496, 5121749, 5646809, 33625836, 15552077, 24617142, -30688078, -7600482, -5636608,
-43814036, -40697500, -13911399, 20118164, -1430761, -47016472, 3235184, -9577777, -8028368, 21689048,
-23638426, 1813550, -17678622, 38270844, -16022912, 63719060, 871878, -29329794, -9127, -4959077,
--33339684, 64020784, 12860743, -9359807, -75572632, -37613176, 21323438, -27660664, -25024090, 29773250,
--110795120, 2964601, 21859236, 16205448, -8944806, 31338228, -19050864, -2299955, 163746, 16407312,
--4595078, 3492345, 22100828, -1365263, -5555004, -6812892, -7932268, -173409, 2488934, -1293859,
--3333432, 14448270, -19973208, -4304094, 2384781, 3512747, -11964168, -20069846, -5148055, -6037114,
--2894808, -1508607, 3922379, -22284438, 1726577, 17216376, -10616622, 13205951, 9984725, -9613211,
-606664, -6991133, 2830920, 4967130, -10479183, 29603062, -14297946, -13012140, -17047262, -15463493,
--7722888, 13899051, 18979998, 11448235, 47673600, -9571335, 10555956, -4927401, -25082072, 12076374,
--16097537, -9233643, 9587978, 21185464, -23011898, 24459302, 2546379, -1598802, 50272592, -10623065,
--5919002, 37553584, -24533926, 33130840, 14156749, -8296803, 13064217, 13743895, 30954366, 32119376,
-9150965, -26744224, 54912232, -55746528, 1583232, 50013820, -27403502, 10781442, -6259915, -6911140,
--58653148, 39257612, 10212895, 17210470, 18321256, -12519293, -29327648, -22245246, -17973902, 2367064,
-55206436, -26844, 43247636, -14880451, -33742336, 1431298, 12257300, -27917288, 44395468, 17742510,
-21691732, 43670152, 28307056, -47604880, 17755932, -68102072, -83837224, 1314797, 70164736, 43707196,
-5465346, -50248432, -178121424, -33159296, 54786064, 62402652, 88866096, -4987531, -113190640, -64191508,
--59064392, 89855544, 68834904, -12940736, -45348948, -26896158, -55100136, -7493108, 70536248, -7354058,
-16355772, 11316702, -11784317, -26124138, 38368016, -16149614, 21330418, 15255187, -1633161, -36316096,
-48924508, -19881940, -9429064, 13684303, 12583180, -27105538, 294742, -8869107, -10166724, 2836826,
--1090922, 19102940, -35236448, 18044232, -42374684, -7246147, -7159174, 49661096, 1389959, 13050795,
--30758408, 15442555, -11616813, 21604222, 26476862, -13448079, -30566208, 10376641, 7842074, 25085294,
-21161840, -5706401, -8346195, -4319664, 17398912, 2731062, 17534204, 7287486, -43545600, 36702108,
--27358942, -4665945, -17697412, 17106318, -19891068, -762894, -2046552, -5321465, 4139812, 18850074,
--19769734, 8815420, 1593970, -4486094, 311385, 13332115, -16717086, -4472672, -2427730, 27584428,
--27796492, 7494718, -12173548, 18324478, -20295868, -5653251, 6975027, -3805341, 3862249, -13007308,
--2321430, 12017855, -3610457, 4729833, 3764539, 2629594, 14854681, -13622563, 9313637, 10869488,
-13253195, -1708860, -30802432, 4101694, 3638911, 12700218, 11431055, -2078227, 3046206, -5020280,
--14024679, -2214056, 6386080, -2466385, 18664854, -15047955, -5076652, -30197378, 9030169, 3464965,
--4835597, 6972343, 5878737, -249645, -15742129, 5080947, 15273977, -2790655, -2295660, 6223408,
--6251325, 11650099, -7131257, 2148558, -14477261, 7024419, 2646774, -2079301, -4023311, 8557185,
--4076998, -5832029, -8776229, 9298067, -459562, -4330938, -2040110, 9262634, -3673808, 4226248,
--5111548, -2780991, -579821, 564788, -206695, -4725001, 427349, 403190, -4307316, 4531728,
--4098473, 12063489, 1743220, 1845762, -16481937, 4883915, -468688, -6246493, 7259569, 14136348,
--10194642, -1973001, -540092, -6930467, 10819023, -1523640, 1399623, -6933151, 3613141, -1231582,
-1166621, -4300336, 4214437, -4287988, -24865176, 60288456, 16434692, 14898168, -7972533, -19297824,
--18568218, 5274220, 11705396, 1850057, -687732, -61203, -8807367, -1598802, 4233227, -2330557,
-1822677, -938450, -8823473, -454730, 4369593, 6891275, -6141803, 1696512, 4410932, -8787503,
-14430553, -8756365, -7647190, -7589207, 1970853, 4227322, 6694244, -7300371, 9339943, -13451838,
-8916889, 7963406, -5929739, -602906, -432181, -1537598, 6948184, -7475391, 2178622, -2382096,
--9689446, 13734232, -7672422, -247497, -5686000, -1763621, 9560597, -12475269, 5077188, 3476239,
--5462125, 4602595, -10662793, 3106335, 4424890, -7900593, 181999, 4268661, -7330436, 7366943,
--10116259, 2821794, 10347650, -15143518, 4352413, -5775658, 1035624, 5973226, -4538170, -2301566,
-1060320, 1315871, -917512, 4275640, -3249680, -2775086, 2065879, -2479270, 1350230, -943819,
-1778653, 1698660, -2460480, 1245541, -476741, 2221035, -2033130, -550830, 1473174, 65498,
--1181116, -3506841, 2218351, 2354179, -540092, -2419677, 2311229, -103616, -1107565, 2409477,
--5032628, -1004486, 2825015, -3604551, 5251135, -3213173, 233002, 8750459, -2554969, 6307697,
--3592203, -335007, 6932077, -4855461, -1849520, 9045201, -46580532, -109298864, 30946314, 107009648,
-73595872, 116361936, -64772400, -68946576, -94017904, -108833936, 2345052, 83985400, 86769080, 90589984,
-17790828, -29925184, -59389196, -85243288, -72248864, 5636608, 56138980, 66588636, 59915332, 14341970,
--16546362, -10331544, -46770048, -52313776, -22064858, -1418413, 20133732, 44126492, 21559126, 16010027,
-22106196, -11028402, -26233660, -4290673, -41945188, -19674708, 469225, 6664716, 31980864, 37235220,
-3310883, -5636071, -3490735, -27469538, -7437273, -381178, -5710159, 9514963, 18402862, -3919695,
--1453310, -7217693, -11481521, 2359011, 1140314, -1251446, 20763482, 14055280, 5196911, -526670,
--19572166, -28302760, -22379464, 1618129, 21070036, 18087182, 23737748, 3230352, 620623, 5399848,
--29453276, -16764331, -13848585, -2516851, 22604950, 5113159, 7585449, 21088290, -12167642, -17702782,
--4119411, -3020973, 6539088, 7603703, 2379412, 4246112, 1860258, -10866267, -11260331, -2744484,
--2147, 8100845, 11720966, 3848291, -1654636, -2542084, -3333968, 2939368, -3287798, -13817447,
--2168422, 3262028, 6405944, 13765370, 3352759, -2849711, -6612102, -11311870, -2474438, 1145146,
-3689914, 6477885, 8087961, 6374805, -3264175, -9800578, -10334228, -9014063, -1032940, 4493610,
-4971425, 13299366, 13650480, 6658810, -2946348, -16777216, -17749490, -8223252, -6220724, 6276021,
-16569984, 12283070, 5309654, 72478, -1319092, -2157684, -5069135, -8332237, -8016020, -3419331,
-1175747, 3473555, 5557151, 8075613, 7699803, 2952790, -2989834, -6476811, -7013145, -5205501,
--1972464, 1068373, 2479270, 2449742, 2974802, 3425237, 2632815, 74088, -2011655, -3477313,
--2837900, -1035624, 598074, 1379758, 238371, -153545, 243739, 357556, 1023813, 1087701,
--36507, -1146756, -477815, 893353, 228707, -1025960, -842350, -139050, -695248, -1144072,
--183073, 2070711, 2803540, 870805, -689342, -1047972, -746251, -474057, -807454, -1125818,
--443455, 791348, 1271847, 716723, 583042, 700080, 132070, -448824, -947577, -966905,
--679679, -226560, 466004, 782758, 572841, 466004, 233539, -126165, -473520, -655519,
--499290, 16106, 340376, 379568, 280784, 84289, -178241, -394063, -279173, 42413,
-195421, 209380, 202400, 88584, -103079, -182536, -114354, -53687, -13959, 30065,
-41339, 28991, 13422, -5369, -20938, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-4846334, 6116571, -1204202, 4890894, 1455457, 7255274, -1642825, -3696893, -2532420, 4446365,
+163209, -1569274, -387084, 5022428, -1286880, 940598, 1791001, -3316252, -2508798, -1058173,
+961536, -3444027, 926102, 738734, -3986804, -1278827, -2368675, 370441, -1719061, 673773,
+6613176, 3397319, -1879585, 339839, -3078418, 2421288, -797253, 3908957, -8016020, -860067,
+1288490, -2844342, 558346, 3928821, 3023657, -3605625, -2640331, -2894808, -499290, -2290828,
+-1130650, -3520800, 1394254, -295816, -4051765, -2105608, -1610076, -192737, 887448, -881542,
+-381715, 1772748, 740345, -1921998, 1056562, 4371740, -2195265, -569620, -4646081, -1780264,
+-321049, 1948305, -1939178, 570694, 834834, 657130, 1557463, -3618510, -77846, -2038499,
+1762010, -1304060, -3451006, -991064, -66035, -57982, -1500017, -1623498, 1744831, -766115,
+-270046, 630823, 1037772, 47782, -185220, 193274, 635118, 38655, -343597, 775242,
+184147, -678605, -575526, 723165, -213138, 260382, -419296, 651761, -559420, -395674,
+-54761, -135828, 276489, 7499550, -2850248, 2417530, 6265821, -5143224, -5794985, -880468,
+-1471563, -102542, 3176128, 1754494, -8043400, 1219234, -4628364, -6356552, -439697, 2286533,
+2476586, -2095944, -299574, -709207, 3410741, -746787, 2799782, -1356673, 298500, 587337,
+831076, -4038880, 1654636, 3063386, -1482301, 3913789, -2216203, -464930, -4962835, 3472481,
+856309, -1338419, -3854196, -3826816, -1749125, -1330903, 1888712, -454193, 1627256, 1599875,
+-3419868, 2078227, -4584878, 1594507, 2630668, 4996121, 4823249, -4215511, 2047626, -306016,
+-1127429, 2907693, -2270964, -2723546, -2041183, 2362769, 1176284, 3091303, -3134789, 4675072,
+-1549410, -280247, 1401770, 739808, 2748242, -2136746, 3923990, 4933844, 8690329, 3999688,
+2753074, -5187247, -956704, -3401077, -2443837, 3119220, -430034, 3863860, 1583769, -357019,
+-795106, -725313, 2244657, -1757715, 1787780, 2082522, -1692754, 971200, 768262, 177704,
+1277216, -845572, -246961, -1735704, -99858, 93952, 870805, -9277666, -9980430, 1080721,
+-867047, 2310156, 2151242, 6506876, 2913599, 3082176, 1534377, -3256659, 1184337, 8235600,
+-5587753, -668404, 204011, 6602976, 3948149, 881005, 2897492, -571231, 2226404, 3020436,
+6762963, 3732864, 3775276, 2013803, 1589138, 3279745, 1153199, -4791036, 2865817, 3883187,
+-1446330, 2813204, 3715147, -1351841, 1135482, 4665945, 1688996, -1169842, 1641214, 4764193,
+-294205, -86973, -994285, 1283658, 4449049, -1361505, -2583960, 1268089, -1605781, 2346126,
+2775086, -3377992, 671626, -2192044, 126165, 1342714, 3736622, 3087008, -8010651, -43487,
+3851512, -2052994, -3367254, 422517, 561567, 3897683, -376347, -8518531, -3762928, 2729452,
+-2411087, 3981435, -1161789, 1611, 966905, 5000416, 3098819, 2110440, -2633352, 4105452,
+-543850, 2508798, 1190780, 483721, 813359, 845035, -114890, -673236, 501437, -369367,
+-2111513, -885837, -898722, -272730, -526670, -17717, -674310, -1499481, 688805, 306016,
+-810138, 161598, 1349694, 1018981, 432181, -204548, -289373, -153545, -128849, 1323924,
+-16643, -16726213, 2426657, 1808181, 7906498, -228707, 6188511, 3215320, 1627793, -9767829,
+81604, -73014, -7570954, 1301912, 5776194, 1165010, -45097, -640487, -2982855, -3412889,
+1622424, 2335389, -207769, 1586454, 1817308, 6944425, 847182, 3122978, 3263102, -3513820,
+836982, -762894, -934155, -373662, 2585034, -304406, -1662689, -2662880, -1590212, 968515,
+-4829154, -3382287, 2113124, -3797288, 1324461, -6293738, -7590818, -1860258, 9505836, -2408940,
+-506806, 5670968, 1920387, 503585, 6018323, -753230, 715649, -664109, 1797981, 3929895,
+-1454383, -5873905, 3859565, -3384434, -6578816, -2543695, -1808718, 89121, 2479270, 7270306,
+91268, 26307, -2765422, -166967, 4273493, -1901597, -2148558, 5217312, -4283156, -229781,
+2379412, -5128728, -987843, -1709397, -1733556, 689879, -2767570, -3840238, 277025, 2557653,
+-1105417, -1594507, -2204929, -2149631, -285078, 1744294, 765041, -108985, -633508, -1644436,
+110595, -472446, -2122251, -3041374, -2671470, 82678, -322659, 1398012, -2075543, 22012,
+-285078, 1140851, -144955, 562641, -610959, 127775, 343597, -945430, 14867029, 397284,
+-1002338, -5767068, -3359738, 7803419, -3292093, 6072547, 5207648, -6112812, -1078574, 4532801,
+-3469797, -1715839, -1674500, -2271501, 892816, 1572495, 184147, 2801393, -1413581, 368830,
+988379, -1293322, -2932926, -3034931, -3438121, 184684, 3791919, 1615982, -3396782, 229244,
+1433982, 7353521, -2303713, 6576132, -6159520, 2668249, 4693326, -3237869, -2034204, -6251325,
+2814277, -132070, -4440996, 4228932, -5481989, 5963025, -434329, 8469139, 1857573, 865436,
+1959042, 3490198, 1789928, -2821794, 4103841, -845572, -4603131, -7093676, -2024003, 2924336,
+-3635153, -2345589, 2633889, -3991098, 7602092, -7477001, -149250, 4906464, -4351339, -1736777,
+-7899519, -636192, -3166465, -1759863, -2455111, 6682969, 2529736, 635118, 156229, 5760088,
+452582, -548682, 4532801, 3783329, 3366718, 7169374, -1666447, 656593, -2160906, 1992328,
+2250563, 438624, 566399, -1264868, -180389, -1771137, -993748, 122407, 519154, 1102733,
+-704375, -296353, 2180770, 1034013, -1006633, 4430259, -386010, -1156957, -1980517, -1246614,
+1494112, -1580548, 5906, -230318, -1720134, 648540, 326418, -470299, 978716, 1137093,
+-1349157, 1181653, 1974611, 7182796, 12743168, -3771518, -5601711, 1430224, -2309082, 3491272,
+11596412, 39728, -2715493, 3660923, 1964411, 3414499, 2051384, -6361384, 199179, -5679558,
+3112778, 2705830, 1627256, 10610717, -546535, 7904888, -246424, -219580, 2375654, -89657,
+8308078, 1081795, 5216775, -1962800, 7080254, -3230352, 3757023, 14084808, -2346663, -3579318,
+9903121, 2075006, 6437082, -175020, -6224482, 1911797, -3608846, 4247723, -7492034, -1009854,
+-3914863, 4189741, -675384, 855235, 7638600, -3744138, -7767985, 2154463, -711354, -372052,
+6202470, 1201517, 843961, -2823404, -5127117, -5389647, -1847910, -4449586, -3406983, 4602595,
+-2366527, -439160, -1731946, 542240, -25233, 4112431, 2522220, -4704600, -6845104, -1584843,
+167504, 1879048, -1903207, -1660542, 5533529, 3193845, 2699924, 821949, -4600447, -2090039,
+2409477, 120796, -1554241, 2005213, -679679, 1230508, -1531693, 138513, -900869, -2560874,
+-3116536, -790274, -2763812, 741956, -456340, 293132, 1803349, -466004, -1507534, 2313914,
+438087, 1488743, 799401, 177704, -904091, 1164473, -338229, -222265, -139586, -209380,
+43487, -427886, 580894, 1491964, -1829656, 527207, -2147484, 371515, -1068910, 2673617,
+17445620, -9300752, 6061810, 145492, 2941516, -4332012, -3410741, -2026151, 3723200, 4814659,
+953483, -2790118, -5188858, 2567317, 4760435, -1047972, 1433982, -2695092, 5198521, 1858110,
+-10021769, -3365107, 3111167, -682363, -4309463, -302795, 4434017, -3421478, 1448478, -6564321,
+3684545, 8064338, -3467112, 8535711, 208843, -1681480, 5672578, -357019, 360240, 5097590,
+-11329050, 1578401, 3325915, 4672925, 3150896, 3624953, -5128728, -4026532, -258235, 1678259,
+-5546951, 1690070, 5231270, 4651450, 1686312, 14442901, -4667019, -1946157, -6671695, -2946885,
+-4400731, -6184216, 7425462, 3006477, 7250979, -1271310, -11805254, 6701223, -4217121, 3624416,
+3286724, 1508607, 1947231, -9393630, 10900627, 2263985, -5162551, -9021579, -5644661, -5703717,
+704375, 4402342, -4212289, 207769, 2717641, 2244121, -68719, -2070711, 383326, -337692,
+1660542, 1701881, 1912871, 1235877, 1240709, 535797, -3302293, -3049427, 70330, -1217623,
+987306, 1165010, -1571958, 1949378, -579821, 610959, 1671279, 592169, 1282048, 240518,
+-3505767, -401579, -113817, 1047435, 825171, 249645, -845035, -1095754, 1792075, -715649,
+4460861, 607201, 1891396, -20812338, -17487496, -16105590, 3848828, 3562675, 1574106, 944356,
+-957778, -1057636, 643171, -2570001, -5714991, -3901441, -10159208, -4363687, -4826470, 6409702,
+-7762617, -3310346, -4306779, 1554241, 292595, -1848983, 2524904, -472983, -8070244, 51540,
+7789460, 1200980, -7178501, -6300717, 3049427, -2415382, 6568079, 4701916, -6773164, 7105487,
+11060078, -8882529, -9131100, -4763119, 3622805, 8861591, -5956583, -6134287, 3462818, -3445101,
+867047, -588947, -598074, -9676561, 2086280, 6229313, -2886218, 3666292, -4733591, -5624797,
+-5623186, -2644089, -9826348, 17393006, -3446711, -921271, 3187403, 2104534, 3845606, 2575907,
+5543192, 2684355, 4837207, 10860899, -13517336, 9833328, -3081102, -2362232, -282394, -15052787,
+-512175, 4927401, 612033, 850404, 4461398, 1813013, -192200, 2793339, -4985384, 6239514,
+-1978906, -3233037, 3435974, -1866163, -1727651, 868657, 2838437, -1789928, -3062312, 1363652,
+2759517, 361851, -919123, -2568391, -1372242, 654446, -3818763, -2408403, -1213328, 2176475,
+-722628, 412854, 2292976, 307090, -3804267, -635118, -3212636, -2745021, -2665564, -1481764,
+-2964064, 2943663, -758599, 456340, 5898064, -856846, -1560684, -1261110, 3273839, 1063004,
+-881542, -852551, -20667382, 15853261, 4202089, 3463891, -3825742, 15520938, -2441689, 7320772,
+-24159, 6589554, -9235253, 3670587, 3615289, 1431298, -4549444, 13826573, -3752728, 4230543,
+3164854, 14352707, -9681930, -602906, 3970697, -2463701, -7111392, 4311074, -6692096, 1757715,
+1806034, -7802345, 3010235, 677531, 368830, 15797427, 9826885, -1280437, -6477885, -4998805,
+3486440, -795643, -9483825, 2727304, -865973, 2830920, 7080254, 10531797, -7237557, 7179575,
+3528316, -4672925, 3364033, 2797098, -7490423, -3971771, -4714801, 7563438, -8163122, -6831683,
+-18648212, -13565117, 3723737, -2495913, -2731062, -7097971, -14487462, 5602785, 1051193, -356482,
+7006166, 6091874, 8436926, 5121749, 1990181, -167504, 1291175, 9687299, -7169374, 13239237,
+-4911295, -3645890, -12095165, 2004139, -2284923, -6037651, -1165547, 1556926, -3105798, 3597572,
+-1537598, 251256, -1565516, -376347, -1359357, -186294, 2080375, 3554086, 182536, 2956011,
+-3302830, -2165737, -1724429, 1302449, 2372433, -3148211, -1334124, -1400696, 372588, -1697586,
+1362578, -200253, 1168768, 2308008, -80531, -3347927, 4810364, 4874251, 1851668, 175557,
+-2252174, 12885, -1235877, -363998, -276489, 5388037, -25176562, 22930294, 16418586, -6961605,
+-5907191, 6054830, -132607, 380641, 10844256, 7621420, 132070, -1811939, 4254165, -2751464,
+-1785633, 2927557, -5134634, 6025302, 4068408, -5347771, 6507413, -904628, 1617055, -671089,
+-11201812, -797253, 7828115, 8126615, 3072512, 3377455, 4267050, -5312338, -6678674, 2621541,
+4804995, -389231, -2694018, -5839008, 2163590, -1839857, 6891275, 8155069, -1118839, 9429064,
+-5186173, 10528575, 5614596, 12727062, 744640, 1706713, -3902515, -5450851, -1186485, 9727564,
+15988016, 803696, 12141873, -5491653, -12013024, 1407139, 4279935, -10514080, 10590316, -3737159,
+3623879, -22950694, -9981504, -319975, -5658083, 4239133, 7348152, 15649787, 3112778, -51003,
+-7932268, -13916768, 3365644, 424665, -11720429, 4563403, 2315524, -8493835, -2547989, 1825898,
+8936753, 42950, 2574833, 2627983, 4570919, 3739843, -7898982, 2586644, -318901, -1695438,
+-12885, -540629, -1420024, 3122978, 2923262, -3376381, -1507534, -203474, 2035278, -1390496,
+2980707, 315143, 2121714, 1899449, -2696166, 1739462, 2127620, 5795522, 359167, 3245385,
+3541738, 766115, 4189204, 1434519, 2072322, 853625, 368830, 1432909, 4952634, -2345052,
+-4916664, 1006096, 5745056, -10121090, 16269336, -7567196, 1600949, 12050068, 12498355, -1369558,
+-7811472, -4394289, -4328254, 535260, -9976672, -8024610, 7632694, 1591285, 4768488, 5860483,
+7043210, -3753802, 4434554, -2254858, 5388037, 23613730, 5281199, -12030203, 10878078, 12490302,
+184147, -2575370, 306553, -6841346, -9192304, -5062156, 12812424, 8405788, 6930467, 10762114,
+1903744, -2387465, -5523328, -14702210, 6235756, 7052337, 3807489, -2721399, -2125472, -5380521,
+1621350, 11126113, 7632694, -13760001, 8420820, -11678016, 11456288, 2041720, 4068945, 4798016,
+-2327336, -6817724, -2275796, 4265977, 20087026, -3745748, 9861782, -5034776, -9584756, 10351408,
+9425306, 1976222, 1894081, 9333501, 3103114, 69793, -1458678, -6769406, -2264522, -9695352,
+2614561, -7646653, -3898757, 13957033, -1096290, -135828, -40802, 6146635, -2509335, 1455457,
+4096325, 6185290, 6949257, 5517959, 2054605, 2635499, 3005403, 5538361, -1261110, -5426155,
+6571300, 2171106, 3483219, 3612604, -136365, -1061931, 119722, -3619047, 1582696, 5945309,
+426276, 245350, -1680943, -3025805, 5152350, 5264556, 836982, 9793062, -1592359, 3871913,
+7664906, -115964, 1914482, -1785096, -3344169, 180926, 1437203, 2236067, 5444408, 1846299,
+4007741, 933082, 743029, 5299453, -1248225, 469762, 4264903, 708670, 1113470, 229244,
+1831267, 5906, 2610803, -595390, 1875827, 231928, 8437463, -4363687, 8580808, 10967199,
+-12723841, 8449811, 4881231, -3145527, 739271, 5780489, -5346161, -11280195, 16764331, 3536369,
+3180423, 3040300, 9942312, 2802466, -10069014, 10616622, -14422500, -16932908, 1474248, 1905892,
+-9304510, -3166465, -27521614, -19604378, -14676440, -5086852, -15094663, -7566122, 5724655, -13705778,
+9525701, 8613557, -11040750, 14119705, 7625715, -2943663, -1417339, -7540352, 343061, -13346074,
+28962038, 8295193, 4540854, -14612016, 3554086, -4633733, 19228568, -4038880, -454730, -17695802,
+17187386, 957778, 6766721, 5368709, 10054518, 5466957, -3816079, 5527086, -8464844, 8454643,
+-3058017, 4893042, -13581760, 30722974, 4804458, -14566918, 7874823, 8809515, 7157563, 10298258,
+9086540, -14169097, 11214696, -518080, 9069360, -7296613, 2778844, -18180596, 7663296, 7557532,
+2396055, -4565550, -13427678, -1145683, 9422085, -12309913, -1498407, -1699733, 93416, 3398930,
+2951180, -3001109, 5380521, -597537, -2386928, 3823595, 3347927, -4073240, -2855617, -8175470,
+-302258, -7633768, 4591857, 903017, 939524, 5423470, 9084393, 5287642, 4394826, 2476586,
+-2927557, -1584843, 328028, -6068789, -4473746, -1675574, -1657321, 2717641, 7467875, 1896228,
+4830228, -1422171, 193810, 1889249, 71941, 1541356, 5760088, -22425634, 6215355, -3121904,
+-2236067, 13221520, -2502355, -2319819, 1228361, 11832635, -3156801, 6878927, -5866926, -6897718,
+-8809515, -11143293, 19202798, 9992778, 6927246, -6102612, -17707076, -21701396, 10361072, 7133404,
+-7746511, 5111548, -5284958, 468688, 19108310, 8328479, -5498095, 10296110, -3554086, 5322002,
+-6449967, 6446209, -14222247, -20855288, -8150774, -9325985, -1641751, 24314884, -19889994, 11424613,
+6524592, 4938676, -4444755, 9548786, 4217658, -19073412, -24276766, -8653822, -11106785, 27382028,
+19812684, -6675453, -12290586, -1052804, -12611098, -2683818, 19894826, 18452254, 10423349, -16335908,
+3459059, -12766790, 19945828, 9473087, -2178085, 40802, 6673843, -11848204, 2595234, 17625472,
+9526774, -15994995, 17287244, -8879845, 10306311, 27521076, 10454487, -6509023, -8218420, 23551990,
+2538863, -1457068, -10769630, 4134443, -5108864, 1498944, -3212636, -572304, -759136, -11756399,
+1421634, -1475321, -3407520, 5151814, -971200, -4163971, 688805, -2477659, 593242, -3071439,
+-4633733, 4064650, -5130339, -3246459, 2342368, 6128919, -365609, 4330401, 3510062, -811749,
+-78383, -5897527, 750009, 2007897, -5060545, 6718403, 3250753, -4076998, -2804614, -2838974,
+-1331440, -6570763, 3841312, 6275484, 229781, -4879083, -2907156, 3280818, -1480153, 3160559,
+4352413, 364535, 1571421, 61740, -15569, -18072686, -7261179, 29464550, 13480829, 16852914,
+3885872, -25027312, 7343321, -20361366, 12896713, 36901824, 12926778, 23042500, -10806138, 6442988,
+10544145, -1415729, 2499671, -9839233, 2134599, 14332306, 475131, -4195646, -13504451, 6975564,
+5158793, -13752485, 6724308, -5405753, 10002979, 14409078, 15336254, 18539226, 1596654, -14900852,
+3657702, 8604430, -457951, 25348360, 1963874, -29770028, -18787798, 8092256, -7792682, -35081292,
+970126, 14532559, 5180268, 1260036, -3457449, 18028126, -14689325, -18146236, -3740380, -6687801,
+-17668422, -1261647, 978716, -10418517, -15254113, -9461813, 444529, 1866700, -21905406, 6154152,
+-9303973, 4954245, 24656870, -3709241, -8966281, 17083770, -3316252, 14172318, -14002667, 9043591,
+319975, -16173236, -18009334, 31670016, 2820720, 4011500, 1224066, -275415, 31768262, 25885232,
+7987566, -2723009, 12279848, -6470905, 3999688, 7180649, -1676648, 9534827, 3945464, 2553895,
+-14896020, 8374113, 4373888, -1138703, 1037772, -5265630, 3917547, 10991895, -2161442, -3997004,
+-6568079, -7178501, 6517076, 7700340, 147103, -294205, -6475200, -6973417, 900333, -9872519,
+1068910, -3508988, 9714679, 3226057, 145492, -6645388, -11317776, -2851858, -5639292, -7773891,
+4000762, 4100083, 8291435, 3042984, 978716, 9425843, -1443109, 25322054, 3419868, -34316788,
+-15446313, 21547314, -30687004, 17681844, -29036126, 2535641, -4520990, -42033772, -5424544, 19164680,
+38973072, 12542378, -5512054, 9603547, -14769319, -4818417, -33757908, -1706176, -22891638, -3133179,
+-4920422, -15721728, -16761110, -5419175, 9812390, -15097884, 10644003, 19588808, -19885162, 7442105,
+6559489, 3628711, -21175800, -3050501, -123480, -22086870, 5905580, 28591598, -2065342, -41008884,
+14683956, -24685862, -63466196, 18132278, -26201984, -32469952, 1817845, -14751065, 4610111, 11452530,
+-6192806, 16954920, -13921600, 14840186, -11479374, -28216324, 225486, 20577726, 19565724, -36727340,
+5488432, -4188130, -27464706, -7124277, -6773701, 48110076, 23940148, 28322088, 12829604, 12455405,
+29657822, 42805792, -9689983, -19918448, -21982716, 4112431, -27321360, -8160438, 14165876, 23245974,
+3238942, 2344515, 19966766, -4363150, -11331197, -15149960, 12021077, 13907104, 13390634, 3396246,
+15357729, 6645925, -9453760, -1823214, -9163313, 14297946, 2230162, -1363652, -15770046, 5050882,
+12557411, 1665374, 184684, 12600360, -9890773, -6288906, 6750078, 984621, -5034239, -9176198,
+-3104188, 14788109, -788127, -31790274, -3075197, -492848, -7453916, -5952825, -8585640, -4888210,
+6876780, 6568079, 3598646, 2534568, -5408438, -628139, -6645925, 55730420, 60240136, -35342748,
+-14003741, 26911192, -12198781, 10869488, -16782584, 5043902, -17246442, -32266478, 43992276, 6445136,
+13805636, 11348377, 4104378, 5814312, 1302449, 8953396, 10909754, -31209380, -25789668, -22528714,
+-21340082, -15919833, -10095858, -8293582, -16793322, -9444633, -14242648, 16194711, 12227772, 6258841,
+-7877507, 3332895, -33121178, -16558710, 8931384, -29992830, -2845416, 14682883, 25868588, 3860639,
+4949413, -11038603, -19487340, -22826140, 18297634, -2426120, 18108656, -64107756, 3908420, -7397008,
+7282117, 39302708, 4707284, 6614787, 4308926, -11426760, -13341779, 427886, -2740189, -35959076,
+7592966, -13145284, 32172526, 2224256, -35558036, -48127792, -30106110, -6016176, -34013992, -33076080,
+-20740398, 23444616, -6238977, -22758494, -30971546, 25789668, -3510062, 15287399, -17527224, 9405442,
+25141128, -16777752, -24651502, -10194642, -12850005, 26586384, 5340255, -11571716, 10190884, 7839926,
+22810572, 14381698, 6436009, -20444582, -20726438, -4440996, 2087891, -5316096, 3376381, 14262513,
+-3441880, -1152125, -10721849, -7563438, -6019397, -10758356, -2410551, 4465692, 6134824, 33549600,
+1835025, -8382166, -3085934, 4503273, 10042170, -594853, 16136192, 6962679, 37832220, 5933498,
+-786516, 1391033, 6489696, 1879585, -1802813, -10962367, -16832514, 62400508, -36721972, 23473070,
+44129716, -21665962, 5994701, 35179540, -45254460, 1464584, 4764730, 21551072, -50709068, 2473901,
+3134253, 16253767, -22271552, -54224, 8781598, -30004104, 4164508, -2592550, -5792837, 15993921,
+-5152350, -4821101, 6662031, -4236449, -5286568, 15673409, -15208479, 4065724, -6403260, 3739306,
+-9823664, -5673652, -11927661, -192200, 2050847, 30991410, 10201621, 14872398, -3390877, -10201,
+23021024, -1351841, -9007083, 12662100, 9392557, -10848014, -30633318, 27504434, -30529702, 4583804,
+14351633, 18733574, -30043296, 31495532, 51034948, -28397786, -52266532, 69302520, 24443196, -34812320,
+15729244, -33530810, -41322416, -20912196, -7703024, -43380244, 34613680, -60317448, 17818746, 28182502,
+-23953570, -80507552, 75587128, -13598403, -19697794, 50057844, -50485728, 25574382, 42925512, -13356275,
+-11979738, 12938589, 14642617, -8533563, 5181341, 3966402, 13506598, -7198365, -5118528, 14823543,
+-186294, 2954938, -1767916, 2393371, 12082280, 8562554, -1805497, -11410654, 17777944, 18882824,
+-3810173, -17168594, -1910187, 7701413, 1639067, 11420318, -79457, 9919764, 4293357, 14787572,
+11197517, 12328704, -19254338, 4363150, -501974, 216359, -56371, -12241194, -20783346, 29647622,
+-5007932, -28541132, 10035728, 6178311, 2797634, -5219459, -19429358, -15075872, 34979824, -22874996,
+-18271864, -36584532, -16787954, 21935472, 17039210, -9671193, -12106976, 11741904, 29027000, -12305618,
+21922050, 26248692, -18438832, -2538326, 16057272, -4008278, -537, -5151814, 1470489, -26561152,
+7385197, -5792301, 972273, 6556805, -5302137, 5635534, -11011222, -22222698, -10516227, -38788388,
+4929012, 48318, -5748814, 7354058, 3765613, -2400887, -8816494, 15782931, 24774446, -25840134,
+38036768, -4142496, 5121749, 5646809, 33625836, 15552077, 24617142, -30688078, -7600482, -5636608,
+43814036, -40697500, -13911399, 20118164, -1430761, -47016472, 3235184, -9577777, -8028368, 21689048,
+23638426, 1813550, -17678622, 38270844, -16022912, 63719060, 871878, -29329794, -9127, -4959077,
+-33339684, 64020784, 12860743, -9359807, -75572632, -37613176, 21323438, -27660664, -25024090, 29773250,
+-110795120, 2964601, 21859236, 16205448, -8944806, 31338228, -19050864, -2299955, 163746, 16407312,
+-4595078, 3492345, 22100828, -1365263, -5555004, -6812892, -7932268, -173409, 2488934, -1293859,
+-3333432, 14448270, -19973208, -4304094, 2384781, 3512747, -11964168, -20069846, -5148055, -6037114,
+-2894808, -1508607, 3922379, -22284438, 1726577, 17216376, -10616622, 13205951, 9984725, -9613211,
+606664, -6991133, 2830920, 4967130, -10479183, 29603062, -14297946, -13012140, -17047262, -15463493,
+-7722888, 13899051, 18979998, 11448235, 47673600, -9571335, 10555956, -4927401, -25082072, 12076374,
+-16097537, -9233643, 9587978, 21185464, -23011898, 24459302, 2546379, -1598802, 50272592, -10623065,
+-5919002, 37553584, -24533926, 33130840, 14156749, -8296803, 13064217, 13743895, 30954366, 32119376,
+9150965, -26744224, 54912232, -55746528, 1583232, 50013820, -27403502, 10781442, -6259915, -6911140,
+-58653148, 39257612, 10212895, 17210470, 18321256, -12519293, -29327648, -22245246, -17973902, 2367064,
+55206436, -26844, 43247636, -14880451, -33742336, 1431298, 12257300, -27917288, 44395468, 17742510,
+21691732, 43670152, 28307056, -47604880, 17755932, -68102072, -83837224, 1314797, 70164736, 43707196,
+5465346, -50248432, -178121424, -33159296, 54786064, 62402652, 88866096, -4987531, -113190640, -64191508,
+-59064392, 89855544, 68834904, -12940736, -45348948, -26896158, -55100136, -7493108, 70536248, -7354058,
+16355772, 11316702, -11784317, -26124138, 38368016, -16149614, 21330418, 15255187, -1633161, -36316096,
+48924508, -19881940, -9429064, 13684303, 12583180, -27105538, 294742, -8869107, -10166724, 2836826,
+-1090922, 19102940, -35236448, 18044232, -42374684, -7246147, -7159174, 49661096, 1389959, 13050795,
+-30758408, 15442555, -11616813, 21604222, 26476862, -13448079, -30566208, 10376641, 7842074, 25085294,
+21161840, -5706401, -8346195, -4319664, 17398912, 2731062, 17534204, 7287486, -43545600, 36702108,
+-27358942, -4665945, -17697412, 17106318, -19891068, -762894, -2046552, -5321465, 4139812, 18850074,
+-19769734, 8815420, 1593970, -4486094, 311385, 13332115, -16717086, -4472672, -2427730, 27584428,
+-27796492, 7494718, -12173548, 18324478, -20295868, -5653251, 6975027, -3805341, 3862249, -13007308,
+-2321430, 12017855, -3610457, 4729833, 3764539, 2629594, 14854681, -13622563, 9313637, 10869488,
+13253195, -1708860, -30802432, 4101694, 3638911, 12700218, 11431055, -2078227, 3046206, -5020280,
+-14024679, -2214056, 6386080, -2466385, 18664854, -15047955, -5076652, -30197378, 9030169, 3464965,
+-4835597, 6972343, 5878737, -249645, -15742129, 5080947, 15273977, -2790655, -2295660, 6223408,
+-6251325, 11650099, -7131257, 2148558, -14477261, 7024419, 2646774, -2079301, -4023311, 8557185,
+-4076998, -5832029, -8776229, 9298067, -459562, -4330938, -2040110, 9262634, -3673808, 4226248,
+-5111548, -2780991, -579821, 564788, -206695, -4725001, 427349, 403190, -4307316, 4531728,
+-4098473, 12063489, 1743220, 1845762, -16481937, 4883915, -468688, -6246493, 7259569, 14136348,
+-10194642, -1973001, -540092, -6930467, 10819023, -1523640, 1399623, -6933151, 3613141, -1231582,
+1166621, -4300336, 4214437, -4287988, -24865176, 60288456, 16434692, 14898168, -7972533, -19297824,
+-18568218, 5274220, 11705396, 1850057, -687732, -61203, -8807367, -1598802, 4233227, -2330557,
+1822677, -938450, -8823473, -454730, 4369593, 6891275, -6141803, 1696512, 4410932, -8787503,
+14430553, -8756365, -7647190, -7589207, 1970853, 4227322, 6694244, -7300371, 9339943, -13451838,
+8916889, 7963406, -5929739, -602906, -432181, -1537598, 6948184, -7475391, 2178622, -2382096,
+-9689446, 13734232, -7672422, -247497, -5686000, -1763621, 9560597, -12475269, 5077188, 3476239,
+-5462125, 4602595, -10662793, 3106335, 4424890, -7900593, 181999, 4268661, -7330436, 7366943,
+-10116259, 2821794, 10347650, -15143518, 4352413, -5775658, 1035624, 5973226, -4538170, -2301566,
+1060320, 1315871, -917512, 4275640, -3249680, -2775086, 2065879, -2479270, 1350230, -943819,
+1778653, 1698660, -2460480, 1245541, -476741, 2221035, -2033130, -550830, 1473174, 65498,
+-1181116, -3506841, 2218351, 2354179, -540092, -2419677, 2311229, -103616, -1107565, 2409477,
+-5032628, -1004486, 2825015, -3604551, 5251135, -3213173, 233002, 8750459, -2554969, 6307697,
+-3592203, -335007, 6932077, -4855461, -1849520, 9045201, -46580532, -109298864, 30946314, 107009648,
+73595872, 116361936, -64772400, -68946576, -94017904, -108833936, 2345052, 83985400, 86769080, 90589984,
+17790828, -29925184, -59389196, -85243288, -72248864, 5636608, 56138980, 66588636, 59915332, 14341970,
+-16546362, -10331544, -46770048, -52313776, -22064858, -1418413, 20133732, 44126492, 21559126, 16010027,
+22106196, -11028402, -26233660, -4290673, -41945188, -19674708, 469225, 6664716, 31980864, 37235220,
+3310883, -5636071, -3490735, -27469538, -7437273, -381178, -5710159, 9514963, 18402862, -3919695,
+-1453310, -7217693, -11481521, 2359011, 1140314, -1251446, 20763482, 14055280, 5196911, -526670,
+-19572166, -28302760, -22379464, 1618129, 21070036, 18087182, 23737748, 3230352, 620623, 5399848,
+-29453276, -16764331, -13848585, -2516851, 22604950, 5113159, 7585449, 21088290, -12167642, -17702782,
+-4119411, -3020973, 6539088, 7603703, 2379412, 4246112, 1860258, -10866267, -11260331, -2744484,
+-2147, 8100845, 11720966, 3848291, -1654636, -2542084, -3333968, 2939368, -3287798, -13817447,
+-2168422, 3262028, 6405944, 13765370, 3352759, -2849711, -6612102, -11311870, -2474438, 1145146,
+3689914, 6477885, 8087961, 6374805, -3264175, -9800578, -10334228, -9014063, -1032940, 4493610,
+4971425, 13299366, 13650480, 6658810, -2946348, -16777216, -17749490, -8223252, -6220724, 6276021,
+16569984, 12283070, 5309654, 72478, -1319092, -2157684, -5069135, -8332237, -8016020, -3419331,
+1175747, 3473555, 5557151, 8075613, 7699803, 2952790, -2989834, -6476811, -7013145, -5205501,
+-1972464, 1068373, 2479270, 2449742, 2974802, 3425237, 2632815, 74088, -2011655, -3477313,
+-2837900, -1035624, 598074, 1379758, 238371, -153545, 243739, 357556, 1023813, 1087701,
+-36507, -1146756, -477815, 893353, 228707, -1025960, -842350, -139050, -695248, -1144072,
+-183073, 2070711, 2803540, 870805, -689342, -1047972, -746251, -474057, -807454, -1125818,
+-443455, 791348, 1271847, 716723, 583042, 700080, 132070, -448824, -947577, -966905,
+-679679, -226560, 466004, 782758, 572841, 466004, 233539, -126165, -473520, -655519,
+-499290, 16106, 340376, 379568, 280784, 84289, -178241, -394063, -279173, 42413,
+195421, 209380, 202400, 88584, -103079, -182536, -114354, -53687, -13959, 30065,
+41339, 28991, 13422, -5369, -20938, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-4407710,
--2930242, 1226213, -1134408, -1394791, -2151242, 518080, 4252555, -1371705, 9127, 431644,
-7286949, -147103, 1388348, -3003256, -2093797, -747861, -1973001, -2112050, -1990181, -1347546,
--1891933, -2486786, 2080375, 3466039, -1915555, 527207, 130460, -3935264, 100395, -87510,
--2804077, 5268851, -2704219, 2996277, 1130113, -807454, -3036005, -2792266, 2697240, -1408749,
--1034550, -4160750, -1074816, -384400, -1978369, 5558762, -1228898, -346819, 2306934, -402653,
--4646618, -2376191, -4099010, -2738579, 6317897, -1776506, 7027640, -25233, -310311, -1273458,
-801548, 300648, -4209068, -4460861, 3231963, 375810, 2190433, -293668, 2553895, 1586454,
--4081830, -20401, 1329292, 2196339, -29528, 1855426, 3342022, -4479114, 1159641, 1161789,
--2270964, 8053, 994822, 3229279, 2094333, -2234994, -706522, -112206, 725850, 1034550,
-750546, 853625, -619549, 449898, -1251983, -770410, -49929, 1652489, 688805, -35433,
--151398, -1097901, 617938, -70867, -415538, -79994, 544924, 261456, 380105, 1073205,
--390305, 481573, 1231582, 9575630, -804770, -1217086, -2520072, -5318780, -6548752, -5996848,
-609349, 5242545, 1801202, 7016903, 2377265, -3263638, 802085, -8471823, -7182259, 3257733,
--2557653, 4611721, -490163, -3795677, -1916629, 9212168, 2015950, 3862786, -231928, 2944737,
--1436130, -1194538, 1781338, -1333051, -4101694, -354335, 1428077, -527744, -296890, 5839008,
-3593277, -6393596, 91268, -4076461, 6624987, 3892851, 225486, -2428804, -2493229, 3017215,
-1660542, 4927401, -4682051, 7854959, 9652939, -2730526, 9403294, -69793, 4902705, 3024194,
--1802813, 1582696, 7526394, -943282, -5169530, 4323959, 1359894, -113280, -642098, -957241,
-270583, 4366908, -2896419, 1549946, 1132261, 2284923, -3721589, 4112968, 911607, -425739,
-1264868, 549219, 350577, -235149, 887985, 2392834, -1784022, 929860, 595390, 972273,
--1633698, 52613, -2588255, 380641, 1133871, -1524177, -992137, 275952, 642635, 762894,
-172336, 689342, -59056, -48855, 1484448, -208306, 329102, -8319889, -6500433, 2073932,
--3670587, 2658585, -4592931, -6533182, -6037651, 868657, -4504347, 4168266, 3060701, -5793374,
--1174674, 2393371, 578747, 2938295, -1692217, 3039763, 3735548, -5137855, 1675574, 1727651,
--4125316, 2465848, 449361, -4865124, 3655554, 3533148, -1717987, 3858491, 571768, 3155190,
-2851322, 1213328, -1818919, -426276, -5846524, -1737314, -2895882, 3121904, 3274376, 1316408,
--9380745, 1829119, 3981435, -2091112, 6629819, -5370320, -7151121, 581431, -2108829, 2328946,
--5101348, 9372156, -473520, -3087545, 931471, 153545, 5332202, -265751, -3085397, -168577,
--2090575, -2830920, -3618510, 1746978, -6553047, 712965, 252866, 1967632, 4399657, 1483374,
-3133716, 4876399, -3297461, -543850, 1090385, -4097936, 2836289, -1370095, 2418067, 1962800,
--1275068, -937377, 3553549, -1109712, -3228742, 499827, -339302, -79457, -1742146, 2624762,
--1990181, 1024350, 968515, 1359357, -514322, -494995, 156229, -949725, 386547, -636729,
-59593, -378494, -978716, 1309428, -501437, 321586, -180389, 124554, 10201, 273267,
--1670205, -19943144, -286152, -2399276, 14120779, 348429, 891206, 3042984, -1921998, 7130720,
-1790465, -7545721, -4037806, -8859981, 1620276, -588411, -3014530, -2540473, -3219615, -2044404,
-10995116, -5007932, -2449742, -2822867, -8308078, -326418, -2010582, 2879239, 4182225, -1327145,
--16643, 2467459, -2520072, -671089, -1050120, -2996814, 3386582, 6775848, -769336, -1091459,
-5375689, -7036767, 4625680, -5613523, -11333882, -7183333, -11287711, -1700270, -6418829, -4314295,
-1233193, 4545686, 2334852, 3256659, -1628866, 3944928, -4769561, -1058710, 4150549, 11811,
-5747203, -2350958, 1803886, -3968013, -2972654, 2994666, -6874095, 1886564, 5248987, -6716255,
-757525, -1755031, -3069291, -4394289, -3927211, -1291175, -1686848, 1102196, 4922033, -2308545,
-1597728, -4027069, -4264903, -3373697, 1736777, 2352032, 700080, -1032403, -1175747, -1783485,
-1098975, -1506460, -1270237, -585726, -1170916, -121333, 341450, -2164664, -413391, -224412,
--1568200, -393526, -642635, 47245, -179852, -2972654, 479963, 1307281, -460098, -1146756,
--8590, 1908576, 1081795, -692027, -2003602, 1187559, -144418, -657667, 12809203, 95026,
--7132867, -6852084, -2345589, -4993973, -1923609, -3751654, 984084, 632971, -5642514, -3308199,
--6198712, 11773042, 4989679, 1101122, -664109, 6393059, -9514426, -132070, -200790, -5994701,
--8007430, 7187091, 144955, 5134097, -8033737, -3493419, -2800319, 2812667, -288300, 3453691,
--5543729, 1697049, 2265595, -5974300, -5773510, -5195300, 1245004, -1695438, -1618666, 5091147,
--1489280, 585726, 89121, -975494, -5731634, -3466039, -663572, -8580271, -5628018, -4507568,
-2391223, 1675037, 3436511, -822486, 1501091, -68719, -885300, 4033511, -3113851, 7005629,
-973884, 2141578, -924492, -2274185, 2771328, 2188286, 5505075, -1633161, 856846, 3395709,
--1995012, 99321, -7286412, 3461207, -5611375, 3583077, -4150012, -3997541, -7858180, -1498407,
-1981591, 894427, -1331977, 1864016, 784905, 3622805, 576063, -1054415, 3131568, 1752884,
--2806224, 721555, -2284386, 2506114, -1009317, 455803, -635655, -245887, -2018635, -35433,
-98784, 418759, -1191317, 977105, -1701344, 703838, -324807, -800475, -1512365, 429497,
--1023276, 2158221, 575526, -522912, -952409, -813359, 1620813, 1140314, 1547262, 201863,
-146566, 862215, -1800128, 15177878, 14371497, 10742787, -3550864, 3974455, 5467494, 3233574,
-3112778, -5251135, -4575214, -6892886, 6250788, -6464463, -743029, -4687957, 8273181, -9056475,
--6745246, -3340411, -1413581, -4964446, -7487739, 2204929, 452045, 492848, -9091372, -4990215,
-2443300, 1966021, 2650532, -2432025, -3580929, 335007, 2803540, 3560528, -2522757, 3387656,
--4803921, -1245004, -11834246, 4399657, 1481227, -2005213, -2203318, -8725226, -3956739, 1142998,
--2078227, -12272332, 6690486, 2777770, 31139, -3289945, -2539400, -5175436, 1635309, -1817308,
-3589519, -745177, -1728188, -6972343, -1314797, -675921, -3819300, 7712688, -5538897, 127238,
-4600447, -1896228, -5994164, -3369939, 5221070, 7533910, 3748970, -557272, -190052, 3992709,
--8071318, 3316252, -826781, -380641, 406948, 1758789, -435939, -326418, 435939, -1575179,
--4864051, -1312649, -1467805, 1499481, 1071058, 572841, -1868311, -989453, -2162516, -2692945,
--646393, -98784, 3255585, 309238, 465467, 401579, -1101122, -653372, 1511292, -1696512,
--239981, 581968, 954557, -2027761, 48855, -181999, 1215476, -1459215, -324270, -862215,
--1391569, -3118683, -1408212, -156766, -1333051, -3758, 182536, -157840, -1698123, -688269,
-18285286, 6129992, -2680060, -2138357, 6415071, -12362526, -2334852, 10004589, 5009543, -6979322,
--163746, -4736275, 1923609, 7694971, 18894634, 6238977, 14714021, -5217849, -1104344, -14327474,
-4852240, -4180077, 4022774, -6274947, -340913, 606127, -2244657, 5144297, -2315524, 2457795,
-6318971, -4847945, 2844879, 8087424, -2215666, 2707440, -2684, 3253438, 4415764, 4554813,
--24318642, 8892193, -2822331, -11377905, -2002529, 6956237, 2113124, -8787503, 4730370, 6937446,
--14329085, 1156420, -4055523, 8429947, 1908576, 6965900, -1715839, -5000416, -10068477, 625992,
--6096706, 18988050, 3490198, -3106872, 6308233, 809064, 6103149, -14919643, -1984275, 2318746,
-4609574, 1114007, -7005092, -1085553, 2532957, 6661495, 5587753, -4617090, 104153, 6556268,
--306016, 3098282, -2301029, -1103807, 4561792, 468151, -381178, -602369, 206158, 2272575,
--2189897, -932008, -302258, 1774895, 1666984, -192737, -631360, 4552129, -1468342, -741956,
--2414309, 350040, 1195612, -1149978, 51540, 1430224, 1812476, -1571421, -769873, -2634963,
-164283, 2164127, -1051730, 441845, 942208, 1148904, 3606162, 520228, 1745904, -56371,
--1622961, 2436857, 542240, -21708376, -23809152, -8151848, -1858647, 437550, 5057861, -10167261,
-3207267, 11988327, -6878927, 6382322, 8297340, -5780489, 176631, -2814277, 10147397, 14159970,
--6784438, -7989176, 7116761, 688805, -6800007, 3223373, 110595, 1780264, 2021319, -3628174,
--2651069, -15121506, -781684, -4319127, -352187, -439697, 10281078, 3062849, -18467822, 319975,
-8898098, -10086731, 2653753, 10872710, -2394981, 3835943, 213675, -2835215, -7023346, 13976897,
-11742441, -8919573, 4670777, -3306588, -471910, 4363150, -3109556, 3663607, -5538361, -610422,
-11785390, -3330210, 2485176, 5592585, -4039417, -9672266, -426812, 3353296, 1710471, -4634270,
-602906, 2639258, 4181688, 8652748, 5324149, 9519795, 5002027, 1864016, 4399121, -1527935,
-8544837, -248571, -6781217, -9074729, 1101122, 2990908, -1613297, 6844568, -3539053, -3641596,
-2685965, -820876, 707596, 384400, -4234301, -549219, -2561411, 3136937, 1363652, 2531346,
-4833449, 649077, -1748589, -7005629, -571768, 1681480, -1831804, -681826, 680215, -1521492,
-1473174, 1615982, 166430, -1611687, -1219234, 3502546, -523986, 1672890, 820339, 1171452,
--2511482, -2565169, -1585380, 658741, 1148367, 2124398, 1491964, 1071594, 921807, 2658048,
--722628, -2492692, -23599772, 25866440, -1731409, 16564615, 1064078, -9953050, -3133179, -5854578,
--7050189, -1104880, 251792, 11924440, -2134599, 8127689, -8603356, -654446, 1860795, 1716376,
-746251, 10339060, 10310606, 3639448, 1472100, -1532767, -2251100, -805843, -1951526, -17770964,
--6187438, 7897371, 5036386, -2157147, 700617, -8514236, 4019553, -10394895, 2042794, 16007343,
-1575716, 3322694, -13660143, 7002944, 6096706, 1536525, -9222905, -4148402, -4394826, 548682,
--8295193, 8104067, 9958419, 5927592, -1071594, 15000173, 5214627, 22042846, 8519068, -6133214,
-18354542, 232465, -6919729, 13223667, -2347200, 4242891, 8289824, -6284611, -5382668, 12219719,
-13174812, 7694434, -10972568, 3927748, -259846, -5178120, -9038222, 6411850, 11646341, 6951405,
-16980690, 2184528, -3926137, -3995930, -10707353, -4179540, 6394670, 846645, -2080912, 246961,
--6732361, -4784594, 779000, 1518808, -363998, 6920266, 5458904, 2319282, 86436, 1910724,
-3221226, 1568200, -3423626, -1493038, 826781, -916976, -1266479, 2823941, 133681, -1002338,
-2266669, 757525, 635118, 784368, -2303176, 395137, 6070400, -2966749, 3779034, 1668058,
-33286, -2946348, -3231963, -1741072, 1185411, 5758478, -12549358, 16703665, -4818417, -10961293,
-3675418, 7270306, -7277285, -3679713, -15371688, 6449431, -5637145, -1843615, -14093398, -6182606,
--4782446, -2398202, -6358699, 3338800, -2857764, -3457449, 3308199, 4672388, 8198019, 8059506,
--3489661, -2889976, -11368778, 4494147, 203474, 7495792, 2036888, 2024003, -2592550, 3013457,
--7119982, -5990943, 3318399, 1726577, 3367254, -13829795, 4609574, 9086003, -60130, -12176769,
--12772159, -9904195, -29412472, 4177930, -3420942, 14244259, -6998649, 11839077, 3751117, 830002,
-15189152, 2345589, -1803886, 10972031, 4006668, -14903000, -7468948, 1809255, -4811974, -8448201,
--5206037, 19270444, 8797704, -9032853, -1157494, -5062156, -2547453, 2840047, 13530221, 274341,
--3712999, 18009872, -6511171, -16307454, -15655156, -18458158, -3355980, 1444183, -558346, -3222836,
--2339147, -7874286, -1634772, 2345052, -2535641, -2308008, 1475321, 1546188, -11713450, -4745402,
--9195525, 469225, -3180423, -2914135, -4971962, -1489280, 1201517, 7096360, -32212, 8695161,
-4151623, 6397354, 562641, 3034395, -3085397, 5838471, -156229, -4130148, -6352794, 3631932,
-440234, 2030446, -1762547, 1186485, -2100776, 2051384, -849330, 2423435, -646929, -971200,
-1380832, -277025, 7275138, -12087112, -3051038, -3249143, -1599339, -853088, 32056026, 5239323,
-11708081, -5702643, 10222022, 20656108, -17733920, 26838714, 15896748, -7194070, 220117, 1617592,
--9676024, -16204375, 1092532, -9399536, -14471892, -6487548, 1261110, 13422, -1799591, -6505802,
--1110786, -6334540, -465467, -7321309, -558883, 5000953, -11381663, 6229850, 9536438, -7453379,
--6947110, 4927938, 3702262, -656056, 28770912, 2534031, 19168976, -13808320, -1369021, -16740709,
--12316356, 2953864, -12353937, -16922172, -11314018, -12853763, -2836826, -3425773, -14304925, -15511274,
-20201378, 3175055, 1235340, -2745021, 10445360, 5818607, 12606266, -1255204, 11912092, -6684043,
-2681670, -22363358, 18227842, 8834748, 1391033, -12281459, -972273, 5547487, 1116692, 2138894,
-8977019, 12592307, -9803263, -12534862, -8305393, -1959579, -263067, 1374926, -7421167, 843961,
-2052458, 5191542, 6684580, -849330, -4230006, 7032472, 3408057, -5242545, -427349, 2543695,
--3204046, -5539971, 931471, -1876364, -1899449, -164819, -2506650, 6448357, -6875706, 3744675,
--273804, 7132330, -7526930, -1802276, 1166084, -1884954, -2924873, -1192390, -5992553, -6483790,
--1321239, 685047, 1818382, 2357937, -4503810, 4469451, 3274376, -2651606, 3885335, -783295,
-2183991, 198642, 2157684, -1801202, -1527398, 614180, 1067836, 2618856, -442919, 3592740,
--1770063, -1241246, 537, -1301375, 2267206, 2306398, 15679315, -6322729, -5145908, 17498770,
--14630269, -11142219, -2691334, -8851391, -1371168, -17428440, 3972308, -10710038, 8311836, 1219771,
-2866891, 10049687, 2922188, 7109245, 9740986, 9256191, 7646653, 12948253, 1578401, 8819715,
-7903277, -9352291, 16326781, 4043712, 7572028, -8726837, 12750684, 5783711, 8966818, 2316598,
-3227131, -1591822, -11675869, 3040300, 6670084, 7871602, 8578123, 1893544, -14208826, -8953933,
-10293963, 5636608, 2374580, -5357972, 7138773, -5122286, -14241575, 21032454, 12849468, 9424232,
--8028905, -3910568, -10598369, -33097018, -961536, -4566624, 4323959, -7682623, -8282845, -14558865,
-2629057, 4755066, 18602040, -14570140, 5981279, 340376, 8589935, -12817793, -15770046, -9563282,
-10267119, 3190624, 3246995, 5507222, -4290136, 1889249, 12030203, 4341675, 6120329, 7728257,
--2997350, -2699924, -4963372, 212064, 5294084, 6577743, 304406, 2782602, 1372779, 1148904,
-4984310, -2943126, -2546916, -4189204, -2343442, -4336307, -66035, -6638409, -2648921, -7020661,
--323733, -4175782, -1155346, -860604, -2393371, 2178622, -1700807, -9034464, -1286880, 3805341,
-4095788, 7693897, -1039382, -4343823, 2234457, -1620813, -6582038, 6309844, 5300527, 5164162,
-11772505, 7816304, -543850, 583579, -2516314, 3272228, 1048509, -27091580, 15087146, 16077673,
--8443906, 13667660, 4504347, -22891638, -4293894, 29402272, -4524211, -20046222, -3387119, -2189360,
--17462800, 11729019, 2198487, -8943196, 12654584, 8309151, 30327838, 17666274, 179852, 1971390,
-28595356, -7690676, 7016903, -12082280, -17282948, -5343476, -11835856, 2324651, -1137093, 5549098,
--1176821, -2345052, -5181341, 22502408, 811212, -18216030, -14530948, -3511136, -3985193, -908386,
-7144678, 20518670, 12993887, 4127464, -12903692, 15904264, 29258390, -6511708, 13133473, 12299713,
-35315904, 6513318, 6503118, 10509785, 14890115, 8158827, -12505871, -12006581, 7910793, -22082574,
--13430363, -15896211, 14555644, 12732431, 8790724, -3795141, 10657424, 22601192, -13312251, 17954574,
-17843442, -2680597, 17535814, -16988744, -7670812, -6080600, 37044092, -18456548, 18067316, 11238319,
-6484327, 4984310, -16790638, -1865626, -13261248, 13721884, 12984760, -433792, 713501, -6889128,
-9642738, -4099546, 729608, 3517578, 3801583, -243739, 5785858, -4381404, -2500208, -1870458,
--4407174, 1678259, 3392487, -3284576, 1413581, 4090956, 7314330, 963146, -7227356, 2761127,
--7813083, 1161252, 6567005, 4256850, 6961068, -1436667, 11378979, -4792110, 8334384, -2432562,
--3039226, -1707250, 228170, 9205726, -7074885, 4333085, -457951, 4395899, -5811091, 1297080,
-2000918, -2697240, 12066174, -6914361, 5221070, 5700496, 20216948, 36251136, 3677566, -3995393,
-3623342, -2172717, -6247567, 875100, 3565897, -9111236, -12115566, 3830037, -6411850, -3556770,
-9043054, -651761, 18004502, -9790915, 17644262, 8616241, 1505386, -10565083, 3122978, 17683990,
-4910222, -9233106, 3269007, -2316598, 242666, 10332081, -14790257, -7833484, 15948824, 200253,
--4271882, 13939316, -963683, 4847945, 2930242, -13604309, -24834038, -5325760, 8247411, 15623480,
-3128884, -12195560, 15444702, -5260261, 31614180, -16252693, 21179558, -12639015, 7397545, 18313204,
--27481348, -28198608, -475668, -8039642, 6977175, 8886287, 1004486, -4211753, -16919486, 11142756,
--2700461, 19893752, 8728447, 18524194, 4777078, 10762114, -4829691, 14217415, 4857071, -8585103,
-1436130, -288837, -41419592, -1258962, 6931541, 9910637, 17083232, 14711874, -5114769, 1210107,
--3368328, 2731062, -327491, -4595615, -11221676, 4716948, -6685654, 14244796, 1352915, 2771865,
-6674916, 4141959, -4821101, 4113505, 9996536, 9065065, -3427921, -1633161, 1137630, -2177549,
--1843615, -6427419, -1522029, -13483513, -2239289, 4666482, -11635066, 7857643, -8876624, -6860137,
-1647657, -6971806, 6769406, 2831457, -3073586, 4728759, -932008, -703838, 2597918, 9997073,
--7300908, 1627256, 1076426, 4471061, 2778844, 2094870, -4131759, 23893976, 30876520, -6633577,
--1109175, 10950019, 40814000, 1231045, -24016384, -9549323, 4977330, 4728222, -7543037, 7882339,
--5428839, 12720083, -20362440, 1173063, 12799003, -8432095, -9149354, 1879585, -20131586, -6120329,
--6514392, -32052804, -27091044, -15628312, 11915850, 14059039, -2385318, -22774600, 2636036, 926102,
--751619, 4702453, -11435350, 27592480, -7788923, 3619584, 30493730, -26525182, 12899397, 4630512,
--9246528, 11198053, -7153805, -21476984, 492848, 18824842, -8321499, -13439490, 7826504, 2658048,
-17861158, 276489, -27435714, 2343442, -16207596, 27214524, -9787157, 4243428, 6684580, 3400004,
--3860639, -17414482, 7362111, 18592376, 5377299, 19180788, -27834072, -15167140, -4573067, -79457,
-3015067, -21322366, 19262928, -2468533, -20478404, -6655589, 12968117, 12243341, -11340324, -15569256,
-15567109, -12351789, -7856032, -93416, -1926830, -1513976, -1017370, -4381404, -871878, 8020852,
--1777580, 7392176, -8228621, 5924371, 7490423, -1788317, 4042101, 1453310, -1526324, 337155,
-1013075, 13612362, 694711, -2306398, 1134945, 3229816, -6681359, 2659122, -8543227, -405874,
-9873056, -3267396, -7784092, -2587718, 4423280, 444529, 319975, 6137509, 459025, -7479686,
--4058744, 14519674, 10362682, -3089155, -615791, -146029, -21130702, 31061204, 885300, -53202296,
-21311090, -7313256, 4146254, 5427765, 7143068, 13059385, 4760971, -9633075, -2326799, 13151727,
-8892730, -10564546, -565325, -8382166, -4345970, -26132728, -3335042, 12576201, 15618649, 3510062,
--6199249, 17301202, -17823578, 19713364, -11359115, -6381785, 2349347, -6118718, 5255966, -15728707,
--21233244, -23763518, -7606387, 12303471, -4752382, 118648, 14471355, 4017405, 2528662, -455803,
-491237, -5006322, 194347, 15595026, 9601399, 16457778, 13960254, 16510391, 11236708, -9819906,
--6261526, 4054449, -1052267, -18977312, 12759274, -3436511, -17927730, 22502408, -254477, 3655554,
--626528, -8188355, -2702071, 9448391, 13690745, 11385421, 348966, 6972343, -22963042, -3264712,
--8183524, 12492449, 4313758, -6403796, -7304666, 28913182, -8815420, -9910100, -3133179, 4659503,
--7159711, -19059454, -1075352, -3269007, -10296647, 17854180, 3644280, 6717866, -5488432, -961536,
-4159676, 1067299, 5253282, 5659157, -1855426, 3467649, -3438121, 3930432, 1500554, -3165391,
--2390686, 2908230, 4110821, 1109175, -3629247, -3021510, -3262028, -2419140, 88584, 2033130,
--2953327, -3593814, 858457, -294205, -635118, 3089692, -1442572, 4900558, 1502165, 14375792,
--1203665, -1818382, -3156801, 1750736, 89657, -6059662, -7962333, 72469520, -71069360, -3511673,
--77274512, -11915313, -29359860, -3527242, 18913426, -9533754, -21363168, 33789580, -9092446, -5825050,
-1149441, 10451266, -1175210, 28092308, 18592914, 11178726, -16525960, 1155346, -11267310, -11438035,
--7656853, 468688, -3511673, -3049427, -9327595, -2033667, 15519327, 1955821, 10276246, 10288057,
--807991, 13717589, 19937238, 1112933, -4070019, -10354629, -12409771, 5006858, 5450314, -10263898,
-16893180, -22274774, -22566832, 2525441, -7894687, 12108050, -20924006, 8966818, -40242232, -21417392,
--32216550, -2765959, -15901580, -1415729, -9706626, -12080669, -10530723, -940598, 2728378, -31457952,
-3587908, -6874632, 3611531, 161598, -14553497, -25591026, 17707076, -15394237, -2751464, 15859167,
--1606318, -4954782, 10482405, 13146895, -2710124, 13095892, 8567386, 15822123, 8720931, 16010027,
-7577933, -9472014, -2639794, -8342974, 381715, -6906845, 1479616, 5806796, 8195872, 8987756,
--3984656, 4182225, 2996277, 5897527, -1396938, -2237141, 3075734, 7066832, 930397, 1651415,
-7783555, 4002373, 8012262, -1133871, 369904, -818728, 3908420, 5555540, -1008780, -9212705,
-5055714, -1531156, 1963874, -2886755, 1281511, -2612951, -1364189, 491774, -7684770, 133144,
-10522670, -6570763, -6940131, 914828, 3591667, 3673271, 1241782, -7271917, 58631672, 29427506,
-14221174, -14234595, -7376070, -30670362, 6722698, 24515674, -4820027, -5890548, 40206800, -7261716,
--8966818, 19858318, 29431800, 5036923, 30019138, -7577933, 4356171, 17673790, 20013474, 31561568,
-25556666, -1420560, -11434277, 9433896, 11502996, 10817412, 13526999, 23580444, 11549167, 30007862,
--11697880, -882079, 8767102, 8081518, 25447144, 14725832, 27275190, -19775640, -6226092, 10808285,
--21246666, 17044040, 17370458, 16577500, 7068980, -21477520, -7843684, 40459664, 10409390, 27245126,
-22651658, 24773908, -5137318, 32866700, 51583096, 17675402, 4519380, 36107792, 24982214, -14044006,
--8619462, -17635672, -14056891, 15134928, 17677548, 1429150, -14963666, 198105, -13383118, -735513,
--5998459, 8618926, -31428960, -3702262, 3136937, -16025060, 11964705, 1999844, -9841918, 8267275,
--19792284, -12974559, -21923660, -7444789, -10590852, 7618198, 2382096, -10305774, 2281165, 14183056,
-4198331, -4809290, -8713952, -13637058, -5242545, 4356708, -19148574, -9045201, -1650878, 15249818,
-5142687, -6657736, 3204046, -10437844, -2835752, -3295851, -8551280, -5639292, 14368813, -3444564,
--1017370, -3634616, 3394635, 9061844, 6539625, 7746511, 19828790, -103079, 15988016, 618475,
-1650341, 9886478, 8588324, -13291313, -7611756, -1160715, 3101503, 1269163, 138513, -1452236,
-6278706, -18450106, 9327058, -22260816, 39296268, 55759948, 32500554, -14155138, -30470108, -11139535,
-27617714, -8026757, -22693534, 41603200, -28653874, 24900072, 14070313, -32446868, -13418552, -3286187,
--53692996, 2275796, 6261526, -25792890, 53061100, -18057654, 49284748, -36715528, 5546951, 2518462,
-36053028, 53149148, -4287451, 18157512, 25099252, -29134910, 19740206, -39491688, -10860899, 75533440,
--4167729, -20614770, -3996467, -41995652, 1899449, -13095355, 47230144, 18119394, 22027276, -7036767,
--12383464, -23279796, -21642878, 5669357, 3085397, 325881, 31471910, -7414188, 6066105, -32363652,
--16814796, 21985938, -48455284, -18903224, -14523432, -16356846, 45387604, 3539053, 49031884, 35349192,
-15680926, 19030464, -10907606, -25618406, 21996138, -34956200, -21451752, 43719544, 13265006, -25899726,
--43102144, -25845502, -30656940, 24954296, -26457536, 14041859, -19093278, -1379221, -16391206, 17805324,
-10268193, 1831267, -14215805, -2347200, -9802189, 3195993, -19353122, -13151190, -7263327, 4574140,
-10875931, -86436, -7864622, -10747082, -17987324, -12592307, 11487427, 15963320, -4894652, 11111080,
-21977348, 10805064, -20350628, -5682242, -7464653, 13198971, -12411382, -7868380, -2909304, 5069672,
--16324097, -21756156, -15682536, -4917738, 9084930, 34360, 2061047, -2790655, 12432857, 4223027,
--761283, -11124502, -3783329, -6764037, 8746701, -2146410, 2098092, 35140884, -58771260, 62159988,
--1738925, 4619774, -20148766, 50156628, 11641509, 32234266, 12073690, -21434034, 7068980, 17819820,
--30988726, 21369072, 203474, 14114336, -41306312, -3398393, 9904195, 37673304, -15975131, -31427350,
--1551020, 37465000, 19693498, -14583025, -32647658, -1797444, 27012124, 3361886, 1716376, 7341173,
-19592030, 49715320, -70536248, -11802570, 6626598, 38938712, 8590471, -21517786, -5450314, 14713484,
-35651988, -3812857, 1578401, -67676336, 19376208, 10353556, 18249316, -49156976, 43146704, 37093484,
-13886166, -22344030, -2401424, -24702504, 18175228, 31739808, 13256953, 14750528, -2924873, 24012626,
--35414152, 33250564, -10034117, -12125230, 39187280, 32203128, 1969779, -12440373, -32441498, 23476828,
-25793962, -69422776, -5599027, 39617852, 9810779, -631360, -24863566, -10847477, 67572720, -5375152,
--23243290, -3121368, -12574591, -15248745, 22414898, -19216758, 6781217, 10084583, 13651017, -9692667,
-1268626, -9838159, -11662984, -7910793, 10298258, 10205379, -10674604, -2301566, 5121749, -8603356,
-20415054, -19841676, 5069135, -3716221, -6422050, 7100118, 33864744, 2051384, 24159, -5616744,
--11971684, -116501, 18433462, 4231080, -878321, -3745748, -8705362, 15554224, -4064650, -1080721,
--9227737, 8855686, -1446867, -4320200, -52583820, 25236690, 4634807, 15960635, 19322520, 28213640,
-9839770, 8872329, -13859323, 14404247, 2446521, 33532420, -4146791, -10390600, 26332982, 20113868,
--4715337, 1470489, -11606612, 62277, 8185134, -2913062, -7021735, 14871324, -12305081, 1270237,
-20307142, -4726612, 11630235, -21220360, -4482335, 2502355, -8830453, -3630321, 2187212, 14669461,
--4014184, -25324200, 780610, 49613316, 10144713, -27336394, 7887708, -27865748, -19073950, -14524506,
--4052839, 31568546, -3646427, -25652766, 51322712, -55997784, 9286793, 56615724, 5847061, 39721468,
--30724048, -57285736, 18242336, 1688459, 45283988, 2139431, -25773562, 20834886, -5886253, -4986994,
--11040213, -2082522, -16083042, 7701950, 2086280, 11885248, -19600084, -17010754, -6784975, 19889994,
-25796648, -8912594, 13682692, -2348273, 21585432, 15088757, -27385248, 21529060, -5682242, 2962991,
--4708895, -8747775, -165893, -396211, 2891587, -2361158, 2236067, 1677722, 1498407, 2850248,
--9044127, 171799, 4976794, -7816841, -1009854, 4502200, -4844723, 5993090, 6929930, -10586021,
-12380780, 4735739, 12829067, -3174518, 5944772, 10023380, -19584514, -569083, 5989869, 11091216,
--6999723, -5535676, -6729677, -5217312, 11402064, 22564148, -9731859, -106081400, -243754432, -96599184,
--146715008, -214809568, 115480400, 31938450, 66448512, 305956288, 235827520, 137586064, 251857424, 187937568,
-32114544, 62139048, 51692616, -119334592, -102132176, -50017580, -182538800, -174536192, -66845796, -89669792,
--126631744, -52927420, -45485852, -128869960, -107575512, -8918500, -61281132, -104482056, -35891968, 33348810,
--75902808, 22875532, 112980192, -8585103, -16192564, 153461328, 122539712, -5336497, 179270320, 207756688,
-84367656, 195198752, 273861088, 163419744, 141948128, 328678272, 262294192, 197233488, 233786880, 310098240,
-110869752, 44022876, 129827736, -102349608, -293803136, -212952528, -324941664, -526171072, -471316832, -500182752,
--581717376, -592851008, -511226752, -445141696, -446453792, -313833248, -139023792, -94118304, -14260902, 152336048,
-279900864, 282594880, 350785536, 504700544, 441149504, 403304960, 557276864, 442954464, 250352576, 365381472,
-255838848, 99365680, 89894200, 118074560, 12171937, -37207840, 22928682, 3420405, -82732344, -44043280,
-7373922, -65840776, -122082832, -58566176, -83759912, -177770304, -112099184, -43255152, -132912056, -89288072,
-17914846, -42174432, -62072476, 30514668, -36720896, -146380544, -112213536, -179693920, -303886112, -286110336,
--274438208, -285029056, -250571616, -168308496, -131546256, -79125112, -15362024, 67011692, 118789672, 182319216,
-229953088, 285655584, 297182208, 315216224, 351171008, 333135904, 305451616, 288976128, 191427760, 67463736,
-6396280, -28631326, -81791208, -96422016, -84175456, -95040112, -106743360, -94031864, -94978904, -93069792,
--78594680, -76689328, -80470504, -77655696, -67998456, -56378424, -48183092, -31522912, -19556596, -3972308,
-2241973, 14318884, 21761526, 27354646, 28386512, 30036316, 29775934, 23423142, 13696114, 10580115,
-5338108, -1497333, -7163469, -9122511, -20160040, -26324928, -32513976, -43333000, -51040856, -47828220,
--46061912, -41101228, -30829276, -21849036, -16048145, -4029753, 8537858, 16728898, 25423522, 39543764,
-42771968, 42411728, 45886356, 50422916, 46664284, 48507360, 50929724, 48279728, 46437188, 46646028,
-41264436, 35532800, 31338228, 24085102, 13677860, 6203544, -2624225, -14336064, -26169236, -34802120,
--45135812, -51350092, -54061292, -53309136, -52699248, -48287244, -41787348, -35224100, -28522878, -19915764,
--14063334, -7572028, -2129767, 3038153, 7327751, 10848551, 13807246, 15938087, 15619185, 15316927,
-13914620, 12097849, 10292889, 9065602, 7478075, 6085969, 4820027, 4054449, 3210488, 2785823,
-2450279, 2230162, 1970853, 1804423, 1735167, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-2930242, 1226213, -1134408, -1394791, -2151242, 518080, 4252555, -1371705, 9127, 431644,
+7286949, -147103, 1388348, -3003256, -2093797, -747861, -1973001, -2112050, -1990181, -1347546,
+-1891933, -2486786, 2080375, 3466039, -1915555, 527207, 130460, -3935264, 100395, -87510,
+-2804077, 5268851, -2704219, 2996277, 1130113, -807454, -3036005, -2792266, 2697240, -1408749,
+-1034550, -4160750, -1074816, -384400, -1978369, 5558762, -1228898, -346819, 2306934, -402653,
+-4646618, -2376191, -4099010, -2738579, 6317897, -1776506, 7027640, -25233, -310311, -1273458,
+801548, 300648, -4209068, -4460861, 3231963, 375810, 2190433, -293668, 2553895, 1586454,
+-4081830, -20401, 1329292, 2196339, -29528, 1855426, 3342022, -4479114, 1159641, 1161789,
+-2270964, 8053, 994822, 3229279, 2094333, -2234994, -706522, -112206, 725850, 1034550,
+750546, 853625, -619549, 449898, -1251983, -770410, -49929, 1652489, 688805, -35433,
+-151398, -1097901, 617938, -70867, -415538, -79994, 544924, 261456, 380105, 1073205,
+-390305, 481573, 1231582, 9575630, -804770, -1217086, -2520072, -5318780, -6548752, -5996848,
+609349, 5242545, 1801202, 7016903, 2377265, -3263638, 802085, -8471823, -7182259, 3257733,
+-2557653, 4611721, -490163, -3795677, -1916629, 9212168, 2015950, 3862786, -231928, 2944737,
+-1436130, -1194538, 1781338, -1333051, -4101694, -354335, 1428077, -527744, -296890, 5839008,
+3593277, -6393596, 91268, -4076461, 6624987, 3892851, 225486, -2428804, -2493229, 3017215,
+1660542, 4927401, -4682051, 7854959, 9652939, -2730526, 9403294, -69793, 4902705, 3024194,
+-1802813, 1582696, 7526394, -943282, -5169530, 4323959, 1359894, -113280, -642098, -957241,
+270583, 4366908, -2896419, 1549946, 1132261, 2284923, -3721589, 4112968, 911607, -425739,
+1264868, 549219, 350577, -235149, 887985, 2392834, -1784022, 929860, 595390, 972273,
+-1633698, 52613, -2588255, 380641, 1133871, -1524177, -992137, 275952, 642635, 762894,
+172336, 689342, -59056, -48855, 1484448, -208306, 329102, -8319889, -6500433, 2073932,
+-3670587, 2658585, -4592931, -6533182, -6037651, 868657, -4504347, 4168266, 3060701, -5793374,
+-1174674, 2393371, 578747, 2938295, -1692217, 3039763, 3735548, -5137855, 1675574, 1727651,
+-4125316, 2465848, 449361, -4865124, 3655554, 3533148, -1717987, 3858491, 571768, 3155190,
+2851322, 1213328, -1818919, -426276, -5846524, -1737314, -2895882, 3121904, 3274376, 1316408,
+-9380745, 1829119, 3981435, -2091112, 6629819, -5370320, -7151121, 581431, -2108829, 2328946,
+-5101348, 9372156, -473520, -3087545, 931471, 153545, 5332202, -265751, -3085397, -168577,
+-2090575, -2830920, -3618510, 1746978, -6553047, 712965, 252866, 1967632, 4399657, 1483374,
+3133716, 4876399, -3297461, -543850, 1090385, -4097936, 2836289, -1370095, 2418067, 1962800,
+-1275068, -937377, 3553549, -1109712, -3228742, 499827, -339302, -79457, -1742146, 2624762,
+-1990181, 1024350, 968515, 1359357, -514322, -494995, 156229, -949725, 386547, -636729,
+59593, -378494, -978716, 1309428, -501437, 321586, -180389, 124554, 10201, 273267,
+-1670205, -19943144, -286152, -2399276, 14120779, 348429, 891206, 3042984, -1921998, 7130720,
+1790465, -7545721, -4037806, -8859981, 1620276, -588411, -3014530, -2540473, -3219615, -2044404,
+10995116, -5007932, -2449742, -2822867, -8308078, -326418, -2010582, 2879239, 4182225, -1327145,
+-16643, 2467459, -2520072, -671089, -1050120, -2996814, 3386582, 6775848, -769336, -1091459,
+5375689, -7036767, 4625680, -5613523, -11333882, -7183333, -11287711, -1700270, -6418829, -4314295,
+1233193, 4545686, 2334852, 3256659, -1628866, 3944928, -4769561, -1058710, 4150549, 11811,
+5747203, -2350958, 1803886, -3968013, -2972654, 2994666, -6874095, 1886564, 5248987, -6716255,
+757525, -1755031, -3069291, -4394289, -3927211, -1291175, -1686848, 1102196, 4922033, -2308545,
+1597728, -4027069, -4264903, -3373697, 1736777, 2352032, 700080, -1032403, -1175747, -1783485,
+1098975, -1506460, -1270237, -585726, -1170916, -121333, 341450, -2164664, -413391, -224412,
+-1568200, -393526, -642635, 47245, -179852, -2972654, 479963, 1307281, -460098, -1146756,
+-8590, 1908576, 1081795, -692027, -2003602, 1187559, -144418, -657667, 12809203, 95026,
+-7132867, -6852084, -2345589, -4993973, -1923609, -3751654, 984084, 632971, -5642514, -3308199,
+-6198712, 11773042, 4989679, 1101122, -664109, 6393059, -9514426, -132070, -200790, -5994701,
+-8007430, 7187091, 144955, 5134097, -8033737, -3493419, -2800319, 2812667, -288300, 3453691,
+-5543729, 1697049, 2265595, -5974300, -5773510, -5195300, 1245004, -1695438, -1618666, 5091147,
+-1489280, 585726, 89121, -975494, -5731634, -3466039, -663572, -8580271, -5628018, -4507568,
+2391223, 1675037, 3436511, -822486, 1501091, -68719, -885300, 4033511, -3113851, 7005629,
+973884, 2141578, -924492, -2274185, 2771328, 2188286, 5505075, -1633161, 856846, 3395709,
+-1995012, 99321, -7286412, 3461207, -5611375, 3583077, -4150012, -3997541, -7858180, -1498407,
+1981591, 894427, -1331977, 1864016, 784905, 3622805, 576063, -1054415, 3131568, 1752884,
+-2806224, 721555, -2284386, 2506114, -1009317, 455803, -635655, -245887, -2018635, -35433,
+98784, 418759, -1191317, 977105, -1701344, 703838, -324807, -800475, -1512365, 429497,
+-1023276, 2158221, 575526, -522912, -952409, -813359, 1620813, 1140314, 1547262, 201863,
+146566, 862215, -1800128, 15177878, 14371497, 10742787, -3550864, 3974455, 5467494, 3233574,
+3112778, -5251135, -4575214, -6892886, 6250788, -6464463, -743029, -4687957, 8273181, -9056475,
+-6745246, -3340411, -1413581, -4964446, -7487739, 2204929, 452045, 492848, -9091372, -4990215,
+2443300, 1966021, 2650532, -2432025, -3580929, 335007, 2803540, 3560528, -2522757, 3387656,
+-4803921, -1245004, -11834246, 4399657, 1481227, -2005213, -2203318, -8725226, -3956739, 1142998,
+-2078227, -12272332, 6690486, 2777770, 31139, -3289945, -2539400, -5175436, 1635309, -1817308,
+3589519, -745177, -1728188, -6972343, -1314797, -675921, -3819300, 7712688, -5538897, 127238,
+4600447, -1896228, -5994164, -3369939, 5221070, 7533910, 3748970, -557272, -190052, 3992709,
+-8071318, 3316252, -826781, -380641, 406948, 1758789, -435939, -326418, 435939, -1575179,
+-4864051, -1312649, -1467805, 1499481, 1071058, 572841, -1868311, -989453, -2162516, -2692945,
+-646393, -98784, 3255585, 309238, 465467, 401579, -1101122, -653372, 1511292, -1696512,
+-239981, 581968, 954557, -2027761, 48855, -181999, 1215476, -1459215, -324270, -862215,
+-1391569, -3118683, -1408212, -156766, -1333051, -3758, 182536, -157840, -1698123, -688269,
+18285286, 6129992, -2680060, -2138357, 6415071, -12362526, -2334852, 10004589, 5009543, -6979322,
+-163746, -4736275, 1923609, 7694971, 18894634, 6238977, 14714021, -5217849, -1104344, -14327474,
+4852240, -4180077, 4022774, -6274947, -340913, 606127, -2244657, 5144297, -2315524, 2457795,
+6318971, -4847945, 2844879, 8087424, -2215666, 2707440, -2684, 3253438, 4415764, 4554813,
+-24318642, 8892193, -2822331, -11377905, -2002529, 6956237, 2113124, -8787503, 4730370, 6937446,
+-14329085, 1156420, -4055523, 8429947, 1908576, 6965900, -1715839, -5000416, -10068477, 625992,
+-6096706, 18988050, 3490198, -3106872, 6308233, 809064, 6103149, -14919643, -1984275, 2318746,
+4609574, 1114007, -7005092, -1085553, 2532957, 6661495, 5587753, -4617090, 104153, 6556268,
+-306016, 3098282, -2301029, -1103807, 4561792, 468151, -381178, -602369, 206158, 2272575,
+-2189897, -932008, -302258, 1774895, 1666984, -192737, -631360, 4552129, -1468342, -741956,
+-2414309, 350040, 1195612, -1149978, 51540, 1430224, 1812476, -1571421, -769873, -2634963,
+164283, 2164127, -1051730, 441845, 942208, 1148904, 3606162, 520228, 1745904, -56371,
+-1622961, 2436857, 542240, -21708376, -23809152, -8151848, -1858647, 437550, 5057861, -10167261,
+3207267, 11988327, -6878927, 6382322, 8297340, -5780489, 176631, -2814277, 10147397, 14159970,
+-6784438, -7989176, 7116761, 688805, -6800007, 3223373, 110595, 1780264, 2021319, -3628174,
+-2651069, -15121506, -781684, -4319127, -352187, -439697, 10281078, 3062849, -18467822, 319975,
+8898098, -10086731, 2653753, 10872710, -2394981, 3835943, 213675, -2835215, -7023346, 13976897,
+11742441, -8919573, 4670777, -3306588, -471910, 4363150, -3109556, 3663607, -5538361, -610422,
+11785390, -3330210, 2485176, 5592585, -4039417, -9672266, -426812, 3353296, 1710471, -4634270,
+602906, 2639258, 4181688, 8652748, 5324149, 9519795, 5002027, 1864016, 4399121, -1527935,
+8544837, -248571, -6781217, -9074729, 1101122, 2990908, -1613297, 6844568, -3539053, -3641596,
+2685965, -820876, 707596, 384400, -4234301, -549219, -2561411, 3136937, 1363652, 2531346,
+4833449, 649077, -1748589, -7005629, -571768, 1681480, -1831804, -681826, 680215, -1521492,
+1473174, 1615982, 166430, -1611687, -1219234, 3502546, -523986, 1672890, 820339, 1171452,
+-2511482, -2565169, -1585380, 658741, 1148367, 2124398, 1491964, 1071594, 921807, 2658048,
+-722628, -2492692, -23599772, 25866440, -1731409, 16564615, 1064078, -9953050, -3133179, -5854578,
+-7050189, -1104880, 251792, 11924440, -2134599, 8127689, -8603356, -654446, 1860795, 1716376,
+746251, 10339060, 10310606, 3639448, 1472100, -1532767, -2251100, -805843, -1951526, -17770964,
+-6187438, 7897371, 5036386, -2157147, 700617, -8514236, 4019553, -10394895, 2042794, 16007343,
+1575716, 3322694, -13660143, 7002944, 6096706, 1536525, -9222905, -4148402, -4394826, 548682,
+-8295193, 8104067, 9958419, 5927592, -1071594, 15000173, 5214627, 22042846, 8519068, -6133214,
+18354542, 232465, -6919729, 13223667, -2347200, 4242891, 8289824, -6284611, -5382668, 12219719,
+13174812, 7694434, -10972568, 3927748, -259846, -5178120, -9038222, 6411850, 11646341, 6951405,
+16980690, 2184528, -3926137, -3995930, -10707353, -4179540, 6394670, 846645, -2080912, 246961,
+-6732361, -4784594, 779000, 1518808, -363998, 6920266, 5458904, 2319282, 86436, 1910724,
+3221226, 1568200, -3423626, -1493038, 826781, -916976, -1266479, 2823941, 133681, -1002338,
+2266669, 757525, 635118, 784368, -2303176, 395137, 6070400, -2966749, 3779034, 1668058,
+33286, -2946348, -3231963, -1741072, 1185411, 5758478, -12549358, 16703665, -4818417, -10961293,
+3675418, 7270306, -7277285, -3679713, -15371688, 6449431, -5637145, -1843615, -14093398, -6182606,
+-4782446, -2398202, -6358699, 3338800, -2857764, -3457449, 3308199, 4672388, 8198019, 8059506,
+-3489661, -2889976, -11368778, 4494147, 203474, 7495792, 2036888, 2024003, -2592550, 3013457,
+-7119982, -5990943, 3318399, 1726577, 3367254, -13829795, 4609574, 9086003, -60130, -12176769,
+-12772159, -9904195, -29412472, 4177930, -3420942, 14244259, -6998649, 11839077, 3751117, 830002,
+15189152, 2345589, -1803886, 10972031, 4006668, -14903000, -7468948, 1809255, -4811974, -8448201,
+-5206037, 19270444, 8797704, -9032853, -1157494, -5062156, -2547453, 2840047, 13530221, 274341,
+-3712999, 18009872, -6511171, -16307454, -15655156, -18458158, -3355980, 1444183, -558346, -3222836,
+-2339147, -7874286, -1634772, 2345052, -2535641, -2308008, 1475321, 1546188, -11713450, -4745402,
+-9195525, 469225, -3180423, -2914135, -4971962, -1489280, 1201517, 7096360, -32212, 8695161,
+4151623, 6397354, 562641, 3034395, -3085397, 5838471, -156229, -4130148, -6352794, 3631932,
+440234, 2030446, -1762547, 1186485, -2100776, 2051384, -849330, 2423435, -646929, -971200,
+1380832, -277025, 7275138, -12087112, -3051038, -3249143, -1599339, -853088, 32056026, 5239323,
+11708081, -5702643, 10222022, 20656108, -17733920, 26838714, 15896748, -7194070, 220117, 1617592,
+-9676024, -16204375, 1092532, -9399536, -14471892, -6487548, 1261110, 13422, -1799591, -6505802,
+-1110786, -6334540, -465467, -7321309, -558883, 5000953, -11381663, 6229850, 9536438, -7453379,
+-6947110, 4927938, 3702262, -656056, 28770912, 2534031, 19168976, -13808320, -1369021, -16740709,
+-12316356, 2953864, -12353937, -16922172, -11314018, -12853763, -2836826, -3425773, -14304925, -15511274,
+20201378, 3175055, 1235340, -2745021, 10445360, 5818607, 12606266, -1255204, 11912092, -6684043,
+2681670, -22363358, 18227842, 8834748, 1391033, -12281459, -972273, 5547487, 1116692, 2138894,
+8977019, 12592307, -9803263, -12534862, -8305393, -1959579, -263067, 1374926, -7421167, 843961,
+2052458, 5191542, 6684580, -849330, -4230006, 7032472, 3408057, -5242545, -427349, 2543695,
+-3204046, -5539971, 931471, -1876364, -1899449, -164819, -2506650, 6448357, -6875706, 3744675,
+-273804, 7132330, -7526930, -1802276, 1166084, -1884954, -2924873, -1192390, -5992553, -6483790,
+-1321239, 685047, 1818382, 2357937, -4503810, 4469451, 3274376, -2651606, 3885335, -783295,
+2183991, 198642, 2157684, -1801202, -1527398, 614180, 1067836, 2618856, -442919, 3592740,
+-1770063, -1241246, 537, -1301375, 2267206, 2306398, 15679315, -6322729, -5145908, 17498770,
+-14630269, -11142219, -2691334, -8851391, -1371168, -17428440, 3972308, -10710038, 8311836, 1219771,
+2866891, 10049687, 2922188, 7109245, 9740986, 9256191, 7646653, 12948253, 1578401, 8819715,
+7903277, -9352291, 16326781, 4043712, 7572028, -8726837, 12750684, 5783711, 8966818, 2316598,
+3227131, -1591822, -11675869, 3040300, 6670084, 7871602, 8578123, 1893544, -14208826, -8953933,
+10293963, 5636608, 2374580, -5357972, 7138773, -5122286, -14241575, 21032454, 12849468, 9424232,
+-8028905, -3910568, -10598369, -33097018, -961536, -4566624, 4323959, -7682623, -8282845, -14558865,
+2629057, 4755066, 18602040, -14570140, 5981279, 340376, 8589935, -12817793, -15770046, -9563282,
+10267119, 3190624, 3246995, 5507222, -4290136, 1889249, 12030203, 4341675, 6120329, 7728257,
+-2997350, -2699924, -4963372, 212064, 5294084, 6577743, 304406, 2782602, 1372779, 1148904,
+4984310, -2943126, -2546916, -4189204, -2343442, -4336307, -66035, -6638409, -2648921, -7020661,
+-323733, -4175782, -1155346, -860604, -2393371, 2178622, -1700807, -9034464, -1286880, 3805341,
+4095788, 7693897, -1039382, -4343823, 2234457, -1620813, -6582038, 6309844, 5300527, 5164162,
+11772505, 7816304, -543850, 583579, -2516314, 3272228, 1048509, -27091580, 15087146, 16077673,
+-8443906, 13667660, 4504347, -22891638, -4293894, 29402272, -4524211, -20046222, -3387119, -2189360,
+-17462800, 11729019, 2198487, -8943196, 12654584, 8309151, 30327838, 17666274, 179852, 1971390,
+28595356, -7690676, 7016903, -12082280, -17282948, -5343476, -11835856, 2324651, -1137093, 5549098,
+-1176821, -2345052, -5181341, 22502408, 811212, -18216030, -14530948, -3511136, -3985193, -908386,
+7144678, 20518670, 12993887, 4127464, -12903692, 15904264, 29258390, -6511708, 13133473, 12299713,
+35315904, 6513318, 6503118, 10509785, 14890115, 8158827, -12505871, -12006581, 7910793, -22082574,
+-13430363, -15896211, 14555644, 12732431, 8790724, -3795141, 10657424, 22601192, -13312251, 17954574,
+17843442, -2680597, 17535814, -16988744, -7670812, -6080600, 37044092, -18456548, 18067316, 11238319,
+6484327, 4984310, -16790638, -1865626, -13261248, 13721884, 12984760, -433792, 713501, -6889128,
+9642738, -4099546, 729608, 3517578, 3801583, -243739, 5785858, -4381404, -2500208, -1870458,
+-4407174, 1678259, 3392487, -3284576, 1413581, 4090956, 7314330, 963146, -7227356, 2761127,
+-7813083, 1161252, 6567005, 4256850, 6961068, -1436667, 11378979, -4792110, 8334384, -2432562,
+-3039226, -1707250, 228170, 9205726, -7074885, 4333085, -457951, 4395899, -5811091, 1297080,
+2000918, -2697240, 12066174, -6914361, 5221070, 5700496, 20216948, 36251136, 3677566, -3995393,
+3623342, -2172717, -6247567, 875100, 3565897, -9111236, -12115566, 3830037, -6411850, -3556770,
+9043054, -651761, 18004502, -9790915, 17644262, 8616241, 1505386, -10565083, 3122978, 17683990,
+4910222, -9233106, 3269007, -2316598, 242666, 10332081, -14790257, -7833484, 15948824, 200253,
+-4271882, 13939316, -963683, 4847945, 2930242, -13604309, -24834038, -5325760, 8247411, 15623480,
+3128884, -12195560, 15444702, -5260261, 31614180, -16252693, 21179558, -12639015, 7397545, 18313204,
+-27481348, -28198608, -475668, -8039642, 6977175, 8886287, 1004486, -4211753, -16919486, 11142756,
+-2700461, 19893752, 8728447, 18524194, 4777078, 10762114, -4829691, 14217415, 4857071, -8585103,
+1436130, -288837, -41419592, -1258962, 6931541, 9910637, 17083232, 14711874, -5114769, 1210107,
+-3368328, 2731062, -327491, -4595615, -11221676, 4716948, -6685654, 14244796, 1352915, 2771865,
+6674916, 4141959, -4821101, 4113505, 9996536, 9065065, -3427921, -1633161, 1137630, -2177549,
+-1843615, -6427419, -1522029, -13483513, -2239289, 4666482, -11635066, 7857643, -8876624, -6860137,
+1647657, -6971806, 6769406, 2831457, -3073586, 4728759, -932008, -703838, 2597918, 9997073,
+-7300908, 1627256, 1076426, 4471061, 2778844, 2094870, -4131759, 23893976, 30876520, -6633577,
+-1109175, 10950019, 40814000, 1231045, -24016384, -9549323, 4977330, 4728222, -7543037, 7882339,
+-5428839, 12720083, -20362440, 1173063, 12799003, -8432095, -9149354, 1879585, -20131586, -6120329,
+-6514392, -32052804, -27091044, -15628312, 11915850, 14059039, -2385318, -22774600, 2636036, 926102,
+-751619, 4702453, -11435350, 27592480, -7788923, 3619584, 30493730, -26525182, 12899397, 4630512,
+-9246528, 11198053, -7153805, -21476984, 492848, 18824842, -8321499, -13439490, 7826504, 2658048,
+17861158, 276489, -27435714, 2343442, -16207596, 27214524, -9787157, 4243428, 6684580, 3400004,
+-3860639, -17414482, 7362111, 18592376, 5377299, 19180788, -27834072, -15167140, -4573067, -79457,
+3015067, -21322366, 19262928, -2468533, -20478404, -6655589, 12968117, 12243341, -11340324, -15569256,
+15567109, -12351789, -7856032, -93416, -1926830, -1513976, -1017370, -4381404, -871878, 8020852,
+-1777580, 7392176, -8228621, 5924371, 7490423, -1788317, 4042101, 1453310, -1526324, 337155,
+1013075, 13612362, 694711, -2306398, 1134945, 3229816, -6681359, 2659122, -8543227, -405874,
+9873056, -3267396, -7784092, -2587718, 4423280, 444529, 319975, 6137509, 459025, -7479686,
+-4058744, 14519674, 10362682, -3089155, -615791, -146029, -21130702, 31061204, 885300, -53202296,
+21311090, -7313256, 4146254, 5427765, 7143068, 13059385, 4760971, -9633075, -2326799, 13151727,
+8892730, -10564546, -565325, -8382166, -4345970, -26132728, -3335042, 12576201, 15618649, 3510062,
+-6199249, 17301202, -17823578, 19713364, -11359115, -6381785, 2349347, -6118718, 5255966, -15728707,
+-21233244, -23763518, -7606387, 12303471, -4752382, 118648, 14471355, 4017405, 2528662, -455803,
+491237, -5006322, 194347, 15595026, 9601399, 16457778, 13960254, 16510391, 11236708, -9819906,
+-6261526, 4054449, -1052267, -18977312, 12759274, -3436511, -17927730, 22502408, -254477, 3655554,
+-626528, -8188355, -2702071, 9448391, 13690745, 11385421, 348966, 6972343, -22963042, -3264712,
+-8183524, 12492449, 4313758, -6403796, -7304666, 28913182, -8815420, -9910100, -3133179, 4659503,
+-7159711, -19059454, -1075352, -3269007, -10296647, 17854180, 3644280, 6717866, -5488432, -961536,
+4159676, 1067299, 5253282, 5659157, -1855426, 3467649, -3438121, 3930432, 1500554, -3165391,
+-2390686, 2908230, 4110821, 1109175, -3629247, -3021510, -3262028, -2419140, 88584, 2033130,
+-2953327, -3593814, 858457, -294205, -635118, 3089692, -1442572, 4900558, 1502165, 14375792,
+-1203665, -1818382, -3156801, 1750736, 89657, -6059662, -7962333, 72469520, -71069360, -3511673,
+-77274512, -11915313, -29359860, -3527242, 18913426, -9533754, -21363168, 33789580, -9092446, -5825050,
+1149441, 10451266, -1175210, 28092308, 18592914, 11178726, -16525960, 1155346, -11267310, -11438035,
+-7656853, 468688, -3511673, -3049427, -9327595, -2033667, 15519327, 1955821, 10276246, 10288057,
+-807991, 13717589, 19937238, 1112933, -4070019, -10354629, -12409771, 5006858, 5450314, -10263898,
+16893180, -22274774, -22566832, 2525441, -7894687, 12108050, -20924006, 8966818, -40242232, -21417392,
+-32216550, -2765959, -15901580, -1415729, -9706626, -12080669, -10530723, -940598, 2728378, -31457952,
+3587908, -6874632, 3611531, 161598, -14553497, -25591026, 17707076, -15394237, -2751464, 15859167,
+-1606318, -4954782, 10482405, 13146895, -2710124, 13095892, 8567386, 15822123, 8720931, 16010027,
+7577933, -9472014, -2639794, -8342974, 381715, -6906845, 1479616, 5806796, 8195872, 8987756,
+-3984656, 4182225, 2996277, 5897527, -1396938, -2237141, 3075734, 7066832, 930397, 1651415,
+7783555, 4002373, 8012262, -1133871, 369904, -818728, 3908420, 5555540, -1008780, -9212705,
+5055714, -1531156, 1963874, -2886755, 1281511, -2612951, -1364189, 491774, -7684770, 133144,
+10522670, -6570763, -6940131, 914828, 3591667, 3673271, 1241782, -7271917, 58631672, 29427506,
+14221174, -14234595, -7376070, -30670362, 6722698, 24515674, -4820027, -5890548, 40206800, -7261716,
+-8966818, 19858318, 29431800, 5036923, 30019138, -7577933, 4356171, 17673790, 20013474, 31561568,
+25556666, -1420560, -11434277, 9433896, 11502996, 10817412, 13526999, 23580444, 11549167, 30007862,
+-11697880, -882079, 8767102, 8081518, 25447144, 14725832, 27275190, -19775640, -6226092, 10808285,
+-21246666, 17044040, 17370458, 16577500, 7068980, -21477520, -7843684, 40459664, 10409390, 27245126,
+22651658, 24773908, -5137318, 32866700, 51583096, 17675402, 4519380, 36107792, 24982214, -14044006,
+-8619462, -17635672, -14056891, 15134928, 17677548, 1429150, -14963666, 198105, -13383118, -735513,
+-5998459, 8618926, -31428960, -3702262, 3136937, -16025060, 11964705, 1999844, -9841918, 8267275,
+-19792284, -12974559, -21923660, -7444789, -10590852, 7618198, 2382096, -10305774, 2281165, 14183056,
+4198331, -4809290, -8713952, -13637058, -5242545, 4356708, -19148574, -9045201, -1650878, 15249818,
+5142687, -6657736, 3204046, -10437844, -2835752, -3295851, -8551280, -5639292, 14368813, -3444564,
+-1017370, -3634616, 3394635, 9061844, 6539625, 7746511, 19828790, -103079, 15988016, 618475,
+1650341, 9886478, 8588324, -13291313, -7611756, -1160715, 3101503, 1269163, 138513, -1452236,
+6278706, -18450106, 9327058, -22260816, 39296268, 55759948, 32500554, -14155138, -30470108, -11139535,
+27617714, -8026757, -22693534, 41603200, -28653874, 24900072, 14070313, -32446868, -13418552, -3286187,
+-53692996, 2275796, 6261526, -25792890, 53061100, -18057654, 49284748, -36715528, 5546951, 2518462,
+36053028, 53149148, -4287451, 18157512, 25099252, -29134910, 19740206, -39491688, -10860899, 75533440,
+-4167729, -20614770, -3996467, -41995652, 1899449, -13095355, 47230144, 18119394, 22027276, -7036767,
+-12383464, -23279796, -21642878, 5669357, 3085397, 325881, 31471910, -7414188, 6066105, -32363652,
+-16814796, 21985938, -48455284, -18903224, -14523432, -16356846, 45387604, 3539053, 49031884, 35349192,
+15680926, 19030464, -10907606, -25618406, 21996138, -34956200, -21451752, 43719544, 13265006, -25899726,
+-43102144, -25845502, -30656940, 24954296, -26457536, 14041859, -19093278, -1379221, -16391206, 17805324,
+10268193, 1831267, -14215805, -2347200, -9802189, 3195993, -19353122, -13151190, -7263327, 4574140,
+10875931, -86436, -7864622, -10747082, -17987324, -12592307, 11487427, 15963320, -4894652, 11111080,
+21977348, 10805064, -20350628, -5682242, -7464653, 13198971, -12411382, -7868380, -2909304, 5069672,
+-16324097, -21756156, -15682536, -4917738, 9084930, 34360, 2061047, -2790655, 12432857, 4223027,
+-761283, -11124502, -3783329, -6764037, 8746701, -2146410, 2098092, 35140884, -58771260, 62159988,
+-1738925, 4619774, -20148766, 50156628, 11641509, 32234266, 12073690, -21434034, 7068980, 17819820,
+-30988726, 21369072, 203474, 14114336, -41306312, -3398393, 9904195, 37673304, -15975131, -31427350,
+-1551020, 37465000, 19693498, -14583025, -32647658, -1797444, 27012124, 3361886, 1716376, 7341173,
+19592030, 49715320, -70536248, -11802570, 6626598, 38938712, 8590471, -21517786, -5450314, 14713484,
+35651988, -3812857, 1578401, -67676336, 19376208, 10353556, 18249316, -49156976, 43146704, 37093484,
+13886166, -22344030, -2401424, -24702504, 18175228, 31739808, 13256953, 14750528, -2924873, 24012626,
+-35414152, 33250564, -10034117, -12125230, 39187280, 32203128, 1969779, -12440373, -32441498, 23476828,
+25793962, -69422776, -5599027, 39617852, 9810779, -631360, -24863566, -10847477, 67572720, -5375152,
+-23243290, -3121368, -12574591, -15248745, 22414898, -19216758, 6781217, 10084583, 13651017, -9692667,
+1268626, -9838159, -11662984, -7910793, 10298258, 10205379, -10674604, -2301566, 5121749, -8603356,
+20415054, -19841676, 5069135, -3716221, -6422050, 7100118, 33864744, 2051384, 24159, -5616744,
+-11971684, -116501, 18433462, 4231080, -878321, -3745748, -8705362, 15554224, -4064650, -1080721,
+-9227737, 8855686, -1446867, -4320200, -52583820, 25236690, 4634807, 15960635, 19322520, 28213640,
+9839770, 8872329, -13859323, 14404247, 2446521, 33532420, -4146791, -10390600, 26332982, 20113868,
+-4715337, 1470489, -11606612, 62277, 8185134, -2913062, -7021735, 14871324, -12305081, 1270237,
+20307142, -4726612, 11630235, -21220360, -4482335, 2502355, -8830453, -3630321, 2187212, 14669461,
+-4014184, -25324200, 780610, 49613316, 10144713, -27336394, 7887708, -27865748, -19073950, -14524506,
+-4052839, 31568546, -3646427, -25652766, 51322712, -55997784, 9286793, 56615724, 5847061, 39721468,
+-30724048, -57285736, 18242336, 1688459, 45283988, 2139431, -25773562, 20834886, -5886253, -4986994,
+-11040213, -2082522, -16083042, 7701950, 2086280, 11885248, -19600084, -17010754, -6784975, 19889994,
+25796648, -8912594, 13682692, -2348273, 21585432, 15088757, -27385248, 21529060, -5682242, 2962991,
+-4708895, -8747775, -165893, -396211, 2891587, -2361158, 2236067, 1677722, 1498407, 2850248,
+-9044127, 171799, 4976794, -7816841, -1009854, 4502200, -4844723, 5993090, 6929930, -10586021,
+12380780, 4735739, 12829067, -3174518, 5944772, 10023380, -19584514, -569083, 5989869, 11091216,
+-6999723, -5535676, -6729677, -5217312, 11402064, 22564148, -9731859, -106081400, -243754432, -96599184,
+-146715008, -214809568, 115480400, 31938450, 66448512, 305956288, 235827520, 137586064, 251857424, 187937568,
+32114544, 62139048, 51692616, -119334592, -102132176, -50017580, -182538800, -174536192, -66845796, -89669792,
+-126631744, -52927420, -45485852, -128869960, -107575512, -8918500, -61281132, -104482056, -35891968, 33348810,
+-75902808, 22875532, 112980192, -8585103, -16192564, 153461328, 122539712, -5336497, 179270320, 207756688,
+84367656, 195198752, 273861088, 163419744, 141948128, 328678272, 262294192, 197233488, 233786880, 310098240,
+110869752, 44022876, 129827736, -102349608, -293803136, -212952528, -324941664, -526171072, -471316832, -500182752,
+-581717376, -592851008, -511226752, -445141696, -446453792, -313833248, -139023792, -94118304, -14260902, 152336048,
+279900864, 282594880, 350785536, 504700544, 441149504, 403304960, 557276864, 442954464, 250352576, 365381472,
+255838848, 99365680, 89894200, 118074560, 12171937, -37207840, 22928682, 3420405, -82732344, -44043280,
+7373922, -65840776, -122082832, -58566176, -83759912, -177770304, -112099184, -43255152, -132912056, -89288072,
+17914846, -42174432, -62072476, 30514668, -36720896, -146380544, -112213536, -179693920, -303886112, -286110336,
+-274438208, -285029056, -250571616, -168308496, -131546256, -79125112, -15362024, 67011692, 118789672, 182319216,
+229953088, 285655584, 297182208, 315216224, 351171008, 333135904, 305451616, 288976128, 191427760, 67463736,
+6396280, -28631326, -81791208, -96422016, -84175456, -95040112, -106743360, -94031864, -94978904, -93069792,
+-78594680, -76689328, -80470504, -77655696, -67998456, -56378424, -48183092, -31522912, -19556596, -3972308,
+2241973, 14318884, 21761526, 27354646, 28386512, 30036316, 29775934, 23423142, 13696114, 10580115,
+5338108, -1497333, -7163469, -9122511, -20160040, -26324928, -32513976, -43333000, -51040856, -47828220,
+-46061912, -41101228, -30829276, -21849036, -16048145, -4029753, 8537858, 16728898, 25423522, 39543764,
+42771968, 42411728, 45886356, 50422916, 46664284, 48507360, 50929724, 48279728, 46437188, 46646028,
+41264436, 35532800, 31338228, 24085102, 13677860, 6203544, -2624225, -14336064, -26169236, -34802120,
+-45135812, -51350092, -54061292, -53309136, -52699248, -48287244, -41787348, -35224100, -28522878, -19915764,
+-14063334, -7572028, -2129767, 3038153, 7327751, 10848551, 13807246, 15938087, 15619185, 15316927,
+13914620, 12097849, 10292889, 9065602, 7478075, 6085969, 4820027, 4054449, 3210488, 2785823,
+2450279, 2230162, 1970853, 1804423, 1735167, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-8537321,
-5090610, -6489159, 817118, -2736968, -835908, 2556043, -4011500, -7315940, -1848983, 641024,
--4179540, -2405719, 3586298, -2092186, 1675037, -9168681, -760209, 6233072, 3339874, -10261214,
--3510599, -2680597, -2700998, 3486977, -1469953, -5339181, -3332895, -3813394, -3865471, 6786585,
-2148558, 4374961, -2795487, 5741835, 5240934, 3723200, -2028835, -4852776, -3787088, 413927,
-1003949, 7804493, 2798171, 1491964, -3637301, 855235, 372588, 899259, 3126199, 1836635,
--5255966, -4494684, -2288144, 2853469, 701690, -993748, -5619965, -1726577, 2259153, 2565169,
--2243584, -861678, 166967, 2714419, -544924, -2994666, 44560, 431107, -3819300, 8218957,
-558883, -5580773, 33823, -862215, 5319854, 420907, 3614752, 4927401, 1892470, -340913,
-281320, -1796907, -1124745, -1197222, 3176128, -1016834, -362388, -1421634, 1123671, 370441,
--564251, -137976, -775778, 155693, -76236, 625992, 680752, 1036698, 1330366, -5672578,
--5135707, 5773510, 5294084, -4325032, 3179350, 296890, 1628330, -14149233, 5442261, -2124398,
--9665824, -12602508, 319975, 9068287, 531502, 5870684, 202400, -11401528, -3942780, 1285269,
-3962644, -2029372, -988916, -4815732, 619549, -896038, 8025684, 4060355, 1694902, 1416266,
-2171106, 2765422, 7317551, 4416300, -6489159, -576599, 1493575, 1540283, -7714835, 2479270,
--2302103, -4899484, -1390496, -233539, 5258651, 1327682, -2956011, 5309654, 8308078, -1789928,
--3166465, 1984275, -606127, 4520453, 4627291, 3602941, -5572183, -4262218, 3979824, -1712081,
--1406065, -4294431, 453119, -6364605, 3764539, 3371549, 4457103, 1119376, 5181341, -5644661,
--3536906, 7262790, 373662, 2675765, 8601209, 3299072, 839666, -3495567, 5042829, 579284,
--2569464, 1416266, -6094559, 145492, -648540, 879395, 1627793, -722091, -2719788, -1514513,
--448287, 1298691, 1236414, 392453, -755914, 715649, 1713155, 275952, -574989, -555661,
-7516, 7188702, 636192, 2783676, -6051609, -5139465, 2942590, -1424319, -2213519, -2810519,
--2630131, 2185065, -7003481, -4013110, -8648990, -10387915, -1924145, 8650601, 5574868, -3490735,
--974958, -1198833, -2015413, -7480223, 5388037, -1875290, -1924682, 476205, 3520800, -1682554,
-309775, -255014, 5099737, -4713190, 5115306, 2798171, 6133214, -2088965, 4744328, 2115272,
--2940442, 4284767, -2907693, 2469069, 4545149, -3427921, 4773320, -2847563, -2308008, -716723,
--1419487, 2411624, -1397475, -3628174, 1454383, -3148748, 685584, 435402, 484794, 7211250,
-1393180, -1650341, 33286, -2947958, -4130148, 2137283, -1001264, 6884833, 7005092, 2851322,
--1955821, -1075889, -59593, -2756832, -3208341, 3545496, 5549098, 186831, -615254, 3427384,
-3678640, -473520, 1292248, 1193464, -2692408, 2551748, -498753, 3659312, -1822140, -690416,
--150861, -1510755, -179315, 2668249, -595390, 814433, 766115, -1871532, 574989, -336618,
--394063, 768799, 681289, -1194538, 1356673, -455803, -605590, 109522, -170725, -216896,
--1114544, -805306, 353798, 13716515, -5801427, 5624260, -6991133, -5879274, 29528, -1630477,
--1486596, 1912871, -2940979, 5932961, 5788006, 4959614, -1487132, -644782, -2581812, -6328635,
-990527, -3801046, -702227, 696322, -2119030, 3608846, 1365800, -431107, -10448045, -4359929,
--6584185, 249108, -4307316, -6621766, -2901787, -3658239, -4047470, 6595459, -5267778, 4649839,
-404801, -1868848, 2604898, 2238752, -4721780, -1292248, 99321, 5093831, -483184, -6960532,
--8831527, -9193377, 2393908, -3357591, 203474, -727460, 1331440, 3109556, 5112085, -3529390,
--1868848, 1683627, 1758789, 656056, 6410239, -3585224, 3964255, -7362111, 14432164, 1775432,
--1535988, 2806761, 1381906, 2760053, -4012036, -706522, 1095754, -444529, -863825, -7282654,
--2421825, -4949413, -1473711, -578747, -3569655, -3488587, 2592013, 3028489, 922344, 595927,
--333934, 2558727, 1503239, 2937758, -1472100, 259309, 89657, 2699387, -1083942, -158377,
--165893, 301185, -2138357, 526134, -1548336, 780610, 1075889, -511638, -1801202, 359704,
-551903, -555125, -622233, -1934346, 507343, -226560, -991064, 1221381, 1401233, -179315,
--413927, -6754373, 930934, 1198833, 401579, -1105954, -4059818, 2343442, 1870458, -6107981,
-7076496, -8924942, 10910291, -1123134, 3614752, 1564979, -264141, -1229971, 2213519, 10213432,
-11474542, -2259153, 2034741, -1440962, -1672353, 1472100, 2407866, 7839926, -1037772, 2336999,
--4030827, 4272419, 926639, 6168647, 2981781, 5774047, -8439074, 3488050, 3033321, -2704219,
--117575, 6272263, -1611, 438087, 1897839, 3792993, -1333587, -606127, 12183748, 5752035,
-1056562, 1052804, -2576444, 5484673, -7402376, -10872710, -13113072, -865973, 6860137, -272730,
-3409667, 9244380, 3656628, -1709934, -3293703, 4898947, -983011, 11902965, 5359046, 1711008,
-1654099, -6595459, 1370632, 4866198, -2527588, -7419019, 1275605, 2579665, -335544, -2621004,
--952946, 1184337, -2403034, 1315871, 1349157, 1181653, -486942, 1373853, -2355790, -2253247,
--730681, -1455994, 740345, -2262374, 1258962, 2081449, 1406065, 1552631, 1618129, 441308,
-1036161, -3095061, -2558727, -1023813, -1345399, -1651952, -332323, 940598, 557272, -182536,
-1891933, 954557, -147103, 2315524, 1483911, -80531, -16011101, 1646046, -1265942, 10876468,
--8249022, 4736812, -16945256, 6581501, -1649804, -8674760, -9511205, -6684043, 4990215, 3870839,
-12767864, 1631551, 4220342, 12199855, -2180770, -8998493, 1293859, -6951405, 1636919, 9931575,
-1817308, -2878702, -1233193, -1989107, 2901251, 3799436, -863825, 2514167, 5116917, -3294777,
-1596117, -6127845, -504659, -7650411, -1221381, 953483, -3623879, 5506685, 3783866, 4679904,
-9461813, 524523, 11457899, 8711804, 4224637, -6059125, 13146895, 5583995, 2287607, 11460046,
--1292785, 170188, 936840, 3742527, -2432562, -3463354, -7936026, -7749732, -6271726, -24696,
--4953171, 10036265, -6129455, 4095251, 6302865, -3649112, 303332, -3002719, -1720134, -10053445,
--11413876, 5109938, -2006824, -3924526, -3398930, 870805, 1313723, 666794, 2211908, -4086662,
-9299141, 549756, 2784213, -2017561, 500901, 2666101, -4559108, 1422171, 158377, 1459752,
-2096481, -124017, 1634772, 3070365, -7516, 803159, 2279554, 2415382, 3284039, -256087,
-552977, -1806571, -481573, 48855, -798864, -2509335, 160524, -811212, -1040993, 137976,
--972810, -1393180, 13328894, 486405, 140123, -1257352, -2630668, 2375654, 534187, -6835441,
--8750996, -11855183, -6221260, -12403329, -7892540, -4241280, -9181566, -5818070, -4028143, -4786741,
--12404939, 8468602, 5298916, 288300, 4454418, 2029909, -3462818, 15348066, 921271, -5340255,
--2815351, -10449655, -4508642, 11421929, 530428, -9635222, -9630927, 1371705, -9748502, 3087545,
-3381213, -7601019, 271120, 2338073, 508417, 11240466, 3346317, -5174899, 1108638, -6198712,
-5658620, 780610, 2488934, -13809394, 9473087, -4765266, 3928821, 289910, 1811939, 2232846,
-323733, -4043175, -348966, -5411122, -20938, -10894721, -92879, -11751031, 15418933, -2658585,
-9797357, -7260642, -3414499, -1584306, -7494718, -4198331, 6002217, -249108, -266288, 4442070,
-5767604, 897111, 9440875, 8169565, 11360725, 6036040, 2385854, 1356673, 5137855, 2729452,
-1684701, 2070711, 1134408, 2505577, -754304, 4115116, 687195, -302258, -911070, 3197066,
-1276142, 2265059, 1115081, -1555315, 1064615, 1239635, 1030792, -2540473, 4733054, 2536178,
--505732, -3684545, -442382, -587874, -2665564, 915365, 430570, 2676838, -2281165, -5076115,
--6799470, 20938, 5088463, -13105019, 45634, -5637145, -4502200, 9364639, -15122580, -14282377,
-3786014, 19159312, 540629, 1866700, 1520418, -2863133, 10515691, 10210211, 5921150, 2932389,
--2704219, -15484431, 9259413, 128312, -12394202, -3965866, 2937221, -579284, 155156, 1321776,
--2945811, -12205223, -639413, 550830, -2189360, -5070746, 3728569, 10678899, -13662828, 8581345,
--5090610, -2532957, 865436, 6819335, 22333830, -14361297, -3581466, 1464047, -1378685, -2588255,
-787053, -5475547, 1973001, -4940286, 15370614, 5317707, 2920578, 4277251, -3187403, -834834,
-8159901, -1224603, 3575024, -6693170, 11811697, 572841, -8274792, 16498580, -10430865, 7623567,
-2209224, 3785477, 12013560, -4718022, 5144834, -532039, 74625, 1492501, -749472, -8024610,
--4226248, -468688, -3517578, -1216550, -1893544, -4902169, -5009543, -3750580, 2412698, -4286378,
-2552284, -1108102, -124017, -3754338, -2549600, -2756295, 2292976, -5202816, 583042, 561030,
-3245922, 5044976, -1901597, -897111, -4437775, -3785477, 326418, -3324305, 1008244, -572841,
--2931315, 110059, -847182, 1414118, 1857573, -1200443, 16273094, 1248762, 4224637, 4810900,
--2753611, -9407052, -7383049, 1103270, 16278463, 9218610, 1981591, -14602889, 2075543, -8041790,
-22549, 16290274, 15662672, 7902740, 10579041, -9589588, -19841138, -10397042, -14307610, 7897371,
--168041, -2435247, -81604, -10828686, -3235721, 3322694, -2058363, -4127464, -4022774, 11537893,
--774705, 3124589, -3313567, 7558069, 1578401, -4392678, -9220221, -7081328, 20895552, -920734,
--4759361, 6665789, -11985106, 3730179, -6871948, -20910586, -4715874, -2737505, 6293738, 2403034,
-5525476, 1744831, 8237211, 290447, 544387, 4557497, -20448340, -3244848, -5515275, -1477469,
-1952063, 11705933, 12923020, 4649839, -3420942, -8950712, -11764989, -3958349, -6935299, 1460289,
--3466039, -3677029, -8113730, 12072079, 8681203, 3523484, 11085847, -2666101, 4407174, 6801081,
--4376572, 4043712, -2831994, 870805, 4021163, -1252520, -2724083, -1136019, -1520418, -1074279,
--129923, 256087, 3981972, 143881, 442382, 1217086, -2270427, -6198175, 210990, -1458678,
--841277, -1136019, -3676492, -430034, 1171989, 5479842, 4476967, -2567317, 593242, 3600256,
--807991, 816044, -1343251, 813359, 3426310, 420370, 3762928, -23602992, -15431281, -3570192,
--5617281, 12064026, 8288213, -1974074, 20772610, -20986284, -4890357, -7917772, 22187264, 10647224,
--7285875, 8182987, 3115999, -8629126, 15324980, -16891570, 8370355, -7776039, 1326608, 1847910,
--5634460, 14799384, -10391673, 9090298, -4324495, -21759914, -3605088, 15210627, -9199283, -14854681,
-209380, -1846836, -22230214, -4151623, 8928700, 3790309, 11865384, 8727374, -2506114, 21395380,
--5112622, -6580427, -10513543, -9788767, -9468255, 5877126, 7992934, -6880001, -7761543, 2567854,
--6731825, 8973797, -2465311, 4873178, -3637837, -5556077, -4264903, -118112, -12583180, 3412889,
-9080098, -2118493, 3928821, 5458367, 6447820, 11623255, -8313983, 3740917, 9062918, -1165010,
--19299972, -20543366, 2263448, -1950989, 1527398, -7517804, -3122978, 1516124, -7442105, -13500693,
--4125853, 10190884, 8266739, -4060892, -1647120, 3136400, 2793339, -1607928, -3282429, 244276,
--435402, -5309117, -1970316, 5641440, -1626182, 4532264, 814970, -1411971, -2782065, 3639985,
-3586298, 4212826, 500901, -2368138, 2442226, -6326487, -3799436, 3115462, 1450625, 2672544,
-4919348, -2518998, 1014686, 1930051, 2394981, 456877, -2895345, -4154844, 1848983, -2264522,
--1392106, 16779364, -10826002, -27066884, -24696, 19059454, 24366424, 4444218, -9178345, -6915971,
-2377265, -4509716, -4013110, 10636487, 10784126, -5487895, 10400800, -13496398, -1775969, 9511742,
--4845797, 11545946, 5355824, -1750199, -16204375, 6016176, -3899294, -3947612, 684510, -1328756,
--1851131, 21912386, -10976326, 11121818, 18748070, 12972949, 6753836, 118112, -12625056, 12361453,
--7131793, 11771968, -6854768, 2622615, -13266617, -2653753, -12547210, -8272107, 1733019, -11669963,
--3343095, -4148939, -624918, 10155450, -12261058, -10540923, -3952981, -6106370, -2609730, -10450192,
--13494787, -16822314, 1532230, 12829067, -1052804, -8353175, 1232119, 2638721, 10137733, -11447698,
--6637335, -3737695, -442919, 7597261, -17180, 2041720, -7963406, -3376381, 3923453, 15522012,
-6862284, 10692321, 12419972, 16222091, 6217502, -2314987, -5879274, 3884261, 4911832, 7115687,
-2988224, 607201, -74625, 9820443, 3468186, -3747896, 714575, 5476620, 2172717, 1271310,
--3704409, -3629247, -2602213, -5019206, 271657, 4605816, 4431333, 919660, -2723009, 6455336,
-3712462, 8196408, 4263292, 178778, 5484137, 4295, -4349728, 6271726, -99858, -925565,
--2466922, 1189706, -1566589, -192200, 5496485, 3192235, -45167488, -21471616, 15071577, -36884104,
--25564182, -1650341, -15044197, -10320806, 11260867, 12869333, 3950296, -2369211, 4669703, 36830420,
--4506495, 5888937, 14190035, 16156593, -16787416, -8721468, -7943542, 13595719, 14858439, 7453916,
-2747169, 13898514, -4070019, -6971269, 9780714, 18811420, 1358283, 6076305, 19157164, 14113799,
-11532524, -8593693, 3648038, 5794448, -12885, -318364, 12308839, -4030290, -167504, -1245541,
-8231305, 304943, -13407277, -8994735, 2724083, -18245558, 13852343, -4054449, 30569430, 1215476,
-16781510, 3320547, -697932, -9848897, -439160, 3913789, -12879533, -6648610, -15050639, -1907502,
-7754027, 10512469, -4549444, -24551644, 8930848, -3902515, 8413304, -8804146, -10479183, 7707319,
--15865609, -12170327, 23738284, 354872, 10952703, -2233383, -10224707, 2850248, 13997298, 3401614,
-11140071, -17984638, -854699, -1217623, -2942053, -15460809, 15136538, -9001178, 1146756, -1760400,
-1861868, -5731097, -521839, 3176128, 4667556, -3823058, 9932112, -2433099, -3119757, -5788006,
--4901632, -4993437, 4798552, -1916629, -3451006, -1459215, 1304060, -3796214, 6962679, -2058900,
-7875360, -4895189, 3373160, 1221918, 3178276, 5082020, 1084479, 18233210, -8434779, -21275120,
-9006546, -11151346, 4552666, -365072, -10632728, 19417548, -26162794, -1159641, -31565326, 685584,
-25360708, 35512936, 16758962, -6195491, 16375637, -1331440, -2362769, 1687922, -2870112, 8671539,
--1161252, -16740709, 897648, -23232552, 8074002, -7246147, -5240397, 15444702, -392453, -17883170,
--19979650, 4533875, 2672007, -9998684, -8339753, 14825690, -21652540, -197032, -4430259, 7533910,
--5867999, -4760971, -17337172, -7417946, -7697119, -3302293, 12365211, -14840723, 5235029, -1880659,
--2637110, 1856500, 5286031, -25065966, -2736431, 3307125, -2284923, 9163850, -7949985, -11121818,
--5114233, -28038620, -12412455, -12269648, 504659, 11855183, 17892296, -8583492, 13518946, -23393614,
-37286220, 2482491, -6794639, 19469086, -23270670, 19541028, 8684424, -5328444, 320512, 6466610,
-431644, 3054259, 17783312, -7724499, 7536057, -4220342, 5426691, 8832600, 8685498, 10646687,
--3791383, 8964134, 2037962, 1275605, -1598802, -12120935, 359167, -8624831, 3837017, 5462662,
--1952600, -1420560, 1505386, 1136019, 5919002, 2698313, -4466766, 6450504, -186831, 687195,
-7966628, 5435818, 3125126, 14571213, -12145631, 8053, 5255966, -66035, -9564892, 2214593,
--6120329, -5758478, 22950158, 1328219, -16338592, -337692, -2447058, 10660109, 7039452, -9957882,
-11565810, 239444, -25729538, -28026272, -2650532, -8422431, 7037841, -1176821, -9868761, -25258702,
--22018686, 12059194, -18727668, -4184372, 1231045, 5967857, 1448478, 18056580, 1557999, -9088688,
-12127914, -1578937, 1816234, 11180337, -14646375, -938450, 3238942, -14972793, 9148817, 12487617,
-5487895, 11114838, 5847598, 17200270, 4744865, 12528956, -17510582, -5459977, -2745021, -23556286,
--67646, -2524904, 9931038, -1553704, 11375758, -1860795, -13626857, -9293772, -645319, -21786222,
-9625022, 627602, -4175782, 12779138, 8142185, 10619844, 11057393, 3389803, -1256815, 9276592,
--29510720, 8995272, 3787624, 13266080, -5165235, -20855288, 13212930, -3130494, 22662394, -33308546,
--11803107, -23319524, 16037408, -6783901, -21391622, -23895588, -15692200, -7055021, 7687455, 6023692,
--6499360, -6776385, -3506841, -409633, -7184407, -2726767, 12265353, 1914482, -1103807, 3604551,
-2731599, 2258616, 6687801, -5116917, -6743099, -153008, -11761231, 17180, -4089346, -1669669,
--7570954, -2041720, -10354629, -9308805, 11864847, -6582038, -366146, 3985730, 5745056, -986769,
-9965398, -8230231, -2607045, 4110284, -9656160, -2650532, 11423539, 4095251, 2601677, -3878892,
--5818607, 4402342, 15609522, 14469745, 53059488, 40082784, 5384815, 11589969, 3317862, 30787936,
-795643, 14964740, -14058502, 36475008, -14519137, 33075544, -1544041, 21114596, -2517925, 14890652,
--14905147, 3540127, 7401840, -8177081, -2718714, -4409858, -3484292, 9842991, 180389, -8559333,
--11797738, -17757006, -22594212, -10871636, -3850975, 104153, 7037841, -19020800, 7994545, -10481331,
--16175921, -3382824, -11833709, 5352066, -2925410, -24736328, -5932961, -12589623, -14944339, -15660525,
-14147085, 18948858, -39731132, 8979166, 3473018, 11123965, 3879966, -5021891, 23953032, 13487808,
-12509629, -33221036, -14912126, -449898, 8136279, 27480812, 979253, -3728032, 1280974, 23281408,
-20871394, -19833622, 22338662, 1654099, 4976794, -3792993, 13087302, -28261422, -9951439, 29123636,
--4523675, -1894081, -11271068, 19421842, 12637941, -10040560, -17048872, -2928094, -784368, 1729261,
-199716, -3630321, -15897821, -5413807, 12299176, 16203838, 9987410, -8936216, -2420214, -2607582,
--7718056, 2499671, 2507187, 7501161, -1701344, -5274220, 4629975, 1829119, 2769180, 14680735,
-1936493, -4060355, -5628555, 2543695, 5208722, 11441256, 2239289, -11078331, -5989332, -8311299,
-3254512, 4282620, -9239012, -19532974, 6273337, -1570884, -3344706, -6806450, -12103218, 14621679,
--5729487, 12746926, 19800872, -22284438, 6972880, -12713103, 37272264, -22003118, 21073794, 19435800,
--7346005, -34740916, -20212652, -2248952, -9224516, -988916, -15918759, -25294136, -33687040, -19276350,
--22422414, 9737765, -19174882, 8046085, 2308545, -2157684, -1962263, -15761456, -4865661, -16193100,
-4790499, 14566382, 19033148, 397284, -5317170, -16622597, -3954054, 1712618, -9894531, 2884071,
--13656385, -8862128, -1937030, -13527536, 10768020, -11941083, -35391604, 1368484, -1074816, -11642046,
-15114527, 11877732, 17219598, 6652905, 13553843, 27431956, 4627291, -27183384, -6194417, 12869870,
--5968394, -22586696, 12674448, 18000208, 6070937, -72478, -30600032, 27413166, -1281511, 22384832,
--18507550, 22668300, 55438900, -4849555, -1563368, -27012124, 14604499, -21962852, 18606872, 9496173,
--12090870, -2654827, -29895120, 6952479, -16288127, 314606, 11549704, 11596949, -375810, -7677254,
--6645925, 8286603, 20290500, -9773735, -1540820, 3173981, -8786429, -2509872, -2743410, 4313221,
--934155, 8570070, -3844533, -9652402, -5345624, 3008088, 7714835, -9553081, -2942053, -81604,
-1379221, 7219840, 1604170, -2349347, 2611877, -16255914, -9291088, -915365, -1432909, 3485366,
-1037772, 1423245, -226560, -2719251, 8420283, -339839, 6302328, -292595, -1705639, -5915781,
--4044786, -43641700, 14730664, -57222388, 37679212, 13447006, -9831180, 40156332, -3929358, -20559472,
-35617628, -13809930, -2004139, 7472706, 12420509, 32911260, 1285806, -2754685, 23229868, 9815074,
-19500226, 23869818, 17703318, 1572495, 12359842, 1895691, -1297617, -13174275, 8341900, 12496207,
-2989834, -817654, -14195404, 6730751, -13299903, 15896211, 15706695, 2679523, 18566606, -11516955,
-12247099, 19237696, 12274480, -26089778, -28015534, 32831804, -3216394, 20517596, 31906776, 707059,
-8590, -3373160, 6259378, 18402862, 17510582, 1784559, 14545980, -35970, -16625282, -20780662,
--30726732, 497679, -12480638, 398358, 17405892, 16262357, -28737626, 2424509, 11145977, -25245818,
-4187056, 35022772, -15204184, -17534204, 18825916, -20270636, 4665945, -5726802, 36781564, -10732586,
-22724672, -11310796, 19102404, -1835025, 7107634, 15215459, -24008868, -7358353, 9167608, -15954730,
-11684995, -14324253, -3935264, -8107825, -7330973, 988379, -3926137, -6590628, 3875671, 10889890,
--5474473, 2945274, 4023848, -9528922, 1713692, 1253594, -2400350, -6751152, -2725157, -5224291,
--15386183, -6171331, 3362960, -20309826, 7393250, -10429791, 7881802, -4762045, -1899449, -14256070,
--7359964, 130460, 4000762, -6318971, -13785771, 2267743, 1024887, 7398081, 3280281, -24696,
-9104257, 7191386, 858457, 6171868, 4281009, -19846508, 4566624, -23011898, 47649976, 11774653,
--25269440, 9771587, -5779416, -22487912, -26513370, -26914412, 8115878, -1219771, 23961622, 35475892,
-17111686, 8678518, -4169876, 11853573, 1236414, -44398152, 19632832, 46335180, -30154966, -31705986,
--27368606, -38779260, 28230820, -38185480, 17340394, 340913, -4683125, -159988, -12330851, -14721537,
-19102940, -39296268, 40587976, 23311472, 5476620, -25832080, -19478214, -17085916, 3729105, 6833830,
--16662862, -2253784, -12277701, 27941446, 12736189, -4974109, -744640, 11520713, 2674154, 13139379,
--22698366, -8978629, -2086280, -3992172, -21107616, -14879377, 12694850, -40288940, -23697482, 3107946,
-47246788, 22786412, -14272176, -932545, -35750772, 17470316, 54786064, 1961190, -11669963, -8196408,
--25740812, 33711736, -10744398, -12994424, -1046361, 19989314, 12630425, -17301202, -15531675, -5563057,
-17678086, -4676146, 5237176, -1357210, -13882408, -4514548, 22374096, 12776991, 1908576, -10332081,
--1569811, -1557999, 17464410, 14166413, 7163469, 6404333, -20536922, 7895224, 7503845, -3077881,
-4758287, -3218004, -2868501, -18046916, -1838783, -918586, -2477659, -5755793, 4919885, 6626061,
-3554622, -21229486, -18193482, -9000104, 16106, 1295470, -21343304, 7641821, 27001922, 5428839,
--7392713, 506806, 4250944, 85362, -11605002, -8902393, -2975339, 3651796, 192200, -21986474,
--15107547, -44088912, 9799505, -32446330, -48593260, 11592654, 27072790, 6776385, 7363185, -20477868,
--25669408, -6556268, -38094748, -18635864, 10107132, -31839130, 50512572, 9960566, -12262132, 10985453,
--24031952, -47579648, -15895674, -36354212, 5906654, 10817949, -13282723, -25811680, -13062069, -15865609,
-14106820, -18893562, -6851010, -2317672, 21661668, -15442555, -2756832, -7139310, 5601174, 9168145,
-1729261, -6292664, 22333830, 29251412, 18687940, -14740865, -12127914, -42636676, -23739358, -9625559,
-11408507, 72058280, -12214887, 1003412, 32079110, -2748242, 13698798, -16197395, -16963510, -13609678,
-15247671, -40434968, 362388, -5224828, -465467, 35283692, -15396384, 53331684, 4752918, 40453760,
--51315732, -15247134, 14900852, -862752, -22246856, -18618684, 41720240, -42811160, -35415228, 51302848,
-9043054, 44564580, -17609902, -2797634, -3058017, 14449881, 6136972, -3914326, 15144592, 15306727,
--797253, 7283728, 4793184, 1760400, -5238250, -9405978, -2163590, -6169721, -8463233, 8055211,
-4599910, -7019051, 5158256, -15522549, -1538135, 11244761, 19357954, -1387274, -12191802, -758599,
--13880797, 8108362, 13298292, -9108015, -7631620, 7639136, 8864276, -19654308, 7086696, 1046361,
-12923557, -8258685, -8704825, 76773, 4085588, 6199249, -22328462, 3799972, -9474698, 17872432,
--6196564, -3979824, -2586644, -44065828, 21050708, 32422708, -23440858, -19246822, -6563247, -21143588,
--25508348, 6878927, 7583302, 19905026, 899796, 17403208, 30877594, 32261646, 21386252, 7461969,
--23589572, 2390686, 12291123, 16357383, 25044492, 338766, -12946105, -18772228, -7112466, 25463788,
--10410464, 10064719, 22058416, 2253784, 43338368, 5078799, -27662274, 23990614, 23605678, 6896107,
-10175314, 21995064, 3494493, 1947231, -25395604, 54934780, -58472760, -42884712, -49882824, -16415365,
-10305237, -29219200, 15044197, 32807108, -9717900, 3303904, 28823526, 9315784, -31272730, -10747082,
--24209656, -3365107, 1776506, 1695975, 27860916, 27524298, -6331319, -6815576, 17488034, 42329052,
-7295539, 34845608, -29327648, 30987652, -13581223, 10347650, -6213744, -19585050, -13748727, -3007014,
-13934485, 8679055, 34406448, -44464724, 22641994, -17524540, -11064373, -8571144, 16457241, -7738994,
--1609539, 3709778, -17941690, 11317776, -8816494, -486942, -13642964, 4314295, -2822867, 716186,
--15362024, 2387465, -1486059, 3172370, -1582696, -16539382, 6562710, -9368397, -8734890, -3809636,
-12320651, 14505715, 15789910, -13511967, 27215598, -20467130, -6322729, 1684701, -2343442, -15093052,
--8299488, -755914, -11534135, 3386582, -1067836, -369904, -1488743, -11151346, 1319092, -1755031,
--651761, -24976846, -50236620, -50563040, -36600100, 7493108, 93889592, 23718956, -12969727, -28406914,
--67874976, -95463704, 21531744, 39517456, 47437912, -10000831, 4094178, -28003186, -48711908, 14024679,
-8820789, 15829102, 2268817, -40850508, -12498355, 9961640, -8232379, -1627256, -7748658, 53191024,
-46698644, 31488552, -2908230, -22855132, -38813620, -25693032, -23237384, 36327372, -6049999, 26577258,
-11999602, 12436615, -16379395, -88428544, -60899416, 30038464, -47927004, -16365436, 101971648, 70115880,
-52668112, -39968964, 28832652, -27690192, 1990717, 2004139, 14769856, 43245488, 76219024, -29218126,
--2755222, -50303732, -40660992, -66566624, 7184407, -2771865, -71687296, -17188996, 46111304, 17221746,
-32171452, 43636332, 78636560, -57342108, -34443492, 4522064, -46828564, -6058588, 26114474, 61256972,
-31111132, 9538585, -37447820, -35890356, 24157044, -10244034, 36069136, 31721018, -8625368, 14512694,
-5791764, -6148246, -12071542, -7036230, -4588636, 10745471, 3071975, -319438, 3697430, -1166084,
-5153961, 94489, 22796076, 18743238, 29731912, 5315559, -16437377, -34528316, -28229210, 11402601,
-26704496, 30609696, -3914326, -19665044, -79362408, -40818296, -37608344, 827318, 3945464, 8025684,
--355945, 5823976, -9054865, -128849, -13365938, -11973832, 16689706, 14697915, 8519605, 8581882,
-4282620, 1866163, 3726421, 23226646, -37755984, -124970128, -116288920, -66763656, -72597296, -18122078,
-120341224, 61127584, 123814240, 109859896, 172228720, 122986392, 105804368, 17047798, -45941656, -103872712,
--166413872, -141344160, -142329312, -74412456, -35712116, -8413304, 1186485, 4064113, 29382946, 39241504,
-99039264, 60117732, 116878408, 76107896, 100190312, 36218384, 96810712, 33601676, 23689428, 22880902,
--5750961, -27207008, -65523484, -75654240, -140379392, -96204048, -177887888, -140784736, -215903168, -128044784,
--101562552, -24544128, 59351080, 31523450, 5348845, 59198072, 126626376, 169092864, 221765808, 264282224,
-226193376, 165184976, 206066096, 169965808, 95326800, 42820824, -10539850, -70924944, -163972192, -194827776,
--260823696, -336830656, -389721024, -351761056, -309951680, -220660384, -150590688, 46105936, 145321824, 177027808,
-272721824, 227629504, 284420256, 298820192, 293228160, 337933408, 221921504, 57591752, -55796992, -108360952,
--134006736, -86852832, -125495184, -107690400, -125592360, -170099488, -171936672, -200292576, -118501368, -92356832,
--78626352, -44029320, -2595771, 11770895, 48714592, 131985952, 139207936, 197487968, 172036528, 225870720,
-166221136, 110969072, 114644488, 43630424, -29942364, -49080200, -217787056, -280961728, -261463120, -230867376,
--135031088, -106107704, -57873612, 5050345, 59042380, 89746560, 122198264, 145674560, 173430240, 164499392,
-155720480, 136929456, 76744624, -300111, -38511360, -90315648, -94247152, -80909664, -65776888, -68793032,
--69345472, -54661512, -38881804, -23109072, -9186935, -8630737, -5681168, 2371359, -5889474, -7402376,
-10667625, 23259396, 26505854, 17559436, 13641890, 20933134, 26779658, 21045340, 25551834, 33587180,
-41008348, 34887484, 8455180, -4130148, -1467268, -1749662, -11314554, -9800042, -6849399, -15786152,
--25914758, -32639604, -30975304, -27277338, -21926344, -18196166, -10467909, -4167192, -2336462, -1035087,
-4993437, 10080825, 13377749, 14493904, 15471009, 12569759, 10346576, 10069551, 6594386, 1457605,
-3268470, 4005594, 1468879, -1540820, -2433636, -119722, 4810900, 6691022, 5814849, 5041755,
-7487739, 5913633, 1737314, -2017561, -4309463, -6175626, -7748121, -12868259, -15598247, -14781130,
--15588584, -18523658, -14382235, -5492727, 603443, 1969779, 5387500, 9977209, 12601434, 11283416,
-11292543, 12510703, 11515344, 8492761, 6075768, 3447785, 1685775, -354335, -1882806, -2112050,
--1903744, -2341294, -3115999, -3331284, -2873333, -2536178, -2312303, -1957431, -1450088, -1095754,
--820339, -676994, -520765, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+5090610, -6489159, 817118, -2736968, -835908, 2556043, -4011500, -7315940, -1848983, 641024,
+-4179540, -2405719, 3586298, -2092186, 1675037, -9168681, -760209, 6233072, 3339874, -10261214,
+-3510599, -2680597, -2700998, 3486977, -1469953, -5339181, -3332895, -3813394, -3865471, 6786585,
+2148558, 4374961, -2795487, 5741835, 5240934, 3723200, -2028835, -4852776, -3787088, 413927,
+1003949, 7804493, 2798171, 1491964, -3637301, 855235, 372588, 899259, 3126199, 1836635,
+-5255966, -4494684, -2288144, 2853469, 701690, -993748, -5619965, -1726577, 2259153, 2565169,
+-2243584, -861678, 166967, 2714419, -544924, -2994666, 44560, 431107, -3819300, 8218957,
+558883, -5580773, 33823, -862215, 5319854, 420907, 3614752, 4927401, 1892470, -340913,
+281320, -1796907, -1124745, -1197222, 3176128, -1016834, -362388, -1421634, 1123671, 370441,
+-564251, -137976, -775778, 155693, -76236, 625992, 680752, 1036698, 1330366, -5672578,
+-5135707, 5773510, 5294084, -4325032, 3179350, 296890, 1628330, -14149233, 5442261, -2124398,
+-9665824, -12602508, 319975, 9068287, 531502, 5870684, 202400, -11401528, -3942780, 1285269,
+3962644, -2029372, -988916, -4815732, 619549, -896038, 8025684, 4060355, 1694902, 1416266,
+2171106, 2765422, 7317551, 4416300, -6489159, -576599, 1493575, 1540283, -7714835, 2479270,
+-2302103, -4899484, -1390496, -233539, 5258651, 1327682, -2956011, 5309654, 8308078, -1789928,
+-3166465, 1984275, -606127, 4520453, 4627291, 3602941, -5572183, -4262218, 3979824, -1712081,
+-1406065, -4294431, 453119, -6364605, 3764539, 3371549, 4457103, 1119376, 5181341, -5644661,
+-3536906, 7262790, 373662, 2675765, 8601209, 3299072, 839666, -3495567, 5042829, 579284,
+-2569464, 1416266, -6094559, 145492, -648540, 879395, 1627793, -722091, -2719788, -1514513,
+-448287, 1298691, 1236414, 392453, -755914, 715649, 1713155, 275952, -574989, -555661,
+7516, 7188702, 636192, 2783676, -6051609, -5139465, 2942590, -1424319, -2213519, -2810519,
+-2630131, 2185065, -7003481, -4013110, -8648990, -10387915, -1924145, 8650601, 5574868, -3490735,
+-974958, -1198833, -2015413, -7480223, 5388037, -1875290, -1924682, 476205, 3520800, -1682554,
+309775, -255014, 5099737, -4713190, 5115306, 2798171, 6133214, -2088965, 4744328, 2115272,
+-2940442, 4284767, -2907693, 2469069, 4545149, -3427921, 4773320, -2847563, -2308008, -716723,
+-1419487, 2411624, -1397475, -3628174, 1454383, -3148748, 685584, 435402, 484794, 7211250,
+1393180, -1650341, 33286, -2947958, -4130148, 2137283, -1001264, 6884833, 7005092, 2851322,
+-1955821, -1075889, -59593, -2756832, -3208341, 3545496, 5549098, 186831, -615254, 3427384,
+3678640, -473520, 1292248, 1193464, -2692408, 2551748, -498753, 3659312, -1822140, -690416,
+-150861, -1510755, -179315, 2668249, -595390, 814433, 766115, -1871532, 574989, -336618,
+-394063, 768799, 681289, -1194538, 1356673, -455803, -605590, 109522, -170725, -216896,
+-1114544, -805306, 353798, 13716515, -5801427, 5624260, -6991133, -5879274, 29528, -1630477,
+-1486596, 1912871, -2940979, 5932961, 5788006, 4959614, -1487132, -644782, -2581812, -6328635,
+990527, -3801046, -702227, 696322, -2119030, 3608846, 1365800, -431107, -10448045, -4359929,
+-6584185, 249108, -4307316, -6621766, -2901787, -3658239, -4047470, 6595459, -5267778, 4649839,
+404801, -1868848, 2604898, 2238752, -4721780, -1292248, 99321, 5093831, -483184, -6960532,
+-8831527, -9193377, 2393908, -3357591, 203474, -727460, 1331440, 3109556, 5112085, -3529390,
+-1868848, 1683627, 1758789, 656056, 6410239, -3585224, 3964255, -7362111, 14432164, 1775432,
+-1535988, 2806761, 1381906, 2760053, -4012036, -706522, 1095754, -444529, -863825, -7282654,
+-2421825, -4949413, -1473711, -578747, -3569655, -3488587, 2592013, 3028489, 922344, 595927,
+-333934, 2558727, 1503239, 2937758, -1472100, 259309, 89657, 2699387, -1083942, -158377,
+-165893, 301185, -2138357, 526134, -1548336, 780610, 1075889, -511638, -1801202, 359704,
+551903, -555125, -622233, -1934346, 507343, -226560, -991064, 1221381, 1401233, -179315,
+-413927, -6754373, 930934, 1198833, 401579, -1105954, -4059818, 2343442, 1870458, -6107981,
+7076496, -8924942, 10910291, -1123134, 3614752, 1564979, -264141, -1229971, 2213519, 10213432,
+11474542, -2259153, 2034741, -1440962, -1672353, 1472100, 2407866, 7839926, -1037772, 2336999,
+-4030827, 4272419, 926639, 6168647, 2981781, 5774047, -8439074, 3488050, 3033321, -2704219,
+-117575, 6272263, -1611, 438087, 1897839, 3792993, -1333587, -606127, 12183748, 5752035,
+1056562, 1052804, -2576444, 5484673, -7402376, -10872710, -13113072, -865973, 6860137, -272730,
+3409667, 9244380, 3656628, -1709934, -3293703, 4898947, -983011, 11902965, 5359046, 1711008,
+1654099, -6595459, 1370632, 4866198, -2527588, -7419019, 1275605, 2579665, -335544, -2621004,
+-952946, 1184337, -2403034, 1315871, 1349157, 1181653, -486942, 1373853, -2355790, -2253247,
+-730681, -1455994, 740345, -2262374, 1258962, 2081449, 1406065, 1552631, 1618129, 441308,
+1036161, -3095061, -2558727, -1023813, -1345399, -1651952, -332323, 940598, 557272, -182536,
+1891933, 954557, -147103, 2315524, 1483911, -80531, -16011101, 1646046, -1265942, 10876468,
+-8249022, 4736812, -16945256, 6581501, -1649804, -8674760, -9511205, -6684043, 4990215, 3870839,
+12767864, 1631551, 4220342, 12199855, -2180770, -8998493, 1293859, -6951405, 1636919, 9931575,
+1817308, -2878702, -1233193, -1989107, 2901251, 3799436, -863825, 2514167, 5116917, -3294777,
+1596117, -6127845, -504659, -7650411, -1221381, 953483, -3623879, 5506685, 3783866, 4679904,
+9461813, 524523, 11457899, 8711804, 4224637, -6059125, 13146895, 5583995, 2287607, 11460046,
+-1292785, 170188, 936840, 3742527, -2432562, -3463354, -7936026, -7749732, -6271726, -24696,
+-4953171, 10036265, -6129455, 4095251, 6302865, -3649112, 303332, -3002719, -1720134, -10053445,
+-11413876, 5109938, -2006824, -3924526, -3398930, 870805, 1313723, 666794, 2211908, -4086662,
+9299141, 549756, 2784213, -2017561, 500901, 2666101, -4559108, 1422171, 158377, 1459752,
+2096481, -124017, 1634772, 3070365, -7516, 803159, 2279554, 2415382, 3284039, -256087,
+552977, -1806571, -481573, 48855, -798864, -2509335, 160524, -811212, -1040993, 137976,
+-972810, -1393180, 13328894, 486405, 140123, -1257352, -2630668, 2375654, 534187, -6835441,
+-8750996, -11855183, -6221260, -12403329, -7892540, -4241280, -9181566, -5818070, -4028143, -4786741,
+-12404939, 8468602, 5298916, 288300, 4454418, 2029909, -3462818, 15348066, 921271, -5340255,
+-2815351, -10449655, -4508642, 11421929, 530428, -9635222, -9630927, 1371705, -9748502, 3087545,
+3381213, -7601019, 271120, 2338073, 508417, 11240466, 3346317, -5174899, 1108638, -6198712,
+5658620, 780610, 2488934, -13809394, 9473087, -4765266, 3928821, 289910, 1811939, 2232846,
+323733, -4043175, -348966, -5411122, -20938, -10894721, -92879, -11751031, 15418933, -2658585,
+9797357, -7260642, -3414499, -1584306, -7494718, -4198331, 6002217, -249108, -266288, 4442070,
+5767604, 897111, 9440875, 8169565, 11360725, 6036040, 2385854, 1356673, 5137855, 2729452,
+1684701, 2070711, 1134408, 2505577, -754304, 4115116, 687195, -302258, -911070, 3197066,
+1276142, 2265059, 1115081, -1555315, 1064615, 1239635, 1030792, -2540473, 4733054, 2536178,
+-505732, -3684545, -442382, -587874, -2665564, 915365, 430570, 2676838, -2281165, -5076115,
+-6799470, 20938, 5088463, -13105019, 45634, -5637145, -4502200, 9364639, -15122580, -14282377,
+3786014, 19159312, 540629, 1866700, 1520418, -2863133, 10515691, 10210211, 5921150, 2932389,
+-2704219, -15484431, 9259413, 128312, -12394202, -3965866, 2937221, -579284, 155156, 1321776,
+-2945811, -12205223, -639413, 550830, -2189360, -5070746, 3728569, 10678899, -13662828, 8581345,
+-5090610, -2532957, 865436, 6819335, 22333830, -14361297, -3581466, 1464047, -1378685, -2588255,
+787053, -5475547, 1973001, -4940286, 15370614, 5317707, 2920578, 4277251, -3187403, -834834,
+8159901, -1224603, 3575024, -6693170, 11811697, 572841, -8274792, 16498580, -10430865, 7623567,
+2209224, 3785477, 12013560, -4718022, 5144834, -532039, 74625, 1492501, -749472, -8024610,
+-4226248, -468688, -3517578, -1216550, -1893544, -4902169, -5009543, -3750580, 2412698, -4286378,
+2552284, -1108102, -124017, -3754338, -2549600, -2756295, 2292976, -5202816, 583042, 561030,
+3245922, 5044976, -1901597, -897111, -4437775, -3785477, 326418, -3324305, 1008244, -572841,
+-2931315, 110059, -847182, 1414118, 1857573, -1200443, 16273094, 1248762, 4224637, 4810900,
+-2753611, -9407052, -7383049, 1103270, 16278463, 9218610, 1981591, -14602889, 2075543, -8041790,
+22549, 16290274, 15662672, 7902740, 10579041, -9589588, -19841138, -10397042, -14307610, 7897371,
+-168041, -2435247, -81604, -10828686, -3235721, 3322694, -2058363, -4127464, -4022774, 11537893,
+-774705, 3124589, -3313567, 7558069, 1578401, -4392678, -9220221, -7081328, 20895552, -920734,
+-4759361, 6665789, -11985106, 3730179, -6871948, -20910586, -4715874, -2737505, 6293738, 2403034,
+5525476, 1744831, 8237211, 290447, 544387, 4557497, -20448340, -3244848, -5515275, -1477469,
+1952063, 11705933, 12923020, 4649839, -3420942, -8950712, -11764989, -3958349, -6935299, 1460289,
+-3466039, -3677029, -8113730, 12072079, 8681203, 3523484, 11085847, -2666101, 4407174, 6801081,
+-4376572, 4043712, -2831994, 870805, 4021163, -1252520, -2724083, -1136019, -1520418, -1074279,
+-129923, 256087, 3981972, 143881, 442382, 1217086, -2270427, -6198175, 210990, -1458678,
+-841277, -1136019, -3676492, -430034, 1171989, 5479842, 4476967, -2567317, 593242, 3600256,
+-807991, 816044, -1343251, 813359, 3426310, 420370, 3762928, -23602992, -15431281, -3570192,
+-5617281, 12064026, 8288213, -1974074, 20772610, -20986284, -4890357, -7917772, 22187264, 10647224,
+-7285875, 8182987, 3115999, -8629126, 15324980, -16891570, 8370355, -7776039, 1326608, 1847910,
+-5634460, 14799384, -10391673, 9090298, -4324495, -21759914, -3605088, 15210627, -9199283, -14854681,
+209380, -1846836, -22230214, -4151623, 8928700, 3790309, 11865384, 8727374, -2506114, 21395380,
+-5112622, -6580427, -10513543, -9788767, -9468255, 5877126, 7992934, -6880001, -7761543, 2567854,
+-6731825, 8973797, -2465311, 4873178, -3637837, -5556077, -4264903, -118112, -12583180, 3412889,
+9080098, -2118493, 3928821, 5458367, 6447820, 11623255, -8313983, 3740917, 9062918, -1165010,
+-19299972, -20543366, 2263448, -1950989, 1527398, -7517804, -3122978, 1516124, -7442105, -13500693,
+-4125853, 10190884, 8266739, -4060892, -1647120, 3136400, 2793339, -1607928, -3282429, 244276,
+-435402, -5309117, -1970316, 5641440, -1626182, 4532264, 814970, -1411971, -2782065, 3639985,
+3586298, 4212826, 500901, -2368138, 2442226, -6326487, -3799436, 3115462, 1450625, 2672544,
+4919348, -2518998, 1014686, 1930051, 2394981, 456877, -2895345, -4154844, 1848983, -2264522,
+-1392106, 16779364, -10826002, -27066884, -24696, 19059454, 24366424, 4444218, -9178345, -6915971,
+2377265, -4509716, -4013110, 10636487, 10784126, -5487895, 10400800, -13496398, -1775969, 9511742,
+-4845797, 11545946, 5355824, -1750199, -16204375, 6016176, -3899294, -3947612, 684510, -1328756,
+-1851131, 21912386, -10976326, 11121818, 18748070, 12972949, 6753836, 118112, -12625056, 12361453,
+-7131793, 11771968, -6854768, 2622615, -13266617, -2653753, -12547210, -8272107, 1733019, -11669963,
+-3343095, -4148939, -624918, 10155450, -12261058, -10540923, -3952981, -6106370, -2609730, -10450192,
+-13494787, -16822314, 1532230, 12829067, -1052804, -8353175, 1232119, 2638721, 10137733, -11447698,
+-6637335, -3737695, -442919, 7597261, -17180, 2041720, -7963406, -3376381, 3923453, 15522012,
+6862284, 10692321, 12419972, 16222091, 6217502, -2314987, -5879274, 3884261, 4911832, 7115687,
+2988224, 607201, -74625, 9820443, 3468186, -3747896, 714575, 5476620, 2172717, 1271310,
+-3704409, -3629247, -2602213, -5019206, 271657, 4605816, 4431333, 919660, -2723009, 6455336,
+3712462, 8196408, 4263292, 178778, 5484137, 4295, -4349728, 6271726, -99858, -925565,
+-2466922, 1189706, -1566589, -192200, 5496485, 3192235, -45167488, -21471616, 15071577, -36884104,
+-25564182, -1650341, -15044197, -10320806, 11260867, 12869333, 3950296, -2369211, 4669703, 36830420,
+-4506495, 5888937, 14190035, 16156593, -16787416, -8721468, -7943542, 13595719, 14858439, 7453916,
+2747169, 13898514, -4070019, -6971269, 9780714, 18811420, 1358283, 6076305, 19157164, 14113799,
+11532524, -8593693, 3648038, 5794448, -12885, -318364, 12308839, -4030290, -167504, -1245541,
+8231305, 304943, -13407277, -8994735, 2724083, -18245558, 13852343, -4054449, 30569430, 1215476,
+16781510, 3320547, -697932, -9848897, -439160, 3913789, -12879533, -6648610, -15050639, -1907502,
+7754027, 10512469, -4549444, -24551644, 8930848, -3902515, 8413304, -8804146, -10479183, 7707319,
+-15865609, -12170327, 23738284, 354872, 10952703, -2233383, -10224707, 2850248, 13997298, 3401614,
+11140071, -17984638, -854699, -1217623, -2942053, -15460809, 15136538, -9001178, 1146756, -1760400,
+1861868, -5731097, -521839, 3176128, 4667556, -3823058, 9932112, -2433099, -3119757, -5788006,
+-4901632, -4993437, 4798552, -1916629, -3451006, -1459215, 1304060, -3796214, 6962679, -2058900,
+7875360, -4895189, 3373160, 1221918, 3178276, 5082020, 1084479, 18233210, -8434779, -21275120,
+9006546, -11151346, 4552666, -365072, -10632728, 19417548, -26162794, -1159641, -31565326, 685584,
+25360708, 35512936, 16758962, -6195491, 16375637, -1331440, -2362769, 1687922, -2870112, 8671539,
+-1161252, -16740709, 897648, -23232552, 8074002, -7246147, -5240397, 15444702, -392453, -17883170,
+-19979650, 4533875, 2672007, -9998684, -8339753, 14825690, -21652540, -197032, -4430259, 7533910,
+-5867999, -4760971, -17337172, -7417946, -7697119, -3302293, 12365211, -14840723, 5235029, -1880659,
+-2637110, 1856500, 5286031, -25065966, -2736431, 3307125, -2284923, 9163850, -7949985, -11121818,
+-5114233, -28038620, -12412455, -12269648, 504659, 11855183, 17892296, -8583492, 13518946, -23393614,
+37286220, 2482491, -6794639, 19469086, -23270670, 19541028, 8684424, -5328444, 320512, 6466610,
+431644, 3054259, 17783312, -7724499, 7536057, -4220342, 5426691, 8832600, 8685498, 10646687,
+-3791383, 8964134, 2037962, 1275605, -1598802, -12120935, 359167, -8624831, 3837017, 5462662,
+-1952600, -1420560, 1505386, 1136019, 5919002, 2698313, -4466766, 6450504, -186831, 687195,
+7966628, 5435818, 3125126, 14571213, -12145631, 8053, 5255966, -66035, -9564892, 2214593,
+-6120329, -5758478, 22950158, 1328219, -16338592, -337692, -2447058, 10660109, 7039452, -9957882,
+11565810, 239444, -25729538, -28026272, -2650532, -8422431, 7037841, -1176821, -9868761, -25258702,
+-22018686, 12059194, -18727668, -4184372, 1231045, 5967857, 1448478, 18056580, 1557999, -9088688,
+12127914, -1578937, 1816234, 11180337, -14646375, -938450, 3238942, -14972793, 9148817, 12487617,
+5487895, 11114838, 5847598, 17200270, 4744865, 12528956, -17510582, -5459977, -2745021, -23556286,
+-67646, -2524904, 9931038, -1553704, 11375758, -1860795, -13626857, -9293772, -645319, -21786222,
+9625022, 627602, -4175782, 12779138, 8142185, 10619844, 11057393, 3389803, -1256815, 9276592,
+-29510720, 8995272, 3787624, 13266080, -5165235, -20855288, 13212930, -3130494, 22662394, -33308546,
+-11803107, -23319524, 16037408, -6783901, -21391622, -23895588, -15692200, -7055021, 7687455, 6023692,
+-6499360, -6776385, -3506841, -409633, -7184407, -2726767, 12265353, 1914482, -1103807, 3604551,
+2731599, 2258616, 6687801, -5116917, -6743099, -153008, -11761231, 17180, -4089346, -1669669,
+-7570954, -2041720, -10354629, -9308805, 11864847, -6582038, -366146, 3985730, 5745056, -986769,
+9965398, -8230231, -2607045, 4110284, -9656160, -2650532, 11423539, 4095251, 2601677, -3878892,
+-5818607, 4402342, 15609522, 14469745, 53059488, 40082784, 5384815, 11589969, 3317862, 30787936,
+795643, 14964740, -14058502, 36475008, -14519137, 33075544, -1544041, 21114596, -2517925, 14890652,
+-14905147, 3540127, 7401840, -8177081, -2718714, -4409858, -3484292, 9842991, 180389, -8559333,
+-11797738, -17757006, -22594212, -10871636, -3850975, 104153, 7037841, -19020800, 7994545, -10481331,
+-16175921, -3382824, -11833709, 5352066, -2925410, -24736328, -5932961, -12589623, -14944339, -15660525,
+14147085, 18948858, -39731132, 8979166, 3473018, 11123965, 3879966, -5021891, 23953032, 13487808,
+12509629, -33221036, -14912126, -449898, 8136279, 27480812, 979253, -3728032, 1280974, 23281408,
+20871394, -19833622, 22338662, 1654099, 4976794, -3792993, 13087302, -28261422, -9951439, 29123636,
+-4523675, -1894081, -11271068, 19421842, 12637941, -10040560, -17048872, -2928094, -784368, 1729261,
+199716, -3630321, -15897821, -5413807, 12299176, 16203838, 9987410, -8936216, -2420214, -2607582,
+-7718056, 2499671, 2507187, 7501161, -1701344, -5274220, 4629975, 1829119, 2769180, 14680735,
+1936493, -4060355, -5628555, 2543695, 5208722, 11441256, 2239289, -11078331, -5989332, -8311299,
+3254512, 4282620, -9239012, -19532974, 6273337, -1570884, -3344706, -6806450, -12103218, 14621679,
+-5729487, 12746926, 19800872, -22284438, 6972880, -12713103, 37272264, -22003118, 21073794, 19435800,
+-7346005, -34740916, -20212652, -2248952, -9224516, -988916, -15918759, -25294136, -33687040, -19276350,
+-22422414, 9737765, -19174882, 8046085, 2308545, -2157684, -1962263, -15761456, -4865661, -16193100,
+4790499, 14566382, 19033148, 397284, -5317170, -16622597, -3954054, 1712618, -9894531, 2884071,
+-13656385, -8862128, -1937030, -13527536, 10768020, -11941083, -35391604, 1368484, -1074816, -11642046,
+15114527, 11877732, 17219598, 6652905, 13553843, 27431956, 4627291, -27183384, -6194417, 12869870,
+-5968394, -22586696, 12674448, 18000208, 6070937, -72478, -30600032, 27413166, -1281511, 22384832,
+-18507550, 22668300, 55438900, -4849555, -1563368, -27012124, 14604499, -21962852, 18606872, 9496173,
+-12090870, -2654827, -29895120, 6952479, -16288127, 314606, 11549704, 11596949, -375810, -7677254,
+-6645925, 8286603, 20290500, -9773735, -1540820, 3173981, -8786429, -2509872, -2743410, 4313221,
+-934155, 8570070, -3844533, -9652402, -5345624, 3008088, 7714835, -9553081, -2942053, -81604,
+1379221, 7219840, 1604170, -2349347, 2611877, -16255914, -9291088, -915365, -1432909, 3485366,
+1037772, 1423245, -226560, -2719251, 8420283, -339839, 6302328, -292595, -1705639, -5915781,
+-4044786, -43641700, 14730664, -57222388, 37679212, 13447006, -9831180, 40156332, -3929358, -20559472,
+35617628, -13809930, -2004139, 7472706, 12420509, 32911260, 1285806, -2754685, 23229868, 9815074,
+19500226, 23869818, 17703318, 1572495, 12359842, 1895691, -1297617, -13174275, 8341900, 12496207,
+2989834, -817654, -14195404, 6730751, -13299903, 15896211, 15706695, 2679523, 18566606, -11516955,
+12247099, 19237696, 12274480, -26089778, -28015534, 32831804, -3216394, 20517596, 31906776, 707059,
+8590, -3373160, 6259378, 18402862, 17510582, 1784559, 14545980, -35970, -16625282, -20780662,
+-30726732, 497679, -12480638, 398358, 17405892, 16262357, -28737626, 2424509, 11145977, -25245818,
+4187056, 35022772, -15204184, -17534204, 18825916, -20270636, 4665945, -5726802, 36781564, -10732586,
+22724672, -11310796, 19102404, -1835025, 7107634, 15215459, -24008868, -7358353, 9167608, -15954730,
+11684995, -14324253, -3935264, -8107825, -7330973, 988379, -3926137, -6590628, 3875671, 10889890,
+-5474473, 2945274, 4023848, -9528922, 1713692, 1253594, -2400350, -6751152, -2725157, -5224291,
+-15386183, -6171331, 3362960, -20309826, 7393250, -10429791, 7881802, -4762045, -1899449, -14256070,
+-7359964, 130460, 4000762, -6318971, -13785771, 2267743, 1024887, 7398081, 3280281, -24696,
+9104257, 7191386, 858457, 6171868, 4281009, -19846508, 4566624, -23011898, 47649976, 11774653,
+-25269440, 9771587, -5779416, -22487912, -26513370, -26914412, 8115878, -1219771, 23961622, 35475892,
+17111686, 8678518, -4169876, 11853573, 1236414, -44398152, 19632832, 46335180, -30154966, -31705986,
+-27368606, -38779260, 28230820, -38185480, 17340394, 340913, -4683125, -159988, -12330851, -14721537,
+19102940, -39296268, 40587976, 23311472, 5476620, -25832080, -19478214, -17085916, 3729105, 6833830,
+-16662862, -2253784, -12277701, 27941446, 12736189, -4974109, -744640, 11520713, 2674154, 13139379,
+-22698366, -8978629, -2086280, -3992172, -21107616, -14879377, 12694850, -40288940, -23697482, 3107946,
+47246788, 22786412, -14272176, -932545, -35750772, 17470316, 54786064, 1961190, -11669963, -8196408,
+-25740812, 33711736, -10744398, -12994424, -1046361, 19989314, 12630425, -17301202, -15531675, -5563057,
+17678086, -4676146, 5237176, -1357210, -13882408, -4514548, 22374096, 12776991, 1908576, -10332081,
+-1569811, -1557999, 17464410, 14166413, 7163469, 6404333, -20536922, 7895224, 7503845, -3077881,
+4758287, -3218004, -2868501, -18046916, -1838783, -918586, -2477659, -5755793, 4919885, 6626061,
+3554622, -21229486, -18193482, -9000104, 16106, 1295470, -21343304, 7641821, 27001922, 5428839,
+-7392713, 506806, 4250944, 85362, -11605002, -8902393, -2975339, 3651796, 192200, -21986474,
+-15107547, -44088912, 9799505, -32446330, -48593260, 11592654, 27072790, 6776385, 7363185, -20477868,
+-25669408, -6556268, -38094748, -18635864, 10107132, -31839130, 50512572, 9960566, -12262132, 10985453,
+-24031952, -47579648, -15895674, -36354212, 5906654, 10817949, -13282723, -25811680, -13062069, -15865609,
+14106820, -18893562, -6851010, -2317672, 21661668, -15442555, -2756832, -7139310, 5601174, 9168145,
+1729261, -6292664, 22333830, 29251412, 18687940, -14740865, -12127914, -42636676, -23739358, -9625559,
+11408507, 72058280, -12214887, 1003412, 32079110, -2748242, 13698798, -16197395, -16963510, -13609678,
+15247671, -40434968, 362388, -5224828, -465467, 35283692, -15396384, 53331684, 4752918, 40453760,
+-51315732, -15247134, 14900852, -862752, -22246856, -18618684, 41720240, -42811160, -35415228, 51302848,
+9043054, 44564580, -17609902, -2797634, -3058017, 14449881, 6136972, -3914326, 15144592, 15306727,
+-797253, 7283728, 4793184, 1760400, -5238250, -9405978, -2163590, -6169721, -8463233, 8055211,
+4599910, -7019051, 5158256, -15522549, -1538135, 11244761, 19357954, -1387274, -12191802, -758599,
+-13880797, 8108362, 13298292, -9108015, -7631620, 7639136, 8864276, -19654308, 7086696, 1046361,
+12923557, -8258685, -8704825, 76773, 4085588, 6199249, -22328462, 3799972, -9474698, 17872432,
+-6196564, -3979824, -2586644, -44065828, 21050708, 32422708, -23440858, -19246822, -6563247, -21143588,
+-25508348, 6878927, 7583302, 19905026, 899796, 17403208, 30877594, 32261646, 21386252, 7461969,
+-23589572, 2390686, 12291123, 16357383, 25044492, 338766, -12946105, -18772228, -7112466, 25463788,
+-10410464, 10064719, 22058416, 2253784, 43338368, 5078799, -27662274, 23990614, 23605678, 6896107,
+10175314, 21995064, 3494493, 1947231, -25395604, 54934780, -58472760, -42884712, -49882824, -16415365,
+10305237, -29219200, 15044197, 32807108, -9717900, 3303904, 28823526, 9315784, -31272730, -10747082,
+-24209656, -3365107, 1776506, 1695975, 27860916, 27524298, -6331319, -6815576, 17488034, 42329052,
+7295539, 34845608, -29327648, 30987652, -13581223, 10347650, -6213744, -19585050, -13748727, -3007014,
+13934485, 8679055, 34406448, -44464724, 22641994, -17524540, -11064373, -8571144, 16457241, -7738994,
+-1609539, 3709778, -17941690, 11317776, -8816494, -486942, -13642964, 4314295, -2822867, 716186,
+-15362024, 2387465, -1486059, 3172370, -1582696, -16539382, 6562710, -9368397, -8734890, -3809636,
+12320651, 14505715, 15789910, -13511967, 27215598, -20467130, -6322729, 1684701, -2343442, -15093052,
+-8299488, -755914, -11534135, 3386582, -1067836, -369904, -1488743, -11151346, 1319092, -1755031,
+-651761, -24976846, -50236620, -50563040, -36600100, 7493108, 93889592, 23718956, -12969727, -28406914,
+-67874976, -95463704, 21531744, 39517456, 47437912, -10000831, 4094178, -28003186, -48711908, 14024679,
+8820789, 15829102, 2268817, -40850508, -12498355, 9961640, -8232379, -1627256, -7748658, 53191024,
+46698644, 31488552, -2908230, -22855132, -38813620, -25693032, -23237384, 36327372, -6049999, 26577258,
+11999602, 12436615, -16379395, -88428544, -60899416, 30038464, -47927004, -16365436, 101971648, 70115880,
+52668112, -39968964, 28832652, -27690192, 1990717, 2004139, 14769856, 43245488, 76219024, -29218126,
+-2755222, -50303732, -40660992, -66566624, 7184407, -2771865, -71687296, -17188996, 46111304, 17221746,
+32171452, 43636332, 78636560, -57342108, -34443492, 4522064, -46828564, -6058588, 26114474, 61256972,
+31111132, 9538585, -37447820, -35890356, 24157044, -10244034, 36069136, 31721018, -8625368, 14512694,
+5791764, -6148246, -12071542, -7036230, -4588636, 10745471, 3071975, -319438, 3697430, -1166084,
+5153961, 94489, 22796076, 18743238, 29731912, 5315559, -16437377, -34528316, -28229210, 11402601,
+26704496, 30609696, -3914326, -19665044, -79362408, -40818296, -37608344, 827318, 3945464, 8025684,
+-355945, 5823976, -9054865, -128849, -13365938, -11973832, 16689706, 14697915, 8519605, 8581882,
+4282620, 1866163, 3726421, 23226646, -37755984, -124970128, -116288920, -66763656, -72597296, -18122078,
+120341224, 61127584, 123814240, 109859896, 172228720, 122986392, 105804368, 17047798, -45941656, -103872712,
+-166413872, -141344160, -142329312, -74412456, -35712116, -8413304, 1186485, 4064113, 29382946, 39241504,
+99039264, 60117732, 116878408, 76107896, 100190312, 36218384, 96810712, 33601676, 23689428, 22880902,
+-5750961, -27207008, -65523484, -75654240, -140379392, -96204048, -177887888, -140784736, -215903168, -128044784,
+-101562552, -24544128, 59351080, 31523450, 5348845, 59198072, 126626376, 169092864, 221765808, 264282224,
+226193376, 165184976, 206066096, 169965808, 95326800, 42820824, -10539850, -70924944, -163972192, -194827776,
+-260823696, -336830656, -389721024, -351761056, -309951680, -220660384, -150590688, 46105936, 145321824, 177027808,
+272721824, 227629504, 284420256, 298820192, 293228160, 337933408, 221921504, 57591752, -55796992, -108360952,
+-134006736, -86852832, -125495184, -107690400, -125592360, -170099488, -171936672, -200292576, -118501368, -92356832,
+-78626352, -44029320, -2595771, 11770895, 48714592, 131985952, 139207936, 197487968, 172036528, 225870720,
+166221136, 110969072, 114644488, 43630424, -29942364, -49080200, -217787056, -280961728, -261463120, -230867376,
+-135031088, -106107704, -57873612, 5050345, 59042380, 89746560, 122198264, 145674560, 173430240, 164499392,
+155720480, 136929456, 76744624, -300111, -38511360, -90315648, -94247152, -80909664, -65776888, -68793032,
+-69345472, -54661512, -38881804, -23109072, -9186935, -8630737, -5681168, 2371359, -5889474, -7402376,
+10667625, 23259396, 26505854, 17559436, 13641890, 20933134, 26779658, 21045340, 25551834, 33587180,
+41008348, 34887484, 8455180, -4130148, -1467268, -1749662, -11314554, -9800042, -6849399, -15786152,
+-25914758, -32639604, -30975304, -27277338, -21926344, -18196166, -10467909, -4167192, -2336462, -1035087,
+4993437, 10080825, 13377749, 14493904, 15471009, 12569759, 10346576, 10069551, 6594386, 1457605,
+3268470, 4005594, 1468879, -1540820, -2433636, -119722, 4810900, 6691022, 5814849, 5041755,
+7487739, 5913633, 1737314, -2017561, -4309463, -6175626, -7748121, -12868259, -15598247, -14781130,
+-15588584, -18523658, -14382235, -5492727, 603443, 1969779, 5387500, 9977209, 12601434, 11283416,
+11292543, 12510703, 11515344, 8492761, 6075768, 3447785, 1685775, -354335, -1882806, -2112050,
+-1903744, -2341294, -3115999, -3331284, -2873333, -2536178, -2312303, -1957431, -1450088, -1095754,
+-820339, -676994, -520765, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-11935714,
-4490389, -6781217, 3733400, -3810173, -7852811, -13598940, 2443837, 442919, 3472481, 3055869,
--909459, -964220, 1072131, 8282308, -5812165, -10409927, 3504693, -4285304, -6958384, 159988,
--1002875, 4361003, 1584306, 3120831, -3104188, -746251, -2021319, 7058242, -1874216, -2805688,
--2459943, -1205275, -1656247, -2787434, -2450816, -1696512, 1430761, 627065, 958851, 270583,
-1868311, 3011846, 1553168, -2624762, -7891466, -49929, -5475547, 830002, -336081, -2484639,
-3586835, 268435, 63351, -7875897, -3190087, 1083942, -581431, 2785823, 239981, 2480881,
--2255932, 1042603, -956704, 4898410, -1690070, 2589865, -4323959, -4321274, -5452998, 293668,
--1264868, -1581085, 74625, -1898912, 4295, -2218888, 513785, 117575, -904091, -3440806,
-384400, 376347, 2028835, 1767916, 56371, 1881733, -157840, -1433445, -437550, -670552,
-768262, -1611, 142808, 1064615, 805306, -122407, 1000191, -630823, 237834, -8562017,
--1758789, -1114007, -2418067, -1086090, -2916283, 2851858, -1145683, -987306, -230854, 73551,
--159451, -2054068, 7613367, 4900021, 7956964, -3707094, 7920457, -4671851, -3271691, 3085934,
-8769786, -181999, -5294621, -7826504, -5616744, -1073742, 6256157, 2462090, 2126546, 2778844,
--2729989, 4256850, 554588, 3182571, -1535988, -7133941, 1956895, -4934381, -3371549, -3460670,
--811749, -9060770, -406948, 433255, -3775813, 8475044, -1593970, -2733747, -3391951, -81068,
-946503, -3626026, 136902, -4448513, -1662152, 125091, -1822140, 6091874, 201863, -1639067,
-3425773, 2189360, 5655398, 2268280, 6796249, 1671279, 5559835, -6324876, 1657321, 5056250,
--1714766, -4518843, -6205691, -122407, -471910, -1244467, 1546188, 1829119, -1304596, 4846334,
--4154307, 1608465, 1709397, -3108483, 2285460, 508417, -2255395, 1215476, -555661, 477815,
--2112050, 659814, 285078, 394063, -219580, -151934, 1073742, 271120, 1970316, -398358,
-193274, 9673877, -4444218, -3427921, 937377, -2198487, -1644973, 4835597, -3824132, 4655208,
-2116345, 70330, 2359011, -3174518, -3027952, -5543192, -5972152, 7789997, 3663607, 2720325,
-4148939, -2767570, -1860795, -2043868, 9844602, -3852049, 10778757, -392990, -2786897, -2631741,
--5761162, -6186364, -7507603, -488016, -1917166, 1326608, 7186554, -640487, -3419331, -10094784,
-316217, 7976828, 11709155, -5534602, 2996814, 2141041, -3023657, -2679523, 3027952, 11106249,
--2691334, 1731409, -991064, -1643899, -1079647, 5318780, 7666517, -5851893, -3202972, 2371896,
-10063108, 1669132, 7116761, -5861557, -5458367, -312996, -934155, 2032056, 1496259, -145492,
-595927, 1033477, -2669322, 1213328, 3231426, 2496987, -2015950, 6442988, -1684164, 4044786,
--2158221, -2238752, 2387465, 2027761, 2154463, 480499, 2248416, 425739, -3394098, -2291902,
-615791, -173946, 1199907, -643171, 1811403, -93952, 994822, -1013075, -223338, -100932,
--529892, -1176821, -143345, -722091, -215822, -865973, -768262, 1813550, -63351, -889058,
-1944010, 27380, -1050120, 15985331, -10943040, -2396055, -4531728, 1276142, 4276177, 7693360,
--7635378, 5282810, -1975685, -8078297, -13088376, -2658048, -5545340, 960999, -1225676, -5515812,
--2806224, 3088618, 3265249, 10283762, 5717675, 5248450, 566936, 1656784, -5283884, -3563212,
-8269423, 6343130, 4313758, 2020782, 3984119, 882616, 67646, -6842957, -9700721, 6551973,
--2562485, -6512244, -3090229, -4078072, 3517041, -3585761, 8308078, 1952600, -4732517, -2280091,
--3616363, -3120831, 4076998, 6123013, -485868, 4143033, -2968359, -3303904, 59593, 870268,
--3166465, -1195612, 4813048, 108448, -1935957, -2297271, 2638721, 2954938, -332323, 3561065,
-523449, -2426657, 8289287, -1118302, 945430, 456340, -9905805, 3940096, 3154654, 5221607,
-3398393, -3577708, -796716, -8905078, -4088272, -8165807, -2986076, -3624416, 66035, 850940,
--5392332, 304406, -1278290, 84289, 2344515, -752693, -969589, -110595, -1471026, 339302,
--735513, 693100, -893890, -1949915, -991064, -438624, -3365107, -233539, -129386, 779537,
--184147, 494995, -159451, 161061, -1788854, -2267743, 260382, -260382, -1024350, 523449,
--2614025, -10934987, 2757369, 63351, -3273839, -6012954, 2443837, -5749351, -1093606, 9795747,
-14874009, 7293392, 8155069, -668404, -4189741, 6111202, 5473399, 2274185, 2901251, 7296613,
--1131187, 5289789, 5141613, 7571491, 7268696, -6051072, 4857071, -447750, 1673964, -5643587,
-1653562, -811212, 4952634, -2001455, -1463510, -4007205, 3590593, -6177237, -5013838, 425202,
-5204427, 2799782, -3215320, -1713155, -1024887, -2166811, 3124589, -7424388, 6714108, -107374,
-8364449, -12020540, 793495, -10835129, -3445638, -3507378, 2885144, -1205275, -2500745, 2280628,
-840203, 2817499, 4597763, 7544110, -995359, -6212670, 1268626, 10192494, 2049773, -3063386,
--801011, 6249715, -3391414, 3767760, -3277597, -11073499, 6301791, 6640020, 6197638, -5520644,
--8191577, -5968394, 6860674, -835371, -1099512, 4791573, 1764158, 1109712, 799401, -442382,
-1860258, 2448668, -889595, -1490891, 1396938, 50466, -520228, 762357, -1415192, 295279,
-2181844, -1024350, 2294586, -1085553, -1764158, 712965, -85899, -98247, 1146219, 792421,
-1165010, 826781, 828392, -180389, 1124745, -838056, -16366510, 290447, -3617973, 1519345,
--9159555, 1131187, 1529545, 12173011, -9716290, 133681, -13038984, 2985002, -7872675, -1912871,
-496069, -4265440, 3790846, 1680406, -6818261, 135828, -86973, 6329171, -4114042, 10189810,
--106300, -8816494, -4486630, 10842645, -1024350, 4345433, 2902324, -1781338, 6497749, -7163469,
--6766184, -5272609, 761283, -6861211, 7320235, -4015795, 4704063, -6644315, -55835, -8074539,
-5330592, 715112, 6381248, 5684926, -5358509, 10685342, 9134322, 8603893, 1727114, 9033390,
-7448010, -7661148, 6605660, 3143916, 634581, -7113003, 3308199, -6053757, 6033356, -2602750,
--4745939, -581431, 8988293, 3187403, -10280541, 9830643, -779000, -3479461, -5860483, 10012106,
-8696772, -7468412, 7422777, -538482, -8864812, 105764, -5022965, -2780455, 4929549, -4293894,
-3530463, -363998, 1583769, -2060511, 2698850, -373662, -237297, -600759, -948651, 937914,
-554588, -2497524, 926639, 1233729, 35970, 917512, 1126355, -2346126, 543850, -288837,
-88584, -1980517, 740882, -817118, -1152125, -2633352, 3061775, 621160, -1387811, -416075,
-846109, -320512, 23376434, 3971234, -935229, -8063264, -15147276, 3864934, -2233383, -22231824,
-19500226, -9450539, -14110041, 2979634, -903017, 2626373, -913217, 3779034, 5622112, 73551,
--360777, -11361799, -945967, -1079111, 13393856, -2448131, 346282, 4929549, -2352568, -1650341,
--5452998, 11438035, -8584566, 8264591, -2041720, -6854768, 1280974, -7663296, -3897683, -12445741,
-2189897, 5712844, -3367254, -6209986, -4916664, 7521562, -11667816, -2759517, -5755256, -163746,
--1675037, 1517734, -10123238, 9858024, -13820131, -9449465, 3744675, 1667521, -527744, 3689377,
--7170448, -10313290, 1274532, -2805688, -476741, 5061082, -6169184, 4588099, 3190087, 11374147,
--3156801, 1630477, -882079, 162672, 15767362, 1320166, 15611132, -3772592, -5871221, 1778117,
--8039105, -718333, 7974681, 639950, -9352828, -8182987, 2287070, -871878, 28454, 8013872,
-616328, -1510755, 3322157, -460635, -331786, -3748970, 1378685, 1749662, -1891396, -55835,
--934692, 3091303, -1409823, -631360, 1580011, 406948, 955630, -299037, 1762547, -588411,
--1611, 940061, -1973001, 2431488, -1556926, 896574, 2036888, 1109175, 1923072, 525060,
--17115982, -2209761, -3451543, -13877039, -23921894, 7427072, 12480638, -8741869, -4184372, 7077569,
--2545305, 14967424, -1622961, -7934415, -4712116, -22289270, 7590818, 2563559, -1992865, -15643345,
-3751654, -8680666, -2255395, -7614440, -3876208, 11193759, -10653666, 4659503, -15796353, 10190347,
-2066953, 249108, -4524211, 1245541, -2022930, -8807367, -16633871, 3287261, 76236, 3622268,
-7041599, -4002373, -1288490, -10678899, -5470178, -2822331, 4593468, 3125126, 7959648, 12683575,
-9927280, 5134097, 7586523, 2343979, 7905424, 7121056, -6836514, 8149701, 9197672, -1826435,
-12301323, -1222992, 14424111, -6305012, -15391015, -2469069, 9903658, 10896869, 12511777, -2349884,
--21494700, -2109366, -1091459, 872952, -673773, -5242545, 3146601, -15665893, 12297028, 7778186,
-7479149, -8174934, -7720741, -1657857, 4609574, -498216, -8643085, 135828, -4192962, -7014756,
--2784750, -1111323, -3329137, 377420, -2805151, 1493038, -1728724, -917512, 2327872, 488553,
-1092532, -1066763, -3052111, -3386582, 2466922, -2688113, -40265, -942208, 1539209, -1059246,
--647466, -1047435, 3673808, 1979980, 1162862, -1060857, 22939958, -5050345, -5513665, 7649337,
-12348031, -888521, 5743445, 14304389, 10328323, -23488640, -21589190, 176094, -2083059, 3165928,
--9655623, -17134236, 4058744, 13738527, 9064528, -9944997, 16148540, 13059922, 12244415, -20583094,
-5816997, 10800769, 541166, 1647657, 9177271, 21214990, -4114042, -9688372, 6418829, 4815195,
--2905009, 11472395, 17098802, 3205656, 17714056, 7761006, -13326747, 1511292, 14685567, -1575716,
--6056978, 7629473, 1210107, 2910914, 15412490, 9924596, 5229660, 1846836, -17939542, -18236432,
--1548336, 2910914, 4745402, -5613523, -817654, -4698694, 1578937, 2298881, -6861211, 2612414,
--4221953, -1040993, -5834713, 680752, 11378979, -6718403, -16501801, -2546379, -14039711, 3115462,
--5027259, -335544, -1906429, 6647536, -2501282, 4822712, -86973, 4141959, 1917166, -1874216,
--2259690, -2822867, -8153459, 2993592, 1035624, 2071785, 248571, -6251325, 3137474, -4881767,
--4158602, -1396401, -5333276, -1082332, -1757715, -1944547, -1691143, 3491272, -1545115, 2341831,
--233002, 1893007, 311385, 4500589, -1939715, 1249836, -3610994, -869194, -3098282, -2774012,
--598611, -2032593, 6841883, 2936684, 249645, -907312, -972273, -38156488, -23741506, -7078106,
-7122130, -2193118, -9407589, 1868311, -9165997, 26980448, -10713259, 17362942, 26623966, 14504641,
-13189308, -10210211, 9522479, -4994510, -12141873, 10835666, 12620761, 8415988, 17969070, 244813,
--801548, -7747584, -7948374, -6769406, -10993506, -10700374, -7311645, 4282083, 1610613, 27917,
--6878927, -3686156, -10669236, 4617090, -9204115, -8337069, -3683471, 4638565, 39728, -5585605,
--15585899, 2004676, -4552666, 5806259, -18402862, -14191109, 16295643, -2353105, -3058017, -7379291,
--4525822, 12277164, 4011500, -2395518, 6732898, -1698123, 7001871, 5625871, 7978976, -5553393,
--9266392, -23389318, 1697049, -22680648, -1488206, -19180788, -2726767, 18372796, -2247879, 3353296,
--12965969, -5520644, -6665789, 1577327, -8310225, -4747013, 8273181, 10327786, -1010391, -924492,
-1209033, -4548371, 1778117, -416612, -4530117, -1762547, -3871913, -1429150, -2183991, -10467372,
-1886028, -1663226, -1334661, 764504, -2855617, -3316252, -7241852, -1593433, -4174708, -4918275,
--904628, -6222871, -2913062, 1160178, -3937948, -4505421, 611496, -3748433, 1324997, 1618129,
-4592931, -2640868, 3221762, 1627793, -4120484, -1452236, -963146, -1808181, 868657, -801548,
--1170916, 26387742, 520228, -19105626, -16199543, 16553878, 12982612, -12230993, -11812234, 22193706,
-14108431, 813896, -13166759, 1589675, -5532992, 10523207, -8167417, 1248225, -3455301, -2427194,
-22956600, -3250217, -6238977, 4250407, 3916473, 6854231, 7101729, 771484, -9043054, 6846715,
-3484292, 7845832, 17766132, 8114267, -25538412, -7329362, -4147865, -19580220, 7595113, -3415573,
-421444, -10925323, 9239548, -4260608, 1786706, -14205067, 9643275, -11578158, 976031, 11355357,
--1799591, 11978664, -9347996, 14945412, -19171660, 9556839, 249108, -6956237, 25153476, 6659884,
--5189394, -15022722, 6554120, -3124052, 2105071, -2324651, 9230422, 13655849, 18509698, -11740830,
-8345659, -4689568, 16564078, 5996311, 2409477, -1583232, 9953587, 1701881, -6510634, 7976291,
--5662915, -9739375, -4133906, -13222594, 228707, -14807437, -1191853, -10007811, 11416023, -3685082,
-7363185, -8035347, 364535, -4540854, 6956774, -2281165, -591095, -4504884, 2398202, -3406983,
--5254893, -3172370, 2378875, -5246840, 3197603, -4183298, 1993402, -2752000, -2479270, -2753611,
--5591511, -3426310, 224412, -4265440, -3676492, 5107790, 4631586, 2335389, -2543695, -6802692,
--617402, 2756832, -147640, -5317170, -2988224, -521302, -38352984, -24823838, 20703890, -15126338,
--14192183, 7992934, 18130668, -29774860, -4910758, 7146289, 1964948, -15524159, -23287312, 43855376,
--18845242, 5995775, -21432424, 11883101, -7436736, 20531018, 18247168, 1886028, 3272228, -24286966,
-13959, 11554536, -9814537, -14460618, 11580842, 3315178, 12483322, 9935333, -2017561, 4201552,
--2689723, -1497333, 18387828, -15537581, -9113921, 14765024, -550293, -11715060, 15624017, -415001,
--3369402, -10464151, -4591320, 5806259, -8164196, -877784, 5537824, -10380399, -10642929, -6899865,
-7953206, -22601192, 10887205, -973347, 21619254, -20191716, 6803765, -15340013, 5755256, -9182640,
--11729556, 19508278, -10674604, -4664872, -10389526, 8473434, -11893838, 7145752, -3999688, 14288282,
-14649597, -1758252, -22660248, 9154723, 9527311, -1016297, -654446, -12902619, -8903467, -2079838,
--11116449, -8917426, -3097745, -190589, -5498095, -7315940, 8526047, 2915209, -5210869, -4337380,
--5326297, -5625871, 6219650, 2352568, 1551557, -8494908, -3207804, 7461432, -4221953, -5179731,
-3528316, -3683471, 95563, 2775086, 4368519, -1668595, -7029788, 1509681, 4304094, -9390409,
-288300, 2554432, 295279, -4902169, -2784750, 342524, -2185065, 19370840, 9450002, -21666500,
-7482370, 23446226, -1988033, 115427, 10865730, -6933688, 16471736, 14894410, -19536732, -11973295,
--3536369, 10413685, 18804978, 3376918, 10032507, 21181704, 15901580, -22180284, -2301029, 35364224,
-8809515, -2308008, -4080756, -6602976, -10282689, 3156264, 8749385, 9685151, 9073118, -6277095,
--14982993, 4093641, -7741142, 8320426, 24484534, -6445672, -24372866, 29336774, -8723615, -16109885,
-23848880, -4248260, -6963753, -25378424, -4457639, 10534481, 5129265, -5492190, -10606422, 9844065,
-1167157, -11746199, 10217727, -2336462, 23291608, -17024176, 2546916, -3307662, 26672284, 9065602,
--37567544, 11841225, -15617575, -6595459, -13337484, 16328392, 54111756, 19732154, 3281892, 12503724,
-15861314, -19887846, -8289287, -5586679, -11206107, -6861747, -12416214, 11890080, -27550604, -7335804,
-2672007, 3325379, -8913668, 1736241, 5061082, -2702608, -3341485, 9439801, 1913945, 6305549,
-5418101, -5674189, 1797981, 4671851, 1971927, 3908957, -2647847, 2403034, -5182415, 729608,
--1424855, -5142150, -2506114, -1157494, 8665633, 480499, 2415382, 358093, -1528472, -1722819,
-944356, -741956, -7591892, -934692, 1515587, -1847373, -5783711, -14068702, -4853850, -4255776,
-8562017, -1425392, 1565516, -8256001, -28592134, -12182675, 1928977, -11627013, -35980552, 31149788,
--6016176, 14023068, 2626909, -16516297, -28393492, -27364310, 30625264, 18635864, 7005629, -10842645,
--20532628, -15395310, -24376624, -6292127, 9050570, -3824132, 1959579, 3848828, -4026532, -12651363,
--12158516, -20736102, -7457674, -4015258, 10146860, 7064685, 11158325, -5589363, -9296994, -3922379,
-14593762, 2041720, 12917114, -43314744, -10227928, -97711, 9463960, -13846975, -641024, -16021839,
-12489228, 10984916, 2073396, 53414896, 811749, 16664473, 21959630, 913217, 7066832, 292595,
--3886946, -6471442, 11046119, 16231218, 21242908, -520765, -4061429, 1418950, 13940927, 12663174,
-409633, 10256919, 8853538, 6888054, -2893734, 20876226, -6083285, 26801670, -26589068, -13320841,
--32692754, -10220412, 5787469, 731218, -8512088, 1688459, -166430, 14555644, -3020436, 17449378,
--8072391, -6573448, -8864812, 4451734, 9784472, -1677185, -4842039, -5395016, 6017249, 2684,
-20364050, -3328600, -1460826, 3568581, 5675263, 8319352, -7119445, -732829, 2680060, 4048544,
--9805410, 3279208, 3661997, 12408161, -12449500, 6927246, 4670240, -5404143, 10574209, -6124087,
--7337952, -88584, -2524367, 5310190, 2674691, -4513474, -183073, 4329864, 989453, 10760504,
--561567, 6980396, 19997368, -4032974, 603443, 5050345, -28056336, 870805, 3695283, 17184164,
-26374320, -22986128, 4738960, -14600741, 18718542, 16934520, 1896228, 32782948, 10034654, 12877386,
--12340515, -2235531, -21395916, 32752346, -19487878, 4867272, 19942606, -5109938, -13283260, 9914932,
--3250217, 4868346, 21434034, 264141, -7156490, -2298881, 3798899, -985158, -13150116, 9240085,
--1500554, -3955128, 36795520, -28783260, 26548804, 17011292, 33198486, 13333189, -23921358, 18008798,
-108985, 16712791, 43805984, -32087164, -13429289, -4392141, 598611, 29658896, -18030810, 1257352,
--19342922, 1196685, 33527052, -4108136, 34803732, 9579388, 5744519, 15636365, -21664888, -3846143,
-15165530, 21515102, -35694936, -1567663, -30617748, 13302587, -16038482, -827855, 6942815, 9588514,
-511638, -11110544, -8847633, -33515778, -4016868, -23900420, 18897856, 1348620, -1729798, 14591615,
-599685, -386010, 14078903, 10373957, 6964827, -135291, -5055714, 6439767, -11446625, -1151588,
--7923141, 7379828, 7781944, -7094212, -1528472, -14727443, 6169184, -1212791, -234076, -712965,
--14206678, -17181480, -5795522, 5132486, 12574054, 6179921, 5559299, -2362232, 10502806, 7124814,
--678068, -5782100, 9116068, -13608604, -3933653, 2434173, 14827301, 12087112, 2495913, -5904507,
--21328808, 6174553, -37430104, -32960652, 610959, 597000, -20898774, 17206712, 5057324, -5594732,
--19390704, 26674968, -6074695, 39637180, -5663452, 8635032, 14355928, -19107772, -6323266, 6142877,
--22828288, -12789876, -19956028, 17329656, -15973520, -4255239, -5193153, 15016816, -13460964, -22762252,
--31823024, -837519, 26593364, 1678795, -14559402, -6141267, -18454400, -6120866, 213675, 11142219,
--20798380, -2254858, -4494684, -14791330, -20446728, 1054415, 3468723, 13327820, 4583267, 22848690,
-6353867, 28813862, -11955578, 23804320, -6019397, -18450106, -4806069, 38667592, -16641925, 17665200,
--12195560, 28394028, -14957760, 9635222, 17984638, -990527, -7394860, 3511673, -10233296, 25833692,
--23587424, -8808978, 25712896, -3078418, -21437256, 1101122, 19654308, 11011222, 19653234, -19747722,
--16858820, -10620917, -2170569, 19468014, 23429046, -41373420, 2196339, 12103755, -22759032, 3857954,
-14374182, 11293617, 10543608, 10404021, 6882148, -3066607, 754304, 8002598, 8821326, 7306813,
-17709760, -5262946, 9305047, 4056597, 19167902, 11540040, -14821395, -18596134, 5944772, 20277614,
--5755793, -5451387, -12858595, -21748104, 2498597, -18538152, -5891622, 4412005, -12456479, 11736535,
-3292629, -3740917, -10295037, -1830193, -10672994, -719407, 5877126, 2945274, 1637993, -1705639,
--2644089, -36128728, 38774964, -13493177, 32952600, -7407208, 26386132, 1818382, -8820252, -18771692,
--13394929, -2856153, -23622, 19272592, -7927973, -1947231, 5230197, -18360986, 28537374, 10391673,
-663036, -24259050, 15936476, 8186745, -19427748, 18182208, 1213865, -3336653, 4285841, -986232,
-24036784, -6005438, -31130996, 32798518, -17526688, -3102577, 24282672, -11302743, -5799280, -15159624,
-38562364, -17869212, -5218922, -24780350, -5138929, 2565706, 34430068, -16722992, 6152004, 10684268,
-20308752, -5858873, -22499186, 23665270, 14207215, 19134080, -9942849, -5097053, 2066416, 21241834,
--12410308, -25817586, -28747290, 14680735, -20252918, 4664872, 20788716, 19247360, -14246407, -5162014,
-28120762, -45898168, -1476932, 5858336, 15331423, -2527588, -16998944, -3735548, 25613574, -5475547,
-53013856, 20474646, -15672336, -2489471, 1181116, -6862821, -19733228, -24125906, -17739288, 14422500,
--11622718, -5037460, -840740, 22858352, 9710384, -8509404, 9897752, 7079180, -701690, 2986613,
-3944928, -726923, 2854006, 23409720, 19272592, 18539226, 12565464, 1374926, -12116640, 5885179,
--9547175, 10983842, -14482630, 14886357, 22045530, 6994891, 28025198, 30152282, 12063489, -748398,
-15714748, 5065377, -3282429, -10215043, 16356309, -4817880, -13706851, -649077, 7754564, -4294431,
-6710350, 12661564, 4657892, -16997870, 13267154, -7965017, -9024800, -50678468, 16782584, 9417790,
-44518948, 38933340, -6155225, -14898168, -46563888, 971200, 15152108, -20182588, 14797773, 26678726,
-26025354, -12602508, 31398896, 27939836, 1066226, -17507360, -18607946, 28529320, 24475944, -35576824,
--48210472, 63318556, 3061238, -4929549, 8132521, 4301947, 23420456, 23081692, -9667435, -8470749,
-33001992, 15363098, -6138582, -22510998, 13205414, 2222646, 1617055, 11391864, 1496796, -1478543,
--13407277, 6995965, -4111358, -16688095, 29690036, -47916264, 32982128, 27014270, -45065480, -3586298,
-22814866, 5323612, 26052734, -6594386, 3588445, 23482196, -3237332, 11756936, -22239878, -35590784,
-98782640, -40916544, -56910464, -12920872, 110034376, 47040092, -46969224, -11117523, 19403588, 12944495,
--1034550, -28845538, 41366440, 22652194, 17346300, 3575024, -55889872, -9689983, 9090298, 16117939,
--22948548, -38489348, 3359201, 11476689, 5264020, -18450642, -18947786, 8593156, 5132486, 13222594,
--2516851, -5158256, -1339493, 14156212, 18734110, 12357695, -28078348, -11430519, 19913078, 14082124,
--14105746, -497679, 16263431, 28195386, 11316702, -15729781, -20444044, -27409944, 12767864, -9162239,
-11889543, -23266374, 12866648, 6029597, 14490683, -10974715, -5353140, -18803904, -7603166, 17390322,
-3444027, -15527917, 8415452, 26571352, 1834488, -2347737, 8236674, -4297115, 7337415, -19539416,
--12279311, 24871618, 43006580, 3105261, 71341016, -31465468, -11997454, 41420128, 2188823, -2230162,
--21094732, -42324756, 35420596, -22000434, -23912230, 18416282, -26557394, 13378823, -25169046, -27953258,
--4558571, 6265284, 4154307, -6493454, 33915748, 8573292, 20755966, 9996000, 764504, 640487,
--15047418, -32280438, 10558103, 32415192, -26185878, 22668300, -26693222, -2697240, -1269700, -41507100,
-29828010, -14325327, 11747809, 906775, -12027519, 797253, -29871498, 30993020, -21563420, 10408316,
--34805340, -21215528, -45721536, 17432198, -21250424, -24095304, -19297288, -9982041, 261456, 48963700,
-17731772, 24237038, -6453189, -22823994, -28701118, 7691213, 2015950, -49812492, -22962506, -87629144,
--41020696, -33876016, -4846871, -40376452, -33024004, -7312182, 32327146, 36575940, -29508572, -37627672,
--43013560, 21775484, 51991116, 2624762, 41865732, 1043677, 25389700, 10060424, 3303904, 12087112,
-4727149, -1038308, -14748918, 21441014, 18029736, 9496710, -17667348, -7169911, -2120103, 9136469,
-9953587, -3641596, 10783589, -4715874, -11775190, -21134998, 2903398, 29175712, 10832444, -3580392,
-8545374, -9569724, 15982110, -5877126, 20804822, 19729470, 2640331, -21547850, 3849365, 4603131,
-23554674, 5487358, 26734560, -17888002, -10583873, 24174224, 25593174, 6531572, -6282464, -4851166,
--24688546, 17993228, -11470247, -49838800, 12098386, 18000208, -43118788, 24362666, 5085778, -12295418,
-2886218, -11973832, -926639, 9646497, 12958990, 22520662, -25864294, 2851858, 30434138, -3043521,
--14092861, 27425514, -11638288, 2209761, -15779710, -6205691, -31787052, 8671539, 1047972, 18429168,
--12380243, 1659468, 22796076, -10344966, 631360, 23560044, -45356464, 3287798, -51962660, -16295643,
--34726420, 28258200, 10141492, -1726040, 11981885, -9925133, 13046500, 35829692, 9808632, 55450176,
--30459908, -34912716, 32728188, 9170292, -23577760, -22041236, -8883603, 20687246, -19315542, -421444,
--16673600, -21514564, 13066901, 16378858, -32333588, -18604188, 28241020, -159451, 10121090, -5732171,
-15579457, 7150584, 28499256, -16127602, -11993696, 7507603, 6742562, -7835631, -29323890, -21265994,
--23156854, 31617402, -14322642, -23871966, 7233262, -5995775, -7767449, -15621333, 6227703, 7497403,
--2451353, -4408784, -8482560, -14369350, -2376728, -2996814, -10532334, 732292, -5061619, -9753871,
-6311992, -5617817, 5820755, -5538897, -4807142, 15108084, -5676336, 7318625, 5349382, -13732084,
-6454799, 2198487, -5515275, -16726213, 23370528, 15579457, -6409702, 3930969, -11242614, -8344048,
-7235410, 124554, -14492830, 5455146, -5711233, 13629542, -3408057, -2152852, 2713883, 6519761,
-8381092, -33928096, -68576672, -34293168, -13076028, 29952566, 39062192, -74859672, 12891344, -29748554,
--40581000, -8353175, 46842524, 29925722, 25537338, -16174310, -18064632, -21615496, 23625004, 16641388,
-36460516, 4725538, -47383152, -18593988, 35606888, -5507759, 10442676, 31857384, -15253576, -22127672,
--34655556, -34747360, 215822, 22571126, 48830020, 36111012, 23973970, 9766756, -49953156, -53273164,
-18612778, -36773508, 8677981, 46838764, 18660022, 3122978, -23653996, -42508364, -7263864, -18355080,
-14259828, 11025718, 7975218, 29329258, -4568772, -5757404, 7742216, 21263846, 34607772, 35764728,
-12168179, 31839666, 10747619, 11387569, -7007776, -35820564, -14020384, -15582678, -29295436, 21986474,
-20639466, 15253039, 15274514, -6892886, -35170952, 5742372, 10529112, -643171, 23439248, 14978162,
-12297028, -2877628, 1631014, 3353833, 24140938, 24198920, 18474264, 5256503, -4424353, -17930952,
--3274376, 10296110, 3058017, -5377836, -61740, -14273787, -6562173, -8306467, -9278740, 7235410,
-26382374, 12830141, -4784057, -2774012, -19658602, -2153389, 6944425, 13178033, 14820322, -4787278,
--6254546, -30813706, -17675938, -4577899, 272194, 12191265, 10321343, -6188511, -7329899, 4824322,
-2022930, 3027415, 7627862, -8720931, -2981781, -1874753, 5102958, 8010114, 874026, -3031173,
--2198487, -13007845, -5825587, 21246130, -60298656, -121356984, -62639952, 11775727, 47407848, 115528712,
-113026360, 47100220, 48099876, 34542276, 1888175, -57513908, -97473744, -146879296, -43836048, -61434676,
--10685342, 59969556, 106871136, 89865208, 79356504, 43751760, -963683, -27954332, -37512780, -8003135,
--64978024, -51590072, -49019536, -32106492, -26359824, -12210055, -2287607, 22411676, 52709988, 54291072,
-53351548, 39080444, 50827716, 26985280, 29081224, -9468255, -2100776, -23938538, -62933620, -91154776,
--110159472, -53336516, -21460878, 17191680, -2813741, 11686606, 25649008, 33550138, 71507984, 82467128,
-109258600, 69724496, 7063074, 31891742, -16476031, -60276108, -52747568, -104989936, -122523608, -91559040,
--56610892, -24296630, -19173808, 44158168, 49837728, 138264128, 113198160, 82869248, 81096496, 38896836,
--4933844, -54839216, -79366160, -57891328, -69492032, -95386928, -45322644, 2703145, -9317932, 2779918,
-41749228, 58230628, 42998528, 22492744, 21738976, 37132676, 15833397, -2680597, -4431870, -18102214,
--3052648, -16143171, -42760156, -22537840, -31886910, -51730196, -9114457, -8914741, 41417444, 37811280,
-22722524, 40674952, 70277480, 50368156, -12336757, -8404714, -33891052, -30090004, -70749920, -73300600,
--35496296, -14901926, 6094559, 24972550, 29474750, 44007844, 50051400, 48461728, 50813220, 13042205,
--5191542, -26972394, -33055678, -43559020, -48322140, -48409652, -20918638, 10942503, 14495515, 21116744,
-21966610, 15342697, 16250009, 17115982, 5413270, 4038880, -5794448, -6003291, 10212895, -6893960,
--16899086, 960999, 3591667, -2177549, -5310190, -7254737, 11274, -2099702, -11901354, -5335423,
-3399467, 752693, 692564, 6895033, 8669391, 6432788, 5888937, 5429376, 2017561, -860604,
--650151, -1150514, -3672734, -3991635, -4283156, -3984656, -3019362, -1461363, -1915555, -720481,
-561567, 1687922, 3562139, 2763275, 512175, 661425, 1385664, -231391, -2813204, -3082176,
--1744294, 266288, 1528472, 2936147, 4476967, 4264366, 3550864, 2758443, 570694, -1788317,
--3802120, -5407364, -6338298, -7009924, -6852084, -4414153, -1014686, 2203855, 5254893, 7446400,
-8196945, 8385387, 6798397, 3476239, 151398, -3175055, -5397164, -6725382, -6990060, -5210869,
--3149285, -1306744, 863825, 2181307, 2552284, 2306398, 1945620, 1531693, 1122060, 799938,
-294205, 93416, 91805, 32212, -193810, -270046, -304406, -267362, -273267, -213675,
--190589, -200253, -191663, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+4490389, -6781217, 3733400, -3810173, -7852811, -13598940, 2443837, 442919, 3472481, 3055869,
+-909459, -964220, 1072131, 8282308, -5812165, -10409927, 3504693, -4285304, -6958384, 159988,
+-1002875, 4361003, 1584306, 3120831, -3104188, -746251, -2021319, 7058242, -1874216, -2805688,
+-2459943, -1205275, -1656247, -2787434, -2450816, -1696512, 1430761, 627065, 958851, 270583,
+1868311, 3011846, 1553168, -2624762, -7891466, -49929, -5475547, 830002, -336081, -2484639,
+3586835, 268435, 63351, -7875897, -3190087, 1083942, -581431, 2785823, 239981, 2480881,
+-2255932, 1042603, -956704, 4898410, -1690070, 2589865, -4323959, -4321274, -5452998, 293668,
+-1264868, -1581085, 74625, -1898912, 4295, -2218888, 513785, 117575, -904091, -3440806,
+384400, 376347, 2028835, 1767916, 56371, 1881733, -157840, -1433445, -437550, -670552,
+768262, -1611, 142808, 1064615, 805306, -122407, 1000191, -630823, 237834, -8562017,
+-1758789, -1114007, -2418067, -1086090, -2916283, 2851858, -1145683, -987306, -230854, 73551,
+-159451, -2054068, 7613367, 4900021, 7956964, -3707094, 7920457, -4671851, -3271691, 3085934,
+8769786, -181999, -5294621, -7826504, -5616744, -1073742, 6256157, 2462090, 2126546, 2778844,
+-2729989, 4256850, 554588, 3182571, -1535988, -7133941, 1956895, -4934381, -3371549, -3460670,
+-811749, -9060770, -406948, 433255, -3775813, 8475044, -1593970, -2733747, -3391951, -81068,
+946503, -3626026, 136902, -4448513, -1662152, 125091, -1822140, 6091874, 201863, -1639067,
+3425773, 2189360, 5655398, 2268280, 6796249, 1671279, 5559835, -6324876, 1657321, 5056250,
+-1714766, -4518843, -6205691, -122407, -471910, -1244467, 1546188, 1829119, -1304596, 4846334,
+-4154307, 1608465, 1709397, -3108483, 2285460, 508417, -2255395, 1215476, -555661, 477815,
+-2112050, 659814, 285078, 394063, -219580, -151934, 1073742, 271120, 1970316, -398358,
+193274, 9673877, -4444218, -3427921, 937377, -2198487, -1644973, 4835597, -3824132, 4655208,
+2116345, 70330, 2359011, -3174518, -3027952, -5543192, -5972152, 7789997, 3663607, 2720325,
+4148939, -2767570, -1860795, -2043868, 9844602, -3852049, 10778757, -392990, -2786897, -2631741,
+-5761162, -6186364, -7507603, -488016, -1917166, 1326608, 7186554, -640487, -3419331, -10094784,
+316217, 7976828, 11709155, -5534602, 2996814, 2141041, -3023657, -2679523, 3027952, 11106249,
+-2691334, 1731409, -991064, -1643899, -1079647, 5318780, 7666517, -5851893, -3202972, 2371896,
+10063108, 1669132, 7116761, -5861557, -5458367, -312996, -934155, 2032056, 1496259, -145492,
+595927, 1033477, -2669322, 1213328, 3231426, 2496987, -2015950, 6442988, -1684164, 4044786,
+-2158221, -2238752, 2387465, 2027761, 2154463, 480499, 2248416, 425739, -3394098, -2291902,
+615791, -173946, 1199907, -643171, 1811403, -93952, 994822, -1013075, -223338, -100932,
+-529892, -1176821, -143345, -722091, -215822, -865973, -768262, 1813550, -63351, -889058,
+1944010, 27380, -1050120, 15985331, -10943040, -2396055, -4531728, 1276142, 4276177, 7693360,
+-7635378, 5282810, -1975685, -8078297, -13088376, -2658048, -5545340, 960999, -1225676, -5515812,
+-2806224, 3088618, 3265249, 10283762, 5717675, 5248450, 566936, 1656784, -5283884, -3563212,
+8269423, 6343130, 4313758, 2020782, 3984119, 882616, 67646, -6842957, -9700721, 6551973,
+-2562485, -6512244, -3090229, -4078072, 3517041, -3585761, 8308078, 1952600, -4732517, -2280091,
+-3616363, -3120831, 4076998, 6123013, -485868, 4143033, -2968359, -3303904, 59593, 870268,
+-3166465, -1195612, 4813048, 108448, -1935957, -2297271, 2638721, 2954938, -332323, 3561065,
+523449, -2426657, 8289287, -1118302, 945430, 456340, -9905805, 3940096, 3154654, 5221607,
+3398393, -3577708, -796716, -8905078, -4088272, -8165807, -2986076, -3624416, 66035, 850940,
+-5392332, 304406, -1278290, 84289, 2344515, -752693, -969589, -110595, -1471026, 339302,
+-735513, 693100, -893890, -1949915, -991064, -438624, -3365107, -233539, -129386, 779537,
+-184147, 494995, -159451, 161061, -1788854, -2267743, 260382, -260382, -1024350, 523449,
+-2614025, -10934987, 2757369, 63351, -3273839, -6012954, 2443837, -5749351, -1093606, 9795747,
+14874009, 7293392, 8155069, -668404, -4189741, 6111202, 5473399, 2274185, 2901251, 7296613,
+-1131187, 5289789, 5141613, 7571491, 7268696, -6051072, 4857071, -447750, 1673964, -5643587,
+1653562, -811212, 4952634, -2001455, -1463510, -4007205, 3590593, -6177237, -5013838, 425202,
+5204427, 2799782, -3215320, -1713155, -1024887, -2166811, 3124589, -7424388, 6714108, -107374,
+8364449, -12020540, 793495, -10835129, -3445638, -3507378, 2885144, -1205275, -2500745, 2280628,
+840203, 2817499, 4597763, 7544110, -995359, -6212670, 1268626, 10192494, 2049773, -3063386,
+-801011, 6249715, -3391414, 3767760, -3277597, -11073499, 6301791, 6640020, 6197638, -5520644,
+-8191577, -5968394, 6860674, -835371, -1099512, 4791573, 1764158, 1109712, 799401, -442382,
+1860258, 2448668, -889595, -1490891, 1396938, 50466, -520228, 762357, -1415192, 295279,
+2181844, -1024350, 2294586, -1085553, -1764158, 712965, -85899, -98247, 1146219, 792421,
+1165010, 826781, 828392, -180389, 1124745, -838056, -16366510, 290447, -3617973, 1519345,
+-9159555, 1131187, 1529545, 12173011, -9716290, 133681, -13038984, 2985002, -7872675, -1912871,
+496069, -4265440, 3790846, 1680406, -6818261, 135828, -86973, 6329171, -4114042, 10189810,
+-106300, -8816494, -4486630, 10842645, -1024350, 4345433, 2902324, -1781338, 6497749, -7163469,
+-6766184, -5272609, 761283, -6861211, 7320235, -4015795, 4704063, -6644315, -55835, -8074539,
+5330592, 715112, 6381248, 5684926, -5358509, 10685342, 9134322, 8603893, 1727114, 9033390,
+7448010, -7661148, 6605660, 3143916, 634581, -7113003, 3308199, -6053757, 6033356, -2602750,
+-4745939, -581431, 8988293, 3187403, -10280541, 9830643, -779000, -3479461, -5860483, 10012106,
+8696772, -7468412, 7422777, -538482, -8864812, 105764, -5022965, -2780455, 4929549, -4293894,
+3530463, -363998, 1583769, -2060511, 2698850, -373662, -237297, -600759, -948651, 937914,
+554588, -2497524, 926639, 1233729, 35970, 917512, 1126355, -2346126, 543850, -288837,
+88584, -1980517, 740882, -817118, -1152125, -2633352, 3061775, 621160, -1387811, -416075,
+846109, -320512, 23376434, 3971234, -935229, -8063264, -15147276, 3864934, -2233383, -22231824,
+19500226, -9450539, -14110041, 2979634, -903017, 2626373, -913217, 3779034, 5622112, 73551,
+-360777, -11361799, -945967, -1079111, 13393856, -2448131, 346282, 4929549, -2352568, -1650341,
+-5452998, 11438035, -8584566, 8264591, -2041720, -6854768, 1280974, -7663296, -3897683, -12445741,
+2189897, 5712844, -3367254, -6209986, -4916664, 7521562, -11667816, -2759517, -5755256, -163746,
+-1675037, 1517734, -10123238, 9858024, -13820131, -9449465, 3744675, 1667521, -527744, 3689377,
+-7170448, -10313290, 1274532, -2805688, -476741, 5061082, -6169184, 4588099, 3190087, 11374147,
+-3156801, 1630477, -882079, 162672, 15767362, 1320166, 15611132, -3772592, -5871221, 1778117,
+-8039105, -718333, 7974681, 639950, -9352828, -8182987, 2287070, -871878, 28454, 8013872,
+616328, -1510755, 3322157, -460635, -331786, -3748970, 1378685, 1749662, -1891396, -55835,
+-934692, 3091303, -1409823, -631360, 1580011, 406948, 955630, -299037, 1762547, -588411,
+-1611, 940061, -1973001, 2431488, -1556926, 896574, 2036888, 1109175, 1923072, 525060,
+-17115982, -2209761, -3451543, -13877039, -23921894, 7427072, 12480638, -8741869, -4184372, 7077569,
+-2545305, 14967424, -1622961, -7934415, -4712116, -22289270, 7590818, 2563559, -1992865, -15643345,
+3751654, -8680666, -2255395, -7614440, -3876208, 11193759, -10653666, 4659503, -15796353, 10190347,
+2066953, 249108, -4524211, 1245541, -2022930, -8807367, -16633871, 3287261, 76236, 3622268,
+7041599, -4002373, -1288490, -10678899, -5470178, -2822331, 4593468, 3125126, 7959648, 12683575,
+9927280, 5134097, 7586523, 2343979, 7905424, 7121056, -6836514, 8149701, 9197672, -1826435,
+12301323, -1222992, 14424111, -6305012, -15391015, -2469069, 9903658, 10896869, 12511777, -2349884,
+-21494700, -2109366, -1091459, 872952, -673773, -5242545, 3146601, -15665893, 12297028, 7778186,
+7479149, -8174934, -7720741, -1657857, 4609574, -498216, -8643085, 135828, -4192962, -7014756,
+-2784750, -1111323, -3329137, 377420, -2805151, 1493038, -1728724, -917512, 2327872, 488553,
+1092532, -1066763, -3052111, -3386582, 2466922, -2688113, -40265, -942208, 1539209, -1059246,
+-647466, -1047435, 3673808, 1979980, 1162862, -1060857, 22939958, -5050345, -5513665, 7649337,
+12348031, -888521, 5743445, 14304389, 10328323, -23488640, -21589190, 176094, -2083059, 3165928,
+-9655623, -17134236, 4058744, 13738527, 9064528, -9944997, 16148540, 13059922, 12244415, -20583094,
+5816997, 10800769, 541166, 1647657, 9177271, 21214990, -4114042, -9688372, 6418829, 4815195,
+-2905009, 11472395, 17098802, 3205656, 17714056, 7761006, -13326747, 1511292, 14685567, -1575716,
+-6056978, 7629473, 1210107, 2910914, 15412490, 9924596, 5229660, 1846836, -17939542, -18236432,
+-1548336, 2910914, 4745402, -5613523, -817654, -4698694, 1578937, 2298881, -6861211, 2612414,
+-4221953, -1040993, -5834713, 680752, 11378979, -6718403, -16501801, -2546379, -14039711, 3115462,
+-5027259, -335544, -1906429, 6647536, -2501282, 4822712, -86973, 4141959, 1917166, -1874216,
+-2259690, -2822867, -8153459, 2993592, 1035624, 2071785, 248571, -6251325, 3137474, -4881767,
+-4158602, -1396401, -5333276, -1082332, -1757715, -1944547, -1691143, 3491272, -1545115, 2341831,
+-233002, 1893007, 311385, 4500589, -1939715, 1249836, -3610994, -869194, -3098282, -2774012,
+-598611, -2032593, 6841883, 2936684, 249645, -907312, -972273, -38156488, -23741506, -7078106,
+7122130, -2193118, -9407589, 1868311, -9165997, 26980448, -10713259, 17362942, 26623966, 14504641,
+13189308, -10210211, 9522479, -4994510, -12141873, 10835666, 12620761, 8415988, 17969070, 244813,
+-801548, -7747584, -7948374, -6769406, -10993506, -10700374, -7311645, 4282083, 1610613, 27917,
+-6878927, -3686156, -10669236, 4617090, -9204115, -8337069, -3683471, 4638565, 39728, -5585605,
+-15585899, 2004676, -4552666, 5806259, -18402862, -14191109, 16295643, -2353105, -3058017, -7379291,
+-4525822, 12277164, 4011500, -2395518, 6732898, -1698123, 7001871, 5625871, 7978976, -5553393,
+-9266392, -23389318, 1697049, -22680648, -1488206, -19180788, -2726767, 18372796, -2247879, 3353296,
+-12965969, -5520644, -6665789, 1577327, -8310225, -4747013, 8273181, 10327786, -1010391, -924492,
+1209033, -4548371, 1778117, -416612, -4530117, -1762547, -3871913, -1429150, -2183991, -10467372,
+1886028, -1663226, -1334661, 764504, -2855617, -3316252, -7241852, -1593433, -4174708, -4918275,
+-904628, -6222871, -2913062, 1160178, -3937948, -4505421, 611496, -3748433, 1324997, 1618129,
+4592931, -2640868, 3221762, 1627793, -4120484, -1452236, -963146, -1808181, 868657, -801548,
+-1170916, 26387742, 520228, -19105626, -16199543, 16553878, 12982612, -12230993, -11812234, 22193706,
+14108431, 813896, -13166759, 1589675, -5532992, 10523207, -8167417, 1248225, -3455301, -2427194,
+22956600, -3250217, -6238977, 4250407, 3916473, 6854231, 7101729, 771484, -9043054, 6846715,
+3484292, 7845832, 17766132, 8114267, -25538412, -7329362, -4147865, -19580220, 7595113, -3415573,
+421444, -10925323, 9239548, -4260608, 1786706, -14205067, 9643275, -11578158, 976031, 11355357,
+-1799591, 11978664, -9347996, 14945412, -19171660, 9556839, 249108, -6956237, 25153476, 6659884,
+-5189394, -15022722, 6554120, -3124052, 2105071, -2324651, 9230422, 13655849, 18509698, -11740830,
+8345659, -4689568, 16564078, 5996311, 2409477, -1583232, 9953587, 1701881, -6510634, 7976291,
+-5662915, -9739375, -4133906, -13222594, 228707, -14807437, -1191853, -10007811, 11416023, -3685082,
+7363185, -8035347, 364535, -4540854, 6956774, -2281165, -591095, -4504884, 2398202, -3406983,
+-5254893, -3172370, 2378875, -5246840, 3197603, -4183298, 1993402, -2752000, -2479270, -2753611,
+-5591511, -3426310, 224412, -4265440, -3676492, 5107790, 4631586, 2335389, -2543695, -6802692,
+-617402, 2756832, -147640, -5317170, -2988224, -521302, -38352984, -24823838, 20703890, -15126338,
+-14192183, 7992934, 18130668, -29774860, -4910758, 7146289, 1964948, -15524159, -23287312, 43855376,
+-18845242, 5995775, -21432424, 11883101, -7436736, 20531018, 18247168, 1886028, 3272228, -24286966,
+13959, 11554536, -9814537, -14460618, 11580842, 3315178, 12483322, 9935333, -2017561, 4201552,
+-2689723, -1497333, 18387828, -15537581, -9113921, 14765024, -550293, -11715060, 15624017, -415001,
+-3369402, -10464151, -4591320, 5806259, -8164196, -877784, 5537824, -10380399, -10642929, -6899865,
+7953206, -22601192, 10887205, -973347, 21619254, -20191716, 6803765, -15340013, 5755256, -9182640,
+-11729556, 19508278, -10674604, -4664872, -10389526, 8473434, -11893838, 7145752, -3999688, 14288282,
+14649597, -1758252, -22660248, 9154723, 9527311, -1016297, -654446, -12902619, -8903467, -2079838,
+-11116449, -8917426, -3097745, -190589, -5498095, -7315940, 8526047, 2915209, -5210869, -4337380,
+-5326297, -5625871, 6219650, 2352568, 1551557, -8494908, -3207804, 7461432, -4221953, -5179731,
+3528316, -3683471, 95563, 2775086, 4368519, -1668595, -7029788, 1509681, 4304094, -9390409,
+288300, 2554432, 295279, -4902169, -2784750, 342524, -2185065, 19370840, 9450002, -21666500,
+7482370, 23446226, -1988033, 115427, 10865730, -6933688, 16471736, 14894410, -19536732, -11973295,
+-3536369, 10413685, 18804978, 3376918, 10032507, 21181704, 15901580, -22180284, -2301029, 35364224,
+8809515, -2308008, -4080756, -6602976, -10282689, 3156264, 8749385, 9685151, 9073118, -6277095,
+-14982993, 4093641, -7741142, 8320426, 24484534, -6445672, -24372866, 29336774, -8723615, -16109885,
+23848880, -4248260, -6963753, -25378424, -4457639, 10534481, 5129265, -5492190, -10606422, 9844065,
+1167157, -11746199, 10217727, -2336462, 23291608, -17024176, 2546916, -3307662, 26672284, 9065602,
+-37567544, 11841225, -15617575, -6595459, -13337484, 16328392, 54111756, 19732154, 3281892, 12503724,
+15861314, -19887846, -8289287, -5586679, -11206107, -6861747, -12416214, 11890080, -27550604, -7335804,
+2672007, 3325379, -8913668, 1736241, 5061082, -2702608, -3341485, 9439801, 1913945, 6305549,
+5418101, -5674189, 1797981, 4671851, 1971927, 3908957, -2647847, 2403034, -5182415, 729608,
+-1424855, -5142150, -2506114, -1157494, 8665633, 480499, 2415382, 358093, -1528472, -1722819,
+944356, -741956, -7591892, -934692, 1515587, -1847373, -5783711, -14068702, -4853850, -4255776,
+8562017, -1425392, 1565516, -8256001, -28592134, -12182675, 1928977, -11627013, -35980552, 31149788,
+-6016176, 14023068, 2626909, -16516297, -28393492, -27364310, 30625264, 18635864, 7005629, -10842645,
+-20532628, -15395310, -24376624, -6292127, 9050570, -3824132, 1959579, 3848828, -4026532, -12651363,
+-12158516, -20736102, -7457674, -4015258, 10146860, 7064685, 11158325, -5589363, -9296994, -3922379,
+14593762, 2041720, 12917114, -43314744, -10227928, -97711, 9463960, -13846975, -641024, -16021839,
+12489228, 10984916, 2073396, 53414896, 811749, 16664473, 21959630, 913217, 7066832, 292595,
+-3886946, -6471442, 11046119, 16231218, 21242908, -520765, -4061429, 1418950, 13940927, 12663174,
+409633, 10256919, 8853538, 6888054, -2893734, 20876226, -6083285, 26801670, -26589068, -13320841,
+-32692754, -10220412, 5787469, 731218, -8512088, 1688459, -166430, 14555644, -3020436, 17449378,
+-8072391, -6573448, -8864812, 4451734, 9784472, -1677185, -4842039, -5395016, 6017249, 2684,
+20364050, -3328600, -1460826, 3568581, 5675263, 8319352, -7119445, -732829, 2680060, 4048544,
+-9805410, 3279208, 3661997, 12408161, -12449500, 6927246, 4670240, -5404143, 10574209, -6124087,
+-7337952, -88584, -2524367, 5310190, 2674691, -4513474, -183073, 4329864, 989453, 10760504,
+-561567, 6980396, 19997368, -4032974, 603443, 5050345, -28056336, 870805, 3695283, 17184164,
+26374320, -22986128, 4738960, -14600741, 18718542, 16934520, 1896228, 32782948, 10034654, 12877386,
+-12340515, -2235531, -21395916, 32752346, -19487878, 4867272, 19942606, -5109938, -13283260, 9914932,
+-3250217, 4868346, 21434034, 264141, -7156490, -2298881, 3798899, -985158, -13150116, 9240085,
+-1500554, -3955128, 36795520, -28783260, 26548804, 17011292, 33198486, 13333189, -23921358, 18008798,
+108985, 16712791, 43805984, -32087164, -13429289, -4392141, 598611, 29658896, -18030810, 1257352,
+-19342922, 1196685, 33527052, -4108136, 34803732, 9579388, 5744519, 15636365, -21664888, -3846143,
+15165530, 21515102, -35694936, -1567663, -30617748, 13302587, -16038482, -827855, 6942815, 9588514,
+511638, -11110544, -8847633, -33515778, -4016868, -23900420, 18897856, 1348620, -1729798, 14591615,
+599685, -386010, 14078903, 10373957, 6964827, -135291, -5055714, 6439767, -11446625, -1151588,
+-7923141, 7379828, 7781944, -7094212, -1528472, -14727443, 6169184, -1212791, -234076, -712965,
+-14206678, -17181480, -5795522, 5132486, 12574054, 6179921, 5559299, -2362232, 10502806, 7124814,
+-678068, -5782100, 9116068, -13608604, -3933653, 2434173, 14827301, 12087112, 2495913, -5904507,
+-21328808, 6174553, -37430104, -32960652, 610959, 597000, -20898774, 17206712, 5057324, -5594732,
+-19390704, 26674968, -6074695, 39637180, -5663452, 8635032, 14355928, -19107772, -6323266, 6142877,
+-22828288, -12789876, -19956028, 17329656, -15973520, -4255239, -5193153, 15016816, -13460964, -22762252,
+-31823024, -837519, 26593364, 1678795, -14559402, -6141267, -18454400, -6120866, 213675, 11142219,
+-20798380, -2254858, -4494684, -14791330, -20446728, 1054415, 3468723, 13327820, 4583267, 22848690,
+6353867, 28813862, -11955578, 23804320, -6019397, -18450106, -4806069, 38667592, -16641925, 17665200,
+-12195560, 28394028, -14957760, 9635222, 17984638, -990527, -7394860, 3511673, -10233296, 25833692,
+-23587424, -8808978, 25712896, -3078418, -21437256, 1101122, 19654308, 11011222, 19653234, -19747722,
+-16858820, -10620917, -2170569, 19468014, 23429046, -41373420, 2196339, 12103755, -22759032, 3857954,
+14374182, 11293617, 10543608, 10404021, 6882148, -3066607, 754304, 8002598, 8821326, 7306813,
+17709760, -5262946, 9305047, 4056597, 19167902, 11540040, -14821395, -18596134, 5944772, 20277614,
+-5755793, -5451387, -12858595, -21748104, 2498597, -18538152, -5891622, 4412005, -12456479, 11736535,
+3292629, -3740917, -10295037, -1830193, -10672994, -719407, 5877126, 2945274, 1637993, -1705639,
+-2644089, -36128728, 38774964, -13493177, 32952600, -7407208, 26386132, 1818382, -8820252, -18771692,
+-13394929, -2856153, -23622, 19272592, -7927973, -1947231, 5230197, -18360986, 28537374, 10391673,
+663036, -24259050, 15936476, 8186745, -19427748, 18182208, 1213865, -3336653, 4285841, -986232,
+24036784, -6005438, -31130996, 32798518, -17526688, -3102577, 24282672, -11302743, -5799280, -15159624,
+38562364, -17869212, -5218922, -24780350, -5138929, 2565706, 34430068, -16722992, 6152004, 10684268,
+20308752, -5858873, -22499186, 23665270, 14207215, 19134080, -9942849, -5097053, 2066416, 21241834,
+-12410308, -25817586, -28747290, 14680735, -20252918, 4664872, 20788716, 19247360, -14246407, -5162014,
+28120762, -45898168, -1476932, 5858336, 15331423, -2527588, -16998944, -3735548, 25613574, -5475547,
+53013856, 20474646, -15672336, -2489471, 1181116, -6862821, -19733228, -24125906, -17739288, 14422500,
+-11622718, -5037460, -840740, 22858352, 9710384, -8509404, 9897752, 7079180, -701690, 2986613,
+3944928, -726923, 2854006, 23409720, 19272592, 18539226, 12565464, 1374926, -12116640, 5885179,
+-9547175, 10983842, -14482630, 14886357, 22045530, 6994891, 28025198, 30152282, 12063489, -748398,
+15714748, 5065377, -3282429, -10215043, 16356309, -4817880, -13706851, -649077, 7754564, -4294431,
+6710350, 12661564, 4657892, -16997870, 13267154, -7965017, -9024800, -50678468, 16782584, 9417790,
+44518948, 38933340, -6155225, -14898168, -46563888, 971200, 15152108, -20182588, 14797773, 26678726,
+26025354, -12602508, 31398896, 27939836, 1066226, -17507360, -18607946, 28529320, 24475944, -35576824,
+-48210472, 63318556, 3061238, -4929549, 8132521, 4301947, 23420456, 23081692, -9667435, -8470749,
+33001992, 15363098, -6138582, -22510998, 13205414, 2222646, 1617055, 11391864, 1496796, -1478543,
+-13407277, 6995965, -4111358, -16688095, 29690036, -47916264, 32982128, 27014270, -45065480, -3586298,
+22814866, 5323612, 26052734, -6594386, 3588445, 23482196, -3237332, 11756936, -22239878, -35590784,
+98782640, -40916544, -56910464, -12920872, 110034376, 47040092, -46969224, -11117523, 19403588, 12944495,
+-1034550, -28845538, 41366440, 22652194, 17346300, 3575024, -55889872, -9689983, 9090298, 16117939,
+-22948548, -38489348, 3359201, 11476689, 5264020, -18450642, -18947786, 8593156, 5132486, 13222594,
+-2516851, -5158256, -1339493, 14156212, 18734110, 12357695, -28078348, -11430519, 19913078, 14082124,
+-14105746, -497679, 16263431, 28195386, 11316702, -15729781, -20444044, -27409944, 12767864, -9162239,
+11889543, -23266374, 12866648, 6029597, 14490683, -10974715, -5353140, -18803904, -7603166, 17390322,
+3444027, -15527917, 8415452, 26571352, 1834488, -2347737, 8236674, -4297115, 7337415, -19539416,
+-12279311, 24871618, 43006580, 3105261, 71341016, -31465468, -11997454, 41420128, 2188823, -2230162,
+-21094732, -42324756, 35420596, -22000434, -23912230, 18416282, -26557394, 13378823, -25169046, -27953258,
+-4558571, 6265284, 4154307, -6493454, 33915748, 8573292, 20755966, 9996000, 764504, 640487,
+-15047418, -32280438, 10558103, 32415192, -26185878, 22668300, -26693222, -2697240, -1269700, -41507100,
+29828010, -14325327, 11747809, 906775, -12027519, 797253, -29871498, 30993020, -21563420, 10408316,
+-34805340, -21215528, -45721536, 17432198, -21250424, -24095304, -19297288, -9982041, 261456, 48963700,
+17731772, 24237038, -6453189, -22823994, -28701118, 7691213, 2015950, -49812492, -22962506, -87629144,
+-41020696, -33876016, -4846871, -40376452, -33024004, -7312182, 32327146, 36575940, -29508572, -37627672,
+-43013560, 21775484, 51991116, 2624762, 41865732, 1043677, 25389700, 10060424, 3303904, 12087112,
+4727149, -1038308, -14748918, 21441014, 18029736, 9496710, -17667348, -7169911, -2120103, 9136469,
+9953587, -3641596, 10783589, -4715874, -11775190, -21134998, 2903398, 29175712, 10832444, -3580392,
+8545374, -9569724, 15982110, -5877126, 20804822, 19729470, 2640331, -21547850, 3849365, 4603131,
+23554674, 5487358, 26734560, -17888002, -10583873, 24174224, 25593174, 6531572, -6282464, -4851166,
+-24688546, 17993228, -11470247, -49838800, 12098386, 18000208, -43118788, 24362666, 5085778, -12295418,
+2886218, -11973832, -926639, 9646497, 12958990, 22520662, -25864294, 2851858, 30434138, -3043521,
+-14092861, 27425514, -11638288, 2209761, -15779710, -6205691, -31787052, 8671539, 1047972, 18429168,
+-12380243, 1659468, 22796076, -10344966, 631360, 23560044, -45356464, 3287798, -51962660, -16295643,
+-34726420, 28258200, 10141492, -1726040, 11981885, -9925133, 13046500, 35829692, 9808632, 55450176,
+-30459908, -34912716, 32728188, 9170292, -23577760, -22041236, -8883603, 20687246, -19315542, -421444,
+-16673600, -21514564, 13066901, 16378858, -32333588, -18604188, 28241020, -159451, 10121090, -5732171,
+15579457, 7150584, 28499256, -16127602, -11993696, 7507603, 6742562, -7835631, -29323890, -21265994,
+-23156854, 31617402, -14322642, -23871966, 7233262, -5995775, -7767449, -15621333, 6227703, 7497403,
+-2451353, -4408784, -8482560, -14369350, -2376728, -2996814, -10532334, 732292, -5061619, -9753871,
+6311992, -5617817, 5820755, -5538897, -4807142, 15108084, -5676336, 7318625, 5349382, -13732084,
+6454799, 2198487, -5515275, -16726213, 23370528, 15579457, -6409702, 3930969, -11242614, -8344048,
+7235410, 124554, -14492830, 5455146, -5711233, 13629542, -3408057, -2152852, 2713883, 6519761,
+8381092, -33928096, -68576672, -34293168, -13076028, 29952566, 39062192, -74859672, 12891344, -29748554,
+-40581000, -8353175, 46842524, 29925722, 25537338, -16174310, -18064632, -21615496, 23625004, 16641388,
+36460516, 4725538, -47383152, -18593988, 35606888, -5507759, 10442676, 31857384, -15253576, -22127672,
+-34655556, -34747360, 215822, 22571126, 48830020, 36111012, 23973970, 9766756, -49953156, -53273164,
+18612778, -36773508, 8677981, 46838764, 18660022, 3122978, -23653996, -42508364, -7263864, -18355080,
+14259828, 11025718, 7975218, 29329258, -4568772, -5757404, 7742216, 21263846, 34607772, 35764728,
+12168179, 31839666, 10747619, 11387569, -7007776, -35820564, -14020384, -15582678, -29295436, 21986474,
+20639466, 15253039, 15274514, -6892886, -35170952, 5742372, 10529112, -643171, 23439248, 14978162,
+12297028, -2877628, 1631014, 3353833, 24140938, 24198920, 18474264, 5256503, -4424353, -17930952,
+-3274376, 10296110, 3058017, -5377836, -61740, -14273787, -6562173, -8306467, -9278740, 7235410,
+26382374, 12830141, -4784057, -2774012, -19658602, -2153389, 6944425, 13178033, 14820322, -4787278,
+-6254546, -30813706, -17675938, -4577899, 272194, 12191265, 10321343, -6188511, -7329899, 4824322,
+2022930, 3027415, 7627862, -8720931, -2981781, -1874753, 5102958, 8010114, 874026, -3031173,
+-2198487, -13007845, -5825587, 21246130, -60298656, -121356984, -62639952, 11775727, 47407848, 115528712,
+113026360, 47100220, 48099876, 34542276, 1888175, -57513908, -97473744, -146879296, -43836048, -61434676,
+-10685342, 59969556, 106871136, 89865208, 79356504, 43751760, -963683, -27954332, -37512780, -8003135,
+-64978024, -51590072, -49019536, -32106492, -26359824, -12210055, -2287607, 22411676, 52709988, 54291072,
+53351548, 39080444, 50827716, 26985280, 29081224, -9468255, -2100776, -23938538, -62933620, -91154776,
+-110159472, -53336516, -21460878, 17191680, -2813741, 11686606, 25649008, 33550138, 71507984, 82467128,
+109258600, 69724496, 7063074, 31891742, -16476031, -60276108, -52747568, -104989936, -122523608, -91559040,
+-56610892, -24296630, -19173808, 44158168, 49837728, 138264128, 113198160, 82869248, 81096496, 38896836,
+-4933844, -54839216, -79366160, -57891328, -69492032, -95386928, -45322644, 2703145, -9317932, 2779918,
+41749228, 58230628, 42998528, 22492744, 21738976, 37132676, 15833397, -2680597, -4431870, -18102214,
+-3052648, -16143171, -42760156, -22537840, -31886910, -51730196, -9114457, -8914741, 41417444, 37811280,
+22722524, 40674952, 70277480, 50368156, -12336757, -8404714, -33891052, -30090004, -70749920, -73300600,
+-35496296, -14901926, 6094559, 24972550, 29474750, 44007844, 50051400, 48461728, 50813220, 13042205,
+-5191542, -26972394, -33055678, -43559020, -48322140, -48409652, -20918638, 10942503, 14495515, 21116744,
+21966610, 15342697, 16250009, 17115982, 5413270, 4038880, -5794448, -6003291, 10212895, -6893960,
+-16899086, 960999, 3591667, -2177549, -5310190, -7254737, 11274, -2099702, -11901354, -5335423,
+3399467, 752693, 692564, 6895033, 8669391, 6432788, 5888937, 5429376, 2017561, -860604,
+-650151, -1150514, -3672734, -3991635, -4283156, -3984656, -3019362, -1461363, -1915555, -720481,
+561567, 1687922, 3562139, 2763275, 512175, 661425, 1385664, -231391, -2813204, -3082176,
+-1744294, 266288, 1528472, 2936147, 4476967, 4264366, 3550864, 2758443, 570694, -1788317,
+-3802120, -5407364, -6338298, -7009924, -6852084, -4414153, -1014686, 2203855, 5254893, 7446400,
+8196945, 8385387, 6798397, 3476239, 151398, -3175055, -5397164, -6725382, -6990060, -5210869,
+-3149285, -1306744, 863825, 2181307, 2552284, 2306398, 1945620, 1531693, 1122060, 799938,
+294205, 93416, 91805, 32212, -193810, -270046, -304406, -267362, -273267, -213675,
+-190589, -200253, -191663, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-4538707,
--7080791, -5145908, 2013266, -771484, -12128451, -6881612, -520765, 1748589, -3726958, 1291711,
--4499515, 894427, -3251290, 8531416, -6935299, -3031710, -3047816, 5442798, 3751654, 8687645,
-2291365, 1818919, -3963718, 4108673, 522912, 1126355, -483184, 3301219, 4501663, 353798,
-4486094, 4277788, -2073396, 2400887, -2535105, -2803540, 314069, -2287607, 1440425, -3599183,
--6558952, 1788854, 2335925, -1606318, 1818919, -3109020, 2945811, 4042101, -6930467, 1373853,
--389768, 2627446, 2218351, 386547, -6842420, -2026151, -3012920, 2290291, -91268, 711354,
--2204929, 1290638, -3517578, 193810, 3790309, 2453500, 243739, -1918240, 1243930, -5563057,
--3154117, -4079145, 727460, 734439, -366683, 5935645, 10201, 5178120, 55298, 576599,
-460635, 13959, -2810519, 2124935, -191126, 1069447, -620623, 702227, 952946, -343061,
--998580, -342524, -319438, -257698, -189515, -1458141, 229781, 1588601, 863825, 59593,
-143345, -377957, -710817, 699006, -464393, -14031121, -466004, 717796, 178241, 2277943,
--4967130, 3607773, 2017024, -2619393, -8371428, 5466957, 5609764, -1351304, 4663798, 3358128,
--4650913, 9170292, 1892470, -4188667, 4919348, 329102, 4595078, 651761, -8034273, 3017215,
--1542967, -2992519, -3134789, -2459943, 5220533, 4037806, 304943, 4225711, 1515587, -4049081,
--5002027, -482647, -1187559, 2113124, 1431835, -3943854, 911070, 2009508, 1902671, -3471407,
--2909840, -4590783, -1624035, -1167694, 892279, -1147293, 6099928, 2590402, -970663, -3133179,
-1125818, 2517388, 1298691, 6560563, -1120450, 3288871, -412854, -2199560, -4025995, 2791729,
--928250, -1889786, 3845070, -1226213, 1266479, -897111, -821413, -4482872, 956167, -1295470,
-5210332, 6439230, -3916473, -3997004, -2804077, 1054415, -2518462, -1311576, -1632088, -1646583,
--1760400, 999117, 2393371, -194347, 604517, 681289, -272194, 38118, -1161252, -2619393,
--4123706, -9509594, -5674189, -2056216, 6857452, 892816, 1293859, 4199405, 1147293, 1814087,
--9963250, -9154723, -5822365, -1526324, -19327, 4230543, -2978560, 3310883, -1694902, -6156299,
-1940788, -900333, -4201015, -66572, 5930813, 8600672, 3916473, -3937411, 2326262, 275415,
-6216965, -27917, -4916127, -168577, -2861522, 6096169, 2685428, 2859375, 6189585, -1066226,
-471910, 8281771, 7257958, -271120, -12348, 570157, -436476, 2204929, 628676, -6031745,
--7989176, -2824478, -994822, 28991, -2632815, -8923868, -926639, 2477659, -4840965, -2368138,
--3145527, -2701535, 968515, 1148904, 2967823, -6218576, -4957466, 4803384, -2008434, -1082869,
-1012539, -366683, 3151432, -5988795, 2397129, 2225867, -2358474, -2280091, 2415382, -2614561,
-3837553, -1495186, 58519, 3221, -1480690, 760209, 2842732, 1571958, 341987, 1717450,
-507880, -777389, -1515587, -840740, -864362, 353798, 454193, -253940, -202937, 424665,
--115427, 12823162, -4811437, -3796214, -540629, 295816, -4685810, 120259, -3253975, 6206765,
--1418950, -7504382, -10476499, -2635499, -6912213, 9820980, 874026, 6990596, 5909338, -9166534,
--436476, 3952981, 2889439, 4986457, 998580, -521302, -753767, 2377265, -2977486, 3601330,
-2035278, -3224447, 2126009, 221728, 2468533, 5370320, -2774012, 2175938, -250182, 3098282,
-2694555, -1014686, 3680787, -948114, 3214246, -2318209, 2939368, -7416872, -3090766, -2665564,
-2197413, 6541235, -4662187, -3075197, -1661616, 461172, -2079301, -2801929, -1424855, 2687039,
-2219424, 3809636, -1146219, 2198487, -2108292, -2259690, -120259, -1332514, 2689187, 28991,
--3811784, 2262911, -2183454, -3786551, -1329292, -2332167, 1794223, -2747169, -7521562, -1018981,
--3192771, -3187403, 1757179, -2042794, -4484483, -874026, 1075889, -269509, 382789, 13959,
--2775086, 150861, 1629403, -1031329, -1095754, 363998, 51540, 607738, 599685, 1552631,
-546535, -1241782, 974958, -174483, -346819, -446677, -1175210, -1154809, -1200443, 2279017,
-3459059, -1179505, 5185636, -7807714, 3675955, -4616553, -5103495, 7796977, 2985539, -8926553,
-1074816, 182536, 2862596, -6389301, -4035122, -443992, -5142150, -9497783, -9180493, -6023692,
--9161165, 4119948, -831076, 1535988, 5176510, -8041790, 5522254, -2183991, 2660732, 1783485,
--688269, 966905, -1037235, -1052267, -5178657, -3067144, 7100118, -2443837, -5638755, -5201743,
--371515, -2270427, 2314451, -4968204, -7730405, 1324997, 7470559, -995896, 4587025, -2415919,
-2568391, -3817689, 3134253, 1338419, -5235565, 8031589, 1559073, -1552094, 1997697, 7392713,
-6864432, 3643206, -571231, -8009577, -1222992, -6658810, 2097018, -1378148, 1276679, 1278827,
-2035815, -6046240, 97711, -354335, 3119757, 6387153, -7718056, 1146756, -2154463, -7270306,
--682900, 2246805, -601832, -84826, -555661, 2516314, 628676, -2048699, -1312649, -1459215,
--787590, -2459406, 243739, -128312, 1583232, -2985002, -1996623, -154619, -251256, -302795,
-301185, -158914, 653909, -1037772, -988379, -222801, -30602, -737124, -41339, -146566,
-1531156, 1341104, 144418, 100932, -1250372, -2234994, -649614, 181999, -1923609, -1172526,
--819802, -686121, -692564, -8863202, -8484171, -5458904, -9358734, -11124502, -10591926, 4708895,
-5137318, -6764574, -1669669, -6110665, -10057203, 5621039, -2518462, -8715562, 3206730, -456340,
-612033, 1046898, 3171297, 1132798, -159451, 2427730, 3227668, -4954245, -4738960, -1177358,
--5813775, -282394, -6206765, -10878078, -716186, 6810745, -7819525, -5977521, 4481262, -4072166,
-656593, 1832877, -3954591, -3179887, -3329674, -11737609, -4991289, 2683281, -3244311, -3803194,
--7333120, 3471407, 6828461, -2287070, 10449119, -5575942, -2540473, 77846, -2338073, -8582955,
--466541, 2115272, -140660, -1713692, -7453379, -1135482, 7629473, 3888019, 2354716, 3994857,
-2922725, -1857573, 14457934, -4387309, -5407364, -5182952, -6197638, 2631741, 8281234, 5657009,
-774705, -1217623, -3953518, -1367410, 30065, -1825898, 499827, -2485176, 1152125, 6058052,
-4011500, -2834142, -467078, -967978, 2308008, -1144609, 2499134, -2388539, -1093069, 459562,
-633508, -530428, 956167, -1347546, 1706176, 142808, 1378685, 1083406, 887448, -619549,
--985158, -221191, -995896, -1271310, 15904264, 10783052, -620623, 9838696, -962610, 1341104,
-1779190, -5559835, 8952322, -15569, 7881802, 7566122, -6340983, 9862319, 19327, -7715372,
--12682502, 11347304, 5414880, 11273752, -9679783, 6431177, 3402688, -10611790, -10521596, -6250251,
--3093450, 10864657, -10594074, 9147207, -1047435, -1141388, 6512244, 6180458, 8410083, 3045132,
--4840965, 4079145, 7892540, -4986457, 7888781, 12135967, 5042292, 7323456, 2920578, 1993402,
-1919314, 209917, -6835978, 2359548, 506269, 386547, 5445482, -4071092, 3178813, 3651796,
--1801202, 10587094, -6442988, -3905199, -2590402, 9134322, -1856500, 7529078, 3676492, 5060545,
-4445828, 804770, -13223667, -2112050, -10637560, -5764920, 13404056, 7004018, -6245956, -447750,
--7657927, -6772627, -3672734, 11220602, 825707, 3813931, 2024003, -1842004, 2137283, 3976066,
-6901476, -2074469, 3962107, 2916820, 2384781, -2499671, -1729261, 1060857, -1439351, -116501,
-1753420, 2559264, 909996, 1078037, 2972654, 3031710, 973884, 44560, 1336272, -705448,
-2495376, 4038343, 1763084, 76236, 4301947, 469762, -2141578, 1840930, -14089640, 8873939,
-8522826, 25238302, 981937, 2165737, -1275605, -3488587, -1657321, 8516920, 7778723, 6754910,
-9813463, 3950833, 15501611, 4503273, -6147709, 1444720, 13512504, 5296232, 1370095, 2055679,
--6950868, -10046465, 6410239, -5018133, -9791989, -20797306, -326954, 8192650, -629750, 4803921,
--7177964, -3868692, -2677912, 1480153, -2267206, -6291590, -3026341, -16779900, -4350265, -14257681,
-1208496, -7556995, 5710159, -8222178, 3111167, -7910793, -2699924, -588947, 253403, 1107565,
-1603633, -10458245, 5027796, -1668058, 2318209, -5522254, 168577, 8152922, 3354370, 11308112,
-6426882, -3608846, -648003, -2479807, -1137093, -2808372, -3605625, -308701, 4724464, 2904472,
-3522947, 2107218, -16305843, 10653666, 10631118, -4102768, 6108517, 4605279, -8593693, 4024921,
-2638721, 410706, -1784559, 1369021, 5635534, -5048734, 3309809, -1524177, 341450, -521302,
-1291711, 2845953, -2433099, -1259499, 4210679, -3077881, 277025, -9664, 1644436, -2061047,
--3396246, 1981591, 212601, -1228361, -958315, 383326, -42413, 1835025, 2379949, 2426120,
-123480, -2894271, 622233, 27145804, 9736154, -4624069, 13368086, -8908299, 9299678, 6161668,
--12891344, 2657511, -16197395, 253940, -5555004, -11425150, 5995775, 131533, 4571456, 6582575,
-8180839, 13179644, 5457293, -1014686, -3497177, -9096741, -16327855, 5696201, 6295349, 1695438,
--5746130, 8713952, 1075352, 9211094, 5449777, -17023640, -6506339, 2214593, -12545599, 574452,
--964220, -2437931, 3604015, 2687576, -3008625, 12433393, -7290707, 428423, 6941204, -6228240,
-4746476, -2756295, -7648263, 5017596, -127775, -1045288, 7135552, 4701379, 202937, -3803194,
-14842333, 602906, 8322036, 781684, -4705137, -5230197, -12556337, -4889284, 5158793, -391379,
-4394289, -1474248, -9795210, 3831648, 3160559, -14332306, 4096325, 7306813, -3864934, 7798050,
-1797444, -8157217, -8300025, 9309342, -238371, -18798534, 2300492, 1969779, 753767, -1955284,
-1069447, -2623688, 435402, 5551245, -1749662, 850940, 1377074, 1607928, -4754529, 1381369,
--1720134, 1258425, 3454228, 3645354, 2627446, 1239098, -3131031, 1367410, -302258, -321049,
-1221918, -3496104, -73014, 2330557, 3216931, -2196339, -1344325, -4086125, 688269, 4213900,
--4207458, 1668595, 1467268, -28348394, -9454297, 29496762, 8142721, 4657355, -4514011, -857383,
--4609037, 5967320, -9622874, 12861816, 7327751, 5998459, 6160057, -4637491, -514859, -592169,
-4089346, 8639327, -13156022, -7827041, -4249334, 9888088, 3523484, 5490579, 5901822, -1422171,
--9453223, 3019899, 664109, 18001282, 14141180, 3680250, 10722386, 534187, -5273146, 2182380,
--1563368, -2532420, 6885370, 8498130, 6969122, 17418776, 8369281, 6801618, 7603703, -7976828,
--13053479, -6140193, 5846524, -11120744, -5548561, 10710038, 11401528, 6243809, -5262409, 10103911,
--4071092, 1059246, 2357400, 5784247, -3059627, -6380174, 3555696, -5757404, -17980344, 733903,
-5715528, -9804873, 1199907, -1802813, -2606508, -1829119, -5871221, 14527727, -1598265, 8287677,
--20965346, -19907174, -16905528, -7712688, 1634235, 2006824, -628139, 1114544, -435939, -4473209,
-2097018, -4913443, -1520418, -2172180, 5010616, 776315, 1758789, -3950296, -809601, -3519189,
--1352378, 2739652, 4313221, 4697621, 4451197, -91268, -3129958, 2443300, 3908420, 2449742,
-3889630, 1367410, -474594, 1657857, 475668, 798864, -1295470, -2753611, 3116536, 3569655,
--1286880, -1051193, -899259, -620623, 14702747, 23036058, -33592548, -4643934, 2147484, -128312,
--3906810, -8283382, 9373229, -10670309, -17022030, -1620813, 16893180, -2275796, -9658845, 3234110,
--13567265, -7322383, 682900, 8919573, -14226542, 1716913, 15816217, 16205985, 557809, 5816460,
-14192183, -7916699, -12412992, -17430052, 1842541, -17374754, -3595425, 7482370, 7068443, -15362561,
--14463302, -8763344, 6433324, -3998078, -2585034, -3950833, 14099304, -20620674, -5920076, 3338800,
--11035382, -3745212, 184147, -12970801, 753767, 5490042, -565325, 17257716, -1013612, -6838125,
-1603633, -761283, -5483600, 3396246, 8588861, -7704098, 12185359, -5841693, -22255984, 1155346,
--8594230, -4697084, -471373, -2296734, -29407642, -4862977, 13703093, 11800960, 8338679, 17743046,
-18127984, -24224690, -2578054, 1665374, 5210332, -6971269, -11958263, -130997, 5646809, 6578816,
-5696737, 4415227, 2215130, 3579318, -6342056, 130460, 4034585, -1952600, -1353452, 816044,
-1410897, 3595425, -3727495, 805843, -1422171, 1732482, 2426657, -5101885, 891743, -442382,
--3425237, 1609002, -679142, 770947, 300648, 0, -4369593, 2389613, 451508, 1287953,
--2867965, -2166274, -1857573, -1904818, -32270236, 8995272, -6011344, 10983305, -10332618, -125628,
-16866874, -5662915, 23968602, 5493263, 4616016, -10329396, 4533338, 11861626, -7322919, -1512902,
-15506443, 9966472, 11674258, 1623498, -17919678, 11370926, -11565810, -1110786, -6966974, 1744831,
--8896488, 5153424, -2308008, 5020280, 4829154, 8542153, 8717173, 9615895, -11418707, 2698313,
-18298708, 3866008, -3253438, -3700651, -9146670, -7436736, -6442, 638876, 3323768, 15337865,
-1363115, 8444443, 8260833, -616865, -3876208, -3779034, 13997835, -16335371, -3498788, -14461692,
--11832635, -3379603, 150861, -24239184, 6343667, -7650411, 14875082, -3114388, 704375, 10238128,
-2164127, 24798604, 20584704, 29546690, 11258183, 1207960, -3371549, -3051574, -4922033, -1503239,
--5864778, -16345035, 11112154, 13456133, 6514929, -2258079, 1586454, -11528766, -15532212, 7199976,
-2011118, 2106145, -4950487, -2204929, -5376226, -3005940, 4875325, 1536525, 6365679, -463320,
-1473174, -3650722, 4464082, -12984760, -3341485, -506269, -446677, -2484102, 2345052, 540092,
-905701, -945430, -3081102, -685047, -1241782, -916976, 4103841, 427886, 573378, -2709588,
-938987, 597000, -131533, -5820218, -4121021, -4535486, -9561671, 12636331, -3831111, -2887292,
-29624536, -6236293, -6636798, 32947230, -569083, 18701898, 13780403, 999117, 7690139, -4548371,
-6010270, 5626944, 3545496, 4544613, 15179488, -10644540, 18312666, -10252624, -406411, 3656091,
--2580739, -13466333, -12016782, -473520, -19449222, -6305549, -21237540, -1580548, -12652974, -9521942,
--6969122, -6164352, 3064996, -17133162, 19652696, 2973191, -12910135, -9699647, -696858, -2609193,
--3227668, 4980015, 2624762, 19284404, 2142115, -348966, -10003516, 1506460, 3936875, -857383,
--10664404, -4713727, 12097849, 13153337, -871342, -11415486, 4532264, -2353642, 17243756, 19165754,
--7619272, -5125507, -3647501, 2058900, -7494181, 7668664, -24099062, -2387465, 28307056, -25747256,
--12705587, -6069326, 1759326, 2134062, 3307125, -2451890, 7521025, -4674535, -1360431, 13688061,
--2258079, 9883257, -6861211, 9956808, -8915278, 6777459, 5552319, 13584445, -367220, -2455648,
-5711233, 8895414, 720481, -2297808, -1502702, 783295, -4989142, -1631551, 4539244, 5959267,
-1835562, -2112050, 5836324, -4760435, 4780836, 3927211, 4355634, 2308545, 78920, -7345468,
-7167227, 4149475, 3273839, 1457068, 3338263, 6207839, 1378148, -5111011, 2401961, -4189204,
--3205656, 5116917, -1357747, 4413079, 4846334, -2053531, -3617436, -3609383, 1999307, -17324288,
--9508521, -2730526, 13357348, 16112570, 11028939, -10291279, -26385058, 45602888, 11445014, -28652800,
--28760712, -4323422, 6921877, 19413790, -25028386, -4428648, 4631049, -376883, -3631395, 26131118,
-5572183, -15362561, 8157217, 1067299, -773094, 13754633, -2551748, 7513509, -17081622, -5781563,
-29903172, 11054709, 23571854, 7445863, 21306796, 3728032, -7884486, 15007689, 13637058, 21441014,
-10515691, -24218246, -9227737, 5238250, 12472048, -9726490, 3646427, -9370545, -15705622, 1586990,
--1857037, -9364102, 7237557, 10153303, 8761196, 6443525, 5990943, -4607963, 16158741, -117575,
--16151225, -11679627, 14527190, 7916699, -25338696, 11013907, 4440460, 8148627, -22147536, -15085536,
-14159433, 21971978, 12359305, -4910758, -23680840, 5372467, -1095217, 20178830, -6777996, -27064736,
-11306501, 15836618, -6040335, 16483011, 13488882, 5617281, -10871099, 1457068, -191663, 3203509,
-1137630, -692027, -5806259, -2375117, -7274601, -702227, -1475858, 3826279, -4461398, -2596308,
--1529545, -3252901, -2064269, -1700807, -2062121, 8457864, 2481417, 163746, 8127152, -1963337,
--7748658, -5106716, -4170950, -3259343, 316217, -5544266, 2323577, 3497714, 2852932, 2234457,
--7435662, -2790118, 6181532, 5215701, -794032, 4033511, -884226, 10644003, 21030308, 7952669,
-22215182, 3515431, 10053445, 7428683, 37172940, 50676320, 3726421, 9943923, -32666984, -10545755,
-19346680, -16762184, 38293392, -7917236, 5817533, 10139881, 22317724, 12278775, -5640366, -16601659,
--19435264, -6570226, -3417720, -24285356, -11660299, -9809168, 15160161, -9188546, 4326643, -15660525,
-1785096, -6303938, -22767622, 23140746, 15946140, 18582712, 8018704, -11719892, -11389716, -26425860,
-208843, -23842974, -7446400, -2252710, 2835215, 11836930, 9247601, -7907035, -5714454, 9762998,
-21831318, 5692443, 8172786, 15891379, -20847234, 14323716, -11964705, -11046119, -21048024, -9347996,
-9210020, 7778186, 1037235, 24025510, -5602785, -9256191, 3430068, 6099391, 33058900, -11223823,
-13077639, 12917651, -32349694, -217433, 3712462, -7318625, -5018670, 10829223, -6657200, 689342,
-13287555, 6766721, -20026896, -23933706, -23166516, -10958072, -8811662, 18817326, 16322486, -4811437,
--7570417, 723165, 1807644, 12328167, -1723893, -4187056, 7495792, -1685238, -1608465, -3547643,
-5342940, 7501161, -4417911, 7169911, 6674379, 6927782, 950798, -3264712, 6007049, -4602595,
-3472481, 7829189, 278636, 4578435, 6128919, -11171210, -795106, 5105106, 5639829, 7801808,
-624918, 6960532, 57982, 238371, -2790655, 3899830, 5719286, -21352430, 5792837, 32262184,
--7211250, 5024575, -13913547, -3723200, -18668076, 15478525, -27014270, 1626719, -21687974, 4732517,
-9777493, 3798899, -12847858, 45575508, -2837900, -5698885, 4439923, -25339234, 1809792, -16994648,
-928250, 5274757, -4882304, -198642, 10970957, -9048422, 730144, 14078903, 1439351, 3863860,
--21815212, 3224984, -1554778, -970126, -5292474, -27046482, -14971182, 7203197, 2554969, 12613245,
--31512176, 3893925, -29309394, 15444702, -19894826, -31876710, 16661789, 30225832, 5434208, 15092515,
--22017076, 22540526, -5184563, 3747359, -13393856, 18857054, 7704098, 19567872, 6288906, 23649164,
--20719996, 4478577, 1443646, -3130494, -16373489, -13107703, -15375446, 18249316, -4456029, 24634322,
--14731201, -11027865, 2976949, 3712462, -13151727, 7472706, -7627325, -30947386, 14090714, 21350282,
-34866008, 12618077, 24805584, -13660143, 303869, -15461345, 26551488, 9400073, -4785131, -9936944,
-12736189, -8442295, -2281165, 1887101, -7686381, -12830141, -8680129, -5780489, -5078799, -17258252,
--7520488, -14282377, 11694659, -2247342, 7042673, 13946296, 3753802, -9509058, -747324, -9507984,
--4124242, -14503031, -8138426, -15378130, -2586644, 26863410, 5563057, -1359894, 6100464, 8521752,
--14957224, -6306086, -673236, -1354525, -6083285, 7350837, -2778844, -22499724, -1787780, -4619238,
--16712255, -52698712, 6593312, -16765405, 48978196, -9096204, -24561844, 9909563, -1298691, -24491514,
--4090420, 4184372, -14683956, 36981280, 5359583, 3625489, 16864726, -20664162, -31808528, -19602230,
-45151380, -3516505, -9450539, 29828010, 16905528, -14121316, -13986024, -7882339, 35824860, 5070209,
--8590471, -13901199, -6621229, -27829240, 18937048, -3192771, 7749195, 17994840, -6219650, -28831578,
--3411278, 37297496, -1470489, -9244917, 18081812, -8114267, 22410066, 14665166, -1755031, -27486180,
--13885092, -3739306, -25333328, -14916958, -14527727, 2026688, -3340411, 21535502, -14799920, -5164162,
-82141, 55319716, 19405200, -9499931, 11383811, 6538014, -3054259, 28097676, 13859859, -10616085,
-4614943, 22714472, 25872882, -15649250, -10945724, -37547676, -29917668, 17164836, -11020886, 18527416,
--256087, -22081500, 5659693, -1753420, 7274064, -14698452, -10936060, 20779052, 5538897, 2743947,
--1773822, -2445447, 14103599, -6644852, 7416872, -3555159, 8927626, 17441862, 4966056, -12652974,
-2412698, -4882841, 9858024, 7824894, 2954938, 11333882, 18041010, -6985228, 14632417, -1424855,
--18552112, -4942434, 995359, -10635413, 4663798, 13739064, 152471, -7034083, 1278827, -2636036,
-18421652, 15361487, 2021856, 7238631, 9731322, 4781373, 12492986, -15475841, -10975789, 5451387,
-3610994, -3342022, -839129, -2523293, -5751498, -5671505, -59665684, 20492900, -12767864, 31759672,
-32293860, -18711026, 15251429, -31954556, -47979616, 1174137, -33742872, 4438312, -4220879, 26109106,
--19382114, 18627810, 15987479, 26184804, -39866960, 4347044, -24399172, -22367116, 2421825, -28874528,
--18619756, 26197154, -7647726, 9942312, 30600032, -6078453, 10077067, -25223270, 2901787, -27810986,
-25773562, -23057532, -15301358, -17025250, 28747826, 23024246, -16502338, 31487478, 20863340, -6682969,
-31263604, -1762547, -33080374, -9163313, -3900904, -25800406, 5804112, -54563264, 5469641, -13903883,
--26179974, -21169894, 24373940, -14595373, 50538880, 37524592, -56516936, -16106, -1485522, 2669322,
-26112864, -44410500, -30953830, 30469572, -25446608, -31831076, -36612984, 2421288, 75145824, 37306084,
--34999688, -22077206, 3025268, 27300960, 10436234, -36634996, 5411659, -24497420, -14388140, -1362042,
--4436701, 1343251, 24091008, 5633924, 14267881, 9411884, -28178206, 7481296, 12586402, -4059818,
--10187662, 1398012, -24061480, 21279416, 7706245, 5742908, -31903018, 5207648, 16364899, 4520990,
--7588671, -6077916, 14052059, -23363548, -1570347, -17464410, -9659381, 22618908, -24142012, -1140314,
-14258218, -12239046, 11157251, 13484587, 3465502, 1860795, 9933186, 3079492, -12901008, 18486612,
--14527190, -11521250, -6650220, -19979650, -6320581, -17973364, -17215840, 6936372, 28186260, -31224412,
-15722265, -52467856, -7862475, -20404852, -17782238, 27810450, -35842040, -55927452, 32715302, 49251464,
-11962558, -9517111, -44678396, 3056406, 17539572, 17523466, -7461432, -17907866, 2278480, -4409858,
--5819144, 5711233, -6555194, -14999636, -29249264, 3723200, -17586818, 4376572, -15762530, -33386928,
-20784958, 15277199, 25548612, 904091, 27628450, 15466714, 4189741, -8943733, -14064407, -22987202,
--16363825, -9241696, 6570763, 15865609, -10587631, -5178657, -38012072, 35737884, 42378980, 23569170,
--21518860, 22617298, -29403882, -441308, 6848862, -64404108, 5340255, 6442988, 30535606, -38409892,
-49718540, 19549618, -35465692, -20085952, 15052250, -6129455, -25956098, -31865436, -34314640, -46848428,
-34652868, -14681809, 5547487, -71670120, -28448252, 4539244, 897111, 16594680, -11325829, 3046206,
-12363063, 13018583, -34179348, -7727183, 5688148, 19157164, 13906567, -2807298, -13063680, -5470178,
--2743947, 17903572, 3129958, -10949482, -1216550, -8471286, -3234647, 16576963, 7633768, -7954280,
-17629230, -17282948, -10117332, -12849468, 17044578, -6559489, 2147484, -7610682, 7517804, -24097988,
-3720516, 10353019, 3958349, -4052839, -10492068, -8917963, -12298639, 12526809, 2765422, -3882114,
--14103599, 14939507, 927176, 1306744, 2188823, -24512452, -12061879, -15955804, 2180770, -7946763,
-185757, -305480, -5672041, -13698261, -4964446, -48968532, -6461779, 17964238, -22956600, -21367462,
-20340428, 20637318, 4254165, -19288162, -66320200, -9660455, 13062069, 8020852, 28865938, -525597,
-16806744, -4223027, -358093, -8247948, 1300301, 17693118, 2083596, 835371, 17126718, -4440460,
--4077535, -22327388, -2033130, -3488050, -2481417, 3986267, 13652090, 18741090, -3633006, 134218,
-14622216, -3173981, -28127204, -1800128, -24974162, 3774740, 3404299, -32613298, 23746874, -44986024,
-10093173, 12565464, -19809462, -1245004, 58496916, -16416976, 19724638, -12202002, 10418517, -43676060,
-4681515, 25816512, -739271, 22301618, -5212480, 2472291, -1493575, 28464896, -18279380, -21698712,
-25027848, -23018340, -28726352, -190589, -45835356, 30701500, 25271050, -8977019, 9685151, 4409321,
--392453, -38765300, -6542309, -2784750, 17029546, 6638946, -16574816, 15669651, -1271847, -19637664,
--13624173, -12128988, 2462090, 2908767, -2892661, -227096, 12251394, -12068321, -3743601, 8808978,
--13330505, -6842957, 9867150, -13207561, 647466, 12184822, 499827, -3078418, 4922033, -181462,
-910533, 10698764, -4084514, -2860985, -8252780, 3790309, -5334350, -4467303, 4236449, 6054830,
--11534135, 2179159, -10808285, 10498511, -12272332, 7036767, -476741, -1708860, 779000, -2166274,
--1817845, -19864, 7777112, -23987930, -73078328, -34213708, -11205570, 24230594, 54320600, -49236432,
-11104638, -14062260, -49634252, -6721624, 45150844, 12339441, 37249176, -30925376, 9575630, -10531797,
-2485176, 22080964, 3997541, 12121471, -6751152, -63351840, 19178640, 3396782, -26688926, 28000502,
-21489868, -18956376, 19893214, 2624225, -20390358, 6627135, -12470438, 40068824, 5220533, 16392816,
-1110786, -40548788, -32353988, -10740639, -23882702, 26847840, 38522636, 39523364, 31940598, -10652593,
-4764193, -31805844, -4480188, -2950643, -13143674, -16631187, 3091840, 3376381, -43731892, -12639552,
--16874926, -937377, 20117090, -21425444, -4640712, 7899519, 414464, 22970558, -24782498, -756451,
--28121836, -14709189, -20691542, 11868605, 7949985, 22938884, -2694555, -2100239, -26480084, -7798050,
--12378633, -3128347, 11713986, 15781857, 32285806, -20228760, 6183679, -17497160, 6742562, 12199318,
-3706557, -9525164, -3624953, -3194382, -3624416, -1213865, 8793946, 9095130, -2153389, -814970,
--3900367, -6059125, 4465692, 9046812, 3358128, 1204738, 2756295, -7220914, -8301098, -7890392,
-13771813, -163746, 9642202, 7866770, -909996, -10231686, -10834055, 1880659, 3506841, -8456791,
--2400350, -7334731, 5953362, -5258651, 2281702, 1792612, 6211597, -2743410, -3054259, 1633698,
-2497524, -4263829, 7110319, -2177549, 19105626, -30830348, -121703264, -64164664, 13172665, 51219632,
-114591872, 87570624, 49325016, 16630650, 25727928, -8135205, -48189532, -93174480, -123993024, -31337156,
--35940824, 1897839, 60385092, 86178520, 57752816, 77220288, 17756468, 16400333, -9041980, -39003136,
--44241384, -35714264, -38022272, -46937552, -37701760, -16054588, -2447058, -521839, 30089468, 39140572,
-74691088, 35370668, 11591043, 30744986, 47650516, 15270219, 9059160, -38408280, -52714280, -86009944,
--39831528, -45074072, -32727650, -19371914, -15324443, 6454799, 10546292, 36277440, 74050072, 59708100,
-65000036, 48262548, 58961848, 44014824, -35582192, -32464048, -82111720, -63447404, -46581604, -104387032,
--80897320, -49344880, 3835406, 63433444, 60270740, 71427992, 89089968, 76366128, 40976672, 49604724,
-1864016, -19270982, -52425980, -75872744, -76413912, -62860068, -37953016, -8052527, 10757819, 18524730,
-21046950, 35385160, 25367150, 41372884, 25989920, 10437844, 6619082, -1466731, -4181688, -868120,
--28667296, -19815906, -4160213, -13150653, -34224984, -9456444, -12373801, -12564390, -2500208, 25604984,
-48035452, 40076876, 4064113, 39395588, 27524298, -5022965, -32482838, -51059644, -47750908, -21428128,
--23732916, -14615237, -8351027, 13702556, 29678224, 41531796, 46878496, 34027416, 13070122, 14641544,
--9213779, -25589952, -43557948, -38709468, -17411798, -1605244, -12922483, -4015258, 12237972, 15978889,
-16116865, 15695421, 3747896, 6608344, 9700184, -1612223, -9331890, 394600, 2905009, -6543383,
--7796440, -976031, 2539936, 2194728, -5126044, -2423972, 1670205, 823023, -4494684, -7101192,
--5733245, 2141578, 367220, -326418, 4235375, 7963406, 5893769, 6070937, 4129611, 3320010,
--449898, -2192581, -3786014, -5168993, -4513474, -1536525, -3647501, -3114925, -2700998, 2882460,
-3309809, -974421, -1578937, 3125663, 1773285, -330176, -514322, -775778, -2226404, 1753957,
-2387465, 1235340, 2127620, 4174708, 4228396, 3777961, 288300, -1224603, -2450816, -3696893,
--7072201, -8356933, -7110319, -4737349, -3775276, -171799, 3756486, 6982543, 8635569, 9871445,
-8543227, 6291054, 2726767, -198105, -3752728, -6447820, -7882339, -7201050, -7425462, -5027259,
--2384244, -386547, 1818382, 4675072, 4961224, 4671851, 4155381, 3485903, 1632088, 64425,
--1084479, -1148904, -1413044, -1456531, -1502702, -1081258, -809601, -424665, -227096, -66035,
--11811, 140660, 194884, 243739, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-7080791, -5145908, 2013266, -771484, -12128451, -6881612, -520765, 1748589, -3726958, 1291711,
+-4499515, 894427, -3251290, 8531416, -6935299, -3031710, -3047816, 5442798, 3751654, 8687645,
+2291365, 1818919, -3963718, 4108673, 522912, 1126355, -483184, 3301219, 4501663, 353798,
+4486094, 4277788, -2073396, 2400887, -2535105, -2803540, 314069, -2287607, 1440425, -3599183,
+-6558952, 1788854, 2335925, -1606318, 1818919, -3109020, 2945811, 4042101, -6930467, 1373853,
+-389768, 2627446, 2218351, 386547, -6842420, -2026151, -3012920, 2290291, -91268, 711354,
+-2204929, 1290638, -3517578, 193810, 3790309, 2453500, 243739, -1918240, 1243930, -5563057,
+-3154117, -4079145, 727460, 734439, -366683, 5935645, 10201, 5178120, 55298, 576599,
+460635, 13959, -2810519, 2124935, -191126, 1069447, -620623, 702227, 952946, -343061,
+-998580, -342524, -319438, -257698, -189515, -1458141, 229781, 1588601, 863825, 59593,
+143345, -377957, -710817, 699006, -464393, -14031121, -466004, 717796, 178241, 2277943,
+-4967130, 3607773, 2017024, -2619393, -8371428, 5466957, 5609764, -1351304, 4663798, 3358128,
+-4650913, 9170292, 1892470, -4188667, 4919348, 329102, 4595078, 651761, -8034273, 3017215,
+-1542967, -2992519, -3134789, -2459943, 5220533, 4037806, 304943, 4225711, 1515587, -4049081,
+-5002027, -482647, -1187559, 2113124, 1431835, -3943854, 911070, 2009508, 1902671, -3471407,
+-2909840, -4590783, -1624035, -1167694, 892279, -1147293, 6099928, 2590402, -970663, -3133179,
+1125818, 2517388, 1298691, 6560563, -1120450, 3288871, -412854, -2199560, -4025995, 2791729,
+-928250, -1889786, 3845070, -1226213, 1266479, -897111, -821413, -4482872, 956167, -1295470,
+5210332, 6439230, -3916473, -3997004, -2804077, 1054415, -2518462, -1311576, -1632088, -1646583,
+-1760400, 999117, 2393371, -194347, 604517, 681289, -272194, 38118, -1161252, -2619393,
+-4123706, -9509594, -5674189, -2056216, 6857452, 892816, 1293859, 4199405, 1147293, 1814087,
+-9963250, -9154723, -5822365, -1526324, -19327, 4230543, -2978560, 3310883, -1694902, -6156299,
+1940788, -900333, -4201015, -66572, 5930813, 8600672, 3916473, -3937411, 2326262, 275415,
+6216965, -27917, -4916127, -168577, -2861522, 6096169, 2685428, 2859375, 6189585, -1066226,
+471910, 8281771, 7257958, -271120, -12348, 570157, -436476, 2204929, 628676, -6031745,
+-7989176, -2824478, -994822, 28991, -2632815, -8923868, -926639, 2477659, -4840965, -2368138,
+-3145527, -2701535, 968515, 1148904, 2967823, -6218576, -4957466, 4803384, -2008434, -1082869,
+1012539, -366683, 3151432, -5988795, 2397129, 2225867, -2358474, -2280091, 2415382, -2614561,
+3837553, -1495186, 58519, 3221, -1480690, 760209, 2842732, 1571958, 341987, 1717450,
+507880, -777389, -1515587, -840740, -864362, 353798, 454193, -253940, -202937, 424665,
+-115427, 12823162, -4811437, -3796214, -540629, 295816, -4685810, 120259, -3253975, 6206765,
+-1418950, -7504382, -10476499, -2635499, -6912213, 9820980, 874026, 6990596, 5909338, -9166534,
+-436476, 3952981, 2889439, 4986457, 998580, -521302, -753767, 2377265, -2977486, 3601330,
+2035278, -3224447, 2126009, 221728, 2468533, 5370320, -2774012, 2175938, -250182, 3098282,
+2694555, -1014686, 3680787, -948114, 3214246, -2318209, 2939368, -7416872, -3090766, -2665564,
+2197413, 6541235, -4662187, -3075197, -1661616, 461172, -2079301, -2801929, -1424855, 2687039,
+2219424, 3809636, -1146219, 2198487, -2108292, -2259690, -120259, -1332514, 2689187, 28991,
+-3811784, 2262911, -2183454, -3786551, -1329292, -2332167, 1794223, -2747169, -7521562, -1018981,
+-3192771, -3187403, 1757179, -2042794, -4484483, -874026, 1075889, -269509, 382789, 13959,
+-2775086, 150861, 1629403, -1031329, -1095754, 363998, 51540, 607738, 599685, 1552631,
+546535, -1241782, 974958, -174483, -346819, -446677, -1175210, -1154809, -1200443, 2279017,
+3459059, -1179505, 5185636, -7807714, 3675955, -4616553, -5103495, 7796977, 2985539, -8926553,
+1074816, 182536, 2862596, -6389301, -4035122, -443992, -5142150, -9497783, -9180493, -6023692,
+-9161165, 4119948, -831076, 1535988, 5176510, -8041790, 5522254, -2183991, 2660732, 1783485,
+-688269, 966905, -1037235, -1052267, -5178657, -3067144, 7100118, -2443837, -5638755, -5201743,
+-371515, -2270427, 2314451, -4968204, -7730405, 1324997, 7470559, -995896, 4587025, -2415919,
+2568391, -3817689, 3134253, 1338419, -5235565, 8031589, 1559073, -1552094, 1997697, 7392713,
+6864432, 3643206, -571231, -8009577, -1222992, -6658810, 2097018, -1378148, 1276679, 1278827,
+2035815, -6046240, 97711, -354335, 3119757, 6387153, -7718056, 1146756, -2154463, -7270306,
+-682900, 2246805, -601832, -84826, -555661, 2516314, 628676, -2048699, -1312649, -1459215,
+-787590, -2459406, 243739, -128312, 1583232, -2985002, -1996623, -154619, -251256, -302795,
+301185, -158914, 653909, -1037772, -988379, -222801, -30602, -737124, -41339, -146566,
+1531156, 1341104, 144418, 100932, -1250372, -2234994, -649614, 181999, -1923609, -1172526,
+-819802, -686121, -692564, -8863202, -8484171, -5458904, -9358734, -11124502, -10591926, 4708895,
+5137318, -6764574, -1669669, -6110665, -10057203, 5621039, -2518462, -8715562, 3206730, -456340,
+612033, 1046898, 3171297, 1132798, -159451, 2427730, 3227668, -4954245, -4738960, -1177358,
+-5813775, -282394, -6206765, -10878078, -716186, 6810745, -7819525, -5977521, 4481262, -4072166,
+656593, 1832877, -3954591, -3179887, -3329674, -11737609, -4991289, 2683281, -3244311, -3803194,
+-7333120, 3471407, 6828461, -2287070, 10449119, -5575942, -2540473, 77846, -2338073, -8582955,
+-466541, 2115272, -140660, -1713692, -7453379, -1135482, 7629473, 3888019, 2354716, 3994857,
+2922725, -1857573, 14457934, -4387309, -5407364, -5182952, -6197638, 2631741, 8281234, 5657009,
+774705, -1217623, -3953518, -1367410, 30065, -1825898, 499827, -2485176, 1152125, 6058052,
+4011500, -2834142, -467078, -967978, 2308008, -1144609, 2499134, -2388539, -1093069, 459562,
+633508, -530428, 956167, -1347546, 1706176, 142808, 1378685, 1083406, 887448, -619549,
+-985158, -221191, -995896, -1271310, 15904264, 10783052, -620623, 9838696, -962610, 1341104,
+1779190, -5559835, 8952322, -15569, 7881802, 7566122, -6340983, 9862319, 19327, -7715372,
+-12682502, 11347304, 5414880, 11273752, -9679783, 6431177, 3402688, -10611790, -10521596, -6250251,
+-3093450, 10864657, -10594074, 9147207, -1047435, -1141388, 6512244, 6180458, 8410083, 3045132,
+-4840965, 4079145, 7892540, -4986457, 7888781, 12135967, 5042292, 7323456, 2920578, 1993402,
+1919314, 209917, -6835978, 2359548, 506269, 386547, 5445482, -4071092, 3178813, 3651796,
+-1801202, 10587094, -6442988, -3905199, -2590402, 9134322, -1856500, 7529078, 3676492, 5060545,
+4445828, 804770, -13223667, -2112050, -10637560, -5764920, 13404056, 7004018, -6245956, -447750,
+-7657927, -6772627, -3672734, 11220602, 825707, 3813931, 2024003, -1842004, 2137283, 3976066,
+6901476, -2074469, 3962107, 2916820, 2384781, -2499671, -1729261, 1060857, -1439351, -116501,
+1753420, 2559264, 909996, 1078037, 2972654, 3031710, 973884, 44560, 1336272, -705448,
+2495376, 4038343, 1763084, 76236, 4301947, 469762, -2141578, 1840930, -14089640, 8873939,
+8522826, 25238302, 981937, 2165737, -1275605, -3488587, -1657321, 8516920, 7778723, 6754910,
+9813463, 3950833, 15501611, 4503273, -6147709, 1444720, 13512504, 5296232, 1370095, 2055679,
+-6950868, -10046465, 6410239, -5018133, -9791989, -20797306, -326954, 8192650, -629750, 4803921,
+-7177964, -3868692, -2677912, 1480153, -2267206, -6291590, -3026341, -16779900, -4350265, -14257681,
+1208496, -7556995, 5710159, -8222178, 3111167, -7910793, -2699924, -588947, 253403, 1107565,
+1603633, -10458245, 5027796, -1668058, 2318209, -5522254, 168577, 8152922, 3354370, 11308112,
+6426882, -3608846, -648003, -2479807, -1137093, -2808372, -3605625, -308701, 4724464, 2904472,
+3522947, 2107218, -16305843, 10653666, 10631118, -4102768, 6108517, 4605279, -8593693, 4024921,
+2638721, 410706, -1784559, 1369021, 5635534, -5048734, 3309809, -1524177, 341450, -521302,
+1291711, 2845953, -2433099, -1259499, 4210679, -3077881, 277025, -9664, 1644436, -2061047,
+-3396246, 1981591, 212601, -1228361, -958315, 383326, -42413, 1835025, 2379949, 2426120,
+123480, -2894271, 622233, 27145804, 9736154, -4624069, 13368086, -8908299, 9299678, 6161668,
+-12891344, 2657511, -16197395, 253940, -5555004, -11425150, 5995775, 131533, 4571456, 6582575,
+8180839, 13179644, 5457293, -1014686, -3497177, -9096741, -16327855, 5696201, 6295349, 1695438,
+-5746130, 8713952, 1075352, 9211094, 5449777, -17023640, -6506339, 2214593, -12545599, 574452,
+-964220, -2437931, 3604015, 2687576, -3008625, 12433393, -7290707, 428423, 6941204, -6228240,
+4746476, -2756295, -7648263, 5017596, -127775, -1045288, 7135552, 4701379, 202937, -3803194,
+14842333, 602906, 8322036, 781684, -4705137, -5230197, -12556337, -4889284, 5158793, -391379,
+4394289, -1474248, -9795210, 3831648, 3160559, -14332306, 4096325, 7306813, -3864934, 7798050,
+1797444, -8157217, -8300025, 9309342, -238371, -18798534, 2300492, 1969779, 753767, -1955284,
+1069447, -2623688, 435402, 5551245, -1749662, 850940, 1377074, 1607928, -4754529, 1381369,
+-1720134, 1258425, 3454228, 3645354, 2627446, 1239098, -3131031, 1367410, -302258, -321049,
+1221918, -3496104, -73014, 2330557, 3216931, -2196339, -1344325, -4086125, 688269, 4213900,
+-4207458, 1668595, 1467268, -28348394, -9454297, 29496762, 8142721, 4657355, -4514011, -857383,
+-4609037, 5967320, -9622874, 12861816, 7327751, 5998459, 6160057, -4637491, -514859, -592169,
+4089346, 8639327, -13156022, -7827041, -4249334, 9888088, 3523484, 5490579, 5901822, -1422171,
+-9453223, 3019899, 664109, 18001282, 14141180, 3680250, 10722386, 534187, -5273146, 2182380,
+-1563368, -2532420, 6885370, 8498130, 6969122, 17418776, 8369281, 6801618, 7603703, -7976828,
+-13053479, -6140193, 5846524, -11120744, -5548561, 10710038, 11401528, 6243809, -5262409, 10103911,
+-4071092, 1059246, 2357400, 5784247, -3059627, -6380174, 3555696, -5757404, -17980344, 733903,
+5715528, -9804873, 1199907, -1802813, -2606508, -1829119, -5871221, 14527727, -1598265, 8287677,
+-20965346, -19907174, -16905528, -7712688, 1634235, 2006824, -628139, 1114544, -435939, -4473209,
+2097018, -4913443, -1520418, -2172180, 5010616, 776315, 1758789, -3950296, -809601, -3519189,
+-1352378, 2739652, 4313221, 4697621, 4451197, -91268, -3129958, 2443300, 3908420, 2449742,
+3889630, 1367410, -474594, 1657857, 475668, 798864, -1295470, -2753611, 3116536, 3569655,
+-1286880, -1051193, -899259, -620623, 14702747, 23036058, -33592548, -4643934, 2147484, -128312,
+-3906810, -8283382, 9373229, -10670309, -17022030, -1620813, 16893180, -2275796, -9658845, 3234110,
+-13567265, -7322383, 682900, 8919573, -14226542, 1716913, 15816217, 16205985, 557809, 5816460,
+14192183, -7916699, -12412992, -17430052, 1842541, -17374754, -3595425, 7482370, 7068443, -15362561,
+-14463302, -8763344, 6433324, -3998078, -2585034, -3950833, 14099304, -20620674, -5920076, 3338800,
+-11035382, -3745212, 184147, -12970801, 753767, 5490042, -565325, 17257716, -1013612, -6838125,
+1603633, -761283, -5483600, 3396246, 8588861, -7704098, 12185359, -5841693, -22255984, 1155346,
+-8594230, -4697084, -471373, -2296734, -29407642, -4862977, 13703093, 11800960, 8338679, 17743046,
+18127984, -24224690, -2578054, 1665374, 5210332, -6971269, -11958263, -130997, 5646809, 6578816,
+5696737, 4415227, 2215130, 3579318, -6342056, 130460, 4034585, -1952600, -1353452, 816044,
+1410897, 3595425, -3727495, 805843, -1422171, 1732482, 2426657, -5101885, 891743, -442382,
+-3425237, 1609002, -679142, 770947, 300648, 0, -4369593, 2389613, 451508, 1287953,
+-2867965, -2166274, -1857573, -1904818, -32270236, 8995272, -6011344, 10983305, -10332618, -125628,
+16866874, -5662915, 23968602, 5493263, 4616016, -10329396, 4533338, 11861626, -7322919, -1512902,
+15506443, 9966472, 11674258, 1623498, -17919678, 11370926, -11565810, -1110786, -6966974, 1744831,
+-8896488, 5153424, -2308008, 5020280, 4829154, 8542153, 8717173, 9615895, -11418707, 2698313,
+18298708, 3866008, -3253438, -3700651, -9146670, -7436736, -6442, 638876, 3323768, 15337865,
+1363115, 8444443, 8260833, -616865, -3876208, -3779034, 13997835, -16335371, -3498788, -14461692,
+-11832635, -3379603, 150861, -24239184, 6343667, -7650411, 14875082, -3114388, 704375, 10238128,
+2164127, 24798604, 20584704, 29546690, 11258183, 1207960, -3371549, -3051574, -4922033, -1503239,
+-5864778, -16345035, 11112154, 13456133, 6514929, -2258079, 1586454, -11528766, -15532212, 7199976,
+2011118, 2106145, -4950487, -2204929, -5376226, -3005940, 4875325, 1536525, 6365679, -463320,
+1473174, -3650722, 4464082, -12984760, -3341485, -506269, -446677, -2484102, 2345052, 540092,
+905701, -945430, -3081102, -685047, -1241782, -916976, 4103841, 427886, 573378, -2709588,
+938987, 597000, -131533, -5820218, -4121021, -4535486, -9561671, 12636331, -3831111, -2887292,
+29624536, -6236293, -6636798, 32947230, -569083, 18701898, 13780403, 999117, 7690139, -4548371,
+6010270, 5626944, 3545496, 4544613, 15179488, -10644540, 18312666, -10252624, -406411, 3656091,
+-2580739, -13466333, -12016782, -473520, -19449222, -6305549, -21237540, -1580548, -12652974, -9521942,
+-6969122, -6164352, 3064996, -17133162, 19652696, 2973191, -12910135, -9699647, -696858, -2609193,
+-3227668, 4980015, 2624762, 19284404, 2142115, -348966, -10003516, 1506460, 3936875, -857383,
+-10664404, -4713727, 12097849, 13153337, -871342, -11415486, 4532264, -2353642, 17243756, 19165754,
+-7619272, -5125507, -3647501, 2058900, -7494181, 7668664, -24099062, -2387465, 28307056, -25747256,
+-12705587, -6069326, 1759326, 2134062, 3307125, -2451890, 7521025, -4674535, -1360431, 13688061,
+-2258079, 9883257, -6861211, 9956808, -8915278, 6777459, 5552319, 13584445, -367220, -2455648,
+5711233, 8895414, 720481, -2297808, -1502702, 783295, -4989142, -1631551, 4539244, 5959267,
+1835562, -2112050, 5836324, -4760435, 4780836, 3927211, 4355634, 2308545, 78920, -7345468,
+7167227, 4149475, 3273839, 1457068, 3338263, 6207839, 1378148, -5111011, 2401961, -4189204,
+-3205656, 5116917, -1357747, 4413079, 4846334, -2053531, -3617436, -3609383, 1999307, -17324288,
+-9508521, -2730526, 13357348, 16112570, 11028939, -10291279, -26385058, 45602888, 11445014, -28652800,
+-28760712, -4323422, 6921877, 19413790, -25028386, -4428648, 4631049, -376883, -3631395, 26131118,
+5572183, -15362561, 8157217, 1067299, -773094, 13754633, -2551748, 7513509, -17081622, -5781563,
+29903172, 11054709, 23571854, 7445863, 21306796, 3728032, -7884486, 15007689, 13637058, 21441014,
+10515691, -24218246, -9227737, 5238250, 12472048, -9726490, 3646427, -9370545, -15705622, 1586990,
+-1857037, -9364102, 7237557, 10153303, 8761196, 6443525, 5990943, -4607963, 16158741, -117575,
+-16151225, -11679627, 14527190, 7916699, -25338696, 11013907, 4440460, 8148627, -22147536, -15085536,
+14159433, 21971978, 12359305, -4910758, -23680840, 5372467, -1095217, 20178830, -6777996, -27064736,
+11306501, 15836618, -6040335, 16483011, 13488882, 5617281, -10871099, 1457068, -191663, 3203509,
+1137630, -692027, -5806259, -2375117, -7274601, -702227, -1475858, 3826279, -4461398, -2596308,
+-1529545, -3252901, -2064269, -1700807, -2062121, 8457864, 2481417, 163746, 8127152, -1963337,
+-7748658, -5106716, -4170950, -3259343, 316217, -5544266, 2323577, 3497714, 2852932, 2234457,
+-7435662, -2790118, 6181532, 5215701, -794032, 4033511, -884226, 10644003, 21030308, 7952669,
+22215182, 3515431, 10053445, 7428683, 37172940, 50676320, 3726421, 9943923, -32666984, -10545755,
+19346680, -16762184, 38293392, -7917236, 5817533, 10139881, 22317724, 12278775, -5640366, -16601659,
+-19435264, -6570226, -3417720, -24285356, -11660299, -9809168, 15160161, -9188546, 4326643, -15660525,
+1785096, -6303938, -22767622, 23140746, 15946140, 18582712, 8018704, -11719892, -11389716, -26425860,
+208843, -23842974, -7446400, -2252710, 2835215, 11836930, 9247601, -7907035, -5714454, 9762998,
+21831318, 5692443, 8172786, 15891379, -20847234, 14323716, -11964705, -11046119, -21048024, -9347996,
+9210020, 7778186, 1037235, 24025510, -5602785, -9256191, 3430068, 6099391, 33058900, -11223823,
+13077639, 12917651, -32349694, -217433, 3712462, -7318625, -5018670, 10829223, -6657200, 689342,
+13287555, 6766721, -20026896, -23933706, -23166516, -10958072, -8811662, 18817326, 16322486, -4811437,
+-7570417, 723165, 1807644, 12328167, -1723893, -4187056, 7495792, -1685238, -1608465, -3547643,
+5342940, 7501161, -4417911, 7169911, 6674379, 6927782, 950798, -3264712, 6007049, -4602595,
+3472481, 7829189, 278636, 4578435, 6128919, -11171210, -795106, 5105106, 5639829, 7801808,
+624918, 6960532, 57982, 238371, -2790655, 3899830, 5719286, -21352430, 5792837, 32262184,
+-7211250, 5024575, -13913547, -3723200, -18668076, 15478525, -27014270, 1626719, -21687974, 4732517,
+9777493, 3798899, -12847858, 45575508, -2837900, -5698885, 4439923, -25339234, 1809792, -16994648,
+928250, 5274757, -4882304, -198642, 10970957, -9048422, 730144, 14078903, 1439351, 3863860,
+-21815212, 3224984, -1554778, -970126, -5292474, -27046482, -14971182, 7203197, 2554969, 12613245,
+-31512176, 3893925, -29309394, 15444702, -19894826, -31876710, 16661789, 30225832, 5434208, 15092515,
+-22017076, 22540526, -5184563, 3747359, -13393856, 18857054, 7704098, 19567872, 6288906, 23649164,
+-20719996, 4478577, 1443646, -3130494, -16373489, -13107703, -15375446, 18249316, -4456029, 24634322,
+-14731201, -11027865, 2976949, 3712462, -13151727, 7472706, -7627325, -30947386, 14090714, 21350282,
+34866008, 12618077, 24805584, -13660143, 303869, -15461345, 26551488, 9400073, -4785131, -9936944,
+12736189, -8442295, -2281165, 1887101, -7686381, -12830141, -8680129, -5780489, -5078799, -17258252,
+-7520488, -14282377, 11694659, -2247342, 7042673, 13946296, 3753802, -9509058, -747324, -9507984,
+-4124242, -14503031, -8138426, -15378130, -2586644, 26863410, 5563057, -1359894, 6100464, 8521752,
+-14957224, -6306086, -673236, -1354525, -6083285, 7350837, -2778844, -22499724, -1787780, -4619238,
+-16712255, -52698712, 6593312, -16765405, 48978196, -9096204, -24561844, 9909563, -1298691, -24491514,
+-4090420, 4184372, -14683956, 36981280, 5359583, 3625489, 16864726, -20664162, -31808528, -19602230,
+45151380, -3516505, -9450539, 29828010, 16905528, -14121316, -13986024, -7882339, 35824860, 5070209,
+-8590471, -13901199, -6621229, -27829240, 18937048, -3192771, 7749195, 17994840, -6219650, -28831578,
+-3411278, 37297496, -1470489, -9244917, 18081812, -8114267, 22410066, 14665166, -1755031, -27486180,
+-13885092, -3739306, -25333328, -14916958, -14527727, 2026688, -3340411, 21535502, -14799920, -5164162,
+82141, 55319716, 19405200, -9499931, 11383811, 6538014, -3054259, 28097676, 13859859, -10616085,
+4614943, 22714472, 25872882, -15649250, -10945724, -37547676, -29917668, 17164836, -11020886, 18527416,
+-256087, -22081500, 5659693, -1753420, 7274064, -14698452, -10936060, 20779052, 5538897, 2743947,
+-1773822, -2445447, 14103599, -6644852, 7416872, -3555159, 8927626, 17441862, 4966056, -12652974,
+2412698, -4882841, 9858024, 7824894, 2954938, 11333882, 18041010, -6985228, 14632417, -1424855,
+-18552112, -4942434, 995359, -10635413, 4663798, 13739064, 152471, -7034083, 1278827, -2636036,
+18421652, 15361487, 2021856, 7238631, 9731322, 4781373, 12492986, -15475841, -10975789, 5451387,
+3610994, -3342022, -839129, -2523293, -5751498, -5671505, -59665684, 20492900, -12767864, 31759672,
+32293860, -18711026, 15251429, -31954556, -47979616, 1174137, -33742872, 4438312, -4220879, 26109106,
+-19382114, 18627810, 15987479, 26184804, -39866960, 4347044, -24399172, -22367116, 2421825, -28874528,
+-18619756, 26197154, -7647726, 9942312, 30600032, -6078453, 10077067, -25223270, 2901787, -27810986,
+25773562, -23057532, -15301358, -17025250, 28747826, 23024246, -16502338, 31487478, 20863340, -6682969,
+31263604, -1762547, -33080374, -9163313, -3900904, -25800406, 5804112, -54563264, 5469641, -13903883,
+-26179974, -21169894, 24373940, -14595373, 50538880, 37524592, -56516936, -16106, -1485522, 2669322,
+26112864, -44410500, -30953830, 30469572, -25446608, -31831076, -36612984, 2421288, 75145824, 37306084,
+-34999688, -22077206, 3025268, 27300960, 10436234, -36634996, 5411659, -24497420, -14388140, -1362042,
+-4436701, 1343251, 24091008, 5633924, 14267881, 9411884, -28178206, 7481296, 12586402, -4059818,
+-10187662, 1398012, -24061480, 21279416, 7706245, 5742908, -31903018, 5207648, 16364899, 4520990,
+-7588671, -6077916, 14052059, -23363548, -1570347, -17464410, -9659381, 22618908, -24142012, -1140314,
+14258218, -12239046, 11157251, 13484587, 3465502, 1860795, 9933186, 3079492, -12901008, 18486612,
+-14527190, -11521250, -6650220, -19979650, -6320581, -17973364, -17215840, 6936372, 28186260, -31224412,
+15722265, -52467856, -7862475, -20404852, -17782238, 27810450, -35842040, -55927452, 32715302, 49251464,
+11962558, -9517111, -44678396, 3056406, 17539572, 17523466, -7461432, -17907866, 2278480, -4409858,
+-5819144, 5711233, -6555194, -14999636, -29249264, 3723200, -17586818, 4376572, -15762530, -33386928,
+20784958, 15277199, 25548612, 904091, 27628450, 15466714, 4189741, -8943733, -14064407, -22987202,
+-16363825, -9241696, 6570763, 15865609, -10587631, -5178657, -38012072, 35737884, 42378980, 23569170,
+-21518860, 22617298, -29403882, -441308, 6848862, -64404108, 5340255, 6442988, 30535606, -38409892,
+49718540, 19549618, -35465692, -20085952, 15052250, -6129455, -25956098, -31865436, -34314640, -46848428,
+34652868, -14681809, 5547487, -71670120, -28448252, 4539244, 897111, 16594680, -11325829, 3046206,
+12363063, 13018583, -34179348, -7727183, 5688148, 19157164, 13906567, -2807298, -13063680, -5470178,
+-2743947, 17903572, 3129958, -10949482, -1216550, -8471286, -3234647, 16576963, 7633768, -7954280,
+17629230, -17282948, -10117332, -12849468, 17044578, -6559489, 2147484, -7610682, 7517804, -24097988,
+3720516, 10353019, 3958349, -4052839, -10492068, -8917963, -12298639, 12526809, 2765422, -3882114,
+-14103599, 14939507, 927176, 1306744, 2188823, -24512452, -12061879, -15955804, 2180770, -7946763,
+185757, -305480, -5672041, -13698261, -4964446, -48968532, -6461779, 17964238, -22956600, -21367462,
+20340428, 20637318, 4254165, -19288162, -66320200, -9660455, 13062069, 8020852, 28865938, -525597,
+16806744, -4223027, -358093, -8247948, 1300301, 17693118, 2083596, 835371, 17126718, -4440460,
+-4077535, -22327388, -2033130, -3488050, -2481417, 3986267, 13652090, 18741090, -3633006, 134218,
+14622216, -3173981, -28127204, -1800128, -24974162, 3774740, 3404299, -32613298, 23746874, -44986024,
+10093173, 12565464, -19809462, -1245004, 58496916, -16416976, 19724638, -12202002, 10418517, -43676060,
+4681515, 25816512, -739271, 22301618, -5212480, 2472291, -1493575, 28464896, -18279380, -21698712,
+25027848, -23018340, -28726352, -190589, -45835356, 30701500, 25271050, -8977019, 9685151, 4409321,
+-392453, -38765300, -6542309, -2784750, 17029546, 6638946, -16574816, 15669651, -1271847, -19637664,
+-13624173, -12128988, 2462090, 2908767, -2892661, -227096, 12251394, -12068321, -3743601, 8808978,
+-13330505, -6842957, 9867150, -13207561, 647466, 12184822, 499827, -3078418, 4922033, -181462,
+910533, 10698764, -4084514, -2860985, -8252780, 3790309, -5334350, -4467303, 4236449, 6054830,
+-11534135, 2179159, -10808285, 10498511, -12272332, 7036767, -476741, -1708860, 779000, -2166274,
+-1817845, -19864, 7777112, -23987930, -73078328, -34213708, -11205570, 24230594, 54320600, -49236432,
+11104638, -14062260, -49634252, -6721624, 45150844, 12339441, 37249176, -30925376, 9575630, -10531797,
+2485176, 22080964, 3997541, 12121471, -6751152, -63351840, 19178640, 3396782, -26688926, 28000502,
+21489868, -18956376, 19893214, 2624225, -20390358, 6627135, -12470438, 40068824, 5220533, 16392816,
+1110786, -40548788, -32353988, -10740639, -23882702, 26847840, 38522636, 39523364, 31940598, -10652593,
+4764193, -31805844, -4480188, -2950643, -13143674, -16631187, 3091840, 3376381, -43731892, -12639552,
+-16874926, -937377, 20117090, -21425444, -4640712, 7899519, 414464, 22970558, -24782498, -756451,
+-28121836, -14709189, -20691542, 11868605, 7949985, 22938884, -2694555, -2100239, -26480084, -7798050,
+-12378633, -3128347, 11713986, 15781857, 32285806, -20228760, 6183679, -17497160, 6742562, 12199318,
+3706557, -9525164, -3624953, -3194382, -3624416, -1213865, 8793946, 9095130, -2153389, -814970,
+-3900367, -6059125, 4465692, 9046812, 3358128, 1204738, 2756295, -7220914, -8301098, -7890392,
+13771813, -163746, 9642202, 7866770, -909996, -10231686, -10834055, 1880659, 3506841, -8456791,
+-2400350, -7334731, 5953362, -5258651, 2281702, 1792612, 6211597, -2743410, -3054259, 1633698,
+2497524, -4263829, 7110319, -2177549, 19105626, -30830348, -121703264, -64164664, 13172665, 51219632,
+114591872, 87570624, 49325016, 16630650, 25727928, -8135205, -48189532, -93174480, -123993024, -31337156,
+-35940824, 1897839, 60385092, 86178520, 57752816, 77220288, 17756468, 16400333, -9041980, -39003136,
+-44241384, -35714264, -38022272, -46937552, -37701760, -16054588, -2447058, -521839, 30089468, 39140572,
+74691088, 35370668, 11591043, 30744986, 47650516, 15270219, 9059160, -38408280, -52714280, -86009944,
+-39831528, -45074072, -32727650, -19371914, -15324443, 6454799, 10546292, 36277440, 74050072, 59708100,
+65000036, 48262548, 58961848, 44014824, -35582192, -32464048, -82111720, -63447404, -46581604, -104387032,
+-80897320, -49344880, 3835406, 63433444, 60270740, 71427992, 89089968, 76366128, 40976672, 49604724,
+1864016, -19270982, -52425980, -75872744, -76413912, -62860068, -37953016, -8052527, 10757819, 18524730,
+21046950, 35385160, 25367150, 41372884, 25989920, 10437844, 6619082, -1466731, -4181688, -868120,
+-28667296, -19815906, -4160213, -13150653, -34224984, -9456444, -12373801, -12564390, -2500208, 25604984,
+48035452, 40076876, 4064113, 39395588, 27524298, -5022965, -32482838, -51059644, -47750908, -21428128,
+-23732916, -14615237, -8351027, 13702556, 29678224, 41531796, 46878496, 34027416, 13070122, 14641544,
+-9213779, -25589952, -43557948, -38709468, -17411798, -1605244, -12922483, -4015258, 12237972, 15978889,
+16116865, 15695421, 3747896, 6608344, 9700184, -1612223, -9331890, 394600, 2905009, -6543383,
+-7796440, -976031, 2539936, 2194728, -5126044, -2423972, 1670205, 823023, -4494684, -7101192,
+-5733245, 2141578, 367220, -326418, 4235375, 7963406, 5893769, 6070937, 4129611, 3320010,
+-449898, -2192581, -3786014, -5168993, -4513474, -1536525, -3647501, -3114925, -2700998, 2882460,
+3309809, -974421, -1578937, 3125663, 1773285, -330176, -514322, -775778, -2226404, 1753957,
+2387465, 1235340, 2127620, 4174708, 4228396, 3777961, 288300, -1224603, -2450816, -3696893,
+-7072201, -8356933, -7110319, -4737349, -3775276, -171799, 3756486, 6982543, 8635569, 9871445,
+8543227, 6291054, 2726767, -198105, -3752728, -6447820, -7882339, -7201050, -7425462, -5027259,
+-2384244, -386547, 1818382, 4675072, 4961224, 4671851, 4155381, 3485903, 1632088, 64425,
+-1084479, -1148904, -1413044, -1456531, -1502702, -1081258, -809601, -424665, -227096, -66035,
+-11811, 140660, 194884, 243739, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-1551020,
--2209224, -4245575, 2480881, 3969624, 7040525, 1901597, -4946192, -8794482, 1906966, -4108136,
-347355, 2762201, 1071594, 7117835, -5888937, -1448478, -804233, -464930, -5056250, 3114925,
-1314797, 651761, 132070, -2465311, -1902671, -1784559, -581431, 250182, 1185411, -1858110,
-2705830, 6375342, -208843, 2834679, -4523675, -2618856, -5413270, -2604898, 5737003, 279173,
--1178432, 1025960, 6085969, 661962, 3057480, -763967, -2866354, -890669, 3470871, -2982855,
-5450851, 3367791, 6146635, 3045132, 383326, -1876901, -4088809, -2254858, -3555696, -540092,
--2597382, 1031329, 219043, -1386738, 893353, -1190243, 2193118, -542777, -615791, 3118146,
--318364, -214748, 406411, -3003256, 1362578, -2196339, -3561602, -2038499, -1571421, 1553704,
--302258, -238908, -4039417, -661962, 1041530, 801548, -1610613, 159988, -1592359, 718333,
-1122060, 853088, 308701, -269509, -654446, 196495, -1256278, -663572, 264141, 196495,
-542777, 549756, 488016, 121870, 1145683, -12268574, -2776160, 5037997, 885837, 6866579,
-3664144, -5645198, 1493038, -118648, 2251100, -2019172, -9420474, 5443871, 3335579, 6237367,
-7793218, 6711960, 2353642, 94489, -9598715, -986769, 4410395, -4374424, -3796751, -10022306,
--671626, -1674500, -1158567, -2549063, 1189169, -5981816, 2731062, -1046898, 2534031, 747861,
--4022237, 3107409, 2592550, 6955700, -808528, -5567888, -2876018, 3016141, 1213328, -1392106,
-289910, 2221035, 289910, -4068408, -37044, 858993, -432181, 259309, -2567854, -1125281,
--3419868, -703301, 4212826, 1506460, -1438277, 1800128, -546535, -216359, 639950, -4886599,
--448824, -242129, 2734284, 5291937, -1564442, -533650, -3413425, -2643552, 1351841, 6021544,
--5328444, -834297, 1368484, -289373, -1446867, -92879, -1410897, 1960653, 2058363, 1087701,
-3346317, -1591285, -1029182, -343061, 787053, -765578, 139050, 541703, 452582, -404264,
--1431835, 1040993, -1426466, 6778532, 2537789, 2284923, -2285996, 170188, 628676, 641561,
--11665131, -6311455, -538482, -2907693, -3617436, -187368, -3047279, -11868605, 7058779, 1618666,
-3189550, -1255204, 2423972, -3142306, 139050, 419833, 6099928, -2179696, -1298691, -1028108,
--1044751, -983548, -443992, 6616397, -1293859, -105227, -3783866, -217970, -1832877, 2145873,
-1077500, -6423124, 4963909, -6501507, -136365, 5688684, -828392, 205622, 421444, -139050,
--3992709, -2836289, 6526740, 3773666, -8117488, -4338991, 1268626, -4766877, -3466576, 3460670,
--5846524, 1125281, 1398549, 3326989, 6950868, 5331128, 3251827, 2487323, -4760971, -4956393,
--4252018, 1368484, 6045704, 2334315, -1054951, -2715493, 1971390, -2297271, -1014149, 1402844,
--2263448, -3414499, -475131, 2721399, -512175, -2333778, 292058, 13422, 2642479, 1098975,
-2440078, 550293, -1144609, -1165010, -942745, -492311, -328028, 780073, 1526324, 1826972,
-1912871, 8913131, -2177012, -2272575, -2666101, 2516851, -2983392, 4360466, -8446053, -1078574,
-6272800, 3285650, -6351183, 4706211, 7723425, 7289097, 4649839, 894964, -285615, -4760971,
--6140193, 2609730, -586800, 6161668, -479426, 3686156, -3834332, -2550674, -2055679, 613107,
-1966021, -346282, -7499550, 1585380, 2602750, 1890323, 3238405, 1987496, -4068408, -10023917,
--3224984, 1470489, 1937030, 474057, -426812, 1904281, -4110284, -65498, -7467338, 3492882,
--7704635, -2030983, -3265249, -5070746, 3703873, 1637456, 1571958, -4427575, -2151242, -1302449,
--4439386, 420907, -374736, 2374580, -1901597, -3739306, -2852395, -8871792, 2820720, 1028645,
-3813394, 5620502, 7179575, 2801929, -2826089, -4226785, -1993402, 3900367, 3892314, -4405026,
-4806606, 204548, -3122978, 6928319, -1342177, 1562831, 1176821, 2032593, -122407, -1547799,
-450435, 2153389, 774168, -340376, 2333241, -1221381, -955630, -1692217, 800475, 210453,
--864899, 1275068, -1236414, -2229625, -935229, 1690070, -406948, -388695, 608812, 4382478,
-4043712, -784368, 2841121, -8684961, 946503, -4186519, 385473, 1208496, -5479842, 1901597,
-15779173, 1657321, -1464584, -8994735, 12690555, -103616, 5293547, 558883, -329102, -7007776,
-6670084, 1652489, -3782793, 804233, 448287, -2843805, 2661269, 7019051, -2125472, 7468412,
--2294050, 3150359, -179852, 4897874, 4361540, 4876936, -4832, -2778844, 3823058, -2924336,
-3360812, -1057636, 3388729, 3272765, 3153580, -497679, -1046361, 1207423, -2847027, -4112431,
--10363219, 6653441, -6721087, 4578435, 537408, 1880659, -1259499, -12372727, -2719251, -3400540,
--6045167, 731755, 3668439, -7977902, -2554969, 3480534, 600759, 5501853, 9692131, -349503,
--2695629, -2414845, -10190347, 3025268, 1904281, -2348810, 476205, 3940633, 4072166, 1111860,
-997506, 2829310, 280784, -530965, 4292283, 2477123, -2443837, 4363687, 3198140, 4282083,
-1287953, -827855, 261456, -368830, -345745, -1697586, 519691, -1064078, 962073, -1322850,
-1985886, 647466, 146566, 1603097, 100932, -595927, 427886, -448287, -193810, -663572,
-1979980, 1158031, 369367, 1362578, -502511, 2218351, 257161, 654446, -275952, 549756,
--376883, -1408749, 541166, -4469451, -5405217, -499827, 2949032, -1711545, -2596308, -3929895,
-1180579, 7228430, 3253438, 1162326, -16343961, -7483444, -2257542, 3378529, -1930588, 5567888,
-18703508, 5841156, -6836514, 1097901, -8092792, -2597918, 5709622, -6429029, -1619203, 8366597,
-2032593, -2051921, 1205812, 4748087, -2814277, 2321430, 2496987, 2484102, -4617090, 2157147,
--2152316, -2610803, -6832219, -2626909, -3987877, -7589207, 3352759, 305480, -505196, 7746511,
-5638755, 2019172, 6197101, 82678, -7824357, 6643778, -738198, -5319317, -4224101, -7743826,
-361314, 9432285, 646929, -4081830, 3992709, -6937446, -4371203, 3668976, -5652177, -7473243,
--3951370, -2318209, 4242891, -6594923, -2055142, -3039226, 8548059, 1290638, -2970507, 4253628,
--2572686, -3058554, 477278, 6833293, -1282048, 511638, 3738232, 2209761, -8657580, -264677,
-5260261, 2574296, 3058017, -636729, -1695438, 3947075, -2332704, 738734, -1917703, 1176821,
-1433982, 2077154, -4407174, 99321, 428423, 1177895, 237834, 122943, 2018635, -307627,
--425202, -1855426, 1471026, 2113661, 5730560, 4150012, -10581189, 10111964, -3759170, 966905,
--4605816, 8666170, -1188632, -5775121, -18924162, -2491081, 9874130, 2475512, -14746770, 6777459,
-23622, -2987687, -4706748, -3801583, -1427003, -8752070, -1450625, 7147900, 9287330, 11054172,
-6718403, 10084046, -3258807, 7952132, 3843996, -15571941, -337155, 4105452, 5575942, 2746632,
--5353140, 348966, -1094143, 5552856, -9329743, -3322694, 6986301, -2254321, 3940633, 2097018,
--6206228, -6881612, -3548180, -10333154, -2926483, -3143916, 4287451, 1588601, -5976447, -1336272,
--12793097, -3188476, 5259725, -3703873, -12642236, -147103, 7219303, -15326591, 4481799, 2599529,
-4908611, -7245610, -3365107, -6884296, 558883, -2039036, -7825431, -2024003, -1298154, 4760435,
-2683818, 11532524, 750009, 161598, 1852205, -832150, -5804649, 7304129, 2551211, -2952790,
-6383932, 1192390, -3147137, 1086627, -182536, 3908420, 903554, 796180, 2426657, -2028298,
-102005, -2181307, 8590, -1731409, 1784022, -688269, 779537, 2204392, 320512, -1347009,
-2028835, 534723, 2157684, 608812, -612033, 812823, 209917, 2910914, -11826729, 2573222,
-9378598, 12101607, 9004399, 9200357, 3519726, -6466610, 6425271, 11181410, -16678432, 8288750,
-8281234, -17857400, -4728222, 4328254, 19149112, -1545115, -1278827, -4622996, -5439039, 23715198,
-11723113, 3258807, 2913062, 12278775, -284542, -1920924, -4667556, 1796907, -10748693, -9694278,
--2264522, 2942590, 7088844, 3200288, 1560684, -3686156, 628676, -7891466, 3201898, -11674258,
-11330661, -1319629, -5741298, -6730214, -7694434, -11776800, 1963337, -11400991, -3884798, 7751879,
--1876901, -3933653, -3805341, -1861332, -9780714, -6792491, -4445828, -4182761, -2286533, 3528853,
-1924145, 549219, 448287, -8625368, 14706505, 8451959, 134755, -1128503, 19363860, -2384244,
--3431679, -4811437, -9924596, -2738042, 6422587, 6209986, -1037772, 7565585, -15194521, 4432943,
--5844914, 1410897, 5738077, -2063732, -215822, 910533, 412317, 1831267, -2462090, 2781528,
-3535832, -3437585, 1315871, 1873143, 2273648, 6144488, -4736275, -457951, 562641, -148713,
-1352915, 652835, 1415192, 1914482, -1784559, 1219234, -625455, 118112, -3411815, -747324,
--882079, 2786360, -2900714, 21989696, 7572564, 4727686, 10721312, -11898133, -7123740, 6956774,
-7391102, 16348256, 2444373, 4629975, -10849087, -527744, 5491653, -14244796, -4536559, 5866389,
--4705674, 297427, 4014721, 10730976, -3515968, 4265440, 2255932, 2452426, 9143985, 8011188,
-9738838, -7488276, -5009543, 10582263, -13202729, -4294431, -4330401, -775242, -3524558, -8371428,
-8326868, -181999, -9091372, 547071, -3544959, -9428527, -11825656, -6499896, -7066295, 14161581,
--4416300, -3463354, -8266739, -578747, -4180614, 2284923, 16624745, -2993592, -5363878, 2931315,
--927713, 9669045, -11038603, 18884972, 3818763, -17955648, -13079249, 4873714, -12106439, 308701,
--12966506, 169651, 2837363, -1556389, 14117558, 17738214, -8330089, 2247342, -3404835, -12934831,
--4821101, -6994891, -8460012, -1848447, 6457484, -4318053, -9980430, 6751152, 484794, -5324149,
--4542465, 2299955, 3770981, -1506997, -1003949, -5005785, 324270, -4613332, -902480, -2253247,
-3341485, 3835406, 936303, -4578435, 544387, 417149, 3073586, 47782, -1119913, 368830,
--5848672, -532039, -3280818, -2242510, 498216, 1444720, -3055869, 2522757, -1762547, -1569274,
-4039417, -1480153, -3863860, -19381576, 7057168, 39479876, -7059316, -652298, -17563196, -7504382,
-11592654, -1912871, 22565222, 13470091, 12440910, -112206, 9558450, -18823768, 16758962, 8580808,
-619012, 2013266, -10980084, 4489315, -342524, 17069810, 9454834, 11305428, -4367445, 916439,
-2823941, -11810086, -9542344, -4472135, 5121212, 19939922, -5765994, -7011534, -7039452, -4049081,
-2440615, -13023415, -3898220, -1059783, -7035157, -13775571, -3043521, -17418776, -6432788, 9909563,
--12140262, -5442798, -2533494, 749472, -19563040, -11904576, -2703145, -2240362, -3875134, 12014634,
-5204964, 599685, 7204808, 12381854, -7923678, -3423626, -10743861, 4603131, -8485245, 6874095,
-7968238, 9565429, 17602924, 4828080, -13542032, -2386928, 29615410, 9492951, 16579648, 7865696,
-4922570, -1360431, 1874216, -7257958, -9168681, 3854733, 2809446, -9156870, 2221035, 6039798,
-5494874, -8803072, 6566468, 2078764, 4688494, 5411659, -198105, 2502355, 4527970, 1714229,
-5343476, -770410, 1031329, -1949915, -3875671, 583579, 4645544, 496606, -2249489, 7523709,
-4786741, 3994320, 15569, -1159641, -1427540, -426812, 108985, -1488206, 2564632, 1894081,
-1986959, 2124398, 1037235, -4359392, 20432770, 22394496, -22674742, 5512054, 16582869, 9996536,
--6342593, -12089259, -10448045, 23333484, 1894081, 8750996, 12240120, -7028714, 3441343, 5084168,
--14323716, -15254650, 12343736, 4149475, -22149146, -5163625, 28765544, 13741748, -65498, -16474421,
-5379447, 4256850, 17494476, 5721434, -8534637, 11388106, 2026688, -4887136, -1661616, -3532611,
--13647259, -6524592, 2097555, 2283312, -16287053, -17663054, -10399726, -5123359, -19339164, 11423539,
--1195075, -13824426, 2638184, 246961, -5943698, -1746441, 4176319, -193274, 4398047, 4991289,
-7824894, -7737384, -9050033, 11909944, 24358370, 10925323, 6678674, 17652852, -3291556, 9576703,
-23684598, 14364518, 2270427, 2544768, -7347079, -14569603, 14115947, -13885092, 6246493, -5623186,
-4357245, -18149994, 8714489, -341450, -5839008, -3512210, 10323491, -9840844, -4828080, -2633889,
-1633698, -353798, 3112778, -3979824, -406948, -7070590, -1676111, -533113, 1366873, -2211908,
-2498597, -2738042, 2183454, -2467996, 7970923, 2323041, -1914482, -3797288, 3091840, 186831,
-2850248, 2326262, -1755031, 2078227, 3027952, -2091112, 897648, 3424163, -937914, 1110786,
-4086662, 3981435, 7350300, -4584878, -21204254, 5995238, -10207527, -4686346, -7884486, -1298154,
-18207440, 18042620, -36399848, 11308112, 11586211, -11278047, -18508088, -24123220, 4284767, -7059853,
-4494147, -8393977, -6614787, -3883187, 22566296, 5750961, -1946694, -347355, -3576634, -6698539,
-5717139, 3792993, -93416, 9088151, 1977296, -1865090, 3231963, 8254391, 23279260, 2385318,
-2871723, -11453604, -4917738, -5397700, -5786395, -657667, -1936493, 7756174, 11133092, 576599,
-12859669, -2938831, -2178085, -2586107, -1438277, -22506702, 25433722, 707596, 1794223, -1819456,
--6623377, 6805913, -1755568, 10383083, 572304, -9820980, 2659122, 11007464, -7805566, 10228465,
-2455648, -15496242, -2675765, -3265786, -28316182, -9598715, 7212324, 7374996, -11586211, -6580964,
-6728603, 1009317, 18884434, -14996952, 6834904, 8516383, -1254667, 7459285, 6824703, 8446590,
-3188476, 3804804, 3347927, 2855080, -1297617, -1460289, -4924717, 2032593, 7024956, 1344862,
--5230197, -1929514, -2976412, 1765232, -2320893, -1830730, -3505230, 4670240, 2542084, 3216394,
-278099, -8137890, 3230352, -8270497, 580357, 1438814, 2888903, -3867618, -1982664, -1136556,
-2640331, 5118528, 2193655, 2221572, 628139, 2327872, -5692979, 18739480, 5530308, 5904507,
--13409962, 10324028, -5258651, 9846213, -7410966, 12643847, -11165304, -9066676, 17302276, 2316598,
-4554276, -10019622, -22647900, -2005213, 6841346, 1951526, 9963787, -7974144, 1437203, 63888,
--16869020, -12108587, 5811628, -19071802, -12439836, 6311455, 251792, -19950124, -2707440, -9854802,
-12996034, 7865159, 2484639, -4520990, -12435541, -26617522, 9617506, -11829951, 14832133, -4254702,
--4731444, -2312840, -6940131, 4247723, 4007205, -21242908, -9284646, 21250424, 18601504, -18868866,
-24904904, 1451162, 18381924, -4193499, -4209068, -2123861, -7027640, 9641128, -6924024, -19801410,
--10449119, 23913842, -5157182, -4595078, -1169842, 7532836, 4866198, 12173011, -27117350, 8230768,
-18721226, 14817637, -5826123, -1342714, -5733782, -12158516, 1538672, 11523934, 17736604, -10613938,
--10805601, -12196097, -1123134, -1828046, 1287953, -5746130, 3211025, 3297998, -1967632, -667867,
--2529199, -5208185, 5406290, 321049, 924492, -8008504, -6798933, -1631551, -8854075, -3278671,
--4383014, 1220845, -3070902, 231928, 7025493, -2578054, 2994666, 128849, -6338298, 1490354,
--3143916, -610422, 2883534, 6293738, 963683, 2776160, 5769752, 5867999, 7573638, -2131378,
--1929514, -1114544, 7761006, -941672, -12277164, -450972, -9428527, 12812961, 9947681, -9658308,
--16456704, -13810467, -8101382, -16007343, -875636, 7579544, 17592722, -3042448, -820876, -29420526,
-17640504, 21940304, -3459059, -11936251, -12102144, -7519414, 33051920, -20122996, -47782, -2384781,
-8939438, -1492501, 38075960, 913754, -20683488, -5467494, -19654308, 25670482, 22363358, -18045842,
-21039434, 5243618, 16943110, 6305549, -31735514, 9940702, 17024714, -22026202, -6075231, -24990804,
--12446278, 838592, -22968948, -19652160, -529892, -15928960, -192737, 5560372, -5661304, -15802795,
-12981002, 11707007, -25934624, -19881940, 10887742, 4544076, 7010461, 13128641, 17234630, -6367289,
--9302362, -573915, -6017249, -369367, -1894618, -8753680, 3493956, -36092220, 12319577, 17489644,
--18558016, -15367930, 11665131, -11780022, -10595684, -5119601, 6545530, 869194, 22411140, 122943,
-13111461, -1335198, -9070434, 4802847, 6791417, 6949257, -5835787, 98784, 769873, -877247,
--3728569, -8982387, 5942624, 9339943, -4763119, -15769509, 4054986, 1290101, 16703128, -1662152,
--6453189, 5077188, 1911797, 8253854, 51003, -5149666, 184684, 6715182, 5122822, 1617055,
--1726040, 1204738, -3033321, -2687039, -7753490, 3836480, 3807489, -5433134, 2650532, 2270427,
-1500554, -996969, -2564632, 588411, -7430831, -5622649, 158914, 7973607, 19931332, 37561636,
-59353764, 1653562, -24172612, -31091806, -7395934, 1087701, -7523172, 28744606, 21522618, 14840723,
-24967182, 18128520, 14630806, 850404, 11760694, -15610596, 21607444, 25007448, 1564442, 26023206,
--10919417, 2002529, 5927592, -24555938, -16553878, -5931350, -14661408, -17253958, -2675765, 26752278,
--503048, -5328981, 3213173, 5609764, -3781719, -36601176, -5131949, 9403294, -5515812, -11306501,
-4366371, 13970992, 24903830, 6045704, 12631499, 17591650, 21698712, -30274150, -21038360, 11732777,
--8891119, 38230576, -4106526, 32855962, -26715234, 15612743, 26762478, 903017, 4260071, 16011101,
--29186988, -13626857, 657667, 16497506, 372052, 19007914, 7660611, 7080791, 19391778, 6930467,
--2670933, -8308078, -23105850, -5428302, 1256278, 6011881, 386010, 410706, 439697, -12644921,
-6459631, 4292820, 10808822, -3833795, 8116415, 13290239, 7885560, 3300146, -104153, -1683090,
-2764348, -4712116, 2685428, -4506495, 83215, 2674154, 2676838, -3993246, 5961952, 5743445,
-7267622, 741419, 541166, 2982318, -2659659, 4908611, -3752728, 4959614, 11518565, -1476932,
--2245731, 813359, 10018011, -6248104, 2342905, -1271310, -1510218, -1976759, 1362578, 2702608,
-4507568, 3368328, 3439195, 9243306, -6562173, 10981695, -5387500, -12763032, 3711926, 42625404,
-14179298, 14972256, 31066036, -2276333, 6567542, 13543642, 19942606, -22196928, -17850420, -7551090,
--19581830, -3397856, -26301306, 13538274, 20915954, 15353971, 20766704, -13981192, -7845295, 16142098,
-12436615, -8734353, 21047488, 12753369, -4927401, -25759604, 14277008, 15785615, -13214541, -1887101,
-7454453, 3794067, -20914880, 24075976, 6323803, 25843356, 13970992, 10177999, -14094472, 12104828,
--7534447, 39359080, -31040802, 3480534, 11754252, -5782637, -20079508, 12848395, 12404402, -2355253,
-12200391, -11871826, 31915902, -14737107, 8330626, 7073275, -20447266, -8710731, -28193240, 12053289,
-8101382, -20770462, 19375134, 16795470, -14579803, 12081743, -1686312, 32614372, 10484015, -16128139,
--12051141, -11507828, 10093710, -6649683, 8581882, -4021700, 1777043, 11011222, 6727530, 5560909,
--10845329, 28065464, 2942590, -10704132, -16038482, 13627931, 6558415, 12872017, -7442642, 3861713,
-9951439, 21209622, 5193689, -3346317, 17380122, -4612795, -5263483, -2361158, 1540283, 4864051,
--10674604, -9077413, 3803194, -7829726, -5042292, 1119913, -4022237, -981937, -1559610, -7679402,
-5233955, 3256659, -15313706, 3751117, -11507291, -6907918, -3819837, 5657546, 2725157, 10512469,
-4315369, -196495, 2705830, 3938485, 4185983, 517007, 993748, 2505577, 8582955, -2763812,
--1557463, -38234872, 16403017, -32672890, 32918240, 39659192, -2594697, 6596533, -33058900, -702227,
--7750269, 2931315, 18468896, 19010062, -6226629, 9679246, 15267535, 2126546, 6126234, 4182761,
-6038724, -4482335, 22473416, -3557307, 4725538, -13154411, 25350508, 5261872, -2913599, -1177895,
-22767622, 8589398, 10493679, 25400974, -6214281, -16189342, 31088048, -33844344, -14968498, -6102075,
-6967511, 21938156, 4698694, -9392020, -9846213, -16461536, -796180, -3204046, 5998459, 35372812,
-34161096, 21764210, 30779884, -3063386, 46573016, -15915001, 12680891, -11349988, 694174, 14617921,
--7655779, 1583232, -14524506, -18349174, -96637, -11570642, 9206799, -15662135, 22817550, -17566954,
--28535226, -11729019, -7627325, -2623688, 33441690, -20509006, -5126581, -2948495, -21667036, -5413807,
-11956652, 26572426, -2769717, -1187022, 601295, -8745627, -18697066, 732292, -1233729, -2782065,
--2340757, 12348, -11000485, 8515846, -9488120, 10525354, -4626754, -8011188, -9298604, 2222646,
-7877507, -5821292, -8044474, -2603287, 6437619, 7745437, -6033892, 3690988, 4121021, 2835215,
-4100083, -4271882, -4471598, 2270427, -64961, 4964446, -6481106, 4392141, 7141994, -176631,
--3070365, -3782256, 6168110, -13471165, -7017440, 13700946, -8749385, -733903, -2748242, 2847563,
--9000104, 6330782, -3299609, 12369506, 10722923, 167504, -13350369, 58546308, 81283864, 24924232,
-63361504, -13878650, -44084080, -30889404, -21603148, 10691247, 11642583, -14693620, -23684060, 20514374,
-27575838, 16120623, 27511950, 21232708, 5229660, 8450348, 4146254, -1373853, -18122078, 7998303,
--21472688, 15131170, 125091, -20076824, 23271744, 14095009, 11125039, 40230420, 24704116, -11519102,
--7779797, -14462765, -17176112, -20997558, -8309151, 848256, -16638166, -5138929, 34727496, 52724480,
-38807176, 5339718, 26480620, 28291486, 43193412, 19819664, -22915262, -37562172, -23464480, -23952496,
-14181982, 11966853, -51412368, -35205848, -9089225, 21720724, 46760920, -34976604, -1396401, -30346628,
--3958349, 38296076, -21052320, 14473503, -30534534, -4909148, -9126806, 25859462, -28618440, -16229071,
-464393, 11469173, -23230942, 53437448, -12562779, -743029, 30337502, -13231184, 22810034, -7170985,
--18832894, -14536854, 8868034, 983548, 7563975, 4845797, -16807818, 582505, -7090454, 20557324,
-11971684, 3735548, 11176579, 12865575, 721555, -24696, -4030827, -12599287, 26066156, -7909183,
-5480379, 362388, -15075335, 766115, 1677722, -4603668, -9897752, -1988570, -5797132, 1615445,
-3910031, -4244502, 919123, 17945448, 12713640, -2090575, -2809982, 17027934, -6996502, -1919850,
--14156212, -20248624, -7619809, -5183489, -2153926, -5493263, -22952306, -44629544, 5543192, 24983824,
--20621212, 38662220, -15307800, 15425912, -5060545, -44480828, -22752052, -2069637, -26147760, -60079076,
--16802986, 21801254, 33458332, -16203301, -25689810, -53601728, -15891379, 15940771, -10604811, -15470472,
--26610006, 6425271, -5956046, -4431870, -4939750, 10940355, 21640730, -16691317, 16747151, 14305462,
--16884054, -48914308, 4083440, 4060892, 12731357, 6004901, 32145146, 3332358, -48633524, 417686,
--53565760, -151398, 18712098, 22558778, -4073240, 3072512, 25020868, -12943958, -9411347, -16707423,
-16229071, 11841225, -7635915, 19335406, -5909875, 8195335, 9050033, 31585190, 4291746, -11090142,
--33620468, -11526618, 17588428, 15270219, 26866094, 39090108, 67614600, 33693480, 16339666, -17510044,
--67699424, -18512382, -9690520, 51909512, -8613557, 3292629, -125628, -16296717, 2323041, 15258408,
-7353521, -304943, 839129, 332323, 190052, 25189446, -8981313, -7442642, -8246337, 17484274,
-6774237, 8865886, -6762426, -21398600, 7166690, 9106941, -9663140, -1404454, 5556614, -1198833,
-1766842, -3775276, -30728880, -10082973, -2368675, 14174466, 22291954, 2664490, -18336826, -17974976,
-8350490, 3016678, -1575179, -3030636, 1141924, -1891933, -780073, 16494822, -17983564, 2320893,
--15430207, 16496969, -8908299, 369904, -22265648, -3500935, 15278272, -4699768, 8325257, -12875775,
-6524592, -6766721, 10585484, -10336376, 3622268, -43694312, -13301514, 30392800, -14965814, -12551505,
--3236795, -9801115, -35033512, -38947836, -56984016, -17984638, 108985, -4405026, 37298032, 10270341,
-48715668, 30066382, 15082315, -6795712, -18009872, -3345780, 68314136, 4254702, 19681688, 11113228,
--8591008, 34056944, -14219563, 27494234, -30023968, -2964601, -21644488, 25879326, -36455684, -7652558,
-11106785, 11496017, 11663521, -31814970, 22625888, -36415952, 7368554, -17825188, -12265890, 36298916,
-2103997, 2418067, 12439836, -13729937, -857383, 9517111, -44278964, 1234266, 10148471, -6391985,
-28436442, -12706124, -5633387, 47974784, -18219252, -39830452, 35970, -15012521, 3156801, -2968359,
--2172717, -31955094, 17033304, -5158256, -43739948, 26334592, -54157392, 10557030, -12487081, -21351356,
--34275988, -4347044, 9147207, 15784542, 1290101, 12794708, 15657840, -18597746, 32824824, -7556458,
-8681740, -373125, 15592879, -649077, -1914482, -5285494, 9153649, -19615652, -2693481, 6514392,
-4100083, -7580081, -294205, -8492224, -11576547, 5945309, 4483409, 8745627, 5360119, -2408940,
-6491843, 19669340, -9903121, -10111427, 3195456, -873489, 3603478, 14613626, -2320356, 8004209,
-7148436, 7594576, -10130754, -11739219, -3202972, -861678, -12684649, -615791, -2757369, 5337034,
--13855028, 4152160, -6316287, -18211736, -66019552, -67869072, -57827976, -28811714, 121719912, 38592964,
--14414984, -15098421, -59186796, -126135136, -13606456, 34724812, 43202004, 18913426, -18838264, -13971529,
--36706400, -40537512, 31615254, -29038810, 76972792, 57817240, -88354456, 29372744, 12336757, -18079128,
-7558069, 64468532, 9785009, 44642428, 88111792, -18503256, -71200896, 3904125, -11621645, -66418984,
--17630840, 32865090, -2321967, 40329208, 64939368, 6256157, -55132348, -108657304, -93103616, -83282104,
--8181913, 81680080, 23767812, 22153978, 12833362, -21584358, -108793136, -67981280, -34421480, -12866648,
-7345468, 25201794, 24659018, 31329638, 32268090, 39784820, -46500536, -16515223, -37956236, -2822331,
--41571524, 26718454, 26898306, 54240068, 60403884, 28984050, 1585380, -15480136, -10340671, -73189464,
--57916024, 51911124, 81225344, 55280524, 65054796, -15043660, -28013924, -57836568, -32435594, 17637820,
-884226, 4405563, 18850612, 6493454, 5335960, -13707388, -17958332, -8858907, -13367549, 931471,
-14988362, 4436701, 6304475, -2834679, 9091909, -15002858, 11142219, -4197794, -13493177, -13643500,
--3416110, -22959822, -6352794, -13879187, 15664283, 17131550, 8950175, 6880001, -14359149, -30822832,
--30037390, 8628052, -2017561, 14460618, 13261785, 6999723, -21617108, -11052561, -20527796, -32662152,
-10863046, 20321638, 8810052, 1084479, 23236846, -8564702, -121478856, -136009808, -92463128, -95071784,
--25318832, 106888848, 71987944, 115320944, 128342216, 194982928, 129461592, 134080288, 86467352, -6446209,
--96225520, -166293088, -196590320, -170504832, -134602672, -97228936, -23539106, -4771172, -14062797, 5133023,
-42340860, 69911328, 96726960, 84296784, 114632144, 110943304, 143096496, 131110320, 36754184, 88077968,
--19095962, 24250996, 17674864, 5193153, -12201465, -127351152, -153203632, -195563280, -229735120, -208578640,
--116133768, -102908488, -84935664, -106050792, -123098056, -26108032, 30003030, 77491408, 113074144, 164089232,
-195616976, 251539056, 331466240, 322256224, 244416928, 198680352, 164984192, 87617872, 138521824, -55948392,
--113233592, -270337600, -310058528, -384979936, -370304576, -338228128, -320975776, -309581248, -191002560, -117922088,
--64536180, 173354544, 176082928, 269805024, 345939744, 300434560, 270885728, 274561696, 215232080, 164620720,
-90018216, 12222403, -1600412, -50475528, -62078920, -89314920, -116449984, -159233760, -172790288, -156720672,
--181334064, -139595568, -128784056, -120947352, -106844824, -54617488, -11215233, 57024816, 116462872, 109955992,
-170410336, 189064992, 207725552, 245982448, 198327632, 116371600, 57514444, -34862248, -90875064, -90157272,
--175452640, -161788736, -222478768, -176447456, -184501056, -117841016, -124088584, -71914392, -9755481, 62812288,
-93288304, 165746544, 191935648, 187154816, 180894896, 177157200, 135281264, 48853104, -31757526, -44409424,
--59139552, -64231236, -74052752, -86395952, -81425600, -59232968, -65551940, -58145804, -51692080, -36058396,
--17180942, -10616622, -9047885, 3011309, 10104984, 7806103, 9222369, 26364656, 32622960, 35412004,
-31867584, 24916716, 25358560, 39643084, 27535036, 23075786, 21747030, 20582020, 8086350, -1201517,
--11122892, -7786239, -10921028, -13195750, -19601156, -15087146, -13738527, -15794205, -21553220, -15860240,
--14785425, -16709033, -17986786, -9490267, -7452842, -3631395, -2892661, 1125281, 7455527, 13902272,
-11474542, 10853919, 10727755, 13270912, 10580115, 7481833, 4056597, 6192269, 4230006, 3400540,
-1859721, 1094143, -2631741, -915365, 2554432, 3977677, 1229434, 790811, -453656, 1171989,
--922881, -4952098, -7539278, -6331856, -7327751, -7242389, -7329362, -5734855, -5889474, -4484483,
--2426120, 54761, 214748, 1267552, 653909, 1577864, 1887638, 2950106, 3305514, 4301410,
-4082903, 4379793, 3459596, 3042984, 1957968, 1447941, 607738, 249645, -272730, -357019,
--622233, -659278, -707596, -646393, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-2209224, -4245575, 2480881, 3969624, 7040525, 1901597, -4946192, -8794482, 1906966, -4108136,
+347355, 2762201, 1071594, 7117835, -5888937, -1448478, -804233, -464930, -5056250, 3114925,
+1314797, 651761, 132070, -2465311, -1902671, -1784559, -581431, 250182, 1185411, -1858110,
+2705830, 6375342, -208843, 2834679, -4523675, -2618856, -5413270, -2604898, 5737003, 279173,
+-1178432, 1025960, 6085969, 661962, 3057480, -763967, -2866354, -890669, 3470871, -2982855,
+5450851, 3367791, 6146635, 3045132, 383326, -1876901, -4088809, -2254858, -3555696, -540092,
+-2597382, 1031329, 219043, -1386738, 893353, -1190243, 2193118, -542777, -615791, 3118146,
+-318364, -214748, 406411, -3003256, 1362578, -2196339, -3561602, -2038499, -1571421, 1553704,
+-302258, -238908, -4039417, -661962, 1041530, 801548, -1610613, 159988, -1592359, 718333,
+1122060, 853088, 308701, -269509, -654446, 196495, -1256278, -663572, 264141, 196495,
+542777, 549756, 488016, 121870, 1145683, -12268574, -2776160, 5037997, 885837, 6866579,
+3664144, -5645198, 1493038, -118648, 2251100, -2019172, -9420474, 5443871, 3335579, 6237367,
+7793218, 6711960, 2353642, 94489, -9598715, -986769, 4410395, -4374424, -3796751, -10022306,
+-671626, -1674500, -1158567, -2549063, 1189169, -5981816, 2731062, -1046898, 2534031, 747861,
+-4022237, 3107409, 2592550, 6955700, -808528, -5567888, -2876018, 3016141, 1213328, -1392106,
+289910, 2221035, 289910, -4068408, -37044, 858993, -432181, 259309, -2567854, -1125281,
+-3419868, -703301, 4212826, 1506460, -1438277, 1800128, -546535, -216359, 639950, -4886599,
+-448824, -242129, 2734284, 5291937, -1564442, -533650, -3413425, -2643552, 1351841, 6021544,
+-5328444, -834297, 1368484, -289373, -1446867, -92879, -1410897, 1960653, 2058363, 1087701,
+3346317, -1591285, -1029182, -343061, 787053, -765578, 139050, 541703, 452582, -404264,
+-1431835, 1040993, -1426466, 6778532, 2537789, 2284923, -2285996, 170188, 628676, 641561,
+-11665131, -6311455, -538482, -2907693, -3617436, -187368, -3047279, -11868605, 7058779, 1618666,
+3189550, -1255204, 2423972, -3142306, 139050, 419833, 6099928, -2179696, -1298691, -1028108,
+-1044751, -983548, -443992, 6616397, -1293859, -105227, -3783866, -217970, -1832877, 2145873,
+1077500, -6423124, 4963909, -6501507, -136365, 5688684, -828392, 205622, 421444, -139050,
+-3992709, -2836289, 6526740, 3773666, -8117488, -4338991, 1268626, -4766877, -3466576, 3460670,
+-5846524, 1125281, 1398549, 3326989, 6950868, 5331128, 3251827, 2487323, -4760971, -4956393,
+-4252018, 1368484, 6045704, 2334315, -1054951, -2715493, 1971390, -2297271, -1014149, 1402844,
+-2263448, -3414499, -475131, 2721399, -512175, -2333778, 292058, 13422, 2642479, 1098975,
+2440078, 550293, -1144609, -1165010, -942745, -492311, -328028, 780073, 1526324, 1826972,
+1912871, 8913131, -2177012, -2272575, -2666101, 2516851, -2983392, 4360466, -8446053, -1078574,
+6272800, 3285650, -6351183, 4706211, 7723425, 7289097, 4649839, 894964, -285615, -4760971,
+-6140193, 2609730, -586800, 6161668, -479426, 3686156, -3834332, -2550674, -2055679, 613107,
+1966021, -346282, -7499550, 1585380, 2602750, 1890323, 3238405, 1987496, -4068408, -10023917,
+-3224984, 1470489, 1937030, 474057, -426812, 1904281, -4110284, -65498, -7467338, 3492882,
+-7704635, -2030983, -3265249, -5070746, 3703873, 1637456, 1571958, -4427575, -2151242, -1302449,
+-4439386, 420907, -374736, 2374580, -1901597, -3739306, -2852395, -8871792, 2820720, 1028645,
+3813394, 5620502, 7179575, 2801929, -2826089, -4226785, -1993402, 3900367, 3892314, -4405026,
+4806606, 204548, -3122978, 6928319, -1342177, 1562831, 1176821, 2032593, -122407, -1547799,
+450435, 2153389, 774168, -340376, 2333241, -1221381, -955630, -1692217, 800475, 210453,
+-864899, 1275068, -1236414, -2229625, -935229, 1690070, -406948, -388695, 608812, 4382478,
+4043712, -784368, 2841121, -8684961, 946503, -4186519, 385473, 1208496, -5479842, 1901597,
+15779173, 1657321, -1464584, -8994735, 12690555, -103616, 5293547, 558883, -329102, -7007776,
+6670084, 1652489, -3782793, 804233, 448287, -2843805, 2661269, 7019051, -2125472, 7468412,
+-2294050, 3150359, -179852, 4897874, 4361540, 4876936, -4832, -2778844, 3823058, -2924336,
+3360812, -1057636, 3388729, 3272765, 3153580, -497679, -1046361, 1207423, -2847027, -4112431,
+-10363219, 6653441, -6721087, 4578435, 537408, 1880659, -1259499, -12372727, -2719251, -3400540,
+-6045167, 731755, 3668439, -7977902, -2554969, 3480534, 600759, 5501853, 9692131, -349503,
+-2695629, -2414845, -10190347, 3025268, 1904281, -2348810, 476205, 3940633, 4072166, 1111860,
+997506, 2829310, 280784, -530965, 4292283, 2477123, -2443837, 4363687, 3198140, 4282083,
+1287953, -827855, 261456, -368830, -345745, -1697586, 519691, -1064078, 962073, -1322850,
+1985886, 647466, 146566, 1603097, 100932, -595927, 427886, -448287, -193810, -663572,
+1979980, 1158031, 369367, 1362578, -502511, 2218351, 257161, 654446, -275952, 549756,
+-376883, -1408749, 541166, -4469451, -5405217, -499827, 2949032, -1711545, -2596308, -3929895,
+1180579, 7228430, 3253438, 1162326, -16343961, -7483444, -2257542, 3378529, -1930588, 5567888,
+18703508, 5841156, -6836514, 1097901, -8092792, -2597918, 5709622, -6429029, -1619203, 8366597,
+2032593, -2051921, 1205812, 4748087, -2814277, 2321430, 2496987, 2484102, -4617090, 2157147,
+-2152316, -2610803, -6832219, -2626909, -3987877, -7589207, 3352759, 305480, -505196, 7746511,
+5638755, 2019172, 6197101, 82678, -7824357, 6643778, -738198, -5319317, -4224101, -7743826,
+361314, 9432285, 646929, -4081830, 3992709, -6937446, -4371203, 3668976, -5652177, -7473243,
+-3951370, -2318209, 4242891, -6594923, -2055142, -3039226, 8548059, 1290638, -2970507, 4253628,
+-2572686, -3058554, 477278, 6833293, -1282048, 511638, 3738232, 2209761, -8657580, -264677,
+5260261, 2574296, 3058017, -636729, -1695438, 3947075, -2332704, 738734, -1917703, 1176821,
+1433982, 2077154, -4407174, 99321, 428423, 1177895, 237834, 122943, 2018635, -307627,
+-425202, -1855426, 1471026, 2113661, 5730560, 4150012, -10581189, 10111964, -3759170, 966905,
+-4605816, 8666170, -1188632, -5775121, -18924162, -2491081, 9874130, 2475512, -14746770, 6777459,
+23622, -2987687, -4706748, -3801583, -1427003, -8752070, -1450625, 7147900, 9287330, 11054172,
+6718403, 10084046, -3258807, 7952132, 3843996, -15571941, -337155, 4105452, 5575942, 2746632,
+-5353140, 348966, -1094143, 5552856, -9329743, -3322694, 6986301, -2254321, 3940633, 2097018,
+-6206228, -6881612, -3548180, -10333154, -2926483, -3143916, 4287451, 1588601, -5976447, -1336272,
+-12793097, -3188476, 5259725, -3703873, -12642236, -147103, 7219303, -15326591, 4481799, 2599529,
+4908611, -7245610, -3365107, -6884296, 558883, -2039036, -7825431, -2024003, -1298154, 4760435,
+2683818, 11532524, 750009, 161598, 1852205, -832150, -5804649, 7304129, 2551211, -2952790,
+6383932, 1192390, -3147137, 1086627, -182536, 3908420, 903554, 796180, 2426657, -2028298,
+102005, -2181307, 8590, -1731409, 1784022, -688269, 779537, 2204392, 320512, -1347009,
+2028835, 534723, 2157684, 608812, -612033, 812823, 209917, 2910914, -11826729, 2573222,
+9378598, 12101607, 9004399, 9200357, 3519726, -6466610, 6425271, 11181410, -16678432, 8288750,
+8281234, -17857400, -4728222, 4328254, 19149112, -1545115, -1278827, -4622996, -5439039, 23715198,
+11723113, 3258807, 2913062, 12278775, -284542, -1920924, -4667556, 1796907, -10748693, -9694278,
+-2264522, 2942590, 7088844, 3200288, 1560684, -3686156, 628676, -7891466, 3201898, -11674258,
+11330661, -1319629, -5741298, -6730214, -7694434, -11776800, 1963337, -11400991, -3884798, 7751879,
+-1876901, -3933653, -3805341, -1861332, -9780714, -6792491, -4445828, -4182761, -2286533, 3528853,
+1924145, 549219, 448287, -8625368, 14706505, 8451959, 134755, -1128503, 19363860, -2384244,
+-3431679, -4811437, -9924596, -2738042, 6422587, 6209986, -1037772, 7565585, -15194521, 4432943,
+-5844914, 1410897, 5738077, -2063732, -215822, 910533, 412317, 1831267, -2462090, 2781528,
+3535832, -3437585, 1315871, 1873143, 2273648, 6144488, -4736275, -457951, 562641, -148713,
+1352915, 652835, 1415192, 1914482, -1784559, 1219234, -625455, 118112, -3411815, -747324,
+-882079, 2786360, -2900714, 21989696, 7572564, 4727686, 10721312, -11898133, -7123740, 6956774,
+7391102, 16348256, 2444373, 4629975, -10849087, -527744, 5491653, -14244796, -4536559, 5866389,
+-4705674, 297427, 4014721, 10730976, -3515968, 4265440, 2255932, 2452426, 9143985, 8011188,
+9738838, -7488276, -5009543, 10582263, -13202729, -4294431, -4330401, -775242, -3524558, -8371428,
+8326868, -181999, -9091372, 547071, -3544959, -9428527, -11825656, -6499896, -7066295, 14161581,
+-4416300, -3463354, -8266739, -578747, -4180614, 2284923, 16624745, -2993592, -5363878, 2931315,
+-927713, 9669045, -11038603, 18884972, 3818763, -17955648, -13079249, 4873714, -12106439, 308701,
+-12966506, 169651, 2837363, -1556389, 14117558, 17738214, -8330089, 2247342, -3404835, -12934831,
+-4821101, -6994891, -8460012, -1848447, 6457484, -4318053, -9980430, 6751152, 484794, -5324149,
+-4542465, 2299955, 3770981, -1506997, -1003949, -5005785, 324270, -4613332, -902480, -2253247,
+3341485, 3835406, 936303, -4578435, 544387, 417149, 3073586, 47782, -1119913, 368830,
+-5848672, -532039, -3280818, -2242510, 498216, 1444720, -3055869, 2522757, -1762547, -1569274,
+4039417, -1480153, -3863860, -19381576, 7057168, 39479876, -7059316, -652298, -17563196, -7504382,
+11592654, -1912871, 22565222, 13470091, 12440910, -112206, 9558450, -18823768, 16758962, 8580808,
+619012, 2013266, -10980084, 4489315, -342524, 17069810, 9454834, 11305428, -4367445, 916439,
+2823941, -11810086, -9542344, -4472135, 5121212, 19939922, -5765994, -7011534, -7039452, -4049081,
+2440615, -13023415, -3898220, -1059783, -7035157, -13775571, -3043521, -17418776, -6432788, 9909563,
+-12140262, -5442798, -2533494, 749472, -19563040, -11904576, -2703145, -2240362, -3875134, 12014634,
+5204964, 599685, 7204808, 12381854, -7923678, -3423626, -10743861, 4603131, -8485245, 6874095,
+7968238, 9565429, 17602924, 4828080, -13542032, -2386928, 29615410, 9492951, 16579648, 7865696,
+4922570, -1360431, 1874216, -7257958, -9168681, 3854733, 2809446, -9156870, 2221035, 6039798,
+5494874, -8803072, 6566468, 2078764, 4688494, 5411659, -198105, 2502355, 4527970, 1714229,
+5343476, -770410, 1031329, -1949915, -3875671, 583579, 4645544, 496606, -2249489, 7523709,
+4786741, 3994320, 15569, -1159641, -1427540, -426812, 108985, -1488206, 2564632, 1894081,
+1986959, 2124398, 1037235, -4359392, 20432770, 22394496, -22674742, 5512054, 16582869, 9996536,
+-6342593, -12089259, -10448045, 23333484, 1894081, 8750996, 12240120, -7028714, 3441343, 5084168,
+-14323716, -15254650, 12343736, 4149475, -22149146, -5163625, 28765544, 13741748, -65498, -16474421,
+5379447, 4256850, 17494476, 5721434, -8534637, 11388106, 2026688, -4887136, -1661616, -3532611,
+-13647259, -6524592, 2097555, 2283312, -16287053, -17663054, -10399726, -5123359, -19339164, 11423539,
+-1195075, -13824426, 2638184, 246961, -5943698, -1746441, 4176319, -193274, 4398047, 4991289,
+7824894, -7737384, -9050033, 11909944, 24358370, 10925323, 6678674, 17652852, -3291556, 9576703,
+23684598, 14364518, 2270427, 2544768, -7347079, -14569603, 14115947, -13885092, 6246493, -5623186,
+4357245, -18149994, 8714489, -341450, -5839008, -3512210, 10323491, -9840844, -4828080, -2633889,
+1633698, -353798, 3112778, -3979824, -406948, -7070590, -1676111, -533113, 1366873, -2211908,
+2498597, -2738042, 2183454, -2467996, 7970923, 2323041, -1914482, -3797288, 3091840, 186831,
+2850248, 2326262, -1755031, 2078227, 3027952, -2091112, 897648, 3424163, -937914, 1110786,
+4086662, 3981435, 7350300, -4584878, -21204254, 5995238, -10207527, -4686346, -7884486, -1298154,
+18207440, 18042620, -36399848, 11308112, 11586211, -11278047, -18508088, -24123220, 4284767, -7059853,
+4494147, -8393977, -6614787, -3883187, 22566296, 5750961, -1946694, -347355, -3576634, -6698539,
+5717139, 3792993, -93416, 9088151, 1977296, -1865090, 3231963, 8254391, 23279260, 2385318,
+2871723, -11453604, -4917738, -5397700, -5786395, -657667, -1936493, 7756174, 11133092, 576599,
+12859669, -2938831, -2178085, -2586107, -1438277, -22506702, 25433722, 707596, 1794223, -1819456,
+-6623377, 6805913, -1755568, 10383083, 572304, -9820980, 2659122, 11007464, -7805566, 10228465,
+2455648, -15496242, -2675765, -3265786, -28316182, -9598715, 7212324, 7374996, -11586211, -6580964,
+6728603, 1009317, 18884434, -14996952, 6834904, 8516383, -1254667, 7459285, 6824703, 8446590,
+3188476, 3804804, 3347927, 2855080, -1297617, -1460289, -4924717, 2032593, 7024956, 1344862,
+-5230197, -1929514, -2976412, 1765232, -2320893, -1830730, -3505230, 4670240, 2542084, 3216394,
+278099, -8137890, 3230352, -8270497, 580357, 1438814, 2888903, -3867618, -1982664, -1136556,
+2640331, 5118528, 2193655, 2221572, 628139, 2327872, -5692979, 18739480, 5530308, 5904507,
+-13409962, 10324028, -5258651, 9846213, -7410966, 12643847, -11165304, -9066676, 17302276, 2316598,
+4554276, -10019622, -22647900, -2005213, 6841346, 1951526, 9963787, -7974144, 1437203, 63888,
+-16869020, -12108587, 5811628, -19071802, -12439836, 6311455, 251792, -19950124, -2707440, -9854802,
+12996034, 7865159, 2484639, -4520990, -12435541, -26617522, 9617506, -11829951, 14832133, -4254702,
+-4731444, -2312840, -6940131, 4247723, 4007205, -21242908, -9284646, 21250424, 18601504, -18868866,
+24904904, 1451162, 18381924, -4193499, -4209068, -2123861, -7027640, 9641128, -6924024, -19801410,
+-10449119, 23913842, -5157182, -4595078, -1169842, 7532836, 4866198, 12173011, -27117350, 8230768,
+18721226, 14817637, -5826123, -1342714, -5733782, -12158516, 1538672, 11523934, 17736604, -10613938,
+-10805601, -12196097, -1123134, -1828046, 1287953, -5746130, 3211025, 3297998, -1967632, -667867,
+-2529199, -5208185, 5406290, 321049, 924492, -8008504, -6798933, -1631551, -8854075, -3278671,
+-4383014, 1220845, -3070902, 231928, 7025493, -2578054, 2994666, 128849, -6338298, 1490354,
+-3143916, -610422, 2883534, 6293738, 963683, 2776160, 5769752, 5867999, 7573638, -2131378,
+-1929514, -1114544, 7761006, -941672, -12277164, -450972, -9428527, 12812961, 9947681, -9658308,
+-16456704, -13810467, -8101382, -16007343, -875636, 7579544, 17592722, -3042448, -820876, -29420526,
+17640504, 21940304, -3459059, -11936251, -12102144, -7519414, 33051920, -20122996, -47782, -2384781,
+8939438, -1492501, 38075960, 913754, -20683488, -5467494, -19654308, 25670482, 22363358, -18045842,
+21039434, 5243618, 16943110, 6305549, -31735514, 9940702, 17024714, -22026202, -6075231, -24990804,
+-12446278, 838592, -22968948, -19652160, -529892, -15928960, -192737, 5560372, -5661304, -15802795,
+12981002, 11707007, -25934624, -19881940, 10887742, 4544076, 7010461, 13128641, 17234630, -6367289,
+-9302362, -573915, -6017249, -369367, -1894618, -8753680, 3493956, -36092220, 12319577, 17489644,
+-18558016, -15367930, 11665131, -11780022, -10595684, -5119601, 6545530, 869194, 22411140, 122943,
+13111461, -1335198, -9070434, 4802847, 6791417, 6949257, -5835787, 98784, 769873, -877247,
+-3728569, -8982387, 5942624, 9339943, -4763119, -15769509, 4054986, 1290101, 16703128, -1662152,
+-6453189, 5077188, 1911797, 8253854, 51003, -5149666, 184684, 6715182, 5122822, 1617055,
+-1726040, 1204738, -3033321, -2687039, -7753490, 3836480, 3807489, -5433134, 2650532, 2270427,
+1500554, -996969, -2564632, 588411, -7430831, -5622649, 158914, 7973607, 19931332, 37561636,
+59353764, 1653562, -24172612, -31091806, -7395934, 1087701, -7523172, 28744606, 21522618, 14840723,
+24967182, 18128520, 14630806, 850404, 11760694, -15610596, 21607444, 25007448, 1564442, 26023206,
+-10919417, 2002529, 5927592, -24555938, -16553878, -5931350, -14661408, -17253958, -2675765, 26752278,
+-503048, -5328981, 3213173, 5609764, -3781719, -36601176, -5131949, 9403294, -5515812, -11306501,
+4366371, 13970992, 24903830, 6045704, 12631499, 17591650, 21698712, -30274150, -21038360, 11732777,
+-8891119, 38230576, -4106526, 32855962, -26715234, 15612743, 26762478, 903017, 4260071, 16011101,
+-29186988, -13626857, 657667, 16497506, 372052, 19007914, 7660611, 7080791, 19391778, 6930467,
+-2670933, -8308078, -23105850, -5428302, 1256278, 6011881, 386010, 410706, 439697, -12644921,
+6459631, 4292820, 10808822, -3833795, 8116415, 13290239, 7885560, 3300146, -104153, -1683090,
+2764348, -4712116, 2685428, -4506495, 83215, 2674154, 2676838, -3993246, 5961952, 5743445,
+7267622, 741419, 541166, 2982318, -2659659, 4908611, -3752728, 4959614, 11518565, -1476932,
+-2245731, 813359, 10018011, -6248104, 2342905, -1271310, -1510218, -1976759, 1362578, 2702608,
+4507568, 3368328, 3439195, 9243306, -6562173, 10981695, -5387500, -12763032, 3711926, 42625404,
+14179298, 14972256, 31066036, -2276333, 6567542, 13543642, 19942606, -22196928, -17850420, -7551090,
+-19581830, -3397856, -26301306, 13538274, 20915954, 15353971, 20766704, -13981192, -7845295, 16142098,
+12436615, -8734353, 21047488, 12753369, -4927401, -25759604, 14277008, 15785615, -13214541, -1887101,
+7454453, 3794067, -20914880, 24075976, 6323803, 25843356, 13970992, 10177999, -14094472, 12104828,
+-7534447, 39359080, -31040802, 3480534, 11754252, -5782637, -20079508, 12848395, 12404402, -2355253,
+12200391, -11871826, 31915902, -14737107, 8330626, 7073275, -20447266, -8710731, -28193240, 12053289,
+8101382, -20770462, 19375134, 16795470, -14579803, 12081743, -1686312, 32614372, 10484015, -16128139,
+-12051141, -11507828, 10093710, -6649683, 8581882, -4021700, 1777043, 11011222, 6727530, 5560909,
+-10845329, 28065464, 2942590, -10704132, -16038482, 13627931, 6558415, 12872017, -7442642, 3861713,
+9951439, 21209622, 5193689, -3346317, 17380122, -4612795, -5263483, -2361158, 1540283, 4864051,
+-10674604, -9077413, 3803194, -7829726, -5042292, 1119913, -4022237, -981937, -1559610, -7679402,
+5233955, 3256659, -15313706, 3751117, -11507291, -6907918, -3819837, 5657546, 2725157, 10512469,
+4315369, -196495, 2705830, 3938485, 4185983, 517007, 993748, 2505577, 8582955, -2763812,
+-1557463, -38234872, 16403017, -32672890, 32918240, 39659192, -2594697, 6596533, -33058900, -702227,
+-7750269, 2931315, 18468896, 19010062, -6226629, 9679246, 15267535, 2126546, 6126234, 4182761,
+6038724, -4482335, 22473416, -3557307, 4725538, -13154411, 25350508, 5261872, -2913599, -1177895,
+22767622, 8589398, 10493679, 25400974, -6214281, -16189342, 31088048, -33844344, -14968498, -6102075,
+6967511, 21938156, 4698694, -9392020, -9846213, -16461536, -796180, -3204046, 5998459, 35372812,
+34161096, 21764210, 30779884, -3063386, 46573016, -15915001, 12680891, -11349988, 694174, 14617921,
+-7655779, 1583232, -14524506, -18349174, -96637, -11570642, 9206799, -15662135, 22817550, -17566954,
+-28535226, -11729019, -7627325, -2623688, 33441690, -20509006, -5126581, -2948495, -21667036, -5413807,
+11956652, 26572426, -2769717, -1187022, 601295, -8745627, -18697066, 732292, -1233729, -2782065,
+-2340757, 12348, -11000485, 8515846, -9488120, 10525354, -4626754, -8011188, -9298604, 2222646,
+7877507, -5821292, -8044474, -2603287, 6437619, 7745437, -6033892, 3690988, 4121021, 2835215,
+4100083, -4271882, -4471598, 2270427, -64961, 4964446, -6481106, 4392141, 7141994, -176631,
+-3070365, -3782256, 6168110, -13471165, -7017440, 13700946, -8749385, -733903, -2748242, 2847563,
+-9000104, 6330782, -3299609, 12369506, 10722923, 167504, -13350369, 58546308, 81283864, 24924232,
+63361504, -13878650, -44084080, -30889404, -21603148, 10691247, 11642583, -14693620, -23684060, 20514374,
+27575838, 16120623, 27511950, 21232708, 5229660, 8450348, 4146254, -1373853, -18122078, 7998303,
+-21472688, 15131170, 125091, -20076824, 23271744, 14095009, 11125039, 40230420, 24704116, -11519102,
+-7779797, -14462765, -17176112, -20997558, -8309151, 848256, -16638166, -5138929, 34727496, 52724480,
+38807176, 5339718, 26480620, 28291486, 43193412, 19819664, -22915262, -37562172, -23464480, -23952496,
+14181982, 11966853, -51412368, -35205848, -9089225, 21720724, 46760920, -34976604, -1396401, -30346628,
+-3958349, 38296076, -21052320, 14473503, -30534534, -4909148, -9126806, 25859462, -28618440, -16229071,
+464393, 11469173, -23230942, 53437448, -12562779, -743029, 30337502, -13231184, 22810034, -7170985,
+-18832894, -14536854, 8868034, 983548, 7563975, 4845797, -16807818, 582505, -7090454, 20557324,
+11971684, 3735548, 11176579, 12865575, 721555, -24696, -4030827, -12599287, 26066156, -7909183,
+5480379, 362388, -15075335, 766115, 1677722, -4603668, -9897752, -1988570, -5797132, 1615445,
+3910031, -4244502, 919123, 17945448, 12713640, -2090575, -2809982, 17027934, -6996502, -1919850,
+-14156212, -20248624, -7619809, -5183489, -2153926, -5493263, -22952306, -44629544, 5543192, 24983824,
+-20621212, 38662220, -15307800, 15425912, -5060545, -44480828, -22752052, -2069637, -26147760, -60079076,
+-16802986, 21801254, 33458332, -16203301, -25689810, -53601728, -15891379, 15940771, -10604811, -15470472,
+-26610006, 6425271, -5956046, -4431870, -4939750, 10940355, 21640730, -16691317, 16747151, 14305462,
+-16884054, -48914308, 4083440, 4060892, 12731357, 6004901, 32145146, 3332358, -48633524, 417686,
+-53565760, -151398, 18712098, 22558778, -4073240, 3072512, 25020868, -12943958, -9411347, -16707423,
+16229071, 11841225, -7635915, 19335406, -5909875, 8195335, 9050033, 31585190, 4291746, -11090142,
+-33620468, -11526618, 17588428, 15270219, 26866094, 39090108, 67614600, 33693480, 16339666, -17510044,
+-67699424, -18512382, -9690520, 51909512, -8613557, 3292629, -125628, -16296717, 2323041, 15258408,
+7353521, -304943, 839129, 332323, 190052, 25189446, -8981313, -7442642, -8246337, 17484274,
+6774237, 8865886, -6762426, -21398600, 7166690, 9106941, -9663140, -1404454, 5556614, -1198833,
+1766842, -3775276, -30728880, -10082973, -2368675, 14174466, 22291954, 2664490, -18336826, -17974976,
+8350490, 3016678, -1575179, -3030636, 1141924, -1891933, -780073, 16494822, -17983564, 2320893,
+-15430207, 16496969, -8908299, 369904, -22265648, -3500935, 15278272, -4699768, 8325257, -12875775,
+6524592, -6766721, 10585484, -10336376, 3622268, -43694312, -13301514, 30392800, -14965814, -12551505,
+-3236795, -9801115, -35033512, -38947836, -56984016, -17984638, 108985, -4405026, 37298032, 10270341,
+48715668, 30066382, 15082315, -6795712, -18009872, -3345780, 68314136, 4254702, 19681688, 11113228,
+-8591008, 34056944, -14219563, 27494234, -30023968, -2964601, -21644488, 25879326, -36455684, -7652558,
+11106785, 11496017, 11663521, -31814970, 22625888, -36415952, 7368554, -17825188, -12265890, 36298916,
+2103997, 2418067, 12439836, -13729937, -857383, 9517111, -44278964, 1234266, 10148471, -6391985,
+28436442, -12706124, -5633387, 47974784, -18219252, -39830452, 35970, -15012521, 3156801, -2968359,
+-2172717, -31955094, 17033304, -5158256, -43739948, 26334592, -54157392, 10557030, -12487081, -21351356,
+-34275988, -4347044, 9147207, 15784542, 1290101, 12794708, 15657840, -18597746, 32824824, -7556458,
+8681740, -373125, 15592879, -649077, -1914482, -5285494, 9153649, -19615652, -2693481, 6514392,
+4100083, -7580081, -294205, -8492224, -11576547, 5945309, 4483409, 8745627, 5360119, -2408940,
+6491843, 19669340, -9903121, -10111427, 3195456, -873489, 3603478, 14613626, -2320356, 8004209,
+7148436, 7594576, -10130754, -11739219, -3202972, -861678, -12684649, -615791, -2757369, 5337034,
+-13855028, 4152160, -6316287, -18211736, -66019552, -67869072, -57827976, -28811714, 121719912, 38592964,
+-14414984, -15098421, -59186796, -126135136, -13606456, 34724812, 43202004, 18913426, -18838264, -13971529,
+-36706400, -40537512, 31615254, -29038810, 76972792, 57817240, -88354456, 29372744, 12336757, -18079128,
+7558069, 64468532, 9785009, 44642428, 88111792, -18503256, -71200896, 3904125, -11621645, -66418984,
+-17630840, 32865090, -2321967, 40329208, 64939368, 6256157, -55132348, -108657304, -93103616, -83282104,
+-8181913, 81680080, 23767812, 22153978, 12833362, -21584358, -108793136, -67981280, -34421480, -12866648,
+7345468, 25201794, 24659018, 31329638, 32268090, 39784820, -46500536, -16515223, -37956236, -2822331,
+-41571524, 26718454, 26898306, 54240068, 60403884, 28984050, 1585380, -15480136, -10340671, -73189464,
+-57916024, 51911124, 81225344, 55280524, 65054796, -15043660, -28013924, -57836568, -32435594, 17637820,
+884226, 4405563, 18850612, 6493454, 5335960, -13707388, -17958332, -8858907, -13367549, 931471,
+14988362, 4436701, 6304475, -2834679, 9091909, -15002858, 11142219, -4197794, -13493177, -13643500,
+-3416110, -22959822, -6352794, -13879187, 15664283, 17131550, 8950175, 6880001, -14359149, -30822832,
+-30037390, 8628052, -2017561, 14460618, 13261785, 6999723, -21617108, -11052561, -20527796, -32662152,
+10863046, 20321638, 8810052, 1084479, 23236846, -8564702, -121478856, -136009808, -92463128, -95071784,
+-25318832, 106888848, 71987944, 115320944, 128342216, 194982928, 129461592, 134080288, 86467352, -6446209,
+-96225520, -166293088, -196590320, -170504832, -134602672, -97228936, -23539106, -4771172, -14062797, 5133023,
+42340860, 69911328, 96726960, 84296784, 114632144, 110943304, 143096496, 131110320, 36754184, 88077968,
+-19095962, 24250996, 17674864, 5193153, -12201465, -127351152, -153203632, -195563280, -229735120, -208578640,
+-116133768, -102908488, -84935664, -106050792, -123098056, -26108032, 30003030, 77491408, 113074144, 164089232,
+195616976, 251539056, 331466240, 322256224, 244416928, 198680352, 164984192, 87617872, 138521824, -55948392,
+-113233592, -270337600, -310058528, -384979936, -370304576, -338228128, -320975776, -309581248, -191002560, -117922088,
+-64536180, 173354544, 176082928, 269805024, 345939744, 300434560, 270885728, 274561696, 215232080, 164620720,
+90018216, 12222403, -1600412, -50475528, -62078920, -89314920, -116449984, -159233760, -172790288, -156720672,
+-181334064, -139595568, -128784056, -120947352, -106844824, -54617488, -11215233, 57024816, 116462872, 109955992,
+170410336, 189064992, 207725552, 245982448, 198327632, 116371600, 57514444, -34862248, -90875064, -90157272,
+-175452640, -161788736, -222478768, -176447456, -184501056, -117841016, -124088584, -71914392, -9755481, 62812288,
+93288304, 165746544, 191935648, 187154816, 180894896, 177157200, 135281264, 48853104, -31757526, -44409424,
+-59139552, -64231236, -74052752, -86395952, -81425600, -59232968, -65551940, -58145804, -51692080, -36058396,
+-17180942, -10616622, -9047885, 3011309, 10104984, 7806103, 9222369, 26364656, 32622960, 35412004,
+31867584, 24916716, 25358560, 39643084, 27535036, 23075786, 21747030, 20582020, 8086350, -1201517,
+-11122892, -7786239, -10921028, -13195750, -19601156, -15087146, -13738527, -15794205, -21553220, -15860240,
+-14785425, -16709033, -17986786, -9490267, -7452842, -3631395, -2892661, 1125281, 7455527, 13902272,
+11474542, 10853919, 10727755, 13270912, 10580115, 7481833, 4056597, 6192269, 4230006, 3400540,
+1859721, 1094143, -2631741, -915365, 2554432, 3977677, 1229434, 790811, -453656, 1171989,
+-922881, -4952098, -7539278, -6331856, -7327751, -7242389, -7329362, -5734855, -5889474, -4484483,
+-2426120, 54761, 214748, 1267552, 653909, 1577864, 1887638, 2950106, 3305514, 4301410,
+4082903, 4379793, 3459596, 3042984, 1957968, 1447941, 607738, 249645, -272730, -357019,
+-622233, -659278, -707596, -646393, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
13325673,
-1492501, -5924371, 1986422, -3758633, 944893, -2459943, -1562831, -3277597, 2268280, 3934190,
-1120450, 1202054, -7319698, 1398549, 99858, 2235531, 2755222, 1493575, 4161823, -917512,
--2368675, 408559, 4980552, -2147, -3859028, -419296, 4237522, 2282238, 436476, 8053,
-1177358, -141734, 304406, 791885, -155693, -1554778, -199716, 4832, 1654636, -2528125,
--5887864, 4299799, 4308926, 3749507, 3525095, -214748, 1916092, 3351148, -3576097, -832687,
--108985, -4767414, 1054951, 317291, 4272956, 415001, 2389613, 43487, 5377836, 2709051,
--802622, 3759707, 2278480, -1257352, -4415764, 1074279, 1137093, -1190780, 318364, -2528662,
--665720, 2225330, 1559073, 1844689, 4436165, -764504, -1411434, 580894, 2634963, 6077916,
--3598109, 1602023, 1641751, 1753420, -192200, -435402, 1877975, -1077500, 43487, 869731,
--1156957, -223338, 165893, 295279, -756988, -1156957, 706522, -301185, 134218, -438624,
-1110249, -165356, 1322313, -340913, 1176284, -52076, 1112397, 11312944, -7581154, 2542621,
-6362457, 1480153, 4480188, 5431523, -4958003, 1029182, -464930, 2108292, -6283537, -4985920,
--942208, 4867272, 6593312, -2541010, -2203318, 3160559, -5381057, -7182796, -1341104, -8445516,
-2872796, 2793339, 746787, -5249524, -5352603, 1890323, -3124052, 715112, -177704, 5555004,
-5849746, 5296232, -883690, 3710315, -5831492, 2523293, -3448859, -319438, 283468, 4533875,
--4924180, -4355097, 6442, 5965710, 2433099, 2328946, -3643743, 2019708, 1450088, -1762010,
--7490423, -1211718, -2561948, -3279745, -2983929, 3419868, -3172907, -1015760, 743029, 2123861,
-5322002, -2053531, -162672, -4041564, -1995012, 838056, -5636608, -346282, 1490891, 3831648,
--1255204, -2901787, -1506460, -5828271, 2720325, 1712618, 297963, -472446, -5079873, 2077690,
-375810, -1792075, 1790465, -712965, 403727, 1675574, 121870, 351650, 1899986, 872952,
-356482, 57982, 1512902, 581968, -340376, 651224, 866510, 1803886, -3874061, -7121056,
--1682554, 1371168, -2110977, -3543348, -1909113, -7098507, -3943854, 7757785, -183610, -3260954,
-4170413, -5992553, -1278290, -7504919, -1463510, -5888400, -3020973, 7183870, 492848, -1315871,
--7845832, -4848481, -1675574, -3293166, 1470489, -4121021, 537945, 2760590, 8570070, 4265440,
-3291019, 3779571, 6961068, -5623723, 55835, -1599339, -4306242, 1950989, -782221, -1602023,
--4512937, 2541547, 4998805, 635118, -3416110, -2144263, 12601971, 177704, -3460133, -4868883,
--7356205, -9844602, -1118302, -5043902, 1323924, -886374, 2912525, 644782, 1474248, -4454418,
-812286, 876173, 6164889, 2167885, -4387846, 381178, -1276679, -1213865, -948114, 2285996,
-3366181, 3298535, -2828236, -2752537, 1946694, 991064, 1318555, 1434519, -1020055, -4293894,
--5062156, -485331, 1068910, -1110249, 672699, 165356, -572841, -965294, -1495186, -502511,
--179852, -848256, -1675574, 283468, 723165, -848793, 477815, -730681, 305480, -947577,
--405338, 343061, 418759, -1168231, 328565, -363462, -2198487, 373662, -684510, 1442572,
--880468, -571768, -221728, -17494476, 6842957, -3179350, 2860448, -7277285, -2960306, -5712307,
--5219996, 286689, -1678795, -3606162, 8831527, 2234994, -872415, -5456219, -1751273, 2428267,
--6216429, -3338800, -5921150, -3343632, 8445516, 753230, 5618354, -616865, -98247, -1502702,
-1564442, 1490891, -4543002, -23085, 1311039, 2458869, 9175661, -4897874, -5619428, -1187559,
-10154913, 3122441, 10810970, 874026, 965294, -2003602, 5324686, -1018444, 7866770, -892279,
--950262, -1510218, -3316252, 3265786, 990527, -2910914, 2268817, 2881386, 5457830, -3264712,
--302795, -1079647, 4860293, -2092723, -846645, -1937030, -1271847, 1076426, -1620276, 467078,
-805843, -1294933, 1190780, -8193724, 758599, 5153424, 1829119, 6936909, 557809, 641024,
-1683090, 4379256, 7173669, -4862440, 679142, -484258, 1687922, -336618, -186831, 2040646,
-4652524, 1678259, 2281165, 135828, -812823, -1330366, 629750, 2244121, -827855, 954557,
-1080184, 997506, -41876, 362388, 1985349, -469225, 527207, -199179, 2293513, 1207423,
--732292, -260382, 2469606, 1131724, -725850, 1678795, 1018981, -2318209, -3625489, -1736241,
-26844, -8514236, -1333051, 185220, -4182225, -15150497, -3590593, -3186866, -6538551, -1195075,
--1599875, 9654013, -3204046, 7325067, 3494493, 5311264, -9697499, -4307316, -9799505, -9109626,
-104153, 1831267, 5879274, -2683281, -4219806, -2567317, -6589554, 1530619, 3164317, 3604551,
-2275259, -1937030, 2612414, -4378183, 597000, -7974144, 3028489, -1988033, 1219771, 1869921,
-3129958, 3307662, -2966749, 212064, 7930120, -4098473, 3904125, 4063576, -142808, 2468533,
-3961034, -1499481, 1631014, 3874061, 324807, 6764574, -3380676, -4539244, -2120103, 2267206,
-98784, -8796630, -4387309, -9756018, -10590316, -1744294, 3015604, -8647917, 4009889, -1339493,
--35433, -2911451, 3042984, -5116917, -711354, -1739999, -7208029, -6387153, -2020245, 3908420,
-244276, 3360275, -1263794, 2199023, 1824824, -3987340, 143881, -737124, 2415382, -2668785,
--4452808, -1431835, 745714, 58519, -1638530, 839129, -969589, -356482, 853088, -186294,
-175557, -38655, -914828, -172872, -883690, -623307, -526670, 27380, 597537, 104690,
-1427540, 547608, -502511, 5014911, -14106283, -595927, 4504347, 2871186, -7441031, -832150,
--4699231, 1317481, 1537598, 1112933, -8131447, -10937134, -7409893, 1369558, -5901822, 6649683,
-2183991, -10532334, 7771207, 6797323, 5425081, 4838281, -5163625, 8713952, 2391760, 7516,
--3251290, 2990908, 5290863, -4675072, -6853157, 2647311, -2512019, -8567386, -1035087, -8266739,
--2917894, 15158013, -3904662, -6718403, -8288213, 533650, 1500554, 6067715, 2518998, -5464809,
-5157182, -581968, -4211753, -5687611, -5971615, 9356049, 4294968, 5916318, -4294431, -6009196,
-2875481, 1557463, -6102612, -264677, -3686693, 6061273, -1016834, 583579, -7231651, 4756140,
-4089346, -4152160, -2552821, -2561948, 8499740, 140660, 1377611, -2373506, 5874979, -5807870,
--9782862, -4400731, 1018981, -1871532, 5573794, -1082869, -465467, -5765457, -2898566, 2535105,
-492848, -4099546, -2530810, 3541201, 2062658, -1099512, 318901, 69256, 166430, -1120450,
-1695975, 690416, 2544768, 387621, 584116, 91805, 1201517, -480499, 1660542, -1946157,
-2212445, -223338, -1101122, -7836705, -548145, 1662689, -2126546, -6310381, -9254581, -7463043,
-7077569, 626528, 8725226, 10449655, 10150081, 1347009, 14012868, 3190087, -1791001, 6354404,
-4812511, 12920872, 1686848, 7333120, -10581726, 16850768, 12357158, 5847061, -5388574, -4336843,
-5965710, 1198296, 4223027, -2765422, 7162395, -2426120, -2112050, 6397354, 5181878, -6971269,
-4343286, -2031520, 6975027, 7564511, -15479599, -3045669, 9229348, 2614561, 4939213, 3812857,
-9139154, -4734665, 3554086, -52613, -8041790, -4057670, -401579, 1410897, -11718281, -1203665,
-7112466, -5989869, 12064563, 8952322, -3878892, -333397, 2170569, 4368519, 6973417, -2994129,
--2484639, 11360725, -2911451, -463320, 4871030, 12885, 6607807, 5172215, 2061047, 3505230,
-3739843, 3500398, 1559610, 1358283, -1778653, -2931315, -1300301, -2690797, -453656, -1948305,
-1122597, 931471, -2616172, -2168959, -451508, 1641214, 3631395, 2935610, 1637993, 131533,
-1728188, -3490735, -1626719, -1981054, 571231, -1500017, 1538135, -4022774, 263604, -296890,
-3124052, 1077500, 15032, 336081, 3245922, 808528, -3071439, 738198, -413391, 560493,
-2719251, -314069, 754841, -275415, 29577830, -15651398, 2049236, 12123082, -1290638, 318364,
-16097001, 17642652, 2001992, -1480153, 3633542, -980863, 3913252, 4976794, -6594386, -2120103,
-10393284, 9133248, -4424353, -8577050, -9125195, -9504763, -5153424, 7656316, -6088116, 3280818,
-328565, -11091216, -826244, -7419556, -962610, 2999498, 4720169, -14348949, -6760816, -11455752,
--3597035, 16991964, 2387465, -1693291, 1441498, -1704028, 766652, 4910222, 2892124, 8403640,
--535260, 6238977, 3734474, -6123013, 3712462, -9238475, 186831, -9280887, -9577240, 3431679,
--10528575, 4236449, -185757, 5162014, 4177930, 3673808, -5645735, 6339372, -9546102, -372588,
--4427038, -1656247, 11859478, 246424, 5912023, 5725729, -1260573, -2448131, 4560719, -10035728,
-3900904, 9182640, -14001057, -10450192, -2887292, 6892886, -692564, -8776229, 3205656, -1450625,
-3648575, -3361349, 1101122, -1999844, 6133214, -1356136, 5640366, 2923799, 5268851, 1620813,
-1449015, -2996277, 3566434, 1378685, -134755, 1885491, 1804423, -1250372, 2665027, 1873680,
--1305670, -1628866, -4566087, -1180042, -2605435, -323196, -110059, -1780264, 2355253, -1042066,
-1387274, 259309, 4778688, -4011500, 1793149, 561567, 216359, -601295, -17520246, 3508452,
-4491999, -11767674, 5619965, 127775, 12763569, -3105261, -6175089, 5521181, -15307800, -5129802,
-13296682, 5949604, -7758322, -18956912, 8739722, -2458869, 4892505, -12020003, -16000364, -10790032,
-14227079, 1357210, 7939784, -1139240, -7221988, -10810970, 5401458, -2730526, -9386651, -11004243,
-1015223, -9800578, -7493644, -3992172, -1777043, -10635950, 6278706, 7458211, 10009421, -4483409,
-8920110, -6813429, 13998372, -2359011, -533113, 10718091, 5612449, -2396592, -6862821, -3334505,
-10353556, 2552821, -7336341, 3810173, 10986526, 10397579, 4588636, -12252468, -13549011, -1026497,
-2881923, 1059783, -9693741, 3172370, 11140608, 3368865, -4447976, -17415018, 4921496, -7461969,
--16973174, 739808, 1131724, -9509058, 14183056, -807991, -5530308, -18847928, 98784, -5405217,
--667331, 7352447, -4046933, -7084549, -269509, 1839857, 1946694, -5575942, -5633924, -5615133,
-2369748, -4820564, 540629, -708133, 1045825, -1198296, 1634235, 2756832, 2503966, 3122978,
-1678259, 5457293, 6920266, 573378, 2199560, 1423782, -2375654, -532039, -1892470, 1014686,
-967441, 589484, -6263136, 963683, -316217, -2174327, -73551, -1934883, 2196876, -2408403,
--2494302, -1831267, -21760988, 13952201, 10799695, 11878806, 1843615, 12546136, 1438814, -7718056,
--8976482, 1590749, 10091563, -6627135, 2490007, -14579266, 10333154, 10983305, -5233955, -2829847,
-2675228, 12013024, 8784819, -5854578, -5252745, 8295730, -9481677, 3591130, -13033078, 234613,
--3706020, -17471390, -18092550, 3814468, 10761041, 5164162, -15416785, -8151311, 12154757, -12962748,
--5283884, 10895795, -2648921, 13554380, -4452271, -8973797, 3704409, -13178570, 15729244, -1349694,
-2962991, -6961605, -3475166, -323733, -14344654, -8579734, 1379758, -2048699, 1661079, -4393752,
--15242839, 3234110, -12586402, 6043019, -3021510, 9573482, -15216532, 7282654, 2836289, -4041027,
-11687143, -1098975, -7705172, -14794015, -1851668, 3690451, -12036109, 9394167, -8075076, 6225555,
--15912854, -16091632, 8005282, 6608881, -6407555, -4813048, 5398774, 3935264, -3333968, -2563559,
--4270808, -5341329, -367220, -8809515, -819802, -961536, 836982, 2909304, -1555315, 2940442,
--1628330, -204011, -4824322, -2093797, -1214402, -276489, 7455527, -1804960, -900869, 4602058,
--4453881, 3541201, 1947231, -1403917, -993748, -4233764, -4150012, 184147, -2383707, 1025423,
-396748, -1677722, -2929168, 7162395, -6970195, 2381559, 8523899, 12586402, -3326452, 1396401,
--4467840, -16807280, -3590056, -3597572, 7302518, -14762876, -43487, -8516920, 9162239, -10327249,
--14083198, 9367861, 4300873, 6094559, 19396072, -3197066, -5562520, 5474473, -12424267, -14489072,
-1193464, 18564460, 5645735, 10423886, -7406671, -9109089, -14759655, 2953327, 18846316, -8442832,
-9850507, 2268280, 14653892, -22416508, -7129109, -371515, 2632815, 12774843, 6158983, -17082158,
--4629438, -7925289, -679679, -19668802, -3095598, -7076496, 1357210, -10348724, -690416, 2409477,
--28724742, 3297998, -9008694, 1770063, -11372000, -612570, 7060390, 3615826, -3870303, -3632469,
--15151034, 15235323, 14627048, 4833449, 3643743, -13133473, 20059108, 6997039, 10337986, -3940633,
--31590558, 12321724, -1088237, 23707146, 22252762, 7033546, -2865817, 9819369, 512712, 8601746,
-455803, 998043, -5596343, 2688650, -5113159, -2713346, -1431298, 10346576, -155156, 639950,
-2645700, -638876, -5586142, -2852395, 942745, 4206921, -1981591, 2103997, -3283503, 4378183,
--3435437, -5248987, -2690260, -742493, 2451890, 972810, -1140851, -897648, -1167157, 6836514,
--1500017, 411780, 1117228, 3419331, 27197344, 9589588, 18613314, -18063558, 4197794, 18979460,
--5704254, -6840273, 2682744, -11737072, 8961986, 2270964, -13707388, -17948668, -1348620, 15223512,
--394063, -1226750, 9960566, -14872935, -3789235, -12243341, 6876780, -20864414, 344134, -4460861,
-7588134, -21791590, -15055471, -9522479, 6386617, 7012608, 4853850, -7069516, 5295158, -5259725,
-6460168, -4314832, -1909113, -1501091, -6119792, 4145180, 9643275, 5740761, 9708237, -800475,
--9418326, 1341104, -9378061, 24981140, -6314676, -24575802, -7656853, 6715718, 21344376, -21365852,
--8809515, -1393717, 13724568, 877247, -30235496, -3714073, 13952738, 28815472, 1066763, 20060182,
-28903520, -2152852, 9303973, 13654775, -3780645, 24630026, -3310883, 29743722, 4736812, -8175470,
--25797722, -16162499, 191663, 7756174, 3706020, -3929895, -5013838, -8019241, -10941966, -9727027,
-11832635, 3457449, -144418, -16965658, -1916629, 620086, -3096672, -9650792, 2517388, 5101885,
--1461363, -5004174, -3648038, -9455907, -5707475, -2784750, 5953362, -1173063, -5145908, 5150740,
--7392713, 5308580, 5365488, -4638565, -8959839, 8181376, 12164421, 1855963, 373125, 733366,
-7088307, -2121177, -8473434, 992674, 8216273, 6799470, -8412767, -7150047, 1312649, 1342714,
-122407, 2427194, -1313723, 11399380, 13807246, -23792508, -23147190, 6088116, -5429376, 698469,
--9234717, 21537114, -9724880, -6226092, 7458748, 5371931, 171262, -9892383, -7255274, -12031277,
-4800700, -724776, -5840082, -987306, 14305999, 21508122, -23328652, -1517197, -22757958, -2450816,
--5908802, 22494354, -9546639, -9120900, -4411469, 13677860, 4517769, 3751654, 5713380, 5454072,
--4103305, 238371, -2982855, 3628711, -2722473, 21054466, -5525476, 5565204, 14816027, -7764764,
--17071958, 3759707, 5776731, -6026913, -6565395, -1457068, 3475166, 10663867, -14625974, 19531364,
-28742994, 19297288, -8104067, -11674795, -26667988, -34410204, -12676059, -164283, -6247567, -1775969,
--3942780, 8185671, -741419, -13312251, 6944425, -5914707, -1293859, 12581033, 21013664, -5187247,
-5884642, -3737695, 1123671, 19122806, 9648644, 16349330, 16650514, -13365938, -4130685, -3090229,
-443992, -341987, 5907191, 373125, 3609920, 16763794, 670015, 7813083, -3590593, -3724274,
--6911676, -2149094, 948651, 7616051, -2154463, -6404870, -3025268, 3648038, -2675228, -1463510,
--2003065, 2291365, 576599, -2507187, -1364189, 1683090, 820876, 844498, 9659918, -4001836,
-209917, 1223529, 110059, -5379984, 2414845, 2984466, 6156836, -12347494, 23041962, 10311143,
-13066901, 19665582, 30434676, -11826729, 15701327, -31532040, -3968550, -14196478, -30990874, 12410845,
-7218230, 9316321, 4032974, 12154757, 3638374, -22325240, 18624052, 32986960, -5049808, -5412196,
-7999914, 3195993, -7010997, -29579976, 2314451, 13959, -2784213, 308164, 9929964, -21172042,
-4460324, 5898064, -4440996, -12249784, -6033892, -13641890, 13696114, -30361124, -4496294, -19559282,
-10706817, 4289062, 10858751, -3940633, 2877628, -7827578, 18417894, 5492190, 15099494, -13922673,
-14839649, -423591, -14748918, 30151744, -5123359, 3619584, 20307680, -19704236, 22775674, 13597866,
--18053896, 7488813, -6972880, 9979357, -24968256, 18088254, 2460480, 6306086, -2448131, 5806796,
--20299626, 12775917, 22803592, -45610944, 4537096, 43848396, -28486908, -9178882, 2983929, 21338472,
-15065672, 5211406, 13147969, -6056978, 7880728, -3398393, -9834938, 4741644, -2293513, -1697049,
-8138963, 11922292, -1149441, -4719632, -4119948, 3488587, 7521562, -10198937, -3925063, -6994891,
--4443144, -9121437, 8946417, 11932493, -2653216, 5469641, -3536369, 2196876, 7499550, 8567923,
--10041634, 806380, 3542811, -5238250, 7752953, 376347, -287226, 7114077, 3519726, -8607114,
--7314330, 2423972, 1013075, -2605435, 1329829, 18446348, -11157788, -13433584, -424128, -12860206,
--5848135, -33989836, -29018946, -4002373, -16648904, -19978040, -14416058, 8876087, -5135171, -10113574,
--16248935, 15007153, 1004486, -24539296, -3875134, -137439, -11684995, -3672734, 9956271, 7162932,
--1732482, 93416, 459025, -6156299, 5228586, 11462731, -4305168, -2729452, 17582522, -33043868,
--5395016, 9308805, 35229468, -14585709, -9155797, -13139916, -17898202, 7808788, 37381248, 6954626,
-23148264, 4793721, -3822521, -1944010, -2787434, -18033494, 3934190, 4095788, -14712947, 3268470,
-29185376, -4724464, -9034464, 4913443, -10515691, -2390686, 25738128, 38109244, 10251013, 22885734,
-26400628, -9361955, -11070815, 3031173, -8767102, 1522566, -26181046, -213138, -20411296, 6216965,
-4212826, 12435541, -21251498, -7904888, -7278896, -8288213, -6687801, -7414724, 11764989, 2569464,
-15175730, -3842385, 5752572, 15246597, -2850248, 564251, -2264522, -6017786, -4919348, -801011,
--3733937, -5528160, -159451, 2333241, -2942053, 1056025, 7041062, -7100118, -6561637, 521839,
-5256503, 2800319, -3503620, -10531797, -10359998, -1223529, 2330557, -6230924, -3579318, 2257005,
--2216740, 1150514, 661425, 7271380, 2334315, 1883880, -8013872, 8814884, -3785477, -8501888,
-26737246, 30245696, -12577812, 68828464, -9819906, 1272921, -13112535, 7831873, -5732171, 7726646,
-17435420, 4725538, -16884590, -9300752, -17628694, -592169, -12074227, -21740588, 2551211, 13606993,
--2677375, 3746285, 6276021, 7856569, -452045, -6483790, -8406862, 3808562, -380105, -10984379,
-3867618, 29426432, 20679730, 11647414, -25535192, 17805860, 13821205, -6940667, -8021389, -8005282,
--10413148, -4632659, 7839926, -18540836, 1415192, 1982664, 10621454, 28045062, 5142150, 5583458,
-1211181, -3680787, -6065031, 12000139, -7781944, 28326384, 8873939, -3054259, 12202002, 2095407,
--19617800, -14159433, 15935402, 18470506, 6638409, -4976257, 12140799, 13134010, 18784040, 37072012,
-3679176, -11020349, -19534048, -13109851, 9377524, 1831804, 2816962, -2055142, 12813498, 1118302,
--1921461, -17710298, -8915278, 17883706, 20045150, -7531762, -14159433, -16798154, -5108864, 8599061,
-5264556, 1365263, -5908802, 1171989, -319975, -7582228, -243739, -16425029, -4513474, -877247,
-11292006, -2347200, -3817689, -168577, 9103183, -5887864, 6439230, -3753802, -7891466, 6324340,
-8996346, 5739687, 6277632, -1087701, 6743636, 13111461, 5531381, 5465346, 3532074, -5162014,
--2521683, 138513, -1480690, 3783866, -4051765, 6325950, 8170639, 4778688, 332860, -6649146,
-2250026, 2123325, 6577743, 10770167, -11177652, 48993764, -7785165, 1646583, 5051956, -4188130,
--1111860, 11940546, -9613747, -11333345, -6120866, 15535970, 13879724, -38677256, 6968048, 6083285,
-15235860, -10230075, -15476378, -14821932, 10545755, 9440875, -15795816, -8871792, -6707129, 25275346,
-12568148, 6785512, -5357435, -27084600, 7185481, 6267968, 13376676, -3739306, 6945499, -7828652,
-2246805, -23584202, 9266392, 9031779, -2684, -6174553, -14856292, -29223494, 18335216, -12561169,
-9269076, 9416179, 16167868, 1869385, -17864916, 28766618, 5400922, -28971702, -13555454, 16653199,
-3753265, 21934398, 9151502, 3263102, -20646444, -10477573, 11056320, -35807144, 37807524, -27637040,
-1248225, 22441740, -6434935, 44905492, 6508486, 7797513, -16702591, 52381960, 5228049, 33933464,
--23597088, -10855530, -7609072, 12990129, -1687385, -5765994, 23698556, -20206748, 22852448, -27833536,
-5669894, 2403034, 4774930, -5698885, 20132660, -2829847, 10158671, 8766565, 13308493, 7306276,
-3765076, 9086540, 10358924, -8053, 3692598, 791885, -7312719, 8667244, 106837, 5838471,
-12604118, 6018860, 659814, -1036698, 9623948, 10119480, 5114233, -6383932, 21254720, -1372242,
--4418448, -4581657, 13601625, -10849087, 4642860, -2731062, 7258495, 29528, 2943126, 3612604,
--3048890, -2795487, 1978906, 3643206, 3438121, 3825205, 5404143, -5700496, 17769890, 41198936,
-13955422, 26038240, 33046016, -956167, 37830072, -28387586, -9922448, -10406169, -9133785, 4456566,
-6509023, -2017024, -12343199, -24342800, 24184424, 22916334, 9916006, 20744692, -32855962, -28322088,
-10086194, 14206141, -14988362, -21119964, 14166413, -6347425, -30610768, -10931229, -5532455, 15786152,
--28120762, 16225850, 11067594, 12953621, -12966506, -334471, -12824772, -5324686, -37592240, -8781061,
-18743774, -59665148, -18709952, -1832340, -1006096, 2556579, -35840428, -8523899, -54151484, -4058744,
-11095511, -15028627, -16723529, -6563247, 16710644, -5044976, -19329500, -21905944, -56537876, -19771346,
-26916024, -24657408, -37961068, 32544040, -9763534, -42507828, 13303661, 39371428, -20490216, -8903467,
-4984847, -27689118, 35281544, 16059420, 22680112, -11198590, -2216203, 12043625, 33600604, 16068010,
-5513128, -10141492, -2077154, 38371776, 3927748, 6437619, -2539400, -21755620, -9667971, 18315352,
--162672, 1669669, -3388729, -19365470, -1291175, 9174050, -12139725, 15221364, -18843096, -11663521,
-4129074, -6121939, 10103911, 4586488, -17143362, 7698729, 8904541, 5267778, 3498788, -6453189,
-4337917, 418222, -4056060, -11703786, 6295885, 5601174, -1259499, 9886478, -13477607, 2146947,
--12902619, 966905, 3620658, -4006131, -2112587, -33286, 5304822, 1380295, -3763465, 839666,
-46835008, 64849712, -10444287, -2272575, -25769266, -25910464, -44499084, 18507014, -7785702, 64788508,
--14010183, -28383828, -39448200, 2017024, 11893301, -14731201, 11982422, 42276972, -17161078, -7836705,
--30015378, -13770739, 28451474, 32921998, -33745020, -9729175, 16775069, -7475928, 7223598, -10239739,
-41421200, 33230162, 70853536, 22953378, 31132070, -14270029, 22217328, 47900160, 15252503, -3320547,
-10853382, -1867237, 31006442, 16179142, 45388140, 12664248, -46557984, 15989626, 17440252, 37810744,
--21677236, -18336290, 21648246, 23683524, -11775190, 38026568, -13762149, 15476378, -42409044, 26403312,
--10234370, 14397267, 14588930, 33339684, 28675886, -23283018, -24487220, -7926899, 34781720, 35372812,
--13761612, -19881404, -38217692, -4458713, 26309896, 30093762, 19787988, -8977555, -25399362, -23825794,
--4399657, 16337519, -16694538, 22835268, 5383742, 15915538, 2573759, -8296803, 17929340, 11381663,
--2991445, -7843147, 5457830, 15358803, -22635552, 8925479, 10983842, 14978162, 8038568, 21221434,
--7247758, 7429220, -10190347, -14696841, 8257075, 17874044, 15590731, 24028194, -419833, -386547,
-7068980, 6338298, 42849280, 8184597, -1976759, -18867792, -46171, 27441620, 13845364, 21189222,
-12249247, -668404, 260919, -4828617, -290984, 26409218, 21859236, 2240899, 8118025, -2738579,
--4440996, 907312, 11099269, 8420820, 7353521, -5776731, -5647882, 6358162, -16513076, -53391276,
-3159485, 80406080, 47834124, -11876658, -119198768, -17558364, -12576201, 8683887, -14024142, 1639604,
-11864847, -5152350, 4839355, -26446798, 15992848, 19201188, 36190468, -27167816, -33984464, 34008088,
-54432268, 13172128, -24862492, -33183992, -7436736, 7478075, 2632278, 7978439, -224412, 11368778,
-4446902, 35115652, -11858942, -49969796, -21731998, 15076946, 5407364, -17792976, -21922586, 2085744,
-22853520, 40438192, 37483792, -1618666, 293132, 14699526, -14958297, -43319040, 12592844, -27349278,
-50707456, 55093156, -1430761, 14933601, 7715909, 10280004, -25013352, -4450123, 52930640, -20941724,
-237834, -73186240, -9845139, 7255811, 16489453, 14805826, 14746233, -18837190, -11457362, 31765578,
-47707424, -9422621, -2253784, 3672734, 19116362, 22385370, -11026255, 6859600, -26218628, -31802086,
-3019899, 7410966, 11279658, -4809290, -4925254, -6897181, -6719477, 19946364, -205085, -5043902,
--11135776, -1999844, 12939663, 10642929, -6346351, 14955076, 3663070, 23338852, 2007897, 3134253,
-809064, -9842454, -7338489, -5563057, -5689758, -2945811, -7354058, -6462315, 1929514, 19061064,
-23140210, 5494874, 12066711, 3123515, 4285304, 18516140, -14285598, 13682692, 5575405, 23336704,
--6523519, 4956393, 4720706, -11654394, 8035347, -6405944, 8215736, -4458713, 13911399, -6526740,
--8333847, 5064840, 3215857, 1539209, 5658083, 1589138, 9998684, -9664, 3915937, -173409,
-3714073, 1387811, 3233037, 4275640, 4912369, -1441498, 1176284, -804770, 6467147, 2259690,
-4908074, -1056562, 1348620, 826244, 3666828, 151934, 4112431, -1610613, 5600101, -6168647,
--53310744, -22055730, 42681776, 47029892, 44675712, 60555816, 10432476, -26050588, -79852032, -60630980,
--11390253, 16936666, 50661824, 55089936, 26081726, 1238561, -26783416, -23202488, -10268730, 17208324,
-47295644, 26858578, -6196027, 1731409, -3818226, -25942676, -35476968, -29058674, 5488968, 43528956,
-32728724, 65451008, 42599632, 42150808, 59340880, -17268990, -40935872, -46612208, -61869004, -76235672,
--28739236, -8992051, 22681722, 41977936, 60658360, 56651692, 46071040, 29126320, 58273044, -11395085,
--36785320, -1733019, -9344775, 15404974, 17656074, 69517264, 60742648, -22585086, 10924249, -15822660,
--46452220, -13728326, 12379169, -27996744, 43246024, -17317846, 14401025, 3665755, -4891968, 37368364,
-51979840, 41401876, 29185376, -21603686, -52487184, -59805808, 17111150, -25232396, 4650913, -2909840,
-33795488, 5238250, 19152870, -16166257, -36753108, -34202972, -53565220, -46677168, 19877646, 11101954,
-27087284, 40603012, 31722628, 1155346, -23861228, -38671348, -52279416, -28724204, -13282186, -19350976,
-8746701, -7086159, -5971615, -6295349, -15790984, 53150, -6943352, -10669236, -12500502, -8146479,
--1556926, 8252243, -15132244, -9682467, 3118683, 9179956, -3872450, 22256520, 2180233, -119514448,
--125791000, -130835976, -134110888, -177188336, -19280108, -50153944, -12178917, 16506096, 80646064, 91672856,
-94774896, 132698384, 183441280, 175785488, 172740896, 138797232, 100224136, 72837816, 21857088, -83758840,
--40227200, -49497888, -30683246, -100583304, -16734803, -41647224, -45894948, -83232168, -63997160, -65076808,
--58986544, -61582316, -108239080, -95819112, -56584584, -51129976, -64265060, -88972928, -13573170, -77911240,
--147706608, -126525440, -111132816, -58563488, -75517336, -13486734, -152885264, -67681704, -67752032, -31289374,
--22870164, -78702592, 3431142, -78851304, -9579925, 12279311, 36891084, 3305514, 37915436, 56691956,
-89081920, 95020248, 130666328, 85416696, 205079856, 129629632, 238718048, 162337408, 237816096, 275922656,
-327574464, 269124800, 270882528, 305371648, 273936768, 278276288, 270760096, 234825184, 135795056, 108569256,
-76540616, 55870544, 65320548, 97582728, 53716620, -19820738, -34046204, -39198020, -67407368, -87371448,
--106606992, -98105640, -161306624, -156182192, -160951216, -194863744, -171694544, -216455616, -191758480, -224902208,
--231070320, -217597536, -240194432, -217130464, -242545392, -192454256, -188666640, -156304592, -166918000, -171956528,
--121000504, -108269680, -82844552, -42172284, 14019310, 46000172, 40226664, 51495048, 45999636, 52050708,
-59733332, 85480584, 102659384, 92863096, 83463560, 102145056, 94983736, 117499568, 106909256, 78176992,
-71108016, 61879740, 54460184, 34305516, 25991532, 24237038, 15188078, 16736414, 6582575, 10861435,
-9470403, 6522445, 9510131, 6947110, 4096325, 1489280, -3804804, -588947, -148713, -10206453,
--16306380, -9359807, -8235600, -10747082, -10559177, -6575595, -7858180, -11259794, -15076946, -11584601,
--7606387, -6247030, -4045322, -4896263, -3707094, -650151, 3100967, 5426691, 4970351, 2710661,
-2294586, 5697811, 8583492, 6097243, 5935108, 2856690, 1320703, 3639985, 3057480, 3113315,
-2414845, 2506650, 1003412, -1867237, 2601677, 6408628, 6189585, 7444789, 8042327, 11662984,
-13684840, 13884556, 14847165, 15737834, 17164300, 18609556, 18673444, 17501992, 16856672, 18556406,
-15053324, 13044353, 11529303, 9912248, 6659347, 5365488, 2188823, 1528472, -294205, -3491272,
--6594386, -9566503, -10395431, -13165149, -13584982, -13288629, -13372381, -14816563, -15610059, -14462765,
--14071387, -12804908, -11777337, -10839961, -9656160, -7499013, -5458367, -4122095, -3292629, -2326262,
--1780801, -1297617, -1126355, -866510, -812286, -743029, -675384, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+1492501, -5924371, 1986422, -3758633, 944893, -2459943, -1562831, -3277597, 2268280, 3934190,
+1120450, 1202054, -7319698, 1398549, 99858, 2235531, 2755222, 1493575, 4161823, -917512,
+-2368675, 408559, 4980552, -2147, -3859028, -419296, 4237522, 2282238, 436476, 8053,
+1177358, -141734, 304406, 791885, -155693, -1554778, -199716, 4832, 1654636, -2528125,
+-5887864, 4299799, 4308926, 3749507, 3525095, -214748, 1916092, 3351148, -3576097, -832687,
+-108985, -4767414, 1054951, 317291, 4272956, 415001, 2389613, 43487, 5377836, 2709051,
+-802622, 3759707, 2278480, -1257352, -4415764, 1074279, 1137093, -1190780, 318364, -2528662,
+-665720, 2225330, 1559073, 1844689, 4436165, -764504, -1411434, 580894, 2634963, 6077916,
+-3598109, 1602023, 1641751, 1753420, -192200, -435402, 1877975, -1077500, 43487, 869731,
+-1156957, -223338, 165893, 295279, -756988, -1156957, 706522, -301185, 134218, -438624,
+1110249, -165356, 1322313, -340913, 1176284, -52076, 1112397, 11312944, -7581154, 2542621,
+6362457, 1480153, 4480188, 5431523, -4958003, 1029182, -464930, 2108292, -6283537, -4985920,
+-942208, 4867272, 6593312, -2541010, -2203318, 3160559, -5381057, -7182796, -1341104, -8445516,
+2872796, 2793339, 746787, -5249524, -5352603, 1890323, -3124052, 715112, -177704, 5555004,
+5849746, 5296232, -883690, 3710315, -5831492, 2523293, -3448859, -319438, 283468, 4533875,
+-4924180, -4355097, 6442, 5965710, 2433099, 2328946, -3643743, 2019708, 1450088, -1762010,
+-7490423, -1211718, -2561948, -3279745, -2983929, 3419868, -3172907, -1015760, 743029, 2123861,
+5322002, -2053531, -162672, -4041564, -1995012, 838056, -5636608, -346282, 1490891, 3831648,
+-1255204, -2901787, -1506460, -5828271, 2720325, 1712618, 297963, -472446, -5079873, 2077690,
+375810, -1792075, 1790465, -712965, 403727, 1675574, 121870, 351650, 1899986, 872952,
+356482, 57982, 1512902, 581968, -340376, 651224, 866510, 1803886, -3874061, -7121056,
+-1682554, 1371168, -2110977, -3543348, -1909113, -7098507, -3943854, 7757785, -183610, -3260954,
+4170413, -5992553, -1278290, -7504919, -1463510, -5888400, -3020973, 7183870, 492848, -1315871,
+-7845832, -4848481, -1675574, -3293166, 1470489, -4121021, 537945, 2760590, 8570070, 4265440,
+3291019, 3779571, 6961068, -5623723, 55835, -1599339, -4306242, 1950989, -782221, -1602023,
+-4512937, 2541547, 4998805, 635118, -3416110, -2144263, 12601971, 177704, -3460133, -4868883,
+-7356205, -9844602, -1118302, -5043902, 1323924, -886374, 2912525, 644782, 1474248, -4454418,
+812286, 876173, 6164889, 2167885, -4387846, 381178, -1276679, -1213865, -948114, 2285996,
+3366181, 3298535, -2828236, -2752537, 1946694, 991064, 1318555, 1434519, -1020055, -4293894,
+-5062156, -485331, 1068910, -1110249, 672699, 165356, -572841, -965294, -1495186, -502511,
+-179852, -848256, -1675574, 283468, 723165, -848793, 477815, -730681, 305480, -947577,
+-405338, 343061, 418759, -1168231, 328565, -363462, -2198487, 373662, -684510, 1442572,
+-880468, -571768, -221728, -17494476, 6842957, -3179350, 2860448, -7277285, -2960306, -5712307,
+-5219996, 286689, -1678795, -3606162, 8831527, 2234994, -872415, -5456219, -1751273, 2428267,
+-6216429, -3338800, -5921150, -3343632, 8445516, 753230, 5618354, -616865, -98247, -1502702,
+1564442, 1490891, -4543002, -23085, 1311039, 2458869, 9175661, -4897874, -5619428, -1187559,
+10154913, 3122441, 10810970, 874026, 965294, -2003602, 5324686, -1018444, 7866770, -892279,
+-950262, -1510218, -3316252, 3265786, 990527, -2910914, 2268817, 2881386, 5457830, -3264712,
+-302795, -1079647, 4860293, -2092723, -846645, -1937030, -1271847, 1076426, -1620276, 467078,
+805843, -1294933, 1190780, -8193724, 758599, 5153424, 1829119, 6936909, 557809, 641024,
+1683090, 4379256, 7173669, -4862440, 679142, -484258, 1687922, -336618, -186831, 2040646,
+4652524, 1678259, 2281165, 135828, -812823, -1330366, 629750, 2244121, -827855, 954557,
+1080184, 997506, -41876, 362388, 1985349, -469225, 527207, -199179, 2293513, 1207423,
+-732292, -260382, 2469606, 1131724, -725850, 1678795, 1018981, -2318209, -3625489, -1736241,
+26844, -8514236, -1333051, 185220, -4182225, -15150497, -3590593, -3186866, -6538551, -1195075,
+-1599875, 9654013, -3204046, 7325067, 3494493, 5311264, -9697499, -4307316, -9799505, -9109626,
+104153, 1831267, 5879274, -2683281, -4219806, -2567317, -6589554, 1530619, 3164317, 3604551,
+2275259, -1937030, 2612414, -4378183, 597000, -7974144, 3028489, -1988033, 1219771, 1869921,
+3129958, 3307662, -2966749, 212064, 7930120, -4098473, 3904125, 4063576, -142808, 2468533,
+3961034, -1499481, 1631014, 3874061, 324807, 6764574, -3380676, -4539244, -2120103, 2267206,
+98784, -8796630, -4387309, -9756018, -10590316, -1744294, 3015604, -8647917, 4009889, -1339493,
+-35433, -2911451, 3042984, -5116917, -711354, -1739999, -7208029, -6387153, -2020245, 3908420,
+244276, 3360275, -1263794, 2199023, 1824824, -3987340, 143881, -737124, 2415382, -2668785,
+-4452808, -1431835, 745714, 58519, -1638530, 839129, -969589, -356482, 853088, -186294,
+175557, -38655, -914828, -172872, -883690, -623307, -526670, 27380, 597537, 104690,
+1427540, 547608, -502511, 5014911, -14106283, -595927, 4504347, 2871186, -7441031, -832150,
+-4699231, 1317481, 1537598, 1112933, -8131447, -10937134, -7409893, 1369558, -5901822, 6649683,
+2183991, -10532334, 7771207, 6797323, 5425081, 4838281, -5163625, 8713952, 2391760, 7516,
+-3251290, 2990908, 5290863, -4675072, -6853157, 2647311, -2512019, -8567386, -1035087, -8266739,
+-2917894, 15158013, -3904662, -6718403, -8288213, 533650, 1500554, 6067715, 2518998, -5464809,
+5157182, -581968, -4211753, -5687611, -5971615, 9356049, 4294968, 5916318, -4294431, -6009196,
+2875481, 1557463, -6102612, -264677, -3686693, 6061273, -1016834, 583579, -7231651, 4756140,
+4089346, -4152160, -2552821, -2561948, 8499740, 140660, 1377611, -2373506, 5874979, -5807870,
+-9782862, -4400731, 1018981, -1871532, 5573794, -1082869, -465467, -5765457, -2898566, 2535105,
+492848, -4099546, -2530810, 3541201, 2062658, -1099512, 318901, 69256, 166430, -1120450,
+1695975, 690416, 2544768, 387621, 584116, 91805, 1201517, -480499, 1660542, -1946157,
+2212445, -223338, -1101122, -7836705, -548145, 1662689, -2126546, -6310381, -9254581, -7463043,
+7077569, 626528, 8725226, 10449655, 10150081, 1347009, 14012868, 3190087, -1791001, 6354404,
+4812511, 12920872, 1686848, 7333120, -10581726, 16850768, 12357158, 5847061, -5388574, -4336843,
+5965710, 1198296, 4223027, -2765422, 7162395, -2426120, -2112050, 6397354, 5181878, -6971269,
+4343286, -2031520, 6975027, 7564511, -15479599, -3045669, 9229348, 2614561, 4939213, 3812857,
+9139154, -4734665, 3554086, -52613, -8041790, -4057670, -401579, 1410897, -11718281, -1203665,
+7112466, -5989869, 12064563, 8952322, -3878892, -333397, 2170569, 4368519, 6973417, -2994129,
+-2484639, 11360725, -2911451, -463320, 4871030, 12885, 6607807, 5172215, 2061047, 3505230,
+3739843, 3500398, 1559610, 1358283, -1778653, -2931315, -1300301, -2690797, -453656, -1948305,
+1122597, 931471, -2616172, -2168959, -451508, 1641214, 3631395, 2935610, 1637993, 131533,
+1728188, -3490735, -1626719, -1981054, 571231, -1500017, 1538135, -4022774, 263604, -296890,
+3124052, 1077500, 15032, 336081, 3245922, 808528, -3071439, 738198, -413391, 560493,
+2719251, -314069, 754841, -275415, 29577830, -15651398, 2049236, 12123082, -1290638, 318364,
+16097001, 17642652, 2001992, -1480153, 3633542, -980863, 3913252, 4976794, -6594386, -2120103,
+10393284, 9133248, -4424353, -8577050, -9125195, -9504763, -5153424, 7656316, -6088116, 3280818,
+328565, -11091216, -826244, -7419556, -962610, 2999498, 4720169, -14348949, -6760816, -11455752,
+-3597035, 16991964, 2387465, -1693291, 1441498, -1704028, 766652, 4910222, 2892124, 8403640,
+-535260, 6238977, 3734474, -6123013, 3712462, -9238475, 186831, -9280887, -9577240, 3431679,
+-10528575, 4236449, -185757, 5162014, 4177930, 3673808, -5645735, 6339372, -9546102, -372588,
+-4427038, -1656247, 11859478, 246424, 5912023, 5725729, -1260573, -2448131, 4560719, -10035728,
+3900904, 9182640, -14001057, -10450192, -2887292, 6892886, -692564, -8776229, 3205656, -1450625,
+3648575, -3361349, 1101122, -1999844, 6133214, -1356136, 5640366, 2923799, 5268851, 1620813,
+1449015, -2996277, 3566434, 1378685, -134755, 1885491, 1804423, -1250372, 2665027, 1873680,
+-1305670, -1628866, -4566087, -1180042, -2605435, -323196, -110059, -1780264, 2355253, -1042066,
+1387274, 259309, 4778688, -4011500, 1793149, 561567, 216359, -601295, -17520246, 3508452,
+4491999, -11767674, 5619965, 127775, 12763569, -3105261, -6175089, 5521181, -15307800, -5129802,
+13296682, 5949604, -7758322, -18956912, 8739722, -2458869, 4892505, -12020003, -16000364, -10790032,
+14227079, 1357210, 7939784, -1139240, -7221988, -10810970, 5401458, -2730526, -9386651, -11004243,
+1015223, -9800578, -7493644, -3992172, -1777043, -10635950, 6278706, 7458211, 10009421, -4483409,
+8920110, -6813429, 13998372, -2359011, -533113, 10718091, 5612449, -2396592, -6862821, -3334505,
+10353556, 2552821, -7336341, 3810173, 10986526, 10397579, 4588636, -12252468, -13549011, -1026497,
+2881923, 1059783, -9693741, 3172370, 11140608, 3368865, -4447976, -17415018, 4921496, -7461969,
+-16973174, 739808, 1131724, -9509058, 14183056, -807991, -5530308, -18847928, 98784, -5405217,
+-667331, 7352447, -4046933, -7084549, -269509, 1839857, 1946694, -5575942, -5633924, -5615133,
+2369748, -4820564, 540629, -708133, 1045825, -1198296, 1634235, 2756832, 2503966, 3122978,
+1678259, 5457293, 6920266, 573378, 2199560, 1423782, -2375654, -532039, -1892470, 1014686,
+967441, 589484, -6263136, 963683, -316217, -2174327, -73551, -1934883, 2196876, -2408403,
+-2494302, -1831267, -21760988, 13952201, 10799695, 11878806, 1843615, 12546136, 1438814, -7718056,
+-8976482, 1590749, 10091563, -6627135, 2490007, -14579266, 10333154, 10983305, -5233955, -2829847,
+2675228, 12013024, 8784819, -5854578, -5252745, 8295730, -9481677, 3591130, -13033078, 234613,
+-3706020, -17471390, -18092550, 3814468, 10761041, 5164162, -15416785, -8151311, 12154757, -12962748,
+-5283884, 10895795, -2648921, 13554380, -4452271, -8973797, 3704409, -13178570, 15729244, -1349694,
+2962991, -6961605, -3475166, -323733, -14344654, -8579734, 1379758, -2048699, 1661079, -4393752,
+-15242839, 3234110, -12586402, 6043019, -3021510, 9573482, -15216532, 7282654, 2836289, -4041027,
+11687143, -1098975, -7705172, -14794015, -1851668, 3690451, -12036109, 9394167, -8075076, 6225555,
+-15912854, -16091632, 8005282, 6608881, -6407555, -4813048, 5398774, 3935264, -3333968, -2563559,
+-4270808, -5341329, -367220, -8809515, -819802, -961536, 836982, 2909304, -1555315, 2940442,
+-1628330, -204011, -4824322, -2093797, -1214402, -276489, 7455527, -1804960, -900869, 4602058,
+-4453881, 3541201, 1947231, -1403917, -993748, -4233764, -4150012, 184147, -2383707, 1025423,
+396748, -1677722, -2929168, 7162395, -6970195, 2381559, 8523899, 12586402, -3326452, 1396401,
+-4467840, -16807280, -3590056, -3597572, 7302518, -14762876, -43487, -8516920, 9162239, -10327249,
+-14083198, 9367861, 4300873, 6094559, 19396072, -3197066, -5562520, 5474473, -12424267, -14489072,
+1193464, 18564460, 5645735, 10423886, -7406671, -9109089, -14759655, 2953327, 18846316, -8442832,
+9850507, 2268280, 14653892, -22416508, -7129109, -371515, 2632815, 12774843, 6158983, -17082158,
+-4629438, -7925289, -679679, -19668802, -3095598, -7076496, 1357210, -10348724, -690416, 2409477,
+-28724742, 3297998, -9008694, 1770063, -11372000, -612570, 7060390, 3615826, -3870303, -3632469,
+-15151034, 15235323, 14627048, 4833449, 3643743, -13133473, 20059108, 6997039, 10337986, -3940633,
+-31590558, 12321724, -1088237, 23707146, 22252762, 7033546, -2865817, 9819369, 512712, 8601746,
+455803, 998043, -5596343, 2688650, -5113159, -2713346, -1431298, 10346576, -155156, 639950,
+2645700, -638876, -5586142, -2852395, 942745, 4206921, -1981591, 2103997, -3283503, 4378183,
+-3435437, -5248987, -2690260, -742493, 2451890, 972810, -1140851, -897648, -1167157, 6836514,
+-1500017, 411780, 1117228, 3419331, 27197344, 9589588, 18613314, -18063558, 4197794, 18979460,
+-5704254, -6840273, 2682744, -11737072, 8961986, 2270964, -13707388, -17948668, -1348620, 15223512,
+-394063, -1226750, 9960566, -14872935, -3789235, -12243341, 6876780, -20864414, 344134, -4460861,
+7588134, -21791590, -15055471, -9522479, 6386617, 7012608, 4853850, -7069516, 5295158, -5259725,
+6460168, -4314832, -1909113, -1501091, -6119792, 4145180, 9643275, 5740761, 9708237, -800475,
+-9418326, 1341104, -9378061, 24981140, -6314676, -24575802, -7656853, 6715718, 21344376, -21365852,
+-8809515, -1393717, 13724568, 877247, -30235496, -3714073, 13952738, 28815472, 1066763, 20060182,
+28903520, -2152852, 9303973, 13654775, -3780645, 24630026, -3310883, 29743722, 4736812, -8175470,
+-25797722, -16162499, 191663, 7756174, 3706020, -3929895, -5013838, -8019241, -10941966, -9727027,
+11832635, 3457449, -144418, -16965658, -1916629, 620086, -3096672, -9650792, 2517388, 5101885,
+-1461363, -5004174, -3648038, -9455907, -5707475, -2784750, 5953362, -1173063, -5145908, 5150740,
+-7392713, 5308580, 5365488, -4638565, -8959839, 8181376, 12164421, 1855963, 373125, 733366,
+7088307, -2121177, -8473434, 992674, 8216273, 6799470, -8412767, -7150047, 1312649, 1342714,
+122407, 2427194, -1313723, 11399380, 13807246, -23792508, -23147190, 6088116, -5429376, 698469,
+-9234717, 21537114, -9724880, -6226092, 7458748, 5371931, 171262, -9892383, -7255274, -12031277,
+4800700, -724776, -5840082, -987306, 14305999, 21508122, -23328652, -1517197, -22757958, -2450816,
+-5908802, 22494354, -9546639, -9120900, -4411469, 13677860, 4517769, 3751654, 5713380, 5454072,
+-4103305, 238371, -2982855, 3628711, -2722473, 21054466, -5525476, 5565204, 14816027, -7764764,
+-17071958, 3759707, 5776731, -6026913, -6565395, -1457068, 3475166, 10663867, -14625974, 19531364,
+28742994, 19297288, -8104067, -11674795, -26667988, -34410204, -12676059, -164283, -6247567, -1775969,
+-3942780, 8185671, -741419, -13312251, 6944425, -5914707, -1293859, 12581033, 21013664, -5187247,
+5884642, -3737695, 1123671, 19122806, 9648644, 16349330, 16650514, -13365938, -4130685, -3090229,
+443992, -341987, 5907191, 373125, 3609920, 16763794, 670015, 7813083, -3590593, -3724274,
+-6911676, -2149094, 948651, 7616051, -2154463, -6404870, -3025268, 3648038, -2675228, -1463510,
+-2003065, 2291365, 576599, -2507187, -1364189, 1683090, 820876, 844498, 9659918, -4001836,
+209917, 1223529, 110059, -5379984, 2414845, 2984466, 6156836, -12347494, 23041962, 10311143,
+13066901, 19665582, 30434676, -11826729, 15701327, -31532040, -3968550, -14196478, -30990874, 12410845,
+7218230, 9316321, 4032974, 12154757, 3638374, -22325240, 18624052, 32986960, -5049808, -5412196,
+7999914, 3195993, -7010997, -29579976, 2314451, 13959, -2784213, 308164, 9929964, -21172042,
+4460324, 5898064, -4440996, -12249784, -6033892, -13641890, 13696114, -30361124, -4496294, -19559282,
+10706817, 4289062, 10858751, -3940633, 2877628, -7827578, 18417894, 5492190, 15099494, -13922673,
+14839649, -423591, -14748918, 30151744, -5123359, 3619584, 20307680, -19704236, 22775674, 13597866,
+-18053896, 7488813, -6972880, 9979357, -24968256, 18088254, 2460480, 6306086, -2448131, 5806796,
+-20299626, 12775917, 22803592, -45610944, 4537096, 43848396, -28486908, -9178882, 2983929, 21338472,
+15065672, 5211406, 13147969, -6056978, 7880728, -3398393, -9834938, 4741644, -2293513, -1697049,
+8138963, 11922292, -1149441, -4719632, -4119948, 3488587, 7521562, -10198937, -3925063, -6994891,
+-4443144, -9121437, 8946417, 11932493, -2653216, 5469641, -3536369, 2196876, 7499550, 8567923,
+-10041634, 806380, 3542811, -5238250, 7752953, 376347, -287226, 7114077, 3519726, -8607114,
+-7314330, 2423972, 1013075, -2605435, 1329829, 18446348, -11157788, -13433584, -424128, -12860206,
+-5848135, -33989836, -29018946, -4002373, -16648904, -19978040, -14416058, 8876087, -5135171, -10113574,
+-16248935, 15007153, 1004486, -24539296, -3875134, -137439, -11684995, -3672734, 9956271, 7162932,
+-1732482, 93416, 459025, -6156299, 5228586, 11462731, -4305168, -2729452, 17582522, -33043868,
+-5395016, 9308805, 35229468, -14585709, -9155797, -13139916, -17898202, 7808788, 37381248, 6954626,
+23148264, 4793721, -3822521, -1944010, -2787434, -18033494, 3934190, 4095788, -14712947, 3268470,
+29185376, -4724464, -9034464, 4913443, -10515691, -2390686, 25738128, 38109244, 10251013, 22885734,
+26400628, -9361955, -11070815, 3031173, -8767102, 1522566, -26181046, -213138, -20411296, 6216965,
+4212826, 12435541, -21251498, -7904888, -7278896, -8288213, -6687801, -7414724, 11764989, 2569464,
+15175730, -3842385, 5752572, 15246597, -2850248, 564251, -2264522, -6017786, -4919348, -801011,
+-3733937, -5528160, -159451, 2333241, -2942053, 1056025, 7041062, -7100118, -6561637, 521839,
+5256503, 2800319, -3503620, -10531797, -10359998, -1223529, 2330557, -6230924, -3579318, 2257005,
+-2216740, 1150514, 661425, 7271380, 2334315, 1883880, -8013872, 8814884, -3785477, -8501888,
+26737246, 30245696, -12577812, 68828464, -9819906, 1272921, -13112535, 7831873, -5732171, 7726646,
+17435420, 4725538, -16884590, -9300752, -17628694, -592169, -12074227, -21740588, 2551211, 13606993,
+-2677375, 3746285, 6276021, 7856569, -452045, -6483790, -8406862, 3808562, -380105, -10984379,
+3867618, 29426432, 20679730, 11647414, -25535192, 17805860, 13821205, -6940667, -8021389, -8005282,
+-10413148, -4632659, 7839926, -18540836, 1415192, 1982664, 10621454, 28045062, 5142150, 5583458,
+1211181, -3680787, -6065031, 12000139, -7781944, 28326384, 8873939, -3054259, 12202002, 2095407,
+-19617800, -14159433, 15935402, 18470506, 6638409, -4976257, 12140799, 13134010, 18784040, 37072012,
+3679176, -11020349, -19534048, -13109851, 9377524, 1831804, 2816962, -2055142, 12813498, 1118302,
+-1921461, -17710298, -8915278, 17883706, 20045150, -7531762, -14159433, -16798154, -5108864, 8599061,
+5264556, 1365263, -5908802, 1171989, -319975, -7582228, -243739, -16425029, -4513474, -877247,
+11292006, -2347200, -3817689, -168577, 9103183, -5887864, 6439230, -3753802, -7891466, 6324340,
+8996346, 5739687, 6277632, -1087701, 6743636, 13111461, 5531381, 5465346, 3532074, -5162014,
+-2521683, 138513, -1480690, 3783866, -4051765, 6325950, 8170639, 4778688, 332860, -6649146,
+2250026, 2123325, 6577743, 10770167, -11177652, 48993764, -7785165, 1646583, 5051956, -4188130,
+-1111860, 11940546, -9613747, -11333345, -6120866, 15535970, 13879724, -38677256, 6968048, 6083285,
+15235860, -10230075, -15476378, -14821932, 10545755, 9440875, -15795816, -8871792, -6707129, 25275346,
+12568148, 6785512, -5357435, -27084600, 7185481, 6267968, 13376676, -3739306, 6945499, -7828652,
+2246805, -23584202, 9266392, 9031779, -2684, -6174553, -14856292, -29223494, 18335216, -12561169,
+9269076, 9416179, 16167868, 1869385, -17864916, 28766618, 5400922, -28971702, -13555454, 16653199,
+3753265, 21934398, 9151502, 3263102, -20646444, -10477573, 11056320, -35807144, 37807524, -27637040,
+1248225, 22441740, -6434935, 44905492, 6508486, 7797513, -16702591, 52381960, 5228049, 33933464,
+-23597088, -10855530, -7609072, 12990129, -1687385, -5765994, 23698556, -20206748, 22852448, -27833536,
+5669894, 2403034, 4774930, -5698885, 20132660, -2829847, 10158671, 8766565, 13308493, 7306276,
+3765076, 9086540, 10358924, -8053, 3692598, 791885, -7312719, 8667244, 106837, 5838471,
+12604118, 6018860, 659814, -1036698, 9623948, 10119480, 5114233, -6383932, 21254720, -1372242,
+-4418448, -4581657, 13601625, -10849087, 4642860, -2731062, 7258495, 29528, 2943126, 3612604,
+-3048890, -2795487, 1978906, 3643206, 3438121, 3825205, 5404143, -5700496, 17769890, 41198936,
+13955422, 26038240, 33046016, -956167, 37830072, -28387586, -9922448, -10406169, -9133785, 4456566,
+6509023, -2017024, -12343199, -24342800, 24184424, 22916334, 9916006, 20744692, -32855962, -28322088,
+10086194, 14206141, -14988362, -21119964, 14166413, -6347425, -30610768, -10931229, -5532455, 15786152,
+-28120762, 16225850, 11067594, 12953621, -12966506, -334471, -12824772, -5324686, -37592240, -8781061,
+18743774, -59665148, -18709952, -1832340, -1006096, 2556579, -35840428, -8523899, -54151484, -4058744,
+11095511, -15028627, -16723529, -6563247, 16710644, -5044976, -19329500, -21905944, -56537876, -19771346,
+26916024, -24657408, -37961068, 32544040, -9763534, -42507828, 13303661, 39371428, -20490216, -8903467,
+4984847, -27689118, 35281544, 16059420, 22680112, -11198590, -2216203, 12043625, 33600604, 16068010,
+5513128, -10141492, -2077154, 38371776, 3927748, 6437619, -2539400, -21755620, -9667971, 18315352,
+-162672, 1669669, -3388729, -19365470, -1291175, 9174050, -12139725, 15221364, -18843096, -11663521,
+4129074, -6121939, 10103911, 4586488, -17143362, 7698729, 8904541, 5267778, 3498788, -6453189,
+4337917, 418222, -4056060, -11703786, 6295885, 5601174, -1259499, 9886478, -13477607, 2146947,
+-12902619, 966905, 3620658, -4006131, -2112587, -33286, 5304822, 1380295, -3763465, 839666,
+46835008, 64849712, -10444287, -2272575, -25769266, -25910464, -44499084, 18507014, -7785702, 64788508,
+-14010183, -28383828, -39448200, 2017024, 11893301, -14731201, 11982422, 42276972, -17161078, -7836705,
+-30015378, -13770739, 28451474, 32921998, -33745020, -9729175, 16775069, -7475928, 7223598, -10239739,
+41421200, 33230162, 70853536, 22953378, 31132070, -14270029, 22217328, 47900160, 15252503, -3320547,
+10853382, -1867237, 31006442, 16179142, 45388140, 12664248, -46557984, 15989626, 17440252, 37810744,
+-21677236, -18336290, 21648246, 23683524, -11775190, 38026568, -13762149, 15476378, -42409044, 26403312,
+-10234370, 14397267, 14588930, 33339684, 28675886, -23283018, -24487220, -7926899, 34781720, 35372812,
+-13761612, -19881404, -38217692, -4458713, 26309896, 30093762, 19787988, -8977555, -25399362, -23825794,
+-4399657, 16337519, -16694538, 22835268, 5383742, 15915538, 2573759, -8296803, 17929340, 11381663,
+-2991445, -7843147, 5457830, 15358803, -22635552, 8925479, 10983842, 14978162, 8038568, 21221434,
+-7247758, 7429220, -10190347, -14696841, 8257075, 17874044, 15590731, 24028194, -419833, -386547,
+7068980, 6338298, 42849280, 8184597, -1976759, -18867792, -46171, 27441620, 13845364, 21189222,
+12249247, -668404, 260919, -4828617, -290984, 26409218, 21859236, 2240899, 8118025, -2738579,
+-4440996, 907312, 11099269, 8420820, 7353521, -5776731, -5647882, 6358162, -16513076, -53391276,
+3159485, 80406080, 47834124, -11876658, -119198768, -17558364, -12576201, 8683887, -14024142, 1639604,
+11864847, -5152350, 4839355, -26446798, 15992848, 19201188, 36190468, -27167816, -33984464, 34008088,
+54432268, 13172128, -24862492, -33183992, -7436736, 7478075, 2632278, 7978439, -224412, 11368778,
+4446902, 35115652, -11858942, -49969796, -21731998, 15076946, 5407364, -17792976, -21922586, 2085744,
+22853520, 40438192, 37483792, -1618666, 293132, 14699526, -14958297, -43319040, 12592844, -27349278,
+50707456, 55093156, -1430761, 14933601, 7715909, 10280004, -25013352, -4450123, 52930640, -20941724,
+237834, -73186240, -9845139, 7255811, 16489453, 14805826, 14746233, -18837190, -11457362, 31765578,
+47707424, -9422621, -2253784, 3672734, 19116362, 22385370, -11026255, 6859600, -26218628, -31802086,
+3019899, 7410966, 11279658, -4809290, -4925254, -6897181, -6719477, 19946364, -205085, -5043902,
+-11135776, -1999844, 12939663, 10642929, -6346351, 14955076, 3663070, 23338852, 2007897, 3134253,
+809064, -9842454, -7338489, -5563057, -5689758, -2945811, -7354058, -6462315, 1929514, 19061064,
+23140210, 5494874, 12066711, 3123515, 4285304, 18516140, -14285598, 13682692, 5575405, 23336704,
+-6523519, 4956393, 4720706, -11654394, 8035347, -6405944, 8215736, -4458713, 13911399, -6526740,
+-8333847, 5064840, 3215857, 1539209, 5658083, 1589138, 9998684, -9664, 3915937, -173409,
+3714073, 1387811, 3233037, 4275640, 4912369, -1441498, 1176284, -804770, 6467147, 2259690,
+4908074, -1056562, 1348620, 826244, 3666828, 151934, 4112431, -1610613, 5600101, -6168647,
+-53310744, -22055730, 42681776, 47029892, 44675712, 60555816, 10432476, -26050588, -79852032, -60630980,
+-11390253, 16936666, 50661824, 55089936, 26081726, 1238561, -26783416, -23202488, -10268730, 17208324,
+47295644, 26858578, -6196027, 1731409, -3818226, -25942676, -35476968, -29058674, 5488968, 43528956,
+32728724, 65451008, 42599632, 42150808, 59340880, -17268990, -40935872, -46612208, -61869004, -76235672,
+-28739236, -8992051, 22681722, 41977936, 60658360, 56651692, 46071040, 29126320, 58273044, -11395085,
+-36785320, -1733019, -9344775, 15404974, 17656074, 69517264, 60742648, -22585086, 10924249, -15822660,
+-46452220, -13728326, 12379169, -27996744, 43246024, -17317846, 14401025, 3665755, -4891968, 37368364,
+51979840, 41401876, 29185376, -21603686, -52487184, -59805808, 17111150, -25232396, 4650913, -2909840,
+33795488, 5238250, 19152870, -16166257, -36753108, -34202972, -53565220, -46677168, 19877646, 11101954,
+27087284, 40603012, 31722628, 1155346, -23861228, -38671348, -52279416, -28724204, -13282186, -19350976,
+8746701, -7086159, -5971615, -6295349, -15790984, 53150, -6943352, -10669236, -12500502, -8146479,
+-1556926, 8252243, -15132244, -9682467, 3118683, 9179956, -3872450, 22256520, 2180233, -119514448,
+-125791000, -130835976, -134110888, -177188336, -19280108, -50153944, -12178917, 16506096, 80646064, 91672856,
+94774896, 132698384, 183441280, 175785488, 172740896, 138797232, 100224136, 72837816, 21857088, -83758840,
+-40227200, -49497888, -30683246, -100583304, -16734803, -41647224, -45894948, -83232168, -63997160, -65076808,
+-58986544, -61582316, -108239080, -95819112, -56584584, -51129976, -64265060, -88972928, -13573170, -77911240,
+-147706608, -126525440, -111132816, -58563488, -75517336, -13486734, -152885264, -67681704, -67752032, -31289374,
+-22870164, -78702592, 3431142, -78851304, -9579925, 12279311, 36891084, 3305514, 37915436, 56691956,
+89081920, 95020248, 130666328, 85416696, 205079856, 129629632, 238718048, 162337408, 237816096, 275922656,
+327574464, 269124800, 270882528, 305371648, 273936768, 278276288, 270760096, 234825184, 135795056, 108569256,
+76540616, 55870544, 65320548, 97582728, 53716620, -19820738, -34046204, -39198020, -67407368, -87371448,
+-106606992, -98105640, -161306624, -156182192, -160951216, -194863744, -171694544, -216455616, -191758480, -224902208,
+-231070320, -217597536, -240194432, -217130464, -242545392, -192454256, -188666640, -156304592, -166918000, -171956528,
+-121000504, -108269680, -82844552, -42172284, 14019310, 46000172, 40226664, 51495048, 45999636, 52050708,
+59733332, 85480584, 102659384, 92863096, 83463560, 102145056, 94983736, 117499568, 106909256, 78176992,
+71108016, 61879740, 54460184, 34305516, 25991532, 24237038, 15188078, 16736414, 6582575, 10861435,
+9470403, 6522445, 9510131, 6947110, 4096325, 1489280, -3804804, -588947, -148713, -10206453,
+-16306380, -9359807, -8235600, -10747082, -10559177, -6575595, -7858180, -11259794, -15076946, -11584601,
+-7606387, -6247030, -4045322, -4896263, -3707094, -650151, 3100967, 5426691, 4970351, 2710661,
+2294586, 5697811, 8583492, 6097243, 5935108, 2856690, 1320703, 3639985, 3057480, 3113315,
+2414845, 2506650, 1003412, -1867237, 2601677, 6408628, 6189585, 7444789, 8042327, 11662984,
+13684840, 13884556, 14847165, 15737834, 17164300, 18609556, 18673444, 17501992, 16856672, 18556406,
+15053324, 13044353, 11529303, 9912248, 6659347, 5365488, 2188823, 1528472, -294205, -3491272,
+-6594386, -9566503, -10395431, -13165149, -13584982, -13288629, -13372381, -14816563, -15610059, -14462765,
+-14071387, -12804908, -11777337, -10839961, -9656160, -7499013, -5458367, -4122095, -3292629, -2326262,
+-1780801, -1297617, -1126355, -866510, -812286, -743029, -675384, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
17017198,
-2232309, -5614059, 2633889, 2989834, 1023813, -7104413, 3218541, 5006858, -5430450, -1642825,
--6649683, -1478543, -2834142, -2451890, -970663, 346282, -245350, 653372, 2370822, -2976949,
-1307281, -6817724, 2325188, 4154844, 874563, -1809255, -5523865, 3578782, -2434710, 5802501,
-4955856, -237297, -2326262, 4725538, 5523328, 4429722, 4489852, 1095217, -3467112, 1058173,
-4246649, -1812476, -3621731, 3216394, 5122822, -2281702, 2668785, -5871757, -496069, -5153961,
-3485366, -6852084, -1857573, -1299765, 2323041, 3374234, 2397129, -223875, -3631932, 413391,
--5019206, -3333968, 902480, -650151, -3031710, 1618666, 1682017, 399969, 3145527, -2843805,
-1346472, -3830574, -1520955, -1648194, 2079838, -2001992, -4034585, -1835025, -1511829, 5500243,
-4743792, 1174137, -2538863, 295279, -307627, 933619, 1897302, 317828, 94489, 302795,
--91268, 46708, -724239, 518080, -2131378, 64961, -174483, 837519, 443992, -689342,
--939524, 156766, 369904, 367220, -179852, 19327, -428423, 9742060, -9768903, 396211,
-197569, -2454574, -2915209, -3105261, 1038308, -5493800, -5420786, 795643, 2668785, -176094,
-3157875, 2469069, -2969970, 1260573, -10718628, -2601140, -2377265, -2472291, -3362960, -3707094,
--9444096, -7327214, 1033477, 2245194, -484794, 5155035, 4123169, 1754494, -1800128, -991601,
-4825933, -1823751, 619549, -668404, -5019206, 1719598, -1663763, -3403762, -1303523, 4156992,
-9988483, -3766150, 1137630, 2459406, -1817845, 3171297, 1427540, -3447248, 2055142, -8199093,
--3787088, 128312, 3393024, 5266704, -3180960, -1451162, -333397, -11897059, 2063732, 6207302,
-357556, 933619, 3400540, -1903744, 5294084, 7144141, -875100, 2057826, 4294968, 4093641,
-830002, 260919, -1957968, -2811593, -1757715, 1298154, -2690260, 5974300, 4010963, -92879,
--2877628, -1445793, 3441343, 4060355, -1990181, 3160022, -1877975, 889058, -1915019, -1132798,
--1306207, 415538, 111132, 271657, 287226, -180389, -623844, -462783, -2564096, -8380555,
-1950452, 314606, -8106751, 1250372, 4553739, 6700149, 1725503, -4804995, 11347840, -1513439,
--2228014, 5340792, -3289408, -3199751, 551903, -4131759, 5060545, 5063230, -2039036, -7619809,
--3765613, 3808026, -4908074, 10800769, 9315784, -7431367, -9102646, 338229, 1707786, -8654359,
--563178, 3593814, 2434173, -4230006, -2464774, 9960566, -1052804, 6860674, -676457, -2209761,
--2310156, -5108327, 894427, -712965, 5369246, -4565550, 1243930, -1184874, 999117, -2681670,
--352724, 4545149, 3599720, -5652714, 8834748, 747861, -39728, -121870, -808528, 2415919,
--1217623, -7888245, -1122597, -4155381, 6888591, 2907156, 179315, 8483634, -4682051, 5682779,
-5565741, 534723, -4118874, -818191, -877784, -65498, -1173063, -1682017, 2338610, 2505577,
--3741454, 1819992, -222801, 2651069, 2315524, -738198, 360240, -1131724, -1759863, 1282585,
--1620276, -1335198, 690416, 1804960, -1636383, -1186485, -2128693, -880468, 1274532, -778463,
--313533, 59056, 644782, -1143535, -673773, 1672353, 539555, -312459, -520228, -1806571,
--78383, 965294, 552977, -20148228, 4707821, 1150514, 14471892, -712428, 5855651, -7682086,
-1735167, -5740224, -1322850, -2779381, -848256, 2712272, -1490354, 2537252, 4923107, 3774203,
-13743895, 9504763, -6140730, 3201898, -264677, 2590402, 1682017, -1679332, -13519483, 3507378,
--625455, -66035, 5226439, -743029, -3721589, -2569464, -572841, -4153770, -2199023, -10792179,
--2478196, 352724, -3766150, -614717, 4570382, 6508486, -2013803, 8026757, -5885179, 1377074,
-2789045, 1109712, -1777580, -4123169, 3033858, -986232, 1895691, -3046206, -4360466, 893890,
-2649458, -4405026, 4336307, -2988224, 10229538, 10847477, -3206730, 4003983, 4209605, -490163,
--1327682, -1377611, -13097503, 5573257, 5422396, 232465, -2145336, -5429913, 649077, -1544041,
--6638946, -14960445, 1058173, -3655017, 3927748, 70867, 10737, -2439005, -1627793, -2757369,
--209380, 1614371, -1889786, 2363306, -2343442, -1325534, -947577, -526134, 1301375, 1096827,
--741956, 548145, 410706, 901406, 1413581, 1114007, -631360, -1516124, 1203665, -594316,
--1117228, 517007, 461172, -622233, 910533, 1442035, 537945, -103616, -4363150, -6641630,
-6558415, 3723200, -610959, 7588671, -4124242, 6804839, -7738458, -7425999, 3562675, -11830487,
--4217121, 2944737, 7145215, 9357123, -1677185, 6977175, -282931, 6644315, 2427730, 1055488,
--1138166, 336618, 6619082, -3202972, -741956, 1184337, 536334, -6589554, -858993, -3586835,
-13526463, -6512244, -6616934, -1621887, 6352257, 6411313, 5482526, 7369627, -1324461, 1334661,
--1685238, -3692598, 2753611, -353261, -745177, -4218732, 10596758, 6541772, -3335579, 2007360,
-3098819, -5633387, 1145146, 4117263, -1094680, 7964480, -3271691, -1053878, -8726300, -3291019,
--7427072, 313533, 10128607, -4021163, 2824478, 1728724, 301721, -2791729, -993211, 77309,
--2538863, 4874251, -5073430, -2380486, -498216, 10719701, 1647657, -74625, 3336653, -2931852,
--8104604, 1987496, 757525, -1290638, 529892, 1970316, -586800, 399969, 3859028, 734976,
--369904, 925565, 1611, -528818, -991064, 3629784, -234613, 302258, -3379603, 2013803,
-456340, 2005750, -550293, -1366337, -467615, 1020055, 1585917, 1066763, -2767033, 135828,
-1858110, -590558, -3475702, -2298881, -19144280, 13739600, 1370632, -7095286, -16918950, -1759326,
-341450, -10041634, -985695, 4555887, 3864934, 282931, -2967286, 3590593, 11943230, 12124693,
--5318780, -5818607, -13326210, 2565169, -2476586, 12778065, -5331128, -364535, -3109020, 4760435,
--1534914, -13259638, 4235912, -697395, -7904888, -70867, 1139777, -1148367, -1425392, -5495411,
--7638063, 4508105, 1039382, 5920076, -5308580, 10016937, 4694400, -2161442, -9039832, -1851668,
-3135326, 9795747, 2964064, -5658620, -2644089, 4511863, 2863133, -2942590, -1498944, 4760971,
-3860639, 5029944, 9681393, 10843182, 5234492, 5738613, 6610492, -4005057, 872415, -7300371,
-7124814, 1065689, 3549254, -5236102, -8130373, 1761474, -10365904, -3771518, -4580046, 7460895,
-7791608, 8193724, 2066416, -2415919, -2726231, 7649874, 1462973, -1152662, 1836099, -2505040,
-4822712, 184147, -184684, 1549410, 1913408, -839129, 3929895, -73551, 570157, -2011655,
--1283122, 1043140, 3038689, -264141, 1025960, 1756105, 933082, 538482, -1071594, 1439351,
--1384590, -2007360, 1589675, -6840809, -392990, 12840342, 7898982, 10858751, 2076617, -11848204,
--3898757, 12610024, -3620658, -7961796, -8301098, -8167954, -8648454, 4779762, 4849018, 3124589,
-2855080, 2957085, 12126303, -1478543, 5267778, -10387378, -11702175, 7862475, -409633, -6370510,
-464930, -16291885, -5320928, -5474473, 2008971, -551903, -1501091, -11454678, -7508677, 1296006,
-7929047, 12902082, -5105643, -5029944, 6864969, -8820789, -632971, -427886, 2961380, 5659693,
-4597763, 8952322, -4792647, 12968117, 6104759, -13960254, 6986838, -7747584, -9278740, -7690139,
--11224360, 10184441, 2383707, -11933567, 1364189, 2552284, 1104880, 1923609, -2198487, 8453033,
--4893579, 6505802, -10413685, 7923678, -5288179, -4779225, 1020592, 3535295, -414464, 5735929,
-16328929, -1337882, -8772471, 5211406, 10696616, 890669, -1175210, -8452496, -3716221, 7924215,
--1353452, -492848, 255014, 1632625, -2226404, -1228361, -210990, 2369748, -1364189, -236223,
--1566053, 4493073, -3278134, 732829, -3082713, -3782256, 988916, 1283122, -1218160, 647466,
--1133335, -788127, -265214, -379568, -117575, -1567663, -982474, 4620311, -261993, 90194,
--464930, 1762547, 968515, 1586454, 26386132, -24171002, 10882910, 11365020, -10976326, -2146410,
-15703474, 5565204, 9899363, 2819109, -3703336, 23728084, -1164473, -4678830, -229244, -120259,
-11282342, 17799418, 6611029, -324807, 157303, 2501819, 5980205, -286689, 3076807, -12781823,
-5751498, 9606768, -2262374, 3800509, -204548, 1621887, -8316131, -6528351, 250719, -477815,
-10901164, 5287642, 4387846, -4877472, -5959804, -5946382, 6186364, 9093520, -129386, -3187403,
-17942226, 9202504, 11920682, -6736120, -13750875, -2777233, -14390288, -9529459, -4482335, -6112276,
--1024350, 10417443, -3569118, 210990, -8894340, -9470940, 10366977, -732829, 4723391, 5083094,
--5728950, 9963787, 2434710, 711891, -3743064, -7004555, 7764764, -2643552, -14337675, 7965554,
-6687264, 8338679, 3637837, -10151692, -2300492, 726386, -10603201, 5735929, 5743982, -1174137,
-4284230, 3559454, 3806415, -1177895, 6140730, 741956, -467615, -3427921, 1361505, -269509,
-4845797, 885837, -360240, 828929, -268435, 3517578, -1805497, -668404, -2689187, 1056025,
--879395, -2144263, 198642, 309775, -957778, 364535, 3878892, 2884608, -1998234, -1370632,
--2871723, 474057, -795643, -570694, 227633, 286689, 1162862, -1991791, -18442590, 2422899,
-6278169, -8990977, 7757785, -15636902, 3749507, 4943508, -1926830, -6114423, -7864085, -9216463,
--15670725, 2148558, 18151606, -5793911, 8837432, 4950487, 13543106, 7233262, -4895726, -11369315,
-6085432, -2779918, -3919695, -11789685, -1611687, -1480690, -4581120, -4982699, -2566243, -8252780,
--10820096, 12940736, -1082869, -7328288, 10242960, 3666292, -8597988, 1434519, -461709, 5839008,
--11479911, 3400540, 4197257, -17115444, 5944772, 5738613, -8679055, 2662880, 865973, -2675765,
-6562710, 701153, -1002338, 872952, 4513474, 11733314, 9453760, 11970074, 8397735, 4335233,
--2862596, 17761300, -4277788, -8939438, 19794430, 1406602, 12050068, 2644626, -3577171, -18080202,
--16580184, -4081293, 1286343, -6548752, -2990908, -5124433, 11781632, -10029822, -2715493, -1633698,
-3054796, -9791989, 7364795, -702764, 2493766, -772020, -3587908, -6350109, -4065724, -4987531,
--3850438, -1148367, 906238, -3043521, -1954210, -1670205, 4482872, -4850092, -4063039, -3472481,
--3899830, -116501, 3657702, -1446330, -1389959, 2479270, 869194, -1177895, 1935420, -3025268,
--3095598, 2634963, -3653407, -6300717, 2519535, 5727339, -2729989, 654983, 4113505, -1267552,
--2841121, -3171833, -30862024, 15214922, 26735098, 1933809, -15051713, 6977711, -2719788, -974958,
-4443681, 2661269, 6934225, -7986492, 1002875, 23971824, 18423262, 16136192, -17452600, -658204,
-4372277, 9253507, -8340827, -9329206, -2334852, 3111704, 8366597, 4217121, -22470196, -25482040,
-8018167, -751619, 14472429, 14868640, -9473087, 12324409, 9899900, 13159780, -833224, -7681549,
--8047158, 6346888, -8526047, -3182571, 49392, -258235, 7864622, 16715476, 9387725, -4429185,
--3868155, -8102456, -2047089, 853088, 4540854, -1646583, -2878702, 8287677, 5185100, -12409771,
--123480, 651761, 15116137, -7450695, -8610873, -16299401, -5537287, 2955474, 1141924, 8633421,
--1791001, 2270427, -7312719, -10773925, -9867687, -9856950, -5720897, 4930623, -20589000, 2620467,
--2854543, -3077344, -4327717, 4242354, 11330124, 8395050, 1339493, -1680943, -10446434, -3171297,
--936303, -1956358, 6950868, 3710852, 2141041, 1705102, 3625489, 4384625, -1578937, -1568200,
-131533, -1710471, 390842, 658741, 1406065, 2507724, -6678138, 1238024, -844498, 5291937,
-1401770, -6529424, -355945, -4052302, -3250753, -1462436, -1486596, -1565516, -833224, -640487,
-1789391, -133681, 3681324, 3361349, 2813741, 4912906, 15463493, 1144072, 13401909, -1982127,
-17434346, 8631274, 13566191, 8287677, 3861176, -6913287, -814433, -4376035, 9258339, 2633889,
-8115341, -8002598, -1504312, 14432701, -18080202, -10166724, 13866302, -23812910, -10567767, 1633698,
--4647155, -11857331, 23722714, -4394826, 16347719, 6476811, -14478872, -2328946, -5524402, -17486422,
--22667226, 17870822, -289910, -6693170, 4327717, 193810, -3118146, 6422587, 2448131, -2458869,
--8417599, 1457068, 16884054, 14285598, -12020003, 4584341, 809601, 13318157, -6249178, 8982387,
--19463718, -4817880, 13080860, 4299263, -4550518, 15620796, -5136244, 10910291, -21593484, -24894704,
--9048422, 346282, -17661442, 18813568, 13252658, 19113678, -8949101, -6637872, -6797860, 861141,
--9885404, -242129, -15044734, -13688598, 499827, 3677566, 13707388, 6395743, -1575716, -5239860,
-4232691, 7841537, 5115306, 3049964, -5033702, 5629092, 5039071, 6361384, 4702453, 3378529,
-5099737, -7306813, 5922760, -4479114, -2311766, 9317395, 8254927, 5477694, -1108638, 186831,
--2639258, 4702453, 1411971, -2145336, 2526515, 4770098, 635655, 3671660, 3614752, -5090073,
-1531693, -3888019, -1195075, 1006633, 21640730, 15575699, 24380918, -21556978, -16186121, -36965172,
-16002511, -4074850, -31572304, -6089190, 3058017, 4702453, -11759620, 12918188, 10937671, 1263257,
--82141, 2050847, -5178120, -10973641, 2491618, -6225018, -10241350, -97711, 24044838, 780610,
--3571265, -19139448, 8158291, 15175730, -7763154, -23102630, -4124779, 7830263, 2840047, -4879620,
-5116917, 1678259, 8399345, -2310156, 13804562, 21005074, 8016020, -13920526, 15890842, 7144678,
--17781702, -18985366, 20750598, 10019622, -7960722, -9252970, -369904, -16827682, 12425877, 16273094,
--294742, 937914, 4186519, -2059974, 17881022, 6000070, 4721780, -7355669, 2974265, 6024229,
-22064858, -5254356, 8519605, -16998406, -19276350, 17300128, -2499134, -1600412, 1896228, 16489453,
-473520, -760746, 10510859, -4961761, 2189360, 9554155, 11763915, -5557151, -7133941, -15618649,
--7588671, 5117454, -6781754, 5451924, -46708, 5784247, -2997887, 4268124, 1014686, -2398202,
-2011118, 8749385, 2290828, 8709120, 2762738, -5498632, 494458, 3637837, 3154117, -5396627,
--4807679, -5257040, -2111513, -4129074, -3896609, -6422587, -2615635, 3586298, 2430415, -649614,
--889058, 1962800, -4110821, -99321, 5661841, -1545115, -726923, -2642479, -2063732, -1150514,
--7979513, -1140851, -2988760, -3249680, -4851166, -7015292, -24796456, -1812476, -16137266, -32996086,
--34013456, -14559939, -25910464, -11610907, -3973919, 4951024, 14884746, 16575889, 1924145, -8581345,
-17835388, -8688182, 8918500, -32575180, -2976949, -22268332, -14861661, 15503758, 10961293, 10669773,
-3717294, 22215182, -1968706, -1124745, -15569256, -5235029, -2934537, -10518912, -10624138, -26725434,
--10356240, -2729452, -4098473, -16440598, 15009837, 6125697, 9057549, -7099581, -2578054, -40687300,
--11548093, -11035918, 9730248, 21226802, -12674985, -1735704, -23598698, -1475858, 12524662, -3663070,
--7804493, 5610838, 17854180, 30284352, 6564321, 1197222, -1410897, -7815230, -11774653, 8275865,
--7673496, 27491012, 5608691, 11973832, 55818468, -10817412, -9207873, -13797582, -19227494, -2402497,
-19233400, 8784819, 2964601, 6555731, -7778186, -5986648, -16703128, -3822521, 9782325, -1320703,
--3498251, -1356673, -3702262, 2232309, -374736, 3929358, 3995930, 4052839, 5265093, 5721434,
-14405320, 8871255, -4995047, 8467528, 31675, 753230, 6172405, -6622303, 380641, -7676181,
--4527433, -10591389, -7781407, -11058467, -9110163, -6052683, 12620225, -7480223, -4092567, -8864276,
-819802, 2910377, -1711545, 3937948, 1753420, -22012, -7418483, -27755152, 15832860, 26058104,
--15337865, 822486, 5890011, -8959839, -2110440, -19419158, -345745, -10886668, 28308130, 8053,
--5269388, 22687628, -5701032, 6597070, -25957708, 13498008, 4090420, 17584132, -8143258, 13088913,
-23191212, 24829206, 14014478, 22377854, 11549167, -3585761, 21844204, -10561861, -14249628, -4621922,
-8823473, 14725295, -35337380, -2456721, -22810572, 18131204, 8324184, -496069, 6353867, 25401510,
-1194538, 22662394, 9809705, 34343096, 3207804, -3973919, 15182709, 4920422, -17416092, 3710315,
--1918777, -23591182, 16641925, -14256070, -22828288, -47029356, 3787624, -5858873, 27768038, -15455977,
-37115496, 12127914, -462783, -5726802, 14578730, 15129022, -26873610, -11625940, -19810536, 6888591,
--8839580, 20226074, 6644315, 6750078, 10004589, -4754529, 1939178, -7188165, -2266669, 492311,
--2465848, -20970714, 8470212, -115964, 6414534, 125091, -5921150, 592706, 8780524, -13980119,
-12232067, -5172751, 219043, 1284195, -11409044, -1074816, 7328288, 3493419, -8104067, -3543885,
--1736777, -9913321, 3604551, -2878702, 14644765, -11569568, 5428302, 9918690, 3914863, -4311611,
--2801929, 4789426, 2738042, 2947958, -2175401, 4970888, -14954002, 4041027, 4071629, 6528887,
--4248260, -7226283, 966368, 6394133, 1330366, 17534204, -12265890, -13685376, -13470628, 16850230,
-8584566, 22040162, 5881958, 68863896, -20874614, 49929, 193810, 31883690, 13008382, 14590541,
--21453898, 8957154, -8657580, 277562, -10100152, 1830193, 22948548, -6444599, 7054484, 44659068,
-13791140, -20691004, -24182276, 2456185, 29004452, 14979772, 5245229, -11667816, 24641838, 3922379,
--4034585, -27757836, 8059506, -4676683, 11496017, -25226490, -15534897, 983011, -6667400, 2962991,
--23559506, -1116155, -14499810, 6267431, 20264730, 16149077, 5057324, -32185948, -62277, 2837363,
--29052232, -25965224, -17331266, -14337675, -14333380, 22420266, 4861903, -963146, 14491220, 23325430,
-5975910, 20159502, 223338, 13241384, 90058488, -20936354, 14563160, 10064719, -16213502, 3053185,
--60559576, 901943, 29577830, 7517804, -16900160, 22716618, 5221070, 8449811, -15357192, -3722126,
--13167296, 4201552, 791348, 834297, 4831302, -18972482, 6583648, -10547366, -7771744, -25862146,
-6019397, 5560909, 4771709, 6272263, 31662498, 4522064, 3102577, 3364570, 2184528, 18809810,
-1929514, 7765301, 6372121, 14276471, 5549635, -1184337, -3543348, -2961917, 2110440, 8939974,
-10734197, 2957085, -17096118, -8024073, -4024921, -4032974, -5851893, -17848274, -4561792, 5880884,
-13155485, 36283884, -17322140, -1185948, -24855512, -18153216, 5515275, 15715822, -20608326, 23929410,
-9881646, -32161252, 19298898, -13220446, -16049219, -1651415, -19346680, 4150012, -8810052, 24270324,
--14449344, -1465658, 13284334, -47862580, 6546604, 14396730, -14595373, 11346767, -28963648, 28341952,
-2888903, 4581120, -54575076, 48668960, 20786032, 15731928, 840740, -31355946, 28164784, -2194192,
--14305462, 49760416, -10216117, -22410066, -11827803, 5661841, 14287746, 13340168, 3437585, -8858907,
--59261960, -7079180, 14554570, 446677, 21465710, -31412854, 31777390, 2822867, 10608032, -31933618,
--9310952, 4634270, 40568652, -17399986, 9327058, -29635274, 25617332, 14014478, 24166170, -9856413,
-10601590, 3743064, -32091996, -30939334, 16564615, 13211319, 25799868, 5082020, 33165738, -50752016,
--65947076, 10001905, -14059575, 36653252, -24426016, -5764920, 4102768, -28524488, 1205812, -17246442,
-14385456, 20117626, 1887101, 16214038, 18264348, 4926328, -16830904, -8971113, 29492466, 14871324,
-3678103, 4613332, -9069360, 127238, 17891760, 9534291, -14792941, -8866423, 16637093, -2986613,
-10303627, 9910100, -6632503, -9210557, -8841190, -562104, 8800925, 3417183, 11305428, 15796353,
-1183800, -1183264, 13253732, 158377, 2531346, 3562139, -5782637, 3903052, -9987410, 4884989,
-1844152, -490700, 4165045, -4853850, -45926084, 41895260, -9034464, -10115185, -16340203, -4774930,
--36211944, -67626408, 23363548, 19417548, -2970507, -13943611, -27540940, -4553202, -8535174, -14653892,
-26658862, -60483340, -25834228, -31933618, -9511742, -46055472, -4234838, -6944425, -1642288, -7722351,
--9330816, 7410429, -448824, -20391968, -6377490, -473520, -27886686, -14913200, -8225399, 2020782,
-21472688, -11033234, 43035572, -22501870, -3224984, 18078592, -19197430, 11650636, 2441689, -29521458,
--44141528, -10843182, 11259794, 40223980, 17443472, -30862562, -13063143, -88550952, -29646012, -6421513,
-18597208, 48029544, -2579128, -51536388, 2826625, 27919434, -10331544, -2487860, 29606284, 31149250,
-71547176, -79177720, -15399068, 11144903, 19955492, -25046638, -29721710, -42385960, -42083164, -23584740,
--19617800, -5595806, -3104725, -48978196, -20365124, -18022756, 17976586, -9342628, -4945118, 43898324,
-33204930, 2542084, -6437619, -2160369, -27355184, -1360968, 9513889, -19807852, -10712722, 3554086,
-12221329, -8508867, -9844065, -6706055, 13631689, -9375914, 14279693, 825171, 14738717, 10434623,
-10532334, -8502425, 5173825, -20846160, 10308995, -2973728, 5926518, -18488224, -14462765, -2335925,
-4321274, -10561325, -140123, -23405424, -4480725, -3111167, 9421011, 11864847, -15181636, 29759828,
-106300, 10787884, 6152541, 21418466, 21298206, -1498944, 13295071, -25519622, 6718940, -10059887,
--62293668, 14647449, -10263898, 18991272, -16876000, -17424146, 1804960, -25824564, 4948876, -26047366,
--57982, -4191888, -9900436, 13153337, -19279572, -25356414, -23046794, -29853244, -4582193, -2906082,
-34029024, 7820599, -23992224, -35992364, 5264556, -381178, 9152038, -6704444, 20820928, -23548232,
--9015673, -33229088, -21013128, -9293772, 1611150, -13824426, 35506496, -11878269, -29420526, 9646497,
-36841156, 26714160, 11274826, -25355876, -16223702, -2285996, 33510408, 63504312, -54761, 12758737,
--11587822, -61495880, -13045963, 5934034, 23854786, 53064856, -28672128, -35470524, 21540872, 10261214,
--11865921, 1964948, -19096498, 12433393, -51688856, -5731097, 3567507, 12970801, -30928596, 36621040,
--50523848, -57897232, -53111564, 27376122, -10424959, 51448340, -70762272, -30838402, 6340446, 73117520,
--5233955, -12728136, -39464844, -14439680, -4050154, 35377108, -2338610, 75162, 2749316, 6330782,
-1352915, -302258, -14512694, -12715788, 17435956, 7610682, 2709051, -37958384, 10248329, -9616969,
--3827353, -19564112, 1582696, -1586454, -2913599, -44727788, 4854924, -9763534, -4436701, -3723737,
-8323647, 7516, 3491272, -154082, 984621, -537, 923955, -16245177, -2454037, -10413685,
--8324721, 7936026, 8860518, -13030931, 1221918, -9261023, 12949863, -4433480, -20117626, 3221762,
-36753644, 10874857, -67126040, -12328704, -46494096, 19996294, 3267933, -92053496, 5662915, -28657632,
--59905668, -46626700, -68291056, 41427644, -21265994, -53739704, -24575266, 16864190, -32395864, -27855010,
--22036940, -13134547, -24240796, -23848880, -43906912, -31700080, -59998544, -33870112, -30866856, -10361072,
--28639916, -6109054, -13778792, -1169305, 1558536, 7542500, 15915538, -16716013, 13105556, 1343251,
-29730300, 12941273, 18282066, 18879602, -56392384, -14949171, 43914428, -7984881, -28452548, -31519692,
--23904714, 17580912, 71293776, -5097590, -1902671, -48678624, -50183472, -10730439, 9330816, 42789148,
--3839164, 38970384, 13657459, -47837344, 84849760, 1315334, 65802120, -164819, -17995912, 35498980,
--49028124, -62414464, -40786620, -137842144, -84461608, -27719182, 61938796, 38279968, -56251724, -36674188,
--85418848, 41411536, 54633056, -43482248, -44268764, 9478993, 35647156, 52038360, 13466333, 29637958,
--29263222, -15882252, -22403086, -32563368, -14468671, -3441880, 1737314, 743566, -18888192, 2141578,
-10527502, 3282966, -4211216, -13356275, -10078678, -15161235, -6913824, -22111028, -6151467, 12411382,
--22416508, -34600256, -6620155, -23023710, -16834124, -3502546, -30329986, -22987738, -7592966, 12671227,
-12261595, 14719390, -2282238, -13287555, -4053376, 3940633, -9367861, 19947976, -1129576, 14305999,
--1293859, -1436130, 13304735, 10633802, 15129559, 36419176, 21452824, 26664768, -23364622, -56738128,
-65994856, 63124744, -39915816, -51758652, -255014, 56654912, -6158446, -3252364, -17667884, 49557480,
--5521181, -13168907, -1242856, 13728326, 25380036, 740345, -19138374, -21662742, 30499100, 2339684,
--13190381, -32599876, 18514530, 10334228, -3786014, -25667262, 8022462, 11175505, 9116605, -16190953,
--9863929, 2982318, 25114284, -7304666, 8955007, -36968396, -10424959, 180389, 24311662, -51495048,
--9339406, 5154498, 37034428, -17721572, 5633387, -26234198, 3461207, 11068668, -18284212, -13677860,
--2297808, 6194954, 11178726, -11602854, 637266, -45838040, 24732570, -7518341, 42928736, -26546656,
-19050864, -18006114, 19808390, 3924526, 13217762, 11559368, -33680596, 38067904, 7283191, 22050362,
--37165424, 10477573, -9616432, 6085432, -10757282, 1682017, -2787971, 5258114, 12319577, -1748589,
--15014669, -8559333, 3528853, -1760400, 674310, -5519570, -14651744, 5062693, 3557844, -4224101,
--4347044, -24696, -4791573, 923955, -8113730, 0, -4115653, 6720550, 3478924, -2426657,
--6113886, 2270427, -149787, -4847408, 3419868, -15526844, -462783, -1586990, 6708739, 537,
-17865454, -11809013, -12611098, -3914863, 9269613, -12809203, 19178640, -16135655, 7939784, -7779260,
-17451526, -15664283, 19235548, -10870562, 14966350, -13581760, 23455354, -22157200, 16898548, -4927401,
-12643310, -11843909, 12430172, -13454522, 14077292, -13554380, 11254425, -9014599, 12492986, -9713605,
-10415296, -9676561, 2931315, -3140158, 6311455, -4794794, 5186173, -4241817, 4224637, -3034931,
-5826123, -3564823, 2267206, -2790118, 3100430, -2425583, 1115081, 488553, -19240916, -42899744,
--57077968, 41793788, 27759984, -32510218, -46368468, -22673670, 21611738, 11380053, 28716688, 30903900,
-6133750, -15440407, -4431333, 10873247, -10497974, -772557, 6470905, 1842541, 17344152, 12152073,
-5326297, -15427523, -477815, -9517648, 10104984, -16167868, -13992467, 11905112, -3656628, -6525129,
--6404870, -11210938, -15403363, 1281511, 12758200, 11649025, 9782862, -3583613, -12685186, -11005854,
--7668664, 13904420, 18874770, -8654359, -13030931, -5579163, 15677704, 8149164, 20941724, -14636175,
--5512054, 8338142, -3837017, 789737, -2142115, 7503845, 4528506, 6082211, 1345399, -13996762,
-5927592, 2731062, -433255, 11032160, -5586142, -2680060, 1973001, -1901060, 1486596, -3970161,
-18591302, 4769025, -1412507, 17750562, 17745732, -17830556, -27095338, -9838159, -18532784, 681826,
-12393665, 3645354, -11053635, -13303124, -3503083, -2461553, 10778757, 5239860, 6747394, 10157061,
-6195491, -5456756, 6271726, 4530654, -13006772, -17394618, 5326297, -4483409, 8797704, 6546067,
--9542880, -2427194, -3193845, -3379066, -11101954, -5983427, -623844, 3680787, 5406827, 15012521,
--7329899, -5383205, 3876745, -3296388, -4307316, 8843875, 368293, 19603304, -47634944, -125403920,
--46101644, 22486302, 65233036, 137773424, 92197912, 23722714, 34942244, -18420578, -56082608, -93145496,
--81036904, -64435784, -18580028, 2469606, 44824428, 49407156, 105197704, 51060180, 33675764, -2652679,
--22422950, -50646256, -26291642, -40956808, -47215648, -29086056, -24336896, -1829656, 13157632, 39343512,
-24333674, 28236188, 25683904, 25941602, 39046084, 3353833, 27056146, -5033702, -12139188, -32964948,
--19625316, -49154292, -72321880, -63218160, 753767, -10768557, 19844360, 33960308, 18643916, 52395916,
-45781132, 66227320, 37723236, 44907640, 2237141, 2187212, -35413616, -57905824, -67627480, -81226960,
--53359600, -66387308, -5566278, -288837, 31961000, 33481954, 80232136, 62986768, 89620936, 36341864,
-41909756, 17443472, -358093, -53494892, -87195888, -58430884, -69655776, -43438764, -47158740, -4438849,
-7319161, 27814208, 36553928, 49466212, 50548008, 48551384, 31836446, 34757560, 9083856, -6337224,
--11926050, -39210368, -35694936, -46939160, -33120104, -46922516, -35701380, -3764002, 8404177, 24684250,
-37347960, 33252174, 34338800, 56484724, 20500416, 34473556, 26528402, -35676684, -64471756, -28008556,
--56842280, -35904316, -19477140, -4107599, 5111011, 18074296, 32869384, 22803592, 35358856, 22369264,
-19273666, 7709467, -2115272, -20561082, -6688875, -9667971, -35938140, -33678448, -9214315, -3845070,
-1974611, 11789685, 13902272, 17510044, 14091788, 13838921, 5286568, 4650376, -111132, -7901129,
--3817689, -2899103, -7912941, -12837120, -4249334, -6426345, -7367480, -877784, 3577708, 3899830,
-6002754, 7105487, 8892730, 5690832, 4224637, 1312113, -700617, -2229625, -3507378, -4809827,
--5105643, -3714610, -2746632, -2067490, -1822677, 41876, 975494, 1110786, 1637456, 1739462,
-2630131, 3909494, 3933116, 1130113, 780610, 1054951, -507880, -2042257, -2685428, -3712462,
--3187403, -2237141, -657130, -887985, -36507, 1539746, 1659468, 1575179, 2268817, 1816771,
-1059246, 74088, 63888, 117038, -257698, -1005022, -863288, -1021665, -999117, -1023813,
--650688, -391379, 114890, 441308, 841814, 932545, 733903, -30602, 353798, 511638,
-343061, -132607, -598611, -794032, -656593, -408559, -60666, 222265, 530965, 369904,
-141734, 164819, 227633, -165893, -328028, -277025, -264677, -208843, 12348, -11274,
-26307, 100932, 104690, 48318, 19327, 10201, -9664, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+2232309, -5614059, 2633889, 2989834, 1023813, -7104413, 3218541, 5006858, -5430450, -1642825,
+-6649683, -1478543, -2834142, -2451890, -970663, 346282, -245350, 653372, 2370822, -2976949,
+1307281, -6817724, 2325188, 4154844, 874563, -1809255, -5523865, 3578782, -2434710, 5802501,
+4955856, -237297, -2326262, 4725538, 5523328, 4429722, 4489852, 1095217, -3467112, 1058173,
+4246649, -1812476, -3621731, 3216394, 5122822, -2281702, 2668785, -5871757, -496069, -5153961,
+3485366, -6852084, -1857573, -1299765, 2323041, 3374234, 2397129, -223875, -3631932, 413391,
+-5019206, -3333968, 902480, -650151, -3031710, 1618666, 1682017, 399969, 3145527, -2843805,
+1346472, -3830574, -1520955, -1648194, 2079838, -2001992, -4034585, -1835025, -1511829, 5500243,
+4743792, 1174137, -2538863, 295279, -307627, 933619, 1897302, 317828, 94489, 302795,
+-91268, 46708, -724239, 518080, -2131378, 64961, -174483, 837519, 443992, -689342,
+-939524, 156766, 369904, 367220, -179852, 19327, -428423, 9742060, -9768903, 396211,
+197569, -2454574, -2915209, -3105261, 1038308, -5493800, -5420786, 795643, 2668785, -176094,
+3157875, 2469069, -2969970, 1260573, -10718628, -2601140, -2377265, -2472291, -3362960, -3707094,
+-9444096, -7327214, 1033477, 2245194, -484794, 5155035, 4123169, 1754494, -1800128, -991601,
+4825933, -1823751, 619549, -668404, -5019206, 1719598, -1663763, -3403762, -1303523, 4156992,
+9988483, -3766150, 1137630, 2459406, -1817845, 3171297, 1427540, -3447248, 2055142, -8199093,
+-3787088, 128312, 3393024, 5266704, -3180960, -1451162, -333397, -11897059, 2063732, 6207302,
+357556, 933619, 3400540, -1903744, 5294084, 7144141, -875100, 2057826, 4294968, 4093641,
+830002, 260919, -1957968, -2811593, -1757715, 1298154, -2690260, 5974300, 4010963, -92879,
+-2877628, -1445793, 3441343, 4060355, -1990181, 3160022, -1877975, 889058, -1915019, -1132798,
+-1306207, 415538, 111132, 271657, 287226, -180389, -623844, -462783, -2564096, -8380555,
+1950452, 314606, -8106751, 1250372, 4553739, 6700149, 1725503, -4804995, 11347840, -1513439,
+-2228014, 5340792, -3289408, -3199751, 551903, -4131759, 5060545, 5063230, -2039036, -7619809,
+-3765613, 3808026, -4908074, 10800769, 9315784, -7431367, -9102646, 338229, 1707786, -8654359,
+-563178, 3593814, 2434173, -4230006, -2464774, 9960566, -1052804, 6860674, -676457, -2209761,
+-2310156, -5108327, 894427, -712965, 5369246, -4565550, 1243930, -1184874, 999117, -2681670,
+-352724, 4545149, 3599720, -5652714, 8834748, 747861, -39728, -121870, -808528, 2415919,
+-1217623, -7888245, -1122597, -4155381, 6888591, 2907156, 179315, 8483634, -4682051, 5682779,
+5565741, 534723, -4118874, -818191, -877784, -65498, -1173063, -1682017, 2338610, 2505577,
+-3741454, 1819992, -222801, 2651069, 2315524, -738198, 360240, -1131724, -1759863, 1282585,
+-1620276, -1335198, 690416, 1804960, -1636383, -1186485, -2128693, -880468, 1274532, -778463,
+-313533, 59056, 644782, -1143535, -673773, 1672353, 539555, -312459, -520228, -1806571,
+-78383, 965294, 552977, -20148228, 4707821, 1150514, 14471892, -712428, 5855651, -7682086,
+1735167, -5740224, -1322850, -2779381, -848256, 2712272, -1490354, 2537252, 4923107, 3774203,
+13743895, 9504763, -6140730, 3201898, -264677, 2590402, 1682017, -1679332, -13519483, 3507378,
+-625455, -66035, 5226439, -743029, -3721589, -2569464, -572841, -4153770, -2199023, -10792179,
+-2478196, 352724, -3766150, -614717, 4570382, 6508486, -2013803, 8026757, -5885179, 1377074,
+2789045, 1109712, -1777580, -4123169, 3033858, -986232, 1895691, -3046206, -4360466, 893890,
+2649458, -4405026, 4336307, -2988224, 10229538, 10847477, -3206730, 4003983, 4209605, -490163,
+-1327682, -1377611, -13097503, 5573257, 5422396, 232465, -2145336, -5429913, 649077, -1544041,
+-6638946, -14960445, 1058173, -3655017, 3927748, 70867, 10737, -2439005, -1627793, -2757369,
+-209380, 1614371, -1889786, 2363306, -2343442, -1325534, -947577, -526134, 1301375, 1096827,
+-741956, 548145, 410706, 901406, 1413581, 1114007, -631360, -1516124, 1203665, -594316,
+-1117228, 517007, 461172, -622233, 910533, 1442035, 537945, -103616, -4363150, -6641630,
+6558415, 3723200, -610959, 7588671, -4124242, 6804839, -7738458, -7425999, 3562675, -11830487,
+-4217121, 2944737, 7145215, 9357123, -1677185, 6977175, -282931, 6644315, 2427730, 1055488,
+-1138166, 336618, 6619082, -3202972, -741956, 1184337, 536334, -6589554, -858993, -3586835,
+13526463, -6512244, -6616934, -1621887, 6352257, 6411313, 5482526, 7369627, -1324461, 1334661,
+-1685238, -3692598, 2753611, -353261, -745177, -4218732, 10596758, 6541772, -3335579, 2007360,
+3098819, -5633387, 1145146, 4117263, -1094680, 7964480, -3271691, -1053878, -8726300, -3291019,
+-7427072, 313533, 10128607, -4021163, 2824478, 1728724, 301721, -2791729, -993211, 77309,
+-2538863, 4874251, -5073430, -2380486, -498216, 10719701, 1647657, -74625, 3336653, -2931852,
+-8104604, 1987496, 757525, -1290638, 529892, 1970316, -586800, 399969, 3859028, 734976,
+-369904, 925565, 1611, -528818, -991064, 3629784, -234613, 302258, -3379603, 2013803,
+456340, 2005750, -550293, -1366337, -467615, 1020055, 1585917, 1066763, -2767033, 135828,
+1858110, -590558, -3475702, -2298881, -19144280, 13739600, 1370632, -7095286, -16918950, -1759326,
+341450, -10041634, -985695, 4555887, 3864934, 282931, -2967286, 3590593, 11943230, 12124693,
+-5318780, -5818607, -13326210, 2565169, -2476586, 12778065, -5331128, -364535, -3109020, 4760435,
+-1534914, -13259638, 4235912, -697395, -7904888, -70867, 1139777, -1148367, -1425392, -5495411,
+-7638063, 4508105, 1039382, 5920076, -5308580, 10016937, 4694400, -2161442, -9039832, -1851668,
+3135326, 9795747, 2964064, -5658620, -2644089, 4511863, 2863133, -2942590, -1498944, 4760971,
+3860639, 5029944, 9681393, 10843182, 5234492, 5738613, 6610492, -4005057, 872415, -7300371,
+7124814, 1065689, 3549254, -5236102, -8130373, 1761474, -10365904, -3771518, -4580046, 7460895,
+7791608, 8193724, 2066416, -2415919, -2726231, 7649874, 1462973, -1152662, 1836099, -2505040,
+4822712, 184147, -184684, 1549410, 1913408, -839129, 3929895, -73551, 570157, -2011655,
+-1283122, 1043140, 3038689, -264141, 1025960, 1756105, 933082, 538482, -1071594, 1439351,
+-1384590, -2007360, 1589675, -6840809, -392990, 12840342, 7898982, 10858751, 2076617, -11848204,
+-3898757, 12610024, -3620658, -7961796, -8301098, -8167954, -8648454, 4779762, 4849018, 3124589,
+2855080, 2957085, 12126303, -1478543, 5267778, -10387378, -11702175, 7862475, -409633, -6370510,
+464930, -16291885, -5320928, -5474473, 2008971, -551903, -1501091, -11454678, -7508677, 1296006,
+7929047, 12902082, -5105643, -5029944, 6864969, -8820789, -632971, -427886, 2961380, 5659693,
+4597763, 8952322, -4792647, 12968117, 6104759, -13960254, 6986838, -7747584, -9278740, -7690139,
+-11224360, 10184441, 2383707, -11933567, 1364189, 2552284, 1104880, 1923609, -2198487, 8453033,
+-4893579, 6505802, -10413685, 7923678, -5288179, -4779225, 1020592, 3535295, -414464, 5735929,
+16328929, -1337882, -8772471, 5211406, 10696616, 890669, -1175210, -8452496, -3716221, 7924215,
+-1353452, -492848, 255014, 1632625, -2226404, -1228361, -210990, 2369748, -1364189, -236223,
+-1566053, 4493073, -3278134, 732829, -3082713, -3782256, 988916, 1283122, -1218160, 647466,
+-1133335, -788127, -265214, -379568, -117575, -1567663, -982474, 4620311, -261993, 90194,
+-464930, 1762547, 968515, 1586454, 26386132, -24171002, 10882910, 11365020, -10976326, -2146410,
+15703474, 5565204, 9899363, 2819109, -3703336, 23728084, -1164473, -4678830, -229244, -120259,
+11282342, 17799418, 6611029, -324807, 157303, 2501819, 5980205, -286689, 3076807, -12781823,
+5751498, 9606768, -2262374, 3800509, -204548, 1621887, -8316131, -6528351, 250719, -477815,
+10901164, 5287642, 4387846, -4877472, -5959804, -5946382, 6186364, 9093520, -129386, -3187403,
+17942226, 9202504, 11920682, -6736120, -13750875, -2777233, -14390288, -9529459, -4482335, -6112276,
+-1024350, 10417443, -3569118, 210990, -8894340, -9470940, 10366977, -732829, 4723391, 5083094,
+-5728950, 9963787, 2434710, 711891, -3743064, -7004555, 7764764, -2643552, -14337675, 7965554,
+6687264, 8338679, 3637837, -10151692, -2300492, 726386, -10603201, 5735929, 5743982, -1174137,
+4284230, 3559454, 3806415, -1177895, 6140730, 741956, -467615, -3427921, 1361505, -269509,
+4845797, 885837, -360240, 828929, -268435, 3517578, -1805497, -668404, -2689187, 1056025,
+-879395, -2144263, 198642, 309775, -957778, 364535, 3878892, 2884608, -1998234, -1370632,
+-2871723, 474057, -795643, -570694, 227633, 286689, 1162862, -1991791, -18442590, 2422899,
+6278169, -8990977, 7757785, -15636902, 3749507, 4943508, -1926830, -6114423, -7864085, -9216463,
+-15670725, 2148558, 18151606, -5793911, 8837432, 4950487, 13543106, 7233262, -4895726, -11369315,
+6085432, -2779918, -3919695, -11789685, -1611687, -1480690, -4581120, -4982699, -2566243, -8252780,
+-10820096, 12940736, -1082869, -7328288, 10242960, 3666292, -8597988, 1434519, -461709, 5839008,
+-11479911, 3400540, 4197257, -17115444, 5944772, 5738613, -8679055, 2662880, 865973, -2675765,
+6562710, 701153, -1002338, 872952, 4513474, 11733314, 9453760, 11970074, 8397735, 4335233,
+-2862596, 17761300, -4277788, -8939438, 19794430, 1406602, 12050068, 2644626, -3577171, -18080202,
+-16580184, -4081293, 1286343, -6548752, -2990908, -5124433, 11781632, -10029822, -2715493, -1633698,
+3054796, -9791989, 7364795, -702764, 2493766, -772020, -3587908, -6350109, -4065724, -4987531,
+-3850438, -1148367, 906238, -3043521, -1954210, -1670205, 4482872, -4850092, -4063039, -3472481,
+-3899830, -116501, 3657702, -1446330, -1389959, 2479270, 869194, -1177895, 1935420, -3025268,
+-3095598, 2634963, -3653407, -6300717, 2519535, 5727339, -2729989, 654983, 4113505, -1267552,
+-2841121, -3171833, -30862024, 15214922, 26735098, 1933809, -15051713, 6977711, -2719788, -974958,
+4443681, 2661269, 6934225, -7986492, 1002875, 23971824, 18423262, 16136192, -17452600, -658204,
+4372277, 9253507, -8340827, -9329206, -2334852, 3111704, 8366597, 4217121, -22470196, -25482040,
+8018167, -751619, 14472429, 14868640, -9473087, 12324409, 9899900, 13159780, -833224, -7681549,
+-8047158, 6346888, -8526047, -3182571, 49392, -258235, 7864622, 16715476, 9387725, -4429185,
+-3868155, -8102456, -2047089, 853088, 4540854, -1646583, -2878702, 8287677, 5185100, -12409771,
+-123480, 651761, 15116137, -7450695, -8610873, -16299401, -5537287, 2955474, 1141924, 8633421,
+-1791001, 2270427, -7312719, -10773925, -9867687, -9856950, -5720897, 4930623, -20589000, 2620467,
+-2854543, -3077344, -4327717, 4242354, 11330124, 8395050, 1339493, -1680943, -10446434, -3171297,
+-936303, -1956358, 6950868, 3710852, 2141041, 1705102, 3625489, 4384625, -1578937, -1568200,
+131533, -1710471, 390842, 658741, 1406065, 2507724, -6678138, 1238024, -844498, 5291937,
+1401770, -6529424, -355945, -4052302, -3250753, -1462436, -1486596, -1565516, -833224, -640487,
+1789391, -133681, 3681324, 3361349, 2813741, 4912906, 15463493, 1144072, 13401909, -1982127,
+17434346, 8631274, 13566191, 8287677, 3861176, -6913287, -814433, -4376035, 9258339, 2633889,
+8115341, -8002598, -1504312, 14432701, -18080202, -10166724, 13866302, -23812910, -10567767, 1633698,
+-4647155, -11857331, 23722714, -4394826, 16347719, 6476811, -14478872, -2328946, -5524402, -17486422,
+-22667226, 17870822, -289910, -6693170, 4327717, 193810, -3118146, 6422587, 2448131, -2458869,
+-8417599, 1457068, 16884054, 14285598, -12020003, 4584341, 809601, 13318157, -6249178, 8982387,
+-19463718, -4817880, 13080860, 4299263, -4550518, 15620796, -5136244, 10910291, -21593484, -24894704,
+-9048422, 346282, -17661442, 18813568, 13252658, 19113678, -8949101, -6637872, -6797860, 861141,
+-9885404, -242129, -15044734, -13688598, 499827, 3677566, 13707388, 6395743, -1575716, -5239860,
+4232691, 7841537, 5115306, 3049964, -5033702, 5629092, 5039071, 6361384, 4702453, 3378529,
+5099737, -7306813, 5922760, -4479114, -2311766, 9317395, 8254927, 5477694, -1108638, 186831,
+-2639258, 4702453, 1411971, -2145336, 2526515, 4770098, 635655, 3671660, 3614752, -5090073,
+1531693, -3888019, -1195075, 1006633, 21640730, 15575699, 24380918, -21556978, -16186121, -36965172,
+16002511, -4074850, -31572304, -6089190, 3058017, 4702453, -11759620, 12918188, 10937671, 1263257,
+-82141, 2050847, -5178120, -10973641, 2491618, -6225018, -10241350, -97711, 24044838, 780610,
+-3571265, -19139448, 8158291, 15175730, -7763154, -23102630, -4124779, 7830263, 2840047, -4879620,
+5116917, 1678259, 8399345, -2310156, 13804562, 21005074, 8016020, -13920526, 15890842, 7144678,
+-17781702, -18985366, 20750598, 10019622, -7960722, -9252970, -369904, -16827682, 12425877, 16273094,
+-294742, 937914, 4186519, -2059974, 17881022, 6000070, 4721780, -7355669, 2974265, 6024229,
+22064858, -5254356, 8519605, -16998406, -19276350, 17300128, -2499134, -1600412, 1896228, 16489453,
+473520, -760746, 10510859, -4961761, 2189360, 9554155, 11763915, -5557151, -7133941, -15618649,
+-7588671, 5117454, -6781754, 5451924, -46708, 5784247, -2997887, 4268124, 1014686, -2398202,
+2011118, 8749385, 2290828, 8709120, 2762738, -5498632, 494458, 3637837, 3154117, -5396627,
+-4807679, -5257040, -2111513, -4129074, -3896609, -6422587, -2615635, 3586298, 2430415, -649614,
+-889058, 1962800, -4110821, -99321, 5661841, -1545115, -726923, -2642479, -2063732, -1150514,
+-7979513, -1140851, -2988760, -3249680, -4851166, -7015292, -24796456, -1812476, -16137266, -32996086,
+-34013456, -14559939, -25910464, -11610907, -3973919, 4951024, 14884746, 16575889, 1924145, -8581345,
+17835388, -8688182, 8918500, -32575180, -2976949, -22268332, -14861661, 15503758, 10961293, 10669773,
+3717294, 22215182, -1968706, -1124745, -15569256, -5235029, -2934537, -10518912, -10624138, -26725434,
+-10356240, -2729452, -4098473, -16440598, 15009837, 6125697, 9057549, -7099581, -2578054, -40687300,
+-11548093, -11035918, 9730248, 21226802, -12674985, -1735704, -23598698, -1475858, 12524662, -3663070,
+-7804493, 5610838, 17854180, 30284352, 6564321, 1197222, -1410897, -7815230, -11774653, 8275865,
+-7673496, 27491012, 5608691, 11973832, 55818468, -10817412, -9207873, -13797582, -19227494, -2402497,
+19233400, 8784819, 2964601, 6555731, -7778186, -5986648, -16703128, -3822521, 9782325, -1320703,
+-3498251, -1356673, -3702262, 2232309, -374736, 3929358, 3995930, 4052839, 5265093, 5721434,
+14405320, 8871255, -4995047, 8467528, 31675, 753230, 6172405, -6622303, 380641, -7676181,
+-4527433, -10591389, -7781407, -11058467, -9110163, -6052683, 12620225, -7480223, -4092567, -8864276,
+819802, 2910377, -1711545, 3937948, 1753420, -22012, -7418483, -27755152, 15832860, 26058104,
+-15337865, 822486, 5890011, -8959839, -2110440, -19419158, -345745, -10886668, 28308130, 8053,
+-5269388, 22687628, -5701032, 6597070, -25957708, 13498008, 4090420, 17584132, -8143258, 13088913,
+23191212, 24829206, 14014478, 22377854, 11549167, -3585761, 21844204, -10561861, -14249628, -4621922,
+8823473, 14725295, -35337380, -2456721, -22810572, 18131204, 8324184, -496069, 6353867, 25401510,
+1194538, 22662394, 9809705, 34343096, 3207804, -3973919, 15182709, 4920422, -17416092, 3710315,
+-1918777, -23591182, 16641925, -14256070, -22828288, -47029356, 3787624, -5858873, 27768038, -15455977,
+37115496, 12127914, -462783, -5726802, 14578730, 15129022, -26873610, -11625940, -19810536, 6888591,
+-8839580, 20226074, 6644315, 6750078, 10004589, -4754529, 1939178, -7188165, -2266669, 492311,
+-2465848, -20970714, 8470212, -115964, 6414534, 125091, -5921150, 592706, 8780524, -13980119,
+12232067, -5172751, 219043, 1284195, -11409044, -1074816, 7328288, 3493419, -8104067, -3543885,
+-1736777, -9913321, 3604551, -2878702, 14644765, -11569568, 5428302, 9918690, 3914863, -4311611,
+-2801929, 4789426, 2738042, 2947958, -2175401, 4970888, -14954002, 4041027, 4071629, 6528887,
+-4248260, -7226283, 966368, 6394133, 1330366, 17534204, -12265890, -13685376, -13470628, 16850230,
+8584566, 22040162, 5881958, 68863896, -20874614, 49929, 193810, 31883690, 13008382, 14590541,
+-21453898, 8957154, -8657580, 277562, -10100152, 1830193, 22948548, -6444599, 7054484, 44659068,
+13791140, -20691004, -24182276, 2456185, 29004452, 14979772, 5245229, -11667816, 24641838, 3922379,
+-4034585, -27757836, 8059506, -4676683, 11496017, -25226490, -15534897, 983011, -6667400, 2962991,
+-23559506, -1116155, -14499810, 6267431, 20264730, 16149077, 5057324, -32185948, -62277, 2837363,
+-29052232, -25965224, -17331266, -14337675, -14333380, 22420266, 4861903, -963146, 14491220, 23325430,
+5975910, 20159502, 223338, 13241384, 90058488, -20936354, 14563160, 10064719, -16213502, 3053185,
+-60559576, 901943, 29577830, 7517804, -16900160, 22716618, 5221070, 8449811, -15357192, -3722126,
+-13167296, 4201552, 791348, 834297, 4831302, -18972482, 6583648, -10547366, -7771744, -25862146,
+6019397, 5560909, 4771709, 6272263, 31662498, 4522064, 3102577, 3364570, 2184528, 18809810,
+1929514, 7765301, 6372121, 14276471, 5549635, -1184337, -3543348, -2961917, 2110440, 8939974,
+10734197, 2957085, -17096118, -8024073, -4024921, -4032974, -5851893, -17848274, -4561792, 5880884,
+13155485, 36283884, -17322140, -1185948, -24855512, -18153216, 5515275, 15715822, -20608326, 23929410,
+9881646, -32161252, 19298898, -13220446, -16049219, -1651415, -19346680, 4150012, -8810052, 24270324,
+-14449344, -1465658, 13284334, -47862580, 6546604, 14396730, -14595373, 11346767, -28963648, 28341952,
+2888903, 4581120, -54575076, 48668960, 20786032, 15731928, 840740, -31355946, 28164784, -2194192,
+-14305462, 49760416, -10216117, -22410066, -11827803, 5661841, 14287746, 13340168, 3437585, -8858907,
+-59261960, -7079180, 14554570, 446677, 21465710, -31412854, 31777390, 2822867, 10608032, -31933618,
+-9310952, 4634270, 40568652, -17399986, 9327058, -29635274, 25617332, 14014478, 24166170, -9856413,
+10601590, 3743064, -32091996, -30939334, 16564615, 13211319, 25799868, 5082020, 33165738, -50752016,
+-65947076, 10001905, -14059575, 36653252, -24426016, -5764920, 4102768, -28524488, 1205812, -17246442,
+14385456, 20117626, 1887101, 16214038, 18264348, 4926328, -16830904, -8971113, 29492466, 14871324,
+3678103, 4613332, -9069360, 127238, 17891760, 9534291, -14792941, -8866423, 16637093, -2986613,
+10303627, 9910100, -6632503, -9210557, -8841190, -562104, 8800925, 3417183, 11305428, 15796353,
+1183800, -1183264, 13253732, 158377, 2531346, 3562139, -5782637, 3903052, -9987410, 4884989,
+1844152, -490700, 4165045, -4853850, -45926084, 41895260, -9034464, -10115185, -16340203, -4774930,
+-36211944, -67626408, 23363548, 19417548, -2970507, -13943611, -27540940, -4553202, -8535174, -14653892,
+26658862, -60483340, -25834228, -31933618, -9511742, -46055472, -4234838, -6944425, -1642288, -7722351,
+-9330816, 7410429, -448824, -20391968, -6377490, -473520, -27886686, -14913200, -8225399, 2020782,
+21472688, -11033234, 43035572, -22501870, -3224984, 18078592, -19197430, 11650636, 2441689, -29521458,
+-44141528, -10843182, 11259794, 40223980, 17443472, -30862562, -13063143, -88550952, -29646012, -6421513,
+18597208, 48029544, -2579128, -51536388, 2826625, 27919434, -10331544, -2487860, 29606284, 31149250,
+71547176, -79177720, -15399068, 11144903, 19955492, -25046638, -29721710, -42385960, -42083164, -23584740,
+-19617800, -5595806, -3104725, -48978196, -20365124, -18022756, 17976586, -9342628, -4945118, 43898324,
+33204930, 2542084, -6437619, -2160369, -27355184, -1360968, 9513889, -19807852, -10712722, 3554086,
+12221329, -8508867, -9844065, -6706055, 13631689, -9375914, 14279693, 825171, 14738717, 10434623,
+10532334, -8502425, 5173825, -20846160, 10308995, -2973728, 5926518, -18488224, -14462765, -2335925,
+4321274, -10561325, -140123, -23405424, -4480725, -3111167, 9421011, 11864847, -15181636, 29759828,
+106300, 10787884, 6152541, 21418466, 21298206, -1498944, 13295071, -25519622, 6718940, -10059887,
+-62293668, 14647449, -10263898, 18991272, -16876000, -17424146, 1804960, -25824564, 4948876, -26047366,
+-57982, -4191888, -9900436, 13153337, -19279572, -25356414, -23046794, -29853244, -4582193, -2906082,
+34029024, 7820599, -23992224, -35992364, 5264556, -381178, 9152038, -6704444, 20820928, -23548232,
+-9015673, -33229088, -21013128, -9293772, 1611150, -13824426, 35506496, -11878269, -29420526, 9646497,
+36841156, 26714160, 11274826, -25355876, -16223702, -2285996, 33510408, 63504312, -54761, 12758737,
+-11587822, -61495880, -13045963, 5934034, 23854786, 53064856, -28672128, -35470524, 21540872, 10261214,
+-11865921, 1964948, -19096498, 12433393, -51688856, -5731097, 3567507, 12970801, -30928596, 36621040,
+-50523848, -57897232, -53111564, 27376122, -10424959, 51448340, -70762272, -30838402, 6340446, 73117520,
+-5233955, -12728136, -39464844, -14439680, -4050154, 35377108, -2338610, 75162, 2749316, 6330782,
+1352915, -302258, -14512694, -12715788, 17435956, 7610682, 2709051, -37958384, 10248329, -9616969,
+-3827353, -19564112, 1582696, -1586454, -2913599, -44727788, 4854924, -9763534, -4436701, -3723737,
+8323647, 7516, 3491272, -154082, 984621, -537, 923955, -16245177, -2454037, -10413685,
+-8324721, 7936026, 8860518, -13030931, 1221918, -9261023, 12949863, -4433480, -20117626, 3221762,
+36753644, 10874857, -67126040, -12328704, -46494096, 19996294, 3267933, -92053496, 5662915, -28657632,
+-59905668, -46626700, -68291056, 41427644, -21265994, -53739704, -24575266, 16864190, -32395864, -27855010,
+-22036940, -13134547, -24240796, -23848880, -43906912, -31700080, -59998544, -33870112, -30866856, -10361072,
+-28639916, -6109054, -13778792, -1169305, 1558536, 7542500, 15915538, -16716013, 13105556, 1343251,
+29730300, 12941273, 18282066, 18879602, -56392384, -14949171, 43914428, -7984881, -28452548, -31519692,
+-23904714, 17580912, 71293776, -5097590, -1902671, -48678624, -50183472, -10730439, 9330816, 42789148,
+-3839164, 38970384, 13657459, -47837344, 84849760, 1315334, 65802120, -164819, -17995912, 35498980,
+-49028124, -62414464, -40786620, -137842144, -84461608, -27719182, 61938796, 38279968, -56251724, -36674188,
+-85418848, 41411536, 54633056, -43482248, -44268764, 9478993, 35647156, 52038360, 13466333, 29637958,
+-29263222, -15882252, -22403086, -32563368, -14468671, -3441880, 1737314, 743566, -18888192, 2141578,
+10527502, 3282966, -4211216, -13356275, -10078678, -15161235, -6913824, -22111028, -6151467, 12411382,
+-22416508, -34600256, -6620155, -23023710, -16834124, -3502546, -30329986, -22987738, -7592966, 12671227,
+12261595, 14719390, -2282238, -13287555, -4053376, 3940633, -9367861, 19947976, -1129576, 14305999,
+-1293859, -1436130, 13304735, 10633802, 15129559, 36419176, 21452824, 26664768, -23364622, -56738128,
+65994856, 63124744, -39915816, -51758652, -255014, 56654912, -6158446, -3252364, -17667884, 49557480,
+-5521181, -13168907, -1242856, 13728326, 25380036, 740345, -19138374, -21662742, 30499100, 2339684,
+-13190381, -32599876, 18514530, 10334228, -3786014, -25667262, 8022462, 11175505, 9116605, -16190953,
+-9863929, 2982318, 25114284, -7304666, 8955007, -36968396, -10424959, 180389, 24311662, -51495048,
+-9339406, 5154498, 37034428, -17721572, 5633387, -26234198, 3461207, 11068668, -18284212, -13677860,
+-2297808, 6194954, 11178726, -11602854, 637266, -45838040, 24732570, -7518341, 42928736, -26546656,
+19050864, -18006114, 19808390, 3924526, 13217762, 11559368, -33680596, 38067904, 7283191, 22050362,
+-37165424, 10477573, -9616432, 6085432, -10757282, 1682017, -2787971, 5258114, 12319577, -1748589,
+-15014669, -8559333, 3528853, -1760400, 674310, -5519570, -14651744, 5062693, 3557844, -4224101,
+-4347044, -24696, -4791573, 923955, -8113730, 0, -4115653, 6720550, 3478924, -2426657,
+-6113886, 2270427, -149787, -4847408, 3419868, -15526844, -462783, -1586990, 6708739, 537,
+17865454, -11809013, -12611098, -3914863, 9269613, -12809203, 19178640, -16135655, 7939784, -7779260,
+17451526, -15664283, 19235548, -10870562, 14966350, -13581760, 23455354, -22157200, 16898548, -4927401,
+12643310, -11843909, 12430172, -13454522, 14077292, -13554380, 11254425, -9014599, 12492986, -9713605,
+10415296, -9676561, 2931315, -3140158, 6311455, -4794794, 5186173, -4241817, 4224637, -3034931,
+5826123, -3564823, 2267206, -2790118, 3100430, -2425583, 1115081, 488553, -19240916, -42899744,
+-57077968, 41793788, 27759984, -32510218, -46368468, -22673670, 21611738, 11380053, 28716688, 30903900,
+6133750, -15440407, -4431333, 10873247, -10497974, -772557, 6470905, 1842541, 17344152, 12152073,
+5326297, -15427523, -477815, -9517648, 10104984, -16167868, -13992467, 11905112, -3656628, -6525129,
+-6404870, -11210938, -15403363, 1281511, 12758200, 11649025, 9782862, -3583613, -12685186, -11005854,
+-7668664, 13904420, 18874770, -8654359, -13030931, -5579163, 15677704, 8149164, 20941724, -14636175,
+-5512054, 8338142, -3837017, 789737, -2142115, 7503845, 4528506, 6082211, 1345399, -13996762,
+5927592, 2731062, -433255, 11032160, -5586142, -2680060, 1973001, -1901060, 1486596, -3970161,
+18591302, 4769025, -1412507, 17750562, 17745732, -17830556, -27095338, -9838159, -18532784, 681826,
+12393665, 3645354, -11053635, -13303124, -3503083, -2461553, 10778757, 5239860, 6747394, 10157061,
+6195491, -5456756, 6271726, 4530654, -13006772, -17394618, 5326297, -4483409, 8797704, 6546067,
+-9542880, -2427194, -3193845, -3379066, -11101954, -5983427, -623844, 3680787, 5406827, 15012521,
+-7329899, -5383205, 3876745, -3296388, -4307316, 8843875, 368293, 19603304, -47634944, -125403920,
+-46101644, 22486302, 65233036, 137773424, 92197912, 23722714, 34942244, -18420578, -56082608, -93145496,
+-81036904, -64435784, -18580028, 2469606, 44824428, 49407156, 105197704, 51060180, 33675764, -2652679,
+-22422950, -50646256, -26291642, -40956808, -47215648, -29086056, -24336896, -1829656, 13157632, 39343512,
+24333674, 28236188, 25683904, 25941602, 39046084, 3353833, 27056146, -5033702, -12139188, -32964948,
+-19625316, -49154292, -72321880, -63218160, 753767, -10768557, 19844360, 33960308, 18643916, 52395916,
+45781132, 66227320, 37723236, 44907640, 2237141, 2187212, -35413616, -57905824, -67627480, -81226960,
+-53359600, -66387308, -5566278, -288837, 31961000, 33481954, 80232136, 62986768, 89620936, 36341864,
+41909756, 17443472, -358093, -53494892, -87195888, -58430884, -69655776, -43438764, -47158740, -4438849,
+7319161, 27814208, 36553928, 49466212, 50548008, 48551384, 31836446, 34757560, 9083856, -6337224,
+-11926050, -39210368, -35694936, -46939160, -33120104, -46922516, -35701380, -3764002, 8404177, 24684250,
+37347960, 33252174, 34338800, 56484724, 20500416, 34473556, 26528402, -35676684, -64471756, -28008556,
+-56842280, -35904316, -19477140, -4107599, 5111011, 18074296, 32869384, 22803592, 35358856, 22369264,
+19273666, 7709467, -2115272, -20561082, -6688875, -9667971, -35938140, -33678448, -9214315, -3845070,
+1974611, 11789685, 13902272, 17510044, 14091788, 13838921, 5286568, 4650376, -111132, -7901129,
+-3817689, -2899103, -7912941, -12837120, -4249334, -6426345, -7367480, -877784, 3577708, 3899830,
+6002754, 7105487, 8892730, 5690832, 4224637, 1312113, -700617, -2229625, -3507378, -4809827,
+-5105643, -3714610, -2746632, -2067490, -1822677, 41876, 975494, 1110786, 1637456, 1739462,
+2630131, 3909494, 3933116, 1130113, 780610, 1054951, -507880, -2042257, -2685428, -3712462,
+-3187403, -2237141, -657130, -887985, -36507, 1539746, 1659468, 1575179, 2268817, 1816771,
+1059246, 74088, 63888, 117038, -257698, -1005022, -863288, -1021665, -999117, -1023813,
+-650688, -391379, 114890, 441308, 841814, 932545, 733903, -30602, 353798, 511638,
+343061, -132607, -598611, -794032, -656593, -408559, -60666, 222265, 530965, 369904,
+141734, 164819, 227633, -165893, -328028, -277025, -264677, -208843, 12348, -11274,
+26307, 100932, 104690, 48318, 19327, 10201, -9664, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
7642895,
-806917, -2076080, -2172180, 1324997, -3704409, -62277, -7210177, 5160403, 6544994, 4571456,
-6441377, -7742216, 619549, 1764695, -2765422, -2129230, -1893007, -9066676, -1531156, 5382668,
--9283572, -7543573, 4381404, 3972308, -5967320, -2084133, 3939559, 501437, 4790499, 2051384,
-4990215, -3142306, 949188, 688805, -1334661, 2323041, 1822140, 3388192, 1416802, -1501628,
-318364, 3786014, -1031866, -1727114, -649077, -4586488, -10122701, 6010807, 2911451, -3168075,
-4429722, -1780264, 483184, -158377, 2053531, -2672544, -702227, 5973763, -5637145, -2259690,
-1946157, 972810, -879931, -280247, 2610803, 296890, 2310156, -4014721, 4072703, 2097555,
--5239323, 4163434, 359704, 1506460, -634581, -1557463, -6114423, -1891396, -467615, 3134789,
--816581, 2563022, -1545115, 302258, 753767, 304406, 1809255, -327491, 114354, -224949,
--1248225, -566399, 231391, -666257, 75162, -33286, -293668, 1666447, 1666447, 871342,
-687732, 606127, 204011, 3758, 211527, 89121, -267362, -747324, -851477, -191663,
--88584, 11988327, -6839199, 2134062, -7562901, 949725, 1812476, -7624641, -9651328, 2455111,
--10474351, 2351495, -2705830, -689879, -6410776, -898722, -7203197, -3685082, 63888, -7622493,
-8172786, 2901251, -12666395, 1242319, -665183, -2264522, -5403069, 2767570, 6623377, 166967,
--452045, 6221260, -3600793, 114354, -2280628, 4134443, -4769025, 1443646, 5814312, -4997732,
-5088463, 1813013, 5500780, -434865, 1271847, -793495, -2279017, 7199439, -8863739, 2085744,
--3907347, -1676111, -1131724, -3204583, -2366527, -7056095, -4428648, -1074816, 4642860, -360777,
-1759326, 6492380, -126165, -5569499, -696322, 234613, 1776506, -2703145, 31139, -5478231,
-138513, -2212445, 1842541, 2894271, 4233764, 1531693, -2357937, -3064996, 4154844, -1354525,
--1874753, 801548, 2318746, 4793184, 598611, 1395864, -293132, 2821794, -525597, -2184528,
--1115081, -1067299, -83752, 1921998, 386010, -97711, -991064, 1862942, 10737, -660351,
--498753, -442919, -520228, 899259, -353261, -64961, -1046898, -2835215, -9854266, -76236,
--5921686, -1842004, -928787, -6916508, -909459, -1581622, 3495567, 8149701, 8203388, 1007170,
--3442416, 3298535, -7857643, -1094680, -2978560, 2790118, -11731166, 4192425, 2041720, -396748,
--3341485, -5044439, -2273112, -4156455, -3554622, 2234457, -739271, -4484483, -1267015, 943819,
-7740068, -268435, -7718593, 636192, 3396782, -69793, -2393371, 671089, 2978560, -8417062,
--603443, -3646427, 5985574, 3635690, 1060857, -7781944, 938450, 3028489, 4842576, 4499515,
--5072893, -2391760, 290984, -1583769, -1549410, 4190814, -2528662, 2571612, 760746, -3263102,
--678605, -4490389, 5491116, 2054068, -5300527, -3685082, 970126, 2859375, -4190278, -5354751,
--847719, 278099, -3502546, 778463, -1397475, 1820529, -3333432, 5066988, 2779381, 3820910,
-1160715, 509491, 3502546, 4647155, 614180, 1323387, -369904, 663572, 153545, -191126,
-593779, 391916, 614717, -733366, 104153, 355409, -180926, 79457, 1626182, -903554,
-433255, -1082869, -782758, -729071, 241592, 578747, 478352, 44560, -918586, -674847,
-1672353, -16796006, 5485210, 4909685, 8195335, -2076080, 5162014, -14483167, -3929895, 4588099,
-580357, -7146289, -1830730, -2354716, -12679817, -5120675, 1330903, -549756, -9028558, 5698885,
-8092256, -8235063, 6316823, -10795400, -3642132, -940061, 3768297, -27917, -4349728, 3000572,
-1522029, -694174, 4879083, -2313377, -3076270, -945430, -1738388, -3177202, 4800700, -3630858,
-1389422, 3589519, -683974, -2807298, -5275831, -621697, -3752191, -1135482, -4372277, -1171989,
-9862319, 222265, 6013491, -5459977, 5053029, -1546188, -7981123, -4714801, 4486094, -2898566,
--4037269, 2947958, -4754529, 4012573, 1118839, -1459752, 5268851, 4733054, 2126546, -5167383,
--5821828, -391379, 7856569, 1567126, 1230508, -4414690, 1200443, 2819646, -5912023, -2168422,
-1984812, 4173098, 2112050, 3534221, -150861, 45097, 1345935, 177167, -621160, 223338,
--460098, -742493, -2586644, -2098092, 692027, -1258962, -704912, 897111, 450972, 658741,
--114354, 1087701, -647466, 60666, -876173, 18254, -1073742, 571231, 245887, 779537,
--1415729, -8842801, -8396661, -5494874, 1229434, -1279900, 3675955, -2939905, 173946, 784368,
--2387465, -807991, 2327872, -2371896, 10190347, -6412386, 4810364, -1564979, -515933, -4507032,
--1113470, -488016, 7477001, -4834523, 824634, 1570884, -6996502, -4228396, -4725001, -4008815,
--8137353, -2711198, 3160022, 5785321, 3741990, -6483790, -9184788, -1906429, 459562, -4616553,
-1046898, -3089692, -4707821, -11436424, -5648419, -7973070, 4853313, -1955284, 3977140, -4519380,
--11117523, -5844914, 734976, -2157684, -3528853, -1543504, -4269735, 6173479, 718870, 3652870,
-4877472, 1330366, -15569, -3776887, 353261, 5245229, -701690, -3642669, -5060545, 8542690,
--6811282, -9626095, -6714108, -3834869, -5240934, 6249715, 9940165, -7641284, -5180268, 1333587,
-4918275, 7408282, 5938866, 4625143, 4617090, -1436130, -1749125, -2080375, -2103997, 1933272,
--1215476, 621697, -1523640, -2627983, -933619, -1855963, 1650878, -1110249, -2266132, -1305670,
--1226213, -2341294, -2537252, -1580011, -493384, 676994, 690953, 1416266, 363998, -4115653,
-704912, -523986, -1505386, 628676, -539018, -1153736, -2578591, -2165201, 283468, 135828,
--728534, -945967, 209380, -1174674, 935229, -1007170, -470299, -374736, -1768990, 2319819,
--18468360, 5707475, -1298691, 3273302, 10144176, 3978750, -2495376, 3428458, -7611219, 4712116,
-5548561, -10071161, -2132988, -5104569, 5697274, 4930086, 7726110, 8924942, -11587822, -5995775,
-1940252, 9959492, -3757023, 4619774, -11071352, -3374234, -3861176, -2377801, -6686727, 1641214,
--10954314, 7589744, -2119030, -1978906, 5606543, -362388, 1314797, 5881958, 207232, 4807142,
-3292093, -1406065, -1856500, -691490, -7663833, -5697274, -6995428, -486942, 14720464, 3361886,
-2896956, -389768, -1984275, -170188, 8827768, -1923609, 2810519, -16957068, 15627239, -3823595,
--2704756, 837519, 9603547, 3409130, -1516124, -5857799, 16749299, -3277060, -119185, 5274757,
--4136591, -94489, 2478733, -3825205, 3383897, 3196530, 13859859, -6925635, -8525510, -1662152,
-4219806, -5260261, 1257352, 3477850, 1243930, -3111704, 1472100, 3563212, -2191507, 237834,
--3824669, -1328756, -1040993, -3310346, 4345970, -3155727, -2471217, 1831804, 4832, -3729105,
--197569, 773631, 1693828, 72478, 1973001, -1423782, -983548, -1182727, 1377611, -1454920,
-2340220, 124017, -774168, 885300, 2443837, -4173098, -163746, -1162862, 7885560, 4374424,
-8788040, -3671123, -2227478, 5017596, -8319889, 7280507, 8323647, -4335233, -820339, -13362180,
-519154, 4453881, 3582540, -2914672, -9126806, -18401250, 185220, -3216931, -8791798, 1918240,
-5727339, -8049843, -3494493, -8769786, 4273493, 390842, -1399623, -2986613, -3866008, 9233643,
-10788421, 4132296, 5083094, -2534031, -5581847, 15090904, 3669513, -2697240, -9035001, 6472516,
-164283, 8633421, -881005, 10693395, 5293011, 7451769, 6283001, 3153043, 8298414, 10387378,
--410169, 1835025, -3460133, -213138, 5617281, 2292439, 3004867, -9382893, -3515968, -2061047,
--8188892, -7829189, -5198521, 4225174, 8810052, 11558294, 15149423, 3295314, 1225676, 12193412,
--5009006, -9367324, -3336116, -4792110, 7849590, 6404870, 2384244, -8875013, -2499134, 1470489,
-1166621, -1802276, -4153234, 1145683, 925565, 4985920, -1324997, -2899103, 481573, 897648,
-1138166, 7516, -32749, 921271, 2221035, -1729261, -1706713, 69793, -305480, -2390686,
--634581, -3025805, 3113851, 955093, -2317135, -173409, 2078764, -1222455, -297427, -1828046,
-863288, 1071058, -875100, 2712272, 2017024, -384936, 14025753, -13481365, -6387153, -1893544,
-5318244, -12620761, 7829726, -12436615, 5983963, -136365, 6356015, 10102837, -4262755, 9217537,
-10106058, 9586904, -5700496, 8070244, -8883066, -7121056, -1171989, -5528160, -166430, -4769561,
-7927973, -6034429, 1683627, -5959804, -10350871, -4897874, -2239826, 12306692, -10486163, 9669582,
-4231617, -14532559, 16467978, 3962644, 1773822, 11504070, 1992865, 409096, -6648610, -147103,
--3741990, 13130789, 5527623, 9168681, -3681861, -2307471, 6328635, 10915123, -11595338, 11314554,
-2027761, -1977296, -2209761, -10983842, 5179194, -5247913, 2155537, 361314, -9903121, 3203509,
-8285529, -7698192, 5237713, 3339874, 11621645, 1115618, -836982, 6957847, 10160282, 702764,
--5902359, 6725382, -7947300, -4246649, 2064806, -3331284, 2092186, -2697776, 975494, 4279935,
-3186866, -3359738, 2781528, -1795833, 2237141, -2401424, 7074885, 578747, 6755447, -954020,
-1671279, -1574642, -616328, -2308008, 4275640, 1664300, -3569118, 3563212, 4288525, -622233,
--613107, 2485712, -205622, -370441, 3572876, -258235, 867047, 2167885, 1503775, -707596,
-2731062, -2419677, -425202, 376347, 736587, 456877, -157840, -478352, -2730526, 1142998,
-4062502, 1005022, -11422466, -8178155, 12395276, -15913928, 3994857, -8480413, 9436580, -10118943,
-15422691, 5330592, 1486596, -13409425, 6818798, 11314554, 2991445, -6904697, -4478041, -3962644,
-10521596, 5701032, -14687178, 2054068, -10389526, -597537, 1191317, -8905615, 11645804, 11659762,
--5301064, 2535105, 7933879, -9709847, -1466195, -3010235, -8009041, 17019344, -6187438, -3845070,
--8575976, -14374719, -2263448, 231928, -4942434, 2096481, -11855183, 1010928, 854699, -2415919,
-9400610, -1993402, -7279433, 3761318, 15032, -5502390, 4708358, 20171850, -4019553, 4770635,
-1127966, -13771276, -2204929, 12206834, 5552319, 12117176, -1214402, 6986301, -9654013, 4303557,
-4318053, 1385664, -8196408, 7567196, 2732136, -21410412, 1708860, -3907347, 14332843, -5534602,
-11141682, 10225243, 8309688, -1073742, 3221762, 433792, 886911, -1444183, -2297271, 5528697,
-2312303, -129923, -3641596, -5230197, -1141388, 2162516, 3692061, 2541547, 4720706, 106837,
--1186485, -1976759, -1423782, 1624571, 2859375, -315143, 2275259, 1380295, 489089, 1953136,
--300111, 2043868, -3402151, -4381404, -5594195, -331786, 2683281, 1112933, -2572149, -1033477,
--1768453, -2133525, 3581466, 997506, 1657321, 1402307, -25104620, 28077812, 3183645, 10995116,
--20620674, 11034308, 14405320, -16913044, 6245956, 8156680, 6280853, -10980621, 1279900, 1766305,
--3798899, 6179921, 12890271, -10608569, -8846559, -3331284, 10906533, 9407052, 13370233, -798864,
-5566815, -10215043, -2776696, -2763275, 2070174, 6203007, 17130478, 10134512, 6140193, 3135326,
--710817, 8100845, -3191161, -14967961, -3014530, 4207458, 4596689, -8822400, -6703907, -10890426,
-1939178, -1003412, 3636764, -7191923, 12474196, 12175159, -10806675, 25227564, 1031329, -2483565,
--276489, -5435281, -1273458, -1777043, -10392747, 18254, -98247, 6584722, -21485038, 5079336,
--7697655, 15360414, 18607946, 7956427, 7657927, 3346853, 1125281, 16760036, -3296924, -12661564,
-10580115, -5787469, 2747169, 8201240, 15117211, 1986959, 1382443, -12354473, -650688, 3413962,
-9554155, -4358855, 5136781, 2378338, -3819300, 9667971, 1542430, 4248260, -2976412, -1061931,
--2949569, 323733, 1018444, -1653562, -195958, 2803003, -1743220, 2842732, 1911797, -2248416,
--329102, 1237488, -989990, 83215, -2116345, -6781754, -2006287, -1163936, 6827388, 8420283,
-743566, 1107565, -2560338, -3022583, 627602, 782221, -3678640, -2937758, -1954210, -1775969,
-2214593, -4123169, -278099, -3069828, 10419054, 2117956, -6991133, 6806450, 10147397, 8825084,
-5636071, 10497437, -12432857, -7890929, 1562294, -11251741, -2681133, -1803886, 2669322, -2821794,
--7232725, -9165460, -5426155, 4669167, 7965017, -13595719, 3043521, -1344325, -221728, -16405701,
--14670535, -2497524, -11345693, 5506148, -12957379, 923418, 7159174, 10162966, -8786966, 12059731,
-3207267, -1111323, -2493229, 17844516, -4801774, -810675, -14127758, -7955890, 11794517, -815507,
-4561792, -13673028, -14890652, -4045859, -8333847, -1413044, 815507, -5486821, -6957847, 4297652,
--6446209, 644782, -9574556, -5202279, -85362, -15986405, 1642288, 10622528, 2179696, 5607617,
-11669963, 19772956, -18854370, 3525095, -11567958, -11355894, -6211060, -8616778, -5397700, -5063767,
-19466402, 10669236, 10856067, 2271501, 3316789, -13894756, 863825, -4860829, 2415919, -6005975,
-8723615, 11319386, 1291175, -5055714, -3274913, -9577240, 1066763, 5964099, 3472481, -2284386,
-6301254, 2986613, 6660958, -1345935, -986232, 1101122, 4406637, -2642479, 1998770, -3906810,
--5275294, 3998615, 1633698, 851477, 1091459, -7435126, -4231617, -6442, 5953899, -4804995,
-3088618, -6451041, -1950989, -1009317, 2513630, 1582159, -1710471, -1557999, -8391829, 3684008,
-20176146, 21372832, 23446226, -16902306, 1559610, 12788802, 10126996, -9744744, -18935974, -1930588,
--2570001, -14818711, -8452496, 29025388, 2554432, 2275796, 11039140, -929324, 4887136, -3642132,
--11099269, 7822209, 6563784, -15098958, -21626770, -16660178, -13208635, -12530567, 1522029, 4065187,
-6805913, -8221105, 8661338, 2338610, -3912715, -8716099, -23085, 838592, -13688061, -10598906,
-1881733, -2185602, 2182917, -8123394, 7116761, 2472291, -7696045, -16747688, -6487011, -5423470,
--22464290, -6817724, 2390149, 11585674, -826244, 13656922, -2090039, -765041, -19113678, -3760781,
-7868380, 3992172, -32160178, 9652939, 3059091, -8672613, -5247913, -9059697, -10394358, -54761,
-735513, -9907416, -3070902, 6938520, 9693204, 15266461, -11142756, 927713, 8639864, 8053,
--24551644, -19368156, 4295, -4835597, 6437082, 214748, -5868536, -8473970, 4322348, -2151242,
-3945464, 10541460, -52076, -4597763, -8224326, -15075335, -5068599, 1367410, -2348810, -2186138,
-1230508, 1446867, 7100655, -3093987, 931471, 3031173, 1574642, -5151814, 853088, -969589,
--13276818, 1835562, -4786204, -5622649, 2388539, 2128693, -3886409, -805843, 5053029, 1897302,
-1484985, -4490389, -5454609, -1486596, -237297, 801548, 3643743, -5913633, -520228, -3706557,
--2312840, -4874788, 8249559, -6431714, 22857280, -18993420, -11588896, -3609383, -36208720, -18747532,
-188442, -22945326, 18351858, -7857106, -7260642, 2397666, 41649372, 20299090, 1551557, 8831527,
--1655710, -10764799, -841814, -16837346, -12174622, 6260989, 6259915, 7773354, -11688753, 15649787,
-9608379, 17663054, -17343078, 3187403, 25884694, 2762201, 1285806, 5429376, -24363738, 6649683,
--5989869, 4420595, -9681393, -22840636, -1205275, 9766219, 11649025, 3347390, -3419331, 2076080,
--861141, 8087961, -17336636, -25121264, 4758824, -8913668, 15422154, -5691369, -6157910, 20306606,
-4658429, 8970039, 1763621, -16405164, -6729677, -1591285, 9244380, 26671746, 20360830, -5598490,
--23046794, -46171, -2518462, 9031242, -14159433, -17484274, -10037875, 8935679, -18030272, -2386391,
--15111306, 550830, 12410308, 84826, -22724136, -4559108, 3149285, 6481106, 2961917, -13768055,
--9493488, -14762876, 2467996, -2712272, -6524056, -4595078, -6524592, 1789928, -2669859, -5822365,
--1707250, 4977867, 58519, 310848, -7673496, 337155, -653909, -4406100, 477278, 10063645,
-3249680, 2275259, -9753871, 4362076, -1032403, -578210, 1583769, 327491, -155156, -1450088,
--5807333, -5937256, -5319317, 7193534, 5791764, -2094870, -14555644, -4799089, -5400922, -589484,
--7751342, -41739028, 15823196, 12939663, -6300717, -27665494, -6257768, -10795937, -11325829, 11880953,
-14763950, -1759326, 3899830, -31416612, 10800769, -39266200, -10057203, -3621731, 7599945, 19407346,
-31022548, 12710956, -18225694, 3959960, 21629992, 2659122, 6469295, 11582453, -18512920, -7329899,
--3052111, 5319317, -13083544, -7208029, -4070555, -9969156, -7556458, 12991739, 12860743, 3078418,
-941672, 22165790, -4357781, 10207527, -25495462, 16546898, 4678830, -23267448, 2221035, 7090991,
--21740050, -3070365, -21262236, 6788196, 8785356, 9209484, -14349486, -1513439, 14096620, -12137578,
-56371, -2207613, 23347980, -14188961, 17176112, 8449274, -21955336, 18877456, -16189879, 12032888,
-16175384, -16755204, 9181029, -14347875, -17535278, -26627186, -22025666, -24383066, -5827197, 3948686,
--7320772, 20680268, 21757768, -9585830, 19168440, -3310883, -4130148, 24109798, -5516349, -16771847,
-11344082, -2838974, -12874701, -10239202, 9613211, 1328756, 4955856, 7263864, 1298154, 5899138,
-9680319, -3008088, 10863583, 7089918, 5396090, 5783174, 866510, 3382287, 9233106, 7036767,
-9364102, 964757, 7771744, -1906966, 508954, 6354404, -3403762, -12702366, 5766531, 1484448,
--9664, -224412, 5510980, -11323681, 5546414, 7129646, 6176700, -7689065, 6323803, -33299956,
--15965467, -16601659, 28340342, 443992, 10331544, -5106716, 40367324, 6009196, -27659052, 1563905,
-29551522, -11533061, 6261526, -5384279, 2185602, -17951890, -24041080, 37048924, 26269630, -10706280,
-20068772, 7607998, 26230440, 29845728, -9261560, -7597261, 26526254, 19296752, 1782411, -8966818,
--13793824, -14499810, 12063489, 23298050, 10759967, -4793721, 15560130, -8860518, 14748381, -7243999,
-21692270, 38679940, 29402272, -32351304, 14162655, -5906117, -13396540, -897648, 10698227, 10253698,
-71093520, -7701950, -1160178, -12123619, -13106093, 13443248, 25419228, -6813966, 19223736, 16281147,
--2665564, 106300, -14333380, 13686450, 11499238, 37549288, 38270308, 46488728, 19100794, -12494060,
--10143102, -22093312, 20662550, -32440962, 22684406, -30483530, 17199734, -11081552, -18454938, 12527883,
--48966384, -38911328, 6571300, 7028714, -14317810, -13986561, 22214644, 10766409, -21254182, 2573759,
--5172215, -11928198, 3304441, 5311264, 1352915, 5386963, 6525666, 11698954, -6091874, 1851131,
--7276749, -12673375, -7842074, 2368138, 629213, 16232829, 3155727, -4601521, -14018236, 1610613,
--5813775, -4922033, -6470368, 4140885, 9692667, 3029026, 8357470, 6801081, 11186779, -5443334,
-8424041, 605590, 2159832, -1364189, 341450, -7396471, 7740068, 18891414, 10034654, -2639258,
--2581812, 16175921, 13660680, -11278047, 4492536, 8491687, -5342940, 23117662, 5710696, -51896088,
-12696997, 7584912, -38488276, 3005403, -6087043, 2328409, 14945949, -1187559, -35544612, -5705864,
--10922639, -1306207, 26192322, 31453120, -16901770, -3678103, -14099304, 8301635, -27125940, -52989160,
--18685256, -15482283, 3379603, 1631014, 24984362, -35976256, 18045842, -7784628, -3524558, 15848429,
-7615514, 26311506, 6344741, 10604811, 27843200, -30455076, 39475044, 31717260, 16631724, 29801168,
--10779294, 11804718, -26700202, -4622459, -13206488, 24835648, -20839718, 5939403, -45296336, -55945172,
-38339564, -950798, 24892020, -16428787, 16622597, -10450192, 3945464, -5646809, -36751500, -10941429,
--24434068, -10984916, 13873281, 55938728, 20082730, -47818556, -10610180, 13696114, -10882373, -6466610,
--31753766, -15802258, 25200720, -8477192, 6379637, 5705327, -19667192, 13497472, -2570001, 1804960,
--40760852, -11142756, -533650, -17957258, -10324565, 2392297, -27494770, 3737695, 6545530, -21674552,
--17402134, -30943628, -23399518, -1366873, -12833899, -5450314, 1080184, -8261907, -8705362, -2889439,
--13771276, -5887327, 2061047, 10398116, -12133819, -3579318, -20961588, 8341364, 5435281, 13324062,
--8561480, 13824426, -27222040, -769336, 189515, -1071058, 4371203, -3601330, 3073049, -11870216,
--13200582, 968515, 5485210, 489089, -10383620, 3747359, 3213173, -32349156, 17044578, 16993574,
-30245696, -14798847, 11097659, -17011292, -19687594, 8731669, 40186936, 65001644, -4016331, -4385162,
-1415192, -1523103, -28939490, 45441828, 21932250, 24123758, 18740016, -13285944, 15887621, -25774636,
--36856724, -6500433, 27763742, 17863842, -13113609, -8672076, -1719598, 22237194, 1068910, 16161425,
-16115791, 26341034, 8976482, -16850768, -15687368, 14972793, -17669496, -13486734, 8016557, 28913720,
-27017492, -30879742, -23540178, 15600932, 19066434, 57007100, -13082470, -31402116, -32087700, 27143656,
--20448340, 25586730, 29451664, 58629524, 125220848, -28218472, -15677168, -47116864, -74298104, -24069534,
--37274948, 4002373, 52123188, -7930120, 27749246, 38837780, 25971668, -14803142, -45863808, -75967768,
-42547020, -3322694, 48361332, -25037512, -65227132, 22519588, -38500088, -52144124, -26193394, -16866874,
-16884590, 15849503, 29901562, -2608656, -13931263, -2707440, -769873, -27220428, -25503516, 12761422,
--8725226, 26002806, 24590298, -11999602, 24501178, -19402514, 1036161, 23164906, 3068217, -37358164,
-10371272, -19084688, -2671470, -6511171, -4364761, -27721866, -21641266, 3748970, 32841468, 33950644,
--31709744, -4433480, 40008156, 37050000, 734976, 7307350, -34916472, -19571092, 6017249, 20143396,
--30034706, 7180649, 24789478, 11335492, 9904195, 1985886, 15991237, 22781580, 12150999, -3463891,
-4209068, -24753508, 5171141, -22518514, -62959924, 16456704, -26035018, 26817238, 4336307, 15193447,
-13346074, -57531088, -40653476, -19862076, -12330851, -12984223, -23265300, -6868727, -38953204, -24584392,
-19397146, -25140054, 49272940, -35811976, 4175782, 10588168, -3427921, 4823249, -1664300, 12200391,
--10896869, -11669963, -1688459, 9283572, -1116692, 21487722, -19349364, 5008469, 31016106, 10358387,
-4999879, 16138876, 2339147, -11904039, -7537131, 25398290, 5970005, -38679400, -17005924, -31272194,
--14105209, 42787000, 39747236, -40070436, -4110821, -45635100, -10757819, -3247532, 11041824, 23779086,
--37491308, 25869124, -31864900, -4841502, -21471078, 49216032, -9458055, 34901440, 32422172, 71979896,
--32508608, 30062624, 5145908, 28601260, 10115185, 21978958, -35405564, -32185948, 48010220, 2987687,
--1455457, -33085206, 38821672, -12351789, 20077362, -34843996, 75006232, -39321500, 41868952, -49400176,
-20114942, -37055368, 21178484, -34076272, 26107496, -21314312, 15460809, -11572253, 8649527, -18011482,
--11293080, -8134668, -2043331, 7382512, 1447404, 6107444, 723165, 6024229, -2551748, -8794482,
--14889041, 7664369, 7811472, 2979097, 7173133, -4862977, 2953864, -3676492, 3087008, 26501558,
--6230924, -17594870, 2837900, -9599252, -19441170, 7099044, -10524280, 8709657, -8797704, 7395397,
--16978006, 7854422, -22016540, 14797236, 32257888, 5945846, -56051472, -24031952, -34308736, 3098282,
--7174206, -76059040, -33950104, -19098646, -40024800, -24470040, -76687176, -64516852, -10896332, 29090350,
--41765872, -24464670, -5238787, -35352948, -7376070, -1854352, -34250752, -8333847, 8187282, 2809446,
--45778984, -25529822, -25697864, -13743358, -15586973, -3696893, -31488552, 28142774, 18603650, 39716636,
-57140780, 49953692, 13443785, 52759916, 21669720, 10316511, -21991844, 19209242, 19781546, 16005732,
--5021891, -16565689, -7233262, 14075145, 23949812, 119257824, 16995186, 25492778, 18344880, 49469432,
-19685982, 43604120, 78221016, -36071284, -74626664, 10613401, 49328236, 87534120, 39274792, -73326904,
-11101954, -17354890, 109931832, 81397144, 98470712, 90629712, -76586248, -49923628, 64742872, 77786688,
--21246666, -43140264, -52604224, 121950768, 81408424, -3844533, -102709312, 26230976, -2865817, -21717502,
-29727080, 9084930, -7928510, -20881594, 738734, 17762910, 45991048, 33282238, -25531970, -9330280,
--5955509, -4284230, 26549340, 19869592, 20897164, 1758252, 11818676, 42812772, 29296508, 7332046,
-17835388, -9767293, 21947282, 28271622, 36383204, 46302432, 36264020, 28407988, 1777580, -4354023,
--7570954, -1293322, -18269180, -9139154, -7845832, -22765474, -30268246, -34422552, -60958472, -33574832,
--21412022, -35668092, -67876056, -46369004, -39075076, -45615772, -54954108, -57827976, -18354006, -20566450,
--30636002, -15802258, -17985712, -10758356, -16540993, -15659451, -15633681, -11038603, -14913737, -8804146,
--11905649, -8205535, -9474161, -4892505, -10787347, -661962, -10654203, -14405320, -19047644, -55984900,
-89550072, 72307384, -62753768, 13925358, -1546725, 10008884, -2543158, -6264747, 22971632, -23256174,
-22428856, -9247065, -38118, 8860518, 7140920, 7996156, -199179, -13190918, -8543764, 14376866,
--11996917, -1560147, 13755707, -7628936, -8087424, -11083163, -20382842, -20350628, 14702747, -7445326,
-5375689, -12809203, 2393371, -27133456, -5058398, 7393786, 17279190, -11119670, 3637301, 11929809,
-18932216, -4608500, 15640660, -12875775, 50216220, -18745922, 17194364, 2291902, 9654550, -9469329,
-13170517, -5383205, 35715336, -5887327, 10922639, -25099788, 32743756, -17348446, -1553168, -4888747,
-4581120, -9846213, 19566798, -22836878, 18367428, -20927766, 26931056, -28410672, 34207268, -22895396,
--12613782, -14349486, -7482907, 1384590, -22939420, 14784888, -13721347, 12975096, 746787, 17931488,
-6430103, 12414603, 21478594, 9452686, -7908646, 5922223, 4978404, -3047816, 3550864, -6754373,
-7500087, -3754875, -358093, -6590628, 14937359, -15068356, 1003412, -1265405, 12009802, -2247342,
-2114735, -2768643, 4540854, -7035157, 5053566, -5982353, -3716221, 11911018, 10077067, -3005940,
--11156714, 7070053, 8821326, 10283225, -9771051, 8068633, -6952479, 6138045, 825707, 2535105,
--10517301, 10877005, -4558034, -12102681, 9652402, 10157061, -9035001, -1322313, -2520072, 3102040,
--8841727, 11764452, -11287711, 4388920, -12305618, 10839961, -9156870, 9398462, -7572028, 11461120,
--12918725, 13728326, -12785044, 7002408, -10838350, 10714870, -12283070, 9883257, -8145406, 12229919,
--13602698, 13637058, -12063489, 11424613, -9146670, 10601590, -9862319, 9051644, -7923141, 7361037,
--8099235, 7096897, -7517267, 7987029, -8238821, 7865159, -6879464, 6964290, -7106561, 6679211,
--6463389, 7480223, -6381785, 7296613, -5342403, 6330245, -5215164, 5325760, -5482526, 6524056,
--4828617, 4996121, -3924526, 5651640, -4201015, 4116189, -3739843, 2783139, -2858838, 3567507,
--2429878, 3813394, -2928631, 3885335, -2945274, -21910238, -45354856, -49906448, 42559904, 10810970,
--13088376, -67655400, -27162984, 37809132, 7754564, 27328876, 30455076, -10899016, -19043884, 975494,
-7259032, 5662915, 5093295, -11908871, -8752606, -6583111, 82678, 18394272, 9949829, -820876,
-4166655, -5215164, -8819178, -5595806, -4598836, 392990, 5452461, -4105989, 7022809, 7395397,
--24838332, -10992969, -10972568, 13338558, 9273908, -781147, -11548093, -15604153, 13670344, 3064459,
-9175124, 12779675, -23041426, -15304042, 4233227, 18629420, 9403294, -26199300, -16156593, -21276194,
--10155450, 5537824, 4832375, -8736500, 9660455, -3918621, -9192841, 4158065, 8800388, -6527277,
-2096481, -217970, -8220568, -716186, -2906619, -18599356, -18821084, -1126355, -20080046, -15022722,
-625455, 6118181, -4388383, 22174916, 16340740, 9344238, 683437, -2095407, -9873593, 12294344,
-5990943, 7183333, 6892886, -6178848, -2633352, -443992, 3496104, -11581379, -14153528, -1923072,
-6191732, 942745, 7841000, 5509906, -7399692, 2448131, 4297115, 3075197, -2406256, 7894687,
--9844602, -5825587, 18009334, 10392210, -11149735, -8324184, -5698885, -9886478, 10912438, -350040,
-1522566, 5050882, 3205656, -98784, -472446, -7366406, 4648765, 2833068, 6404870, -3626563,
--1137093, 4216584, -467078, -4865124, 17603460, -43889732, -119597656, -45456860, 27228482, 57605176,
-135826192, 79844512, 21707302, 28443420, -23544474, -43951476, -96218544, -64855080, -49749144, -16258599,
-19710678, 52969832, 41136660, 51425256, 49648212, 33692944, -11370389, -39173324, -33960844, -34847216,
--28055264, -40397924, 12395812, -25528212, 1855963, 18830210, 34720516, 19644644, 32497334, 42927660,
-779537, 12829067, 925565, -629750, -23997592, -3140695, -21357798, -41599980, -65758096, -36571648,
--20083268, 5340255, 4970351, 39119100, 54206244, 52197812, 62039192, 9082782, 40701256, 16194711,
--3710852, -38144680, -37465536, -50746112, -66733592, -45414448, -51722680, -32668058, 150324, 16078747,
-37087580, 60052232, 88310968, 70868032, 64095944, 34803192, -13290776, -13013751, -34743064, -73721504,
--56751552, -93176096, -61374008, -27088358, -20738786, 29219736, 55914568, 76793480, 54081156, 41544680,
-25140054, 28824062, 25190520, -3951907, -29118804, -27618250, -43774308, -48277044, -38566120, -26242788,
--24559160, -23181012, 10590316, 22772990, 40052716, 47722992, 38987564, 34430604, 19511500, 789737,
-912681, 4541928, -29020558, -48980880, -20198158, -42761232, -48688288, -1525787, 12060805, 27204860,
-27924266, 18027588, 29516088, 17330730, 23592792, -4872104, -601295, -20654498, -12605192, -10909217,
--13858786, -15613280, -12814572, 2238215, -5405217, 174483, 14308684, 20166482, 12486544, 11132018,
--2901787, -3350075, -312459, -137439, -6236830, -7050726, -1332514, -4100620, -4500589, -2435247,
--46171, -4284767, -1619740, 9019968, 3000035, 4254702, 5668820, 4853850, 1740536, 1660005,
--1074816, -3818763, -5586142, -4014721, -6545530, -5371394, -1459215, 1023276, 2261300, 4454418,
-3533148, 3265249, 4241817, 2949032, -1825898, 780073, 1706713, -1261647, -3488587, -3667365,
--2982855, -232465, -1333587, -2130841, -1321776, 1217086, -141197, 1245541, 3205656, 3160022,
-2630668, 1465658, 234076, 48855, -992674, -945430, -1580011, -1459215, -1132261, -970126,
--1589138, -840203, -823023, -603980, 463320, 1924682, 1089311, 1620276, 1845225, 1533840,
-927176, 237297, -589484, -1021665, -1619203, -1198296, -1356136, -1244467, -443455, -28991,
--504659, 249108, 1144072, 1394791, 908386, 567473, 618475, 690953, -158377, -599685,
--666794, -564251, -517544, -256087, -206158, -27380, 44560, 108985, 33823, 61740,
-52076, 56371, 16106, 21475, },
+806917, -2076080, -2172180, 1324997, -3704409, -62277, -7210177, 5160403, 6544994, 4571456,
+6441377, -7742216, 619549, 1764695, -2765422, -2129230, -1893007, -9066676, -1531156, 5382668,
+-9283572, -7543573, 4381404, 3972308, -5967320, -2084133, 3939559, 501437, 4790499, 2051384,
+4990215, -3142306, 949188, 688805, -1334661, 2323041, 1822140, 3388192, 1416802, -1501628,
+318364, 3786014, -1031866, -1727114, -649077, -4586488, -10122701, 6010807, 2911451, -3168075,
+4429722, -1780264, 483184, -158377, 2053531, -2672544, -702227, 5973763, -5637145, -2259690,
+1946157, 972810, -879931, -280247, 2610803, 296890, 2310156, -4014721, 4072703, 2097555,
+-5239323, 4163434, 359704, 1506460, -634581, -1557463, -6114423, -1891396, -467615, 3134789,
+-816581, 2563022, -1545115, 302258, 753767, 304406, 1809255, -327491, 114354, -224949,
+-1248225, -566399, 231391, -666257, 75162, -33286, -293668, 1666447, 1666447, 871342,
+687732, 606127, 204011, 3758, 211527, 89121, -267362, -747324, -851477, -191663,
+-88584, 11988327, -6839199, 2134062, -7562901, 949725, 1812476, -7624641, -9651328, 2455111,
+-10474351, 2351495, -2705830, -689879, -6410776, -898722, -7203197, -3685082, 63888, -7622493,
+8172786, 2901251, -12666395, 1242319, -665183, -2264522, -5403069, 2767570, 6623377, 166967,
+-452045, 6221260, -3600793, 114354, -2280628, 4134443, -4769025, 1443646, 5814312, -4997732,
+5088463, 1813013, 5500780, -434865, 1271847, -793495, -2279017, 7199439, -8863739, 2085744,
+-3907347, -1676111, -1131724, -3204583, -2366527, -7056095, -4428648, -1074816, 4642860, -360777,
+1759326, 6492380, -126165, -5569499, -696322, 234613, 1776506, -2703145, 31139, -5478231,
+138513, -2212445, 1842541, 2894271, 4233764, 1531693, -2357937, -3064996, 4154844, -1354525,
+-1874753, 801548, 2318746, 4793184, 598611, 1395864, -293132, 2821794, -525597, -2184528,
+-1115081, -1067299, -83752, 1921998, 386010, -97711, -991064, 1862942, 10737, -660351,
+-498753, -442919, -520228, 899259, -353261, -64961, -1046898, -2835215, -9854266, -76236,
+-5921686, -1842004, -928787, -6916508, -909459, -1581622, 3495567, 8149701, 8203388, 1007170,
+-3442416, 3298535, -7857643, -1094680, -2978560, 2790118, -11731166, 4192425, 2041720, -396748,
+-3341485, -5044439, -2273112, -4156455, -3554622, 2234457, -739271, -4484483, -1267015, 943819,
+7740068, -268435, -7718593, 636192, 3396782, -69793, -2393371, 671089, 2978560, -8417062,
+-603443, -3646427, 5985574, 3635690, 1060857, -7781944, 938450, 3028489, 4842576, 4499515,
+-5072893, -2391760, 290984, -1583769, -1549410, 4190814, -2528662, 2571612, 760746, -3263102,
+-678605, -4490389, 5491116, 2054068, -5300527, -3685082, 970126, 2859375, -4190278, -5354751,
+-847719, 278099, -3502546, 778463, -1397475, 1820529, -3333432, 5066988, 2779381, 3820910,
+1160715, 509491, 3502546, 4647155, 614180, 1323387, -369904, 663572, 153545, -191126,
+593779, 391916, 614717, -733366, 104153, 355409, -180926, 79457, 1626182, -903554,
+433255, -1082869, -782758, -729071, 241592, 578747, 478352, 44560, -918586, -674847,
+1672353, -16796006, 5485210, 4909685, 8195335, -2076080, 5162014, -14483167, -3929895, 4588099,
+580357, -7146289, -1830730, -2354716, -12679817, -5120675, 1330903, -549756, -9028558, 5698885,
+8092256, -8235063, 6316823, -10795400, -3642132, -940061, 3768297, -27917, -4349728, 3000572,
+1522029, -694174, 4879083, -2313377, -3076270, -945430, -1738388, -3177202, 4800700, -3630858,
+1389422, 3589519, -683974, -2807298, -5275831, -621697, -3752191, -1135482, -4372277, -1171989,
+9862319, 222265, 6013491, -5459977, 5053029, -1546188, -7981123, -4714801, 4486094, -2898566,
+-4037269, 2947958, -4754529, 4012573, 1118839, -1459752, 5268851, 4733054, 2126546, -5167383,
+-5821828, -391379, 7856569, 1567126, 1230508, -4414690, 1200443, 2819646, -5912023, -2168422,
+1984812, 4173098, 2112050, 3534221, -150861, 45097, 1345935, 177167, -621160, 223338,
+-460098, -742493, -2586644, -2098092, 692027, -1258962, -704912, 897111, 450972, 658741,
+-114354, 1087701, -647466, 60666, -876173, 18254, -1073742, 571231, 245887, 779537,
+-1415729, -8842801, -8396661, -5494874, 1229434, -1279900, 3675955, -2939905, 173946, 784368,
+-2387465, -807991, 2327872, -2371896, 10190347, -6412386, 4810364, -1564979, -515933, -4507032,
+-1113470, -488016, 7477001, -4834523, 824634, 1570884, -6996502, -4228396, -4725001, -4008815,
+-8137353, -2711198, 3160022, 5785321, 3741990, -6483790, -9184788, -1906429, 459562, -4616553,
+1046898, -3089692, -4707821, -11436424, -5648419, -7973070, 4853313, -1955284, 3977140, -4519380,
+-11117523, -5844914, 734976, -2157684, -3528853, -1543504, -4269735, 6173479, 718870, 3652870,
+4877472, 1330366, -15569, -3776887, 353261, 5245229, -701690, -3642669, -5060545, 8542690,
+-6811282, -9626095, -6714108, -3834869, -5240934, 6249715, 9940165, -7641284, -5180268, 1333587,
+4918275, 7408282, 5938866, 4625143, 4617090, -1436130, -1749125, -2080375, -2103997, 1933272,
+-1215476, 621697, -1523640, -2627983, -933619, -1855963, 1650878, -1110249, -2266132, -1305670,
+-1226213, -2341294, -2537252, -1580011, -493384, 676994, 690953, 1416266, 363998, -4115653,
+704912, -523986, -1505386, 628676, -539018, -1153736, -2578591, -2165201, 283468, 135828,
+-728534, -945967, 209380, -1174674, 935229, -1007170, -470299, -374736, -1768990, 2319819,
+-18468360, 5707475, -1298691, 3273302, 10144176, 3978750, -2495376, 3428458, -7611219, 4712116,
+5548561, -10071161, -2132988, -5104569, 5697274, 4930086, 7726110, 8924942, -11587822, -5995775,
+1940252, 9959492, -3757023, 4619774, -11071352, -3374234, -3861176, -2377801, -6686727, 1641214,
+-10954314, 7589744, -2119030, -1978906, 5606543, -362388, 1314797, 5881958, 207232, 4807142,
+3292093, -1406065, -1856500, -691490, -7663833, -5697274, -6995428, -486942, 14720464, 3361886,
+2896956, -389768, -1984275, -170188, 8827768, -1923609, 2810519, -16957068, 15627239, -3823595,
+-2704756, 837519, 9603547, 3409130, -1516124, -5857799, 16749299, -3277060, -119185, 5274757,
+-4136591, -94489, 2478733, -3825205, 3383897, 3196530, 13859859, -6925635, -8525510, -1662152,
+4219806, -5260261, 1257352, 3477850, 1243930, -3111704, 1472100, 3563212, -2191507, 237834,
+-3824669, -1328756, -1040993, -3310346, 4345970, -3155727, -2471217, 1831804, 4832, -3729105,
+-197569, 773631, 1693828, 72478, 1973001, -1423782, -983548, -1182727, 1377611, -1454920,
+2340220, 124017, -774168, 885300, 2443837, -4173098, -163746, -1162862, 7885560, 4374424,
+8788040, -3671123, -2227478, 5017596, -8319889, 7280507, 8323647, -4335233, -820339, -13362180,
+519154, 4453881, 3582540, -2914672, -9126806, -18401250, 185220, -3216931, -8791798, 1918240,
+5727339, -8049843, -3494493, -8769786, 4273493, 390842, -1399623, -2986613, -3866008, 9233643,
+10788421, 4132296, 5083094, -2534031, -5581847, 15090904, 3669513, -2697240, -9035001, 6472516,
+164283, 8633421, -881005, 10693395, 5293011, 7451769, 6283001, 3153043, 8298414, 10387378,
+-410169, 1835025, -3460133, -213138, 5617281, 2292439, 3004867, -9382893, -3515968, -2061047,
+-8188892, -7829189, -5198521, 4225174, 8810052, 11558294, 15149423, 3295314, 1225676, 12193412,
+-5009006, -9367324, -3336116, -4792110, 7849590, 6404870, 2384244, -8875013, -2499134, 1470489,
+1166621, -1802276, -4153234, 1145683, 925565, 4985920, -1324997, -2899103, 481573, 897648,
+1138166, 7516, -32749, 921271, 2221035, -1729261, -1706713, 69793, -305480, -2390686,
+-634581, -3025805, 3113851, 955093, -2317135, -173409, 2078764, -1222455, -297427, -1828046,
+863288, 1071058, -875100, 2712272, 2017024, -384936, 14025753, -13481365, -6387153, -1893544,
+5318244, -12620761, 7829726, -12436615, 5983963, -136365, 6356015, 10102837, -4262755, 9217537,
+10106058, 9586904, -5700496, 8070244, -8883066, -7121056, -1171989, -5528160, -166430, -4769561,
+7927973, -6034429, 1683627, -5959804, -10350871, -4897874, -2239826, 12306692, -10486163, 9669582,
+4231617, -14532559, 16467978, 3962644, 1773822, 11504070, 1992865, 409096, -6648610, -147103,
+-3741990, 13130789, 5527623, 9168681, -3681861, -2307471, 6328635, 10915123, -11595338, 11314554,
+2027761, -1977296, -2209761, -10983842, 5179194, -5247913, 2155537, 361314, -9903121, 3203509,
+8285529, -7698192, 5237713, 3339874, 11621645, 1115618, -836982, 6957847, 10160282, 702764,
+-5902359, 6725382, -7947300, -4246649, 2064806, -3331284, 2092186, -2697776, 975494, 4279935,
+3186866, -3359738, 2781528, -1795833, 2237141, -2401424, 7074885, 578747, 6755447, -954020,
+1671279, -1574642, -616328, -2308008, 4275640, 1664300, -3569118, 3563212, 4288525, -622233,
+-613107, 2485712, -205622, -370441, 3572876, -258235, 867047, 2167885, 1503775, -707596,
+2731062, -2419677, -425202, 376347, 736587, 456877, -157840, -478352, -2730526, 1142998,
+4062502, 1005022, -11422466, -8178155, 12395276, -15913928, 3994857, -8480413, 9436580, -10118943,
+15422691, 5330592, 1486596, -13409425, 6818798, 11314554, 2991445, -6904697, -4478041, -3962644,
+10521596, 5701032, -14687178, 2054068, -10389526, -597537, 1191317, -8905615, 11645804, 11659762,
+-5301064, 2535105, 7933879, -9709847, -1466195, -3010235, -8009041, 17019344, -6187438, -3845070,
+-8575976, -14374719, -2263448, 231928, -4942434, 2096481, -11855183, 1010928, 854699, -2415919,
+9400610, -1993402, -7279433, 3761318, 15032, -5502390, 4708358, 20171850, -4019553, 4770635,
+1127966, -13771276, -2204929, 12206834, 5552319, 12117176, -1214402, 6986301, -9654013, 4303557,
+4318053, 1385664, -8196408, 7567196, 2732136, -21410412, 1708860, -3907347, 14332843, -5534602,
+11141682, 10225243, 8309688, -1073742, 3221762, 433792, 886911, -1444183, -2297271, 5528697,
+2312303, -129923, -3641596, -5230197, -1141388, 2162516, 3692061, 2541547, 4720706, 106837,
+-1186485, -1976759, -1423782, 1624571, 2859375, -315143, 2275259, 1380295, 489089, 1953136,
+-300111, 2043868, -3402151, -4381404, -5594195, -331786, 2683281, 1112933, -2572149, -1033477,
+-1768453, -2133525, 3581466, 997506, 1657321, 1402307, -25104620, 28077812, 3183645, 10995116,
+-20620674, 11034308, 14405320, -16913044, 6245956, 8156680, 6280853, -10980621, 1279900, 1766305,
+-3798899, 6179921, 12890271, -10608569, -8846559, -3331284, 10906533, 9407052, 13370233, -798864,
+5566815, -10215043, -2776696, -2763275, 2070174, 6203007, 17130478, 10134512, 6140193, 3135326,
+-710817, 8100845, -3191161, -14967961, -3014530, 4207458, 4596689, -8822400, -6703907, -10890426,
+1939178, -1003412, 3636764, -7191923, 12474196, 12175159, -10806675, 25227564, 1031329, -2483565,
+-276489, -5435281, -1273458, -1777043, -10392747, 18254, -98247, 6584722, -21485038, 5079336,
+-7697655, 15360414, 18607946, 7956427, 7657927, 3346853, 1125281, 16760036, -3296924, -12661564,
+10580115, -5787469, 2747169, 8201240, 15117211, 1986959, 1382443, -12354473, -650688, 3413962,
+9554155, -4358855, 5136781, 2378338, -3819300, 9667971, 1542430, 4248260, -2976412, -1061931,
+-2949569, 323733, 1018444, -1653562, -195958, 2803003, -1743220, 2842732, 1911797, -2248416,
+-329102, 1237488, -989990, 83215, -2116345, -6781754, -2006287, -1163936, 6827388, 8420283,
+743566, 1107565, -2560338, -3022583, 627602, 782221, -3678640, -2937758, -1954210, -1775969,
+2214593, -4123169, -278099, -3069828, 10419054, 2117956, -6991133, 6806450, 10147397, 8825084,
+5636071, 10497437, -12432857, -7890929, 1562294, -11251741, -2681133, -1803886, 2669322, -2821794,
+-7232725, -9165460, -5426155, 4669167, 7965017, -13595719, 3043521, -1344325, -221728, -16405701,
+-14670535, -2497524, -11345693, 5506148, -12957379, 923418, 7159174, 10162966, -8786966, 12059731,
+3207267, -1111323, -2493229, 17844516, -4801774, -810675, -14127758, -7955890, 11794517, -815507,
+4561792, -13673028, -14890652, -4045859, -8333847, -1413044, 815507, -5486821, -6957847, 4297652,
+-6446209, 644782, -9574556, -5202279, -85362, -15986405, 1642288, 10622528, 2179696, 5607617,
+11669963, 19772956, -18854370, 3525095, -11567958, -11355894, -6211060, -8616778, -5397700, -5063767,
+19466402, 10669236, 10856067, 2271501, 3316789, -13894756, 863825, -4860829, 2415919, -6005975,
+8723615, 11319386, 1291175, -5055714, -3274913, -9577240, 1066763, 5964099, 3472481, -2284386,
+6301254, 2986613, 6660958, -1345935, -986232, 1101122, 4406637, -2642479, 1998770, -3906810,
+-5275294, 3998615, 1633698, 851477, 1091459, -7435126, -4231617, -6442, 5953899, -4804995,
+3088618, -6451041, -1950989, -1009317, 2513630, 1582159, -1710471, -1557999, -8391829, 3684008,
+20176146, 21372832, 23446226, -16902306, 1559610, 12788802, 10126996, -9744744, -18935974, -1930588,
+-2570001, -14818711, -8452496, 29025388, 2554432, 2275796, 11039140, -929324, 4887136, -3642132,
+-11099269, 7822209, 6563784, -15098958, -21626770, -16660178, -13208635, -12530567, 1522029, 4065187,
+6805913, -8221105, 8661338, 2338610, -3912715, -8716099, -23085, 838592, -13688061, -10598906,
+1881733, -2185602, 2182917, -8123394, 7116761, 2472291, -7696045, -16747688, -6487011, -5423470,
+-22464290, -6817724, 2390149, 11585674, -826244, 13656922, -2090039, -765041, -19113678, -3760781,
+7868380, 3992172, -32160178, 9652939, 3059091, -8672613, -5247913, -9059697, -10394358, -54761,
+735513, -9907416, -3070902, 6938520, 9693204, 15266461, -11142756, 927713, 8639864, 8053,
+-24551644, -19368156, 4295, -4835597, 6437082, 214748, -5868536, -8473970, 4322348, -2151242,
+3945464, 10541460, -52076, -4597763, -8224326, -15075335, -5068599, 1367410, -2348810, -2186138,
+1230508, 1446867, 7100655, -3093987, 931471, 3031173, 1574642, -5151814, 853088, -969589,
+-13276818, 1835562, -4786204, -5622649, 2388539, 2128693, -3886409, -805843, 5053029, 1897302,
+1484985, -4490389, -5454609, -1486596, -237297, 801548, 3643743, -5913633, -520228, -3706557,
+-2312840, -4874788, 8249559, -6431714, 22857280, -18993420, -11588896, -3609383, -36208720, -18747532,
+188442, -22945326, 18351858, -7857106, -7260642, 2397666, 41649372, 20299090, 1551557, 8831527,
+-1655710, -10764799, -841814, -16837346, -12174622, 6260989, 6259915, 7773354, -11688753, 15649787,
+9608379, 17663054, -17343078, 3187403, 25884694, 2762201, 1285806, 5429376, -24363738, 6649683,
+-5989869, 4420595, -9681393, -22840636, -1205275, 9766219, 11649025, 3347390, -3419331, 2076080,
+-861141, 8087961, -17336636, -25121264, 4758824, -8913668, 15422154, -5691369, -6157910, 20306606,
+4658429, 8970039, 1763621, -16405164, -6729677, -1591285, 9244380, 26671746, 20360830, -5598490,
+-23046794, -46171, -2518462, 9031242, -14159433, -17484274, -10037875, 8935679, -18030272, -2386391,
+-15111306, 550830, 12410308, 84826, -22724136, -4559108, 3149285, 6481106, 2961917, -13768055,
+-9493488, -14762876, 2467996, -2712272, -6524056, -4595078, -6524592, 1789928, -2669859, -5822365,
+-1707250, 4977867, 58519, 310848, -7673496, 337155, -653909, -4406100, 477278, 10063645,
+3249680, 2275259, -9753871, 4362076, -1032403, -578210, 1583769, 327491, -155156, -1450088,
+-5807333, -5937256, -5319317, 7193534, 5791764, -2094870, -14555644, -4799089, -5400922, -589484,
+-7751342, -41739028, 15823196, 12939663, -6300717, -27665494, -6257768, -10795937, -11325829, 11880953,
+14763950, -1759326, 3899830, -31416612, 10800769, -39266200, -10057203, -3621731, 7599945, 19407346,
+31022548, 12710956, -18225694, 3959960, 21629992, 2659122, 6469295, 11582453, -18512920, -7329899,
+-3052111, 5319317, -13083544, -7208029, -4070555, -9969156, -7556458, 12991739, 12860743, 3078418,
+941672, 22165790, -4357781, 10207527, -25495462, 16546898, 4678830, -23267448, 2221035, 7090991,
+-21740050, -3070365, -21262236, 6788196, 8785356, 9209484, -14349486, -1513439, 14096620, -12137578,
+56371, -2207613, 23347980, -14188961, 17176112, 8449274, -21955336, 18877456, -16189879, 12032888,
+16175384, -16755204, 9181029, -14347875, -17535278, -26627186, -22025666, -24383066, -5827197, 3948686,
+-7320772, 20680268, 21757768, -9585830, 19168440, -3310883, -4130148, 24109798, -5516349, -16771847,
+11344082, -2838974, -12874701, -10239202, 9613211, 1328756, 4955856, 7263864, 1298154, 5899138,
+9680319, -3008088, 10863583, 7089918, 5396090, 5783174, 866510, 3382287, 9233106, 7036767,
+9364102, 964757, 7771744, -1906966, 508954, 6354404, -3403762, -12702366, 5766531, 1484448,
+-9664, -224412, 5510980, -11323681, 5546414, 7129646, 6176700, -7689065, 6323803, -33299956,
+-15965467, -16601659, 28340342, 443992, 10331544, -5106716, 40367324, 6009196, -27659052, 1563905,
+29551522, -11533061, 6261526, -5384279, 2185602, -17951890, -24041080, 37048924, 26269630, -10706280,
+20068772, 7607998, 26230440, 29845728, -9261560, -7597261, 26526254, 19296752, 1782411, -8966818,
+-13793824, -14499810, 12063489, 23298050, 10759967, -4793721, 15560130, -8860518, 14748381, -7243999,
+21692270, 38679940, 29402272, -32351304, 14162655, -5906117, -13396540, -897648, 10698227, 10253698,
+71093520, -7701950, -1160178, -12123619, -13106093, 13443248, 25419228, -6813966, 19223736, 16281147,
+-2665564, 106300, -14333380, 13686450, 11499238, 37549288, 38270308, 46488728, 19100794, -12494060,
+-10143102, -22093312, 20662550, -32440962, 22684406, -30483530, 17199734, -11081552, -18454938, 12527883,
+-48966384, -38911328, 6571300, 7028714, -14317810, -13986561, 22214644, 10766409, -21254182, 2573759,
+-5172215, -11928198, 3304441, 5311264, 1352915, 5386963, 6525666, 11698954, -6091874, 1851131,
+-7276749, -12673375, -7842074, 2368138, 629213, 16232829, 3155727, -4601521, -14018236, 1610613,
+-5813775, -4922033, -6470368, 4140885, 9692667, 3029026, 8357470, 6801081, 11186779, -5443334,
+8424041, 605590, 2159832, -1364189, 341450, -7396471, 7740068, 18891414, 10034654, -2639258,
+-2581812, 16175921, 13660680, -11278047, 4492536, 8491687, -5342940, 23117662, 5710696, -51896088,
+12696997, 7584912, -38488276, 3005403, -6087043, 2328409, 14945949, -1187559, -35544612, -5705864,
+-10922639, -1306207, 26192322, 31453120, -16901770, -3678103, -14099304, 8301635, -27125940, -52989160,
+-18685256, -15482283, 3379603, 1631014, 24984362, -35976256, 18045842, -7784628, -3524558, 15848429,
+7615514, 26311506, 6344741, 10604811, 27843200, -30455076, 39475044, 31717260, 16631724, 29801168,
+-10779294, 11804718, -26700202, -4622459, -13206488, 24835648, -20839718, 5939403, -45296336, -55945172,
+38339564, -950798, 24892020, -16428787, 16622597, -10450192, 3945464, -5646809, -36751500, -10941429,
+-24434068, -10984916, 13873281, 55938728, 20082730, -47818556, -10610180, 13696114, -10882373, -6466610,
+-31753766, -15802258, 25200720, -8477192, 6379637, 5705327, -19667192, 13497472, -2570001, 1804960,
+-40760852, -11142756, -533650, -17957258, -10324565, 2392297, -27494770, 3737695, 6545530, -21674552,
+-17402134, -30943628, -23399518, -1366873, -12833899, -5450314, 1080184, -8261907, -8705362, -2889439,
+-13771276, -5887327, 2061047, 10398116, -12133819, -3579318, -20961588, 8341364, 5435281, 13324062,
+-8561480, 13824426, -27222040, -769336, 189515, -1071058, 4371203, -3601330, 3073049, -11870216,
+-13200582, 968515, 5485210, 489089, -10383620, 3747359, 3213173, -32349156, 17044578, 16993574,
+30245696, -14798847, 11097659, -17011292, -19687594, 8731669, 40186936, 65001644, -4016331, -4385162,
+1415192, -1523103, -28939490, 45441828, 21932250, 24123758, 18740016, -13285944, 15887621, -25774636,
+-36856724, -6500433, 27763742, 17863842, -13113609, -8672076, -1719598, 22237194, 1068910, 16161425,
+16115791, 26341034, 8976482, -16850768, -15687368, 14972793, -17669496, -13486734, 8016557, 28913720,
+27017492, -30879742, -23540178, 15600932, 19066434, 57007100, -13082470, -31402116, -32087700, 27143656,
+-20448340, 25586730, 29451664, 58629524, 125220848, -28218472, -15677168, -47116864, -74298104, -24069534,
+-37274948, 4002373, 52123188, -7930120, 27749246, 38837780, 25971668, -14803142, -45863808, -75967768,
+42547020, -3322694, 48361332, -25037512, -65227132, 22519588, -38500088, -52144124, -26193394, -16866874,
+16884590, 15849503, 29901562, -2608656, -13931263, -2707440, -769873, -27220428, -25503516, 12761422,
+-8725226, 26002806, 24590298, -11999602, 24501178, -19402514, 1036161, 23164906, 3068217, -37358164,
+10371272, -19084688, -2671470, -6511171, -4364761, -27721866, -21641266, 3748970, 32841468, 33950644,
+-31709744, -4433480, 40008156, 37050000, 734976, 7307350, -34916472, -19571092, 6017249, 20143396,
+-30034706, 7180649, 24789478, 11335492, 9904195, 1985886, 15991237, 22781580, 12150999, -3463891,
+4209068, -24753508, 5171141, -22518514, -62959924, 16456704, -26035018, 26817238, 4336307, 15193447,
+13346074, -57531088, -40653476, -19862076, -12330851, -12984223, -23265300, -6868727, -38953204, -24584392,
+19397146, -25140054, 49272940, -35811976, 4175782, 10588168, -3427921, 4823249, -1664300, 12200391,
+-10896869, -11669963, -1688459, 9283572, -1116692, 21487722, -19349364, 5008469, 31016106, 10358387,
+4999879, 16138876, 2339147, -11904039, -7537131, 25398290, 5970005, -38679400, -17005924, -31272194,
+-14105209, 42787000, 39747236, -40070436, -4110821, -45635100, -10757819, -3247532, 11041824, 23779086,
+-37491308, 25869124, -31864900, -4841502, -21471078, 49216032, -9458055, 34901440, 32422172, 71979896,
+-32508608, 30062624, 5145908, 28601260, 10115185, 21978958, -35405564, -32185948, 48010220, 2987687,
+-1455457, -33085206, 38821672, -12351789, 20077362, -34843996, 75006232, -39321500, 41868952, -49400176,
+20114942, -37055368, 21178484, -34076272, 26107496, -21314312, 15460809, -11572253, 8649527, -18011482,
+-11293080, -8134668, -2043331, 7382512, 1447404, 6107444, 723165, 6024229, -2551748, -8794482,
+-14889041, 7664369, 7811472, 2979097, 7173133, -4862977, 2953864, -3676492, 3087008, 26501558,
+-6230924, -17594870, 2837900, -9599252, -19441170, 7099044, -10524280, 8709657, -8797704, 7395397,
+-16978006, 7854422, -22016540, 14797236, 32257888, 5945846, -56051472, -24031952, -34308736, 3098282,
+-7174206, -76059040, -33950104, -19098646, -40024800, -24470040, -76687176, -64516852, -10896332, 29090350,
+-41765872, -24464670, -5238787, -35352948, -7376070, -1854352, -34250752, -8333847, 8187282, 2809446,
+-45778984, -25529822, -25697864, -13743358, -15586973, -3696893, -31488552, 28142774, 18603650, 39716636,
+57140780, 49953692, 13443785, 52759916, 21669720, 10316511, -21991844, 19209242, 19781546, 16005732,
+-5021891, -16565689, -7233262, 14075145, 23949812, 119257824, 16995186, 25492778, 18344880, 49469432,
+19685982, 43604120, 78221016, -36071284, -74626664, 10613401, 49328236, 87534120, 39274792, -73326904,
+11101954, -17354890, 109931832, 81397144, 98470712, 90629712, -76586248, -49923628, 64742872, 77786688,
+-21246666, -43140264, -52604224, 121950768, 81408424, -3844533, -102709312, 26230976, -2865817, -21717502,
+29727080, 9084930, -7928510, -20881594, 738734, 17762910, 45991048, 33282238, -25531970, -9330280,
+-5955509, -4284230, 26549340, 19869592, 20897164, 1758252, 11818676, 42812772, 29296508, 7332046,
+17835388, -9767293, 21947282, 28271622, 36383204, 46302432, 36264020, 28407988, 1777580, -4354023,
+-7570954, -1293322, -18269180, -9139154, -7845832, -22765474, -30268246, -34422552, -60958472, -33574832,
+-21412022, -35668092, -67876056, -46369004, -39075076, -45615772, -54954108, -57827976, -18354006, -20566450,
+-30636002, -15802258, -17985712, -10758356, -16540993, -15659451, -15633681, -11038603, -14913737, -8804146,
+-11905649, -8205535, -9474161, -4892505, -10787347, -661962, -10654203, -14405320, -19047644, -55984900,
+89550072, 72307384, -62753768, 13925358, -1546725, 10008884, -2543158, -6264747, 22971632, -23256174,
+22428856, -9247065, -38118, 8860518, 7140920, 7996156, -199179, -13190918, -8543764, 14376866,
+-11996917, -1560147, 13755707, -7628936, -8087424, -11083163, -20382842, -20350628, 14702747, -7445326,
+5375689, -12809203, 2393371, -27133456, -5058398, 7393786, 17279190, -11119670, 3637301, 11929809,
+18932216, -4608500, 15640660, -12875775, 50216220, -18745922, 17194364, 2291902, 9654550, -9469329,
+13170517, -5383205, 35715336, -5887327, 10922639, -25099788, 32743756, -17348446, -1553168, -4888747,
+4581120, -9846213, 19566798, -22836878, 18367428, -20927766, 26931056, -28410672, 34207268, -22895396,
+-12613782, -14349486, -7482907, 1384590, -22939420, 14784888, -13721347, 12975096, 746787, 17931488,
+6430103, 12414603, 21478594, 9452686, -7908646, 5922223, 4978404, -3047816, 3550864, -6754373,
+7500087, -3754875, -358093, -6590628, 14937359, -15068356, 1003412, -1265405, 12009802, -2247342,
+2114735, -2768643, 4540854, -7035157, 5053566, -5982353, -3716221, 11911018, 10077067, -3005940,
+-11156714, 7070053, 8821326, 10283225, -9771051, 8068633, -6952479, 6138045, 825707, 2535105,
+-10517301, 10877005, -4558034, -12102681, 9652402, 10157061, -9035001, -1322313, -2520072, 3102040,
+-8841727, 11764452, -11287711, 4388920, -12305618, 10839961, -9156870, 9398462, -7572028, 11461120,
+-12918725, 13728326, -12785044, 7002408, -10838350, 10714870, -12283070, 9883257, -8145406, 12229919,
+-13602698, 13637058, -12063489, 11424613, -9146670, 10601590, -9862319, 9051644, -7923141, 7361037,
+-8099235, 7096897, -7517267, 7987029, -8238821, 7865159, -6879464, 6964290, -7106561, 6679211,
+-6463389, 7480223, -6381785, 7296613, -5342403, 6330245, -5215164, 5325760, -5482526, 6524056,
+-4828617, 4996121, -3924526, 5651640, -4201015, 4116189, -3739843, 2783139, -2858838, 3567507,
+-2429878, 3813394, -2928631, 3885335, -2945274, -21910238, -45354856, -49906448, 42559904, 10810970,
+-13088376, -67655400, -27162984, 37809132, 7754564, 27328876, 30455076, -10899016, -19043884, 975494,
+7259032, 5662915, 5093295, -11908871, -8752606, -6583111, 82678, 18394272, 9949829, -820876,
+4166655, -5215164, -8819178, -5595806, -4598836, 392990, 5452461, -4105989, 7022809, 7395397,
+-24838332, -10992969, -10972568, 13338558, 9273908, -781147, -11548093, -15604153, 13670344, 3064459,
+9175124, 12779675, -23041426, -15304042, 4233227, 18629420, 9403294, -26199300, -16156593, -21276194,
+-10155450, 5537824, 4832375, -8736500, 9660455, -3918621, -9192841, 4158065, 8800388, -6527277,
+2096481, -217970, -8220568, -716186, -2906619, -18599356, -18821084, -1126355, -20080046, -15022722,
+625455, 6118181, -4388383, 22174916, 16340740, 9344238, 683437, -2095407, -9873593, 12294344,
+5990943, 7183333, 6892886, -6178848, -2633352, -443992, 3496104, -11581379, -14153528, -1923072,
+6191732, 942745, 7841000, 5509906, -7399692, 2448131, 4297115, 3075197, -2406256, 7894687,
+-9844602, -5825587, 18009334, 10392210, -11149735, -8324184, -5698885, -9886478, 10912438, -350040,
+1522566, 5050882, 3205656, -98784, -472446, -7366406, 4648765, 2833068, 6404870, -3626563,
+-1137093, 4216584, -467078, -4865124, 17603460, -43889732, -119597656, -45456860, 27228482, 57605176,
+135826192, 79844512, 21707302, 28443420, -23544474, -43951476, -96218544, -64855080, -49749144, -16258599,
+19710678, 52969832, 41136660, 51425256, 49648212, 33692944, -11370389, -39173324, -33960844, -34847216,
+-28055264, -40397924, 12395812, -25528212, 1855963, 18830210, 34720516, 19644644, 32497334, 42927660,
+779537, 12829067, 925565, -629750, -23997592, -3140695, -21357798, -41599980, -65758096, -36571648,
+-20083268, 5340255, 4970351, 39119100, 54206244, 52197812, 62039192, 9082782, 40701256, 16194711,
+-3710852, -38144680, -37465536, -50746112, -66733592, -45414448, -51722680, -32668058, 150324, 16078747,
+37087580, 60052232, 88310968, 70868032, 64095944, 34803192, -13290776, -13013751, -34743064, -73721504,
+-56751552, -93176096, -61374008, -27088358, -20738786, 29219736, 55914568, 76793480, 54081156, 41544680,
+25140054, 28824062, 25190520, -3951907, -29118804, -27618250, -43774308, -48277044, -38566120, -26242788,
+-24559160, -23181012, 10590316, 22772990, 40052716, 47722992, 38987564, 34430604, 19511500, 789737,
+912681, 4541928, -29020558, -48980880, -20198158, -42761232, -48688288, -1525787, 12060805, 27204860,
+27924266, 18027588, 29516088, 17330730, 23592792, -4872104, -601295, -20654498, -12605192, -10909217,
+-13858786, -15613280, -12814572, 2238215, -5405217, 174483, 14308684, 20166482, 12486544, 11132018,
+-2901787, -3350075, -312459, -137439, -6236830, -7050726, -1332514, -4100620, -4500589, -2435247,
+-46171, -4284767, -1619740, 9019968, 3000035, 4254702, 5668820, 4853850, 1740536, 1660005,
+-1074816, -3818763, -5586142, -4014721, -6545530, -5371394, -1459215, 1023276, 2261300, 4454418,
+3533148, 3265249, 4241817, 2949032, -1825898, 780073, 1706713, -1261647, -3488587, -3667365,
+-2982855, -232465, -1333587, -2130841, -1321776, 1217086, -141197, 1245541, 3205656, 3160022,
+2630668, 1465658, 234076, 48855, -992674, -945430, -1580011, -1459215, -1132261, -970126,
+-1589138, -840203, -823023, -603980, 463320, 1924682, 1089311, 1620276, 1845225, 1533840,
+927176, 237297, -589484, -1021665, -1619203, -1198296, -1356136, -1244467, -443455, -28991,
+-504659, 249108, 1144072, 1394791, 908386, 567473, 618475, 690953, -158377, -599685,
+-666794, -564251, -517544, -256087, -206158, -27380, 44560, 108985, 33823, 61740,
+52076, 56371, 16106, 21475, },
{
8093329,
-5188321, 158377, 290984, 6376416, 1604707, -3152506, 2183991, 4246649, -2122251, -3498788,
--12596602, 684510, -4220342, 8437463, -4155918, 4235375, 3432216, -430034, 2780455, 4671314,
-1301375, 1097901, -2270964, -2764348, -2117419, -3485903, 3074660, 1821066, -1617055, 2748779,
--1864553, -2786897, -3300682, -1604707, -2600066, 228707, 76773, -486942, 5808944, -3336653,
-4758824, -1703491, -1164473, 3172907, -1926830, 993211, -1926293, 3477850, -987843, -9861782,
-2971581, 346819, 1249299, 4962835, 2603287, 359167, -1086090, -3260954, 8484171, -4465156,
-3324305, 1719598, -3452617, 3555696, 1623498, -4126927, 3314104, -4256850, 285078, -440234,
-3766150, 613107, 3935264, -1501091, -8671539, -1864553, -2060511, -4140349, -3666292, -3674345,
-3051038, 1324461, 1097364, 1826972, 1868311, 363462, 909459, -1021129, 654983, -753767,
--300648, -2127620, 17180, -707059, 1657857, -157840, -463856, -325881, 217970, -1103270,
-425739, -479426, 645319, -352724, 159451, -1271847, -108448, -1589138, -926639, -907312,
-1342177, 15291157, -7649337, 782221, -528818, -517544, 3424163, -2832531, -11099269, -10234370,
-4713190, -3285650, -1014149, 2525441, 490700, 2491618, 2786360, -4913443, 2541010, 1733019,
--3505767, 3942780, 5973226, -4023311, -1376000, 225486, -6606734, -3027415, 577673, 7722888,
--1339493, -517544, -6583648, 3767223, -79994, -5911486, -2576444, 1946157, -970126, 1050656,
--5129265, -204548, 257161, -2139431, 5301064, 1279363, 1121523, 5119601, -630286, 6673843,
--2361158, -8679055, 3381750, 3277060, -3115462, -1406065, -1144609, 979789, 293132, 2308008,
--2060511, 1497870, -4779225, -297427, 2987687, -4570382, -618475, 2550674, 746251, -2431488,
-1451699, -1862405, 394600, 4313221, 1492501, -6133750, 7256884, 2672007, 2616709, -712428,
-4141422, 4611185, -2122251, -374199, 957778, 1124745, 1392643, 1899449, -279710, 82141,
-1399623, -292058, 136365, 845572, 2214593, -447213, 2257005, -167504, 488553, 1114007,
-239444, -754841, -264141, 737124, 720481, -214748, -1112933, -3708704, -8958228, -1068910,
-965294, 9891310, -3767223, 8477729, 2126009, -287226, 526134, 7584912, -1762547, -2072859,
--2194192, 5346698, 10856604, 2845416, -7485055, -10155987, -14450954, 1896228, -3774740, -6073621,
--3334505, -9418326, -44560, -4369593, 710817, 4526359, 4765266, -5368709, -4810364, -3413962,
-604517, -7990250, -871878, 2488934, -3619584, -1314260, 840203, 3227131, -4490925, 1176821,
-10566156, -433255, -512712, -3889630, 4400731, -1955284, 389231, 3363496, 4376035, 6505265,
--1037772, 964757, -1957968, -82141, -1110786, 865436, 10151692, -11273215, 252329, 2198487,
-5998459, -2488934, -2985002, -657130, -2818036, 8116952, -4468377, -10625749, -736050, -3166465,
--4451197, 2645700, -10523744, 3894999, -1125818, -2916283, 212601, 7438347, -2202245, -2789581,
--2866891, 3568581, -3341485, -901406, 627602, -299574, 1282585, 123480, 501437, 2211371,
-179852, 581968, -551366, 1778653, 390842, -348429, -2000381, -1070521, -150324, -1046361,
-2057289, 1257352, -1172526, 1539209, 155693, 231391, -1089848, 576599, -478352, 52076,
-531502, -16510928, 6165426, -5166309, 6919729, -6222334, -563714, 4786741, -9547712, -1644436,
-2912525, -2604361, 13914083, -5843303, -1760937, -5574868, -4654134, 7141457, 7952132, 3069828,
--9362492, -11311333, 10456098, 1745367, -10590852, 3949223, 392453, 5004174, -3139084, 4773856,
--6335614, 3080565, 10235444, 4218195, 4386236, 2313377, 182536, -2615635, 2141041, 787590,
--6978785, 106300, -2210835, -5140539, -5115843, -1955284, 4046933, -7373385, 1008244, -5337571,
--543313, -825707, 2433099, 4355097, 9248675, 3252901, -50466, 3961571, -4938676, -7283728,
--126702, 1682017, 759136, 8773544, -1995549, -1086090, -2805688, -1254667, 1253057, 4254702,
--1153736, 1771674, -4354560, 7097434, -1861332, -2496450, -1636383, 2291365, -3854196, 108448,
-4402342, -325881, -1256278, 637266, 3499325, 2739116, -537945, 2205466, -1883343, 1391033,
--1136019, 532576, 2508798, -895501, 1077500, 1050120, -1697586, 1698660, 1059246, 367220,
--722091, -1567126, -360777, 1901060, 1286343, -685047, 782758, -388695, 3156264, -301721,
--863825, -8252780, -1925756, -5356898, -547071, 10960220, 7005629, 4894652, -833224, -9647033,
-1345935, -6347962, -10225243, -3394635, 7358890, -5775658, -9066676, 2368138, 777926, -4517232,
-968515, 5159330, 1421097, -12085501, -3425237, 7594039, 8945880, 4460861, -10015864, -3634079,
-4563940, -1707250, -2156611, 649077, 3352759, 539018, 1239098, 10277320, 19327, 6216429,
-4818417, -79457, -4628364, -113817, -2731062, 6127308, -3504693, -5846524, 13422, 9614284,
-539018, 9550934, 5147519, 926102, 6170795, -1040993, 13260175, 1069984, 6560026, 7473780,
-691490, -6179921, -948651, -7393786, 3773666, -5298379, -2972117, -4885526, -3222299, -2344515,
-2426657, 820876, 3653407, -151398, -4224637, -3677029, 1373316, 6831146, -2024540, 1690070,
--7332046, 2323577, 6334540, 9727027, -3351148, -723702, 1610076, -3344169, -253940, 3211562,
--984621, 5899675, 388158, 1343251, 147103, 281320, 2175401, -1436667, -934692, -765578,
--443992, 597000, 730144, -1109712, 964757, -337155, -1177358, -1432372, 485868, -1359357,
--896574, -1705102, 831076, 1183800, -246961, 3328600, -2157147, 588411, -234613, -1883880,
-3167002, -911607, -448824, -1653562, 1797981, 1185948, -289373, 482647, 1586454, 10007811,
--14944339, -2750390, 12524125, -6211597, 2292976, -9658308, 4259534, 17617418, -2379412, 934155,
--741956, -12441447, 1007707, -789737, 18693308, -5895380, -912144, 8173323, -5149129, 11587285,
--7808788, -1163936, -11807402, 13354664, 185220, -5251135, 170725, 4894652, -6207302, 9285719,
--986769, 8230231, -58519, 4313221, -12906914, -8303246, -6022081, -1931125, 7780870, -11693048,
-6252936, 4835597, 1631551, -4838818, -7053410, 16087874, 3194919, -1819456, 6238977, -5678484,
-3381750, -7561290, -7431367, -3092377, -4990215, 17374754, 5186710, -3446711, -5163625, -6621766,
-5459441, 4515621, 1641214, -6106907, -748398, -2471217, 7420093, 675921, 6001680, -14021458,
-7627325, -1224603, 374736, -1555315, 2465311, -6185827, -2881386, -9721658, -3186866, 3544959,
-5932424, 6279779, 2317672, 2292976, 1462436, -3474092, 2072322, 1435593, -261456, -2326799,
--3887482, 2083059, 1934883, -2959233, 1527398, 220654, -2454574, 1619203, 441308, -1036161,
--586263, 168577, 469762, -1790465, 1247688, 709743, -2828236, -641561, -1456531, 249645,
-1977833, 1384590, -308701, 106837, -1320703, 3173981, 258235, -1082332, 6433324, 3219615,
-5320391, 1645509, 161061, -1884954, -7908109, -2392297, -5066451, 3248606, -204011, 12134893,
--10022306, -12938589, -3205119, 4145717, -3979824, -3068754, 10330470, 2138357, -5581310, -6444599,
--6685117, 11283953, -5573794, 7650948, -3580929, 8362838, -8196945, 1893544, 12793634, 4428112,
--17270064, 4062502, 455267, -2151779, -1480153, 1847910, -2008971, 1750736, -2768107, 1454920,
--643708, -7683160, 7821136, 8026220, -2313914, 8883603, -7465190, -1240172, -2108292, -3520263,
-9767293, -6924024, -12322261, -6876243, 2388539, -10035728, -9349070, -4641249, -3117610, -6405944,
--479426, 8346195, 8785892, 1398549, 9467182, 3004330, 1323387, 7192460, -7565585, -1277216,
-63888, -6203007, -537, -6007049, 7407208, -2047089, -1278827, 6172942, -1058173, -1858647,
--1200980, 7357816, -829466, 2611340, -7037841, -2452963, 4034048, -4540854, 401043, 194347,
-852014, -3444564, -2362769, -1781338, 178778, -1857037, -2224256, 798864, -285615, -1992328,
--838592, 336081, -153545, -573915, -634045, -1117765, 442919, -3745212, -2588255, -2500208,
--2477659, 100932, -77846, -836445, 994285, -1886564, 19265612, -9606231, -9250823, 6163278,
-15644418, 2994666, 14082661, 8016020, 12782896, 5634997, -2469606, -5891085, 4534412, -9659918,
--7373922, 10667625, 8899709, 22352620, -647466, 3064996, -8370355, 8602819, 3849365, -10037339,
--2440078, 12640626, -114354, -14030048, -5721434, -7938174, -2752537, 7752953, 7088844, -5347771,
--2646774, 9684614, -9502078, 4286914, 8121247, 9755481, -5305359, 8392903, -3638911, -12773770,
-4423280, 11653320, -3201361, 3339874, 2781528, -3997004, 1355599, 3470334, -3706557, 1272921,
-9395241, -5604396, -3017752, 8709120, -1946694, -1792612, -14561013, -5153961, -8820252, -14402636,
--9754408, 7195144, -4783520, -6168110, 12387759, 12436615, -3214246, 13378823, 5304285, 8784819,
--2537789, -6943352, 5726265, -7198902, -14416595, -8658117, -3752728, 7070053, 3204046, 11860552,
-2035278, -2567854, -1983738, -12885, 2000381, -3696893, 179852, -2149094, -369367, 2080912,
--418222, 332860, 3783866, -1394791, -751619, 3818763, -2862059, -1433982, -1913945, 1132798,
--2127620, 1398549, 801011, 602906, 1957968, 2576444, 1116692, 4644471, 518617, 3179350,
-1031866, 2393908, 2690260, -2387465, 2133525, 2354179, -1729798, -506269, -280247, -3338263,
-930934, -1723893, -9765145, -10446971, 14132590, -2364916, 32294932, -13312788, -6259915, -752693,
-7878044, -4515085, -4402342, -13318694, -15398531, 6942278, 1336272, 21243446, 6886980, -2182380,
--2425046, 14106820, 14416595, -11923366, 8654896, -11390790, 2995740, -4913980, -5860483, -3506304,
-2426657, -1865626, 7493108, 3737695, 8384313, -1059246, -3991098, -7881802, -1515587, 9140764,
-828392, -12181601, -1521492, 2944200, -5185636, 9621264, 8153996, 1677722, 2845416, -26582090,
--10162966, 9267466, -607738, 14894410, 4177393, 16790638, -1871532, -9109089, 8992588, -5100811,
-6140730, 1075352, 24506010, 20234128, 2411087, 5715528, -3315715, 8038568, 8564702, 9222369,
-10008348, 16226386, -273267, 2902861, -6200322, -5436892, 5113696, -7606387, -18807124, -13978508,
--299037, 11688217, -5875516, -10663330, -6089727, -5755256, -607201, -12728672, -479963, 2352568,
--53687, -1722819, -1218160, 1310502, 2780991, -354872, 2105608, -9506910, -5789616, -3041374,
--6699075, 588411, -2396055, -3932043, -2602213, -1607928, 3884261, 1564979, -3570192, 1174137,
-8546985, 4371203, -1757179, -3039763, -3832722, -2260227, -3080565, -6659884, 2487323, -2573222,
--491237, 4824859, 1624571, -962073, 976568, 1850057, -28014998, 22151294, -610959, 2541547,
--7742216, 12429635, -26597122, -17041356, -5355824, -6812892, -620086, -23845658, 4697084, 513249,
--616865, -10877542, -11069741, 4537633, 15235323, 2379412, -20275466, -4377109, -16597364, 13153337,
-8499203, 682363, -7335268, -3459059, -3732864, 10842645, -1518271, -197032, -2318746, -14685567,
-7668127, 10331544, -6140730, -3271691, 8045011, -15988016, -11641509, -17641578, -5959804, 4463008,
--11240466, -5360656, -454193, -18271328, 5615133, 11301670, 19998978, 2893734, -1957968, 1243930,
--13111461, -10285910, 15316390, -1075352, -5789079, -3598646, -23387170, -12548284, 4605816, -4933844,
--2706903, -1814087, 15341623, -2646237, -14534706, 1177358, 11365020, -284005, -7118909, -133681,
-804770, -6009733, -10188199, 8025684, -18750216, -9286256, -120796, 9075803, -11454678, 7258495,
-4824859, 6612639, 7060926, -7208029, -1807108, 8642548, 1668058, -5287642, 4972499, 7150047,
--6676527, 2480344, 6426882, 6053220, 9528922, 633508, -2902861, -1636919, 1567126, 118112,
-4189204, 3513820, 325881, -881005, -3040300, -1051193, 2093797, 4233227, -7041062, 891206,
--1342177, 2895882, 6783364, 317291, 4747013, -2557653, 3148211, 3863860, 5712844, 4440460,
-5572183, -438624, 3191161, -1056025, 2428804, 14551349, 13335337, 4656819, 22800370, -10614475,
--5114769, 3457986, -6347425, -2064806, 7244536, 24464670, -4292283, 4748623, -455267, -1797981,
--710817, 27015882, -13526999, 13889924, -449898, -18164490, 5626407, -18018998, -11155104, 9994926,
--9659381, 6997576, 83215, 724776, 11920145, 9541270, -15013595, -16919486, -12835510, -4446902,
-4454955, 4565550, 1485522, 3055869, -20339892, 2825015, -11067594, -25463250, 16860430, -5204427,
-15834471, 17026860, 678068, 6213744, -9540196, -11466489, -20185810, 4328254, 17885318, 2978560,
--8319352, 843961, -4350802, 2558190, -11026255, -8986682, -11011759, 1613297, -1625645, -3718368,
-11403138, 10321880, 6021544, 16861504, 1592896, -18206904, 22900228, -17197586, -5557151, -4482335,
--4823785, 19240916, -3444564, -28104656, 23383412, -9488656, -6009733, 6277632, 5682242, 18055506,
-11336029, 7430294, 8596377, 7857106, 5770289, 130460, 7336341, 9012452, 2111513, -93952,
-9548249, -1974611, 806917, -9305047, -2527052, -3113315, -5067525, 540629, -1079647, 5744519,
-3993783, 1554241, -1090922, 2653753, 889058, 1874216, 3672734, -1463510, -1893544, 621160,
--1872069, 2771865, 1044751, 1174137, 2021319, 1143535, 8774618, 6447820, 1546725, 1625108,
-20946018, 23699630, 5369246, -45204532, 1411434, 12499429, -15059229, 8834211, 17796196, 674847,
-4692252, 11153493, 8543227, 3182034, 15983184, 3463891, -2429341, 30180198, 11124502, 3773129,
-12957379, -10237591, 15938624, -11485279, -1156420, -1466195, -3893388, -16852378, 5419712, -11977590,
-21484500, -2115272, -4418985, 31636730, 4089883, 4471061, 10430865, 1018981, 5946919, -7319698,
--14024142, -1757715, 9205726, -16602196, 18907520, 17026860, 12548284, 3150359, 7412577, -11528229,
--11937862, -18882824, -8407935, -10272488, -9761387, 4271345, -1957431, -18496814, -8264054, 15930034,
--411780, -15292231, 8432631, -1018981, -10426570, -24718610, 1580548, -37370512, 21490942, -12845710,
-19538344, 766115, 5362267, 454730, -7426536, 9701794, 33135672, 2861522, 9363566, -6009196,
--26030186, 2101850, -2907156, 18767934, 10931229, -4662724, -1020592, -4126390, -2150705, 6247030,
--7516730, 5851356, -969589, -6723772, -6659347, 6796786, -8132521, -8126615, -11236171, -2461553,
--8100845, 2309619, 6931004, 265214, -2107755, -5412733, 10164040, -9818295, 2452963, 1031866,
-793495, -5851893, 4010426, 9864466, -508954, -5223217, -1284195, 8980777, 9487583, -7861938,
-9084393, -874026, -2437394, 1244467, -634581, 9906879, 2581812, -5603322, -4772246, -263604,
-1086627, 5719823, 12628278, 9450539, 24738474, -33488934, 13514651, -19526532, 17049410, -8167417,
--13940927, -3854196, -16088947, -6653978, -3424163, 6091338, 7726646, -4560719, 23771570, -913217,
--3842385, -2971044, -21124260, -2173790, 302795, -17770428, 5973226, -15130633, -19087908, -6070400,
-11839077, -31793496, -21484500, -14334990, 1861332, -22248468, -18820010, -15261629, -7531225, -6099391,
--2726231, -14996415, 16407849, 2920578, -1360431, -11163157, -11408507, 22031572, -18835580, -12898861,
-5969468, 5963562, 8085276, -10944650, -15175193, -6381785, -2640331, 7282117, -10836739, -4326106,
--4306242, -13093745, -22290880, -28348394, 27139362, -29381872, -1418950, 2191507, -4924717, -5352603,
--26144540, 10308458, -6101538, -27562952, -410706, -5982353, 26253524, 6534793, 18748606, 17714592,
--5028870, 6985765, -2674691, -4952098, 13257490, -3215857, 7714298, -9916543, 1005559, -9991705,
-8815957, 6784438, 1452773, 6211597, -2400350, -896038, 6745783, 3172370, -6140193, 4767414,
-10856604, -1590749, 2683818, -5738613, -13371844, -1392643, -964220, -420370, -9211094, -2021319,
-1744831, -1342714, -4800700, 6469832, -948651, -3627637, -10775536, -11129334, 398895, 6124624,
-3839701, 2369211, -510564, 8024073, 9345312, -4093104, 2201708, 2198487, -368830, 2703682,
-6856379, -29885994, 34816616, 5600638, 3618510, -5915781, 17742510, 314069, 29138668, -7818451,
-20032802, 10817949, -28481002, 12488154, 4828617, 13666049, -2202245, -7544110, -11256572, -4121558,
-14117558, 30826054, 3398393, -4428648, -19311784, 7409356, -20896090, -3270618, 21396454, -19135690,
-188979, 1402307, -3151432, -7194607, -7998303, 34133180, -7194070, -8330089, -3958886, 7770133,
-11611981, 4321274, 746787, -6914898, 85362, 5129802, 20899848, -4730370, 29822642, 17338246,
-9028021, -7106561, 26029650, 29361470, -2206540, -7764764, -1322313, -9533217, 3142306, -9443022,
-15030775, 5047124, 21560736, 16481400, -25882010, -29431264, 35539780, 26225070, 4414690, -4998268,
--13747117, -19392314, -7319161, 19866372, -18437758, -20247012, -2579128, -5471789, -32095216, -7221988,
-7472170, -12552042, 2025614, -91805, 2013803, 2622615, 5688148, -9554692, -5572720, -9820443,
--3235721, -52076, 1776506, -5363341, -2217277, -955630, -15639587, -5327907, -7265474, -3526705,
--77309, 1404991, 1017370, 2667712, -667331, 584116, -8039105, 4829691, -6863358, -8366060,
-6331856, 2549063, -14595373, -1634235, -4292283, 7391102, 14685030, 304406, -11764989, 9769977,
--2360622, 2552821, 3848291, -3956202, -2414845, 891743, -6063420, -8587250, 15626165, -12324409,
--3815005, -2384781, 3300146, 748935, -18656802, -54557896, 27734752, -26096222, 11011759, 39393440,
-6242198, -16124918, 11559368, 13908178, -5424544, -12130061, -2307471, -26734024, 9186398, -27795954,
--16779900, 11547020, 1431835, 5137318, -25096568, -4886062, -18041010, -15268609, -22323630, -7606924,
-8008504, -13176423, -13388487, 13555454, 2103997, -833224, 4491462, -25706454, -1330366, -19929186,
-17575006, 5056787, -49199924, 12743168, 26780194, -5381594, 16083579, 13594108, 9250286, 7487739,
-25587804, 20138028, 998043, -17832704, -3565897, 20352776, 13286481, -16505559, 1474248, -19327890,
--6057515, 1614908, 14495515, 19346144, -34727496, -27378270, -15224585, 3240016, -10139344, -3552475,
-32817308, 5652177, 7970386, 25651156, -10027138, 5530844, -6206765, 26242788, -12945031, 1363115,
-2848100, 19522774, -5092758, -1733556, 7295539, 8196408, -740345, 4161823, 12813498, 813896,
--133144, -199179, 12483322, -5876589, -3698504, 3259880, 5549098, 3911105, 1872069, 6086506,
--2421288, 347892, -5336497, 167504, -3905199, -290447, -5475010, 9701794, -6813966, -10058277,
-10057203, 6765647, 7002944, -6997576, -9182103, 332323, -16670916, -4301947, -8472360, -8524436,
-3689914, 245350, -8783745, 3380676, 3919695, -651224, -5100811, -4808753, 4168803, 2797098,
-8304320, 18163954, 17556752, -30617212, 6405944, -6596533, -8051990, -7117298, 20540144, 10905996,
--14979772, -8551280, 15676094, -28164784, 1601486, 10241886, 15707232, -3349001, 3481071, -32869384,
--117038, -14564771, 11000485, 4034585, 18248780, -28910498, -14570677, -4212826, 3576634, -2496987,
-5657546, 2057289, 15779710, 29704530, -18799072, -24315958, 6419366, -25340308, -7450158, 10593000,
--18393198, -17901424, 1512902, 11005317, 15488726, 10960220, -6889128, -1571958, -32225676, -21760988,
-28654412, -19888382, 38671884, -16406775, 7893613, 5639829, -278636, -28423556, 35612796, -16595217,
--3345780, -6419903, 13921063, 26782342, -27086212, -15440407, 31850940, -23576150, -23622, -8913131,
-6525129, 36813776, 228707, -2732136, -22771380, 28154584, -9161702, 7305203, 9337796, -17842368,
--21467858, 2079301, 12416214, -6455336, 6374269, -51006496, -23756538, -7321309, -25978110, -12841415,
-4366371, 16872780, -3537979, -4663261, -13271449, 327491, -1245541, -9741523, -3329674, 5941551,
-521839, 7970386, 3773129, 7552163, -10001905, -1453846, -2079838, 10515154, 8364986, -6347425,
-19362786, 7106561, -7768522, 11704323, 3235184, -1185411, -6108517, 4413616, -4414690, -4185446,
-8661875, 709207, -3787088, -3431679, 7262253, -2036888, 6567005, -1520955, 11932493, 2452426,
-1748052, -4836670, -3517578, -4327717, -1576253, 1433982, 17452600, -20203526, 5455682, 16485158,
-16296180, 37155224, -23849954, 34119220, -6178311, -22578644, -22099754, 5499706, 14170171, -10062035,
--4722854, -15586973, -6498823, 28887414, -20621748, -2041183, 23199266, -7684234, 13790603, -9457518,
--4584341, 24610700, -1014149, 1123671, 23742580, 16413754, 5707475, -3080565, 20030654, 27392764,
--28198070, 25734908, -24925306, 12973486, -18033494, 3601867, 21188684, 7155953, -48588964, 21366926,
-13608604, -299037, 24413668, -38595112, -7575249, 26013544, 22111566, 3584687, 34833796, -18746996,
-257161, -4611185, -5555540, 14869177, 6051072, 26074746, 21690658, -16518444, 14339822, -30549566,
--9576166, 2297271, -1703491, -2497524, -5101885, -47737488, -26424786, -36901284, -25121800, 27202176,
--17162152, -4257387, 2961917, 44624172, -10871636, -15902116, 35765268, 21865142, -1213328, 28949690,
-4243428, 5373541, -13771813, -79994, -11549167, -12156368, -6369437, 9295920, -11674795, -6146098,
-5390184, 2010582, 8824547, -3739306, -1698660, 11495480, 6585796, 563178, -9392557, -7561290,
--1331440, -2989297, 6736120, 11470247, -1051193, 1937567, 2496450, -4823785, 28707024, 8805757,
-1865626, 1041530, -9637370, 7565585, -17074642, -1371705, 14360760, -1132798, -4040491, 10435160,
-5850819, 3118683, -444529, -9532143, 6075768, 6723235, 2069637, 3628174, 4841502, -3396246,
-3700114, -11531450, 11919071, 29963840, -15919296, 11816529, 14984067, -20887500, 3122441, -25780004,
-10350334, -2380486, -13580150, 21173116, 988916, 32794760, -1610076, -23800024, 41344964, -6933688,
-4458176, 6090801, -38088844, 12016782, 33464774, 12248173, -14030584, -24732570, 2979634, 6593849,
-28663002, 18713710, -8875013, -5044439, -21703006, 678605, 32378684, -43060804, 13560822, 30913564,
--27035208, 10532870, 3188476, 11041287, 32381370, 11194832, 12706661, -5432060, -31120796, 33081448,
--5710159, -16139413, 68638408, 34127812, 17760226, 3517041, 1882269, -31608274, -26024818, -11413339,
-20409684, -133144, -18320720, -12610561, 25656524, -14909442, 17772574, 10469520, -12184285, 19214610,
-8859444, -26473642, -13192529, -15282031, 4777614, 17535814, -33524904, 11735461, -34359740, -43203076,
--27235998, 42651708, -14214194, 9320616, -9511742, -13956496, -1782948, -16749836, -11739756, -8606578,
-2457795, -16011101, 2276333, 10445897, 299037, -13996762, -10591926, 5827734, 1972464, 19368156,
-2815888, -20768852, -8034273, -11589969, 17952426, -2857764, -6822556, -16258599, 95563, 10959146,
-4972499, 12394202, -5577552, -1136556, 3757023, 12634183, 7866770, 471910, -6400038, 9636833,
--7906498, -28454, 5109401, -6819335, 122407, 14112726, -100395, 3340948, -14238890, -9352291,
--10752451, 7515656, -11457899, -2715493, 41467372, 69389488, -12017318, -2712809, -57597660, -19587736,
--42449308, -28430536, 38613368, 2381023, 10222022, -32771138, 10129680, -28819768, -64383708, 8956081,
-30392262, -2911451, 3619047, 32741072, -44250512, 49737868, 24620364, 15277736, -25183004, 33328410,
-64608120, -13269301, 19735912, 48978732, 41313292, 73156712, 15637439, 26048976, 19671488, 17562658,
-62809600, -16751446, -7814693, 22951768, 13517336, -7168838, 34421480, 1791538, 7023882, -20893942,
--56661892, 1904818, 37350648, 5452998, 22529788, -40961104, 2285996, -54369456, -129386, -58402428,
-3783866, 40553080, -5382131, -17566416, -55649892, 72410464, 13012140, 4665945, 75044888, -1100585,
--17357036, -12881144, 3731790, 14875619, -4297115, 107911, -6097243, -39922256, 23456428, 9022653,
--25039122, -15403900, 19594714, -24139864, -41683196, -20394652, 8964670, 39687108, -41710576, 33041184,
--1723893, 17608292, -7363185, 14375792, -10065256, -1491427, 3520263, 4035122, 13267154, 12101070,
-2431488, 25438554, -1391569, 10475962, 13331042, 7859254, 5808407, 6136972, 21915608, 16437377,
-7869991, -8475044, -3629247, 19198504, -25393994, 9952513, -15151034, 3838627, -5637145, 17431662,
-19866372, 40568112, 22573812, 38325604, 21862458, 8337606, 40043592, 41837276, 39577048, 23044110,
--6623377, 24152212, 26394184, 16724066, 31776316, 24426016, 288837, 7927436, 5723044, 6016176,
-9651865, 7635915, -7613904, -7096897, 938987, 7793218, -1304596, 72478, -1750199, -3510062,
--7530152, -6583648, -2582886, -1536525, -2612414, 256624, -4154307, -1818919, -23005992, -73950208,
-2588255, 97692792, 13424457, -21066278, -19979114, -45880988, -30280594, 397284, 60686816, 9905805,
--42030012, -3903589, 15891379, 3099356, 351650, -4996658, 9839770, -30334818, -11893301, 14081050,
-33267742, 33486786, -33342368, -13422847, 1636383, 3661460, 7836705, -38296612, 2776696, 5170067,
--10661719, 25949656, -1094680, 30086246, 45892800, 21424908, 8879308, 19410030, -27286464, 23159000,
--22178138, 35101692, 62894428, 20028506, -35133368, -30596274, 28119150, 9601936, 53538916, 39857832,
-11763915, -11104638, -12853763, 746787, 2155537, -19804094, 20439212, 17547088, 2872796, 48103096,
-32937568, -5424544, 23317914, 25750476, 11841225, 25752088, 550830, -47531868, -6350646, -12145094,
--11349988, 52108692, 23870354, 7689602, 41628972, 24056112, 26349624, 32082332, 10881837, -34615288,
--17233556, -1728188, -1101122, -12824772, -10372883, -21378736, 12236899, 7262253, 19349902, -10245644,
-21658984, 5252745, 22457848, 14362908, -5485210, -12653511, 3036542, 5205501, -163209, 1646583,
-16401406, 635655, 25883084, 34127272, 9740986, -3965866, 2274722, 24222004, 5530844, -9031242,
--6971269, 18902152, -1284195, -7267622, -4096325, 5506685, 13954349, 27139898, -15050102, 1161252,
--9795210, 1204202, 1003412, 21900038, -12458626, 10216653, 13895293, 7144141, -10516227, 2028835,
-16244103, 831613, 503585, 14470819, 2211371, 8209830, 6039798, 282931, -2898566, 1518808,
--2018635, 2243584, 1360431, 2449205, 1202054, 6250251, 2486249, 1668595, 2013803, 4089346,
-1886564, 4476967, 1817845, 2188286, 2381559, 1879585, 2505577, 1246614, 2321430, 3185255,
-3619584, 3489661, 3929895, 3124052, 4154307, 3079492, 3386045, 1430224, 3447785, 1434519,
-3176665, 1060857, 3202972, 2174327, 2936147, 703301, 2934000, 1887101, 3121904, 2040646,
-3516505, 1085553, 3760781, 1134945, 3362423, 1868848, 3333968, 1303523, 3750580, 1237488,
-3053722, 1740536, 3280281, 1610076, 3871376, -38655, -14081587, -68940128, -14582488, 39197484,
-21342766, 85219664, 5021891, -11812771, -37606732, -73895984, -81333792, -13109314, 35575752, 40088152,
-25715580, -40754944, -54193896, 135828, -6355478, 22294638, 57204132, 29500520, -5035849, -33568392,
--45985676, -28538448, 2183991, -27938762, 11383811, -23284092, -11507291, 38487740, 31632972, 28477780,
-11165304, -38400228, -10616622, -36703716, -28427314, -14418205, 22240414, -3572876, 23598698, 58106076,
-60240676, -24459838, 7126425, -43731892, -30084636, -20582020, -3637837, 8844411, 35003984, 37702832,
-51382840, 36966248, 13254269, -24768540, -23172960, -5017596, 16626892, -41225244, 3211025, 49463528,
-39138428, -9630927, 52977884, 47743932, 26752814, 49873696, -93256624, 22799834, -26418880, -28207734,
-16152835, -14857902, -1223529, 94795832, 79817136, 28852516, -24511378, -1591285, -37365680, -6765111,
--50287624, -17289390, -8380018, 20045150, 61794916, 32938104, 13019656, 11607149, -9867687, -30354682,
--39806292, 730144, -26260504, 21706764, -2233920, 478352, 23727010, 19984482, 7357816, 20679730,
-7136625, 31955094, -21799644, 208306, -24043764, 10672994, -20910048, -18547280, 3401077, -5131949,
-16693464, 30273076, 1851131, -26746372, -46154256, -13225278, -26739930, 3776887, 12043625, 22594212,
--17824114, -5616207, 836982, -303332, 23430658, 1884417, -120120568, -136177312, -146416512, -147928336,
--200539008, -12016782, -71917080, -23322210, 26450020, 66853312, 93842352, 96807488, 197941088, 212262112,
-172776864, 128502736, 136121472, 129802504, 49961744, -19432580, -89388472, -89544696, -137370768, -44703092,
--74490304, -55554328, -5288179, -116609432, -33606508, -104162624, -28414430, -119672288, -112831472, -52136608,
--93168576, -9587978, -47098076, -43528956, -69690136, -46149424, -105185896, -74370040, -39560944, -36257576,
--55682104, -34133180, -4170413, -45059040, 15071577, 67177584, -52459804, 79484272, 47600584, 106120592,
-106574248, 93070328, 114757768, 96970160, 160101888, 159068944, 126811056, 169737648, 145504368, 222319312,
-218885488, 258002976, 200749456, 216142624, 235490368, 212766768, 254358704, 188517920, 275440544, 220178816,
-83845280, 107652280, 28298466, 42632384, -149148112, -125123136, -139748576, -148664928, -156815696, -202507712,
--190747008, -209578304, -230199504, -270528192, -226192848, -207038368, -230220992, -250978032, -299321632, -240025856,
--265865984, -267515792, -203067664, -228821360, -132118024, -163864816, -112246288, -104118064, -55229520, -40295384,
--57180512, -9807558, 26863946, 130009200, 123085176, 89468464, 101032664, 108820512, 147383952, 151100176,
-163283376, 172350064, 148109264, 150632016, 110566952, 156735168, 160133568, 122129008, 85784992, 66388920,
-96192768, 95333240, 74068856, 44545792, 24536612, 37553048, -9813463, 5218386, -17602386, -13796509,
--71155264, -64961380, -47498044, -32694902, -43337292, -33020782, -15898895, -12899397, -17221746, -31849866,
--29491392, -14448807, -18996640, -12357158, -10623065, 2296734, 4966056, 1094143, -5065914, -1152125,
-2566243, -1563368, -1621350, 1913408, 3468723, 7017977, 1906966, -1779727, -331786, 2392834,
-1999844, -1588064, -683437, 3801583, 2393908, 2012729, 2217814, 4051765, 3341485, 928787,
--318901, 2863133, 2729989, 3012383, -668404, -3170760, -1611150, 1130113, 3907883, 4661650,
-2579665, 967441, -2382633, -3772055, -2808909, -2777770, -5510443, -9002251, -11369315, -11647951,
--12056510, -13174812, -14428943, -16759499, -18712098, -20225538, -20037096, -18172544, -16728898, -16773995,
--16254841, -15315853, -9931038, -6803765, -4958540, -1067299, 2647847, 5661841, 8704288, 11909407,
-13696651, 15919833, 15829102, 15282567, 15201500, 13640816, 11307038, 8756365, 7007239, 5683316,
-4191888, 2874407, 1736777, 1038308, 485868, 367757, 228707, 165893, 110059, 60666,
-56908, 104690, 176094, 213675, },
+5188321, 158377, 290984, 6376416, 1604707, -3152506, 2183991, 4246649, -2122251, -3498788,
+-12596602, 684510, -4220342, 8437463, -4155918, 4235375, 3432216, -430034, 2780455, 4671314,
+1301375, 1097901, -2270964, -2764348, -2117419, -3485903, 3074660, 1821066, -1617055, 2748779,
+-1864553, -2786897, -3300682, -1604707, -2600066, 228707, 76773, -486942, 5808944, -3336653,
+4758824, -1703491, -1164473, 3172907, -1926830, 993211, -1926293, 3477850, -987843, -9861782,
+2971581, 346819, 1249299, 4962835, 2603287, 359167, -1086090, -3260954, 8484171, -4465156,
+3324305, 1719598, -3452617, 3555696, 1623498, -4126927, 3314104, -4256850, 285078, -440234,
+3766150, 613107, 3935264, -1501091, -8671539, -1864553, -2060511, -4140349, -3666292, -3674345,
+3051038, 1324461, 1097364, 1826972, 1868311, 363462, 909459, -1021129, 654983, -753767,
+-300648, -2127620, 17180, -707059, 1657857, -157840, -463856, -325881, 217970, -1103270,
+425739, -479426, 645319, -352724, 159451, -1271847, -108448, -1589138, -926639, -907312,
+1342177, 15291157, -7649337, 782221, -528818, -517544, 3424163, -2832531, -11099269, -10234370,
+4713190, -3285650, -1014149, 2525441, 490700, 2491618, 2786360, -4913443, 2541010, 1733019,
+-3505767, 3942780, 5973226, -4023311, -1376000, 225486, -6606734, -3027415, 577673, 7722888,
+-1339493, -517544, -6583648, 3767223, -79994, -5911486, -2576444, 1946157, -970126, 1050656,
+-5129265, -204548, 257161, -2139431, 5301064, 1279363, 1121523, 5119601, -630286, 6673843,
+-2361158, -8679055, 3381750, 3277060, -3115462, -1406065, -1144609, 979789, 293132, 2308008,
+-2060511, 1497870, -4779225, -297427, 2987687, -4570382, -618475, 2550674, 746251, -2431488,
+1451699, -1862405, 394600, 4313221, 1492501, -6133750, 7256884, 2672007, 2616709, -712428,
+4141422, 4611185, -2122251, -374199, 957778, 1124745, 1392643, 1899449, -279710, 82141,
+1399623, -292058, 136365, 845572, 2214593, -447213, 2257005, -167504, 488553, 1114007,
+239444, -754841, -264141, 737124, 720481, -214748, -1112933, -3708704, -8958228, -1068910,
+965294, 9891310, -3767223, 8477729, 2126009, -287226, 526134, 7584912, -1762547, -2072859,
+-2194192, 5346698, 10856604, 2845416, -7485055, -10155987, -14450954, 1896228, -3774740, -6073621,
+-3334505, -9418326, -44560, -4369593, 710817, 4526359, 4765266, -5368709, -4810364, -3413962,
+604517, -7990250, -871878, 2488934, -3619584, -1314260, 840203, 3227131, -4490925, 1176821,
+10566156, -433255, -512712, -3889630, 4400731, -1955284, 389231, 3363496, 4376035, 6505265,
+-1037772, 964757, -1957968, -82141, -1110786, 865436, 10151692, -11273215, 252329, 2198487,
+5998459, -2488934, -2985002, -657130, -2818036, 8116952, -4468377, -10625749, -736050, -3166465,
+-4451197, 2645700, -10523744, 3894999, -1125818, -2916283, 212601, 7438347, -2202245, -2789581,
+-2866891, 3568581, -3341485, -901406, 627602, -299574, 1282585, 123480, 501437, 2211371,
+179852, 581968, -551366, 1778653, 390842, -348429, -2000381, -1070521, -150324, -1046361,
+2057289, 1257352, -1172526, 1539209, 155693, 231391, -1089848, 576599, -478352, 52076,
+531502, -16510928, 6165426, -5166309, 6919729, -6222334, -563714, 4786741, -9547712, -1644436,
+2912525, -2604361, 13914083, -5843303, -1760937, -5574868, -4654134, 7141457, 7952132, 3069828,
+-9362492, -11311333, 10456098, 1745367, -10590852, 3949223, 392453, 5004174, -3139084, 4773856,
+-6335614, 3080565, 10235444, 4218195, 4386236, 2313377, 182536, -2615635, 2141041, 787590,
+-6978785, 106300, -2210835, -5140539, -5115843, -1955284, 4046933, -7373385, 1008244, -5337571,
+-543313, -825707, 2433099, 4355097, 9248675, 3252901, -50466, 3961571, -4938676, -7283728,
+-126702, 1682017, 759136, 8773544, -1995549, -1086090, -2805688, -1254667, 1253057, 4254702,
+-1153736, 1771674, -4354560, 7097434, -1861332, -2496450, -1636383, 2291365, -3854196, 108448,
+4402342, -325881, -1256278, 637266, 3499325, 2739116, -537945, 2205466, -1883343, 1391033,
+-1136019, 532576, 2508798, -895501, 1077500, 1050120, -1697586, 1698660, 1059246, 367220,
+-722091, -1567126, -360777, 1901060, 1286343, -685047, 782758, -388695, 3156264, -301721,
+-863825, -8252780, -1925756, -5356898, -547071, 10960220, 7005629, 4894652, -833224, -9647033,
+1345935, -6347962, -10225243, -3394635, 7358890, -5775658, -9066676, 2368138, 777926, -4517232,
+968515, 5159330, 1421097, -12085501, -3425237, 7594039, 8945880, 4460861, -10015864, -3634079,
+4563940, -1707250, -2156611, 649077, 3352759, 539018, 1239098, 10277320, 19327, 6216429,
+4818417, -79457, -4628364, -113817, -2731062, 6127308, -3504693, -5846524, 13422, 9614284,
+539018, 9550934, 5147519, 926102, 6170795, -1040993, 13260175, 1069984, 6560026, 7473780,
+691490, -6179921, -948651, -7393786, 3773666, -5298379, -2972117, -4885526, -3222299, -2344515,
+2426657, 820876, 3653407, -151398, -4224637, -3677029, 1373316, 6831146, -2024540, 1690070,
+-7332046, 2323577, 6334540, 9727027, -3351148, -723702, 1610076, -3344169, -253940, 3211562,
+-984621, 5899675, 388158, 1343251, 147103, 281320, 2175401, -1436667, -934692, -765578,
+-443992, 597000, 730144, -1109712, 964757, -337155, -1177358, -1432372, 485868, -1359357,
+-896574, -1705102, 831076, 1183800, -246961, 3328600, -2157147, 588411, -234613, -1883880,
+3167002, -911607, -448824, -1653562, 1797981, 1185948, -289373, 482647, 1586454, 10007811,
+-14944339, -2750390, 12524125, -6211597, 2292976, -9658308, 4259534, 17617418, -2379412, 934155,
+-741956, -12441447, 1007707, -789737, 18693308, -5895380, -912144, 8173323, -5149129, 11587285,
+-7808788, -1163936, -11807402, 13354664, 185220, -5251135, 170725, 4894652, -6207302, 9285719,
+-986769, 8230231, -58519, 4313221, -12906914, -8303246, -6022081, -1931125, 7780870, -11693048,
+6252936, 4835597, 1631551, -4838818, -7053410, 16087874, 3194919, -1819456, 6238977, -5678484,
+3381750, -7561290, -7431367, -3092377, -4990215, 17374754, 5186710, -3446711, -5163625, -6621766,
+5459441, 4515621, 1641214, -6106907, -748398, -2471217, 7420093, 675921, 6001680, -14021458,
+7627325, -1224603, 374736, -1555315, 2465311, -6185827, -2881386, -9721658, -3186866, 3544959,
+5932424, 6279779, 2317672, 2292976, 1462436, -3474092, 2072322, 1435593, -261456, -2326799,
+-3887482, 2083059, 1934883, -2959233, 1527398, 220654, -2454574, 1619203, 441308, -1036161,
+-586263, 168577, 469762, -1790465, 1247688, 709743, -2828236, -641561, -1456531, 249645,
+1977833, 1384590, -308701, 106837, -1320703, 3173981, 258235, -1082332, 6433324, 3219615,
+5320391, 1645509, 161061, -1884954, -7908109, -2392297, -5066451, 3248606, -204011, 12134893,
+-10022306, -12938589, -3205119, 4145717, -3979824, -3068754, 10330470, 2138357, -5581310, -6444599,
+-6685117, 11283953, -5573794, 7650948, -3580929, 8362838, -8196945, 1893544, 12793634, 4428112,
+-17270064, 4062502, 455267, -2151779, -1480153, 1847910, -2008971, 1750736, -2768107, 1454920,
+-643708, -7683160, 7821136, 8026220, -2313914, 8883603, -7465190, -1240172, -2108292, -3520263,
+9767293, -6924024, -12322261, -6876243, 2388539, -10035728, -9349070, -4641249, -3117610, -6405944,
+-479426, 8346195, 8785892, 1398549, 9467182, 3004330, 1323387, 7192460, -7565585, -1277216,
+63888, -6203007, -537, -6007049, 7407208, -2047089, -1278827, 6172942, -1058173, -1858647,
+-1200980, 7357816, -829466, 2611340, -7037841, -2452963, 4034048, -4540854, 401043, 194347,
+852014, -3444564, -2362769, -1781338, 178778, -1857037, -2224256, 798864, -285615, -1992328,
+-838592, 336081, -153545, -573915, -634045, -1117765, 442919, -3745212, -2588255, -2500208,
+-2477659, 100932, -77846, -836445, 994285, -1886564, 19265612, -9606231, -9250823, 6163278,
+15644418, 2994666, 14082661, 8016020, 12782896, 5634997, -2469606, -5891085, 4534412, -9659918,
+-7373922, 10667625, 8899709, 22352620, -647466, 3064996, -8370355, 8602819, 3849365, -10037339,
+-2440078, 12640626, -114354, -14030048, -5721434, -7938174, -2752537, 7752953, 7088844, -5347771,
+-2646774, 9684614, -9502078, 4286914, 8121247, 9755481, -5305359, 8392903, -3638911, -12773770,
+4423280, 11653320, -3201361, 3339874, 2781528, -3997004, 1355599, 3470334, -3706557, 1272921,
+9395241, -5604396, -3017752, 8709120, -1946694, -1792612, -14561013, -5153961, -8820252, -14402636,
+-9754408, 7195144, -4783520, -6168110, 12387759, 12436615, -3214246, 13378823, 5304285, 8784819,
+-2537789, -6943352, 5726265, -7198902, -14416595, -8658117, -3752728, 7070053, 3204046, 11860552,
+2035278, -2567854, -1983738, -12885, 2000381, -3696893, 179852, -2149094, -369367, 2080912,
+-418222, 332860, 3783866, -1394791, -751619, 3818763, -2862059, -1433982, -1913945, 1132798,
+-2127620, 1398549, 801011, 602906, 1957968, 2576444, 1116692, 4644471, 518617, 3179350,
+1031866, 2393908, 2690260, -2387465, 2133525, 2354179, -1729798, -506269, -280247, -3338263,
+930934, -1723893, -9765145, -10446971, 14132590, -2364916, 32294932, -13312788, -6259915, -752693,
+7878044, -4515085, -4402342, -13318694, -15398531, 6942278, 1336272, 21243446, 6886980, -2182380,
+-2425046, 14106820, 14416595, -11923366, 8654896, -11390790, 2995740, -4913980, -5860483, -3506304,
+2426657, -1865626, 7493108, 3737695, 8384313, -1059246, -3991098, -7881802, -1515587, 9140764,
+828392, -12181601, -1521492, 2944200, -5185636, 9621264, 8153996, 1677722, 2845416, -26582090,
+-10162966, 9267466, -607738, 14894410, 4177393, 16790638, -1871532, -9109089, 8992588, -5100811,
+6140730, 1075352, 24506010, 20234128, 2411087, 5715528, -3315715, 8038568, 8564702, 9222369,
+10008348, 16226386, -273267, 2902861, -6200322, -5436892, 5113696, -7606387, -18807124, -13978508,
+-299037, 11688217, -5875516, -10663330, -6089727, -5755256, -607201, -12728672, -479963, 2352568,
+-53687, -1722819, -1218160, 1310502, 2780991, -354872, 2105608, -9506910, -5789616, -3041374,
+-6699075, 588411, -2396055, -3932043, -2602213, -1607928, 3884261, 1564979, -3570192, 1174137,
+8546985, 4371203, -1757179, -3039763, -3832722, -2260227, -3080565, -6659884, 2487323, -2573222,
+-491237, 4824859, 1624571, -962073, 976568, 1850057, -28014998, 22151294, -610959, 2541547,
+-7742216, 12429635, -26597122, -17041356, -5355824, -6812892, -620086, -23845658, 4697084, 513249,
+-616865, -10877542, -11069741, 4537633, 15235323, 2379412, -20275466, -4377109, -16597364, 13153337,
+8499203, 682363, -7335268, -3459059, -3732864, 10842645, -1518271, -197032, -2318746, -14685567,
+7668127, 10331544, -6140730, -3271691, 8045011, -15988016, -11641509, -17641578, -5959804, 4463008,
+-11240466, -5360656, -454193, -18271328, 5615133, 11301670, 19998978, 2893734, -1957968, 1243930,
+-13111461, -10285910, 15316390, -1075352, -5789079, -3598646, -23387170, -12548284, 4605816, -4933844,
+-2706903, -1814087, 15341623, -2646237, -14534706, 1177358, 11365020, -284005, -7118909, -133681,
+804770, -6009733, -10188199, 8025684, -18750216, -9286256, -120796, 9075803, -11454678, 7258495,
+4824859, 6612639, 7060926, -7208029, -1807108, 8642548, 1668058, -5287642, 4972499, 7150047,
+-6676527, 2480344, 6426882, 6053220, 9528922, 633508, -2902861, -1636919, 1567126, 118112,
+4189204, 3513820, 325881, -881005, -3040300, -1051193, 2093797, 4233227, -7041062, 891206,
+-1342177, 2895882, 6783364, 317291, 4747013, -2557653, 3148211, 3863860, 5712844, 4440460,
+5572183, -438624, 3191161, -1056025, 2428804, 14551349, 13335337, 4656819, 22800370, -10614475,
+-5114769, 3457986, -6347425, -2064806, 7244536, 24464670, -4292283, 4748623, -455267, -1797981,
+-710817, 27015882, -13526999, 13889924, -449898, -18164490, 5626407, -18018998, -11155104, 9994926,
+-9659381, 6997576, 83215, 724776, 11920145, 9541270, -15013595, -16919486, -12835510, -4446902,
+4454955, 4565550, 1485522, 3055869, -20339892, 2825015, -11067594, -25463250, 16860430, -5204427,
+15834471, 17026860, 678068, 6213744, -9540196, -11466489, -20185810, 4328254, 17885318, 2978560,
+-8319352, 843961, -4350802, 2558190, -11026255, -8986682, -11011759, 1613297, -1625645, -3718368,
+11403138, 10321880, 6021544, 16861504, 1592896, -18206904, 22900228, -17197586, -5557151, -4482335,
+-4823785, 19240916, -3444564, -28104656, 23383412, -9488656, -6009733, 6277632, 5682242, 18055506,
+11336029, 7430294, 8596377, 7857106, 5770289, 130460, 7336341, 9012452, 2111513, -93952,
+9548249, -1974611, 806917, -9305047, -2527052, -3113315, -5067525, 540629, -1079647, 5744519,
+3993783, 1554241, -1090922, 2653753, 889058, 1874216, 3672734, -1463510, -1893544, 621160,
+-1872069, 2771865, 1044751, 1174137, 2021319, 1143535, 8774618, 6447820, 1546725, 1625108,
+20946018, 23699630, 5369246, -45204532, 1411434, 12499429, -15059229, 8834211, 17796196, 674847,
+4692252, 11153493, 8543227, 3182034, 15983184, 3463891, -2429341, 30180198, 11124502, 3773129,
+12957379, -10237591, 15938624, -11485279, -1156420, -1466195, -3893388, -16852378, 5419712, -11977590,
+21484500, -2115272, -4418985, 31636730, 4089883, 4471061, 10430865, 1018981, 5946919, -7319698,
+-14024142, -1757715, 9205726, -16602196, 18907520, 17026860, 12548284, 3150359, 7412577, -11528229,
+-11937862, -18882824, -8407935, -10272488, -9761387, 4271345, -1957431, -18496814, -8264054, 15930034,
+-411780, -15292231, 8432631, -1018981, -10426570, -24718610, 1580548, -37370512, 21490942, -12845710,
+19538344, 766115, 5362267, 454730, -7426536, 9701794, 33135672, 2861522, 9363566, -6009196,
+-26030186, 2101850, -2907156, 18767934, 10931229, -4662724, -1020592, -4126390, -2150705, 6247030,
+-7516730, 5851356, -969589, -6723772, -6659347, 6796786, -8132521, -8126615, -11236171, -2461553,
+-8100845, 2309619, 6931004, 265214, -2107755, -5412733, 10164040, -9818295, 2452963, 1031866,
+793495, -5851893, 4010426, 9864466, -508954, -5223217, -1284195, 8980777, 9487583, -7861938,
+9084393, -874026, -2437394, 1244467, -634581, 9906879, 2581812, -5603322, -4772246, -263604,
+1086627, 5719823, 12628278, 9450539, 24738474, -33488934, 13514651, -19526532, 17049410, -8167417,
+-13940927, -3854196, -16088947, -6653978, -3424163, 6091338, 7726646, -4560719, 23771570, -913217,
+-3842385, -2971044, -21124260, -2173790, 302795, -17770428, 5973226, -15130633, -19087908, -6070400,
+11839077, -31793496, -21484500, -14334990, 1861332, -22248468, -18820010, -15261629, -7531225, -6099391,
+-2726231, -14996415, 16407849, 2920578, -1360431, -11163157, -11408507, 22031572, -18835580, -12898861,
+5969468, 5963562, 8085276, -10944650, -15175193, -6381785, -2640331, 7282117, -10836739, -4326106,
+-4306242, -13093745, -22290880, -28348394, 27139362, -29381872, -1418950, 2191507, -4924717, -5352603,
+-26144540, 10308458, -6101538, -27562952, -410706, -5982353, 26253524, 6534793, 18748606, 17714592,
+-5028870, 6985765, -2674691, -4952098, 13257490, -3215857, 7714298, -9916543, 1005559, -9991705,
+8815957, 6784438, 1452773, 6211597, -2400350, -896038, 6745783, 3172370, -6140193, 4767414,
+10856604, -1590749, 2683818, -5738613, -13371844, -1392643, -964220, -420370, -9211094, -2021319,
+1744831, -1342714, -4800700, 6469832, -948651, -3627637, -10775536, -11129334, 398895, 6124624,
+3839701, 2369211, -510564, 8024073, 9345312, -4093104, 2201708, 2198487, -368830, 2703682,
+6856379, -29885994, 34816616, 5600638, 3618510, -5915781, 17742510, 314069, 29138668, -7818451,
+20032802, 10817949, -28481002, 12488154, 4828617, 13666049, -2202245, -7544110, -11256572, -4121558,
+14117558, 30826054, 3398393, -4428648, -19311784, 7409356, -20896090, -3270618, 21396454, -19135690,
+188979, 1402307, -3151432, -7194607, -7998303, 34133180, -7194070, -8330089, -3958886, 7770133,
+11611981, 4321274, 746787, -6914898, 85362, 5129802, 20899848, -4730370, 29822642, 17338246,
+9028021, -7106561, 26029650, 29361470, -2206540, -7764764, -1322313, -9533217, 3142306, -9443022,
+15030775, 5047124, 21560736, 16481400, -25882010, -29431264, 35539780, 26225070, 4414690, -4998268,
+-13747117, -19392314, -7319161, 19866372, -18437758, -20247012, -2579128, -5471789, -32095216, -7221988,
+7472170, -12552042, 2025614, -91805, 2013803, 2622615, 5688148, -9554692, -5572720, -9820443,
+-3235721, -52076, 1776506, -5363341, -2217277, -955630, -15639587, -5327907, -7265474, -3526705,
+-77309, 1404991, 1017370, 2667712, -667331, 584116, -8039105, 4829691, -6863358, -8366060,
+6331856, 2549063, -14595373, -1634235, -4292283, 7391102, 14685030, 304406, -11764989, 9769977,
+-2360622, 2552821, 3848291, -3956202, -2414845, 891743, -6063420, -8587250, 15626165, -12324409,
+-3815005, -2384781, 3300146, 748935, -18656802, -54557896, 27734752, -26096222, 11011759, 39393440,
+6242198, -16124918, 11559368, 13908178, -5424544, -12130061, -2307471, -26734024, 9186398, -27795954,
+-16779900, 11547020, 1431835, 5137318, -25096568, -4886062, -18041010, -15268609, -22323630, -7606924,
+8008504, -13176423, -13388487, 13555454, 2103997, -833224, 4491462, -25706454, -1330366, -19929186,
+17575006, 5056787, -49199924, 12743168, 26780194, -5381594, 16083579, 13594108, 9250286, 7487739,
+25587804, 20138028, 998043, -17832704, -3565897, 20352776, 13286481, -16505559, 1474248, -19327890,
+-6057515, 1614908, 14495515, 19346144, -34727496, -27378270, -15224585, 3240016, -10139344, -3552475,
+32817308, 5652177, 7970386, 25651156, -10027138, 5530844, -6206765, 26242788, -12945031, 1363115,
+2848100, 19522774, -5092758, -1733556, 7295539, 8196408, -740345, 4161823, 12813498, 813896,
+-133144, -199179, 12483322, -5876589, -3698504, 3259880, 5549098, 3911105, 1872069, 6086506,
+-2421288, 347892, -5336497, 167504, -3905199, -290447, -5475010, 9701794, -6813966, -10058277,
+10057203, 6765647, 7002944, -6997576, -9182103, 332323, -16670916, -4301947, -8472360, -8524436,
+3689914, 245350, -8783745, 3380676, 3919695, -651224, -5100811, -4808753, 4168803, 2797098,
+8304320, 18163954, 17556752, -30617212, 6405944, -6596533, -8051990, -7117298, 20540144, 10905996,
+-14979772, -8551280, 15676094, -28164784, 1601486, 10241886, 15707232, -3349001, 3481071, -32869384,
+-117038, -14564771, 11000485, 4034585, 18248780, -28910498, -14570677, -4212826, 3576634, -2496987,
+5657546, 2057289, 15779710, 29704530, -18799072, -24315958, 6419366, -25340308, -7450158, 10593000,
+-18393198, -17901424, 1512902, 11005317, 15488726, 10960220, -6889128, -1571958, -32225676, -21760988,
+28654412, -19888382, 38671884, -16406775, 7893613, 5639829, -278636, -28423556, 35612796, -16595217,
+-3345780, -6419903, 13921063, 26782342, -27086212, -15440407, 31850940, -23576150, -23622, -8913131,
+6525129, 36813776, 228707, -2732136, -22771380, 28154584, -9161702, 7305203, 9337796, -17842368,
+-21467858, 2079301, 12416214, -6455336, 6374269, -51006496, -23756538, -7321309, -25978110, -12841415,
+4366371, 16872780, -3537979, -4663261, -13271449, 327491, -1245541, -9741523, -3329674, 5941551,
+521839, 7970386, 3773129, 7552163, -10001905, -1453846, -2079838, 10515154, 8364986, -6347425,
+19362786, 7106561, -7768522, 11704323, 3235184, -1185411, -6108517, 4413616, -4414690, -4185446,
+8661875, 709207, -3787088, -3431679, 7262253, -2036888, 6567005, -1520955, 11932493, 2452426,
+1748052, -4836670, -3517578, -4327717, -1576253, 1433982, 17452600, -20203526, 5455682, 16485158,
+16296180, 37155224, -23849954, 34119220, -6178311, -22578644, -22099754, 5499706, 14170171, -10062035,
+-4722854, -15586973, -6498823, 28887414, -20621748, -2041183, 23199266, -7684234, 13790603, -9457518,
+-4584341, 24610700, -1014149, 1123671, 23742580, 16413754, 5707475, -3080565, 20030654, 27392764,
+-28198070, 25734908, -24925306, 12973486, -18033494, 3601867, 21188684, 7155953, -48588964, 21366926,
+13608604, -299037, 24413668, -38595112, -7575249, 26013544, 22111566, 3584687, 34833796, -18746996,
+257161, -4611185, -5555540, 14869177, 6051072, 26074746, 21690658, -16518444, 14339822, -30549566,
+-9576166, 2297271, -1703491, -2497524, -5101885, -47737488, -26424786, -36901284, -25121800, 27202176,
+-17162152, -4257387, 2961917, 44624172, -10871636, -15902116, 35765268, 21865142, -1213328, 28949690,
+4243428, 5373541, -13771813, -79994, -11549167, -12156368, -6369437, 9295920, -11674795, -6146098,
+5390184, 2010582, 8824547, -3739306, -1698660, 11495480, 6585796, 563178, -9392557, -7561290,
+-1331440, -2989297, 6736120, 11470247, -1051193, 1937567, 2496450, -4823785, 28707024, 8805757,
+1865626, 1041530, -9637370, 7565585, -17074642, -1371705, 14360760, -1132798, -4040491, 10435160,
+5850819, 3118683, -444529, -9532143, 6075768, 6723235, 2069637, 3628174, 4841502, -3396246,
+3700114, -11531450, 11919071, 29963840, -15919296, 11816529, 14984067, -20887500, 3122441, -25780004,
+10350334, -2380486, -13580150, 21173116, 988916, 32794760, -1610076, -23800024, 41344964, -6933688,
+4458176, 6090801, -38088844, 12016782, 33464774, 12248173, -14030584, -24732570, 2979634, 6593849,
+28663002, 18713710, -8875013, -5044439, -21703006, 678605, 32378684, -43060804, 13560822, 30913564,
+-27035208, 10532870, 3188476, 11041287, 32381370, 11194832, 12706661, -5432060, -31120796, 33081448,
+-5710159, -16139413, 68638408, 34127812, 17760226, 3517041, 1882269, -31608274, -26024818, -11413339,
+20409684, -133144, -18320720, -12610561, 25656524, -14909442, 17772574, 10469520, -12184285, 19214610,
+8859444, -26473642, -13192529, -15282031, 4777614, 17535814, -33524904, 11735461, -34359740, -43203076,
+-27235998, 42651708, -14214194, 9320616, -9511742, -13956496, -1782948, -16749836, -11739756, -8606578,
+2457795, -16011101, 2276333, 10445897, 299037, -13996762, -10591926, 5827734, 1972464, 19368156,
+2815888, -20768852, -8034273, -11589969, 17952426, -2857764, -6822556, -16258599, 95563, 10959146,
+4972499, 12394202, -5577552, -1136556, 3757023, 12634183, 7866770, 471910, -6400038, 9636833,
+-7906498, -28454, 5109401, -6819335, 122407, 14112726, -100395, 3340948, -14238890, -9352291,
+-10752451, 7515656, -11457899, -2715493, 41467372, 69389488, -12017318, -2712809, -57597660, -19587736,
+-42449308, -28430536, 38613368, 2381023, 10222022, -32771138, 10129680, -28819768, -64383708, 8956081,
+30392262, -2911451, 3619047, 32741072, -44250512, 49737868, 24620364, 15277736, -25183004, 33328410,
+64608120, -13269301, 19735912, 48978732, 41313292, 73156712, 15637439, 26048976, 19671488, 17562658,
+62809600, -16751446, -7814693, 22951768, 13517336, -7168838, 34421480, 1791538, 7023882, -20893942,
+-56661892, 1904818, 37350648, 5452998, 22529788, -40961104, 2285996, -54369456, -129386, -58402428,
+3783866, 40553080, -5382131, -17566416, -55649892, 72410464, 13012140, 4665945, 75044888, -1100585,
+-17357036, -12881144, 3731790, 14875619, -4297115, 107911, -6097243, -39922256, 23456428, 9022653,
+-25039122, -15403900, 19594714, -24139864, -41683196, -20394652, 8964670, 39687108, -41710576, 33041184,
+-1723893, 17608292, -7363185, 14375792, -10065256, -1491427, 3520263, 4035122, 13267154, 12101070,
+2431488, 25438554, -1391569, 10475962, 13331042, 7859254, 5808407, 6136972, 21915608, 16437377,
+7869991, -8475044, -3629247, 19198504, -25393994, 9952513, -15151034, 3838627, -5637145, 17431662,
+19866372, 40568112, 22573812, 38325604, 21862458, 8337606, 40043592, 41837276, 39577048, 23044110,
+-6623377, 24152212, 26394184, 16724066, 31776316, 24426016, 288837, 7927436, 5723044, 6016176,
+9651865, 7635915, -7613904, -7096897, 938987, 7793218, -1304596, 72478, -1750199, -3510062,
+-7530152, -6583648, -2582886, -1536525, -2612414, 256624, -4154307, -1818919, -23005992, -73950208,
+2588255, 97692792, 13424457, -21066278, -19979114, -45880988, -30280594, 397284, 60686816, 9905805,
+-42030012, -3903589, 15891379, 3099356, 351650, -4996658, 9839770, -30334818, -11893301, 14081050,
+33267742, 33486786, -33342368, -13422847, 1636383, 3661460, 7836705, -38296612, 2776696, 5170067,
+-10661719, 25949656, -1094680, 30086246, 45892800, 21424908, 8879308, 19410030, -27286464, 23159000,
+-22178138, 35101692, 62894428, 20028506, -35133368, -30596274, 28119150, 9601936, 53538916, 39857832,
+11763915, -11104638, -12853763, 746787, 2155537, -19804094, 20439212, 17547088, 2872796, 48103096,
+32937568, -5424544, 23317914, 25750476, 11841225, 25752088, 550830, -47531868, -6350646, -12145094,
+-11349988, 52108692, 23870354, 7689602, 41628972, 24056112, 26349624, 32082332, 10881837, -34615288,
+-17233556, -1728188, -1101122, -12824772, -10372883, -21378736, 12236899, 7262253, 19349902, -10245644,
+21658984, 5252745, 22457848, 14362908, -5485210, -12653511, 3036542, 5205501, -163209, 1646583,
+16401406, 635655, 25883084, 34127272, 9740986, -3965866, 2274722, 24222004, 5530844, -9031242,
+-6971269, 18902152, -1284195, -7267622, -4096325, 5506685, 13954349, 27139898, -15050102, 1161252,
+-9795210, 1204202, 1003412, 21900038, -12458626, 10216653, 13895293, 7144141, -10516227, 2028835,
+16244103, 831613, 503585, 14470819, 2211371, 8209830, 6039798, 282931, -2898566, 1518808,
+-2018635, 2243584, 1360431, 2449205, 1202054, 6250251, 2486249, 1668595, 2013803, 4089346,
+1886564, 4476967, 1817845, 2188286, 2381559, 1879585, 2505577, 1246614, 2321430, 3185255,
+3619584, 3489661, 3929895, 3124052, 4154307, 3079492, 3386045, 1430224, 3447785, 1434519,
+3176665, 1060857, 3202972, 2174327, 2936147, 703301, 2934000, 1887101, 3121904, 2040646,
+3516505, 1085553, 3760781, 1134945, 3362423, 1868848, 3333968, 1303523, 3750580, 1237488,
+3053722, 1740536, 3280281, 1610076, 3871376, -38655, -14081587, -68940128, -14582488, 39197484,
+21342766, 85219664, 5021891, -11812771, -37606732, -73895984, -81333792, -13109314, 35575752, 40088152,
+25715580, -40754944, -54193896, 135828, -6355478, 22294638, 57204132, 29500520, -5035849, -33568392,
+-45985676, -28538448, 2183991, -27938762, 11383811, -23284092, -11507291, 38487740, 31632972, 28477780,
+11165304, -38400228, -10616622, -36703716, -28427314, -14418205, 22240414, -3572876, 23598698, 58106076,
+60240676, -24459838, 7126425, -43731892, -30084636, -20582020, -3637837, 8844411, 35003984, 37702832,
+51382840, 36966248, 13254269, -24768540, -23172960, -5017596, 16626892, -41225244, 3211025, 49463528,
+39138428, -9630927, 52977884, 47743932, 26752814, 49873696, -93256624, 22799834, -26418880, -28207734,
+16152835, -14857902, -1223529, 94795832, 79817136, 28852516, -24511378, -1591285, -37365680, -6765111,
+-50287624, -17289390, -8380018, 20045150, 61794916, 32938104, 13019656, 11607149, -9867687, -30354682,
+-39806292, 730144, -26260504, 21706764, -2233920, 478352, 23727010, 19984482, 7357816, 20679730,
+7136625, 31955094, -21799644, 208306, -24043764, 10672994, -20910048, -18547280, 3401077, -5131949,
+16693464, 30273076, 1851131, -26746372, -46154256, -13225278, -26739930, 3776887, 12043625, 22594212,
+-17824114, -5616207, 836982, -303332, 23430658, 1884417, -120120568, -136177312, -146416512, -147928336,
+-200539008, -12016782, -71917080, -23322210, 26450020, 66853312, 93842352, 96807488, 197941088, 212262112,
+172776864, 128502736, 136121472, 129802504, 49961744, -19432580, -89388472, -89544696, -137370768, -44703092,
+-74490304, -55554328, -5288179, -116609432, -33606508, -104162624, -28414430, -119672288, -112831472, -52136608,
+-93168576, -9587978, -47098076, -43528956, -69690136, -46149424, -105185896, -74370040, -39560944, -36257576,
+-55682104, -34133180, -4170413, -45059040, 15071577, 67177584, -52459804, 79484272, 47600584, 106120592,
+106574248, 93070328, 114757768, 96970160, 160101888, 159068944, 126811056, 169737648, 145504368, 222319312,
+218885488, 258002976, 200749456, 216142624, 235490368, 212766768, 254358704, 188517920, 275440544, 220178816,
+83845280, 107652280, 28298466, 42632384, -149148112, -125123136, -139748576, -148664928, -156815696, -202507712,
+-190747008, -209578304, -230199504, -270528192, -226192848, -207038368, -230220992, -250978032, -299321632, -240025856,
+-265865984, -267515792, -203067664, -228821360, -132118024, -163864816, -112246288, -104118064, -55229520, -40295384,
+-57180512, -9807558, 26863946, 130009200, 123085176, 89468464, 101032664, 108820512, 147383952, 151100176,
+163283376, 172350064, 148109264, 150632016, 110566952, 156735168, 160133568, 122129008, 85784992, 66388920,
+96192768, 95333240, 74068856, 44545792, 24536612, 37553048, -9813463, 5218386, -17602386, -13796509,
+-71155264, -64961380, -47498044, -32694902, -43337292, -33020782, -15898895, -12899397, -17221746, -31849866,
+-29491392, -14448807, -18996640, -12357158, -10623065, 2296734, 4966056, 1094143, -5065914, -1152125,
+2566243, -1563368, -1621350, 1913408, 3468723, 7017977, 1906966, -1779727, -331786, 2392834,
+1999844, -1588064, -683437, 3801583, 2393908, 2012729, 2217814, 4051765, 3341485, 928787,
+-318901, 2863133, 2729989, 3012383, -668404, -3170760, -1611150, 1130113, 3907883, 4661650,
+2579665, 967441, -2382633, -3772055, -2808909, -2777770, -5510443, -9002251, -11369315, -11647951,
+-12056510, -13174812, -14428943, -16759499, -18712098, -20225538, -20037096, -18172544, -16728898, -16773995,
+-16254841, -15315853, -9931038, -6803765, -4958540, -1067299, 2647847, 5661841, 8704288, 11909407,
+13696651, 15919833, 15829102, 15282567, 15201500, 13640816, 11307038, 8756365, 7007239, 5683316,
+4191888, 2874407, 1736777, 1038308, 485868, 367757, 228707, 165893, 110059, 60666,
+56908, 104690, 176094, 213675, },
},
{
{
-2786897,
-5300527, -159988, 2206003, 885837, -4539781, -3401077, 1249299, -3059091, -4565014, 2684892,
--495532, 739271, -2598455, 1998770, 239444, -4037806, -134755, 4772246, 3886409, -2884608,
--5123896, -4663798, 744640, -1035087, -874026, -3961571, 4417374, -1109712, 1280974, -1778653,
--1060857, -348966, 1706176, -1136019, -2248952, -8756901, 3045669, -617402, 2896419, 1741072,
-1246077, -177167, 5922223, 1154273, 1222992, 870268, -2955474, -1870995, -229781, 482110,
--2959233, -661425, 1219771, -362925, -2793876, -1445793, 153008, 2830384, -4304094, -5851893,
--7267622, 2640868, 4239133, 475131, 3514357, 2594160, 534723, -6655052, -127238, -1704028,
--2305861, 167504, 421444, 2829847, -551903, 4005594, 2846490, -1199907, -3969624, -1902671,
--671089, 1076963, 353261, 1347546, 1550483, 2812667, -12885, -213138, -1254667, -1075352,
--1031329, -428423, -2195802, -1007170, -1222455, 748398, -103616, -230854, -644245, 1101659,
--1533303, 3186866, 4162360, -942745, -40265, -5920613, 5307506, -6783901, 2641405, 11454678,
--2435783, -4251481, 666257, 5979132, 651761, -1692217, -810138, -1705639, -1064615, -5373541,
--2076080, 2655364, -4251481, -2439005, 262530, -234613, 4741107, -2880313, 903554, -1114544,
-1054415, -599685, -2733210, 5226439, 8913668, 2251100, -481036, -1667521, 9646497, 446677,
--3996467, 267362, -7146826, 24159, 3773129, -5509370, -670015, 1178432, -4367445, -1326608,
-5098126, 717796, -511638, 4885526, -3219078, -5145908, 2944737, 1925756, -3555159, -1784559,
--3808026, -4510790, -4810364, -2687039, -2733747, 3924526, 2834142, 763967, -70867, -2733210,
-2568391, -597537, -1818919, 3322694, 3722663, -2633352, -480499, -1249836, -1629940, 507880,
-4261682, -2137820, 991601, 4008815, 2705830, -932008, 1068910, -713501, -60130, 1692217,
--190052, 15032, 1787780, -1867774, 806380, 368830, -539018, -1723356, 1365263, 135828,
--706522, 387621, 246424, -628676, 255014, -330712, -508417, -1016834, 5873368, -8497593,
--5601711, -2003065, -1214402, 314606, 1121523, -8101382, 5669357, -2540473, 1869385, 1190243,
-1903207, 3577171, -1074, -1149441, -2680597, 5878200, -438624, 3830574, 7249368, -1540820,
-6167036, 5268315, -4520453, 3064459, 3095598, 3324305, -7994545, -769336, 501437, -2492155,
--5020280, 106300, 5905043, -1353452, -2498597, -1950989, 1820529, 5483600, 2714956, -2758443,
--26307, -2269890, 251792, -702764, -2699387, 5123896, -6565395, -5411122, -4978941, 1574642,
--683974, -149787, -6125160, -6456947, 1598265, -106837, 384936, -609885, -327491, -4811974,
--2849174, -5264020, 1054415, 4568235, -1398012, 4057134, 769873, 3610994, -7716983, 64425,
-1132261, -2547989, -1152125, 1064615, -2740726, -307090, 2039573, 2220498, -1701881, -5140002,
-4566624, 746787, 124554, -1109712, -648540, -4108136, 194884, 319438, -717260, 781684,
-144955, -1427003, 635118, 705448, -407485, -560493, -196495, -211527, -270583, 264141,
-2188823, 72478, -646393, 1840930, 812823, -105227, -594316, -141734, -296353, -3000035,
-641561, -665720, 4940286, 7902740, 428423, -3115999, -6866042, 3025268, 1939178, 1802813,
-8379481, -5609764, 119185, 948114, -1608465, -2847563, 1175747, 450972, 5022965, 11164231,
--1064078, 1864016, 4628901, -2122251, 4122095, 7226820, -5173288, -273267, -1972464, -188979,
-3190087, -5777268, 6081674, 1288490, 2147, 3159485, -602369, 4407174, -2502355, -1118302,
--1331440, 6970732, 3221762, 4408784, -917512, 3617973, -6912213, 7830799, -3128347, 3028489,
--7271380, 2824478, 5170067, 9562208, 3479997, 1717450, -6408628, -2515240, 1693291, -4889284,
--5775121, -1439888, 11339251, 13114683, 2474438, 3020973, -3821984, -1757179, 7325604, 1355062,
-3177739, -531502, 2193655, 1893544, -1027571, 1603097, -1130650, 1187559, 839666, 4577899,
-3745212, -5939403, 5169530, -1797444, 2636036, -1928977, 1926830, -1641214, -2220498, -126165,
--3517578, 460635, 2501819, 493921, 1271310, -1319092, -1574642, -876173, 598611, 24159,
-544387, -309238, 368293, -1066226, 333397, 290447, 1820529, 25770, 1231582, -677531,
-1101659, -1386738, 128849, 131533, 1312649, 5473399, 60666, 602369, 7714298, -6667937,
--7840463, 11981348, -3223910, -2019172, 7793755, 4638565, 484258, -13930726, 14859513, -2821794,
--1991254, -1651415, -916976, 515933, 821949, 4600447, 6874632, 4522064, -1105954, 7755637,
-4861903, 2443300, 2000918, -2951716, 3467649, -5697811, 4387309, -926639, 1773285, -4831302,
--7034083, 824634, -986232, 2477659, 4066260, -2118493, -6740415, -3927211, 1519345, -8012262,
-5029944, 1542967, -12799003, 5678484, 762357, 3226594, 707059, 1923072, 2037962, -565325,
--3694209, -3151969, -8775155, -6404870, -3651796, -4463008, -1093606, 476741, -6456947, -9006546,
--1457068, 5797669, 9931038, -545998, -6813429, 1080184, -10646150, 692564, -840740, -4167729,
-8756365, 8322573, 2686502, -347892, -2271501, -656593, -4791036, 2171106, 8385924, 4531728,
-6906845, 1400696, -3341485, 3253975, 1569274, -255014, 539555, 366683, 71404, 1504849,
-1429687, 1493575, -615791, 2634426, 574989, 5216775, 1898376, 1388885, 100395, 437550,
-1232119, -387621, 2303176, 893353, 797253, -1408212, 2895882, 753767, -1246077, -464393,
-2230699, -13598940, 7016903, -2600603, -4843113, -3840238, -4634270, -6466610, 12447889, -15867757,
-3733400, 3830037, 5181878, 7749195, 1264331, 2151779, 2909304, 2098629, 1604707, 2625299,
-6811282, 1231045, -3767223, -7516, -671626, -4883915, -4431333, 2261837, 4556961, 4919885,
-652298, 3508452, -8280160, -958851, -133681, -453119, -7848516, -4689031, -2837363, 5122286,
-4575751, -77846, -8591008, 50466, -4662724, -3320010, -1706176, -2303176, 5362267, 7329362,
-2201708, 7625178, -12218108, -8515310, 4032438, 2494839, 389231, 1618129, 771484, -3948149,
--7697655, -5294084, 4038343, -3427921, 6189048, 6129992, -2261300, 5809480, -9262097, -4556424,
--2629057, -3105798, 642098, 16821240, -2450816, 4764730, -2717641, -2423435, -1748589, 3578782,
-3788161, -434329, 3049964, 2122251, -5283347, 1458141, 361851, 2263985, 448287, 289373,
--2685965, 1708323, -153008, 1731409, 505196, 904091, -534723, -987843, 455267, -1515587,
--2254858, 766652, -1257889, -1880122, -611496, 585726, 697932, 768262, 770410, -91805,
-536871, 1209570, 937377, 353798, 233002, -373662, -695785, 1131187, 563714, -89121,
-772020, 13896367, -2681670, 372588, 5847598, -13243532, 9090298, 4606353, -7467875, 8273718,
-9257265, 3102577, -14297946, 8827232, 376347, -1355599, 7226820, 7807714, -451508, -2315524,
-220654, -5553930, 5182415, -3040300, -5292474, -11125039, 2588792, -12091407, 3236795, -2969433,
--1359357, 3476776, -9853729, -4053376, 8178692, -722628, -3829500, 5002027, 324807, -4305168,
-3700114, 1336272, 356482, -1850594, 2820183, -6002217, -636192, -8761733, 8274792, 8272107,
--10316511, 6881075, -7362111, -2784750, 7110319, 9945534, -730144, -4967130, 3001645, -634045,
-1427540, -12175695, -9627706, 1912334, 1718524, -2639794, -2508798, 3147137, -383326, -4321274,
-5135171, -4980015, 1734093, 3712999, -861141, 5828271, -5858873, 5893232, -49929, 9382356,
--3230889, 2841658, 5291937, 591095, -3376918, -967978, -359167, 2745021, -930397, -4429185,
-3714610, 799401, -1864016, 1636383, -1257889, -65498, -1750736, -508417, 1261110, -1490354,
-941672, 2564632, -1347546, 616328, 165893, -863825, 1615982, 425739, 1373316, -2085744,
-829466, -2135136, -2444373, 893890, -402116, 977105, 1009317, 295816, 2963528, 3869766,
-1698123, -5041755, 9782862, -3321084, 4770635, -9836549, -678068, -2581275, -8928163, 332323,
-6341519, 11255499, 14719390, -8351564, -214212, -10414759, -760209, -6625524, 5953899, -6201933,
--12285754, 817118, -7867307, -718333, 10223633, -6029061, -6016176, 10970957, 358093, 1902134,
--1125818, -6419366, 2754148, 2356327, 13215614, -9085466, 6491306, -7702487, 1944547, 2581812,
--7601555, -4671851, 12690555, 3485366, -9407052, -2414309, -3430605, -7548405, -300648, 12441447,
-6672232, 8663486, 1993939, 3475702, -11318849, -1620813, 14435385, 1161252, -8942659, 4813585,
-4784594, -6556805, -5709086, -3150896, -14794015, -2265595, 4415764, 7336878, 13021804, -3241090,
--7097434, -2039573, -4411469, 10576894, -3911105, -9199283, -6264747, -2704756, -1241782, -2837900,
--5311801, 11512660, -6571837, -782221, 1077500, 568009, 3769371, 2357937, -3369939, -4529043,
-3432216, 4119411, 4354023, -975494, 1978369, -1184874, -700617, 1956358, -410169, -1999844,
-2059974, 974421, -42950, -1304060, -425739, -3343632, 330176, -817654, -2872260, -1459215,
-1330903, 1159641, 70867, 1358820, 6372658, -21907018, -15086073, -9651328, 1205275, -18346490,
-2796561, 13724568, 4571456, 14130442, -7509214, -3433826, -1483374, -7267085, -2693481, -10934450,
-19572166, 11200738, 7829726, -16444893, -3144453, -5257040, -10689637, 3765613, -1085553, 3535295,
--13288629, -862752, -1151051, -9520332, 5612986, 1640678, 9827422, 3991635, -8140037, 12947716,
--6053220, 5288716, 2757369, -51540, 10243497, 9539122, 2433636, -12243341, 15047955, -7537668,
-10801306, 4964982, -5527086, -6132677, 12106439, 1831804, -1365263, 3202435, -10151692, -3591130,
-5917928, -790274, 10710038, -6105296, -9606768, 4018479, 2769717, 392453, 10650982, 4638565,
-2197413, -6703907, 7762080, 3095598, -5879274, -746787, -595390, -3334505, -2435783, -2800319,
-4684199, 11725261, 19680078, 9199283, -3273839, 1068910, -4469451, 4592394, 6082748, -21475,
--4978941, -2876018, -6511171, 4116726, -3539590, 1037235, -3055332, -769336, 4398047, -438087,
-512175, -3906273, 4301947, -2167885, -1872606, 2423972, -3879966, 4379793, -2963528, 2385318,
--2083059, -313533, 1002338, -2836826, -2040646, -1192927, -4728222, -4697621, -2062121, -158377,
--1649268, 3887482, 3541201, 2142652, -14136885, 18362058, 7453916, 21036750, -9826885, -11717208,
-20034948, 415538, -2364916, 4180614, 1290101, 11616276, 15571404, 1796370, -14976551, -23830626,
-3044058, -6772627, 1177358, 398358, -10458782, -920734, 12575664, 10226854, 7994545, 16258062,
--3990025, 13734769, -10093173, 12132746, 3825742, 9340480, -6695854, 16658568, 9491341, 12091944,
--19870130, -362388, 17595408, 9893457, 2990908, -4501663, 26596584, 11064373, -10773389, -6755984,
-6300717, -10508174, -1241246, -5183489, 1141388, 22275312, 23368380, 16879758, 6056441, -69256,
-8648454, -8102993, -2218351, 9407052, -10260140, 23604066, 14646375, 11449846, 4383014, -1184337,
--11505681, 13907104, 282394, 12097849, -5754720, 4539244, -8184060, -4824322, -432181, 5971615,
--9583683, 21959094, 9352828, -2706366, -11112691, -21203180, 10084046, 1574106, -7029788, -901406,
-2378338, -5152887, 2828773, 7824894, -1611687, -3038689, 42950, -1970316, -2292976, 1570347,
--2735894, -2109903, -3670050, 3367254, 1863479, -5516349, 2757369, 3119757, 3073586, -365072,
--1753957, -849330, -235686, 1491427, -642635, 1035624, -3306051, 4873178, -6629819, -150324,
-2034741, 5495411, 558883, 23314694, -1057636, -11086384, -4847945, -8625905, -62814, -14014478,
-3987877, -12032351, 7253663, 1889786, -3060164, -9400610, -11329050, -17272748, -17969070, -5103495,
-16073378, -871342, -10062035, 4571993, -9586904, 7865159, -8158291, 15134391, -14978162, 3881040,
--10558103, -10725070, -1796907, 2208687, -2996277, 7325604, -21679922, 9155260, 2328409, -4940823,
--1302986, -1114007, -10631655, -17038136, -18424872, 13749264, 6825777, -6936372, 11795591, 722091,
--4650913, -13354127, -28621126, -23363012, 13614509, -3788161, 477815, -2490544, -1185411, -1012539,
--19346144, 7782481, -22888954, -11928735, 1211181, -355945, -4780836, -2728378, -2928631, 24146306,
--7219840, -7377143, -6319508, 25251724, -4363150, -9611600, 15880105, -11987254, -7756174, -9809168,
--8484171, -31694174, 6524056, 5524939, -10660109, -1171989, 7581691, -3796214, -2811056, -5588826,
--5414343, -382252, -2806761, -2447595, 11252277, -529355, -1155346, 7886634, 8949638, -4003983,
--3193308, -329102, -1542967, 2676838, -5413270, 1022202, 647466, 1422708, -3221226, -3578782,
--1632088, 4064113, -1488206, -2550137, -415001, 2731062, -7024956, -688269, 3954591, 682363,
--2819646, 4192962, -2470680, 3768297, -51003, 3625489, 3356517, 3919158, -6183143, -182536,
-35433, -33804612, -25476136, -14501957, 29873108, -1335735, -4746476, -3454764, -2135673, -9613747,
-10712722, 8281234, 26775900, -24355148, -4559645, 7701413, -17707076, -7028714, -6114960, 30738008,
--214748, 7190849, 15812459, 1541893, 15232638, -16056735, -20095078, -13491029, -3491272, -3342558,
-2686502, 9673877, -207232, -17027934, -11556146, -774168, -8875550, -19126564, 17436494, -2775623,
--9306657, -33823, 5797132, 5533529, 3498251, -8609799, 2048163, -17804250, -7523709, -26444114,
-12766253, 8071854, -2822867, -8267275, 10117332, -13158169, -3052111, 28647432, -2683281, 24279986,
-11176579, 6534793, -6008659, -30413200, -12317429, -5831492, -16040629, -12236362, -7458211, 13640279,
--5869610, 318901, -11868605, 25960930, -8911520, 10704132, 7640210, -17721036, -6745246, 3890704,
-16800838, 29945586, 25324200, 10774462, -1302449, 10255308, 481036, 854699, -5466420, 2981781,
--5658620, -4277251, 310848, 1705102, -3238942, -4934381, -8342437, -7064685, 4170950, 2801393,
-3488050, -3320547, -904628, -17534204, 119185, -8143795, -3322694, 3051038, 2881923, 892816,
-7677254, 55298, -544924, 587337, -2429341, -12793634, -712965, -7340099, 4096325, -6538551,
--6450504, 648003, 8578660, 3508452, -1787780, -4908074, -3855807, -2268280, 4867272, 939524,
--1416266, -3340411, 17053704, -1409286, -10591389, 10312216, 5663452, 36283884, 712428, -125628,
-12427488, -17137994, -12017318, -3817689, 2472291, 5448166, -5021891, 15075335, -10123775, 1670742,
-14091788, 6106907, 4870493, 4947803, -11382737, 1571421, -887985, -5762236, 1681480, -8315594,
--14530948, -7750806, 540092, -14206141, 17221746, -1741609, 1216013, -2878702, 11675332, 13374528,
--3172370, -10617696, -1500017, -3672197, 15722802, 20487530, -15425375, -10620917, -8078297, 4827007,
-14963129, -14281303, 4077535, -999117, 2696166, -7606387, -10232760, 2652679, 9675488, 1530619,
--13217762, 11089606, 33087892, -11257109, 5703717, -2896956, 2042257, 12635257, 3115462, 14963129,
-12246562, -3723200, 19066970, 35333624, 884763, -13541495, 34376920, -1046361, 32843614, -11907797,
--16914654, 15061913, 5377299, 22980760, -4355097, 32506996, 9809168, 7273527, -10401337, 15218143,
-1246614, 1218697, 3088082, 12369506, 2105608, 14177150, 1198296, 3269544, -70867, 1852742,
-1753957, 4309463, -2044941, 4873714, 11642046, 4798552, 5015448, 1418413, 2700461, -7107634,
-5390721, 1997697, 2150168, 4093104, 1744294, -723702, -674310, 3139084, -4017942, 905701,
--431107, 2773475, 8120710, 2867965, -886374, -4675609, 3990562, 540629, 499290, -1071058,
-3871913, 2379412, -7354595, 6473053, -23526758, -7851737, 35677220, 5652177, -17086454, 4591857,
--13051869, 4307316, 6490770, -3291556, -19525996, -7534447, -28981366, 11499238, 9343164, -11310260,
-10166188, 16245177, 2947958, -4773856, -17137994, 3487514, 26195542, -13067438, 15524696, 14986215,
-1927367, 11206643, 10164040, 213675, 12792023, 8590471, -25909928, -3867618, -10752451, 25696790,
-16695075, -18360986, 10612327, -2330020, 13168370, 43045236, -4632659, -7554848, 3781182, 38730404,
-15444166, -2616172, 4424353, 6844568, 21923660, 19640348, -14148159, 23626078, 10350871, 21893058,
--16227460, 2186138, 3839701, 4520453, 13056701, 20095078, -13798656, -10654203, 15441481, 7863012,
--6078990, -5894306, -576063, 24182276, -46522548, 10659035, -16960826, -12184285, 1557463, -15855409,
--15269146, -2230162, -25761214, 17991082, -6012954, 19022948, -1377074, 16633335, -11747809, 6634114,
--297427, 5447629, -1227824, -6540699, 4351339, 3493419, 3322157, 8098161, -4725001, 4071092,
-4888210, -4750234, -317828, 7758859, 2134062, -4243965, 7938710, -5765994, 389768, 4515621,
--6389301, -4240744, 979253, 1730872, 8904004, 8040179, 4944044, 2928094, -1755568, 6288369,
-575526, 2787434, 1923072, 5239323, 5478768, -5214627, -5262946, -8449811, 5815386, 2706903,
--348429, 2182380, -777926, -9096204, -8728447, 5849209, 7644505, 8098161, -10313827, -12261595,
--31546534, 1356136, -17670032, 28520194, 3343632, -7484518, -4398047, 17100412, 4788352, 27810450,
-11086921, -7276212, 996969, 5846524, 12520367, 20926154, -23614268, -20323248, -4430796, 35226248,
--11033771, 4484483, 9875740, 15435039, 18551574, 26786638, 22956064, 2037962, -5705327, 25027312,
-1753420, -15930034, 8288213, -14773077, 10488847, 2688650, -13383655, 12091407, 46852724, 26247082,
--16825534, -12545599, -1921461, -13011067, -13150653, -11135240, 7865696, -6317360, -11228118, 2508261,
-12725988, 7802882, 4067871, 18559628, 4731444, -4402342, 19296214, 16527571, -14348412, 9667435,
--16170552, -12358768, -14368813, 58519, -34367256, -10000294, 23494544, 17631378, -8376797, 11880416,
--3125126, 964220, -21234318, 4840428, 12315819, 20115480, 10963441, 13373991, 6979859, 6480032,
--9231495, -7736847, -9804873, 5497022, -2353105, 908922, 3745748, 4347581, -744103, 10506564,
--3567507, -4383551, -5258114, 7431367, -9820443, -3673271, -12042015, -452045, 1962800, -4872104,
-109522, -2609193, 6954089, -1211181, -15794742, 434329, -1425392, 4808216, 5668283, 2170569,
-6486475, -213138, 10777684, 2512019, -1270237, -61740, 826244, 717796, 171262, 4553202,
--2916820, -13058848, 10343892, 8306467, -16524350, -7197292, -35637492, -3055869, 29253560, 132607,
--21879638, 3266323, 753767, -14742475, 19407884, 11160473, -8170639, 5390721, 8647380, 11938398,
-6479495, 1900523, -9007083, 4559108, 6724308, 18601504, 27819576, -7915088, -19197966, -10159208,
-5075041, 5653788, 22836342, -9036611, -18405546, -14304925, -14788109, 27788438, 50987168, 18436684,
-2270964, 56071872, 3077881, 23138600, 13001403, -4920959, -12108587, 9816148, -16286516, -10829760,
-11085311, 585726, -34220688, -35291748, -9108552, 14487998, -18646064, -23154706, -12982076, -17187386,
--14339285, 11690364, -10091563, -26225608, 11371463, 858457, -7943005, 5926518, -6222334, 12969727,
-52432424, -32502702, 26252450, -36930812, -21211232, -12351252, -8687645, 20279224, 7887171, 9642738,
--4348655, 11199127, 23308788, 5769215, 168577, 153008, -7263864, 3104725, 6099928, 18829136,
--1541356, -9556302, -1809255, 14351096, 8910983, -4245575, 5085242, 6435472, -5654325, -325344,
--2663954, 18053896, 6162741, 8486855, 5968394, 5067525, -7934415, -5448703, -1626182, 4534949,
--9622337, 1214402, -9502078, -6371047, 1008244, 838056, -10865194, 10068477, 13453985, -1491427,
--2260764, 8350490, -369367, -3763465, 11833709, -5181878, 8051453, 658741, 28432684, 18239116,
-16426639, 24199456, -28543816, 10787347, -29891362, -1326071, 38728256, 34442952, 14589467, 406948,
-6576132, 4264366, -11301670, 8883603, 11039677, -49111340, 2847563, 7078106, 14739254, -18072686,
--27741194, 20112794, 9411884, 5029944, -11951820, 23881092, -3535832, 18540300, 15336254, -1962263,
-2200097, -5531918, 18723910, -11319923, 5597953, 11259257, -1161789, 24036784, 13806709, -1455994,
-12212740, 13972602, -901943, -10998874, -36922760, -6875169, 3746822, -21857626, 1925219, 17268990,
--33573760, -14909442, 4941360, -14446123, -2507724, 17535278, 838056, -12554189, -16456167, 7160248,
-6874632, -33843268, -11446088, -2884071, -49929, 21126408, 10197863, 2294586, 36852968, -4743255,
--1396401, 1389422, -21328808, 19944754, -28454, 32778116, -12934294, -5560909, 9680319, 4896263,
--28203440, 847719, -4071629, -11264625, -9256728, 3440269, 952409, -7962333, -912144, -4967667,
--3673808, 962610, -12191802, 3400540, 1430761, -1728724, 4367445, 1207423, -8126078, 1561758,
-2043868, 2052458, -7872675, 11128797, 1973538, 14495515, -10951093, 1308891, -9265318, -3235184,
--1892470, -16145856, 3192771, 1451162, -907849, -2223719, -3144990, 5920613, -7494181, -5644661,
-6769942, 9327595, -7330973, -9433896, -34801048, -30345018, 5407364, -15677168, -4999342, -23408108,
--29140816, -30641908, -20190642, 21656836, 29590714, 682900, -24603184, 1830193, 1012002, 222265,
-11166915, 18863496, 18835580, 370441, -12428025, -30560302, -17599702, -26761942, -5857262, 19864,
-2114735, 2659122, 3615289, 7253663, 9385040, 17855790, -28314572, 12278238, 4784594, 6131066,
-14973330, 26641682, 29868276, -17375828, 13229036, -23983634, -7612293, -21769578, -2263985, -8537858,
-49743776, 17616882, 35791036, 1428077, -19437412, -8370355, 22862110, 24830280, -14800994, 45943804,
--19443854, 2786360, 1860795, 7910256, 16742319, 51122460, -3751117, 12456479, 28344100, 6430103,
--22765474, 14277008, 52220360, -9643275, -12854837, -30981210, -2753074, 19251118, 11750494, 1545115,
--29849486, -22551262, 3591130, -23527830, 6877317, 965294, -29723322, -3419868, 2850785, -4714801,
-21139292, 19965156, 250182, -5918465, -12920335, 13801877, -6081674, 24037858, -5696737, 248034,
-16309601, 16509317, 23380192, 18155364, -13518410, -5280663, 2968359, -4467303, 1400696, -10208600,
--9967545, -9942312, 4952098, -12161737, -14313515, 8307004, 10711648, 930397, -12329777, 7654169,
-4080756, -3038689, -3300682, -8296803, -380641, 4654671, -2300492, -7421704, -9814537, -1879048,
--6522982, 7833484, 4205847, 666257, -8991514, -3904662, -5105106, 10270877, 46714748, -2253784,
--106837, 19912542, 3987877, -64086280, -20041392, 45782204, 15329275, -13230647, -25444460, -3435974,
--16761647, 23685134, 12366821, 4576825, -13416404, -30251602, 6665789, -52223580, -6261526, 25777320,
-35103840, -3877282, -29555818, -20063402, -61172684, 18158048, -10513006, 24172612, 18277770, -17260936,
--12552579, -54239532, -40736692, 21438866, 58096948, 23313082, 27658516, -19145354, -34338800, -32903744,
--13744969, 49437756, 66489852, 34781720, -77027552, -28115930, -59001040, -31444530, 73402064, 18033494,
-16364899, -9564355, -70466992, -57622892, -57881664, -10613938, 5731097, 36719824, -13463649, 27974732,
--55866788, 34969088, 14025753, 4415227, 70473432, 4692789, -6403796, -3192771, -95377264, -28996398,
--6391985, 30246770, 15774341, 13923210, 42227044, -44870596, 2991445, -29632054, 32593434, 23658290,
-2334852, 6670084, 7004555, -5141076, 19411642, 10541997, 5214091, 16641925, -11152419, -20802138,
-5172215, 15239081, 22935126, 19027242, 12502113, -15573015, -25477746, -35610112, -3140158, 2742337,
-29017872, 36072356, -5350456, -27150098, -46930032, -22374096, 3395172, 36087388, 57683020, 15197742,
--56352120, -57702348, -59046136, -474057, 48216912, 42601244, 44790068, -14867566, -21791590, -41854992,
--42407432, 15713138, 28675886, 37548216, 18976776, -29475824, -28012314, -15680926, -4445828, 34849364,
-18371722, 5884642, -1602560, -21129628, -15385110, -3030636, -4180614, 9211094, 11464878, 5239323,
-4615479, -27239756, 53290880, 23077934, 24608016, -65233036, 13487808, -91008208, -19867444, 90194,
-13226352, 5600101, -58241904, 32060858, -15947214, -10200010, -10742787, -12110734, -14082661, -17761838,
-38596724, -10621454, -32687386, 10864657, -9078487, 4382478, 18730890, -36845988, -13076565, -1938104,
-15834471, 1959579, 42407972, -3224447, -23906324, 56048248, -46903728, 27908698, -43485472, -14085345,
-21537114, -35128000, 2808372, 26113938, -13223131, -2684355, -2438468, 33524368, 50768660, 29641716,
--16814260, -6615324, -7707856, 3598646, 16436840, -6307160, -9868761, 10233296, 5398237, -91276648,
--3508988, -2989297, 13523778, 11799349, 773631, 556198, 26252450, -28447180, -7249368, -2400350,
-20038706, -73185168, -10160819, 66932772, -16894254, -26414586, -93416, 50757924, -9122511, -11628624,
-13852343, -19397682, -20609938, 31518618, 48287244, -17023640, -24343874, 8721468, 14564234, -7212324,
--25679610, -127238, 3860639, -4828617, -3643206, -7650411, -11126113, 5702106, 470836, -9902047,
--1761474, 24159, -280784, -9088688, 5572183, -12309913, -13413183, -7478075, -8167954, 12928388,
--1743220, -2208687, -219580, -6699612, 10394358, -13081934, 3959960, 818728, 1026497, 9808632,
--395137, -15795279, 1903207, -3847217, 3080565, 2665027, -14588930, 23462332, -6046240, -1725503,
--2204929, 2570538, 5830418, -73551, -5392332, -2516314, -11572253, -21657910, -66476432, -54484880,
-48830556, 41736880, 4399121, 44547936, -47473884, -2257005, -92125976, -32373316, -15919833, 45387604,
-41322416, 25562572, -36812164, -12296491, -1170916, -17245904, 9258339, 16762720, 21530672, 28676960,
--21004000, 16313896, -39622684, -24810416, -5898064, -7974681, 1509144, 27077084, -31198642, 27879706,
--11789148, -17018808, -6559489, 3138547, -39291436, -304943, -35536024, -12849468, -13545253, -33601676,
-47419660, 22169548, 11090679, 12080669, -8680129, -47343960, -70626976, -40920836, -41371808, 28955596,
-7183333, 31165894, 43028056, 35733056, -11104638, 9038222, -24138254, -18235894, -22020834, 18198850,
--23366770, -517544, -22287660, -22832046, -14368276, 28296318, -21906480, -5653251, 2620467, -2552284,
--31772020, -33970508, -20613158, -11770895, -46262704, -27113054, 7408282, 28709708, 29656750, 38010460,
--2097555, -29827474, -39128764, -29717952, 15811385, 5600638, -4571993, 18835042, 46377056, 12879533,
-12597139, -11003169, -8440684, -14511621, -8960912, -4234301, -14388677, -2740726, 17751636, -3100430,
--7465190, -13542569, -15513422, -17118666, -5046587, 9334038, -4535486, 4385162, 2367064, -31362388,
-3672734, -14596983, 13604846, 26434450, -12789876, 18473192, -2093797, 5024575, 760209, -24661702,
--3889630, -7570954, -6455336, 4281009, -369367, -2128693, -5326297, -10835666, -14931991, 22695144,
--15149423, -100402912, -135906720, -128478576, -122177328, -146450336, -24801288, -40819908, 25547540, 40857488,
-130397888, 83534968, 110505752, 152294704, 167635792, 114194056, 145602080, 82574504, 38400228, -6334003,
--27712202, -37737732, -61915176, -60994440, -83861920, -35861904, -31026306, -79158928, -58980640, -56760140,
--64197412, -104579232, -71108552, -55106040, -44048648, -80627808, -11391864, -24554328, -33509334, -78111496,
--71816688, -59626496, -50673636, -37251324, -15095199, -49894100, 14090714, 24966644, -38748660, 42645804,
-59950764, 57115548, 104666744, 84530328, 65482144, 71559520, 72537704, 71439264, 110112224, 123354680,
-121789704, 82737712, 131375000, 129120672, 135171216, 136827456, 156103808, 137915696, 146334912, 193519408,
-99061808, 99345280, 101407400, 93784904, -4450123, 42459508, 54347980, -31834298, -16733729, -54354960,
--98310728, -89765888, -93943816, -170107008, -124235152, -76359688, -132355856, -140955456, -115643608, -124078384,
--121998008, -147392544, -134264976, -136454864, -126863672, -119285200, -107925552, -100832944, -100014752, -84030496,
--69956968, -111758808, -16709033, -50682760, -57084948, -13713831, -6819871, -56958244, -6801618, -22485228,
--7712688, 19907710, 25228102, 64398204, 39109972, 53710176, 60916060, 64998424, 60213296, 82573432,
-81871744, 85804320, 81385336, 96174520, 100190848, 96978216, 79714592, 101453568, 108108624, 82597592,
-56949656, 53679040, 33806760, 27865210, 8673150, -4153234, -2279017, -18347564, -14887967, -12766790,
--5909875, -16281684, -15689516, -16205985, -5979668, -16128139, -18576270, -12018392, -2333778, -13930190,
--17022030, -15061377, -10547366, -20949776, -23746338, -25207164, -16034724, -15262166, -17452062, -15959025,
--1612760, -4128001, -9527311, -6589017, 717796, -3256122, -5669357, -5511517, 849867, -3455301,
--6259378, -7389491, -2920041, -4607963, -1489817, -2822867, -3737159, -5906654, 1062468, 3002719,
-2395518, -584116, 1726040, 691490, 2755222, 1588064, 4084514, 3581466, 4337380, -1472100,
--1341640, -2199560, -1031329, -5332202, -5424544, -5737003, -5866926, -9413495, -6891812, -6757058,
--4715337, -8159364, -7850127, -7976828, -4916664, -6114960, -6930467, -5021354, -624381, -1067299,
--1709934, 722628, 4239670, 3132642, 3107409, 3051574, 5226975, 5849209, 6051609, 4989142,
-6340983, 6592238, 6068252, 5852967, 6135361, 5804112, 4858682, 3695819, 3623342, 2841121,
-2245194, 1187559, 1009854, 587337, 433255, 83752, 54761, -17180, -79457, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+5300527, -159988, 2206003, 885837, -4539781, -3401077, 1249299, -3059091, -4565014, 2684892,
+-495532, 739271, -2598455, 1998770, 239444, -4037806, -134755, 4772246, 3886409, -2884608,
+-5123896, -4663798, 744640, -1035087, -874026, -3961571, 4417374, -1109712, 1280974, -1778653,
+-1060857, -348966, 1706176, -1136019, -2248952, -8756901, 3045669, -617402, 2896419, 1741072,
+1246077, -177167, 5922223, 1154273, 1222992, 870268, -2955474, -1870995, -229781, 482110,
+-2959233, -661425, 1219771, -362925, -2793876, -1445793, 153008, 2830384, -4304094, -5851893,
+-7267622, 2640868, 4239133, 475131, 3514357, 2594160, 534723, -6655052, -127238, -1704028,
+-2305861, 167504, 421444, 2829847, -551903, 4005594, 2846490, -1199907, -3969624, -1902671,
+-671089, 1076963, 353261, 1347546, 1550483, 2812667, -12885, -213138, -1254667, -1075352,
+-1031329, -428423, -2195802, -1007170, -1222455, 748398, -103616, -230854, -644245, 1101659,
+-1533303, 3186866, 4162360, -942745, -40265, -5920613, 5307506, -6783901, 2641405, 11454678,
+-2435783, -4251481, 666257, 5979132, 651761, -1692217, -810138, -1705639, -1064615, -5373541,
+-2076080, 2655364, -4251481, -2439005, 262530, -234613, 4741107, -2880313, 903554, -1114544,
+1054415, -599685, -2733210, 5226439, 8913668, 2251100, -481036, -1667521, 9646497, 446677,
+-3996467, 267362, -7146826, 24159, 3773129, -5509370, -670015, 1178432, -4367445, -1326608,
+5098126, 717796, -511638, 4885526, -3219078, -5145908, 2944737, 1925756, -3555159, -1784559,
+-3808026, -4510790, -4810364, -2687039, -2733747, 3924526, 2834142, 763967, -70867, -2733210,
+2568391, -597537, -1818919, 3322694, 3722663, -2633352, -480499, -1249836, -1629940, 507880,
+4261682, -2137820, 991601, 4008815, 2705830, -932008, 1068910, -713501, -60130, 1692217,
+-190052, 15032, 1787780, -1867774, 806380, 368830, -539018, -1723356, 1365263, 135828,
+-706522, 387621, 246424, -628676, 255014, -330712, -508417, -1016834, 5873368, -8497593,
+-5601711, -2003065, -1214402, 314606, 1121523, -8101382, 5669357, -2540473, 1869385, 1190243,
+1903207, 3577171, -1074, -1149441, -2680597, 5878200, -438624, 3830574, 7249368, -1540820,
+6167036, 5268315, -4520453, 3064459, 3095598, 3324305, -7994545, -769336, 501437, -2492155,
+-5020280, 106300, 5905043, -1353452, -2498597, -1950989, 1820529, 5483600, 2714956, -2758443,
+-26307, -2269890, 251792, -702764, -2699387, 5123896, -6565395, -5411122, -4978941, 1574642,
+-683974, -149787, -6125160, -6456947, 1598265, -106837, 384936, -609885, -327491, -4811974,
+-2849174, -5264020, 1054415, 4568235, -1398012, 4057134, 769873, 3610994, -7716983, 64425,
+1132261, -2547989, -1152125, 1064615, -2740726, -307090, 2039573, 2220498, -1701881, -5140002,
+4566624, 746787, 124554, -1109712, -648540, -4108136, 194884, 319438, -717260, 781684,
+144955, -1427003, 635118, 705448, -407485, -560493, -196495, -211527, -270583, 264141,
+2188823, 72478, -646393, 1840930, 812823, -105227, -594316, -141734, -296353, -3000035,
+641561, -665720, 4940286, 7902740, 428423, -3115999, -6866042, 3025268, 1939178, 1802813,
+8379481, -5609764, 119185, 948114, -1608465, -2847563, 1175747, 450972, 5022965, 11164231,
+-1064078, 1864016, 4628901, -2122251, 4122095, 7226820, -5173288, -273267, -1972464, -188979,
+3190087, -5777268, 6081674, 1288490, 2147, 3159485, -602369, 4407174, -2502355, -1118302,
+-1331440, 6970732, 3221762, 4408784, -917512, 3617973, -6912213, 7830799, -3128347, 3028489,
+-7271380, 2824478, 5170067, 9562208, 3479997, 1717450, -6408628, -2515240, 1693291, -4889284,
+-5775121, -1439888, 11339251, 13114683, 2474438, 3020973, -3821984, -1757179, 7325604, 1355062,
+3177739, -531502, 2193655, 1893544, -1027571, 1603097, -1130650, 1187559, 839666, 4577899,
+3745212, -5939403, 5169530, -1797444, 2636036, -1928977, 1926830, -1641214, -2220498, -126165,
+-3517578, 460635, 2501819, 493921, 1271310, -1319092, -1574642, -876173, 598611, 24159,
+544387, -309238, 368293, -1066226, 333397, 290447, 1820529, 25770, 1231582, -677531,
+1101659, -1386738, 128849, 131533, 1312649, 5473399, 60666, 602369, 7714298, -6667937,
+-7840463, 11981348, -3223910, -2019172, 7793755, 4638565, 484258, -13930726, 14859513, -2821794,
+-1991254, -1651415, -916976, 515933, 821949, 4600447, 6874632, 4522064, -1105954, 7755637,
+4861903, 2443300, 2000918, -2951716, 3467649, -5697811, 4387309, -926639, 1773285, -4831302,
+-7034083, 824634, -986232, 2477659, 4066260, -2118493, -6740415, -3927211, 1519345, -8012262,
+5029944, 1542967, -12799003, 5678484, 762357, 3226594, 707059, 1923072, 2037962, -565325,
+-3694209, -3151969, -8775155, -6404870, -3651796, -4463008, -1093606, 476741, -6456947, -9006546,
+-1457068, 5797669, 9931038, -545998, -6813429, 1080184, -10646150, 692564, -840740, -4167729,
+8756365, 8322573, 2686502, -347892, -2271501, -656593, -4791036, 2171106, 8385924, 4531728,
+6906845, 1400696, -3341485, 3253975, 1569274, -255014, 539555, 366683, 71404, 1504849,
+1429687, 1493575, -615791, 2634426, 574989, 5216775, 1898376, 1388885, 100395, 437550,
+1232119, -387621, 2303176, 893353, 797253, -1408212, 2895882, 753767, -1246077, -464393,
+2230699, -13598940, 7016903, -2600603, -4843113, -3840238, -4634270, -6466610, 12447889, -15867757,
+3733400, 3830037, 5181878, 7749195, 1264331, 2151779, 2909304, 2098629, 1604707, 2625299,
+6811282, 1231045, -3767223, -7516, -671626, -4883915, -4431333, 2261837, 4556961, 4919885,
+652298, 3508452, -8280160, -958851, -133681, -453119, -7848516, -4689031, -2837363, 5122286,
+4575751, -77846, -8591008, 50466, -4662724, -3320010, -1706176, -2303176, 5362267, 7329362,
+2201708, 7625178, -12218108, -8515310, 4032438, 2494839, 389231, 1618129, 771484, -3948149,
+-7697655, -5294084, 4038343, -3427921, 6189048, 6129992, -2261300, 5809480, -9262097, -4556424,
+-2629057, -3105798, 642098, 16821240, -2450816, 4764730, -2717641, -2423435, -1748589, 3578782,
+3788161, -434329, 3049964, 2122251, -5283347, 1458141, 361851, 2263985, 448287, 289373,
+-2685965, 1708323, -153008, 1731409, 505196, 904091, -534723, -987843, 455267, -1515587,
+-2254858, 766652, -1257889, -1880122, -611496, 585726, 697932, 768262, 770410, -91805,
+536871, 1209570, 937377, 353798, 233002, -373662, -695785, 1131187, 563714, -89121,
+772020, 13896367, -2681670, 372588, 5847598, -13243532, 9090298, 4606353, -7467875, 8273718,
+9257265, 3102577, -14297946, 8827232, 376347, -1355599, 7226820, 7807714, -451508, -2315524,
+220654, -5553930, 5182415, -3040300, -5292474, -11125039, 2588792, -12091407, 3236795, -2969433,
+-1359357, 3476776, -9853729, -4053376, 8178692, -722628, -3829500, 5002027, 324807, -4305168,
+3700114, 1336272, 356482, -1850594, 2820183, -6002217, -636192, -8761733, 8274792, 8272107,
+-10316511, 6881075, -7362111, -2784750, 7110319, 9945534, -730144, -4967130, 3001645, -634045,
+1427540, -12175695, -9627706, 1912334, 1718524, -2639794, -2508798, 3147137, -383326, -4321274,
+5135171, -4980015, 1734093, 3712999, -861141, 5828271, -5858873, 5893232, -49929, 9382356,
+-3230889, 2841658, 5291937, 591095, -3376918, -967978, -359167, 2745021, -930397, -4429185,
+3714610, 799401, -1864016, 1636383, -1257889, -65498, -1750736, -508417, 1261110, -1490354,
+941672, 2564632, -1347546, 616328, 165893, -863825, 1615982, 425739, 1373316, -2085744,
+829466, -2135136, -2444373, 893890, -402116, 977105, 1009317, 295816, 2963528, 3869766,
+1698123, -5041755, 9782862, -3321084, 4770635, -9836549, -678068, -2581275, -8928163, 332323,
+6341519, 11255499, 14719390, -8351564, -214212, -10414759, -760209, -6625524, 5953899, -6201933,
+-12285754, 817118, -7867307, -718333, 10223633, -6029061, -6016176, 10970957, 358093, 1902134,
+-1125818, -6419366, 2754148, 2356327, 13215614, -9085466, 6491306, -7702487, 1944547, 2581812,
+-7601555, -4671851, 12690555, 3485366, -9407052, -2414309, -3430605, -7548405, -300648, 12441447,
+6672232, 8663486, 1993939, 3475702, -11318849, -1620813, 14435385, 1161252, -8942659, 4813585,
+4784594, -6556805, -5709086, -3150896, -14794015, -2265595, 4415764, 7336878, 13021804, -3241090,
+-7097434, -2039573, -4411469, 10576894, -3911105, -9199283, -6264747, -2704756, -1241782, -2837900,
+-5311801, 11512660, -6571837, -782221, 1077500, 568009, 3769371, 2357937, -3369939, -4529043,
+3432216, 4119411, 4354023, -975494, 1978369, -1184874, -700617, 1956358, -410169, -1999844,
+2059974, 974421, -42950, -1304060, -425739, -3343632, 330176, -817654, -2872260, -1459215,
+1330903, 1159641, 70867, 1358820, 6372658, -21907018, -15086073, -9651328, 1205275, -18346490,
+2796561, 13724568, 4571456, 14130442, -7509214, -3433826, -1483374, -7267085, -2693481, -10934450,
+19572166, 11200738, 7829726, -16444893, -3144453, -5257040, -10689637, 3765613, -1085553, 3535295,
+-13288629, -862752, -1151051, -9520332, 5612986, 1640678, 9827422, 3991635, -8140037, 12947716,
+-6053220, 5288716, 2757369, -51540, 10243497, 9539122, 2433636, -12243341, 15047955, -7537668,
+10801306, 4964982, -5527086, -6132677, 12106439, 1831804, -1365263, 3202435, -10151692, -3591130,
+5917928, -790274, 10710038, -6105296, -9606768, 4018479, 2769717, 392453, 10650982, 4638565,
+2197413, -6703907, 7762080, 3095598, -5879274, -746787, -595390, -3334505, -2435783, -2800319,
+4684199, 11725261, 19680078, 9199283, -3273839, 1068910, -4469451, 4592394, 6082748, -21475,
+-4978941, -2876018, -6511171, 4116726, -3539590, 1037235, -3055332, -769336, 4398047, -438087,
+512175, -3906273, 4301947, -2167885, -1872606, 2423972, -3879966, 4379793, -2963528, 2385318,
+-2083059, -313533, 1002338, -2836826, -2040646, -1192927, -4728222, -4697621, -2062121, -158377,
+-1649268, 3887482, 3541201, 2142652, -14136885, 18362058, 7453916, 21036750, -9826885, -11717208,
+20034948, 415538, -2364916, 4180614, 1290101, 11616276, 15571404, 1796370, -14976551, -23830626,
+3044058, -6772627, 1177358, 398358, -10458782, -920734, 12575664, 10226854, 7994545, 16258062,
+-3990025, 13734769, -10093173, 12132746, 3825742, 9340480, -6695854, 16658568, 9491341, 12091944,
+-19870130, -362388, 17595408, 9893457, 2990908, -4501663, 26596584, 11064373, -10773389, -6755984,
+6300717, -10508174, -1241246, -5183489, 1141388, 22275312, 23368380, 16879758, 6056441, -69256,
+8648454, -8102993, -2218351, 9407052, -10260140, 23604066, 14646375, 11449846, 4383014, -1184337,
+-11505681, 13907104, 282394, 12097849, -5754720, 4539244, -8184060, -4824322, -432181, 5971615,
+-9583683, 21959094, 9352828, -2706366, -11112691, -21203180, 10084046, 1574106, -7029788, -901406,
+2378338, -5152887, 2828773, 7824894, -1611687, -3038689, 42950, -1970316, -2292976, 1570347,
+-2735894, -2109903, -3670050, 3367254, 1863479, -5516349, 2757369, 3119757, 3073586, -365072,
+-1753957, -849330, -235686, 1491427, -642635, 1035624, -3306051, 4873178, -6629819, -150324,
+2034741, 5495411, 558883, 23314694, -1057636, -11086384, -4847945, -8625905, -62814, -14014478,
+3987877, -12032351, 7253663, 1889786, -3060164, -9400610, -11329050, -17272748, -17969070, -5103495,
+16073378, -871342, -10062035, 4571993, -9586904, 7865159, -8158291, 15134391, -14978162, 3881040,
+-10558103, -10725070, -1796907, 2208687, -2996277, 7325604, -21679922, 9155260, 2328409, -4940823,
+-1302986, -1114007, -10631655, -17038136, -18424872, 13749264, 6825777, -6936372, 11795591, 722091,
+-4650913, -13354127, -28621126, -23363012, 13614509, -3788161, 477815, -2490544, -1185411, -1012539,
+-19346144, 7782481, -22888954, -11928735, 1211181, -355945, -4780836, -2728378, -2928631, 24146306,
+-7219840, -7377143, -6319508, 25251724, -4363150, -9611600, 15880105, -11987254, -7756174, -9809168,
+-8484171, -31694174, 6524056, 5524939, -10660109, -1171989, 7581691, -3796214, -2811056, -5588826,
+-5414343, -382252, -2806761, -2447595, 11252277, -529355, -1155346, 7886634, 8949638, -4003983,
+-3193308, -329102, -1542967, 2676838, -5413270, 1022202, 647466, 1422708, -3221226, -3578782,
+-1632088, 4064113, -1488206, -2550137, -415001, 2731062, -7024956, -688269, 3954591, 682363,
+-2819646, 4192962, -2470680, 3768297, -51003, 3625489, 3356517, 3919158, -6183143, -182536,
+35433, -33804612, -25476136, -14501957, 29873108, -1335735, -4746476, -3454764, -2135673, -9613747,
+10712722, 8281234, 26775900, -24355148, -4559645, 7701413, -17707076, -7028714, -6114960, 30738008,
+-214748, 7190849, 15812459, 1541893, 15232638, -16056735, -20095078, -13491029, -3491272, -3342558,
+2686502, 9673877, -207232, -17027934, -11556146, -774168, -8875550, -19126564, 17436494, -2775623,
+-9306657, -33823, 5797132, 5533529, 3498251, -8609799, 2048163, -17804250, -7523709, -26444114,
+12766253, 8071854, -2822867, -8267275, 10117332, -13158169, -3052111, 28647432, -2683281, 24279986,
+11176579, 6534793, -6008659, -30413200, -12317429, -5831492, -16040629, -12236362, -7458211, 13640279,
+-5869610, 318901, -11868605, 25960930, -8911520, 10704132, 7640210, -17721036, -6745246, 3890704,
+16800838, 29945586, 25324200, 10774462, -1302449, 10255308, 481036, 854699, -5466420, 2981781,
+-5658620, -4277251, 310848, 1705102, -3238942, -4934381, -8342437, -7064685, 4170950, 2801393,
+3488050, -3320547, -904628, -17534204, 119185, -8143795, -3322694, 3051038, 2881923, 892816,
+7677254, 55298, -544924, 587337, -2429341, -12793634, -712965, -7340099, 4096325, -6538551,
+-6450504, 648003, 8578660, 3508452, -1787780, -4908074, -3855807, -2268280, 4867272, 939524,
+-1416266, -3340411, 17053704, -1409286, -10591389, 10312216, 5663452, 36283884, 712428, -125628,
+12427488, -17137994, -12017318, -3817689, 2472291, 5448166, -5021891, 15075335, -10123775, 1670742,
+14091788, 6106907, 4870493, 4947803, -11382737, 1571421, -887985, -5762236, 1681480, -8315594,
+-14530948, -7750806, 540092, -14206141, 17221746, -1741609, 1216013, -2878702, 11675332, 13374528,
+-3172370, -10617696, -1500017, -3672197, 15722802, 20487530, -15425375, -10620917, -8078297, 4827007,
+14963129, -14281303, 4077535, -999117, 2696166, -7606387, -10232760, 2652679, 9675488, 1530619,
+-13217762, 11089606, 33087892, -11257109, 5703717, -2896956, 2042257, 12635257, 3115462, 14963129,
+12246562, -3723200, 19066970, 35333624, 884763, -13541495, 34376920, -1046361, 32843614, -11907797,
+-16914654, 15061913, 5377299, 22980760, -4355097, 32506996, 9809168, 7273527, -10401337, 15218143,
+1246614, 1218697, 3088082, 12369506, 2105608, 14177150, 1198296, 3269544, -70867, 1852742,
+1753957, 4309463, -2044941, 4873714, 11642046, 4798552, 5015448, 1418413, 2700461, -7107634,
+5390721, 1997697, 2150168, 4093104, 1744294, -723702, -674310, 3139084, -4017942, 905701,
+-431107, 2773475, 8120710, 2867965, -886374, -4675609, 3990562, 540629, 499290, -1071058,
+3871913, 2379412, -7354595, 6473053, -23526758, -7851737, 35677220, 5652177, -17086454, 4591857,
+-13051869, 4307316, 6490770, -3291556, -19525996, -7534447, -28981366, 11499238, 9343164, -11310260,
+10166188, 16245177, 2947958, -4773856, -17137994, 3487514, 26195542, -13067438, 15524696, 14986215,
+1927367, 11206643, 10164040, 213675, 12792023, 8590471, -25909928, -3867618, -10752451, 25696790,
+16695075, -18360986, 10612327, -2330020, 13168370, 43045236, -4632659, -7554848, 3781182, 38730404,
+15444166, -2616172, 4424353, 6844568, 21923660, 19640348, -14148159, 23626078, 10350871, 21893058,
+-16227460, 2186138, 3839701, 4520453, 13056701, 20095078, -13798656, -10654203, 15441481, 7863012,
+-6078990, -5894306, -576063, 24182276, -46522548, 10659035, -16960826, -12184285, 1557463, -15855409,
+-15269146, -2230162, -25761214, 17991082, -6012954, 19022948, -1377074, 16633335, -11747809, 6634114,
+-297427, 5447629, -1227824, -6540699, 4351339, 3493419, 3322157, 8098161, -4725001, 4071092,
+4888210, -4750234, -317828, 7758859, 2134062, -4243965, 7938710, -5765994, 389768, 4515621,
+-6389301, -4240744, 979253, 1730872, 8904004, 8040179, 4944044, 2928094, -1755568, 6288369,
+575526, 2787434, 1923072, 5239323, 5478768, -5214627, -5262946, -8449811, 5815386, 2706903,
+-348429, 2182380, -777926, -9096204, -8728447, 5849209, 7644505, 8098161, -10313827, -12261595,
+-31546534, 1356136, -17670032, 28520194, 3343632, -7484518, -4398047, 17100412, 4788352, 27810450,
+11086921, -7276212, 996969, 5846524, 12520367, 20926154, -23614268, -20323248, -4430796, 35226248,
+-11033771, 4484483, 9875740, 15435039, 18551574, 26786638, 22956064, 2037962, -5705327, 25027312,
+1753420, -15930034, 8288213, -14773077, 10488847, 2688650, -13383655, 12091407, 46852724, 26247082,
+-16825534, -12545599, -1921461, -13011067, -13150653, -11135240, 7865696, -6317360, -11228118, 2508261,
+12725988, 7802882, 4067871, 18559628, 4731444, -4402342, 19296214, 16527571, -14348412, 9667435,
+-16170552, -12358768, -14368813, 58519, -34367256, -10000294, 23494544, 17631378, -8376797, 11880416,
+-3125126, 964220, -21234318, 4840428, 12315819, 20115480, 10963441, 13373991, 6979859, 6480032,
+-9231495, -7736847, -9804873, 5497022, -2353105, 908922, 3745748, 4347581, -744103, 10506564,
+-3567507, -4383551, -5258114, 7431367, -9820443, -3673271, -12042015, -452045, 1962800, -4872104,
+109522, -2609193, 6954089, -1211181, -15794742, 434329, -1425392, 4808216, 5668283, 2170569,
+6486475, -213138, 10777684, 2512019, -1270237, -61740, 826244, 717796, 171262, 4553202,
+-2916820, -13058848, 10343892, 8306467, -16524350, -7197292, -35637492, -3055869, 29253560, 132607,
+-21879638, 3266323, 753767, -14742475, 19407884, 11160473, -8170639, 5390721, 8647380, 11938398,
+6479495, 1900523, -9007083, 4559108, 6724308, 18601504, 27819576, -7915088, -19197966, -10159208,
+5075041, 5653788, 22836342, -9036611, -18405546, -14304925, -14788109, 27788438, 50987168, 18436684,
+2270964, 56071872, 3077881, 23138600, 13001403, -4920959, -12108587, 9816148, -16286516, -10829760,
+11085311, 585726, -34220688, -35291748, -9108552, 14487998, -18646064, -23154706, -12982076, -17187386,
+-14339285, 11690364, -10091563, -26225608, 11371463, 858457, -7943005, 5926518, -6222334, 12969727,
+52432424, -32502702, 26252450, -36930812, -21211232, -12351252, -8687645, 20279224, 7887171, 9642738,
+-4348655, 11199127, 23308788, 5769215, 168577, 153008, -7263864, 3104725, 6099928, 18829136,
+-1541356, -9556302, -1809255, 14351096, 8910983, -4245575, 5085242, 6435472, -5654325, -325344,
+-2663954, 18053896, 6162741, 8486855, 5968394, 5067525, -7934415, -5448703, -1626182, 4534949,
+-9622337, 1214402, -9502078, -6371047, 1008244, 838056, -10865194, 10068477, 13453985, -1491427,
+-2260764, 8350490, -369367, -3763465, 11833709, -5181878, 8051453, 658741, 28432684, 18239116,
+16426639, 24199456, -28543816, 10787347, -29891362, -1326071, 38728256, 34442952, 14589467, 406948,
+6576132, 4264366, -11301670, 8883603, 11039677, -49111340, 2847563, 7078106, 14739254, -18072686,
+-27741194, 20112794, 9411884, 5029944, -11951820, 23881092, -3535832, 18540300, 15336254, -1962263,
+2200097, -5531918, 18723910, -11319923, 5597953, 11259257, -1161789, 24036784, 13806709, -1455994,
+12212740, 13972602, -901943, -10998874, -36922760, -6875169, 3746822, -21857626, 1925219, 17268990,
+-33573760, -14909442, 4941360, -14446123, -2507724, 17535278, 838056, -12554189, -16456167, 7160248,
+6874632, -33843268, -11446088, -2884071, -49929, 21126408, 10197863, 2294586, 36852968, -4743255,
+-1396401, 1389422, -21328808, 19944754, -28454, 32778116, -12934294, -5560909, 9680319, 4896263,
+-28203440, 847719, -4071629, -11264625, -9256728, 3440269, 952409, -7962333, -912144, -4967667,
+-3673808, 962610, -12191802, 3400540, 1430761, -1728724, 4367445, 1207423, -8126078, 1561758,
+2043868, 2052458, -7872675, 11128797, 1973538, 14495515, -10951093, 1308891, -9265318, -3235184,
+-1892470, -16145856, 3192771, 1451162, -907849, -2223719, -3144990, 5920613, -7494181, -5644661,
+6769942, 9327595, -7330973, -9433896, -34801048, -30345018, 5407364, -15677168, -4999342, -23408108,
+-29140816, -30641908, -20190642, 21656836, 29590714, 682900, -24603184, 1830193, 1012002, 222265,
+11166915, 18863496, 18835580, 370441, -12428025, -30560302, -17599702, -26761942, -5857262, 19864,
+2114735, 2659122, 3615289, 7253663, 9385040, 17855790, -28314572, 12278238, 4784594, 6131066,
+14973330, 26641682, 29868276, -17375828, 13229036, -23983634, -7612293, -21769578, -2263985, -8537858,
+49743776, 17616882, 35791036, 1428077, -19437412, -8370355, 22862110, 24830280, -14800994, 45943804,
+-19443854, 2786360, 1860795, 7910256, 16742319, 51122460, -3751117, 12456479, 28344100, 6430103,
+-22765474, 14277008, 52220360, -9643275, -12854837, -30981210, -2753074, 19251118, 11750494, 1545115,
+-29849486, -22551262, 3591130, -23527830, 6877317, 965294, -29723322, -3419868, 2850785, -4714801,
+21139292, 19965156, 250182, -5918465, -12920335, 13801877, -6081674, 24037858, -5696737, 248034,
+16309601, 16509317, 23380192, 18155364, -13518410, -5280663, 2968359, -4467303, 1400696, -10208600,
+-9967545, -9942312, 4952098, -12161737, -14313515, 8307004, 10711648, 930397, -12329777, 7654169,
+4080756, -3038689, -3300682, -8296803, -380641, 4654671, -2300492, -7421704, -9814537, -1879048,
+-6522982, 7833484, 4205847, 666257, -8991514, -3904662, -5105106, 10270877, 46714748, -2253784,
+-106837, 19912542, 3987877, -64086280, -20041392, 45782204, 15329275, -13230647, -25444460, -3435974,
+-16761647, 23685134, 12366821, 4576825, -13416404, -30251602, 6665789, -52223580, -6261526, 25777320,
+35103840, -3877282, -29555818, -20063402, -61172684, 18158048, -10513006, 24172612, 18277770, -17260936,
+-12552579, -54239532, -40736692, 21438866, 58096948, 23313082, 27658516, -19145354, -34338800, -32903744,
+-13744969, 49437756, 66489852, 34781720, -77027552, -28115930, -59001040, -31444530, 73402064, 18033494,
+16364899, -9564355, -70466992, -57622892, -57881664, -10613938, 5731097, 36719824, -13463649, 27974732,
+-55866788, 34969088, 14025753, 4415227, 70473432, 4692789, -6403796, -3192771, -95377264, -28996398,
+-6391985, 30246770, 15774341, 13923210, 42227044, -44870596, 2991445, -29632054, 32593434, 23658290,
+2334852, 6670084, 7004555, -5141076, 19411642, 10541997, 5214091, 16641925, -11152419, -20802138,
+5172215, 15239081, 22935126, 19027242, 12502113, -15573015, -25477746, -35610112, -3140158, 2742337,
+29017872, 36072356, -5350456, -27150098, -46930032, -22374096, 3395172, 36087388, 57683020, 15197742,
+-56352120, -57702348, -59046136, -474057, 48216912, 42601244, 44790068, -14867566, -21791590, -41854992,
+-42407432, 15713138, 28675886, 37548216, 18976776, -29475824, -28012314, -15680926, -4445828, 34849364,
+18371722, 5884642, -1602560, -21129628, -15385110, -3030636, -4180614, 9211094, 11464878, 5239323,
+4615479, -27239756, 53290880, 23077934, 24608016, -65233036, 13487808, -91008208, -19867444, 90194,
+13226352, 5600101, -58241904, 32060858, -15947214, -10200010, -10742787, -12110734, -14082661, -17761838,
+38596724, -10621454, -32687386, 10864657, -9078487, 4382478, 18730890, -36845988, -13076565, -1938104,
+15834471, 1959579, 42407972, -3224447, -23906324, 56048248, -46903728, 27908698, -43485472, -14085345,
+21537114, -35128000, 2808372, 26113938, -13223131, -2684355, -2438468, 33524368, 50768660, 29641716,
+-16814260, -6615324, -7707856, 3598646, 16436840, -6307160, -9868761, 10233296, 5398237, -91276648,
+-3508988, -2989297, 13523778, 11799349, 773631, 556198, 26252450, -28447180, -7249368, -2400350,
+20038706, -73185168, -10160819, 66932772, -16894254, -26414586, -93416, 50757924, -9122511, -11628624,
+13852343, -19397682, -20609938, 31518618, 48287244, -17023640, -24343874, 8721468, 14564234, -7212324,
+-25679610, -127238, 3860639, -4828617, -3643206, -7650411, -11126113, 5702106, 470836, -9902047,
+-1761474, 24159, -280784, -9088688, 5572183, -12309913, -13413183, -7478075, -8167954, 12928388,
+-1743220, -2208687, -219580, -6699612, 10394358, -13081934, 3959960, 818728, 1026497, 9808632,
+-395137, -15795279, 1903207, -3847217, 3080565, 2665027, -14588930, 23462332, -6046240, -1725503,
+-2204929, 2570538, 5830418, -73551, -5392332, -2516314, -11572253, -21657910, -66476432, -54484880,
+48830556, 41736880, 4399121, 44547936, -47473884, -2257005, -92125976, -32373316, -15919833, 45387604,
+41322416, 25562572, -36812164, -12296491, -1170916, -17245904, 9258339, 16762720, 21530672, 28676960,
+-21004000, 16313896, -39622684, -24810416, -5898064, -7974681, 1509144, 27077084, -31198642, 27879706,
+-11789148, -17018808, -6559489, 3138547, -39291436, -304943, -35536024, -12849468, -13545253, -33601676,
+47419660, 22169548, 11090679, 12080669, -8680129, -47343960, -70626976, -40920836, -41371808, 28955596,
+7183333, 31165894, 43028056, 35733056, -11104638, 9038222, -24138254, -18235894, -22020834, 18198850,
+-23366770, -517544, -22287660, -22832046, -14368276, 28296318, -21906480, -5653251, 2620467, -2552284,
+-31772020, -33970508, -20613158, -11770895, -46262704, -27113054, 7408282, 28709708, 29656750, 38010460,
+-2097555, -29827474, -39128764, -29717952, 15811385, 5600638, -4571993, 18835042, 46377056, 12879533,
+12597139, -11003169, -8440684, -14511621, -8960912, -4234301, -14388677, -2740726, 17751636, -3100430,
+-7465190, -13542569, -15513422, -17118666, -5046587, 9334038, -4535486, 4385162, 2367064, -31362388,
+3672734, -14596983, 13604846, 26434450, -12789876, 18473192, -2093797, 5024575, 760209, -24661702,
+-3889630, -7570954, -6455336, 4281009, -369367, -2128693, -5326297, -10835666, -14931991, 22695144,
+-15149423, -100402912, -135906720, -128478576, -122177328, -146450336, -24801288, -40819908, 25547540, 40857488,
+130397888, 83534968, 110505752, 152294704, 167635792, 114194056, 145602080, 82574504, 38400228, -6334003,
+-27712202, -37737732, -61915176, -60994440, -83861920, -35861904, -31026306, -79158928, -58980640, -56760140,
+-64197412, -104579232, -71108552, -55106040, -44048648, -80627808, -11391864, -24554328, -33509334, -78111496,
+-71816688, -59626496, -50673636, -37251324, -15095199, -49894100, 14090714, 24966644, -38748660, 42645804,
+59950764, 57115548, 104666744, 84530328, 65482144, 71559520, 72537704, 71439264, 110112224, 123354680,
+121789704, 82737712, 131375000, 129120672, 135171216, 136827456, 156103808, 137915696, 146334912, 193519408,
+99061808, 99345280, 101407400, 93784904, -4450123, 42459508, 54347980, -31834298, -16733729, -54354960,
+-98310728, -89765888, -93943816, -170107008, -124235152, -76359688, -132355856, -140955456, -115643608, -124078384,
+-121998008, -147392544, -134264976, -136454864, -126863672, -119285200, -107925552, -100832944, -100014752, -84030496,
+-69956968, -111758808, -16709033, -50682760, -57084948, -13713831, -6819871, -56958244, -6801618, -22485228,
+-7712688, 19907710, 25228102, 64398204, 39109972, 53710176, 60916060, 64998424, 60213296, 82573432,
+81871744, 85804320, 81385336, 96174520, 100190848, 96978216, 79714592, 101453568, 108108624, 82597592,
+56949656, 53679040, 33806760, 27865210, 8673150, -4153234, -2279017, -18347564, -14887967, -12766790,
+-5909875, -16281684, -15689516, -16205985, -5979668, -16128139, -18576270, -12018392, -2333778, -13930190,
+-17022030, -15061377, -10547366, -20949776, -23746338, -25207164, -16034724, -15262166, -17452062, -15959025,
+-1612760, -4128001, -9527311, -6589017, 717796, -3256122, -5669357, -5511517, 849867, -3455301,
+-6259378, -7389491, -2920041, -4607963, -1489817, -2822867, -3737159, -5906654, 1062468, 3002719,
+2395518, -584116, 1726040, 691490, 2755222, 1588064, 4084514, 3581466, 4337380, -1472100,
+-1341640, -2199560, -1031329, -5332202, -5424544, -5737003, -5866926, -9413495, -6891812, -6757058,
+-4715337, -8159364, -7850127, -7976828, -4916664, -6114960, -6930467, -5021354, -624381, -1067299,
+-1709934, 722628, 4239670, 3132642, 3107409, 3051574, 5226975, 5849209, 6051609, 4989142,
+6340983, 6592238, 6068252, 5852967, 6135361, 5804112, 4858682, 3695819, 3623342, 2841121,
+2245194, 1187559, 1009854, 587337, 433255, 83752, 54761, -17180, -79457, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-6262063,
-8022462, -569620, 3258807, 1661616, 3830037, -6724845, -3609920, 4388383, 2147484, 88584,
--3718368, 812286, -10456635, -6720550, -320512, -3990025, -4514011, 1911797, 8252243, 1416802,
-6294812, -1408212, 6221797, -3649112, -3246459, -372588, -5529234, 1145146, 2816962, -1977296,
--89657, 1484985, 308164, 2552821, -253403, -5929739, 2180233, -3661997, -2742874, 1710471,
--3629784, -5531918, 5584531, -5806796, 5316633, 4955856, 3285650, -233002, -6809671, -3957812,
-814970, -1264868, 8863739, -5371931, 2188823, -670015, 1209033, -6649683, -11104638, -1941862,
--3304441, -3695819, -835908, 4733591, -980863, -5003637, 4450660, 1895154, -2194192, 3704409,
--678605, 1125281, -5090073, -403190, -1240709, -64961, 2005213, -2332167, 1632088, -4677220,
-3208341, -721018, 375810, -1701881, -1513439, 29528, 1963874, 713501, -27917, 747861,
-4295, -2819109, 855772, 234613, 1815697, -282394, 100395, -4832, 80531, -178241,
--973884, 4328254, 4318053, 651224, 7749195, -41876, 3374234, 4183298, -1074, -3714610,
-442919, -5296769, -6789807, -2553358, -7743826, -8002598, -2569464, 5330055, -1839320, -1791538,
--4137664, -1020055, -7272990, 3619584, -1999844, 1847373, 4449586, 1529545, -1489280, 3060164,
-2920578, -3538516, 2538326, 366146, 718870, 2715493, -6334003, -2722473, 4582730, -2867428,
--154619, -1811939, 5080947, -6404333, -477278, -5359583, 3554622, -288837, -336618, 4902169,
--2045478, -2310156, -1622961, -4523138, 387084, -2033130, -299574, 329639, 3161096, 3176128,
-1123671, -1371705, -5310190, -8765491, -2661269, -585726, -2107218, 4749697, -1840394, -2686502,
-3839164, -2406792, -3703873, 8366060, -1745367, -4645544, -350577, 786516, -1329292, 4134980,
--463320, -3659849, 125091, 179852, -721555, -1090922, 3345780, 755377, 535260, -1937030,
-481573, -580357, 296890, 1290101, -210453, 736587, 1595580, 203474, -230318, -316217,
-722091, -1845225, -614180, -362388, -775778, 779537, 720481, -297427, 8885750, -5735392,
--2732673, -4163434, 3266860, 592706, -452582, 6397891, 1497870, 1841467, -9397388, 1676648,
--4410395, -5117454, -6642167, -153008, 187368, 7781407, -6446209, 2916820, -2733210, 9633612,
--3540664, -3248606, 6833830, -2674691, 2324651, 998043, -508954, 1097364, -4669167, 710817,
-164819, 1913408, 9041980, 3131568, 795643, -3921842, 3128347, -7105487, -2015950, -1389959,
-3816079, 3273302, 5439576, 3569118, -4176319, -6095096, -2700998, 4596689, -625455, 2370822,
--1031866, -701153, 9188009, 2149631, -760209, -11067594, -4982162, 257161, 3779571, 5876589,
-8249559, 4626217, -2067490, 1462436, -2097555, -2850248, 5900212, -3782793, 6075768, 255014,
--5606006, 1974074, -2920578, 4767951, -4178466, -493384, 4099546, 4758287, -4859756, -1859721,
--970126, -1984275, 2811593, -664109, -2118493, 1308891, 624918, 712428, 737661, 1140851,
-556198, 675921, 235686, -360777, -490700, -1789391, 2686502, -120796, 90731, 303332,
--33823, 427349, 1396938, 1422708, -143881, -386547, 1758252, 1390496, -191126, 1161252,
-4728222, -1080184, -744640, -1686848, -5445482, 256624, 3979824, 3969087, 7381975, 3410204,
--9603547, -8009041, -6951405, 335007, -1146756, 557809, -3770445, -2319282, -556198, 2974265,
--3758, -6129992, 6710350, -905701, -6167573, 1318555, 1498944, -77846, -562104, 2733210,
-3567507, -2161979, 5434744, 318901, 3196530, -7316477, 5272609, 1916092, 3052648, -5018670,
--527207, 3760244, 3201898, 8099772, -272194, -11057930, -3011309, -5268315, 2631204, 1854889,
--433792, -2911451, 874563, -4501126, -1589675, -8241506, -4859756, -222801, 4644471, 5214091,
--3700114, -3129421, -3240553, 5358509, -1788317, -593779, -7948374, 4861903, -7845295, -2671470,
--323196, -1602560, -2119030, 8427800, -695785, -1883343, -2223719, 1722282, -5028333, 643708,
--8731669, -6966437, 2575370, -2389613, -1293859, 3190087, -1571958, 4235375, 832687, 1981591,
-2946348, -717796, 1427540, 1025423, 550293, -548145, 1080721, 502511, 271120, -580894,
--682900, 241592, -2557653, 23085, 1611687, 456877, -96637, 377420, -1570884, -435402,
-960999, 595390, 2575370, 751619, -321049, -331786, 2371359, -2760590, 4246649, -3163244,
-144955, 5805185, 10460393, 7275675, 1675037, -7943005, -5919002, 2304250, -1243393, -5046050,
--1556389, -6539625, -2725157, 13545253, 1695975, -1294933, -2351495, 141197, -2973728, -2025614,
-9215389, -9277666, -961536, 1060857, -1863479, 2492692, 5634460, -2390149, -2947421, 1517197,
--3702262, -3630858, -8596914, -3111704, 2509872, -7704098, -1159104, 4014721, 6055367, 2226941,
--12130598, -3580392, 2625299, 6319508, -4663261, 10813654, -1087701, -5298916, -2867428, -2188823,
--4063576, 5934034, -4184909, -1035087, -5576478, -4378719, -1944010, -4454955, 6306623, -2138894,
--12152610, 4826470, 8429410, 231928, 3152506, -14847702, 11848741, 332323, -9647033, 1110786,
--6460705, -1286880, 1206886, -7004018, -8186745, 5669894, 2767033, -7118909, -323733, 297963,
--4306779, -448824, -1482838, 1230508, -3801046, -1935957, -613107, -1864553, -832687, -2808909,
-1133871, -82141, 1678259, -3064996, 923955, 1903744, 133144, -1695975, 1341640, -1643362,
-1846836, 1466731, -1163936, 1432909, -66572, -820876, -250182, 568546, 824097, 489626,
-472446, -10926934, 2651069, -8005282, 8872329, 2372970, -3158949, -6433861, -11377905, -4863514,
--8192113, 3037079, 16302085, 2906619, -4020626, -91268, -2037425, -2330557, -7093139, -4627828,
--7306813, 2182380, -382789, 1797981, -2437931, 1396401, -7727183, -389231, 1995012, -5226439,
--1795833, 831076, -2746095, 927713, -2511482, 12066174, -14372034, -2444373, 1372242, 4065724,
--1311039, -5835250, -8738111, -6189585, 4985384, -1130113, 5510443, -4390531, 14002667, 1952600,
--2479807, 6979, -8002598, -10344966, -5096516, 4117800, -8750459, -402116, 10715943, -153545,
--4776004, -9841381, -16669305, 838592, 8861591, -2260227, 10139881, -763430, -2907156, -6098317,
--5305895, 1101122, 4153770, -3049427, 14617921, 4484483, -4417911, 2347737, -5710696, 2305324,
-2936684, -1854352, 3336653, 5965173, 2697240, 393526, -3652333, -10469520, 930397, -2287070,
--848256, -1499481, 983011, 342524, 84826, -4569309, 963683, -2575370, 1105954, -2537789,
--650688, -585189, -12885, -136902, -279710, -1800128, -1467805, -1983738, -2825015, -3162170,
--1124745, 258235, 1097901, -1620276, 191126, 185220, 562104, -1217086, 1405528, -2199560,
--89657, 9384504, -4245575, -11045582, -3080565, -8274255, -4341138, -3648575, 11524471, -3012383,
--3963718, -4996658, 7384123, 6602439, 5848672, 16266115, 17079474, 7835631, 10592463, -4123169,
--4999342, 6981470, 10454487, -4679904, 4562866, 3133179, -9193914, -8764955, 5049808, -1386738,
--166967, -8750459, -11013907, -2732136, -8935679, 9932649, 18751828, 3755949, 7373385, 2033667,
--2255395, 6587406, -12883828, -3563749, 2631204, 7023882, -4267050, -10506027, 15108621, -165356,
--4685810, -3838627, 6182069, -1996086, 5509370, -3927748, 8666170, -870268, -254477, 10598369,
-3313567, 4810900, 1906429, -1782948, 8000987, -12367895, -4922033, 4423817, 13807783, -8561480,
--996969, -1867237, -1965484, -5917391, -1285806, -3145527, -3978214, -722628, 917512, 3749507,
--1635846, 10940355, 4036196, -6533719, -1544578, 666794, 4232691, 1335735, -1930051, -4011500,
--841277, 2284386, -2473901, -2336462, -1891396, 2103460, 1422171, 2072859, 1177895, -2221572,
--803159, -112743, -2054068, -537945, 1625108, 816581, -242666, -2478733, 3046206, -602369,
-1903207, -1468879, 944356, -2857227, -237834, -585726, 150861, -1973538, -565325, 6774774,
--6793028, -2677375, 6107444, -4885526, 2600066, 4589710, -9245454, -9851044, 2717641, 7439420,
--2626909, 6786585, -5057861, -2259153, 12965433, -14845018, 8836358, -4265440, 25233, 345745,
-16025060, -3633006, 3099356, 5071283, 8790724, 5142150, 7689602, -1340567, -1335198, 2491618,
-1164473, 1247688, -7863012, 12039867, -16206522, -3593277, -4332549, 8960376, -1905355, 10930155,
--595927, 993211, -19271518, -5303748, 11599633, 19838454, -275415, -9904731, -8405788, 8127152,
-6471442, 4902169, 4589173, -8492761, -3968013, -4930086, 2485176, 327491, -5295158, 3030100,
-2571612, -2455648, -2761127, -11602854, -3152506, -4274030, 16442209, 1489817, 3016678, 6247567,
-394600, -12975633, 542777, -7820062, 6363531, 15426986, -8294656, 4757750, -2462090, -8035347,
-3770981, -6737193, -1269700, 2790118, 1970316, 3523484, 1384053, -571231, -3047816, 3336116,
-7131257, 1209033, 3476776, 5950141, 2539400, 6730214, -2148558, 6367289, 204548, 148176,
-1272384, 712428, 1713692, -193274, -3249680, -1738925, 15569, 1711545, 1675574, -1217086,
-2966212, 2935073, -2586107, 4148402, 7115687, -11887933, -4494684, -4392678, 2418067, -565325,
-18011482, -2120640, 755914, 11475079, -9990094, -7228430, -9357123, -9814537, -2278480, -243739,
-4597763, 19245748, -1619203, -10889353, 19937776, 443992, 5673115, 13654238, 9467719, 12750147,
--3173444, 10095858, -6313065, 13340168, 11696270, -3022046, 6158446, -5210869, -4809827, 5107253,
-15269682, 6927246, 6117107, 2253247, -4697621, -8255464, -8380555, 1489280, 10540923, -5950677,
--7158637, -8850854, -3269007, -17649094, -4032974, 3508452, -12914967, 6412386, 1059246, -5849209,
--15192373, -10142565, 148176, -20224464, 6502581, 4600447, -321586, 5763846, 3811247, -1883880,
--10460930, -6316287, -1066226, -6611566, 6386080, -6933688, 16959752, -11237245, 725850, 7487739,
-777926, -4972499, -19298362, 3479997, 9647033, 2399813, 682900, 10630044, 5938866, -5945309,
-133144, -609349, 914828, -337155, -3231963, -6750615, -1917703, -7301445, 541166, 1941325,
-1030792, -1823214, -3694209, -1679869, -2423435, 3302830, 1097364, 4292820, 3124052, 2504503,
-1056025, -256624, -1326608, -1210107, -3219078, 1633161, 348966, 1626719, -1488206, -133681,
--2672007, 267899, -2061047, 955093, -24850144, 8686571, 11303817, 19910394, -88584, -14839649,
-4150012, 7107097, -15364709, -15974594, -9996536, -421444, 8484708, -467078, -6276021, -352724,
--5495411, -3704946, -9916006, 16483548, 12865038, 4830765, -20273320, -6089190, 3227131, -1174674,
--4536559, 25604984, 9361418, 8032126, 7515119, 12144020, 9099425, 2204392, 9528385, -669478,
--15935939, 8592619, -16392280, 4984847, -16229071, 13670881, -4311074, 16511465, -9044664, 4002910,
--7320772, 5944772, 9640054, 25212532, 5305895, -32085016, -1725503, -4473209, 6861211, 14006962,
--2863670, -6237367, 10274099, -1827509, -5083631, 13799730, 849330, -617938, 674847, 5908265,
-11018202, 8741869, -9517111, -7059316, -6013491, -9631464, 2232309, -892816, 10893111, 7846369,
--14757508, -3554086, -8359080, 7148973, -4082367, -3935264, 2554969, 480499, -5699959, 4870493,
-1164473, 811749, -861141, 2771865, 2844879, 460635, -8362302, 2333241, 1435056, -1067299,
--1492501, -2768107, 85899, -3704409, 1700270, 4191351, -1293322, -1236951, 4087198, 648540,
--3848291, -2928631, -709207, 2007897, -1687385, -390842, -2374043, 640487, -1593433, 28991,
-3928821, -2633889, 620623, 27079768, -10191421, -17959406, -5683853, 7089918, -4404489, 13042742,
-18842022, -7504382, 17284022, 11147051, 8711804, -2791729, -2030983, -3416647, 16765405, 3114925,
-2059974, -9674951, 4282620, -5027259, -381715, -16015396, 10938745, -14690399, 111669, -10343355,
-17484274, -8850317, 433255, 17295834, 13142600, 8920647, -1010928, -6773701, 8052527, -183610,
--1505923, -21936546, -6492917, -13221520, -10756746, -8358007, -3932043, 11514270, 7232188, 6745783,
-69793, 16914118, -8877697, 17894982, 15708843, 16885128, 29445758, -11290395, -8829379, 13006235,
-2476049, -11330124, 17783848, -5757404, -8524436, 5837398, -2152852, -6072010, -5037460, 7701413,
--10248866, 4748087, -6334540, 16377247, -6891812, 337155, 4796942, 11964705, 16190416, 1376000,
--14064944, -15242302, 5048734, -10127533, -32846300, -17227650, 5286568, -289373, 9550397, 1297617,
--5353677, -542777, -3092377, 1479079, -5666673, -2428267, -3877819, -1565516, 487479, -627602,
--10233833, -2616172, -6689412, -5961415, -4707821, 2170569, -438087, 499827, -7440494, -5132486,
--242666, -204548, 1497870, 3937411, 3206730, 2434173, -5341866, 343061, 1267552, -6878927,
-2492155, 491237, 3068754, 1457605, 3904125, 2258079, -1536525, 3348464, -2454574, -1780264,
--726386, -24799678, -20899848, -621160, 4884989, -14141180, 1053878, 1695438, 23841900, -14877230,
--17080012, 6075768, -6962679, 379568, -12371116, 12580496, -12575664, -16985522, -10117332, 20509542,
--13306346, -10794863, -2176475, 8569533, -5607080, -14010720, 4877472, -5431523, 488553, 6969658,
--18615462, -1025423, 10937134, 17336098, -2168959, 26283590, 11747809, -2540473, 1553168, 12176232,
--4443144, -10112500, 2399276, 14426258, 1964948, 7138773, 717796, -11068131, 4370666, -24787866,
-2696703, 1779727, -2806761, -14431090, -13070122, 2047089, -5742372, -9779104, -6422050, -7792145,
-10049150, -16184511, -9068823, -4373351, 7626252, -9352291, 20755966, -2651069, -16699370, -1068910,
--9777493, -26721676, -7710540, 2209224, -419833, -17214766, -9006546, -3610457, 4424890, -10062572,
--4793184, 17806934, -5779952, -23322746, -7943542, 3488050, 2226404, 8216810, 7008850, 5338645,
--5104569, -6480569, -1232119, -4401805, 3877282, 1461363, -2630668, 5498632, 2531883, 3405372,
--1636919, 2866354, 2250563, 405338, -594316, -1337346, -1786170, 464393, 1795833, -8016557,
-2228551, -4432943, 5844914, 2431488, -5820218, -5103495, -59593, -3950296, -216896, 2207613,
--1157494, -2527052, -4204236, -3091303, 2867428, 1332514, -4815732, 2389076, 974958, -3058017,
--2539400, -5567352, 18974092, 16934520, 4880157, 34952444, -6824166, -12560632, -11308649, -5417028,
--19262392, 25382182, -15650324, -5850283, -12737262, -6657736, -6150930, 2789045, -18351858, 51003,
--105227, -2714419, 4810900, -19294604, -5166846, 12867185, -13313862, 501974, -17137456, 15925739,
--236223, -28861106, -15206869, -5387500, -955093, 7776575, -17750026, -9948218, 11603928, -2227478,
-7903277, 7415798, 7138773, -10618770, 805843, 12508019, 4323422, -23822572, 14885820, 10853919,
--13157095, 36181340, -1016297, -26229366, 6859600, 8096014, -940598, 19252728, -6307697, -32533840,
-8773544, 4517232, 9342628, 11376295, -15178951, 23323820, 8454106, 7176891, -5944235, 35392680,
--3097745, 508954, 23851564, -4237522, 10672457, 19085224, 6191196, 2773475, -4990215, 9135395,
-8053, 16138340, -7517267, 15712601, 14083198, 817118, 13925895, 8516383, 11010149, -5871757,
--442382, 13050795, 9032853, 6993818, 3803194, 4445291, -9069897, -1045825, -3758, -4064650,
-117038, -1486059, -4138738, 7577396, -8234526, -1486059, -8092792, 6614787, -3704946, 7934415,
--7209640, 1116155, -5165772, -6657200, 4176319, -2521683, -639950, -6482717, -10152766, -7140383,
-7003481, 765041, -3572876, 846109, 8820789, 6826314, -3324842, 3352759, -386547, -2533494,
-9113921, 434329, 5782100, 7078643, -25146496, -24675660, 50556596, 16301548, -31624918, -15902653,
--14525043, -28945932, -2185602, -15280420, 21030844, -11919608, 62814, 26272314, 521302, 4361003,
--19399294, 24226836, 18008798, -317291, -5896990, -1889786, -15100031, 1144609, 1854352, 3077344,
--20735028, -3004330, -1258962, -6215355, -4669167, -14241575, 13434658, 26760868, 32060858, -2601677,
--13088376, -5412196, -6731288, -4482872, -19798726, 6732361, 7625715, 7099044, -20634096, -27404038,
-29566554, 11229192, 16518981, 21572010, 20107426, -8719857, -13901735, 19528680, -19929186, 10103911,
--14942191, -11344619, -6722161, 23236846, -7791071, 4762045, 7867307, -4175782, -18861886, 38832408,
--23555748, 2464774, 27979028, -25368224, -11618423, 3053185, 10162429, 28943784, 5061619, -16681116,
-365072, 3591667, -4039417, -6958921, 4041027, -11653320, 8872329, -9630390, -13755170, 7439420,
-4015258, 10481331, 4556424, -289910, -4854387, 1267015, 2786360, 3304441, 10994043, -541166,
-1412507, 7012608, -16588237, 2476049, -7546795, 1920387, 1703491, -2542084, -6365679, -7601019,
--2025077, -7624104, 2901251, 4338454, 9368934, -703301, -6510634, 6205154, 7223598, 4630512,
-4356171, -11694659, 261456, 3142842, -3093450, 10355166, -3983045, 936303, 922881, 9588514,
--4656282, 3000035, 13113609, 13173202, -8402030, 8269423, 33724084, 20332912, -3025805, -21566642,
-2278480, 34583612, 27539330, 5816997, -27341224, -10517301, -23602456, -1741072, 18504866, 22857816,
--1656784, 8702677, 27160836, 28908888, 44841068, 45142792, -22509924, 9841918, -24308442, -4375498,
--19702088, -7060390, 15570330, -3455301, 6828461, 6140193, -13993003, -10238128, 11464878, 12787191,
-16575889, 11795591, -536871, 12160663, 18294950, -9642202, 9277666, 10808822, 3234110, 10557566,
-34984120, -26237956, -22592064, -5057861, 21628382, 20735566, -12270722, -120259, 33214592, 26877906,
--18775450, -12503187, 11435350, -22925998, 6420439, -11010149, -20799990, 6775311, -24443732, 25475062,
-9378061, 28215788, -11793980, -16430934, -31786516, -6841346, 10435697, -27837830, -23816130, -13013751,
-12503187, 7428683, 5907191, -12232067, 5375689, -8738648, 3428995, 25959856, -10979010, 3095598,
--14645838, 11179263, -6008659, -12285754, 8763881, 12150462, -6674916, -3419868, -3929895, 8745090,
-19377818, -6127845, -12932683, 345745, -179315, -4748087, -2004139, -17942226, 2557653, -9501541,
--4225711, 6592238, -5814849, -3133179, -467615, -4920422, 8004209, -7837242, -12410845, -11231876,
--9460739, 10208600, 5404680, -2238215, 4556961, 3101503, -8007430, -8738648, 3365644, -9320079,
--996432, -16200080, 12858058, 33444910, -2618856, -10919417, 21319144, 4041027, -1684164, -32685774,
-27900644, -14415521, -31077846, -10842645, 1644973, 34898756, 2955474, 24887724, 9835475, -30410516,
--6947647, -26990112, 3835406, -26903676, -19467476, -11794517, 903554, 5140539, -20950314, 19713364,
--6928856, 11812771, 12727062, 12596602, 24002962, 44144212, 25723096, -8929774, -22354768, -1190780,
-46498388, 28813324, -16410533, 22939958, -9432822, 28115392, -14608794, 2348810, -11045045, -5688148,
--2029909, -8440684, 70099768, -13838385, -19899658, -22924924, -32079648, -12596602, -24823838, -1507534,
-26825828, -11275900, 7618735, -9495099, -14343043, 24377698, -7330436, 41355168, 7307350, 32996624,
--41250476, 16396575, 71271760, 25678536, -40425304, 23396298, 21372294, 902480, 4196183, -12668543,
-13230110, 62536336, 33044942, 13718126, 18663780, -20097762, 36005248, -4218195, 5174362, 5375152,
-8570607, 3820374, 23540716, -20203526, -5363878, 1321776, 30130270, -5558225, 7074348, 34983044,
--3200825, -20090246, -4966593, 12611635, 1735167, -8726837, -20369420, 11212012, 7918309, -14141717,
--8480950, 9126269, -17291002, -14445049, 4162897, 6629282, -459562, 4483409, 2919504, 5308580,
--6585259, 5569499, -4163434, -5442261, 5116917, 1959579, 7233262, 1270237, 49086644, 22958210,
-5514201, -1468342, -53490060, 25012278, 33659660, -24167244, -17597554, 41599980, 27117886, -33199024,
--35286376, 1295470, -20618528, 9035001, 3438121, 8628589, -33172716, 8730595, -6437619, -16474958,
-29504814, -1993939, -4900021, 9976135, 24739012, 22286048, 15211700, -28338194, 624381, -13793824,
--30271466, 11098732, 8571144, 18717468, -6397354, -14049375, 38737384, -27742804, 12277164, 13527536,
-10941429, 8389145, -4818954, 22969486, -21242908, -36604396, -6169184, -41938744, 36870148, 22737020,
-36178120, -2849711, 7109782, -29143500, 30376694, 38402376, 13732084, -16221555, -42973296, -9803263,
--56688200, 911607, -10579578, -38356204, -32639604, 15006079, 2353105, 23721104, -18323404, 27182312,
-22767084, -32075890, 6772627, -19127636, -5478768, -28967406, 3647501, 84664544, 21050172, 24902758,
-30935576, 13914083, -24062554, -3207804, -402653, 20162724, -4671851, 20718922, -9413495, -12613245,
-428423, -1336272, -23790360, 20496658, -3852049, -5706938, -7442105, -16502875, 2297271, -7728257,
--10705743, -15320148, -12251394, 7660611, -8880919, 7510287, 8304856, -5780489, -10000831, -13190381,
-5989869, -2254858, 5564667, 20565914, 12589623, -59593, -1822140, 6717866, 12619151, -12421582,
-11109470, -12517682, -9677635, -6501507, -34489124, 14126684, 10612864, -16615081, 4898947, -8913131,
--51514912, -14174466, 11923903, -6641630, 4959614, -29046864, 36325760, -49384608, 3209951, -36374616,
-24137716, 26567594, 8295730, 22110492, 1924682, -24241332, 39485780, -19462644, 3626026, -131533,
--23657754, 37287296, 2057826, 9114457, 7752953, 11120744, 5755256, 27750858, 33030446, 10596758,
-38691748, -34850440, -3179887, -719407, 49633180, -10327249, 39464308, 21613886, 54438712, 10096931,
--13014825, -18253074, 21309480, -41828148, 38262252, -24119462, -14373645, -7216619, 7292318, 28703266,
--7417409, -54010824, -15349676, 85661512, 5865315, -55067924, 12903692, -36701032, 10173704, 84393424,
--23939074, -23976654, 58525908, -64404644, 31655520, 13942538, 18722836, 54732380, 34507916, -49932752,
-60109676, 39291436, 1305670, 64012728, -27099634, -9491878, 46292232, 30275224, 5084168, 12001212,
--568009, -1190243, 5151277, 15524696, -15023796, 16444893, 16928614, -15033459, 7057705, 11306501,
--21284784, -2423972, 7280507, -2430952, 3460670, 25904022, -54224, 17108466, -9767293, -209917,
-12269648, -8435316, -7130183, -17749490, 2492692, 15392089, 10087268, 14481556, -28314036, 15183783,
-17725330, 7885023, 2720862, 7182259, -1742146, 16224239, 29122562, 6929930, 13814762, 13231720,
--7295002, -8043937, 13629542, -17837536, 6533182, 21031382, 28759638, 55328304, 27262842, -27252104,
-35153232, 10227928, 31649614, -9737765, -60189672, 60170344, 52056076, 31911070, 98784248, -9691057,
--83984328, -43519292, -39964672, 87743496, 64167348, 15281494, -6236830, -16480863, -58941448, -28051506,
--19541564, -33848100, 89034672, 72438920, 100494184, 1557999, -116409184, -180537344, -88581016, 100124280,
-134815808, 138098768, 55082420, -114971976, -211450896, -129483600, -65932580, 96991632, 164600320, 93664648,
-50338628, 13450764, -75295072, -100406136, -75722960, -5835250, 57402236, 117700896, 140162496, 24905978,
-26817238, -111965504, -186105760, -98952824, 91629368, 154969392, 146244704, 91710440, -54681376, -180370912,
--117513528, -151249424, -196495, 102584224, 110147656, 55569896, -44787384, -94945080, -84919560, -66521528,
-18937048, 63230508, 43695924, 127927208, 45457932, -28587302, -76354856, -28027346, 84505632, 124579824,
-41313828, -4802847, -76911592, -15412490, -17837000, 49240188, 17942762, -12469901, -53335440, -15726023,
-2281165, -8392366, -16450262, -3366181, 11846057, 26725970, 44409424, 21805012, -44923212, -39390220,
--37584184, 8978629, 46812996, 52789444, 23822572, 5743982, -34235720, -14410689, -66530656, -58237608,
--5582384, 17456894, 72030896, 109260208, 40970768, -37848324, -90406912, -111916112, -47491064, 88172456,
-144818240, 99920800, 29904246, -72689640, -119256208, -57994408, -702227, 21912924, 21101712, 50888920,
-25439628, 11517492, -30572114, -63838248, -48721036, 7090454, 32094680, 64072860, 29829084, 11056856,
--12150999, -31938450, 37855840, 5827734, -53692460, 7426536, -13616120, -21278342, 16786342, -16189879,
--6130529, -28504624, 2188286, -10580652, -21129092, 9181029, -1918777, 7778723, 4045859, 18529562,
--17121350, -5411122, 6003291, 2517388, 8926553, -6978785, 18712636, -12224014, 13084081, 6497749,
--5253282, -12865575, -5164162, -24596740, 28038620, -1894618, 1584843, -4172561, -5863704, 2108292,
--115427, 1313186, 11278584, 6924561, 386010, 15977815, -12577812, 5355824, -11904039, 14426258,
-9150965, -9822053, 8051453, -12125230, -13627931, -11005854, -21403432, -1803349, 17364016, -14576045,
--29368450, -20046760, 2523293, 18916110, 1098438, 14237817, -27907086, -6989523, -2609193, -2087891,
--27269284, -6515466, 1651415, 4568235, -9313100, 29637958, 12458090, -9006010, 27602682, -2261300,
--47400868, -1620276, -6295349, -3956739, 9984725, 6454262, 13495324, -14696304, 21387326, -35038344,
-10917807, 6569690, -781684, 301721, -1591822, -2139431, 12566537, -1938641, 2807835, -5047661,
-187905, -10106058, 3364033, 326954, 21368536, 66035, 9873593, -9291625, 1882806, -4565014,
--11463268, 3988951, 433255, -5847061, 15475304, -2610266, -3069291, -5787469, 11564199, -3934190,
--19683836, 4363687, -3278671, 6480032, -7937100, 1064615, -1750199, -12363063, 12310450, -10934450,
-8729521, -10452340, 6394133, -869194, -3150359, -6048925, -28829968, -47554952, -74947176, 3175055,
-62592704, -23360864, -37768868, -40370008, -38153268, 8489540, 8391829, 72116792, -9980430, -9842454,
--31503048, 4024921, 10085120, 23025320, -23592256, 12603045, -17058536, 28530394, 9323300, 9658308,
-3749507, -16996796, -9134322, -10910291, -3395709, 10637560, -10170483, -8799851, 20153598, -17597018,
--10926397, 16844324, -15226196, -5239323, -13024488, -21328270, 8052527, 14805826, 2968359, 13981729,
--20184736, -4730370, -278636, 12395276, 15060303, 18757196, 1598802, -1411971, -30537754, -31205622,
--11414949, -9778030, -6629819, 15065672, 20251308, 28673202, 3409130, -12346420, 28532542, -19661286,
--8725763, 13080860, -8551280, 37593848, 2174864, -5658620, 6565395, -13025025, 11034308, 26209502,
-21325586, -7075959, 8238284, -24429774, -16023449, -8732205, -5896453, 19041738, -2136209, 18606336,
-5063767, -5427228, 2428267, 3768834, -21383568, 13401909, -15765751, 10484552, -7104950, -3987340,
--884226, 12331388, -11001559, 1928977, 2220498, 10837276, 18317498, -8680666, -2469069, -13859323,
--5554467, 5487895, -5433671, 4468377, -4202089, -5373541, -9772124, -15185931, -8433168, 14825690,
--5407901, 7559680, -10084046, -1882269, -615254, -2758980, -9024800, -3653944, 1245004, -573915,
-326954, 517007, -13766444, -1792612, -2968359, -2401961, -18254, -331786, -458488, 19676856,
--48499844, -113441360, -86673512, -9976672, 37591164, 97933304, 82705504, 78947408, 80641768, 53213572,
-22452478, -29025388, -51478940, -98328984, -72421736, -71191768, -70950176, -44144748, 42890616, 57752816,
-84897544, 65158412, 54626080, 18022220, 36456756, -8178155, -9375377, -11425150, -19862614, -37238976,
--30461518, -62727996, -22797150, -49818400, -23684598, -11780022, 16371878, 3266323, 23402740, 5402532,
-32754494, 24040542, 39611948, 52576844, 65375844, 41773924, 28128814, 46410344, 3648038, -15801722,
--57268556, -67242544, -92423936, -82455320, -77014136, -29546154, -50523312, -26491358, 3172907, 13933411,
-32726578, 62279172, 66469452, 74185896, 112173272, 63084480, 85959472, 59528248, 13653701, -9144522,
--35116728, -89731528, -98018672, -93437552, -103546296, -76134200, -52995064, -42642584, -11571716, 21776022,
-36666136, 46416784, 69224672, 73356968, 77413024, 72982232, 45637784, 31731218, 15218680, 1593433,
--84289, -22115860, -35942972, -52172580, -61844308, -65848292, -62116500, -43814572, -19519552, -17706002,
--6530498, 11581916, 31139050, 38534984, 73295224, 51481088, 40880036, 40605696, 14847165, -1808718,
--10393284, -13100187, -13606993, -35614944, -31688806, -23176718, -23957864, -17803176, 2532420, 5350456,
-7217156, -4462471, 11850352, 140660, 13989245, 14011794, 4878009, -5135171, -357556, 2819646,
-2206003, 1956895, 6767795, 1156957, -3025268, -10609643, -2102923, 1983738, 8053, 6002754,
-5268315, -1473711, -657130, -4804995, -3190087, -2823941, -1261110, -2446521, 1765232, -1743757,
--617402, -950798, -2094333, -4354023, 29528, -464393, 2777233, 5421323, 4323959, 2544231,
-3782793, 185220, 380105, 331249, 1015223, -1130650, -767725, -1467268, 365072, -576063,
--2053531, -2494302, 231391, 163209, -239444, -2229625, -2304787, -2415919, -2183991, -1312649,
-1249836, 1064078, 2116345, 2105608, 2078764, 129923, 1161789, 821949, 1349694, 1102733,
-2400887, 1823214, 1890859, 54224, -1342714, -2214056, -1748052, -2559801, -2193118, -2351495,
--1880122, -2445984, -1537598, -900869, 12348, 423054, 1247151, 1659468, 2736431, 2810519,
-3400004, 2326799, 1705639, 797790, 542777, -890669, -1589675, -2235531, -2376191, -2357937,
--1411971, -1159104, -619549, -324270, 166430, 182536, 581431, 563178, 661962, 550293,
-535797, 281857, 249108, 101469, 90731, -9127, -37581, -84289, -87510, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+8022462, -569620, 3258807, 1661616, 3830037, -6724845, -3609920, 4388383, 2147484, 88584,
+-3718368, 812286, -10456635, -6720550, -320512, -3990025, -4514011, 1911797, 8252243, 1416802,
+6294812, -1408212, 6221797, -3649112, -3246459, -372588, -5529234, 1145146, 2816962, -1977296,
+-89657, 1484985, 308164, 2552821, -253403, -5929739, 2180233, -3661997, -2742874, 1710471,
+-3629784, -5531918, 5584531, -5806796, 5316633, 4955856, 3285650, -233002, -6809671, -3957812,
+814970, -1264868, 8863739, -5371931, 2188823, -670015, 1209033, -6649683, -11104638, -1941862,
+-3304441, -3695819, -835908, 4733591, -980863, -5003637, 4450660, 1895154, -2194192, 3704409,
+-678605, 1125281, -5090073, -403190, -1240709, -64961, 2005213, -2332167, 1632088, -4677220,
+3208341, -721018, 375810, -1701881, -1513439, 29528, 1963874, 713501, -27917, 747861,
+4295, -2819109, 855772, 234613, 1815697, -282394, 100395, -4832, 80531, -178241,
+-973884, 4328254, 4318053, 651224, 7749195, -41876, 3374234, 4183298, -1074, -3714610,
+442919, -5296769, -6789807, -2553358, -7743826, -8002598, -2569464, 5330055, -1839320, -1791538,
+-4137664, -1020055, -7272990, 3619584, -1999844, 1847373, 4449586, 1529545, -1489280, 3060164,
+2920578, -3538516, 2538326, 366146, 718870, 2715493, -6334003, -2722473, 4582730, -2867428,
+-154619, -1811939, 5080947, -6404333, -477278, -5359583, 3554622, -288837, -336618, 4902169,
+-2045478, -2310156, -1622961, -4523138, 387084, -2033130, -299574, 329639, 3161096, 3176128,
+1123671, -1371705, -5310190, -8765491, -2661269, -585726, -2107218, 4749697, -1840394, -2686502,
+3839164, -2406792, -3703873, 8366060, -1745367, -4645544, -350577, 786516, -1329292, 4134980,
+-463320, -3659849, 125091, 179852, -721555, -1090922, 3345780, 755377, 535260, -1937030,
+481573, -580357, 296890, 1290101, -210453, 736587, 1595580, 203474, -230318, -316217,
+722091, -1845225, -614180, -362388, -775778, 779537, 720481, -297427, 8885750, -5735392,
+-2732673, -4163434, 3266860, 592706, -452582, 6397891, 1497870, 1841467, -9397388, 1676648,
+-4410395, -5117454, -6642167, -153008, 187368, 7781407, -6446209, 2916820, -2733210, 9633612,
+-3540664, -3248606, 6833830, -2674691, 2324651, 998043, -508954, 1097364, -4669167, 710817,
+164819, 1913408, 9041980, 3131568, 795643, -3921842, 3128347, -7105487, -2015950, -1389959,
+3816079, 3273302, 5439576, 3569118, -4176319, -6095096, -2700998, 4596689, -625455, 2370822,
+-1031866, -701153, 9188009, 2149631, -760209, -11067594, -4982162, 257161, 3779571, 5876589,
+8249559, 4626217, -2067490, 1462436, -2097555, -2850248, 5900212, -3782793, 6075768, 255014,
+-5606006, 1974074, -2920578, 4767951, -4178466, -493384, 4099546, 4758287, -4859756, -1859721,
+-970126, -1984275, 2811593, -664109, -2118493, 1308891, 624918, 712428, 737661, 1140851,
+556198, 675921, 235686, -360777, -490700, -1789391, 2686502, -120796, 90731, 303332,
+-33823, 427349, 1396938, 1422708, -143881, -386547, 1758252, 1390496, -191126, 1161252,
+4728222, -1080184, -744640, -1686848, -5445482, 256624, 3979824, 3969087, 7381975, 3410204,
+-9603547, -8009041, -6951405, 335007, -1146756, 557809, -3770445, -2319282, -556198, 2974265,
+-3758, -6129992, 6710350, -905701, -6167573, 1318555, 1498944, -77846, -562104, 2733210,
+3567507, -2161979, 5434744, 318901, 3196530, -7316477, 5272609, 1916092, 3052648, -5018670,
+-527207, 3760244, 3201898, 8099772, -272194, -11057930, -3011309, -5268315, 2631204, 1854889,
+-433792, -2911451, 874563, -4501126, -1589675, -8241506, -4859756, -222801, 4644471, 5214091,
+-3700114, -3129421, -3240553, 5358509, -1788317, -593779, -7948374, 4861903, -7845295, -2671470,
+-323196, -1602560, -2119030, 8427800, -695785, -1883343, -2223719, 1722282, -5028333, 643708,
+-8731669, -6966437, 2575370, -2389613, -1293859, 3190087, -1571958, 4235375, 832687, 1981591,
+2946348, -717796, 1427540, 1025423, 550293, -548145, 1080721, 502511, 271120, -580894,
+-682900, 241592, -2557653, 23085, 1611687, 456877, -96637, 377420, -1570884, -435402,
+960999, 595390, 2575370, 751619, -321049, -331786, 2371359, -2760590, 4246649, -3163244,
+144955, 5805185, 10460393, 7275675, 1675037, -7943005, -5919002, 2304250, -1243393, -5046050,
+-1556389, -6539625, -2725157, 13545253, 1695975, -1294933, -2351495, 141197, -2973728, -2025614,
+9215389, -9277666, -961536, 1060857, -1863479, 2492692, 5634460, -2390149, -2947421, 1517197,
+-3702262, -3630858, -8596914, -3111704, 2509872, -7704098, -1159104, 4014721, 6055367, 2226941,
+-12130598, -3580392, 2625299, 6319508, -4663261, 10813654, -1087701, -5298916, -2867428, -2188823,
+-4063576, 5934034, -4184909, -1035087, -5576478, -4378719, -1944010, -4454955, 6306623, -2138894,
+-12152610, 4826470, 8429410, 231928, 3152506, -14847702, 11848741, 332323, -9647033, 1110786,
+-6460705, -1286880, 1206886, -7004018, -8186745, 5669894, 2767033, -7118909, -323733, 297963,
+-4306779, -448824, -1482838, 1230508, -3801046, -1935957, -613107, -1864553, -832687, -2808909,
+1133871, -82141, 1678259, -3064996, 923955, 1903744, 133144, -1695975, 1341640, -1643362,
+1846836, 1466731, -1163936, 1432909, -66572, -820876, -250182, 568546, 824097, 489626,
+472446, -10926934, 2651069, -8005282, 8872329, 2372970, -3158949, -6433861, -11377905, -4863514,
+-8192113, 3037079, 16302085, 2906619, -4020626, -91268, -2037425, -2330557, -7093139, -4627828,
+-7306813, 2182380, -382789, 1797981, -2437931, 1396401, -7727183, -389231, 1995012, -5226439,
+-1795833, 831076, -2746095, 927713, -2511482, 12066174, -14372034, -2444373, 1372242, 4065724,
+-1311039, -5835250, -8738111, -6189585, 4985384, -1130113, 5510443, -4390531, 14002667, 1952600,
+-2479807, 6979, -8002598, -10344966, -5096516, 4117800, -8750459, -402116, 10715943, -153545,
+-4776004, -9841381, -16669305, 838592, 8861591, -2260227, 10139881, -763430, -2907156, -6098317,
+-5305895, 1101122, 4153770, -3049427, 14617921, 4484483, -4417911, 2347737, -5710696, 2305324,
+2936684, -1854352, 3336653, 5965173, 2697240, 393526, -3652333, -10469520, 930397, -2287070,
+-848256, -1499481, 983011, 342524, 84826, -4569309, 963683, -2575370, 1105954, -2537789,
+-650688, -585189, -12885, -136902, -279710, -1800128, -1467805, -1983738, -2825015, -3162170,
+-1124745, 258235, 1097901, -1620276, 191126, 185220, 562104, -1217086, 1405528, -2199560,
+-89657, 9384504, -4245575, -11045582, -3080565, -8274255, -4341138, -3648575, 11524471, -3012383,
+-3963718, -4996658, 7384123, 6602439, 5848672, 16266115, 17079474, 7835631, 10592463, -4123169,
+-4999342, 6981470, 10454487, -4679904, 4562866, 3133179, -9193914, -8764955, 5049808, -1386738,
+-166967, -8750459, -11013907, -2732136, -8935679, 9932649, 18751828, 3755949, 7373385, 2033667,
+-2255395, 6587406, -12883828, -3563749, 2631204, 7023882, -4267050, -10506027, 15108621, -165356,
+-4685810, -3838627, 6182069, -1996086, 5509370, -3927748, 8666170, -870268, -254477, 10598369,
+3313567, 4810900, 1906429, -1782948, 8000987, -12367895, -4922033, 4423817, 13807783, -8561480,
+-996969, -1867237, -1965484, -5917391, -1285806, -3145527, -3978214, -722628, 917512, 3749507,
+-1635846, 10940355, 4036196, -6533719, -1544578, 666794, 4232691, 1335735, -1930051, -4011500,
+-841277, 2284386, -2473901, -2336462, -1891396, 2103460, 1422171, 2072859, 1177895, -2221572,
+-803159, -112743, -2054068, -537945, 1625108, 816581, -242666, -2478733, 3046206, -602369,
+1903207, -1468879, 944356, -2857227, -237834, -585726, 150861, -1973538, -565325, 6774774,
+-6793028, -2677375, 6107444, -4885526, 2600066, 4589710, -9245454, -9851044, 2717641, 7439420,
+-2626909, 6786585, -5057861, -2259153, 12965433, -14845018, 8836358, -4265440, 25233, 345745,
+16025060, -3633006, 3099356, 5071283, 8790724, 5142150, 7689602, -1340567, -1335198, 2491618,
+1164473, 1247688, -7863012, 12039867, -16206522, -3593277, -4332549, 8960376, -1905355, 10930155,
+-595927, 993211, -19271518, -5303748, 11599633, 19838454, -275415, -9904731, -8405788, 8127152,
+6471442, 4902169, 4589173, -8492761, -3968013, -4930086, 2485176, 327491, -5295158, 3030100,
+2571612, -2455648, -2761127, -11602854, -3152506, -4274030, 16442209, 1489817, 3016678, 6247567,
+394600, -12975633, 542777, -7820062, 6363531, 15426986, -8294656, 4757750, -2462090, -8035347,
+3770981, -6737193, -1269700, 2790118, 1970316, 3523484, 1384053, -571231, -3047816, 3336116,
+7131257, 1209033, 3476776, 5950141, 2539400, 6730214, -2148558, 6367289, 204548, 148176,
+1272384, 712428, 1713692, -193274, -3249680, -1738925, 15569, 1711545, 1675574, -1217086,
+2966212, 2935073, -2586107, 4148402, 7115687, -11887933, -4494684, -4392678, 2418067, -565325,
+18011482, -2120640, 755914, 11475079, -9990094, -7228430, -9357123, -9814537, -2278480, -243739,
+4597763, 19245748, -1619203, -10889353, 19937776, 443992, 5673115, 13654238, 9467719, 12750147,
+-3173444, 10095858, -6313065, 13340168, 11696270, -3022046, 6158446, -5210869, -4809827, 5107253,
+15269682, 6927246, 6117107, 2253247, -4697621, -8255464, -8380555, 1489280, 10540923, -5950677,
+-7158637, -8850854, -3269007, -17649094, -4032974, 3508452, -12914967, 6412386, 1059246, -5849209,
+-15192373, -10142565, 148176, -20224464, 6502581, 4600447, -321586, 5763846, 3811247, -1883880,
+-10460930, -6316287, -1066226, -6611566, 6386080, -6933688, 16959752, -11237245, 725850, 7487739,
+777926, -4972499, -19298362, 3479997, 9647033, 2399813, 682900, 10630044, 5938866, -5945309,
+133144, -609349, 914828, -337155, -3231963, -6750615, -1917703, -7301445, 541166, 1941325,
+1030792, -1823214, -3694209, -1679869, -2423435, 3302830, 1097364, 4292820, 3124052, 2504503,
+1056025, -256624, -1326608, -1210107, -3219078, 1633161, 348966, 1626719, -1488206, -133681,
+-2672007, 267899, -2061047, 955093, -24850144, 8686571, 11303817, 19910394, -88584, -14839649,
+4150012, 7107097, -15364709, -15974594, -9996536, -421444, 8484708, -467078, -6276021, -352724,
+-5495411, -3704946, -9916006, 16483548, 12865038, 4830765, -20273320, -6089190, 3227131, -1174674,
+-4536559, 25604984, 9361418, 8032126, 7515119, 12144020, 9099425, 2204392, 9528385, -669478,
+-15935939, 8592619, -16392280, 4984847, -16229071, 13670881, -4311074, 16511465, -9044664, 4002910,
+-7320772, 5944772, 9640054, 25212532, 5305895, -32085016, -1725503, -4473209, 6861211, 14006962,
+-2863670, -6237367, 10274099, -1827509, -5083631, 13799730, 849330, -617938, 674847, 5908265,
+11018202, 8741869, -9517111, -7059316, -6013491, -9631464, 2232309, -892816, 10893111, 7846369,
+-14757508, -3554086, -8359080, 7148973, -4082367, -3935264, 2554969, 480499, -5699959, 4870493,
+1164473, 811749, -861141, 2771865, 2844879, 460635, -8362302, 2333241, 1435056, -1067299,
+-1492501, -2768107, 85899, -3704409, 1700270, 4191351, -1293322, -1236951, 4087198, 648540,
+-3848291, -2928631, -709207, 2007897, -1687385, -390842, -2374043, 640487, -1593433, 28991,
+3928821, -2633889, 620623, 27079768, -10191421, -17959406, -5683853, 7089918, -4404489, 13042742,
+18842022, -7504382, 17284022, 11147051, 8711804, -2791729, -2030983, -3416647, 16765405, 3114925,
+2059974, -9674951, 4282620, -5027259, -381715, -16015396, 10938745, -14690399, 111669, -10343355,
+17484274, -8850317, 433255, 17295834, 13142600, 8920647, -1010928, -6773701, 8052527, -183610,
+-1505923, -21936546, -6492917, -13221520, -10756746, -8358007, -3932043, 11514270, 7232188, 6745783,
+69793, 16914118, -8877697, 17894982, 15708843, 16885128, 29445758, -11290395, -8829379, 13006235,
+2476049, -11330124, 17783848, -5757404, -8524436, 5837398, -2152852, -6072010, -5037460, 7701413,
+-10248866, 4748087, -6334540, 16377247, -6891812, 337155, 4796942, 11964705, 16190416, 1376000,
+-14064944, -15242302, 5048734, -10127533, -32846300, -17227650, 5286568, -289373, 9550397, 1297617,
+-5353677, -542777, -3092377, 1479079, -5666673, -2428267, -3877819, -1565516, 487479, -627602,
+-10233833, -2616172, -6689412, -5961415, -4707821, 2170569, -438087, 499827, -7440494, -5132486,
+-242666, -204548, 1497870, 3937411, 3206730, 2434173, -5341866, 343061, 1267552, -6878927,
+2492155, 491237, 3068754, 1457605, 3904125, 2258079, -1536525, 3348464, -2454574, -1780264,
+-726386, -24799678, -20899848, -621160, 4884989, -14141180, 1053878, 1695438, 23841900, -14877230,
+-17080012, 6075768, -6962679, 379568, -12371116, 12580496, -12575664, -16985522, -10117332, 20509542,
+-13306346, -10794863, -2176475, 8569533, -5607080, -14010720, 4877472, -5431523, 488553, 6969658,
+-18615462, -1025423, 10937134, 17336098, -2168959, 26283590, 11747809, -2540473, 1553168, 12176232,
+-4443144, -10112500, 2399276, 14426258, 1964948, 7138773, 717796, -11068131, 4370666, -24787866,
+2696703, 1779727, -2806761, -14431090, -13070122, 2047089, -5742372, -9779104, -6422050, -7792145,
+10049150, -16184511, -9068823, -4373351, 7626252, -9352291, 20755966, -2651069, -16699370, -1068910,
+-9777493, -26721676, -7710540, 2209224, -419833, -17214766, -9006546, -3610457, 4424890, -10062572,
+-4793184, 17806934, -5779952, -23322746, -7943542, 3488050, 2226404, 8216810, 7008850, 5338645,
+-5104569, -6480569, -1232119, -4401805, 3877282, 1461363, -2630668, 5498632, 2531883, 3405372,
+-1636919, 2866354, 2250563, 405338, -594316, -1337346, -1786170, 464393, 1795833, -8016557,
+2228551, -4432943, 5844914, 2431488, -5820218, -5103495, -59593, -3950296, -216896, 2207613,
+-1157494, -2527052, -4204236, -3091303, 2867428, 1332514, -4815732, 2389076, 974958, -3058017,
+-2539400, -5567352, 18974092, 16934520, 4880157, 34952444, -6824166, -12560632, -11308649, -5417028,
+-19262392, 25382182, -15650324, -5850283, -12737262, -6657736, -6150930, 2789045, -18351858, 51003,
+-105227, -2714419, 4810900, -19294604, -5166846, 12867185, -13313862, 501974, -17137456, 15925739,
+-236223, -28861106, -15206869, -5387500, -955093, 7776575, -17750026, -9948218, 11603928, -2227478,
+7903277, 7415798, 7138773, -10618770, 805843, 12508019, 4323422, -23822572, 14885820, 10853919,
+-13157095, 36181340, -1016297, -26229366, 6859600, 8096014, -940598, 19252728, -6307697, -32533840,
+8773544, 4517232, 9342628, 11376295, -15178951, 23323820, 8454106, 7176891, -5944235, 35392680,
+-3097745, 508954, 23851564, -4237522, 10672457, 19085224, 6191196, 2773475, -4990215, 9135395,
+8053, 16138340, -7517267, 15712601, 14083198, 817118, 13925895, 8516383, 11010149, -5871757,
+-442382, 13050795, 9032853, 6993818, 3803194, 4445291, -9069897, -1045825, -3758, -4064650,
+117038, -1486059, -4138738, 7577396, -8234526, -1486059, -8092792, 6614787, -3704946, 7934415,
+-7209640, 1116155, -5165772, -6657200, 4176319, -2521683, -639950, -6482717, -10152766, -7140383,
+7003481, 765041, -3572876, 846109, 8820789, 6826314, -3324842, 3352759, -386547, -2533494,
+9113921, 434329, 5782100, 7078643, -25146496, -24675660, 50556596, 16301548, -31624918, -15902653,
+-14525043, -28945932, -2185602, -15280420, 21030844, -11919608, 62814, 26272314, 521302, 4361003,
+-19399294, 24226836, 18008798, -317291, -5896990, -1889786, -15100031, 1144609, 1854352, 3077344,
+-20735028, -3004330, -1258962, -6215355, -4669167, -14241575, 13434658, 26760868, 32060858, -2601677,
+-13088376, -5412196, -6731288, -4482872, -19798726, 6732361, 7625715, 7099044, -20634096, -27404038,
+29566554, 11229192, 16518981, 21572010, 20107426, -8719857, -13901735, 19528680, -19929186, 10103911,
+-14942191, -11344619, -6722161, 23236846, -7791071, 4762045, 7867307, -4175782, -18861886, 38832408,
+-23555748, 2464774, 27979028, -25368224, -11618423, 3053185, 10162429, 28943784, 5061619, -16681116,
+365072, 3591667, -4039417, -6958921, 4041027, -11653320, 8872329, -9630390, -13755170, 7439420,
+4015258, 10481331, 4556424, -289910, -4854387, 1267015, 2786360, 3304441, 10994043, -541166,
+1412507, 7012608, -16588237, 2476049, -7546795, 1920387, 1703491, -2542084, -6365679, -7601019,
+-2025077, -7624104, 2901251, 4338454, 9368934, -703301, -6510634, 6205154, 7223598, 4630512,
+4356171, -11694659, 261456, 3142842, -3093450, 10355166, -3983045, 936303, 922881, 9588514,
+-4656282, 3000035, 13113609, 13173202, -8402030, 8269423, 33724084, 20332912, -3025805, -21566642,
+2278480, 34583612, 27539330, 5816997, -27341224, -10517301, -23602456, -1741072, 18504866, 22857816,
+-1656784, 8702677, 27160836, 28908888, 44841068, 45142792, -22509924, 9841918, -24308442, -4375498,
+-19702088, -7060390, 15570330, -3455301, 6828461, 6140193, -13993003, -10238128, 11464878, 12787191,
+16575889, 11795591, -536871, 12160663, 18294950, -9642202, 9277666, 10808822, 3234110, 10557566,
+34984120, -26237956, -22592064, -5057861, 21628382, 20735566, -12270722, -120259, 33214592, 26877906,
+-18775450, -12503187, 11435350, -22925998, 6420439, -11010149, -20799990, 6775311, -24443732, 25475062,
+9378061, 28215788, -11793980, -16430934, -31786516, -6841346, 10435697, -27837830, -23816130, -13013751,
+12503187, 7428683, 5907191, -12232067, 5375689, -8738648, 3428995, 25959856, -10979010, 3095598,
+-14645838, 11179263, -6008659, -12285754, 8763881, 12150462, -6674916, -3419868, -3929895, 8745090,
+19377818, -6127845, -12932683, 345745, -179315, -4748087, -2004139, -17942226, 2557653, -9501541,
+-4225711, 6592238, -5814849, -3133179, -467615, -4920422, 8004209, -7837242, -12410845, -11231876,
+-9460739, 10208600, 5404680, -2238215, 4556961, 3101503, -8007430, -8738648, 3365644, -9320079,
+-996432, -16200080, 12858058, 33444910, -2618856, -10919417, 21319144, 4041027, -1684164, -32685774,
+27900644, -14415521, -31077846, -10842645, 1644973, 34898756, 2955474, 24887724, 9835475, -30410516,
+-6947647, -26990112, 3835406, -26903676, -19467476, -11794517, 903554, 5140539, -20950314, 19713364,
+-6928856, 11812771, 12727062, 12596602, 24002962, 44144212, 25723096, -8929774, -22354768, -1190780,
+46498388, 28813324, -16410533, 22939958, -9432822, 28115392, -14608794, 2348810, -11045045, -5688148,
+-2029909, -8440684, 70099768, -13838385, -19899658, -22924924, -32079648, -12596602, -24823838, -1507534,
+26825828, -11275900, 7618735, -9495099, -14343043, 24377698, -7330436, 41355168, 7307350, 32996624,
+-41250476, 16396575, 71271760, 25678536, -40425304, 23396298, 21372294, 902480, 4196183, -12668543,
+13230110, 62536336, 33044942, 13718126, 18663780, -20097762, 36005248, -4218195, 5174362, 5375152,
+8570607, 3820374, 23540716, -20203526, -5363878, 1321776, 30130270, -5558225, 7074348, 34983044,
+-3200825, -20090246, -4966593, 12611635, 1735167, -8726837, -20369420, 11212012, 7918309, -14141717,
+-8480950, 9126269, -17291002, -14445049, 4162897, 6629282, -459562, 4483409, 2919504, 5308580,
+-6585259, 5569499, -4163434, -5442261, 5116917, 1959579, 7233262, 1270237, 49086644, 22958210,
+5514201, -1468342, -53490060, 25012278, 33659660, -24167244, -17597554, 41599980, 27117886, -33199024,
+-35286376, 1295470, -20618528, 9035001, 3438121, 8628589, -33172716, 8730595, -6437619, -16474958,
+29504814, -1993939, -4900021, 9976135, 24739012, 22286048, 15211700, -28338194, 624381, -13793824,
+-30271466, 11098732, 8571144, 18717468, -6397354, -14049375, 38737384, -27742804, 12277164, 13527536,
+10941429, 8389145, -4818954, 22969486, -21242908, -36604396, -6169184, -41938744, 36870148, 22737020,
+36178120, -2849711, 7109782, -29143500, 30376694, 38402376, 13732084, -16221555, -42973296, -9803263,
+-56688200, 911607, -10579578, -38356204, -32639604, 15006079, 2353105, 23721104, -18323404, 27182312,
+22767084, -32075890, 6772627, -19127636, -5478768, -28967406, 3647501, 84664544, 21050172, 24902758,
+30935576, 13914083, -24062554, -3207804, -402653, 20162724, -4671851, 20718922, -9413495, -12613245,
+428423, -1336272, -23790360, 20496658, -3852049, -5706938, -7442105, -16502875, 2297271, -7728257,
+-10705743, -15320148, -12251394, 7660611, -8880919, 7510287, 8304856, -5780489, -10000831, -13190381,
+5989869, -2254858, 5564667, 20565914, 12589623, -59593, -1822140, 6717866, 12619151, -12421582,
+11109470, -12517682, -9677635, -6501507, -34489124, 14126684, 10612864, -16615081, 4898947, -8913131,
+-51514912, -14174466, 11923903, -6641630, 4959614, -29046864, 36325760, -49384608, 3209951, -36374616,
+24137716, 26567594, 8295730, 22110492, 1924682, -24241332, 39485780, -19462644, 3626026, -131533,
+-23657754, 37287296, 2057826, 9114457, 7752953, 11120744, 5755256, 27750858, 33030446, 10596758,
+38691748, -34850440, -3179887, -719407, 49633180, -10327249, 39464308, 21613886, 54438712, 10096931,
+-13014825, -18253074, 21309480, -41828148, 38262252, -24119462, -14373645, -7216619, 7292318, 28703266,
+-7417409, -54010824, -15349676, 85661512, 5865315, -55067924, 12903692, -36701032, 10173704, 84393424,
+-23939074, -23976654, 58525908, -64404644, 31655520, 13942538, 18722836, 54732380, 34507916, -49932752,
+60109676, 39291436, 1305670, 64012728, -27099634, -9491878, 46292232, 30275224, 5084168, 12001212,
+-568009, -1190243, 5151277, 15524696, -15023796, 16444893, 16928614, -15033459, 7057705, 11306501,
+-21284784, -2423972, 7280507, -2430952, 3460670, 25904022, -54224, 17108466, -9767293, -209917,
+12269648, -8435316, -7130183, -17749490, 2492692, 15392089, 10087268, 14481556, -28314036, 15183783,
+17725330, 7885023, 2720862, 7182259, -1742146, 16224239, 29122562, 6929930, 13814762, 13231720,
+-7295002, -8043937, 13629542, -17837536, 6533182, 21031382, 28759638, 55328304, 27262842, -27252104,
+35153232, 10227928, 31649614, -9737765, -60189672, 60170344, 52056076, 31911070, 98784248, -9691057,
+-83984328, -43519292, -39964672, 87743496, 64167348, 15281494, -6236830, -16480863, -58941448, -28051506,
+-19541564, -33848100, 89034672, 72438920, 100494184, 1557999, -116409184, -180537344, -88581016, 100124280,
+134815808, 138098768, 55082420, -114971976, -211450896, -129483600, -65932580, 96991632, 164600320, 93664648,
+50338628, 13450764, -75295072, -100406136, -75722960, -5835250, 57402236, 117700896, 140162496, 24905978,
+26817238, -111965504, -186105760, -98952824, 91629368, 154969392, 146244704, 91710440, -54681376, -180370912,
+-117513528, -151249424, -196495, 102584224, 110147656, 55569896, -44787384, -94945080, -84919560, -66521528,
+18937048, 63230508, 43695924, 127927208, 45457932, -28587302, -76354856, -28027346, 84505632, 124579824,
+41313828, -4802847, -76911592, -15412490, -17837000, 49240188, 17942762, -12469901, -53335440, -15726023,
+2281165, -8392366, -16450262, -3366181, 11846057, 26725970, 44409424, 21805012, -44923212, -39390220,
+-37584184, 8978629, 46812996, 52789444, 23822572, 5743982, -34235720, -14410689, -66530656, -58237608,
+-5582384, 17456894, 72030896, 109260208, 40970768, -37848324, -90406912, -111916112, -47491064, 88172456,
+144818240, 99920800, 29904246, -72689640, -119256208, -57994408, -702227, 21912924, 21101712, 50888920,
+25439628, 11517492, -30572114, -63838248, -48721036, 7090454, 32094680, 64072860, 29829084, 11056856,
+-12150999, -31938450, 37855840, 5827734, -53692460, 7426536, -13616120, -21278342, 16786342, -16189879,
+-6130529, -28504624, 2188286, -10580652, -21129092, 9181029, -1918777, 7778723, 4045859, 18529562,
+-17121350, -5411122, 6003291, 2517388, 8926553, -6978785, 18712636, -12224014, 13084081, 6497749,
+-5253282, -12865575, -5164162, -24596740, 28038620, -1894618, 1584843, -4172561, -5863704, 2108292,
+-115427, 1313186, 11278584, 6924561, 386010, 15977815, -12577812, 5355824, -11904039, 14426258,
+9150965, -9822053, 8051453, -12125230, -13627931, -11005854, -21403432, -1803349, 17364016, -14576045,
+-29368450, -20046760, 2523293, 18916110, 1098438, 14237817, -27907086, -6989523, -2609193, -2087891,
+-27269284, -6515466, 1651415, 4568235, -9313100, 29637958, 12458090, -9006010, 27602682, -2261300,
+-47400868, -1620276, -6295349, -3956739, 9984725, 6454262, 13495324, -14696304, 21387326, -35038344,
+10917807, 6569690, -781684, 301721, -1591822, -2139431, 12566537, -1938641, 2807835, -5047661,
+187905, -10106058, 3364033, 326954, 21368536, 66035, 9873593, -9291625, 1882806, -4565014,
+-11463268, 3988951, 433255, -5847061, 15475304, -2610266, -3069291, -5787469, 11564199, -3934190,
+-19683836, 4363687, -3278671, 6480032, -7937100, 1064615, -1750199, -12363063, 12310450, -10934450,
+8729521, -10452340, 6394133, -869194, -3150359, -6048925, -28829968, -47554952, -74947176, 3175055,
+62592704, -23360864, -37768868, -40370008, -38153268, 8489540, 8391829, 72116792, -9980430, -9842454,
+-31503048, 4024921, 10085120, 23025320, -23592256, 12603045, -17058536, 28530394, 9323300, 9658308,
+3749507, -16996796, -9134322, -10910291, -3395709, 10637560, -10170483, -8799851, 20153598, -17597018,
+-10926397, 16844324, -15226196, -5239323, -13024488, -21328270, 8052527, 14805826, 2968359, 13981729,
+-20184736, -4730370, -278636, 12395276, 15060303, 18757196, 1598802, -1411971, -30537754, -31205622,
+-11414949, -9778030, -6629819, 15065672, 20251308, 28673202, 3409130, -12346420, 28532542, -19661286,
+-8725763, 13080860, -8551280, 37593848, 2174864, -5658620, 6565395, -13025025, 11034308, 26209502,
+21325586, -7075959, 8238284, -24429774, -16023449, -8732205, -5896453, 19041738, -2136209, 18606336,
+5063767, -5427228, 2428267, 3768834, -21383568, 13401909, -15765751, 10484552, -7104950, -3987340,
+-884226, 12331388, -11001559, 1928977, 2220498, 10837276, 18317498, -8680666, -2469069, -13859323,
+-5554467, 5487895, -5433671, 4468377, -4202089, -5373541, -9772124, -15185931, -8433168, 14825690,
+-5407901, 7559680, -10084046, -1882269, -615254, -2758980, -9024800, -3653944, 1245004, -573915,
+326954, 517007, -13766444, -1792612, -2968359, -2401961, -18254, -331786, -458488, 19676856,
+-48499844, -113441360, -86673512, -9976672, 37591164, 97933304, 82705504, 78947408, 80641768, 53213572,
+22452478, -29025388, -51478940, -98328984, -72421736, -71191768, -70950176, -44144748, 42890616, 57752816,
+84897544, 65158412, 54626080, 18022220, 36456756, -8178155, -9375377, -11425150, -19862614, -37238976,
+-30461518, -62727996, -22797150, -49818400, -23684598, -11780022, 16371878, 3266323, 23402740, 5402532,
+32754494, 24040542, 39611948, 52576844, 65375844, 41773924, 28128814, 46410344, 3648038, -15801722,
+-57268556, -67242544, -92423936, -82455320, -77014136, -29546154, -50523312, -26491358, 3172907, 13933411,
+32726578, 62279172, 66469452, 74185896, 112173272, 63084480, 85959472, 59528248, 13653701, -9144522,
+-35116728, -89731528, -98018672, -93437552, -103546296, -76134200, -52995064, -42642584, -11571716, 21776022,
+36666136, 46416784, 69224672, 73356968, 77413024, 72982232, 45637784, 31731218, 15218680, 1593433,
+-84289, -22115860, -35942972, -52172580, -61844308, -65848292, -62116500, -43814572, -19519552, -17706002,
+-6530498, 11581916, 31139050, 38534984, 73295224, 51481088, 40880036, 40605696, 14847165, -1808718,
+-10393284, -13100187, -13606993, -35614944, -31688806, -23176718, -23957864, -17803176, 2532420, 5350456,
+7217156, -4462471, 11850352, 140660, 13989245, 14011794, 4878009, -5135171, -357556, 2819646,
+2206003, 1956895, 6767795, 1156957, -3025268, -10609643, -2102923, 1983738, 8053, 6002754,
+5268315, -1473711, -657130, -4804995, -3190087, -2823941, -1261110, -2446521, 1765232, -1743757,
+-617402, -950798, -2094333, -4354023, 29528, -464393, 2777233, 5421323, 4323959, 2544231,
+3782793, 185220, 380105, 331249, 1015223, -1130650, -767725, -1467268, 365072, -576063,
+-2053531, -2494302, 231391, 163209, -239444, -2229625, -2304787, -2415919, -2183991, -1312649,
+1249836, 1064078, 2116345, 2105608, 2078764, 129923, 1161789, 821949, 1349694, 1102733,
+2400887, 1823214, 1890859, 54224, -1342714, -2214056, -1748052, -2559801, -2193118, -2351495,
+-1880122, -2445984, -1537598, -900869, 12348, 423054, 1247151, 1659468, 2736431, 2810519,
+3400004, 2326799, 1705639, 797790, 542777, -890669, -1589675, -2235531, -2376191, -2357937,
+-1411971, -1159104, -619549, -324270, 166430, 182536, 581431, 563178, 661962, 550293,
+535797, 281857, 249108, 101469, 90731, -9127, -37581, -84289, -87510, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-9311489,
-7208566, 353261, 3310883, 3283503, 9331353, 4386772, -3447248, -4356708, -6072010, 4347044,
--5311801, -3867618, 869194, 1332514, 577136, 5469641, -1786170, 5111548, -1307818, 4587562,
--4346507, 2007897, -1918240, -4655208, -323733, -8873939, 1334661, 2167348, 3969624, -3246995,
--47245, 3449933, -2540473, 3876208, 3664681, -2207076, 2633889, -2954401, -1363115, -2188286,
--3172907, -4052302, 3625489, 5332202, -3991635, 2359011, 4305705, 3464428, 5269925, 647466,
--781147, 3049427, 2334852, -5576478, -202400, 628676, 364535, 1750736, 3616363, 792958,
-1318555, -1946694, -1210644, 2535105, 3594351, 1980517, -1886028, -3339874, 3706557, -3017215,
--961536, 2049236, -609885, -154082, 1588064, 353261, 114354, 3328600, -3263102, 2473901,
-1372779, 1614908, 3107946, -1266479, -343061, -1067836, -417686, 104690, 1530619, -1225676,
--202400, -854699, -461709, 26307, -100395, -508954, -324807, 315143, 467078, -35433,
--177167, -361851, 68719, -134218, 72478, -508417, -86973, 453119, -1046361, -518617,
-3697430, -1941862, 2712809, 270046, -215822, -7494718, 1218160, 6404870, -3911642, 2652142,
--7956964, -8054675, -2643552, -6548215, -5709622, -852551, 1197759, 4515085, 732829, -2161979,
-1036161, 3075197, -3948149, 5501853, -3705483, -4017405, 4671314, -2308545, 5379447, 6822019,
-962073, -4908611, 3457986, 2254858, 1397475, -2494839, -1794223, 2868501, 2409477, 492311,
--5536213, -1597728, -5112085, 4641249, -4611721, -3016141, 3433826, 166430, 2983392, 852551,
-1158567, 5049271, 875636, 5662378, -7272454, -3741454, -1663763, 3619047, 5135171, 5845988,
-7973607, 866510, -2241436, -757525, -1043140, -240518, -5143224, -2260227, -2223719, -627065,
-822486, -4189741, -2456721, -944893, -1759326, -3275986, 3963181, -3938485, -1317481, 2623151,
--6722698, 2040110, 3706020, 4081293, 2174864, 1182727, 2473364, -1199370, -2590402, -661425,
-732829, -282931, 733366, 127238, -699543, 49929, -1020592, -1235877, 1531693, 673773,
--110059, -13959, 17717, 1137630, 559956, -448824, -436476, -469225, 115427, 839129,
--970663, -173409, -25233, -190589, 587874, -32749, -374199, 8527658, -6336688, -2383170,
--1255204, 5239860, 4730370, -4791036, -442382, -8886287, -1945083, 10754061, 4049617, -4339528,
-7722888, 2512019, 2967823, 779000, -2595771, -8482024, 1134408, -3825742, -2418067, -1558536,
--5166309, -1837709, -3999688, 2778844, -1811939, -2349347, 4831838, -9128953, 8387535, -2967823,
-1190780, -2866354, 2616709, -351114, -840203, -236760, 3569118, 165356, 2255932, -3270618,
-6283001, -4899484, 7316477, 1546725, -726386, -4109747, -4809290, 9935333, 1713155, -9337796,
-9534827, 8975945, -4883378, -1801739, 2820720, -3694209, -688269, -2281702, 2254858, 5720360,
--3490198, 1297617, -2614561, -2401424, 937377, 7704635, -7080254, 4280472, -7297687, -5623723,
--5271536, -944356, 141197, -18790, 4411469, 6818261, 1779727, 1642825, 3333432, 2690797,
-1490891, 1680943, 1996623, -756451, 2150168, -1001801, -2121714, 3620658, -188442, 484258,
--666257, -1096827, -638876, 6979, 1531693, -406411, 338766, 136902, -1374926, -4832,
-751082, 950262, -118112, 662499, 2240362, -3468186, 197569, -6659347, 6029061, -9280351,
-188442, 9354439, -17450988, 11879343, 4650376, -4753455, 3629247, -506806, 10331007, -1250909,
--8837432, -6215892, 3369402, 3915400, 1012539, 137976, 4303021, 1187022, 579821, 5902359,
-2324114, 1585917, 4208531, 2993592, 14799384, -4249334, 3830037, -352724, -2602213, 3743601,
-2263448, 1383516, 1750736, -2583423, -4285841, 141197, -153008, 81604, 2017024, 4430796,
--4800700, -5073430, 1988033, -1314260, -2038499, -3089155, 5936182, -4495220, 8644695, 4003447,
-240518, 1936493, 594316, 2276870, 11023034, 9258876, 565325, 404801, 1998234, -2371896,
-4032438, -1045288, 3621731, 1038308, 96637, -117038, -4914517, 4441533, 3342022, -1140314,
--2888366, 259309, 4242891, 311922, -1382443, 133681, -3475166, 2291902, 759136, 2953327,
--962610, 795643, 1139777, 1167694, 929860, 1729798, 727997, 709743, -4203699, -345745,
-1432909, 2166811, -1538135, 1369021, 1211181, 1107028, 1217086, 477278, 907849, 1220845,
-1334124, 131533, 418759, 325344, 527744, 113280, 228170, 823560, 204011, -278099,
--1053878, 461709, 1211181, -1126355, 2188286, -1037772, 4825933, 97174, 5572720, -2154463,
-4939213, -3765076, 10352482, -7946227, -2984466, -3797825, 10672994, 6044630, 3907347, 6781754,
--6163815, -1249299, 9843528, 5594732, 4603668, 4786741, 2527588, 3287798, -1162326, 9463424,
--1016834, -4361540, -3274376, 3317862, -3606699, 2169495, -8990440, 3317862, -1755031, 178778,
--9659918, 4152697, -2105608, 9037148, -1516660, 2866354, 2433099, -3796751, -992137, 4125316,
-518617, 2833605, -2085744, 5022428, 7050189, 913754, -5006858, 1918777, 4939213, 3588982,
-605590, -3374771, -7038915, 5872831, -7832410, -3266323, 4299263, -10284836, -2422362, 6419903,
--4825396, 1372242, 24696, -550830, -1444183, 2631741, -5207648, 317828, -8652212, -4409321,
--11802033, 923418, -3362960, 296890, -2346126, -324270, -3058554, 2731062, 2494302, 1082869,
--1932198, 2528662, -360777, 1017907, -3462818, 913217, 609885, 1137093, 656593, 2377801,
--385473, 2677912, -1236951, -115427, 1730335, 2521146, 291521, 1424855, -1676111, -533113,
--543313, -546535, -1234803, 834834, 1818382, 595390, 1921998, -1846299, -1257352, -1000191,
--2771865, 357556, -498753, 1336272, -477815, -446140, -2903935, 2960843, -18807124, 3463354,
--5826660, -3331284, 4493610, 3433826, 2462627, 964757, -13776644, -1342177, 4487167, -7358353,
--1810329, -10113574, -5060545, 2399813, -1066763, -9307731, 9963250, 6032819, -2851322, 1165547,
-7871065, -4887136, 2225330, -3315715, -5235565, -3580392, -9591199, -3546569, 7498476, 3548717,
-9539659, -4670777, -15213311, -6562710, 3904125, -4857071, -9866077, -1624035, -1738388, 9206799,
-4804458, -10597832, 7259032, -7486665, -325881, -5395016, -5120675, -4939750, -11667279, -6932077,
-986232, 7632694, 11559904, 7379291, 2247879, 4604205, -5115306, -8710731, -5299453, 5585605,
--2575907, 6019934, -1703491, -5524402, -175020, 551366, -2586107, -6231998, 489626, 4760971,
--15236396, -10098005, 14413910, -4610111, 389231, -7856032, 3878356, 2157684, -830539, -579821,
-5335423, 3904662, 1276142, -1606318, -1855963, -326418, -2084670, 1260036, 1636919, -2998961,
--1430224, 1148904, 437550, 28454, 993748, 3002182, -3083250, -1439351, -5717675, -2345052,
--781684, -1067836, 383326, 843961, 1741072, 134218, 2207076, -2499671, -1715303, 460098,
-601295, 858457, -2028298, -1159104, -2830384, -124554, 1053878, 7065221, -380641, 3485366,
--5144297, 3461207, -6963753, -663036, 11621108, -5742908, 10970420, 11110007, 13757854, 3296388,
-5407364, 11821897, 9239012, 6730751, -9473087, 1021665, 2785823, 7861938, -1742146, -7102266,
-8789114, 8872866, -2724083, 5845451, -3159485, -3357591, 5539971, 4711579, -833761, 5626407,
-371515, -9730785, -7756711, 8035347, 11816529, -1145683, -4275103, 2318209, 235149, -5907191,
--10815265, 5367636, -10231686, -5131412, 7599945, 1421634, 6711424, 75162, 10822781, 1301375,
-11899207, -14200236, 12565464, -2685965, -592706, 3595425, 6593849, -5604396, -11675869, -3512747,
-10506564, -2296734, -12481712, -7549479, -7682623, 1816234, 4389457, -11021960, 5364951, 6000070,
-11118060, 3207267, 3447248, -204548, 3074660, 334471, 2391223, 1449015, -8241506, -1156957,
-3823058, 2480881, 6546604, -4588099, -1396938, -327491, 475668, 2898566, 347892, 2347200,
-1001801, -1527398, -615791, 2220498, 2230162, 613107, 2438468, 426812, 1047435, 3009698,
--12348, -2036351, -965294, 444529, 1551557, -500901, -809601, 2370822, 1321239, 306553,
--2759517, -1160715, -1595044, -1643899, -166430, 2539936, 120796, 2399276, 1904281, 1509144,
--226023, 115427, 3729642, 12017855, 1519882, 5000953, 14299020, 15403900, 4580583, 3850975,
--11428371, -5792301, 12590160, -9393630, 12869333, 3606699, -67646, -2598455, -4519916, -7478612,
-1353452, 5678484, -13872744, -6309307, -5905043, 3044595, 2777770, 3006477, 423054, 2323041,
--510027, 4146254, 3394098, -3710852, -6502044, -12020540, 2114198, -6511171, 10824391, 398358,
--6003291, -7577933, -2299418, 4988605, -9403831, 5852967, -3139084, 1904281, -97174, -6742562,
-6670621, 8387535, -5763309, 7050726, 2040646, -585189, 20230370, -5124433, -13090523, 2444373,
-4951561, -3318936, 1117228, -5746666, 13748727, 7941395, -1336272, -2976949, 9774272, 9271224,
--1920387, -7982734, -5737003, 19049790, -1725503, -2671470, -7664369, -5040144, -1500554, 1814624,
--1959042, -5123896, 8265128, -2648384, 9802726, 2786360, -3032247, -1122597, 1793686, -100395,
--1622424, -1751273, 3490198, -4388920, -1012002, -1212791, 5696737, 468151, -1169842, -192737,
--2813741, -2734821, -292595, 517544, 5981279, -1443646, 3576097, 1287953, -1850594, 1158567,
-317828, -2922188, 2287607, -1484448, 3132105, -356482, -3033858, -2354179, -1692217, -2369211,
-55835, -791885, -889595, 998043, 1187559, 1591285, 716723, 5102421, -10403485, -2849711,
--3186329, 1008780, 4613332, 10517301, 9204652, -14371497, 461709, 1839320, -1340030, -4195110,
--9863392, -888521, 3498788, 6073084, 4956929, -9039296, -1472100, -11494406, 11025181, 613107,
--956167, 5374078, -5056250, -813359, -12262669, 2213519, -7271917, 5239860, -846109, -1941325,
--4067871, -8089571, -7875360, -816581, -9743133, -15947214, -2871723, -7197829, -15336791, -1127966,
--1213865, -8329552, 5652177, 8614094, -942208, 4170950, -959388, -1219771, 2412161, 2630131,
--12406013, -3567507, 6972343, -5908802, 15077483, 2826089, 4100620, -9539122, 12348, -4241280,
--9752797, -930397, 14000520, 6565395, 10662256, 5985037, -4498978, -11084774, -17411260, 11877195,
-12152073, -1315871, 6328635, -13535053, 6638946, 5713917, 9912248, 1599875, -11588359, -1381906,
--10795937, -3657702, 1004486, -3415036, 2408940, -2302103, -3518115, -817654, 1151051, -419833,
--1086090, 3332895, -904628, 1367410, -7814693, 265214, -556198, -1130113, -3495030, -1403381,
-2466922, -3210488, -3786014, -1273458, -1305670, -1477469, 69793, -824634, -4203163, -3337727,
--2055142, 1333587, 1516124, 2635499, 1275605, 2429341, 868657, -2977486, 703838, -387621,
--1833414, 1272921, -3524021, 1653026, -1878511, -204548, 2496987, -26996016, -6667937, 21667574,
-7321309, 8902930, -5499169, 8989367, 15148887, 1213328, -2411624, -24930138, -5721434, -1070521,
-14475650, 4144107, 5877663, -18654654, -4926865, -6873559, -4341138, 11761768, -6455336, -2184528,
-2150705, 3437048, -5794448, -2493229, 3143379, -5145908, 11598022, -12759274, 1527398, 8563091,
--10879689, 9131637, 15506443, 17986786, 8732742, 8847633, 11887396, -7967165, -14631343, 5983427,
-6564321, 9854802, 7915625, -16611860, -4605279, 8857833, 5217312, 3273839, 10627897, 2435247,
-12356084, -4460324, -2479270, 7063074, 6609418, 2025077, -10598369, -5672041, -11395085, -13153337,
--611496, -14394046, 927713, -8351027, 762894, -7590281, -4361540, -18514530, 12986907, 3449396,
--2598455, -3266860, -1924682, 2549600, -6707129, -902480, -16000901, -8801999, 5798743, 7376070,
-3184182, 2513093, 803696, -8426189, 4055523, 3927211, 3186329, -8051453, 2027761, 365072,
--6274411, -2129230, 1300838, 1063004, -3144453, -4799626, 1777043, -2337536, -2786360, -693637,
-884226, -563178, -180926, 1682554, -1321239, 2325725, -203474, 3300682, -1255741, 2952253,
-4763656, -3210488, 2741800, 256624, 1969243, -1967632, 3221, 2670933, 2323041, -3964792,
-2328946, 2127083, 17065516, -8222178, -7027640, -6220187, 11768210, 14925011, -9272298, 23913842,
-5065377, -10137197, 12264816, 3540127, -9884330, -11620034, -9375377, -704912, -5012227, -3414499,
--15512348, 6295885, 6528887, 21571474, 2959769, -3617973, -9667435, -10120554, 2618856, -1151588,
--13568875, 2464774, -5007932, 704912, 10547366, -8079371, 13935558, -12149389, -10218264, -641561,
--15928423, -19046032, 3131568, -2137283, -22009560, 1576790, 282931, -10437307, 5534602, -5043902,
-2808909, -14843944, -24295020, 16020228, -14856829, 24790552, 13526999, -17629230, -2246268, -17864380,
--4813048, -2219961, 7452842, -6402723, 11364483, 14360760, 13600551, -9756555, -7980586, 1321776,
--12015171, -1072131, -3911105, -15822123, 9498320, 7078643, -8445516, 12542378, -18553722, -1734093,
-1120987, -4813048, -3122441, 16173773, 11918534, 7977365, -967978, -8372502, -6817187, -6300717,
-2794950, 2644626, -512175, 1870995, -490700, -701153, 340376, -633508, 648003, 3259880,
--3835943, 1571421, -277562, 3583077, -2071785, -327491, 2038499, 4772783, 1867774, 3859565,
--4562329, -4927401, 2348810, -3268470, 784368, 19327, -5322002, -2921115, -3185255, 95563,
-1716376, 1613297, 1040993, 1282585, -765041, -14761266, -11299522, 6895033, 8423505, 9339406,
-16013249, -6328098, 29722248, -1238024, -15840376, 6482180, 14503568, 3753802, 7483981, -6880001,
--16939888, 24739012, 13613973, 9963250, 4575214, -8965744, 7779797, 20554640, -7947300, 4176856,
--488553, 4095251, 3313567, 14561013, -4554813, 4757750, -5518496, 4224101, -1686312, -1091995,
-8955007, 1667521, -18685792, -12651900, -17525614, -12121471, -9418326, -4846871, -13474923, -7776575,
--6747931, -11758010, -8218420, 4758287, -12215961, -4425964, -9538585, 21910238, 11048803, 19035296,
--17764522, -1947768, -16251083, -3686156, 17693118, 9563818, 20890184, 9772661, 12838731, -14199699,
-6038724, 5857799, 19332184, 19561966, 5716065, 17669496, -15716896, -7707856, 11298985, -40936408,
-499827, 6364605, 618475, 9772124, 6284074, 22593138, -2000918, -3484292, 24592446, 7180649,
--2428267, -11434277, -448287, -128849, 20117090, 2378875, 328565, 1320703, 3893925, 6017786,
--1352378, -1481227, 6347962, 2826625, 1921461, 3140158, 4552666, 3354906, -455267, 476741,
-440771, 6458557, -1409823, 3250753, 6348499, 4500589, 7108171, -3532611, -2630668, 1402844,
-2169495, -2800856, 9127, 3879966, 6592238, -754304, 1832340, 697932, 17507898, 11383274,
--11445014, 22373558, 13288092, -1123671, -5568425, -2806224, 13444858, 33039036, 17666274, 4751308,
-1395864, 10853382, -2635499, 26665842, 15094126, 16653199, 697395, -8496519, 5672041, 1999307,
--14161581, -3506841, -874026, -3365107, -4020090, 5397700, 2974802, -11653857, -5551782, -20580946,
--2080912, -6416681, -26422102, -11908334, 837519, 9868224, -13577465, 16990354, -4676146, -4104915,
--2276870, -4198868, 12428562, -8379481, 8703214, -27171036, 8443369, 11780558, 9181029, 18017924,
--17792976, 15418396, -15963857, -12027519, 13452374, -7911867, -2319282, 11172284, -18103288, 16041703,
-25898652, -601295, -3681861, 32876364, -7022272, 6263673, 18655728, -39695700, -20198158, 1258425,
-1289027, 5283347, 9614284, 19175956, 11677479, -15245523, -12046310, -3695283, -4235912, -20565914,
--1901597, -4184909, 5146445, -21490942, 344671, -6555731, 8798777, -3344169, 11178189, 2853469,
-205622, -6455873, -4538170, -6080600, -6192269, -4962298, 4476430, -13131326, 9439801, -1686312,
-5313949, 177704, -701690, -9016210, 5005785, -6448357, 1748052, -6845641, -3512210, -198642,
--2816962, -7839926, 718333, -2568391, 1002875, -5394479, -5611375, -6317897, 1273995, 1148367,
-7955890, 8143258, 106300, 10737, -9960566, -5936719, -31372588, -18854906, 23170812, 23038204,
-2513093, -5401458, 19544786, -31470836, -16874926, -34055332, 14954539, 4176856, 1556389, 6649146,
--15470472, 7894687, 10833518, 14186814, 24017994, 24679418, 20742008, -797253, 4723927, 309238,
--8965744, -1823751, -7479149, -3846680, 28615220, -6634651, -26226680, -6601902, -5361193, 2386928,
-41210212, -14846628, -14714021, 13967771, -22250078, 7744900, -24693914, 32352378, 9176198, -871342,
-8334921, -12437152, -15735686, 22174380, -26884884, -21482890, -19307488, 5395016, 8135205, 10103911,
--17909476, 18447958, -5644661, 1414118, 28427852, -1913408, -4779762, 8381092, 22952306, -14803142,
-38034084, 1433982, -43725988, -5301601, -1635846, -14593225, -4168266, 15032, -4046933, -11915313,
--9993852, 21559126, 14482630, -5280663, 14016626, -25121800, 7108171, 11290932, 7064148, 835908,
-13503377, -2195265, -542240, 5057861, 13204340, -5424007, -5680094, -4463008, 662499, 4991826,
--2474438, -10349797, -11089606, 569620, -5172215, 3891777, -70867, 2753074, 5984500, -7232725,
--4727149, 12559558, -2826089, 2289755, -893353, 353798, -4204773, -4746476, -2336462, -1578401,
--6582575, 3244311, 6177237, 3434363, -30065, 589484, 2838974, -5094368, 1266479, 5856725,
--488553, 5027259, -2736431, -9073655, -12213276, 314069, 5277441, -9043591, -4212289, 41611792,
-24591908, -33838972, -27376658, 33463700, 31887448, 19898046, 22870164, -40256728, -8965744, -11210402,
-10414759, 3738232, -16353088, -29773788, -45028976, 12970264, 11674258, 3325915, 12173011, -6280853,
--2419677, -10799695, 8740258, 15377594, 13770202, 3491809, 18350248, 5790690, -2267743, -7699803,
--27441620, -1615445, -11645267, -9657771, 9313637, -29404956, 2448668, 1033477, -13825500, 11803107,
-10778220, 5268315, -19862614, -18459770, -48438104, -12428025, 165356, -15604690, 2546379, 10052908,
-9975062, 26846766, 13063143, -12064563, -8541616, -18073222, 22515830, -9681930, 39105140, 32694364,
-8913668, -21115670, 43190728, 19822884, -17762910, 2557653, 21604222, 50334868, -21047488, -38707856,
--20096688, 399432, -14108968, 5960878, 13721347, 11493869, -10324565, -15902116, -8919036, -13254806,
--14621679, 3880503, 15479062, 12407087, 6843494, 6123013, 2080375, 10420128, 1224603, 1578937,
-15122580, 11906186, -911070, -5147519, 3255048, -8097624, 8317204, -3150896, 8516920, -4580046,
-3280281, 2176475, 5554467, 7330436, 4162360, 3357054, -7454990, -14355391, 1471026, -7334731,
--3887482, 4205310, 1066763, -2201171, -2989834, 10210748, 3170223, 13849122, -4694936, 7373385,
--7218230, 7154342, -9867687, 9516037, 128849, -8303783, 16362215, 5645735, -6147172, -16498580,
-13246753, -27743878, -25694104, -9438728, 19360638, -11578695, -14742475, -435402, 22354232, 2105071,
-23110146, -8121783, 27962384, 2981244, 14840723, -10188199, -6930467, 8671002, -29458644, -8397735,
-10700911, -5457293, -4215511, -23720030, -22455162, 10046465, -13808320, -9949292, 17897666, 24694988,
--3946001, 16165720, -29767344, 1575179, -8281234, 38078644, -16065862, 12538620, 23205172, 22134114,
-6278169, -15787226, 9683541, 6937446, 6546604, 12179990, -37963216, 69450696, 22033182, -6286759,
-3446175, 7646653, 19123342, -5529234, 14675366, 40447856, -2518462, -50347756, 20783346, 17328582,
--18025440, 23449984, -5388574, -10650982, -27106076, 51892868, -26978838, 57794692, -38331508, 14203457,
--918586, 62804768, 27736362, -27005144, 25626996, 1016834, -16889422, 12538083, 1787780, 5586679,
-13909252, 5889474, -16340203, -4305168, 19026706, 5048734, 10699837, -8928700, 11844446, -20391968,
-7390028, -1234266, -6710350, 12539157, -7164006, -4035122, 8942122, -1632625, 1213328, -1685775,
-15137612, -10087804, 14770393, -8886287, 13655312, 19216220, 7034620, 5153961, 10537165, -2854543,
--7721278, -7463043, 9077950, 3118683, -1654636, -201863, -2523293, -13932874, -10774999, -2219961,
-319975, -3225521, -8215199, 47862580, 5806796, 26023206, 13331042, -26200912, 1743757, 15671799,
--4588099, -22813792, -4276714, -49846852, -13864691, -18528488, -10653666, 10961830, -1348083, 17928804,
--8643622, 1994476, 17521320, -15455977, 1795296, 9978283, -859530, -16969416, 91268, -11644193,
-34564288, -5993627, 20084340, 3276523, -213138, 35358856, 25565792, -15511274, -18130130, 8992051,
-16112570, 19419158, 23662048, -403190, 8429947, 22351010, -1086090, -8954470, 7117298, 804770,
--19656454, -430034, 13165149, -19449760, -26097832, -2465311, -1456531, -2797634, -8671002, -9461813,
--31117038, -4295, 30814242, 9463960, 17202418, 10098542, -3983582, -40372692, -29484414, 7975218,
-26275000, 8548596, 13348221, 53069688, 55234352, 46629924, -3563212, 23182622, -14635638, -39127152,
--65112240, 11361799, 8188355, -2894808, 9208410, -20623896, 4573067, -5012227, 24068460, -1781338,
-19358492, -23625542, 11797201, -29016800, -5476620, 12276627, 2238752, -14766098, 3625489, -12159589,
--13018583, -5604396, 3651796, 11110007, 14496588, 18853832, -4369056, -1004486, 5046050, -5151814,
-6238977, -19510426, -16470663, -11573326, -15395847, -15022722, -15720654, 10365367, 7740605, -2641405,
--10230612, -15908559, 9905268, 183610, 15527917, -3724811, 13798656, 10008348, 870268, 4323959,
-16514149, -19417548, -17979806, 11209328, -1350230, -3846680, -8477729, -15013595, -31344672, 8661338,
--18883898, 8934069, -8324184, -22174380, -7012071, -317291, 10695542, -9466645, 5345087, -32454920,
-30012158, -67833104, -6964827, -17070884, -14056891, 8912057, 38540352, 6072010, 13865765, -33478196,
-7285339, 12144020, 26436060, -13992467, -21729850, -15095736, -7489886, -1153199, -753230, 15968152,
-11543261, -9622874, -49052820, -23337778, -39921184, 4491999, 69927976, -49710488, -19812148, -7740068,
-40345848, -13660143, 16965120, -13057237, 19364396, -7837779, -11988327, -25268904, 12826920, -29266980,
-26834956, 48631376, 6113886, -9084393, -9259413, 40321688, 10579041, -459025, 21223044, 6919729,
-7582228, -7873212, 46588048, -73550776, 53046068, -44850732, 21104396, 52428664, -42284488, 85072024,
-57886496, -21922586, -7431904, 58480276, 21240224, -5647882, 38427608, 34481608, -45117020, 60339996,
--36705328, 10664941, 11431592, -16288127, 11508902, 19660212, -12360916, -22203370, 7031399, -12006581,
-4977330, 4984847, -6227703, -17426830, 6761353, 6104223, -7243999, 7202660, 5719823, -14043469,
-34078956, 3628711, 563178, 625992, -7082938, 5133560, 4463545, 1707250, -11301133, 5691369,
-1422708, -4985920, -9928354, 21020644, -8149164, 17073568, 19471234, -2110440, -7416872, 5057861,
-4677757, 7484518, 23499376, 20217484, -18413598, 8354249, -7568806, -1220308, 26863410, -5374078,
-7395934, 10456635, -1822140, 49576272, 47245712, -40379672, 39336532, 36202816, -34082712, -51423644,
--75990320, 17662516, 113978768, 46814068, 150324, 23501524, -109073376, -45059040, -3927748, 16583942,
-81948512, 80216032, 13782550, -30966714, -60473676, -35437776, 4018479, 25885232, 39133056, 63073744,
-38016368, -50876572, -120268744, -97982160, -9711458, 108990704, 118508888, 74907984, 22803592, -25206626,
--48505752, -73189464, -41815264, -44527000, 87150792, 72575280, 45768244, 40587976, -61814244, -86485072,
--100442104, -89874872, 34507916, 121685552, 149747792, 50645180, -45512696, -106705776, -128080216, -34835404,
-20484310, 13207561, 79959408, 31400506, -30369176, -17949742, -61758408, -13471165, -70592080, 30496416,
-83406120, 156241776, -9626095, -83560200, -181633088, -7111392, -61508228, -6534793, 86851752, 17223356,
--8134668, -38827580, -81912544, -53602804, 39107824, 63381368, 20696374, -11084774, -28018220, -33360084,
-32327146, 37343668, 22903450, 19995220, 8762270, 18644990, -1986959, 1766842, -18341658, -8407398,
-1874753, 47131896, 41020696, -2130841, -17879412, -4583267, -42286636, -28260348, -1284732, 16073378,
-43290048, 33538862, 23566486, 2179159, -58849104, -52795348, -35974648, 13852880, 56315076, 109620448,
-66880156, -50539416, -91258392, -80380848, -32638530, 2295660, 74815648, 94476936, 70224864, 12411382,
--56346748, -127380680, -80533856, 25942140, 78785272, 90319944, 26107496, -13225815, -35366908, -41518912,
--24072754, -7653632, 8575439, 19859928, 24829742, 19891604, 4555887, -1738388, -17478906, 871878,
--10297184, 51507932, 30177514, -4413616, 11043972, 5681705, -36484672, -3705483, -2859375, 4110821,
-1257889, 3047279, -13268765, -5235029, -4822175, -3251290, -5973226, 22024592, -7754027, 9530532,
--16372952, -1541356, 6923488, -660351, -4894115, 37953552, 5352603, -21298742, -24774446, 5354751,
-5348845, -14506789, 4174708, 19125490, 9986336, 18008798, -18191334, 5663988, -532039, 4420595,
--12771085, 2574833, 14413910, 20368882, 5240934, -5148592, 6051609, 2412161, -4600984, 13927505,
--20278688, 4728222, -33102924, -10278394, 13832479, -11151346, -13238700, 18183280, -11409581, -30884036,
--23891830, 21380884, -2544768, -4093104, 4993437, 10893111, 27042724, -17440788, -22771916, 1095217,
--3037079, 18361522, 237834, 10786810, 4982162, -1682017, 28082644, -36326832, -5242545, -5023501,
--21310554, 5607080, 12079059, 656056, -12657805, 5787469, -2785823, 3767760, -10934987, 8227010,
--484258, 1453310, -892279, -2564096, 14275398, -14126147, 1189169, -2296197, -5052492, -4417911,
-1733556, -6028524, 6583111, 8505109, -8617852, -2049773, -3256122, 7811472, 8545374, -4113505,
-10515691, 1190243, -1445257, -6877854, 7595113, 2778844, -2931852, -11474005, 5551245, -10389526,
-6856916, -5526013, -5083631, 9842454, 9669045, -12957379, 1610613, -2879239, -12864501, 4384088,
--7513509, 8663486, -7409893, -29948270, -33041184, -78792784, 22955526, 22704270, -1470489, -66405028,
--42877196, -6198712, -10778220, 44588740, 30128658, 14552423, -29318520, -12032888, -7669738, 27964532,
-3194382, -7810398, -17151416, 11538430, 5207111, 13970992, -622770, -5538361, -6939057, -15808701,
--7815767, -9521406, 26732950, 14331769, 3269007, 4101694, -17376364, -826244, 2266669, 24391656,
--1617055, 11426760, -8885750, -6180458, 5086315, -9901510, 6752226, 3010235, 7252589, 23788750,
--1933809, 20886962, -134755, 13448079, -10184978, 975494, -15042586, -19559818, -20539070, -17606144,
-5973763, 3163780, 1665911, -25976500, 13023951, -22599044, -2416993, 1269163, -14068165, -15307263,
--7983808, 365609, -26951456, -18251464, 16982838, -8100845, 15822123, 2571612, -4198868, -14575508,
--16769163, -1023813, 24155970, 29824252, -7262790, -2976412, -11040750, -14843407, -10144176, 9552007,
-5191542, 3714073, 9458592, -1778653, -6017249, 6508486, 3705483, 5424544, 8294656, -4510253,
-2896419, -850940, 339839, -6155225, 10910828, 3456375, 2605435, -3183645, 1709934, -188979,
-16924318, 2179159, 5182415, -9370545, 785979, -6056978, 11129334, 790274, 322659, -3835943,
-2703145, -1238024, 294742, 5276368, 654446, 6905234, -4527970, 2251100, 881005, -8817568,
--322659, 5054103, 2094870, -1815161, 3047816, 17723720, -38173668, -94637456, -90706488, -13784161,
-27418534, 91231544, 78849696, 74319040, 79846664, 44433048, 10749766, -40340480, -40510668, -84208736,
--65376380, -57342644, -36359044, -45762340, 62986232, 51788716, 68209448, 39307004, 55752432, -2051384,
-14689325, -8987219, -21741124, -12471511, -25994216, -30281666, -30121680, -29758218, -35175244, -25796110,
--20907900, -2409477, 5558762, 49413060, 41520524, 21835076, 23523536, 32582158, 30298310, 14542222,
-70420280, 9116605, 946503, 13167296, -26269094, -80809808, -23079006, -64787436, -69409352, -73409048,
--51866560, -46264312, 2342905, 38280508, 39135204, 47711180, 86914032, 62480500, 76279160, 74880608,
-47847008, 51355996, 17595408, -18140332, -58650464, -77061912, -87944824, -57293788, -78923248, -66415764,
--75776112, -44302052, -5233418, 20716238, 61411052, 58494772, 59500868, 98931888, 69027640, 81767584,
-51027968, 8414378, -9553081, -24856050, -40918152, -45957224, -48565344, -47449188, -54562728, -46885472,
--34193844, -21117280, -10838350, -8318278, 23771570, 22441740, 31803160, 51208360, 57856432, 36569500,
-44219908, 27145268, -1612223, -12094091, -26584236, -33415920, -28511066, -24772834, -29803852, -11020349,
--7330973, 563714, 8502425, 9269076, 2427194, 1168768, 8331163, -1321239, -7137699, 6499896,
-3978214, 4599910, 7376070, 2050847, 2012192, 4327717, 10233833, 8596377, 4054986, 726386,
--2181844, -8805220, -6536940, -8018704, -6817724, -2864206, -5253819, -4750234, -2521683, -2150168,
--2786360, -880468, 3349001, 3157338, 4093104, 6346888, 4387846, 3020436, 4216584, 1497870,
-1838783, 1742146, 1230508, 1025960, 469225, -1191317, -2535105, -4860293, -3694209, -3993783,
--3145527, -1690070, -645856, -1548336, -908922, -1285806, 239981, 1104344, 1921461, 3629784,
-3621194, 1396401, 1500017, 648003, -507343, 899259, 720481, 197032, 1230508, 347355,
--456340, -1083406, -893890, -1092532, -867583, -961536, -305480, -587337, -673773, -2194728,
--2478196, -2471217, -1744831, -421444, 755914, 2049236, 2652679, 2731062, 2934000, 2322504,
-2564096, 1744831, 843961, 139050, -344671, -1328756, -2025614, -2451353, -2190970, -2312303,
--1879585, -1832877, -1534377, -729071, 135291, 536334, 1236951, 1797981, 2083596, 2003065,
-1743757, 1179505, 708670, 124017, -86436, -444529, -532576, -588411, -524523, -495532,
--375810, -284542, -155693, -93952, -46171, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+7208566, 353261, 3310883, 3283503, 9331353, 4386772, -3447248, -4356708, -6072010, 4347044,
+-5311801, -3867618, 869194, 1332514, 577136, 5469641, -1786170, 5111548, -1307818, 4587562,
+-4346507, 2007897, -1918240, -4655208, -323733, -8873939, 1334661, 2167348, 3969624, -3246995,
+-47245, 3449933, -2540473, 3876208, 3664681, -2207076, 2633889, -2954401, -1363115, -2188286,
+-3172907, -4052302, 3625489, 5332202, -3991635, 2359011, 4305705, 3464428, 5269925, 647466,
+-781147, 3049427, 2334852, -5576478, -202400, 628676, 364535, 1750736, 3616363, 792958,
+1318555, -1946694, -1210644, 2535105, 3594351, 1980517, -1886028, -3339874, 3706557, -3017215,
+-961536, 2049236, -609885, -154082, 1588064, 353261, 114354, 3328600, -3263102, 2473901,
+1372779, 1614908, 3107946, -1266479, -343061, -1067836, -417686, 104690, 1530619, -1225676,
+-202400, -854699, -461709, 26307, -100395, -508954, -324807, 315143, 467078, -35433,
+-177167, -361851, 68719, -134218, 72478, -508417, -86973, 453119, -1046361, -518617,
+3697430, -1941862, 2712809, 270046, -215822, -7494718, 1218160, 6404870, -3911642, 2652142,
+-7956964, -8054675, -2643552, -6548215, -5709622, -852551, 1197759, 4515085, 732829, -2161979,
+1036161, 3075197, -3948149, 5501853, -3705483, -4017405, 4671314, -2308545, 5379447, 6822019,
+962073, -4908611, 3457986, 2254858, 1397475, -2494839, -1794223, 2868501, 2409477, 492311,
+-5536213, -1597728, -5112085, 4641249, -4611721, -3016141, 3433826, 166430, 2983392, 852551,
+1158567, 5049271, 875636, 5662378, -7272454, -3741454, -1663763, 3619047, 5135171, 5845988,
+7973607, 866510, -2241436, -757525, -1043140, -240518, -5143224, -2260227, -2223719, -627065,
+822486, -4189741, -2456721, -944893, -1759326, -3275986, 3963181, -3938485, -1317481, 2623151,
+-6722698, 2040110, 3706020, 4081293, 2174864, 1182727, 2473364, -1199370, -2590402, -661425,
+732829, -282931, 733366, 127238, -699543, 49929, -1020592, -1235877, 1531693, 673773,
+-110059, -13959, 17717, 1137630, 559956, -448824, -436476, -469225, 115427, 839129,
+-970663, -173409, -25233, -190589, 587874, -32749, -374199, 8527658, -6336688, -2383170,
+-1255204, 5239860, 4730370, -4791036, -442382, -8886287, -1945083, 10754061, 4049617, -4339528,
+7722888, 2512019, 2967823, 779000, -2595771, -8482024, 1134408, -3825742, -2418067, -1558536,
+-5166309, -1837709, -3999688, 2778844, -1811939, -2349347, 4831838, -9128953, 8387535, -2967823,
+1190780, -2866354, 2616709, -351114, -840203, -236760, 3569118, 165356, 2255932, -3270618,
+6283001, -4899484, 7316477, 1546725, -726386, -4109747, -4809290, 9935333, 1713155, -9337796,
+9534827, 8975945, -4883378, -1801739, 2820720, -3694209, -688269, -2281702, 2254858, 5720360,
+-3490198, 1297617, -2614561, -2401424, 937377, 7704635, -7080254, 4280472, -7297687, -5623723,
+-5271536, -944356, 141197, -18790, 4411469, 6818261, 1779727, 1642825, 3333432, 2690797,
+1490891, 1680943, 1996623, -756451, 2150168, -1001801, -2121714, 3620658, -188442, 484258,
+-666257, -1096827, -638876, 6979, 1531693, -406411, 338766, 136902, -1374926, -4832,
+751082, 950262, -118112, 662499, 2240362, -3468186, 197569, -6659347, 6029061, -9280351,
+188442, 9354439, -17450988, 11879343, 4650376, -4753455, 3629247, -506806, 10331007, -1250909,
+-8837432, -6215892, 3369402, 3915400, 1012539, 137976, 4303021, 1187022, 579821, 5902359,
+2324114, 1585917, 4208531, 2993592, 14799384, -4249334, 3830037, -352724, -2602213, 3743601,
+2263448, 1383516, 1750736, -2583423, -4285841, 141197, -153008, 81604, 2017024, 4430796,
+-4800700, -5073430, 1988033, -1314260, -2038499, -3089155, 5936182, -4495220, 8644695, 4003447,
+240518, 1936493, 594316, 2276870, 11023034, 9258876, 565325, 404801, 1998234, -2371896,
+4032438, -1045288, 3621731, 1038308, 96637, -117038, -4914517, 4441533, 3342022, -1140314,
+-2888366, 259309, 4242891, 311922, -1382443, 133681, -3475166, 2291902, 759136, 2953327,
+-962610, 795643, 1139777, 1167694, 929860, 1729798, 727997, 709743, -4203699, -345745,
+1432909, 2166811, -1538135, 1369021, 1211181, 1107028, 1217086, 477278, 907849, 1220845,
+1334124, 131533, 418759, 325344, 527744, 113280, 228170, 823560, 204011, -278099,
+-1053878, 461709, 1211181, -1126355, 2188286, -1037772, 4825933, 97174, 5572720, -2154463,
+4939213, -3765076, 10352482, -7946227, -2984466, -3797825, 10672994, 6044630, 3907347, 6781754,
+-6163815, -1249299, 9843528, 5594732, 4603668, 4786741, 2527588, 3287798, -1162326, 9463424,
+-1016834, -4361540, -3274376, 3317862, -3606699, 2169495, -8990440, 3317862, -1755031, 178778,
+-9659918, 4152697, -2105608, 9037148, -1516660, 2866354, 2433099, -3796751, -992137, 4125316,
+518617, 2833605, -2085744, 5022428, 7050189, 913754, -5006858, 1918777, 4939213, 3588982,
+605590, -3374771, -7038915, 5872831, -7832410, -3266323, 4299263, -10284836, -2422362, 6419903,
+-4825396, 1372242, 24696, -550830, -1444183, 2631741, -5207648, 317828, -8652212, -4409321,
+-11802033, 923418, -3362960, 296890, -2346126, -324270, -3058554, 2731062, 2494302, 1082869,
+-1932198, 2528662, -360777, 1017907, -3462818, 913217, 609885, 1137093, 656593, 2377801,
+-385473, 2677912, -1236951, -115427, 1730335, 2521146, 291521, 1424855, -1676111, -533113,
+-543313, -546535, -1234803, 834834, 1818382, 595390, 1921998, -1846299, -1257352, -1000191,
+-2771865, 357556, -498753, 1336272, -477815, -446140, -2903935, 2960843, -18807124, 3463354,
+-5826660, -3331284, 4493610, 3433826, 2462627, 964757, -13776644, -1342177, 4487167, -7358353,
+-1810329, -10113574, -5060545, 2399813, -1066763, -9307731, 9963250, 6032819, -2851322, 1165547,
+7871065, -4887136, 2225330, -3315715, -5235565, -3580392, -9591199, -3546569, 7498476, 3548717,
+9539659, -4670777, -15213311, -6562710, 3904125, -4857071, -9866077, -1624035, -1738388, 9206799,
+4804458, -10597832, 7259032, -7486665, -325881, -5395016, -5120675, -4939750, -11667279, -6932077,
+986232, 7632694, 11559904, 7379291, 2247879, 4604205, -5115306, -8710731, -5299453, 5585605,
+-2575907, 6019934, -1703491, -5524402, -175020, 551366, -2586107, -6231998, 489626, 4760971,
+-15236396, -10098005, 14413910, -4610111, 389231, -7856032, 3878356, 2157684, -830539, -579821,
+5335423, 3904662, 1276142, -1606318, -1855963, -326418, -2084670, 1260036, 1636919, -2998961,
+-1430224, 1148904, 437550, 28454, 993748, 3002182, -3083250, -1439351, -5717675, -2345052,
+-781684, -1067836, 383326, 843961, 1741072, 134218, 2207076, -2499671, -1715303, 460098,
+601295, 858457, -2028298, -1159104, -2830384, -124554, 1053878, 7065221, -380641, 3485366,
+-5144297, 3461207, -6963753, -663036, 11621108, -5742908, 10970420, 11110007, 13757854, 3296388,
+5407364, 11821897, 9239012, 6730751, -9473087, 1021665, 2785823, 7861938, -1742146, -7102266,
+8789114, 8872866, -2724083, 5845451, -3159485, -3357591, 5539971, 4711579, -833761, 5626407,
+371515, -9730785, -7756711, 8035347, 11816529, -1145683, -4275103, 2318209, 235149, -5907191,
+-10815265, 5367636, -10231686, -5131412, 7599945, 1421634, 6711424, 75162, 10822781, 1301375,
+11899207, -14200236, 12565464, -2685965, -592706, 3595425, 6593849, -5604396, -11675869, -3512747,
+10506564, -2296734, -12481712, -7549479, -7682623, 1816234, 4389457, -11021960, 5364951, 6000070,
+11118060, 3207267, 3447248, -204548, 3074660, 334471, 2391223, 1449015, -8241506, -1156957,
+3823058, 2480881, 6546604, -4588099, -1396938, -327491, 475668, 2898566, 347892, 2347200,
+1001801, -1527398, -615791, 2220498, 2230162, 613107, 2438468, 426812, 1047435, 3009698,
+-12348, -2036351, -965294, 444529, 1551557, -500901, -809601, 2370822, 1321239, 306553,
+-2759517, -1160715, -1595044, -1643899, -166430, 2539936, 120796, 2399276, 1904281, 1509144,
+-226023, 115427, 3729642, 12017855, 1519882, 5000953, 14299020, 15403900, 4580583, 3850975,
+-11428371, -5792301, 12590160, -9393630, 12869333, 3606699, -67646, -2598455, -4519916, -7478612,
+1353452, 5678484, -13872744, -6309307, -5905043, 3044595, 2777770, 3006477, 423054, 2323041,
+-510027, 4146254, 3394098, -3710852, -6502044, -12020540, 2114198, -6511171, 10824391, 398358,
+-6003291, -7577933, -2299418, 4988605, -9403831, 5852967, -3139084, 1904281, -97174, -6742562,
+6670621, 8387535, -5763309, 7050726, 2040646, -585189, 20230370, -5124433, -13090523, 2444373,
+4951561, -3318936, 1117228, -5746666, 13748727, 7941395, -1336272, -2976949, 9774272, 9271224,
+-1920387, -7982734, -5737003, 19049790, -1725503, -2671470, -7664369, -5040144, -1500554, 1814624,
+-1959042, -5123896, 8265128, -2648384, 9802726, 2786360, -3032247, -1122597, 1793686, -100395,
+-1622424, -1751273, 3490198, -4388920, -1012002, -1212791, 5696737, 468151, -1169842, -192737,
+-2813741, -2734821, -292595, 517544, 5981279, -1443646, 3576097, 1287953, -1850594, 1158567,
+317828, -2922188, 2287607, -1484448, 3132105, -356482, -3033858, -2354179, -1692217, -2369211,
+55835, -791885, -889595, 998043, 1187559, 1591285, 716723, 5102421, -10403485, -2849711,
+-3186329, 1008780, 4613332, 10517301, 9204652, -14371497, 461709, 1839320, -1340030, -4195110,
+-9863392, -888521, 3498788, 6073084, 4956929, -9039296, -1472100, -11494406, 11025181, 613107,
+-956167, 5374078, -5056250, -813359, -12262669, 2213519, -7271917, 5239860, -846109, -1941325,
+-4067871, -8089571, -7875360, -816581, -9743133, -15947214, -2871723, -7197829, -15336791, -1127966,
+-1213865, -8329552, 5652177, 8614094, -942208, 4170950, -959388, -1219771, 2412161, 2630131,
+-12406013, -3567507, 6972343, -5908802, 15077483, 2826089, 4100620, -9539122, 12348, -4241280,
+-9752797, -930397, 14000520, 6565395, 10662256, 5985037, -4498978, -11084774, -17411260, 11877195,
+12152073, -1315871, 6328635, -13535053, 6638946, 5713917, 9912248, 1599875, -11588359, -1381906,
+-10795937, -3657702, 1004486, -3415036, 2408940, -2302103, -3518115, -817654, 1151051, -419833,
+-1086090, 3332895, -904628, 1367410, -7814693, 265214, -556198, -1130113, -3495030, -1403381,
+2466922, -3210488, -3786014, -1273458, -1305670, -1477469, 69793, -824634, -4203163, -3337727,
+-2055142, 1333587, 1516124, 2635499, 1275605, 2429341, 868657, -2977486, 703838, -387621,
+-1833414, 1272921, -3524021, 1653026, -1878511, -204548, 2496987, -26996016, -6667937, 21667574,
+7321309, 8902930, -5499169, 8989367, 15148887, 1213328, -2411624, -24930138, -5721434, -1070521,
+14475650, 4144107, 5877663, -18654654, -4926865, -6873559, -4341138, 11761768, -6455336, -2184528,
+2150705, 3437048, -5794448, -2493229, 3143379, -5145908, 11598022, -12759274, 1527398, 8563091,
+-10879689, 9131637, 15506443, 17986786, 8732742, 8847633, 11887396, -7967165, -14631343, 5983427,
+6564321, 9854802, 7915625, -16611860, -4605279, 8857833, 5217312, 3273839, 10627897, 2435247,
+12356084, -4460324, -2479270, 7063074, 6609418, 2025077, -10598369, -5672041, -11395085, -13153337,
+-611496, -14394046, 927713, -8351027, 762894, -7590281, -4361540, -18514530, 12986907, 3449396,
+-2598455, -3266860, -1924682, 2549600, -6707129, -902480, -16000901, -8801999, 5798743, 7376070,
+3184182, 2513093, 803696, -8426189, 4055523, 3927211, 3186329, -8051453, 2027761, 365072,
+-6274411, -2129230, 1300838, 1063004, -3144453, -4799626, 1777043, -2337536, -2786360, -693637,
+884226, -563178, -180926, 1682554, -1321239, 2325725, -203474, 3300682, -1255741, 2952253,
+4763656, -3210488, 2741800, 256624, 1969243, -1967632, 3221, 2670933, 2323041, -3964792,
+2328946, 2127083, 17065516, -8222178, -7027640, -6220187, 11768210, 14925011, -9272298, 23913842,
+5065377, -10137197, 12264816, 3540127, -9884330, -11620034, -9375377, -704912, -5012227, -3414499,
+-15512348, 6295885, 6528887, 21571474, 2959769, -3617973, -9667435, -10120554, 2618856, -1151588,
+-13568875, 2464774, -5007932, 704912, 10547366, -8079371, 13935558, -12149389, -10218264, -641561,
+-15928423, -19046032, 3131568, -2137283, -22009560, 1576790, 282931, -10437307, 5534602, -5043902,
+2808909, -14843944, -24295020, 16020228, -14856829, 24790552, 13526999, -17629230, -2246268, -17864380,
+-4813048, -2219961, 7452842, -6402723, 11364483, 14360760, 13600551, -9756555, -7980586, 1321776,
+-12015171, -1072131, -3911105, -15822123, 9498320, 7078643, -8445516, 12542378, -18553722, -1734093,
+1120987, -4813048, -3122441, 16173773, 11918534, 7977365, -967978, -8372502, -6817187, -6300717,
+2794950, 2644626, -512175, 1870995, -490700, -701153, 340376, -633508, 648003, 3259880,
+-3835943, 1571421, -277562, 3583077, -2071785, -327491, 2038499, 4772783, 1867774, 3859565,
+-4562329, -4927401, 2348810, -3268470, 784368, 19327, -5322002, -2921115, -3185255, 95563,
+1716376, 1613297, 1040993, 1282585, -765041, -14761266, -11299522, 6895033, 8423505, 9339406,
+16013249, -6328098, 29722248, -1238024, -15840376, 6482180, 14503568, 3753802, 7483981, -6880001,
+-16939888, 24739012, 13613973, 9963250, 4575214, -8965744, 7779797, 20554640, -7947300, 4176856,
+-488553, 4095251, 3313567, 14561013, -4554813, 4757750, -5518496, 4224101, -1686312, -1091995,
+8955007, 1667521, -18685792, -12651900, -17525614, -12121471, -9418326, -4846871, -13474923, -7776575,
+-6747931, -11758010, -8218420, 4758287, -12215961, -4425964, -9538585, 21910238, 11048803, 19035296,
+-17764522, -1947768, -16251083, -3686156, 17693118, 9563818, 20890184, 9772661, 12838731, -14199699,
+6038724, 5857799, 19332184, 19561966, 5716065, 17669496, -15716896, -7707856, 11298985, -40936408,
+499827, 6364605, 618475, 9772124, 6284074, 22593138, -2000918, -3484292, 24592446, 7180649,
+-2428267, -11434277, -448287, -128849, 20117090, 2378875, 328565, 1320703, 3893925, 6017786,
+-1352378, -1481227, 6347962, 2826625, 1921461, 3140158, 4552666, 3354906, -455267, 476741,
+440771, 6458557, -1409823, 3250753, 6348499, 4500589, 7108171, -3532611, -2630668, 1402844,
+2169495, -2800856, 9127, 3879966, 6592238, -754304, 1832340, 697932, 17507898, 11383274,
+-11445014, 22373558, 13288092, -1123671, -5568425, -2806224, 13444858, 33039036, 17666274, 4751308,
+1395864, 10853382, -2635499, 26665842, 15094126, 16653199, 697395, -8496519, 5672041, 1999307,
+-14161581, -3506841, -874026, -3365107, -4020090, 5397700, 2974802, -11653857, -5551782, -20580946,
+-2080912, -6416681, -26422102, -11908334, 837519, 9868224, -13577465, 16990354, -4676146, -4104915,
+-2276870, -4198868, 12428562, -8379481, 8703214, -27171036, 8443369, 11780558, 9181029, 18017924,
+-17792976, 15418396, -15963857, -12027519, 13452374, -7911867, -2319282, 11172284, -18103288, 16041703,
+25898652, -601295, -3681861, 32876364, -7022272, 6263673, 18655728, -39695700, -20198158, 1258425,
+1289027, 5283347, 9614284, 19175956, 11677479, -15245523, -12046310, -3695283, -4235912, -20565914,
+-1901597, -4184909, 5146445, -21490942, 344671, -6555731, 8798777, -3344169, 11178189, 2853469,
+205622, -6455873, -4538170, -6080600, -6192269, -4962298, 4476430, -13131326, 9439801, -1686312,
+5313949, 177704, -701690, -9016210, 5005785, -6448357, 1748052, -6845641, -3512210, -198642,
+-2816962, -7839926, 718333, -2568391, 1002875, -5394479, -5611375, -6317897, 1273995, 1148367,
+7955890, 8143258, 106300, 10737, -9960566, -5936719, -31372588, -18854906, 23170812, 23038204,
+2513093, -5401458, 19544786, -31470836, -16874926, -34055332, 14954539, 4176856, 1556389, 6649146,
+-15470472, 7894687, 10833518, 14186814, 24017994, 24679418, 20742008, -797253, 4723927, 309238,
+-8965744, -1823751, -7479149, -3846680, 28615220, -6634651, -26226680, -6601902, -5361193, 2386928,
+41210212, -14846628, -14714021, 13967771, -22250078, 7744900, -24693914, 32352378, 9176198, -871342,
+8334921, -12437152, -15735686, 22174380, -26884884, -21482890, -19307488, 5395016, 8135205, 10103911,
+-17909476, 18447958, -5644661, 1414118, 28427852, -1913408, -4779762, 8381092, 22952306, -14803142,
+38034084, 1433982, -43725988, -5301601, -1635846, -14593225, -4168266, 15032, -4046933, -11915313,
+-9993852, 21559126, 14482630, -5280663, 14016626, -25121800, 7108171, 11290932, 7064148, 835908,
+13503377, -2195265, -542240, 5057861, 13204340, -5424007, -5680094, -4463008, 662499, 4991826,
+-2474438, -10349797, -11089606, 569620, -5172215, 3891777, -70867, 2753074, 5984500, -7232725,
+-4727149, 12559558, -2826089, 2289755, -893353, 353798, -4204773, -4746476, -2336462, -1578401,
+-6582575, 3244311, 6177237, 3434363, -30065, 589484, 2838974, -5094368, 1266479, 5856725,
+-488553, 5027259, -2736431, -9073655, -12213276, 314069, 5277441, -9043591, -4212289, 41611792,
+24591908, -33838972, -27376658, 33463700, 31887448, 19898046, 22870164, -40256728, -8965744, -11210402,
+10414759, 3738232, -16353088, -29773788, -45028976, 12970264, 11674258, 3325915, 12173011, -6280853,
+-2419677, -10799695, 8740258, 15377594, 13770202, 3491809, 18350248, 5790690, -2267743, -7699803,
+-27441620, -1615445, -11645267, -9657771, 9313637, -29404956, 2448668, 1033477, -13825500, 11803107,
+10778220, 5268315, -19862614, -18459770, -48438104, -12428025, 165356, -15604690, 2546379, 10052908,
+9975062, 26846766, 13063143, -12064563, -8541616, -18073222, 22515830, -9681930, 39105140, 32694364,
+8913668, -21115670, 43190728, 19822884, -17762910, 2557653, 21604222, 50334868, -21047488, -38707856,
+-20096688, 399432, -14108968, 5960878, 13721347, 11493869, -10324565, -15902116, -8919036, -13254806,
+-14621679, 3880503, 15479062, 12407087, 6843494, 6123013, 2080375, 10420128, 1224603, 1578937,
+15122580, 11906186, -911070, -5147519, 3255048, -8097624, 8317204, -3150896, 8516920, -4580046,
+3280281, 2176475, 5554467, 7330436, 4162360, 3357054, -7454990, -14355391, 1471026, -7334731,
+-3887482, 4205310, 1066763, -2201171, -2989834, 10210748, 3170223, 13849122, -4694936, 7373385,
+-7218230, 7154342, -9867687, 9516037, 128849, -8303783, 16362215, 5645735, -6147172, -16498580,
+13246753, -27743878, -25694104, -9438728, 19360638, -11578695, -14742475, -435402, 22354232, 2105071,
+23110146, -8121783, 27962384, 2981244, 14840723, -10188199, -6930467, 8671002, -29458644, -8397735,
+10700911, -5457293, -4215511, -23720030, -22455162, 10046465, -13808320, -9949292, 17897666, 24694988,
+-3946001, 16165720, -29767344, 1575179, -8281234, 38078644, -16065862, 12538620, 23205172, 22134114,
+6278169, -15787226, 9683541, 6937446, 6546604, 12179990, -37963216, 69450696, 22033182, -6286759,
+3446175, 7646653, 19123342, -5529234, 14675366, 40447856, -2518462, -50347756, 20783346, 17328582,
+-18025440, 23449984, -5388574, -10650982, -27106076, 51892868, -26978838, 57794692, -38331508, 14203457,
+-918586, 62804768, 27736362, -27005144, 25626996, 1016834, -16889422, 12538083, 1787780, 5586679,
+13909252, 5889474, -16340203, -4305168, 19026706, 5048734, 10699837, -8928700, 11844446, -20391968,
+7390028, -1234266, -6710350, 12539157, -7164006, -4035122, 8942122, -1632625, 1213328, -1685775,
+15137612, -10087804, 14770393, -8886287, 13655312, 19216220, 7034620, 5153961, 10537165, -2854543,
+-7721278, -7463043, 9077950, 3118683, -1654636, -201863, -2523293, -13932874, -10774999, -2219961,
+319975, -3225521, -8215199, 47862580, 5806796, 26023206, 13331042, -26200912, 1743757, 15671799,
+-4588099, -22813792, -4276714, -49846852, -13864691, -18528488, -10653666, 10961830, -1348083, 17928804,
+-8643622, 1994476, 17521320, -15455977, 1795296, 9978283, -859530, -16969416, 91268, -11644193,
+34564288, -5993627, 20084340, 3276523, -213138, 35358856, 25565792, -15511274, -18130130, 8992051,
+16112570, 19419158, 23662048, -403190, 8429947, 22351010, -1086090, -8954470, 7117298, 804770,
+-19656454, -430034, 13165149, -19449760, -26097832, -2465311, -1456531, -2797634, -8671002, -9461813,
+-31117038, -4295, 30814242, 9463960, 17202418, 10098542, -3983582, -40372692, -29484414, 7975218,
+26275000, 8548596, 13348221, 53069688, 55234352, 46629924, -3563212, 23182622, -14635638, -39127152,
+-65112240, 11361799, 8188355, -2894808, 9208410, -20623896, 4573067, -5012227, 24068460, -1781338,
+19358492, -23625542, 11797201, -29016800, -5476620, 12276627, 2238752, -14766098, 3625489, -12159589,
+-13018583, -5604396, 3651796, 11110007, 14496588, 18853832, -4369056, -1004486, 5046050, -5151814,
+6238977, -19510426, -16470663, -11573326, -15395847, -15022722, -15720654, 10365367, 7740605, -2641405,
+-10230612, -15908559, 9905268, 183610, 15527917, -3724811, 13798656, 10008348, 870268, 4323959,
+16514149, -19417548, -17979806, 11209328, -1350230, -3846680, -8477729, -15013595, -31344672, 8661338,
+-18883898, 8934069, -8324184, -22174380, -7012071, -317291, 10695542, -9466645, 5345087, -32454920,
+30012158, -67833104, -6964827, -17070884, -14056891, 8912057, 38540352, 6072010, 13865765, -33478196,
+7285339, 12144020, 26436060, -13992467, -21729850, -15095736, -7489886, -1153199, -753230, 15968152,
+11543261, -9622874, -49052820, -23337778, -39921184, 4491999, 69927976, -49710488, -19812148, -7740068,
+40345848, -13660143, 16965120, -13057237, 19364396, -7837779, -11988327, -25268904, 12826920, -29266980,
+26834956, 48631376, 6113886, -9084393, -9259413, 40321688, 10579041, -459025, 21223044, 6919729,
+7582228, -7873212, 46588048, -73550776, 53046068, -44850732, 21104396, 52428664, -42284488, 85072024,
+57886496, -21922586, -7431904, 58480276, 21240224, -5647882, 38427608, 34481608, -45117020, 60339996,
+-36705328, 10664941, 11431592, -16288127, 11508902, 19660212, -12360916, -22203370, 7031399, -12006581,
+4977330, 4984847, -6227703, -17426830, 6761353, 6104223, -7243999, 7202660, 5719823, -14043469,
+34078956, 3628711, 563178, 625992, -7082938, 5133560, 4463545, 1707250, -11301133, 5691369,
+1422708, -4985920, -9928354, 21020644, -8149164, 17073568, 19471234, -2110440, -7416872, 5057861,
+4677757, 7484518, 23499376, 20217484, -18413598, 8354249, -7568806, -1220308, 26863410, -5374078,
+7395934, 10456635, -1822140, 49576272, 47245712, -40379672, 39336532, 36202816, -34082712, -51423644,
+-75990320, 17662516, 113978768, 46814068, 150324, 23501524, -109073376, -45059040, -3927748, 16583942,
+81948512, 80216032, 13782550, -30966714, -60473676, -35437776, 4018479, 25885232, 39133056, 63073744,
+38016368, -50876572, -120268744, -97982160, -9711458, 108990704, 118508888, 74907984, 22803592, -25206626,
+-48505752, -73189464, -41815264, -44527000, 87150792, 72575280, 45768244, 40587976, -61814244, -86485072,
+-100442104, -89874872, 34507916, 121685552, 149747792, 50645180, -45512696, -106705776, -128080216, -34835404,
+20484310, 13207561, 79959408, 31400506, -30369176, -17949742, -61758408, -13471165, -70592080, 30496416,
+83406120, 156241776, -9626095, -83560200, -181633088, -7111392, -61508228, -6534793, 86851752, 17223356,
+-8134668, -38827580, -81912544, -53602804, 39107824, 63381368, 20696374, -11084774, -28018220, -33360084,
+32327146, 37343668, 22903450, 19995220, 8762270, 18644990, -1986959, 1766842, -18341658, -8407398,
+1874753, 47131896, 41020696, -2130841, -17879412, -4583267, -42286636, -28260348, -1284732, 16073378,
+43290048, 33538862, 23566486, 2179159, -58849104, -52795348, -35974648, 13852880, 56315076, 109620448,
+66880156, -50539416, -91258392, -80380848, -32638530, 2295660, 74815648, 94476936, 70224864, 12411382,
+-56346748, -127380680, -80533856, 25942140, 78785272, 90319944, 26107496, -13225815, -35366908, -41518912,
+-24072754, -7653632, 8575439, 19859928, 24829742, 19891604, 4555887, -1738388, -17478906, 871878,
+-10297184, 51507932, 30177514, -4413616, 11043972, 5681705, -36484672, -3705483, -2859375, 4110821,
+1257889, 3047279, -13268765, -5235029, -4822175, -3251290, -5973226, 22024592, -7754027, 9530532,
+-16372952, -1541356, 6923488, -660351, -4894115, 37953552, 5352603, -21298742, -24774446, 5354751,
+5348845, -14506789, 4174708, 19125490, 9986336, 18008798, -18191334, 5663988, -532039, 4420595,
+-12771085, 2574833, 14413910, 20368882, 5240934, -5148592, 6051609, 2412161, -4600984, 13927505,
+-20278688, 4728222, -33102924, -10278394, 13832479, -11151346, -13238700, 18183280, -11409581, -30884036,
+-23891830, 21380884, -2544768, -4093104, 4993437, 10893111, 27042724, -17440788, -22771916, 1095217,
+-3037079, 18361522, 237834, 10786810, 4982162, -1682017, 28082644, -36326832, -5242545, -5023501,
+-21310554, 5607080, 12079059, 656056, -12657805, 5787469, -2785823, 3767760, -10934987, 8227010,
+-484258, 1453310, -892279, -2564096, 14275398, -14126147, 1189169, -2296197, -5052492, -4417911,
+1733556, -6028524, 6583111, 8505109, -8617852, -2049773, -3256122, 7811472, 8545374, -4113505,
+10515691, 1190243, -1445257, -6877854, 7595113, 2778844, -2931852, -11474005, 5551245, -10389526,
+6856916, -5526013, -5083631, 9842454, 9669045, -12957379, 1610613, -2879239, -12864501, 4384088,
+-7513509, 8663486, -7409893, -29948270, -33041184, -78792784, 22955526, 22704270, -1470489, -66405028,
+-42877196, -6198712, -10778220, 44588740, 30128658, 14552423, -29318520, -12032888, -7669738, 27964532,
+3194382, -7810398, -17151416, 11538430, 5207111, 13970992, -622770, -5538361, -6939057, -15808701,
+-7815767, -9521406, 26732950, 14331769, 3269007, 4101694, -17376364, -826244, 2266669, 24391656,
+-1617055, 11426760, -8885750, -6180458, 5086315, -9901510, 6752226, 3010235, 7252589, 23788750,
+-1933809, 20886962, -134755, 13448079, -10184978, 975494, -15042586, -19559818, -20539070, -17606144,
+5973763, 3163780, 1665911, -25976500, 13023951, -22599044, -2416993, 1269163, -14068165, -15307263,
+-7983808, 365609, -26951456, -18251464, 16982838, -8100845, 15822123, 2571612, -4198868, -14575508,
+-16769163, -1023813, 24155970, 29824252, -7262790, -2976412, -11040750, -14843407, -10144176, 9552007,
+5191542, 3714073, 9458592, -1778653, -6017249, 6508486, 3705483, 5424544, 8294656, -4510253,
+2896419, -850940, 339839, -6155225, 10910828, 3456375, 2605435, -3183645, 1709934, -188979,
+16924318, 2179159, 5182415, -9370545, 785979, -6056978, 11129334, 790274, 322659, -3835943,
+2703145, -1238024, 294742, 5276368, 654446, 6905234, -4527970, 2251100, 881005, -8817568,
+-322659, 5054103, 2094870, -1815161, 3047816, 17723720, -38173668, -94637456, -90706488, -13784161,
+27418534, 91231544, 78849696, 74319040, 79846664, 44433048, 10749766, -40340480, -40510668, -84208736,
+-65376380, -57342644, -36359044, -45762340, 62986232, 51788716, 68209448, 39307004, 55752432, -2051384,
+14689325, -8987219, -21741124, -12471511, -25994216, -30281666, -30121680, -29758218, -35175244, -25796110,
+-20907900, -2409477, 5558762, 49413060, 41520524, 21835076, 23523536, 32582158, 30298310, 14542222,
+70420280, 9116605, 946503, 13167296, -26269094, -80809808, -23079006, -64787436, -69409352, -73409048,
+-51866560, -46264312, 2342905, 38280508, 39135204, 47711180, 86914032, 62480500, 76279160, 74880608,
+47847008, 51355996, 17595408, -18140332, -58650464, -77061912, -87944824, -57293788, -78923248, -66415764,
+-75776112, -44302052, -5233418, 20716238, 61411052, 58494772, 59500868, 98931888, 69027640, 81767584,
+51027968, 8414378, -9553081, -24856050, -40918152, -45957224, -48565344, -47449188, -54562728, -46885472,
+-34193844, -21117280, -10838350, -8318278, 23771570, 22441740, 31803160, 51208360, 57856432, 36569500,
+44219908, 27145268, -1612223, -12094091, -26584236, -33415920, -28511066, -24772834, -29803852, -11020349,
+-7330973, 563714, 8502425, 9269076, 2427194, 1168768, 8331163, -1321239, -7137699, 6499896,
+3978214, 4599910, 7376070, 2050847, 2012192, 4327717, 10233833, 8596377, 4054986, 726386,
+-2181844, -8805220, -6536940, -8018704, -6817724, -2864206, -5253819, -4750234, -2521683, -2150168,
+-2786360, -880468, 3349001, 3157338, 4093104, 6346888, 4387846, 3020436, 4216584, 1497870,
+1838783, 1742146, 1230508, 1025960, 469225, -1191317, -2535105, -4860293, -3694209, -3993783,
+-3145527, -1690070, -645856, -1548336, -908922, -1285806, 239981, 1104344, 1921461, 3629784,
+3621194, 1396401, 1500017, 648003, -507343, 899259, 720481, 197032, 1230508, 347355,
+-456340, -1083406, -893890, -1092532, -867583, -961536, -305480, -587337, -673773, -2194728,
+-2478196, -2471217, -1744831, -421444, 755914, 2049236, 2652679, 2731062, 2934000, 2322504,
+2564096, 1744831, 843961, 139050, -344671, -1328756, -2025614, -2451353, -2190970, -2312303,
+-1879585, -1832877, -1534377, -729071, 135291, 536334, 1236951, 1797981, 2083596, 2003065,
+1743757, 1179505, 708670, 124017, -86436, -444529, -532576, -588411, -524523, -495532,
+-375810, -284542, -155693, -93952, -46171, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-4386236,
-7451232, 2618320, -1320703, 1911261, 2416456, 4479651, 7463580, -3540127, 2500745, -3012383,
--2331094, 1519345, 49929, 646393, -5214091, -2524367, 1883880, 3725884, -459562, 3142842,
--5591511, -4968204, 3177739, 2032593, 899796, 2309082, -1884954, 4053376, 4549444, 4401805,
-6320581, -3464428, -2841658, 244813, 836982, -6004901, -341450, -503585, 1694902, 611496,
--3728569, -910533, 5172751, -2724083, 1047972, -3127810, 1549946, 1601486, 1069984, -4668630,
-3825205, 360777, 897111, -630823, -1495186, -1928977, -3149822, 6810208, -1151588, -1240172,
--1476932, 3031173, 752156, -6415608, 1682017, -2924336, -4361003, 2614025, -2676838, -6948184,
-2827162, 1031329, 356482, -6402723, -7723425, -3167539, -3779034, 3613678, -991064, -2147,
--1703491, -2095944, -1693828, 59593, 3242164, 585189, -1363115, -110595, -1426466, -654983,
-1472637, 433792, -1284732, -1817308, -568546, -743566, 762894, -454193, 327491, 259309,
-827855, 200253, 1159641, -455803, 324807, -250182, 838592, -45097, 776315, 898185,
-4294431, 464930, 321586, 3815005, -5825050, 915365, -4869956, -6148246, 1705639, 5669357,
--3590056, 2665564, -2715493, -1335198, 1098975, 238371, -2885144, -8456791, -8404177, 102005,
--2168422, -123480, 4313221, 652835, 5293011, 7179038, -3863860, 6193880, 724239, 6287832,
-345208, 7470559, 901406, -4250944, -1212791, 378494, 3367254, -970663, -1186485, 702227,
-2541547, -3167539, -246961, -1007170, 2240899, 2757906, 96100, -2888366, -260382, -557272,
-1585380, 2900177, 5210332, -1879585, 3359738, -1581622, -4646081, -4133906, -2829310, 2555506,
-2754685, -1587527, 4497368, 112206, 1593970, 200253, 5480915, 3638911, 4022237, 1623498,
-2342905, 1449552, 2169495, 4494147, -1024350, -268435, 6334003, 1250372, 120796, 1297617,
--2443300, 323196, 1822677, -176094, -6044093, 1842541, 569620, -990527, -2141578, 1351304,
-341450, 3226057, -1269700, -622233, -1314797, -1042066, 754304, 207769, 1235877, 588947,
-231391, -1204202, -1004486, -577136, -650688, 486405, -1626719, 1343788, -631897, 379568,
--450972, -579284, -938450, 504122, -772020, -548145, -1768990, 6516003, -6558952, -4404489,
--3609920, -5301064, 1738925, 2354716, -4255776, 1046898, 8883066, -6387690, 4526896, 7670275,
-7581691, -4598300, -1226750, 3785477, 762357, 1209570, -3336653, 1907502, -11421392, 9057012,
-14154602, 2551211, 4799089, -2239289, -144418, 7546795, -3890704, -8994198, -1457605, 191126,
-21475, -7254200, 590558, 1876364, -8640400, -4024921, 4081293, 1427003, -3041911, -745177,
-3060701, -4177393, 9046812, 2868501, 466004, -5713380, -520228, 3166465, -1910724, 254477,
--2012192, -52613, -810138, -4562866, 339302, -4409858, 6802692, -6458020, -4292283, -1395864,
--7762080, 5303211, -4153234, -10806675, -1949915, -4621922, 1377611, 5068062, -5032091, 701690,
--3401614, 3620658, 539018, -3521336, 3130494, -3820910, -5100274, 5806796, -3656628, 1711545,
-185757, 597000, 2049236, -1054951, -1705102, -1877438, -3090229, 1130113, -4386236, 332860,
--853088, 1474248, -1274532, -26844, 49392, 202400, -2309619, 2191507, 143881, 482647,
--1225676, -804233, -909459, -135291, 1372242, -5099737, 3213709, -175557, -1017370, 3814468,
--3660923, -12812424, -2517925, -816581, 5566278, 7881265, 6990596, 3339874, -2770254, -894427,
--7900056, -6715718, 2291365, 8956081, -2588792, 9175124, 5844914, -5718212, 3041911, -910533,
-3182571, -6388764, -4296041, 1009854, 4577362, -619012, 2725694, 3782256, -7190312, -1481227,
--3321084, -9820980, 6075768, 928250, 2203318, 4198331, 7751879, 2662880, 361314, 6041945,
--1423782, -3155190, 6256157, -3338800, 10574746, 4829691, 4206384, 176631, -3039763, -3744138,
-5187247, 6999723, -5231807, 1227824, 6731825, -1240709, 2193118, 14814953, -4487704, -1837172,
-2896419, -7497939, -292595, 1285269, -3312494, 3570729, -2395518, 2182380, 7388955, 208306,
--1685775, -5073430, -398895, -6289443, 2653753, -2367601, -3049427, -1331977, 1202591, -1848983,
--1779190, -1567663, 359704, 2241973, 1722819, 411243, -508417, -753767, -504122, -404264,
--1009317, -1896228, -328565, -629750, 999654, -56371, 518617, -1919850, 819265, 917512,
--661425, -1691680, -569620, -1771674, -864899, -826244, 1299765, 70867, -229244, -197569,
-338229, 135291, 707596, -2681133, -639950, 787590, -3327526, -18369576, -1552631, -454193,
--3729642, -5743982, -1927367, 9753871, -7029251, -10482405, 3843996, -4298189, 1422171, 1786706,
-6522982, -4564477, -1423245, 1228898, 6060199, -2935610, -4090420, -1272921, -3528316, 4447976,
-8205535, 4095251, 7516, -751619, -4806606, -351650, 12947179, 2223183, -1683627, 14971182,
--966905, 11117523, -3446175, 23085, 7523709, 2238215, 1821066, 2643016, 1264868, 4110284,
-2365990, -7207492, 13211319, 8004209, 10836739, 7246147, 4747550, -7331509, 3147137, 3635690,
-493921, -4519916, 12261058, 7398618, 11070815, 1920387, -2285460, -2807298, 8135742, -4060355,
--8532489, 9899900, 3052648, -5533529, -3237869, 434329, -2624762, 915365, -1223529, 1347546,
--3521873, -1005559, -8078834, 3018825, -1052267, -264677, 2880849, -1042066, -1564979, 4658966,
--376883, 3608310, 4842576, 3969624, 2527052, 2524367, 971200, 1454383, -40802, -1069447,
--1000191, 2102387, -670015, -1368484, -1438814, 974958, -1614908, -449361, -371515, 2636573,
-1055488, 1877438, -1865090, 526134, -1508607, -550293, 1789928, -292058, -818191, -635655,
--551366, -1103807, -783832, 744640, -111132, -507880, -4725538, -749472, -12080132, -4822175,
--13499082, -9278740, 909459, -8800388, -6934762, 725850, -1605781, 8899172, -6052146, 9870909,
-12145094, 1169842, -10455561, -7382512, 10903848, -5657546, -3073586, 6069863, -8106751, -14358613,
-5651103, 12227772, -6403260, 3057480, -295279, 5281736, -14951318, 2877628, -6044093, 3506304,
-238908, -6337761, 10320270, 4651450, 4325569, 13728326, 6386617, 2761127, 7777112, 1472100,
-2482491, 3848291, 1265942, 530428, 2087354, 1786706, 15693274, 8749385, -84289, 13102871,
-8226473, 9643275, 15199352, -7902203, -6553583, 13242995, -4699768, -627065, -7973607, -3471407,
-4707821, 6968585, -6083285, -830539, 1972464, -1830193, 3639985, -6518687, -1240172, -7522635,
-14339822, -4773320, 7814156, -2360085, -3878356, 10443750, 1817308, -3228205, 3402688, -1440425,
-266288, -3126199, 3965866, -889058, 1407139, 4145717, 2424509, 1141388, 2383170, 47782,
--414464, 1576790, 407485, -3072512, 602906, -758599, -1395328, 2507187, -28454, 1149441,
-1061394, -745714, 482647, -1870995, 335007, -1723893, 111132, -796180, 1898376, 355945,
-1629403, 287763, 1977296, 382789, 897111, 1034550, 181462, 4510253, -4903242, 1527398,
-659278, 1515050, -7026567, 9043591, 5226975, 12301860, 2345052, -1703491, -13968844, -7474317,
--5265093, 3525631, -7279970, -12083890, -3405372, 3063386, 1293859, -13487808, 10878615, 817654,
--868120, -11489574, -6647536, 2684892, 1362578, -12759811, -4014184, 4639639, 463320, 1270237,
-6477348, 7616051, 4403415, -1984275, 3791383, 1179505, -4626217, -9438728, 16192564, -4086125,
--7970386, 149787, 3973919, 5247913, 12090870, 1995549, -279173, -4566624, -195421, 6738804,
--911607, 8421357, 16072304, 1360431, -3559991, 495532, 13827110, 17380122, -8720931, 2434710,
-2361695, 9404368, 4899484, 1670205, 2823404, -6900939, 4243965, 4497368, 4406100, -2969970,
-187368, 3432753, 5104032, -705985, 1706713, 1221381, -5946919, 2862059, 205622, -5268315,
--3923990, 5651103, -2597382, 3921842, -5713380, -4270808, -1999307, 1318555, -164819, 5111011,
-2237678, 951872, 169114, 2580739, 2259690, 783832, -4362076, 237297, -1881196, 738198,
--1438277, -988916, -137976, -373125, -695785, -1397475, -4283156, -1103270, 367220, -2762201,
--1891933, -1723893, -16106, -1723356, -3051038, -617938, 1308354, 2359548, -879395, 736587,
--1214939, 877784, -4599910, 6318434, -5774047, -10417980, 7093139, -915365, -2588255, 2649458,
-6029597, -17430052, 1000191, 13227962, -1611150, 23856932, 11372537, -7383586, -5428839, -2319282,
--6977175, -3147137, 10621991, -4187593, -3566434, 10631118, 8630200, 2792803, 4923107, 9931038,
-6563247, 7412040, -5548561, -3831111, 9443022, -1944547, 8543227, -22012, -10332081, -6682432,
-2723009, 8042327, -11231339, 620086, -6023155, 3051574, -6874632, 9418326, 9414568, -9323837,
--1039382, 2623688, -354335, -12581033, -5659693, 2066953, 8237748, 13565654, 4585952, -10185515,
--2282238, -2537252, -1237488, 8503498, 1313186, 6798397, -10388452, 4563403, 656056, -8275865,
-9659918, 4047470, -1359894, -2254858, 1628866, -444529, -8409546, 6220187, -1982127, 3676492,
--6544994, -11571179, -6418292, 2638184, 5082020, 42950, 2786897, 10234907, 61740, -2718714,
-6442988, -2090039, 6062883, 278636, 1940252, -5322538, 493921, 56371, 2760053, 2998424,
-4286914, 2667712, -1105417, -1349157, -2052458, 5048734, -2441152, 2589865, 521839, 1529008,
-2068027, 2790118, 1231045, -1069447, 2553358, 933082, 833224, -1079647, 3449396, 1562831,
-698469, -3545496, 1228361, -1448478, -66035, 2283312, 667331, 10992432, -13732621, -2251100,
--4443681, 13919452, -6337761, 11456288, -3682935, 10691247, 14513231, -6546604, 4519380, -3787624,
-8229694, -3233037, 6837051, 5677410, 5329518, -1310502, 5609228, -2944200, -7332046, -3546569,
-7996692, -9527848, 1405528, -98247, 7111929, 14523969, -13441637, 408022, 12979928, -380105,
-11857868, 1573032, 5156645, -1707786, -1110786, 3169149, -18537078, 1760400, -541166, -7391102,
-4779225, 2965675, 13281649, 6605660, -1431298, 25362318, 6229850, -13446469, 3439195, 1233729,
-8770860, -5823439, 1597728, 7448010, 483721, 4517232, -1444183, -14679124, -15093589, -20401,
--5177046, 11988327, -20475720, 26131118, -268972, 14526653, 16556025, 3959960, -4534412, -3379603,
--7950522, -10424422, -1008780, 3297998, -2753611, 5192616, -3626563, -8402030, -5401995, -4270808,
-1377611, -1354525, 792958, 5557688, 2689723, 2610266, 1923609, -2389613, -3011846, 117575,
--744103, 1558536, 248034, 600759, 1629940, 3206730, 1803349, -6534256, 1044751, -1272384,
-4581657, 4715874, 2613488, -484794, -1525250, 1824287, 1343788, -2337536, -2565169, -641561,
--1801739, 414464, -1916092, -3180960, 1102196, 5209259, -1504312, 2079301, -4176856, 488016,
-2164664, 2376191, -274341, 1516660, 3224984, -2515240, 1094143, -24186572, -1684701, 8273718,
-1385127, -9063992, -22463752, 22549, 2593087, -3911105, -918586, -6588480, 3506841, -5478231,
-11602854, 4124242, -6884833, -8593156, -14767171, 11108396, -4700842, 797790, 14424111, 19859928,
-12094628, -1796370, 1049583, -13544179, -5800354, -5417565, 3660923, -19232326, 5048734, 5319317,
-1112933, -9860171, 9527311, 14860587, -2378875, -201863, 1733556, -8533026, -9077950, 5288716,
-3584150, 11260867, -12307766, 13426068, -7034083, 7430831, -11396159, -8930848, -4506495, -223875,
--1349694, 4947803, -2458869, -19857782, -14947560, -4133906, 528281, -19908248, 275415, 9959492,
--5293011, -2232309, 3023657, 8483097, -17588428, 9064528, -3099893, -2564096, -94489, 7265474,
-8964134, -10479720, -5402532, -7018514, -3460670, -2481417, 5204964, 1816771, -6387153, -2774549,
--4902705, 3477313, 11670500, 7789460, -80531, -250719, -6546067, 336081, -4008815, 5590437,
--1022739, 9685688, 3179350, 3439195, -3471944, 293132, 85362, -7582765, 8164196, 706522,
--1478006, 4366371, -1547262, -1202054, -425202, 725850, -6694244, 3024731, 4014721, 4395899,
--736050, -1474784, 1414118, 2530273, -2430415, -1312649, 2310156, -4962298, 505196, -22549,
-4698694, -260919, 21725018, 508417, -4434554, 16894790, -3718368, -6895570, -1843078, -1570884,
-20951924, 23975044, -3147137, 5092221, 6089190, -3073586, -11415486, 5599564, 22279606, 17006460,
-14522358, -5287105, 6279242, 11973832, -15572478, -11580842, 13552769, -6930467, -7634841, -522375,
-16949552, -2553895, 15600395, 1030792, 13996225, -8390219, 19241454, 5869610, -6004365, -9820980,
-3491809, -13895830, 1643899, -16489453, -5655398, -5905043, 9421011, -9432285, 15538655, -19036368,
--32992866, 20620138, 9193914, -4029216, 147640, 22746146, 10644003, 1830730, -5989869, 4936528,
--2671470, 302258, -14791867, -14948634, 8791261, -4995584, 4846334, 28246926, -7406134, 6106370,
--18443664, 21838834, -7321309, -9695352, -4690105, -3002719, 9079024, -18428630, 15423764, -18059800,
-13035763, -9272298, -12650289, 12654047, -568546, 4184909, -5141613, 7511361, -4111894, -5638219,
--2570538, -8575439, 5928666, -216896, -5646809, -2323041, 2079838, 9285719, 1725503, 1388348,
-2440078, -156229, -1591822, 4756677, -2650532, 2195802, 1934346, -2310156, -694174, -448824,
-6600828, 5873368, -2144263, -3109556, -6935836, -35433, -1427003, -897648, -1141388, 306553,
-6331856, 2010045, -775242, 8113730, 3900367, -24705726, -18361522, -17799956, 24890410, 853625,
-10689637, 6382859, -21904334, -19138912, 12891881, -34163244, 9996536, 10177462, -2191507, -13577465,
--12506945, 21325050, -11452530, -1477469, -3582003, -11011222, 16197395, 5188321, 14652818, 8554501,
-10106058, -3174518, 16448651, -1482301, -10772315, -12640089, -2929168, 7176354, -9621264, 12814572,
-8188892, -9596568, -34629248, -2869575, -2864206, -818191, 25126096, 609885, -19724638, -11647414,
--12073690, 10369125, -7623030, -16362215, -18341120, -11346767, -8937290, -40766756, 941135, 5136244,
-13368086, -21272436, 6937446, -17568026, -14456323, -4886599, 17013976, 4412005, 15785615, 29953638,
-8946417, 6912213, 19447612, -15154792, -1999844, -7171522, -8403640, 15676631, 14386530, 23005992,
-11214160, -20968568, -14072997, 16559783, -24905978, -27302570, -8679055, 19983946, 3079492, -4821101,
-13507135, 11143830, -205085, 3217468, 11432129, -7489886, 6720550, -5506148, -1165010, -5739687,
--1184337, 1572495, 7961796, -5071820, -6599754, 37581, 4434017, 1511292, 4015258, -592169,
--6613713, -1497333, -4432406, 390842, -3732327, -651761, -659278, -7239168, 5756330, 957778,
-5855114, 7621420, 10287520, -3873524, -5746130, -389768, 821949, 601832, 11457362, -11159936,
--23000624, 5937256, -629213, -739271, 529892, 2863670, 4508105, 9655086, 2925947, 8078834,
-4301410, 9628243, 25414932, 544387, -33864208, -12600897, 8166881, 13422, -7312182, -21874806,
--14539538, 4217658, 17129404, 6451041, -17056926, 8617315, 6734509, -19216758, -3929358, -23688892,
-17974976, -10063108, -12560095, 16608102, -16784732, 4252018, 34917012, -4476967, 5357972, 10083509,
--458488, 4803921, -21091510, 4693863, 3248606, 3008088, 45970644, 31060666, -3877819, -16523813,
--11128260, 14229764, 16485695, -18936510, -10791642, -25295746, 39153996, 10562935, 4144644, -6730751,
--4763119, -9185861, -5340255, 28113782, -8074539, 7341710, 27977416, 4412542, -8489003, -21479668,
-74625, 8069707, -42915852, 8851928, 4162897, 28635620, 19339700, 15081241, 25419764, 14254460,
--5625871, 2155537, 8538932, -3335042, 765578, -2246805, 3610994, 1869921, 23698018, -1122060,
-9430674, -4694400, 9088151, -1240172, 12300786, 2279017, 3052648, 11229192, -1476395, 4393215,
-7338489, -249645, 5827734, 8520678, 3418257, 6695854, 9914395, 5541045, -4452271, -1231582,
-1755568, 2089502, -464393, -4675609, 1519882, 2254858, 672162, 5072893, -1351841, 8231842,
-4155918, -4068408, 8487392, -1738388, 725850, -5950677, -27174258, -3922379, 18653042, 10456098,
--30447024, -40096740, 4557497, 27181238, 10944114, 16608639, -9509058, 12829067, 2088965, 337692,
--14612552, -5203353, -22721988, 33647312, 11200201, -27302034, -18818400, 12243341, 1216550, 6760816,
--8260833, 16807818, 9714679, 11583527, 21929030, 19542638, 3925063, 19112604, -10135586, 10994579,
--153008, 13358959, 6011344, -3141769, -8127152, 9245454, -12020540, 31448824, -8541616, -5866926,
-6325950, 15587510, 15228880, -10315438, 26920318, 26872000, 15465640, 6566468, 2130304, -8531416,
--20479478, -34745748, -5779952, 12483322, -871342, 15259482, 16403554, 17816598, 6048388, 9975598,
-57727580, -28337658, -12548821, 5840082, 11053098, -1354525, -45290968, 10709501, -7149510, 6883222,
-7883413, 20130512, 3889093, 456877, -18283676, 18955838, -6868727, 2838974, 16377247, 7618735,
--17727478, -3681861, -10014790, -3249143, -7716983, 1366873, 576599, 7225209, -1816234, 8788577,
-8378945, 11363410, -228170, 37581, -6937983, -2933463, -9248675, -6025839, -2838437, 12084964,
-3708704, -1742683, 693637, -4541391, 1612223, 10627897, 11652246, -2199560, -10978473, -52613,
-550293, 5235029, -3113315, 3670050, -5272073, 8125542, -15315853, 1701344, -4776541, -5206574,
--110059, 3181497, -9907416, 4902705, -1969243, 4859756, -5122286, -8972187, 3365644, 15103789,
-14874009, -8262444, -11212549, 3281355, -10773925, -34467648, 35560720, -10430328, 9980967, 3251290,
-29826938, 23751706, 14938433, -14283987, -2370822, 20367808, 10818486, 23980414, 64035280, -4016331,
--25259240, -6633040, 19137300, -2912525, -29829084, 45507864, 23601920, -16121160, -24972550, -3136400,
-5593121, -7993471, 18093624, 15316927, 17755394, 33952252, 5695127, 9545565, 6081674, -13241384,
--31660352, 18548354, -21541408, -16254304, 24998320, 13029857, 14105209, 7326141, 5158793, -1505386,
--31253940, -27829778, 531502, 16524350, -20654498, 19502910, -9152038, -23263154, 7331509, 20262582,
--3738769, 3834332, 20226612, 19827180, 20695836, 1438814, -12588549, 11696270, 49145164, 5835250,
-20004884, 27969364, 1404454, -8987756, -24648818, -10074920, -38863548, -13435195, -9698036, -4896800,
-8883066, 1412507, -1725503, -11282342, -7321846, -6597607, 9656697, -10109816, -1950989, -8934069,
-2925947, -5716065, -9532143, 268435, -13740674, -4978404, 292058, -12577812, -2298881, -10976326,
--6210523, 1076426, -19859928, -2055142, 996969, -352724, 9475772, -12813498, -4112431, 13459354,
-330712, -5497022, -523449, -4720706, 2684892, -5990943, -4351876, 6615324, -400506, 302258,
--10672457, 17734456, 14541686, 98247, -12157442, -17811766, -31265214, 5257577, 18748606, 25761750,
--22424024, -23875186, 28662464, 12732431, -1429687, -3205656, -12303471, 5245229, -5894843, -12805982,
-12977244, 15916612, 10899016, 807991, -2662880, -9324911, 1639067, 6530498, 3805341, -10498511,
--36461052, 7796977, -8536784, -11117523, 1691680, -4943508, 2710124, -36293012, 16472810, 12901008,
--26263726, 17886928, 23779086, 19906100, -5741298, 3117610, -3555696, 12889734, -3306051, -337155,
-64063732, -19600620, 5019743, -17526688, -10359461, 36106716, 12967580, 12160663, 22924388, -29873108,
--24858734, 36309116, -23491860, 18406620, 22742388, 1951526, 5813238, 8530342, 41132900, -14354854,
--16194174, -38325068, -8508330, -16651051, 12540768, -24079198, 39960376, 21684754, 24269250, 11874511,
-21165598, 11033771, 38124276, 9217000, 18156438, 13880261, -19276886, -9312563, -7679402, 3106872,
-1828046, 18596134, 7856569, -272194, -1251446, 4044786, 1387811, -7589744, -14785962, -7953206,
--11195906, 13355738, -5166846, -8021389, 4018479, -3267933, 16427176, 7505456, -3369939, 9171366,
--11196980, 4930623, 8076149, -3321084, 15887621, 16358457, 10719701, -8060580, 13349832, 7641284,
--13948980, -2873870, 1009854, -8463233, 519691, 11605539, -14044006, -16027207, 6539625, 2858301,
--1929514, 14907295, -10647224, 26356604, -15699716, 13799730, 45004816, 22192632, 16873316, -25592100,
-6884296, 24917790, -21778706, 35394824, 12563316, 18794776, 16869020, -11283953, 17489644, 14942191,
-6211597, 35070556, 26617522, -2352568, -60740500, -7421167, 27943058, 26814018, 27715424, 6358162,
-15400142, 1045825, 7677791, -2340757, -18903224, 38436736, -1155346, 36603860, 16505559, 26318486,
--37420440, 24959666, 12491912, 11042898, -9885941, 8445516, -7049652, 8043400, 37034968, 14457934,
-48359720, 2050847, 10638097, 27965606, -5784247, 44152800, 21872658, 3558381, -29518236, -18764176,
-16184511, 1527398, -4947803, 638340, -5055714, 3158949, -21490942, 14020384, -22874996, -34382824,
--12749074, -2238752, -11372537, -9109089, 28860570, -3779034, 26294326, -25354266, 28900298, 3540664,
--31923418, 31303332, 26467736, -10238665, -4409858, 7214472, 13940390, 8571144, -1264868, -14853071,
-9230422, -6609418, -834834, 17907330, -3629247, -3343632, -14650133, -4294431, 4212289, 2506114,
--849330, 13373991, 12314208, -9947144, 3461744, -580357, 698469, 12270185, 4066797, -14114336,
-9489730, -12125766, 6212670, -9877888, -3557844, -3377992, -1877438, 1253594, 2942590, 1317481,
-1040993, -3093450, 2648384, -6979322, 4932233, 4884989, -748935, -5791227, 4428648, -1598265,
-7259032, -4215511, -2838974, -9907416, 49392, -9802189, 2735894, -8174934, -26835492, -25633976,
--10226317, -10992432, 21060372, -33607584, -41972568, -45594836, -55173148, 24924768, 27270894, -1363115,
--4332012, 51540, -13046500, 3435437, 6977175, -11425687, 37751152, 35714264, 23265300, 25624312,
--23286776, 15784542, 1351304, 18755048, -7226283, -9255655, -34489660, 31182536, -31168578, -37525668,
--9898289, -7650948, 40605696, -21998286, 5475547, -20741470, -5873368, 39434780, 7262253, 12697534,
-19368692, 36256504, 2202245, -3689377, -43910672, -7759932, -3542811, -898722, 24019068, 13285408,
-81702088, 4457103, -2572149, -26740466, -2232309, 32873142, 29746944, -2299418, -14433774, -39992052,
-10016937, 25968446, -13176423, -29043642, -12564927, 25614648, -7786776, 18920942, -58613956, -32313724,
--46881180, -12221329, 18682034, 10422275, -20490752, -19002010, -23019414, 9652402, 48085916, 15061377,
--339302, -16627429, -1524713, -12839268, -3788161, 6194954, 5543729, -14840723, -7096897, -864899,
-10288594, -25558814, -17921288, -5567888, 12630962, -1253594, 16669305, 5935645, 1788317, -5345087,
--3121368, -11183021, -2705830, -17124572, -4163971, 20001126, 6745783, 9426916, -13807783, -23871428,
-11860552, 12084964, -7348152, 594853, -10361072, -1270237, 2780455, -703838, 8869644, 6316823,
-5692979, 12275017, 6149857, 9838159, 9606231, -1319092, 7639673, 4940823, 7391102, 1028108,
-974958, -7493108, -17147656, -9284109, 38961260, 502511, -564251, 69577936, 6173479, -52925272,
--40817760, 48548164, 43017856, 1982127, -35507568, -43927852, -25520696, 7810398, 41829760, 37194952,
-24671366, -16269336, 4257923, -16338592, 13166222, 31553514, 49100604, 53692460, -7544110, -29788282,
--46672872, -69393784, -1434519, 35943508, 148089936, -20109036, -8658117, -72577432, -30464740, 5410048,
-16464757, 87914224, 63194000, 38834556, -45712948, -26132192, -44678936, -3295314, 73482592, 67915784,
-82915952, -23762980, -83034600, -60622388, -83832392, 20118164, 75577464, 66357244, 122959008, -59761248,
--72546296, -63690608, -11209328, 53978612, 72197328, 101204464, 45437532, -22145388, -40375912, 8663486,
--3747359, 28272696, 80843632, -18671834, 49967112, -18829136, -47652664, -50466, 6602976, 43435004,
-1371705, -4844186, 3477850, -12302397, -41315436, 16198469, -6327024, 13099650, -12213813, -34143916,
--8835285, -8619462, 3029026, 21449604, 2355790, -7152195, 7786776, -8850317, -11152419, -2697240,
-31594316, 7471096, 28950228, -2911451, 2639258, -9236864, 3115462, 2676302, 5245229, 22195854,
-38927436, -1913945, -11475079, -37085968, -48740364, 1157494, 2135673, 57339960, 36692980, 5558225,
--20871394, -82568064, -46816756, -7783018, 36295696, 71694816, 36848136, -22648974, -27771258, -85564336,
--32265404, 39723616, 73784320, 59448788, 3158949, -39122320, -44204876, -5039071, -2310156, 34473556,
-20503100, 18569828, 464393, -18114562, -10634876, -867583, -8346732, 10545218, 11232950, -6197101,
--36202816, 47808892, -10914586, 56429428, -51686172, 770947, -22523346, -53636088, 39473972, -28079422,
-36541580, -28712394, -11057393, -2415919, 18844706, 4367982, -20554102, -10821707, -829466, 29341070,
--27041650, 33636036, 24040542, -18030810, 4228396, -22683870, -22994182, 39157216, -38394324, -19151260,
-25879862, 59716152, -415538, 8278550, -5453535, -25819732, -7289633, 24519432, -8428336, -39065412,
-5542656, -8351027, -6679748, 12105902, -35869420, 18307298, -148713, 12628278, 27576912, -62209380,
--46295988, -15062450, -1462973, 64590940, -34189012, 23587424, 50485192, -27471148, -16501801, -1458141,
-27329950, 40269076, -21956410, 11866995, -8160438, 16146930, 62124016, -22781580, -70293584, 15269146,
-31993212, 8708583, -37646464, 23756538, 9662066, 23857470, -7510824, -676457, -26368952, -20416128,
-15237470, 4319664, -28111634, 8611409, 19088446, -8935679, -352187, -30540976, 4321274, -7259569,
--34280820, -725313, 14994805, 13683229, 5245766, -438087, 8179765, -22784264, -6015639, 8736500,
--11561515, 18376554, -11173894, -4041027, -10591926, 547608, -11275900, 17633526, 2800856, -12986907,
--11915313, -6979, -821949, 28776818, -10196252, 10567230, -5473936, 29528, 5796059, -11615739,
--11166915, 2447058, -24264418, -6029597, 6606734, -19722490, 555661, -3163780, -7449621, 4993973,
-12863964, 621697, 1518271, -7373385, -4748087, -72331008, -22880902, 31184684, 42675868, 35436164,
--36015448, 11604465, -100738456, -65499324, -55613920, -8797704, 47310676, 30447560, -2026688, -22102976,
--27278948, 13429289, -16653199, -1650341, 36195836, 9893457, 1788317, -35692252, -17112224, -3587372,
--16822314, 10974178, -2883534, 19428822, -4977867, -150324, -6244346, -1110249, -4509716, -20368882,
--15338939, -34217468, -24073828, 17532056, 33645164, 36564668, 20448340, 31868658, -4714801, 27120570,
--6193880, -12361990, -42633456, -1606855, -23483808, 18353468, 7155953, 54140748, -43528956, 15556372,
-30484604, -16671989, -23054848, -13419088, -10661183, -11057930, 4088809, 38460896, 24863028, -10206453,
--1266479, 27614492, -31745714, -35240744, 14747844, -40910636, -31341450, -27452894, 3615826, 13326747,
-16086800, 47546360, 32479616, -5116380, 24230594, -13798119, 1169842, 5971615, 18016314, 28865402,
-31363462, 21961778, 18408230, 14666240, 1474784, -39897024, -11070278, -20594368, -4927938, 23329188,
--769336, 3548717, -8450348, -17762910, 2230162, -8774618, -7001334, -19353122, 8807904, 14532022,
--6194417, 5601711, 13143674, 7081328, 8673150, 1464047, 8549132, -5731097, 5976984, -2715493,
--9874130, 7745437, 10056666, -8037495, -11391327, 989453, -7586523, -13699872, 10872710, 11288248,
-4770635, 14552423, -966368, -13556527, -16328392, 23159000, -9245454, -86307368, -127586832, -156639072,
--123756264, -184650304, -32617056, -67411656, 20483772, 38822208, 133734544, 78127064, 138536320, 140867952,
-192839200, 140769696, 143104016, 105419976, 4572530, -30490510, -55767464, -34280280, -115110496, -78654808,
--62636192, -64014340, -63341104, -63219236, -61358976, -66215512, -72668696, -54158464, -84501872, -69092064,
--60207388, -27007828, -70999032, -21901112, 26184804, -52735220, -25451976, 14255533, 11640972, -44635984,
-37302864, 47924856, 60673392, 82284056, 83635896, -6500433, 49751828, 80886048, 114770656, 90471336,
-180754240, 169766640, 149949664, 121518584, 153840896, 76409616, 122494080, 149097104, 114839376, 73462728,
-124544928, 40452148, 41875396, 76536856, 76781128, 54542328, 15852187, 44595720, -14775224, 2711735,
-39039104, -44336948, -111518824, -166684464, -65842384, -228228656, -199635984, -175569136, -203042976, -225897568,
--189345776, -163884144, -158103120, -108952584, -143297824, -73540040, -90969016, -96690992, -146673136, -118504592,
--85458040, -69969312, -59240484, -55510840, -34786012, 13907104, -102542, -3287798, 41375032, 86380920,
-72036800, 72976328, 116295904, 99461776, 103333688, 131209640, 123719216, 105299176, 100138240, 120137216,
-102278200, 99191192, 105231528, 109214040, 92870080, 81237696, 74721696, 69875360, 91282552, 71633616,
-53712860, 56191056, 41994580, 24545202, -14550812, -30216168, -39633960, -70972184, -60789356, -62906240,
--74956840, -79199736, -72963976, -47556024, -53443352, -48326972, -49255220, -25448754, -28331752, -33957624,
--23489176, -7790534, -8927626, -16285979, -10781442, 183610, -6806450, -9193377, -8538932, -3248606,
--5095979, -7385733, -5835250, 3609383, 5513128, 1544578, -3471944, 149250, 4469987, 1070521,
--3996467, -734439, 1762010, 949188, -1082332, 1695438, 1512365, 2489471, 2152852, 118112,
-74088, 2058363, 2199560, 4771172, 2962454, -974958, -3105798, 1211181, 2410551, -1263794,
--2437931, -1414118, -3338800, -2516851, -2779918, -4188130, -3579855, -3551938, -4393752, -2779918,
-184147, 2433099, 1624035, 3780645, 5678484, 5562520, 4446365, 6312528, 8870181, 8296803,
-7861938, 9255655, 9115531, 10865730, 9685688, 8902930, 10469520, 10480257, 7837779, 4392141,
-4481799, 3311420, 125091, -1080184, -2151779, -3193845, -4639102, -5245229, -5329518, -5064840,
--5197984, -4807142, -4381941, -4062502, -3435974, -3059091, -2345052, -1722819, -1393717, -1169842,
--885837, -612570, -547071, -446140, -383863, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+7451232, 2618320, -1320703, 1911261, 2416456, 4479651, 7463580, -3540127, 2500745, -3012383,
+-2331094, 1519345, 49929, 646393, -5214091, -2524367, 1883880, 3725884, -459562, 3142842,
+-5591511, -4968204, 3177739, 2032593, 899796, 2309082, -1884954, 4053376, 4549444, 4401805,
+6320581, -3464428, -2841658, 244813, 836982, -6004901, -341450, -503585, 1694902, 611496,
+-3728569, -910533, 5172751, -2724083, 1047972, -3127810, 1549946, 1601486, 1069984, -4668630,
+3825205, 360777, 897111, -630823, -1495186, -1928977, -3149822, 6810208, -1151588, -1240172,
+-1476932, 3031173, 752156, -6415608, 1682017, -2924336, -4361003, 2614025, -2676838, -6948184,
+2827162, 1031329, 356482, -6402723, -7723425, -3167539, -3779034, 3613678, -991064, -2147,
+-1703491, -2095944, -1693828, 59593, 3242164, 585189, -1363115, -110595, -1426466, -654983,
+1472637, 433792, -1284732, -1817308, -568546, -743566, 762894, -454193, 327491, 259309,
+827855, 200253, 1159641, -455803, 324807, -250182, 838592, -45097, 776315, 898185,
+4294431, 464930, 321586, 3815005, -5825050, 915365, -4869956, -6148246, 1705639, 5669357,
+-3590056, 2665564, -2715493, -1335198, 1098975, 238371, -2885144, -8456791, -8404177, 102005,
+-2168422, -123480, 4313221, 652835, 5293011, 7179038, -3863860, 6193880, 724239, 6287832,
+345208, 7470559, 901406, -4250944, -1212791, 378494, 3367254, -970663, -1186485, 702227,
+2541547, -3167539, -246961, -1007170, 2240899, 2757906, 96100, -2888366, -260382, -557272,
+1585380, 2900177, 5210332, -1879585, 3359738, -1581622, -4646081, -4133906, -2829310, 2555506,
+2754685, -1587527, 4497368, 112206, 1593970, 200253, 5480915, 3638911, 4022237, 1623498,
+2342905, 1449552, 2169495, 4494147, -1024350, -268435, 6334003, 1250372, 120796, 1297617,
+-2443300, 323196, 1822677, -176094, -6044093, 1842541, 569620, -990527, -2141578, 1351304,
+341450, 3226057, -1269700, -622233, -1314797, -1042066, 754304, 207769, 1235877, 588947,
+231391, -1204202, -1004486, -577136, -650688, 486405, -1626719, 1343788, -631897, 379568,
+-450972, -579284, -938450, 504122, -772020, -548145, -1768990, 6516003, -6558952, -4404489,
+-3609920, -5301064, 1738925, 2354716, -4255776, 1046898, 8883066, -6387690, 4526896, 7670275,
+7581691, -4598300, -1226750, 3785477, 762357, 1209570, -3336653, 1907502, -11421392, 9057012,
+14154602, 2551211, 4799089, -2239289, -144418, 7546795, -3890704, -8994198, -1457605, 191126,
+21475, -7254200, 590558, 1876364, -8640400, -4024921, 4081293, 1427003, -3041911, -745177,
+3060701, -4177393, 9046812, 2868501, 466004, -5713380, -520228, 3166465, -1910724, 254477,
+-2012192, -52613, -810138, -4562866, 339302, -4409858, 6802692, -6458020, -4292283, -1395864,
+-7762080, 5303211, -4153234, -10806675, -1949915, -4621922, 1377611, 5068062, -5032091, 701690,
+-3401614, 3620658, 539018, -3521336, 3130494, -3820910, -5100274, 5806796, -3656628, 1711545,
+185757, 597000, 2049236, -1054951, -1705102, -1877438, -3090229, 1130113, -4386236, 332860,
+-853088, 1474248, -1274532, -26844, 49392, 202400, -2309619, 2191507, 143881, 482647,
+-1225676, -804233, -909459, -135291, 1372242, -5099737, 3213709, -175557, -1017370, 3814468,
+-3660923, -12812424, -2517925, -816581, 5566278, 7881265, 6990596, 3339874, -2770254, -894427,
+-7900056, -6715718, 2291365, 8956081, -2588792, 9175124, 5844914, -5718212, 3041911, -910533,
+3182571, -6388764, -4296041, 1009854, 4577362, -619012, 2725694, 3782256, -7190312, -1481227,
+-3321084, -9820980, 6075768, 928250, 2203318, 4198331, 7751879, 2662880, 361314, 6041945,
+-1423782, -3155190, 6256157, -3338800, 10574746, 4829691, 4206384, 176631, -3039763, -3744138,
+5187247, 6999723, -5231807, 1227824, 6731825, -1240709, 2193118, 14814953, -4487704, -1837172,
+2896419, -7497939, -292595, 1285269, -3312494, 3570729, -2395518, 2182380, 7388955, 208306,
+-1685775, -5073430, -398895, -6289443, 2653753, -2367601, -3049427, -1331977, 1202591, -1848983,
+-1779190, -1567663, 359704, 2241973, 1722819, 411243, -508417, -753767, -504122, -404264,
+-1009317, -1896228, -328565, -629750, 999654, -56371, 518617, -1919850, 819265, 917512,
+-661425, -1691680, -569620, -1771674, -864899, -826244, 1299765, 70867, -229244, -197569,
+338229, 135291, 707596, -2681133, -639950, 787590, -3327526, -18369576, -1552631, -454193,
+-3729642, -5743982, -1927367, 9753871, -7029251, -10482405, 3843996, -4298189, 1422171, 1786706,
+6522982, -4564477, -1423245, 1228898, 6060199, -2935610, -4090420, -1272921, -3528316, 4447976,
+8205535, 4095251, 7516, -751619, -4806606, -351650, 12947179, 2223183, -1683627, 14971182,
+-966905, 11117523, -3446175, 23085, 7523709, 2238215, 1821066, 2643016, 1264868, 4110284,
+2365990, -7207492, 13211319, 8004209, 10836739, 7246147, 4747550, -7331509, 3147137, 3635690,
+493921, -4519916, 12261058, 7398618, 11070815, 1920387, -2285460, -2807298, 8135742, -4060355,
+-8532489, 9899900, 3052648, -5533529, -3237869, 434329, -2624762, 915365, -1223529, 1347546,
+-3521873, -1005559, -8078834, 3018825, -1052267, -264677, 2880849, -1042066, -1564979, 4658966,
+-376883, 3608310, 4842576, 3969624, 2527052, 2524367, 971200, 1454383, -40802, -1069447,
+-1000191, 2102387, -670015, -1368484, -1438814, 974958, -1614908, -449361, -371515, 2636573,
+1055488, 1877438, -1865090, 526134, -1508607, -550293, 1789928, -292058, -818191, -635655,
+-551366, -1103807, -783832, 744640, -111132, -507880, -4725538, -749472, -12080132, -4822175,
+-13499082, -9278740, 909459, -8800388, -6934762, 725850, -1605781, 8899172, -6052146, 9870909,
+12145094, 1169842, -10455561, -7382512, 10903848, -5657546, -3073586, 6069863, -8106751, -14358613,
+5651103, 12227772, -6403260, 3057480, -295279, 5281736, -14951318, 2877628, -6044093, 3506304,
+238908, -6337761, 10320270, 4651450, 4325569, 13728326, 6386617, 2761127, 7777112, 1472100,
+2482491, 3848291, 1265942, 530428, 2087354, 1786706, 15693274, 8749385, -84289, 13102871,
+8226473, 9643275, 15199352, -7902203, -6553583, 13242995, -4699768, -627065, -7973607, -3471407,
+4707821, 6968585, -6083285, -830539, 1972464, -1830193, 3639985, -6518687, -1240172, -7522635,
+14339822, -4773320, 7814156, -2360085, -3878356, 10443750, 1817308, -3228205, 3402688, -1440425,
+266288, -3126199, 3965866, -889058, 1407139, 4145717, 2424509, 1141388, 2383170, 47782,
+-414464, 1576790, 407485, -3072512, 602906, -758599, -1395328, 2507187, -28454, 1149441,
+1061394, -745714, 482647, -1870995, 335007, -1723893, 111132, -796180, 1898376, 355945,
+1629403, 287763, 1977296, 382789, 897111, 1034550, 181462, 4510253, -4903242, 1527398,
+659278, 1515050, -7026567, 9043591, 5226975, 12301860, 2345052, -1703491, -13968844, -7474317,
+-5265093, 3525631, -7279970, -12083890, -3405372, 3063386, 1293859, -13487808, 10878615, 817654,
+-868120, -11489574, -6647536, 2684892, 1362578, -12759811, -4014184, 4639639, 463320, 1270237,
+6477348, 7616051, 4403415, -1984275, 3791383, 1179505, -4626217, -9438728, 16192564, -4086125,
+-7970386, 149787, 3973919, 5247913, 12090870, 1995549, -279173, -4566624, -195421, 6738804,
+-911607, 8421357, 16072304, 1360431, -3559991, 495532, 13827110, 17380122, -8720931, 2434710,
+2361695, 9404368, 4899484, 1670205, 2823404, -6900939, 4243965, 4497368, 4406100, -2969970,
+187368, 3432753, 5104032, -705985, 1706713, 1221381, -5946919, 2862059, 205622, -5268315,
+-3923990, 5651103, -2597382, 3921842, -5713380, -4270808, -1999307, 1318555, -164819, 5111011,
+2237678, 951872, 169114, 2580739, 2259690, 783832, -4362076, 237297, -1881196, 738198,
+-1438277, -988916, -137976, -373125, -695785, -1397475, -4283156, -1103270, 367220, -2762201,
+-1891933, -1723893, -16106, -1723356, -3051038, -617938, 1308354, 2359548, -879395, 736587,
+-1214939, 877784, -4599910, 6318434, -5774047, -10417980, 7093139, -915365, -2588255, 2649458,
+6029597, -17430052, 1000191, 13227962, -1611150, 23856932, 11372537, -7383586, -5428839, -2319282,
+-6977175, -3147137, 10621991, -4187593, -3566434, 10631118, 8630200, 2792803, 4923107, 9931038,
+6563247, 7412040, -5548561, -3831111, 9443022, -1944547, 8543227, -22012, -10332081, -6682432,
+2723009, 8042327, -11231339, 620086, -6023155, 3051574, -6874632, 9418326, 9414568, -9323837,
+-1039382, 2623688, -354335, -12581033, -5659693, 2066953, 8237748, 13565654, 4585952, -10185515,
+-2282238, -2537252, -1237488, 8503498, 1313186, 6798397, -10388452, 4563403, 656056, -8275865,
+9659918, 4047470, -1359894, -2254858, 1628866, -444529, -8409546, 6220187, -1982127, 3676492,
+-6544994, -11571179, -6418292, 2638184, 5082020, 42950, 2786897, 10234907, 61740, -2718714,
+6442988, -2090039, 6062883, 278636, 1940252, -5322538, 493921, 56371, 2760053, 2998424,
+4286914, 2667712, -1105417, -1349157, -2052458, 5048734, -2441152, 2589865, 521839, 1529008,
+2068027, 2790118, 1231045, -1069447, 2553358, 933082, 833224, -1079647, 3449396, 1562831,
+698469, -3545496, 1228361, -1448478, -66035, 2283312, 667331, 10992432, -13732621, -2251100,
+-4443681, 13919452, -6337761, 11456288, -3682935, 10691247, 14513231, -6546604, 4519380, -3787624,
+8229694, -3233037, 6837051, 5677410, 5329518, -1310502, 5609228, -2944200, -7332046, -3546569,
+7996692, -9527848, 1405528, -98247, 7111929, 14523969, -13441637, 408022, 12979928, -380105,
+11857868, 1573032, 5156645, -1707786, -1110786, 3169149, -18537078, 1760400, -541166, -7391102,
+4779225, 2965675, 13281649, 6605660, -1431298, 25362318, 6229850, -13446469, 3439195, 1233729,
+8770860, -5823439, 1597728, 7448010, 483721, 4517232, -1444183, -14679124, -15093589, -20401,
+-5177046, 11988327, -20475720, 26131118, -268972, 14526653, 16556025, 3959960, -4534412, -3379603,
+-7950522, -10424422, -1008780, 3297998, -2753611, 5192616, -3626563, -8402030, -5401995, -4270808,
+1377611, -1354525, 792958, 5557688, 2689723, 2610266, 1923609, -2389613, -3011846, 117575,
+-744103, 1558536, 248034, 600759, 1629940, 3206730, 1803349, -6534256, 1044751, -1272384,
+4581657, 4715874, 2613488, -484794, -1525250, 1824287, 1343788, -2337536, -2565169, -641561,
+-1801739, 414464, -1916092, -3180960, 1102196, 5209259, -1504312, 2079301, -4176856, 488016,
+2164664, 2376191, -274341, 1516660, 3224984, -2515240, 1094143, -24186572, -1684701, 8273718,
+1385127, -9063992, -22463752, 22549, 2593087, -3911105, -918586, -6588480, 3506841, -5478231,
+11602854, 4124242, -6884833, -8593156, -14767171, 11108396, -4700842, 797790, 14424111, 19859928,
+12094628, -1796370, 1049583, -13544179, -5800354, -5417565, 3660923, -19232326, 5048734, 5319317,
+1112933, -9860171, 9527311, 14860587, -2378875, -201863, 1733556, -8533026, -9077950, 5288716,
+3584150, 11260867, -12307766, 13426068, -7034083, 7430831, -11396159, -8930848, -4506495, -223875,
+-1349694, 4947803, -2458869, -19857782, -14947560, -4133906, 528281, -19908248, 275415, 9959492,
+-5293011, -2232309, 3023657, 8483097, -17588428, 9064528, -3099893, -2564096, -94489, 7265474,
+8964134, -10479720, -5402532, -7018514, -3460670, -2481417, 5204964, 1816771, -6387153, -2774549,
+-4902705, 3477313, 11670500, 7789460, -80531, -250719, -6546067, 336081, -4008815, 5590437,
+-1022739, 9685688, 3179350, 3439195, -3471944, 293132, 85362, -7582765, 8164196, 706522,
+-1478006, 4366371, -1547262, -1202054, -425202, 725850, -6694244, 3024731, 4014721, 4395899,
+-736050, -1474784, 1414118, 2530273, -2430415, -1312649, 2310156, -4962298, 505196, -22549,
+4698694, -260919, 21725018, 508417, -4434554, 16894790, -3718368, -6895570, -1843078, -1570884,
+20951924, 23975044, -3147137, 5092221, 6089190, -3073586, -11415486, 5599564, 22279606, 17006460,
+14522358, -5287105, 6279242, 11973832, -15572478, -11580842, 13552769, -6930467, -7634841, -522375,
+16949552, -2553895, 15600395, 1030792, 13996225, -8390219, 19241454, 5869610, -6004365, -9820980,
+3491809, -13895830, 1643899, -16489453, -5655398, -5905043, 9421011, -9432285, 15538655, -19036368,
+-32992866, 20620138, 9193914, -4029216, 147640, 22746146, 10644003, 1830730, -5989869, 4936528,
+-2671470, 302258, -14791867, -14948634, 8791261, -4995584, 4846334, 28246926, -7406134, 6106370,
+-18443664, 21838834, -7321309, -9695352, -4690105, -3002719, 9079024, -18428630, 15423764, -18059800,
+13035763, -9272298, -12650289, 12654047, -568546, 4184909, -5141613, 7511361, -4111894, -5638219,
+-2570538, -8575439, 5928666, -216896, -5646809, -2323041, 2079838, 9285719, 1725503, 1388348,
+2440078, -156229, -1591822, 4756677, -2650532, 2195802, 1934346, -2310156, -694174, -448824,
+6600828, 5873368, -2144263, -3109556, -6935836, -35433, -1427003, -897648, -1141388, 306553,
+6331856, 2010045, -775242, 8113730, 3900367, -24705726, -18361522, -17799956, 24890410, 853625,
+10689637, 6382859, -21904334, -19138912, 12891881, -34163244, 9996536, 10177462, -2191507, -13577465,
+-12506945, 21325050, -11452530, -1477469, -3582003, -11011222, 16197395, 5188321, 14652818, 8554501,
+10106058, -3174518, 16448651, -1482301, -10772315, -12640089, -2929168, 7176354, -9621264, 12814572,
+8188892, -9596568, -34629248, -2869575, -2864206, -818191, 25126096, 609885, -19724638, -11647414,
+-12073690, 10369125, -7623030, -16362215, -18341120, -11346767, -8937290, -40766756, 941135, 5136244,
+13368086, -21272436, 6937446, -17568026, -14456323, -4886599, 17013976, 4412005, 15785615, 29953638,
+8946417, 6912213, 19447612, -15154792, -1999844, -7171522, -8403640, 15676631, 14386530, 23005992,
+11214160, -20968568, -14072997, 16559783, -24905978, -27302570, -8679055, 19983946, 3079492, -4821101,
+13507135, 11143830, -205085, 3217468, 11432129, -7489886, 6720550, -5506148, -1165010, -5739687,
+-1184337, 1572495, 7961796, -5071820, -6599754, 37581, 4434017, 1511292, 4015258, -592169,
+-6613713, -1497333, -4432406, 390842, -3732327, -651761, -659278, -7239168, 5756330, 957778,
+5855114, 7621420, 10287520, -3873524, -5746130, -389768, 821949, 601832, 11457362, -11159936,
+-23000624, 5937256, -629213, -739271, 529892, 2863670, 4508105, 9655086, 2925947, 8078834,
+4301410, 9628243, 25414932, 544387, -33864208, -12600897, 8166881, 13422, -7312182, -21874806,
+-14539538, 4217658, 17129404, 6451041, -17056926, 8617315, 6734509, -19216758, -3929358, -23688892,
+17974976, -10063108, -12560095, 16608102, -16784732, 4252018, 34917012, -4476967, 5357972, 10083509,
+-458488, 4803921, -21091510, 4693863, 3248606, 3008088, 45970644, 31060666, -3877819, -16523813,
+-11128260, 14229764, 16485695, -18936510, -10791642, -25295746, 39153996, 10562935, 4144644, -6730751,
+-4763119, -9185861, -5340255, 28113782, -8074539, 7341710, 27977416, 4412542, -8489003, -21479668,
+74625, 8069707, -42915852, 8851928, 4162897, 28635620, 19339700, 15081241, 25419764, 14254460,
+-5625871, 2155537, 8538932, -3335042, 765578, -2246805, 3610994, 1869921, 23698018, -1122060,
+9430674, -4694400, 9088151, -1240172, 12300786, 2279017, 3052648, 11229192, -1476395, 4393215,
+7338489, -249645, 5827734, 8520678, 3418257, 6695854, 9914395, 5541045, -4452271, -1231582,
+1755568, 2089502, -464393, -4675609, 1519882, 2254858, 672162, 5072893, -1351841, 8231842,
+4155918, -4068408, 8487392, -1738388, 725850, -5950677, -27174258, -3922379, 18653042, 10456098,
+-30447024, -40096740, 4557497, 27181238, 10944114, 16608639, -9509058, 12829067, 2088965, 337692,
+-14612552, -5203353, -22721988, 33647312, 11200201, -27302034, -18818400, 12243341, 1216550, 6760816,
+-8260833, 16807818, 9714679, 11583527, 21929030, 19542638, 3925063, 19112604, -10135586, 10994579,
+-153008, 13358959, 6011344, -3141769, -8127152, 9245454, -12020540, 31448824, -8541616, -5866926,
+6325950, 15587510, 15228880, -10315438, 26920318, 26872000, 15465640, 6566468, 2130304, -8531416,
+-20479478, -34745748, -5779952, 12483322, -871342, 15259482, 16403554, 17816598, 6048388, 9975598,
+57727580, -28337658, -12548821, 5840082, 11053098, -1354525, -45290968, 10709501, -7149510, 6883222,
+7883413, 20130512, 3889093, 456877, -18283676, 18955838, -6868727, 2838974, 16377247, 7618735,
+-17727478, -3681861, -10014790, -3249143, -7716983, 1366873, 576599, 7225209, -1816234, 8788577,
+8378945, 11363410, -228170, 37581, -6937983, -2933463, -9248675, -6025839, -2838437, 12084964,
+3708704, -1742683, 693637, -4541391, 1612223, 10627897, 11652246, -2199560, -10978473, -52613,
+550293, 5235029, -3113315, 3670050, -5272073, 8125542, -15315853, 1701344, -4776541, -5206574,
+-110059, 3181497, -9907416, 4902705, -1969243, 4859756, -5122286, -8972187, 3365644, 15103789,
+14874009, -8262444, -11212549, 3281355, -10773925, -34467648, 35560720, -10430328, 9980967, 3251290,
+29826938, 23751706, 14938433, -14283987, -2370822, 20367808, 10818486, 23980414, 64035280, -4016331,
+-25259240, -6633040, 19137300, -2912525, -29829084, 45507864, 23601920, -16121160, -24972550, -3136400,
+5593121, -7993471, 18093624, 15316927, 17755394, 33952252, 5695127, 9545565, 6081674, -13241384,
+-31660352, 18548354, -21541408, -16254304, 24998320, 13029857, 14105209, 7326141, 5158793, -1505386,
+-31253940, -27829778, 531502, 16524350, -20654498, 19502910, -9152038, -23263154, 7331509, 20262582,
+-3738769, 3834332, 20226612, 19827180, 20695836, 1438814, -12588549, 11696270, 49145164, 5835250,
+20004884, 27969364, 1404454, -8987756, -24648818, -10074920, -38863548, -13435195, -9698036, -4896800,
+8883066, 1412507, -1725503, -11282342, -7321846, -6597607, 9656697, -10109816, -1950989, -8934069,
+2925947, -5716065, -9532143, 268435, -13740674, -4978404, 292058, -12577812, -2298881, -10976326,
+-6210523, 1076426, -19859928, -2055142, 996969, -352724, 9475772, -12813498, -4112431, 13459354,
+330712, -5497022, -523449, -4720706, 2684892, -5990943, -4351876, 6615324, -400506, 302258,
+-10672457, 17734456, 14541686, 98247, -12157442, -17811766, -31265214, 5257577, 18748606, 25761750,
+-22424024, -23875186, 28662464, 12732431, -1429687, -3205656, -12303471, 5245229, -5894843, -12805982,
+12977244, 15916612, 10899016, 807991, -2662880, -9324911, 1639067, 6530498, 3805341, -10498511,
+-36461052, 7796977, -8536784, -11117523, 1691680, -4943508, 2710124, -36293012, 16472810, 12901008,
+-26263726, 17886928, 23779086, 19906100, -5741298, 3117610, -3555696, 12889734, -3306051, -337155,
+64063732, -19600620, 5019743, -17526688, -10359461, 36106716, 12967580, 12160663, 22924388, -29873108,
+-24858734, 36309116, -23491860, 18406620, 22742388, 1951526, 5813238, 8530342, 41132900, -14354854,
+-16194174, -38325068, -8508330, -16651051, 12540768, -24079198, 39960376, 21684754, 24269250, 11874511,
+21165598, 11033771, 38124276, 9217000, 18156438, 13880261, -19276886, -9312563, -7679402, 3106872,
+1828046, 18596134, 7856569, -272194, -1251446, 4044786, 1387811, -7589744, -14785962, -7953206,
+-11195906, 13355738, -5166846, -8021389, 4018479, -3267933, 16427176, 7505456, -3369939, 9171366,
+-11196980, 4930623, 8076149, -3321084, 15887621, 16358457, 10719701, -8060580, 13349832, 7641284,
+-13948980, -2873870, 1009854, -8463233, 519691, 11605539, -14044006, -16027207, 6539625, 2858301,
+-1929514, 14907295, -10647224, 26356604, -15699716, 13799730, 45004816, 22192632, 16873316, -25592100,
+6884296, 24917790, -21778706, 35394824, 12563316, 18794776, 16869020, -11283953, 17489644, 14942191,
+6211597, 35070556, 26617522, -2352568, -60740500, -7421167, 27943058, 26814018, 27715424, 6358162,
+15400142, 1045825, 7677791, -2340757, -18903224, 38436736, -1155346, 36603860, 16505559, 26318486,
+-37420440, 24959666, 12491912, 11042898, -9885941, 8445516, -7049652, 8043400, 37034968, 14457934,
+48359720, 2050847, 10638097, 27965606, -5784247, 44152800, 21872658, 3558381, -29518236, -18764176,
+16184511, 1527398, -4947803, 638340, -5055714, 3158949, -21490942, 14020384, -22874996, -34382824,
+-12749074, -2238752, -11372537, -9109089, 28860570, -3779034, 26294326, -25354266, 28900298, 3540664,
+-31923418, 31303332, 26467736, -10238665, -4409858, 7214472, 13940390, 8571144, -1264868, -14853071,
+9230422, -6609418, -834834, 17907330, -3629247, -3343632, -14650133, -4294431, 4212289, 2506114,
+-849330, 13373991, 12314208, -9947144, 3461744, -580357, 698469, 12270185, 4066797, -14114336,
+9489730, -12125766, 6212670, -9877888, -3557844, -3377992, -1877438, 1253594, 2942590, 1317481,
+1040993, -3093450, 2648384, -6979322, 4932233, 4884989, -748935, -5791227, 4428648, -1598265,
+7259032, -4215511, -2838974, -9907416, 49392, -9802189, 2735894, -8174934, -26835492, -25633976,
+-10226317, -10992432, 21060372, -33607584, -41972568, -45594836, -55173148, 24924768, 27270894, -1363115,
+-4332012, 51540, -13046500, 3435437, 6977175, -11425687, 37751152, 35714264, 23265300, 25624312,
+-23286776, 15784542, 1351304, 18755048, -7226283, -9255655, -34489660, 31182536, -31168578, -37525668,
+-9898289, -7650948, 40605696, -21998286, 5475547, -20741470, -5873368, 39434780, 7262253, 12697534,
+19368692, 36256504, 2202245, -3689377, -43910672, -7759932, -3542811, -898722, 24019068, 13285408,
+81702088, 4457103, -2572149, -26740466, -2232309, 32873142, 29746944, -2299418, -14433774, -39992052,
+10016937, 25968446, -13176423, -29043642, -12564927, 25614648, -7786776, 18920942, -58613956, -32313724,
+-46881180, -12221329, 18682034, 10422275, -20490752, -19002010, -23019414, 9652402, 48085916, 15061377,
+-339302, -16627429, -1524713, -12839268, -3788161, 6194954, 5543729, -14840723, -7096897, -864899,
+10288594, -25558814, -17921288, -5567888, 12630962, -1253594, 16669305, 5935645, 1788317, -5345087,
+-3121368, -11183021, -2705830, -17124572, -4163971, 20001126, 6745783, 9426916, -13807783, -23871428,
+11860552, 12084964, -7348152, 594853, -10361072, -1270237, 2780455, -703838, 8869644, 6316823,
+5692979, 12275017, 6149857, 9838159, 9606231, -1319092, 7639673, 4940823, 7391102, 1028108,
+974958, -7493108, -17147656, -9284109, 38961260, 502511, -564251, 69577936, 6173479, -52925272,
+-40817760, 48548164, 43017856, 1982127, -35507568, -43927852, -25520696, 7810398, 41829760, 37194952,
+24671366, -16269336, 4257923, -16338592, 13166222, 31553514, 49100604, 53692460, -7544110, -29788282,
+-46672872, -69393784, -1434519, 35943508, 148089936, -20109036, -8658117, -72577432, -30464740, 5410048,
+16464757, 87914224, 63194000, 38834556, -45712948, -26132192, -44678936, -3295314, 73482592, 67915784,
+82915952, -23762980, -83034600, -60622388, -83832392, 20118164, 75577464, 66357244, 122959008, -59761248,
+-72546296, -63690608, -11209328, 53978612, 72197328, 101204464, 45437532, -22145388, -40375912, 8663486,
+-3747359, 28272696, 80843632, -18671834, 49967112, -18829136, -47652664, -50466, 6602976, 43435004,
+1371705, -4844186, 3477850, -12302397, -41315436, 16198469, -6327024, 13099650, -12213813, -34143916,
+-8835285, -8619462, 3029026, 21449604, 2355790, -7152195, 7786776, -8850317, -11152419, -2697240,
+31594316, 7471096, 28950228, -2911451, 2639258, -9236864, 3115462, 2676302, 5245229, 22195854,
+38927436, -1913945, -11475079, -37085968, -48740364, 1157494, 2135673, 57339960, 36692980, 5558225,
+-20871394, -82568064, -46816756, -7783018, 36295696, 71694816, 36848136, -22648974, -27771258, -85564336,
+-32265404, 39723616, 73784320, 59448788, 3158949, -39122320, -44204876, -5039071, -2310156, 34473556,
+20503100, 18569828, 464393, -18114562, -10634876, -867583, -8346732, 10545218, 11232950, -6197101,
+-36202816, 47808892, -10914586, 56429428, -51686172, 770947, -22523346, -53636088, 39473972, -28079422,
+36541580, -28712394, -11057393, -2415919, 18844706, 4367982, -20554102, -10821707, -829466, 29341070,
+-27041650, 33636036, 24040542, -18030810, 4228396, -22683870, -22994182, 39157216, -38394324, -19151260,
+25879862, 59716152, -415538, 8278550, -5453535, -25819732, -7289633, 24519432, -8428336, -39065412,
+5542656, -8351027, -6679748, 12105902, -35869420, 18307298, -148713, 12628278, 27576912, -62209380,
+-46295988, -15062450, -1462973, 64590940, -34189012, 23587424, 50485192, -27471148, -16501801, -1458141,
+27329950, 40269076, -21956410, 11866995, -8160438, 16146930, 62124016, -22781580, -70293584, 15269146,
+31993212, 8708583, -37646464, 23756538, 9662066, 23857470, -7510824, -676457, -26368952, -20416128,
+15237470, 4319664, -28111634, 8611409, 19088446, -8935679, -352187, -30540976, 4321274, -7259569,
+-34280820, -725313, 14994805, 13683229, 5245766, -438087, 8179765, -22784264, -6015639, 8736500,
+-11561515, 18376554, -11173894, -4041027, -10591926, 547608, -11275900, 17633526, 2800856, -12986907,
+-11915313, -6979, -821949, 28776818, -10196252, 10567230, -5473936, 29528, 5796059, -11615739,
+-11166915, 2447058, -24264418, -6029597, 6606734, -19722490, 555661, -3163780, -7449621, 4993973,
+12863964, 621697, 1518271, -7373385, -4748087, -72331008, -22880902, 31184684, 42675868, 35436164,
+-36015448, 11604465, -100738456, -65499324, -55613920, -8797704, 47310676, 30447560, -2026688, -22102976,
+-27278948, 13429289, -16653199, -1650341, 36195836, 9893457, 1788317, -35692252, -17112224, -3587372,
+-16822314, 10974178, -2883534, 19428822, -4977867, -150324, -6244346, -1110249, -4509716, -20368882,
+-15338939, -34217468, -24073828, 17532056, 33645164, 36564668, 20448340, 31868658, -4714801, 27120570,
+-6193880, -12361990, -42633456, -1606855, -23483808, 18353468, 7155953, 54140748, -43528956, 15556372,
+30484604, -16671989, -23054848, -13419088, -10661183, -11057930, 4088809, 38460896, 24863028, -10206453,
+-1266479, 27614492, -31745714, -35240744, 14747844, -40910636, -31341450, -27452894, 3615826, 13326747,
+16086800, 47546360, 32479616, -5116380, 24230594, -13798119, 1169842, 5971615, 18016314, 28865402,
+31363462, 21961778, 18408230, 14666240, 1474784, -39897024, -11070278, -20594368, -4927938, 23329188,
+-769336, 3548717, -8450348, -17762910, 2230162, -8774618, -7001334, -19353122, 8807904, 14532022,
+-6194417, 5601711, 13143674, 7081328, 8673150, 1464047, 8549132, -5731097, 5976984, -2715493,
+-9874130, 7745437, 10056666, -8037495, -11391327, 989453, -7586523, -13699872, 10872710, 11288248,
+4770635, 14552423, -966368, -13556527, -16328392, 23159000, -9245454, -86307368, -127586832, -156639072,
+-123756264, -184650304, -32617056, -67411656, 20483772, 38822208, 133734544, 78127064, 138536320, 140867952,
+192839200, 140769696, 143104016, 105419976, 4572530, -30490510, -55767464, -34280280, -115110496, -78654808,
+-62636192, -64014340, -63341104, -63219236, -61358976, -66215512, -72668696, -54158464, -84501872, -69092064,
+-60207388, -27007828, -70999032, -21901112, 26184804, -52735220, -25451976, 14255533, 11640972, -44635984,
+37302864, 47924856, 60673392, 82284056, 83635896, -6500433, 49751828, 80886048, 114770656, 90471336,
+180754240, 169766640, 149949664, 121518584, 153840896, 76409616, 122494080, 149097104, 114839376, 73462728,
+124544928, 40452148, 41875396, 76536856, 76781128, 54542328, 15852187, 44595720, -14775224, 2711735,
+39039104, -44336948, -111518824, -166684464, -65842384, -228228656, -199635984, -175569136, -203042976, -225897568,
+-189345776, -163884144, -158103120, -108952584, -143297824, -73540040, -90969016, -96690992, -146673136, -118504592,
+-85458040, -69969312, -59240484, -55510840, -34786012, 13907104, -102542, -3287798, 41375032, 86380920,
+72036800, 72976328, 116295904, 99461776, 103333688, 131209640, 123719216, 105299176, 100138240, 120137216,
+102278200, 99191192, 105231528, 109214040, 92870080, 81237696, 74721696, 69875360, 91282552, 71633616,
+53712860, 56191056, 41994580, 24545202, -14550812, -30216168, -39633960, -70972184, -60789356, -62906240,
+-74956840, -79199736, -72963976, -47556024, -53443352, -48326972, -49255220, -25448754, -28331752, -33957624,
+-23489176, -7790534, -8927626, -16285979, -10781442, 183610, -6806450, -9193377, -8538932, -3248606,
+-5095979, -7385733, -5835250, 3609383, 5513128, 1544578, -3471944, 149250, 4469987, 1070521,
+-3996467, -734439, 1762010, 949188, -1082332, 1695438, 1512365, 2489471, 2152852, 118112,
+74088, 2058363, 2199560, 4771172, 2962454, -974958, -3105798, 1211181, 2410551, -1263794,
+-2437931, -1414118, -3338800, -2516851, -2779918, -4188130, -3579855, -3551938, -4393752, -2779918,
+184147, 2433099, 1624035, 3780645, 5678484, 5562520, 4446365, 6312528, 8870181, 8296803,
+7861938, 9255655, 9115531, 10865730, 9685688, 8902930, 10469520, 10480257, 7837779, 4392141,
+4481799, 3311420, 125091, -1080184, -2151779, -3193845, -4639102, -5245229, -5329518, -5064840,
+-5197984, -4807142, -4381941, -4062502, -3435974, -3059091, -2345052, -1722819, -1393717, -1169842,
+-885837, -612570, -547071, -446140, -383863, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
};
-const Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][2955] ={
+const Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955] ={
{
{
5294084,
-2538326, -3474629, 5252208, -3056406, -1127966, 133681, -1877975, -1990717, -4176856, 1038845,
-6187438, 693100, 1060320, 2706903, 584116, -2163590, -748935, -1264868, -1388885, 3839701,
-979253, 550293, -1351304, 752156, -217433, -1385664, -2418067, 3723200, 2762738, 577136,
--842350, 4309463, -5984500, -2153926, 2461553, -2401424, 5037997, 574452, 3537979, 515933,
-354872, 2382633, -2103460, -798327, -131533, -4832, -1655710, -1222455, 2188286, -60130,
--5524939, 5177583, -782221, 924492, -4676683, 2245194, -2105071, 1868848, 77309, -106837,
--1795833, -126165, -2731062, 2806761, -5251135, -534723, 3732864, -2956011, 1352915, 5713380,
-1661616, 619549, -2879776, 350040, 1449015, -1017370, 1831267, -1140314, -881542, -1546725,
-1650878, -1812476, -3036005, 995359, 437550, -697395, 3586298, -876710, -848256, -841814,
-1151588, 1376000, -154082, 193810, 600222, -682363, 593779, -1360431, -639950, -185757,
--353798, -713501, -85899, 1074, -216359, -401579, -93952, -716723, 343061, -339839,
-817654, -532039, 593242, 935229, 555661, 10934450, 2017561, -1526861, 3339874, -1648194,
--1367947, -1745904, -711891, -4099546, 5811091, 3362423, 2509335, 2706903, 2570538, -2687039,
--3627100, 4898410, -1048509, -3787624, -7222525, 1190780, -2135673, 2276333, 49392, -604517,
--1612760, 2283312, -2672007, -1342714, 3576634, 6794639, 1773285, 3097745, 594853, 3423089,
--700080, 3642132, 2297808, 422517, 2038499, 193274, 605054, 200790, 4967667, 1064615,
-1314260, -1105417, 744640, -336081, -682900, 4039417, 4617090, -1639604, -1683627, 945430,
-4250944, -6881612, -348966, -1855963, -5093295, -2059437, 724239, -2158221, 2284386, 1859184,
-166967, -3093450, 1464584, -642635, -2962454, 3842385, -5257040, -2471217, -5607617, -2761664,
--781147, 860067, 5692443, -2429341, -1460289, 1778653, -876710, -1324997, 2706903, -419833,
--91268, -1201517, -1882269, -2333241, -608812, 2032056, 819802, 1002338, 951872, 739808,
-93952, -306553, -122943, 190052, 1438814, 719407, 769336, -453656, 141197, 518080,
-426812, 32749, 117038, 37581, -81604, -161061, -962610, -725850, -486405, 582505,
-486942, -185757, 922881, 3372623, 1386738, -6590091, -694174, 1054415, 4669167, -1360431,
--8325257, 6721087, -7870528, 480499, -3472481, -2638721, -8342437, -5436892, -3291556, -2022930,
-3346853, 1219234, -5513665, 836445, -2976949, 106300, -252866, 2309619, 398358, -2317135,
-328565, 645319, 1278290, -1620813, -1224603, -442919, -2758980, -4035659, 5486284, 2633352,
-690953, -704912, 4664335, 4145180, -4723927, 1363652, 383326, -832150, -2779381, 672162,
--4879620, 1138166, -979789, -3880503, 4795868, 135828, -441845, 6135361, -5349919, 4836670,
-1701881, -660351, -3982509, 1188095, -632971, -4089883, -3517041, 79457, -1578937, -1811403,
--5789616, 311385, 1151051, 2726767, -1731946, 2538863, 686658, -968515, -870805, -3337727,
-2847563, 639950, 353261, -5575405, 2870112, -453119, 323196, -2863133, 12885, -5120675,
-548682, 1139777, 616328, -411780, 427886, -68719, -41876, -867047, 201327, -238371,
-1053878, 678068, 389768, 1076426, -66035, 384936, 970663, 658741, -812823, -271657,
-1588064, -567473, 246424, -551903, 539018, -1896765, -564788, -565325, 699543, -325881,
--12291123, -11610370, 4491462, 7709467, 4645007, -10456098, 7444789, -2517388, -965831, 675921,
--4862440, -3665755, 8787503, -105764, -25233, 686121, -219043, 2890513, -4385699, 2676302,
--2326799, 2401424, 4019553, -2649995, -731755, 2353642, -678605, 4220342, -1315334, 1846299,
-358093, -405874, 345745, -3557307, -4983773, 4723391, 608812, -882079, 35433, -4642860,
--5813775, -137439, 106837, 3049964, -5404143, -4577899, -986232, -9569187, 3721589, -730144,
-1954210, -710817, -2312840, 1494649, 12291123, 6851010, 3566434, -3656628, 4843650, -27380,
--6314139, 46708, -6589554, 5629092, 772557, 690953, -3753265, 64961, 3833795, 1432909,
-768799, 510027, 431644, 4146254, 2873870, 558883, 2800856, 1692754, 2238215, 6055904,
-2507187, 2995203, -2786897, 2295123, 1695438, -690416, 4757213, 1472100, -4832, -396211,
-1427540, 2556579, 319438, -537, -926639, 638340, 2096481, 1181653, -462246, 236223,
--1698660, 522375, 445603, -732829, 181999, -75162, -16643, 1197759, -208306, 1249299,
-1691680, 635118, -963683, -1859184, 331249, -1160178, 933082, 854699, -1177895, 525060,
--2746095, -17623324, -1351841, -4232154, -627065, -2937758, -10013179, -417149, -2700998, -4115116,
--9388262, -1148367, 6646999, -4645007, 4368519, -768262, 6163278, -2085207, 5005248, -1646583,
--4980015, -1326608, 521839, -2173254, -4479114, -3583613, -4403415, 147640, -4019553, 1465658,
-460635, 405338, 1882806, -3009698, -4049617, 5828271, -544387, 1730872, 47245, -4569845,
--2914135, -3225521, 143345, -2315524, 4047470, 4129611, 667867, -5600101, -1849520, 10304700,
-2550137, -4358318, -3481071, -2207076, -3833795, -2019172, 8036421, 4897874, -5858336, 3574487,
-4734665, 7008313, -1822677, 2847027, -444529, 59056, -2851858, -5840619, -1069984, 4302484,
-429497, 8336532, 5905043, 390842, 1923609, 7029251, -5616207, -2573759, -1665911, -3457986,
-2467459, 1083406, 1125281, -3032784, 2042794, -2206003, 2265595, -4310000, -212601, -406411,
--1699196, -114354, -380105, 2102923, 567473, 463320, -1854352, -1258962, -604517, -1749662,
--83215, -2518998, -1467805, 88047, -203474, 1547262, -1073742, 411780, -523449, 833224,
-607201, 2143189, -1792612, 22574348, 15197205, -4696547, -823560, 33823, -586800, -2606508,
-3185792, 7715909, 6561637, 3371549, -11825656, -5288716, 1555852, 670015, 5070209, -8943196,
-1836635, 12083890, 8178155, -1406065, 2936147, -1079111, -4051228, -5594732, 346819, -4768488,
--2738042, 1378148, 3794067, -3498251, -6452115, -3097208, 1153736, 5947456, 8360691, -1596117,
--8761733, -1873680, -3107409, -8841727, -491774, -277025, -4197794, 1451162, 2420214, 5152350,
--7365332, 3017752, 3862249, 825171, -7120519, -5328981, 2483565, 306553, 1903207, -787590,
--656593, -254477, -3925600, 1951526, 2119030, -2778307, 5018133, 5876589, 8089034, 1926293,
-649614, 7572564, 12399571, 1969243, 1738925, 2102387, 7312719, 820339, 4348118, 12192338,
-3669513, 2244657, 388695, -2305324, -10370199, 1392643, -226560, -1694365, -1942399, 1280974,
--1393180, 2575370, 1198833, -1379758, -705985, -353261, 2156611, 1337882, -526134, -405874,
-1486059, 3098282, 78920, -776315, 1138703, 119185, -1390496, -2880849, 2149094, -2712272,
-1713155, 1147830, 2071785, -134218, -276489, 43487, 716723, -3783329, 169114, 553514,
--298500, 439697, 11954505, 202400, 2539936, 2832531, 5797669, -2296197, 3714610, -3150359,
--1909650, -9857487, 3972845, 6637335, -6000070, 5024038, -2445984, -8643085, 9006010, 5253282,
--1529545, 5312875, 10536629, 7291244, -5338645, -3061775, 5343476, 1626182, -1128503, 4023311,
-3795141, 5398774, 409096, -2422899, -4605279, -8334384, -207232, -6924561, 912681, -2281702,
-3911642, -5513665, -12526809, 2732136, -3058017, 5775121, 1531156, 419833, -3419331, -7454453,
--6158446, -622770, -570694, -5629092, 7944616, 10159208, 10648298, 4245039, -7510287, -699006,
-10093173, 933619, -1661616, 4637491, -1244467, -2557116, -9450002, 5213554, 2825552, 13764833,
-6444062, -9401147, 3214783, 3493956, -924492, -201327, 3416647, -2309082, 835908, -4044786,
--9802189, 8893804, 1700807, 5290863, 2645700, -4679367, 7621420, -1702418, 1869385, 382789,
--1600949, 264141, 300648, 577136, 4021163, 1285806, 824097, 318364, -1280437, -1610613,
--1994476, -1241246, 1432372, -674310, -33286, -807454, 1318555, -1175210, -534187, 102005,
--81068, 513785, -2106682, 2514167, -994822, 2211371, 805306, -1177895, -1366337, 3128884,
--2801929, 2510409, -627065, -3639448, -6136972, -1626182, -1588064, -10528575, 499827, 1314797,
-5251135, -1976759, -4576825, 1910187, 544387, 2512019, 49929, 5745593, 2267743, 3971234,
-640487, -431644, 3370476, 2002529, -10425496, -3202972, -14889041, 678605, -2808372, 1720134,
-2592013, 201327, 7056632, 1807644, 10091563, 1245004, -12091944, 243739, -4893042, -1997160,
--618475, -1813013, -666794, -9558987, 2030446, -4607426, 11457362, -11955578, 6577743, -2607582,
--10257456, -1922535, -7230041, -1559610, -2240899, -10873783, 3059091, 3307662, -2047626, -1816771,
--753230, 3820910, -8686571, 196495, 8024073, 1469953, 11186242, 18347026, 7524783, -16668231,
--22276384, 10742787, 4755603, 16554951, -3507915, 7926362, 1627793, 7869991, 10994043, 14217415,
--7654706, 4072703, 10528575, -8725763, 1536525, -1158567, -1173600, 753767, 7489886, -1200980,
-2501819, -4954782, 1687922, -3833795, -4081293, -1815161, -3426310, 494458, -2059974, -5660230,
--304406, 3657702, 2214056, -1104344, -1139240, -897648, -22549, 1663226, 1712081, -1517197,
--2294050, -1039382, 3109556, -862752, 3006477, 417149, 342524, -872415, 637266, 841277,
-141734, 777389, 27380, -2739652, -2709051, -1769527, 697932, 2581812, -3905736, -2607582,
--1327145, 1462436, -1913945, -1530082, -20474646, 15324443, 2649995, -2547989, -442382, -9075266,
--7693897, 8050380, -2280091, -2463164, 8064338, -5996311, -6735583, 476741, 8012262, 3585224,
--2798171, 345208, -4840428, -532039, 478352, 4475893, 25770, -10300942, -10500658, 2408403,
--1557999, 2570538, -1211181, 4227859, 7846369, 15040439, -419833, 9351754, -2473901, 2682744,
-6209986, -6174553, 12026982, -1708323, -7795366, -10689100, -2253784, -8866423, -11435350, -3076807,
-4964982, -3446175, -8936753, 4376572, 6000070, 9731859, 12331388, -10229001, 3678103, -2849174,
--9644886, 3531537, -10757819, -1940788, -17423072, 6857452, -5367099, 2535105, -3338263, 2695629,
--18726594, -18440442, -11431055, -4346507, 9970767, -9937481, 19150722, -6872485, 1672353, -1837172,
-3357591, -1804423, -13995151, 1952600, 1336272, 3708704, 2917894, 1566053, 5046050, -3100430,
--4989679, -34360, -66035, -4644471, 1799054, -5965710, 3052648, 1912871, 2415919, -941672,
--287763, -1882806, -4860829, -3400540, -2176475, -2149631, 2723546, -2139431, -5826123, 1805497,
-2039036, -1123134, 3416647, -427886, -1430761, -141197, 551903, -1731946, -1908039, 1857037,
-2370822, 1892470, 571768, -4156455, -3219078, -1020055, -3537979, 1023813, -60666, -201863,
--4974646, -2498060, -1000727, 1029718, -43487, -3867081, -805306, -96637, -3048890, 17433810,
-731218, 6748468, 4251481, 2077690, 9735617, 1649268, -14278619, 7017977, 1740536, 6712497,
--906238, -10107132, 14573898, 8292508, 5826660, -1140314, -4773320, 2173254, -1353989, -7968238,
-5059472, 3980361, -4849555, 6223408, 9174587, 506806, 3285113, 9657234, -10509248, 2707977,
--3720516, 4468914, -19528680, 6128919, 8995809, -2990371, 2195802, 9529996, 4693863, 389231,
-2797098, -9402757, 2210298, -5438503, 161061, 3027952, 1255741, -4170413, 18175764, -3089692,
--3768297, -4089346, -16363825, -6315213, -10131291, -11215233, -2471217, 16068010, 17135846, -1510218,
-5107253, 7164543, -14810121, -4505958, 11545409, 9948755, -6044630, -3890704, -14590004, -4472672,
--5687074, -6724845, -8346732, 2330557, -14878840, 2580202, 13449690, 19340238, 5633924, -5470178,
--660351, 10335839, -3823595, -6751152, 407485, -722628, -3306588, -4480188, 421444, -315680,
-2007897, 3196530, 1499481, -1496259, 623844, 1777580, 1005022, -113817, -3061238, -5975374,
-1488206, -227633, -2762201, 4801237, 1198296, 2758443, -2866354, 4098473, -3052111, -1995012,
--3402688, 3277597, 367220, 2457258, 4358855, -256087, -2633889, -1140314, 2060511, 1178969,
--454193, 261456, 386547, 802085, -518617, -793495, 2098629, 3286187, 8127152, 3955665,
--1531156, -5450314, 3411815, 862215, -7165616, -10698764, -11438035, -4617090, -11185705, -4699768,
--4527433, 137976, -10646687, 2344515, 4501663, 454193, -12161200, 3742527, -15091978, 4622459,
-8436926, 194884, 13107166, 351114, -3894999, -2439542, 8838506, -3228205, 12162274, 4280472,
--4209605, -4218195, 2139431, -6251325, -3353296, 408559, 11496017, -435402, 6072010, 3408057,
-1034550, 8020852, -3629784, -7450695, 3268470, -5352066, -2473364, -14510547, 8126615, -5135707,
--4291746, -2988760, -15957951, 19004694, 4922570, -2335389, 8278550, 2651069, 4015258, -8509404,
--12719546, -14509473, -7002408, 679679, -14621679, 5366562, 10537702, -16441672, -6012418, 5921150,
--7573638, 3866544, 18140868, 494458, -2991982, -4924717, 4057134, -9981504, 6415608, 3394635,
--8979166, 2825552, 6280316, -3706020, -10628433, -9141838, -4795331, -448824, 2821794, 2352032,
-1903744, -1957968, -2720862, -1434519, 2251100, 537, -1579474, -6102075, -7210177, -2081985,
-395137, -5225902, -6198712, -4357781, -2667175, -2476586, -5458367, -4766340, -2596308, -3484292,
--6947110, 1027571, 6291054, -814970, -728534, -2743410, -2071785, 1960116, -2544231, 306553,
--5525476, 12348, -1707786, -3086471, -162135, -2911988, 1523103, 2309619, -2424509, 3590056,
--2820183, -1250372, -2914672, -426276, 256087, 5172215, 11348377, 29120416, 30107184, 9424769,
-18599356, -12650826, -13251048, -2786897, -2142115, 1343251, 4060892, 9928891, 17203492, 5958731,
-15908559, 2029372, 4672388, 2643016, -4655208, 7597261, -390842, 3171297, 1050656, -7974681,
--1212255, -4171487, -9089761, -5312875, -48855, 1116155, -11989401, -4635344, 14681809, 10937671,
-7543573, 12814572, -7987566, 303869, -21799644, 1224603, 18376018, -3404835, -3874597, 2445984,
--2169495, 14738717, -1329829, -2210298, 11024107, -13151727, -21825414, -8519068, 1764695, -11436424,
-8441221, 12256226, -17219598, -6253473, -22012, -115964, -24634322, -15384036, 7684234, 3583613,
--1988033, 8075613, -10835129, -6357089, -15265924, 3789235, 4707284, 1448478, 901943, -9849971,
--16807818, 13975824, -22800908, 6809134, -8440148, 21824876, 2118493, 9206799, -6298570, -8362838,
-6156299, 3105261, 9580998, -9055402, -1785096, 6754373, -546535, -4938676, -4882841, -4852776,
-376883, 5230197, 5459977, -6051609, -2691871, -840740, -8382166, -2773475, 1416266, -738198,
-637803, -4172024, -7361037, -865973, 105227, 5869610, 1689533, -3360812, 4328790, 920734,
-2169495, -7854422, 1572495, -4624069, 3740380, 874026, 3966402, 6613713, 1934883, -4359392,
--9090835, 2997887, 2978023, -28127204, -20318954, 14090714, -2976412, 25578140, -6272800, 21067352,
--16956530, 561567, 7504919, -1621887, 860604, 2520609, -1363652, -12635257, 4404489, 4826470,
-5506148, 6375879, -3950833, 10481868, -9525701, -6944962, -5466957, 14722611, -8147553, -2675765,
-1264331, -252866, -7668127, 6595459, -8550743, -10062035, -19122806, 1794223, 3441343, -12896176,
--6097780, 6293738, -2677375, 3389266, 978716, 15116137, 990527, 11391327, 4996658, 544924,
-9023726, 2121177, 3085934, -17024176, 17531520, 6289980, 13721884, -8317741, 3596498, -9108552,
-14235669, 10910291, 17380658, 2843268, -4635344, -12619151, -855772, 2298881, -10861972, 15396921,
-2404108, 2449205, 16441672, 3760244, -5018670, -6526740, -608812, 9882720, 11775190, -3784403,
-14701673, -17609366, -18596134, -8035347, 4231080, -5575405, 8001524, -1941325, 4259534, 14228153,
--708670, 7100655, -5973226, -5312338, 6107981, -467078, 9844602, -2988760, -148176, -2967286,
--6217502, 1324997, -3695819, -1351304, 4000762, 1475858, -5665062, -5021354, 2887829, 7603166,
-7703024, -699006, 6290517, 7024419, -9822053, 4628364, 9091372, 7324530, 3973382, -7164543,
--8904541, -9075803, -9357123, -9079024, 654983, -3100967, -1404454, 1145146, -6883759, 4909685,
-4228396, -3368328, 5050345, 1956358, 2314451, -6316823, 5252745, 12986370, -30633318, -1399623,
-15949361, -10207527, -3418794, 11747809, -12771085, -25919054, 5129802, 4382478, 3990025, -3401614,
--15348603, 3841312, 4322348, 1126355, 8471286, -27485644, 12559558, -6413997, 6514392, -15684147,
-12682502, -19839528, -12692165, 7637526, -5239860, -2355790, -15105937, 11768747, 15502684, -100395,
-1670742, -7222525, 23277112, 5724655, 6294812, -4308389, -20273856, -4414153, 11080479, -2105608,
-16617765, 64961, -6134824, 3951370, -1253057, 10392210, -20075214, -2498060, -15420543, 16490527,
--6267968, 5468567, -562104, -682900, -18215494, -6456410, 15809775, 4986994, 1316944, -4894652,
-360240, 1930588, -23329188, -24143084, 25479894, -11469710, -27916214, 11201812, 13012677, -22490596,
--29405494, -20547660, -19754166, 3368865, 7650411, -2571075, -19001472, -734976, -10242423, -4878009,
--13824963, -892816, 1218160, 1242856, -2891050, 12811351, -7196755, 4953708, -6139656, -437013,
-3373697, -3441343, -685584, -7803419, 9926743, -2510945, 3359738, -5765994, -8378408, -1852205,
-3765613, 4382478, 1220845, -8134668, 4518843, -1305133, -6620155, 6097780, -9917079, -2100239,
--6222871, 9562208, -4507032, -10963441, 4466766, -4451734, -4890894, -14515379, -996969, 3032784,
-11775727, 4734128, -7350300, -3826279, 930934, -2118493, -4045322, 2019708, -825171, -2945811,
--2974265, -1147293, 11783780, -16585553, -9580998, -17351132, -1839857, 3799436, -23800562, 3972845,
--11749957, 32993402, 1510218, -29324962, -6999723, 14496051, 8536784, 7161858, 14654428, 15123117,
--21512418, -5259725, -8451422, 20146080, -7231115, 23490786, -238908, -13303661, -10936060, -20684026,
--24107652, 1577864, 2580202, -3755412, -12517682, -5097053, 1413581, 3933116, 8011725, -11551851,
-5748277, -13612362, -16357383, 3292093, -3634079, -4177393, -17045114, -15867220, -7875897, -4815195,
-22736484, 2240899, 7529078, 12992276, -561030, 28921772, 11513734, -9487583, 1329829, 14940581,
--5948530, 18884434, -5085778, 2457795, 1153199, -25391846, -26229902, 3949759, 18100066, 481036,
--5822365, -28424630, 1701344, 9827422, 5990406, -9701794, -8096014, -5588826, 3358665, -12237436,
-30158186, 17156784, 18446884, 3762928, -21500070, 7851200, 9635222, 30230128, 6837051, 3155190,
-11995307, 5244692, -5034239, 346282, 9168145, -791348, 1154273, 3071439, -7761543, -5299453,
-8918500, 322659, -7392713, 9562208, -5990943, -2119566, -4611721, -4315906, 8346195, -5388574,
--2536178, 4536023, -9190156, 3885335, -920197, -5140002, 11041824, -3956739, -86973, -14144938,
-8589935, -4282083, -3784403, -9102646, -13088376, 2113661, -5324149, 9208947, -373662, 5485210,
-3425237, 257698, -5489505, 200253, 8207146, -41876, -14249091, -12852690, 27230630, -8389145,
--10176388, -1370095, -7587597, -18519362, 338766, 12933757, -31958314, -476741, 8223789, 10253698,
--10930692, 7301982, -18314814, 1474784, -4761508, 5784784, -16404628, 10253698, -27899034, 4635881,
-723702, 15850577, 14804752, 7458211, -10441602, 11668352, -3428458, 13026636, -14139032, 2302103,
-16485695, 13165685, -7784628, 2764885, 387621, -3586298, 7987029, -3040300, -9640591, -10641855,
-7618735, -19285476, 12770548, 3064996, -20781736, 19640348, 18708878, 17696876, 6342593, -9077950,
-22650046, 2801929, 9726490, -13838921, -12087112, -13262322, 4133369, 5249524, 8114267, -18634790,
-1811403, 13841069, -35929548, 1424319, -11800960, 22592602, 14520211, 11382737, -3179350, 15001247,
--14088030, -667867, -9808095, -21531744, -903554, -19822348, -16639240, 9812927, 26552562, -24879134,
--5913096, -4488778, 26658862, -6519224, 11667279, -7571491, -4665945, -952409, 9440338, -5504538,
--2311766, 838056, 6438156, 4799626, 3393561, -3483219, 991601, 2851322, 13218836, -10377715,
-11034845, -2328946, 8078834, 84289, 2162516, 2876554, 5094905, -6841346, -1542967, -1270237,
--8564702, -7606387, -7596187, 5355824, 4274566, -1496796, -3395709, -4355097, -5983427, -3654480,
-527744, -2602750, -36507, 8020852, -158377, -14479408, 6859600, -8443369, -1267015, 6205691,
--2373506, 24075976, 4817880, 12357695, -34540128, 16193637, -19452980, 26235808, -2880313, 10408853,
-19347218, -20878910, 37514928, 27428734, 20173998, -8981313, 5251135, 26218090, -6755984, -8032126,
--6293738, -1071058, -19822884, 5476084, -10658498, -23460186, 22758494, 7894150, 6087043, 3165391,
-5100811, 9185324, 23973970, 5366025, -15316927, -1011465, -15884400, 3376918, 2044941, -27268210,
--1388348, 15272904, 878858, -1696512, -8619462, 29554206, 5823439, 12744242, 6238440, -15533823,
--11502459, -8364986, 17988396, 11016591, -3849901, 11316165, -1829119, -19667728, 19145354, 2630131,
-21976810, 2729452, 2079838, 716186, -29642254, 4290136, 580357, 3535832, 18104360, -6959995,
-28606630, -43498892, -7975218, 32927904, -13422310, 11080479, -15106474, -23023710, -18971944, 13804025,
--13030931, 12890271, -20368882, -4035659, 3197603, -4684199, -8128226, -2268280, -2572149, 9083856,
-20082730, 2427194, 11837467, -3649112, -2219424, 15078556, -2348810, -3937411, 3898757, -7107634,
-6381248, 13169980, -8801462, -1028108, -3549791, 2649995, 2224793, 6405407, 22713398, -3866008,
-7876433, 708670, 5312338, 8623221, 3986804, 1586454, 12559021, 14090714, -4041564, -1636383,
-5505611, 3296388, 4739497, -17439714, -1662152, 17162690, -3968550, 3809099, 6423124, -630823,
-17476222, 6051072, -35367980, -42494408, -3671123, -19964082, 2765422, 11987254, -16901234, 4865124,
--25855166, 11187853, -14212047, -70972720, -4499515, 43148852, -18577882, -8108899, 43509092, -10291279,
-2400350, 51958904, -12401181, 11413876, 4920959, -7700340, 41970420, -33853468, -4310000, -1021665,
--5893232, -6893960, -6867116, -940598, 13693966, -7785702, -22835268, 156766, 492848, 6657200,
-8372502, 1410897, 18855444, -823560, 8690329, -5242008, -22670448, 15716359, -2764885, -23469848,
-915365, 13373454, 41306848, 20783346, 34724812, 625455, 8557185, 16464220, 3922379, -2131378,
-32453310, -1816771, -12641162, 37880536, 6635725, 6606197, 269509, -5468030, 21697102, -117038,
--12634183, -14362371, -2963528, -2932926, 32846300, -22405234, 2859375, 4116189, -5865852, 38477000,
-296353, -24805046, 4114579, 12492986, -18168248, -988916, 18441516, 15128485, -9366787, 1345399,
--10584947, 8783208, -2889439, 1100585, -10426570, 9524627, 67646, -1177358, -15138686, 6118718,
-5086852, -9951439, 705448, 3447248, -5152887, -3473555, 11573326, 1697586, 6416145, -4402879,
-3332358, 20061792, -18413062, -8477729, -6103149, 21701396, 8039642, 11429445, -13285944, -12172474,
--5004174, -1574642, -16103443, -18087718, 21430276, 8580271, -12753369, -11904576, -7322383, -250719,
--12659953, -11115912, 47245, 3205119, 8053064, -2232846, -4130148, 6560026, -1720671, 2057826,
-24157044, 19389092, -39687644, -19478750, 30592516, -5669894, -29731374, -319438, 663036, 10741713,
-32350230, 28685012, -17646410, 5274757, -3971771, 212064, -258235, -18644454, 28067612, -8361228,
--18335752, 6500970, -13152264, 15887084, 1431835, 22609782, -6941204, -21518324, -19381040, 17125108,
--8223252, 22306450, -5961952, 14439680, -14654965, -11449309, -6950868, 1573032, -18402862, 4496294,
-1012002, 278636, 18061412, -230854, 6059662, -12542378, 8973797, -19779936, 21194590, -19027242,
-12615393, 6376953, 17825188, -29766270, 1059246, 2494839, -8949101, -21506512, -36374616, -6100464,
--31031138, -11954505, -24822764, -11587285, -45403708, -14124537, 20674362, 26122528, 14269492, 15213311,
--2403034, 16530792, -32328756, -7388955, 5082020, 20936892, 5829881, -44518408, -1697049, -19553912,
--12973486, 52110300, 35067336, -24656870, -9983651, -17299054, 5873905, -45858976, 2892124, 9629317,
--13048111, -13565117, 8426189, 2742337, 522375, -8748312, -7655779, -7477001, -7566659, 14405857,
-13234942, -854162, -3590593, -14038637, -16121160, -3347927, -3963181, 5565741, 14116484, -27251568,
--1968706, 13811004, 52613, 17648020, -6003291, -16648367, 9182103, 19083076, 9693741, -11227045,
-1518808, 17689896, -22189948, -15728170, 29731912, 1808181, -879395, -2820720, 4833986, 7023882,
-9139154, -3510062, -7055558, -8283382, -52170432, 15090904, 8403640, -27776090, 11055783, 10031433,
--19832012, -15577310, 23704462, 2708514, 12703976, -6543920, 15721191, -5170067, -2294050, 12030203,
-6086506, 3794604, 498753, -8501888, -14063870, -8895414, 22404160, -8075613, -19146964, 32571958,
-20418274, 2361695, 15113990, 4206921, -16806744, -50337552, 20657182, -1910724, -26940182, 22490596,
--2274185, -36760624, -30590904, -16209207, 24097988, 9380745, 24970402, 31071404, 9474698, -25551834,
-8126615, 8857833, -32113470, -5448703, 18276696, -10307922, -35006668, -26890254, -42700028, -27542552,
--6078990, 26805964, 39276404, 18624052, -2483028, 26721676, -6624450, -66376036, -52327196, 11267310,
--26310432, -31592706, 45035952, 5690295, -60327112, -46961708, 16069620, 2549600, 10459319, 22232898,
-54244364, 30802968, -4424890, 60029148, 19348828, -63471564, 700617, -13719199, 32830730, 9578851,
--20612622, 9920838, -15436112, -9489730, -13408351, 20318954, -3652870, 14792404, 12763569, 16039018,
--3487514, -16565689, -5143224, 10997801, -6878927, 9208947, 6247030, 6570763, -14015552, 1466731,
-5891085, 59056, 25636122, -1098438, 11476153, 2274722, -4063039, 13390097, 3439195, -2257005,
-15298674, -7468412, -2158221, 9043054, 3959423, -1665911, -5993090, -8815957, 1124208, -10092636,
--7181722, 5061619, 7434589, -7795903, 49400712, 48193828, -15229417, 16869558, -19812684, 12176232,
-564251, 7101729, -23592792, 2005750, -20167018, -17775796, 99858, -41248328, 951872, -17477832,
-4544613, 12302397, -384936, 14229227, -20403242, 30963492, -15302968, -426276, 21268678, -19963008,
-7792145, 15508590, 18865644, 2837900, 6781754, 4793184, -29773250, -16440598, -4840428, 4487167,
-4556424, -4327180, 19679540, -6267431, -300111, -3674882, -8562017, 7056095, 3898757, -23428510,
-6896644, -18814642, 5150740, -45315664, -2224256, -1058173, -126702, 18610094, -7507066, -16478716,
--7424925, 17099338, -87510, -43803836, 61351996, -5299453, -11776263, 13443785, -2717104, -8968429,
--11547556, -12159589, -13201119, 42168524, -16326781, -24327768, 20822002, 2101313, -33279018, -7778723,
-13837848, 11113228, -11010149, 22771380, -4061429, -6168110, 20946556, -15405511, -14270566, 26626650,
--11822971, -4138201, -1515587, 11319923, 5370857, -212064, -1940252, 724239, 4950487, -5392332,
--493921, 5270462, 5438503, 6669011, -16387448, 4274030, 8133058, -15782931, 1245541, 3391951,
--2914135, -6343667, 6300180, 1893544, -5834176, 995359, -650151, -2594160, -20084878, 11429445,
--11933567, 3663607, 3265786, -17988934, -1127429, 970663, -232465, -166967, -6231998, -799938,
-4992900, -641024, -39080980, -57623428, -55455008, 122781304, 101855688, 116037672, 262088032, 68655592,
--65648040, 20816096, -210177984, -222760096, -55123756, -139942384, -108257872, 66411468, -34378528, 13975287,
-167072080, 83068424, 123875448, 237941728, 158567504, 41640244, 34587372, -69844760, -216312272, -165144176,
--126436856, -255467344, -103314904, 6411313, -45091252, -20077898, 129559296, 34613140, 17584132, 160551776,
-20074140, 38659536, 227867872, 167700224, 106213464, 215572992, 107469744, -37389300, -2970507, -67716064,
--334947328, -292135616, -236071808, -366940000, -279588960, -98735392, -132268352, 30363808, 255468416, 228307040,
-315713920, 398616992, 296617408, 231549744, 225137360, 124840744, -41691784, -79621176, -182415312, -260505872,
--255969856, -221628896, -254082752, -259896528, -208974848, -116569168, -84466976, 32179506, 200041328, 288338880,
-411251712, 462615744, 276290944, 67536752, -39064876, -277811360, -264469056, -201281488, -156429696, -57802744,
-29885994, 22371948, 28801514, 36064304, 17029008, 42369316, 59176060, 44150652, 71372152, 40873056,
--17703318, -21584896, -62223876, -113985208, -31006980, -35326108, -40931040, 36417564, 31215286, -38414188,
--49750216, -92739616, -151871648, -63468344, 87251184, 148390576, 287313440, 346670432, 235777600, 146572736,
-39529268, -129344016, -189536912, -214430000, -250881920, -235670224, -180812752, -146375168, -121126664, -73237248,
--18156438, 63735704, 219578048, 306405120, 272004032, 195751728, 121012848, 26828514, -46658376, -71418864,
--90714544, -64438468, -16832514, -2421288, -18158584, -30495342, -49466748, -79549776, -103589240, -99981472,
--100369088, -58452356, 10364830, 38043208, 69184408, 90896544, 91934848, 71729712, 48964776, 28124520,
-15826418, 22891102, 31132070, 31839666, 28161026, 16952236, -6439230, -37280852, -62181464, -76198088,
--77845744, -62555124, -49427556, -39984536, -20632486, 5682779, 22249004, 28858422, 33149094, 35403416,
-42133628, 46341088, 41539848, 23870892, 10438918, 3092913, -6102612, -8810589, -5403069, -8459475,
--4842576, 1653026, -2673617, -11917461, -14500883, -23751170, -33704220, -32192928, -28791314, -21981642,
--3300146, 12139725, 19881404, 28233504, 32287416, 23257248, 17863842, 9987410, 2796561, 2595234,
-9167608, 8540542, 7665443, 4325032, -5967320, -13225815, -20402168, -27709518, -27945742, -21998822,
--11977053, -1756642, 9164386, 16327318, 19455664, 15980500, 10468983, 4713190, 1666447, 667331,
-505196, -666794, -1643362, -2986076, -3389266, -3277597, -2282775, -1489280, -335544, 37044,
-511638, 29528, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+2538326, -3474629, 5252208, -3056406, -1127966, 133681, -1877975, -1990717, -4176856, 1038845,
+6187438, 693100, 1060320, 2706903, 584116, -2163590, -748935, -1264868, -1388885, 3839701,
+979253, 550293, -1351304, 752156, -217433, -1385664, -2418067, 3723200, 2762738, 577136,
+-842350, 4309463, -5984500, -2153926, 2461553, -2401424, 5037997, 574452, 3537979, 515933,
+354872, 2382633, -2103460, -798327, -131533, -4832, -1655710, -1222455, 2188286, -60130,
+-5524939, 5177583, -782221, 924492, -4676683, 2245194, -2105071, 1868848, 77309, -106837,
+-1795833, -126165, -2731062, 2806761, -5251135, -534723, 3732864, -2956011, 1352915, 5713380,
+1661616, 619549, -2879776, 350040, 1449015, -1017370, 1831267, -1140314, -881542, -1546725,
+1650878, -1812476, -3036005, 995359, 437550, -697395, 3586298, -876710, -848256, -841814,
+1151588, 1376000, -154082, 193810, 600222, -682363, 593779, -1360431, -639950, -185757,
+-353798, -713501, -85899, 1074, -216359, -401579, -93952, -716723, 343061, -339839,
+817654, -532039, 593242, 935229, 555661, 10934450, 2017561, -1526861, 3339874, -1648194,
+-1367947, -1745904, -711891, -4099546, 5811091, 3362423, 2509335, 2706903, 2570538, -2687039,
+-3627100, 4898410, -1048509, -3787624, -7222525, 1190780, -2135673, 2276333, 49392, -604517,
+-1612760, 2283312, -2672007, -1342714, 3576634, 6794639, 1773285, 3097745, 594853, 3423089,
+-700080, 3642132, 2297808, 422517, 2038499, 193274, 605054, 200790, 4967667, 1064615,
+1314260, -1105417, 744640, -336081, -682900, 4039417, 4617090, -1639604, -1683627, 945430,
+4250944, -6881612, -348966, -1855963, -5093295, -2059437, 724239, -2158221, 2284386, 1859184,
+166967, -3093450, 1464584, -642635, -2962454, 3842385, -5257040, -2471217, -5607617, -2761664,
+-781147, 860067, 5692443, -2429341, -1460289, 1778653, -876710, -1324997, 2706903, -419833,
+-91268, -1201517, -1882269, -2333241, -608812, 2032056, 819802, 1002338, 951872, 739808,
+93952, -306553, -122943, 190052, 1438814, 719407, 769336, -453656, 141197, 518080,
+426812, 32749, 117038, 37581, -81604, -161061, -962610, -725850, -486405, 582505,
+486942, -185757, 922881, 3372623, 1386738, -6590091, -694174, 1054415, 4669167, -1360431,
+-8325257, 6721087, -7870528, 480499, -3472481, -2638721, -8342437, -5436892, -3291556, -2022930,
+3346853, 1219234, -5513665, 836445, -2976949, 106300, -252866, 2309619, 398358, -2317135,
+328565, 645319, 1278290, -1620813, -1224603, -442919, -2758980, -4035659, 5486284, 2633352,
+690953, -704912, 4664335, 4145180, -4723927, 1363652, 383326, -832150, -2779381, 672162,
+-4879620, 1138166, -979789, -3880503, 4795868, 135828, -441845, 6135361, -5349919, 4836670,
+1701881, -660351, -3982509, 1188095, -632971, -4089883, -3517041, 79457, -1578937, -1811403,
+-5789616, 311385, 1151051, 2726767, -1731946, 2538863, 686658, -968515, -870805, -3337727,
+2847563, 639950, 353261, -5575405, 2870112, -453119, 323196, -2863133, 12885, -5120675,
+548682, 1139777, 616328, -411780, 427886, -68719, -41876, -867047, 201327, -238371,
+1053878, 678068, 389768, 1076426, -66035, 384936, 970663, 658741, -812823, -271657,
+1588064, -567473, 246424, -551903, 539018, -1896765, -564788, -565325, 699543, -325881,
+-12291123, -11610370, 4491462, 7709467, 4645007, -10456098, 7444789, -2517388, -965831, 675921,
+-4862440, -3665755, 8787503, -105764, -25233, 686121, -219043, 2890513, -4385699, 2676302,
+-2326799, 2401424, 4019553, -2649995, -731755, 2353642, -678605, 4220342, -1315334, 1846299,
+358093, -405874, 345745, -3557307, -4983773, 4723391, 608812, -882079, 35433, -4642860,
+-5813775, -137439, 106837, 3049964, -5404143, -4577899, -986232, -9569187, 3721589, -730144,
+1954210, -710817, -2312840, 1494649, 12291123, 6851010, 3566434, -3656628, 4843650, -27380,
+-6314139, 46708, -6589554, 5629092, 772557, 690953, -3753265, 64961, 3833795, 1432909,
+768799, 510027, 431644, 4146254, 2873870, 558883, 2800856, 1692754, 2238215, 6055904,
+2507187, 2995203, -2786897, 2295123, 1695438, -690416, 4757213, 1472100, -4832, -396211,
+1427540, 2556579, 319438, -537, -926639, 638340, 2096481, 1181653, -462246, 236223,
+-1698660, 522375, 445603, -732829, 181999, -75162, -16643, 1197759, -208306, 1249299,
+1691680, 635118, -963683, -1859184, 331249, -1160178, 933082, 854699, -1177895, 525060,
+-2746095, -17623324, -1351841, -4232154, -627065, -2937758, -10013179, -417149, -2700998, -4115116,
+-9388262, -1148367, 6646999, -4645007, 4368519, -768262, 6163278, -2085207, 5005248, -1646583,
+-4980015, -1326608, 521839, -2173254, -4479114, -3583613, -4403415, 147640, -4019553, 1465658,
+460635, 405338, 1882806, -3009698, -4049617, 5828271, -544387, 1730872, 47245, -4569845,
+-2914135, -3225521, 143345, -2315524, 4047470, 4129611, 667867, -5600101, -1849520, 10304700,
+2550137, -4358318, -3481071, -2207076, -3833795, -2019172, 8036421, 4897874, -5858336, 3574487,
+4734665, 7008313, -1822677, 2847027, -444529, 59056, -2851858, -5840619, -1069984, 4302484,
+429497, 8336532, 5905043, 390842, 1923609, 7029251, -5616207, -2573759, -1665911, -3457986,
+2467459, 1083406, 1125281, -3032784, 2042794, -2206003, 2265595, -4310000, -212601, -406411,
+-1699196, -114354, -380105, 2102923, 567473, 463320, -1854352, -1258962, -604517, -1749662,
+-83215, -2518998, -1467805, 88047, -203474, 1547262, -1073742, 411780, -523449, 833224,
+607201, 2143189, -1792612, 22574348, 15197205, -4696547, -823560, 33823, -586800, -2606508,
+3185792, 7715909, 6561637, 3371549, -11825656, -5288716, 1555852, 670015, 5070209, -8943196,
+1836635, 12083890, 8178155, -1406065, 2936147, -1079111, -4051228, -5594732, 346819, -4768488,
+-2738042, 1378148, 3794067, -3498251, -6452115, -3097208, 1153736, 5947456, 8360691, -1596117,
+-8761733, -1873680, -3107409, -8841727, -491774, -277025, -4197794, 1451162, 2420214, 5152350,
+-7365332, 3017752, 3862249, 825171, -7120519, -5328981, 2483565, 306553, 1903207, -787590,
+-656593, -254477, -3925600, 1951526, 2119030, -2778307, 5018133, 5876589, 8089034, 1926293,
+649614, 7572564, 12399571, 1969243, 1738925, 2102387, 7312719, 820339, 4348118, 12192338,
+3669513, 2244657, 388695, -2305324, -10370199, 1392643, -226560, -1694365, -1942399, 1280974,
+-1393180, 2575370, 1198833, -1379758, -705985, -353261, 2156611, 1337882, -526134, -405874,
+1486059, 3098282, 78920, -776315, 1138703, 119185, -1390496, -2880849, 2149094, -2712272,
+1713155, 1147830, 2071785, -134218, -276489, 43487, 716723, -3783329, 169114, 553514,
+-298500, 439697, 11954505, 202400, 2539936, 2832531, 5797669, -2296197, 3714610, -3150359,
+-1909650, -9857487, 3972845, 6637335, -6000070, 5024038, -2445984, -8643085, 9006010, 5253282,
+-1529545, 5312875, 10536629, 7291244, -5338645, -3061775, 5343476, 1626182, -1128503, 4023311,
+3795141, 5398774, 409096, -2422899, -4605279, -8334384, -207232, -6924561, 912681, -2281702,
+3911642, -5513665, -12526809, 2732136, -3058017, 5775121, 1531156, 419833, -3419331, -7454453,
+-6158446, -622770, -570694, -5629092, 7944616, 10159208, 10648298, 4245039, -7510287, -699006,
+10093173, 933619, -1661616, 4637491, -1244467, -2557116, -9450002, 5213554, 2825552, 13764833,
+6444062, -9401147, 3214783, 3493956, -924492, -201327, 3416647, -2309082, 835908, -4044786,
+-9802189, 8893804, 1700807, 5290863, 2645700, -4679367, 7621420, -1702418, 1869385, 382789,
+-1600949, 264141, 300648, 577136, 4021163, 1285806, 824097, 318364, -1280437, -1610613,
+-1994476, -1241246, 1432372, -674310, -33286, -807454, 1318555, -1175210, -534187, 102005,
+-81068, 513785, -2106682, 2514167, -994822, 2211371, 805306, -1177895, -1366337, 3128884,
+-2801929, 2510409, -627065, -3639448, -6136972, -1626182, -1588064, -10528575, 499827, 1314797,
+5251135, -1976759, -4576825, 1910187, 544387, 2512019, 49929, 5745593, 2267743, 3971234,
+640487, -431644, 3370476, 2002529, -10425496, -3202972, -14889041, 678605, -2808372, 1720134,
+2592013, 201327, 7056632, 1807644, 10091563, 1245004, -12091944, 243739, -4893042, -1997160,
+-618475, -1813013, -666794, -9558987, 2030446, -4607426, 11457362, -11955578, 6577743, -2607582,
+-10257456, -1922535, -7230041, -1559610, -2240899, -10873783, 3059091, 3307662, -2047626, -1816771,
+-753230, 3820910, -8686571, 196495, 8024073, 1469953, 11186242, 18347026, 7524783, -16668231,
+-22276384, 10742787, 4755603, 16554951, -3507915, 7926362, 1627793, 7869991, 10994043, 14217415,
+-7654706, 4072703, 10528575, -8725763, 1536525, -1158567, -1173600, 753767, 7489886, -1200980,
+2501819, -4954782, 1687922, -3833795, -4081293, -1815161, -3426310, 494458, -2059974, -5660230,
+-304406, 3657702, 2214056, -1104344, -1139240, -897648, -22549, 1663226, 1712081, -1517197,
+-2294050, -1039382, 3109556, -862752, 3006477, 417149, 342524, -872415, 637266, 841277,
+141734, 777389, 27380, -2739652, -2709051, -1769527, 697932, 2581812, -3905736, -2607582,
+-1327145, 1462436, -1913945, -1530082, -20474646, 15324443, 2649995, -2547989, -442382, -9075266,
+-7693897, 8050380, -2280091, -2463164, 8064338, -5996311, -6735583, 476741, 8012262, 3585224,
+-2798171, 345208, -4840428, -532039, 478352, 4475893, 25770, -10300942, -10500658, 2408403,
+-1557999, 2570538, -1211181, 4227859, 7846369, 15040439, -419833, 9351754, -2473901, 2682744,
+6209986, -6174553, 12026982, -1708323, -7795366, -10689100, -2253784, -8866423, -11435350, -3076807,
+4964982, -3446175, -8936753, 4376572, 6000070, 9731859, 12331388, -10229001, 3678103, -2849174,
+-9644886, 3531537, -10757819, -1940788, -17423072, 6857452, -5367099, 2535105, -3338263, 2695629,
+-18726594, -18440442, -11431055, -4346507, 9970767, -9937481, 19150722, -6872485, 1672353, -1837172,
+3357591, -1804423, -13995151, 1952600, 1336272, 3708704, 2917894, 1566053, 5046050, -3100430,
+-4989679, -34360, -66035, -4644471, 1799054, -5965710, 3052648, 1912871, 2415919, -941672,
+-287763, -1882806, -4860829, -3400540, -2176475, -2149631, 2723546, -2139431, -5826123, 1805497,
+2039036, -1123134, 3416647, -427886, -1430761, -141197, 551903, -1731946, -1908039, 1857037,
+2370822, 1892470, 571768, -4156455, -3219078, -1020055, -3537979, 1023813, -60666, -201863,
+-4974646, -2498060, -1000727, 1029718, -43487, -3867081, -805306, -96637, -3048890, 17433810,
+731218, 6748468, 4251481, 2077690, 9735617, 1649268, -14278619, 7017977, 1740536, 6712497,
+-906238, -10107132, 14573898, 8292508, 5826660, -1140314, -4773320, 2173254, -1353989, -7968238,
+5059472, 3980361, -4849555, 6223408, 9174587, 506806, 3285113, 9657234, -10509248, 2707977,
+-3720516, 4468914, -19528680, 6128919, 8995809, -2990371, 2195802, 9529996, 4693863, 389231,
+2797098, -9402757, 2210298, -5438503, 161061, 3027952, 1255741, -4170413, 18175764, -3089692,
+-3768297, -4089346, -16363825, -6315213, -10131291, -11215233, -2471217, 16068010, 17135846, -1510218,
+5107253, 7164543, -14810121, -4505958, 11545409, 9948755, -6044630, -3890704, -14590004, -4472672,
+-5687074, -6724845, -8346732, 2330557, -14878840, 2580202, 13449690, 19340238, 5633924, -5470178,
+-660351, 10335839, -3823595, -6751152, 407485, -722628, -3306588, -4480188, 421444, -315680,
+2007897, 3196530, 1499481, -1496259, 623844, 1777580, 1005022, -113817, -3061238, -5975374,
+1488206, -227633, -2762201, 4801237, 1198296, 2758443, -2866354, 4098473, -3052111, -1995012,
+-3402688, 3277597, 367220, 2457258, 4358855, -256087, -2633889, -1140314, 2060511, 1178969,
+-454193, 261456, 386547, 802085, -518617, -793495, 2098629, 3286187, 8127152, 3955665,
+-1531156, -5450314, 3411815, 862215, -7165616, -10698764, -11438035, -4617090, -11185705, -4699768,
+-4527433, 137976, -10646687, 2344515, 4501663, 454193, -12161200, 3742527, -15091978, 4622459,
+8436926, 194884, 13107166, 351114, -3894999, -2439542, 8838506, -3228205, 12162274, 4280472,
+-4209605, -4218195, 2139431, -6251325, -3353296, 408559, 11496017, -435402, 6072010, 3408057,
+1034550, 8020852, -3629784, -7450695, 3268470, -5352066, -2473364, -14510547, 8126615, -5135707,
+-4291746, -2988760, -15957951, 19004694, 4922570, -2335389, 8278550, 2651069, 4015258, -8509404,
+-12719546, -14509473, -7002408, 679679, -14621679, 5366562, 10537702, -16441672, -6012418, 5921150,
+-7573638, 3866544, 18140868, 494458, -2991982, -4924717, 4057134, -9981504, 6415608, 3394635,
+-8979166, 2825552, 6280316, -3706020, -10628433, -9141838, -4795331, -448824, 2821794, 2352032,
+1903744, -1957968, -2720862, -1434519, 2251100, 537, -1579474, -6102075, -7210177, -2081985,
+395137, -5225902, -6198712, -4357781, -2667175, -2476586, -5458367, -4766340, -2596308, -3484292,
+-6947110, 1027571, 6291054, -814970, -728534, -2743410, -2071785, 1960116, -2544231, 306553,
+-5525476, 12348, -1707786, -3086471, -162135, -2911988, 1523103, 2309619, -2424509, 3590056,
+-2820183, -1250372, -2914672, -426276, 256087, 5172215, 11348377, 29120416, 30107184, 9424769,
+18599356, -12650826, -13251048, -2786897, -2142115, 1343251, 4060892, 9928891, 17203492, 5958731,
+15908559, 2029372, 4672388, 2643016, -4655208, 7597261, -390842, 3171297, 1050656, -7974681,
+-1212255, -4171487, -9089761, -5312875, -48855, 1116155, -11989401, -4635344, 14681809, 10937671,
+7543573, 12814572, -7987566, 303869, -21799644, 1224603, 18376018, -3404835, -3874597, 2445984,
+-2169495, 14738717, -1329829, -2210298, 11024107, -13151727, -21825414, -8519068, 1764695, -11436424,
+8441221, 12256226, -17219598, -6253473, -22012, -115964, -24634322, -15384036, 7684234, 3583613,
+-1988033, 8075613, -10835129, -6357089, -15265924, 3789235, 4707284, 1448478, 901943, -9849971,
+-16807818, 13975824, -22800908, 6809134, -8440148, 21824876, 2118493, 9206799, -6298570, -8362838,
+6156299, 3105261, 9580998, -9055402, -1785096, 6754373, -546535, -4938676, -4882841, -4852776,
+376883, 5230197, 5459977, -6051609, -2691871, -840740, -8382166, -2773475, 1416266, -738198,
+637803, -4172024, -7361037, -865973, 105227, 5869610, 1689533, -3360812, 4328790, 920734,
+2169495, -7854422, 1572495, -4624069, 3740380, 874026, 3966402, 6613713, 1934883, -4359392,
+-9090835, 2997887, 2978023, -28127204, -20318954, 14090714, -2976412, 25578140, -6272800, 21067352,
+-16956530, 561567, 7504919, -1621887, 860604, 2520609, -1363652, -12635257, 4404489, 4826470,
+5506148, 6375879, -3950833, 10481868, -9525701, -6944962, -5466957, 14722611, -8147553, -2675765,
+1264331, -252866, -7668127, 6595459, -8550743, -10062035, -19122806, 1794223, 3441343, -12896176,
+-6097780, 6293738, -2677375, 3389266, 978716, 15116137, 990527, 11391327, 4996658, 544924,
+9023726, 2121177, 3085934, -17024176, 17531520, 6289980, 13721884, -8317741, 3596498, -9108552,
+14235669, 10910291, 17380658, 2843268, -4635344, -12619151, -855772, 2298881, -10861972, 15396921,
+2404108, 2449205, 16441672, 3760244, -5018670, -6526740, -608812, 9882720, 11775190, -3784403,
+14701673, -17609366, -18596134, -8035347, 4231080, -5575405, 8001524, -1941325, 4259534, 14228153,
+-708670, 7100655, -5973226, -5312338, 6107981, -467078, 9844602, -2988760, -148176, -2967286,
+-6217502, 1324997, -3695819, -1351304, 4000762, 1475858, -5665062, -5021354, 2887829, 7603166,
+7703024, -699006, 6290517, 7024419, -9822053, 4628364, 9091372, 7324530, 3973382, -7164543,
+-8904541, -9075803, -9357123, -9079024, 654983, -3100967, -1404454, 1145146, -6883759, 4909685,
+4228396, -3368328, 5050345, 1956358, 2314451, -6316823, 5252745, 12986370, -30633318, -1399623,
+15949361, -10207527, -3418794, 11747809, -12771085, -25919054, 5129802, 4382478, 3990025, -3401614,
+-15348603, 3841312, 4322348, 1126355, 8471286, -27485644, 12559558, -6413997, 6514392, -15684147,
+12682502, -19839528, -12692165, 7637526, -5239860, -2355790, -15105937, 11768747, 15502684, -100395,
+1670742, -7222525, 23277112, 5724655, 6294812, -4308389, -20273856, -4414153, 11080479, -2105608,
+16617765, 64961, -6134824, 3951370, -1253057, 10392210, -20075214, -2498060, -15420543, 16490527,
+-6267968, 5468567, -562104, -682900, -18215494, -6456410, 15809775, 4986994, 1316944, -4894652,
+360240, 1930588, -23329188, -24143084, 25479894, -11469710, -27916214, 11201812, 13012677, -22490596,
+-29405494, -20547660, -19754166, 3368865, 7650411, -2571075, -19001472, -734976, -10242423, -4878009,
+-13824963, -892816, 1218160, 1242856, -2891050, 12811351, -7196755, 4953708, -6139656, -437013,
+3373697, -3441343, -685584, -7803419, 9926743, -2510945, 3359738, -5765994, -8378408, -1852205,
+3765613, 4382478, 1220845, -8134668, 4518843, -1305133, -6620155, 6097780, -9917079, -2100239,
+-6222871, 9562208, -4507032, -10963441, 4466766, -4451734, -4890894, -14515379, -996969, 3032784,
+11775727, 4734128, -7350300, -3826279, 930934, -2118493, -4045322, 2019708, -825171, -2945811,
+-2974265, -1147293, 11783780, -16585553, -9580998, -17351132, -1839857, 3799436, -23800562, 3972845,
+-11749957, 32993402, 1510218, -29324962, -6999723, 14496051, 8536784, 7161858, 14654428, 15123117,
+-21512418, -5259725, -8451422, 20146080, -7231115, 23490786, -238908, -13303661, -10936060, -20684026,
+-24107652, 1577864, 2580202, -3755412, -12517682, -5097053, 1413581, 3933116, 8011725, -11551851,
+5748277, -13612362, -16357383, 3292093, -3634079, -4177393, -17045114, -15867220, -7875897, -4815195,
+22736484, 2240899, 7529078, 12992276, -561030, 28921772, 11513734, -9487583, 1329829, 14940581,
+-5948530, 18884434, -5085778, 2457795, 1153199, -25391846, -26229902, 3949759, 18100066, 481036,
+-5822365, -28424630, 1701344, 9827422, 5990406, -9701794, -8096014, -5588826, 3358665, -12237436,
+30158186, 17156784, 18446884, 3762928, -21500070, 7851200, 9635222, 30230128, 6837051, 3155190,
+11995307, 5244692, -5034239, 346282, 9168145, -791348, 1154273, 3071439, -7761543, -5299453,
+8918500, 322659, -7392713, 9562208, -5990943, -2119566, -4611721, -4315906, 8346195, -5388574,
+-2536178, 4536023, -9190156, 3885335, -920197, -5140002, 11041824, -3956739, -86973, -14144938,
+8589935, -4282083, -3784403, -9102646, -13088376, 2113661, -5324149, 9208947, -373662, 5485210,
+3425237, 257698, -5489505, 200253, 8207146, -41876, -14249091, -12852690, 27230630, -8389145,
+-10176388, -1370095, -7587597, -18519362, 338766, 12933757, -31958314, -476741, 8223789, 10253698,
+-10930692, 7301982, -18314814, 1474784, -4761508, 5784784, -16404628, 10253698, -27899034, 4635881,
+723702, 15850577, 14804752, 7458211, -10441602, 11668352, -3428458, 13026636, -14139032, 2302103,
+16485695, 13165685, -7784628, 2764885, 387621, -3586298, 7987029, -3040300, -9640591, -10641855,
+7618735, -19285476, 12770548, 3064996, -20781736, 19640348, 18708878, 17696876, 6342593, -9077950,
+22650046, 2801929, 9726490, -13838921, -12087112, -13262322, 4133369, 5249524, 8114267, -18634790,
+1811403, 13841069, -35929548, 1424319, -11800960, 22592602, 14520211, 11382737, -3179350, 15001247,
+-14088030, -667867, -9808095, -21531744, -903554, -19822348, -16639240, 9812927, 26552562, -24879134,
+-5913096, -4488778, 26658862, -6519224, 11667279, -7571491, -4665945, -952409, 9440338, -5504538,
+-2311766, 838056, 6438156, 4799626, 3393561, -3483219, 991601, 2851322, 13218836, -10377715,
+11034845, -2328946, 8078834, 84289, 2162516, 2876554, 5094905, -6841346, -1542967, -1270237,
+-8564702, -7606387, -7596187, 5355824, 4274566, -1496796, -3395709, -4355097, -5983427, -3654480,
+527744, -2602750, -36507, 8020852, -158377, -14479408, 6859600, -8443369, -1267015, 6205691,
+-2373506, 24075976, 4817880, 12357695, -34540128, 16193637, -19452980, 26235808, -2880313, 10408853,
+19347218, -20878910, 37514928, 27428734, 20173998, -8981313, 5251135, 26218090, -6755984, -8032126,
+-6293738, -1071058, -19822884, 5476084, -10658498, -23460186, 22758494, 7894150, 6087043, 3165391,
+5100811, 9185324, 23973970, 5366025, -15316927, -1011465, -15884400, 3376918, 2044941, -27268210,
+-1388348, 15272904, 878858, -1696512, -8619462, 29554206, 5823439, 12744242, 6238440, -15533823,
+-11502459, -8364986, 17988396, 11016591, -3849901, 11316165, -1829119, -19667728, 19145354, 2630131,
+21976810, 2729452, 2079838, 716186, -29642254, 4290136, 580357, 3535832, 18104360, -6959995,
+28606630, -43498892, -7975218, 32927904, -13422310, 11080479, -15106474, -23023710, -18971944, 13804025,
+-13030931, 12890271, -20368882, -4035659, 3197603, -4684199, -8128226, -2268280, -2572149, 9083856,
+20082730, 2427194, 11837467, -3649112, -2219424, 15078556, -2348810, -3937411, 3898757, -7107634,
+6381248, 13169980, -8801462, -1028108, -3549791, 2649995, 2224793, 6405407, 22713398, -3866008,
+7876433, 708670, 5312338, 8623221, 3986804, 1586454, 12559021, 14090714, -4041564, -1636383,
+5505611, 3296388, 4739497, -17439714, -1662152, 17162690, -3968550, 3809099, 6423124, -630823,
+17476222, 6051072, -35367980, -42494408, -3671123, -19964082, 2765422, 11987254, -16901234, 4865124,
+-25855166, 11187853, -14212047, -70972720, -4499515, 43148852, -18577882, -8108899, 43509092, -10291279,
+2400350, 51958904, -12401181, 11413876, 4920959, -7700340, 41970420, -33853468, -4310000, -1021665,
+-5893232, -6893960, -6867116, -940598, 13693966, -7785702, -22835268, 156766, 492848, 6657200,
+8372502, 1410897, 18855444, -823560, 8690329, -5242008, -22670448, 15716359, -2764885, -23469848,
+915365, 13373454, 41306848, 20783346, 34724812, 625455, 8557185, 16464220, 3922379, -2131378,
+32453310, -1816771, -12641162, 37880536, 6635725, 6606197, 269509, -5468030, 21697102, -117038,
+-12634183, -14362371, -2963528, -2932926, 32846300, -22405234, 2859375, 4116189, -5865852, 38477000,
+296353, -24805046, 4114579, 12492986, -18168248, -988916, 18441516, 15128485, -9366787, 1345399,
+-10584947, 8783208, -2889439, 1100585, -10426570, 9524627, 67646, -1177358, -15138686, 6118718,
+5086852, -9951439, 705448, 3447248, -5152887, -3473555, 11573326, 1697586, 6416145, -4402879,
+3332358, 20061792, -18413062, -8477729, -6103149, 21701396, 8039642, 11429445, -13285944, -12172474,
+-5004174, -1574642, -16103443, -18087718, 21430276, 8580271, -12753369, -11904576, -7322383, -250719,
+-12659953, -11115912, 47245, 3205119, 8053064, -2232846, -4130148, 6560026, -1720671, 2057826,
+24157044, 19389092, -39687644, -19478750, 30592516, -5669894, -29731374, -319438, 663036, 10741713,
+32350230, 28685012, -17646410, 5274757, -3971771, 212064, -258235, -18644454, 28067612, -8361228,
+-18335752, 6500970, -13152264, 15887084, 1431835, 22609782, -6941204, -21518324, -19381040, 17125108,
+-8223252, 22306450, -5961952, 14439680, -14654965, -11449309, -6950868, 1573032, -18402862, 4496294,
+1012002, 278636, 18061412, -230854, 6059662, -12542378, 8973797, -19779936, 21194590, -19027242,
+12615393, 6376953, 17825188, -29766270, 1059246, 2494839, -8949101, -21506512, -36374616, -6100464,
+-31031138, -11954505, -24822764, -11587285, -45403708, -14124537, 20674362, 26122528, 14269492, 15213311,
+-2403034, 16530792, -32328756, -7388955, 5082020, 20936892, 5829881, -44518408, -1697049, -19553912,
+-12973486, 52110300, 35067336, -24656870, -9983651, -17299054, 5873905, -45858976, 2892124, 9629317,
+-13048111, -13565117, 8426189, 2742337, 522375, -8748312, -7655779, -7477001, -7566659, 14405857,
+13234942, -854162, -3590593, -14038637, -16121160, -3347927, -3963181, 5565741, 14116484, -27251568,
+-1968706, 13811004, 52613, 17648020, -6003291, -16648367, 9182103, 19083076, 9693741, -11227045,
+1518808, 17689896, -22189948, -15728170, 29731912, 1808181, -879395, -2820720, 4833986, 7023882,
+9139154, -3510062, -7055558, -8283382, -52170432, 15090904, 8403640, -27776090, 11055783, 10031433,
+-19832012, -15577310, 23704462, 2708514, 12703976, -6543920, 15721191, -5170067, -2294050, 12030203,
+6086506, 3794604, 498753, -8501888, -14063870, -8895414, 22404160, -8075613, -19146964, 32571958,
+20418274, 2361695, 15113990, 4206921, -16806744, -50337552, 20657182, -1910724, -26940182, 22490596,
+-2274185, -36760624, -30590904, -16209207, 24097988, 9380745, 24970402, 31071404, 9474698, -25551834,
+8126615, 8857833, -32113470, -5448703, 18276696, -10307922, -35006668, -26890254, -42700028, -27542552,
+-6078990, 26805964, 39276404, 18624052, -2483028, 26721676, -6624450, -66376036, -52327196, 11267310,
+-26310432, -31592706, 45035952, 5690295, -60327112, -46961708, 16069620, 2549600, 10459319, 22232898,
+54244364, 30802968, -4424890, 60029148, 19348828, -63471564, 700617, -13719199, 32830730, 9578851,
+-20612622, 9920838, -15436112, -9489730, -13408351, 20318954, -3652870, 14792404, 12763569, 16039018,
+-3487514, -16565689, -5143224, 10997801, -6878927, 9208947, 6247030, 6570763, -14015552, 1466731,
+5891085, 59056, 25636122, -1098438, 11476153, 2274722, -4063039, 13390097, 3439195, -2257005,
+15298674, -7468412, -2158221, 9043054, 3959423, -1665911, -5993090, -8815957, 1124208, -10092636,
+-7181722, 5061619, 7434589, -7795903, 49400712, 48193828, -15229417, 16869558, -19812684, 12176232,
+564251, 7101729, -23592792, 2005750, -20167018, -17775796, 99858, -41248328, 951872, -17477832,
+4544613, 12302397, -384936, 14229227, -20403242, 30963492, -15302968, -426276, 21268678, -19963008,
+7792145, 15508590, 18865644, 2837900, 6781754, 4793184, -29773250, -16440598, -4840428, 4487167,
+4556424, -4327180, 19679540, -6267431, -300111, -3674882, -8562017, 7056095, 3898757, -23428510,
+6896644, -18814642, 5150740, -45315664, -2224256, -1058173, -126702, 18610094, -7507066, -16478716,
+-7424925, 17099338, -87510, -43803836, 61351996, -5299453, -11776263, 13443785, -2717104, -8968429,
+-11547556, -12159589, -13201119, 42168524, -16326781, -24327768, 20822002, 2101313, -33279018, -7778723,
+13837848, 11113228, -11010149, 22771380, -4061429, -6168110, 20946556, -15405511, -14270566, 26626650,
+-11822971, -4138201, -1515587, 11319923, 5370857, -212064, -1940252, 724239, 4950487, -5392332,
+-493921, 5270462, 5438503, 6669011, -16387448, 4274030, 8133058, -15782931, 1245541, 3391951,
+-2914135, -6343667, 6300180, 1893544, -5834176, 995359, -650151, -2594160, -20084878, 11429445,
+-11933567, 3663607, 3265786, -17988934, -1127429, 970663, -232465, -166967, -6231998, -799938,
+4992900, -641024, -39080980, -57623428, -55455008, 122781304, 101855688, 116037672, 262088032, 68655592,
+-65648040, 20816096, -210177984, -222760096, -55123756, -139942384, -108257872, 66411468, -34378528, 13975287,
+167072080, 83068424, 123875448, 237941728, 158567504, 41640244, 34587372, -69844760, -216312272, -165144176,
+-126436856, -255467344, -103314904, 6411313, -45091252, -20077898, 129559296, 34613140, 17584132, 160551776,
+20074140, 38659536, 227867872, 167700224, 106213464, 215572992, 107469744, -37389300, -2970507, -67716064,
+-334947328, -292135616, -236071808, -366940000, -279588960, -98735392, -132268352, 30363808, 255468416, 228307040,
+315713920, 398616992, 296617408, 231549744, 225137360, 124840744, -41691784, -79621176, -182415312, -260505872,
+-255969856, -221628896, -254082752, -259896528, -208974848, -116569168, -84466976, 32179506, 200041328, 288338880,
+411251712, 462615744, 276290944, 67536752, -39064876, -277811360, -264469056, -201281488, -156429696, -57802744,
+29885994, 22371948, 28801514, 36064304, 17029008, 42369316, 59176060, 44150652, 71372152, 40873056,
+-17703318, -21584896, -62223876, -113985208, -31006980, -35326108, -40931040, 36417564, 31215286, -38414188,
+-49750216, -92739616, -151871648, -63468344, 87251184, 148390576, 287313440, 346670432, 235777600, 146572736,
+39529268, -129344016, -189536912, -214430000, -250881920, -235670224, -180812752, -146375168, -121126664, -73237248,
+-18156438, 63735704, 219578048, 306405120, 272004032, 195751728, 121012848, 26828514, -46658376, -71418864,
+-90714544, -64438468, -16832514, -2421288, -18158584, -30495342, -49466748, -79549776, -103589240, -99981472,
+-100369088, -58452356, 10364830, 38043208, 69184408, 90896544, 91934848, 71729712, 48964776, 28124520,
+15826418, 22891102, 31132070, 31839666, 28161026, 16952236, -6439230, -37280852, -62181464, -76198088,
+-77845744, -62555124, -49427556, -39984536, -20632486, 5682779, 22249004, 28858422, 33149094, 35403416,
+42133628, 46341088, 41539848, 23870892, 10438918, 3092913, -6102612, -8810589, -5403069, -8459475,
+-4842576, 1653026, -2673617, -11917461, -14500883, -23751170, -33704220, -32192928, -28791314, -21981642,
+-3300146, 12139725, 19881404, 28233504, 32287416, 23257248, 17863842, 9987410, 2796561, 2595234,
+9167608, 8540542, 7665443, 4325032, -5967320, -13225815, -20402168, -27709518, -27945742, -21998822,
+-11977053, -1756642, 9164386, 16327318, 19455664, 15980500, 10468983, 4713190, 1666447, 667331,
+505196, -666794, -1643362, -2986076, -3389266, -3277597, -2282775, -1489280, -335544, 37044,
+511638, 29528, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
8932458,
--1172526, 709207, 7030862, -908922, -324807, -2050847, 7669738, 445603, 3730179, 2262374,
-2258616, -3167539, 1592359, -4903779, -531502, 3795677, 772020, 2221035, 3579318, -6054830,
--4224637, 1436130, -299574, 4486630, 2735357, -237297, -2491618, -1571958, -3082713, -494995,
--410706, -466541, 854699, 1170379, -2682744, 4497368, -1033477, -705985, 1538672, -5740761,
--1323387, 2479807, 878321, 5658620, -21475, -417149, 1105954, 383326, 2357400, 3917547,
-4984847, -290447, -514322, 87510, -2867428, -3641596, 2009508, 3248606, -2281702, -2190433,
--1479079, 4144107, 2441689, -572304, 646393, -4889821, -1408212, 2539936, 2107218, 3613678,
--5255430, 1192390, 1988033, -1096290, 3707094, -239444, 3231426, 1537061, 1039382, 4098473,
-2034741, 1034013, 33286, 483184, -977642, 344134, 569620, -323196, -1456531, 719944,
-708670, -1078037, -150861, -727460, 761283, 1178969, 47782, -150324, -66572, -1093069,
-536334, -386010, 907849, 428960, 279173, 194884, -488553, 296353, 134218, 466541,
--868657, -413391, -192200, 119185, -1183264, 11647951, 3206193, -2667712, 5936719, -2886218,
-6178848, -2055142, -2819109, 3143379, 5777268, -177704, -2859375, 1542967, 1211718, -237297,
--8229694, 1927904, 2408403, 660351, 5137318, 6918656, 3711389, 6812892, 4629975, 4151086,
--1109712, 4610111, 2218888, -3495567, 1307281, 2129767, -4503810, -5716602, -880468, 2253247,
-87510, -2063195, -2767033, -2692408, -1337882, 3084324, 6179921, 5236639, 1975148, 4022237,
--6493991, 409633, -1658394, 63351, -7453379, 2763275, -718333, -1757179, -292058, -2022930,
--3685619, -2588792, 2611340, 625455, 2002529, -2716567, 5081483, 1306744, -5888937, 2432025,
-745177, 1636383, 3223373, 978716, 5917391, -1888175, 646929, -6912750, 1312649, 666257,
-195958, 163746, -1303523, 4917201, -1505923, -2285996, 3728569, -3864934, -1888175, -1596654,
--721018, -1802813, 1244467, 329102, 648540, -51003, -172872, 63351, -708133, 423054,
-644782, -250719, -304943, -34360, -1281511, -2087891, 766652, 253940, -1649804, -220117,
--185220, -360777, -1998234, 509491, -12885, -66035, 133144, 345745, 212601, -758599,
--32749, -1377611, -160524, 572304, -2352032, -2378875, -762357, 2155537, -3982509, 1155346,
--7871065, 1467268, 1493575, -928250, 5634997, 345745, -620086, 494458, 2987687, -4840965,
-696322, 1466731, 3090766, -6882148, -3472481, -2604898, 2526515, 1017370, -2149094, -6955163,
-1690607, -6918656, -415538, 2727304, -1271310, 2073932, -1185411, 4639102, 6907918, 3631932,
--3563212, 655519, 5237176, 3215857, -3225521, 2701535, 817654, -5396627, 1900523, 7383049,
-3477313, 2465848, 8259222, 725313, -3122978, -6329171, -267362, -3559454, -4242891, -2029372,
-4545149, -4322348, 1511292, -2586107, -2396592, 5272073, -684510, 861141, 4223564, 5727876,
--2542084, -5288716, 6717866, 5133023, 3294240, 296353, -4024384, 628139, 5310190, -5392869,
-1646046, -3519726, -108448, 3266323, -3071975, -188979, -5919539, -1580011, -513249, 884226,
--307627, -2259153, -259846, 1117228, -1742683, -469762, 819802, 661962, 515933, 471910,
--83752, -449361, -2331094, 1240172, -121333, 1278290, -898722, -1556926, 551903, 1211181,
--800475, 1067836, -179315, -89121, -91805, -259846, 1306207, -775778, 510564, -783295,
--15601469, -5712307, -2401961, 8535711, -3239479, -1284732, -5043366, -4269735, -728534, -11254962,
-6307697, 2081985, -319438, -4159676, 6209986, -1750736, 3154117, -2517925, 1992328, 3956739,
--4947266, 519691, 5459977, 3083250, 2199023, 5836324, 5223217, -3280281, -4179003, -5216775,
--86436, -6857452, 1636383, -9057012, -1733019, 6664716, 3506841, -2299955, -704912, -6815040,
-3093987, -2916283, 6004365, -3462818, -6162741, -1270237, -2539936, -5068062, 1961726, -1165010,
--3223373, -3289408, -10916733, 1487132, -3274376, -8094940, -2152852, 4983773, 2558727, -4189741,
-3456375, 4439386, 4292820, 1589138, -5581310, -936303, -1239635, 3860102, -3922916, -1513976,
-2035815, 2062121, -6109054, -7283191, -13066901, -2242510, -7589207, 2491081, -293668, -1819992,
-3842385, -819265, -1749125, 1668058, 2620467, 2509872, 1958505, 4540318, -1941862, -1609002,
--1228898, 659814, 228707, -1043140, 1253594, 1796370, -401579, 415001, -797253, -1043140,
--193274, -681289, 187905, 386547, 53150, -1156420, 177167, -783295, -296890, 642098,
-1465658, -662499, 1755568, 2129230, 336618, -630823, -1859184, -386547, 1249836, 820876,
--809064, -13579076, -5430986, -2433099, -4020626, 4620311, 6041945, 5694590, -11335492, -8465381,
-3263638, 13814225, 8170102, -5369, 1969779, 3936338, -4961224, 3278134, -4598836, 3325379,
-4911832, 759136, 3942243, 1230508, -270583, 2045478, 1217623, -3701188, -4684199, 6483253,
-2633889, -4729833, 4647692, -2578591, -471910, 11144366, -5310727, 6310918, 12463995, 5086852,
--702764, 483721, -4483946, 5828271, -5939940, -3248606, -9990094, 1888712, 7721815, -188979,
--7068443, -2517925, -10024991, -5091147, -1852205, -14268955, -7756174, -1405528, 1524713, -6244346,
-3178813, -1650341, -4921496, 5349382, 15792058, 1473711, 8056822, 5463199, 4743255, -4988605,
-2114735, -8504572, 923418, 2454574, 1923072, -3299072, 92342, -8634495, -2994666, -3024731,
--598074, 4207994, 4518306, -193810, 1770063, 2456721, -1218697, -935766, -777389, 817654,
-119722, 614180, 492311, 1389959, -711354, -37044, -2051921, -245887, -300648, 1491427,
-869194, -899259, -1229434, -1196685, -1152662, -384400, -1420560, 529892, 2685965, -2093797,
--248571, 923955, 1539209, 21209622, 13402982, -7292318, 2720862, 6827388, -2817499, 3908957,
--1327145, 6369437, 3190087, 2040110, 5776194, 3269007, 2857764, -1799054, -14192719, 6797323,
--2417530, -3227668, 11103027, 6875169, 3836480, 5123896, 3802120, 2828236, -2172717, 1648194,
-450972, -3629784, 2935073, 4806606, -8006356, 1537061, -5181878, 3834332, 4431870, -12511240,
--206158, -14889578, 255551, 1865626, 1263257, 4070555, 10160282, -1237488, -5267241, -2575907,
--2828236, -3911105, 2923799, 3155727, 982474, -1647120, -1828046, 9881109, -3277597, -1969779,
--5392869, 8777839, -1334124, 7377680, -3471944, 7884486, -7589744, -15947750, -4744865, 1005022,
-3226594, 5398774, -5374078, -3995930, 2183991, 1445257, -2492692, -4155381, 9970767, -3897683,
-9484898, 2513093, 6701223, 2646237, 4881231, 4123706, -1720134, -639950, 1915019, -277025,
-5171141, 138513, -1719598, 477278, -5806796, -1145146, -1348620, 407485, -1945620, -738734,
--659814, -133681, -675921, -3038689, -2476586, 744103, 202937, -3411815, -213675, 507880,
-494458, 1398012, 583579, 3364570, 140660, -1130113, -146029, -452582, -1567663, -1833414,
--737661, 508954, 9931575, -3797288, -6589017, -308701, 1055488, -9432285, -7364259, -2354716,
-2572686, -1410897, 12249247, 7340099, 332323, 11682311, 4224101, 3415036, -10008884, 9393093,
--1749662, -2364380, -8440148, -3822521, 7509751, 7401840, -2102923, 4907537, -10151692, -1433445,
-6833830, 5134634, -3789772, -7218767, -4043175, -4462471, -5557688, -4635881, 1119913, -7586523,
--723702, 10478646, -5037997, 1209033, -388158, -2413235, 4095251, -1671816, 6857452, 8590,
-9668508, -2479807, -6077916, 3495030, -4800163, -4764193, -4800163, -13712757, 1601486, 5680094,
-8176007, 5889474, 10741713, -1097364, -4116726, 6206228, -7614977, 1777580, 1189706, -1140851,
-6965363, 6493454, -1658931, -8278550, 1668595, -4272956, -7876970, -7304129, 4044249, 7091528,
-4453344, -15315317, 3469260, 1641751, -747324, 7239168, 3919158, 5926518, 2255395, -562641,
-7780334, 1056025, 3546032, 2833605, 633508, -3470871, 589484, -1928440, -4246649, 828929,
-1319629, 2043331, -486942, 569083, 503585, 395674, 1545651, 1009317, 1075889, -140660,
--2667712, 1928977, -1060857, -1188632, -984084, -1896228, 3550864, 4003447, 3410741, 1387811,
-406411, 605590, -775778, 2745558, -12242804, -6895570, 1102733, -6724308, -18039400, 13711146,
--469225, -717796, 1542430, 1241782, -11990475, 8436926, -12493523, 1270774, 5463736, -1448478,
-1881733, 2160369, -13428752, -4290673, -6077379, -1053878, 2551211, -4183298, -2933463, -364535,
--947040, 1388885, 5381057, 3144990, 11763915, -4155381, 16209743, -972810, 280784, -10533407,
--1752347, 8132521, -1743220, -16295106, 6488085, 7830263, -5062156, 4224637, -6313602, 11586211,
-6154688, -151398, -832150, -7152195, -4832375, -7843147, 7348152, 7580081, 3099356, 1016834,
-3223910, -6290517, -17152488, -6043556, 5802501, 2782065, -12759811, 490163, 1338956, 1897302,
--6196564, 4507568, 8807904, 4794794, 40802, 3796214, 6017786, -3308736, 9032316, 312996,
--382252, -8922795, -11747272, 7627325, -3674345, 3866008, 3638911, -468688, -2619393, -2382633,
--2071785, 1342714, -2985002, 3922379, 747324, -891206, 836982, -1189706, 31675, -4598300,
-1072668, 514859, -941135, -2501819, 775778, -2199560, -238371, 890132, -591632, -1398012,
--133681, -1404454, 5634460, 4493073, 1529545, -543850, -589484, -1535988, -62814, -534723,
-3572339, -1116692, -582505, 3614215, 730144, 1574642, 2474438, -1686848, -1057099, 2725157,
-1492501, -629750, -491774, 3854196, -18882824, 10179072, -2623151, 3777961, -5628018, -2997887,
-7866233, -9117142, 8852464, -5496485, -10740103, 4884989, -5813775, 22822382, 3326452, -7922067,
--11127187, -1947768, -13786308, -6269579, -14844481, -833761, 9822053, -6973417, 6034966, 10011032,
--9311489, 63888, -10858214, 6086506, 2064806, -367220, 6294812, -6702834, -9747428, -8149164,
-492311, 1851131, 8062191, -11684995, 8266202, 1656784, -17365626, -9491878, -14031121, -5710696,
-5231270, -4684736, -4731980, -26548804, -628676, -5814849, -2508798, -17024176, -6009733, -2236604,
-1243393, 13914083, 12588549, 10733660, 6088116, 13412109, -14500883, 11255499, 1482301, 5257040,
-3697967, -10285910, 15939697, 9947681, 6236293, -7026030, -9540196, -6791417, 9216463, 1086090,
--44023, 5053566, 2345589, 5312875, -4751845, 14093935, 7308424, -1493575, -2386391, 3174518,
-2752000, 1735167, -933619, -842350, 1216550, -205085, -340376, -5816997, 250182, -3353833,
-116501, 1873680, 550293, -335544, -67646, 1174137, 919123, -5532455, -1570884, 1984275,
--1708323, -2150168, -234076, 763967, 812286, 1096290, -910533, -1131187, 858993, -2403034,
--4223564, -1022202, -1127966, -1326071, 655519, -302258, 3568581, 1742683, -1588064, 1638530,
-1107565, 951335, -1639067, -2870649, -164819, 459562, 3029026, -1060320, -826244, 7132330,
-13219909, 14334453, 5860483, 10033044, 8120710, 4861366, -2618856, 1087164, -3905736, 350040,
--1342714, -8640400, 11034845, 17511118, 6982543, -4763656, 7853348, 7477001, -290984, 4655208,
--8235600, -15877420, -10565620, -7210177, 4620848, -1894081, -8291435, 6247030, -2835752, -7399692,
--70867, 12926241, 6519224, 9589588, 3369939, 7072738, 7835631, -1742146, 7180112, -2732673,
--8145406, 3501472, -9436043, 3587908, 3802120, -13869523, -9011915, 5769215, 14467060, -7418483,
-10095321, 14098767, -11561515, 545998, 12840878, 1452773, -4632659, -1006633, -6518687, -11399380,
-186294, -3406983, -5971079, 7961259, 445066, -13052942, 16879758, -6875169, 13701483, -16068010,
--10988137, 7969849, -9875204, 5567352, -6621766, -4790499, -9269613, -5630702, -7534447, -18975702,
-3201361, 11724724, -5315022, -785979, 8137353, 8692477, 6179384, -1126892, -636192, -4865124,
--1486596, -2096481, -2522757, 2120640, -461709, -1741609, 2855080, 2594160, -1132261, -184684,
--3354370, 1560147, -2943126, -5400385, -324807, 5166309, 102005, -2793339, -700080, 8493298,
-4278861, 355409, -2469606, -2991982, -2173790, 580357, 643171, -2499134, -897111, 167504,
-1061394, 3428458, 872415, 5370857, 3253438, 3868692, 1521492, 1773822, 2123861, -642098,
-142271, -11761768, 7498476, -4958540, -13073344, 18779208, 9423695, -12867722, 9157407, 8608188,
-2337536, 15865609, -32198832, 2532420, 13101798, 4751308, 1100585, 14225469, 466541, 7887708,
--18647674, -2285996, 4980552, 455267, -9368934, 3844533, 7400766, 3835406, 3469797, 10118943,
-8166881, 13375602, 10271951, -3835406, -4291746, 10402411, -6323803, 7364259, -11588359, -6038724,
--14806900, -6495065, 8078297, 3067144, -3459059, 12353400, -14440217, -19204946, -31515396, 9994926,
-10815801, 8745090, 6601902, -7194607, 4952634, -4079682, 11834782, 31970126, -4994510, -6467147,
--13861470, -4156992, 11838004, -7875897, 6762963, 11931956, 1860795, -34360, -9271761, -2442763,
-4321811, -21767968, -20367272, 2268280, 2698850, -7580618, 11101417, 8746701, 16001974, 26216480,
-10302016, -5814849, -3217468, 5709086, -196495, -14115410, 6763500, 6237903, 5068599, 1919850,
-6627135, -54761, 3646427, 3294240, 2010582, -3047279, 216359, -125091, -500364, 5526549,
-1526324, 120259, 2727304, -5494337, 1578937, 1220308, -768799, 5807333, 1064078, -1446867,
--1001801, -3277060, 9910637, 853625, 1663226, 4369593, -1512365, -1298691, 5562520, -5888937,
-5532992, -4257387, 4580046, -127238, -433792, -890132, 1843615, -747861, 4737349, -3742527,
--1651415, 1648731, -912681, -1166621, -3035468, -4446365, 3326452, 47582332, 26924614, 17141752,
--4380330, -4859219, -579284, -4064113, -4883915, -7391639, -8882529, -15279346, 688805, -1087701,
-3743601, 6651294, 12700755, 19182934, -2550674, -24974162, -9746355, 21420612, -3325915, 8022999,
--2761127, -367757, 14289893, 4936528, 10854456, 6369974, -433255, -651224, -187368, 7201050,
-9222905, -3580929, -14049912, 18409840, 13211319, 9370008, 3463891, 4770635, -7464653, -13943074,
-19210852, 10707890, 4954782, -8913131, -9897215, -13911399, -8551817, -2477659, -8687645, 4814659,
--17778480, 2456721, 13138305, -8544301, 4640176, 791348, 1932735, -20308216, 7203197, -8722005,
-14821395, -32612760, 5602785, -8524973, -11006391, 2698313, -6639483, 6706592, 6363531, -21246666,
-235149, 14852534, 2225330, 4355634, 9346386, 3813394, 15499463, 6322729, 3280818, 1039382,
--2245194, 9982578, -19716584, -373662, -1149978, -1808181, 777389, -564788, -149787, -1713692,
--2901251, -3789772, 6135898, 5140539, -2697776, -437013, -9443022, 930397, -590558, -9315784,
--44560, -13819057, -10504953, 4662724, 1758252, 7281580, -8215736, 3536906, 7153268, 1585917,
--309775, 1863479, 3833795, 331786, -2062121, 7586523, 52613, 2474975, -4450660, -3329674,
-3150359, 4554276, 801548, -29248190, -15021111, 2158221, -25696790, 5891085, 18658412, -8981313,
-22680648, 26597122, 3389266, 13286481, 16411070, 7353521, -15735686, 10268193, 12524125, -619549,
-3169686, 8828842, 7815767, 18770618, 3208878, -7240241, 11992086, 4294968, -1858647, 270046,
-8041253, -10976326, -4957466, -4646618, 6709813, 3473555, -15472083, 4568235, 12934294, 342524,
-15587510, -14741402, -27836756, 2222646, 12497818, 18887118, 17526688, 9040906, 8319352, 6658273,
--18913426, -5539434, -787590, 14191646, 22445500, -7758859, 4837744, -8261907, 5311801, 3566970,
-13664975, 21153788, -8152385, -9273371, -1839320, 11589432, 14892799, 20848844, 515933, -22537840,
--21251498, -3471944, 2753611, 64961, -9740986, 217970, -25624312, -16544214, -15140833, -17241610,
-7351911, 2643016, 20651814, 16498580, 6226092, -9874667, -9850507, -9179419, -8329552, -14323716,
-6760279, 4483409, 2654827, 9627706, 10713259, 57982, 9140764, 1874216, 9760850, -3397319,
-8096550, -2589865, -729071, 2399276, -2969970, 13533442, 6102075, 8033737, 3638374, 9635222,
-2162516, 4618164, 13829258, 11984032, 6424734, -775778, -5297842, -4549981, -9775346, -5496485,
--6415608, -3837553, -5916318, -7182259, -4146791, 4173635, 9218610, 2552284, -2155537, 332860,
--1360431, 5751498, 6811282, 5643050, -594853, 2536178, -10414759, 12358768, -27339078, 2462627,
--5461051, 14973330, -8023536, -1259499, 4639102, 11340324, -15260019, -25704842, -4459787, -10079215,
-724239, -11605539, 6832219, 6731825, 678068, -13872207, 8660802, 856846, 23163832, -3708168,
-12688407, -10711648, 23924042, 6888591, 14933064, 10016937, 16291885, 23941222, -5830955, 9286793,
--16748762, 17663590, 17183628, -402116, 5590437, 17298518, -11066520, -10701448, -1756105, 34830576,
-5674189, -9742060, 17308718, 2262374, 13278428, 19071266, 5574868, -1291175, 1810329, 2975876,
-12600897, -4403952, 13513041, -9316858, 13192529, -7292855, 29753922, -4320737, 25589416, -23192286,
--25449292, 35442608, -29653528, -15880105, 1216013, -9557913, -18399104, 16193100, -2139968, -22834730,
--10785200, -11728482, -33570000, -12458090, 4165582, 7550016, -25894358, -6619619, 15746961, -3140695,
-9055402, 15512348, -11057930, -2529199, 2552284, 10127533, 7297150, 7641821, -2486249, -1462973,
-6294812, -543850, -4143033, 3445638, 7256347, 1374390, 5053566, -146029, -4628901, -9664,
-6698002, 2520609, -3365644, -8381629, -5032628, 9833864, -4480188, -13207024, 3185255, -7577396,
--14344117, 16643, 5463199, 515933, -3679713, -1058173, 4005594, -3005940, 246961, 5182952,
--223338, -2396592, -3032784, 9336185, 17965312, 989453, -6230387, -5216775, -2838974, -8434779,
--1731409, -3527242, 3536369, -22944790, -15306727, 4464619, -30002494, -17502528, -20847772, -21212306,
-25851946, -638340, 891206, 7698729, -7537131, -32988570, -24677808, -24171540, -49287972, 3561065,
-5596880, 21298206, 12449500, 7380365, 10628433, 7371238, 2305324, -15557982, -22859964, -13167296,
-17767206, -2248416, -13371844, -5399848, 17403208, -21047488, -13581223, -21619792, -10748693, -1848983,
--20739860, 7713762, -17222282, 18632106, 13068512, -2895345, 12891881, -12681428, -26067768, 11387032,
-15202574, -13458817, -29913910, 22533546, -1945083, 16319802, 13707925, -42788076, -30398704, 284005,
--6942278, 27853400, -15981036, -18475876, -4964446, 10270341, 1569274, -2581275, -9707163, 36984500,
--18153754, -30131880, -40740988, 29203630, -6984691, -33550674, 15621333, 15902116, 9427990, 33706368,
-36063768, 37026376, 15841987, -8418136, -3412889, -5757941, 12287365, -23721642, 15229417, 2893197,
-2967823, 11542188, 11164767, -9801652, 14301167, -11253351, 4764730, -15972447, -9111236, -6219113,
--8290361, -3318936, -8929774, -2241436, 6101001, 16711718, 19448148, 784905, 15249818, -9169755,
-2183991, 8996346, 1180042, -16986596, 2043331, 4119948, -4737886, -12630425, -8107825, -7784628,
-20161650, 12549358, 6491306, 9483288, 16997870, -2725157, -20375862, -12802761, -11742441, -14624364,
--18944028, 3291019, -15903190, -27742268, -599148, -4926865, -6595459, -5277441, 4193499, -27051852,
--10775536, 12608413, 20512226, 41771240, 6848326, 21850646, 10589779, 10550050, -9528922, -3053185,
--8123931, -22912576, -26921928, -37798396, -13760001, -34051576, -13387413, -17824652, -6658273, 18300856,
-4498978, 12454868, 21521544, 33823, 14540075, 4233227, 741956, -490163, -2840584, -28724204,
-10459319, -3581466, -32460826, -20092930, 9483288, -20823612, -7991861, 7591892, 23567560, 28603946,
-9950902, -5936182, 3938485, 19152870, 10247255, 4046933, -563178, -56612500, -11417634, 12539694,
-14375256, 5747740, -2163053, -19079856, 13244605, -17019344, -12834973, -3338800, 3481071, -9458055,
--30238718, 16179679, -3868155, 37638408, 14315126, 12871480, 14464376, 27673012, 62048320, 962610,
-1063541, -2592013, -18471580, 11040213, -12814035, 45129368, -4009352, -16170015, -14554034, 19080392,
--24467892, -16513076, -3216394, 38604776, 1297617, 18426484, 28516436, 5771899, 23087596, 17511656,
--3183645, 16057809, 17401596, 591632, -11876658, -12794171, 3593814, 4419522, 14601815, 9385577,
--617402, -2172180, 2602750, 5948530, -10812043, -2249489, -2643016, -1410360, -16963510, 10707353,
--12307766, 4322348, -2484639, -7356205, 2068027, 20688858, 18098456, 50466, -1199907, -13140452,
--5357972, -13060459, -1933272, -15201500, -21674016, 6379637, 15054934, 1051193, 879395, -7479149,
--11350525, 31688806, -4294968, 5756867, -34678640, -11731703, 40614284, -27066348, -7399692, -23437100,
--69262256, -9828496, 21223044, 17540110, 3343095, 5050345, -3766686, 38821136, -41842108, -21475,
--12064563, -27939300, -23699092, -3506304, 7916162, 6986301, 9330280, 25072946, 16227997, -17723182,
--18075906, 49854908, 40691056, -3255585, 4741644, -5448166, 13247290, -177704, 29036126, 10599442,
-15424301, 4369056, 2226941, -51511152, 21339546, -2196876, -29708826, -15094663, 2919504, -7977902,
--29566018, 28467580, -5041755, -21010444, -4421132, 3129958, 25189984, 28261958, 21449066, 8315057,
-25123412, 26897770, -20198694, -22022444, -14120779, -3569118, 26035018, 34873524, 5956046, 12598213,
-33385854, 20112258, -31328566, 23190676, 8410620, -6846715, 1227824, 64297808, -42545948, 32794222,
-37486476, -37685116, -2213519, -24474334, -7918846, -54159536, 15598247, 24036248, -32646046, 19754702,
--28247464, -20349556, 24699820, -15326591, -2277943, -9192841, 1199907, -13516262, 4181688, 6315213,
--10285373, -14486388, -1138166, -15738908, 20696374, 3773129, -19433654, 4304631, -3264175, -10506564,
--10201084, 6736656, 13197361, 16611860, 6793565, -14847165, 38121056, -6997039, 3799436, -2417530,
--20171314, 7759396, 11009612, -10180146, 16265041, 4205310, 12153147, -2779381, -19509888, 6643778,
-29405494, -19008988, -27253714, -44530220, 8914741, -8654896, -14027900, -18108656, 9941776, -11056320,
--5035313, 29023778, -9028021, -1806571, -22821308, 1699196, 14682346, -32249836, -20189030, -19366544,
--9386114, 11491185, -43206836, -24242406, -62382788, 10679436, -591095, -16042777, -6921877, -9405442,
-13374528, 19857244, -22145926, 643708, -7716446, -7700877, -38979512, 8383776, 29956860, 7721278,
-22663468, 28232968, 25484188, -34398928, -10453414, -10532870, -16012175, 28563144, -29403346, -17162152,
-1028108, 41566692, 9433359, -14881525, 42089604, -23888072, -22246856, 49998252, 48077328, 4418985,
-12237436, -13890998, -45577656, -14243722, 45886892, -22474490, 41586556, -15232638, -65504692, -17491792,
--30641908, 34699576, 303332, 7603703, 31286152, -5219996, 25792890, -33903936, -39712880, 30317100,
--7975218, -67115840, 41303088, -21519934, 11260867, 13340705, -23408646, 44161928, -30317638, 15880105,
--476741, 11600170, 44941464, -11637214, -14214194, 1539209, -9371082, -12409771, -10169409, 4922033,
-10095858, 2317135, -6460168, 5513665, -21422760, 19134080, 13481902, 10713259, 4275103, -2147,
--10028749, -11017128, -10433549, 8959839, 17541720, -17318382, 15209553, 35362612, 11895449, -30495878,
-2923799, 10985989, -11304891, -20182052, 18871550, -17113834, -403190, -1611687, -18178450, -23511188,
--257161, 13186623, -7773891, 30407294, -10256382, -20320028, 14097156, -9087614, 1040456, 11794517,
-23278722, 1546188, -41477572, 24374476, 28457380, -34591128, 18947786, -383326, -12322261, -14918569,
--49515604, -22099754, 17547088, 2934537, 45647448, -36786932, -20591684, 8350490, -4945655, 28989956,
--40511204, -169114, 4241280, -34520800, 34375308, 18591302, 10534481, -16308528, 23552526, -28030568,
-15424838, 11725798, 7279433, -2204392, -15487652, 6214818, 31242128, -16640851, -5939940, 5867999,
--24403468, 24685862, 1002338, 6289443, -33458332, 17816598, 4452808, 5888937, -78553880, 10522670,
--22319334, 36463200, 30423938, 32012002, 16513076, -64174328, -11205033, 13422847, 1376537, 3964792,
-45018772, -6994354, -27090506, -32789928, 1316944, -36442260, -31723166, -28398860, 13529684, -53036940,
-37473588, 71392024, -18808736, -8905078, -55977384, -12510166, 21430814, 12925704, -18629420, -4131759,
--67732704, -24094230, 67977520, 28648506, -21118892, 19597936, -38431368, -28678570, 7476465, 1220845,
-4573604, -26318486, -9058086, -5742372, -49929, -38022808, 8094940, -5126581, -11862700, 4745939,
-15560667, -20886426, -10358924, -3504693, 7392176, -16108275, -4271882, -2997350, -15016279, -46171,
--27772870, 35944580, 11634530, -9756018, -3717831, -10912975, -1559610, 22975390, 6892886, -4551592,
-12074764, -7794829, -34581468, 1332514, 1504849, 7031935, 15229417, -9293772, -6581501, 14795625,
-18089328, 7510824, -16724066, -37165424, -51835424, 14500346, -23047332, -14730664, 15010374, -11988864,
--18591840, 14840186, -24266566, -886374, -27581206, 39594228, 128849, -27958626, -8979166, 1224066,
--3421478, 9642738, -19608136, -12635794, 3730179, 8425652, 4032974, 4387309, 14265734, -16603807,
--7129646, -38916700, 14110578, 4238059, -12592307, 29050622, 15062987, -11161546, 43116640, 10191421,
--27957552, 21219286, 3063386, 13977971, 28302224, -2199560, -7569343, 4974646, 23247584, 13878650,
-42413, -1974611, 24914032, -1815697, -29982092, -4673998, 4975183, 23726474, -10796474, 40537512,
-43865036, -27735826, 22692996, 50219980, -13892072, 76042936, 42273216, -18558016, -17646410, -28126668,
--32674500, -17862232, 9672266, -5275294, -6134824, -634581, -5310190, -52510272, -20875152, -51841864,
-11842299, 47150152, -17890150, -2483565, -25829934, 13028783, 2795487, 9368934, 12694850, 39613556,
--2297271, 18188650, 17893908, -29139742, 909996, 284542, 6093485, 13252658, -2011655, -6629819,
-11928198, -1466195, -7117835, 1899986, -12539694, -2589329, 8675834, 2030983, -5558225, -27880244,
-1142998, -12666932, -1362042, -10624138, 23304492, -7585449, 11223823, 14533096, -11527692, 17467096,
-10718091, 497679, -6352794, -10463077, 2405182, -910533, -6420439, -776852, 11491722, -8750996,
-4866198, -2972654, 8232916, -21994528, 66778688, 17631914, -23911156, 2666101, -31402116, -4121558,
-11013370, -13045963, -16690243, -18615462, -7055021, 7150584, -4110821, -5988795, 8481487, 4882841,
-11496554, -11882027, -7456600, 8546985, -3082713, 1514513, -17359720, 11759084, -20322174, 9735080,
-6700686, -4395362, -919123, 726386, -11803107, 1959579, 2391760, -9422085, 16974248, -9161165,
-4096325, 70867, 572841, 8563091, -8401493, -13056701, -3936875, 19605988, -14591615, 9589051,
--26737782, -15917686, 5043902, -5808944, -452045, -1799054, -16110959, 17024176, 13596256, 1205812,
--11806328, -621160, -7193534, 3471407, -8970039, -324807, -8612483, 6383932, -2405182, 1631014,
-21572546, -18327700, -1598802, 3198140, 1283122, -4015258, 477278, -8724152, 458488, -7322383,
-4410395, 8475044, -13129715, -10927471, 6230924, 754304, -3142842, -10420128, 4432406, 1321239,
--482110, -2423972, 52076, -2450279, 7174743, -4879083, -1378148, 3280281, -2465848, -469762,
-5737540, -3953518, -2589865, -1571421, 1183800, 5884642, -2085744, -6815040, 355945, -4423817,
-15503758, -6379100, 1860795, 3455301, -4005594, 12306692, -1837172, -10864120, 3802657, -6253473,
-7594576, 3652870, -1764695, -770410, -2918430, -3049427, 7495792, -5120138, -2347200, -938450,
--6673306, 8371965, -32304596, -47041168, 32691680, 151848576, 66105988, 69747048, -741419, -140010560,
--101835824, -52546240, -110857400, 53950696, 65667904, 34561064, 142689008, 64560336, -6498823, 47680044,
--92813704, -117711632, -67628552, -82389824, -18107046, 64149096, 65147136, 27655832, 109642464, 54808076,
--7933342, 53119620, -48947596, -83262240, -48168060, -62583580, -98865312, 36531920, -1126355, -35172560,
-105900472, 64144264, 35721780, 108895672, 26029112, -54998668, 53286584, -78509320, -89974200, -18178450,
--94619200, -95583960, 37650220, -15666430, 22939958, 120918360, 82505248, 86261200, 81024024, 10018548,
--45732276, -52470540, -88294864, -115444960, -60819960, -32796908, -24109798, 44282188, 68644848, 64775624,
-91349656, 82804824, -12934294, -14492830, -15042049, -84778360, -25633976, -41703060, -63255740, 14209362,
-25702158, 4279935, 58628452, 26322780, 374199, 36899136, -28492814, -31132070, 703301, -20214800,
--6543383, 15431281, -3323768, 17119740, 22646826, -12503724, 17783848, 7350837, -27704150, 2658048,
--13289166, -52288544, -887985, -13265543, -22468048, 50538880, 14995341, 18995566, 66194036, 26320634,
-19333258, 14615237, -33026688, -48110612, -44724032, -74898864, -61368104, -27285390, 2449742, 33668784,
-76915352, 81548008, 74795248, 66334160, 40880036, -16388521, -47108812, -93791888, -118867512, -91750168,
--55139864, -19489488, 49873696, 92463664, 106277888, 108948824, 52465708, -13139916, -36048196, -44297756,
--57130580, -41292352, -42426224, -34329136, -5100811, 10273025, 16789564, 28822452, 30978526, 28351616,
-25851946, 14023605, 3661997, -4414153, -14708116, -22870700, -22622666, -19403588, -13933948, -8004746,
-2718178, 8898098, 12319577, 12787191, 12302934, 7923141, 4788889, -47245, -448824, -2206003,
--3201898, -4710506, -2464774, -3774203, -4188130, -4038880, -2665027, -5740761, -2375117, 66035,
-2941516, 6598144, 9072045, 6065031, 8182987, 5013301, 1560147, -2833605, -6347425, -10062572,
--8756901, -8764418, -4068408, -513785, 4300873, 5161477, 7738994, 6389838, 5264020, 1903207,
-897111, -2472291, -2388539, -3947612, -3363496, -3054259, -768799, -1487669, 806380, -236760,
-1251446, 922881, 920197, -337692, 2000381, 937914, 2284923, 625992, 963146, 33286,
-119722, -2251100, -1434519, -2835215, -1533840, -1693828, 87510, -198105, 1779190, 962073,
-2161442, 957241, 1504312, -88047, 602906, -891206, -107911, -1233729, -44023, -1045288,
-266288, -641024, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-1172526, 709207, 7030862, -908922, -324807, -2050847, 7669738, 445603, 3730179, 2262374,
+2258616, -3167539, 1592359, -4903779, -531502, 3795677, 772020, 2221035, 3579318, -6054830,
+-4224637, 1436130, -299574, 4486630, 2735357, -237297, -2491618, -1571958, -3082713, -494995,
+-410706, -466541, 854699, 1170379, -2682744, 4497368, -1033477, -705985, 1538672, -5740761,
+-1323387, 2479807, 878321, 5658620, -21475, -417149, 1105954, 383326, 2357400, 3917547,
+4984847, -290447, -514322, 87510, -2867428, -3641596, 2009508, 3248606, -2281702, -2190433,
+-1479079, 4144107, 2441689, -572304, 646393, -4889821, -1408212, 2539936, 2107218, 3613678,
+-5255430, 1192390, 1988033, -1096290, 3707094, -239444, 3231426, 1537061, 1039382, 4098473,
+2034741, 1034013, 33286, 483184, -977642, 344134, 569620, -323196, -1456531, 719944,
+708670, -1078037, -150861, -727460, 761283, 1178969, 47782, -150324, -66572, -1093069,
+536334, -386010, 907849, 428960, 279173, 194884, -488553, 296353, 134218, 466541,
+-868657, -413391, -192200, 119185, -1183264, 11647951, 3206193, -2667712, 5936719, -2886218,
+6178848, -2055142, -2819109, 3143379, 5777268, -177704, -2859375, 1542967, 1211718, -237297,
+-8229694, 1927904, 2408403, 660351, 5137318, 6918656, 3711389, 6812892, 4629975, 4151086,
+-1109712, 4610111, 2218888, -3495567, 1307281, 2129767, -4503810, -5716602, -880468, 2253247,
+87510, -2063195, -2767033, -2692408, -1337882, 3084324, 6179921, 5236639, 1975148, 4022237,
+-6493991, 409633, -1658394, 63351, -7453379, 2763275, -718333, -1757179, -292058, -2022930,
+-3685619, -2588792, 2611340, 625455, 2002529, -2716567, 5081483, 1306744, -5888937, 2432025,
+745177, 1636383, 3223373, 978716, 5917391, -1888175, 646929, -6912750, 1312649, 666257,
+195958, 163746, -1303523, 4917201, -1505923, -2285996, 3728569, -3864934, -1888175, -1596654,
+-721018, -1802813, 1244467, 329102, 648540, -51003, -172872, 63351, -708133, 423054,
+644782, -250719, -304943, -34360, -1281511, -2087891, 766652, 253940, -1649804, -220117,
+-185220, -360777, -1998234, 509491, -12885, -66035, 133144, 345745, 212601, -758599,
+-32749, -1377611, -160524, 572304, -2352032, -2378875, -762357, 2155537, -3982509, 1155346,
+-7871065, 1467268, 1493575, -928250, 5634997, 345745, -620086, 494458, 2987687, -4840965,
+696322, 1466731, 3090766, -6882148, -3472481, -2604898, 2526515, 1017370, -2149094, -6955163,
+1690607, -6918656, -415538, 2727304, -1271310, 2073932, -1185411, 4639102, 6907918, 3631932,
+-3563212, 655519, 5237176, 3215857, -3225521, 2701535, 817654, -5396627, 1900523, 7383049,
+3477313, 2465848, 8259222, 725313, -3122978, -6329171, -267362, -3559454, -4242891, -2029372,
+4545149, -4322348, 1511292, -2586107, -2396592, 5272073, -684510, 861141, 4223564, 5727876,
+-2542084, -5288716, 6717866, 5133023, 3294240, 296353, -4024384, 628139, 5310190, -5392869,
+1646046, -3519726, -108448, 3266323, -3071975, -188979, -5919539, -1580011, -513249, 884226,
+-307627, -2259153, -259846, 1117228, -1742683, -469762, 819802, 661962, 515933, 471910,
+-83752, -449361, -2331094, 1240172, -121333, 1278290, -898722, -1556926, 551903, 1211181,
+-800475, 1067836, -179315, -89121, -91805, -259846, 1306207, -775778, 510564, -783295,
+-15601469, -5712307, -2401961, 8535711, -3239479, -1284732, -5043366, -4269735, -728534, -11254962,
+6307697, 2081985, -319438, -4159676, 6209986, -1750736, 3154117, -2517925, 1992328, 3956739,
+-4947266, 519691, 5459977, 3083250, 2199023, 5836324, 5223217, -3280281, -4179003, -5216775,
+-86436, -6857452, 1636383, -9057012, -1733019, 6664716, 3506841, -2299955, -704912, -6815040,
+3093987, -2916283, 6004365, -3462818, -6162741, -1270237, -2539936, -5068062, 1961726, -1165010,
+-3223373, -3289408, -10916733, 1487132, -3274376, -8094940, -2152852, 4983773, 2558727, -4189741,
+3456375, 4439386, 4292820, 1589138, -5581310, -936303, -1239635, 3860102, -3922916, -1513976,
+2035815, 2062121, -6109054, -7283191, -13066901, -2242510, -7589207, 2491081, -293668, -1819992,
+3842385, -819265, -1749125, 1668058, 2620467, 2509872, 1958505, 4540318, -1941862, -1609002,
+-1228898, 659814, 228707, -1043140, 1253594, 1796370, -401579, 415001, -797253, -1043140,
+-193274, -681289, 187905, 386547, 53150, -1156420, 177167, -783295, -296890, 642098,
+1465658, -662499, 1755568, 2129230, 336618, -630823, -1859184, -386547, 1249836, 820876,
+-809064, -13579076, -5430986, -2433099, -4020626, 4620311, 6041945, 5694590, -11335492, -8465381,
+3263638, 13814225, 8170102, -5369, 1969779, 3936338, -4961224, 3278134, -4598836, 3325379,
+4911832, 759136, 3942243, 1230508, -270583, 2045478, 1217623, -3701188, -4684199, 6483253,
+2633889, -4729833, 4647692, -2578591, -471910, 11144366, -5310727, 6310918, 12463995, 5086852,
+-702764, 483721, -4483946, 5828271, -5939940, -3248606, -9990094, 1888712, 7721815, -188979,
+-7068443, -2517925, -10024991, -5091147, -1852205, -14268955, -7756174, -1405528, 1524713, -6244346,
+3178813, -1650341, -4921496, 5349382, 15792058, 1473711, 8056822, 5463199, 4743255, -4988605,
+2114735, -8504572, 923418, 2454574, 1923072, -3299072, 92342, -8634495, -2994666, -3024731,
+-598074, 4207994, 4518306, -193810, 1770063, 2456721, -1218697, -935766, -777389, 817654,
+119722, 614180, 492311, 1389959, -711354, -37044, -2051921, -245887, -300648, 1491427,
+869194, -899259, -1229434, -1196685, -1152662, -384400, -1420560, 529892, 2685965, -2093797,
+-248571, 923955, 1539209, 21209622, 13402982, -7292318, 2720862, 6827388, -2817499, 3908957,
+-1327145, 6369437, 3190087, 2040110, 5776194, 3269007, 2857764, -1799054, -14192719, 6797323,
+-2417530, -3227668, 11103027, 6875169, 3836480, 5123896, 3802120, 2828236, -2172717, 1648194,
+450972, -3629784, 2935073, 4806606, -8006356, 1537061, -5181878, 3834332, 4431870, -12511240,
+-206158, -14889578, 255551, 1865626, 1263257, 4070555, 10160282, -1237488, -5267241, -2575907,
+-2828236, -3911105, 2923799, 3155727, 982474, -1647120, -1828046, 9881109, -3277597, -1969779,
+-5392869, 8777839, -1334124, 7377680, -3471944, 7884486, -7589744, -15947750, -4744865, 1005022,
+3226594, 5398774, -5374078, -3995930, 2183991, 1445257, -2492692, -4155381, 9970767, -3897683,
+9484898, 2513093, 6701223, 2646237, 4881231, 4123706, -1720134, -639950, 1915019, -277025,
+5171141, 138513, -1719598, 477278, -5806796, -1145146, -1348620, 407485, -1945620, -738734,
+-659814, -133681, -675921, -3038689, -2476586, 744103, 202937, -3411815, -213675, 507880,
+494458, 1398012, 583579, 3364570, 140660, -1130113, -146029, -452582, -1567663, -1833414,
+-737661, 508954, 9931575, -3797288, -6589017, -308701, 1055488, -9432285, -7364259, -2354716,
+2572686, -1410897, 12249247, 7340099, 332323, 11682311, 4224101, 3415036, -10008884, 9393093,
+-1749662, -2364380, -8440148, -3822521, 7509751, 7401840, -2102923, 4907537, -10151692, -1433445,
+6833830, 5134634, -3789772, -7218767, -4043175, -4462471, -5557688, -4635881, 1119913, -7586523,
+-723702, 10478646, -5037997, 1209033, -388158, -2413235, 4095251, -1671816, 6857452, 8590,
+9668508, -2479807, -6077916, 3495030, -4800163, -4764193, -4800163, -13712757, 1601486, 5680094,
+8176007, 5889474, 10741713, -1097364, -4116726, 6206228, -7614977, 1777580, 1189706, -1140851,
+6965363, 6493454, -1658931, -8278550, 1668595, -4272956, -7876970, -7304129, 4044249, 7091528,
+4453344, -15315317, 3469260, 1641751, -747324, 7239168, 3919158, 5926518, 2255395, -562641,
+7780334, 1056025, 3546032, 2833605, 633508, -3470871, 589484, -1928440, -4246649, 828929,
+1319629, 2043331, -486942, 569083, 503585, 395674, 1545651, 1009317, 1075889, -140660,
+-2667712, 1928977, -1060857, -1188632, -984084, -1896228, 3550864, 4003447, 3410741, 1387811,
+406411, 605590, -775778, 2745558, -12242804, -6895570, 1102733, -6724308, -18039400, 13711146,
+-469225, -717796, 1542430, 1241782, -11990475, 8436926, -12493523, 1270774, 5463736, -1448478,
+1881733, 2160369, -13428752, -4290673, -6077379, -1053878, 2551211, -4183298, -2933463, -364535,
+-947040, 1388885, 5381057, 3144990, 11763915, -4155381, 16209743, -972810, 280784, -10533407,
+-1752347, 8132521, -1743220, -16295106, 6488085, 7830263, -5062156, 4224637, -6313602, 11586211,
+6154688, -151398, -832150, -7152195, -4832375, -7843147, 7348152, 7580081, 3099356, 1016834,
+3223910, -6290517, -17152488, -6043556, 5802501, 2782065, -12759811, 490163, 1338956, 1897302,
+-6196564, 4507568, 8807904, 4794794, 40802, 3796214, 6017786, -3308736, 9032316, 312996,
+-382252, -8922795, -11747272, 7627325, -3674345, 3866008, 3638911, -468688, -2619393, -2382633,
+-2071785, 1342714, -2985002, 3922379, 747324, -891206, 836982, -1189706, 31675, -4598300,
+1072668, 514859, -941135, -2501819, 775778, -2199560, -238371, 890132, -591632, -1398012,
+-133681, -1404454, 5634460, 4493073, 1529545, -543850, -589484, -1535988, -62814, -534723,
+3572339, -1116692, -582505, 3614215, 730144, 1574642, 2474438, -1686848, -1057099, 2725157,
+1492501, -629750, -491774, 3854196, -18882824, 10179072, -2623151, 3777961, -5628018, -2997887,
+7866233, -9117142, 8852464, -5496485, -10740103, 4884989, -5813775, 22822382, 3326452, -7922067,
+-11127187, -1947768, -13786308, -6269579, -14844481, -833761, 9822053, -6973417, 6034966, 10011032,
+-9311489, 63888, -10858214, 6086506, 2064806, -367220, 6294812, -6702834, -9747428, -8149164,
+492311, 1851131, 8062191, -11684995, 8266202, 1656784, -17365626, -9491878, -14031121, -5710696,
+5231270, -4684736, -4731980, -26548804, -628676, -5814849, -2508798, -17024176, -6009733, -2236604,
+1243393, 13914083, 12588549, 10733660, 6088116, 13412109, -14500883, 11255499, 1482301, 5257040,
+3697967, -10285910, 15939697, 9947681, 6236293, -7026030, -9540196, -6791417, 9216463, 1086090,
+-44023, 5053566, 2345589, 5312875, -4751845, 14093935, 7308424, -1493575, -2386391, 3174518,
+2752000, 1735167, -933619, -842350, 1216550, -205085, -340376, -5816997, 250182, -3353833,
+116501, 1873680, 550293, -335544, -67646, 1174137, 919123, -5532455, -1570884, 1984275,
+-1708323, -2150168, -234076, 763967, 812286, 1096290, -910533, -1131187, 858993, -2403034,
+-4223564, -1022202, -1127966, -1326071, 655519, -302258, 3568581, 1742683, -1588064, 1638530,
+1107565, 951335, -1639067, -2870649, -164819, 459562, 3029026, -1060320, -826244, 7132330,
+13219909, 14334453, 5860483, 10033044, 8120710, 4861366, -2618856, 1087164, -3905736, 350040,
+-1342714, -8640400, 11034845, 17511118, 6982543, -4763656, 7853348, 7477001, -290984, 4655208,
+-8235600, -15877420, -10565620, -7210177, 4620848, -1894081, -8291435, 6247030, -2835752, -7399692,
+-70867, 12926241, 6519224, 9589588, 3369939, 7072738, 7835631, -1742146, 7180112, -2732673,
+-8145406, 3501472, -9436043, 3587908, 3802120, -13869523, -9011915, 5769215, 14467060, -7418483,
+10095321, 14098767, -11561515, 545998, 12840878, 1452773, -4632659, -1006633, -6518687, -11399380,
+186294, -3406983, -5971079, 7961259, 445066, -13052942, 16879758, -6875169, 13701483, -16068010,
+-10988137, 7969849, -9875204, 5567352, -6621766, -4790499, -9269613, -5630702, -7534447, -18975702,
+3201361, 11724724, -5315022, -785979, 8137353, 8692477, 6179384, -1126892, -636192, -4865124,
+-1486596, -2096481, -2522757, 2120640, -461709, -1741609, 2855080, 2594160, -1132261, -184684,
+-3354370, 1560147, -2943126, -5400385, -324807, 5166309, 102005, -2793339, -700080, 8493298,
+4278861, 355409, -2469606, -2991982, -2173790, 580357, 643171, -2499134, -897111, 167504,
+1061394, 3428458, 872415, 5370857, 3253438, 3868692, 1521492, 1773822, 2123861, -642098,
+142271, -11761768, 7498476, -4958540, -13073344, 18779208, 9423695, -12867722, 9157407, 8608188,
+2337536, 15865609, -32198832, 2532420, 13101798, 4751308, 1100585, 14225469, 466541, 7887708,
+-18647674, -2285996, 4980552, 455267, -9368934, 3844533, 7400766, 3835406, 3469797, 10118943,
+8166881, 13375602, 10271951, -3835406, -4291746, 10402411, -6323803, 7364259, -11588359, -6038724,
+-14806900, -6495065, 8078297, 3067144, -3459059, 12353400, -14440217, -19204946, -31515396, 9994926,
+10815801, 8745090, 6601902, -7194607, 4952634, -4079682, 11834782, 31970126, -4994510, -6467147,
+-13861470, -4156992, 11838004, -7875897, 6762963, 11931956, 1860795, -34360, -9271761, -2442763,
+4321811, -21767968, -20367272, 2268280, 2698850, -7580618, 11101417, 8746701, 16001974, 26216480,
+10302016, -5814849, -3217468, 5709086, -196495, -14115410, 6763500, 6237903, 5068599, 1919850,
+6627135, -54761, 3646427, 3294240, 2010582, -3047279, 216359, -125091, -500364, 5526549,
+1526324, 120259, 2727304, -5494337, 1578937, 1220308, -768799, 5807333, 1064078, -1446867,
+-1001801, -3277060, 9910637, 853625, 1663226, 4369593, -1512365, -1298691, 5562520, -5888937,
+5532992, -4257387, 4580046, -127238, -433792, -890132, 1843615, -747861, 4737349, -3742527,
+-1651415, 1648731, -912681, -1166621, -3035468, -4446365, 3326452, 47582332, 26924614, 17141752,
+-4380330, -4859219, -579284, -4064113, -4883915, -7391639, -8882529, -15279346, 688805, -1087701,
+3743601, 6651294, 12700755, 19182934, -2550674, -24974162, -9746355, 21420612, -3325915, 8022999,
+-2761127, -367757, 14289893, 4936528, 10854456, 6369974, -433255, -651224, -187368, 7201050,
+9222905, -3580929, -14049912, 18409840, 13211319, 9370008, 3463891, 4770635, -7464653, -13943074,
+19210852, 10707890, 4954782, -8913131, -9897215, -13911399, -8551817, -2477659, -8687645, 4814659,
+-17778480, 2456721, 13138305, -8544301, 4640176, 791348, 1932735, -20308216, 7203197, -8722005,
+14821395, -32612760, 5602785, -8524973, -11006391, 2698313, -6639483, 6706592, 6363531, -21246666,
+235149, 14852534, 2225330, 4355634, 9346386, 3813394, 15499463, 6322729, 3280818, 1039382,
+-2245194, 9982578, -19716584, -373662, -1149978, -1808181, 777389, -564788, -149787, -1713692,
+-2901251, -3789772, 6135898, 5140539, -2697776, -437013, -9443022, 930397, -590558, -9315784,
+-44560, -13819057, -10504953, 4662724, 1758252, 7281580, -8215736, 3536906, 7153268, 1585917,
+-309775, 1863479, 3833795, 331786, -2062121, 7586523, 52613, 2474975, -4450660, -3329674,
+3150359, 4554276, 801548, -29248190, -15021111, 2158221, -25696790, 5891085, 18658412, -8981313,
+22680648, 26597122, 3389266, 13286481, 16411070, 7353521, -15735686, 10268193, 12524125, -619549,
+3169686, 8828842, 7815767, 18770618, 3208878, -7240241, 11992086, 4294968, -1858647, 270046,
+8041253, -10976326, -4957466, -4646618, 6709813, 3473555, -15472083, 4568235, 12934294, 342524,
+15587510, -14741402, -27836756, 2222646, 12497818, 18887118, 17526688, 9040906, 8319352, 6658273,
+-18913426, -5539434, -787590, 14191646, 22445500, -7758859, 4837744, -8261907, 5311801, 3566970,
+13664975, 21153788, -8152385, -9273371, -1839320, 11589432, 14892799, 20848844, 515933, -22537840,
+-21251498, -3471944, 2753611, 64961, -9740986, 217970, -25624312, -16544214, -15140833, -17241610,
+7351911, 2643016, 20651814, 16498580, 6226092, -9874667, -9850507, -9179419, -8329552, -14323716,
+6760279, 4483409, 2654827, 9627706, 10713259, 57982, 9140764, 1874216, 9760850, -3397319,
+8096550, -2589865, -729071, 2399276, -2969970, 13533442, 6102075, 8033737, 3638374, 9635222,
+2162516, 4618164, 13829258, 11984032, 6424734, -775778, -5297842, -4549981, -9775346, -5496485,
+-6415608, -3837553, -5916318, -7182259, -4146791, 4173635, 9218610, 2552284, -2155537, 332860,
+-1360431, 5751498, 6811282, 5643050, -594853, 2536178, -10414759, 12358768, -27339078, 2462627,
+-5461051, 14973330, -8023536, -1259499, 4639102, 11340324, -15260019, -25704842, -4459787, -10079215,
+724239, -11605539, 6832219, 6731825, 678068, -13872207, 8660802, 856846, 23163832, -3708168,
+12688407, -10711648, 23924042, 6888591, 14933064, 10016937, 16291885, 23941222, -5830955, 9286793,
+-16748762, 17663590, 17183628, -402116, 5590437, 17298518, -11066520, -10701448, -1756105, 34830576,
+5674189, -9742060, 17308718, 2262374, 13278428, 19071266, 5574868, -1291175, 1810329, 2975876,
+12600897, -4403952, 13513041, -9316858, 13192529, -7292855, 29753922, -4320737, 25589416, -23192286,
+-25449292, 35442608, -29653528, -15880105, 1216013, -9557913, -18399104, 16193100, -2139968, -22834730,
+-10785200, -11728482, -33570000, -12458090, 4165582, 7550016, -25894358, -6619619, 15746961, -3140695,
+9055402, 15512348, -11057930, -2529199, 2552284, 10127533, 7297150, 7641821, -2486249, -1462973,
+6294812, -543850, -4143033, 3445638, 7256347, 1374390, 5053566, -146029, -4628901, -9664,
+6698002, 2520609, -3365644, -8381629, -5032628, 9833864, -4480188, -13207024, 3185255, -7577396,
+-14344117, 16643, 5463199, 515933, -3679713, -1058173, 4005594, -3005940, 246961, 5182952,
+-223338, -2396592, -3032784, 9336185, 17965312, 989453, -6230387, -5216775, -2838974, -8434779,
+-1731409, -3527242, 3536369, -22944790, -15306727, 4464619, -30002494, -17502528, -20847772, -21212306,
+25851946, -638340, 891206, 7698729, -7537131, -32988570, -24677808, -24171540, -49287972, 3561065,
+5596880, 21298206, 12449500, 7380365, 10628433, 7371238, 2305324, -15557982, -22859964, -13167296,
+17767206, -2248416, -13371844, -5399848, 17403208, -21047488, -13581223, -21619792, -10748693, -1848983,
+-20739860, 7713762, -17222282, 18632106, 13068512, -2895345, 12891881, -12681428, -26067768, 11387032,
+15202574, -13458817, -29913910, 22533546, -1945083, 16319802, 13707925, -42788076, -30398704, 284005,
+-6942278, 27853400, -15981036, -18475876, -4964446, 10270341, 1569274, -2581275, -9707163, 36984500,
+-18153754, -30131880, -40740988, 29203630, -6984691, -33550674, 15621333, 15902116, 9427990, 33706368,
+36063768, 37026376, 15841987, -8418136, -3412889, -5757941, 12287365, -23721642, 15229417, 2893197,
+2967823, 11542188, 11164767, -9801652, 14301167, -11253351, 4764730, -15972447, -9111236, -6219113,
+-8290361, -3318936, -8929774, -2241436, 6101001, 16711718, 19448148, 784905, 15249818, -9169755,
+2183991, 8996346, 1180042, -16986596, 2043331, 4119948, -4737886, -12630425, -8107825, -7784628,
+20161650, 12549358, 6491306, 9483288, 16997870, -2725157, -20375862, -12802761, -11742441, -14624364,
+-18944028, 3291019, -15903190, -27742268, -599148, -4926865, -6595459, -5277441, 4193499, -27051852,
+-10775536, 12608413, 20512226, 41771240, 6848326, 21850646, 10589779, 10550050, -9528922, -3053185,
+-8123931, -22912576, -26921928, -37798396, -13760001, -34051576, -13387413, -17824652, -6658273, 18300856,
+4498978, 12454868, 21521544, 33823, 14540075, 4233227, 741956, -490163, -2840584, -28724204,
+10459319, -3581466, -32460826, -20092930, 9483288, -20823612, -7991861, 7591892, 23567560, 28603946,
+9950902, -5936182, 3938485, 19152870, 10247255, 4046933, -563178, -56612500, -11417634, 12539694,
+14375256, 5747740, -2163053, -19079856, 13244605, -17019344, -12834973, -3338800, 3481071, -9458055,
+-30238718, 16179679, -3868155, 37638408, 14315126, 12871480, 14464376, 27673012, 62048320, 962610,
+1063541, -2592013, -18471580, 11040213, -12814035, 45129368, -4009352, -16170015, -14554034, 19080392,
+-24467892, -16513076, -3216394, 38604776, 1297617, 18426484, 28516436, 5771899, 23087596, 17511656,
+-3183645, 16057809, 17401596, 591632, -11876658, -12794171, 3593814, 4419522, 14601815, 9385577,
+-617402, -2172180, 2602750, 5948530, -10812043, -2249489, -2643016, -1410360, -16963510, 10707353,
+-12307766, 4322348, -2484639, -7356205, 2068027, 20688858, 18098456, 50466, -1199907, -13140452,
+-5357972, -13060459, -1933272, -15201500, -21674016, 6379637, 15054934, 1051193, 879395, -7479149,
+-11350525, 31688806, -4294968, 5756867, -34678640, -11731703, 40614284, -27066348, -7399692, -23437100,
+-69262256, -9828496, 21223044, 17540110, 3343095, 5050345, -3766686, 38821136, -41842108, -21475,
+-12064563, -27939300, -23699092, -3506304, 7916162, 6986301, 9330280, 25072946, 16227997, -17723182,
+-18075906, 49854908, 40691056, -3255585, 4741644, -5448166, 13247290, -177704, 29036126, 10599442,
+15424301, 4369056, 2226941, -51511152, 21339546, -2196876, -29708826, -15094663, 2919504, -7977902,
+-29566018, 28467580, -5041755, -21010444, -4421132, 3129958, 25189984, 28261958, 21449066, 8315057,
+25123412, 26897770, -20198694, -22022444, -14120779, -3569118, 26035018, 34873524, 5956046, 12598213,
+33385854, 20112258, -31328566, 23190676, 8410620, -6846715, 1227824, 64297808, -42545948, 32794222,
+37486476, -37685116, -2213519, -24474334, -7918846, -54159536, 15598247, 24036248, -32646046, 19754702,
+-28247464, -20349556, 24699820, -15326591, -2277943, -9192841, 1199907, -13516262, 4181688, 6315213,
+-10285373, -14486388, -1138166, -15738908, 20696374, 3773129, -19433654, 4304631, -3264175, -10506564,
+-10201084, 6736656, 13197361, 16611860, 6793565, -14847165, 38121056, -6997039, 3799436, -2417530,
+-20171314, 7759396, 11009612, -10180146, 16265041, 4205310, 12153147, -2779381, -19509888, 6643778,
+29405494, -19008988, -27253714, -44530220, 8914741, -8654896, -14027900, -18108656, 9941776, -11056320,
+-5035313, 29023778, -9028021, -1806571, -22821308, 1699196, 14682346, -32249836, -20189030, -19366544,
+-9386114, 11491185, -43206836, -24242406, -62382788, 10679436, -591095, -16042777, -6921877, -9405442,
+13374528, 19857244, -22145926, 643708, -7716446, -7700877, -38979512, 8383776, 29956860, 7721278,
+22663468, 28232968, 25484188, -34398928, -10453414, -10532870, -16012175, 28563144, -29403346, -17162152,
+1028108, 41566692, 9433359, -14881525, 42089604, -23888072, -22246856, 49998252, 48077328, 4418985,
+12237436, -13890998, -45577656, -14243722, 45886892, -22474490, 41586556, -15232638, -65504692, -17491792,
+-30641908, 34699576, 303332, 7603703, 31286152, -5219996, 25792890, -33903936, -39712880, 30317100,
+-7975218, -67115840, 41303088, -21519934, 11260867, 13340705, -23408646, 44161928, -30317638, 15880105,
+-476741, 11600170, 44941464, -11637214, -14214194, 1539209, -9371082, -12409771, -10169409, 4922033,
+10095858, 2317135, -6460168, 5513665, -21422760, 19134080, 13481902, 10713259, 4275103, -2147,
+-10028749, -11017128, -10433549, 8959839, 17541720, -17318382, 15209553, 35362612, 11895449, -30495878,
+2923799, 10985989, -11304891, -20182052, 18871550, -17113834, -403190, -1611687, -18178450, -23511188,
+-257161, 13186623, -7773891, 30407294, -10256382, -20320028, 14097156, -9087614, 1040456, 11794517,
+23278722, 1546188, -41477572, 24374476, 28457380, -34591128, 18947786, -383326, -12322261, -14918569,
+-49515604, -22099754, 17547088, 2934537, 45647448, -36786932, -20591684, 8350490, -4945655, 28989956,
+-40511204, -169114, 4241280, -34520800, 34375308, 18591302, 10534481, -16308528, 23552526, -28030568,
+15424838, 11725798, 7279433, -2204392, -15487652, 6214818, 31242128, -16640851, -5939940, 5867999,
+-24403468, 24685862, 1002338, 6289443, -33458332, 17816598, 4452808, 5888937, -78553880, 10522670,
+-22319334, 36463200, 30423938, 32012002, 16513076, -64174328, -11205033, 13422847, 1376537, 3964792,
+45018772, -6994354, -27090506, -32789928, 1316944, -36442260, -31723166, -28398860, 13529684, -53036940,
+37473588, 71392024, -18808736, -8905078, -55977384, -12510166, 21430814, 12925704, -18629420, -4131759,
+-67732704, -24094230, 67977520, 28648506, -21118892, 19597936, -38431368, -28678570, 7476465, 1220845,
+4573604, -26318486, -9058086, -5742372, -49929, -38022808, 8094940, -5126581, -11862700, 4745939,
+15560667, -20886426, -10358924, -3504693, 7392176, -16108275, -4271882, -2997350, -15016279, -46171,
+-27772870, 35944580, 11634530, -9756018, -3717831, -10912975, -1559610, 22975390, 6892886, -4551592,
+12074764, -7794829, -34581468, 1332514, 1504849, 7031935, 15229417, -9293772, -6581501, 14795625,
+18089328, 7510824, -16724066, -37165424, -51835424, 14500346, -23047332, -14730664, 15010374, -11988864,
+-18591840, 14840186, -24266566, -886374, -27581206, 39594228, 128849, -27958626, -8979166, 1224066,
+-3421478, 9642738, -19608136, -12635794, 3730179, 8425652, 4032974, 4387309, 14265734, -16603807,
+-7129646, -38916700, 14110578, 4238059, -12592307, 29050622, 15062987, -11161546, 43116640, 10191421,
+-27957552, 21219286, 3063386, 13977971, 28302224, -2199560, -7569343, 4974646, 23247584, 13878650,
+42413, -1974611, 24914032, -1815697, -29982092, -4673998, 4975183, 23726474, -10796474, 40537512,
+43865036, -27735826, 22692996, 50219980, -13892072, 76042936, 42273216, -18558016, -17646410, -28126668,
+-32674500, -17862232, 9672266, -5275294, -6134824, -634581, -5310190, -52510272, -20875152, -51841864,
+11842299, 47150152, -17890150, -2483565, -25829934, 13028783, 2795487, 9368934, 12694850, 39613556,
+-2297271, 18188650, 17893908, -29139742, 909996, 284542, 6093485, 13252658, -2011655, -6629819,
+11928198, -1466195, -7117835, 1899986, -12539694, -2589329, 8675834, 2030983, -5558225, -27880244,
+1142998, -12666932, -1362042, -10624138, 23304492, -7585449, 11223823, 14533096, -11527692, 17467096,
+10718091, 497679, -6352794, -10463077, 2405182, -910533, -6420439, -776852, 11491722, -8750996,
+4866198, -2972654, 8232916, -21994528, 66778688, 17631914, -23911156, 2666101, -31402116, -4121558,
+11013370, -13045963, -16690243, -18615462, -7055021, 7150584, -4110821, -5988795, 8481487, 4882841,
+11496554, -11882027, -7456600, 8546985, -3082713, 1514513, -17359720, 11759084, -20322174, 9735080,
+6700686, -4395362, -919123, 726386, -11803107, 1959579, 2391760, -9422085, 16974248, -9161165,
+4096325, 70867, 572841, 8563091, -8401493, -13056701, -3936875, 19605988, -14591615, 9589051,
+-26737782, -15917686, 5043902, -5808944, -452045, -1799054, -16110959, 17024176, 13596256, 1205812,
+-11806328, -621160, -7193534, 3471407, -8970039, -324807, -8612483, 6383932, -2405182, 1631014,
+21572546, -18327700, -1598802, 3198140, 1283122, -4015258, 477278, -8724152, 458488, -7322383,
+4410395, 8475044, -13129715, -10927471, 6230924, 754304, -3142842, -10420128, 4432406, 1321239,
+-482110, -2423972, 52076, -2450279, 7174743, -4879083, -1378148, 3280281, -2465848, -469762,
+5737540, -3953518, -2589865, -1571421, 1183800, 5884642, -2085744, -6815040, 355945, -4423817,
+15503758, -6379100, 1860795, 3455301, -4005594, 12306692, -1837172, -10864120, 3802657, -6253473,
+7594576, 3652870, -1764695, -770410, -2918430, -3049427, 7495792, -5120138, -2347200, -938450,
+-6673306, 8371965, -32304596, -47041168, 32691680, 151848576, 66105988, 69747048, -741419, -140010560,
+-101835824, -52546240, -110857400, 53950696, 65667904, 34561064, 142689008, 64560336, -6498823, 47680044,
+-92813704, -117711632, -67628552, -82389824, -18107046, 64149096, 65147136, 27655832, 109642464, 54808076,
+-7933342, 53119620, -48947596, -83262240, -48168060, -62583580, -98865312, 36531920, -1126355, -35172560,
+105900472, 64144264, 35721780, 108895672, 26029112, -54998668, 53286584, -78509320, -89974200, -18178450,
+-94619200, -95583960, 37650220, -15666430, 22939958, 120918360, 82505248, 86261200, 81024024, 10018548,
+-45732276, -52470540, -88294864, -115444960, -60819960, -32796908, -24109798, 44282188, 68644848, 64775624,
+91349656, 82804824, -12934294, -14492830, -15042049, -84778360, -25633976, -41703060, -63255740, 14209362,
+25702158, 4279935, 58628452, 26322780, 374199, 36899136, -28492814, -31132070, 703301, -20214800,
+-6543383, 15431281, -3323768, 17119740, 22646826, -12503724, 17783848, 7350837, -27704150, 2658048,
+-13289166, -52288544, -887985, -13265543, -22468048, 50538880, 14995341, 18995566, 66194036, 26320634,
+19333258, 14615237, -33026688, -48110612, -44724032, -74898864, -61368104, -27285390, 2449742, 33668784,
+76915352, 81548008, 74795248, 66334160, 40880036, -16388521, -47108812, -93791888, -118867512, -91750168,
+-55139864, -19489488, 49873696, 92463664, 106277888, 108948824, 52465708, -13139916, -36048196, -44297756,
+-57130580, -41292352, -42426224, -34329136, -5100811, 10273025, 16789564, 28822452, 30978526, 28351616,
+25851946, 14023605, 3661997, -4414153, -14708116, -22870700, -22622666, -19403588, -13933948, -8004746,
+2718178, 8898098, 12319577, 12787191, 12302934, 7923141, 4788889, -47245, -448824, -2206003,
+-3201898, -4710506, -2464774, -3774203, -4188130, -4038880, -2665027, -5740761, -2375117, 66035,
+2941516, 6598144, 9072045, 6065031, 8182987, 5013301, 1560147, -2833605, -6347425, -10062572,
+-8756901, -8764418, -4068408, -513785, 4300873, 5161477, 7738994, 6389838, 5264020, 1903207,
+897111, -2472291, -2388539, -3947612, -3363496, -3054259, -768799, -1487669, 806380, -236760,
+1251446, 922881, 920197, -337692, 2000381, 937914, 2284923, 625992, 963146, 33286,
+119722, -2251100, -1434519, -2835215, -1533840, -1693828, 87510, -198105, 1779190, 962073,
+2161442, 957241, 1504312, -88047, 602906, -891206, -107911, -1233729, -44023, -1045288,
+266288, -641024, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
4847408,
-2728378, -4322348, -1034013, -1574642, -177704, 6568079, 336618, -2756832, 3404299, 738734,
-314069, 1185948, 685584, 95563, 4875325, 2806761, -3362423, -1244467, -419296, -1131187,
-1340567, 2134062, 1371705, -1387274, -2160906, 853625, -4315906, -1908576, 3176128, 319438,
-2550137, 1360968, -2124398, 1618666, -9127, -1805497, 4474819, -2981781, -1456531, 613107,
-1515050, -2027225, -579821, -2927020, -5905043, 5526549, -1138166, -3023120, 286152, 5083631,
--32212, 1989644, -2545842, -1429687, -1072131, 1588601, -2021319, 4073240, 600222, 3679176,
--5324149, 2274185, -1411434, 921807, 2208150, -874026, -626528, -3868692, -10201, 2149631,
-441845, -1050656, -221728, 1917703, -1032403, -1002875, 2924873, -1313723, 903017, -525597,
--215285, -3608846, -1536525, -956704, 1292785, -235149, -1663763, -242666, -369367, -987843,
-932008, -1189169, 42413, 311922, 585189, 1026497, -471910, -846645, 889595, 223338,
--707596, 157840, 1542967, -177167, -192200, 668941, 15569, 247497, 217433, -448824,
--896574, -456340, 637266, -126165, 36507, 366683, -499290, 474594, -30065, -246424,
-1692754, 13801877, 4707284, -1073205, 3714073, 208843, 6782827, 4291746, -972273, 3514357,
-6088653, 8005819, -4733054, -4596152, 1944547, -1843615, -1561221, 5730023, 4597763, 4415227,
-3120831, 609349, -198642, -1976222, 2161442, 1540283, 7258495, 754304, -176094, -3200288,
-1496796, 2149094, -432718, -973884, -1156420, 1991254, -307090, -1154809, -2683281, 2844342,
--966905, -938450, 3999688, 5719286, -1488743, -680752, 3277597, 2967823, 5204427, 3253975,
-1416802, 555661, 4428112, 2534568, -6150393, 24696, 1862405, -3514894, 72478, 595927,
--4393215, 2245194, -2143189, 3297461, -726923, -548145, 1744831, 585726, -3037616, -251256,
-1655173, -574452, -767189, -857383, 304943, 3508452, 595390, -3496640, -856846, 844498,
--1069984, -428960, 5141613, -1027571, 605590, -587337, -1342714, 1185948, 1898376, -479963,
-850404, 958851, -979789, 474594, 836445, 219580, -659814, -1794760, -587874, -1072668,
--532039, -113280, 551366, -317828, 667867, 398358, -182536, 4761508, -364535, -9010305,
--4183298, -1753957, -1941325, -4908074, -4494147, -2833605, 4886062, -5368709, -2496450, -2553895,
-988379, 8131984, -1215476, -653372, 1997160, 4650913, -7116761, -1169305, 1460289, -3151969,
-2521683, 3974992, -4385699, -278636, 572841, -2561411, -6458557, 1117765, -2716030, 869194,
--2500208, 3693135, -4457103, -4174171, -10254234, -2772938, 3535295, -579821, -3930432, -1947231,
--489089, -4134443, 214748, -702764, 2842195, 2234994, -1056025, 121333, -1043677, -4364224,
-5327370, 919660, 3602941, -1327682, 19327, 928250, 1562831, 4114042, -1314260, -1002875,
-1225139, -123480, 4505958, 2397129, -3883187, -1551557, -963683, -6166500, -685047, -589484,
-3670587, -2368138, 3345780, 565862, -110059, -350577, -580894, -672699, 719407, -2493766,
-1161789, -1441498, 1262184, 1061931, 490700, 299037, 3594351, 2623151, -651224, 3256122,
--435939, -1109175, -1029182, 629750, -225486, 2225330, -569620, 1385664, 1141924, -208843,
-958851, -11274, 1003949, 973884, 297427, 327491, 1086627, 707596, -1464047, -822486,
--145492, 1803349, 2031520, -5906, -204011, 1085016, 19864, -686658, -19837380, -6172942,
--1780801, -1571958, -1686848, 7673496, -7086159, 3421478, -1677722, 1578401, -2047089, -1614371,
--5711770, 954020, -2102387, 450435, -8277476, 185220, -874026, -1458678, -164283, 1567126,
-1219771, -765041, -594853, -3291556, 991064, -2640868, 1716376, 9664, 1461363, 5162551,
--1378148, -5890548, -2553895, -6900402, 927176, 1255204, -656056, 1205812, -2443837, 2323577,
-1160715, -3053722, 234613, -8300561, -1800665, -5550172, 3011309, 5499169, -4869419, -374199,
-1546188, 847182, -7954280, 1326071, 4044786, -3801583, -1840930, -9040906, 3040300, -1305670,
-3709241, 6700686, 3790309, -5383742, 1112933, 1273995, 267899, -5987185, 1518808, -2552821,
-3959423, -1612223, -220117, 1870458, 1599339, 4711043, 5334350, 3665218, -297427, 1354525,
-3168075, 1613297, -3183645, -652298, -2131378, -2119566, 941135, -92879, 493384, 50466,
--650688, -178778, 1907502, -636192, -654983, 54224, -568546, -1420560, 1728724, 66572,
-808528, 2120103, -284005, 235149, -1688996, 1075352, 721555, 170725, -1697586, 554051,
-4832, 1122060, -12294344, 1388348, 2157147, -4355097, -580357, 12023761, 9273908, 5092221,
--1376000, -2136209, 5927055, 3780108, 1873143, 2298881, -4847408, 1686312, 427349, 5676336,
--5417565, -2418604, -1065689, 750009, -1140314, -6166500, -4248797, -4327717, -5203353, 2900177,
-3421478, 2267743, 1494649, 154082, 1458678, -738198, -712965, 435939, -1920924, -494458,
-2675765, 2164127, -4263829, -4663261, -484794, -4677220, 2779381, -1389422, -8028905, 1008780,
-4009889, 5796059, 3929895, 269509, 3709778, -5648956, -1881733, -2496987, -451508, 448824,
-2500745, -1914482, -5271536, 6400575, -5820755, -2712809, 3870839, 9233106, 2112050, 1866163,
--9027484, 9750650, 1098438, 6811282, 10349261, -2247342, 1046898, 1265405, -4327717, 8676371,
-1952600, -2775623, 2312303, -1154273, 4187056, -7041599, -3851512, -7196218, -1479079, -3162707,
-2833605, -1786170, 1162862, -3345780, -945430, -610959, -2258079, -95026, -898185, 943282,
--237297, -896574, -583042, -376883, 1633698, 515396, -1388885, -2898566, 1567126, 1690070,
-215285, 49929, -135291, -1171989, 433792, -767189, 1700807, 387621, 917512, -974958,
--1279363, -2290291, 1267015, 18491982, 13105019, -4699768, -6756521, 10250476, 6760279, 10792716,
-15961709, -8057896, 5572183, 2628520, 4679904, 2050847, 2838437, 6559489, 1702955, 6700149,
-288837, -4310537, 1873143, -1401233, 2335389, -812823, 12414603, 2072322, 2791192, 1661079,
-559420, 4308926, 1907502, 242666, -721555, 3082713, -2314987, 5897527, -4532264, 7103339,
--3286724, 4293894, 2324651, 2622615, 2160906, 10435160, 8056285, 496606, -2172180, -5664525,
-6262599, -6903086, 1809255, -3019899, 3121904, 6534256, 865436, -10942503, -8800388, 916976,
--5444408, -5991480, -3374771, -6907918, 2545842, 11975443, 6091874, -4409858, 360777, 1382443,
--3053722, -3528853, -498753, 5881958, 6626061, -6937983, 3375308, 7677791, 1615982, 2527052,
-3794067, 5983427, -941672, -4083440, 1680406, -1757715, -258235, -3917547, 3714073, 5657546,
-957778, 1014686, 875636, -3964792, -481573, -65498, -347355, 403190, -529355, 654446,
-582505, 1940788, 300648, -31675, 277562, 1248762, 2237141, 1118839, 2364380, 1241246,
-515933, 670015, -381715, -3689377, -3729105, 783295, 2921115, 727997, -738198, 693100,
--390842, 1786706, -1316944, -1303523, -2293513, 1053341, 8210904, 1506460, 11864310, -1090385,
--95563, -3973382, -3121368, 3914326, 8987219, -2659659, 2414845, 590021, 9731859, 3958886,
--4468377, -4216048, 676994, 1982664, 8846022, 8582955, 13183402, 2340220, 3698504, -2354179,
-5398774, 6044630, -2324651, -3063386, 4762045, -3670050, -4994510, 4684736, 1466195, -5873905,
--7109782, 10826002, 5488968, -408022, 6972343, 1314260, -4831302, 10281078, -2382096, 276489,
--214748, 2641405, -3723737, 2641405, -3730179, 2570538, -3462818, 3125126, -2826089, 4265440,
--3572876, -3699041, 9645960, -12071006, 710280, 1395328, -4101694, 772557, -13493714, -6680822,
-6497749, -5426155, 4004520, -1470489, 2712272, 1144609, 2329483, 1393180, -6102075, 3268470,
--3534221, -440234, -7761543, -4253092, -1920387, -1893007, 2250026, 7314330, 4280472, -5946919,
-2312840, 1127429, 80531, -2873333, 431644, -567473, 1469416, 657130, -1476395, -2030983,
--759136, -580357, -1115618, 4225711, 812286, -1647657, -890132, 996969, -1720671, 164283,
-877247, 39728, 255551, -4502737, -1795296, -1133871, 700080, -1262720, -158914, 2826625,
--227633, -767189, -811749, 290447, 898722, -9637907, -8232916, -68183, 3626563, 6692633,
--7795366, 2220498, -7001334, 5782100, 4495220, -9711458, -1966558, 1006633, -11308649, -6488085,
-6948720, -927713, -452582, 1603097, -676457, -11914776, 10903311, 667867, -7657927, -3777961,
-1483374, -1028108, -7359964, -2247879, -4214437, 1198296, -333934, -2388002, 2408403, -10332081,
--4543002, 2632815, 13507672, -2281702, -7881802, -5628018, -4373888, 9141838, -9734543, -1981591,
--644245, -10467372, -12975633, 3173444, -8983998, -1460826, 1380832, 6832219, 3869229, 535797,
-1520418, 8163659, -3503620, -2582886, 12174622, -8135205, 6357626, -2807835, -3000572, -1260036,
--1432372, 12934294, 335007, 5015448, -13303124, -9700184, 357556, -1955821, 14936823, 460098,
-10195179, 4258460, 12741020, 7689065, -1893007, -8866423, -3293166, 5925981, 2624225, 3995393,
--4878009, -5554467, -1501628, -1883880, 2662343, -1386738, -3548180, -668941, -843424, -56371,
--413927, 458488, -1435056, -1999844, 2449742, -199716, 176631, -703838, -1054951, -867583,
-680752, 2041183, -2150705, 463320, -1313186, -1999307, 1414655, -614717, -1822140, -2177549,
--403727, 1990717, 223875, 229781, 775778, 3616899, -3073049, -2595771, -1560684, 264677,
-1481227, -16028818, 1590212, -1646046, 10969883, 1185948, -11524471, 13729937, 4494147, -8193187,
--17735530, -7493644, 17609902, 785442, -2189360, -3029563, 1848983, 489089, 5455682, 2777233,
-5841156, -1353989, 10402411, -5448703, -12185359, 420907, 600222, -3008088, -411780, 4479114,
--3106335, -1970853, -1033477, 9667971, 7616588, 3822521, -690953, -13412646, -226560, -802622,
--525597, -2320893, -186294, -5933498, -10824391, -1812476, 7493108, 7148973, -2705830, 7688529,
--2491618, 3255048, 8601746, 8086887, -18089866, 6095096, 6559489, 2592013, -4393215, -16005732,
-9658845, 5568425, 3101503, -5788542, -3148211, -6540162, 3579318, -7243463, -1303523, 2684,
-6500970, -4148402, 3317862, 1668058, -11601244, -1727114, -7750806, 12602508, 5917928, -15084999,
--3160559, 11724187, 5917391, -6289443, -3067144, -6934762, -2290828, 3411815, -2071785, -949725,
--2593087, -3398393, -5685463, 973347, 449898, -1956895, -579821, 2785823, 1963874, -3722126,
--1276679, 2508261, -704375, 1887101, -2375117, -1777580, -471373, 399969, 3039763, -3374234,
--2314987, 1500554, -3693135, -424665, -2611340, 1437740, -2078764, 3392487, -1267015, -769873,
--1838783, 2110440, 1493575, 3880503, 1133871, 9986336, 12135430, 12493523, 9516037, 12251931,
--15390478, -10020696, -5324149, -4956929, -7379291, -5608154, -12352863, -4151086, 812286, 7386807,
--24696, -7025493, -347355, 7383586, 343061, -6056441, -2873333, 16752520, 1609002, 6322192,
-1914482, 6947110, 1395328, 2281702, -10294500, 5775658, 373125, 2414845, -10788421, 3768834,
--16563005, 32212, -5246303, 4143033, -1525787, -12052752, -302795, -11995844, 2196339, -9960566,
-9123047, -5141076, 14347875, 490163, -272730, 7277285, 1547799, -2231236, -2118493, 2972654,
--4912369, 3435974, 8854075, 4578972, -6593849, -3401077, 18983218, 1504312, 15142444, -13986561,
--2952253, -1433445, 11017665, -12194486, 1733019, 5927055, -12182138, 8571144, -7649337, 2290828,
-11850352, 1343788, 6678674, 3223910, 15485505, 6768869, -6414534, -4987531, -6178848, 1006096,
-599148, 6582038, -3862786, -663572, 4258460, 374199, 3287261, 4536023, 630286, -3510599,
-4297652, 3365644, -405338, 1413044, 1451699, -1500017, -1271847, -4999342, 3409667, -2350421,
--2265595, -912144, -2627983, 2576444, -1785096, -523986, -2815351, -607201, -623844, 3668439,
-2570001, -28454, -559420, -121870, 2047089, 2545305, 2171643, 4690105, -511638, -1702418,
--4510253, -15489800, 2456721, 14837501, 11341935, 12103755, -3919158, -3267396, 3210488, -2243047,
-15291157, 4951561, 7366406, 12644921, -767189, 4667019, -8506183, 12599287, 6510634, -3300146,
--7630547, -7347079, 8689793, -14841796, 5924908, 8396124, -5996311, -8322573, -4535486, 7830263,
-3127273, -3073586, -5237713, 25770, -8925479, -13743358, 2650532, -13191992, -19387482, -2530810,
-916439, 19738596, -8385924, -6820408, 8979166, 14529337, 14766098, 7718593, -732292, 3328063,
--6143951, 1070521, -6447283, 16261283, 14548665, 9280351, -511638, -16732656, 47245, -14296336,
-15868830, 12168179, 7734699, -11870753, 9904195, 5516349, 6899865, -2249489, -9885941, -7325067,
--7881802, 2691334, -11136313, -20672752, 4183835, 13971529, 7531762, 13719199, -4066260, -3808562,
-14005351, 4606353, 1991791, 9212168, 3168612, 252329, 8064875, 4989679, -626528, 3621194,
-3559991, 2081985, -2523830, -4563940, -5916318, 1610613, 3992709, 2257005, 8129300, 209917,
-5823976, -1799054, 2450816, 4536559, 728534, -2064806, -1133335, -6645388, -5611375, 2026688,
-1554778, 2675765, 7071664, 1054951, 5401995, -1974074, -1054415, 947040, -4998268, -3983582,
--1373853, -4273493, 2155537, -1386738, 1767916, 3933116, 5571110, 7875897, 12444131, 26910654,
-11894375, 9415642, 8695698, -16604344, -2662343, -6053220, 21210696, -21572010, -20540144, 5902359,
-13826037, -361851, 16920024, 15422691, -789737, 5950677, -10239202, -7323993, 16080894, -6339909,
-11031623, 3945464, -7235946, -3729642, -3240016, -3537443, -7547332, 6286759, 6636798, 5615670,
-464393, -8362302, -10834055, 13965623, -13780403, 10817949, 935766, -16893716, 8461622, 16136729,
--389768, -4360466, -2107755, 1327145, 864899, 11014981, -642635, -8249559, -3512747, 9374840,
--17116518, 4133906, -2924336, 13881871, 14562087, 9783399, 11383811, 15090904, 10766409, 3956739,
--9865540, -11028402, 5271536, 7370701, -598074, 6387153, 8621073, 22991496, -13033615, 14554570,
--8686034, -5490579, 15738908, 2426657, -9507984, -8210367, -8777839, -14155138, -4908074, -6910066,
-11276974, 297427, -9134859, 4988068, 3084324, -1915019, 5258114, -10788421, 6996502, 483184,
--1075352, -1139777, 5936719, 1059246, 1517197, 6285148, -2666638, 1046898, 4513474, -6897718,
-4819490, 304943, 1757715, -3070365, 3831111, -1358283, 397284, 5367099, -39728, -1264331,
-1303523, 3628174, 4485557, 7611756, 6124624, 2280628, -3572339, -2896956, -10849624, 2410014,
--9045738, -2636573, -3972308, -3676492, 4199941, 1643899, -4349728, -17884244, -3197603, 10413685,
--12848932, 411780, -8085813, -14127758, 20549272, 17574470, 14686641, 6967511, 3824669, 5784784,
-15084999, 8338142, 15465103, -5726802, 12952548, -9760850, 15687905, 21079162, 13211319, 10537165,
-5360119, 10883447, 10958609, -3257733, 21811454, 5238250, -13164075, 6241661, -13327820, -9163313,
--2736431, -20721070, 349503, -4419522, -5624797, -10075456, -5245229, -2896419, -653372, -2046552,
-892816, 863288, -11899744, -7858180, 2457795, -6284611, 4932770, 20401094, -10294500, -835908,
--1945620, 748398, -9760850, 5250598, -4692252, 15789374, 3355980, 9427990, 14766098, 2514167,
--986769, -9751186, -21696028, 2855080, 16140487, 11710765, -3060164, -14464913, 12175159, 1272921,
-7332583, -18517214, -13290776, -12197707, -18356690, -11374684, -13430900, 6242198, 1982127, 4685273,
-6123013, 8460012, -4146791, 8610873, 9804337, 295816, 5270462, -3161633, -6513318, -6717866,
--7051263, -2836289, -5141076, -328028, 1549410, -693637, 464930, 1292785, -5965173, -5530308,
--9444096, -3250753, -2190433, -5268315, 2077154, 769336, -2789581, -8556649, -3929358, -3167002,
--2202781, 7113540, 2180233, -3126199, -3937948, -1449552, -10248866, 2784750, -2085207, 5284958,
-609885, -3240016, -6039798, 6295885, -4139812, 9009768, -30701500, -19654844, -9352291, 21930640,
-15969225, -11892764, 13681618, 12348031, 10527502, 10308995, -10309532, 1038308, 5938329, -10254771,
--30947924, -5662378, -8601746, -18981072, 1693828, -6489159, -4876399, 5778342, 3424700, -4242354,
-883153, 14472966, 15475841, -28539520, 6747394, 1423782, 13156559, 4461398, 682363, -17789218,
-5381057, -4587025, -4975720, -12247636, -9129490, 22808424, -10421201, -449898, 2668785, -6080063,
-25210384, 11955578, -11310796, -6848862, -19837380, -2898566, 18830748, 5501316, 5645735, -6253473,
-11470784, -2769180, -5060545, 10580652, -6376953, 17574470, -4225174, 13079249, -26850524, -9117679,
-15244986, 3716757, -2554969, 4259534, -29707752, -14057428, 4401268, -11871826, 4421669, 1147830,
-3182571, 18107582, -6907918, 7273527, -1552631, -14816027, -2683281, 11119670, 16057272, -575526,
--6910066, -12570832, 212064, -17528298, -5823439, 1453846, 20411832, 18281528, 2357937, 7645579,
-2156074, -3133716, 10030359, 7631083, -4199405, 8381092, 6217502, 3318936, -7244536, -562104,
--3840238, 6095096, 4132296, 5413270, -634581, -8449274, 7708393, 286152, -4088272, -8232379,
--583042, -736587, -7896298, 5322538, -5797669, -8979166, 9846749, -4100620, -3608846, -4579509,
-2030983, 1349694, 7841000, 1689533, -1591822, 3256122, 4763656, -9100499, 2259153, 2474975,
--3701188, 5568425, -13370770, -38436736, -3257196, -4641249, -4161823, 5878737, -15334644, 30113626,
--5499169, 1320703, 33229088, -39130372, -4067871, -7676717, -3728569, -44818520, 2499134, -6965900,
--8659728, 15152645, -15379204, 2319282, 2937221, 7199976, -1408212, -16369194, 11169599, -10769094,
-23280334, -4058744, -26388280, -1999844, -886911, -13375602, -26585848, 11883101, 13543106, -22324704,
-18185966, -20197620, -15653545, -9700721, 1763621, 1549946, 3006477, 12786118, -2430952, -12331925,
--28983514, 5836861, -39183524, -20908974, -13464186, -31493922, -18590766, -9140227, -1913945, -14833206,
-22468584, 23010824, 5151277, -7052337, 25527138, 11411191, -2889439, -5846524, 18389440, 13449153,
--6240051, 24193014, -20359756, -10549513, 26591754, 12395812, 37288908, -20441360, -22858352, 5832566,
--17370996, 18662170, 2062658, 6436546, 35458176, -19607062, -20866024, -7788387, 7416335, 7998303,
-8980240, 8986682, 10324565, -10970957, 4385162, 1602023, -699543, -1323924, -7224672, -5881958,
-10413148, -11235634, -476205, 2209761, -5314485, 1346472, -5449777, -447750, -502511, 2278480,
--8852464, 4525822, 11281268, 3266323, 2799245, 12308303, 9186935, -905164, -11800423, 10880763,
-2885144, -4164508, -8764955, 11297375, 1812476, 317291, 7020124, 8749385, -11190537, 5836861,
-3802657, -8138426, -3234110, -12627741, 8066486, -1536525, -14253923, -7118909, 3527779, 29916594,
-16939888, -2763812, 40373228, -4658966, 16525960, -19099720, 23525146, 22255984, -2118493, -17865454,
-1790465, 6454262, -10075993, 10555419, -14660334, -242666, -4578972, -4786204, -16650514, -12108587,
--7636452, -1021129, -5469104, -13008382, 19192598, 13236552, 3467649, -5407364, 3175055, 18575734,
-8634495, 13647795, 8476118, -10179072, -15855946, 31769336, -4285841, -17381196, -7368017, -7471096,
--4280472, 22989886, 860604, -17735530, -6900939, -44074956, -10983305, -5173825, 27018028, 18740552,
--53691388, -23076322, -13164075, -279710, 2552821, -21389474, 15606837, 8412230, 13563507, 26854284,
--35273492, 34366716, 24542516, -11177116, -23737748, 1495186, -6030134, 9143449, 31148714, -16221555,
--18292266, 25511032, -30205968, -33647312, -13702019, 3437048, -9794136, -36872296, -15070503, -11926050,
-401043, 2015413, -10722386, -748935, 1414655, 438624, 2962454, -23309862, -8370892, -7725573,
-1313723, 6507413, -1919850, -7457674, -4532264, 2472291, 11695733, 12703976, -1969779, -11044508,
--3075734, 16164109, 752693, -4217121, 3161096, -21951040, -6675453, -10360535, 1232656, 3784403,
--21505438, -21700860, 5184026, 18857590, -8332237, 12338367, 3580929, -6088653, -2005213, 5002027,
-3552475, -1794760, 3526168, -632971, 28068148, 3775276, 10559177, -21904870, -34579320, 49984828,
-25046638, 2274722, 3297998, -11239393, -29407104, 10333154, -2265595, 25245280, 5671505, 9377524,
-27699854, 15315853, -279173, -2936684, 4713190, -16852914, -13835163, -17918604, -9968619, 16623134,
--4502200, 1068910, 20812874, -3547643, 9160628, -28822452, -25859998, -17561048, 15039902, 6118181,
--898722, 6885907, -9108015, -25912612, 32813014, -31081068, 14404247, 14813879, 11719355, 5223754,
-19903952, -12765180, -31738734, 23548768, 66781908, -11733851, 32350768, -38788388, -20854214, 24015846,
-14133664, -36010616, -10060961, -3018288, 31381178, -7759396, -3293703, -48974440, -31392990, -11236171,
--35878548, 30100742, 32163936, 50610284, -44697724, 19278498, 5721970, -24899000, -1321239, -1167694,
--51644296, 36929740, -15251966, 17441862, -5189394, 2883534, 70182448, -18914500, 24434606, 16068010,
--16836808, 30540976, 92342, -5873905, 2002529, 7885560, 19870130, 12083354, 7992934, -687732,
-18822694, -17503602, -8477192, 1480153, 4823785, 8674223, -4643934, 15089831, 2187749, 6706055,
--2782602, 11432666, -803159, -16752520, 9793062, -20580410, -11992086, -4787278, 8987756, -2201708,
-10700374, 24064702, 37354940, 26823682, 7563975, 17251274, -9786083, 8768176, -447750, -768799,
--1395328, 3582003, -7514582, 10538776, -10030896, -44479220, -25451976, -774705, -6907918, -14810121,
-5273146, 14535780, 1343251, -15662135, -943282, -15008226, 40893996, -12462384, 794569, 31255550,
--1894081, -31774168, -22350472, -21674016, -9809168, -11474542, 34046744, 3684008, 5495948, 17182016,
--9513889, -9403831, -5887327, -9590125, -20993800, -4762582, 39050916, 12783970, 9175661, -25910464,
-9470403, 2175938, -18690088, -2031520, -9433359, 42661372, -33772940, -28905130, -10368051, 5435818,
--10154913, 1426466, 11349988, -22011170, -6077916, 36153960, -29159606, 5225902, -7402376, -17522930,
--30917322, -23404350, 1017370, -42753716, -51969640, 12426951, 10499584, 8444443, -46448996, 35894116,
-43343736, -14642080, -12703440, 2824478, -1926293, -9686762, -24185498, 17548700, 65471944, 17133162,
--16317118, 423054, 10303627, 21982716, 5816997, -38712688, -34720516, 37596532, -7285875, -15250892,
--22715008, 7877507, 42765528, 13217225, -13653701, 7988639, -1761474, -7551090, -3844533, -2214056,
-18876382, 10563472, -6537477, -10419591, 8499740, 5049808, -1676648, -4275640, 6862284, -10084583,
-6229313, 16497506, -1583232, -9038222, -2799245, -5803038, -10011569, -18358838, 2628520, 14092325,
--9449465, -11570105, 5689758, -14454712, 46708, -23540716, 11285027, 14723148, 37531036, -11932493,
--5134634, -15531139, -15964393, 4523138, 8271570, 15637439, -1877438, -3370476, -15736760, 6341519,
-3897683, 4731980, -4646618, -982474, 9900973, 11458973, -14221710, -37426344, 10340134, 14659797,
--55488292, 30403536, 1290638, -15786152, 5302137, 20260434, -28684476, 17723720, -26636850, 7205345,
--1557999, -13402445, -7469485, -3618510, -19615116, 14056354, 12276627, -558883, 6765111, 865436,
-10858214, 14191646, 13704704, 20348482, 17464410, -10805064, 2710661, -22185654, 23516556, -18188650,
-5749888, -3502009, 4785668, 1156420, -16820166, 15290084, -8531953, -16244640, 34068756, -27269284,
-8178155, -7863012, -13565117, 13755170, -3561602, 4081830, 21223044, -25671020, 1026497, -31454192,
--61982820, -1581622, 19732690, -7444252, 79639432, 16215649, -31143344, 8749385, -43444132, 15079093,
-31051002, 36697276, -12637941, -7243999, -48299056, -55346024, -4677757, -34506840, 8151848, -2183454,
--30138860, -7057705, -14936823, -32971390, 26984206, 53130892, -14940044, 3741990, 11436424, -14103599,
-16412681, 20941724, -14585172, 2424509, 20938, -26468272, 13182865, 2221035, 8000451, 9668508,
--18728742, 7306276, -9953587, -15015743, -17027934, 14433238, -10581189, 5925981, -16463147, -5941014,
--1157494, -20051054, 19586662, -12716324, 3887482, 5974300, -18708878, -3058554, 14354854, -1719598,
-2012192, 3188476, -5492727, 8827232, 18541910, -2240362, 10754598, 12703976, -15914464, -30154428,
-10158671, 4199941, 17368310, 20832738, -27278948, -26776974, 4653597, -7870528, 4741644, 9076340,
-4943508, -39546448, 8159364, -2888366, -23034984, 10358387, -14954539, -10118943, -18592376, 9470940,
--20248624, 25924422, -2752537, 9588514, -5976447, 34825744, -9465034, 19117974, -311922, 22795538,
--6367826, -11540040, 7449084, -13058311, -13779329, 1852205, 25956634, 16672526, -17676474, 18856518,
--13260175, -20321638, 5719286, 27742804, -10687489, -11338714, 14843944, 6640557, -13841069, 1525787,
-18882824, -7901129, -18187576, 9878425, 7563438, 11585137, 21260624, 4436701, -12855374, -4248797,
-46719044, 49070000, -13590350, -40687836, 31162672, -13623636, 8775155, 4394826, 52605832, 7207492,
--27340152, -10009958, -6644852, 1454920, 8119636, 12677133, 17078400, -20345260, 6501507, 4596689,
-30485140, -7635915, 21470004, 23105850, 12776454, 11008001, 6637872, 18395882, -17683990, 19797652,
-25190520, 18174154, 3047279, -35755604, -5367636, -23066658, 1042603, 15457587, 5173825, -7895224,
--12584254, -7367480, -2032593, -927176, 6521371, -7420630, 1977833, -787053, -5639292, 10869488,
-4206921, -9774272, -4642860, -2521683, 13258027, -22012, 2684892, -12816719, -9204652, -16997334,
--8036958, -1051730, -1660005, 215822, -3009698, -15235323, 3875134, -5215164, -2545305, 2247342,
--4301410, -227633, -13244069, -3153580, 500901, 194884, 227633, -3376381, -3379603, -1166084,
--5284421, -7432978, 55439436, 23372138, -25103546, 6090801, -26223996, -14164265, -1843078, 9511205,
--4227859, 20367808, -24256902, -715649, 9503152, -777926, 9884867, -1408212, 3437585, 2359011,
--17396766, -5414343, 4512937, -16155519, -16352551, 1405528, 4151086, -11479911, 8196945, 7994008,
--4897874, -8105677, -1343788, 1796907, -2893197, 6872485, 1714766, 5419712, -7189776, -3000035,
-12649216, 40265, 613643, 6161131, -4137127, 6813429, -6514929, -11993159, -7846905, 12444668,
--9904195, -7223598, 733903, -9751186, -10598906, 15133317, -15064061, 23905252, 5204427, -10557566,
-10426033, 1687385, -17727478, 1575179, -3196530, -3075734, 8376797, -244276, -10412611, 20339354,
--12210592, -4702989, 10492605, 3406446, -4450123, 548682, 3230889, -311922, -876710, -2075006,
-4650913, 8464844, -345745, -14053670, 10059350, -7236483, -1108638, 12071006, -814433, -3662533,
--513249, -10386305, 5016522, 3626563, -1178969, 253403, 4227322, -10113574, 718333, -3451006,
-1001264, 4215511, 1054951, -4286914, 9917616, -15090904, 1957431, 1807644, -1097364, 1892470,
--2248416, -8512088, 9386651, -4347581, 6698002, 133144, -1125281, 8888435, 3285650, -7402913,
-2776160, -3722663, -3259880, 1722819, 5586679, 5735392, -2270427, -7308424, 3721052, -4150549,
-5055714, -33692408, -40260488, 33934536, 138030048, 53842784, 63384592, 744103, -129016520, -95211368,
--49600968, -75897440, 34105260, 65138012, 27015882, 115242024, 65383896, -4460324, 27218282, -58446452,
--117563992, -47079284, -81627464, -13187697, 56721484, 47576428, 43279848, 71779104, 44463112, 12072616,
-19850802, -5484137, -83632680, -37132140, -30062086, -115817552, 21548924, 15032922, -51282984, 83194056,
-82553032, -2950643, 104424616, 51164336, -48380124, 32235340, -48099340, -100430296, -7873749, -60723860,
--87679608, 15362024, 9467719, -5390184, 81905560, 78754128, 47201152, 70086888, 42762840, -27472222,
--30714384, -54899884, -93744640, -69385736, -32965484, -31121870, 16892644, 52811456, 36272608, 58036284,
-87954488, 34027416, -11503533, -11170136, -60749628, -49274548, 4553202, -56537876, -25542170, 30397094,
-7582765, 38094212, 30831422, -15880642, 10304163, -3355443, -20959440, 4452808, -9340480, -9687836,
-19468550, 6544457, 8259222, 25673704, -14840723, -5976447, 14081587, -19501300, -15810848, 7119982,
--46176804, -7902740, 15870978, -37455872, 18251464, 23038204, 2499134, 58191440, 55586540, 12547210,
-22572738, -16465831, -49649284, -25152940, -66085052, -75278432, -42556684, -18362596, 14221710, 71278200,
-82874616, 86561304, 77101640, 43761960, -9618579, -48790292, -76794016, -107399952, -91669096, -50736448,
--13107703, 42878268, 77457048, 77020040, 69096896, 44627396, -8495445, -14242112, -22263500, -33864208,
--23936390, -21363168, -24946244, -13806172, -7085086, -6381248, 4862977, 14090714, 19130322, 24723442,
-23032298, 17706540, 7861938, 628139, -9373766, -14001057, -18262200, -19474456, -19316616, -8223789,
-614717, 6662568, 6604586, 9985262, 10718091, 11385421, 8237748, 2327336, -1110249, -702227,
--4121558, -3486440, -3197603, -6143951, -7156490, -1592359, -2497524, -1760937, -1137630, -843424,
-2638721, 7115150, 5375152, 5545340, 5408438, 3035468, 875636, -1122597, -5516349, -6068252,
--6627672, -4920959, -2943663, -189515, 726923, 3082176, 4450123, 4684199, 2326799, 1520955,
-382789, 314606, -493384, -860604, -1682017, -575526, -962610, -799938, -1381906, -1335735,
--1725503, -949188, -1247151, 622233, 1688996, 3003793, 2822331, 2683818, 1402844, 962073,
--914828, -1541356, -2136209, -2368138, -2803540, -1040993, -769336, 215822, 470836, 1174137,
-947040, 1707786, 819265, 982474, 197032, 193810, -653909, -222801, -752693, -134755,
--380641, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+2728378, -4322348, -1034013, -1574642, -177704, 6568079, 336618, -2756832, 3404299, 738734,
+314069, 1185948, 685584, 95563, 4875325, 2806761, -3362423, -1244467, -419296, -1131187,
+1340567, 2134062, 1371705, -1387274, -2160906, 853625, -4315906, -1908576, 3176128, 319438,
+2550137, 1360968, -2124398, 1618666, -9127, -1805497, 4474819, -2981781, -1456531, 613107,
+1515050, -2027225, -579821, -2927020, -5905043, 5526549, -1138166, -3023120, 286152, 5083631,
+-32212, 1989644, -2545842, -1429687, -1072131, 1588601, -2021319, 4073240, 600222, 3679176,
+-5324149, 2274185, -1411434, 921807, 2208150, -874026, -626528, -3868692, -10201, 2149631,
+441845, -1050656, -221728, 1917703, -1032403, -1002875, 2924873, -1313723, 903017, -525597,
+-215285, -3608846, -1536525, -956704, 1292785, -235149, -1663763, -242666, -369367, -987843,
+932008, -1189169, 42413, 311922, 585189, 1026497, -471910, -846645, 889595, 223338,
+-707596, 157840, 1542967, -177167, -192200, 668941, 15569, 247497, 217433, -448824,
+-896574, -456340, 637266, -126165, 36507, 366683, -499290, 474594, -30065, -246424,
+1692754, 13801877, 4707284, -1073205, 3714073, 208843, 6782827, 4291746, -972273, 3514357,
+6088653, 8005819, -4733054, -4596152, 1944547, -1843615, -1561221, 5730023, 4597763, 4415227,
+3120831, 609349, -198642, -1976222, 2161442, 1540283, 7258495, 754304, -176094, -3200288,
+1496796, 2149094, -432718, -973884, -1156420, 1991254, -307090, -1154809, -2683281, 2844342,
+-966905, -938450, 3999688, 5719286, -1488743, -680752, 3277597, 2967823, 5204427, 3253975,
+1416802, 555661, 4428112, 2534568, -6150393, 24696, 1862405, -3514894, 72478, 595927,
+-4393215, 2245194, -2143189, 3297461, -726923, -548145, 1744831, 585726, -3037616, -251256,
+1655173, -574452, -767189, -857383, 304943, 3508452, 595390, -3496640, -856846, 844498,
+-1069984, -428960, 5141613, -1027571, 605590, -587337, -1342714, 1185948, 1898376, -479963,
+850404, 958851, -979789, 474594, 836445, 219580, -659814, -1794760, -587874, -1072668,
+-532039, -113280, 551366, -317828, 667867, 398358, -182536, 4761508, -364535, -9010305,
+-4183298, -1753957, -1941325, -4908074, -4494147, -2833605, 4886062, -5368709, -2496450, -2553895,
+988379, 8131984, -1215476, -653372, 1997160, 4650913, -7116761, -1169305, 1460289, -3151969,
+2521683, 3974992, -4385699, -278636, 572841, -2561411, -6458557, 1117765, -2716030, 869194,
+-2500208, 3693135, -4457103, -4174171, -10254234, -2772938, 3535295, -579821, -3930432, -1947231,
+-489089, -4134443, 214748, -702764, 2842195, 2234994, -1056025, 121333, -1043677, -4364224,
+5327370, 919660, 3602941, -1327682, 19327, 928250, 1562831, 4114042, -1314260, -1002875,
+1225139, -123480, 4505958, 2397129, -3883187, -1551557, -963683, -6166500, -685047, -589484,
+3670587, -2368138, 3345780, 565862, -110059, -350577, -580894, -672699, 719407, -2493766,
+1161789, -1441498, 1262184, 1061931, 490700, 299037, 3594351, 2623151, -651224, 3256122,
+-435939, -1109175, -1029182, 629750, -225486, 2225330, -569620, 1385664, 1141924, -208843,
+958851, -11274, 1003949, 973884, 297427, 327491, 1086627, 707596, -1464047, -822486,
+-145492, 1803349, 2031520, -5906, -204011, 1085016, 19864, -686658, -19837380, -6172942,
+-1780801, -1571958, -1686848, 7673496, -7086159, 3421478, -1677722, 1578401, -2047089, -1614371,
+-5711770, 954020, -2102387, 450435, -8277476, 185220, -874026, -1458678, -164283, 1567126,
+1219771, -765041, -594853, -3291556, 991064, -2640868, 1716376, 9664, 1461363, 5162551,
+-1378148, -5890548, -2553895, -6900402, 927176, 1255204, -656056, 1205812, -2443837, 2323577,
+1160715, -3053722, 234613, -8300561, -1800665, -5550172, 3011309, 5499169, -4869419, -374199,
+1546188, 847182, -7954280, 1326071, 4044786, -3801583, -1840930, -9040906, 3040300, -1305670,
+3709241, 6700686, 3790309, -5383742, 1112933, 1273995, 267899, -5987185, 1518808, -2552821,
+3959423, -1612223, -220117, 1870458, 1599339, 4711043, 5334350, 3665218, -297427, 1354525,
+3168075, 1613297, -3183645, -652298, -2131378, -2119566, 941135, -92879, 493384, 50466,
+-650688, -178778, 1907502, -636192, -654983, 54224, -568546, -1420560, 1728724, 66572,
+808528, 2120103, -284005, 235149, -1688996, 1075352, 721555, 170725, -1697586, 554051,
+4832, 1122060, -12294344, 1388348, 2157147, -4355097, -580357, 12023761, 9273908, 5092221,
+-1376000, -2136209, 5927055, 3780108, 1873143, 2298881, -4847408, 1686312, 427349, 5676336,
+-5417565, -2418604, -1065689, 750009, -1140314, -6166500, -4248797, -4327717, -5203353, 2900177,
+3421478, 2267743, 1494649, 154082, 1458678, -738198, -712965, 435939, -1920924, -494458,
+2675765, 2164127, -4263829, -4663261, -484794, -4677220, 2779381, -1389422, -8028905, 1008780,
+4009889, 5796059, 3929895, 269509, 3709778, -5648956, -1881733, -2496987, -451508, 448824,
+2500745, -1914482, -5271536, 6400575, -5820755, -2712809, 3870839, 9233106, 2112050, 1866163,
+-9027484, 9750650, 1098438, 6811282, 10349261, -2247342, 1046898, 1265405, -4327717, 8676371,
+1952600, -2775623, 2312303, -1154273, 4187056, -7041599, -3851512, -7196218, -1479079, -3162707,
+2833605, -1786170, 1162862, -3345780, -945430, -610959, -2258079, -95026, -898185, 943282,
+-237297, -896574, -583042, -376883, 1633698, 515396, -1388885, -2898566, 1567126, 1690070,
+215285, 49929, -135291, -1171989, 433792, -767189, 1700807, 387621, 917512, -974958,
+-1279363, -2290291, 1267015, 18491982, 13105019, -4699768, -6756521, 10250476, 6760279, 10792716,
+15961709, -8057896, 5572183, 2628520, 4679904, 2050847, 2838437, 6559489, 1702955, 6700149,
+288837, -4310537, 1873143, -1401233, 2335389, -812823, 12414603, 2072322, 2791192, 1661079,
+559420, 4308926, 1907502, 242666, -721555, 3082713, -2314987, 5897527, -4532264, 7103339,
+-3286724, 4293894, 2324651, 2622615, 2160906, 10435160, 8056285, 496606, -2172180, -5664525,
+6262599, -6903086, 1809255, -3019899, 3121904, 6534256, 865436, -10942503, -8800388, 916976,
+-5444408, -5991480, -3374771, -6907918, 2545842, 11975443, 6091874, -4409858, 360777, 1382443,
+-3053722, -3528853, -498753, 5881958, 6626061, -6937983, 3375308, 7677791, 1615982, 2527052,
+3794067, 5983427, -941672, -4083440, 1680406, -1757715, -258235, -3917547, 3714073, 5657546,
+957778, 1014686, 875636, -3964792, -481573, -65498, -347355, 403190, -529355, 654446,
+582505, 1940788, 300648, -31675, 277562, 1248762, 2237141, 1118839, 2364380, 1241246,
+515933, 670015, -381715, -3689377, -3729105, 783295, 2921115, 727997, -738198, 693100,
+-390842, 1786706, -1316944, -1303523, -2293513, 1053341, 8210904, 1506460, 11864310, -1090385,
+-95563, -3973382, -3121368, 3914326, 8987219, -2659659, 2414845, 590021, 9731859, 3958886,
+-4468377, -4216048, 676994, 1982664, 8846022, 8582955, 13183402, 2340220, 3698504, -2354179,
+5398774, 6044630, -2324651, -3063386, 4762045, -3670050, -4994510, 4684736, 1466195, -5873905,
+-7109782, 10826002, 5488968, -408022, 6972343, 1314260, -4831302, 10281078, -2382096, 276489,
+-214748, 2641405, -3723737, 2641405, -3730179, 2570538, -3462818, 3125126, -2826089, 4265440,
+-3572876, -3699041, 9645960, -12071006, 710280, 1395328, -4101694, 772557, -13493714, -6680822,
+6497749, -5426155, 4004520, -1470489, 2712272, 1144609, 2329483, 1393180, -6102075, 3268470,
+-3534221, -440234, -7761543, -4253092, -1920387, -1893007, 2250026, 7314330, 4280472, -5946919,
+2312840, 1127429, 80531, -2873333, 431644, -567473, 1469416, 657130, -1476395, -2030983,
+-759136, -580357, -1115618, 4225711, 812286, -1647657, -890132, 996969, -1720671, 164283,
+877247, 39728, 255551, -4502737, -1795296, -1133871, 700080, -1262720, -158914, 2826625,
+-227633, -767189, -811749, 290447, 898722, -9637907, -8232916, -68183, 3626563, 6692633,
+-7795366, 2220498, -7001334, 5782100, 4495220, -9711458, -1966558, 1006633, -11308649, -6488085,
+6948720, -927713, -452582, 1603097, -676457, -11914776, 10903311, 667867, -7657927, -3777961,
+1483374, -1028108, -7359964, -2247879, -4214437, 1198296, -333934, -2388002, 2408403, -10332081,
+-4543002, 2632815, 13507672, -2281702, -7881802, -5628018, -4373888, 9141838, -9734543, -1981591,
+-644245, -10467372, -12975633, 3173444, -8983998, -1460826, 1380832, 6832219, 3869229, 535797,
+1520418, 8163659, -3503620, -2582886, 12174622, -8135205, 6357626, -2807835, -3000572, -1260036,
+-1432372, 12934294, 335007, 5015448, -13303124, -9700184, 357556, -1955821, 14936823, 460098,
+10195179, 4258460, 12741020, 7689065, -1893007, -8866423, -3293166, 5925981, 2624225, 3995393,
+-4878009, -5554467, -1501628, -1883880, 2662343, -1386738, -3548180, -668941, -843424, -56371,
+-413927, 458488, -1435056, -1999844, 2449742, -199716, 176631, -703838, -1054951, -867583,
+680752, 2041183, -2150705, 463320, -1313186, -1999307, 1414655, -614717, -1822140, -2177549,
+-403727, 1990717, 223875, 229781, 775778, 3616899, -3073049, -2595771, -1560684, 264677,
+1481227, -16028818, 1590212, -1646046, 10969883, 1185948, -11524471, 13729937, 4494147, -8193187,
+-17735530, -7493644, 17609902, 785442, -2189360, -3029563, 1848983, 489089, 5455682, 2777233,
+5841156, -1353989, 10402411, -5448703, -12185359, 420907, 600222, -3008088, -411780, 4479114,
+-3106335, -1970853, -1033477, 9667971, 7616588, 3822521, -690953, -13412646, -226560, -802622,
+-525597, -2320893, -186294, -5933498, -10824391, -1812476, 7493108, 7148973, -2705830, 7688529,
+-2491618, 3255048, 8601746, 8086887, -18089866, 6095096, 6559489, 2592013, -4393215, -16005732,
+9658845, 5568425, 3101503, -5788542, -3148211, -6540162, 3579318, -7243463, -1303523, 2684,
+6500970, -4148402, 3317862, 1668058, -11601244, -1727114, -7750806, 12602508, 5917928, -15084999,
+-3160559, 11724187, 5917391, -6289443, -3067144, -6934762, -2290828, 3411815, -2071785, -949725,
+-2593087, -3398393, -5685463, 973347, 449898, -1956895, -579821, 2785823, 1963874, -3722126,
+-1276679, 2508261, -704375, 1887101, -2375117, -1777580, -471373, 399969, 3039763, -3374234,
+-2314987, 1500554, -3693135, -424665, -2611340, 1437740, -2078764, 3392487, -1267015, -769873,
+-1838783, 2110440, 1493575, 3880503, 1133871, 9986336, 12135430, 12493523, 9516037, 12251931,
+-15390478, -10020696, -5324149, -4956929, -7379291, -5608154, -12352863, -4151086, 812286, 7386807,
+-24696, -7025493, -347355, 7383586, 343061, -6056441, -2873333, 16752520, 1609002, 6322192,
+1914482, 6947110, 1395328, 2281702, -10294500, 5775658, 373125, 2414845, -10788421, 3768834,
+-16563005, 32212, -5246303, 4143033, -1525787, -12052752, -302795, -11995844, 2196339, -9960566,
+9123047, -5141076, 14347875, 490163, -272730, 7277285, 1547799, -2231236, -2118493, 2972654,
+-4912369, 3435974, 8854075, 4578972, -6593849, -3401077, 18983218, 1504312, 15142444, -13986561,
+-2952253, -1433445, 11017665, -12194486, 1733019, 5927055, -12182138, 8571144, -7649337, 2290828,
+11850352, 1343788, 6678674, 3223910, 15485505, 6768869, -6414534, -4987531, -6178848, 1006096,
+599148, 6582038, -3862786, -663572, 4258460, 374199, 3287261, 4536023, 630286, -3510599,
+4297652, 3365644, -405338, 1413044, 1451699, -1500017, -1271847, -4999342, 3409667, -2350421,
+-2265595, -912144, -2627983, 2576444, -1785096, -523986, -2815351, -607201, -623844, 3668439,
+2570001, -28454, -559420, -121870, 2047089, 2545305, 2171643, 4690105, -511638, -1702418,
+-4510253, -15489800, 2456721, 14837501, 11341935, 12103755, -3919158, -3267396, 3210488, -2243047,
+15291157, 4951561, 7366406, 12644921, -767189, 4667019, -8506183, 12599287, 6510634, -3300146,
+-7630547, -7347079, 8689793, -14841796, 5924908, 8396124, -5996311, -8322573, -4535486, 7830263,
+3127273, -3073586, -5237713, 25770, -8925479, -13743358, 2650532, -13191992, -19387482, -2530810,
+916439, 19738596, -8385924, -6820408, 8979166, 14529337, 14766098, 7718593, -732292, 3328063,
+-6143951, 1070521, -6447283, 16261283, 14548665, 9280351, -511638, -16732656, 47245, -14296336,
+15868830, 12168179, 7734699, -11870753, 9904195, 5516349, 6899865, -2249489, -9885941, -7325067,
+-7881802, 2691334, -11136313, -20672752, 4183835, 13971529, 7531762, 13719199, -4066260, -3808562,
+14005351, 4606353, 1991791, 9212168, 3168612, 252329, 8064875, 4989679, -626528, 3621194,
+3559991, 2081985, -2523830, -4563940, -5916318, 1610613, 3992709, 2257005, 8129300, 209917,
+5823976, -1799054, 2450816, 4536559, 728534, -2064806, -1133335, -6645388, -5611375, 2026688,
+1554778, 2675765, 7071664, 1054951, 5401995, -1974074, -1054415, 947040, -4998268, -3983582,
+-1373853, -4273493, 2155537, -1386738, 1767916, 3933116, 5571110, 7875897, 12444131, 26910654,
+11894375, 9415642, 8695698, -16604344, -2662343, -6053220, 21210696, -21572010, -20540144, 5902359,
+13826037, -361851, 16920024, 15422691, -789737, 5950677, -10239202, -7323993, 16080894, -6339909,
+11031623, 3945464, -7235946, -3729642, -3240016, -3537443, -7547332, 6286759, 6636798, 5615670,
+464393, -8362302, -10834055, 13965623, -13780403, 10817949, 935766, -16893716, 8461622, 16136729,
+-389768, -4360466, -2107755, 1327145, 864899, 11014981, -642635, -8249559, -3512747, 9374840,
+-17116518, 4133906, -2924336, 13881871, 14562087, 9783399, 11383811, 15090904, 10766409, 3956739,
+-9865540, -11028402, 5271536, 7370701, -598074, 6387153, 8621073, 22991496, -13033615, 14554570,
+-8686034, -5490579, 15738908, 2426657, -9507984, -8210367, -8777839, -14155138, -4908074, -6910066,
+11276974, 297427, -9134859, 4988068, 3084324, -1915019, 5258114, -10788421, 6996502, 483184,
+-1075352, -1139777, 5936719, 1059246, 1517197, 6285148, -2666638, 1046898, 4513474, -6897718,
+4819490, 304943, 1757715, -3070365, 3831111, -1358283, 397284, 5367099, -39728, -1264331,
+1303523, 3628174, 4485557, 7611756, 6124624, 2280628, -3572339, -2896956, -10849624, 2410014,
+-9045738, -2636573, -3972308, -3676492, 4199941, 1643899, -4349728, -17884244, -3197603, 10413685,
+-12848932, 411780, -8085813, -14127758, 20549272, 17574470, 14686641, 6967511, 3824669, 5784784,
+15084999, 8338142, 15465103, -5726802, 12952548, -9760850, 15687905, 21079162, 13211319, 10537165,
+5360119, 10883447, 10958609, -3257733, 21811454, 5238250, -13164075, 6241661, -13327820, -9163313,
+-2736431, -20721070, 349503, -4419522, -5624797, -10075456, -5245229, -2896419, -653372, -2046552,
+892816, 863288, -11899744, -7858180, 2457795, -6284611, 4932770, 20401094, -10294500, -835908,
+-1945620, 748398, -9760850, 5250598, -4692252, 15789374, 3355980, 9427990, 14766098, 2514167,
+-986769, -9751186, -21696028, 2855080, 16140487, 11710765, -3060164, -14464913, 12175159, 1272921,
+7332583, -18517214, -13290776, -12197707, -18356690, -11374684, -13430900, 6242198, 1982127, 4685273,
+6123013, 8460012, -4146791, 8610873, 9804337, 295816, 5270462, -3161633, -6513318, -6717866,
+-7051263, -2836289, -5141076, -328028, 1549410, -693637, 464930, 1292785, -5965173, -5530308,
+-9444096, -3250753, -2190433, -5268315, 2077154, 769336, -2789581, -8556649, -3929358, -3167002,
+-2202781, 7113540, 2180233, -3126199, -3937948, -1449552, -10248866, 2784750, -2085207, 5284958,
+609885, -3240016, -6039798, 6295885, -4139812, 9009768, -30701500, -19654844, -9352291, 21930640,
+15969225, -11892764, 13681618, 12348031, 10527502, 10308995, -10309532, 1038308, 5938329, -10254771,
+-30947924, -5662378, -8601746, -18981072, 1693828, -6489159, -4876399, 5778342, 3424700, -4242354,
+883153, 14472966, 15475841, -28539520, 6747394, 1423782, 13156559, 4461398, 682363, -17789218,
+5381057, -4587025, -4975720, -12247636, -9129490, 22808424, -10421201, -449898, 2668785, -6080063,
+25210384, 11955578, -11310796, -6848862, -19837380, -2898566, 18830748, 5501316, 5645735, -6253473,
+11470784, -2769180, -5060545, 10580652, -6376953, 17574470, -4225174, 13079249, -26850524, -9117679,
+15244986, 3716757, -2554969, 4259534, -29707752, -14057428, 4401268, -11871826, 4421669, 1147830,
+3182571, 18107582, -6907918, 7273527, -1552631, -14816027, -2683281, 11119670, 16057272, -575526,
+-6910066, -12570832, 212064, -17528298, -5823439, 1453846, 20411832, 18281528, 2357937, 7645579,
+2156074, -3133716, 10030359, 7631083, -4199405, 8381092, 6217502, 3318936, -7244536, -562104,
+-3840238, 6095096, 4132296, 5413270, -634581, -8449274, 7708393, 286152, -4088272, -8232379,
+-583042, -736587, -7896298, 5322538, -5797669, -8979166, 9846749, -4100620, -3608846, -4579509,
+2030983, 1349694, 7841000, 1689533, -1591822, 3256122, 4763656, -9100499, 2259153, 2474975,
+-3701188, 5568425, -13370770, -38436736, -3257196, -4641249, -4161823, 5878737, -15334644, 30113626,
+-5499169, 1320703, 33229088, -39130372, -4067871, -7676717, -3728569, -44818520, 2499134, -6965900,
+-8659728, 15152645, -15379204, 2319282, 2937221, 7199976, -1408212, -16369194, 11169599, -10769094,
+23280334, -4058744, -26388280, -1999844, -886911, -13375602, -26585848, 11883101, 13543106, -22324704,
+18185966, -20197620, -15653545, -9700721, 1763621, 1549946, 3006477, 12786118, -2430952, -12331925,
+-28983514, 5836861, -39183524, -20908974, -13464186, -31493922, -18590766, -9140227, -1913945, -14833206,
+22468584, 23010824, 5151277, -7052337, 25527138, 11411191, -2889439, -5846524, 18389440, 13449153,
+-6240051, 24193014, -20359756, -10549513, 26591754, 12395812, 37288908, -20441360, -22858352, 5832566,
+-17370996, 18662170, 2062658, 6436546, 35458176, -19607062, -20866024, -7788387, 7416335, 7998303,
+8980240, 8986682, 10324565, -10970957, 4385162, 1602023, -699543, -1323924, -7224672, -5881958,
+10413148, -11235634, -476205, 2209761, -5314485, 1346472, -5449777, -447750, -502511, 2278480,
+-8852464, 4525822, 11281268, 3266323, 2799245, 12308303, 9186935, -905164, -11800423, 10880763,
+2885144, -4164508, -8764955, 11297375, 1812476, 317291, 7020124, 8749385, -11190537, 5836861,
+3802657, -8138426, -3234110, -12627741, 8066486, -1536525, -14253923, -7118909, 3527779, 29916594,
+16939888, -2763812, 40373228, -4658966, 16525960, -19099720, 23525146, 22255984, -2118493, -17865454,
+1790465, 6454262, -10075993, 10555419, -14660334, -242666, -4578972, -4786204, -16650514, -12108587,
+-7636452, -1021129, -5469104, -13008382, 19192598, 13236552, 3467649, -5407364, 3175055, 18575734,
+8634495, 13647795, 8476118, -10179072, -15855946, 31769336, -4285841, -17381196, -7368017, -7471096,
+-4280472, 22989886, 860604, -17735530, -6900939, -44074956, -10983305, -5173825, 27018028, 18740552,
+-53691388, -23076322, -13164075, -279710, 2552821, -21389474, 15606837, 8412230, 13563507, 26854284,
+-35273492, 34366716, 24542516, -11177116, -23737748, 1495186, -6030134, 9143449, 31148714, -16221555,
+-18292266, 25511032, -30205968, -33647312, -13702019, 3437048, -9794136, -36872296, -15070503, -11926050,
+401043, 2015413, -10722386, -748935, 1414655, 438624, 2962454, -23309862, -8370892, -7725573,
+1313723, 6507413, -1919850, -7457674, -4532264, 2472291, 11695733, 12703976, -1969779, -11044508,
+-3075734, 16164109, 752693, -4217121, 3161096, -21951040, -6675453, -10360535, 1232656, 3784403,
+-21505438, -21700860, 5184026, 18857590, -8332237, 12338367, 3580929, -6088653, -2005213, 5002027,
+3552475, -1794760, 3526168, -632971, 28068148, 3775276, 10559177, -21904870, -34579320, 49984828,
+25046638, 2274722, 3297998, -11239393, -29407104, 10333154, -2265595, 25245280, 5671505, 9377524,
+27699854, 15315853, -279173, -2936684, 4713190, -16852914, -13835163, -17918604, -9968619, 16623134,
+-4502200, 1068910, 20812874, -3547643, 9160628, -28822452, -25859998, -17561048, 15039902, 6118181,
+-898722, 6885907, -9108015, -25912612, 32813014, -31081068, 14404247, 14813879, 11719355, 5223754,
+19903952, -12765180, -31738734, 23548768, 66781908, -11733851, 32350768, -38788388, -20854214, 24015846,
+14133664, -36010616, -10060961, -3018288, 31381178, -7759396, -3293703, -48974440, -31392990, -11236171,
+-35878548, 30100742, 32163936, 50610284, -44697724, 19278498, 5721970, -24899000, -1321239, -1167694,
+-51644296, 36929740, -15251966, 17441862, -5189394, 2883534, 70182448, -18914500, 24434606, 16068010,
+-16836808, 30540976, 92342, -5873905, 2002529, 7885560, 19870130, 12083354, 7992934, -687732,
+18822694, -17503602, -8477192, 1480153, 4823785, 8674223, -4643934, 15089831, 2187749, 6706055,
+-2782602, 11432666, -803159, -16752520, 9793062, -20580410, -11992086, -4787278, 8987756, -2201708,
+10700374, 24064702, 37354940, 26823682, 7563975, 17251274, -9786083, 8768176, -447750, -768799,
+-1395328, 3582003, -7514582, 10538776, -10030896, -44479220, -25451976, -774705, -6907918, -14810121,
+5273146, 14535780, 1343251, -15662135, -943282, -15008226, 40893996, -12462384, 794569, 31255550,
+-1894081, -31774168, -22350472, -21674016, -9809168, -11474542, 34046744, 3684008, 5495948, 17182016,
+-9513889, -9403831, -5887327, -9590125, -20993800, -4762582, 39050916, 12783970, 9175661, -25910464,
+9470403, 2175938, -18690088, -2031520, -9433359, 42661372, -33772940, -28905130, -10368051, 5435818,
+-10154913, 1426466, 11349988, -22011170, -6077916, 36153960, -29159606, 5225902, -7402376, -17522930,
+-30917322, -23404350, 1017370, -42753716, -51969640, 12426951, 10499584, 8444443, -46448996, 35894116,
+43343736, -14642080, -12703440, 2824478, -1926293, -9686762, -24185498, 17548700, 65471944, 17133162,
+-16317118, 423054, 10303627, 21982716, 5816997, -38712688, -34720516, 37596532, -7285875, -15250892,
+-22715008, 7877507, 42765528, 13217225, -13653701, 7988639, -1761474, -7551090, -3844533, -2214056,
+18876382, 10563472, -6537477, -10419591, 8499740, 5049808, -1676648, -4275640, 6862284, -10084583,
+6229313, 16497506, -1583232, -9038222, -2799245, -5803038, -10011569, -18358838, 2628520, 14092325,
+-9449465, -11570105, 5689758, -14454712, 46708, -23540716, 11285027, 14723148, 37531036, -11932493,
+-5134634, -15531139, -15964393, 4523138, 8271570, 15637439, -1877438, -3370476, -15736760, 6341519,
+3897683, 4731980, -4646618, -982474, 9900973, 11458973, -14221710, -37426344, 10340134, 14659797,
+-55488292, 30403536, 1290638, -15786152, 5302137, 20260434, -28684476, 17723720, -26636850, 7205345,
+-1557999, -13402445, -7469485, -3618510, -19615116, 14056354, 12276627, -558883, 6765111, 865436,
+10858214, 14191646, 13704704, 20348482, 17464410, -10805064, 2710661, -22185654, 23516556, -18188650,
+5749888, -3502009, 4785668, 1156420, -16820166, 15290084, -8531953, -16244640, 34068756, -27269284,
+8178155, -7863012, -13565117, 13755170, -3561602, 4081830, 21223044, -25671020, 1026497, -31454192,
+-61982820, -1581622, 19732690, -7444252, 79639432, 16215649, -31143344, 8749385, -43444132, 15079093,
+31051002, 36697276, -12637941, -7243999, -48299056, -55346024, -4677757, -34506840, 8151848, -2183454,
+-30138860, -7057705, -14936823, -32971390, 26984206, 53130892, -14940044, 3741990, 11436424, -14103599,
+16412681, 20941724, -14585172, 2424509, 20938, -26468272, 13182865, 2221035, 8000451, 9668508,
+-18728742, 7306276, -9953587, -15015743, -17027934, 14433238, -10581189, 5925981, -16463147, -5941014,
+-1157494, -20051054, 19586662, -12716324, 3887482, 5974300, -18708878, -3058554, 14354854, -1719598,
+2012192, 3188476, -5492727, 8827232, 18541910, -2240362, 10754598, 12703976, -15914464, -30154428,
+10158671, 4199941, 17368310, 20832738, -27278948, -26776974, 4653597, -7870528, 4741644, 9076340,
+4943508, -39546448, 8159364, -2888366, -23034984, 10358387, -14954539, -10118943, -18592376, 9470940,
+-20248624, 25924422, -2752537, 9588514, -5976447, 34825744, -9465034, 19117974, -311922, 22795538,
+-6367826, -11540040, 7449084, -13058311, -13779329, 1852205, 25956634, 16672526, -17676474, 18856518,
+-13260175, -20321638, 5719286, 27742804, -10687489, -11338714, 14843944, 6640557, -13841069, 1525787,
+18882824, -7901129, -18187576, 9878425, 7563438, 11585137, 21260624, 4436701, -12855374, -4248797,
+46719044, 49070000, -13590350, -40687836, 31162672, -13623636, 8775155, 4394826, 52605832, 7207492,
+-27340152, -10009958, -6644852, 1454920, 8119636, 12677133, 17078400, -20345260, 6501507, 4596689,
+30485140, -7635915, 21470004, 23105850, 12776454, 11008001, 6637872, 18395882, -17683990, 19797652,
+25190520, 18174154, 3047279, -35755604, -5367636, -23066658, 1042603, 15457587, 5173825, -7895224,
+-12584254, -7367480, -2032593, -927176, 6521371, -7420630, 1977833, -787053, -5639292, 10869488,
+4206921, -9774272, -4642860, -2521683, 13258027, -22012, 2684892, -12816719, -9204652, -16997334,
+-8036958, -1051730, -1660005, 215822, -3009698, -15235323, 3875134, -5215164, -2545305, 2247342,
+-4301410, -227633, -13244069, -3153580, 500901, 194884, 227633, -3376381, -3379603, -1166084,
+-5284421, -7432978, 55439436, 23372138, -25103546, 6090801, -26223996, -14164265, -1843078, 9511205,
+-4227859, 20367808, -24256902, -715649, 9503152, -777926, 9884867, -1408212, 3437585, 2359011,
+-17396766, -5414343, 4512937, -16155519, -16352551, 1405528, 4151086, -11479911, 8196945, 7994008,
+-4897874, -8105677, -1343788, 1796907, -2893197, 6872485, 1714766, 5419712, -7189776, -3000035,
+12649216, 40265, 613643, 6161131, -4137127, 6813429, -6514929, -11993159, -7846905, 12444668,
+-9904195, -7223598, 733903, -9751186, -10598906, 15133317, -15064061, 23905252, 5204427, -10557566,
+10426033, 1687385, -17727478, 1575179, -3196530, -3075734, 8376797, -244276, -10412611, 20339354,
+-12210592, -4702989, 10492605, 3406446, -4450123, 548682, 3230889, -311922, -876710, -2075006,
+4650913, 8464844, -345745, -14053670, 10059350, -7236483, -1108638, 12071006, -814433, -3662533,
+-513249, -10386305, 5016522, 3626563, -1178969, 253403, 4227322, -10113574, 718333, -3451006,
+1001264, 4215511, 1054951, -4286914, 9917616, -15090904, 1957431, 1807644, -1097364, 1892470,
+-2248416, -8512088, 9386651, -4347581, 6698002, 133144, -1125281, 8888435, 3285650, -7402913,
+2776160, -3722663, -3259880, 1722819, 5586679, 5735392, -2270427, -7308424, 3721052, -4150549,
+5055714, -33692408, -40260488, 33934536, 138030048, 53842784, 63384592, 744103, -129016520, -95211368,
+-49600968, -75897440, 34105260, 65138012, 27015882, 115242024, 65383896, -4460324, 27218282, -58446452,
+-117563992, -47079284, -81627464, -13187697, 56721484, 47576428, 43279848, 71779104, 44463112, 12072616,
+19850802, -5484137, -83632680, -37132140, -30062086, -115817552, 21548924, 15032922, -51282984, 83194056,
+82553032, -2950643, 104424616, 51164336, -48380124, 32235340, -48099340, -100430296, -7873749, -60723860,
+-87679608, 15362024, 9467719, -5390184, 81905560, 78754128, 47201152, 70086888, 42762840, -27472222,
+-30714384, -54899884, -93744640, -69385736, -32965484, -31121870, 16892644, 52811456, 36272608, 58036284,
+87954488, 34027416, -11503533, -11170136, -60749628, -49274548, 4553202, -56537876, -25542170, 30397094,
+7582765, 38094212, 30831422, -15880642, 10304163, -3355443, -20959440, 4452808, -9340480, -9687836,
+19468550, 6544457, 8259222, 25673704, -14840723, -5976447, 14081587, -19501300, -15810848, 7119982,
+-46176804, -7902740, 15870978, -37455872, 18251464, 23038204, 2499134, 58191440, 55586540, 12547210,
+22572738, -16465831, -49649284, -25152940, -66085052, -75278432, -42556684, -18362596, 14221710, 71278200,
+82874616, 86561304, 77101640, 43761960, -9618579, -48790292, -76794016, -107399952, -91669096, -50736448,
+-13107703, 42878268, 77457048, 77020040, 69096896, 44627396, -8495445, -14242112, -22263500, -33864208,
+-23936390, -21363168, -24946244, -13806172, -7085086, -6381248, 4862977, 14090714, 19130322, 24723442,
+23032298, 17706540, 7861938, 628139, -9373766, -14001057, -18262200, -19474456, -19316616, -8223789,
+614717, 6662568, 6604586, 9985262, 10718091, 11385421, 8237748, 2327336, -1110249, -702227,
+-4121558, -3486440, -3197603, -6143951, -7156490, -1592359, -2497524, -1760937, -1137630, -843424,
+2638721, 7115150, 5375152, 5545340, 5408438, 3035468, 875636, -1122597, -5516349, -6068252,
+-6627672, -4920959, -2943663, -189515, 726923, 3082176, 4450123, 4684199, 2326799, 1520955,
+382789, 314606, -493384, -860604, -1682017, -575526, -962610, -799938, -1381906, -1335735,
+-1725503, -949188, -1247151, 622233, 1688996, 3003793, 2822331, 2683818, 1402844, 962073,
+-914828, -1541356, -2136209, -2368138, -2803540, -1040993, -769336, 215822, 470836, 1174137,
+947040, 1707786, 819265, 982474, 197032, 193810, -653909, -222801, -752693, -134755,
+-380641, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
547608,
-3428458, -4665408, -3816615, -642635, 3676492, 5444408, -2568927, 3183645, -1767379, -4513474,
--1250909, -2518462, 1476932, -612033, -2196876, 2015950, 3032784, 693100, 3668439, -6729677,
--7293928, -4668630, 667867, -6979, -1255204, 362925, 2213519, -717260, 2992519, 2491618,
--3192235, 1222455, -248034, 3899830, 3576097, 1364189, -3820374, 2509335, -2279554, 1281511,
-2490007, -6076305, 6642167, 9780714, 1269163, 4438312, -3607236, -715649, -3386582, -1743757,
-3016678, -1000191, -3502009, -914828, -2208687, 1694902, -2153926, -1938104, 186294, 1797444,
--1787780, -1996086, -879931, 3482682, 3115999, -2629594, -981400, -3109556, 708670, 4134980,
-1136556, -1498407, -1979980, 1562831, -563714, -2797634, -1035624, -1884954, -282931, -1005022,
-1620276, 1538672, 810138, -890669, -1255741, 2792266, -387084, 769336, 1431835, -401579,
--49392, -563178, 837519, 125628, 202400, -799938, 104153, -244276, -819265, 53687,
--136365, 614180, 1452236, -799401, 329102, -143345, 700617, 887448, -223875, -344671,
--195958, -29528, -794032, -312459, 337155, -283468, 134755, -1074, 637803, 157840,
-72478, 15035070, 6910603, -514859, 3140158, 2863670, -3610994, -1760937, 4161823, 1902134,
-4530117, -3291019, 6590091, 2484639, -6516539, 5173288, 268435, -110595, -3442953, 3787088,
--7044820, -6032282, -1301375, -2140504, -1176821, -2150168, 806917, -1302449, -2934537, -2108292,
-2439542, -2665027, 1700807, 1087701, 675921, -2942590, 4130148, -8657043, -1534914, -40265,
--1530082, -1081795, 734439, 1624571, -2792266, 2217277, -3380676, 3229816, 1006633, 711891,
-3309809, -2338610, -579284, 1353452, 5186173, 1293859, 2166811, -1192927, -4529580, -6298570,
-1143535, 3428458, 4452271, -1826435, -7065758, 1053878, -2899103, -1961190, -1648194, 1959579,
-189515, 6897718, -222265, 2325188, 1334661, -1038845, -1811939, -1917703, -7218767, -2110977,
--1195075, -974958, -1395864, 1344325, 3590593, 1012002, 3405372, -33823, -340913, -1089848,
-923955, 1251983, -361314, -1391033, 1196685, -714038, 460635, -605054, 614180, -1029718,
--655519, 981937, 300648, 556198, -390305, 344134, -676994, 8123931, 1855963, -6810208,
--7783018, 2151242, -2389076, -6400038, 7269232, -3557307, -1216550, -972273, 5695127, 1226750,
--3338263, 4035659, -3134789, 6087580, -8407935, -5510980, 6653978, -6947647, -7059853, -2804614,
-5682779, 2520072, 2706903, -652298, 5088463, 3114388, -559420, -6738804, 1797444, -1863479,
-2400350, 2157147, 1809255, 5875516, 1539746, -5764920, 498753, 4031901, 5873368, 2000918,
--3268470, -755914, -4805532, 2048163, -8498130, -323196, 9105868, 497142, 944893, -4682051,
--5839545, 896574, 1231045, 6728603, -1500017, 583579, 671089, -989990, 653909, 2238752,
-362925, 4733054, -1320703, 3144453, 427886, 851477, 530965, 5550709, 193810, -772020,
-987306, -1182190, -3790846, -1997160, -3907347, -88047, 6946573, 1466195, -2326262, -784368,
--4027606, 2268280, -3162707, -2192581, 717796, 116501, 193274, -1800665, -2589865, -527207,
-589484, -857383, 1420024, -163746, -45634, 1430224, 852014, 1440425, 1147830, -17180,
-429497, -1171452, 20938, -1039919, -1160178, 781147, 891743, 1650878, 1154273, -803696,
--251792, 871878, -689342, -1266479, 667331, 177704, 9664, 161061, -18677202, -12108587,
--2736968, 2077154, 2938831, 365609, -83215, -7059853, -498216, -1500017, -1248762, 204011,
--1868848, -772557, -5318244, 2775086, -11124502, -4000225, 932545, -2177549, -3441880, -1894081,
--6356015, -3150359, -2676302, -2946885, 1332514, -4833986, -2741800, 6080600, 3876745, 448824,
-2840047, 2171643, -2039573, -4007741, 2340757, 9058086, 961536, 1170379, -3616899, -3138547,
-2589865, -7684770, -4173098, 8600135, -7889318, 2404108, -1928977, -3907347, 1745904, 616328,
--2240899, 547071, 1249836, -2669859, -39192, -496606, 5216238, 4725001, 626528, 1302449,
-2224256, -114890, -1096827, -1782411, -10932302, 5301601, 3213173, -2918967, -187368, -4507032,
--1307281, 687195, -3395709, 1549410, -4105452, -2203855, -4768488, -6926172, 4510253, -1284732,
-132607, -5847598, -1544041, 802622, 902480, -1510755, -346282, -283468, -1700270, -3006477,
-411243, -1523640, 1235877, -201327, -845572, -586263, -396748, 1531693, 180926, -2216740,
-348966, -639413, -266825, 765041, 258235, -548682, 452582, -1733019, 869731, -1572495,
--583042, -2055142, -16143708, 2534568, 3719442, -957778, -1463510, -8850854, -3696893, 2500208,
--8004746, -7565048, 1508070, -7192997, -3781719, -126702, -4424890, 2529736, -3496640, 5499706,
--2915746, -1825361, 1673964, 3864934, 6995965, 4459787, -7885560, -365072, -622233, 3928821,
-5761162, 9916543, -4417911, -3812320, 5071283, -5322002, 1214402, 1607928, 8293045, 3114925,
-4614943, -6133750, -2770791, -8397198, 6663642, 7072201, 8027831, -63888, -1759863, -5334887,
--1158031, 5480379, -2536715, -3413425, -3227131, -4174171, 894427, 1061394, 1251446, -5735392,
--96100, -5617817, -324270, -785442, 2299955, 2066416, -1758252, -2513630, -7215008, -355945,
--588411, 4503810, -2791729, 7441568, -4213363, 985158, 3412889, 6767795, -5188858, 1617055,
-3508988, -5956583, 3015067, 66572, 7416872, 2541547, 1661616, 4627828, -459562, 1316944,
-3511136, 1487132, 43487, -1227824, 64961, 1547799, -470299, 1947768, 2882997, 2420751,
--1075889, 1374390, 195958, -709207, 1164473, 1583769, 15569, 763967, 1857037, 1423245,
-1502702, 782758, -701153, -1124208, 1440425, -1211718, 1436130, -668941, 130460, 1844152,
-1376537, -348966, 1018981, 20033874, 16944182, -488553, 383326, 9005473, 1087164, 4474282,
--2786897, 4999879, -3879429, 9090298, 2945274, 139586, 1706713, 751619, 11224897, 7788923,
--7562901, -6069863, 2289755, 1325534, -2507187, -1489817, 1316408, 5567352, 3918084, 2609730,
-461172, 2998424, -2017024, -24159, 6130529, -6743636, 2636036, 8475044, 6141803, 11476689,
--1238561, -1601486, -1110786, 841277, -3744675, 12461311, 11187316, 8204998, -3881577, -1000727,
-4688494, 4042638, -3572339, 894964, 6352257, -2295123, -3149822, 4241817, -12111808, -1270237,
-543850, 1887638, -4178466, -7716983, 3082176, 5485747, -6496675, -2252174, -7054484, 2707440,
-368830, -1337346, -1609539, -5929203, 10019622, -2547989, 1245541, -10191421, -2566243, -4804458,
-11937862, -2009508, -1773285, 5486821, 2364916, 83215, -3964792, 3684545, -2648384, -3477850,
-5472862, 5320928, -194884, 3365644, 1611, -1371168, 2849711, -349503, 1041530, -850404,
--1424855, -221728, 2192044, -1603097, -1422708, 32212, -1864553, 731755, -1692217, -805306,
-35433, -182536, 2178622, 175557, 558883, 1566053, 1357210, 490700, 647466, 1310502,
-2942590, 680215, 2767570, 585726, 1314260, 2194192, 13122736, -518080, 8298414, 11312944,
--5966784, -13950054, 599685, 10597832, -8193187, 7439957, -2200097, -10096394, -4640712, 10156524,
--9910637, -8769786, 6402186, -10139881, 3395709, 4828617, 3995393, -2880313, 6158983, 1725503,
-1174674, 3944391, -6451578, 8818105, 4365298, 3826816, -1797981, -988379, 16469589, -5762236,
-1045825, 4276714, 8301098, -11250667, -9233106, -8628052, 359167, 634581, -550293, 5231270,
-1656247, 9340480, 3788161, 5473399, -851477, 731218, -4589173, 8348880, -3751117, 8236137,
--4461934, -7103339, 12283606, 9953050, -14059039, -12435004, -8143795, -6391985, 4468914, 704912,
--2820720, 6486475, 7183870, -8578123, 5086315, -690953, -17143898, -5671505, -8626979, -7853348,
-3011309, -2669859, 5679021, -1293859, 885300, 10282689, 10504953, -964757, 2791729, -904091,
-1668058, 1487669, -3500935, 2955474, 900333, -125091, 8872866, 2664490, -22012, 274878,
--1535451, 2621004, -246424, 1730335, -1868311, -91805, -1972464, 551903, 2342905, 740345,
-37581, -259846, 2055679, 1312649, -1225676, 192737, -10201, 322659, 1067299, 470836,
--794569, -963683, 330176, 597537, -71941, -7409893, -10473815, 6300717, -6036040, -4371740,
--3761318, -12099997, -1306744, 5452998, -3313567, -696858, -4463008, 10037875, 1516124, 6407018,
-4836133, -8022999, 8251169, 12431246, -3824669, -5026723, 1307818, -2116345, 5327370, -15292231,
-5848672, 13313325, -1788317, -4308389, -3806952, 5811091, 11869679, -2784213, 2981244, -5268851,
-8125542, -9780177, -3782793, 1946694, -1555315, -7580618, 14006962, 9927280, 7388955, -3085934,
--10587094, -1263794, -15031849, 2631204, -1109712, -442382, -330712, -2226941, 8120710, 6928319,
--10447508, 5868536, -6262063, 8665097, -807991, -1712618, -732292, -9102109, -1761474, -8301098,
--18473728, -802622, 2145336, 1493038, -7101192, -205085, -2041720, -13753022, 265751, 12009265,
--7580081, 3169686, 3894999, -1483911, 836982, -3509525, -2109903, 2845953, 3395709, 3789772,
--966368, -2370822, -930397, -2550674, 2101313, 1070521, -2189360, -596464, -2014340, -2148021,
--301721, -1927904, -2988224, 1863479, -632434, -2249489, 1794223, -1566589, 1477469, 2306934,
-948651, 2217814, 1536525, 4295, 1451699, 4971425, 2370285, -2429878, -1701344, -2794413,
--2147, -3624416, 1919850, -186831, 2813741, -723165, 2190970, -351650, -1566053, 4692789,
-2236067, -19389092, 1363115, 11301670, 6173479, -8837432, -7182259, 14168023, 3275450, 3180960,
--2792803, 3662533, -144955, -9483288, -2471217, -9960029, 4708358, -5936182, -906775, -9705552,
--10737418, -14440217, 9030169, 6089727, -4632122, -5153424, 4053912, -13262322, -1212255, 991064,
-3199214, 5818070, 2842195, 364535, -4590247, 1920387, -4215511, 3489124, -4044249, 2301566,
-1222992, -4207994, -5457830, -10397579, -6858526, 2617783, -17732846, -4843650, 9721122, 5164698,
--2144263, 23131620, -3357054, 10708964, 10598369, -16881368, 1093069, -2254858, -14253923, -7467338,
--7847979, 233539, 1661616, 15978352, -2580739, 1521492, 10834055, 8024610, -1898376, 10779831,
--5127117, -3980898, -7221988, -9587978, -13942001, -5312875, 7943542, -15195057, -7748121, 11710228,
-8545374, -5132486, 10714870, -4792647, -746787, -496069, 5152350, -3373160, 5134634, -3231963,
-4392141, -1290101, 1812476, -2082522, 3553549, 3394635, 1475321, -617938, 4011500, -2612414,
--2945811, 3120831, -881542, 3407520, 2492692, 1683627, 2305861, 1392643, 653909, -5864778,
--1084479, -68183, 1630477, -1569274, -2474975, -2076617, -5603322, 2114198, -117038, 3525631,
-1994476, 3431679, 2618320, 723165, 1057636, 13383655, -2374043, 4353486, -6565395, 3896609,
-5534602, -3355980, 4725538, -7326141, -8162049, 12418898, 6686727, 8040716, 9808095, 15032,
--8165270, 10733123, -9398999, -12497818, 128312, 11840688, -1743757, -10145250, 1343788, 13923210,
--2050310, 3865471, 1290638, 19506668, 1177358, 4219269, 9544491, -1165010, -5019206, -9262634,
-1264868, -1239098, -9006546, 344134, -5327907, 3622805, 13134010, 181999, -8004746, -2309082,
--7426536, -3876745, -1200443, -3065533, 1732482, -9786620, 10506027, -5532455, 17784386, -4453881,
--13012140, 785442, 577136, 6372121, 2649458, 3467112, -13346611, -10735271, 7734699, -11181947,
--15682536, 4525285, 3049964, -3512747, 16842714, -13711146, -19108846, 7167227, -13065827, 1286880,
-1742146, 409096, -12567611, -7581154, -16329466, 5615670, -1692754, -862752, -2568391, -7212324,
--3315178, -5463736, -2771865, -2100776, 6156299, -4720169, 4714801, 1769527, 4869419, 856309,
-581431, -6611566, -2479270, 1832877, -2194192, -7220377, 1373316, -1148367, -2885144, -2525441,
-2251100, -2887829, 3058554, -1644973, 3725347, -704912, 1869385, -3760781, -3770445, -103079,
-221728, -1329292, 5652177, -4977330, -4816806, -3115462, 2708514, 3019899, -3917010, 2921115,
-807991, -10356777, 5744519, 595390, 14147085, 14857366, 21424908, 9796820, 4553202, 2993055,
-7072201, -7259032, 8176007, -12885439, 6300180, -1241782, -1078574, -24719684, -9557376, -4036733,
-8443369, -1031866, 2062121, 2709051, 2262911, -12619151, 13103945, -466541, 5346161, 464393,
-12232604, -13092671, 9141838, -6420439, -293132, 9926206, -11214696, -4989142, -12222403, -4840965,
--13612362, 12451110, 9149354, 16716013, -797253, 3980898, -15173583, 3494493, -15730855, 15342160,
-4354023, -2454037, 14521821, 14828375, 7584912, -8781598, -13137231, -18922016, -816581, -6677064,
--9529996, 10322417, -2806761, 23988466, -17719962, -6436009, 13720273, -14250165, -5654325, 3327526,
-277025, -2048163, -13687524, 6296422, 2357937, -7425462, 6813966, 14474040, -12382928, 13972065,
-17381196, -5160940, -9161165, 7183870, -7023882, 6640557, 4253628, -7228967, -5626407, -1404991,
--2229088, 10213969, 3465502, -1690607, -4908074, -8042327, -4536023, 2596308, -5134634, 2514167,
-4937065, 3183645, -3440269, 2700461, -2808372, 3924526, 2562485, 4374424, 2662880, 245350,
--4522064, 3030100, 4591320, -4554813, 227633, 1637456, 1736777, 3977677, 401043, -458488,
-4374961, 5370857, 1085016, -2376191, -4107063, -48855, 3733937, 4537633, 3105798, 22315040,
--5108864, 3167539, -1207423, -7323456, 9985799, -3636764, 3693135, 1224603, 14313515, -4481799,
-16694538, 307090, 8309151, 7412040, -1321239, -5384279, -16268799, 7755637, 16933982, 922344,
--112743, 11786464, 9972377, -686658, 1845762, 20195474, 12636331, -3614752, 4398584, 13292924,
--3331284, -14641007, 361851, -10619307, -1668058, -6716255, 636729, -20263118, -6048925, -7355669,
-359704, 4293357, 4292283, 19796578, 21845814, 11558831, -15082851, -8860518, 12288438, 17263084,
-3661460, -15669651, -2561948, -3671660, -16372415, -10299868, -12389907, 15228880, -5645735, 2137820,
--15406048, 22512608, 16600049, -1802813, 6881612, 37332928, -1853278, -7577396, -14294725, -803696,
-9940165, 7909183, -5731097, 11302743, 22340272, -9488120, 14264660, -6411850, 4698158, -8884140,
--4818417, -7654706, -10076530, -5131412, 6670621, 46708, -2179159, 1689533, 2796561, 12104828,
--1286880, 1274532, -94489, -5484673, -554588, -1911797, 1163399, 4944044, -3102577, -1416266,
--3855270, -1775432, 1418413, 1560147, -1360431, -7866233, -7365332, -2463701, -9081708, -7900593,
--1396938, 7165616, 6327024, 5496485, 1272921, -1169842, 381715, 3102040, 2583960, -898185,
-1799591, 1331977, 11480448, 1174674, -6896107, 6821482, 2638721, -9543417, -16157130, 20975546,
--13175886, 15832323, -11581379, -17215302, 788663, 21728776, 13895830, -15985331, -10769630, 3750043,
-3142842, 7380902, -1318018, 14507326, 7652021, 19102404, -7001334, -3144990, -726386, -3643206,
--18414136, -13489419, -4292820, 19207630, 3935264, 1552631, 595390, -17806934, -20381768, -15665356,
-8066486, 9326521, -7004555, -4538170, 1724429, 2253784, -10892574, 3174518, 20156282, 3595425,
-12607876, 12494597, 8892730, 21741124, 31085362, 10277320, 491774, 4535486, 12246562, -6446209,
--3505230, 8323647, -2851858, 4476430, -2922725, 13499082, 4723927, 9577240, -2688113, -3525631,
-6790880, 18020072, -1347546, -14677514, 9390946, -22999550, -26776436, -9104257, 13798656, -8879308,
--26477400, -16117402, -6759742, 9706626, 6564858, -14251238, 25636660, -8200167, -18017924, 4747013,
-6999186, -5869073, 8896488, -9235790, -3674345, 3372623, 2392834, -4835060, 4518306, 896038,
-8083129, -4445291, -9696962, -5602785, 1605781, -2110440, -1967632, -741956, 62277, -754841,
-6566468, -1106491, 1088774, -2641942, 3029563, 5447093, 1061394, 5221607, 1621887, -8075613,
--3569118, 46171, -6983617, -8251169, 3990562, 5818607, -4516695, -8805220, -9672803, 3970697,
-1636919, -420907, 6283001, -3624953, 2302639, 8591545, -37467148, 2164664, 18742164, -3341485,
--4600447, 23095650, -12475269, -12576738, -16376710, -5242545, -5648956, -10672994, 3027415, 5384279,
-8669928, 6371047, -5363341, -3973919, -2010045, -4470524, 1354525, 4433480, 18501646, -7903814,
--24395414, 13045963, -88047, -615254, -20326470, 9071508, 3714073, -1993939, 22738094, -6478422,
-2295123, -2041183, 9913321, 12281996, -13623099, -1242856, -7734699, -801011, 6652905, -5005248,
-10296110, -16313896, -13889924, -8587250, -14827838, -2477659, 1112397, 2327872, -20657182, -13375065,
-9509058, 16542603, -8050380, -9164923, 8442295, -18651432, -17183090, -16362215, 17807472, -30393872,
-9652402, -1600949, -18195628, -5692979, 14921253, 38732016, -5429913, -10658498, 12508555, 29700772,
-10410464, -6674916, -7450695, -1342714, 7868380, -543313, 3531000, 17679160, 897111, -6598144,
--12747463, 10358387, -14993731, -10040560, -7605850, 5204964, -6351183, -10668162, -7035694, -6492917,
--379568, -7873212, 2410551, -6104223, -840740, -2004676, 7192997, -5674726, -4757750, -11623255,
--3772055, -2075543, -4227322, 11020886, -8454643, -10453414, -991064, -9176734, -8705362, -3846680,
-912144, 8253854, -1416802, -3554086, -1931125, -5493263, 3526705, -11065983, -1296543, 11403138,
-5089536, 7455527, -3230352, 2816962, 3312494, -2763275, -4690105, -6252399, 1868848, 2938295,
-4656819, 5179194, -2184528, -21028696, -33427194, -1998770, 38429756, -6198712, -2700998, -25429428,
--1868848, -1751273, 2690797, 8338679, 1204738, 6923488, 551366, -473520, -18028126, 2517925,
-16505559, -11166915, 20459614, -8658654, -1206349, -18148384, 11647414, -9070434, -5794985, -20933134,
--28236188, 14397267, -13748727, -13658533, 5032628, 2845416, -6024229, 1331977, 16098074, -4814122,
--15215995, -9556839, -19502910, -2460480, 5681705, 13495861, 2866354, -4053376, -3266860, -8173323,
-4791573, 14022531, 2428267, -8876624, 16121160, -15404974, 1749125, -26502096, -7680476, -5242008,
-32704028, -20662550, 6774237, -6752763, 4400194, -3856344, -3518115, 571768, 13380971, 3962107,
--23924042, 26390426, 8212515, 9390409, 3551938, -10593000, -7917236, -3069828, 3482682, -634581,
-5424007, -14347338, -14756434, -2473901, 7405598, 16031502, -9808632, 13594645, -3207267, 5279589,
--10624675, 6109591, -17408576, 19617264, 1008780, 2164127, 6597070, 8838506, 1009854, -12279311,
--5767604, 3288871, -11480984, 3141232, 5616207, 4901632, -6766721, -4306779, 11924440, 2143726,
--11801496, -1730872, 10362682, -3853123, -14551886, 16647293, -4372277, 6433324, -2658048, -4781373,
--7683160, 5120138, 1569274, 5328981, 962073, 8947491, 1218160, 6437082, -2962991, 445603,
-4185983, -2266669, -3377992, -16360604, -9920301, 35788888, -4542465, 3236258, -18604188, 16852378,
--9686762, 12483859, -9773198, 21734682, 2054068, 2473364, -10510859, -8245264, 12426414, 28088550,
--11644730, -16649978, 7927436, -6376416, 18278308, 23459648, 11375758, -3179887, 14289356, -9218074,
--8890045, 19761144, 26759794, -29674466, 2436320, 4780836, 5061082, -9836549, -719407, 12416750,
--30313342, 9419400, 17701170, 6978248, -13487271, -3412889, 21740588, 18127984, 5920076, -9918690,
--13368086, -25907780, 37416680, 7095286, 19240916, -2476586, -7961259, 4514548, 11205033, 678068,
--594316, -30154966, 4732517, 29080150, -5124970, 27881318, -16516834, -7094212, -11511586, 6757058,
-25936234, -7833484, -730681, 23778550, 28651726, -9006010, -20900384, -18329846, -16247324, -7241315,
--6846715, 16809966, -20138564, 11325292, 12452721, -4243428, 1459752, 13250511, -2462090, -7097434,
-7805030, 5829881, 4182225, 12213276, 2654290, -1789928, 10801843, 4171487, 4596689, 5782637,
--1801739, 972273, -2400350, 4980552, -19723564, -5177046, 888521, -3544422, 7760469, -14542222,
--1625108, 484794, 5327370, -56371, 8434242, 6128382, -3937948, 12173011, 6120329, -3836480,
-8635569, 9580461, 155693, -5703717, 4588099, 9334038, 5556077, -1053341, -8651138, -3945464,
-2354179, 1671816, 1472637, -8082055, 14144401, 10433549, 24978992, -7530152, 18096844, -9542344,
--3810173, 16859358, -550293, 22972706, -27645094, 17391396, 3191161, 7762080, -11092827, 8461086,
-20685100, 40215388, -9190693, 10275709, -507880, -26552024, 24481314, 2561411, 9612137, -4774930,
--12399034, -4536023, -947040, -10233833, -6419366, 34188476, 2465848, 13217762, -9667435, 24273008,
-223875, 11839077, 5046050, -14008573, -2916283, -8589398, 361851, 4498442, 28666222, 14672145,
-1313723, 3528853, -900869, -2229625, 4796942, 2995203, 18006114, 14712410, 7452842, -8358543,
-12545063, 26276074, -24547886, 23052164, 3799436, 7042673, -24664924, -11615202, -31022548, -24977382,
--4835597, 16925392, 14111652, -43020540, -191663, -19313394, 10358387, 43272332, 21760988, -27563490,
-15283641, -11241540, -14179835, 23920284, 12125230, -12041478, -6681896, 21074330, 17242146, 9531606,
-26718454, -6999723, 16437377, 14533096, -16834662, 23920820, 6642704, 27737972, 8523363, -2382096,
-16356309, -1509681, 4359392, -19185618, 14696841, -9262634, 7714298, -6842420, 3481071, 9163313,
-22091164, 5936719, 13482976, 3556770, 4401805, -7031399, -1489817, -2397666, 1936493, 11200201,
-9556839, 16750372, 6272263, -1814087, 2797098, -3704409, -2032593, -16464757, -2646237, 4325032,
-5423470, 14474040, 12906377, 11731166, 13532368, -35762044, -56166360, -14093935, -6754910, -13314935,
-2611877, 19226958, -20106352, 28782186, 9895605, -40417788, -31819802, -5850819, 21879638, 1239098,
-1410360, -3841848, -13406204, -39110508, 1175210, -32789390, -27972586, 13929116, 10268730, 10199474,
--5091147, -12451647, 29531122, 18396956, -13146895, -25478820, 19360638, 10435697, 4241280, -11756399,
--30758408, 11973295, -14654428, 4988068, -26250840, 31854162, 383863, -12152073, 2675765, 8340827,
-25530896, 16632798, -7016903, -865973, 8703214, 9409200, 9619653, -5471252, -40896140, -31450972,
-6094022, -3960497, 23379118, -4124242, -10521596, -28174986, 32889786, 13174812, -23480050, -23464480,
-33760052, 32370094, -649614, 23860154, -3438658, 1231582, -9986873, -5463736, -18600966, 23012972,
--4464082, -4702453, -10063645, 9739912, -29078540, 14016626, -8699456, -4993437, 20205136, -24159,
-2986076, 5563594, 18541910, 10029286, -7897371, 14367202, -4384625, 17258790, 6432788, -18479096,
-4487167, -9172976, 8770860, -7359964, 537, -12125230, -6640020, 7342784, -12612708, 5732171,
-4085051, 5880347, -11275900, -7499550, -14455249, -12071542, 16535087, -5552856, 10632728, 7246684,
--10348187, -967441, -9055939, 843961, -5778342, 21584896, 17689896, 12546673, 16529182, -3581466,
--18530100, -20622286, -3092913, 6910066, 30692910, 19304268, -7136625, -5214091, -8308614, -14775761,
--955093, 7501698, 10664941, 7296613, 3417720, 19219442, 2226404, -14074608, -35051764, 55455008,
-1720134, -43441984, -2949032, -16364362, 7611219, 21095268, 19757386, -24302536, -38190312, 6273874,
--18111340, 5570573, -3434363, 16676821, -5252208, 2127620, 10410464, -16032576, -18967112, 1738925,
-5389110, 16512539, -59056, -27194660, 18019536, -15298674, 14232985, -13334800, -8546448, -1763621,
--3937411, -29211146, 5764920, 7785165, -27624156, 11533061, -10653130, 5308580, -8993125, 26720066,
-21369610, -27526982, -14118094, 18313204, 23650238, -28159416, 37135360, 2099165, 29969208, 21238614,
-35305168, -11100880, -14492293, 7565048, -28663538, 4146254, 4014721, 50655920, -15443629, -48166984,
-81187768, -38475928, -29027000, 46323908, 21405580, -27473296, 45641544, 4759898, -36528160, 45593224,
-5896990, 3828427, -7657927, 6461242, 30800822, -7724499, -10253161, -16125455, 23027468, -8534100,
--5450314, -3464428, -8790724, -10052371, -13857175, 13326747, -1677722, -1552631, -4800163, -3788698,
-2066416, -6420976, -10329933, 1075352, -8295730, -16297790, -16321949, 20421496, -8666170, 1638530,
-19447612, -9485972, -8435853, 1059783, 9807021, 3792993, 4359392, 18098992, -11035382, 2371359,
--8053064, -5510980, -3373160, 30123826, 15403900, -5231270, 4631586, -16406775, 5470178, -15039365,
--8859981, 6846178, -3606162, -30733712, 19065360, 7385733, -5363878, -386547, -15346992, -2378875,
-513785, -50184544, 6932614, 15055471, -37681896, 17246442, 9946607, -13197898, -3782793, -654446,
--9256191, -3024731, -5435818, -16786880, 442382, -8373039, -1879585, -4122632, 8145943, 29993904,
-25074020, -23145042, -2594697, 31559956, -5570573, -5929739, -32329292, 3728032, 10552735, -5285494,
-27463094, 65950296, -22240414, -27804544, 46902652, -3144990, -25379498, 29291140, 19229642, -15213848,
--22811108, -28128814, 8504035, 15063524, -12594992, 44227424, 28794534, -55212340, -53039088, 30852360,
--25007984, -32309428, 41790568, 6709276, 55968256, 26870926, -6890738, -7577396, -40542344, -31581968,
-91973504, 25376814, -19856708, -44604308, 1134945, -18206904, -39904540, -6259915, 46504832, 19768660,
-475668, 38308424, 33425046, -10704132, -42849816, 6549825, 25485800, -10687489, -10123775, 53393960,
-30613454, 5225365, -5757404, -27593018, -27100170, -7059316, 25317222, 10160282, -10493679, -5013301,
--12125230, 9901510, -7854959, -10426033, -6806987, -1403381, 7486128, 10160282, 8967355, 3686156,
--24635932, -8696772, -4964982, 9076340, -9687299, 1529545, -2707977, 22329534, -14695767, -10267656,
-23051090, 6310381, -11938935, 18124762, -6571300, 5162014, 1258962, 3976603, -14217415, -3991098,
-18920942, 18522584, 7580081, -7640210, 4807142, -8747238, -7072201, -5471789, 9824201, -15921981,
--3515431, 12217034, 49428632, 42068668, -11613055, 30040612, 2559801, -22433688, 14198088, 25730612,
-7941932, 11409581, -33535642, -6231998, 3384434, 7181186, -5354751, -28244242, -10841571, 10853919,
--7488813, -2565706, -24805584, 37810208, 4182225, -30315490, 16953310, 44301512, -23107998, -12705587,
-5920076, 14924474, -14628122, -27131308, 23177792, 40321152, -3688303, -15217069, 4682051, 11739219,
-17661442, 25987774, 1183800, 46933792, -1539209, -51327544, -96637, -5388037, 16384763, -4980015,
--42777876, -732292, -18765248, -17395154, 24866786, 13776644, 13961865, 18663244, -38401840, -19383188,
--7170985, -74088, 14778446, 966905, -8268349, 1498407, -13497472, -25390772, 1975148, 40592808,
--21180094, 4257923, -16581258, -11055246, 26925686, -33349884, -920197, 15275051, -12496207, 5974300,
-3662533, 8837969, 9180493, -17413944, -21935472, 36384816, -8041253, -11238319, 17952964, -18030272,
-10986526, 2736968, -8167954, 6086506, 14975477, -2536715, 1509681, -7250442, 3143916, 1389959,
--1639067, -6430640, 7890929, 4670240, -1473711, -313533, 6506339, 6341519, -7272454, -11550241,
-5900212, -313533, 2681133, 1101659, -3760781, 6574521, -494458, 5523328, -2658048, -567473,
--4162360, 1374926, 5082557, -891206, 13702556, -5449777, -5087926, 1059246, -7004555, 4403415,
-8941048, -43456480, -61774516, -55067924, 110521320, 105046312, 105297568, 296404288, 105611096, -12462384,
-19736986, -205365472, -249640672, -84194240, -139990704, -194542160, 25186226, -11039140, -32314798, 213711664,
-130798936, 54295904, 334333664, 157492160, 29353954, 152088544, -35952096, -182061520, -173921472, -166131488,
--229686800, -225322032, -52682604, -81506128, -132346200, 154469040, 71421008, -55996172, 223621760, 71910640,
--26088706, 252391072, 230351440, 52754548, 239036400, 242117504, -9156333, 59913184, 27577448, -233574288,
--270684416, -201976736, -381123040, -361348480, -216721904, -289900096, -217735520, 24393804, 179225760, 202946864,
-436866880, 396795936, 350273920, 376967136, 278385824, 140979616, 43250856, -30924302, -212477936, -256613024,
--274256736, -309524864, -293268416, -250400896, -161514928, -117741696, -114722336, 21585968, 69672424, 136331392,
-325111296, 337201632, 230875968, 288127872, 122037200, -40197136, -95472288, -148344944, -202755744, -147261008,
--98185640, -98156112, -33674692, -9592273, 839666, 51626580, 66114044, 62568008, 96487512, 60329260,
-39298412, 48235704, -28786482, -27060978, 8172249, -78685952, -55397560, -20859582, -75618264, -47160352,
--5304285, -76572288, -80418968, -53872312, -78929152, -52296060, 59260348, 110400520, 176386256, 259783776,
-242857312, 207364240, 195342096, 105098920, -32502702, -163337600, -288167616, -342635296, -308623456, -250413232,
--188777232, -89234392, 27912992, 110945448, 156483376, 168397616, 149017648, 132417600, 123573192, 124018256,
-86437824, 40044128, 18291192, -12176769, -36501316, -33727304, -59032176, -64124936, -45552424, -35300336,
--45694692, -44913548, -56786448, -65630320, -64938832, -56726316, -46354508, -15621333, 23014046, 52843132,
-70893800, 90907280, 89882928, 74788264, 53563076, 32307280, 12123619, 9306120, 1151588, -12102144,
--22018686, -24888798, -32581622, -36738076, -40644348, -44139916, -46322296, -31825170, -17904108, -5712307,
--137439, 6755447, 12523051, 22112640, 22662932, 15803869, 7158637, 11808476, 17511656, 18367964,
-17174500, 16449725, 14377403, 16482474, 14841796, 7766912, -1653562, -6953552, -18049600, -22174380,
--23832774, -24934970, -28201292, -24932822, -25971668, -23615878, -14461692, -2006287, 9957345, 26101590,
-36421860, 42974368, 40807560, 31504658, 14549739, -217433, -12787191, -17411260, -20653960, -17745194,
--14516453, -9337259, -6227166, -3047816, -2709588, -244813, 470836, 2520609, 2251637, 3777961,
-2629057, 3165928, 1622961, 1675574, -47245, 306553, -886911, 117038, -667867, 397284,
--485331, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+3428458, -4665408, -3816615, -642635, 3676492, 5444408, -2568927, 3183645, -1767379, -4513474,
+-1250909, -2518462, 1476932, -612033, -2196876, 2015950, 3032784, 693100, 3668439, -6729677,
+-7293928, -4668630, 667867, -6979, -1255204, 362925, 2213519, -717260, 2992519, 2491618,
+-3192235, 1222455, -248034, 3899830, 3576097, 1364189, -3820374, 2509335, -2279554, 1281511,
+2490007, -6076305, 6642167, 9780714, 1269163, 4438312, -3607236, -715649, -3386582, -1743757,
+3016678, -1000191, -3502009, -914828, -2208687, 1694902, -2153926, -1938104, 186294, 1797444,
+-1787780, -1996086, -879931, 3482682, 3115999, -2629594, -981400, -3109556, 708670, 4134980,
+1136556, -1498407, -1979980, 1562831, -563714, -2797634, -1035624, -1884954, -282931, -1005022,
+1620276, 1538672, 810138, -890669, -1255741, 2792266, -387084, 769336, 1431835, -401579,
+-49392, -563178, 837519, 125628, 202400, -799938, 104153, -244276, -819265, 53687,
+-136365, 614180, 1452236, -799401, 329102, -143345, 700617, 887448, -223875, -344671,
+-195958, -29528, -794032, -312459, 337155, -283468, 134755, -1074, 637803, 157840,
+72478, 15035070, 6910603, -514859, 3140158, 2863670, -3610994, -1760937, 4161823, 1902134,
+4530117, -3291019, 6590091, 2484639, -6516539, 5173288, 268435, -110595, -3442953, 3787088,
+-7044820, -6032282, -1301375, -2140504, -1176821, -2150168, 806917, -1302449, -2934537, -2108292,
+2439542, -2665027, 1700807, 1087701, 675921, -2942590, 4130148, -8657043, -1534914, -40265,
+-1530082, -1081795, 734439, 1624571, -2792266, 2217277, -3380676, 3229816, 1006633, 711891,
+3309809, -2338610, -579284, 1353452, 5186173, 1293859, 2166811, -1192927, -4529580, -6298570,
+1143535, 3428458, 4452271, -1826435, -7065758, 1053878, -2899103, -1961190, -1648194, 1959579,
+189515, 6897718, -222265, 2325188, 1334661, -1038845, -1811939, -1917703, -7218767, -2110977,
+-1195075, -974958, -1395864, 1344325, 3590593, 1012002, 3405372, -33823, -340913, -1089848,
+923955, 1251983, -361314, -1391033, 1196685, -714038, 460635, -605054, 614180, -1029718,
+-655519, 981937, 300648, 556198, -390305, 344134, -676994, 8123931, 1855963, -6810208,
+-7783018, 2151242, -2389076, -6400038, 7269232, -3557307, -1216550, -972273, 5695127, 1226750,
+-3338263, 4035659, -3134789, 6087580, -8407935, -5510980, 6653978, -6947647, -7059853, -2804614,
+5682779, 2520072, 2706903, -652298, 5088463, 3114388, -559420, -6738804, 1797444, -1863479,
+2400350, 2157147, 1809255, 5875516, 1539746, -5764920, 498753, 4031901, 5873368, 2000918,
+-3268470, -755914, -4805532, 2048163, -8498130, -323196, 9105868, 497142, 944893, -4682051,
+-5839545, 896574, 1231045, 6728603, -1500017, 583579, 671089, -989990, 653909, 2238752,
+362925, 4733054, -1320703, 3144453, 427886, 851477, 530965, 5550709, 193810, -772020,
+987306, -1182190, -3790846, -1997160, -3907347, -88047, 6946573, 1466195, -2326262, -784368,
+-4027606, 2268280, -3162707, -2192581, 717796, 116501, 193274, -1800665, -2589865, -527207,
+589484, -857383, 1420024, -163746, -45634, 1430224, 852014, 1440425, 1147830, -17180,
+429497, -1171452, 20938, -1039919, -1160178, 781147, 891743, 1650878, 1154273, -803696,
+-251792, 871878, -689342, -1266479, 667331, 177704, 9664, 161061, -18677202, -12108587,
+-2736968, 2077154, 2938831, 365609, -83215, -7059853, -498216, -1500017, -1248762, 204011,
+-1868848, -772557, -5318244, 2775086, -11124502, -4000225, 932545, -2177549, -3441880, -1894081,
+-6356015, -3150359, -2676302, -2946885, 1332514, -4833986, -2741800, 6080600, 3876745, 448824,
+2840047, 2171643, -2039573, -4007741, 2340757, 9058086, 961536, 1170379, -3616899, -3138547,
+2589865, -7684770, -4173098, 8600135, -7889318, 2404108, -1928977, -3907347, 1745904, 616328,
+-2240899, 547071, 1249836, -2669859, -39192, -496606, 5216238, 4725001, 626528, 1302449,
+2224256, -114890, -1096827, -1782411, -10932302, 5301601, 3213173, -2918967, -187368, -4507032,
+-1307281, 687195, -3395709, 1549410, -4105452, -2203855, -4768488, -6926172, 4510253, -1284732,
+132607, -5847598, -1544041, 802622, 902480, -1510755, -346282, -283468, -1700270, -3006477,
+411243, -1523640, 1235877, -201327, -845572, -586263, -396748, 1531693, 180926, -2216740,
+348966, -639413, -266825, 765041, 258235, -548682, 452582, -1733019, 869731, -1572495,
+-583042, -2055142, -16143708, 2534568, 3719442, -957778, -1463510, -8850854, -3696893, 2500208,
+-8004746, -7565048, 1508070, -7192997, -3781719, -126702, -4424890, 2529736, -3496640, 5499706,
+-2915746, -1825361, 1673964, 3864934, 6995965, 4459787, -7885560, -365072, -622233, 3928821,
+5761162, 9916543, -4417911, -3812320, 5071283, -5322002, 1214402, 1607928, 8293045, 3114925,
+4614943, -6133750, -2770791, -8397198, 6663642, 7072201, 8027831, -63888, -1759863, -5334887,
+-1158031, 5480379, -2536715, -3413425, -3227131, -4174171, 894427, 1061394, 1251446, -5735392,
+-96100, -5617817, -324270, -785442, 2299955, 2066416, -1758252, -2513630, -7215008, -355945,
+-588411, 4503810, -2791729, 7441568, -4213363, 985158, 3412889, 6767795, -5188858, 1617055,
+3508988, -5956583, 3015067, 66572, 7416872, 2541547, 1661616, 4627828, -459562, 1316944,
+3511136, 1487132, 43487, -1227824, 64961, 1547799, -470299, 1947768, 2882997, 2420751,
+-1075889, 1374390, 195958, -709207, 1164473, 1583769, 15569, 763967, 1857037, 1423245,
+1502702, 782758, -701153, -1124208, 1440425, -1211718, 1436130, -668941, 130460, 1844152,
+1376537, -348966, 1018981, 20033874, 16944182, -488553, 383326, 9005473, 1087164, 4474282,
+-2786897, 4999879, -3879429, 9090298, 2945274, 139586, 1706713, 751619, 11224897, 7788923,
+-7562901, -6069863, 2289755, 1325534, -2507187, -1489817, 1316408, 5567352, 3918084, 2609730,
+461172, 2998424, -2017024, -24159, 6130529, -6743636, 2636036, 8475044, 6141803, 11476689,
+-1238561, -1601486, -1110786, 841277, -3744675, 12461311, 11187316, 8204998, -3881577, -1000727,
+4688494, 4042638, -3572339, 894964, 6352257, -2295123, -3149822, 4241817, -12111808, -1270237,
+543850, 1887638, -4178466, -7716983, 3082176, 5485747, -6496675, -2252174, -7054484, 2707440,
+368830, -1337346, -1609539, -5929203, 10019622, -2547989, 1245541, -10191421, -2566243, -4804458,
+11937862, -2009508, -1773285, 5486821, 2364916, 83215, -3964792, 3684545, -2648384, -3477850,
+5472862, 5320928, -194884, 3365644, 1611, -1371168, 2849711, -349503, 1041530, -850404,
+-1424855, -221728, 2192044, -1603097, -1422708, 32212, -1864553, 731755, -1692217, -805306,
+35433, -182536, 2178622, 175557, 558883, 1566053, 1357210, 490700, 647466, 1310502,
+2942590, 680215, 2767570, 585726, 1314260, 2194192, 13122736, -518080, 8298414, 11312944,
+-5966784, -13950054, 599685, 10597832, -8193187, 7439957, -2200097, -10096394, -4640712, 10156524,
+-9910637, -8769786, 6402186, -10139881, 3395709, 4828617, 3995393, -2880313, 6158983, 1725503,
+1174674, 3944391, -6451578, 8818105, 4365298, 3826816, -1797981, -988379, 16469589, -5762236,
+1045825, 4276714, 8301098, -11250667, -9233106, -8628052, 359167, 634581, -550293, 5231270,
+1656247, 9340480, 3788161, 5473399, -851477, 731218, -4589173, 8348880, -3751117, 8236137,
+-4461934, -7103339, 12283606, 9953050, -14059039, -12435004, -8143795, -6391985, 4468914, 704912,
+-2820720, 6486475, 7183870, -8578123, 5086315, -690953, -17143898, -5671505, -8626979, -7853348,
+3011309, -2669859, 5679021, -1293859, 885300, 10282689, 10504953, -964757, 2791729, -904091,
+1668058, 1487669, -3500935, 2955474, 900333, -125091, 8872866, 2664490, -22012, 274878,
+-1535451, 2621004, -246424, 1730335, -1868311, -91805, -1972464, 551903, 2342905, 740345,
+37581, -259846, 2055679, 1312649, -1225676, 192737, -10201, 322659, 1067299, 470836,
+-794569, -963683, 330176, 597537, -71941, -7409893, -10473815, 6300717, -6036040, -4371740,
+-3761318, -12099997, -1306744, 5452998, -3313567, -696858, -4463008, 10037875, 1516124, 6407018,
+4836133, -8022999, 8251169, 12431246, -3824669, -5026723, 1307818, -2116345, 5327370, -15292231,
+5848672, 13313325, -1788317, -4308389, -3806952, 5811091, 11869679, -2784213, 2981244, -5268851,
+8125542, -9780177, -3782793, 1946694, -1555315, -7580618, 14006962, 9927280, 7388955, -3085934,
+-10587094, -1263794, -15031849, 2631204, -1109712, -442382, -330712, -2226941, 8120710, 6928319,
+-10447508, 5868536, -6262063, 8665097, -807991, -1712618, -732292, -9102109, -1761474, -8301098,
+-18473728, -802622, 2145336, 1493038, -7101192, -205085, -2041720, -13753022, 265751, 12009265,
+-7580081, 3169686, 3894999, -1483911, 836982, -3509525, -2109903, 2845953, 3395709, 3789772,
+-966368, -2370822, -930397, -2550674, 2101313, 1070521, -2189360, -596464, -2014340, -2148021,
+-301721, -1927904, -2988224, 1863479, -632434, -2249489, 1794223, -1566589, 1477469, 2306934,
+948651, 2217814, 1536525, 4295, 1451699, 4971425, 2370285, -2429878, -1701344, -2794413,
+-2147, -3624416, 1919850, -186831, 2813741, -723165, 2190970, -351650, -1566053, 4692789,
+2236067, -19389092, 1363115, 11301670, 6173479, -8837432, -7182259, 14168023, 3275450, 3180960,
+-2792803, 3662533, -144955, -9483288, -2471217, -9960029, 4708358, -5936182, -906775, -9705552,
+-10737418, -14440217, 9030169, 6089727, -4632122, -5153424, 4053912, -13262322, -1212255, 991064,
+3199214, 5818070, 2842195, 364535, -4590247, 1920387, -4215511, 3489124, -4044249, 2301566,
+1222992, -4207994, -5457830, -10397579, -6858526, 2617783, -17732846, -4843650, 9721122, 5164698,
+-2144263, 23131620, -3357054, 10708964, 10598369, -16881368, 1093069, -2254858, -14253923, -7467338,
+-7847979, 233539, 1661616, 15978352, -2580739, 1521492, 10834055, 8024610, -1898376, 10779831,
+-5127117, -3980898, -7221988, -9587978, -13942001, -5312875, 7943542, -15195057, -7748121, 11710228,
+8545374, -5132486, 10714870, -4792647, -746787, -496069, 5152350, -3373160, 5134634, -3231963,
+4392141, -1290101, 1812476, -2082522, 3553549, 3394635, 1475321, -617938, 4011500, -2612414,
+-2945811, 3120831, -881542, 3407520, 2492692, 1683627, 2305861, 1392643, 653909, -5864778,
+-1084479, -68183, 1630477, -1569274, -2474975, -2076617, -5603322, 2114198, -117038, 3525631,
+1994476, 3431679, 2618320, 723165, 1057636, 13383655, -2374043, 4353486, -6565395, 3896609,
+5534602, -3355980, 4725538, -7326141, -8162049, 12418898, 6686727, 8040716, 9808095, 15032,
+-8165270, 10733123, -9398999, -12497818, 128312, 11840688, -1743757, -10145250, 1343788, 13923210,
+-2050310, 3865471, 1290638, 19506668, 1177358, 4219269, 9544491, -1165010, -5019206, -9262634,
+1264868, -1239098, -9006546, 344134, -5327907, 3622805, 13134010, 181999, -8004746, -2309082,
+-7426536, -3876745, -1200443, -3065533, 1732482, -9786620, 10506027, -5532455, 17784386, -4453881,
+-13012140, 785442, 577136, 6372121, 2649458, 3467112, -13346611, -10735271, 7734699, -11181947,
+-15682536, 4525285, 3049964, -3512747, 16842714, -13711146, -19108846, 7167227, -13065827, 1286880,
+1742146, 409096, -12567611, -7581154, -16329466, 5615670, -1692754, -862752, -2568391, -7212324,
+-3315178, -5463736, -2771865, -2100776, 6156299, -4720169, 4714801, 1769527, 4869419, 856309,
+581431, -6611566, -2479270, 1832877, -2194192, -7220377, 1373316, -1148367, -2885144, -2525441,
+2251100, -2887829, 3058554, -1644973, 3725347, -704912, 1869385, -3760781, -3770445, -103079,
+221728, -1329292, 5652177, -4977330, -4816806, -3115462, 2708514, 3019899, -3917010, 2921115,
+807991, -10356777, 5744519, 595390, 14147085, 14857366, 21424908, 9796820, 4553202, 2993055,
+7072201, -7259032, 8176007, -12885439, 6300180, -1241782, -1078574, -24719684, -9557376, -4036733,
+8443369, -1031866, 2062121, 2709051, 2262911, -12619151, 13103945, -466541, 5346161, 464393,
+12232604, -13092671, 9141838, -6420439, -293132, 9926206, -11214696, -4989142, -12222403, -4840965,
+-13612362, 12451110, 9149354, 16716013, -797253, 3980898, -15173583, 3494493, -15730855, 15342160,
+4354023, -2454037, 14521821, 14828375, 7584912, -8781598, -13137231, -18922016, -816581, -6677064,
+-9529996, 10322417, -2806761, 23988466, -17719962, -6436009, 13720273, -14250165, -5654325, 3327526,
+277025, -2048163, -13687524, 6296422, 2357937, -7425462, 6813966, 14474040, -12382928, 13972065,
+17381196, -5160940, -9161165, 7183870, -7023882, 6640557, 4253628, -7228967, -5626407, -1404991,
+-2229088, 10213969, 3465502, -1690607, -4908074, -8042327, -4536023, 2596308, -5134634, 2514167,
+4937065, 3183645, -3440269, 2700461, -2808372, 3924526, 2562485, 4374424, 2662880, 245350,
+-4522064, 3030100, 4591320, -4554813, 227633, 1637456, 1736777, 3977677, 401043, -458488,
+4374961, 5370857, 1085016, -2376191, -4107063, -48855, 3733937, 4537633, 3105798, 22315040,
+-5108864, 3167539, -1207423, -7323456, 9985799, -3636764, 3693135, 1224603, 14313515, -4481799,
+16694538, 307090, 8309151, 7412040, -1321239, -5384279, -16268799, 7755637, 16933982, 922344,
+-112743, 11786464, 9972377, -686658, 1845762, 20195474, 12636331, -3614752, 4398584, 13292924,
+-3331284, -14641007, 361851, -10619307, -1668058, -6716255, 636729, -20263118, -6048925, -7355669,
+359704, 4293357, 4292283, 19796578, 21845814, 11558831, -15082851, -8860518, 12288438, 17263084,
+3661460, -15669651, -2561948, -3671660, -16372415, -10299868, -12389907, 15228880, -5645735, 2137820,
+-15406048, 22512608, 16600049, -1802813, 6881612, 37332928, -1853278, -7577396, -14294725, -803696,
+9940165, 7909183, -5731097, 11302743, 22340272, -9488120, 14264660, -6411850, 4698158, -8884140,
+-4818417, -7654706, -10076530, -5131412, 6670621, 46708, -2179159, 1689533, 2796561, 12104828,
+-1286880, 1274532, -94489, -5484673, -554588, -1911797, 1163399, 4944044, -3102577, -1416266,
+-3855270, -1775432, 1418413, 1560147, -1360431, -7866233, -7365332, -2463701, -9081708, -7900593,
+-1396938, 7165616, 6327024, 5496485, 1272921, -1169842, 381715, 3102040, 2583960, -898185,
+1799591, 1331977, 11480448, 1174674, -6896107, 6821482, 2638721, -9543417, -16157130, 20975546,
+-13175886, 15832323, -11581379, -17215302, 788663, 21728776, 13895830, -15985331, -10769630, 3750043,
+3142842, 7380902, -1318018, 14507326, 7652021, 19102404, -7001334, -3144990, -726386, -3643206,
+-18414136, -13489419, -4292820, 19207630, 3935264, 1552631, 595390, -17806934, -20381768, -15665356,
+8066486, 9326521, -7004555, -4538170, 1724429, 2253784, -10892574, 3174518, 20156282, 3595425,
+12607876, 12494597, 8892730, 21741124, 31085362, 10277320, 491774, 4535486, 12246562, -6446209,
+-3505230, 8323647, -2851858, 4476430, -2922725, 13499082, 4723927, 9577240, -2688113, -3525631,
+6790880, 18020072, -1347546, -14677514, 9390946, -22999550, -26776436, -9104257, 13798656, -8879308,
+-26477400, -16117402, -6759742, 9706626, 6564858, -14251238, 25636660, -8200167, -18017924, 4747013,
+6999186, -5869073, 8896488, -9235790, -3674345, 3372623, 2392834, -4835060, 4518306, 896038,
+8083129, -4445291, -9696962, -5602785, 1605781, -2110440, -1967632, -741956, 62277, -754841,
+6566468, -1106491, 1088774, -2641942, 3029563, 5447093, 1061394, 5221607, 1621887, -8075613,
+-3569118, 46171, -6983617, -8251169, 3990562, 5818607, -4516695, -8805220, -9672803, 3970697,
+1636919, -420907, 6283001, -3624953, 2302639, 8591545, -37467148, 2164664, 18742164, -3341485,
+-4600447, 23095650, -12475269, -12576738, -16376710, -5242545, -5648956, -10672994, 3027415, 5384279,
+8669928, 6371047, -5363341, -3973919, -2010045, -4470524, 1354525, 4433480, 18501646, -7903814,
+-24395414, 13045963, -88047, -615254, -20326470, 9071508, 3714073, -1993939, 22738094, -6478422,
+2295123, -2041183, 9913321, 12281996, -13623099, -1242856, -7734699, -801011, 6652905, -5005248,
+10296110, -16313896, -13889924, -8587250, -14827838, -2477659, 1112397, 2327872, -20657182, -13375065,
+9509058, 16542603, -8050380, -9164923, 8442295, -18651432, -17183090, -16362215, 17807472, -30393872,
+9652402, -1600949, -18195628, -5692979, 14921253, 38732016, -5429913, -10658498, 12508555, 29700772,
+10410464, -6674916, -7450695, -1342714, 7868380, -543313, 3531000, 17679160, 897111, -6598144,
+-12747463, 10358387, -14993731, -10040560, -7605850, 5204964, -6351183, -10668162, -7035694, -6492917,
+-379568, -7873212, 2410551, -6104223, -840740, -2004676, 7192997, -5674726, -4757750, -11623255,
+-3772055, -2075543, -4227322, 11020886, -8454643, -10453414, -991064, -9176734, -8705362, -3846680,
+912144, 8253854, -1416802, -3554086, -1931125, -5493263, 3526705, -11065983, -1296543, 11403138,
+5089536, 7455527, -3230352, 2816962, 3312494, -2763275, -4690105, -6252399, 1868848, 2938295,
+4656819, 5179194, -2184528, -21028696, -33427194, -1998770, 38429756, -6198712, -2700998, -25429428,
+-1868848, -1751273, 2690797, 8338679, 1204738, 6923488, 551366, -473520, -18028126, 2517925,
+16505559, -11166915, 20459614, -8658654, -1206349, -18148384, 11647414, -9070434, -5794985, -20933134,
+-28236188, 14397267, -13748727, -13658533, 5032628, 2845416, -6024229, 1331977, 16098074, -4814122,
+-15215995, -9556839, -19502910, -2460480, 5681705, 13495861, 2866354, -4053376, -3266860, -8173323,
+4791573, 14022531, 2428267, -8876624, 16121160, -15404974, 1749125, -26502096, -7680476, -5242008,
+32704028, -20662550, 6774237, -6752763, 4400194, -3856344, -3518115, 571768, 13380971, 3962107,
+-23924042, 26390426, 8212515, 9390409, 3551938, -10593000, -7917236, -3069828, 3482682, -634581,
+5424007, -14347338, -14756434, -2473901, 7405598, 16031502, -9808632, 13594645, -3207267, 5279589,
+-10624675, 6109591, -17408576, 19617264, 1008780, 2164127, 6597070, 8838506, 1009854, -12279311,
+-5767604, 3288871, -11480984, 3141232, 5616207, 4901632, -6766721, -4306779, 11924440, 2143726,
+-11801496, -1730872, 10362682, -3853123, -14551886, 16647293, -4372277, 6433324, -2658048, -4781373,
+-7683160, 5120138, 1569274, 5328981, 962073, 8947491, 1218160, 6437082, -2962991, 445603,
+4185983, -2266669, -3377992, -16360604, -9920301, 35788888, -4542465, 3236258, -18604188, 16852378,
+-9686762, 12483859, -9773198, 21734682, 2054068, 2473364, -10510859, -8245264, 12426414, 28088550,
+-11644730, -16649978, 7927436, -6376416, 18278308, 23459648, 11375758, -3179887, 14289356, -9218074,
+-8890045, 19761144, 26759794, -29674466, 2436320, 4780836, 5061082, -9836549, -719407, 12416750,
+-30313342, 9419400, 17701170, 6978248, -13487271, -3412889, 21740588, 18127984, 5920076, -9918690,
+-13368086, -25907780, 37416680, 7095286, 19240916, -2476586, -7961259, 4514548, 11205033, 678068,
+-594316, -30154966, 4732517, 29080150, -5124970, 27881318, -16516834, -7094212, -11511586, 6757058,
+25936234, -7833484, -730681, 23778550, 28651726, -9006010, -20900384, -18329846, -16247324, -7241315,
+-6846715, 16809966, -20138564, 11325292, 12452721, -4243428, 1459752, 13250511, -2462090, -7097434,
+7805030, 5829881, 4182225, 12213276, 2654290, -1789928, 10801843, 4171487, 4596689, 5782637,
+-1801739, 972273, -2400350, 4980552, -19723564, -5177046, 888521, -3544422, 7760469, -14542222,
+-1625108, 484794, 5327370, -56371, 8434242, 6128382, -3937948, 12173011, 6120329, -3836480,
+8635569, 9580461, 155693, -5703717, 4588099, 9334038, 5556077, -1053341, -8651138, -3945464,
+2354179, 1671816, 1472637, -8082055, 14144401, 10433549, 24978992, -7530152, 18096844, -9542344,
+-3810173, 16859358, -550293, 22972706, -27645094, 17391396, 3191161, 7762080, -11092827, 8461086,
+20685100, 40215388, -9190693, 10275709, -507880, -26552024, 24481314, 2561411, 9612137, -4774930,
+-12399034, -4536023, -947040, -10233833, -6419366, 34188476, 2465848, 13217762, -9667435, 24273008,
+223875, 11839077, 5046050, -14008573, -2916283, -8589398, 361851, 4498442, 28666222, 14672145,
+1313723, 3528853, -900869, -2229625, 4796942, 2995203, 18006114, 14712410, 7452842, -8358543,
+12545063, 26276074, -24547886, 23052164, 3799436, 7042673, -24664924, -11615202, -31022548, -24977382,
+-4835597, 16925392, 14111652, -43020540, -191663, -19313394, 10358387, 43272332, 21760988, -27563490,
+15283641, -11241540, -14179835, 23920284, 12125230, -12041478, -6681896, 21074330, 17242146, 9531606,
+26718454, -6999723, 16437377, 14533096, -16834662, 23920820, 6642704, 27737972, 8523363, -2382096,
+16356309, -1509681, 4359392, -19185618, 14696841, -9262634, 7714298, -6842420, 3481071, 9163313,
+22091164, 5936719, 13482976, 3556770, 4401805, -7031399, -1489817, -2397666, 1936493, 11200201,
+9556839, 16750372, 6272263, -1814087, 2797098, -3704409, -2032593, -16464757, -2646237, 4325032,
+5423470, 14474040, 12906377, 11731166, 13532368, -35762044, -56166360, -14093935, -6754910, -13314935,
+2611877, 19226958, -20106352, 28782186, 9895605, -40417788, -31819802, -5850819, 21879638, 1239098,
+1410360, -3841848, -13406204, -39110508, 1175210, -32789390, -27972586, 13929116, 10268730, 10199474,
+-5091147, -12451647, 29531122, 18396956, -13146895, -25478820, 19360638, 10435697, 4241280, -11756399,
+-30758408, 11973295, -14654428, 4988068, -26250840, 31854162, 383863, -12152073, 2675765, 8340827,
+25530896, 16632798, -7016903, -865973, 8703214, 9409200, 9619653, -5471252, -40896140, -31450972,
+6094022, -3960497, 23379118, -4124242, -10521596, -28174986, 32889786, 13174812, -23480050, -23464480,
+33760052, 32370094, -649614, 23860154, -3438658, 1231582, -9986873, -5463736, -18600966, 23012972,
+-4464082, -4702453, -10063645, 9739912, -29078540, 14016626, -8699456, -4993437, 20205136, -24159,
+2986076, 5563594, 18541910, 10029286, -7897371, 14367202, -4384625, 17258790, 6432788, -18479096,
+4487167, -9172976, 8770860, -7359964, 537, -12125230, -6640020, 7342784, -12612708, 5732171,
+4085051, 5880347, -11275900, -7499550, -14455249, -12071542, 16535087, -5552856, 10632728, 7246684,
+-10348187, -967441, -9055939, 843961, -5778342, 21584896, 17689896, 12546673, 16529182, -3581466,
+-18530100, -20622286, -3092913, 6910066, 30692910, 19304268, -7136625, -5214091, -8308614, -14775761,
+-955093, 7501698, 10664941, 7296613, 3417720, 19219442, 2226404, -14074608, -35051764, 55455008,
+1720134, -43441984, -2949032, -16364362, 7611219, 21095268, 19757386, -24302536, -38190312, 6273874,
+-18111340, 5570573, -3434363, 16676821, -5252208, 2127620, 10410464, -16032576, -18967112, 1738925,
+5389110, 16512539, -59056, -27194660, 18019536, -15298674, 14232985, -13334800, -8546448, -1763621,
+-3937411, -29211146, 5764920, 7785165, -27624156, 11533061, -10653130, 5308580, -8993125, 26720066,
+21369610, -27526982, -14118094, 18313204, 23650238, -28159416, 37135360, 2099165, 29969208, 21238614,
+35305168, -11100880, -14492293, 7565048, -28663538, 4146254, 4014721, 50655920, -15443629, -48166984,
+81187768, -38475928, -29027000, 46323908, 21405580, -27473296, 45641544, 4759898, -36528160, 45593224,
+5896990, 3828427, -7657927, 6461242, 30800822, -7724499, -10253161, -16125455, 23027468, -8534100,
+-5450314, -3464428, -8790724, -10052371, -13857175, 13326747, -1677722, -1552631, -4800163, -3788698,
+2066416, -6420976, -10329933, 1075352, -8295730, -16297790, -16321949, 20421496, -8666170, 1638530,
+19447612, -9485972, -8435853, 1059783, 9807021, 3792993, 4359392, 18098992, -11035382, 2371359,
+-8053064, -5510980, -3373160, 30123826, 15403900, -5231270, 4631586, -16406775, 5470178, -15039365,
+-8859981, 6846178, -3606162, -30733712, 19065360, 7385733, -5363878, -386547, -15346992, -2378875,
+513785, -50184544, 6932614, 15055471, -37681896, 17246442, 9946607, -13197898, -3782793, -654446,
+-9256191, -3024731, -5435818, -16786880, 442382, -8373039, -1879585, -4122632, 8145943, 29993904,
+25074020, -23145042, -2594697, 31559956, -5570573, -5929739, -32329292, 3728032, 10552735, -5285494,
+27463094, 65950296, -22240414, -27804544, 46902652, -3144990, -25379498, 29291140, 19229642, -15213848,
+-22811108, -28128814, 8504035, 15063524, -12594992, 44227424, 28794534, -55212340, -53039088, 30852360,
+-25007984, -32309428, 41790568, 6709276, 55968256, 26870926, -6890738, -7577396, -40542344, -31581968,
+91973504, 25376814, -19856708, -44604308, 1134945, -18206904, -39904540, -6259915, 46504832, 19768660,
+475668, 38308424, 33425046, -10704132, -42849816, 6549825, 25485800, -10687489, -10123775, 53393960,
+30613454, 5225365, -5757404, -27593018, -27100170, -7059316, 25317222, 10160282, -10493679, -5013301,
+-12125230, 9901510, -7854959, -10426033, -6806987, -1403381, 7486128, 10160282, 8967355, 3686156,
+-24635932, -8696772, -4964982, 9076340, -9687299, 1529545, -2707977, 22329534, -14695767, -10267656,
+23051090, 6310381, -11938935, 18124762, -6571300, 5162014, 1258962, 3976603, -14217415, -3991098,
+18920942, 18522584, 7580081, -7640210, 4807142, -8747238, -7072201, -5471789, 9824201, -15921981,
+-3515431, 12217034, 49428632, 42068668, -11613055, 30040612, 2559801, -22433688, 14198088, 25730612,
+7941932, 11409581, -33535642, -6231998, 3384434, 7181186, -5354751, -28244242, -10841571, 10853919,
+-7488813, -2565706, -24805584, 37810208, 4182225, -30315490, 16953310, 44301512, -23107998, -12705587,
+5920076, 14924474, -14628122, -27131308, 23177792, 40321152, -3688303, -15217069, 4682051, 11739219,
+17661442, 25987774, 1183800, 46933792, -1539209, -51327544, -96637, -5388037, 16384763, -4980015,
+-42777876, -732292, -18765248, -17395154, 24866786, 13776644, 13961865, 18663244, -38401840, -19383188,
+-7170985, -74088, 14778446, 966905, -8268349, 1498407, -13497472, -25390772, 1975148, 40592808,
+-21180094, 4257923, -16581258, -11055246, 26925686, -33349884, -920197, 15275051, -12496207, 5974300,
+3662533, 8837969, 9180493, -17413944, -21935472, 36384816, -8041253, -11238319, 17952964, -18030272,
+10986526, 2736968, -8167954, 6086506, 14975477, -2536715, 1509681, -7250442, 3143916, 1389959,
+-1639067, -6430640, 7890929, 4670240, -1473711, -313533, 6506339, 6341519, -7272454, -11550241,
+5900212, -313533, 2681133, 1101659, -3760781, 6574521, -494458, 5523328, -2658048, -567473,
+-4162360, 1374926, 5082557, -891206, 13702556, -5449777, -5087926, 1059246, -7004555, 4403415,
+8941048, -43456480, -61774516, -55067924, 110521320, 105046312, 105297568, 296404288, 105611096, -12462384,
+19736986, -205365472, -249640672, -84194240, -139990704, -194542160, 25186226, -11039140, -32314798, 213711664,
+130798936, 54295904, 334333664, 157492160, 29353954, 152088544, -35952096, -182061520, -173921472, -166131488,
+-229686800, -225322032, -52682604, -81506128, -132346200, 154469040, 71421008, -55996172, 223621760, 71910640,
+-26088706, 252391072, 230351440, 52754548, 239036400, 242117504, -9156333, 59913184, 27577448, -233574288,
+-270684416, -201976736, -381123040, -361348480, -216721904, -289900096, -217735520, 24393804, 179225760, 202946864,
+436866880, 396795936, 350273920, 376967136, 278385824, 140979616, 43250856, -30924302, -212477936, -256613024,
+-274256736, -309524864, -293268416, -250400896, -161514928, -117741696, -114722336, 21585968, 69672424, 136331392,
+325111296, 337201632, 230875968, 288127872, 122037200, -40197136, -95472288, -148344944, -202755744, -147261008,
+-98185640, -98156112, -33674692, -9592273, 839666, 51626580, 66114044, 62568008, 96487512, 60329260,
+39298412, 48235704, -28786482, -27060978, 8172249, -78685952, -55397560, -20859582, -75618264, -47160352,
+-5304285, -76572288, -80418968, -53872312, -78929152, -52296060, 59260348, 110400520, 176386256, 259783776,
+242857312, 207364240, 195342096, 105098920, -32502702, -163337600, -288167616, -342635296, -308623456, -250413232,
+-188777232, -89234392, 27912992, 110945448, 156483376, 168397616, 149017648, 132417600, 123573192, 124018256,
+86437824, 40044128, 18291192, -12176769, -36501316, -33727304, -59032176, -64124936, -45552424, -35300336,
+-45694692, -44913548, -56786448, -65630320, -64938832, -56726316, -46354508, -15621333, 23014046, 52843132,
+70893800, 90907280, 89882928, 74788264, 53563076, 32307280, 12123619, 9306120, 1151588, -12102144,
+-22018686, -24888798, -32581622, -36738076, -40644348, -44139916, -46322296, -31825170, -17904108, -5712307,
+-137439, 6755447, 12523051, 22112640, 22662932, 15803869, 7158637, 11808476, 17511656, 18367964,
+17174500, 16449725, 14377403, 16482474, 14841796, 7766912, -1653562, -6953552, -18049600, -22174380,
+-23832774, -24934970, -28201292, -24932822, -25971668, -23615878, -14461692, -2006287, 9957345, 26101590,
+36421860, 42974368, 40807560, 31504658, 14549739, -217433, -12787191, -17411260, -20653960, -17745194,
+-14516453, -9337259, -6227166, -3047816, -2709588, -244813, 470836, 2520609, 2251637, 3777961,
+2629057, 3165928, 1622961, 1675574, -47245, 306553, -886911, 117038, -667867, 397284,
+-485331, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-3626026,
-13776108, 7361037, 6051609, 3442416, -1507534, -387084, -1458141, -2828773, -4032438, -2775086,
--4118874, -1673964, 3842922, 1374926, -241592, 47782, 2507187, 1237488, -1647657, -1679332,
--1341640, -7150584, 2951180, 811212, 35433, -1429687, 901943, 185220, -2024540, 1098438,
-2605435, 49392, -3321084, -776852, -1452236, -1469416, 376347, 3233037, -849330, 812823,
--3794604, 2483028, -4680441, 3031710, 631360, 242129, 11274, 3017752, -3597035, -2584497,
--4892505, 1360968, 853088, 309238, 2757906, -2933463, 628139, -340376, 60130, -2119030,
-1910187, 952946, -1632625, 3074123, -4804995, 2266669, -2629594, 4952098, 2206003, 932545,
-333397, -900869, -5987722, 4624606, -1447404, -74088, 767725, 1345935, 1072668, 1278827,
-1427540, -358630, 407485, -588947, 1394791, -27380, 789737, -1735167, 607201, -207232,
-385473, 801548, 1937030, -32749, -340376, 736050, 762357, -709743, 999117, -1110786,
-976568, 288837, 869194, 147103, 560493, -229781, 219043, 844498, 374736, -46708,
-578747, -45634, 388158, 420370, -50466, 548682, -155693, 13286481, 6214281, 8701604,
-2284386, 3011846, -578747, 3453691, 277025, 3078418, -2288144, 5927055, -1560684, -6602439,
--1908576, 216359, 290984, -2042794, 5048197, 362388, 1926293, 5030481, 2348273, 135828,
--81604, 1258962, -4591857, -2909304, 1721208, 2233920, -1717987, 550293, 2135136, -4401805,
-6245420, -569620, 857920, -923955, 2273648, 3338263, 90731, -3347390, -3568044, 6933688,
-80531, -1925219, -362925, 4027069, 2846490, -1961726, -2824478, -5968394, -1950452, -2401961,
-178778, -2161979, 467078, -5796595, -2473901, 759672, -2467459, 1370632, 2296734, -1112933,
--230854, 1190780, -1565516, 2391760, -242666, 2988760, -36507, -922881, -3452080, 461172,
--4264903, 1397475, 4832, 2452963, -28454, 2516851, 3069828, 2755759, 31139, -1658931,
--203474, -556198, 3396782, -855235, 374199, 2297271, 2249489, -81604, 1238024, 548682,
-1125281, -408559, 1377611, -467078, 2064269, 569620, 339302, -94489, 122407, 298500,
-1003949, 2779381, -8902393, -2887829, -2025614, 1540283, 1760400, -6102075, -2729989, -1217623,
-1462436, 3228742, 1019518, 4430259, -3665218, -5308043, 1534377, 169651, -951872, -3639448,
-11770895, -623844, 3131031, 693100, 366146, -274878, -1814624, -4485557, -3514357, -1110249,
-3007014, -2510409, 6162741, -2097555, -576063, -5062156, -6013491, -528818, -3835943, -2143189,
-8197482, -4492536, -1243393, -4362076, 1593433, 196495, -1579474, -4583267, -872415, 26844,
--5191005, 600759, -2794950, 4140885, 2728915, -2401424, -1273458, -1332514, 1271310, -237834,
-3296924, -1716913, -2167885, -2236604, 7475391, 6740951, -2318209, -6514392, 881005, 2000918,
--209380, 1900523, -2702071, 520765, -3133716, 2225330, 170188, 7168838, 4426501, 6815040,
--6215892, 2680597, 4159139, 149250, 3156264, 2263448, 469762, 4685273, -864362, -509491,
-1202054, 642098, -1929514, 1862942, -1478543, -1276142, -133681, 467615, -211527, 701690,
--1104880, 540092, -141734, 136365, 607738, 854162, 411780, 991601, 938450, -725850,
--946503, 734439, 274341, -1698660, -690416, 1348620, -828392, -29341606, -4699231, -8488466,
--9533217, 2529736, -3198140, -8375186, -6860137, 1109712, -6758668, 919660, 10182294, -2566780,
-4393752, 3252901, 8591545, 2176475, -5915781, 1320166, 9333501, -4384088, 4665945, -6903086,
--6211060, 2004676, 2704756, 7259569, 467078, -4524748, 4278861, -3049964, 3292093, -420907,
-4646618, -3951370, -2498597, -4402342, 92879, 750546, -1672353, 3307662, -7658464, 949188,
-7794292, 1640141, -2166274, 2947958, -3933653, -2051921, -9680856, -2918430, -289910, 1480153,
-197032, 5179194, -7767449, 717796, -1039382, 3889093, 2131915, -1548336, 5587753, -4913980,
--625992, -3951370, -7465190, -3197066, -1695438, -2158758, 5665062, -5086852, -8069170, 279710,
-2680597, -850940, -2308545, 2745558, 3122978, -2304787, -1800128, -3187403, -1272921, 6478422,
--3000572, 3554622, -1050656, -152471, -574452, -257698, -3352222, 788663, -1997160, -135828,
--214748, -525597, 104153, -816581, -1034013, -1076426, -261456, 290984, -629750, 1043677,
-504122, -14596446, 8338142, 9349607, -484258, 5240397, 2416993, 11050414, 14737107, 1875827,
-1953673, 4208531, 1857573, 2434710, -2060511, 2901251, -2393371, 3856881, 4533875, -12610024,
-6564858, -1389959, -2301566, -3906273, -5068599, 2052994, 3617436, 5731097, 1156957, 970126,
--7321846, 315680, -2109903, -2464238, -1051193, 978179, 464393, -569083, 7274601, -382252,
--2360085, 2384781, -2770254, 3702799, 4930086, 5463199, 2883534, 595390, -3001109, 6103686,
-1983201, 818728, 682900, 801011, 484794, -3536369, -4933844, 4517769, -4595615, 4328254,
-3997004, 2901251, -596464, -3279745, 3003256, 3846680, 8578123, 3939559, 3265249, 1999844,
--8303783, -2567317, 1069447, -1363652, 3636227, -7230041, 406948, 2390149, -6722161, -635655,
-2312840, -1638530, 910533, -3964255, 1539746, 510564, -1649268, 3120831, 1878511, 125628,
-3464428, -1548336, -1464584, -342524, 754841, 1400159, 5230734, 848793, 1815697, 1225139,
--1074, 1134945, -808528, -982474, -1347009, 916976, -718870, -661425, 631897, 553514,
--586800, 1762010, -981400, 1233193, 1181653, -513785, 1752884, 493921, 775242, 853625,
-163746, 186294, 2029909, -139586, 27090506, 8092256, 2059437, 5229123, 13574244, 5388037,
-16355772, 3934190, -3532074, -1225676, -1304060, -1611687, 4484483, 6928319, -3182034, 1445257,
-4932233, -1864016, -6708202, 5327907, -572841, 2505577, -2241973, -3451006, 5602785, 1240172,
--442919, -1626182, -6103686, -3100967, 3408057, 789737, -2055679, -1130113, 1002338, 2276333,
-6274947, 1916092, -5652714, -1357747, 438624, -1840930, 2127083, 2900714, -5695664, -7001871,
--334471, 1705102, -668404, 5339718, -9852118, -2144263, -4430259, -5620502, -542240, -467078,
-1537061, 5280663, 18790, 767189, 1788854, -890669, 7158637, 4491999, -5746130, -5133560,
-3956739, 8556649, -670552, -4044786, 8540006, 4450660, 2034741, -3749507, -3966939, 4160213,
-288300, 3141769, -1845225, -6172942, -3318399, -4207994, -2581275, 2407866, -3358665, 452045,
-1537598, -1253057, 1493575, 1015223, 1282585, 695248, -2147484, 1215476, -630286, -1184337,
--468688, 1641214, 1366337, 206695, -1835562, 1682554, -684510, 2915746, -390305, 392990,
--2721936, -3597572, 1262720, -3386045, -589484, -528281, -1843615, -923418, 477278, -3036542,
--1199907, -312459, 400506, -636192, 2199023, 300111, -745714, 13365938, 6340983, 12045773,
--4131222, 198642, -3139621, 12135430, -12481712, -1656784, 3069291, -2270427, -2552821, 4130685,
--1492501, -3714610, 10457172, 6069326, 1115081, 17941690, -4975720, -1085016, -3877282, 238371,
-2845416, -4502200, -693100, -2287070, 6707665, -5653251, 1431835, 504122, -1909650, 725313,
-3901441, 2833068, -5516886, -9342628, 122407, 2049773, 7722351, 9285719, 9037685, 939524,
--5368709, 6681359, -16047608, -2516851, -6364068, -9174050, 6393059, -2026688, -3106335, 5171678,
--1938104, -2609193, 13816373, 276489, -4206921, 4958003, 273267, 3800509, 2617246, 1927904,
-8331163, -4941897, -3201898, 609349, -7339026, 56908, 1269163, -1721208, 2382633, 4284230,
-8764418, -3227668, 2856153, 7774965, 4549444, 2388002, 1345399, -2518462, -5697811, 2984466,
-4170413, -810675, 327491, -763967, -815507, -3064996, 524523, -853625, 446677, -2852932,
--1600412, 134755, -622770, 2883534, 1098975, 137976, -3935264, -1611150, 1802276, -2109366,
--142271, 1606318, 1401770, -2459406, 2306398, 2010045, 515396, 2614561, 2133525, -4307316,
--895501, -1575716, 1101122, 2537789, 2825552, -477815, -1739462, 517544, -994285, -20691004,
--31077846, -5250061, 1542967, -550293, 861141, -1467268, -6233072, -3526168, -4969814, -1352378,
-5051419, 6012954, -5476620, -8090645, 6899865, 1411434, -4437238, 340376, -741419, -4944581,
--4135517, 11442867, 5829345, -6189048, 3125663, 1271847, 4897874, -6007586, 6649146, -6680285,
-4566087, 2960843, -1418413, -3134253, 2944200, -12435004, -6168110, 7563975, 12222940, 6755984,
--8578660, 164283, -6088116, 8098161, 1666447, 2070711, 561030, -6746857, 3237869, 9912248,
-1105417, 7481833, 5309117, 3401614, 5735929, 12164421, -3410204, -12342662, 5938329, -15032,
--2935073, 574989, 10544145, -4370666, -7370701, 3548717, -1971390, -1307281, -2807835, -1708860,
--3333968, -5806259, -2918430, 7026030, -9688909, -6121939, -3593814, -7000260, -6781754, -467078,
-4159676, -6426882, -149250, -2419140, -2721399, -5799280, -3659849, -6650757, -388695, -5129802,
--429497, -192737, 4590783, 3224984, -2385854, -2576981, -3403762, -1083942, -2420214, -2340220,
-2765422, -4552129, 1654636, 325344, -2897492, 248571, -1911261, 1021129, -1009854, -3732864,
--4534412, -102542, 1136556, 1802813, -896038, 729608, 1374926, -61740, -2390686, -380105,
--3049964, 251792, 1348620, 1030255, 1279363, -11861089, -7886634, 2116345, 1819456, 16039555,
--14032732, -9439264, -5478231, -2538326, -1823751, 5253282, 4887136, -7282654, 7488276, -1660542,
-3343632, -5217849, 11209865, -2101313, -4354023, 7404524, 5175973, 4348118, -7783018, -7136625,
-9474698, -4915053, 2729989, 2435247, -3560528, 8229158, 2382633, 86973, 1716376, 6065568,
-7572028, 2456185, -6903086, 1679869, -9812390, 5895917, 2447058, -10792179, 7631083, 1889249,
--5747740, 10063108, 3085397, -2608656, 5730560, -811212, 10926934, -2426120, -2840047, -2243047,
--1524177, 14415521, 2944200, 335544, 3818226, -11949136, -7598871, -8092256, 818728, 7710003,
-937914, 9540733, -12295418, -4939213, -7829189, -7101192, 17755394, -1730335, 6298033, 4654671,
--3896072, -811749, -2552821, 1432372, 871342, 4948876, 2901251, 9830106, -5323612, 889058,
--1733019, 2197413, -133681, -113817, -95026, -2002529, -9270150, 3502546, 2083596, 1438814,
--2509872, -794032, -1246614, -5065914, -391916, -1769527, -3403762, 1938641, -2881923, 1269163,
-1581085, 1358820, 2047089, -3510599, -2008971, -2359548, -2263448, 1345399, 2494839, 1560684,
--906775, -426276, -696858, -1057099, 3654480, -1223529, 2583960, 1706176, -1069447, 1168231,
--794032, 49929, 868120, 1042066, -16153372, 5048734, -6943352, 3936875, -4860293, 13048648,
-2188286, -9134859, 1427540, -9313100, 7548942, 14420890, -12305081, 8123394, 2995203, -358630,
-5933498, 15370077, -5888400, -14496, 4688494, -16779364, 972273, 7634305, -4676683, 5471789,
-5946382, -3061238, 15046881, -7505992, -13633837, -5859409, 1628866, 363998, -2799782, -5873905,
-4093641, 3802120, -5906, -9591736, -2263448, -2430415, 6396817, -4201015, 25241522, -3176128,
-3602941, -1161789, -1086090, -12253542, 1245004, 9088151, 7339562, 24630564, -2661806, -2384244,
--5114769, -971736, -6948184, -525597, 9862856, -5259188, -1036161, 1788317, 2314987, 9709847,
-7885560, 2233920, 19050864, -3607773, -17677012, -17680770, -12486007, -2569464, 5560372, -1745904,
--4660040, 8409546, -530965, 7466801, -4623533, -878321, 6046240, 5143760, -1891396, -1809792,
-598074, 1572495, -1983738, -4132832, -5956583, -2006287, -2544768, -753767, -4254702, 3157338,
--1296543, 944356, -2167348, -3049427, 4051228, 1820529, -2108829, -571231, -1734093, -1823751,
-1750736, -1139240, -2047089, -4025995, 3144453, 1248762, -1755568, -3052111, -4075924, -767189,
--2813204, -2820720, 3383361, -2031520, 646929, 129386, -1505386, 1458141, 634045, -563714,
--788127, -905164, 28686086, -20657718, -15741592, -4974109, -9954660, -11293080, 13909252, 5714991,
-2774012, -4312684, -2794413, 16980154, -4916127, -7027640, -20225538, -2835215, -486942, 9640054,
-3541738, -4011500, 1270774, 8474507, 3815005, 5345087, 12984223, 16372415, 4547834, -5935108,
-4231080, -9636833, 6741488, 5614596, -3440269, 465467, -7507603, 3195456, 264141, -14519674,
-14355928, -1136556, -6583648, 8975945, -13494787, -2979634, 15003931, 8676908, -108448, 725850,
--18707804, 6768869, 10591389, 6167573, 3585224, -847182, -13770202, -40575092, -3146064, 8501888,
-11566884, -848793, -11838540, 20340966, -9205189, 9400073, 15375446, 12777528, 2471217, 15417859,
-1869921, 5643050, 3362960, 9454297, 1966558, 3164317, 19516332, -6249178, -4063576, 16615618,
-8704288, 4691715, -6585796, 1902134, 13496935, -1183264, 10857677, 2719251, 2517925, 6990596,
--3415573, -51003, 917512, -419833, -2803003, 5523865, 2646237, -6991133, 4220342, 3018288,
-4078072, 2202781, -1862942, 300111, -2086817, -2356327, 3464428, 4417374, 1952600, 2806224,
--1920924, -1791001, -1188095, -2272575, -3164317, -4796405, 1017907, -2952253, 2720325, -864362,
-1701881, -4389994, -2840047, -646393, -1265942, -1047972, -1870995, 974421, 4855998, 5126044,
-2088428, 751082, -2355790, 4140349, 14743549, 13261248, -3218541, -7385733, -966368, -4516158,
-16099685, 9822590, -27028766, -3392487, 2595234, -13246753, 5461588, -19145354, 14611479, 3068217,
--1857037, 7407745, 4221416, -4326106, -5954972, -4979478, 20483772, 431644, 185757, 4079145,
--2385854, 7696045, 24068996, 9297530, -3129421, -4560719, -3151969, 13379360, 5218922, 13553306,
-9959492, 6582575, 4338991, -6420439, -6341519, 5850283, -13764296, 2052994, -7160784, -6611566,
-799938, 9379135, 1684701, 434329, 3806415, -3408057, 16595754, 20769924, 24477556, -456877,
-11343009, -14683419, 5853504, 7972533, -6264747, 11958263, -9525701, -19979114, 2920041, -10626286,
--1231045, 598611, -10130217, 2301566, 14587320, -8994735, -8156680, 6874632, 13536126, -903554,
--4559108, 11853573, 1389422, 2418067, -8049306, -2029372, -266825, 9739912, -4785668, 522912,
--2052458, 1911797, 111132, 1662152, 2849711, 1506460, 317828, 715649, 2489471, 2554432,
--1990717, -4816806, -523449, -942208, -3930969, -5412196, -104690, -2624225, 3976603, -3735011,
-3088082, 4628901, -62814, -8291971, -594853, 1351841, -2602750, -4023848, 775778, 2022930,
-12766790, 3978214, 4076998, -587337, 495532, -1277753, 3864934, -1084479, 4100620, 10338523,
-9780714, -1414655, -372052, -1971390, 664109, 3083250, 3913252, 5421323, 1213865, -17067126,
-31088048, 1981054, 8065949, 23797876, -8814884, 2441689, -4564477, 6280316, -6886980, 6870874,
--16770774, -19845970, -639413, -11753715, -933619, -1095754, -1369021, -3354906, 1232119, -5506148,
-4920959, -15784542, -6349573, -21295522, -1119913, 4878009, 10166724, 22986128, 12703440, 3966939,
-2888903, 6593312, 5048734, 3868692, 9237401, 9721122, -3140695, -19467476, -19337016, -13242995,
--7955890, 1912334, 6448894, -7147900, -11359115, -19758998, 515933, -7566122, 17955648, -8062191,
-4470524, -13727252, -6664179, -2435783, -5688148, -26501022, -27628988, 7521025, 2761664, 672699,
-14076218, 8022462, 11286637, 9098351, -17238924, -3788161, 32156958, -6021544, -12254615, 4680441,
--7157026, 3233574, -19954954, 7996692, -9191230, 1294933, -1376537, 13007845, 705985, 5174362,
--11384885, 2074469, -6451041, -2948495, -7833484, -5952825, 3986267, 4469451, -10417443, -3555696,
-677531, 1870458, 2501282, 1279900, -4084514, 4436165, 1793686, 1463510, -612033, -382789,
-1349157, 4487167, -4996121, 4531191, -1305670, -258235, -1828046, 2838974, -2971044, -1795833,
-3994857, -7777649, -233539, 1387811, -4750771, -1720671, -10834592, 7619809, 9050033, -740882,
-2074469, 2306398, 3032247, -4923107, 5006858, 3119757, 3890704, -3631395, 2087891, 2921115,
-4613869, 18566070, 13973139, 1933272, 14853071, -2698850, -6172405, 8281234, -11466489, -22173842,
--33356326, 2891050, 647466, 12973486, 9350144, -12307229, -6405944, -32421098, -2238215, -15044197,
-3482145, -7518877, -3690988, -6153615, -2463164, -2429341, -11348914, -4976257, -13217225, 10610717,
--2695092, 9096741, 23251342, -12198781, 6653978, -1802813, -5836861, 6113886, -12518756, -21093122,
-10127533, 5092758, 10073309, 6445672, -44467408, -20049982, 5867462, -14671608, -1306207, -12518219,
-18536006, 22504018, -1150514, 24864102, 3438658, 11358041, -3321084, -703838, -13895830, 8884140,
-17840758, 3993783, 29742112, 820876, 4050691, -8631274, -13146358, 17752174, 27911382, 9877351,
-5382131, 2873333, 10528039, 1031329, 1976222, -26048976, -19236622, -1869385, 1353452, 3586835,
-19634980, 21278878, -3936338, 1508607, -7301445, 4524748, -13588740, 464930, -14376866, -12032888,
-6241661, -236223, 1549410, -7949985, 5151277, 6452115, 4235375, 6532109, 7552163, 773631,
--4320737, 3440269, -5892695, -1318018, -3641059, -8494908, -2486249, -4647692, -3844533, 7259032,
-3938485, -2433099, -5666673, -8414915, -5586679, 5864778, -5666136, -450435, 459562, 4046933,
--8039642, -6318971, 2860448, 10097468, 6381248, 2675228, 1074, -5907728, -715112, -3554086,
--6944425, 11997991, -17316234, -8686571, -32442572, -40658308, -29970282, -13834627, 9296457, -366683,
--7033546, -14920716, 130460, 26661010, 13204877, -23513872, -3754875, -4942971, -16446504, -3054259,
-1319629, 11163157, 8395587, -17570174, 12648142, -9971840, 5424544, -9296994, 2879776, -13486197,
--4906464, 6524056, -24082418, -4725538, -9021579, 7836705, -5924371, -22442814, 26373246, 25239912,
-435939, -10341744, 14407468, -34336652, -10635413, 10096394, -11431055, -7374996, -795643, -11165841,
-2281165, -2949569, -22863722, 9750113, -2839510, -7153805, -7766912, -6161131, -1352378, -6383395,
--9648107, 18945100, -8984535, -9099962, 9139690, -339839, 31330712, -6351183, -19292994, 10981158,
--10037875, -8692477, -15036144, 10385231, 19351512, -37701224, 3027952, 31647466, -5088463, -2063195,
--12483859, 21544630, -1456531, -11858942, -1492501, -11139535, -8793946, 15581604, -9345849, -887448,
--5156645, -6649146, -10934450, 4558034, 3747896, 5638755, -1244467, -8967355, -6019397, 225486,
-1622424, -13607530, -3807489, -8789114, 13507672, -4592394, 1023813, 1814087, 1726577, 1327682,
--10868415, 7277285, 430570, -4275640, 9867687, 1417339, 12892418, -2375117, 14886357, 3336653,
-6044093, 7159174, -9538585, -6431714, 4746476, -7997766, -6104223, 2242510, 93416, -5652177,
--12916040, 6238440, -1804423, -25639344, 51239496, 36588288, -730144, -9760313, 8099235, -30726732,
-471373, 38268160, -6787122, -13293461, 580894, 43364136, -6257231, 9520869, -9274445, -19610820,
--15913928, -4014721, -7304666, 7984881, 11024644, 594853, -16382616, -22856742, -21086678, -3405372,
--4691178, -11348377, 10544682, 8579197, -9264244, -11225971, -12312597, 6867116, 2316598, 8442832,
-21591874, -147640, -18580566, 12549358, 4875862, 4224101, 1238561, -368293, -9001178, 16015933,
-8130910, -6446209, -7744363, -5108864, -21111374, 5773510, 15322833, 4650913, -14813342, 17202418,
-12542915, 7098507, 1828582, -9082782, 4646081, -30010010, 4590783, -1899986, 26644904, -9645423,
--13340705, 5636608, -7012071, -601832, -19431506, -3545496, -5291400, 25923886, -16995722, -31537944,
--20646444, -40970228, 7909183, -8381629, -2840047, -21896818, -14069776, -36223756, -16156056, -12707734,
--2010045, 8806830, -11822434, -2107755, -2358474, -1907502, -3374234, 7686381, -13728326, 5823439,
--5497558, -10629507, 1466195, -3119220, 9543417, 4951024, 20938, -5373541, 12363063, 11632382,
-6882685, -4614943, -6448357, -6283537, -5919539, 13079249, 21321292, 2439542, 19570556, 21658984,
-7036230, 297963, -19663434, -2172180, 3403225, 2758443, -2057826, -5433671, -16702054, -465467,
-10810970, 1684164, -12614319, -3231426, -9555765, 48660904, 1969779, 8034273, -8090108, -16030965,
--21452824, -7159711, 6118181, 14218489, 11858405, -10372883, -15032, -21548924, -7814693, 7655243,
--18065170, -9762461, -6817724, 26239028, 13769128, 14421963, 13722957, -15284715, 2852395, 5481989,
-6263136, -1516124, 17790828, -3951907, 7864085, 13713831, 5327907, 3777961, 11683385, 15924665,
--9354439, -18816252, 12604655, -2080912, 112206, -19883552, -18414136, 4203699, -9185861, -7230578,
-16275779, -16760036, 21508122, 13807783, -9472550, 11254962, -12523588, -12718472, -15295989, 22119082,
--15482820, 6941204, 6818798, -25438018, 2462090, 2896956, -19993610, -34592740, -30835718, 22454090,
--23164906, -476741, -20824148, -4874251, -14875619, -1311576, 9707163, 5850819, -15140297, 15686294,
-18337900, 38159172, 10060961, -25773562, 9125195, -15890842, 8629126, -22679574, 12198244, -9754944,
-1770063, -4716948, 9326521, -2872260, -9118216, -21773336, -21553756, 2329483, 2164664, 13618268,
--9681930, -1007707, 21450678, 5980205, 14895483, 4424353, -3790846, -1700807, -4999879, -14370424,
-5213554, -17321066, -10110353, 3648038, 14384382, -18898930, 10580652, 1910187, 13606456, -4641786,
-7654706, 13602698, 15112379, 15069966, -6800007, 7329899, 11865921, 12677670, 2571612, 7553237,
-4052839, -5842230, 23527294, 10828149, 11904576, -10129143, -11198053, 2925410, 3961571, 4523138,
--9756018, 804233, -21365852, -421981, 3660923, 4101694, -18845780, -19755776, -31079458, 21531208,
-2255395, 7348689, -5089536, 11368778, -8499203, -8471823, 6454262, 16367583, 3869766, 10730976,
-33520072, -4942434, -20231444, -43077448, -6127308, -16704738, -8184597, -10334765, -19985020, -14163728,
--29850022, -3565897, -490700, 10339597, 30896920, -25853018, -9953050, -4343286, 10089415, 10846403,
-30597348, 4058207, -35047472, -8149701, 7127498, 27261768, 7128572, -42506756, -17058000, 38252052,
-3429532, 38156488, -22588306, 1119913, 2924336, 23047868, -2231773, 20960514, 31685048, 4373351,
-26866094, 18779744, 4485557, 37196564, 31801548, 10219875, 49638012, 38070052, 23858544, -40424232,
--2712809, 15657303, 9070971, -603443, -29313152, -35058208, -18170932, -50125488, -8003672, -37313064,
--14287746, -9699647, -53630184, -50922208, -35444756, 17313014, 433792, -11880416, -745177, -4000762,
--1197222, -10027138, -5354751, 12302934, 4844723, 2008434, -1807108, 1829119, -2553358, 7561827,
--1416802, -13515725, 23111220, 3599183, 5475010, -7057168, 1008244, -974421, 12054899, -789200,
-6978785, -4350265, -12829067, 4931696, 9715216, 25542708, 22720376, 1351841, -350577, 16246251,
-8046621, 19003082, 15811385, -5252745, 18252538, 10122164, 3591667, 11383274, 7355132, -6713571,
--3091303, -14862197, 8882529, -13284334, -5952825, -23219130, -14104673, 6804839, -27217208, 29079612,
--12339978, 18874770, 9918153, -25286620, 4086125, 14969572, -9364102, -26396870, 17564268, -7487739,
-15074261, -9163313, 4124242, 5539434, -15606837, -2347200, -6678138, -798864, -25778930, -21007222,
-25777320, 708133, 10633802, -20519744, 21134460, 18116708, -13638669, 11376295, -19957102, -4819490,
--11034308, 14279693, 36479840, -1089848, 44188772, -11549704, -1778117, 1654099, 4800163, -3436511,
--24437290, 42608224, 28365038, -3781182, 23868744, 18020072, 24761560, -9702331, -281320, -44136156,
-20046760, 20189568, -5420249, -7874823, 27633282, 14069239, 14690936, 33666640, 5948530, -17884244,
--20851530, 6005975, -6383932, -25534654, 21052320, -29518774, 1473711, 6088653, -20496658, -32748052,
--21800180, -8623757, 2517388, 25753698, 17722646, 7965017, -49431316, -14326937, 30090540, -2749316,
--10616622, 8452496, -26709328, -17146584, 22805202, -488016, 503048, -9940165, 319438, 13380971,
--4097399, -10529649, 7984881, -3894462, -18966576, -10786810, 2046015, -1824287, -1010928, -88047,
--8235063, -380641, -12982612, -18071074, 2538326, -2046015, -28912646, -3677566, -17451526, -10576894,
--3077881, 3979824, 5458904, 15518791, -14551886, -10437307, 3368328, 15100568, -16124918, -17855252,
-24656870, -4270808, -1233193, -5134634, -9127, -10733660, 4516158, 11017665, 6458020, 9523553,
-860604, 3273839, 399432, 947577, 3810173, 7858180, -6274947, -2044941, 3435437, 5571647,
-3225521, -37112276, 21213380, 32320166, -384400, 37285684, 11595338, -32851132, -19841676, -2818036,
--11106249, -20078436, 21206938, 24283208, -2128693, 16827682, 23235774, -18405546, 16458852, 27332636,
--1440962, -37476276, 14862197, -1295470, -7152195, 10041097, 28357522, -9213242, -13928042, 6670621,
--12093017, -16374563, -891206, 24489366, 21336860, -35319664, 11397769, 14807437, -23333484, -15272904,
-28689308, -7950522, -41137196, -5483600, 35034048, -11545946, -59541668, 62517008, -17594334, -7412040,
--30665530, 40338332, 13449153, -14125074, 29724932, -17490180, -12700218, -7716983, 75688600, 25034290,
--31323196, -28082106, 29192356, -6836514, 42378444, 650688, 31873490, -43638480, 35034584, 59826212,
-5925981, -6561637, -10297184, -10570451, -23658290, 56450364, 38283728, -33935072, 9762461, -35661112,
--5823976, 3745212, 7679402, 4909685, 10760504, 907312, -38716444, 18162342, 2643552, -4119948,
--577673, 17854716, -7509214, 3905736, -5429913, 9232569, -3430068, 2342368, -5968931, 11650636,
-730681, -2406256, 6923488, 9354976, -21080236, 2536178, 13703093, 5076652, -15119895, 8176007,
-24430310, -23716810, -36514200, 7192997, 4823785, 14368276, 14370424, -1965484, -32960116, -11262478,
-9342628, 4575751, 9602473, -5029407, 1648194, -1351841, -10834055, 9663676, -8422968, -4042101,
-27074400, 61814244, 11985643, -23951958, -5672578, -5903970, 10870025, 9266929, -19291920, -27580132,
-7364259, -23348516, 4649839, -14553497, -16672526, -3676492, 2834679, 7853885, -18589156, -7565585,
--7369627, -23199802, 19412178, -7338489, 1249836, -3494493, -15443092, 6062883, 4338454, 472983,
--3343632, 105764, -576063, -9197136, -19655380, 8329552, -9766219, 8447664, 5972689, -19708532,
--15915001, -1882806, -2306398, -2316598, -4243428, 15924128, -11100343, 1555315, -20881058, 17719424,
--20461224, -10900090, 10125922, 199179, -16408923, 12928925, -22053046, 1586990, 6590628, -673773,
-2368675, 10458782, 4966056, -22780506, 11438035, 1517197, -13735305, 19366008, 7618735, -21627844,
--2406256, -17265232, -2312840, 6895570, 5701569, -22021372, 27869506, -14862197, -8169028, 15446313,
-10257993, 2449205, 10320806, -958851, 14464376, -6558415, 2913062, -1893007, 6966974, 5398774,
--4234301, -5131949, 5523328, -7063074, 674847, 1118302, 857383, -4185983, 620623, -3911105,
--6370510, -3507378, -6927246, -445066, 5070746, 8888435, 3259343, 985158, 4667019, 5794448,
--8247948, 12504797, 3217468, -471910, -8373039, -4784057, 3852586, 9878962, -2032593, -274878,
--4989142, 1568737, 1327145, -4170413, -5679558, -5013838, -13074417, -4795868, -5172215, -37270652,
--46196668, -17137994, 140181296, 111932216, 74486544, 135393472, -53650048, -128351336, -40929428, -207361552,
--80572512, 5742372, -48380660, 94933272, 130046776, 21129628, 82752208, 141669504, 3310346, 38977364,
--9000104, -166731712, -137624176, -104264088, -103234904, -51078972, 79307648, 42402064, 61435748, 173954768,
-74080672, 10727755, 104480984, 48369920, -59404768, 20262046, -49780820, -168939312, -40350144, -88296472,
--173680960, -28976534, 4323422, -42566884, 118004760, 135805248, 53891104, 159705136, 161977168, 30131344,
-62635120, 28004260, -101885752, -114612280, -106918912, -192938528, -170141376, -64991980, -78841640, 16670379,
-103666016, 141468176, 117253680, 180717728, 134419056, 71949832, 10296110, -22557168, -103901704, -126967824,
--93415000, -111559088, -92699352, -4059281, -4912906, 21184926, 100746512, 48422536, 61683248, 96221224,
--1659468, -29931090, -15545097, -60267516, -34130496, -20172388, -21897354, 24756728, 51219096, 19784230,
-28519656, 32111322, -22996328, -8253854, -9575093, -61426084, 8858370, 25792352, -66283692, -704912,
--5792301, -67152352, 25383794, 11486353, -75803488, 48258252, 72078680, 17015050, 144827904, 90020368,
--1432909, 77054936, 14229227, -97466232, -80732504, -126968360, -180053088, -135258720, -87785912, -47177532,
-61988728, 133791456, 156934352, 195139152, 191397168, 135486352, 30331060, -13999446, -96536904, -176648784,
--171616160, -152574960, -127942240, -27273042, 14398878, 22842784, 89078696, 94531160, 65950296, 67800888,
-52951580, 23376434, 32805498, 23974508, -4731980, -10854456, -26884884, -55110872, -59734944, -59287192,
--60063508, -45511620, -9881109, 2686502, 19469624, 40834940, 49560164, 52799108, 52614960, 38297148,
-12673912, 86436, -14816563, -26673358, -30714922, -23895050, -24931212, -19400368, -6634114, -4094715,
--6136435, 509491, 1262720, 1978369, 15060840, 16094853, 7620346, 10130217, 8276939, 4808753,
-10649371, 8918500, 1738925, 609349, -7515119, -13951128, -12724377, -12803834, -13896904, -10638097,
--6460705, -1726040, 4377646, 10545218, 12138651, 12225088, 11315628, 7940321, 3300146, 998043,
--3935801, -7623567, -6795712, -5242008, -4534949, -571231, 1367947, 2940442, 2141041, 1300301,
--1304060, -2422899, -4431870, -4017405, -2769180, -553514, 440234, 2940979, 4458176, 6529961,
-6132140, 4676683, 2588792, 1676111, -1213328, -2881386, -4314832, -4791036, -5034239, -3559454,
--2879239, -1054951, 143345, 1454383, 1560147, 2246268, 1554778, 1308891, 200253, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+13776108, 7361037, 6051609, 3442416, -1507534, -387084, -1458141, -2828773, -4032438, -2775086,
+-4118874, -1673964, 3842922, 1374926, -241592, 47782, 2507187, 1237488, -1647657, -1679332,
+-1341640, -7150584, 2951180, 811212, 35433, -1429687, 901943, 185220, -2024540, 1098438,
+2605435, 49392, -3321084, -776852, -1452236, -1469416, 376347, 3233037, -849330, 812823,
+-3794604, 2483028, -4680441, 3031710, 631360, 242129, 11274, 3017752, -3597035, -2584497,
+-4892505, 1360968, 853088, 309238, 2757906, -2933463, 628139, -340376, 60130, -2119030,
+1910187, 952946, -1632625, 3074123, -4804995, 2266669, -2629594, 4952098, 2206003, 932545,
+333397, -900869, -5987722, 4624606, -1447404, -74088, 767725, 1345935, 1072668, 1278827,
+1427540, -358630, 407485, -588947, 1394791, -27380, 789737, -1735167, 607201, -207232,
+385473, 801548, 1937030, -32749, -340376, 736050, 762357, -709743, 999117, -1110786,
+976568, 288837, 869194, 147103, 560493, -229781, 219043, 844498, 374736, -46708,
+578747, -45634, 388158, 420370, -50466, 548682, -155693, 13286481, 6214281, 8701604,
+2284386, 3011846, -578747, 3453691, 277025, 3078418, -2288144, 5927055, -1560684, -6602439,
+-1908576, 216359, 290984, -2042794, 5048197, 362388, 1926293, 5030481, 2348273, 135828,
+-81604, 1258962, -4591857, -2909304, 1721208, 2233920, -1717987, 550293, 2135136, -4401805,
+6245420, -569620, 857920, -923955, 2273648, 3338263, 90731, -3347390, -3568044, 6933688,
+80531, -1925219, -362925, 4027069, 2846490, -1961726, -2824478, -5968394, -1950452, -2401961,
+178778, -2161979, 467078, -5796595, -2473901, 759672, -2467459, 1370632, 2296734, -1112933,
+-230854, 1190780, -1565516, 2391760, -242666, 2988760, -36507, -922881, -3452080, 461172,
+-4264903, 1397475, 4832, 2452963, -28454, 2516851, 3069828, 2755759, 31139, -1658931,
+-203474, -556198, 3396782, -855235, 374199, 2297271, 2249489, -81604, 1238024, 548682,
+1125281, -408559, 1377611, -467078, 2064269, 569620, 339302, -94489, 122407, 298500,
+1003949, 2779381, -8902393, -2887829, -2025614, 1540283, 1760400, -6102075, -2729989, -1217623,
+1462436, 3228742, 1019518, 4430259, -3665218, -5308043, 1534377, 169651, -951872, -3639448,
+11770895, -623844, 3131031, 693100, 366146, -274878, -1814624, -4485557, -3514357, -1110249,
+3007014, -2510409, 6162741, -2097555, -576063, -5062156, -6013491, -528818, -3835943, -2143189,
+8197482, -4492536, -1243393, -4362076, 1593433, 196495, -1579474, -4583267, -872415, 26844,
+-5191005, 600759, -2794950, 4140885, 2728915, -2401424, -1273458, -1332514, 1271310, -237834,
+3296924, -1716913, -2167885, -2236604, 7475391, 6740951, -2318209, -6514392, 881005, 2000918,
+-209380, 1900523, -2702071, 520765, -3133716, 2225330, 170188, 7168838, 4426501, 6815040,
+-6215892, 2680597, 4159139, 149250, 3156264, 2263448, 469762, 4685273, -864362, -509491,
+1202054, 642098, -1929514, 1862942, -1478543, -1276142, -133681, 467615, -211527, 701690,
+-1104880, 540092, -141734, 136365, 607738, 854162, 411780, 991601, 938450, -725850,
+-946503, 734439, 274341, -1698660, -690416, 1348620, -828392, -29341606, -4699231, -8488466,
+-9533217, 2529736, -3198140, -8375186, -6860137, 1109712, -6758668, 919660, 10182294, -2566780,
+4393752, 3252901, 8591545, 2176475, -5915781, 1320166, 9333501, -4384088, 4665945, -6903086,
+-6211060, 2004676, 2704756, 7259569, 467078, -4524748, 4278861, -3049964, 3292093, -420907,
+4646618, -3951370, -2498597, -4402342, 92879, 750546, -1672353, 3307662, -7658464, 949188,
+7794292, 1640141, -2166274, 2947958, -3933653, -2051921, -9680856, -2918430, -289910, 1480153,
+197032, 5179194, -7767449, 717796, -1039382, 3889093, 2131915, -1548336, 5587753, -4913980,
+-625992, -3951370, -7465190, -3197066, -1695438, -2158758, 5665062, -5086852, -8069170, 279710,
+2680597, -850940, -2308545, 2745558, 3122978, -2304787, -1800128, -3187403, -1272921, 6478422,
+-3000572, 3554622, -1050656, -152471, -574452, -257698, -3352222, 788663, -1997160, -135828,
+-214748, -525597, 104153, -816581, -1034013, -1076426, -261456, 290984, -629750, 1043677,
+504122, -14596446, 8338142, 9349607, -484258, 5240397, 2416993, 11050414, 14737107, 1875827,
+1953673, 4208531, 1857573, 2434710, -2060511, 2901251, -2393371, 3856881, 4533875, -12610024,
+6564858, -1389959, -2301566, -3906273, -5068599, 2052994, 3617436, 5731097, 1156957, 970126,
+-7321846, 315680, -2109903, -2464238, -1051193, 978179, 464393, -569083, 7274601, -382252,
+-2360085, 2384781, -2770254, 3702799, 4930086, 5463199, 2883534, 595390, -3001109, 6103686,
+1983201, 818728, 682900, 801011, 484794, -3536369, -4933844, 4517769, -4595615, 4328254,
+3997004, 2901251, -596464, -3279745, 3003256, 3846680, 8578123, 3939559, 3265249, 1999844,
+-8303783, -2567317, 1069447, -1363652, 3636227, -7230041, 406948, 2390149, -6722161, -635655,
+2312840, -1638530, 910533, -3964255, 1539746, 510564, -1649268, 3120831, 1878511, 125628,
+3464428, -1548336, -1464584, -342524, 754841, 1400159, 5230734, 848793, 1815697, 1225139,
+-1074, 1134945, -808528, -982474, -1347009, 916976, -718870, -661425, 631897, 553514,
+-586800, 1762010, -981400, 1233193, 1181653, -513785, 1752884, 493921, 775242, 853625,
+163746, 186294, 2029909, -139586, 27090506, 8092256, 2059437, 5229123, 13574244, 5388037,
+16355772, 3934190, -3532074, -1225676, -1304060, -1611687, 4484483, 6928319, -3182034, 1445257,
+4932233, -1864016, -6708202, 5327907, -572841, 2505577, -2241973, -3451006, 5602785, 1240172,
+-442919, -1626182, -6103686, -3100967, 3408057, 789737, -2055679, -1130113, 1002338, 2276333,
+6274947, 1916092, -5652714, -1357747, 438624, -1840930, 2127083, 2900714, -5695664, -7001871,
+-334471, 1705102, -668404, 5339718, -9852118, -2144263, -4430259, -5620502, -542240, -467078,
+1537061, 5280663, 18790, 767189, 1788854, -890669, 7158637, 4491999, -5746130, -5133560,
+3956739, 8556649, -670552, -4044786, 8540006, 4450660, 2034741, -3749507, -3966939, 4160213,
+288300, 3141769, -1845225, -6172942, -3318399, -4207994, -2581275, 2407866, -3358665, 452045,
+1537598, -1253057, 1493575, 1015223, 1282585, 695248, -2147484, 1215476, -630286, -1184337,
+-468688, 1641214, 1366337, 206695, -1835562, 1682554, -684510, 2915746, -390305, 392990,
+-2721936, -3597572, 1262720, -3386045, -589484, -528281, -1843615, -923418, 477278, -3036542,
+-1199907, -312459, 400506, -636192, 2199023, 300111, -745714, 13365938, 6340983, 12045773,
+-4131222, 198642, -3139621, 12135430, -12481712, -1656784, 3069291, -2270427, -2552821, 4130685,
+-1492501, -3714610, 10457172, 6069326, 1115081, 17941690, -4975720, -1085016, -3877282, 238371,
+2845416, -4502200, -693100, -2287070, 6707665, -5653251, 1431835, 504122, -1909650, 725313,
+3901441, 2833068, -5516886, -9342628, 122407, 2049773, 7722351, 9285719, 9037685, 939524,
+-5368709, 6681359, -16047608, -2516851, -6364068, -9174050, 6393059, -2026688, -3106335, 5171678,
+-1938104, -2609193, 13816373, 276489, -4206921, 4958003, 273267, 3800509, 2617246, 1927904,
+8331163, -4941897, -3201898, 609349, -7339026, 56908, 1269163, -1721208, 2382633, 4284230,
+8764418, -3227668, 2856153, 7774965, 4549444, 2388002, 1345399, -2518462, -5697811, 2984466,
+4170413, -810675, 327491, -763967, -815507, -3064996, 524523, -853625, 446677, -2852932,
+-1600412, 134755, -622770, 2883534, 1098975, 137976, -3935264, -1611150, 1802276, -2109366,
+-142271, 1606318, 1401770, -2459406, 2306398, 2010045, 515396, 2614561, 2133525, -4307316,
+-895501, -1575716, 1101122, 2537789, 2825552, -477815, -1739462, 517544, -994285, -20691004,
+-31077846, -5250061, 1542967, -550293, 861141, -1467268, -6233072, -3526168, -4969814, -1352378,
+5051419, 6012954, -5476620, -8090645, 6899865, 1411434, -4437238, 340376, -741419, -4944581,
+-4135517, 11442867, 5829345, -6189048, 3125663, 1271847, 4897874, -6007586, 6649146, -6680285,
+4566087, 2960843, -1418413, -3134253, 2944200, -12435004, -6168110, 7563975, 12222940, 6755984,
+-8578660, 164283, -6088116, 8098161, 1666447, 2070711, 561030, -6746857, 3237869, 9912248,
+1105417, 7481833, 5309117, 3401614, 5735929, 12164421, -3410204, -12342662, 5938329, -15032,
+-2935073, 574989, 10544145, -4370666, -7370701, 3548717, -1971390, -1307281, -2807835, -1708860,
+-3333968, -5806259, -2918430, 7026030, -9688909, -6121939, -3593814, -7000260, -6781754, -467078,
+4159676, -6426882, -149250, -2419140, -2721399, -5799280, -3659849, -6650757, -388695, -5129802,
+-429497, -192737, 4590783, 3224984, -2385854, -2576981, -3403762, -1083942, -2420214, -2340220,
+2765422, -4552129, 1654636, 325344, -2897492, 248571, -1911261, 1021129, -1009854, -3732864,
+-4534412, -102542, 1136556, 1802813, -896038, 729608, 1374926, -61740, -2390686, -380105,
+-3049964, 251792, 1348620, 1030255, 1279363, -11861089, -7886634, 2116345, 1819456, 16039555,
+-14032732, -9439264, -5478231, -2538326, -1823751, 5253282, 4887136, -7282654, 7488276, -1660542,
+3343632, -5217849, 11209865, -2101313, -4354023, 7404524, 5175973, 4348118, -7783018, -7136625,
+9474698, -4915053, 2729989, 2435247, -3560528, 8229158, 2382633, 86973, 1716376, 6065568,
+7572028, 2456185, -6903086, 1679869, -9812390, 5895917, 2447058, -10792179, 7631083, 1889249,
+-5747740, 10063108, 3085397, -2608656, 5730560, -811212, 10926934, -2426120, -2840047, -2243047,
+-1524177, 14415521, 2944200, 335544, 3818226, -11949136, -7598871, -8092256, 818728, 7710003,
+937914, 9540733, -12295418, -4939213, -7829189, -7101192, 17755394, -1730335, 6298033, 4654671,
+-3896072, -811749, -2552821, 1432372, 871342, 4948876, 2901251, 9830106, -5323612, 889058,
+-1733019, 2197413, -133681, -113817, -95026, -2002529, -9270150, 3502546, 2083596, 1438814,
+-2509872, -794032, -1246614, -5065914, -391916, -1769527, -3403762, 1938641, -2881923, 1269163,
+1581085, 1358820, 2047089, -3510599, -2008971, -2359548, -2263448, 1345399, 2494839, 1560684,
+-906775, -426276, -696858, -1057099, 3654480, -1223529, 2583960, 1706176, -1069447, 1168231,
+-794032, 49929, 868120, 1042066, -16153372, 5048734, -6943352, 3936875, -4860293, 13048648,
+2188286, -9134859, 1427540, -9313100, 7548942, 14420890, -12305081, 8123394, 2995203, -358630,
+5933498, 15370077, -5888400, -14496, 4688494, -16779364, 972273, 7634305, -4676683, 5471789,
+5946382, -3061238, 15046881, -7505992, -13633837, -5859409, 1628866, 363998, -2799782, -5873905,
+4093641, 3802120, -5906, -9591736, -2263448, -2430415, 6396817, -4201015, 25241522, -3176128,
+3602941, -1161789, -1086090, -12253542, 1245004, 9088151, 7339562, 24630564, -2661806, -2384244,
+-5114769, -971736, -6948184, -525597, 9862856, -5259188, -1036161, 1788317, 2314987, 9709847,
+7885560, 2233920, 19050864, -3607773, -17677012, -17680770, -12486007, -2569464, 5560372, -1745904,
+-4660040, 8409546, -530965, 7466801, -4623533, -878321, 6046240, 5143760, -1891396, -1809792,
+598074, 1572495, -1983738, -4132832, -5956583, -2006287, -2544768, -753767, -4254702, 3157338,
+-1296543, 944356, -2167348, -3049427, 4051228, 1820529, -2108829, -571231, -1734093, -1823751,
+1750736, -1139240, -2047089, -4025995, 3144453, 1248762, -1755568, -3052111, -4075924, -767189,
+-2813204, -2820720, 3383361, -2031520, 646929, 129386, -1505386, 1458141, 634045, -563714,
+-788127, -905164, 28686086, -20657718, -15741592, -4974109, -9954660, -11293080, 13909252, 5714991,
+2774012, -4312684, -2794413, 16980154, -4916127, -7027640, -20225538, -2835215, -486942, 9640054,
+3541738, -4011500, 1270774, 8474507, 3815005, 5345087, 12984223, 16372415, 4547834, -5935108,
+4231080, -9636833, 6741488, 5614596, -3440269, 465467, -7507603, 3195456, 264141, -14519674,
+14355928, -1136556, -6583648, 8975945, -13494787, -2979634, 15003931, 8676908, -108448, 725850,
+-18707804, 6768869, 10591389, 6167573, 3585224, -847182, -13770202, -40575092, -3146064, 8501888,
+11566884, -848793, -11838540, 20340966, -9205189, 9400073, 15375446, 12777528, 2471217, 15417859,
+1869921, 5643050, 3362960, 9454297, 1966558, 3164317, 19516332, -6249178, -4063576, 16615618,
+8704288, 4691715, -6585796, 1902134, 13496935, -1183264, 10857677, 2719251, 2517925, 6990596,
+-3415573, -51003, 917512, -419833, -2803003, 5523865, 2646237, -6991133, 4220342, 3018288,
+4078072, 2202781, -1862942, 300111, -2086817, -2356327, 3464428, 4417374, 1952600, 2806224,
+-1920924, -1791001, -1188095, -2272575, -3164317, -4796405, 1017907, -2952253, 2720325, -864362,
+1701881, -4389994, -2840047, -646393, -1265942, -1047972, -1870995, 974421, 4855998, 5126044,
+2088428, 751082, -2355790, 4140349, 14743549, 13261248, -3218541, -7385733, -966368, -4516158,
+16099685, 9822590, -27028766, -3392487, 2595234, -13246753, 5461588, -19145354, 14611479, 3068217,
+-1857037, 7407745, 4221416, -4326106, -5954972, -4979478, 20483772, 431644, 185757, 4079145,
+-2385854, 7696045, 24068996, 9297530, -3129421, -4560719, -3151969, 13379360, 5218922, 13553306,
+9959492, 6582575, 4338991, -6420439, -6341519, 5850283, -13764296, 2052994, -7160784, -6611566,
+799938, 9379135, 1684701, 434329, 3806415, -3408057, 16595754, 20769924, 24477556, -456877,
+11343009, -14683419, 5853504, 7972533, -6264747, 11958263, -9525701, -19979114, 2920041, -10626286,
+-1231045, 598611, -10130217, 2301566, 14587320, -8994735, -8156680, 6874632, 13536126, -903554,
+-4559108, 11853573, 1389422, 2418067, -8049306, -2029372, -266825, 9739912, -4785668, 522912,
+-2052458, 1911797, 111132, 1662152, 2849711, 1506460, 317828, 715649, 2489471, 2554432,
+-1990717, -4816806, -523449, -942208, -3930969, -5412196, -104690, -2624225, 3976603, -3735011,
+3088082, 4628901, -62814, -8291971, -594853, 1351841, -2602750, -4023848, 775778, 2022930,
+12766790, 3978214, 4076998, -587337, 495532, -1277753, 3864934, -1084479, 4100620, 10338523,
+9780714, -1414655, -372052, -1971390, 664109, 3083250, 3913252, 5421323, 1213865, -17067126,
+31088048, 1981054, 8065949, 23797876, -8814884, 2441689, -4564477, 6280316, -6886980, 6870874,
+-16770774, -19845970, -639413, -11753715, -933619, -1095754, -1369021, -3354906, 1232119, -5506148,
+4920959, -15784542, -6349573, -21295522, -1119913, 4878009, 10166724, 22986128, 12703440, 3966939,
+2888903, 6593312, 5048734, 3868692, 9237401, 9721122, -3140695, -19467476, -19337016, -13242995,
+-7955890, 1912334, 6448894, -7147900, -11359115, -19758998, 515933, -7566122, 17955648, -8062191,
+4470524, -13727252, -6664179, -2435783, -5688148, -26501022, -27628988, 7521025, 2761664, 672699,
+14076218, 8022462, 11286637, 9098351, -17238924, -3788161, 32156958, -6021544, -12254615, 4680441,
+-7157026, 3233574, -19954954, 7996692, -9191230, 1294933, -1376537, 13007845, 705985, 5174362,
+-11384885, 2074469, -6451041, -2948495, -7833484, -5952825, 3986267, 4469451, -10417443, -3555696,
+677531, 1870458, 2501282, 1279900, -4084514, 4436165, 1793686, 1463510, -612033, -382789,
+1349157, 4487167, -4996121, 4531191, -1305670, -258235, -1828046, 2838974, -2971044, -1795833,
+3994857, -7777649, -233539, 1387811, -4750771, -1720671, -10834592, 7619809, 9050033, -740882,
+2074469, 2306398, 3032247, -4923107, 5006858, 3119757, 3890704, -3631395, 2087891, 2921115,
+4613869, 18566070, 13973139, 1933272, 14853071, -2698850, -6172405, 8281234, -11466489, -22173842,
+-33356326, 2891050, 647466, 12973486, 9350144, -12307229, -6405944, -32421098, -2238215, -15044197,
+3482145, -7518877, -3690988, -6153615, -2463164, -2429341, -11348914, -4976257, -13217225, 10610717,
+-2695092, 9096741, 23251342, -12198781, 6653978, -1802813, -5836861, 6113886, -12518756, -21093122,
+10127533, 5092758, 10073309, 6445672, -44467408, -20049982, 5867462, -14671608, -1306207, -12518219,
+18536006, 22504018, -1150514, 24864102, 3438658, 11358041, -3321084, -703838, -13895830, 8884140,
+17840758, 3993783, 29742112, 820876, 4050691, -8631274, -13146358, 17752174, 27911382, 9877351,
+5382131, 2873333, 10528039, 1031329, 1976222, -26048976, -19236622, -1869385, 1353452, 3586835,
+19634980, 21278878, -3936338, 1508607, -7301445, 4524748, -13588740, 464930, -14376866, -12032888,
+6241661, -236223, 1549410, -7949985, 5151277, 6452115, 4235375, 6532109, 7552163, 773631,
+-4320737, 3440269, -5892695, -1318018, -3641059, -8494908, -2486249, -4647692, -3844533, 7259032,
+3938485, -2433099, -5666673, -8414915, -5586679, 5864778, -5666136, -450435, 459562, 4046933,
+-8039642, -6318971, 2860448, 10097468, 6381248, 2675228, 1074, -5907728, -715112, -3554086,
+-6944425, 11997991, -17316234, -8686571, -32442572, -40658308, -29970282, -13834627, 9296457, -366683,
+-7033546, -14920716, 130460, 26661010, 13204877, -23513872, -3754875, -4942971, -16446504, -3054259,
+1319629, 11163157, 8395587, -17570174, 12648142, -9971840, 5424544, -9296994, 2879776, -13486197,
+-4906464, 6524056, -24082418, -4725538, -9021579, 7836705, -5924371, -22442814, 26373246, 25239912,
+435939, -10341744, 14407468, -34336652, -10635413, 10096394, -11431055, -7374996, -795643, -11165841,
+2281165, -2949569, -22863722, 9750113, -2839510, -7153805, -7766912, -6161131, -1352378, -6383395,
+-9648107, 18945100, -8984535, -9099962, 9139690, -339839, 31330712, -6351183, -19292994, 10981158,
+-10037875, -8692477, -15036144, 10385231, 19351512, -37701224, 3027952, 31647466, -5088463, -2063195,
+-12483859, 21544630, -1456531, -11858942, -1492501, -11139535, -8793946, 15581604, -9345849, -887448,
+-5156645, -6649146, -10934450, 4558034, 3747896, 5638755, -1244467, -8967355, -6019397, 225486,
+1622424, -13607530, -3807489, -8789114, 13507672, -4592394, 1023813, 1814087, 1726577, 1327682,
+-10868415, 7277285, 430570, -4275640, 9867687, 1417339, 12892418, -2375117, 14886357, 3336653,
+6044093, 7159174, -9538585, -6431714, 4746476, -7997766, -6104223, 2242510, 93416, -5652177,
+-12916040, 6238440, -1804423, -25639344, 51239496, 36588288, -730144, -9760313, 8099235, -30726732,
+471373, 38268160, -6787122, -13293461, 580894, 43364136, -6257231, 9520869, -9274445, -19610820,
+-15913928, -4014721, -7304666, 7984881, 11024644, 594853, -16382616, -22856742, -21086678, -3405372,
+-4691178, -11348377, 10544682, 8579197, -9264244, -11225971, -12312597, 6867116, 2316598, 8442832,
+21591874, -147640, -18580566, 12549358, 4875862, 4224101, 1238561, -368293, -9001178, 16015933,
+8130910, -6446209, -7744363, -5108864, -21111374, 5773510, 15322833, 4650913, -14813342, 17202418,
+12542915, 7098507, 1828582, -9082782, 4646081, -30010010, 4590783, -1899986, 26644904, -9645423,
+-13340705, 5636608, -7012071, -601832, -19431506, -3545496, -5291400, 25923886, -16995722, -31537944,
+-20646444, -40970228, 7909183, -8381629, -2840047, -21896818, -14069776, -36223756, -16156056, -12707734,
+-2010045, 8806830, -11822434, -2107755, -2358474, -1907502, -3374234, 7686381, -13728326, 5823439,
+-5497558, -10629507, 1466195, -3119220, 9543417, 4951024, 20938, -5373541, 12363063, 11632382,
+6882685, -4614943, -6448357, -6283537, -5919539, 13079249, 21321292, 2439542, 19570556, 21658984,
+7036230, 297963, -19663434, -2172180, 3403225, 2758443, -2057826, -5433671, -16702054, -465467,
+10810970, 1684164, -12614319, -3231426, -9555765, 48660904, 1969779, 8034273, -8090108, -16030965,
+-21452824, -7159711, 6118181, 14218489, 11858405, -10372883, -15032, -21548924, -7814693, 7655243,
+-18065170, -9762461, -6817724, 26239028, 13769128, 14421963, 13722957, -15284715, 2852395, 5481989,
+6263136, -1516124, 17790828, -3951907, 7864085, 13713831, 5327907, 3777961, 11683385, 15924665,
+-9354439, -18816252, 12604655, -2080912, 112206, -19883552, -18414136, 4203699, -9185861, -7230578,
+16275779, -16760036, 21508122, 13807783, -9472550, 11254962, -12523588, -12718472, -15295989, 22119082,
+-15482820, 6941204, 6818798, -25438018, 2462090, 2896956, -19993610, -34592740, -30835718, 22454090,
+-23164906, -476741, -20824148, -4874251, -14875619, -1311576, 9707163, 5850819, -15140297, 15686294,
+18337900, 38159172, 10060961, -25773562, 9125195, -15890842, 8629126, -22679574, 12198244, -9754944,
+1770063, -4716948, 9326521, -2872260, -9118216, -21773336, -21553756, 2329483, 2164664, 13618268,
+-9681930, -1007707, 21450678, 5980205, 14895483, 4424353, -3790846, -1700807, -4999879, -14370424,
+5213554, -17321066, -10110353, 3648038, 14384382, -18898930, 10580652, 1910187, 13606456, -4641786,
+7654706, 13602698, 15112379, 15069966, -6800007, 7329899, 11865921, 12677670, 2571612, 7553237,
+4052839, -5842230, 23527294, 10828149, 11904576, -10129143, -11198053, 2925410, 3961571, 4523138,
+-9756018, 804233, -21365852, -421981, 3660923, 4101694, -18845780, -19755776, -31079458, 21531208,
+2255395, 7348689, -5089536, 11368778, -8499203, -8471823, 6454262, 16367583, 3869766, 10730976,
+33520072, -4942434, -20231444, -43077448, -6127308, -16704738, -8184597, -10334765, -19985020, -14163728,
+-29850022, -3565897, -490700, 10339597, 30896920, -25853018, -9953050, -4343286, 10089415, 10846403,
+30597348, 4058207, -35047472, -8149701, 7127498, 27261768, 7128572, -42506756, -17058000, 38252052,
+3429532, 38156488, -22588306, 1119913, 2924336, 23047868, -2231773, 20960514, 31685048, 4373351,
+26866094, 18779744, 4485557, 37196564, 31801548, 10219875, 49638012, 38070052, 23858544, -40424232,
+-2712809, 15657303, 9070971, -603443, -29313152, -35058208, -18170932, -50125488, -8003672, -37313064,
+-14287746, -9699647, -53630184, -50922208, -35444756, 17313014, 433792, -11880416, -745177, -4000762,
+-1197222, -10027138, -5354751, 12302934, 4844723, 2008434, -1807108, 1829119, -2553358, 7561827,
+-1416802, -13515725, 23111220, 3599183, 5475010, -7057168, 1008244, -974421, 12054899, -789200,
+6978785, -4350265, -12829067, 4931696, 9715216, 25542708, 22720376, 1351841, -350577, 16246251,
+8046621, 19003082, 15811385, -5252745, 18252538, 10122164, 3591667, 11383274, 7355132, -6713571,
+-3091303, -14862197, 8882529, -13284334, -5952825, -23219130, -14104673, 6804839, -27217208, 29079612,
+-12339978, 18874770, 9918153, -25286620, 4086125, 14969572, -9364102, -26396870, 17564268, -7487739,
+15074261, -9163313, 4124242, 5539434, -15606837, -2347200, -6678138, -798864, -25778930, -21007222,
+25777320, 708133, 10633802, -20519744, 21134460, 18116708, -13638669, 11376295, -19957102, -4819490,
+-11034308, 14279693, 36479840, -1089848, 44188772, -11549704, -1778117, 1654099, 4800163, -3436511,
+-24437290, 42608224, 28365038, -3781182, 23868744, 18020072, 24761560, -9702331, -281320, -44136156,
+20046760, 20189568, -5420249, -7874823, 27633282, 14069239, 14690936, 33666640, 5948530, -17884244,
+-20851530, 6005975, -6383932, -25534654, 21052320, -29518774, 1473711, 6088653, -20496658, -32748052,
+-21800180, -8623757, 2517388, 25753698, 17722646, 7965017, -49431316, -14326937, 30090540, -2749316,
+-10616622, 8452496, -26709328, -17146584, 22805202, -488016, 503048, -9940165, 319438, 13380971,
+-4097399, -10529649, 7984881, -3894462, -18966576, -10786810, 2046015, -1824287, -1010928, -88047,
+-8235063, -380641, -12982612, -18071074, 2538326, -2046015, -28912646, -3677566, -17451526, -10576894,
+-3077881, 3979824, 5458904, 15518791, -14551886, -10437307, 3368328, 15100568, -16124918, -17855252,
+24656870, -4270808, -1233193, -5134634, -9127, -10733660, 4516158, 11017665, 6458020, 9523553,
+860604, 3273839, 399432, 947577, 3810173, 7858180, -6274947, -2044941, 3435437, 5571647,
+3225521, -37112276, 21213380, 32320166, -384400, 37285684, 11595338, -32851132, -19841676, -2818036,
+-11106249, -20078436, 21206938, 24283208, -2128693, 16827682, 23235774, -18405546, 16458852, 27332636,
+-1440962, -37476276, 14862197, -1295470, -7152195, 10041097, 28357522, -9213242, -13928042, 6670621,
+-12093017, -16374563, -891206, 24489366, 21336860, -35319664, 11397769, 14807437, -23333484, -15272904,
+28689308, -7950522, -41137196, -5483600, 35034048, -11545946, -59541668, 62517008, -17594334, -7412040,
+-30665530, 40338332, 13449153, -14125074, 29724932, -17490180, -12700218, -7716983, 75688600, 25034290,
+-31323196, -28082106, 29192356, -6836514, 42378444, 650688, 31873490, -43638480, 35034584, 59826212,
+5925981, -6561637, -10297184, -10570451, -23658290, 56450364, 38283728, -33935072, 9762461, -35661112,
+-5823976, 3745212, 7679402, 4909685, 10760504, 907312, -38716444, 18162342, 2643552, -4119948,
+-577673, 17854716, -7509214, 3905736, -5429913, 9232569, -3430068, 2342368, -5968931, 11650636,
+730681, -2406256, 6923488, 9354976, -21080236, 2536178, 13703093, 5076652, -15119895, 8176007,
+24430310, -23716810, -36514200, 7192997, 4823785, 14368276, 14370424, -1965484, -32960116, -11262478,
+9342628, 4575751, 9602473, -5029407, 1648194, -1351841, -10834055, 9663676, -8422968, -4042101,
+27074400, 61814244, 11985643, -23951958, -5672578, -5903970, 10870025, 9266929, -19291920, -27580132,
+7364259, -23348516, 4649839, -14553497, -16672526, -3676492, 2834679, 7853885, -18589156, -7565585,
+-7369627, -23199802, 19412178, -7338489, 1249836, -3494493, -15443092, 6062883, 4338454, 472983,
+-3343632, 105764, -576063, -9197136, -19655380, 8329552, -9766219, 8447664, 5972689, -19708532,
+-15915001, -1882806, -2306398, -2316598, -4243428, 15924128, -11100343, 1555315, -20881058, 17719424,
+-20461224, -10900090, 10125922, 199179, -16408923, 12928925, -22053046, 1586990, 6590628, -673773,
+2368675, 10458782, 4966056, -22780506, 11438035, 1517197, -13735305, 19366008, 7618735, -21627844,
+-2406256, -17265232, -2312840, 6895570, 5701569, -22021372, 27869506, -14862197, -8169028, 15446313,
+10257993, 2449205, 10320806, -958851, 14464376, -6558415, 2913062, -1893007, 6966974, 5398774,
+-4234301, -5131949, 5523328, -7063074, 674847, 1118302, 857383, -4185983, 620623, -3911105,
+-6370510, -3507378, -6927246, -445066, 5070746, 8888435, 3259343, 985158, 4667019, 5794448,
+-8247948, 12504797, 3217468, -471910, -8373039, -4784057, 3852586, 9878962, -2032593, -274878,
+-4989142, 1568737, 1327145, -4170413, -5679558, -5013838, -13074417, -4795868, -5172215, -37270652,
+-46196668, -17137994, 140181296, 111932216, 74486544, 135393472, -53650048, -128351336, -40929428, -207361552,
+-80572512, 5742372, -48380660, 94933272, 130046776, 21129628, 82752208, 141669504, 3310346, 38977364,
+-9000104, -166731712, -137624176, -104264088, -103234904, -51078972, 79307648, 42402064, 61435748, 173954768,
+74080672, 10727755, 104480984, 48369920, -59404768, 20262046, -49780820, -168939312, -40350144, -88296472,
+-173680960, -28976534, 4323422, -42566884, 118004760, 135805248, 53891104, 159705136, 161977168, 30131344,
+62635120, 28004260, -101885752, -114612280, -106918912, -192938528, -170141376, -64991980, -78841640, 16670379,
+103666016, 141468176, 117253680, 180717728, 134419056, 71949832, 10296110, -22557168, -103901704, -126967824,
+-93415000, -111559088, -92699352, -4059281, -4912906, 21184926, 100746512, 48422536, 61683248, 96221224,
+-1659468, -29931090, -15545097, -60267516, -34130496, -20172388, -21897354, 24756728, 51219096, 19784230,
+28519656, 32111322, -22996328, -8253854, -9575093, -61426084, 8858370, 25792352, -66283692, -704912,
+-5792301, -67152352, 25383794, 11486353, -75803488, 48258252, 72078680, 17015050, 144827904, 90020368,
+-1432909, 77054936, 14229227, -97466232, -80732504, -126968360, -180053088, -135258720, -87785912, -47177532,
+61988728, 133791456, 156934352, 195139152, 191397168, 135486352, 30331060, -13999446, -96536904, -176648784,
+-171616160, -152574960, -127942240, -27273042, 14398878, 22842784, 89078696, 94531160, 65950296, 67800888,
+52951580, 23376434, 32805498, 23974508, -4731980, -10854456, -26884884, -55110872, -59734944, -59287192,
+-60063508, -45511620, -9881109, 2686502, 19469624, 40834940, 49560164, 52799108, 52614960, 38297148,
+12673912, 86436, -14816563, -26673358, -30714922, -23895050, -24931212, -19400368, -6634114, -4094715,
+-6136435, 509491, 1262720, 1978369, 15060840, 16094853, 7620346, 10130217, 8276939, 4808753,
+10649371, 8918500, 1738925, 609349, -7515119, -13951128, -12724377, -12803834, -13896904, -10638097,
+-6460705, -1726040, 4377646, 10545218, 12138651, 12225088, 11315628, 7940321, 3300146, 998043,
+-3935801, -7623567, -6795712, -5242008, -4534949, -571231, 1367947, 2940442, 2141041, 1300301,
+-1304060, -2422899, -4431870, -4017405, -2769180, -553514, 440234, 2940979, 4458176, 6529961,
+6132140, 4676683, 2588792, 1676111, -1213328, -2881386, -4314832, -4791036, -5034239, -3559454,
+-2879239, -1054951, 143345, 1454383, 1560147, 2246268, 1554778, 1308891, 200253, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-5080947,
-15756088, 6017786, 3842385, 1228898, -3318936, 29528, 3036005, 5667210, 95563, 539555,
-350040, -2090575, 571768, 1917166, -369904, 1873143, 2923262, 3861713, 1644973, 1580548,
-2058363, 1801739, -3539053, 3601330, 6796249, -3220152, 1944547, 1058710, 1910187, 344671,
-4031364, -2618320, -914291, -2356327, 2333778, 6717329, -1115081, 3258807, -73551, -1520955,
--5522254, 2071248, -2853469, 2552284, 1310502, 2851858, -301721, -1715303, 917512, -1181116,
-3865471, 498216, -3033321, 3908420, -839666, 3051574, 2367601, -120259, 2273648, 4407174,
--1224603, -1539209, -1235340, 2196339, -1786706, -2369748, 2755222, 38118, 1853815, -2927020,
-4347044, 263604, -1206886, -500364, -466004, 1733556, -1609002, -2590939, 1550483, 2335925,
-2216740, -2051921, -3065533, 1249299, -94489, -357019, -1173063, -1114544, 1555852, -390842,
--213138, -942745, -1118839, 237297, -801011, 365072, 251256, 1156420, 806917, -324807,
-423591, 665720, -675384, -270046, 56908, -296890, -514322, 415001, 1119376, 651761,
-839666, 35433, -64961, 305480, -689879, 16643, 266825, 12268037, 9552007, 4851166,
-664646, -1774895, 5521181, -3218541, -3528316, -770410, -6137509, 3718905, 212601, -2499671,
-1410360, 3575024, 6055367, -2794950, 3478924, 7940858, -2290828, 83215, 1780264, 4139812,
--1067836, 4507568, 3140695, 4559645, 1013612, 3487514, -3553549, 6068252, -751082, 5855651,
-2863133, -619012, 697395, -942745, -161598, -2085744, -1022202, -2582349, -1945620, 2053531,
--572304, -5627481, -1293322, 617402, -183073, -3132642, -3280281, -1634772, -1432909, 4434017,
--1793149, -4835060, -6504191, -7118372, -2485712, -3127273, -281320, 1113470, 3420405, -4652524,
--2144263, 558346, -497679, -2078764, 493921, -4898947, -489089, -5776194, 3066607, -3140695,
--1561221, 4022774, -609885, 2763812, 768799, 1012002, 3081639, 782758, -2528125, -1139240,
-221728, -2433636, 1271847, 2490544, 1179505, -1906429, 1408749, 2083059, 378494, 1131187,
--638340, -1118839, -813359, -1118839, 771484, -112206, 705448, -934692, -725313, 801011,
-1125818, 6493454, -14061723, -3764002, -7129646, -1315334, -15569, 7743826, -3774740, -12590160,
--4449049, -316754, 4784057, 1499481, -4685273, -10931766, -2826625, 3000035, -1239098, 6161668,
-228707, 2700461, -623307, -4852240, -5295158, 3183645, 3869229, 455803, 1246077, -192737,
-2359548, 551366, -6511708, 345745, 9134859, 1231045, -2288144, -845035, -2445447, 559956,
--2112050, -3976603, 6110128, -1905892, -2566243, 5558762, -2924336, -4937602, 209917, 31139,
-144418, -7121593, 5771363, -2208687, -154619, 5337034, 4838818, -7636452, -1953673, 1474784,
-1835562, -678605, 4162897, 1148904, 2057826, 2894808, 413927, 2312303, 3483219, 759136,
-537, 3263638, -8728447, -1933272, 198105, 4432406, 2439542, -1077500, -903554, 3221762,
-2982318, -3478387, -520228, -1243393, 81604, 1902671, 2406256, 478352, 2979097, -311385,
--2181844, -1026497, 213675, 215285, 256624, -818728, 2063195, -439160, 721555, -328565,
--985158, 607201, -62277, -426276, -815507, 162672, -770410, -132070, -1355599, -1029182,
-233539, -212064, -1071058, -2044941, -785979, 432718, 1677185, -27995670, -10999948, -5665062,
--7897908, 2476049, -2705293, -2696703, -292058, 3513820, -3163780, -3840238, -5513665, 1097364,
-5032091, 1095754, -3766150, -4748087, 1455457, 4146254, 3897146, -5394479, -7880728, 582505,
--7364259, 3934190, -4832, 2741263, -163746, 2644626, -2870649, -1239098, 7794829, -9390409,
-4359929, 2174327, 1095217, -3338800, 2119030, 4605816, 1278290, -5725192, 1199907, -3636227,
-2841658, -7809861, -248034, -7075422, 5486821, -587874, -1352378, -2015950, 3043521, -11865921,
-5517959, -3428995, -7126962, 2860448, 5826660, 6521908, 3901441, 1386201, -410706, 768799,
--539018, 4207458, -2350421, 1187559, 3371013, 8157217, 1358820, 156766, -5805185, 3733937,
--2856153, 664109, 223875, 4342212, -3794067, 224949, 4052839, -357019, -4672925, -6522982,
-5454072, 452045, 1074816, 2718178, -495532, 1322313, 1228361, -39728, 1040456, -454730,
-230318, 1449015, 1410360, 1428614, -2297271, 933082, -1707250, -768799, -1427003, 1403381,
--1627793, -15898358, 7781407, 12417824, 2408940, 983011, 6897181, 2332167, 2107218, 3775813,
-514859, 3950833, 3966939, -3202972, -592169, 539555, -3905736, -2417530, -54761, 1919850,
--2305861, 12911745, 6854768, -1883343, 918586, 4100083, 5157719, 5893232, -2471754, 4150012,
-4828080, 272194, 1404991, 1393180, 2747169, 1994476, 1209033, 2728378, 2600603, -5586679,
--4323422, -8600672, 925029, -3047279, -4305168, 4423817, -1263794, 2784750, -10661719, 11733314,
--857920, -5580773, -1042066, 9300752, 6725382, -1483911, 234613, 4503273, -2148558, 1935957,
--3436511, -7323993, 855772, 683974, -5892159, -2329483, -5807870, 1035087, 2137283, 1311039,
--2827699, -5127654, -7820599, -9310415, -6701760, -2609193, 528281, -2265059, 899259, 3091840,
-2736968, -3870303, -423054, -4220879, 1532767, -1471563, 1204202, -56371, -1731946, 1233193,
-1401770, -1242856, -594316, -1617592, 2173790, -2587181, 555661, 828929, 759672, -261993,
--609349, 552977, 1152662, 1159104, 942208, 728534, 970663, 321586, 1853815, -427886,
-2054605, -1285269, 645856, -381715, -534723, -1479616, -1149978, -984084, -1345399, 529892,
--1080721, -143345, 978179, 328565, 29336774, 7753490, 2197413, -1105417, 17694192, 2056753,
-8421357, 1717450, 5611375, 9189619, 3276523, -5120675, 5461051, 6315213, 1029718, -471373,
-1382443, 11572789, 835908, -3964792, -7007239, -2073396, -178241, -8048232, 1385664, 2384781,
-4653597, 1966021, 3296924, 8869644, -2730526, -1409286, 5490042, -850404, -2362232, -456877,
--7890392, 5134634, 3403762, 186831, 5149129, -2545842, -6901476, -15010911, -5451924, 5553930,
-6179921, 201327, 4353486, -4233764, -4555350, 12228846, -7018514, 5547487, -6172405, 1311576,
--9022116, -9519795, 10401874, -3940096, -3660923, 14283451, 1134945, -1591285, -6643241, 5244692,
-8306467, 415538, -4378183, -8392903, -1254131, 6124087, -1889249, 2085207, -3646427, 3023120,
--1344325, 988379, 6581501, -7010461, 2268817, -1974074, 508417, 823560, -734976, 7538205,
-2429878, 1121523, -2160369, 91268, -1694902, 3184718, -1458678, 2528662, 2599529, -2628520,
-92879, -409096, -1636383, 3590056, 680752, 1686848, 213138, -1248225, 804233, 29528,
-146029, 1037235, 1666447, 603980, 2161442, 667867, -76773, 1181116, 876173, -796716,
-336618, -337155, 540092, 1867774, 2146410, 345208, -102542, 15027554, 4868346, 12473122,
--7672959, 2595234, 6829535, -9307731, -3307125, -3562139, 899796, -4642323, -2985002, 7445863,
--2305861, -1255204, -595390, 9288404, -3422552, -4122632, 9713069, 1710471, -6993281, 3045132,
--1589138, 1692754, 3629247, -5486284, -1364726, -4090956, -7636989, 1047435, 124017, 1564979,
--7514046, -7631083, 2937221, -547071, 2857227, -188442, 4186519, 1374926, -257698, -4830228,
--4860829, 1452773, 4719632, 2445984, -1458678, 14168023, 3274913, 2524367, 6324876, 2484102,
-4689031, 4953708, 3104188, 2061584, 2366527, -1920924, -1166084, 1187022, -6017786, 1695438,
--9663676, 2742337, -6415608, 5097053, -3632469, 2852932, -1297617, -4540318, 1512365, -1112933,
-4959077, -4248797, 13358959, 11423539, 5163088, -9546639, 2984466, 4416300, -4179540, 1905355,
-1144072, 6698002, 6200322, 2742337, -192200, -777926, -1394791, -3702799, 5777268, -322659,
--752693, 134755, -1723356, 752693, 1896765, -1484985, 2988760, -1038308, -2545305, -2498060,
--137976, 1903744, 1689533, -362925, -668941, -1947231, -934155, 1207423, -2521146, 2882460,
-2818572, -1700270, 473520, -2183454, -797253, 506806, 894964, -1635846, 2995203, -18505940,
--35602596, -1523640, -7136088, 6169184, -1838246, -9866077, -960462, -7992934, -8810589, -7559143,
-11635603, 6031745, -7787313, -4486630, 8849780, 5114769, 7895224, -5459977, 5099737, -4846871,
--4892505, -1524713, -2149094, -15081778, 4093641, 8576513, 3681324, -8977555, -2081449, 1561758,
-2268817, -8014409, -1806571, -11492259, 2501819, -5464809, -537408, -4025458, 2163053, 12234214,
--1353989, -2312840, 6113349, 8932458, -5458367, 2410014, 3353833, -7599945, 4014184, 3736622,
--8919573, 1357210, 5708549, -1398549, -9393093, -5935645, -6074158, 8450348, 3250217, 8273181,
--4964446, -9657771, 2236067, 4748087, -2088428, -6928856, 4527970, 6674379, 6327561, -7940321,
--4147865, -1690070, 12700218, -2761127, 7561290, 2185065, -9020505, -7363185, -1446330, 4948339,
--8552354, -559420, -1633698, 4618701, -1075352, 10482941, 1268089, -2473364, -3202972, -2732136,
--3092377, -2031520, -1085553, 905701, -82141, -1302986, -3921305, -439697, -3815005, -1711545,
-1486059, -1382980, 553514, -1161789, -2901251, 1643899, -520228, 4441533, -941672, -3740917,
--2641942, 1365263, -753230, 85899, -1088774, -2435783, 737124, 2451890, -2316061, -789200,
-3381213, 1516124, -2196876, 103079, 2654827, -18009872, -220117, 709743, 10302016, 2750390,
--4389994, 6419366, -3185792, 2925410, -10065256, -2696703, -6448357, -3262028, -12672301, -4529043,
--7644505, 17415018, 9697499, 10695542, -12431246, -10272488, -5203890, 6073084, -747861, 69793,
-171799, 3730179, -1018444, 5207648, -7305740, -5910949, -296353, -1531156, -8968965, -8640400,
--7250442, -4921496, -3990562, -3317325, -11311870, 5317170, 13483513, -2755759, 6232535, 8982387,
--6594386, 7801808, 4647155, 2013266, 12304008, -389231, 10280004, 4081830, 1192390, -9594957,
-3778498, 5048734, -2724620, 14567992, 11310796, 2438468, -4402342, -6951942, 4017942, -6830072,
-2723546, 66572, 8371428, 185757, -12773770, 1118302, -5102421, -1809255, -9596568, 11290395,
-5640366, 4224101, 2529199, 12578349, -3666828, -12758200, -2134599, 8358007, 123480, -6471979,
--1818382, 1133335, -2984466, 1786706, 3825205, 166967, 29528, -628676, 1180579, -10201,
-4630512, 1646583, 1316408, -908386, 1737314, 2698850, 4197794, -3395709, 2284386, 2684892,
--119722, 984621, 4230006, 2594697, 1030255, -2417530, 3582003, -872952, -2216740, -2273112,
--250719, -6235219, 3985193, 2279017, 651761, -2841121, 3503620, 3808026, 6295349, 4199405,
-999117, 1320703, 239981, 5511517, -16430397, 7373385, 5509370, 6992744, -7643968, -13730474,
-4014184, 4044786, 738734, -11586748, 11074573, 3101503, -5829881, -10210748, 4633196, -4549981,
-17699560, 20491288, 3086471, -3348464, -7617662, 11611444, -13229573, -4811974, 16441135, 4017942,
--3136937, -8921184, -8118025, -4675072, 339839, -10896332, 2493229, 11494943, -1420560, 4284767,
--8416525, -7785702, -2572149, -6445672, 16834124, -6213207, 7587597, 6148783, 6861211, 1746978,
-3396246, -11689827, -11623792, -11241003, -2446521, 8351564, 19402514, -7845295, -13932337, -3277597,
--6393596, 3536369, 3052111, 10732050, -6534256, -180926, -8674223, -1703491, 15549929, -2021856,
--8391292, 11051488, 3685082, 1755568, 5874442, -12474196, 1950452, -4247186, 1254131, 5659157,
-13678934, 3779571, -15785615, 5758478, 1437740, -2485176, -6549289, 282394, -1636383, -890132,
--374736, 2212982, 3701725, 4367445, 1505923, 280247, -2505040, 811749, -741419, 3135863,
--5324149, 1999307, 2143726, -126165, 525060, 893890, -4017405, -115427, -2648921, 4429185,
-4167729, 1022202, 4994510, -1929514, 734439, 3775813, -745177, 2995740, 784905, 2776160,
-981400, -6242735, -332860, -2221572, -305480, 867047, 418222, -2184528, 260382, -2573759,
-50466, -1236414, 26800060, -11648488, -9126806, -2790655, 5648956, -15674483, 6277632, -4230006,
-7917236, -7034083, -3205656, 9725953, 7211787, 2749316, -4891968, -1770600, 13312251, 13096966,
--2718178, 11436961, -3316789, 16814796, -7857643, -4126927, 3019899, 17616346, 12866648, 4261682,
--9437654, -657667, -19559818, -2952253, 3060164, 9002788, 10488847, 18567680, 4867809, -334471,
--894427, -7120519, -12197707, -870805, -10579041, 7658464, 2403571, 11840151, 6590091, -4036196,
-11734388, -13959717, 6318434, -3107409, 1015760, -2421288, 14936823, 8758512, 4280472, 2671470,
--27096412, -4303021, 16081431, 8126078, 1005559, -492848, 824634, 12974022, 5509906, -20484310,
--6674379, -7895224, 1931662, 454730, -20351702, 811212, -19021874, -12607340, -1636383, -8164733,
--8849243, 11918534, 15044734, -1595044, -7280507, -779537, 4638565, -1816771, 3962644, 6180995,
--469225, 6865505, 10040023, -3165391, -5543729, 965831, -2343979, 3073049, 2008971, -1532230,
--1359894, 181462, 190589, 2881923, -262530, -3387656, 747861, 3469260, 1315871, 3092913,
--2582349, 4661114, 52613, -1618129, 1185948, -2828236, 1224603, -5742372, -3668976, -4471598,
-2417530, 312996, -4261145, -769336, 3777424, 2536715, 3290482, -2028298, 1848447, 142271,
--638876, -5456219, -2777233, -5786395, 9901510, 18722300, -4597763, -7885560, 1248225, 7125351,
-4355634, -11758010, -567473, -9562745, -362925, -12948253, -1257889, -11156714, 650688, 11163694,
-1026497, 24877524, -10392210, -5224828, -8818105, 10045929, 16823924, -13548474, -4353486, -20913270,
-4019553, -346282, 5785858, 4940286, -11497627, -7057705, 9186398, -3567507, -2453500, -11451457,
-22864796, -3200288, -24242406, 6689949, -6307697, -7391639, 8871255, 6671695, -6930467, -7907572,
--2247879, -14221710, -8351564, 4549981, 3253975, 4754529, -4188130, -10312216, -11704323, -11972221,
-9876277, -17519172, 375273, 4076461, -5268315, 343597, -15032, -2469069, -13710609, -2662343,
--5516886, 8681740, 11334956, -2189360, 17568026, -1099512, -86436, -5460514, -1024350, 25025700,
-2526515, -11451993, -4442607, 9666898, 7368554, -14058502, 372052, 1879585, -9372156, 7773891,
-1939715, 8712341, 1452236, 1224603, 1442035, 568009, 3937411, 5190468, 557272, 2535641,
-8633421, 534187, -2969433, 1355062, 4185983, -3386582, -850404, 346282, -3937411, 3568581,
-3505230, 4143033, 920197, -4812511, 1146219, -1753957, 841277, -1141388, -794569, 243203,
--2549600, 3542811, -1858110, -2745021, -3053185, 7326678, 136365, -8332774, 6011344, 4464619,
-2074469, -738198, 4610648, 3229279, -9005473, -2236067, 513249, 196495, -2720325, -12203076,
-30816928, -7924752, -2703145, 2740726, 13140452, 9443559, -20007032, -8159364, -19006304, 4175782,
-1096827, -5876589, -20918638, 874563, -9762461, 4354023, 4614943, 10572599, 543313, 7699266,
-36214628, 7880728, 9045738, -5674189, -2003065, 15822660, -1371168, 1256815, 4202626, 1047435,
--2310693, -8249022, 14599668, -15464567, 6459094, -22996328, -6990596, -10750840, -14191109, -12190191,
--7516, -25124484, -8540542, 3470871, 14415521, 8302172, -24682640, 14032195, 9343164, 10232760,
--15663746, 11555073, -7334194, -17962626, -6093485, -17870822, 8773544, 21420612, 5444945, -2025614,
--13927505, 11340861, -14833206, 22372484, -4084514, -2381559, -13394929, -14687178, 2257005, 17480516,
-5846524, -11981348, -4765803, 2953864, -2369211, -4777078, 11562052, 5935108, -5200669, 14808510,
--1063541, -20938502, 26436598, 14031658, 10978473, 5002563, -3389266, -1253594, -2034204, 7897371,
-1947231, 1199370, 17468706, 6803228, 480499, 876710, 2633352, 9086540, -7063074, 5148055,
-680215, 1758789, 1842541, 5877126, 3036542, 421444, 9942849, 7521025, 848793, -3344706,
--3262565, -1213328, 8185671, 4060892, 4689031, 4373351, 5521718, -6529424, 6818261, -1680943,
--1539746, 6189048, 9815074, -1321239, -2438468, 12348, 9361418, 10587631, 4263829, 6551973,
-5017059, 16853452, 3207804, -10853919, 4951024, -3165391, 5101885, 18496276, -26025892, -11846594,
--20913270, 11899744, -4165045, 2049773, -6859600, 15101642, -14805826, -14999636, -6761889, -3495567,
--10641855, -18558554, -8890582, 3486977, 12259447, -17072496, 11337640, -6417755, 1423782, 22146462,
-17016124, -264677, 9005473, 4301410, -3444027, -2651069, -29967598, 4194036, -2967823, 2990371,
-5935645, -2329483, 903017, 30394410, -27169964, 2601677, 32971928, 4329327, 9169218, -12856448,
--3434363, 17235166, 30277908, 1573569, 26862336, -10392747, 24310052, -8462696, 18017924, 18233210,
--4409858, 35487704, -5806796, -1445257, -10433012, -15956877, -16877610, -7726646, -10094247, -24592982,
--11416560, -5167383, 9211094, 9087077, 1248762, -12593381, -2022930, -3503083, 15950435, 4996658,
--8176007, 13664975, 3150359, -1598265, -1824824, -9803800, -1430224, -3842922, 4229469, -9918153,
--4696010, -6884296, -6857452, 12740484, 4968741, -4086662, 3904125, -3114925, 2501819, -7486665,
-11410654, 659814, 3260417, -166967, -7554848, 7129109, -849330, 2710124, 8123394, 5726265,
-3503620, 784368, -11809013, 5836861, -4486630, -381178, 10287520, -50466, 3849365, 2628520,
-4940823, 7059316, -2425583, -5349382, -3623879, -4236985, 2175401, 6383395, 10563472, 6305012,
--12258910, -1326608, -13317620, -11544335, -38907572, -27769648, -19495394, -2006287, 26577258, -17432198,
--2100239, -13427142, -19217832, -16048145, -19634980, -20636780, -8037495, -24346022, -26336202, -23048406,
-6620692, -15933792, -8185671, -19847580, 18974628, 30826054, 2794413, -3630321, -10770704, 2464238,
--1808718, -884226, -2362769, 9663140, 2171106, 21000242, -18248242, 1538672, -15504832, 31956168,
-7981123, -18856518, 14884746, -13533979, 12117176, -18147310, 10726681, 1480153, -10686416, 9639517,
--16981226, -5787469, 5566815, 17435420, 7792145, 31001610, -6826314, -20109036, 2028835, -5789616,
-2515240, -13348758, -11351599, -21454972, 2860985, -22804666, -4411469, -3626563, -19771346, 13246216,
-17026324, -9882720, -908386, -29382946, 33864208, 40806484, 6714108, -16195248, 5749351, 35903780,
--16712255, -7729331, -19083614, -11281268, -20963198, 8617852, -840740, -11984032, 9403294, -12002823,
-5146445, -7491497, -3236795, 4830228, 2747169, -149787, -7737384, -1636383, 7125888, 3992172,
--13019656, 10378252, -9013526, 4756140, 6224482, -4208531, -7579007, 4127464, -6092411, 5098126,
-3903589, -8255464, 3201361, -1156957, 3364570, -4934381, -13116830, 3591130, 2527588, -5508296,
-3648575, -4937065, 9685151, -181999, 4080756, 1059246, 12531641, 1605781, -16320876, 9287867,
-6350646, 2791729, 10566156, -31547608, 57684632, 21738976, -4657355, -17424682, -4771709, -18500034,
-19904490, 49933288, 1164473, -33216204, -15098421, 17983564, 6790344, -6648610, 23910082, -4653597,
-3080565, 13617194, -1345399, -13793824, -4386772, 11212549, -14314052, -13139916, -5220533, 4646081,
-816581, -2530810, -5945309, 10572062, 1212255, 15664819, 12505871, -16201154, 8063801, 19265612,
-10912975, -14970645, 5898064, 3184182, 13137231, 312996, 4664335, 3490735, 5497558, 27182848,
-25877178, 15939161, 35028144, -17201880, 18126372, -20719996, 13363791, -238908, 12228309, 15143518,
-5035313, 3935264, 18549964, 8548059, -4741107, 11676405, 230854, 15664283, -16446504, -9495636,
-1616518, 37764572, -25877178, 2526515, -32580548, -3883724, 3986267, 12916577, -15751256, -3138547,
--16234976, 4265977, 20455318, -12407624, -29091424, -6226629, -2674691, -7937637, 7323993, 5114769,
--8074539, 2949032, -6871948, -6912213, 6795712, -1030792, -3723737, -13211319, 7419556, -541703,
--8141648, -6689949, 6501507, 17853642, 1981591, -5089000, -2114735, 6521908, 16267189, 3223910,
-1656247, 13370770, -118112, 3663070, -966368, -2590939, -330712, 4873178, 7867307, 4590783,
--1850057, -2792803, 7054484, 4853313, -9735617, 9586904, 2898029, 18588618, -4293357, 4756140,
-11495480, -7606924, -4356708, 6340446, -10189810, 48321604, 3855807, 3575560, -10726144, -6692633,
-7858717, 7428683, 4271882, 18661632, 7619272, -7804493, 9683541, 19889456, -985695, 21792664,
--2318746, 10586021, -22377316, 40164924, -6207839, -4712116, 6494528, -30413738, -8073465, -14660334,
-21159694, 11734388, 11855183, -14246407, 4887673, 5070209, -19200652, 5178120, 15877957, 13684840,
-4420058, -4767414, 1614371, -9203578, 30191472, 4508642, 13451838, 11130945, 16114180, -27303644,
--2538863, -8327405, 4688494, -10236518, -12303471, 22347252, -21862994, 16324097, -14034343, 17181480,
--4341675, -18387292, -2170032, -27543626, 16475495, 15464030, 18524730, -56768732, 15829639, 9965398,
--17869212, -11894375, -16658568, 28858422, -42154032, 24721294, 58041116, 825171, -28491202, -11511586,
-16450262, 34058552, 8943196, -12063489, -25757992, -42685532, -3981972, -593242, 16245177, -13037373,
--6299644, -10088878, 28438590, 1478543, -1439888, -8716636, 5440113, 1257889, -636192, 723702,
--932008, 5011690, 17883706, 22164716, 11302743, -3834332, -2463164, 8517994, 1631551, -6067178,
-2024003, -9482214, -6084895, -11458973, -16591996, -33999496, -13911399, 4611185, 956167, 18276696,
--14085882, -10099079, 23441932, 8382703, -6973417, -10557030, 7138236, -3053185, -9940702, 23247048,
-2062121, -1782411, -8240432, 32212, -10275709, -8312909, -12672838, -3721589, -5532992, -4511863,
--13456669, 8755828, -28032178, 4583804, -17058536, 25371446, 1421097, 7271917, -14486925, 11508902,
--4307316, -9556302, 4334696, -9851044, -6436546, -8290361, -22517976, -12333535, 15898895, 13945222,
-10035728, 11937325, -27172110, -7343857, 4887136, -7489349, 15306727, 11500312, 538482, 9878425,
-26244398, -7604240, -27805082, 52455508, -23207856, -28736552, 31771484, -15229954, -9673877, 7575249,
-16058346, -19020800, -6589554, 2360622, -13255343, 68165960, -1098438, -10707353, -4793721, 982474,
-16359530, -32825898, -25765508, -13796509, -13800804, -775778, -29123100, 316754, -3049427, 10885595,
-42423004, 43710956, -17296370, 33866892, -33372432, -28931436, 17218524, 27475980, -9769440, 7859790,
-2985002, 18938122, 22575958, 384400, 1058173, 30650498, -27540404, -53417584, -6437619, -21082384,
-11508902, 25661892, -2951716, -16650514, 34051036, 10567230, 6503654, -8990440, -28768764, -15559593,
-2618856, -11951820, 15822123, -1148367, -10619307, -1150514, -11958263, -11536282, 15709380, -4893042,
-6087580, -11552925, 16757352, -1207960, -1454920, 11307575, 16050830, -1536525, -3855270, -11021960,
-1039382, -9446781, -9261023, -6584722, -3278671, -16692927, -413391, -7468948, -3292093, -16758962,
-4534412, 19821810, 7062000, -11769821, -25214142, -1642825, -2609730, 13557601, -33829848, -6686727,
-7484518, -6657200, 15214922, -96637, 9102109, -449898, -2965138, 2155537, -19232864, 20821464,
-571231, 12622909, -13023951, -20717848, 19287088, -20509542, 6567542, -4924717, 18148922, -161598,
-4220342, -11006391, 3708168, -7842611, -26098368, -21046950, 9123584, -1840394, -432718, 4121021,
-19905026, -8997420, -5764920, -16691854, 7358890, 5896453, -1806571, -3408594, -44005700, 1889249,
-12652437, -15943455, 11220065, -24626268, -4406100, 1513976, 15525233, 19285476, 2528662, -9338333,
-6337224, 34828964, 30638150, 30225832, -1214939, -2848637, 6624450, 3573413, -13782550, 8955544,
-38451232, -27369142, -8767102, -7966091, 193810, 1407139, 5079873, -20354386, -30873298, -11675332,
--1760937, 62358632, 31797790, 21154862, -2845953, -5487895, -15831786, 27111444, 4004520, 17348446,
--6355478, -8439074, -12533788, -11152956, -46061376, -20445118, -24282672, 19120658, -1742683, -9004936,
--1406602, -18938658, -8810589, 20045150, 30217242, -4715337, 26651346, 14332306, 11196980, 1610076,
-12658342, 15926812, 13457206, -3393561, -790811, 198642, 18190260, -14372571, -18457086, -8964670,
-10002979, -1734093, -12966506, -8482560, -12987444, 7693897, -2895345, 16504486, 32969780, 6177237,
-20356534, 26382910, 12913893, 16370268, 8311299, 5201206, 7355669, -12071006, 17447230, -14308147,
--9535364, 3839701, 1554241, -10200547, 5323612, 9424769, 17519172, 7148973, -19928648, 11025718,
-8506183, 2189897, 9369471, -5370857, -10468983, 5842766, -447213, -7681012, -4370666, -7175280,
-2833605, -42541652, 23841364, 21033528, -1260573, 34512208, 15362024, -23399518, -23269596, 10135049,
--9624485, -20871394, 1244467, 2141041, 9270150, -5152887, 12132209, -2985002, 11482058, 14855218,
--13772350, -55166172, 29548302, -8286603, -17407502, 12632573, 19485192, 745714, -37196564, -4806606,
--1602023, -38114612, -23925116, 20163260, -5907728, -15453292, -13218299, 8694088, -37247032, -26308822,
-50103476, -4216048, -29207388, 11471321, 27187142, 11754252, -41332080, 59040232, 23776938, -36294620,
-20138564, 26725434, 4191351, -24561308, 25498684, 28616830, 17301738, -22632330, 21385180, 40059696,
-2098092, 40467720, 49927384, -26686780, -16003585, -18563922, 47175384, 30146376, -20565378, 11589432,
--12454868, -29985314, 25818122, 58959700, 8451959, -17636746, -14842870, 35451196, -3356517, -39533028,
--28399398, 7279970, -1516124, 32876900, -5893769, 25415468, -49270792, -7466264, 1929514, 8538395,
--10286447, 10536092, -499827, 1100585, 5612986, 1489817, -12895639, 3999152, -6152004, 8038568,
-3088082, -17824114, 15648176, 5209796, -14952392, -10555956, 2821794, -12837657, 2515777, 11941083,
-12997645, 1955821, -12248710, -3869229, 4006668, -16661789, 9778030, 12520367, 4024921, 1139240,
-12400107, 4648229, -5583995, 6156836, -4498978, 1140314, -8567923, 5508833, 19872814, -14003741,
-34641060, 55766392, 22407918, -23067196, -8576513, -19346680, 11796665, -9395778, 15216532, 10124312,
--25665650, 13046500, -26156350, -8754217, 119722, -9569187, 1374390, 13626321, 10548977, 768799,
--20885890, 4702453, 16596291, -6309844, 2377801, -7517267, -24423868, 24612846, -14800994, 17044040,
--25157770, -14758044, -3655017, -20560008, -6241125, 20896090, -20512764, 27546310, 1646583, 22461606,
-8719320, -11193222, -30280594, 24707336, 15169824, 10281615, 6180995, 25465934, -19046570, -9614284,
--11098732, 7944079, 9384504, -2521683, -23972896, -1104880, -3477313, -24055038, -9723269, 3765076,
-6303938, 18924162, -2463701, -16917876, 22300008, -4378183, -4118874, 27033062, 12663174, -22257058,
-6979859, -13660143, 8398272, -7186017, 10370199, -19237696, 10502806, -6706055, 21007758, 3590593,
-7916162, -7267085, -296890, -15634218, 5986111, 945430, 443455, -476205, 4200478, -6349573,
--6099391, -832687, 2252174, -1828046, 3809636, -8008504, -1807108, 5987722, -1760400, -383863,
--1575716, 60130, 64961, -12603045, 2060511, 9919764, -111669, -1571958, -3016141, -1343788,
--9613211, 549756, -2655901, -1277216, -5167383, -7793218, -2073396, 7387881, -4701916, -2438468,
-3151969, 1455994, 5375689, -5868536, -2591476, -1009854, -4951561, -6837588, -7843147, -41640244,
--48217988, -26410290, 144568592, 126372432, 77091440, 167812432, -35464080, -126732672, -44047036, -238599936,
--124497680, -2845953, -61275760, 84818088, 156533312, 21539798, 92134568, 178530512, 30404074, 62055836,
-6347425, -184122560, -153127936, -135909952, -148932288, -90863792, 74494600, 31044560, 74587472, 192991664,
-116892904, 29837138, 143829872, 65157340, -87529288, 47414292, -63781340, -168611824, -20396262, -104369312,
--190898416, -86628416, -19494320, -100617128, 112244136, 120065272, 57353920, 191414880, 216989808, 81883552,
-107474576, 100755104, -112354200, -73753176, -143782080, -225494912, -206753280, -133095128, -132979168, -38582228,
-86915640, 111749680, 150107504, 210751904, 189911648, 110514880, 81228568, 14274861, -87531968, -128021160,
--93284008, -121904592, -149878784, -51133732, -56393996, -27842662, 94016296, 64648384, 69548944, 145502752,
-37513320, -6682432, 24363202, -40537512, -62716188, -35311072, -63382980, -19347754, 41139880, 15328201,
-22800370, 51437064, -11841762, 10591389, 28456306, -47748224, -4473209, 59612536, -56296820, 4752918,
-9776419, -112960328, -5456756, -2314987, -134481328, 10644003, 47728360, -17399450, 139083920, 126039040,
-23375896, 134887200, 66851704, -5939940, 22679038, -36436356, -145301424, -151742272, -187413584, -213618784,
--107399952, -17459578, 43456480, 134022304, 223099392, 255558064, 203649088, 150502640, 69067368, -28129352,
--84687632, -186703840, -233564624, -172125104, -137888848, -131442640, 8584566, 64535640, 79239464, 129522792,
-115795000, 76182520, 75110392, 53983444, 17331266, 21529598, -229781, -40977748, -46860776, -59445568,
--76106824, -68073088, -49179524, -36851356, -13717052, 18241262, 27545236, 44781476, 54664196, 47046536,
-34440804, 26370562, 11695196, -2129230, -12050604, -17695266, -23966992, -19036368, -13921063, -11141145,
--8855686, -2153926, -3183108, -2690260, -518617, -2390686, -5903433, -65498, -1461363, 1200980,
-9239548, 14740328, 18321794, 26564910, 19847044, 9956271, -288300, -9264781, -16722455, -18027052,
--24420110, -24440512, -19173808, -8459475, -1445793, 9253507, 15159624, 20631950, 19844360, 18417356,
-9459129, 2334852, -5022965, -8725763, -12387223, -9847823, -8704288, -3854733, -242129, 4481799,
-4603668, 6265284, 3293166, 1909650, -2919504, -4812511, -7317014, -4618701, -3829500, 725313,
-2287070, 5556077, 5341329, 6820408, 3973919, 3745748, 464393, -156766, -2880313, -2028298,
--3720516, -2219961, -3064996, -989990, -1648194, 496606, -511638, 932545, -616865, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+15756088, 6017786, 3842385, 1228898, -3318936, 29528, 3036005, 5667210, 95563, 539555,
+350040, -2090575, 571768, 1917166, -369904, 1873143, 2923262, 3861713, 1644973, 1580548,
+2058363, 1801739, -3539053, 3601330, 6796249, -3220152, 1944547, 1058710, 1910187, 344671,
+4031364, -2618320, -914291, -2356327, 2333778, 6717329, -1115081, 3258807, -73551, -1520955,
+-5522254, 2071248, -2853469, 2552284, 1310502, 2851858, -301721, -1715303, 917512, -1181116,
+3865471, 498216, -3033321, 3908420, -839666, 3051574, 2367601, -120259, 2273648, 4407174,
+-1224603, -1539209, -1235340, 2196339, -1786706, -2369748, 2755222, 38118, 1853815, -2927020,
+4347044, 263604, -1206886, -500364, -466004, 1733556, -1609002, -2590939, 1550483, 2335925,
+2216740, -2051921, -3065533, 1249299, -94489, -357019, -1173063, -1114544, 1555852, -390842,
+-213138, -942745, -1118839, 237297, -801011, 365072, 251256, 1156420, 806917, -324807,
+423591, 665720, -675384, -270046, 56908, -296890, -514322, 415001, 1119376, 651761,
+839666, 35433, -64961, 305480, -689879, 16643, 266825, 12268037, 9552007, 4851166,
+664646, -1774895, 5521181, -3218541, -3528316, -770410, -6137509, 3718905, 212601, -2499671,
+1410360, 3575024, 6055367, -2794950, 3478924, 7940858, -2290828, 83215, 1780264, 4139812,
+-1067836, 4507568, 3140695, 4559645, 1013612, 3487514, -3553549, 6068252, -751082, 5855651,
+2863133, -619012, 697395, -942745, -161598, -2085744, -1022202, -2582349, -1945620, 2053531,
+-572304, -5627481, -1293322, 617402, -183073, -3132642, -3280281, -1634772, -1432909, 4434017,
+-1793149, -4835060, -6504191, -7118372, -2485712, -3127273, -281320, 1113470, 3420405, -4652524,
+-2144263, 558346, -497679, -2078764, 493921, -4898947, -489089, -5776194, 3066607, -3140695,
+-1561221, 4022774, -609885, 2763812, 768799, 1012002, 3081639, 782758, -2528125, -1139240,
+221728, -2433636, 1271847, 2490544, 1179505, -1906429, 1408749, 2083059, 378494, 1131187,
+-638340, -1118839, -813359, -1118839, 771484, -112206, 705448, -934692, -725313, 801011,
+1125818, 6493454, -14061723, -3764002, -7129646, -1315334, -15569, 7743826, -3774740, -12590160,
+-4449049, -316754, 4784057, 1499481, -4685273, -10931766, -2826625, 3000035, -1239098, 6161668,
+228707, 2700461, -623307, -4852240, -5295158, 3183645, 3869229, 455803, 1246077, -192737,
+2359548, 551366, -6511708, 345745, 9134859, 1231045, -2288144, -845035, -2445447, 559956,
+-2112050, -3976603, 6110128, -1905892, -2566243, 5558762, -2924336, -4937602, 209917, 31139,
+144418, -7121593, 5771363, -2208687, -154619, 5337034, 4838818, -7636452, -1953673, 1474784,
+1835562, -678605, 4162897, 1148904, 2057826, 2894808, 413927, 2312303, 3483219, 759136,
+537, 3263638, -8728447, -1933272, 198105, 4432406, 2439542, -1077500, -903554, 3221762,
+2982318, -3478387, -520228, -1243393, 81604, 1902671, 2406256, 478352, 2979097, -311385,
+-2181844, -1026497, 213675, 215285, 256624, -818728, 2063195, -439160, 721555, -328565,
+-985158, 607201, -62277, -426276, -815507, 162672, -770410, -132070, -1355599, -1029182,
+233539, -212064, -1071058, -2044941, -785979, 432718, 1677185, -27995670, -10999948, -5665062,
+-7897908, 2476049, -2705293, -2696703, -292058, 3513820, -3163780, -3840238, -5513665, 1097364,
+5032091, 1095754, -3766150, -4748087, 1455457, 4146254, 3897146, -5394479, -7880728, 582505,
+-7364259, 3934190, -4832, 2741263, -163746, 2644626, -2870649, -1239098, 7794829, -9390409,
+4359929, 2174327, 1095217, -3338800, 2119030, 4605816, 1278290, -5725192, 1199907, -3636227,
+2841658, -7809861, -248034, -7075422, 5486821, -587874, -1352378, -2015950, 3043521, -11865921,
+5517959, -3428995, -7126962, 2860448, 5826660, 6521908, 3901441, 1386201, -410706, 768799,
+-539018, 4207458, -2350421, 1187559, 3371013, 8157217, 1358820, 156766, -5805185, 3733937,
+-2856153, 664109, 223875, 4342212, -3794067, 224949, 4052839, -357019, -4672925, -6522982,
+5454072, 452045, 1074816, 2718178, -495532, 1322313, 1228361, -39728, 1040456, -454730,
+230318, 1449015, 1410360, 1428614, -2297271, 933082, -1707250, -768799, -1427003, 1403381,
+-1627793, -15898358, 7781407, 12417824, 2408940, 983011, 6897181, 2332167, 2107218, 3775813,
+514859, 3950833, 3966939, -3202972, -592169, 539555, -3905736, -2417530, -54761, 1919850,
+-2305861, 12911745, 6854768, -1883343, 918586, 4100083, 5157719, 5893232, -2471754, 4150012,
+4828080, 272194, 1404991, 1393180, 2747169, 1994476, 1209033, 2728378, 2600603, -5586679,
+-4323422, -8600672, 925029, -3047279, -4305168, 4423817, -1263794, 2784750, -10661719, 11733314,
+-857920, -5580773, -1042066, 9300752, 6725382, -1483911, 234613, 4503273, -2148558, 1935957,
+-3436511, -7323993, 855772, 683974, -5892159, -2329483, -5807870, 1035087, 2137283, 1311039,
+-2827699, -5127654, -7820599, -9310415, -6701760, -2609193, 528281, -2265059, 899259, 3091840,
+2736968, -3870303, -423054, -4220879, 1532767, -1471563, 1204202, -56371, -1731946, 1233193,
+1401770, -1242856, -594316, -1617592, 2173790, -2587181, 555661, 828929, 759672, -261993,
+-609349, 552977, 1152662, 1159104, 942208, 728534, 970663, 321586, 1853815, -427886,
+2054605, -1285269, 645856, -381715, -534723, -1479616, -1149978, -984084, -1345399, 529892,
+-1080721, -143345, 978179, 328565, 29336774, 7753490, 2197413, -1105417, 17694192, 2056753,
+8421357, 1717450, 5611375, 9189619, 3276523, -5120675, 5461051, 6315213, 1029718, -471373,
+1382443, 11572789, 835908, -3964792, -7007239, -2073396, -178241, -8048232, 1385664, 2384781,
+4653597, 1966021, 3296924, 8869644, -2730526, -1409286, 5490042, -850404, -2362232, -456877,
+-7890392, 5134634, 3403762, 186831, 5149129, -2545842, -6901476, -15010911, -5451924, 5553930,
+6179921, 201327, 4353486, -4233764, -4555350, 12228846, -7018514, 5547487, -6172405, 1311576,
+-9022116, -9519795, 10401874, -3940096, -3660923, 14283451, 1134945, -1591285, -6643241, 5244692,
+8306467, 415538, -4378183, -8392903, -1254131, 6124087, -1889249, 2085207, -3646427, 3023120,
+-1344325, 988379, 6581501, -7010461, 2268817, -1974074, 508417, 823560, -734976, 7538205,
+2429878, 1121523, -2160369, 91268, -1694902, 3184718, -1458678, 2528662, 2599529, -2628520,
+92879, -409096, -1636383, 3590056, 680752, 1686848, 213138, -1248225, 804233, 29528,
+146029, 1037235, 1666447, 603980, 2161442, 667867, -76773, 1181116, 876173, -796716,
+336618, -337155, 540092, 1867774, 2146410, 345208, -102542, 15027554, 4868346, 12473122,
+-7672959, 2595234, 6829535, -9307731, -3307125, -3562139, 899796, -4642323, -2985002, 7445863,
+-2305861, -1255204, -595390, 9288404, -3422552, -4122632, 9713069, 1710471, -6993281, 3045132,
+-1589138, 1692754, 3629247, -5486284, -1364726, -4090956, -7636989, 1047435, 124017, 1564979,
+-7514046, -7631083, 2937221, -547071, 2857227, -188442, 4186519, 1374926, -257698, -4830228,
+-4860829, 1452773, 4719632, 2445984, -1458678, 14168023, 3274913, 2524367, 6324876, 2484102,
+4689031, 4953708, 3104188, 2061584, 2366527, -1920924, -1166084, 1187022, -6017786, 1695438,
+-9663676, 2742337, -6415608, 5097053, -3632469, 2852932, -1297617, -4540318, 1512365, -1112933,
+4959077, -4248797, 13358959, 11423539, 5163088, -9546639, 2984466, 4416300, -4179540, 1905355,
+1144072, 6698002, 6200322, 2742337, -192200, -777926, -1394791, -3702799, 5777268, -322659,
+-752693, 134755, -1723356, 752693, 1896765, -1484985, 2988760, -1038308, -2545305, -2498060,
+-137976, 1903744, 1689533, -362925, -668941, -1947231, -934155, 1207423, -2521146, 2882460,
+2818572, -1700270, 473520, -2183454, -797253, 506806, 894964, -1635846, 2995203, -18505940,
+-35602596, -1523640, -7136088, 6169184, -1838246, -9866077, -960462, -7992934, -8810589, -7559143,
+11635603, 6031745, -7787313, -4486630, 8849780, 5114769, 7895224, -5459977, 5099737, -4846871,
+-4892505, -1524713, -2149094, -15081778, 4093641, 8576513, 3681324, -8977555, -2081449, 1561758,
+2268817, -8014409, -1806571, -11492259, 2501819, -5464809, -537408, -4025458, 2163053, 12234214,
+-1353989, -2312840, 6113349, 8932458, -5458367, 2410014, 3353833, -7599945, 4014184, 3736622,
+-8919573, 1357210, 5708549, -1398549, -9393093, -5935645, -6074158, 8450348, 3250217, 8273181,
+-4964446, -9657771, 2236067, 4748087, -2088428, -6928856, 4527970, 6674379, 6327561, -7940321,
+-4147865, -1690070, 12700218, -2761127, 7561290, 2185065, -9020505, -7363185, -1446330, 4948339,
+-8552354, -559420, -1633698, 4618701, -1075352, 10482941, 1268089, -2473364, -3202972, -2732136,
+-3092377, -2031520, -1085553, 905701, -82141, -1302986, -3921305, -439697, -3815005, -1711545,
+1486059, -1382980, 553514, -1161789, -2901251, 1643899, -520228, 4441533, -941672, -3740917,
+-2641942, 1365263, -753230, 85899, -1088774, -2435783, 737124, 2451890, -2316061, -789200,
+3381213, 1516124, -2196876, 103079, 2654827, -18009872, -220117, 709743, 10302016, 2750390,
+-4389994, 6419366, -3185792, 2925410, -10065256, -2696703, -6448357, -3262028, -12672301, -4529043,
+-7644505, 17415018, 9697499, 10695542, -12431246, -10272488, -5203890, 6073084, -747861, 69793,
+171799, 3730179, -1018444, 5207648, -7305740, -5910949, -296353, -1531156, -8968965, -8640400,
+-7250442, -4921496, -3990562, -3317325, -11311870, 5317170, 13483513, -2755759, 6232535, 8982387,
+-6594386, 7801808, 4647155, 2013266, 12304008, -389231, 10280004, 4081830, 1192390, -9594957,
+3778498, 5048734, -2724620, 14567992, 11310796, 2438468, -4402342, -6951942, 4017942, -6830072,
+2723546, 66572, 8371428, 185757, -12773770, 1118302, -5102421, -1809255, -9596568, 11290395,
+5640366, 4224101, 2529199, 12578349, -3666828, -12758200, -2134599, 8358007, 123480, -6471979,
+-1818382, 1133335, -2984466, 1786706, 3825205, 166967, 29528, -628676, 1180579, -10201,
+4630512, 1646583, 1316408, -908386, 1737314, 2698850, 4197794, -3395709, 2284386, 2684892,
+-119722, 984621, 4230006, 2594697, 1030255, -2417530, 3582003, -872952, -2216740, -2273112,
+-250719, -6235219, 3985193, 2279017, 651761, -2841121, 3503620, 3808026, 6295349, 4199405,
+999117, 1320703, 239981, 5511517, -16430397, 7373385, 5509370, 6992744, -7643968, -13730474,
+4014184, 4044786, 738734, -11586748, 11074573, 3101503, -5829881, -10210748, 4633196, -4549981,
+17699560, 20491288, 3086471, -3348464, -7617662, 11611444, -13229573, -4811974, 16441135, 4017942,
+-3136937, -8921184, -8118025, -4675072, 339839, -10896332, 2493229, 11494943, -1420560, 4284767,
+-8416525, -7785702, -2572149, -6445672, 16834124, -6213207, 7587597, 6148783, 6861211, 1746978,
+3396246, -11689827, -11623792, -11241003, -2446521, 8351564, 19402514, -7845295, -13932337, -3277597,
+-6393596, 3536369, 3052111, 10732050, -6534256, -180926, -8674223, -1703491, 15549929, -2021856,
+-8391292, 11051488, 3685082, 1755568, 5874442, -12474196, 1950452, -4247186, 1254131, 5659157,
+13678934, 3779571, -15785615, 5758478, 1437740, -2485176, -6549289, 282394, -1636383, -890132,
+-374736, 2212982, 3701725, 4367445, 1505923, 280247, -2505040, 811749, -741419, 3135863,
+-5324149, 1999307, 2143726, -126165, 525060, 893890, -4017405, -115427, -2648921, 4429185,
+4167729, 1022202, 4994510, -1929514, 734439, 3775813, -745177, 2995740, 784905, 2776160,
+981400, -6242735, -332860, -2221572, -305480, 867047, 418222, -2184528, 260382, -2573759,
+50466, -1236414, 26800060, -11648488, -9126806, -2790655, 5648956, -15674483, 6277632, -4230006,
+7917236, -7034083, -3205656, 9725953, 7211787, 2749316, -4891968, -1770600, 13312251, 13096966,
+-2718178, 11436961, -3316789, 16814796, -7857643, -4126927, 3019899, 17616346, 12866648, 4261682,
+-9437654, -657667, -19559818, -2952253, 3060164, 9002788, 10488847, 18567680, 4867809, -334471,
+-894427, -7120519, -12197707, -870805, -10579041, 7658464, 2403571, 11840151, 6590091, -4036196,
+11734388, -13959717, 6318434, -3107409, 1015760, -2421288, 14936823, 8758512, 4280472, 2671470,
+-27096412, -4303021, 16081431, 8126078, 1005559, -492848, 824634, 12974022, 5509906, -20484310,
+-6674379, -7895224, 1931662, 454730, -20351702, 811212, -19021874, -12607340, -1636383, -8164733,
+-8849243, 11918534, 15044734, -1595044, -7280507, -779537, 4638565, -1816771, 3962644, 6180995,
+-469225, 6865505, 10040023, -3165391, -5543729, 965831, -2343979, 3073049, 2008971, -1532230,
+-1359894, 181462, 190589, 2881923, -262530, -3387656, 747861, 3469260, 1315871, 3092913,
+-2582349, 4661114, 52613, -1618129, 1185948, -2828236, 1224603, -5742372, -3668976, -4471598,
+2417530, 312996, -4261145, -769336, 3777424, 2536715, 3290482, -2028298, 1848447, 142271,
+-638876, -5456219, -2777233, -5786395, 9901510, 18722300, -4597763, -7885560, 1248225, 7125351,
+4355634, -11758010, -567473, -9562745, -362925, -12948253, -1257889, -11156714, 650688, 11163694,
+1026497, 24877524, -10392210, -5224828, -8818105, 10045929, 16823924, -13548474, -4353486, -20913270,
+4019553, -346282, 5785858, 4940286, -11497627, -7057705, 9186398, -3567507, -2453500, -11451457,
+22864796, -3200288, -24242406, 6689949, -6307697, -7391639, 8871255, 6671695, -6930467, -7907572,
+-2247879, -14221710, -8351564, 4549981, 3253975, 4754529, -4188130, -10312216, -11704323, -11972221,
+9876277, -17519172, 375273, 4076461, -5268315, 343597, -15032, -2469069, -13710609, -2662343,
+-5516886, 8681740, 11334956, -2189360, 17568026, -1099512, -86436, -5460514, -1024350, 25025700,
+2526515, -11451993, -4442607, 9666898, 7368554, -14058502, 372052, 1879585, -9372156, 7773891,
+1939715, 8712341, 1452236, 1224603, 1442035, 568009, 3937411, 5190468, 557272, 2535641,
+8633421, 534187, -2969433, 1355062, 4185983, -3386582, -850404, 346282, -3937411, 3568581,
+3505230, 4143033, 920197, -4812511, 1146219, -1753957, 841277, -1141388, -794569, 243203,
+-2549600, 3542811, -1858110, -2745021, -3053185, 7326678, 136365, -8332774, 6011344, 4464619,
+2074469, -738198, 4610648, 3229279, -9005473, -2236067, 513249, 196495, -2720325, -12203076,
+30816928, -7924752, -2703145, 2740726, 13140452, 9443559, -20007032, -8159364, -19006304, 4175782,
+1096827, -5876589, -20918638, 874563, -9762461, 4354023, 4614943, 10572599, 543313, 7699266,
+36214628, 7880728, 9045738, -5674189, -2003065, 15822660, -1371168, 1256815, 4202626, 1047435,
+-2310693, -8249022, 14599668, -15464567, 6459094, -22996328, -6990596, -10750840, -14191109, -12190191,
+-7516, -25124484, -8540542, 3470871, 14415521, 8302172, -24682640, 14032195, 9343164, 10232760,
+-15663746, 11555073, -7334194, -17962626, -6093485, -17870822, 8773544, 21420612, 5444945, -2025614,
+-13927505, 11340861, -14833206, 22372484, -4084514, -2381559, -13394929, -14687178, 2257005, 17480516,
+5846524, -11981348, -4765803, 2953864, -2369211, -4777078, 11562052, 5935108, -5200669, 14808510,
+-1063541, -20938502, 26436598, 14031658, 10978473, 5002563, -3389266, -1253594, -2034204, 7897371,
+1947231, 1199370, 17468706, 6803228, 480499, 876710, 2633352, 9086540, -7063074, 5148055,
+680215, 1758789, 1842541, 5877126, 3036542, 421444, 9942849, 7521025, 848793, -3344706,
+-3262565, -1213328, 8185671, 4060892, 4689031, 4373351, 5521718, -6529424, 6818261, -1680943,
+-1539746, 6189048, 9815074, -1321239, -2438468, 12348, 9361418, 10587631, 4263829, 6551973,
+5017059, 16853452, 3207804, -10853919, 4951024, -3165391, 5101885, 18496276, -26025892, -11846594,
+-20913270, 11899744, -4165045, 2049773, -6859600, 15101642, -14805826, -14999636, -6761889, -3495567,
+-10641855, -18558554, -8890582, 3486977, 12259447, -17072496, 11337640, -6417755, 1423782, 22146462,
+17016124, -264677, 9005473, 4301410, -3444027, -2651069, -29967598, 4194036, -2967823, 2990371,
+5935645, -2329483, 903017, 30394410, -27169964, 2601677, 32971928, 4329327, 9169218, -12856448,
+-3434363, 17235166, 30277908, 1573569, 26862336, -10392747, 24310052, -8462696, 18017924, 18233210,
+-4409858, 35487704, -5806796, -1445257, -10433012, -15956877, -16877610, -7726646, -10094247, -24592982,
+-11416560, -5167383, 9211094, 9087077, 1248762, -12593381, -2022930, -3503083, 15950435, 4996658,
+-8176007, 13664975, 3150359, -1598265, -1824824, -9803800, -1430224, -3842922, 4229469, -9918153,
+-4696010, -6884296, -6857452, 12740484, 4968741, -4086662, 3904125, -3114925, 2501819, -7486665,
+11410654, 659814, 3260417, -166967, -7554848, 7129109, -849330, 2710124, 8123394, 5726265,
+3503620, 784368, -11809013, 5836861, -4486630, -381178, 10287520, -50466, 3849365, 2628520,
+4940823, 7059316, -2425583, -5349382, -3623879, -4236985, 2175401, 6383395, 10563472, 6305012,
+-12258910, -1326608, -13317620, -11544335, -38907572, -27769648, -19495394, -2006287, 26577258, -17432198,
+-2100239, -13427142, -19217832, -16048145, -19634980, -20636780, -8037495, -24346022, -26336202, -23048406,
+6620692, -15933792, -8185671, -19847580, 18974628, 30826054, 2794413, -3630321, -10770704, 2464238,
+-1808718, -884226, -2362769, 9663140, 2171106, 21000242, -18248242, 1538672, -15504832, 31956168,
+7981123, -18856518, 14884746, -13533979, 12117176, -18147310, 10726681, 1480153, -10686416, 9639517,
+-16981226, -5787469, 5566815, 17435420, 7792145, 31001610, -6826314, -20109036, 2028835, -5789616,
+2515240, -13348758, -11351599, -21454972, 2860985, -22804666, -4411469, -3626563, -19771346, 13246216,
+17026324, -9882720, -908386, -29382946, 33864208, 40806484, 6714108, -16195248, 5749351, 35903780,
+-16712255, -7729331, -19083614, -11281268, -20963198, 8617852, -840740, -11984032, 9403294, -12002823,
+5146445, -7491497, -3236795, 4830228, 2747169, -149787, -7737384, -1636383, 7125888, 3992172,
+-13019656, 10378252, -9013526, 4756140, 6224482, -4208531, -7579007, 4127464, -6092411, 5098126,
+3903589, -8255464, 3201361, -1156957, 3364570, -4934381, -13116830, 3591130, 2527588, -5508296,
+3648575, -4937065, 9685151, -181999, 4080756, 1059246, 12531641, 1605781, -16320876, 9287867,
+6350646, 2791729, 10566156, -31547608, 57684632, 21738976, -4657355, -17424682, -4771709, -18500034,
+19904490, 49933288, 1164473, -33216204, -15098421, 17983564, 6790344, -6648610, 23910082, -4653597,
+3080565, 13617194, -1345399, -13793824, -4386772, 11212549, -14314052, -13139916, -5220533, 4646081,
+816581, -2530810, -5945309, 10572062, 1212255, 15664819, 12505871, -16201154, 8063801, 19265612,
+10912975, -14970645, 5898064, 3184182, 13137231, 312996, 4664335, 3490735, 5497558, 27182848,
+25877178, 15939161, 35028144, -17201880, 18126372, -20719996, 13363791, -238908, 12228309, 15143518,
+5035313, 3935264, 18549964, 8548059, -4741107, 11676405, 230854, 15664283, -16446504, -9495636,
+1616518, 37764572, -25877178, 2526515, -32580548, -3883724, 3986267, 12916577, -15751256, -3138547,
+-16234976, 4265977, 20455318, -12407624, -29091424, -6226629, -2674691, -7937637, 7323993, 5114769,
+-8074539, 2949032, -6871948, -6912213, 6795712, -1030792, -3723737, -13211319, 7419556, -541703,
+-8141648, -6689949, 6501507, 17853642, 1981591, -5089000, -2114735, 6521908, 16267189, 3223910,
+1656247, 13370770, -118112, 3663070, -966368, -2590939, -330712, 4873178, 7867307, 4590783,
+-1850057, -2792803, 7054484, 4853313, -9735617, 9586904, 2898029, 18588618, -4293357, 4756140,
+11495480, -7606924, -4356708, 6340446, -10189810, 48321604, 3855807, 3575560, -10726144, -6692633,
+7858717, 7428683, 4271882, 18661632, 7619272, -7804493, 9683541, 19889456, -985695, 21792664,
+-2318746, 10586021, -22377316, 40164924, -6207839, -4712116, 6494528, -30413738, -8073465, -14660334,
+21159694, 11734388, 11855183, -14246407, 4887673, 5070209, -19200652, 5178120, 15877957, 13684840,
+4420058, -4767414, 1614371, -9203578, 30191472, 4508642, 13451838, 11130945, 16114180, -27303644,
+-2538863, -8327405, 4688494, -10236518, -12303471, 22347252, -21862994, 16324097, -14034343, 17181480,
+-4341675, -18387292, -2170032, -27543626, 16475495, 15464030, 18524730, -56768732, 15829639, 9965398,
+-17869212, -11894375, -16658568, 28858422, -42154032, 24721294, 58041116, 825171, -28491202, -11511586,
+16450262, 34058552, 8943196, -12063489, -25757992, -42685532, -3981972, -593242, 16245177, -13037373,
+-6299644, -10088878, 28438590, 1478543, -1439888, -8716636, 5440113, 1257889, -636192, 723702,
+-932008, 5011690, 17883706, 22164716, 11302743, -3834332, -2463164, 8517994, 1631551, -6067178,
+2024003, -9482214, -6084895, -11458973, -16591996, -33999496, -13911399, 4611185, 956167, 18276696,
+-14085882, -10099079, 23441932, 8382703, -6973417, -10557030, 7138236, -3053185, -9940702, 23247048,
+2062121, -1782411, -8240432, 32212, -10275709, -8312909, -12672838, -3721589, -5532992, -4511863,
+-13456669, 8755828, -28032178, 4583804, -17058536, 25371446, 1421097, 7271917, -14486925, 11508902,
+-4307316, -9556302, 4334696, -9851044, -6436546, -8290361, -22517976, -12333535, 15898895, 13945222,
+10035728, 11937325, -27172110, -7343857, 4887136, -7489349, 15306727, 11500312, 538482, 9878425,
+26244398, -7604240, -27805082, 52455508, -23207856, -28736552, 31771484, -15229954, -9673877, 7575249,
+16058346, -19020800, -6589554, 2360622, -13255343, 68165960, -1098438, -10707353, -4793721, 982474,
+16359530, -32825898, -25765508, -13796509, -13800804, -775778, -29123100, 316754, -3049427, 10885595,
+42423004, 43710956, -17296370, 33866892, -33372432, -28931436, 17218524, 27475980, -9769440, 7859790,
+2985002, 18938122, 22575958, 384400, 1058173, 30650498, -27540404, -53417584, -6437619, -21082384,
+11508902, 25661892, -2951716, -16650514, 34051036, 10567230, 6503654, -8990440, -28768764, -15559593,
+2618856, -11951820, 15822123, -1148367, -10619307, -1150514, -11958263, -11536282, 15709380, -4893042,
+6087580, -11552925, 16757352, -1207960, -1454920, 11307575, 16050830, -1536525, -3855270, -11021960,
+1039382, -9446781, -9261023, -6584722, -3278671, -16692927, -413391, -7468948, -3292093, -16758962,
+4534412, 19821810, 7062000, -11769821, -25214142, -1642825, -2609730, 13557601, -33829848, -6686727,
+7484518, -6657200, 15214922, -96637, 9102109, -449898, -2965138, 2155537, -19232864, 20821464,
+571231, 12622909, -13023951, -20717848, 19287088, -20509542, 6567542, -4924717, 18148922, -161598,
+4220342, -11006391, 3708168, -7842611, -26098368, -21046950, 9123584, -1840394, -432718, 4121021,
+19905026, -8997420, -5764920, -16691854, 7358890, 5896453, -1806571, -3408594, -44005700, 1889249,
+12652437, -15943455, 11220065, -24626268, -4406100, 1513976, 15525233, 19285476, 2528662, -9338333,
+6337224, 34828964, 30638150, 30225832, -1214939, -2848637, 6624450, 3573413, -13782550, 8955544,
+38451232, -27369142, -8767102, -7966091, 193810, 1407139, 5079873, -20354386, -30873298, -11675332,
+-1760937, 62358632, 31797790, 21154862, -2845953, -5487895, -15831786, 27111444, 4004520, 17348446,
+-6355478, -8439074, -12533788, -11152956, -46061376, -20445118, -24282672, 19120658, -1742683, -9004936,
+-1406602, -18938658, -8810589, 20045150, 30217242, -4715337, 26651346, 14332306, 11196980, 1610076,
+12658342, 15926812, 13457206, -3393561, -790811, 198642, 18190260, -14372571, -18457086, -8964670,
+10002979, -1734093, -12966506, -8482560, -12987444, 7693897, -2895345, 16504486, 32969780, 6177237,
+20356534, 26382910, 12913893, 16370268, 8311299, 5201206, 7355669, -12071006, 17447230, -14308147,
+-9535364, 3839701, 1554241, -10200547, 5323612, 9424769, 17519172, 7148973, -19928648, 11025718,
+8506183, 2189897, 9369471, -5370857, -10468983, 5842766, -447213, -7681012, -4370666, -7175280,
+2833605, -42541652, 23841364, 21033528, -1260573, 34512208, 15362024, -23399518, -23269596, 10135049,
+-9624485, -20871394, 1244467, 2141041, 9270150, -5152887, 12132209, -2985002, 11482058, 14855218,
+-13772350, -55166172, 29548302, -8286603, -17407502, 12632573, 19485192, 745714, -37196564, -4806606,
+-1602023, -38114612, -23925116, 20163260, -5907728, -15453292, -13218299, 8694088, -37247032, -26308822,
+50103476, -4216048, -29207388, 11471321, 27187142, 11754252, -41332080, 59040232, 23776938, -36294620,
+20138564, 26725434, 4191351, -24561308, 25498684, 28616830, 17301738, -22632330, 21385180, 40059696,
+2098092, 40467720, 49927384, -26686780, -16003585, -18563922, 47175384, 30146376, -20565378, 11589432,
+-12454868, -29985314, 25818122, 58959700, 8451959, -17636746, -14842870, 35451196, -3356517, -39533028,
+-28399398, 7279970, -1516124, 32876900, -5893769, 25415468, -49270792, -7466264, 1929514, 8538395,
+-10286447, 10536092, -499827, 1100585, 5612986, 1489817, -12895639, 3999152, -6152004, 8038568,
+3088082, -17824114, 15648176, 5209796, -14952392, -10555956, 2821794, -12837657, 2515777, 11941083,
+12997645, 1955821, -12248710, -3869229, 4006668, -16661789, 9778030, 12520367, 4024921, 1139240,
+12400107, 4648229, -5583995, 6156836, -4498978, 1140314, -8567923, 5508833, 19872814, -14003741,
+34641060, 55766392, 22407918, -23067196, -8576513, -19346680, 11796665, -9395778, 15216532, 10124312,
+-25665650, 13046500, -26156350, -8754217, 119722, -9569187, 1374390, 13626321, 10548977, 768799,
+-20885890, 4702453, 16596291, -6309844, 2377801, -7517267, -24423868, 24612846, -14800994, 17044040,
+-25157770, -14758044, -3655017, -20560008, -6241125, 20896090, -20512764, 27546310, 1646583, 22461606,
+8719320, -11193222, -30280594, 24707336, 15169824, 10281615, 6180995, 25465934, -19046570, -9614284,
+-11098732, 7944079, 9384504, -2521683, -23972896, -1104880, -3477313, -24055038, -9723269, 3765076,
+6303938, 18924162, -2463701, -16917876, 22300008, -4378183, -4118874, 27033062, 12663174, -22257058,
+6979859, -13660143, 8398272, -7186017, 10370199, -19237696, 10502806, -6706055, 21007758, 3590593,
+7916162, -7267085, -296890, -15634218, 5986111, 945430, 443455, -476205, 4200478, -6349573,
+-6099391, -832687, 2252174, -1828046, 3809636, -8008504, -1807108, 5987722, -1760400, -383863,
+-1575716, 60130, 64961, -12603045, 2060511, 9919764, -111669, -1571958, -3016141, -1343788,
+-9613211, 549756, -2655901, -1277216, -5167383, -7793218, -2073396, 7387881, -4701916, -2438468,
+3151969, 1455994, 5375689, -5868536, -2591476, -1009854, -4951561, -6837588, -7843147, -41640244,
+-48217988, -26410290, 144568592, 126372432, 77091440, 167812432, -35464080, -126732672, -44047036, -238599936,
+-124497680, -2845953, -61275760, 84818088, 156533312, 21539798, 92134568, 178530512, 30404074, 62055836,
+6347425, -184122560, -153127936, -135909952, -148932288, -90863792, 74494600, 31044560, 74587472, 192991664,
+116892904, 29837138, 143829872, 65157340, -87529288, 47414292, -63781340, -168611824, -20396262, -104369312,
+-190898416, -86628416, -19494320, -100617128, 112244136, 120065272, 57353920, 191414880, 216989808, 81883552,
+107474576, 100755104, -112354200, -73753176, -143782080, -225494912, -206753280, -133095128, -132979168, -38582228,
+86915640, 111749680, 150107504, 210751904, 189911648, 110514880, 81228568, 14274861, -87531968, -128021160,
+-93284008, -121904592, -149878784, -51133732, -56393996, -27842662, 94016296, 64648384, 69548944, 145502752,
+37513320, -6682432, 24363202, -40537512, -62716188, -35311072, -63382980, -19347754, 41139880, 15328201,
+22800370, 51437064, -11841762, 10591389, 28456306, -47748224, -4473209, 59612536, -56296820, 4752918,
+9776419, -112960328, -5456756, -2314987, -134481328, 10644003, 47728360, -17399450, 139083920, 126039040,
+23375896, 134887200, 66851704, -5939940, 22679038, -36436356, -145301424, -151742272, -187413584, -213618784,
+-107399952, -17459578, 43456480, 134022304, 223099392, 255558064, 203649088, 150502640, 69067368, -28129352,
+-84687632, -186703840, -233564624, -172125104, -137888848, -131442640, 8584566, 64535640, 79239464, 129522792,
+115795000, 76182520, 75110392, 53983444, 17331266, 21529598, -229781, -40977748, -46860776, -59445568,
+-76106824, -68073088, -49179524, -36851356, -13717052, 18241262, 27545236, 44781476, 54664196, 47046536,
+34440804, 26370562, 11695196, -2129230, -12050604, -17695266, -23966992, -19036368, -13921063, -11141145,
+-8855686, -2153926, -3183108, -2690260, -518617, -2390686, -5903433, -65498, -1461363, 1200980,
+9239548, 14740328, 18321794, 26564910, 19847044, 9956271, -288300, -9264781, -16722455, -18027052,
+-24420110, -24440512, -19173808, -8459475, -1445793, 9253507, 15159624, 20631950, 19844360, 18417356,
+9459129, 2334852, -5022965, -8725763, -12387223, -9847823, -8704288, -3854733, -242129, 4481799,
+4603668, 6265284, 3293166, 1909650, -2919504, -4812511, -7317014, -4618701, -3829500, 725313,
+2287070, 5556077, 5341329, 6820408, 3973919, 3745748, 464393, -156766, -2880313, -2028298,
+-3720516, -2219961, -3064996, -989990, -1648194, 496606, -511638, 932545, -616865, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-517007,
-6449967, -663036, 1957431, -1178432, 8610873, -3382287, -837519, -304943, 1064615, -1521492,
-3942780, -681826, -2662880, -471910, 5392332, 400506, -2732673, 2529736, 1861868, 3552475,
-1452236, -2704756, -1791001, 6029597, 836982, -1543504, -1194538, -1228898, 1183264, 1283658,
--779537, -7676717, -1924145, 370441, 5297842, 1894618, -659278, -22012, -3059627, 4220342,
--4312684, -5733245, 740882, 55298, -1944010, -1320703, -1603633, 820339, 520765, 505732,
--2008971, 5005785, 151398, 6709276, -1082332, -3196530, 1469416, -356482, 957241, 1557463,
-3388729, 2306398, -868657, -1842541, -1571421, 4352950, -4433480, 172872, 123480, -778463,
--3802657, 3352759, -1918240, 442919, 2909840, -2050310, -2748779, -2285460, 2950643, -272194,
--920734, -820339, 96100, -553514, -1199370, 1465658, 1500554, 1096290, 682900, 375273,
-2051384, 331249, -44023, 431644, -202400, 73014, -475668, -255014, -246961, 1386201,
-333397, -933619, 1164473, -2544768, 2225330, 1342177, -2998424, -1645509, -230854, 284005,
--153008, -437550, -1514513, 2723009, 529892, -1163399, -1582696, -73014, 5628555, -777926,
--2630668, 3608310, -1389422, -3378529, -330712, 2889976, 2165737, -1844689, 523986, -2308008,
-1368484, 1332514, -1089848, 2888903, -765578, -5179194, 986232, 2704756, 2535105, 367220,
--360240, -3750043, -1243930, -481036, -1622961, 3413425, 4800700, 2238215, -6481643, 2219424,
-7692824, 3186866, -343061, -33823, 3561602, -1727651, 1188632, -3213173, -2888366, 2985002,
-3387656, 1636383, 934155, 612570, 711354, 1604170, 339839, -282931, -1116155, 825707,
--2236604, -406948, -940598, -4626754, -2282775, 996969, 1771137, 1450625, 3189550, 2505577,
-2656974, 3787088, -2355253, -1488743, -651224, 1221381, 1423245, 2246805, -431107, -717260,
--374736, 1383516, -940061, 1255741, 352724, -482647, -366683, 435402, -180389, 777926,
-354872, 150861, -261993, 445603, 423054, -131533, 652298, 184684, 200790, -458488,
-157840, -104153, 64961, 824634, 142271, 371515, 344134, 147640, 4491462, -351114,
-1873680, -2907693, -4248260, -2714419, 2361695, -1985349, -1955821, -2150705, -2795487, 2684355,
-414464, 1958505, -853088, 547608, -5783711, -3776887, -2626373, 3685619, 737124, 787590,
-2062658, -2100776, -1022739, -507343, 695785, -4449049, -828929, -3016141, -3218541, 141734,
--2837900, 1875290, 1828582, 7634841, -1892470, 3859565, -2581812, 1567126, -1766842, 354335,
-6733972, 1029182, 2925947, -3230889, 2062121, -2911988, -1345935, -493384, 4281009, -2157147,
--1084479, -3848291, -2005750, -4535486, -591095, 4185446, 1023813, 262530, 744640, 3832185,
--3821447, -6773164, 1565516, 2061047, -4378719, -377420, 596464, -1142998, 1777580, 5197448,
-1104880, -1391033, 126702, -1927904, 353798, 261993, -1495186, -508954, -472983, -2182380,
--495532, -1271310, 454193, -519691, -832687, 1679332, -326418, -1771137, 736050, -1279363,
-56371, -1379221, -1918777, 1058173, -346282, -198642, 612570, 757525, 249108, 1720134,
--846109, -209380, 298500, -701690, -274341, -262530, -887985, -526134, 1463510, 428960,
-2085207, 194884, 933619, -890132, 2430952, -6821482, 1104880, -2362232, -5087389, -3615289,
-2018098, -973347, -267362, 5046050, 1630477, -661425, 404801, 4297115, -2037425, 3182571,
--1459752, 977642, -4539244, -757525, 3022583, -989990, 3762928, 4293894, 1369558, 2719788,
-5543192, -1266479, -7883413, 1823214, -3525631, 282394, -9648107, 300111, 3055332, -1890859,
-3558381, 546535, -3500398, 1284195, -7263327, -4590247, -1794760, -1740536, -6032819, 3078955,
-3296924, 232465, 3066070, 274341, 810138, -1910187, 2777233, 2174864, -1152662, 6658810,
--1276142, 5506685, 4657355, -235686, -791885, 47245, 1472100, 2268817, 683974, 2535105,
-804233, 882616, 7300371, 2829847, -3230352, -1439888, -73551, -1734630, 1058173, -1246614,
-7363722, 1265405, 3444027, -2625299, 2971581, -3221, -1486596, 664646, -2422362, -1529545,
--440234, -1689533, -1086627, -1012539, 877247, -1584306, -406411, -1108102, -615254, -526134,
-2001992, -839666, 1029718, -265751, -1758252, -262530, 1039919, 454730, 159988, 689879,
--1074279, 918586, 557809, 547608, 973347, -552977, 209380, -1668595, -149250, 1319092,
-1135482, 302795, 190589, 183073, 922881, -13136157, 91805, -79994, 3408057, 5705864,
-2067490, -2936147, -4734128, -804770, 6273874, -1221381, -1135482, -4651450, -56371, -1958505,
-4659503, 5439039, -9351754, 6097243, 3971234, -3603478, -710817, -4969277, 83215, -1525787,
-169651, 3193845, 6307160, -2385318, 1499481, -1674500, -2085744, 2283849, 4369593, 2872260,
--2656974, -4488778, 3157875, 2115808, -1547262, -847182, 599685, -5774584, 2142115, 1698660,
--2239826, -3872987, 1540283, -2951716, 5160403, 2208687, -8902393, 4053912, -3779034, -9905268,
--2802466, -774168, 2039573, -4083440, -127775, 2141578, -4298189, -4329327, -4424353, -1407676,
-1184874, 9331353, 1534914, 1746441, -1953673, -4930086, 6444599, -1970316, -7429757, 336081,
--7498476, 537408, -668404, -2790118, -8218957, 2492692, 178241, -1854352, 2091649, 4992900,
-2372970, -986769, -790811, -56908, 2809446, 411243, 739271, 1510218, 2738579, -263604,
--1183264, -1631014, -1585917, 609349, -60666, -1335198, -1260573, 1181653, 1239635, 2303176,
-561030, -85362, -63351, 842350, -339839, -71404, -302258, 1444720, -98784, 756988,
--146566, 1984275, 8191040, 2139968, 1808181, 3518115, 5169530, -1184874, 12572443, -1875290,
-9006010, -10630044, 3679176, 6128919, -2203318, 809064, -2944200, -337155, 4865661, 8762807,
--2463164, -4432406, -1257889, 4054986, 905164, 8910983, 4269735, -1020592, 1318018, -118648,
--4162897, 781147, -906775, -1351841, 3946001, 5094368, -8094403, 9328132, -7113540, -3937411,
-1622961, -2945274, 4752918, 69256, -2686502, 6573985, 9316858, -6972880, -1220845, -729071,
-2905009, -6605123, -10765336, -5088463, -3272228, 3122441, -7457137, -4376035, -843424, 7700340,
-4905390, -5459441, 3892314, 1998234, -2914672, -4497368, -674847, -2789045, -3140158, 266288,
--2079301, 5742372, -4358855, -971736, 4940823, -3951370, 5338108, 6287296, 895501, -714575,
-589484, -7897908, -6927246, -1797444, 4401268, 129386, -3016678, 2828773, 6473590, -4353486,
--1966021, 1693828, -546535, -3111704, 18790, 765041, -2922725, 98784, -779000, 1265405,
-428960, 2268280, 360777, 1767379, -1126355, -545998, 124017, 149787, -82678, 1575179,
-740882, 1847910, 1864016, 117038, 585189, -339839, 1219234, 1884954, -958851, 4788352,
-3872987, 5229660, -5054103, -6660958, -3618510, 4541391, 192200, 18772766, -1446867, -456877,
--4552129, -8478802, -12486544, -2750390, 4082903, 6600291, -4150549, -7981123, 998580, 71404,
-7962333, -2677912, -3318936, 9877351, -5424007, 642635, -7660074, 4879620, -1571958, 37581,
--1738925, -11602854, -7326141, 615254, 6390375, 4303021, 475668, -12023224, 7934415, -4860293,
--5008469, -5189394, -6924561, -1079111, 6484327, -5331128, -5919539, 4030827, -1970316, 2313377,
-11978127, -5256503, 206695, 593779, 5055177, -3565897, -3315715, -1666984, 7590818, -1728724,
--4089346, -716186, 5905580, 7740605, -7743289, -8747775, -3030636, -1300301, -2985539, 1853278,
--6196564, -2175401, -5852430, -11557220, -4623533, -2675228, 1476395, -10629507, -3007014, 159451,
-7454990, 220117, -6600291, -128849, -338229, -2005750, -3682398, 159988, 1482301, -695785,
-1080184, 1053878, -1510755, 2158758, -962073, -2158758, 2276870, 2871723, -1315334, -2758980,
--156229, -543850, 411780, 2298881, 788127, 39728, 1549946, -878321, -1459215, -1111860,
--1594507, 2281702, -6159520, 5224828, 6305549, -4629438, -5682242, -4741107, 2550674, -449361,
-9153649, 16037945, -9019431, 623844, -407485, -1086627, 1457605, 4660577, -13178570, 11833709,
--9296994, -4555887, 11848204, -2722473, -5715528, 3964255, 4356708, 292058, -698469, -9144522,
-5690295, -1282585, 1953673, -6044630, 7532299, -669478, -12685186, -13481365, 4478577, -2454037,
--7012071, 3448322, -615791, 20946018, 3473018, -3803194, -6267431, -12313671, -4414153, 2419140,
--3041911, 9658308, -2079301, -14345728, -1431298, 9903658, -4357245, 1318555, 8496519, 5789616,
--4886062, -881542, 6871411, 9259949, -4255239, 1829119, 1276142, -4430796, 1958505, -2028298,
--661962, 1400696, -2193118, -2577517, -8946954, -9713069, -8275328, 8233989, 4540318, 5372467,
-2216203, 86973, 3229816, -7080254, -3973382, -9918690, 4889821, -1232119, -1420560, -1998234,
--1530082, -5047661, -3059627, 1064078, -2110977, 330176, 333397, 381715, 1901597, 278636,
-2291365, -230854, 1675574, -2284386, 1272384, -3438658, 239444, -1618666, 2835215, 168041,
--1885491, -512712, 856846, -1461363, -1740536, -4020090, -4126927, -2221572, 4079145, 308701,
-1400696, 2636036, 767725, 3193845, 1175747, -2578054, -10765336, 4109747, -11618960, 490163,
-4169876, -1830730, -8706972, -4035659, -1811403, 7796977, 6117107, -4580046, -4827007, 8310762,
-3405372, -4753455, -5216238, -3995930, -594316, 8035347, -1404991, 762357, -493921, -62277,
-10226854, 5128191, 6838662, -447750, -543313, 3579318, -5353677, -8910983, 7268696, 11795054,
--7993471, 10144176, -3002719, -992137, -4569309, 5242545, 285615, -5630166, 3414499, 9592809,
-7448547, 3485903, -7213398, -2914672, -14570677, 2445447, 7543573, -4643934, -1197222, -5727339,
-1477469, -3398393, 5615133, -3562139, 1854889, 6763500, 3814468, 12717398, 6612639, 4318590,
-8091719, -6783901, 12158516, 3797288, 7383586, -2408940, -8419747, -12926241, -2482491, -2148021,
--3401614, -3015604, 4803384, -8879845, 13447543, -2285996, -10909754, 6229313, 10048076, 4201015,
-1281511, 2126546, 3762391, 1302986, -2246268, 2609730, -2058363, -10737, 4214974, 8053,
--170725, 4648229, 652298, 2557653, -395137, -2150168, 697395, 475668, -1854352, 1464047,
-1889786, 522912, -1321239, 1133871, 383863, 3600793, 790811, -635655, 2268817, -3054796,
-901943, 716723, -3343632, -4875862, -1362042, -1898912, -1249836, -2410014, -1701344, -1006096,
--408022, -4194573, 5928666, -12702366, 9327058, 3338800, -2005750, 13963476, 10668162, -17534740,
--11868605, 11210402, 19021874, -1669132, 2756832, -1527935, -2465848, -1808181, -845572, 4932770,
-2822331, 11640435, 2791729, 11145977, 3071975, 4914517, -1542967, -6125160, 2636573, 980863,
--5129802, 8568997, 833761, 3511136, 1940788, -1622424, -7868380, 1149441, -8919573, -2869038,
--10315975, -6749004, -4185446, 8784282, 1213865, 4400731, 10566693, -4435091, -901943, 1390496,
-3787624, 1296006, 246961, -2820183, 7826504, 17426292, 8301098, -13590887, -9808095, -10014790,
-11924440, -1646583, -11051488, 6618545, -6193880, -507343, -1806571, -597000, -847719, 552440,
-10464688, 17468168, 6546067, 15072651, 9560060, 5013838, 1950989, 3939559, -4779762, 16041166,
-5146445, -8121247, -11116449, 5115843, 3683471, -2849174, 7965017, 15193984, 3483219, -5579163,
-9366250, -663036, -6838662, 1641214, 5268851, 1071058, -875100, 818191, 2912525, 5281199,
-2282238, 2470143, 615791, 3532611, -1353989, -410169, -1899449, -316754, 6962679, -3426847,
-2609730, -835371, 1702418, 421444, -1787780, 1287953, 2509335, 3271691, -1369021, 1498944,
--2728378, 192737, 1454383, -4723927, 2190970, -1402307, -6971269, 1814087, 17370996, 3103114,
-6213207, -5700496, 4579509, -8656507, -14811732, 159451, 8139500, 2203318, 6561100, 8839580,
-10069551, 398895, -10712185, -9406515, -14235669, -22440668, -259309, -2876554, 9962177, 7113540,
--8227547, -4853850, 5890548, 11435350, -14443438, -9599789, -2682744, -8182987, -5320928, -3188476,
-4619238, 8827768, 517544, -5699959, -6635188, 8919573, -7187628, -3285650, -114354, 12637941,
--801548, 836445, -20078436, -1743220, 5022965, 10146323, 13567802, 2680060, -12905840, 5908802,
-348429, 5878200, 8568997, 1199370, 4345970, 9517111, 17111150, -11558294, -4399657, -1231582,
-5289789, 17886392, 7699803, 5815923, 10231149, -3728569, -5924908, -11121818, -13645111, -8377871,
--473520, 8549669, 20232518, -12832289, -9197136, -1541356, 19835232, -11329050, -6386080, -10147934,
--1776506, -9123584, 2878702, 1435593, 4748087, 10251013, 1976222, 6471442, -4335770, -4596152,
--5570573, 187905, -2799782, -6824166, -5857262, -3140158, -1527935, -1633698, 6698002, -5279052,
--1498944, -2160906, 4787815, 924492, 3488587, -2537789, -2279017, 4496294, 1588601, 977642,
--3997541, 5870147, -3117610, -456877, -2182917, 1663763, -2268280, 343061, 4035659, 4595078,
-785442, 8810589, 5194763, 12465606, -14782741, -10794327, -1532230, 21734146, 8974334, 398358,
-11963095, -7532836, 17886928, -4335233, -15487115, -3190624, -15393163, 12434467, 7636989, 4772783,
-5009543, 115964, -4875325, 5922760, 9176198, 4392141, -3076807, 7951595, 10963978, 9554155,
--1133335, -8648990, 14818174, 3274913, -829466, -2672544, 1840930, -9820980, 9630390, -2016487,
--2592013, -12469901, -6616397, -7781944, 17249126, 5914707, 232465, 2049236, 8933532, 12545599,
-6556805, -16738024, 15066745, -2002529, 8727374, 3472481, 13235479, -3265786, -17259862, 5182415,
--767725, 6910603, -3051574, -7315403, 6445136, -3005403, 4374424, 21512954, -2636573, -10275709,
-56371, 2604898, -10562398, 17278654, -7804493, -10843182, 15471546, -9276592, 7884486, 777389,
--11226508, -8242579, -11232950, 3264175, 9381282, -5873905, 5426155, 10139344, -5810017, 7070053,
--2419140, 12043088, -4401268, 3396246, 3988951, -3668976, 14496, 197032, -5625334, -1008244,
-5065377, -8128763, -1554241, 5476620, 2910377, -110595, -4842576, 2107755, -1337882, 1651415,
--5070746, -5158793, -2778307, 739808, 1188632, -6156836, -3718368, 5180805, 660888, 2092723,
--6019934, 2423972, 461709, -3007014, 1122597, 534723, 1867237, -3486440, 168041, -1864553,
--403190, -5010616, -2018098, -712428, 3131568, -1147293, -3257733, -2005750, -714038, 689342,
-547608, -1221918, -41339, -6713571, 5143760, -14874009, -2648384, 7292855, 2028835, -14554034,
-3954054, -5403069, 10606959, 2054068, 5551782, -23993298, 7436736, -14496, 9376987, 14725295,
-1043677, -2370285, 1505923, -8106751, 15644955, -15094126, 5008469, 8813273, 6573985, 8080981,
--3652870, -7507603, -7951595, -15602542, 6248641, 1857573, 9069360, 15639587, -5829881, 13347148,
-7757785, -13760538, -7332583, -657130, 1695975, 258772, 122943, 6376416, 12089796, 10510859,
-4878546, -28257664, 7122667, 7809325, 8475581, -18776524, 11332808, -9860708, 9866614, 694711,
-5328444, -2949569, 7462506, -2681133, 23885386, 10893111, -10334765, 863825, -29477972, 4529580,
--8521752, -9461813, 8586713, 5537287, -14695767, -30041148, 18942954, 11061688, -27533424, 10409927,
--6043019, 10187126, -2091649, 2116345, 4586488, -137976, -18471044, -7418483, -2473364, 5509906,
-61203, -5153424, 8106751, -10424422, -3706020, 9977746, -660351, -1319629, 3856881, 1753420,
-4326106, 1453846, -5331665, 1902671, -8094403, 4776541, -3403762, 2558190, 2462090, -2615635,
--1018981, -1898912, -2712809, 1136019, -4534412, -1156420, -3799972, -3393561, -6433861, 3052648,
--1735167, -2161979, -3586835, 1393180, 3603478, 1832340, 2077690, 279173, 1258425, 2157147,
-107911, 2373506, 2576444, 6027450, -3139084, 9024800, -3244311, -6220187, 11126113, -8541616,
-300111, 1421634, 28242632, -4010426, 20457466, 4787815, 15460809, 772020, 4577362, 4755603,
-27245662, 26883810, -13761612, -12972949, 15693274, -19806242, 243739, 5115843, -19326280, 10948409,
-1807108, -1748589, -3318936, -6146635, 2597918, 1924682, 3908957, -12199855, 343061, -3114388,
--15555298, 7882876, 11256036, -17834314, -12893492, -6633577, 9773198, 9069360, 9106404, -1129040,
--3323768, 8127689, 28389734, 14990510, -5277441, -3838090, -3571265, 18818936, -14922327, 6845104,
-4292283, -23856396, -9548249, -1234803, 3495030, -20243792, 14099841, 8838506, 4304094, 3656628,
-9866077, -19176492, -2026151, -15933255, 979789, 9627706, 16748225, 9978283, -10136660, -5698885,
--544387, 394600, -11684459, 26616450, -1841467, 3409130, -6025839, 9030706, -1749662, 5219996,
--2135136, 3189013, 2811056, 5677410, -387621, -47245, -1888712, 1237488, -117575, -1649804,
-8195335, -2497524, -5526013, -475668, -350577, 3901978, -5633387, 1219234, -4617627, -7860864,
-5077725, -1566053, -4968741, 300111, 208843, 789737, -4332549, 6047314, 1917703, 7456600,
--9050033, -768262, 4714801, -2480344, -7284265, -254477, 8522826, 3590056, -4947266, 5064304,
--2439542, 12828530, 20110110, -1480690, 1387811, -12489228, 1126892, -632971, -8781598, -14897094,
--2759517, -6944962, -11014981, -8200703, 12633646, -10726144, 9184788, -3294777, -2457795, 17489106,
--12087112, -6877854, 2767033, 7002408, 1112933, -23343684, -14214194, 2571612, -3671123, 3684008,
--3179887, -7388418, 14898168, 3086471, -1208496, -6178311, -33374044, 19994684, -5982890, -454193,
--2780991, 1189169, 9652402, -5659693, -9061307, -15699179, -1409286, 6802155, -9574556, -12458090,
-5160403, 19548006, -3273839, 18173618, 13506598, -13458817, 24646670, 16164109, -16157130, -25142738,
--7148436, -11008538, 1399086, -8028368, -1890859, 11910481, -20893406, 10172093, -3350075, -11861089,
--13092134, -13220446, -15858630, 3226057, 9604621, -8638253, 13701483, -1865090, -7913477, -16500727,
-319975, -1928977, 6397354, 19497004, -7030862, -14929306, -5128728, 343597, 5086852, 13316009,
-3575560, -1748589, -10935524, -170725, 459562, 4898947, 2122788, -60130, 3752191, 5404680,
--4068945, 6769406, -3905199, 3053722, 8005282, 7089918, 482110, -11305965, -4566624, 1625108,
-2811593, -7885023, 12706661, -7760469, 5830418, 6764574, -5156645, 601295, 1431298, -3047279,
--10697690, 2203318, 4858682, 775778, 9057549, 6215355, -6099391, -5926518, -1561758, -21211770,
-38613904, 54385024, -5261872, 6642704, 3474629, 13187160, 26347476, -25144350, 288300, 4379793,
-485868, -9054865, 1347546, -11191074, 13221520, 32408212, -6848326, 717796, 1838246, 9833328,
-890669, 3825742, 12447352, -24930674, -1867237, 24507620, 25149182, -29377040, -6245420, 4254165,
-4134443, 8776229, 22136262, 6254546, 44656924, 7459822, 13779329, 6605660, -7019051, -9240085,
--536334, -31314070, -45086420, -15237470, -14632954, -46942920, 7352447, -1090385, -26234198, -12774306,
--43947180, -4779225, -6050535, 29981556, -29350196, 18337900, -20055350, -1605781, -13189308, -10380399,
-11783780, 26948772, -20744692, -7753490, -1881196, -6109054, -2201171, 11387569, 21583822, 23077934,
--16444893, 46385648, 31091268, 4086662, -17579302, -38101728, -8653285, -14157823, -10411538, 2556579,
-12247636, -7963406, 4567698, 14432164, 2334315, -4522601, 14619532, 9781251, 5012764, 6461779,
-15348066, 15531139, 119722, 1316408, 6207302, 5855651, -2528662, -4559645, -2652679, 2887292,
--382252, -1894081, 966905, -3022046, 2138357, 10157061, -436476, 3626026, 12323872, -3157338,
--4420058, -4649302, -525597, -6774237, -1380295, 5917391, -3207267, -1795296, 1178969, 119185,
-1049046, -891206, 4846871, -3200825, -3400540, 8069707, 5644661, -6136972, -326954, -3239479,
--1338956, -19384262, 35533340, 59230820, -13942001, -2991982, 10507637, 26533234, 8917426, -15357192,
-9636296, -13113609, 3410204, 8415988, -3176128, -17702244, 5338645, 18909130, -4704600, -26976690,
-21142514, -6163278, 17257716, -6347425, -4265977, -6624450, -10926934, -397821, 19166292, 10748156,
-3170223, 15540265, -7364795, -6105296, 5905043, -8241506, 10725607, 6294275, 16408386, 28161026,
-24640228, -17710834, -33050310, -12032351, -2084133, 25891674, -9910637, 4631049, 10417443, -10222559,
--15241228, -24334210, -25034828, 19740206, 21006148, -16763257, -60244432, 5005785, -4258997, -8231305,
-4657892, -5981816, -24184960, -11258720, -5691369, -16769163, -7210713, 25654914, 9681930, 14795089,
--5822902, -8369281, -5473399, 14266808, 2363306, 2684355, 12221329, 35568236, -3138011, -5213554,
--17995376, -16977468, -24837796, -2663417, 13990319, 9579388, -10166724, 7421167, -4723391, -5892695,
--10394358, -9415642, 8512088, -7292855, 8300025, 3918621, 4660040, -5314485, -7797513, 8704825,
-5333276, -2200634, 6519224, -9131100, 3757560, -1258962, 5349919, -3035468, -5290326, -2970507,
--2670933, 6102612, 2946348, -314606, -6498823, -1546188, 12715251, -9218074, -341987, -8957154,
-10885595, -5970005, -2587181, -8283918, 1058173, -3577171, 1051730, 9261023, 9250823, 1882269,
-6442, -3643743, -7090454, -7795366, -988379, -12766790, -1695975, -10555419, 5692443, -14934675,
--24370182, -5350993, -4024384, 4525822, -8276939, 18822158, -11135240, -38323992, -20713554, 13285408,
--18001282, 21321292, 19088446, -8385387, -2826089, 2788508, -11620034, 90194, 6303402, -1632625,
-3464965, 27009976, 22555558, -5953899, -35655744, -27057220, 2094870, 18977850, -14283451, -6123550,
--16797080, -21575232, 2071785, -6052146, -25267292, -27555436, -40414568, 16338056, 5664525, 943819,
-23439784, 31389768, -1148904, -23371602, -17701170, -18894634, -10625749, -6659347, 7212861, 12182138,
--10741713, -17199734, -20960514, 11203422, 9904731, -20641612, -19621558, -7879118, -3349538, -12037720,
-7556458, 50834160, 30593588, 59361280, 19929186, -31523986, 37056440, -1610613, -18835580, 1832877,
--17727478, -38924752, -16008954, 8913668, 18655190, -4403952, 17193828, 9849971, 37875704, 41193032,
-34015068, 11216307, -9435506, -6018323, -5499169, 7136625, 9680856, -14381161, -5208722, 2305861,
-30904974, -4361003, 2753611, -3428458, 11237782, 11137924, 13264470, -752693, 349503, 129386,
-2954401, -1300838, 1953136, -11329050, -3507378, -3947612, -10436234, -10982231, -4940823, 3840775,
-13117367, -8535174, 2053531, 4458713, 14892799, 19931332, 13809394, 12696997, 14358076, 3031710,
--5276368, -11153493, -15815143, -19906100, -15502148, -9334038, -18699750, -19221052, -7318088, -3510599,
-1841467, 8356396, 35492536, -20204064, 2423435, 10290205, -4346507, -26334056, 26638998, 25226490,
--14461155, -20158430, 2857227, 34974992, -18282602, 9899900, 22591528, 6784438, -8348343, -16852914,
--10901701, 7693360, -2556579, 5844914, -9716290, 6465000, -21656298, 31768800, -2971044, 7077033,
--1395328, -40217536, 12617540, -11184095, 20809116, 12399571, 22226456, -8704288, -38603168, 27733140,
-12622909, -13224741, -23991688, 19866908, 10787884, 21132312, 21505438, -18723910, 8696772, 22307524,
--32681480, 29990682, 14898705, -1010928, 9666898, -17061220, 37749004, -4299799, 24880746, 11065446,
-43815644, -3120831, -7553237, 6099928, 17890686, 11747809, 12486544, 44095892, 2703682, 10738492,
-25913686, -17113834, 17818208, 2042794, -29250874, 10880226, -9783399, 33158222, -24348170, -29445222,
--30478162, 26079578, 43011948, -13744432, 11033234, -50634980, 4936528, 2389076, -1818919, -23738284,
-4074313, 9978820, -7708930, -6558952, -6246493, 15980500, 7626788, -10152229, -10790568, -6335614,
--2461016, -3208878, 4711043, -17479980, -10341744, 9230958, 3941169, 3262565, 674310, 7951058,
--1247688, -956704, -10130754, 13709536, 17252346, -7354595, -26554710, -18046916, -78920, 9127,
-5232344, 1330903, -8292508, -13127031, -7080254, 4931160, 7823820, 21364778, 7351374, 1110249,
-481036, -15941845, -3146064, 16558710, 9915469, 3756486, -17255032, -10561325, -1842004, 2396592,
-3142306, -2857227, -3169149, -3046743, -1017370, -64887292, 3540127, -7940858, 2005750, 50253264,
-41349260, 59509456, 31411780, -15817291, -12132746, -24645596, -32875828, 11576011, 2872260, 8637716,
-10438918, -9566503, 14949707, 25380572, 4654671, -6784975, -8606578, -17961554, -11959336, -10851772,
-4950487, 8092256, -25818122, -15255724, -3569655, 17326434, -7825968, 11164231, 13845364, -36658620,
--36141076, 6867653, 10464688, 8060043, -27282170, -12526272, -24504400, -11843909, -11222750, 23639500,
--31056372, -43218108, -16258599, 8590471, 7347079, -33331094, -26781806, -21029770, -15944529, 18034030,
-25396678, 1160178, -8630200, -10538776, -5892159, -5612986, -11478300, -36998996, 12175695, 27821724,
-25271050, 7880191, 34517580, 46693272, -4066797, -5992016, 35743792, -8644695, -21752936, -49155900,
--16746614, 6709276, -26980984, -18053896, 12642236, -4408784, 17529372, 30673046, -18663780, -28956670,
--9588514, -12419972, -7188702, -7852274, -7793755, 3271691, 4451734, 3593814, 6244346, -10396505,
-9086540, -14364518, -1719061, 8947491, 11985643, -12834436, -17912162, 10271951, -4075387, 672699,
--12499429, 14795625, -8651138, -3105798, -3437585, 13695577, -11574400, 14857366, -6580427, -6920266,
-9833864, 2600603, 7835631, -6186901, 705448, 2921115, 16018081, -1863479, 3813931, 2448668,
-42769820, 14813879, 3596498, 15415174, -17520782, 1008244, -8879845, -13342316, 8027294, 2972117,
--10880226, -18460306, -10392747, -17144436, -13696651, 5446019, -10536629, -5333276, 8138426, -5406827,
-1950452, -6001143, 21330418, -16691854, 17512192, 6194417, 2095944, -16146393, -6771553, 12683038,
-5322538, -399969, 10357851, -1920924, -4105452, -6672232, -5405217, -4505421, 2047626, -187368,
-2279017, -18889804, 10004053, -7958038, -7237020, 6451578, 4621385, 2357937, -3422552, 13086228,
-11469173, -16542067, 14839112, -2157147, 10103911, 19757924, -4051228, 10649908, 10351408, -9970767,
--6922414, -13256953, 1291175, 2168959, -20989506, 8614094, 3314104, 16335371, -6360310, -37526204,
-23579908, 1327682, 791348, 387621, -16413218, -5316633, -4243428, -5683853, -23972896, 13621489,
-7009387, 14697915, -10621454, 6414534, -11927661, -11082626, 614717, 9292699, 7692824, 147103,
--1272384, -3479997, 943819, -5626407, -1027571, 15858630, -6376416, 3068754, 1843078, 4429185,
--9685151, 10519986, -282931, -2129230, 2601140, -1165010, 2543695, 3451006, -8799314, -1337882,
-266288, -1784559, -1524713, 4756140, -5583458, 6991133, 10435160, 3777961, -6332393, -443455,
--1237488, -6128382, 7640210, -2215666, 4224101, -21919366, -62270584, -92581776, 19445464, 72807752,
-3032784, 199248368, 183653872, 126211376, 217002144, 166987792, 22740778, 3670050, -22470732, -159005056,
--162226288, -123272000, -212496192, -198096784, -56603372, -66004520, -66791036, 16040092, 40320616, -33024004,
--10969346, 63917704, 40711460, -2005750, 47518444, 33067490, 2600066, 39894876, 94101120, 62035972,
-21686900, 96520800, 71417792, 5821828, 82902536, 112423992, 27103392, 12426951, 114599928, 31636730,
--44354128, 57919244, 88340496, -44715980, 20807506, 123517888, 11934640, 20704964, 148954304, 117231672,
-10130754, 93106304, 123263952, -42315628, -25018184, 35402340, -100315400, -167685728, -113138568, -184944512,
--275041664, -252482880, -282558368, -359865632, -379836704, -335857312, -355050464, -334266560, -250948496, -200242656,
--104154568, -25547002, 59547036, 206740400, 240424752, 261096432, 404728192, 395810752, 265839680, 342253600,
-267487872, 106807248, 117899000, 166618432, 81725176, 53551800, 124588408, 89133992, 34897, 43069932,
-96990560, 24721294, 7309498, 72571528, 17215302, -74132208, 24845848, 59620052, -16561931, 53494356,
-141102560, 56387552, 32256278, 124423056, 68181536, -23490250, 15188615, -31150860, -147449456, -180670480,
--179578496, -226562752, -256128768, -211626464, -203476224, -232034000, -209368912, -172856864, -199311712, -182270352,
--122523608, -97215512, -93071408, -37611028, 23305030, 27693412, 84810568, 142653040, 149935168, 148343344,
-167416752, 154850752, 111055504, 94422168, 84240952, 58566176, 48063368, 58958628, 52546240, 35993972,
-37462316, 40967544, 34855808, 34154116, 43625592, 38706784, 27765352, 22590992, 20430622, 4173635,
--489626, -4534949, -23651848, -31689342, -29700772, -24758876, -20713554, -12610561, -6129992, -4858682,
--1035087, 8396661, 15714212, 20591146, 20397874, 15481746, 10465225, 3863860, 504659, 2094870,
--646929, -7282117, -7663833, -11727408, -21264384, -23551454, -22730040, -30462056, -33054606, -29459180,
--33467996, -40246528, -38121592, -39270496, -43537008, -39448736, -32984276, -34570192, -31143882, -21017960,
--16655346, -15013058, -4287451, 1824824, 3566434, 10093710, 18613852, 20052666, 20989506, 25605522,
-24881820, 22650046, 25964688, 28469728, 28781112, 29753922, 31833224, 28978144, 27445914, 27710592,
-27968828, 23694798, 20343112, 14875082, 7696045, 2243584, -348429, -2251100, -4105452, -5951751,
--6847252, -7295002, -6856379, -6018860, -4859756, -5222144, -4800700, -4476430, -4283693, -4244502,
--3267396, -2863670, -1982127, -1400159, -297427, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+6449967, -663036, 1957431, -1178432, 8610873, -3382287, -837519, -304943, 1064615, -1521492,
+3942780, -681826, -2662880, -471910, 5392332, 400506, -2732673, 2529736, 1861868, 3552475,
+1452236, -2704756, -1791001, 6029597, 836982, -1543504, -1194538, -1228898, 1183264, 1283658,
+-779537, -7676717, -1924145, 370441, 5297842, 1894618, -659278, -22012, -3059627, 4220342,
+-4312684, -5733245, 740882, 55298, -1944010, -1320703, -1603633, 820339, 520765, 505732,
+-2008971, 5005785, 151398, 6709276, -1082332, -3196530, 1469416, -356482, 957241, 1557463,
+3388729, 2306398, -868657, -1842541, -1571421, 4352950, -4433480, 172872, 123480, -778463,
+-3802657, 3352759, -1918240, 442919, 2909840, -2050310, -2748779, -2285460, 2950643, -272194,
+-920734, -820339, 96100, -553514, -1199370, 1465658, 1500554, 1096290, 682900, 375273,
+2051384, 331249, -44023, 431644, -202400, 73014, -475668, -255014, -246961, 1386201,
+333397, -933619, 1164473, -2544768, 2225330, 1342177, -2998424, -1645509, -230854, 284005,
+-153008, -437550, -1514513, 2723009, 529892, -1163399, -1582696, -73014, 5628555, -777926,
+-2630668, 3608310, -1389422, -3378529, -330712, 2889976, 2165737, -1844689, 523986, -2308008,
+1368484, 1332514, -1089848, 2888903, -765578, -5179194, 986232, 2704756, 2535105, 367220,
+-360240, -3750043, -1243930, -481036, -1622961, 3413425, 4800700, 2238215, -6481643, 2219424,
+7692824, 3186866, -343061, -33823, 3561602, -1727651, 1188632, -3213173, -2888366, 2985002,
+3387656, 1636383, 934155, 612570, 711354, 1604170, 339839, -282931, -1116155, 825707,
+-2236604, -406948, -940598, -4626754, -2282775, 996969, 1771137, 1450625, 3189550, 2505577,
+2656974, 3787088, -2355253, -1488743, -651224, 1221381, 1423245, 2246805, -431107, -717260,
+-374736, 1383516, -940061, 1255741, 352724, -482647, -366683, 435402, -180389, 777926,
+354872, 150861, -261993, 445603, 423054, -131533, 652298, 184684, 200790, -458488,
+157840, -104153, 64961, 824634, 142271, 371515, 344134, 147640, 4491462, -351114,
+1873680, -2907693, -4248260, -2714419, 2361695, -1985349, -1955821, -2150705, -2795487, 2684355,
+414464, 1958505, -853088, 547608, -5783711, -3776887, -2626373, 3685619, 737124, 787590,
+2062658, -2100776, -1022739, -507343, 695785, -4449049, -828929, -3016141, -3218541, 141734,
+-2837900, 1875290, 1828582, 7634841, -1892470, 3859565, -2581812, 1567126, -1766842, 354335,
+6733972, 1029182, 2925947, -3230889, 2062121, -2911988, -1345935, -493384, 4281009, -2157147,
+-1084479, -3848291, -2005750, -4535486, -591095, 4185446, 1023813, 262530, 744640, 3832185,
+-3821447, -6773164, 1565516, 2061047, -4378719, -377420, 596464, -1142998, 1777580, 5197448,
+1104880, -1391033, 126702, -1927904, 353798, 261993, -1495186, -508954, -472983, -2182380,
+-495532, -1271310, 454193, -519691, -832687, 1679332, -326418, -1771137, 736050, -1279363,
+56371, -1379221, -1918777, 1058173, -346282, -198642, 612570, 757525, 249108, 1720134,
+-846109, -209380, 298500, -701690, -274341, -262530, -887985, -526134, 1463510, 428960,
+2085207, 194884, 933619, -890132, 2430952, -6821482, 1104880, -2362232, -5087389, -3615289,
+2018098, -973347, -267362, 5046050, 1630477, -661425, 404801, 4297115, -2037425, 3182571,
+-1459752, 977642, -4539244, -757525, 3022583, -989990, 3762928, 4293894, 1369558, 2719788,
+5543192, -1266479, -7883413, 1823214, -3525631, 282394, -9648107, 300111, 3055332, -1890859,
+3558381, 546535, -3500398, 1284195, -7263327, -4590247, -1794760, -1740536, -6032819, 3078955,
+3296924, 232465, 3066070, 274341, 810138, -1910187, 2777233, 2174864, -1152662, 6658810,
+-1276142, 5506685, 4657355, -235686, -791885, 47245, 1472100, 2268817, 683974, 2535105,
+804233, 882616, 7300371, 2829847, -3230352, -1439888, -73551, -1734630, 1058173, -1246614,
+7363722, 1265405, 3444027, -2625299, 2971581, -3221, -1486596, 664646, -2422362, -1529545,
+-440234, -1689533, -1086627, -1012539, 877247, -1584306, -406411, -1108102, -615254, -526134,
+2001992, -839666, 1029718, -265751, -1758252, -262530, 1039919, 454730, 159988, 689879,
+-1074279, 918586, 557809, 547608, 973347, -552977, 209380, -1668595, -149250, 1319092,
+1135482, 302795, 190589, 183073, 922881, -13136157, 91805, -79994, 3408057, 5705864,
+2067490, -2936147, -4734128, -804770, 6273874, -1221381, -1135482, -4651450, -56371, -1958505,
+4659503, 5439039, -9351754, 6097243, 3971234, -3603478, -710817, -4969277, 83215, -1525787,
+169651, 3193845, 6307160, -2385318, 1499481, -1674500, -2085744, 2283849, 4369593, 2872260,
+-2656974, -4488778, 3157875, 2115808, -1547262, -847182, 599685, -5774584, 2142115, 1698660,
+-2239826, -3872987, 1540283, -2951716, 5160403, 2208687, -8902393, 4053912, -3779034, -9905268,
+-2802466, -774168, 2039573, -4083440, -127775, 2141578, -4298189, -4329327, -4424353, -1407676,
+1184874, 9331353, 1534914, 1746441, -1953673, -4930086, 6444599, -1970316, -7429757, 336081,
+-7498476, 537408, -668404, -2790118, -8218957, 2492692, 178241, -1854352, 2091649, 4992900,
+2372970, -986769, -790811, -56908, 2809446, 411243, 739271, 1510218, 2738579, -263604,
+-1183264, -1631014, -1585917, 609349, -60666, -1335198, -1260573, 1181653, 1239635, 2303176,
+561030, -85362, -63351, 842350, -339839, -71404, -302258, 1444720, -98784, 756988,
+-146566, 1984275, 8191040, 2139968, 1808181, 3518115, 5169530, -1184874, 12572443, -1875290,
+9006010, -10630044, 3679176, 6128919, -2203318, 809064, -2944200, -337155, 4865661, 8762807,
+-2463164, -4432406, -1257889, 4054986, 905164, 8910983, 4269735, -1020592, 1318018, -118648,
+-4162897, 781147, -906775, -1351841, 3946001, 5094368, -8094403, 9328132, -7113540, -3937411,
+1622961, -2945274, 4752918, 69256, -2686502, 6573985, 9316858, -6972880, -1220845, -729071,
+2905009, -6605123, -10765336, -5088463, -3272228, 3122441, -7457137, -4376035, -843424, 7700340,
+4905390, -5459441, 3892314, 1998234, -2914672, -4497368, -674847, -2789045, -3140158, 266288,
+-2079301, 5742372, -4358855, -971736, 4940823, -3951370, 5338108, 6287296, 895501, -714575,
+589484, -7897908, -6927246, -1797444, 4401268, 129386, -3016678, 2828773, 6473590, -4353486,
+-1966021, 1693828, -546535, -3111704, 18790, 765041, -2922725, 98784, -779000, 1265405,
+428960, 2268280, 360777, 1767379, -1126355, -545998, 124017, 149787, -82678, 1575179,
+740882, 1847910, 1864016, 117038, 585189, -339839, 1219234, 1884954, -958851, 4788352,
+3872987, 5229660, -5054103, -6660958, -3618510, 4541391, 192200, 18772766, -1446867, -456877,
+-4552129, -8478802, -12486544, -2750390, 4082903, 6600291, -4150549, -7981123, 998580, 71404,
+7962333, -2677912, -3318936, 9877351, -5424007, 642635, -7660074, 4879620, -1571958, 37581,
+-1738925, -11602854, -7326141, 615254, 6390375, 4303021, 475668, -12023224, 7934415, -4860293,
+-5008469, -5189394, -6924561, -1079111, 6484327, -5331128, -5919539, 4030827, -1970316, 2313377,
+11978127, -5256503, 206695, 593779, 5055177, -3565897, -3315715, -1666984, 7590818, -1728724,
+-4089346, -716186, 5905580, 7740605, -7743289, -8747775, -3030636, -1300301, -2985539, 1853278,
+-6196564, -2175401, -5852430, -11557220, -4623533, -2675228, 1476395, -10629507, -3007014, 159451,
+7454990, 220117, -6600291, -128849, -338229, -2005750, -3682398, 159988, 1482301, -695785,
+1080184, 1053878, -1510755, 2158758, -962073, -2158758, 2276870, 2871723, -1315334, -2758980,
+-156229, -543850, 411780, 2298881, 788127, 39728, 1549946, -878321, -1459215, -1111860,
+-1594507, 2281702, -6159520, 5224828, 6305549, -4629438, -5682242, -4741107, 2550674, -449361,
+9153649, 16037945, -9019431, 623844, -407485, -1086627, 1457605, 4660577, -13178570, 11833709,
+-9296994, -4555887, 11848204, -2722473, -5715528, 3964255, 4356708, 292058, -698469, -9144522,
+5690295, -1282585, 1953673, -6044630, 7532299, -669478, -12685186, -13481365, 4478577, -2454037,
+-7012071, 3448322, -615791, 20946018, 3473018, -3803194, -6267431, -12313671, -4414153, 2419140,
+-3041911, 9658308, -2079301, -14345728, -1431298, 9903658, -4357245, 1318555, 8496519, 5789616,
+-4886062, -881542, 6871411, 9259949, -4255239, 1829119, 1276142, -4430796, 1958505, -2028298,
+-661962, 1400696, -2193118, -2577517, -8946954, -9713069, -8275328, 8233989, 4540318, 5372467,
+2216203, 86973, 3229816, -7080254, -3973382, -9918690, 4889821, -1232119, -1420560, -1998234,
+-1530082, -5047661, -3059627, 1064078, -2110977, 330176, 333397, 381715, 1901597, 278636,
+2291365, -230854, 1675574, -2284386, 1272384, -3438658, 239444, -1618666, 2835215, 168041,
+-1885491, -512712, 856846, -1461363, -1740536, -4020090, -4126927, -2221572, 4079145, 308701,
+1400696, 2636036, 767725, 3193845, 1175747, -2578054, -10765336, 4109747, -11618960, 490163,
+4169876, -1830730, -8706972, -4035659, -1811403, 7796977, 6117107, -4580046, -4827007, 8310762,
+3405372, -4753455, -5216238, -3995930, -594316, 8035347, -1404991, 762357, -493921, -62277,
+10226854, 5128191, 6838662, -447750, -543313, 3579318, -5353677, -8910983, 7268696, 11795054,
+-7993471, 10144176, -3002719, -992137, -4569309, 5242545, 285615, -5630166, 3414499, 9592809,
+7448547, 3485903, -7213398, -2914672, -14570677, 2445447, 7543573, -4643934, -1197222, -5727339,
+1477469, -3398393, 5615133, -3562139, 1854889, 6763500, 3814468, 12717398, 6612639, 4318590,
+8091719, -6783901, 12158516, 3797288, 7383586, -2408940, -8419747, -12926241, -2482491, -2148021,
+-3401614, -3015604, 4803384, -8879845, 13447543, -2285996, -10909754, 6229313, 10048076, 4201015,
+1281511, 2126546, 3762391, 1302986, -2246268, 2609730, -2058363, -10737, 4214974, 8053,
+-170725, 4648229, 652298, 2557653, -395137, -2150168, 697395, 475668, -1854352, 1464047,
+1889786, 522912, -1321239, 1133871, 383863, 3600793, 790811, -635655, 2268817, -3054796,
+901943, 716723, -3343632, -4875862, -1362042, -1898912, -1249836, -2410014, -1701344, -1006096,
+-408022, -4194573, 5928666, -12702366, 9327058, 3338800, -2005750, 13963476, 10668162, -17534740,
+-11868605, 11210402, 19021874, -1669132, 2756832, -1527935, -2465848, -1808181, -845572, 4932770,
+2822331, 11640435, 2791729, 11145977, 3071975, 4914517, -1542967, -6125160, 2636573, 980863,
+-5129802, 8568997, 833761, 3511136, 1940788, -1622424, -7868380, 1149441, -8919573, -2869038,
+-10315975, -6749004, -4185446, 8784282, 1213865, 4400731, 10566693, -4435091, -901943, 1390496,
+3787624, 1296006, 246961, -2820183, 7826504, 17426292, 8301098, -13590887, -9808095, -10014790,
+11924440, -1646583, -11051488, 6618545, -6193880, -507343, -1806571, -597000, -847719, 552440,
+10464688, 17468168, 6546067, 15072651, 9560060, 5013838, 1950989, 3939559, -4779762, 16041166,
+5146445, -8121247, -11116449, 5115843, 3683471, -2849174, 7965017, 15193984, 3483219, -5579163,
+9366250, -663036, -6838662, 1641214, 5268851, 1071058, -875100, 818191, 2912525, 5281199,
+2282238, 2470143, 615791, 3532611, -1353989, -410169, -1899449, -316754, 6962679, -3426847,
+2609730, -835371, 1702418, 421444, -1787780, 1287953, 2509335, 3271691, -1369021, 1498944,
+-2728378, 192737, 1454383, -4723927, 2190970, -1402307, -6971269, 1814087, 17370996, 3103114,
+6213207, -5700496, 4579509, -8656507, -14811732, 159451, 8139500, 2203318, 6561100, 8839580,
+10069551, 398895, -10712185, -9406515, -14235669, -22440668, -259309, -2876554, 9962177, 7113540,
+-8227547, -4853850, 5890548, 11435350, -14443438, -9599789, -2682744, -8182987, -5320928, -3188476,
+4619238, 8827768, 517544, -5699959, -6635188, 8919573, -7187628, -3285650, -114354, 12637941,
+-801548, 836445, -20078436, -1743220, 5022965, 10146323, 13567802, 2680060, -12905840, 5908802,
+348429, 5878200, 8568997, 1199370, 4345970, 9517111, 17111150, -11558294, -4399657, -1231582,
+5289789, 17886392, 7699803, 5815923, 10231149, -3728569, -5924908, -11121818, -13645111, -8377871,
+-473520, 8549669, 20232518, -12832289, -9197136, -1541356, 19835232, -11329050, -6386080, -10147934,
+-1776506, -9123584, 2878702, 1435593, 4748087, 10251013, 1976222, 6471442, -4335770, -4596152,
+-5570573, 187905, -2799782, -6824166, -5857262, -3140158, -1527935, -1633698, 6698002, -5279052,
+-1498944, -2160906, 4787815, 924492, 3488587, -2537789, -2279017, 4496294, 1588601, 977642,
+-3997541, 5870147, -3117610, -456877, -2182917, 1663763, -2268280, 343061, 4035659, 4595078,
+785442, 8810589, 5194763, 12465606, -14782741, -10794327, -1532230, 21734146, 8974334, 398358,
+11963095, -7532836, 17886928, -4335233, -15487115, -3190624, -15393163, 12434467, 7636989, 4772783,
+5009543, 115964, -4875325, 5922760, 9176198, 4392141, -3076807, 7951595, 10963978, 9554155,
+-1133335, -8648990, 14818174, 3274913, -829466, -2672544, 1840930, -9820980, 9630390, -2016487,
+-2592013, -12469901, -6616397, -7781944, 17249126, 5914707, 232465, 2049236, 8933532, 12545599,
+6556805, -16738024, 15066745, -2002529, 8727374, 3472481, 13235479, -3265786, -17259862, 5182415,
+-767725, 6910603, -3051574, -7315403, 6445136, -3005403, 4374424, 21512954, -2636573, -10275709,
+56371, 2604898, -10562398, 17278654, -7804493, -10843182, 15471546, -9276592, 7884486, 777389,
+-11226508, -8242579, -11232950, 3264175, 9381282, -5873905, 5426155, 10139344, -5810017, 7070053,
+-2419140, 12043088, -4401268, 3396246, 3988951, -3668976, 14496, 197032, -5625334, -1008244,
+5065377, -8128763, -1554241, 5476620, 2910377, -110595, -4842576, 2107755, -1337882, 1651415,
+-5070746, -5158793, -2778307, 739808, 1188632, -6156836, -3718368, 5180805, 660888, 2092723,
+-6019934, 2423972, 461709, -3007014, 1122597, 534723, 1867237, -3486440, 168041, -1864553,
+-403190, -5010616, -2018098, -712428, 3131568, -1147293, -3257733, -2005750, -714038, 689342,
+547608, -1221918, -41339, -6713571, 5143760, -14874009, -2648384, 7292855, 2028835, -14554034,
+3954054, -5403069, 10606959, 2054068, 5551782, -23993298, 7436736, -14496, 9376987, 14725295,
+1043677, -2370285, 1505923, -8106751, 15644955, -15094126, 5008469, 8813273, 6573985, 8080981,
+-3652870, -7507603, -7951595, -15602542, 6248641, 1857573, 9069360, 15639587, -5829881, 13347148,
+7757785, -13760538, -7332583, -657130, 1695975, 258772, 122943, 6376416, 12089796, 10510859,
+4878546, -28257664, 7122667, 7809325, 8475581, -18776524, 11332808, -9860708, 9866614, 694711,
+5328444, -2949569, 7462506, -2681133, 23885386, 10893111, -10334765, 863825, -29477972, 4529580,
+-8521752, -9461813, 8586713, 5537287, -14695767, -30041148, 18942954, 11061688, -27533424, 10409927,
+-6043019, 10187126, -2091649, 2116345, 4586488, -137976, -18471044, -7418483, -2473364, 5509906,
+61203, -5153424, 8106751, -10424422, -3706020, 9977746, -660351, -1319629, 3856881, 1753420,
+4326106, 1453846, -5331665, 1902671, -8094403, 4776541, -3403762, 2558190, 2462090, -2615635,
+-1018981, -1898912, -2712809, 1136019, -4534412, -1156420, -3799972, -3393561, -6433861, 3052648,
+-1735167, -2161979, -3586835, 1393180, 3603478, 1832340, 2077690, 279173, 1258425, 2157147,
+107911, 2373506, 2576444, 6027450, -3139084, 9024800, -3244311, -6220187, 11126113, -8541616,
+300111, 1421634, 28242632, -4010426, 20457466, 4787815, 15460809, 772020, 4577362, 4755603,
+27245662, 26883810, -13761612, -12972949, 15693274, -19806242, 243739, 5115843, -19326280, 10948409,
+1807108, -1748589, -3318936, -6146635, 2597918, 1924682, 3908957, -12199855, 343061, -3114388,
+-15555298, 7882876, 11256036, -17834314, -12893492, -6633577, 9773198, 9069360, 9106404, -1129040,
+-3323768, 8127689, 28389734, 14990510, -5277441, -3838090, -3571265, 18818936, -14922327, 6845104,
+4292283, -23856396, -9548249, -1234803, 3495030, -20243792, 14099841, 8838506, 4304094, 3656628,
+9866077, -19176492, -2026151, -15933255, 979789, 9627706, 16748225, 9978283, -10136660, -5698885,
+-544387, 394600, -11684459, 26616450, -1841467, 3409130, -6025839, 9030706, -1749662, 5219996,
+-2135136, 3189013, 2811056, 5677410, -387621, -47245, -1888712, 1237488, -117575, -1649804,
+8195335, -2497524, -5526013, -475668, -350577, 3901978, -5633387, 1219234, -4617627, -7860864,
+5077725, -1566053, -4968741, 300111, 208843, 789737, -4332549, 6047314, 1917703, 7456600,
+-9050033, -768262, 4714801, -2480344, -7284265, -254477, 8522826, 3590056, -4947266, 5064304,
+-2439542, 12828530, 20110110, -1480690, 1387811, -12489228, 1126892, -632971, -8781598, -14897094,
+-2759517, -6944962, -11014981, -8200703, 12633646, -10726144, 9184788, -3294777, -2457795, 17489106,
+-12087112, -6877854, 2767033, 7002408, 1112933, -23343684, -14214194, 2571612, -3671123, 3684008,
+-3179887, -7388418, 14898168, 3086471, -1208496, -6178311, -33374044, 19994684, -5982890, -454193,
+-2780991, 1189169, 9652402, -5659693, -9061307, -15699179, -1409286, 6802155, -9574556, -12458090,
+5160403, 19548006, -3273839, 18173618, 13506598, -13458817, 24646670, 16164109, -16157130, -25142738,
+-7148436, -11008538, 1399086, -8028368, -1890859, 11910481, -20893406, 10172093, -3350075, -11861089,
+-13092134, -13220446, -15858630, 3226057, 9604621, -8638253, 13701483, -1865090, -7913477, -16500727,
+319975, -1928977, 6397354, 19497004, -7030862, -14929306, -5128728, 343597, 5086852, 13316009,
+3575560, -1748589, -10935524, -170725, 459562, 4898947, 2122788, -60130, 3752191, 5404680,
+-4068945, 6769406, -3905199, 3053722, 8005282, 7089918, 482110, -11305965, -4566624, 1625108,
+2811593, -7885023, 12706661, -7760469, 5830418, 6764574, -5156645, 601295, 1431298, -3047279,
+-10697690, 2203318, 4858682, 775778, 9057549, 6215355, -6099391, -5926518, -1561758, -21211770,
+38613904, 54385024, -5261872, 6642704, 3474629, 13187160, 26347476, -25144350, 288300, 4379793,
+485868, -9054865, 1347546, -11191074, 13221520, 32408212, -6848326, 717796, 1838246, 9833328,
+890669, 3825742, 12447352, -24930674, -1867237, 24507620, 25149182, -29377040, -6245420, 4254165,
+4134443, 8776229, 22136262, 6254546, 44656924, 7459822, 13779329, 6605660, -7019051, -9240085,
+-536334, -31314070, -45086420, -15237470, -14632954, -46942920, 7352447, -1090385, -26234198, -12774306,
+-43947180, -4779225, -6050535, 29981556, -29350196, 18337900, -20055350, -1605781, -13189308, -10380399,
+11783780, 26948772, -20744692, -7753490, -1881196, -6109054, -2201171, 11387569, 21583822, 23077934,
+-16444893, 46385648, 31091268, 4086662, -17579302, -38101728, -8653285, -14157823, -10411538, 2556579,
+12247636, -7963406, 4567698, 14432164, 2334315, -4522601, 14619532, 9781251, 5012764, 6461779,
+15348066, 15531139, 119722, 1316408, 6207302, 5855651, -2528662, -4559645, -2652679, 2887292,
+-382252, -1894081, 966905, -3022046, 2138357, 10157061, -436476, 3626026, 12323872, -3157338,
+-4420058, -4649302, -525597, -6774237, -1380295, 5917391, -3207267, -1795296, 1178969, 119185,
+1049046, -891206, 4846871, -3200825, -3400540, 8069707, 5644661, -6136972, -326954, -3239479,
+-1338956, -19384262, 35533340, 59230820, -13942001, -2991982, 10507637, 26533234, 8917426, -15357192,
+9636296, -13113609, 3410204, 8415988, -3176128, -17702244, 5338645, 18909130, -4704600, -26976690,
+21142514, -6163278, 17257716, -6347425, -4265977, -6624450, -10926934, -397821, 19166292, 10748156,
+3170223, 15540265, -7364795, -6105296, 5905043, -8241506, 10725607, 6294275, 16408386, 28161026,
+24640228, -17710834, -33050310, -12032351, -2084133, 25891674, -9910637, 4631049, 10417443, -10222559,
+-15241228, -24334210, -25034828, 19740206, 21006148, -16763257, -60244432, 5005785, -4258997, -8231305,
+4657892, -5981816, -24184960, -11258720, -5691369, -16769163, -7210713, 25654914, 9681930, 14795089,
+-5822902, -8369281, -5473399, 14266808, 2363306, 2684355, 12221329, 35568236, -3138011, -5213554,
+-17995376, -16977468, -24837796, -2663417, 13990319, 9579388, -10166724, 7421167, -4723391, -5892695,
+-10394358, -9415642, 8512088, -7292855, 8300025, 3918621, 4660040, -5314485, -7797513, 8704825,
+5333276, -2200634, 6519224, -9131100, 3757560, -1258962, 5349919, -3035468, -5290326, -2970507,
+-2670933, 6102612, 2946348, -314606, -6498823, -1546188, 12715251, -9218074, -341987, -8957154,
+10885595, -5970005, -2587181, -8283918, 1058173, -3577171, 1051730, 9261023, 9250823, 1882269,
+6442, -3643743, -7090454, -7795366, -988379, -12766790, -1695975, -10555419, 5692443, -14934675,
+-24370182, -5350993, -4024384, 4525822, -8276939, 18822158, -11135240, -38323992, -20713554, 13285408,
+-18001282, 21321292, 19088446, -8385387, -2826089, 2788508, -11620034, 90194, 6303402, -1632625,
+3464965, 27009976, 22555558, -5953899, -35655744, -27057220, 2094870, 18977850, -14283451, -6123550,
+-16797080, -21575232, 2071785, -6052146, -25267292, -27555436, -40414568, 16338056, 5664525, 943819,
+23439784, 31389768, -1148904, -23371602, -17701170, -18894634, -10625749, -6659347, 7212861, 12182138,
+-10741713, -17199734, -20960514, 11203422, 9904731, -20641612, -19621558, -7879118, -3349538, -12037720,
+7556458, 50834160, 30593588, 59361280, 19929186, -31523986, 37056440, -1610613, -18835580, 1832877,
+-17727478, -38924752, -16008954, 8913668, 18655190, -4403952, 17193828, 9849971, 37875704, 41193032,
+34015068, 11216307, -9435506, -6018323, -5499169, 7136625, 9680856, -14381161, -5208722, 2305861,
+30904974, -4361003, 2753611, -3428458, 11237782, 11137924, 13264470, -752693, 349503, 129386,
+2954401, -1300838, 1953136, -11329050, -3507378, -3947612, -10436234, -10982231, -4940823, 3840775,
+13117367, -8535174, 2053531, 4458713, 14892799, 19931332, 13809394, 12696997, 14358076, 3031710,
+-5276368, -11153493, -15815143, -19906100, -15502148, -9334038, -18699750, -19221052, -7318088, -3510599,
+1841467, 8356396, 35492536, -20204064, 2423435, 10290205, -4346507, -26334056, 26638998, 25226490,
+-14461155, -20158430, 2857227, 34974992, -18282602, 9899900, 22591528, 6784438, -8348343, -16852914,
+-10901701, 7693360, -2556579, 5844914, -9716290, 6465000, -21656298, 31768800, -2971044, 7077033,
+-1395328, -40217536, 12617540, -11184095, 20809116, 12399571, 22226456, -8704288, -38603168, 27733140,
+12622909, -13224741, -23991688, 19866908, 10787884, 21132312, 21505438, -18723910, 8696772, 22307524,
+-32681480, 29990682, 14898705, -1010928, 9666898, -17061220, 37749004, -4299799, 24880746, 11065446,
+43815644, -3120831, -7553237, 6099928, 17890686, 11747809, 12486544, 44095892, 2703682, 10738492,
+25913686, -17113834, 17818208, 2042794, -29250874, 10880226, -9783399, 33158222, -24348170, -29445222,
+-30478162, 26079578, 43011948, -13744432, 11033234, -50634980, 4936528, 2389076, -1818919, -23738284,
+4074313, 9978820, -7708930, -6558952, -6246493, 15980500, 7626788, -10152229, -10790568, -6335614,
+-2461016, -3208878, 4711043, -17479980, -10341744, 9230958, 3941169, 3262565, 674310, 7951058,
+-1247688, -956704, -10130754, 13709536, 17252346, -7354595, -26554710, -18046916, -78920, 9127,
+5232344, 1330903, -8292508, -13127031, -7080254, 4931160, 7823820, 21364778, 7351374, 1110249,
+481036, -15941845, -3146064, 16558710, 9915469, 3756486, -17255032, -10561325, -1842004, 2396592,
+3142306, -2857227, -3169149, -3046743, -1017370, -64887292, 3540127, -7940858, 2005750, 50253264,
+41349260, 59509456, 31411780, -15817291, -12132746, -24645596, -32875828, 11576011, 2872260, 8637716,
+10438918, -9566503, 14949707, 25380572, 4654671, -6784975, -8606578, -17961554, -11959336, -10851772,
+4950487, 8092256, -25818122, -15255724, -3569655, 17326434, -7825968, 11164231, 13845364, -36658620,
+-36141076, 6867653, 10464688, 8060043, -27282170, -12526272, -24504400, -11843909, -11222750, 23639500,
+-31056372, -43218108, -16258599, 8590471, 7347079, -33331094, -26781806, -21029770, -15944529, 18034030,
+25396678, 1160178, -8630200, -10538776, -5892159, -5612986, -11478300, -36998996, 12175695, 27821724,
+25271050, 7880191, 34517580, 46693272, -4066797, -5992016, 35743792, -8644695, -21752936, -49155900,
+-16746614, 6709276, -26980984, -18053896, 12642236, -4408784, 17529372, 30673046, -18663780, -28956670,
+-9588514, -12419972, -7188702, -7852274, -7793755, 3271691, 4451734, 3593814, 6244346, -10396505,
+9086540, -14364518, -1719061, 8947491, 11985643, -12834436, -17912162, 10271951, -4075387, 672699,
+-12499429, 14795625, -8651138, -3105798, -3437585, 13695577, -11574400, 14857366, -6580427, -6920266,
+9833864, 2600603, 7835631, -6186901, 705448, 2921115, 16018081, -1863479, 3813931, 2448668,
+42769820, 14813879, 3596498, 15415174, -17520782, 1008244, -8879845, -13342316, 8027294, 2972117,
+-10880226, -18460306, -10392747, -17144436, -13696651, 5446019, -10536629, -5333276, 8138426, -5406827,
+1950452, -6001143, 21330418, -16691854, 17512192, 6194417, 2095944, -16146393, -6771553, 12683038,
+5322538, -399969, 10357851, -1920924, -4105452, -6672232, -5405217, -4505421, 2047626, -187368,
+2279017, -18889804, 10004053, -7958038, -7237020, 6451578, 4621385, 2357937, -3422552, 13086228,
+11469173, -16542067, 14839112, -2157147, 10103911, 19757924, -4051228, 10649908, 10351408, -9970767,
+-6922414, -13256953, 1291175, 2168959, -20989506, 8614094, 3314104, 16335371, -6360310, -37526204,
+23579908, 1327682, 791348, 387621, -16413218, -5316633, -4243428, -5683853, -23972896, 13621489,
+7009387, 14697915, -10621454, 6414534, -11927661, -11082626, 614717, 9292699, 7692824, 147103,
+-1272384, -3479997, 943819, -5626407, -1027571, 15858630, -6376416, 3068754, 1843078, 4429185,
+-9685151, 10519986, -282931, -2129230, 2601140, -1165010, 2543695, 3451006, -8799314, -1337882,
+266288, -1784559, -1524713, 4756140, -5583458, 6991133, 10435160, 3777961, -6332393, -443455,
+-1237488, -6128382, 7640210, -2215666, 4224101, -21919366, -62270584, -92581776, 19445464, 72807752,
+3032784, 199248368, 183653872, 126211376, 217002144, 166987792, 22740778, 3670050, -22470732, -159005056,
+-162226288, -123272000, -212496192, -198096784, -56603372, -66004520, -66791036, 16040092, 40320616, -33024004,
+-10969346, 63917704, 40711460, -2005750, 47518444, 33067490, 2600066, 39894876, 94101120, 62035972,
+21686900, 96520800, 71417792, 5821828, 82902536, 112423992, 27103392, 12426951, 114599928, 31636730,
+-44354128, 57919244, 88340496, -44715980, 20807506, 123517888, 11934640, 20704964, 148954304, 117231672,
+10130754, 93106304, 123263952, -42315628, -25018184, 35402340, -100315400, -167685728, -113138568, -184944512,
+-275041664, -252482880, -282558368, -359865632, -379836704, -335857312, -355050464, -334266560, -250948496, -200242656,
+-104154568, -25547002, 59547036, 206740400, 240424752, 261096432, 404728192, 395810752, 265839680, 342253600,
+267487872, 106807248, 117899000, 166618432, 81725176, 53551800, 124588408, 89133992, 34897, 43069932,
+96990560, 24721294, 7309498, 72571528, 17215302, -74132208, 24845848, 59620052, -16561931, 53494356,
+141102560, 56387552, 32256278, 124423056, 68181536, -23490250, 15188615, -31150860, -147449456, -180670480,
+-179578496, -226562752, -256128768, -211626464, -203476224, -232034000, -209368912, -172856864, -199311712, -182270352,
+-122523608, -97215512, -93071408, -37611028, 23305030, 27693412, 84810568, 142653040, 149935168, 148343344,
+167416752, 154850752, 111055504, 94422168, 84240952, 58566176, 48063368, 58958628, 52546240, 35993972,
+37462316, 40967544, 34855808, 34154116, 43625592, 38706784, 27765352, 22590992, 20430622, 4173635,
+-489626, -4534949, -23651848, -31689342, -29700772, -24758876, -20713554, -12610561, -6129992, -4858682,
+-1035087, 8396661, 15714212, 20591146, 20397874, 15481746, 10465225, 3863860, 504659, 2094870,
+-646929, -7282117, -7663833, -11727408, -21264384, -23551454, -22730040, -30462056, -33054606, -29459180,
+-33467996, -40246528, -38121592, -39270496, -43537008, -39448736, -32984276, -34570192, -31143882, -21017960,
+-16655346, -15013058, -4287451, 1824824, 3566434, 10093710, 18613852, 20052666, 20989506, 25605522,
+24881820, 22650046, 25964688, 28469728, 28781112, 29753922, 31833224, 28978144, 27445914, 27710592,
+27968828, 23694798, 20343112, 14875082, 7696045, 2243584, -348429, -2251100, -4105452, -5951751,
+-6847252, -7295002, -6856379, -6018860, -4859756, -5222144, -4800700, -4476430, -4283693, -4244502,
+-3267396, -2863670, -1982127, -1400159, -297427, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
3746822,
-5185636, -3051574, 214212, 162135, -3712999, 4958003, -1981054, -1947768, 1418950, -5130339,
--2297808, 5481989, 1245541, -2247342, 3900367, 1198833, 832687, -814433, 1899986, -43487,
--6572374, -324807, -2441689, -307090, -148176, -6301254, 92342, -4056060, 214212, 621160,
-2801393, 3343095, 1101122, 818728, 609349, 2885144, -1596117, 975494, 177167, 438624,
-597537, -888521, 2583423, 3859028, -7456600, 3441880, -1957431, -4498442, -2874944, 5695127,
-2855080, -1950452, 3234647, 923955, -2059437, 1992328, 32212, -24159, 287763, 368293,
--788127, 20938, 410169, -352724, 2443300, -1551020, -3453691, -3357591, -34360, 1096290,
--225486, 134218, 1864016, -766115, 3282429, -3511136, -1055488, 2655364, 2879776, -2019172,
-3247532, 1119913, -862752, -2231773, -1039382, -970126, -896038, -902480, -453656, -155693,
--499290, -950798, 259846, 627065, -1331977, -376347, -443455, 646929, -1162862, -294742,
-139586, 2728378, 236760, -2245731, 1416266, -1228361, -1732482, 394063, -3686156, -486405,
--2755759, 934155, 1767916, 1629403, 1357210, -2946348, -179315, -2450279, 2598992, -5007395,
--2791729, 2456185, -5415417, -663036, -338229, 1337346, 1212791, 2621541, 5661304, 2551211,
--686658, -71941, -2003602, -1628330, -9951976, -9232032, -601295, 6734509, -1675037, 5366562,
-485868, 1491964, -1677722, -7774965, 3998078, 1159641, -2313914, 1838246, -4083440, -896038,
-2321967, 956704, 7238631, -5028870, 4392678, -2341831, -5695664, -2713883, -1552094, -1633698,
-2018635, 1633161, -4594005, -2119566, -2617246, -1047972, 4434017, 4662724, 5090073, -3805341,
-634581, -2414845, -310311, -2043868, -2515240, -3126199, -3427921, 1814624, 535260, -604517,
--1248225, 374736, 1923609, -2041183, -1728724, -959388, 2202245, -846109, -426276, -1044214,
--1123671, -359704, 476205, -110595, -193810, 285078, 475668, -227096, -222801, 1328219,
--1125818, -790811, 530428, -770947, 1078037, -773631, -772020, -240518, -154082, 594853,
--375810, -435939, 390842, -2684, -1130650, 266825, 238371, -933082, 3661460, -3466576,
--4581657, -3891240, 70867, -1512365, -1299765, -3069828, 631897, -3434363, -294205, -1388348,
-5291937, -3389803, -3803731, -8351564, -10936060, -2594160, -4897337, -4424890, -1106491, 2298344,
--2805688, -6495601, 4015795, -9439801, 2811593, -1550483, -1741072, 6174016, 4287988, 2310693,
-813359, -1014149, -1010391, -2263448, 959388, 4203699, -3380676, 3988414, 3615289, 1102196,
-511638, 1685238, 2764885, -6123550, -2699924, 5921686, -4582193, 427349, -114354, 3639448,
--471373, -1326071, 661425, 6143414, 3360275, 2166811, 1952063, 3443490, -5400385, 4205310,
--4409321, 3897146, 2526515, -1097364, -782221, -1787780, -2421825, -3876208, -206695, -1178432,
--3132105, -3414499, -1953136, -1967095, -354872, -186831, -952946, 4678293, -1915555, -820339,
--3149822, 3257733, 16643, -662499, 682900, -1301375, -2267743, 98247, 1282585, -104153,
--217433, -1424319, 428960, -438087, -1320703, 135291, 301721, 779000, -159988, 528281,
-412317, 1136556, 386547, -1137630, 61740, 663036, -160524, -991601, -638876, 1575179,
-804233, -774168, -344671, -277562, 2230699, -5818607, -93416, -2754685, -5258651, -2512556,
--943282, -3744138, -1206349, -3458523, -1289027, 2637647, 3655017, -6039261, -3367254, 1912334,
--1153199, -6595459, 4392678, 7744900, 1672890, -1888712, -3606162, 810138, 3803194, 6999186,
--3548717, -1547799, -4484483, -3679713, 3934190, 3857418, -5451924, 3167539, -1719061, -3557307,
-5579163, -71941, 3058017, -7654169, 555661, -4929549, 1134408, -6111202, -3768297, -1049046,
--1381906, 12560632, 4036733, 3211025, 2493229, -9460202, 5284421, 3592740, -2047089, -300111,
-4125316, -646929, 4356708, 4945655, 5011153, -2958159, 391916, -1681480, 2678986, -2437394,
--2480881, 1581085, -2329483, 1042603, 1584306, 15032, 2959233, 1091995, -5550172, -746787,
--688805, 1677722, -6295349, -2105608, -1582696, 4378183, -1336809, -817118, -3395172, -980863,
-241055, -399969, -1572495, -33823, -1015760, 1070521, 424128, -72478, 200790, 341450,
--802085, -2434710, 1260036, 439697, -1338419, 565325, -726386, 192737, 302795, 753230,
--177167, -373125, -578747, 447213, -961536, 824634, -1096827, -151934, -81604, 636192,
--725850, -382252, -1059246, -715649, -977642, -7853885, -4316442, 3153580, -3380676, 9120900,
-4070019, 8927626, -99858, -4430796, -4638028, -6342593, 9614284, -2393371, 4410395, 4844723,
-1045288, 3396246, 3157875, 2997350, 1243930, -6375879, -331786, -2495376, -919123, 4285841,
--366146, -440771, 3048890, 1855426, 3155727, -2804077, -9953587, -6008123, -3757560, 7290707,
--6617471, -2066416, 4519916, -565325, 855772, -5628018, 9678172, 467078, -3746822, 7568269,
--4671851, 11756936, 6121402, -2729989, 1381369, -3430605, -2289755, -10951630, 3870303, -5024575,
--760209, -491237, -2374043, 4599910, -1811939, -4820027, -4625143, 1011465, -4225711, -4730370,
-2669322, 344134, 3366181, -1889786, -9934259, 3364033, 4323959, 5486284, -5344550, -6088653,
-786516, 9781788, 1588064, -5164162, -2332704, -934155, 2702071, 421444, 2876554, -2970507,
--1100585, -641561, -3566434, -2990908, 4376572, -802085, 1714229, -453119, -1251983, -2859911,
--273804, 37581, 1082332, -592706, 1005022, -794569, -2276333, -981937, -323196, -124017,
--420907, 1634235, 84289, 1774895, -636192, -203474, -301185, -2081985, -21475, 970663,
-1024350, 628139, 7793218, -7162932, 3532074, 9347996, -6763500, 1925219, -3839164, -7182259,
-10679973, 4118337, 9920301, 9311489, 1272384, -7259569, -4581120, 3911642, -555125, 1687385,
--8031052, 928250, -14210436, -5844377, -11099806, 6896107, -6336688, -129386, 1959579, -1726040,
--2924336, 3443490, 3287261, 9875204, -1428614, -2070711, -7552163, -6295885, 6181532, 1443646,
-2091112, 11794517, -3599183, 183073, 6164352, -2691334, 2819109, 2247342, 6170795, 5708549,
--3937948, -503585, -7994008, 8364449, -5476084, -7058779, -6944425, 4469451, -2608119, -3668439,
-8079907, -2423972, 8378408, -5077725, -3994857, -967441, 5472325, 7270843, -588947, -7618735,
-2748779, -4828617, 10020696, 2200634, 5869610, -7982197, -3617436, 2285460, -2117419, 4996121,
-681289, -2638721, 2881386, 6586333, 9084930, 7158637, 70330, -1529545, -144955, 1643899,
-107911, -1458141, 1038308, -1207423, -255014, 2727841, 106300, -1152662, 2755222, -763967,
--1513976, 857920, 945967, 79994, -1780801, 776852, -1234803, 384936, -2411087, -2805151,
-707059, 1248762, -113280, 2422362, -853625, 1174674, 4718022, -12399571, 4350265, 3636227,
-2503966, -9381819, 7175817, 11732240, -11435887, 4339528, -7015829, 4594542, 665720, 4125853,
--3360275, -287763, 2754685, -7842611, -3831648, -3396246, 6229313, 6469832, -2087354, 3025268,
--1542430, 4775467, 6175626, 2363843, 1899986, -6237903, -2282775, -7783555, -8545374, -6035503,
-628676, -2901251, -350040, -3615826, -8506720, -2923262, 1796370, 754304, -467078, 12933220,
--10432476, 3845606, -5168457, -1532230, -3200288, -3321084, 5561446, -3305514, 476741, -3999152,
--2600066, -4853850, 6666326, -6096169, 5479842, -1429687, 5475010, -508954, 878858, -577673,
-5295158, 3010772, -91805, 11223823, 507343, -5644661, 3021510, -5078262, -6158446, -7509214,
-7353521, 2567317, 6558415, 6611566, 7828115, 4553739, -870268, -1401233, -1337346, 7461432,
--1031866, 8368207, 1852742, -365609, -1211718, 2866891, 4333622, 1109712, 1821603, 583042,
--498753, 830002, -1337882, 2248952, 172336, 1928977, -503048, 1831267, -126165, -2927557,
-1522029, 2013803, 69256, 1639067, -444529, 93952, -1620813, 1417339, -332323, 695248,
-3179350, 3192771, -13077639, -939524, 1593433, -2913599, -10316511, 11792906, -846645, 523986,
-9853729, -2688113, -10320806, 3703336, 6620692, 12789876, -899796, 5460514, 1015760, -11077794,
--3364033, -5712307, 5610838, 3340948, 2895345, -4082367, -839666, -370441, 949188, -3676492,
-5227512, 1574106, -4567698, 6663105, 856309, -7232725, -6230924, 1823214, 7870528, 7232725,
--10009421, 19568944, -1027034, 479963, 5293011, -658741, -2612951, -57445, 12450573, -6140193,
-6131603, -1387811, 8605504, 2732673, 7710003, -2823941, -6150393, 4435091, 6589554, -3161633,
--7462506, -7933342, -7145752, -3079492, -1472637, 7536594, 147640, 6571300, -805306, -1977833,
-6350646, -5422396, -10789495, -2712272, -6896644, -6316823, -11989401, 9082782, 7766912, 3359738,
--18576270, 4524748, 3893925, -1224603, -557272, -6306623, 8857296, 4711043, 3503620, 2341831,
-8137890, -532576, -586263, 780073, -84289, 2073396, 925565, 220654, 2500745, -1317481,
--330176, -1731946, 566936, 837519, 2762201, -1729798, -287226, -559420, 2136209, -782221,
-807991, 1456531, 1719061, -1265942, 4094715, 197569, -96637, -1287417, 1620276, -2335389,
-933082, 322123, -622233, 1110249, 2019172, -169114, -3582540, -1018981, -475668, -7545184,
--358093, 430034, 5530844, -7934952, 535260, -1342177, -3111704, -16325708, -1822140, 7502234,
-6043019, 7690676, 1042603, -8839043, 23117662, 9528922, 15764141, 1494112, -6710887, -2869575,
--2088428, -9892383, -483721, -3965329, 5028333, -109522, 635655, -3262028, -4043712, -8386461,
-2907693, 678068, 532576, 4122095, -226023, 1672890, -697932, -7304666, -5442261, 4202626,
-149250, 10306311, -13073344, 10427644, 6600828, -4792647, -9420474, -15036681, 3272228, 11629161,
--5900748, 11252277, -774705, -641561, 2734821, -3476239, -13110925, 1454383, 6370510, 2655901,
--5630166, -1637456, -3489661, 2792803, 6529424, -469225, 1751273, -1003949, 6288906, -2899640,
--1997697, 4080756, -3544422, 9586367, -2487860, -5058398, 3722663, -8935679, -4382478, -60130,
-3588982, -3949223, 1741609, -1523103, 2042794, -69793, 2406256, 1864553, -684510, 1059783,
--4072703, 2126009, -472983, -5769215, -1864553, -1732482, -3300146, -136902, 1072131, -2771328,
--1799054, -260382, -3486977, 120259, 996432, -915365, -3699578, 199716, 20938, -2994129,
-1251983, 1975148, -2250563, -287763, 750009, 90194, 1169842, 3200288, 2842732, -3000572,
--2234457, 3721052, 2508798, -17737142, 12673912, 11525545, 13497472, -4332012, -12140799, 4262755,
-4802847, -18053896, -16489990, 15939161, 1683090, -7770670, 5968394, -11281268, -12897787, 1835025,
-33378338, 15531139, 6144488, -9084393, 86436, -3241090, 198642, -3816079, -1925219, -4239670,
-1137093, 9514426, 1819992, 11730629, -4719096, -3898220, 2078764, 8192650, -1639604, -1194001,
--17558364, -755914, -9921911, -539018, 13482976, 9658308, -3660923, 9438728, 18736794, -8975408,
-5355824, 15568183, -11525545, 16454557, -1453846, 6758131, -3987877, 676457, -2309619, 2268280,
-3733937, 16318728, -6347425, -2081985, 4162360, -7635378, 4716411, 2502355, -4472135, -7442105,
-16004659, -1089311, -8929237, -2946348, 9888625, -4222490, 6681896, -69256, 392990, -10642392,
--11654931, -5586142, -9956271, -8938364, -9757629, -614180, -2400887, 4675609, -706522, 824634,
--981937, 5888937, 3663070, 399432, -7426536, 245887, -1475321, -5473399, -1662152, -2831457,
-2755759, 1064078, -3831111, -1273995, -2964064, -2268280, -373662, 2014877, 1885491, 2059974,
-3471407, -2235531, 340913, 2216203, -1674500, -2181844, 2516314, -3744675, -1577327, -1178432,
-1541356, 668941, 2546379, 421444, 151398, 2150168, -1123671, -2604361, 21620328, 3959960,
-2995740, -11220065, -6612102, 633508, 2428804, 4454418, 4962298, -21456582, 900333, 1418413,
-15470472, 2545305, 3881577, -1420560, 14066018, -23051090, 636192, 11890617, -13839458, 3496640,
-2623151, 11198053, 2115272, 1238024, -3861176, 408559, -11895986, 4052302, -3030100, 2141578,
-3135326, -1977833, -9044664, 3326452, -7157026, -12268574, 6869800, -6919729, 4490389, -11535208,
--7381438, -1185948, -3674345, 2801393, -5004174, 12724914, -232465, 12133819, -12859669, -10764799,
--3551401, 208843, -300648, -3725347, 10800769, 8920647, 22622666, -3619584, 14437533, -8486855,
--1548873, 4402879, -17330730, 19696184, -619549, 12270185, -577136, -17157320, -10448582, 7248831,
--23084912, 11987254, 3207804, 17489106, 21927418, 2879239, -16427713, -12339978, -5192616, 12556337,
--1634772, -3029026, 588411, -4591320, 559956, -3360275, -5058398, -1706713, -8072928, -388695,
-243203, -3693135, -3439195, -4509179, -3333968, -1549946, 1876901, 3825205, 1297617, -643708,
-3369939, -2411087, -1468879, 803696, 1716913, 2221572, -2373506, 2812667, -3053185, -1387274,
--4395362, -7454990, 4454418, 771484, -4371740, -4283693, -966905, -5930813, 651761, 27380,
--2119030, 4322348, 11087458, 16983912, 5907191, -7101192, 16158741, -17376900, -1824824, -5381057,
-2119030, 13770739, -12542378, 31110596, 4100620, 7651484, -9223442, -12652974, 4306242, 25770,
-26439282, -3884261, -9225053, -15228343, -10260140, 7289097, 4677757, 4221416, -1973001, -15002321,
--23047868, 1620813, -13923747, 18327162, 2332704, 14860587, -9325448, 6147709, -6061810, 7642358,
-21536040, -3707631, -2373506, -3386582, 5556077, 7064148, 3605625, 1457068, 2137820, 9252970,
-8340290, -4995047, -7521562, -6814503, -7536057, 24578488, 9654013, -14644765, 11068131, -3446711,
--11977590, -8666170, 4248260, 8893267, -17032230, -22228066, 2339147, -10018011, 28858960, 14894410,
--5111548, -3465502, 6003291, 12901008, 3204583, -2394444, -4000225, -20190642, -1089311, -5083094,
--21881248, 8042863, 13521631, -2410551, 6688338, 3599720, 13785234, -7865159, -2235531, 4812511,
--2356863, -6502044, -7299297, -398358, -4486094, -10810433, -2379949, -5099200, 4414690, -2276333,
--6059662, 3837017, 1409823, 359167, -3843996, 3818763, 892279, -6889128, 2086817, 2406792,
--3339874, -9483825, -4789963, -1939178, -1242856, -367220, -3736622, -719407, -2843268, 1019518,
-832687, -2080912, 154619, -411243, -3038689, -6002754, -1036698, 945430, 3041911, 1398012,
--4617090, -116501, 3068217, 1240709, 1174674, -4787815, 1394791, -2016487, -2319282, -2550137,
--2859375, 251256, -55835, -3093450, 1384590, -8476655, -13437879, 7614440, -4278861, 11682848,
-5711233, -13160854, -5178120, -6776385, 3051038, -17642652, 12058658, 16238734, -6437082, 10042707,
--2226941, -4765266, 8289287, -12424804, 7863012, 13151727, 3967476, 22850300, 11494406, -9891310,
-10153840, 3966402, 8958765, 180389, 12706124, 10573136, 16924318, 6049462, -6228240, -8019241,
--10018548, -1197759, 26097832, 336618, 11202885, -16464220, 34006476, -10217190, -26148298, -12707734,
-21575232, 1474248, -2684355, -3128884, -1279900, 15657303, -11373610, 8980777, -2088428, 19771346,
-30798674, 15503758, 14994805, -11052561, 17635672, 10286984, 10589242, 11597485, 17635672, -3813931,
--30023432, -19641422, -21735218, 5513665, 8123931, 6087580, -4828080, 10054518, 27039504, 1681480,
-2360085, 6329171, -1217623, -23666344, -24966644, -8829379, 5301601, 2502355, -790811, -14627048,
-3959423, 528281, 1478006, 7397008, -1385127, 4636954, 1940252, 9176198, -2066416, 6068789,
--4657892, 941672, 1272384, 10681584, 5277978, 10663330, 1513976, 5346161, -1647657, 1047435,
-4939213, -3173444, -6762426, 1457068, -3912715, -8118025, -5974837, -1900523, -1426466, 10406706,
-2507187, -191126, -2918967, 1490891, 351650, -3973382, -4029216, -3324842, 2690797, 6597607,
--558883, 469225, 1149441, 2877628, 2430415, 7043747, -6949794, 4421132, 11141145, 13085692,
-4728222, 6146635, 10188199, -8028905, 23695334, 9350144, 4577899, -6760816, -18182208, -7331509,
-9912785, -985695, -25766582, 34693672, -12187507, -6795712, 10684805, 527744, -3468186, 2516851,
--6741488, -8141648, -1785096, -18872624, 4660040, -20280836, 551903, -16077136, -18116708, -3628711,
--3863860, -3968013, -13258027, 5815386, 14165876, 3806415, 10842645, -18821620, 18547816, 33830920,
-3484292, -13578539, 21114596, -17328582, -27481348, 45726368, -4711043, 3251827, -3205119, -20438138,
-15749645, -18526878, 7997766, 27944130, -585189, 38378216, -29971356, 28914256, 8394514, -18976776,
--9980967, 3634079, -18278308, -9081171, 20293184, -19921132, 13201656, -13391171, 7308424, 21250962,
--46662136, -20532092, 21430814, -39996884, 14099841, 12427488, 22846004, 20262046, 9067750, -1604707,
-13387950, 20101520, -21850646, 21810918, -457414, 7565585, -1202054, 6865505, 1711008, -4111358,
-1445793, -6292127, -2136209, 1671816, -1190243, -10929618, 6841883, -1893544, 8929237, 5431523,
--7838316, 6182606, 7434052, 5507222, 2182380, 3959960, 2274722, 5034776, -15319075, 8608725,
--2081985, -4086662, 10732050, -8617315, -7163469, 3722663, -9099425, -7247758, -2958696, -6587943,
--8923868, 4964982, -13497472, -40039832, -10497974, 13196824, 30895310, -9804337, 15568720, 483184,
-7320772, 16088947, 10321343, 27824408, -7243999, 1226750, 7569343, -24559696, -15884937, -7292855,
--8019241, 5701032, 359167, 2124398, -12884365, -2084133, -17038136, -13768055, 6578816, 34343096,
-19677392, -8983461, -11041824, 16386374, 19529216, -11632919, 5109938, 15109158, -6031745, 32848446,
-11105175, 4854387, -25376278, 15653008, 3149285, 12341052, -2659659, 3209951, -4239670, -5422396,
--39979168, 10613938, 27544162, 13670344, 3632469, -741956, 13859323, -22422414, -41531796, 3115462,
-54919748, 13261785, 43555800, 41386304, 487479, 3639448, -26365194, -23529442, -2576981, -20180978,
-27474368, -59989956, 11278047, -22457310, -47996796, 10678362, 22375706, 47951164, 4236449, 2422899,
--30601642, 10004053, 14366666, -21322902, -2055142, 1537598, 22332756, -5977521, -14347875, 33927020,
-7116761, -12090870, -493921, -19597936, 2532420, -18548354, -3804804, -613643, -9132711, 2850248,
--7387344, -7761006, -4310000, -56908, -3758097, 6303402, 17521856, -966905, 157840, 6577206,
--15949898, -9585830, -1956358, 4843113, 4988605, -13821742, -7878044, 11032160, 6448357, 3863323,
-2617783, 11652783, -472983, 237297, 1166084, -7805566, 1394254, 11148124, -5698348, -10584947,
-29414620, 51126216, 1430761, 13908715, 9332964, -26996554, -7531762, 26765162, 8563091, 11755325,
--6633577, 7721815, 4678293, -9600326, 526670, 13849122, 14870787, 17920752, -7851737, -2299418,
--39681204, -37410776, 5252208, -23163832, 903017, 19931332, 4949950, 2294586, -6807523, -4549444,
-12947179, 31241056, -22654342, -13158706, -2868501, -22214644, -1510218, -21414706, -6526740, -22729504,
-20102058, -27524298, -2131915, 4844186, 13391171, 47869556, 64063732, 16468515, -16716550, -34219616,
--2910377, -23438174, -9060770, -36391256, 5532455, 34897684, 25919054, 20903606, 2629057, 4990752,
-35961760, 34726420, 25693568, -2193655, 16256451, 5866389, 8086350, -41384696, 12557411, 4469987,
--9416179, 24793772, 33907692, -4800163, -466541, -16702591, -70427264, -1468879, 20969640, -10352482,
-48935248, 34578780, -16013249, 3120831, -17864380, 12036646, 3482682, -6654515, -10644003, -5023501,
--884763, 7471096, 9554692, 14329085, 525060, -8816494, -18687402, 974421, -8748312, 7059316,
--8246337, -11592117, -2728378, -3100430, 8647380, 3441343, -3093450, 4354023, 2605435, 3427921,
-979253, -6650220, -10245644, -5395016, 4071629, 8572755, -601832, 6964827, 69256, -10550587,
--10671920, 2879776, -13091597, -7606387, 202400, -5970005, -1443646, 3587372, 5621576, -5092758,
--8760660, -12652437, 32117228, 22590454, -15025943, 15244450, 23911694, 2504503, -29519310, -35640176,
-33332704, 11114838, 7868380, 25924960, 785979, -11516955, 28208272, 7225209, -21029770, -10929081,
--7486128, 9304510, 807454, -12862890, 5138392, -14211510, -1191317, -6484327, -6621229, 18943490,
-35785668, -12233141, 7607998, 16633335, -8094403, -7274601, 7111392, 20128902, 6719477, -15654619,
--19427748, -23786602, 12955769, 13240847, 32530082, -15392626, -14235669, 11237245, 19491636, 29994440,
--589484, -55823836, -11662447, 17884780, 18196166, 7984344, -10609643, -496069, -22009024, 3272765,
--9349607, 23094576, 33498060, -10114111, 1023276, -19523310, -20777442, -8207146, -42379516, -8659191,
--21392158, 18858128, -17054242, 19567334, 24675124, -49461380, -3797825, -20964272, 21492554, -8768713,
-7800198, -15425912, 2852395, -13148506, 14926622, 16174310, 28385976, 26998702, 13769128, 25975426,
-12452721, 1490891, 14148159, 8799851, -3501472, 11533598, -12483859, 6151467, -6185827, 5318780,
--15823196, 9564892, 494458, 7563975, -11529840, -6850473, 8185671, -3180960, -3569655, 13915157,
--10558640, -2588255, 11770358, 5531918, -7141994, -2463164, 5083094, 25732222, 14332306, 11184095,
-15690589, 971200, 17025788, 5508296, 5563594, 8580808, 523986, 13808320, 4371203, -23925116,
--10611790, -6439230, -7676181, 2974265, -4665945, -11514270, -16417512, -26583700, -6292127, -14698452,
--27400280, -40860708, 19863150, 21465710, 12312061, -27240830, -37575060, -28481002, -16492674, 6924561,
--1455457, -36183488, -21942988, -24739012, 35083440, 11179263, 15161235, -10923712, -20310364, 44937168,
-10852309, 14141180, -8778913, 2830384, 13014288, -8976482, 10300942, -3122441, 21136608, 30328912,
-1123134, -24166170, -19736986, 24055574, 16172162, 21090974, 5854578, 5412196, -10975252, -4568235,
-3275986, 14780056, 31408558, -110595, -59106804, -54470924, 619549, -13196287, 35198332, 36126044,
--40185324, -26892938, -16986058, 49964428, 44231720, -23902030, 6945499, -31348430, -30488900, 18635864,
--14097693, 335544, -4790499, -21713744, 15485505, 16173773, 12632573, 50592032, -37096708, -9808095,
--3540664, 13073344, 3995393, 20893942, -73938936, -42777876, 15350750, 23302346, 22782654, 6626061,
--24464670, -24789478, 352724, 14857902, 42601780, 10497437, -14273787, 4490925, -27698244, 17256642,
-14865419, 973347, 23839752, 51328616, 12240120, -37507948, -19775104, -2581812, 4267050, 24816858,
-21452824, 10262287, -11377905, -4554276, -7853348, -8832063, 22231824, -2578054, 1998770, -8836895,
-21556978, -9989557, -4210142, -537945, 18700288, 8238821, 6620155, -3956739, -23638426, -8438537,
-7610682, 18815714, 3192235, -26186416, -36371392, -30287036, -787590, 4379793, 5537824, 3620658,
--9974525, -7541963, 49510772, -32897302, 30923228, 30684320, 19726248, -71683008, -28685550, 23968602,
--19394998, 13857175, -5036386, -29787746, 19139448, 5711233, 5763309, -13179107, -47350940, -4519380,
--1360968, 158914, -6684580, -34581468, 25924422, -21377126, 44214004, -4678293, -3768297, 21474836,
-16094853, -21116744, -1865626, -15989626, 23669564, 37119256, 28360742, -31344672, 7117835, -20981988,
-18996104, -18227304, -7379291, 3080565, -1497870, 20167018, -18444738, -43514460, 11287174, -15575699,
-16344498, 16945256, -54945516, -9359271, -10395968, 1992328, 61061552, -16452946, -44256416, -11805254,
-38851200, 18584324, -23915988, -7902203, 24144158, -118648, 29783988, -44649408, -23460186, 26838714,
--27901718, -68066640, -19958176, -9295920, 77772192, -21206938, -39999568, 21325050, -46161236, 122080688,
-11686606, -113466056, -30079266, -20056424, 80652504, 43567612, -50491636, -26745836, -525060, 59485296,
-47591460, -7427609, -37176700, 14595909, -12483859, 53643068, -5054103, -26989038, -22176526, 35128536,
--27991912, 18186502, -53733800, -278636, -1911261, -3176128, -3008088, 11288248, -29672318, 28848222,
-2558727, 21147346, 1020592, -34072512, -25972740, 19340238, 23105850, 35985920, 13623099, -3720516,
--23346906, 3089692, 6033356, -6259378, 1724966, 23567560, 3862249, -1169842, -26721140, 5125507,
-19306414, 7009924, 981400, -7924215, -19158238, -21267068, -9867150, 6493454, -6277632, 9400610,
--8863202, -5409512, 3647501, 707596, 284542, -65521872, 18358838, -1025960, 22378390, 54216984,
-17355962, 7482907, -30563524, -12655121, -30544196, -36544804, -12259447, 7208029, 20888036, 27675696,
--3111167, 16105054, 19474456, -16950626, -34417184, 18247168, 6538014, -27941984, -9515500, 26582626,
--9051107, -2954938, 24295556, 13644037, 10793790, 3403225, 13806709, -13208098, -31971736, -13880261,
-9095130, -13077102, -7565585, 11726334, 773094, -22493280, 23454816, 5086852, -20861730, 2692945,
--5044439, 20216948, 11230266, -8128226, 9474161, -12425877, -28029494, 3778498, 6806987, -2521683,
-54224, 5953899, -12251931, 3897146, -10492605, 6320045, 19977504, -2090575, 8725226, 9274445,
--7742216, 532039, -19090056, 6562173, 11240466, -34631932, 20113868, -21585432, 6805913, 1042066,
--113280, 9592273, 3855807, 22668300, 4116189, 6439767, -3283503, 11619497, -12179454, -7966091,
-2789581, 1983738, -10659572, 3879966, -964757, -3050501, -6163278, 2242510, -1227287, 12294344,
--3153043, 1509681, 8754754, -6106907, 6078453, -3743064, 2123325, -6109054, -5386963, -6100464,
--1632088, -2715493, 4616553, 3357054, -14369887, -3872987, -4209605, 10048613, -5939403, 3791919,
-1701344, -15935402, 5304822, 10435697, 665720, -3839701, 1714766, -4642323, -2385318, 3501472,
-53103512, -1974611, -1726577, -14778446, -14455249, 10877005, -608812, 9408126, 195958, -5235565,
--6985228, 3544422, -9790915, 9900973, -9221832, 14448807, -11715597, 8394514, -9916543, -2271501,
--1590749, -9306657, -7061463, 2027761, -4169340, -2984466, -68719, -7018514, 920197, -1449552,
-2214593, -1705639, 4051228, -14010183, 12690018, -4846334, -4168266, 9546102, -7732552, 437013,
--9656697, -8529268, 6137509, 5335960, -6791954, -4465692, 2716567, -525060, -11814381, 2930778,
-2057826, -101469, 7729331, -2968896, -3349001, -3278671, -8078297, -2291365, 8430484, -9092983,
-2292439, -4463545, -1131187, 469225, -2760053, 1873143, 22549, 5797132, -8618389, -856309,
-5515812, -11206643, 6429566, -5114233, 40802, 4946729, -2493766, -5177046, 2250026, -1021665,
--1488743, -502511, -3650185, -220654, 3703873, -378494, -1806034, 519691, -3174518, 2024540,
-1530619, 781147, -2576981, -900333, 3193845, -4296578, 4086662, -2047089, 1744831, 4454418,
--5604933, 1169305, 311922, -7153268, 1208496, -2390149, 2815351, -1156420, 142271, 4071629,
--2866354, 643708, -4576825, 600222, 573378, -1300838, -1165547, -721018, -1704565, 134218,
--904628, -3221, 3033858, -4752382, 1906966, -25081536, -41907068, 15437723, 134908688, 33542620,
-74461312, -3099893, -72216656, -23687282, -71062920, -61036316, -21361020, -14854681, -4823249, 40169756,
-54351200, 71464496, 90659784, 38878044, -23036594, -42120744, -88750128, -84697832, -34316788, -28434830,
--18692234, 36309652, 49912352, 29553670, 46285252, 55148452, 18859738, 14976551, 10475962, -28886876,
--13069049, -20744156, -44627932, -24908662, -33125472, -49488224, -26693758, 5906117, 5406827, 27330488,
-66918812, 45488000, 38154880, 36848672, 11532524, 2540473, -3667902, -19423990, -27302034, -34915936,
--49502720, -44076564, -24404542, -7891466, -16632798, 13653164, 25862146, 21672942, 37857452, 41861972,
-27134530, 24269786, 24041616, -3911105, -11590506, -6076305, -34097208, -28540058, -7118909, -28249074,
--29894046, -19194746, -26875220, -13300977, 7854422, 17096118, 31374200, 49896244, 31187906, 28610388,
-31982474, 11615202, -3650722, -5971615, -16962436, -28450938, -29235306, -28164784, -30578020, -21518324,
--19514720, -16485695, -6593312, 7524783, 19127100, 29263760, 44532368, 46589120, 45706504, 38570952,
-12400644, -10231149, -20601884, -33546378, -44077100, -50093816, -49730352, -39632884, -22121766, -5448703,
-13857175, 40861780, 45739792, 45540612, 47982300, 39427264, 20939576, 6495601, -11060615, -32013076,
--44484052, -39504036, -36698884, -29142426, -13357348, 1131187, 11069741, 21948894, 25113748, 24494736,
-19714974, 8796093, 4284230, 1563905, -3399467, -4204236, -3983045, -5583458, -6677064, -5368172,
--7371775, -5134097, -3984119, -2903398, -3385508, -1179505, -172872, 2091112, 2563559, 4687957,
-5692979, 6900939, 5105106, 5247377, 3579855, 2268817, -804233, -1753957, -3803194, -4087198,
--5884105, -5468030, -5403606, -3854196, -3432753, -1069984, 374199, 2193655, 3015067, 5350456,
-5149666, 5622112, 4379793, 3543885, 1340567, 1013612, -961536, -1573032, -4227322, -5602785,
--6182606, -4447439, -3918621, -1227824, 38655, 1388885, 1663226, 3213709, 3008625, 4273493,
-3606699, 3796214, 2310156, 1578937, -874563, -1637456, -3441880, -3321620, -3776350, -2857227,
--3117073, -1535988, -957778, 1004486, 1697586, 3135863, 2666638, 3160559, 1772211, 1504849,
--61203, -348966, -1237488, -654983, -1475321, -850404, -1444183, -568009, -930397, 16106,
--350577, 532576, 37044, 731218, 77846, 665720, -14496, 563178, -163209, 400506,
--289910, 349503, -307090, 331786, -312996, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+5185636, -3051574, 214212, 162135, -3712999, 4958003, -1981054, -1947768, 1418950, -5130339,
+-2297808, 5481989, 1245541, -2247342, 3900367, 1198833, 832687, -814433, 1899986, -43487,
+-6572374, -324807, -2441689, -307090, -148176, -6301254, 92342, -4056060, 214212, 621160,
+2801393, 3343095, 1101122, 818728, 609349, 2885144, -1596117, 975494, 177167, 438624,
+597537, -888521, 2583423, 3859028, -7456600, 3441880, -1957431, -4498442, -2874944, 5695127,
+2855080, -1950452, 3234647, 923955, -2059437, 1992328, 32212, -24159, 287763, 368293,
+-788127, 20938, 410169, -352724, 2443300, -1551020, -3453691, -3357591, -34360, 1096290,
+-225486, 134218, 1864016, -766115, 3282429, -3511136, -1055488, 2655364, 2879776, -2019172,
+3247532, 1119913, -862752, -2231773, -1039382, -970126, -896038, -902480, -453656, -155693,
+-499290, -950798, 259846, 627065, -1331977, -376347, -443455, 646929, -1162862, -294742,
+139586, 2728378, 236760, -2245731, 1416266, -1228361, -1732482, 394063, -3686156, -486405,
+-2755759, 934155, 1767916, 1629403, 1357210, -2946348, -179315, -2450279, 2598992, -5007395,
+-2791729, 2456185, -5415417, -663036, -338229, 1337346, 1212791, 2621541, 5661304, 2551211,
+-686658, -71941, -2003602, -1628330, -9951976, -9232032, -601295, 6734509, -1675037, 5366562,
+485868, 1491964, -1677722, -7774965, 3998078, 1159641, -2313914, 1838246, -4083440, -896038,
+2321967, 956704, 7238631, -5028870, 4392678, -2341831, -5695664, -2713883, -1552094, -1633698,
+2018635, 1633161, -4594005, -2119566, -2617246, -1047972, 4434017, 4662724, 5090073, -3805341,
+634581, -2414845, -310311, -2043868, -2515240, -3126199, -3427921, 1814624, 535260, -604517,
+-1248225, 374736, 1923609, -2041183, -1728724, -959388, 2202245, -846109, -426276, -1044214,
+-1123671, -359704, 476205, -110595, -193810, 285078, 475668, -227096, -222801, 1328219,
+-1125818, -790811, 530428, -770947, 1078037, -773631, -772020, -240518, -154082, 594853,
+-375810, -435939, 390842, -2684, -1130650, 266825, 238371, -933082, 3661460, -3466576,
+-4581657, -3891240, 70867, -1512365, -1299765, -3069828, 631897, -3434363, -294205, -1388348,
+5291937, -3389803, -3803731, -8351564, -10936060, -2594160, -4897337, -4424890, -1106491, 2298344,
+-2805688, -6495601, 4015795, -9439801, 2811593, -1550483, -1741072, 6174016, 4287988, 2310693,
+813359, -1014149, -1010391, -2263448, 959388, 4203699, -3380676, 3988414, 3615289, 1102196,
+511638, 1685238, 2764885, -6123550, -2699924, 5921686, -4582193, 427349, -114354, 3639448,
+-471373, -1326071, 661425, 6143414, 3360275, 2166811, 1952063, 3443490, -5400385, 4205310,
+-4409321, 3897146, 2526515, -1097364, -782221, -1787780, -2421825, -3876208, -206695, -1178432,
+-3132105, -3414499, -1953136, -1967095, -354872, -186831, -952946, 4678293, -1915555, -820339,
+-3149822, 3257733, 16643, -662499, 682900, -1301375, -2267743, 98247, 1282585, -104153,
+-217433, -1424319, 428960, -438087, -1320703, 135291, 301721, 779000, -159988, 528281,
+412317, 1136556, 386547, -1137630, 61740, 663036, -160524, -991601, -638876, 1575179,
+804233, -774168, -344671, -277562, 2230699, -5818607, -93416, -2754685, -5258651, -2512556,
+-943282, -3744138, -1206349, -3458523, -1289027, 2637647, 3655017, -6039261, -3367254, 1912334,
+-1153199, -6595459, 4392678, 7744900, 1672890, -1888712, -3606162, 810138, 3803194, 6999186,
+-3548717, -1547799, -4484483, -3679713, 3934190, 3857418, -5451924, 3167539, -1719061, -3557307,
+5579163, -71941, 3058017, -7654169, 555661, -4929549, 1134408, -6111202, -3768297, -1049046,
+-1381906, 12560632, 4036733, 3211025, 2493229, -9460202, 5284421, 3592740, -2047089, -300111,
+4125316, -646929, 4356708, 4945655, 5011153, -2958159, 391916, -1681480, 2678986, -2437394,
+-2480881, 1581085, -2329483, 1042603, 1584306, 15032, 2959233, 1091995, -5550172, -746787,
+-688805, 1677722, -6295349, -2105608, -1582696, 4378183, -1336809, -817118, -3395172, -980863,
+241055, -399969, -1572495, -33823, -1015760, 1070521, 424128, -72478, 200790, 341450,
+-802085, -2434710, 1260036, 439697, -1338419, 565325, -726386, 192737, 302795, 753230,
+-177167, -373125, -578747, 447213, -961536, 824634, -1096827, -151934, -81604, 636192,
+-725850, -382252, -1059246, -715649, -977642, -7853885, -4316442, 3153580, -3380676, 9120900,
+4070019, 8927626, -99858, -4430796, -4638028, -6342593, 9614284, -2393371, 4410395, 4844723,
+1045288, 3396246, 3157875, 2997350, 1243930, -6375879, -331786, -2495376, -919123, 4285841,
+-366146, -440771, 3048890, 1855426, 3155727, -2804077, -9953587, -6008123, -3757560, 7290707,
+-6617471, -2066416, 4519916, -565325, 855772, -5628018, 9678172, 467078, -3746822, 7568269,
+-4671851, 11756936, 6121402, -2729989, 1381369, -3430605, -2289755, -10951630, 3870303, -5024575,
+-760209, -491237, -2374043, 4599910, -1811939, -4820027, -4625143, 1011465, -4225711, -4730370,
+2669322, 344134, 3366181, -1889786, -9934259, 3364033, 4323959, 5486284, -5344550, -6088653,
+786516, 9781788, 1588064, -5164162, -2332704, -934155, 2702071, 421444, 2876554, -2970507,
+-1100585, -641561, -3566434, -2990908, 4376572, -802085, 1714229, -453119, -1251983, -2859911,
+-273804, 37581, 1082332, -592706, 1005022, -794569, -2276333, -981937, -323196, -124017,
+-420907, 1634235, 84289, 1774895, -636192, -203474, -301185, -2081985, -21475, 970663,
+1024350, 628139, 7793218, -7162932, 3532074, 9347996, -6763500, 1925219, -3839164, -7182259,
+10679973, 4118337, 9920301, 9311489, 1272384, -7259569, -4581120, 3911642, -555125, 1687385,
+-8031052, 928250, -14210436, -5844377, -11099806, 6896107, -6336688, -129386, 1959579, -1726040,
+-2924336, 3443490, 3287261, 9875204, -1428614, -2070711, -7552163, -6295885, 6181532, 1443646,
+2091112, 11794517, -3599183, 183073, 6164352, -2691334, 2819109, 2247342, 6170795, 5708549,
+-3937948, -503585, -7994008, 8364449, -5476084, -7058779, -6944425, 4469451, -2608119, -3668439,
+8079907, -2423972, 8378408, -5077725, -3994857, -967441, 5472325, 7270843, -588947, -7618735,
+2748779, -4828617, 10020696, 2200634, 5869610, -7982197, -3617436, 2285460, -2117419, 4996121,
+681289, -2638721, 2881386, 6586333, 9084930, 7158637, 70330, -1529545, -144955, 1643899,
+107911, -1458141, 1038308, -1207423, -255014, 2727841, 106300, -1152662, 2755222, -763967,
+-1513976, 857920, 945967, 79994, -1780801, 776852, -1234803, 384936, -2411087, -2805151,
+707059, 1248762, -113280, 2422362, -853625, 1174674, 4718022, -12399571, 4350265, 3636227,
+2503966, -9381819, 7175817, 11732240, -11435887, 4339528, -7015829, 4594542, 665720, 4125853,
+-3360275, -287763, 2754685, -7842611, -3831648, -3396246, 6229313, 6469832, -2087354, 3025268,
+-1542430, 4775467, 6175626, 2363843, 1899986, -6237903, -2282775, -7783555, -8545374, -6035503,
+628676, -2901251, -350040, -3615826, -8506720, -2923262, 1796370, 754304, -467078, 12933220,
+-10432476, 3845606, -5168457, -1532230, -3200288, -3321084, 5561446, -3305514, 476741, -3999152,
+-2600066, -4853850, 6666326, -6096169, 5479842, -1429687, 5475010, -508954, 878858, -577673,
+5295158, 3010772, -91805, 11223823, 507343, -5644661, 3021510, -5078262, -6158446, -7509214,
+7353521, 2567317, 6558415, 6611566, 7828115, 4553739, -870268, -1401233, -1337346, 7461432,
+-1031866, 8368207, 1852742, -365609, -1211718, 2866891, 4333622, 1109712, 1821603, 583042,
+-498753, 830002, -1337882, 2248952, 172336, 1928977, -503048, 1831267, -126165, -2927557,
+1522029, 2013803, 69256, 1639067, -444529, 93952, -1620813, 1417339, -332323, 695248,
+3179350, 3192771, -13077639, -939524, 1593433, -2913599, -10316511, 11792906, -846645, 523986,
+9853729, -2688113, -10320806, 3703336, 6620692, 12789876, -899796, 5460514, 1015760, -11077794,
+-3364033, -5712307, 5610838, 3340948, 2895345, -4082367, -839666, -370441, 949188, -3676492,
+5227512, 1574106, -4567698, 6663105, 856309, -7232725, -6230924, 1823214, 7870528, 7232725,
+-10009421, 19568944, -1027034, 479963, 5293011, -658741, -2612951, -57445, 12450573, -6140193,
+6131603, -1387811, 8605504, 2732673, 7710003, -2823941, -6150393, 4435091, 6589554, -3161633,
+-7462506, -7933342, -7145752, -3079492, -1472637, 7536594, 147640, 6571300, -805306, -1977833,
+6350646, -5422396, -10789495, -2712272, -6896644, -6316823, -11989401, 9082782, 7766912, 3359738,
+-18576270, 4524748, 3893925, -1224603, -557272, -6306623, 8857296, 4711043, 3503620, 2341831,
+8137890, -532576, -586263, 780073, -84289, 2073396, 925565, 220654, 2500745, -1317481,
+-330176, -1731946, 566936, 837519, 2762201, -1729798, -287226, -559420, 2136209, -782221,
+807991, 1456531, 1719061, -1265942, 4094715, 197569, -96637, -1287417, 1620276, -2335389,
+933082, 322123, -622233, 1110249, 2019172, -169114, -3582540, -1018981, -475668, -7545184,
+-358093, 430034, 5530844, -7934952, 535260, -1342177, -3111704, -16325708, -1822140, 7502234,
+6043019, 7690676, 1042603, -8839043, 23117662, 9528922, 15764141, 1494112, -6710887, -2869575,
+-2088428, -9892383, -483721, -3965329, 5028333, -109522, 635655, -3262028, -4043712, -8386461,
+2907693, 678068, 532576, 4122095, -226023, 1672890, -697932, -7304666, -5442261, 4202626,
+149250, 10306311, -13073344, 10427644, 6600828, -4792647, -9420474, -15036681, 3272228, 11629161,
+-5900748, 11252277, -774705, -641561, 2734821, -3476239, -13110925, 1454383, 6370510, 2655901,
+-5630166, -1637456, -3489661, 2792803, 6529424, -469225, 1751273, -1003949, 6288906, -2899640,
+-1997697, 4080756, -3544422, 9586367, -2487860, -5058398, 3722663, -8935679, -4382478, -60130,
+3588982, -3949223, 1741609, -1523103, 2042794, -69793, 2406256, 1864553, -684510, 1059783,
+-4072703, 2126009, -472983, -5769215, -1864553, -1732482, -3300146, -136902, 1072131, -2771328,
+-1799054, -260382, -3486977, 120259, 996432, -915365, -3699578, 199716, 20938, -2994129,
+1251983, 1975148, -2250563, -287763, 750009, 90194, 1169842, 3200288, 2842732, -3000572,
+-2234457, 3721052, 2508798, -17737142, 12673912, 11525545, 13497472, -4332012, -12140799, 4262755,
+4802847, -18053896, -16489990, 15939161, 1683090, -7770670, 5968394, -11281268, -12897787, 1835025,
+33378338, 15531139, 6144488, -9084393, 86436, -3241090, 198642, -3816079, -1925219, -4239670,
+1137093, 9514426, 1819992, 11730629, -4719096, -3898220, 2078764, 8192650, -1639604, -1194001,
+-17558364, -755914, -9921911, -539018, 13482976, 9658308, -3660923, 9438728, 18736794, -8975408,
+5355824, 15568183, -11525545, 16454557, -1453846, 6758131, -3987877, 676457, -2309619, 2268280,
+3733937, 16318728, -6347425, -2081985, 4162360, -7635378, 4716411, 2502355, -4472135, -7442105,
+16004659, -1089311, -8929237, -2946348, 9888625, -4222490, 6681896, -69256, 392990, -10642392,
+-11654931, -5586142, -9956271, -8938364, -9757629, -614180, -2400887, 4675609, -706522, 824634,
+-981937, 5888937, 3663070, 399432, -7426536, 245887, -1475321, -5473399, -1662152, -2831457,
+2755759, 1064078, -3831111, -1273995, -2964064, -2268280, -373662, 2014877, 1885491, 2059974,
+3471407, -2235531, 340913, 2216203, -1674500, -2181844, 2516314, -3744675, -1577327, -1178432,
+1541356, 668941, 2546379, 421444, 151398, 2150168, -1123671, -2604361, 21620328, 3959960,
+2995740, -11220065, -6612102, 633508, 2428804, 4454418, 4962298, -21456582, 900333, 1418413,
+15470472, 2545305, 3881577, -1420560, 14066018, -23051090, 636192, 11890617, -13839458, 3496640,
+2623151, 11198053, 2115272, 1238024, -3861176, 408559, -11895986, 4052302, -3030100, 2141578,
+3135326, -1977833, -9044664, 3326452, -7157026, -12268574, 6869800, -6919729, 4490389, -11535208,
+-7381438, -1185948, -3674345, 2801393, -5004174, 12724914, -232465, 12133819, -12859669, -10764799,
+-3551401, 208843, -300648, -3725347, 10800769, 8920647, 22622666, -3619584, 14437533, -8486855,
+-1548873, 4402879, -17330730, 19696184, -619549, 12270185, -577136, -17157320, -10448582, 7248831,
+-23084912, 11987254, 3207804, 17489106, 21927418, 2879239, -16427713, -12339978, -5192616, 12556337,
+-1634772, -3029026, 588411, -4591320, 559956, -3360275, -5058398, -1706713, -8072928, -388695,
+243203, -3693135, -3439195, -4509179, -3333968, -1549946, 1876901, 3825205, 1297617, -643708,
+3369939, -2411087, -1468879, 803696, 1716913, 2221572, -2373506, 2812667, -3053185, -1387274,
+-4395362, -7454990, 4454418, 771484, -4371740, -4283693, -966905, -5930813, 651761, 27380,
+-2119030, 4322348, 11087458, 16983912, 5907191, -7101192, 16158741, -17376900, -1824824, -5381057,
+2119030, 13770739, -12542378, 31110596, 4100620, 7651484, -9223442, -12652974, 4306242, 25770,
+26439282, -3884261, -9225053, -15228343, -10260140, 7289097, 4677757, 4221416, -1973001, -15002321,
+-23047868, 1620813, -13923747, 18327162, 2332704, 14860587, -9325448, 6147709, -6061810, 7642358,
+21536040, -3707631, -2373506, -3386582, 5556077, 7064148, 3605625, 1457068, 2137820, 9252970,
+8340290, -4995047, -7521562, -6814503, -7536057, 24578488, 9654013, -14644765, 11068131, -3446711,
+-11977590, -8666170, 4248260, 8893267, -17032230, -22228066, 2339147, -10018011, 28858960, 14894410,
+-5111548, -3465502, 6003291, 12901008, 3204583, -2394444, -4000225, -20190642, -1089311, -5083094,
+-21881248, 8042863, 13521631, -2410551, 6688338, 3599720, 13785234, -7865159, -2235531, 4812511,
+-2356863, -6502044, -7299297, -398358, -4486094, -10810433, -2379949, -5099200, 4414690, -2276333,
+-6059662, 3837017, 1409823, 359167, -3843996, 3818763, 892279, -6889128, 2086817, 2406792,
+-3339874, -9483825, -4789963, -1939178, -1242856, -367220, -3736622, -719407, -2843268, 1019518,
+832687, -2080912, 154619, -411243, -3038689, -6002754, -1036698, 945430, 3041911, 1398012,
+-4617090, -116501, 3068217, 1240709, 1174674, -4787815, 1394791, -2016487, -2319282, -2550137,
+-2859375, 251256, -55835, -3093450, 1384590, -8476655, -13437879, 7614440, -4278861, 11682848,
+5711233, -13160854, -5178120, -6776385, 3051038, -17642652, 12058658, 16238734, -6437082, 10042707,
+-2226941, -4765266, 8289287, -12424804, 7863012, 13151727, 3967476, 22850300, 11494406, -9891310,
+10153840, 3966402, 8958765, 180389, 12706124, 10573136, 16924318, 6049462, -6228240, -8019241,
+-10018548, -1197759, 26097832, 336618, 11202885, -16464220, 34006476, -10217190, -26148298, -12707734,
+21575232, 1474248, -2684355, -3128884, -1279900, 15657303, -11373610, 8980777, -2088428, 19771346,
+30798674, 15503758, 14994805, -11052561, 17635672, 10286984, 10589242, 11597485, 17635672, -3813931,
+-30023432, -19641422, -21735218, 5513665, 8123931, 6087580, -4828080, 10054518, 27039504, 1681480,
+2360085, 6329171, -1217623, -23666344, -24966644, -8829379, 5301601, 2502355, -790811, -14627048,
+3959423, 528281, 1478006, 7397008, -1385127, 4636954, 1940252, 9176198, -2066416, 6068789,
+-4657892, 941672, 1272384, 10681584, 5277978, 10663330, 1513976, 5346161, -1647657, 1047435,
+4939213, -3173444, -6762426, 1457068, -3912715, -8118025, -5974837, -1900523, -1426466, 10406706,
+2507187, -191126, -2918967, 1490891, 351650, -3973382, -4029216, -3324842, 2690797, 6597607,
+-558883, 469225, 1149441, 2877628, 2430415, 7043747, -6949794, 4421132, 11141145, 13085692,
+4728222, 6146635, 10188199, -8028905, 23695334, 9350144, 4577899, -6760816, -18182208, -7331509,
+9912785, -985695, -25766582, 34693672, -12187507, -6795712, 10684805, 527744, -3468186, 2516851,
+-6741488, -8141648, -1785096, -18872624, 4660040, -20280836, 551903, -16077136, -18116708, -3628711,
+-3863860, -3968013, -13258027, 5815386, 14165876, 3806415, 10842645, -18821620, 18547816, 33830920,
+3484292, -13578539, 21114596, -17328582, -27481348, 45726368, -4711043, 3251827, -3205119, -20438138,
+15749645, -18526878, 7997766, 27944130, -585189, 38378216, -29971356, 28914256, 8394514, -18976776,
+-9980967, 3634079, -18278308, -9081171, 20293184, -19921132, 13201656, -13391171, 7308424, 21250962,
+-46662136, -20532092, 21430814, -39996884, 14099841, 12427488, 22846004, 20262046, 9067750, -1604707,
+13387950, 20101520, -21850646, 21810918, -457414, 7565585, -1202054, 6865505, 1711008, -4111358,
+1445793, -6292127, -2136209, 1671816, -1190243, -10929618, 6841883, -1893544, 8929237, 5431523,
+-7838316, 6182606, 7434052, 5507222, 2182380, 3959960, 2274722, 5034776, -15319075, 8608725,
+-2081985, -4086662, 10732050, -8617315, -7163469, 3722663, -9099425, -7247758, -2958696, -6587943,
+-8923868, 4964982, -13497472, -40039832, -10497974, 13196824, 30895310, -9804337, 15568720, 483184,
+7320772, 16088947, 10321343, 27824408, -7243999, 1226750, 7569343, -24559696, -15884937, -7292855,
+-8019241, 5701032, 359167, 2124398, -12884365, -2084133, -17038136, -13768055, 6578816, 34343096,
+19677392, -8983461, -11041824, 16386374, 19529216, -11632919, 5109938, 15109158, -6031745, 32848446,
+11105175, 4854387, -25376278, 15653008, 3149285, 12341052, -2659659, 3209951, -4239670, -5422396,
+-39979168, 10613938, 27544162, 13670344, 3632469, -741956, 13859323, -22422414, -41531796, 3115462,
+54919748, 13261785, 43555800, 41386304, 487479, 3639448, -26365194, -23529442, -2576981, -20180978,
+27474368, -59989956, 11278047, -22457310, -47996796, 10678362, 22375706, 47951164, 4236449, 2422899,
+-30601642, 10004053, 14366666, -21322902, -2055142, 1537598, 22332756, -5977521, -14347875, 33927020,
+7116761, -12090870, -493921, -19597936, 2532420, -18548354, -3804804, -613643, -9132711, 2850248,
+-7387344, -7761006, -4310000, -56908, -3758097, 6303402, 17521856, -966905, 157840, 6577206,
+-15949898, -9585830, -1956358, 4843113, 4988605, -13821742, -7878044, 11032160, 6448357, 3863323,
+2617783, 11652783, -472983, 237297, 1166084, -7805566, 1394254, 11148124, -5698348, -10584947,
+29414620, 51126216, 1430761, 13908715, 9332964, -26996554, -7531762, 26765162, 8563091, 11755325,
+-6633577, 7721815, 4678293, -9600326, 526670, 13849122, 14870787, 17920752, -7851737, -2299418,
+-39681204, -37410776, 5252208, -23163832, 903017, 19931332, 4949950, 2294586, -6807523, -4549444,
+12947179, 31241056, -22654342, -13158706, -2868501, -22214644, -1510218, -21414706, -6526740, -22729504,
+20102058, -27524298, -2131915, 4844186, 13391171, 47869556, 64063732, 16468515, -16716550, -34219616,
+-2910377, -23438174, -9060770, -36391256, 5532455, 34897684, 25919054, 20903606, 2629057, 4990752,
+35961760, 34726420, 25693568, -2193655, 16256451, 5866389, 8086350, -41384696, 12557411, 4469987,
+-9416179, 24793772, 33907692, -4800163, -466541, -16702591, -70427264, -1468879, 20969640, -10352482,
+48935248, 34578780, -16013249, 3120831, -17864380, 12036646, 3482682, -6654515, -10644003, -5023501,
+-884763, 7471096, 9554692, 14329085, 525060, -8816494, -18687402, 974421, -8748312, 7059316,
+-8246337, -11592117, -2728378, -3100430, 8647380, 3441343, -3093450, 4354023, 2605435, 3427921,
+979253, -6650220, -10245644, -5395016, 4071629, 8572755, -601832, 6964827, 69256, -10550587,
+-10671920, 2879776, -13091597, -7606387, 202400, -5970005, -1443646, 3587372, 5621576, -5092758,
+-8760660, -12652437, 32117228, 22590454, -15025943, 15244450, 23911694, 2504503, -29519310, -35640176,
+33332704, 11114838, 7868380, 25924960, 785979, -11516955, 28208272, 7225209, -21029770, -10929081,
+-7486128, 9304510, 807454, -12862890, 5138392, -14211510, -1191317, -6484327, -6621229, 18943490,
+35785668, -12233141, 7607998, 16633335, -8094403, -7274601, 7111392, 20128902, 6719477, -15654619,
+-19427748, -23786602, 12955769, 13240847, 32530082, -15392626, -14235669, 11237245, 19491636, 29994440,
+-589484, -55823836, -11662447, 17884780, 18196166, 7984344, -10609643, -496069, -22009024, 3272765,
+-9349607, 23094576, 33498060, -10114111, 1023276, -19523310, -20777442, -8207146, -42379516, -8659191,
+-21392158, 18858128, -17054242, 19567334, 24675124, -49461380, -3797825, -20964272, 21492554, -8768713,
+7800198, -15425912, 2852395, -13148506, 14926622, 16174310, 28385976, 26998702, 13769128, 25975426,
+12452721, 1490891, 14148159, 8799851, -3501472, 11533598, -12483859, 6151467, -6185827, 5318780,
+-15823196, 9564892, 494458, 7563975, -11529840, -6850473, 8185671, -3180960, -3569655, 13915157,
+-10558640, -2588255, 11770358, 5531918, -7141994, -2463164, 5083094, 25732222, 14332306, 11184095,
+15690589, 971200, 17025788, 5508296, 5563594, 8580808, 523986, 13808320, 4371203, -23925116,
+-10611790, -6439230, -7676181, 2974265, -4665945, -11514270, -16417512, -26583700, -6292127, -14698452,
+-27400280, -40860708, 19863150, 21465710, 12312061, -27240830, -37575060, -28481002, -16492674, 6924561,
+-1455457, -36183488, -21942988, -24739012, 35083440, 11179263, 15161235, -10923712, -20310364, 44937168,
+10852309, 14141180, -8778913, 2830384, 13014288, -8976482, 10300942, -3122441, 21136608, 30328912,
+1123134, -24166170, -19736986, 24055574, 16172162, 21090974, 5854578, 5412196, -10975252, -4568235,
+3275986, 14780056, 31408558, -110595, -59106804, -54470924, 619549, -13196287, 35198332, 36126044,
+-40185324, -26892938, -16986058, 49964428, 44231720, -23902030, 6945499, -31348430, -30488900, 18635864,
+-14097693, 335544, -4790499, -21713744, 15485505, 16173773, 12632573, 50592032, -37096708, -9808095,
+-3540664, 13073344, 3995393, 20893942, -73938936, -42777876, 15350750, 23302346, 22782654, 6626061,
+-24464670, -24789478, 352724, 14857902, 42601780, 10497437, -14273787, 4490925, -27698244, 17256642,
+14865419, 973347, 23839752, 51328616, 12240120, -37507948, -19775104, -2581812, 4267050, 24816858,
+21452824, 10262287, -11377905, -4554276, -7853348, -8832063, 22231824, -2578054, 1998770, -8836895,
+21556978, -9989557, -4210142, -537945, 18700288, 8238821, 6620155, -3956739, -23638426, -8438537,
+7610682, 18815714, 3192235, -26186416, -36371392, -30287036, -787590, 4379793, 5537824, 3620658,
+-9974525, -7541963, 49510772, -32897302, 30923228, 30684320, 19726248, -71683008, -28685550, 23968602,
+-19394998, 13857175, -5036386, -29787746, 19139448, 5711233, 5763309, -13179107, -47350940, -4519380,
+-1360968, 158914, -6684580, -34581468, 25924422, -21377126, 44214004, -4678293, -3768297, 21474836,
+16094853, -21116744, -1865626, -15989626, 23669564, 37119256, 28360742, -31344672, 7117835, -20981988,
+18996104, -18227304, -7379291, 3080565, -1497870, 20167018, -18444738, -43514460, 11287174, -15575699,
+16344498, 16945256, -54945516, -9359271, -10395968, 1992328, 61061552, -16452946, -44256416, -11805254,
+38851200, 18584324, -23915988, -7902203, 24144158, -118648, 29783988, -44649408, -23460186, 26838714,
+-27901718, -68066640, -19958176, -9295920, 77772192, -21206938, -39999568, 21325050, -46161236, 122080688,
+11686606, -113466056, -30079266, -20056424, 80652504, 43567612, -50491636, -26745836, -525060, 59485296,
+47591460, -7427609, -37176700, 14595909, -12483859, 53643068, -5054103, -26989038, -22176526, 35128536,
+-27991912, 18186502, -53733800, -278636, -1911261, -3176128, -3008088, 11288248, -29672318, 28848222,
+2558727, 21147346, 1020592, -34072512, -25972740, 19340238, 23105850, 35985920, 13623099, -3720516,
+-23346906, 3089692, 6033356, -6259378, 1724966, 23567560, 3862249, -1169842, -26721140, 5125507,
+19306414, 7009924, 981400, -7924215, -19158238, -21267068, -9867150, 6493454, -6277632, 9400610,
+-8863202, -5409512, 3647501, 707596, 284542, -65521872, 18358838, -1025960, 22378390, 54216984,
+17355962, 7482907, -30563524, -12655121, -30544196, -36544804, -12259447, 7208029, 20888036, 27675696,
+-3111167, 16105054, 19474456, -16950626, -34417184, 18247168, 6538014, -27941984, -9515500, 26582626,
+-9051107, -2954938, 24295556, 13644037, 10793790, 3403225, 13806709, -13208098, -31971736, -13880261,
+9095130, -13077102, -7565585, 11726334, 773094, -22493280, 23454816, 5086852, -20861730, 2692945,
+-5044439, 20216948, 11230266, -8128226, 9474161, -12425877, -28029494, 3778498, 6806987, -2521683,
+54224, 5953899, -12251931, 3897146, -10492605, 6320045, 19977504, -2090575, 8725226, 9274445,
+-7742216, 532039, -19090056, 6562173, 11240466, -34631932, 20113868, -21585432, 6805913, 1042066,
+-113280, 9592273, 3855807, 22668300, 4116189, 6439767, -3283503, 11619497, -12179454, -7966091,
+2789581, 1983738, -10659572, 3879966, -964757, -3050501, -6163278, 2242510, -1227287, 12294344,
+-3153043, 1509681, 8754754, -6106907, 6078453, -3743064, 2123325, -6109054, -5386963, -6100464,
+-1632088, -2715493, 4616553, 3357054, -14369887, -3872987, -4209605, 10048613, -5939403, 3791919,
+1701344, -15935402, 5304822, 10435697, 665720, -3839701, 1714766, -4642323, -2385318, 3501472,
+53103512, -1974611, -1726577, -14778446, -14455249, 10877005, -608812, 9408126, 195958, -5235565,
+-6985228, 3544422, -9790915, 9900973, -9221832, 14448807, -11715597, 8394514, -9916543, -2271501,
+-1590749, -9306657, -7061463, 2027761, -4169340, -2984466, -68719, -7018514, 920197, -1449552,
+2214593, -1705639, 4051228, -14010183, 12690018, -4846334, -4168266, 9546102, -7732552, 437013,
+-9656697, -8529268, 6137509, 5335960, -6791954, -4465692, 2716567, -525060, -11814381, 2930778,
+2057826, -101469, 7729331, -2968896, -3349001, -3278671, -8078297, -2291365, 8430484, -9092983,
+2292439, -4463545, -1131187, 469225, -2760053, 1873143, 22549, 5797132, -8618389, -856309,
+5515812, -11206643, 6429566, -5114233, 40802, 4946729, -2493766, -5177046, 2250026, -1021665,
+-1488743, -502511, -3650185, -220654, 3703873, -378494, -1806034, 519691, -3174518, 2024540,
+1530619, 781147, -2576981, -900333, 3193845, -4296578, 4086662, -2047089, 1744831, 4454418,
+-5604933, 1169305, 311922, -7153268, 1208496, -2390149, 2815351, -1156420, 142271, 4071629,
+-2866354, 643708, -4576825, 600222, 573378, -1300838, -1165547, -721018, -1704565, 134218,
+-904628, -3221, 3033858, -4752382, 1906966, -25081536, -41907068, 15437723, 134908688, 33542620,
+74461312, -3099893, -72216656, -23687282, -71062920, -61036316, -21361020, -14854681, -4823249, 40169756,
+54351200, 71464496, 90659784, 38878044, -23036594, -42120744, -88750128, -84697832, -34316788, -28434830,
+-18692234, 36309652, 49912352, 29553670, 46285252, 55148452, 18859738, 14976551, 10475962, -28886876,
+-13069049, -20744156, -44627932, -24908662, -33125472, -49488224, -26693758, 5906117, 5406827, 27330488,
+66918812, 45488000, 38154880, 36848672, 11532524, 2540473, -3667902, -19423990, -27302034, -34915936,
+-49502720, -44076564, -24404542, -7891466, -16632798, 13653164, 25862146, 21672942, 37857452, 41861972,
+27134530, 24269786, 24041616, -3911105, -11590506, -6076305, -34097208, -28540058, -7118909, -28249074,
+-29894046, -19194746, -26875220, -13300977, 7854422, 17096118, 31374200, 49896244, 31187906, 28610388,
+31982474, 11615202, -3650722, -5971615, -16962436, -28450938, -29235306, -28164784, -30578020, -21518324,
+-19514720, -16485695, -6593312, 7524783, 19127100, 29263760, 44532368, 46589120, 45706504, 38570952,
+12400644, -10231149, -20601884, -33546378, -44077100, -50093816, -49730352, -39632884, -22121766, -5448703,
+13857175, 40861780, 45739792, 45540612, 47982300, 39427264, 20939576, 6495601, -11060615, -32013076,
+-44484052, -39504036, -36698884, -29142426, -13357348, 1131187, 11069741, 21948894, 25113748, 24494736,
+19714974, 8796093, 4284230, 1563905, -3399467, -4204236, -3983045, -5583458, -6677064, -5368172,
+-7371775, -5134097, -3984119, -2903398, -3385508, -1179505, -172872, 2091112, 2563559, 4687957,
+5692979, 6900939, 5105106, 5247377, 3579855, 2268817, -804233, -1753957, -3803194, -4087198,
+-5884105, -5468030, -5403606, -3854196, -3432753, -1069984, 374199, 2193655, 3015067, 5350456,
+5149666, 5622112, 4379793, 3543885, 1340567, 1013612, -961536, -1573032, -4227322, -5602785,
+-6182606, -4447439, -3918621, -1227824, 38655, 1388885, 1663226, 3213709, 3008625, 4273493,
+3606699, 3796214, 2310156, 1578937, -874563, -1637456, -3441880, -3321620, -3776350, -2857227,
+-3117073, -1535988, -957778, 1004486, 1697586, 3135863, 2666638, 3160559, 1772211, 1504849,
+-61203, -348966, -1237488, -654983, -1475321, -850404, -1444183, -568009, -930397, 16106,
+-350577, 532576, 37044, 731218, 77846, 665720, -14496, 563178, -163209, 400506,
+-289910, 349503, -307090, 331786, -312996, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
3051038,
-3178813, -2868501, -430034, 4394826, 1531693, -2373506, 547071, -2615098, -2204392, -1890859,
--3933116, -1454383, 2503966, -261993, 1416266, -739808, -1068373, -1173600, -419833, 3295851,
--2057826, 144418, -85899, 82141, 2733210, -153008, 1901060, 5783711, 4626754, 4521527,
-2442763, 976568, -674847, -5471789, 2285460, -2082522, 3533684, 1166084, -1770063, 1568200,
--2348810, -4751308, -1379221, -1875827, -4373351, 125091, -479963, -698469, -2014340, 218506,
-4698158, 1990181, 3213709, -112743, 2001455, -1874753, -65498, 2359011, -1936493, 1559073,
--2416456, -2704756, 333934, 5390184, 3658239, 2029909, -996432, 847719, 650151, 251792,
--919123, -2158221, -3137474, -2386391, 137439, -2052458, -929324, -2204929, 774168, 262530,
-1172526, -695785, 976031, 1224066, 1124208, 74088, 729608, -556735, -469225, -81604,
--1268626, 1340567, 1218160, -199716, 1521492, 364535, 357019, -723165, -351114, -906238,
-343597, 405874, 48318, -331249, 566936, -388695, -1173600, -416075, -764504, -116501,
-306016, 238908, -1232656, 164819, 887448, 1994476, 1034550, -3459596, 8165807, -180926,
-499827, -868657, -4301947, 3180960, -2240362, -2157147, -5013301, -3872987, -1619203, 3114388,
-4491462, -909996, 2660732, -1034013, 4873178, 5044976, -10065793, 1843615, 57982, -988379,
-3419868, 5361730, -1643362, -782221, 120259, -329639, -2547989, 2108829, -2568391, -2038499,
--195421, 2688650, -1505923, -5665599, -2504503, -3850438, 466541, 345208, -5014911, -594853,
--2179159, 1046898, -132607, -756451, 1254667, -1673427, 1725503, -2692945, 2665027, 3876745,
-5967320, 2474438, -2577517, 2136209, 2517388, -929324, -6709813, 445066, 3529390, -2698850,
-2046552, -3897146, -18790, -2484102, -6813429, -2076617, -3549791, 1741072, 2570538, -2299955,
-1118839, -1076426, 3258270, 261993, 1921998, 2713883, -1120987, 1125818, 581431, 1151588,
-2362769, -535797, 823023, 2920578, 1691143, 401579, 1775432, 320512, 790274, -112743,
-537, -1572495, 884226, 1008244, 1362578, 910533, 340376, 433792, 86973, 511101,
--162135, -434329, -76773, 1080184, 950262, 286152, 857383, 200253, 985695, 811749,
-6718403, 1789391, -9036611, 3184718, 4697621, 1662689, -746787, 2328946, -5661841, 767189,
-2570001, -1315871, 2487323, -426812, 3022046, 681289, -3806415, 2381559, 3562675, 3439732,
--966905, 1624571, 1946157, 1283122, -10230075, 1407139, -4327180, -1329829, -1407139, 2365453,
-1159641, -8420283, -2972117, -1912871, -1543504, 3377455, -3073586, -5900748, 1497870, 2689187,
-1745904, -5869610, -2694555, 1841467, -5459441, -474057, -6037651, 866510, 3040300, -3148748,
--895501, 3459059, 4493073, -10377178, -710280, -2899640, 3191698, 1261110, 572841, 873489,
--2857227, 2615635, 2338610, -8059506, 6234682, -847182, 1579474, -4119948, -1655710, -3486440,
--372052, 887985, -3157875, -4482872, 4027606, -1453846, 1696512, -234076, -745177, 1138703,
-1409823, -1640141, -4069482, 2292976, 2150168, 523986, 1032940, -135828, 377420, 685047,
-33286, 683974, 546535, -95026, 1656247, 226023, 1285269, 1449015, 150324, 2043331,
-12885, 403190, 619012, 920197, 804233, 1022739, -1457068, 701690, -622770, 318364,
-748935, 507343, 1272921, -399969, -289373, 914291, 1717987, -4269735, -4184909, -3311420,
--2248416, 6873559, -2459406, 1014686, -5600101, 5934034, 302258, -3870303, -1131187, 3476239,
--7144141, 2486249, -2170032, 1682017, 1052267, -3138547, -2379412, -8301098, -2345589, -9359807,
-1138703, 2224256, -1099512, -1191853, -948651, 1522029, -3784403, -6643241, -3215857, -2383707,
--1124208, 2570001, -1635846, 4108673, 1698660, 3171833, -4258997, -138513, -289910, -3395172,
-887448, 2850785, -354872, -1643362, -4175782, -3687766, 2469069, 3913789, -204548, 7653095,
-5909338, -5309117, -1457605, 115427, -5789079, -6430103, 9792525, -58519, 191663, 3199214,
--6352794, -1960116, -4143033, 9853192, 2556043, 611496, -7841000, -6058588, 751082, -2434173,
-4960687, -2478196, -132607, 1489280, -3123515, 1214402, 2964601, -4457639, -25233, -7173133,
-719944, 2853469, -2179159, 1176821, 801011, 3685082, -586263, 688805, -779000, -22012,
-1473174, 1705639, 1411971, -981937, 402116, 47782, 594853, 170188, 581968, -941672,
-2228551, 143881, 588947, 472983, 656593, 666257, 595390, -485331, -664109, -389768,
-439160, 1673427, 1750736, 455267, 758062, -1364726, -610422, -11350525, 5664525, 3270081,
-5777268, -3077881, 3151969, 3374234, 5939403, 1459215, -11402064, 2885681, 459562, 4566087,
-8223252, 481036, 3555159, 3187940, -6838125, 2440615, 602906, 992137, -1877975, -896574,
-4199405, 2850785, 146029, -4114579, -75699, -1935957, -2181307, 6864969, 3123515, -231928,
--935766, -8177618, -7084549, -8031589, 2129230, 2241973, -8404177, 651761, 546535, -8249022,
-501974, 1341104, -1130650, 9606768, -1196685, -4632659, -1199907, 5543729, -472446, -8443906,
-9224516, 4850629, -5898064, 4561256, 878858, 928250, -169114, 583042, -2299418, -4205847,
--4057134, 7454453, -505196, -2090575, -357019, 5381594, -4935455, -8625368, 299574, 2050310,
-1619203, -7529078, -3947075, 2998424, -693637, 4321811, 1610076, -1275605, -1278827, -1086090,
--611496, 224412, 6746320, 4012573, 2435783, 2239289, 2604898, 4011500, -1882806, -547071,
--2132988, -566936, 746251, 277562, -1180042, -1817308, 1984812, 388695, 895501, 54761,
--1212255, 522912, 1051193, -2312303, -404264, 2014340, 420370, 206695, -876710, -170188,
--566936, -946503, 265751, 1073205, 787590, -603443, 804233, 170188, 3456375, 13121125,
-3940096, 10517301, -11575474, 416075, -5703717, 155156, 3873524, 4409858, -5938329, 2572686,
--3431142, -3087545, -4122095, -6769406, -968515, -15902116, -131533, 5206574, -680215, -1114544,
-1764158, -8360691, 2949569, -7975218, -2487860, 8141111, 1675037, 2785823, 212064, 2369748,
-6991133, 6271726, 12167642, 6273337, -9171366, -804770, 10252624, -1472637, -7474317, -1178969,
-965831, -3463354, 6874095, 5042292, -5876589, -1762547, 6592775, 6959458, -2477659, -4491462,
-11112691, -4615479, -14944876, -10151692, 3311957, -15090904, -285078, -4547834, 88584, -1439888,
--4191888, 5593658, 1626182, -1516124, -4904853, 4260071, -2932926, 7934952, 5465883, -2225330,
--5276904, 1090922, 2100239, 697395, 312459, 1840930, -1088774, -5912560, -1686848, 8121783,
--933082, -3368865, -870805, -1763084, -4209605, -4148402, -2262374, -2018098, 496606, -85899,
-4103841, -405338, -1464047, 525597, 1474784, -1031866, 865436, -1457068, 2792803, -139050,
-1719061, 205085, -2665564, -322123, -280247, -2862596, -748398, -1762547, 1290101, 31675,
--423591, 913217, 443455, -334471, 511101, -3197603, 692564, 872415, -12783970, 6045704,
--1086627, 3218541, 4296578, 6913287, 1601486, -6115497, 8329552, -3102040, 3732327, -3722126,
-3117073, -578210, -15025943, -3136937, -2534031, -1788317, 1076426, -3634079, -2444373, 2000381,
-3351685, 1126892, 8185134, 3742527, -7825968, -593242, 61203, -4445291, 9410273, -5614059,
--5370857, 9848897, 10430328, -1302986, -77846, -6476811, 2375117, 1394791, -3329137, 1713692,
-6475737, 3962644, 7778723, -1935420, -6032819, 3768297, 945430, 1847373, -7199439, -3762928,
--4213363, 1695438, 4185446, 1505923, 1149978, 7421704, 8949638, 1318018, -4194573, 5058935,
-4193499, -6293201, 915902, 1076426, -679679, 719944, -105227, 5305359, -543850, -4169340,
-2156074, 6997576, 3154117, 4101694, 8725763, -5941014, 1094680, -2033130, 8281234, 4705674,
-8866423, -4269735, -1095217, 1450088, -3104725, 440234, 903017, -1022202, 41339, 2026151,
-2396055, -907849, 1323924, 895501, 3097208, 2680597, -331249, -251792, -1346472, 367757,
--1357210, 707059, -2413772, 2397129, -10201, -964757, -6979, -231928, 126702, -889595,
--1874753, 2666638, -308701, 417686, -2983392, -2500745, -637803, 2558190, -248034, -308164,
-279173, -331786, 5341866, -11116986, -6671695, 4438849, -2615635, -10383620, 5277978, -5427765,
--4759898, 6718403, -2044404, -2208687, -1673964, 1741609, 4956929, 2590402, 2662343, 2759517,
--4146791, -2462090, -872415, 6053757, 3102040, -10612327, 3373160, 3324305, -4465156, 10006200,
-9160092, 4946192, 345208, -3618510, -2362232, 549219, -3126736, -3724811, -6164352, 906775,
--7037304, 5113696, 1950989, 75162, 1102733, 2704756, 2319819, 5473399, 8512088, -3216931,
--13509283, -2340757, -9203041, 3181497, 1264868, -12210055, 4427038, -5118528, 15341623, 5107253,
--9675488, -318901, 9758703, 5104032, -8012262, -4755603, 10209674, 5879274, -7100118, 8739185,
--7286949, -9590125, 1480153, -14526653, 8769249, 9452149, -2171106, -8739185, -1575179, 3452617,
-1774358, 1479079, 876710, 6778532, -9511742, 3073586, 10584410, 191126, 361314, -9314710,
-4638028, 2619930, -8616778, -2135136, -4352413, -2046015, 335544, 2708514, 2152316, 319975,
--2596845, 278636, -2782602, 1166084, 1649268, -338766, -1349157, -912144, 1691680, 554588,
--550293, -1437203, -2779381, -299574, -2713883, 5420786, -5071820, 3221, -543850, 2090039,
-1390496, -2899640, 882079, -885300, 4588099, -558346, 1291175, 156229, -2651069, 1100585,
-548682, -312459, 2965138, -46708, -8703751, -6455873, 224412, -10485626, 49929, -24634858,
--7730405, -2842195, -13434121, -4722854, -2796561, -5909875, -4538707, 3202435, -6462852, -12321724,
-3302293, 7720204, -12553116, -3483755, 3901441, 6308233, 10875394, 6921877, 6417218, 7007239,
-2561948, 12423193, -7366406, -3166465, 2659122, -6149857, 2368675, 3521873, 6534793, 856309,
-10667088, 2236604, 2653216, 7347079, -3213709, -6293738, 144955, -9650255, -6141267, -11138461,
--433255, -506269, -14616847, 5290326, -6603512, 3006477, -13802951, 1665374, -10437307, 15635828,
-820876, -13917305, 16749836, 20484846, 5784784, -6849936, -5048734, 5326297, -1746978, -661962,
-6085432, -9762461, 6407018, -10081899, 5383742, -4009889, -5652714, 2423972, 5407901, -2901787,
--273804, 6320581, 1688996, -3093987, 3584150, -1540820, -5741835, 776852, 5434744, -1019518,
--2096481, 2163590, 1606855, 4416837, 917512, 170188, 1932735, -1454920, 3104188, 796180,
-2578054, 900333, 2056216, 1654099, 1684701, 1347546, -1843078, 2142115, -2492692, -2324651,
-268972, 1415729, 495532, 723165, 1561221, 1033477, 157840, -791885, -1864016, 52613,
--1961726, 5373541, -2612951, 4846871, 7318088, 988379, 6759742, -3856881, 10522133, -8200703,
--7488276, -19982872, -4348118, -10400800, -24208584, 6011881, -13929653, -8585103, -11217918, 3017752,
--21803402, 5768678, 1850057, -4283693, -424665, -6374269, -2161979, 5160403, -7394323, -5398237,
-345208, 3913252, -6462852, -591095, 7533373, -12087649, -2724083, 6918119, -6611029, -493384,
-113280, -1984812, 10194642, -8957691, 6074158, -4122632, 8300561, 8618926, -8810052, -11916924,
-11118597, -1282585, 2459943, 2807835, 1043140, -2625836, 6281927, -3464965, -13635447, 3484292,
-2834142, -11940009, -1277753, -4328790, 7171522, 8587787, 4340602, 1377074, -3366181, -8507256,
-8664560, 5244155, 7754564, -614717, -12093554, -2923262, -1785096, -5383205, -2946885, -1498944,
-3553012, 5325760, -4643397, -4067334, -12016245, -5807870, 2374580, 4896800, 1391569, -1101659,
-5572183, 5130339, 3163780, 6317897, -1917703, 4939213, 2321967, 3355980, 626528, -28991,
--3278134, -2610803, -562104, 1547262, -743029, -2895882, -3498251, -179315, -535797, 685584,
--2363306, 512712, -2827699, 848793, 4860293, 1037772, -2706903, -2880313, 6172942, 3440806,
--706522, -412317, -7693897, -916439, -38655, -6595459, 220654, -2695092, -1979443, 1527398,
-2095407, 463320, -697395, -6038724, 29615410, 17015586, 1191853, -9438191, -22330072, -2783676,
-10462540, -4956393, -8989367, -16837882, -926639, -3677029, 596464, -5812702, 5436892, -149250,
-14666240, 5738077, -6103686, -490163, -2602750, 1051730, -3009698, 2970507, 9096741, -10698764,
-2073932, -6470368, 4243965, -4626217, -7742753, -15220290, -1210107, 8618926, 2924336, -1954210,
-3216931, -1183800, 8293045, 13034689, -4553739, -3044058, -15154255, -16506096, 4562329, 2380486,
--6940667, -6074158, -13645111, -9448928, 5426691, -1831267, 39728, 636192, -1043140, 6183143,
-3585761, -11304354, 485331, -10307385, -877247, -5587753, -3168075, 10825465, 22452478, 36903968,
-1407676, 11832098, -11137924, -14263050, -19945292, -1109175, -53150, 3990025, 4245575, -2786897,
--25216290, 10417980, -4273493, -3539590, 1603633, -6672232, 777926, -3653407, -10262824, 74088,
--4097399, 41876, 1043677, 338766, 7317551, 1005022, 850940, -447213, 321586, -360240,
-3154654, 6827388, 2056216, -297963, 1493038, 6185827, 192737, 25233, 2371359, -2119566,
-798864, -5756867, 1976222, 2934000, -5335960, 5433134, 357556, 426276, -1560147, -6016713,
--1893544, 2624225, 57982, -653909, -1457605, 3609920, -996969, 228170, 10808285, 18023830,
--8914741, 36507, 3462281, -14695231, 135291, -9486509, -9197136, 13849122, -4075924, -3473018,
--7442642, 15904801, 13973139, -1074, 22957674, 2586107, 7169374, 5055714, -6401649, -7495255,
--11951283, -6291054, 2798171, 113817, 10287520, 803159, -1123671, -1872069, 7269232, -10506564,
--25680684, -9001715, 7572564, 2376191, -2111513, -7649874, 454730, -12353937, -1858110, -11254962,
--780073, -1408749, -7933342, 7603166, 3774203, 14441291, -11929809, 22370338, 6003291, -4351339,
--7919383, -4064650, 3521873, 12905303, -3973919, 7384123, -11404749, 9215389, -10357314, -11651709,
-11487964, -16665010, 10920491, 9178882, 17725866, -18050136, 13715441, -1711008, 12227235, 4778151,
--18975702, -3317862, -4462471, 5291937, -10071698, 29869350, -1475858, -10542534, 4230006, 13805636,
-9369471, 6467684, 7121056, -940598, 3388729, -1219771, -3966402, -2517388, 1044751, -130460,
--3935801, 1129576, -1162326, -6056441, -1268089, -2311766, 2538863, 3197066, 1730335, -834297,
-5886790, -955630, 3253438, 1307818, 4161823, 1570884, -2119030, -2622615, 703838, -311385,
-2864743, -1163936, 263604, 2444373, -1491427, 4185446, -1990717, -2306398, 1154273, -1728724,
-4354023, 1584306, -1295470, 2629594, 1289027, -12488691, -16746077, -34305516, -10530723, -20143396,
-5616207, -916976, -6861211, -9975062, -9495099, -8581882, -9299678, -9110163, 957778, -7426536,
--1336272, -16145319, -24774982, 30357902, -9457518, 16451335, -3142306, 4249870, 5243082, 8870181,
-5850819, -1545651, -495532, -13103408, -2961917, -3115462, -8811125, -13741211, 5371394, -1547799,
-19433116, -13450227, 360240, 26882200, -6475200, -22330072, -7201050, 890132, -10118943, 15731391,
-7232188, -8632884, 6385006, 8454106, -5203353, -168041, 4252555, 10519986, -386547, -10351945,
--10189273, 12590697, 9004399, -6607271, -14337138, 9160092, 10599442, -9447854, -12899397, 9052717,
--16360067, 31329102, 6745246, -2551211, 1284732, 7669738, 1736777, -5506148, 515933, 2260227,
-11257109, -7370701, 2261300, -22246320, -20037096, -2230699, 1206886, -2176475, -9719511, 7095286,
-16565689, -449898, 4254702, -1541356, 3550327, 5020280, 5985574, -6384469, 7194607, -3301219,
--1894618, 4775467, 8855686, -2590939, -8856759, 2550137, -802085, 1502702, -790274, -4735202,
--1304060, -4893579, -3029026, -6044630, 6270653, 6426345, -3816079, 20938, 7713762, 2470680,
--3233037, 1643362, 9660992, 6370510, 6976101, 7038378, 6217502, 2337536, 8863739, 4701916,
-3714610, 3322157, 8345659, -12987444, 115964, 4706748, 3766686, -8523899, 20491826, 14322642,
-29458644, 16161962, 11044508, 4205847, -25549686, -2153926, 3628711, -15164993, -3892314, 29000692,
-2373506, -16864190, -16451872, 15015206, -22719840, -5960341, 1170916, 6107444, 2800856, -4380330,
-7607461, -10343355, 167504, -2099165, -6317360, -1438814, -4332549, -14941117, 8076149, -12945568,
-7803956, 6775311, 9056475, 1612760, 6081674, -5400385, 24382530, 3256122, -25416006, -22535694,
-2311766, 10143102, 19881940, -6450504, -15153181, -6802155, -1778653, 2245194, 11799349, 2542084,
--8819178, 26603028, -32285270, -5381594, 6456947, -22613002, -11438572, -5912560, 3653407, -36658084,
--17074106, 26350162, -9648107, 7741142, -8221641, -29574072, -10889890, 14349486, -4042638, 5641977,
-9423158, 18833968, -8588861, 2158221, -5252745, 11837467, 5676873, 5159330, 1107028, -355945,
-668941, 10344429, 5612449, 6174553, -1217086, -98247, 4159139, -6717866, -5904507, 2878702,
-12222403, 5711770, 4988068, -11396696, 7198365, 21809308, 290447, -56371, -7903814, 6049462,
-1370632, -4839892, -6330782, 1111860, 6828461, 7727720, 5857262, -6476811, 4929549, -4262755,
-5544266, -8390219, -4317516, -1496259, -4104915, -5358509, -1265942, -13783087, -12893492, 2469069,
--502511, -1920924, 5220533, 132070, -821413, 433255, 5661304, 4986994, 2007897, 75699,
-2788508, 3191161, 2444373, 3829500, -973884, 5212480, 14566918, -6051072, -47710644, -11932493,
-2303713, 13532905, 12593381, 12041478, 11480984, 21609592, 38002408, -21669184, 15709380, -5261872,
--1058173, -5339181, -31868120, -23235236, -4849018, -1108638, 6392522, 12671227, 15789910, -4759898,
--910533, -7992398, -307090, -1156420, -537408, 17009144, 8541616, 5905580, 12441447, 15526844,
--26999776, 13551159, -15850040, -19277424, -6187974, 13038447, 3266323, -12895639, 3997541, 1979443,
-9104257, -529355, -26252450, -18153754, -21837762, -20970178, 2407866, 18074832, -3705483, 64472828,
--42294692, -31180926, 18894098, -5240397, -13260712, -3919695, -3920232, 1118839, -39659728, 4562866,
--3306588, 5821828, 29571386, -1663226, 10053445, 12036646, 13864154, 49753976, -18761490, 62801012,
-16886738, -1234803, 7747048, 4044786, -26075820, -22229676, -874563, -5091684, 2736431, 10117332,
-7196218, -3951370, -22427782, -17613660, 6781217, -11719355, 7488276, 9185324, 18992346, 19379966,
-16850768, 3867618, 5584531, 243739, -1300301, 13266080, -2552821, -608812, 3643743, -17947058,
--4831838, 8319352, -446677, -1338419, 11335492, 4990752, -17626008, 12403329, -10046465, -12869333,
--7917772, -3598646, 2907156, 6154688, 5425618, -6587943, 8032663, 4151086, 5018670, 2973728,
-6743636, -2352568, 3913789, -10511932, -2739116, -5480379, 1969243, 4513474, -28000502, 10099616,
-45172856, 1161252, 47141024, 24688546, -2729989, -18278844, 53160956, 7851737, -8812736, 6759205,
--11965242, -3655554, -1700807, -3348464, 6812355, 14722074, 10428181, 1879048, 6923488, -10719165,
--10182294, 3156264, -3024194, 17383880, 19030464, 11989938, -4742181, 1153199, -22871774, -14462765,
--4148939, -15807627, -24745990, -14829448, 11971684, -14457397, -43736188, -20288888, 13524315, -17718888,
--12378633, 639413, -3097745, 20656646, 30472792, 39903468, -20987358, 11375758, -169114, 1357747,
--8445516, -26316338, -52490944, -34585760, 18408766, -35037808, -18270254, 9665824, 17991618, -12910672,
-20276004, 57814556, 12311524, 11298448, -43454332, -58369144, -12494597, -18074832, -31030602, -8766028,
--25887378, 18770618, 10792179, 52479132, 21772262, -5883569, -10368588, -17986786, 12591770, 23968602,
-47620448, 33354716, -22574884, -47667156, -23141820, -15051176, -28086938, -5051956, 24408836, 11824045,
-30136712, 1534914, 21509196, 8723615, -6634114, -8674760, -9980430, 6053757, 13269301, 3520263,
-17181480, 21361020, 13033078, 15326054, 7222525, 23067732, 20309290, 1151051, -107374, 10311680,
-22897544, -1873143, -5716602, -3031710, 19591494, 6282464, 1254131, -5352603, 12386686, 9632001,
--2608656, 8072928, 9889699, 5139465, -1728724, 2525441, 7191923, 1284732, -374736, -10878615,
-23513336, 48384416, -26116622, 36764384, 28444494, -4330401, -8177618, -15928423, 4215511, 32801202,
-23302882, 38398620, -17343614, -7206955, -8571144, -2063195, -11056320, 10242423, -13400298, 28217936,
-11028402, -45676440, -20688858, 627065, 6027450, 20052128, -10358924, -17156246, 4263829, 5625871,
--8284455, -8377871, 4247186, -12860743, -20928302, -8890045, 42348376, 18106508, 6392522, -21783538,
--8045548, -18464602, 9939628, 21154862, 6106370, 1550483, 11435887, -7206955, 26648124, 15829639,
-665720, 9314173, -1993402, 54861764, 10322417, -23171348, 7916699, 9585830, 4458176, 12511777,
--275952, -22127672, 25370908, 5922760, 3517041, 10451266, 3791383, 62277, -17366164, 18954764,
-20463908, 11205033, 60641716, 43933220, -24701430, -47524888, -34357592, -3201361, 3105798, -4798552,
--41525356, -20019380, -15404974, -16606491, -17653390, 15101105, 10739029, -4205847, 1461900, -3585761,
--23737748, 6581501, -5236102, -1209570, -24308978, -22334904, -5082557, 9515500, 10043781, 1394254,
-10772852, 5082020, 13863081, 2173254, 1912334, -25370908, -16154446, 10798622, 1868311, -7039989,
-12224014, 5626407, 1287417, -12236899, 10722386, 16186121, 10321343, 11730093, 13780939, -3338800,
-15381352, 32955820, 24932822, 5809480, 2500745, -4306242, -6874632, -17066590, -22584012, 5521718,
--8447127, -537945, 1131187, -1773822, -6098854, -3007014, -8282308, -56507812, -6669548, 13226352,
-16296180, -13495324, 20214800, 5330592, -7386270, -21660594, 5182952, -5886253, -30549028, -10743861,
--10503879, 1432909, -42267312, -34360276, -5185100, 20155744, -2303176, -7384123, -25360708, -391916,
-22701586, 138513, -14851997, -9791989, -2783139, -9623411, 6040872, 6439767, -21384106, -25368224,
-4351339, -1767379, 5807333, 39404716, -24117316, -3478387, -1009854, -40218612, -11303280, -29669634,
--3961571, -3323231, 28372018, 30452392, 38933880, 10108206, 7054484, -15454903, -33043868, 481573,
-14206678, -12525198, 47704200, 109369728, 106433584, 14601815, -67194760, -63053880, -23835994, -39957692,
-130440840, 79513264, 51035484, 64786896, -485868, -35603668, -91963304, -60108604, -22393960, -5757941,
-37867652, 74628816, 67759552, -8768713, -54933168, -34412888, -49687404, -40308268, 7617662, 53860500,
-80249320, 30114700, -3718368, 3715147, -29950418, -36881420, -35334696, 11844983, 6228777, 8681740,
-32613298, 16402480, -2624225, -21176336, -17140678, -12378633, -27453430, -6238440, 13059385, -11085847,
-1387274, -4451734, 20159502, 14089640, -25433186, -16814796, -52072720, -43009264, -37019932, 23604066,
-43419436, 15726023, 11795054, -16002511, -26593364, -83255792, -60437708, -37234144, 7901129, 22505628,
-15557445, 2966212, -29560112, -25854630, -47259672, -80293880, -30499100, 8877161, 24329916, 40490804,
-19937776, -402116, -21438330, -8649527, -13824963, 580357, 30331060, -29701310, 34021508, 5187247,
-4750771, -53274776, -15759846, 44768056, -29563334, 11606075, 1184337, -11398306, 15284715, 4235375,
-25607668, 37629820, -21502216, -31319438, 9114994, -19464792, 25403658, -32678258, -15462956, -21034602,
-3543885, -6428493, -17157320, 7310035, 38056096, -29918206, -30762166, -24652038, -6182606, -7956964,
-50694036, 1975148, -202400, -49718004, -11264089, 3499862, 42815456, 16955458, -6055367, -71229888,
--48875656, 46486040, 53251152, 49058192, -21610128, -118124488, -21605296, 51280836, 45289892, 5395016,
--12019466, 6108517, -45676440, -29492466, 17540110, -15276125, 16041703, -10050760, 3574487, 48091824,
--35149476, -20815560, 42736536, 30862562, 63643900, 24783572, -80986976, 24381992, 91071024, 17687212,
-46989088, 9865003, -23313082, -2295123, 58636504, 37513856, 77306728, -100787312, 15403363, -2249489,
--9389335, 37713572, 2371896, -53191560, 6266358, -3894999, -8895951, 5958731, 1482301, -33224794,
-29317984, -14723148, 950262, -301185, -5753109, -342524, 5890011, -10501732, -9714679, -18964428,
--23472534, 23034984, 537945, 7329362, 22932442, -25945360, 13296682, -2748242, -42030012, -1692754,
-15444166, 45407468, -10680510, -67647344, -5948530, 29444148, 10231686, 25780004, -19894288, -20286204,
--22069152, 9056475, -2352568, 14934675, -23378580, 10574209, 8338679, 5568962, -26137024, 841814,
-7994545, 17801566, -5888937, 2112587, -14991583, 4180077, -8034273, 14867029, -864899, 11423002,
--2007360, 3389266, -16766479, 521302, 81068, 17936320, -8945343, 5769215, -18122078, 978179,
--449898, 14801531, -3222836, 5930276, -58283780, 6589017, 10420664, 5558762, 57459684, 9682467,
--4315369, -36682240, -6273874, -3606699, -8597451, -363462, -6944962, 14704357, 6860137, -10812580,
--1854352, 22820234, 70330, -1282048, 2423972, -5710696, -9794136, 12806519, 11321534, 8595303,
--14266271, 7502234, 21348134, 8374113, -1225139, 13772350, -2505577, -16336982, 4322348, 4144107,
--13159780, -14302241, 14252312, 13879724, -13697188, 8782671, 8478802, -117038, -4988068, 106300,
-10836739, -594316, -12098923, 6302865, 7384123, -22471806, 5750425, 16626892, 5439576, -14607721,
-2279017, 10322954, -18931142, 5151277, 8875013, 3754338, -4922570, -18043694, 21252036, -22992570,
--2029372, 22145388, 361851, -3806952, 490163, -20792474, 9210020, -295279, 11885248, 22024592,
--9959492, -1571958, -12721156, 16848620, -3526168, -1868311, 17262548, -22526566, -9910637, 12528956,
-10212895, 4495757, -18326626, 6351720, -4027069, -1135482, 8790187, 6698002, 1259499, -4649302,
--2346126, 868657, 4974109, -15981573, 11658152, 2397666, -2223183, 4536559, -2097018, 10142565,
--15050639, -2706366, 311385, 907849, 1502702, 6988986, 4612795, -25538950, 13518946, -2706366,
--2971044, -1038845, 5202816, 7016366, -6333466, -2530273, 11894912, -10147397, -1304596, -7755101,
-5657009, 53880900, 4692789, -6545530, -18042084, -11944841, 6274411, -8003672, 6908455, -10691784,
--891743, 8551817, -4868346, 4028143, 3886946, -14914811, 4077535, -4877472, -3299072, -12293807,
-3421478, -3477313, -7812546, -3613141, 5890548, -5367636, -5375152, 7592429, -8492761, 4267587,
-7157563, -14960982, 14680735, -3738769, -17662516, 9329743, 9219684, -8215736, 2782065, 5312875,
--7506529, -6671695, -30602, 977105, 4715874, -2437394, -985695, -7422241, 6707665, -5820755,
--1960653, 8497593, -10381473, 2943663, -1960116, 537, -4941897, -6669011, -2804077, 11552925,
--8022999, -3050501, 1767916, 2426657, 226560, -7057705, 5236102, -3185792, -6171868, -214212,
--11223823, 16199006, -7291781, 3245922, 3467649, -3388729, 5512591, -9710921, -8002598, 9837623,
--4982699, -6755447, 6498286, -497679, 1719598, -4524748, 1048509, -1047435, 2896956, -3624953,
--2923262, 3686693, -2313377, -2662343, -837519, 2300492, -1682017, -285078, -1394254, 560493,
-2109903, -3238405, -3337190, 9229885, -2887829, -3404835, 2763812, -1144072, 2557116, -7543037,
-348966, -1321776, -383863, -2059974, 8568460, 32212, -7832947, 2430952, 689879, -416075,
--95026, 3307662, -2353642, -2296197, -1138703, -2080912, -1166084, 871878, -2570538, -149250,
-550830, -426276, -26924614, -43533252, 19808390, 150964880, 22950158, 75496400, -17844516, -76489072,
--28005334, -74539160, -49331456, -15467251, -8367133, 3696356, 44215076, 53475564, 73899208, 73679624,
-23216446, -28929290, -47203840, -86189256, -66285304, -34646964, -13700946, -8682813, 26505316, 44884556,
-34419868, 47284904, 45532560, 16986058, 14657650, 5738077, -33583960, -12269648, -28896540, -49605800,
--30228516, -28915868, -43283068, -9030706, 20010252, 15474767, 43853764, 57821536, 29873646, 38567732,
-28762322, -3905736, -1402844, -2551211, -31161062, -38048040, -34211024, -51158968, -43852688, -15299747,
--2707977, 6361921, 35465692, 32928978, 31448824, 39946416, 29573534, 10370735, 18640158, 10455024,
--11716134, -5360656, -21543020, -44891000, -27226872, -25402048, -35612796, -16935592, -11501386, -19787452,
-16739098, 32068910, 36714456, 58931784, 55248312, 23538568, 13623099, -607201, -20195474, -23659902,
--24696598, -35616552, -32888712, -29924648, -27705760, -17071422, -6964827, 114890, 13319230, 31664646,
-39142184, 36679020, 43939664, 30680026, 14680735, 6418292, -5219459, -22428856, -25631828, -35418984,
--46540804, -46643344, -37297496, -30897994, -4825933, 18759344, 41471668, 55892020, 60211684, 46755552,
-30258044, 13627931, -3714610, -23162758, -34282964, -46044196, -45962056, -32665910, -21626770, -6379637,
-8260833, 16751446, 21894670, 27651536, 23643258, 14987825, 12470974, 4644471, -334471, -4184372,
--5699422, -7177427, -7224672, -10187662, -8482024, -6447283, -5515812, -5310727, -3599183, -3301756,
--688269, 1966558, 5734318, 7007776, 9283572, 9989557, 10385768, 6591164, 3959960, 852014,
--1174137, -5822902, -8022462, -10578504, -10247255, -8760660, -5264020, -3508452, -652835, 1043140,
-5143760, 7254200, 9100499, 7361574, 7191386, 4971962, 3288334, 725313, -238371, -3233037,
--4668093, -6922951, -7361574, -7902203, -5450314, -3702262, -180926, 1221918, 3981972, 5010616,
-6284074, 4776541, 5083094, 3544422, 2928631, 493384, -738198, -2879239, -3099893, -4439386,
--3847754, -4268661, -3074660, -2729989, -552440, 130997, 2287607, 2762201, 4207458, 3472481,
-3717831, 1727651, 1124745, -486405, -272730, -1509144, -1328219, -2576444, -2024540, -2629594,
--1525250, -1627256, 6442, 179852, 1654636, 1283658, 1989107, 1042603, 1538135, 414464,
-799938, -340376, 139586, -752156, -92342, -883690, -73014, -737124, 133144, -539018,
-293668, -394063, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+3178813, -2868501, -430034, 4394826, 1531693, -2373506, 547071, -2615098, -2204392, -1890859,
+-3933116, -1454383, 2503966, -261993, 1416266, -739808, -1068373, -1173600, -419833, 3295851,
+-2057826, 144418, -85899, 82141, 2733210, -153008, 1901060, 5783711, 4626754, 4521527,
+2442763, 976568, -674847, -5471789, 2285460, -2082522, 3533684, 1166084, -1770063, 1568200,
+-2348810, -4751308, -1379221, -1875827, -4373351, 125091, -479963, -698469, -2014340, 218506,
+4698158, 1990181, 3213709, -112743, 2001455, -1874753, -65498, 2359011, -1936493, 1559073,
+-2416456, -2704756, 333934, 5390184, 3658239, 2029909, -996432, 847719, 650151, 251792,
+-919123, -2158221, -3137474, -2386391, 137439, -2052458, -929324, -2204929, 774168, 262530,
+1172526, -695785, 976031, 1224066, 1124208, 74088, 729608, -556735, -469225, -81604,
+-1268626, 1340567, 1218160, -199716, 1521492, 364535, 357019, -723165, -351114, -906238,
+343597, 405874, 48318, -331249, 566936, -388695, -1173600, -416075, -764504, -116501,
+306016, 238908, -1232656, 164819, 887448, 1994476, 1034550, -3459596, 8165807, -180926,
+499827, -868657, -4301947, 3180960, -2240362, -2157147, -5013301, -3872987, -1619203, 3114388,
+4491462, -909996, 2660732, -1034013, 4873178, 5044976, -10065793, 1843615, 57982, -988379,
+3419868, 5361730, -1643362, -782221, 120259, -329639, -2547989, 2108829, -2568391, -2038499,
+-195421, 2688650, -1505923, -5665599, -2504503, -3850438, 466541, 345208, -5014911, -594853,
+-2179159, 1046898, -132607, -756451, 1254667, -1673427, 1725503, -2692945, 2665027, 3876745,
+5967320, 2474438, -2577517, 2136209, 2517388, -929324, -6709813, 445066, 3529390, -2698850,
+2046552, -3897146, -18790, -2484102, -6813429, -2076617, -3549791, 1741072, 2570538, -2299955,
+1118839, -1076426, 3258270, 261993, 1921998, 2713883, -1120987, 1125818, 581431, 1151588,
+2362769, -535797, 823023, 2920578, 1691143, 401579, 1775432, 320512, 790274, -112743,
+537, -1572495, 884226, 1008244, 1362578, 910533, 340376, 433792, 86973, 511101,
+-162135, -434329, -76773, 1080184, 950262, 286152, 857383, 200253, 985695, 811749,
+6718403, 1789391, -9036611, 3184718, 4697621, 1662689, -746787, 2328946, -5661841, 767189,
+2570001, -1315871, 2487323, -426812, 3022046, 681289, -3806415, 2381559, 3562675, 3439732,
+-966905, 1624571, 1946157, 1283122, -10230075, 1407139, -4327180, -1329829, -1407139, 2365453,
+1159641, -8420283, -2972117, -1912871, -1543504, 3377455, -3073586, -5900748, 1497870, 2689187,
+1745904, -5869610, -2694555, 1841467, -5459441, -474057, -6037651, 866510, 3040300, -3148748,
+-895501, 3459059, 4493073, -10377178, -710280, -2899640, 3191698, 1261110, 572841, 873489,
+-2857227, 2615635, 2338610, -8059506, 6234682, -847182, 1579474, -4119948, -1655710, -3486440,
+-372052, 887985, -3157875, -4482872, 4027606, -1453846, 1696512, -234076, -745177, 1138703,
+1409823, -1640141, -4069482, 2292976, 2150168, 523986, 1032940, -135828, 377420, 685047,
+33286, 683974, 546535, -95026, 1656247, 226023, 1285269, 1449015, 150324, 2043331,
+12885, 403190, 619012, 920197, 804233, 1022739, -1457068, 701690, -622770, 318364,
+748935, 507343, 1272921, -399969, -289373, 914291, 1717987, -4269735, -4184909, -3311420,
+-2248416, 6873559, -2459406, 1014686, -5600101, 5934034, 302258, -3870303, -1131187, 3476239,
+-7144141, 2486249, -2170032, 1682017, 1052267, -3138547, -2379412, -8301098, -2345589, -9359807,
+1138703, 2224256, -1099512, -1191853, -948651, 1522029, -3784403, -6643241, -3215857, -2383707,
+-1124208, 2570001, -1635846, 4108673, 1698660, 3171833, -4258997, -138513, -289910, -3395172,
+887448, 2850785, -354872, -1643362, -4175782, -3687766, 2469069, 3913789, -204548, 7653095,
+5909338, -5309117, -1457605, 115427, -5789079, -6430103, 9792525, -58519, 191663, 3199214,
+-6352794, -1960116, -4143033, 9853192, 2556043, 611496, -7841000, -6058588, 751082, -2434173,
+4960687, -2478196, -132607, 1489280, -3123515, 1214402, 2964601, -4457639, -25233, -7173133,
+719944, 2853469, -2179159, 1176821, 801011, 3685082, -586263, 688805, -779000, -22012,
+1473174, 1705639, 1411971, -981937, 402116, 47782, 594853, 170188, 581968, -941672,
+2228551, 143881, 588947, 472983, 656593, 666257, 595390, -485331, -664109, -389768,
+439160, 1673427, 1750736, 455267, 758062, -1364726, -610422, -11350525, 5664525, 3270081,
+5777268, -3077881, 3151969, 3374234, 5939403, 1459215, -11402064, 2885681, 459562, 4566087,
+8223252, 481036, 3555159, 3187940, -6838125, 2440615, 602906, 992137, -1877975, -896574,
+4199405, 2850785, 146029, -4114579, -75699, -1935957, -2181307, 6864969, 3123515, -231928,
+-935766, -8177618, -7084549, -8031589, 2129230, 2241973, -8404177, 651761, 546535, -8249022,
+501974, 1341104, -1130650, 9606768, -1196685, -4632659, -1199907, 5543729, -472446, -8443906,
+9224516, 4850629, -5898064, 4561256, 878858, 928250, -169114, 583042, -2299418, -4205847,
+-4057134, 7454453, -505196, -2090575, -357019, 5381594, -4935455, -8625368, 299574, 2050310,
+1619203, -7529078, -3947075, 2998424, -693637, 4321811, 1610076, -1275605, -1278827, -1086090,
+-611496, 224412, 6746320, 4012573, 2435783, 2239289, 2604898, 4011500, -1882806, -547071,
+-2132988, -566936, 746251, 277562, -1180042, -1817308, 1984812, 388695, 895501, 54761,
+-1212255, 522912, 1051193, -2312303, -404264, 2014340, 420370, 206695, -876710, -170188,
+-566936, -946503, 265751, 1073205, 787590, -603443, 804233, 170188, 3456375, 13121125,
+3940096, 10517301, -11575474, 416075, -5703717, 155156, 3873524, 4409858, -5938329, 2572686,
+-3431142, -3087545, -4122095, -6769406, -968515, -15902116, -131533, 5206574, -680215, -1114544,
+1764158, -8360691, 2949569, -7975218, -2487860, 8141111, 1675037, 2785823, 212064, 2369748,
+6991133, 6271726, 12167642, 6273337, -9171366, -804770, 10252624, -1472637, -7474317, -1178969,
+965831, -3463354, 6874095, 5042292, -5876589, -1762547, 6592775, 6959458, -2477659, -4491462,
+11112691, -4615479, -14944876, -10151692, 3311957, -15090904, -285078, -4547834, 88584, -1439888,
+-4191888, 5593658, 1626182, -1516124, -4904853, 4260071, -2932926, 7934952, 5465883, -2225330,
+-5276904, 1090922, 2100239, 697395, 312459, 1840930, -1088774, -5912560, -1686848, 8121783,
+-933082, -3368865, -870805, -1763084, -4209605, -4148402, -2262374, -2018098, 496606, -85899,
+4103841, -405338, -1464047, 525597, 1474784, -1031866, 865436, -1457068, 2792803, -139050,
+1719061, 205085, -2665564, -322123, -280247, -2862596, -748398, -1762547, 1290101, 31675,
+-423591, 913217, 443455, -334471, 511101, -3197603, 692564, 872415, -12783970, 6045704,
+-1086627, 3218541, 4296578, 6913287, 1601486, -6115497, 8329552, -3102040, 3732327, -3722126,
+3117073, -578210, -15025943, -3136937, -2534031, -1788317, 1076426, -3634079, -2444373, 2000381,
+3351685, 1126892, 8185134, 3742527, -7825968, -593242, 61203, -4445291, 9410273, -5614059,
+-5370857, 9848897, 10430328, -1302986, -77846, -6476811, 2375117, 1394791, -3329137, 1713692,
+6475737, 3962644, 7778723, -1935420, -6032819, 3768297, 945430, 1847373, -7199439, -3762928,
+-4213363, 1695438, 4185446, 1505923, 1149978, 7421704, 8949638, 1318018, -4194573, 5058935,
+4193499, -6293201, 915902, 1076426, -679679, 719944, -105227, 5305359, -543850, -4169340,
+2156074, 6997576, 3154117, 4101694, 8725763, -5941014, 1094680, -2033130, 8281234, 4705674,
+8866423, -4269735, -1095217, 1450088, -3104725, 440234, 903017, -1022202, 41339, 2026151,
+2396055, -907849, 1323924, 895501, 3097208, 2680597, -331249, -251792, -1346472, 367757,
+-1357210, 707059, -2413772, 2397129, -10201, -964757, -6979, -231928, 126702, -889595,
+-1874753, 2666638, -308701, 417686, -2983392, -2500745, -637803, 2558190, -248034, -308164,
+279173, -331786, 5341866, -11116986, -6671695, 4438849, -2615635, -10383620, 5277978, -5427765,
+-4759898, 6718403, -2044404, -2208687, -1673964, 1741609, 4956929, 2590402, 2662343, 2759517,
+-4146791, -2462090, -872415, 6053757, 3102040, -10612327, 3373160, 3324305, -4465156, 10006200,
+9160092, 4946192, 345208, -3618510, -2362232, 549219, -3126736, -3724811, -6164352, 906775,
+-7037304, 5113696, 1950989, 75162, 1102733, 2704756, 2319819, 5473399, 8512088, -3216931,
+-13509283, -2340757, -9203041, 3181497, 1264868, -12210055, 4427038, -5118528, 15341623, 5107253,
+-9675488, -318901, 9758703, 5104032, -8012262, -4755603, 10209674, 5879274, -7100118, 8739185,
+-7286949, -9590125, 1480153, -14526653, 8769249, 9452149, -2171106, -8739185, -1575179, 3452617,
+1774358, 1479079, 876710, 6778532, -9511742, 3073586, 10584410, 191126, 361314, -9314710,
+4638028, 2619930, -8616778, -2135136, -4352413, -2046015, 335544, 2708514, 2152316, 319975,
+-2596845, 278636, -2782602, 1166084, 1649268, -338766, -1349157, -912144, 1691680, 554588,
+-550293, -1437203, -2779381, -299574, -2713883, 5420786, -5071820, 3221, -543850, 2090039,
+1390496, -2899640, 882079, -885300, 4588099, -558346, 1291175, 156229, -2651069, 1100585,
+548682, -312459, 2965138, -46708, -8703751, -6455873, 224412, -10485626, 49929, -24634858,
+-7730405, -2842195, -13434121, -4722854, -2796561, -5909875, -4538707, 3202435, -6462852, -12321724,
+3302293, 7720204, -12553116, -3483755, 3901441, 6308233, 10875394, 6921877, 6417218, 7007239,
+2561948, 12423193, -7366406, -3166465, 2659122, -6149857, 2368675, 3521873, 6534793, 856309,
+10667088, 2236604, 2653216, 7347079, -3213709, -6293738, 144955, -9650255, -6141267, -11138461,
+-433255, -506269, -14616847, 5290326, -6603512, 3006477, -13802951, 1665374, -10437307, 15635828,
+820876, -13917305, 16749836, 20484846, 5784784, -6849936, -5048734, 5326297, -1746978, -661962,
+6085432, -9762461, 6407018, -10081899, 5383742, -4009889, -5652714, 2423972, 5407901, -2901787,
+-273804, 6320581, 1688996, -3093987, 3584150, -1540820, -5741835, 776852, 5434744, -1019518,
+-2096481, 2163590, 1606855, 4416837, 917512, 170188, 1932735, -1454920, 3104188, 796180,
+2578054, 900333, 2056216, 1654099, 1684701, 1347546, -1843078, 2142115, -2492692, -2324651,
+268972, 1415729, 495532, 723165, 1561221, 1033477, 157840, -791885, -1864016, 52613,
+-1961726, 5373541, -2612951, 4846871, 7318088, 988379, 6759742, -3856881, 10522133, -8200703,
+-7488276, -19982872, -4348118, -10400800, -24208584, 6011881, -13929653, -8585103, -11217918, 3017752,
+-21803402, 5768678, 1850057, -4283693, -424665, -6374269, -2161979, 5160403, -7394323, -5398237,
+345208, 3913252, -6462852, -591095, 7533373, -12087649, -2724083, 6918119, -6611029, -493384,
+113280, -1984812, 10194642, -8957691, 6074158, -4122632, 8300561, 8618926, -8810052, -11916924,
+11118597, -1282585, 2459943, 2807835, 1043140, -2625836, 6281927, -3464965, -13635447, 3484292,
+2834142, -11940009, -1277753, -4328790, 7171522, 8587787, 4340602, 1377074, -3366181, -8507256,
+8664560, 5244155, 7754564, -614717, -12093554, -2923262, -1785096, -5383205, -2946885, -1498944,
+3553012, 5325760, -4643397, -4067334, -12016245, -5807870, 2374580, 4896800, 1391569, -1101659,
+5572183, 5130339, 3163780, 6317897, -1917703, 4939213, 2321967, 3355980, 626528, -28991,
+-3278134, -2610803, -562104, 1547262, -743029, -2895882, -3498251, -179315, -535797, 685584,
+-2363306, 512712, -2827699, 848793, 4860293, 1037772, -2706903, -2880313, 6172942, 3440806,
+-706522, -412317, -7693897, -916439, -38655, -6595459, 220654, -2695092, -1979443, 1527398,
+2095407, 463320, -697395, -6038724, 29615410, 17015586, 1191853, -9438191, -22330072, -2783676,
+10462540, -4956393, -8989367, -16837882, -926639, -3677029, 596464, -5812702, 5436892, -149250,
+14666240, 5738077, -6103686, -490163, -2602750, 1051730, -3009698, 2970507, 9096741, -10698764,
+2073932, -6470368, 4243965, -4626217, -7742753, -15220290, -1210107, 8618926, 2924336, -1954210,
+3216931, -1183800, 8293045, 13034689, -4553739, -3044058, -15154255, -16506096, 4562329, 2380486,
+-6940667, -6074158, -13645111, -9448928, 5426691, -1831267, 39728, 636192, -1043140, 6183143,
+3585761, -11304354, 485331, -10307385, -877247, -5587753, -3168075, 10825465, 22452478, 36903968,
+1407676, 11832098, -11137924, -14263050, -19945292, -1109175, -53150, 3990025, 4245575, -2786897,
+-25216290, 10417980, -4273493, -3539590, 1603633, -6672232, 777926, -3653407, -10262824, 74088,
+-4097399, 41876, 1043677, 338766, 7317551, 1005022, 850940, -447213, 321586, -360240,
+3154654, 6827388, 2056216, -297963, 1493038, 6185827, 192737, 25233, 2371359, -2119566,
+798864, -5756867, 1976222, 2934000, -5335960, 5433134, 357556, 426276, -1560147, -6016713,
+-1893544, 2624225, 57982, -653909, -1457605, 3609920, -996969, 228170, 10808285, 18023830,
+-8914741, 36507, 3462281, -14695231, 135291, -9486509, -9197136, 13849122, -4075924, -3473018,
+-7442642, 15904801, 13973139, -1074, 22957674, 2586107, 7169374, 5055714, -6401649, -7495255,
+-11951283, -6291054, 2798171, 113817, 10287520, 803159, -1123671, -1872069, 7269232, -10506564,
+-25680684, -9001715, 7572564, 2376191, -2111513, -7649874, 454730, -12353937, -1858110, -11254962,
+-780073, -1408749, -7933342, 7603166, 3774203, 14441291, -11929809, 22370338, 6003291, -4351339,
+-7919383, -4064650, 3521873, 12905303, -3973919, 7384123, -11404749, 9215389, -10357314, -11651709,
+11487964, -16665010, 10920491, 9178882, 17725866, -18050136, 13715441, -1711008, 12227235, 4778151,
+-18975702, -3317862, -4462471, 5291937, -10071698, 29869350, -1475858, -10542534, 4230006, 13805636,
+9369471, 6467684, 7121056, -940598, 3388729, -1219771, -3966402, -2517388, 1044751, -130460,
+-3935801, 1129576, -1162326, -6056441, -1268089, -2311766, 2538863, 3197066, 1730335, -834297,
+5886790, -955630, 3253438, 1307818, 4161823, 1570884, -2119030, -2622615, 703838, -311385,
+2864743, -1163936, 263604, 2444373, -1491427, 4185446, -1990717, -2306398, 1154273, -1728724,
+4354023, 1584306, -1295470, 2629594, 1289027, -12488691, -16746077, -34305516, -10530723, -20143396,
+5616207, -916976, -6861211, -9975062, -9495099, -8581882, -9299678, -9110163, 957778, -7426536,
+-1336272, -16145319, -24774982, 30357902, -9457518, 16451335, -3142306, 4249870, 5243082, 8870181,
+5850819, -1545651, -495532, -13103408, -2961917, -3115462, -8811125, -13741211, 5371394, -1547799,
+19433116, -13450227, 360240, 26882200, -6475200, -22330072, -7201050, 890132, -10118943, 15731391,
+7232188, -8632884, 6385006, 8454106, -5203353, -168041, 4252555, 10519986, -386547, -10351945,
+-10189273, 12590697, 9004399, -6607271, -14337138, 9160092, 10599442, -9447854, -12899397, 9052717,
+-16360067, 31329102, 6745246, -2551211, 1284732, 7669738, 1736777, -5506148, 515933, 2260227,
+11257109, -7370701, 2261300, -22246320, -20037096, -2230699, 1206886, -2176475, -9719511, 7095286,
+16565689, -449898, 4254702, -1541356, 3550327, 5020280, 5985574, -6384469, 7194607, -3301219,
+-1894618, 4775467, 8855686, -2590939, -8856759, 2550137, -802085, 1502702, -790274, -4735202,
+-1304060, -4893579, -3029026, -6044630, 6270653, 6426345, -3816079, 20938, 7713762, 2470680,
+-3233037, 1643362, 9660992, 6370510, 6976101, 7038378, 6217502, 2337536, 8863739, 4701916,
+3714610, 3322157, 8345659, -12987444, 115964, 4706748, 3766686, -8523899, 20491826, 14322642,
+29458644, 16161962, 11044508, 4205847, -25549686, -2153926, 3628711, -15164993, -3892314, 29000692,
+2373506, -16864190, -16451872, 15015206, -22719840, -5960341, 1170916, 6107444, 2800856, -4380330,
+7607461, -10343355, 167504, -2099165, -6317360, -1438814, -4332549, -14941117, 8076149, -12945568,
+7803956, 6775311, 9056475, 1612760, 6081674, -5400385, 24382530, 3256122, -25416006, -22535694,
+2311766, 10143102, 19881940, -6450504, -15153181, -6802155, -1778653, 2245194, 11799349, 2542084,
+-8819178, 26603028, -32285270, -5381594, 6456947, -22613002, -11438572, -5912560, 3653407, -36658084,
+-17074106, 26350162, -9648107, 7741142, -8221641, -29574072, -10889890, 14349486, -4042638, 5641977,
+9423158, 18833968, -8588861, 2158221, -5252745, 11837467, 5676873, 5159330, 1107028, -355945,
+668941, 10344429, 5612449, 6174553, -1217086, -98247, 4159139, -6717866, -5904507, 2878702,
+12222403, 5711770, 4988068, -11396696, 7198365, 21809308, 290447, -56371, -7903814, 6049462,
+1370632, -4839892, -6330782, 1111860, 6828461, 7727720, 5857262, -6476811, 4929549, -4262755,
+5544266, -8390219, -4317516, -1496259, -4104915, -5358509, -1265942, -13783087, -12893492, 2469069,
+-502511, -1920924, 5220533, 132070, -821413, 433255, 5661304, 4986994, 2007897, 75699,
+2788508, 3191161, 2444373, 3829500, -973884, 5212480, 14566918, -6051072, -47710644, -11932493,
+2303713, 13532905, 12593381, 12041478, 11480984, 21609592, 38002408, -21669184, 15709380, -5261872,
+-1058173, -5339181, -31868120, -23235236, -4849018, -1108638, 6392522, 12671227, 15789910, -4759898,
+-910533, -7992398, -307090, -1156420, -537408, 17009144, 8541616, 5905580, 12441447, 15526844,
+-26999776, 13551159, -15850040, -19277424, -6187974, 13038447, 3266323, -12895639, 3997541, 1979443,
+9104257, -529355, -26252450, -18153754, -21837762, -20970178, 2407866, 18074832, -3705483, 64472828,
+-42294692, -31180926, 18894098, -5240397, -13260712, -3919695, -3920232, 1118839, -39659728, 4562866,
+-3306588, 5821828, 29571386, -1663226, 10053445, 12036646, 13864154, 49753976, -18761490, 62801012,
+16886738, -1234803, 7747048, 4044786, -26075820, -22229676, -874563, -5091684, 2736431, 10117332,
+7196218, -3951370, -22427782, -17613660, 6781217, -11719355, 7488276, 9185324, 18992346, 19379966,
+16850768, 3867618, 5584531, 243739, -1300301, 13266080, -2552821, -608812, 3643743, -17947058,
+-4831838, 8319352, -446677, -1338419, 11335492, 4990752, -17626008, 12403329, -10046465, -12869333,
+-7917772, -3598646, 2907156, 6154688, 5425618, -6587943, 8032663, 4151086, 5018670, 2973728,
+6743636, -2352568, 3913789, -10511932, -2739116, -5480379, 1969243, 4513474, -28000502, 10099616,
+45172856, 1161252, 47141024, 24688546, -2729989, -18278844, 53160956, 7851737, -8812736, 6759205,
+-11965242, -3655554, -1700807, -3348464, 6812355, 14722074, 10428181, 1879048, 6923488, -10719165,
+-10182294, 3156264, -3024194, 17383880, 19030464, 11989938, -4742181, 1153199, -22871774, -14462765,
+-4148939, -15807627, -24745990, -14829448, 11971684, -14457397, -43736188, -20288888, 13524315, -17718888,
+-12378633, 639413, -3097745, 20656646, 30472792, 39903468, -20987358, 11375758, -169114, 1357747,
+-8445516, -26316338, -52490944, -34585760, 18408766, -35037808, -18270254, 9665824, 17991618, -12910672,
+20276004, 57814556, 12311524, 11298448, -43454332, -58369144, -12494597, -18074832, -31030602, -8766028,
+-25887378, 18770618, 10792179, 52479132, 21772262, -5883569, -10368588, -17986786, 12591770, 23968602,
+47620448, 33354716, -22574884, -47667156, -23141820, -15051176, -28086938, -5051956, 24408836, 11824045,
+30136712, 1534914, 21509196, 8723615, -6634114, -8674760, -9980430, 6053757, 13269301, 3520263,
+17181480, 21361020, 13033078, 15326054, 7222525, 23067732, 20309290, 1151051, -107374, 10311680,
+22897544, -1873143, -5716602, -3031710, 19591494, 6282464, 1254131, -5352603, 12386686, 9632001,
+-2608656, 8072928, 9889699, 5139465, -1728724, 2525441, 7191923, 1284732, -374736, -10878615,
+23513336, 48384416, -26116622, 36764384, 28444494, -4330401, -8177618, -15928423, 4215511, 32801202,
+23302882, 38398620, -17343614, -7206955, -8571144, -2063195, -11056320, 10242423, -13400298, 28217936,
+11028402, -45676440, -20688858, 627065, 6027450, 20052128, -10358924, -17156246, 4263829, 5625871,
+-8284455, -8377871, 4247186, -12860743, -20928302, -8890045, 42348376, 18106508, 6392522, -21783538,
+-8045548, -18464602, 9939628, 21154862, 6106370, 1550483, 11435887, -7206955, 26648124, 15829639,
+665720, 9314173, -1993402, 54861764, 10322417, -23171348, 7916699, 9585830, 4458176, 12511777,
+-275952, -22127672, 25370908, 5922760, 3517041, 10451266, 3791383, 62277, -17366164, 18954764,
+20463908, 11205033, 60641716, 43933220, -24701430, -47524888, -34357592, -3201361, 3105798, -4798552,
+-41525356, -20019380, -15404974, -16606491, -17653390, 15101105, 10739029, -4205847, 1461900, -3585761,
+-23737748, 6581501, -5236102, -1209570, -24308978, -22334904, -5082557, 9515500, 10043781, 1394254,
+10772852, 5082020, 13863081, 2173254, 1912334, -25370908, -16154446, 10798622, 1868311, -7039989,
+12224014, 5626407, 1287417, -12236899, 10722386, 16186121, 10321343, 11730093, 13780939, -3338800,
+15381352, 32955820, 24932822, 5809480, 2500745, -4306242, -6874632, -17066590, -22584012, 5521718,
+-8447127, -537945, 1131187, -1773822, -6098854, -3007014, -8282308, -56507812, -6669548, 13226352,
+16296180, -13495324, 20214800, 5330592, -7386270, -21660594, 5182952, -5886253, -30549028, -10743861,
+-10503879, 1432909, -42267312, -34360276, -5185100, 20155744, -2303176, -7384123, -25360708, -391916,
+22701586, 138513, -14851997, -9791989, -2783139, -9623411, 6040872, 6439767, -21384106, -25368224,
+4351339, -1767379, 5807333, 39404716, -24117316, -3478387, -1009854, -40218612, -11303280, -29669634,
+-3961571, -3323231, 28372018, 30452392, 38933880, 10108206, 7054484, -15454903, -33043868, 481573,
+14206678, -12525198, 47704200, 109369728, 106433584, 14601815, -67194760, -63053880, -23835994, -39957692,
+130440840, 79513264, 51035484, 64786896, -485868, -35603668, -91963304, -60108604, -22393960, -5757941,
+37867652, 74628816, 67759552, -8768713, -54933168, -34412888, -49687404, -40308268, 7617662, 53860500,
+80249320, 30114700, -3718368, 3715147, -29950418, -36881420, -35334696, 11844983, 6228777, 8681740,
+32613298, 16402480, -2624225, -21176336, -17140678, -12378633, -27453430, -6238440, 13059385, -11085847,
+1387274, -4451734, 20159502, 14089640, -25433186, -16814796, -52072720, -43009264, -37019932, 23604066,
+43419436, 15726023, 11795054, -16002511, -26593364, -83255792, -60437708, -37234144, 7901129, 22505628,
+15557445, 2966212, -29560112, -25854630, -47259672, -80293880, -30499100, 8877161, 24329916, 40490804,
+19937776, -402116, -21438330, -8649527, -13824963, 580357, 30331060, -29701310, 34021508, 5187247,
+4750771, -53274776, -15759846, 44768056, -29563334, 11606075, 1184337, -11398306, 15284715, 4235375,
+25607668, 37629820, -21502216, -31319438, 9114994, -19464792, 25403658, -32678258, -15462956, -21034602,
+3543885, -6428493, -17157320, 7310035, 38056096, -29918206, -30762166, -24652038, -6182606, -7956964,
+50694036, 1975148, -202400, -49718004, -11264089, 3499862, 42815456, 16955458, -6055367, -71229888,
+-48875656, 46486040, 53251152, 49058192, -21610128, -118124488, -21605296, 51280836, 45289892, 5395016,
+-12019466, 6108517, -45676440, -29492466, 17540110, -15276125, 16041703, -10050760, 3574487, 48091824,
+-35149476, -20815560, 42736536, 30862562, 63643900, 24783572, -80986976, 24381992, 91071024, 17687212,
+46989088, 9865003, -23313082, -2295123, 58636504, 37513856, 77306728, -100787312, 15403363, -2249489,
+-9389335, 37713572, 2371896, -53191560, 6266358, -3894999, -8895951, 5958731, 1482301, -33224794,
+29317984, -14723148, 950262, -301185, -5753109, -342524, 5890011, -10501732, -9714679, -18964428,
+-23472534, 23034984, 537945, 7329362, 22932442, -25945360, 13296682, -2748242, -42030012, -1692754,
+15444166, 45407468, -10680510, -67647344, -5948530, 29444148, 10231686, 25780004, -19894288, -20286204,
+-22069152, 9056475, -2352568, 14934675, -23378580, 10574209, 8338679, 5568962, -26137024, 841814,
+7994545, 17801566, -5888937, 2112587, -14991583, 4180077, -8034273, 14867029, -864899, 11423002,
+-2007360, 3389266, -16766479, 521302, 81068, 17936320, -8945343, 5769215, -18122078, 978179,
+-449898, 14801531, -3222836, 5930276, -58283780, 6589017, 10420664, 5558762, 57459684, 9682467,
+-4315369, -36682240, -6273874, -3606699, -8597451, -363462, -6944962, 14704357, 6860137, -10812580,
+-1854352, 22820234, 70330, -1282048, 2423972, -5710696, -9794136, 12806519, 11321534, 8595303,
+-14266271, 7502234, 21348134, 8374113, -1225139, 13772350, -2505577, -16336982, 4322348, 4144107,
+-13159780, -14302241, 14252312, 13879724, -13697188, 8782671, 8478802, -117038, -4988068, 106300,
+10836739, -594316, -12098923, 6302865, 7384123, -22471806, 5750425, 16626892, 5439576, -14607721,
+2279017, 10322954, -18931142, 5151277, 8875013, 3754338, -4922570, -18043694, 21252036, -22992570,
+-2029372, 22145388, 361851, -3806952, 490163, -20792474, 9210020, -295279, 11885248, 22024592,
+-9959492, -1571958, -12721156, 16848620, -3526168, -1868311, 17262548, -22526566, -9910637, 12528956,
+10212895, 4495757, -18326626, 6351720, -4027069, -1135482, 8790187, 6698002, 1259499, -4649302,
+-2346126, 868657, 4974109, -15981573, 11658152, 2397666, -2223183, 4536559, -2097018, 10142565,
+-15050639, -2706366, 311385, 907849, 1502702, 6988986, 4612795, -25538950, 13518946, -2706366,
+-2971044, -1038845, 5202816, 7016366, -6333466, -2530273, 11894912, -10147397, -1304596, -7755101,
+5657009, 53880900, 4692789, -6545530, -18042084, -11944841, 6274411, -8003672, 6908455, -10691784,
+-891743, 8551817, -4868346, 4028143, 3886946, -14914811, 4077535, -4877472, -3299072, -12293807,
+3421478, -3477313, -7812546, -3613141, 5890548, -5367636, -5375152, 7592429, -8492761, 4267587,
+7157563, -14960982, 14680735, -3738769, -17662516, 9329743, 9219684, -8215736, 2782065, 5312875,
+-7506529, -6671695, -30602, 977105, 4715874, -2437394, -985695, -7422241, 6707665, -5820755,
+-1960653, 8497593, -10381473, 2943663, -1960116, 537, -4941897, -6669011, -2804077, 11552925,
+-8022999, -3050501, 1767916, 2426657, 226560, -7057705, 5236102, -3185792, -6171868, -214212,
+-11223823, 16199006, -7291781, 3245922, 3467649, -3388729, 5512591, -9710921, -8002598, 9837623,
+-4982699, -6755447, 6498286, -497679, 1719598, -4524748, 1048509, -1047435, 2896956, -3624953,
+-2923262, 3686693, -2313377, -2662343, -837519, 2300492, -1682017, -285078, -1394254, 560493,
+2109903, -3238405, -3337190, 9229885, -2887829, -3404835, 2763812, -1144072, 2557116, -7543037,
+348966, -1321776, -383863, -2059974, 8568460, 32212, -7832947, 2430952, 689879, -416075,
+-95026, 3307662, -2353642, -2296197, -1138703, -2080912, -1166084, 871878, -2570538, -149250,
+550830, -426276, -26924614, -43533252, 19808390, 150964880, 22950158, 75496400, -17844516, -76489072,
+-28005334, -74539160, -49331456, -15467251, -8367133, 3696356, 44215076, 53475564, 73899208, 73679624,
+23216446, -28929290, -47203840, -86189256, -66285304, -34646964, -13700946, -8682813, 26505316, 44884556,
+34419868, 47284904, 45532560, 16986058, 14657650, 5738077, -33583960, -12269648, -28896540, -49605800,
+-30228516, -28915868, -43283068, -9030706, 20010252, 15474767, 43853764, 57821536, 29873646, 38567732,
+28762322, -3905736, -1402844, -2551211, -31161062, -38048040, -34211024, -51158968, -43852688, -15299747,
+-2707977, 6361921, 35465692, 32928978, 31448824, 39946416, 29573534, 10370735, 18640158, 10455024,
+-11716134, -5360656, -21543020, -44891000, -27226872, -25402048, -35612796, -16935592, -11501386, -19787452,
+16739098, 32068910, 36714456, 58931784, 55248312, 23538568, 13623099, -607201, -20195474, -23659902,
+-24696598, -35616552, -32888712, -29924648, -27705760, -17071422, -6964827, 114890, 13319230, 31664646,
+39142184, 36679020, 43939664, 30680026, 14680735, 6418292, -5219459, -22428856, -25631828, -35418984,
+-46540804, -46643344, -37297496, -30897994, -4825933, 18759344, 41471668, 55892020, 60211684, 46755552,
+30258044, 13627931, -3714610, -23162758, -34282964, -46044196, -45962056, -32665910, -21626770, -6379637,
+8260833, 16751446, 21894670, 27651536, 23643258, 14987825, 12470974, 4644471, -334471, -4184372,
+-5699422, -7177427, -7224672, -10187662, -8482024, -6447283, -5515812, -5310727, -3599183, -3301756,
+-688269, 1966558, 5734318, 7007776, 9283572, 9989557, 10385768, 6591164, 3959960, 852014,
+-1174137, -5822902, -8022462, -10578504, -10247255, -8760660, -5264020, -3508452, -652835, 1043140,
+5143760, 7254200, 9100499, 7361574, 7191386, 4971962, 3288334, 725313, -238371, -3233037,
+-4668093, -6922951, -7361574, -7902203, -5450314, -3702262, -180926, 1221918, 3981972, 5010616,
+6284074, 4776541, 5083094, 3544422, 2928631, 493384, -738198, -2879239, -3099893, -4439386,
+-3847754, -4268661, -3074660, -2729989, -552440, 130997, 2287607, 2762201, 4207458, 3472481,
+3717831, 1727651, 1124745, -486405, -272730, -1509144, -1328219, -2576444, -2024540, -2629594,
+-1525250, -1627256, 6442, 179852, 1654636, 1283658, 1989107, 1042603, 1538135, 414464,
+799938, -340376, 139586, -752156, -92342, -883690, -73014, -737124, 133144, -539018,
+293668, -394063, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-1142998,
-6171331, -3469260, 1033477, -5156645, 1442572, 577136, 7864085, -4713727, 13959, -2481954,
-3939559, 4020090, -2570001, -493921, -2209761, -1271310, -2583423, -3217468, 2364916, 768262,
--2105608, 4383014, 3991635, 6824703, -208306, 2579665, 1351841, -122943, -6180458, 1596654,
-2563022, -2446521, 1535988, -1806571, -2101850, -3398393, 1750199, 4350265, 441845, 5077188,
--2086280, -445066, 5122286, 2673080, 405338, -75699, 4864051, 7308961, -5454072, 1206886,
--1890323, -857383, -8485245, -3022046, 3415573, -2646774, 2363306, 1082332, -1255741, -2071248,
-1188632, -719407, 2631741, 1417876, 1219771, 1337346, -4412542, 150324, -2128156, 2690260,
-4475893, 3131568, -652835, 4845797, 18254, 2045478, -658741, -1098438, 245350, 2420751,
-2796024, -937377, -1933809, -3979824, -527207, -1766842, -1890859, -1076426, -1611687, -1161789,
--1895691, -1006096, -63888, -47245, 25770, 1539746, -1099512, 794032, -409096, -783832,
-23622, 690953, 242666, 544924, -19864, -550293, -10737, 704375, 221191, -1103807,
--857383, -69793, -11811, 407485, 394600, 30065, 875100, -1112397, 3733400, -4562866,
--4649839, 118112, -6283537, 1104344, -1937030, 3022583, -1639604, -5091684, 632434, 4873178,
--694174, 110059, 6927782, 8572755, -3665218, -4021163, -1065689, -6477348, 2801929, 526134,
-1660005, -2316598, 3486440, -4531728, -754304, 3002182, -2456185, -977642, 529892, 5502390,
-418222, 3964792, -5244155, 5151814, -507880, 693637, 3434900, -2971581, 2876018, -1381906,
--1286343, 2364916, 3260417, -602369, 1890859, -7096360, 4315906, 4069482, -7397008, -6625524,
--1793149, -5505075, -1464584, 2015950, 1416266, 1922535, 176094, -1875290, 4651450, -1597728,
-230318, -1895154, 1143535, -2839510, 3967476, 897111, -2942590, -1740536, -1127429, -1802276,
--1478543, 3894462, 5244692, -307090, -993211, 141197, 1722819, -1138166, 3684008, 1995549,
--1415729, -338229, -860067, 1512902, -1452773, -103079, -335544, 179315, 638876, -149787,
--380105, 921807, -694174, -312996, 270046, 594853, 118112, -1374390, -840203, 193274,
--798864, -785979, 936303, -520765, -1538672, -1094680, -1224066, -403727, 273804, 1484985,
-11079942, 2135673, -4117263, 5160940, 641024, -3474629, 10121627, -6782290, -9753871, -5690295,
--5917928, -1968706, 2871723, 3575560, -3376918, 5137855, -6428493, -3478387, -784905, 2150705,
-1593970, -1932198, -2529736, 5748277, 1096290, -365072, -3214783, 4299263, -3129958, -696322,
--10737, -334471, -452045, 1692217, 886374, -852551, 3565897, -1652489, 2174327, -122407,
--5820755, -2252174, -2324651, 6222334, -3430068, -4139275, -7556458, -8798241, -1611687, 484794,
--3523484, 6738804, 909459, 3636764, -2702608, 5839545, 2480344, -3325379, 9361418, -4199405,
--4522601, 764504, 5871757, 8637716, 6096169, 2057826, -2985002, -6722161, 2705293, -38655,
-6678674, 2726231, -1893544, -184684, 3412889, 2778307, 63351, -588947, 294205, -1282585,
--2793339, -215822, 899796, 747324, 2444373, -33823, 1489280, -461709, 1180042, -241592,
-240518, -194884, -1623498, 210990, -279173, -2049773, 1714229, -330176, 1059246, -512712,
--1109712, 217970, 225486, -19864, -716186, 844498, 339302, -491774, -143881, -1555852,
-237834, -847719, 846109, -236223, 1782948, -30065, -872415, -711354, -10559177, 1709934,
--3875134, 2504503, 643708, 7614440, -9768903, -5473936, -7183333, 3889630, 3120831, 4655208,
--5137855, 1822677, -1559073, 719944, -7973607, -6687801, -5006858, -4840428, 7962333, -3151432,
--1005559, -70330, 2686502, -1200443, -8465917, 3627637, -3391414, -1024887, 3859565, 3005403,
-4436701, 366146, 2355790, -5825587, -2477123, 5372467, 8757438, 5238250, -416612, -6635725,
-4754529, -2084133, -5833103, 8093866, 2347737, 2838437, -4961224, -2791729, 2720325, -1729261,
--2774549, 4312147, -3359738, 1556389, 184147, -5498632, -1210644, -3608846, 5842230, 3075734,
--838056, 1089848, -2721399, 3564823, 559956, -9664, 1010391, -6593849, -3504157, 3864934,
-1800128, -998043, -882079, -4660040, 7775502, 9742060, 5309654, -4328254, 3937948, 777926,
-3358665, -1374390, 2758443, -2023467, 1779727, 3623342, 1883343, 1789928, 1263794, 168577,
--1203665, -295816, 3439732, 281857, 213138, -1196148, -264141, 827855, 2062658, -155693,
-2426657, 505732, 47245, 15032, 1967095, 2543695, -1080184, -358630, -289373, 488016,
-1727114, 9664, 455267, 241592, 402653, -762894, 2910377, -15850577, 5289789, 799938,
-3943854, 4263292, -3092913, -11213086, 8637716, 3662533, 8498667, -1570347, 4504884, -96637,
--3060164, -219043, -7924215, 9683004, 2210298, 907849, -4992900, -2877628, -3383361, 2883534,
--4454418, 7410429, 320512, 2541547, 4130148, 2270964, -483184, 2381559, 2282775, -1751273,
-1919850, -8271570, 2137820, 3744675, 3841848, 7393250, 2564632, -4970351, 2471217, -2515777,
-5030481, 955630, 3656628, 5620502, 912681, -1258425, 4409858, -3067144, -4818954, -1801202,
-3070902, 7794292, -1868848, 466541, 124554, 908386, 1519882, 3248606, 1096827, -2085207,
--385473, -2803540, 1997160, 619012, -4974109, -4394289, 1722819, 2719788, 2740726, 4879620,
--7587597, -4106526, -5536750, 6455873, -2882997, -4064650, 2083059, -3750580, -5415417, -1987496,
-129386, 5737003, -2063732, 1828046, -2321967, -1389959, -358630, 1717987, 741419, -1088774,
--900333, 1064615, 2844879, 927713, 1629940, -841814, -569620, 1899986, -102005, 85899,
-705985, -1405528, 2537252, -850404, -204011, -1250909, -3294240, -560493, -746251, -296890,
--62814, -1285269, 102542, 2870649, -757525, -341987, -585189, -1144609, 3825742, 16178068,
-8454643, 7730405, 11063836, 3117610, 1950989, -6735583, -309238, -12669080, -2383707, 4941360,
-3439732, 2349347, 2863133, 3593277, -2840584, -1782411, 7223062, 6675453, 5567352, -345745,
-704375, -9025337, -7978976, -2904472, 5675263, 1948305, -1287417, 3214246, -5397164, 584652,
--2829310, 6424734, 4889284, 11221139, -1198296, 4284230, 3408057, -1710471, -5935645, 10561325,
--6187974, -1301375, 4650376, 308701, 2602213, 7635915, -2509335, 2898566, -7402913, -15537044,
--8759586, -5101885, -2195265, 804233, -722091, -3947075, -8493835, -1669669, -6127308, 1931125,
--239444, 823560, -9567577, -4230543, 6036040, 2199023, -470836, -10415833, -9599252, 5731097,
-913217, 3519726, -7062000, -5474473, 269509, -2755222, -6040872, -4141959, 3229816, -1210107,
-1430761, 517007, 4064113, 3133179, 1324997, -2043868, 1021129, -302258, -2634963, -2418604,
-2291902, -950262, 602369, -1537061, -2548526, -350040, -303869, 2243047, -349503, -2035815,
-462783, 886911, 2288144, 544924, 469225, -940061, 2891050, -1065152, 3306051, -1808718,
-2423972, -2165737, 282394, 1401770, 8590, -89121, 439697, -533650, -865436, -8164196,
-6182606, -3642669, -280247, -21214454, -4984847, -7856032, -5162551, 840740, 7015829, -1414118,
-9270150, 4879083, -529355, -9134859, -3757023, 13543106, 2284923, -8138963, -5917928, -2700998,
-6374805, -4977867, 91268, 4354023, 6933151, 7787313, -8545911, 5740224, 793495, 1609539,
-2458332, 3143379, 2765422, 7807177, 227633, 2355253, -6848326, 9572945, -4809827, -2281165,
-1622424, -7986492, 9861782, -1582159, -19248970, -6389301, -15454366, 922881, -218506, -4694936,
-20974472, -3690451, -10377178, -3544959, -2549063, 9613211, -1316944, 4574140, 5652714, -3956739,
-7197829, 9908490, -5044976, 3758633, -8827232, 4283156, -3165391, -2517388, 10196789, -3755412,
--976031, -4555887, 270046, 151398, 3889093, 5735929, 6101001, -1648731, -1731946, 219043,
-7901666, 3726958, 4107063, 136902, -6455336, 2571612, -3135863, -3532074, -1931125, -84826,
--182536, 399969, 1432909, 1487669, -381178, 4275640, 693637, 1859184, 745177, 832150,
--1203665, 1121523, 432181, -1285806, -1883343, -1236414, -3237332, -2543695, 2224793, 1781875,
--2741800, 734976, -153008, 759672, 3088082, 648540, -1214402, 329639, 991601, 63351,
--2506650, 1103807, 9598715, -13419088, 2649995, 2782602, -4299263, 1836635, 10096931, 10895258,
-3987340, 3913252, 5137318, -8383240, -1510755, -8954470, -238908, 5756867, 3578245, -1870458,
--7157026, -2282775, 4742718, -9290551, 257698, -649614, 4233764, 8877161, 775778, -4765803,
--3706020, 9494562, -6163278, -2934000, 5389110, -3389266, -11283953, -4056060, 2477659, 1902134,
--4559108, 1053341, 5762773, 4033511, 5553393, -660351, 4165582, 8061117, -3637301, 4015258,
-3380676, -5514738, 11872363, -11498701, 6765111, 3013457, -16069083, 15287936, -9987410, 2166811,
--1861332, 12196633, -5276904, -8659728, -1939715, 67109, 2113124, 9364639, -8071318, -403190,
-464930, 535797, -1540283, 2761664, -6589554, -966368, -4732517, -8645769, -9673340, 5134634,
-4060892, 3965866, -23085, 6032282, -2908767, -7017440, 1700270, -12411919, -10452340, -1969779,
-2905009, -133681, -2036888, -1629403, 1358283, -6812892, -2390149, -1461363, -1230508, 3113851,
--455803, 483184, 128312, -2266669, 986232, -2544768, 58519, 1149441, -2845953, -624381,
-2166811, -1839857, -120259, -1307281, -238908, 797790, -54224, -3775813, -723702, -107911,
--323196, -702764, -2415382, -3892851, -1060320, -305480, -673236, 3038689, 2160906, 352187,
--856846, -10872173, 8650601, -24715390, 13598940, -9931575, -6567005, -12163884, 1469416, -1599875,
-2229088, 8413841, -7089918, -2930778, 6943889, 6081137, -1949378, 2267206, -3211025, -11413339,
--988379, 2671470, -5688684, 8916352, 1601486, -1220845, -5327907, -5469641, 1293859, 13826573,
-635655, -2126546, 3874061, -12252468, -2051384, 4257387, -8160438, 11592654, 7495792, -581431,
--3572876, -4097399, -4507032, -8198019, -9912785, 8194261, 639413, 14680198, 1366337, -926639,
--6651294, 1078037, -2596845, 3177202, -191126, -9504763, -7297687, -9681930, -16037408, -2388539,
-14165339, -13684303, -818728, -14321568, 2276333, 3841312, 3308736, 9963787, -1098975, -14716705,
-10468983, -1160178, -7038378, -6025839, -12577812, -4457639, -9561134, 5103495, -14688788, -2595771,
-5791764, -256624, 1132261, 6888591, 3594888, 8302709, 47245, -4711579, -1792075, -3272765,
--143345, 2977486, -848793, 406948, 440771, 199716, -2441689, -3716757, 2269353, -2643552,
-1104880, 317828, -500901, 986769, 386010, 338766, 5083631, 788663, -290984, 839129,
-1612223, 999117, -2548526, -509491, -5371931, 1898376, 2786360, 4092567, 1516124, 1334124,
--83752, -2836289, 1635309, -232465, 10553808, -3863860, 9383430, -9159018, -4854924, 6412923,
-2057289, -12361990, 801011, 16071768, -18518288, 1088237, 8651138, 20808042, -8899172, -5300527,
--2281165, 16109885, 15822660, -16734803, -787590, -12859132, -6155225, 8360154, 8415452, 11012833,
-6256157, -2199560, 7745974, -9598178, -5173288, -976031, -1479079, -13889387, 1222992, -334471,
-18347564, -2856690, 9039296, 2163590, 5355824, 12267500, -7445863, -3340948, -18134962, 12461848,
--15984258, -2868501, 3661997, -2191507, -9236327, -2351495, 2612414, -6600291, 1789391, -1110786,
--1408212, -20414516, -14442364, 965831, -10474888, -14350559, 2626909, -13273060, 4199941, 8557722,
--7779797, 14731201, 3090766, 9433359, 10165651, 2556043, -7565048, -9012989, -11155641, 5664525,
--11575474, 6890738, 8344048, 11461657, 2022393, -8281771, -5289789, 156766, 1101659, -15374372,
--391379, -9985799, -1700807, -2884608, 601832, -7337952, 936303, -1747515, -122943, -4801237,
--3454228, 1035087, 7614440, 711354, -751082, 938987, -1109712, -2929168, -2804614, -3164317,
--1369021, -3739306, 3914326, 2770254, -297963, -3120294, 4653060, 6894497, -1588601, -1338419,
--1688996, -841277, -268435, 1597728, -2696703, 2654827, 2551748, 1638530, -2571075, -523449,
-1421634, 1896765, 4790499, -9854802, 25435334, 10605348, 4418448, 13080860, -4990215, 2753074,
--13493177, -17392470, 10977400, 22362820, 6674379, -103616, -22079354, 26670136, 3875134, 3285113,
-3846143, 989990, 4842039, 1523640, -3800509, -163209, 6755447, -4133369, 8483634, 1626719,
--6642704, -9243843, -2503429, 8447127, -2292976, 2757906, -3798899, -3388729, 163746, 23929948,
-3892851, 3462281, 3253975, 2020245, 14363444, -5343476, 4148402, -9266929, 17108466, 23803246,
-6226092, -1371168, -8450885, 24872156, 11711302, 366146, -9603010, 3637301, -5752572, -892816,
--11020886, -4149475, -7347616, -10126996, 16391206, -4912369, 12084964, 2530273, -9387725, -140123,
--20113332, 19137838, -1367947, -9156333, -7132330, -11668889, -14361834, -7865159, 22288196, -6941741,
-8039105, 10117869, -8985072, -8563091, -16054588, 2423972, 10846403, 3721589, 10370199, -2385854,
--2035815, 469225, 2954401, -4415227, 1247151, -7997229, 2608119, -366146, 9091909, 6416145,
--4909148, 502511, -266288, 5414880, -1836099, -7189239, 1596117, -213138, -587874, 2688650,
-490700, -1114007, -3616899, -4021700, -787590, -944893, 4262755, -141197, 4272956, -5860483,
-1403917, 4468377, -8371428, -6052683, 2172717, -4483409, -1199907, -2640331, 6253473, 7545184,
--5621576, -5942624, 23659902, 23226646, 28656558, 17270064, 5679021, -7276212, -7584376, 4305168,
-8315057, 10205916, -15249818, -435402, -1828046, 7659001, 6023692, -10558103, -13050795, -34897,
--4952098, 12446278, 14615774, 10737, 7742753, 2570001, 3088618, 16909286, -10327249, -13656385,
-10773389, -17889076, 1537061, -5500780, 9873593, 5062693, 171799, 11579232, 10602127, -9628780,
-12013560, -6442, -5155035, 2865280, 13051869, -5028870, 5577552, 9706626, 4372814, -20851530,
--12079596, 2078227, 1092532, -14169097, -9707700, 4736812, 6742025, 5762773, -19346680, -13482439,
--13467407, -1043677, 8370355, 12247099, -30727806, -22550188, 3745212, 4745402, 17730162, 6281927,
-6494528, 12944495, -1403381, -3288334, -4702453, 31741956, 10950556, -4976257, -16609712, 15190762,
-9891310, -4930086, -4523138, 2369748, -4582730, 8128763, -2941516, -1704565, 4751845, -1150514,
--1919850, -2469069, 4989679, 13032541, 71941, 957241, 434865, 5686537, 7239704, -1817845,
--4592394, 1997160, -449898, 1495722, 826781, 1147293, -6191732, -3331821, 4342749, 477278,
--2537252, 2166811, 6051609, 4769025, -8188892, -1797444, -5456219, -5187784, 3837553, -6200322,
-2409477, -3326989, 6020471, 4733591, -7230041, -10070625, -19499688, -18974628, -15600932, 6022081,
--2011655, 8806294, -17200808, -2833068, 801011, -6634114, -8050380, 13983877, -5358509, 2833068,
--214748, 974958, -14025216, -5157719, -11993696, 1597728, 1580548, 3118683, 33149094, -12911209,
-9153649, 13959181, -7085623, -6680285, -10033044, -2023467, 15483357, -15796890, 10816338, -1031866,
--2636036, 1457068, 1584843, 8494908, 951335, -16757889, 12819404, -10436771, -24060406, -19468014,
--9758703, 32571958, 27630062, -15014132, -4325569, -20613696, -17211008, -6788733, 20116554, 530428,
-13874355, 7261179, -9466108, 10586021, -7207492, -21453898, -1821066, -13005161, -2655901, -6964827,
-42362872, 396748, -35072704, 27543626, -11114838, -7808251, 27814746, 28284508, 89657, -12369506,
-5511517, 6926709, -38087232, -16372415, 1005559, -5586142, 19932944, 8454106, -28896004, -4308926,
--2325188, 13111998, 8325794, 5717675, 5171678, -5999533, 1022202, 2314987, 12079596, -1478543,
-1653026, 2393371, 2054605, 7128035, 3357591, 184684, -8268886, 10473815, -960462, -23085,
-470299, 40802, -4478041, -6929393, -4787278, 977105, -1741609, 3072512, -496069, -3050501,
-3297998, 7743289, -10283762, -3299609, -3158412, -1433982, 2892661, -160524, -2965675, -5742372,
--2204392, -1452236, 5313949, -16953846, -10395431, 5033165, 4089883, 9079024, 28953986, 4885526,
--646929, 6662031, 1599339, -12095702, -7283191, 6373195, 1575716, 23472534, 5655398, -1563905,
-8615168, 12556337, 12913356, 13707388, 833761, -9782862, -2600603, -22221088, -2920041, -25078314,
-14017163, -15302968, -5800354, -30065, 20307680, -11829414, 11336566, -8340827, 6901476, -10434623,
-12989055, 19398220, 1409286, -4235375, -10418517, -15247671, 8547522, 9587978, 24815248, -3467649,
-1316944, 10784126, 39697844, -9365713, 6013491, -6534256, -21996138, 15372762, -3088618, 10894185,
--1298691, 2605972, -13226889, 36556076, -54951424, 40371620, -63061932, 27084600, -32500554, 9986873,
--25471840, 9061307, 16990354, -4182761, 12638478, -6610492, 46104328, -28071906, 30629560, -47521664,
-23957328, -18728204, 23049478, -15605227, -16677358, -8342974, -4188130, 11450920, -3138011, -2215130,
-1201517, 539555, -5873905, 8086350, -8883603, 8552354, -6410776, 2488934, -10225243, -5936182,
--7546795, 1162326, -6937983, 8425115, 9234717, -8929774, -111132, 3276523, 8474507, -1495186,
-3054259, 6696928, -6464463, 11214696, -3163244, 14901389, -9004399, 17890686, -12919262, 4414153,
--1048509, 9856413, 8407935, -1874216, 4925791, -14250701, 15940234, -11229729, 3876745, -11414412,
-8055748, -15137612, 5097053, -1559610, -5443334, 5290326, -10698764, 1620276, -5255430, 5214627,
--5200132, 2987687, 1881733, 1400159, -4005594, 13980655, 11272142, 44399224, -30859340, 12913356,
-8177081, -26672820, -691490, -5250061, -7529615, -13709536, -686658, 1566053, 17726404, 6584185,
-9299678, 13278428, 10803453, 395674, 14787036, -17003776, -2401961, 20476794, 2328409, -28113246,
--6416145, -36786932, -6831146, 6411313, -6772090, -8578660, -1557463, 32875290, 8354785, 2515240,
-4058744, 8227547, -2437931, -18864034, -5733782, -2096481, 3544422, -4351876, -8770323, 23805930,
-12858058, -4925254, -1092532, -5119601, -21489868, -17675938, -12872554, -10734734, 24067922, 5785858,
-8907225, -14484240, -14026289, 4521527, 9818295, 9019431, -4033511, -2849174, -16294569, -10792179,
-14294188, 643171, -39494372, 13903346, 21599390, 6900939, -17194364, -10597832, -8551817, 2831994,
--12372727, 6123550, -29065654, -38890392, 16123844, 14026826, -7746511, -14299557, 10936597, -6403796,
-2850248, 3376381, -5705327, 6222334, -3526168, -3660386, -2085207, 9346386, -6630893, -1967095,
--7256884, -106300, 630286, 6248104, 6493991, -731755, 3833795, -4599373, 7583839, -5276368,
-6197101, -14310831, -6497749, -1977296, 4147328, -4681515, -9319005, -7162932, 3423626, 7368017,
--264141, 9521406, 2688113, 3764002, 596464, 6199249, -3499325, 5925445, -1421634, -11787538,
--9059160, -3474092, 5374078, -6626598, 3905736, -9889699, -4350265, 4523138, -36686000, 32114008,
-39024608, -3651259, 28363964, 1160178, 4306779, 12372190, -25116968, 9124121, 18529026, 18318036,
-7648800, 5673652, -18174154, 13267154, 7766375, -11005854, 5817533, -2190433, 21590800, 5960341,
-5489505, 12780212, -5174899, -14738717, 4211216, 27551678, -9921374, -5370857, 24841018, -9154723,
--11187853, -9078487, 8520141, 32004486, 44471700, -2781528, -28937342, 43663176, 14986752, -28777354,
-32518808, 12461311, -8133595, -8367133, -12271258, -20282984, -1207423, 10633265, -17444546, -11398306,
--36788004, -5001490, 21328270, -44511432, -24158654, 7015829, 7119982, 8767639, 26941792, 23878408,
--39602820, 314069, 1461363, -28002114, 7761543, 13306346, -14415521, -10263898, -12180527, 8097624,
-31026306, 9711995, 16109349, -21268678, 10776073, -24081882, 2050310, -16202227, -65805340, 50267760,
-12868259, -18373334, 33983392, -11766600, -15567109, 9132711, 6899328, 8732742, 13252658, 5356361,
--13429826, -4274566, 12999255, -459025, 4964982, 2074469, -2203855, 3173444, -5925445, 4309463,
-12139188, 4369056, -7261179, -5362804, 3662533, -3305514, -6595459, 2449742, 7547332, 4382478,
--22805740, -6920266, -16813186, -8733279, 9695352, -7511898, -9427990, 8864276, 5689221, -9863392,
-12400644, -9257265, -4100083, 4430796, -7299834, 8149164, -3718368, -13539884, 11138461, -20889110,
-24067386, 79678088, -25418154, 678068, 6154688, 35963908, 31936304, -10464688, -13820668, -20120848,
-889058, 15223512, -473520, -10294500, -10533944, 14367739, -7813083, -19350976, -17248052, -3506304,
-29326574, 20529944, -23252416, 1553168, 464393, -10165651, 11587285, 4263292, -8269423, -2751464,
--6494528, -3129421, 37431712, -13926968, -24785720, -17383344, -14067092, 33063196, 961536, -7667054,
-30494804, 20930986, 8367670, 15497316, 29988536, -18204756, 4665945, 29135448, 17082158, 22260816,
--25229174, -7118372, -893353, 10669773, 10094784, -23917600, 2335925, -31425202, -47231220, -2478733,
--12455942, 21973590, 24472724, -6387153, -1884417, 4977330, -17137456, -45779520, 30880278, -22172232,
-4822175, -8522289, -15431281, -8960912, -17903034, -36279052, 21499532, 19110994, 23211078, 4499515,
--28795608, -50658064, -14993194, -13990856, -6142877, 16058346, -10311143, -2500208, 3119757, 2188286,
--8004746, -3649112, -6418292, 825171, -2826089, 5401458, -3120294, -3890704, 5941551, 7694971,
-6120866, -12218108, 4078608, 746787, -1045825, 198105, -26884348, 1358820, 3790846, 4020626,
--17691508, 11616276, -2482491, -14724759, -12031277, 7243463, 9572408, -1713692, 5712307, -9050570,
--6345814, -6146098, 790274, 11084237, 2858838, 10591926, -189515, 4948876, -15590194, -2356863,
--3685619, -2876554, 12297565, 5901285, -366683, 3959960, 1898376, -12279848, -3957276, -38960724,
--22618908, -18070002, -46261628, 53382684, -1402844, 28199682, -6578816, 1569811, -32300838, -17389248,
--16756278, 3883724, 24978992, -982474, -26388816, -19425600, -37643776, -41528040, 35574676, 13363791,
--32647120, -9906342, 15824270, 29950418, 3980898, -36793376, -22665616, 7452305, 10146860, 9342628,
-21383032, -22814330, -22003654, -3183645, -7936026, 3209951, 6229313, -44248900, -8384313, -30813170,
--20039244, -41150620, -15862388, 56761216, 9558450, 1953673, 13680545, 14198088, 4230543, 42223824,
-33093260, -10842645, 11107322, 56994216, -15093589, -13108777, -13780403, -42169064, -1840930, -23012972,
--52796960, -54985780, -29125784, -28303834, 12672301, -21154324, 1651952, 11355894, -37687264, -13561896,
-21475, 11274, 9456444, 24678346, 16076063, 29724394, 39798240, 29210072, -3796214, -20953534,
--30878130, -2424509, 12465069, 3925600, -4537096, -190052, 8467528, 7217156, 18623516, -1921461,
-2779381, 539018, -6507949, 6371047, 747324, -2822867, 15880105, 7185481, 3428995, -14875082,
-9932112, -5191542, 7435126, -14093935, -39982924, -1625645, 15472620, -2723009, -21327196, -13293461,
--15667504, -11388643, 4815732, 7201050, 7665443, 2429341, -1627793, 6204617, 15347529, 26271242,
-24325084, 30815316, 25914758, -2175401, 17366700, 40119828, 2638721, -17110612, -25095494, -24720758,
--34323768, -27347130, -13429289, -14477261, -2214056, -4151086, 35050692, -22859964, 6781754, -26508002,
--9223442, -28928216, 3548717, 35430260, -1003412, 21950504, -43813500, 38483444, 12647605, -7721815,
-30185030, 4391604, 13613973, -12030203, -14565308, -153008, 9088688, 7252053, -30684320, 28070296,
--33983928, 4240207, 9207336, -11357504, 19650012, -20883204, -12166569, -2225867, -7740605, -10534481,
--2604361, 4581657, -15851114, -18294414, -6223408, -3144453, -4787278, 11227045, 5783174, 4608500,
--22572738, 5985574, 26818312, 35990752, -26812944, -13313325, 30254824, 41834056, -25651156, -15637439,
-17308182, 7427609, -20447802, 16733193, -47601660, -9290551, 18930068, 37804840, 4577899, -23433878,
--21544630, 5739687, 44940392, 3947075, 6432251, 1352915, 14666776, -2913062, 33291366, -385473,
--37615860, 23480586, -24679956, -7477538, 9919227, -14251238, 3007551, -30353070, -11696270, 28069222,
-12543452, -12641699, -18416282, -9903121, 1937567, -14672682, -4831838, -3284576, -9383967, -5558762,
--4756140, -19047106, 11582453, -7168838, -8863739, -27567248, -7379828, 20133196, -14442901, -7812009,
--7750806, -15792058, 29765198, 12311524, 696322, -1096290, -17263084, -25268366, 1138703, 22395570,
-17996986, 6083821, -19404662, -11176042, -8938364, 10859288, 1519345, -16952772, -4663261, 967978,
-6137509, -15095736, -10578504, -8957691, 22959822, 11909407, 1003949, -14666776, -13122199, 13036299,
-27690728, -404801, -12677133, -17481590, -6432788, 7741679, 68183, -4097399, 447750, -3543348,
--3233574, 2617783, 8378945, 125091, -1859184, 48855, -76773, -2177549, 519154, 75162,
-191663, -3031710, 1941862, 419833, -57321708, -15415711, 9221832, -18843096, 55827596, 41513008,
-26599270, 14685030, 37533184, 27132920, 8519605, 18585398, -45026828, -59628104, -8739722, 894964,
--15833934, 8340827, -3267933, -15341623, -20066088, -15717970, 30667678, 27357332, -22049826, -2464774,
--3418794, -5121212, -8097087, -10966662, -16786342, -22630182, -4780836, 40842992, -13355738, -22192096,
--11145440, 38356204, -18158048, -17158932, 58474368, 21268678, 9524090, -13990856, -32719598, -22251152,
--33735896, 9353365, 27151710, 74674448, -65690452, -27365920, 37956772, 53410604, 8895414, -2776696,
-67768680, 33017024, -21860846, 22087944, -8207146, 647466, -47544216, -23404350, -16848082, -76951320,
--33165200, -12060805, 41294500, -22103512, -13389561, 31493384, -2421825, -3690988, 7082401, 22299470,
--21486110, 15897821, 23305566, 1000727, -4853850, -43220256, 19803020, 16124381, -50836308, -3177202,
-5117991, 3758097, -4643934, -21925272, 5622649, 4302484, 5957657, -3048353, -6825240, 16648367,
-3101503, -2864743, 10788421, 5122822, 29329258, -3553012, 9390409, 2387465, -23907398, -20018306,
-14072997, -10914586, 8422431, 11599096, 6535867, 7361574, -141734, 20131586, -6596533, -4389457,
--8074002, 6151467, 14944339, -22482006, -8893267, 11575474, 4802847, -12507482, -23797876, -5470715,
-6116571, 49370112, 18023294, -4037269, 12719546, -2421288, -4625680, -18086644, 8655970, 7608535,
--14391899, -6896107, -52210160, -2034741, 21417392, -4948339, -21804476, 9610526, -4941897, 23556286,
-4633733, -11270531, -235686, 25215216, -14352170, 4140349, 9021579, -7541963, -272730, -13486197,
-27685896, -1561758, 4079145, 550293, 13356811, -5961952, -5266704, -8560407, 5499169, 10536092,
--4612795, 12497818, -5404680, 7746511, -13052942, -10131828, 15756088, 20378546, -26212186, 1345399,
--1611, 2577517, 8214125, -16341277, 25228638, -22499724, 20300162, 2976949, -35357244, -1793686,
-27542552, -35822176, 17129940, 294205, 4621385, -8493298, -5410048, 7408819, -10453950, 36969468,
--27264452, 4219806, -7330973, -3155190, 9063455, 667331, -4488241, -691490, 11119133, -190589,
--12795244, 3760781, 6471979, -21231634, 16630113, 7678328, 771484, 15512348, -5628555, -4576825,
-7214472, 3526168, 4573604, 2784750, -4242354, 8842264, 3722126, 824097, -9366787, -1360431,
-4566087, 8492224, -14210973, 7625178, 8845485, -12359842, 5952288, 2040646, 2134599, 6827925,
--3738232, 1685775, -2343979, -18001282, -276489, -4190278, 7953743, -4912369, 3036005, 2219961,
--752156, 2655364, 4609037, -2786897, 4832, 1056025, -130460, 1557999, 5534602, -5399311,
-5185100, -3871376, -26125212, -74351792, -105827456, 35454956, 94358288, 20614770, 261303120, 214914256,
-145441008, 245756960, 128209072, -8976482, -30627948, -97371744, -224212320, -185459376, -180080992, -250747712,
--185156576, -54676008, -40101572, -6868190, 87144888, 40252432, -10856067, 54944444, 91399592, 44422308,
-42788076, 82849384, 49507552, 37850472, 75315472, 117999928, 49192944, 69087232, 111020608, 18638010,
-7406134, 97752920, 57919244, -38123204, 47185584, 60537564, -63869384, -19506130, 70173864, -14703284,
--42353748, 90369336, 47950088, -56962540, 48535276, 64142652, -86594056, -81399832, -34810708, -209069888,
--276921248, -174123344, -244870048, -326615072, -227492608, -233121168, -300910240, -238358880, -165195712, -179405616,
--107215808, 9454834, 66267588, 144245936, 236810000, 294972992, 363720928, 403843968, 441564512, 467922176,
-420399456, 330134816, 305214336, 195104256, 58661736, 45617384, -31954020, -151459344, -118860000, -51153060,
--112661824, -116146120, -25021942, -82155744, -156194000, -94966024, -68860672, -140171088, -119204136, -42999600,
--106066368, -126192584, -10868952, -7496329, -57249228, 21065740, 12053826, -91968672, -68215352, -40386652,
--130109056, -179216096, -146507248, -200056896, -247487824, -184275568, -148000272, -140817488, -62255552, 26839788,
-72679976, 108129024, 150285744, 169405856, 152055264, 198335680, 255121600, 264124912, 246830160, 251007552,
-242315616, 195974528, 221865120, 199703088, 84766008, 8872866, -51882668, -112039592, -118010672, -98192080,
--115197464, -113159504, -98137856, -97368520, -103357312, -86001888, -77017352, -74287904, -70239896, -55718612,
--52980032, -55573120, -45278084, -32722282, -30918932, -25280178, -14262513, -8874476, -7583839, 3173981,
-4186519, 2573759, 5940477, 11767137, 10277320, 12956843, 15501611, 13358959, 8629663, 5589900,
-3449396, 3947612, 2647847, 3586298, 2702071, -984084, -5224828, -3391951, -157303, 5545340,
-13037910, 21184390, 21923124, 24856586, 30047054, 32565516, 34510600, 40690520, 38627864, 32845762,
-29588030, 28043988, 19981798, 17135846, 15855409, 9361418, 2532957, 3197603, -2459406, -9362492,
--13837311, -20078972, -30206504, -33157684, -34616900, -36128728, -37577204, -34288872, -32960652, -30710626,
--26059714, -19342386, -16582332, -11716134, -8262444, -7092065, -5049271, -410706, 1660542, 5151277,
-6913287, 9184788, 9975598, 11004780, 11106785, 11664057, 9825275, 9531069, 8243116, 7568806,
-5897527, 5883569, 4462471, 4192425, 2918430, 2924873, 1637993, 1674500, 719407, 1017907,
-98247, 421981, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+6171331, -3469260, 1033477, -5156645, 1442572, 577136, 7864085, -4713727, 13959, -2481954,
+3939559, 4020090, -2570001, -493921, -2209761, -1271310, -2583423, -3217468, 2364916, 768262,
+-2105608, 4383014, 3991635, 6824703, -208306, 2579665, 1351841, -122943, -6180458, 1596654,
+2563022, -2446521, 1535988, -1806571, -2101850, -3398393, 1750199, 4350265, 441845, 5077188,
+-2086280, -445066, 5122286, 2673080, 405338, -75699, 4864051, 7308961, -5454072, 1206886,
+-1890323, -857383, -8485245, -3022046, 3415573, -2646774, 2363306, 1082332, -1255741, -2071248,
+1188632, -719407, 2631741, 1417876, 1219771, 1337346, -4412542, 150324, -2128156, 2690260,
+4475893, 3131568, -652835, 4845797, 18254, 2045478, -658741, -1098438, 245350, 2420751,
+2796024, -937377, -1933809, -3979824, -527207, -1766842, -1890859, -1076426, -1611687, -1161789,
+-1895691, -1006096, -63888, -47245, 25770, 1539746, -1099512, 794032, -409096, -783832,
+23622, 690953, 242666, 544924, -19864, -550293, -10737, 704375, 221191, -1103807,
+-857383, -69793, -11811, 407485, 394600, 30065, 875100, -1112397, 3733400, -4562866,
+-4649839, 118112, -6283537, 1104344, -1937030, 3022583, -1639604, -5091684, 632434, 4873178,
+-694174, 110059, 6927782, 8572755, -3665218, -4021163, -1065689, -6477348, 2801929, 526134,
+1660005, -2316598, 3486440, -4531728, -754304, 3002182, -2456185, -977642, 529892, 5502390,
+418222, 3964792, -5244155, 5151814, -507880, 693637, 3434900, -2971581, 2876018, -1381906,
+-1286343, 2364916, 3260417, -602369, 1890859, -7096360, 4315906, 4069482, -7397008, -6625524,
+-1793149, -5505075, -1464584, 2015950, 1416266, 1922535, 176094, -1875290, 4651450, -1597728,
+230318, -1895154, 1143535, -2839510, 3967476, 897111, -2942590, -1740536, -1127429, -1802276,
+-1478543, 3894462, 5244692, -307090, -993211, 141197, 1722819, -1138166, 3684008, 1995549,
+-1415729, -338229, -860067, 1512902, -1452773, -103079, -335544, 179315, 638876, -149787,
+-380105, 921807, -694174, -312996, 270046, 594853, 118112, -1374390, -840203, 193274,
+-798864, -785979, 936303, -520765, -1538672, -1094680, -1224066, -403727, 273804, 1484985,
+11079942, 2135673, -4117263, 5160940, 641024, -3474629, 10121627, -6782290, -9753871, -5690295,
+-5917928, -1968706, 2871723, 3575560, -3376918, 5137855, -6428493, -3478387, -784905, 2150705,
+1593970, -1932198, -2529736, 5748277, 1096290, -365072, -3214783, 4299263, -3129958, -696322,
+-10737, -334471, -452045, 1692217, 886374, -852551, 3565897, -1652489, 2174327, -122407,
+-5820755, -2252174, -2324651, 6222334, -3430068, -4139275, -7556458, -8798241, -1611687, 484794,
+-3523484, 6738804, 909459, 3636764, -2702608, 5839545, 2480344, -3325379, 9361418, -4199405,
+-4522601, 764504, 5871757, 8637716, 6096169, 2057826, -2985002, -6722161, 2705293, -38655,
+6678674, 2726231, -1893544, -184684, 3412889, 2778307, 63351, -588947, 294205, -1282585,
+-2793339, -215822, 899796, 747324, 2444373, -33823, 1489280, -461709, 1180042, -241592,
+240518, -194884, -1623498, 210990, -279173, -2049773, 1714229, -330176, 1059246, -512712,
+-1109712, 217970, 225486, -19864, -716186, 844498, 339302, -491774, -143881, -1555852,
+237834, -847719, 846109, -236223, 1782948, -30065, -872415, -711354, -10559177, 1709934,
+-3875134, 2504503, 643708, 7614440, -9768903, -5473936, -7183333, 3889630, 3120831, 4655208,
+-5137855, 1822677, -1559073, 719944, -7973607, -6687801, -5006858, -4840428, 7962333, -3151432,
+-1005559, -70330, 2686502, -1200443, -8465917, 3627637, -3391414, -1024887, 3859565, 3005403,
+4436701, 366146, 2355790, -5825587, -2477123, 5372467, 8757438, 5238250, -416612, -6635725,
+4754529, -2084133, -5833103, 8093866, 2347737, 2838437, -4961224, -2791729, 2720325, -1729261,
+-2774549, 4312147, -3359738, 1556389, 184147, -5498632, -1210644, -3608846, 5842230, 3075734,
+-838056, 1089848, -2721399, 3564823, 559956, -9664, 1010391, -6593849, -3504157, 3864934,
+1800128, -998043, -882079, -4660040, 7775502, 9742060, 5309654, -4328254, 3937948, 777926,
+3358665, -1374390, 2758443, -2023467, 1779727, 3623342, 1883343, 1789928, 1263794, 168577,
+-1203665, -295816, 3439732, 281857, 213138, -1196148, -264141, 827855, 2062658, -155693,
+2426657, 505732, 47245, 15032, 1967095, 2543695, -1080184, -358630, -289373, 488016,
+1727114, 9664, 455267, 241592, 402653, -762894, 2910377, -15850577, 5289789, 799938,
+3943854, 4263292, -3092913, -11213086, 8637716, 3662533, 8498667, -1570347, 4504884, -96637,
+-3060164, -219043, -7924215, 9683004, 2210298, 907849, -4992900, -2877628, -3383361, 2883534,
+-4454418, 7410429, 320512, 2541547, 4130148, 2270964, -483184, 2381559, 2282775, -1751273,
+1919850, -8271570, 2137820, 3744675, 3841848, 7393250, 2564632, -4970351, 2471217, -2515777,
+5030481, 955630, 3656628, 5620502, 912681, -1258425, 4409858, -3067144, -4818954, -1801202,
+3070902, 7794292, -1868848, 466541, 124554, 908386, 1519882, 3248606, 1096827, -2085207,
+-385473, -2803540, 1997160, 619012, -4974109, -4394289, 1722819, 2719788, 2740726, 4879620,
+-7587597, -4106526, -5536750, 6455873, -2882997, -4064650, 2083059, -3750580, -5415417, -1987496,
+129386, 5737003, -2063732, 1828046, -2321967, -1389959, -358630, 1717987, 741419, -1088774,
+-900333, 1064615, 2844879, 927713, 1629940, -841814, -569620, 1899986, -102005, 85899,
+705985, -1405528, 2537252, -850404, -204011, -1250909, -3294240, -560493, -746251, -296890,
+-62814, -1285269, 102542, 2870649, -757525, -341987, -585189, -1144609, 3825742, 16178068,
+8454643, 7730405, 11063836, 3117610, 1950989, -6735583, -309238, -12669080, -2383707, 4941360,
+3439732, 2349347, 2863133, 3593277, -2840584, -1782411, 7223062, 6675453, 5567352, -345745,
+704375, -9025337, -7978976, -2904472, 5675263, 1948305, -1287417, 3214246, -5397164, 584652,
+-2829310, 6424734, 4889284, 11221139, -1198296, 4284230, 3408057, -1710471, -5935645, 10561325,
+-6187974, -1301375, 4650376, 308701, 2602213, 7635915, -2509335, 2898566, -7402913, -15537044,
+-8759586, -5101885, -2195265, 804233, -722091, -3947075, -8493835, -1669669, -6127308, 1931125,
+-239444, 823560, -9567577, -4230543, 6036040, 2199023, -470836, -10415833, -9599252, 5731097,
+913217, 3519726, -7062000, -5474473, 269509, -2755222, -6040872, -4141959, 3229816, -1210107,
+1430761, 517007, 4064113, 3133179, 1324997, -2043868, 1021129, -302258, -2634963, -2418604,
+2291902, -950262, 602369, -1537061, -2548526, -350040, -303869, 2243047, -349503, -2035815,
+462783, 886911, 2288144, 544924, 469225, -940061, 2891050, -1065152, 3306051, -1808718,
+2423972, -2165737, 282394, 1401770, 8590, -89121, 439697, -533650, -865436, -8164196,
+6182606, -3642669, -280247, -21214454, -4984847, -7856032, -5162551, 840740, 7015829, -1414118,
+9270150, 4879083, -529355, -9134859, -3757023, 13543106, 2284923, -8138963, -5917928, -2700998,
+6374805, -4977867, 91268, 4354023, 6933151, 7787313, -8545911, 5740224, 793495, 1609539,
+2458332, 3143379, 2765422, 7807177, 227633, 2355253, -6848326, 9572945, -4809827, -2281165,
+1622424, -7986492, 9861782, -1582159, -19248970, -6389301, -15454366, 922881, -218506, -4694936,
+20974472, -3690451, -10377178, -3544959, -2549063, 9613211, -1316944, 4574140, 5652714, -3956739,
+7197829, 9908490, -5044976, 3758633, -8827232, 4283156, -3165391, -2517388, 10196789, -3755412,
+-976031, -4555887, 270046, 151398, 3889093, 5735929, 6101001, -1648731, -1731946, 219043,
+7901666, 3726958, 4107063, 136902, -6455336, 2571612, -3135863, -3532074, -1931125, -84826,
+-182536, 399969, 1432909, 1487669, -381178, 4275640, 693637, 1859184, 745177, 832150,
+-1203665, 1121523, 432181, -1285806, -1883343, -1236414, -3237332, -2543695, 2224793, 1781875,
+-2741800, 734976, -153008, 759672, 3088082, 648540, -1214402, 329639, 991601, 63351,
+-2506650, 1103807, 9598715, -13419088, 2649995, 2782602, -4299263, 1836635, 10096931, 10895258,
+3987340, 3913252, 5137318, -8383240, -1510755, -8954470, -238908, 5756867, 3578245, -1870458,
+-7157026, -2282775, 4742718, -9290551, 257698, -649614, 4233764, 8877161, 775778, -4765803,
+-3706020, 9494562, -6163278, -2934000, 5389110, -3389266, -11283953, -4056060, 2477659, 1902134,
+-4559108, 1053341, 5762773, 4033511, 5553393, -660351, 4165582, 8061117, -3637301, 4015258,
+3380676, -5514738, 11872363, -11498701, 6765111, 3013457, -16069083, 15287936, -9987410, 2166811,
+-1861332, 12196633, -5276904, -8659728, -1939715, 67109, 2113124, 9364639, -8071318, -403190,
+464930, 535797, -1540283, 2761664, -6589554, -966368, -4732517, -8645769, -9673340, 5134634,
+4060892, 3965866, -23085, 6032282, -2908767, -7017440, 1700270, -12411919, -10452340, -1969779,
+2905009, -133681, -2036888, -1629403, 1358283, -6812892, -2390149, -1461363, -1230508, 3113851,
+-455803, 483184, 128312, -2266669, 986232, -2544768, 58519, 1149441, -2845953, -624381,
+2166811, -1839857, -120259, -1307281, -238908, 797790, -54224, -3775813, -723702, -107911,
+-323196, -702764, -2415382, -3892851, -1060320, -305480, -673236, 3038689, 2160906, 352187,
+-856846, -10872173, 8650601, -24715390, 13598940, -9931575, -6567005, -12163884, 1469416, -1599875,
+2229088, 8413841, -7089918, -2930778, 6943889, 6081137, -1949378, 2267206, -3211025, -11413339,
+-988379, 2671470, -5688684, 8916352, 1601486, -1220845, -5327907, -5469641, 1293859, 13826573,
+635655, -2126546, 3874061, -12252468, -2051384, 4257387, -8160438, 11592654, 7495792, -581431,
+-3572876, -4097399, -4507032, -8198019, -9912785, 8194261, 639413, 14680198, 1366337, -926639,
+-6651294, 1078037, -2596845, 3177202, -191126, -9504763, -7297687, -9681930, -16037408, -2388539,
+14165339, -13684303, -818728, -14321568, 2276333, 3841312, 3308736, 9963787, -1098975, -14716705,
+10468983, -1160178, -7038378, -6025839, -12577812, -4457639, -9561134, 5103495, -14688788, -2595771,
+5791764, -256624, 1132261, 6888591, 3594888, 8302709, 47245, -4711579, -1792075, -3272765,
+-143345, 2977486, -848793, 406948, 440771, 199716, -2441689, -3716757, 2269353, -2643552,
+1104880, 317828, -500901, 986769, 386010, 338766, 5083631, 788663, -290984, 839129,
+1612223, 999117, -2548526, -509491, -5371931, 1898376, 2786360, 4092567, 1516124, 1334124,
+-83752, -2836289, 1635309, -232465, 10553808, -3863860, 9383430, -9159018, -4854924, 6412923,
+2057289, -12361990, 801011, 16071768, -18518288, 1088237, 8651138, 20808042, -8899172, -5300527,
+-2281165, 16109885, 15822660, -16734803, -787590, -12859132, -6155225, 8360154, 8415452, 11012833,
+6256157, -2199560, 7745974, -9598178, -5173288, -976031, -1479079, -13889387, 1222992, -334471,
+18347564, -2856690, 9039296, 2163590, 5355824, 12267500, -7445863, -3340948, -18134962, 12461848,
+-15984258, -2868501, 3661997, -2191507, -9236327, -2351495, 2612414, -6600291, 1789391, -1110786,
+-1408212, -20414516, -14442364, 965831, -10474888, -14350559, 2626909, -13273060, 4199941, 8557722,
+-7779797, 14731201, 3090766, 9433359, 10165651, 2556043, -7565048, -9012989, -11155641, 5664525,
+-11575474, 6890738, 8344048, 11461657, 2022393, -8281771, -5289789, 156766, 1101659, -15374372,
+-391379, -9985799, -1700807, -2884608, 601832, -7337952, 936303, -1747515, -122943, -4801237,
+-3454228, 1035087, 7614440, 711354, -751082, 938987, -1109712, -2929168, -2804614, -3164317,
+-1369021, -3739306, 3914326, 2770254, -297963, -3120294, 4653060, 6894497, -1588601, -1338419,
+-1688996, -841277, -268435, 1597728, -2696703, 2654827, 2551748, 1638530, -2571075, -523449,
+1421634, 1896765, 4790499, -9854802, 25435334, 10605348, 4418448, 13080860, -4990215, 2753074,
+-13493177, -17392470, 10977400, 22362820, 6674379, -103616, -22079354, 26670136, 3875134, 3285113,
+3846143, 989990, 4842039, 1523640, -3800509, -163209, 6755447, -4133369, 8483634, 1626719,
+-6642704, -9243843, -2503429, 8447127, -2292976, 2757906, -3798899, -3388729, 163746, 23929948,
+3892851, 3462281, 3253975, 2020245, 14363444, -5343476, 4148402, -9266929, 17108466, 23803246,
+6226092, -1371168, -8450885, 24872156, 11711302, 366146, -9603010, 3637301, -5752572, -892816,
+-11020886, -4149475, -7347616, -10126996, 16391206, -4912369, 12084964, 2530273, -9387725, -140123,
+-20113332, 19137838, -1367947, -9156333, -7132330, -11668889, -14361834, -7865159, 22288196, -6941741,
+8039105, 10117869, -8985072, -8563091, -16054588, 2423972, 10846403, 3721589, 10370199, -2385854,
+-2035815, 469225, 2954401, -4415227, 1247151, -7997229, 2608119, -366146, 9091909, 6416145,
+-4909148, 502511, -266288, 5414880, -1836099, -7189239, 1596117, -213138, -587874, 2688650,
+490700, -1114007, -3616899, -4021700, -787590, -944893, 4262755, -141197, 4272956, -5860483,
+1403917, 4468377, -8371428, -6052683, 2172717, -4483409, -1199907, -2640331, 6253473, 7545184,
+-5621576, -5942624, 23659902, 23226646, 28656558, 17270064, 5679021, -7276212, -7584376, 4305168,
+8315057, 10205916, -15249818, -435402, -1828046, 7659001, 6023692, -10558103, -13050795, -34897,
+-4952098, 12446278, 14615774, 10737, 7742753, 2570001, 3088618, 16909286, -10327249, -13656385,
+10773389, -17889076, 1537061, -5500780, 9873593, 5062693, 171799, 11579232, 10602127, -9628780,
+12013560, -6442, -5155035, 2865280, 13051869, -5028870, 5577552, 9706626, 4372814, -20851530,
+-12079596, 2078227, 1092532, -14169097, -9707700, 4736812, 6742025, 5762773, -19346680, -13482439,
+-13467407, -1043677, 8370355, 12247099, -30727806, -22550188, 3745212, 4745402, 17730162, 6281927,
+6494528, 12944495, -1403381, -3288334, -4702453, 31741956, 10950556, -4976257, -16609712, 15190762,
+9891310, -4930086, -4523138, 2369748, -4582730, 8128763, -2941516, -1704565, 4751845, -1150514,
+-1919850, -2469069, 4989679, 13032541, 71941, 957241, 434865, 5686537, 7239704, -1817845,
+-4592394, 1997160, -449898, 1495722, 826781, 1147293, -6191732, -3331821, 4342749, 477278,
+-2537252, 2166811, 6051609, 4769025, -8188892, -1797444, -5456219, -5187784, 3837553, -6200322,
+2409477, -3326989, 6020471, 4733591, -7230041, -10070625, -19499688, -18974628, -15600932, 6022081,
+-2011655, 8806294, -17200808, -2833068, 801011, -6634114, -8050380, 13983877, -5358509, 2833068,
+-214748, 974958, -14025216, -5157719, -11993696, 1597728, 1580548, 3118683, 33149094, -12911209,
+9153649, 13959181, -7085623, -6680285, -10033044, -2023467, 15483357, -15796890, 10816338, -1031866,
+-2636036, 1457068, 1584843, 8494908, 951335, -16757889, 12819404, -10436771, -24060406, -19468014,
+-9758703, 32571958, 27630062, -15014132, -4325569, -20613696, -17211008, -6788733, 20116554, 530428,
+13874355, 7261179, -9466108, 10586021, -7207492, -21453898, -1821066, -13005161, -2655901, -6964827,
+42362872, 396748, -35072704, 27543626, -11114838, -7808251, 27814746, 28284508, 89657, -12369506,
+5511517, 6926709, -38087232, -16372415, 1005559, -5586142, 19932944, 8454106, -28896004, -4308926,
+-2325188, 13111998, 8325794, 5717675, 5171678, -5999533, 1022202, 2314987, 12079596, -1478543,
+1653026, 2393371, 2054605, 7128035, 3357591, 184684, -8268886, 10473815, -960462, -23085,
+470299, 40802, -4478041, -6929393, -4787278, 977105, -1741609, 3072512, -496069, -3050501,
+3297998, 7743289, -10283762, -3299609, -3158412, -1433982, 2892661, -160524, -2965675, -5742372,
+-2204392, -1452236, 5313949, -16953846, -10395431, 5033165, 4089883, 9079024, 28953986, 4885526,
+-646929, 6662031, 1599339, -12095702, -7283191, 6373195, 1575716, 23472534, 5655398, -1563905,
+8615168, 12556337, 12913356, 13707388, 833761, -9782862, -2600603, -22221088, -2920041, -25078314,
+14017163, -15302968, -5800354, -30065, 20307680, -11829414, 11336566, -8340827, 6901476, -10434623,
+12989055, 19398220, 1409286, -4235375, -10418517, -15247671, 8547522, 9587978, 24815248, -3467649,
+1316944, 10784126, 39697844, -9365713, 6013491, -6534256, -21996138, 15372762, -3088618, 10894185,
+-1298691, 2605972, -13226889, 36556076, -54951424, 40371620, -63061932, 27084600, -32500554, 9986873,
+-25471840, 9061307, 16990354, -4182761, 12638478, -6610492, 46104328, -28071906, 30629560, -47521664,
+23957328, -18728204, 23049478, -15605227, -16677358, -8342974, -4188130, 11450920, -3138011, -2215130,
+1201517, 539555, -5873905, 8086350, -8883603, 8552354, -6410776, 2488934, -10225243, -5936182,
+-7546795, 1162326, -6937983, 8425115, 9234717, -8929774, -111132, 3276523, 8474507, -1495186,
+3054259, 6696928, -6464463, 11214696, -3163244, 14901389, -9004399, 17890686, -12919262, 4414153,
+-1048509, 9856413, 8407935, -1874216, 4925791, -14250701, 15940234, -11229729, 3876745, -11414412,
+8055748, -15137612, 5097053, -1559610, -5443334, 5290326, -10698764, 1620276, -5255430, 5214627,
+-5200132, 2987687, 1881733, 1400159, -4005594, 13980655, 11272142, 44399224, -30859340, 12913356,
+8177081, -26672820, -691490, -5250061, -7529615, -13709536, -686658, 1566053, 17726404, 6584185,
+9299678, 13278428, 10803453, 395674, 14787036, -17003776, -2401961, 20476794, 2328409, -28113246,
+-6416145, -36786932, -6831146, 6411313, -6772090, -8578660, -1557463, 32875290, 8354785, 2515240,
+4058744, 8227547, -2437931, -18864034, -5733782, -2096481, 3544422, -4351876, -8770323, 23805930,
+12858058, -4925254, -1092532, -5119601, -21489868, -17675938, -12872554, -10734734, 24067922, 5785858,
+8907225, -14484240, -14026289, 4521527, 9818295, 9019431, -4033511, -2849174, -16294569, -10792179,
+14294188, 643171, -39494372, 13903346, 21599390, 6900939, -17194364, -10597832, -8551817, 2831994,
+-12372727, 6123550, -29065654, -38890392, 16123844, 14026826, -7746511, -14299557, 10936597, -6403796,
+2850248, 3376381, -5705327, 6222334, -3526168, -3660386, -2085207, 9346386, -6630893, -1967095,
+-7256884, -106300, 630286, 6248104, 6493991, -731755, 3833795, -4599373, 7583839, -5276368,
+6197101, -14310831, -6497749, -1977296, 4147328, -4681515, -9319005, -7162932, 3423626, 7368017,
+-264141, 9521406, 2688113, 3764002, 596464, 6199249, -3499325, 5925445, -1421634, -11787538,
+-9059160, -3474092, 5374078, -6626598, 3905736, -9889699, -4350265, 4523138, -36686000, 32114008,
+39024608, -3651259, 28363964, 1160178, 4306779, 12372190, -25116968, 9124121, 18529026, 18318036,
+7648800, 5673652, -18174154, 13267154, 7766375, -11005854, 5817533, -2190433, 21590800, 5960341,
+5489505, 12780212, -5174899, -14738717, 4211216, 27551678, -9921374, -5370857, 24841018, -9154723,
+-11187853, -9078487, 8520141, 32004486, 44471700, -2781528, -28937342, 43663176, 14986752, -28777354,
+32518808, 12461311, -8133595, -8367133, -12271258, -20282984, -1207423, 10633265, -17444546, -11398306,
+-36788004, -5001490, 21328270, -44511432, -24158654, 7015829, 7119982, 8767639, 26941792, 23878408,
+-39602820, 314069, 1461363, -28002114, 7761543, 13306346, -14415521, -10263898, -12180527, 8097624,
+31026306, 9711995, 16109349, -21268678, 10776073, -24081882, 2050310, -16202227, -65805340, 50267760,
+12868259, -18373334, 33983392, -11766600, -15567109, 9132711, 6899328, 8732742, 13252658, 5356361,
+-13429826, -4274566, 12999255, -459025, 4964982, 2074469, -2203855, 3173444, -5925445, 4309463,
+12139188, 4369056, -7261179, -5362804, 3662533, -3305514, -6595459, 2449742, 7547332, 4382478,
+-22805740, -6920266, -16813186, -8733279, 9695352, -7511898, -9427990, 8864276, 5689221, -9863392,
+12400644, -9257265, -4100083, 4430796, -7299834, 8149164, -3718368, -13539884, 11138461, -20889110,
+24067386, 79678088, -25418154, 678068, 6154688, 35963908, 31936304, -10464688, -13820668, -20120848,
+889058, 15223512, -473520, -10294500, -10533944, 14367739, -7813083, -19350976, -17248052, -3506304,
+29326574, 20529944, -23252416, 1553168, 464393, -10165651, 11587285, 4263292, -8269423, -2751464,
+-6494528, -3129421, 37431712, -13926968, -24785720, -17383344, -14067092, 33063196, 961536, -7667054,
+30494804, 20930986, 8367670, 15497316, 29988536, -18204756, 4665945, 29135448, 17082158, 22260816,
+-25229174, -7118372, -893353, 10669773, 10094784, -23917600, 2335925, -31425202, -47231220, -2478733,
+-12455942, 21973590, 24472724, -6387153, -1884417, 4977330, -17137456, -45779520, 30880278, -22172232,
+4822175, -8522289, -15431281, -8960912, -17903034, -36279052, 21499532, 19110994, 23211078, 4499515,
+-28795608, -50658064, -14993194, -13990856, -6142877, 16058346, -10311143, -2500208, 3119757, 2188286,
+-8004746, -3649112, -6418292, 825171, -2826089, 5401458, -3120294, -3890704, 5941551, 7694971,
+6120866, -12218108, 4078608, 746787, -1045825, 198105, -26884348, 1358820, 3790846, 4020626,
+-17691508, 11616276, -2482491, -14724759, -12031277, 7243463, 9572408, -1713692, 5712307, -9050570,
+-6345814, -6146098, 790274, 11084237, 2858838, 10591926, -189515, 4948876, -15590194, -2356863,
+-3685619, -2876554, 12297565, 5901285, -366683, 3959960, 1898376, -12279848, -3957276, -38960724,
+-22618908, -18070002, -46261628, 53382684, -1402844, 28199682, -6578816, 1569811, -32300838, -17389248,
+-16756278, 3883724, 24978992, -982474, -26388816, -19425600, -37643776, -41528040, 35574676, 13363791,
+-32647120, -9906342, 15824270, 29950418, 3980898, -36793376, -22665616, 7452305, 10146860, 9342628,
+21383032, -22814330, -22003654, -3183645, -7936026, 3209951, 6229313, -44248900, -8384313, -30813170,
+-20039244, -41150620, -15862388, 56761216, 9558450, 1953673, 13680545, 14198088, 4230543, 42223824,
+33093260, -10842645, 11107322, 56994216, -15093589, -13108777, -13780403, -42169064, -1840930, -23012972,
+-52796960, -54985780, -29125784, -28303834, 12672301, -21154324, 1651952, 11355894, -37687264, -13561896,
+21475, 11274, 9456444, 24678346, 16076063, 29724394, 39798240, 29210072, -3796214, -20953534,
+-30878130, -2424509, 12465069, 3925600, -4537096, -190052, 8467528, 7217156, 18623516, -1921461,
+2779381, 539018, -6507949, 6371047, 747324, -2822867, 15880105, 7185481, 3428995, -14875082,
+9932112, -5191542, 7435126, -14093935, -39982924, -1625645, 15472620, -2723009, -21327196, -13293461,
+-15667504, -11388643, 4815732, 7201050, 7665443, 2429341, -1627793, 6204617, 15347529, 26271242,
+24325084, 30815316, 25914758, -2175401, 17366700, 40119828, 2638721, -17110612, -25095494, -24720758,
+-34323768, -27347130, -13429289, -14477261, -2214056, -4151086, 35050692, -22859964, 6781754, -26508002,
+-9223442, -28928216, 3548717, 35430260, -1003412, 21950504, -43813500, 38483444, 12647605, -7721815,
+30185030, 4391604, 13613973, -12030203, -14565308, -153008, 9088688, 7252053, -30684320, 28070296,
+-33983928, 4240207, 9207336, -11357504, 19650012, -20883204, -12166569, -2225867, -7740605, -10534481,
+-2604361, 4581657, -15851114, -18294414, -6223408, -3144453, -4787278, 11227045, 5783174, 4608500,
+-22572738, 5985574, 26818312, 35990752, -26812944, -13313325, 30254824, 41834056, -25651156, -15637439,
+17308182, 7427609, -20447802, 16733193, -47601660, -9290551, 18930068, 37804840, 4577899, -23433878,
+-21544630, 5739687, 44940392, 3947075, 6432251, 1352915, 14666776, -2913062, 33291366, -385473,
+-37615860, 23480586, -24679956, -7477538, 9919227, -14251238, 3007551, -30353070, -11696270, 28069222,
+12543452, -12641699, -18416282, -9903121, 1937567, -14672682, -4831838, -3284576, -9383967, -5558762,
+-4756140, -19047106, 11582453, -7168838, -8863739, -27567248, -7379828, 20133196, -14442901, -7812009,
+-7750806, -15792058, 29765198, 12311524, 696322, -1096290, -17263084, -25268366, 1138703, 22395570,
+17996986, 6083821, -19404662, -11176042, -8938364, 10859288, 1519345, -16952772, -4663261, 967978,
+6137509, -15095736, -10578504, -8957691, 22959822, 11909407, 1003949, -14666776, -13122199, 13036299,
+27690728, -404801, -12677133, -17481590, -6432788, 7741679, 68183, -4097399, 447750, -3543348,
+-3233574, 2617783, 8378945, 125091, -1859184, 48855, -76773, -2177549, 519154, 75162,
+191663, -3031710, 1941862, 419833, -57321708, -15415711, 9221832, -18843096, 55827596, 41513008,
+26599270, 14685030, 37533184, 27132920, 8519605, 18585398, -45026828, -59628104, -8739722, 894964,
+-15833934, 8340827, -3267933, -15341623, -20066088, -15717970, 30667678, 27357332, -22049826, -2464774,
+-3418794, -5121212, -8097087, -10966662, -16786342, -22630182, -4780836, 40842992, -13355738, -22192096,
+-11145440, 38356204, -18158048, -17158932, 58474368, 21268678, 9524090, -13990856, -32719598, -22251152,
+-33735896, 9353365, 27151710, 74674448, -65690452, -27365920, 37956772, 53410604, 8895414, -2776696,
+67768680, 33017024, -21860846, 22087944, -8207146, 647466, -47544216, -23404350, -16848082, -76951320,
+-33165200, -12060805, 41294500, -22103512, -13389561, 31493384, -2421825, -3690988, 7082401, 22299470,
+-21486110, 15897821, 23305566, 1000727, -4853850, -43220256, 19803020, 16124381, -50836308, -3177202,
+5117991, 3758097, -4643934, -21925272, 5622649, 4302484, 5957657, -3048353, -6825240, 16648367,
+3101503, -2864743, 10788421, 5122822, 29329258, -3553012, 9390409, 2387465, -23907398, -20018306,
+14072997, -10914586, 8422431, 11599096, 6535867, 7361574, -141734, 20131586, -6596533, -4389457,
+-8074002, 6151467, 14944339, -22482006, -8893267, 11575474, 4802847, -12507482, -23797876, -5470715,
+6116571, 49370112, 18023294, -4037269, 12719546, -2421288, -4625680, -18086644, 8655970, 7608535,
+-14391899, -6896107, -52210160, -2034741, 21417392, -4948339, -21804476, 9610526, -4941897, 23556286,
+4633733, -11270531, -235686, 25215216, -14352170, 4140349, 9021579, -7541963, -272730, -13486197,
+27685896, -1561758, 4079145, 550293, 13356811, -5961952, -5266704, -8560407, 5499169, 10536092,
+-4612795, 12497818, -5404680, 7746511, -13052942, -10131828, 15756088, 20378546, -26212186, 1345399,
+-1611, 2577517, 8214125, -16341277, 25228638, -22499724, 20300162, 2976949, -35357244, -1793686,
+27542552, -35822176, 17129940, 294205, 4621385, -8493298, -5410048, 7408819, -10453950, 36969468,
+-27264452, 4219806, -7330973, -3155190, 9063455, 667331, -4488241, -691490, 11119133, -190589,
+-12795244, 3760781, 6471979, -21231634, 16630113, 7678328, 771484, 15512348, -5628555, -4576825,
+7214472, 3526168, 4573604, 2784750, -4242354, 8842264, 3722126, 824097, -9366787, -1360431,
+4566087, 8492224, -14210973, 7625178, 8845485, -12359842, 5952288, 2040646, 2134599, 6827925,
+-3738232, 1685775, -2343979, -18001282, -276489, -4190278, 7953743, -4912369, 3036005, 2219961,
+-752156, 2655364, 4609037, -2786897, 4832, 1056025, -130460, 1557999, 5534602, -5399311,
+5185100, -3871376, -26125212, -74351792, -105827456, 35454956, 94358288, 20614770, 261303120, 214914256,
+145441008, 245756960, 128209072, -8976482, -30627948, -97371744, -224212320, -185459376, -180080992, -250747712,
+-185156576, -54676008, -40101572, -6868190, 87144888, 40252432, -10856067, 54944444, 91399592, 44422308,
+42788076, 82849384, 49507552, 37850472, 75315472, 117999928, 49192944, 69087232, 111020608, 18638010,
+7406134, 97752920, 57919244, -38123204, 47185584, 60537564, -63869384, -19506130, 70173864, -14703284,
+-42353748, 90369336, 47950088, -56962540, 48535276, 64142652, -86594056, -81399832, -34810708, -209069888,
+-276921248, -174123344, -244870048, -326615072, -227492608, -233121168, -300910240, -238358880, -165195712, -179405616,
+-107215808, 9454834, 66267588, 144245936, 236810000, 294972992, 363720928, 403843968, 441564512, 467922176,
+420399456, 330134816, 305214336, 195104256, 58661736, 45617384, -31954020, -151459344, -118860000, -51153060,
+-112661824, -116146120, -25021942, -82155744, -156194000, -94966024, -68860672, -140171088, -119204136, -42999600,
+-106066368, -126192584, -10868952, -7496329, -57249228, 21065740, 12053826, -91968672, -68215352, -40386652,
+-130109056, -179216096, -146507248, -200056896, -247487824, -184275568, -148000272, -140817488, -62255552, 26839788,
+72679976, 108129024, 150285744, 169405856, 152055264, 198335680, 255121600, 264124912, 246830160, 251007552,
+242315616, 195974528, 221865120, 199703088, 84766008, 8872866, -51882668, -112039592, -118010672, -98192080,
+-115197464, -113159504, -98137856, -97368520, -103357312, -86001888, -77017352, -74287904, -70239896, -55718612,
+-52980032, -55573120, -45278084, -32722282, -30918932, -25280178, -14262513, -8874476, -7583839, 3173981,
+4186519, 2573759, 5940477, 11767137, 10277320, 12956843, 15501611, 13358959, 8629663, 5589900,
+3449396, 3947612, 2647847, 3586298, 2702071, -984084, -5224828, -3391951, -157303, 5545340,
+13037910, 21184390, 21923124, 24856586, 30047054, 32565516, 34510600, 40690520, 38627864, 32845762,
+29588030, 28043988, 19981798, 17135846, 15855409, 9361418, 2532957, 3197603, -2459406, -9362492,
+-13837311, -20078972, -30206504, -33157684, -34616900, -36128728, -37577204, -34288872, -32960652, -30710626,
+-26059714, -19342386, -16582332, -11716134, -8262444, -7092065, -5049271, -410706, 1660542, 5151277,
+6913287, 9184788, 9975598, 11004780, 11106785, 11664057, 9825275, 9531069, 8243116, 7568806,
+5897527, 5883569, 4462471, 4192425, 2918430, 2924873, 1637993, 1674500, 719407, 1017907,
+98247, 421981, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
4089346,
-9670656, 198642, 363462, -4604205, -3747896, 2832531, 1675037, 285078, 3923453, -5948530,
--2070711, 9721658, 619549, 1917166, -2590939, -3243774, 4515085, 3839701, -1640141, 3779034,
-116501, 638876, -3739843, 1357747, -3409667, -2600603, -3349538, 1151051, 89657, -1051193,
--416075, 1158031, 2838437, -1352378, -5312875, 115964, -3800509, -4776541, -1304060, 2189897,
--783295, 1956895, 1182727, 1795833, -801548, -651224, -948114, -752693, 1577327, -31675,
-3289945, -424128, 4084514, 711354, 889595, 3953518, 1355599, 1030792, 5037997, -2042257,
-1635846, -1742146, -3639448, 3323768, -1236951, 33823, 1173063, -578747, -3030100, -896038,
-2102923, -1367410, -121333, -2873870, 1353989, 217433, -1979980, 257698, -3131568, 487479,
--3005940, -242666, -86973, -374199, 1665374, 848793, 403190, 964757, -369367, 1751273,
-1207960, -119722, 338766, 407485, -109522, 84289, 527207, -703301, 350577, -904628,
-745177, 106837, -192737, -18790, 607738, 190052, -652835, 230854, -79994, -328565,
--962610, -12741020, -6609418, -2979634, -2759517, -16106, 37581, 943282, 185757, -717796,
--5212480, -2369748, -5341329, -8377334, -6990060, 3947612, 4878009, 4926328, -1933809, -584652,
--547071, -1101122, 1822677, 758599, -1772748, -3795141, 2743947, 2335389, 3426310, 895501,
--1138703, -2076080, 980863, 1634235, -376883, 3473555, -1675574, -93416, 3386045, -2576444,
--4082367, 331249, 5680631, 1307281, 1269163, 798864, 65498, 732292, -859530, 1014686,
--4458713, 737124, 4663798, -1056025, 87510, 469225, -1566053, -878321, -623844, -746251,
--1221918, 2852395, -2645700, 2799782, 2398202, 5228586, -339302, 2944737, 6684043, -1216013,
--5344013, -6003828, -264677, -772557, 350040, -5092221, 1507534, -3570192, -2640868, 1243393,
-3754875, -1517197, -2816425, -3387119, -636192, -355409, 967978, 320512, 2172180, 1287417,
--88047, 1102196, 343061, 2135673, 1631014, 1028108, 492311, 484794, -337155, 1438814,
-102005, 449361, -138513, 55835, -1031329, 26307, -169651, 8912594, 6919729, 3031173,
-3518115, -2247879, 1559610, 6182606, 2946348, 6653978, -2619393, 2720325, 3726958, -126702,
-4793184, -2442763, 2978560, 615791, -3145527, -723165, -632434, -129386, -926102, 426276,
--1601486, 551366, -1184337, 6093485, -1433445, -267362, -62277, -2654827, -7711614, 4427038,
--1865090, 1750199, -3090766, -2814277, -3302830, -2092723, 1946157, 5850283, 4516158, 1988033,
--375273, -1175210, 1788854, 4224637, -969589, -1297080, 5101885, -2212982, 2418604, -2497524,
--2059437, -1161252, 1869385, 2108829, -3665218, -2420214, 51540, 3939559, 4964446, 2790655,
-3859028, -467078, 3611531, 1510218, 3795677, -2092186, 1493038, 8865349, 4049081, 3804804,
--951872, -2399276, -6045704, 3554622, 1449552, -2400350, -2534568, -740882, 1779727, -1746441,
--891206, -1563905, 4832, 1334124, -585189, -2392297, 663572, 928787, 1366337, 1540283,
-148713, 2149631, 969052, 940061, 588947, -599685, 1409823, 215285, -56908, -630286,
--1133871, -1105417, 236760, 932545, 299574, 136365, 210453, 10737, 1260573, -1712618,
--479963, 626528, -769873, 801548, 2697240, 10166724, 1447941, 3688303, 7362648, 137976,
--4211753, -1808181, -1266479, 286689, -2655901, -7231651, 2896419, 237834, 151398, 3014530,
--4800163, -2222646, 7542500, -1858647, -2858838, -4481799, 144955, -4236985, -715112, -1421634,
--1281511, 529355, 6088116, -210453, -1925756, 1774358, -4861903, 6489696, -843424, -1479616,
-8118562, -4704063, 371515, -5556077, -2547989, 451508, 241592, 2107218, 2549600, -4963372,
-1453310, 2047089, 1665911, 449898, 2312840, 1668058, 3385508, -3154654, -1692217, 6390375,
--2692408, 2423972, 588947, 1814087, 1634235, -577673, -2199560, -369367, 4508642, -2732673,
--325881, -1469416, 1023813, 4010963, -2301566, -5086852, -9780714, 570157, -431107, -879931,
-9127, -3791919, -2658048, -5482526, -2173790, 2663417, -122943, 1639604, -679679, 3342022,
-2314451, -79457, 1725503, -185757, -244813, 1125281, -2151242, -1182190, -1753420, -64961,
--2087354, 1168768, -111669, 527207, -799401, -715649, -124554, -796180, 433255, 713501,
--1939178, 846645, 729608, 386010, -1851668, 898185, 601832, 1648731, 1763621, -228707,
--666257, -1012539, 858457, -544924, -376883, 268972, -295816, -1200443, -4437775, -10857677,
-5470178, -3547106, -6245956, 315680, -11696270, 2549063, 3526168, -1253057, 8476655, -3228742,
--10295037, 2490007, 3851512, -3540664, -7296076, 12425877, -820876, -714038, 3107946, -2715493,
--1631014, 1291711, -6113349, 3583077, -688805, 1777043, -1316408, 5822365, -1512902, 3274376,
-2809982, -5704791, -2857227, -3205656, 5906654, -2942053, -1828582, 4546760, -1628866, -3344706,
-2573222, 8320963, -4268124, 4066260, -4408784, 5478231, -3064459, 2897492, 496069, -2913062,
--8551817, 4773320, 6061273, -549756, -2011655, 3540664, 4229469, 4187593, -5907728, -643171,
--5219996, -450435, 1751273, -3576097, 1320703, 4072166, -4373888, -66572, 759672, -4094178,
--3076270, 3888019, -2831994, 3080029, -1869921, -5265630, 1000727, -5104032, 1254131, -1911797,
-1714766, -5623723, 5132486, -4230006, 448824, -3929895, -222801, -209380, 978716, -382252,
--120796, -1202591, 1278290, -3794067, 1245004, -3100430, -2627446, 112743, 2204392, 1137093,
-322659, 761283, 41339, 1418413, 2829310, -2423435, 2332704, -1549410, -442919, 1601486,
-1125281, -1705102, -132607, -4410932, 5568425, -6135361, -6083285, -10435697, 4391067, 11014444,
-1675037, -1986959, -956704, -1866163, 9593883, -5768678, -5251672, -1251983, -5790153, -1790465,
--6291054, -2727304, -4418985, -8743480, -2459406, -1939715, -316217, -974421, 2254858, 5191542,
-1848983, 2562485, -8031589, 977105, -142808, -2529199, 2769717, 1466195, -2353105, -1051730,
--5724118, -6349573, -940061, 7001334, -2073396, -3628711, -789737, -2360622, -4948339, 64425,
--5167383, 10513543, 8865886, 2279017, -2733210, -2486249, 909996, 1565516, 1799054, 1714766,
--662499, 3899830, -3740917, 1713155, -3294777, 79457, -61740, 2179159, 1515050, 4920959,
--2166811, -3059091, -2796024, -11462731, 329639, 2360085, -1184337, 4123706, 1764158, -3466039,
-964757, -6029061, -2263985, 473520, 4566087, 1934883, 6258841, 1239098, -790274, 10737,
-2295123, -2632278, -368830, 574452, -1120987, 1582696, -2298881, 1158031, -1762547, -1433445,
--325344, -1956358, -1935420, -2388002, -1290101, -717796, 1720671, 1443109, -1799054, -2528125,
--811749, -1940788, 1272921, -2161979, 993211, -1270237, -406948, 2097018, 91805, 1749125,
-1155346, -1144609, -1114544, -10872173, 1846836, 10875931, 10450729, -11224897, -10047539, 2519535,
--7974681, -4393752, 1258962, -671089, -3202972, 8227547, 3784940, -11851425, -862752, 593242,
--20938, 7398618, 2877628, -5563594, 7988103, 2838974, 1123671, -4342212, -4428112, 3274376,
--2812667, -8062191, -1370632, -1143535, -3476776, -4854387, -6340446, 6726993, 557809, 905701,
--4369056, 6442, 4922570, -3924526, -7998303, -8288213, 8665633, 1826972, 8184597, -1394791,
-2398739, 5869610, 12230456, 3820910, -1452236, -6307697, -2591476, -3195993, 1919850, 555125,
--4767414, -2068564, 7140920, 4889821, 9676024, 4393215, -6570226, -6458020, 8017630, 4123169,
--4106526, -54761, 8256001, 536871, -389768, -6460705, 7094749, 5161477, -1181653, 9676024,
--1395328, -2921115, -10153303, -1452236, 577136, 5340255, -6987912, -538482, 3212636, -1825361,
--5010080, -4864588, -578210, -576599, -864899, -6055367, -5200669, -3223373, 1964411, -213675,
--2359011, -914291, -264677, 425202, 558346, 785442, -442919, 1906966, -1587527, -516470,
-112206, -1283658, -3874061, 164283, 2350421, -812286, -3412889, 200790, -773094, 1141924,
-268972, -536334, -244813, 1046898, -468688, 2019172, 1161789, -163209, -1855426, 1334124,
--1447941, 1348620, 1791538, -4408247, 1742683, -1649268, -892279, 5393942, -8991514, 5403069,
--5897527, 1061394, 4706748, -63888, -2401424, 1758789, -6177237, 242129, -4814122, -13953812,
--4277788, 5894843, 3806415, 2141578, -3406446, 2836826, 1260036, 14880988, 2541010, -5057861,
-5521718, 1074279, 1159104, 9884867, -2877628, -2808909, 3418257, -7006166, 8370355, 7730405,
--215285, 4361540, -1666984, -4301947, -594853, -5400385, 411243, -5289252, 2013803, -104690,
-1477469, 576063, -9067213, -1889786, -1207423, 469225, -4592394, 1936493, 1957431, -1767379,
-11857868, -5233418, -10628433, 6281390, 10362145, 2327872, 2642479, -4632659, 8883066, -3084324,
-1452773, 3975529, 1122060, -4086662, 4211216, 1806571, 461172, -66572, -8210367, -2921652,
-3953518, 7207492, -2860448, -5401995, -7476465, -2461016, 2447058, 1328756, 3661460, -9199820,
-1672890, 6126771, 760746, -396748, 2311766, -1952063, -1092532, -296353, -549219, 3194382,
--962610, 987843, -1015760, -711891, -759672, -2383707, -1372242, 1068910, -1695975, 2185065,
--408022, -443992, -1132261, -1359894, -7008313, 611496, 3662533, -230854, 1240709, -713501,
-2247879, 731218, -1418950, -1649804, 1232119, 30340186, -8278013, 134755, -3016678, -1991791,
--6721624, -200790, -17757006, 9200357, -6351183, -498753, 10353019, 5041218, -6790344, -7387344,
--2699924, -6324340, 5713380, -14777372, 2766496, 6051072, 8474507, 1607392, 2558727, 289373,
-1419487, -1998234, -4583804, -13511967, -1943473, 1653562, 6236830, -4903242, 6015639, 2274185,
--2406256, -920734, 4668630, -4931696, -4566087, -2711198, -3479461, -583042, -11873437, -5634460,
--2801929, -394063, 9482751, 2050847, 9048959, 3040300, -370978, -5719823, 731218, 498216,
-1414118, 3054796, 12668543, 1413581, -11779485, 2989297, -4594005, -392990, -4417374, -5054103,
--2297271, 4773320, 3172370, -21000242, -7815767, -6292664, 4008278, -964757, -4453881, -2948495,
-11860552, -4918275, 9123047, -8619999, -6390375, -9328669, -5011690, -9912248, -1499481, 13092671,
-3119757, -1651415, 1613834, 5528697, -73014, 6830072, -3841848, 2593087, 3895535, 4613332,
-1887638, -890132, -9086003, -3449396, -4647692, 2684, 2996814, 2488934, -1806571, -722091,
-3889630, 1536525, -2971581, -1327682, -2071785, -995896, 208306, 1922535, -1559610, -1629403,
-4940286, 4071629, 1347546, -641024, 1817308, 3322157, 294742, -3058554, -250182, -3118683,
-830539, -2805151, 1671816, 5027259, -1581085, -4653597, -5139465, 3844533, -9520332, 592169,
--22202296, 5401995, -7279970, 2170032, -7567196, -16367583, -2536715, -3808562, 11603391, 4926865,
-4168266, -391916, 15403900, -11589432, 2815351, 4378719, 11897059, -13727789, -7847979, -2721936,
-1117228, -923955, -3913789, -1280437, 4099010, -7397008, 1493575, 4364761, -863825, 588411,
--5982890, -6840273, -4247723, 18428094, 149250, -4492536, 7153268, -4438849, -9295920, -7610682,
--5047661, -1343788, 3250217, 671089, 616865, 10225780, 9337259, -1701881, 3313031, 2245194,
--11849815, -8131984, -537408, -960462, -3121368, -8082592, 9885941, 11955578, -9841381, 6447820,
-6041945, -1935957, -9409200, -15160698, -14708652, -11339787, -6699612, -13087839, 1158567, -10719165,
-6381248, 5751498, 919123, 105227, -18296560, 1170379, 302795, 1320166, -9398462, 3117610,
-10336913, 1369021, 2591476, -8299488, -5168457, -1044751, -8761196, 1999307, 5378373, -2605435,
--3285113, -4037806, 3337727, 5492190, -9728101, -5332739, -532039, 6418829, 2336462, -2853469,
-2208150, -378494, -164819, 2863670, -1923072, 3700651, -4357781, -1555852, 3067681, 2684892,
--1136019, 7205345, 393526, -4592931, -3935801, -699006, -3256659, -2925947, 310848, 1994476,
--1431835, -1533303, -9078487, -7632157, -5282273, -5974837, -1884954, -13559212, 589484, 14780593,
--5228049, 7776039, -3131568, 14734422, 12481175, 5137318, -15354508, -3969624, 20463372, -5334887,
-15163382, 2335389, -14585172, -7426536, 17134236, 320512, -11568494, 220117, -9868224, -1405528,
-3452617, 1356673, -1999844, -17161616, -15228880, 4142496, 10964515, -9826348, -893890, 4233764,
--767189, 1626719, 18234284, 3310346, 2627983, 1529008, 6005975, -8140574, -5763846, -4203699,
--19286014, -6585796, -7258495, -5036386, 5048734, 3345780, -1250909, -1966558, -7649337, -11589432,
-15032386, -3293703, -13269838, -6249178, 2660195, 10044855, -8029442, -2550674, -8519605, -1640141,
--10173167, -1998770, -2190970, -20428476, 1840930, -6910603, 14091788, -3682398, -11502996, -21665426,
--14283987, -2739652, 1768990, 7551626, -5617817, -5155035, -11804181, 10750303, 18205830, 1895691,
--2181307, 6172405, -4780836, 6829535, -5158793, -2514167, 2331094, 5216775, 3769371, -6395743,
-209380, 1301912, -94489, -481036, -1608465, 1697586, 6465537, -2738042, -5694053, -272730,
--1278290, 2940979, -46171, 6268505, 439697, 2277407, 228170, -3882114, 1019518, -1569811,
-6766721, 367220, -4292283, -842350, -1029718, 4492536, 466541, -4979478, -739808, 3453154,
--1586990, 817118, 7108708, -24982214, -12676059, -8630200, -13579076, -7350837, -5524939, -14191646,
-14915885, -4357781, 22486302, -11377905, -16869020, -3350611, -11305965, 19247360, -6586333, -10237055,
--4655745, 5119601, 9874667, 8371965, -1977833, -2322504, -4363687, 2071785, 15976205, -479963,
-1581085, -5180268, -1946157, -8390219, -2659659, 3641059, 2806224, -6945499, 397284, -10251013,
-2113124, -3100967, -2982855, 4110821, 2008971, -4801774, -1832877, 8661338, 3346317, -7269769,
--9425306, 15800648, -682900, -25295210, 13204877, -2851322, -10652593, 5035313, -1485522, 1108102,
--2388002, 8731132, 3466039, 850404, 24320790, 23890756, -8378945, 2565706, -17926656, -3872450,
--3390340, 7596724, -2685965, 1195075, 7460358, -5492190, 13920526, -5901285, 1592896, -18807124,
-7862475, -4929549, -13059922, 6548752, -2966212, 26368414, 6362457, 4989679, 9845676, 1047435,
--9147207, -780610, -3728032, -2313377, 2723546, -3316252, 5458367, 3254512, -3958349, 6686727,
-3895535, -4461398, -1077500, 358630, 763430, -1856500, 1522566, 2317135, -549219, -2023467,
-548145, 2055679, 1332514, 1546188, -4155918, 4268661, -8412230, 7514582, -4903779, -2967286,
--479426, 3897683, 5729487, 1464047, -6357626, 19864, -2503966, -1593970, 1656247, -6252936,
--11169062, 3275450, 30045980, -22536230, -7105487, -14271639, -9365176, 11325829, -12837120, 27477590,
--3127273, 8386998, 1628866, 6669548, -16990890, 3126736, 4595615, -1269700, -2462627, -1505923,
-5163625, -10506564, -6257231, -1491427, -2859375, -12983686, -11415486, -3093987, -5215164, 15683073,
--3965866, -7434589, -5251135, 5392869, -7932805, -3409130, -13818520, 6531035, -5201743, 5756330,
--4808753, 7319698, -3606699, -24046448, -12123082, 3554622, -1746441, -1468342, -7371238, -14318884,
--692027, 6313602, 4375498, -3252901, 4855998, 7371775, 22940494, -9778567, 10940892, -25661892,
-1755568, 3773129, -2910377, -7369090, 5346161, 968515, 1331440, 5768141, 18272402, 12305618,
-9434969, -4855998, -5704254, 8977019, -10779831, 2695092, 9322227, -6492917, 22830436, -342524,
-7191386, -6180458, 13234405, -12441983, -12108587, 408559, 4746476, -5615670, -1217086, 14176613,
-287763, 12909061, 4873178, -1983201, -1880122, -7348689, -432718, -377420, 3801583, -464930,
--5752572, 1041530, 2825552, 7328288, -10509785, 1858110, -5250598, 2272038, 6267968, -2070174,
-5906, -5556077, 2011655, 2100239, -3434900, -12836047, -7870528, -5059472, 2677375, -6770479,
--3674882, -4531728, -3895535, 2612951, 5157719, -112743, 4314295, 1613834, 2391760, 785979,
--9096741, 7920994, -6659347, 12236899, 35274568, 25327422, -6951942, -15535434, -10862509, 21734146,
--25802552, 1564979, -6694781, -6085432, 10261214, -18573050, 2294050, -9408663, -446677, -12867185,
--10283762, 1710471, 471373, 712428, -12822625, 20286204, 3857954, -8807904, 3428995, -2472291,
-1548873, 30151744, 9250286, -8184597, -7582228, 1635846, 9077413, 2688650, -22629646, -5337571,
--15713675, -4995047, -7475928, 7747048, -4403415, -1952063, -374736, -595927, -11214160, -12582644,
-8081518, -4658429, 2019708, -425202, 10924249, -8886824, -6711424, 3011309, 4426501, -11822434,
-13151727, -8218957, -19769734, -18041010, -6750078, -5057861, -8139500, -3912178, -28010702, 9971303,
--13421773, -4012573, -11247446, 15561740, 4749697, 7532836, -258235, -2196339, -13683766, -3894999,
-17871896, -14762876, 21709450, 16938814, 5636608, -3791919, 500901, -2937758, 2897492, -9543954,
--8068096, -4680441, 1076426, -1165010, 1130113, 4265440, -7317551, -1590212, 6831683, 7562364,
--3179350, 4762582, -4202089, -6176163, -3070902, -1831267, 4425964, 1417876, 1494112, -6107981,
--4382478, 2313914, -2598992, 2161979, 2332704, 4600447, 8518531, 3650185, 4658966, -5772436,
--3684008, -1885491, 2313377, -2736968, 911070, -2523293, 963683, 9074192, 3937411, 2563022,
--1992865, 5759551, 1501628, -2201708, -35114040, -4214437, 23206246, -28475096, -11485279, -570694,
--8849780, 10491531, -6037114, 32450626, -3329674, -6900939, -5426691, -1300301, 9401147, -6294275,
--6300717, 26508538, -19383188, -2218888, 6091874, -4139812, 16460999, 9441412, -1189169, -1936493,
-6971269, 9512816, 10176388, 8504035, 17431124, 5701032, 7488276, 4681515, -5685463, 29353954,
-3661997, 5593121, 7371775, 4487167, 21081310, -1369558, 5197448, 7408282, 6091338, 3584150,
-13910862, -8100309, -6648610, 13990856, -2549063, -13846438, -3593814, -24312200, -8317741, -4554813,
-23147190, -21770652, -2834142, 1093069, -752156, -1118302, 13651017, 37536940, -6526203, 4835060,
-4276714, 5817533, 17840758, -19186156, -19849728, -17893370, 31844498, 2508261, -11976516, 29390998,
--11148124, 25645250, -13721347, 9936944, 1081795, -33741264, -4923643, -8315594, 9715753, -540092,
--2916283, 382789, 6110128, -743566, -10275172, 5708549, 158914, -4627828, -88047, -8850854,
-12140262, -1132261, 4364761, -5583995, -5192079, -4970888, -6878390, -469225, 207232, 11756399,
--512712, 1467268, -4622996, 1480153, -10961830, 3685619, -10564546, -1764158, -2275796, -9249212,
-5017596, -7279433, -7509214, 1858110, -10478110, 3431142, 8396661, 8038568, -3938485, -3479461,
-2031520, 3391414, 7302518, 9520869, 545461, 20874614, 1749125, -20756504, -61588756, 12452184,
--14897631, -23613730, 26482768, -15803869, -8343511, -23251880, 5937793, -4486630, -22993108, -7257421,
--13706851, 6557342, -12703440, 785979, 4769025, 10454487, 5104569, 17587892, 2617783, 51003,
--1932735, -14482630, -11378979, -10260677, 8322036, 13194676, 5930813, 4806606, -497142, 5207648,
-10085657, 23977192, -11390253, -6085969, 4052302, -10630044, 11330124, 2671470, -10536629, 24401320,
-8721468, -20201378, 7933342, -19425600, 2201708, 3931506, 10205379, -5388037, -6744710, 30976914,
-11843909, -13054553, 7920457, 16475495, -12751221, -26660472, 14793478, -1970316, -420907, 2394444,
-6425271, 41853384, -3986267, 5401995, 7873749, 59056, 9469329, 5789616, -22213034, 4886062,
--11866458, -10087268, -6294275, 5234492, -35806604, -4151086, 11046119, 1962263, 17650704, -12850005,
-12475269, -8326331, -3831111, -4602595, 5535139, 2667175, -4465692, 229781, -99858, -6131603,
-4958003, -7791608, 8310225, 1320166, 5761699, 5177583, -3699041, -2774012, 1383516, -2030446,
-1132798, 2143726, -3594888, -1073742, -4118337, -2633889, -2733747, -6966437, 44560, 1188632,
-4075387, -2117419, 3921842, 9906879, -5184563, 1778117, -5202279, 2754148, 2993055, -7999914,
--6979, 2811593, -7828652, -3664144, 6634651, 244276, 1242856, 1668595, 158377, 183610,
--19000398, -21881784, 46933792, 10034654, -3016141, -5646809, 10602127, 42410656, 19473918, 5087389,
--1202054, 14232985, 35439384, 8833137, 12241194, 11068668, 25282862, -16245714, 16391743, 7303592,
--48431660, 14398341, -6809134, 14414984, -15045270, 11447698, 7623030, 15109158, -62814, 6442451,
-2420751, -13697724, 6922414, 13702019, -11376831, 6921877, -11041287, -6613176, 34827888, 3626563,
-30849140, -21818434, 9664213, -1038845, -4319664, -602906, -2586107, 4871567, 11370926, 7917772,
--761283, 17679696, -27928024, -26318486, 19268834, -14932528, -3768297, -3412352, -18014704, 9247601,
--4663798, 5271536, 2928094, 29902636, 14586246, 15817291, 6019934, 4336843, -26961120, -6109591,
-13458817, -125091, 476205, 106837, -8551280, -23431730, 4655208, 2316061, -17493938, 2634426,
--8324721, -6828461, 7562901, 5133560, 26894012, -3681861, 6962679, 6540699, -4978941, -6750615,
--579284, -6405944, -2355790, 15911780, 6760279, 3015067, 970126, -124017, 563178, -28991,
--747861, -10517838, -3074123, 6710350, -1671279, 840740, -3763465, -5213554, -1997697, 1926830,
-12991202, -8322573, -8021389, 7719667, 3904662, -9363566, 6975027, 4283156, -6559489, 8755291,
-938450, -4898410, -2149631, -3322157, -1367947, -1410897, 4486630, 2374580, 2370285, 5102958,
-7320772, 5495948, -1112933, 3987340, 12480101, -42824584, 36589900, -15580531, 7480223, 23197656,
--33683280, -1162862, -2409477, 8018167, 13283260, 14513768, 26002268, 4047470, -15828028, 8788040,
-27671938, -38747048, -22075596, 25621628, 1915555, -431644, 1817845, 1988033, -93952, -885837,
-13828721, 7893613, -17876190, 965831, -4579509, 31957778, 20080582, -6773164, 2581812, 3674345,
-4644471, -399432, 12338904, 991064, 9636833, 32650878, 5194763, 3287798, -4294968, 8264591,
--30544196, -13678934, -12442520, -1551020, 3988951, -27696634, 11502996, -24593520, 8915278, 25208774,
--4912369, -22953916, -11615202, 9313637, -3852586, -46733540, 13348758, -32648194, -6500970, -4153770,
-1655173, -13145284, 3887482, 16331076, -12919798, -31003222, -45891188, 36230196, 11610907, -5759551,
-10925860, -11046119, 11644193, 20083268, -20358144, 36045512, 5540508, -3873524, 17335024, 9491341,
--5237713, 9302899, 1266479, 10051297, -9194451, -5210332, 3315178, 7276749, 13128104, 3740380,
-11901891, -7446400, 7029251, 11762305, 11038066, -1701881, 10113037, -10131291, 4679904, 1021665,
-5014911, 19622094, -12401181, 7849590, 1736241, -657667, 15941308, 4263292, 20585242, -2517925,
-10525891, 2715493, 8460012, 2341831, -3376381, 6087043, -9557376, 9016210, -3076270, 7500087,
--1019518, 2132451, -81604, 1650878, 613643, 7875897, -987306, -1721208, -265214, 3483219,
-405874, -643171, 1158031, 1830193, 1909113, 1568200, -148176, 1577864, -307627, 1513976,
-1713155, 1671279, -1826435, 695248, 1162326, -867047, -756988, 52357260, -56314000, 23052700,
-27836756, -34473020, -11329050, -18347564, -10924249, 51939576, -23744726, 36981816, -17730698, -4483409,
--9882183, 12399034, 3861713, -44104484, -9131100, -11382737, 18454400, 1389959, 7284802, 15874736,
--22543746, -3647501, -14715632, 8180302, 17289928, 11665131, -28959890, -4509179, 4706748, 4145717,
--2695629, -12846247, -6423124, -24957518, -5611375, -3149285, 22341884, -20323248, 49937584, 11581379,
--15893526, 22829362, -217970, 29534342, 14907295, 28037546, 5764920, 25633438, 19598472, 25075092,
-25057912, 4280472, 24202140, -32051730, -6662031, 7088307, -22412750, -3416647, 12320651, -24831354,
--37869800, 15036681, 22753126, 1011465, 4388383, -25493852, -8047158, -21299280, -1965484, 24805584,
-905164, 46148348, 19698868, -11417634, 47347184, 25839060, -15440944, -5379447, -11370389, -15247671,
--10941966, 12025908, -8081518, -23726474, 2738042, 16829830, -561030, -7726646, -7464117, -4884452,
--9226127, -14384382, 1323924, -3286187, -3135863, -11111080, -2265595, -3895535, 3651796, 7985418,
--3686156, 1599339, -4486630, -8716099, 4368519, -2346126, -8055748, -16503949, 6324340, -22748294,
--4516158, -15796890, -10960220, -12873091, -4693863, -2099702, -6051072, -9062381, -5835787, -10342281,
--3338263, -1315334, -2234994, -7013682, 8944269, -8454106, 3434900, -1864553, -15435039, -4323959,
--15734613, 2036888, -1555852, -1671816, 1411971, -73543800, 67153424, -16085726, -20800526, -20407000,
-46883864, -35847408, -4414153, -11083163, 788663, 23398444, -26119844, -3615826, 12037183, -9357660,
--2412161, -489089, -14249628, 20794084, 2527052, -36979668, -7754564, -9844065, 3499862, -40424232,
-954020, 3498251, -6505802, -845035, 12016245, 23040352, -8740258, -7307350, 6467147, -17411260,
--49223008, 3180423, 41392748, -21653614, -29800630, 940598, 33644088, -16299401, -8362838, -43101072,
--5514738, -348429, 31159988, 12653511, 5086852, -32804960, -16801912, 23665270, -28571196, 9330816,
-50616188, 26717918, 39531416, -19672560, 23563264, 13015362, -41653668, -16960288, -21807160, -6848326,
-26466126, -2371896, 28519656, 20993800, -41390064, 46308876, -27696634, -1300301, 3626563, -22995254,
-48095044, -4354560, -9716290, 36486284, -29459718, -6478958, -42536284, -16093779, 21137144, -7420630,
-19232326, 18213882, -3362423, -8862665, 4463545, -11922829, -11235098, -4690641, -7970923, -6701223,
--6242198, 1914482, -8042327, 586263, -10445897, -12644921, -9004936, 7282654, -4849555, -2244121,
-7046431, 209917, -959388, -13704167, -18338436, -13786308, -24252606, 17426830, 8860518, 14917495,
-6928319, -15014132, -12912282, -8573292, -852551, 19267224, -3175055, -1352915, 3842922, -4519916,
--2261300, -2984466, -6601902, 13044353, -7898982, 17081084, 956704, 43047920, 30766462, 4390531,
--8134668, -22554484, 13266080, -1886564, -1873680, -1549410, -609349, -28991, -8442832, 10747619,
--78383, -38651484, 9812390, 3330210, -13181792, 386547, 16792248, -5735392, 1262720, -27982248,
-20435992, -10035191, -2855080, -2930242, 11698954, -15219217, -407485, 3314104, 610422, 3070902,
--7009924, 20514912, -10660646, 36254356, -22226456, -23980950, 22645216, -25332254, 1484448, 18680960,
--17248588, -7887708, 10183904, 11587822, 15664819, -55601572, 17836462, -642635, -12523588, 35070020,
--17486422, 2044941, 353261, -29991756, 38467336, -1939715, -1496259, -20243792, -3456375, 31472984,
--7188702, -1300301, 1433445, 8995809, 5429376, -39115340, 19412178, 34647500, -18079128, 13817984,
--27025544, 45458472, 2230699, -42633992, 754841, 23616952, -2216203, -26524644, -5766531, 61977452,
--9489193, -25675314, 4478577, 27284854, -6906308, -8661875, -3046743, -1315871, 1784559, 1136019,
--6783901, 17980344, -2756295, -4345970, 1186485, 6077916, 15321222, -4619238, -7228430, 8250632,
-2052458, -14105746, -4951024, 7426536, 1888712, -5945846, -2981781, 11986717, -10817412, -2300492,
-2044404, 1648731, -10209137, -4276714, 13582297, -814433, -9501005, -4175782, 9885404, -2945274,
--7098507, -6241661, 8653822, 312996, -24137180, -80315888, -121575488, 8157217, 105322800, 1617055,
-275393824, 249498944, 149507808, 288050560, 189140704, -31216896, 11079405, -36935108, -226605696, -128738960,
--99614784, -221445296, -181962736, -53674744, -106732088, -122728152, -9800578, 7394323, -51723756, 11486890,
-47224240, -59903520, -50765440, 80549968, 16712255, -19353660, 56404196, 75478680, 185757, 77430744,
-131104416, 47055124, 36187784, 133553080, 90469192, 11099806, 98249528, 144686176, 63817844, 74103752,
-165003520, 62769872, 22846004, 157509872, 155164288, 48111688, 186821408, 265388720, 99241664, 109132432,
-185290800, 56713432, -59399936, 10937134, -61011084, -222400928, -211984016, -226544496, -364027456, -393633760,
--420839136, -497922528, -520774976, -508773760, -495030944, -435869376, -390986976, -319718432, -210956976, -150524640,
--51541220, 144380688, 234030624, 231056896, 427587616, 455805536, 355032736, 432375968, 453050336, 243413520,
-254064496, 311265408, 151546848, 122590176, 202374032, 146934592, 69485592, 95880848, 128271344, 54910620,
-45063872, 128782448, 68520296, -10893111, 71021576, 55562920, -39104068, 6358699, 51419884, -32484448,
--13596793, 95555504, 38420092, 4472135, 92121144, 60800632, -7881802, 5903970, -38792680, -133077952,
--181334592, -200714016, -263445776, -282010240, -281600064, -305200928, -307943776, -322619680, -323467936, -295656416,
--293510560, -246217056, -189722672, -150026960, -61830888, 56574920, 119971320, 199026096, 248752160, 263293840,
-251236256, 229293264, 195175664, 158732320, 138620608, 121420872, 100011536, 90243704, 87873960, 80201000,
-75511968, 78748760, 73841224, 62264676, 53991496, 43466144, 27806692, 17667884, 430034, -20055886,
--35674000, -48369384, -49075908, -46751256, -43804372, -32229972, -24158118, -18305150, -10721849, -646393,
-6825777, 15379741, 18723374, 21505438, 18105434, 13107703, 10822781, 8510478, 3307662, 555661,
--1480690, -5490579, -12683038, -13191992, -16574279, -24925306, -23792508, -21573084, -32232118, -35022772,
--34983584, -43440908, -46119360, -41661720, -47543676, -50061064, -44430364, -41337448, -40223980, -34121904,
--28613608, -26669600, -21786758, -13529147, -10304700, -6244346, 1504312, 9378061, 13028246, 21094196,
-30012694, 34809636, 38812008, 46237472, 49088792, 48464412, 49065708, 48834852, 43484932, 38159712,
-34451008, 28992102, 20841328, 16304233, 11589432, 6009733, 1833414, -226023, -3367254, -5420786,
--6754373, -7386807, -8560407, -8055748, -7638063, -6938520, -6677064, -5528160, -5246840, -4026532,
--3346317, -2114198, -1563368, -288837, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+9670656, 198642, 363462, -4604205, -3747896, 2832531, 1675037, 285078, 3923453, -5948530,
+-2070711, 9721658, 619549, 1917166, -2590939, -3243774, 4515085, 3839701, -1640141, 3779034,
+116501, 638876, -3739843, 1357747, -3409667, -2600603, -3349538, 1151051, 89657, -1051193,
+-416075, 1158031, 2838437, -1352378, -5312875, 115964, -3800509, -4776541, -1304060, 2189897,
+-783295, 1956895, 1182727, 1795833, -801548, -651224, -948114, -752693, 1577327, -31675,
+3289945, -424128, 4084514, 711354, 889595, 3953518, 1355599, 1030792, 5037997, -2042257,
+1635846, -1742146, -3639448, 3323768, -1236951, 33823, 1173063, -578747, -3030100, -896038,
+2102923, -1367410, -121333, -2873870, 1353989, 217433, -1979980, 257698, -3131568, 487479,
+-3005940, -242666, -86973, -374199, 1665374, 848793, 403190, 964757, -369367, 1751273,
+1207960, -119722, 338766, 407485, -109522, 84289, 527207, -703301, 350577, -904628,
+745177, 106837, -192737, -18790, 607738, 190052, -652835, 230854, -79994, -328565,
+-962610, -12741020, -6609418, -2979634, -2759517, -16106, 37581, 943282, 185757, -717796,
+-5212480, -2369748, -5341329, -8377334, -6990060, 3947612, 4878009, 4926328, -1933809, -584652,
+-547071, -1101122, 1822677, 758599, -1772748, -3795141, 2743947, 2335389, 3426310, 895501,
+-1138703, -2076080, 980863, 1634235, -376883, 3473555, -1675574, -93416, 3386045, -2576444,
+-4082367, 331249, 5680631, 1307281, 1269163, 798864, 65498, 732292, -859530, 1014686,
+-4458713, 737124, 4663798, -1056025, 87510, 469225, -1566053, -878321, -623844, -746251,
+-1221918, 2852395, -2645700, 2799782, 2398202, 5228586, -339302, 2944737, 6684043, -1216013,
+-5344013, -6003828, -264677, -772557, 350040, -5092221, 1507534, -3570192, -2640868, 1243393,
+3754875, -1517197, -2816425, -3387119, -636192, -355409, 967978, 320512, 2172180, 1287417,
+-88047, 1102196, 343061, 2135673, 1631014, 1028108, 492311, 484794, -337155, 1438814,
+102005, 449361, -138513, 55835, -1031329, 26307, -169651, 8912594, 6919729, 3031173,
+3518115, -2247879, 1559610, 6182606, 2946348, 6653978, -2619393, 2720325, 3726958, -126702,
+4793184, -2442763, 2978560, 615791, -3145527, -723165, -632434, -129386, -926102, 426276,
+-1601486, 551366, -1184337, 6093485, -1433445, -267362, -62277, -2654827, -7711614, 4427038,
+-1865090, 1750199, -3090766, -2814277, -3302830, -2092723, 1946157, 5850283, 4516158, 1988033,
+-375273, -1175210, 1788854, 4224637, -969589, -1297080, 5101885, -2212982, 2418604, -2497524,
+-2059437, -1161252, 1869385, 2108829, -3665218, -2420214, 51540, 3939559, 4964446, 2790655,
+3859028, -467078, 3611531, 1510218, 3795677, -2092186, 1493038, 8865349, 4049081, 3804804,
+-951872, -2399276, -6045704, 3554622, 1449552, -2400350, -2534568, -740882, 1779727, -1746441,
+-891206, -1563905, 4832, 1334124, -585189, -2392297, 663572, 928787, 1366337, 1540283,
+148713, 2149631, 969052, 940061, 588947, -599685, 1409823, 215285, -56908, -630286,
+-1133871, -1105417, 236760, 932545, 299574, 136365, 210453, 10737, 1260573, -1712618,
+-479963, 626528, -769873, 801548, 2697240, 10166724, 1447941, 3688303, 7362648, 137976,
+-4211753, -1808181, -1266479, 286689, -2655901, -7231651, 2896419, 237834, 151398, 3014530,
+-4800163, -2222646, 7542500, -1858647, -2858838, -4481799, 144955, -4236985, -715112, -1421634,
+-1281511, 529355, 6088116, -210453, -1925756, 1774358, -4861903, 6489696, -843424, -1479616,
+8118562, -4704063, 371515, -5556077, -2547989, 451508, 241592, 2107218, 2549600, -4963372,
+1453310, 2047089, 1665911, 449898, 2312840, 1668058, 3385508, -3154654, -1692217, 6390375,
+-2692408, 2423972, 588947, 1814087, 1634235, -577673, -2199560, -369367, 4508642, -2732673,
+-325881, -1469416, 1023813, 4010963, -2301566, -5086852, -9780714, 570157, -431107, -879931,
+9127, -3791919, -2658048, -5482526, -2173790, 2663417, -122943, 1639604, -679679, 3342022,
+2314451, -79457, 1725503, -185757, -244813, 1125281, -2151242, -1182190, -1753420, -64961,
+-2087354, 1168768, -111669, 527207, -799401, -715649, -124554, -796180, 433255, 713501,
+-1939178, 846645, 729608, 386010, -1851668, 898185, 601832, 1648731, 1763621, -228707,
+-666257, -1012539, 858457, -544924, -376883, 268972, -295816, -1200443, -4437775, -10857677,
+5470178, -3547106, -6245956, 315680, -11696270, 2549063, 3526168, -1253057, 8476655, -3228742,
+-10295037, 2490007, 3851512, -3540664, -7296076, 12425877, -820876, -714038, 3107946, -2715493,
+-1631014, 1291711, -6113349, 3583077, -688805, 1777043, -1316408, 5822365, -1512902, 3274376,
+2809982, -5704791, -2857227, -3205656, 5906654, -2942053, -1828582, 4546760, -1628866, -3344706,
+2573222, 8320963, -4268124, 4066260, -4408784, 5478231, -3064459, 2897492, 496069, -2913062,
+-8551817, 4773320, 6061273, -549756, -2011655, 3540664, 4229469, 4187593, -5907728, -643171,
+-5219996, -450435, 1751273, -3576097, 1320703, 4072166, -4373888, -66572, 759672, -4094178,
+-3076270, 3888019, -2831994, 3080029, -1869921, -5265630, 1000727, -5104032, 1254131, -1911797,
+1714766, -5623723, 5132486, -4230006, 448824, -3929895, -222801, -209380, 978716, -382252,
+-120796, -1202591, 1278290, -3794067, 1245004, -3100430, -2627446, 112743, 2204392, 1137093,
+322659, 761283, 41339, 1418413, 2829310, -2423435, 2332704, -1549410, -442919, 1601486,
+1125281, -1705102, -132607, -4410932, 5568425, -6135361, -6083285, -10435697, 4391067, 11014444,
+1675037, -1986959, -956704, -1866163, 9593883, -5768678, -5251672, -1251983, -5790153, -1790465,
+-6291054, -2727304, -4418985, -8743480, -2459406, -1939715, -316217, -974421, 2254858, 5191542,
+1848983, 2562485, -8031589, 977105, -142808, -2529199, 2769717, 1466195, -2353105, -1051730,
+-5724118, -6349573, -940061, 7001334, -2073396, -3628711, -789737, -2360622, -4948339, 64425,
+-5167383, 10513543, 8865886, 2279017, -2733210, -2486249, 909996, 1565516, 1799054, 1714766,
+-662499, 3899830, -3740917, 1713155, -3294777, 79457, -61740, 2179159, 1515050, 4920959,
+-2166811, -3059091, -2796024, -11462731, 329639, 2360085, -1184337, 4123706, 1764158, -3466039,
+964757, -6029061, -2263985, 473520, 4566087, 1934883, 6258841, 1239098, -790274, 10737,
+2295123, -2632278, -368830, 574452, -1120987, 1582696, -2298881, 1158031, -1762547, -1433445,
+-325344, -1956358, -1935420, -2388002, -1290101, -717796, 1720671, 1443109, -1799054, -2528125,
+-811749, -1940788, 1272921, -2161979, 993211, -1270237, -406948, 2097018, 91805, 1749125,
+1155346, -1144609, -1114544, -10872173, 1846836, 10875931, 10450729, -11224897, -10047539, 2519535,
+-7974681, -4393752, 1258962, -671089, -3202972, 8227547, 3784940, -11851425, -862752, 593242,
+-20938, 7398618, 2877628, -5563594, 7988103, 2838974, 1123671, -4342212, -4428112, 3274376,
+-2812667, -8062191, -1370632, -1143535, -3476776, -4854387, -6340446, 6726993, 557809, 905701,
+-4369056, 6442, 4922570, -3924526, -7998303, -8288213, 8665633, 1826972, 8184597, -1394791,
+2398739, 5869610, 12230456, 3820910, -1452236, -6307697, -2591476, -3195993, 1919850, 555125,
+-4767414, -2068564, 7140920, 4889821, 9676024, 4393215, -6570226, -6458020, 8017630, 4123169,
+-4106526, -54761, 8256001, 536871, -389768, -6460705, 7094749, 5161477, -1181653, 9676024,
+-1395328, -2921115, -10153303, -1452236, 577136, 5340255, -6987912, -538482, 3212636, -1825361,
+-5010080, -4864588, -578210, -576599, -864899, -6055367, -5200669, -3223373, 1964411, -213675,
+-2359011, -914291, -264677, 425202, 558346, 785442, -442919, 1906966, -1587527, -516470,
+112206, -1283658, -3874061, 164283, 2350421, -812286, -3412889, 200790, -773094, 1141924,
+268972, -536334, -244813, 1046898, -468688, 2019172, 1161789, -163209, -1855426, 1334124,
+-1447941, 1348620, 1791538, -4408247, 1742683, -1649268, -892279, 5393942, -8991514, 5403069,
+-5897527, 1061394, 4706748, -63888, -2401424, 1758789, -6177237, 242129, -4814122, -13953812,
+-4277788, 5894843, 3806415, 2141578, -3406446, 2836826, 1260036, 14880988, 2541010, -5057861,
+5521718, 1074279, 1159104, 9884867, -2877628, -2808909, 3418257, -7006166, 8370355, 7730405,
+-215285, 4361540, -1666984, -4301947, -594853, -5400385, 411243, -5289252, 2013803, -104690,
+1477469, 576063, -9067213, -1889786, -1207423, 469225, -4592394, 1936493, 1957431, -1767379,
+11857868, -5233418, -10628433, 6281390, 10362145, 2327872, 2642479, -4632659, 8883066, -3084324,
+1452773, 3975529, 1122060, -4086662, 4211216, 1806571, 461172, -66572, -8210367, -2921652,
+3953518, 7207492, -2860448, -5401995, -7476465, -2461016, 2447058, 1328756, 3661460, -9199820,
+1672890, 6126771, 760746, -396748, 2311766, -1952063, -1092532, -296353, -549219, 3194382,
+-962610, 987843, -1015760, -711891, -759672, -2383707, -1372242, 1068910, -1695975, 2185065,
+-408022, -443992, -1132261, -1359894, -7008313, 611496, 3662533, -230854, 1240709, -713501,
+2247879, 731218, -1418950, -1649804, 1232119, 30340186, -8278013, 134755, -3016678, -1991791,
+-6721624, -200790, -17757006, 9200357, -6351183, -498753, 10353019, 5041218, -6790344, -7387344,
+-2699924, -6324340, 5713380, -14777372, 2766496, 6051072, 8474507, 1607392, 2558727, 289373,
+1419487, -1998234, -4583804, -13511967, -1943473, 1653562, 6236830, -4903242, 6015639, 2274185,
+-2406256, -920734, 4668630, -4931696, -4566087, -2711198, -3479461, -583042, -11873437, -5634460,
+-2801929, -394063, 9482751, 2050847, 9048959, 3040300, -370978, -5719823, 731218, 498216,
+1414118, 3054796, 12668543, 1413581, -11779485, 2989297, -4594005, -392990, -4417374, -5054103,
+-2297271, 4773320, 3172370, -21000242, -7815767, -6292664, 4008278, -964757, -4453881, -2948495,
+11860552, -4918275, 9123047, -8619999, -6390375, -9328669, -5011690, -9912248, -1499481, 13092671,
+3119757, -1651415, 1613834, 5528697, -73014, 6830072, -3841848, 2593087, 3895535, 4613332,
+1887638, -890132, -9086003, -3449396, -4647692, 2684, 2996814, 2488934, -1806571, -722091,
+3889630, 1536525, -2971581, -1327682, -2071785, -995896, 208306, 1922535, -1559610, -1629403,
+4940286, 4071629, 1347546, -641024, 1817308, 3322157, 294742, -3058554, -250182, -3118683,
+830539, -2805151, 1671816, 5027259, -1581085, -4653597, -5139465, 3844533, -9520332, 592169,
+-22202296, 5401995, -7279970, 2170032, -7567196, -16367583, -2536715, -3808562, 11603391, 4926865,
+4168266, -391916, 15403900, -11589432, 2815351, 4378719, 11897059, -13727789, -7847979, -2721936,
+1117228, -923955, -3913789, -1280437, 4099010, -7397008, 1493575, 4364761, -863825, 588411,
+-5982890, -6840273, -4247723, 18428094, 149250, -4492536, 7153268, -4438849, -9295920, -7610682,
+-5047661, -1343788, 3250217, 671089, 616865, 10225780, 9337259, -1701881, 3313031, 2245194,
+-11849815, -8131984, -537408, -960462, -3121368, -8082592, 9885941, 11955578, -9841381, 6447820,
+6041945, -1935957, -9409200, -15160698, -14708652, -11339787, -6699612, -13087839, 1158567, -10719165,
+6381248, 5751498, 919123, 105227, -18296560, 1170379, 302795, 1320166, -9398462, 3117610,
+10336913, 1369021, 2591476, -8299488, -5168457, -1044751, -8761196, 1999307, 5378373, -2605435,
+-3285113, -4037806, 3337727, 5492190, -9728101, -5332739, -532039, 6418829, 2336462, -2853469,
+2208150, -378494, -164819, 2863670, -1923072, 3700651, -4357781, -1555852, 3067681, 2684892,
+-1136019, 7205345, 393526, -4592931, -3935801, -699006, -3256659, -2925947, 310848, 1994476,
+-1431835, -1533303, -9078487, -7632157, -5282273, -5974837, -1884954, -13559212, 589484, 14780593,
+-5228049, 7776039, -3131568, 14734422, 12481175, 5137318, -15354508, -3969624, 20463372, -5334887,
+15163382, 2335389, -14585172, -7426536, 17134236, 320512, -11568494, 220117, -9868224, -1405528,
+3452617, 1356673, -1999844, -17161616, -15228880, 4142496, 10964515, -9826348, -893890, 4233764,
+-767189, 1626719, 18234284, 3310346, 2627983, 1529008, 6005975, -8140574, -5763846, -4203699,
+-19286014, -6585796, -7258495, -5036386, 5048734, 3345780, -1250909, -1966558, -7649337, -11589432,
+15032386, -3293703, -13269838, -6249178, 2660195, 10044855, -8029442, -2550674, -8519605, -1640141,
+-10173167, -1998770, -2190970, -20428476, 1840930, -6910603, 14091788, -3682398, -11502996, -21665426,
+-14283987, -2739652, 1768990, 7551626, -5617817, -5155035, -11804181, 10750303, 18205830, 1895691,
+-2181307, 6172405, -4780836, 6829535, -5158793, -2514167, 2331094, 5216775, 3769371, -6395743,
+209380, 1301912, -94489, -481036, -1608465, 1697586, 6465537, -2738042, -5694053, -272730,
+-1278290, 2940979, -46171, 6268505, 439697, 2277407, 228170, -3882114, 1019518, -1569811,
+6766721, 367220, -4292283, -842350, -1029718, 4492536, 466541, -4979478, -739808, 3453154,
+-1586990, 817118, 7108708, -24982214, -12676059, -8630200, -13579076, -7350837, -5524939, -14191646,
+14915885, -4357781, 22486302, -11377905, -16869020, -3350611, -11305965, 19247360, -6586333, -10237055,
+-4655745, 5119601, 9874667, 8371965, -1977833, -2322504, -4363687, 2071785, 15976205, -479963,
+1581085, -5180268, -1946157, -8390219, -2659659, 3641059, 2806224, -6945499, 397284, -10251013,
+2113124, -3100967, -2982855, 4110821, 2008971, -4801774, -1832877, 8661338, 3346317, -7269769,
+-9425306, 15800648, -682900, -25295210, 13204877, -2851322, -10652593, 5035313, -1485522, 1108102,
+-2388002, 8731132, 3466039, 850404, 24320790, 23890756, -8378945, 2565706, -17926656, -3872450,
+-3390340, 7596724, -2685965, 1195075, 7460358, -5492190, 13920526, -5901285, 1592896, -18807124,
+7862475, -4929549, -13059922, 6548752, -2966212, 26368414, 6362457, 4989679, 9845676, 1047435,
+-9147207, -780610, -3728032, -2313377, 2723546, -3316252, 5458367, 3254512, -3958349, 6686727,
+3895535, -4461398, -1077500, 358630, 763430, -1856500, 1522566, 2317135, -549219, -2023467,
+548145, 2055679, 1332514, 1546188, -4155918, 4268661, -8412230, 7514582, -4903779, -2967286,
+-479426, 3897683, 5729487, 1464047, -6357626, 19864, -2503966, -1593970, 1656247, -6252936,
+-11169062, 3275450, 30045980, -22536230, -7105487, -14271639, -9365176, 11325829, -12837120, 27477590,
+-3127273, 8386998, 1628866, 6669548, -16990890, 3126736, 4595615, -1269700, -2462627, -1505923,
+5163625, -10506564, -6257231, -1491427, -2859375, -12983686, -11415486, -3093987, -5215164, 15683073,
+-3965866, -7434589, -5251135, 5392869, -7932805, -3409130, -13818520, 6531035, -5201743, 5756330,
+-4808753, 7319698, -3606699, -24046448, -12123082, 3554622, -1746441, -1468342, -7371238, -14318884,
+-692027, 6313602, 4375498, -3252901, 4855998, 7371775, 22940494, -9778567, 10940892, -25661892,
+1755568, 3773129, -2910377, -7369090, 5346161, 968515, 1331440, 5768141, 18272402, 12305618,
+9434969, -4855998, -5704254, 8977019, -10779831, 2695092, 9322227, -6492917, 22830436, -342524,
+7191386, -6180458, 13234405, -12441983, -12108587, 408559, 4746476, -5615670, -1217086, 14176613,
+287763, 12909061, 4873178, -1983201, -1880122, -7348689, -432718, -377420, 3801583, -464930,
+-5752572, 1041530, 2825552, 7328288, -10509785, 1858110, -5250598, 2272038, 6267968, -2070174,
+5906, -5556077, 2011655, 2100239, -3434900, -12836047, -7870528, -5059472, 2677375, -6770479,
+-3674882, -4531728, -3895535, 2612951, 5157719, -112743, 4314295, 1613834, 2391760, 785979,
+-9096741, 7920994, -6659347, 12236899, 35274568, 25327422, -6951942, -15535434, -10862509, 21734146,
+-25802552, 1564979, -6694781, -6085432, 10261214, -18573050, 2294050, -9408663, -446677, -12867185,
+-10283762, 1710471, 471373, 712428, -12822625, 20286204, 3857954, -8807904, 3428995, -2472291,
+1548873, 30151744, 9250286, -8184597, -7582228, 1635846, 9077413, 2688650, -22629646, -5337571,
+-15713675, -4995047, -7475928, 7747048, -4403415, -1952063, -374736, -595927, -11214160, -12582644,
+8081518, -4658429, 2019708, -425202, 10924249, -8886824, -6711424, 3011309, 4426501, -11822434,
+13151727, -8218957, -19769734, -18041010, -6750078, -5057861, -8139500, -3912178, -28010702, 9971303,
+-13421773, -4012573, -11247446, 15561740, 4749697, 7532836, -258235, -2196339, -13683766, -3894999,
+17871896, -14762876, 21709450, 16938814, 5636608, -3791919, 500901, -2937758, 2897492, -9543954,
+-8068096, -4680441, 1076426, -1165010, 1130113, 4265440, -7317551, -1590212, 6831683, 7562364,
+-3179350, 4762582, -4202089, -6176163, -3070902, -1831267, 4425964, 1417876, 1494112, -6107981,
+-4382478, 2313914, -2598992, 2161979, 2332704, 4600447, 8518531, 3650185, 4658966, -5772436,
+-3684008, -1885491, 2313377, -2736968, 911070, -2523293, 963683, 9074192, 3937411, 2563022,
+-1992865, 5759551, 1501628, -2201708, -35114040, -4214437, 23206246, -28475096, -11485279, -570694,
+-8849780, 10491531, -6037114, 32450626, -3329674, -6900939, -5426691, -1300301, 9401147, -6294275,
+-6300717, 26508538, -19383188, -2218888, 6091874, -4139812, 16460999, 9441412, -1189169, -1936493,
+6971269, 9512816, 10176388, 8504035, 17431124, 5701032, 7488276, 4681515, -5685463, 29353954,
+3661997, 5593121, 7371775, 4487167, 21081310, -1369558, 5197448, 7408282, 6091338, 3584150,
+13910862, -8100309, -6648610, 13990856, -2549063, -13846438, -3593814, -24312200, -8317741, -4554813,
+23147190, -21770652, -2834142, 1093069, -752156, -1118302, 13651017, 37536940, -6526203, 4835060,
+4276714, 5817533, 17840758, -19186156, -19849728, -17893370, 31844498, 2508261, -11976516, 29390998,
+-11148124, 25645250, -13721347, 9936944, 1081795, -33741264, -4923643, -8315594, 9715753, -540092,
+-2916283, 382789, 6110128, -743566, -10275172, 5708549, 158914, -4627828, -88047, -8850854,
+12140262, -1132261, 4364761, -5583995, -5192079, -4970888, -6878390, -469225, 207232, 11756399,
+-512712, 1467268, -4622996, 1480153, -10961830, 3685619, -10564546, -1764158, -2275796, -9249212,
+5017596, -7279433, -7509214, 1858110, -10478110, 3431142, 8396661, 8038568, -3938485, -3479461,
+2031520, 3391414, 7302518, 9520869, 545461, 20874614, 1749125, -20756504, -61588756, 12452184,
+-14897631, -23613730, 26482768, -15803869, -8343511, -23251880, 5937793, -4486630, -22993108, -7257421,
+-13706851, 6557342, -12703440, 785979, 4769025, 10454487, 5104569, 17587892, 2617783, 51003,
+-1932735, -14482630, -11378979, -10260677, 8322036, 13194676, 5930813, 4806606, -497142, 5207648,
+10085657, 23977192, -11390253, -6085969, 4052302, -10630044, 11330124, 2671470, -10536629, 24401320,
+8721468, -20201378, 7933342, -19425600, 2201708, 3931506, 10205379, -5388037, -6744710, 30976914,
+11843909, -13054553, 7920457, 16475495, -12751221, -26660472, 14793478, -1970316, -420907, 2394444,
+6425271, 41853384, -3986267, 5401995, 7873749, 59056, 9469329, 5789616, -22213034, 4886062,
+-11866458, -10087268, -6294275, 5234492, -35806604, -4151086, 11046119, 1962263, 17650704, -12850005,
+12475269, -8326331, -3831111, -4602595, 5535139, 2667175, -4465692, 229781, -99858, -6131603,
+4958003, -7791608, 8310225, 1320166, 5761699, 5177583, -3699041, -2774012, 1383516, -2030446,
+1132798, 2143726, -3594888, -1073742, -4118337, -2633889, -2733747, -6966437, 44560, 1188632,
+4075387, -2117419, 3921842, 9906879, -5184563, 1778117, -5202279, 2754148, 2993055, -7999914,
+-6979, 2811593, -7828652, -3664144, 6634651, 244276, 1242856, 1668595, 158377, 183610,
+-19000398, -21881784, 46933792, 10034654, -3016141, -5646809, 10602127, 42410656, 19473918, 5087389,
+-1202054, 14232985, 35439384, 8833137, 12241194, 11068668, 25282862, -16245714, 16391743, 7303592,
+-48431660, 14398341, -6809134, 14414984, -15045270, 11447698, 7623030, 15109158, -62814, 6442451,
+2420751, -13697724, 6922414, 13702019, -11376831, 6921877, -11041287, -6613176, 34827888, 3626563,
+30849140, -21818434, 9664213, -1038845, -4319664, -602906, -2586107, 4871567, 11370926, 7917772,
+-761283, 17679696, -27928024, -26318486, 19268834, -14932528, -3768297, -3412352, -18014704, 9247601,
+-4663798, 5271536, 2928094, 29902636, 14586246, 15817291, 6019934, 4336843, -26961120, -6109591,
+13458817, -125091, 476205, 106837, -8551280, -23431730, 4655208, 2316061, -17493938, 2634426,
+-8324721, -6828461, 7562901, 5133560, 26894012, -3681861, 6962679, 6540699, -4978941, -6750615,
+-579284, -6405944, -2355790, 15911780, 6760279, 3015067, 970126, -124017, 563178, -28991,
+-747861, -10517838, -3074123, 6710350, -1671279, 840740, -3763465, -5213554, -1997697, 1926830,
+12991202, -8322573, -8021389, 7719667, 3904662, -9363566, 6975027, 4283156, -6559489, 8755291,
+938450, -4898410, -2149631, -3322157, -1367947, -1410897, 4486630, 2374580, 2370285, 5102958,
+7320772, 5495948, -1112933, 3987340, 12480101, -42824584, 36589900, -15580531, 7480223, 23197656,
+-33683280, -1162862, -2409477, 8018167, 13283260, 14513768, 26002268, 4047470, -15828028, 8788040,
+27671938, -38747048, -22075596, 25621628, 1915555, -431644, 1817845, 1988033, -93952, -885837,
+13828721, 7893613, -17876190, 965831, -4579509, 31957778, 20080582, -6773164, 2581812, 3674345,
+4644471, -399432, 12338904, 991064, 9636833, 32650878, 5194763, 3287798, -4294968, 8264591,
+-30544196, -13678934, -12442520, -1551020, 3988951, -27696634, 11502996, -24593520, 8915278, 25208774,
+-4912369, -22953916, -11615202, 9313637, -3852586, -46733540, 13348758, -32648194, -6500970, -4153770,
+1655173, -13145284, 3887482, 16331076, -12919798, -31003222, -45891188, 36230196, 11610907, -5759551,
+10925860, -11046119, 11644193, 20083268, -20358144, 36045512, 5540508, -3873524, 17335024, 9491341,
+-5237713, 9302899, 1266479, 10051297, -9194451, -5210332, 3315178, 7276749, 13128104, 3740380,
+11901891, -7446400, 7029251, 11762305, 11038066, -1701881, 10113037, -10131291, 4679904, 1021665,
+5014911, 19622094, -12401181, 7849590, 1736241, -657667, 15941308, 4263292, 20585242, -2517925,
+10525891, 2715493, 8460012, 2341831, -3376381, 6087043, -9557376, 9016210, -3076270, 7500087,
+-1019518, 2132451, -81604, 1650878, 613643, 7875897, -987306, -1721208, -265214, 3483219,
+405874, -643171, 1158031, 1830193, 1909113, 1568200, -148176, 1577864, -307627, 1513976,
+1713155, 1671279, -1826435, 695248, 1162326, -867047, -756988, 52357260, -56314000, 23052700,
+27836756, -34473020, -11329050, -18347564, -10924249, 51939576, -23744726, 36981816, -17730698, -4483409,
+-9882183, 12399034, 3861713, -44104484, -9131100, -11382737, 18454400, 1389959, 7284802, 15874736,
+-22543746, -3647501, -14715632, 8180302, 17289928, 11665131, -28959890, -4509179, 4706748, 4145717,
+-2695629, -12846247, -6423124, -24957518, -5611375, -3149285, 22341884, -20323248, 49937584, 11581379,
+-15893526, 22829362, -217970, 29534342, 14907295, 28037546, 5764920, 25633438, 19598472, 25075092,
+25057912, 4280472, 24202140, -32051730, -6662031, 7088307, -22412750, -3416647, 12320651, -24831354,
+-37869800, 15036681, 22753126, 1011465, 4388383, -25493852, -8047158, -21299280, -1965484, 24805584,
+905164, 46148348, 19698868, -11417634, 47347184, 25839060, -15440944, -5379447, -11370389, -15247671,
+-10941966, 12025908, -8081518, -23726474, 2738042, 16829830, -561030, -7726646, -7464117, -4884452,
+-9226127, -14384382, 1323924, -3286187, -3135863, -11111080, -2265595, -3895535, 3651796, 7985418,
+-3686156, 1599339, -4486630, -8716099, 4368519, -2346126, -8055748, -16503949, 6324340, -22748294,
+-4516158, -15796890, -10960220, -12873091, -4693863, -2099702, -6051072, -9062381, -5835787, -10342281,
+-3338263, -1315334, -2234994, -7013682, 8944269, -8454106, 3434900, -1864553, -15435039, -4323959,
+-15734613, 2036888, -1555852, -1671816, 1411971, -73543800, 67153424, -16085726, -20800526, -20407000,
+46883864, -35847408, -4414153, -11083163, 788663, 23398444, -26119844, -3615826, 12037183, -9357660,
+-2412161, -489089, -14249628, 20794084, 2527052, -36979668, -7754564, -9844065, 3499862, -40424232,
+954020, 3498251, -6505802, -845035, 12016245, 23040352, -8740258, -7307350, 6467147, -17411260,
+-49223008, 3180423, 41392748, -21653614, -29800630, 940598, 33644088, -16299401, -8362838, -43101072,
+-5514738, -348429, 31159988, 12653511, 5086852, -32804960, -16801912, 23665270, -28571196, 9330816,
+50616188, 26717918, 39531416, -19672560, 23563264, 13015362, -41653668, -16960288, -21807160, -6848326,
+26466126, -2371896, 28519656, 20993800, -41390064, 46308876, -27696634, -1300301, 3626563, -22995254,
+48095044, -4354560, -9716290, 36486284, -29459718, -6478958, -42536284, -16093779, 21137144, -7420630,
+19232326, 18213882, -3362423, -8862665, 4463545, -11922829, -11235098, -4690641, -7970923, -6701223,
+-6242198, 1914482, -8042327, 586263, -10445897, -12644921, -9004936, 7282654, -4849555, -2244121,
+7046431, 209917, -959388, -13704167, -18338436, -13786308, -24252606, 17426830, 8860518, 14917495,
+6928319, -15014132, -12912282, -8573292, -852551, 19267224, -3175055, -1352915, 3842922, -4519916,
+-2261300, -2984466, -6601902, 13044353, -7898982, 17081084, 956704, 43047920, 30766462, 4390531,
+-8134668, -22554484, 13266080, -1886564, -1873680, -1549410, -609349, -28991, -8442832, 10747619,
+-78383, -38651484, 9812390, 3330210, -13181792, 386547, 16792248, -5735392, 1262720, -27982248,
+20435992, -10035191, -2855080, -2930242, 11698954, -15219217, -407485, 3314104, 610422, 3070902,
+-7009924, 20514912, -10660646, 36254356, -22226456, -23980950, 22645216, -25332254, 1484448, 18680960,
+-17248588, -7887708, 10183904, 11587822, 15664819, -55601572, 17836462, -642635, -12523588, 35070020,
+-17486422, 2044941, 353261, -29991756, 38467336, -1939715, -1496259, -20243792, -3456375, 31472984,
+-7188702, -1300301, 1433445, 8995809, 5429376, -39115340, 19412178, 34647500, -18079128, 13817984,
+-27025544, 45458472, 2230699, -42633992, 754841, 23616952, -2216203, -26524644, -5766531, 61977452,
+-9489193, -25675314, 4478577, 27284854, -6906308, -8661875, -3046743, -1315871, 1784559, 1136019,
+-6783901, 17980344, -2756295, -4345970, 1186485, 6077916, 15321222, -4619238, -7228430, 8250632,
+2052458, -14105746, -4951024, 7426536, 1888712, -5945846, -2981781, 11986717, -10817412, -2300492,
+2044404, 1648731, -10209137, -4276714, 13582297, -814433, -9501005, -4175782, 9885404, -2945274,
+-7098507, -6241661, 8653822, 312996, -24137180, -80315888, -121575488, 8157217, 105322800, 1617055,
+275393824, 249498944, 149507808, 288050560, 189140704, -31216896, 11079405, -36935108, -226605696, -128738960,
+-99614784, -221445296, -181962736, -53674744, -106732088, -122728152, -9800578, 7394323, -51723756, 11486890,
+47224240, -59903520, -50765440, 80549968, 16712255, -19353660, 56404196, 75478680, 185757, 77430744,
+131104416, 47055124, 36187784, 133553080, 90469192, 11099806, 98249528, 144686176, 63817844, 74103752,
+165003520, 62769872, 22846004, 157509872, 155164288, 48111688, 186821408, 265388720, 99241664, 109132432,
+185290800, 56713432, -59399936, 10937134, -61011084, -222400928, -211984016, -226544496, -364027456, -393633760,
+-420839136, -497922528, -520774976, -508773760, -495030944, -435869376, -390986976, -319718432, -210956976, -150524640,
+-51541220, 144380688, 234030624, 231056896, 427587616, 455805536, 355032736, 432375968, 453050336, 243413520,
+254064496, 311265408, 151546848, 122590176, 202374032, 146934592, 69485592, 95880848, 128271344, 54910620,
+45063872, 128782448, 68520296, -10893111, 71021576, 55562920, -39104068, 6358699, 51419884, -32484448,
+-13596793, 95555504, 38420092, 4472135, 92121144, 60800632, -7881802, 5903970, -38792680, -133077952,
+-181334592, -200714016, -263445776, -282010240, -281600064, -305200928, -307943776, -322619680, -323467936, -295656416,
+-293510560, -246217056, -189722672, -150026960, -61830888, 56574920, 119971320, 199026096, 248752160, 263293840,
+251236256, 229293264, 195175664, 158732320, 138620608, 121420872, 100011536, 90243704, 87873960, 80201000,
+75511968, 78748760, 73841224, 62264676, 53991496, 43466144, 27806692, 17667884, 430034, -20055886,
+-35674000, -48369384, -49075908, -46751256, -43804372, -32229972, -24158118, -18305150, -10721849, -646393,
+6825777, 15379741, 18723374, 21505438, 18105434, 13107703, 10822781, 8510478, 3307662, 555661,
+-1480690, -5490579, -12683038, -13191992, -16574279, -24925306, -23792508, -21573084, -32232118, -35022772,
+-34983584, -43440908, -46119360, -41661720, -47543676, -50061064, -44430364, -41337448, -40223980, -34121904,
+-28613608, -26669600, -21786758, -13529147, -10304700, -6244346, 1504312, 9378061, 13028246, 21094196,
+30012694, 34809636, 38812008, 46237472, 49088792, 48464412, 49065708, 48834852, 43484932, 38159712,
+34451008, 28992102, 20841328, 16304233, 11589432, 6009733, 1833414, -226023, -3367254, -5420786,
+-6754373, -7386807, -8560407, -8055748, -7638063, -6938520, -6677064, -5528160, -5246840, -4026532,
+-3346317, -2114198, -1563368, -288837, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
2902861,
-9578851, 2103460, 1420560, -2200634, -753230, -4744865, -165356, -1236414, 3570729, 3101503,
--3121904, -2304787, -1870995, -1840930, -2211908, 215822, 2851322, -2265595, -2362769, -7897371,
--5752572, -4285841, -158914, 394063, 5810017, -3208341, 2901251, 1740536, 1511829, 318901,
--4267050, 1076963, -9144522, 1093606, 328028, 406948, -586263, -5692443, -2538326, -4910222,
-345745, 289373, -2908230, -7609609, 5260798, -390842, -4392141, -45097, 3007014, 620623,
--1482838, 1054951, -2479270, -1112397, -2336462, 1815161, -2489471, 3554622, 2942590, -594853,
--5002563, 243739, 749472, -469762, -1799591, 1260036, 951872, -1171989, 2784750, 2956548,
-2107218, 178778, 68183, 934155, -2689187, 363998, 4281546, 477815, 864899, 766652,
-3179887, 1184874, 1039919, 2787434, -632434, 2192044, -802085, 1427003, 1072131, -397284,
-659814, 801011, -186294, 1017907, 1640678, 365609, 98247, 1107565, 1551557, 1177895,
--112743, 442382, 554051, 572304, 238371, 86436, -46708, -377957, -1104880, 759136,
-156229, -10119480, -11412265, -783295, -4526359, 3502546, -5604396, 1426466, 2556579, -3780108,
-3087008, 11418707, 616328, -1024350, 6222334, 870268, 6248104, 120259, 2839510, -4461398,
--5966247, -298500, 2233383, -4110821, -1352378, -397284, -1188095, 1153736, -1236951, -2161442,
-2043331, -1007707, -887985, 4497368, 6362457, -1970316, -3453154, 1291175, 5088463, 1959042,
-6527814, 293668, -940598, -149250, 5822902, 394063, -4199405, -2277407, 4568235, 3345243,
-3549791, 988379, -2295123, -4704600, 915902, 2238752, 2740726, -1001264, -2490007, 5119601,
-3412889, -832150, -2871186, 185757, -2002529, 5334350, 1618666, 989453, 1687922, 607738,
-1093606, 3281355, 569083, 3295851, -644245, 5245766, 634581, -5168457, -2054068, -1794223,
-2568927, 3208878, -517544, 863825, -3626026, -1309428, -3376918, -1017907, -2201708, -1868311,
--794569, 1105954, 48855, 36507, 143345, 1454383, 231391, 335007, -179315, -1549946,
--438624, 85362, -150861, 631360, 240518, 271120, -588947, 5945846, 4226248, 6262599,
-6587406, -1604170, 3318399, -1437203, -3678103, -379031, 9742596, 4217121, 2203855, 3421478,
--4009352, 6887517, 3005940, 4604205, -1328756, -7714298, 3269007, -12018392, 2472828, -3093450,
-2450816, 1857037, -183610, -4158065, 1037772, 2660195, -1561221, 2492692, 6120329, -467615,
--4994510, -6899328, 1116692, 3037616, -6276558, 3483755, -5895917, -3907883, 4358855, -2538326,
--4976257, -2479807, -3497177, 5516886, 7664906, 4283156, -2694018, 1611, 4115653, 2399276,
--298500, -3145527, -1432372, -2764348, 2947421, 9390946, -28454, -5141613, -3988414, 2154463,
-813896, -1946157, -5531918, -134218, -4731980, -1908039, 799401, -850404, 3839701, 677531,
-4809290, 5510980, -4814122, -1820529, 319438, -3825205, -4506495, -759136, 69793, -2818036,
-2719251, -2563559, -267362, 2078227, 472983, 120796, 2132988, -2592550, -836445, 576063,
-1013075, -1190243, 881005, 424128, 988916, -172872, 30065, 930397, -1257889, 1644973,
--1260036, 790274, 307627, -402116, -52076, 715649, -486942, -902480, -1427540, 896038,
--1034013, 377420, 1465121, -223875, -848793, 13383655, -3600793, 1312649, 1903207, -8813810,
--7523709, 205622, 8737037, 6680285, 10562935, 3496640, -2987150, -4535486, 775778, -2597918,
-2080375, 1022739, 3568044, 6578280, 2089502, 4854387, -137439, 2884608, -2913062, -6099391,
--3205119, -4664335, 64425, -1290101, 1428077, -7432441, -3717294, -979253, 2758980, -3664144,
-7722351, -8679055, 1869921, -5457830, -4438849, 2549600, 2221572, 7468412, -821413, 1903744,
--2120103, 5238250, 5519570, 1555852, -1181116, -5581310, -769873, 1958505, -4288525, 4332012,
--4721243, 2054605, 7830799, 6580427, 107374, -2499134, 1235877, 7845832, -965294, 1950452,
-1227824, 6417218, 76773, -1676648, -3954591, 2816425, -5965173, 2207076, 12452184, 3088618,
-5871757, 612033, -8212515, 3007014, 1545115, -3214246, 3374771, -1009317, -877784, -4070019,
-1734093, 4072703, 1822677, 812286, -1855426, -4003447, 954557, -767725, -608275, 297963,
--182536, -725850, 1324461, -1338419, -1229434, -1147293, 1855963, 773094, 1466731, -772020,
-1355599, 115964, -1284732, 1449015, 795106, -1120987, -2196339, -768262, 1859184, 158914,
--452045, 964757, 862215, 2034741, -62277, -733366, 1304060, -973884, -4821101, -8396661,
-4263829, -6002217, -6075768, 1210107, -2915209, -19677392, 1959042, 2979634, 18020610, 5768141,
-1388348, -8206072, 7544110, 3195456, -3201361, 3875134, -622770, 6481106, -3882114, -2068027,
--1268089, -1779190, -2646774, -1217086, 4697084, 4014184, 7077033, 2466922, 3502546, -111132,
--4508105, -4979478, 6707665, -3678640, 1537598, -636192, -4633733, 6707665, -1065689, -2957085,
-1235877, 4874788, -3205119, 7420630, -9386114, -7850127, -9519795, 2288681, -5335960, -8232379,
--1826435, 7634305, -3187940, 2269353, 4609037, -3327526, -4264366, 318901, 767725, 2534568,
-529892, -2421288, -214748, 9849434, 4251481, -4056597, -12372727, -9962714, 3694209, 11724187,
-9943923, -7737384, 258772, -5057861, 2288144, 1924145, -8364449, -699006, 1731946, 955630,
--2224793, 474594, 566936, 227633, 2920041, 2586644, -1620813, -2081985, 1464047, -1025960,
-718870, -2966212, 1269700, 852551, -4628364, -1081795, 1071594, 687195, 450435, 897648,
--225486, 318364, 411243, 443992, -1648731, -261993, 667331, -567473, -2015950, -1062468,
-345745, 304943, 2330557, -3466576, 5776194, -9733470, -1663226, -12071006, -3544959, 1839857,
-4235912, -10996727, -2737505, 7610145, -898185, -11003169, 5743445, -3488050, -6303938, 3513820,
-5818070, 1364726, 1235340, 2052994, 7598871, -3540664, -3124052, 2037962, -3731253, -1855963,
-126165, -366146, 279173, 6135361, 3143379, -642635, -503048, 3614215, 1518808, 4425964,
--348966, 4989679, 5240934, 2146410, -5655935, 892816, -765041, -3972845, 5508833, -3030100,
-2327872, -3682398, -1346472, -13456669, 1273995, 11066520, 1007170, 11761231, -2118493, -2542621,
--11989401, 14198088, 6688338, 8127689, 1356136, 6679748, -34360, 38118, 5541582, -3124052,
-2032593, 70867, -13442174, 3189013, -3119757, 3660386, -1986422, 3314641, 12563853, 3875671,
-3346317, -49392, -7553237, 5809480, -3036542, 1250909, 2913599, 3870303, -4134443, -995896,
--1680406, -2153926, 2497524, -1311039, -1037772, -1663763, 344671, 575526, 242129, -3381213,
-1459752, 730144, -729071, 1134945, 546535, 1008244, 789200, 1793149, 75162, 486405,
--151934, -670552, 2159832, -258235, 3019899, 598074, 1296543, -769336, 1693828, 689342,
-1391569, 1453846, 1224603, -15435039, -619012, 11789148, -2667712, 7020661, -7563975, -5039071,
--13532905, 7769596, 3871376, 9003862, 4052839, -4288525, 7395397, -1798518, 7071664, -4629438,
--4480725, 641561, -1713155, 6315213, 1196148, 5340255, 5755793, -3419331, -3105261, -1981054,
-3753802, -703301, -2600603, 887448, -5389110, 2818572, 1762010, -2690260, 3799436, 6951942,
--2854543, -3027952, -935766, -5099200, -2626373, 7975218, 965294, -4801774, 9484362, -10462540,
-1563368, 5732708, -2521683, -3389266, -882079, 4586488, -8152385, 4113505, -3371549, -6830609,
--5282810, -4096862, 49929, -1895154, -4505421, 1977833, 11807402, 6647536, -1714766, -4017405,
--11611444, 1292248, 6309307, -3683471, -12821014, 410706, -2084670, 707596, 1521492, 5908265,
--424128, -2905009, -1210644, -4584341, -2823404, -2135136, 3428995, -2823941, 3177739, -6724845,
-498753, -3055332, -2144799, 4189204, -2036888, -1890859, -2439542, 901943, -4401805, -1676111,
--1060857, -113817, 866510, -3023120, 810675, -2388002, 1289564, 1666984, 3507378, 722091,
-1232119, 1930051, 1381369, -970663, 524523, 274878, 2600066, 1586990, -322659, 1641214,
--181999, 190589, -1138166, 214748, -38118, -1828582, 511638, -1247688, -1038845, 183610,
-1365800, -346819, 5165772, -2273112, 1310502, 7646653, 491237, 8957691, 9700184, 21662204,
-14763950, 9060770, -2308545, -11471321, -4009352, 10513006, 4537096, -11081016, 8260296, -1933272,
--5508833, -6781754, 1001264, 18725520, -12703976, 13540958, 5272609, -2920041, 4434554, -3663607,
-9677635, -3724274, 5104569, 1015223, -6740415, -4715874, -6568079, 245887, 5527086, -1607392,
--3710852, 3564823, 444529, -1126355, -12685186, 3826279, -7114614, -5378910, 3476776, 8341364,
--6185290, -8891119, 296890, 7528541, 602906, -5073967, -1906966, -3025268, 3417720, 2494839,
--2933463, -4798016, -7210713, 4435628, 11515881, 7055558, 3624416, -6706592, 3451006, 7288560,
--8214662, -10714870, 1853278, -8850317, -4245575, -17337172, 205622, -11911018, -6215355, 3184182,
--1512365, -1160178, 5248987, 879931, -9723806, -6750078, 4359392, -1361505, 512712, -3039226,
-269509, 2815351, -439160, 1859184, 1874753, 368830, 162672, 1373316, 1615445, 1061394,
-112743, 313533, -993748, 2541010, 53150, 2335925, -435402, -1595044, 751082, 2171106,
--2768107, -4075387, -2077690, -613107, -1279900, 4576825, 1722282, -1477469, 2036351, -1196148,
-299037, -3741454, -341987, 237834, -1707250, 23685670, 542777, -9291625, 10457172, -11442867,
-13233868, 1055488, -8047158, -13813689, -3336653, 6750078, -10963441, 9714679, -1550483, 6254546,
-7477001, -6438156, -2669322, -3884798, -5112622, -2011655, -4778151, 771484, -5840619, 6046777,
-3830037, 5070746, 10333691, 5295158, -1549946, 12305081, 6277095, 2249489, -6630893, -7249368,
-3687230, -5557688, 1256815, 3865471, -8252243, 7017977, 18773302, 1398012, 13345537, 6291054,
-6445672, 9504763, 534187, 5019743, 5317170, -12202002, -8274792, 8352638, 534723, 7880191,
-1382443, 8273718, -1373316, 2948495, 2037962, -17468706, -1180579, 4433480, 11624866, 2558727,
-10189810, 994285, -2448668, 3308199, 4548907, -9829033, -16581258, -8777839, 2232309, 4023311,
-508954, 12091944, 4234301, -19079318, 4795868, -2811593, 51540, 5424007, -7689065, -312459,
--4168803, 3450469, 4865124, 245887, 1005022, 3506304, 85362, -86973, -1711008, -1879585,
-583042, 304406, 55298, 2916283, 2088428, 692027, 1719061, 1097364, 10737, -2973728,
-2257005, 1850057, -1221918, -314069, -479963, 84289, 1625108, 1355599, 4430796, -3847217,
--1158031, 1633161, -1008780, 2308008, -1966021, 3897683, -1025960, -1265942, 474057, 2206003,
-1521492, -616328, -346282, -1624571, -381178, -11573326, -903554, -10314364, -4720706, 4226785,
--5085242, 2222109, 3584150, -6212670, -15153718, 4818417, -15012521, -17440252, 3861176, -8609262,
-7755637, 10865730, -2709588, 12690555, -3001109, 12537010, 17264158, -38655, 1100049, -17409114,
--3194382, 1825361, 3054259, -2082522, -11345156, 743029, -9594957, 1180042, -2526515, 2582349,
--3634079, -6466610, 1538672, -1197759, -3451543, 4014184, 488553, -2702608, 12491912, 4551055,
-9398999, -5945846, 1800128, -5023501, 3631932, -1169842, 4963909, -1699196, -3598646, -4823249,
--10897943, -6543920, 17795124, 7105487, 11829951, -13662828, 2944737, 9984188, -8483634, 7516,
-6650220, -3630858, 6672769, 868120, -11790759, -3160559, -18194018, -2336999, 7452842, 3732327,
-12349105, 1309428, 8230231, 8610873, 3099356, -627602, 15975131, 1262184, 493384, -2811056,
--1492501, 8331700, 5008469, 7964480, -881005, -1744294, -1986422, 5792837, 1269163, -1313723,
-1661079, 3946538, -896038, -2462627, -4610648, 77846, -3667902, -1742146, -3121904, 2593624,
--326418, -5552856, -964757, 321049, 444529, -352724, -2545842, 3635153, -2979634, 864362,
-1437203, -4213363, -740345, -2845416, 585726, 3213173, -2917894, -2487323, -1809792, -1889249,
-1862942, 961536, -11258183, -10040560, -10662793, -15539729, 10599442, 6869800, 942208, -10457172,
-9447317, -86436, -13205951, -10795937, -3776887, -2690260, -8460012, -3330747, -5021354, -4249334,
--3136400, -12207371, 6099928, 7151658, -646929, -1135482, -2240362, -4509716, -14512694, -15815680,
-471910, 6867116, -4189204, -9739912, -5484673, 7419556, 5442798, 362925, -3059627, -4183298,
--4251481, 9383430, -4786741, 6597070, -4529043, 198105, -15779710, -3432216, -1252520, 11909407,
-3263102, -2783139, -8876624, -6160594, -12419972, 20036560, -9220758, 19029390, 2415382, -8192113,
-12540768, 12364674, 21346524, -20936892, 8661875, 3491809, 2814277, -4151086, -6029061, 9266929,
-4782983, -1585917, -9839233, 10932302, -5749351, 11752641, 9687836, 9197672, -8332237, 18147848,
--13405667, 7466801, 11683385, -6728603, 1451699, 341987, 10150081, -2695629, 4505421, -5294621,
-10847477, -339302, 1895691, -6227703, 4947803, -338766, 5104569, -1479079, 6883759, 3375844,
-2166274, -4065724, 1295470, -3403762, 190052, -2897492, -3921305, -782758, -3463891, -2301029,
--375810, -1752884, -3451006, 2367601, 2862596, 4225711, 977642, -3941169, 367220, -2659659,
-2666101, 1121523, -1941862, 525060, 1862942, 1126355, -4444218, 875100, 4452808, 1753957,
--704375, 1287417, 17064978, -28491740, -30508226, -19234474, -3156264, -13420699, 8271034, -11043972,
-1192927, 5446019, -758062, 20083268, 14567455, 5100274, -5833103, -4519380, 14152991, -2388539,
-2252174, -5798743, -12499965, 9127, 5163625, 3345780, -6835978, 6068789, 948114, -841277,
-12011950, 16411607, 1260036, -10524280, -4442607, -20170240, -7726646, -5226439, -5966247, 893353,
-3612604, -7341173, -2843268, -10261214, 11132555, 13238700, 11134703, 12361990, 9819369, 16181826,
-2077690, 5548561, 3937948, -2946885, 6336151, 9644886, -9587978, -33474976, -7696045, 11115375,
--17245368, 8838506, 11033234, 3952444, -5177046, 838592, -4068408, -13440026, -3559991, 8749922,
--10650982, -9094593, 3330747, -7382512, 21891986, 22167936, -8106751, 14277008, 3871376, -2090575,
--9600863, 6830072, -12986370, -10816875, 12011950, 9004399, 6410776, -833224, -1042603, -15942382,
--11361799, -2095407, -3520263, -2964601, -2276870, -4710506, -3797288, -4390531, -2090039, 586800,
-3880503, 2983392, 5107253, -414464, -2257542, -2383707, -1508070, 7204271, 6808060, 3464428,
--494458, -450972, -1410360, -2684892, -4057134, -1840930, 890132, -1231045, 3044595, -1535451,
-1231582, 1395864, 1372779, 2758443, -3061238, -50466, 794569, 2339684, -3712462, 6647536,
--2599529, -1671816, 27492622, -23165442, -261456, 3730179, -21843130, -6661495, -9127879, 3151969,
--6556805, 18938658, 2616172, -396748, 23998666, -1508070, -20987358, -17104170, -10229001, 8011188,
--1093606, -20644298, 5383742, 5551245, 10897406, -12342662, 6315750, 10215043, 9143985, 7097434,
--2380486, 12239583, 13500693, 4377109, -29717952, 21661130, -10588168, 8259759, -2067490, -3235721,
-5819681, -13353053, -7451232, 13887777, -6314139, -1961726, 12777528, -14317810, 12848932, -5059472,
-11936251, -15756088, 20946556, -9400073, 32355600, -4348118, 2113661, 8180302, -7057705, -5418101,
--3843996, 2514167, -1578401, -16354162, -20331302, -5745593, 11915850, -6219650, -7344931, -20890720,
-9643275, 2047626, -28347858, -503048, 438624, 4109210, 14672145, -10008348, 4621922, -12829067,
--11101417, -16988206, -16816944, -3070902, -9818295, 12133283, -1986959, 11851425, -5769752, 6721624,
--915365, -7703024, -10578504, -1289027, 1304060, 5124433, -2490544, 2219961, 1079111, 4183835,
--390305, -5702106, -785442, -8593693, -363462, 1322850, 1921461, 422517, -3204046, -4196720,
-4723927, 2116345, -1381369, 5281199, -6682432, -8995809, -136365, 7890392, 212064, 2251100,
-3168612, 5383742, 350040, 6031745, -4925791, 1909113, 1239635, 4899484, 8400956, -5251672,
-1376000, -1264868, 1395864, 10546292, 31698470, 15849503, -9683541, 21887154, 7175280, -13930726,
-5357972, 14156212, -2204392, -4776541, -19500762, -5247377, 12000139, 7888781, 5701032, 3573950,
--3531000, -7780334, -18408766, 9829033, -6287296, 4918275, -14139032, -7603166, -369904, -2132988,
-18066780, 5494337, 2864743, 13891535, 6629819, -20904680, -2467996, 7707856, -3946538, 482110,
-17849348, 5928129, 20725364, -12029667, -7638063, -3356517, -7762080, 8188892, -8090645, 15674483,
-15533286, -6792491, -15222975, 25509422, -13125420, -5240397, -3076807, 7633768, 3854196, -14150307,
--4262755, 9139690, -6779606, 11579232, -5480379, 16384763, -8512625, 3739306, 24946780, -451508,
-17566416, 30518964, 3826279, 15011984, -7758322, -36599564, -24865714, -4707821, -1595044, 20876226,
--706522, 7014219, 1742146, -5131949, -17008608, -37775312, 28594282, 2025077, 817118, 9409200,
-4431333, -9178345, 21126408, 1105954, 4434554, -217433, 1390496, -18609556, -6965363, -12253542,
--7459285, -558346, -6973417, -6902013, 4292283, -1467805, -4815732, 13691282, -2586644, -13841069,
--9968619, 3527242, 638340, -3986804, 21087752, 6419903, -7118372, -8133058, 2145873, -1862942,
--4431870, 726386, 1891933, -4723927, 4961224, -127775, 7187091, 9433896, 1781875, -854699,
--2899103, 6332930, 6044630, 5534066, -41399188, -9911711, 43236900, -16597364, -18539764, 38176352,
--24495810, 21512954, 28750512, 11362336, 3950833, -21836688, 8356396, -38305204, -18872624, 8381629,
-19913078, 2252174, 4592394, 14516989, 38744364, 26191248, 8184597, 1445257, -46171, 4310537,
-3198677, -15036681, 318364, 9587978, 12119324, 51707648, 29142964, 19925428, 37335612, 15256261,
--5352066, 11217381, -710280, 35773320, 12942347, -2923799, -5972689, 14946486, -2310693, 17162152,
--53348324, 2300492, 18355080, -1105954, 22217328, -8319352, 5860483, 11838540, -49676664, -19197430,
--3910031, -15910169, -20592758, -24256364, 22673132, -14842870, 4503810, -4549444, 22749368, -37323804,
--10271951, -5272073, 11681237, -188442, -3471944, 27494770, 47937740, -257161, 14882599, -9108552,
-3990025, 33539936, -35756140, -21246666, -29940754, -37740416, -3366181, -1549946, -14934675, -16040092,
--15208479, -14434311, -18618146, -26958972, -11832635, -17515950, -10783589, 4607963, 23531052, 7468412,
-3456912, 3454764, -2481417, 5158793, 2151779, -16926466, -15290084, -4490389, -21489332, -8621073,
--9582609, -7486665, -8595840, 9582609, -7970923, 419833, 1224066, 4015795, 11500312, 17702244,
--462783, -4741644, 12732967, -6841883, 7999914, 2922188, 1503239, -3772055, 2043868, 1358283,
--7991861, -10423886, -11302206, -1845762, 3518652, 22456774, 19781546, -18626200, -65901440, -11943767,
-27025544, 6101001, -7342784, -5346161, 2058363, -9251896, -12082817, 14387604, 10853382, 29822106,
-10917270, 17867064, -6748468, 39727912, 7219303, 25129316, -3543348, 36633388, -13947906, 23811836,
--23324894, 51540, 2605435, 16966732, -6720550, -12929462, -30861488, 17047262, 2288144, 3373160,
--14910516, -27855548, -1678795, 3065533, -3394635, 8341900, 17858474, 2547453, 12773770, 45420888,
--19161460, 4421132, -14998026, 23386634, 20437066, -23011362, 21606370, 24493662, -17592722, 6108517,
-5817533, 16925392, 8453033, 34544960, 10948945, -12461848, 2098629, 44689136, 14227616, -51430084,
-15146739, 9023726, -44113072, -12426951, -14119705, -31334470, 2265059, 19080930, 21109764, -12680891,
-37950332, -9931038, -16460462, -8660802, 20073604, -74634720, -9079561, 907849, 60073172, 7781944,
-50936700, 24283208, 35751844, -1189169, 12276090, -7035157, 30295626, 30535070, 27582280, -6867116,
--18365280, -7707856, 30262876, -3757560, -19765440, -8792335, 35851164, 4796942, -22301080, -7832947,
-32340566, 9039296, 13467407, -647466, 12216498, -9456981, -639950, -918049, 5290326, -1085553,
-5718212, -4721243, -10500121, -12655658, -15195594, -2238752, -11096048, -245887, -1985886, -4575751,
-10722386, -12473122, -5009006, -12375411, -4499515, -22502408, -16582869, 22199076, 392453, -25942140,
--41120552, 33393908, 71165464, 5036923, -39891656, 61815316, -14074071, -642098, 8582955, 35170952,
--20275466, 1753420, 69709464, -34401076, 16453483, 23812372, 22406308, -30739618, -3317862, 5815386,
--15381352, 2910377, 7097971, -12340515, 12220793, -21107080, -6248641, -8293045, -1803886, -12566001,
--11417097, -3878892, 6546604, -23041426, -21971442, 33021320, 5761162, -20249698, -5561446, 19750944,
-47105592, -3853660, -23242216, 24943560, 36084168, -10266582, -2877091, 1214939, 12947716, 372588,
--148176, 16765405, -40242768, 27758910, -23294292, 570694, -32942936, 18662706, -2748242, -48656612,
-23967528, -3216394, -19121194, 33299418, 3694746, 32930052, -27806156, -10298795, -11346767, -25268366,
--39832600, -52162376, 44318156, 18476412, 32573568, 30495878, 18504330, 7576323, -19053012, 28893856,
--14416595, -11757473, 38534984, 13219909, -7489886, -3189013, 11608223, -27169426, 6875706, -10562398,
-17979806, -6695317, -11938398, 17637284, 2748242, -20117626, 1447404, -9378598, -5883569, 4612258,
--4652524, 4029753, -1313723, -14404783, -7629473, 6657200, -5089536, -8972187, 8992588, 14765561,
-14010720, -11120744, -4873714, 16932372, -28404230, 8768176, 10139344, -11783243, -28227062, 14407468,
-1566053, -12336220, 8572755, -13225278, -22016002, 6048388, 19385872, -15893526, -7186554, 7242926,
-16896938, -4373351, -2320893, 15206332, 876710, -11671037, 38693896, -15724949, 11434277, 9001715,
--40221832, 36177048, 12600897, -10282152, 30994094, 2641942, 2045478, 15216532, -13498545, 39639864,
--31800474, -16958678, 14743549, 13689671, 6724845, -29496224, -18004502, -32872070, 18194018, 4436701,
-16621523, 90194, 17854716, 7270306, 5978058, 783295, 15226196, -6800007, 8385387, -14986752,
-11295227, -13846438, -115964, -18300318, -13048648, 840740, -16335908, 7727183, 38970924, 9385040,
--29192356, 15307800, 11734924, 20734492, 597537, 34431680, -29511794, 4589173, 13727252, -28418724,
--6627672, 57563300, 32387274, -76017160, -32284732, 40545028, -11028939, -36032628, 14260365, -3628711,
--27831388, 20498806, 34629248, -46843060, 9302362, 41726144, -28204514, -25269976, 34089692, 4632122,
--28010702, 5045513, 22169010, -24442122, -3383897, 26925686, -3926674, -11914776, -19222664, 24637544,
--6477348, 13762686, 3207267, 13977971, -9527311, 9066139, 24820616, 9841381, -18259516, 1544041,
--13059922, -8806294, -18394808, -1621887, -4896800, -1262720, -12358768, 12693239, 10912975, -4279935,
-28369332, -7138773, -30123826, 36319856, -4287988, -6863895, 6705518, 12742094, 1720134, -3335042,
-30640296, 16865262, -21497386, 1852205, 8727910, -15584289, -12885976, 22179212, -11398843, -41981156,
-40494024, 5190468, -40929428, -1176284, 21581674, -15360414, -34417184, 19892678, 26538602, -42432128,
-6263673, 31998580, -18727668, -3255585, 35013112, -2565706, -14283987, 8231842, 14798310, -19153944,
--5233955, 20548198, -4677757, -17899814, 15079630, 9008694, -10432476, 33817500, -72796472, -4968741,
--13060459, -80502184, -14667850, -24700894, 7685844, 14063870, 23643794, -10467909, -31723166, -11716134,
--45676440, 6263136, 16009491, 9582072, 6958921, -36368172, 22161494, 3729105, -44180180, 32247152,
--47493212, -19149112, -17987324, 12985297, 33897492, 39797168, -3528853, -8759586, -76707040, 32981054,
-77098424, 28368796, 1487669, -42359652, -62595928, -25436944, -5561446, 32692754, -39325796, -23165442,
--40396316, -12628278, 71970232, 78084120, -13906030, -35798016, -31295280, -16356846, -8570070, 39391828,
--19005768, 11877195, 7833484, 26243324, -7537668, -17477296, -45886356, -19628000, 68978248, 29819422,
-45777372, -42215232, -23855322, -19492172, 46774880, 1078574, -77120432, -73900280, 41049148, 71474696,
-119288424, 21051782, -102062384, 17125108, -27262304, 34685084, 32915018, -124450976, -40134320, 24441586,
-65226596, 16067473, -63809792, -14101451, -6751152, 36954436, 31049930, 8503498, -51196548, -7856032,
-10740639, 22727894, 10869488, -13160317, 1779727, -28023588, -3954591, -405874, 26778584, -18537078,
-35845796, -23067732, 9954124, 21086678, -9059160, 17496086, 15058692, 28490128, 1087164, -13766981,
--16768089, 2600603, 1016834, 4839355, 2607045, -927176, -2278480, -10285373, -11227581, -2157684,
-17609366, -4625680, 135291, -3760244, 5647882, 1342714, 9659381, -9139154, -12228846, -23537494,
--12025372, -1400696, 12847858, -12597139, -1161252, -36853504, 31479426, -32895154, -6950868, 1021665,
-8443369, -6367826, 7588134, 12518219, -20935818, -18314814, -253940, 4582193, 13682155, -15464567,
-2295123, 11450383, -8908299, 7060390, -4559108, 35471600, -371515, -5610838, 20650202, 11009075,
-18364744, -9450002, 11774116, -3936875, -358093, 14800994, 10821170, 2268817, 4618164, 20038706,
--18780818, -5946382, 2155537, 27117350, -308701, -6396280, 25569014, -6703370, -10929081, -11244224,
-21206402, -5235029, 9333501, 5405217, 3334505, -7634305, 3912178, 7988103, 3027415, 23578296,
-11938935, 6542309, -10189810, -1767916, 9200357, -17196512, 6240588, 6260452, 17658758, 39192,
--1967095, 9727564, 2305324, -19921668, 22314502, 6593312, -5070746, 18246632, -12407087, -1739999,
--9233643, -8360691, 18253074, 13094282, -1154809, 6463389, -10741176, 2347200, -14518063, -1569274,
--13290239, 2811593, 8731132, 2972654, 1697049, -3074123, -1770063, 2384244, -7919920, 2157684,
--3394098, 3623879, -5201743, -2025614, -4812511, -6386080, 3069291, -1248225, -361851, -2461553,
-8647917, 3158949, -10851235, -11541651, -7722351, 2232846, 3599183, 8143258, 4963909, -10646150,
--1520418, -4108673, 9661529, -2571075, 10415296, 4147865, -8475581, -95026, 4639102, -5007395,
-6655589, -4053376, 7519414, -5425081, -1663763, 2269353, -4206921, 57456460, 4631586, -21241834,
--17581448, 2838437, 12993350, -812286, 11859478, -4535486, -3181497, -15960635, -3510599, -11186779,
-17732846, -11127723, -913217, -7038915, -3316252, -4145180, 1932198, -11827803, 1797981, -5120138,
--8320963, 2399276, -1335735, 625455, -2262374, 4109747, 1989644, -9907953, -6350109, -53687,
--6702297, -5867462, 4876936, -1648194, -10095858, 617402, -5622112, 4243428, -14907295, 7385733,
--6489696, -11359652, 3417720, -5240934, -5877663, 1465658, -116501, 636729, -2497524, 2431488,
--4575214, 4966593, -3147137, 460635, 8280697, -6069863, 2763812, -1656784, -903554, 2185065,
--6889128, 6163815, -7242389, 6152004, -1534377, -387084, -4648229, 5807333, -6962142, 368830,
-2419140, -9203041, 9059697, -5640903, 3825742, -4295504, 3652333, -3332895, -4061965, 6662568,
--4277788, -932545, 6605660, -4387846, -102005, 453119, 1009854, -4844723, 335007, -524523,
--2117419, -1431835, 1094143, -1591822, -2604361, -1372242, 2847027, -2751464, 2120103, -855235,
--355409, -956167, -2017024, 1741072, -1381369, -1654636, 1933809, -2192044, 1516660, 619549,
--1312649, 195958, -383863, 434329, -4072703, 3728569, -4188667, 593242, -672162, -2284386,
-489089, -1316408, 2746632, -7047505, -27831924, -44482976, 47165184, 164634688, 31381716, 49520972,
--101457328, -140728368, -58997280, -73630768, 56807920, 132200168, 75782016, 51109572, 4956929, -72663864,
--64581276, -64316600, -26499948, 36672580, 31037044, 33432026, 29799556, -886911, -4992900, -7531225,
--10527502, -15168214, -2208687, 20304458, -1937567, -11630235, -4743255, -16850230, -9677098, -2850785,
--4358318, 32511828, 29995514, 17922362, 18992346, 1075352, -23549306, -23776938, -43928388, -29080686,
-3883187, 3661997, 8807367, 25928180, 36674724, 22175990, 18408766, -764504, -20969640, -28922310,
--25163140, -20928302, 2884071, 7567196, 13360570, 9390409, 6072547, 1416802, -7711614, 3047816,
-617402, 3242164, 18176838, -1648194, 7987566, 8383240, -13717589, -25666188, -26598196, -23826332,
-6236830, 19640348, 14091251, 21483426, 18787260, -6287296, 4645007, 11732777, -7635378, -7014219,
--16572668, -21185464, -8349417, -4975183, -2307471, 9026411, 4100083, 4889284, 14212047, 13642427,
-13989245, 8070781, 3497714, -7027104, -8839580, -21785684, -24016920, -16933982, -12532715, 5419712,
-15528991, 19682224, 26285736, 18868866, 11944841, 196495, -8269960, -12884902, -27352500, -28896004,
--10289131, 5180805, 13753022, 11052025, 9550397, 11061151, 7910256, -528281, -2126009, 1175210,
-233002, -4793721, -4367982, -14606647, -9654550, -404801, 5229660, 7198902, 5647882, -2178622,
--299574, 5305359, 4131759, 314606, 2860985, 2558727, -1737851, -6886443, -6230387, -5964099,
--1406602, -1578937, -137976, 1261110, 6087580, 6774237, 6088116, 2902861, 1948841, -2887292,
--5279052, -6484327, -3827890, -2286533, -19864, 338229, 2238215, 1950989, 3643206, 2470143,
-1488206, -625992, -281857, -881005, -558883, -2234994, -2036351, -1742146, 1205812, 1414118,
-1750736, -423591, -638340, -1029718, 936840, 202400, 922344, 183073, 1057099, -472983,
--454193, -1007707, 549219, -186294, 288837, -1067836, -392990, -907849, 355945, 93416,
-1283122, 228170, 585189, -88584, 916976, -12885, 129923, -1384053, -779000, -1236414,
-123480, -155156, 932545, 87510, 847719, 146029, 672699, -518617, 111669, -633508,
-279710, -474594, 361851, -360240, 394063, -543313, 209917, -392453, 561030, -222265,
-479426, -379031, 417686, -370978, 435939, -354335, 414464, -418222, 367220, -443455,
-350040, -446140, 369904, -405874, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+9578851, 2103460, 1420560, -2200634, -753230, -4744865, -165356, -1236414, 3570729, 3101503,
+-3121904, -2304787, -1870995, -1840930, -2211908, 215822, 2851322, -2265595, -2362769, -7897371,
+-5752572, -4285841, -158914, 394063, 5810017, -3208341, 2901251, 1740536, 1511829, 318901,
+-4267050, 1076963, -9144522, 1093606, 328028, 406948, -586263, -5692443, -2538326, -4910222,
+345745, 289373, -2908230, -7609609, 5260798, -390842, -4392141, -45097, 3007014, 620623,
+-1482838, 1054951, -2479270, -1112397, -2336462, 1815161, -2489471, 3554622, 2942590, -594853,
+-5002563, 243739, 749472, -469762, -1799591, 1260036, 951872, -1171989, 2784750, 2956548,
+2107218, 178778, 68183, 934155, -2689187, 363998, 4281546, 477815, 864899, 766652,
+3179887, 1184874, 1039919, 2787434, -632434, 2192044, -802085, 1427003, 1072131, -397284,
+659814, 801011, -186294, 1017907, 1640678, 365609, 98247, 1107565, 1551557, 1177895,
+-112743, 442382, 554051, 572304, 238371, 86436, -46708, -377957, -1104880, 759136,
+156229, -10119480, -11412265, -783295, -4526359, 3502546, -5604396, 1426466, 2556579, -3780108,
+3087008, 11418707, 616328, -1024350, 6222334, 870268, 6248104, 120259, 2839510, -4461398,
+-5966247, -298500, 2233383, -4110821, -1352378, -397284, -1188095, 1153736, -1236951, -2161442,
+2043331, -1007707, -887985, 4497368, 6362457, -1970316, -3453154, 1291175, 5088463, 1959042,
+6527814, 293668, -940598, -149250, 5822902, 394063, -4199405, -2277407, 4568235, 3345243,
+3549791, 988379, -2295123, -4704600, 915902, 2238752, 2740726, -1001264, -2490007, 5119601,
+3412889, -832150, -2871186, 185757, -2002529, 5334350, 1618666, 989453, 1687922, 607738,
+1093606, 3281355, 569083, 3295851, -644245, 5245766, 634581, -5168457, -2054068, -1794223,
+2568927, 3208878, -517544, 863825, -3626026, -1309428, -3376918, -1017907, -2201708, -1868311,
+-794569, 1105954, 48855, 36507, 143345, 1454383, 231391, 335007, -179315, -1549946,
+-438624, 85362, -150861, 631360, 240518, 271120, -588947, 5945846, 4226248, 6262599,
+6587406, -1604170, 3318399, -1437203, -3678103, -379031, 9742596, 4217121, 2203855, 3421478,
+-4009352, 6887517, 3005940, 4604205, -1328756, -7714298, 3269007, -12018392, 2472828, -3093450,
+2450816, 1857037, -183610, -4158065, 1037772, 2660195, -1561221, 2492692, 6120329, -467615,
+-4994510, -6899328, 1116692, 3037616, -6276558, 3483755, -5895917, -3907883, 4358855, -2538326,
+-4976257, -2479807, -3497177, 5516886, 7664906, 4283156, -2694018, 1611, 4115653, 2399276,
+-298500, -3145527, -1432372, -2764348, 2947421, 9390946, -28454, -5141613, -3988414, 2154463,
+813896, -1946157, -5531918, -134218, -4731980, -1908039, 799401, -850404, 3839701, 677531,
+4809290, 5510980, -4814122, -1820529, 319438, -3825205, -4506495, -759136, 69793, -2818036,
+2719251, -2563559, -267362, 2078227, 472983, 120796, 2132988, -2592550, -836445, 576063,
+1013075, -1190243, 881005, 424128, 988916, -172872, 30065, 930397, -1257889, 1644973,
+-1260036, 790274, 307627, -402116, -52076, 715649, -486942, -902480, -1427540, 896038,
+-1034013, 377420, 1465121, -223875, -848793, 13383655, -3600793, 1312649, 1903207, -8813810,
+-7523709, 205622, 8737037, 6680285, 10562935, 3496640, -2987150, -4535486, 775778, -2597918,
+2080375, 1022739, 3568044, 6578280, 2089502, 4854387, -137439, 2884608, -2913062, -6099391,
+-3205119, -4664335, 64425, -1290101, 1428077, -7432441, -3717294, -979253, 2758980, -3664144,
+7722351, -8679055, 1869921, -5457830, -4438849, 2549600, 2221572, 7468412, -821413, 1903744,
+-2120103, 5238250, 5519570, 1555852, -1181116, -5581310, -769873, 1958505, -4288525, 4332012,
+-4721243, 2054605, 7830799, 6580427, 107374, -2499134, 1235877, 7845832, -965294, 1950452,
+1227824, 6417218, 76773, -1676648, -3954591, 2816425, -5965173, 2207076, 12452184, 3088618,
+5871757, 612033, -8212515, 3007014, 1545115, -3214246, 3374771, -1009317, -877784, -4070019,
+1734093, 4072703, 1822677, 812286, -1855426, -4003447, 954557, -767725, -608275, 297963,
+-182536, -725850, 1324461, -1338419, -1229434, -1147293, 1855963, 773094, 1466731, -772020,
+1355599, 115964, -1284732, 1449015, 795106, -1120987, -2196339, -768262, 1859184, 158914,
+-452045, 964757, 862215, 2034741, -62277, -733366, 1304060, -973884, -4821101, -8396661,
+4263829, -6002217, -6075768, 1210107, -2915209, -19677392, 1959042, 2979634, 18020610, 5768141,
+1388348, -8206072, 7544110, 3195456, -3201361, 3875134, -622770, 6481106, -3882114, -2068027,
+-1268089, -1779190, -2646774, -1217086, 4697084, 4014184, 7077033, 2466922, 3502546, -111132,
+-4508105, -4979478, 6707665, -3678640, 1537598, -636192, -4633733, 6707665, -1065689, -2957085,
+1235877, 4874788, -3205119, 7420630, -9386114, -7850127, -9519795, 2288681, -5335960, -8232379,
+-1826435, 7634305, -3187940, 2269353, 4609037, -3327526, -4264366, 318901, 767725, 2534568,
+529892, -2421288, -214748, 9849434, 4251481, -4056597, -12372727, -9962714, 3694209, 11724187,
+9943923, -7737384, 258772, -5057861, 2288144, 1924145, -8364449, -699006, 1731946, 955630,
+-2224793, 474594, 566936, 227633, 2920041, 2586644, -1620813, -2081985, 1464047, -1025960,
+718870, -2966212, 1269700, 852551, -4628364, -1081795, 1071594, 687195, 450435, 897648,
+-225486, 318364, 411243, 443992, -1648731, -261993, 667331, -567473, -2015950, -1062468,
+345745, 304943, 2330557, -3466576, 5776194, -9733470, -1663226, -12071006, -3544959, 1839857,
+4235912, -10996727, -2737505, 7610145, -898185, -11003169, 5743445, -3488050, -6303938, 3513820,
+5818070, 1364726, 1235340, 2052994, 7598871, -3540664, -3124052, 2037962, -3731253, -1855963,
+126165, -366146, 279173, 6135361, 3143379, -642635, -503048, 3614215, 1518808, 4425964,
+-348966, 4989679, 5240934, 2146410, -5655935, 892816, -765041, -3972845, 5508833, -3030100,
+2327872, -3682398, -1346472, -13456669, 1273995, 11066520, 1007170, 11761231, -2118493, -2542621,
+-11989401, 14198088, 6688338, 8127689, 1356136, 6679748, -34360, 38118, 5541582, -3124052,
+2032593, 70867, -13442174, 3189013, -3119757, 3660386, -1986422, 3314641, 12563853, 3875671,
+3346317, -49392, -7553237, 5809480, -3036542, 1250909, 2913599, 3870303, -4134443, -995896,
+-1680406, -2153926, 2497524, -1311039, -1037772, -1663763, 344671, 575526, 242129, -3381213,
+1459752, 730144, -729071, 1134945, 546535, 1008244, 789200, 1793149, 75162, 486405,
+-151934, -670552, 2159832, -258235, 3019899, 598074, 1296543, -769336, 1693828, 689342,
+1391569, 1453846, 1224603, -15435039, -619012, 11789148, -2667712, 7020661, -7563975, -5039071,
+-13532905, 7769596, 3871376, 9003862, 4052839, -4288525, 7395397, -1798518, 7071664, -4629438,
+-4480725, 641561, -1713155, 6315213, 1196148, 5340255, 5755793, -3419331, -3105261, -1981054,
+3753802, -703301, -2600603, 887448, -5389110, 2818572, 1762010, -2690260, 3799436, 6951942,
+-2854543, -3027952, -935766, -5099200, -2626373, 7975218, 965294, -4801774, 9484362, -10462540,
+1563368, 5732708, -2521683, -3389266, -882079, 4586488, -8152385, 4113505, -3371549, -6830609,
+-5282810, -4096862, 49929, -1895154, -4505421, 1977833, 11807402, 6647536, -1714766, -4017405,
+-11611444, 1292248, 6309307, -3683471, -12821014, 410706, -2084670, 707596, 1521492, 5908265,
+-424128, -2905009, -1210644, -4584341, -2823404, -2135136, 3428995, -2823941, 3177739, -6724845,
+498753, -3055332, -2144799, 4189204, -2036888, -1890859, -2439542, 901943, -4401805, -1676111,
+-1060857, -113817, 866510, -3023120, 810675, -2388002, 1289564, 1666984, 3507378, 722091,
+1232119, 1930051, 1381369, -970663, 524523, 274878, 2600066, 1586990, -322659, 1641214,
+-181999, 190589, -1138166, 214748, -38118, -1828582, 511638, -1247688, -1038845, 183610,
+1365800, -346819, 5165772, -2273112, 1310502, 7646653, 491237, 8957691, 9700184, 21662204,
+14763950, 9060770, -2308545, -11471321, -4009352, 10513006, 4537096, -11081016, 8260296, -1933272,
+-5508833, -6781754, 1001264, 18725520, -12703976, 13540958, 5272609, -2920041, 4434554, -3663607,
+9677635, -3724274, 5104569, 1015223, -6740415, -4715874, -6568079, 245887, 5527086, -1607392,
+-3710852, 3564823, 444529, -1126355, -12685186, 3826279, -7114614, -5378910, 3476776, 8341364,
+-6185290, -8891119, 296890, 7528541, 602906, -5073967, -1906966, -3025268, 3417720, 2494839,
+-2933463, -4798016, -7210713, 4435628, 11515881, 7055558, 3624416, -6706592, 3451006, 7288560,
+-8214662, -10714870, 1853278, -8850317, -4245575, -17337172, 205622, -11911018, -6215355, 3184182,
+-1512365, -1160178, 5248987, 879931, -9723806, -6750078, 4359392, -1361505, 512712, -3039226,
+269509, 2815351, -439160, 1859184, 1874753, 368830, 162672, 1373316, 1615445, 1061394,
+112743, 313533, -993748, 2541010, 53150, 2335925, -435402, -1595044, 751082, 2171106,
+-2768107, -4075387, -2077690, -613107, -1279900, 4576825, 1722282, -1477469, 2036351, -1196148,
+299037, -3741454, -341987, 237834, -1707250, 23685670, 542777, -9291625, 10457172, -11442867,
+13233868, 1055488, -8047158, -13813689, -3336653, 6750078, -10963441, 9714679, -1550483, 6254546,
+7477001, -6438156, -2669322, -3884798, -5112622, -2011655, -4778151, 771484, -5840619, 6046777,
+3830037, 5070746, 10333691, 5295158, -1549946, 12305081, 6277095, 2249489, -6630893, -7249368,
+3687230, -5557688, 1256815, 3865471, -8252243, 7017977, 18773302, 1398012, 13345537, 6291054,
+6445672, 9504763, 534187, 5019743, 5317170, -12202002, -8274792, 8352638, 534723, 7880191,
+1382443, 8273718, -1373316, 2948495, 2037962, -17468706, -1180579, 4433480, 11624866, 2558727,
+10189810, 994285, -2448668, 3308199, 4548907, -9829033, -16581258, -8777839, 2232309, 4023311,
+508954, 12091944, 4234301, -19079318, 4795868, -2811593, 51540, 5424007, -7689065, -312459,
+-4168803, 3450469, 4865124, 245887, 1005022, 3506304, 85362, -86973, -1711008, -1879585,
+583042, 304406, 55298, 2916283, 2088428, 692027, 1719061, 1097364, 10737, -2973728,
+2257005, 1850057, -1221918, -314069, -479963, 84289, 1625108, 1355599, 4430796, -3847217,
+-1158031, 1633161, -1008780, 2308008, -1966021, 3897683, -1025960, -1265942, 474057, 2206003,
+1521492, -616328, -346282, -1624571, -381178, -11573326, -903554, -10314364, -4720706, 4226785,
+-5085242, 2222109, 3584150, -6212670, -15153718, 4818417, -15012521, -17440252, 3861176, -8609262,
+7755637, 10865730, -2709588, 12690555, -3001109, 12537010, 17264158, -38655, 1100049, -17409114,
+-3194382, 1825361, 3054259, -2082522, -11345156, 743029, -9594957, 1180042, -2526515, 2582349,
+-3634079, -6466610, 1538672, -1197759, -3451543, 4014184, 488553, -2702608, 12491912, 4551055,
+9398999, -5945846, 1800128, -5023501, 3631932, -1169842, 4963909, -1699196, -3598646, -4823249,
+-10897943, -6543920, 17795124, 7105487, 11829951, -13662828, 2944737, 9984188, -8483634, 7516,
+6650220, -3630858, 6672769, 868120, -11790759, -3160559, -18194018, -2336999, 7452842, 3732327,
+12349105, 1309428, 8230231, 8610873, 3099356, -627602, 15975131, 1262184, 493384, -2811056,
+-1492501, 8331700, 5008469, 7964480, -881005, -1744294, -1986422, 5792837, 1269163, -1313723,
+1661079, 3946538, -896038, -2462627, -4610648, 77846, -3667902, -1742146, -3121904, 2593624,
+-326418, -5552856, -964757, 321049, 444529, -352724, -2545842, 3635153, -2979634, 864362,
+1437203, -4213363, -740345, -2845416, 585726, 3213173, -2917894, -2487323, -1809792, -1889249,
+1862942, 961536, -11258183, -10040560, -10662793, -15539729, 10599442, 6869800, 942208, -10457172,
+9447317, -86436, -13205951, -10795937, -3776887, -2690260, -8460012, -3330747, -5021354, -4249334,
+-3136400, -12207371, 6099928, 7151658, -646929, -1135482, -2240362, -4509716, -14512694, -15815680,
+471910, 6867116, -4189204, -9739912, -5484673, 7419556, 5442798, 362925, -3059627, -4183298,
+-4251481, 9383430, -4786741, 6597070, -4529043, 198105, -15779710, -3432216, -1252520, 11909407,
+3263102, -2783139, -8876624, -6160594, -12419972, 20036560, -9220758, 19029390, 2415382, -8192113,
+12540768, 12364674, 21346524, -20936892, 8661875, 3491809, 2814277, -4151086, -6029061, 9266929,
+4782983, -1585917, -9839233, 10932302, -5749351, 11752641, 9687836, 9197672, -8332237, 18147848,
+-13405667, 7466801, 11683385, -6728603, 1451699, 341987, 10150081, -2695629, 4505421, -5294621,
+10847477, -339302, 1895691, -6227703, 4947803, -338766, 5104569, -1479079, 6883759, 3375844,
+2166274, -4065724, 1295470, -3403762, 190052, -2897492, -3921305, -782758, -3463891, -2301029,
+-375810, -1752884, -3451006, 2367601, 2862596, 4225711, 977642, -3941169, 367220, -2659659,
+2666101, 1121523, -1941862, 525060, 1862942, 1126355, -4444218, 875100, 4452808, 1753957,
+-704375, 1287417, 17064978, -28491740, -30508226, -19234474, -3156264, -13420699, 8271034, -11043972,
+1192927, 5446019, -758062, 20083268, 14567455, 5100274, -5833103, -4519380, 14152991, -2388539,
+2252174, -5798743, -12499965, 9127, 5163625, 3345780, -6835978, 6068789, 948114, -841277,
+12011950, 16411607, 1260036, -10524280, -4442607, -20170240, -7726646, -5226439, -5966247, 893353,
+3612604, -7341173, -2843268, -10261214, 11132555, 13238700, 11134703, 12361990, 9819369, 16181826,
+2077690, 5548561, 3937948, -2946885, 6336151, 9644886, -9587978, -33474976, -7696045, 11115375,
+-17245368, 8838506, 11033234, 3952444, -5177046, 838592, -4068408, -13440026, -3559991, 8749922,
+-10650982, -9094593, 3330747, -7382512, 21891986, 22167936, -8106751, 14277008, 3871376, -2090575,
+-9600863, 6830072, -12986370, -10816875, 12011950, 9004399, 6410776, -833224, -1042603, -15942382,
+-11361799, -2095407, -3520263, -2964601, -2276870, -4710506, -3797288, -4390531, -2090039, 586800,
+3880503, 2983392, 5107253, -414464, -2257542, -2383707, -1508070, 7204271, 6808060, 3464428,
+-494458, -450972, -1410360, -2684892, -4057134, -1840930, 890132, -1231045, 3044595, -1535451,
+1231582, 1395864, 1372779, 2758443, -3061238, -50466, 794569, 2339684, -3712462, 6647536,
+-2599529, -1671816, 27492622, -23165442, -261456, 3730179, -21843130, -6661495, -9127879, 3151969,
+-6556805, 18938658, 2616172, -396748, 23998666, -1508070, -20987358, -17104170, -10229001, 8011188,
+-1093606, -20644298, 5383742, 5551245, 10897406, -12342662, 6315750, 10215043, 9143985, 7097434,
+-2380486, 12239583, 13500693, 4377109, -29717952, 21661130, -10588168, 8259759, -2067490, -3235721,
+5819681, -13353053, -7451232, 13887777, -6314139, -1961726, 12777528, -14317810, 12848932, -5059472,
+11936251, -15756088, 20946556, -9400073, 32355600, -4348118, 2113661, 8180302, -7057705, -5418101,
+-3843996, 2514167, -1578401, -16354162, -20331302, -5745593, 11915850, -6219650, -7344931, -20890720,
+9643275, 2047626, -28347858, -503048, 438624, 4109210, 14672145, -10008348, 4621922, -12829067,
+-11101417, -16988206, -16816944, -3070902, -9818295, 12133283, -1986959, 11851425, -5769752, 6721624,
+-915365, -7703024, -10578504, -1289027, 1304060, 5124433, -2490544, 2219961, 1079111, 4183835,
+-390305, -5702106, -785442, -8593693, -363462, 1322850, 1921461, 422517, -3204046, -4196720,
+4723927, 2116345, -1381369, 5281199, -6682432, -8995809, -136365, 7890392, 212064, 2251100,
+3168612, 5383742, 350040, 6031745, -4925791, 1909113, 1239635, 4899484, 8400956, -5251672,
+1376000, -1264868, 1395864, 10546292, 31698470, 15849503, -9683541, 21887154, 7175280, -13930726,
+5357972, 14156212, -2204392, -4776541, -19500762, -5247377, 12000139, 7888781, 5701032, 3573950,
+-3531000, -7780334, -18408766, 9829033, -6287296, 4918275, -14139032, -7603166, -369904, -2132988,
+18066780, 5494337, 2864743, 13891535, 6629819, -20904680, -2467996, 7707856, -3946538, 482110,
+17849348, 5928129, 20725364, -12029667, -7638063, -3356517, -7762080, 8188892, -8090645, 15674483,
+15533286, -6792491, -15222975, 25509422, -13125420, -5240397, -3076807, 7633768, 3854196, -14150307,
+-4262755, 9139690, -6779606, 11579232, -5480379, 16384763, -8512625, 3739306, 24946780, -451508,
+17566416, 30518964, 3826279, 15011984, -7758322, -36599564, -24865714, -4707821, -1595044, 20876226,
+-706522, 7014219, 1742146, -5131949, -17008608, -37775312, 28594282, 2025077, 817118, 9409200,
+4431333, -9178345, 21126408, 1105954, 4434554, -217433, 1390496, -18609556, -6965363, -12253542,
+-7459285, -558346, -6973417, -6902013, 4292283, -1467805, -4815732, 13691282, -2586644, -13841069,
+-9968619, 3527242, 638340, -3986804, 21087752, 6419903, -7118372, -8133058, 2145873, -1862942,
+-4431870, 726386, 1891933, -4723927, 4961224, -127775, 7187091, 9433896, 1781875, -854699,
+-2899103, 6332930, 6044630, 5534066, -41399188, -9911711, 43236900, -16597364, -18539764, 38176352,
+-24495810, 21512954, 28750512, 11362336, 3950833, -21836688, 8356396, -38305204, -18872624, 8381629,
+19913078, 2252174, 4592394, 14516989, 38744364, 26191248, 8184597, 1445257, -46171, 4310537,
+3198677, -15036681, 318364, 9587978, 12119324, 51707648, 29142964, 19925428, 37335612, 15256261,
+-5352066, 11217381, -710280, 35773320, 12942347, -2923799, -5972689, 14946486, -2310693, 17162152,
+-53348324, 2300492, 18355080, -1105954, 22217328, -8319352, 5860483, 11838540, -49676664, -19197430,
+-3910031, -15910169, -20592758, -24256364, 22673132, -14842870, 4503810, -4549444, 22749368, -37323804,
+-10271951, -5272073, 11681237, -188442, -3471944, 27494770, 47937740, -257161, 14882599, -9108552,
+3990025, 33539936, -35756140, -21246666, -29940754, -37740416, -3366181, -1549946, -14934675, -16040092,
+-15208479, -14434311, -18618146, -26958972, -11832635, -17515950, -10783589, 4607963, 23531052, 7468412,
+3456912, 3454764, -2481417, 5158793, 2151779, -16926466, -15290084, -4490389, -21489332, -8621073,
+-9582609, -7486665, -8595840, 9582609, -7970923, 419833, 1224066, 4015795, 11500312, 17702244,
+-462783, -4741644, 12732967, -6841883, 7999914, 2922188, 1503239, -3772055, 2043868, 1358283,
+-7991861, -10423886, -11302206, -1845762, 3518652, 22456774, 19781546, -18626200, -65901440, -11943767,
+27025544, 6101001, -7342784, -5346161, 2058363, -9251896, -12082817, 14387604, 10853382, 29822106,
+10917270, 17867064, -6748468, 39727912, 7219303, 25129316, -3543348, 36633388, -13947906, 23811836,
+-23324894, 51540, 2605435, 16966732, -6720550, -12929462, -30861488, 17047262, 2288144, 3373160,
+-14910516, -27855548, -1678795, 3065533, -3394635, 8341900, 17858474, 2547453, 12773770, 45420888,
+-19161460, 4421132, -14998026, 23386634, 20437066, -23011362, 21606370, 24493662, -17592722, 6108517,
+5817533, 16925392, 8453033, 34544960, 10948945, -12461848, 2098629, 44689136, 14227616, -51430084,
+15146739, 9023726, -44113072, -12426951, -14119705, -31334470, 2265059, 19080930, 21109764, -12680891,
+37950332, -9931038, -16460462, -8660802, 20073604, -74634720, -9079561, 907849, 60073172, 7781944,
+50936700, 24283208, 35751844, -1189169, 12276090, -7035157, 30295626, 30535070, 27582280, -6867116,
+-18365280, -7707856, 30262876, -3757560, -19765440, -8792335, 35851164, 4796942, -22301080, -7832947,
+32340566, 9039296, 13467407, -647466, 12216498, -9456981, -639950, -918049, 5290326, -1085553,
+5718212, -4721243, -10500121, -12655658, -15195594, -2238752, -11096048, -245887, -1985886, -4575751,
+10722386, -12473122, -5009006, -12375411, -4499515, -22502408, -16582869, 22199076, 392453, -25942140,
+-41120552, 33393908, 71165464, 5036923, -39891656, 61815316, -14074071, -642098, 8582955, 35170952,
+-20275466, 1753420, 69709464, -34401076, 16453483, 23812372, 22406308, -30739618, -3317862, 5815386,
+-15381352, 2910377, 7097971, -12340515, 12220793, -21107080, -6248641, -8293045, -1803886, -12566001,
+-11417097, -3878892, 6546604, -23041426, -21971442, 33021320, 5761162, -20249698, -5561446, 19750944,
+47105592, -3853660, -23242216, 24943560, 36084168, -10266582, -2877091, 1214939, 12947716, 372588,
+-148176, 16765405, -40242768, 27758910, -23294292, 570694, -32942936, 18662706, -2748242, -48656612,
+23967528, -3216394, -19121194, 33299418, 3694746, 32930052, -27806156, -10298795, -11346767, -25268366,
+-39832600, -52162376, 44318156, 18476412, 32573568, 30495878, 18504330, 7576323, -19053012, 28893856,
+-14416595, -11757473, 38534984, 13219909, -7489886, -3189013, 11608223, -27169426, 6875706, -10562398,
+17979806, -6695317, -11938398, 17637284, 2748242, -20117626, 1447404, -9378598, -5883569, 4612258,
+-4652524, 4029753, -1313723, -14404783, -7629473, 6657200, -5089536, -8972187, 8992588, 14765561,
+14010720, -11120744, -4873714, 16932372, -28404230, 8768176, 10139344, -11783243, -28227062, 14407468,
+1566053, -12336220, 8572755, -13225278, -22016002, 6048388, 19385872, -15893526, -7186554, 7242926,
+16896938, -4373351, -2320893, 15206332, 876710, -11671037, 38693896, -15724949, 11434277, 9001715,
+-40221832, 36177048, 12600897, -10282152, 30994094, 2641942, 2045478, 15216532, -13498545, 39639864,
+-31800474, -16958678, 14743549, 13689671, 6724845, -29496224, -18004502, -32872070, 18194018, 4436701,
+16621523, 90194, 17854716, 7270306, 5978058, 783295, 15226196, -6800007, 8385387, -14986752,
+11295227, -13846438, -115964, -18300318, -13048648, 840740, -16335908, 7727183, 38970924, 9385040,
+-29192356, 15307800, 11734924, 20734492, 597537, 34431680, -29511794, 4589173, 13727252, -28418724,
+-6627672, 57563300, 32387274, -76017160, -32284732, 40545028, -11028939, -36032628, 14260365, -3628711,
+-27831388, 20498806, 34629248, -46843060, 9302362, 41726144, -28204514, -25269976, 34089692, 4632122,
+-28010702, 5045513, 22169010, -24442122, -3383897, 26925686, -3926674, -11914776, -19222664, 24637544,
+-6477348, 13762686, 3207267, 13977971, -9527311, 9066139, 24820616, 9841381, -18259516, 1544041,
+-13059922, -8806294, -18394808, -1621887, -4896800, -1262720, -12358768, 12693239, 10912975, -4279935,
+28369332, -7138773, -30123826, 36319856, -4287988, -6863895, 6705518, 12742094, 1720134, -3335042,
+30640296, 16865262, -21497386, 1852205, 8727910, -15584289, -12885976, 22179212, -11398843, -41981156,
+40494024, 5190468, -40929428, -1176284, 21581674, -15360414, -34417184, 19892678, 26538602, -42432128,
+6263673, 31998580, -18727668, -3255585, 35013112, -2565706, -14283987, 8231842, 14798310, -19153944,
+-5233955, 20548198, -4677757, -17899814, 15079630, 9008694, -10432476, 33817500, -72796472, -4968741,
+-13060459, -80502184, -14667850, -24700894, 7685844, 14063870, 23643794, -10467909, -31723166, -11716134,
+-45676440, 6263136, 16009491, 9582072, 6958921, -36368172, 22161494, 3729105, -44180180, 32247152,
+-47493212, -19149112, -17987324, 12985297, 33897492, 39797168, -3528853, -8759586, -76707040, 32981054,
+77098424, 28368796, 1487669, -42359652, -62595928, -25436944, -5561446, 32692754, -39325796, -23165442,
+-40396316, -12628278, 71970232, 78084120, -13906030, -35798016, -31295280, -16356846, -8570070, 39391828,
+-19005768, 11877195, 7833484, 26243324, -7537668, -17477296, -45886356, -19628000, 68978248, 29819422,
+45777372, -42215232, -23855322, -19492172, 46774880, 1078574, -77120432, -73900280, 41049148, 71474696,
+119288424, 21051782, -102062384, 17125108, -27262304, 34685084, 32915018, -124450976, -40134320, 24441586,
+65226596, 16067473, -63809792, -14101451, -6751152, 36954436, 31049930, 8503498, -51196548, -7856032,
+10740639, 22727894, 10869488, -13160317, 1779727, -28023588, -3954591, -405874, 26778584, -18537078,
+35845796, -23067732, 9954124, 21086678, -9059160, 17496086, 15058692, 28490128, 1087164, -13766981,
+-16768089, 2600603, 1016834, 4839355, 2607045, -927176, -2278480, -10285373, -11227581, -2157684,
+17609366, -4625680, 135291, -3760244, 5647882, 1342714, 9659381, -9139154, -12228846, -23537494,
+-12025372, -1400696, 12847858, -12597139, -1161252, -36853504, 31479426, -32895154, -6950868, 1021665,
+8443369, -6367826, 7588134, 12518219, -20935818, -18314814, -253940, 4582193, 13682155, -15464567,
+2295123, 11450383, -8908299, 7060390, -4559108, 35471600, -371515, -5610838, 20650202, 11009075,
+18364744, -9450002, 11774116, -3936875, -358093, 14800994, 10821170, 2268817, 4618164, 20038706,
+-18780818, -5946382, 2155537, 27117350, -308701, -6396280, 25569014, -6703370, -10929081, -11244224,
+21206402, -5235029, 9333501, 5405217, 3334505, -7634305, 3912178, 7988103, 3027415, 23578296,
+11938935, 6542309, -10189810, -1767916, 9200357, -17196512, 6240588, 6260452, 17658758, 39192,
+-1967095, 9727564, 2305324, -19921668, 22314502, 6593312, -5070746, 18246632, -12407087, -1739999,
+-9233643, -8360691, 18253074, 13094282, -1154809, 6463389, -10741176, 2347200, -14518063, -1569274,
+-13290239, 2811593, 8731132, 2972654, 1697049, -3074123, -1770063, 2384244, -7919920, 2157684,
+-3394098, 3623879, -5201743, -2025614, -4812511, -6386080, 3069291, -1248225, -361851, -2461553,
+8647917, 3158949, -10851235, -11541651, -7722351, 2232846, 3599183, 8143258, 4963909, -10646150,
+-1520418, -4108673, 9661529, -2571075, 10415296, 4147865, -8475581, -95026, 4639102, -5007395,
+6655589, -4053376, 7519414, -5425081, -1663763, 2269353, -4206921, 57456460, 4631586, -21241834,
+-17581448, 2838437, 12993350, -812286, 11859478, -4535486, -3181497, -15960635, -3510599, -11186779,
+17732846, -11127723, -913217, -7038915, -3316252, -4145180, 1932198, -11827803, 1797981, -5120138,
+-8320963, 2399276, -1335735, 625455, -2262374, 4109747, 1989644, -9907953, -6350109, -53687,
+-6702297, -5867462, 4876936, -1648194, -10095858, 617402, -5622112, 4243428, -14907295, 7385733,
+-6489696, -11359652, 3417720, -5240934, -5877663, 1465658, -116501, 636729, -2497524, 2431488,
+-4575214, 4966593, -3147137, 460635, 8280697, -6069863, 2763812, -1656784, -903554, 2185065,
+-6889128, 6163815, -7242389, 6152004, -1534377, -387084, -4648229, 5807333, -6962142, 368830,
+2419140, -9203041, 9059697, -5640903, 3825742, -4295504, 3652333, -3332895, -4061965, 6662568,
+-4277788, -932545, 6605660, -4387846, -102005, 453119, 1009854, -4844723, 335007, -524523,
+-2117419, -1431835, 1094143, -1591822, -2604361, -1372242, 2847027, -2751464, 2120103, -855235,
+-355409, -956167, -2017024, 1741072, -1381369, -1654636, 1933809, -2192044, 1516660, 619549,
+-1312649, 195958, -383863, 434329, -4072703, 3728569, -4188667, 593242, -672162, -2284386,
+489089, -1316408, 2746632, -7047505, -27831924, -44482976, 47165184, 164634688, 31381716, 49520972,
+-101457328, -140728368, -58997280, -73630768, 56807920, 132200168, 75782016, 51109572, 4956929, -72663864,
+-64581276, -64316600, -26499948, 36672580, 31037044, 33432026, 29799556, -886911, -4992900, -7531225,
+-10527502, -15168214, -2208687, 20304458, -1937567, -11630235, -4743255, -16850230, -9677098, -2850785,
+-4358318, 32511828, 29995514, 17922362, 18992346, 1075352, -23549306, -23776938, -43928388, -29080686,
+3883187, 3661997, 8807367, 25928180, 36674724, 22175990, 18408766, -764504, -20969640, -28922310,
+-25163140, -20928302, 2884071, 7567196, 13360570, 9390409, 6072547, 1416802, -7711614, 3047816,
+617402, 3242164, 18176838, -1648194, 7987566, 8383240, -13717589, -25666188, -26598196, -23826332,
+6236830, 19640348, 14091251, 21483426, 18787260, -6287296, 4645007, 11732777, -7635378, -7014219,
+-16572668, -21185464, -8349417, -4975183, -2307471, 9026411, 4100083, 4889284, 14212047, 13642427,
+13989245, 8070781, 3497714, -7027104, -8839580, -21785684, -24016920, -16933982, -12532715, 5419712,
+15528991, 19682224, 26285736, 18868866, 11944841, 196495, -8269960, -12884902, -27352500, -28896004,
+-10289131, 5180805, 13753022, 11052025, 9550397, 11061151, 7910256, -528281, -2126009, 1175210,
+233002, -4793721, -4367982, -14606647, -9654550, -404801, 5229660, 7198902, 5647882, -2178622,
+-299574, 5305359, 4131759, 314606, 2860985, 2558727, -1737851, -6886443, -6230387, -5964099,
+-1406602, -1578937, -137976, 1261110, 6087580, 6774237, 6088116, 2902861, 1948841, -2887292,
+-5279052, -6484327, -3827890, -2286533, -19864, 338229, 2238215, 1950989, 3643206, 2470143,
+1488206, -625992, -281857, -881005, -558883, -2234994, -2036351, -1742146, 1205812, 1414118,
+1750736, -423591, -638340, -1029718, 936840, 202400, 922344, 183073, 1057099, -472983,
+-454193, -1007707, 549219, -186294, 288837, -1067836, -392990, -907849, 355945, 93416,
+1283122, 228170, 585189, -88584, 916976, -12885, 129923, -1384053, -779000, -1236414,
+123480, -155156, 932545, 87510, 847719, 146029, 672699, -518617, 111669, -633508,
+279710, -474594, 361851, -360240, 394063, -543313, 209917, -392453, 561030, -222265,
+479426, -379031, 417686, -370978, 435939, -354335, 414464, -418222, 367220, -443455,
+350040, -446140, 369904, -405874, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
2206540,
-6285148, 561030, 4196183, -944356, -649077, -2254858, 4476430, 2872796, -2681670, -3471407,
-2238752, -867583, -5404680, -6200322, 1443646, 332323, -2133525, -2099702, -4221953, 2697240,
--4960687, 1282585, -518617, 1138166, 372588, 1077500, -2247342, -301185, 841277, 1437740,
--539018, 1755031, 1231582, -2165201, 1614908, -1301912, -4234838, 5987722, -1179505, 293132,
-1387811, -726923, 3257196, 4228396, -936303, 1600412, 3128347, 287226, -3390877, -2547989,
-807991, 2022393, -1052804, 1115618, 3846680, -3395172, -3113851, 3246995, 579821, -1257352,
--2115808, -68719, 701690, 2469069, -3951370, 1947768, 962073, -3033321, -3339874, 2842195,
--1833414, -4026532, -1765232, -358630, 6077916, 7081864, -644245, 1193464, -913754, 1107028,
--1198833, 1897302, 1105954, -1143535, -425739, -1215476, 570157, -1627793, 1522566, 1410360,
-282394, -1909650, 196495, -69256, 809064, -477278, 1273995, -655519, 200253, 106837,
-778463, -157840, 249108, 260382, 805306, -17180, -7763154, -3356517, -5355824, 3508988,
--2597918, -3639448, -2464238, -3263638, -648540, 1201517, 5872831, 1012002, -3138547, 4955319,
-192737, 5108327, -4912369, 7912404, 3672197, 8583492, -1541893, -2925947, -591632, -4728222,
--403190, -340376, -1713155, 1602023, 157303, -3755412, -911607, -17180, 1160178, 3721589,
-857920, -5613523, -4674535, -1776506, 3149285, 205622, 152471, -2847563, 4668630, -131533,
-339302, -2018635, 592706, -1221381, 2448668, -798864, 7784092, 61740, -1028645, 2946885,
--1970853, -3508452, -1454383, 2633889, 4695473, 775242, 2873870, 703838, 481036, -2478196,
--2421288, -3966939, -182536, -4112431, 1014686, 3340948, 3564823, 2505040, -1278290, -1825361,
-3199214, -2280628, -957241, 1997697, -1838246, -326418, -959925, 2068027, 3679176, 1898376,
-1073205, -936840, -422517, 661425, -376347, 2465848, 410706, -1208496, -723165, -556198,
--175557, 343597, 297963, 37581, -392453, 1142998, 717796, 54761, 433792, -893890,
--578210, -713501, -842350, -296353, -943282, -915902, -208843, 1173600, 5421323, 5880347,
-3093987, 18254, 4782446, -2571612, -4079682, 3986267, 4121558, 5254356, 7703561, 762357,
--4914517, 2887829, -4686346, -271120, 1564442, 1170916, 8582955, 729608, -6913287, -264141,
-1233193, 2962454, -499290, -2286533, -7609609, -1431835, 6459631, 2298881, 4249334, 5042829,
-4137127, 1221918, -717260, 4491462, -5649493, -102005, -3839701, 10385768, -554588, 360777,
-4596152, -3752728, -595927, 1685775, -572304, 6225018, -943282, 1931662, 5894306, -1071594,
-1853815, 562641, -277025, 15569, -765578, -1627793, 2553895, 3490735, -817118, 3475166,
-1250372, 6804302, 7702487, -335544, 2068027, 1346472, -3872450, 3886409, -938450, -3164854,
-1369558, 3829500, 1074816, -905701, 6830609, -894427, 1866163, 2120103, 1025423, -3387119,
--184147, -631897, 566936, -1752884, -359704, 281857, 742493, 805306, 1273458, -366683,
-632971, -1622961, -1132798, -2030446, 1624571, 606664, -292058, 714038, -267899, -1652489,
-1109712, 242666, 810675, -452582, -580894, 379568, 2050847, -2025614, 1176821, 8617852,
-8350490, -3259880, -4856535, -4156455, -2934537, 2204929, -9232032, -843424, 1220308, -4342749,
--8185671, 7949448, -1760937, -1932198, 1209033, 3695819, 3185792, -3971771, -1660005, -104153,
--497679, 1959579, 2720862, -1468342, 3359738, -2497524, 5182415, -562641, 153008, -2616709,
-2709051, 1089311, -858457, -2605972, 1209570, -1450088, -2401424, -1896228, 408022, 1796907,
--5018133, 496606, -9416179, -5338108, 3306051, -1337882, 1058710, 2161442, 6101538, -1912334,
--3162707, -143881, 136902, 2663954, 2434710, -2812667, -1326608, 6876780, 201863, 1110249,
-521302, 3099893, -5733245, 263604, 2816962, 5359583, 1050656, 2343979, 7982734, -1908039,
--817118, -4283693, -2684, 1393180, 2755222, 60666, -1795296, 2524904, -272730, 4532264,
--18254, -113280, 486942, -5586679, -2973728, -3282429, 3086471, -490163, -972273, -4295,
-353798, -177704, 1591285, -478352, -1002875, -1198833, -673236, -1716913, -1202591, 1350230,
-18790, -450435, -951872, 435939, 284542, 139050, -845035, 1476932, 559956, 935229,
--279173, -75699, -1082332, -1103270, 673773, -526134, 933082, 1314797, -51003, -5516349,
--8425115, 3569655, -2695092, 92879, -4296578, 3330747, -9736691, -8129300, -9176734, -3184718,
--1876364, -6530498, 3390340, 8790724, -6428493, 1304596, 10487773, -2467459, -2743947, -4844723,
-938450, -88584, 4701379, 1445793, 3406983, 2261300, -3287798, -6665789, -3047279, 3884798,
--2142652, -4100083, 1118302, 1609002, 1397475, 779000, 9148280, -4332012, 5026186, -2417530,
-2573222, -2694018, 7629473, -5664525, 3173981, -521302, -4373888, 4110821, -1559610, -1540820,
-4591320, 2328946, -284542, -2042794, 4183298, 1952063, -4096325, -5091147, 3547106, 5504538,
-3235721, 67109, -2319819, 220654, 3652870, -1592896, 4393752, -1072668, -8633421, 212064,
--3733400, 12377022, 4447976, -7144141, -3883724, -1461900, -3101503, 3143916, 3215857, 2292976,
--1420560, 2662343, 2301566, 705985, -418222, -3721589, 828929, 1190243, -938450, 774168,
-1378685, -556735, -47782, 736050, -125091, -1154273, -799938, 18254, 1063541, -1059783,
-1013075, 995896, -1259499, -1817308, -2092186, 537, 1420560, -670015, 1275068, -1017907,
-22549, 812286, -512175, -2043868, 427886, 3212099, -7188165, -8878234, 7659538, -1634235,
--7150584, 603980, -1799591, 7390565, 3732327, -1872069, 1433445, -356482, -1041530, -1304060,
-8646306, 1699733, 526670, -5838471, -2611340, -1348083, 3077344, 3795677, 11623255, 315680,
-451508, -326954, 858993, -5051956, 302795, 2128156, -6242198, -4431333, -4015795, -488553,
-8520141, -6839199, 1246614, 3885872, 1748052, -3181497, 3593814, -8542690, 7088307, -1486596,
-78920, 3837553, -4257387, -5049808, -7798587, 1700807, -2498597, 7493108, 2673080, 214748,
-1501628, 2301029, 5934034, -2558190, -1208496, 6143951, -1176284, -3457449, -47782, 6148246,
-6281390, 5684389, 3142842, -3737159, 3712999, 5144834, -5961415, 7763154, -4646618, -4394289,
-7094749, 761820, 10200547, -105764, -5595806, 2520609, -2446521, 6725382, 3282966, 1867774,
-536871, 2318746, -1097901, 4233764, 1553168, 1693291, 1357747, 2486249, -111669, -191663,
-2015950, -57445, 1504312, -742493, 2423972, 4790499, -2692945, -1263794, 929860, 610959,
-395137, 1226750, -151934, 394600, 1071594, 2352568, 260919, 4409858, 1138703, 521839,
--1886028, 508417, 1546725, -1969779, 522912, 870805, -26307, 569620, -39728, -15794742,
--10497437, 2861522, 5035313, 10889890, -6662031, 5867462, 1025960, 6175626, -370978, -2809446,
--3782256, 3830574, 11167989, 995896, -1044214, -10666551, -9022116, 101469, -6648610, -3832722,
-321586, 1391569, -6813966, -1980517, 1576253, 4003983, 2052994, -4329864, -75699, 5076115,
-4041564, 887985, -4204236, 799938, -2596845, 1254131, 1350767, 2343442, -3252901, 4032974,
-9715753, -964757, -792421, 1926293, -5515275, 2601140, 7811472, -7736310, -9220221, -4711579,
-694174, -11832098, 231391, 362388, 1591822, 137439, -236760, -5608154, -3096672, -3636227,
--561567, 8085276, 11846057, 355409, 721555, 5827197, -2497524, -980326, 2633352, 13413183,
-1630477, 4829691, 9345849, 1731409, -6169721, 2544231, 2748779, -2809446, 2830384, 2428804,
--693100, -2908230, 1308891, 861678, -696858, -4976794, 2130841, 4571993, 1644973, 3330747,
-1793686, 4017942, -935229, -1511292, 3634079, 3069291, -1019518, -210990, -1172526, 2639258,
-2804077, -2324114, 2784213, 757525, 284542, 705448, 1480153, 2128156, 209917, 1856500,
--1336809, -693637, -79994, -353798, 694174, -1267552, 117038, -397284, 476205, -1705102,
--1554241, 8089034, 5182952, -7596187, -259309, 16112570, 14360223, 2966212, 8689256, 10610717,
-2762201, -204011, 7072738, -3214783, 150861, -6401649, 5268315, -483184, 332323, 2291902,
-2840047, 8747775, -7342784, -6817724, 6800007, 1324997, 3145527, -5333813, 1027034, -1901060,
-3533684, -3758, 4930086, 4716411, -4785131, 3985193, 3446711, -5643587, 14409078, 2450279,
-2860985, -11180874, -3500398, -951872, 9362492, 8606041, -817654, -9606231, 6300717, -8360691,
--2516851, 7214472, -149787, -5946919, 7162932, 8868034, -2212982, 2950643, -3532074, -12573517,
-133144, 7964480, -3629784, -4340602, 5338645, -6062883, -9056475, 2205466, 6241125, 11203422,
-5965173, -8500814, 3594888, -9976135, -11625940, 10722923, 5131949, 3884798, -7200513, -7900593,
--1116692, 8067023, 2774012, 11551315, 5215164, 2867965, -12279311, 1931125, -3373697, 404801,
--2815888, 2503429, 842887, 3043521, 5282810, 2655364, 533650, 2232309, -1984275, -1085553,
--2022393, -100932, -1887638, -656593, 847182, 3818226, 756451, -1697586, -619549, 1167694,
-252866, -425739, -3889630, 138513, -1948305, 672162, -2739652, -3191698, 2155537, 2368675,
-3970161, -3899830, 139586, 1925219, 16725140, 10822244, -7333120, -1937567, -336081, 2988760,
-2306398, -1009854, -6622840, 1638530, -4561256, 7028714, 153545, 2736431, -2348810, -994285,
--6914361, -3601867, 14358613, 4810900, -8866960, 4204236, -8665097, -6031745, -13515188, 5881958,
-150861, 244276, 3109556, -339302, -6172405, 10167261, 5720360, -2207613, -10293426, 10254771,
--7093139, 2725157, -346819, 3375308, 1935420, 6522982, 7411503, -1728188, 4064650, 11900281,
-1436667, -3708168, -3489124, -2084670, 1755031, 7947837, -2271501, 3240016, 530965, -7249905,
-183610, -1773822, 3447785, -10913512, -281320, -18203682, -11143293, -10151692, -2673080, -10032507,
-6651294, -2499671, -8417062, -2226404, -1039382, -6724308, -3031710, -230318, 567473, -4031364,
--8845485, -8741869, 359167, -1893544, 2022930, 4912369, -898185, 2459943, 1104880, -34897,
--264141, -4760971, -326418, -93952, -3950296, -310848, 3479997, 6935836, -1327145, -3311957,
-2467459, -4289062, 3498251, -3580392, -1471026, 694174, -2745558, -3217468, -159451, -2007897,
-360240, -747324, -3383361, 1597728, -277025, 4046396, 2575907, -2850248, 2291902, -1591285,
-2118493, -1305670, 1388348, 1424855, 945430, 85899, 1459752, -1883880, -1174674, -2093797,
--4394289, 563178, 1367947, -436476, 749472, -3314641, -11494406, -14307073, -6784975, -9501541,
-24708410, -11928198, 5608691, -11260331, -3236258, 1256815, -1818919, -16809428, -339302, -7953206,
-614180, 19937776, -6343130, 8404714, 10954314, 4019553, 4464619, 12018929, 3575560, -4584878,
-3416647, 4755066, 5063767, 2210298, -2463701, 13979582, 551903, -1047972, -2309082, 3842385,
--1166084, -4770635, 4729833, -1720671, 3399467, -13401909, 585726, -2531883, 12214887, -4737886,
-3957812, 18351322, -1567663, 456877, -4436701, -7480223, -408559, -1164473, -7704635, 9785546,
--2066416, 7121056, 773631, 6730214, -3835943, -641024, 14636175, 7226283, -11322608, -5862094,
-3117610, 3591667, 1762010, 3193845, -3291556, 4214437, 5382131, 12217571, -15567646, 1018444,
--6645925, 3259880, -264141, 1865090, 5756867, 8420283, -5550709, 5973763, -4014721, -2653216,
--2236067, -1994476, 4713727, -10522670, -2071785, -4810900, 6096169, 5006322, 2109903, 2621541,
--3544422, 4152697, 1873680, 3015067, -407485, 2410551, -3143916, -1678259, -3944928, -240518,
--640487, -3456375, -56908, -273267, -952409, 47245, 4202089, 2676838, -2324114, -3701725,
-1976222, 1537061, 4820027, -3626026, 286152, -1245004, 2160906, 2559264, -1269163, -1939715,
--3917010, -8115878, -7351911, -7850127, 8508867, -16513076, -4915590, -10331007, 5126044, 17203492,
--9376987, 547071, 454730, -3320010, 6585259, -5483063, 2627446, -1673427, -7100118, 15350750,
-729608, -4951024, 185757, -2197413, -6808597, 5385352, -5225365, 5057861, -9729712, -4462471,
-6499360, 4844186, -16233366, -2863670, -13830332, 4155381, -2352032, -13217762, 16125992, -4476430,
--361851, -12224551, -13503914, 830539, -12181064, -1537061, -10531797, -8900783, 10536092, 1219234,
--13686450, 4524748, -12256763, 10929081, 3877282, -5223217, 360240, 3548180, 11371463, -8792335,
--12570296, 12708808, -8900246, -4991289, 6572911, 9605694, -17793512, -8673686, 10018011, 7544110,
-3844533, -882616, 1181116, -12691091, 4306242, 4291746, 6956237, -2199560, -13548474, -9728638,
-4696010, -11586211, -10256382, 4330401, -750546, 198105, 4167729, 9858024, -66035, -376347,
-9064528, 884763, -1572495, 1600412, -1332514, -1828582, 1883880, -2374580, -1786170, -4587562,
--4509179, -3124052, 720481, -2596845, -54761, 1893544, 1394254, -233539, -151934, 2021856,
--2413235, -3642669, 1003412, -102542, 3400004, -3358128, -1065689, -3810710, 4337917, 4700842,
-907312, -223875, -3000572, -1166621, -4177930, 354335, 549219, -2279017, 599148, 926639,
-884763, -1012002, 8381629, -12964359, -21272436, -17088064, 7670812, -20440286, -1042603, 15564961,
--1425929, 1154809, 11089069, -7355669, -6351720, 24713242, -9822590, 5811091, 9338870, -1705102,
--22418656, -1824287, 2309619, -5588290, -3149822, -5170067, 20822002, 235149, 187368, -993211,
--15083388, 2785823, -8705362, -4316979, 887448, 2546916, 4407174, 12152073, 2644089, -3092913,
-23800024, 2540473, -5945309, -21777632, -3229816, 16025597, -3518652, -9978820, -13466870, -11793443,
--10140418, -6324876, 16917340, 6621766, 929860, 9453223, 14127221, 7927973, -3132105, -2462627,
-14604499, -2869038, -4536559, 4277788, 11158325, 1617592, -11555073, 2667712, -1204738, -17187386,
--1342714, 13712220, -6824166, -7893076, -1967632, 18427020, -14693620, -2921115, -8216810, 8425115,
-4838818, 3911642, 5847598, -2399276, -3197603, 6248104, 4936528, 3455838, -1044751, 781684,
-3877282, -10805064, -2037962, 1428614, -5638755, 154619, 5876589, -588947, 1054415, -2316598,
--711354, 3249680, 4140349, 6278169, 3485366, -1043677, 2193118, -3579318, -4608500, 1315871,
--932008, -3713536, 4101694, 2205466, 3093987, 668941, 1480153, 3220152, 1744831, -927713,
--2336999, -604517, 1268089, 6979, 1285806, 268972, 1603097, 992137, 2768107, 354335,
--2732673, 5949604, 4836670, -4594005, -1590749, -2208150, -1572495, 2280091, -2792803, 1640141,
-17357574, 1746441, -15511274, -575526, 4643934, -564788, -7078643, 6723235, -5242008, 13795435,
--10634876, 9475235, 20720532, -5624797, -5542656, -4903779, -4335233, 18494666, -13743358, -15100031,
--11530913, 4177393, -6030134, -9732396, -4495757, 6623377, -9337259, 5117991, 1185948, 7231651,
-10748156, 1292785, -1416802, -2107218, 10588705, -2778307, 3712462, -13071196, -162672, -4684199,
-10315438, -13893145, 11318849, -4832375, -7191386, 11397769, 19779398, -11203422, 5585068, -2517925,
-3960497, -29841970, -23681912, -14385993, 1996086, -9150965, 3852586, 907312, -11141145, -8806294,
-882616, 23673322, 5515275, -14865419, -22204980, -11744051, -8254927, 14475114, -10176925, -14485314,
-3355980, 3084860, -13422847, -917512, -317828, -6691559, -1618666, -433792, -658204, 6437619,
-1503239, -7747048, -6905234, -3824132, -9910637, -5426155, 1519345, 10947872, 1745367, 1978369,
--3307662, -9149891, -1515050, 7326678, -467078, -4307852, 6704981, -10425496, -5195837, 1458141,
-1516660, -267362, 1023276, 630823, -3618510, -7333120, -2732136, 5420249, -3344169, -2676302,
--3030636, -6559489, -7286412, 2570538, -2711735, -1666447, -6881075, 1557999, 4265977, 5238250,
--386010, -3321084, -3914326, 3743064, 1171452, 3374234, 29998736, 19393924, -4978404, 1845762,
-19464254, -7742216, 812286, 8180839, 21060910, 12154757, -3492882, -4767414, -7078643, 1778117,
--3831111, 225486, 680215, 21925272, 36575404, -2225330, 25277494, 15781857, 3401077, 3855807,
--17759690, -17847736, -1870458, 4628364, -1130650, 4282083, -6534256, -13375602, -22293564, -2001455,
--14290430, -12284143, -7938710, -12710956, -8931384, -560493, 20996484, -722628, -15666967, -1388885,
-4656819, 15418933, -4704063, -3979287, -9292162, 6973417, -28214178, -25538412, -12110734, -12760348,
--13472776, -8309688, 9200357, -11505681, -15740518, -13406204, -23620172, 12161737, 6685117, -21161304,
-10994579, 21325050, 42012296, 23067732, -105764, 7623567, -23929948, -9870372, 13124346, 10946798,
--6014565, -16305306, 2277943, 3413425, 14972256, -1887638, -15053860, -2660195, 24415816, 15498389,
-17722108, 13975824, 24627880, 23050016, 7074348, 6278706, -5228049, -9661529, -2535105, -820876,
--8119099, -1611, -9408126, -7107634, 11274289, 4969814, -2856153, -9608379, -3511136, -1111860,
-15032, -10693395, 10877005, 186831, -8813273, 5433671, -5366562, -4596152, -1201517, 3411815,
-14946486, 7294465, 17849884, 144418, -3305514, 2090039, 6922951, 4571993, -2093797, 9405442,
-633508, -2929168, 1566589, 7805030, -3616363, -3175055, 3064459, -563178, 2764348, -30735322,
--3057480, 49740016, -3751117, 1918240, 12272869, -17998060, 10052908, 35306780, 32371168, -32686312,
--31549756, 107911, -34215320, -12798466, -155156, 4055523, 12341052, 18851686, 16429324, 29336774,
-6803765, 11626476, 11545946, -4818417, -2176475, 3303904, 3767223, 8753680, -15757161, 35243964,
-14985141, 16522739, -3136937, 35793184, 4348655, 21628918, 8837432, 6858526, -8468602, -5319854,
-18119930, 7128035, 8391829, -19031536, -10312216, -15867757, -9401147, -11502459, -108448, -23062364,
--25253870, -1330903, -9754944, -47398724, -35431868, -31897648, 9099425, 34802656, 44843216, -24641838,
-30909270, 48266304, 8181913, 4218195, -3088618, 33266670, 2507187, 30113626, 12869333, 14187351,
--19976966, -65906272, -52331492, -11652783, -1785096, 1568737, 2322504, 24588688, 23085450, 20265804,
--12514998, 1778117, -6531035, -33894808, 3447248, 2880313, 17131014, 2822331, 25192668, 22925998,
-5647345, 19965692, -8369818, 13576928, -11884175, -13212930, -4929549, 5486284, 21898964, -4756140,
--6155762, 3398393, -10821707, -5132486, 11091216, -2979097, 7667591, -13623636, 18796388, 5859409,
-200253, -1125818, 14459544, -3385508, 1017370, 2527588, -282394, 9990094, -7092602, -3459059,
--96100, 9608916, -14055280, 2044404, 5017059, -6694244, 1053341, 2728378, 1746978, -3176128,
-23669564, -4863514, -43943420, -3386582, 68867120, 13110925, -13361106, 18311056, -6111202, 12073690,
--5927055, -7070053, -23191750, -8140574, -2858838, -3377455, -11296301, 16825534, -15173046, -15465103,
--1459215, 2981244, 14150307, 6965900, 3632469, 6632503, -6280316, 569620, 21314312, -10627897,
--26176216, -4728759, 1917703, -8279087, 17686676, -8986145, -6420976, 15639050, 3929358, 11918534,
--27025544, -29609504, 9659381, -5355288, -10554882, -12426414, -16206522, -32648194, -233002, -2455648,
-10729365, -20742544, -44506060, 33549064, 8797167, 31562640, 3156801, -9590125, -9671729, 8549669,
--16941498, 26248692, 4833449, 31415538, 21311090, 46426448, -4844723, -43704512, -34622268, -19069118,
-25105694, 25976500, -19705846, 20718386, 39908300, -23250268, -3954591, 43672300, 6419903, 33647312,
--5236639, -16536698, -45283452, -17054778, 4764193, 29130616, 24717000, -14354854, 12256226, 12244415,
-23420994, 8611409, -23991688, -27582816, -11370926, 19772956, 40770512, -623844, -4052839, 21801254,
-10923712, 2357937, -3908957, -8592082, -11483132, -8560944, 6638409, 4707821, 12643310, -5055177,
--1900523, 1643899, 7483981, 10555956, -13420699, 629750, 14327474, -1273995, -4705674, -15947750,
-11449846, 367220, -7451232, -4628364, 16007343, -387621, -10980621, -5261335, 8462696, 643708,
--36536748, 37886980, 51390356, 8968429, 2338610, 11438572, -7833484, 22450330, 12558484, 23466090,
--4729833, -24713778, 55013164, 357019, -20640540, 2588792, 37217504, 17076254, 7330973, -23504208,
-2598455, -12553116, -9162776, 3752728, -17474074, 1551557, 4773320, 21211232, -29949344, -5028333,
--3532611, 17935784, -6719477, -10997264, -10477573, -48318, 11458436, -23240604, 1784022, 6251325,
--47659640, 6687801, -12851616, -33543158, 22218940, -24758876, -43531104, 57724896, -352724, 3457449,
--4446902, -15897285, 34862788, -24463596, -2209761, 5309117, -15766288, -1162862, 44038448, 22854594,
--38643968, -41789496, 41472204, -19595252, 24211804, 39855684, -35520992, -61179660, -42343544, 70968968,
--4089346, -55370180, 50883016, -36863168, -70312912, -955093, 60852172, -2467996, -72969880, -885837,
--24482924, 831076, 90236192, -13587666, -66230544, 9798431, 35434016, 923418, 41419592, 2581812,
-942745, -12884902, 1806571, 9634149, 33467458, -6779069, -8865349, 33203856, -4282620, 8074002,
-23255638, -3753802, -33530272, 22181896, 16064251, 25949656, -7843147, -377420, 9292162, -7180649,
--24636470, -10686416, 10372346, 1017370, -4728222, 32904818, -828929, -36074504, 8642548, 29953102,
-17371532, -12370043, 1791001, -14208289, -7912941, 36298380, 30371324, -7572028, -34454764, -10790568,
-14383845, 11898133, 9604621, -6208375, -23099408, -865973, -24871082, 37891276, -7846369, 11621108,
-23794656, 17420388, 17964774, 44548476, 18911278, -10712722, 6730751, 11111617, 14197551, -15897285,
-42395084, 40499932, 5330592, 14137422, -10142565, 150861, -43841952, 20200842, -23276038, 15704548,
--2044941, -15827491, 23347980, -9208410, -17883170, 9648644, -25143276, 16718697, 455803, -4531191,
-6628745, 10526965, 15209553, 16031502, 14818711, 45392436, -4669167, 5140002, 14055817, 30660160,
--3213173, 8316668, -99858, 24036248, 28048284, -8975945, 6601365, -1019518, -4801774, -51383916,
-3950833, 22255446, -12520367, -12380243, 11268920, -21254182, -32172526, 3117610, 18009334, 38408280,
--49146236, 19025632, -2651606, -1094680, 83752, 19444390, 40939628, 1018444, -30094298, 10233833,
-33207076, -17757006, -26481158, 2855080, 14508400, -13823352, 26284662, -4821638, 20182052, 2085744,
--20331838, 25210384, 19912542, 3731790, 15692200, -8564702, 9768903, -4499515, 5128191, 8486855,
-23964306, -4755066, -29228864, -3400004, 33697240, 2973191, -4365835, 30380452, 6200859, 233002,
-7157563, 21205864, 30906584, -19491636, 7578470, 4633196, -1529008, 15614354, -4478041, -22141094,
-7366943, 21922050, -9244380, 6040872, 7282117, -6551436, 8335995, -13902272, 10187662, 9636296,
--12530030, -26551488, 11501922, 15827491, -7144141, -9378598, 14322105, -610959, -8735427, -9632001,
-10185515, 5950141, 23521926, -44414256, -34582004, -641024, -53369264, -18355080, -19752554, 41069016,
--1199907, -15250892, 18901078, -9744207, 10467909, 2632815, -20392504, 24274082, -55030880, -5287642,
-3317325, -13827647, 10116259, 2377801, -10763725, -2041720, 1585380, 13771276, 799401, -16222091,
--53414896, -39026756, -29697014, -14851997, 33047626, -6811282, 1202591, -53562000, 3960497, -3840238,
--7286412, 1564979, -51726976, 27548994, -25139518, 12603582, -10321880, 35059820, -19270444, -34222300,
--16450798, -436476, 25467546, 46392628, 48831632, -60488172, -44716516, -30959734, 20734492, 49416284,
-59925532, -10624675, -15136002, -52979496, -19665044, 46845208, 28648506, -738734, -67109, -1298154,
--44707924, 29676614, -9048422, 28633474, 69687992, -78142632, 94392640, 26504244, -51270100, 14124000,
--102700720, -100463040, 73913704, 31380104, 7200513, 21873732, -38075420, -18445810, 68868728, -2833068,
-46279884, -4763119, -37398964, -12380243, 40865004, -13849122, -1014686, 13079786, -3406983, -24108726,
-13191455, -19618874, 8849780, 25898652, -27290222, 25501906, 8519605, -3684545, 9618042, -1813550,
--6237903, 4041027, -9553081, 4601521, -19424526, 16872242, 17725866, 3393024, 474594, -6197101,
-9024800, 3087545, 3531000, 8588861, 17034378, -21556440, -7330436, -20034412, -15219217, 1281511,
-631897, 16689706, -22185116, -17183090, -21386790, -13724568, -5844914, 31291522, -44745508, 37023156,
--22278532, 22789634, 11832098, 14405320, 8254391, -28432684, 31008054, -4572530, -11275900, -10168335,
--12492449, 9597104, -6632503, 13629005, 7927436, -1733556, -3411278, -23803246, 13706851, 5689758,
--6276021, 5348845, 12427488, -3548717, 6987375, -12085501, 14164265, -5304285, 1686848, 5847598,
-5937793, -6349036, 21917218, -839129, -20886962, -1357747, 9420474, 4735739, -16012712, 7727720,
-18328236, -3461744, -9120363, -8753143, -1360431, 5095442, -2385854, 21705690, -14743012, -5581847,
--5332202, -10895795, -1071594, -3321620, 7806103, 5759015, -9117679, -1347009, 8194798, -8766565,
--4658966, -2614025, 13269301, -8290898, 5607080, 9021579, -20939040, -8368207, 6513855, -21678848,
-32749662, 8805757, 10322954, 15190762, -9772124, -241592, -2992519, -14925548, 2856690, 4949413,
-11866995, -2363306, -5197448, 7343321, -7735236, -3102040, 7059316, 101469, -1912334, 6106907,
-1715839, -3867081, -317291, -4272419, 9460202, -9062381, 14428943, 669478, 3069828, -6054830,
--682900, -2189897, -4691715, -2375654, 3332895, 1776506, 4061965, -64961, -3561602, -2281165,
--11410117, 11416560, -9184788, 5181341, -2273112, 6673843, -3842922, -10511932, 588947, 5484673,
--8744017, 12977781, -10396505, 5687611, -4029216, 51434916, 6777459, -17522930, -13492640, -10230075,
--926102, -1729261, 1183800, -1476395, -1939715, -29199336, 682900, -5874979, -6678674, 3620121,
--11392401, -5267241, 5346161, -8052527, 2310693, 8959302, -12179454, 7621420, -4485020, -6564321,
--999654, -6565932, 3067144, -6100464, -3174518, -7174206, -1351304, -186294, -133144, -4341675,
--4395362, 1260573, 2353105, -5175973, 6924024, -8570070, -724239, -3467649, -1053878, -1675037,
--6710350, 9154186, 5692443, -9343164, 11295764, -1225139, 2429878, -5170604, 10838350, -10885058,
-837519, 849867, 2882997, -1864016, -2774012, 7991861, -5328981, 1122597, 452582, -1720134,
-2604898, -3588982, -463856, 4430259, -2243047, -2135673, 5130876, -2066953, -2207076, -4820564,
-2488934, 2246805, -10494753, 12514461, -7086159, 2771328, 886911, 95026, -4055523, 1662689,
-5197984, -3920768, -1930588, 2695629, -3855270, -328028, 3187940, -1387811, 1278290, 609349,
--2856153, 416612, 383863, 2494839, -4648765, 297427, -515396, -1925219, 1956895, -2382096,
-1129576, -1576790, -4070555, 2189897, -3528853, -2128156, 1315871, -2310693, 822486, 1955284,
-229781, -3185255, 3277597, -731218, -2018635, 2614561, -25311852, -40808096, 45587856, 153940752,
-15510738, 35470524, -83812528, -127807488, -32293322, -66685808, 51938504, 107368816, 56363928, 35893580,
--8152922, -41436772, -41041632, -30617212, -28708636, 10369125, 18151606, 10737955, 19548006, 2770254,
-1436667, 7938174, 2092723, 8989903, 6896107, -5080410, -19727322, -14324790, -17403208, -23146116,
--12449500, 13309567, 16827144, 31665720, 44355200, 16292422, 6305012, -14610942, -35401268, -33961916,
--23968064, -16374026, 3258270, 13308493, 18749142, 20313584, 16850230, 11624329, 1200980, -1168768,
--11339251, -7574175, -5077188, -5436355, -2315524, -6166500, -1953673, -7343857, -7470022, 2888366,
--719944, 9913321, 15884937, 9688372, 23689428, 21388400, -10335302, -20747376, -21086678, -31029528,
--8912594, -7337415, -1806571, 19376208, 16993574, -2848100, 14761266, 18743238, 6174016, 13148506,
--1291175, -14810658, -10987063, -25549686, -16323023, -5927055, -1723356, -1733556, 4519380, 12313134,
-19130322, 24458228, 20431696, 7028714, -11336566, -18204218, -17701170, -19444928, -8920110, -4823249,
--2145336, 4500052, 9558450, 7844758, 13418015, 7553774, 8776229, 8237748, -40802, -6533182,
--8851391, -10786810, -10867341, -9427453, -5194226, -5129265, 2955474, 5675263, 11014981, 16288663,
-15468862, 6079526, 993211, -8732205, -10902238, -12576201, -12862353, -3593277, -667867, -2312840,
-2954938, 10053982, 12829604, 6526740, 1337346, -562104, 106300, -2474975, -3004867, -4756677,
--3081639, -3589519, -2698850, -1492501, 6979, 150861, 2847563, 5741298, 5909338, 3084860,
-1373316, -1497870, -2365990, -3412889, -2589329, -2882460, -1435593, -1340030, -52076, 670552,
-2371896, 2166811, 2591476, 874026, 609349, -394063, -562641, -1258962, -447213, -590558,
-93416, -536871, -700617, -1874216, -93952, 217433, 1098438, 847182, 1804960, 550293,
-418222, -1115081, -427349, 282931, 1009317, -414464, -926639, -1939715, -679679, -47245,
-1105417, 333934, 458488, -354335, 437550, 180926, 964757, 359167, 608275, -461172,
--30602, -949188, -596464, -1083942, -207769, -437013, 479426, 171262, 1191317, 792958,
-948114, -140660, 126165, -692027, -127775, -828392, -420370, -726923, 266288, -111669,
-583042, 45634, 489089, -213675, 448824, -116501, 422517, -300111, 140123, -502511,
-136365, -368830, 285078, -274878, 301185, -293132, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+6285148, 561030, 4196183, -944356, -649077, -2254858, 4476430, 2872796, -2681670, -3471407,
+2238752, -867583, -5404680, -6200322, 1443646, 332323, -2133525, -2099702, -4221953, 2697240,
+-4960687, 1282585, -518617, 1138166, 372588, 1077500, -2247342, -301185, 841277, 1437740,
+-539018, 1755031, 1231582, -2165201, 1614908, -1301912, -4234838, 5987722, -1179505, 293132,
+1387811, -726923, 3257196, 4228396, -936303, 1600412, 3128347, 287226, -3390877, -2547989,
+807991, 2022393, -1052804, 1115618, 3846680, -3395172, -3113851, 3246995, 579821, -1257352,
+-2115808, -68719, 701690, 2469069, -3951370, 1947768, 962073, -3033321, -3339874, 2842195,
+-1833414, -4026532, -1765232, -358630, 6077916, 7081864, -644245, 1193464, -913754, 1107028,
+-1198833, 1897302, 1105954, -1143535, -425739, -1215476, 570157, -1627793, 1522566, 1410360,
+282394, -1909650, 196495, -69256, 809064, -477278, 1273995, -655519, 200253, 106837,
+778463, -157840, 249108, 260382, 805306, -17180, -7763154, -3356517, -5355824, 3508988,
+-2597918, -3639448, -2464238, -3263638, -648540, 1201517, 5872831, 1012002, -3138547, 4955319,
+192737, 5108327, -4912369, 7912404, 3672197, 8583492, -1541893, -2925947, -591632, -4728222,
+-403190, -340376, -1713155, 1602023, 157303, -3755412, -911607, -17180, 1160178, 3721589,
+857920, -5613523, -4674535, -1776506, 3149285, 205622, 152471, -2847563, 4668630, -131533,
+339302, -2018635, 592706, -1221381, 2448668, -798864, 7784092, 61740, -1028645, 2946885,
+-1970853, -3508452, -1454383, 2633889, 4695473, 775242, 2873870, 703838, 481036, -2478196,
+-2421288, -3966939, -182536, -4112431, 1014686, 3340948, 3564823, 2505040, -1278290, -1825361,
+3199214, -2280628, -957241, 1997697, -1838246, -326418, -959925, 2068027, 3679176, 1898376,
+1073205, -936840, -422517, 661425, -376347, 2465848, 410706, -1208496, -723165, -556198,
+-175557, 343597, 297963, 37581, -392453, 1142998, 717796, 54761, 433792, -893890,
+-578210, -713501, -842350, -296353, -943282, -915902, -208843, 1173600, 5421323, 5880347,
+3093987, 18254, 4782446, -2571612, -4079682, 3986267, 4121558, 5254356, 7703561, 762357,
+-4914517, 2887829, -4686346, -271120, 1564442, 1170916, 8582955, 729608, -6913287, -264141,
+1233193, 2962454, -499290, -2286533, -7609609, -1431835, 6459631, 2298881, 4249334, 5042829,
+4137127, 1221918, -717260, 4491462, -5649493, -102005, -3839701, 10385768, -554588, 360777,
+4596152, -3752728, -595927, 1685775, -572304, 6225018, -943282, 1931662, 5894306, -1071594,
+1853815, 562641, -277025, 15569, -765578, -1627793, 2553895, 3490735, -817118, 3475166,
+1250372, 6804302, 7702487, -335544, 2068027, 1346472, -3872450, 3886409, -938450, -3164854,
+1369558, 3829500, 1074816, -905701, 6830609, -894427, 1866163, 2120103, 1025423, -3387119,
+-184147, -631897, 566936, -1752884, -359704, 281857, 742493, 805306, 1273458, -366683,
+632971, -1622961, -1132798, -2030446, 1624571, 606664, -292058, 714038, -267899, -1652489,
+1109712, 242666, 810675, -452582, -580894, 379568, 2050847, -2025614, 1176821, 8617852,
+8350490, -3259880, -4856535, -4156455, -2934537, 2204929, -9232032, -843424, 1220308, -4342749,
+-8185671, 7949448, -1760937, -1932198, 1209033, 3695819, 3185792, -3971771, -1660005, -104153,
+-497679, 1959579, 2720862, -1468342, 3359738, -2497524, 5182415, -562641, 153008, -2616709,
+2709051, 1089311, -858457, -2605972, 1209570, -1450088, -2401424, -1896228, 408022, 1796907,
+-5018133, 496606, -9416179, -5338108, 3306051, -1337882, 1058710, 2161442, 6101538, -1912334,
+-3162707, -143881, 136902, 2663954, 2434710, -2812667, -1326608, 6876780, 201863, 1110249,
+521302, 3099893, -5733245, 263604, 2816962, 5359583, 1050656, 2343979, 7982734, -1908039,
+-817118, -4283693, -2684, 1393180, 2755222, 60666, -1795296, 2524904, -272730, 4532264,
+-18254, -113280, 486942, -5586679, -2973728, -3282429, 3086471, -490163, -972273, -4295,
+353798, -177704, 1591285, -478352, -1002875, -1198833, -673236, -1716913, -1202591, 1350230,
+18790, -450435, -951872, 435939, 284542, 139050, -845035, 1476932, 559956, 935229,
+-279173, -75699, -1082332, -1103270, 673773, -526134, 933082, 1314797, -51003, -5516349,
+-8425115, 3569655, -2695092, 92879, -4296578, 3330747, -9736691, -8129300, -9176734, -3184718,
+-1876364, -6530498, 3390340, 8790724, -6428493, 1304596, 10487773, -2467459, -2743947, -4844723,
+938450, -88584, 4701379, 1445793, 3406983, 2261300, -3287798, -6665789, -3047279, 3884798,
+-2142652, -4100083, 1118302, 1609002, 1397475, 779000, 9148280, -4332012, 5026186, -2417530,
+2573222, -2694018, 7629473, -5664525, 3173981, -521302, -4373888, 4110821, -1559610, -1540820,
+4591320, 2328946, -284542, -2042794, 4183298, 1952063, -4096325, -5091147, 3547106, 5504538,
+3235721, 67109, -2319819, 220654, 3652870, -1592896, 4393752, -1072668, -8633421, 212064,
+-3733400, 12377022, 4447976, -7144141, -3883724, -1461900, -3101503, 3143916, 3215857, 2292976,
+-1420560, 2662343, 2301566, 705985, -418222, -3721589, 828929, 1190243, -938450, 774168,
+1378685, -556735, -47782, 736050, -125091, -1154273, -799938, 18254, 1063541, -1059783,
+1013075, 995896, -1259499, -1817308, -2092186, 537, 1420560, -670015, 1275068, -1017907,
+22549, 812286, -512175, -2043868, 427886, 3212099, -7188165, -8878234, 7659538, -1634235,
+-7150584, 603980, -1799591, 7390565, 3732327, -1872069, 1433445, -356482, -1041530, -1304060,
+8646306, 1699733, 526670, -5838471, -2611340, -1348083, 3077344, 3795677, 11623255, 315680,
+451508, -326954, 858993, -5051956, 302795, 2128156, -6242198, -4431333, -4015795, -488553,
+8520141, -6839199, 1246614, 3885872, 1748052, -3181497, 3593814, -8542690, 7088307, -1486596,
+78920, 3837553, -4257387, -5049808, -7798587, 1700807, -2498597, 7493108, 2673080, 214748,
+1501628, 2301029, 5934034, -2558190, -1208496, 6143951, -1176284, -3457449, -47782, 6148246,
+6281390, 5684389, 3142842, -3737159, 3712999, 5144834, -5961415, 7763154, -4646618, -4394289,
+7094749, 761820, 10200547, -105764, -5595806, 2520609, -2446521, 6725382, 3282966, 1867774,
+536871, 2318746, -1097901, 4233764, 1553168, 1693291, 1357747, 2486249, -111669, -191663,
+2015950, -57445, 1504312, -742493, 2423972, 4790499, -2692945, -1263794, 929860, 610959,
+395137, 1226750, -151934, 394600, 1071594, 2352568, 260919, 4409858, 1138703, 521839,
+-1886028, 508417, 1546725, -1969779, 522912, 870805, -26307, 569620, -39728, -15794742,
+-10497437, 2861522, 5035313, 10889890, -6662031, 5867462, 1025960, 6175626, -370978, -2809446,
+-3782256, 3830574, 11167989, 995896, -1044214, -10666551, -9022116, 101469, -6648610, -3832722,
+321586, 1391569, -6813966, -1980517, 1576253, 4003983, 2052994, -4329864, -75699, 5076115,
+4041564, 887985, -4204236, 799938, -2596845, 1254131, 1350767, 2343442, -3252901, 4032974,
+9715753, -964757, -792421, 1926293, -5515275, 2601140, 7811472, -7736310, -9220221, -4711579,
+694174, -11832098, 231391, 362388, 1591822, 137439, -236760, -5608154, -3096672, -3636227,
+-561567, 8085276, 11846057, 355409, 721555, 5827197, -2497524, -980326, 2633352, 13413183,
+1630477, 4829691, 9345849, 1731409, -6169721, 2544231, 2748779, -2809446, 2830384, 2428804,
+-693100, -2908230, 1308891, 861678, -696858, -4976794, 2130841, 4571993, 1644973, 3330747,
+1793686, 4017942, -935229, -1511292, 3634079, 3069291, -1019518, -210990, -1172526, 2639258,
+2804077, -2324114, 2784213, 757525, 284542, 705448, 1480153, 2128156, 209917, 1856500,
+-1336809, -693637, -79994, -353798, 694174, -1267552, 117038, -397284, 476205, -1705102,
+-1554241, 8089034, 5182952, -7596187, -259309, 16112570, 14360223, 2966212, 8689256, 10610717,
+2762201, -204011, 7072738, -3214783, 150861, -6401649, 5268315, -483184, 332323, 2291902,
+2840047, 8747775, -7342784, -6817724, 6800007, 1324997, 3145527, -5333813, 1027034, -1901060,
+3533684, -3758, 4930086, 4716411, -4785131, 3985193, 3446711, -5643587, 14409078, 2450279,
+2860985, -11180874, -3500398, -951872, 9362492, 8606041, -817654, -9606231, 6300717, -8360691,
+-2516851, 7214472, -149787, -5946919, 7162932, 8868034, -2212982, 2950643, -3532074, -12573517,
+133144, 7964480, -3629784, -4340602, 5338645, -6062883, -9056475, 2205466, 6241125, 11203422,
+5965173, -8500814, 3594888, -9976135, -11625940, 10722923, 5131949, 3884798, -7200513, -7900593,
+-1116692, 8067023, 2774012, 11551315, 5215164, 2867965, -12279311, 1931125, -3373697, 404801,
+-2815888, 2503429, 842887, 3043521, 5282810, 2655364, 533650, 2232309, -1984275, -1085553,
+-2022393, -100932, -1887638, -656593, 847182, 3818226, 756451, -1697586, -619549, 1167694,
+252866, -425739, -3889630, 138513, -1948305, 672162, -2739652, -3191698, 2155537, 2368675,
+3970161, -3899830, 139586, 1925219, 16725140, 10822244, -7333120, -1937567, -336081, 2988760,
+2306398, -1009854, -6622840, 1638530, -4561256, 7028714, 153545, 2736431, -2348810, -994285,
+-6914361, -3601867, 14358613, 4810900, -8866960, 4204236, -8665097, -6031745, -13515188, 5881958,
+150861, 244276, 3109556, -339302, -6172405, 10167261, 5720360, -2207613, -10293426, 10254771,
+-7093139, 2725157, -346819, 3375308, 1935420, 6522982, 7411503, -1728188, 4064650, 11900281,
+1436667, -3708168, -3489124, -2084670, 1755031, 7947837, -2271501, 3240016, 530965, -7249905,
+183610, -1773822, 3447785, -10913512, -281320, -18203682, -11143293, -10151692, -2673080, -10032507,
+6651294, -2499671, -8417062, -2226404, -1039382, -6724308, -3031710, -230318, 567473, -4031364,
+-8845485, -8741869, 359167, -1893544, 2022930, 4912369, -898185, 2459943, 1104880, -34897,
+-264141, -4760971, -326418, -93952, -3950296, -310848, 3479997, 6935836, -1327145, -3311957,
+2467459, -4289062, 3498251, -3580392, -1471026, 694174, -2745558, -3217468, -159451, -2007897,
+360240, -747324, -3383361, 1597728, -277025, 4046396, 2575907, -2850248, 2291902, -1591285,
+2118493, -1305670, 1388348, 1424855, 945430, 85899, 1459752, -1883880, -1174674, -2093797,
+-4394289, 563178, 1367947, -436476, 749472, -3314641, -11494406, -14307073, -6784975, -9501541,
+24708410, -11928198, 5608691, -11260331, -3236258, 1256815, -1818919, -16809428, -339302, -7953206,
+614180, 19937776, -6343130, 8404714, 10954314, 4019553, 4464619, 12018929, 3575560, -4584878,
+3416647, 4755066, 5063767, 2210298, -2463701, 13979582, 551903, -1047972, -2309082, 3842385,
+-1166084, -4770635, 4729833, -1720671, 3399467, -13401909, 585726, -2531883, 12214887, -4737886,
+3957812, 18351322, -1567663, 456877, -4436701, -7480223, -408559, -1164473, -7704635, 9785546,
+-2066416, 7121056, 773631, 6730214, -3835943, -641024, 14636175, 7226283, -11322608, -5862094,
+3117610, 3591667, 1762010, 3193845, -3291556, 4214437, 5382131, 12217571, -15567646, 1018444,
+-6645925, 3259880, -264141, 1865090, 5756867, 8420283, -5550709, 5973763, -4014721, -2653216,
+-2236067, -1994476, 4713727, -10522670, -2071785, -4810900, 6096169, 5006322, 2109903, 2621541,
+-3544422, 4152697, 1873680, 3015067, -407485, 2410551, -3143916, -1678259, -3944928, -240518,
+-640487, -3456375, -56908, -273267, -952409, 47245, 4202089, 2676838, -2324114, -3701725,
+1976222, 1537061, 4820027, -3626026, 286152, -1245004, 2160906, 2559264, -1269163, -1939715,
+-3917010, -8115878, -7351911, -7850127, 8508867, -16513076, -4915590, -10331007, 5126044, 17203492,
+-9376987, 547071, 454730, -3320010, 6585259, -5483063, 2627446, -1673427, -7100118, 15350750,
+729608, -4951024, 185757, -2197413, -6808597, 5385352, -5225365, 5057861, -9729712, -4462471,
+6499360, 4844186, -16233366, -2863670, -13830332, 4155381, -2352032, -13217762, 16125992, -4476430,
+-361851, -12224551, -13503914, 830539, -12181064, -1537061, -10531797, -8900783, 10536092, 1219234,
+-13686450, 4524748, -12256763, 10929081, 3877282, -5223217, 360240, 3548180, 11371463, -8792335,
+-12570296, 12708808, -8900246, -4991289, 6572911, 9605694, -17793512, -8673686, 10018011, 7544110,
+3844533, -882616, 1181116, -12691091, 4306242, 4291746, 6956237, -2199560, -13548474, -9728638,
+4696010, -11586211, -10256382, 4330401, -750546, 198105, 4167729, 9858024, -66035, -376347,
+9064528, 884763, -1572495, 1600412, -1332514, -1828582, 1883880, -2374580, -1786170, -4587562,
+-4509179, -3124052, 720481, -2596845, -54761, 1893544, 1394254, -233539, -151934, 2021856,
+-2413235, -3642669, 1003412, -102542, 3400004, -3358128, -1065689, -3810710, 4337917, 4700842,
+907312, -223875, -3000572, -1166621, -4177930, 354335, 549219, -2279017, 599148, 926639,
+884763, -1012002, 8381629, -12964359, -21272436, -17088064, 7670812, -20440286, -1042603, 15564961,
+-1425929, 1154809, 11089069, -7355669, -6351720, 24713242, -9822590, 5811091, 9338870, -1705102,
+-22418656, -1824287, 2309619, -5588290, -3149822, -5170067, 20822002, 235149, 187368, -993211,
+-15083388, 2785823, -8705362, -4316979, 887448, 2546916, 4407174, 12152073, 2644089, -3092913,
+23800024, 2540473, -5945309, -21777632, -3229816, 16025597, -3518652, -9978820, -13466870, -11793443,
+-10140418, -6324876, 16917340, 6621766, 929860, 9453223, 14127221, 7927973, -3132105, -2462627,
+14604499, -2869038, -4536559, 4277788, 11158325, 1617592, -11555073, 2667712, -1204738, -17187386,
+-1342714, 13712220, -6824166, -7893076, -1967632, 18427020, -14693620, -2921115, -8216810, 8425115,
+4838818, 3911642, 5847598, -2399276, -3197603, 6248104, 4936528, 3455838, -1044751, 781684,
+3877282, -10805064, -2037962, 1428614, -5638755, 154619, 5876589, -588947, 1054415, -2316598,
+-711354, 3249680, 4140349, 6278169, 3485366, -1043677, 2193118, -3579318, -4608500, 1315871,
+-932008, -3713536, 4101694, 2205466, 3093987, 668941, 1480153, 3220152, 1744831, -927713,
+-2336999, -604517, 1268089, 6979, 1285806, 268972, 1603097, 992137, 2768107, 354335,
+-2732673, 5949604, 4836670, -4594005, -1590749, -2208150, -1572495, 2280091, -2792803, 1640141,
+17357574, 1746441, -15511274, -575526, 4643934, -564788, -7078643, 6723235, -5242008, 13795435,
+-10634876, 9475235, 20720532, -5624797, -5542656, -4903779, -4335233, 18494666, -13743358, -15100031,
+-11530913, 4177393, -6030134, -9732396, -4495757, 6623377, -9337259, 5117991, 1185948, 7231651,
+10748156, 1292785, -1416802, -2107218, 10588705, -2778307, 3712462, -13071196, -162672, -4684199,
+10315438, -13893145, 11318849, -4832375, -7191386, 11397769, 19779398, -11203422, 5585068, -2517925,
+3960497, -29841970, -23681912, -14385993, 1996086, -9150965, 3852586, 907312, -11141145, -8806294,
+882616, 23673322, 5515275, -14865419, -22204980, -11744051, -8254927, 14475114, -10176925, -14485314,
+3355980, 3084860, -13422847, -917512, -317828, -6691559, -1618666, -433792, -658204, 6437619,
+1503239, -7747048, -6905234, -3824132, -9910637, -5426155, 1519345, 10947872, 1745367, 1978369,
+-3307662, -9149891, -1515050, 7326678, -467078, -4307852, 6704981, -10425496, -5195837, 1458141,
+1516660, -267362, 1023276, 630823, -3618510, -7333120, -2732136, 5420249, -3344169, -2676302,
+-3030636, -6559489, -7286412, 2570538, -2711735, -1666447, -6881075, 1557999, 4265977, 5238250,
+-386010, -3321084, -3914326, 3743064, 1171452, 3374234, 29998736, 19393924, -4978404, 1845762,
+19464254, -7742216, 812286, 8180839, 21060910, 12154757, -3492882, -4767414, -7078643, 1778117,
+-3831111, 225486, 680215, 21925272, 36575404, -2225330, 25277494, 15781857, 3401077, 3855807,
+-17759690, -17847736, -1870458, 4628364, -1130650, 4282083, -6534256, -13375602, -22293564, -2001455,
+-14290430, -12284143, -7938710, -12710956, -8931384, -560493, 20996484, -722628, -15666967, -1388885,
+4656819, 15418933, -4704063, -3979287, -9292162, 6973417, -28214178, -25538412, -12110734, -12760348,
+-13472776, -8309688, 9200357, -11505681, -15740518, -13406204, -23620172, 12161737, 6685117, -21161304,
+10994579, 21325050, 42012296, 23067732, -105764, 7623567, -23929948, -9870372, 13124346, 10946798,
+-6014565, -16305306, 2277943, 3413425, 14972256, -1887638, -15053860, -2660195, 24415816, 15498389,
+17722108, 13975824, 24627880, 23050016, 7074348, 6278706, -5228049, -9661529, -2535105, -820876,
+-8119099, -1611, -9408126, -7107634, 11274289, 4969814, -2856153, -9608379, -3511136, -1111860,
+15032, -10693395, 10877005, 186831, -8813273, 5433671, -5366562, -4596152, -1201517, 3411815,
+14946486, 7294465, 17849884, 144418, -3305514, 2090039, 6922951, 4571993, -2093797, 9405442,
+633508, -2929168, 1566589, 7805030, -3616363, -3175055, 3064459, -563178, 2764348, -30735322,
+-3057480, 49740016, -3751117, 1918240, 12272869, -17998060, 10052908, 35306780, 32371168, -32686312,
+-31549756, 107911, -34215320, -12798466, -155156, 4055523, 12341052, 18851686, 16429324, 29336774,
+6803765, 11626476, 11545946, -4818417, -2176475, 3303904, 3767223, 8753680, -15757161, 35243964,
+14985141, 16522739, -3136937, 35793184, 4348655, 21628918, 8837432, 6858526, -8468602, -5319854,
+18119930, 7128035, 8391829, -19031536, -10312216, -15867757, -9401147, -11502459, -108448, -23062364,
+-25253870, -1330903, -9754944, -47398724, -35431868, -31897648, 9099425, 34802656, 44843216, -24641838,
+30909270, 48266304, 8181913, 4218195, -3088618, 33266670, 2507187, 30113626, 12869333, 14187351,
+-19976966, -65906272, -52331492, -11652783, -1785096, 1568737, 2322504, 24588688, 23085450, 20265804,
+-12514998, 1778117, -6531035, -33894808, 3447248, 2880313, 17131014, 2822331, 25192668, 22925998,
+5647345, 19965692, -8369818, 13576928, -11884175, -13212930, -4929549, 5486284, 21898964, -4756140,
+-6155762, 3398393, -10821707, -5132486, 11091216, -2979097, 7667591, -13623636, 18796388, 5859409,
+200253, -1125818, 14459544, -3385508, 1017370, 2527588, -282394, 9990094, -7092602, -3459059,
+-96100, 9608916, -14055280, 2044404, 5017059, -6694244, 1053341, 2728378, 1746978, -3176128,
+23669564, -4863514, -43943420, -3386582, 68867120, 13110925, -13361106, 18311056, -6111202, 12073690,
+-5927055, -7070053, -23191750, -8140574, -2858838, -3377455, -11296301, 16825534, -15173046, -15465103,
+-1459215, 2981244, 14150307, 6965900, 3632469, 6632503, -6280316, 569620, 21314312, -10627897,
+-26176216, -4728759, 1917703, -8279087, 17686676, -8986145, -6420976, 15639050, 3929358, 11918534,
+-27025544, -29609504, 9659381, -5355288, -10554882, -12426414, -16206522, -32648194, -233002, -2455648,
+10729365, -20742544, -44506060, 33549064, 8797167, 31562640, 3156801, -9590125, -9671729, 8549669,
+-16941498, 26248692, 4833449, 31415538, 21311090, 46426448, -4844723, -43704512, -34622268, -19069118,
+25105694, 25976500, -19705846, 20718386, 39908300, -23250268, -3954591, 43672300, 6419903, 33647312,
+-5236639, -16536698, -45283452, -17054778, 4764193, 29130616, 24717000, -14354854, 12256226, 12244415,
+23420994, 8611409, -23991688, -27582816, -11370926, 19772956, 40770512, -623844, -4052839, 21801254,
+10923712, 2357937, -3908957, -8592082, -11483132, -8560944, 6638409, 4707821, 12643310, -5055177,
+-1900523, 1643899, 7483981, 10555956, -13420699, 629750, 14327474, -1273995, -4705674, -15947750,
+11449846, 367220, -7451232, -4628364, 16007343, -387621, -10980621, -5261335, 8462696, 643708,
+-36536748, 37886980, 51390356, 8968429, 2338610, 11438572, -7833484, 22450330, 12558484, 23466090,
+-4729833, -24713778, 55013164, 357019, -20640540, 2588792, 37217504, 17076254, 7330973, -23504208,
+2598455, -12553116, -9162776, 3752728, -17474074, 1551557, 4773320, 21211232, -29949344, -5028333,
+-3532611, 17935784, -6719477, -10997264, -10477573, -48318, 11458436, -23240604, 1784022, 6251325,
+-47659640, 6687801, -12851616, -33543158, 22218940, -24758876, -43531104, 57724896, -352724, 3457449,
+-4446902, -15897285, 34862788, -24463596, -2209761, 5309117, -15766288, -1162862, 44038448, 22854594,
+-38643968, -41789496, 41472204, -19595252, 24211804, 39855684, -35520992, -61179660, -42343544, 70968968,
+-4089346, -55370180, 50883016, -36863168, -70312912, -955093, 60852172, -2467996, -72969880, -885837,
+-24482924, 831076, 90236192, -13587666, -66230544, 9798431, 35434016, 923418, 41419592, 2581812,
+942745, -12884902, 1806571, 9634149, 33467458, -6779069, -8865349, 33203856, -4282620, 8074002,
+23255638, -3753802, -33530272, 22181896, 16064251, 25949656, -7843147, -377420, 9292162, -7180649,
+-24636470, -10686416, 10372346, 1017370, -4728222, 32904818, -828929, -36074504, 8642548, 29953102,
+17371532, -12370043, 1791001, -14208289, -7912941, 36298380, 30371324, -7572028, -34454764, -10790568,
+14383845, 11898133, 9604621, -6208375, -23099408, -865973, -24871082, 37891276, -7846369, 11621108,
+23794656, 17420388, 17964774, 44548476, 18911278, -10712722, 6730751, 11111617, 14197551, -15897285,
+42395084, 40499932, 5330592, 14137422, -10142565, 150861, -43841952, 20200842, -23276038, 15704548,
+-2044941, -15827491, 23347980, -9208410, -17883170, 9648644, -25143276, 16718697, 455803, -4531191,
+6628745, 10526965, 15209553, 16031502, 14818711, 45392436, -4669167, 5140002, 14055817, 30660160,
+-3213173, 8316668, -99858, 24036248, 28048284, -8975945, 6601365, -1019518, -4801774, -51383916,
+3950833, 22255446, -12520367, -12380243, 11268920, -21254182, -32172526, 3117610, 18009334, 38408280,
+-49146236, 19025632, -2651606, -1094680, 83752, 19444390, 40939628, 1018444, -30094298, 10233833,
+33207076, -17757006, -26481158, 2855080, 14508400, -13823352, 26284662, -4821638, 20182052, 2085744,
+-20331838, 25210384, 19912542, 3731790, 15692200, -8564702, 9768903, -4499515, 5128191, 8486855,
+23964306, -4755066, -29228864, -3400004, 33697240, 2973191, -4365835, 30380452, 6200859, 233002,
+7157563, 21205864, 30906584, -19491636, 7578470, 4633196, -1529008, 15614354, -4478041, -22141094,
+7366943, 21922050, -9244380, 6040872, 7282117, -6551436, 8335995, -13902272, 10187662, 9636296,
+-12530030, -26551488, 11501922, 15827491, -7144141, -9378598, 14322105, -610959, -8735427, -9632001,
+10185515, 5950141, 23521926, -44414256, -34582004, -641024, -53369264, -18355080, -19752554, 41069016,
+-1199907, -15250892, 18901078, -9744207, 10467909, 2632815, -20392504, 24274082, -55030880, -5287642,
+3317325, -13827647, 10116259, 2377801, -10763725, -2041720, 1585380, 13771276, 799401, -16222091,
+-53414896, -39026756, -29697014, -14851997, 33047626, -6811282, 1202591, -53562000, 3960497, -3840238,
+-7286412, 1564979, -51726976, 27548994, -25139518, 12603582, -10321880, 35059820, -19270444, -34222300,
+-16450798, -436476, 25467546, 46392628, 48831632, -60488172, -44716516, -30959734, 20734492, 49416284,
+59925532, -10624675, -15136002, -52979496, -19665044, 46845208, 28648506, -738734, -67109, -1298154,
+-44707924, 29676614, -9048422, 28633474, 69687992, -78142632, 94392640, 26504244, -51270100, 14124000,
+-102700720, -100463040, 73913704, 31380104, 7200513, 21873732, -38075420, -18445810, 68868728, -2833068,
+46279884, -4763119, -37398964, -12380243, 40865004, -13849122, -1014686, 13079786, -3406983, -24108726,
+13191455, -19618874, 8849780, 25898652, -27290222, 25501906, 8519605, -3684545, 9618042, -1813550,
+-6237903, 4041027, -9553081, 4601521, -19424526, 16872242, 17725866, 3393024, 474594, -6197101,
+9024800, 3087545, 3531000, 8588861, 17034378, -21556440, -7330436, -20034412, -15219217, 1281511,
+631897, 16689706, -22185116, -17183090, -21386790, -13724568, -5844914, 31291522, -44745508, 37023156,
+-22278532, 22789634, 11832098, 14405320, 8254391, -28432684, 31008054, -4572530, -11275900, -10168335,
+-12492449, 9597104, -6632503, 13629005, 7927436, -1733556, -3411278, -23803246, 13706851, 5689758,
+-6276021, 5348845, 12427488, -3548717, 6987375, -12085501, 14164265, -5304285, 1686848, 5847598,
+5937793, -6349036, 21917218, -839129, -20886962, -1357747, 9420474, 4735739, -16012712, 7727720,
+18328236, -3461744, -9120363, -8753143, -1360431, 5095442, -2385854, 21705690, -14743012, -5581847,
+-5332202, -10895795, -1071594, -3321620, 7806103, 5759015, -9117679, -1347009, 8194798, -8766565,
+-4658966, -2614025, 13269301, -8290898, 5607080, 9021579, -20939040, -8368207, 6513855, -21678848,
+32749662, 8805757, 10322954, 15190762, -9772124, -241592, -2992519, -14925548, 2856690, 4949413,
+11866995, -2363306, -5197448, 7343321, -7735236, -3102040, 7059316, 101469, -1912334, 6106907,
+1715839, -3867081, -317291, -4272419, 9460202, -9062381, 14428943, 669478, 3069828, -6054830,
+-682900, -2189897, -4691715, -2375654, 3332895, 1776506, 4061965, -64961, -3561602, -2281165,
+-11410117, 11416560, -9184788, 5181341, -2273112, 6673843, -3842922, -10511932, 588947, 5484673,
+-8744017, 12977781, -10396505, 5687611, -4029216, 51434916, 6777459, -17522930, -13492640, -10230075,
+-926102, -1729261, 1183800, -1476395, -1939715, -29199336, 682900, -5874979, -6678674, 3620121,
+-11392401, -5267241, 5346161, -8052527, 2310693, 8959302, -12179454, 7621420, -4485020, -6564321,
+-999654, -6565932, 3067144, -6100464, -3174518, -7174206, -1351304, -186294, -133144, -4341675,
+-4395362, 1260573, 2353105, -5175973, 6924024, -8570070, -724239, -3467649, -1053878, -1675037,
+-6710350, 9154186, 5692443, -9343164, 11295764, -1225139, 2429878, -5170604, 10838350, -10885058,
+837519, 849867, 2882997, -1864016, -2774012, 7991861, -5328981, 1122597, 452582, -1720134,
+2604898, -3588982, -463856, 4430259, -2243047, -2135673, 5130876, -2066953, -2207076, -4820564,
+2488934, 2246805, -10494753, 12514461, -7086159, 2771328, 886911, 95026, -4055523, 1662689,
+5197984, -3920768, -1930588, 2695629, -3855270, -328028, 3187940, -1387811, 1278290, 609349,
+-2856153, 416612, 383863, 2494839, -4648765, 297427, -515396, -1925219, 1956895, -2382096,
+1129576, -1576790, -4070555, 2189897, -3528853, -2128156, 1315871, -2310693, 822486, 1955284,
+229781, -3185255, 3277597, -731218, -2018635, 2614561, -25311852, -40808096, 45587856, 153940752,
+15510738, 35470524, -83812528, -127807488, -32293322, -66685808, 51938504, 107368816, 56363928, 35893580,
+-8152922, -41436772, -41041632, -30617212, -28708636, 10369125, 18151606, 10737955, 19548006, 2770254,
+1436667, 7938174, 2092723, 8989903, 6896107, -5080410, -19727322, -14324790, -17403208, -23146116,
+-12449500, 13309567, 16827144, 31665720, 44355200, 16292422, 6305012, -14610942, -35401268, -33961916,
+-23968064, -16374026, 3258270, 13308493, 18749142, 20313584, 16850230, 11624329, 1200980, -1168768,
+-11339251, -7574175, -5077188, -5436355, -2315524, -6166500, -1953673, -7343857, -7470022, 2888366,
+-719944, 9913321, 15884937, 9688372, 23689428, 21388400, -10335302, -20747376, -21086678, -31029528,
+-8912594, -7337415, -1806571, 19376208, 16993574, -2848100, 14761266, 18743238, 6174016, 13148506,
+-1291175, -14810658, -10987063, -25549686, -16323023, -5927055, -1723356, -1733556, 4519380, 12313134,
+19130322, 24458228, 20431696, 7028714, -11336566, -18204218, -17701170, -19444928, -8920110, -4823249,
+-2145336, 4500052, 9558450, 7844758, 13418015, 7553774, 8776229, 8237748, -40802, -6533182,
+-8851391, -10786810, -10867341, -9427453, -5194226, -5129265, 2955474, 5675263, 11014981, 16288663,
+15468862, 6079526, 993211, -8732205, -10902238, -12576201, -12862353, -3593277, -667867, -2312840,
+2954938, 10053982, 12829604, 6526740, 1337346, -562104, 106300, -2474975, -3004867, -4756677,
+-3081639, -3589519, -2698850, -1492501, 6979, 150861, 2847563, 5741298, 5909338, 3084860,
+1373316, -1497870, -2365990, -3412889, -2589329, -2882460, -1435593, -1340030, -52076, 670552,
+2371896, 2166811, 2591476, 874026, 609349, -394063, -562641, -1258962, -447213, -590558,
+93416, -536871, -700617, -1874216, -93952, 217433, 1098438, 847182, 1804960, 550293,
+418222, -1115081, -427349, 282931, 1009317, -414464, -926639, -1939715, -679679, -47245,
+1105417, 333934, 458488, -354335, 437550, 180926, 964757, 359167, 608275, -461172,
+-30602, -949188, -596464, -1083942, -207769, -437013, 479426, 171262, 1191317, 792958,
+948114, -140660, 126165, -692027, -127775, -828392, -420370, -726923, 266288, -111669,
+583042, 45634, 489089, -213675, 448824, -116501, 422517, -300111, 140123, -502511,
+136365, -368830, 285078, -274878, 301185, -293132, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
3990025,
-6490770, 1706176, 5731097, 100395, -5911486, -4074850, -4305705, -668404, -2956548, 6933151,
--5183489, -1315871, -2353642, -827318, -4157528, 3999152, -2451353, -1918240, 3362960, 5578089,
-6310381, 973884, -451508, 1314797, 335544, 892816, -2854543, -3071439, 1504312, -2784750,
--2790118, -3737695, -3931506, 1202054, -2603287, 3482682, -4339528, -587874, 1917166, 1824824,
-1607928, -6729677, -1206886, -3731253, -647466, -1563905, -4104378, -80531, 4904853, 1496259,
-2384244, 2259153, 2653216, 342524, 3328063, 2096481, 3714610, -2094870, 2480881, -1213328,
-1715303, 202400, -3420942, 4012036, 4534949, -2421825, -3036005, 1343788, 4168266, 1000191,
-1117228, -1387274, -268435, 2265059, 1416266, 370978, -819265, 282931, 1911797, 2327872,
--275952, -3615289, -2211371, -1214402, -1537061, 846645, -340913, -324270, 1726040, -1263257,
--419833, -2147, 308164, -854699, -241592, 133144, -1367947, -153008, 1691143, -245350,
-896574, -1216550, 709743, 362925, -78920, -798327, -10161893, -2645700, -4594542, 3375308,
--9528385, 2101850, -4211753, -2196339, 1327145, 205085, 1040993, 1437740, 1049583, 4141422,
--1857573, 446677, -440234, -5005785, 3677029, 6197101, -5055714, -4709969, 3565360, 936840,
-4406637, 1417876, 5928129, -813359, 1980517, -3139084, -985695, 6082748, 459025, -3947075,
--4911295, -5264556, 196495, 4382478, 2191507, -16643, 4946192, 3976066, 128312, -4054449,
-6332393, 1635846, 4876936, 4998268, -900869, 3189013, 3725884, -443455, 2189897, 2584497,
--2502892, 522375, -796180, 2456721, -5617817, -3566434, 1774358, -3448322, -1363652, 4803384,
--1969779, 2644089, -1153736, -7510287, 1238561, -25233, 3922379, -6183679, -3362423, 2811593,
-677531, -584116, 1567126, -2908767, 817654, 755914, -925565, -1829656, 2501819, 2314451,
-1561758, 300111, -985695, 623307, -738734, -1104344, 801548, 727997, -1544041, 1101122,
--878321, -630823, 1326071, -966905, -2045478, -19327, -784905, -235149, -987843, -1036161,
-385473, -67646, 576063, 5369, 564788, -1471563, 393526, -421444, 6355478, 6758668,
-2939368, 5005248, 3867618, 6769406, 7664906, -2835752, -848256, 2611877, -7703561, -233002,
--2554432, -1440962, 3494493, -4446902, -544924, 5708012, 1028645, 3667902, -1823751, -1291711,
--1935420, -7197292, -1204738, 517007, 3798899, -1135482, 6553583, 2616709, -1155883, 2654827,
-1342714, 3405372, -2462627, -482647, 7656316, -999654, 7232725, 3431142, -3201898, 789200,
-6367289, 3353296, -4231617, 5850283, -1616518, 421981, 283468, -1146756, 1098438, 675384,
--5283347, 3387119, 2436320, -425739, 172336, -1146219, -4773856, 33823, 2655364, -515933,
--578747, -3173981, -7010997, -2375117, 2585570, 5898601, -8934069, -4726612, 1650878, -3863860,
-2268280, -152471, -57445, -5338645, -4088272, -2356863, -3500398, -1692754, 182536, 630823,
--1264331, 2049773, 1595044, 357556, 1469416, -1603633, -617402, 68183, -2415919, -498753,
-225486, -3022046, 1267552, 763430, -596464, 115964, 624918, 1491964, 153545, 233002,
-14496, -1458141, -198642, -423591, 1078037, 779537, 1479079, -1030255, -242129, 9422085,
-10018011, -2003065, -4195110, -4587025, 9605694, -8333847, 230318, -1360968, -3882651, -5276904,
-1878511, -1451162, -7183870, -8745090, 334471, -658741, -4566087, 1653026, 2426120, -3215857,
--4842039, -4520453, 6388227, -6894497, -831613, -8056822, 95563, 4485020, 1530082, 767725,
--4517232, -4345970, 3955128, -3052648, -4617090, 573915, -1679869, 2827162, 57445, 1142998,
--4604742, -1701344, -1298691, 4422743, 3031173, 3076270, -9118216, 1444183, 2541010, 2084670,
-2569464, -2597918, -1661616, 329639, 1846836, 3609920, -626528, 2386391, -2640331, 7043747,
--12773770, 4490925, 361851, -6791954, -294205, 7516193, -2275796, -3518652, -6851010, -2306398,
-529892, -1897839, -11274, 3085397, 3917010, 3280281, -974958, -536334, -4033511, -816581,
--1037772, -2022930, 551366, -818191, -805306, 1643362, -2044941, -936303, 1957968, -974958,
-1261110, -293668, -821413, -701153, -552977, -2942053, -1854352, 1291175, 1435056, -1392643,
--1144072, -945430, 1073205, -688805, -436476, -1150514, 742493, 812823, -1395328, 559956,
--212601, -1248762, -316754, -703838, 790811, -410169, 1185948, 1713155, -807454, -4472135,
--14133664, 2576444, -6442451, 1410897, 1185411, -819265, 10035728, 554588, -6413460, 8570070,
-4134980, 2943663, -1283122, 1777580, -2604361, 6721087, -1109712, 767725, 10126996, 9882183,
-4234301, 4527970, 4358855, 4922033, 3291019, -9758703, -3041911, -131533, -2559264, -8304856,
--907849, -1965484, -2187212, -4458713, -77846, -1305133, 7157563, -2288681, 12543452, -69793,
-1066226, -2317135, -1805497, 101469, -351114, -997506, -2181844, -1462973, -6132140, 1502165,
-1016834, -726386, -3164854, 4297115, 3188476, 3725884, -1292785, -2682744, 85899, 3248606,
-3522410, -2815351, -8009577, -4089346, 881542, 6699075, -908922, 5478768, -4328254, -6299107,
-4728759, -2196339, -5164698, 3022046, 3159485, -5797669, -4576288, -6380174, -2106682, -2189897,
-3689377, -1986959, 1136556, -397821, 2466922, 1527935, 1375463, -1193464, -663036, -3313031,
--1651415, -874026, -19327, 1490891, -263067, 116501, 2786897, 1095754, -113280, 44023,
-1799591, -1152662, 503585, 528818, -914828, 1088774, -807991, 723165, 576063, 806917,
--478352, -2049773, 2034741, 278099, -3428458, 5092758, -6049462, -6832219, 3344706, -2029372,
--456877, -3634079, -1912334, 3350075, 5012227, 2456721, -993748, 651761, -442919, -1216550,
--4510790, 1479079, -12396349, -3725884, -3847217, 3379603, 4453881, 279173, 2289218, -7889855,
-2287607, 1126355, 2279554, -7119445, 13459354, -674847, 2631741, 1671816, -6126234, 919660,
--8853001, 5719286, -1758252, -7616588, 1686848, 508417, -3619584, 343061, 992674, 5893769,
-10896332, 4578435, -2003065, 3409130, 4576288, -10049687, -3499862, -4639102, 2949569, 2221035,
--1488206, 1518271, 3649112, 2151779, 4651987, 8306467, 368830, -3177739, -684510, -419833,
-6749004, -4790499, 201327, 2970507, 9041980, -30065, -5720360, -5818607, -332323, -7132330,
--781684, 2614025, 11038066, 9285719, -909996, -5030481, 4181688, 230854, 1348083, 944893,
--195421, 1302986, -200253, -1440962, 1364189, 1490354, -1355062, 2115272, 2204392, 1902134,
--391379, -1675037, 1441498, 1684701, -109522, 447750, -1181116, 139586, -120259, 2477123,
-1103807, 1517197, 1401770, 320512, 996432, -89657, 1171989, 2206003, 650151, 859530,
-1803349, 2143189, -891743, -637803, 706522, 580894, 1851668, 2529736, -1135482, -12997108,
--3577708, -4811974, 5539434, 189515, -2709051, -16712791, -2237678, -2246268, 6891275, 16533477,
--4799089, 11101417, 1875827, -9798431, -10031433, 1721208, 2502355, -5704254, 6226629, -4514011,
-5009006, -6244346, 2971044, 2126546, -5959267, -5000953, -3843459, 1944547, 6428493, -8462696,
-268435, -8898098, -542777, -3400004, 2115272, 6452652, 631897, -2830384, -2530810, 6984154,
--73014, 10660109, 3230352, -4059818, -3932043, -3126199, 1475321, 6675453, -194884, 11084774,
--19854024, -14634027, -11872363, -2769180, -10136123, 617402, -3853123, 3546569, 8930311, 1575179,
-3659312, 5725729, 9454834, 4851703, 1392106, -6608344, -16452409, -17314624, 9201967, 580357,
-11698417, -8428873, -6100464, 5106179, -12198781, 190052, -4402342, -509491, -7893613, 255014,
-2538326, 7013145, 1204738, 1087701, -2328946, 2490544, -591095, 783832, 1898912, 3140158,
-4044249, -1179505, -1807644, 2937221, 1441498, -1206886, -2251637, 390842, -442382, -330176,
--1001264, 395674, -49929, -1249299, -483721, 1160715, 2144799, 1715303, 1446330, 725313,
--5109938, -2840584, -2007897, -1863479, 2611877, -497142, -920734, -57445, 680215, 117038,
--177704, 7740605, 3535832, -6360847, -64961, 14834817, 12774843, -1282048, -10847477, -18590230,
--2005213, -6600291, 6711424, -5651640, -5350456, -21040508, -8878771, -18858664, 7016366, -730144,
--4469987, 4876399, -559956, -4832, 1453310, -6135898, 626528, -7031399, -1133335, 4078072,
-3218004, -7171522, 2632278, 7074348, 11805254, -1895154, -1547799, -4020090, 756451, 5957657,
-8724152, -1364189, 1365263, -1986959, -1408212, 10161356, 7573638, 175020, 7808788, 2109366,
--9377524, 1658931, -867047, 12114492, 4870493, 1413044, 5993090, 7813620, 2270964, -7119445,
--11885785, -2894808, 2579128, 6288369, 3361349, 267362, 2588255, 9360344, 2172180, 2952790,
-4452808, 2418067, -6024229, -7036230, -5916855, -6953552, -6162205, 10415833, 1562294, 8010651,
--7092602, -6468221, -1143535, 6669548, -4192962, 3484292, 2156074, 938987, -3553012, -2450279,
--3278671, -2441152, -3747896, 1367947, 1296543, -1196685, 2570538, -1808718, 1243393, -824634,
-336081, 985695, -3316789, -2258616, -3329674, -2356327, -4070555, -1350767, -3367254, -1804960,
--1930051, -2772938, -118648, 2822331, 1027571, 1076426, -1023813, -464930, -327491, -887985,
-2377265, -1280437, -587337, -896574, 26119306, 5835787, -8172786, 4774393, -4795868, -15447387,
--3231963, -15152108, -8438000, 7981123, 10435160, 4156455, 2094333, 982474, 1880659, 10065793,
--7138773, 14202920, -9173513, -9192841, 11220065, 5095979, -18210662, 8044474, 4613869, 5857262,
-11961484, 6003291, 8897562, -512712, 4825396, -2754685, 7603166, 2089502, 1633698, 5167920,
--10234907, -5446019, -3128884, 6655589, 2873333, 2445984, 5242008, 1611150, 1877975, -9168681,
-122407, 10114111, -1767379, 1329292, 1300838, 1387811, 12024835, 4715337, 16165720, 3820374,
--2256469, 15429670, -13147432, -1614908, -2041720, -5163088, -1156957, 3315178, 15244450, 1562294,
--3175055, -5800890, 3193845, -6105296, -2602213, -3892314, -8265128, -1231045, 2282775, 13103945,
--1022739, -12454331, -3418794, -7435662, -3722663, 9181029, 7383586, 8606041, -6708739, 1506460,
--7471096, -1036161, -2493766, -4438849, -2480344, -6125160, -3565360, -1066763, -2600066, -8072391,
--3169686, -2244657, -1602560, -1749662, -2807298, 462783, -1319092, -6332930, -272730, -2996814,
--1798518, -439160, -21475, 1237488, -157840, 2989834, 2884071, 592169, 555661, -1964411,
--1759863, -383326, -2136209, 3054259, 1801202, 2872796, 2668785, 1225139, 3721589, 2535641,
-962073, 1806034, -468151, -1418950, 2639794, 3818763, -9434969, -14543833, -5251672, -14319958,
-10283225, -12218108, -8992588, -7195681, 6499896, 16383690, -16624208, -5901822, -18735722, 5366025,
-2614561, 1756642, -5382668, 1461363, 21092584, -11039677, -1853278, 7984881, 5455146, 4175245,
-7419556, 4938139, -6939594, -11729019, -2191507, -6498823, -8850317, -10829760, 172336, -2531883,
-2664490, 13932337, 8824547, -7836705, -4231080, -884226, -4045322, 3403762, 26508002, -9008157,
-18490908, 5782100, 3106872, -1223529, -2998961, 3115462, -10155450, 4846334, 14391899, 595390,
-2297808, 11504607, 7474317, 4442607, -9714679, 8107825, -5793911, -8670465, -23414552, -7385733,
-15209553, -8666707, 3941169, -16496969, 11790759, -6222871, -6495065, 10284299, -16430934, -12164958,
-18611168, -13283260, -12493523, 7450695, -8571144, 1716376, 28454, 5313412, -13477071, 4226248,
-352187, 13427678, -10004589, 3326452, -1421097, -7613367, 9962714, 2010045, -8293582, -6021544,
--5714454, 870268, -22012, -4181688, 111669, 5193689, -435939, 3679713, 4144644, 3285113,
--7467338, 4147328, 3804267, 5992016, -151398, 440234, -5429913, -2171106, -2672007, -2817499,
-1255741, -628139, 3475702, -4940823, -3114388, 1861332, -4777614, -4030827, -5089536, 1750199,
--10600516, -7868380, -1085553, 12059731, -5711233, 21181704, 19697256, 3893388, 6306086, -11421392,
-1414655, -9242770, 14790794, -2938831, 4358855, -7041599, -4569845, 2542621, 1998234, -6757594,
-11340861, -3178813, 2409477, 4258997, -7421704, 2842732, -9470403, 74088, 5398237, 6492917,
-159451, 8574365, 10782515, -768262, -20170778, -3356517, -5961415, 14489072, -12181601, -15103789,
--10793790, -7184944, 2116882, -8534100, -6726993, -4267587, -1224603, 2714956, -29563334, 18738942,
-14583561, 21358336, -6747394, 3484292, 14295799, -13574781, -12614319, 2573222, 9352828, 6200859,
--1575179, 2952253, -7441568, -8826158, -11335492, -3258807, 39383240, 3247532, -21767968, -3816079,
--11906723, 7592966, 5925445, -13429826, 2943663, -4057670, 1166084, -6577206, 8469676, 8678518,
--1224603, -4256313, -5105643, -17032230, 5224291, 2868501, -627065, 7185481, -3353296, 1242319,
-2816425, -8015483, 3187403, 4973572, 11303280, 6088116, 779537, -9538585, 151934, 8934606,
-601295, 122407, 6681359, 262530, 2343442, 6626598, 5601711, -876173, 3112241, 5633387,
-5183489, -2292439, 2327872, 6742025, 8204998, 6122476, -71404, -4111894, -861141, 331786,
-5184026, 132607, -1341104, 491237, 1977296, -3027415, 1990717, 3304441, -2975876, 2172717,
--7428683, -783295, -5305895, -11642583, -21354040, 1371705, -17777944, 8165270, 3303904, -15001247,
-8617315, 9094056, 13593571, 3432216, 5596343, -15559056, 60666, -3419331, 14488535, 6176163,
-984084, 12808666, 15075872, -2172717, -6692096, 1279363, 18503256, -12221866, -9010305, 8945343,
-5457830, -12429635, -2323041, -11534135, 21103322, -18130668, 5258114, 10624675, -6347962, 9729175,
-3985193, -5485210, -5058398, -5874442, -8133058, 11192685, 15976741, 2694018, -11700028, 811749,
--12958453, -5494874, 8935679, -2084133, -6293201, -5287105, 2505040, -18097382, 816044, -2304787,
--9898826, 13324599, -13300440, -1376537, -2863670, -10505490, 10898480, -1309428, 6409165, -5577015,
--801548, -1076426, -6191196, 4477504, -5689221, -1578937, -5600638, 15455977, 7078643, -19412178,
--3933653, -31675920, 18219252, -541703, -13848585, 12112345, 1567126, 1372242, 4811974, -273804,
-7422777, 8332774, 2183991, -2794950, 5052492, 8992051, -5246840, -3856881, 4032438, 862752,
-2513630, 2282775, 4988068, 5953899, -4058744, 2858301, 2210298, -5637682, -4519380, 3583077,
-1015223, -1058173, -3264712, -3637837, -5431523, 4996658, 5862094, 423054, -3580929, -12309913,
-403190, 513249, 3981435, -8111583, 980863, 5418101, -3126736, 6350646, 3273302, -1027034,
-2068027, 3183645, 478352, 783295, 2234994, 4030827, -3915937, -839666, -2222109, 1087701,
-18823768, 913754, -14681272, -6030134, 8354249, 14049912, 14648523, 727997, -3695819, 21070572,
-8878771, 23396834, 2614561, 2158758, -11394011, -4412005, -6846715, 6379637, 3136937, 12738336,
--14607721, 1159641, -8788040, 7884486, -12696460, 4921496, 13575855, -1895691, -653372, -7034083,
-1717987, -7081864, -25035902, 3583613, -4056060, 1901060, -11322608, -2259153, 9432285, 18895172,
--2193655, -6626598, 10644003, 5294084, 2403571, 13058311, 4234301, -6712497, -3544959, 8489003,
--1400159, 7762080, -9319542, -7913477, 2549063, -7427072, -14797773, -6557342, -16819092, -3534221,
-5330592, -12851079, -2120103, -14785425, -6789270, 55835, 5630166, -17652852, 7543573, 1484985,
--10850161, 13437879, -4983773, 3678103, 23278722, 26803818, 1459752, 9529996, 19229642, 23461796,
-22870700, -2119566, -15675557, -23475754, -8850317, -15510738, 14537927, -3028489, -7242389, 3944928,
--645856, 1772211, -545461, -6849399, 7250442, 2278480, 2550137, 699543, 9892920, -5534602,
--380105, -2971044, 6777459, -6394133, -3060701, -545461, 9758703, -2467996, 5784247, 8424578,
--7875897, -1481227, -3489661, -8456791, -3757560, -1829119, 3431142, 438624, 11464878, 3329674,
-7665443, -616328, -7856032, 2252710, 1815161, 78920, 31988916, 36668820, 1926293, 11732777,
-11247982, -1569811, -26395796, -725850, -1065152, -10040560, 7435662, 6869264, -14376866, 7789997,
-10045392, 1620813, -3839164, 5419712, -3685082, 18634790, -3226057, -8802535, 100932, 4182761,
--1781875, -1300838, -359167, -29861296, 8575439, -757525, -20603494, -8617852, 3533148, -2024003,
--14051522, 4778151, -16579648, -1594507, 1597191, -26665842, -4782983, 11293617, -8558259, 1128503,
-16724066, 10156524, 12785044, 3873524, -7252589, -12527883, 12722230, -6709813, 7111392, -11916387,
--6192806, 8334921, 14289893, 1965484, 17124034, -11641509, 14809047, -12705587, -15169288, -10952703,
-14758044, 15341086, -14346801, 7256347, -39549132, -3762928, 11573863, 3517041, -6240588, -15906411,
-7210713, -22419192, 3549791, -11641509, 10511396, -17358110, -11009612, 17063368, 346282, 8489003,
-1916629, 7373922, -3920768, 2939368, -1996086, -13065291, -2374580, -6194954, 3965866, -4343823,
-2245731, 320512, 2099165, 839129, -2881923, -4115116, 501437, -8358543, 2865280, 2108829,
-4639102, -5436355, 4607426, 4112968, 2810519, 3503083, 2698313, -5837398, 551903, 2496450,
--4185446, 7262790, -717260, -3147674, -4327717, -287226, 630823, 3315178, -2767033, 3124589,
--2673080, 7617662, 3432216, -6923488, -1762547, -1938104, -3163244, -3093450, -6977711, -29153702,
-2304787, 35713728, -24088860, -2441689, -1934883, 1745367, -9429064, 4420595, -15134928, -15830713,
--5002563, -4440996, 3955665, -4103305, 8330626, -11907260, 554588, 22916334, -18748070, -16852378,
--3883187, 20033874, 2985539, -25446070, 10928007, -9542344, -10654203, 2353105, 34917548, -19713364,
--10741713, 24583320, 18485002, 1435056, -10075993, 520228, -3649649, -8017094, 7235410, 6304475,
--4059281, -20208894, 25839060, 11906186, 5012764, -27453968, -4028679, 8323110, 9594420, -3552475,
-14502494, -2473901, 5029407, -6415608, -16295106, 10558103, -11586211, 6881612, 3795141, -14565308,
-27358942, 4029753, 19742354, 19494320, 3649112, -29719026, -5528697, 124554, -11598022, -6111739,
-1262184, -1099512, 12984223, 23979876, -6831683, -2517388, -10508174, -4913980, 10171019, -6925635,
-5969468, 17790292, -15549929, 17682380, -3365107, 5205501, -6644852, -3792993, -5558225, 615791,
-3466039, 3782256, -2851858, -57445, 4202089, 2164664, 9558450, 4271345, -4634807, 250719,
-981937, 8449811, -4648765, 2350958, 4088809, 1190243, -224949, 152471, -11112691, 5363341,
--4027606, 5248987, 7137162, 797253, -1044751, 3433290, -281320, 2594697, 1013612, -1313723,
--4068408, -4358855, 8433705, 1288490, -1896228, 2207613, -5153961, -1118839, 8573292, 11231339,
-1503775, -10260140, -51596516, 3425773, -13478144, 1816234, 25801480, 2504503, -5000416, 4741644,
-978716, -17479444, -18920404, -16994112, -16362752, 21306260, -4276714, 25422986, 2238752, -23954106,
--857920, 2677375, 20534776, 4077535, -3335579, -4054986, 5855651, -12887586, -4962835, 22755274,
--4647692, -29487098, -22557706, 13498545, -2944200, -6109054, 6771016, -2092723, -15218143, 4608500,
-8918500, 20486994, -4135517, -16965658, 220654, -21404506, 8232379, 24275692, -3893925, -29750164,
-9361418, -322659, 1664300, 7193534, -9387188, 18337900, 1365263, -12344810, 9601936, -6677601,
--4146254, 26193394, -13420699, -4490389, -4412005, 16506633, 6619082, -28947542, 14681809, -23325968,
--5578626, -12582107, 2998961, -7670812, -7087233, -2402497, 13288629, -4315906, -8207146, 15744813,
--9188546, 16161962, -96637, -8531416, -5148592, 4023311, 4436165, 3205656, -9722732, -3211025,
-2376191, -541703, -6364068, 143881, 5983427, 9225053, 3833795, 4745939, 743566, 9067213,
--5142687, 2944737, 7161321, -2724620, 891206, 2922725, -1801202, 1429150, 2831994, -8886824,
-7497403, 3195456, -8946417, -7330973, 512175, -10519449, 908922, -7754027, 10028749, -18149994,
--45097, -3845070, 1905892, -4728222, 5658620, -3029563, 2634426, 2026151, -3741454, 816581,
--25115896, 5081483, 41649372, 27008902, 12453795, -20714628, 15521475, 19465866, 28983514, 13884019,
-3473018, 936840, 18173618, 31188978, -7010997, -3907347, 17761300, -35121560, 12788802, 31145492,
--6438693, -10927471, 8149164, 24154896, 19575924, -13173202, -22348326, -1427003, 11289322, -3906273,
-2740726, 244813, 26276074, -15107547, 16840566, 25274272, -10142028, -3192771, 17945984, -2810519,
-62878320, -26487064, 11333345, 42899208, -24764782, 7991324, 2890513, -35014184, -1073742, 6380174,
--15377057, 33986612, 2586107, -4821638, 2656974, -14329085, 46782396, 12765180, -37497748, 36042292,
--15126338, 1202054, 11097122, 13296682, 24004036, 11564736, -6496138, -23584740, -31542776, -11984569,
--12652974, -2316061, -9691594, 19672560, -12074227, -21056614, 2321967, 5617281, 4238596, 7452305,
--11850889, -11694659, -7019587, -7794292, -24879134, -10676215, -8485782, -17345226, -8276939, 5967320,
--7326678, -16283832, -796180, 6072547, 10788421, -2739116, 5061082, 11581379, -704912, -8196945,
--524523, -5055714, 6526740, 9182640, -13203803, 11374147, -6856916, -75699, 1708323, -6339372,
-12143483, 4469451, -17137456, 10294500, 1563905, -6318971, 12598750, -14621142, 5732708, -2942053,
-6140730, -3686693, -4031901, 2135136, -2385318, -1728188, 4412542, -2876018, -9834938, 4268124,
--943282, 2702608, -460098, 7910793, -4518843, 10077067, -48168060, 27967216, 1482838, 16822314,
-28275918, -46601468, 10806675, 23665270, 5608691, 17605070, -17666812, 19401978, 5917928, -18395882,
-467078, -11671037, -33773476, 18435610, 10778220, 30854508, -16989816, -22963042, -7763691, 7080254,
--4540854, -38720740, -18820546, 11635603, -2689187, 5558762, -16074452, -5242545, 12994960, -11060615,
--5242545, -16644609, -3673808, 5789616, -18044768, 1722282, -39620000, -32942400, 10291279, -34258268,
-3132642, -35831300, -24816322, -17385490, 16927540, 33075006, 41113576, -9882183, 18356690, 22017076,
-10904385, 9443022, -15743203, 45414448, 46631532, -31768262, 31827856, -25029996, 16086263, 32539746,
-31214748, 37734508, 45349484, 31899258, -35837744, -25702694, -128849, 747861, 13743358, -8714489,
--6777996, -21700322, -11811697, -32119912, 7164006, 26717380, -10709501, 6449967, 28170154, 13082470,
--19063750, 21415244, -1190780, 7494718, -1971927, -3923453, 6353331, -6892349, 9669582, 7940321,
--7016903, -8759049, 8362302, -6001143, 423054, 157303, -545998, 2252710, 945430, -11621645,
-10861435, -4984310, 5259725, 6076842, -4152697, 6554120, -8106214, -6119792, 5581310, -6688338,
--8378408, -3837553, 3502009, -3409667, 2222109, -7765838, 386010, 2756295, 7190849, 10536092,
--2408403, 5907191, -6914361, -61740, -1199907, 3149822, 2548526, -696858, -5332739, -7654706,
--1719061, 1583232, 59855736, -43806520, -22310744, 23627688, -14063334, 22574348, -17590038, -19587198,
-6614787, -46321224, -2102387, 31189516, -7525857, 16045998, -26584774, -6502581, -10495826, 1090385,
-33244658, 10089415, 7392713, -5893769, 18253612, 5912023, 45426796, 11216844, 26527328, 1934346,
--20720532, -19558744, 26444114, -12800613, 12239046, -202400, -34088620, 24647744, -30368104, 59077276,
--43972948, 26917634, 24068996, -25196962, -21205328, -15617575, 21824340, -1597191, 22840100, -217433,
-3007014, -40284644, -21654688, 9465034, -19802484, 6644852, -12060805, 11933567, 6769942, 31076772,
--18380850, -6260989, -7815230, -15108621, 42066520, 7867307, 4000225, -39049844, -12632036, 21144660,
-12473122, 13503914, 36450852, 23395224, 32240708, 37250788, -1030792, 16556025, -15396384, 49520972,
-3776350, -8047695, 18066244, -4109210, 37982544, 803696, -7573101, -7714298, 4608500, 26786100,
--20157892, 13900662, -6368363, -2062658, 7983808, 5432060, 10452877, -6387153, 6832756, 12582644,
--3192235, -4600984, 8508330, -1236951, -1241246, -811749, 2348273, 1517734, 4140349, -8909373,
-11946988, -6848326, -3785477, -1771674, 7341173, -10095858, 1123671, -7181186, 10008348, 18115636,
--5921150, -4817880, -2296197, 12491912, 6161668, 13043816, -940061, -7330973, 5992016, 6351183,
--1744294, 6295349, 4891968, -17339856, 2822867, 20202452, -2569464, -9381819, -90555624, 63006096,
--39123392, -27054536, 505732, 13085692, 16056735, 3117073, -14629732, 49086108, 24639154, 7021735,
--24630026, 16230145, -987306, 18423800, -23528368, -15963320, 12351252, 36740760, -42074572, 1902134,
-13424994, 4642323, -10477573, -6014565, -5443871, 1867237, -2296197, 9648107, 45913736, 3151432,
--20999706, 31172872, -7412040, -29780766, -38834556, 36990944, 11855720, -4938139, 13523778, 8684961,
-30436822, -41394896, -4600984, -20970714, -6207302, 23929948, -17724256, 9426379, -20410758, 9913858,
-63308892, 4968741, -36581312, -40655088, -2747169, 19594178, 18846316, -16209743, 3712462, 31061740,
--13225278, -59706488, 33872260, -20497732, -34300684, 15078020, 56489020, -39085276, 28323698, 39699992,
-13361643, -34152508, -28898688, -17497696, 13977434, 12493523, -12140799, 35634808, 17035988, -2115272,
--1323387, 2245731, -29962766, -11215233, -21301428, 10913512, 9265318, 7158637, 9358734, 7378217,
-21533356, -10831908, -5659693, 4283693, -243203, -16786342, 14246943, -556735, 8806830, -4138201,
-6551436, -10788958, -3663070, -6480032, 9940702, 2019708, 1780264, 355409, 5850283, 16098611,
--6680285, -30559766, 2173790, -15065672, -3292093, 9192841, -13297219, -8385387, 17052094, -16238734,
--3970697, 159988, 8000987, -17396766, 886911, 51881056, 17078400, 3438658, -3800509, 8222715,
-14602352, -4653597, 6814503, -7860864, -69793, -6213744, 24371792, -27349814, -3067144, 16341814,
--37976636, 12285754, -9263171, 2855080, -4440460, -10639708, 6797323, -2946348, -15461345, 41605884,
--31753230, -8949101, 29557428, -18953154, -2886755, -5988795, 6513318, 29217052, 2288144, -28536836,
-39106216, -21139292, 13945222, 24340116, 10870562, -9120900, 2176475, -21499532, 5268851, -13032005,
--10209674, 52329344, -12145631, -20900922, 6842957, -9778030, 12456479, -8168491, 13675713, 33658048,
--18502720, 11120207, 25760676, -30289720, 13885092, 16430397, 7556458, 20572894, -23463944, -6224482,
-36018668, -24877524, -5452461, 10242423, -10050223, 34304976, -34092912, 5763309, 12319577, -15799574,
-11983496, 13089450, -32468342, 11528229, 27710056, -336618, -8313446, -1344325, 17828946, -3718368,
--30491046, 24762634, 11771968, -13440563, 5092221, -7423314, 11009075, -4327717, -13645648, 16037945,
-900333, -3533148, -11864847, 11134166, 2124935, -15852724, 5657546, 10567767, -2188823, -5210869,
-2317135, 9766756, -1450088, -10211822, 10406169, 6777996, 1270237, -548682, 8699456, 1642288,
-3050501, -12132746, 15373299, -8501888, 16394964, -10829760, -29272350, -79017200, -124175024, 11244761,
-118921200, 9714142, 269223584, 277875808, 138346272, 290901344, 194031056, -40325984, -4212289, -64085208,
--233616688, -205110992, -126789584, -238713216, -186827312, -54391464, -117102824, -98085240, 34651260, 58589796,
--28486370, 15241765, 52328808, -40500468, -23728620, 73723648, 65488052, 7392176, 73199128, 124958856,
-41676752, 90340344, 171029360, 82029040, 43244416, 153177856, 128028680, 16895328, 91884384, 179509776,
-35380328, 42089604, 144956224, 62307092, -15951509, 102373232, 96621728, -9345312, 85252416, 110114912,
--2163590, -81248432, -38059316, -190421136, -314287456, -279601824, -298102944, -455097952, -408842784, -382656896,
--465287232, -452123680, -371037920, -334665984, -301154528, -174696720, -67630704, 58051316, 124479424, 239014400,
-356793664, 389540640, 434030592, 566548608, 559120448, 439674720, 481080352, 425180288, 175382848, 191153968,
-162276752, -8012799, -27868970, 46160160, -7788923, -74445744, 8225936, 47942036, -48818208, -20209968,
-42142756, -24434606, -94445256, -32204202, -26680336, -136161200, -96990024, -27353572, -107255536, -121290952,
--10044318, -44222056, -122783992, -60032904, -56684980, -172022560, -163262448, -148197840, -265502000, -286903808,
--239680656, -255543568, -275618784, -198210064, -169496048, -147489184, -107604504, -59253368, -28294170, -9793062,
-19046570, 90465432, 124541168, 193751344, 317908640, 359896800, 398432832, 465948128, 455149504, 400463840,
-340593056, 237868176, 100573640, 22897008, -27807228, -80320184, -93940064, -92386896, -93635656, -95720864,
--89842128, -81698328, -87977576, -89980640, -85673320, -91633128, -100242392, -95832528, -92408368, -90067072,
--79397304, -60669096, -45656040, -30153354, -9175661, 6481106, 13610214, 18625662, 19735912, 16254841,
-14357002, 10757819, 2500208, -4358855, -10530186, -18099530, -20423644, -20269024, -22377854, -21937620,
--18388902, -17877264, -15977278, -10517838, -10438918, -11436961, -6577743, -4523138, -6694244, -2720862,
--1421634, -3080565, 4247723, 11662984, 14088030, 21960704, 30303142, 34162708, 39686036, 45851996,
-46901580, 46369540, 48393008, 48171280, 45485852, 42730092, 38726648, 32052268, 25676926, 21016886,
-14746233, 8097624, 1962800, -5575405, -14497125, -21969294, -29196650, -34973920, -40098352, -43163348,
--43328168, -41832980, -37799472, -30536680, -23768886, -17652316, -12147241, -7795903, -6109054, -4038880,
--2404108, -1554778, -1009317, 251792, 747861, 1286880, 1642288, 2337536, 2318746, 2529199,
-2358474, 2331630, 1730335, 1425392, 785442, 409096, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+6490770, 1706176, 5731097, 100395, -5911486, -4074850, -4305705, -668404, -2956548, 6933151,
+-5183489, -1315871, -2353642, -827318, -4157528, 3999152, -2451353, -1918240, 3362960, 5578089,
+6310381, 973884, -451508, 1314797, 335544, 892816, -2854543, -3071439, 1504312, -2784750,
+-2790118, -3737695, -3931506, 1202054, -2603287, 3482682, -4339528, -587874, 1917166, 1824824,
+1607928, -6729677, -1206886, -3731253, -647466, -1563905, -4104378, -80531, 4904853, 1496259,
+2384244, 2259153, 2653216, 342524, 3328063, 2096481, 3714610, -2094870, 2480881, -1213328,
+1715303, 202400, -3420942, 4012036, 4534949, -2421825, -3036005, 1343788, 4168266, 1000191,
+1117228, -1387274, -268435, 2265059, 1416266, 370978, -819265, 282931, 1911797, 2327872,
+-275952, -3615289, -2211371, -1214402, -1537061, 846645, -340913, -324270, 1726040, -1263257,
+-419833, -2147, 308164, -854699, -241592, 133144, -1367947, -153008, 1691143, -245350,
+896574, -1216550, 709743, 362925, -78920, -798327, -10161893, -2645700, -4594542, 3375308,
+-9528385, 2101850, -4211753, -2196339, 1327145, 205085, 1040993, 1437740, 1049583, 4141422,
+-1857573, 446677, -440234, -5005785, 3677029, 6197101, -5055714, -4709969, 3565360, 936840,
+4406637, 1417876, 5928129, -813359, 1980517, -3139084, -985695, 6082748, 459025, -3947075,
+-4911295, -5264556, 196495, 4382478, 2191507, -16643, 4946192, 3976066, 128312, -4054449,
+6332393, 1635846, 4876936, 4998268, -900869, 3189013, 3725884, -443455, 2189897, 2584497,
+-2502892, 522375, -796180, 2456721, -5617817, -3566434, 1774358, -3448322, -1363652, 4803384,
+-1969779, 2644089, -1153736, -7510287, 1238561, -25233, 3922379, -6183679, -3362423, 2811593,
+677531, -584116, 1567126, -2908767, 817654, 755914, -925565, -1829656, 2501819, 2314451,
+1561758, 300111, -985695, 623307, -738734, -1104344, 801548, 727997, -1544041, 1101122,
+-878321, -630823, 1326071, -966905, -2045478, -19327, -784905, -235149, -987843, -1036161,
+385473, -67646, 576063, 5369, 564788, -1471563, 393526, -421444, 6355478, 6758668,
+2939368, 5005248, 3867618, 6769406, 7664906, -2835752, -848256, 2611877, -7703561, -233002,
+-2554432, -1440962, 3494493, -4446902, -544924, 5708012, 1028645, 3667902, -1823751, -1291711,
+-1935420, -7197292, -1204738, 517007, 3798899, -1135482, 6553583, 2616709, -1155883, 2654827,
+1342714, 3405372, -2462627, -482647, 7656316, -999654, 7232725, 3431142, -3201898, 789200,
+6367289, 3353296, -4231617, 5850283, -1616518, 421981, 283468, -1146756, 1098438, 675384,
+-5283347, 3387119, 2436320, -425739, 172336, -1146219, -4773856, 33823, 2655364, -515933,
+-578747, -3173981, -7010997, -2375117, 2585570, 5898601, -8934069, -4726612, 1650878, -3863860,
+2268280, -152471, -57445, -5338645, -4088272, -2356863, -3500398, -1692754, 182536, 630823,
+-1264331, 2049773, 1595044, 357556, 1469416, -1603633, -617402, 68183, -2415919, -498753,
+225486, -3022046, 1267552, 763430, -596464, 115964, 624918, 1491964, 153545, 233002,
+14496, -1458141, -198642, -423591, 1078037, 779537, 1479079, -1030255, -242129, 9422085,
+10018011, -2003065, -4195110, -4587025, 9605694, -8333847, 230318, -1360968, -3882651, -5276904,
+1878511, -1451162, -7183870, -8745090, 334471, -658741, -4566087, 1653026, 2426120, -3215857,
+-4842039, -4520453, 6388227, -6894497, -831613, -8056822, 95563, 4485020, 1530082, 767725,
+-4517232, -4345970, 3955128, -3052648, -4617090, 573915, -1679869, 2827162, 57445, 1142998,
+-4604742, -1701344, -1298691, 4422743, 3031173, 3076270, -9118216, 1444183, 2541010, 2084670,
+2569464, -2597918, -1661616, 329639, 1846836, 3609920, -626528, 2386391, -2640331, 7043747,
+-12773770, 4490925, 361851, -6791954, -294205, 7516193, -2275796, -3518652, -6851010, -2306398,
+529892, -1897839, -11274, 3085397, 3917010, 3280281, -974958, -536334, -4033511, -816581,
+-1037772, -2022930, 551366, -818191, -805306, 1643362, -2044941, -936303, 1957968, -974958,
+1261110, -293668, -821413, -701153, -552977, -2942053, -1854352, 1291175, 1435056, -1392643,
+-1144072, -945430, 1073205, -688805, -436476, -1150514, 742493, 812823, -1395328, 559956,
+-212601, -1248762, -316754, -703838, 790811, -410169, 1185948, 1713155, -807454, -4472135,
+-14133664, 2576444, -6442451, 1410897, 1185411, -819265, 10035728, 554588, -6413460, 8570070,
+4134980, 2943663, -1283122, 1777580, -2604361, 6721087, -1109712, 767725, 10126996, 9882183,
+4234301, 4527970, 4358855, 4922033, 3291019, -9758703, -3041911, -131533, -2559264, -8304856,
+-907849, -1965484, -2187212, -4458713, -77846, -1305133, 7157563, -2288681, 12543452, -69793,
+1066226, -2317135, -1805497, 101469, -351114, -997506, -2181844, -1462973, -6132140, 1502165,
+1016834, -726386, -3164854, 4297115, 3188476, 3725884, -1292785, -2682744, 85899, 3248606,
+3522410, -2815351, -8009577, -4089346, 881542, 6699075, -908922, 5478768, -4328254, -6299107,
+4728759, -2196339, -5164698, 3022046, 3159485, -5797669, -4576288, -6380174, -2106682, -2189897,
+3689377, -1986959, 1136556, -397821, 2466922, 1527935, 1375463, -1193464, -663036, -3313031,
+-1651415, -874026, -19327, 1490891, -263067, 116501, 2786897, 1095754, -113280, 44023,
+1799591, -1152662, 503585, 528818, -914828, 1088774, -807991, 723165, 576063, 806917,
+-478352, -2049773, 2034741, 278099, -3428458, 5092758, -6049462, -6832219, 3344706, -2029372,
+-456877, -3634079, -1912334, 3350075, 5012227, 2456721, -993748, 651761, -442919, -1216550,
+-4510790, 1479079, -12396349, -3725884, -3847217, 3379603, 4453881, 279173, 2289218, -7889855,
+2287607, 1126355, 2279554, -7119445, 13459354, -674847, 2631741, 1671816, -6126234, 919660,
+-8853001, 5719286, -1758252, -7616588, 1686848, 508417, -3619584, 343061, 992674, 5893769,
+10896332, 4578435, -2003065, 3409130, 4576288, -10049687, -3499862, -4639102, 2949569, 2221035,
+-1488206, 1518271, 3649112, 2151779, 4651987, 8306467, 368830, -3177739, -684510, -419833,
+6749004, -4790499, 201327, 2970507, 9041980, -30065, -5720360, -5818607, -332323, -7132330,
+-781684, 2614025, 11038066, 9285719, -909996, -5030481, 4181688, 230854, 1348083, 944893,
+-195421, 1302986, -200253, -1440962, 1364189, 1490354, -1355062, 2115272, 2204392, 1902134,
+-391379, -1675037, 1441498, 1684701, -109522, 447750, -1181116, 139586, -120259, 2477123,
+1103807, 1517197, 1401770, 320512, 996432, -89657, 1171989, 2206003, 650151, 859530,
+1803349, 2143189, -891743, -637803, 706522, 580894, 1851668, 2529736, -1135482, -12997108,
+-3577708, -4811974, 5539434, 189515, -2709051, -16712791, -2237678, -2246268, 6891275, 16533477,
+-4799089, 11101417, 1875827, -9798431, -10031433, 1721208, 2502355, -5704254, 6226629, -4514011,
+5009006, -6244346, 2971044, 2126546, -5959267, -5000953, -3843459, 1944547, 6428493, -8462696,
+268435, -8898098, -542777, -3400004, 2115272, 6452652, 631897, -2830384, -2530810, 6984154,
+-73014, 10660109, 3230352, -4059818, -3932043, -3126199, 1475321, 6675453, -194884, 11084774,
+-19854024, -14634027, -11872363, -2769180, -10136123, 617402, -3853123, 3546569, 8930311, 1575179,
+3659312, 5725729, 9454834, 4851703, 1392106, -6608344, -16452409, -17314624, 9201967, 580357,
+11698417, -8428873, -6100464, 5106179, -12198781, 190052, -4402342, -509491, -7893613, 255014,
+2538326, 7013145, 1204738, 1087701, -2328946, 2490544, -591095, 783832, 1898912, 3140158,
+4044249, -1179505, -1807644, 2937221, 1441498, -1206886, -2251637, 390842, -442382, -330176,
+-1001264, 395674, -49929, -1249299, -483721, 1160715, 2144799, 1715303, 1446330, 725313,
+-5109938, -2840584, -2007897, -1863479, 2611877, -497142, -920734, -57445, 680215, 117038,
+-177704, 7740605, 3535832, -6360847, -64961, 14834817, 12774843, -1282048, -10847477, -18590230,
+-2005213, -6600291, 6711424, -5651640, -5350456, -21040508, -8878771, -18858664, 7016366, -730144,
+-4469987, 4876399, -559956, -4832, 1453310, -6135898, 626528, -7031399, -1133335, 4078072,
+3218004, -7171522, 2632278, 7074348, 11805254, -1895154, -1547799, -4020090, 756451, 5957657,
+8724152, -1364189, 1365263, -1986959, -1408212, 10161356, 7573638, 175020, 7808788, 2109366,
+-9377524, 1658931, -867047, 12114492, 4870493, 1413044, 5993090, 7813620, 2270964, -7119445,
+-11885785, -2894808, 2579128, 6288369, 3361349, 267362, 2588255, 9360344, 2172180, 2952790,
+4452808, 2418067, -6024229, -7036230, -5916855, -6953552, -6162205, 10415833, 1562294, 8010651,
+-7092602, -6468221, -1143535, 6669548, -4192962, 3484292, 2156074, 938987, -3553012, -2450279,
+-3278671, -2441152, -3747896, 1367947, 1296543, -1196685, 2570538, -1808718, 1243393, -824634,
+336081, 985695, -3316789, -2258616, -3329674, -2356327, -4070555, -1350767, -3367254, -1804960,
+-1930051, -2772938, -118648, 2822331, 1027571, 1076426, -1023813, -464930, -327491, -887985,
+2377265, -1280437, -587337, -896574, 26119306, 5835787, -8172786, 4774393, -4795868, -15447387,
+-3231963, -15152108, -8438000, 7981123, 10435160, 4156455, 2094333, 982474, 1880659, 10065793,
+-7138773, 14202920, -9173513, -9192841, 11220065, 5095979, -18210662, 8044474, 4613869, 5857262,
+11961484, 6003291, 8897562, -512712, 4825396, -2754685, 7603166, 2089502, 1633698, 5167920,
+-10234907, -5446019, -3128884, 6655589, 2873333, 2445984, 5242008, 1611150, 1877975, -9168681,
+122407, 10114111, -1767379, 1329292, 1300838, 1387811, 12024835, 4715337, 16165720, 3820374,
+-2256469, 15429670, -13147432, -1614908, -2041720, -5163088, -1156957, 3315178, 15244450, 1562294,
+-3175055, -5800890, 3193845, -6105296, -2602213, -3892314, -8265128, -1231045, 2282775, 13103945,
+-1022739, -12454331, -3418794, -7435662, -3722663, 9181029, 7383586, 8606041, -6708739, 1506460,
+-7471096, -1036161, -2493766, -4438849, -2480344, -6125160, -3565360, -1066763, -2600066, -8072391,
+-3169686, -2244657, -1602560, -1749662, -2807298, 462783, -1319092, -6332930, -272730, -2996814,
+-1798518, -439160, -21475, 1237488, -157840, 2989834, 2884071, 592169, 555661, -1964411,
+-1759863, -383326, -2136209, 3054259, 1801202, 2872796, 2668785, 1225139, 3721589, 2535641,
+962073, 1806034, -468151, -1418950, 2639794, 3818763, -9434969, -14543833, -5251672, -14319958,
+10283225, -12218108, -8992588, -7195681, 6499896, 16383690, -16624208, -5901822, -18735722, 5366025,
+2614561, 1756642, -5382668, 1461363, 21092584, -11039677, -1853278, 7984881, 5455146, 4175245,
+7419556, 4938139, -6939594, -11729019, -2191507, -6498823, -8850317, -10829760, 172336, -2531883,
+2664490, 13932337, 8824547, -7836705, -4231080, -884226, -4045322, 3403762, 26508002, -9008157,
+18490908, 5782100, 3106872, -1223529, -2998961, 3115462, -10155450, 4846334, 14391899, 595390,
+2297808, 11504607, 7474317, 4442607, -9714679, 8107825, -5793911, -8670465, -23414552, -7385733,
+15209553, -8666707, 3941169, -16496969, 11790759, -6222871, -6495065, 10284299, -16430934, -12164958,
+18611168, -13283260, -12493523, 7450695, -8571144, 1716376, 28454, 5313412, -13477071, 4226248,
+352187, 13427678, -10004589, 3326452, -1421097, -7613367, 9962714, 2010045, -8293582, -6021544,
+-5714454, 870268, -22012, -4181688, 111669, 5193689, -435939, 3679713, 4144644, 3285113,
+-7467338, 4147328, 3804267, 5992016, -151398, 440234, -5429913, -2171106, -2672007, -2817499,
+1255741, -628139, 3475702, -4940823, -3114388, 1861332, -4777614, -4030827, -5089536, 1750199,
+-10600516, -7868380, -1085553, 12059731, -5711233, 21181704, 19697256, 3893388, 6306086, -11421392,
+1414655, -9242770, 14790794, -2938831, 4358855, -7041599, -4569845, 2542621, 1998234, -6757594,
+11340861, -3178813, 2409477, 4258997, -7421704, 2842732, -9470403, 74088, 5398237, 6492917,
+159451, 8574365, 10782515, -768262, -20170778, -3356517, -5961415, 14489072, -12181601, -15103789,
+-10793790, -7184944, 2116882, -8534100, -6726993, -4267587, -1224603, 2714956, -29563334, 18738942,
+14583561, 21358336, -6747394, 3484292, 14295799, -13574781, -12614319, 2573222, 9352828, 6200859,
+-1575179, 2952253, -7441568, -8826158, -11335492, -3258807, 39383240, 3247532, -21767968, -3816079,
+-11906723, 7592966, 5925445, -13429826, 2943663, -4057670, 1166084, -6577206, 8469676, 8678518,
+-1224603, -4256313, -5105643, -17032230, 5224291, 2868501, -627065, 7185481, -3353296, 1242319,
+2816425, -8015483, 3187403, 4973572, 11303280, 6088116, 779537, -9538585, 151934, 8934606,
+601295, 122407, 6681359, 262530, 2343442, 6626598, 5601711, -876173, 3112241, 5633387,
+5183489, -2292439, 2327872, 6742025, 8204998, 6122476, -71404, -4111894, -861141, 331786,
+5184026, 132607, -1341104, 491237, 1977296, -3027415, 1990717, 3304441, -2975876, 2172717,
+-7428683, -783295, -5305895, -11642583, -21354040, 1371705, -17777944, 8165270, 3303904, -15001247,
+8617315, 9094056, 13593571, 3432216, 5596343, -15559056, 60666, -3419331, 14488535, 6176163,
+984084, 12808666, 15075872, -2172717, -6692096, 1279363, 18503256, -12221866, -9010305, 8945343,
+5457830, -12429635, -2323041, -11534135, 21103322, -18130668, 5258114, 10624675, -6347962, 9729175,
+3985193, -5485210, -5058398, -5874442, -8133058, 11192685, 15976741, 2694018, -11700028, 811749,
+-12958453, -5494874, 8935679, -2084133, -6293201, -5287105, 2505040, -18097382, 816044, -2304787,
+-9898826, 13324599, -13300440, -1376537, -2863670, -10505490, 10898480, -1309428, 6409165, -5577015,
+-801548, -1076426, -6191196, 4477504, -5689221, -1578937, -5600638, 15455977, 7078643, -19412178,
+-3933653, -31675920, 18219252, -541703, -13848585, 12112345, 1567126, 1372242, 4811974, -273804,
+7422777, 8332774, 2183991, -2794950, 5052492, 8992051, -5246840, -3856881, 4032438, 862752,
+2513630, 2282775, 4988068, 5953899, -4058744, 2858301, 2210298, -5637682, -4519380, 3583077,
+1015223, -1058173, -3264712, -3637837, -5431523, 4996658, 5862094, 423054, -3580929, -12309913,
+403190, 513249, 3981435, -8111583, 980863, 5418101, -3126736, 6350646, 3273302, -1027034,
+2068027, 3183645, 478352, 783295, 2234994, 4030827, -3915937, -839666, -2222109, 1087701,
+18823768, 913754, -14681272, -6030134, 8354249, 14049912, 14648523, 727997, -3695819, 21070572,
+8878771, 23396834, 2614561, 2158758, -11394011, -4412005, -6846715, 6379637, 3136937, 12738336,
+-14607721, 1159641, -8788040, 7884486, -12696460, 4921496, 13575855, -1895691, -653372, -7034083,
+1717987, -7081864, -25035902, 3583613, -4056060, 1901060, -11322608, -2259153, 9432285, 18895172,
+-2193655, -6626598, 10644003, 5294084, 2403571, 13058311, 4234301, -6712497, -3544959, 8489003,
+-1400159, 7762080, -9319542, -7913477, 2549063, -7427072, -14797773, -6557342, -16819092, -3534221,
+5330592, -12851079, -2120103, -14785425, -6789270, 55835, 5630166, -17652852, 7543573, 1484985,
+-10850161, 13437879, -4983773, 3678103, 23278722, 26803818, 1459752, 9529996, 19229642, 23461796,
+22870700, -2119566, -15675557, -23475754, -8850317, -15510738, 14537927, -3028489, -7242389, 3944928,
+-645856, 1772211, -545461, -6849399, 7250442, 2278480, 2550137, 699543, 9892920, -5534602,
+-380105, -2971044, 6777459, -6394133, -3060701, -545461, 9758703, -2467996, 5784247, 8424578,
+-7875897, -1481227, -3489661, -8456791, -3757560, -1829119, 3431142, 438624, 11464878, 3329674,
+7665443, -616328, -7856032, 2252710, 1815161, 78920, 31988916, 36668820, 1926293, 11732777,
+11247982, -1569811, -26395796, -725850, -1065152, -10040560, 7435662, 6869264, -14376866, 7789997,
+10045392, 1620813, -3839164, 5419712, -3685082, 18634790, -3226057, -8802535, 100932, 4182761,
+-1781875, -1300838, -359167, -29861296, 8575439, -757525, -20603494, -8617852, 3533148, -2024003,
+-14051522, 4778151, -16579648, -1594507, 1597191, -26665842, -4782983, 11293617, -8558259, 1128503,
+16724066, 10156524, 12785044, 3873524, -7252589, -12527883, 12722230, -6709813, 7111392, -11916387,
+-6192806, 8334921, 14289893, 1965484, 17124034, -11641509, 14809047, -12705587, -15169288, -10952703,
+14758044, 15341086, -14346801, 7256347, -39549132, -3762928, 11573863, 3517041, -6240588, -15906411,
+7210713, -22419192, 3549791, -11641509, 10511396, -17358110, -11009612, 17063368, 346282, 8489003,
+1916629, 7373922, -3920768, 2939368, -1996086, -13065291, -2374580, -6194954, 3965866, -4343823,
+2245731, 320512, 2099165, 839129, -2881923, -4115116, 501437, -8358543, 2865280, 2108829,
+4639102, -5436355, 4607426, 4112968, 2810519, 3503083, 2698313, -5837398, 551903, 2496450,
+-4185446, 7262790, -717260, -3147674, -4327717, -287226, 630823, 3315178, -2767033, 3124589,
+-2673080, 7617662, 3432216, -6923488, -1762547, -1938104, -3163244, -3093450, -6977711, -29153702,
+2304787, 35713728, -24088860, -2441689, -1934883, 1745367, -9429064, 4420595, -15134928, -15830713,
+-5002563, -4440996, 3955665, -4103305, 8330626, -11907260, 554588, 22916334, -18748070, -16852378,
+-3883187, 20033874, 2985539, -25446070, 10928007, -9542344, -10654203, 2353105, 34917548, -19713364,
+-10741713, 24583320, 18485002, 1435056, -10075993, 520228, -3649649, -8017094, 7235410, 6304475,
+-4059281, -20208894, 25839060, 11906186, 5012764, -27453968, -4028679, 8323110, 9594420, -3552475,
+14502494, -2473901, 5029407, -6415608, -16295106, 10558103, -11586211, 6881612, 3795141, -14565308,
+27358942, 4029753, 19742354, 19494320, 3649112, -29719026, -5528697, 124554, -11598022, -6111739,
+1262184, -1099512, 12984223, 23979876, -6831683, -2517388, -10508174, -4913980, 10171019, -6925635,
+5969468, 17790292, -15549929, 17682380, -3365107, 5205501, -6644852, -3792993, -5558225, 615791,
+3466039, 3782256, -2851858, -57445, 4202089, 2164664, 9558450, 4271345, -4634807, 250719,
+981937, 8449811, -4648765, 2350958, 4088809, 1190243, -224949, 152471, -11112691, 5363341,
+-4027606, 5248987, 7137162, 797253, -1044751, 3433290, -281320, 2594697, 1013612, -1313723,
+-4068408, -4358855, 8433705, 1288490, -1896228, 2207613, -5153961, -1118839, 8573292, 11231339,
+1503775, -10260140, -51596516, 3425773, -13478144, 1816234, 25801480, 2504503, -5000416, 4741644,
+978716, -17479444, -18920404, -16994112, -16362752, 21306260, -4276714, 25422986, 2238752, -23954106,
+-857920, 2677375, 20534776, 4077535, -3335579, -4054986, 5855651, -12887586, -4962835, 22755274,
+-4647692, -29487098, -22557706, 13498545, -2944200, -6109054, 6771016, -2092723, -15218143, 4608500,
+8918500, 20486994, -4135517, -16965658, 220654, -21404506, 8232379, 24275692, -3893925, -29750164,
+9361418, -322659, 1664300, 7193534, -9387188, 18337900, 1365263, -12344810, 9601936, -6677601,
+-4146254, 26193394, -13420699, -4490389, -4412005, 16506633, 6619082, -28947542, 14681809, -23325968,
+-5578626, -12582107, 2998961, -7670812, -7087233, -2402497, 13288629, -4315906, -8207146, 15744813,
+-9188546, 16161962, -96637, -8531416, -5148592, 4023311, 4436165, 3205656, -9722732, -3211025,
+2376191, -541703, -6364068, 143881, 5983427, 9225053, 3833795, 4745939, 743566, 9067213,
+-5142687, 2944737, 7161321, -2724620, 891206, 2922725, -1801202, 1429150, 2831994, -8886824,
+7497403, 3195456, -8946417, -7330973, 512175, -10519449, 908922, -7754027, 10028749, -18149994,
+-45097, -3845070, 1905892, -4728222, 5658620, -3029563, 2634426, 2026151, -3741454, 816581,
+-25115896, 5081483, 41649372, 27008902, 12453795, -20714628, 15521475, 19465866, 28983514, 13884019,
+3473018, 936840, 18173618, 31188978, -7010997, -3907347, 17761300, -35121560, 12788802, 31145492,
+-6438693, -10927471, 8149164, 24154896, 19575924, -13173202, -22348326, -1427003, 11289322, -3906273,
+2740726, 244813, 26276074, -15107547, 16840566, 25274272, -10142028, -3192771, 17945984, -2810519,
+62878320, -26487064, 11333345, 42899208, -24764782, 7991324, 2890513, -35014184, -1073742, 6380174,
+-15377057, 33986612, 2586107, -4821638, 2656974, -14329085, 46782396, 12765180, -37497748, 36042292,
+-15126338, 1202054, 11097122, 13296682, 24004036, 11564736, -6496138, -23584740, -31542776, -11984569,
+-12652974, -2316061, -9691594, 19672560, -12074227, -21056614, 2321967, 5617281, 4238596, 7452305,
+-11850889, -11694659, -7019587, -7794292, -24879134, -10676215, -8485782, -17345226, -8276939, 5967320,
+-7326678, -16283832, -796180, 6072547, 10788421, -2739116, 5061082, 11581379, -704912, -8196945,
+-524523, -5055714, 6526740, 9182640, -13203803, 11374147, -6856916, -75699, 1708323, -6339372,
+12143483, 4469451, -17137456, 10294500, 1563905, -6318971, 12598750, -14621142, 5732708, -2942053,
+6140730, -3686693, -4031901, 2135136, -2385318, -1728188, 4412542, -2876018, -9834938, 4268124,
+-943282, 2702608, -460098, 7910793, -4518843, 10077067, -48168060, 27967216, 1482838, 16822314,
+28275918, -46601468, 10806675, 23665270, 5608691, 17605070, -17666812, 19401978, 5917928, -18395882,
+467078, -11671037, -33773476, 18435610, 10778220, 30854508, -16989816, -22963042, -7763691, 7080254,
+-4540854, -38720740, -18820546, 11635603, -2689187, 5558762, -16074452, -5242545, 12994960, -11060615,
+-5242545, -16644609, -3673808, 5789616, -18044768, 1722282, -39620000, -32942400, 10291279, -34258268,
+3132642, -35831300, -24816322, -17385490, 16927540, 33075006, 41113576, -9882183, 18356690, 22017076,
+10904385, 9443022, -15743203, 45414448, 46631532, -31768262, 31827856, -25029996, 16086263, 32539746,
+31214748, 37734508, 45349484, 31899258, -35837744, -25702694, -128849, 747861, 13743358, -8714489,
+-6777996, -21700322, -11811697, -32119912, 7164006, 26717380, -10709501, 6449967, 28170154, 13082470,
+-19063750, 21415244, -1190780, 7494718, -1971927, -3923453, 6353331, -6892349, 9669582, 7940321,
+-7016903, -8759049, 8362302, -6001143, 423054, 157303, -545998, 2252710, 945430, -11621645,
+10861435, -4984310, 5259725, 6076842, -4152697, 6554120, -8106214, -6119792, 5581310, -6688338,
+-8378408, -3837553, 3502009, -3409667, 2222109, -7765838, 386010, 2756295, 7190849, 10536092,
+-2408403, 5907191, -6914361, -61740, -1199907, 3149822, 2548526, -696858, -5332739, -7654706,
+-1719061, 1583232, 59855736, -43806520, -22310744, 23627688, -14063334, 22574348, -17590038, -19587198,
+6614787, -46321224, -2102387, 31189516, -7525857, 16045998, -26584774, -6502581, -10495826, 1090385,
+33244658, 10089415, 7392713, -5893769, 18253612, 5912023, 45426796, 11216844, 26527328, 1934346,
+-20720532, -19558744, 26444114, -12800613, 12239046, -202400, -34088620, 24647744, -30368104, 59077276,
+-43972948, 26917634, 24068996, -25196962, -21205328, -15617575, 21824340, -1597191, 22840100, -217433,
+3007014, -40284644, -21654688, 9465034, -19802484, 6644852, -12060805, 11933567, 6769942, 31076772,
+-18380850, -6260989, -7815230, -15108621, 42066520, 7867307, 4000225, -39049844, -12632036, 21144660,
+12473122, 13503914, 36450852, 23395224, 32240708, 37250788, -1030792, 16556025, -15396384, 49520972,
+3776350, -8047695, 18066244, -4109210, 37982544, 803696, -7573101, -7714298, 4608500, 26786100,
+-20157892, 13900662, -6368363, -2062658, 7983808, 5432060, 10452877, -6387153, 6832756, 12582644,
+-3192235, -4600984, 8508330, -1236951, -1241246, -811749, 2348273, 1517734, 4140349, -8909373,
+11946988, -6848326, -3785477, -1771674, 7341173, -10095858, 1123671, -7181186, 10008348, 18115636,
+-5921150, -4817880, -2296197, 12491912, 6161668, 13043816, -940061, -7330973, 5992016, 6351183,
+-1744294, 6295349, 4891968, -17339856, 2822867, 20202452, -2569464, -9381819, -90555624, 63006096,
+-39123392, -27054536, 505732, 13085692, 16056735, 3117073, -14629732, 49086108, 24639154, 7021735,
+-24630026, 16230145, -987306, 18423800, -23528368, -15963320, 12351252, 36740760, -42074572, 1902134,
+13424994, 4642323, -10477573, -6014565, -5443871, 1867237, -2296197, 9648107, 45913736, 3151432,
+-20999706, 31172872, -7412040, -29780766, -38834556, 36990944, 11855720, -4938139, 13523778, 8684961,
+30436822, -41394896, -4600984, -20970714, -6207302, 23929948, -17724256, 9426379, -20410758, 9913858,
+63308892, 4968741, -36581312, -40655088, -2747169, 19594178, 18846316, -16209743, 3712462, 31061740,
+-13225278, -59706488, 33872260, -20497732, -34300684, 15078020, 56489020, -39085276, 28323698, 39699992,
+13361643, -34152508, -28898688, -17497696, 13977434, 12493523, -12140799, 35634808, 17035988, -2115272,
+-1323387, 2245731, -29962766, -11215233, -21301428, 10913512, 9265318, 7158637, 9358734, 7378217,
+21533356, -10831908, -5659693, 4283693, -243203, -16786342, 14246943, -556735, 8806830, -4138201,
+6551436, -10788958, -3663070, -6480032, 9940702, 2019708, 1780264, 355409, 5850283, 16098611,
+-6680285, -30559766, 2173790, -15065672, -3292093, 9192841, -13297219, -8385387, 17052094, -16238734,
+-3970697, 159988, 8000987, -17396766, 886911, 51881056, 17078400, 3438658, -3800509, 8222715,
+14602352, -4653597, 6814503, -7860864, -69793, -6213744, 24371792, -27349814, -3067144, 16341814,
+-37976636, 12285754, -9263171, 2855080, -4440460, -10639708, 6797323, -2946348, -15461345, 41605884,
+-31753230, -8949101, 29557428, -18953154, -2886755, -5988795, 6513318, 29217052, 2288144, -28536836,
+39106216, -21139292, 13945222, 24340116, 10870562, -9120900, 2176475, -21499532, 5268851, -13032005,
+-10209674, 52329344, -12145631, -20900922, 6842957, -9778030, 12456479, -8168491, 13675713, 33658048,
+-18502720, 11120207, 25760676, -30289720, 13885092, 16430397, 7556458, 20572894, -23463944, -6224482,
+36018668, -24877524, -5452461, 10242423, -10050223, 34304976, -34092912, 5763309, 12319577, -15799574,
+11983496, 13089450, -32468342, 11528229, 27710056, -336618, -8313446, -1344325, 17828946, -3718368,
+-30491046, 24762634, 11771968, -13440563, 5092221, -7423314, 11009075, -4327717, -13645648, 16037945,
+900333, -3533148, -11864847, 11134166, 2124935, -15852724, 5657546, 10567767, -2188823, -5210869,
+2317135, 9766756, -1450088, -10211822, 10406169, 6777996, 1270237, -548682, 8699456, 1642288,
+3050501, -12132746, 15373299, -8501888, 16394964, -10829760, -29272350, -79017200, -124175024, 11244761,
+118921200, 9714142, 269223584, 277875808, 138346272, 290901344, 194031056, -40325984, -4212289, -64085208,
+-233616688, -205110992, -126789584, -238713216, -186827312, -54391464, -117102824, -98085240, 34651260, 58589796,
+-28486370, 15241765, 52328808, -40500468, -23728620, 73723648, 65488052, 7392176, 73199128, 124958856,
+41676752, 90340344, 171029360, 82029040, 43244416, 153177856, 128028680, 16895328, 91884384, 179509776,
+35380328, 42089604, 144956224, 62307092, -15951509, 102373232, 96621728, -9345312, 85252416, 110114912,
+-2163590, -81248432, -38059316, -190421136, -314287456, -279601824, -298102944, -455097952, -408842784, -382656896,
+-465287232, -452123680, -371037920, -334665984, -301154528, -174696720, -67630704, 58051316, 124479424, 239014400,
+356793664, 389540640, 434030592, 566548608, 559120448, 439674720, 481080352, 425180288, 175382848, 191153968,
+162276752, -8012799, -27868970, 46160160, -7788923, -74445744, 8225936, 47942036, -48818208, -20209968,
+42142756, -24434606, -94445256, -32204202, -26680336, -136161200, -96990024, -27353572, -107255536, -121290952,
+-10044318, -44222056, -122783992, -60032904, -56684980, -172022560, -163262448, -148197840, -265502000, -286903808,
+-239680656, -255543568, -275618784, -198210064, -169496048, -147489184, -107604504, -59253368, -28294170, -9793062,
+19046570, 90465432, 124541168, 193751344, 317908640, 359896800, 398432832, 465948128, 455149504, 400463840,
+340593056, 237868176, 100573640, 22897008, -27807228, -80320184, -93940064, -92386896, -93635656, -95720864,
+-89842128, -81698328, -87977576, -89980640, -85673320, -91633128, -100242392, -95832528, -92408368, -90067072,
+-79397304, -60669096, -45656040, -30153354, -9175661, 6481106, 13610214, 18625662, 19735912, 16254841,
+14357002, 10757819, 2500208, -4358855, -10530186, -18099530, -20423644, -20269024, -22377854, -21937620,
+-18388902, -17877264, -15977278, -10517838, -10438918, -11436961, -6577743, -4523138, -6694244, -2720862,
+-1421634, -3080565, 4247723, 11662984, 14088030, 21960704, 30303142, 34162708, 39686036, 45851996,
+46901580, 46369540, 48393008, 48171280, 45485852, 42730092, 38726648, 32052268, 25676926, 21016886,
+14746233, 8097624, 1962800, -5575405, -14497125, -21969294, -29196650, -34973920, -40098352, -43163348,
+-43328168, -41832980, -37799472, -30536680, -23768886, -17652316, -12147241, -7795903, -6109054, -4038880,
+-2404108, -1554778, -1009317, 251792, 747861, 1286880, 1642288, 2337536, 2318746, 2529199,
+2358474, 2331630, 1730335, 1425392, 785442, 409096, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
1612223,
-6466610, -3228742, 1795296, -682900, 381178, 286689, -2597382, -2976949, 1945083, -557809,
--2367601, -3052648, -1862405, 2657511, -272194, 3572339, 760746, -4572530, -4698694, -3358128,
-1378685, 1145146, 2444373, -382252, 2796561, -2152316, -389768, -4944581, -752693, -937377,
-1021665, 1834488, 1864016, 3619584, -1807644, -2455111, 1972464, 1091995, -2371896, -2442226,
-116501, 1673427, 813896, 4020626, -1534914, -1300301, 4581120, 1379758, 8586176, 3628711,
--2408940, -103079, -5284421, 78383, -6023692, -418222, -2253784, 4140885, 438624, 2212982,
-3047279, 1628330, 2921652, 1922535, 413391, -5075578, -563714, -2554969, 3482145, 5063230,
--3569655, -2561948, -1536525, -2081985, -2694555, -4355634, -986232, 1275605, -2556579, -2135136,
--902480, -3585761, 410706, -740882, -2407329, 743566, 125628, -39192, -1187022, 186831,
-221191, 1298691, -370978, 828929, -442382, 592169, -175020, -826781, 215822, 1013612,
-172872, -960462, -963146, -126165, 1770600, 383326, -346282, 257698, -524523, -600759,
--10133975, -10829223, -862752, -3104188, 414464, -2347737, -640487, 6029597, -1079647, 3242700,
--1491427, -2894808, -4006131, 737661, -830002, -4779762, 5510980, 1658394, 376883, 2940979,
-2801929, 4547834, 3200288, -299574, -3384434, 3160022, 733903, -4558034, -2016487, -2054605,
--1367947, 4078072, -1398012, -6951405, -2356863, -793495, 1450625, -2159832, -4525822, 149250,
--442919, 5257577, 777389, -40802, 1918777, -119185, 7090991, -1222455, 651761, -1566589,
--2814814, 3758, 3045132, 1377611, 830539, 2878702, -2641405, -4399657, -3148211, -633508,
-578747, -1027034, 125628, -3302830, -731218, 1730335, -1053878, 3444564, 1797981, -195421,
-639413, -3231426, -2750927, 5344550, 1214939, 2275796, 1551557, -952409, -313533, -4063039,
-287226, -2322504, 998043, -794032, 1035087, 1098975, 3144990, -330176, -1097364, 181999,
-674847, 417149, 114890, 106837, -945430, -750546, 383863, -347892, -813896, 1271847,
--643708, 649614, 974958, -927176, -271120, 727997, -274878, 1309965, -789737, 645856,
--628139, -468688, -1643899, 1539746, 6983080, -362925, 3574487, 2136746, 4774930, 5900748,
--1351841, 507343, 3607773, 3600793, 2382096, 6752226, 1357210, -2172180, 287763, 5913633,
-2068564, 2807835, 5101885, 6892349, 4528506, -1527935, -4701916, 3339874, 2258616, -2689723,
--4538707, 276489, -2647847, 1240172, 1745367, -1627793, -2259690, 2313914, 1813013, 4084514,
--2702608, -5495948, -2762201, -2361695, -3673271, -1248225, -4196720, 2551748, -5748277, 2505577,
-506269, 1362042, -2545305, 5532992, 4214974, -3860639, 4854387, 1848447, -694711, 1623498,
--3482145, -1088774, 3330210, 1207423, 1410897, 898722, 3975529, 1633698, 4910222, -2362769,
--264677, -281857, 1926830, 2863670, -1093606, 1918240, -2528125, 1334661, 1751273, 1582159,
-5395016, 239981, 4036733, 4522601, 2556043, -4036196, -740882, -590021, -1022739, 411780,
-2316061, -892279, 119185, -118112, 309775, 877247, -614180, 1023813, 1618129, -1037772,
--529355, 1547262, 108985, 75699, -16643, -784368, 432718, -346282, 184684, 1220308,
-1947768, 152471, -189515, 1023813, 796716, 374736, 506806, 441845, 533650, 10201,
--187368, 920734, 1097364, -859530, 615254, -251792, 892279, 1095754, 162135, 274341,
-1155346, 66035, 23085, -146566, 545461, 19514184, 16643, 17294760, 1235877, 11005317,
--2477123, -1729261, 2830384, -7968238, 8720931, -4900558, 5803575, 4524211, -3387119, 2726767,
--380105, 466004, -1640678, 2602213, 3361886, 4479114, 7020124, 1880122, 2144799, -147103,
-8281234, -9541807, 95563, -610959, 2181844, 4232691, -5227512, 2073396, 2158221, 1306207,
-3229816, 1945620, -4066260, 1991791, 7397545, -1293859, 2167348, -1155346, -1311576, -245887,
--5551245, 8457327, -268972, 921807, 6101538, -769873, 342524, 7846369, -11497091, 3219078,
--352187, 3497177, 9052717, 2839510, 2083059, 3279745, -1135482, -2478733, -1878511, 2335389,
-700617, 5021354, -1924145, 4140349, 1753957, -1303523, 695248, -3167539, -2243047, 505196,
--1088774, -4405563, -2983929, -4510790, 2574833, 4112968, -1227287, 1311039, -1086627, -2982855,
--264141, 1734630, 1552631, -5404143, -360240, 562641, -972810, 360240, -1257352, 161061,
--1341640, -2580739, -183610, -1693291, -1533840, -2127620, -37044, -2080912, -790811, -2018635,
--1700807, -24159, -877247, -1056562, -249108, 317291, 867583, -1066226, -112743, 385473,
--7794292, -9462887, -3825742, -1376537, -3612604, 7668127, 3205119, -6025839, 6728603, -896038,
--4990215, 1529545, 2904472, -2698313, -4563403, -4014721, -8633958, -4281009, 3663607, -5389647,
--8765491, 2514167, 3485366, 756988, -3251827, 6591164, 765578, 6098317, -420370, -1335735,
-3411278, 5781026, -8182450, -3824132, 2180233, -1771137, 1957431, -5270999, -425202, 1490354,
-1893007, -4490925, -8305930, -2275259, 2378875, -1346472, -1076426, 555661, 2641405, -765041,
-1452773, -2733747, 4766340, -6243272, -4737886, -1593433, -4641249, -1329829, -1274532, 1891396,
--3410741, 2610266, 5182952, -397821, 1198833, 1457605, 2475512, 5140539, -1956358, -922881,
--985695, -2056753, 5275294, -2099702, -9240622, -5834713, -3913789, 8914205, 137976, 5137318,
-2317672, 824097, 1359894, -558883, -209917, 4320200, -1428077, -917512, 1372779, -692564,
-679142, -1855963, -1165010, 1032403, -263067, 1130650, -279173, 690416, 1597728, 1203665,
-1494649, 65498, 1041530, -175020, 1533840, 1738388, 2735357, 1767379, 2172717, 571768,
-1452773, 1302449, 904091, 1353452, 1804960, -754841, 148713, -292058, -755914, 803696,
-1073205, -2150705, -8431558, -19400368, -1874753, 1404991, 147640, -6252936, -2855080, -7105487,
--1908039, -8392366, -9736691, -7508140, -1817308, -4958003, -10966662, -6773701, 2191507, 3419868,
--3078955, 6604049, 3561602, -2383170, 8019778, 1774358, 598611, 1341104, -11142219, -368293,
-1771674, 4206384, -3553549, -3047279, 6521908, 12868796, -9678172, 3487514, -2902324, -464930,
--8541079, -716186, -176094, -4288525, -5556614, -3950833, -4740570, -2455648, 2685965, 9446781,
--4487704, 3555696, 6280853, 5784247, -2034741, 671089, -2153389, -1813013, -8779450, -4285304,
-4830765, -3119220, 974421, -2978560, 2386391, 1328756, -1056025, -319438, -4152697, -3335579,
-661425, -1200980, 1682554, -10275709, -10978473, -1167157, -1694902, -4670240, -130997, 3449933,
--5453535, -4116189, -4667556, -7915625, 5485747, -578210, -1296543, 2142652, -421444, 1920387,
-3578245, 1272384, 1937030, 1162862, 2596308, -823560, 370441, 426276, 501437, 883153,
--825707, -689342, 32212, 819802, 928787, -687732, 738734, -993748, -1983201, 990527,
-608812, -758599, 2304787, 1076963, 35970, 912681, -1600949, -1619203, -547071, -872952,
--794569, -2159295, -448824, -1709397, -12221329, -2243047, -14688251, -3126736, -10445360, -1095217,
-1808181, 2760053, 11057393, -6847789, 2369211, 3156264, -6205691, -2606508, 8870718, 1089848,
--2763275, 1265405, -7548405, 6862821, -9634685, -3004867, 4104378, 2770254, -1121523, 1756105,
--2009508, 3245385, -4187593, -7004555, 354335, 3585761, 2694018, -5575942, 1450625, 6547678,
--6729677, -8230231, 6533182, -5571110, 4219269, -3973382, 2295660, -38118, -6066642, -7591892,
--4888210, 2233920, -441308, 3014530, -4166655, -3805341, -9990631, 5268315, -7198902, -3101503,
-3704946, 8876624, -1268089, -1687385, -13036836, -10038949, -3521873, -3496640, 4719096, -1247688,
--7693360, -1085016, 265214, -4078608, -1167694, -8904004, 5883032, 2464238, 7453916, 9392020,
-4750234, 504122, 3902515, 8390755, -821949, -1782411, -699543, -2405182, -8351564, 580357,
-473520, 1892470, 4269198, -1668595, 839666, 117038, -3366181, -1629403, 2872260, 3011846,
-2602213, -1985886, 691490, 1258425, 910533, 1131187, 1070521, 515396, 2154463, 2391223,
-1414118, -343061, 922344, -271120, 773094, 1757715, 450972, 778463, -91268, -449361,
--643708, 83752, -1557463, -545998, 1469953, 7139310, 3801583, 20806970, 10125385, 13468481,
--4136054, -548145, -181999, -20591146, 1123134, 8853001, -4029216, -1614908, 752156, 12947716,
--2150168, 7495255, -1490891, 7179038, 4000762, 8870718, 12538083, 1594507, 8389145, -2593087,
-7268696, -987306, 13418552, 7102802, -170188, 7597261, 6196027, -2258079, 5919002, 3522410,
-5119601, -4006131, -3150359, -10806675, -601295, 7655243, 1534914, 972273, -2451890, -4042101,
--3162170, -3563212, 18873696, -12097312, 4861366, 5715528, 3307125, 1627793, -7153268, -9600326,
--2388539, -1427540, -376883, -16634945, -8184060, -8548596, 478889, -387621, 5018133, -540092,
-4466766, 5904507, 10728828, 1964411, -2671470, 3592740, -6634651, 1843078, -4846334, 1801739,
-4198331, 2340757, 6864432, -4575751, -5134634, 24427090, 3420942, 4440460, 3167002, 8296803,
--5788542, -3024731, 5295158, -597000, -64961, 969052, 1795296, 4795331, -2297808, -356482,
-981937, 2764348, 708133, -2516314, 4715337, 180389, -1015760, 114354, -457414, -2474438,
--2245731, -1081258, -2506114, 1074, -933619, 1135482, 3402688, -300648, -245350, -3650185,
--689342, 1814087, -323196, 224949, 418222, 2885144, -1410897, -426276, 1009317, 1090922,
--3107946, -2690260, 32094144, 3280281, 4908074, 3449396, -1850594, -13100724, 8880382, 9079024,
--5037460, 3891240, 4285841, -7915625, -958315, 7453379, 4494147, -13829258, 3604015, -3852049,
--6885370, -266825, 4136591, 985695, -15569, -355945, 6023692, -1945083, 3444027, -10785737,
-4394826, -1192390, 4314832, 2324114, -1842004, 7524783, -10285910, -4567161, -10159208, 8839043,
-4328254, 14477261, 7303055, -135828, 3225521, -11904039, -9127, 3360275, 3856344, 3507378,
-874026, 1991791, -3044595, 3275986, 10545218, 14001057, 6175626, -6506339, -3462818, -1540283,
--2714419, 5155572, 7190312, -5030481, 4278325, 7784092, 2478196, -10951093, -21386790, -10675678,
-4358318, 9298604, -3992172, 2732136, -765041, -2054068, -32212, 9709310, 1835562, -8158291,
-13287555, 5920613, -15329812, 640487, -1817845, -5012764, -1695975, -2403034, 12885, 5260261,
-2260764, -4207458, -2183454, 3089155, 5741835, -2609193, 4369593, 1066763, -3559991, -980863,
-579284, 86973, -661962, 253940, -1766842, -1347009, 1275068, 308164, -1573032, -1744831,
-102542, -1139777, -2616709, 1578937, -914828, -1413581, 738734, 2682207, -2935610, -4679367,
--41339, -718870, -6808060, -1216013, 1686312, -42413, -4116726, -526670, -1529008, 1280437,
-954557, 2109366, 1677722, -678605, -748398, -1305133, -3361886, -19872814, 6162741, 9026948,
--10209674, 6508486, 11719892, -28165858, 6300717, 927176, 6397354, -10670309, 16034187, -22277996,
-78920, -1837709, -1531156, -2517925, -6138582, -8581882, -1095754, 7632157, 1077500, -38118,
--3932580, 5297306, -600759, -2973728, 4454418, 9483288, -6191196, 6770479, -1012002, 4013110,
-2402497, 6346351, 10379862, -2584497, 2926483, -13345537, -6297496, -2947958, -4697084, -12174622,
-1548873, -4584341, -7499013, 11223286, -10475962, -3815005, -4800700, -6039261, 8094403, -9120363,
-5243618, -3336116, 8310225, -4468914, 9075266, -11853036, -3041374, 1285806, 10934987, -18999862,
--6821482, 492848, 255014, -3541738, 7737921, -9944460, -18856518, 3954591, -16528645, 8318278,
--5753109, -131533, -17293686, -7043747, 19133006, 10509785, -13996762, -12076911, -9851581, 412317,
-5949604, -2658048, -6152004, 12115566, 4599910, -2338610, -2473901, -4793184, -761283, 4647155,
--4314832, 5009543, -420907, -3764539, 841277, -2918430, 2080912, 4205847, -2432562, 1768453,
-3382287, 2101850, -215822, 4917201, -4672388, 4633196, -1196148, 4055523, -5463736, -3085934,
-994285, 202937, 5982353, 1796907, 3655554, -2134599, -3193308, 1764158, -6287832, -790811,
--1208496, 2523830, -1194538, -1457605, -1956895, -14485851, -6203007, 18226768, 779000, -15046881,
-14167486, -6634114, 950798, -15688442, 2420751, 6213207, -13826573, -3382824, -12355547, -90194,
-795643, -4169876, -3425237, 12069932, 1865090, -8178155, 2058900, -17520246, 10537702, 16695075,
--5390721, 6972880, 11851425, -882616, -2410014, 1459752, 1447941, 6941204, 1194001, 1607928,
-3652333, -9789304, -694711, -11253351, -11493869, -4713190, 4847408, 6839199, -348429, -13537737,
-2682207, 3561065, 6678674, 14492830, -14835891, 21745420, -18009334, 806380, -3616363, -3111704,
--8700530, -16712255, -22548578, -8738648, -2567317, 5761699, -1695438, 950798, 3337727, -149787,
-15909633, 7533910, -16286516, -2528125, -314606, 10421738, -11250130, 769873, -22692460, 4273493,
-17762374, -15841450, -6208375, 2266669, -154082, 4459250, 24883430, 394063, -3261491, 1316944,
-12678207, -8572218, 3409130, 4652524, -1860258, -894427, -148713, -308164, 5653251, -1816771,
--1276142, -4851166, 8223789, -1750199, 2433099, 854699, 1461900, 2079301, 5983427, -4123706,
--1051730, 6355478, -4574140, -6436009, 5350456, 291521, 2618320, 3631395, 2040646, 6576132,
--5076115, 3080029, 3626563, -2229088, 9264244, 3213173, 5669894, 2112587, -5568425, -1998234,
--940598, -932008, -985158, 2724083, -9254044, -18939732, 22632868, 9592809, -11002632, 14606647,
-14726906, 20782274, -7618735, -7235946, 15269146, -2277943, -2940979, 5260798, 6829535, 2662880,
-3304977, -20753282, -2127083, 32749, 249108, 1117765, -2265059, 8763344, 17120276, 1705102,
-1246077, -308164, 898185, 15681462, 4254702, -1118302, -3341485, 4009352, 3560528, -2469606,
-1891396, -8961986, -1778653, 13647259, -13452911, -6584185, -11587822, 15253576, -13880261, 7009924,
--5625334, 4493610, -2938831, 3627100, -11128797, 2582349, 17052630, -11143293, 989990, -29573534,
--1211181, -10438381, 906775, -27597850, -1114544, -1341640, -8410083, -5913633, 22652194, -24172612,
-4146791, -6518150, -8915278, 6532109, -8074002, -18873160, -13142600, 1861332, 1112397, 3930432,
--9248138, -12694313, 7363722, 643708, 1534377, 8509404, -13991393, 10610180, -10144176, -4781909,
--4291746, 2551748, 487479, 3057480, -1701344, -3561602, 1003949, -2007360, 3096135, 6626598,
-3960497, 2466385, 1985886, 1826435, 1869921, -665183, 7286412, 1400696, -1249836, 5388574,
-5613523, 2098629, -2925947, -261456, -4323959, 7183870, 2655901, 5787469, -2688113, 5939940,
-5373004, 7762080, 3913252, -2129767, -3907883, 6535330, 1437740, 5661841, 1393180, 1566053,
-1596117, 1727114, 19176492, 6420976, -2261837, 3851512, -9249212, -10238128, -7961796, 18200998,
--16253767, -20737712, 10049150, -19313394, 7305740, 498753, 5428839, -8768176, -1830730, -10621991,
--4179540, -8256538, 4082903, 9239548, 6762426, -15651398, 18126910, 1924682, 6471442, 1386201,
-8835285, -2106145, 8492761, 1779190, -3495030, 5032628, 2128693, 6750615, 5021891, -11955041,
-4889821, -3693135, 3488587, -2650532, -4170950, -3888556, -8022462, 7374459, 8369818, 8284992,
--1424855, 15384573, 18891950, 7205345, 2621004, 8208220, 19568408, 9285719, 21328270, 13302587,
-15937013, -17258252, -16917876, 3168612, -3315715, -4904316, 1476932, -8857833, 7240241, 4992363,
-3475166, 15797427, -3653407, -10755135, -8609262, -8042863, 2002529, -4014184, -34492344, -15400142,
--13354127, -5242545, -6882148, -3986804, -5140539, -10183367, 467078, -6267968, -5556614, 1931125,
--5579163, -2152316, -8633421, 142808, 543850, -1753420, -12350715, 4756677, 44023, 216896,
--9278740, 2448668, 3393024, 3227668, 1086090, 10476499, -6958921, -3059627, 2270964, 805843,
--743566, 4089346, -4925791, -4606353, -868120, 7310571, -759136, 5209796, 6406481, -1764695,
--8003135, -7583839, -856846, 7631083, 625992, -6155762, 813359, -1673964, -3918621, -3335579,
--1256815, 40265, -6014565, -5513665, 5204427, 15183246, 10672994, -33934000, -24689082, -7968775,
--109522, 10900627, -4420058, -1003949, -26631482, 3589519, -13852343, 9830643, -1751273, 13093745,
--11207717, -3046743, -13339095, 2143189, 11223823, -5486284, 3402688, -7949985, 756988, -18326088,
--4856535, -1074279, 1467268, 13240847, 17647484, 410706, -15903727, -11494406, -5040144, 1453846,
--4098473, 4918275, -18311594, -5920076, -2394981, -4981089, -10235444, -2619930, -4651987, 12378633,
-18357228, 12118250, 4613869, 7333657, 7757248, -8971113, 30573724, 18295486, -23917600, -20952462,
-22481470, -17770964, -10063645, 3282966, 2566780, -17251810, 16640314, 915365, -51509544, 13649943,
-32451700, -22568442, 22378928, 29700236, -9886478, -3249143, 16003048, -18796924, -12301860, 6069863,
--10111964, -11811160, 13569412, -22769232, -6847789, 2757369, 547608, 1137093, -2158221, 8141648,
--5904507, 3396246, 1234266, -6156836, 11984032, 5968394, -383863, -7784628, 9243843, -5949067,
-7133404, -6322729, 8675834, 751619, 1798518, 8638253, -6810208, -7794292, 2305324, -7202124,
--4345433, -483721, 752156, -4845260, -8462159, 3860102, -19864224, -162672, 9142912, -7486665,
-5382668, -2401424, 2700998, -8473434, 193810, 4405026, -3901441, 2834142, 17825724, -8088497,
--7478075, 17395154, -12688944, -2272038, 14743549, -10485089, -6685117, 11100343, 6804839, 7299834,
--1808181, -10803990, -8680666, 10267119, -8159364, -710817, 3040300, -15282567, 9983651, 8198556,
--6197638, -4968741, -11953968, 377420, -7385197, 10405095, -16781510, 1343251, 6473053, -826781,
--7960185, -17348446, -3879966, -7502771, -1649804, -13399761, 18434536, -17868674, 3198677, -6438693,
-4683125, -25332254, 26272852, 5082020, 2690260, -10383083, 6049999, 4378183, 1226213, 2496987,
--4595615, -19945828, -3388192, -8563091, -12773233, -17110612, -6123550, -4213900, -17022030, -6418829,
--694711, 11978127, 5564667, -15358266, -13437879, 8502962, -3441880, -19525458, -8371965, 5000416,
-16325171, 16270947, 16496433, 26306138, -4894115, -17540110, -16801912, -889595, 11615739, 20544440,
-9290551, 4570919, -20612084, 11888469, 4500052, 20061256, 13943074, 9209484, 6957847, 222801,
-1921998, 11909944, -2613488, 1046361, 2234994, 3609920, 4186519, 3997004, 5819144, 14272176,
-4589710, 1264868, 5007395, -97711, 4686346, 1540820, 1015760, 8963060, -10391673, -7275138,
--2606508, 4189741, -5160403, 3728569, -2138894, 11230803, 614717, 2087891, -5522791, -6864432,
-834297, 6660958, -5820755, -414464, 7640747, -5847598, -128312, 3757560, -10388989, 13245142,
-7205345, -2027761, 3352222, -200253, 113280, -2824478, 7601555, -1976222, 12601971, 32409824,
--28541668, -1304060, -11122355, -15807627, -8764955, 14567455, -7818451, -9408126, 8109435, 18887656,
-12588012, -15023796, 9783936, -15744813, 11602854, 136902, -1341640, -7874823, -11009612, -9669045,
-2294050, 1594507, -17639430, 10924249, 2238752, -2123325, -6486475, -8138426, 13123273, -17972290,
--491237, 18505404, 22681722, -20543366, -1018981, -4489852, -12663711, -17294760, 18671296, 3668976,
-11975979, -4112968, 1723356, -2101313, 11912629, -5043902, 912681, -14912663, 20921322, 16695075,
--24896852, -31287226, -6256694, -153008, -9868761, 510027, -7274601, 1832340, -15371151, 16030965,
--19838454, -18110266, -6327561, 2379949, 14082661, -7762080, 20298016, 1596654, -6958921, -7384660,
--5063767, -13160317, 12434467, 8617852, -3131568, 7207492, 6255620, -10415833, -9708774, -8906688,
-15737297, 3596498, -10970957, 961536, 4549981, 4789426, -16456167, 8103530, 6783364, 2764885,
--32749, -5024575, 2347737, -5461051, -14651207, 2726231, -1845762, -3018288, -1617055, 1126355,
--4373888, -5974837, -208306, -2375654, 7476465, -4263829, -1966558, 3943854, -1897839, -7283728,
-5902359, -7261716, -2200634, -12410308, 6522982, 977642, -1672890, 1837172, -5377836, 10452340,
--644245, 1531156, 12181064, 8410620, -3339874, -4253092, 5868536, 2983929, -4150549, 2053531,
--3813394, -3813931, -732829, 2443837, -2261300, -834834, -44958108, 66379256, -45756436, -11115912,
-11451993, 36049272, 28450938, -10239202, -12060805, 2322504, 1173600, 18792092, 6289443, -23874650,
-6811282, -4838818, -9018358, 2792803, 9458592, 264677, -18697066, -15662672, 8015483, 7335268,
-10771241, -5773510, 13448079, 3631932, 15855946, -1318018, -6065031, 12471511, -1953673, -12558484,
-1763084, 15391015, -1136019, -16779364, 8019778, 20331838, -18895708, 7624641, -20262046, 8182450,
--25473988, -15961172, 27009438, 26002806, 11554536, 33753076, -6911676, 40223980, 14325863, 15724412,
-20919712, -35763120, 29955250, 10746545, 11822971, 14401025, 2868501, -17287780, 2381023, 33985540,
-37830608, -121870, -43876848, 21655762, 687195, 9400610, -1989107, 1352378, -9938017, -32384590,
-6119255, -5119601, 6885370, -5783174, 15715285, -18076444, -20195474, -13566728, 2386391, -5680631,
--9346386, 10848014, 3687230, -13827110, -15415174, -11531450, -9262634, -1301375, -2798171, 8070244,
--659278, -11830487, 9128416, 2150168, -3413962, 780073, 4293357, -5786932, -3382287, 6241661,
--11010686, -4276177, -7645579, 6447283, 7425462, -8680129, 2312840, -23663122, 165893, 1394791,
-1021129, -4448513, -4752382, -10563472, -8354785, 5684389, 3288871, 5458367, 8143795, -7747048,
-463856, 3445638, 1960653, -7590281, -107374, 2158221, -412854, -6195491, -1049583, -1458141,
-43478492, -1488206, -51951924, -26083336, -30622580, -11529840, 176094, 17238924, -44283260, -9762998,
-6870337, -20462834, -23801636, -21463026, -23757074, -3673808, 26074210, 13571023, -10429254, 12708271,
-5089000, -11830487, 13431973, -14979772, -3404299, 6457484, 8876624, -29897268, 15049565, -14632417,
-8562017, -5762236, -24175834, 6852084, 7461432, 3877819, 3933116, -9878425, -34291556, 1533303,
-7043747, 7605850, 314069, 4415764, -14250165, -27917, -1240709, 31250718, -4815195, -51019916,
--23142894, -5416491, -42530376, 9819906, -13013751, -10705743, -20513838, -9030169, -30625264, -29848948,
--36822364, -3520263, 38703560, 5462662, -24538222, 11430519, 314069, -2577517, -13812615, -19236084,
-8110509, 16089484, 12120398, 6737193, -7363185, -31237298, -22405234, -31448288, 4626217, 3589519,
--1122597, 11360188, -16655346, -19997904, -2852932, -7352447, -20572356, 4575214, 11827803, 1717450,
-4325032, 19841676, -3564823, -4037806, -3383897, 1353452, -7092065, -3886946, 8834211, 13552769,
-14770929, 9987410, -4080219, 700617, 2314987, -6136972, 13686450, -5573794, 19969988, -6993281,
-9386114, -9498857, -2633352, 20282446, 6743099, 2796561, -70330, -7915625, 8012262, 1753957,
--9828496, 4480188, -8399882, -10835666, 3183108, 3261491, -6653441, -6504191, 6966974, 386547,
-9776956, 2112050, 6685654, -3590056, 2992519, 2758980, 1052267, 28945396, -3593814, 23230404,
-29528438, -24960202, -31704912, -33000382, 8519068, 11777337, -45669460, -26124138, 713501, 1443646,
-13498008, -52762600, 5452461, 12355547, 36477156, -42252276, 4806606, 7064148, -5497558, 23477902,
--13675176, 41055056, -2478196, 3707094, 12119324, 15998216, -15714748, -32990180, 19033148, 23435490,
-5139465, 29625074, 5483063, -3685619, -11307575, -24930674, 38428684, -17249126, 36402532, 14542222,
--2981244, 10904922, -15778099, 19877646, 19324668, -13632763, 14297409, 7490423, -38726108, 28065464,
-28230284, -3553012, -19893214, 3759707, -1240172, 1294933, -7213398, 52978960, -1282048, -30678952,
--17511118, 6046777, -44637596, -58034136, 7648263, 72688024, 15753403, -5093831, -46707232, -11740293,
--8016020, 49543520, -34178812, -21665962, -81878720, -11784317, -15246597, -19189914, -15614890, 29994978,
-31680752, -31862214, -12701292, 10537165, 4115116, -5814312, 12823162, -5594732, -10388452, -10019622,
-11004780, 4529580, 3359201, -4054449, 10780905, -11458436, -4211216, 9788230, 4202089, -652835,
--760209, -8557722, 3829500, -5683316, 20831128, -5798206, -11809013, -9440875, -18402862, -6157910,
-13642964, 15742666, 42696808, 16344498, -5192616, -32828046, -45671072, -21268678, 370978, 18526342,
-14706505, -12135430, -18372796, -9210557, -7712688, 11208791, 19205484, 4272956, 787053, -2496987,
--7282654, -5946382, -5589900, -1055488, -2608656, -2786897, 2295660, -4957466, 1655710, 656056,
-1206886, -3776350, -786516, -2832531, -2594697, -3693135, 2165737, -2356863, 3976066, -72847480,
-21467320, 34605624, -46181100, -4420595, 26592290, -11473468, -20524574, 18532784, -19784230, -11276437,
-2001455, -15416785, 25052008, -8472897, -10763188, -4467840, 13462038, 44313860, -6455336, -20653960,
--22404696, 8089034, 21743808, 12562779, -19740744, -3332895, 24686936, 511101, -17842368, 5937793,
--15870441, 40999220, -18116172, -44704168, 15876883, -7628399, 21758304, -29985314, -28885802, 29368450,
--1887101, -38337416, -19827716, -36632312, 47774532, 22690312, 13242458, -49919868, 9345849, 20463372,
--34442416, 1966558, -24604258, -19112068, 20002200, -16998944, 22881438, -14051522, -29857538, -6919729,
--7027640, -4553739, 10925860, 3582540, -18469970, 58872728, -6772090, 26100516, 27261768, 16291348,
--7556995, 6190122, -12910135, 33123324, 8623757, -8361228, 4417374, 14079440, 23446764, -5710159,
--49555868, -3381750, 16030965, -4955319, 26846230, -11165304, 9546639, -3992172, 1118302, 10909754,
-3062312, 6657736, 13898514, 8023536, 16066399, -3716221, 5502390, 8317204, 1503239, -16024523,
-19671488, -7948374, 529355, 3026341, -9214852, 5005248, 1402844, -2511482, 13804025, -5997385,
-1394791, 19404126, 205622, 10832981, -9054328, -6047314, 10851772, -2401424, -6793028, -10078141,
-932008, 1428614, 2826625, -3336653, 2882460, 6082748, -1782411, 4168803, 5487895, -2671470,
-6606197, 1219771, -6497212, 4431870, 2718178, 1354525, -351114, 52712672, 10596221, 22933514,
--2121177, 5672041, 8130373, -18933826, 8221641, 18505404, -15569, -21816286, -11954505, -16144782,
--6878390, -21869436, -21465710, 2815888, -17151416, 25031606, 7857643, -5648419, -18215494, -8495982,
--6127308, 13546864, -4337917, -20687784, -17398912, 4495220, 4272956, 12074764, 4329327, -4466229,
-5344013, -18032958, -55507084, 2434173, 66901632, -1849520, -48987324, -7813620, 31736050, 9007083,
-5010616, -793495, -21393768, -26300770, -15995532, 6115497, -1823751, -24325084, 8820252, -49027052,
--8988830, 45591616, 13193603, 58618252, -7893613, -23008140, -7167227, -5069135, 15479599, 3490198,
--629750, -31842888, -16249472, -15190762, -2345052, 37121940, -5171141, -8990440, 12001212, 15074261,
-2214593, -19654308, -30964030, -2165201, 12284680, -1312113, -15462419, -3859565, 8418136, -6426345,
--5932424, -10030359, 18400176, 19659676, -10042170, -5128728, -9241696, 8013872, 11392401, -5333813,
-1494112, -2028298, -1792075, -3641596, -14894947, 1641214, 8225399, -8904541, 2024003, -2132988,
-485868, -7977365, -2867965, -3354370, -5417565, -6056978, -6404870, -1766842, 26103738, -13047574,
--23085, -5141613, 1265942, 14535780, -9999221, -1386201, -2991445, 4575214, -860067, 4159139,
--7723425, -23335632, -77349680, -119533232, 28228672, 106943072, 33788508, 261635984, 246497840, 109606488,
-254168112, 107329088, -46032924, -778463, -76384920, -209089744, -114103856, -109488384, -214237264, -156017904,
--89550608, -134979552, -90709176, 19754166, -7822746, -43185360, 51223928, 47837344, -150324, 51286740,
-139244992, 58450748, 26275000, 133257264, 119276072, 40073120, 142080736, 173792096, -214212, 102969696,
-175247008, 66381404, 70100848, 178624464, 106760536, -14097156, 139450064, 97872640, -37932616, 54760832,
-110939544, -49594524, -87913152, -19827180, -185880272, -312124928, -302142912, -335987232, -537495296, -465254464,
--383784864, -497411424, -426440864, -274030720, -324816576, -248250720, -68639480, -22129282, 105247640, 195800576,
-322770016, 432374880, 471657728, 550104256, 597494912, 558134784, 528687936, 560846464, 426725408, 338336576,
-401393696, 218952608, 35086124, 50626928, -80950472, -296396224, -248829472, -184104848, -265709760, -271743104,
--169476192, -192939056, -243306672, -178327584, -162139840, -228902960, -205345072, -133903120, -170331424, -182976352,
--59811716, -57549340, -107942192, -11280195, 41246720, -30848066, 5945846, 40933724, -58194660, -75332656,
--71488656, -156803888, -173153216, -121218472, -91039888, -66340064, 22643068, 106434656, 144649136, 204889264,
-262537392, 274130592, 290806336, 321578176, 305036096, 277293280, 288833856, 261546864, 194545920, 133432824,
-35226248, -51449412, -132254928, -192621232, -215822640, -227415840, -202896944, -155451504, -136138656, -114747032,
--93809064, -80983216, -71295384, -53454628, -41395968, -38137700, -37186900, -25935160, -19567872, -15622407,
--5378910, 8182450, 20080582, 35090956, 36464808, 37493992, 43423192, 42872364, 35161288, 37822556,
-31475130, 16682190, 1272384, -12828530, -27831924, -33510408, -40012452, -43001748, -40049496, -37157372,
--36057324, -25798258, -20160040, -12216498, 435939, 10737418, 15800111, 24293408, 29350196, 33176474,
-37527812, 39187820, 40920836, 42649024, 42935716, 42518564, 39662412, 39084204, 36958192, 34553548,
-31209380, 29785598, 24390582, 18534394, 11311870, 5504538, -2037425, -8892193, -15265924, -22412750,
--31423054, -37441916, -43879532, -47260748, -50237696, -51478940, -51516524, -49303004, -47184512, -42711304,
--38785164, -32626182, -25567940, -15730855, -8205535, 2355253, 10057740, 17258252, 23497766, 29421600,
-30994632, 33355252, 32648730, 30091078, 25649008, 22355304, 16324097, 11494406, 7216619, 4673462,
-1080721, 195421, -782221, -639950, -1612760, -823023, -1232119, -561567, -988916, 27917,
--376347, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+6466610, -3228742, 1795296, -682900, 381178, 286689, -2597382, -2976949, 1945083, -557809,
+-2367601, -3052648, -1862405, 2657511, -272194, 3572339, 760746, -4572530, -4698694, -3358128,
+1378685, 1145146, 2444373, -382252, 2796561, -2152316, -389768, -4944581, -752693, -937377,
+1021665, 1834488, 1864016, 3619584, -1807644, -2455111, 1972464, 1091995, -2371896, -2442226,
+116501, 1673427, 813896, 4020626, -1534914, -1300301, 4581120, 1379758, 8586176, 3628711,
+-2408940, -103079, -5284421, 78383, -6023692, -418222, -2253784, 4140885, 438624, 2212982,
+3047279, 1628330, 2921652, 1922535, 413391, -5075578, -563714, -2554969, 3482145, 5063230,
+-3569655, -2561948, -1536525, -2081985, -2694555, -4355634, -986232, 1275605, -2556579, -2135136,
+-902480, -3585761, 410706, -740882, -2407329, 743566, 125628, -39192, -1187022, 186831,
+221191, 1298691, -370978, 828929, -442382, 592169, -175020, -826781, 215822, 1013612,
+172872, -960462, -963146, -126165, 1770600, 383326, -346282, 257698, -524523, -600759,
+-10133975, -10829223, -862752, -3104188, 414464, -2347737, -640487, 6029597, -1079647, 3242700,
+-1491427, -2894808, -4006131, 737661, -830002, -4779762, 5510980, 1658394, 376883, 2940979,
+2801929, 4547834, 3200288, -299574, -3384434, 3160022, 733903, -4558034, -2016487, -2054605,
+-1367947, 4078072, -1398012, -6951405, -2356863, -793495, 1450625, -2159832, -4525822, 149250,
+-442919, 5257577, 777389, -40802, 1918777, -119185, 7090991, -1222455, 651761, -1566589,
+-2814814, 3758, 3045132, 1377611, 830539, 2878702, -2641405, -4399657, -3148211, -633508,
+578747, -1027034, 125628, -3302830, -731218, 1730335, -1053878, 3444564, 1797981, -195421,
+639413, -3231426, -2750927, 5344550, 1214939, 2275796, 1551557, -952409, -313533, -4063039,
+287226, -2322504, 998043, -794032, 1035087, 1098975, 3144990, -330176, -1097364, 181999,
+674847, 417149, 114890, 106837, -945430, -750546, 383863, -347892, -813896, 1271847,
+-643708, 649614, 974958, -927176, -271120, 727997, -274878, 1309965, -789737, 645856,
+-628139, -468688, -1643899, 1539746, 6983080, -362925, 3574487, 2136746, 4774930, 5900748,
+-1351841, 507343, 3607773, 3600793, 2382096, 6752226, 1357210, -2172180, 287763, 5913633,
+2068564, 2807835, 5101885, 6892349, 4528506, -1527935, -4701916, 3339874, 2258616, -2689723,
+-4538707, 276489, -2647847, 1240172, 1745367, -1627793, -2259690, 2313914, 1813013, 4084514,
+-2702608, -5495948, -2762201, -2361695, -3673271, -1248225, -4196720, 2551748, -5748277, 2505577,
+506269, 1362042, -2545305, 5532992, 4214974, -3860639, 4854387, 1848447, -694711, 1623498,
+-3482145, -1088774, 3330210, 1207423, 1410897, 898722, 3975529, 1633698, 4910222, -2362769,
+-264677, -281857, 1926830, 2863670, -1093606, 1918240, -2528125, 1334661, 1751273, 1582159,
+5395016, 239981, 4036733, 4522601, 2556043, -4036196, -740882, -590021, -1022739, 411780,
+2316061, -892279, 119185, -118112, 309775, 877247, -614180, 1023813, 1618129, -1037772,
+-529355, 1547262, 108985, 75699, -16643, -784368, 432718, -346282, 184684, 1220308,
+1947768, 152471, -189515, 1023813, 796716, 374736, 506806, 441845, 533650, 10201,
+-187368, 920734, 1097364, -859530, 615254, -251792, 892279, 1095754, 162135, 274341,
+1155346, 66035, 23085, -146566, 545461, 19514184, 16643, 17294760, 1235877, 11005317,
+-2477123, -1729261, 2830384, -7968238, 8720931, -4900558, 5803575, 4524211, -3387119, 2726767,
+-380105, 466004, -1640678, 2602213, 3361886, 4479114, 7020124, 1880122, 2144799, -147103,
+8281234, -9541807, 95563, -610959, 2181844, 4232691, -5227512, 2073396, 2158221, 1306207,
+3229816, 1945620, -4066260, 1991791, 7397545, -1293859, 2167348, -1155346, -1311576, -245887,
+-5551245, 8457327, -268972, 921807, 6101538, -769873, 342524, 7846369, -11497091, 3219078,
+-352187, 3497177, 9052717, 2839510, 2083059, 3279745, -1135482, -2478733, -1878511, 2335389,
+700617, 5021354, -1924145, 4140349, 1753957, -1303523, 695248, -3167539, -2243047, 505196,
+-1088774, -4405563, -2983929, -4510790, 2574833, 4112968, -1227287, 1311039, -1086627, -2982855,
+-264141, 1734630, 1552631, -5404143, -360240, 562641, -972810, 360240, -1257352, 161061,
+-1341640, -2580739, -183610, -1693291, -1533840, -2127620, -37044, -2080912, -790811, -2018635,
+-1700807, -24159, -877247, -1056562, -249108, 317291, 867583, -1066226, -112743, 385473,
+-7794292, -9462887, -3825742, -1376537, -3612604, 7668127, 3205119, -6025839, 6728603, -896038,
+-4990215, 1529545, 2904472, -2698313, -4563403, -4014721, -8633958, -4281009, 3663607, -5389647,
+-8765491, 2514167, 3485366, 756988, -3251827, 6591164, 765578, 6098317, -420370, -1335735,
+3411278, 5781026, -8182450, -3824132, 2180233, -1771137, 1957431, -5270999, -425202, 1490354,
+1893007, -4490925, -8305930, -2275259, 2378875, -1346472, -1076426, 555661, 2641405, -765041,
+1452773, -2733747, 4766340, -6243272, -4737886, -1593433, -4641249, -1329829, -1274532, 1891396,
+-3410741, 2610266, 5182952, -397821, 1198833, 1457605, 2475512, 5140539, -1956358, -922881,
+-985695, -2056753, 5275294, -2099702, -9240622, -5834713, -3913789, 8914205, 137976, 5137318,
+2317672, 824097, 1359894, -558883, -209917, 4320200, -1428077, -917512, 1372779, -692564,
+679142, -1855963, -1165010, 1032403, -263067, 1130650, -279173, 690416, 1597728, 1203665,
+1494649, 65498, 1041530, -175020, 1533840, 1738388, 2735357, 1767379, 2172717, 571768,
+1452773, 1302449, 904091, 1353452, 1804960, -754841, 148713, -292058, -755914, 803696,
+1073205, -2150705, -8431558, -19400368, -1874753, 1404991, 147640, -6252936, -2855080, -7105487,
+-1908039, -8392366, -9736691, -7508140, -1817308, -4958003, -10966662, -6773701, 2191507, 3419868,
+-3078955, 6604049, 3561602, -2383170, 8019778, 1774358, 598611, 1341104, -11142219, -368293,
+1771674, 4206384, -3553549, -3047279, 6521908, 12868796, -9678172, 3487514, -2902324, -464930,
+-8541079, -716186, -176094, -4288525, -5556614, -3950833, -4740570, -2455648, 2685965, 9446781,
+-4487704, 3555696, 6280853, 5784247, -2034741, 671089, -2153389, -1813013, -8779450, -4285304,
+4830765, -3119220, 974421, -2978560, 2386391, 1328756, -1056025, -319438, -4152697, -3335579,
+661425, -1200980, 1682554, -10275709, -10978473, -1167157, -1694902, -4670240, -130997, 3449933,
+-5453535, -4116189, -4667556, -7915625, 5485747, -578210, -1296543, 2142652, -421444, 1920387,
+3578245, 1272384, 1937030, 1162862, 2596308, -823560, 370441, 426276, 501437, 883153,
+-825707, -689342, 32212, 819802, 928787, -687732, 738734, -993748, -1983201, 990527,
+608812, -758599, 2304787, 1076963, 35970, 912681, -1600949, -1619203, -547071, -872952,
+-794569, -2159295, -448824, -1709397, -12221329, -2243047, -14688251, -3126736, -10445360, -1095217,
+1808181, 2760053, 11057393, -6847789, 2369211, 3156264, -6205691, -2606508, 8870718, 1089848,
+-2763275, 1265405, -7548405, 6862821, -9634685, -3004867, 4104378, 2770254, -1121523, 1756105,
+-2009508, 3245385, -4187593, -7004555, 354335, 3585761, 2694018, -5575942, 1450625, 6547678,
+-6729677, -8230231, 6533182, -5571110, 4219269, -3973382, 2295660, -38118, -6066642, -7591892,
+-4888210, 2233920, -441308, 3014530, -4166655, -3805341, -9990631, 5268315, -7198902, -3101503,
+3704946, 8876624, -1268089, -1687385, -13036836, -10038949, -3521873, -3496640, 4719096, -1247688,
+-7693360, -1085016, 265214, -4078608, -1167694, -8904004, 5883032, 2464238, 7453916, 9392020,
+4750234, 504122, 3902515, 8390755, -821949, -1782411, -699543, -2405182, -8351564, 580357,
+473520, 1892470, 4269198, -1668595, 839666, 117038, -3366181, -1629403, 2872260, 3011846,
+2602213, -1985886, 691490, 1258425, 910533, 1131187, 1070521, 515396, 2154463, 2391223,
+1414118, -343061, 922344, -271120, 773094, 1757715, 450972, 778463, -91268, -449361,
+-643708, 83752, -1557463, -545998, 1469953, 7139310, 3801583, 20806970, 10125385, 13468481,
+-4136054, -548145, -181999, -20591146, 1123134, 8853001, -4029216, -1614908, 752156, 12947716,
+-2150168, 7495255, -1490891, 7179038, 4000762, 8870718, 12538083, 1594507, 8389145, -2593087,
+7268696, -987306, 13418552, 7102802, -170188, 7597261, 6196027, -2258079, 5919002, 3522410,
+5119601, -4006131, -3150359, -10806675, -601295, 7655243, 1534914, 972273, -2451890, -4042101,
+-3162170, -3563212, 18873696, -12097312, 4861366, 5715528, 3307125, 1627793, -7153268, -9600326,
+-2388539, -1427540, -376883, -16634945, -8184060, -8548596, 478889, -387621, 5018133, -540092,
+4466766, 5904507, 10728828, 1964411, -2671470, 3592740, -6634651, 1843078, -4846334, 1801739,
+4198331, 2340757, 6864432, -4575751, -5134634, 24427090, 3420942, 4440460, 3167002, 8296803,
+-5788542, -3024731, 5295158, -597000, -64961, 969052, 1795296, 4795331, -2297808, -356482,
+981937, 2764348, 708133, -2516314, 4715337, 180389, -1015760, 114354, -457414, -2474438,
+-2245731, -1081258, -2506114, 1074, -933619, 1135482, 3402688, -300648, -245350, -3650185,
+-689342, 1814087, -323196, 224949, 418222, 2885144, -1410897, -426276, 1009317, 1090922,
+-3107946, -2690260, 32094144, 3280281, 4908074, 3449396, -1850594, -13100724, 8880382, 9079024,
+-5037460, 3891240, 4285841, -7915625, -958315, 7453379, 4494147, -13829258, 3604015, -3852049,
+-6885370, -266825, 4136591, 985695, -15569, -355945, 6023692, -1945083, 3444027, -10785737,
+4394826, -1192390, 4314832, 2324114, -1842004, 7524783, -10285910, -4567161, -10159208, 8839043,
+4328254, 14477261, 7303055, -135828, 3225521, -11904039, -9127, 3360275, 3856344, 3507378,
+874026, 1991791, -3044595, 3275986, 10545218, 14001057, 6175626, -6506339, -3462818, -1540283,
+-2714419, 5155572, 7190312, -5030481, 4278325, 7784092, 2478196, -10951093, -21386790, -10675678,
+4358318, 9298604, -3992172, 2732136, -765041, -2054068, -32212, 9709310, 1835562, -8158291,
+13287555, 5920613, -15329812, 640487, -1817845, -5012764, -1695975, -2403034, 12885, 5260261,
+2260764, -4207458, -2183454, 3089155, 5741835, -2609193, 4369593, 1066763, -3559991, -980863,
+579284, 86973, -661962, 253940, -1766842, -1347009, 1275068, 308164, -1573032, -1744831,
+102542, -1139777, -2616709, 1578937, -914828, -1413581, 738734, 2682207, -2935610, -4679367,
+-41339, -718870, -6808060, -1216013, 1686312, -42413, -4116726, -526670, -1529008, 1280437,
+954557, 2109366, 1677722, -678605, -748398, -1305133, -3361886, -19872814, 6162741, 9026948,
+-10209674, 6508486, 11719892, -28165858, 6300717, 927176, 6397354, -10670309, 16034187, -22277996,
+78920, -1837709, -1531156, -2517925, -6138582, -8581882, -1095754, 7632157, 1077500, -38118,
+-3932580, 5297306, -600759, -2973728, 4454418, 9483288, -6191196, 6770479, -1012002, 4013110,
+2402497, 6346351, 10379862, -2584497, 2926483, -13345537, -6297496, -2947958, -4697084, -12174622,
+1548873, -4584341, -7499013, 11223286, -10475962, -3815005, -4800700, -6039261, 8094403, -9120363,
+5243618, -3336116, 8310225, -4468914, 9075266, -11853036, -3041374, 1285806, 10934987, -18999862,
+-6821482, 492848, 255014, -3541738, 7737921, -9944460, -18856518, 3954591, -16528645, 8318278,
+-5753109, -131533, -17293686, -7043747, 19133006, 10509785, -13996762, -12076911, -9851581, 412317,
+5949604, -2658048, -6152004, 12115566, 4599910, -2338610, -2473901, -4793184, -761283, 4647155,
+-4314832, 5009543, -420907, -3764539, 841277, -2918430, 2080912, 4205847, -2432562, 1768453,
+3382287, 2101850, -215822, 4917201, -4672388, 4633196, -1196148, 4055523, -5463736, -3085934,
+994285, 202937, 5982353, 1796907, 3655554, -2134599, -3193308, 1764158, -6287832, -790811,
+-1208496, 2523830, -1194538, -1457605, -1956895, -14485851, -6203007, 18226768, 779000, -15046881,
+14167486, -6634114, 950798, -15688442, 2420751, 6213207, -13826573, -3382824, -12355547, -90194,
+795643, -4169876, -3425237, 12069932, 1865090, -8178155, 2058900, -17520246, 10537702, 16695075,
+-5390721, 6972880, 11851425, -882616, -2410014, 1459752, 1447941, 6941204, 1194001, 1607928,
+3652333, -9789304, -694711, -11253351, -11493869, -4713190, 4847408, 6839199, -348429, -13537737,
+2682207, 3561065, 6678674, 14492830, -14835891, 21745420, -18009334, 806380, -3616363, -3111704,
+-8700530, -16712255, -22548578, -8738648, -2567317, 5761699, -1695438, 950798, 3337727, -149787,
+15909633, 7533910, -16286516, -2528125, -314606, 10421738, -11250130, 769873, -22692460, 4273493,
+17762374, -15841450, -6208375, 2266669, -154082, 4459250, 24883430, 394063, -3261491, 1316944,
+12678207, -8572218, 3409130, 4652524, -1860258, -894427, -148713, -308164, 5653251, -1816771,
+-1276142, -4851166, 8223789, -1750199, 2433099, 854699, 1461900, 2079301, 5983427, -4123706,
+-1051730, 6355478, -4574140, -6436009, 5350456, 291521, 2618320, 3631395, 2040646, 6576132,
+-5076115, 3080029, 3626563, -2229088, 9264244, 3213173, 5669894, 2112587, -5568425, -1998234,
+-940598, -932008, -985158, 2724083, -9254044, -18939732, 22632868, 9592809, -11002632, 14606647,
+14726906, 20782274, -7618735, -7235946, 15269146, -2277943, -2940979, 5260798, 6829535, 2662880,
+3304977, -20753282, -2127083, 32749, 249108, 1117765, -2265059, 8763344, 17120276, 1705102,
+1246077, -308164, 898185, 15681462, 4254702, -1118302, -3341485, 4009352, 3560528, -2469606,
+1891396, -8961986, -1778653, 13647259, -13452911, -6584185, -11587822, 15253576, -13880261, 7009924,
+-5625334, 4493610, -2938831, 3627100, -11128797, 2582349, 17052630, -11143293, 989990, -29573534,
+-1211181, -10438381, 906775, -27597850, -1114544, -1341640, -8410083, -5913633, 22652194, -24172612,
+4146791, -6518150, -8915278, 6532109, -8074002, -18873160, -13142600, 1861332, 1112397, 3930432,
+-9248138, -12694313, 7363722, 643708, 1534377, 8509404, -13991393, 10610180, -10144176, -4781909,
+-4291746, 2551748, 487479, 3057480, -1701344, -3561602, 1003949, -2007360, 3096135, 6626598,
+3960497, 2466385, 1985886, 1826435, 1869921, -665183, 7286412, 1400696, -1249836, 5388574,
+5613523, 2098629, -2925947, -261456, -4323959, 7183870, 2655901, 5787469, -2688113, 5939940,
+5373004, 7762080, 3913252, -2129767, -3907883, 6535330, 1437740, 5661841, 1393180, 1566053,
+1596117, 1727114, 19176492, 6420976, -2261837, 3851512, -9249212, -10238128, -7961796, 18200998,
+-16253767, -20737712, 10049150, -19313394, 7305740, 498753, 5428839, -8768176, -1830730, -10621991,
+-4179540, -8256538, 4082903, 9239548, 6762426, -15651398, 18126910, 1924682, 6471442, 1386201,
+8835285, -2106145, 8492761, 1779190, -3495030, 5032628, 2128693, 6750615, 5021891, -11955041,
+4889821, -3693135, 3488587, -2650532, -4170950, -3888556, -8022462, 7374459, 8369818, 8284992,
+-1424855, 15384573, 18891950, 7205345, 2621004, 8208220, 19568408, 9285719, 21328270, 13302587,
+15937013, -17258252, -16917876, 3168612, -3315715, -4904316, 1476932, -8857833, 7240241, 4992363,
+3475166, 15797427, -3653407, -10755135, -8609262, -8042863, 2002529, -4014184, -34492344, -15400142,
+-13354127, -5242545, -6882148, -3986804, -5140539, -10183367, 467078, -6267968, -5556614, 1931125,
+-5579163, -2152316, -8633421, 142808, 543850, -1753420, -12350715, 4756677, 44023, 216896,
+-9278740, 2448668, 3393024, 3227668, 1086090, 10476499, -6958921, -3059627, 2270964, 805843,
+-743566, 4089346, -4925791, -4606353, -868120, 7310571, -759136, 5209796, 6406481, -1764695,
+-8003135, -7583839, -856846, 7631083, 625992, -6155762, 813359, -1673964, -3918621, -3335579,
+-1256815, 40265, -6014565, -5513665, 5204427, 15183246, 10672994, -33934000, -24689082, -7968775,
+-109522, 10900627, -4420058, -1003949, -26631482, 3589519, -13852343, 9830643, -1751273, 13093745,
+-11207717, -3046743, -13339095, 2143189, 11223823, -5486284, 3402688, -7949985, 756988, -18326088,
+-4856535, -1074279, 1467268, 13240847, 17647484, 410706, -15903727, -11494406, -5040144, 1453846,
+-4098473, 4918275, -18311594, -5920076, -2394981, -4981089, -10235444, -2619930, -4651987, 12378633,
+18357228, 12118250, 4613869, 7333657, 7757248, -8971113, 30573724, 18295486, -23917600, -20952462,
+22481470, -17770964, -10063645, 3282966, 2566780, -17251810, 16640314, 915365, -51509544, 13649943,
+32451700, -22568442, 22378928, 29700236, -9886478, -3249143, 16003048, -18796924, -12301860, 6069863,
+-10111964, -11811160, 13569412, -22769232, -6847789, 2757369, 547608, 1137093, -2158221, 8141648,
+-5904507, 3396246, 1234266, -6156836, 11984032, 5968394, -383863, -7784628, 9243843, -5949067,
+7133404, -6322729, 8675834, 751619, 1798518, 8638253, -6810208, -7794292, 2305324, -7202124,
+-4345433, -483721, 752156, -4845260, -8462159, 3860102, -19864224, -162672, 9142912, -7486665,
+5382668, -2401424, 2700998, -8473434, 193810, 4405026, -3901441, 2834142, 17825724, -8088497,
+-7478075, 17395154, -12688944, -2272038, 14743549, -10485089, -6685117, 11100343, 6804839, 7299834,
+-1808181, -10803990, -8680666, 10267119, -8159364, -710817, 3040300, -15282567, 9983651, 8198556,
+-6197638, -4968741, -11953968, 377420, -7385197, 10405095, -16781510, 1343251, 6473053, -826781,
+-7960185, -17348446, -3879966, -7502771, -1649804, -13399761, 18434536, -17868674, 3198677, -6438693,
+4683125, -25332254, 26272852, 5082020, 2690260, -10383083, 6049999, 4378183, 1226213, 2496987,
+-4595615, -19945828, -3388192, -8563091, -12773233, -17110612, -6123550, -4213900, -17022030, -6418829,
+-694711, 11978127, 5564667, -15358266, -13437879, 8502962, -3441880, -19525458, -8371965, 5000416,
+16325171, 16270947, 16496433, 26306138, -4894115, -17540110, -16801912, -889595, 11615739, 20544440,
+9290551, 4570919, -20612084, 11888469, 4500052, 20061256, 13943074, 9209484, 6957847, 222801,
+1921998, 11909944, -2613488, 1046361, 2234994, 3609920, 4186519, 3997004, 5819144, 14272176,
+4589710, 1264868, 5007395, -97711, 4686346, 1540820, 1015760, 8963060, -10391673, -7275138,
+-2606508, 4189741, -5160403, 3728569, -2138894, 11230803, 614717, 2087891, -5522791, -6864432,
+834297, 6660958, -5820755, -414464, 7640747, -5847598, -128312, 3757560, -10388989, 13245142,
+7205345, -2027761, 3352222, -200253, 113280, -2824478, 7601555, -1976222, 12601971, 32409824,
+-28541668, -1304060, -11122355, -15807627, -8764955, 14567455, -7818451, -9408126, 8109435, 18887656,
+12588012, -15023796, 9783936, -15744813, 11602854, 136902, -1341640, -7874823, -11009612, -9669045,
+2294050, 1594507, -17639430, 10924249, 2238752, -2123325, -6486475, -8138426, 13123273, -17972290,
+-491237, 18505404, 22681722, -20543366, -1018981, -4489852, -12663711, -17294760, 18671296, 3668976,
+11975979, -4112968, 1723356, -2101313, 11912629, -5043902, 912681, -14912663, 20921322, 16695075,
+-24896852, -31287226, -6256694, -153008, -9868761, 510027, -7274601, 1832340, -15371151, 16030965,
+-19838454, -18110266, -6327561, 2379949, 14082661, -7762080, 20298016, 1596654, -6958921, -7384660,
+-5063767, -13160317, 12434467, 8617852, -3131568, 7207492, 6255620, -10415833, -9708774, -8906688,
+15737297, 3596498, -10970957, 961536, 4549981, 4789426, -16456167, 8103530, 6783364, 2764885,
+-32749, -5024575, 2347737, -5461051, -14651207, 2726231, -1845762, -3018288, -1617055, 1126355,
+-4373888, -5974837, -208306, -2375654, 7476465, -4263829, -1966558, 3943854, -1897839, -7283728,
+5902359, -7261716, -2200634, -12410308, 6522982, 977642, -1672890, 1837172, -5377836, 10452340,
+-644245, 1531156, 12181064, 8410620, -3339874, -4253092, 5868536, 2983929, -4150549, 2053531,
+-3813394, -3813931, -732829, 2443837, -2261300, -834834, -44958108, 66379256, -45756436, -11115912,
+11451993, 36049272, 28450938, -10239202, -12060805, 2322504, 1173600, 18792092, 6289443, -23874650,
+6811282, -4838818, -9018358, 2792803, 9458592, 264677, -18697066, -15662672, 8015483, 7335268,
+10771241, -5773510, 13448079, 3631932, 15855946, -1318018, -6065031, 12471511, -1953673, -12558484,
+1763084, 15391015, -1136019, -16779364, 8019778, 20331838, -18895708, 7624641, -20262046, 8182450,
+-25473988, -15961172, 27009438, 26002806, 11554536, 33753076, -6911676, 40223980, 14325863, 15724412,
+20919712, -35763120, 29955250, 10746545, 11822971, 14401025, 2868501, -17287780, 2381023, 33985540,
+37830608, -121870, -43876848, 21655762, 687195, 9400610, -1989107, 1352378, -9938017, -32384590,
+6119255, -5119601, 6885370, -5783174, 15715285, -18076444, -20195474, -13566728, 2386391, -5680631,
+-9346386, 10848014, 3687230, -13827110, -15415174, -11531450, -9262634, -1301375, -2798171, 8070244,
+-659278, -11830487, 9128416, 2150168, -3413962, 780073, 4293357, -5786932, -3382287, 6241661,
+-11010686, -4276177, -7645579, 6447283, 7425462, -8680129, 2312840, -23663122, 165893, 1394791,
+1021129, -4448513, -4752382, -10563472, -8354785, 5684389, 3288871, 5458367, 8143795, -7747048,
+463856, 3445638, 1960653, -7590281, -107374, 2158221, -412854, -6195491, -1049583, -1458141,
+43478492, -1488206, -51951924, -26083336, -30622580, -11529840, 176094, 17238924, -44283260, -9762998,
+6870337, -20462834, -23801636, -21463026, -23757074, -3673808, 26074210, 13571023, -10429254, 12708271,
+5089000, -11830487, 13431973, -14979772, -3404299, 6457484, 8876624, -29897268, 15049565, -14632417,
+8562017, -5762236, -24175834, 6852084, 7461432, 3877819, 3933116, -9878425, -34291556, 1533303,
+7043747, 7605850, 314069, 4415764, -14250165, -27917, -1240709, 31250718, -4815195, -51019916,
+-23142894, -5416491, -42530376, 9819906, -13013751, -10705743, -20513838, -9030169, -30625264, -29848948,
+-36822364, -3520263, 38703560, 5462662, -24538222, 11430519, 314069, -2577517, -13812615, -19236084,
+8110509, 16089484, 12120398, 6737193, -7363185, -31237298, -22405234, -31448288, 4626217, 3589519,
+-1122597, 11360188, -16655346, -19997904, -2852932, -7352447, -20572356, 4575214, 11827803, 1717450,
+4325032, 19841676, -3564823, -4037806, -3383897, 1353452, -7092065, -3886946, 8834211, 13552769,
+14770929, 9987410, -4080219, 700617, 2314987, -6136972, 13686450, -5573794, 19969988, -6993281,
+9386114, -9498857, -2633352, 20282446, 6743099, 2796561, -70330, -7915625, 8012262, 1753957,
+-9828496, 4480188, -8399882, -10835666, 3183108, 3261491, -6653441, -6504191, 6966974, 386547,
+9776956, 2112050, 6685654, -3590056, 2992519, 2758980, 1052267, 28945396, -3593814, 23230404,
+29528438, -24960202, -31704912, -33000382, 8519068, 11777337, -45669460, -26124138, 713501, 1443646,
+13498008, -52762600, 5452461, 12355547, 36477156, -42252276, 4806606, 7064148, -5497558, 23477902,
+-13675176, 41055056, -2478196, 3707094, 12119324, 15998216, -15714748, -32990180, 19033148, 23435490,
+5139465, 29625074, 5483063, -3685619, -11307575, -24930674, 38428684, -17249126, 36402532, 14542222,
+-2981244, 10904922, -15778099, 19877646, 19324668, -13632763, 14297409, 7490423, -38726108, 28065464,
+28230284, -3553012, -19893214, 3759707, -1240172, 1294933, -7213398, 52978960, -1282048, -30678952,
+-17511118, 6046777, -44637596, -58034136, 7648263, 72688024, 15753403, -5093831, -46707232, -11740293,
+-8016020, 49543520, -34178812, -21665962, -81878720, -11784317, -15246597, -19189914, -15614890, 29994978,
+31680752, -31862214, -12701292, 10537165, 4115116, -5814312, 12823162, -5594732, -10388452, -10019622,
+11004780, 4529580, 3359201, -4054449, 10780905, -11458436, -4211216, 9788230, 4202089, -652835,
+-760209, -8557722, 3829500, -5683316, 20831128, -5798206, -11809013, -9440875, -18402862, -6157910,
+13642964, 15742666, 42696808, 16344498, -5192616, -32828046, -45671072, -21268678, 370978, 18526342,
+14706505, -12135430, -18372796, -9210557, -7712688, 11208791, 19205484, 4272956, 787053, -2496987,
+-7282654, -5946382, -5589900, -1055488, -2608656, -2786897, 2295660, -4957466, 1655710, 656056,
+1206886, -3776350, -786516, -2832531, -2594697, -3693135, 2165737, -2356863, 3976066, -72847480,
+21467320, 34605624, -46181100, -4420595, 26592290, -11473468, -20524574, 18532784, -19784230, -11276437,
+2001455, -15416785, 25052008, -8472897, -10763188, -4467840, 13462038, 44313860, -6455336, -20653960,
+-22404696, 8089034, 21743808, 12562779, -19740744, -3332895, 24686936, 511101, -17842368, 5937793,
+-15870441, 40999220, -18116172, -44704168, 15876883, -7628399, 21758304, -29985314, -28885802, 29368450,
+-1887101, -38337416, -19827716, -36632312, 47774532, 22690312, 13242458, -49919868, 9345849, 20463372,
+-34442416, 1966558, -24604258, -19112068, 20002200, -16998944, 22881438, -14051522, -29857538, -6919729,
+-7027640, -4553739, 10925860, 3582540, -18469970, 58872728, -6772090, 26100516, 27261768, 16291348,
+-7556995, 6190122, -12910135, 33123324, 8623757, -8361228, 4417374, 14079440, 23446764, -5710159,
+-49555868, -3381750, 16030965, -4955319, 26846230, -11165304, 9546639, -3992172, 1118302, 10909754,
+3062312, 6657736, 13898514, 8023536, 16066399, -3716221, 5502390, 8317204, 1503239, -16024523,
+19671488, -7948374, 529355, 3026341, -9214852, 5005248, 1402844, -2511482, 13804025, -5997385,
+1394791, 19404126, 205622, 10832981, -9054328, -6047314, 10851772, -2401424, -6793028, -10078141,
+932008, 1428614, 2826625, -3336653, 2882460, 6082748, -1782411, 4168803, 5487895, -2671470,
+6606197, 1219771, -6497212, 4431870, 2718178, 1354525, -351114, 52712672, 10596221, 22933514,
+-2121177, 5672041, 8130373, -18933826, 8221641, 18505404, -15569, -21816286, -11954505, -16144782,
+-6878390, -21869436, -21465710, 2815888, -17151416, 25031606, 7857643, -5648419, -18215494, -8495982,
+-6127308, 13546864, -4337917, -20687784, -17398912, 4495220, 4272956, 12074764, 4329327, -4466229,
+5344013, -18032958, -55507084, 2434173, 66901632, -1849520, -48987324, -7813620, 31736050, 9007083,
+5010616, -793495, -21393768, -26300770, -15995532, 6115497, -1823751, -24325084, 8820252, -49027052,
+-8988830, 45591616, 13193603, 58618252, -7893613, -23008140, -7167227, -5069135, 15479599, 3490198,
+-629750, -31842888, -16249472, -15190762, -2345052, 37121940, -5171141, -8990440, 12001212, 15074261,
+2214593, -19654308, -30964030, -2165201, 12284680, -1312113, -15462419, -3859565, 8418136, -6426345,
+-5932424, -10030359, 18400176, 19659676, -10042170, -5128728, -9241696, 8013872, 11392401, -5333813,
+1494112, -2028298, -1792075, -3641596, -14894947, 1641214, 8225399, -8904541, 2024003, -2132988,
+485868, -7977365, -2867965, -3354370, -5417565, -6056978, -6404870, -1766842, 26103738, -13047574,
+-23085, -5141613, 1265942, 14535780, -9999221, -1386201, -2991445, 4575214, -860067, 4159139,
+-7723425, -23335632, -77349680, -119533232, 28228672, 106943072, 33788508, 261635984, 246497840, 109606488,
+254168112, 107329088, -46032924, -778463, -76384920, -209089744, -114103856, -109488384, -214237264, -156017904,
+-89550608, -134979552, -90709176, 19754166, -7822746, -43185360, 51223928, 47837344, -150324, 51286740,
+139244992, 58450748, 26275000, 133257264, 119276072, 40073120, 142080736, 173792096, -214212, 102969696,
+175247008, 66381404, 70100848, 178624464, 106760536, -14097156, 139450064, 97872640, -37932616, 54760832,
+110939544, -49594524, -87913152, -19827180, -185880272, -312124928, -302142912, -335987232, -537495296, -465254464,
+-383784864, -497411424, -426440864, -274030720, -324816576, -248250720, -68639480, -22129282, 105247640, 195800576,
+322770016, 432374880, 471657728, 550104256, 597494912, 558134784, 528687936, 560846464, 426725408, 338336576,
+401393696, 218952608, 35086124, 50626928, -80950472, -296396224, -248829472, -184104848, -265709760, -271743104,
+-169476192, -192939056, -243306672, -178327584, -162139840, -228902960, -205345072, -133903120, -170331424, -182976352,
+-59811716, -57549340, -107942192, -11280195, 41246720, -30848066, 5945846, 40933724, -58194660, -75332656,
+-71488656, -156803888, -173153216, -121218472, -91039888, -66340064, 22643068, 106434656, 144649136, 204889264,
+262537392, 274130592, 290806336, 321578176, 305036096, 277293280, 288833856, 261546864, 194545920, 133432824,
+35226248, -51449412, -132254928, -192621232, -215822640, -227415840, -202896944, -155451504, -136138656, -114747032,
+-93809064, -80983216, -71295384, -53454628, -41395968, -38137700, -37186900, -25935160, -19567872, -15622407,
+-5378910, 8182450, 20080582, 35090956, 36464808, 37493992, 43423192, 42872364, 35161288, 37822556,
+31475130, 16682190, 1272384, -12828530, -27831924, -33510408, -40012452, -43001748, -40049496, -37157372,
+-36057324, -25798258, -20160040, -12216498, 435939, 10737418, 15800111, 24293408, 29350196, 33176474,
+37527812, 39187820, 40920836, 42649024, 42935716, 42518564, 39662412, 39084204, 36958192, 34553548,
+31209380, 29785598, 24390582, 18534394, 11311870, 5504538, -2037425, -8892193, -15265924, -22412750,
+-31423054, -37441916, -43879532, -47260748, -50237696, -51478940, -51516524, -49303004, -47184512, -42711304,
+-38785164, -32626182, -25567940, -15730855, -8205535, 2355253, 10057740, 17258252, 23497766, 29421600,
+30994632, 33355252, 32648730, 30091078, 25649008, 22355304, 16324097, 11494406, 7216619, 4673462,
+1080721, 195421, -782221, -639950, -1612760, -823023, -1232119, -561567, -988916, 27917,
+-376347, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-512175,
-11112691, -5488432, 399969, -3257733, -293668, 4756677, 2197413, 3000035, -2619393, 3706557,
--3826816, 4156455, 2018098, 5000953, 2055679, -899796, -5635534, 6063420, 4114042, 1569811,
-672162, 602369, -2414845, -2681133, 3077881, 1950989, 1999307, 3032247, -3072512, -190589,
-2771328, 3365107, -467078, -2437394, -4746476, 59056, 847719, -2807835, 1034013, 799938,
--4280472, -2256469, -354872, 2199560, 17180, -2029909, 3936338, 780073, -1371705, -2896956,
--682900, 387621, -5576478, 2600066, 3448322, -1890859, 4424353, 3683471, -604517, 3053185,
-1756642, 5931887, 1831804, 1139777, -940598, 2256469, -4765266, 646393, 2252174, -2314451,
-2582349, 3174518, 3428458, 2186138, 4512937, -938987, -2771328, -1395328, -1182727, 634581,
--1066226, -3488050, 1653026, -1628330, -1869921, -2103460, 798327, 30602, -1097901, -820876,
-1389959, 137439, -174483, -344671, -150861, 694174, 930934, -119722, -65498, -766115,
-214748, -1404454, 129386, 994822, 1266479, -875100, -971200, 254477, 824634, -809064,
--10548977, -7434589, -1020592, -4799089, -4045322, 1973538, -5994164, -5844377, 1704565, -2666101,
--2330020, 2384781, -1870995, -4150549, -418222, -345208, -1133335, -1917166, -1082332, -4755603,
--265214, -3439195, -2434710, -163746, 4249870, -972273, 6128382, -3205656, 3693135, 4176319,
--4701379, 1614371, -1171452, 882079, -3321620, 1624571, 2190433, 3213709, -1643899, -4003447,
--1357747, -2210835, 1293859, 1506997, -4790499, -639413, -3282966, -2689723, 925565, -3976603,
--6293738, -1216013, 6220724, 1339493, 2189897, 306553, 1444720, 817118, 2301029, 2420751,
-6972880, 491237, -3073049, -4020626, -840740, -1930051, -497679, -8100309, 1688996, -602369,
-2592013, -1107028, 730681, -1953673, -931471, 7873212, 1598265, 7217156, -2445984, -1347546,
-565862, 2034204, 714575, 2430415, -2398739, 2641405, -2798708, -1767379, 1450088, 1016297,
--96100, 102005, 67646, -632971, 206158, -1096290, -91805, -392453, -169114, 446140,
-554588, -616865, -1017370, -657667, 71941, 17717, 178241, 317291, -421444, -489089,
--430034, 89121, -163746, 568546, 8607114, 9916006, 7635915, 5663452, 8026757, 3251827,
-3489661, -734439, 2281702, 8442295, 903554, 2573222, -3136400, -2095407, 6474127, -4345433,
--7916162, 2392834, -6613713, 5706401, 1348083, 6847789, -2180233, -434329, -1687922, 2247342,
-2745021, -100932, -6738267, -1394791, 5775658, -3848291, 2604898, 1522566, -1300301, -1666447,
-6417755, 4832375, 11194295, 4473746, 930934, 2674154, -944893, 673236, 3526705, 2094870,
-9541270, -4093104, -2721399, 656593, 2457795, -1510218, 4422743, -4150549, 860067, -281320,
--3179887, 979789, 958315, -4320200, -5832029, -3619584, 4618701, 2227478, 19864, -386010,
-3485903, 252329, 1155883, 6033356, 2982855, -1453310, -962610, 5361730, -4660577, 604517,
--4201552, -1903744, -5430450, 1466195, -1130650, -3233037, -2109366, 3136400, 1942399, 549219,
-1850594, -3030100, -506806, -272194, 2335925, 53150, 166430, 417149, 697395, 1703491,
-1927904, 1505923, 117575, 797790, 1744831, 83215, -1586990, 1453310, -805306, -329102,
-357019, -282931, 1282048, 1150514, 584116, -18254, -445603, -477815, 550830, 718333,
-267899, 1104344, -2266669, -1465121, 1135482, -96637, -893353, -126165, 1211718, 95026,
--835908, -1069447, 714038, -1055488, 90194, 18685256, -325881, 9153112, -1654099, -1434519,
-9827959, -9615358, -3322157, -750009, 4859756, 3370476, -2049773, 1872606, 918049, -8706436,
-2212982, 4661114, 4148402, -9757092, -3420942, 1104344, -6987375, -1921461, 547608, 319438,
-964757, -1072131, 4471598, -3148748, 3558917, 7322383, 7323993, -2119566, -4179540, -744640,
-8249559, -466541, -428960, 66572, 824097, -4272956, 745714, 3471407, 533650, 828392,
-3331821, -2191507, 2247879, 1304060, -891743, 5797669, 583579, 4611185, 923955, -1535451,
-2024003, 3085397, 2669322, -126165, -4513474, -4114042, -5437966, -2420751, -177704, 13959,
--623307, 4064650, 3501472, -2628520, -5332739, 180926, 2791192, 3350075, -3256659, -599685,
-3173444, -273267, -422517, 4209068, 1981054, 2000381, -1551020, -1340030, -235686, 1821066,
-2712809, 71941, 2057289, 746251, 183610, 405338, 693637, 2522220, 1899986, 2837900,
--1419487, 1344325, 204548, 367757, -398358, 306016, 432181, 136365, 379568, -451508,
-1363115, 1336809, -1219234, 337692, 765578, 844498, -392990, 2627446, 1023813, -379031,
--4952098, -14006962, -3583613, -4789963, 946503, 2252174, -2333778, -2864206, -26261040, 453119,
-8477729, -6213207, -9817221, 7290707, -11116449, -1765232, -4966593, -5937793, -3627100, -3760781,
-403727, 4385162, -814433, 2406792, -2844342, 3284576, -2585034, -4072166, 1749662, -1581085,
--6296422, -8119636, 3828963, 294742, 3778498, 1072668, 8467528, 1109712, 2926483, -4164508,
--7078106, -2138357, -3524021, 6963216, -3313031, 92879, 1810866, -3593814, 9841918, 6444062,
-116501, -7950522, -9996000, -3476239, 3291556, -9087614, -253403, -4468377, -8590471, 702764,
--13435731, -3058017, -1458141, -5078799, 8981313, -649614, -1453310, -239981, 5611912, 7112466,
-2130304, -7306276, -2369748, -1918777, 3848291, 1727651, 2192581, -4145180, -5206037, 3960497,
-2721399, 926639, 1322313, -345208, 2273648, 552440, 3446175, 899259, 770410, -386010,
--146029, 466004, 2204929, 3114925, 1923609, -874563, 1233193, -4099010, 2027225, 2296197,
--717260, -425739, 689879, -994822, -298500, -311922, -1280974, -1386201, -754841, -471910,
-706522, 1502165, -297427, -1938641, -60666, -2700998, 840740, 3492882, 1488206, 2026151,
-1447941, 5503464, -14974403, -22257594, 2765959, -5159330, 4986994, -6305012, -10969346, 172336,
-10168872, 1966558, 6255620, 4857071, 3886946, 2358474, -3506841, 2607045, 6772090, -10645613,
--4890894, -3612604, -2317672, 3755949, -822486, 1222455, 7027104, 5974837, -2422362, -6052146,
-1445793, -3436511, -2486249, -5870147, -3949759, -8883603, 2168422, -3387656, -12885, 7689065,
--1498407, 1388348, 2122251, -5696737, 4761508, 4539781, 6560563, -5804112, 10323491, -1774358,
--7444789, -6444062, -8149701, 7549479, -2829310, -8824547, 2711198, -1443646, -6088116, 6447283,
-8854612, -3135863, -7285339, 5352603, 1787780, 4175245, -579821, 11732777, 7011534, -7000797,
--3368328, -3354906, -2634426, 3853660, 5470715, 6924561, 42950, 834297, 2749316, -2881923,
-2617783, -861678, 4590247, 6352257, -8691940, -3998078, -4356708, -2841121, -4452808, -439697,
--3142306, 1384053, -146029, -370441, -345745, 1083942, -2125472, 5383742, -658204, 2246805,
-848793, 1053341, -1045825, 132070, 169651, 244276, -1826972, 309775, -1183264, -1992328,
--2868501, -926102, -158377, -550293, 120796, 273267, -574452, -456877, -1074279, -1071594,
-1726040, -65498, 584116, -1258425, -20787104, 60666, -3834869, 1449015, -108985, 7893076,
-5662378, 8173860, -1381906, 11122355, -5200132, 7590281, 9126269, 1777043, 9097278, 2063195,
-2318209, -2483565, -998580, -3765076, 7202660, -360240, -886374, 10321880, 6122476, 188442,
-2699924, -776852, -399432, 6749004, -3859028, -6485401, -60130, -814970, 3326452, -18514530,
-11142756, 12175695, 4715874, 2451353, 270583, -5815386, -12461848, 8304856, -5049808, -5539971,
--3826279, 7467338, -5228586, 4648765, 4566087, -4301410, -2962991, -10611790, 4894652, -6863895,
-4097936, 802085, 3666828, 6628745, 10365904, 4576288, -4837744, -11331734, -2054605, 7118372,
-11431055, 8723615, -1772748, -2158758, -7405598, -12138651, -1330903, 8597451, 3751654, 2793876,
--2750927, 11373610, -413391, 3905736, 1060857, -2058900, 1036698, -5625334, -2824478, -2785823,
-1888175, -1323387, -4129074, -2301029, -2859375, -2945811, 1205812, -4242354, -1838783, 964757,
-732829, 3501472, 159988, 605054, 561567, -789200, 2739116, -740882, 3118683, 1262184,
--913754, -2277943, -139586, 3155727, 2138357, -248571, -2958696, -643708, 2594697, 2470143,
-322659, -397284, -364535, -1648731, -1334661, 2077690, 7845295, 27154394, 14717242, -1217086,
-2554432, 2506650, 5954972, 10805064, -1500554, 2214593, 18107582, 1966021, -788127, 11042361,
-7626788, -7416872, 4505958, 1220845, 7298760, 5143760, -12563853, 9704479, -5807333, -695785,
-1096290, 7630010, 1363115, 2168959, 5721970, 6679748, -6214281, 6859600, 20031728, -3384434,
-9133248, 9489730, -4948339, 7476465, 1968169, -4662724, -5180805, 3707094, -4626754, -12288975,
--1578401, -428423, 1312113, -15770583, -3855807, 5051419, -10041634, -6628209, -16560320, 5644124,
-7670812, -11191611, -4012573, -5317170, 12048457, 447213, -6837051, -4655208, -7617662, 4002910,
-10089952, -6987375, 3911642, -2879776, 4884452, 11525545, 4811974, 9114457, 9140764, 11511586,
-1774358, -6204081, -6315213, 4712653, 7230578, 1201517, 4870493, -4926865, 2072859, -460098,
--1542967, -5178657, 771484, -2206003, 344671, 4512400, 1878511, 1999844, 1509144, 4968204,
--2939905, 341987, -765041, 1598802, -524523, 336081, 2091112, 715112, -1651415, 2744484,
--521839, -3515968, 2338073, -2460480, -2070174, -2556579, -5496485, 3172370, -1226213, 2712272,
--248571, -344671, 788127, 4300873, 2822331, 3857954, 1760937, 132070, 1557463, 4421669,
--1673427, 4008278, 27974196, 7341710, 1273995, -1705639, -3891240, 74625, 5348845, -3476776,
--6295885, -9623411, 854699, 6706055, -8338679, 4073240, 5709086, -2483565, 18923090, 6548752,
--4543002, -3301756, -1279900, 6655589, -2649995, -6358699, -6766184, 4227859, -14924474, 440771,
--4122095, -5589363, 4938676, 976568, -5398237, -3495567, -5184563, 7423314, -2362769, -12006044,
--1334661, 188442, 999654, -6998649, -9616969, 834834, -1712618, -1403917, 3406983, -2144263,
-9210557, 1799591, 5533529, -5897527, 13359496, 3771518, -6529424, 8699456, 16872242, -4894115,
--4037806, 8518531, 8021925, 3230352, 4913980, -10428717, -2677912, -11268384, 3374234, 10428181,
-4829691, -13196287, -2592550, 4090956, -12896176, -20410758, -1690607, 604517, 5849746, 18413062,
-1544041, -2165737, -5704254, -4433480, 2959233, 4624069, 3995393, -344134, 2143189, 121333,
--4022237, 2472828, 3244311, -5258114, -4918812, 5552319, -1826972, 3241627, 2552284, 1607928,
--1366337, 1152125, -96637, 1889249, 513249, 2899103, 116501, 2556579, 1858110, 536334,
--2370822, 5379447, 1755568, 4908611, -1016834, -1700270, 1829656, -3361886, -546535, 2316598,
--3105798, 765041, 1813550, 1065152, 1188095, 2617246, -1038845, -4866735, -62277, -539555,
--5127654, 723702, -2156074, -637266, 2048163, 1656247, 1856500, -21657372, 10212358, 28646358,
--11752104, 20084878, -4503273, -4406637, -6259378, -10474888, 7765838, 227096, 5313412, 5146982,
--18817326, 178241, 8804683, -7718056, -4014721, -11950747, 21041044, -13184476, 10392747, 9706626,
--12488691, -5233418, -4346507, 8736500, -9990094, -4165045, 10204305, -1858647, -2711735, -5047124,
-12439299, 2103997, -1997160, -5196911, 340913, -9543417, 10254234, -1306744, 4722317, 25450902,
-17154636, -14803142, -10396505, 3915937, -1318018, 10587631, -5866389, -8725226, -3057480, -16134582,
--6180458, -2008971, -12304008, -7144141, 27313308, 6404870, 102542, -1453310, -296890, 7923141,
-9624485, -2145336, 9505836, 645319, -5216775, 908922, -14566918, -1218697, -13499082, -7413651,
-8136279, 11793980, -17901960, 7137162, -4589173, -5812165, 8671002, -1402307, -8243653, -603443,
--3234110, -6591701, 3305514, 2259153, -4511327, -11248519, -5359583, -1250909, -885837, 8645232,
-2597918, 2059437, -4792110, -54761, -1981054, 4573067, 5254893, -2950106, 2237141, 3839164,
-4318053, 3270081, 4910758, -2085744, 326418, -3522410, 251256, -4081293, -2121714, 1374390,
--1114544, -3320010, -778463, 1556926, -5294621, -2727304, -2886218, -1714766, -2042794, -2527588,
--333934, 2835752, 189515, -369904, 3373160, -23025320, 4034585, 21110838, -5476084, -5546951,
-4694400, -6721087, -5275294, 5864778, -700080, -1323387, -163209, -14542222, 24553792, -26131654,
--2412698, -725850, 8997956, 5230197, 406411, -10001905, -7010997, 2980171, 19187766, -1684164,
--8339753, -5890548, -13475997, -1055488, -7882876, -6467684, -2713346, 4119411, -374736, 504122,
--9104794, 1714229, 2681670, 5738077, 4958540, 5778342, -12387223, -75162, -2470680, 8058433,
-2146410, 16485695, 3663070, -3978750, 1539209, -9169218, 1611, 7126962, 9435506, -14394046,
--10995116, -1166621, 14952392, -23412940, 6184753, 26756036, 14850386, -7312182, 2555506, -14570677,
-6165426, 13159780, -22660248, 4966056, -11004243, -3244848, -30746060, 44560, -12911745, 11902428,
-901406, -14430553, 9594420, -1024887, -18396956, -2572149, -11606075, 7514582, -6432251, -9753871,
-13214004, -2641942, 2407329, -4479651, -5616744, -1658931, 5694590, 4097399, -3073586, -896574,
-320512, -3351685, 2126009, 3092377, 4730370, -4794257, 1939715, 2392834, -5487358, 254477,
-2542084, -4093641, 476741, -2683281, 6263673, 3212099, 7603703, -3651259, -2709588, 2422362,
--7058242, -852551, -1956895, -1214402, -274341, 1429687, -3914326, 170188, -433792, 1317481,
-1483911, 167504, -3946001, -2408403, -6229850, -17361868, 27473296, 8081518, 14374182, -16176994,
--18252000, -3233574, 4815732, -4937065, -2457258, 9371619, 2517388, 3019899, 8137353, -20071992,
--2226404, 431644, 5132486, -13905493, 1840930, 2563022, -9796820, -5233418, -13491566, -9965935,
--75699, 4507032, -10916196, 993211, -4947803, -9525701, 3770981, 153008, 7750269, -21265994,
--22388054, 4819490, -1920924, 8578123, 18781356, 2255932, -11812771, 16940424, -8363912, -15625091,
--12147778, -5047124, 1350767, -16602733, -6466074, 16595217, 22348862, 9554692, 6264747, 4784057,
--2572686, 14355391, 8057359, -16504486, -9055939, 202937, 1672353, 15700790, 10034117, 2607045,
--2383707, -1823751, -7635915, 10457708, 8138963, 18105972, 4134443, 5348308, 2208687, 32430224,
-3687230, 12626130, -13356811, 1254131, 12313671, -29195578, 2426657, 3974992, 8279087, -2938831,
-4415764, -3728569, -965294, 5127117, -2403571, 15628849, -6205691, 9178882, -2368138, -5410585,
--2924336, -5859946, 199716, 2532957, 3078418, -1138166, -2969970, 6576669, -1911261, 4435628,
--2275259, -2377801, -4694936, 4967130, 5341866, 1232656, 537945, -3872987, -6830609, 3296924,
--569620, 310311, 8181913, -2208150, 7171522, -1016297, 4202626, 2915209, 5529771, 1326071,
--5063230, -883153, 18686328, 1072131, 23179938, -991064, -10548440, -11817603, -21633750, 3754338,
--9109089, -834297, 1884954, 7561290, 11385421, 18956376, 19914152, -3316252, 17728552, -1557999,
--1522566, 6455336, 14939507, 6254010, 4190278, -23995446, -12182138, -19558744, 9799505, 19105088,
-3768297, -8602283, 13519483, 19164144, -2617246, 2769717, -4535486, 16073378, 13797582, 11460046,
--6920266, -12551505, -1952600, -3438121, -27386858, 4535486, 3752191, 2197950, -6961068, -3879429,
--30544196, -11054172, -27723478, -5097053, -20761872, -11005854, 20029044, 5071283, 21100638, 1160715,
--17272748, -8644159, -17973902, -34580392, 4851166, -21459804, -6190122, 20022600, 8455180, 7738994,
-1672890, -4075387, -1479616, 3764539, -14783814, 11644730, -25222732, -26214870, -1441498, -2421288,
--3246995, -19304804, -4342749, 25081536, -1378148, 1397475, -6736656, -22023518, 11116449, -14856829,
--5778342, -14788109, -9058623, -6985228, -4675072, -5413807, -3258270, 216359, 2595771, -13834627,
--5907191, 2528125, 2455111, 7556995, 3587908, -4669167, -5780489, 4904316, -9269613, -1504312,
-2867965, -7197292, 2250563, 2066953, 5163625, -4941897, -1690070, -2675765, -376883, 3349538,
--2030983, -384400, -2725157, 5379984, 7540889, -2560338, -1216013, 1965484, 2532420, 4671851,
-6682432, 1163399, -1137630, -1671816, -1585917, 10853919, 21787832, 19012746, 20429548, -11764989,
--20550344, 15808164, -9356049, 16337519, 4874251, -26181046, 6579890, 4905390, -29532732, 15887084,
--13463649, -13712757, 8042863, 9001715, 1403381, 10681047, 800475, 554588, -6928319, -3974992,
-6475737, -4076998, -10125922, 701690, -19022948, 6896107, -24181202, -14676440, 898185, 9617506,
--3301219, -9973988, 3750043, 7591355, 5630702, 468688, 19473918, -44736916, -10165114, -12233677,
--14868640, 19446002, -15658914, -2114735, -36107792, -10073846, -4290673, 1910187, 24074902, -5781026,
-3042984, -14510547, 12208981, -18060874, -11719892, 9431748, -41926396, 6132677, 22403624, 29135984,
-22225918, 14107357, 32724430, 18108656, -396748, -8062728, -8408472, -12625593, -28227598, -3025268,
-2631204, -39877696, -15800111, -12030740, -9016210, 12814035, 33429878, 39101920, 25865904, -13070122,
-10666014, -8411157, -1840394, 8886287, 6003291, -3365107, 2103997, 2954401, -787590, 1389422,
--6152541, 3560528, 10958072, -5114233, 1453846, -9627706, 2367601, -4485020, -670552, -428423,
-8459475, 15068356, -5400922, 991064, 3640522, 6167573, -9102646, -14009646, 250182, 10999948,
-3164317, -8915815, 8382703, 4475356, -9134859, 6444062, 4060355, -3450469, -2819646, -915365,
--1726577, 1709934, 3388192, -3137474, 6109054, -38489888, 119185, 6360310, 27023398, -8819178,
-12537010, 11294690, 6050535, 6155225, -41941968, 33122250, 18154826, 41051836, 15176267, -1802276,
--15173046, -9707163, -9463960, -14892262, 10719701, 7801808, -15010374, -17186848, 9186398, 12321724,
-21563958, 6011881, -13220983, -19906100, 4329864, 3374771, 1488743, 2393371, 38221452, 12902082,
-7401840, 12553116, 13907641, 15519864, 481036, -24169392, 17143898, 53159884, -5303748, -14799920,
--32219234, -6948184, 42991548, 5017059, 17869748, 5946382, -59122908, 12233677, 10774462, 1255204,
-6229850, -4134980, 1050120, 12103218, -31758598, -13227426, 27217208, 10059887, 3858491, -24003498,
-17314086, 6386080, -21495238, -23477364, -15617575, 21536576, 44900124, 41663332, 46028628, 46547780,
-2018635, -20691542, -16874390, -40647032, -13166222, 12895639, -32833952, -257698, -26718992, 404801,
-36338108, 14137422, 15082851, 18002356, 11399380, -10976863, -3469797, -13545790, 19855096, -11832098,
--10287520, 3606699, -2072859, -7010461, -12786655, -3714073, 13606993, 12682502, -5668820, 19578072,
--681289, 568546, -8614631, 2954938, 10309532, -2468533, -7428683, -7364259, 5270999, -4037806,
-11252277, 7027640, 9163313, 13087302, -12999792, 3465502, 1414655, 6052146, -2487860, -5583995,
-11969000, 2898029, 9824201, -5054640, 3769371, -7704635, -2285996, -11889006, 19034758, 38774428,
--78578576, -27715960, 6136435, -45901388, -42101952, -18212808, -25567404, 2929168, -18826990, 49820548,
--5297842, -17626008, -7151121, -38094748, -10564546, -30731564, -12809740, 5417565, -39675296, -6604049,
-30729418, -25687126, -7409356, 8917963, -152471, 12885439, 2690260, 110059, 11461657, 4320737,
--19713900, -3622805, 17548162, -8797704, -24554864, -7990787, -29777008, -14581951, -52161304, 5174899,
--35532800, 17249126, 6345814, -12934831, -46012520, 4361003, -4903242, 56802552, 22531936, 1154809,
-30766998, 13450764, 284005, 25130390, -29513942, -13921600, 2204929, 22240952, -24447490, -14734422,
-82184736, -7753490, 42569032, -33089502, -81068, -23611582, 17865454, -8319352, 27870042, 43858596,
-1162326, -30967788, 26590142, -32999308, -15007689, 11155104, -34294240, -22908282, -10935524, 24923696,
-47547972, -56572772, 47668768, 9543954, 13936632, 5266704, 6692096, 5080410, -7039989, 8616778,
-24693378, -12486544, 4334696, -2426120, 3226057, -26801132, -4811974, -8214662, 8082592, 8262980,
-26381300, -16485158, -9550934, -12854300, 18306224, -23401666, 5632313, 8602283, 7942469, 8674223,
--38513508, -9199283, 13893682, -6659347, -16456704, -2194728, 4549981, 939524, 16330539, 8227547,
-12965433, -13020730, -11560978, 13093745, 3874061, 8783208, -8665633, 8834748, 6081137, 1622961,
-3328600, -3706020, -3988414, 108985, -19028852, -18533858, -29606284, 61269856, -35167728, 22497576,
-20187420, -31967442, 17576080, 9595494, 6972343, -5711233, 24314346, 12493523, -30752502, 21843130,
-25536802, 4926328, 4403952, 15374909, -310311, -30677340, 39950176, -22765474, 9117679, -16930224,
--3799436, 5006322, -7358353, 32476396, 7411503, -4291746, -7694434, -1695975, 6483253, -33049774,
-10604274, -17128330, -11450920, -7923141, 56908, -16206522, -7576859, 3955128, 34461744, 386010,
--7046431, -21846352, 9290551, 6060736, 1177358, 26659398, -6311455, -2746095, 31857920, 9997610,
-2024540, -30537218, -15814070, 19770272, 11226508, -28596966, 1111860, -65038688, -32032402, 58401356,
--13461501, 31618476, 41566692, 11822971, 7261179, 18781356, -7751879, -22788022, 12516608, 3920768,
--1237488, 26405458, 17375290, -18835042, -45175004, -9322227, 18788872, 5988795, -818728, 14825153,
--16876000, 25588342, -12188043, 9641665, 12212203, 5321465, 17816062, 13382581, 21541408, 2523293,
--5161477, 7796440, 20921860, -5264556, 18379238, 10925860, -11249056, 3764002, 9982041, 6578280,
-4379256, 13055627, 11265699, 4880157, 22042310, -6688875, 2983929, -2959233, -851477, -5328444,
-19699942, 15977815, 13294534, -5825050, 3061238, 22707492, -5202816, 16690780, 15553150, 199179,
-26611618, -23225036, 4100620, 35631048, 5399848, 10209137, -6466610, 25121800, 5789616, 9629854,
-34842384, -10768557, -58167280, 9878425, -6992207, 20031728, 6152004, -19738596, 10251013, 12007118,
--22466974, -24697136, -16506096, -41233832, -41475964, 28566364, -6589554, -42634528, -13049184, 4384625,
-14139569, 13525389, -26096222, -28303298, 2813204, 39438536, -18822158, 15240691, -26489748, 9456981,
--29887604, 19518478, 20595978, -14630269, -30758946, -21143588, -3400540, 12128451, -13183939, -8664560,
--10970957, -39120172, -33819648, 17804786, -28387586, -5753646, 10162966, -23408646, -37869800, 14540612,
-19926500, -2467459, -45597520, 20491826, 17945448, 57795764, 303869, 15243376, 11334956, -24551106,
-9476845, -7554848, -49842560, -7525320, 30524870, 7379291, -25200184, -62459560, 39560944, 50662896,
--14993731, 41015328, 47590920, 2610803, 2175401, 37760280, -24330990, 2069101, 62978716, -46225660,
-27008364, -39557184, -10908143, -3017215, 27118960, -8971113, 3940096, 15458124, -479426, -34931504,
-38763692, -6755984, -4560719, 6256694, 16173236, -26141856, 11563126, 7144678, -4020626, 8419747,
-9391483, -24145770, -3365644, 6116571, 12834436, 27194122, -2320893, -23051626, 11873974, 27946816,
--21949430, 27295590, -12792560, -2335389, -9533754, 30771830, -21023328, 7738458, 18751290, -12465606,
-4590247, 3962644, -17594870, 4473746, 7329899, -2618320, -13440026, 9334038, 10749229, -5385889,
-21580064, -32021128, 7811472, 10424422, 146029, 2864206, 4154844, 22796612, -5309654, 12883828,
--26446262, -82738784, 22180822, -9375377, 61703112, -21123722, -13872207, -24698210, -71238472, 32631550,
--41631120, -24023900, 987843, 61740, 54465016, -39031052, -27709518, 36183488, 21171504, 18918258,
--7095823, 18072686, -12996571, -17952426, -16931834, 42378444, 34855808, 55059332, -17807472, -20495584,
-652298, -3558381, 19858856, -33033130, 6766721, -34731252, 18250390, 34170760, 11373610, -28059022,
-18804978, -24739012, 55433532, 28432684, 7538742, 7536057, -8982387, -43734580, 24354612, -59338732,
-12021077, 11054172, 28614146, 23010824, -51654496, 15452755, -32688996, -19184008, 13560285, -5110474,
-18724984, 12228846, -47286516, 19128174, 42640972, 56893820, -16945256, 16780974, -23678692, 39906688,
--57200912, -3051038, -10785200, 17864380, 36893232, 53561464, -43386148, 10619307, -57908508, 36845988,
-75211320, -19312858, -52052320, -4246649, -39381092, 49588620, 12124693, -25489558, -7672959, 2763812,
--8999567, 35358320, 12858058, -20198158, 18585398, -28549722, 1328219, 26478474, -6089727, -32901596,
-35751308, -52405044, 14595373, -8072928, 20325932, -1514513, 12410845, -12249784, -7008850, 5093831,
-4015258, 5311264, 24193014, -25580826, -21875342, 929324, 5123359, -6117644, -27030376, -19605452,
-38100120, 10151692, -17823040, -20142322, -44806708, 52586504, 40779640, -16448651, -14816027, -31188442,
-523986, 39176544, 6932614, -16959216, -6606197, -9154186, 5728950, 3877819, 1476395, -5181878,
--2567317, 7073275, -1131187, -4376572, -3366718, 4583804, 1416802, 9460202, -4684736, -66025460,
-47392816, -6887517, -975494, 14627048, 13820131, 17579302, 5956583, 8176007, -22106734, 20938502,
-6767258, -24191404, 16583942, -10105521, 426812, 20453708, 13108240, -34077880, 19489488, -16546898,
-28512678, -20983062, 7806640, -11110544, 13691819, -10626823, 6720550, -15436112, 32673964, -3612068,
-1657321, 8701067, 11476153, -16936666, -2579128, 6507413, 11420855, 8931921, -10427107, 3265786,
-1250372, -33170570, -1910724, 7632157, 12701292, 4417374, 8422431, -29917668, 5424544, -2461016,
-3723737, 5942624, -4986457, 5577552, 5646809, 1985349, -6263136, -7348152, -1462973, 32981054,
--11077258, 5951214, 13331042, -7831336, 12725451, -14331769, 12294344, 5203353, -8289287, -14418742,
-9376987, -9160092, 7528004, -13051869, -9797357, -5640903, 16310675, -4791036, 2298881, 2305324,
--312996, 2892124, -11470784, 8485782, -7109782, 19600084, -18173080, 8049306, -10507101, 9322227,
--8426189, 7282117, 1060857, 12947179, -11110007, 5584531, -5270462, -175020, 3288334, 7257421,
--7727183, 1115081, -8400419, 12192338, -10120554, -3979824, 7504919, 1777043, -4483409, -2537252,
-8376260, 3994857, -17219598, 9157407, 1796907, -870268, -1003949, 2674691, -1345399, 934155,
--478889, 1340030, 1538135, 3704946, -4183298, 11914239, -15506443, 4250407, -2011655, 2531883,
--2132988, 3706557, -1333587, -2991445, -562104, 1373316, -3438121, 51835424, -3731790, -16790100,
--25591026, -11638825, -14362371, 18807124, 10884521, -13673565, 1147830, 1612760, 6152541, 845572,
-13032541, 4497905, 10267656, -3514357, -358093, -3074123, 4820564, 11123965, -10310606, -60130,
--5095442, 369367, 13571023, -7682623, 1337882, -3467112, 5358509, 2766496, -7418483, -2747169,
-7999377, -2440615, 13031468, 9266392, -13553306, 4364761, 2902861, 7136625, 3036542, -12816719,
-8711804, -2386928, 8474507, 6774237, -15289010, 4220342, 75699, 3467649, -1677722, -6708739,
-10954851, -2663954, 4991826, 282931, -3244311, 5078799, -6483790, -891743, 9147207, -6233608,
--7470022, 15209553, -9762461, 14191646, -1432909, -11445014, 23520852, -21525840, 18786724, -6614250,
--11185705, 11904576, -10987063, 3304441, 3875134, -10765336, 9146670, -1909113, -643171, 5844914,
--7455527, 9865003, -3128347, -716723, 2479807, -1636383, 3511673, -1604170, 616865, 2909304,
--2704756, 4627291, -471910, -2565706, 5703180, -8694624, 4712116, -3840238, -1726040, 5498632,
-526670, -1593433, 2901251, -2024540, 2882997, 1483911, -3974455, 2766496, 629213, -865973,
--610422, 2506650, 609885, 4582730, -3483755, 1345399, 668404, -2498597, 5105643, -1392643,
--704375, -25298432, -43661564, 55049668, 157315520, 24978456, 15157476, -114990768, -142377088, -45506788,
--28068686, 96324304, 146695680, 75618808, 21789980, -49328772, -106307416, -96799976, -81243600, 6495601,
-121512680, 101782136, 58229556, 19874424, -52140368, -67434208, -53709640, -51753284, -18371186, 24640764,
-33679524, 69919920, 49918796, 12196097, -17032230, -9906342, -56323128, -27259620, -28508382, -38434052,
-22825066, 43255152, 24890410, 62943284, 16614007, -14875619, -24247238, -41751376, -33130304, -5116917,
--10304700, 12896176, 25936234, 23242216, 16481937, 11341398, -5804112, -22898082, -16314970, -19034222,
-6067178, 22327924, 7266548, 5529234, -9746891, -19909858, -3813394, 10201, -367757, 16230681,
-14410152, 16268799, 6324876, -5528160, -17451526, -25116968, -25837450, -16699907, 17784922, 26491896,
-32720134, 22734872, -5778342, -12766253, -13680545, -26926224, -11989938, 9904731, 5115306, 4945118,
-7796977, 3835943, 2946348, -4123169, -5485210, 4315906, 9302362, -140123, -880468, -6396817,
--8946417, -4558034, -5461588, -3112241, 6880001, -1168231, 14466524, 18000744, 10307922, -6157373,
--10259066, -11367705, -14500883, -10495289, -14350559, 7701950, 19622632, 18016314, 10569915, 11274826,
-4184909, -10974178, -21633750, -22013854, -11273215, -2219424, 6925098, 15789374, 23040888, 19011136,
-3513820, -12138651, -20381230, -14836965, -4997732, 207769, 5508833, 3605625, 8662949, 11211475,
-3253438, -4759361, -6631967, -3634616, -2797098, -2614025, -810138, 856846, 5131412, 3191161,
-310311, -6979, -373662, -967978, -2421825, -2735894, 886374, 2241436, 1613297, -320512,
--107374, -259846, -778463, -897111, 475131, 438087, 727460, 233002, 355945, -464930,
--589484, -1054415, -642098, 246424, 1287953, 281320, 518080, 476741, 131533, -660351,
-18254, -678605, -1860795, -1241782, 1226750, 1447941, 1504849, 761283, 38118, -990527,
--404264, -636729, -335007, -603443, 261993, 47245, 219580, 94489, 739271, 363998,
-710817, 58519, -84289, -674847, -530428, -1053878, -476205, -245350, 821413, 700617,
-1255204, 605054, 204548, -974421, -830539, -923955, -242666, -271657, 722628, 524523,
-583579, -68719, 97174, -347892, 54761, -282394, 124017, -255551, 161598, -164819,
-217970, -199179, 176094, -146566, 273267, -143345, 193274, -186831, 167504, -221728,
-181999, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+11112691, -5488432, 399969, -3257733, -293668, 4756677, 2197413, 3000035, -2619393, 3706557,
+-3826816, 4156455, 2018098, 5000953, 2055679, -899796, -5635534, 6063420, 4114042, 1569811,
+672162, 602369, -2414845, -2681133, 3077881, 1950989, 1999307, 3032247, -3072512, -190589,
+2771328, 3365107, -467078, -2437394, -4746476, 59056, 847719, -2807835, 1034013, 799938,
+-4280472, -2256469, -354872, 2199560, 17180, -2029909, 3936338, 780073, -1371705, -2896956,
+-682900, 387621, -5576478, 2600066, 3448322, -1890859, 4424353, 3683471, -604517, 3053185,
+1756642, 5931887, 1831804, 1139777, -940598, 2256469, -4765266, 646393, 2252174, -2314451,
+2582349, 3174518, 3428458, 2186138, 4512937, -938987, -2771328, -1395328, -1182727, 634581,
+-1066226, -3488050, 1653026, -1628330, -1869921, -2103460, 798327, 30602, -1097901, -820876,
+1389959, 137439, -174483, -344671, -150861, 694174, 930934, -119722, -65498, -766115,
+214748, -1404454, 129386, 994822, 1266479, -875100, -971200, 254477, 824634, -809064,
+-10548977, -7434589, -1020592, -4799089, -4045322, 1973538, -5994164, -5844377, 1704565, -2666101,
+-2330020, 2384781, -1870995, -4150549, -418222, -345208, -1133335, -1917166, -1082332, -4755603,
+-265214, -3439195, -2434710, -163746, 4249870, -972273, 6128382, -3205656, 3693135, 4176319,
+-4701379, 1614371, -1171452, 882079, -3321620, 1624571, 2190433, 3213709, -1643899, -4003447,
+-1357747, -2210835, 1293859, 1506997, -4790499, -639413, -3282966, -2689723, 925565, -3976603,
+-6293738, -1216013, 6220724, 1339493, 2189897, 306553, 1444720, 817118, 2301029, 2420751,
+6972880, 491237, -3073049, -4020626, -840740, -1930051, -497679, -8100309, 1688996, -602369,
+2592013, -1107028, 730681, -1953673, -931471, 7873212, 1598265, 7217156, -2445984, -1347546,
+565862, 2034204, 714575, 2430415, -2398739, 2641405, -2798708, -1767379, 1450088, 1016297,
+-96100, 102005, 67646, -632971, 206158, -1096290, -91805, -392453, -169114, 446140,
+554588, -616865, -1017370, -657667, 71941, 17717, 178241, 317291, -421444, -489089,
+-430034, 89121, -163746, 568546, 8607114, 9916006, 7635915, 5663452, 8026757, 3251827,
+3489661, -734439, 2281702, 8442295, 903554, 2573222, -3136400, -2095407, 6474127, -4345433,
+-7916162, 2392834, -6613713, 5706401, 1348083, 6847789, -2180233, -434329, -1687922, 2247342,
+2745021, -100932, -6738267, -1394791, 5775658, -3848291, 2604898, 1522566, -1300301, -1666447,
+6417755, 4832375, 11194295, 4473746, 930934, 2674154, -944893, 673236, 3526705, 2094870,
+9541270, -4093104, -2721399, 656593, 2457795, -1510218, 4422743, -4150549, 860067, -281320,
+-3179887, 979789, 958315, -4320200, -5832029, -3619584, 4618701, 2227478, 19864, -386010,
+3485903, 252329, 1155883, 6033356, 2982855, -1453310, -962610, 5361730, -4660577, 604517,
+-4201552, -1903744, -5430450, 1466195, -1130650, -3233037, -2109366, 3136400, 1942399, 549219,
+1850594, -3030100, -506806, -272194, 2335925, 53150, 166430, 417149, 697395, 1703491,
+1927904, 1505923, 117575, 797790, 1744831, 83215, -1586990, 1453310, -805306, -329102,
+357019, -282931, 1282048, 1150514, 584116, -18254, -445603, -477815, 550830, 718333,
+267899, 1104344, -2266669, -1465121, 1135482, -96637, -893353, -126165, 1211718, 95026,
+-835908, -1069447, 714038, -1055488, 90194, 18685256, -325881, 9153112, -1654099, -1434519,
+9827959, -9615358, -3322157, -750009, 4859756, 3370476, -2049773, 1872606, 918049, -8706436,
+2212982, 4661114, 4148402, -9757092, -3420942, 1104344, -6987375, -1921461, 547608, 319438,
+964757, -1072131, 4471598, -3148748, 3558917, 7322383, 7323993, -2119566, -4179540, -744640,
+8249559, -466541, -428960, 66572, 824097, -4272956, 745714, 3471407, 533650, 828392,
+3331821, -2191507, 2247879, 1304060, -891743, 5797669, 583579, 4611185, 923955, -1535451,
+2024003, 3085397, 2669322, -126165, -4513474, -4114042, -5437966, -2420751, -177704, 13959,
+-623307, 4064650, 3501472, -2628520, -5332739, 180926, 2791192, 3350075, -3256659, -599685,
+3173444, -273267, -422517, 4209068, 1981054, 2000381, -1551020, -1340030, -235686, 1821066,
+2712809, 71941, 2057289, 746251, 183610, 405338, 693637, 2522220, 1899986, 2837900,
+-1419487, 1344325, 204548, 367757, -398358, 306016, 432181, 136365, 379568, -451508,
+1363115, 1336809, -1219234, 337692, 765578, 844498, -392990, 2627446, 1023813, -379031,
+-4952098, -14006962, -3583613, -4789963, 946503, 2252174, -2333778, -2864206, -26261040, 453119,
+8477729, -6213207, -9817221, 7290707, -11116449, -1765232, -4966593, -5937793, -3627100, -3760781,
+403727, 4385162, -814433, 2406792, -2844342, 3284576, -2585034, -4072166, 1749662, -1581085,
+-6296422, -8119636, 3828963, 294742, 3778498, 1072668, 8467528, 1109712, 2926483, -4164508,
+-7078106, -2138357, -3524021, 6963216, -3313031, 92879, 1810866, -3593814, 9841918, 6444062,
+116501, -7950522, -9996000, -3476239, 3291556, -9087614, -253403, -4468377, -8590471, 702764,
+-13435731, -3058017, -1458141, -5078799, 8981313, -649614, -1453310, -239981, 5611912, 7112466,
+2130304, -7306276, -2369748, -1918777, 3848291, 1727651, 2192581, -4145180, -5206037, 3960497,
+2721399, 926639, 1322313, -345208, 2273648, 552440, 3446175, 899259, 770410, -386010,
+-146029, 466004, 2204929, 3114925, 1923609, -874563, 1233193, -4099010, 2027225, 2296197,
+-717260, -425739, 689879, -994822, -298500, -311922, -1280974, -1386201, -754841, -471910,
+706522, 1502165, -297427, -1938641, -60666, -2700998, 840740, 3492882, 1488206, 2026151,
+1447941, 5503464, -14974403, -22257594, 2765959, -5159330, 4986994, -6305012, -10969346, 172336,
+10168872, 1966558, 6255620, 4857071, 3886946, 2358474, -3506841, 2607045, 6772090, -10645613,
+-4890894, -3612604, -2317672, 3755949, -822486, 1222455, 7027104, 5974837, -2422362, -6052146,
+1445793, -3436511, -2486249, -5870147, -3949759, -8883603, 2168422, -3387656, -12885, 7689065,
+-1498407, 1388348, 2122251, -5696737, 4761508, 4539781, 6560563, -5804112, 10323491, -1774358,
+-7444789, -6444062, -8149701, 7549479, -2829310, -8824547, 2711198, -1443646, -6088116, 6447283,
+8854612, -3135863, -7285339, 5352603, 1787780, 4175245, -579821, 11732777, 7011534, -7000797,
+-3368328, -3354906, -2634426, 3853660, 5470715, 6924561, 42950, 834297, 2749316, -2881923,
+2617783, -861678, 4590247, 6352257, -8691940, -3998078, -4356708, -2841121, -4452808, -439697,
+-3142306, 1384053, -146029, -370441, -345745, 1083942, -2125472, 5383742, -658204, 2246805,
+848793, 1053341, -1045825, 132070, 169651, 244276, -1826972, 309775, -1183264, -1992328,
+-2868501, -926102, -158377, -550293, 120796, 273267, -574452, -456877, -1074279, -1071594,
+1726040, -65498, 584116, -1258425, -20787104, 60666, -3834869, 1449015, -108985, 7893076,
+5662378, 8173860, -1381906, 11122355, -5200132, 7590281, 9126269, 1777043, 9097278, 2063195,
+2318209, -2483565, -998580, -3765076, 7202660, -360240, -886374, 10321880, 6122476, 188442,
+2699924, -776852, -399432, 6749004, -3859028, -6485401, -60130, -814970, 3326452, -18514530,
+11142756, 12175695, 4715874, 2451353, 270583, -5815386, -12461848, 8304856, -5049808, -5539971,
+-3826279, 7467338, -5228586, 4648765, 4566087, -4301410, -2962991, -10611790, 4894652, -6863895,
+4097936, 802085, 3666828, 6628745, 10365904, 4576288, -4837744, -11331734, -2054605, 7118372,
+11431055, 8723615, -1772748, -2158758, -7405598, -12138651, -1330903, 8597451, 3751654, 2793876,
+-2750927, 11373610, -413391, 3905736, 1060857, -2058900, 1036698, -5625334, -2824478, -2785823,
+1888175, -1323387, -4129074, -2301029, -2859375, -2945811, 1205812, -4242354, -1838783, 964757,
+732829, 3501472, 159988, 605054, 561567, -789200, 2739116, -740882, 3118683, 1262184,
+-913754, -2277943, -139586, 3155727, 2138357, -248571, -2958696, -643708, 2594697, 2470143,
+322659, -397284, -364535, -1648731, -1334661, 2077690, 7845295, 27154394, 14717242, -1217086,
+2554432, 2506650, 5954972, 10805064, -1500554, 2214593, 18107582, 1966021, -788127, 11042361,
+7626788, -7416872, 4505958, 1220845, 7298760, 5143760, -12563853, 9704479, -5807333, -695785,
+1096290, 7630010, 1363115, 2168959, 5721970, 6679748, -6214281, 6859600, 20031728, -3384434,
+9133248, 9489730, -4948339, 7476465, 1968169, -4662724, -5180805, 3707094, -4626754, -12288975,
+-1578401, -428423, 1312113, -15770583, -3855807, 5051419, -10041634, -6628209, -16560320, 5644124,
+7670812, -11191611, -4012573, -5317170, 12048457, 447213, -6837051, -4655208, -7617662, 4002910,
+10089952, -6987375, 3911642, -2879776, 4884452, 11525545, 4811974, 9114457, 9140764, 11511586,
+1774358, -6204081, -6315213, 4712653, 7230578, 1201517, 4870493, -4926865, 2072859, -460098,
+-1542967, -5178657, 771484, -2206003, 344671, 4512400, 1878511, 1999844, 1509144, 4968204,
+-2939905, 341987, -765041, 1598802, -524523, 336081, 2091112, 715112, -1651415, 2744484,
+-521839, -3515968, 2338073, -2460480, -2070174, -2556579, -5496485, 3172370, -1226213, 2712272,
+-248571, -344671, 788127, 4300873, 2822331, 3857954, 1760937, 132070, 1557463, 4421669,
+-1673427, 4008278, 27974196, 7341710, 1273995, -1705639, -3891240, 74625, 5348845, -3476776,
+-6295885, -9623411, 854699, 6706055, -8338679, 4073240, 5709086, -2483565, 18923090, 6548752,
+-4543002, -3301756, -1279900, 6655589, -2649995, -6358699, -6766184, 4227859, -14924474, 440771,
+-4122095, -5589363, 4938676, 976568, -5398237, -3495567, -5184563, 7423314, -2362769, -12006044,
+-1334661, 188442, 999654, -6998649, -9616969, 834834, -1712618, -1403917, 3406983, -2144263,
+9210557, 1799591, 5533529, -5897527, 13359496, 3771518, -6529424, 8699456, 16872242, -4894115,
+-4037806, 8518531, 8021925, 3230352, 4913980, -10428717, -2677912, -11268384, 3374234, 10428181,
+4829691, -13196287, -2592550, 4090956, -12896176, -20410758, -1690607, 604517, 5849746, 18413062,
+1544041, -2165737, -5704254, -4433480, 2959233, 4624069, 3995393, -344134, 2143189, 121333,
+-4022237, 2472828, 3244311, -5258114, -4918812, 5552319, -1826972, 3241627, 2552284, 1607928,
+-1366337, 1152125, -96637, 1889249, 513249, 2899103, 116501, 2556579, 1858110, 536334,
+-2370822, 5379447, 1755568, 4908611, -1016834, -1700270, 1829656, -3361886, -546535, 2316598,
+-3105798, 765041, 1813550, 1065152, 1188095, 2617246, -1038845, -4866735, -62277, -539555,
+-5127654, 723702, -2156074, -637266, 2048163, 1656247, 1856500, -21657372, 10212358, 28646358,
+-11752104, 20084878, -4503273, -4406637, -6259378, -10474888, 7765838, 227096, 5313412, 5146982,
+-18817326, 178241, 8804683, -7718056, -4014721, -11950747, 21041044, -13184476, 10392747, 9706626,
+-12488691, -5233418, -4346507, 8736500, -9990094, -4165045, 10204305, -1858647, -2711735, -5047124,
+12439299, 2103997, -1997160, -5196911, 340913, -9543417, 10254234, -1306744, 4722317, 25450902,
+17154636, -14803142, -10396505, 3915937, -1318018, 10587631, -5866389, -8725226, -3057480, -16134582,
+-6180458, -2008971, -12304008, -7144141, 27313308, 6404870, 102542, -1453310, -296890, 7923141,
+9624485, -2145336, 9505836, 645319, -5216775, 908922, -14566918, -1218697, -13499082, -7413651,
+8136279, 11793980, -17901960, 7137162, -4589173, -5812165, 8671002, -1402307, -8243653, -603443,
+-3234110, -6591701, 3305514, 2259153, -4511327, -11248519, -5359583, -1250909, -885837, 8645232,
+2597918, 2059437, -4792110, -54761, -1981054, 4573067, 5254893, -2950106, 2237141, 3839164,
+4318053, 3270081, 4910758, -2085744, 326418, -3522410, 251256, -4081293, -2121714, 1374390,
+-1114544, -3320010, -778463, 1556926, -5294621, -2727304, -2886218, -1714766, -2042794, -2527588,
+-333934, 2835752, 189515, -369904, 3373160, -23025320, 4034585, 21110838, -5476084, -5546951,
+4694400, -6721087, -5275294, 5864778, -700080, -1323387, -163209, -14542222, 24553792, -26131654,
+-2412698, -725850, 8997956, 5230197, 406411, -10001905, -7010997, 2980171, 19187766, -1684164,
+-8339753, -5890548, -13475997, -1055488, -7882876, -6467684, -2713346, 4119411, -374736, 504122,
+-9104794, 1714229, 2681670, 5738077, 4958540, 5778342, -12387223, -75162, -2470680, 8058433,
+2146410, 16485695, 3663070, -3978750, 1539209, -9169218, 1611, 7126962, 9435506, -14394046,
+-10995116, -1166621, 14952392, -23412940, 6184753, 26756036, 14850386, -7312182, 2555506, -14570677,
+6165426, 13159780, -22660248, 4966056, -11004243, -3244848, -30746060, 44560, -12911745, 11902428,
+901406, -14430553, 9594420, -1024887, -18396956, -2572149, -11606075, 7514582, -6432251, -9753871,
+13214004, -2641942, 2407329, -4479651, -5616744, -1658931, 5694590, 4097399, -3073586, -896574,
+320512, -3351685, 2126009, 3092377, 4730370, -4794257, 1939715, 2392834, -5487358, 254477,
+2542084, -4093641, 476741, -2683281, 6263673, 3212099, 7603703, -3651259, -2709588, 2422362,
+-7058242, -852551, -1956895, -1214402, -274341, 1429687, -3914326, 170188, -433792, 1317481,
+1483911, 167504, -3946001, -2408403, -6229850, -17361868, 27473296, 8081518, 14374182, -16176994,
+-18252000, -3233574, 4815732, -4937065, -2457258, 9371619, 2517388, 3019899, 8137353, -20071992,
+-2226404, 431644, 5132486, -13905493, 1840930, 2563022, -9796820, -5233418, -13491566, -9965935,
+-75699, 4507032, -10916196, 993211, -4947803, -9525701, 3770981, 153008, 7750269, -21265994,
+-22388054, 4819490, -1920924, 8578123, 18781356, 2255932, -11812771, 16940424, -8363912, -15625091,
+-12147778, -5047124, 1350767, -16602733, -6466074, 16595217, 22348862, 9554692, 6264747, 4784057,
+-2572686, 14355391, 8057359, -16504486, -9055939, 202937, 1672353, 15700790, 10034117, 2607045,
+-2383707, -1823751, -7635915, 10457708, 8138963, 18105972, 4134443, 5348308, 2208687, 32430224,
+3687230, 12626130, -13356811, 1254131, 12313671, -29195578, 2426657, 3974992, 8279087, -2938831,
+4415764, -3728569, -965294, 5127117, -2403571, 15628849, -6205691, 9178882, -2368138, -5410585,
+-2924336, -5859946, 199716, 2532957, 3078418, -1138166, -2969970, 6576669, -1911261, 4435628,
+-2275259, -2377801, -4694936, 4967130, 5341866, 1232656, 537945, -3872987, -6830609, 3296924,
+-569620, 310311, 8181913, -2208150, 7171522, -1016297, 4202626, 2915209, 5529771, 1326071,
+-5063230, -883153, 18686328, 1072131, 23179938, -991064, -10548440, -11817603, -21633750, 3754338,
+-9109089, -834297, 1884954, 7561290, 11385421, 18956376, 19914152, -3316252, 17728552, -1557999,
+-1522566, 6455336, 14939507, 6254010, 4190278, -23995446, -12182138, -19558744, 9799505, 19105088,
+3768297, -8602283, 13519483, 19164144, -2617246, 2769717, -4535486, 16073378, 13797582, 11460046,
+-6920266, -12551505, -1952600, -3438121, -27386858, 4535486, 3752191, 2197950, -6961068, -3879429,
+-30544196, -11054172, -27723478, -5097053, -20761872, -11005854, 20029044, 5071283, 21100638, 1160715,
+-17272748, -8644159, -17973902, -34580392, 4851166, -21459804, -6190122, 20022600, 8455180, 7738994,
+1672890, -4075387, -1479616, 3764539, -14783814, 11644730, -25222732, -26214870, -1441498, -2421288,
+-3246995, -19304804, -4342749, 25081536, -1378148, 1397475, -6736656, -22023518, 11116449, -14856829,
+-5778342, -14788109, -9058623, -6985228, -4675072, -5413807, -3258270, 216359, 2595771, -13834627,
+-5907191, 2528125, 2455111, 7556995, 3587908, -4669167, -5780489, 4904316, -9269613, -1504312,
+2867965, -7197292, 2250563, 2066953, 5163625, -4941897, -1690070, -2675765, -376883, 3349538,
+-2030983, -384400, -2725157, 5379984, 7540889, -2560338, -1216013, 1965484, 2532420, 4671851,
+6682432, 1163399, -1137630, -1671816, -1585917, 10853919, 21787832, 19012746, 20429548, -11764989,
+-20550344, 15808164, -9356049, 16337519, 4874251, -26181046, 6579890, 4905390, -29532732, 15887084,
+-13463649, -13712757, 8042863, 9001715, 1403381, 10681047, 800475, 554588, -6928319, -3974992,
+6475737, -4076998, -10125922, 701690, -19022948, 6896107, -24181202, -14676440, 898185, 9617506,
+-3301219, -9973988, 3750043, 7591355, 5630702, 468688, 19473918, -44736916, -10165114, -12233677,
+-14868640, 19446002, -15658914, -2114735, -36107792, -10073846, -4290673, 1910187, 24074902, -5781026,
+3042984, -14510547, 12208981, -18060874, -11719892, 9431748, -41926396, 6132677, 22403624, 29135984,
+22225918, 14107357, 32724430, 18108656, -396748, -8062728, -8408472, -12625593, -28227598, -3025268,
+2631204, -39877696, -15800111, -12030740, -9016210, 12814035, 33429878, 39101920, 25865904, -13070122,
+10666014, -8411157, -1840394, 8886287, 6003291, -3365107, 2103997, 2954401, -787590, 1389422,
+-6152541, 3560528, 10958072, -5114233, 1453846, -9627706, 2367601, -4485020, -670552, -428423,
+8459475, 15068356, -5400922, 991064, 3640522, 6167573, -9102646, -14009646, 250182, 10999948,
+3164317, -8915815, 8382703, 4475356, -9134859, 6444062, 4060355, -3450469, -2819646, -915365,
+-1726577, 1709934, 3388192, -3137474, 6109054, -38489888, 119185, 6360310, 27023398, -8819178,
+12537010, 11294690, 6050535, 6155225, -41941968, 33122250, 18154826, 41051836, 15176267, -1802276,
+-15173046, -9707163, -9463960, -14892262, 10719701, 7801808, -15010374, -17186848, 9186398, 12321724,
+21563958, 6011881, -13220983, -19906100, 4329864, 3374771, 1488743, 2393371, 38221452, 12902082,
+7401840, 12553116, 13907641, 15519864, 481036, -24169392, 17143898, 53159884, -5303748, -14799920,
+-32219234, -6948184, 42991548, 5017059, 17869748, 5946382, -59122908, 12233677, 10774462, 1255204,
+6229850, -4134980, 1050120, 12103218, -31758598, -13227426, 27217208, 10059887, 3858491, -24003498,
+17314086, 6386080, -21495238, -23477364, -15617575, 21536576, 44900124, 41663332, 46028628, 46547780,
+2018635, -20691542, -16874390, -40647032, -13166222, 12895639, -32833952, -257698, -26718992, 404801,
+36338108, 14137422, 15082851, 18002356, 11399380, -10976863, -3469797, -13545790, 19855096, -11832098,
+-10287520, 3606699, -2072859, -7010461, -12786655, -3714073, 13606993, 12682502, -5668820, 19578072,
+-681289, 568546, -8614631, 2954938, 10309532, -2468533, -7428683, -7364259, 5270999, -4037806,
+11252277, 7027640, 9163313, 13087302, -12999792, 3465502, 1414655, 6052146, -2487860, -5583995,
+11969000, 2898029, 9824201, -5054640, 3769371, -7704635, -2285996, -11889006, 19034758, 38774428,
+-78578576, -27715960, 6136435, -45901388, -42101952, -18212808, -25567404, 2929168, -18826990, 49820548,
+-5297842, -17626008, -7151121, -38094748, -10564546, -30731564, -12809740, 5417565, -39675296, -6604049,
+30729418, -25687126, -7409356, 8917963, -152471, 12885439, 2690260, 110059, 11461657, 4320737,
+-19713900, -3622805, 17548162, -8797704, -24554864, -7990787, -29777008, -14581951, -52161304, 5174899,
+-35532800, 17249126, 6345814, -12934831, -46012520, 4361003, -4903242, 56802552, 22531936, 1154809,
+30766998, 13450764, 284005, 25130390, -29513942, -13921600, 2204929, 22240952, -24447490, -14734422,
+82184736, -7753490, 42569032, -33089502, -81068, -23611582, 17865454, -8319352, 27870042, 43858596,
+1162326, -30967788, 26590142, -32999308, -15007689, 11155104, -34294240, -22908282, -10935524, 24923696,
+47547972, -56572772, 47668768, 9543954, 13936632, 5266704, 6692096, 5080410, -7039989, 8616778,
+24693378, -12486544, 4334696, -2426120, 3226057, -26801132, -4811974, -8214662, 8082592, 8262980,
+26381300, -16485158, -9550934, -12854300, 18306224, -23401666, 5632313, 8602283, 7942469, 8674223,
+-38513508, -9199283, 13893682, -6659347, -16456704, -2194728, 4549981, 939524, 16330539, 8227547,
+12965433, -13020730, -11560978, 13093745, 3874061, 8783208, -8665633, 8834748, 6081137, 1622961,
+3328600, -3706020, -3988414, 108985, -19028852, -18533858, -29606284, 61269856, -35167728, 22497576,
+20187420, -31967442, 17576080, 9595494, 6972343, -5711233, 24314346, 12493523, -30752502, 21843130,
+25536802, 4926328, 4403952, 15374909, -310311, -30677340, 39950176, -22765474, 9117679, -16930224,
+-3799436, 5006322, -7358353, 32476396, 7411503, -4291746, -7694434, -1695975, 6483253, -33049774,
+10604274, -17128330, -11450920, -7923141, 56908, -16206522, -7576859, 3955128, 34461744, 386010,
+-7046431, -21846352, 9290551, 6060736, 1177358, 26659398, -6311455, -2746095, 31857920, 9997610,
+2024540, -30537218, -15814070, 19770272, 11226508, -28596966, 1111860, -65038688, -32032402, 58401356,
+-13461501, 31618476, 41566692, 11822971, 7261179, 18781356, -7751879, -22788022, 12516608, 3920768,
+-1237488, 26405458, 17375290, -18835042, -45175004, -9322227, 18788872, 5988795, -818728, 14825153,
+-16876000, 25588342, -12188043, 9641665, 12212203, 5321465, 17816062, 13382581, 21541408, 2523293,
+-5161477, 7796440, 20921860, -5264556, 18379238, 10925860, -11249056, 3764002, 9982041, 6578280,
+4379256, 13055627, 11265699, 4880157, 22042310, -6688875, 2983929, -2959233, -851477, -5328444,
+19699942, 15977815, 13294534, -5825050, 3061238, 22707492, -5202816, 16690780, 15553150, 199179,
+26611618, -23225036, 4100620, 35631048, 5399848, 10209137, -6466610, 25121800, 5789616, 9629854,
+34842384, -10768557, -58167280, 9878425, -6992207, 20031728, 6152004, -19738596, 10251013, 12007118,
+-22466974, -24697136, -16506096, -41233832, -41475964, 28566364, -6589554, -42634528, -13049184, 4384625,
+14139569, 13525389, -26096222, -28303298, 2813204, 39438536, -18822158, 15240691, -26489748, 9456981,
+-29887604, 19518478, 20595978, -14630269, -30758946, -21143588, -3400540, 12128451, -13183939, -8664560,
+-10970957, -39120172, -33819648, 17804786, -28387586, -5753646, 10162966, -23408646, -37869800, 14540612,
+19926500, -2467459, -45597520, 20491826, 17945448, 57795764, 303869, 15243376, 11334956, -24551106,
+9476845, -7554848, -49842560, -7525320, 30524870, 7379291, -25200184, -62459560, 39560944, 50662896,
+-14993731, 41015328, 47590920, 2610803, 2175401, 37760280, -24330990, 2069101, 62978716, -46225660,
+27008364, -39557184, -10908143, -3017215, 27118960, -8971113, 3940096, 15458124, -479426, -34931504,
+38763692, -6755984, -4560719, 6256694, 16173236, -26141856, 11563126, 7144678, -4020626, 8419747,
+9391483, -24145770, -3365644, 6116571, 12834436, 27194122, -2320893, -23051626, 11873974, 27946816,
+-21949430, 27295590, -12792560, -2335389, -9533754, 30771830, -21023328, 7738458, 18751290, -12465606,
+4590247, 3962644, -17594870, 4473746, 7329899, -2618320, -13440026, 9334038, 10749229, -5385889,
+21580064, -32021128, 7811472, 10424422, 146029, 2864206, 4154844, 22796612, -5309654, 12883828,
+-26446262, -82738784, 22180822, -9375377, 61703112, -21123722, -13872207, -24698210, -71238472, 32631550,
+-41631120, -24023900, 987843, 61740, 54465016, -39031052, -27709518, 36183488, 21171504, 18918258,
+-7095823, 18072686, -12996571, -17952426, -16931834, 42378444, 34855808, 55059332, -17807472, -20495584,
+652298, -3558381, 19858856, -33033130, 6766721, -34731252, 18250390, 34170760, 11373610, -28059022,
+18804978, -24739012, 55433532, 28432684, 7538742, 7536057, -8982387, -43734580, 24354612, -59338732,
+12021077, 11054172, 28614146, 23010824, -51654496, 15452755, -32688996, -19184008, 13560285, -5110474,
+18724984, 12228846, -47286516, 19128174, 42640972, 56893820, -16945256, 16780974, -23678692, 39906688,
+-57200912, -3051038, -10785200, 17864380, 36893232, 53561464, -43386148, 10619307, -57908508, 36845988,
+75211320, -19312858, -52052320, -4246649, -39381092, 49588620, 12124693, -25489558, -7672959, 2763812,
+-8999567, 35358320, 12858058, -20198158, 18585398, -28549722, 1328219, 26478474, -6089727, -32901596,
+35751308, -52405044, 14595373, -8072928, 20325932, -1514513, 12410845, -12249784, -7008850, 5093831,
+4015258, 5311264, 24193014, -25580826, -21875342, 929324, 5123359, -6117644, -27030376, -19605452,
+38100120, 10151692, -17823040, -20142322, -44806708, 52586504, 40779640, -16448651, -14816027, -31188442,
+523986, 39176544, 6932614, -16959216, -6606197, -9154186, 5728950, 3877819, 1476395, -5181878,
+-2567317, 7073275, -1131187, -4376572, -3366718, 4583804, 1416802, 9460202, -4684736, -66025460,
+47392816, -6887517, -975494, 14627048, 13820131, 17579302, 5956583, 8176007, -22106734, 20938502,
+6767258, -24191404, 16583942, -10105521, 426812, 20453708, 13108240, -34077880, 19489488, -16546898,
+28512678, -20983062, 7806640, -11110544, 13691819, -10626823, 6720550, -15436112, 32673964, -3612068,
+1657321, 8701067, 11476153, -16936666, -2579128, 6507413, 11420855, 8931921, -10427107, 3265786,
+1250372, -33170570, -1910724, 7632157, 12701292, 4417374, 8422431, -29917668, 5424544, -2461016,
+3723737, 5942624, -4986457, 5577552, 5646809, 1985349, -6263136, -7348152, -1462973, 32981054,
+-11077258, 5951214, 13331042, -7831336, 12725451, -14331769, 12294344, 5203353, -8289287, -14418742,
+9376987, -9160092, 7528004, -13051869, -9797357, -5640903, 16310675, -4791036, 2298881, 2305324,
+-312996, 2892124, -11470784, 8485782, -7109782, 19600084, -18173080, 8049306, -10507101, 9322227,
+-8426189, 7282117, 1060857, 12947179, -11110007, 5584531, -5270462, -175020, 3288334, 7257421,
+-7727183, 1115081, -8400419, 12192338, -10120554, -3979824, 7504919, 1777043, -4483409, -2537252,
+8376260, 3994857, -17219598, 9157407, 1796907, -870268, -1003949, 2674691, -1345399, 934155,
+-478889, 1340030, 1538135, 3704946, -4183298, 11914239, -15506443, 4250407, -2011655, 2531883,
+-2132988, 3706557, -1333587, -2991445, -562104, 1373316, -3438121, 51835424, -3731790, -16790100,
+-25591026, -11638825, -14362371, 18807124, 10884521, -13673565, 1147830, 1612760, 6152541, 845572,
+13032541, 4497905, 10267656, -3514357, -358093, -3074123, 4820564, 11123965, -10310606, -60130,
+-5095442, 369367, 13571023, -7682623, 1337882, -3467112, 5358509, 2766496, -7418483, -2747169,
+7999377, -2440615, 13031468, 9266392, -13553306, 4364761, 2902861, 7136625, 3036542, -12816719,
+8711804, -2386928, 8474507, 6774237, -15289010, 4220342, 75699, 3467649, -1677722, -6708739,
+10954851, -2663954, 4991826, 282931, -3244311, 5078799, -6483790, -891743, 9147207, -6233608,
+-7470022, 15209553, -9762461, 14191646, -1432909, -11445014, 23520852, -21525840, 18786724, -6614250,
+-11185705, 11904576, -10987063, 3304441, 3875134, -10765336, 9146670, -1909113, -643171, 5844914,
+-7455527, 9865003, -3128347, -716723, 2479807, -1636383, 3511673, -1604170, 616865, 2909304,
+-2704756, 4627291, -471910, -2565706, 5703180, -8694624, 4712116, -3840238, -1726040, 5498632,
+526670, -1593433, 2901251, -2024540, 2882997, 1483911, -3974455, 2766496, 629213, -865973,
+-610422, 2506650, 609885, 4582730, -3483755, 1345399, 668404, -2498597, 5105643, -1392643,
+-704375, -25298432, -43661564, 55049668, 157315520, 24978456, 15157476, -114990768, -142377088, -45506788,
+-28068686, 96324304, 146695680, 75618808, 21789980, -49328772, -106307416, -96799976, -81243600, 6495601,
+121512680, 101782136, 58229556, 19874424, -52140368, -67434208, -53709640, -51753284, -18371186, 24640764,
+33679524, 69919920, 49918796, 12196097, -17032230, -9906342, -56323128, -27259620, -28508382, -38434052,
+22825066, 43255152, 24890410, 62943284, 16614007, -14875619, -24247238, -41751376, -33130304, -5116917,
+-10304700, 12896176, 25936234, 23242216, 16481937, 11341398, -5804112, -22898082, -16314970, -19034222,
+6067178, 22327924, 7266548, 5529234, -9746891, -19909858, -3813394, 10201, -367757, 16230681,
+14410152, 16268799, 6324876, -5528160, -17451526, -25116968, -25837450, -16699907, 17784922, 26491896,
+32720134, 22734872, -5778342, -12766253, -13680545, -26926224, -11989938, 9904731, 5115306, 4945118,
+7796977, 3835943, 2946348, -4123169, -5485210, 4315906, 9302362, -140123, -880468, -6396817,
+-8946417, -4558034, -5461588, -3112241, 6880001, -1168231, 14466524, 18000744, 10307922, -6157373,
+-10259066, -11367705, -14500883, -10495289, -14350559, 7701950, 19622632, 18016314, 10569915, 11274826,
+4184909, -10974178, -21633750, -22013854, -11273215, -2219424, 6925098, 15789374, 23040888, 19011136,
+3513820, -12138651, -20381230, -14836965, -4997732, 207769, 5508833, 3605625, 8662949, 11211475,
+3253438, -4759361, -6631967, -3634616, -2797098, -2614025, -810138, 856846, 5131412, 3191161,
+310311, -6979, -373662, -967978, -2421825, -2735894, 886374, 2241436, 1613297, -320512,
+-107374, -259846, -778463, -897111, 475131, 438087, 727460, 233002, 355945, -464930,
+-589484, -1054415, -642098, 246424, 1287953, 281320, 518080, 476741, 131533, -660351,
+18254, -678605, -1860795, -1241782, 1226750, 1447941, 1504849, 761283, 38118, -990527,
+-404264, -636729, -335007, -603443, 261993, 47245, 219580, 94489, 739271, 363998,
+710817, 58519, -84289, -674847, -530428, -1053878, -476205, -245350, 821413, 700617,
+1255204, 605054, 204548, -974421, -830539, -923955, -242666, -271657, 722628, 524523,
+583579, -68719, 97174, -347892, 54761, -282394, 124017, -255551, 161598, -164819,
+217970, -199179, 176094, -146566, 273267, -143345, 193274, -186831, 167504, -221728,
+181999, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-2850785,
-10916733, 1292248, 2952253, 1063004, 1553168, -2618320, -6614787, -1257889, 3488587, 1264868,
--3275450, -440771, 2668249, -670015, -3941706, 1207960, -4541928, -2793339, -142271, 1270237,
--1291711, -1003949, 2814277, -3893388, -93416, 519691, 1894618, 1524713, 1442572, 4807679,
-2161979, -5923297, -1514513, -2679523, 755377, -129923, -446677, -3719979, -4877472, 6490770,
--2980707, 1606318, 1886564, 1646583, -6131066, -3461744, -1602023, 703301, -475131, -164819,
--557272, 1061931, 2346663, -3180423, -537, 1748589, 2009508, 2418604, 887985, 74088,
-2321967, 851477, -995359, -264141, 3765076, -2756295, -2939905, -1559610, -1173600, 3241090,
-1906429, 797253, -1188095, 3125663, -1368484, 1636383, -3645354, -314069, 292595, 795106,
-769873, -2916283, 810675, 2124935, 1063541, 390305, -252866, 2770791, 1315871, -237834,
-1766305, 1079647, 470299, -361851, 603443, 510564, 397821, -481036, 683974, 228707,
--530965, -395674, 966905, 250719, -71404, 54224, 59593, 202400, -860067, 676457,
--223338, 541166, -668941, -6176700, -3781182, 2685965, -6119792, -8559333, 1632088, 776315,
-1020592, 1293859, 1169842, -7354058, -1248225, 2182380, -4728222, 4960151, 4745939, 4143570,
--1703491, 412317, 1069447, 3180960, 674847, -73014, 576063, -2105071, 1941862, -739271,
--823023, -972810, 6028524, -3590593, 2057289, -2255395, -2014340, -2022393, 1566053, 3352222,
--3590056, -1736777, -1966558, 2461016, 2241973, 3722663, 2462627, 522375, 3188476, -2727304,
-1897302, 767725, 796716, 6804839, 1554241, 3377992, -5611375, -1475321, 2244657, -2756832,
-2589329, -1177358, -2097018, 750009, 4016331, 2767033, 1824824, -971200, 781147, 3054259,
--3719442, 4861366, -711891, 3987340, -1663763, 3293166, 3852586, 3310346, -1890859, -4859219,
--7256884, -4845797, 415538, -2533494, 4702989, 807991, 689879, 1291175, -3452080, -1034013,
--1583769, 1725503, -976031, -637266, 2038499, -2544231, -962073, 1028645, -1479079, 132607,
--1644973, -1253594, -1064078, -271657, 933082, 284005, 117575, -1731409, 10483478, 7463043,
-6187438, 5075041, 5805185, 2392834, -417686, -171262, -2105071, -683437, 7623030, -3357054,
--3378529, 5189394, 3920232, 4986457, -3486440, 1475858, -1298691, 1088237, 2273648, 3092913,
-490163, -2345052, -1675574, -3003793, -1026497, -1876901, -5354214, -705985, 4558034, -3581466,
--587874, 1620813, -2748242, -2567317, 2587181, -1440962, -3571265, -1983738, 2070711, -3129421,
--3933116, -1862405, -1153736, 1275068, -2739116, -5777805, 424665, -1002875, -782221, 1595044,
--4675609, -2347200, 103079, -2020782, 2603287, -719407, 1132261, -8485245, -2538863, 4708358,
--1864016, -4699231, 1396401, 762357, 1320166, -1787243, -6669548, -3093987, 7530152, 450972,
-2782602, 1529545, -1069984, 2230699, 3142842, 1255741, -1547262, -3659312, 1074, 834834,
--2717104, 1170916, -3525095, -424128, -2246268, -1163936, -2976949, -630286, -1700270, -2226941,
--1667521, 266825, -741419, 321049, -814433, 233539, -1504312, 1012002, 576599, -477278,
--278636, 1334661, -36507, -568009, -1341640, -751619, -612570, -166430, 120796, -32212,
--1549410, 14756971, 9152038, 8559333, 212601, 813896, 747861, -3572339, -7780334, -3004330,
-5980205, -4515621, 2741263, 7962870, 707059, -2573759, -939524, -1657321, -786516, 3201361,
-4663261, 131533, 1418413, 1846299, 3061775, 150324, -4150012, 1269700, -6725919, -2072859,
--796716, -1914482, -1171989, 820339, -1563368, -3586835, -2716030, -1305670, 353798, -1551020,
--4056597, 4873178, -1777580, 337692, -1213865, -3226057, 4075387, 11166915, 2749853, -3904662,
-6665253, 1499481, -1988570, 2002529, -1097364, -4318590, 64961, -1816234, 1714229, -3741454,
--6417755, 245887, 1116155, -7844758, 2383170, 1613834, 4420058, 2480344, 5827734, -1966558,
--3865471, -2299418, -1175210, 2813741, -991064, -5042292, 3475702, -2460480, -4543539, 3126199,
--4538707, -2508798, 1487669, -1657857, 1626719, -1093606, -1849520, 1518808, 3926674, -898722,
--1872069, -695248, 38655, 1363115, 2773475, 787053, -754841, -1016297, -957778, -329639,
-690953, -1973538, -649614, -578747, 3038153, 1526324, 2163053, -351650, 209917, 1644973,
-1147293, 797790, -46708, 283468, -299574, 854162, -511101, -406411, -7558069, -12109660,
--3636764, -6091338, 8691940, -2035278, -996432, 3166465, -7908646, -5680631, 4840428, -3928285,
--3527779, -266825, -268972, 780073, 3206193, -1395328, 1488206, -2148021, -1491427, -219580,
--1314260, -3563749, -261993, -823560, 3697430, 3617436, 3288334, -4400194, 2057289, 1388348,
-6096706, -3125126, -178241, -2151242, -4581120, 6512244, -6206765, -3148748, -2390149, 1475321,
-5513128, -5142687, 5701032, -693637, 3092377, 4634270, 806917, 3553012, -6694781, 1402844,
--2500208, 266288, -7094749, 51540, -2420751, -6470368, -4870493, 300111, 4750234, 163746,
--3399467, 5281736, -1808181, 3020973, -388158, -6716792, 9313637, -5879274, -1115618, -3382824,
-2351495, 3678103, 2526515, 3386045, 7544647, 5644661, -928250, 1107565, 3578245, 2143726,
--2645163, 3723200, 3002182, -656056, 1718524, -3839701, -5136244, -649077, -1637456, 2803540,
--3001645, -729071, -2885144, -773094, -1312649, -535260, 894964, 974958, 616328, -233002,
--709743, 1637456, 906775, -1908576, 1322313, -24159, -4452808, -510027, -1591285, 2444910,
--666257, -416075, 948651, -605590, 904091, 1888712, -120796, 1182190, 1400696, -389768,
-528818, 2706366, 467615, 3145527, -8428336, -12265353, 1467805, 920734, 787590, 7741142,
--2435783, -8636642, 1008244, 894427, -2148558, -590558, -7402913, -1582159, 1040456, 1016297,
-8506720, -1569811, 7634305, -1919314, -1837709, 529892, -7366943, 3089155, -2711198, 4451197,
--1154273, -2022930, -2670933, -1457605, 371515, -5688148, 9766219, -6797323, -10759430, 3146064,
-603980, -7732015, -2150705, -14745160, 357019, -5318244, 32749, -5765994, -4489315, 689342,
-623844, 2417530, -4527433, 3591667, -5122286, -10217190, 1308354, 2691871, -2960843, 3204583,
--1630477, -5719823, -4838818, -6932077, -3135326, -838056, 1220845, -2153926, 6432788, -93416,
--1874753, 435939, 484794, 1202054, 1087164, 627065, -5972152, -5797132, 1305133, 3905736,
-2478733, 546535, -1239635, 4878009, 2849711, -2452426, -1620276, -5719823, -2212982, 2371896,
-1275068, -3177202, 1326608, -978179, -806917, -1559610, -1672890, -741419, -2238215, -1899986,
-1053341, 329639, 1487132, 2269353, 279710, 1972464, 193810, -1529008, 2085207, 1111860,
--316754, 151398, -1056025, -1285269, 53687, -41876, -1194538, -88047, -306553, -207769,
-70867, -428423, 1384590, -2243584, -250719, -777926, 188979, 566936, 1416802, -105764,
--18823768, -4697621, 721018, -4778688, -3532611, -5983427, 1520418, 2124398, 4248260, -3215320,
--4041027, -4523675, 2234457, 5068062, -2552284, -2152316, -1321776, -767189, 2362769, -10472741,
--2625299, 5932424, 1893007, -3061775, 1083406, 5254356, -554588, -1330903, 1795296, -323196,
-12826383, -5529771, 3106335, 1041530, -5461051, 1788854, 1167694, -6159520, 4309463, -8754754,
--896038, 7756711, 1658931, -221191, -1677722, -5984500, -5217849, 1385127, 3286187, -2251100,
-1575716, 6425808, 3134789, -2664490, 3910031, -5698348, -13460428, -1772748, -5940477, 3732327,
--3824132, 9526237, 4717485, -437013, -1615982, -12349642, 3842385, 4721243, -3841848, 7547868,
--5917928, 2303176, -9881109, 4560182, 3393561, -11192148, -7176891, -2296197, 2710661, 3716757,
-8102456, -1133335, -447750, 5293547, 1173600, 26307, -2416993, 1210644, 1173063, 1588601,
-1682554, 431107, -271120, -1021129, -1212791, -3022583, -2562485, 2005750, 1371705, 1030255,
-2441152, -1016834, 1151051, 1264331, -688805, 2139431, -340913, -27917, -565862, -2438468,
--585726, 2786360, 574989, 2065879, -826244, 751619, -1154809, 3311957, 262530, 2775086,
-1177358, -1381369, 673773, 4627291, 8022999, 18249852, 19654308, 3840238, 5960341, -23622,
-2896956, 98784, 2167348, -5307506, 2537252, -3327526, 4443681, 4030290, 10181757, 1481764,
--1920924, 6241661, 4669703, 7523172, 494995, 4656819, 2867965, -2405719, 2486786, 11236171,
-1923609, -4939750, -2502355, 8302172, 5300527, 3964792, 7907035, -6036577, 2467459, 9212168,
--9096741, -11087995, 3785477, 5864778, 9762461, -4219806, -7039452, 5776731, 2255932, -919123,
-3764539, -1503775, -730681, -97711, 13846438, -4994510, 2929705, -3344169, -1967632, -1651952,
-7298760, -981937, 16099148, 7610145, -7492034, 8876087, 2106682, 4122095, 2081985, 1906429,
-2341831, -2945274, 5549635, -12634720, -3157875, 5747740, -12666395, 4376572, -10199474, 2418604,
-11636677, 2815351, 106837, 3132642, 1277753, -3097208, 962073, -3289408, 569083, 2630131,
--7524783, 4416300, -1206886, -1842541, 718870, 2391223, -1823214, -3078955, 1242856, 2782602,
--1263794, -2600603, -2353105, -1501091, 1283658, -1832877, -1431835, 1742146, 2640331, 1142461,
--1059246, 1590749, -918049, -3963718, -1571421, -46171, -1793149, 1153199, 1058710, 1685238,
-2946885, 3993246, -1638530, 5625871, -1717987, -3249680, -867583, 2013803, 680752, -3300146,
--1905355, -2389076, 30449708, 5063230, 4958003, -9058086, 13241384, -4532801, -370978, -3629784,
-924492, -8679592, -445066, 3811247, 1151051, -7107634, 8804146, -2269890, -4271345, 1051193,
-2893734, -9092446, -12312061, 4999342, -4970888, -7576859, 1647120, -226023, -3602404, 6331856,
--6373195, 1981054, 6534793, -1307818, 9433896, 2727841, -11515881, -12422656, -5040681, 610422,
-2421288, -9854266, 3690451, 3338800, 2033667, 2932389, 4463545, -10234907, -4823249, 2736968,
--11017665, -4234838, -73551, -11789685, -6025839, -4149475, 2546916, -6125697, -12426414, -6162741,
--6548752, 14446123, 7260106, -1371168, 2197413, -4095788, 11824045, 13777718, 1765232, 9176198,
-7017977, 2517925, 1880122, -5575405, -973884, -4945655, 6976638, -9099962, 502511, -2327872,
--13488882, -4329864, -1771137, 7248831, -6572374, 3542811, 3402151, 1209033, 919660, 3037079,
--3067144, 2385318, -1767379, 2668249, -517007, 4035659, 1444720, 171799, -2007360, -1014686,
--5138929, 2673080, -531502, 4350265, -4153234, -204548, -238908, 2512556, -263067, 2222646,
-1242856, 1117765, 1505923, 482647, -2709051, 3180423, 4522601, -2394444, -2884071, -3840775,
--1287417, -444529, -1086090, 160524, -755377, -20623896, 13919989, 22358526, -16778826, -9985799,
-4594005, 4010426, -3416110, 7342784, 1981591, -6255620, -7655779, -163209, -2474438, -5462125,
-2769717, -2517388, 333934, 6171331, -8342974, 1737851, 1089311, -4954782, 680752, -7861401,
-1503239, 11498164, 5843840, -1173600, -3733400, -965831, -6607807, -7022272, 3408057, 5799817,
--1874216, -3249680, -2332704, 3456375, 5764383, 2756832, 10593000, -5754183, 4334159, -2790655,
-1003949, 6600828, -2431488, -2134599, -12702903, -1976759, -9848360, 4888747, 3314641, 12563853,
--10854993, -4024384, -10509785, -17253958, -2947421, 7134478, -11944841, 2588792, -1377074, -8723079,
--10288594, -12942347, 17243220, 598611, 10212895, 7500087, 8664023, -4012573, -11584601, -8776766,
--10848014, 3701188, 8369281, -8134131, 3730716, 8941048, -6178311, 962073, 7221451, 8322036,
-1932735, -3082713, 3511673, -1582696, 1831267, -9029095, -912144, 3351148, -3131568, 1060320,
-459025, 294742, 1902134, 3280281, -3643206, -1361505, 1949378, 2906082, 736050, 1357210,
-2825015, -739808, 3058554, -2783139, 2055679, 3095598, 3457449, 278636, -1480153, 2673080,
--2406792, 565862, -649077, -2070174, -1097364, -2048163, -660888, 758062, -2511482, -6682969,
-2154463, 3420405, -16327855, 11842835, -1662152, -5870684, 9785009, 3703336, -9924596, -13749264,
--5585605, 205085, 73014, 831076, -5178120, 15977815, 6336151, 4930623, 3427921, 5120675,
--5043902, 1337346, 2910914, 2448131, 13975287, 1611150, -21422760, 2733210, 8568460, -7781407,
--12159589, -2406792, -6721087, -3710315, 732292, 15081778, 8706436, -1417876, -611496, -4420595,
--13388487, -4345433, -11110544, 7820599, 10300405, 216359, -6162741, -2065342, -2719251, 4923643,
-6443525, 7215008, -16821240, 3250217, 268972, 1517734, 11183558, -6650220, 4394826, -6068789,
--4723391, 1257352, 7199976, 13573170, -2469606, -8716636, 2506650, -15724412, 12253005, 6820408,
--1895154, -6486475, 3060701, -3621731, -8124468, -6455873, -7402913, -3357054, -1836099, 483184,
-6306086, -5092221, 17968532, 766652, -3154117, 1049583, 5096516, 239444, -586800, 5932961,
-3709778, 3048890, -159451, -2907156, -2624225, -715112, -803696, -2695629, -7841000, 3898220,
-3336653, -2856690, 625992, -4180614, -3496640, -1484448, -1220308, -170725, 6142877, -1420560,
--2477659, -1139777, -808528, 3947612, 6871948, -2472828, 3658775, -1200980, -5007932, 5180268,
--5392869, -4106526, -3093987, -4151086, 401043, 2988224, 1121523, 3059091, -425202, -1333051,
--776315, -3413962, 1472100, -2027761, -4248797, 2659122, -1977296, -2020782, -1938641, -261993,
--1565516, -128849, -1367410, -1098438, -215285, -514322, -7397545, -1302449, 7330973, -13463112,
--4345970, 9386114, -11687143, -751082, -1532230, -1096827, -13545790, 13460964, 5247913, -8683887,
--1976759, -3491809, -3744138, -19554450, -3214783, -8714489, -22944790, 5219996, 3070365, -9842991,
--8891119, -11672110, -14166413, 12123082, 6194954, 12741020, 18254, 26292180, 797790, 13925895,
-18188112, -1753957, 5267241, 19573776, -13337484, 6315213, -8206609, 13590350, -4568235, 26086020,
-11243688, -7594576, -12504797, 2406256, 5524939, 11113765, 2448668, -8890582, -2575370, 8903467,
-18651970, -7573101, 12364137, -4264903, 7373385, -14545980, 5459441, -7727183, 5467494, 1373853,
-1524177, -2314987, 11351599, 16869020, -30378840, 9480603, 5783711, 4846334, -5913633, 4338454,
--21928492, 2230699, -76236, -2948495, -8664023, -6729677, -7558606, -1667521, 14852534, -8424041,
--5648956, -12013024, -17180, 11407433, -5987185, -5759015, 8051990, 85899, 5714991, 1770063,
--1995549, 545998, 2248952, -5532992, 2516851, 1591285, -5587216, -3874597, -2986076, 1888712,
-2957085, 3948686, 9881109, -704912, 7358890, 4261145, 2054605, -4791573, -2126009, -7437273,
--4053376, -908922, -3146064, -3322157, 3827890, 2921652, 4670240, 7064148, 715649, -1107028,
--1387811, -3863323, 2044941, -797790, -521302, 2615635, -3500935, 14851997, 15925202, -3527242,
-16555488, -915365, -3370476, 1233729, 9338333, -3539590, -4131222, -1994476, -11651709, 1854889,
--3291019, 18392660, 12219719, -8868571, -9255655, -17595944, -6350109, 12658879, 22997402, -10504416,
-7150047, 1466731, 3084324, 12422119, 9006546, -18025978, 3633006, -6480032, -3583077, -7477001,
--3982509, -7887171, -17242146, 2963528, 11639361, 4368519, 27174258, -6658810, -3673808, 18765786,
--6802155, -1118839, -4138738, 4921496, -20621748, -13344463, 7252053, 15406048, 22613540, 26847304,
--19717122, -10330470, -975494, 8936216, -825171, 30472256, 8562017, 4497905, -23633058, 1577864,
-235686, 11391864, 15015206, -11209328, -3631932, 4607963, -4795331, -66572, 17051558, 6063420,
--16732656, 4317516, 8922795, -8130373, 26483306, -9201431, -14063334, -19896436, 14724222, -3237332,
--16581258, -13258027, -2957085, -677531, -6558415, 333397, -7145752, 1343251, -9973988, 644245,
-4971962, -3520263, 3929895, 711891, -6004901, 624918, -28454, -1218160, 715649, -4174708,
-5055714, 2147, -2477123, 5658083, 5860483, 217433, -1528472, 2508798, -5388037, -2308008,
--4314295, -862215, 4576825, -3580929, 2044404, 4412005, -8135742, -2961917, -1618129, 1330366,
--1476395, 3519189, 8025684, -2261300, -4674535, -2327336, 5212480, 1451699, 563178, 4115116,
--2304787, -1703491, -1415729, -2309082, -1845762, 3610457, 31375272, 14790257, -8170639, -2705293,
--28840706, 2190970, 7700877, 1955284, 43151536, -5511517, -3215320, -18996104, -16313896, 6650757,
--13333726, -8236674, -8931384, -6102612, 10744934, -7062537, -12263742, -10678362, 992137, 10733660,
--13878650, 3060164, 6315213, 1321239, 15575162, -1880659, 1241782, -15883326, -22229140, -9240622,
-10210748, -12354473, 2991445, -10388452, -38830264, -20998632, 11651173, 745177, -22251152, 3342558,
-31005368, -1523103, -804770, -12199855, 6780680, -13455059, -23950886, 505196, 3630858, -9393093,
-4586488, 8909373, -2232846, -7936026, 6445136, 8273718, 15538118, -9061307, 11669963, 14870787,
-6291590, 25944286, 2900714, -16320876, 18977312, 1028645, 3153580, -3584687, -3855807, 11620034,
--11652246, -1791001, 28880434, 22553948, -14070850, 14390288, -4229469, 26707180, 11266236, -9431211,
--21472688, -1060857, -7880728, -9432822, 5998459, -8513162, -302258, -2277407, -7541426, -12681965,
--2510409, 10489384, -11485816, -71941, -7157563, 954557, 4414153, -4760971, -13437879, -2494302,
--6398965, 8006893, 4859756, -3397856, -8925479, -3815005, -9601399, 5592048, -4759898, 2972117,
-3654480, 5320391, 4271345, -7547332, -5341329, -8462159, 2360622, 5192616, 593779, 10480257,
-11164767, 5973763, 4466229, -3062312, 5901822, -854162, -3010772, -22802518, -23571318, -28825674,
-39631812, -22069690, 5479305, -1500554, -12195560, 19677930, -23171348, 9870372, 42135776, 25455734,
-6284611, -34190088, -1591822, -22652194, -11033234, -20706574, -1622424, 5532455, -3357054, 15793668,
--7399155, 2403034, 8268886, 22185654, 3453691, 2836826, 27507654, -18149994, -2200097, 11727945,
--4903779, -14129369, -8879308, 13440563, -11592654, 5493263, 23609436, -6721087, -41589780, -2806761,
-10850161, -51756504, 31440772, 23732378, -19185082, 31712428, 22014392, 14023605, 33504504, 483184,
-17393544, 1736241, 2374043, 11715060, -20699058, 20798380, 28924458, 21755084, -22306450, -4654134,
-31758598, -15447924, 25262460, 22605486, 53716084, 31967978, 2214056, 3485903, -6514392, 6489696,
-9675488, -31117574, -43856984, -15606837, 4237522, 1458678, -5967320, 34433828, 16717623, 6336688,
--14826764, 13546327, -10387915, -13856638, -6582038, 15497316, 18669150, 3348464, -2875481, -3687766,
-962073, -21617644, -4660577, -5703717, 7362111, 3825742, -10703595, -8637179, -89657, 16756815,
--4277788, -6667937, 888521, -6896644, -16691854, 8433705, -3246459, -6843494, -9594957, -75699,
-6150393, 988379, -30000884, -1854889, 15482283, -2403034, 1077500, 2388002, 4835597, 12662637,
-10656351, 336618, 355945, -5012227, -1077500, 2487860, 24160802, 29552060, -58117888, -53505628,
-23430658, -15476915, -16644609, -7133941, -20145544, 7080791, -32732482, 41408316, 15786689, -17435956,
--199179, -17054778, -12557948, -13767518, -15444702, -10241886, -39502960, -35770100, -6467147, -8207146,
-2456185, 3282429, 7089918, -2605972, 5254893, 6548752, 17853106, 19462644, -7177964, -9969693,
--11379516, -9906879, -22253300, 33341832, -11597485, 8076686, 25026238, 23387708, -8693014, -10118406,
--18484466, -12341589, -15137075, 25626460, 2954401, 3113315, -31567472, -11327439, 46167676, -4505958,
-42999600, -8687645, -15800648, -10151155, -17888538, -18593450, -3173444, 170188, -25279640, 2112587,
-12430172, -1060320, 9823127, -58910844, -23557358, -16505022, 31515396, -7486665, 5393942, 10674067,
-49342196, 13923747, -4272956, -5000416, 42529304, 25540024, 6493454, 8259222, -1903207, 33581276,
--13727252, -19119046, 10615012, 15803332, 28287192, 26098906, -15002321, 17728552, 13508209, 14300094,
-4520990, -10140955, -19847044, -17034914, 10933376, 14817637, 8171176, 5375152, 17715666, -1641214,
--4524748, -913754, -1153736, 9164386, 5751498, 11939472, 21006686, 14718853, 23989002, 6506876,
--20981452, 6881612, 6005975, 18639084, -27917, 14643691, 6514392, 14097693, 653909, -26616450,
--3124052, -5712844, -1455994, -11895449, -6794639, -30775588, 63933808, -20638928, -12850542, 37904160,
--24039468, -36267240, 33628520, -48824652, -14139569, 11512660, 8366060, -34060700, -13379360, 29234232,
-167504, -5767068, -19037980, 22939958, -22787486, 1498944, 18041546, -6041409, 16563005, 103079,
--8217346, 5538361, 3914863, -9912248, 15745887, -8702677, -3544422, 4683662, -338766, 950798,
--2990371, 4649839, 9981504, 16145319, 23265838, 11385421, -9649718, -2728378, -14803679, 13610214,
--4942434, -21399674, 4985920, 33823, -12189654, -29242284, 20522428, 1494112, -13531831, 32920924,
-1872606, -10280541, -5975910, 48783848, -45727980, -49279916, 29979946, 46747496, -86427624, 333397,
--32003948, -29131690, -12872554, 31343598, -24303610, 41507100, -5904507, -1136556, 55906516, -15904801,
--43300788, 53631792, 63303524, -61614528, 68728064, -23294292, 1692754, 56680148, -19014358, -21891986,
-15587510, 15118285, -7297687, -3032247, 10560251, 1932198, 1364726, -13699872, 18711562, -74088,
--1193464, 166967, 2543695, 8244190, 5149129, -7024419, -7405598, 7644505, 18689550, -16358994,
--14894947, -4253092, 19583440, -926102, 10502806, -3080029, 4434017, -181462, 4545686, -2495913,
--3318936, -23337778, -9562745, 5485747, -8196945, -2626909, -8048769, -12774306, 19644644, 11850352,
--33735356, 13194140, 17779554, -3806415, 76773, -12319577, 17642116, 37699612, -17431662, -24453396,
--6270116, 5694590, 39033736, 28547038, -9734543, -3416647, 12443057, 31134754, -10113574, -2096481,
-19674708, -25067576, -20893942, 16629576, -10914049, -8752606, -10018011, -1259499, -16749299, 1053878,
-12137041, -7517804, 9465034, -8374650, -4671314, -5388574, -23300734, 3236258, -9197136, 14240501,
-31432182, 1427540, 15870441, 12545063, 1594507, 5587216, 10124312, 32648194, -22874996, 15638513,
-14412837, -17128866, 11708081, 10720238, 3934727, -15227807, -29488708, -30523796, 10420128, 10590852,
--10982768, -50831476, 41575284, -14107894, -21700860, -13056701, 41829760, -19717658, 45705432, -253940,
-15668578, -42838540, 40727564, -18694382, 18316424, -5702643, -57773216, -18615462, 11973832, -36244156,
-37511708, 3722663, -52907556, -60317448, -30389042, 41502804, 10838887, -37536404, 45989972, -49138184,
--1865090, 88028040, 13760538, 4771172, 9336722, 6446209, -22603876, 23884850, 2365990, 12086575,
--14967424, 22951768, -12219719, -12456479, -9632001, -1540820, -24696, 6787122, -1705102, -3648038,
-5187247, -8319889, -16075526, 14976551, -4960151, -2848637, -19174344, 8834748, 5086852, 8375186,
-3050501, 9701257, -6658810, 2114735, 28169080, -3420942, 1023276, 14326400, -14851460, -3508452,
-1570347, -1782411, 11458436, -11259257, 12785581, -4406637, -30219390, 1795296, -7277822, 13682155,
-10668699, 9286256, -10496363, 12161737, -19442244, -36686536, -17180, -38984344, 10567230, -3352222,
--7178501, 13211319, 21432960, -13737453, 2917894, 23875186, -18803904, 32335198, -4489315, -35330936,
-30212410, -14518600, -6703370, 27182848, -34892852, 9247601, 383326, 12687333, -5658083, -12640089,
--53157736, 12234751, -22067542, -53097608, 64071784, -43198780, -18251464, -8515310, -14861124, -32594506,
-18104360, 44438952, -27692876, 12518219, -40069360, -22473416, -22935126, 20107964, 3368865, 58271968,
--10261751, -4810900, -17618492, -50180788, -194884, 24453934, -18818936, 20527260, 24390046, -20775294,
-1814087, -17717814, -74457552, -38903276, -23104240, -77945064, 49556408, 65650184, 30598958, -66100084,
--53413288, -118582976, 16860430, 140959216, 64918432, 24890410, -37352256, -130084896, -29840896, 30083562,
-88599272, 89115200, -60890288, -51290500, -24110872, 11587285, 5825587, 96792992, 1307281, -11864847,
-7558069, -9669582, -23977192, 33994128, 5781563, -7390028, 18513994, -15539729, -26720066, 18599356,
-15831786, -45024144, 29896194, -6838662, -10256919, -24058796, 25040734, -24317568, 28708098, -14458471,
-29386704, -35260072, 13656922, -9981504, 70867, 25193204, 41103372, 11565810, -15835008, -11174968,
--3003256, 22719304, -4092567, 32751810, -26232586, -20557860, 9051107, 32434520, 3394098, 19652696,
--26386668, -7839926, -8767639, 20141250, -1759326, 2996814, -6166500, -56150792, 40827960, -8283918,
--8521215, 667331, 18577344, 9664, -3149822, 13157632, 4984847, 4160213, 21857088, -13964012,
-195958, 10838887, -3546032, -2360622, 13912473, -12922483, -2705293, 3486440, 21672404, -14422500,
--9652402, 11608760, -210990, 6374269, -20767778, 27378806, -6250251, 9024800, -5700496, 3245922,
-15451682, 6321655, -3192235, 12666932, -4593468, 12807056, -9992778, -1094143, 13901199, -3440806,
--5284958, -27668716, 3122441, 20823612, 2560338, 9592273, -13499619, -4709432, -7945690, -9012452,
--3223910, 14980309, -5240934, 9007620, -11709155, -14710800, -5837935, 3113315, 28308130, -11037529,
-13059922, 531502, 3124589, -13979045, 7813083, 14210973, 1124745, -13522705, 10558103, -9111773,
-7191923, -5676873, -3545496, -5442798, 2240899, 9882720, -4783520, -2911451, 5056250, -907312,
--7387881, -1952600, 7947837, 6153078, -6357089, 845035, 7296076, -6442, -3867618, 827318,
--6394670, 4765266, -59593, 2295123, -2704219, 1029182, 4786204, -2495376, 5546951, 704375,
-5094905, 3319473, -7257421, -8031589, -2245731, 13263933, -8242579, 9130027, 7917772, -5782100,
--13598403, 10324565, -8588861, 11703249, -723165, -2263985, -4529580, 1722282, 2397129, -1000727,
--1192390, 746251, 1615445, -5630166, 53195316, 10498511, -28427314, -20284594, -31403190, -10028212,
-6105833, 16653736, -5167920, -6804302, -5766531, -5656472, -5250598, 7585449, -3828427, -1117765,
--1634772, -5584531, -1275068, 8344048, 1248225, -2475512, -8342974, 9584220, -12445741, 7296613,
--4416837, -12305081, 95563, 5544803, 6328635, 4876399, -7201587, 1572495, -2281702, -4007205,
-14805289, -13187697, -2360622, -573378, -870268, 1347009, -2162516, -7759396, 6538014, -12275017,
-11709691, -1743757, -8163122, 2799782, -4194573, 10354629, -6039261, -3701725, 11246909, -10075993,
-3529926, -4836133, -1070521, 8575439, -6107444, -2464238, 7742753, -5312338, 2062658, 773631,
--6225018, 15206332, -13263396, -1152662, 5895380, -3398930, 9764608, -4428648, -2110977, 2530810,
-3248069, -1063004, 2194192, -874563, -4274030, 3854196, 34897, 366146, 2159295, -288300,
-3076807, -3075197, 932008, 600222, 723702, -387084, -1853815, 2474975, -316217, -664109,
--1756105, 2187749, 3620658, -1221918, -1791001, 1108638, 2133525, -2644626, 2224256, -1996623,
--1672890, 5722507, -834834, 2107755, 3062312, -3971234, 9790378, -3207804, -467615, -498753,
--5581847, 5814312, -3591130, -5836861, 5229660, -25178172, -37771016, 49514532, 154568896, 13208098,
-13481902, -105378096, -133237400, -27790050, -28198070, 78477104, 133639520, 68540696, 13228499, -48365628,
--94039384, -66421668, -47443820, -2485176, 65125664, 95101312, 51438140, 11759084, -33318208, -59299004,
--33160906, -31955630, -29876866, 18885508, 38789996, 38180648, 38517268, 9234717, -16648367, -6863895,
--25319906, -39709120, -4362076, -11852499, -7974144, 35823248, 20744692, 29925184, 18197240, -13589813,
--32622960, -7880728, -21189758, -3293166, 14886894, 4536559, 8062191, 16183437, -8170102, -11503533,
--2603824, -6763500, 6578280, 10446434, 609885, 12898861, 7703561, -13562970, -12993887, -20784958,
--17721572, 780073, 21479132, 32480690, 15695958, 4101694, -7505456, -21755084, -3684545, -24528558,
--14996415, 11540577, 9108015, 27460948, 9303436, -6994891, 8144332, -14243722, -24656870, 4345970,
-6318971, 8282308, 7711614, -1548336, -3033321, -2365453, -10218264, -7874823, 5445482, 8382703,
-8489540, 8555038, -2311229, -8268349, -5420249, -3173981, 280784, -170188, -9290014, 2398739,
-11843909, 6359773, 7396471, -2178085, -11785390, -6881075, -6928319, 2743947, 8384313, 5492190,
-5209259, 2232846, -1621350, -8979703, -11766600, -5408975, 804770, 7337415, 11763915, 7169911,
-7284802, 4563403, -7343857, -13770202, -17611514, -11453067, 5042829, 9943386, 12964359, 17875118,
-5523865, -5325760, -8915815, -7279970, -5322002, -5087926, -5100274, -1471026, 4103305, 7919383,
-7060390, 5502927, 3918621, 926102, -4853313, -8600135, -8225399, -4184909, -49929, 3730179,
-5093831, 4672925, 2487860, 1524713, 624381, -717260, -3099893, -3832185, -3122978, -1045288,
-1347546, 2326799, 1929514, 481036, -499290, 372052, 323196, 528281, 221191, -743566,
--1465658, -465467, 770947, 235149, -1199370, -609885, 351114, 301185, -155156, 956167,
-2083059, 1921998, -816581, -2188286, -1661079, -549756, -84826, -14496, -187905, 651761,
-1414655, 1401233, 214212, -270046, -246424, -579821, -1079647, -862752, -547071, 243203,
-555661, 992674, 790274, 294205, -211527, -266825, -624918, -544924, -489089, 25233,
-382789, 657130, 253940, 87510, -261993, -265214, -382252, -9127, 214212, 388695,
-97711, 89121, -155693, -163746, -266825, 10201, -2684, 128312, 16106, 113817,
--43487, 49929, -78920, 36507, -69256, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+10916733, 1292248, 2952253, 1063004, 1553168, -2618320, -6614787, -1257889, 3488587, 1264868,
+-3275450, -440771, 2668249, -670015, -3941706, 1207960, -4541928, -2793339, -142271, 1270237,
+-1291711, -1003949, 2814277, -3893388, -93416, 519691, 1894618, 1524713, 1442572, 4807679,
+2161979, -5923297, -1514513, -2679523, 755377, -129923, -446677, -3719979, -4877472, 6490770,
+-2980707, 1606318, 1886564, 1646583, -6131066, -3461744, -1602023, 703301, -475131, -164819,
+-557272, 1061931, 2346663, -3180423, -537, 1748589, 2009508, 2418604, 887985, 74088,
+2321967, 851477, -995359, -264141, 3765076, -2756295, -2939905, -1559610, -1173600, 3241090,
+1906429, 797253, -1188095, 3125663, -1368484, 1636383, -3645354, -314069, 292595, 795106,
+769873, -2916283, 810675, 2124935, 1063541, 390305, -252866, 2770791, 1315871, -237834,
+1766305, 1079647, 470299, -361851, 603443, 510564, 397821, -481036, 683974, 228707,
+-530965, -395674, 966905, 250719, -71404, 54224, 59593, 202400, -860067, 676457,
+-223338, 541166, -668941, -6176700, -3781182, 2685965, -6119792, -8559333, 1632088, 776315,
+1020592, 1293859, 1169842, -7354058, -1248225, 2182380, -4728222, 4960151, 4745939, 4143570,
+-1703491, 412317, 1069447, 3180960, 674847, -73014, 576063, -2105071, 1941862, -739271,
+-823023, -972810, 6028524, -3590593, 2057289, -2255395, -2014340, -2022393, 1566053, 3352222,
+-3590056, -1736777, -1966558, 2461016, 2241973, 3722663, 2462627, 522375, 3188476, -2727304,
+1897302, 767725, 796716, 6804839, 1554241, 3377992, -5611375, -1475321, 2244657, -2756832,
+2589329, -1177358, -2097018, 750009, 4016331, 2767033, 1824824, -971200, 781147, 3054259,
+-3719442, 4861366, -711891, 3987340, -1663763, 3293166, 3852586, 3310346, -1890859, -4859219,
+-7256884, -4845797, 415538, -2533494, 4702989, 807991, 689879, 1291175, -3452080, -1034013,
+-1583769, 1725503, -976031, -637266, 2038499, -2544231, -962073, 1028645, -1479079, 132607,
+-1644973, -1253594, -1064078, -271657, 933082, 284005, 117575, -1731409, 10483478, 7463043,
+6187438, 5075041, 5805185, 2392834, -417686, -171262, -2105071, -683437, 7623030, -3357054,
+-3378529, 5189394, 3920232, 4986457, -3486440, 1475858, -1298691, 1088237, 2273648, 3092913,
+490163, -2345052, -1675574, -3003793, -1026497, -1876901, -5354214, -705985, 4558034, -3581466,
+-587874, 1620813, -2748242, -2567317, 2587181, -1440962, -3571265, -1983738, 2070711, -3129421,
+-3933116, -1862405, -1153736, 1275068, -2739116, -5777805, 424665, -1002875, -782221, 1595044,
+-4675609, -2347200, 103079, -2020782, 2603287, -719407, 1132261, -8485245, -2538863, 4708358,
+-1864016, -4699231, 1396401, 762357, 1320166, -1787243, -6669548, -3093987, 7530152, 450972,
+2782602, 1529545, -1069984, 2230699, 3142842, 1255741, -1547262, -3659312, 1074, 834834,
+-2717104, 1170916, -3525095, -424128, -2246268, -1163936, -2976949, -630286, -1700270, -2226941,
+-1667521, 266825, -741419, 321049, -814433, 233539, -1504312, 1012002, 576599, -477278,
+-278636, 1334661, -36507, -568009, -1341640, -751619, -612570, -166430, 120796, -32212,
+-1549410, 14756971, 9152038, 8559333, 212601, 813896, 747861, -3572339, -7780334, -3004330,
+5980205, -4515621, 2741263, 7962870, 707059, -2573759, -939524, -1657321, -786516, 3201361,
+4663261, 131533, 1418413, 1846299, 3061775, 150324, -4150012, 1269700, -6725919, -2072859,
+-796716, -1914482, -1171989, 820339, -1563368, -3586835, -2716030, -1305670, 353798, -1551020,
+-4056597, 4873178, -1777580, 337692, -1213865, -3226057, 4075387, 11166915, 2749853, -3904662,
+6665253, 1499481, -1988570, 2002529, -1097364, -4318590, 64961, -1816234, 1714229, -3741454,
+-6417755, 245887, 1116155, -7844758, 2383170, 1613834, 4420058, 2480344, 5827734, -1966558,
+-3865471, -2299418, -1175210, 2813741, -991064, -5042292, 3475702, -2460480, -4543539, 3126199,
+-4538707, -2508798, 1487669, -1657857, 1626719, -1093606, -1849520, 1518808, 3926674, -898722,
+-1872069, -695248, 38655, 1363115, 2773475, 787053, -754841, -1016297, -957778, -329639,
+690953, -1973538, -649614, -578747, 3038153, 1526324, 2163053, -351650, 209917, 1644973,
+1147293, 797790, -46708, 283468, -299574, 854162, -511101, -406411, -7558069, -12109660,
+-3636764, -6091338, 8691940, -2035278, -996432, 3166465, -7908646, -5680631, 4840428, -3928285,
+-3527779, -266825, -268972, 780073, 3206193, -1395328, 1488206, -2148021, -1491427, -219580,
+-1314260, -3563749, -261993, -823560, 3697430, 3617436, 3288334, -4400194, 2057289, 1388348,
+6096706, -3125126, -178241, -2151242, -4581120, 6512244, -6206765, -3148748, -2390149, 1475321,
+5513128, -5142687, 5701032, -693637, 3092377, 4634270, 806917, 3553012, -6694781, 1402844,
+-2500208, 266288, -7094749, 51540, -2420751, -6470368, -4870493, 300111, 4750234, 163746,
+-3399467, 5281736, -1808181, 3020973, -388158, -6716792, 9313637, -5879274, -1115618, -3382824,
+2351495, 3678103, 2526515, 3386045, 7544647, 5644661, -928250, 1107565, 3578245, 2143726,
+-2645163, 3723200, 3002182, -656056, 1718524, -3839701, -5136244, -649077, -1637456, 2803540,
+-3001645, -729071, -2885144, -773094, -1312649, -535260, 894964, 974958, 616328, -233002,
+-709743, 1637456, 906775, -1908576, 1322313, -24159, -4452808, -510027, -1591285, 2444910,
+-666257, -416075, 948651, -605590, 904091, 1888712, -120796, 1182190, 1400696, -389768,
+528818, 2706366, 467615, 3145527, -8428336, -12265353, 1467805, 920734, 787590, 7741142,
+-2435783, -8636642, 1008244, 894427, -2148558, -590558, -7402913, -1582159, 1040456, 1016297,
+8506720, -1569811, 7634305, -1919314, -1837709, 529892, -7366943, 3089155, -2711198, 4451197,
+-1154273, -2022930, -2670933, -1457605, 371515, -5688148, 9766219, -6797323, -10759430, 3146064,
+603980, -7732015, -2150705, -14745160, 357019, -5318244, 32749, -5765994, -4489315, 689342,
+623844, 2417530, -4527433, 3591667, -5122286, -10217190, 1308354, 2691871, -2960843, 3204583,
+-1630477, -5719823, -4838818, -6932077, -3135326, -838056, 1220845, -2153926, 6432788, -93416,
+-1874753, 435939, 484794, 1202054, 1087164, 627065, -5972152, -5797132, 1305133, 3905736,
+2478733, 546535, -1239635, 4878009, 2849711, -2452426, -1620276, -5719823, -2212982, 2371896,
+1275068, -3177202, 1326608, -978179, -806917, -1559610, -1672890, -741419, -2238215, -1899986,
+1053341, 329639, 1487132, 2269353, 279710, 1972464, 193810, -1529008, 2085207, 1111860,
+-316754, 151398, -1056025, -1285269, 53687, -41876, -1194538, -88047, -306553, -207769,
+70867, -428423, 1384590, -2243584, -250719, -777926, 188979, 566936, 1416802, -105764,
+-18823768, -4697621, 721018, -4778688, -3532611, -5983427, 1520418, 2124398, 4248260, -3215320,
+-4041027, -4523675, 2234457, 5068062, -2552284, -2152316, -1321776, -767189, 2362769, -10472741,
+-2625299, 5932424, 1893007, -3061775, 1083406, 5254356, -554588, -1330903, 1795296, -323196,
+12826383, -5529771, 3106335, 1041530, -5461051, 1788854, 1167694, -6159520, 4309463, -8754754,
+-896038, 7756711, 1658931, -221191, -1677722, -5984500, -5217849, 1385127, 3286187, -2251100,
+1575716, 6425808, 3134789, -2664490, 3910031, -5698348, -13460428, -1772748, -5940477, 3732327,
+-3824132, 9526237, 4717485, -437013, -1615982, -12349642, 3842385, 4721243, -3841848, 7547868,
+-5917928, 2303176, -9881109, 4560182, 3393561, -11192148, -7176891, -2296197, 2710661, 3716757,
+8102456, -1133335, -447750, 5293547, 1173600, 26307, -2416993, 1210644, 1173063, 1588601,
+1682554, 431107, -271120, -1021129, -1212791, -3022583, -2562485, 2005750, 1371705, 1030255,
+2441152, -1016834, 1151051, 1264331, -688805, 2139431, -340913, -27917, -565862, -2438468,
+-585726, 2786360, 574989, 2065879, -826244, 751619, -1154809, 3311957, 262530, 2775086,
+1177358, -1381369, 673773, 4627291, 8022999, 18249852, 19654308, 3840238, 5960341, -23622,
+2896956, 98784, 2167348, -5307506, 2537252, -3327526, 4443681, 4030290, 10181757, 1481764,
+-1920924, 6241661, 4669703, 7523172, 494995, 4656819, 2867965, -2405719, 2486786, 11236171,
+1923609, -4939750, -2502355, 8302172, 5300527, 3964792, 7907035, -6036577, 2467459, 9212168,
+-9096741, -11087995, 3785477, 5864778, 9762461, -4219806, -7039452, 5776731, 2255932, -919123,
+3764539, -1503775, -730681, -97711, 13846438, -4994510, 2929705, -3344169, -1967632, -1651952,
+7298760, -981937, 16099148, 7610145, -7492034, 8876087, 2106682, 4122095, 2081985, 1906429,
+2341831, -2945274, 5549635, -12634720, -3157875, 5747740, -12666395, 4376572, -10199474, 2418604,
+11636677, 2815351, 106837, 3132642, 1277753, -3097208, 962073, -3289408, 569083, 2630131,
+-7524783, 4416300, -1206886, -1842541, 718870, 2391223, -1823214, -3078955, 1242856, 2782602,
+-1263794, -2600603, -2353105, -1501091, 1283658, -1832877, -1431835, 1742146, 2640331, 1142461,
+-1059246, 1590749, -918049, -3963718, -1571421, -46171, -1793149, 1153199, 1058710, 1685238,
+2946885, 3993246, -1638530, 5625871, -1717987, -3249680, -867583, 2013803, 680752, -3300146,
+-1905355, -2389076, 30449708, 5063230, 4958003, -9058086, 13241384, -4532801, -370978, -3629784,
+924492, -8679592, -445066, 3811247, 1151051, -7107634, 8804146, -2269890, -4271345, 1051193,
+2893734, -9092446, -12312061, 4999342, -4970888, -7576859, 1647120, -226023, -3602404, 6331856,
+-6373195, 1981054, 6534793, -1307818, 9433896, 2727841, -11515881, -12422656, -5040681, 610422,
+2421288, -9854266, 3690451, 3338800, 2033667, 2932389, 4463545, -10234907, -4823249, 2736968,
+-11017665, -4234838, -73551, -11789685, -6025839, -4149475, 2546916, -6125697, -12426414, -6162741,
+-6548752, 14446123, 7260106, -1371168, 2197413, -4095788, 11824045, 13777718, 1765232, 9176198,
+7017977, 2517925, 1880122, -5575405, -973884, -4945655, 6976638, -9099962, 502511, -2327872,
+-13488882, -4329864, -1771137, 7248831, -6572374, 3542811, 3402151, 1209033, 919660, 3037079,
+-3067144, 2385318, -1767379, 2668249, -517007, 4035659, 1444720, 171799, -2007360, -1014686,
+-5138929, 2673080, -531502, 4350265, -4153234, -204548, -238908, 2512556, -263067, 2222646,
+1242856, 1117765, 1505923, 482647, -2709051, 3180423, 4522601, -2394444, -2884071, -3840775,
+-1287417, -444529, -1086090, 160524, -755377, -20623896, 13919989, 22358526, -16778826, -9985799,
+4594005, 4010426, -3416110, 7342784, 1981591, -6255620, -7655779, -163209, -2474438, -5462125,
+2769717, -2517388, 333934, 6171331, -8342974, 1737851, 1089311, -4954782, 680752, -7861401,
+1503239, 11498164, 5843840, -1173600, -3733400, -965831, -6607807, -7022272, 3408057, 5799817,
+-1874216, -3249680, -2332704, 3456375, 5764383, 2756832, 10593000, -5754183, 4334159, -2790655,
+1003949, 6600828, -2431488, -2134599, -12702903, -1976759, -9848360, 4888747, 3314641, 12563853,
+-10854993, -4024384, -10509785, -17253958, -2947421, 7134478, -11944841, 2588792, -1377074, -8723079,
+-10288594, -12942347, 17243220, 598611, 10212895, 7500087, 8664023, -4012573, -11584601, -8776766,
+-10848014, 3701188, 8369281, -8134131, 3730716, 8941048, -6178311, 962073, 7221451, 8322036,
+1932735, -3082713, 3511673, -1582696, 1831267, -9029095, -912144, 3351148, -3131568, 1060320,
+459025, 294742, 1902134, 3280281, -3643206, -1361505, 1949378, 2906082, 736050, 1357210,
+2825015, -739808, 3058554, -2783139, 2055679, 3095598, 3457449, 278636, -1480153, 2673080,
+-2406792, 565862, -649077, -2070174, -1097364, -2048163, -660888, 758062, -2511482, -6682969,
+2154463, 3420405, -16327855, 11842835, -1662152, -5870684, 9785009, 3703336, -9924596, -13749264,
+-5585605, 205085, 73014, 831076, -5178120, 15977815, 6336151, 4930623, 3427921, 5120675,
+-5043902, 1337346, 2910914, 2448131, 13975287, 1611150, -21422760, 2733210, 8568460, -7781407,
+-12159589, -2406792, -6721087, -3710315, 732292, 15081778, 8706436, -1417876, -611496, -4420595,
+-13388487, -4345433, -11110544, 7820599, 10300405, 216359, -6162741, -2065342, -2719251, 4923643,
+6443525, 7215008, -16821240, 3250217, 268972, 1517734, 11183558, -6650220, 4394826, -6068789,
+-4723391, 1257352, 7199976, 13573170, -2469606, -8716636, 2506650, -15724412, 12253005, 6820408,
+-1895154, -6486475, 3060701, -3621731, -8124468, -6455873, -7402913, -3357054, -1836099, 483184,
+6306086, -5092221, 17968532, 766652, -3154117, 1049583, 5096516, 239444, -586800, 5932961,
+3709778, 3048890, -159451, -2907156, -2624225, -715112, -803696, -2695629, -7841000, 3898220,
+3336653, -2856690, 625992, -4180614, -3496640, -1484448, -1220308, -170725, 6142877, -1420560,
+-2477659, -1139777, -808528, 3947612, 6871948, -2472828, 3658775, -1200980, -5007932, 5180268,
+-5392869, -4106526, -3093987, -4151086, 401043, 2988224, 1121523, 3059091, -425202, -1333051,
+-776315, -3413962, 1472100, -2027761, -4248797, 2659122, -1977296, -2020782, -1938641, -261993,
+-1565516, -128849, -1367410, -1098438, -215285, -514322, -7397545, -1302449, 7330973, -13463112,
+-4345970, 9386114, -11687143, -751082, -1532230, -1096827, -13545790, 13460964, 5247913, -8683887,
+-1976759, -3491809, -3744138, -19554450, -3214783, -8714489, -22944790, 5219996, 3070365, -9842991,
+-8891119, -11672110, -14166413, 12123082, 6194954, 12741020, 18254, 26292180, 797790, 13925895,
+18188112, -1753957, 5267241, 19573776, -13337484, 6315213, -8206609, 13590350, -4568235, 26086020,
+11243688, -7594576, -12504797, 2406256, 5524939, 11113765, 2448668, -8890582, -2575370, 8903467,
+18651970, -7573101, 12364137, -4264903, 7373385, -14545980, 5459441, -7727183, 5467494, 1373853,
+1524177, -2314987, 11351599, 16869020, -30378840, 9480603, 5783711, 4846334, -5913633, 4338454,
+-21928492, 2230699, -76236, -2948495, -8664023, -6729677, -7558606, -1667521, 14852534, -8424041,
+-5648956, -12013024, -17180, 11407433, -5987185, -5759015, 8051990, 85899, 5714991, 1770063,
+-1995549, 545998, 2248952, -5532992, 2516851, 1591285, -5587216, -3874597, -2986076, 1888712,
+2957085, 3948686, 9881109, -704912, 7358890, 4261145, 2054605, -4791573, -2126009, -7437273,
+-4053376, -908922, -3146064, -3322157, 3827890, 2921652, 4670240, 7064148, 715649, -1107028,
+-1387811, -3863323, 2044941, -797790, -521302, 2615635, -3500935, 14851997, 15925202, -3527242,
+16555488, -915365, -3370476, 1233729, 9338333, -3539590, -4131222, -1994476, -11651709, 1854889,
+-3291019, 18392660, 12219719, -8868571, -9255655, -17595944, -6350109, 12658879, 22997402, -10504416,
+7150047, 1466731, 3084324, 12422119, 9006546, -18025978, 3633006, -6480032, -3583077, -7477001,
+-3982509, -7887171, -17242146, 2963528, 11639361, 4368519, 27174258, -6658810, -3673808, 18765786,
+-6802155, -1118839, -4138738, 4921496, -20621748, -13344463, 7252053, 15406048, 22613540, 26847304,
+-19717122, -10330470, -975494, 8936216, -825171, 30472256, 8562017, 4497905, -23633058, 1577864,
+235686, 11391864, 15015206, -11209328, -3631932, 4607963, -4795331, -66572, 17051558, 6063420,
+-16732656, 4317516, 8922795, -8130373, 26483306, -9201431, -14063334, -19896436, 14724222, -3237332,
+-16581258, -13258027, -2957085, -677531, -6558415, 333397, -7145752, 1343251, -9973988, 644245,
+4971962, -3520263, 3929895, 711891, -6004901, 624918, -28454, -1218160, 715649, -4174708,
+5055714, 2147, -2477123, 5658083, 5860483, 217433, -1528472, 2508798, -5388037, -2308008,
+-4314295, -862215, 4576825, -3580929, 2044404, 4412005, -8135742, -2961917, -1618129, 1330366,
+-1476395, 3519189, 8025684, -2261300, -4674535, -2327336, 5212480, 1451699, 563178, 4115116,
+-2304787, -1703491, -1415729, -2309082, -1845762, 3610457, 31375272, 14790257, -8170639, -2705293,
+-28840706, 2190970, 7700877, 1955284, 43151536, -5511517, -3215320, -18996104, -16313896, 6650757,
+-13333726, -8236674, -8931384, -6102612, 10744934, -7062537, -12263742, -10678362, 992137, 10733660,
+-13878650, 3060164, 6315213, 1321239, 15575162, -1880659, 1241782, -15883326, -22229140, -9240622,
+10210748, -12354473, 2991445, -10388452, -38830264, -20998632, 11651173, 745177, -22251152, 3342558,
+31005368, -1523103, -804770, -12199855, 6780680, -13455059, -23950886, 505196, 3630858, -9393093,
+4586488, 8909373, -2232846, -7936026, 6445136, 8273718, 15538118, -9061307, 11669963, 14870787,
+6291590, 25944286, 2900714, -16320876, 18977312, 1028645, 3153580, -3584687, -3855807, 11620034,
+-11652246, -1791001, 28880434, 22553948, -14070850, 14390288, -4229469, 26707180, 11266236, -9431211,
+-21472688, -1060857, -7880728, -9432822, 5998459, -8513162, -302258, -2277407, -7541426, -12681965,
+-2510409, 10489384, -11485816, -71941, -7157563, 954557, 4414153, -4760971, -13437879, -2494302,
+-6398965, 8006893, 4859756, -3397856, -8925479, -3815005, -9601399, 5592048, -4759898, 2972117,
+3654480, 5320391, 4271345, -7547332, -5341329, -8462159, 2360622, 5192616, 593779, 10480257,
+11164767, 5973763, 4466229, -3062312, 5901822, -854162, -3010772, -22802518, -23571318, -28825674,
+39631812, -22069690, 5479305, -1500554, -12195560, 19677930, -23171348, 9870372, 42135776, 25455734,
+6284611, -34190088, -1591822, -22652194, -11033234, -20706574, -1622424, 5532455, -3357054, 15793668,
+-7399155, 2403034, 8268886, 22185654, 3453691, 2836826, 27507654, -18149994, -2200097, 11727945,
+-4903779, -14129369, -8879308, 13440563, -11592654, 5493263, 23609436, -6721087, -41589780, -2806761,
+10850161, -51756504, 31440772, 23732378, -19185082, 31712428, 22014392, 14023605, 33504504, 483184,
+17393544, 1736241, 2374043, 11715060, -20699058, 20798380, 28924458, 21755084, -22306450, -4654134,
+31758598, -15447924, 25262460, 22605486, 53716084, 31967978, 2214056, 3485903, -6514392, 6489696,
+9675488, -31117574, -43856984, -15606837, 4237522, 1458678, -5967320, 34433828, 16717623, 6336688,
+-14826764, 13546327, -10387915, -13856638, -6582038, 15497316, 18669150, 3348464, -2875481, -3687766,
+962073, -21617644, -4660577, -5703717, 7362111, 3825742, -10703595, -8637179, -89657, 16756815,
+-4277788, -6667937, 888521, -6896644, -16691854, 8433705, -3246459, -6843494, -9594957, -75699,
+6150393, 988379, -30000884, -1854889, 15482283, -2403034, 1077500, 2388002, 4835597, 12662637,
+10656351, 336618, 355945, -5012227, -1077500, 2487860, 24160802, 29552060, -58117888, -53505628,
+23430658, -15476915, -16644609, -7133941, -20145544, 7080791, -32732482, 41408316, 15786689, -17435956,
+-199179, -17054778, -12557948, -13767518, -15444702, -10241886, -39502960, -35770100, -6467147, -8207146,
+2456185, 3282429, 7089918, -2605972, 5254893, 6548752, 17853106, 19462644, -7177964, -9969693,
+-11379516, -9906879, -22253300, 33341832, -11597485, 8076686, 25026238, 23387708, -8693014, -10118406,
+-18484466, -12341589, -15137075, 25626460, 2954401, 3113315, -31567472, -11327439, 46167676, -4505958,
+42999600, -8687645, -15800648, -10151155, -17888538, -18593450, -3173444, 170188, -25279640, 2112587,
+12430172, -1060320, 9823127, -58910844, -23557358, -16505022, 31515396, -7486665, 5393942, 10674067,
+49342196, 13923747, -4272956, -5000416, 42529304, 25540024, 6493454, 8259222, -1903207, 33581276,
+-13727252, -19119046, 10615012, 15803332, 28287192, 26098906, -15002321, 17728552, 13508209, 14300094,
+4520990, -10140955, -19847044, -17034914, 10933376, 14817637, 8171176, 5375152, 17715666, -1641214,
+-4524748, -913754, -1153736, 9164386, 5751498, 11939472, 21006686, 14718853, 23989002, 6506876,
+-20981452, 6881612, 6005975, 18639084, -27917, 14643691, 6514392, 14097693, 653909, -26616450,
+-3124052, -5712844, -1455994, -11895449, -6794639, -30775588, 63933808, -20638928, -12850542, 37904160,
+-24039468, -36267240, 33628520, -48824652, -14139569, 11512660, 8366060, -34060700, -13379360, 29234232,
+167504, -5767068, -19037980, 22939958, -22787486, 1498944, 18041546, -6041409, 16563005, 103079,
+-8217346, 5538361, 3914863, -9912248, 15745887, -8702677, -3544422, 4683662, -338766, 950798,
+-2990371, 4649839, 9981504, 16145319, 23265838, 11385421, -9649718, -2728378, -14803679, 13610214,
+-4942434, -21399674, 4985920, 33823, -12189654, -29242284, 20522428, 1494112, -13531831, 32920924,
+1872606, -10280541, -5975910, 48783848, -45727980, -49279916, 29979946, 46747496, -86427624, 333397,
+-32003948, -29131690, -12872554, 31343598, -24303610, 41507100, -5904507, -1136556, 55906516, -15904801,
+-43300788, 53631792, 63303524, -61614528, 68728064, -23294292, 1692754, 56680148, -19014358, -21891986,
+15587510, 15118285, -7297687, -3032247, 10560251, 1932198, 1364726, -13699872, 18711562, -74088,
+-1193464, 166967, 2543695, 8244190, 5149129, -7024419, -7405598, 7644505, 18689550, -16358994,
+-14894947, -4253092, 19583440, -926102, 10502806, -3080029, 4434017, -181462, 4545686, -2495913,
+-3318936, -23337778, -9562745, 5485747, -8196945, -2626909, -8048769, -12774306, 19644644, 11850352,
+-33735356, 13194140, 17779554, -3806415, 76773, -12319577, 17642116, 37699612, -17431662, -24453396,
+-6270116, 5694590, 39033736, 28547038, -9734543, -3416647, 12443057, 31134754, -10113574, -2096481,
+19674708, -25067576, -20893942, 16629576, -10914049, -8752606, -10018011, -1259499, -16749299, 1053878,
+12137041, -7517804, 9465034, -8374650, -4671314, -5388574, -23300734, 3236258, -9197136, 14240501,
+31432182, 1427540, 15870441, 12545063, 1594507, 5587216, 10124312, 32648194, -22874996, 15638513,
+14412837, -17128866, 11708081, 10720238, 3934727, -15227807, -29488708, -30523796, 10420128, 10590852,
+-10982768, -50831476, 41575284, -14107894, -21700860, -13056701, 41829760, -19717658, 45705432, -253940,
+15668578, -42838540, 40727564, -18694382, 18316424, -5702643, -57773216, -18615462, 11973832, -36244156,
+37511708, 3722663, -52907556, -60317448, -30389042, 41502804, 10838887, -37536404, 45989972, -49138184,
+-1865090, 88028040, 13760538, 4771172, 9336722, 6446209, -22603876, 23884850, 2365990, 12086575,
+-14967424, 22951768, -12219719, -12456479, -9632001, -1540820, -24696, 6787122, -1705102, -3648038,
+5187247, -8319889, -16075526, 14976551, -4960151, -2848637, -19174344, 8834748, 5086852, 8375186,
+3050501, 9701257, -6658810, 2114735, 28169080, -3420942, 1023276, 14326400, -14851460, -3508452,
+1570347, -1782411, 11458436, -11259257, 12785581, -4406637, -30219390, 1795296, -7277822, 13682155,
+10668699, 9286256, -10496363, 12161737, -19442244, -36686536, -17180, -38984344, 10567230, -3352222,
+-7178501, 13211319, 21432960, -13737453, 2917894, 23875186, -18803904, 32335198, -4489315, -35330936,
+30212410, -14518600, -6703370, 27182848, -34892852, 9247601, 383326, 12687333, -5658083, -12640089,
+-53157736, 12234751, -22067542, -53097608, 64071784, -43198780, -18251464, -8515310, -14861124, -32594506,
+18104360, 44438952, -27692876, 12518219, -40069360, -22473416, -22935126, 20107964, 3368865, 58271968,
+-10261751, -4810900, -17618492, -50180788, -194884, 24453934, -18818936, 20527260, 24390046, -20775294,
+1814087, -17717814, -74457552, -38903276, -23104240, -77945064, 49556408, 65650184, 30598958, -66100084,
+-53413288, -118582976, 16860430, 140959216, 64918432, 24890410, -37352256, -130084896, -29840896, 30083562,
+88599272, 89115200, -60890288, -51290500, -24110872, 11587285, 5825587, 96792992, 1307281, -11864847,
+7558069, -9669582, -23977192, 33994128, 5781563, -7390028, 18513994, -15539729, -26720066, 18599356,
+15831786, -45024144, 29896194, -6838662, -10256919, -24058796, 25040734, -24317568, 28708098, -14458471,
+29386704, -35260072, 13656922, -9981504, 70867, 25193204, 41103372, 11565810, -15835008, -11174968,
+-3003256, 22719304, -4092567, 32751810, -26232586, -20557860, 9051107, 32434520, 3394098, 19652696,
+-26386668, -7839926, -8767639, 20141250, -1759326, 2996814, -6166500, -56150792, 40827960, -8283918,
+-8521215, 667331, 18577344, 9664, -3149822, 13157632, 4984847, 4160213, 21857088, -13964012,
+195958, 10838887, -3546032, -2360622, 13912473, -12922483, -2705293, 3486440, 21672404, -14422500,
+-9652402, 11608760, -210990, 6374269, -20767778, 27378806, -6250251, 9024800, -5700496, 3245922,
+15451682, 6321655, -3192235, 12666932, -4593468, 12807056, -9992778, -1094143, 13901199, -3440806,
+-5284958, -27668716, 3122441, 20823612, 2560338, 9592273, -13499619, -4709432, -7945690, -9012452,
+-3223910, 14980309, -5240934, 9007620, -11709155, -14710800, -5837935, 3113315, 28308130, -11037529,
+13059922, 531502, 3124589, -13979045, 7813083, 14210973, 1124745, -13522705, 10558103, -9111773,
+7191923, -5676873, -3545496, -5442798, 2240899, 9882720, -4783520, -2911451, 5056250, -907312,
+-7387881, -1952600, 7947837, 6153078, -6357089, 845035, 7296076, -6442, -3867618, 827318,
+-6394670, 4765266, -59593, 2295123, -2704219, 1029182, 4786204, -2495376, 5546951, 704375,
+5094905, 3319473, -7257421, -8031589, -2245731, 13263933, -8242579, 9130027, 7917772, -5782100,
+-13598403, 10324565, -8588861, 11703249, -723165, -2263985, -4529580, 1722282, 2397129, -1000727,
+-1192390, 746251, 1615445, -5630166, 53195316, 10498511, -28427314, -20284594, -31403190, -10028212,
+6105833, 16653736, -5167920, -6804302, -5766531, -5656472, -5250598, 7585449, -3828427, -1117765,
+-1634772, -5584531, -1275068, 8344048, 1248225, -2475512, -8342974, 9584220, -12445741, 7296613,
+-4416837, -12305081, 95563, 5544803, 6328635, 4876399, -7201587, 1572495, -2281702, -4007205,
+14805289, -13187697, -2360622, -573378, -870268, 1347009, -2162516, -7759396, 6538014, -12275017,
+11709691, -1743757, -8163122, 2799782, -4194573, 10354629, -6039261, -3701725, 11246909, -10075993,
+3529926, -4836133, -1070521, 8575439, -6107444, -2464238, 7742753, -5312338, 2062658, 773631,
+-6225018, 15206332, -13263396, -1152662, 5895380, -3398930, 9764608, -4428648, -2110977, 2530810,
+3248069, -1063004, 2194192, -874563, -4274030, 3854196, 34897, 366146, 2159295, -288300,
+3076807, -3075197, 932008, 600222, 723702, -387084, -1853815, 2474975, -316217, -664109,
+-1756105, 2187749, 3620658, -1221918, -1791001, 1108638, 2133525, -2644626, 2224256, -1996623,
+-1672890, 5722507, -834834, 2107755, 3062312, -3971234, 9790378, -3207804, -467615, -498753,
+-5581847, 5814312, -3591130, -5836861, 5229660, -25178172, -37771016, 49514532, 154568896, 13208098,
+13481902, -105378096, -133237400, -27790050, -28198070, 78477104, 133639520, 68540696, 13228499, -48365628,
+-94039384, -66421668, -47443820, -2485176, 65125664, 95101312, 51438140, 11759084, -33318208, -59299004,
+-33160906, -31955630, -29876866, 18885508, 38789996, 38180648, 38517268, 9234717, -16648367, -6863895,
+-25319906, -39709120, -4362076, -11852499, -7974144, 35823248, 20744692, 29925184, 18197240, -13589813,
+-32622960, -7880728, -21189758, -3293166, 14886894, 4536559, 8062191, 16183437, -8170102, -11503533,
+-2603824, -6763500, 6578280, 10446434, 609885, 12898861, 7703561, -13562970, -12993887, -20784958,
+-17721572, 780073, 21479132, 32480690, 15695958, 4101694, -7505456, -21755084, -3684545, -24528558,
+-14996415, 11540577, 9108015, 27460948, 9303436, -6994891, 8144332, -14243722, -24656870, 4345970,
+6318971, 8282308, 7711614, -1548336, -3033321, -2365453, -10218264, -7874823, 5445482, 8382703,
+8489540, 8555038, -2311229, -8268349, -5420249, -3173981, 280784, -170188, -9290014, 2398739,
+11843909, 6359773, 7396471, -2178085, -11785390, -6881075, -6928319, 2743947, 8384313, 5492190,
+5209259, 2232846, -1621350, -8979703, -11766600, -5408975, 804770, 7337415, 11763915, 7169911,
+7284802, 4563403, -7343857, -13770202, -17611514, -11453067, 5042829, 9943386, 12964359, 17875118,
+5523865, -5325760, -8915815, -7279970, -5322002, -5087926, -5100274, -1471026, 4103305, 7919383,
+7060390, 5502927, 3918621, 926102, -4853313, -8600135, -8225399, -4184909, -49929, 3730179,
+5093831, 4672925, 2487860, 1524713, 624381, -717260, -3099893, -3832185, -3122978, -1045288,
+1347546, 2326799, 1929514, 481036, -499290, 372052, 323196, 528281, 221191, -743566,
+-1465658, -465467, 770947, 235149, -1199370, -609885, 351114, 301185, -155156, 956167,
+2083059, 1921998, -816581, -2188286, -1661079, -549756, -84826, -14496, -187905, 651761,
+1414655, 1401233, 214212, -270046, -246424, -579821, -1079647, -862752, -547071, 243203,
+555661, 992674, 790274, 294205, -211527, -266825, -624918, -544924, -489089, 25233,
+382789, 657130, 253940, 87510, -261993, -265214, -382252, -9127, 214212, 388695,
+97711, 89121, -155693, -163746, -266825, 10201, -2684, 128312, 16106, 113817,
+-43487, 49929, -78920, 36507, -69256, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
1235877,
-3443490, 2669859, -881005, 2043868, 987843, 5901822, -1023276, -165893, 752693, 4316979,
--847719, -4520453, -2091112, -4339528, 1061931, -1549946, -355409, -554588, 1052267, 410706,
-885300, 2502355, 4618164, -2057289, -1129576, 914291, -2172180, -307090, 3602941, -1961190,
-4452271, 452045, -1592359, 2947958, -4029753, -1038845, -2806761, 3937948, -114890, -1461363,
--1069984, 42950, 3667365, 143881, 4413616, 1690607, -3623879, 2932926, -1583232, -2711735,
--2211371, 3015604, -627602, 9616969, 1022739, 2415919, 1752347, -4485557, 68183, -663572,
-1175210, -2547989, -1719061, 5011153, 4108673, 369904, 1709397, -460635, 2558190, -4137127,
-424665, 3104725, 1960653, 315143, -316217, 2212445, -3505230, -1618666, 3739306, -2457258,
-798864, 1817845, 2213519, 677531, -2801393, -1871532, 1482838, 325344, 1470489, -446677,
-426276, -1402307, -74088, -699543, -408022, 797253, 1542430, 645856, -888521, -348429,
--599685, 360777, 945430, -557809, 699006, 507880, 983548, -140123, 1178432, -477815,
-298500, 719407, 924492, -7346005, -6619082, -4129074, -3748970, -3259880, 1252520, 4624069,
-9445170, 1802813, 2439005, -27917, -6735583, -2829847, -2500208, -6063420, 9423695, 2494302,
-3744138, 2576981, -2081985, 949188, 9021042, 3590056, -2121714, -184684, -2188286, 178241,
--4174708, 2499671, -1317481, -1882269, 356482, 4781373, 505732, 1660005, 3002719, 4143033,
--7447474, 83752, 1890323, 4320200, 6657736, -3717831, -752693, -1808181, 5552856, 2995203,
-3580392, -606127, 1659468, 11094437, -7017977, 1393717, 652835, -4704600, 1997160, -6567542,
--883153, 1668595, -1420024, -9895605, 2769717, 669478, -2673617, -2752537, -459025, -1500554,
-3335042, -3148748, -1391033, 959388, -107374, -3063922, -150861, 2484639, -4141959, 352724,
--1133335, -1006633, -1292785, -744103, 625992, -2427730, -1823751, 343061, -1450625, -1924145,
--1970316, -688269, -1311576, 2384781, -2123861, -613643, 331249, 1190243, -148713, 66035,
--747324, 129923, -1278290, 937377, -859530, -852014, -255014, -1868848, 9994389, 833224,
-3610994, -456340, -2632815, 171799, 7033546, 3537443, 4552129, 7188165, -3155727, 31139,
-7058242, 2202781, 3121904, 357556, 901406, 4072166, -3686693, -1138703, 5257577, -3594888,
-2077154, 2930778, -2188823, 2143726, 7036230, -3358128, 2621004, 515933, 308164, 50466,
--1422708, -4816269, -1445257, -4041027, -387621, 1636383, 3386582, 3506841, -605054, -6029597,
--517007, 8713952, -3213709, 1731409, -1541356, -9240622, 5405217, 1317481, 4020090, -701690,
-4573604, 4399121, -7808788, 3097208, 259846, 2905546, -560493, -5521718, -243203, -802085,
--991601, -1062468, 3521873, -41876, 700617, 7087770, 1393180, 5631239, 197032, 527744,
-1097364, -3121368, -4870493, 3325915, -3682935, 2180770, 1385127, -208306, 2342368, -2483028,
--1391569, 1549946, 93416, -4730907, 1533303, 544924, 623844, -966368, 2058900, 183610,
--804770, 2268280, -507880, -206695, -1885491, 668941, -935229, 318901, 25770, -288837,
-466541, -729071, 1242319, 276489, -472983, 349503, -279173, 127775, -45634, -762357,
--61203, 16333761, 9126269, 13981729, 4495757, -5750425, 2934537, -2556043, 366683, 1388885,
--11916387, -3135326, -3297461, 3106872, 4651450, -1889249, -294742, 1608465, 357556, 8549669,
--956167, -8884677, 2890513, -5119064, 3950296, 4566087, 3595425, 5313949, -1280974, -1777580,
-2126009, -1533303, -2086280, 1565516, -1395864, 3212636, 4522064, -1905892, -6879464, 2267206,
--6689949, -4250944, -846645, -13848585, 132070, -2290291, 5449777, 5260798, 2512019, 8579197,
-8570607, 3860102, 1909650, -556198, 419296, 549756, -3884261, 8023536, -1057099, 2836289,
--2517925, -2961917, -1087701, -4472672, 4017942, -2027225, -1673427, 7879118, -6488622, -1915019,
-1664837, -2899103, -889058, -156229, 2749316, 3313567, 2183991, 5644124, -1801202, -1421634,
--786516, -3403225, 1869385, 3664144, 4922570, 9664, -715112, -936840, 88047, 1163936,
-1063004, -1360968, 1661079, 92342, 1209033, 1114544, -162672, -266825, 2143189, -484794,
-1103807, 991064, 1021129, 998580, -556735, 920197, 3602404, -129386, 227096, 556198,
-2676838, 612033, -532576, -1722819, 1433445, 1159641, -570157, 617938, -6043556, -14448270,
--4947266, -1644973, 2185602, -1925219, 4480188, -1099512, 7138773, -6440304, 3846680, -1700270,
-13003550, 5251135, -2677912, -5647345, 3106872, -7975218, -4066260, 2889976, -2638721, -4808216,
-9028558, 3583613, -393526, -4238059, -5446556, 3651259, 3019899, 2696166, -129923, -1503239,
--3323768, 5124433, -6729140, -3047816, -208306, 4751308, 3830574, -459025, 5470178, 569083,
--2400887, 986232, -2391223, -2705830, -2911988, 3675418, -2663417, -188979, 5099200, 7358890,
-7737921, 3032784, 2810519, -586800, 4428648, -1824287, 6323266, -1164473, 4070555, 2974802,
--2453500, 240518, -2697776, 2946885, 2746632, 983548, -852551, -5299990, 3801046, -5760088,
--572304, -6225018, 2378338, -520765, -471910, 1108638, -5108327, 181462, 1484985, 8433705,
-2881386, 1374926, 2141578, 3260954, 1590212, 1670205, -2399813, 1858647, 1577327, -3524021,
--161061, 146566, 875636, 1450088, -1582696, 1067836, -976568, 205622, -74625, 2114735,
-362388, 241592, 396748, 695785, -307090, 1919850, -922344, 707059, 897648, 1852742,
-1035624, 2581275, -1737851, 949725, -297963, 2981244, 1298691, 1053341, -239444, -435402,
-385473, -598611, -472983, -1997697, -6672232, -13990856, -11310260, 716186, -9664750, -4745402,
--13684303, -7269769, -8343511, 3330747, -4461398, -5910949, -2035815, 340376, -3524558, -13267154,
-3561065, -2333241, 1329829, -5995775, 5990943, 2238752, 132607, -5331128, -2384781, 6816650,
-4634270, 321049, -1012539, -4540854, 2844879, 1495722, 2946885, -5439576, -505196, -4414153,
--3976603, -4316979, 455803, 8829916, -7177427, 177704, -6836514, 724239, 3194382, 4019553,
--7207492, 7283191, 8822400, -2880849, -2085207, -1512902, -336081, 2827162, 3569118, 906775,
-2433636, -4269735, -820339, -1568737, 7598334, -2347737, 8408472, -187905, -2558190, 6722161,
--680752, -3977140, 1451162, 7282117, 8374650, -598611, -2593624, -4521527, 2900177, -6044093,
--579284, 4094178, -3087545, 1860795, -190589, -8053, -2475512, 84826, -1912871, -3009162,
--282394, 2601140, 1387811, 2592013, -1117228, -797253, -2019708, 833761, -1625108, 2699387,
-1388348, 3759170, 385473, -834834, -297427, -624381, -1284195, 1743220, -1130650, -634581,
-737124, 610959, -1796907, -600759, 531502, 97174, -972273, -1735167, -68183, -1596117,
--1088237, -643171, 2191507, -112206, 789200, 690416, 139586, -1234266, -334471, -105764,
--10721312, -10856604, -12337294, 3559991, -9973988, -4287988, 9772124, 4621922, -10835129, -832150,
-200253, 4704600, 7238631, 12108587, -3210488, -4486630, -11909944, -14829985, -8613557, -3063386,
-6096169, -6075768, 2979097, -8588324, 8910983, -6470905, 7172596, -3388192, 1078574, 1747515,
--1340567, -6385006, 10037875, -8696772, -354335, -4687957, 1296006, -5444945, 1305670, -21628918,
-423054, 9918153, -12741020, 2826625, 8824547, 3044595, -6604586, -840740, 10605885, -13084618,
-20938, 5218922, 5162551, 4900021, -1813550, -1976222, -8339753, -4264903, 3500398, 5634997,
-9183177, 11033771, -16334834, 6139119, -4892505, 1103807, -11502996, -4796405, 9568650, 2225867,
-1358283, -6445672, 56371, 6039798, 4515621, 2639794, -5675263, -3798899, 6003291, -1682554,
--2479270, -1390496, -4169340, 3489124, -653909, -3432216, -1235877, -1246614, 897648, -2257542,
--2252710, 686121, 849330, 810138, -1271310, -2009508, 1656247, -1324461, -4322885, -492848,
--1269700, 2527588, -1995012, 25233, 230854, 942745, -2704219, -1643362, -967441, 175557,
-2905546, -453656, -676994, 1665374, 42413, 1634235, -819802, -2057289, -725850, -3406446,
-745177, -148713, -2285996, 1273995, 12867185, 21449066, 11940546, 13977971, 2133525, 4956929,
-18820546, -599685, 565862, 12869333, -6294812, 19864, 3706557, 6409702, 10627897, -8659191,
--12328704, 6785512, 3776887, -7172059, 1537061, 4385162, -2745021, 2514703, -6637335, -1513439,
--7752953, 2372433, 8450885, 2614561, 7402376, 5710159, 6024229, -14676977, 769336, 17055852,
--2030446, -317828, 15907485, -2109366, -562641, 2343979, -2096481, -479963, 8805220, 13817984,
--13587666, -2228014, 2711735, -4184372, 6414534, -2173254, 630823, 994285, -2962991, 12162811,
--1560147, -4449049, 4562329, -4613332, -7597261, 2605972, 8296266, 3121904, -923418, 1666447,
-7937637, 4132832, 7110855, 2130841, 883153, -96100, -6978785, -1459215, -5468567, -1265942,
--2298344, -12444131, -5385352, 785979, 8011725, -3310346, 3094524, -2146947, -6577206, 2900177,
-707596, -2106682, 1025423, -4019553, 192737, 978179, 2447058, 3479997, -847182, 2236067,
--3029026, -4487167, -5363341, -584652, 4823785, -892279, -399432, 1598802, 243203, 515396,
-2582349, -1282048, -508954, -1442035, 3719442, 68183, -590021, 421444, -985158, -2018635,
--2441152, 972810, 2086817, 2632815, 1416266, 1031866, -519154, -191126, -15569, -886374,
--3751117, 1180579, 36203888, 5024575, -781147, -216896, -17388712, -5083631, 1665374, -4055523,
-7653632, 3369402, 12412455, -1588601, 537, -2689723, -5274757, 8327942, 1545115, 3177739,
-4657355, 6513318, -6165963, -6199249, -7174743, -4992363, -4124779, -1815161, -9849971, -1949378,
-15817291, 7448010, -3053722, -1099512, -1904281, 1293322, 5573257, -2778307, 22609782, -3972845,
--664109, -10319196, 4060355, 9845139, -1751273, -7607461, -1035087, 3764002, 7531225, 3231426,
-10607495, 15883326, 5129802, -389231, 9401147, 7679402, 2825552, 5921150, -19924890, 4552666,
-455267, -17630304, 6382859, -472446, -7645042, 4889821, -8105140, -7878044, 9240622, 7264937,
--4220342, -15616501, -7119445, 3664144, -9022116, -1894618, 3821447, 15198816, -2566243, 3011846,
--8052527, -16857746, -9104794, -8120173, -3738769, 7935489, 998580, -5651103, -1788317, -3555696,
--3489124, 5041218, 4162897, 1560147, 3537443, 4236985, -3750580, -2764348, -2816962, 491237,
--3081102, -4501126, -4394289, 1765232, -1569811, -727460, 485331, 1488206, -3757023, 1965484,
--908922, -536871, -1738388, -689342, -2415919, 5624260, -3669513, -1337346, 881005, -3782256,
--3680250, -2803540, 79994, 2804614, 2273648, -19421842, 12317966, -2452426, -12167642, -718870,
-11476689, -13088913, -2496987, -10595684, 7091528, 2006824, -3602941, -4638028, -1376000, 6685117,
-5494874, 2746632, 7395934, 6089190, 854162, 7399692, 8949101, 3399467, 5046050, -9121437,
--4151086, -6415071, 5717675, 6973417, 2771865, 2011655, -4022237, -3307662, -2387465, -2506650,
--7362111, 6717866, 1792075, 243739, -7893076, -2623688, 13060459, -9463424, -9681930, -15358266,
-5492190, -11568494, 16695075, 18886044, 13347685, 7497939, 931471, 14721000, -7693360, 11528229,
--1333587, -8560944, 809601, 488553, -17757542, -8182987, 6926172, 833224, -2850248, 2517925,
-15243376, 10102837, -17112760, -4570382, -73551, -651761, 5173288, 7172596, -166430, -14067629,
-5764383, -8244190, -25554518, -7681549, -5055177, 7796440, 13178033, 4197794, 830002, 474057,
-575526, 970663, 9441412, -154082, 1561758, 1005022, 4863514, -8374650, -246424, 2331094,
-6298570, 7173669, 2798171, 4185983, 6710350, 8410620, 11276437, 4050691, 5683316, 5235565,
-474057, -682900, -1806034, -1543504, 260919, 2084670, -6272800, -1777043, 3985193, 5900212,
--441308, 1532767, -618475, 2380486, 256087, 3725347, -412317, 3566434, -2563022, 4615479,
-314606, 4350265, -16077136, 1586454, 1808718, 10050223, 2187212, 25704842, 4113505, -10632192,
--3416110, -8954470, 16273094, -20867098, -1844152, 14398341, -31477278, -12445205, -10609643, -11025181,
--20871394, 1961726, -3643206, -8972724, -1122597, 9870372, 1262720, 1299228, -6142877, 2439005,
--2065879, 2425046, 32212, 1553168, 8077223, -1966021, -479426, 16383153, -10581726, -2141578,
-2851858, 14112189, -7392713, 20153060, -6082748, -8146479, -17237852, -22458384, -6532646, -16716013,
-8172786, -5072357, -12530030, 1714766, 2047626, 9248138, 7840463, 3272228, -1568737, 28533078,
-15808164, -1795296, 2802466, 9776956, 7323456, 4753992, -3843996, -546535, -5100274, -6639483,
--6133750, 4313221, 22267794, -15540802, -3791383, -8842801, 16051903, -4206384, 4986457, -2268280,
-7546258, -17597018, -13160854, -4526896, 7505992, 2398739, 6483253, -3870839, 4005594, 6060736,
-5312875, 2543695, -1035624, -7482907, 4748623, 1802276, -6363531, -4438849, 4008278, -4156992,
--3163780, -92342, 4313758, -3952981, 5194226, -3198140, 7413651, -4072166, 841277, 2632278,
-1359357, -3515431, -6748468, 5295695, -2019708, -1462436, -517007, -644245, -2127620, 5034776,
-6212670, 4372814, 3804804, -668941, 2196876, 7192460, -3832185, 2889976, 1242319, -88584,
-1573032, -378494, 389231, -2488397, 3307662, 1048509, 3155727, -929324, 1383516, -538482,
--2585570, 1888712, 479426, 2225330, 3221762, -478889, -12877386, -12272869, 6895033, -5475010,
--23144506, 11484206, -6934225, 9179419, -6692633, 11541114, 7781407, 9601399, 15262703, 2518462,
-12907450, 5242545, 3302830, 8826695, 2993592, 2442226, 587337, -338766, -8269960, 7357816,
--16749299, 7335804, 1705639, -4763119, -9044664, -213138, 6419903, -7439420, -3156264, -11135776,
--4361540, -13713831, 830539, 7577933, -176094, -1762010, -8753680, -15145665, -11049340, 11869679,
-3920232, -4923107, -8747238, -2117956, -732829, -14809047, 12518219, 11441256, -14637785, -14175003,
--23289460, -3524021, -27858768, 7512435, 10803990, 5717139, -1766305, -3537979, -2905009, 11434277,
-11515881, 13335337, -8706436, -6886443, 8880382, -3834332, -4184909, -16304233, 7218230, 13343390,
-15238007, -3585761, 8333847, -4684199, 2484639, 8361765, 4281546, -5873368, 2736968, -10062572,
--6158446, -4168803, 1471026, 4262755, 3621731, -3981972, -3686156, -1479079, -4542465, -882616,
--6248641, -7739531, -4095251, -3221762, -2404645, -1025423, -2283849, -3073586, 646929, -135828,
-4460861, -1548873, 5705327, -1505923, 4547297, 314069, -2621004, 1173063, 11563126, 3594351,
-5877663, -2670933, -4725538, 956704, 4179540, -4050691, 8366060, 8453569, 2374580, 3968550,
-1713155, -9673340, -5144834, -4734128, -690953, -260919, -4231080, 22275312, 25614112, -10101763,
--637803, 6977175, -20840256, -3810710, 25755308, 940598, -28213640, 3124052, 8565239, -642098,
-9687836, 23136988, -9571335, 20912196, 11220602, 17849348, 4894652, -13631152, -14652818, 11674795,
--13312251, -20713016, -6139656, -24616068, 5295695, -1648731, 8615704, 7522635, 5242008, 2783139,
--1133335, 693637, 12369506, 6107444, -24297166, -2831457, 7929584, 15515032, 8486855, 19219978,
-17177184, 13572097, -6598681, -2335925, 3413425, 34992172, -14848239, 2543158, 7228430, 13707925,
--5858873, -19491098, -4289599, -4939213, -11931419, -21561810, -23725936, 6415608, -13410499, -9995463,
-5851356, 18465138, 22567368, 381178, -1535451, -330712, 17265232, -11940546, -6331856, 20673826,
--22869090, 2442763, -18130130, -12046310, 1050656, 23972896, -4189741, -16524350, 21150566, -22033720,
-590558, -26586384, -2647847, -3416110, 7488276, 14650133, -11236171, -6298570, -8047695, 1884954,
-203474, -8312373, 4313221, -2535105, -2676302, -3611531, -3194919, -9834938, 1814624, -4799089,
-3063922, 2503429, -1101122, -2272575, 5504001, -122407, -322659, -11595338, 1296543, -1109712,
--812823, 10560788, 631897, 2882460, -4920422, 1587527, -3044058, -6376416, 2254858, -12848932,
-3747896, -4530654, 9011915, -7712688, -1544578, 1598265, -1590749, -2137283, -4501126, 6902013,
--5230734, 7526930, -3307662, -4931696, 4837207, 4159139, 12458626, -14579803, -31368830, -7891466,
--10696616, -10864657, -6188511, 1070521, -10509785, -9616969, 3405909, 6665253, -6467684, 16398722,
--1463510, 10847477, -5332202, -1089311, 10052908, -14280229, -8327405, -5142687, 14816563, -3917547,
--15547782, -6433861, 2740189, -8141648, 6935299, -11092290, -10380936, 15131170, 4854387, -12783970,
-7820062, -1935420, -9401683, -1394791, -15804406, -14321032, 3069291, 23721104, 10063108, 7073811,
--19065896, 14464376, -1406602, 10970420, -6447820, -13959717, 6862821, -25356414, 21086142, -34167000,
--21056078, 7325067, 18843632, 954557, 22501870, -10202158, 6113886, -15902116, 21120502, 6206765,
-15778099, 6638946, 3919695, -5389110, -4914517, -10676215, -3278671, -1114544, -17683454, -11229192,
-1839857, -27727236, 1796370, 30048664, 9373766, 10488310, 3202435, -14388140, -10181220, -3353833,
--3093987, -1515050, -5141076, -7828115, 6334003, 3459059, 5767068, 8092792, -8483634, 5121749,
--3078418, -5262409, -3325379, 7134478, -2372433, -8948027, -12482786, -651224, -7430294, -4170950,
--7626788, -2752000, -4929549, -3668439, 12173011, -7116224, 2941516, 3120294, -9396315, 10357314,
-300111, 5950141, 8818105, -4612795, 4454955, 1324997, -201863, 2051921, 7399155, -4801774,
--3911642, 6021544, 743029, 2619930, -1847910, -2542084, 391379, 5025112, -23607824, -22515292,
-2454574, 8915815, -10996727, -50611356, -10268193, -515396, 6838662, -17290464, 1729261, -9755481,
--1723356, -13827647, -14894410, 13201656, -14477798, -18337362, -2800856, -12912819, -13659607, 4533338,
--19959250, -6950331, 12453795, 27674622, 22818088, -1336809, -13508746, 4568772, 20564304, -1198296,
-13762149, -4136591, 17268990, 9306120, -17220672, 27553288, -20944408, -11456825, 18977850, -20890720,
-6481643, -5001490, -15271830, 1569274, 23788750, -5144297, -13577465, 8551280, 11803644, -593242,
-5034776, -34106872, 8427800, 1154273, 17331266, 8006893, -14591615, 14484240, -7655243, -1546188,
--13504451, 7050189, 20086488, -4347581, -3670050, -20589536, -28496034, 16093242, -1826435, 12914967,
--15469935, 11700565, 9813463, -20726438, 1432909, 17954038, 10660109, -9819906, -16199006, 14633490,
-2681133, -13052406, 12384538, 1735167, 5660767, 1172526, 5277441, 673236, 13806709, -82678,
-4917201, -1190243, 811749, 11763915, -3631932, 22549, 2985539, -3434900, 2443300, 796180,
-8560407, -712428, -9009231, -1427003, 1421097, -5797132, -1396938, 297427, -3454764, 12165495,
--2701535, -7456063, 1029718, 7621420, 3965329, -739808, 4755603, 314606, -4955856, -979789,
-13329431, 8607651, -8630737, -6831146, 2116882, -3081102, 19081466, 18939196, -51244328, 19255950,
-26126286, -6725919, 18205292, -285615, 9482751, -4271882, -10459856, -6924024, 11019275, 2472291,
--14733885, -9739375, -1273995, -7061463, -3700114, -1699196, 31858994, 6279779, 7130183, -19755776,
-13772886, -14098230, 303869, 2353642, -21374978, 9920301, -7864085, 1010928, -8597451, -15632070,
-518617, 10195179, 29527364, 10474888, 3154654, 18094698, 7802882, -2308545, 3087545, 347355,
-5234492, 2870649, 20059644, 8624294, 6130529, 3180423, -2464238, -6319508, -19557670, -16616155,
-2388002, -2474975, -12030203, 1605781, 14838575, -22605486, 21822192, 5480379, -7905961, -1022739,
--5720897, -1923072, 13256953, 5632850, 4384625, -15403363, -3010772, -21008832, -6346351, 5691906,
-7733089, 7484518, -8946954, -7386807, 16284369, -2036351, -26138634, 3641059, -382252, -416612,
--15394773, 4947266, 11682848, -1732482, 16773458, 11110007, -5511517, -444529, -7136088, 8869644,
--681826, 2829847, 1464584, -3931506, -3072512, -836445, -3187940, 3509525, -7089381, -849867,
-521302, 3738769, -3606699, -4459250, -5033702, 129386, -1154809, 2709051, 1745367, -306553,
--3107409, 3316789, 2726231, 353261, 3901978, 530965, 2819646, 2353105, 3709778, -1166084,
--13058311, -667331, -3650185, 2625836, -6031208, -45653892, 70745624, -69940856, -31597538, -15992311,
--4745402, 40897216, 12052215, 45788108, 11468100, -9368934, 36118528, 15610596, -12178380, 16915728,
-15350750, 8564702, 14367739, 13897440, -12337294, -19988240, -14190572, 2317135, -13043279, 6921877,
-4157528, 8973797, -1343251, 6208375, 2146410, 22505628, 5389110, 2136746, 6979859, -5220533,
--256087, 7961796, -14047764, -20037096, -13577465, -11643656, 2061584, 5983427, -14078903, -2268817,
--8442832, -34745748, 17590038, -6247567, 8939974, -18253074, -6139119, -16901234, -23147190, 8822937,
-6239514, 22652732, -890669, 19967840, -8344048, 16738561, 2055679, 23868208, -16770774, 14795625,
-17790292, 9859634, 10362682, 942208, -7130183, 27952720, 18757732, -1769527, 33735896, 8138963,
-4047470, 14484777, 21790516, 353798, 10082973, 12611098, 5838471, 5564130, -2392297, 1204738,
--19532438, -4927401, -2524904, 3229816, 4254702, 3995393, 13202193, 5888937, 6798397, -5006858,
--578210, 5252745, 685047, 549219, -4529043, 5495948, 4704600, 2711198, -3497177, 6958921,
--885837, 1349157, -5142150, -4784594, -1816234, 679142, 770410, -3078418, -10645076, 2653216,
-2517388, -2779918, -367757, -2619393, 994822, -3801583, 2846490, -3650185, 351114, 9862856,
--2565706, -9434433, 6433324, 4698694, 3994320, -2128693, -1080721, 43309376, 3600793, -25885768,
--38356744, -20151986, -16094316, 5238250, 31480500, -420370, -13535589, 28391344, 2166274, -22780506,
-20400020, 22397180, -4265977, -347355, -2349347, -20177756, 22306450, 1324997, 12578885, -7087770,
--18209588, -31436476, 5526549, 4010963, 4653060, -4414690, 9673340, -10447508, -353798, -20162724,
--25376814, 8835285, -3424700, 8000987, -3881577, -9336185, -23021024, -35350804, 17858474, -19770808,
-7835094, 16962436, -1465121, -9137006, -17631914, -12549894, 40396316, 9190156, -2151242, 5223754,
--5677947, -16520055, -5708012, 23512262, -23130010, -38470560, -13733695, -12280922, -54114976, -42126648,
--22967338, -23483270, 5427765, -368293, -19071802, -36010080, -14560476, -17097192, -12549358, -9964324,
--7607461, -21618718, -20960514, 16103980, -18665390, 980326, 2367064, -22671522, -4351339, -16602733,
--20982526, -5194226, -3777424, 9334038, 3575560, 12615393, -13579613, 3157338, 7103339, -285078,
--18128520, -10235981, -12322798, -1395328, 5294084, -6260989, -9081708, 15062450, 8636105, 10760504,
--18563922, 2801393, -9297530, -1285269, 250719, 1516124, -2685965, 17959942, 908386, -3513820,
-1770063, 6087043, 8668318, 7261179, -1763084, 10489384, -8355322, -4488241, -3930432, -14491220,
--988916, -4673462, -18782966, -15582141, 2022930, 389768, -921807, -5043366, -4634270, -1770063,
--3324305, 29300266, -3157875, 27896886, 42199664, -8069170, -45041324, -44302052, -9141838, 20718922,
-3200288, -34840236, 27388470, -6248104, -22297860, 27443230, -51920248, -11312944, 544387, -9582072,
--7738458, 63009856, -26286810, 59029492, -2683281, 12168716, -4144107, -23760296, 38261716, 9781788,
-39771396, -27390618, -26458610, 8331700, -42825656, -13196287, -6693707, -30231738, 62512712, -5711233,
--64409476, -1264331, -28599650, 8142185, 16119012, 25637196, 21243446, -25793962, -15779710, -39980776,
--11444477, -18655190, 17207786, 10994579, -1973001, 11457899, -7770133, -28421410, -11364483, -33121714,
-33890512, -25658672, -17403744, 30039538, 7325604, 50947440, 24971476, 4268124, 27173184, -36393944,
--13348221, -37563784, -36154496, -5783711, -5127654, -45771468, 47159276, -8439611, -36323076, -54466628,
-3711389, -10923712, 39942660, -2675228, 2217277, 5214091, -6982006, 7425999, 9101573, 18568754,
--12364137, -12708808, -7919920, 472446, -2146410, -2704219, -11678553, 13111461, 8293045, 15663209,
--3564286, -8572218, -7154879, -2839510, 3081102, 21028160, 22519050, -3685619, 1358820, 12140799,
--3267933, -28072444, -13502303, 1743220, 3974992, -2202245, -17769890, 6277095, -2013266, -4233227,
--20375324, 8057359, 7038915, 24445344, 4098473, 6066642, -1103270, 10104447, 1856500, -5737003,
--10763725, -775242, 1302449, 7991861, 3744675, -4575214, 782221, -84434760, 43488692, 10273562,
--18504330, -13590350, 26776974, 15047418, -16578037, -4284767, -40075804, -16505559, 16706886, -34283504,
-1088774, 6333466, -10759967, -22826678, -15916075, 31071404, 12182675, -6082211, -44712220, 15182173,
-27733140, 16270410, -34684008, -22826678, -110595, 37582576, 3081639, -8965207, 5643587, 1306207,
-18884972, -49845780, -43468292, 53557168, 8024073, 22453552, -51133196, 11160473, -2567854, 37359772,
--33709588, -6316823, -51270100, 17907330, 36462660, 8688182, -22941030, 14676977, 53043384, -23835994,
--25733296, -19894826, 7286412, 2287607, 46485504, -13911936, 3287798, -25169046, 7975755, -27608050,
--1212791, 17812840, -34864932, 33095944, 9721658, -23953570, -37696928, -22649510, -2201171, 33381022,
--60625072, -13094282, 54263692, 7233262, -24935506, -11534672, -17682380, 51445656, -6015639, -53846540,
--6578280, 9127, -13604846, 21997748, -4088272, -7529615, 16347719, -1480153, -11375221, -14105209,
--1801739, -12437688, 3461744, 9165460, 11780558, -10826002, -8304320, 11217381, -7674570, 10621991,
--5957120, -10802916, 14484777, -8129300, 13009456, 18369038, 849330, -26625040, -2152852, -15873662,
-6263673, 9824201, 6074695, -18613314, -159988, -14060112, 12781286, -3962644, -8410620, -5381057,
-2484102, 4488241, -10306848, 4556424, 55711096, 28860032, 12746926, 13153874, 13305809, -8687108,
--8934606, -18665928, 2246268, 6271189, 4806069, -928250, -32294932, 15577310, 6179921, -22185116,
--19105626, -9525701, -11227581, 8484171, -8422968, -9334038, 2624762, -640487, -17211008, 22029424,
--15842524, -4948876, -16457778, -14679661, 10521059, -6187438, -2276870, 5625871, 6822556, -1672890,
--21863532, 5291400, 33774012, 7344394, -53298932, -3263102, -11668352, -16432545, 11075647, 12087649,
-27400818, 13341779, -34810172, 37702296, -9444633, -25994752, 78216184, -15711527, -6830072, -25767120,
--62407484, 28594282, 31506806, 10505490, 11813844, -53179212, 15348603, -4099546, -13036836, -9315247,
-1996623, -5002563, 8195335, 10195179, 2061047, -7841537, -15383499, 16208133, 20143396, 28309204,
--14120779, -2812667, 5855114, -4108136, 14658723, -36499704, 3384434, 6511708, -17286706, 2876554,
--14431090, 5635534, 94489, 4525285, -2527588, 1044751, 1236414, -705985, -667331, -4838818,
--3968550, 9786620, -5580773, -347355, 7037841, 1619740, 140660, 11949673, -10036802, 7320772,
-8381629, -528281, -1913408, -10110353, 7987566, -18905910, -5505611, 12326019, 3360275, -5169530,
--12990129, 3852049, -3179350, 15328201, 1974074, -32019518, -75758392, -128835600, 10741713, 130523520,
-12851616, 277747488, 281244672, 101683352, 282243776, 163164736, -47176456, -4716411, -25176024, -213886688,
--176745424, -124573376, -221391600, -212068848, -60050624, -133543952, -115755272, 26121454, 37507412, -28927678,
-41635412, 60364692, 316754, 4109747, 120961848, 80277768, 31115964, 89006216, 167162816, 78376712,
-92341800, 206156816, 82069312, 37010808, 178858000, 171901232, 8021389, 109941496, 195097280, 333934,
-49908056, 115344032, -4023311, -94321776, 47221016, -19685446, -180954496, -169230832, -154954896, -302198208,
--446173024, -310969600, -434073568, -579060928, -408065920, -331177952, -447165152, -285944416, -137048656, -132619464,
--24606942, 133470400, 269739520, 304795584, 408446016, 555062272, 545955328, 515991456, 581759744, 580354240,
-474490816, 381565984, 409119808, 271596000, 97252552, 129553928, 32440424, -238121584, -152527168, -161809664,
--331832928, -280684160, -201229424, -236272064, -272879680, -170083920, -148028736, -206746304, -169966352, -88458072,
--141257184, -186792960, -111631032, -79064440, -147512256, -83426520, 20434918, -46120968, -52147884, 59876676,
--1134945, -74912816, -8647917, -47011100, -169132048, -117944632, -88434448, -157402496, -69536056, 39788040,
-76739792, 140245184, 233785808, 270999552, 285020480, 318847648, 340082496, 334289120, 308949344, 286983808,
-244514640, 193994544, 120013200, 89642944, 12015171, -75082472, -131315944, -211596928, -303880736, -296107936,
--251233040, -228165312, -197125584, -135089072, -112981800, -101404712, -72184440, -47499652, -41632728, -17080548,
--9271761, -6615860, 2203318, 19368156, 32132260, 40164924, 47959752, 54702852, 53946400, 52291764,
-45088568, 44095892, 31992674, 25121264, 12984760, 7540889, -5583458, -14230837, -19115288, -18086644,
--23982024, -23631984, -23475754, -23972360, -27299886, -19643032, -20133196, -12510703, 391379, 16029892,
-23229868, 37631428, 44074956, 48703320, 51840792, 59017144, 55560232, 53575424, 51616380, 45845556,
-30826054, 26853210, 21355652, 13776108, 4422206, 4271345, -6287296, -12198781, -18655728, -24482388,
--35243428, -37953552, -45371496, -50705312, -55515672, -54788212, -59144920, -57855356, -54980952, -47741784,
--41799160, -28247464, -18182744, -5893769, 2178085, 14578730, 20051054, 26979910, 29865592, 33560876,
-31608812, 33571612, 29987462, 30001420, 25057376, 23674396, 18112950, 15127949, 8839580, 7357279,
-2134599, 1916629, -1234803, -295279, -3041374, -1414118, -3238405, -1148904, -2823404, -493921,
--2150168, -537, -1699733, 513249, -1098975, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+3443490, 2669859, -881005, 2043868, 987843, 5901822, -1023276, -165893, 752693, 4316979,
+-847719, -4520453, -2091112, -4339528, 1061931, -1549946, -355409, -554588, 1052267, 410706,
+885300, 2502355, 4618164, -2057289, -1129576, 914291, -2172180, -307090, 3602941, -1961190,
+4452271, 452045, -1592359, 2947958, -4029753, -1038845, -2806761, 3937948, -114890, -1461363,
+-1069984, 42950, 3667365, 143881, 4413616, 1690607, -3623879, 2932926, -1583232, -2711735,
+-2211371, 3015604, -627602, 9616969, 1022739, 2415919, 1752347, -4485557, 68183, -663572,
+1175210, -2547989, -1719061, 5011153, 4108673, 369904, 1709397, -460635, 2558190, -4137127,
+424665, 3104725, 1960653, 315143, -316217, 2212445, -3505230, -1618666, 3739306, -2457258,
+798864, 1817845, 2213519, 677531, -2801393, -1871532, 1482838, 325344, 1470489, -446677,
+426276, -1402307, -74088, -699543, -408022, 797253, 1542430, 645856, -888521, -348429,
+-599685, 360777, 945430, -557809, 699006, 507880, 983548, -140123, 1178432, -477815,
+298500, 719407, 924492, -7346005, -6619082, -4129074, -3748970, -3259880, 1252520, 4624069,
+9445170, 1802813, 2439005, -27917, -6735583, -2829847, -2500208, -6063420, 9423695, 2494302,
+3744138, 2576981, -2081985, 949188, 9021042, 3590056, -2121714, -184684, -2188286, 178241,
+-4174708, 2499671, -1317481, -1882269, 356482, 4781373, 505732, 1660005, 3002719, 4143033,
+-7447474, 83752, 1890323, 4320200, 6657736, -3717831, -752693, -1808181, 5552856, 2995203,
+3580392, -606127, 1659468, 11094437, -7017977, 1393717, 652835, -4704600, 1997160, -6567542,
+-883153, 1668595, -1420024, -9895605, 2769717, 669478, -2673617, -2752537, -459025, -1500554,
+3335042, -3148748, -1391033, 959388, -107374, -3063922, -150861, 2484639, -4141959, 352724,
+-1133335, -1006633, -1292785, -744103, 625992, -2427730, -1823751, 343061, -1450625, -1924145,
+-1970316, -688269, -1311576, 2384781, -2123861, -613643, 331249, 1190243, -148713, 66035,
+-747324, 129923, -1278290, 937377, -859530, -852014, -255014, -1868848, 9994389, 833224,
+3610994, -456340, -2632815, 171799, 7033546, 3537443, 4552129, 7188165, -3155727, 31139,
+7058242, 2202781, 3121904, 357556, 901406, 4072166, -3686693, -1138703, 5257577, -3594888,
+2077154, 2930778, -2188823, 2143726, 7036230, -3358128, 2621004, 515933, 308164, 50466,
+-1422708, -4816269, -1445257, -4041027, -387621, 1636383, 3386582, 3506841, -605054, -6029597,
+-517007, 8713952, -3213709, 1731409, -1541356, -9240622, 5405217, 1317481, 4020090, -701690,
+4573604, 4399121, -7808788, 3097208, 259846, 2905546, -560493, -5521718, -243203, -802085,
+-991601, -1062468, 3521873, -41876, 700617, 7087770, 1393180, 5631239, 197032, 527744,
+1097364, -3121368, -4870493, 3325915, -3682935, 2180770, 1385127, -208306, 2342368, -2483028,
+-1391569, 1549946, 93416, -4730907, 1533303, 544924, 623844, -966368, 2058900, 183610,
+-804770, 2268280, -507880, -206695, -1885491, 668941, -935229, 318901, 25770, -288837,
+466541, -729071, 1242319, 276489, -472983, 349503, -279173, 127775, -45634, -762357,
+-61203, 16333761, 9126269, 13981729, 4495757, -5750425, 2934537, -2556043, 366683, 1388885,
+-11916387, -3135326, -3297461, 3106872, 4651450, -1889249, -294742, 1608465, 357556, 8549669,
+-956167, -8884677, 2890513, -5119064, 3950296, 4566087, 3595425, 5313949, -1280974, -1777580,
+2126009, -1533303, -2086280, 1565516, -1395864, 3212636, 4522064, -1905892, -6879464, 2267206,
+-6689949, -4250944, -846645, -13848585, 132070, -2290291, 5449777, 5260798, 2512019, 8579197,
+8570607, 3860102, 1909650, -556198, 419296, 549756, -3884261, 8023536, -1057099, 2836289,
+-2517925, -2961917, -1087701, -4472672, 4017942, -2027225, -1673427, 7879118, -6488622, -1915019,
+1664837, -2899103, -889058, -156229, 2749316, 3313567, 2183991, 5644124, -1801202, -1421634,
+-786516, -3403225, 1869385, 3664144, 4922570, 9664, -715112, -936840, 88047, 1163936,
+1063004, -1360968, 1661079, 92342, 1209033, 1114544, -162672, -266825, 2143189, -484794,
+1103807, 991064, 1021129, 998580, -556735, 920197, 3602404, -129386, 227096, 556198,
+2676838, 612033, -532576, -1722819, 1433445, 1159641, -570157, 617938, -6043556, -14448270,
+-4947266, -1644973, 2185602, -1925219, 4480188, -1099512, 7138773, -6440304, 3846680, -1700270,
+13003550, 5251135, -2677912, -5647345, 3106872, -7975218, -4066260, 2889976, -2638721, -4808216,
+9028558, 3583613, -393526, -4238059, -5446556, 3651259, 3019899, 2696166, -129923, -1503239,
+-3323768, 5124433, -6729140, -3047816, -208306, 4751308, 3830574, -459025, 5470178, 569083,
+-2400887, 986232, -2391223, -2705830, -2911988, 3675418, -2663417, -188979, 5099200, 7358890,
+7737921, 3032784, 2810519, -586800, 4428648, -1824287, 6323266, -1164473, 4070555, 2974802,
+-2453500, 240518, -2697776, 2946885, 2746632, 983548, -852551, -5299990, 3801046, -5760088,
+-572304, -6225018, 2378338, -520765, -471910, 1108638, -5108327, 181462, 1484985, 8433705,
+2881386, 1374926, 2141578, 3260954, 1590212, 1670205, -2399813, 1858647, 1577327, -3524021,
+-161061, 146566, 875636, 1450088, -1582696, 1067836, -976568, 205622, -74625, 2114735,
+362388, 241592, 396748, 695785, -307090, 1919850, -922344, 707059, 897648, 1852742,
+1035624, 2581275, -1737851, 949725, -297963, 2981244, 1298691, 1053341, -239444, -435402,
+385473, -598611, -472983, -1997697, -6672232, -13990856, -11310260, 716186, -9664750, -4745402,
+-13684303, -7269769, -8343511, 3330747, -4461398, -5910949, -2035815, 340376, -3524558, -13267154,
+3561065, -2333241, 1329829, -5995775, 5990943, 2238752, 132607, -5331128, -2384781, 6816650,
+4634270, 321049, -1012539, -4540854, 2844879, 1495722, 2946885, -5439576, -505196, -4414153,
+-3976603, -4316979, 455803, 8829916, -7177427, 177704, -6836514, 724239, 3194382, 4019553,
+-7207492, 7283191, 8822400, -2880849, -2085207, -1512902, -336081, 2827162, 3569118, 906775,
+2433636, -4269735, -820339, -1568737, 7598334, -2347737, 8408472, -187905, -2558190, 6722161,
+-680752, -3977140, 1451162, 7282117, 8374650, -598611, -2593624, -4521527, 2900177, -6044093,
+-579284, 4094178, -3087545, 1860795, -190589, -8053, -2475512, 84826, -1912871, -3009162,
+-282394, 2601140, 1387811, 2592013, -1117228, -797253, -2019708, 833761, -1625108, 2699387,
+1388348, 3759170, 385473, -834834, -297427, -624381, -1284195, 1743220, -1130650, -634581,
+737124, 610959, -1796907, -600759, 531502, 97174, -972273, -1735167, -68183, -1596117,
+-1088237, -643171, 2191507, -112206, 789200, 690416, 139586, -1234266, -334471, -105764,
+-10721312, -10856604, -12337294, 3559991, -9973988, -4287988, 9772124, 4621922, -10835129, -832150,
+200253, 4704600, 7238631, 12108587, -3210488, -4486630, -11909944, -14829985, -8613557, -3063386,
+6096169, -6075768, 2979097, -8588324, 8910983, -6470905, 7172596, -3388192, 1078574, 1747515,
+-1340567, -6385006, 10037875, -8696772, -354335, -4687957, 1296006, -5444945, 1305670, -21628918,
+423054, 9918153, -12741020, 2826625, 8824547, 3044595, -6604586, -840740, 10605885, -13084618,
+20938, 5218922, 5162551, 4900021, -1813550, -1976222, -8339753, -4264903, 3500398, 5634997,
+9183177, 11033771, -16334834, 6139119, -4892505, 1103807, -11502996, -4796405, 9568650, 2225867,
+1358283, -6445672, 56371, 6039798, 4515621, 2639794, -5675263, -3798899, 6003291, -1682554,
+-2479270, -1390496, -4169340, 3489124, -653909, -3432216, -1235877, -1246614, 897648, -2257542,
+-2252710, 686121, 849330, 810138, -1271310, -2009508, 1656247, -1324461, -4322885, -492848,
+-1269700, 2527588, -1995012, 25233, 230854, 942745, -2704219, -1643362, -967441, 175557,
+2905546, -453656, -676994, 1665374, 42413, 1634235, -819802, -2057289, -725850, -3406446,
+745177, -148713, -2285996, 1273995, 12867185, 21449066, 11940546, 13977971, 2133525, 4956929,
+18820546, -599685, 565862, 12869333, -6294812, 19864, 3706557, 6409702, 10627897, -8659191,
+-12328704, 6785512, 3776887, -7172059, 1537061, 4385162, -2745021, 2514703, -6637335, -1513439,
+-7752953, 2372433, 8450885, 2614561, 7402376, 5710159, 6024229, -14676977, 769336, 17055852,
+-2030446, -317828, 15907485, -2109366, -562641, 2343979, -2096481, -479963, 8805220, 13817984,
+-13587666, -2228014, 2711735, -4184372, 6414534, -2173254, 630823, 994285, -2962991, 12162811,
+-1560147, -4449049, 4562329, -4613332, -7597261, 2605972, 8296266, 3121904, -923418, 1666447,
+7937637, 4132832, 7110855, 2130841, 883153, -96100, -6978785, -1459215, -5468567, -1265942,
+-2298344, -12444131, -5385352, 785979, 8011725, -3310346, 3094524, -2146947, -6577206, 2900177,
+707596, -2106682, 1025423, -4019553, 192737, 978179, 2447058, 3479997, -847182, 2236067,
+-3029026, -4487167, -5363341, -584652, 4823785, -892279, -399432, 1598802, 243203, 515396,
+2582349, -1282048, -508954, -1442035, 3719442, 68183, -590021, 421444, -985158, -2018635,
+-2441152, 972810, 2086817, 2632815, 1416266, 1031866, -519154, -191126, -15569, -886374,
+-3751117, 1180579, 36203888, 5024575, -781147, -216896, -17388712, -5083631, 1665374, -4055523,
+7653632, 3369402, 12412455, -1588601, 537, -2689723, -5274757, 8327942, 1545115, 3177739,
+4657355, 6513318, -6165963, -6199249, -7174743, -4992363, -4124779, -1815161, -9849971, -1949378,
+15817291, 7448010, -3053722, -1099512, -1904281, 1293322, 5573257, -2778307, 22609782, -3972845,
+-664109, -10319196, 4060355, 9845139, -1751273, -7607461, -1035087, 3764002, 7531225, 3231426,
+10607495, 15883326, 5129802, -389231, 9401147, 7679402, 2825552, 5921150, -19924890, 4552666,
+455267, -17630304, 6382859, -472446, -7645042, 4889821, -8105140, -7878044, 9240622, 7264937,
+-4220342, -15616501, -7119445, 3664144, -9022116, -1894618, 3821447, 15198816, -2566243, 3011846,
+-8052527, -16857746, -9104794, -8120173, -3738769, 7935489, 998580, -5651103, -1788317, -3555696,
+-3489124, 5041218, 4162897, 1560147, 3537443, 4236985, -3750580, -2764348, -2816962, 491237,
+-3081102, -4501126, -4394289, 1765232, -1569811, -727460, 485331, 1488206, -3757023, 1965484,
+-908922, -536871, -1738388, -689342, -2415919, 5624260, -3669513, -1337346, 881005, -3782256,
+-3680250, -2803540, 79994, 2804614, 2273648, -19421842, 12317966, -2452426, -12167642, -718870,
+11476689, -13088913, -2496987, -10595684, 7091528, 2006824, -3602941, -4638028, -1376000, 6685117,
+5494874, 2746632, 7395934, 6089190, 854162, 7399692, 8949101, 3399467, 5046050, -9121437,
+-4151086, -6415071, 5717675, 6973417, 2771865, 2011655, -4022237, -3307662, -2387465, -2506650,
+-7362111, 6717866, 1792075, 243739, -7893076, -2623688, 13060459, -9463424, -9681930, -15358266,
+5492190, -11568494, 16695075, 18886044, 13347685, 7497939, 931471, 14721000, -7693360, 11528229,
+-1333587, -8560944, 809601, 488553, -17757542, -8182987, 6926172, 833224, -2850248, 2517925,
+15243376, 10102837, -17112760, -4570382, -73551, -651761, 5173288, 7172596, -166430, -14067629,
+5764383, -8244190, -25554518, -7681549, -5055177, 7796440, 13178033, 4197794, 830002, 474057,
+575526, 970663, 9441412, -154082, 1561758, 1005022, 4863514, -8374650, -246424, 2331094,
+6298570, 7173669, 2798171, 4185983, 6710350, 8410620, 11276437, 4050691, 5683316, 5235565,
+474057, -682900, -1806034, -1543504, 260919, 2084670, -6272800, -1777043, 3985193, 5900212,
+-441308, 1532767, -618475, 2380486, 256087, 3725347, -412317, 3566434, -2563022, 4615479,
+314606, 4350265, -16077136, 1586454, 1808718, 10050223, 2187212, 25704842, 4113505, -10632192,
+-3416110, -8954470, 16273094, -20867098, -1844152, 14398341, -31477278, -12445205, -10609643, -11025181,
+-20871394, 1961726, -3643206, -8972724, -1122597, 9870372, 1262720, 1299228, -6142877, 2439005,
+-2065879, 2425046, 32212, 1553168, 8077223, -1966021, -479426, 16383153, -10581726, -2141578,
+2851858, 14112189, -7392713, 20153060, -6082748, -8146479, -17237852, -22458384, -6532646, -16716013,
+8172786, -5072357, -12530030, 1714766, 2047626, 9248138, 7840463, 3272228, -1568737, 28533078,
+15808164, -1795296, 2802466, 9776956, 7323456, 4753992, -3843996, -546535, -5100274, -6639483,
+-6133750, 4313221, 22267794, -15540802, -3791383, -8842801, 16051903, -4206384, 4986457, -2268280,
+7546258, -17597018, -13160854, -4526896, 7505992, 2398739, 6483253, -3870839, 4005594, 6060736,
+5312875, 2543695, -1035624, -7482907, 4748623, 1802276, -6363531, -4438849, 4008278, -4156992,
+-3163780, -92342, 4313758, -3952981, 5194226, -3198140, 7413651, -4072166, 841277, 2632278,
+1359357, -3515431, -6748468, 5295695, -2019708, -1462436, -517007, -644245, -2127620, 5034776,
+6212670, 4372814, 3804804, -668941, 2196876, 7192460, -3832185, 2889976, 1242319, -88584,
+1573032, -378494, 389231, -2488397, 3307662, 1048509, 3155727, -929324, 1383516, -538482,
+-2585570, 1888712, 479426, 2225330, 3221762, -478889, -12877386, -12272869, 6895033, -5475010,
+-23144506, 11484206, -6934225, 9179419, -6692633, 11541114, 7781407, 9601399, 15262703, 2518462,
+12907450, 5242545, 3302830, 8826695, 2993592, 2442226, 587337, -338766, -8269960, 7357816,
+-16749299, 7335804, 1705639, -4763119, -9044664, -213138, 6419903, -7439420, -3156264, -11135776,
+-4361540, -13713831, 830539, 7577933, -176094, -1762010, -8753680, -15145665, -11049340, 11869679,
+3920232, -4923107, -8747238, -2117956, -732829, -14809047, 12518219, 11441256, -14637785, -14175003,
+-23289460, -3524021, -27858768, 7512435, 10803990, 5717139, -1766305, -3537979, -2905009, 11434277,
+11515881, 13335337, -8706436, -6886443, 8880382, -3834332, -4184909, -16304233, 7218230, 13343390,
+15238007, -3585761, 8333847, -4684199, 2484639, 8361765, 4281546, -5873368, 2736968, -10062572,
+-6158446, -4168803, 1471026, 4262755, 3621731, -3981972, -3686156, -1479079, -4542465, -882616,
+-6248641, -7739531, -4095251, -3221762, -2404645, -1025423, -2283849, -3073586, 646929, -135828,
+4460861, -1548873, 5705327, -1505923, 4547297, 314069, -2621004, 1173063, 11563126, 3594351,
+5877663, -2670933, -4725538, 956704, 4179540, -4050691, 8366060, 8453569, 2374580, 3968550,
+1713155, -9673340, -5144834, -4734128, -690953, -260919, -4231080, 22275312, 25614112, -10101763,
+-637803, 6977175, -20840256, -3810710, 25755308, 940598, -28213640, 3124052, 8565239, -642098,
+9687836, 23136988, -9571335, 20912196, 11220602, 17849348, 4894652, -13631152, -14652818, 11674795,
+-13312251, -20713016, -6139656, -24616068, 5295695, -1648731, 8615704, 7522635, 5242008, 2783139,
+-1133335, 693637, 12369506, 6107444, -24297166, -2831457, 7929584, 15515032, 8486855, 19219978,
+17177184, 13572097, -6598681, -2335925, 3413425, 34992172, -14848239, 2543158, 7228430, 13707925,
+-5858873, -19491098, -4289599, -4939213, -11931419, -21561810, -23725936, 6415608, -13410499, -9995463,
+5851356, 18465138, 22567368, 381178, -1535451, -330712, 17265232, -11940546, -6331856, 20673826,
+-22869090, 2442763, -18130130, -12046310, 1050656, 23972896, -4189741, -16524350, 21150566, -22033720,
+590558, -26586384, -2647847, -3416110, 7488276, 14650133, -11236171, -6298570, -8047695, 1884954,
+203474, -8312373, 4313221, -2535105, -2676302, -3611531, -3194919, -9834938, 1814624, -4799089,
+3063922, 2503429, -1101122, -2272575, 5504001, -122407, -322659, -11595338, 1296543, -1109712,
+-812823, 10560788, 631897, 2882460, -4920422, 1587527, -3044058, -6376416, 2254858, -12848932,
+3747896, -4530654, 9011915, -7712688, -1544578, 1598265, -1590749, -2137283, -4501126, 6902013,
+-5230734, 7526930, -3307662, -4931696, 4837207, 4159139, 12458626, -14579803, -31368830, -7891466,
+-10696616, -10864657, -6188511, 1070521, -10509785, -9616969, 3405909, 6665253, -6467684, 16398722,
+-1463510, 10847477, -5332202, -1089311, 10052908, -14280229, -8327405, -5142687, 14816563, -3917547,
+-15547782, -6433861, 2740189, -8141648, 6935299, -11092290, -10380936, 15131170, 4854387, -12783970,
+7820062, -1935420, -9401683, -1394791, -15804406, -14321032, 3069291, 23721104, 10063108, 7073811,
+-19065896, 14464376, -1406602, 10970420, -6447820, -13959717, 6862821, -25356414, 21086142, -34167000,
+-21056078, 7325067, 18843632, 954557, 22501870, -10202158, 6113886, -15902116, 21120502, 6206765,
+15778099, 6638946, 3919695, -5389110, -4914517, -10676215, -3278671, -1114544, -17683454, -11229192,
+1839857, -27727236, 1796370, 30048664, 9373766, 10488310, 3202435, -14388140, -10181220, -3353833,
+-3093987, -1515050, -5141076, -7828115, 6334003, 3459059, 5767068, 8092792, -8483634, 5121749,
+-3078418, -5262409, -3325379, 7134478, -2372433, -8948027, -12482786, -651224, -7430294, -4170950,
+-7626788, -2752000, -4929549, -3668439, 12173011, -7116224, 2941516, 3120294, -9396315, 10357314,
+300111, 5950141, 8818105, -4612795, 4454955, 1324997, -201863, 2051921, 7399155, -4801774,
+-3911642, 6021544, 743029, 2619930, -1847910, -2542084, 391379, 5025112, -23607824, -22515292,
+2454574, 8915815, -10996727, -50611356, -10268193, -515396, 6838662, -17290464, 1729261, -9755481,
+-1723356, -13827647, -14894410, 13201656, -14477798, -18337362, -2800856, -12912819, -13659607, 4533338,
+-19959250, -6950331, 12453795, 27674622, 22818088, -1336809, -13508746, 4568772, 20564304, -1198296,
+13762149, -4136591, 17268990, 9306120, -17220672, 27553288, -20944408, -11456825, 18977850, -20890720,
+6481643, -5001490, -15271830, 1569274, 23788750, -5144297, -13577465, 8551280, 11803644, -593242,
+5034776, -34106872, 8427800, 1154273, 17331266, 8006893, -14591615, 14484240, -7655243, -1546188,
+-13504451, 7050189, 20086488, -4347581, -3670050, -20589536, -28496034, 16093242, -1826435, 12914967,
+-15469935, 11700565, 9813463, -20726438, 1432909, 17954038, 10660109, -9819906, -16199006, 14633490,
+2681133, -13052406, 12384538, 1735167, 5660767, 1172526, 5277441, 673236, 13806709, -82678,
+4917201, -1190243, 811749, 11763915, -3631932, 22549, 2985539, -3434900, 2443300, 796180,
+8560407, -712428, -9009231, -1427003, 1421097, -5797132, -1396938, 297427, -3454764, 12165495,
+-2701535, -7456063, 1029718, 7621420, 3965329, -739808, 4755603, 314606, -4955856, -979789,
+13329431, 8607651, -8630737, -6831146, 2116882, -3081102, 19081466, 18939196, -51244328, 19255950,
+26126286, -6725919, 18205292, -285615, 9482751, -4271882, -10459856, -6924024, 11019275, 2472291,
+-14733885, -9739375, -1273995, -7061463, -3700114, -1699196, 31858994, 6279779, 7130183, -19755776,
+13772886, -14098230, 303869, 2353642, -21374978, 9920301, -7864085, 1010928, -8597451, -15632070,
+518617, 10195179, 29527364, 10474888, 3154654, 18094698, 7802882, -2308545, 3087545, 347355,
+5234492, 2870649, 20059644, 8624294, 6130529, 3180423, -2464238, -6319508, -19557670, -16616155,
+2388002, -2474975, -12030203, 1605781, 14838575, -22605486, 21822192, 5480379, -7905961, -1022739,
+-5720897, -1923072, 13256953, 5632850, 4384625, -15403363, -3010772, -21008832, -6346351, 5691906,
+7733089, 7484518, -8946954, -7386807, 16284369, -2036351, -26138634, 3641059, -382252, -416612,
+-15394773, 4947266, 11682848, -1732482, 16773458, 11110007, -5511517, -444529, -7136088, 8869644,
+-681826, 2829847, 1464584, -3931506, -3072512, -836445, -3187940, 3509525, -7089381, -849867,
+521302, 3738769, -3606699, -4459250, -5033702, 129386, -1154809, 2709051, 1745367, -306553,
+-3107409, 3316789, 2726231, 353261, 3901978, 530965, 2819646, 2353105, 3709778, -1166084,
+-13058311, -667331, -3650185, 2625836, -6031208, -45653892, 70745624, -69940856, -31597538, -15992311,
+-4745402, 40897216, 12052215, 45788108, 11468100, -9368934, 36118528, 15610596, -12178380, 16915728,
+15350750, 8564702, 14367739, 13897440, -12337294, -19988240, -14190572, 2317135, -13043279, 6921877,
+4157528, 8973797, -1343251, 6208375, 2146410, 22505628, 5389110, 2136746, 6979859, -5220533,
+-256087, 7961796, -14047764, -20037096, -13577465, -11643656, 2061584, 5983427, -14078903, -2268817,
+-8442832, -34745748, 17590038, -6247567, 8939974, -18253074, -6139119, -16901234, -23147190, 8822937,
+6239514, 22652732, -890669, 19967840, -8344048, 16738561, 2055679, 23868208, -16770774, 14795625,
+17790292, 9859634, 10362682, 942208, -7130183, 27952720, 18757732, -1769527, 33735896, 8138963,
+4047470, 14484777, 21790516, 353798, 10082973, 12611098, 5838471, 5564130, -2392297, 1204738,
+-19532438, -4927401, -2524904, 3229816, 4254702, 3995393, 13202193, 5888937, 6798397, -5006858,
+-578210, 5252745, 685047, 549219, -4529043, 5495948, 4704600, 2711198, -3497177, 6958921,
+-885837, 1349157, -5142150, -4784594, -1816234, 679142, 770410, -3078418, -10645076, 2653216,
+2517388, -2779918, -367757, -2619393, 994822, -3801583, 2846490, -3650185, 351114, 9862856,
+-2565706, -9434433, 6433324, 4698694, 3994320, -2128693, -1080721, 43309376, 3600793, -25885768,
+-38356744, -20151986, -16094316, 5238250, 31480500, -420370, -13535589, 28391344, 2166274, -22780506,
+20400020, 22397180, -4265977, -347355, -2349347, -20177756, 22306450, 1324997, 12578885, -7087770,
+-18209588, -31436476, 5526549, 4010963, 4653060, -4414690, 9673340, -10447508, -353798, -20162724,
+-25376814, 8835285, -3424700, 8000987, -3881577, -9336185, -23021024, -35350804, 17858474, -19770808,
+7835094, 16962436, -1465121, -9137006, -17631914, -12549894, 40396316, 9190156, -2151242, 5223754,
+-5677947, -16520055, -5708012, 23512262, -23130010, -38470560, -13733695, -12280922, -54114976, -42126648,
+-22967338, -23483270, 5427765, -368293, -19071802, -36010080, -14560476, -17097192, -12549358, -9964324,
+-7607461, -21618718, -20960514, 16103980, -18665390, 980326, 2367064, -22671522, -4351339, -16602733,
+-20982526, -5194226, -3777424, 9334038, 3575560, 12615393, -13579613, 3157338, 7103339, -285078,
+-18128520, -10235981, -12322798, -1395328, 5294084, -6260989, -9081708, 15062450, 8636105, 10760504,
+-18563922, 2801393, -9297530, -1285269, 250719, 1516124, -2685965, 17959942, 908386, -3513820,
+1770063, 6087043, 8668318, 7261179, -1763084, 10489384, -8355322, -4488241, -3930432, -14491220,
+-988916, -4673462, -18782966, -15582141, 2022930, 389768, -921807, -5043366, -4634270, -1770063,
+-3324305, 29300266, -3157875, 27896886, 42199664, -8069170, -45041324, -44302052, -9141838, 20718922,
+3200288, -34840236, 27388470, -6248104, -22297860, 27443230, -51920248, -11312944, 544387, -9582072,
+-7738458, 63009856, -26286810, 59029492, -2683281, 12168716, -4144107, -23760296, 38261716, 9781788,
+39771396, -27390618, -26458610, 8331700, -42825656, -13196287, -6693707, -30231738, 62512712, -5711233,
+-64409476, -1264331, -28599650, 8142185, 16119012, 25637196, 21243446, -25793962, -15779710, -39980776,
+-11444477, -18655190, 17207786, 10994579, -1973001, 11457899, -7770133, -28421410, -11364483, -33121714,
+33890512, -25658672, -17403744, 30039538, 7325604, 50947440, 24971476, 4268124, 27173184, -36393944,
+-13348221, -37563784, -36154496, -5783711, -5127654, -45771468, 47159276, -8439611, -36323076, -54466628,
+3711389, -10923712, 39942660, -2675228, 2217277, 5214091, -6982006, 7425999, 9101573, 18568754,
+-12364137, -12708808, -7919920, 472446, -2146410, -2704219, -11678553, 13111461, 8293045, 15663209,
+-3564286, -8572218, -7154879, -2839510, 3081102, 21028160, 22519050, -3685619, 1358820, 12140799,
+-3267933, -28072444, -13502303, 1743220, 3974992, -2202245, -17769890, 6277095, -2013266, -4233227,
+-20375324, 8057359, 7038915, 24445344, 4098473, 6066642, -1103270, 10104447, 1856500, -5737003,
+-10763725, -775242, 1302449, 7991861, 3744675, -4575214, 782221, -84434760, 43488692, 10273562,
+-18504330, -13590350, 26776974, 15047418, -16578037, -4284767, -40075804, -16505559, 16706886, -34283504,
+1088774, 6333466, -10759967, -22826678, -15916075, 31071404, 12182675, -6082211, -44712220, 15182173,
+27733140, 16270410, -34684008, -22826678, -110595, 37582576, 3081639, -8965207, 5643587, 1306207,
+18884972, -49845780, -43468292, 53557168, 8024073, 22453552, -51133196, 11160473, -2567854, 37359772,
+-33709588, -6316823, -51270100, 17907330, 36462660, 8688182, -22941030, 14676977, 53043384, -23835994,
+-25733296, -19894826, 7286412, 2287607, 46485504, -13911936, 3287798, -25169046, 7975755, -27608050,
+-1212791, 17812840, -34864932, 33095944, 9721658, -23953570, -37696928, -22649510, -2201171, 33381022,
+-60625072, -13094282, 54263692, 7233262, -24935506, -11534672, -17682380, 51445656, -6015639, -53846540,
+-6578280, 9127, -13604846, 21997748, -4088272, -7529615, 16347719, -1480153, -11375221, -14105209,
+-1801739, -12437688, 3461744, 9165460, 11780558, -10826002, -8304320, 11217381, -7674570, 10621991,
+-5957120, -10802916, 14484777, -8129300, 13009456, 18369038, 849330, -26625040, -2152852, -15873662,
+6263673, 9824201, 6074695, -18613314, -159988, -14060112, 12781286, -3962644, -8410620, -5381057,
+2484102, 4488241, -10306848, 4556424, 55711096, 28860032, 12746926, 13153874, 13305809, -8687108,
+-8934606, -18665928, 2246268, 6271189, 4806069, -928250, -32294932, 15577310, 6179921, -22185116,
+-19105626, -9525701, -11227581, 8484171, -8422968, -9334038, 2624762, -640487, -17211008, 22029424,
+-15842524, -4948876, -16457778, -14679661, 10521059, -6187438, -2276870, 5625871, 6822556, -1672890,
+-21863532, 5291400, 33774012, 7344394, -53298932, -3263102, -11668352, -16432545, 11075647, 12087649,
+27400818, 13341779, -34810172, 37702296, -9444633, -25994752, 78216184, -15711527, -6830072, -25767120,
+-62407484, 28594282, 31506806, 10505490, 11813844, -53179212, 15348603, -4099546, -13036836, -9315247,
+1996623, -5002563, 8195335, 10195179, 2061047, -7841537, -15383499, 16208133, 20143396, 28309204,
+-14120779, -2812667, 5855114, -4108136, 14658723, -36499704, 3384434, 6511708, -17286706, 2876554,
+-14431090, 5635534, 94489, 4525285, -2527588, 1044751, 1236414, -705985, -667331, -4838818,
+-3968550, 9786620, -5580773, -347355, 7037841, 1619740, 140660, 11949673, -10036802, 7320772,
+8381629, -528281, -1913408, -10110353, 7987566, -18905910, -5505611, 12326019, 3360275, -5169530,
+-12990129, 3852049, -3179350, 15328201, 1974074, -32019518, -75758392, -128835600, 10741713, 130523520,
+12851616, 277747488, 281244672, 101683352, 282243776, 163164736, -47176456, -4716411, -25176024, -213886688,
+-176745424, -124573376, -221391600, -212068848, -60050624, -133543952, -115755272, 26121454, 37507412, -28927678,
+41635412, 60364692, 316754, 4109747, 120961848, 80277768, 31115964, 89006216, 167162816, 78376712,
+92341800, 206156816, 82069312, 37010808, 178858000, 171901232, 8021389, 109941496, 195097280, 333934,
+49908056, 115344032, -4023311, -94321776, 47221016, -19685446, -180954496, -169230832, -154954896, -302198208,
+-446173024, -310969600, -434073568, -579060928, -408065920, -331177952, -447165152, -285944416, -137048656, -132619464,
+-24606942, 133470400, 269739520, 304795584, 408446016, 555062272, 545955328, 515991456, 581759744, 580354240,
+474490816, 381565984, 409119808, 271596000, 97252552, 129553928, 32440424, -238121584, -152527168, -161809664,
+-331832928, -280684160, -201229424, -236272064, -272879680, -170083920, -148028736, -206746304, -169966352, -88458072,
+-141257184, -186792960, -111631032, -79064440, -147512256, -83426520, 20434918, -46120968, -52147884, 59876676,
+-1134945, -74912816, -8647917, -47011100, -169132048, -117944632, -88434448, -157402496, -69536056, 39788040,
+76739792, 140245184, 233785808, 270999552, 285020480, 318847648, 340082496, 334289120, 308949344, 286983808,
+244514640, 193994544, 120013200, 89642944, 12015171, -75082472, -131315944, -211596928, -303880736, -296107936,
+-251233040, -228165312, -197125584, -135089072, -112981800, -101404712, -72184440, -47499652, -41632728, -17080548,
+-9271761, -6615860, 2203318, 19368156, 32132260, 40164924, 47959752, 54702852, 53946400, 52291764,
+45088568, 44095892, 31992674, 25121264, 12984760, 7540889, -5583458, -14230837, -19115288, -18086644,
+-23982024, -23631984, -23475754, -23972360, -27299886, -19643032, -20133196, -12510703, 391379, 16029892,
+23229868, 37631428, 44074956, 48703320, 51840792, 59017144, 55560232, 53575424, 51616380, 45845556,
+30826054, 26853210, 21355652, 13776108, 4422206, 4271345, -6287296, -12198781, -18655728, -24482388,
+-35243428, -37953552, -45371496, -50705312, -55515672, -54788212, -59144920, -57855356, -54980952, -47741784,
+-41799160, -28247464, -18182744, -5893769, 2178085, 14578730, 20051054, 26979910, 29865592, 33560876,
+31608812, 33571612, 29987462, 30001420, 25057376, 23674396, 18112950, 15127949, 8839580, 7357279,
+2134599, 1916629, -1234803, -295279, -3041374, -1414118, -3238405, -1148904, -2823404, -493921,
+-2150168, -537, -1699733, 513249, -1098975, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
10289668,
--462246, -504122, 3228205, -1289027, 3693135, -1934883, -4823785, 1726577, 4772246, 752693,
--782221, 6429566, 181462, 307627, -2214056, -1171452, 9918690, 1428614, -6790344, -4952098,
-6986301, -595390, 7246684, 555661, -1416266, -640487, 5465883, 1133335, 11511049, 5128191,
-3146601, -576063, 2533494, 5267241, -1314260, -3846143, -4918812, -891206, 4378183, 3836480,
-5851893, 1698660, -3316789, -3374234, -1451699, 2502892, -815507, 1398012, -696858, -5187247,
--4066260, 1648731, 3795677, 2399276, -1918777, -2112587, -170725, 5754183, 2879239, -578747,
--1300838, 2693481, 1762547, 1182727, -2933463, 1510755, 2714419, -303332, 4158065, 4980552,
--8637179, 3212636, 1739999, 5672041, 1677185, 495532, 2547453, -1091995, -4035659, -1444183,
--2438468, -759136, -516470, 2494839, -140660, -1909650, 13422, 337155, 1444720, -1222992,
-222265, -197569, 507343, 796180, 508954, 1013612, 84289, 645319, -1299765, 2907156,
-4461398, 9722732, -7909183, 1799054, -1756642, 134218, -10155987, 1039919, 6067178, -8987756,
--1894081, 6041945, 15949361, 2311229, -135291, 1157494, -10033044, -301721, 7349226, 6568079,
-152471, -187905, 580357, 3456375, 5726802, 6083821, 6527814, -2909304, 1389959, -380641,
-2500745, 726386, 1602560, -10136123, -2810519, 1600949, 802085, -5598490, -207769, 3847754,
--4494684, 3543885, 3228205, 6026913, 2787434, -2283312, 2972654, 6732898, -3790309, -6052683,
-2007897, 1421097, 1156957, 3197603, -2718178, -4893042, -7340636, 5918465, -1116155, -1370632,
--2407329, 2603287, -119185, 3841312, 7543573, 1542967, 486405, -397284, -1856500, -5896990,
-9156870, 2269890, -1125281, 4756140, -775242, -5436892, -4816269, -1056025, 1778117, -7933879,
-625455, -4701379, -918049, 2428804, -166967, 1278827, -1450088, -2593087, -580894, 1315334,
-1769527, 1335735, -305480, -795106, -76773, 1298691, -714038, -1321776, -1017907, 252866,
--529892, -4781909, -4100083, -5185636, -7303055, 4075387, -68719, -3529926, -1368484, -1817845,
-1615982, -2937758, -5007395, 1116155, -3247532, 8567923, 11451993, 9008694, -6229313, -269509,
--388695, 2388002, -3447248, 7060926, 4469987, -1042066, 3456912, 5347771, 458488, 1273458,
-1899449, 5194763, -476741, 1913408, 6275484, 606664, -48855, -2761664, 4521527, -6825777,
-2767570, -982474, -1374390, 4497368, -4353486, -583579, 176094, -5937793, 2476049, -1222455,
-2757369, -222265, -2531883, 1762547, 1900523, -343061, 5268851, -406411, 6074695, -122943,
--4003447, -1823214, 252866, -2779918, 5419175, 2784750, 4654671, 5223754, -2277407, -5236102,
--3380139, -39192, -945967, -1142461, 4303557, 5372467, -788663, -2995203, 1900523, 1441498,
--2051921, -2860448, 989453, -4093641, 1008780, -112206, -108448, -1121523, -3825205, 834297,
--1495186, 124017, 1738388, -35433, -1945620, 950262, -2675228, -83215, 190052, -652835,
-243203, 481573, -1455994, -9127, 195958, -1780264, 386010, -559956, -91805, -952946,
--9664, 451508, 1542967, -15125264, -3554086, -4716411, -8164196, 2778307, 2152316, -981400,
-3813394, -533113, 3220689, 4525285, -1978906, -5291400, -6649146, -2546379, -6190659, 482110,
-701153, -2706903, 3538516, -3040300, 1905892, -1390496, -3522947, -9411884, -3644280, 836445,
-1498407, 2471217, -3479461, 2496987, 3802657, 1251446, 8604967, 2135673, -198642, 6646999,
--4676146, 3839701, 654446, -2234994, -3158412, 4287988, 600222, 1356673, -10109816, -1866700,
--3324305, 10184441, 4389457, 3670587, 4158065, 4677757, 3725347, 5187247, -2716030, -1107565,
-3204583, 5096516, -657130, 5952288, -3172907, 1306744, -1261110, 5043366, 7573638, -11778948,
-3118683, -2909304, 406948, -5553393, -2828236, 936303, -1657321, -2381023, -4686346, -2119566,
-2253247, -106837, 5077725, -523449, 1977833, 4381404, 6983617, -251792, 1869385, -805306,
-3269007, 527744, 1608465, -2148558, -724239, 239981, 1513976, -954020, -1540820, 86436,
-123480, -1210107, 221728, 716723, 66035, 2037425, -853625, -936303, 268435, 1777580,
--676457, 51540, -602906, 1064078, 1666447, -214748, 1596117, 1715303, -372052, -719407,
--263067, 5914707, 3607236, 2151779, -1136556, 496606, 625992, 7631083, -6069326, 7654169,
--1032940, 4174708, 7817378, -4897874, 6051609, -3789772, 3095598, 1192390, 9190156, 4077535,
--5151277, -8440684, 1900523, -6328635, 5183489, -1298154, 6761353, -5057861, -848256, -4051228,
-2313377, 1504849, 1913408, -511101, -750009, -7375533, -3262028, 6054294, -4860293, -988379,
-3908957, 178241, -3813394, 1223529, 307627, -858993, -3311957, 6613176, 2078227, -9447317,
--4292283, -7630010, -1369021, -6749541, -11649025, -2661269, 5030481, 14289356, 3090766, 1163399,
-6703370, -197032, -5316633, -4633733, 3725347, 1446867, 2501819, 4107599, -10161893, -2510945,
--9350681, -2068564, 2570538, -3713536, -8647380, 846645, 3684545, -1866700, -3241090, -1542430,
-1455457, -1305670, -402116, 1858647, -1222455, -1301375, -1777580, -1292248, -3984119, 1383516,
--1069984, 1787243, -710280, 1034013, 2447058, 321586, -715649, -261456, -2146410, -1423782,
--3374234, -3056943, 417686, 333397, -44560, 1156420, 1904818, 1332514, -44560, 1210107,
-1004486, -942208, 718870, 761283, -1782411, -753230, 16357920, 4006668, 11818139, -5493263,
--867583, -3882651, -1009854, 12744242, -10887742, 3712462, 1132261, 16661252, 8731132, 11086384,
-1915555, -2647311, 5096516, -3530463, -13835163, 2700461, 686658, 1698123, 10733660, 1115618,
--6458557, -475668, 188979, 3519726, 3652333, -241055, -1514513, 4504347, -5273146, -1343251,
--2718178, -1245541, 1239635, 280247, 9442486, 1455457, 7393250, 8716099, 2292439, 7696582,
--662499, 2600603, 4531728, -4919348, -7562901, 1014686, 7419556, -11933030, 3476776, -9139690,
--8710194, -5206037, -2486249, -8033737, -7953206, -8239895, -4362613, -1995012, 5482526, 208843,
-6587943, 1085553, -5607617, 8505646, -8868034, -3254512, -3729642, -3530463, -4748087, -6051072,
-8652748, 6879464, -3926137, 3413962, 2654827, 6987375, -73014, 5065914, -2556043, 6349573,
-3073586, -3639448, 115427, -3282429, 3901441, -3754875, 325881, 3157875, 137439, 2431488,
--771484, 446140, 1547799, -486942, -1777043, 1624571, -547071, 335007, -3326989, -2616709,
--2673617, -1953673, -433792, -1064078, -2326799, -40265, 375273, -988379, 171262, -14496,
--1392106, 348429, -8904004, -8906688, -5283347, -5457293, -2950643, -2230699, -10675678, -8531953,
--7262253, -1078037, -650151, -1309428, 7362648, 775242, 3788161, 5702106, 6606197, 1075889,
-12940200, 16269336, -365072, 4734665, 3634616, -1939715, 7072201, 3882651, -14623827, -455267,
--5079873, 877247, 11254425, 4523138, -11700565, -3068217, 5160940, 5184026, 681289, 14971719,
--6222334, 6055904, 6063420, 6686727, 3860639, 7783555, -13182328, 4848481, -5165772, 7842611,
-256624, 3396246, -9906342, 7278896, 5215164, -1243393, 5048197, -821949, 1382980, -66035,
--5185100, 1369558, -3328600, 3253438, -4098473, 5084168, 1552631, 12687333, 9426916, -2954401,
-3343632, -10409390, 9050570, -2827162, 5535676, 9843528, 9607305, 477278, 9813463, 6828461,
-4620848, 5020817, 9013526, 918049, 1916092, -7373385, -1321776, -2103997, 1658394, -5314485,
-759136, -3868692, 1170916, -3854196, 1145146, -1407676, -2462090, -2269353, 1558536, 180389,
--1262184, -901406, -3183645, -1005022, 513249, -903554, -2308545, 347892, 2306398, -5385352,
--3381750, -2967823, 2133525, -3299072, 1990181, 32749, 1123671, -2731599, -4085051, -900869,
-747324, 8596377, -7664906, -1971927, 6791954, -3610457, 11656541, -3705483, -8295193, 15561740,
-21082920, 4718559, -8373039, 5857262, -4433480, 8698919, 5009543, -1868311, -8879308, -5760625,
--15072651, 3959423, 6370510, -13240310, -1619203, 7732015, 1970853, -621160, 274341, -1603633,
--7223062, 1767916, 8865349, 386010, 1883880, 3245385, 12574054, -8289824, -268972, 9188546,
--8421357, 12334072, 606127, 17325362, -14431090, -12952548, 7107097, 664646, -1758789, 3743601,
--1220845, 4842039, 2928631, 9647570, 9139690, -7551090, 1358820, -4925254, -3015604, 5785858,
--742493, -2935610, -1307281, 302258, 8583492, -16413754, 12506408, -3896072, -5622112, 9328132,
--7529078, 7485591, -10121627, -5640366, -1896228, -7467338, -2615635, -5262409, -8419747, -5622112,
-1813013, -1878511, -2039573, -86436, -3932580, -1213328, -602369, 5243618, -288837, 793495,
-2076080, -2155537, -877247, -1818382, 1243393, 2587181, 676994, -1007707, 6098317, 76773,
-4519380, -4887136, -3205656, -2883534, -2127083, 2379949, 1115081, 213675, 3538516, -2602213,
-2696703, 1124208, 2506650, 1481764, 335544, -3075197, -10413685, -8028905, -3461207, -7532836,
--11357504, -2441689, 4192962, 13958107, 2319282, -8495982, -15612743, -3311957, 4900558, -2782602,
-16855600, 5245766, -5903970, -11934104, -14817637, -28192702, -2255932, -3149822, 10827076, 7934952,
--5723044, 688805, -4418448, -2479270, 10164040, -310311, 581431, -1276679, 11525545, 1901597,
--3402151, -613643, -381178, 3063922, -10405095, -3335042, -4065724, 16488916, 3899294, -17431124,
-4529043, -9067213, -5034776, 2517388, -16137803, 4992363, 11710228, 10302553, 8113193, 1926830,
-3303904, -566399, 1763621, -10247792, 3752728, -16019691, -3020973, 9108015, 3390340, 9331890,
-9292162, 7602629, -5186710, -11834782, -10268730, -8018704, 2637110, 3150896, 5504538, 5385889,
-1222992, 3586298, 11579769, 16111496, -3830037, 5717675, -3975529, -4382478, 4982162, -7125888,
--2464774, 255014, -4452808, 4167729, -3863860, -3435437, -1833951, 975494, -986769, 2254858,
-78383, 3279208, -746251, -2043868, -892279, -2001455, -5068062, 1333051, 2778844, -279173,
-1838783, -525597, 2502355, 4671851, 4544613, 3477850, -3577171, -1862942, 3503620, -1087164,
--1352915, 296353, -548145, 3456912, -753230, -229781, -503048, 8207146, 14605573, 16855062,
-12236362, 20843476, -9737228, 14806900, -12678743, -9988483, 11016054, 14021994, 16616155, -17139604,
--69793, 4293357, -12651363, 5987185, -5545340, -9002788, 10274099, -13346074, 14492830, -13717589,
-13579076, -9849434, -3593277, -914828, -17889076, -2501282, 19790136, -5065377, -14089640, 3010235,
-9206262, -10307385, 5134097, 21356188, 11521250, 4318053, 9484898, -11308112, 7580081, -6794639,
--19430968, -5909338, -5058398, 1440425, 8858370, 10901701, -4798016, -8536248, 7802882, 53150,
-5979668, 3713536, -3139621, 1064078, -7710540, 1178432, 2493766, -103079, 2572149, 17577690,
--2146410, 1739999, 5058935, 1050120, 2194192, -8938364, -9750113, 6799470, -11612518, -15819975,
--16563005, 12911209, 8393977, 2489471, -860604, -1917166, 6203007, -973347, -4616553, 5919002,
-16297253, 10992432, -4255776, -2759517, 5078799, 2914672, -1095754, -2572149, 1884417, 2296734,
--635118, 670552, 8873939, 2117419, 1312113, 3463891, -2820183, 650151, 2861522, 5890011,
--512712, 428960, -5696737, 1872069, -2937758, -2178622, 6067715, 4833986, 372588, 3791383,
--3202435, -1564979, 1867237, 45634, -1668058, -3302830, -3515431, 2303176, 1096290, -1542967,
-2126009, -13518410, -21475374, 7644505, 27878096, 13653164, -5236639, -21563420, -7502771, 1376000,
-2998424, -4190814, 10574209, 7141994, -7849053, -4055523, -1066763, -14272176, 19808390, -9035001,
-7044283, -1660542, -4693326, -17391396, 5676336, 3604015, -2188823, 2093797, 7765301, -2849174,
-19364934, -4351339, -2981244, 16159814, -1829119, -11621108, -10405095, -20068234, 2733210, -4467303,
--6254546, -4388920, -14737107, -6179921, -13802951, 1451699, -12152073, 10939282, -6878927, -247497,
-3383897, 1337882, 6305549, -5848672, -14913200, 6455873, -1739462, 3678640, -3353833, -1529545,
-417149, 14313515, 21435644, 5802501, -6760279, 7388418, 7767449, 8496519, -3528316, -7203197,
-10921028, 5152350, 14602352, 3373160, 3885335, 386547, 4377109, 13138842, 17960480, 8818642,
-3017752, 6726993, 2825552, -3786551, -12334072, -7840463, 1384053, 5939403, 924492, -339302,
--4629438, -1739999, 2511482, 1686312, -9751723, -1876364, 2182917, -437550, -4863514, -4083440,
--5434744, 998580, -970126, 3666828, 6884296, 4028679, 213675, -2326262, 4207994, 5046587,
-328028, 1664837, -6808060, -282931, -2312303, -7001334, 1458678, 1234803, -6232535, -676994,
--1464584, 2310693, -2423972, 5819144, 27917, -1424319, 7854959, 41753524, 924492, -11023034,
-34548716, 17670032, 15231565, 30259656, 29904246, 8709120, 9466645, 7661148, 32508070, 1792612,
--11556683, 14183593, 2944737, -12614856, -14381161, 12640089, 12089259, 23517094, -2351495, 1800665,
-258235, 3306051, -13966697, 15752329, 10835129, 4902169, -10861972, 16664473, -5080410, -787590,
--22064858, -4716948, -1723356, -1312113, -11666742, 7685307, -10856604, -6095096, -6386080, 3220689,
--7541963, -10056129, -14111652, 14921790, -10757282, 15863999, 6914361, 13041668, 3935801, -13117367,
--737661, -21135534, -9901510, -11489574, 4352950, -14659260, -8122857, -2610803, 3221, 15342160,
-1472100, -2330557, -24581172, 9752260, 8143795, -519691, -378494, -12320114, 9326521, 1086627,
--10792179, 29006062, 6332393, -3721052, -534723, -11620034, 1745367, 14553497, -4031901, -1157494,
--16294032, -9491878, 5640366, -2215666, -7852811, 9431748, 5537287, -9549860, 8320963, -3286187,
-2488397, -3177739, 8134668, 1832340, -1537061, 261456, 1797981, -11518565, -103616, -4239670,
-3190624, 3983045, 5410048, -4717485, 3879966, 3123515, 2232846, 4262218, 4749697, -341987,
-3599720, -5538361, 9506910, -4400194, 8000987, -5699422, 3394098, -12678743, -23252416, 7141457,
-7002408, -7194070, 15134391, -16734803, 18177912, -13114146, -7638600, 5851356, 4205847, 46917148,
-18330920, 7028177, -29279328, -779000, -6950868, -15518254, -4510790, -5672041, -5138929, -1737314,
--24349780, -468688, -9214852, 301721, 11850352, -12915504, 15378130, -5042292, -17027398, -15187541,
-12182138, 9347996, -3811247, -8385387, 15538118, -8386461, -7925289, 12217034, -354335, 3759707,
--12592307, -424128, -7406134, 15669651, -2368675, 22478248, -8414378, 3378529, 6766184, -642098,
-852014, 6857989, -14500883, -2323577, 18462454, 1498944, 5061619, -171262, -14987825, 6403260,
--10465762, 5325223, 16137803, 20950314, 22836342, 24054502, -5201206, 8442832, -205085, 12908524,
-29139742, -32017370, 24879672, -14802068, 6677064, 20012400, -12641162, 1289027, 6269579, 5457830,
--1509144, 13929116, -5412733, -4404489, 5874979, -3340411, 13402982, -1990181, 5070209, -10815801,
--1774895, -323196, -8730058, -3665218, -11008538, 114890, 3160022, 1068373, 12184822, -4028679,
-804770, 1316408, 5168457, 1275605, 5213017, -7233799, 5423470, 1671816, -326954, 3877819,
-5316096, -6082748, 5522254, -11696270, -10357314, 7212861, -3487514, -8297877, -1215476, 3395172,
--5355288, 9415642, -11256036, -24722368, -4832375, 5019743, 322123, 5819144, -18398030, -2472828,
--3786014, -26129508, -20268488, 10424959, 10835129, 5050345, 7463043, -13359496, -6593312, -9458592,
-28570122, 6903623, 763430, 21461952, 12298639, 10814728, 9666361, 8469676, -15126875, 10907606,
-4371740, -4587025, 8497593, -7557532, -7555921, 14997489, -6529424, 9476308, 19683298, 757525,
-3738232, -278099, 1238024, -4218195, -11613592, -14539001, -23801098, 9817758, -20168092, 7640747,
-7787313, 10214506, 23085, 706522, -2864206, -15391015, -7396471, 7963406, -5416491, 8216810,
-19689204, -5964636, 15050639, 7023882, 1629403, -752156, -5432060, -14230300, -652298, -19266150,
--6779606, 20881058, -11143293, 3414499, -34302832, 16380468, -6392522, 5362804, -26480084, -23386096,
-2174864, 6436546, 12046310, -27154394, -2936684, 478352, 18549964, 15372225, 17164836, -5348845,
-317828, 2756832, 8953933, 2289755, 4903242, 14374719, 8031052, -5272609, 5114769, 1541893,
-970663, -151934, -3069828, -11585137, 4079145, -5524939, 1709397, 4821101, -197032, 1216013,
--206158, 4839355, -2946348, 19360102, 5162014, -576063, 10650982, 6664716, 841277, 3398393,
--377420, -8373039, 11195369, -3492345, 1460289, 13643500, 7417409, -3997541, -2684, -5157182,
-8799851, 6343130, 7504919, 6675453, 20433844, -48400524, -11907797, -28752122, 9699647, -25822954,
--8657580, -29264834, 7824894, -15265924, -11705933, -2510409, -24850680, -9047885, -26626112, -13458280,
--30828738, 6635188, -28522878, -11290932, -14820858, -8318278, -7836168, -6676527, -27227946, -15583215,
--20715164, -10644540, -5985037, 11740830, -1705102, 8759586, -16946868, -2775086, 975494, -19541028,
-3773666, -1385664, 1654099, 5096516, -19764366, -1134408, 7289097, -2462090, 8216810, 16393353,
-29733522, -24717536, 1518808, 33031520, 160524, 16204912, -11584064, 20462298, 3743601, -4909148,
--27478664, -16199543, 22818624, 14068165, 22282290, 797253, -15542950, 5659693, 8051990, 15916612,
--29880624, 196495, 5661304, -16512539, -5496485, -7148436, -10002979, -23964844, 37035504, -6822019,
--11898133, -7617662, 7679402, 8875550, -20929912, -19472844, -771484, 6180995, 971736, 48318,
--4081830, -7085623, -89657, 18644990, 11563126, -136365, -15367393, -10649908, 1727114, -5942624,
-4072166, 4912906, 2512556, -1633161, -7926899, 3229279, 3930432, -2205466, 5950141, -3473018,
--13646185, -6495065, -779000, 3951907, -1013612, -4401805, -19968376, -7995619, -4572530, 1497870,
-2506114, -8642548, -15467788, 6047314, 9290551, -8218420, 372052, -7226820, 7824357, -2532420,
--13719199, 20590074, -34749508, -365609, -6883759, 15025943, -7646116, -21415780, 18715856, -37593848,
--32413582, -26754426, 15353434, -7954280, 871878, -14585172, -13802414, -16129750, 9084393, 7867307,
-26230976, 12353400, 5324149, 24424942, -6468758, 8869644, -8777839, 7652558, 4440996, 14565308,
-23536958, 12304544, -4861366, -14352170, -8548059, -2908767, 13234942, -4325569, 3716221, 530965,
--6033892, 12520903, -756451, 10286984, 7646116, -19981262, 16547972, 30373472, 4763656, 25415468,
-24601572, 11182484, 8172249, 102005, 13019120, -8036958, -29461328, -9558450, 21953188, 264141,
--10806138, 11337103, 31161062, -7051800, 2426657, -22462678, 22228066, 19946902, -1400159, 6461242,
--10116259, 51125144, -31996432, -27755690, -26209502, 2295660, 981937, -7656316, 22814866, -31894428,
--496069, -20355998, 7864085, 9140764, -1386201, 22272626, 5167920, -1787243, -11958263, -52076,
-5657546, 16263967, -11023034, -14159433, 6007049, -8392366, -2177549, 2087891, 3938485, 1436130,
-154082, -949725, -13351443, 1398012, 3282966, 9342091, -7873749, -4373351, 5264556, 2581275,
-3683471, 455803, -8699456, -858457, -9883793, -7444789, 10085120, 5217312, 5710696, 4057134,
--269509, 2084133, -2641405, 6208375, 906238, -2583423, -514859, -8602283, -3212099, -5665599,
-3605625, 56146496, -12625056, 31411244, 53327388, -17985712, 25399362, 11656004, -34111704, 31150860,
-4365298, -14500346, 22434762, 9965935, 21057688, 82678, -18367964, 17329120, 5544266, 350040,
-5047661, -4907000, -19415936, -11125039, -9469329, -16264504, -12593381, -2874944, 12362526, -11120744,
--7166153, -16020228, 3109020, 1644436, 2267206, 22584012, -13710072, 5632313, -12745315, -6760816,
-12476880, -9992241, -23264764, -29204168, 33566244, 15311558, -8761733, 23624468, -21853868, -18596134,
--11800960, -1647120, 3084860, 398358, -20370494, -14485851, -16006806, -34186864, -21858162, -18311594,
-6294812, 11781095, -1302449, 20218022, 3444564, -20365124, -18120468, 27194660, -23479512, 3471944,
-23272818, -2894271, -41038412, 28625420, -15358266, 4714801, 1478006, 23708756, -6008123, -8886287,
--1547799, -13346611, 6708739, -23123568, 7558606, -29774860, -19503446, 11691975, -13033078, -3546032,
--1990181, -17641578, 5471789, -10264435, 8157217, -2611877, -670552, 1002338, 10723996, -7900056,
--6704981, 2035815, -11565810, -4872641, 1366337, -7247758, -8202851, -5325760, -3684545, -8471823,
--5118528, 12148315, -10158671, 4735739, 6947647, -1694365, 7453379, -10319196, 812286, -7234336,
-14847165, 2913062, 5126581, -10562398, 12998719, 9233106, 9871445, 4376572, 971736, 3330747,
-7089381, -7229504, 462783, -6010270, -27130772, 16314970, -7689065, 27520540, 18867254, -43670692,
--5509370, 4770098, -26657788, -4217121, -4362076, 32467268, 23342074, 21734682, 26920318, -872952,
--18862960, -14475114, -15014132, 844498, -41787348, 5149129, 35786204, -32488744, -58886148, 6129992,
--22035330, 43576200, -289910, 1557999, 29127394, -13215614, 5984500, -1218160, -7913477, 25426744,
--7298760, 12927315, 42526620, -31168040, -17861158, -28397250, 14199699, 2493229, 28470802, -16203301,
-11216844, 1640678, 25930866, 15396384, -12681965, -8321499, 9810242, -4573604, -1155883, -18204218,
--18068928, 9596031, -4034048, -5216775, -10275172, 23589572, -8908299, -9327595, 39385388, 42210940,
-27274652, -35679904, -3176128, -11144903, 13903346, 52536040, -6633040, -39860516, -2617246, -16363289,
-23542326, 10631118, -26780194, 14205067, 10404021, 13858786, -25838524, -9215389, 1923072, 22985592,
-1417339, -3588445, 3760781, -7751879, 1811403, 22969486, 11118597, -9435506, -11438572, -2512019,
-7219303, 9240085, 12096239, -11334419, -4328254, -20850456, -4380867, 13345537, -13136694, -1977833,
--8109435, -7439420, -12338367, -2498597, 8424041, -1793686, -881005, 2195802, 5374615, -5466957,
--15742666, -16254841, 9879499, 7677791, 13798656, -6793565, 10131291, 29702920, 1570347, -17627620,
--2833605, 1699733, -1573032, -10991895, -4508642, 3362960, 8637716, -1745904, -25593710, 3745212,
--20978768, 19320910, 11311333, -20750598, 35316980, 53223772, 1644973, -2583960, -18114562, -18559090,
-3244311, 2984466, -8855686, 48147120, -4208531, 35892504, 28975996, -36424008, -1000191, -12262132,
--38730404, 9731859, 9159018, 21166136, 36531380, -1169842, -10241350, 11902965, 13345537, 28579786,
-12150462, 2569464, 23732916, 24759412, 8697846, -5761162, 21783000, 9586904, 26146688, 5515812,
-7659001, 16210280, 27688580, -4635344, -21644488, -25259240, -8056285, -8807367, 43465068, 23686744,
-66998804, -3149822, -33499672, 29620778, -9991168, -11569031, -9909563, -22759568, 3549254, 12744242,
--296890, -12756053, 47674136, -9496710, 56225952, -15357192, 30354682, 2626373, -9249749, -30579630,
--43438764, 40928892, -3741990, -6990596, -12320651, 38045356, 209917, -39908836, 73418168, 23024246,
-8203925, -8383240, -30487288, 15413564, 1064078, 15518791, -14041859, 11082089, 5806259, -6869800,
--10308995, 1935957, -12509092, -5940477, -14241038, 1744831, -2298881, -136902, 5051419, 12015171,
--11915313, 4743255, -5690295, -295279, 16317118, 10782515, -5494874, -20033874, -389768, -1115618,
-2930778, 18445810, -11654931, -6956774, 4871567, 11612518, -16460462, 1205812, 11288248, -162135,
--1020592, -17368848, 9325448, -455267, 8520678, -18144626, 2344515, 7844221, 6395743, 9140227,
--17220672, 14839112, -18262738, 11761768, 49823232, -29701846, -18738942, 3798362, 9163313, -5839545,
-35314296, 27115202, 27821724, 9104794, 13835700, 23009214, 14544370, -8632884, -13648332, -31413928,
--4858682, 16925930, 6054830, 3489124, -11434814, -29721174, -8429947, -4351339, 30272540, 205622,
--3413425, 22612466, -3444564, 6106370, 5048734, -51025284, 13212930, 13524852, -8701067, -21929566,
-4309463, -28862180, -14412837, -44098576, 13450227, -36851356, -72482408, 8237748, -820876, 50969452,
--1585380, 17184164, 42418708, -7118909, -10780905, 18575734, -202937, -37058588, -12712029, 4650913,
-6308233, 27004070, 11489574, 24026584, 21150030, -15280957, -11125039, 10128607, 31042950, -13049184,
--6311992, -28541668, -19413252, 7337415, -38112468, 10910828, -42829412, 7982734, -11178189, 30330522,
--13170517, 21446382, -45916960, -9570261, 6446746, -27599996, 7078643, 4678293, 4886062, -20859582,
-11006391, -20427938, 5921686, -1724429, -8484171, -3874597, -1890859, 6306086, -6922414, -3397319,
--5527623, 13016972, -8446590, 7541426, -19325206, 10089415, -1000727, -1717987, 2914672, 18697066,
-6675990, 7908646, -22431540, 2794950, -9130564, -27991376, 11301670, -9058086, -6976638, -10421201,
-10487236, -5143224, 5110474, 5720897, -2592013, 1108638, -6732361, 1850057, 5794985, -1439888,
-964220, -845035, -10672994, 39035884, 41475964, 97137664, 11383811, -54258320, -40846748, -29954712,
--34712464, 68021544, 90636160, 30826590, -8702141, -28438052, 960462, -34431144, 37940132, 35999880,
-10612864, 5289252, -22541598, -3168612, 41758892, 9838159, 16755204, 14244259, 43823700, 36998996,
--14261976, -32519344, -43154756, -28964722, -4356708, 12117713, 39400420, 23753316, -8260833, 21475374,
--29958470, -10083509, -67331128, -10523744, 66218196, 51307680, -10334228, 134342816, 42083700, 4050154,
--73618424, -12426951, -6335614, -17147120, 18778134, 10555956, 15909096, 28294170, -60071560, -64566780,
--32520418, -43515536, -6243809, 14910516, 54322208, -32366874, 19867444, 84825064, 42330124, 14881525,
-23735600, 17421998, -51163796, -84526568, 43301860, -20802138, 18643916, 45486924, 50162532, 4575214,
--30338038, -39827232, -32590748, 35201552, 20269562, 6260989, 34992708, -34722664, -6054830, -5431523,
--15431817, -17894444, -1533303, -360240, 11359115, 3684008, -4997195, 258235, -430570, 743566,
-3006477, 6647536, 10118943, -9945534, -13794361, -47216188, -25915832, -23255638, 27986006, 16722455,
-10014790, -38626252, -37971804, -61038464, -16681653, 24223078, 30775588, 40193376, 15720654, 11870753,
-4691178, 4038343, -1125818, 9148817, -2125472, 28835874, 20327544, 4234838, 251256, 362388,
--4901632, 95026, -3437585, -20665772, -88855360, -21197812, 49562312, 94849520, 83600464, 200366672,
-104897600, 71143448, 62631896, 28474022, -11193222, -101255464, -127066608, -189608304, -145167216, -148958592,
--56646860, 721555, 57047368, 106081400, 87547536, 90435904, 62362388, 85089744, 66643396, 94214400,
-44893684, 35119412, 16821240, -24260660, -37267432, -57130580, -34507916, -124069256, -52380348, -117431920,
--84691384, -134404016, -79864920, -125110784, -44407816, -62033824, -20174536, 9552544, 63513440, 166483664,
-158586832, 222144304, 150401168, 102548784, 133221296, 181897776, 160131952, 134443216, 93853088, 11283953,
--90948616, -90345176, -111925240, -213090512, -235185424, -256234528, -255807712, -280960640, -242934624, -204712096,
--180480976, -117586008, 13536663, 133675488, 232635824, 307434304, 383318304, 426441920, 297354016, 283510240,
-184050080, 111439368, 105385616, -6365142, -34787624, -163440688, -313117088, -337312768, -273761760, -211687120,
--124660352, -100955352, -102715752, -56740812, -88209504, -35779760, -9798431, 67680096, 128664872, 105603584,
-137536656, 147721104, 157682752, 139170368, 185894240, 138049920, 113196544, 58380416, 12022150, -31498216,
--144003808, -127659312, -170960640, -226791984, -205370304, -235537088, -241945712, -70679056, 7909719, 122815664,
-150490288, 160145376, 186028992, 194166352, 164831712, 143226960, 109942032, 83212304, 30141544, -21665426,
--64131916, -115826144, -169924480, -159350272, -142110272, -106482976, -50061600, -22230750, -10474351, -6448357,
-15658914, 32527934, 39698384, 42518564, 35276712, 28041304, 30631170, 24751360, 18669686, 33991980,
-38386808, 29316374, 14464376, 7485591, 12199318, 15668041, 6249178, 3095061, 6237903, 836445,
--11827266, -35400196, -42541116, -28210956, -21598854, -24828670, -23589572, -14520748, -20495584, -23381266,
--20064476, -8260833, 1870995, 10173167, 14108431, 18976776, 21678310, 20010790, 17019882, 19320374,
-19576998, 17012902, 11996381, 8338142, 2926483, -1067299, -2303176, -3824132, -7774428, -4822175,
--2280628, -4078072, -5760625, -3799436, -747861, 3356517, 2638721, -446677, -3553012, -2975339,
--5353677, -9904195, -12313671, -11530913, -10953240, -9507984, -10278394, -8945343, -3889093, 282394,
-1404991, 7608535, 16209207, 19364396, 16056198, 14565308, 14669461, 12628278, 7373385, 3803731,
-2605435, -46171, -4412005, -6541235, -7711614, -7814156, -7621420, -7081328, -5683853, -4032438,
--3651259, -3367254, -2847027, -1453846, -804770, -248571, -53150, 542240, 504122, 650688,
-344134, 396211, 47245, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-462246, -504122, 3228205, -1289027, 3693135, -1934883, -4823785, 1726577, 4772246, 752693,
+-782221, 6429566, 181462, 307627, -2214056, -1171452, 9918690, 1428614, -6790344, -4952098,
+6986301, -595390, 7246684, 555661, -1416266, -640487, 5465883, 1133335, 11511049, 5128191,
+3146601, -576063, 2533494, 5267241, -1314260, -3846143, -4918812, -891206, 4378183, 3836480,
+5851893, 1698660, -3316789, -3374234, -1451699, 2502892, -815507, 1398012, -696858, -5187247,
+-4066260, 1648731, 3795677, 2399276, -1918777, -2112587, -170725, 5754183, 2879239, -578747,
+-1300838, 2693481, 1762547, 1182727, -2933463, 1510755, 2714419, -303332, 4158065, 4980552,
+-8637179, 3212636, 1739999, 5672041, 1677185, 495532, 2547453, -1091995, -4035659, -1444183,
+-2438468, -759136, -516470, 2494839, -140660, -1909650, 13422, 337155, 1444720, -1222992,
+222265, -197569, 507343, 796180, 508954, 1013612, 84289, 645319, -1299765, 2907156,
+4461398, 9722732, -7909183, 1799054, -1756642, 134218, -10155987, 1039919, 6067178, -8987756,
+-1894081, 6041945, 15949361, 2311229, -135291, 1157494, -10033044, -301721, 7349226, 6568079,
+152471, -187905, 580357, 3456375, 5726802, 6083821, 6527814, -2909304, 1389959, -380641,
+2500745, 726386, 1602560, -10136123, -2810519, 1600949, 802085, -5598490, -207769, 3847754,
+-4494684, 3543885, 3228205, 6026913, 2787434, -2283312, 2972654, 6732898, -3790309, -6052683,
+2007897, 1421097, 1156957, 3197603, -2718178, -4893042, -7340636, 5918465, -1116155, -1370632,
+-2407329, 2603287, -119185, 3841312, 7543573, 1542967, 486405, -397284, -1856500, -5896990,
+9156870, 2269890, -1125281, 4756140, -775242, -5436892, -4816269, -1056025, 1778117, -7933879,
+625455, -4701379, -918049, 2428804, -166967, 1278827, -1450088, -2593087, -580894, 1315334,
+1769527, 1335735, -305480, -795106, -76773, 1298691, -714038, -1321776, -1017907, 252866,
+-529892, -4781909, -4100083, -5185636, -7303055, 4075387, -68719, -3529926, -1368484, -1817845,
+1615982, -2937758, -5007395, 1116155, -3247532, 8567923, 11451993, 9008694, -6229313, -269509,
+-388695, 2388002, -3447248, 7060926, 4469987, -1042066, 3456912, 5347771, 458488, 1273458,
+1899449, 5194763, -476741, 1913408, 6275484, 606664, -48855, -2761664, 4521527, -6825777,
+2767570, -982474, -1374390, 4497368, -4353486, -583579, 176094, -5937793, 2476049, -1222455,
+2757369, -222265, -2531883, 1762547, 1900523, -343061, 5268851, -406411, 6074695, -122943,
+-4003447, -1823214, 252866, -2779918, 5419175, 2784750, 4654671, 5223754, -2277407, -5236102,
+-3380139, -39192, -945967, -1142461, 4303557, 5372467, -788663, -2995203, 1900523, 1441498,
+-2051921, -2860448, 989453, -4093641, 1008780, -112206, -108448, -1121523, -3825205, 834297,
+-1495186, 124017, 1738388, -35433, -1945620, 950262, -2675228, -83215, 190052, -652835,
+243203, 481573, -1455994, -9127, 195958, -1780264, 386010, -559956, -91805, -952946,
+-9664, 451508, 1542967, -15125264, -3554086, -4716411, -8164196, 2778307, 2152316, -981400,
+3813394, -533113, 3220689, 4525285, -1978906, -5291400, -6649146, -2546379, -6190659, 482110,
+701153, -2706903, 3538516, -3040300, 1905892, -1390496, -3522947, -9411884, -3644280, 836445,
+1498407, 2471217, -3479461, 2496987, 3802657, 1251446, 8604967, 2135673, -198642, 6646999,
+-4676146, 3839701, 654446, -2234994, -3158412, 4287988, 600222, 1356673, -10109816, -1866700,
+-3324305, 10184441, 4389457, 3670587, 4158065, 4677757, 3725347, 5187247, -2716030, -1107565,
+3204583, 5096516, -657130, 5952288, -3172907, 1306744, -1261110, 5043366, 7573638, -11778948,
+3118683, -2909304, 406948, -5553393, -2828236, 936303, -1657321, -2381023, -4686346, -2119566,
+2253247, -106837, 5077725, -523449, 1977833, 4381404, 6983617, -251792, 1869385, -805306,
+3269007, 527744, 1608465, -2148558, -724239, 239981, 1513976, -954020, -1540820, 86436,
+123480, -1210107, 221728, 716723, 66035, 2037425, -853625, -936303, 268435, 1777580,
+-676457, 51540, -602906, 1064078, 1666447, -214748, 1596117, 1715303, -372052, -719407,
+-263067, 5914707, 3607236, 2151779, -1136556, 496606, 625992, 7631083, -6069326, 7654169,
+-1032940, 4174708, 7817378, -4897874, 6051609, -3789772, 3095598, 1192390, 9190156, 4077535,
+-5151277, -8440684, 1900523, -6328635, 5183489, -1298154, 6761353, -5057861, -848256, -4051228,
+2313377, 1504849, 1913408, -511101, -750009, -7375533, -3262028, 6054294, -4860293, -988379,
+3908957, 178241, -3813394, 1223529, 307627, -858993, -3311957, 6613176, 2078227, -9447317,
+-4292283, -7630010, -1369021, -6749541, -11649025, -2661269, 5030481, 14289356, 3090766, 1163399,
+6703370, -197032, -5316633, -4633733, 3725347, 1446867, 2501819, 4107599, -10161893, -2510945,
+-9350681, -2068564, 2570538, -3713536, -8647380, 846645, 3684545, -1866700, -3241090, -1542430,
+1455457, -1305670, -402116, 1858647, -1222455, -1301375, -1777580, -1292248, -3984119, 1383516,
+-1069984, 1787243, -710280, 1034013, 2447058, 321586, -715649, -261456, -2146410, -1423782,
+-3374234, -3056943, 417686, 333397, -44560, 1156420, 1904818, 1332514, -44560, 1210107,
+1004486, -942208, 718870, 761283, -1782411, -753230, 16357920, 4006668, 11818139, -5493263,
+-867583, -3882651, -1009854, 12744242, -10887742, 3712462, 1132261, 16661252, 8731132, 11086384,
+1915555, -2647311, 5096516, -3530463, -13835163, 2700461, 686658, 1698123, 10733660, 1115618,
+-6458557, -475668, 188979, 3519726, 3652333, -241055, -1514513, 4504347, -5273146, -1343251,
+-2718178, -1245541, 1239635, 280247, 9442486, 1455457, 7393250, 8716099, 2292439, 7696582,
+-662499, 2600603, 4531728, -4919348, -7562901, 1014686, 7419556, -11933030, 3476776, -9139690,
+-8710194, -5206037, -2486249, -8033737, -7953206, -8239895, -4362613, -1995012, 5482526, 208843,
+6587943, 1085553, -5607617, 8505646, -8868034, -3254512, -3729642, -3530463, -4748087, -6051072,
+8652748, 6879464, -3926137, 3413962, 2654827, 6987375, -73014, 5065914, -2556043, 6349573,
+3073586, -3639448, 115427, -3282429, 3901441, -3754875, 325881, 3157875, 137439, 2431488,
+-771484, 446140, 1547799, -486942, -1777043, 1624571, -547071, 335007, -3326989, -2616709,
+-2673617, -1953673, -433792, -1064078, -2326799, -40265, 375273, -988379, 171262, -14496,
+-1392106, 348429, -8904004, -8906688, -5283347, -5457293, -2950643, -2230699, -10675678, -8531953,
+-7262253, -1078037, -650151, -1309428, 7362648, 775242, 3788161, 5702106, 6606197, 1075889,
+12940200, 16269336, -365072, 4734665, 3634616, -1939715, 7072201, 3882651, -14623827, -455267,
+-5079873, 877247, 11254425, 4523138, -11700565, -3068217, 5160940, 5184026, 681289, 14971719,
+-6222334, 6055904, 6063420, 6686727, 3860639, 7783555, -13182328, 4848481, -5165772, 7842611,
+256624, 3396246, -9906342, 7278896, 5215164, -1243393, 5048197, -821949, 1382980, -66035,
+-5185100, 1369558, -3328600, 3253438, -4098473, 5084168, 1552631, 12687333, 9426916, -2954401,
+3343632, -10409390, 9050570, -2827162, 5535676, 9843528, 9607305, 477278, 9813463, 6828461,
+4620848, 5020817, 9013526, 918049, 1916092, -7373385, -1321776, -2103997, 1658394, -5314485,
+759136, -3868692, 1170916, -3854196, 1145146, -1407676, -2462090, -2269353, 1558536, 180389,
+-1262184, -901406, -3183645, -1005022, 513249, -903554, -2308545, 347892, 2306398, -5385352,
+-3381750, -2967823, 2133525, -3299072, 1990181, 32749, 1123671, -2731599, -4085051, -900869,
+747324, 8596377, -7664906, -1971927, 6791954, -3610457, 11656541, -3705483, -8295193, 15561740,
+21082920, 4718559, -8373039, 5857262, -4433480, 8698919, 5009543, -1868311, -8879308, -5760625,
+-15072651, 3959423, 6370510, -13240310, -1619203, 7732015, 1970853, -621160, 274341, -1603633,
+-7223062, 1767916, 8865349, 386010, 1883880, 3245385, 12574054, -8289824, -268972, 9188546,
+-8421357, 12334072, 606127, 17325362, -14431090, -12952548, 7107097, 664646, -1758789, 3743601,
+-1220845, 4842039, 2928631, 9647570, 9139690, -7551090, 1358820, -4925254, -3015604, 5785858,
+-742493, -2935610, -1307281, 302258, 8583492, -16413754, 12506408, -3896072, -5622112, 9328132,
+-7529078, 7485591, -10121627, -5640366, -1896228, -7467338, -2615635, -5262409, -8419747, -5622112,
+1813013, -1878511, -2039573, -86436, -3932580, -1213328, -602369, 5243618, -288837, 793495,
+2076080, -2155537, -877247, -1818382, 1243393, 2587181, 676994, -1007707, 6098317, 76773,
+4519380, -4887136, -3205656, -2883534, -2127083, 2379949, 1115081, 213675, 3538516, -2602213,
+2696703, 1124208, 2506650, 1481764, 335544, -3075197, -10413685, -8028905, -3461207, -7532836,
+-11357504, -2441689, 4192962, 13958107, 2319282, -8495982, -15612743, -3311957, 4900558, -2782602,
+16855600, 5245766, -5903970, -11934104, -14817637, -28192702, -2255932, -3149822, 10827076, 7934952,
+-5723044, 688805, -4418448, -2479270, 10164040, -310311, 581431, -1276679, 11525545, 1901597,
+-3402151, -613643, -381178, 3063922, -10405095, -3335042, -4065724, 16488916, 3899294, -17431124,
+4529043, -9067213, -5034776, 2517388, -16137803, 4992363, 11710228, 10302553, 8113193, 1926830,
+3303904, -566399, 1763621, -10247792, 3752728, -16019691, -3020973, 9108015, 3390340, 9331890,
+9292162, 7602629, -5186710, -11834782, -10268730, -8018704, 2637110, 3150896, 5504538, 5385889,
+1222992, 3586298, 11579769, 16111496, -3830037, 5717675, -3975529, -4382478, 4982162, -7125888,
+-2464774, 255014, -4452808, 4167729, -3863860, -3435437, -1833951, 975494, -986769, 2254858,
+78383, 3279208, -746251, -2043868, -892279, -2001455, -5068062, 1333051, 2778844, -279173,
+1838783, -525597, 2502355, 4671851, 4544613, 3477850, -3577171, -1862942, 3503620, -1087164,
+-1352915, 296353, -548145, 3456912, -753230, -229781, -503048, 8207146, 14605573, 16855062,
+12236362, 20843476, -9737228, 14806900, -12678743, -9988483, 11016054, 14021994, 16616155, -17139604,
+-69793, 4293357, -12651363, 5987185, -5545340, -9002788, 10274099, -13346074, 14492830, -13717589,
+13579076, -9849434, -3593277, -914828, -17889076, -2501282, 19790136, -5065377, -14089640, 3010235,
+9206262, -10307385, 5134097, 21356188, 11521250, 4318053, 9484898, -11308112, 7580081, -6794639,
+-19430968, -5909338, -5058398, 1440425, 8858370, 10901701, -4798016, -8536248, 7802882, 53150,
+5979668, 3713536, -3139621, 1064078, -7710540, 1178432, 2493766, -103079, 2572149, 17577690,
+-2146410, 1739999, 5058935, 1050120, 2194192, -8938364, -9750113, 6799470, -11612518, -15819975,
+-16563005, 12911209, 8393977, 2489471, -860604, -1917166, 6203007, -973347, -4616553, 5919002,
+16297253, 10992432, -4255776, -2759517, 5078799, 2914672, -1095754, -2572149, 1884417, 2296734,
+-635118, 670552, 8873939, 2117419, 1312113, 3463891, -2820183, 650151, 2861522, 5890011,
+-512712, 428960, -5696737, 1872069, -2937758, -2178622, 6067715, 4833986, 372588, 3791383,
+-3202435, -1564979, 1867237, 45634, -1668058, -3302830, -3515431, 2303176, 1096290, -1542967,
+2126009, -13518410, -21475374, 7644505, 27878096, 13653164, -5236639, -21563420, -7502771, 1376000,
+2998424, -4190814, 10574209, 7141994, -7849053, -4055523, -1066763, -14272176, 19808390, -9035001,
+7044283, -1660542, -4693326, -17391396, 5676336, 3604015, -2188823, 2093797, 7765301, -2849174,
+19364934, -4351339, -2981244, 16159814, -1829119, -11621108, -10405095, -20068234, 2733210, -4467303,
+-6254546, -4388920, -14737107, -6179921, -13802951, 1451699, -12152073, 10939282, -6878927, -247497,
+3383897, 1337882, 6305549, -5848672, -14913200, 6455873, -1739462, 3678640, -3353833, -1529545,
+417149, 14313515, 21435644, 5802501, -6760279, 7388418, 7767449, 8496519, -3528316, -7203197,
+10921028, 5152350, 14602352, 3373160, 3885335, 386547, 4377109, 13138842, 17960480, 8818642,
+3017752, 6726993, 2825552, -3786551, -12334072, -7840463, 1384053, 5939403, 924492, -339302,
+-4629438, -1739999, 2511482, 1686312, -9751723, -1876364, 2182917, -437550, -4863514, -4083440,
+-5434744, 998580, -970126, 3666828, 6884296, 4028679, 213675, -2326262, 4207994, 5046587,
+328028, 1664837, -6808060, -282931, -2312303, -7001334, 1458678, 1234803, -6232535, -676994,
+-1464584, 2310693, -2423972, 5819144, 27917, -1424319, 7854959, 41753524, 924492, -11023034,
+34548716, 17670032, 15231565, 30259656, 29904246, 8709120, 9466645, 7661148, 32508070, 1792612,
+-11556683, 14183593, 2944737, -12614856, -14381161, 12640089, 12089259, 23517094, -2351495, 1800665,
+258235, 3306051, -13966697, 15752329, 10835129, 4902169, -10861972, 16664473, -5080410, -787590,
+-22064858, -4716948, -1723356, -1312113, -11666742, 7685307, -10856604, -6095096, -6386080, 3220689,
+-7541963, -10056129, -14111652, 14921790, -10757282, 15863999, 6914361, 13041668, 3935801, -13117367,
+-737661, -21135534, -9901510, -11489574, 4352950, -14659260, -8122857, -2610803, 3221, 15342160,
+1472100, -2330557, -24581172, 9752260, 8143795, -519691, -378494, -12320114, 9326521, 1086627,
+-10792179, 29006062, 6332393, -3721052, -534723, -11620034, 1745367, 14553497, -4031901, -1157494,
+-16294032, -9491878, 5640366, -2215666, -7852811, 9431748, 5537287, -9549860, 8320963, -3286187,
+2488397, -3177739, 8134668, 1832340, -1537061, 261456, 1797981, -11518565, -103616, -4239670,
+3190624, 3983045, 5410048, -4717485, 3879966, 3123515, 2232846, 4262218, 4749697, -341987,
+3599720, -5538361, 9506910, -4400194, 8000987, -5699422, 3394098, -12678743, -23252416, 7141457,
+7002408, -7194070, 15134391, -16734803, 18177912, -13114146, -7638600, 5851356, 4205847, 46917148,
+18330920, 7028177, -29279328, -779000, -6950868, -15518254, -4510790, -5672041, -5138929, -1737314,
+-24349780, -468688, -9214852, 301721, 11850352, -12915504, 15378130, -5042292, -17027398, -15187541,
+12182138, 9347996, -3811247, -8385387, 15538118, -8386461, -7925289, 12217034, -354335, 3759707,
+-12592307, -424128, -7406134, 15669651, -2368675, 22478248, -8414378, 3378529, 6766184, -642098,
+852014, 6857989, -14500883, -2323577, 18462454, 1498944, 5061619, -171262, -14987825, 6403260,
+-10465762, 5325223, 16137803, 20950314, 22836342, 24054502, -5201206, 8442832, -205085, 12908524,
+29139742, -32017370, 24879672, -14802068, 6677064, 20012400, -12641162, 1289027, 6269579, 5457830,
+-1509144, 13929116, -5412733, -4404489, 5874979, -3340411, 13402982, -1990181, 5070209, -10815801,
+-1774895, -323196, -8730058, -3665218, -11008538, 114890, 3160022, 1068373, 12184822, -4028679,
+804770, 1316408, 5168457, 1275605, 5213017, -7233799, 5423470, 1671816, -326954, 3877819,
+5316096, -6082748, 5522254, -11696270, -10357314, 7212861, -3487514, -8297877, -1215476, 3395172,
+-5355288, 9415642, -11256036, -24722368, -4832375, 5019743, 322123, 5819144, -18398030, -2472828,
+-3786014, -26129508, -20268488, 10424959, 10835129, 5050345, 7463043, -13359496, -6593312, -9458592,
+28570122, 6903623, 763430, 21461952, 12298639, 10814728, 9666361, 8469676, -15126875, 10907606,
+4371740, -4587025, 8497593, -7557532, -7555921, 14997489, -6529424, 9476308, 19683298, 757525,
+3738232, -278099, 1238024, -4218195, -11613592, -14539001, -23801098, 9817758, -20168092, 7640747,
+7787313, 10214506, 23085, 706522, -2864206, -15391015, -7396471, 7963406, -5416491, 8216810,
+19689204, -5964636, 15050639, 7023882, 1629403, -752156, -5432060, -14230300, -652298, -19266150,
+-6779606, 20881058, -11143293, 3414499, -34302832, 16380468, -6392522, 5362804, -26480084, -23386096,
+2174864, 6436546, 12046310, -27154394, -2936684, 478352, 18549964, 15372225, 17164836, -5348845,
+317828, 2756832, 8953933, 2289755, 4903242, 14374719, 8031052, -5272609, 5114769, 1541893,
+970663, -151934, -3069828, -11585137, 4079145, -5524939, 1709397, 4821101, -197032, 1216013,
+-206158, 4839355, -2946348, 19360102, 5162014, -576063, 10650982, 6664716, 841277, 3398393,
+-377420, -8373039, 11195369, -3492345, 1460289, 13643500, 7417409, -3997541, -2684, -5157182,
+8799851, 6343130, 7504919, 6675453, 20433844, -48400524, -11907797, -28752122, 9699647, -25822954,
+-8657580, -29264834, 7824894, -15265924, -11705933, -2510409, -24850680, -9047885, -26626112, -13458280,
+-30828738, 6635188, -28522878, -11290932, -14820858, -8318278, -7836168, -6676527, -27227946, -15583215,
+-20715164, -10644540, -5985037, 11740830, -1705102, 8759586, -16946868, -2775086, 975494, -19541028,
+3773666, -1385664, 1654099, 5096516, -19764366, -1134408, 7289097, -2462090, 8216810, 16393353,
+29733522, -24717536, 1518808, 33031520, 160524, 16204912, -11584064, 20462298, 3743601, -4909148,
+-27478664, -16199543, 22818624, 14068165, 22282290, 797253, -15542950, 5659693, 8051990, 15916612,
+-29880624, 196495, 5661304, -16512539, -5496485, -7148436, -10002979, -23964844, 37035504, -6822019,
+-11898133, -7617662, 7679402, 8875550, -20929912, -19472844, -771484, 6180995, 971736, 48318,
+-4081830, -7085623, -89657, 18644990, 11563126, -136365, -15367393, -10649908, 1727114, -5942624,
+4072166, 4912906, 2512556, -1633161, -7926899, 3229279, 3930432, -2205466, 5950141, -3473018,
+-13646185, -6495065, -779000, 3951907, -1013612, -4401805, -19968376, -7995619, -4572530, 1497870,
+2506114, -8642548, -15467788, 6047314, 9290551, -8218420, 372052, -7226820, 7824357, -2532420,
+-13719199, 20590074, -34749508, -365609, -6883759, 15025943, -7646116, -21415780, 18715856, -37593848,
+-32413582, -26754426, 15353434, -7954280, 871878, -14585172, -13802414, -16129750, 9084393, 7867307,
+26230976, 12353400, 5324149, 24424942, -6468758, 8869644, -8777839, 7652558, 4440996, 14565308,
+23536958, 12304544, -4861366, -14352170, -8548059, -2908767, 13234942, -4325569, 3716221, 530965,
+-6033892, 12520903, -756451, 10286984, 7646116, -19981262, 16547972, 30373472, 4763656, 25415468,
+24601572, 11182484, 8172249, 102005, 13019120, -8036958, -29461328, -9558450, 21953188, 264141,
+-10806138, 11337103, 31161062, -7051800, 2426657, -22462678, 22228066, 19946902, -1400159, 6461242,
+-10116259, 51125144, -31996432, -27755690, -26209502, 2295660, 981937, -7656316, 22814866, -31894428,
+-496069, -20355998, 7864085, 9140764, -1386201, 22272626, 5167920, -1787243, -11958263, -52076,
+5657546, 16263967, -11023034, -14159433, 6007049, -8392366, -2177549, 2087891, 3938485, 1436130,
+154082, -949725, -13351443, 1398012, 3282966, 9342091, -7873749, -4373351, 5264556, 2581275,
+3683471, 455803, -8699456, -858457, -9883793, -7444789, 10085120, 5217312, 5710696, 4057134,
+-269509, 2084133, -2641405, 6208375, 906238, -2583423, -514859, -8602283, -3212099, -5665599,
+3605625, 56146496, -12625056, 31411244, 53327388, -17985712, 25399362, 11656004, -34111704, 31150860,
+4365298, -14500346, 22434762, 9965935, 21057688, 82678, -18367964, 17329120, 5544266, 350040,
+5047661, -4907000, -19415936, -11125039, -9469329, -16264504, -12593381, -2874944, 12362526, -11120744,
+-7166153, -16020228, 3109020, 1644436, 2267206, 22584012, -13710072, 5632313, -12745315, -6760816,
+12476880, -9992241, -23264764, -29204168, 33566244, 15311558, -8761733, 23624468, -21853868, -18596134,
+-11800960, -1647120, 3084860, 398358, -20370494, -14485851, -16006806, -34186864, -21858162, -18311594,
+6294812, 11781095, -1302449, 20218022, 3444564, -20365124, -18120468, 27194660, -23479512, 3471944,
+23272818, -2894271, -41038412, 28625420, -15358266, 4714801, 1478006, 23708756, -6008123, -8886287,
+-1547799, -13346611, 6708739, -23123568, 7558606, -29774860, -19503446, 11691975, -13033078, -3546032,
+-1990181, -17641578, 5471789, -10264435, 8157217, -2611877, -670552, 1002338, 10723996, -7900056,
+-6704981, 2035815, -11565810, -4872641, 1366337, -7247758, -8202851, -5325760, -3684545, -8471823,
+-5118528, 12148315, -10158671, 4735739, 6947647, -1694365, 7453379, -10319196, 812286, -7234336,
+14847165, 2913062, 5126581, -10562398, 12998719, 9233106, 9871445, 4376572, 971736, 3330747,
+7089381, -7229504, 462783, -6010270, -27130772, 16314970, -7689065, 27520540, 18867254, -43670692,
+-5509370, 4770098, -26657788, -4217121, -4362076, 32467268, 23342074, 21734682, 26920318, -872952,
+-18862960, -14475114, -15014132, 844498, -41787348, 5149129, 35786204, -32488744, -58886148, 6129992,
+-22035330, 43576200, -289910, 1557999, 29127394, -13215614, 5984500, -1218160, -7913477, 25426744,
+-7298760, 12927315, 42526620, -31168040, -17861158, -28397250, 14199699, 2493229, 28470802, -16203301,
+11216844, 1640678, 25930866, 15396384, -12681965, -8321499, 9810242, -4573604, -1155883, -18204218,
+-18068928, 9596031, -4034048, -5216775, -10275172, 23589572, -8908299, -9327595, 39385388, 42210940,
+27274652, -35679904, -3176128, -11144903, 13903346, 52536040, -6633040, -39860516, -2617246, -16363289,
+23542326, 10631118, -26780194, 14205067, 10404021, 13858786, -25838524, -9215389, 1923072, 22985592,
+1417339, -3588445, 3760781, -7751879, 1811403, 22969486, 11118597, -9435506, -11438572, -2512019,
+7219303, 9240085, 12096239, -11334419, -4328254, -20850456, -4380867, 13345537, -13136694, -1977833,
+-8109435, -7439420, -12338367, -2498597, 8424041, -1793686, -881005, 2195802, 5374615, -5466957,
+-15742666, -16254841, 9879499, 7677791, 13798656, -6793565, 10131291, 29702920, 1570347, -17627620,
+-2833605, 1699733, -1573032, -10991895, -4508642, 3362960, 8637716, -1745904, -25593710, 3745212,
+-20978768, 19320910, 11311333, -20750598, 35316980, 53223772, 1644973, -2583960, -18114562, -18559090,
+3244311, 2984466, -8855686, 48147120, -4208531, 35892504, 28975996, -36424008, -1000191, -12262132,
+-38730404, 9731859, 9159018, 21166136, 36531380, -1169842, -10241350, 11902965, 13345537, 28579786,
+12150462, 2569464, 23732916, 24759412, 8697846, -5761162, 21783000, 9586904, 26146688, 5515812,
+7659001, 16210280, 27688580, -4635344, -21644488, -25259240, -8056285, -8807367, 43465068, 23686744,
+66998804, -3149822, -33499672, 29620778, -9991168, -11569031, -9909563, -22759568, 3549254, 12744242,
+-296890, -12756053, 47674136, -9496710, 56225952, -15357192, 30354682, 2626373, -9249749, -30579630,
+-43438764, 40928892, -3741990, -6990596, -12320651, 38045356, 209917, -39908836, 73418168, 23024246,
+8203925, -8383240, -30487288, 15413564, 1064078, 15518791, -14041859, 11082089, 5806259, -6869800,
+-10308995, 1935957, -12509092, -5940477, -14241038, 1744831, -2298881, -136902, 5051419, 12015171,
+-11915313, 4743255, -5690295, -295279, 16317118, 10782515, -5494874, -20033874, -389768, -1115618,
+2930778, 18445810, -11654931, -6956774, 4871567, 11612518, -16460462, 1205812, 11288248, -162135,
+-1020592, -17368848, 9325448, -455267, 8520678, -18144626, 2344515, 7844221, 6395743, 9140227,
+-17220672, 14839112, -18262738, 11761768, 49823232, -29701846, -18738942, 3798362, 9163313, -5839545,
+35314296, 27115202, 27821724, 9104794, 13835700, 23009214, 14544370, -8632884, -13648332, -31413928,
+-4858682, 16925930, 6054830, 3489124, -11434814, -29721174, -8429947, -4351339, 30272540, 205622,
+-3413425, 22612466, -3444564, 6106370, 5048734, -51025284, 13212930, 13524852, -8701067, -21929566,
+4309463, -28862180, -14412837, -44098576, 13450227, -36851356, -72482408, 8237748, -820876, 50969452,
+-1585380, 17184164, 42418708, -7118909, -10780905, 18575734, -202937, -37058588, -12712029, 4650913,
+6308233, 27004070, 11489574, 24026584, 21150030, -15280957, -11125039, 10128607, 31042950, -13049184,
+-6311992, -28541668, -19413252, 7337415, -38112468, 10910828, -42829412, 7982734, -11178189, 30330522,
+-13170517, 21446382, -45916960, -9570261, 6446746, -27599996, 7078643, 4678293, 4886062, -20859582,
+11006391, -20427938, 5921686, -1724429, -8484171, -3874597, -1890859, 6306086, -6922414, -3397319,
+-5527623, 13016972, -8446590, 7541426, -19325206, 10089415, -1000727, -1717987, 2914672, 18697066,
+6675990, 7908646, -22431540, 2794950, -9130564, -27991376, 11301670, -9058086, -6976638, -10421201,
+10487236, -5143224, 5110474, 5720897, -2592013, 1108638, -6732361, 1850057, 5794985, -1439888,
+964220, -845035, -10672994, 39035884, 41475964, 97137664, 11383811, -54258320, -40846748, -29954712,
+-34712464, 68021544, 90636160, 30826590, -8702141, -28438052, 960462, -34431144, 37940132, 35999880,
+10612864, 5289252, -22541598, -3168612, 41758892, 9838159, 16755204, 14244259, 43823700, 36998996,
+-14261976, -32519344, -43154756, -28964722, -4356708, 12117713, 39400420, 23753316, -8260833, 21475374,
+-29958470, -10083509, -67331128, -10523744, 66218196, 51307680, -10334228, 134342816, 42083700, 4050154,
+-73618424, -12426951, -6335614, -17147120, 18778134, 10555956, 15909096, 28294170, -60071560, -64566780,
+-32520418, -43515536, -6243809, 14910516, 54322208, -32366874, 19867444, 84825064, 42330124, 14881525,
+23735600, 17421998, -51163796, -84526568, 43301860, -20802138, 18643916, 45486924, 50162532, 4575214,
+-30338038, -39827232, -32590748, 35201552, 20269562, 6260989, 34992708, -34722664, -6054830, -5431523,
+-15431817, -17894444, -1533303, -360240, 11359115, 3684008, -4997195, 258235, -430570, 743566,
+3006477, 6647536, 10118943, -9945534, -13794361, -47216188, -25915832, -23255638, 27986006, 16722455,
+10014790, -38626252, -37971804, -61038464, -16681653, 24223078, 30775588, 40193376, 15720654, 11870753,
+4691178, 4038343, -1125818, 9148817, -2125472, 28835874, 20327544, 4234838, 251256, 362388,
+-4901632, 95026, -3437585, -20665772, -88855360, -21197812, 49562312, 94849520, 83600464, 200366672,
+104897600, 71143448, 62631896, 28474022, -11193222, -101255464, -127066608, -189608304, -145167216, -148958592,
+-56646860, 721555, 57047368, 106081400, 87547536, 90435904, 62362388, 85089744, 66643396, 94214400,
+44893684, 35119412, 16821240, -24260660, -37267432, -57130580, -34507916, -124069256, -52380348, -117431920,
+-84691384, -134404016, -79864920, -125110784, -44407816, -62033824, -20174536, 9552544, 63513440, 166483664,
+158586832, 222144304, 150401168, 102548784, 133221296, 181897776, 160131952, 134443216, 93853088, 11283953,
+-90948616, -90345176, -111925240, -213090512, -235185424, -256234528, -255807712, -280960640, -242934624, -204712096,
+-180480976, -117586008, 13536663, 133675488, 232635824, 307434304, 383318304, 426441920, 297354016, 283510240,
+184050080, 111439368, 105385616, -6365142, -34787624, -163440688, -313117088, -337312768, -273761760, -211687120,
+-124660352, -100955352, -102715752, -56740812, -88209504, -35779760, -9798431, 67680096, 128664872, 105603584,
+137536656, 147721104, 157682752, 139170368, 185894240, 138049920, 113196544, 58380416, 12022150, -31498216,
+-144003808, -127659312, -170960640, -226791984, -205370304, -235537088, -241945712, -70679056, 7909719, 122815664,
+150490288, 160145376, 186028992, 194166352, 164831712, 143226960, 109942032, 83212304, 30141544, -21665426,
+-64131916, -115826144, -169924480, -159350272, -142110272, -106482976, -50061600, -22230750, -10474351, -6448357,
+15658914, 32527934, 39698384, 42518564, 35276712, 28041304, 30631170, 24751360, 18669686, 33991980,
+38386808, 29316374, 14464376, 7485591, 12199318, 15668041, 6249178, 3095061, 6237903, 836445,
+-11827266, -35400196, -42541116, -28210956, -21598854, -24828670, -23589572, -14520748, -20495584, -23381266,
+-20064476, -8260833, 1870995, 10173167, 14108431, 18976776, 21678310, 20010790, 17019882, 19320374,
+19576998, 17012902, 11996381, 8338142, 2926483, -1067299, -2303176, -3824132, -7774428, -4822175,
+-2280628, -4078072, -5760625, -3799436, -747861, 3356517, 2638721, -446677, -3553012, -2975339,
+-5353677, -9904195, -12313671, -11530913, -10953240, -9507984, -10278394, -8945343, -3889093, 282394,
+1404991, 7608535, 16209207, 19364396, 16056198, 14565308, 14669461, 12628278, 7373385, 3803731,
+2605435, -46171, -4412005, -6541235, -7711614, -7814156, -7621420, -7081328, -5683853, -4032438,
+-3651259, -3367254, -2847027, -1453846, -804770, -248571, -53150, 542240, 504122, 650688,
+344134, 396211, 47245, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
12934294,
-573915, 2186138, 1808181, -5255966, -2726231, 7173133, 12464532, 2024003, 6643241, -2678986,
-1261647, -326954, 5629092, -4437238, -10154376, 4129074, 4765803, -5904507, 6880001, 3404299,
-6278169, 2005213, 1502702, -2713883, -863288, 351650, 4191888, 402653, -6275484, 303332,
--493384, 1388348, -859530, 1149441, 1527398, 3778498, 2739652, 925565, 1192927, 403190,
-1860258, -1905355, -3115999, -6935836, 1369021, 1565516, 587874, 5372467, -1866163, 4183298,
-1171989, -1620813, -3264712, -2094870, 7504919, 1637456, 4201552, 732292, 1675037, -1398549,
-286152, 538482, 2180770, -607738, -2754148, -1468879, -5766531, 683974, 1167157, 5000416,
--1558536, 3832185, -624918, 2523293, 80531, 2277407, 1773285, 1084479, -890669, 2613488,
-3586835, 2520072, 2357400, -37581, 542240, 622770, -1917166, 867047, 484258, 1768453,
-932545, 754841, 962073, 1278290, -650151, 790811, -484794, -24159, -203474, 4871567,
-4546760, 2192044, 1811939, 2607045, 2979097, 4603668, -2053531, 4774930, -27917, 5095979,
--1180042, 9010841, 2954938, 3030100, -6167573, -775242, -1460826, -7841537, 4248260, 3725347,
--2581275, -10297184, -4804458, -1481764, 4975720, 7031399, 4306242, -2704756, 1404991, -4372814,
-132070, 461172, -3701188, -1727651, -9464497, 849330, -1257352, -3854733, 328565, 615791,
--1352378, -223338, 8902393, -2085207, 7236483, 1498407, -5735929, 493921, 468688, 4188667,
--1928440, 1241782, 893890, 389768, 5521181, 2018635, 5670431, 4304094, -3033321, 5318244,
-2471754, 3903052, 278636, 1324461, -1425392, -2421825, -4818417, -5759015, 5992553, -5986648,
--4757750, -4939750, 2726231, 2610266, 1034013, 1172526, 3477313, -2223183, 2596845, -1661079,
--2509335, 3958349, -3661460, 673773, 1736777, -2943663, 646929, 507343, -552440, -402653,
--348429, 2109366, -752156, 829466, -987843, 1635846, -520765, 945430, -1167694, -1118302,
--1125818, -8057359, -7562364, 1656784, 112206, -1597191, 4471598, -560493, -824097, 4712653,
--5193153, 1040456, -4539244, -2883534, -1665374, 78920, 7605850, 8715562, -4078608, 3431142,
--6301791, -571768, -2495376, 8465917, -2542084, -452582, 836445, -11860015, -2115808, -5845451,
--1983738, -1433982, 4377109, 5903970, 2358474, 7971460, -1069984, -3598646, -3725884, 4611721,
-11876121, 8360154, -4706748, -5421323, 5913096, -5334887, 964220, 1922535, 9718974, -3579855,
--4872641, 1082332, -3044058, 1886028, 2434173, 6229850, -6861747, -4398584, 3933116, 7521025,
--747861, -3470871, -4480725, -10601053, 3971234, -6979, 3106872, 507343, 219043, -1658931,
-1890859, -2700998, 1624035, 2301566, 2254858, -3760244, 2709051, -683974, -2704219, 259846,
--5633924, 3498788, 466004, 446677, -2276333, -757525, -1936493, -3884261, -3013993, 2068564,
-130460, 837519, -788663, 272730, -284005, -1112933, -942208, -1626182, 104153, -934692,
--762357, -231928, 299037, -292058, 465467, -305480, 1885491, 748935, -1203128, 1320703,
-732292, -1536525, 1013612, -19744502, -6420439, -1104880, 3418794, 2192044, 4958003, -9465034,
--2754685, -492848, -9687836, -7031399, 2507724, 5828808, 3519189, 6439230, -773094, 3669513,
-8722005, 7577933, 7242926, 4074313, -2712272, -2272038, -4394826, -2040110, -4415764, 9179419,
-4356708, -1488206, -4043175, -2567317, -4129611, -6162741, -6520297, -8328479, 5034776, 3500398,
--9115531, 2094333, -431644, 6262063, 1012539, 3048890, 4145717, -8731669, -1309428, -385473,
-1185411, 4481262, 6940667, -2831457, -965294, -2093260, -5421860, 1612223, 1122597, -639413,
--1457068, 5172215, 316754, -2956011, -949188, 2420214, 3377455, -1412507, -120796, 815507,
--4714264, 3460670, -337692, -7187091, 848793, -8759049, 1410897, 6410239, -2130841, -318364,
--9743670, -4827007, -7232725, -4463008, -575526, -806917, 4537096, 824097, 5322002, -3230889,
-1810329, 2821794, 984084, 2776696, 352187, -1951526, 1120450, -898185, 932545, 37581,
-399969, -402116, -1320703, -538482, 1214402, -1334124, 908922, 2199560, 1163399, 540092,
-74625, 37044, -457951, -906238, -1433982, 1043140, 1444720, -882079, 952946, -928787,
--671089, 10902238, 3976603, 1923609, -2797098, 8056285, 2988224, 4594542, 12513924, 13753022,
-424128, -2123861, -4941360, -7330436, 2627446, 5490042, -2892661, -462246, 671089, -1209033,
--4461934, 5211406, -5111011, 2452963, -14558865, -1998234, -3622268, -3423626, -7247221, -1402844,
--1029182, 197032, -3767223, -5143760, -4227322, 657667, -2837363, -5464272, 3209951, 4850629,
-280784, -4469451, -5218922, 1958505, -4045322, 4576288, -5735392, 3704946, 1198296, 9664,
--8127152, -7340636, 1604170, -5298379, 8607114, 1635309, 7202660, -3718368, 7248831, 1510755,
-4622459, 1687922, 4371740, -4066797, -6046777, -48855, 9349607, -855235, -6513318, -3315178,
-3999688, -2581275, -3781719, 1029182, -10313290, 6942278, 8143258, -449361, -7202660, -8847633,
--415538, 7562364, 5272073, -4182761, 5607617, 661962, -986769, -1059783, -746251, -421444,
-1430761, -2455111, -2331630, 251792, 701153, -1832340, 529355, -829466, -427886, 2046015,
--964757, -378494, 154619, -3089155, 1494649, 467615, 115964, 777389, 821413, -86436,
-91268, -568009, -787590, -425202, -542777, -820339, 15410343, 3307125, 8416525, -3224447,
-6278706, 4887673, 9838159, -7234873, -5367099, -1551557, 470836, 7208566, -3428458, 10874320,
--902480, 6240051, 5167383, -2865817, 2065879, 6321118, 5616744, 1602560, 1479079, 5771363,
--11744588, 2042257, 8905078, 7176891, -6395207, 7997229, -9383967, 5777268, -8289287, -3994320,
--2255395, 8665097, -1849520, 9066676, 1874216, 2060511, 330176, -165356, 3421478, 5377836,
-11520176, 1964411, 9926206, -4804458, 7224672, 9800042, -419833, -1598265, -3602404, 3872987,
--13925358, -1010928, 1245004, -5035313, -8310762, -324270, -637266, -970663, 3500935, -8300025,
-4151623, 3858491, 5246840, -13165685, 4464619, 3337190, -7980049, -785442, 4220342, 9930501,
--12520367, -1397475, 837519, -11584601, -1146219, 1863479, -3367791, 7847442, -1835562, 811749,
-2056753, -1207423, -496069, -383863, 1267015, -2892124, 347892, -1431298, 827855, 420907,
--1831267, -44560, 2029909, -800475, -528818, 199179, -2579665, -795106, 384936, -804233,
--1228361, -207232, 377957, -1225139, -675384, 1882806, 2240899, -2854006, -171799, 642635,
--68183, -341987, -13764296, -16957068, -13506062, -12271795, -380105, 8580271, -17816062, 12673912,
-8256001, -20086488, 12663174, 5322002, 4354560, 1956358, 1975685, 4508105, -3117610, -3301219,
--6556805, -223875, 7726646, 6476811, 3823595, -11445551, 7837242, -8187819, 256624, -7202660,
-8990977, -4771172, -3670587, 2804077, -13394929, 1317481, -4414690, -4038343, -1398012, 938450,
-13242995, -6251862, -1988033, -5049808, 10080288, -6131603, -3258270, 3073586, 3055869, 2811056,
-3590056, -4190814, 4880694, 1213865, -10980621, 15122580, 6060199, 2425046, 1614908, -98784,
--7021198, 8645769, 7298223, 3012920, 9753334, 1013075, 4312684, 9746355, 5009543, 2079301,
--6699075, 8026757, -3500398, 15354508, -1644436, 386547, -4165582, -16153909, 2137283, -3934190,
--1890859, 8256001, -676994, -8773008, -4959077, 7093139, 5978595, 906775, 6922951, 1796370,
--5046587, 2384244, -466004, -1718524, -1388885, 539018, 4103841, -1952600, 522912, 703301,
-2315524, 850404, -1839857, 2964064, 451508, 774705, -161598, 751619, 384400, -1188632,
-1723356, -1200980, 1421097, 1081258, -857920, 3343095, -445066, 809601, -1132261, -781684,
-9854802, 6717329, -1141924, -6180458, 16196859, 25755308, -3401077, -3573413, 12453795, 3032784,
-4108673, 3307662, -18547280, 2047089, -11992622, 9599789, 13684303, -3585761, -6606734, 2241973,
-8668855, -5195300, 10471130, -4101694, 20207284, -5900748, 3912715, -983011, 5486821, 14401562,
--5430450, 1426466, -1266479, 4172561, -5333276, -2567317, 8198019, 17667348, 1480690, 12937515,
--4780836, 1793686, -2425583, 4321811, 9454834, 14103062, 10991358, 10449119, 10857140, 6877317,
--1975685, 1688996, -1487669, 288300, 2161979, -7033009, -2024003, 11369852, -9966472, 3992172,
--4378719, -2609730, -5177046, -20533164, 2305861, 11165841, 7061463, -2513093, -9739375, -23666880,
--3808026, 9665287, -1984275, 3830037, -7374996, 5537824, -6800007, 6284611, 13443248, -5867999,
--7252589, -13373991, 4056060, 1686848, 2213519, -10565620, 778463, 98247, -3195456, 645319,
-5014911, 256624, 3452617, 1562294, 2241973, 2760590, -454193, 4321274, 1039382, 475668,
--872415, -1349157, -1163399, 4123706, 1393717, -97711, 2757906, 1483911, 1996086, -335007,
-2286533, 2809446, 3762391, -1517734, 419833, -1475858, -17674328, -14102525, 1854889, 8262980,
--7931731, -5248450, 1060857, -4314832, -26476326, -22897544, 9995463, 9153649, 1722819, 1321239,
--9674414, 15176804, 18510772, 11363947, -9496173, 8866960, 12164958, -1919850, -15354508, -6972880,
-21303574, -6349036, 2168422, 1263794, 11984569, -9617506, -17047262, 3677029, 7885560, -4232691,
-5058935, 11036992, -5335960, -4283693, -468151, -23893440, -6875706, 8176544, -4498978, -15977278,
-2921115, -456340, -4983236, 3135863, -1473174, -15151034, -12782360, -22661858, -17952964, 3474629,
-7960185, 705448, -5353140, -7587060, 216896, -5199058, 4857608, -10906533, 399969, -3885872,
--3109020, -3717831, -953483, 4212289, -4913443, -21743808, 3287798, -3160559, 5389647, 5916318,
-436476, 4100083, 5058398, 1563905, -1214402, 2610803, -3059627, 1185948, -6742562, -3617973,
--3011309, -3753802, 1565516, 5948530, -3106335, 912144, -7669738, 856309, -747324, -5730023,
-2511482, -1844152, 1461900, 2306398, 1360968, 1013075, 4869419, 1030255, 650688, 1588601,
-31139, 635655, 688805, -1414118, -3651796, -758062, -3698504, 1724966, -2810519, 4134443,
-58519, 5936719, 2762201, -3623879, -2361695, -1989644, -209380, 8647380, 27790050, 24688008,
-19298898, -2054605, 18871012, 6125160, 26335128, 11160473, -521302, 32126892, -6662568, -1663226,
--20424180, -5373004, -390305, -14397804, 8660802, 12914967, -4159139, -151398, -11577084, -19879256,
--11714523, -15146202, -4393752, -9133248, -2849711, -1403381, 9162239, 2357400, -1857573, -8159364,
--2791729, -5428839, 2956548, 266288, -8086887, 4351876, 5451924, 2193118, -6237367, -8194798,
-2804614, 7693360, -1038308, -217970, -14545444, 26248156, 4444755, -4905390, -660888, 2398739,
-11259794, 9593883, -9791452, 5633387, -3794604, 1275605, -1605244, -2398739, -14905684, -13265543,
--17859548, 2804614, -692564, -3690988, 11307038, -3483755, 31814970, -3032784, -1654099, -7723962,
--3435437, 4221416, 5522791, 3941169, -206158, 13771813, 9859634, -1914482, -6549289, 1920387,
--3879429, 95026, 1349157, -4285841, -1388885, 234613, -1413044, 2269353, -5346161, 3345780,
-6113886, -1724429, 3240016, -1737851, -1423782, -2310156, 1064615, 3485366, -1356136, 4634270,
-920734, 1726040, 6284074, 2816962, -755377, 6666863, 3013993, 4668630, 5958194, 4682588,
-574452, 131533, 4432406, -3858491, 208306, 2808909, 1530619, 3195456, 2891587, 1675574,
-3689377, -16760036, -24307904, -13240847, 17748416, 14292577, -12521440, -12585328, 19045496, 11782169,
--12375411, -16461536, -2948495, 2974265, 1612223, 2495376, -9925669, 10280541, -7466801, 19990388,
--3332358, -13820131, 2996814, 5217312, -377420, 1657857, -6408091, -8936753, -766652, 8211441,
--5211943, 6287296, -10026064, -25928180, -21421150, 13535053, -16747151, 13349295, 3580392, 1684701,
--5784784, 7901129, 2208687, -1923072, -4059281, 3776350, 7660074, -7023346, 21783000, -5425081,
-7141457, -6510634, 1660542, -1725503, -8932458, 21446382, -16953846, 23318452, -1123671, -11377905,
--17804250, 9100499, 2854006, 3052111, 744640, 9566503, 6029597, 8684424, -18319646, -5319854,
-198642, 395137, 4268661, -13517873, -6905771, -4365298, -2623688, -16959216, -3773666, -5610301,
--19521164, -923418, -11190537, 2908767, -5398774, 1559610, 2205466, 8527121, 4709969, -3122441,
--813359, -6978248, 3627100, -408559, 3112241, -8208756, 183610, -3242700, 1737314, -7561290,
-1233729, 1818919, 113280, -1625108, 2407329, -4414153, 3158412, -6928856, 2416456, -4947266,
-2182917, 1398012, 3169149, -2535105, 8533026, 3528316, -132607, -5237176, -4638565, -769336,
-5611912, -1145146, -3138011, -2676838, 3763465, 337692, 3548180, 41249940, 13763760, -9197672,
-21196200, 19740206, -10204305, -13003013, 31870804, -2852932, 7012608, -18897856, 46393700, 1622424,
--12985297, 6737193, 2325188, 22528178, 395674, 28450938, -20438138, 443455, -22325240, 1727114,
-15707769, 736050, -13675176, 19397682, 10373957, 5717675, 4678293, -6769942, -6527277, 1772748,
--9674414, 12704513, -11310796, -15086073, 13337484, 5057324, -17498234, 9516574, 1162326, -12722230,
--7130183, -4247723, 6703370, -1497333, -7661685, 9356049, -11310796, -4484483, -3875134, 15656230,
--10269804, 7568806, 12026982, 5568962, -7103876, -14620069, 9277129, -12501576, 16916802, -21299280,
-28106266, -8314520, -3947075, -3991098, 12799539, -920197, 4647155, 7652558, 4610111, 10875394,
--10609643, -20207822, 1421634, 17179332, -11458436, -5424544, -11976516, -7185481, 3163244, -1182190,
--3442416, 7434052, 5352066, 3932043, -1883343, 11332271, 6941741, -5255966, -2766496, 2239289,
-610422, 9598178, 6086506, -772020, -3115462, -2425583, 10480257, 978716, -5362267, 6642704,
-1996086, 287226, 5541045, 2522220, -967441, -5633387, 1585380, 6898255, -5100274, -1258962,
-7854422, -490163, -1611150, -1956358, 4640712, 916976, 141734, -2064806, -24671902, -3053185,
-22560926, -6585796, -14068702, 6243272, -6604586, -1202591, 10230075, -24492052, -14393509, 9487046,
-12611635, 17207786, -1213328, -3230352, 6932614, -1641751, -24222004, -16572668, 28501940, -2144263,
--24960202, -14474577, -10041097, -8237211, 2325188, 8404714, 461172, -4146791, -12452184, -19035296,
-2573759, 2559264, -659814, 15608985, -10627897, -29871498, 12133283, 8821326, -34909496, 20877836,
--5639829, -17607218, -14521284, -1285806, 19881940, 4779762, -6573985, -7170448, 5684389, 10473815,
--14696841, 11286637, 1822140, 8322573, -6359236, -15267535, 13578539, 73551, 15226733, -47229608,
-6015102, 7329899, -6983617, 13166222, 15261629, 44960792, 1279900, -29634200, -13671955, -7716983,
--28827820, -28271086, 1474784, -16039555, 212601, -10645613, 10593000, -10833518, -10681047, 18997178,
-4657892, -602369, -1041530, 11167989, -2350421, -1069447, 6444062, 5335960, -4093104, 3661460,
--10141492, -2186675, 2822867, -1867237, -2949569, -4836133, -5203890, -2616172, -6416681, 2622078,
--8154533, 1816771, -1418413, 7693360, -1810329, -3936875, -3401077, -4543539, -4930623, -1263257,
--3451006, -5930276, -4437238, 4437775, -5939940, -2997350, -10612864, 3328063, 4243428, 11002632,
-2454574, -1345935, 660351, -20680804, 3349538, 12650826, 11389716, -18362596, 32622960, 22632868,
--10400263, 13508209, -26326538, -5923297, -8793409, 41566692, 26720066, -9985262, -15843061, -19507742,
--4275640, 1032940, 7692824, 27860916, 5985574, 4675609, 6085969, 700617, -9168145, 1052267,
--1700807, 12800076, 17416092, 21952652, 14380087, 9269076, -2120103, -4140349, 3548180, 19894826,
-3208878, 3473018, -20248624, -10388452, 34331284, 13843753, 10361072, 184147, 20594906, 10899553,
-43336756, -2495376, 44681620, 3097745, -13777718, 14370424, -11984032, -9086003, -1505923, -8310762,
-568546, 8208756, 17928804, 3029563, -3719442, -19625854, 6392522, 1540283, 12984223, -15410880,
-4180077, -6849936, 2406256, -19582904, 10001368, -17241072, -1984812, -23440320, -32027572, -5439576,
--4914517, 26377004, 7236483, -903554, 5068062, 8172249, 10424959, 1665374, -278636, 346282,
--18502182, 5819144, 387084, 17272748, -6922951, -930397, -4514548, 12250320, 2586644, 11182484,
--1074, -13173738, 6518150, -762357, 4470524, -10035191, -4362076, 2305861, 2891050, -7482907,
-857383, 6699075, 4372814, -6594923, -7079717, 12664248, -12680354, 5261335, -3801583, -10557030,
-3479997, 2306398, 3511136, 4263292, -4626217, -699543, 6295349, 399969, 4438849, -1905355,
--4718559, -5093295, -10979547, -16604880, 5011153, -19061602, -107911, 23138062, 7170985, 19724638,
--22937272, -10519986, 11118060, 2317135, 32620814, -16612397, 19469086, -7394323, -9995463, -24376086,
--9569187, -13107703, 16246788, 3814468, -21824340, 27200564, -14175003, -13107703, 2529736, 10581726,
--8069707, 18797462, -9249749, -13112535, -6866042, 6217502, -2428804, -3630858, 1905355, 18722300,
--12853763, 34298000, -13474386, -491774, 31673774, -6441377, 5451387, -43455404, 1773285, 7700340,
--9956271, 19084150, -34985728, -42661372, 15999827, -7628399, 23384486, -17659832, -16785270, 1819992,
--5645198, 36131948, -4594542, -1742683, 7878044, -33727304, 1720134, -34084860, -13818520, 1865090,
-7919383, -42536820, -19153944, -5310190, -2285460, 13634911, -18425946, 21625698, -9147207, 2334852,
--28111634, -1522029, -24867860, 9197136, 5099200, 18223546, 23134304, -8824010, 15086073, 1955821,
--5261335, 7715909, 4651987, -7648263, -7873749, -13599477, -740882, -8143258, -8640400, 2775623,
--2238215, 11484743, -15862925, -2852395, -10073846, 3732864, 5415417, -5558225, -995359, -8444443,
--8562017, 9169755, 15006079, 17052094, 3256122, 963683, -4904316, 3112241, 2563559, -6654515,
--10638634, 3390340, -5740761, -7749195, 11341398, 7944616, 6500970, -10801306, -12592844, -26562226,
-21714818, -19069654, -5097590, 16913044, 39598524, -11381126, 32511828, 11286100, 8617852, -15130096,
-35989680, 5456219, 16963510, 1428077, -20605642, 7492034, -20691004, -21036750, 13389561, -20954608,
--4160750, -4987531, 21472688, 1710471, -6761353, 6750615, 9742060, -4452271, -19598472, -4769561,
-15675020, 37051608, 8898635, -21009906, 2642479, -4102231, 9243843, 11193222, 19171660, -8405251,
-770947, 12113955, 3147674, -715112, 25182466, 22364432, 27059904, 9144522, 22789634, 3001109,
-13799730, -10640245, -1562294, 2913599, -20567524, 1509144, 35651448, -4554276, -7430831, 7372848,
--222801, 9439801, -20742544, 27787902, -17175574, -7864622, -4486630, 1368484, 3573413, 3525631,
--30314952, 38556996, -8085276, -12410308, -4291209, 32735704, -3452080, 6774237, -25654376, -18098456,
-805843, 13597330, 12820477, 20919712, -33416994, -10594074, 32529546, -11628087, 3834332, 27565100,
-6847252, 6000606, -1526861, 913217, -10271951, -855235, 2905009, 7844758, -4501663, 6526203,
--11894912, -6866579, 925029, -3466576, -1829656, -28330678, -21661668, 1765232, 14504105, -13389024,
--22605486, -9374303, -18524194, 5238250, 1066763, -7218230, 18238042, -5212480, 7588671, 8214125,
--9570798, -6940131, -1412507, 2187212, -503585, 13572097, 14496, 842887, -6361921, -1498407,
--10139344, 63247152, -3848828, 12773770, -676457, -6373195, 1629403, -29083372, -12619151, -8870718,
-11188927, 8201240, 14116484, 1730335, -15532749, 16188805, -13223667, 18645526, 13478144, -14939507,
--16280610, 1990181, 22513682, -23211078, 9554155, 10793790, -13502303, 5982890, -1926293, 8184060,
--1245541, -33891052, 18817862, 11742977, -28823526, 34548180, -18518826, -4357245, -11556683, 27886686,
--5761162, -23665806, -287226, 383863, 22775674, 23434952, 1302449, -18036716, 25997438, -4223027,
-4378719, -33288144, 25962540, 10703059, 1320166, -19098646, -14740865, -2028298, 8855149, -15352897,
--27721330, -11683385, 21410948, 13440026, -3485903, 35202624, 1819992, -5720360, -25675314, 31061740,
--29156386, -9321153, 31431644, 10023917, 3819837, -11933567, 4632659, 31272730, 6644852, 13711146,
-19501300, -51172924, -11514807, -8502425, -4545149, -21223580, -4072703, -2515777, 30773978, 8425652,
-1785633, 15803869, 21894132, 15559056, -11328513, 5930813, 12969727, -2631204, 4815732, 5737540,
-6771553, 4595615, 21747566, 11956115, 1044214, -6422050, -10278394, -19116900, 2453500, 26844,
-4831838, 6283001, 2649458, 33239826, -4897874, 12027519, 6865505, -9039832, -26721140, -4260608,
--10110353, -16423418, -18060338, 3066070, -3271691, -21378736, -277562, 8162049, -2461553, -2078764,
-7122667, -5255966, -16708497, -7258495, -25813290, 1306207, -28842316, 26996554, 40889164, 19717658,
-23030152, -35667020, -32758252, -24847996, 1882806, 45280228, -8855686, 17118666, 28572270, 15135465,
--16669305, 1404991, 20693690, -27013196, -23529442, -19256486, 21698712, 15965467, -29385092, -40220220,
-54492936, 34398392, -39927628, 18195092, -5232344, 16697759, 1098975, -11498701, -27946278, 25313464,
--1329292, -19853486, -30957588, 8129836, 6411850, -7283728, 127238, -2436857, -15632607, -6207302,
--8565239, 14416595, -27242978, 29641716, -20732880, 1430761, 45373644, -44108240, -11445014, 42304356,
-2344515, 10151692, -6955163, -12810277, 12443057, -4559108, -19233938, 2714956, -42931956, 71854264,
--7779260, -78614008, 29118268, 78124384, 45175004, -95924872, -28742458, 18473728, 6195491, -14388677,
--22950158, 12259447, 28631862, -35952096, -10768020, -62918048, -11674795, 22043382, 7175280, -19077170,
--32399086, 12652437, 26910654, -381715, -9338870, -14947560, 21213918, 13286481, 8141111, -1667521,
--7463580, 2802466, 11475079, 9731859, -3076807, -25144886, -16608639, 26491896, 10432476, -13421773,
--10063645, 19034758, 5450851, -2507724, -39269424, -17477832, -20031728, 21667574, 5014375, 4818954,
--4890357, 642635, 20051054, -4175245, -4649839, -18222472, 2694018, -5851893, 28325310, 6269042,
--7507603, 3606162, 28581396, -3812320, -12253542, 2431488, 222265, -1478006, -20315196, 4955856,
-19278498, 46232640, -19572702, 15311558, -24610700, -63960116, 34389804, -15836081, -35511864, -24021752,
--36293548, 17613660, 11678016, -48030620, 30767536, -16503949, -1515050, -226023, -25130928, 19524384,
-18801756, 17199196, -1873680, 22388054, 11233487, -12990665, 946503, -27229556, -10261214, -24116242,
--17338246, -836982, 39537320, -32873680, -7350300, -6800007, -30032022, 17827336, -33840048, 17770964,
-14852534, -22439056, 17743046, -36293548, 10299868, -31507880, 20454782, -11576547, -17073032, -17108466,
--26200374, -6642704, 12865038, 23010824, -26584774, 17986250, 9662066, 27944130, 33709588, 20024212,
--28392956, -12731357, -53213036, -13040594, -15592879, 17987324, -62064424, -11382200, -36991480, -2840584,
-36721972, 34324304, 22138408, 8258149, 49518288, 54789824, 48275432, -16302085, -21966074, 18768470,
-47255916, 88065080, 6159520, 20883742, 10519986, -4351339, 16039018, -15468325, 9387725, -3768834,
--403190, -9848897, 16280074, 19371914, -6811818, -15400142, -12107513, 14754286, 6209449, 16685411,
--9133248, 6672769, -3412352, -6916508, -4840428, 16569447, 31927714, 15664819, -16816408, 8791798,
--5922760, 11815992, 4976794, 6002754, 15530602, -9796820, -21299280, 2069101, 16080358, 13052942,
-4207458, -2850248, -7449084, -28726888, 28350006, 8272644, -6891275, -29887604, -7232725, -20448340,
-10166724, 11840688, -10009958, 7344931, 57498876, -33996812, 21504902, 26100516, -12069395, 2357400,
-10023380, -3221226, 27901182, 1413581, 20207284, -25830470, -3631395, 22431004, 3719442, -35041564,
-22697828, -14003204, -11379516, -13389024, -3452080, -13058311, 13309030, 18547280, 9067213, -3252901,
--9716290, 16091632, -5216775, -25739740, 21104932, -43448428, -10904922, -8956617, -9504226, 24773372,
-27171574, 48645336, -14224932, 20805896, -722091, 9374303, 31952946, -2334852, 3467112, -21279416,
--66959612, 33179160, 6455873, -32360432, -22107270, 3273839, 17592722, -3084324, -18916110, 9854802,
--19395536, 25617870, 14366129, -11153493, -23273890, 46437724, 5191005, 2483028, -4170413, 6459094,
-3369402, 2051921, -15517180, -32963874, 9219147, -4796942, -11645267, -30369714, -7380365, -857383,
-27224188, 11233487, -34064460, 19973208, 3660386, -1243393, -3678640, 11173357, 14354318, -2756295,
--6268505, -2354716, -5923297, 5333813, 8586176, -295279, 4980552, 9583146, -3376381, 13803488,
-5964099, 4306779, 7342784, -3762928, 17313014, 3005940, -3495567, 11324755, -13412646, 4482872,
-7949448, -3088082, -5646272, 15600395, 22446572, -19815368, -3535832, -6886980, -6675453, 8121783,
-7074348, -12377022, 7111392, 5739150, 5145908, 6007049, -11075647, 8224326, -679142, 4932233,
--13851806, -3422552, 2910914, 64133524, 32263258, 64531884, -59616832, 5420786, 30535070, -11669426,
-34820372, 68070400, 36894844, 2450279, -18564996, -18545668, 3211025, 29662654, 31154082, 7432978,
--383326, -46496244, -9947144, 46417324, 14956687, -12585865, 25172266, -21395916, -30631170, -8048769,
--2333778, 35947804, 46275588, 42129872, 15546708, -15948287, -25254408, -45995880, -46323908, 40350144,
-16492674, 3557844, 61577484, 4022237, -19267760, -25056302, -26050588, 12788265, 26124676, 21314312,
-40279276, 3150896, 28892782, -1648731, -5571647, 15064061, 26725434, 20050518, 16865800, -15164993,
--6168647, -11906723, -27760522, -21719650, -40309880, -13123809, 10392210, -6306623, 28760174, 35225712,
--898722, 586800, -14647449, -25308094, 4941897, 34042448, -2279017, 18953690, 7869991, -2203855,
--10919417, -4619238, 2756832, 12045236, 8862665, -8784282, -19252190, -23138600, -22279070, -8259222,
-8575439, -2042257, -14127758, -6815040, -9906879, -7850127, 4185983, -985158, 12613245, 18771154,
-3821984, -22304838, -11926587, -13270375, -3405909, 15436649, 3330747, 3969087, -18773838, -17231946,
--20237886, -9991168, 17029546, 12057047, 14653892, 8276939, -7595113, -8762807, 6024766, 5970542,
--1891933, 4114579, -7946227, -5912023, 4182761, 3383361, 5924371, -3460670, -7898982, -3286724,
--6131603, -900869, 11530913, -33986076, -66058208, 26021060, 107920720, 109580184, 92893704, 67180808,
--41432476, -47412144, -51079508, -68108520, -104039144, -83944600, -72773392, 33749852, 78339128, 58133992,
-125942400, 97210144, 50799264, -18786186, -33848636, -84683336, -65983044, -65478924, -13300440, -40149356,
--32476396, 9636296, 17781702, 35581120, 35854388, 49021684, 48766132, 62751620, 36711232, 16045461,
--9070434, -10677826, -27572080, -41895796, -50438484, -61814244, -40372692, -75906032, -50458348, -37990060,
-38028176, 71904728, 77682536, 53626960, 36652716, 57239568, 43916576, 54932632, 43290048, 15088220,
--20346334, -96369936, -68038728, -69489888, -107670000, -67655936, -58430344, -56837988, 20706038, 57052736,
-90764472, 74615928, 106691280, 95626912, 93638880, 66646080, -36340792, -33020782, -74828528, -99111200,
--109069624, -89577448, -42900816, -12264816, -22553948, 29467770, 78161424, 54994372, 37258304, 62573380,
-52706764, 18752364, -12335146, -12559558, -4006668, -15394237, -41972568, -26475252, -29975650, -16293495,
--13418015, -31374200, -11548093, 10727755, -10448582, 34622804, 45832668, 50224272, 53252224, 3255048,
-15931107, 15470472, -4490925, -72931232, -58095876, -45493904, -40524628, -32009854, -30252676, 33497524,
-50167364, 54412940, 52183316, 42931956, 29529510, 26482768, -347355, -7900593, -42089604, -56925496,
--50884088, -42523396, -27047556, -17671642, 2111513, 25613574, 52068964, 38919920, 24835112, 17923436,
-4974109, -355409, 85362, -10384694, -13491566, -11211475, -13181792, 3173444, -4919348, -18185966,
-2458869, 8731669, -3183108, -4514548, -3712999, 2094870, 3476776, -4705674, 1084479, 11889543,
-7484518, 3519189, 7367480, 7103876, 1269700, -1352378, -2207613, -4722317, -6667400, -4943508,
--3567507, -4542465, -3773129, -1718524, -672162, 1036698, 2218888, 2260227, 2063195, 3573950,
-2892661, 3187940, 1329829, -1216550, -1475321, -122407, -1378148, -2658048, -1705102, 1177895,
-2739652, 3427921, 2703682, 2628520, 653909, -1366873, -2885681, -4315369, -5814312, -5432060,
--4786204, -2977486, -1274532, 1124745, 4128001, 7341710, 8199093, 8187819, 6595459, 4103841,
-905701, -2011118, -5883032, -7658464, -8315057, -7165616, -5158793, -2477123, 567473, 3425773,
-4170950, 4918812, 4330401, 3130494, 1515587, 643708, -164819, -436476, -811749, -824634,
--1003949, -541166, -633508, -495532, -646393, -278099, -359704, -59056, -209380, 69256,
--157840, 78920, -113280, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+573915, 2186138, 1808181, -5255966, -2726231, 7173133, 12464532, 2024003, 6643241, -2678986,
+1261647, -326954, 5629092, -4437238, -10154376, 4129074, 4765803, -5904507, 6880001, 3404299,
+6278169, 2005213, 1502702, -2713883, -863288, 351650, 4191888, 402653, -6275484, 303332,
+-493384, 1388348, -859530, 1149441, 1527398, 3778498, 2739652, 925565, 1192927, 403190,
+1860258, -1905355, -3115999, -6935836, 1369021, 1565516, 587874, 5372467, -1866163, 4183298,
+1171989, -1620813, -3264712, -2094870, 7504919, 1637456, 4201552, 732292, 1675037, -1398549,
+286152, 538482, 2180770, -607738, -2754148, -1468879, -5766531, 683974, 1167157, 5000416,
+-1558536, 3832185, -624918, 2523293, 80531, 2277407, 1773285, 1084479, -890669, 2613488,
+3586835, 2520072, 2357400, -37581, 542240, 622770, -1917166, 867047, 484258, 1768453,
+932545, 754841, 962073, 1278290, -650151, 790811, -484794, -24159, -203474, 4871567,
+4546760, 2192044, 1811939, 2607045, 2979097, 4603668, -2053531, 4774930, -27917, 5095979,
+-1180042, 9010841, 2954938, 3030100, -6167573, -775242, -1460826, -7841537, 4248260, 3725347,
+-2581275, -10297184, -4804458, -1481764, 4975720, 7031399, 4306242, -2704756, 1404991, -4372814,
+132070, 461172, -3701188, -1727651, -9464497, 849330, -1257352, -3854733, 328565, 615791,
+-1352378, -223338, 8902393, -2085207, 7236483, 1498407, -5735929, 493921, 468688, 4188667,
+-1928440, 1241782, 893890, 389768, 5521181, 2018635, 5670431, 4304094, -3033321, 5318244,
+2471754, 3903052, 278636, 1324461, -1425392, -2421825, -4818417, -5759015, 5992553, -5986648,
+-4757750, -4939750, 2726231, 2610266, 1034013, 1172526, 3477313, -2223183, 2596845, -1661079,
+-2509335, 3958349, -3661460, 673773, 1736777, -2943663, 646929, 507343, -552440, -402653,
+-348429, 2109366, -752156, 829466, -987843, 1635846, -520765, 945430, -1167694, -1118302,
+-1125818, -8057359, -7562364, 1656784, 112206, -1597191, 4471598, -560493, -824097, 4712653,
+-5193153, 1040456, -4539244, -2883534, -1665374, 78920, 7605850, 8715562, -4078608, 3431142,
+-6301791, -571768, -2495376, 8465917, -2542084, -452582, 836445, -11860015, -2115808, -5845451,
+-1983738, -1433982, 4377109, 5903970, 2358474, 7971460, -1069984, -3598646, -3725884, 4611721,
+11876121, 8360154, -4706748, -5421323, 5913096, -5334887, 964220, 1922535, 9718974, -3579855,
+-4872641, 1082332, -3044058, 1886028, 2434173, 6229850, -6861747, -4398584, 3933116, 7521025,
+-747861, -3470871, -4480725, -10601053, 3971234, -6979, 3106872, 507343, 219043, -1658931,
+1890859, -2700998, 1624035, 2301566, 2254858, -3760244, 2709051, -683974, -2704219, 259846,
+-5633924, 3498788, 466004, 446677, -2276333, -757525, -1936493, -3884261, -3013993, 2068564,
+130460, 837519, -788663, 272730, -284005, -1112933, -942208, -1626182, 104153, -934692,
+-762357, -231928, 299037, -292058, 465467, -305480, 1885491, 748935, -1203128, 1320703,
+732292, -1536525, 1013612, -19744502, -6420439, -1104880, 3418794, 2192044, 4958003, -9465034,
+-2754685, -492848, -9687836, -7031399, 2507724, 5828808, 3519189, 6439230, -773094, 3669513,
+8722005, 7577933, 7242926, 4074313, -2712272, -2272038, -4394826, -2040110, -4415764, 9179419,
+4356708, -1488206, -4043175, -2567317, -4129611, -6162741, -6520297, -8328479, 5034776, 3500398,
+-9115531, 2094333, -431644, 6262063, 1012539, 3048890, 4145717, -8731669, -1309428, -385473,
+1185411, 4481262, 6940667, -2831457, -965294, -2093260, -5421860, 1612223, 1122597, -639413,
+-1457068, 5172215, 316754, -2956011, -949188, 2420214, 3377455, -1412507, -120796, 815507,
+-4714264, 3460670, -337692, -7187091, 848793, -8759049, 1410897, 6410239, -2130841, -318364,
+-9743670, -4827007, -7232725, -4463008, -575526, -806917, 4537096, 824097, 5322002, -3230889,
+1810329, 2821794, 984084, 2776696, 352187, -1951526, 1120450, -898185, 932545, 37581,
+399969, -402116, -1320703, -538482, 1214402, -1334124, 908922, 2199560, 1163399, 540092,
+74625, 37044, -457951, -906238, -1433982, 1043140, 1444720, -882079, 952946, -928787,
+-671089, 10902238, 3976603, 1923609, -2797098, 8056285, 2988224, 4594542, 12513924, 13753022,
+424128, -2123861, -4941360, -7330436, 2627446, 5490042, -2892661, -462246, 671089, -1209033,
+-4461934, 5211406, -5111011, 2452963, -14558865, -1998234, -3622268, -3423626, -7247221, -1402844,
+-1029182, 197032, -3767223, -5143760, -4227322, 657667, -2837363, -5464272, 3209951, 4850629,
+280784, -4469451, -5218922, 1958505, -4045322, 4576288, -5735392, 3704946, 1198296, 9664,
+-8127152, -7340636, 1604170, -5298379, 8607114, 1635309, 7202660, -3718368, 7248831, 1510755,
+4622459, 1687922, 4371740, -4066797, -6046777, -48855, 9349607, -855235, -6513318, -3315178,
+3999688, -2581275, -3781719, 1029182, -10313290, 6942278, 8143258, -449361, -7202660, -8847633,
+-415538, 7562364, 5272073, -4182761, 5607617, 661962, -986769, -1059783, -746251, -421444,
+1430761, -2455111, -2331630, 251792, 701153, -1832340, 529355, -829466, -427886, 2046015,
+-964757, -378494, 154619, -3089155, 1494649, 467615, 115964, 777389, 821413, -86436,
+91268, -568009, -787590, -425202, -542777, -820339, 15410343, 3307125, 8416525, -3224447,
+6278706, 4887673, 9838159, -7234873, -5367099, -1551557, 470836, 7208566, -3428458, 10874320,
+-902480, 6240051, 5167383, -2865817, 2065879, 6321118, 5616744, 1602560, 1479079, 5771363,
+-11744588, 2042257, 8905078, 7176891, -6395207, 7997229, -9383967, 5777268, -8289287, -3994320,
+-2255395, 8665097, -1849520, 9066676, 1874216, 2060511, 330176, -165356, 3421478, 5377836,
+11520176, 1964411, 9926206, -4804458, 7224672, 9800042, -419833, -1598265, -3602404, 3872987,
+-13925358, -1010928, 1245004, -5035313, -8310762, -324270, -637266, -970663, 3500935, -8300025,
+4151623, 3858491, 5246840, -13165685, 4464619, 3337190, -7980049, -785442, 4220342, 9930501,
+-12520367, -1397475, 837519, -11584601, -1146219, 1863479, -3367791, 7847442, -1835562, 811749,
+2056753, -1207423, -496069, -383863, 1267015, -2892124, 347892, -1431298, 827855, 420907,
+-1831267, -44560, 2029909, -800475, -528818, 199179, -2579665, -795106, 384936, -804233,
+-1228361, -207232, 377957, -1225139, -675384, 1882806, 2240899, -2854006, -171799, 642635,
+-68183, -341987, -13764296, -16957068, -13506062, -12271795, -380105, 8580271, -17816062, 12673912,
+8256001, -20086488, 12663174, 5322002, 4354560, 1956358, 1975685, 4508105, -3117610, -3301219,
+-6556805, -223875, 7726646, 6476811, 3823595, -11445551, 7837242, -8187819, 256624, -7202660,
+8990977, -4771172, -3670587, 2804077, -13394929, 1317481, -4414690, -4038343, -1398012, 938450,
+13242995, -6251862, -1988033, -5049808, 10080288, -6131603, -3258270, 3073586, 3055869, 2811056,
+3590056, -4190814, 4880694, 1213865, -10980621, 15122580, 6060199, 2425046, 1614908, -98784,
+-7021198, 8645769, 7298223, 3012920, 9753334, 1013075, 4312684, 9746355, 5009543, 2079301,
+-6699075, 8026757, -3500398, 15354508, -1644436, 386547, -4165582, -16153909, 2137283, -3934190,
+-1890859, 8256001, -676994, -8773008, -4959077, 7093139, 5978595, 906775, 6922951, 1796370,
+-5046587, 2384244, -466004, -1718524, -1388885, 539018, 4103841, -1952600, 522912, 703301,
+2315524, 850404, -1839857, 2964064, 451508, 774705, -161598, 751619, 384400, -1188632,
+1723356, -1200980, 1421097, 1081258, -857920, 3343095, -445066, 809601, -1132261, -781684,
+9854802, 6717329, -1141924, -6180458, 16196859, 25755308, -3401077, -3573413, 12453795, 3032784,
+4108673, 3307662, -18547280, 2047089, -11992622, 9599789, 13684303, -3585761, -6606734, 2241973,
+8668855, -5195300, 10471130, -4101694, 20207284, -5900748, 3912715, -983011, 5486821, 14401562,
+-5430450, 1426466, -1266479, 4172561, -5333276, -2567317, 8198019, 17667348, 1480690, 12937515,
+-4780836, 1793686, -2425583, 4321811, 9454834, 14103062, 10991358, 10449119, 10857140, 6877317,
+-1975685, 1688996, -1487669, 288300, 2161979, -7033009, -2024003, 11369852, -9966472, 3992172,
+-4378719, -2609730, -5177046, -20533164, 2305861, 11165841, 7061463, -2513093, -9739375, -23666880,
+-3808026, 9665287, -1984275, 3830037, -7374996, 5537824, -6800007, 6284611, 13443248, -5867999,
+-7252589, -13373991, 4056060, 1686848, 2213519, -10565620, 778463, 98247, -3195456, 645319,
+5014911, 256624, 3452617, 1562294, 2241973, 2760590, -454193, 4321274, 1039382, 475668,
+-872415, -1349157, -1163399, 4123706, 1393717, -97711, 2757906, 1483911, 1996086, -335007,
+2286533, 2809446, 3762391, -1517734, 419833, -1475858, -17674328, -14102525, 1854889, 8262980,
+-7931731, -5248450, 1060857, -4314832, -26476326, -22897544, 9995463, 9153649, 1722819, 1321239,
+-9674414, 15176804, 18510772, 11363947, -9496173, 8866960, 12164958, -1919850, -15354508, -6972880,
+21303574, -6349036, 2168422, 1263794, 11984569, -9617506, -17047262, 3677029, 7885560, -4232691,
+5058935, 11036992, -5335960, -4283693, -468151, -23893440, -6875706, 8176544, -4498978, -15977278,
+2921115, -456340, -4983236, 3135863, -1473174, -15151034, -12782360, -22661858, -17952964, 3474629,
+7960185, 705448, -5353140, -7587060, 216896, -5199058, 4857608, -10906533, 399969, -3885872,
+-3109020, -3717831, -953483, 4212289, -4913443, -21743808, 3287798, -3160559, 5389647, 5916318,
+436476, 4100083, 5058398, 1563905, -1214402, 2610803, -3059627, 1185948, -6742562, -3617973,
+-3011309, -3753802, 1565516, 5948530, -3106335, 912144, -7669738, 856309, -747324, -5730023,
+2511482, -1844152, 1461900, 2306398, 1360968, 1013075, 4869419, 1030255, 650688, 1588601,
+31139, 635655, 688805, -1414118, -3651796, -758062, -3698504, 1724966, -2810519, 4134443,
+58519, 5936719, 2762201, -3623879, -2361695, -1989644, -209380, 8647380, 27790050, 24688008,
+19298898, -2054605, 18871012, 6125160, 26335128, 11160473, -521302, 32126892, -6662568, -1663226,
+-20424180, -5373004, -390305, -14397804, 8660802, 12914967, -4159139, -151398, -11577084, -19879256,
+-11714523, -15146202, -4393752, -9133248, -2849711, -1403381, 9162239, 2357400, -1857573, -8159364,
+-2791729, -5428839, 2956548, 266288, -8086887, 4351876, 5451924, 2193118, -6237367, -8194798,
+2804614, 7693360, -1038308, -217970, -14545444, 26248156, 4444755, -4905390, -660888, 2398739,
+11259794, 9593883, -9791452, 5633387, -3794604, 1275605, -1605244, -2398739, -14905684, -13265543,
+-17859548, 2804614, -692564, -3690988, 11307038, -3483755, 31814970, -3032784, -1654099, -7723962,
+-3435437, 4221416, 5522791, 3941169, -206158, 13771813, 9859634, -1914482, -6549289, 1920387,
+-3879429, 95026, 1349157, -4285841, -1388885, 234613, -1413044, 2269353, -5346161, 3345780,
+6113886, -1724429, 3240016, -1737851, -1423782, -2310156, 1064615, 3485366, -1356136, 4634270,
+920734, 1726040, 6284074, 2816962, -755377, 6666863, 3013993, 4668630, 5958194, 4682588,
+574452, 131533, 4432406, -3858491, 208306, 2808909, 1530619, 3195456, 2891587, 1675574,
+3689377, -16760036, -24307904, -13240847, 17748416, 14292577, -12521440, -12585328, 19045496, 11782169,
+-12375411, -16461536, -2948495, 2974265, 1612223, 2495376, -9925669, 10280541, -7466801, 19990388,
+-3332358, -13820131, 2996814, 5217312, -377420, 1657857, -6408091, -8936753, -766652, 8211441,
+-5211943, 6287296, -10026064, -25928180, -21421150, 13535053, -16747151, 13349295, 3580392, 1684701,
+-5784784, 7901129, 2208687, -1923072, -4059281, 3776350, 7660074, -7023346, 21783000, -5425081,
+7141457, -6510634, 1660542, -1725503, -8932458, 21446382, -16953846, 23318452, -1123671, -11377905,
+-17804250, 9100499, 2854006, 3052111, 744640, 9566503, 6029597, 8684424, -18319646, -5319854,
+198642, 395137, 4268661, -13517873, -6905771, -4365298, -2623688, -16959216, -3773666, -5610301,
+-19521164, -923418, -11190537, 2908767, -5398774, 1559610, 2205466, 8527121, 4709969, -3122441,
+-813359, -6978248, 3627100, -408559, 3112241, -8208756, 183610, -3242700, 1737314, -7561290,
+1233729, 1818919, 113280, -1625108, 2407329, -4414153, 3158412, -6928856, 2416456, -4947266,
+2182917, 1398012, 3169149, -2535105, 8533026, 3528316, -132607, -5237176, -4638565, -769336,
+5611912, -1145146, -3138011, -2676838, 3763465, 337692, 3548180, 41249940, 13763760, -9197672,
+21196200, 19740206, -10204305, -13003013, 31870804, -2852932, 7012608, -18897856, 46393700, 1622424,
+-12985297, 6737193, 2325188, 22528178, 395674, 28450938, -20438138, 443455, -22325240, 1727114,
+15707769, 736050, -13675176, 19397682, 10373957, 5717675, 4678293, -6769942, -6527277, 1772748,
+-9674414, 12704513, -11310796, -15086073, 13337484, 5057324, -17498234, 9516574, 1162326, -12722230,
+-7130183, -4247723, 6703370, -1497333, -7661685, 9356049, -11310796, -4484483, -3875134, 15656230,
+-10269804, 7568806, 12026982, 5568962, -7103876, -14620069, 9277129, -12501576, 16916802, -21299280,
+28106266, -8314520, -3947075, -3991098, 12799539, -920197, 4647155, 7652558, 4610111, 10875394,
+-10609643, -20207822, 1421634, 17179332, -11458436, -5424544, -11976516, -7185481, 3163244, -1182190,
+-3442416, 7434052, 5352066, 3932043, -1883343, 11332271, 6941741, -5255966, -2766496, 2239289,
+610422, 9598178, 6086506, -772020, -3115462, -2425583, 10480257, 978716, -5362267, 6642704,
+1996086, 287226, 5541045, 2522220, -967441, -5633387, 1585380, 6898255, -5100274, -1258962,
+7854422, -490163, -1611150, -1956358, 4640712, 916976, 141734, -2064806, -24671902, -3053185,
+22560926, -6585796, -14068702, 6243272, -6604586, -1202591, 10230075, -24492052, -14393509, 9487046,
+12611635, 17207786, -1213328, -3230352, 6932614, -1641751, -24222004, -16572668, 28501940, -2144263,
+-24960202, -14474577, -10041097, -8237211, 2325188, 8404714, 461172, -4146791, -12452184, -19035296,
+2573759, 2559264, -659814, 15608985, -10627897, -29871498, 12133283, 8821326, -34909496, 20877836,
+-5639829, -17607218, -14521284, -1285806, 19881940, 4779762, -6573985, -7170448, 5684389, 10473815,
+-14696841, 11286637, 1822140, 8322573, -6359236, -15267535, 13578539, 73551, 15226733, -47229608,
+6015102, 7329899, -6983617, 13166222, 15261629, 44960792, 1279900, -29634200, -13671955, -7716983,
+-28827820, -28271086, 1474784, -16039555, 212601, -10645613, 10593000, -10833518, -10681047, 18997178,
+4657892, -602369, -1041530, 11167989, -2350421, -1069447, 6444062, 5335960, -4093104, 3661460,
+-10141492, -2186675, 2822867, -1867237, -2949569, -4836133, -5203890, -2616172, -6416681, 2622078,
+-8154533, 1816771, -1418413, 7693360, -1810329, -3936875, -3401077, -4543539, -4930623, -1263257,
+-3451006, -5930276, -4437238, 4437775, -5939940, -2997350, -10612864, 3328063, 4243428, 11002632,
+2454574, -1345935, 660351, -20680804, 3349538, 12650826, 11389716, -18362596, 32622960, 22632868,
+-10400263, 13508209, -26326538, -5923297, -8793409, 41566692, 26720066, -9985262, -15843061, -19507742,
+-4275640, 1032940, 7692824, 27860916, 5985574, 4675609, 6085969, 700617, -9168145, 1052267,
+-1700807, 12800076, 17416092, 21952652, 14380087, 9269076, -2120103, -4140349, 3548180, 19894826,
+3208878, 3473018, -20248624, -10388452, 34331284, 13843753, 10361072, 184147, 20594906, 10899553,
+43336756, -2495376, 44681620, 3097745, -13777718, 14370424, -11984032, -9086003, -1505923, -8310762,
+568546, 8208756, 17928804, 3029563, -3719442, -19625854, 6392522, 1540283, 12984223, -15410880,
+4180077, -6849936, 2406256, -19582904, 10001368, -17241072, -1984812, -23440320, -32027572, -5439576,
+-4914517, 26377004, 7236483, -903554, 5068062, 8172249, 10424959, 1665374, -278636, 346282,
+-18502182, 5819144, 387084, 17272748, -6922951, -930397, -4514548, 12250320, 2586644, 11182484,
+-1074, -13173738, 6518150, -762357, 4470524, -10035191, -4362076, 2305861, 2891050, -7482907,
+857383, 6699075, 4372814, -6594923, -7079717, 12664248, -12680354, 5261335, -3801583, -10557030,
+3479997, 2306398, 3511136, 4263292, -4626217, -699543, 6295349, 399969, 4438849, -1905355,
+-4718559, -5093295, -10979547, -16604880, 5011153, -19061602, -107911, 23138062, 7170985, 19724638,
+-22937272, -10519986, 11118060, 2317135, 32620814, -16612397, 19469086, -7394323, -9995463, -24376086,
+-9569187, -13107703, 16246788, 3814468, -21824340, 27200564, -14175003, -13107703, 2529736, 10581726,
+-8069707, 18797462, -9249749, -13112535, -6866042, 6217502, -2428804, -3630858, 1905355, 18722300,
+-12853763, 34298000, -13474386, -491774, 31673774, -6441377, 5451387, -43455404, 1773285, 7700340,
+-9956271, 19084150, -34985728, -42661372, 15999827, -7628399, 23384486, -17659832, -16785270, 1819992,
+-5645198, 36131948, -4594542, -1742683, 7878044, -33727304, 1720134, -34084860, -13818520, 1865090,
+7919383, -42536820, -19153944, -5310190, -2285460, 13634911, -18425946, 21625698, -9147207, 2334852,
+-28111634, -1522029, -24867860, 9197136, 5099200, 18223546, 23134304, -8824010, 15086073, 1955821,
+-5261335, 7715909, 4651987, -7648263, -7873749, -13599477, -740882, -8143258, -8640400, 2775623,
+-2238215, 11484743, -15862925, -2852395, -10073846, 3732864, 5415417, -5558225, -995359, -8444443,
+-8562017, 9169755, 15006079, 17052094, 3256122, 963683, -4904316, 3112241, 2563559, -6654515,
+-10638634, 3390340, -5740761, -7749195, 11341398, 7944616, 6500970, -10801306, -12592844, -26562226,
+21714818, -19069654, -5097590, 16913044, 39598524, -11381126, 32511828, 11286100, 8617852, -15130096,
+35989680, 5456219, 16963510, 1428077, -20605642, 7492034, -20691004, -21036750, 13389561, -20954608,
+-4160750, -4987531, 21472688, 1710471, -6761353, 6750615, 9742060, -4452271, -19598472, -4769561,
+15675020, 37051608, 8898635, -21009906, 2642479, -4102231, 9243843, 11193222, 19171660, -8405251,
+770947, 12113955, 3147674, -715112, 25182466, 22364432, 27059904, 9144522, 22789634, 3001109,
+13799730, -10640245, -1562294, 2913599, -20567524, 1509144, 35651448, -4554276, -7430831, 7372848,
+-222801, 9439801, -20742544, 27787902, -17175574, -7864622, -4486630, 1368484, 3573413, 3525631,
+-30314952, 38556996, -8085276, -12410308, -4291209, 32735704, -3452080, 6774237, -25654376, -18098456,
+805843, 13597330, 12820477, 20919712, -33416994, -10594074, 32529546, -11628087, 3834332, 27565100,
+6847252, 6000606, -1526861, 913217, -10271951, -855235, 2905009, 7844758, -4501663, 6526203,
+-11894912, -6866579, 925029, -3466576, -1829656, -28330678, -21661668, 1765232, 14504105, -13389024,
+-22605486, -9374303, -18524194, 5238250, 1066763, -7218230, 18238042, -5212480, 7588671, 8214125,
+-9570798, -6940131, -1412507, 2187212, -503585, 13572097, 14496, 842887, -6361921, -1498407,
+-10139344, 63247152, -3848828, 12773770, -676457, -6373195, 1629403, -29083372, -12619151, -8870718,
+11188927, 8201240, 14116484, 1730335, -15532749, 16188805, -13223667, 18645526, 13478144, -14939507,
+-16280610, 1990181, 22513682, -23211078, 9554155, 10793790, -13502303, 5982890, -1926293, 8184060,
+-1245541, -33891052, 18817862, 11742977, -28823526, 34548180, -18518826, -4357245, -11556683, 27886686,
+-5761162, -23665806, -287226, 383863, 22775674, 23434952, 1302449, -18036716, 25997438, -4223027,
+4378719, -33288144, 25962540, 10703059, 1320166, -19098646, -14740865, -2028298, 8855149, -15352897,
+-27721330, -11683385, 21410948, 13440026, -3485903, 35202624, 1819992, -5720360, -25675314, 31061740,
+-29156386, -9321153, 31431644, 10023917, 3819837, -11933567, 4632659, 31272730, 6644852, 13711146,
+19501300, -51172924, -11514807, -8502425, -4545149, -21223580, -4072703, -2515777, 30773978, 8425652,
+1785633, 15803869, 21894132, 15559056, -11328513, 5930813, 12969727, -2631204, 4815732, 5737540,
+6771553, 4595615, 21747566, 11956115, 1044214, -6422050, -10278394, -19116900, 2453500, 26844,
+4831838, 6283001, 2649458, 33239826, -4897874, 12027519, 6865505, -9039832, -26721140, -4260608,
+-10110353, -16423418, -18060338, 3066070, -3271691, -21378736, -277562, 8162049, -2461553, -2078764,
+7122667, -5255966, -16708497, -7258495, -25813290, 1306207, -28842316, 26996554, 40889164, 19717658,
+23030152, -35667020, -32758252, -24847996, 1882806, 45280228, -8855686, 17118666, 28572270, 15135465,
+-16669305, 1404991, 20693690, -27013196, -23529442, -19256486, 21698712, 15965467, -29385092, -40220220,
+54492936, 34398392, -39927628, 18195092, -5232344, 16697759, 1098975, -11498701, -27946278, 25313464,
+-1329292, -19853486, -30957588, 8129836, 6411850, -7283728, 127238, -2436857, -15632607, -6207302,
+-8565239, 14416595, -27242978, 29641716, -20732880, 1430761, 45373644, -44108240, -11445014, 42304356,
+2344515, 10151692, -6955163, -12810277, 12443057, -4559108, -19233938, 2714956, -42931956, 71854264,
+-7779260, -78614008, 29118268, 78124384, 45175004, -95924872, -28742458, 18473728, 6195491, -14388677,
+-22950158, 12259447, 28631862, -35952096, -10768020, -62918048, -11674795, 22043382, 7175280, -19077170,
+-32399086, 12652437, 26910654, -381715, -9338870, -14947560, 21213918, 13286481, 8141111, -1667521,
+-7463580, 2802466, 11475079, 9731859, -3076807, -25144886, -16608639, 26491896, 10432476, -13421773,
+-10063645, 19034758, 5450851, -2507724, -39269424, -17477832, -20031728, 21667574, 5014375, 4818954,
+-4890357, 642635, 20051054, -4175245, -4649839, -18222472, 2694018, -5851893, 28325310, 6269042,
+-7507603, 3606162, 28581396, -3812320, -12253542, 2431488, 222265, -1478006, -20315196, 4955856,
+19278498, 46232640, -19572702, 15311558, -24610700, -63960116, 34389804, -15836081, -35511864, -24021752,
+-36293548, 17613660, 11678016, -48030620, 30767536, -16503949, -1515050, -226023, -25130928, 19524384,
+18801756, 17199196, -1873680, 22388054, 11233487, -12990665, 946503, -27229556, -10261214, -24116242,
+-17338246, -836982, 39537320, -32873680, -7350300, -6800007, -30032022, 17827336, -33840048, 17770964,
+14852534, -22439056, 17743046, -36293548, 10299868, -31507880, 20454782, -11576547, -17073032, -17108466,
+-26200374, -6642704, 12865038, 23010824, -26584774, 17986250, 9662066, 27944130, 33709588, 20024212,
+-28392956, -12731357, -53213036, -13040594, -15592879, 17987324, -62064424, -11382200, -36991480, -2840584,
+36721972, 34324304, 22138408, 8258149, 49518288, 54789824, 48275432, -16302085, -21966074, 18768470,
+47255916, 88065080, 6159520, 20883742, 10519986, -4351339, 16039018, -15468325, 9387725, -3768834,
+-403190, -9848897, 16280074, 19371914, -6811818, -15400142, -12107513, 14754286, 6209449, 16685411,
+-9133248, 6672769, -3412352, -6916508, -4840428, 16569447, 31927714, 15664819, -16816408, 8791798,
+-5922760, 11815992, 4976794, 6002754, 15530602, -9796820, -21299280, 2069101, 16080358, 13052942,
+4207458, -2850248, -7449084, -28726888, 28350006, 8272644, -6891275, -29887604, -7232725, -20448340,
+10166724, 11840688, -10009958, 7344931, 57498876, -33996812, 21504902, 26100516, -12069395, 2357400,
+10023380, -3221226, 27901182, 1413581, 20207284, -25830470, -3631395, 22431004, 3719442, -35041564,
+22697828, -14003204, -11379516, -13389024, -3452080, -13058311, 13309030, 18547280, 9067213, -3252901,
+-9716290, 16091632, -5216775, -25739740, 21104932, -43448428, -10904922, -8956617, -9504226, 24773372,
+27171574, 48645336, -14224932, 20805896, -722091, 9374303, 31952946, -2334852, 3467112, -21279416,
+-66959612, 33179160, 6455873, -32360432, -22107270, 3273839, 17592722, -3084324, -18916110, 9854802,
+-19395536, 25617870, 14366129, -11153493, -23273890, 46437724, 5191005, 2483028, -4170413, 6459094,
+3369402, 2051921, -15517180, -32963874, 9219147, -4796942, -11645267, -30369714, -7380365, -857383,
+27224188, 11233487, -34064460, 19973208, 3660386, -1243393, -3678640, 11173357, 14354318, -2756295,
+-6268505, -2354716, -5923297, 5333813, 8586176, -295279, 4980552, 9583146, -3376381, 13803488,
+5964099, 4306779, 7342784, -3762928, 17313014, 3005940, -3495567, 11324755, -13412646, 4482872,
+7949448, -3088082, -5646272, 15600395, 22446572, -19815368, -3535832, -6886980, -6675453, 8121783,
+7074348, -12377022, 7111392, 5739150, 5145908, 6007049, -11075647, 8224326, -679142, 4932233,
+-13851806, -3422552, 2910914, 64133524, 32263258, 64531884, -59616832, 5420786, 30535070, -11669426,
+34820372, 68070400, 36894844, 2450279, -18564996, -18545668, 3211025, 29662654, 31154082, 7432978,
+-383326, -46496244, -9947144, 46417324, 14956687, -12585865, 25172266, -21395916, -30631170, -8048769,
+-2333778, 35947804, 46275588, 42129872, 15546708, -15948287, -25254408, -45995880, -46323908, 40350144,
+16492674, 3557844, 61577484, 4022237, -19267760, -25056302, -26050588, 12788265, 26124676, 21314312,
+40279276, 3150896, 28892782, -1648731, -5571647, 15064061, 26725434, 20050518, 16865800, -15164993,
+-6168647, -11906723, -27760522, -21719650, -40309880, -13123809, 10392210, -6306623, 28760174, 35225712,
+-898722, 586800, -14647449, -25308094, 4941897, 34042448, -2279017, 18953690, 7869991, -2203855,
+-10919417, -4619238, 2756832, 12045236, 8862665, -8784282, -19252190, -23138600, -22279070, -8259222,
+8575439, -2042257, -14127758, -6815040, -9906879, -7850127, 4185983, -985158, 12613245, 18771154,
+3821984, -22304838, -11926587, -13270375, -3405909, 15436649, 3330747, 3969087, -18773838, -17231946,
+-20237886, -9991168, 17029546, 12057047, 14653892, 8276939, -7595113, -8762807, 6024766, 5970542,
+-1891933, 4114579, -7946227, -5912023, 4182761, 3383361, 5924371, -3460670, -7898982, -3286724,
+-6131603, -900869, 11530913, -33986076, -66058208, 26021060, 107920720, 109580184, 92893704, 67180808,
+-41432476, -47412144, -51079508, -68108520, -104039144, -83944600, -72773392, 33749852, 78339128, 58133992,
+125942400, 97210144, 50799264, -18786186, -33848636, -84683336, -65983044, -65478924, -13300440, -40149356,
+-32476396, 9636296, 17781702, 35581120, 35854388, 49021684, 48766132, 62751620, 36711232, 16045461,
+-9070434, -10677826, -27572080, -41895796, -50438484, -61814244, -40372692, -75906032, -50458348, -37990060,
+38028176, 71904728, 77682536, 53626960, 36652716, 57239568, 43916576, 54932632, 43290048, 15088220,
+-20346334, -96369936, -68038728, -69489888, -107670000, -67655936, -58430344, -56837988, 20706038, 57052736,
+90764472, 74615928, 106691280, 95626912, 93638880, 66646080, -36340792, -33020782, -74828528, -99111200,
+-109069624, -89577448, -42900816, -12264816, -22553948, 29467770, 78161424, 54994372, 37258304, 62573380,
+52706764, 18752364, -12335146, -12559558, -4006668, -15394237, -41972568, -26475252, -29975650, -16293495,
+-13418015, -31374200, -11548093, 10727755, -10448582, 34622804, 45832668, 50224272, 53252224, 3255048,
+15931107, 15470472, -4490925, -72931232, -58095876, -45493904, -40524628, -32009854, -30252676, 33497524,
+50167364, 54412940, 52183316, 42931956, 29529510, 26482768, -347355, -7900593, -42089604, -56925496,
+-50884088, -42523396, -27047556, -17671642, 2111513, 25613574, 52068964, 38919920, 24835112, 17923436,
+4974109, -355409, 85362, -10384694, -13491566, -11211475, -13181792, 3173444, -4919348, -18185966,
+2458869, 8731669, -3183108, -4514548, -3712999, 2094870, 3476776, -4705674, 1084479, 11889543,
+7484518, 3519189, 7367480, 7103876, 1269700, -1352378, -2207613, -4722317, -6667400, -4943508,
+-3567507, -4542465, -3773129, -1718524, -672162, 1036698, 2218888, 2260227, 2063195, 3573950,
+2892661, 3187940, 1329829, -1216550, -1475321, -122407, -1378148, -2658048, -1705102, 1177895,
+2739652, 3427921, 2703682, 2628520, 653909, -1366873, -2885681, -4315369, -5814312, -5432060,
+-4786204, -2977486, -1274532, 1124745, 4128001, 7341710, 8199093, 8187819, 6595459, 4103841,
+905701, -2011118, -5883032, -7658464, -8315057, -7165616, -5158793, -2477123, 567473, 3425773,
+4170950, 4918812, 4330401, 3130494, 1515587, 643708, -164819, -436476, -811749, -824634,
+-1003949, -541166, -633508, -495532, -646393, -278099, -359704, -59056, -209380, 69256,
+-157840, 78920, -113280, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-3398393,
-3420942, 2815888, 6496675, -8848706, 1939178, 5733245, 10643466, -1203665, 6017786, -310848,
-5468030, 1248762, 8361228, -228707, -2647847, 5538361, 8014409, 7487739, 4502737, 1158567,
--3027415, -2483028, 794032, 3792456, -1911797, 1731946, 519691, 4320200, -2074469, -179315,
-1135482, -5282810, -2995203, -1592896, -5414880, 1250909, -1499481, -100932, -701690, -4596689,
-3576097, 5362267, -1081258, 382252, 536871, -917512, 5785321, -7026030, 16106, 2834679,
-810138, 870268, -1639604, -5826660, -1441498, 2197413, 2691334, 2904472, -491237, 53150,
-71404, 1123134, -949188, 6001680, 200790, -578747, -3934190, 489626, -2809446, -2235531,
-2416456, 2554969, 6265821, 175557, 6161131, 652298, 693100, 368830, -3212636, 156766,
--1124745, -1691143, 690953, 1919850, -1211181, 750546, -1254131, 1516124, -1598802, -545998,
--807991, 860067, -492311, 801011, -700080, 951872, 1771137, 829466, -824634, -268435,
--411243, -464393, 525597, 332860, -396211, 6951942, 11244761, 1516660, 5592048, -2024003,
-3316789, 4354560, -1348083, -3474092, 5890548, 10189273, -2007897, 1139777, 3926137, -4864588,
-3022583, 4355634, -8910983, 2512556, 857383, -1992865, -10737, -9257802, 365609, 2605435,
--4417374, 824634, 144418, 5945309, 4228932, -2219961, -645319, -555125, -6321118, -4233764,
-682363, 2557653, 559420, 2840584, -4180077, 637803, 2070711, 438624, -3870839, -2817499,
--866510, 1351304, 3111167, 3237332, 2142652, 3777961, 3679176, -4134980, -1278827, 175020,
-5234492, -791348, 3752728, -2468533, -2573222, -786516, -4725001, -2168959, 955093, 2757369,
--4034048, 3944391, -1124745, -1169842, -796716, -1589138, -2045478, 819802, 3053185, 1147830,
-5102958, -7088307, -5729487, -1254667, 2109366, -70867, -1176284, 1088774, 149250, 1319629,
-2148558, 3618510, 54761, -209380, 846645, -332323, -61740, 560493, -1669669, -868657,
--3443490, 1372242, 6522982, 9238475, 5347235, -2310693, 3956202, -2407329, -1631014, -7881802,
--6287832, 2857764, 6038187, 5924371, 6156299, 1388348, 328565, 3831648, -5092221, 5134634,
-4142496, 398895, 3558381, 9164923, 6220187, 1761474, -6576132, 209917, 2207613, 1437740,
-1083406, -7182259, 1723356, 1345935, 4819490, 5341329, -1672353, 3438658, -2591476, -2854006,
-3874061, 2220498, -6894497, -6501507, -2858301, -3642669, -2728915, -2888366, -7964480, -7183333,
--652298, 2626909, -45634, -734976, -5366025, 741419, 6370510, -1761474, -2011655, 2426657,
--11811, 4635344, 2317135, 2382633, -2971044, -3639985, 6841883, 3159485, -2736431, 4536559,
--598074, 3543885, -2968896, 584652, 5051956, -1886028, -1634235, 3673271, 448824, 1482838,
-2170569, -2479270, 2835215, -1146756, 2323577, 2371359, 1810329, -1576253, 593779, -767189,
--1366873, -1717987, 101469, 245350, 1145146, 1016297, 268972, -52613, 899796, 317291,
-627602, -12730283, -7526394, -2330557, 2397666, -5235565, 1583769, -1417876, 3650722, -870268,
--7157563, -5657009, 4920959, 4063576, 10197863, 9043054, -1388348, 6549289, -9838159, -1575716,
-7617662, 2323577, 1754494, -983011, -3224447, -1472637, 1040456, -852014, -313533, 3888556,
--4830765, 1099512, 1735167, -90194, 3025268, -3284039, -2726767, 1775432, -2123861, 2745021,
--5395553, 920197, -3246459, -1244467, -3613678, -2667175, -4103305, -6038187, 3707094, -10737,
-6329171, -5900748, -5088463, -12348, 1203665, -667331, -1229434, 449361, 3809636, 1859721,
-812823, -2578054, -2525978, -1396938, -4745402, 784368, -1235340, 586800, -230854, -5066988,
--435402, -372052, -5406290, 181462, -1024887, 660351, -916439, -5979668, 537408, 2735357,
--1199370, 4006131, 1095217, -2090575, 1670742, 4202626, 1369558, 754304, 941672, -848256,
-517007, 3296924, -255014, -481573, 1201517, 1376537, 519691, 1117765, 234076, 491237,
--2178622, 280784, -170188, -1030255, -780073, -747861, -1107028, 210990, -907312, 4509716,
--6888591, 2850785, -7693897, -1252520, 339302, -5571110, 5283347, 4139275, -11403138, -1067299,
-1875290, -966905, -5008469, -6582038, 1340030, -3270618, -5581847, -2649995, 3253975, 3003256,
-8028368, 10574209, -945430, 9459129, -5780489, 3774740, 4050691, -744103, 3990025, -2216740,
-57445, -521839, -1959579, -912681, -2189897, 7897908, -465467, -5729487, -1416802, 4001299,
-2405182, 3218004, 599148, -2629057, 5681705, 11716671, 702227, 1264868, 659278, -772020,
-1819456, -687195, 6622303, -4985384, 6334003, 4499515, -4057134, 2165737, 4119411, 2929705,
--4857608, -5143760, -10375567, -1596117, -996969, 1413044, 3985730, -874563, 2589329, -780610,
--2769180, -2641405, 5331665, -1118302, 5657009, -8266202, -3318399, 2028835, -5323075, 1485522,
-5692443, 649077, -54761, 528281, 1204202, 893890, -3228205, -918586, -535260, 580894,
--581431, 1160178, 1454383, 869194, -940061, -2045478, 2359011, 1029718, 914828, 736587,
-682363, 290447, 55298, -924492, 983011, 585726, 382789, 293132, 1034550, 817118,
-1241246, -1319092, -878858, -1568200, -1573569, -293132, 1246614, -861141, -591095, 814970,
-274878, 638340, -265751, 230854, 2898566, 1447941, 42950, 4161823, 11630771, 13954886,
--3699041, -200790, 2812667, -1971927, 8861591, 8868571, -5606543, 8697846, 6642167, 2720862,
-3813394, 3620658, 1692754, -625455, 532576, 1279900, -4821638, -5660230, 1430224, -1490354,
--158914, 1132798, -5202279, 5296232, 10282689, -189515, -6302865, 10271951, 1151051, 447213,
-3899830, -1642825, -3118683, 1613297, -3889630, 1661079, 10275709, 4575751, -150861, 3842385,
-5553393, 14752139, -2461553, 6447283, -1325534, -6208375, 4104915, 523449, -2180770, 3018825,
-8890582, 2444910, 1526324, 14496, 3522947, 13079249, 5735929, 1763621, 1250909, 3551938,
--3789235, 6764574, -1764695, -12652437, 1503239, -1224603, 7657927, 9232569, 3877282, -3734474,
--3580929, -3163780, -506806, 2975876, 216359, 2063732, 1256815, 2156611, 5746130, 2656437,
--4640176, -1844152, 593242, 1752347, 252866, 35970, 131533, -2371359, 2627983, 780073,
-501974, 440771, 502511, 397821, 1960116, -662499, 1420024, -1304060, -464930, -2145873,
-428423, -730144, -158914, 287226, 929324, -15742666, -1642825, -6752226, -7714298, -2199023,
--5472325, 139050, 4903779, -7465727, 7703024, -16360067, 2406256, -4937602, -8550206, -11741904,
-12208981, 5911486, 871342, -10423886, -6637872, 3700651, -13270375, -9481140, 3255048, 2692945,
-13648332, -1906966, 1209570, 9904731, -5901822, 9724343, 3463354, 3467112, -1851131, -6099928,
--624381, 8067559, -4365298, 542777, 10394358, -3928285, -2978560, -5157719, -6068789, -5465883,
--3912715, -8504572, -957778, 2338610, -2796024, 1665374, -2672544, -4439386, 5862094, -7619272,
-4583267, -6504728, -7922604, 208843, 6619619, 246961, -1923072, 2422362, -5270462, -2868501,
--7406671, -13482976, -6231461, 1701344, -3981435, 14994268, 6088653, -10795937, -5297842, -1770063,
--3778498, 4677220, 10340671, 6564321, -4943508, 4560182, -5871221, 3349001, 572841, 4567698,
--5196911, -1453846, 501437, -2520072, -4430259, -3955128, 729071, -464930, -1005559, 2121714,
-932008, 139586, -1446330, 1174674, -260919, -1379758, -3220689, -306016, -1642288, 49392,
-1474784, -1308354, -3587908, -660351, -1509144, -6090264, -842887, -1889249, 16748762, 11166915,
-11409581, -3229816, -16617765, -1168231, -8597451, 2251637, 3473555, 8986145, -4330401, 4016331,
--6939594, 1287953, -6142877, -15156940, -8428873, 5982353, -5763309, -11984569, -11578158, -10462003,
--16729434, 2188823, -5980205, -12463458, -11518565, 2118493, 15743203, -2000918, -2844879, -5198521,
--9845676, 2121177, -4030827, 1184337, -12236899, 894964, -12738873, 1877438, -1207423, 6869800,
-5040144, 5738613, 2700461, -352187, 4476430, -2958159, 8985072, 2700998, 4457639, 2905546,
--3182034, 3386045, 9055939, -1086090, 4978941, -1192927, 14347875, 1990181, 5279052, 828392,
--8325794, -6116034, 108448, -2770791, 1700807, -1992328, 4638028, 4408784, 5420249, -2457795,
-3016678, -11031623, 5756867, 16409996, -8032126, -1540820, 4159139, -9270687, -813359, 5983963,
--3854196, -469762, -2119030, 5218386, -5408438, -1136556, 1253057, -2815351, 1253594, -904628,
-1990181, -2598455, -2868501, 3119757, -1520418, -2866891, 1942936, -1066763, -97711, -4097399,
-3054259, 1184337, -857383, -590558, 1672890, 756988, 1618129, 1399086, 160524, -1699196,
--3334505, -825707, 1726577, -8201777, -23663660, -3953518, -8244727, -12499965, 6735583, -23829552,
--3066607, -8499740, -4590783, 6834367, -7558069, 10027138, 8694624, 1343788, 7841000, 653372,
-4151623, -6243809, -10933376, -12094628, -6731288, -11089069, 8621610, 11237782, -475131, -5989869,
-3265786, 3205656, -4147328, 781684, -18813030, -10001905, 8757438, -4848481, 258235, 8536784,
--812823, 5260261, 4547834, -2503429, 5202816, -115964, -10032507, 11113228, -7853348, 481036,
-614717, -6221260, 4102231, 6600291, -3930969, 7548405, 852551, -654983, -6959458, 8533563,
--52076, -7027640, -2310693, -14015552, -5856188, -8031052, -1012002, 9526774, 2765422, -980326,
-155693, -9097278, 2026688, 6874632, -9112310, 452582, 13942538, -5813238, 1364189, 984084,
--9919764, -6038724, 6340446, 5239860, -16138876, 3175055, 12061342, -136902, 1435593, -6442,
-2903935, -1000191, 7611756, -1824824, -321049, 893890, 1458141, -3537443, 871342, 2599529,
-822486, 4441533, 1658394, -183073, -1668058, -3653407, -1035624, 1605244, -2213519, 1511829,
--2269890, -156766, 3131031, 1591822, -2216740, -3093450, 150861, 6442, 6669011, -2789581,
-540629, 3555696, 1471026, 3506841, 42270532, 9308268, -5456756, -8546985, -751619, -2759517,
-7545184, -1750199, 6386080, 11881490, -4765803, 517544, -7860327, -5507759, 2601677, -1393180,
-6204081, -11916387, -6880538, 5495948, 11905112, 7737921, -320512, 2719251, -2859911, -7213935,
-5193153, 9175661, 9759776, 11635603, -9673340, -2393371, -5533529, -12140262, -1486059, 532039,
--2604898, 5442798, 7339562, -112206, 3638374, -2258079, -12770012, -7063611, -17090748, -17469780,
--5042829, 5722507, -2514167, -7792682, 14586246, 5408975, -569620, -13754096, -601832, -4305168,
--9744744, 23085, -4448513, -6426345, -13504451, -1833414, -4977867, -14968498, 13422, 11276437,
--7627862, -3724811, 4216048, -6495065, 2558190, -6436546, 9277666, -3064459, -8941048, -13997835,
--22817014, 4413616, 3869229, 17353278, 7033546, 5950141, -74625, 5206037, -4097936, 5523328,
--510027, 1890859, 2801393, 6569153, 3054796, 183610, -1211718, -415001, 2643552, 1563905,
-6922414, 5345624, 3636227, 1100049, -1403917, -3736622, 2000381, 4407174, 404801, 207769,
--838592, -3312494, -554588, -556735, -1548336, -1227824, -2494839, 2006824, 3055332, -2934000,
--2909840, -235686, -379031, 1527935, 9427453, -33365454, -19110994, 17790292, -4665408, 1208496,
--9241696, 7803419, -3224447, -12825846, 6146635, 17991082, 2250026, -15598784, 4376572, -3334505,
--3630321, 10396505, 10655814, -1359894, -2216740, 22643604, 5003637, -3156801, -13900125, 6228777,
--19918448, -16273631, -15113990, 6212134, -2882460, -1522566, 12933220, 5266704, -13190918, -10903311,
-2840584, 12902619, 4361540, -1358820, 707596, 8639327, -6185827, -13798119, 18128520, -5223754,
-1868848, 7436199, 1118839, 2626373, 18648212, 438624, 11876121, 652835, -12512850, 1928440,
-2663954, -2472291, 2378338, 8613557, -6328098, -1796907, 2167348, -24592982, 6554120, 5179731,
--144955, 6058588, 4620848, -9042517, 4347581, 34076808, 14593762, 8518531, 2463164, 8377871,
--26096758, -12237436, 13212930, 664109, -114890, -9877351, 8834211, 10823318, 8955544, 1632088,
-1886028, -3440806, 155156, -6065568, -2243047, 5048197, -1091459, -2983929, 2564096, 348966,
-2462090, -3470871, -1517197, 1366873, -641561, 2627446, -4312147, -1343788, 3104188, -3302293,
-2514703, 1060857, 341987, 251792, 50466, -2644089, 1421097, 2744484, -1277216, -1144072,
--2980707, 1475858, -162672, -22269942, 15607374, 16975858, 5301601, 9422621, -6357089, 27016954,
--3290482, 10385768, 6886443, -12272869, -5214091, -5595269, 15497316, -9163850, -3017215, 9968082,
-8153996, -9006010, -2600066, -26275000, 4814659, -2803540, -7872675, 2408403, 593779, 2071785,
-2306934, 9060234, 244813, 9912248, 1044751, 4893042, -2650532, -8386461, -9190693, 17177722,
--6198175, -12235288, -10520522, -4596689, -5843303, 7518341, 4469451, 5816460, 7421704, 2377801,
--9472550, 5473399, -15370614, -4876399, -13447006, 9280351, -16205448, -11429445, -3538516, -5304285,
-4677757, 10929081, -8722542, 10323491, 16686485, 8458401, 16069620, -6684043, 21614422, 2099165,
-18292266, 10555419, 2164664, -9711995, -24832428, -16577500, -13699872, -7596187, -7736847, -2309082,
--11633993, 8783208, 14315126, -5444408, -11207717, -9987946, -8126078, -14916958, 9334038, 6961605,
--4128537, -3759707, -5972152, 886911, -3442953, 8216810, -114354, 2193118, -4456029, -3590593,
--6226629, -1005022, -7431904, -6887517, 7040525, -389231, 738198, 295816, 2492692, -2747169,
--411243, -4186519, 3758, 142808, -329102, 2333241, 93416, -3405372, -2455648, -2411087,
-565862, -3668439, -4264366, -5088463, 1265405, -1293322, 12483859, 6360847, -7101729, 21014202,
-2376191, -20516522, 25617332, 1713692, -10912438, 9037148, -21041582, -4032438, -13397614, -4188667,
--2374580, -4117263, -9578851, 2675765, -18182208, -7039452, -6558952, -24539832, 2975876, -17800492,
--12650289, -19969988, 4000225, -15071577, -4551055, -5003100, 157840, 7577396, -6126234, 10671920,
-547071, 14164802, -3308736, 12317429, 15537044, -18673444, -285615, 4984310, 11404212, 424665,
-13713294, 4572530, 13222057, -301185, -10114648, -6380174, -979253, 8535174, -1978369, -3965329,
--867047, 15825881, 10001905, -3800509, -13075491, 4348118, 7170448, 5070746, 14050449, -18864570,
--13938243, -4016331, 1318555, -5340255, 142271, -5446019, -11782169, 32991792, -16325708, -18979998,
-14126684, 8095477, 12271795, 3719979, 4506495, 2491081, 7171522, -6838125, 18967650, -3373160,
-4646618, -3725347, 2532420, 1079647, -1047435, 12036646, 1508070, 995359, -11934104, 5334887,
-1777580, -1819456, -9720048, -1066226, -2015413, 182536, -3099356, 8638790, 2010045, 2356863,
--7025493, 4712653, -3341485, 891743, 4198331, -261993, -2080375, -2344515, -6250251, 3540127,
-6382322, -3134789, -709207, -2354716, 947577, -3727495, -8409009, -2648384, -284005, -5867999,
-5970542, -629213, -811749, 1903744, -5651640, -6518150, -1808718, 2513093, -4290673, -5714454,
-16763257, 12151536, 19800336, -6670084, -4769025, -27159762, 31510028, 14279156, -41722388, -22502944,
-13506598, 18501108, 18832894, -12148852, -9664213, 22543746, 5476084, 5081483, 15811385, 12579422,
--23029614, 6965900, 9843528, -1853815, 11010686, 1975685, -2877628, 2137820, -7437810, 38487200,
-10201084, 4903779, -971736, -4902169, -2507724, -22029424, 4286378, 6308233, -5071820, -7310035,
--35372276, -17069810, 7503845, 6051072, -11556146, -11513734, -1527935, -17012902, 7059853, 6133214,
--2381559, 6916508, 14053670, 566936, -656056, -4614406, -7402376, -2579128, 1322850, -26271242,
--3412889, 6000606, 15999290, -28423556, 6346888, 9998147, -2163053, -13457206, -11960947, 21215528,
-21169894, -3230889, -13121662, -25151328, 5322538, 9884867, 5305895, 270583, -27210766, 11355894,
-24870008, -8549132, 2854006, 7648800, -10160819, -16438987, -8565775, 2335389, -5008469, -1444720,
--7635915, -6768869, -5567888, -2529736, -2169495, 3164317, -559420, -650688, -6962142, 2731599,
--3254512, 1349694, 83215, 2107755, 4269198, 4787815, -7788923, 2984466, -6015639, -10322417,
--5319854, 1303523, -1009854, 4286914, -969589, 2737505, 6017786, 145492, -265214, -5426691,
--2931852, 7794829, 4041564, -3481608, -2027225, -927713, -5054640, 12414066, -9137543, 3364570,
--7613367, -6766184, 1189169, 8399345, 16850768, -31044024, -40450000, -28159416, -36188856, 31392990,
--20959440, 12615930, -3539590, -25469156, 4552129, -6942815, -9450002, -33057290, -30247844, -22629108,
--8625368, 1134945, -17508972, -5113696, 4611721, 14172855, 1112933, -8891656, 18254, -9506373,
-13622563, -17210470, 23696946, 20388210, -4915053, -6556268, -28156194, -16458315, -17136920, 2004139,
-3747896, -4640176, 22950694, 6492380, 18595060, 3614752, -2237678, -8514236, 16720308, 11515881,
-5215701, -16899086, 8968965, -28535762, -3229279, -3088082, -18954228, -3177202, 179852, 21705690,
-14370424, 346819, 10011569, -469225, -21527986, 10865730, 2972117, 17834852, -10205916, -20729660,
-12252468, -37194952, -8589398, 13062606, -5650567, -5987722, 9013526, -2498597, -7402913, 6795712,
--3182571, -23901494, -21035140, -3548180, 9710921, 15762530, 22198538, 22247930, -9567040, -7679402,
-4294968, 8009577, 7198365, 2963528, -10032507, 8636642, 55298, -1935420, 1013075, 5321465,
-8941585, -2735894, 1409823, 8475044, -2108829, -260382, -8769786, 4228932, -2014340, -688269,
-6992744, -1484448, -3322157, 3111167, -9969156, -3723200, 9846749, 2775623, 3090766, -3619047,
--2485176, -1561758, -7996156, -1117228, -4531728, 5864241, -17204566, 203474, 12631499, -40703404,
--3524021, -26000658, 1832340, -19209778, 17517560, -13785234, -1189169, 3167539, 6699612, 20590610,
-7236483, -9647570, 22739168, 6786049, -38009924, 6104759, -22702124, -1828046, 4632659, -3396246,
-19152870, -5784784, 3697967, 4602058, 1930588, -12448426, 19441706, -11272142, -784368, -22593676,
-253403, 3641059, -3273839, -8048769, -10014253, -11872363, 29344290, 1012539, 15329275, -26034482,
-3199751, -469762, 9166534, 15309411, -17522392, 31481036, 45806364, -2214593, 4672388, -16026134,
-7564511, 10467372, -8517457, 2142652, 8848706, 17545478, -302795, 920197, -5206574, -15489263,
--22818088, 11648488, -17045652, -7430294, -11072426, 4903242, 15819438, 13838921, -2493229, 5133023,
--31068720, 20604032, -3591130, 4407174, -8937827, 20134270, -27858232, 33455110, 24676198, 27859842,
--11034845, -760746, -27302570, -15035607, -9994389, 8971650, 7914014, -22905598, -16486232, 551903,
--5570573, -16731045, 179315, -11604465, -13449690, -5199058, -1826435, 976568, -8819715, 1542430,
-3267396, 13753022, 12589086, -1992865, 11878806, -5810017, -14357002, -8124468, -2916283, -7404524,
--919660, -5515275, 8442832, 2443837, 32020592, 4162360, -10769630, -3805341, 3039226, -16668768,
--10202695, 3929358, 845572, -4335233, 1836635, -8053, -17992154, -1918240, 12324946, -8970576,
-12924630, 51155208, 14185740, 37294276, 11464341, -38196756, 15151034, 11038603, -13156559, 2942053,
-24559696, 1422708, 23493472, 21415244, -25062208, 13935021, -25072408, -16407849, -2670396, 50070728,
-14973330, -22153442, 20886962, 13966160, -27711666, -11782169, -2194192, 28156194, 3794604, -25177636,
--14652818, -493384, -7297687, 15766288, 21990232, -7763691, 19303730, -12335683, -17420388, -286152,
-40104256, 4065187, -23523536, 13509283, -1403917, -2002529, 11001559, -26036092, -23075786, -21307870,
-15529528, -13847511, 4799089, 7052337, 23855858, 12267500, 24533926, 2960843, -1381369, 20574504,
-36887328, 22422414, -37096168, 1081258, 3271691, -5913096, 6793565, 10526428, -28715614, -3962107,
-5325760, 5244155, -34142844, -31752156, -18285286, -19165754, 33302102, 12753369, 1260573, 15148887,
--27712740, 11641509, 7295539, 5337034, -2720325, -5950677, 22920092, 14276471, -9581535, 4292283,
--7297687, 15477452, -4663798, 1386738, 2891587, 2569464, 11005854, -1467805, -18637474, -450435,
-3151969, 5135171, 9150428, -2238752, 557272, 7385733, -14510547, -8108899, -1607392, -25556130,
--4255239, 7493108, -2201171, 3125126, 14525579, -1794223, -10613938, 2530273, 3304977, 9945534,
-11198053, -10752451, -7124277, -411780, -9701257, -5804649, -18331458, -21149492, 5673652, 674847,
--9971303, -7773891, -10172093, -19220516, 14369887, -38513508, 27851252, 31336082, 8556112, 34117608,
--34939024, -16935056, -9517111, -49957448, 28131498, 2942590, 17387102, 23087596, 22385370, 1855426,
--775778, 22958748, -3680250, -26988500, -28215250, 17171816, -31868120, 31176094, -8965744, 6941741,
-30701500, 27875412, -14009110, 42377904, -24532854, 2880313, -25504590, 4264366, -8743480, 16779900,
-5611912, -17908404, 16167868, 24788404, 36149664, -20759188, 7710003, 22376780, -30547418, 1575179,
--12290586, -43963824, -19010598, 11956652, -24260122, 8811662, -20366734, -310311, 29706142, -13919452,
-12578885, 34432752, 24447490, 9356049, 45526116, -70727912, -13370233, 23879482, -2734821, 14003741,
--21963390, -38120520, 46563888, -456877, -23451058, 10265509, 29473140, 73338712, 27699854, -55071680,
--30172682, 19071266, 20464446, 9103720, -38606924, -3127273, 8488466, -11691438, 26100516, 9581535,
-16670379, 20072530, 14891725, -9882183, 11506217, -30419106, 4442607, 16662326, -1948305, -16008954,
-9535364, -9664750, 16298327, 18267570, -7673496, -14698452, -4012573, 33495376, -5920076, -3607773,
--12990665, 15308337, -12899397, -7675107, 9621800, -5904507, 31309774, -2090039, -7729868, 31768262,
--2794413, 7653095, 19289772, -1160178, -1628866, 2155537, 2879776, -14490146, 6743636, 1127966,
--21453898, 14914811, -6645925, 28001040, -15062987, 8657043, 2605435, 37443524, -32885490, -2972117,
--15693810, -19490562, 30054034, -11652783, 39454108, -3876208, -30338576, 47305844, 68390376, -9703405,
--21748640, -32952600, 7925289, 36361192, 7224135, -7580618, -22552874, 5454609, 5443871, -4931160,
-5699959, -3141232, -11020886, -11259794, 10573673, 15021111, -1029718, 20274394, -19321448, 41473816,
-31286152, 18085570, -1373853, 2585570, 6027450, -21751324, -19012210, -21072720, -11003706, -5662915,
-13404056, 11796665, 22602266, -10672994, -2510945, -9431748, 25703232, 50020800, -11589969, -31872952,
--20458002, -1110786, -43212204, 33949568, -58757300, 17219060, 25186762, 25882546, -25489020, 6221260,
-26230976, -59463284, -28002650, 12492449, -6091874, -29669098, -26176752, -3168075, -13600014, 44654776,
-19284940, -15992848, -14715095, -24372866, 68266360, 14901926, 35793720, -2259153, 10647224, 13156559,
-15526844, -21938692, -2566243, 28562070, 19757924, 11973832, -9037148, -11788611, 303869, 9146133,
-13334800, 9183714, -17234630, 2857764, 502511, 4905390, 12968117, 13045963, -18042084, 8929774,
--10986526, -13511430, 1802276, 14756971, 6191196, -8267275, 2333778, -852014, -2262374, -7000797,
-27529130, -7645042, 452582, -15857019, 4201552, -5615670, 18300856, 6193880, -3434900, -9167608,
-10593537, 8862665, -12081206, 1285269, -19918984, -7588671, 5256503, 8810589, 11940546, 315680,
-12495134, -2455648, 2433636, 6405407, -25191594, 7248294, 39902392, 820339, -12960064, 32602560,
-24004572, -7215545, -20787642, -32471026, 6532109, 62753768, 14273250, 31999654, -2442226, 2465311,
--2155537, -7779260, 396211, 2542621, 15684147, 4701379, -11870216, 10159208, -10342281, -12150462,
--12968117, -5906, 13051332, 2413772, 10509785, 10537165, 9159555, -9202504, -15287936, 4646081,
--10481868, -27456116, -7672422, 5847061, -9105331, 31404800, -32369022, 26338350, -8094403, -97174,
-39766028, -6475200, -736050, 51197620, -7569343, -21237540, 4118337, -18234284, -3746822, -17227114,
-57671212, -16491064, 14154065, -14044543, -5862094, -8121783, 9836549, -14688788, -34846680, 15266998,
--3730716, -39242580, 20704964, -10459856, 22005264, 48744656, -24249386, -756451, -2226941, -7469485,
--26117696, -4821101, 24470576, 9499394, 15125264, -22426708, 6881612, 3762928, -21201570, -6024229,
-5068062, 10886668, 14068702, 980326, 2914672, 8851928, -1873143, -10829223, 15824270, -6269042,
--4439386, 14023068, 2185065, -4020626, 21348672, -1519882, -1333051, 72478, 7146289, -6425808,
-10901701, -8304856, -3856881, -6574521, 5793911, -251792, -520765, 2990908, 10037339, -11698417,
-2774012, -1618129, 7270306, 2044404, -1997160, 11974369, -7075959, 6451041, -1828582, 3531537,
-1071594, 8979166, -1068910, -13750338, -186294, 65972308, 33182918, 69208568, -38788924, -9780177,
-22610318, -21328808, 16328392, 71198208, 16683264, 10512469, -18850074, -17389786, 20213726, -10492605,
-28637232, -4458176, -6665253, -8075613, -40876276, 10092636, 48962628, -25632364, 29582660, 26149908,
--16674137, -4718559, 20343112, -32304060, 16201154, -2017024, 24526410, 8621073, -20441896, -6269579,
--41064720, -20732880, 19182398, 14774687, 31829466, 50044960, 5268315, 1103807, -43105904, -25997438,
--25753698, -20858508, 11243151, -17246442, -5058398, -3707631, 12868796, -32565516, -5339181, 17369922,
-8768176, 27461484, -3653944, -12649752, 26960584, -4544076, 16520055, -20430622, -12556874, -2865817,
--6952479, 13585518, 19620484, 28103582, 7830263, 2644626, -19170050, -5034776, -9840307, 23600308,
-254477, 35189740, 6053220, 26598732, -25512642, -8776766, -177704, -252866, 18997714, -2646774,
--9438191, -4760971, 4672925, 1695975, 4948339, 9164386, 7864085, -4440460, -5669357, 748398,
--3345780, 7794829, 7926362, 2245731, -6602439, 682900, -8660265, -3241090, -1881733, 15369004,
-5386963, -1552094, 3923453, -9613747, -11806865, -7598334, 3777961, 8626442, -7018514, -284542,
-157303, 6542846, 3442416, -518080, 6568616, 1445793, -293668, -6021544, 3139621, 2318209,
--2585034, 1101122, 2016487, -8922258, -17722646, -67881960, 2110977, 108304040, 98347768, 91809760,
-39410620, -39497056, -53908284, -54155780, -47757888, -88673360, -62717796, -61828200, 47894256, 72704672,
-59939488, 94730336, 79441328, 16435766, -3339337, -34368328, -65949760, -39905080, -69315944, -38170984,
--22984518, 34897, -8981850, 17134772, 30221538, 50466404, 32288490, 53041772, 40955196, 42075112,
-3617436, -35254164, -15589658, 882616, -37835976, -50724636, -65216932, -64749316, -45383308, -6761889,
-32287416, 12309376, 46832860, 32585916, 53370336, 46923056, 51760260, 59367724, 32424856, -4908611,
--9334038, -39297340, -31593242, -105557408, -83882320, -67791224, -52431352, 5820755, -22719304, 1173600,
-72179608, 88445728, 121742992, 76478336, 46470472, 31098248, 7633768, -46848968, -42348376, -65186868,
--83562880, -71349608, -65961032, -31414464, 5057861, 33250564, 55479704, 54183696, 46675020, 28934658,
-31419834, 13048648, 8674760, -1823214, -25482578, -22770842, -20219096, -23164906, -11874511, -25852482,
--17977660, 5998996, 2468533, -15163382, 8352101, 20716774, 12235288, 23682450, 37696392, 38603168,
-17457432, -24376624, -10121627, -3684545, -48795124, -52086144, -44863616, -19155554, 14295262, 21858700,
-18776524, 30779346, 35443144, 43070468, 29066728, 17439178, -6361384, -29384556, -29272886, -33239826,
--44056700, -31784906, -17182016, 14857366, 24358908, 15302432, 9760313, 27823872, 19276350, 11260331,
-2960306, -4459787, -8688182, 659814, -10488847, -13080860, -4423817, 4080756, -7173669, -5834176,
-1503239, 5574868, 1040456, -3068754, -3556233, 4147328, 283468, -2434710, -4254165, 1362042,
-6297496, 7384660, 1348083, 6340983, 6000070, 3050501, -1664837, -1547262, -5073967, -4910758,
--7512435, -4217658, -4878546, -1313186, 649077, 1353452, -466004, 2975876, 3819300, 5734855,
--1509144, -677531, 1962800, 2957622, -2404645, -217433, -770947, 363998, 1316944, 4271345,
--274878, 1339493, 771484, 955093, -2640868, -3868155, -6614250, -4076461, -5286568, -3925063,
--4258460, 1277216, 3405372, 6363531, 6594923, 10074920, 7926362, 7090454, 2738579, 459025,
--4954245, -6372121, -9303436, -8071854, -8845485, -5111548, -3101503, 838592, 1890323, 6354941,
-5394479, 6966437, 5550709, 5234492, 962610, 907312, -1959042, -1920387, -4365298, -2586644,
--3185255, -829466, -1946157, 120259, -849867, 1138166, -242666, 1372242, -259846, 1190243,
--397284, 1078574, -589484, 840740, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+3420942, 2815888, 6496675, -8848706, 1939178, 5733245, 10643466, -1203665, 6017786, -310848,
+5468030, 1248762, 8361228, -228707, -2647847, 5538361, 8014409, 7487739, 4502737, 1158567,
+-3027415, -2483028, 794032, 3792456, -1911797, 1731946, 519691, 4320200, -2074469, -179315,
+1135482, -5282810, -2995203, -1592896, -5414880, 1250909, -1499481, -100932, -701690, -4596689,
+3576097, 5362267, -1081258, 382252, 536871, -917512, 5785321, -7026030, 16106, 2834679,
+810138, 870268, -1639604, -5826660, -1441498, 2197413, 2691334, 2904472, -491237, 53150,
+71404, 1123134, -949188, 6001680, 200790, -578747, -3934190, 489626, -2809446, -2235531,
+2416456, 2554969, 6265821, 175557, 6161131, 652298, 693100, 368830, -3212636, 156766,
+-1124745, -1691143, 690953, 1919850, -1211181, 750546, -1254131, 1516124, -1598802, -545998,
+-807991, 860067, -492311, 801011, -700080, 951872, 1771137, 829466, -824634, -268435,
+-411243, -464393, 525597, 332860, -396211, 6951942, 11244761, 1516660, 5592048, -2024003,
+3316789, 4354560, -1348083, -3474092, 5890548, 10189273, -2007897, 1139777, 3926137, -4864588,
+3022583, 4355634, -8910983, 2512556, 857383, -1992865, -10737, -9257802, 365609, 2605435,
+-4417374, 824634, 144418, 5945309, 4228932, -2219961, -645319, -555125, -6321118, -4233764,
+682363, 2557653, 559420, 2840584, -4180077, 637803, 2070711, 438624, -3870839, -2817499,
+-866510, 1351304, 3111167, 3237332, 2142652, 3777961, 3679176, -4134980, -1278827, 175020,
+5234492, -791348, 3752728, -2468533, -2573222, -786516, -4725001, -2168959, 955093, 2757369,
+-4034048, 3944391, -1124745, -1169842, -796716, -1589138, -2045478, 819802, 3053185, 1147830,
+5102958, -7088307, -5729487, -1254667, 2109366, -70867, -1176284, 1088774, 149250, 1319629,
+2148558, 3618510, 54761, -209380, 846645, -332323, -61740, 560493, -1669669, -868657,
+-3443490, 1372242, 6522982, 9238475, 5347235, -2310693, 3956202, -2407329, -1631014, -7881802,
+-6287832, 2857764, 6038187, 5924371, 6156299, 1388348, 328565, 3831648, -5092221, 5134634,
+4142496, 398895, 3558381, 9164923, 6220187, 1761474, -6576132, 209917, 2207613, 1437740,
+1083406, -7182259, 1723356, 1345935, 4819490, 5341329, -1672353, 3438658, -2591476, -2854006,
+3874061, 2220498, -6894497, -6501507, -2858301, -3642669, -2728915, -2888366, -7964480, -7183333,
+-652298, 2626909, -45634, -734976, -5366025, 741419, 6370510, -1761474, -2011655, 2426657,
+-11811, 4635344, 2317135, 2382633, -2971044, -3639985, 6841883, 3159485, -2736431, 4536559,
+-598074, 3543885, -2968896, 584652, 5051956, -1886028, -1634235, 3673271, 448824, 1482838,
+2170569, -2479270, 2835215, -1146756, 2323577, 2371359, 1810329, -1576253, 593779, -767189,
+-1366873, -1717987, 101469, 245350, 1145146, 1016297, 268972, -52613, 899796, 317291,
+627602, -12730283, -7526394, -2330557, 2397666, -5235565, 1583769, -1417876, 3650722, -870268,
+-7157563, -5657009, 4920959, 4063576, 10197863, 9043054, -1388348, 6549289, -9838159, -1575716,
+7617662, 2323577, 1754494, -983011, -3224447, -1472637, 1040456, -852014, -313533, 3888556,
+-4830765, 1099512, 1735167, -90194, 3025268, -3284039, -2726767, 1775432, -2123861, 2745021,
+-5395553, 920197, -3246459, -1244467, -3613678, -2667175, -4103305, -6038187, 3707094, -10737,
+6329171, -5900748, -5088463, -12348, 1203665, -667331, -1229434, 449361, 3809636, 1859721,
+812823, -2578054, -2525978, -1396938, -4745402, 784368, -1235340, 586800, -230854, -5066988,
+-435402, -372052, -5406290, 181462, -1024887, 660351, -916439, -5979668, 537408, 2735357,
+-1199370, 4006131, 1095217, -2090575, 1670742, 4202626, 1369558, 754304, 941672, -848256,
+517007, 3296924, -255014, -481573, 1201517, 1376537, 519691, 1117765, 234076, 491237,
+-2178622, 280784, -170188, -1030255, -780073, -747861, -1107028, 210990, -907312, 4509716,
+-6888591, 2850785, -7693897, -1252520, 339302, -5571110, 5283347, 4139275, -11403138, -1067299,
+1875290, -966905, -5008469, -6582038, 1340030, -3270618, -5581847, -2649995, 3253975, 3003256,
+8028368, 10574209, -945430, 9459129, -5780489, 3774740, 4050691, -744103, 3990025, -2216740,
+57445, -521839, -1959579, -912681, -2189897, 7897908, -465467, -5729487, -1416802, 4001299,
+2405182, 3218004, 599148, -2629057, 5681705, 11716671, 702227, 1264868, 659278, -772020,
+1819456, -687195, 6622303, -4985384, 6334003, 4499515, -4057134, 2165737, 4119411, 2929705,
+-4857608, -5143760, -10375567, -1596117, -996969, 1413044, 3985730, -874563, 2589329, -780610,
+-2769180, -2641405, 5331665, -1118302, 5657009, -8266202, -3318399, 2028835, -5323075, 1485522,
+5692443, 649077, -54761, 528281, 1204202, 893890, -3228205, -918586, -535260, 580894,
+-581431, 1160178, 1454383, 869194, -940061, -2045478, 2359011, 1029718, 914828, 736587,
+682363, 290447, 55298, -924492, 983011, 585726, 382789, 293132, 1034550, 817118,
+1241246, -1319092, -878858, -1568200, -1573569, -293132, 1246614, -861141, -591095, 814970,
+274878, 638340, -265751, 230854, 2898566, 1447941, 42950, 4161823, 11630771, 13954886,
+-3699041, -200790, 2812667, -1971927, 8861591, 8868571, -5606543, 8697846, 6642167, 2720862,
+3813394, 3620658, 1692754, -625455, 532576, 1279900, -4821638, -5660230, 1430224, -1490354,
+-158914, 1132798, -5202279, 5296232, 10282689, -189515, -6302865, 10271951, 1151051, 447213,
+3899830, -1642825, -3118683, 1613297, -3889630, 1661079, 10275709, 4575751, -150861, 3842385,
+5553393, 14752139, -2461553, 6447283, -1325534, -6208375, 4104915, 523449, -2180770, 3018825,
+8890582, 2444910, 1526324, 14496, 3522947, 13079249, 5735929, 1763621, 1250909, 3551938,
+-3789235, 6764574, -1764695, -12652437, 1503239, -1224603, 7657927, 9232569, 3877282, -3734474,
+-3580929, -3163780, -506806, 2975876, 216359, 2063732, 1256815, 2156611, 5746130, 2656437,
+-4640176, -1844152, 593242, 1752347, 252866, 35970, 131533, -2371359, 2627983, 780073,
+501974, 440771, 502511, 397821, 1960116, -662499, 1420024, -1304060, -464930, -2145873,
+428423, -730144, -158914, 287226, 929324, -15742666, -1642825, -6752226, -7714298, -2199023,
+-5472325, 139050, 4903779, -7465727, 7703024, -16360067, 2406256, -4937602, -8550206, -11741904,
+12208981, 5911486, 871342, -10423886, -6637872, 3700651, -13270375, -9481140, 3255048, 2692945,
+13648332, -1906966, 1209570, 9904731, -5901822, 9724343, 3463354, 3467112, -1851131, -6099928,
+-624381, 8067559, -4365298, 542777, 10394358, -3928285, -2978560, -5157719, -6068789, -5465883,
+-3912715, -8504572, -957778, 2338610, -2796024, 1665374, -2672544, -4439386, 5862094, -7619272,
+4583267, -6504728, -7922604, 208843, 6619619, 246961, -1923072, 2422362, -5270462, -2868501,
+-7406671, -13482976, -6231461, 1701344, -3981435, 14994268, 6088653, -10795937, -5297842, -1770063,
+-3778498, 4677220, 10340671, 6564321, -4943508, 4560182, -5871221, 3349001, 572841, 4567698,
+-5196911, -1453846, 501437, -2520072, -4430259, -3955128, 729071, -464930, -1005559, 2121714,
+932008, 139586, -1446330, 1174674, -260919, -1379758, -3220689, -306016, -1642288, 49392,
+1474784, -1308354, -3587908, -660351, -1509144, -6090264, -842887, -1889249, 16748762, 11166915,
+11409581, -3229816, -16617765, -1168231, -8597451, 2251637, 3473555, 8986145, -4330401, 4016331,
+-6939594, 1287953, -6142877, -15156940, -8428873, 5982353, -5763309, -11984569, -11578158, -10462003,
+-16729434, 2188823, -5980205, -12463458, -11518565, 2118493, 15743203, -2000918, -2844879, -5198521,
+-9845676, 2121177, -4030827, 1184337, -12236899, 894964, -12738873, 1877438, -1207423, 6869800,
+5040144, 5738613, 2700461, -352187, 4476430, -2958159, 8985072, 2700998, 4457639, 2905546,
+-3182034, 3386045, 9055939, -1086090, 4978941, -1192927, 14347875, 1990181, 5279052, 828392,
+-8325794, -6116034, 108448, -2770791, 1700807, -1992328, 4638028, 4408784, 5420249, -2457795,
+3016678, -11031623, 5756867, 16409996, -8032126, -1540820, 4159139, -9270687, -813359, 5983963,
+-3854196, -469762, -2119030, 5218386, -5408438, -1136556, 1253057, -2815351, 1253594, -904628,
+1990181, -2598455, -2868501, 3119757, -1520418, -2866891, 1942936, -1066763, -97711, -4097399,
+3054259, 1184337, -857383, -590558, 1672890, 756988, 1618129, 1399086, 160524, -1699196,
+-3334505, -825707, 1726577, -8201777, -23663660, -3953518, -8244727, -12499965, 6735583, -23829552,
+-3066607, -8499740, -4590783, 6834367, -7558069, 10027138, 8694624, 1343788, 7841000, 653372,
+4151623, -6243809, -10933376, -12094628, -6731288, -11089069, 8621610, 11237782, -475131, -5989869,
+3265786, 3205656, -4147328, 781684, -18813030, -10001905, 8757438, -4848481, 258235, 8536784,
+-812823, 5260261, 4547834, -2503429, 5202816, -115964, -10032507, 11113228, -7853348, 481036,
+614717, -6221260, 4102231, 6600291, -3930969, 7548405, 852551, -654983, -6959458, 8533563,
+-52076, -7027640, -2310693, -14015552, -5856188, -8031052, -1012002, 9526774, 2765422, -980326,
+155693, -9097278, 2026688, 6874632, -9112310, 452582, 13942538, -5813238, 1364189, 984084,
+-9919764, -6038724, 6340446, 5239860, -16138876, 3175055, 12061342, -136902, 1435593, -6442,
+2903935, -1000191, 7611756, -1824824, -321049, 893890, 1458141, -3537443, 871342, 2599529,
+822486, 4441533, 1658394, -183073, -1668058, -3653407, -1035624, 1605244, -2213519, 1511829,
+-2269890, -156766, 3131031, 1591822, -2216740, -3093450, 150861, 6442, 6669011, -2789581,
+540629, 3555696, 1471026, 3506841, 42270532, 9308268, -5456756, -8546985, -751619, -2759517,
+7545184, -1750199, 6386080, 11881490, -4765803, 517544, -7860327, -5507759, 2601677, -1393180,
+6204081, -11916387, -6880538, 5495948, 11905112, 7737921, -320512, 2719251, -2859911, -7213935,
+5193153, 9175661, 9759776, 11635603, -9673340, -2393371, -5533529, -12140262, -1486059, 532039,
+-2604898, 5442798, 7339562, -112206, 3638374, -2258079, -12770012, -7063611, -17090748, -17469780,
+-5042829, 5722507, -2514167, -7792682, 14586246, 5408975, -569620, -13754096, -601832, -4305168,
+-9744744, 23085, -4448513, -6426345, -13504451, -1833414, -4977867, -14968498, 13422, 11276437,
+-7627862, -3724811, 4216048, -6495065, 2558190, -6436546, 9277666, -3064459, -8941048, -13997835,
+-22817014, 4413616, 3869229, 17353278, 7033546, 5950141, -74625, 5206037, -4097936, 5523328,
+-510027, 1890859, 2801393, 6569153, 3054796, 183610, -1211718, -415001, 2643552, 1563905,
+6922414, 5345624, 3636227, 1100049, -1403917, -3736622, 2000381, 4407174, 404801, 207769,
+-838592, -3312494, -554588, -556735, -1548336, -1227824, -2494839, 2006824, 3055332, -2934000,
+-2909840, -235686, -379031, 1527935, 9427453, -33365454, -19110994, 17790292, -4665408, 1208496,
+-9241696, 7803419, -3224447, -12825846, 6146635, 17991082, 2250026, -15598784, 4376572, -3334505,
+-3630321, 10396505, 10655814, -1359894, -2216740, 22643604, 5003637, -3156801, -13900125, 6228777,
+-19918448, -16273631, -15113990, 6212134, -2882460, -1522566, 12933220, 5266704, -13190918, -10903311,
+2840584, 12902619, 4361540, -1358820, 707596, 8639327, -6185827, -13798119, 18128520, -5223754,
+1868848, 7436199, 1118839, 2626373, 18648212, 438624, 11876121, 652835, -12512850, 1928440,
+2663954, -2472291, 2378338, 8613557, -6328098, -1796907, 2167348, -24592982, 6554120, 5179731,
+-144955, 6058588, 4620848, -9042517, 4347581, 34076808, 14593762, 8518531, 2463164, 8377871,
+-26096758, -12237436, 13212930, 664109, -114890, -9877351, 8834211, 10823318, 8955544, 1632088,
+1886028, -3440806, 155156, -6065568, -2243047, 5048197, -1091459, -2983929, 2564096, 348966,
+2462090, -3470871, -1517197, 1366873, -641561, 2627446, -4312147, -1343788, 3104188, -3302293,
+2514703, 1060857, 341987, 251792, 50466, -2644089, 1421097, 2744484, -1277216, -1144072,
+-2980707, 1475858, -162672, -22269942, 15607374, 16975858, 5301601, 9422621, -6357089, 27016954,
+-3290482, 10385768, 6886443, -12272869, -5214091, -5595269, 15497316, -9163850, -3017215, 9968082,
+8153996, -9006010, -2600066, -26275000, 4814659, -2803540, -7872675, 2408403, 593779, 2071785,
+2306934, 9060234, 244813, 9912248, 1044751, 4893042, -2650532, -8386461, -9190693, 17177722,
+-6198175, -12235288, -10520522, -4596689, -5843303, 7518341, 4469451, 5816460, 7421704, 2377801,
+-9472550, 5473399, -15370614, -4876399, -13447006, 9280351, -16205448, -11429445, -3538516, -5304285,
+4677757, 10929081, -8722542, 10323491, 16686485, 8458401, 16069620, -6684043, 21614422, 2099165,
+18292266, 10555419, 2164664, -9711995, -24832428, -16577500, -13699872, -7596187, -7736847, -2309082,
+-11633993, 8783208, 14315126, -5444408, -11207717, -9987946, -8126078, -14916958, 9334038, 6961605,
+-4128537, -3759707, -5972152, 886911, -3442953, 8216810, -114354, 2193118, -4456029, -3590593,
+-6226629, -1005022, -7431904, -6887517, 7040525, -389231, 738198, 295816, 2492692, -2747169,
+-411243, -4186519, 3758, 142808, -329102, 2333241, 93416, -3405372, -2455648, -2411087,
+565862, -3668439, -4264366, -5088463, 1265405, -1293322, 12483859, 6360847, -7101729, 21014202,
+2376191, -20516522, 25617332, 1713692, -10912438, 9037148, -21041582, -4032438, -13397614, -4188667,
+-2374580, -4117263, -9578851, 2675765, -18182208, -7039452, -6558952, -24539832, 2975876, -17800492,
+-12650289, -19969988, 4000225, -15071577, -4551055, -5003100, 157840, 7577396, -6126234, 10671920,
+547071, 14164802, -3308736, 12317429, 15537044, -18673444, -285615, 4984310, 11404212, 424665,
+13713294, 4572530, 13222057, -301185, -10114648, -6380174, -979253, 8535174, -1978369, -3965329,
+-867047, 15825881, 10001905, -3800509, -13075491, 4348118, 7170448, 5070746, 14050449, -18864570,
+-13938243, -4016331, 1318555, -5340255, 142271, -5446019, -11782169, 32991792, -16325708, -18979998,
+14126684, 8095477, 12271795, 3719979, 4506495, 2491081, 7171522, -6838125, 18967650, -3373160,
+4646618, -3725347, 2532420, 1079647, -1047435, 12036646, 1508070, 995359, -11934104, 5334887,
+1777580, -1819456, -9720048, -1066226, -2015413, 182536, -3099356, 8638790, 2010045, 2356863,
+-7025493, 4712653, -3341485, 891743, 4198331, -261993, -2080375, -2344515, -6250251, 3540127,
+6382322, -3134789, -709207, -2354716, 947577, -3727495, -8409009, -2648384, -284005, -5867999,
+5970542, -629213, -811749, 1903744, -5651640, -6518150, -1808718, 2513093, -4290673, -5714454,
+16763257, 12151536, 19800336, -6670084, -4769025, -27159762, 31510028, 14279156, -41722388, -22502944,
+13506598, 18501108, 18832894, -12148852, -9664213, 22543746, 5476084, 5081483, 15811385, 12579422,
+-23029614, 6965900, 9843528, -1853815, 11010686, 1975685, -2877628, 2137820, -7437810, 38487200,
+10201084, 4903779, -971736, -4902169, -2507724, -22029424, 4286378, 6308233, -5071820, -7310035,
+-35372276, -17069810, 7503845, 6051072, -11556146, -11513734, -1527935, -17012902, 7059853, 6133214,
+-2381559, 6916508, 14053670, 566936, -656056, -4614406, -7402376, -2579128, 1322850, -26271242,
+-3412889, 6000606, 15999290, -28423556, 6346888, 9998147, -2163053, -13457206, -11960947, 21215528,
+21169894, -3230889, -13121662, -25151328, 5322538, 9884867, 5305895, 270583, -27210766, 11355894,
+24870008, -8549132, 2854006, 7648800, -10160819, -16438987, -8565775, 2335389, -5008469, -1444720,
+-7635915, -6768869, -5567888, -2529736, -2169495, 3164317, -559420, -650688, -6962142, 2731599,
+-3254512, 1349694, 83215, 2107755, 4269198, 4787815, -7788923, 2984466, -6015639, -10322417,
+-5319854, 1303523, -1009854, 4286914, -969589, 2737505, 6017786, 145492, -265214, -5426691,
+-2931852, 7794829, 4041564, -3481608, -2027225, -927713, -5054640, 12414066, -9137543, 3364570,
+-7613367, -6766184, 1189169, 8399345, 16850768, -31044024, -40450000, -28159416, -36188856, 31392990,
+-20959440, 12615930, -3539590, -25469156, 4552129, -6942815, -9450002, -33057290, -30247844, -22629108,
+-8625368, 1134945, -17508972, -5113696, 4611721, 14172855, 1112933, -8891656, 18254, -9506373,
+13622563, -17210470, 23696946, 20388210, -4915053, -6556268, -28156194, -16458315, -17136920, 2004139,
+3747896, -4640176, 22950694, 6492380, 18595060, 3614752, -2237678, -8514236, 16720308, 11515881,
+5215701, -16899086, 8968965, -28535762, -3229279, -3088082, -18954228, -3177202, 179852, 21705690,
+14370424, 346819, 10011569, -469225, -21527986, 10865730, 2972117, 17834852, -10205916, -20729660,
+12252468, -37194952, -8589398, 13062606, -5650567, -5987722, 9013526, -2498597, -7402913, 6795712,
+-3182571, -23901494, -21035140, -3548180, 9710921, 15762530, 22198538, 22247930, -9567040, -7679402,
+4294968, 8009577, 7198365, 2963528, -10032507, 8636642, 55298, -1935420, 1013075, 5321465,
+8941585, -2735894, 1409823, 8475044, -2108829, -260382, -8769786, 4228932, -2014340, -688269,
+6992744, -1484448, -3322157, 3111167, -9969156, -3723200, 9846749, 2775623, 3090766, -3619047,
+-2485176, -1561758, -7996156, -1117228, -4531728, 5864241, -17204566, 203474, 12631499, -40703404,
+-3524021, -26000658, 1832340, -19209778, 17517560, -13785234, -1189169, 3167539, 6699612, 20590610,
+7236483, -9647570, 22739168, 6786049, -38009924, 6104759, -22702124, -1828046, 4632659, -3396246,
+19152870, -5784784, 3697967, 4602058, 1930588, -12448426, 19441706, -11272142, -784368, -22593676,
+253403, 3641059, -3273839, -8048769, -10014253, -11872363, 29344290, 1012539, 15329275, -26034482,
+3199751, -469762, 9166534, 15309411, -17522392, 31481036, 45806364, -2214593, 4672388, -16026134,
+7564511, 10467372, -8517457, 2142652, 8848706, 17545478, -302795, 920197, -5206574, -15489263,
+-22818088, 11648488, -17045652, -7430294, -11072426, 4903242, 15819438, 13838921, -2493229, 5133023,
+-31068720, 20604032, -3591130, 4407174, -8937827, 20134270, -27858232, 33455110, 24676198, 27859842,
+-11034845, -760746, -27302570, -15035607, -9994389, 8971650, 7914014, -22905598, -16486232, 551903,
+-5570573, -16731045, 179315, -11604465, -13449690, -5199058, -1826435, 976568, -8819715, 1542430,
+3267396, 13753022, 12589086, -1992865, 11878806, -5810017, -14357002, -8124468, -2916283, -7404524,
+-919660, -5515275, 8442832, 2443837, 32020592, 4162360, -10769630, -3805341, 3039226, -16668768,
+-10202695, 3929358, 845572, -4335233, 1836635, -8053, -17992154, -1918240, 12324946, -8970576,
+12924630, 51155208, 14185740, 37294276, 11464341, -38196756, 15151034, 11038603, -13156559, 2942053,
+24559696, 1422708, 23493472, 21415244, -25062208, 13935021, -25072408, -16407849, -2670396, 50070728,
+14973330, -22153442, 20886962, 13966160, -27711666, -11782169, -2194192, 28156194, 3794604, -25177636,
+-14652818, -493384, -7297687, 15766288, 21990232, -7763691, 19303730, -12335683, -17420388, -286152,
+40104256, 4065187, -23523536, 13509283, -1403917, -2002529, 11001559, -26036092, -23075786, -21307870,
+15529528, -13847511, 4799089, 7052337, 23855858, 12267500, 24533926, 2960843, -1381369, 20574504,
+36887328, 22422414, -37096168, 1081258, 3271691, -5913096, 6793565, 10526428, -28715614, -3962107,
+5325760, 5244155, -34142844, -31752156, -18285286, -19165754, 33302102, 12753369, 1260573, 15148887,
+-27712740, 11641509, 7295539, 5337034, -2720325, -5950677, 22920092, 14276471, -9581535, 4292283,
+-7297687, 15477452, -4663798, 1386738, 2891587, 2569464, 11005854, -1467805, -18637474, -450435,
+3151969, 5135171, 9150428, -2238752, 557272, 7385733, -14510547, -8108899, -1607392, -25556130,
+-4255239, 7493108, -2201171, 3125126, 14525579, -1794223, -10613938, 2530273, 3304977, 9945534,
+11198053, -10752451, -7124277, -411780, -9701257, -5804649, -18331458, -21149492, 5673652, 674847,
+-9971303, -7773891, -10172093, -19220516, 14369887, -38513508, 27851252, 31336082, 8556112, 34117608,
+-34939024, -16935056, -9517111, -49957448, 28131498, 2942590, 17387102, 23087596, 22385370, 1855426,
+-775778, 22958748, -3680250, -26988500, -28215250, 17171816, -31868120, 31176094, -8965744, 6941741,
+30701500, 27875412, -14009110, 42377904, -24532854, 2880313, -25504590, 4264366, -8743480, 16779900,
+5611912, -17908404, 16167868, 24788404, 36149664, -20759188, 7710003, 22376780, -30547418, 1575179,
+-12290586, -43963824, -19010598, 11956652, -24260122, 8811662, -20366734, -310311, 29706142, -13919452,
+12578885, 34432752, 24447490, 9356049, 45526116, -70727912, -13370233, 23879482, -2734821, 14003741,
+-21963390, -38120520, 46563888, -456877, -23451058, 10265509, 29473140, 73338712, 27699854, -55071680,
+-30172682, 19071266, 20464446, 9103720, -38606924, -3127273, 8488466, -11691438, 26100516, 9581535,
+16670379, 20072530, 14891725, -9882183, 11506217, -30419106, 4442607, 16662326, -1948305, -16008954,
+9535364, -9664750, 16298327, 18267570, -7673496, -14698452, -4012573, 33495376, -5920076, -3607773,
+-12990665, 15308337, -12899397, -7675107, 9621800, -5904507, 31309774, -2090039, -7729868, 31768262,
+-2794413, 7653095, 19289772, -1160178, -1628866, 2155537, 2879776, -14490146, 6743636, 1127966,
+-21453898, 14914811, -6645925, 28001040, -15062987, 8657043, 2605435, 37443524, -32885490, -2972117,
+-15693810, -19490562, 30054034, -11652783, 39454108, -3876208, -30338576, 47305844, 68390376, -9703405,
+-21748640, -32952600, 7925289, 36361192, 7224135, -7580618, -22552874, 5454609, 5443871, -4931160,
+5699959, -3141232, -11020886, -11259794, 10573673, 15021111, -1029718, 20274394, -19321448, 41473816,
+31286152, 18085570, -1373853, 2585570, 6027450, -21751324, -19012210, -21072720, -11003706, -5662915,
+13404056, 11796665, 22602266, -10672994, -2510945, -9431748, 25703232, 50020800, -11589969, -31872952,
+-20458002, -1110786, -43212204, 33949568, -58757300, 17219060, 25186762, 25882546, -25489020, 6221260,
+26230976, -59463284, -28002650, 12492449, -6091874, -29669098, -26176752, -3168075, -13600014, 44654776,
+19284940, -15992848, -14715095, -24372866, 68266360, 14901926, 35793720, -2259153, 10647224, 13156559,
+15526844, -21938692, -2566243, 28562070, 19757924, 11973832, -9037148, -11788611, 303869, 9146133,
+13334800, 9183714, -17234630, 2857764, 502511, 4905390, 12968117, 13045963, -18042084, 8929774,
+-10986526, -13511430, 1802276, 14756971, 6191196, -8267275, 2333778, -852014, -2262374, -7000797,
+27529130, -7645042, 452582, -15857019, 4201552, -5615670, 18300856, 6193880, -3434900, -9167608,
+10593537, 8862665, -12081206, 1285269, -19918984, -7588671, 5256503, 8810589, 11940546, 315680,
+12495134, -2455648, 2433636, 6405407, -25191594, 7248294, 39902392, 820339, -12960064, 32602560,
+24004572, -7215545, -20787642, -32471026, 6532109, 62753768, 14273250, 31999654, -2442226, 2465311,
+-2155537, -7779260, 396211, 2542621, 15684147, 4701379, -11870216, 10159208, -10342281, -12150462,
+-12968117, -5906, 13051332, 2413772, 10509785, 10537165, 9159555, -9202504, -15287936, 4646081,
+-10481868, -27456116, -7672422, 5847061, -9105331, 31404800, -32369022, 26338350, -8094403, -97174,
+39766028, -6475200, -736050, 51197620, -7569343, -21237540, 4118337, -18234284, -3746822, -17227114,
+57671212, -16491064, 14154065, -14044543, -5862094, -8121783, 9836549, -14688788, -34846680, 15266998,
+-3730716, -39242580, 20704964, -10459856, 22005264, 48744656, -24249386, -756451, -2226941, -7469485,
+-26117696, -4821101, 24470576, 9499394, 15125264, -22426708, 6881612, 3762928, -21201570, -6024229,
+5068062, 10886668, 14068702, 980326, 2914672, 8851928, -1873143, -10829223, 15824270, -6269042,
+-4439386, 14023068, 2185065, -4020626, 21348672, -1519882, -1333051, 72478, 7146289, -6425808,
+10901701, -8304856, -3856881, -6574521, 5793911, -251792, -520765, 2990908, 10037339, -11698417,
+2774012, -1618129, 7270306, 2044404, -1997160, 11974369, -7075959, 6451041, -1828582, 3531537,
+1071594, 8979166, -1068910, -13750338, -186294, 65972308, 33182918, 69208568, -38788924, -9780177,
+22610318, -21328808, 16328392, 71198208, 16683264, 10512469, -18850074, -17389786, 20213726, -10492605,
+28637232, -4458176, -6665253, -8075613, -40876276, 10092636, 48962628, -25632364, 29582660, 26149908,
+-16674137, -4718559, 20343112, -32304060, 16201154, -2017024, 24526410, 8621073, -20441896, -6269579,
+-41064720, -20732880, 19182398, 14774687, 31829466, 50044960, 5268315, 1103807, -43105904, -25997438,
+-25753698, -20858508, 11243151, -17246442, -5058398, -3707631, 12868796, -32565516, -5339181, 17369922,
+8768176, 27461484, -3653944, -12649752, 26960584, -4544076, 16520055, -20430622, -12556874, -2865817,
+-6952479, 13585518, 19620484, 28103582, 7830263, 2644626, -19170050, -5034776, -9840307, 23600308,
+254477, 35189740, 6053220, 26598732, -25512642, -8776766, -177704, -252866, 18997714, -2646774,
+-9438191, -4760971, 4672925, 1695975, 4948339, 9164386, 7864085, -4440460, -5669357, 748398,
+-3345780, 7794829, 7926362, 2245731, -6602439, 682900, -8660265, -3241090, -1881733, 15369004,
+5386963, -1552094, 3923453, -9613747, -11806865, -7598334, 3777961, 8626442, -7018514, -284542,
+157303, 6542846, 3442416, -518080, 6568616, 1445793, -293668, -6021544, 3139621, 2318209,
+-2585034, 1101122, 2016487, -8922258, -17722646, -67881960, 2110977, 108304040, 98347768, 91809760,
+39410620, -39497056, -53908284, -54155780, -47757888, -88673360, -62717796, -61828200, 47894256, 72704672,
+59939488, 94730336, 79441328, 16435766, -3339337, -34368328, -65949760, -39905080, -69315944, -38170984,
+-22984518, 34897, -8981850, 17134772, 30221538, 50466404, 32288490, 53041772, 40955196, 42075112,
+3617436, -35254164, -15589658, 882616, -37835976, -50724636, -65216932, -64749316, -45383308, -6761889,
+32287416, 12309376, 46832860, 32585916, 53370336, 46923056, 51760260, 59367724, 32424856, -4908611,
+-9334038, -39297340, -31593242, -105557408, -83882320, -67791224, -52431352, 5820755, -22719304, 1173600,
+72179608, 88445728, 121742992, 76478336, 46470472, 31098248, 7633768, -46848968, -42348376, -65186868,
+-83562880, -71349608, -65961032, -31414464, 5057861, 33250564, 55479704, 54183696, 46675020, 28934658,
+31419834, 13048648, 8674760, -1823214, -25482578, -22770842, -20219096, -23164906, -11874511, -25852482,
+-17977660, 5998996, 2468533, -15163382, 8352101, 20716774, 12235288, 23682450, 37696392, 38603168,
+17457432, -24376624, -10121627, -3684545, -48795124, -52086144, -44863616, -19155554, 14295262, 21858700,
+18776524, 30779346, 35443144, 43070468, 29066728, 17439178, -6361384, -29384556, -29272886, -33239826,
+-44056700, -31784906, -17182016, 14857366, 24358908, 15302432, 9760313, 27823872, 19276350, 11260331,
+2960306, -4459787, -8688182, 659814, -10488847, -13080860, -4423817, 4080756, -7173669, -5834176,
+1503239, 5574868, 1040456, -3068754, -3556233, 4147328, 283468, -2434710, -4254165, 1362042,
+6297496, 7384660, 1348083, 6340983, 6000070, 3050501, -1664837, -1547262, -5073967, -4910758,
+-7512435, -4217658, -4878546, -1313186, 649077, 1353452, -466004, 2975876, 3819300, 5734855,
+-1509144, -677531, 1962800, 2957622, -2404645, -217433, -770947, 363998, 1316944, 4271345,
+-274878, 1339493, 771484, 955093, -2640868, -3868155, -6614250, -4076461, -5286568, -3925063,
+-4258460, 1277216, 3405372, 6363531, 6594923, 10074920, 7926362, 7090454, 2738579, 459025,
+-4954245, -6372121, -9303436, -8071854, -8845485, -5111548, -3101503, 838592, 1890323, 6354941,
+5394479, 6966437, 5550709, 5234492, 962610, 907312, -1959042, -1920387, -4365298, -2586644,
+-3185255, -829466, -1946157, 120259, -849867, 1138166, -242666, 1372242, -259846, 1190243,
+-397284, 1078574, -589484, 840740, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
1065689,
--1229434, 4410932, 5027796, 2650532, -1900523, -7579544, -6891275, 2477123, 4005594, -1500017,
-7452305, -1469953, 4458713, -5304822, -4618164, 1994476, 215285, -1401770, 1992865, 4778688,
--2063195, 634581, -2719251, -308164, 287763, 1938641, 1867237, 2437931, 441308, 1438277,
-5528160, -2154463, -2540473, -2809446, -4947803, 1399623, -1015223, 9075266, 1802813, -718870,
-749472, 5493263, -477815, -1237488, -1376537, -3273839, -561567, 4216584, -620086, 1729798,
-4330401, -1381369, -275415, -6943889, -4028679, -6335077, -1199370, -1862942, 964757, 311922,
-942745, 2216203, -1476932, 1054415, 104690, 525060, 995359, -2332167, 2210835, -776852,
--2585034, -364535, -2607045, -836982, 282394, -4150012, 1126892, 155156, 3210488, 301721,
--19327, -1923609, 461172, 3132642, 1583769, -819265, 388695, 672699, 806917, 2382633,
-325881, 119722, -545998, -394063, 280247, 64961, -209917, 1563368, 906775, 916439,
-711891, 467078, 243203, 451508, 893890, 5130876, 12100533, 4779762, 2863133, 3364033,
--7110855, -833761, 3068754, -961536, 1200443, -6485938, 6378564, 8642011, 1490354, 3861713,
--1819456, -5059472, -7841000, -8583492, -5708012, 6807523, -6423661, -4079682, -5436355, 1745904,
-4521527, 856846, 613107, 2530273, -256087, 1599875, 5572183, -779537, 4632659, -4409321,
-4226785, 2944200, 2687576, -2321430, -7206419, -1530619, 4126390, 2447058, -2014340, -237834,
-1427540, -301185, -3477313, -725313, 2948495, -1007707, 326954, -1713692, -381178, 218506,
-985158, 5093831, 2128156, -2603824, 439697, 425739, -1728724, 933082, -2517388, -289910,
-4128001, 1348620, 4631586, -3303904, -2840584, -1693828, -732829, 2363306, 5250598, -3023657,
--3799972, 4525822, -425202, -81604, 156229, 1565516, 1116692, 3804804, -1069984, 1777043,
--2317135, -2163053, 170188, 1033477, -160524, 83752, 872415, 957241, 740882, -1972464,
-2214056, -467615, 3553012, 1503239, -3976066, -3757560, -4261145, -670552, -3477313, -7337415,
--6982006, 7212861, -151934, 1518808, -47782, 4393752, -6493454, 9657771, 8582955, 444529,
-463856, 13422, 261456, -953483, 3365107, 2613488, 219043, -5496485, 2389076, -1705102,
-2649995, -765578, 5864241, -1364189, -3402151, -1544041, -912681, 2171106, -30065, 3622268,
--5808407, 3136400, 1021129, -3227131, 9158481, -1453310, -1303523, -191663, -136365, -2412161,
--772557, 4885526, 4005594, -8577050, -4039417, 4361540, 1262720, -2050847, 7470022, 273804,
-1679869, 7348689, 3041374, 5769752, 1636919, -2214593, -2989297, -5771363, -5586142, 813896,
-2983392, 7151658, 279173, -2914672, -3642132, 1245541, -60130, -1996623, 2327336, -805306,
--1828582, 1674500, 3882114, 1257352, -1937030, 1944010, 2025077, 2532420, 1630477, 129923,
-248034, -2399813, -498753, -31675, 1236951, 1038845, 1980517, 1910724, 1592359, 603980,
--149787, -9793599, -3407520, -4766877, 4450660, -3257196, 2892661, -3521336, -1449552, 8297877,
-4063039, -5514738, 2518998, 7914551, 1166084, -2779918, -5555004, -6684043, -4574140, -6720550,
-4465156, 1010391, 2460480, -1293859, -3033858, -3211562, -5910412, 303332, -176631, 1401233,
--1435593, -5385889, 95026, 5743445, -1265942, 61740, -2856153, -5735929, -8472897, -734976,
-6120866, 2216740, 652298, -2880849, 791885, -4606890, -1497333, -3467112, 450972, 777389,
--5229660, 5910949, -3320010, 7522099, 2858838, 710280, -3408594, -1800128, 1946694, -436476,
-1843078, 4036196, 834297, 1597728, -4459787, 2636036, -2234457, 6914898, 8584566, 3926674,
-5774584, 2676838, -863825, -6016713, -3866544, 491237, 4446365, 4460861, -3555696, 463856,
-4227322, -5510980, 5455146, 344134, -2771328, 1787780, -1152125, -267899, -3083250, 604517,
-899259, 530965, -2469069, 654983, -1738388, -2340220, -794032, 161061, 1053341, -1528472,
-399432, -665183, -2142115, 227633, 1808718, 744103, -1525787, 999117, -1141388, 3279745,
--7905424, 1040456, -8454106, -35433, 1292248, 787053, 3808562, 382252, 601295, 14948634,
--1878511, -6604586, -7125351, 7506529, 5026186, -5668283, 1364726, -6322192, -2713346, 206695,
-7144678, -8870718, 2578591, -352187, 1406602, -683437, 9070971, -4702453, 2552284, -1428614,
--2411624, 1371168, -444529, 2712272, -2787434, -2589329, -7691213, 1194001, -2561411, -1664837,
-598074, -2732136, 2254858, -4345970, -2590402, -7638063, -241592, -6783364, -2869575, -8065949,
-5970542, 1200443, -2481954, 5244692, -6114423, -46171, -11639361, -641561, 4006668, -333397,
-3433290, 7381975, -2610266, -1058173, 9244380, 3889630, 3561065, 5635534, -2938831, -8574365,
--920734, -5141076, 3725884, 8506183, -1547799, 2482491, 4524211, 3799972, -466541, -734976,
-1043140, 144955, -1589138, 2277943, 2045478, -3568044, 1168768, 2980171, -1518808, -1100049,
--5284958, -1241246, -2230699, -746787, -2313914, 446677, -570157, 396211, -249108, 342524,
-1349694, -1569811, 539555, -654446, -1595580, -229244, -280784, -497142, 106837, 887985,
-1484985, -1488743, 506269, -1262720, 210453, -161061, -1666447, -673236, -1275068, -252866,
--2020245, 475668, 98784, -1154273, 4301410, 4698694, 1806034, -2951716, 2145336, 1178432,
-9172440, -1453310, -1875827, -12335146, -3389266, 9158481, 9084930, 5728413, 4643397, 13066364,
-889058, -15743739, -3942780, -2675765, -3720516, 8297877, -1247688, -3102577, 9824201, 1461900,
--3940633, -1455457, 3969624, -3520263, -1287953, 1129576, -1166621, -5522254, -2398202, -316217,
--5199595, -2478196, -2137283, 3626563, -2398202, 7041599, 6983080, 613107, 6646462, 4548907,
--2883534, -1066763, -2168422, -10247792, 1229434, 2049773, -9611600, -1446330, -2663954, 3418794,
-8944269, 1296543, -8898635, 1268626, -3376918, -6105296, 4990215, -1466195, -6347425, 2870649,
-2566243, 7066295, -478352, -926102, 5330592, 6153078, 6906308, -7039452, 5032628, -933619,
--1095754, 1801202, 7450158, -365609, -1870458, 2294050, 1215476, -6271189, -728534, 8537858,
-1985886, -577673, -978716, -3893388, 2857227, -1443646, -1661079, 271120, -155693, 1964948,
--31675, -2674691, -1808181, 3557307, -343061, 1399086, -1509681, 1720134, -1228361, -997506,
--1213328, 898185, 2007897, -935766, 6285685, -16067473, 6701760, -1772748, -3632469, -3316789,
-2780991, -1543504, -9484362, -10152229, 1268089, 15788837, 4387846, -11516418, 2627983, 9363566,
--6713571, 1202591, -1669669, 5578626, -1074, 5148055, 13863081, 10057203, 6323803, -246424,
--1104880, -6402186, -6808597, 2715493, -17874044, -2841658, 8532489, 942208, -864362, -8587250,
--3016678, -372052, -346282, -4175245, -8827232, 9935870, -3391414, -2183991, -1557999, -8222178,
--9198209, -293668, -4464619, 639950, 4447439, 3367791, 3771518, -7337415, -1858110, -3604551,
--2245194, 11800960, -1196148, -5386426, 428423, 15134928, -8024073, 2546379, 11189464, 350577,
--2507187, -5610838, 3441343, 648003, 8074539, -4309463, 6841346, 5516886, 10561861, 5094368,
-7924752, 842887, -5099737, 1117765, -157303, -2962454, 4811974, 6784438, -5561983, 3709778,
-2083059, -5037997, 720481, 1809255, 1474248, 1852205, -2828236, 1655710, -3104725, -936303,
--815507, 241055, 652298, 1381369, 1791001, -336618, 2654290, -170725, -1095217, 921807,
-1788317, -560493, 1110786, -2677375, 1137630, -853625, 1772748, -1963874, 9264244, 13196287,
-8126615, 1307818, -2802466, -4997195, -10958072, -3225521, 7289633, -14999636, -6102075, 13581760,
--18846854, -3460670, 10586021, 13210246, -1332514, -13356275, 1872069, -5139465, 17830556, 7846905,
--12203613, -7920457, -1856500, -7595650, -15366319, -7751342, -6805913, -5622112, -12440910, 6218039,
-2234994, 7645042, -4723391, -2354179, -10942503, -1177358, -9492415, 935766, -6303402, 1344862,
-3346317, -14745160, -4803921, -5648956, -3879966, 3107946, 3154654, -4747550, 14498199, -997506,
--3768297, -2775623, 1416266, -3459596, -1178432, 5327370, 4607426, 5970542, 7962870, 7479149,
-613643, 4883915, -2396055, 11234561, 12099997, -6139656, -3145527, 7353521, -197569, -18391050,
-858457, -9371082, 5696737, 5732708, 10378788, -7927436, 4425964, -11098732, -1059246, 6241661,
--2681133, 9785009, -2553358, -1264331, 1990717, 581968, 1394791, -716723, 592169, 4124242,
--3092913, -857920, 4038343, -684510, 3173444, -4777078, -4085051, 2709051, -647466, 805306,
-449361, -625992, 736587, -2882997, -726386, -553514, -1216013, -1969243, -652298, 1433982,
-1808181, -151934, -1903744, -10231149, -12224014, -6091338, -11806328, -17017734, 12065100, 1119376,
-6784438, -9433896, -9672803, -13507672, -9018358, 4085588, -9892920, -9016210, 12271795, -3115999,
-652298, 2887292, 7045894, -5477157, -4028143, 1952063, -3208878, 1846836, -537945, -6077916,
--11439645, -18094160, 6043556, -13011603, -11796128, 570157, -3047279, -886374, -6601902, 2970507,
-3523484, -14755360, -235149, -3279745, -5668820, -8224863, 4735739, 945430, 14783277, 1704565,
--8156680, -559420, 1455457, 6015102, 2628520, 12985834, -1027034, -14223858, 6162205, -3051574,
-6498823, -8520678, 1944010, 4770635, -24975772, -11949136, 8960912, -808528, -2592550, 3813394,
--1175747, 15796890, -455803, 9992241, 8816494, -12868796, -14790794, 833761, -16395501, -411780,
--707596, 303332, 2507187, 10312216, -252329, -6524056, 6040872, 7754564, -7150584, 1248762,
-2454574, 7802882, -3709778, 250719, -3761855, 2624762, -94489, 1636383, 2725157, 4197257,
-4392678, -148713, -3976603, 165356, 3162707, 936303, 766115, -3762928, 539555, -3767760,
--417149, 2019708, -467615, 3677029, 2877091, -167504, 920197, 2978560, -2630131, 5260261,
-35433, -2314451, 2512556, 8653285, 35062504, -8604430, -23681376, -2064269, -10405095, 25585120,
-1889249, 14346265, 7643968, -4416837, -11390790, -5035849, -12405476, -3137474, 17100950, -19131394,
-714575, -15605227, 4143570, 1323924, 7532299, 1788317, -7602629, -12648679, -14874009, -2721936,
--14596446, -11325829, 1742683, 3389266, 10656351, -10060961, -21122650, -4388383, -7414724, 2531346,
--9999221, -6662568, 2901251, -5250061, -8486319, -564251, 780073, -4269735, 20333986, -4194573,
--3497177, 5171141, 5207111, -6074695, -2724620, 15142981, 12556337, 8334921, 15824807, 12505871,
--126165, 5235029, 8919573, -6752763, -6501507, 1859721, 6378564, 10619844, 4192962, 21554830,
-2197950, 14450954, -4268124, -8354249, -5552319, 30588758, 5260261, -3978214, -3869766, -10995116,
--10696616, -7583302, -7559143, -8807367, 3323231, 7037841, -7686918, 2394444, 7408282, 3762391,
--7119445, 1383516, 7553774, -1964948, 4084514, -3899830, -1301912, 1708323, -1533840, -901943,
--2550674, -4982699, -999654, -4519380, 2142652, 3710852, 1677185, -3780645, 4722854, 3176128,
--2993592, -3315715, -5317707, -1561221, -1655173, 1277753, -1366873, 2300492, 1491964, 377420,
--763967, 18790, -4316979, 1615982, 6535867, -30669824, -11547020, 15553150, -3797825, -15606301,
--14873472, -4849555, 16595217, 9032316, -13569949, 7575249, -18018998, -7213398, -2290291, -11621645,
--16205448, 13635447, 7274601, -14178761, -5195300, 30988190, 7009924, -13498008, -18942954, 524523,
-9948755, 1925756, 1564979, -21304112, -810675, -2214593, -15637439, -8788040, -6422050, -12148315,
--6054830, 3824132, 284005, -12834436, -13269301, 1908576, 8004746, 26307, 10794327, 18671834,
--13174275, 11664594, 8393977, 3876745, 2261837, 14136348, 4101694, 8810589, 5494874, 7964480,
--2840047, -1427540, 15611669, 25038586, 3856881, -5524939, 2786897, -3323768, -9649718, 16021839,
--7974681, -13059385, -21296596, -6987912, -24774982, 12494060, -10268193, -3989488, -1706713, -3285650,
--9091909, -1228361, 9470940, -10917270, -1275068, 5390184, -3500398, -10640781, 5165235, 1132261,
-2737505, -482110, -1597191, -3650722, -736050, -1775969, 5519570, 1777043, 1297080, 1190243,
-1586990, 321586, 2647847, 2255932, 4843650, -6994891, -1180042, 840740, 4463545, -1738925,
-3660386, -4120484, 1166084, 1308891, -1290638, -2171643, 3845070, -1665374, -686121, 2661806,
-388695, 481036, -6238977, -13614509, 11578158, 6879464, -2004676, 7671349, 5765994, 16375637,
-12691091, -26703422, -8808441, 29626684, -23325968, -6931541, -14113263, 21106544, 9455907, 9715216,
-4149475, 3076807, 8507793, 22396106, 10719165, -9889162, -143881, 726386, -576063, 8858370,
-10027675, 1199370, 5957120, 5630702, -5088463, 6933688, 4228396, 13840532, -6593312, -13328894,
--11381663, -8920647, 2698313, -1166621, 5349919, 6000606, 6100464, 12193949, -5285494, 2571612,
--5327370, -9512816, -3787624, 1010391, -10897406, 14008036, 17016660, -18418968, 6345278, -12757663,
-10489384, -2081985, 4118874, -1394791, -10129680, -2479270, 11798275, -9169755, -2754148, 2082522,
--18737868, -7181722, 4010963, -14540612, -939524, 23284092, 11646878, -1560684, -5255966, 18582712,
-4950487, 13386339, -4133369, -5991480, 19466402, -6571837, 6127845, 2593624, 2829310, -3980898,
--2850248, -3556233, -2394444, -6511171, -3954591, -4531728, 729608, 4215511, -1468342, -9145596,
--2867965, -1242856, 1114007, -257161, -2203855, 65498, 2665564, 4504347, -3493419, -78383,
--9804337, 1706713, -1151588, -1831804, 6750615, -79457, -560493, -3893925, 4162897, 1165547,
-6125160, -2015413, -268435, -3999152, -357019, -5777268, 18556406, -1540283, -4289062, -15425912,
-691490, 1438277, -4113505, -353798, -7119445, 2682744, -22095460, 20171314, -4054986, -7164006,
--13973676, -15825344, -1606318, 19247896, -3464428, 5326297, -11873437, -6886980, -3291019, -11596949,
--13953275, 12779675, -7867307, -6442451, 11370926, 11018739, -15549392, 5430450, 5934571, 13498545,
-11191074, -4070555, -9822053, -6220187, -15111842, 16682190, 11016591, 5543192, 11943767, -12309913,
-8485245, -1778117, 7784092, 8580271, -8012799, -623844, 27199492, 22767084, -17143362, 6905234,
-14151917, -10811506, 3416647, -25346750, 7663296, -13703630, 11411728, -7939784, -8702677, -6175626,
-30351998, 1758252, -8749922, 2714419, 10259066, 1369558, 6135361, -16285979, -1778653, 27231704,
--811212, -10644540, -16549583, 552440, -12226161, 7727183, 7933342, 9548249, -16898548, -17699560,
--4643397, 3033321, 5930813, 1901060, 190052, 485868, 6568079, -4300873, -1643899, -1293322,
--2755759, 3244311, 2807835, -5368172, -3629247, -8276402, 5209796, -2995203, 2341831, 3716221,
-5482526, 4334696, 1960653, 8444979, 652835, -1880659, 4133906, -6150393, 3601867, 2486786,
-1831267, 5621576, 6070400, 1180579, -691490, 3585224, 534187, -453119, -6415608, -8501888,
--1486596, -573915, -923418, -16651588, -701690, -1897839, -2915209, 5122822, -24552180, -11016054,
--13860396, 11731703, -6007586, 17339320, 10186052, 22010634, -11014444, -664646, -17293148, 14754823,
-26230440, -7995619, -21180632, 2296734, -4476430, 32670206, -8171712, -12479564, 12180527, 7058242,
-4997195, 12460774, 3982509, -40511204, -23622, -2486249, 15748571, 28881508, -27212912, 1323924,
-7947837, -12719009, -2792266, -36702108, -8528194, 19106162, -30575872, -17942226, -9494562, -11639898,
-11969537, -7104950, -10994579, 16553878, 4796942, 6207302, 16638166, 2118493, -5932961, 12219182,
-17467632, -16867948, -12925167, 26492432, 17877802, 6361921, 8179229, 6475200, -11949673, -16755741,
--169651, 510027, -3651259, 5654325, -10460930, 7610682, -14430016, 6085432, 33195802, -15226196,
--12967043, 18633178, 5140539, -5946382, 11458973, 16417512, 11837467, 14545980, 6915434, -6933688,
-5734855, -17269526, 9256728, 4294968, 4828080, -8605504, -2803003, 2183991, -969052, -1461900,
--2815351, 6093485, 11155641, -4086662, -11046656, 7249368, 12923557, 7152731, 4999879, -15130096,
-9228811, 1343251, 4931160, -2138894, -5432060, -891743, 7758859, 1066763, -1596654, -6323266,
--686658, -3537979, -2060511, -2727304, 3374234, 7821136, -4628364, 658204, 4568235, -1477469,
--962073, -3706557, 600222, -2358474, -3188476, 7044820, 2369211, 9690520, 8708046, 14256607,
--33018634, -60918744, -28118614, -4267050, 20696910, 1467268, 22822920, 21118892, -6441377, 3411815,
--5231807, -11605002, -19112604, -11110007, -13819057, -8026757, 21653614, -28272160, -4986457, -23574538,
--29272886, -5156645, -29547228, -23753854, 2809982, -6257231, -3497177, 5298916, 25751550, 1737314,
--18868866, 996432, -2363306, -5724118, -24480776, -1682017, 28919088, 2595771, -623307, 11669963,
-22428320, 15084999, 3808026, -9296994, 7723962, -7832947, -20827370, -38044284, 35921496, -4693863,
-29893510, -2663954, 236760, -10939282, -17532594, 31532576, -18174690, -14779519, -1699196, -23241678,
--21870510, 17864916, 13035226, 6767258, -2495913, 9006010, -16212965, 6044630, -13200045, -18538690,
--20232518, -15815680, -6652905, 15307263, 767725, 5361730, -9488120, 5272073, -12349642, 8603356,
-6624987, 6056441, -4187593, -743029, 7571491, -2371359, -9705015, -7384660, -9614284, -1067836,
--7167227, -1865626, -2690797, -2790118, 2494839, 853625, -3988951, 1316944, 4639639, -1588601,
--3406983, -7634305, -341987, -5347235, -979789, -1132798, -3776887, 8240969, -8338142, -7863548,
--3859028, 4210142, -7425462, -7512972, 714038, -6344741, -359167, -1427003, 3033858, -1148367,
-803159, -5211943, 1625108, -10408853, -5389110, -1904281, -21522082, 4497368, -5136781, -15904264,
--23083838, -656056, -22068078, -26506390, -4021700, -12342662, -28266254, -40101036, 4875862, -15446313,
-7691213, -3300146, 15244986, 32977296, 2051921, 3011309, -16601122, -18600430, 15460272, 7985955,
--11936788, -394600, 10193568, -23071490, -17059074, -1686848, 29009282, -25132538, 643171, 119722,
-13515188, -21543020, 22259742, 11051488, 6517613, -1055488, -8857296, -24937654, 33286, -6340983,
-9118216, -13763223, -32176822, 26239028, -19287088, -9217000, -1107565, 25657598, -19649476, 8668855,
--16102369, 9615895, -5684389, -24579560, 11740293, -31179852, -6543383, -9325448, 10927471, 24599962,
--14330158, 8769786, 25667798, -20928838, 3562139, 5608691, 6172942, 6978248, -36967856, -11674258,
--6114423, 12818330, 2977486, -619012, 6944962, -7095286, 14979235, -3271691, 3519726, -14858976,
-12509092, 2601140, -22774064, -11028939, 10901164, 12912282, -1803349, -4021163, -8859981, 12053289,
-1684164, -386547, -23740968, 3288871, -11390790, -18636400, -5397700, -4240207, -2275259, -11222213,
--13629005, 4296041, -3121368, -7344931, 3946001, -2000381, -1955821, 166967, -3668976, 664646,
-7350837, -14533096, 1367410, 1967095, -4624606, 9358734, 9263708, 9949292, 4187056, 5735392,
--6778532, 2104534, 240518, 2359011, -3162707, -556735, -342524, 3736085, -2858301, -6923488,
-5850819, 43455404, 4551055, 18290656, 50070728, -23477902, -13014288, -19696184, -7191386, 22890566,
-1617592, 28220082, 7726110, -1172526, -10484552, 21282100, -13258564, 4718559, -8829379, 8688182,
--14055817, 16169478, -7859254, -3984656, -9242233, 12386686, 8697846, -14011257, -3203509, 13045426,
-4083440, -9066139, 971200, -11609833, -37448356, 16082505, -19637664, -29064044, 17920752, 7700877,
-19374060, -2024003, -18717468, -7246147, -4958003, 10984379, 15048492, 16424492, 27850716, 27174794,
--12089259, 3546569, -28939490, 57445, -21055004, -37981468, -3649112, -31013958, 10045392, -24821152,
--16115791, -16525960, -22986664, 2027225, -5404143, 1681480, -6801081, -3173444, -1953673, -40176196,
-6433324, 5796059, 9163850, 18886044, -3561602, -32007170, 18435610, -20830592, 11936251, 11430519,
-25977572, -14354318, -12825309, -8812736, -4967130, -18714246, 7460895, 3962644, 2411624, -4705674,
-6606197, -9494025, 9429601, -1830730, 2033130, 2472291, -11282342, -356482, 4560719, 10970420,
--2854006, -7082401, 5057324, 7505992, 9774272, -6336688, 190589, 5106179, -530428, -1342714,
--3458523, -7468948, 5192616, -437550, 3367254, -4305705, -420370, 6284611, -4226785, -7042136,
--3730179, 760746, -2731062, -12145631, 19203336, -5141613, -3779571, 1353452, 3797288, -3485903,
-3655554, 4274030, -1717987, -651224, -2441152, -4014184, 31324808, 58100708, -31830540, -26038240,
--45010184, -92026120, -22582402, -9822590, 20653424, 12198781, -7822746, -17932562, 25207700, 30448634,
-2767570, -1702955, 280784, -24450712, -14184129, -17410724, -13098040, -25858924, -255551, -6710887,
--3007551, 17340394, -23983098, 19042274, 18174154, -5896990, 9391483, -1311576, -42754788, -30771294,
--16962436, -15861314, -7122667, 3114925, 16564615, 5078799, 8926553, 41076532, 37650756, 8235063,
--27896886, -14820322, -1180042, -14654965, -26461294, -66420596, -55541444, -25296284, -5934571, 2424509,
-14494978, -46180564, -26417806, 23475218, 27612882, 32822676, -30198452, -36992016, 11951283, -22696754,
-54415624, -27768038, -3131568, -16481937, -8740795, 7176354, 16088411, -8373576, -21521008, 19628000,
-19360638, -4744865, 22175990, 19367082, -43130600, 38206956, -25023016, -250719, -7388418, -26145614,
--7269769, 12667469, 9685151, -2483565, 4992900, -16110959, 310848, 7499013, 10604274, 16411070,
--12694313, 2139968, -3679713, -7283191, -17961016, -2627446, -17311940, 14759118, -2893734, -18760954,
-2820720, -21433498, -1509681, 2063195, -4983773, -9550934, 498216, 1192390, 2068027, 6345278,
--1435056, -833761, 12090333, 3466576, -12500502, -14688788, 3692598, -9939091, -20141250, -7421704,
--18968724, 5592048, 5738613, 14154065, 1994476, -15187541, -10915123, 10807211, 54783380, -18240726,
-17663590, -747861, -24378772, 3789772, -49221400, -11060615, 10596758, 998580, -28638842, 16996796,
-50210852, 35243428, -15504832, -31388158, -13352516, 3573950, 52774412, 7138773, 1369021, 247497,
-24429774, 25121264, 6604049, 19219978, 15599858, 29528438, -8341364, 3420405, 18895708, -17129940,
--26094074, 14755360, 43347496, 9438191, 21050172, 2071785, 12959527, -57863948, 10810433, -2200634,
-13179107, 56854628, 23017266, 7744900, -5532992, 25518012, -5701032, -11866458, 9112310, 15884937,
-33548526, -10704669, 20904680, 3854196, 5900212, 13222594, 17056388, -456340, -21985938, -13666586,
-5332739, 42908332, 29506426, 22866406, 24852828, 20736638, -5744519, -52968220, -37918120, -72688024,
--826244, 22259204, 42084772, 6594386, -30348238, 10165651, -18696530, 6142877, 14688251, 4446902,
--8629126, -4843650, 390305, -4034048, 11979201, -7976828, -20906290, 472446, 7306276, 9478456,
--13415330, -6146635, -25172804, 6373195, 11365020, -9717364, -8482024, 6424198, -4679904, -6233608,
--5188321, -19730542, -3920232, 20461224, 13121125, 18527416, -9611063, -20868172, -15142981, 13616657,
-11084237, -4887136, -538482, -1239635, 4204236, -5855114, 12674448, -13930190, -7453379, 991601,
-2765422, 8052527, -16781510, 3571265, -12186970, 33643552, -9374303, 7330436, -10465225, 3866008,
-338766, 3142306, -1240709, -7994008, -20573968, -9014063, 45056356, -2102387, -20656646, 4842576,
--3775813, -17294222, -13547937, 2222109, 23850490, 63986960, 29004988, 56686052, 29939144, 25029996,
-24244016, -17215840, -14037564, -16482474, 7260642, 46409804, 15155329, -39294656, 16957604, -42225436,
-21122650, -26881664, -5524402, -23631984, -24974698, -1486059, 3359201, -650688, -31275414, 40626096,
--8180302, 15091441, -39584028, 10354092, -9102646, -12511240, 20723218, -17141752, 41315436, 4576288,
--16103980, 1843615, -12096775, -17145510, 11726871, -28178744, -5851893, 34803192, -7518341, 14090177,
--1753957, -25677462, 28002650, -15269682, -57723824, 6955700, 4488241, -479426, 6522445, -8223252,
--11128260, -3478387, 26345330, -49971408, 29541858, -11961484, -6768869, 32489816, -19981262, 9390409,
-12232067, 47279536, 16702054, 20775294, -3205656, 28167470, -22513682, 22299470, 3869766, -8919036,
-6207839, 1140314, 1115081, -12478491, -2997887, 1980517, -5033165, -9389335, 19504520, 119185,
--1180579, -5896453, 6647536, -7776039, 17426292, 9807021, 9476845, 1932735, 146566, -1834488,
-14641544, -11738146, -14543296, 5493800, 7805030, -900869, 13192529, -5742908, -2325188, 462246,
--4125316, -14577119, -14105746, -1546188, 5123359, -7338489, 2808372, 4418448, 5466420, -4065724,
--6442, 9257265, -4025458, -13540421, -24250996, 39779452, 36911484, 128837208, 51993264, -70030512,
--32937030, -34240552, -53868552, 37693168, 115778360, 46476376, 22010096, -28870234, -7926362, -1789928,
--1294933, 55736328, 38149512, 24421720, 83715352, -99963216, 6622840, 52552684, -12574591, 10972031,
-54986856, 9834938, -15528991, 29815662, -55083492, -110566952, -10413685, 11131481, -42799884, -4621385,
-59557776, 10274636, 3689914, 22839026, -46672336, -95190432, -87005296, -39399884, 29081760, 57043608,
-125942936, 31885300, -15817828, -15492484, -33801928, -74854840, -22569516, 55337968, 55642912, 58409944,
-56922276, 35897872, 29797946, 8899709, 13211856, -47943648, -29352880, 7558606, 13852880, 25149182,
-30700426, 75093744, 19917374, 43878996, -28251222, -27827630, -50319300, -10608569, -38385732, -8828842,
-78288128, 100456064, 2567317, -3612604, -61887256, -71380208, -40036612, -16617765, 40329744, 21715892,
--3935801, 15300284, -5082557, -9789304, -18341658, -17297444, -1921461, 5022428, 4160750, 22493280,
--1113470, 42950, -10758356, 907849, -13500156, -4167192, 559956, -20095616, -8768713, 999117,
--5093295, -882079, 12641699, 11317239, 25805238, -10518375, -3981435, -24958054, -20084878, -15082315,
-26768384, 17208860, 8853001, 9331890, -7428146, -22049288, -17620640, 1497870, -12192875, 22908818,
-33711200, -528281, -7171522, -22667226, -7802345, -92177512, -56281788, 32668058, 86888800, 100357280,
-210000816, 127497176, 87159920, 76317808, 60034516, -10698227, -90412816, -99729144, -192505264, -205443312,
--194047696, -124608816, -42981884, 42912092, 75094816, 124100936, 122654600, 85487032, 85157928, 108008760,
-104366632, 92957048, 59581932, 40830108, 36735928, -3994857, -5866389, -120255864, -85031224, -107628120,
--129500240, -54943368, -126447056, -102744744, -186508960, -163917968, -115524960, -77787224, -11062225, 96962648,
-118286080, 98985576, 106548472, 97919352, 182476512, 236658064, 212241712, 209745264, 185847536, 178668496,
-133554696, 132726304, 29045254, -90016608, -186213136, -178899888, -266694928, -223225024, -324016096, -386887968,
--343030432, -326582880, -195870912, -137057776, 25600690, 64553360, 153186448, 226628240, 350367328, 302690496,
-437952448, 377502944, 271227712, 265872976, 121760712, 8508867, -23691576, -95106144, -164907952, -198085504,
--235736256, -205097040, -184948272, -179319712, -144844016, -150151520, -122494616, -108622408, -32347546, -23364086,
-30482994, 69508680, 80850072, 104324216, 149424592, 179727744, 192560032, 200594304, 148203760, 121882048,
-119082264, 43663176, 29694868, -67014376, -159148400, -213157072, -217159984, -244045408, -154161408, -176853328,
--117088864, -85226112, -22772454, 42069204, 84035328, 126450816, 132184600, 197736000, 204031344, 195104800,
-166320992, 148402928, 59906204, 14995878, -36223756, -84079888, -159335776, -188798176, -155959920, -106448616,
--93170192, -65768296, -59151900, -31368830, -2874944, 8151848, 6787659, 28993176, 33787432, 51832204,
-45134736, 41385768, 39642548, 44386340, 32503238, 30578020, 35675072, 37160592, 22272090, 14761803,
-2409477, 1009317, 6252399, -2629057, -19440632, -14954002, -20917028, -26305600, -34731788, -30588220,
--25763898, -16822850, -20348482, -15826418, -13462575, -3526168, -7865159, -5773510, -2894271, 6385543,
-1772748, 6390375, 10907606, 17753784, 13412646, 17358110, 14151380, 19922206, 16814796, 13439490,
-4458176, 6264210, 2451353, 2217277, -5274757, -3982509, -5122822, -1787780, -6752763, -3617436,
--6681359, -4328790, -5618354, 1537598, -1545115, -2152852, -6394133, -3369402, -5775121, -3454764,
--9378598, -6380174, -5711770, -981400, -3026341, 1549410, 632434, 4584341, 2607045, 7270306,
-5428839, 7226283, 3569655, 5640366, 2413772, 5518496, 2407866, 4931696, 1526861, 3433290,
--510027, 1289027, -2632278, -290984, -3603478, -694174, -3555696, -360240, -2972117, 301721,
--2369748, 894427, -1761474, 1389959, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-1229434, 4410932, 5027796, 2650532, -1900523, -7579544, -6891275, 2477123, 4005594, -1500017,
+7452305, -1469953, 4458713, -5304822, -4618164, 1994476, 215285, -1401770, 1992865, 4778688,
+-2063195, 634581, -2719251, -308164, 287763, 1938641, 1867237, 2437931, 441308, 1438277,
+5528160, -2154463, -2540473, -2809446, -4947803, 1399623, -1015223, 9075266, 1802813, -718870,
+749472, 5493263, -477815, -1237488, -1376537, -3273839, -561567, 4216584, -620086, 1729798,
+4330401, -1381369, -275415, -6943889, -4028679, -6335077, -1199370, -1862942, 964757, 311922,
+942745, 2216203, -1476932, 1054415, 104690, 525060, 995359, -2332167, 2210835, -776852,
+-2585034, -364535, -2607045, -836982, 282394, -4150012, 1126892, 155156, 3210488, 301721,
+-19327, -1923609, 461172, 3132642, 1583769, -819265, 388695, 672699, 806917, 2382633,
+325881, 119722, -545998, -394063, 280247, 64961, -209917, 1563368, 906775, 916439,
+711891, 467078, 243203, 451508, 893890, 5130876, 12100533, 4779762, 2863133, 3364033,
+-7110855, -833761, 3068754, -961536, 1200443, -6485938, 6378564, 8642011, 1490354, 3861713,
+-1819456, -5059472, -7841000, -8583492, -5708012, 6807523, -6423661, -4079682, -5436355, 1745904,
+4521527, 856846, 613107, 2530273, -256087, 1599875, 5572183, -779537, 4632659, -4409321,
+4226785, 2944200, 2687576, -2321430, -7206419, -1530619, 4126390, 2447058, -2014340, -237834,
+1427540, -301185, -3477313, -725313, 2948495, -1007707, 326954, -1713692, -381178, 218506,
+985158, 5093831, 2128156, -2603824, 439697, 425739, -1728724, 933082, -2517388, -289910,
+4128001, 1348620, 4631586, -3303904, -2840584, -1693828, -732829, 2363306, 5250598, -3023657,
+-3799972, 4525822, -425202, -81604, 156229, 1565516, 1116692, 3804804, -1069984, 1777043,
+-2317135, -2163053, 170188, 1033477, -160524, 83752, 872415, 957241, 740882, -1972464,
+2214056, -467615, 3553012, 1503239, -3976066, -3757560, -4261145, -670552, -3477313, -7337415,
+-6982006, 7212861, -151934, 1518808, -47782, 4393752, -6493454, 9657771, 8582955, 444529,
+463856, 13422, 261456, -953483, 3365107, 2613488, 219043, -5496485, 2389076, -1705102,
+2649995, -765578, 5864241, -1364189, -3402151, -1544041, -912681, 2171106, -30065, 3622268,
+-5808407, 3136400, 1021129, -3227131, 9158481, -1453310, -1303523, -191663, -136365, -2412161,
+-772557, 4885526, 4005594, -8577050, -4039417, 4361540, 1262720, -2050847, 7470022, 273804,
+1679869, 7348689, 3041374, 5769752, 1636919, -2214593, -2989297, -5771363, -5586142, 813896,
+2983392, 7151658, 279173, -2914672, -3642132, 1245541, -60130, -1996623, 2327336, -805306,
+-1828582, 1674500, 3882114, 1257352, -1937030, 1944010, 2025077, 2532420, 1630477, 129923,
+248034, -2399813, -498753, -31675, 1236951, 1038845, 1980517, 1910724, 1592359, 603980,
+-149787, -9793599, -3407520, -4766877, 4450660, -3257196, 2892661, -3521336, -1449552, 8297877,
+4063039, -5514738, 2518998, 7914551, 1166084, -2779918, -5555004, -6684043, -4574140, -6720550,
+4465156, 1010391, 2460480, -1293859, -3033858, -3211562, -5910412, 303332, -176631, 1401233,
+-1435593, -5385889, 95026, 5743445, -1265942, 61740, -2856153, -5735929, -8472897, -734976,
+6120866, 2216740, 652298, -2880849, 791885, -4606890, -1497333, -3467112, 450972, 777389,
+-5229660, 5910949, -3320010, 7522099, 2858838, 710280, -3408594, -1800128, 1946694, -436476,
+1843078, 4036196, 834297, 1597728, -4459787, 2636036, -2234457, 6914898, 8584566, 3926674,
+5774584, 2676838, -863825, -6016713, -3866544, 491237, 4446365, 4460861, -3555696, 463856,
+4227322, -5510980, 5455146, 344134, -2771328, 1787780, -1152125, -267899, -3083250, 604517,
+899259, 530965, -2469069, 654983, -1738388, -2340220, -794032, 161061, 1053341, -1528472,
+399432, -665183, -2142115, 227633, 1808718, 744103, -1525787, 999117, -1141388, 3279745,
+-7905424, 1040456, -8454106, -35433, 1292248, 787053, 3808562, 382252, 601295, 14948634,
+-1878511, -6604586, -7125351, 7506529, 5026186, -5668283, 1364726, -6322192, -2713346, 206695,
+7144678, -8870718, 2578591, -352187, 1406602, -683437, 9070971, -4702453, 2552284, -1428614,
+-2411624, 1371168, -444529, 2712272, -2787434, -2589329, -7691213, 1194001, -2561411, -1664837,
+598074, -2732136, 2254858, -4345970, -2590402, -7638063, -241592, -6783364, -2869575, -8065949,
+5970542, 1200443, -2481954, 5244692, -6114423, -46171, -11639361, -641561, 4006668, -333397,
+3433290, 7381975, -2610266, -1058173, 9244380, 3889630, 3561065, 5635534, -2938831, -8574365,
+-920734, -5141076, 3725884, 8506183, -1547799, 2482491, 4524211, 3799972, -466541, -734976,
+1043140, 144955, -1589138, 2277943, 2045478, -3568044, 1168768, 2980171, -1518808, -1100049,
+-5284958, -1241246, -2230699, -746787, -2313914, 446677, -570157, 396211, -249108, 342524,
+1349694, -1569811, 539555, -654446, -1595580, -229244, -280784, -497142, 106837, 887985,
+1484985, -1488743, 506269, -1262720, 210453, -161061, -1666447, -673236, -1275068, -252866,
+-2020245, 475668, 98784, -1154273, 4301410, 4698694, 1806034, -2951716, 2145336, 1178432,
+9172440, -1453310, -1875827, -12335146, -3389266, 9158481, 9084930, 5728413, 4643397, 13066364,
+889058, -15743739, -3942780, -2675765, -3720516, 8297877, -1247688, -3102577, 9824201, 1461900,
+-3940633, -1455457, 3969624, -3520263, -1287953, 1129576, -1166621, -5522254, -2398202, -316217,
+-5199595, -2478196, -2137283, 3626563, -2398202, 7041599, 6983080, 613107, 6646462, 4548907,
+-2883534, -1066763, -2168422, -10247792, 1229434, 2049773, -9611600, -1446330, -2663954, 3418794,
+8944269, 1296543, -8898635, 1268626, -3376918, -6105296, 4990215, -1466195, -6347425, 2870649,
+2566243, 7066295, -478352, -926102, 5330592, 6153078, 6906308, -7039452, 5032628, -933619,
+-1095754, 1801202, 7450158, -365609, -1870458, 2294050, 1215476, -6271189, -728534, 8537858,
+1985886, -577673, -978716, -3893388, 2857227, -1443646, -1661079, 271120, -155693, 1964948,
+-31675, -2674691, -1808181, 3557307, -343061, 1399086, -1509681, 1720134, -1228361, -997506,
+-1213328, 898185, 2007897, -935766, 6285685, -16067473, 6701760, -1772748, -3632469, -3316789,
+2780991, -1543504, -9484362, -10152229, 1268089, 15788837, 4387846, -11516418, 2627983, 9363566,
+-6713571, 1202591, -1669669, 5578626, -1074, 5148055, 13863081, 10057203, 6323803, -246424,
+-1104880, -6402186, -6808597, 2715493, -17874044, -2841658, 8532489, 942208, -864362, -8587250,
+-3016678, -372052, -346282, -4175245, -8827232, 9935870, -3391414, -2183991, -1557999, -8222178,
+-9198209, -293668, -4464619, 639950, 4447439, 3367791, 3771518, -7337415, -1858110, -3604551,
+-2245194, 11800960, -1196148, -5386426, 428423, 15134928, -8024073, 2546379, 11189464, 350577,
+-2507187, -5610838, 3441343, 648003, 8074539, -4309463, 6841346, 5516886, 10561861, 5094368,
+7924752, 842887, -5099737, 1117765, -157303, -2962454, 4811974, 6784438, -5561983, 3709778,
+2083059, -5037997, 720481, 1809255, 1474248, 1852205, -2828236, 1655710, -3104725, -936303,
+-815507, 241055, 652298, 1381369, 1791001, -336618, 2654290, -170725, -1095217, 921807,
+1788317, -560493, 1110786, -2677375, 1137630, -853625, 1772748, -1963874, 9264244, 13196287,
+8126615, 1307818, -2802466, -4997195, -10958072, -3225521, 7289633, -14999636, -6102075, 13581760,
+-18846854, -3460670, 10586021, 13210246, -1332514, -13356275, 1872069, -5139465, 17830556, 7846905,
+-12203613, -7920457, -1856500, -7595650, -15366319, -7751342, -6805913, -5622112, -12440910, 6218039,
+2234994, 7645042, -4723391, -2354179, -10942503, -1177358, -9492415, 935766, -6303402, 1344862,
+3346317, -14745160, -4803921, -5648956, -3879966, 3107946, 3154654, -4747550, 14498199, -997506,
+-3768297, -2775623, 1416266, -3459596, -1178432, 5327370, 4607426, 5970542, 7962870, 7479149,
+613643, 4883915, -2396055, 11234561, 12099997, -6139656, -3145527, 7353521, -197569, -18391050,
+858457, -9371082, 5696737, 5732708, 10378788, -7927436, 4425964, -11098732, -1059246, 6241661,
+-2681133, 9785009, -2553358, -1264331, 1990717, 581968, 1394791, -716723, 592169, 4124242,
+-3092913, -857920, 4038343, -684510, 3173444, -4777078, -4085051, 2709051, -647466, 805306,
+449361, -625992, 736587, -2882997, -726386, -553514, -1216013, -1969243, -652298, 1433982,
+1808181, -151934, -1903744, -10231149, -12224014, -6091338, -11806328, -17017734, 12065100, 1119376,
+6784438, -9433896, -9672803, -13507672, -9018358, 4085588, -9892920, -9016210, 12271795, -3115999,
+652298, 2887292, 7045894, -5477157, -4028143, 1952063, -3208878, 1846836, -537945, -6077916,
+-11439645, -18094160, 6043556, -13011603, -11796128, 570157, -3047279, -886374, -6601902, 2970507,
+3523484, -14755360, -235149, -3279745, -5668820, -8224863, 4735739, 945430, 14783277, 1704565,
+-8156680, -559420, 1455457, 6015102, 2628520, 12985834, -1027034, -14223858, 6162205, -3051574,
+6498823, -8520678, 1944010, 4770635, -24975772, -11949136, 8960912, -808528, -2592550, 3813394,
+-1175747, 15796890, -455803, 9992241, 8816494, -12868796, -14790794, 833761, -16395501, -411780,
+-707596, 303332, 2507187, 10312216, -252329, -6524056, 6040872, 7754564, -7150584, 1248762,
+2454574, 7802882, -3709778, 250719, -3761855, 2624762, -94489, 1636383, 2725157, 4197257,
+4392678, -148713, -3976603, 165356, 3162707, 936303, 766115, -3762928, 539555, -3767760,
+-417149, 2019708, -467615, 3677029, 2877091, -167504, 920197, 2978560, -2630131, 5260261,
+35433, -2314451, 2512556, 8653285, 35062504, -8604430, -23681376, -2064269, -10405095, 25585120,
+1889249, 14346265, 7643968, -4416837, -11390790, -5035849, -12405476, -3137474, 17100950, -19131394,
+714575, -15605227, 4143570, 1323924, 7532299, 1788317, -7602629, -12648679, -14874009, -2721936,
+-14596446, -11325829, 1742683, 3389266, 10656351, -10060961, -21122650, -4388383, -7414724, 2531346,
+-9999221, -6662568, 2901251, -5250061, -8486319, -564251, 780073, -4269735, 20333986, -4194573,
+-3497177, 5171141, 5207111, -6074695, -2724620, 15142981, 12556337, 8334921, 15824807, 12505871,
+-126165, 5235029, 8919573, -6752763, -6501507, 1859721, 6378564, 10619844, 4192962, 21554830,
+2197950, 14450954, -4268124, -8354249, -5552319, 30588758, 5260261, -3978214, -3869766, -10995116,
+-10696616, -7583302, -7559143, -8807367, 3323231, 7037841, -7686918, 2394444, 7408282, 3762391,
+-7119445, 1383516, 7553774, -1964948, 4084514, -3899830, -1301912, 1708323, -1533840, -901943,
+-2550674, -4982699, -999654, -4519380, 2142652, 3710852, 1677185, -3780645, 4722854, 3176128,
+-2993592, -3315715, -5317707, -1561221, -1655173, 1277753, -1366873, 2300492, 1491964, 377420,
+-763967, 18790, -4316979, 1615982, 6535867, -30669824, -11547020, 15553150, -3797825, -15606301,
+-14873472, -4849555, 16595217, 9032316, -13569949, 7575249, -18018998, -7213398, -2290291, -11621645,
+-16205448, 13635447, 7274601, -14178761, -5195300, 30988190, 7009924, -13498008, -18942954, 524523,
+9948755, 1925756, 1564979, -21304112, -810675, -2214593, -15637439, -8788040, -6422050, -12148315,
+-6054830, 3824132, 284005, -12834436, -13269301, 1908576, 8004746, 26307, 10794327, 18671834,
+-13174275, 11664594, 8393977, 3876745, 2261837, 14136348, 4101694, 8810589, 5494874, 7964480,
+-2840047, -1427540, 15611669, 25038586, 3856881, -5524939, 2786897, -3323768, -9649718, 16021839,
+-7974681, -13059385, -21296596, -6987912, -24774982, 12494060, -10268193, -3989488, -1706713, -3285650,
+-9091909, -1228361, 9470940, -10917270, -1275068, 5390184, -3500398, -10640781, 5165235, 1132261,
+2737505, -482110, -1597191, -3650722, -736050, -1775969, 5519570, 1777043, 1297080, 1190243,
+1586990, 321586, 2647847, 2255932, 4843650, -6994891, -1180042, 840740, 4463545, -1738925,
+3660386, -4120484, 1166084, 1308891, -1290638, -2171643, 3845070, -1665374, -686121, 2661806,
+388695, 481036, -6238977, -13614509, 11578158, 6879464, -2004676, 7671349, 5765994, 16375637,
+12691091, -26703422, -8808441, 29626684, -23325968, -6931541, -14113263, 21106544, 9455907, 9715216,
+4149475, 3076807, 8507793, 22396106, 10719165, -9889162, -143881, 726386, -576063, 8858370,
+10027675, 1199370, 5957120, 5630702, -5088463, 6933688, 4228396, 13840532, -6593312, -13328894,
+-11381663, -8920647, 2698313, -1166621, 5349919, 6000606, 6100464, 12193949, -5285494, 2571612,
+-5327370, -9512816, -3787624, 1010391, -10897406, 14008036, 17016660, -18418968, 6345278, -12757663,
+10489384, -2081985, 4118874, -1394791, -10129680, -2479270, 11798275, -9169755, -2754148, 2082522,
+-18737868, -7181722, 4010963, -14540612, -939524, 23284092, 11646878, -1560684, -5255966, 18582712,
+4950487, 13386339, -4133369, -5991480, 19466402, -6571837, 6127845, 2593624, 2829310, -3980898,
+-2850248, -3556233, -2394444, -6511171, -3954591, -4531728, 729608, 4215511, -1468342, -9145596,
+-2867965, -1242856, 1114007, -257161, -2203855, 65498, 2665564, 4504347, -3493419, -78383,
+-9804337, 1706713, -1151588, -1831804, 6750615, -79457, -560493, -3893925, 4162897, 1165547,
+6125160, -2015413, -268435, -3999152, -357019, -5777268, 18556406, -1540283, -4289062, -15425912,
+691490, 1438277, -4113505, -353798, -7119445, 2682744, -22095460, 20171314, -4054986, -7164006,
+-13973676, -15825344, -1606318, 19247896, -3464428, 5326297, -11873437, -6886980, -3291019, -11596949,
+-13953275, 12779675, -7867307, -6442451, 11370926, 11018739, -15549392, 5430450, 5934571, 13498545,
+11191074, -4070555, -9822053, -6220187, -15111842, 16682190, 11016591, 5543192, 11943767, -12309913,
+8485245, -1778117, 7784092, 8580271, -8012799, -623844, 27199492, 22767084, -17143362, 6905234,
+14151917, -10811506, 3416647, -25346750, 7663296, -13703630, 11411728, -7939784, -8702677, -6175626,
+30351998, 1758252, -8749922, 2714419, 10259066, 1369558, 6135361, -16285979, -1778653, 27231704,
+-811212, -10644540, -16549583, 552440, -12226161, 7727183, 7933342, 9548249, -16898548, -17699560,
+-4643397, 3033321, 5930813, 1901060, 190052, 485868, 6568079, -4300873, -1643899, -1293322,
+-2755759, 3244311, 2807835, -5368172, -3629247, -8276402, 5209796, -2995203, 2341831, 3716221,
+5482526, 4334696, 1960653, 8444979, 652835, -1880659, 4133906, -6150393, 3601867, 2486786,
+1831267, 5621576, 6070400, 1180579, -691490, 3585224, 534187, -453119, -6415608, -8501888,
+-1486596, -573915, -923418, -16651588, -701690, -1897839, -2915209, 5122822, -24552180, -11016054,
+-13860396, 11731703, -6007586, 17339320, 10186052, 22010634, -11014444, -664646, -17293148, 14754823,
+26230440, -7995619, -21180632, 2296734, -4476430, 32670206, -8171712, -12479564, 12180527, 7058242,
+4997195, 12460774, 3982509, -40511204, -23622, -2486249, 15748571, 28881508, -27212912, 1323924,
+7947837, -12719009, -2792266, -36702108, -8528194, 19106162, -30575872, -17942226, -9494562, -11639898,
+11969537, -7104950, -10994579, 16553878, 4796942, 6207302, 16638166, 2118493, -5932961, 12219182,
+17467632, -16867948, -12925167, 26492432, 17877802, 6361921, 8179229, 6475200, -11949673, -16755741,
+-169651, 510027, -3651259, 5654325, -10460930, 7610682, -14430016, 6085432, 33195802, -15226196,
+-12967043, 18633178, 5140539, -5946382, 11458973, 16417512, 11837467, 14545980, 6915434, -6933688,
+5734855, -17269526, 9256728, 4294968, 4828080, -8605504, -2803003, 2183991, -969052, -1461900,
+-2815351, 6093485, 11155641, -4086662, -11046656, 7249368, 12923557, 7152731, 4999879, -15130096,
+9228811, 1343251, 4931160, -2138894, -5432060, -891743, 7758859, 1066763, -1596654, -6323266,
+-686658, -3537979, -2060511, -2727304, 3374234, 7821136, -4628364, 658204, 4568235, -1477469,
+-962073, -3706557, 600222, -2358474, -3188476, 7044820, 2369211, 9690520, 8708046, 14256607,
+-33018634, -60918744, -28118614, -4267050, 20696910, 1467268, 22822920, 21118892, -6441377, 3411815,
+-5231807, -11605002, -19112604, -11110007, -13819057, -8026757, 21653614, -28272160, -4986457, -23574538,
+-29272886, -5156645, -29547228, -23753854, 2809982, -6257231, -3497177, 5298916, 25751550, 1737314,
+-18868866, 996432, -2363306, -5724118, -24480776, -1682017, 28919088, 2595771, -623307, 11669963,
+22428320, 15084999, 3808026, -9296994, 7723962, -7832947, -20827370, -38044284, 35921496, -4693863,
+29893510, -2663954, 236760, -10939282, -17532594, 31532576, -18174690, -14779519, -1699196, -23241678,
+-21870510, 17864916, 13035226, 6767258, -2495913, 9006010, -16212965, 6044630, -13200045, -18538690,
+-20232518, -15815680, -6652905, 15307263, 767725, 5361730, -9488120, 5272073, -12349642, 8603356,
+6624987, 6056441, -4187593, -743029, 7571491, -2371359, -9705015, -7384660, -9614284, -1067836,
+-7167227, -1865626, -2690797, -2790118, 2494839, 853625, -3988951, 1316944, 4639639, -1588601,
+-3406983, -7634305, -341987, -5347235, -979789, -1132798, -3776887, 8240969, -8338142, -7863548,
+-3859028, 4210142, -7425462, -7512972, 714038, -6344741, -359167, -1427003, 3033858, -1148367,
+803159, -5211943, 1625108, -10408853, -5389110, -1904281, -21522082, 4497368, -5136781, -15904264,
+-23083838, -656056, -22068078, -26506390, -4021700, -12342662, -28266254, -40101036, 4875862, -15446313,
+7691213, -3300146, 15244986, 32977296, 2051921, 3011309, -16601122, -18600430, 15460272, 7985955,
+-11936788, -394600, 10193568, -23071490, -17059074, -1686848, 29009282, -25132538, 643171, 119722,
+13515188, -21543020, 22259742, 11051488, 6517613, -1055488, -8857296, -24937654, 33286, -6340983,
+9118216, -13763223, -32176822, 26239028, -19287088, -9217000, -1107565, 25657598, -19649476, 8668855,
+-16102369, 9615895, -5684389, -24579560, 11740293, -31179852, -6543383, -9325448, 10927471, 24599962,
+-14330158, 8769786, 25667798, -20928838, 3562139, 5608691, 6172942, 6978248, -36967856, -11674258,
+-6114423, 12818330, 2977486, -619012, 6944962, -7095286, 14979235, -3271691, 3519726, -14858976,
+12509092, 2601140, -22774064, -11028939, 10901164, 12912282, -1803349, -4021163, -8859981, 12053289,
+1684164, -386547, -23740968, 3288871, -11390790, -18636400, -5397700, -4240207, -2275259, -11222213,
+-13629005, 4296041, -3121368, -7344931, 3946001, -2000381, -1955821, 166967, -3668976, 664646,
+7350837, -14533096, 1367410, 1967095, -4624606, 9358734, 9263708, 9949292, 4187056, 5735392,
+-6778532, 2104534, 240518, 2359011, -3162707, -556735, -342524, 3736085, -2858301, -6923488,
+5850819, 43455404, 4551055, 18290656, 50070728, -23477902, -13014288, -19696184, -7191386, 22890566,
+1617592, 28220082, 7726110, -1172526, -10484552, 21282100, -13258564, 4718559, -8829379, 8688182,
+-14055817, 16169478, -7859254, -3984656, -9242233, 12386686, 8697846, -14011257, -3203509, 13045426,
+4083440, -9066139, 971200, -11609833, -37448356, 16082505, -19637664, -29064044, 17920752, 7700877,
+19374060, -2024003, -18717468, -7246147, -4958003, 10984379, 15048492, 16424492, 27850716, 27174794,
+-12089259, 3546569, -28939490, 57445, -21055004, -37981468, -3649112, -31013958, 10045392, -24821152,
+-16115791, -16525960, -22986664, 2027225, -5404143, 1681480, -6801081, -3173444, -1953673, -40176196,
+6433324, 5796059, 9163850, 18886044, -3561602, -32007170, 18435610, -20830592, 11936251, 11430519,
+25977572, -14354318, -12825309, -8812736, -4967130, -18714246, 7460895, 3962644, 2411624, -4705674,
+6606197, -9494025, 9429601, -1830730, 2033130, 2472291, -11282342, -356482, 4560719, 10970420,
+-2854006, -7082401, 5057324, 7505992, 9774272, -6336688, 190589, 5106179, -530428, -1342714,
+-3458523, -7468948, 5192616, -437550, 3367254, -4305705, -420370, 6284611, -4226785, -7042136,
+-3730179, 760746, -2731062, -12145631, 19203336, -5141613, -3779571, 1353452, 3797288, -3485903,
+3655554, 4274030, -1717987, -651224, -2441152, -4014184, 31324808, 58100708, -31830540, -26038240,
+-45010184, -92026120, -22582402, -9822590, 20653424, 12198781, -7822746, -17932562, 25207700, 30448634,
+2767570, -1702955, 280784, -24450712, -14184129, -17410724, -13098040, -25858924, -255551, -6710887,
+-3007551, 17340394, -23983098, 19042274, 18174154, -5896990, 9391483, -1311576, -42754788, -30771294,
+-16962436, -15861314, -7122667, 3114925, 16564615, 5078799, 8926553, 41076532, 37650756, 8235063,
+-27896886, -14820322, -1180042, -14654965, -26461294, -66420596, -55541444, -25296284, -5934571, 2424509,
+14494978, -46180564, -26417806, 23475218, 27612882, 32822676, -30198452, -36992016, 11951283, -22696754,
+54415624, -27768038, -3131568, -16481937, -8740795, 7176354, 16088411, -8373576, -21521008, 19628000,
+19360638, -4744865, 22175990, 19367082, -43130600, 38206956, -25023016, -250719, -7388418, -26145614,
+-7269769, 12667469, 9685151, -2483565, 4992900, -16110959, 310848, 7499013, 10604274, 16411070,
+-12694313, 2139968, -3679713, -7283191, -17961016, -2627446, -17311940, 14759118, -2893734, -18760954,
+2820720, -21433498, -1509681, 2063195, -4983773, -9550934, 498216, 1192390, 2068027, 6345278,
+-1435056, -833761, 12090333, 3466576, -12500502, -14688788, 3692598, -9939091, -20141250, -7421704,
+-18968724, 5592048, 5738613, 14154065, 1994476, -15187541, -10915123, 10807211, 54783380, -18240726,
+17663590, -747861, -24378772, 3789772, -49221400, -11060615, 10596758, 998580, -28638842, 16996796,
+50210852, 35243428, -15504832, -31388158, -13352516, 3573950, 52774412, 7138773, 1369021, 247497,
+24429774, 25121264, 6604049, 19219978, 15599858, 29528438, -8341364, 3420405, 18895708, -17129940,
+-26094074, 14755360, 43347496, 9438191, 21050172, 2071785, 12959527, -57863948, 10810433, -2200634,
+13179107, 56854628, 23017266, 7744900, -5532992, 25518012, -5701032, -11866458, 9112310, 15884937,
+33548526, -10704669, 20904680, 3854196, 5900212, 13222594, 17056388, -456340, -21985938, -13666586,
+5332739, 42908332, 29506426, 22866406, 24852828, 20736638, -5744519, -52968220, -37918120, -72688024,
+-826244, 22259204, 42084772, 6594386, -30348238, 10165651, -18696530, 6142877, 14688251, 4446902,
+-8629126, -4843650, 390305, -4034048, 11979201, -7976828, -20906290, 472446, 7306276, 9478456,
+-13415330, -6146635, -25172804, 6373195, 11365020, -9717364, -8482024, 6424198, -4679904, -6233608,
+-5188321, -19730542, -3920232, 20461224, 13121125, 18527416, -9611063, -20868172, -15142981, 13616657,
+11084237, -4887136, -538482, -1239635, 4204236, -5855114, 12674448, -13930190, -7453379, 991601,
+2765422, 8052527, -16781510, 3571265, -12186970, 33643552, -9374303, 7330436, -10465225, 3866008,
+338766, 3142306, -1240709, -7994008, -20573968, -9014063, 45056356, -2102387, -20656646, 4842576,
+-3775813, -17294222, -13547937, 2222109, 23850490, 63986960, 29004988, 56686052, 29939144, 25029996,
+24244016, -17215840, -14037564, -16482474, 7260642, 46409804, 15155329, -39294656, 16957604, -42225436,
+21122650, -26881664, -5524402, -23631984, -24974698, -1486059, 3359201, -650688, -31275414, 40626096,
+-8180302, 15091441, -39584028, 10354092, -9102646, -12511240, 20723218, -17141752, 41315436, 4576288,
+-16103980, 1843615, -12096775, -17145510, 11726871, -28178744, -5851893, 34803192, -7518341, 14090177,
+-1753957, -25677462, 28002650, -15269682, -57723824, 6955700, 4488241, -479426, 6522445, -8223252,
+-11128260, -3478387, 26345330, -49971408, 29541858, -11961484, -6768869, 32489816, -19981262, 9390409,
+12232067, 47279536, 16702054, 20775294, -3205656, 28167470, -22513682, 22299470, 3869766, -8919036,
+6207839, 1140314, 1115081, -12478491, -2997887, 1980517, -5033165, -9389335, 19504520, 119185,
+-1180579, -5896453, 6647536, -7776039, 17426292, 9807021, 9476845, 1932735, 146566, -1834488,
+14641544, -11738146, -14543296, 5493800, 7805030, -900869, 13192529, -5742908, -2325188, 462246,
+-4125316, -14577119, -14105746, -1546188, 5123359, -7338489, 2808372, 4418448, 5466420, -4065724,
+-6442, 9257265, -4025458, -13540421, -24250996, 39779452, 36911484, 128837208, 51993264, -70030512,
+-32937030, -34240552, -53868552, 37693168, 115778360, 46476376, 22010096, -28870234, -7926362, -1789928,
+-1294933, 55736328, 38149512, 24421720, 83715352, -99963216, 6622840, 52552684, -12574591, 10972031,
+54986856, 9834938, -15528991, 29815662, -55083492, -110566952, -10413685, 11131481, -42799884, -4621385,
+59557776, 10274636, 3689914, 22839026, -46672336, -95190432, -87005296, -39399884, 29081760, 57043608,
+125942936, 31885300, -15817828, -15492484, -33801928, -74854840, -22569516, 55337968, 55642912, 58409944,
+56922276, 35897872, 29797946, 8899709, 13211856, -47943648, -29352880, 7558606, 13852880, 25149182,
+30700426, 75093744, 19917374, 43878996, -28251222, -27827630, -50319300, -10608569, -38385732, -8828842,
+78288128, 100456064, 2567317, -3612604, -61887256, -71380208, -40036612, -16617765, 40329744, 21715892,
+-3935801, 15300284, -5082557, -9789304, -18341658, -17297444, -1921461, 5022428, 4160750, 22493280,
+-1113470, 42950, -10758356, 907849, -13500156, -4167192, 559956, -20095616, -8768713, 999117,
+-5093295, -882079, 12641699, 11317239, 25805238, -10518375, -3981435, -24958054, -20084878, -15082315,
+26768384, 17208860, 8853001, 9331890, -7428146, -22049288, -17620640, 1497870, -12192875, 22908818,
+33711200, -528281, -7171522, -22667226, -7802345, -92177512, -56281788, 32668058, 86888800, 100357280,
+210000816, 127497176, 87159920, 76317808, 60034516, -10698227, -90412816, -99729144, -192505264, -205443312,
+-194047696, -124608816, -42981884, 42912092, 75094816, 124100936, 122654600, 85487032, 85157928, 108008760,
+104366632, 92957048, 59581932, 40830108, 36735928, -3994857, -5866389, -120255864, -85031224, -107628120,
+-129500240, -54943368, -126447056, -102744744, -186508960, -163917968, -115524960, -77787224, -11062225, 96962648,
+118286080, 98985576, 106548472, 97919352, 182476512, 236658064, 212241712, 209745264, 185847536, 178668496,
+133554696, 132726304, 29045254, -90016608, -186213136, -178899888, -266694928, -223225024, -324016096, -386887968,
+-343030432, -326582880, -195870912, -137057776, 25600690, 64553360, 153186448, 226628240, 350367328, 302690496,
+437952448, 377502944, 271227712, 265872976, 121760712, 8508867, -23691576, -95106144, -164907952, -198085504,
+-235736256, -205097040, -184948272, -179319712, -144844016, -150151520, -122494616, -108622408, -32347546, -23364086,
+30482994, 69508680, 80850072, 104324216, 149424592, 179727744, 192560032, 200594304, 148203760, 121882048,
+119082264, 43663176, 29694868, -67014376, -159148400, -213157072, -217159984, -244045408, -154161408, -176853328,
+-117088864, -85226112, -22772454, 42069204, 84035328, 126450816, 132184600, 197736000, 204031344, 195104800,
+166320992, 148402928, 59906204, 14995878, -36223756, -84079888, -159335776, -188798176, -155959920, -106448616,
+-93170192, -65768296, -59151900, -31368830, -2874944, 8151848, 6787659, 28993176, 33787432, 51832204,
+45134736, 41385768, 39642548, 44386340, 32503238, 30578020, 35675072, 37160592, 22272090, 14761803,
+2409477, 1009317, 6252399, -2629057, -19440632, -14954002, -20917028, -26305600, -34731788, -30588220,
+-25763898, -16822850, -20348482, -15826418, -13462575, -3526168, -7865159, -5773510, -2894271, 6385543,
+1772748, 6390375, 10907606, 17753784, 13412646, 17358110, 14151380, 19922206, 16814796, 13439490,
+4458176, 6264210, 2451353, 2217277, -5274757, -3982509, -5122822, -1787780, -6752763, -3617436,
+-6681359, -4328790, -5618354, 1537598, -1545115, -2152852, -6394133, -3369402, -5775121, -3454764,
+-9378598, -6380174, -5711770, -981400, -3026341, 1549410, 632434, 4584341, 2607045, 7270306,
+5428839, 7226283, 3569655, 5640366, 2413772, 5518496, 2407866, 4931696, 1526861, 3433290,
+-510027, 1289027, -2632278, -290984, -3603478, -694174, -3555696, -360240, -2972117, 301721,
+-2369748, 894427, -1761474, 1389959, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-5146982,
--13877039, -1143535, -2240899, -1867774, 176631, -2287070, 833761, 1379758, 5645735, -1895691,
--259846, -5215701, 353261, 5281736, 332860, 3821984, -1156957, 1613834, -2233920, -3289945,
-75162, 3631395, -501437, -4517232, -224949, 4400194, 1392106, -1868311, -1605244, -195958,
--642635, -1015760, 12885, -733903, -1549946, -185220, 860067, 620086, -241592, -3446175,
-5090073, 6995965, 183073, 817118, -2867428, -1603097, 512175, -3650185, -4093641, 2421288,
--3333968, 2391760, 3058554, 3087008, 1115618, -470836, 793495, 641561, 2289218, -5029944,
-390842, -654983, -3700651, -4955856, 102005, 2463701, -1927904, -271120, -617938, -359167,
-3445101, 1718524, 424128, 1353989, -1181653, -4085588, 1539209, 645856, 3444027, -4202089,
--3216931, 2346663, -1917703, -889595, -3163244, 688805, -1877438, -1721208, -2147, -1385127,
--1531156, 387621, -849867, -398358, -1738388, 1021665, -257698, 74088, -499827, 828392,
--210453, 250182, -351650, -294205, -30602, -581431, -79994, -12768401, -2916283, 4861903,
--682363, -3982509, 1676648, -9486509, -3616363, -1436130, -1690070, -4940823, -5133560, 2710124,
-4281009, 3600256, -4800700, -7156490, 811749, -4219269, -7556458, 1662152, -471910, 2072322,
-8513699, -2869575, -888521, -5440650, 7357816, 498216, 3675955, 2462627, 6042482, 2998424,
-1875290, -6056978, -669478, -5574868, -1508070, 170188, -2301566, 1779190, 1573032, -2674154,
--5098663, 3184182, 5338108, 1428077, -2524367, -4016331, -2434710, 1192927, -4427038, -5697274,
--1585380, 2713346, -1537061, 1301912, 3554622, 2163053, -2608119, 5056787, 479963, 4296578,
--3636764, -3151432, -1760937, -2222109, 3073586, -1786706, 207769, 5106179, 1869385, 59056,
--4871030, 1264331, -1924682, 3561065, 5306432, -979789, 469225, -2478196, 2033667, 4573067,
--1611687, 2823941, 1350767, 545998, 2428804, 883153, 157303, 1839320, 765041, -221191,
-54224, 775778, 816044, -927176, 687732, 576599, 1024887, -665183, -2612951, 3293703,
-4502737, 1845762, -2834142, 1992328, -1334124, 1387811, 8481487, 5259188, -7174743, 4891968,
--3949223, -1919850, -1040456, 171262, 3607236, 165356, 9927280, 2899103, -3810173, -2471754,
--2471217, 7024419, 1647120, 6767795, 2212445, 4568772, 7028714, 8093329, 3069828, -871878,
--799401, 1254667, -6449967, -5967857, 1927367, -4519380, 2601140, 1288490, -1535988, -629213,
-1904818, 6768332, -2190970, -2238215, -3444564, 8636642, -1147830, -10663330, -5328981, -4197257,
--3880503, 4475893, 4270808, 3792456, 5617281, 2538326, 3529390, -101469, -314606, -102005,
-5653251, 1887638, 3327526, -7396471, 513785, 404264, 430570, 554588, 3272228, 2336462,
-969589, -3547643, -3566970, 2158221, 1773822, -995359, -190589, -2840047, -3663607, -2951180,
-2094870, 3654480, 476205, 282394, 1289027, -959925, -88584, -740882, 692027, 714575,
-418759, -411243, 1121523, 1804423, -205085, 257698, 430034, -184684, 506269, -618475,
-1307818, 103079, -187905, -714575, 1164473, -2063732, 1276142, 456340, 976568, -56908,
--1222455, 352724, -561567, 18983756, 4050154, 3003793, -2382096, -1180579, 1745904, 1446867,
-4946192, 6780143, -389231, 9922448, 3824132, -3331284, -3318936, -124554, 4603131, -430570,
--2642479, 5307506, 644245, 14250165, 3615289, 2916820, 498216, -1245541, 581968, 2256469,
-2655901, -523986, -55298, 7698192, 976031, 8462159, -4282620, -3896609, 2669322, 12646531,
-3546032, 3141769, -1171452, -5306969, -2215130, 1806571, 287763, -12885, 374199, -7580618,
-459562, -3274376, 2995203, 2535641, -3121904, 1877975, 2612951, 1920387, -3699041, -3605088,
-798864, 1418950, -73551, -4666482, 1163399, -1752884, 2976949, -336618, 511101, 2046015,
--820339, 1176284, -1787780, 625455, 10915659, 1347546, 3813394, 231928, -3114388, 1907502,
-572304, 3507378, -6203544, -4165045, 2007897, -798864, 1172526, -1496259, 2245731, 2051384,
-161598, -2613488, -1109712, -3591130, -741419, -753230, 2284386, -1606318, -535797, 494995,
--410706, -793495, -972273, 781684, -1027571, -1147293, -99321, 136902, 579821, -2406256,
--1054951, 719944, 277025, -2629057, -745714, -95026, -3578782, -1388348, -459562, 2841121,
--4218732, -656056, 4169876, -2075543, -6615860, 25770, 10764799, -682363, 8441221, 4420058,
-11699491, 1484448, 1048509, 4341675, -3350075, -6941204, -9258876, 2237678, -4733591, 10901701,
-6159520, 7721815, -1472100, -3119220, 928787, 1785096, 3555159, 10209674, 1191853, 4293357,
--4656819, 3298535, -3308736, 1453310, -1791538, 3406446, 5791227, 851477, 5533529, 2101850,
-2763812, -1539746, -1352378, 7486128, -1743220, -1790465, 5580773, -3278671, -323196, 864899,
--2454037, -3178276, 2469606, -3654480, -716186, -4683662, -10138270, -1070521, -1542967, -199179,
--10561861, -3967476, -3223910, -2670396, 3971234, 10470593, -2649458, 3408594, 5444408, -1453846,
-1027571, 985695, 622770, -3725884, 4144644, -4743255, 1263257, 3520800, 9759239, 3113315,
-2896956, 951872, -118112, 3007551, -3513820, 35970, 2024540, 1019518, 186831, -3882114,
-2370822, 2944200, 2909304, -481036, 2171643, 1239635, 627602, 2029372, 1155346, 302258,
-1132798, -204548, 885837, 624381, 751619, 1203128, 1447404, 1748052, 1193464, 1196148,
-1292785, -677531, 1174137, -13617194, 1096827, 7455527, 3787624, -7599945, -669478, 449361,
-1724429, 2905546, -530965, -5897527, -5820755, 976568, 9625559, 4703526, 5673115, 9859097,
--6702834, 7057705, 12816182, -1107028, 2822331, -7240778, 2427730, 2716030, -6362994, -3308199,
--1438277, 3041374, -6426345, -8304856, 1523103, 981937, -7259569, 629213, 2190970, -1412507,
-15219217, -822486, -10908680, -695785, 3674345, 8651675, 3107946, 3897683, -7016366, 1952600,
-2128693, -6168647, -470836, -1030255, 10555956, 6521908, -1825361, -3627637, -8286603, 3562139,
-3238405, -4843113, -225486, 1983201, 3161633, 3316252, -4245575, -108448, -969589, 9971303,
--8428873, 1035624, -2235531, 8978092, -697395, -2190970, -3815005, 1126892, -3945464, -9136469,
-203474, 6948720, 2030446, 4355097, 1037772, -3293703, -1355599, -1663226, 5871757, 2347200,
--1652489, -224412, 5330592, 4013647, -1559073, 571768, 805306, 1153199, -143881, 2147484,
-1453310, 1310502, 99321, -759136, -380641, 420907, -806380, 249108, -1109175, -363462,
-847182, -2802466, -692027, 5303748, 4654671, 1755031, -3578782, 1050120, 2174327, 16126528,
-10557566, 8049843, 11200201, 4626754, -1087164, 1655173, 4069482, -11362336, 5730023, 200790,
-6165426, -4571456, -2455648, -7329362, 1954747, 12961674, -12802224, -8031589, -13605383, 6825777,
--3218541, 426276, -6280853, 783295, -2442226, -6144488, 2180770, 2989297, -9738301, -1327682,
-1561221, -2134062, 4879620, -13907641, -6901476, 14171781, 1240709, -280247, -1593433, 468151,
--7406134, -7695508, 257161, -11183021, -2772402, 1082869, 2783139, -4835060, -1309428, 13790603,
--1102733, 4808753, 10081362, -9639517, -3548717, 2200634, 2220498, 1792612, -3160559, -6911140,
-7635915, -926639, -7539278, 5313949, -1540283, 1197222, 1821603, -4013647, -2617783, -1739999,
--3214783, -4349728, -5377299, -5019206, -6544457, -1986959, -2901787, -703838, -1048509, -159988,
-602906, -2681133, -2294050, 1405528, 1524713, 2801393, -392453, -1264868, -3955128, -1146756,
--4537633, -2842732, -814970, 746787, -548682, 484794, -1326071, -738734, 2965138, 1137093,
-1983201, -2262911, 328028, 419296, 598611, -4483409, 85362, 1197759, -235149, 2225867,
--610959, -790274, 237834, 623307, -26830660, -14705968, 11905112, -4511327, -5820218, 7429757,
-6207302, -11276437, -15547245, -4813585, -5646272, -5671505, -1181116, -10480257, -7777112, 3995393,
-282394, -14142790, -15851114, -8695161, -4440460, -684510, 7919383, -471373, -6002217, 4526896,
--13216688, 500364, -743029, 660888, 4439923, 2612414, -9664750, -7073275, 5592048, 2100776,
-21144660, 5313949, -7212324, 1052804, 565325, 302795, 5491116, 1156957, 2221572, -2107218,
--4799626, 1463510, -12355547, -2212445, -5454609, -6400038, 1291711, -9665824, 11225434, -1393717,
-4624069, 8181376, 2291365, 4366908, -644782, -5203353, -336618, -614717, -6660421, 8578660,
--3638911, 15217606, -606664, -287763, 600222, -3876208, -8312373, 2615635, -6543383, -2554969,
-8779450, -11410654, -11370389, 7610682, 7092602, 6220187, -9646497, 6947110, 2782602, 4073240,
--377957, 1814087, 1789928, 5413807, 2204929, 1371168, 3896072, -475131, -323733, -3206193,
--2610266, -468688, 2633352, -3447248, 409096, -347892, -2127620, -1213865, 832687, -4452271,
--2816425, -3307125, -650688, 1510218, -79994, 3397856, -1174137, 3551938, 252866, 1356136,
-506269, 2763812, -2149094, -1646583, 3073586, -1362042, 380641, 291521, 5387500, 19833622,
--11080479, 9474161, 3858491, 7077033, -2828773, -10711112, 1522566, -2757369, -10084046, 20471962,
--1450625, -5596343, -20121384, 12437688, 3423626, -144955, -7522635, -8617315, 224949, 20798380,
-7706245, -721018, -2049773, -8801999, -7242926, 6069326, 2642479, -6862284, -4897337, 7321309,
-1803886, -205085, 6211060, 9659918, 1502165, 12723304, 14319958, 8791261, -3304441, 3257196,
-1168768, 2465848, 7472170, -10510859, 11166915, -665720, -5677410, -8499203, 52076, 7439420,
-5136244, -10047002, 2227478, 8135205, 1235340, -7244536, -15862388, -14318347, 3808026, 6495601,
-1077500, -5480915, -740345, 11643119, -5282810, -8580808, -16747151, 1890859, 3260954, -12378633,
-4705137, 12619151, -5675263, 9844065, 3389803, -11450920, -8568460, 1024887, 11903502, -1107565,
-12505334, -2040646, -4362076, 2758980, 6385006, 1826972, -2114735, -3221762, 2159832, 5777268,
-4601521, 908922, 7438884, 1509681, 5343476, 1459215, 7299834, 1236414, 4516695, 64961,
-3614215, 2075543, -1773285, -5179731, 481573, -6078990, -846109, -2402497, 999654, -668404,
--214748, -5376762, -493384, 2734284, -2675228, 511101, -629213, 545461, -340376, -3840238,
-636192, -689342, 23946590, 15640660, 3629784, -4846334, -2500745, -3403762, -16343424, -6692633,
--155693, 10410464, -7480760, -4278325, -3467112, 119185, 17334488, -13489955, -3537979, -804233,
-8172249, -2868501, -9857487, -16668768, 6008123, -11536282, -5185100, -7219840, -7678328, 2373506,
--12939126, -6381785, 11610370, 17220134, 867047, -10880763, -9568113, 15876347, -1702418, -8698383,
-16721918, 453656, 1107565, 638876, -18061948, 7321846, -6635725, 6535330, 6191196, -12401718,
--1251983, -12578885, 4959077, -12200391, -1969779, 5022965, 7000797, -4117800, 4295504, -14791867,
-10242960, -1208496, 7022809, 5744519, 4307316, -3333432, -2975339, 14618995, -10043781, 7228967,
--2379949, -12564927, -7427609, -898722, 13314935, -7617662, 6305012, 1709397, -3941706, 104690,
--14574435, 18524730, 11559904, -2261300, -4922570, 9045201, 4088809, -2747169, -4628364, 965294,
--3035468, 4629975, -830539, 2403571, 7866233, 2708514, 6262599, -74088, 2326262, 841814,
--976031, 97711, -403727, 5216238, 2250026, 7263327, 1401233, -4173098, 5519570, -2205466,
-24159, 3947612, -3680787, -1341104, -1854889, -1712081, 3497714, 1955284, 1909650, 2859911,
--152471, -891206, 7030325, -2370822, -2157147, 9166534, 1962263, -6359236, -14010720, -950798,
--18262200, 2998424, 1817845, 8843338, -7188165, -1934346, 4957466, 3804804, 5435818, -12651900,
-17819820, 12341052, 2480881, 9079561, -3996467, -17948132, 4371740, -7657390, -8150238, 8204462,
-20625506, 3408057, -5465346, -7585986, -16228534, -134755, 938987, 25054692, -9752260, -563714,
-931471, -934155, -15020038, -17314086, 13749801, 368830, 7889855, -2370822, -19246286, -11349451,
-1726577, -3412352, -3932580, -5708549, 12886513, -2845953, 8432631, -9069360, 17880486, -21069498,
-10525891, 10683731, 6643778, 5575405, 5416491, 16384763, 8675297, -1357747, 3704409, -25770,
-16519518, 24408836, -2659122, 1808718, -7045894, 10125922, 16667157, -11434277, 3638911, -28576564,
-18751290, 19038516, 12976707, 17702244, -7965017, -14394046, -851477, -2211908, -4039954, -3131031,
--8376260, -6078990, -2989297, -885300, -4610111, 2733210, 5393405, 1901060, -7861938, 1479616,
--4292820, -4816269, -2797098, 3233574, 3262028, -1518808, -1831267, -811212, -1225676, 766115,
--7603703, 2492155, 1292248, 4942434, 1291711, -421444, -60130, 1022202, 4569845, 1444720,
--3857418, 3136937, 168041, 396211, -20685100, -3058554, -26454852, -13572097, 10397042, -10828686,
--23527830, 2183991, -12691091, 583579, 447750, -15084999, -14345191, 6483253, 13839458, 4177930,
--16109349, 7702487, -18118856, -6351183, -6679748, 5668820, -7449084, -3393024, 8697846, 1487132,
--5966784, -12894029, 13646722, 13237626, 17199196, 2246805, -1919850, 608812, 5508833, -1300838,
-7051800, -7762080, 9273371, -3651796, 10683731, 8571681, 6448894, -3105261, 441845, -16626892,
-5657546, -4185983, 12505334, 2275796, -29072634, 4466229, 14328011, 19275276, -11088532, -15146202,
-18127984, 8230768, 12745315, -22705882, 11225971, 28426242, 29940754, 1906429, 710817, 17038672,
--11792906, -15712601, 10065256, -17396228, 6531572, -8101382, -6847252, -3841848, -37473588, -21638046,
--18250926, 13464722, 5107790, 3786551, -13312788, -5413270, -10057740, -1902671, -5403606, 14716705,
-3496640, -5851356, -13074954, -2909840, 8465381, -1350230, -3616899, 2601677, 8861591, -3154117,
--5237176, -2509335, -1943473, -601295, 6892349, 6925635, 6016176, -6077379, 7885560, -399969,
-2253784, 9015673, -4050691, -4065187, 7859790, 14110041, -3299609, -4605816, -2246805, 1698660,
--2543695, -9718974, 1569811, 7099581, 1915019, -9786620, -9374303, 4422206, 3178813, -522912,
--599685, -1709934, -6970732, -4772783, -15569256, -29901562, 22863184, 2387465, 7682086, -3882651,
-16193637, 419296, -13795972, 10670309, 4355634, -4900558, -8324184, -6543383, 2065879, 3888019,
-14343043, -8175470, 11257646, 3569118, 20447802, -29343754, -7864085, -4662724, 3783866, 11959336,
-17380658, 3930969, -14103062, 9513353, 13675176, 11491185, -3212099, 3999152, 834297, -4833986,
--1967095, 816044, 4428648, 1574642, 10110890, 1648731, -12745315, 11892764, -13215077, -16895328,
-2626373, 12181601, -5931887, -4399121, 4436701, 5934034, 10518912, -6028524, 4987531, 23732916,
--9479530, -25266218, -32697050, -16547972, -22155052, 10038412, 19226422, 12272332, 4698158, 11541651,
-6796249, 12758200, -10947872, 14424111, 7504382, 5835250, 15056008, 19541564, -6095096, -4400194,
-5342940, -1317481, 17608830, 6789807, -2697240, 2937221, -21496312, -15065135, 2970507, -884763,
-3812320, 1410360, 4507032, -4057670, 11316165, -6026376, -6924561, -6722161, -11314018, -4146254,
--2247879, 3666828, 3004330, -1739462, -9722195, -614717, 3200288, 1031866, -3912178, 2247879,
-119185, 3699578, -4079145, 1615445, 765041, 4470524, -2180233, 6908455, -4329864, -5024038,
-1457068, -904091, -3652870, 1092532, 4793184, 349503, -761820, 29894046, 2917357, 4668093,
--6183679, 10839424, -34195456, -15135465, -23363548, -24169392, 9609452, -21096342, 20732344, 23538568,
-1058710, 5076115, -3605088, 4277251, -22357990, 9160628, 24790552, -14150843, -28792388, 3769371,
--10814728, -9235253, -28085864, 4821101, 10343355, -159451, -3793530, 8988293, -16010564, -2724620,
-10447508, -5807870, -14189498, 1660542, -7074348, 14624364, -9713069, -5465346, 13769128, 11866995,
-25411174, 3295314, 6145562, -2407866, 6832756, 8972187, 15701864, -4599373, -503585, -9831180,
-20709258, -26169772, 28037546, 915365, -11164767, 13047574, -10180683, -7589207, 25784836, -37305012,
-6076305, -7944616, 7285339, -14533096, 6955700, 14665703, -7644505, -1464584, -3928821, -6266358,
--3308199, 27327266, -31120796, -10734734, 52306260, -19803020, -23095650, 22532472, 13540421, 15000173,
--13182865, 925029, -13105556, -7450158, -2068027, -15075335, 3260417, 1896765, -3913789, 5261872,
-4799089, -6903086, -12742094, -3401077, -1091995, 4869419, -11250667, -8016020, 273804, -1260573,
-2809446, 6867653, 16632261, -7719130, -404801, -1968706, -1768990, 4642860, 1853278, -10058813,
--7504919, 7806103, -6481106, 2850248, 2025614, -6193880, 2268817, -1547799, -10162429, -8475581,
-4940823, 3095061, -1563905, -361314, 6300180, -14996415, -22873922, 2122251, -8605504, -7895224,
--12830141, -16316581, 20547124, 8688182, 1404991, 9488656, 24317032, 14203994, -1554241, 4838818,
-16383153, 20671140, -18332532, 8511551, 17495012, 7470022, 6478958, 23891292, 11668889, 4910222,
--622770, 10700374, -1097901, 12122008, 10201621, 5432060, -11122355, 21128554, -17331804, -2269890,
-26671746, 26175678, -6142340, -23369990, 8877161, -440771, 22899692, 39134132, 8876087, -6090801,
-2887829, -22585086, -2543695, -6027450, -4722854, 371515, 20129438, -8667244, 8923868, 24005110,
-4205847, -22353158, 14856829, -1213865, 9493488, 22554484, 31983010, -9062381, -8333311, -2804614,
--25125558, -37031208, 1129040, -16878684, -2601677, -20446728, -1972464, 590021, 2897492, 15063524,
--302795, -10596758, -17390322, 12736726, -5278515, 10890963, 529892, 20338818, 7691750, 7472170,
-204548, -6396280, 11586748, -8793946, -9994926, -3102577, -7481833, -2998424, 715649, 762357,
--2601677, 3093450, 4629975, 330176, -1022202, 5898064, -4968741, -7274601, 4561256, 5193689,
-1182727, -6290517, -7386807, -4421132, 6201933, 8127689, 1209033, -1177895, 9175124, 2450816,
-4451197, 3726958, 6601365, 1801202, -1050120, -4788889, 2736968, 5133023, -10448582, 8371428,
-24996710, -46860776, 25793426, -19752018, -46162308, -13705778, -11622182, -1668595, -10639708, 5572183,
--12761422, -28644748, -17273822, -8591008, -2604898, 3242164, -11775727, 11475616, 22421340, 791885,
--1409823, 6103686, 1374390, -4226785, -8329016, -4739497, 6057515, 6618545, -2001455, 6288906,
-27528592, 7530689, -8069707, -27379342, -4383551, 19246286, -23528904, -11113228, -8979166, 220654,
--1823214, 14762876, -4924180, 1708860, 20378010, 7216082, 22607098, -3261491, -10729365, -4986457,
--5851893, -5951751, 10877005, 1101659, 7336878, 13715441, -24322936, 3476776, -6479495, -15197742,
--11453067, 23614804, 17019344, 767189, -11643119, 4697084, 9944460, 940061, 6857989, -16396038,
--40341016, -18757732, -14819785, 14642617, 1416802, -1960653, -6882685, 2783139, -4625680, -12832825,
--13283797, -6987912, 16207059, 12203076, -18283676, -22841710, -8980240, 1479079, 13701483, 5479842,
--4502737, -6208375, -4780836, 3107946, -10190347, 1396938, -6995965, 471373, 10300942, 11003706,
-2832531, -5861557, 3470871, 7897908, -382252, -1833414, 5811628, -8275328, 11241540, 10078141,
-3838627, -303869, -598611, -1261110, 9398462, -3854733, -5163088, -5862094, -8310762, -8139500,
-2443300, -3079492, 3325379, -2421288, 1588064, 5893232, -3096135, -5920613, -8577050, -2461553,
-3763465, -6118181, 13143674, -18101676, 21843666, -1401770, -35512936, 7548405, -17321066, -3134253,
--2928631, -3788698, -22760106, 7406134, 780610, 18095234, -38646652, 979789, 18466212, 2627983,
--9475772, -19005768, -1906429, 11451457, 16109349, -13369696, -5297306, 9255655, 18461380, 17567490,
--17047262, -3064459, -27383100, 12896176, 13273596, 8797704, -8105140, -1794760, -7761006, -2557653,
--9416179, 2900714, 19243600, -6993281, -8179229, -6458557, -11591580, 22619446, 18757732, -1593433,
-26589606, -950798, 9161165, -23596014, 19144280, 8971650, -27295590, -8424041, 30273076, 12993887,
-7862475, 6222334, -14933601, -11160473, -15983184, 26912266, -14287209, 20834350, 20842940, -23986318,
-55497956, -11787001, 34226596, 1716913, -8371428, -14806900, 25577604, 10255845, -20764020, -12193949,
--44030396, 17569638, -6509023, 20170240, -27324582, 30086782, -23494008, 8978092, -9454834, -6732361,
-19127636, 1968169, 1259499, 11084237, 7097434, -4934918, 12328704, -1493575, 3190087, -8934069,
-1148904, -1165010, -6327024, -8999030, -302795, -10004589, 4181151, 4368519, -2997887, 8719320,
--3775276, -5207648, -7956964, 5129265, 394063, -1216550, -15091978, 6514929, -3557844, -17388712,
--6218039, 4944044, -5624260, -9036074, 5303748, -4943508, 4244502, -9221295, 3582540, -9409200,
--2360622, -1510755, 4296578, -2321430, 156229, -3167002, -3990025, 12985834, 23484344, 1470489,
--18865106, 8924405, -36849208, -10324565, -33428268, -47303696, 2077154, -18418968, 6514929, -3854733,
--6869264, -18218714, -11788075, 10128607, 28740310, -23895050, -4552129, -40904732, -35100084, 9472014,
-14777372, -22609782, -22796612, 1130113, 5683853, -38008312, 2531346, 479963, 20110110, -17234630,
-1275605, 15913928, -10040560, -19930258, -21405044, -10918344, -19467476, -16711181, -20343112, 28943248,
--36629092, -23355496, 34160560, -1379758, 10030359, -28439126, -4363687, -8321499, 1293859, 47091632,
--6164352, -1225676, 5236102, 21910238, 1074279, -21280490, -8743480, -15423764, 5663988, 56417616,
-11592117, -20272246, 43300248, 30594126, -26865020, 31565862, 52837760, 168577, -19825032, 35291748,
--5606543, 37146100, 34299072, 2559801, -1175747, -10321343, 24124832, 18878528, 11482595, -20241644,
--6066642, -13156559, 30407832, -4035122, -19925964, -10238128, -20032802, -9119289, 20990042, 2077690,
--10176388, -3892851, -12585865, -2442226, 18830748, -9027484, 5069672, -2047089, -16832514, 18647138,
-2863670, 7363185, 9735617, -12355010, 4348118, 17134772, -2504503, 501437, -8702677, -214212,
-2020782, -5875516, -4639102, 3111704, 13490492, -8422431, 5716602, -11186779, -4633196, 513249,
--3036542, 12521440, -4224101, 416075, 1862942, 4501663, 1076426, -6158983, -765041, -3537979,
-26796300, -67444944, -40074192, -43944496, -14557255, -29390462, 36430448, 13323525, 29928942, -4732517,
--56892212, -9068287, 9577240, 39005284, -1331977, 8790724, 36429376, -13873818, -25883084, 2313914,
--1478006, 45304924, 29987998, -15294915, -20471962, 48132624, 3668439, 23882166, 11953431, 44857176,
-39344584, 29730838, 3421478, -25992068, -13691282, -19972672, 38042672, -18632106, -25650618, -14587856,
-1574106, -1578401, 16920560, -16952772, 6195491, -77420008, 8806294, 11380053, 12811351, -32731408,
--29650306, 8594230, 27237072, -33798172, 13069049, -19497004, -14576582, -22927610, -1875827, 22982906,
--15723875, 25302726, -6503654, 9496710, -47841640, -31508416, -1127429, 24770688, 17877264, -35578436,
--37526204, -18174154, 3579318, 39118024, 16450262, -4585952, -27969900, -33065880, -10971494, 5969468,
-28192166, -3275986, 9337259, 18080202, -7246147, 6001680, -18722836, 10755135, 6607807, -12404402,
--9664750, 163746, 14413910, -14781667, -633508, 22169010, 3526705, 2467459, -99858, -7492571,
--15796890, 3082713, -17546552, 19498078, 17382806, 12362526, 1410897, -2607045, -20580410, 11901891,
--4324495, 22823994, -5997385, -27972048, -16841640, -4389994, 25966298, 6321118, -5907728, -3760781,
--21430814, -11297375, -8847633, -2396055, 11494406, 10273025, -21691732, -12921409, -13466333, -13953812,
--5084705, 2784213, -2289218, -8521752, -13506062, -14590004, 1213865, -1995549, -7152731, 12634720,
-86019072, 9521406, -47151760, -103507104, -10263898, 62524524, 14716169, 27675158, -3683471, 38301444,
--7168301, 17229798, -9568113, 21999360, 29198798, 16716013, -15426986, -33726768, 39638252, 46649788,
--11205570, -44850732, -28569048, 5425618, 25645250, 9469866, 8639864, 2340220, 5912023, 3690451,
-5848672, -8310762, -53594748, 325344, 31754840, 25697326, -11230803, 3153043, 19218904, 44557064,
-26146150, 22149146, -26749056, -17500382, -5272073, -4190814, -40153112, 28413894, 15686294, 29487634,
-58237608, -29826938, -20313584, -2168959, -17196512, -13642427, -26633630, 46336792, -28581396, -29423210,
--31601296, -10215043, 57713088, 15481210, 22011708, -744640, -5680631, -13040594, 35605816, 29879550,
--15819438, -33681672, 11070815, -3999688, 13358959, -31568010, -13201119, -18178986, -24992414, 15239618,
-23444078, 4949413, 234613, -12477417, 6503118, -4628901, 21750788, 2201171, -8360691, -4049081,
-6809671, 14777372, 15181099, -8827768, 9188009, 5501316, 4461398, -383863, -17499844, -1875827,
--14310831, -5134634, 180926, 2597918, 4024921, 5187247, 5062693, 14981920, 21153250, 19714974,
--2328946, -4551055, 1945083, -9306657, 11443403, -13191455, -2119566, 11074573, -1151051, -2486786,
--22238804, 11025718, -22178674, 7364795, -5333813, 3550864, -2349347, 2570538, -1466195, -13424457,
-7122667, 6719477, -1548873, 4524211, -1181116, 3849365, -2185065, -3568581, -1045288, -1199907,
-387621, -792421, 440234, 380105, -4894115, -2135673, -1187559, 2762738, 629750, -1434519,
--2834142, -2985002, -149787, 681826, -1438277, 53150, -1887101, -578210, -2106145, -24770150,
-1938104, 66831840, 50955492, 8282845, 3606162, -35897336, -69956968, -60684668, -30140470, 50235548,
-54354420, 57013008, 31121870, -8089034, -36495948, -33167884, -22290880, 14517526, 21804476, 39082592,
-3182571, -29329794, -25402048, -5237713, -25453586, -11440719, 5067525, 40457520, 56983480, 37417220,
-17310866, 16508244, -36407364, -4042638, -72764800, -80631032, -51093468, -24177444, -22660248, 38006164,
-58741732, 65831648, 58848032, 51592220, 20809654, 3673271, -25298432, -6621229, -40463960, -70664024,
--6369974, 6812892, 6381248, 23736136, 13510357, 24078124, -79897128, -43162272, -28910498, -45767708,
--20062866, 34269544, -20870856, 23153632, 2603824, -20726976, 16339666, -17280800, 18434000, 22385370,
--17477832, -33833604, -70900784, -67900208, -51468740, 25156160, 8156143, -9502615, 12512313, 3926674,
--397284, -32276680, -23509040, -60274496, -20738250, -22057342, -3107946, 44515188, 46649252, 7189776,
-23750096, -14395120, -33512556, -58617176, -39511552, -36106716, -1994476, 18281528, 9568650, 14955613,
-15053324, -10565083, 8825621, -9943923, 9176734, 2786897, -1125818, -1843078, 7432978, 7566659,
-14878840, -3244848, -4487167, 15001784, 12927852, 2964601, -5480379, 11759620, -119309360, -60833916,
--31849866, 40246528, 9195525, 153073168, 156662160, 118302728, 152738160, 160276368, 145409344, 104582456,
-94716912, 105336760, 41785736, -6118718, -65190088, -100480760, -139128480, -134955392, -201452224, -122057064,
--79568568, -63006632, -89864136, -47113644, -13028783, -67160944, -52323976, -55054500, -12548284, -33013266,
--11874511, -44739064, -22854058, 26861800, 27622546, 8393977, -8352638, 29263222, 23536420, -67754184,
-14044543, 46009300, 100413648, 73819752, 95597920, 39356932, 37953552, 159487168, 86237040, 163203392,
-54554676, 153072640, 105552040, 133657768, 180063280, 170729248, 138299024, 155481568, 172550304, 187961728,
-160385888, 185284352, 126290832, 187939712, 150763552, 133922984, 142627808, 78012176, 159681520, 77401216,
-46859704, -58645096, 3831111, -86686936, -97592928, -149089584, -176182784, -270648448, -264419120, -249642288,
--233574816, -220045136, -186074096, -226881648, -279401056, -275435712, -228578704, -241840480, -227540928, -228216304,
--194886832, -212116624, -203505744, -151722944, -167687328, -128749696, -120354648, -110850960, -70779984, -91317448,
--20917564, -33929168, 15564961, 21195664, 66430796, 98413808, 103022840, 119105888, 105656192, 159401264,
-180569552, 179025504, 206770464, 216062624, 213958096, 163228080, 145611200, 127885872, 118441776, 115426712,
-118368224, 111352392, 84659712, 54601920, 61908732, 47909824, 37137508, 24814710, -19449222, -25184078,
--26603564, -32422708, -39746700, -44625784, -31571768, -34623340, -27844810, -28302224, -24712704, -17761300,
--21416318, -17484812, -17161616, -20827370, -19353122, -21348134, -17069274, -14030584, -18937584, -21628918,
--9842454, -4809827, -6780680, -6110128, -1192390, -1637993, -3699041, -3831648, 1607392, 7614977,
-8061654, 8319889, 8273718, 7771744, 11042361, 11637751, 11705933, 8059506, 5695127, 4402342,
-7358890, 7926899, 4695473, 1319629, 1571421, -1038308, 3386582, 2667712, 2806761, 2032593,
-2815351, 2374043, 2372433, 5411659, 10991358, 7640210, 8026757, 7113003, 8857296, 8302172,
-6351183, 3989488, 3930432, 1739462, 1496796, -2151779, -4176319, -7874286, -7199439, -11671574,
--14554034, -15828565, -16342887, -18933826, -18862422, -19845434, -19585588, -19192598, -20475720, -20874078,
--19996830, -18028662, -15984258, -14809584, -10718628, -9844065, -8116415, -7822209, -3862249, -2450816,
--21475, 1051193, 2760053, 3244311, 5326833, 5631239, 6084358, 4725001, 4923643, 3707094,
-3661460, 2369211, 2406792, 1288490, 1366337, 364535, 533113, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-13877039, -1143535, -2240899, -1867774, 176631, -2287070, 833761, 1379758, 5645735, -1895691,
+-259846, -5215701, 353261, 5281736, 332860, 3821984, -1156957, 1613834, -2233920, -3289945,
+75162, 3631395, -501437, -4517232, -224949, 4400194, 1392106, -1868311, -1605244, -195958,
+-642635, -1015760, 12885, -733903, -1549946, -185220, 860067, 620086, -241592, -3446175,
+5090073, 6995965, 183073, 817118, -2867428, -1603097, 512175, -3650185, -4093641, 2421288,
+-3333968, 2391760, 3058554, 3087008, 1115618, -470836, 793495, 641561, 2289218, -5029944,
+390842, -654983, -3700651, -4955856, 102005, 2463701, -1927904, -271120, -617938, -359167,
+3445101, 1718524, 424128, 1353989, -1181653, -4085588, 1539209, 645856, 3444027, -4202089,
+-3216931, 2346663, -1917703, -889595, -3163244, 688805, -1877438, -1721208, -2147, -1385127,
+-1531156, 387621, -849867, -398358, -1738388, 1021665, -257698, 74088, -499827, 828392,
+-210453, 250182, -351650, -294205, -30602, -581431, -79994, -12768401, -2916283, 4861903,
+-682363, -3982509, 1676648, -9486509, -3616363, -1436130, -1690070, -4940823, -5133560, 2710124,
+4281009, 3600256, -4800700, -7156490, 811749, -4219269, -7556458, 1662152, -471910, 2072322,
+8513699, -2869575, -888521, -5440650, 7357816, 498216, 3675955, 2462627, 6042482, 2998424,
+1875290, -6056978, -669478, -5574868, -1508070, 170188, -2301566, 1779190, 1573032, -2674154,
+-5098663, 3184182, 5338108, 1428077, -2524367, -4016331, -2434710, 1192927, -4427038, -5697274,
+-1585380, 2713346, -1537061, 1301912, 3554622, 2163053, -2608119, 5056787, 479963, 4296578,
+-3636764, -3151432, -1760937, -2222109, 3073586, -1786706, 207769, 5106179, 1869385, 59056,
+-4871030, 1264331, -1924682, 3561065, 5306432, -979789, 469225, -2478196, 2033667, 4573067,
+-1611687, 2823941, 1350767, 545998, 2428804, 883153, 157303, 1839320, 765041, -221191,
+54224, 775778, 816044, -927176, 687732, 576599, 1024887, -665183, -2612951, 3293703,
+4502737, 1845762, -2834142, 1992328, -1334124, 1387811, 8481487, 5259188, -7174743, 4891968,
+-3949223, -1919850, -1040456, 171262, 3607236, 165356, 9927280, 2899103, -3810173, -2471754,
+-2471217, 7024419, 1647120, 6767795, 2212445, 4568772, 7028714, 8093329, 3069828, -871878,
+-799401, 1254667, -6449967, -5967857, 1927367, -4519380, 2601140, 1288490, -1535988, -629213,
+1904818, 6768332, -2190970, -2238215, -3444564, 8636642, -1147830, -10663330, -5328981, -4197257,
+-3880503, 4475893, 4270808, 3792456, 5617281, 2538326, 3529390, -101469, -314606, -102005,
+5653251, 1887638, 3327526, -7396471, 513785, 404264, 430570, 554588, 3272228, 2336462,
+969589, -3547643, -3566970, 2158221, 1773822, -995359, -190589, -2840047, -3663607, -2951180,
+2094870, 3654480, 476205, 282394, 1289027, -959925, -88584, -740882, 692027, 714575,
+418759, -411243, 1121523, 1804423, -205085, 257698, 430034, -184684, 506269, -618475,
+1307818, 103079, -187905, -714575, 1164473, -2063732, 1276142, 456340, 976568, -56908,
+-1222455, 352724, -561567, 18983756, 4050154, 3003793, -2382096, -1180579, 1745904, 1446867,
+4946192, 6780143, -389231, 9922448, 3824132, -3331284, -3318936, -124554, 4603131, -430570,
+-2642479, 5307506, 644245, 14250165, 3615289, 2916820, 498216, -1245541, 581968, 2256469,
+2655901, -523986, -55298, 7698192, 976031, 8462159, -4282620, -3896609, 2669322, 12646531,
+3546032, 3141769, -1171452, -5306969, -2215130, 1806571, 287763, -12885, 374199, -7580618,
+459562, -3274376, 2995203, 2535641, -3121904, 1877975, 2612951, 1920387, -3699041, -3605088,
+798864, 1418950, -73551, -4666482, 1163399, -1752884, 2976949, -336618, 511101, 2046015,
+-820339, 1176284, -1787780, 625455, 10915659, 1347546, 3813394, 231928, -3114388, 1907502,
+572304, 3507378, -6203544, -4165045, 2007897, -798864, 1172526, -1496259, 2245731, 2051384,
+161598, -2613488, -1109712, -3591130, -741419, -753230, 2284386, -1606318, -535797, 494995,
+-410706, -793495, -972273, 781684, -1027571, -1147293, -99321, 136902, 579821, -2406256,
+-1054951, 719944, 277025, -2629057, -745714, -95026, -3578782, -1388348, -459562, 2841121,
+-4218732, -656056, 4169876, -2075543, -6615860, 25770, 10764799, -682363, 8441221, 4420058,
+11699491, 1484448, 1048509, 4341675, -3350075, -6941204, -9258876, 2237678, -4733591, 10901701,
+6159520, 7721815, -1472100, -3119220, 928787, 1785096, 3555159, 10209674, 1191853, 4293357,
+-4656819, 3298535, -3308736, 1453310, -1791538, 3406446, 5791227, 851477, 5533529, 2101850,
+2763812, -1539746, -1352378, 7486128, -1743220, -1790465, 5580773, -3278671, -323196, 864899,
+-2454037, -3178276, 2469606, -3654480, -716186, -4683662, -10138270, -1070521, -1542967, -199179,
+-10561861, -3967476, -3223910, -2670396, 3971234, 10470593, -2649458, 3408594, 5444408, -1453846,
+1027571, 985695, 622770, -3725884, 4144644, -4743255, 1263257, 3520800, 9759239, 3113315,
+2896956, 951872, -118112, 3007551, -3513820, 35970, 2024540, 1019518, 186831, -3882114,
+2370822, 2944200, 2909304, -481036, 2171643, 1239635, 627602, 2029372, 1155346, 302258,
+1132798, -204548, 885837, 624381, 751619, 1203128, 1447404, 1748052, 1193464, 1196148,
+1292785, -677531, 1174137, -13617194, 1096827, 7455527, 3787624, -7599945, -669478, 449361,
+1724429, 2905546, -530965, -5897527, -5820755, 976568, 9625559, 4703526, 5673115, 9859097,
+-6702834, 7057705, 12816182, -1107028, 2822331, -7240778, 2427730, 2716030, -6362994, -3308199,
+-1438277, 3041374, -6426345, -8304856, 1523103, 981937, -7259569, 629213, 2190970, -1412507,
+15219217, -822486, -10908680, -695785, 3674345, 8651675, 3107946, 3897683, -7016366, 1952600,
+2128693, -6168647, -470836, -1030255, 10555956, 6521908, -1825361, -3627637, -8286603, 3562139,
+3238405, -4843113, -225486, 1983201, 3161633, 3316252, -4245575, -108448, -969589, 9971303,
+-8428873, 1035624, -2235531, 8978092, -697395, -2190970, -3815005, 1126892, -3945464, -9136469,
+203474, 6948720, 2030446, 4355097, 1037772, -3293703, -1355599, -1663226, 5871757, 2347200,
+-1652489, -224412, 5330592, 4013647, -1559073, 571768, 805306, 1153199, -143881, 2147484,
+1453310, 1310502, 99321, -759136, -380641, 420907, -806380, 249108, -1109175, -363462,
+847182, -2802466, -692027, 5303748, 4654671, 1755031, -3578782, 1050120, 2174327, 16126528,
+10557566, 8049843, 11200201, 4626754, -1087164, 1655173, 4069482, -11362336, 5730023, 200790,
+6165426, -4571456, -2455648, -7329362, 1954747, 12961674, -12802224, -8031589, -13605383, 6825777,
+-3218541, 426276, -6280853, 783295, -2442226, -6144488, 2180770, 2989297, -9738301, -1327682,
+1561221, -2134062, 4879620, -13907641, -6901476, 14171781, 1240709, -280247, -1593433, 468151,
+-7406134, -7695508, 257161, -11183021, -2772402, 1082869, 2783139, -4835060, -1309428, 13790603,
+-1102733, 4808753, 10081362, -9639517, -3548717, 2200634, 2220498, 1792612, -3160559, -6911140,
+7635915, -926639, -7539278, 5313949, -1540283, 1197222, 1821603, -4013647, -2617783, -1739999,
+-3214783, -4349728, -5377299, -5019206, -6544457, -1986959, -2901787, -703838, -1048509, -159988,
+602906, -2681133, -2294050, 1405528, 1524713, 2801393, -392453, -1264868, -3955128, -1146756,
+-4537633, -2842732, -814970, 746787, -548682, 484794, -1326071, -738734, 2965138, 1137093,
+1983201, -2262911, 328028, 419296, 598611, -4483409, 85362, 1197759, -235149, 2225867,
+-610959, -790274, 237834, 623307, -26830660, -14705968, 11905112, -4511327, -5820218, 7429757,
+6207302, -11276437, -15547245, -4813585, -5646272, -5671505, -1181116, -10480257, -7777112, 3995393,
+282394, -14142790, -15851114, -8695161, -4440460, -684510, 7919383, -471373, -6002217, 4526896,
+-13216688, 500364, -743029, 660888, 4439923, 2612414, -9664750, -7073275, 5592048, 2100776,
+21144660, 5313949, -7212324, 1052804, 565325, 302795, 5491116, 1156957, 2221572, -2107218,
+-4799626, 1463510, -12355547, -2212445, -5454609, -6400038, 1291711, -9665824, 11225434, -1393717,
+4624069, 8181376, 2291365, 4366908, -644782, -5203353, -336618, -614717, -6660421, 8578660,
+-3638911, 15217606, -606664, -287763, 600222, -3876208, -8312373, 2615635, -6543383, -2554969,
+8779450, -11410654, -11370389, 7610682, 7092602, 6220187, -9646497, 6947110, 2782602, 4073240,
+-377957, 1814087, 1789928, 5413807, 2204929, 1371168, 3896072, -475131, -323733, -3206193,
+-2610266, -468688, 2633352, -3447248, 409096, -347892, -2127620, -1213865, 832687, -4452271,
+-2816425, -3307125, -650688, 1510218, -79994, 3397856, -1174137, 3551938, 252866, 1356136,
+506269, 2763812, -2149094, -1646583, 3073586, -1362042, 380641, 291521, 5387500, 19833622,
+-11080479, 9474161, 3858491, 7077033, -2828773, -10711112, 1522566, -2757369, -10084046, 20471962,
+-1450625, -5596343, -20121384, 12437688, 3423626, -144955, -7522635, -8617315, 224949, 20798380,
+7706245, -721018, -2049773, -8801999, -7242926, 6069326, 2642479, -6862284, -4897337, 7321309,
+1803886, -205085, 6211060, 9659918, 1502165, 12723304, 14319958, 8791261, -3304441, 3257196,
+1168768, 2465848, 7472170, -10510859, 11166915, -665720, -5677410, -8499203, 52076, 7439420,
+5136244, -10047002, 2227478, 8135205, 1235340, -7244536, -15862388, -14318347, 3808026, 6495601,
+1077500, -5480915, -740345, 11643119, -5282810, -8580808, -16747151, 1890859, 3260954, -12378633,
+4705137, 12619151, -5675263, 9844065, 3389803, -11450920, -8568460, 1024887, 11903502, -1107565,
+12505334, -2040646, -4362076, 2758980, 6385006, 1826972, -2114735, -3221762, 2159832, 5777268,
+4601521, 908922, 7438884, 1509681, 5343476, 1459215, 7299834, 1236414, 4516695, 64961,
+3614215, 2075543, -1773285, -5179731, 481573, -6078990, -846109, -2402497, 999654, -668404,
+-214748, -5376762, -493384, 2734284, -2675228, 511101, -629213, 545461, -340376, -3840238,
+636192, -689342, 23946590, 15640660, 3629784, -4846334, -2500745, -3403762, -16343424, -6692633,
+-155693, 10410464, -7480760, -4278325, -3467112, 119185, 17334488, -13489955, -3537979, -804233,
+8172249, -2868501, -9857487, -16668768, 6008123, -11536282, -5185100, -7219840, -7678328, 2373506,
+-12939126, -6381785, 11610370, 17220134, 867047, -10880763, -9568113, 15876347, -1702418, -8698383,
+16721918, 453656, 1107565, 638876, -18061948, 7321846, -6635725, 6535330, 6191196, -12401718,
+-1251983, -12578885, 4959077, -12200391, -1969779, 5022965, 7000797, -4117800, 4295504, -14791867,
+10242960, -1208496, 7022809, 5744519, 4307316, -3333432, -2975339, 14618995, -10043781, 7228967,
+-2379949, -12564927, -7427609, -898722, 13314935, -7617662, 6305012, 1709397, -3941706, 104690,
+-14574435, 18524730, 11559904, -2261300, -4922570, 9045201, 4088809, -2747169, -4628364, 965294,
+-3035468, 4629975, -830539, 2403571, 7866233, 2708514, 6262599, -74088, 2326262, 841814,
+-976031, 97711, -403727, 5216238, 2250026, 7263327, 1401233, -4173098, 5519570, -2205466,
+24159, 3947612, -3680787, -1341104, -1854889, -1712081, 3497714, 1955284, 1909650, 2859911,
+-152471, -891206, 7030325, -2370822, -2157147, 9166534, 1962263, -6359236, -14010720, -950798,
+-18262200, 2998424, 1817845, 8843338, -7188165, -1934346, 4957466, 3804804, 5435818, -12651900,
+17819820, 12341052, 2480881, 9079561, -3996467, -17948132, 4371740, -7657390, -8150238, 8204462,
+20625506, 3408057, -5465346, -7585986, -16228534, -134755, 938987, 25054692, -9752260, -563714,
+931471, -934155, -15020038, -17314086, 13749801, 368830, 7889855, -2370822, -19246286, -11349451,
+1726577, -3412352, -3932580, -5708549, 12886513, -2845953, 8432631, -9069360, 17880486, -21069498,
+10525891, 10683731, 6643778, 5575405, 5416491, 16384763, 8675297, -1357747, 3704409, -25770,
+16519518, 24408836, -2659122, 1808718, -7045894, 10125922, 16667157, -11434277, 3638911, -28576564,
+18751290, 19038516, 12976707, 17702244, -7965017, -14394046, -851477, -2211908, -4039954, -3131031,
+-8376260, -6078990, -2989297, -885300, -4610111, 2733210, 5393405, 1901060, -7861938, 1479616,
+-4292820, -4816269, -2797098, 3233574, 3262028, -1518808, -1831267, -811212, -1225676, 766115,
+-7603703, 2492155, 1292248, 4942434, 1291711, -421444, -60130, 1022202, 4569845, 1444720,
+-3857418, 3136937, 168041, 396211, -20685100, -3058554, -26454852, -13572097, 10397042, -10828686,
+-23527830, 2183991, -12691091, 583579, 447750, -15084999, -14345191, 6483253, 13839458, 4177930,
+-16109349, 7702487, -18118856, -6351183, -6679748, 5668820, -7449084, -3393024, 8697846, 1487132,
+-5966784, -12894029, 13646722, 13237626, 17199196, 2246805, -1919850, 608812, 5508833, -1300838,
+7051800, -7762080, 9273371, -3651796, 10683731, 8571681, 6448894, -3105261, 441845, -16626892,
+5657546, -4185983, 12505334, 2275796, -29072634, 4466229, 14328011, 19275276, -11088532, -15146202,
+18127984, 8230768, 12745315, -22705882, 11225971, 28426242, 29940754, 1906429, 710817, 17038672,
+-11792906, -15712601, 10065256, -17396228, 6531572, -8101382, -6847252, -3841848, -37473588, -21638046,
+-18250926, 13464722, 5107790, 3786551, -13312788, -5413270, -10057740, -1902671, -5403606, 14716705,
+3496640, -5851356, -13074954, -2909840, 8465381, -1350230, -3616899, 2601677, 8861591, -3154117,
+-5237176, -2509335, -1943473, -601295, 6892349, 6925635, 6016176, -6077379, 7885560, -399969,
+2253784, 9015673, -4050691, -4065187, 7859790, 14110041, -3299609, -4605816, -2246805, 1698660,
+-2543695, -9718974, 1569811, 7099581, 1915019, -9786620, -9374303, 4422206, 3178813, -522912,
+-599685, -1709934, -6970732, -4772783, -15569256, -29901562, 22863184, 2387465, 7682086, -3882651,
+16193637, 419296, -13795972, 10670309, 4355634, -4900558, -8324184, -6543383, 2065879, 3888019,
+14343043, -8175470, 11257646, 3569118, 20447802, -29343754, -7864085, -4662724, 3783866, 11959336,
+17380658, 3930969, -14103062, 9513353, 13675176, 11491185, -3212099, 3999152, 834297, -4833986,
+-1967095, 816044, 4428648, 1574642, 10110890, 1648731, -12745315, 11892764, -13215077, -16895328,
+2626373, 12181601, -5931887, -4399121, 4436701, 5934034, 10518912, -6028524, 4987531, 23732916,
+-9479530, -25266218, -32697050, -16547972, -22155052, 10038412, 19226422, 12272332, 4698158, 11541651,
+6796249, 12758200, -10947872, 14424111, 7504382, 5835250, 15056008, 19541564, -6095096, -4400194,
+5342940, -1317481, 17608830, 6789807, -2697240, 2937221, -21496312, -15065135, 2970507, -884763,
+3812320, 1410360, 4507032, -4057670, 11316165, -6026376, -6924561, -6722161, -11314018, -4146254,
+-2247879, 3666828, 3004330, -1739462, -9722195, -614717, 3200288, 1031866, -3912178, 2247879,
+119185, 3699578, -4079145, 1615445, 765041, 4470524, -2180233, 6908455, -4329864, -5024038,
+1457068, -904091, -3652870, 1092532, 4793184, 349503, -761820, 29894046, 2917357, 4668093,
+-6183679, 10839424, -34195456, -15135465, -23363548, -24169392, 9609452, -21096342, 20732344, 23538568,
+1058710, 5076115, -3605088, 4277251, -22357990, 9160628, 24790552, -14150843, -28792388, 3769371,
+-10814728, -9235253, -28085864, 4821101, 10343355, -159451, -3793530, 8988293, -16010564, -2724620,
+10447508, -5807870, -14189498, 1660542, -7074348, 14624364, -9713069, -5465346, 13769128, 11866995,
+25411174, 3295314, 6145562, -2407866, 6832756, 8972187, 15701864, -4599373, -503585, -9831180,
+20709258, -26169772, 28037546, 915365, -11164767, 13047574, -10180683, -7589207, 25784836, -37305012,
+6076305, -7944616, 7285339, -14533096, 6955700, 14665703, -7644505, -1464584, -3928821, -6266358,
+-3308199, 27327266, -31120796, -10734734, 52306260, -19803020, -23095650, 22532472, 13540421, 15000173,
+-13182865, 925029, -13105556, -7450158, -2068027, -15075335, 3260417, 1896765, -3913789, 5261872,
+4799089, -6903086, -12742094, -3401077, -1091995, 4869419, -11250667, -8016020, 273804, -1260573,
+2809446, 6867653, 16632261, -7719130, -404801, -1968706, -1768990, 4642860, 1853278, -10058813,
+-7504919, 7806103, -6481106, 2850248, 2025614, -6193880, 2268817, -1547799, -10162429, -8475581,
+4940823, 3095061, -1563905, -361314, 6300180, -14996415, -22873922, 2122251, -8605504, -7895224,
+-12830141, -16316581, 20547124, 8688182, 1404991, 9488656, 24317032, 14203994, -1554241, 4838818,
+16383153, 20671140, -18332532, 8511551, 17495012, 7470022, 6478958, 23891292, 11668889, 4910222,
+-622770, 10700374, -1097901, 12122008, 10201621, 5432060, -11122355, 21128554, -17331804, -2269890,
+26671746, 26175678, -6142340, -23369990, 8877161, -440771, 22899692, 39134132, 8876087, -6090801,
+2887829, -22585086, -2543695, -6027450, -4722854, 371515, 20129438, -8667244, 8923868, 24005110,
+4205847, -22353158, 14856829, -1213865, 9493488, 22554484, 31983010, -9062381, -8333311, -2804614,
+-25125558, -37031208, 1129040, -16878684, -2601677, -20446728, -1972464, 590021, 2897492, 15063524,
+-302795, -10596758, -17390322, 12736726, -5278515, 10890963, 529892, 20338818, 7691750, 7472170,
+204548, -6396280, 11586748, -8793946, -9994926, -3102577, -7481833, -2998424, 715649, 762357,
+-2601677, 3093450, 4629975, 330176, -1022202, 5898064, -4968741, -7274601, 4561256, 5193689,
+1182727, -6290517, -7386807, -4421132, 6201933, 8127689, 1209033, -1177895, 9175124, 2450816,
+4451197, 3726958, 6601365, 1801202, -1050120, -4788889, 2736968, 5133023, -10448582, 8371428,
+24996710, -46860776, 25793426, -19752018, -46162308, -13705778, -11622182, -1668595, -10639708, 5572183,
+-12761422, -28644748, -17273822, -8591008, -2604898, 3242164, -11775727, 11475616, 22421340, 791885,
+-1409823, 6103686, 1374390, -4226785, -8329016, -4739497, 6057515, 6618545, -2001455, 6288906,
+27528592, 7530689, -8069707, -27379342, -4383551, 19246286, -23528904, -11113228, -8979166, 220654,
+-1823214, 14762876, -4924180, 1708860, 20378010, 7216082, 22607098, -3261491, -10729365, -4986457,
+-5851893, -5951751, 10877005, 1101659, 7336878, 13715441, -24322936, 3476776, -6479495, -15197742,
+-11453067, 23614804, 17019344, 767189, -11643119, 4697084, 9944460, 940061, 6857989, -16396038,
+-40341016, -18757732, -14819785, 14642617, 1416802, -1960653, -6882685, 2783139, -4625680, -12832825,
+-13283797, -6987912, 16207059, 12203076, -18283676, -22841710, -8980240, 1479079, 13701483, 5479842,
+-4502737, -6208375, -4780836, 3107946, -10190347, 1396938, -6995965, 471373, 10300942, 11003706,
+2832531, -5861557, 3470871, 7897908, -382252, -1833414, 5811628, -8275328, 11241540, 10078141,
+3838627, -303869, -598611, -1261110, 9398462, -3854733, -5163088, -5862094, -8310762, -8139500,
+2443300, -3079492, 3325379, -2421288, 1588064, 5893232, -3096135, -5920613, -8577050, -2461553,
+3763465, -6118181, 13143674, -18101676, 21843666, -1401770, -35512936, 7548405, -17321066, -3134253,
+-2928631, -3788698, -22760106, 7406134, 780610, 18095234, -38646652, 979789, 18466212, 2627983,
+-9475772, -19005768, -1906429, 11451457, 16109349, -13369696, -5297306, 9255655, 18461380, 17567490,
+-17047262, -3064459, -27383100, 12896176, 13273596, 8797704, -8105140, -1794760, -7761006, -2557653,
+-9416179, 2900714, 19243600, -6993281, -8179229, -6458557, -11591580, 22619446, 18757732, -1593433,
+26589606, -950798, 9161165, -23596014, 19144280, 8971650, -27295590, -8424041, 30273076, 12993887,
+7862475, 6222334, -14933601, -11160473, -15983184, 26912266, -14287209, 20834350, 20842940, -23986318,
+55497956, -11787001, 34226596, 1716913, -8371428, -14806900, 25577604, 10255845, -20764020, -12193949,
+-44030396, 17569638, -6509023, 20170240, -27324582, 30086782, -23494008, 8978092, -9454834, -6732361,
+19127636, 1968169, 1259499, 11084237, 7097434, -4934918, 12328704, -1493575, 3190087, -8934069,
+1148904, -1165010, -6327024, -8999030, -302795, -10004589, 4181151, 4368519, -2997887, 8719320,
+-3775276, -5207648, -7956964, 5129265, 394063, -1216550, -15091978, 6514929, -3557844, -17388712,
+-6218039, 4944044, -5624260, -9036074, 5303748, -4943508, 4244502, -9221295, 3582540, -9409200,
+-2360622, -1510755, 4296578, -2321430, 156229, -3167002, -3990025, 12985834, 23484344, 1470489,
+-18865106, 8924405, -36849208, -10324565, -33428268, -47303696, 2077154, -18418968, 6514929, -3854733,
+-6869264, -18218714, -11788075, 10128607, 28740310, -23895050, -4552129, -40904732, -35100084, 9472014,
+14777372, -22609782, -22796612, 1130113, 5683853, -38008312, 2531346, 479963, 20110110, -17234630,
+1275605, 15913928, -10040560, -19930258, -21405044, -10918344, -19467476, -16711181, -20343112, 28943248,
+-36629092, -23355496, 34160560, -1379758, 10030359, -28439126, -4363687, -8321499, 1293859, 47091632,
+-6164352, -1225676, 5236102, 21910238, 1074279, -21280490, -8743480, -15423764, 5663988, 56417616,
+11592117, -20272246, 43300248, 30594126, -26865020, 31565862, 52837760, 168577, -19825032, 35291748,
+-5606543, 37146100, 34299072, 2559801, -1175747, -10321343, 24124832, 18878528, 11482595, -20241644,
+-6066642, -13156559, 30407832, -4035122, -19925964, -10238128, -20032802, -9119289, 20990042, 2077690,
+-10176388, -3892851, -12585865, -2442226, 18830748, -9027484, 5069672, -2047089, -16832514, 18647138,
+2863670, 7363185, 9735617, -12355010, 4348118, 17134772, -2504503, 501437, -8702677, -214212,
+2020782, -5875516, -4639102, 3111704, 13490492, -8422431, 5716602, -11186779, -4633196, 513249,
+-3036542, 12521440, -4224101, 416075, 1862942, 4501663, 1076426, -6158983, -765041, -3537979,
+26796300, -67444944, -40074192, -43944496, -14557255, -29390462, 36430448, 13323525, 29928942, -4732517,
+-56892212, -9068287, 9577240, 39005284, -1331977, 8790724, 36429376, -13873818, -25883084, 2313914,
+-1478006, 45304924, 29987998, -15294915, -20471962, 48132624, 3668439, 23882166, 11953431, 44857176,
+39344584, 29730838, 3421478, -25992068, -13691282, -19972672, 38042672, -18632106, -25650618, -14587856,
+1574106, -1578401, 16920560, -16952772, 6195491, -77420008, 8806294, 11380053, 12811351, -32731408,
+-29650306, 8594230, 27237072, -33798172, 13069049, -19497004, -14576582, -22927610, -1875827, 22982906,
+-15723875, 25302726, -6503654, 9496710, -47841640, -31508416, -1127429, 24770688, 17877264, -35578436,
+-37526204, -18174154, 3579318, 39118024, 16450262, -4585952, -27969900, -33065880, -10971494, 5969468,
+28192166, -3275986, 9337259, 18080202, -7246147, 6001680, -18722836, 10755135, 6607807, -12404402,
+-9664750, 163746, 14413910, -14781667, -633508, 22169010, 3526705, 2467459, -99858, -7492571,
+-15796890, 3082713, -17546552, 19498078, 17382806, 12362526, 1410897, -2607045, -20580410, 11901891,
+-4324495, 22823994, -5997385, -27972048, -16841640, -4389994, 25966298, 6321118, -5907728, -3760781,
+-21430814, -11297375, -8847633, -2396055, 11494406, 10273025, -21691732, -12921409, -13466333, -13953812,
+-5084705, 2784213, -2289218, -8521752, -13506062, -14590004, 1213865, -1995549, -7152731, 12634720,
+86019072, 9521406, -47151760, -103507104, -10263898, 62524524, 14716169, 27675158, -3683471, 38301444,
+-7168301, 17229798, -9568113, 21999360, 29198798, 16716013, -15426986, -33726768, 39638252, 46649788,
+-11205570, -44850732, -28569048, 5425618, 25645250, 9469866, 8639864, 2340220, 5912023, 3690451,
+5848672, -8310762, -53594748, 325344, 31754840, 25697326, -11230803, 3153043, 19218904, 44557064,
+26146150, 22149146, -26749056, -17500382, -5272073, -4190814, -40153112, 28413894, 15686294, 29487634,
+58237608, -29826938, -20313584, -2168959, -17196512, -13642427, -26633630, 46336792, -28581396, -29423210,
+-31601296, -10215043, 57713088, 15481210, 22011708, -744640, -5680631, -13040594, 35605816, 29879550,
+-15819438, -33681672, 11070815, -3999688, 13358959, -31568010, -13201119, -18178986, -24992414, 15239618,
+23444078, 4949413, 234613, -12477417, 6503118, -4628901, 21750788, 2201171, -8360691, -4049081,
+6809671, 14777372, 15181099, -8827768, 9188009, 5501316, 4461398, -383863, -17499844, -1875827,
+-14310831, -5134634, 180926, 2597918, 4024921, 5187247, 5062693, 14981920, 21153250, 19714974,
+-2328946, -4551055, 1945083, -9306657, 11443403, -13191455, -2119566, 11074573, -1151051, -2486786,
+-22238804, 11025718, -22178674, 7364795, -5333813, 3550864, -2349347, 2570538, -1466195, -13424457,
+7122667, 6719477, -1548873, 4524211, -1181116, 3849365, -2185065, -3568581, -1045288, -1199907,
+387621, -792421, 440234, 380105, -4894115, -2135673, -1187559, 2762738, 629750, -1434519,
+-2834142, -2985002, -149787, 681826, -1438277, 53150, -1887101, -578210, -2106145, -24770150,
+1938104, 66831840, 50955492, 8282845, 3606162, -35897336, -69956968, -60684668, -30140470, 50235548,
+54354420, 57013008, 31121870, -8089034, -36495948, -33167884, -22290880, 14517526, 21804476, 39082592,
+3182571, -29329794, -25402048, -5237713, -25453586, -11440719, 5067525, 40457520, 56983480, 37417220,
+17310866, 16508244, -36407364, -4042638, -72764800, -80631032, -51093468, -24177444, -22660248, 38006164,
+58741732, 65831648, 58848032, 51592220, 20809654, 3673271, -25298432, -6621229, -40463960, -70664024,
+-6369974, 6812892, 6381248, 23736136, 13510357, 24078124, -79897128, -43162272, -28910498, -45767708,
+-20062866, 34269544, -20870856, 23153632, 2603824, -20726976, 16339666, -17280800, 18434000, 22385370,
+-17477832, -33833604, -70900784, -67900208, -51468740, 25156160, 8156143, -9502615, 12512313, 3926674,
+-397284, -32276680, -23509040, -60274496, -20738250, -22057342, -3107946, 44515188, 46649252, 7189776,
+23750096, -14395120, -33512556, -58617176, -39511552, -36106716, -1994476, 18281528, 9568650, 14955613,
+15053324, -10565083, 8825621, -9943923, 9176734, 2786897, -1125818, -1843078, 7432978, 7566659,
+14878840, -3244848, -4487167, 15001784, 12927852, 2964601, -5480379, 11759620, -119309360, -60833916,
+-31849866, 40246528, 9195525, 153073168, 156662160, 118302728, 152738160, 160276368, 145409344, 104582456,
+94716912, 105336760, 41785736, -6118718, -65190088, -100480760, -139128480, -134955392, -201452224, -122057064,
+-79568568, -63006632, -89864136, -47113644, -13028783, -67160944, -52323976, -55054500, -12548284, -33013266,
+-11874511, -44739064, -22854058, 26861800, 27622546, 8393977, -8352638, 29263222, 23536420, -67754184,
+14044543, 46009300, 100413648, 73819752, 95597920, 39356932, 37953552, 159487168, 86237040, 163203392,
+54554676, 153072640, 105552040, 133657768, 180063280, 170729248, 138299024, 155481568, 172550304, 187961728,
+160385888, 185284352, 126290832, 187939712, 150763552, 133922984, 142627808, 78012176, 159681520, 77401216,
+46859704, -58645096, 3831111, -86686936, -97592928, -149089584, -176182784, -270648448, -264419120, -249642288,
+-233574816, -220045136, -186074096, -226881648, -279401056, -275435712, -228578704, -241840480, -227540928, -228216304,
+-194886832, -212116624, -203505744, -151722944, -167687328, -128749696, -120354648, -110850960, -70779984, -91317448,
+-20917564, -33929168, 15564961, 21195664, 66430796, 98413808, 103022840, 119105888, 105656192, 159401264,
+180569552, 179025504, 206770464, 216062624, 213958096, 163228080, 145611200, 127885872, 118441776, 115426712,
+118368224, 111352392, 84659712, 54601920, 61908732, 47909824, 37137508, 24814710, -19449222, -25184078,
+-26603564, -32422708, -39746700, -44625784, -31571768, -34623340, -27844810, -28302224, -24712704, -17761300,
+-21416318, -17484812, -17161616, -20827370, -19353122, -21348134, -17069274, -14030584, -18937584, -21628918,
+-9842454, -4809827, -6780680, -6110128, -1192390, -1637993, -3699041, -3831648, 1607392, 7614977,
+8061654, 8319889, 8273718, 7771744, 11042361, 11637751, 11705933, 8059506, 5695127, 4402342,
+7358890, 7926899, 4695473, 1319629, 1571421, -1038308, 3386582, 2667712, 2806761, 2032593,
+2815351, 2374043, 2372433, 5411659, 10991358, 7640210, 8026757, 7113003, 8857296, 8302172,
+6351183, 3989488, 3930432, 1739462, 1496796, -2151779, -4176319, -7874286, -7199439, -11671574,
+-14554034, -15828565, -16342887, -18933826, -18862422, -19845434, -19585588, -19192598, -20475720, -20874078,
+-19996830, -18028662, -15984258, -14809584, -10718628, -9844065, -8116415, -7822209, -3862249, -2450816,
+-21475, 1051193, 2760053, 3244311, 5326833, 5631239, 6084358, 4725001, 4923643, 3707094,
+3661460, 2369211, 2406792, 1288490, 1366337, 364535, 533113, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
-7670275,
--15194521, -2656437, 201327, -3478924, -7151121, -2356863, 5238787, -8405788, -4646081, -2781528,
--1647657, 2672544, -1202054, 2975339, 1359357, 2605972, -291521, 3225521, -2813741, 526670,
--1235340, 611496, 8109435, -1724429, -500901, -4019016, 5012227, 3113851, 2411087, 6257231,
--3199751, -1816234, 2138357, 5602785, -1512365, -372052, -4522601, -4952098, -3314104, 3539053,
--4398584, -3769371, -476741, 5040144, -6818798, -1448478, -5697274, -2761664, -1630477, 785979,
--513249, -4081830, 5235565, 895501, 4711579, -1902671, -1194538, -5867999, -127238, -2056753,
--2213519, 3385508, 1901597, -1049046, 1821066, 3746285, -1065689, 1611150, -2680597, -1545115,
--648003, -2525978, 2246268, 784368, 1710471, -4008815, 2880313, 1660542, 6496675, 3866008,
--1063004, -4125316, -336081, 901943, 514322, 1286343, -190052, -1395864, 57445, -947577,
-9127, -1147293, 411780, -1116155, -73014, 1254131, 424128, 648540, -798864, -559956,
-594853, 862215, 392453, -125628, 65498, -16106, 539555, -12516608, -4474282, 3587372,
--3293703, -1498944, -1384053, 1686848, -621697, -3308199, 5222680, 4647155, 1571421, -593779,
-2429878, -6427956, -922881, -6352257, -3178276, 4671851, -762894, 827318, -622233, -734439,
-125091, 9783936, 8982924, 3997541, 4804995, 5666136, -1074279, -658741, -1932735, 4999342,
--466541, -1904281, 1428614, -2920578, 2023467, 3597572, -1818382, 4056597, 4611721, 8948027,
--3477850, -4227322, 3858491, -2317135, 154082, 1882806, -5177583, 309775, -2695629, -3055869,
-6924561, 4050154, 4992900, -2840584, -3712999, 2625836, -4326643, 3056943, 13338558, 749472,
-944893, 2987687, 1331977, 1224603, 7607998, -4056060, -994285, 1387811, 1022739, -3775813,
--2736968, -3854196, -1793149, -1410897, 3519189, -596464, 3535295, 3582003, -3559454, -3852049,
--953483, 2426657, 3412889, -4038343, -744640, -1202591, -2732136, -341450, -2585034, 681289,
--132070, 1400696, -759672, 535797, -975494, -262530, -738734, 613643, -3633542, 3935801,
-6391985, -3081102, 3173444, 10011032, 3366718, 2273648, -7006166, 5792301, 1538672, -9052717,
-3838090, -2557653, -5412733, 2160906, -745714, 2081449, 5254356, -5534066, -5782100, -2599529,
-7880191, 197569, 3914863, 8128763, -12116640, -9802189, 1598265, 5951214, -4374961, 363998,
-8100845, 2065342, -1037235, -2455648, 9692667, 1164473, -2349347, 1335198, -8777303, 978716,
--4836670, 4456566, 792421, 4734665, -2384781, -1210644, 2158758, 125091, 634581, 256087,
-4571456, 3654480, -4994510, 2847563, 4047470, -6887517, 828929, -3113315, 1300301, -1592896,
--5299453, 68719, 4589173, 3961034, 8844948, -5489505, 6851010, -4540854, -899259, 4039954,
--4417374, -6616397, -2374580, 295816, -405874, -353261, -701690, 1291711, 2827162, -3855270,
--38118, 1813013, -341450, 1554778, -3134789, -1821066, -1236414, -2327872, 690416, -515933,
--1800665, 979253, 1039919, -1532230, -2311229, -137439, -529355, 2381023, -108448, -405874,
-449898, 500364, -406411, -732292, 1622424, 521302, -1277216, -665720, -975494, 130997,
-1660542, 148713, -566399, 20186346, 9036611, 12232067, -998043, -3371549, -4415764, -4409858,
-2397129, -3701725, 5620502, -627602, 7715372, 477815, 4079145, 5081483, 3913789, 3367254,
-4439386, -14977625, -4436701, -1397475, -3163780, -2761664, -4722317, -10664941, 477278, 7328288,
--4505958, 4405026, -3618510, -5315559, -4023848, 621160, -3395709, -1246614, -3481608, -227633,
-8822400, 485331, 3966402, 5592048, 7254200, -3392487, 1700270, -1606855, -5596343, 6373732,
--3555159, -242666, -5538361, 4067871, -51540, 110059, -1526861, -2561411, 1879585, 5698348,
--2379412, 3219078, 3034395, 2567854, 9770514, -9807558, -4150549, 258235, -5407901, -6992744,
--2778307, -8562554, 1291175, 10084046, -6938520, -3291556, -7924215, 533113, -2492155, -3771518,
--9290014, 5484137, 7137162, 2844342, 4989142, -2508798, 806917, -1853278, 2072322, 110059,
-4938676, -1254667, 2128693, -77846, -1257352, 1741072, 1185948, 2284923, 1902671, -300111,
-460635, 1261110, 506806, 989453, -76236, -919660, -1775432, 911607, 471373, -1195612,
-885300, 995896, -294742, 448824, 1179505, -331786, -1052804, -370978, -319438, 6200322,
-9011378, -5025112, 4716411, -4115116, -1906966, -1676648, -11041287, 7993471, -2298344, -1253594,
-12850542, 7889855, 8604430, -3552475, 374736, 1454383, -1925756, 2775086, -6482717, -247497,
--4422743, 5151814, -5036923, -3575560, -491237, 814970, -6230387, 1130650, 705448, 8161512,
-98247, -11336566, 6525666, 5999533, 8697309, -1455457, 2216740, -6307160, -4659503, -2047089,
--4523138, 1707786, 1225676, -1782948, -650151, 4626754, 7370701, -10129143, -2137820, -90194,
--4086662, -4377109, 6669548, -5430450, 2537252, -5332739, -6916508, -5261335, -3401614, 2310693,
-1006096, 12332462, -2071785, -3425237, 3734474, -3823595, -1060857, -3405372, 3493419, -3159485,
-4493073, -2326262, -2023467, 2972654, 7492571, 1977833, -6975564, -55298, -3422552, -7203734,
-2046015, 4930086, -1640678, 1063541, 1783485, 147103, -734976, 2487323, 82678, -2983392,
-51540, -1141924, -507880, -1603097, 2392297, -665720, -1909650, -2185602, 319438, 2076080,
--950798, -258235, -2884071, 161061, 551366, 870805, -499827, -2579665, -1256278, 2048699,
--855772, -2778307, 1103270, -15467788, 14878840, 7931194, -8822400, -8968965, 3695819, 11745662,
--137976, 3418794, 13755170, 4562866, 4162897, -2358474, 7183333, 6496675, 7563975, -13623636,
--8313446, -8281771, 6535867, 5572183, 7184407, 300111, -8264054, 3366718, -1231582, 3708168,
--11893301, 4562329, 7246147, -5635534, 3147137, 5797669, 1660005, -220117, 1275605, -1919314,
-10456635, 7044820, 5604396, 162672, 3646964, 8006893, -7169911, -3915400, 373662, 10601590,
-6831683, 4142496, -8004746, 248034, 5469641, 6310918, -2222646, 1923072, 6226092, 7643431,
-2442226, 7063611, 2835752, -844498, -6552510, -91268, -10921565, -4527970, -5234492, 865973,
-3613678, -6382322, -2557653, -11612518, 5036386, -3260954, -77846, 6084358, 8948564, 10755672,
-1345935, -1174674, -6701760, -2054605, 3426847, 3640522, -7113003, 2182380, -3201361, 2556043,
-475668, -2454574, 43487, 1218160, -2258616, 956704, -600222, -2746095, -1389422, -1749125,
-1690607, 2015413, -370441, -1617592, 1108102, -1255741, -872952, -2150168, -301185, -505732,
--2452426, 1886564, 1528472, 1941325, 13162464, 4014721, -2131915, -6011344, -15408732, -7595650,
-9595494, -3405372, -14154065, -3878356, -2160369, 2106682, 7983271, 11971148, -601295, 3476776,
--2652679, 5932961, -6613176, -7221451, -7593502, -13749264, 7417946, 4101157, -11323144, 288837,
--8239895, -3248606, 7483444, 4113505, 6127845, -1754494, -1474248, -2024003, 13109314, 10060961,
-10835129, -4937602, -9061844, 7194607, -1126892, -3308736, 9351754, 1588064, 9202504, -348429,
-5191542, -6450504, -228707, 4514548, -19392852, -3000035, 1043140, -14332306, 3806952, -3696893,
-13424457, 8434779, -8059506, 586263, 12265353, -1319092, 6299107, -4143033, 8461622, -3945464,
-1750736, -3285113, 303869, 5797132, -7823820, 8492224, 4482335, 4852776, 1495722, 11305965,
--4365298, -13059922, 2348273, 8959839, -4170413, -8133058, -5733245, -4181688, 9424769, 144955,
--3900904, 332323, 322659, -1869385, -1690607, 529892, 1892470, -1098438, -1125281, -734976,
-2097018, -1100585, -3409130, 926102, -3784403, 3495567, 2406792, -100932, -300111, 892279,
--1032403, 1517734, 250719, 1034013, 306016, 428423, 4221953, 1384053, -2065879, 1109175,
-583579, 1890859, -512712, 421981, -31396748, -6652368, 16855062, -13612899, -4920959, 14300094,
-5397700, -4552666, 1518808, -11865384, 10577431, -1357747, -19100794, 1349694, -1002338, 7201587,
-7084549, -3816615, -14967424, -6434398, -5718749, 293668, -7986492, -4410395, -10183367, -2952253,
-11080479, -9137543, -4585952, -3532611, -5937256, -6287296, -8505646, 5764383, 1161789, 7175817,
-1243393, -5357972, -8247411, -8160975, -1694365, 5367636, 7959648, -2861522, -7297687, 7595650,
-3152506, -11483669, -12773233, -26038240, -2327872, -8352101, -5054640, 3803731, 3918084, 2327872,
-11641509, -1270774, -5612449, -758599, -6047314, 13258027, 7037841, -2648384, 7074885, -7552700,
-3689914, 3001645, -7368017, -3281892, -6614250, 4628901, 3252364, -12158516, 7922604, 12158516,
--855235, -659278, -12433930, -4894652, 5393942, -3921842, 3541738, 12045236, -4119948, 2586644,
-1161789, 859530, -3904662, 629213, -692564, -5150203, -3120831, -549756, 1726577, 204011,
-1341640, -5373541, 551903, -2922188, 1262720, -3154117, -3037616, -1898376, -263604, 567473,
--2345589, 595927, 1207960, -419296, 450435, 2143726, 1176284, -4304631, -2854543, -1422708,
-352187, 1453846, -765578, 1473711, 228170, 1232119, -1049046, 213138, 5405217, 21036750,
--9923522, 8122857, -5292474, 157840, 11756936, -3237869, -5503464, -2606508, -1294933, 2312840,
-7938710, 27663884, -1690070, 1870995, 7439420, 1993939, -47782, -12623983, -13536663, 2276870,
-1655173, -8175470, -4456566, -1714229, 7437810, -3149285, 1308354, 49929, 3154654, -3211025,
-15862388, 9128416, -7652558, 9044664, 7821136, -9467719, 1533840, 4360466, 3049964, -2464774,
--3445101, 13583908, -11846057, 5181878, 14609868, -4911832, 1683627, 9700721, -1186485, 8467528,
-4377109, 362388, 4373888, 7299834, 9568650, 6347425, 643708, -121333, -6843494, -7177427,
-135291, 1059246, -23440858, 15452755, -3717831, -6968048, -8237748, -16844324, -19439022, -12293807,
-2203855, 9794136, -3636764, 1422171, -1695975, 9735080, -3680250, -7442105, 4233227, 2524367,
--3337727, 1411971, 6340983, -6016713, 1116692, -7716446, -2799782, -3328600, 1778117, -682900,
-3963181, 2787434, 737661, -905701, 1955821, 3041911, -192737, -5521718, 3107946, -39192,
-4800163, 4946192, 2222109, -2121177, 4145180, 1172526, -791885, 90731, 134218, -3614215,
-4164508, -156229, -2947958, 4356708, 8116415, -1393717, -1866700, 4461398, -1774895, -2709588,
--1207423, 3881577, 28335510, 28196460, -676457, -23565412, 4705674, 4680978, -2565706, 6024229,
-3650185, 1933809, -141734, -4079145, 23013508, 4122095, -3552475, -25600690, -14202383, 5917928,
--1454920, -8966281, -15158550, 2039036, 2721936, 3831648, -3681324, -16854526, -17751636, 19291382,
-18477486, 5635534, 16980154, -14491757, 2091112, 7460895, -2903398, -9218074, -16290811, -8206609,
-3036005, -778463, -7574175, 7848516, 282394, 7616051, 6374269, 350577, -17524540, -10341744,
--8171712, -1502165, 1949915, 2258616, -2870112, -5073430, 1349157, 2775623, -15657303, -4053376,
-2715493, 3475166, -7036767, -19828790, -4478577, -5041755, 14719390, -643708, 6697465, -6681359,
--4878009, -8919573, -9747965, -5865315, 1728188, -818191, 12378096, -7355132, 2257542, 14072460,
--854162, 6990060, 6466074, 13668197, 3186329, -4073240, -6908992, -6270653, -2291902, 8230768,
-1417339, 8297340, 4587025, -738734, -93952, 328028, 809601, -3819300, -4555350, -69793,
--1031866, -534187, 1488743, -992674, 1193464, -5527623, -1139777, 3257733, -70867, 2028298,
--9192304, -1131724, -252329, -1907502, 2027225, 1363652, 1315871, 1533303, 2246805, 2283312,
-2588792, -907849, -4195646, 5014375, -3198140, 12199855, -6236830, 2063195, -4680978, 866510,
-3302293, -7814693, -5155572, -13885092, -15183783, -10108742, -3852049, -788663, 452582, -8533563,
--7752416, -15912854, 7679939, -15949361, -20336670, 13084618, -12164958, -15666967, 14569603, 2656974,
--3205119, 15456514, 9045738, -12188580, 11242077, -30922690, -2018098, -8024610, -3223910, -14595373,
-25427818, 11769284, -7362648, 3614752, 8058970, -5420249, 8890045, 19864, 456340, -7362111,
-8634495, 9757629, 13412109, -21026550, -662499, -264677, 6255083, -9601936, -3553549, -9773198,
--9419937, 16492674, 5436355, -12577812, 6478958, -7832410, -8106751, -13501230, -24237038, 6211597,
-16116865, 952409, 16233903, 21822728, -1247151, -9138617, -20761336, 1479079, -2609193, 1184874,
--5138929, 4153234, -9092983, 19512036, 10944114, 17046726, 3542811, -2276333, -5177046, 6863895,
-8173860, 3499862, -1428077, -2624225, 824097, 9088688, -1578937, 3711926, -5783174, 2348810,
--9592273, 766115, 1242856, -4421132, 9145059, 5082020, -2287607, -6164352, -5182415, -1912871,
--434865, 2732136, -6076305, 1390496, 1145146, -645319, -4184372, 1402307, -9133785, -2063732,
--2130841, -2771328, 1633698, -379568, -17723182, 2486786, -39373576, -26235808, -19029926, 10357851,
-19335942, -27634894, 6311992, 19812684, 12028056, -151398, 7075959, 18687940, -8653822, -979789,
--5534602, 677531, -12188043, 8703751, 48855, 1144072, 3038689, 25006910, -1389422, -10844792,
--10819559, 6060199, 18184892, -7266548, -18679350, 5636608, 18455474, 10980621, -2638184, 9155797,
-5965710, 8826158, 1801739, 7496866, 12476343, -1442572, -21388938, 1197222, 6424198, -19789598,
--14675903, 19619410, 15158550, -14914274, -9990631, 4892505, -1140851, 9691594, 23567022, -4961761,
--4719632, 4639639, -1358283, 8907225, 4250944, -8505109, -6919729, -3126199, 6808060, 6440841,
--6440841, -17040282, -3164317, -25710212, 24321326, 4259534, -4622459, 2463701, 9999221, -388695,
--11494943, 4356171, -5074504, -7231115, 5621039, -1408212, -11376295, -18350248, -6174016, -7400229,
-15133317, -2296734, 4903242, 3044595, 1732482, -1297080, -1461900, 2522757, -4234301, 807454,
-5395016, -525060, -3026878, -1513439, -12738873, -3748970, -471373, -2222646, -9309342, -8095477,
--3590593, -1739462, -956704, -2550137, -615791, 302795, 6783901, 2594697, -1264868, -2656974,
-960999, -2331630, -2217814, 4638028, -2383170, -5206574, -1694365, -3883724, 364535, -4811437,
-23622, 3444564, 921271, -4720169, -1640141, -15107547, -701153, 2681133, -18628346, -4822712,
-13935021, 18241262, 12828530, 33986612, 20427402, 30806726, 11444477, 8173860, -15906411, 17327508,
--5830418, -1861868, -12736726, -8383240, 16649978, -5371394, 37788196, 17678622, 10897943, -1929514,
-8733279, -5852967, -17651778, -8826158, -10955388, 8068633, -10327786, -129923, -11048803, 6577206,
-15385110, 13993540, -905701, 20190642, 16782584, 902480, -5826660, -7548942, -13740674, -4606890,
-31669478, 12401181, 36456756, -11614665, 209380, -1104344, 8523363, 29377576, 10050760, 839666,
-18832894, 21684216, 22789634, -1917703, -13407277, -4796405, -3671660, -3731790, 15129022, 10448045,
-14362908, 22004728, -13575855, 33206540, -22143778, -41496900, -6385543, -12832825, 8551280, 20269024,
-9903658, -11081016, -1082869, -12044699, -9063455, -5873368, 227096, 16809966, 2881923, -4529580,
-2682744, 1427540, 5068062, 5491116, 3704946, 6700149, 1857573, 4286914, 1587527, 4738423,
-385473, -13220983, -5085778, 59593, -12422119, 1584843, -12970801, -6666863, -7829189, -7126962,
--6083821, -4322348, -1633161, 981400, 3877819, 14001593, 1995012, -8483097, 4121558, 1054951,
-12586402, -2112587, 5510443, 147640, 297963, -6426882, 1716913, 19982872, 31828392, -15721191,
--12902619, 11791296, -9932112, -1508607, -4858682, 4558034, 13676786, 15358803, 21943524, -24266566,
-27139362, -9729175, 1983201, -12513387, 10930692, 21055004, 7953206, 4052302, 845035, 25595320,
-5626944, -660351, -9030169, -3700114, -26756572, -3353833, -13357348, -31251256, 2003602, -1722282,
-12142409, -32559074, -7115150, 7839389, 11390253, 27404576, -8217883, 8091719, 14138495, 2398202,
--4537633, 7854959, -7992934, -1713155, -41634876, 3736085, -18165028, -20330764, -23561654, 9363029,
--37369972, 12216498, -14449881, -18254148, -25650082, 22672058, 23783382, 24173150, 4414153, 4530117,
-22290880, -31423054, -3368865, -9609989, 12516072, -37360308, -13175349, -3762391, 11743514, 9636833,
-7443179, 15243913, -14278082, 5648419, -17180406, -4881231, -10402948, -3861713, -3706020, 573378,
--16291885, 7432441, 9817758, -1625645, 454193, -7749732, -2711735, 7823820, -10595684, -97174,
-4836133, -12696460, 5629092, -11365557, -88047, 7305203, 1486059, -9296994, -6402186, 3755949,
--5452998, 5956583, 3884798, 6854231, -1072668, -8128226, 15528991, -7351374, -3966939, -10051834,
-6829535, -3342558, 816581, -9316321, 1085553, -11344619, -1989107, 8534637, -2820720, -4742718,
--12187507, 1519345, 1455457, -1466731, -15936476, -29631516, -566399, -10595147, 35036732, 7285339,
-24768002, -8164733, 33820720, -21329344, -39936752, 8947491, 6708202, 4489852, -19885162, -22652194,
--17756468, 6554657, -17887466, 7763691, -9522479, 26505316, -8741869, -4092030, 19090056, 514322,
--47813724, -19918448, -728534, 31368830, -3701725, -9953587, -27460410, 4661650, -6849936, -23642722,
--27991376, -3327526, 5005785, -9696962, -10729365, -28007482, 18166102, -7021198, 6452652, -13993540,
-492311, 8182987, 4929549, 24539296, 119185, -8579734, -32165546, -11397233, 15342160, -22030498,
--11322608, 8018167, 17475686, 13650480, 34979824, 26708792, 348966, 20243792, 20699058, 7003481,
-658741, 12104292, -10582263, 52926344, -24559696, -58015880, 15224585, -49399104, -2086817, -38689604,
--450435, 47105052, 5727339, -22594750, 7291244, 7923678, -14892799, -12177843, -16829830, 3508452,
--5234492, 15027017, -12158516, 10011569, -20225000, 5496485, -895501, -3374771, -4776541, 13610751,
-25993142, 8109972, 10418517, 18034030, 5283347, -18200460, 5028333, -6805913, 11860552, -3859565,
--5898601, -783295, -1492501, -4955319, -15187004, -9877351, -6884296, -907312, 1846836, -1165547,
--9745281, -21423296, -13638669, 3136400, -4061429, -448287, -8468602, 2806761, 15115064, 5932961,
-21872120, -33318746, -22703198, -13570486, -12137041, 13856101, 20679730, -12028593, 1075352, 19071266,
--38273528, 3131031, 8569533, -28302224, 14503568, -9206799, 12757127, 5248450, 14418205, 1923609,
--18878528, 19538880, -24505472, -4941897, 46498928, -18888192, 16828218, -10822781, 18953154, 17899814,
--6470905, -20214264, 21494164, 57082800, -31427886, 8403640, -41603736, 21203180, 12233677, -22041772,
-24448028, 2646774, -49890340, 7435662, 2109366, 22945326, -6397354, -3196530, -26367878, -25032680,
--13334800, 62192200, -9773198, 31712964, -27917288, 20956220, 9798431, -5417028, -21536576, -3673808,
-17139604, 35065188, -12927315, -11431055, -4002910, 7071664, 29976724, -7450695, -7477001, -22258668,
-6597070, -33634424, -15385110, 24383604, 28949154, 3506841, -2731062, -15676094, -26328686, -75346072,
-46840912, 18115636, 26777510, 2854543, -24873766, 27224188, -15516643, 11619497, 15809238, 15855409,
-36103496, -516470, 8218957, 10228465, -4353486, -15769509, -5558762, 26753888, 16138340, -14745160,
--3520263, -9978820, -2859911, 12578885, 3427384, -17285096, -11519102, 16848082, 3651259, -5114769,
-8421357, -14593225, -9222905, -2905009, 7068443, 11944304, 7431367, 2420751, 9090298, -7330436,
--10072772, 1932198, -1159104, -13086228, 1424319, -13501230, -685584, -8189966, -2150168, 2305861,
--7177427, -12912282, 4239133, -31490700, 21914534, 22075058, -43397424, 4384088, -22937272, 3014530,
--47735340, 47912508, 41202160, -4039417, -21922050, -7297687, -8946417, 23368918, -23998130, 30079804,
--39932996, -22775674, 11060615, 14282914, 2975339, 13801341, 37550900, 11118060, 17198122, 4872641,
-17886392, 13120051, -8713415, 4009889, 15123654, -830002, -1510755, 30421790, 13346611, 39854612,
--3819837, 22821846, -128312, -28724742, 29442538, -15071040, -3504693, 9378598, -27645094, -18328772,
-10496900, 43349640, 23381266, 15810311, -55707872, -12692702, -39105140, -143881, 62143880, 41208064,
-46982112, 3918621, -45871324, 14442364, 46248208, 9957882, -11747272, 41509248, 4330401, 27821188,
--71246528, -58780924, 42280732, -2847563, -19261854, -44978508, -9963787, -16752520, 19219978, 18137110,
-21059836, 21960704, -9077950, 7001334, 39189428, 36526548, 37853156, 3377455, 54439248, 27445914,
--9752797, -21362094, 256087, -10403485, 3167539, 27975806, -4442070, 1460826, 20124606, 22513144,
-2080912, 362925, 8564165, 24921010, 8625905, 11828877, 16726750, 6256157, 13004087, -351114,
--7415798, -2930242, -2863670, 1322850, 17300666, -6340983, 3014530, -13906030, 20949240, 10486700,
-9130027, 61740, 10547366, 324270, 35930084, 9573482, 36888400, -9663676, 32260036, 15156403,
-4719096, 14405857, 13845901, 16122770, -4279398, -2550137, 22033720, 7139847, 18525268, -41124848,
-24249922, 32445256, 2443837, 11089069, -29350196, 22928682, -13357348, 10997801, 1052804, 112206,
-19386946, -5982890, 12626667, -4043175, -23532662, 6302328, -1617592, 26338886, 23008140, 32748588,
-10931229, -25036438, -20655034, 21264920, 23898272, 11063299, 2137820, 7566122, -6476811, -20521890,
-3544422, -7591892, 29123100, 20326470, 17796734, 23057532, 23702314, -32618666, 36005248, 35342212,
-25969520, -17528836, -15527381, -22675280, 31397822, 18321794, 51510080, -31284542, -30878668, -23931020,
--45346264, -11834782, 49250928, 7839389, 38713760, -41129680, -43861280, 9617506, 28093382, -38461968,
-6190659, -30630634, 12384001, -35358856, -2617246, 16824998, 17969606, -32151052, 12888660, -24455544,
--48531520, -1603097, 57926224, 29894582, 23602456, -16118475, -41059352, 62746788, 50983408, 14263050,
--56140592, -2200634, -12989592, 40186936, 20795694, 24910810, -29034516, 22036940, -12863964, 14433774,
--19996830, 7186017, -22392886, 32828582, -6168110, 5391258, -38852812, 11338177, 5248987, -1832340,
--8432095, 7943542, 4479651, 4075924, -23880556, 10182294, 25111600, 1530619, 15272367, 12559021,
-10781979, 1605244, 5319317, 471373, 1784022, 1038308, -7266548, -937377, 8268349, -194884,
-16056198, 13109314, -6513318, -1448478, 7728257, 3000572, 12580496, -22695144, 15319075, 1519882,
--92879, -79750024, -15636902, -2177012, 1543504, 27562952, -73362872, -8558259, 34040836, -54659364,
-12866111, -12533251, 64100240, 33501818, -38308960, 9473087, 43291660, 4255239, -16501264, 13994614,
-10777684, 5531381, -310311, -4344897, 3787624, 6914898, 15143518, 43945032, 35716412, 38424388,
-26741540, 48410188, 24024436, 49504328, 20820928, 43912284, 1017370, 27255862, 24948928, 27014270,
-21085606, -2024003, 8473434, -33770256, -19749334, 64188824, 1191317, -25689274, -6806450, 20138028,
-34220152, 69094216, -8957154, -38048580, -18766860, -28047210, 39756900, 45035952, 50838456, 15668578,
--1447404, 34148748, -57629336, 52824340, 20401632, -27834072, -129923, -90240488, 2531346, -59635620,
--82346872, -20569672, -48237852, -21075404, 94121520, 85565416, 80816792, -63240708, -6090801, -7168301,
-63634772, 99160056, -21683680, -27908698, 55310588, 56473988, 48929340, -5698885, -7415261, -27361626,
--34130496, 5109938, -12289512, 15294379, 24261734, 20833276, 14802605, 1506460, 9739912, 26627186,
-4964982, 248034, -7089918, 1605244, 2236067, 7321309, 5886790, 5523328, 27881318, -2291902,
--15923054, 16924318, 20379082, 4780836, 32296006, 7654706, 15844671, 34979288, 47050828, 34227668,
-25371982, 10218264, 5117454, 13727252, 32372780, 14201846, 33170570, 24432996, 16136729, 22995254,
-8818105, 31176630, 27511414, 22228066, 34080564, 19495930, 6674916, 9526774, -22592064, 57437136,
-68490768, -56627532, -53075596, 18249852, 59802052, 2095407, -28900298, 795643, 15794742, 18722836,
--50549616, 19173808, -7266548, 26969710, -28028956, -12595528, -32743220, 34541200, -5234492, -14388140,
--30662308, 22635014, 12383464, -4582730, -26017838, 12505334, 10625749, 6627672, -23072564, -2603824,
--1759863, 26592290, -20202990, -4121558, -29255706, -6876243, 9245991, 23440858, -30429306, -10701985,
-31060130, 27838904, -9010841, -18521510, -804770, -9106404, 25811680, -14449881, -9059160, 13534516,
-8914741, 16911434, -15268609, 5327907, -20777978, 23900956, 26659936, 13748190, 3526705, -20674362,
-23585812, -16462073, 36915244, -26767846, 29508036, -46688980, 31302796, 4876936, -3532611, -32564442,
--10738492, 11734924, -9315784, 4132832, -9051107, 10355703, -4980552, 11502996, -11217381, -13360033,
--9934259, 11021960, -96100, -252866, -3362423, -6890738, 4056597, 12807592, -6988449, -425739,
--188442, 2705830, -1565516, 3224447, -3045669, 9681930, -724239, 12236899, -11044508, 3077881,
--5670968, 12411382, -13108240, 12282533, -13518410, 8698383, 2527052, 15285789, -4452271, 14583561,
--13324599, -8260296, -3228742, 22899156, -11700565, 18038862, -7256884, 3830037, 983011, 13263396,
--6516539, 7536057, 780073, 1729798, -2309619, 5686000, -2847027, -5694053, 13309030, -7097434,
-749472, -5251135, 3009162, -4782446, 5880884, -8202314, 10023380, -7387344, 8101382, -10732050,
-9461813, -14097156, 13513578, -7526930, 8747238, -9209484, 9279277, -9168681, 9538049, -8071854,
-8538932, -11131481, 9348533, -9041980, 9575630, -10489921, 11053635, -10041097, -1828582, -12332999,
-55098524, 58624692, -34492344, -20437066, 11632382, 55987584, 34792456, 20863878, 20076288, -8913668,
--23419382, -7088307, 13166759, -199716, -5508296, 16707423, 302258, 11777874, 1455994, -6255620,
--20979304, -5564667, -1214402, 1558536, -816581, -17047262, 19055696, 3187940, -7649337, -418759,
--572841, 281320, 12308303, 22591528, 9645960, 2297808, -8112657, -11670500, -3013993, 7352447,
-15152645, 20397336, -11356430, -11215233, 2561411, 20621212, 9311489, 4614406, -9288941, -18676666,
-15967078, -3267396, 468151, 1105954, 5157182, 4949950, -2247879, -657667, -12171400, 1897302,
-10770704, -5080947, 6443525, -3576634, -8667244, 5545877, -1629403, 3013993, -643171, 9378061,
-6361921, -13908715, 4132832, 697395, -25266218, -33571076, 984084, 2000918, 7677791, 20496120,
-2263448, -8974334, -8798777, 8096550, 8822400, 13393856, 9126269, 610422, 3905736, -1391033,
--10123775, -4174171, 1567126, -13880261, -13303124, 8626979, 9133785, -169114, 10270341, -14482093,
--2617246, -631360, 744103, -4438849, 2323577, 7903277, 10914586, 5368172, 9194451, -5747740,
--11377905, 6742562, 1085553, -2739116, 7810398, 4391067, -5354751, -19363324, -72814728, 30981746,
-112008992, 103488848, 88138632, 35310000, -83840448, -52303576, -75383656, -84247928, -75528072, -21863532,
-16202764, 63683628, 66120484, 79417168, 52431888, 53088480, 1212791, -55625732, -53327388, -65519728,
--51432232, -28475096, -2025614, -18309982, 19849728, 24687472, 39764956, 43875240, 44372380, 26589068,
-2144799, 11865384, -9889699, 6399502, -30531848, -22035330, -28242632, -45919104, -36596344, -27888834,
--19845970, -32626720, 4450660, 55927452, 63005560, 35310000, 65884260, 16436840, 38409356, 19883552,
-11217918, -16508244, -35313220, -48192756, -67894840, -51918100, -77440408, -31957242, -34529928, 22273164,
-22141630, 64768644, 74465608, 66464620, 59034864, 57873072, 36075576, 4503810, -20329690, -61770756,
--38885024, -80710488, -68968048, -95735360, -15601469, -8522826, 23514410, 30368104, 54506356, 64295660,
-53657564, 48058000, 35497904, 21053930, 2867428, -17790828, -25806310, -34571804, -53561464, -37509024,
--46648176, -32327146, -16708497, -4747013, 10441602, 10313827, 50965692, 47128676, 46549928, 36436356,
-26584774, 3225521, 16485158, -18457622, -30777736, -23852100, -66495220, -77350752, -15051713, -5177046,
--3471407, 37786048, 30787400, 41234372, 28753732, 37683508, 11363410, 9766756, -3040300, -15916612,
--20639466, -26479010, -29490320, -18043158, -3933653, -22881976, -12215961, 18338974, 25977036, 17541720,
-22480932, 15463493, 11075110, 2938831, -2190433, -7938710, -11372537, -8688719, -14183593, -7342784,
--2923799, -5259725, -7289097, 1619203, 5247913, 1210644, 8076149, 10526428, 7740068, 5596343,
-4801237, 2540473, -843424, -4862977, -4938139, -6886980, -5145371, -5315559, -3452080, -2793876,
-455803, 1325534, 2407329, 2004676, 3343632, 3434363, 2711735, 2054605, 2003602, 1465121,
-1769527, 362388, -2085207, -3311957, -1641751, -2939905, -3384971, -2922725, -1828582, -803159,
-1318018, 2040110, 2360622, 1582696, 3055869, 1952063, 1197759, 665720, 360240, -1198833,
--1299765, -1545651, -597537, -1179505, -1069984, -1098975, -169651, -463856, 324807, 254477,
-1044214, 762357, 1269163, 671089, 807454, -110059, -280247, -572304, 315143, -583042,
--417149, -1090922, -371515, -380641, 491237, 285078, 807991, 301185, 447750, -395137,
-53687, -317828, -108448, -675384, 62277, -245887, 280247, -6979, 428960, -128312,
-376883, -137439, 236223, -261993, 207769, -248034, 214748, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+-15194521, -2656437, 201327, -3478924, -7151121, -2356863, 5238787, -8405788, -4646081, -2781528,
+-1647657, 2672544, -1202054, 2975339, 1359357, 2605972, -291521, 3225521, -2813741, 526670,
+-1235340, 611496, 8109435, -1724429, -500901, -4019016, 5012227, 3113851, 2411087, 6257231,
+-3199751, -1816234, 2138357, 5602785, -1512365, -372052, -4522601, -4952098, -3314104, 3539053,
+-4398584, -3769371, -476741, 5040144, -6818798, -1448478, -5697274, -2761664, -1630477, 785979,
+-513249, -4081830, 5235565, 895501, 4711579, -1902671, -1194538, -5867999, -127238, -2056753,
+-2213519, 3385508, 1901597, -1049046, 1821066, 3746285, -1065689, 1611150, -2680597, -1545115,
+-648003, -2525978, 2246268, 784368, 1710471, -4008815, 2880313, 1660542, 6496675, 3866008,
+-1063004, -4125316, -336081, 901943, 514322, 1286343, -190052, -1395864, 57445, -947577,
+9127, -1147293, 411780, -1116155, -73014, 1254131, 424128, 648540, -798864, -559956,
+594853, 862215, 392453, -125628, 65498, -16106, 539555, -12516608, -4474282, 3587372,
+-3293703, -1498944, -1384053, 1686848, -621697, -3308199, 5222680, 4647155, 1571421, -593779,
+2429878, -6427956, -922881, -6352257, -3178276, 4671851, -762894, 827318, -622233, -734439,
+125091, 9783936, 8982924, 3997541, 4804995, 5666136, -1074279, -658741, -1932735, 4999342,
+-466541, -1904281, 1428614, -2920578, 2023467, 3597572, -1818382, 4056597, 4611721, 8948027,
+-3477850, -4227322, 3858491, -2317135, 154082, 1882806, -5177583, 309775, -2695629, -3055869,
+6924561, 4050154, 4992900, -2840584, -3712999, 2625836, -4326643, 3056943, 13338558, 749472,
+944893, 2987687, 1331977, 1224603, 7607998, -4056060, -994285, 1387811, 1022739, -3775813,
+-2736968, -3854196, -1793149, -1410897, 3519189, -596464, 3535295, 3582003, -3559454, -3852049,
+-953483, 2426657, 3412889, -4038343, -744640, -1202591, -2732136, -341450, -2585034, 681289,
+-132070, 1400696, -759672, 535797, -975494, -262530, -738734, 613643, -3633542, 3935801,
+6391985, -3081102, 3173444, 10011032, 3366718, 2273648, -7006166, 5792301, 1538672, -9052717,
+3838090, -2557653, -5412733, 2160906, -745714, 2081449, 5254356, -5534066, -5782100, -2599529,
+7880191, 197569, 3914863, 8128763, -12116640, -9802189, 1598265, 5951214, -4374961, 363998,
+8100845, 2065342, -1037235, -2455648, 9692667, 1164473, -2349347, 1335198, -8777303, 978716,
+-4836670, 4456566, 792421, 4734665, -2384781, -1210644, 2158758, 125091, 634581, 256087,
+4571456, 3654480, -4994510, 2847563, 4047470, -6887517, 828929, -3113315, 1300301, -1592896,
+-5299453, 68719, 4589173, 3961034, 8844948, -5489505, 6851010, -4540854, -899259, 4039954,
+-4417374, -6616397, -2374580, 295816, -405874, -353261, -701690, 1291711, 2827162, -3855270,
+-38118, 1813013, -341450, 1554778, -3134789, -1821066, -1236414, -2327872, 690416, -515933,
+-1800665, 979253, 1039919, -1532230, -2311229, -137439, -529355, 2381023, -108448, -405874,
+449898, 500364, -406411, -732292, 1622424, 521302, -1277216, -665720, -975494, 130997,
+1660542, 148713, -566399, 20186346, 9036611, 12232067, -998043, -3371549, -4415764, -4409858,
+2397129, -3701725, 5620502, -627602, 7715372, 477815, 4079145, 5081483, 3913789, 3367254,
+4439386, -14977625, -4436701, -1397475, -3163780, -2761664, -4722317, -10664941, 477278, 7328288,
+-4505958, 4405026, -3618510, -5315559, -4023848, 621160, -3395709, -1246614, -3481608, -227633,
+8822400, 485331, 3966402, 5592048, 7254200, -3392487, 1700270, -1606855, -5596343, 6373732,
+-3555159, -242666, -5538361, 4067871, -51540, 110059, -1526861, -2561411, 1879585, 5698348,
+-2379412, 3219078, 3034395, 2567854, 9770514, -9807558, -4150549, 258235, -5407901, -6992744,
+-2778307, -8562554, 1291175, 10084046, -6938520, -3291556, -7924215, 533113, -2492155, -3771518,
+-9290014, 5484137, 7137162, 2844342, 4989142, -2508798, 806917, -1853278, 2072322, 110059,
+4938676, -1254667, 2128693, -77846, -1257352, 1741072, 1185948, 2284923, 1902671, -300111,
+460635, 1261110, 506806, 989453, -76236, -919660, -1775432, 911607, 471373, -1195612,
+885300, 995896, -294742, 448824, 1179505, -331786, -1052804, -370978, -319438, 6200322,
+9011378, -5025112, 4716411, -4115116, -1906966, -1676648, -11041287, 7993471, -2298344, -1253594,
+12850542, 7889855, 8604430, -3552475, 374736, 1454383, -1925756, 2775086, -6482717, -247497,
+-4422743, 5151814, -5036923, -3575560, -491237, 814970, -6230387, 1130650, 705448, 8161512,
+98247, -11336566, 6525666, 5999533, 8697309, -1455457, 2216740, -6307160, -4659503, -2047089,
+-4523138, 1707786, 1225676, -1782948, -650151, 4626754, 7370701, -10129143, -2137820, -90194,
+-4086662, -4377109, 6669548, -5430450, 2537252, -5332739, -6916508, -5261335, -3401614, 2310693,
+1006096, 12332462, -2071785, -3425237, 3734474, -3823595, -1060857, -3405372, 3493419, -3159485,
+4493073, -2326262, -2023467, 2972654, 7492571, 1977833, -6975564, -55298, -3422552, -7203734,
+2046015, 4930086, -1640678, 1063541, 1783485, 147103, -734976, 2487323, 82678, -2983392,
+51540, -1141924, -507880, -1603097, 2392297, -665720, -1909650, -2185602, 319438, 2076080,
+-950798, -258235, -2884071, 161061, 551366, 870805, -499827, -2579665, -1256278, 2048699,
+-855772, -2778307, 1103270, -15467788, 14878840, 7931194, -8822400, -8968965, 3695819, 11745662,
+-137976, 3418794, 13755170, 4562866, 4162897, -2358474, 7183333, 6496675, 7563975, -13623636,
+-8313446, -8281771, 6535867, 5572183, 7184407, 300111, -8264054, 3366718, -1231582, 3708168,
+-11893301, 4562329, 7246147, -5635534, 3147137, 5797669, 1660005, -220117, 1275605, -1919314,
+10456635, 7044820, 5604396, 162672, 3646964, 8006893, -7169911, -3915400, 373662, 10601590,
+6831683, 4142496, -8004746, 248034, 5469641, 6310918, -2222646, 1923072, 6226092, 7643431,
+2442226, 7063611, 2835752, -844498, -6552510, -91268, -10921565, -4527970, -5234492, 865973,
+3613678, -6382322, -2557653, -11612518, 5036386, -3260954, -77846, 6084358, 8948564, 10755672,
+1345935, -1174674, -6701760, -2054605, 3426847, 3640522, -7113003, 2182380, -3201361, 2556043,
+475668, -2454574, 43487, 1218160, -2258616, 956704, -600222, -2746095, -1389422, -1749125,
+1690607, 2015413, -370441, -1617592, 1108102, -1255741, -872952, -2150168, -301185, -505732,
+-2452426, 1886564, 1528472, 1941325, 13162464, 4014721, -2131915, -6011344, -15408732, -7595650,
+9595494, -3405372, -14154065, -3878356, -2160369, 2106682, 7983271, 11971148, -601295, 3476776,
+-2652679, 5932961, -6613176, -7221451, -7593502, -13749264, 7417946, 4101157, -11323144, 288837,
+-8239895, -3248606, 7483444, 4113505, 6127845, -1754494, -1474248, -2024003, 13109314, 10060961,
+10835129, -4937602, -9061844, 7194607, -1126892, -3308736, 9351754, 1588064, 9202504, -348429,
+5191542, -6450504, -228707, 4514548, -19392852, -3000035, 1043140, -14332306, 3806952, -3696893,
+13424457, 8434779, -8059506, 586263, 12265353, -1319092, 6299107, -4143033, 8461622, -3945464,
+1750736, -3285113, 303869, 5797132, -7823820, 8492224, 4482335, 4852776, 1495722, 11305965,
+-4365298, -13059922, 2348273, 8959839, -4170413, -8133058, -5733245, -4181688, 9424769, 144955,
+-3900904, 332323, 322659, -1869385, -1690607, 529892, 1892470, -1098438, -1125281, -734976,
+2097018, -1100585, -3409130, 926102, -3784403, 3495567, 2406792, -100932, -300111, 892279,
+-1032403, 1517734, 250719, 1034013, 306016, 428423, 4221953, 1384053, -2065879, 1109175,
+583579, 1890859, -512712, 421981, -31396748, -6652368, 16855062, -13612899, -4920959, 14300094,
+5397700, -4552666, 1518808, -11865384, 10577431, -1357747, -19100794, 1349694, -1002338, 7201587,
+7084549, -3816615, -14967424, -6434398, -5718749, 293668, -7986492, -4410395, -10183367, -2952253,
+11080479, -9137543, -4585952, -3532611, -5937256, -6287296, -8505646, 5764383, 1161789, 7175817,
+1243393, -5357972, -8247411, -8160975, -1694365, 5367636, 7959648, -2861522, -7297687, 7595650,
+3152506, -11483669, -12773233, -26038240, -2327872, -8352101, -5054640, 3803731, 3918084, 2327872,
+11641509, -1270774, -5612449, -758599, -6047314, 13258027, 7037841, -2648384, 7074885, -7552700,
+3689914, 3001645, -7368017, -3281892, -6614250, 4628901, 3252364, -12158516, 7922604, 12158516,
+-855235, -659278, -12433930, -4894652, 5393942, -3921842, 3541738, 12045236, -4119948, 2586644,
+1161789, 859530, -3904662, 629213, -692564, -5150203, -3120831, -549756, 1726577, 204011,
+1341640, -5373541, 551903, -2922188, 1262720, -3154117, -3037616, -1898376, -263604, 567473,
+-2345589, 595927, 1207960, -419296, 450435, 2143726, 1176284, -4304631, -2854543, -1422708,
+352187, 1453846, -765578, 1473711, 228170, 1232119, -1049046, 213138, 5405217, 21036750,
+-9923522, 8122857, -5292474, 157840, 11756936, -3237869, -5503464, -2606508, -1294933, 2312840,
+7938710, 27663884, -1690070, 1870995, 7439420, 1993939, -47782, -12623983, -13536663, 2276870,
+1655173, -8175470, -4456566, -1714229, 7437810, -3149285, 1308354, 49929, 3154654, -3211025,
+15862388, 9128416, -7652558, 9044664, 7821136, -9467719, 1533840, 4360466, 3049964, -2464774,
+-3445101, 13583908, -11846057, 5181878, 14609868, -4911832, 1683627, 9700721, -1186485, 8467528,
+4377109, 362388, 4373888, 7299834, 9568650, 6347425, 643708, -121333, -6843494, -7177427,
+135291, 1059246, -23440858, 15452755, -3717831, -6968048, -8237748, -16844324, -19439022, -12293807,
+2203855, 9794136, -3636764, 1422171, -1695975, 9735080, -3680250, -7442105, 4233227, 2524367,
+-3337727, 1411971, 6340983, -6016713, 1116692, -7716446, -2799782, -3328600, 1778117, -682900,
+3963181, 2787434, 737661, -905701, 1955821, 3041911, -192737, -5521718, 3107946, -39192,
+4800163, 4946192, 2222109, -2121177, 4145180, 1172526, -791885, 90731, 134218, -3614215,
+4164508, -156229, -2947958, 4356708, 8116415, -1393717, -1866700, 4461398, -1774895, -2709588,
+-1207423, 3881577, 28335510, 28196460, -676457, -23565412, 4705674, 4680978, -2565706, 6024229,
+3650185, 1933809, -141734, -4079145, 23013508, 4122095, -3552475, -25600690, -14202383, 5917928,
+-1454920, -8966281, -15158550, 2039036, 2721936, 3831648, -3681324, -16854526, -17751636, 19291382,
+18477486, 5635534, 16980154, -14491757, 2091112, 7460895, -2903398, -9218074, -16290811, -8206609,
+3036005, -778463, -7574175, 7848516, 282394, 7616051, 6374269, 350577, -17524540, -10341744,
+-8171712, -1502165, 1949915, 2258616, -2870112, -5073430, 1349157, 2775623, -15657303, -4053376,
+2715493, 3475166, -7036767, -19828790, -4478577, -5041755, 14719390, -643708, 6697465, -6681359,
+-4878009, -8919573, -9747965, -5865315, 1728188, -818191, 12378096, -7355132, 2257542, 14072460,
+-854162, 6990060, 6466074, 13668197, 3186329, -4073240, -6908992, -6270653, -2291902, 8230768,
+1417339, 8297340, 4587025, -738734, -93952, 328028, 809601, -3819300, -4555350, -69793,
+-1031866, -534187, 1488743, -992674, 1193464, -5527623, -1139777, 3257733, -70867, 2028298,
+-9192304, -1131724, -252329, -1907502, 2027225, 1363652, 1315871, 1533303, 2246805, 2283312,
+2588792, -907849, -4195646, 5014375, -3198140, 12199855, -6236830, 2063195, -4680978, 866510,
+3302293, -7814693, -5155572, -13885092, -15183783, -10108742, -3852049, -788663, 452582, -8533563,
+-7752416, -15912854, 7679939, -15949361, -20336670, 13084618, -12164958, -15666967, 14569603, 2656974,
+-3205119, 15456514, 9045738, -12188580, 11242077, -30922690, -2018098, -8024610, -3223910, -14595373,
+25427818, 11769284, -7362648, 3614752, 8058970, -5420249, 8890045, 19864, 456340, -7362111,
+8634495, 9757629, 13412109, -21026550, -662499, -264677, 6255083, -9601936, -3553549, -9773198,
+-9419937, 16492674, 5436355, -12577812, 6478958, -7832410, -8106751, -13501230, -24237038, 6211597,
+16116865, 952409, 16233903, 21822728, -1247151, -9138617, -20761336, 1479079, -2609193, 1184874,
+-5138929, 4153234, -9092983, 19512036, 10944114, 17046726, 3542811, -2276333, -5177046, 6863895,
+8173860, 3499862, -1428077, -2624225, 824097, 9088688, -1578937, 3711926, -5783174, 2348810,
+-9592273, 766115, 1242856, -4421132, 9145059, 5082020, -2287607, -6164352, -5182415, -1912871,
+-434865, 2732136, -6076305, 1390496, 1145146, -645319, -4184372, 1402307, -9133785, -2063732,
+-2130841, -2771328, 1633698, -379568, -17723182, 2486786, -39373576, -26235808, -19029926, 10357851,
+19335942, -27634894, 6311992, 19812684, 12028056, -151398, 7075959, 18687940, -8653822, -979789,
+-5534602, 677531, -12188043, 8703751, 48855, 1144072, 3038689, 25006910, -1389422, -10844792,
+-10819559, 6060199, 18184892, -7266548, -18679350, 5636608, 18455474, 10980621, -2638184, 9155797,
+5965710, 8826158, 1801739, 7496866, 12476343, -1442572, -21388938, 1197222, 6424198, -19789598,
+-14675903, 19619410, 15158550, -14914274, -9990631, 4892505, -1140851, 9691594, 23567022, -4961761,
+-4719632, 4639639, -1358283, 8907225, 4250944, -8505109, -6919729, -3126199, 6808060, 6440841,
+-6440841, -17040282, -3164317, -25710212, 24321326, 4259534, -4622459, 2463701, 9999221, -388695,
+-11494943, 4356171, -5074504, -7231115, 5621039, -1408212, -11376295, -18350248, -6174016, -7400229,
+15133317, -2296734, 4903242, 3044595, 1732482, -1297080, -1461900, 2522757, -4234301, 807454,
+5395016, -525060, -3026878, -1513439, -12738873, -3748970, -471373, -2222646, -9309342, -8095477,
+-3590593, -1739462, -956704, -2550137, -615791, 302795, 6783901, 2594697, -1264868, -2656974,
+960999, -2331630, -2217814, 4638028, -2383170, -5206574, -1694365, -3883724, 364535, -4811437,
+23622, 3444564, 921271, -4720169, -1640141, -15107547, -701153, 2681133, -18628346, -4822712,
+13935021, 18241262, 12828530, 33986612, 20427402, 30806726, 11444477, 8173860, -15906411, 17327508,
+-5830418, -1861868, -12736726, -8383240, 16649978, -5371394, 37788196, 17678622, 10897943, -1929514,
+8733279, -5852967, -17651778, -8826158, -10955388, 8068633, -10327786, -129923, -11048803, 6577206,
+15385110, 13993540, -905701, 20190642, 16782584, 902480, -5826660, -7548942, -13740674, -4606890,
+31669478, 12401181, 36456756, -11614665, 209380, -1104344, 8523363, 29377576, 10050760, 839666,
+18832894, 21684216, 22789634, -1917703, -13407277, -4796405, -3671660, -3731790, 15129022, 10448045,
+14362908, 22004728, -13575855, 33206540, -22143778, -41496900, -6385543, -12832825, 8551280, 20269024,
+9903658, -11081016, -1082869, -12044699, -9063455, -5873368, 227096, 16809966, 2881923, -4529580,
+2682744, 1427540, 5068062, 5491116, 3704946, 6700149, 1857573, 4286914, 1587527, 4738423,
+385473, -13220983, -5085778, 59593, -12422119, 1584843, -12970801, -6666863, -7829189, -7126962,
+-6083821, -4322348, -1633161, 981400, 3877819, 14001593, 1995012, -8483097, 4121558, 1054951,
+12586402, -2112587, 5510443, 147640, 297963, -6426882, 1716913, 19982872, 31828392, -15721191,
+-12902619, 11791296, -9932112, -1508607, -4858682, 4558034, 13676786, 15358803, 21943524, -24266566,
+27139362, -9729175, 1983201, -12513387, 10930692, 21055004, 7953206, 4052302, 845035, 25595320,
+5626944, -660351, -9030169, -3700114, -26756572, -3353833, -13357348, -31251256, 2003602, -1722282,
+12142409, -32559074, -7115150, 7839389, 11390253, 27404576, -8217883, 8091719, 14138495, 2398202,
+-4537633, 7854959, -7992934, -1713155, -41634876, 3736085, -18165028, -20330764, -23561654, 9363029,
+-37369972, 12216498, -14449881, -18254148, -25650082, 22672058, 23783382, 24173150, 4414153, 4530117,
+22290880, -31423054, -3368865, -9609989, 12516072, -37360308, -13175349, -3762391, 11743514, 9636833,
+7443179, 15243913, -14278082, 5648419, -17180406, -4881231, -10402948, -3861713, -3706020, 573378,
+-16291885, 7432441, 9817758, -1625645, 454193, -7749732, -2711735, 7823820, -10595684, -97174,
+4836133, -12696460, 5629092, -11365557, -88047, 7305203, 1486059, -9296994, -6402186, 3755949,
+-5452998, 5956583, 3884798, 6854231, -1072668, -8128226, 15528991, -7351374, -3966939, -10051834,
+6829535, -3342558, 816581, -9316321, 1085553, -11344619, -1989107, 8534637, -2820720, -4742718,
+-12187507, 1519345, 1455457, -1466731, -15936476, -29631516, -566399, -10595147, 35036732, 7285339,
+24768002, -8164733, 33820720, -21329344, -39936752, 8947491, 6708202, 4489852, -19885162, -22652194,
+-17756468, 6554657, -17887466, 7763691, -9522479, 26505316, -8741869, -4092030, 19090056, 514322,
+-47813724, -19918448, -728534, 31368830, -3701725, -9953587, -27460410, 4661650, -6849936, -23642722,
+-27991376, -3327526, 5005785, -9696962, -10729365, -28007482, 18166102, -7021198, 6452652, -13993540,
+492311, 8182987, 4929549, 24539296, 119185, -8579734, -32165546, -11397233, 15342160, -22030498,
+-11322608, 8018167, 17475686, 13650480, 34979824, 26708792, 348966, 20243792, 20699058, 7003481,
+658741, 12104292, -10582263, 52926344, -24559696, -58015880, 15224585, -49399104, -2086817, -38689604,
+-450435, 47105052, 5727339, -22594750, 7291244, 7923678, -14892799, -12177843, -16829830, 3508452,
+-5234492, 15027017, -12158516, 10011569, -20225000, 5496485, -895501, -3374771, -4776541, 13610751,
+25993142, 8109972, 10418517, 18034030, 5283347, -18200460, 5028333, -6805913, 11860552, -3859565,
+-5898601, -783295, -1492501, -4955319, -15187004, -9877351, -6884296, -907312, 1846836, -1165547,
+-9745281, -21423296, -13638669, 3136400, -4061429, -448287, -8468602, 2806761, 15115064, 5932961,
+21872120, -33318746, -22703198, -13570486, -12137041, 13856101, 20679730, -12028593, 1075352, 19071266,
+-38273528, 3131031, 8569533, -28302224, 14503568, -9206799, 12757127, 5248450, 14418205, 1923609,
+-18878528, 19538880, -24505472, -4941897, 46498928, -18888192, 16828218, -10822781, 18953154, 17899814,
+-6470905, -20214264, 21494164, 57082800, -31427886, 8403640, -41603736, 21203180, 12233677, -22041772,
+24448028, 2646774, -49890340, 7435662, 2109366, 22945326, -6397354, -3196530, -26367878, -25032680,
+-13334800, 62192200, -9773198, 31712964, -27917288, 20956220, 9798431, -5417028, -21536576, -3673808,
+17139604, 35065188, -12927315, -11431055, -4002910, 7071664, 29976724, -7450695, -7477001, -22258668,
+6597070, -33634424, -15385110, 24383604, 28949154, 3506841, -2731062, -15676094, -26328686, -75346072,
+46840912, 18115636, 26777510, 2854543, -24873766, 27224188, -15516643, 11619497, 15809238, 15855409,
+36103496, -516470, 8218957, 10228465, -4353486, -15769509, -5558762, 26753888, 16138340, -14745160,
+-3520263, -9978820, -2859911, 12578885, 3427384, -17285096, -11519102, 16848082, 3651259, -5114769,
+8421357, -14593225, -9222905, -2905009, 7068443, 11944304, 7431367, 2420751, 9090298, -7330436,
+-10072772, 1932198, -1159104, -13086228, 1424319, -13501230, -685584, -8189966, -2150168, 2305861,
+-7177427, -12912282, 4239133, -31490700, 21914534, 22075058, -43397424, 4384088, -22937272, 3014530,
+-47735340, 47912508, 41202160, -4039417, -21922050, -7297687, -8946417, 23368918, -23998130, 30079804,
+-39932996, -22775674, 11060615, 14282914, 2975339, 13801341, 37550900, 11118060, 17198122, 4872641,
+17886392, 13120051, -8713415, 4009889, 15123654, -830002, -1510755, 30421790, 13346611, 39854612,
+-3819837, 22821846, -128312, -28724742, 29442538, -15071040, -3504693, 9378598, -27645094, -18328772,
+10496900, 43349640, 23381266, 15810311, -55707872, -12692702, -39105140, -143881, 62143880, 41208064,
+46982112, 3918621, -45871324, 14442364, 46248208, 9957882, -11747272, 41509248, 4330401, 27821188,
+-71246528, -58780924, 42280732, -2847563, -19261854, -44978508, -9963787, -16752520, 19219978, 18137110,
+21059836, 21960704, -9077950, 7001334, 39189428, 36526548, 37853156, 3377455, 54439248, 27445914,
+-9752797, -21362094, 256087, -10403485, 3167539, 27975806, -4442070, 1460826, 20124606, 22513144,
+2080912, 362925, 8564165, 24921010, 8625905, 11828877, 16726750, 6256157, 13004087, -351114,
+-7415798, -2930242, -2863670, 1322850, 17300666, -6340983, 3014530, -13906030, 20949240, 10486700,
+9130027, 61740, 10547366, 324270, 35930084, 9573482, 36888400, -9663676, 32260036, 15156403,
+4719096, 14405857, 13845901, 16122770, -4279398, -2550137, 22033720, 7139847, 18525268, -41124848,
+24249922, 32445256, 2443837, 11089069, -29350196, 22928682, -13357348, 10997801, 1052804, 112206,
+19386946, -5982890, 12626667, -4043175, -23532662, 6302328, -1617592, 26338886, 23008140, 32748588,
+10931229, -25036438, -20655034, 21264920, 23898272, 11063299, 2137820, 7566122, -6476811, -20521890,
+3544422, -7591892, 29123100, 20326470, 17796734, 23057532, 23702314, -32618666, 36005248, 35342212,
+25969520, -17528836, -15527381, -22675280, 31397822, 18321794, 51510080, -31284542, -30878668, -23931020,
+-45346264, -11834782, 49250928, 7839389, 38713760, -41129680, -43861280, 9617506, 28093382, -38461968,
+6190659, -30630634, 12384001, -35358856, -2617246, 16824998, 17969606, -32151052, 12888660, -24455544,
+-48531520, -1603097, 57926224, 29894582, 23602456, -16118475, -41059352, 62746788, 50983408, 14263050,
+-56140592, -2200634, -12989592, 40186936, 20795694, 24910810, -29034516, 22036940, -12863964, 14433774,
+-19996830, 7186017, -22392886, 32828582, -6168110, 5391258, -38852812, 11338177, 5248987, -1832340,
+-8432095, 7943542, 4479651, 4075924, -23880556, 10182294, 25111600, 1530619, 15272367, 12559021,
+10781979, 1605244, 5319317, 471373, 1784022, 1038308, -7266548, -937377, 8268349, -194884,
+16056198, 13109314, -6513318, -1448478, 7728257, 3000572, 12580496, -22695144, 15319075, 1519882,
+-92879, -79750024, -15636902, -2177012, 1543504, 27562952, -73362872, -8558259, 34040836, -54659364,
+12866111, -12533251, 64100240, 33501818, -38308960, 9473087, 43291660, 4255239, -16501264, 13994614,
+10777684, 5531381, -310311, -4344897, 3787624, 6914898, 15143518, 43945032, 35716412, 38424388,
+26741540, 48410188, 24024436, 49504328, 20820928, 43912284, 1017370, 27255862, 24948928, 27014270,
+21085606, -2024003, 8473434, -33770256, -19749334, 64188824, 1191317, -25689274, -6806450, 20138028,
+34220152, 69094216, -8957154, -38048580, -18766860, -28047210, 39756900, 45035952, 50838456, 15668578,
+-1447404, 34148748, -57629336, 52824340, 20401632, -27834072, -129923, -90240488, 2531346, -59635620,
+-82346872, -20569672, -48237852, -21075404, 94121520, 85565416, 80816792, -63240708, -6090801, -7168301,
+63634772, 99160056, -21683680, -27908698, 55310588, 56473988, 48929340, -5698885, -7415261, -27361626,
+-34130496, 5109938, -12289512, 15294379, 24261734, 20833276, 14802605, 1506460, 9739912, 26627186,
+4964982, 248034, -7089918, 1605244, 2236067, 7321309, 5886790, 5523328, 27881318, -2291902,
+-15923054, 16924318, 20379082, 4780836, 32296006, 7654706, 15844671, 34979288, 47050828, 34227668,
+25371982, 10218264, 5117454, 13727252, 32372780, 14201846, 33170570, 24432996, 16136729, 22995254,
+8818105, 31176630, 27511414, 22228066, 34080564, 19495930, 6674916, 9526774, -22592064, 57437136,
+68490768, -56627532, -53075596, 18249852, 59802052, 2095407, -28900298, 795643, 15794742, 18722836,
+-50549616, 19173808, -7266548, 26969710, -28028956, -12595528, -32743220, 34541200, -5234492, -14388140,
+-30662308, 22635014, 12383464, -4582730, -26017838, 12505334, 10625749, 6627672, -23072564, -2603824,
+-1759863, 26592290, -20202990, -4121558, -29255706, -6876243, 9245991, 23440858, -30429306, -10701985,
+31060130, 27838904, -9010841, -18521510, -804770, -9106404, 25811680, -14449881, -9059160, 13534516,
+8914741, 16911434, -15268609, 5327907, -20777978, 23900956, 26659936, 13748190, 3526705, -20674362,
+23585812, -16462073, 36915244, -26767846, 29508036, -46688980, 31302796, 4876936, -3532611, -32564442,
+-10738492, 11734924, -9315784, 4132832, -9051107, 10355703, -4980552, 11502996, -11217381, -13360033,
+-9934259, 11021960, -96100, -252866, -3362423, -6890738, 4056597, 12807592, -6988449, -425739,
+-188442, 2705830, -1565516, 3224447, -3045669, 9681930, -724239, 12236899, -11044508, 3077881,
+-5670968, 12411382, -13108240, 12282533, -13518410, 8698383, 2527052, 15285789, -4452271, 14583561,
+-13324599, -8260296, -3228742, 22899156, -11700565, 18038862, -7256884, 3830037, 983011, 13263396,
+-6516539, 7536057, 780073, 1729798, -2309619, 5686000, -2847027, -5694053, 13309030, -7097434,
+749472, -5251135, 3009162, -4782446, 5880884, -8202314, 10023380, -7387344, 8101382, -10732050,
+9461813, -14097156, 13513578, -7526930, 8747238, -9209484, 9279277, -9168681, 9538049, -8071854,
+8538932, -11131481, 9348533, -9041980, 9575630, -10489921, 11053635, -10041097, -1828582, -12332999,
+55098524, 58624692, -34492344, -20437066, 11632382, 55987584, 34792456, 20863878, 20076288, -8913668,
+-23419382, -7088307, 13166759, -199716, -5508296, 16707423, 302258, 11777874, 1455994, -6255620,
+-20979304, -5564667, -1214402, 1558536, -816581, -17047262, 19055696, 3187940, -7649337, -418759,
+-572841, 281320, 12308303, 22591528, 9645960, 2297808, -8112657, -11670500, -3013993, 7352447,
+15152645, 20397336, -11356430, -11215233, 2561411, 20621212, 9311489, 4614406, -9288941, -18676666,
+15967078, -3267396, 468151, 1105954, 5157182, 4949950, -2247879, -657667, -12171400, 1897302,
+10770704, -5080947, 6443525, -3576634, -8667244, 5545877, -1629403, 3013993, -643171, 9378061,
+6361921, -13908715, 4132832, 697395, -25266218, -33571076, 984084, 2000918, 7677791, 20496120,
+2263448, -8974334, -8798777, 8096550, 8822400, 13393856, 9126269, 610422, 3905736, -1391033,
+-10123775, -4174171, 1567126, -13880261, -13303124, 8626979, 9133785, -169114, 10270341, -14482093,
+-2617246, -631360, 744103, -4438849, 2323577, 7903277, 10914586, 5368172, 9194451, -5747740,
+-11377905, 6742562, 1085553, -2739116, 7810398, 4391067, -5354751, -19363324, -72814728, 30981746,
+112008992, 103488848, 88138632, 35310000, -83840448, -52303576, -75383656, -84247928, -75528072, -21863532,
+16202764, 63683628, 66120484, 79417168, 52431888, 53088480, 1212791, -55625732, -53327388, -65519728,
+-51432232, -28475096, -2025614, -18309982, 19849728, 24687472, 39764956, 43875240, 44372380, 26589068,
+2144799, 11865384, -9889699, 6399502, -30531848, -22035330, -28242632, -45919104, -36596344, -27888834,
+-19845970, -32626720, 4450660, 55927452, 63005560, 35310000, 65884260, 16436840, 38409356, 19883552,
+11217918, -16508244, -35313220, -48192756, -67894840, -51918100, -77440408, -31957242, -34529928, 22273164,
+22141630, 64768644, 74465608, 66464620, 59034864, 57873072, 36075576, 4503810, -20329690, -61770756,
+-38885024, -80710488, -68968048, -95735360, -15601469, -8522826, 23514410, 30368104, 54506356, 64295660,
+53657564, 48058000, 35497904, 21053930, 2867428, -17790828, -25806310, -34571804, -53561464, -37509024,
+-46648176, -32327146, -16708497, -4747013, 10441602, 10313827, 50965692, 47128676, 46549928, 36436356,
+26584774, 3225521, 16485158, -18457622, -30777736, -23852100, -66495220, -77350752, -15051713, -5177046,
+-3471407, 37786048, 30787400, 41234372, 28753732, 37683508, 11363410, 9766756, -3040300, -15916612,
+-20639466, -26479010, -29490320, -18043158, -3933653, -22881976, -12215961, 18338974, 25977036, 17541720,
+22480932, 15463493, 11075110, 2938831, -2190433, -7938710, -11372537, -8688719, -14183593, -7342784,
+-2923799, -5259725, -7289097, 1619203, 5247913, 1210644, 8076149, 10526428, 7740068, 5596343,
+4801237, 2540473, -843424, -4862977, -4938139, -6886980, -5145371, -5315559, -3452080, -2793876,
+455803, 1325534, 2407329, 2004676, 3343632, 3434363, 2711735, 2054605, 2003602, 1465121,
+1769527, 362388, -2085207, -3311957, -1641751, -2939905, -3384971, -2922725, -1828582, -803159,
+1318018, 2040110, 2360622, 1582696, 3055869, 1952063, 1197759, 665720, 360240, -1198833,
+-1299765, -1545651, -597537, -1179505, -1069984, -1098975, -169651, -463856, 324807, 254477,
+1044214, 762357, 1269163, 671089, 807454, -110059, -280247, -572304, 315143, -583042,
+-417149, -1090922, -371515, -380641, 491237, 285078, 807991, 301185, 447750, -395137,
+53687, -317828, -108448, -675384, 62277, -245887, 280247, -6979, 428960, -128312,
+376883, -137439, 236223, -261993, 207769, -248034, 214748, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
-5177583,
--5267778, -4377109, 1221381, -2516851, -390842, -728534, 2542084, 10096394, -2692408, 1004486,
--9618579, -5273683, 2947421, -4591320, -3559991, -1364189, -4056597, -1090922, 8399882, -3616363,
--5360656, 9051107, 7267085, -2574296, -1671816, 8283918, 2371359, 3204046, 1612760, 392453,
--2112587, -3510599, 3299609, -2618856, 2468533, 878858, 957778, -1175210, -2841121, -2251100,
-2036888, -2589329, -4057134, -1848447, -1807644, -5195300, 5874442, 9046812, -5201206, 2943126,
-261993, -2048163, 1447941, -238908, 86436, -3048890, 5616207, -3339337, -4095251, 4649302,
-1435593, -258772, -512175, 2547989, 174483, -88047, -1596654, -822486, 4937065, -7208029,
-2460480, 1307818, -1737851, -1735167, -2499671, -3676492, 40265, 3516505, 3621194, 1035624,
--56908, 801548, -1993402, 2612414, -984621, 1530619, -1107028, -737124, -528818, -672162,
--511101, 1196148, -45097, 483721, 746251, 428423, 1272921, 1574106, -513785, -384400,
--700617, -510027, -1000191, -317291, -663036, -572841, -1017370, -424128, -103079, 618475,
--387084, -15932181, -2506114, -5825587, -1422171, 1280974, -4331475, -9711995, 7125888, -2388002,
-1667521, 4758824, -1502165, -488553, -581431, 2190970, -1671816, 8011725, -319438, 6180458,
-9076340, -10878078, 2293513, 7558606, 534187, 1507534, 5245766, 9670119, 1396938, -2172180,
-4881231, -1291175, -2505577, 2183991, 1735704, 2160906, -2707440, 9856950, -4531728, 2491618,
-3691525, -38655, -465467, -4800700, 798864, -5563057, 4695473, -5682242, -4352413, 3160022,
--5287642, 3647501, -3686693, 1538135, -2972654, 2032593, 4305168, 8406325, 2594160, 962073,
-4103305, 74625, -7239168, 976031, 2055679, 2775086, -1808718, 394600, -983011, 1394254,
-4063576, 2456721, 5545340, 1924145, 751082, -3352759, -1706176, 3275986, 2553895, -3208341,
-3882114, 1909113, 4243965, -1302449, -1002875, -1305670, 207769, -799401, -3382287, -603980,
-570694, 587874, 2202781, 266288, -641561, -812823, 936840, 491774, -1649268, -223338,
--114890, 40265, 677531, 209380, -760746, -79457, -719944, -5772973, 4298189, 2821794,
-869731, 5475547, -290447, 3076807, 7434052, 4623533, 9749039, 1902671, -1435056, -9962177,
-1577327, -6100464, -2039036, 789737, 2258079, -3811784, 7516, 9620727, -4901095, -234613,
--4893579, 2355790, 58519, 1887638, 3930432, 4646618, -2898029, 3492882, 3593814, 6969658,
-277562, -6786049, 674310, 7387344, -710817, -432181, -1003949, 4977867, -5749351, 514859,
-3794067, 4982699, 5946382, -2202245, -3872450, -465467, 8541616, 830002, 3093987, -6902550,
--3089155, 1719598, 1445257, -1150514, 4532801, -274341, -924492, 2574833, -4349728, 316754,
--671626, 3020973, 4590783, -6700686, -1499481, 2225330, 4525822, -2843805, -2757369, 1915019,
-5361193, -427349, 3606699, 2597918, 3697967, 1596654, 4124242, 6247030, 253403, 1786706,
--1700270, 2574833, 1815697, -1130113, -2780455, -473520, -1966558, 703838, -1796907, 840740,
--811749, 491774, -1454920, 93952, -130460, 364535, -868120, 1439351, -1302449, -513785,
--573915, -646929, 185757, 837519, 821949, 505732, -380105, -230854, -598074, 1927367,
-357556, 17353816, 8363375, 6865505, -6477885, -1096827, -9024263, -6380174, 9610526, 914828,
--6108517, -2785286, 2039573, -5708549, -542240, 9847823, 3900904, -360777, 3127810, 14421963,
--9589588, 2341831, -1810866, -4603131, 8250632, 4247723, 4274566, -3170760, 3689914, 4794794,
--1472100, 3094524, -980326, -4050154, 844498, 1589138, -720481, 4918275, 1195075, -1708323,
-5381057, -2410014, -2542621, -3069291, 1509144, 2117419, 389768, 3920232, 517544, 12221329,
-799401, 45634, -2826625, -2486786, 2920578, -9003325, 377957, 5486821, 4320200, -4835060,
-7174743, 176631, 3212636, 5784784, -1619203, 4491462, 3448859, -1519345, -5159330, -3888019,
-3248606, 8200167, 2332167, -3483755, -1731946, -1949378, 5614596, -4690641, -258772, 4682588,
-5374615, 800475, 687732, -1423245, -2231236, 156766, -508954, -1823751, -375810, -797253,
--920734, -1386738, -714575, 1967095, 1308891, -317828, 2484102, 793495, 1012539, -254477,
-857920, -368830, -198642, -33286, 303332, 373125, 709743, 1410897, 360777, 224412,
--390305, 4216584, 1078037, 11373610, 2795487, 6800544, -326954, 1548873, 1879048, 1935957,
--1890859, 6959458, -2922188, 7526930, -3679713, -2832531, 1952063, -4875862, -1416266, -1490891,
-2105071, 3172370, -1976222, -7161321, 3295314, -8671002, -3517578, -1414118, -187905, -1297617,
-1727651, 7907035, 4446902, 608275, -8120710, -7747584, 297427, 5362804, -2759517, 909996,
--966905, -3386582, -5197448, 628676, 3582003, 7643431, 6855842, -782221, 2232846, -9378061,
-3281892, 6389838, 7196755, -783832, 6568616, 1496796, 9541807, 5716602, 1867774, 4399121,
--377957, -2374043, -1632088, -854162, 6014028, -2174327, -3312494, -4041027, 6006512, -1324461,
--10386305, 2194192, 4012573, 5971079, 7630547, 13066901, -5374078, -4320737, 7716446, 8220031,
-6436546, 2862059, -1290101, -1347009, -4999342, -5534602, -1530619, -1913945, 1745367, -97174,
--1600412, -95026, -3085934, 812823, -373125, 1613834, 246424, -2254321, -150861, 398358,
--353798, -73014, 1180042, 2268280, 2182917, 1897839, 513785, 590558, -3155727, 302258,
-2281702, -1296006, 1275068, 430570, -855772, -602906, -357019, 2370822, 1700270, 503585,
--158377, 1378148, 146566, 985158, 523986, -573915, 744103, -276489, -292595, -14833206,
-7100118, 10510859, 1185411, 8783745, 1007707, -7482907, -899259, -3382824, -2066416, 8125005,
--10481331, -2669859, 3434363, 4254702, 9157944, -1634235, 3866008, -14416058, -7607461, 3948149,
-8482560, -5488432, -4253092, -5898064, -7525320, 4056060, -1075352, 280784, 2575907, 1542967,
-2695092, 11552388, -7037841, 11216844, -779537, 2459406, 2272575, 2601140, -3491809, 4037806,
--7960185, -1273995, -4413616, -613643, -5956583, 7223598, 1069984, 19636590, 452582, -1036161,
--5086852, 1068910, -4287451, 10362682, -6436009, 1555315, -11533598, 8733816, 7676181, -9200894,
-5582384, 6050535, 2266132, -4889821, -5353677, 8763344, 2046552, -12167642, 5770289, -5666673,
--3351148, 3009698, -3250753, 1318018, 2344515, 3546032, -6602439, -15471009, 2126546, 3730179,
--637803, -3159485, 6034966, -2458869, -2160369, -2692408, 3964255, -4863514, -2155537, -2673080,
--2284386, 1487669, -2084133, 2902861, 242666, -4300336, 3161633, 646929, -2458332, 73014,
-2836826, 1183264, 1074, -188979, -960462, -2179159, 60130, 875100, 163746, -28454,
-1229971, -2492692, 158377, 725850, -3147674, -2078764, -2679523, 6600291, 1284195, -133144,
--5574331, -9376987, 3321620, -5033702, -2024003, 9067750, -12355010, -5153961, -9103720, -933619,
-7809325, -732292, -6441377, -8948564, -10038949, 3903052, 10617696, -3053722, 6632503, 9976135,
--2768643, -2317672, 3907347, 5540508, 11851425, -1734093, 6659347, 950262, 14090177, 10349261,
-2829310, -3338263, 1415192, -7834557, 13677323, 3160022, -6048388, -6723772, 7881265, 6643241,
-4786204, 3393024, 2330020, 7060390, -3077881, 3099356, -4704063, 648540, 366146, -7146289,
--9526237, -3404299, -6735046, 4284767, -4119948, -3079492, -10392210, -6560563, 1966021, -3580929,
--1266479, 4946729, 10365904, 13063680, 6788196, 5382668, -4856535, -10712722, 158914, -7511898,
--17278116, 105227, -1242319, 6388227, 4310000, -4270808, -9642738, -5274757, 4616016, -281320,
--1104880, -4032438, 2092186, 2138894, 1700807, -1080184, -5509906, 1096827, 681826, 475131,
--1276679, -734439, -780610, 620623, -2720862, -2821794, -332860, 269509, -2272038, 127775,
--490700, 1990717, 2706366, -3045669, -155156, 2084133, -413391, -1324461, 453656, 235149,
-2934000, -1006096, 1867774, 1426466, -1336272, -1206349, -20002736, -6047851, 983011, 9792525,
--7092602, 4828080, 2989834, -318364, 14486388, -1875827, 13624710, -8016020, 3914326, 4424890,
-47782, -12484396, -5317170, -4618701, -14388140, 4935991, -3677029, 3093450, -1021665, 5237176,
--151398, -5516349, 2842195, -9117679, 6638409, 4023848, 15497853, -606664, 333397, 14337138,
--12760348, 11141145, 13448079, -8448738, 8608188, -3605088, -4252555, -7086159, 1653026, 1686848,
-9516037, 6255083, -2643016, -3987340, -8369818, 4534949, 4970888, -9397925, -4395899, 8843338,
--15620796, 1463510, -12104292, 6760816, 496606, -220117, 3447248, -4046933, 1206349, 14251775,
--6042482, 3118146, 6763500, 4374424, 589484, -7514046, 3145527, 2780455, -4548371, -12179990,
--47782, -2786360, -9831180, 7309498, -2813204, 2689187, -573378, 1382980, 2882997, 2982855,
--5583458, 1357210, -732829, 1228361, -628676, 3633542, 1620276, -907312, -870805, -5266167,
--412317, -3604015, 422517, 585189, 3601867, -5572720, 1855426, 2990371, -2322504, -3468186,
-1021129, -517544, -2261300, 1653026, -664109, -2177549, 542777, -750546, -2725157, -719407,
--1848447, -3367791, 1344862, -1047435, 71404, -1858647, -627602, -1901597, 646929, 3554086,
--723165, -2209224, -8232916, 23741506, -8893267, 4671851, 3296924, 8520141, 2551211, 5199595,
-11705933, -9050570, -5711770, -674310, 16324097, -6263673, -7095823, -8075613, 3955665, 2818036,
-8885214, -18680960, 71404, 469762, -1380295, 9711995, -2445984, 7505456, 13681618, -9950902,
--4605816, 4000225, -7630010, -9388799, 6252399, -8717173, 12856985, -2144263, -13460964, -1695975,
--7777112, 4310000, 10464688, -135828, 5237176, -586800, 1942936, 12669617, 273267, 9207873,
-3496104, -6778532, 7016903, 6169184, 726386, 5192616, 17965312, -2933463, -8251706, 4363150,
--10413148, 871342, 17153026, 5930813, 2604361, -3227668, -5070209, -3265786, -6235219, 10477573,
--6965900, -1760937, -4389994, 11879880, -21849572, 7493108, 7531225, 13135621, 2975876, 1056025,
-11392938, -3198677, -5109401, -6463389, 36507, -5367099, -670552, -4610111, 3652333, 406948,
--4288525, -4328254, -3801046, 1454383, 4377646, 3668976, 650151, 318364, -2048699, -4694400,
--1712618, -1174137, 1829119, 2051921, -923418, -1121523, 803159, -2799245, -136902, -2716030,
--1522566, -3591667, -5032091, -1321776, 1548873, 5493800, 749472, -1473711, -1584843, 2177549,
--654446, 5265093, 2234994, 945967, 604517, 2026151, 34920768, 10443750, -6388227, -8471286,
--7170985, 25326348, -21838834, 1746978, 8518531, 1272921, -11854647, -2668249, 5907728, -1262184,
-1347546, 10503879, -10900090, -9127342, 4445291, 13686450, 8399345, 3532074, -6670621, -6486475,
--6280316, -7276749, 6737193, 2683818, 9670119, 7781944, 4394289, -10323491, -4949413, -10998874,
--2228014, -7223062, -16641925, -3110630, 7363185, 1627256, -7749732, -7782481, 141197, 3988951,
-10330470, 1292785, 5209259, 1475321, 20010790, -17446694, 11333345, 2102923, -17834852, -3245922,
--5421860, -4434554, 2663954, -7820062, 4627291, 3372623, 7888245, -9746355, 3365644, 15490336,
-7204271, 24637006, -5596880, -665720, -6144488, -3158949, 593242, -548682, -23488640, 10375567,
--1066226, -1431835, 6267431, 6221260, -6722698, -10036802, -10997801, -4123169, 7655243, 3229816,
--2637647, -6516539, 5591511, -10206453, 5209796, -1739462, -4684736, -5807870, -6316823, -2327336,
--2174327, 897648, -2699924, -1844689, 1179505, -1953136, -1848447, 980863, -5191542, -2413772,
--467078, -1829656, -3023657, -1401233, -5276368, 623307, 3742527, 5097053, 5986648, -4549981,
--5558225, -3970161, -5039608, 65498, -139586, -3136400, -3560528, 1191317, -589484, 3264712,
--1190243, -382789, 2495376, 2498597, -2259690, -11547556, 2700998, 6511708, -383863, -7034620,
--5125507, -15379741, -18593450, 3986804, -8313446, -3738769, 2586644, 4832, -2058900, -8075076,
--4213363, 84289, 6358699, 7074348, -10260677, -5649493, 6266358, -8915815, -4578972, -14708116,
-14291504, -1701344, 12866111, 1311039, 4758824, 13967234, 10314901, -5943161, 3036005, 7193534,
--7467875, -2814277, 6729677, -2348273, -16627966, -2884608, -11677479, 17182016, -1889786, -4318590,
--9805410, -13979582, 4991289, 3201361, 3257196, 7192460, 79457, -2383707, 7236483, 2071785,
--1477469, 2779381, -4167192, 11435887, -2726767, 7293928, 20891258, 4885526, 3869229, 5122822,
-7669201, -18031346, -14832670, 5840619, -16180752, 11383811, -2333778, 13013214, 3324305, 25161530,
-9740986, 1924682, -7295002, -2985539, -12869333, -632971, 3958886, 2738579, 2687576, 4644471,
-11344619, -4493610, -9261023, -2966749, -2593624, 3826279, 10302016, 3899294, -2510409, 3227668,
-3012383, -279710, -2399813, -5755256, 395674, 935766, -2937221, -3716221, -758062, -6110128,
-4476430, 2805688, -2987150, -701153, -6316823, -2829310, 2947421, 5819144, -2757906, -2291365,
--85362, -4802847, 5432597, 33286, 3929895, -4970888, 53150, -5156645, 3249680, 5780489,
--6316287, -1620276, -29613262, -20998632, 7899519, -8448738, -17052094, -26277146, -466004, 1948841,
--4893042, -4306779, 25107842, 6413460, -17843978, 3647501, -10813654, -9373766, -8742406, -16215112,
--2464238, 1372242, -21970906, -21101174, -7772280, 3368328, 2274185, 12619151, 10976863, 6592775,
--5122822, -299574, 5139465, -11457899, -6115497, -3963181, 3992709, -10761577, -6292664, 7224672,
-4657892, -361314, -1399623, -2062658, 6329708, -15445239, -8516383, -7631620, 10457708, -11977590,
-8362838, 13615046, 18983218, -1291175, 5654325, -4480725, -8660802, -11761768, -2883534, 11526618,
-4629438, -21017960, 1215476, 21698174, -14134201, 682900, -2782602, 1143535, 5465346, 11068131,
--1989644, 3514894, 13608604, 9145596, 6173479, -10169409, -11924977, 8959302, -8534637, -16757889,
--15780247, 17573396, 7019587, 9721122, 4504884, -2734284, -3035468, 8410620, 6287296, 1619203,
-8426189, -3171297, -10208064, -5408438, -6997576, 3018288, 11069741, 5271536, 1677185, 6398965,
-3902515, 5976984, -732292, -2949032, 4035659, -1233193, -3685619, -3393561, 3233037, -9667971,
-2570001, 5833640, -3015067, 7198365, 5295158, -290447, -329102, 6805913, 1279363, -1413044,
--3797288, -4042638, 1636919, 3667365, 1278290, 2988760, -3757023, -2913599, 1850594, -2455648,
-2002529, -1439888, -17039210, 9243843, -13720810, -25462176, 4897874, -15615964, -8501351, 29322278,
-2387465, 21872658, 20364050, -4347581, 21429202, 28795072, 21094196, -26385058, -3095061, -12437152,
--11881490, -7827578, 912681, -11061688, 23125714, 6439230, 12870943, -10958072, 12340515, 8884140,
-3460133, -13863618, -10142565, 21339546, -3544959, -20484310, -964757, -23658828, -2956548, 6213744,
--7961796, 238371, -18649284, 8485245, 17712446, 9097278, -2120103, -9620190, -3064996, -2612414,
--2811056, -9018894, -22991496, 15580531, 9341554, 8027831, 10359461, -13549548, 21114596, 2368138,
--5795522, -4832375, -16032039, -7485055, 11132555, 6394670, 18135500, -2116345, -19786914, -35738424,
--1634235, -449898, 602369, -13001403, -17439714, -3601330, 12317429, -6433324, -6773164, 4530117,
--1124745, 17874580, -3084324, -16224776, -5264556, 16641925, 1560147, 3033858, -15866683, -5969468,
--2592550, 6610492, 9252970, -4474819, 3548180, 526670, 7063611, 4142496, -148713, 2785286,
-9302899, 2008971, 371515, -3048353, 1522566, 5679558, 341450, 2829847, 10588705, 1360431,
--2903398, -7550553, -259309, 5286031, -4591320, 2649995, -1745904, -1690607, -2855617, -4566624,
--2793339, -21475, 6946573, 4860829, -6131066, -12479564, -3045132, 4549444, 2302103, 1596117,
-1280974, 38182796, 23584740, -3087545, -22368726, 4945655, 10692858, 6640557, 15768436, 24429774,
--10956462, 2287070, -21876416, 6405944, 1468879, -8071318, 38551088, 15023259, 33220498, 14137959,
-8337069, -28924994, 137439, 16588774, 2656437, -15263777, 6260989, -23487566, -9598715, 1921461,
-6849399, -6835978, -4940286, 5437966, 3884261, 1999844, 20734492, 13362180, 3144453, -8148627,
-14179298, -9149891, -7093139, -13584982, -4939213, 18362058, -28893318, -161598, 12496207, -13979045,
--4809290, 5713380, 4494147, 26656178, -1848983, -24696, -12643847, 26066694, -11821361, 3528316,
-2376191, 18131742, -4499515, -6180458, 16668231, -28419262, 7142531, 3016678, -12228846, 23205172,
--29008210, -3372623, -9924059, -18986440, -9974525, -1445793, 7820599, 18283676, 29378650, 14762876,
-19295678, 30176978, -12519830, 5774584, 7176354, -12524125, 16947940, 601832, -23257784, 12275017,
-5998996, -8131984, 447750, 17945448, 13021804, 4199405, 10200010, 3392487, 3090766, 9964324,
--2091649, 4379793, 8321499, -1866163, 1554778, -1342177, -841277, 6366216, 861141, 895501,
--5707475, -2944200, -4062502, -7332046, 1296543, -3943317, -12462921, 4884989, 6914898, -2270964,
--482110, 3483219, -4543002, 84289, 12436615, -1709397, -3937948, -7864622, -36939404, 10394358,
-1699196, 44554916, 9885941, 8546448, -1463510, 21830246, 5585605, -32303522, -5247913, 34968548,
--10567230, -7134478, 2663417, -2222109, 513249, -6154688, 35931696, 41371272, -22442814, 10167261,
-10797548, 6184216, 11402601, -17978196, -25356414, 19430432, 4984310, -13710072, -24267638, -7050189,
--8458938, 22039088, 17569638, 10177462, -20614770, 11273752, -9130564, 7227356, 865973, 9523016,
-20293720, 4860829, -46538120, -14047227, 8109972, -18400714, 5246303, 19683836, 6198712, 34203508,
--11681237, -51166484, -1583769, -20354386, 17425220, 15547245, -6003828, -10834592, 15415174, -24550570,
--4822175, -13241921, 11186779, 16076063, 13241384, 14933601, -11552925, -20815560, -62539556, -29644938,
--36595804, 5737540, -24962886, -11841762, -5472325, -26910654, 13942001, -48469244, 14593762, -34856344,
--25778930, 24870008, 28849832, -9028021, -1726577, 15907485, 20166482, -28467580, 63351, 4644471,
--4658966, 4999879, 14722611, -1979980, 6178848, -1325534, 5380521, -12619151, -7204808, -5781026,
--8902393, -1849520, 11373073, 4933307, 10164040, 346282, -12086038, -10448045, 1140314, 6230387,
--3045669, 6615324, 6288906, 16775605, 947577, 5712307, 1113470, 3925600, -8159364, -2372433,
-2337536, -6135361, -455803, -2873870, -67646, 3013457, 16813724, -1741609, -11258183, -11708081,
-319438, -1149441, -17904644, -11280732, 8134131, -12583180, -75699, -624918, -47482476, -7521562,
-32510754, -38400228, 4379256, 13750338, 1069984, 9520332, -2159295, -30485678, -1823214, 15982110,
-6212134, 24017458, 17257178, -26181584, -27191438, -4089883, -11347304, -4337380, -45268420, 16842178,
-18985366, 31831076, 15389405, 28950764, -11913702, 3684545, 30866320, -9839233, 33533494, 8800925,
-18104898, 5546414, -7563975, 15896211, -19105626, 675921, 42209864, -32439888, 3759707, -42098732,
--18037252, -30344480, -19651086, -5527623, 3009698, -10138270, -31061740, -6006512, -52124796, 59558312,
-21804476, 121870, -7268159, -14678588, 4153770, -26532160, 5705864, -39642548, 1749125, 1813550,
-9668508, 25086904, 37267968, 1080184, -60203092, -28225988, 27047556, -13473849, -11314554, -14934675,
--7229504, 30005178, 7168838, -17048872, 13564044, -28403156, 5848672, -5462662, -11632382, -28650654,
--15235323, 17990544, -7648800, -6985228, 10683194, -10676752, -2338073, 17942762, -20051592, -14297409,
--5145371, -4404489, 23597624, 10528575, 7157026, 13373454, 6288906, -2190433, 11479911, -197569,
-8724152, 10962904, 18101140, -6559489, 975494, -1820529, 13671955, 19163608, 8221641, -4469451,
--202400, -5660767, -12648679, 24525338, -5934034, 12729746, -5959267, 4058207, -6385543, -5319854,
-7525857, 13320304, 660351, -4360466, -2358474, 11683922, -24481850, 17531520, 26642220, 10716480,
--13151190, -15962246, 7283728, -20801064, 33268280, 28914794, 42342472, -30051350, -38480760, -8866423,
--1555315, -18501108, 24613920, 31313532, -23390928, 530965, -41170484, -11344619, -19864224, -35945120,
-10864657, 30759482, 17579302, -23163296, -9903658, 3372623, 19634442, 3626026, -2157147, 8215199,
--2979097, -9703942, -33434710, -21638046, 7762617, -2490544, -18500572, 19910932, 16525960, 11530913,
--34207268, -30011620, 28239946, 18021146, 20819854, -21270288, -56540024, -9999221, 22846542, 23904178,
--6396280, 57054344, -7695508, 57346940, -86078120, -105357160, -44179644, -63266480, 77846, 25384868,
-12419972, 69508144, -8512625, -4004520, 12177843, -13285408, -55110872, -47995724, -54646480, 43627740,
-34652868, -12877923, -4333085, -89792200, 24465744, -717260, -40975060, 17175574, 25131464, 40329208,
-30596810, 14896557, -3474629, -26395258, 99858, 1737851, -8214662, -11138461, 31139050, 20025822,
-11683922, 32851668, -25730076, 6351720, -7732015, -15135465, 19598472, -2835752, -36245764, 107374,
-10445897, -12392054, 16086800, -6429029, 3738232, -7526394, 38631084, 31090732, 35724464, -30472256,
--7784628, 38113540, 27158152, -26531624, -17396766, -26736172, -16752520, 22339198, 24228984, -8544301,
--3398930, 42409580, 914291, 4160213, -6412386, 7767985, 6387690, -1183264, -21705154, -5304285,
--5213017, 6811282, 12234214, -41001368, 35798552, 27214524, 11224360, 33700996, -19766514, 12422119,
--55763172, -26965952, 14719390, 20619602, 9507447, 7216619, 6988449, 14461692, -6733435, 63525252,
-5775658, 39574904, 11410654, -19037442, 48440252, -6540162, 19056234, 1053878, 17398376, -1776506,
--984621, 10684268, 24340116, 7137162, 17798882, 1311576, -3595425, 38268160, 4412005, -7979513,
-724239, -2928631, -19160922, -5422396, 10830297, 7189239, -43027520, -10443750, 5521181, 10061498,
-45146548, 36820216, -44486736, -24466282, 3766686, -9767293, 49715856, 4944581, 45864884, -32123134,
-23138600, 4753455, 2640331, 21369072, 47143708, 30637612, 6386617, 41704132, 16456167, -19463718,
--41819560, 36884104, -33324114, 22349936, -43920336, 303332, -69720208, 72599440, -17799956, 2604361,
--48775260, 44112000, -16940962, 14033269, -35745940, 42616276, -22017612, -19889456, -14391362, -26627724,
-8465917, -14875082, 12838194, -13782013, 23453206, -25996364, 23501524, -27372900, 15315853, -32067300,
-25900800, -11008001, 28732258, -9859634, 15154255, -12033961, 9853729, -13741211, 711891, -15024869,
-17536352, 7195681, 5123896, -5921686, 1896228, -11967389, 9542880, -12294881, 22080964, -17964238,
--21314848, -9589051, 8958228, -25463788, 20010252, -6191732, 11107859, -7144141, 6437619, -11637214,
-5773510, -5937256, 6866579, 8506720, -1548873, -70432096, -16990890, -5887327, 7875897, 5825050,
--43038256, -25747792, 39869644, -15700253, 15041512, -17843978, 4381404, 49015776, 80228376, 5113159,
--2284923, 39621612, 17999134, 16183437, 49905372, 724776, 30443266, 35861368, 35366372, -14004278,
-15625091, 30966714, 44198972, 35341140, 54230404, 29953638, 69093672, 72351408, 53135724, 57632556,
-40112312, -4633196, 19969988, 9976135, -14370424, -15120969, 12035035, 33556580, 8358007, 1290101,
-461709, 16463147, 51023136, 38911868, 85249736, 16821240, -43246024, 17306034, 1530082, 17711372,
--21876416, 33414846, -60647624, -79304960, 22815940, 79352208, 35310000, 15714212, -97885528, 403727,
-38199440, 59411744, 80742704, -34151968, 5693516, -138068704, -90195920, 36730560, 52434572, -76937360,
--64770792, -40973452, 76203992, 50211924, -89407800, -116577760, -22760106, 47378856, -54930484, 26477400,
--7719667, -20205674, -29280940, 4129074, 12811351, 19589882, -2648921, -48232484, -40833328, 5142150,
--12108587, 20242718, 3650185, -4990215, -17424682, -12110734, 8543227, -1036161, -39133056, -20125680,
--29372744, -15625091, 6459631, -15387257, -10361609, -35792108, -46693272, -65610456, -64578056, -55283208,
--45997488, -51809116, -50516868, -39297340, -53311820, -57550416, -47942572, -55251532, -34628712, -9359807,
--30546882, -46035072, -29348586, 1824824, -15487115, -8813273, -9610526, 24503326, 27148488, 1336809,
-13028246, 13716515, 9131100, 8070781, 1649268, 6434935, 6009196, 5952825, 4459250, 6941741,
-2534031, 5660767, 2572686, 2167885, -310311, 1459752, -12943421, -2404645, -25675314, 65765612,
-74876312, -84359064, -34395172, 31914292, -22994718, 15774341, -30278982, 27632208, -25573310, 6174553,
-391379, -12712029, 6827925, 1298154, -7561290, -6074695, -20365124, -5682779, 4956393, 2397129,
--20762408, 19978578, -19014894, -6851547, -16440061, 1775432, -15721191, 32702418, -382252, 8525510,
--8529805, 8489540, -9090298, 9176198, 20387136, 27124330, -7111929, 8966818, 10376641, 23766202,
--14687714, 15200426, -13070659, 28575492, -7339562, -16670379, 9633075, -7504919, -8452496, 2955474,
--2267206, 12031814, -6322729, -16831440, -15697032, 2097018, 3382287, -29058138, 9007083, -4886599,
--2561948, 4472672, -7775502, -5375152, 3226594, -5093295, 4267050, -15950972, 18381386, -51746304,
-27348204, -22405234, 34631396, -23582054, 31047782, -1002338, 17023640, 9042517, 13912473, 5577015,
-2631741, 5229660, -727997, -22255446, -4138738, 304943, -8348343, -4792110, -4181688, -3042448,
-1611150, -8953396, -260919, 2325725, -358630, -14208826, 14861124, -3189550, 8157754, -15114527,
-7394860, -9665824, 6400038, -11170136, 12424267, -15986405, 22042310, -4964446, 3543885, -23101018,
-15986405, -2017561, 11810623, -22043920, 5985037, -9810242, 3955128, -5355824, 2721399, -14941654,
-7624104, -3933653, -7808788, -295279, 18016314, -20656646, 2084670, -8868571, 10980084, -14946486,
-13836774, -12307766, 4398047, -9276056, 10880763, -5180268, 6365679, -5686537, 7032472, -9357660,
-5451924, -5226975, -601295, -2597918, 4673998, -3182571, 2500208, 151398, 3530463, -4391604,
-1714766, 573378, -2002529, 2812130, -2643552, 1512365, -3767223, 3187403, -4074850, 2299418,
--3038153, 2733210, -2217814, 2360622, -2996814, 3821447, -3767760, 3324305, -3528316, 4008278,
--3062312, 4036196, -4028143, 4740570, -4981625, 4315906, -5147519, 4202089, -4096862, 4968204,
--5756867, 5255966, -4980015, 4649839, -6388227, 5134634, -6193343, 5432597, -4622459, 4992900,
--4686883, 4253092, -4955319, 4454955, -5487895, 3221762, -13464722, 63453848, 38643432, -21047488,
--23996520, -2203855, 79073032, 32902134, 11183558, 21771190, -19033684, -24256364, 6852084, 15247134,
-4117263, 1310502, -8288213, -6629819, 7553237, 7500624, 18508088, 8108899, -9783936, -4439923,
--4771172, -10057740, 20938, 1697586, 5030481, 6171331, 326418, -2711198, 7475391, -21252036,
--7914551, 9374840, 13662291, 16711718, -9291088, -5538361, -9884867, 17099876, 12009802, -3289408,
-5598490, -19855634, -16995722, 15784542, 12459700, 3847217, -29873646, -15471009, 1392643, 4974646,
-19925964, 14105209, -2056753, 5789079, 7186554, -9406515, 8749385, 9294846, -2585570, -5741298,
-5703717, -10060424, 1113470, -1725503, -6878390, -10770167, 15116674, 3054259, 3487514, 20583094,
-25215752, 8870181, 20442970, 18976240, -2811056, -5111011, -5517423, -3642132, 8096550, 12958990,
--4835060, 4006668, -11427297, -4197257, -380105, 2794413, -6142877, -7531762, 8024610, 15016816,
-6677064, 4199405, 6475200, -7150047, 791348, 7180112, 1603633, -2179159, 2007360, -669478,
--8511551, 17827872, 6003291, -14135274, -13202193, 5481452, -2439005, 14089640, 7638063, -1700270,
-5460514, 1895691, -2664490, -543850, -3811247, 4213363, 6663642, 1112933, -1439888, -5438503,
-5007395, -972810, -4417911, -43487, -22725208, -62944356, 21849572, 115550192, 90984584, 86991880,
-27906550, -80997176, -48477296, -71810240, -71901512, -65655556, -22823994, 35314296, 45668388, 71666896,
-64316060, 38640748, 6570763, 6266358, -31016106, -49197776, -70275328, -27097486, -19026706, 6283537,
--3895535, 35668628, 24186034, 10222559, 47805132, 26771068, 20501490, -4198331, 17996986, -32443646,
--24368570, -20238960, -23535884, -31121334, -18668612, -12433930, -31561030, -21907018, 8463770, 46511812,
-44990320, 51003812, 40143448, 58319752, 10157598, 14919106, -38726648, -28741384, -24566676, -58217208,
--57895084, -52022256, -24525338, -30494804, 7199439, 22542672, 32538672, 65272228, 64191508, 61373472,
-55128588, 48183092, 10341744, -28356448, -46116136, -82468200, -70792336, -51678120, -70365520, -32692218,
--14664092, 3085397, 69113000, 54127324, 79495016, 78480864, 57379688, 16035797, -15830176, -23491324,
--27196270, -24291798, -46761992, -57884884, -40415104, -27639726, -24408300, 3055332, 16263431, 25849798,
-22287122, 46531140, 50889456, 38444788, 30588758, 5098663, -10771778, -21965536, -35923644, -30869540,
--21909702, -34474628, -46715284, -4944044, 2673080, -7691213, 40192840, 53087944, 33940980, 29841432,
-2181844, 8434242, -5580237, -9351218, -23276576, -27288074, -17978196, -20396800, 2832531, -8140574,
-2553895, 403727, 18234284, 9860171, 9364102, 17135308, 17386028, 35433, -4702989, -12428025,
--12525198, -3532074, -2925947, -5995775, -6067178, 1192390, 1365263, -1463510, 2862596, 3314641,
-2930778, 927713, 11160473, 4163971, -426812, 1773822, -621160, -4090420, -4307852, -4912369,
--5885179, -5176510, -1663226, -890669, 318364, 4896263, 6327561, 4913980, 4652524, 2456185,
-427349, 69256, -807991, -4698158, -2812130, -33823, -3035468, -4320200, -2272038, -503048,
-1955284, 1388348, 41876, 1182190, 3136400, 2243584, 1388885, 3139621, 1510218, -199716,
--1432909, -2407329, -1995549, -2024540, -1692754, -1196685, -916976, -79457, 227096, -11274,
-542240, 1161252, 1073742, 1734093, 2356327, 1202054, 314069, 637803, -437013, -1038845,
--1635846, -1818919, -1676111, -1313186, -657130, 46708, 64961, 932545, 1189706, 718333,
-846109, 1579474, 1020055, 208843, -450435, -348966, -376883, -853625, -1220308, -637803,
--333397, -4832, 125091, 314606, 209380, 341450, 147640, 158914, -8053, 117038,
--33823, 57982, -71404, 66035, },
+-5267778, -4377109, 1221381, -2516851, -390842, -728534, 2542084, 10096394, -2692408, 1004486,
+-9618579, -5273683, 2947421, -4591320, -3559991, -1364189, -4056597, -1090922, 8399882, -3616363,
+-5360656, 9051107, 7267085, -2574296, -1671816, 8283918, 2371359, 3204046, 1612760, 392453,
+-2112587, -3510599, 3299609, -2618856, 2468533, 878858, 957778, -1175210, -2841121, -2251100,
+2036888, -2589329, -4057134, -1848447, -1807644, -5195300, 5874442, 9046812, -5201206, 2943126,
+261993, -2048163, 1447941, -238908, 86436, -3048890, 5616207, -3339337, -4095251, 4649302,
+1435593, -258772, -512175, 2547989, 174483, -88047, -1596654, -822486, 4937065, -7208029,
+2460480, 1307818, -1737851, -1735167, -2499671, -3676492, 40265, 3516505, 3621194, 1035624,
+-56908, 801548, -1993402, 2612414, -984621, 1530619, -1107028, -737124, -528818, -672162,
+-511101, 1196148, -45097, 483721, 746251, 428423, 1272921, 1574106, -513785, -384400,
+-700617, -510027, -1000191, -317291, -663036, -572841, -1017370, -424128, -103079, 618475,
+-387084, -15932181, -2506114, -5825587, -1422171, 1280974, -4331475, -9711995, 7125888, -2388002,
+1667521, 4758824, -1502165, -488553, -581431, 2190970, -1671816, 8011725, -319438, 6180458,
+9076340, -10878078, 2293513, 7558606, 534187, 1507534, 5245766, 9670119, 1396938, -2172180,
+4881231, -1291175, -2505577, 2183991, 1735704, 2160906, -2707440, 9856950, -4531728, 2491618,
+3691525, -38655, -465467, -4800700, 798864, -5563057, 4695473, -5682242, -4352413, 3160022,
+-5287642, 3647501, -3686693, 1538135, -2972654, 2032593, 4305168, 8406325, 2594160, 962073,
+4103305, 74625, -7239168, 976031, 2055679, 2775086, -1808718, 394600, -983011, 1394254,
+4063576, 2456721, 5545340, 1924145, 751082, -3352759, -1706176, 3275986, 2553895, -3208341,
+3882114, 1909113, 4243965, -1302449, -1002875, -1305670, 207769, -799401, -3382287, -603980,
+570694, 587874, 2202781, 266288, -641561, -812823, 936840, 491774, -1649268, -223338,
+-114890, 40265, 677531, 209380, -760746, -79457, -719944, -5772973, 4298189, 2821794,
+869731, 5475547, -290447, 3076807, 7434052, 4623533, 9749039, 1902671, -1435056, -9962177,
+1577327, -6100464, -2039036, 789737, 2258079, -3811784, 7516, 9620727, -4901095, -234613,
+-4893579, 2355790, 58519, 1887638, 3930432, 4646618, -2898029, 3492882, 3593814, 6969658,
+277562, -6786049, 674310, 7387344, -710817, -432181, -1003949, 4977867, -5749351, 514859,
+3794067, 4982699, 5946382, -2202245, -3872450, -465467, 8541616, 830002, 3093987, -6902550,
+-3089155, 1719598, 1445257, -1150514, 4532801, -274341, -924492, 2574833, -4349728, 316754,
+-671626, 3020973, 4590783, -6700686, -1499481, 2225330, 4525822, -2843805, -2757369, 1915019,
+5361193, -427349, 3606699, 2597918, 3697967, 1596654, 4124242, 6247030, 253403, 1786706,
+-1700270, 2574833, 1815697, -1130113, -2780455, -473520, -1966558, 703838, -1796907, 840740,
+-811749, 491774, -1454920, 93952, -130460, 364535, -868120, 1439351, -1302449, -513785,
+-573915, -646929, 185757, 837519, 821949, 505732, -380105, -230854, -598074, 1927367,
+357556, 17353816, 8363375, 6865505, -6477885, -1096827, -9024263, -6380174, 9610526, 914828,
+-6108517, -2785286, 2039573, -5708549, -542240, 9847823, 3900904, -360777, 3127810, 14421963,
+-9589588, 2341831, -1810866, -4603131, 8250632, 4247723, 4274566, -3170760, 3689914, 4794794,
+-1472100, 3094524, -980326, -4050154, 844498, 1589138, -720481, 4918275, 1195075, -1708323,
+5381057, -2410014, -2542621, -3069291, 1509144, 2117419, 389768, 3920232, 517544, 12221329,
+799401, 45634, -2826625, -2486786, 2920578, -9003325, 377957, 5486821, 4320200, -4835060,
+7174743, 176631, 3212636, 5784784, -1619203, 4491462, 3448859, -1519345, -5159330, -3888019,
+3248606, 8200167, 2332167, -3483755, -1731946, -1949378, 5614596, -4690641, -258772, 4682588,
+5374615, 800475, 687732, -1423245, -2231236, 156766, -508954, -1823751, -375810, -797253,
+-920734, -1386738, -714575, 1967095, 1308891, -317828, 2484102, 793495, 1012539, -254477,
+857920, -368830, -198642, -33286, 303332, 373125, 709743, 1410897, 360777, 224412,
+-390305, 4216584, 1078037, 11373610, 2795487, 6800544, -326954, 1548873, 1879048, 1935957,
+-1890859, 6959458, -2922188, 7526930, -3679713, -2832531, 1952063, -4875862, -1416266, -1490891,
+2105071, 3172370, -1976222, -7161321, 3295314, -8671002, -3517578, -1414118, -187905, -1297617,
+1727651, 7907035, 4446902, 608275, -8120710, -7747584, 297427, 5362804, -2759517, 909996,
+-966905, -3386582, -5197448, 628676, 3582003, 7643431, 6855842, -782221, 2232846, -9378061,
+3281892, 6389838, 7196755, -783832, 6568616, 1496796, 9541807, 5716602, 1867774, 4399121,
+-377957, -2374043, -1632088, -854162, 6014028, -2174327, -3312494, -4041027, 6006512, -1324461,
+-10386305, 2194192, 4012573, 5971079, 7630547, 13066901, -5374078, -4320737, 7716446, 8220031,
+6436546, 2862059, -1290101, -1347009, -4999342, -5534602, -1530619, -1913945, 1745367, -97174,
+-1600412, -95026, -3085934, 812823, -373125, 1613834, 246424, -2254321, -150861, 398358,
+-353798, -73014, 1180042, 2268280, 2182917, 1897839, 513785, 590558, -3155727, 302258,
+2281702, -1296006, 1275068, 430570, -855772, -602906, -357019, 2370822, 1700270, 503585,
+-158377, 1378148, 146566, 985158, 523986, -573915, 744103, -276489, -292595, -14833206,
+7100118, 10510859, 1185411, 8783745, 1007707, -7482907, -899259, -3382824, -2066416, 8125005,
+-10481331, -2669859, 3434363, 4254702, 9157944, -1634235, 3866008, -14416058, -7607461, 3948149,
+8482560, -5488432, -4253092, -5898064, -7525320, 4056060, -1075352, 280784, 2575907, 1542967,
+2695092, 11552388, -7037841, 11216844, -779537, 2459406, 2272575, 2601140, -3491809, 4037806,
+-7960185, -1273995, -4413616, -613643, -5956583, 7223598, 1069984, 19636590, 452582, -1036161,
+-5086852, 1068910, -4287451, 10362682, -6436009, 1555315, -11533598, 8733816, 7676181, -9200894,
+5582384, 6050535, 2266132, -4889821, -5353677, 8763344, 2046552, -12167642, 5770289, -5666673,
+-3351148, 3009698, -3250753, 1318018, 2344515, 3546032, -6602439, -15471009, 2126546, 3730179,
+-637803, -3159485, 6034966, -2458869, -2160369, -2692408, 3964255, -4863514, -2155537, -2673080,
+-2284386, 1487669, -2084133, 2902861, 242666, -4300336, 3161633, 646929, -2458332, 73014,
+2836826, 1183264, 1074, -188979, -960462, -2179159, 60130, 875100, 163746, -28454,
+1229971, -2492692, 158377, 725850, -3147674, -2078764, -2679523, 6600291, 1284195, -133144,
+-5574331, -9376987, 3321620, -5033702, -2024003, 9067750, -12355010, -5153961, -9103720, -933619,
+7809325, -732292, -6441377, -8948564, -10038949, 3903052, 10617696, -3053722, 6632503, 9976135,
+-2768643, -2317672, 3907347, 5540508, 11851425, -1734093, 6659347, 950262, 14090177, 10349261,
+2829310, -3338263, 1415192, -7834557, 13677323, 3160022, -6048388, -6723772, 7881265, 6643241,
+4786204, 3393024, 2330020, 7060390, -3077881, 3099356, -4704063, 648540, 366146, -7146289,
+-9526237, -3404299, -6735046, 4284767, -4119948, -3079492, -10392210, -6560563, 1966021, -3580929,
+-1266479, 4946729, 10365904, 13063680, 6788196, 5382668, -4856535, -10712722, 158914, -7511898,
+-17278116, 105227, -1242319, 6388227, 4310000, -4270808, -9642738, -5274757, 4616016, -281320,
+-1104880, -4032438, 2092186, 2138894, 1700807, -1080184, -5509906, 1096827, 681826, 475131,
+-1276679, -734439, -780610, 620623, -2720862, -2821794, -332860, 269509, -2272038, 127775,
+-490700, 1990717, 2706366, -3045669, -155156, 2084133, -413391, -1324461, 453656, 235149,
+2934000, -1006096, 1867774, 1426466, -1336272, -1206349, -20002736, -6047851, 983011, 9792525,
+-7092602, 4828080, 2989834, -318364, 14486388, -1875827, 13624710, -8016020, 3914326, 4424890,
+47782, -12484396, -5317170, -4618701, -14388140, 4935991, -3677029, 3093450, -1021665, 5237176,
+-151398, -5516349, 2842195, -9117679, 6638409, 4023848, 15497853, -606664, 333397, 14337138,
+-12760348, 11141145, 13448079, -8448738, 8608188, -3605088, -4252555, -7086159, 1653026, 1686848,
+9516037, 6255083, -2643016, -3987340, -8369818, 4534949, 4970888, -9397925, -4395899, 8843338,
+-15620796, 1463510, -12104292, 6760816, 496606, -220117, 3447248, -4046933, 1206349, 14251775,
+-6042482, 3118146, 6763500, 4374424, 589484, -7514046, 3145527, 2780455, -4548371, -12179990,
+-47782, -2786360, -9831180, 7309498, -2813204, 2689187, -573378, 1382980, 2882997, 2982855,
+-5583458, 1357210, -732829, 1228361, -628676, 3633542, 1620276, -907312, -870805, -5266167,
+-412317, -3604015, 422517, 585189, 3601867, -5572720, 1855426, 2990371, -2322504, -3468186,
+1021129, -517544, -2261300, 1653026, -664109, -2177549, 542777, -750546, -2725157, -719407,
+-1848447, -3367791, 1344862, -1047435, 71404, -1858647, -627602, -1901597, 646929, 3554086,
+-723165, -2209224, -8232916, 23741506, -8893267, 4671851, 3296924, 8520141, 2551211, 5199595,
+11705933, -9050570, -5711770, -674310, 16324097, -6263673, -7095823, -8075613, 3955665, 2818036,
+8885214, -18680960, 71404, 469762, -1380295, 9711995, -2445984, 7505456, 13681618, -9950902,
+-4605816, 4000225, -7630010, -9388799, 6252399, -8717173, 12856985, -2144263, -13460964, -1695975,
+-7777112, 4310000, 10464688, -135828, 5237176, -586800, 1942936, 12669617, 273267, 9207873,
+3496104, -6778532, 7016903, 6169184, 726386, 5192616, 17965312, -2933463, -8251706, 4363150,
+-10413148, 871342, 17153026, 5930813, 2604361, -3227668, -5070209, -3265786, -6235219, 10477573,
+-6965900, -1760937, -4389994, 11879880, -21849572, 7493108, 7531225, 13135621, 2975876, 1056025,
+11392938, -3198677, -5109401, -6463389, 36507, -5367099, -670552, -4610111, 3652333, 406948,
+-4288525, -4328254, -3801046, 1454383, 4377646, 3668976, 650151, 318364, -2048699, -4694400,
+-1712618, -1174137, 1829119, 2051921, -923418, -1121523, 803159, -2799245, -136902, -2716030,
+-1522566, -3591667, -5032091, -1321776, 1548873, 5493800, 749472, -1473711, -1584843, 2177549,
+-654446, 5265093, 2234994, 945967, 604517, 2026151, 34920768, 10443750, -6388227, -8471286,
+-7170985, 25326348, -21838834, 1746978, 8518531, 1272921, -11854647, -2668249, 5907728, -1262184,
+1347546, 10503879, -10900090, -9127342, 4445291, 13686450, 8399345, 3532074, -6670621, -6486475,
+-6280316, -7276749, 6737193, 2683818, 9670119, 7781944, 4394289, -10323491, -4949413, -10998874,
+-2228014, -7223062, -16641925, -3110630, 7363185, 1627256, -7749732, -7782481, 141197, 3988951,
+10330470, 1292785, 5209259, 1475321, 20010790, -17446694, 11333345, 2102923, -17834852, -3245922,
+-5421860, -4434554, 2663954, -7820062, 4627291, 3372623, 7888245, -9746355, 3365644, 15490336,
+7204271, 24637006, -5596880, -665720, -6144488, -3158949, 593242, -548682, -23488640, 10375567,
+-1066226, -1431835, 6267431, 6221260, -6722698, -10036802, -10997801, -4123169, 7655243, 3229816,
+-2637647, -6516539, 5591511, -10206453, 5209796, -1739462, -4684736, -5807870, -6316823, -2327336,
+-2174327, 897648, -2699924, -1844689, 1179505, -1953136, -1848447, 980863, -5191542, -2413772,
+-467078, -1829656, -3023657, -1401233, -5276368, 623307, 3742527, 5097053, 5986648, -4549981,
+-5558225, -3970161, -5039608, 65498, -139586, -3136400, -3560528, 1191317, -589484, 3264712,
+-1190243, -382789, 2495376, 2498597, -2259690, -11547556, 2700998, 6511708, -383863, -7034620,
+-5125507, -15379741, -18593450, 3986804, -8313446, -3738769, 2586644, 4832, -2058900, -8075076,
+-4213363, 84289, 6358699, 7074348, -10260677, -5649493, 6266358, -8915815, -4578972, -14708116,
+14291504, -1701344, 12866111, 1311039, 4758824, 13967234, 10314901, -5943161, 3036005, 7193534,
+-7467875, -2814277, 6729677, -2348273, -16627966, -2884608, -11677479, 17182016, -1889786, -4318590,
+-9805410, -13979582, 4991289, 3201361, 3257196, 7192460, 79457, -2383707, 7236483, 2071785,
+-1477469, 2779381, -4167192, 11435887, -2726767, 7293928, 20891258, 4885526, 3869229, 5122822,
+7669201, -18031346, -14832670, 5840619, -16180752, 11383811, -2333778, 13013214, 3324305, 25161530,
+9740986, 1924682, -7295002, -2985539, -12869333, -632971, 3958886, 2738579, 2687576, 4644471,
+11344619, -4493610, -9261023, -2966749, -2593624, 3826279, 10302016, 3899294, -2510409, 3227668,
+3012383, -279710, -2399813, -5755256, 395674, 935766, -2937221, -3716221, -758062, -6110128,
+4476430, 2805688, -2987150, -701153, -6316823, -2829310, 2947421, 5819144, -2757906, -2291365,
+-85362, -4802847, 5432597, 33286, 3929895, -4970888, 53150, -5156645, 3249680, 5780489,
+-6316287, -1620276, -29613262, -20998632, 7899519, -8448738, -17052094, -26277146, -466004, 1948841,
+-4893042, -4306779, 25107842, 6413460, -17843978, 3647501, -10813654, -9373766, -8742406, -16215112,
+-2464238, 1372242, -21970906, -21101174, -7772280, 3368328, 2274185, 12619151, 10976863, 6592775,
+-5122822, -299574, 5139465, -11457899, -6115497, -3963181, 3992709, -10761577, -6292664, 7224672,
+4657892, -361314, -1399623, -2062658, 6329708, -15445239, -8516383, -7631620, 10457708, -11977590,
+8362838, 13615046, 18983218, -1291175, 5654325, -4480725, -8660802, -11761768, -2883534, 11526618,
+4629438, -21017960, 1215476, 21698174, -14134201, 682900, -2782602, 1143535, 5465346, 11068131,
+-1989644, 3514894, 13608604, 9145596, 6173479, -10169409, -11924977, 8959302, -8534637, -16757889,
+-15780247, 17573396, 7019587, 9721122, 4504884, -2734284, -3035468, 8410620, 6287296, 1619203,
+8426189, -3171297, -10208064, -5408438, -6997576, 3018288, 11069741, 5271536, 1677185, 6398965,
+3902515, 5976984, -732292, -2949032, 4035659, -1233193, -3685619, -3393561, 3233037, -9667971,
+2570001, 5833640, -3015067, 7198365, 5295158, -290447, -329102, 6805913, 1279363, -1413044,
+-3797288, -4042638, 1636919, 3667365, 1278290, 2988760, -3757023, -2913599, 1850594, -2455648,
+2002529, -1439888, -17039210, 9243843, -13720810, -25462176, 4897874, -15615964, -8501351, 29322278,
+2387465, 21872658, 20364050, -4347581, 21429202, 28795072, 21094196, -26385058, -3095061, -12437152,
+-11881490, -7827578, 912681, -11061688, 23125714, 6439230, 12870943, -10958072, 12340515, 8884140,
+3460133, -13863618, -10142565, 21339546, -3544959, -20484310, -964757, -23658828, -2956548, 6213744,
+-7961796, 238371, -18649284, 8485245, 17712446, 9097278, -2120103, -9620190, -3064996, -2612414,
+-2811056, -9018894, -22991496, 15580531, 9341554, 8027831, 10359461, -13549548, 21114596, 2368138,
+-5795522, -4832375, -16032039, -7485055, 11132555, 6394670, 18135500, -2116345, -19786914, -35738424,
+-1634235, -449898, 602369, -13001403, -17439714, -3601330, 12317429, -6433324, -6773164, 4530117,
+-1124745, 17874580, -3084324, -16224776, -5264556, 16641925, 1560147, 3033858, -15866683, -5969468,
+-2592550, 6610492, 9252970, -4474819, 3548180, 526670, 7063611, 4142496, -148713, 2785286,
+9302899, 2008971, 371515, -3048353, 1522566, 5679558, 341450, 2829847, 10588705, 1360431,
+-2903398, -7550553, -259309, 5286031, -4591320, 2649995, -1745904, -1690607, -2855617, -4566624,
+-2793339, -21475, 6946573, 4860829, -6131066, -12479564, -3045132, 4549444, 2302103, 1596117,
+1280974, 38182796, 23584740, -3087545, -22368726, 4945655, 10692858, 6640557, 15768436, 24429774,
+-10956462, 2287070, -21876416, 6405944, 1468879, -8071318, 38551088, 15023259, 33220498, 14137959,
+8337069, -28924994, 137439, 16588774, 2656437, -15263777, 6260989, -23487566, -9598715, 1921461,
+6849399, -6835978, -4940286, 5437966, 3884261, 1999844, 20734492, 13362180, 3144453, -8148627,
+14179298, -9149891, -7093139, -13584982, -4939213, 18362058, -28893318, -161598, 12496207, -13979045,
+-4809290, 5713380, 4494147, 26656178, -1848983, -24696, -12643847, 26066694, -11821361, 3528316,
+2376191, 18131742, -4499515, -6180458, 16668231, -28419262, 7142531, 3016678, -12228846, 23205172,
+-29008210, -3372623, -9924059, -18986440, -9974525, -1445793, 7820599, 18283676, 29378650, 14762876,
+19295678, 30176978, -12519830, 5774584, 7176354, -12524125, 16947940, 601832, -23257784, 12275017,
+5998996, -8131984, 447750, 17945448, 13021804, 4199405, 10200010, 3392487, 3090766, 9964324,
+-2091649, 4379793, 8321499, -1866163, 1554778, -1342177, -841277, 6366216, 861141, 895501,
+-5707475, -2944200, -4062502, -7332046, 1296543, -3943317, -12462921, 4884989, 6914898, -2270964,
+-482110, 3483219, -4543002, 84289, 12436615, -1709397, -3937948, -7864622, -36939404, 10394358,
+1699196, 44554916, 9885941, 8546448, -1463510, 21830246, 5585605, -32303522, -5247913, 34968548,
+-10567230, -7134478, 2663417, -2222109, 513249, -6154688, 35931696, 41371272, -22442814, 10167261,
+10797548, 6184216, 11402601, -17978196, -25356414, 19430432, 4984310, -13710072, -24267638, -7050189,
+-8458938, 22039088, 17569638, 10177462, -20614770, 11273752, -9130564, 7227356, 865973, 9523016,
+20293720, 4860829, -46538120, -14047227, 8109972, -18400714, 5246303, 19683836, 6198712, 34203508,
+-11681237, -51166484, -1583769, -20354386, 17425220, 15547245, -6003828, -10834592, 15415174, -24550570,
+-4822175, -13241921, 11186779, 16076063, 13241384, 14933601, -11552925, -20815560, -62539556, -29644938,
+-36595804, 5737540, -24962886, -11841762, -5472325, -26910654, 13942001, -48469244, 14593762, -34856344,
+-25778930, 24870008, 28849832, -9028021, -1726577, 15907485, 20166482, -28467580, 63351, 4644471,
+-4658966, 4999879, 14722611, -1979980, 6178848, -1325534, 5380521, -12619151, -7204808, -5781026,
+-8902393, -1849520, 11373073, 4933307, 10164040, 346282, -12086038, -10448045, 1140314, 6230387,
+-3045669, 6615324, 6288906, 16775605, 947577, 5712307, 1113470, 3925600, -8159364, -2372433,
+2337536, -6135361, -455803, -2873870, -67646, 3013457, 16813724, -1741609, -11258183, -11708081,
+319438, -1149441, -17904644, -11280732, 8134131, -12583180, -75699, -624918, -47482476, -7521562,
+32510754, -38400228, 4379256, 13750338, 1069984, 9520332, -2159295, -30485678, -1823214, 15982110,
+6212134, 24017458, 17257178, -26181584, -27191438, -4089883, -11347304, -4337380, -45268420, 16842178,
+18985366, 31831076, 15389405, 28950764, -11913702, 3684545, 30866320, -9839233, 33533494, 8800925,
+18104898, 5546414, -7563975, 15896211, -19105626, 675921, 42209864, -32439888, 3759707, -42098732,
+-18037252, -30344480, -19651086, -5527623, 3009698, -10138270, -31061740, -6006512, -52124796, 59558312,
+21804476, 121870, -7268159, -14678588, 4153770, -26532160, 5705864, -39642548, 1749125, 1813550,
+9668508, 25086904, 37267968, 1080184, -60203092, -28225988, 27047556, -13473849, -11314554, -14934675,
+-7229504, 30005178, 7168838, -17048872, 13564044, -28403156, 5848672, -5462662, -11632382, -28650654,
+-15235323, 17990544, -7648800, -6985228, 10683194, -10676752, -2338073, 17942762, -20051592, -14297409,
+-5145371, -4404489, 23597624, 10528575, 7157026, 13373454, 6288906, -2190433, 11479911, -197569,
+8724152, 10962904, 18101140, -6559489, 975494, -1820529, 13671955, 19163608, 8221641, -4469451,
+-202400, -5660767, -12648679, 24525338, -5934034, 12729746, -5959267, 4058207, -6385543, -5319854,
+7525857, 13320304, 660351, -4360466, -2358474, 11683922, -24481850, 17531520, 26642220, 10716480,
+-13151190, -15962246, 7283728, -20801064, 33268280, 28914794, 42342472, -30051350, -38480760, -8866423,
+-1555315, -18501108, 24613920, 31313532, -23390928, 530965, -41170484, -11344619, -19864224, -35945120,
+10864657, 30759482, 17579302, -23163296, -9903658, 3372623, 19634442, 3626026, -2157147, 8215199,
+-2979097, -9703942, -33434710, -21638046, 7762617, -2490544, -18500572, 19910932, 16525960, 11530913,
+-34207268, -30011620, 28239946, 18021146, 20819854, -21270288, -56540024, -9999221, 22846542, 23904178,
+-6396280, 57054344, -7695508, 57346940, -86078120, -105357160, -44179644, -63266480, 77846, 25384868,
+12419972, 69508144, -8512625, -4004520, 12177843, -13285408, -55110872, -47995724, -54646480, 43627740,
+34652868, -12877923, -4333085, -89792200, 24465744, -717260, -40975060, 17175574, 25131464, 40329208,
+30596810, 14896557, -3474629, -26395258, 99858, 1737851, -8214662, -11138461, 31139050, 20025822,
+11683922, 32851668, -25730076, 6351720, -7732015, -15135465, 19598472, -2835752, -36245764, 107374,
+10445897, -12392054, 16086800, -6429029, 3738232, -7526394, 38631084, 31090732, 35724464, -30472256,
+-7784628, 38113540, 27158152, -26531624, -17396766, -26736172, -16752520, 22339198, 24228984, -8544301,
+-3398930, 42409580, 914291, 4160213, -6412386, 7767985, 6387690, -1183264, -21705154, -5304285,
+-5213017, 6811282, 12234214, -41001368, 35798552, 27214524, 11224360, 33700996, -19766514, 12422119,
+-55763172, -26965952, 14719390, 20619602, 9507447, 7216619, 6988449, 14461692, -6733435, 63525252,
+5775658, 39574904, 11410654, -19037442, 48440252, -6540162, 19056234, 1053878, 17398376, -1776506,
+-984621, 10684268, 24340116, 7137162, 17798882, 1311576, -3595425, 38268160, 4412005, -7979513,
+724239, -2928631, -19160922, -5422396, 10830297, 7189239, -43027520, -10443750, 5521181, 10061498,
+45146548, 36820216, -44486736, -24466282, 3766686, -9767293, 49715856, 4944581, 45864884, -32123134,
+23138600, 4753455, 2640331, 21369072, 47143708, 30637612, 6386617, 41704132, 16456167, -19463718,
+-41819560, 36884104, -33324114, 22349936, -43920336, 303332, -69720208, 72599440, -17799956, 2604361,
+-48775260, 44112000, -16940962, 14033269, -35745940, 42616276, -22017612, -19889456, -14391362, -26627724,
+8465917, -14875082, 12838194, -13782013, 23453206, -25996364, 23501524, -27372900, 15315853, -32067300,
+25900800, -11008001, 28732258, -9859634, 15154255, -12033961, 9853729, -13741211, 711891, -15024869,
+17536352, 7195681, 5123896, -5921686, 1896228, -11967389, 9542880, -12294881, 22080964, -17964238,
+-21314848, -9589051, 8958228, -25463788, 20010252, -6191732, 11107859, -7144141, 6437619, -11637214,
+5773510, -5937256, 6866579, 8506720, -1548873, -70432096, -16990890, -5887327, 7875897, 5825050,
+-43038256, -25747792, 39869644, -15700253, 15041512, -17843978, 4381404, 49015776, 80228376, 5113159,
+-2284923, 39621612, 17999134, 16183437, 49905372, 724776, 30443266, 35861368, 35366372, -14004278,
+15625091, 30966714, 44198972, 35341140, 54230404, 29953638, 69093672, 72351408, 53135724, 57632556,
+40112312, -4633196, 19969988, 9976135, -14370424, -15120969, 12035035, 33556580, 8358007, 1290101,
+461709, 16463147, 51023136, 38911868, 85249736, 16821240, -43246024, 17306034, 1530082, 17711372,
+-21876416, 33414846, -60647624, -79304960, 22815940, 79352208, 35310000, 15714212, -97885528, 403727,
+38199440, 59411744, 80742704, -34151968, 5693516, -138068704, -90195920, 36730560, 52434572, -76937360,
+-64770792, -40973452, 76203992, 50211924, -89407800, -116577760, -22760106, 47378856, -54930484, 26477400,
+-7719667, -20205674, -29280940, 4129074, 12811351, 19589882, -2648921, -48232484, -40833328, 5142150,
+-12108587, 20242718, 3650185, -4990215, -17424682, -12110734, 8543227, -1036161, -39133056, -20125680,
+-29372744, -15625091, 6459631, -15387257, -10361609, -35792108, -46693272, -65610456, -64578056, -55283208,
+-45997488, -51809116, -50516868, -39297340, -53311820, -57550416, -47942572, -55251532, -34628712, -9359807,
+-30546882, -46035072, -29348586, 1824824, -15487115, -8813273, -9610526, 24503326, 27148488, 1336809,
+13028246, 13716515, 9131100, 8070781, 1649268, 6434935, 6009196, 5952825, 4459250, 6941741,
+2534031, 5660767, 2572686, 2167885, -310311, 1459752, -12943421, -2404645, -25675314, 65765612,
+74876312, -84359064, -34395172, 31914292, -22994718, 15774341, -30278982, 27632208, -25573310, 6174553,
+391379, -12712029, 6827925, 1298154, -7561290, -6074695, -20365124, -5682779, 4956393, 2397129,
+-20762408, 19978578, -19014894, -6851547, -16440061, 1775432, -15721191, 32702418, -382252, 8525510,
+-8529805, 8489540, -9090298, 9176198, 20387136, 27124330, -7111929, 8966818, 10376641, 23766202,
+-14687714, 15200426, -13070659, 28575492, -7339562, -16670379, 9633075, -7504919, -8452496, 2955474,
+-2267206, 12031814, -6322729, -16831440, -15697032, 2097018, 3382287, -29058138, 9007083, -4886599,
+-2561948, 4472672, -7775502, -5375152, 3226594, -5093295, 4267050, -15950972, 18381386, -51746304,
+27348204, -22405234, 34631396, -23582054, 31047782, -1002338, 17023640, 9042517, 13912473, 5577015,
+2631741, 5229660, -727997, -22255446, -4138738, 304943, -8348343, -4792110, -4181688, -3042448,
+1611150, -8953396, -260919, 2325725, -358630, -14208826, 14861124, -3189550, 8157754, -15114527,
+7394860, -9665824, 6400038, -11170136, 12424267, -15986405, 22042310, -4964446, 3543885, -23101018,
+15986405, -2017561, 11810623, -22043920, 5985037, -9810242, 3955128, -5355824, 2721399, -14941654,
+7624104, -3933653, -7808788, -295279, 18016314, -20656646, 2084670, -8868571, 10980084, -14946486,
+13836774, -12307766, 4398047, -9276056, 10880763, -5180268, 6365679, -5686537, 7032472, -9357660,
+5451924, -5226975, -601295, -2597918, 4673998, -3182571, 2500208, 151398, 3530463, -4391604,
+1714766, 573378, -2002529, 2812130, -2643552, 1512365, -3767223, 3187403, -4074850, 2299418,
+-3038153, 2733210, -2217814, 2360622, -2996814, 3821447, -3767760, 3324305, -3528316, 4008278,
+-3062312, 4036196, -4028143, 4740570, -4981625, 4315906, -5147519, 4202089, -4096862, 4968204,
+-5756867, 5255966, -4980015, 4649839, -6388227, 5134634, -6193343, 5432597, -4622459, 4992900,
+-4686883, 4253092, -4955319, 4454955, -5487895, 3221762, -13464722, 63453848, 38643432, -21047488,
+-23996520, -2203855, 79073032, 32902134, 11183558, 21771190, -19033684, -24256364, 6852084, 15247134,
+4117263, 1310502, -8288213, -6629819, 7553237, 7500624, 18508088, 8108899, -9783936, -4439923,
+-4771172, -10057740, 20938, 1697586, 5030481, 6171331, 326418, -2711198, 7475391, -21252036,
+-7914551, 9374840, 13662291, 16711718, -9291088, -5538361, -9884867, 17099876, 12009802, -3289408,
+5598490, -19855634, -16995722, 15784542, 12459700, 3847217, -29873646, -15471009, 1392643, 4974646,
+19925964, 14105209, -2056753, 5789079, 7186554, -9406515, 8749385, 9294846, -2585570, -5741298,
+5703717, -10060424, 1113470, -1725503, -6878390, -10770167, 15116674, 3054259, 3487514, 20583094,
+25215752, 8870181, 20442970, 18976240, -2811056, -5111011, -5517423, -3642132, 8096550, 12958990,
+-4835060, 4006668, -11427297, -4197257, -380105, 2794413, -6142877, -7531762, 8024610, 15016816,
+6677064, 4199405, 6475200, -7150047, 791348, 7180112, 1603633, -2179159, 2007360, -669478,
+-8511551, 17827872, 6003291, -14135274, -13202193, 5481452, -2439005, 14089640, 7638063, -1700270,
+5460514, 1895691, -2664490, -543850, -3811247, 4213363, 6663642, 1112933, -1439888, -5438503,
+5007395, -972810, -4417911, -43487, -22725208, -62944356, 21849572, 115550192, 90984584, 86991880,
+27906550, -80997176, -48477296, -71810240, -71901512, -65655556, -22823994, 35314296, 45668388, 71666896,
+64316060, 38640748, 6570763, 6266358, -31016106, -49197776, -70275328, -27097486, -19026706, 6283537,
+-3895535, 35668628, 24186034, 10222559, 47805132, 26771068, 20501490, -4198331, 17996986, -32443646,
+-24368570, -20238960, -23535884, -31121334, -18668612, -12433930, -31561030, -21907018, 8463770, 46511812,
+44990320, 51003812, 40143448, 58319752, 10157598, 14919106, -38726648, -28741384, -24566676, -58217208,
+-57895084, -52022256, -24525338, -30494804, 7199439, 22542672, 32538672, 65272228, 64191508, 61373472,
+55128588, 48183092, 10341744, -28356448, -46116136, -82468200, -70792336, -51678120, -70365520, -32692218,
+-14664092, 3085397, 69113000, 54127324, 79495016, 78480864, 57379688, 16035797, -15830176, -23491324,
+-27196270, -24291798, -46761992, -57884884, -40415104, -27639726, -24408300, 3055332, 16263431, 25849798,
+22287122, 46531140, 50889456, 38444788, 30588758, 5098663, -10771778, -21965536, -35923644, -30869540,
+-21909702, -34474628, -46715284, -4944044, 2673080, -7691213, 40192840, 53087944, 33940980, 29841432,
+2181844, 8434242, -5580237, -9351218, -23276576, -27288074, -17978196, -20396800, 2832531, -8140574,
+2553895, 403727, 18234284, 9860171, 9364102, 17135308, 17386028, 35433, -4702989, -12428025,
+-12525198, -3532074, -2925947, -5995775, -6067178, 1192390, 1365263, -1463510, 2862596, 3314641,
+2930778, 927713, 11160473, 4163971, -426812, 1773822, -621160, -4090420, -4307852, -4912369,
+-5885179, -5176510, -1663226, -890669, 318364, 4896263, 6327561, 4913980, 4652524, 2456185,
+427349, 69256, -807991, -4698158, -2812130, -33823, -3035468, -4320200, -2272038, -503048,
+1955284, 1388348, 41876, 1182190, 3136400, 2243584, 1388885, 3139621, 1510218, -199716,
+-1432909, -2407329, -1995549, -2024540, -1692754, -1196685, -916976, -79457, 227096, -11274,
+542240, 1161252, 1073742, 1734093, 2356327, 1202054, 314069, 637803, -437013, -1038845,
+-1635846, -1818919, -1676111, -1313186, -657130, 46708, 64961, 932545, 1189706, 718333,
+846109, 1579474, 1020055, 208843, -450435, -348966, -376883, -853625, -1220308, -637803,
+-333397, -4832, 125091, 314606, 209380, 341450, 147640, 158914, -8053, 117038,
+-33823, 57982, -71404, 66035, },
{
-3223910,
--4303557, -6033356, 1952600, -2881386, -6213744, -3766150, 2638184, -7556458, -4388383, -9270150,
-3137474, 4329864, 5217849, 3046206, -3418794, 7251516, -5004174, 1568200, 19864, -894964,
--5280663, -2509335, -5794985, 351114, -2537252, 3302293, 1971927, -2573759, -992674, -488553,
--5328981, -87510, -1284195, 2440615, -220654, 4833449, -1802276, 6081674, -2705293, 205622,
-830539, -4217658, 2893734, -1204738, -1796370, 620623, -1303523, 2406256, -9237401, 4348655,
-5360119, 894427, 2991982, 1796907, -4159139, -439160, -4502737, 6066105, -1702418, -3636227,
-3477313, -5398237, 118112, 2195265, -6342056, 810675, -1575716, -2306934, 2027761, 525060,
-458488, -2887829, -1989107, -9951439, -1324997, 2210298, -1696512, 528281, 1162862, 5369783,
-4478577, 306016, 1443109, 679679, -908386, -706522, -1383516, -676994, -466004, -986232,
--955093, -6442, 941672, 680215, 627065, -1513976, -28991, -18790, -457951, -75162,
-350040, -189515, 35433, -714038, -609885, -634045, -46708, -592706, 915365, 1206349,
-1236414, -14256070, -8574902, 1585917, -4634807, 883153, -4781909, -8189966, -5459441, 9297530,
-5405217, -1440962, 6291054, 1481764, 1541356, 1765768, -3058554, -832150, 5111548, -4123169,
-2317135, 3732327, -4002373, -6320045, 2887292, -5166846, 566936, 2957622, 7577396, -1712618,
--3666292, -3203509, 1173063, 4123169, -5614059, -49392, 4602058, 1813013, 476205, -308164,
--441308, 5986111, -238371, 5483600, 3596498, -1397475, 3583077, -1269163, -337692, -565325,
--10028749, 3462281, 5651103, -3282429, -1879585, 1374390, 1529008, 1602023, 871878, -551366,
--1222455, 331786, -2533494, 6851547, -3089692, 790274, 3710852, 2969433, -2467459, 2700461,
-841277, 1756105, 3747359, 3312494, -4991826, 5143760, 5692979, -1945620, 79994, -369367,
-3711389, -4573067, -2392834, 994285, 634581, 166967, 228170, -979253, -1553168, 911070,
--744640, -398895, 246424, 1300838, -989990, -235686, 9127, -1797444, 590558, -1068373,
--1120987, -867583, 648540, 90194, -536871, -1076426, 232465, -5650567, 7225746, 4728759,
-11179263, -1854352, 1204738, 3424163, -5425081, -1125281, 2172180, -2241973, -7369627, -436476,
-804233, 4953708, -5950141, -14557255, -11745662, -7238631, 2811593, 6925098, -6956774, 3922379,
--3405372, 5351530, 4168803, 3628174, 6424734, 3575024, -5015448, -4638565, 883153, 3432216,
--252866, 295816, 8982924, -67109, 1573569, 4469987, 4726075, 785442, 145492, 11095511,
--765578, -4162897, -1242319, 2523293, 3246459, -2148021, 5974300, 1173063, 3212636, -4264366,
--3769908, -1453846, -2488397, 1447941, -1971390, 6497749, -7483981, -6688338, 8116415, -847182,
--327491, -9418863, 2939905, -4566624, 5095979, -3917547, -10423886, -476741, 5380521, -4465692,
-6951405, -4172024, 3207267, 6485938, -1823214, 2714956, 6536940, -424128, -4807679, 406411,
-3198677, 1480690, -2321967, 4498442, 308701, 2373506, 902480, 648540, 1711545, 311385,
--668941, -44560, 245887, 690416, -1804960, -919660, -936840, 1729798, 217970, 1763084,
-1840930, -1699733, 428423, 449898, -972810, -726386, -340913, 335007, -881542, 367220,
--921807, 17395154, 4096325, 4641249, 1990181, -3970161, 8346732, -3944928, -2364916, 10625212,
--800475, 8546448, -902480, -9758703, 3453154, -3305514, 10772852, 5680094, -752693, -9637907,
--6747394, 8920110, 10567767, -12328704, 6180995, 4954782, 3715684, -798327, 1196685, 1037772,
--937914, 12225624, -556735, -2085744, -3370476, -4090956, -5231270, -1717450, -280247, -7033546,
--2509335, 1844152, -4907537, 279173, 280247, 7317551, -2744484, 235149, 3398930, 294742,
-6987375, 3161096, 7264937, 3599183, 2210835, -7679939, 805843, -5689221, -5326833, 1279363,
-7408819, -284005, 6362457, -2662880, -4815195, -1112397, 302795, 1878511, 4367445, -2015413,
--42950, -2385854, 2438468, 1676111, -6271189, 1224603, 1297080, 836982, -1768453, 6562710,
--700617, -1277216, 697932, 3081639, 1346472, -2150168, -701690, -869194, -1582159, 1291711,
--1890323, 3097208, -1872069, -365072, 370441, -1459752, -425739, 1722282, -2031520, -460098,
--2186675, 849867, 905164, 1757179, -2388002, 475131, -981400, 1206886, -819802, -2849174,
--923418, 4906464, 3438121, 3945464, 11186242, 5852967, -4854924, -4340602, -12040404, -782221,
--267899, -6425271, 2442226, 9662066, 1170916, -7612830, 7068980, 6717329, -700617, 2685428,
-6808060, 1613297, -6186364, -955093, 14424648, 7095823, 1491427, -9516574, -3406983, 8680666,
-2986076, -1297080, 4887673, 4370129, 4576288, -37044, 8952859, -81604, -1149441, 2255932,
--4449049, -5828808, -295816, 985695, 3327526, 1827509, -5447629, 5530308, 9706626, 4982162,
--268435, 7208566, -8210904, 4680978, -4893042, 5143224, -1373316, -5908802, -302795, -7697119,
--12600360, -4600447, -5009006, -616328, -56371, -6598144, 1276142, -2029372, 3823058, 2522220,
-4528506, -725850, 1820529, -6353867, 1097364, 1002875, 8847096, -3422552, -282394, -3076270,
-1865626, 7956427, 4087198, -4626217, -7397545, 2333778, -2961380, -1017907, 3843996, -548145,
-1289027, 900869, -4407174, 206158, -3364033, 951335, -3195993, -2153389, -1167694, -137976,
--434329, 576599, -2049236, -216896, -693637, -1634772, -1381906, 486405, -363998, -849867,
-212601, 752693, 2442763, -872415, 1426466, -1064615, -2472291, 1822677, -2704756, 2588255,
--251256, -1746978, -302258, 858993, 1893544, -1408749, -192737, 403190, -485331, -11795591,
--7793755, 16679505, -3645890, -3663607, 984621, -587874, 17891224, -5231270, -9644349, 233002,
--9513889, 2370822, 7598871, 8159901, 2587181, -16603270, 13653164, -10744398, 5714454, -7346005,
--5574331, -4113505, 6820945, 7323993, -10976863, 867047, 4805532, -3411815, 2208150, 3221762,
--3962644, 505196, -9038759, -6082748, -13955422, 8266202, -1944547, 14074071, -6549289, 3052648,
-9409200, -2351495, -2783139, -4164508, 10782515, 7863548, -13219372, 3770981, -7472706, -2515240,
--2896956, -7432441, 4472135, 2363843, 11659226, 8196408, -14624364, -2401961, -6276558, 8546985,
-2984466, 732829, -8529268, 1276142, -889595, 7182259, -1191853, 896574, -9811853, -227096,
-6980933, -6433324, 1087164, -2032056, -1909113, -5200132, 1053341, -687195, 12368969, 5448166,
-5660767, -2266132, -1374390, -2150705, -3361349, -1809255, 2763812, -3786014, -1198296, -3713536,
-2811056, 2353642, -2013803, -1138166, 2613488, -3496104, 1736777, 529355, -935229, -1112397,
-940598, -99321, -314069, -672162, 2284386, -3372086, 450972, 302258, 1710471, 1845762,
-1850594, -1711545, 507880, -1207960, 2470680, 678068, 586800, 1806571, 4070019, -4483946,
-307090, -9453223, -1181653, -10908680, 1707786, -2732673, 6262599, -440771, 5313949, -7471633,
--14066555, 2986076, 9467719, 1237488, -1139240, 7384123, 4971425, -11502996, -181462, -4335233,
-14567992, -644782, 1699733, 1147830, 153545, -452045, -5221070, 11547020, -976031, -16356846,
--3067144, 9921374, -6383395, 1660542, -255014, 1332514, -2042794, 1586990, -3003793, 3919158,
--6269579, 5919539, 8298414, -6491306, -1650878, -3838627, -11387032, 4571993, -8082055, 7051263,
--7102802, -12284143, -3352222, 7319161, -2275259, -4380330, 4893042, 6769942, 3873524, 7419019,
-12678207, 10218264, -649614, 2000918, 1736777, -6783364, 1305133, -7093139, -7736310, 4242891,
--5899138, 1939178, -340376, 4472672, 4537633, -5861020, 6840273, -1851131, -2790655, -1241246,
-4813585, -863825, -4424353, -3004867, -6270116, 7201050, -3592203, -922344, 1249299, -276489,
--2648921, -2244121, 494995, 973347, 326954, -1233193, 1670742, 1242856, -1399086, 153008,
-1080721, 677531, -846645, 4295, -1141388, 476205, -1919850, -1755031, 1109175, 580357,
-2404645, 2643552, 239444, 1827509, 39192, -102005, -16072304, -13477607, 7867843, 14402636,
-24696, -852551, 2774012, -6925635, -3330210, -16646219, -8836895, -4716411, -132070, -12108050,
-17340394, 3441880, 9659381, -11038603, -13150116, -9907416, -3839701, 2636036, -14932528, -6694244,
-6938520, -2965675, -18168786, -6167573, 2462090, 191663, 11288785, 3792456, -3534758, -8623221,
-10737418, -6228240, -619012, 8085276, 2399813, -8806830, -4514548, -685584, -14711874, 3704946,
-11451457, -4984310, -6310918, 1667521, -7442642, -2753074, 1487669, -4750234, -3621731, 3877282,
--5545877, -11743514, 5813775, -6698002, -8747238, -12033961, -6004901, 1196148, -4793721, 1996623,
-14811195, 8356396, -1787780, 14105209, 14343043, -6206765, 2009508, 3977677, -7406671, -4820027,
--15704548, 1619203, -5017059, -12713640, -107911, 6693707, 11851962, 7281044, 3495567, 1320703,
--10662793, -1339493, -2413772, 2800856, -4016868, -467615, 277025, -153008, 2601140, 499290,
--939524, 2295660, -920734, -3367791, 2741800, -2257542, -2991982, 460098, 1142461, 1014149,
-272194, 3281892, -301185, 2100776, 1263794, 251256, 696858, -18790, -2517388, 575526,
--3473555, 814970, -5568962, -1394791, -212064, -3694209, -4356708, -575526, -4306779, -807991,
--891206, -4952634, -10247255, 26097296, -1032403, 16005196, -8054138, -22831510, 6519224, 1985886,
--907312, -10693395, -1053878, -7036767, 18090940, 13273596, 11837467, 8679592, -14194330, -63888,
-1943473, 12617540, -21546240, -2424509, -5279052, -6275484, 3228205, -7077033, 2758980, 4816269,
-3560528, 3852586, 4986457, -1480153, -2125472, -10457708, -2500745, -1583232, 10281615, 15569,
--9422621, -2199023, 11188927, -1288490, 6507949, 8383776, -6072010, -3576097, -13879187, -8050916,
-27151710, 7166690, 12081206, 6507413, 1570884, 1034013, -17212618, 10212895, 1610613, 3006477,
-8784282, 9594957, 14918569, -17163226, -7094212, -9519795, -1205275, 2393908, -2269353, -4802311,
--2819646, -14392972, -18103288, -11745662, -16966194, -2191507, -11089069, -18985366, -8029442, 6184216,
-10406169, -3946538, -16245714, -565862, -2452963, 3859565, -4466229, 1057099, 9339943, 441845,
--684510, -568009, 1190243, 1655173, -2757906, -2469606, -6527277, -7306813, 3900904, -1996623,
-3491272, 3168612, -1188632, 2161979, 2880313, 5272609, 3735011, -2274722, 1159641, 6716255,
-1294933, -6766184, -5601174, -3048353, -1410897, 523449, -2379949, 3894462, 4286378, -1016834,
-6466610, 865436, -1796907, -1372242, 1507534, -3733400, 35032436, 7936026, -5062156, -7266548,
-1120987, -11239929, -21977884, 16181826, 68719, 10417443, -7873212, 7539278, 17986786, -1770600,
-2006824, -4520990, 15656230, 13191992, 5115306, -21204790, 1535988, 3132642, 13112535, 19092740,
--5631776, -3893388, -2522220, 5128191, 6815040, 5677410, -9648107, 4422743, -11121281, 8522826,
-11363410, -5417565, -11247982, 7116224, -12239583, -11187316, -467078, 3265249, 15953119, 1938104,
--2182917, 13601625, -2517925, 12219182, 22558778, 11318313, 260382, -14310294, -1359357, -8237748,
--6683506, 14423574, 5634997, -14512158, -165893, -11091216, -2811056, 19117974, 8791798, 2798708,
-8185134, 11520176, 5971079, -15391552, 7945153, 12866648, 4412005, -10514080, 4346507, 1235340,
-2209224, -8224326, 12712566, -3484292, -3047816, 15292231, 16200617, 2401961, 4615479, 17620104,
-1042603, 8706436, -6167036, -173946, 10149545, 5890011, -4483409, 5250061, 9162776, -2463701,
-83215, 11684995, 2420214, 4984310, -3443490, -5815386, -1758789, 3275986, 1707786, 2704756,
-2771328, -1888175, -1810866, -1495186, 913754, 3519726, 4242354, -2815351, -838592, 7295539,
-1082869, 9774272, -1736241, 2680597, -1305670, 1275068, 4409858, 2709051, 375810, -39192,
--4108673, -2869038, -2067490, -4385699, 5634997, 5064840, -8513162, -440771, -10876468, -25597468,
-8840653, -10202695, 2830384, 896574, 17935784, -12366821, -10931766, -4601521, -5004174, -6615860,
-13245679, -11752104, -16581258, 4945118, -30982820, 897648, -5842230, -13113609, 16653736, -1079111,
--994822, 7000260, -6614787, 5258114, -1686848, -18512382, -20208358, -213675, 4251481, 11825656,
-5704254, -1360431, -2144263, -11646878, -5526549, 11669963, -18285824, 25195352, 14955076, 3356517,
-18622978, -12455405, -5349919, -11404212, -11668889, -5050345, 8492224, 23791972, 191663, -12311524,
--2092186, 1147293, -1352915, -1287417, -7586523, 6405407, 5871757, 16034187, -321049, 18131204,
-9324911, 4971962, -482110, 3856344, -27131846, 14277545, -3478924, -15875273, 11286637, -28991,
-14865956, 6596533, -25149182, 19472844, 15180562, -13158169, 21120502, 8126615, 15769509, 6250788,
--2234994, -896574, -702227, -2975876, -5571110, -1712081, 2299418, -5550709, -8457864, 61740,
--5531918, -9906342, -5947456, -7423314, 4655745, -4568772, 5734855, 1530082, 5851893, 2773475,
--690416, -3169149, 973347, 548145, -488016, 808528, -1784559, -4118874, 1940252, -389231,
-2376728, 2599529, 69793, 2195265, 993748, 3795141, 3236795, -5971615, -3610457, -5356361,
--9992778, -7022272, -48070348, -3587372, 28226526, -5126044, 673773, 24903294, -5932424, 382789,
-2855617, 6708202, -7636452, 6691559, -2743947, -8194261, 7817378, 9510131, -28175522, 3388192,
--25096568, -597000, -13092134, -13999446, -3273302, -4156992, -13858786, 6921340, 2071248, 8710194,
-11593727, -16922172, 21184926, 1543504, -20194400, 1708860, -14001593, -6912750, -15046881, -13462575,
--6030134, 14230300, -12401181, 6808597, 14149233, -8545911, -15495705, -14061186, -20884278, -22264574,
--13302051, -6306086, 1542430, -3329137, 5951751, 4270271, -13429289, -927176, 14682346, 8586713,
--22192096, 8672076, -1875290, -6089190, -20580410, 13789529, -7517804, 19017042, 23802708, 660351,
-22626962, -12537546, 13033615, -9863929, 14029511, 18163416, 1355599, -23848342, -956704, -32556926,
-10330470, 7078643, 12716861, 6161131, -12992276, -11081016, -432718, -7426536, 7144678, -8036958,
--499290, -486405, -8235063, -6259915, 5278515, -3127810, -9289477, -852551, 2598992, 6765647,
-3400004, 14664092, -1746441, 1242319, -4589173, 10286447, -1680943, -2223719, 8792335, -493384,
-1121523, 2149094, 11928735, -1952600, -5177046, 1262720, 8165270, 7936026, -8224863, -775778,
-5312338, -9257265, 4938139, -1494112, 6391448, 392453, -8115341, -4387846, 3613141, 4138201,
-4905390, 3743064, -22801444, 18434536, -43478492, -2560338, -4169876, -3614752, 4002910, -24934432,
-1716376, -4902169, -2164664, 11402601, 4448513, 13265543, -10270341, 9393093, -4920959, -22145388,
--8965744, -16249472, -10151155, 10748693, -19391240, 2558190, -7205345, -14634027, -2651069, 14361834,
--19276886, -18478560, 7544110, 11154030, -656056, -8722005, 10343892, 11003169, 13392782, 11608223,
-4763119, 15877957, 18735722, -10039486, 2781528, -8847096, 23514946, -1865626, -16324097, 19685446,
-8584566, 4766340, -9360881, -12345883, 2864743, 7525857, 7488813, -613643, -10283762, 7841537,
--11970074, 391379, -11812771, 36424544, 5582384, -10408316, 29843580, -3608846, 9107478, -7693360,
-14973330, 22360136, -13892072, 21363168, 22586696, 29582660, 22646826, 2167885, 16810502, -13151727,
--2639258, 3219615, -7350300, 13088376, 552440, -792958, -1335735, -3750580, 6320045, 3255048,
-17863842, -5822902, 6579353, -3892314, 79457, 3417183, 5244155, -7499013, 2748779, 7536594,
--3287261, -8422968, -1676648, -13539348, 4667556, 4275103, 3650722, -3537979, 2217277, 7173133,
-3991635, -1680406, 6815576, 3118683, -4488778, -2228551, -1458141, 11232950, 14530948, 7793218,
-3338263, 2663954, 4958540, 8696235, -5807870, -2282775, 3892314, -863825, 780610, 4040491,
--3461744, 44935560, 11553462, -7482907, -6664716, 10554882, 2873333, 4584878, -1170379, -17749490,
-14952392, -40715216, 4407174, 9126806, -1868848, -7318625, -15724949, -7046968, 1821603, 12267500,
-18485540, -10820633, -23837068, -19084150, -2779381, 854699, -14069776, 28985124, -13498545, -8667244,
-11863237, -3910031, 2098629, -2443300, 24705188, 4273493, -24856586, 9971840, 3103651, 17313014,
--6171868, 1999307, -10302553, 8669928, 3741990, 21787296, -5313949, 9907416, 10233296, -12949863,
--14463839, 1163399, 13109851, -25349970, -30175366, -8737574, -12411919, -1495186, -4403415, 3129958,
-6805913, -5980742, 1005022, -34675956, -29591250, 23640574, 24950538, -30020210, -23194970, -28889024,
--15211164, -11889006, 15017353, -15716359, -27998892, 943819, 1187559, -16995186, -3665218, 24488830,
--3693672, 1474248, 7818451, -130997, 1376537, -956704, -8644159, -10586021, -593242, -2922188,
-6995965, -1014686, -690953, -7634841, 3869766, -11874511, -297963, 3775276, 3963181, 5874979,
-6514929, 1321776, 3685082, -2559264, 606127, -5996848, 2209761, 720481, -6900939, 7169911,
-7055021, -10987063, 679142, 8196408, 6681359, 12611098, -2597918, -14446659, 4041564, 4846871,
--7176891, 4709969, -7989176, -3673271, -1235877, -2441689, -6781754, 2551748, -24827596, -3143916,
--5927055, 7402913, -11701638, -3310346, -38659000, 34237332, 22174380, -3817152, 47195248, -4711043,
--25704306, -2464774, 10687489, -16042777, -20939040, -4506495, -14253386, -754304, 4127464, -21711060,
-31878858, 986232, 3543348, -20032264, -5625334, 2083059, -5575405, 5026186, 7364259, 26037166,
-4809827, -1397475, 21229486, 17342542, -6029061, 10205379, -13183939, 3701188, 11942693, 11416560,
-29656750, -29233158, 18080738, 54069880, 543313, 8834748, 18670222, 2067490, 3837017, 8696235,
-6896107, -18133888, -21398600, -7883413, 17497696, 5124970, -22238266, -12177843, -816044, -10801843,
-20088098, 1789928, 15555298, -34207804, -20995410, 9927817, 23613194, 14321032, 9620727, 32458678,
-19160386, -13678934, 22565758, -16895864, -3249143, -2454574, 12771085, -2679523, -13777181, 12104292,
-5472325, 1135482, -15822660, 11071889, -48855, 193810, -6950868, 9330816, -7429757, -6176700,
--5647882, 4440460, -5899675, -11748883, 4145180, 811749, 128849, -6397354, -1028108, -8006893,
--6630893, -6403796, -3813931, -2473364, -2782065, -2436857, 1360431, 228170, -14920180, 10183904,
-4248797, -4785668, -10969883, -15966004, -141197, -8691403, -5610301, 5783174, -3952444, 9912785,
-5201743, -3469797, 2001455, 9279277, -3878892, -1513976, -4154844, 7831336, 2143726, 3276523,
--7584376, 16019691, -45107896, 959388, -308164, -1445793, -5730023, 21066278, 1656784, -12120935,
--22626424, 22896470, -20347408, 531502, 14673219, 11829414, -16007343, -4274030, -25764436, -106837,
-7328288, 8987219, 10375030, 2750390, -16799764, -20876762, 17131550, 8881992, 8504572, 3380139,
-8651675, 2625299, 12597139, -22512608, -38186556, 10590316, -5818607, -8102456, 21208012, -3710315,
--11403675, 18824304, 17671642, 14749991, -1427003, -9571335, -16472810, -4219806, -21766358, 51015620,
--4421132, 18382996, 3868692, -16916802, 13830868, -6459094, -16309601, 15950435, 12570832, -28033788,
-19486804, -2972117, 27059368, -27431420, -20794084, 27704150, -1210107, -22395034, 22818624, -8382703,
-39030516, -16583942, -13514651, -23592792, 14919106, 2793876, -19287088, 7683697, -25045564, -18210124,
-1571421, 16216723, -14395657, -8743480, -28436978, -25687126, 30107720, -3458523, 13086228, 21195126,
-28566364, 164283, -2956011, -2193655, 7504919, 11523934, 2092186, 5304822, 17577154, 7756174,
-9666898, 5797669, 4377646, -3417183, -1676648, 10882910, 8223789, 14253923, -6764574, 9409736,
-9860708, -15477452, 3929895, 3947075, -8483634, -4279935, -47782, 3954054, -6894497, 11230803,
-596464, -2532420, -3209414, 9543954, 343061, 3016141, 852014, 2719788, 2139968, -8626979,
--4333085, -6433324, 782221, -75162, 4756677, 6197638, -5541045, -12905840, 33430952, -7626252,
-22633404, -35421132, -6245420, -822486, -42293080, -9296994, 6096169, 20762946, -10429791, -9920838,
-893353, -3270081, 29644938, -2834679, -14949171, 31459024, -3935264, -1634235, 5907191, -12582107,
-27166206, 1787243, -5582384, 13019120, 11131481, -14853608, -5120138, -6898255, 21146272, -42341936,
--756451, -8220568, -14972256, 7237557, -15222975, 24634858, -6494528, -30515742, -3196530, 46335180,
--28142774, 20296942, -31372588, -9035001, 31181462, 22795002, -16859894, 7905961, -20555714, -26996554,
-5722507, -11879880, 11742977, 3386582, -1907502, 4578435, -39545376, -15469398, -20169704, -28904594,
-13403519, -10982231, -8064875, -16034724, -28101972, -23629300, 18482854, -3709778, 57686780, 10104447,
-5310190, 20593294, 36273148, 4734665, -26200912, 31826782, 24077050, -20378546, 5369783, -5178657,
--20304458, -16004659, -13727789, -1593970, -12533788, 4679367, 8475044, 2937221, -9771051, 16919486,
-2618320, 7793755, -2345052, -3001645, 8006893, 4873714, -8149701, -7355132, -7048042, 7729868,
-3680250, 9347996, 9939091, 327491, -5374078, 7504382, -4343286, 16165720, 7662222, -19564650,
--3879966, -14453639, 1710471, -4792110, -6980933, 20237350, -1121523, -6424734, 5171678, 6274947,
--7439420, -1611687, -10222022, 4406637, 7323456, -1548873, -3256659, 1018444, -6892886, -1950452,
--1102196, 9410810, 22501334, -13341242, -16915728, 19013284, -30223684, -3605625, -6158983, 1739462,
-21436718, -14017163, 23783382, 10110353, 5483063, 7039452, -38565048, 26234198, 5011153, -27226872,
-10755672, -28876138, 5035313, 38679400, -4684736, -22938884, -24263880, 10386842, 17708688, 14176613,
-7698729, -25550760, -17351668, -7927973, -4602058, 33048700, -20787642, -12575664, 49386220, -27374510,
--1949915, 19502910, 259309, 20547124, -2829310, -16590922, -10934987, -30141006, 15573015, 21423296,
--31957778, 48063368, 16201690, -36254892, -32861868, -31532576, -37575596, -30562450, 1793149, 15093589,
-3190624, -25464862, -9406515, 16997334, -219043, -15952582, 17799418, -34273304, 2433636, -7890392,
--31425738, -29571386, 5387500, -11766600, 22635014, -41004052, -5240934, -14523969, -29744260, 2052994,
-48631376, 12399034, -21100638, 10391673, -26040386, 10690174, -10394895, 932545, 1757715, 13690208,
--1148904, 4684199, 17551920, 183073, -9212168, -4390531, 14150307, 9782325, 6708202, 3382824,
--26776974, -2756832, 2415919, 15202574, 7969849, -14057428, 114354, 1617055, 24091008, 1329829,
-8010114, -7320772, -4261682, 3504157, 8152385, -964757, -6569690, -13294534, 2391223, -5031554,
--8749922, 4543539, -5957120, -6561100, 9649718, -7358353, -10130217, -14671071, -12486544, -2388539,
-4336307, 64425, -10765872, 9419937, 23890756, -59210420, -53983980, -47558172, -30081950, 11886322,
--12504797, 60175176, 16362215, -6925098, -13562970, -8123931, 17485886, -39906152, 46476376, 60589640,
-24577950, -4182761, 48570176, -15826418, 29474214, 54989540, -9870909, 2537789, 10646687, 73330128,
--18495202, -5206037, 44123272, 16099685, 14326937, -12671764, -44817448, 2530810, -35489852, 16438987,
--44033080, -52374980, -450972, -3576097, -35990752, -2539400, -17435420, -37691024, -29479582, -48998596,
--2179696, 48686140, -15633681, -10130754, -45400488, -25074556, -16669305, -16319265, 15475841, -11871826,
-82228760, -20180978, -1085553, -30746598, 62051540, 50191524, -36003636, 40662604, -14478872, -61022896,
--10763725, -6590628, 12670690, -14817637, -13695040, -8398272, -24458766, 6229313, 30184494, -36581312,
--5134634, 9476308, 6200322, -42374148, 26922466, 18172006, 62221192, -27435714, 17004312, 25428354,
--1662689, 6375879, -916976, 8240432, -7030862, 19377282, 8438000, 15550466, 13837311, 435402,
-14245870, 3770981, -5527623, 14439680, -1061394, 1847373, 1493038, 9872519, 7635915, -11862163,
--8917963, -14872935, 21447456, -15336254, 3029563, 12566537, 5393942, 23354422, 20456930, 35152160,
-24322936, 19665044, 1184337, 12704513, -19060528, 16595217, 12690018, -4949413, -18347564, -34833796,
--13553843, 9183714, -19253802, -7859790, -14055817, -34166464, -29232084, -14479945, -21832392, -13649943,
--18838264, -24445344, -25312926, -8628052, -7490960, -12050068, -18683108, -10973105, -16718160, -12257837,
--13703093, -4560182, -6568079, -5917928, -7117298, -6387690, -9249212, -5163088, -18581640, 24885040,
-104487968, 12195560, -65514896, -16246251, -23169202, 5046587, 32613298, 58655296, 16750909, -49192408,
--950262, 34086472, 7393250, 770410, -1538672, 8917426, -4715337, -5952825, 40475236, 25402584,
-22601728, -34395172, -22351010, 23452668, 9043591, 13856638, -11962558, 4336307, 45090716, 1083406,
-38227892, 20122996, 20841866, 37402724, 5388574, -19834696, 4562866, -22719304, 5668283, 15835544,
-3987877, 61139396, -20449414, -39417600, -38038916, 47212964, 21731460, 25138444, 17139604, -27072252,
--34014532, -20715702, -1228898, 10255845, -7492034, 16633335, 31222802, -2196876, 22617298, 20567524,
--31781684, -6337761, 8942659, -14926622, -13506598, -15674483, -52385180, -8929237, 22512608, 1894081,
-45533632, 30320858, -22259742, 16029892, 126165, -15309948, -12950937, -25431038, -56633440, -30291330,
-2166811, 862215, -12652974, -3546569, -6025839, 17902498, 18719614, 9584220, -3585761, 1175210,
-14147085, -7321309, 8814884, -25704842, -12268574, -3599183, 13469017, -3806415, 5202816, 8636105,
-8616778, 851477, 24211268, -19921668, -17880486, -18152680, 12519830, -11922292, -18668076, -18607408,
-12677133, -6471979, -13660680, -7467875, 9476308, 1968706, 13974213, -24324010, -15863462, -3335042,
--1761474, 4123706, 10830297, -5874442, -9630390, 15307800, -8556112, -10720238, -8988293, 14691473,
--4293357, -9008694, 4414153, -1850594, -8582955, -799938, -11389180, -8104067, -5164698, -1768990,
--3637301, 1419487, -2934000, 82678, -1082869, 716723, -5811091, -360240, -2148558, -273804,
--3255048, -62277, -5091684, 467078, -3877819, 336081, -3296924, 321049, -1396401, 1210107,
--2267206, 519691, -3026341, 12348, -3240553, -866510, -4192425, -593779, -3076270, -783832,
--2767033, -638876, -1737314, -743029, -2878165, -489089, -1251983, -237834, -1704028, -77309,
--2339684, -280247, -1575716, -784368, -981937, -636192, -1603633, -455803, -1211181, -1102196,
--729071, -566936, -1012002, -377957, -969589, -6983617, -24307368, 1739999, 83454976, 20071456,
-35704064, -18327162, -74075840, -39244188, -54263152, -19776176, 38222524, 84169544, 39097088, 8358007,
--39521752, -39344584, 27919972, 41310068, 22078816, 50411640, -1153736, -34830036, -48302276, -25130390,
--6586333, 37171332, 5720897, 21021180, 20746302, 2230699, 52177948, 34770444, -2919504, -5996311,
--46127948, -12581033, 22012, -118648, 28041842, 47164648, 30562450, 22080964, 46337328, 25082072,
--45988364, -38885560, -10770704, -30711164, 32465658, 20270636, 47538844, 35147864, 42174968, 11095511,
-8332774, -34846680, -34272764, -34237332, 12771622, 15831249, 985695, -5566278, 74403328, 17506286,
--3958349, -7986492, 51298016, -54562728, 12359842, -102933184, -21677774, 24439974, -34529388, 32212254,
-19940996, -530428, 74345344, 33686504, -40446244, -83734144, -38656852, -38500088, -19218368, -14960982,
--9553081, 35112968, 24101208, 47731044, 7010997, -36942624, -23586886, -38713224, -33911452, -35896800,
-16564615, 2230699, 16401943, 19753092, -8633958, 18191334, 11360188, -14462229, -384400, -15909096,
--3592740, -33177548, -32810328, -13776108, -13563507, -459025, -30644592, 15933255, -1050120, 4861366,
-10190884, -22334366, -42841224, -40967008, -862752, 7711614, 10430865, 25202868, 7841537, -14225469,
--23509578, 7208566, -8080444, -13438953, 6310381, -119384520, -72192496, -40111236, 35506496, 9510131,
-162694432, 172609360, 105664784, 191458368, 157327872, 165532864, 115457312, 139977280, 114410416, 1617592,
--53896472, -77961712, -74036112, -156113472, -186343600, -195622336, -135817600, -107627048, -41735808, 6955700,
--54739360, 33214592, -69104952, -25645250, -4344360, -22010096, 16900160, -64315524, 88144544, 14474040,
-80391048, 50872276, 30320858, 20380156, 44668196, 28321552, 45799920, 103909752, 99657200, 78623672,
-97401808, 122196648, 112113680, 104817600, 193642352, 67280664, 136372720, 176667568, 122163904, 160429920,
-85856936, 114169896, 90058488, 107139032, 116895592, 42634528, 75835160, 56688736, 71004936, 67791224,
-19077170, -13871134, -73614664, -27907624, -98354216, -86814176, -145681536, -165876464, -166155104, -351912992,
--297200992, -319987424, -316638400, -370377568, -373796384, -231253920, -268156288, -200403168, -236552848, -180594240,
--170225664, -148993488, -148671904, -86150064, -37489696, -54989004, -54770496, -45528264, 8941585, 70666704,
-37590628, 147844592, 128107600, 187028640, 193133936, 177332752, 222504544, 205272592, 238769584, 185783648,
-228462736, 241082416, 270541600, 235679344, 141533136, 140538848, 141366160, 142544592, 132476656, 92199528,
-87331184, 35435628, 25957172, -3813394, 4635344, 16865262, -48468168, -72948944, -77669112, -49035104,
--42195368, -81222128, -92899072, -109922712, -78565688, -101880920, -92745520, -79727480, -83905408, -87261928,
--85525144, -23619636, -19656992, -11857331, -18693846, 9898826, -1969779, -3438658, -17435420, -7825431,
-7204271, 10196252, 4879083, 14689325, 12035572, 18049600, 1626719, 1876364, -1473711, 8926016,
--681826, 2204929, 1800128, 5888400, 1277753, 1185411, -7686918, -220654, -1375463, 1868848,
--4836133, -788663, 202937, 2099165, -3825742, -6979, -2946348, -535260, -6324340, -3790846,
--4212289, -840740, -6054830, -4639102, -9749039, -3193845, -3563749, 140660, -4489315, -5297842,
--10674067, -9229348, -12710419, -7653632, -10162429, -9287330, -13991930, -10663330, -11245835, -6436009,
--8775155, -5345087, -7621957, -3775813, -4050691, 1909113, 3398393, 8987756, 7508677, 11869142,
-11892228, 18670222, 19341848, 20696374, 19800336, 22946400, 20059108, 21065204, 17728552, 17413944,
-12492986, 11454678, 5028870, 4989142, -250182, -1066763, -5357435, -3964792, -6171868, -4177930,
--6397354, -3896609, -5478231, -2580202, -4044786, -1175210, -2981781, -365072, -2284923, 224949,
--1702418, 750546, -1279363, 1044751, },
+-4303557, -6033356, 1952600, -2881386, -6213744, -3766150, 2638184, -7556458, -4388383, -9270150,
+3137474, 4329864, 5217849, 3046206, -3418794, 7251516, -5004174, 1568200, 19864, -894964,
+-5280663, -2509335, -5794985, 351114, -2537252, 3302293, 1971927, -2573759, -992674, -488553,
+-5328981, -87510, -1284195, 2440615, -220654, 4833449, -1802276, 6081674, -2705293, 205622,
+830539, -4217658, 2893734, -1204738, -1796370, 620623, -1303523, 2406256, -9237401, 4348655,
+5360119, 894427, 2991982, 1796907, -4159139, -439160, -4502737, 6066105, -1702418, -3636227,
+3477313, -5398237, 118112, 2195265, -6342056, 810675, -1575716, -2306934, 2027761, 525060,
+458488, -2887829, -1989107, -9951439, -1324997, 2210298, -1696512, 528281, 1162862, 5369783,
+4478577, 306016, 1443109, 679679, -908386, -706522, -1383516, -676994, -466004, -986232,
+-955093, -6442, 941672, 680215, 627065, -1513976, -28991, -18790, -457951, -75162,
+350040, -189515, 35433, -714038, -609885, -634045, -46708, -592706, 915365, 1206349,
+1236414, -14256070, -8574902, 1585917, -4634807, 883153, -4781909, -8189966, -5459441, 9297530,
+5405217, -1440962, 6291054, 1481764, 1541356, 1765768, -3058554, -832150, 5111548, -4123169,
+2317135, 3732327, -4002373, -6320045, 2887292, -5166846, 566936, 2957622, 7577396, -1712618,
+-3666292, -3203509, 1173063, 4123169, -5614059, -49392, 4602058, 1813013, 476205, -308164,
+-441308, 5986111, -238371, 5483600, 3596498, -1397475, 3583077, -1269163, -337692, -565325,
+-10028749, 3462281, 5651103, -3282429, -1879585, 1374390, 1529008, 1602023, 871878, -551366,
+-1222455, 331786, -2533494, 6851547, -3089692, 790274, 3710852, 2969433, -2467459, 2700461,
+841277, 1756105, 3747359, 3312494, -4991826, 5143760, 5692979, -1945620, 79994, -369367,
+3711389, -4573067, -2392834, 994285, 634581, 166967, 228170, -979253, -1553168, 911070,
+-744640, -398895, 246424, 1300838, -989990, -235686, 9127, -1797444, 590558, -1068373,
+-1120987, -867583, 648540, 90194, -536871, -1076426, 232465, -5650567, 7225746, 4728759,
+11179263, -1854352, 1204738, 3424163, -5425081, -1125281, 2172180, -2241973, -7369627, -436476,
+804233, 4953708, -5950141, -14557255, -11745662, -7238631, 2811593, 6925098, -6956774, 3922379,
+-3405372, 5351530, 4168803, 3628174, 6424734, 3575024, -5015448, -4638565, 883153, 3432216,
+-252866, 295816, 8982924, -67109, 1573569, 4469987, 4726075, 785442, 145492, 11095511,
+-765578, -4162897, -1242319, 2523293, 3246459, -2148021, 5974300, 1173063, 3212636, -4264366,
+-3769908, -1453846, -2488397, 1447941, -1971390, 6497749, -7483981, -6688338, 8116415, -847182,
+-327491, -9418863, 2939905, -4566624, 5095979, -3917547, -10423886, -476741, 5380521, -4465692,
+6951405, -4172024, 3207267, 6485938, -1823214, 2714956, 6536940, -424128, -4807679, 406411,
+3198677, 1480690, -2321967, 4498442, 308701, 2373506, 902480, 648540, 1711545, 311385,
+-668941, -44560, 245887, 690416, -1804960, -919660, -936840, 1729798, 217970, 1763084,
+1840930, -1699733, 428423, 449898, -972810, -726386, -340913, 335007, -881542, 367220,
+-921807, 17395154, 4096325, 4641249, 1990181, -3970161, 8346732, -3944928, -2364916, 10625212,
+-800475, 8546448, -902480, -9758703, 3453154, -3305514, 10772852, 5680094, -752693, -9637907,
+-6747394, 8920110, 10567767, -12328704, 6180995, 4954782, 3715684, -798327, 1196685, 1037772,
+-937914, 12225624, -556735, -2085744, -3370476, -4090956, -5231270, -1717450, -280247, -7033546,
+-2509335, 1844152, -4907537, 279173, 280247, 7317551, -2744484, 235149, 3398930, 294742,
+6987375, 3161096, 7264937, 3599183, 2210835, -7679939, 805843, -5689221, -5326833, 1279363,
+7408819, -284005, 6362457, -2662880, -4815195, -1112397, 302795, 1878511, 4367445, -2015413,
+-42950, -2385854, 2438468, 1676111, -6271189, 1224603, 1297080, 836982, -1768453, 6562710,
+-700617, -1277216, 697932, 3081639, 1346472, -2150168, -701690, -869194, -1582159, 1291711,
+-1890323, 3097208, -1872069, -365072, 370441, -1459752, -425739, 1722282, -2031520, -460098,
+-2186675, 849867, 905164, 1757179, -2388002, 475131, -981400, 1206886, -819802, -2849174,
+-923418, 4906464, 3438121, 3945464, 11186242, 5852967, -4854924, -4340602, -12040404, -782221,
+-267899, -6425271, 2442226, 9662066, 1170916, -7612830, 7068980, 6717329, -700617, 2685428,
+6808060, 1613297, -6186364, -955093, 14424648, 7095823, 1491427, -9516574, -3406983, 8680666,
+2986076, -1297080, 4887673, 4370129, 4576288, -37044, 8952859, -81604, -1149441, 2255932,
+-4449049, -5828808, -295816, 985695, 3327526, 1827509, -5447629, 5530308, 9706626, 4982162,
+-268435, 7208566, -8210904, 4680978, -4893042, 5143224, -1373316, -5908802, -302795, -7697119,
+-12600360, -4600447, -5009006, -616328, -56371, -6598144, 1276142, -2029372, 3823058, 2522220,
+4528506, -725850, 1820529, -6353867, 1097364, 1002875, 8847096, -3422552, -282394, -3076270,
+1865626, 7956427, 4087198, -4626217, -7397545, 2333778, -2961380, -1017907, 3843996, -548145,
+1289027, 900869, -4407174, 206158, -3364033, 951335, -3195993, -2153389, -1167694, -137976,
+-434329, 576599, -2049236, -216896, -693637, -1634772, -1381906, 486405, -363998, -849867,
+212601, 752693, 2442763, -872415, 1426466, -1064615, -2472291, 1822677, -2704756, 2588255,
+-251256, -1746978, -302258, 858993, 1893544, -1408749, -192737, 403190, -485331, -11795591,
+-7793755, 16679505, -3645890, -3663607, 984621, -587874, 17891224, -5231270, -9644349, 233002,
+-9513889, 2370822, 7598871, 8159901, 2587181, -16603270, 13653164, -10744398, 5714454, -7346005,
+-5574331, -4113505, 6820945, 7323993, -10976863, 867047, 4805532, -3411815, 2208150, 3221762,
+-3962644, 505196, -9038759, -6082748, -13955422, 8266202, -1944547, 14074071, -6549289, 3052648,
+9409200, -2351495, -2783139, -4164508, 10782515, 7863548, -13219372, 3770981, -7472706, -2515240,
+-2896956, -7432441, 4472135, 2363843, 11659226, 8196408, -14624364, -2401961, -6276558, 8546985,
+2984466, 732829, -8529268, 1276142, -889595, 7182259, -1191853, 896574, -9811853, -227096,
+6980933, -6433324, 1087164, -2032056, -1909113, -5200132, 1053341, -687195, 12368969, 5448166,
+5660767, -2266132, -1374390, -2150705, -3361349, -1809255, 2763812, -3786014, -1198296, -3713536,
+2811056, 2353642, -2013803, -1138166, 2613488, -3496104, 1736777, 529355, -935229, -1112397,
+940598, -99321, -314069, -672162, 2284386, -3372086, 450972, 302258, 1710471, 1845762,
+1850594, -1711545, 507880, -1207960, 2470680, 678068, 586800, 1806571, 4070019, -4483946,
+307090, -9453223, -1181653, -10908680, 1707786, -2732673, 6262599, -440771, 5313949, -7471633,
+-14066555, 2986076, 9467719, 1237488, -1139240, 7384123, 4971425, -11502996, -181462, -4335233,
+14567992, -644782, 1699733, 1147830, 153545, -452045, -5221070, 11547020, -976031, -16356846,
+-3067144, 9921374, -6383395, 1660542, -255014, 1332514, -2042794, 1586990, -3003793, 3919158,
+-6269579, 5919539, 8298414, -6491306, -1650878, -3838627, -11387032, 4571993, -8082055, 7051263,
+-7102802, -12284143, -3352222, 7319161, -2275259, -4380330, 4893042, 6769942, 3873524, 7419019,
+12678207, 10218264, -649614, 2000918, 1736777, -6783364, 1305133, -7093139, -7736310, 4242891,
+-5899138, 1939178, -340376, 4472672, 4537633, -5861020, 6840273, -1851131, -2790655, -1241246,
+4813585, -863825, -4424353, -3004867, -6270116, 7201050, -3592203, -922344, 1249299, -276489,
+-2648921, -2244121, 494995, 973347, 326954, -1233193, 1670742, 1242856, -1399086, 153008,
+1080721, 677531, -846645, 4295, -1141388, 476205, -1919850, -1755031, 1109175, 580357,
+2404645, 2643552, 239444, 1827509, 39192, -102005, -16072304, -13477607, 7867843, 14402636,
+24696, -852551, 2774012, -6925635, -3330210, -16646219, -8836895, -4716411, -132070, -12108050,
+17340394, 3441880, 9659381, -11038603, -13150116, -9907416, -3839701, 2636036, -14932528, -6694244,
+6938520, -2965675, -18168786, -6167573, 2462090, 191663, 11288785, 3792456, -3534758, -8623221,
+10737418, -6228240, -619012, 8085276, 2399813, -8806830, -4514548, -685584, -14711874, 3704946,
+11451457, -4984310, -6310918, 1667521, -7442642, -2753074, 1487669, -4750234, -3621731, 3877282,
+-5545877, -11743514, 5813775, -6698002, -8747238, -12033961, -6004901, 1196148, -4793721, 1996623,
+14811195, 8356396, -1787780, 14105209, 14343043, -6206765, 2009508, 3977677, -7406671, -4820027,
+-15704548, 1619203, -5017059, -12713640, -107911, 6693707, 11851962, 7281044, 3495567, 1320703,
+-10662793, -1339493, -2413772, 2800856, -4016868, -467615, 277025, -153008, 2601140, 499290,
+-939524, 2295660, -920734, -3367791, 2741800, -2257542, -2991982, 460098, 1142461, 1014149,
+272194, 3281892, -301185, 2100776, 1263794, 251256, 696858, -18790, -2517388, 575526,
+-3473555, 814970, -5568962, -1394791, -212064, -3694209, -4356708, -575526, -4306779, -807991,
+-891206, -4952634, -10247255, 26097296, -1032403, 16005196, -8054138, -22831510, 6519224, 1985886,
+-907312, -10693395, -1053878, -7036767, 18090940, 13273596, 11837467, 8679592, -14194330, -63888,
+1943473, 12617540, -21546240, -2424509, -5279052, -6275484, 3228205, -7077033, 2758980, 4816269,
+3560528, 3852586, 4986457, -1480153, -2125472, -10457708, -2500745, -1583232, 10281615, 15569,
+-9422621, -2199023, 11188927, -1288490, 6507949, 8383776, -6072010, -3576097, -13879187, -8050916,
+27151710, 7166690, 12081206, 6507413, 1570884, 1034013, -17212618, 10212895, 1610613, 3006477,
+8784282, 9594957, 14918569, -17163226, -7094212, -9519795, -1205275, 2393908, -2269353, -4802311,
+-2819646, -14392972, -18103288, -11745662, -16966194, -2191507, -11089069, -18985366, -8029442, 6184216,
+10406169, -3946538, -16245714, -565862, -2452963, 3859565, -4466229, 1057099, 9339943, 441845,
+-684510, -568009, 1190243, 1655173, -2757906, -2469606, -6527277, -7306813, 3900904, -1996623,
+3491272, 3168612, -1188632, 2161979, 2880313, 5272609, 3735011, -2274722, 1159641, 6716255,
+1294933, -6766184, -5601174, -3048353, -1410897, 523449, -2379949, 3894462, 4286378, -1016834,
+6466610, 865436, -1796907, -1372242, 1507534, -3733400, 35032436, 7936026, -5062156, -7266548,
+1120987, -11239929, -21977884, 16181826, 68719, 10417443, -7873212, 7539278, 17986786, -1770600,
+2006824, -4520990, 15656230, 13191992, 5115306, -21204790, 1535988, 3132642, 13112535, 19092740,
+-5631776, -3893388, -2522220, 5128191, 6815040, 5677410, -9648107, 4422743, -11121281, 8522826,
+11363410, -5417565, -11247982, 7116224, -12239583, -11187316, -467078, 3265249, 15953119, 1938104,
+-2182917, 13601625, -2517925, 12219182, 22558778, 11318313, 260382, -14310294, -1359357, -8237748,
+-6683506, 14423574, 5634997, -14512158, -165893, -11091216, -2811056, 19117974, 8791798, 2798708,
+8185134, 11520176, 5971079, -15391552, 7945153, 12866648, 4412005, -10514080, 4346507, 1235340,
+2209224, -8224326, 12712566, -3484292, -3047816, 15292231, 16200617, 2401961, 4615479, 17620104,
+1042603, 8706436, -6167036, -173946, 10149545, 5890011, -4483409, 5250061, 9162776, -2463701,
+83215, 11684995, 2420214, 4984310, -3443490, -5815386, -1758789, 3275986, 1707786, 2704756,
+2771328, -1888175, -1810866, -1495186, 913754, 3519726, 4242354, -2815351, -838592, 7295539,
+1082869, 9774272, -1736241, 2680597, -1305670, 1275068, 4409858, 2709051, 375810, -39192,
+-4108673, -2869038, -2067490, -4385699, 5634997, 5064840, -8513162, -440771, -10876468, -25597468,
+8840653, -10202695, 2830384, 896574, 17935784, -12366821, -10931766, -4601521, -5004174, -6615860,
+13245679, -11752104, -16581258, 4945118, -30982820, 897648, -5842230, -13113609, 16653736, -1079111,
+-994822, 7000260, -6614787, 5258114, -1686848, -18512382, -20208358, -213675, 4251481, 11825656,
+5704254, -1360431, -2144263, -11646878, -5526549, 11669963, -18285824, 25195352, 14955076, 3356517,
+18622978, -12455405, -5349919, -11404212, -11668889, -5050345, 8492224, 23791972, 191663, -12311524,
+-2092186, 1147293, -1352915, -1287417, -7586523, 6405407, 5871757, 16034187, -321049, 18131204,
+9324911, 4971962, -482110, 3856344, -27131846, 14277545, -3478924, -15875273, 11286637, -28991,
+14865956, 6596533, -25149182, 19472844, 15180562, -13158169, 21120502, 8126615, 15769509, 6250788,
+-2234994, -896574, -702227, -2975876, -5571110, -1712081, 2299418, -5550709, -8457864, 61740,
+-5531918, -9906342, -5947456, -7423314, 4655745, -4568772, 5734855, 1530082, 5851893, 2773475,
+-690416, -3169149, 973347, 548145, -488016, 808528, -1784559, -4118874, 1940252, -389231,
+2376728, 2599529, 69793, 2195265, 993748, 3795141, 3236795, -5971615, -3610457, -5356361,
+-9992778, -7022272, -48070348, -3587372, 28226526, -5126044, 673773, 24903294, -5932424, 382789,
+2855617, 6708202, -7636452, 6691559, -2743947, -8194261, 7817378, 9510131, -28175522, 3388192,
+-25096568, -597000, -13092134, -13999446, -3273302, -4156992, -13858786, 6921340, 2071248, 8710194,
+11593727, -16922172, 21184926, 1543504, -20194400, 1708860, -14001593, -6912750, -15046881, -13462575,
+-6030134, 14230300, -12401181, 6808597, 14149233, -8545911, -15495705, -14061186, -20884278, -22264574,
+-13302051, -6306086, 1542430, -3329137, 5951751, 4270271, -13429289, -927176, 14682346, 8586713,
+-22192096, 8672076, -1875290, -6089190, -20580410, 13789529, -7517804, 19017042, 23802708, 660351,
+22626962, -12537546, 13033615, -9863929, 14029511, 18163416, 1355599, -23848342, -956704, -32556926,
+10330470, 7078643, 12716861, 6161131, -12992276, -11081016, -432718, -7426536, 7144678, -8036958,
+-499290, -486405, -8235063, -6259915, 5278515, -3127810, -9289477, -852551, 2598992, 6765647,
+3400004, 14664092, -1746441, 1242319, -4589173, 10286447, -1680943, -2223719, 8792335, -493384,
+1121523, 2149094, 11928735, -1952600, -5177046, 1262720, 8165270, 7936026, -8224863, -775778,
+5312338, -9257265, 4938139, -1494112, 6391448, 392453, -8115341, -4387846, 3613141, 4138201,
+4905390, 3743064, -22801444, 18434536, -43478492, -2560338, -4169876, -3614752, 4002910, -24934432,
+1716376, -4902169, -2164664, 11402601, 4448513, 13265543, -10270341, 9393093, -4920959, -22145388,
+-8965744, -16249472, -10151155, 10748693, -19391240, 2558190, -7205345, -14634027, -2651069, 14361834,
+-19276886, -18478560, 7544110, 11154030, -656056, -8722005, 10343892, 11003169, 13392782, 11608223,
+4763119, 15877957, 18735722, -10039486, 2781528, -8847096, 23514946, -1865626, -16324097, 19685446,
+8584566, 4766340, -9360881, -12345883, 2864743, 7525857, 7488813, -613643, -10283762, 7841537,
+-11970074, 391379, -11812771, 36424544, 5582384, -10408316, 29843580, -3608846, 9107478, -7693360,
+14973330, 22360136, -13892072, 21363168, 22586696, 29582660, 22646826, 2167885, 16810502, -13151727,
+-2639258, 3219615, -7350300, 13088376, 552440, -792958, -1335735, -3750580, 6320045, 3255048,
+17863842, -5822902, 6579353, -3892314, 79457, 3417183, 5244155, -7499013, 2748779, 7536594,
+-3287261, -8422968, -1676648, -13539348, 4667556, 4275103, 3650722, -3537979, 2217277, 7173133,
+3991635, -1680406, 6815576, 3118683, -4488778, -2228551, -1458141, 11232950, 14530948, 7793218,
+3338263, 2663954, 4958540, 8696235, -5807870, -2282775, 3892314, -863825, 780610, 4040491,
+-3461744, 44935560, 11553462, -7482907, -6664716, 10554882, 2873333, 4584878, -1170379, -17749490,
+14952392, -40715216, 4407174, 9126806, -1868848, -7318625, -15724949, -7046968, 1821603, 12267500,
+18485540, -10820633, -23837068, -19084150, -2779381, 854699, -14069776, 28985124, -13498545, -8667244,
+11863237, -3910031, 2098629, -2443300, 24705188, 4273493, -24856586, 9971840, 3103651, 17313014,
+-6171868, 1999307, -10302553, 8669928, 3741990, 21787296, -5313949, 9907416, 10233296, -12949863,
+-14463839, 1163399, 13109851, -25349970, -30175366, -8737574, -12411919, -1495186, -4403415, 3129958,
+6805913, -5980742, 1005022, -34675956, -29591250, 23640574, 24950538, -30020210, -23194970, -28889024,
+-15211164, -11889006, 15017353, -15716359, -27998892, 943819, 1187559, -16995186, -3665218, 24488830,
+-3693672, 1474248, 7818451, -130997, 1376537, -956704, -8644159, -10586021, -593242, -2922188,
+6995965, -1014686, -690953, -7634841, 3869766, -11874511, -297963, 3775276, 3963181, 5874979,
+6514929, 1321776, 3685082, -2559264, 606127, -5996848, 2209761, 720481, -6900939, 7169911,
+7055021, -10987063, 679142, 8196408, 6681359, 12611098, -2597918, -14446659, 4041564, 4846871,
+-7176891, 4709969, -7989176, -3673271, -1235877, -2441689, -6781754, 2551748, -24827596, -3143916,
+-5927055, 7402913, -11701638, -3310346, -38659000, 34237332, 22174380, -3817152, 47195248, -4711043,
+-25704306, -2464774, 10687489, -16042777, -20939040, -4506495, -14253386, -754304, 4127464, -21711060,
+31878858, 986232, 3543348, -20032264, -5625334, 2083059, -5575405, 5026186, 7364259, 26037166,
+4809827, -1397475, 21229486, 17342542, -6029061, 10205379, -13183939, 3701188, 11942693, 11416560,
+29656750, -29233158, 18080738, 54069880, 543313, 8834748, 18670222, 2067490, 3837017, 8696235,
+6896107, -18133888, -21398600, -7883413, 17497696, 5124970, -22238266, -12177843, -816044, -10801843,
+20088098, 1789928, 15555298, -34207804, -20995410, 9927817, 23613194, 14321032, 9620727, 32458678,
+19160386, -13678934, 22565758, -16895864, -3249143, -2454574, 12771085, -2679523, -13777181, 12104292,
+5472325, 1135482, -15822660, 11071889, -48855, 193810, -6950868, 9330816, -7429757, -6176700,
+-5647882, 4440460, -5899675, -11748883, 4145180, 811749, 128849, -6397354, -1028108, -8006893,
+-6630893, -6403796, -3813931, -2473364, -2782065, -2436857, 1360431, 228170, -14920180, 10183904,
+4248797, -4785668, -10969883, -15966004, -141197, -8691403, -5610301, 5783174, -3952444, 9912785,
+5201743, -3469797, 2001455, 9279277, -3878892, -1513976, -4154844, 7831336, 2143726, 3276523,
+-7584376, 16019691, -45107896, 959388, -308164, -1445793, -5730023, 21066278, 1656784, -12120935,
+-22626424, 22896470, -20347408, 531502, 14673219, 11829414, -16007343, -4274030, -25764436, -106837,
+7328288, 8987219, 10375030, 2750390, -16799764, -20876762, 17131550, 8881992, 8504572, 3380139,
+8651675, 2625299, 12597139, -22512608, -38186556, 10590316, -5818607, -8102456, 21208012, -3710315,
+-11403675, 18824304, 17671642, 14749991, -1427003, -9571335, -16472810, -4219806, -21766358, 51015620,
+-4421132, 18382996, 3868692, -16916802, 13830868, -6459094, -16309601, 15950435, 12570832, -28033788,
+19486804, -2972117, 27059368, -27431420, -20794084, 27704150, -1210107, -22395034, 22818624, -8382703,
+39030516, -16583942, -13514651, -23592792, 14919106, 2793876, -19287088, 7683697, -25045564, -18210124,
+1571421, 16216723, -14395657, -8743480, -28436978, -25687126, 30107720, -3458523, 13086228, 21195126,
+28566364, 164283, -2956011, -2193655, 7504919, 11523934, 2092186, 5304822, 17577154, 7756174,
+9666898, 5797669, 4377646, -3417183, -1676648, 10882910, 8223789, 14253923, -6764574, 9409736,
+9860708, -15477452, 3929895, 3947075, -8483634, -4279935, -47782, 3954054, -6894497, 11230803,
+596464, -2532420, -3209414, 9543954, 343061, 3016141, 852014, 2719788, 2139968, -8626979,
+-4333085, -6433324, 782221, -75162, 4756677, 6197638, -5541045, -12905840, 33430952, -7626252,
+22633404, -35421132, -6245420, -822486, -42293080, -9296994, 6096169, 20762946, -10429791, -9920838,
+893353, -3270081, 29644938, -2834679, -14949171, 31459024, -3935264, -1634235, 5907191, -12582107,
+27166206, 1787243, -5582384, 13019120, 11131481, -14853608, -5120138, -6898255, 21146272, -42341936,
+-756451, -8220568, -14972256, 7237557, -15222975, 24634858, -6494528, -30515742, -3196530, 46335180,
+-28142774, 20296942, -31372588, -9035001, 31181462, 22795002, -16859894, 7905961, -20555714, -26996554,
+5722507, -11879880, 11742977, 3386582, -1907502, 4578435, -39545376, -15469398, -20169704, -28904594,
+13403519, -10982231, -8064875, -16034724, -28101972, -23629300, 18482854, -3709778, 57686780, 10104447,
+5310190, 20593294, 36273148, 4734665, -26200912, 31826782, 24077050, -20378546, 5369783, -5178657,
+-20304458, -16004659, -13727789, -1593970, -12533788, 4679367, 8475044, 2937221, -9771051, 16919486,
+2618320, 7793755, -2345052, -3001645, 8006893, 4873714, -8149701, -7355132, -7048042, 7729868,
+3680250, 9347996, 9939091, 327491, -5374078, 7504382, -4343286, 16165720, 7662222, -19564650,
+-3879966, -14453639, 1710471, -4792110, -6980933, 20237350, -1121523, -6424734, 5171678, 6274947,
+-7439420, -1611687, -10222022, 4406637, 7323456, -1548873, -3256659, 1018444, -6892886, -1950452,
+-1102196, 9410810, 22501334, -13341242, -16915728, 19013284, -30223684, -3605625, -6158983, 1739462,
+21436718, -14017163, 23783382, 10110353, 5483063, 7039452, -38565048, 26234198, 5011153, -27226872,
+10755672, -28876138, 5035313, 38679400, -4684736, -22938884, -24263880, 10386842, 17708688, 14176613,
+7698729, -25550760, -17351668, -7927973, -4602058, 33048700, -20787642, -12575664, 49386220, -27374510,
+-1949915, 19502910, 259309, 20547124, -2829310, -16590922, -10934987, -30141006, 15573015, 21423296,
+-31957778, 48063368, 16201690, -36254892, -32861868, -31532576, -37575596, -30562450, 1793149, 15093589,
+3190624, -25464862, -9406515, 16997334, -219043, -15952582, 17799418, -34273304, 2433636, -7890392,
+-31425738, -29571386, 5387500, -11766600, 22635014, -41004052, -5240934, -14523969, -29744260, 2052994,
+48631376, 12399034, -21100638, 10391673, -26040386, 10690174, -10394895, 932545, 1757715, 13690208,
+-1148904, 4684199, 17551920, 183073, -9212168, -4390531, 14150307, 9782325, 6708202, 3382824,
+-26776974, -2756832, 2415919, 15202574, 7969849, -14057428, 114354, 1617055, 24091008, 1329829,
+8010114, -7320772, -4261682, 3504157, 8152385, -964757, -6569690, -13294534, 2391223, -5031554,
+-8749922, 4543539, -5957120, -6561100, 9649718, -7358353, -10130217, -14671071, -12486544, -2388539,
+4336307, 64425, -10765872, 9419937, 23890756, -59210420, -53983980, -47558172, -30081950, 11886322,
+-12504797, 60175176, 16362215, -6925098, -13562970, -8123931, 17485886, -39906152, 46476376, 60589640,
+24577950, -4182761, 48570176, -15826418, 29474214, 54989540, -9870909, 2537789, 10646687, 73330128,
+-18495202, -5206037, 44123272, 16099685, 14326937, -12671764, -44817448, 2530810, -35489852, 16438987,
+-44033080, -52374980, -450972, -3576097, -35990752, -2539400, -17435420, -37691024, -29479582, -48998596,
+-2179696, 48686140, -15633681, -10130754, -45400488, -25074556, -16669305, -16319265, 15475841, -11871826,
+82228760, -20180978, -1085553, -30746598, 62051540, 50191524, -36003636, 40662604, -14478872, -61022896,
+-10763725, -6590628, 12670690, -14817637, -13695040, -8398272, -24458766, 6229313, 30184494, -36581312,
+-5134634, 9476308, 6200322, -42374148, 26922466, 18172006, 62221192, -27435714, 17004312, 25428354,
+-1662689, 6375879, -916976, 8240432, -7030862, 19377282, 8438000, 15550466, 13837311, 435402,
+14245870, 3770981, -5527623, 14439680, -1061394, 1847373, 1493038, 9872519, 7635915, -11862163,
+-8917963, -14872935, 21447456, -15336254, 3029563, 12566537, 5393942, 23354422, 20456930, 35152160,
+24322936, 19665044, 1184337, 12704513, -19060528, 16595217, 12690018, -4949413, -18347564, -34833796,
+-13553843, 9183714, -19253802, -7859790, -14055817, -34166464, -29232084, -14479945, -21832392, -13649943,
+-18838264, -24445344, -25312926, -8628052, -7490960, -12050068, -18683108, -10973105, -16718160, -12257837,
+-13703093, -4560182, -6568079, -5917928, -7117298, -6387690, -9249212, -5163088, -18581640, 24885040,
+104487968, 12195560, -65514896, -16246251, -23169202, 5046587, 32613298, 58655296, 16750909, -49192408,
+-950262, 34086472, 7393250, 770410, -1538672, 8917426, -4715337, -5952825, 40475236, 25402584,
+22601728, -34395172, -22351010, 23452668, 9043591, 13856638, -11962558, 4336307, 45090716, 1083406,
+38227892, 20122996, 20841866, 37402724, 5388574, -19834696, 4562866, -22719304, 5668283, 15835544,
+3987877, 61139396, -20449414, -39417600, -38038916, 47212964, 21731460, 25138444, 17139604, -27072252,
+-34014532, -20715702, -1228898, 10255845, -7492034, 16633335, 31222802, -2196876, 22617298, 20567524,
+-31781684, -6337761, 8942659, -14926622, -13506598, -15674483, -52385180, -8929237, 22512608, 1894081,
+45533632, 30320858, -22259742, 16029892, 126165, -15309948, -12950937, -25431038, -56633440, -30291330,
+2166811, 862215, -12652974, -3546569, -6025839, 17902498, 18719614, 9584220, -3585761, 1175210,
+14147085, -7321309, 8814884, -25704842, -12268574, -3599183, 13469017, -3806415, 5202816, 8636105,
+8616778, 851477, 24211268, -19921668, -17880486, -18152680, 12519830, -11922292, -18668076, -18607408,
+12677133, -6471979, -13660680, -7467875, 9476308, 1968706, 13974213, -24324010, -15863462, -3335042,
+-1761474, 4123706, 10830297, -5874442, -9630390, 15307800, -8556112, -10720238, -8988293, 14691473,
+-4293357, -9008694, 4414153, -1850594, -8582955, -799938, -11389180, -8104067, -5164698, -1768990,
+-3637301, 1419487, -2934000, 82678, -1082869, 716723, -5811091, -360240, -2148558, -273804,
+-3255048, -62277, -5091684, 467078, -3877819, 336081, -3296924, 321049, -1396401, 1210107,
+-2267206, 519691, -3026341, 12348, -3240553, -866510, -4192425, -593779, -3076270, -783832,
+-2767033, -638876, -1737314, -743029, -2878165, -489089, -1251983, -237834, -1704028, -77309,
+-2339684, -280247, -1575716, -784368, -981937, -636192, -1603633, -455803, -1211181, -1102196,
+-729071, -566936, -1012002, -377957, -969589, -6983617, -24307368, 1739999, 83454976, 20071456,
+35704064, -18327162, -74075840, -39244188, -54263152, -19776176, 38222524, 84169544, 39097088, 8358007,
+-39521752, -39344584, 27919972, 41310068, 22078816, 50411640, -1153736, -34830036, -48302276, -25130390,
+-6586333, 37171332, 5720897, 21021180, 20746302, 2230699, 52177948, 34770444, -2919504, -5996311,
+-46127948, -12581033, 22012, -118648, 28041842, 47164648, 30562450, 22080964, 46337328, 25082072,
+-45988364, -38885560, -10770704, -30711164, 32465658, 20270636, 47538844, 35147864, 42174968, 11095511,
+8332774, -34846680, -34272764, -34237332, 12771622, 15831249, 985695, -5566278, 74403328, 17506286,
+-3958349, -7986492, 51298016, -54562728, 12359842, -102933184, -21677774, 24439974, -34529388, 32212254,
+19940996, -530428, 74345344, 33686504, -40446244, -83734144, -38656852, -38500088, -19218368, -14960982,
+-9553081, 35112968, 24101208, 47731044, 7010997, -36942624, -23586886, -38713224, -33911452, -35896800,
+16564615, 2230699, 16401943, 19753092, -8633958, 18191334, 11360188, -14462229, -384400, -15909096,
+-3592740, -33177548, -32810328, -13776108, -13563507, -459025, -30644592, 15933255, -1050120, 4861366,
+10190884, -22334366, -42841224, -40967008, -862752, 7711614, 10430865, 25202868, 7841537, -14225469,
+-23509578, 7208566, -8080444, -13438953, 6310381, -119384520, -72192496, -40111236, 35506496, 9510131,
+162694432, 172609360, 105664784, 191458368, 157327872, 165532864, 115457312, 139977280, 114410416, 1617592,
+-53896472, -77961712, -74036112, -156113472, -186343600, -195622336, -135817600, -107627048, -41735808, 6955700,
+-54739360, 33214592, -69104952, -25645250, -4344360, -22010096, 16900160, -64315524, 88144544, 14474040,
+80391048, 50872276, 30320858, 20380156, 44668196, 28321552, 45799920, 103909752, 99657200, 78623672,
+97401808, 122196648, 112113680, 104817600, 193642352, 67280664, 136372720, 176667568, 122163904, 160429920,
+85856936, 114169896, 90058488, 107139032, 116895592, 42634528, 75835160, 56688736, 71004936, 67791224,
+19077170, -13871134, -73614664, -27907624, -98354216, -86814176, -145681536, -165876464, -166155104, -351912992,
+-297200992, -319987424, -316638400, -370377568, -373796384, -231253920, -268156288, -200403168, -236552848, -180594240,
+-170225664, -148993488, -148671904, -86150064, -37489696, -54989004, -54770496, -45528264, 8941585, 70666704,
+37590628, 147844592, 128107600, 187028640, 193133936, 177332752, 222504544, 205272592, 238769584, 185783648,
+228462736, 241082416, 270541600, 235679344, 141533136, 140538848, 141366160, 142544592, 132476656, 92199528,
+87331184, 35435628, 25957172, -3813394, 4635344, 16865262, -48468168, -72948944, -77669112, -49035104,
+-42195368, -81222128, -92899072, -109922712, -78565688, -101880920, -92745520, -79727480, -83905408, -87261928,
+-85525144, -23619636, -19656992, -11857331, -18693846, 9898826, -1969779, -3438658, -17435420, -7825431,
+7204271, 10196252, 4879083, 14689325, 12035572, 18049600, 1626719, 1876364, -1473711, 8926016,
+-681826, 2204929, 1800128, 5888400, 1277753, 1185411, -7686918, -220654, -1375463, 1868848,
+-4836133, -788663, 202937, 2099165, -3825742, -6979, -2946348, -535260, -6324340, -3790846,
+-4212289, -840740, -6054830, -4639102, -9749039, -3193845, -3563749, 140660, -4489315, -5297842,
+-10674067, -9229348, -12710419, -7653632, -10162429, -9287330, -13991930, -10663330, -11245835, -6436009,
+-8775155, -5345087, -7621957, -3775813, -4050691, 1909113, 3398393, 8987756, 7508677, 11869142,
+11892228, 18670222, 19341848, 20696374, 19800336, 22946400, 20059108, 21065204, 17728552, 17413944,
+12492986, 11454678, 5028870, 4989142, -250182, -1066763, -5357435, -3964792, -6171868, -4177930,
+-6397354, -3896609, -5478231, -2580202, -4044786, -1175210, -2981781, -365072, -2284923, 224949,
+-1702418, 750546, -1279363, 1044751, },
},
{
{
5495411,
-107911, -2041183, -466004, -4917201, -3379603, 2188286, 194347, -3094524, 3853660, 2585570,
--834834, 237297, -522375, 3105261, -4303021, 1620276, 3226594, 2850248, -6192269, -4335770,
--3074660, 4167192, 1010928, 1365263, -1721745, 4445291, 1671816, -1093606, 122407, -1256278,
-876173, 1671279, -980326, -1267552, -3723200, 3978750, 6618008, 791885, 4206384, -768799,
-853625, 1518808, 1834488, -5004174, 361851, -5228049, -1193464, -731755, 1658394, -2631741,
--76773, 1158567, 537408, -3043521, 130997, 357556, 2510945, -3236258, -4063576, -537945,
-5541045, 8881455, 30602, 1464047, 629213, -1889786, -5317170, -1345935, 3732864, -1690607,
-3718368, 1446867, 3787088, -193274, 1483374, 1347546, -3165928, -4292820, -434865, 1638530,
-2491618, 1211181, 1125818, 753230, 853088, -1462436, -2328946, -1588064, -1257352, -600759,
-68719, -871342, -96637, 802622, 1296006, 1137630, -151398, 94489, 781147, -1611,
--903554, 2574296, -5616207, -1210644, -5328981, 3103651, 289910, -2379412, 11197517, -4343823,
--8112657, 666794, 3681861, -628676, -6117644, -1675574, -2688113, -941135, -2928094, -893890,
-4121558, -240518, -2774012, 4839355, 652298, 4702453, -1288490, -1090385, 1737851, 172872,
-2032593, -819802, 4337917, 7223062, -2026688, -4769561, -3583077, 3010235, -58519, -10990821,
--1098975, -4348118, -1687922, 5458904, -3823595, -2814814, 3679713, -2384781, -581968, 5011153,
-1662152, -3856344, 1703491, -2762201, -6570763, 2139968, 2512019, -4897874, -2914135, -1376537,
--2129230, 10201, 2076617, 3438658, 5075578, 5783711, -1413581, 643171, -2306398, 2527588,
-1527398, -1214402, 2352568, 3737159, -3558917, -1733556, 548682, 129923, 1372779, 4285841,
--577136, -1072131, 3788161, 622770, -2700461, -1603097, -244276, -1570347, 1130113, -615791,
--1510755, 663036, -1708323, -1250909, 787053, -1612760, -1174137, 111669, 1071594, -2010045,
-199716, -440234, -761283, -935229, -131533, -1553168, -497679, -1483911, -9034464, -4620848,
-2804077, 3991098, 1585380, 4332012, -3701188, 4535486, 5610838, -1589675, 6207839, -862752,
-4578435, -2184528, 162135, -1960653, 5849746, 2257005, -213675, 5188858, -2749853, -2218888,
-3833258, -9060770, -1551557, 479426, -1902134, -8075613, -4900558, 3329674, -3134789, -2115808,
-139586, 6292664, -1490891, -4427575, -324270, 1610076, 3590593, -554588, -5693516, -3698504,
--1027034, -2942053, 976031, -4989679, 2498060, -4694936, -6858526, 209917, 2440078, 2789581,
--2175938, -1591822, -4491462, 5835787, 3407520, 806917, 87510, -171262, -1956895, -1072131,
-2005750, 2488397, 8849243, -1000727, 2250026, 572841, -234613, -4324495, -3251827, 5972689,
--2540473, 583042, 1515050, 860604, -907849, 4514548, 271120, 161061, -4871567, 4735739,
-2690797, -1835562, -1058173, -534187, -1391569, 652298, 3451543, -48855, 1391569, 1032940,
--445603, 791885, 1800665, -185220, 37581, 542777, 858457, 707596, 1044751, 1827509,
-720481, -1340030, 1442035, 652835, -949188, -771484, -122407, 211527, 27380, 2218888,
-2672544, 2435247, 5738613, -3802657, -5739150, -4591320, 2859911, 6393059, -1224066, 4899484,
--4384625, -5273683, 4329864, -2189897, 409096, 1639604, 5433671, 2040646, 8653822, -3784403,
--4684736, 2035815, -2617783, -2420751, 4881231, -7691213, -4794794, 772557, -1538672, 3505230,
--2665027, 964220, 6132140, -5761699, 4246649, -3479461, 2731062, -3260954, -983011, -530965,
-6352257, 1199907, 169114, -4699768, 170725, -5592585, 2033667, 1369021, -3793530, -100395,
--1607928, 9660455, 1238024, 606664, -8458938, -4935455, -7145752, 5513665, -3674882, -415001,
-2845416, 12321187, 8640937, -3501472, -7662222, -3181497, -6663642, 6949257, -1410897, -1948841,
--3125126, -2048163, -648003, -3209414, -2187749, -554588, -2662343, 1832340, -1887638, 2578054,
--9677635, 629213, -875100, -3058017, -1506997, -3246459, -731755, -5063230, 323733, -2114198,
--258235, 3032247, -1058710, -1104344, -2244121, -2419677, -765578, 658204, -230854, -231928,
--954557, -396211, -1112933, -190589, 144955, 569620, -820876, -875100, -1246614, -1067299,
--980863, -1584843, 540629, -534187, -130997, -1610613, -4788889, 3417720, -4958540, -9024800,
-9200894, 4059281, -9511742, 9506373, -1469416, -631360, -13395466, 7943542, 5410585, -10960220,
-3306051, -1868311, 4190814, 882616, 4818417, 2978023, 1277216, -5135707, 536334, 1793686,
--6633040, -2924336, -7839389, -1425392, -4850629, -2699387, 957778, -6257231, -2219961, -9187472,
-3506841, 836982, 844498, 732829, -3864934, -8007430, -2422362, 2724083, -1231045, -755914,
-8368207, -12399571, 5236102, 6230387, -860067, 327491, -2346663, -1044214, -3945464, -6161131,
--4103841, -4869419, -3161096, 2990908, 1741072, 2654827, 4207994, -1062468, -2172180, 5866389,
-11385958, 7929584, -126702, -9725417, 2696166, -1552631, 1461900, 10155987, -26307, 10231149,
-9233643, -1334124, -3045669, -2544768, 755914, 815507, 3461744, 10373957, 2818572, 342524,
--1043140, -6550362, 798864, 1924145, -2166274, -393526, 355945, -158914, 1227287, 834834,
-760209, -887448, 1284732, 1084479, 1148367, 1212791, -3492345, -637266, -2506114, 927713,
--1956895, 754304, -551366, -979789, -2099702, 323733, 532576, -3148211, -975494, 644245,
-88047, 14436996, 3812320, -2676302, -608275, 4376035, -1431835, 13982266, -1399086, -2257005,
-17933100, 17180, 9114994, -3447785, 343597, -872415, 1563905, -2376728, 1334124, -374199,
--414464, -9773735, -830539, -2401424, -1636919, -4128537, 6291054, 2801929, 3782256, -5524939,
--506269, -8675834, -3339337, 1516124, -602906, -5312338, -1511829, 2771328, 6569153, 3821447,
--1956895, -8074002, -183610, 2174327, -1244467, 4129611, 2904472, 5632313, 7995082, -2666101,
-44023, -8616778, -10259603, 9675488, 5344550, -452045, -338766, -423054, -3680787, -4240744,
-15032, 7725036, 4618164, 1320703, 9643812, -7418483, 2243047, -6103149, -4534412, 4006668,
-4316442, 3373697, 14477798, -620623, -6401112, 1027571, -6272800, 2783676, 1775432, 5150203,
--2738579, -19864, 746251, -4933844, -764504, 3276523, -406411, 772020, -1999844, -1175210,
--216359, 2235531, -1137093, 1373316, -2126546, 103616, -2778307, 815507, -1428614, -1093606,
-560493, 1347009, -1680943, 1819456, 1333587, 2244121, 245350, 1286880, -499827, 743566,
-529355, 752693, -791885, -127238, -734976, -228707, 526670, 1106491, -959388, 383863,
--206158, -7991324, -10699300, 4145717, -9999221, -10737, 11158862, -11675869, 4281546, 5221607,
--3115999, -14408005, 202937, 8406862, -9300752, 5778342, -639413, -4141422, -12064563, -352724,
--8701067, 1530082, -4412005, -6803228, -8464307, 3471944, -1190243, -508954, 8069707, -4888747,
-6809671, -5175436, -2054068, 10402948, 3582003, -5569499, 4288525, 2502892, -4807142, 2529199,
-2632278, -1860258, -2046552, 405338, -2311229, -2757906, 1717987, 1895691, 14186277, -13356811,
-2170569, 840740, -4771172, 9585293, 5473399, -3303904, -10335302, 910533, -1035624, -3134253,
--6518150, -7660074, 9346386, 6042482, 786516, -943819, 4985384, 2513093, -2246805, 3967476,
-2871186, -2599529, 9944460, -3698504, 6088653, -4077535, 3036005, 3112241, 2252710, -311922,
--5512054, 5269925, -4287988, -4489852, -3059091, 1527398, 5369, 643708, -5226439, 2836826,
-2218888, -3330210, 358093, -142271, -1641214, 300648, -1081795, 2522757, -714038, 376347,
-2138894, -974421, -1592896, 1396938, -1818382, 1472100, -310848, -32212, -2094870, -958851,
--51540, -2321967, 2299955, 1279363, 536334, 1500554, -467615, 1018444, -555125, 4712116,
--10787884, 7912941, -4505421, -1996623, -6185290, -4464082, 3792993, -3561602, 3105261, 12097312,
-4160213, 6646462, -15420006, -10217190, -5484137, -3694209, 1687385, -72478, 2680060, -12957379,
-6951942, 2888366, 1749662, 12359305, 226560, -7007239, 11621645, 4565014, -5159867, 2369748,
--6636262, 6097780, 2893734, 8127152, -6947647, -4947266, 2078764, -7044820, 8904541, -8147553,
--121870, 7895224, 7293928, -15038828, -403727, 734439, 1771674, 2485712, 16451335, 3792456,
-1050656, -5028870, -4129611, -8882529, -4785131, 12144020, 319438, -14499273, 245350, 3355980,
--8207683, -9062918, 1103807, -5878737, 2438468, 13310641, 6560026, 5601711, -5432597, -14223858,
-1175747, -2434173, 6558415, -1278827, -11883101, -1448478, 3139084, 3282966, 3248069, -1004486,
-10118943, 1905892, -6383932, 8323647, -581431, 4982162, -132607, -1240709, -4296041, 6152004,
-4265977, 2407329, -3107946, -1225676, -789737, -2073396, 1205812, -10201, -2633889, 1334124,
-849330, -1498944, -1948841, -824634, -1461900, -214748, 1912334, -1908039, 1007170, 2357937,
-2861522, -718870, 1247151, -1493038, -19019188, -5684926, 5398237, 14697378, 2113661, 7620346,
-26131118, 4335233, 4471598, -4043175, -12504260, 7092065, -6055904, 6535330, -1559610, 17273284,
-12606266, -6667937, -14129369, -11250130, 8548059, -7494181, 10475425, 4595615, 3422552, -3616899,
--1364726, 12430172, -2439542, 10969346, 10996190, 5672578, 7717520, -8543227, 8355859, 4494684,
--4459250, 12147241, -5342940, 11035918, 843424, 1245004, -16186658, 9760313, 905164, -3048890,
-8014946, -11294153, -4468914, 6762963, 5541582, -10406169, 1687385, -6657736, -3814468, 10301479,
-1395328, 3107409, -1079111, -11870216, 7976291, 7560753, 527207, 5977521, 2692945, -5259725,
--5513128, -448824, 6338298, -10749229, -379568, 688269, 475131, -103616, 4713727, 6179384,
-12702366, 7123204, 428423, -17840220, -5858336, -6680285, -590558, 1319092, -5004711, -10576357,
--3324842, -4766340, 2794950, 408559, -3008088, 1129040, -3085397, 4915590, -1763621, -2107218,
--2911451, 53150, 1423782, -6361384, 3992709, -4093104, 1660005, -1054951, -2346126, 108448,
--3917010, 1262720, -3534221, -2579665, -505732, -2046015, -1882269, 2178622, 3757023, 2246805,
-3616899, 4704600, -981400, 693100, 23588498, 6888054, 3148748, -8753680, -21223580, 15345381,
-4800163, -14102525, 4212826, -1545651, 3620658, 2961917, -10174778, -21792664, -17040820, 5723044,
-13343927, -2678986, 14007499, -6528887, 10926934, 13305809, 18072686, -4028143, 13351980, -11904576,
-4514548, -6516539, 1597191, 7155953, -324270, -3905736, 3236795, 8992588, -6468758, -12084427,
--12194486, 25435334, 21475, -1332514, -11530913, 11758547, 3814468, -23592792, -13659607, 5208185,
--3348464, -4238059, 9146670, 3034931, 22722524, 12494060, -855772, -13312251, -13036836, -7456600,
--5393405, -15098421, 13818520, -10357851, 10919954, 9342091, -9567577, -12352326, -11909944, -17390322,
-4138738, -396211, -6288369, -7933342, -12760885, -4657892, -12573517, 2511482, 1427003, -4374961,
-1614371, 10111964, -26234734, -10285910, -21429202, 10635950, 7405061, -9299678, -3191161, 4238596,
--4131222, -282394, 4946192, -4114042, -8656507, -1112933, -2580202, -2859375, -230318, -1282585,
--3758097, -34360, 623844, 4378719, -6435472, 1482301, 3317325, -584116, -2753611, -4234301,
--1326071, -820876, 740345, -1602560, -504659, -2663417, 1038308, -1203128, -4192425, 6931541,
-565862, 1928977, -5702106, -12931610, -24124294, -5688148, -6049999, 1089848, -5376226, 802622,
-2871723, -2874407, 10783589, -13760538, -3790309, -13066364, -313533, -6619619, 15174119, 16382079,
-13597866, -18752900, 13469554, -6910603, 10313827, -4046396, 7707319, -6359773, -7577933, 2649995,
--9884330, 6383395, 8280697, -1178432, 5117991, -9565429, -822486, 15688442, -12259984, 423591,
--3379603, -5351530, -9805410, -738198, 16056198, 20500952, -12660490, 6087580, -1254667, -12693776,
--12435541, -13922136, -5913096, 26017302, 16189879, -5028333, 8797704, -5685463, 7677791, -14441828,
-8815420, -551903, -7418483, 19798726, 10675141, 3957276, 6923488, 5596343, 19061602, 2373506,
--15407121, 6347425, 12492449, 9371619, -27194660, 16782584, -11298448, -10500658, -4731444, 1651415,
--10405095, 11871290, 26903676, -4653060, 4225174, 13480829, 2742874, -2255932, 3666828, 1348620,
-8170639, 6911140, 4631586, 12671764, 6969122, -3546032, 9102646, 5363341, -3346853, -7720741,
-4832375, -1058173, 5196911, -2195802, 1894081, 3865471, 1998770, -1068373, -459025, 1777043,
-6441914, 1348620, -899259, 1375463, 5073430, -1942399, 756451, 7773891, 3489661, -1961190,
-4733591, 1420560, 1648731, 3273839, 453119, 2729989, -669478, -4778151, -3911642, 3959960,
--1808181, 17306034, 10850161, 46470472, 12667469, -7461969, 2721399, 8075613, -48855, 15688442,
-11208791, 10965052, -13970992, -22629646, 22713398, -12680354, 1953673, 8255464, 24952686, 10419054,
--15466714, 14078903, -14007499, -2535641, -19174344, -24578488, -2998961, 7037841, 6502581, 5328444,
-6142877, -1650878, -17292076, -5996311, 5290326, 6095096, -9247601, 19292994, 11836393, -11042361,
-6096706, 9773198, 3510062, 909459, -10679973, -967978, -7544647, -4005594, 891206, 12139188,
-29185376, -7632694, 2491081, 4672388, 10773389, -10165114, 37051072, -2870649, 3429532, 3461207,
--17072496, -16216186, -26913876, -11004780, 14467597, -4771172, 7192460, 6286759, 25452514, 4458713,
-4432943, 1719598, 20026896, 10117332, -8602819, 18898392, -17026860, 3078955, 16918950, 22396106,
-20109574, 8369818, -11704860, -18459770, -8286603, -5638755, -13910862, -7275138, -7977365, -1782948,
--11700028, 3313567, -4120484, -1498944, -10213969, -785979, -6419903, 10359461, 890669, 2582886,
--9094593, -1319629, -12436078, 1267552, 5129802, 20938, 8869644, 6096169, -104690, 4143570,
--1987496, -5122286, -3375308, -2062121, -10654740, 1408212, 1999307, 2951716, 3042448, -4768488,
-7346005, 8512625, 3463354, -5800890, -4294431, -1630477, 1730335, 4919885, 2341831, -3720516,
--2225867, -1619203, -4672388, -19415936, 11006927, 4938139, 13464722, -3782793, -29229936, 2122788,
--19565186, -17711372, 5322538, 3946001, 8315057, -5349919, 6010270, -1287417, -9947144, 15759846,
--2489471, -5566278, -6328635, -11508365, -9556839, 5553930, -12073690, 2687039, -7709467, -5626944,
--3305514, 15423764, -3045669, 16571594, 10576894, -4728222, 5621576, 5528697, 11996381, -8589935,
--11303817, 1381906, 7056632, 8878771, 15814070, -17790828, -16957068, 6927246, 5621576, 19176492,
--9638443, -1743220, 9670119, -296890, 2692408, -3966402, 12745315, 15679852, 7334731, -2415919,
-10042170, 33275796, -7475391, -10211285, 12461311, -1778653, 19618336, 4322348, 9127879, 10668699,
--3647501, 7336878, 22692460, -6635188, -27390080, 18792630, 5552319, -9448391, 2553358, -42103564,
-27706298, -734976, 17141214, -11404749, 8897025, 795643, -16704202, -16312286, -2282775, 2581812,
--12386149, -433792, 1764695, -2763275, -4211753, -3074660, -13561359, -2755759, -8203925, -419833,
--4366908, -1762010, -4988068, 7524783, -6164889, -5138929, -8840116, -4760435, -10070625, -2405719,
-2019172, -6091874, -827855, -5107253, -5128191, -5935645, -549756, -5030481, -3516505, 954020,
--1656784, 3651259, -3316252, -6972343, -7171522, -625992, 927176, -5033165, -1167694, -2654290,
-1832340, -9995463, -167504, -18402862, -288300, 27136678, 14202383, -36327372, 6052146, -7053410,
-3559454, 5229660, -1290638, -19032610, 3011309, -3470334, 16431471, 30404610, -4703526, 9363566,
-20869782, -1545651, -5329518, -5884642, 8498130, 30348776, -235149, -2790655, 25870736, -11013370,
-7253126, -583042, -45634, -7299834, 9956808, -29092498, 1252520, 8345659, 21139830, 21434034,
--17829482, 107374, 20319490, -1870995, 37515464, -14155675, -17862768, 1830730, 27346594, 4097936,
--20378010, -10390600, 6496675, -747324, 12103218, -30865246, 4042638, 685047, -5961952, -22575958,
--19070728, 4487167, -5552856, -2020782, 1438814, -23477364, -23579370, 4414153, 4097399, -24848534,
--7839389, -16387985, 14425185, -38896296, -14118094, 11868068, -22855668, 12028593, -5919539, -10006200,
-13013751, -4599373, 19376744, 17370458, 4409858, 10509248, -4742181, 1566589, -13139916, 13863618,
--10115722, 7955353, -13786308, 9710384, 1048509, 3920232, -885300, -673236, -7783018, 8906688,
--10310606, 1088774, 1547262, 4672388, -11352135, 5304822, -4399121, -4041564, 4009889, -3257733,
--5160403, 7078643, 3633006, 7613904, 4024384, -1660542, -3640522, -4810900, -750546, 766115,
--5245766, 1152125, -3746822, 1150514, -10897943, -6675990, -4285841, 4918812, 6934762, -4519380,
-1789391, -2505577, 3160559, -9727027, 20573968, -383863, 11556683, -21467858, -1189169, -20342576,
-21296058, 8873939, 27741194, 18892488, -9322763, 3307662, 21989158, 10715407, 11377905, 6666863,
--17981418, -5634460, 9396852, 1068910, 11028939, -23795192, -17005386, 10198400, 35422744, 4391067,
--11232950, 21764746, 6669011, 13457206, 4016331, 2320356, -19434728, -20542828, 703838, -57982,
--34301756, 2407866, -6777996, -2180233, 11299522, -13920526, 8620536, 26811334, 3189550, -44771276,
--31572842, -5610301, -9494562, -11445014, -9664, 7661148, 7349226, -11297375, 12611098, 11235098,
-10879152, -7288023, 9404368, -5435818, -11236708, -3162170, 10459856, -33546916, -7260642, -15388331,
--16967806, -7313793, 4954782, -9237938, -617938, 36017596, 21028696, -14464913, 409096, -41876,
--6005438, -6955700, 3483219, 23998666, 9217000, 3243774, -7311108, -5969468, -12419972, -15096273,
--15326591, -4044249, 2266669, 4367982, -5199058, 3848828, -1038308, -4039954, -1092532, -4662187,
--13440026, -3899830, 127238, -3952981, -11596412, 1007707, -4043175, 12416750, -6281927, 3874597,
--1072131, 4828617, 176094, -10953777, 1129040, 12022687, 2151779, 10759967, -2873333, 5254893,
--3376381, 3144453, -547608, -8280160, -3216931, -1353452, -1164473, -2065342, 166430, -2879776,
--5530844, 7329362, 14439143, -20045686, -4927938, -8599061, 5401458, 41366976, 6672232, -20623896,
-5510980, 18170396, -3838090, 16964584, 21929030, -11455215, 5255966, 10836739, 7614440, 302795,
--3125126, -6941204, 3344169, 12761958, 6761889, 11905649, -18043694, -28125594, -2889976, 12276090,
-11071352, 8760123, -3099893, -25963614, 8381092, 5526013, 38683160, 40399536, 9720585, -30392262,
-21921514, -11693585, -30794916, -7407745, -36459976, -28024124, -12218108, -13602698, -28261958, 4742718,
--11352135, -32633162, -29618632, 8381629, 19334332, -3375844, -24997246, 7250442, 775778, 7820062,
-15829639, 15174119, -19333796, 24824374, 17243220, 1986959, 6961605, 17213156, -863288, 45338212,
--32424856, -15722802, -1046361, -37243272, 30444876, 2019708, 38256884, 11600707, 8586176, -2132988,
-7605850, 15998753, 666257, -15281494, -215822, -8250632, 6088116, 5635534, 10951630, -4784594,
--13937169, -292595, 12986907, 5937256, -8262980, -4340065, 6834367, -9497783, -30065, 2684,
-11921755, 4462471, -6483253, -3022046, -7369090, -12139725, -10334765, -768799, 2272038, -6115497,
--4340065, 1197222, -5960341, 9167071, 4571993, -301185, 5630702, 18711562, -7185481, -3781182,
-2135136, 4894115, -10192494, 10899553, -3731253, -515933, 1889249, 8034810, 14186814, -20491288,
-5557688, -40672804, -10709501, -2757906, -9705552, 44122736, 14224932, -12043625, -27643484, -14392435,
--11241540, -17920752, -12728672, 6526740, -40468256, -9023726, 30103962, -3798899, -3128347, -31360778,
-29888678, 14436459, 892816, -12060805, 12864501, 6002754, -6861747, 13269838, -20795694, -5848135,
--10515691, 5753646, -4691715, -13516799, 15250892, -11571716, 6485401, 155156, -20205136, -12995497,
--2975339, -25837450, -24881282, -33880312, -8464307, 15122580, -11074036, -6444062, 19588808, -23934242,
--19233938, 20662014, 33823, -1508607, 19072340, -20401, -15948287, -9574556, 6567542, 13349295,
--20666308, -6856379, 25587804, 10669773, 24696062, 12394202, -4821638, 12597676, -792421, -33493228,
-10617696, -25415468, 18386218, 2868501, 6863895, -10881300, -28512678, 5724655, -4093641, -25228638,
--9796820, 10858214, -12455405, 200253, 4112968, 7814693, -7925826, 111669, 1395328, -2476049,
-5386963, -4066797, 3097745, 9883793, -1704028, 3164317, 2868501, -6966437, 2273648, 4559645,
-2975876, -5295695, 6910603, 4315906, -309775, -7283191, -13983877, 2559801, -11026792, 8746164,
--11262478, 7143605, 9554155, 75162, 725850, -100395, 5509370, 453656, -4694400, 10645076,
-9001715, -4752382, -2973728, -7070590, -11407433, 30144228, 10711648, 974421, 3835406, -8054138,
-12144020, 18516678, 47413216, 41146860, 3704409, -18328236, 8542153, 23794118, 6974490, 18389976,
-13502303, 8826158, -13885092, -18148922, -21498996, -1662689, 8161512, 15075872, 30838938, 16095927,
-19821274, 11294690, 18385144, 9054865, 17713518, -11911018, 3437048, 33042258, -774168, 25381110,
-6888591, 20493974, -32663226, -5498632, -9547175, -9827959, 7759396, 12596602, 23854786, 38235948,
-32284196, -11578158, 5824513, -42827804, 10470593, 9644349, 37688876, -30054034, 23874650, -7937100,
--20837570, 15866683, 5057324, 13210246, 23644868, -7845295, -30046518, 15417322, -19281718, -26768384,
--12533251, 35369592, -30769682, -44008920, -22013854, -7454990, 23206782, -2609730, -15661061, -30440044,
--22737020, 14259828, -1973001, -769873, 19680078, -21543020, 6191196, 21700322, 8622684, 14456323,
-21307870, -14584635, -7154879, -12361453, 16316044, 3385508, 8441221, 5694590, -14522358, 17914846,
-4564477, 2647847, -7074348, -26749594, -25254408, 2291902, -11979201, -5240397, -11359652, -10186052,
--4289599, 4429722, -77846, -11433203, 14357539, 11719892, -1539209, -12953084, 2152316, 7386807,
--9004399, -4375498, -5142687, -163209, 6240588, -3125126, -6206228, -5359046, 4406100, 3345780,
-7027640, 8392903, -4490925, -4138738, -5113159, 4835060, 5505075, 29584808, -9236327, -32948842,
-2442226, -13827647, -46790448, -23850490, 61696668, 8499740, -27649388, -30626338, 3588445, 443992,
-12867722, 15882789, -21369610, -14388140, -34181496, 7907035, -12294344, -8330626, 52649856, 11188390,
--7088844, -54248120, -3325379, -28999082, 28845000, 35342212, 3893925, 27485106, -32273458, -12832289,
--20319490, -4901632, 53787488, 66693324, 10855530, -17866528, -23638964, -48237316, 862215, 6192806,
-58472760, 32479080, -8304856, -95820184, -49402324, 8217883, -8977019, 84109416, 28424094, -40401148,
--16572131, -72105520, -22581864, 2527052, 47390668, 48642116, 54863376, 2599529, 13190918, -5742372,
-4972499, 67192080, -24533390, 49362596, -11685532, -50662360, -14900852, -53701588, -16979080, 70370352,
-32269164, 50258096, -16358457, 39424580, -43807592, -6991670, 10788421, 21040508, 42091216, -14053133,
--593242, 2689723, -3637301, 6514929, 11474542, -11890617, 2155000, -12501576, -22394496, 10297184,
-18822158, 10381473, -2042794, -13566728, -30056718, -29867202, -15431817, 10235981, 28376312, 15880642,
-22043382, -29340532, -38216620, -29665876, 3748970, 33943128, 37967512, 28981902, -16822314, -73403672,
--46834472, 1574106, 37455872, 80064096, 31412854, 6726993, -35927940, -47772920, -16187732, -15082315,
-42362872, 46466176, 17796196, -2554969, -39662948, -29931090, 9698573, 14046154, 34599184, 16772921,
--17053704, -12094091, -20512226, -9796820, 10481868, 9293235, 10623065, 13127568, -2254858, -3598109,
--42487428, 47144784, 269509, -12513924, -73339248, -19971062, -19661286, -33349348, 71384504, 592706,
-32094144, -48824116, 27220428, 22523346, -21687974, 14086956, -4000225, 12579422, 202400, 36268316,
-13074954, -35479116, 21553756, 17468168, 97174, 24453934, -17964774, -9466645, 31077310, 21508122,
-20771536, 10146860, 18102750, -53372484, 46705084, -26839250, -16788490, 10069551, -37121404, 54458036,
--15295989, 5390721, 39611408, 1308891, -5779416, 21369072, 22116398, 38574712, -9210020, -35883380,
--36318244, 4037269, -12976170, 16910896, -21880174, -10757819, -14743012, 10932302, -68434400, 1122597,
-51189568, 14113799, 20971788, -1906429, -5390184, 13448616, -17903034, -20720532, 13011603, 7121056,
--22123376, -24813636, 94836096, -10197863, -30539364, 8637179, 44571560, -1192927, -34711388, 14432164,
--6331856, -13180181, 28774670, 36295696, -26300770, -43349640, 10040560, 10508174, -9786620, -25898652,
-1522029, 13157632, -3762928, -4151623, -1488743, -4407710, 7197292, 7808788, -8682276, 1057099,
-4130685, 2026151, -5126581, 2079838, -60130, -11933030, 8897562, 3791383, 16993574, 8407935,
--6118181, 6941741, -3069828, 9975062, -461709, -2457258, 13908715, -3274376, 9607305, -2618320,
--10499048, -806380, 12545599, -3322694, 14246407, -13123273, 17824114, 4277251, -12386686, 5464272,
-525597, 6625524, -1879585, -4919885, -1030792, 4426501, 14099841, -37022620, 13423383, 57549876,
-91532192, -40630928, 30093762, -60501056, -17351132, -36971080, -4600447, 55722904, 59861108, 46959024,
--1064078, -38007240, -22386444, 20273856, 1983738, 10044318, 31521302, -820876, 15926812, -39790724,
--9617506, -23108534, -27382564, 15068893, 13227426, 649614, 28363964, -23864986, -340376, 6082211,
--32840930, -1106491, 2867428, -21263846, -7422777, 7741679, -13540958, 31256088, -9718974, 47435768,
-36550708, -23597088, -6010270, -32738388, -36688148, -48518100, 16070694, 22200686, 65293168, 49236968,
-23664732, 31264140, 6627672, -35715876, -22926536, -20033874, -23622320, -5217849, 14230300, -1359894,
--16012712, 4299799, -16151761, 10545218, 24781424, 4678293, -24456080, 19639812, -11356967, -12800613,
--24453396, 13030931, 11879343, 5731097, 3816079, 57070452, 44334800, 35697084, 6805913, -8227547,
--47555488, -10058277, -4279935, 47588776, 28008018, 12466143, 15153718, 41248328, -5760088, -16288127,
--21423296, -18504330, -7946763, -4043712, 4575751, 638340, 1132798, 21506512, -1636919, -12595528,
--6962679, -4205847, 1318018, 10748156, 19925428, 8536248, -1528472, 12000675, -18836652, 7929047,
-19031000, 7627862, 36648420, -14412837, 1154809, 6361921, -13984950, 4158065, -22783728, -946503,
-9247065, 579284, 10623065, 5844914, -1671816, -282931, -3534758, -369904, 5712844, -6225018,
--99629816, -56693568, -33673616, 57530012, 26042534, 152055264, 141695808, 147659904, 148116240, 159964448,
-111466752, 59090160, 84242560, 51567524, -26058104, -46632072, -73427832, -140927536, -128137128, -131635912,
--96489128, -96582544, -72662792, -59163176, -32428076, 3716221, -56710748, -28170690, -12350178, -8388608,
--31039728, 8251169, 37126236, 42950748, 15083925, 50655380, 63181116, 16254841, 11815992, 13049184,
-62054760, 65847756, 81843824, 92858800, 80160192, 92209728, 138712416, 56902948, 108121504, 148969872,
-94772208, 113148768, 87891136, 44741212, 52166136, 58911920, 51282448, 71094056, 68924560, 43574052,
-7606924, 21791054, 40251896, -2325725, 3892314, -19532974, -23656142, -69901664, -32472100, -121322088,
--153617552, -122124712, -140250544, -189429536, -184022176, -108413024, -205451904, -185438432, -170323904, -191462656,
--162617120, -123230128, -155881536, -113927768, -32573032, -75659608, -94646048, -36992552, -38039452, -30433602,
--34628172, -14936286, 8209830, 19231790, 36326296, 48377436, 54410256, 62463856, 63529008, 91105384,
-54784992, 107318888, 119145080, 57133264, 110571784, 106077640, 66247724, 81231792, 117017456, 80155904,
-132209296, 100470560, 125277752, 88282512, 79267920, 83147344, 76735496, 60887604, 68874632, 60604672,
-46972984, 35913980, 34154116, 28337120, 11151346, -9550934, -8391829, -5737003, -43425340, -69110856,
--67138928, -68184752, -74896176, -68870336, -77496776, -55952688, -58488328, -47590920, -36050880, -28045600,
--32283122, -31396748, -24658480, -17442936, -19481434, -24896852, -13947906, -7675107, -15295452, -22257594,
--13764833, -10359461, -13959181, -16862578, -8163122, -1174137, 4849555, -214212, 3379603, 10998338,
-11212549, -1090922, 3333968, 7406671, 4938139, -1600949, 1415192, 4003447, 3063922, -3249143,
-187905, 2680060, 4547297, 2450279, 4648229, 915902, 2747705, 5120138, 9188009, 2951716,
-1758252, 781147, 3065533, 819802, 2236604, -123480, 1125818, -2683818, -4330938, -7386807,
--2957622, -4794257, -3964792, -6763500, -1947231, -3599183, -2213519, -2121177, 2818036, 865973,
-2314987, -579821, 4716411, 4029216, 7420093, 3398930, 8617315, 9112847, 11089606, 6109054,
-10105521, 9527848, 9742596, 5087389, 7626788, 5652177, 8081518, 3922379, 4998805, 2237141,
-4919348, 603443, 2341831, -515396, 1217086, -2415382, -983548, -3289408, -992674, -3783329,
--1522566, -3686156, -732292, -2981781, -195958, -2371896, 531502, -1712618, 1080184, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+107911, -2041183, -466004, -4917201, -3379603, 2188286, 194347, -3094524, 3853660, 2585570,
+-834834, 237297, -522375, 3105261, -4303021, 1620276, 3226594, 2850248, -6192269, -4335770,
+-3074660, 4167192, 1010928, 1365263, -1721745, 4445291, 1671816, -1093606, 122407, -1256278,
+876173, 1671279, -980326, -1267552, -3723200, 3978750, 6618008, 791885, 4206384, -768799,
+853625, 1518808, 1834488, -5004174, 361851, -5228049, -1193464, -731755, 1658394, -2631741,
+-76773, 1158567, 537408, -3043521, 130997, 357556, 2510945, -3236258, -4063576, -537945,
+5541045, 8881455, 30602, 1464047, 629213, -1889786, -5317170, -1345935, 3732864, -1690607,
+3718368, 1446867, 3787088, -193274, 1483374, 1347546, -3165928, -4292820, -434865, 1638530,
+2491618, 1211181, 1125818, 753230, 853088, -1462436, -2328946, -1588064, -1257352, -600759,
+68719, -871342, -96637, 802622, 1296006, 1137630, -151398, 94489, 781147, -1611,
+-903554, 2574296, -5616207, -1210644, -5328981, 3103651, 289910, -2379412, 11197517, -4343823,
+-8112657, 666794, 3681861, -628676, -6117644, -1675574, -2688113, -941135, -2928094, -893890,
+4121558, -240518, -2774012, 4839355, 652298, 4702453, -1288490, -1090385, 1737851, 172872,
+2032593, -819802, 4337917, 7223062, -2026688, -4769561, -3583077, 3010235, -58519, -10990821,
+-1098975, -4348118, -1687922, 5458904, -3823595, -2814814, 3679713, -2384781, -581968, 5011153,
+1662152, -3856344, 1703491, -2762201, -6570763, 2139968, 2512019, -4897874, -2914135, -1376537,
+-2129230, 10201, 2076617, 3438658, 5075578, 5783711, -1413581, 643171, -2306398, 2527588,
+1527398, -1214402, 2352568, 3737159, -3558917, -1733556, 548682, 129923, 1372779, 4285841,
+-577136, -1072131, 3788161, 622770, -2700461, -1603097, -244276, -1570347, 1130113, -615791,
+-1510755, 663036, -1708323, -1250909, 787053, -1612760, -1174137, 111669, 1071594, -2010045,
+199716, -440234, -761283, -935229, -131533, -1553168, -497679, -1483911, -9034464, -4620848,
+2804077, 3991098, 1585380, 4332012, -3701188, 4535486, 5610838, -1589675, 6207839, -862752,
+4578435, -2184528, 162135, -1960653, 5849746, 2257005, -213675, 5188858, -2749853, -2218888,
+3833258, -9060770, -1551557, 479426, -1902134, -8075613, -4900558, 3329674, -3134789, -2115808,
+139586, 6292664, -1490891, -4427575, -324270, 1610076, 3590593, -554588, -5693516, -3698504,
+-1027034, -2942053, 976031, -4989679, 2498060, -4694936, -6858526, 209917, 2440078, 2789581,
+-2175938, -1591822, -4491462, 5835787, 3407520, 806917, 87510, -171262, -1956895, -1072131,
+2005750, 2488397, 8849243, -1000727, 2250026, 572841, -234613, -4324495, -3251827, 5972689,
+-2540473, 583042, 1515050, 860604, -907849, 4514548, 271120, 161061, -4871567, 4735739,
+2690797, -1835562, -1058173, -534187, -1391569, 652298, 3451543, -48855, 1391569, 1032940,
+-445603, 791885, 1800665, -185220, 37581, 542777, 858457, 707596, 1044751, 1827509,
+720481, -1340030, 1442035, 652835, -949188, -771484, -122407, 211527, 27380, 2218888,
+2672544, 2435247, 5738613, -3802657, -5739150, -4591320, 2859911, 6393059, -1224066, 4899484,
+-4384625, -5273683, 4329864, -2189897, 409096, 1639604, 5433671, 2040646, 8653822, -3784403,
+-4684736, 2035815, -2617783, -2420751, 4881231, -7691213, -4794794, 772557, -1538672, 3505230,
+-2665027, 964220, 6132140, -5761699, 4246649, -3479461, 2731062, -3260954, -983011, -530965,
+6352257, 1199907, 169114, -4699768, 170725, -5592585, 2033667, 1369021, -3793530, -100395,
+-1607928, 9660455, 1238024, 606664, -8458938, -4935455, -7145752, 5513665, -3674882, -415001,
+2845416, 12321187, 8640937, -3501472, -7662222, -3181497, -6663642, 6949257, -1410897, -1948841,
+-3125126, -2048163, -648003, -3209414, -2187749, -554588, -2662343, 1832340, -1887638, 2578054,
+-9677635, 629213, -875100, -3058017, -1506997, -3246459, -731755, -5063230, 323733, -2114198,
+-258235, 3032247, -1058710, -1104344, -2244121, -2419677, -765578, 658204, -230854, -231928,
+-954557, -396211, -1112933, -190589, 144955, 569620, -820876, -875100, -1246614, -1067299,
+-980863, -1584843, 540629, -534187, -130997, -1610613, -4788889, 3417720, -4958540, -9024800,
+9200894, 4059281, -9511742, 9506373, -1469416, -631360, -13395466, 7943542, 5410585, -10960220,
+3306051, -1868311, 4190814, 882616, 4818417, 2978023, 1277216, -5135707, 536334, 1793686,
+-6633040, -2924336, -7839389, -1425392, -4850629, -2699387, 957778, -6257231, -2219961, -9187472,
+3506841, 836982, 844498, 732829, -3864934, -8007430, -2422362, 2724083, -1231045, -755914,
+8368207, -12399571, 5236102, 6230387, -860067, 327491, -2346663, -1044214, -3945464, -6161131,
+-4103841, -4869419, -3161096, 2990908, 1741072, 2654827, 4207994, -1062468, -2172180, 5866389,
+11385958, 7929584, -126702, -9725417, 2696166, -1552631, 1461900, 10155987, -26307, 10231149,
+9233643, -1334124, -3045669, -2544768, 755914, 815507, 3461744, 10373957, 2818572, 342524,
+-1043140, -6550362, 798864, 1924145, -2166274, -393526, 355945, -158914, 1227287, 834834,
+760209, -887448, 1284732, 1084479, 1148367, 1212791, -3492345, -637266, -2506114, 927713,
+-1956895, 754304, -551366, -979789, -2099702, 323733, 532576, -3148211, -975494, 644245,
+88047, 14436996, 3812320, -2676302, -608275, 4376035, -1431835, 13982266, -1399086, -2257005,
+17933100, 17180, 9114994, -3447785, 343597, -872415, 1563905, -2376728, 1334124, -374199,
+-414464, -9773735, -830539, -2401424, -1636919, -4128537, 6291054, 2801929, 3782256, -5524939,
+-506269, -8675834, -3339337, 1516124, -602906, -5312338, -1511829, 2771328, 6569153, 3821447,
+-1956895, -8074002, -183610, 2174327, -1244467, 4129611, 2904472, 5632313, 7995082, -2666101,
+44023, -8616778, -10259603, 9675488, 5344550, -452045, -338766, -423054, -3680787, -4240744,
+15032, 7725036, 4618164, 1320703, 9643812, -7418483, 2243047, -6103149, -4534412, 4006668,
+4316442, 3373697, 14477798, -620623, -6401112, 1027571, -6272800, 2783676, 1775432, 5150203,
+-2738579, -19864, 746251, -4933844, -764504, 3276523, -406411, 772020, -1999844, -1175210,
+-216359, 2235531, -1137093, 1373316, -2126546, 103616, -2778307, 815507, -1428614, -1093606,
+560493, 1347009, -1680943, 1819456, 1333587, 2244121, 245350, 1286880, -499827, 743566,
+529355, 752693, -791885, -127238, -734976, -228707, 526670, 1106491, -959388, 383863,
+-206158, -7991324, -10699300, 4145717, -9999221, -10737, 11158862, -11675869, 4281546, 5221607,
+-3115999, -14408005, 202937, 8406862, -9300752, 5778342, -639413, -4141422, -12064563, -352724,
+-8701067, 1530082, -4412005, -6803228, -8464307, 3471944, -1190243, -508954, 8069707, -4888747,
+6809671, -5175436, -2054068, 10402948, 3582003, -5569499, 4288525, 2502892, -4807142, 2529199,
+2632278, -1860258, -2046552, 405338, -2311229, -2757906, 1717987, 1895691, 14186277, -13356811,
+2170569, 840740, -4771172, 9585293, 5473399, -3303904, -10335302, 910533, -1035624, -3134253,
+-6518150, -7660074, 9346386, 6042482, 786516, -943819, 4985384, 2513093, -2246805, 3967476,
+2871186, -2599529, 9944460, -3698504, 6088653, -4077535, 3036005, 3112241, 2252710, -311922,
+-5512054, 5269925, -4287988, -4489852, -3059091, 1527398, 5369, 643708, -5226439, 2836826,
+2218888, -3330210, 358093, -142271, -1641214, 300648, -1081795, 2522757, -714038, 376347,
+2138894, -974421, -1592896, 1396938, -1818382, 1472100, -310848, -32212, -2094870, -958851,
+-51540, -2321967, 2299955, 1279363, 536334, 1500554, -467615, 1018444, -555125, 4712116,
+-10787884, 7912941, -4505421, -1996623, -6185290, -4464082, 3792993, -3561602, 3105261, 12097312,
+4160213, 6646462, -15420006, -10217190, -5484137, -3694209, 1687385, -72478, 2680060, -12957379,
+6951942, 2888366, 1749662, 12359305, 226560, -7007239, 11621645, 4565014, -5159867, 2369748,
+-6636262, 6097780, 2893734, 8127152, -6947647, -4947266, 2078764, -7044820, 8904541, -8147553,
+-121870, 7895224, 7293928, -15038828, -403727, 734439, 1771674, 2485712, 16451335, 3792456,
+1050656, -5028870, -4129611, -8882529, -4785131, 12144020, 319438, -14499273, 245350, 3355980,
+-8207683, -9062918, 1103807, -5878737, 2438468, 13310641, 6560026, 5601711, -5432597, -14223858,
+1175747, -2434173, 6558415, -1278827, -11883101, -1448478, 3139084, 3282966, 3248069, -1004486,
+10118943, 1905892, -6383932, 8323647, -581431, 4982162, -132607, -1240709, -4296041, 6152004,
+4265977, 2407329, -3107946, -1225676, -789737, -2073396, 1205812, -10201, -2633889, 1334124,
+849330, -1498944, -1948841, -824634, -1461900, -214748, 1912334, -1908039, 1007170, 2357937,
+2861522, -718870, 1247151, -1493038, -19019188, -5684926, 5398237, 14697378, 2113661, 7620346,
+26131118, 4335233, 4471598, -4043175, -12504260, 7092065, -6055904, 6535330, -1559610, 17273284,
+12606266, -6667937, -14129369, -11250130, 8548059, -7494181, 10475425, 4595615, 3422552, -3616899,
+-1364726, 12430172, -2439542, 10969346, 10996190, 5672578, 7717520, -8543227, 8355859, 4494684,
+-4459250, 12147241, -5342940, 11035918, 843424, 1245004, -16186658, 9760313, 905164, -3048890,
+8014946, -11294153, -4468914, 6762963, 5541582, -10406169, 1687385, -6657736, -3814468, 10301479,
+1395328, 3107409, -1079111, -11870216, 7976291, 7560753, 527207, 5977521, 2692945, -5259725,
+-5513128, -448824, 6338298, -10749229, -379568, 688269, 475131, -103616, 4713727, 6179384,
+12702366, 7123204, 428423, -17840220, -5858336, -6680285, -590558, 1319092, -5004711, -10576357,
+-3324842, -4766340, 2794950, 408559, -3008088, 1129040, -3085397, 4915590, -1763621, -2107218,
+-2911451, 53150, 1423782, -6361384, 3992709, -4093104, 1660005, -1054951, -2346126, 108448,
+-3917010, 1262720, -3534221, -2579665, -505732, -2046015, -1882269, 2178622, 3757023, 2246805,
+3616899, 4704600, -981400, 693100, 23588498, 6888054, 3148748, -8753680, -21223580, 15345381,
+4800163, -14102525, 4212826, -1545651, 3620658, 2961917, -10174778, -21792664, -17040820, 5723044,
+13343927, -2678986, 14007499, -6528887, 10926934, 13305809, 18072686, -4028143, 13351980, -11904576,
+4514548, -6516539, 1597191, 7155953, -324270, -3905736, 3236795, 8992588, -6468758, -12084427,
+-12194486, 25435334, 21475, -1332514, -11530913, 11758547, 3814468, -23592792, -13659607, 5208185,
+-3348464, -4238059, 9146670, 3034931, 22722524, 12494060, -855772, -13312251, -13036836, -7456600,
+-5393405, -15098421, 13818520, -10357851, 10919954, 9342091, -9567577, -12352326, -11909944, -17390322,
+4138738, -396211, -6288369, -7933342, -12760885, -4657892, -12573517, 2511482, 1427003, -4374961,
+1614371, 10111964, -26234734, -10285910, -21429202, 10635950, 7405061, -9299678, -3191161, 4238596,
+-4131222, -282394, 4946192, -4114042, -8656507, -1112933, -2580202, -2859375, -230318, -1282585,
+-3758097, -34360, 623844, 4378719, -6435472, 1482301, 3317325, -584116, -2753611, -4234301,
+-1326071, -820876, 740345, -1602560, -504659, -2663417, 1038308, -1203128, -4192425, 6931541,
+565862, 1928977, -5702106, -12931610, -24124294, -5688148, -6049999, 1089848, -5376226, 802622,
+2871723, -2874407, 10783589, -13760538, -3790309, -13066364, -313533, -6619619, 15174119, 16382079,
+13597866, -18752900, 13469554, -6910603, 10313827, -4046396, 7707319, -6359773, -7577933, 2649995,
+-9884330, 6383395, 8280697, -1178432, 5117991, -9565429, -822486, 15688442, -12259984, 423591,
+-3379603, -5351530, -9805410, -738198, 16056198, 20500952, -12660490, 6087580, -1254667, -12693776,
+-12435541, -13922136, -5913096, 26017302, 16189879, -5028333, 8797704, -5685463, 7677791, -14441828,
+8815420, -551903, -7418483, 19798726, 10675141, 3957276, 6923488, 5596343, 19061602, 2373506,
+-15407121, 6347425, 12492449, 9371619, -27194660, 16782584, -11298448, -10500658, -4731444, 1651415,
+-10405095, 11871290, 26903676, -4653060, 4225174, 13480829, 2742874, -2255932, 3666828, 1348620,
+8170639, 6911140, 4631586, 12671764, 6969122, -3546032, 9102646, 5363341, -3346853, -7720741,
+4832375, -1058173, 5196911, -2195802, 1894081, 3865471, 1998770, -1068373, -459025, 1777043,
+6441914, 1348620, -899259, 1375463, 5073430, -1942399, 756451, 7773891, 3489661, -1961190,
+4733591, 1420560, 1648731, 3273839, 453119, 2729989, -669478, -4778151, -3911642, 3959960,
+-1808181, 17306034, 10850161, 46470472, 12667469, -7461969, 2721399, 8075613, -48855, 15688442,
+11208791, 10965052, -13970992, -22629646, 22713398, -12680354, 1953673, 8255464, 24952686, 10419054,
+-15466714, 14078903, -14007499, -2535641, -19174344, -24578488, -2998961, 7037841, 6502581, 5328444,
+6142877, -1650878, -17292076, -5996311, 5290326, 6095096, -9247601, 19292994, 11836393, -11042361,
+6096706, 9773198, 3510062, 909459, -10679973, -967978, -7544647, -4005594, 891206, 12139188,
+29185376, -7632694, 2491081, 4672388, 10773389, -10165114, 37051072, -2870649, 3429532, 3461207,
+-17072496, -16216186, -26913876, -11004780, 14467597, -4771172, 7192460, 6286759, 25452514, 4458713,
+4432943, 1719598, 20026896, 10117332, -8602819, 18898392, -17026860, 3078955, 16918950, 22396106,
+20109574, 8369818, -11704860, -18459770, -8286603, -5638755, -13910862, -7275138, -7977365, -1782948,
+-11700028, 3313567, -4120484, -1498944, -10213969, -785979, -6419903, 10359461, 890669, 2582886,
+-9094593, -1319629, -12436078, 1267552, 5129802, 20938, 8869644, 6096169, -104690, 4143570,
+-1987496, -5122286, -3375308, -2062121, -10654740, 1408212, 1999307, 2951716, 3042448, -4768488,
+7346005, 8512625, 3463354, -5800890, -4294431, -1630477, 1730335, 4919885, 2341831, -3720516,
+-2225867, -1619203, -4672388, -19415936, 11006927, 4938139, 13464722, -3782793, -29229936, 2122788,
+-19565186, -17711372, 5322538, 3946001, 8315057, -5349919, 6010270, -1287417, -9947144, 15759846,
+-2489471, -5566278, -6328635, -11508365, -9556839, 5553930, -12073690, 2687039, -7709467, -5626944,
+-3305514, 15423764, -3045669, 16571594, 10576894, -4728222, 5621576, 5528697, 11996381, -8589935,
+-11303817, 1381906, 7056632, 8878771, 15814070, -17790828, -16957068, 6927246, 5621576, 19176492,
+-9638443, -1743220, 9670119, -296890, 2692408, -3966402, 12745315, 15679852, 7334731, -2415919,
+10042170, 33275796, -7475391, -10211285, 12461311, -1778653, 19618336, 4322348, 9127879, 10668699,
+-3647501, 7336878, 22692460, -6635188, -27390080, 18792630, 5552319, -9448391, 2553358, -42103564,
+27706298, -734976, 17141214, -11404749, 8897025, 795643, -16704202, -16312286, -2282775, 2581812,
+-12386149, -433792, 1764695, -2763275, -4211753, -3074660, -13561359, -2755759, -8203925, -419833,
+-4366908, -1762010, -4988068, 7524783, -6164889, -5138929, -8840116, -4760435, -10070625, -2405719,
+2019172, -6091874, -827855, -5107253, -5128191, -5935645, -549756, -5030481, -3516505, 954020,
+-1656784, 3651259, -3316252, -6972343, -7171522, -625992, 927176, -5033165, -1167694, -2654290,
+1832340, -9995463, -167504, -18402862, -288300, 27136678, 14202383, -36327372, 6052146, -7053410,
+3559454, 5229660, -1290638, -19032610, 3011309, -3470334, 16431471, 30404610, -4703526, 9363566,
+20869782, -1545651, -5329518, -5884642, 8498130, 30348776, -235149, -2790655, 25870736, -11013370,
+7253126, -583042, -45634, -7299834, 9956808, -29092498, 1252520, 8345659, 21139830, 21434034,
+-17829482, 107374, 20319490, -1870995, 37515464, -14155675, -17862768, 1830730, 27346594, 4097936,
+-20378010, -10390600, 6496675, -747324, 12103218, -30865246, 4042638, 685047, -5961952, -22575958,
+-19070728, 4487167, -5552856, -2020782, 1438814, -23477364, -23579370, 4414153, 4097399, -24848534,
+-7839389, -16387985, 14425185, -38896296, -14118094, 11868068, -22855668, 12028593, -5919539, -10006200,
+13013751, -4599373, 19376744, 17370458, 4409858, 10509248, -4742181, 1566589, -13139916, 13863618,
+-10115722, 7955353, -13786308, 9710384, 1048509, 3920232, -885300, -673236, -7783018, 8906688,
+-10310606, 1088774, 1547262, 4672388, -11352135, 5304822, -4399121, -4041564, 4009889, -3257733,
+-5160403, 7078643, 3633006, 7613904, 4024384, -1660542, -3640522, -4810900, -750546, 766115,
+-5245766, 1152125, -3746822, 1150514, -10897943, -6675990, -4285841, 4918812, 6934762, -4519380,
+1789391, -2505577, 3160559, -9727027, 20573968, -383863, 11556683, -21467858, -1189169, -20342576,
+21296058, 8873939, 27741194, 18892488, -9322763, 3307662, 21989158, 10715407, 11377905, 6666863,
+-17981418, -5634460, 9396852, 1068910, 11028939, -23795192, -17005386, 10198400, 35422744, 4391067,
+-11232950, 21764746, 6669011, 13457206, 4016331, 2320356, -19434728, -20542828, 703838, -57982,
+-34301756, 2407866, -6777996, -2180233, 11299522, -13920526, 8620536, 26811334, 3189550, -44771276,
+-31572842, -5610301, -9494562, -11445014, -9664, 7661148, 7349226, -11297375, 12611098, 11235098,
+10879152, -7288023, 9404368, -5435818, -11236708, -3162170, 10459856, -33546916, -7260642, -15388331,
+-16967806, -7313793, 4954782, -9237938, -617938, 36017596, 21028696, -14464913, 409096, -41876,
+-6005438, -6955700, 3483219, 23998666, 9217000, 3243774, -7311108, -5969468, -12419972, -15096273,
+-15326591, -4044249, 2266669, 4367982, -5199058, 3848828, -1038308, -4039954, -1092532, -4662187,
+-13440026, -3899830, 127238, -3952981, -11596412, 1007707, -4043175, 12416750, -6281927, 3874597,
+-1072131, 4828617, 176094, -10953777, 1129040, 12022687, 2151779, 10759967, -2873333, 5254893,
+-3376381, 3144453, -547608, -8280160, -3216931, -1353452, -1164473, -2065342, 166430, -2879776,
+-5530844, 7329362, 14439143, -20045686, -4927938, -8599061, 5401458, 41366976, 6672232, -20623896,
+5510980, 18170396, -3838090, 16964584, 21929030, -11455215, 5255966, 10836739, 7614440, 302795,
+-3125126, -6941204, 3344169, 12761958, 6761889, 11905649, -18043694, -28125594, -2889976, 12276090,
+11071352, 8760123, -3099893, -25963614, 8381092, 5526013, 38683160, 40399536, 9720585, -30392262,
+21921514, -11693585, -30794916, -7407745, -36459976, -28024124, -12218108, -13602698, -28261958, 4742718,
+-11352135, -32633162, -29618632, 8381629, 19334332, -3375844, -24997246, 7250442, 775778, 7820062,
+15829639, 15174119, -19333796, 24824374, 17243220, 1986959, 6961605, 17213156, -863288, 45338212,
+-32424856, -15722802, -1046361, -37243272, 30444876, 2019708, 38256884, 11600707, 8586176, -2132988,
+7605850, 15998753, 666257, -15281494, -215822, -8250632, 6088116, 5635534, 10951630, -4784594,
+-13937169, -292595, 12986907, 5937256, -8262980, -4340065, 6834367, -9497783, -30065, 2684,
+11921755, 4462471, -6483253, -3022046, -7369090, -12139725, -10334765, -768799, 2272038, -6115497,
+-4340065, 1197222, -5960341, 9167071, 4571993, -301185, 5630702, 18711562, -7185481, -3781182,
+2135136, 4894115, -10192494, 10899553, -3731253, -515933, 1889249, 8034810, 14186814, -20491288,
+5557688, -40672804, -10709501, -2757906, -9705552, 44122736, 14224932, -12043625, -27643484, -14392435,
+-11241540, -17920752, -12728672, 6526740, -40468256, -9023726, 30103962, -3798899, -3128347, -31360778,
+29888678, 14436459, 892816, -12060805, 12864501, 6002754, -6861747, 13269838, -20795694, -5848135,
+-10515691, 5753646, -4691715, -13516799, 15250892, -11571716, 6485401, 155156, -20205136, -12995497,
+-2975339, -25837450, -24881282, -33880312, -8464307, 15122580, -11074036, -6444062, 19588808, -23934242,
+-19233938, 20662014, 33823, -1508607, 19072340, -20401, -15948287, -9574556, 6567542, 13349295,
+-20666308, -6856379, 25587804, 10669773, 24696062, 12394202, -4821638, 12597676, -792421, -33493228,
+10617696, -25415468, 18386218, 2868501, 6863895, -10881300, -28512678, 5724655, -4093641, -25228638,
+-9796820, 10858214, -12455405, 200253, 4112968, 7814693, -7925826, 111669, 1395328, -2476049,
+5386963, -4066797, 3097745, 9883793, -1704028, 3164317, 2868501, -6966437, 2273648, 4559645,
+2975876, -5295695, 6910603, 4315906, -309775, -7283191, -13983877, 2559801, -11026792, 8746164,
+-11262478, 7143605, 9554155, 75162, 725850, -100395, 5509370, 453656, -4694400, 10645076,
+9001715, -4752382, -2973728, -7070590, -11407433, 30144228, 10711648, 974421, 3835406, -8054138,
+12144020, 18516678, 47413216, 41146860, 3704409, -18328236, 8542153, 23794118, 6974490, 18389976,
+13502303, 8826158, -13885092, -18148922, -21498996, -1662689, 8161512, 15075872, 30838938, 16095927,
+19821274, 11294690, 18385144, 9054865, 17713518, -11911018, 3437048, 33042258, -774168, 25381110,
+6888591, 20493974, -32663226, -5498632, -9547175, -9827959, 7759396, 12596602, 23854786, 38235948,
+32284196, -11578158, 5824513, -42827804, 10470593, 9644349, 37688876, -30054034, 23874650, -7937100,
+-20837570, 15866683, 5057324, 13210246, 23644868, -7845295, -30046518, 15417322, -19281718, -26768384,
+-12533251, 35369592, -30769682, -44008920, -22013854, -7454990, 23206782, -2609730, -15661061, -30440044,
+-22737020, 14259828, -1973001, -769873, 19680078, -21543020, 6191196, 21700322, 8622684, 14456323,
+21307870, -14584635, -7154879, -12361453, 16316044, 3385508, 8441221, 5694590, -14522358, 17914846,
+4564477, 2647847, -7074348, -26749594, -25254408, 2291902, -11979201, -5240397, -11359652, -10186052,
+-4289599, 4429722, -77846, -11433203, 14357539, 11719892, -1539209, -12953084, 2152316, 7386807,
+-9004399, -4375498, -5142687, -163209, 6240588, -3125126, -6206228, -5359046, 4406100, 3345780,
+7027640, 8392903, -4490925, -4138738, -5113159, 4835060, 5505075, 29584808, -9236327, -32948842,
+2442226, -13827647, -46790448, -23850490, 61696668, 8499740, -27649388, -30626338, 3588445, 443992,
+12867722, 15882789, -21369610, -14388140, -34181496, 7907035, -12294344, -8330626, 52649856, 11188390,
+-7088844, -54248120, -3325379, -28999082, 28845000, 35342212, 3893925, 27485106, -32273458, -12832289,
+-20319490, -4901632, 53787488, 66693324, 10855530, -17866528, -23638964, -48237316, 862215, 6192806,
+58472760, 32479080, -8304856, -95820184, -49402324, 8217883, -8977019, 84109416, 28424094, -40401148,
+-16572131, -72105520, -22581864, 2527052, 47390668, 48642116, 54863376, 2599529, 13190918, -5742372,
+4972499, 67192080, -24533390, 49362596, -11685532, -50662360, -14900852, -53701588, -16979080, 70370352,
+32269164, 50258096, -16358457, 39424580, -43807592, -6991670, 10788421, 21040508, 42091216, -14053133,
+-593242, 2689723, -3637301, 6514929, 11474542, -11890617, 2155000, -12501576, -22394496, 10297184,
+18822158, 10381473, -2042794, -13566728, -30056718, -29867202, -15431817, 10235981, 28376312, 15880642,
+22043382, -29340532, -38216620, -29665876, 3748970, 33943128, 37967512, 28981902, -16822314, -73403672,
+-46834472, 1574106, 37455872, 80064096, 31412854, 6726993, -35927940, -47772920, -16187732, -15082315,
+42362872, 46466176, 17796196, -2554969, -39662948, -29931090, 9698573, 14046154, 34599184, 16772921,
+-17053704, -12094091, -20512226, -9796820, 10481868, 9293235, 10623065, 13127568, -2254858, -3598109,
+-42487428, 47144784, 269509, -12513924, -73339248, -19971062, -19661286, -33349348, 71384504, 592706,
+32094144, -48824116, 27220428, 22523346, -21687974, 14086956, -4000225, 12579422, 202400, 36268316,
+13074954, -35479116, 21553756, 17468168, 97174, 24453934, -17964774, -9466645, 31077310, 21508122,
+20771536, 10146860, 18102750, -53372484, 46705084, -26839250, -16788490, 10069551, -37121404, 54458036,
+-15295989, 5390721, 39611408, 1308891, -5779416, 21369072, 22116398, 38574712, -9210020, -35883380,
+-36318244, 4037269, -12976170, 16910896, -21880174, -10757819, -14743012, 10932302, -68434400, 1122597,
+51189568, 14113799, 20971788, -1906429, -5390184, 13448616, -17903034, -20720532, 13011603, 7121056,
+-22123376, -24813636, 94836096, -10197863, -30539364, 8637179, 44571560, -1192927, -34711388, 14432164,
+-6331856, -13180181, 28774670, 36295696, -26300770, -43349640, 10040560, 10508174, -9786620, -25898652,
+1522029, 13157632, -3762928, -4151623, -1488743, -4407710, 7197292, 7808788, -8682276, 1057099,
+4130685, 2026151, -5126581, 2079838, -60130, -11933030, 8897562, 3791383, 16993574, 8407935,
+-6118181, 6941741, -3069828, 9975062, -461709, -2457258, 13908715, -3274376, 9607305, -2618320,
+-10499048, -806380, 12545599, -3322694, 14246407, -13123273, 17824114, 4277251, -12386686, 5464272,
+525597, 6625524, -1879585, -4919885, -1030792, 4426501, 14099841, -37022620, 13423383, 57549876,
+91532192, -40630928, 30093762, -60501056, -17351132, -36971080, -4600447, 55722904, 59861108, 46959024,
+-1064078, -38007240, -22386444, 20273856, 1983738, 10044318, 31521302, -820876, 15926812, -39790724,
+-9617506, -23108534, -27382564, 15068893, 13227426, 649614, 28363964, -23864986, -340376, 6082211,
+-32840930, -1106491, 2867428, -21263846, -7422777, 7741679, -13540958, 31256088, -9718974, 47435768,
+36550708, -23597088, -6010270, -32738388, -36688148, -48518100, 16070694, 22200686, 65293168, 49236968,
+23664732, 31264140, 6627672, -35715876, -22926536, -20033874, -23622320, -5217849, 14230300, -1359894,
+-16012712, 4299799, -16151761, 10545218, 24781424, 4678293, -24456080, 19639812, -11356967, -12800613,
+-24453396, 13030931, 11879343, 5731097, 3816079, 57070452, 44334800, 35697084, 6805913, -8227547,
+-47555488, -10058277, -4279935, 47588776, 28008018, 12466143, 15153718, 41248328, -5760088, -16288127,
+-21423296, -18504330, -7946763, -4043712, 4575751, 638340, 1132798, 21506512, -1636919, -12595528,
+-6962679, -4205847, 1318018, 10748156, 19925428, 8536248, -1528472, 12000675, -18836652, 7929047,
+19031000, 7627862, 36648420, -14412837, 1154809, 6361921, -13984950, 4158065, -22783728, -946503,
+9247065, 579284, 10623065, 5844914, -1671816, -282931, -3534758, -369904, 5712844, -6225018,
+-99629816, -56693568, -33673616, 57530012, 26042534, 152055264, 141695808, 147659904, 148116240, 159964448,
+111466752, 59090160, 84242560, 51567524, -26058104, -46632072, -73427832, -140927536, -128137128, -131635912,
+-96489128, -96582544, -72662792, -59163176, -32428076, 3716221, -56710748, -28170690, -12350178, -8388608,
+-31039728, 8251169, 37126236, 42950748, 15083925, 50655380, 63181116, 16254841, 11815992, 13049184,
+62054760, 65847756, 81843824, 92858800, 80160192, 92209728, 138712416, 56902948, 108121504, 148969872,
+94772208, 113148768, 87891136, 44741212, 52166136, 58911920, 51282448, 71094056, 68924560, 43574052,
+7606924, 21791054, 40251896, -2325725, 3892314, -19532974, -23656142, -69901664, -32472100, -121322088,
+-153617552, -122124712, -140250544, -189429536, -184022176, -108413024, -205451904, -185438432, -170323904, -191462656,
+-162617120, -123230128, -155881536, -113927768, -32573032, -75659608, -94646048, -36992552, -38039452, -30433602,
+-34628172, -14936286, 8209830, 19231790, 36326296, 48377436, 54410256, 62463856, 63529008, 91105384,
+54784992, 107318888, 119145080, 57133264, 110571784, 106077640, 66247724, 81231792, 117017456, 80155904,
+132209296, 100470560, 125277752, 88282512, 79267920, 83147344, 76735496, 60887604, 68874632, 60604672,
+46972984, 35913980, 34154116, 28337120, 11151346, -9550934, -8391829, -5737003, -43425340, -69110856,
+-67138928, -68184752, -74896176, -68870336, -77496776, -55952688, -58488328, -47590920, -36050880, -28045600,
+-32283122, -31396748, -24658480, -17442936, -19481434, -24896852, -13947906, -7675107, -15295452, -22257594,
+-13764833, -10359461, -13959181, -16862578, -8163122, -1174137, 4849555, -214212, 3379603, 10998338,
+11212549, -1090922, 3333968, 7406671, 4938139, -1600949, 1415192, 4003447, 3063922, -3249143,
+187905, 2680060, 4547297, 2450279, 4648229, 915902, 2747705, 5120138, 9188009, 2951716,
+1758252, 781147, 3065533, 819802, 2236604, -123480, 1125818, -2683818, -4330938, -7386807,
+-2957622, -4794257, -3964792, -6763500, -1947231, -3599183, -2213519, -2121177, 2818036, 865973,
+2314987, -579821, 4716411, 4029216, 7420093, 3398930, 8617315, 9112847, 11089606, 6109054,
+10105521, 9527848, 9742596, 5087389, 7626788, 5652177, 8081518, 3922379, 4998805, 2237141,
+4919348, 603443, 2341831, -515396, 1217086, -2415382, -983548, -3289408, -992674, -3783329,
+-1522566, -3686156, -732292, -2981781, -195958, -2371896, 531502, -1712618, 1080184, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
10821707,
-521302, -665720, -413927, -800475, -5559299, -5552856, 5318244, 1334661, -3243237, -4842039,
--2394444, -3647501, -6410239, 8199093, 948114, 3001645, 4025995, 11791296, -338229, 1925756,
--2865280, -992674, -2211908, -7601019, 1672353, -2288681, 720481, 5372467, -2135673, -469225,
-1123671, 617402, -1298154, 303869, -7103876, 1522566, -202937, -2481417, 2179159, 1071058,
--4791573, 7568269, 231928, 1137093, 6958384, -2655901, -3049964, -6833830, -3522410, 4817880,
-268972, 5132486, -2515240, -5578089, 2423435, -5194763, -2379412, -10081899, 4141959, 3608310,
-2134599, 3112778, 6931541, 1864553, -3082176, 3815005, 5753109, -3721589, 2835752, 38655,
--1245541, -1901597, -1582159, 3954591, -812823, 4382478, -2209224, 1795296, -1372242, 1629940,
-3126736, -1649268, 1125281, -1120450, 2523293, 2126546, 1722819, -817118, 583042, 127238,
--1439351, 767189, 2466922, 498753, 824097, -1411434, 958315, -743566, 560493, -1068910,
-229244, 1486059, -4308926, 1196148, -2683281, -5359046, -571231, -6338298, -7784092, -4845797,
--3750043, -8494372, 303332, -3037616, -1758252, 2675228, 9059697, 881005, -2200634, -994822,
-1424855, -128312, 3741990, 6509023, -583042, 7303055, -871342, -422517, -904091, 4183298,
--5494874, 903554, 627602, -1286880, -345208, -3206193, -5458904, 7509751, -2568927, -498753,
--1360431, 3345780, -3577171, -2995203, 1268626, 1163936, 5178120, -3513283, 4260071, -2447058,
--4322348, -278636, -1801202, 1226213, 2310693, -32212, 3007551, 1504849, 2186138, -2811593,
--3401077, -5532992, -4135517, 588411, 6659884, 907849, 5405753, 1473711, -2814277, 3797288,
-1752884, -3965329, 7052873, 1246077, -6675990, 1803349, 3001645, 666794, 1989644, 1801202,
--4731444, 1790465, 1639067, 1234266, -282931, 3544422, 1157494, -816044, -1148904, 48855,
-1380295, 34360, 1878511, 15569, 85362, 1163936, -456340, -958851, -670015, 265214,
--923955, -906238, 1212791, -36507, 1165547, 1103807, -282931, -20401, -7878581, -7091528,
-1539746, 744640, 5942624, -4615479, 6111739, -3147137, -1331440, -9605694, -591095, 558883,
--3256122, -649077, 5135171, 4744865, 7263327, -1855963, -1093069, 4433480, 2135136, 3970697,
--9824201, 9646497, -2091649, -234076, 1551020, -1292248, -71941, -976568, -669478, 5938866,
--174483, 7828652, -1364726, -3360812, -6602439, 658204, -2991445, -2733747, 4560719, 3411815,
-4767414, 41876, 585726, -7150047, -5076652, -196495, 6395207, 2092186, -832150, 2019708,
--2676838, 6694244, -374199, -6013491, -7485055, -2795487, 8367133, 6203007, 6459094, 2879776,
-233002, -7136625, -3143916, -1116155, -4111894, 4196183, -747861, -2088428, 3685619, -10110890,
-2980171, -1403381, 2363843, -890669, -2865817, 4427575, 1713155, -4847945, -5037997, 2449742,
--1313723, 2874407, 804233, -2251637, 1548873, 1792612, -85899, 629750, 2147, 119185,
--841277, -111669, -1387274, -81604, -1208496, 1886564, 1086090, -1602560, 758599, -482110,
-528281, 435402, 694174, -1217623, -972273, 258772, 738734, -2157684, -1165547, 1946157,
--2203318, -4399121, -665183, -3418794, 1593433, 5398774, 2188823, 141734, -2167885, -12720083,
--8297340, -323733, 3722663, 4387309, 310848, 846645, -1732482, 4350265, 2005213, 3476239,
--5466420, 5188321, 3063922, -6002217, 2288681, 5412733, -242129, 1717987, 947577, 4904316,
--3789772, 2892661, -442919, -713501, -4675609, 244276, 5129265, -3277597, -2280628, -4479651,
-6011344, -624918, 1220845, -4708895, -13237626, -3920768, 2018098, 1184874, 4979478, -3580929,
--2120103, -2058900, -822486, -4316442, 200790, -3900367, 8784282, 3026878, 7178501, -7239704,
--1349157, -3025805, 6732898, -2066953, -1157494, -5583458, 3513820, -151934, -3635153, 5636071,
-1831267, 656593, 6580964, 1357210, -5629629, -832687, 766652, -1585917, -1848983, 8053,
--4767414, 9580461, 4041027, 1364726, 6071473, 2568391, 2448668, 4371203, -1179505, 3694746,
--2053531, 611496, 468151, 193810, -1028108, 644245, 373662, -381715, -564788, -650151,
-548682, -518617, 130997, 3162707, 423591, -118648, 36507, -66572, -339302, 2506650,
-746787, 1619740, 202400, -1641751, -310848, 3579855, -2858301, 2288681, 173409, -1411434,
-5974837, 4620311, -499827, -8154533, -10976863, -8409546, 3098282, 52613, -4758287, -1184874,
-523986, -1027034, 12284143, 2176475, -8924405, -2314451, -2685428, 500364, -4212289, 7018514,
--5228049, -6767258, 6354404, -2624225, 1730872, 1750736, -2935073, -7973070, 1053341, -4220342,
--3797288, -3872450, -505196, 6315213, -877247, -1353989, 9228811, 1760400, 1404991, -11857331,
--1339493, 6425271, 7436736, -4050154, 2013803, 1086627, -11769821, -1505386, -724776, -1129040,
-2961380, 204011, -6600828, 932008, -5277441, 5133023, -1794760, 6587406, 1301375, -7400229,
-3315178, 14103062, -5444945, 198642, -10450729, 2609193, 8799314, -15686294, 2255932, -1044214,
--1358820, 3995930, -2536715, -4037806, 7405598, 7151121, -6104223, -663572, 4642860, -1982127,
-1105417, 2262911, 1384590, 528818, -1770063, 4025995, -88047, 2660732, 126165, 3607773,
-2419140, 2307471, -166430, 844498, 3946001, 508417, -784905, 1464584, 1245541, 552977,
-3286724, -1721745, 1063541, 609349, -697932, 325881, 1206349, 909459, 426812, -219580,
-175020, 10685879, 1173600, 4871030, 7336341, -9069897, -2962454, -6885907, 3404299, 4227322,
-7983808, 15858093, 2343442, -11829951, -1248225, -2859911, -1369558, -5027259, -105764, -424128,
-5815923, 4884989, 1599339, -265214, 118112, -1684164, -1489280, 6967511, -2335925, -746787,
-4970351, -472446, 2882997, -339302, 6360847, -4771709, -9895605, 12343199, -826244, 3063922,
--9266392, 850940, -2892124, 13682155, 2024003, 6293201, -1380832, 5602785, 3547643, -12038256,
--2025614, -6677064, -5997922, 1011465, 8517994, 1270774, -1824824, 13562433, -1509144, -7362111,
--5860483, -3757560, 6473590, 20400558, -129386, 5806259, 1363652, -6236293, -1498407, 315680,
-5912023, 9390409, 763967, 7590818, 6506339, -11884711, 323196, -1947231, -383863, 6278169,
--2779918, 1793686, 2790118, -710817, -6282464, -4088809, -9142912, 2397129, 3549791, -228170,
-1330903, 1566589, 1038845, 123480, -2879776, 833224, 1276142, 79457, 1178969, -1230508,
-2359548, 35970, 1159104, -420907, -489089, -917512, 254477, -374199, 374736, 2254321,
-3160559, 2913062, 354335, 956167, 1920387, 1358283, 17717, 1379758, 352187, -32749,
-2383170, -3445638, -15752866, 3684545, -1730872, 5498632, 3274376, 14665166, 2765422, -2606508,
-3321620, 11252814, 12138651, 5217312, 8500814, 8998493, -7036230, -5203890, -11300596, -11898133,
-1148367, 5322538, -10348187, -7109245, -724239, -11645267, -9933186, 5077188, 1410360, -5105643,
--3659849, -7600482, 6236830, 4807679, 10368051, 20169704, -2405182, -5566815, -2323577, -9764608,
--301185, -7584376, -8705362, 10387378, 985158, 1525250, -13389561, 13743358, 2520072, -8382166,
--2918430, 7124814, 279710, 1626182, -424128, 1245541, 3795677, -6400038, 7434052, 270583,
--5552319, -1395864, -9375377, 1526861, -9621800, -8265128, 7027104, 7558069, -7696045, -11815455,
-2829847, -5650567, -1064078, -3084324, 3799972, -3321084, 5079336, 1780801, 6191732, -1364189,
-4570382, 2549600, -10901701, -3655554, 2415919, 1488743, -23085, -5203353, -3199214, -1499481,
-3315715, -1963337, -1992865, 235149, 2610266, 2278480, -344134, -76236, -3288334, -1574642,
-365072, -649077, -534187, 2587718, 48318, -102005, -2480344, 2241436, 464930, -750546,
--666257, -1445793, -519154, -1609002, 2057289, -497679, 820876, -595927, 4031364, -6037114,
--6407018, 7756174, -2333778, -1954747, 4625143, -6652905, -6808597, 7816304, 10678899, 63351,
--566936, 3469260, -9043054, 15438797, -9475772, 1005022, 7518877, -3664681, 7018514, 8266739,
-2836826, -8944269, 9570261, -1547262, 3637837, -7043747, -1227287, -13276281, 4585952, -7942469,
-3072512, -13662291, 8000987, -10024454, -6847252, 5521181, 7896298, 2500745, 922344, 190589,
--8451959, -8028368, -4992363, 20445654, 11341935, -3373697, -19026706, -2825552, 5402532, 10964515,
--6242735, 769336, -13145284, -4663261, -1600412, 3295851, 1958505, -3089692, -214748, 5651640,
--6502044, -489626, -7416335, 3917547, 4878546, 14093935, 6053220, -7037304, 2945274, -3974455,
--10734734, -1483911, 6222334, 758062, 17712446, -10257993, -4939213, 2612414, -9221295, 4586488,
-1480153, -1863479, 8996346, 2103997, 3973382, -53150, 326418, -1525250, 4446365, 6503654,
-1597191, -2032593, 4856535, -2656437, 1522566, -4696010, -1532230, -133144, -6023692, -228707,
--2348273, -1192927, -2345052, -4031364, -1814624, 1213865, 1512365, 922881, -1279363, -321049,
-2647847, -4529043, 445603, 248571, -13652627, -1912334, 2703145, 8094403, 3820910, 10543071,
-1827509, -12417824, 7882876, -10491531, -11398306, 402653, -1103270, 8704825, 10638634, 9942312,
-14297946, 3604551, -14897631, 16325708, 8807904, -6465537, 12423193, -1519345, 1459752, -10858214,
--3852586, -3061238, -4917201, 10569378, -17648020, -3877282, -8320963, -7756174, 1398549, 8582418,
--4067871, -10048076, -10819559, -13918915, -14227079, -7097971, -2459943, 6222871, -11176042, -14321032,
--8572755, -3527242, -7124814, -4625143, 12528956, -6958384, 1141924, 6781754, -11443940, -6665789,
--7723962, 12492986, -5318780, 8176544, 17703856, -1611150, 3946538, 1846836, -5469104, -7013682,
--4904853, 8494908, -1279900, 9710384, 547608, 7359964, 1659468, -12067784, 15064061, -6393596,
--1952600, -12825846, 7915625, 17095044, 2842732, -2206003, 4482335, 2085744, -10893111, -4951561,
-619549, -2450279, -1191853, -4562866, -4605279, -635655, 788663, 799401, 7872138, -792421,
-983548, -3789235, 2980707, 445066, 5914707, 2697240, 2660732, 1243393, -728534, -2432562,
--2168422, -3425773, -786516, -2550137, 1766305, 1032403, -71941, -1740536, -1587527, -1243930,
--552977, 738198, -645319, 3370476, 25282324, 15727096, 11671574, -8471823, -17974438, -5019206,
-11152956, -17281874, -9213779, 197569, 13600014, 9520332, 7955890, -10071161, 7626788, -2812130,
-7624104, -2101850, 19604378, 11537356, -833761, -18051210, -1716376, 13438416, 11680700, 340913,
-23737210, 10537702, -4615479, -151398, 1759863, -2935073, -6463389, -9235790, -1300301, -25673168,
-7362648, -8902393, 1342714, -1044751, 6796249, 9351754, 368830, 2381023, -11264089, 7970386,
--4011500, 16755204, 515396, 2265059, -41052372, -1920924, 11115375, 5521181, 11814381, -4159676,
--11403138, 6253473, 2363843, -9599789, 9120363, 1668595, -8927090, -22549, 515933, 3002182,
--3199751, -15233175, -14976014, -779537, -5305895, 4903779, 5452461, 2078764, 5794985, -18621368,
--6200322, 787053, 4221953, 4291746, -7221988, 5631776, 1481764, -2809982, 2080375, 5061619,
--3347927, 532039, -993211, 1991254, -3407520, -5706401, -1737851, 6405407, -4844723, 523986,
--3586835, 2457258, -1406602, 2153389, 3925600, -639413, -3640522, 2904472, -505196, -4599373,
--2681133, 1398549, 2175938, 53150, -1647120, 686658, -222801, 2528662, -1147830, 5081483,
--1665374, -538482, 3202435, -17410186, -27923730, 4475893, 9709847, 10018548, 267899, 23198728,
--16496433, 5413270, 3208878, -4748087, -14641544, -6215892, -8315594, 9817221, -4298726, -9072582,
--14903537, -1417876, -5492190, -2891050, -11235634, 5965710, -681826, -5310190, 6089190, 7681549,
-9162239, -11905112, 21698174, 1277216, -3093987, -13353590, -12492986, -2585570, -1622424, -13026636,
--13515188, -10430328, 8749385, -6059125, 14495515, 4594005, 24174224, 8247411, 9187472, -3142842,
-12969191, -2296734, 3132105, 18312666, -5581310, 6616397, -22059488, -28147068, 6137509, -1372242,
--17830556, 1068910, 447750, -24299852, 6832219, -7189776, -4794257, -9517648, 9156870, -8895951,
-506806, -1022202, 4414153, -20938, -13276281, 7747048, -1914482, 3058017, -16746077, -23159538,
--20579336, 1099512, -4881231, -23448910, -4928475, 22442278, 11849278, 5172215, 4286914, -10436234,
-343061, -2428804, 1005022, -3464965, -2770254, -163209, -256087, 854162, -33286, -7298223,
--1746978, 1873143, -1363652, 3456912, 5733782, 4765266, -52613, -845572, -2493766, 7578470,
-4387309, 4975720, 4177930, 3035468, -565862, -2937758, -2609730, 5907191, -4598836, 3510599,
-4999342, 1920924, 2466385, 374199, 1478006, -4044249, 366683, -1187559, -3440806, 1631014,
-2306934, 4565550, 16954920, 22275848, -664109, 5987722, 13997298, 11592654, -1199370, -28173912,
-19332184, -1810866, 5254893, -5661304, 9911174, -591632, -12235825, 3556770, 22236120, 3523484,
--14595373, 12987444, 9197672, 6150930, -10970420, 11971148, 8785892, 1185411, 14148696, -5487358,
-3799972, 22925998, 16614007, 833761, 5272073, 11353746, -21469468, -4157528, -1348083, -3177739,
--18802830, 5016522, 5722507, 1285806, -14569066, -20401, -24960740, 1550483, -17824114, -3313567,
-9241159, -7399155, -10769630, -8466454, 5352603, 4600447, -9926206, 4194036, -3548717, 12570296,
--6358699, -6993281, 6484864, 11772505, -1047972, 5276904, 4517769, -27034672, -559956, -1746441,
--13843753, 1713692, 17850958, 5691369, -4905390, -1914482, 13074417, 9396852, 5768141, -3383361,
-20702816, 499827, -17004312, 2594160, 20728050, 10997801, 10588705, 6499896, 1256278, -4773856,
--5698348, 4041027, 3495030, 5224828, 7887708, -1585917, 6266358, 4062502, 767725, -705448,
--462246, 3091303, -2614025, -716186, -2584497, 301721, -1119913, 3394098, -6025302, 1449552,
-2318209, 1059783, 4950487, -8005819, -3296924, 1830730, 1828046, -425739, 5081483, -1362042,
--1382443, -1896228, 796716, 3571265, 3929358, -4221953, 946503, 2631741, -4025995, -2244657,
--2097555, -1680943, 11267847, -25412784, 11030550, -26303990, -30310658, -20287814, 1703491, -17374754,
-16908212, -5622112, -20253992, -1145683, -4853850, 2354716, 4245039, -5269925, -2272575, 13167833,
--3675955, 4739497, -7036230, -7853885, 22064320, -7763691, -2105071, -1117765, 5322002, 12891344,
--26838176, -2314987, 14957224, 13597330, 13573707, 1262720, -4555887, 27522150, 9873056, 8339216,
-11309186, 4485020, -3575024, -297427, 16866336, 4836670, -11286637, 5668820, 30741228, -16541530,
-21358336, 7189776, -31695248, 7252589, 21902186, -2848637, 10053982, -632434, -23936926, 11768747,
-30623116, 1195612, 20941186, -12979391, 18567680, 14542759, -127238, -3244311, 17070348, 8331163,
--21617108, 21448530, -5076115, -5542656, 13688061, -6985765, -7550016, -10335302, 3779034, 607738,
-4010963, -1459215, -4103305, 15966541, -14405320, 2000381, -2711198, -5366025, -11715597, -11988327,
-7076496, -1423782, -7095823, -10762651, -8243116, -15100031, -10008348, -1138166, -6833830, -4848481,
--750009, -8110509, 3482682, -7212324, -6543920, -2431488, 1986959, 1834488, -3148748, -1017370,
--10428717, 3679713, -10957535, 7992398, -2598992, -1316408, -4652524, -3291556, -278636, 12253005,
-6714645, -1935957, 3329674, 8233453, 5071283, -5475547, -2049773, 2844342, -4154307, 6588480,
-1864553, -3426847, 2698313, -10006737, -17003238, 41217192, 20802138, -48654464, -19670950, 4861366,
--7747584, 13703093, 16727287, 17382806, 20470352, -12683038, 38538740, -6033356, 1239098, -12800613,
-14693620, 18941342, -13575318, -16071768, -3049427, -9373229, 1975148, 7388418, 1458678, -10220948,
--3482145, 15481746, -979789, 7685844, 2200097, 18685256, 28699508, 10503879, -13386876, -32298690,
--2406256, -5714991, 3886409, -7690676, 10846403, 17468706, 1888712, -6860137, -14345191, 34725884,
-30898532, -4344360, 15234786, -8615168, -10900627, -34005940, 18927920, -16019691, -3338800, -1293322,
--10251550, 5622112, 21002390, 2881386, -8849780, 9543954, -3939022, -14208826, 21470542, 4012573,
--29061360, 37322192, -25188372, -13939853, 14836965, 14637785, 12803298, -78920, -31059056, -2990908,
-3047279, -2115272, -10007811, 5778879, -5092758, 1925219, 4187593, -13310641, 15331423, 10177999,
-5334887, 1722282, -5874979, -4869419, -10201, 5006322, 757525, 3791919, -2165737, -10383620,
-3342558, -15080704, -4393215, 4395362, -4076998, 7776575, -6558952, -1320166, -5529771, 6131066,
-851477, 7610145, 9497246, 6018860, 555661, -7289633, 5350993, 8251706, -1408212, -1319092,
--8892193, -4369056, 10944114, -3964255, 7484518, -948651, -3720516, 3452617, 3864397, -547608,
--5759015, 10679973, -5542119, -13366475, 1504312, 19072340, 5675263, -25914758, -20758650, -4989679,
-32416266, 3370476, -15547245, -41812580, -11614128, -1916092, 9936407, 28748364, 22050362, -3095598,
-284542, 18905372, 15411416, 697932, 4233227, -56419764, -35550520, -17348446, -27857158, 2401424,
--15535434, 24936044, -5705327, -1978906, -114354, -10073846, -11469710, 18061412, 11275900, 6377490,
--2550674, -8635569, -7707319, 8984535, -20205674, -7597797, 3579855, -7032472, -9838696, 8404177,
--29209536, -40903120, 9725953, 12746926, 15868294, -23896662, -12690018, 13191992, 5020817, -39875552,
--34997540, 2100239, -16936666, -17548162, 6518687, -32220308, 16338056, -12480101, 13427142, 12856985,
--7986492, -18171470, -41929620, -14725832, -12597676, 23509578, -20344186, -13294534, 7175280, 24033564,
-14024142, 108448, -8191040, -2719788, 7197292, -7240241, 24312736, -15090904, -11811160, -5731097,
--2115272, 6662031, -17913772, 10526965, 8084739, -7525320, -12544526, 2896956, -729071, 12192338,
--15666967, -20451024, -5185100, 3216394, -11305428, -1717987, -13670881, 577136, 3333432, -6163278,
-9536438, -2580202, -6759742, 2953864, -4569309, 2776160, -3892314, -14204531, -623844, 1041530,
-13558138, 10634876, -6523519, 53687, -727997, -8008504, -10253161, 4986994, -2601677, -3724811,
-3103114, 16624745, 22834730, -3651259, -30718142, 13916768, -4612795, -12814035, -26491896, 7903814,
-11315628, -39276404, 14817637, 13955959, 35404488, 3199751, -8900246, 2187749, -43376484, -12600897,
--5299990, 551903, 7895761, -14835354, 26524644, 10618770, 32790464, -6622303, 28829968, 18517752,
-11355357, 26294864, 13257490, 17335562, 22290880, 933082, -29382408, -27690192, 5531381, 31586800,
-22746146, -42223288, -1335735, -7208566, -6058052, -4498442, -29348048, 7403987, -20952998, 18644990,
--14072997, 42170672, -11275900, -60719028, -6614787, -20990578, 11882027, 8899709, 17089138, 39237748,
-8604430, -5457293, 21349208, -12835510, 43761960, 7278896, 29204704, 13702556, 2465311, -11276437,
--10308995, 72018552, 198642, -49946712, -10253698, 39663488, -24038396, 5073430, -11231339, 17323750,
-36287104, 20947092, -42446624, -2883534, -41799696, 5604933, -6017249, -24749212, -3201898, -6818261,
--11198053, -237834, -21582748, -23523000, 7750269, 8637179, -1496259, -26312580, 18530100, -23338852,
--36207112, -15461345, 8559333, -9084930, -16354699, -20769388, 3390877, 8495982, -19064822, -14460081,
-6505265, -8469139, -15483894, 12094091, 9384504, -1104880, -2333778, 487479, -3904662, -6382322,
--7037841, 2171643, -14389214, 7929047, -5467494, 2865280, -18192944, 19422378, 9040906, -41660644,
--15025406, -47251620, 7572564, 40818296, -29967598, -28954522, 27698244, 12372727, -46229956, -44668196,
-14611479, 1893544, 6923488, 14606110, -1412507, -13726179, -6322192, 27808302, -19804094, 34442416,
-6113886, -8623221, 7885023, 19706384, 357019, -6489696, -36916856, -16843252, 4572530, -20467666,
-17692580, 25334402, 2287070, 3812857, -26293252, 31405338, -10765872, -14702747, 26409218, -10444287,
-476205, -19098108, -1472100, -13564044, -45504640, 15302968, -4725001, 33676300, 44203268, -1103807,
--7399692, -28215788, -8357470, -8189429, 42079944, -40075268, -27549530, -66123168, 1950452, -27648852,
-7948374, 22312356, -11874511, -3895535, 45197016, 28418188, 20832738, 3057480, 2452426, 33520072,
--36456220, -2080375, 10870025, -4831302, 20738786, 9280351, 86831888, 13186623, -23216982, -1809255,
--15786689, -43084964, -16494822, 1098975, 7624104, -8694624, -8449274, -8556112, -30056182, -876710,
--2126546, -16656957, 4687957, 10354092, -25720412, 1211181, -17332340, 6434935, -839129, -6650220,
--3144990, 1010391, 15741592, 8468065, 1052804, 16522739, -10102300, -2717641, -4618701, 15515032,
-11083163, 7110319, 16836272, 7151658, -11406896, -6167573, -1574642, 7642895, -14447196, -4340602,
-826781, -17224966, 18562312, -5073967, 2954401, 40034464, -29463476, 10241886, -10197326, -14207215,
--14024142, 60440928, -8245264, 29679834, -24107114, 41226316, -14467060, 611496, 22020834, 23795192,
-56642028, 2697776, 9082245, 8321499, -24367496, 29311004, 8851928, -17289928, 28347858, -12002823,
-35755604, 27462020, -8793409, 23878944, 820876, 22282828, 4196183, 37831684, -23467702, 18833432,
--38643432, -9677098, 12528420, 40991168, -2152852, 3228742, 17333952, -230318, -14224395, -49555868,
--30961346, 8349417, -21636972, -1050656, 15206332, -43218108, 25942676, -2017024, 30919470, -15059229,
--29786672, -5259188, 80583248, 18252000, -74228312, 12829067, 18278308, 4425964, 79734992, -5027259,
--59636696, 61138860, -21225192, -4155381, 66600448, -7428146, 43605192, 6898255, -40498320, 1466731,
-68055904, -56271052, 28806346, -34587372, -39347268, 28446642, 16645146, -35699232, -13634911, -22287122,
--12612708, -13157095, 5728950, -21995602, -5151277, 8342437, -22958748, -16289737, 10843182, -26426934,
--7087233, 8874476, 2869575, -6365679, 18816788, -8835821, -7406671, -9836549, -18511310, 8218420,
--12237972, -13571560, -3942243, 1875827, 25272124, -310848, 6526203, -22009024, 1326608, 27231166,
--6080063, -3763465, -3121904, 870268, 979789, 18826990, -11206107, -12412992, -6934225, -19026706,
--22984518, 5276368, -11991549, -9779104, 12961138, 3848291, 8131984, -3820910, -58302032, -5498632,
-10304700, -23152022, -5318780, -63218160, 40555764, 59536836, -25441238, 7604777, -44894756, -135379520,
--24564528, 5269925, 69392712, 56319368, -54955180, -50978040, -49257368, -42382736, -28075128, 34586296,
--4995584, 77374376, 54227184, -16764868, -63642824, -163069712, -103739032, 6325413, 181086016, 135910480,
-26263188, -71600864, -175885888, -182378800, -12018392, 104603928, 164545568, 178100480, 19654844, -58943596,
--72132904, -98258648, -86379848, 4852240, 61733176, 111725520, 78820704, 61002496, -79630304, -100080792,
--115169552, -141153568, 16868484, 166899744, 166695200, 32629940, -58611272, -158563744, -205415408, -70887360,
-17037598, 75745504, 189576640, 68350648, 631360, -105001752, -83983256, -36880348, 43899936, 72644000,
-130430104, 32771138, 68586872, -6544457, -85787680, -72896336, 5005785, 82432768, 92081952, -42650100,
--78362752, -98303752, -23482196, 14754823, 23898808, 13685913, -47706888, -43186968, -16593069, 29883308,
-772557, -683437, 7695508, 23654532, 20822002, 14307610, -7809325, -60369524, -38610684, 3206730,
-31199716, 55274080, 28061706, -17208860, -36811628, -50813760, -30370250, -21180094, -25311852, 55392732,
-59875064, 63684700, 54601384, -26386132, -103004056, -89175336, -46748572, 38631620, 131573640, 125579472,
-7672422, -81559280, -124838056, -114272440, -6840273, 61240864, 59483688, 27192512, 26386132, 29528,
--33195266, -41850700, -50584516, -9192304, 48083232, 56997436, 41795400, 3748970, -38836704, -36971080,
--16478179, 29433410, 21726628, -50476604, 53150, 26752278, -21569862, 29518774, -1673964, -4786204,
--2572149, 6376953, 21554294, -8125542, 25490094, 18197776, 10101226, 12293270, 8449274, -1706713,
--15333033, 24830816, -788127, 15366856, -9293235, 13746580, -4989679, -1336809, 8522289, -11455215,
--13110388, 2426657, -5883032, 20226074, 19002010, -17238924, 8465917, -10035191, 11803644, 831613,
-7612293, 3630858, 10008348, -12098386, 8391829, -14008036, -6725382, -1437203, -2035815, 12376485,
--22644678, -3803194, -9566503, -19219978, -2127620, -7189239, 4371740, 19479288, -6033892, -25567940,
-3853123, 16851842, 31343060, -777389, 2445447, -16469052, -13325136, 15377057, 1002338, -4974109,
-111132, 26499948, 11122892, 8795019, 13647795, 24476482, -27343910, 11422466, -4932770, -39674224,
--5012764, 31838056, -6094022, 28401544, -1547799, 17888002, -20703890, 13269838, -14176076, -3462818,
-27037356, -7192460, 2229625, 1242319, -405874, 10664941, -324807, -3416110, -2604361, -74088,
--2208687, 5688148, 7566659, 12141336, 1027034, -9107478, -4684736, -11973832, 4501663, -12435541,
-6833830, 6106907, -4317516, 8060580, 2086280, -12907987, -37581, 697395, 4089883, -22665616,
-7916162, 5912023, 1790465, 91805, -6710350, 8387535, -12076374, 12667469, -1179505, -695785,
-2963528, -4962298, 9835475, -10552198, 2920578, -5477694, 6081137, -19013284, 47965120, 81512576,
-7423314, -53997404, 18413598, -4435091, 66858684, 30808338, 65733400, -6538551, -30572114, -8833137,
-14940044, 27050778, 21933324, -12487617, 2577517, 11267847, 8936216, 25543782, -17642652, 3993246,
--23955180, -4334696, 843424, 5908265, 13242458, 2425046, -9917079, 19487340, -1316408, -17914846,
-24466282, -4457639, -8039105, 5997922, -3028489, 18283676, 30275762, 376347, 8311836, -10353556,
--5693516, 16856672, 13014288, 13903346, 3386582, -9373766, -18132278, -19531364, -20288888, 16362752,
-18923626, 17654464, 27404576, 28407450, 13015362, 1199370, -24495810, 15067819, -2088965, -23088670,
-28744068, -2372970, 19117974, 9395778, -27579596, 7504382, -7751879, 5735392, 19703700, 3275986,
--22933514, -17028472, -13259101, -24988656, 15696495, -1793686, 26620208, -539555, 4895726, 250719,
--13364864, -9296994, 5596343, -21458730, 7079717, -475668, -3439195, 7389491, -11097122, 6922414,
-5346161, -1197222, -9279277, 12840878, -2605972, 11367168, -18888192, -14666240, -7808788, -7823283,
-9973988, -4125853, -1699196, -2716567, -9074729, -5544803, -5288179, -194884, 18903224, 2217814,
--3863860, -496069, -9805947, 7501161, -5111011, -1227287, -3250753, 8437463, 36507, 959925,
--1038845, -6425808, -3441880, 9241159, -2515777, 6572911, -1159104, 3429532, -5109938, -28552942,
--65011308, 4744328, 89210768, 118767656, 101303248, 70457328, -3311420, 4706748, -52125332, -61282740,
--103879688, -77898360, -83468928, -26594438, 6691022, 27429272, 45172320, 113286208, 93643168, 63633700,
-20170778, -9615358, -41155988, -30057792, -42777876, -53644680, -30360050, -30530776, -38336880, -17348446,
--25334402, 5649493, 17346836, 15196668, 47790636, 44765908, 39090644, 26130044, 29532196, 19139448,
-35432408, 8970039, 30615064, 1728188, -8398272, -53625352, -23795192, -64705828, -75954888, -84239344,
--66636956, -49464600, -17974438, 13127031, 48308180, 52161840, 40531608, 84412216, 67822904, 73169064,
-67132488, 63282584, 24959128, 41055592, -16630650, -40123048, -42747808, -99572912, -100165080, -96122440,
--102972912, -84306448, -29242822, -13888314, 22510460, 57677652, 62144956, 76663016, 91600912, 82349552,
-63603096, 58426588, 42465416, 16350940, -1871532, -34019364, -50906636, -50676856, -58525908, -48484812,
--55070072, -56734908, -48487496, -37178848, -19087372, 2595771, 24607478, 48290464, 44605920, 44634912,
-51929376, 58048092, 44393856, 45098768, 19713364, -20613158, -15583752, -36516348, -47173236, -38810400,
--32452772, -22283900, -28722594, -20259898, 2254321, 6353331, 9755481, 25691420, 22063246, 14522358,
-3287798, 9918690, 9507447, 3262028, 12091407, -7295539, -8662949, -6455336, 4447439, -1017370,
-48855, -303332, -1787243, -8840653, -6584722, -2343979, 8702141, 304943, 3943317, 1676648,
--4942434, -5567888, -3158949, -3806415, 1180579, 121333, 1454383, 1299228, 2029909, -1902134,
-2105608, -1127966, 479426, 1888712, 5562520, 2669322, 6485938, 1168231, -132070, -1556389,
--1404454, -4114579, -375810, -2189360, -1153199, -3153580, -266825, -1472100, 671089, -2884071,
--455803, -5906, 2117419, -1343788, -422517, -2056753, 1153736, 119185, 2778307, 2760053,
-3805878, 1225139, 2491081, -123480, 122943, -1189706, 1217623, -846109, 855235, -763967,
-435402, -2466922, -1672353, -4452808, -2128693, -2601677, -443455, -1707786, 783832, -439697,
-1525250, 427349, 3149822, 1668595, 3381750, 1658931, 3090766, 1318555, 2245731, -209380,
-202937, -2684355, -1382980, -3191161, -1843615, -3696893, -1268626, -2251100, 301721, -311385,
-1885491, 256624, 2110440, 423054, 1921461, 91805, 1635309, -373662, 1122060, -771484,
-727997, -1044751, 649614, -1047972, 668404, -1016297, 721555, -921271, 821949, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+521302, -665720, -413927, -800475, -5559299, -5552856, 5318244, 1334661, -3243237, -4842039,
+-2394444, -3647501, -6410239, 8199093, 948114, 3001645, 4025995, 11791296, -338229, 1925756,
+-2865280, -992674, -2211908, -7601019, 1672353, -2288681, 720481, 5372467, -2135673, -469225,
+1123671, 617402, -1298154, 303869, -7103876, 1522566, -202937, -2481417, 2179159, 1071058,
+-4791573, 7568269, 231928, 1137093, 6958384, -2655901, -3049964, -6833830, -3522410, 4817880,
+268972, 5132486, -2515240, -5578089, 2423435, -5194763, -2379412, -10081899, 4141959, 3608310,
+2134599, 3112778, 6931541, 1864553, -3082176, 3815005, 5753109, -3721589, 2835752, 38655,
+-1245541, -1901597, -1582159, 3954591, -812823, 4382478, -2209224, 1795296, -1372242, 1629940,
+3126736, -1649268, 1125281, -1120450, 2523293, 2126546, 1722819, -817118, 583042, 127238,
+-1439351, 767189, 2466922, 498753, 824097, -1411434, 958315, -743566, 560493, -1068910,
+229244, 1486059, -4308926, 1196148, -2683281, -5359046, -571231, -6338298, -7784092, -4845797,
+-3750043, -8494372, 303332, -3037616, -1758252, 2675228, 9059697, 881005, -2200634, -994822,
+1424855, -128312, 3741990, 6509023, -583042, 7303055, -871342, -422517, -904091, 4183298,
+-5494874, 903554, 627602, -1286880, -345208, -3206193, -5458904, 7509751, -2568927, -498753,
+-1360431, 3345780, -3577171, -2995203, 1268626, 1163936, 5178120, -3513283, 4260071, -2447058,
+-4322348, -278636, -1801202, 1226213, 2310693, -32212, 3007551, 1504849, 2186138, -2811593,
+-3401077, -5532992, -4135517, 588411, 6659884, 907849, 5405753, 1473711, -2814277, 3797288,
+1752884, -3965329, 7052873, 1246077, -6675990, 1803349, 3001645, 666794, 1989644, 1801202,
+-4731444, 1790465, 1639067, 1234266, -282931, 3544422, 1157494, -816044, -1148904, 48855,
+1380295, 34360, 1878511, 15569, 85362, 1163936, -456340, -958851, -670015, 265214,
+-923955, -906238, 1212791, -36507, 1165547, 1103807, -282931, -20401, -7878581, -7091528,
+1539746, 744640, 5942624, -4615479, 6111739, -3147137, -1331440, -9605694, -591095, 558883,
+-3256122, -649077, 5135171, 4744865, 7263327, -1855963, -1093069, 4433480, 2135136, 3970697,
+-9824201, 9646497, -2091649, -234076, 1551020, -1292248, -71941, -976568, -669478, 5938866,
+-174483, 7828652, -1364726, -3360812, -6602439, 658204, -2991445, -2733747, 4560719, 3411815,
+4767414, 41876, 585726, -7150047, -5076652, -196495, 6395207, 2092186, -832150, 2019708,
+-2676838, 6694244, -374199, -6013491, -7485055, -2795487, 8367133, 6203007, 6459094, 2879776,
+233002, -7136625, -3143916, -1116155, -4111894, 4196183, -747861, -2088428, 3685619, -10110890,
+2980171, -1403381, 2363843, -890669, -2865817, 4427575, 1713155, -4847945, -5037997, 2449742,
+-1313723, 2874407, 804233, -2251637, 1548873, 1792612, -85899, 629750, 2147, 119185,
+-841277, -111669, -1387274, -81604, -1208496, 1886564, 1086090, -1602560, 758599, -482110,
+528281, 435402, 694174, -1217623, -972273, 258772, 738734, -2157684, -1165547, 1946157,
+-2203318, -4399121, -665183, -3418794, 1593433, 5398774, 2188823, 141734, -2167885, -12720083,
+-8297340, -323733, 3722663, 4387309, 310848, 846645, -1732482, 4350265, 2005213, 3476239,
+-5466420, 5188321, 3063922, -6002217, 2288681, 5412733, -242129, 1717987, 947577, 4904316,
+-3789772, 2892661, -442919, -713501, -4675609, 244276, 5129265, -3277597, -2280628, -4479651,
+6011344, -624918, 1220845, -4708895, -13237626, -3920768, 2018098, 1184874, 4979478, -3580929,
+-2120103, -2058900, -822486, -4316442, 200790, -3900367, 8784282, 3026878, 7178501, -7239704,
+-1349157, -3025805, 6732898, -2066953, -1157494, -5583458, 3513820, -151934, -3635153, 5636071,
+1831267, 656593, 6580964, 1357210, -5629629, -832687, 766652, -1585917, -1848983, 8053,
+-4767414, 9580461, 4041027, 1364726, 6071473, 2568391, 2448668, 4371203, -1179505, 3694746,
+-2053531, 611496, 468151, 193810, -1028108, 644245, 373662, -381715, -564788, -650151,
+548682, -518617, 130997, 3162707, 423591, -118648, 36507, -66572, -339302, 2506650,
+746787, 1619740, 202400, -1641751, -310848, 3579855, -2858301, 2288681, 173409, -1411434,
+5974837, 4620311, -499827, -8154533, -10976863, -8409546, 3098282, 52613, -4758287, -1184874,
+523986, -1027034, 12284143, 2176475, -8924405, -2314451, -2685428, 500364, -4212289, 7018514,
+-5228049, -6767258, 6354404, -2624225, 1730872, 1750736, -2935073, -7973070, 1053341, -4220342,
+-3797288, -3872450, -505196, 6315213, -877247, -1353989, 9228811, 1760400, 1404991, -11857331,
+-1339493, 6425271, 7436736, -4050154, 2013803, 1086627, -11769821, -1505386, -724776, -1129040,
+2961380, 204011, -6600828, 932008, -5277441, 5133023, -1794760, 6587406, 1301375, -7400229,
+3315178, 14103062, -5444945, 198642, -10450729, 2609193, 8799314, -15686294, 2255932, -1044214,
+-1358820, 3995930, -2536715, -4037806, 7405598, 7151121, -6104223, -663572, 4642860, -1982127,
+1105417, 2262911, 1384590, 528818, -1770063, 4025995, -88047, 2660732, 126165, 3607773,
+2419140, 2307471, -166430, 844498, 3946001, 508417, -784905, 1464584, 1245541, 552977,
+3286724, -1721745, 1063541, 609349, -697932, 325881, 1206349, 909459, 426812, -219580,
+175020, 10685879, 1173600, 4871030, 7336341, -9069897, -2962454, -6885907, 3404299, 4227322,
+7983808, 15858093, 2343442, -11829951, -1248225, -2859911, -1369558, -5027259, -105764, -424128,
+5815923, 4884989, 1599339, -265214, 118112, -1684164, -1489280, 6967511, -2335925, -746787,
+4970351, -472446, 2882997, -339302, 6360847, -4771709, -9895605, 12343199, -826244, 3063922,
+-9266392, 850940, -2892124, 13682155, 2024003, 6293201, -1380832, 5602785, 3547643, -12038256,
+-2025614, -6677064, -5997922, 1011465, 8517994, 1270774, -1824824, 13562433, -1509144, -7362111,
+-5860483, -3757560, 6473590, 20400558, -129386, 5806259, 1363652, -6236293, -1498407, 315680,
+5912023, 9390409, 763967, 7590818, 6506339, -11884711, 323196, -1947231, -383863, 6278169,
+-2779918, 1793686, 2790118, -710817, -6282464, -4088809, -9142912, 2397129, 3549791, -228170,
+1330903, 1566589, 1038845, 123480, -2879776, 833224, 1276142, 79457, 1178969, -1230508,
+2359548, 35970, 1159104, -420907, -489089, -917512, 254477, -374199, 374736, 2254321,
+3160559, 2913062, 354335, 956167, 1920387, 1358283, 17717, 1379758, 352187, -32749,
+2383170, -3445638, -15752866, 3684545, -1730872, 5498632, 3274376, 14665166, 2765422, -2606508,
+3321620, 11252814, 12138651, 5217312, 8500814, 8998493, -7036230, -5203890, -11300596, -11898133,
+1148367, 5322538, -10348187, -7109245, -724239, -11645267, -9933186, 5077188, 1410360, -5105643,
+-3659849, -7600482, 6236830, 4807679, 10368051, 20169704, -2405182, -5566815, -2323577, -9764608,
+-301185, -7584376, -8705362, 10387378, 985158, 1525250, -13389561, 13743358, 2520072, -8382166,
+-2918430, 7124814, 279710, 1626182, -424128, 1245541, 3795677, -6400038, 7434052, 270583,
+-5552319, -1395864, -9375377, 1526861, -9621800, -8265128, 7027104, 7558069, -7696045, -11815455,
+2829847, -5650567, -1064078, -3084324, 3799972, -3321084, 5079336, 1780801, 6191732, -1364189,
+4570382, 2549600, -10901701, -3655554, 2415919, 1488743, -23085, -5203353, -3199214, -1499481,
+3315715, -1963337, -1992865, 235149, 2610266, 2278480, -344134, -76236, -3288334, -1574642,
+365072, -649077, -534187, 2587718, 48318, -102005, -2480344, 2241436, 464930, -750546,
+-666257, -1445793, -519154, -1609002, 2057289, -497679, 820876, -595927, 4031364, -6037114,
+-6407018, 7756174, -2333778, -1954747, 4625143, -6652905, -6808597, 7816304, 10678899, 63351,
+-566936, 3469260, -9043054, 15438797, -9475772, 1005022, 7518877, -3664681, 7018514, 8266739,
+2836826, -8944269, 9570261, -1547262, 3637837, -7043747, -1227287, -13276281, 4585952, -7942469,
+3072512, -13662291, 8000987, -10024454, -6847252, 5521181, 7896298, 2500745, 922344, 190589,
+-8451959, -8028368, -4992363, 20445654, 11341935, -3373697, -19026706, -2825552, 5402532, 10964515,
+-6242735, 769336, -13145284, -4663261, -1600412, 3295851, 1958505, -3089692, -214748, 5651640,
+-6502044, -489626, -7416335, 3917547, 4878546, 14093935, 6053220, -7037304, 2945274, -3974455,
+-10734734, -1483911, 6222334, 758062, 17712446, -10257993, -4939213, 2612414, -9221295, 4586488,
+1480153, -1863479, 8996346, 2103997, 3973382, -53150, 326418, -1525250, 4446365, 6503654,
+1597191, -2032593, 4856535, -2656437, 1522566, -4696010, -1532230, -133144, -6023692, -228707,
+-2348273, -1192927, -2345052, -4031364, -1814624, 1213865, 1512365, 922881, -1279363, -321049,
+2647847, -4529043, 445603, 248571, -13652627, -1912334, 2703145, 8094403, 3820910, 10543071,
+1827509, -12417824, 7882876, -10491531, -11398306, 402653, -1103270, 8704825, 10638634, 9942312,
+14297946, 3604551, -14897631, 16325708, 8807904, -6465537, 12423193, -1519345, 1459752, -10858214,
+-3852586, -3061238, -4917201, 10569378, -17648020, -3877282, -8320963, -7756174, 1398549, 8582418,
+-4067871, -10048076, -10819559, -13918915, -14227079, -7097971, -2459943, 6222871, -11176042, -14321032,
+-8572755, -3527242, -7124814, -4625143, 12528956, -6958384, 1141924, 6781754, -11443940, -6665789,
+-7723962, 12492986, -5318780, 8176544, 17703856, -1611150, 3946538, 1846836, -5469104, -7013682,
+-4904853, 8494908, -1279900, 9710384, 547608, 7359964, 1659468, -12067784, 15064061, -6393596,
+-1952600, -12825846, 7915625, 17095044, 2842732, -2206003, 4482335, 2085744, -10893111, -4951561,
+619549, -2450279, -1191853, -4562866, -4605279, -635655, 788663, 799401, 7872138, -792421,
+983548, -3789235, 2980707, 445066, 5914707, 2697240, 2660732, 1243393, -728534, -2432562,
+-2168422, -3425773, -786516, -2550137, 1766305, 1032403, -71941, -1740536, -1587527, -1243930,
+-552977, 738198, -645319, 3370476, 25282324, 15727096, 11671574, -8471823, -17974438, -5019206,
+11152956, -17281874, -9213779, 197569, 13600014, 9520332, 7955890, -10071161, 7626788, -2812130,
+7624104, -2101850, 19604378, 11537356, -833761, -18051210, -1716376, 13438416, 11680700, 340913,
+23737210, 10537702, -4615479, -151398, 1759863, -2935073, -6463389, -9235790, -1300301, -25673168,
+7362648, -8902393, 1342714, -1044751, 6796249, 9351754, 368830, 2381023, -11264089, 7970386,
+-4011500, 16755204, 515396, 2265059, -41052372, -1920924, 11115375, 5521181, 11814381, -4159676,
+-11403138, 6253473, 2363843, -9599789, 9120363, 1668595, -8927090, -22549, 515933, 3002182,
+-3199751, -15233175, -14976014, -779537, -5305895, 4903779, 5452461, 2078764, 5794985, -18621368,
+-6200322, 787053, 4221953, 4291746, -7221988, 5631776, 1481764, -2809982, 2080375, 5061619,
+-3347927, 532039, -993211, 1991254, -3407520, -5706401, -1737851, 6405407, -4844723, 523986,
+-3586835, 2457258, -1406602, 2153389, 3925600, -639413, -3640522, 2904472, -505196, -4599373,
+-2681133, 1398549, 2175938, 53150, -1647120, 686658, -222801, 2528662, -1147830, 5081483,
+-1665374, -538482, 3202435, -17410186, -27923730, 4475893, 9709847, 10018548, 267899, 23198728,
+-16496433, 5413270, 3208878, -4748087, -14641544, -6215892, -8315594, 9817221, -4298726, -9072582,
+-14903537, -1417876, -5492190, -2891050, -11235634, 5965710, -681826, -5310190, 6089190, 7681549,
+9162239, -11905112, 21698174, 1277216, -3093987, -13353590, -12492986, -2585570, -1622424, -13026636,
+-13515188, -10430328, 8749385, -6059125, 14495515, 4594005, 24174224, 8247411, 9187472, -3142842,
+12969191, -2296734, 3132105, 18312666, -5581310, 6616397, -22059488, -28147068, 6137509, -1372242,
+-17830556, 1068910, 447750, -24299852, 6832219, -7189776, -4794257, -9517648, 9156870, -8895951,
+506806, -1022202, 4414153, -20938, -13276281, 7747048, -1914482, 3058017, -16746077, -23159538,
+-20579336, 1099512, -4881231, -23448910, -4928475, 22442278, 11849278, 5172215, 4286914, -10436234,
+343061, -2428804, 1005022, -3464965, -2770254, -163209, -256087, 854162, -33286, -7298223,
+-1746978, 1873143, -1363652, 3456912, 5733782, 4765266, -52613, -845572, -2493766, 7578470,
+4387309, 4975720, 4177930, 3035468, -565862, -2937758, -2609730, 5907191, -4598836, 3510599,
+4999342, 1920924, 2466385, 374199, 1478006, -4044249, 366683, -1187559, -3440806, 1631014,
+2306934, 4565550, 16954920, 22275848, -664109, 5987722, 13997298, 11592654, -1199370, -28173912,
+19332184, -1810866, 5254893, -5661304, 9911174, -591632, -12235825, 3556770, 22236120, 3523484,
+-14595373, 12987444, 9197672, 6150930, -10970420, 11971148, 8785892, 1185411, 14148696, -5487358,
+3799972, 22925998, 16614007, 833761, 5272073, 11353746, -21469468, -4157528, -1348083, -3177739,
+-18802830, 5016522, 5722507, 1285806, -14569066, -20401, -24960740, 1550483, -17824114, -3313567,
+9241159, -7399155, -10769630, -8466454, 5352603, 4600447, -9926206, 4194036, -3548717, 12570296,
+-6358699, -6993281, 6484864, 11772505, -1047972, 5276904, 4517769, -27034672, -559956, -1746441,
+-13843753, 1713692, 17850958, 5691369, -4905390, -1914482, 13074417, 9396852, 5768141, -3383361,
+20702816, 499827, -17004312, 2594160, 20728050, 10997801, 10588705, 6499896, 1256278, -4773856,
+-5698348, 4041027, 3495030, 5224828, 7887708, -1585917, 6266358, 4062502, 767725, -705448,
+-462246, 3091303, -2614025, -716186, -2584497, 301721, -1119913, 3394098, -6025302, 1449552,
+2318209, 1059783, 4950487, -8005819, -3296924, 1830730, 1828046, -425739, 5081483, -1362042,
+-1382443, -1896228, 796716, 3571265, 3929358, -4221953, 946503, 2631741, -4025995, -2244657,
+-2097555, -1680943, 11267847, -25412784, 11030550, -26303990, -30310658, -20287814, 1703491, -17374754,
+16908212, -5622112, -20253992, -1145683, -4853850, 2354716, 4245039, -5269925, -2272575, 13167833,
+-3675955, 4739497, -7036230, -7853885, 22064320, -7763691, -2105071, -1117765, 5322002, 12891344,
+-26838176, -2314987, 14957224, 13597330, 13573707, 1262720, -4555887, 27522150, 9873056, 8339216,
+11309186, 4485020, -3575024, -297427, 16866336, 4836670, -11286637, 5668820, 30741228, -16541530,
+21358336, 7189776, -31695248, 7252589, 21902186, -2848637, 10053982, -632434, -23936926, 11768747,
+30623116, 1195612, 20941186, -12979391, 18567680, 14542759, -127238, -3244311, 17070348, 8331163,
+-21617108, 21448530, -5076115, -5542656, 13688061, -6985765, -7550016, -10335302, 3779034, 607738,
+4010963, -1459215, -4103305, 15966541, -14405320, 2000381, -2711198, -5366025, -11715597, -11988327,
+7076496, -1423782, -7095823, -10762651, -8243116, -15100031, -10008348, -1138166, -6833830, -4848481,
+-750009, -8110509, 3482682, -7212324, -6543920, -2431488, 1986959, 1834488, -3148748, -1017370,
+-10428717, 3679713, -10957535, 7992398, -2598992, -1316408, -4652524, -3291556, -278636, 12253005,
+6714645, -1935957, 3329674, 8233453, 5071283, -5475547, -2049773, 2844342, -4154307, 6588480,
+1864553, -3426847, 2698313, -10006737, -17003238, 41217192, 20802138, -48654464, -19670950, 4861366,
+-7747584, 13703093, 16727287, 17382806, 20470352, -12683038, 38538740, -6033356, 1239098, -12800613,
+14693620, 18941342, -13575318, -16071768, -3049427, -9373229, 1975148, 7388418, 1458678, -10220948,
+-3482145, 15481746, -979789, 7685844, 2200097, 18685256, 28699508, 10503879, -13386876, -32298690,
+-2406256, -5714991, 3886409, -7690676, 10846403, 17468706, 1888712, -6860137, -14345191, 34725884,
+30898532, -4344360, 15234786, -8615168, -10900627, -34005940, 18927920, -16019691, -3338800, -1293322,
+-10251550, 5622112, 21002390, 2881386, -8849780, 9543954, -3939022, -14208826, 21470542, 4012573,
+-29061360, 37322192, -25188372, -13939853, 14836965, 14637785, 12803298, -78920, -31059056, -2990908,
+3047279, -2115272, -10007811, 5778879, -5092758, 1925219, 4187593, -13310641, 15331423, 10177999,
+5334887, 1722282, -5874979, -4869419, -10201, 5006322, 757525, 3791919, -2165737, -10383620,
+3342558, -15080704, -4393215, 4395362, -4076998, 7776575, -6558952, -1320166, -5529771, 6131066,
+851477, 7610145, 9497246, 6018860, 555661, -7289633, 5350993, 8251706, -1408212, -1319092,
+-8892193, -4369056, 10944114, -3964255, 7484518, -948651, -3720516, 3452617, 3864397, -547608,
+-5759015, 10679973, -5542119, -13366475, 1504312, 19072340, 5675263, -25914758, -20758650, -4989679,
+32416266, 3370476, -15547245, -41812580, -11614128, -1916092, 9936407, 28748364, 22050362, -3095598,
+284542, 18905372, 15411416, 697932, 4233227, -56419764, -35550520, -17348446, -27857158, 2401424,
+-15535434, 24936044, -5705327, -1978906, -114354, -10073846, -11469710, 18061412, 11275900, 6377490,
+-2550674, -8635569, -7707319, 8984535, -20205674, -7597797, 3579855, -7032472, -9838696, 8404177,
+-29209536, -40903120, 9725953, 12746926, 15868294, -23896662, -12690018, 13191992, 5020817, -39875552,
+-34997540, 2100239, -16936666, -17548162, 6518687, -32220308, 16338056, -12480101, 13427142, 12856985,
+-7986492, -18171470, -41929620, -14725832, -12597676, 23509578, -20344186, -13294534, 7175280, 24033564,
+14024142, 108448, -8191040, -2719788, 7197292, -7240241, 24312736, -15090904, -11811160, -5731097,
+-2115272, 6662031, -17913772, 10526965, 8084739, -7525320, -12544526, 2896956, -729071, 12192338,
+-15666967, -20451024, -5185100, 3216394, -11305428, -1717987, -13670881, 577136, 3333432, -6163278,
+9536438, -2580202, -6759742, 2953864, -4569309, 2776160, -3892314, -14204531, -623844, 1041530,
+13558138, 10634876, -6523519, 53687, -727997, -8008504, -10253161, 4986994, -2601677, -3724811,
+3103114, 16624745, 22834730, -3651259, -30718142, 13916768, -4612795, -12814035, -26491896, 7903814,
+11315628, -39276404, 14817637, 13955959, 35404488, 3199751, -8900246, 2187749, -43376484, -12600897,
+-5299990, 551903, 7895761, -14835354, 26524644, 10618770, 32790464, -6622303, 28829968, 18517752,
+11355357, 26294864, 13257490, 17335562, 22290880, 933082, -29382408, -27690192, 5531381, 31586800,
+22746146, -42223288, -1335735, -7208566, -6058052, -4498442, -29348048, 7403987, -20952998, 18644990,
+-14072997, 42170672, -11275900, -60719028, -6614787, -20990578, 11882027, 8899709, 17089138, 39237748,
+8604430, -5457293, 21349208, -12835510, 43761960, 7278896, 29204704, 13702556, 2465311, -11276437,
+-10308995, 72018552, 198642, -49946712, -10253698, 39663488, -24038396, 5073430, -11231339, 17323750,
+36287104, 20947092, -42446624, -2883534, -41799696, 5604933, -6017249, -24749212, -3201898, -6818261,
+-11198053, -237834, -21582748, -23523000, 7750269, 8637179, -1496259, -26312580, 18530100, -23338852,
+-36207112, -15461345, 8559333, -9084930, -16354699, -20769388, 3390877, 8495982, -19064822, -14460081,
+6505265, -8469139, -15483894, 12094091, 9384504, -1104880, -2333778, 487479, -3904662, -6382322,
+-7037841, 2171643, -14389214, 7929047, -5467494, 2865280, -18192944, 19422378, 9040906, -41660644,
+-15025406, -47251620, 7572564, 40818296, -29967598, -28954522, 27698244, 12372727, -46229956, -44668196,
+14611479, 1893544, 6923488, 14606110, -1412507, -13726179, -6322192, 27808302, -19804094, 34442416,
+6113886, -8623221, 7885023, 19706384, 357019, -6489696, -36916856, -16843252, 4572530, -20467666,
+17692580, 25334402, 2287070, 3812857, -26293252, 31405338, -10765872, -14702747, 26409218, -10444287,
+476205, -19098108, -1472100, -13564044, -45504640, 15302968, -4725001, 33676300, 44203268, -1103807,
+-7399692, -28215788, -8357470, -8189429, 42079944, -40075268, -27549530, -66123168, 1950452, -27648852,
+7948374, 22312356, -11874511, -3895535, 45197016, 28418188, 20832738, 3057480, 2452426, 33520072,
+-36456220, -2080375, 10870025, -4831302, 20738786, 9280351, 86831888, 13186623, -23216982, -1809255,
+-15786689, -43084964, -16494822, 1098975, 7624104, -8694624, -8449274, -8556112, -30056182, -876710,
+-2126546, -16656957, 4687957, 10354092, -25720412, 1211181, -17332340, 6434935, -839129, -6650220,
+-3144990, 1010391, 15741592, 8468065, 1052804, 16522739, -10102300, -2717641, -4618701, 15515032,
+11083163, 7110319, 16836272, 7151658, -11406896, -6167573, -1574642, 7642895, -14447196, -4340602,
+826781, -17224966, 18562312, -5073967, 2954401, 40034464, -29463476, 10241886, -10197326, -14207215,
+-14024142, 60440928, -8245264, 29679834, -24107114, 41226316, -14467060, 611496, 22020834, 23795192,
+56642028, 2697776, 9082245, 8321499, -24367496, 29311004, 8851928, -17289928, 28347858, -12002823,
+35755604, 27462020, -8793409, 23878944, 820876, 22282828, 4196183, 37831684, -23467702, 18833432,
+-38643432, -9677098, 12528420, 40991168, -2152852, 3228742, 17333952, -230318, -14224395, -49555868,
+-30961346, 8349417, -21636972, -1050656, 15206332, -43218108, 25942676, -2017024, 30919470, -15059229,
+-29786672, -5259188, 80583248, 18252000, -74228312, 12829067, 18278308, 4425964, 79734992, -5027259,
+-59636696, 61138860, -21225192, -4155381, 66600448, -7428146, 43605192, 6898255, -40498320, 1466731,
+68055904, -56271052, 28806346, -34587372, -39347268, 28446642, 16645146, -35699232, -13634911, -22287122,
+-12612708, -13157095, 5728950, -21995602, -5151277, 8342437, -22958748, -16289737, 10843182, -26426934,
+-7087233, 8874476, 2869575, -6365679, 18816788, -8835821, -7406671, -9836549, -18511310, 8218420,
+-12237972, -13571560, -3942243, 1875827, 25272124, -310848, 6526203, -22009024, 1326608, 27231166,
+-6080063, -3763465, -3121904, 870268, 979789, 18826990, -11206107, -12412992, -6934225, -19026706,
+-22984518, 5276368, -11991549, -9779104, 12961138, 3848291, 8131984, -3820910, -58302032, -5498632,
+10304700, -23152022, -5318780, -63218160, 40555764, 59536836, -25441238, 7604777, -44894756, -135379520,
+-24564528, 5269925, 69392712, 56319368, -54955180, -50978040, -49257368, -42382736, -28075128, 34586296,
+-4995584, 77374376, 54227184, -16764868, -63642824, -163069712, -103739032, 6325413, 181086016, 135910480,
+26263188, -71600864, -175885888, -182378800, -12018392, 104603928, 164545568, 178100480, 19654844, -58943596,
+-72132904, -98258648, -86379848, 4852240, 61733176, 111725520, 78820704, 61002496, -79630304, -100080792,
+-115169552, -141153568, 16868484, 166899744, 166695200, 32629940, -58611272, -158563744, -205415408, -70887360,
+17037598, 75745504, 189576640, 68350648, 631360, -105001752, -83983256, -36880348, 43899936, 72644000,
+130430104, 32771138, 68586872, -6544457, -85787680, -72896336, 5005785, 82432768, 92081952, -42650100,
+-78362752, -98303752, -23482196, 14754823, 23898808, 13685913, -47706888, -43186968, -16593069, 29883308,
+772557, -683437, 7695508, 23654532, 20822002, 14307610, -7809325, -60369524, -38610684, 3206730,
+31199716, 55274080, 28061706, -17208860, -36811628, -50813760, -30370250, -21180094, -25311852, 55392732,
+59875064, 63684700, 54601384, -26386132, -103004056, -89175336, -46748572, 38631620, 131573640, 125579472,
+7672422, -81559280, -124838056, -114272440, -6840273, 61240864, 59483688, 27192512, 26386132, 29528,
+-33195266, -41850700, -50584516, -9192304, 48083232, 56997436, 41795400, 3748970, -38836704, -36971080,
+-16478179, 29433410, 21726628, -50476604, 53150, 26752278, -21569862, 29518774, -1673964, -4786204,
+-2572149, 6376953, 21554294, -8125542, 25490094, 18197776, 10101226, 12293270, 8449274, -1706713,
+-15333033, 24830816, -788127, 15366856, -9293235, 13746580, -4989679, -1336809, 8522289, -11455215,
+-13110388, 2426657, -5883032, 20226074, 19002010, -17238924, 8465917, -10035191, 11803644, 831613,
+7612293, 3630858, 10008348, -12098386, 8391829, -14008036, -6725382, -1437203, -2035815, 12376485,
+-22644678, -3803194, -9566503, -19219978, -2127620, -7189239, 4371740, 19479288, -6033892, -25567940,
+3853123, 16851842, 31343060, -777389, 2445447, -16469052, -13325136, 15377057, 1002338, -4974109,
+111132, 26499948, 11122892, 8795019, 13647795, 24476482, -27343910, 11422466, -4932770, -39674224,
+-5012764, 31838056, -6094022, 28401544, -1547799, 17888002, -20703890, 13269838, -14176076, -3462818,
+27037356, -7192460, 2229625, 1242319, -405874, 10664941, -324807, -3416110, -2604361, -74088,
+-2208687, 5688148, 7566659, 12141336, 1027034, -9107478, -4684736, -11973832, 4501663, -12435541,
+6833830, 6106907, -4317516, 8060580, 2086280, -12907987, -37581, 697395, 4089883, -22665616,
+7916162, 5912023, 1790465, 91805, -6710350, 8387535, -12076374, 12667469, -1179505, -695785,
+2963528, -4962298, 9835475, -10552198, 2920578, -5477694, 6081137, -19013284, 47965120, 81512576,
+7423314, -53997404, 18413598, -4435091, 66858684, 30808338, 65733400, -6538551, -30572114, -8833137,
+14940044, 27050778, 21933324, -12487617, 2577517, 11267847, 8936216, 25543782, -17642652, 3993246,
+-23955180, -4334696, 843424, 5908265, 13242458, 2425046, -9917079, 19487340, -1316408, -17914846,
+24466282, -4457639, -8039105, 5997922, -3028489, 18283676, 30275762, 376347, 8311836, -10353556,
+-5693516, 16856672, 13014288, 13903346, 3386582, -9373766, -18132278, -19531364, -20288888, 16362752,
+18923626, 17654464, 27404576, 28407450, 13015362, 1199370, -24495810, 15067819, -2088965, -23088670,
+28744068, -2372970, 19117974, 9395778, -27579596, 7504382, -7751879, 5735392, 19703700, 3275986,
+-22933514, -17028472, -13259101, -24988656, 15696495, -1793686, 26620208, -539555, 4895726, 250719,
+-13364864, -9296994, 5596343, -21458730, 7079717, -475668, -3439195, 7389491, -11097122, 6922414,
+5346161, -1197222, -9279277, 12840878, -2605972, 11367168, -18888192, -14666240, -7808788, -7823283,
+9973988, -4125853, -1699196, -2716567, -9074729, -5544803, -5288179, -194884, 18903224, 2217814,
+-3863860, -496069, -9805947, 7501161, -5111011, -1227287, -3250753, 8437463, 36507, 959925,
+-1038845, -6425808, -3441880, 9241159, -2515777, 6572911, -1159104, 3429532, -5109938, -28552942,
+-65011308, 4744328, 89210768, 118767656, 101303248, 70457328, -3311420, 4706748, -52125332, -61282740,
+-103879688, -77898360, -83468928, -26594438, 6691022, 27429272, 45172320, 113286208, 93643168, 63633700,
+20170778, -9615358, -41155988, -30057792, -42777876, -53644680, -30360050, -30530776, -38336880, -17348446,
+-25334402, 5649493, 17346836, 15196668, 47790636, 44765908, 39090644, 26130044, 29532196, 19139448,
+35432408, 8970039, 30615064, 1728188, -8398272, -53625352, -23795192, -64705828, -75954888, -84239344,
+-66636956, -49464600, -17974438, 13127031, 48308180, 52161840, 40531608, 84412216, 67822904, 73169064,
+67132488, 63282584, 24959128, 41055592, -16630650, -40123048, -42747808, -99572912, -100165080, -96122440,
+-102972912, -84306448, -29242822, -13888314, 22510460, 57677652, 62144956, 76663016, 91600912, 82349552,
+63603096, 58426588, 42465416, 16350940, -1871532, -34019364, -50906636, -50676856, -58525908, -48484812,
+-55070072, -56734908, -48487496, -37178848, -19087372, 2595771, 24607478, 48290464, 44605920, 44634912,
+51929376, 58048092, 44393856, 45098768, 19713364, -20613158, -15583752, -36516348, -47173236, -38810400,
+-32452772, -22283900, -28722594, -20259898, 2254321, 6353331, 9755481, 25691420, 22063246, 14522358,
+3287798, 9918690, 9507447, 3262028, 12091407, -7295539, -8662949, -6455336, 4447439, -1017370,
+48855, -303332, -1787243, -8840653, -6584722, -2343979, 8702141, 304943, 3943317, 1676648,
+-4942434, -5567888, -3158949, -3806415, 1180579, 121333, 1454383, 1299228, 2029909, -1902134,
+2105608, -1127966, 479426, 1888712, 5562520, 2669322, 6485938, 1168231, -132070, -1556389,
+-1404454, -4114579, -375810, -2189360, -1153199, -3153580, -266825, -1472100, 671089, -2884071,
+-455803, -5906, 2117419, -1343788, -422517, -2056753, 1153736, 119185, 2778307, 2760053,
+3805878, 1225139, 2491081, -123480, 122943, -1189706, 1217623, -846109, 855235, -763967,
+435402, -2466922, -1672353, -4452808, -2128693, -2601677, -443455, -1707786, 783832, -439697,
+1525250, 427349, 3149822, 1668595, 3381750, 1658931, 3090766, 1318555, 2245731, -209380,
+202937, -2684355, -1382980, -3191161, -1843615, -3696893, -1268626, -2251100, 301721, -311385,
+1885491, 256624, 2110440, 423054, 1921461, 91805, 1635309, -373662, 1122060, -771484,
+727997, -1044751, 649614, -1047972, 668404, -1016297, 721555, -921271, 821949, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
{
{
10429791,
-5484137, -584652, 3586835, 943819, 788127, -11341935, -4990752, -5599564, 4393752, -573915,
--3737159, 4066260, 4121021, 308701, 3954591, -1634235, -178241, -200253, -2508261, -1250372,
--5510980, 2859375, -8127689, 3409667, -4260608, 3475166, 6384469, 2966749, -1268626, -1785633,
-4705674, -734439, 175020, 4526896, -4861903, -109522, -1675574, -2743410, 543313, -644782,
-949188, 4638028, 7546795, -2384244, 89121, 6336151, 431107, 1687385, -2371359, -3506841,
--568546, 1087701, -6007586, -1537598, 3063922, 431107, 1074279, 1875290, -906238, -1836635,
--1813013, -2063732, 2253247, 1912871, -1151051, -3389803, -4250407, 2098092, -15569, -3461207,
-3623342, -780073, -297963, 583042, 983548, -1716376, 2144799, -2319819, -846645, 2897492,
--2042794, 1167157, -3419868, -2552284, -1295470, -813359, -272730, 474057, -1414655, -1679869,
--229244, -949188, 320512, -341450, -367757, -446140, 298500, 116501, -417149, -678068,
--479963, -243203, -126702, -360777, -303869, -516470, 423054, -763967, -545461, 627602,
--3748433, -1012539, 16106, -3524021, -3592740, -2132988, 8575976, -6018323, -2493229, -4197794,
--7683697, 2879776, 1302986, 313533, 6572911, 6249715, 6236293, 2033130, -1180579, 981937,
-4698694, -1999307, 2020245, 2394981, -5567888, 7927973, 1524177, 2476586, 5840619, -2234994,
--5848672, 409633, 3955128, -2779381, -1277753, -3710852, 3937411, -85899, -411780, -6460705,
--289910, -771484, 3978750, 2052994, -3560528, 7101192, 2606508, 1490354, 2473901, -1139777,
-3964792, -1531693, 188979, -4928475, -5914170, 4751845, 3701725, 6576669, 634045, 1786170,
--5086852, -7847442, -3866544, -2343442, -2296734, -3616899, -3134789, 1637993, -915365, 2402497,
--2956548, -1114544, 1292785, 1484448, -891206, 4019553, 1212791, -2988760, 6039798, -2353105,
-1856500, 7640747, 1624571, 1062468, -2364916, 122943, -2596308, -3084860, -500364, 1771674,
--34897, 242666, 95563, -824097, -267899, 93416, -760209, 1804960, 1148367, -651761,
--162135, 68719, 472983, 270583, -1183800, -624381, -281320, 149250, 535260, -535797,
--848793, 752156, -432718, 580894, -298500, -456340, -585726, -7383586, -6905234, 4051765,
-908386, 5669357, -8756365, -1221918, -3488587, 951335, 10400263, 5954436, -9117142, 3456912,
-852551, -3785477, -4235912, -5152887, -8396124, 309775, 993748, -3098819, 1478006, -1781875,
-309238, 2538326, 1942399, 5414343, -4740034, 8519068, -5200669, 4950487, 3908957, -3179887,
-2282775, 419833, 3525095, -1408749, 1836635, 3251827, 1072131, 511101, -1312113, 2535105,
-747324, -1124208, 6043019, -7909719, 533113, -4789426, 9520332, 3371013, -8332774, 3239479,
-10886131, -10238665, -4896800, 1238561, -854162, -3880503, 3235721, -1357210, 7243463, -6101001,
--622233, -2015950, -437550, -367220, 6997576, -6504191, -2178085, -703301, -6739341, 3626026,
-2784213, 7252053, 2931852, 6174553, 5543192, 916976, -2267743, 1749125, -219043, -773631,
--1697049, -158914, -2587718, -1025423, -604517, -3588982, 2254321, 188979, -2530273, -426276,
--2057289, 185757, -116501, 1377074, -513249, -815507, 140123, -1159104, -71941, 1185948,
-405874, -268435, -843961, 3273839, -5071820, 622770, -3181497, 3349538, 1219771, -5153961,
-14828911, -9452686, 2974265, 16015933, -11334956, 5248450, -301721, 5213017, -1399623, -9735080,
--2131915, 7970923, 7167764, 1946157, -80531, 4013647, 1974074, 103079, 3340411, 3326989,
--2803003, 4249334, -1211718, 6723235, -5476620, -8471286, 1775432, -7403450, 2514167, 83752,
--2127620, -2408940, -3383897, -5060545, 942745, 1704565, 148176, 1211181, 1424855, -3148211,
--6489159, 5011153, 1101659, 766115, -353261, 7391102, 1462436, 3053185, 7842074, -4914517,
-1867774, 241055, 2334315, 5442798, 4279935, -7271380, -6349573, -1705102, -3649649, -910533,
-206695, -3181497, 1593433, -5838471, 228170, -5622649, 2681133, 2619930, -3261491, -4301947,
-410169, 2216740, 368830, -4961761, 624918, -2884071, 2029372, 1633698, 714575, -1014686,
--1431835, 863825, -209917, -629750, -102005, -1362578, -1127429, -3449933, -901406, 2931852,
-1255741, -987843, -682900, 2008434, -811749, 520228, -1024887, -82678, -321586, -9127,
--1297617, -928787, -551903, -472983, -529892, -633508, 5369, -464393, -862752, -761283,
-301185, 1420024, 461709, 4479651, -1802813, 4037806, -601832, 1913408, -2237678, 91805,
--1402307, 1207960, -573378, -9445170, 7217693, 4306779, 11777337, -7800198, 4937602, -9603547,
--1421634, 5535139, 6401112, -6801081, 2081985, -7847442, 759136, -9166534, 3129421, -6918119,
--8140574, -7659538, 3935801, -6228240, 452582, -7269769, 1110249, 833224, -874026, -5377836,
-3438658, 4334696, 2895345, 1908039, -5337571, 2800856, -5607080, -2041183, 3747896, -92879,
--614180, -1770600, -34360, 3469260, -4087198, -8456254, -1553704, 2327336, -1553168, -6325413,
--5993627, -8980240, 2285460, -2741800, -8020852, 5656472, -5073430, -5374078, 10109279, -3800509,
--1770063, 596464, -1609539, -3452080, 988916, -5660767, -2509872, -4797479, -3424163, -1721208,
-3142842, 7291781, 568546, 4294431, 564251, 3148211, 2527588, 5846524, -257161, -359167,
-810138, 2019708, -1050120, 35433, -409633, 4211753, 10201, 1917166, 503585, 627602,
--576063, 763430, -2540473, 2745021, 251792, -171799, -2043868, -796716, -2825015, 1194538,
--1355599, 788127, -224949, 2765959, -1282048, 357556, -2434173, -2334852, -16106, -1151051,
-907849, 1675037, 561030, 723702, -1136019, 242129, 7623567, -10997264, 1950989, 9698573,
--3616899, 10619307, 2913599, 712965, -3098282, -7337415, -4887673, 12639552, -6790344, -6979,
--2362769, 1037235, 7554848, 6863358, -4147328, 9891847, 9801115, -4569845, -2439005, 6042482,
--5069135, -4360466, -330712, -6729677, -164819, -1938641, 867047, 11868605, 4020626, 707596,
--5414343, -15622944, -1916092, 8894340, 2163590, -5805722, 4512937, 7247758, 6265284, 7655243,
--12398497, 2590402, 609885, -6070400, 3345780, -5452461, 3956739, -3036542, 4907000, 11093364,
-14556181, 9271761, 4234301, -5936182, -1645509, -7101729, -7547868, -1493038, 8549669, 2200097,
-159988, 2112050, -8317741, 2275796, 1068373, 33823, -4191351, 2372433, 4602058, -4714264,
--9063455, 20842940, 2717104, -3593277, 1320166, 2352568, 9487583, -1777580, 2644626, 3345780,
-4736275, -3132105, -1548336, -3389266, 1726577, -840740, 1900523, 1856500, -1164473, -1787780,
-3576634, 610959, 993211, -525060, 2190970, -3498251, -2531346, -1604170, -574989, 4205310,
-1567126, 2865817, 2144799, 2283849, 231391, 634581, -818191, -2388539, 2585570, 772557,
-1146219, -1607392, -521302, 49392, 1170379, 3338800, 915902, -5555004, -1760400, -3350611,
--1491427, 2804077, -3757023, 16493748, -1769527, 4750771, 11575474, 1678259, -1907502, -7537668,
-4155381, -4008815, -5342940, -15381352, -7096360, 3252364, -982474, -2874407, -11359652, 4038343,
-6018323, -8696235, -4766340, -2248416, -9388799, 3796751, 498753, -4767951, -4169876, -1568737,
--12634720, -4335233, 6025302, 10479720, -8015483, -9711995, -3011309, -470836, -8137353, -6453725,
-2335925, 4468377, -8901857, 17599702, -76236, 7212324, -4145180, 6780143, -4692252, 2105071,
--12586939, -2529199, 4908074, -12340515, 3248069, -2725694, -6492917, -14030048, -475131, 7907572,
--47245, -14809047, -2410014, 2778307, 5825587, 10986526, -4180077, 4951561, 12589086, 4320200,
-1396938, -5741298, -1262720, -3562675, 595390, -4260608, 826781, -8098698, -1242319, 6292664,
-1621350, 1258962, -3710852, -6277095, 3345780, -1128503, 3456375, -1308891, 308701, -787590,
--1992328, -1650878, 2183991, 942208, -639950, -810675, -93952, -2435783, 977642, -2491618,
--3308199, -1960116, 929860, 158914, -164283, -2362232, 1680406, -294742, -1404454, -3349001,
--1236414, 204548, 256624, 1349157, 3371013, 1115081, 636192, 1773822, -699543, -257698,
--1118302, 2757906, 4655745, -1405528, -5005785, 6060736, 898185, -8923331, -14388677, -11488501,
--14887430, 12830678, -7856032, -1763621, 4023311, -13815836, -5934571, -9574556, -4467840, -2978023,
-6163815, -12094628, -6667400, 4009889, 4690105, 7162932, -258772, 350040, -2330557, 88584,
--3021510, 1859184, -9839233, -5102958, -8672076, 6020471, 2782602, 4686346, 5783174, -11674795,
--1004486, -1167694, 10559714, -3926674, 3216394, 5936719, -2355253, 6348499, -4254165, 7065758,
-9614821, -3725347, -837519, 8484171, -7336341, 11694122, -5134097, -18355616, 2700461, 9647570,
--3819300, 1191853, -489626, 7421167, 9016747, -9233643, -4238059, 2267206, 6152004, -10878615,
--8504035, -6571837, 13108777, -229244, -15422154, -3221762, -6524592, 5293547, 500364, 4017405,
--5910412, 9503689, 210453, 1770600, 2525441, -8631811, -3158949, 730144, -1285806, -2115272,
--2730526, 2518462, -2611877, -2275796, 1644436, 2856690, 1225676, -5043902, -664109, -1966021,
--1700270, 2196876, 1680406, 4372814, -799401, -2042794, 1436667, -4737886, -779537, 31675,
--3351148, 498216, 81604, -1122597, 381178, -5401458, -1213865, -590558, 396211, 763967,
-2072859, -227096, 2353642, 1527935, 1102733, 236223, -556198, -8592619, -3428458, 5845988,
-2214593, 8391829, 2928094, 4091493, -16499654, -6508486, 6497749, -4382478, -3075734, -5534066,
-1741072, 8596914, 2309619, 2034741, -11031623, -3765613, -1970853, 4093104, 9785546, -11833172,
-5627481, -9646497, -2505040, -8873402, 1196148, 1220308, -391379, 3696893, -8213588, -2388002,
--7691750, -3191161, 205085, -358093, -9672266, 5585068, 6320581, -2325188, 7489349, 14597520,
-1567663, 11061151, 14250165, 1125818, 533650, 3432216, -2904472, 4713727, 1039382, -3086471,
--4698694, 17826262, -1771137, 10427644, 4684736, -5226975, -6009733, -4217121, 5062156, -4039954,
-6554657, 15715285, 8039105, -2051384, 343061, -13118978, -8972187, -7987566, 12438762, 19418084,
--8412230, -33823, -7774965, -1255204, 11947525, -3702799, -622233, -18646064, -2401424, -3356517,
--1882269, 7146826, 605054, 1528472, 2265059, -3695283, 3081102, 1644436, 2758443, -2178622,
-3951907, -1786706, -317828, -4670240, -1010391, 4189741, -1408749, -52613, -695248, 4030827,
--892816, -2793339, 1788854, 1836635, 1123134, 1465658, 1575716, -1470489, 518617, 2881386,
-4956393, 4281546, 2837363, 1563905, 420370, 464393, -2896419, -173409, 2034741, -1750199,
-2137820, -575526, 826244, 2738579, -1008244, 4908074, -399969, 11367168, 30846456, 13701483,
--4393215, -897111, -5939940, 14479408, -14499810, -7958575, -22075058, -69793, 10625749, 13618268,
-2246805, -5150203, -13301514, -9423158, 9504226, -1780801, 15197205, 140660, -5105643, 7438347,
-2473364, 54224, -3990025, 10218801, -2032593, 8853538, -305480, -4536559, 18740552, -4333622,
-7502771, 18774912, 6369974, -595390, -9248675, -1522029, -14960445, -17144972, 3610994, 11293080,
--2827162, 1747515, -19083614, -7002944, 10799695, 6131066, -5064840, 3815542, -5773510, -2530810,
--8788577, -14309220, 716723, -3229816, -10399190, -16543677, -14593225, -4507032, -13416941, 6295349,
--6093485, 2297271, 1560684, 92342, 164283, -1953136, -3125126, 8781061, 16913044, -11309723,
-1932735, -4639639, 6019934, -6226092, -403727, -4440996, -2244657, 15899432, 11263552, 2770254,
--1914482, 357556, -6568079, 2419677, 6250788, -1016834, -5698348, -2972117, 5395016, -6506876,
-471373, 3063922, 2543695, -2155537, -2281702, 2604361, 2878702, -2105071, 3455838, 2284923,
-2843805, -111132, 3800509, -210990, 2354716, 1433982, 1330903, 1115081, -1001801, 4839892,
--4683125, -463856, 861141, -1155346, -1286880, -1929514, 1932198, 397821, -4051765, -1260573,
-2435783, -2605435, -12668006, -14573361, 3869766, 5441187, 17471390, -14773077, 4806606, 4401268,
--24303072, -1231045, 304406, -20509542, -10986526, -7313256, 5346698, -1723356, 1375463, -5849746,
-8745627, 13442174, 7277822, -2007897, -20576114, -9109626, -11115375, 4127464, 1427540, -9171366,
--547071, 7062537, -5873368, 12259984, -10954314, -404801, -6315750, -20791936, 3701725, -8891656,
--9777493, 7644505, 11613592, -12910135, 5140002, 15084462, -4776541, 6572374, 5371394, -3619584,
-2239289, -16888348, 25640954, 9960029, 6208375, 24256364, -29501056, -2288144, -3927211, 3086471,
-12293807, 12520367, 5015985, 5939940, 15736760, -1544578, -10384157, -18420040, 7296076, -7004018,
-874026, 4907000, -3482682, 7445326, 20116554, -12355010, 9477919, -6020471, -5517423, 15008226,
-1334124, 4640176, 14807973, 12002286, -5113696, -6169184, -12667469, -3306051, 260382, 6646999,
-7231651, -41339, 1869385, 954020, -53150, 1346472, 1824287, 486942, 4179540, -2040110,
-806380, 2803003, 1799054, 779537, -1568200, 3792456, 2723009, 532576, -1970853, -3127810,
--7065758, 4302484, -66572, -710817, 2434710, -3547106, -189515, 2386928, 3579318, 4990752,
-3073586, 1341640, 1631014, -96100, 1772748, 3711389, 15887621, 18747532, 4647692, 11571179,
--7553774, 5458367, 5258651, -30715996, 8653822, 9973451, 2057826, -9781251, -271657, -18961206,
-22273164, 13451838, -7062537, -7506529, -11145977, -5795522, 16099148, -16349867, -9417253, -2456185,
--2782065, -3531000, 2298881, -10834592, -11099806, -6518687, -8563091, -2314451, -11123428, -1541356,
--7483981, -24311662, -15561203, -6015102, -3913789, 3378529, 4003447, -151934, 657667, 7021735,
-3330747, 3586298, 17046726, 3554622, 5723581, 10650982, 22913650, 19616190, 980326, -7790534,
--15127949, 13700409, -3431142, 37055904, 7429757, 16598438, -1870995, 2090039, -14790257, -613643,
-12808129, 7407745, 9694815, -11165841, -7420093, -14341970, -27216134, 15646566, -24026584, -2960843,
-31547072, 2073932, 12607340, 5999533, 9257265, 245887, -17124572, 16552804, -344134, -15029164,
--13472239, 450435, 5162014, 11116449, 2932926, -13188771, 629213, -2657511, 2604361, -5225902,
--4372277, 2273648, 2054605, -4128537, 335544, -1373316, -438624, -5425618, -2030983, -1774895,
-2429341, -1495186, -3347927, 4234301, -2714956, -1126355, -7663296, -8126078, -44023, 115427,
--3387656, -2188823, 2572686, 1895154, -3440806, -5471789, -397284, -5686537, 3292093, -21721260,
-6244346, 8502962, -14958297, -11145977, -9127, 9306120, 21220360, -862752, -16783658, -16463147,
--1117765, -9214315, 2560874, 3277060, -18712098, -15701327, -30420180, -8681740, -8995272, -20312510,
--14165876, 97174, -9798968, -5769752, -5653788, -1446867, -20553030, -10664941, -12731357, -5949604,
-6010807, -17041894, 1039919, 14615774, 16866336, -3782256, 4428648, 10029822, -17193828, 9809168,
--7592966, 15298137, -7550016, 1611150, -8117488, -1474248, 29644938, -5908802, 10994579, -21618182,
--3881040, 224949, -21004538, 19602230, 471910, -6849936, 13625784, -5448703, 3302830, 27704150,
--11167452, -14787572, 10077067, -2619930, -31124018, 12787191, -41171556, -21701396, 16128676, 13059385,
-2349347, 8922795, -231391, 34897, -31130996, -16329466, -7547868, 3077881, -17817134, 4574140,
-2150168, 7493644, -11734388, 943819, 8563628, 6985228, 4802311, 850940, 3901978, -9783399,
--6716255, -6517613, -2183991, -1132798, -1180579, 8367133, -4451734, 4516695, 7802882, -3720516,
-2209761, -6173479, -5194226, -40802, 1792612, -5519570, 2243584, -6984691, 6065031, -2288681,
--1569811, 541166, 5412733, -1532767, 1988033, -4825933, 4276714, 3728569, 10249939, 2750927,
-8368207, -8276939, -3154117, -9897215, -3158949, -5264556, -5113696, 41482404, 22677964, 60666,
--21366926, 10994579, -22279070, -18077518, 3271691, 18443126, 36382132, -5699422, 18385682, -6551973,
-13047037, 22093848, 12323872, 14132053, 7548405, -4103305, -18072148, -18656264, -5668283, -17629230,
--5207648, -3214246, -3986804, 14146012, -2416456, -36244692, 2118493, 8778913, 8370355, 21726092,
--2248416, -43259448, 24609088, -19343996, 6330782, -4211216, 14558865, 21238614, -23608898, -1626182,
--11798812, -20553030, 14894410, -10208600, -25348896, 9974525, 14800994, 24392194, 6450504, -3771518,
-2663954, 19975892, -16051903, 31518080, -9898826, -8747238, -2831994, 19217832, -19959250, 1867774,
-2440615, -55533392, -8235063, 17231408, -7994008, 2915746, 7722351, 4066797, -2719251, 4555887,
-19065360, 22797150, -18014704, 6537477, -13193066, -2215130, 22539988, -442382, -2333241, 871878,
--1510218, -11639361, 3230889, 823023, -6804302, -17255568, 248034, -4089883, 5304822, -7944616,
--7450695, -9352291, 7984344, 1887101, 4903779, 3973919, 353261, 2947958, -3809099, -7871065,
-12140262, -1163399, -5845988, -129923, -4205310, -2594160, -4858145, 681289, 1524713, -650151,
-3391414, 8891656, -297427, -2080912, -3568044, 872952, -4444218, -2470680, 5090610, -3787624,
--3171833, -4649839, -11631308, -6454799, 1672890, 7646116, -6053757, -1717450, 23853712, 15663746,
--44080860, -25212532, 30347702, 34966404, -18757196, -6487548, -49618148, -27577448, 7249368, -2357937,
-6698539, -26526792, -16470663, -18214420, 26911728, 39755292, -1854889, 10653666, -6407018, -3600793,
--425202, 9044664, 17354352, 4092567, -6072547, -3418257, -3978214, -23925116, -13428752, -24323474,
--3144990, 7368017, -10104984, 14820858, -10990284, -4261145, 23250806, -11355357, 13096966, 8933532,
--4183298, -22448720, -16097001, -13433584, 4087735, 41620916, 7411503, 22321482, 26517128, 20581484,
-15390478, 13594645, -22971096, 423054, -3711389, 30770220, 14740328, 17941152, 32318018, -15972983,
--21647172, 7831873, 27341762, -46374372, -779537, 3550864, 21561810, -37531572, -56298432, -10163503,
-15846819, 3804267, 6442988, 17528298, 1184337, -12639015, -18442590, 472983, 2596845, 3515968,
-17118130, 25147034, 12020540, 1730872, 147103, -423591, 2144799, 2393908, -6325413, 9178882,
-1225676, -8687108, -14958297, 1704565, -6338835, 3066070, 1705102, -1516124, 1021129, -6386617,
-6539088, -3506841, 4414690, -6859600, -4254165, -12106976, -11698417, 383863, 6278706, -5459977,
-12494060, 151398, 3781719, -3928285, 13354127, 919660, 6172405, -6758131, -3491272, -2290828,
--2301029, -8439611, -1422171, 8752070, -15288473, 11725798, -427349, -11541651, -19924890, 7368554,
--9633075, -19796042, 14252849, 26984206, 8452496, -10507637, 16241419, 27141508, 10201621, 5527086,
-2035815, -3119220, 12928925, -22842784, 1450088, -32816772, 17590576, -26501022, -2130841, 14142254,
-7942469, -15149423, 3266860, -17518098, 35849556, 4562329, 11680700, 18578418, 39534636, -16361678,
-12887049, -18951006, 6890738, 14127221, 31789200, 7422777, -6386080, 32448478, 4452808, -2345589,
--18653042, 1176284, 20432770, -6961068, 19639274, -24173686, 37205692, 38470560, -46277200, -1274532,
--2879776, 10053982, -7852811, -6146098, 19965156, -16887274, -49384608, 517544, 43971340, -34746824,
-17435956, -8096550, -4373351, -21204254, 48527760, -3224984, 8046085, 4364761, -32613298, 42152420,
-3314641, 37473588, -74335144, 6977175, -6987375, -22530324, -6021008, 12941810, -17315698, 11514270,
--15611132, -10516764, -20548198, 25786984, -9974525, 1633161, -21919366, 803696, -16113644, -5638755,
-7443179, -11253888, 5146445, 528281, -14889041, 13247290, -6134287, 1746441, -6403796, 11997454,
--9217537, 1726577, 783295, -3584150, 16059420, -9516037, -11373073, -6743099, -12743168, -17840220,
--8945343, 1491427, 1003949, -12914967, -7311645, -8752606, -12396886, -9950902, 4131759, 2630668,
--509491, -5440650, 31035434, 4013110, -24242406, 2714419, -49017924, -10862509, 2187212, -9186935,
--39129836, -4051228, -25780004, -6087043, 23127326, 5675263, 30405148, 12975096, 11307575, 7434052,
--10738492, 24843164, -12757663, -15569, 11355357, 5580773, -15348066, 12444131, 4735202, 29352344,
-11724187, -5018133, 17350594, -13795435, 23521388, 8368744, -26383448, -26696980, 13654775, 17667884,
-7016366, 3032247, -12938052, -17025250, 5019206, -16751983, -25820806, -7677254, -4559645, -23342610,
--8980777, 8964670, -16325171, -26351772, 7249905, 9989557, 699543, -3096135, -1772211, -4354023,
-9297530, 45299020, 8985072, -1330366, -1933809, -15814070, -25979720, -11293617, 36958192, 40064528,
-20255066, 3926674, 36040680, 17561584, -8402030, -50293532, -38647728, -31525596, -60428580, -34974456,
-8332774, 49060336, -21872658, 16675211, -24430848, 8048232, -2165737, 16931834, -8034273, -2724620,
--21808234, -12306692, -5435818, -19184546, 24483462, -3733937, -12989055, -5988258, 2405182, -13852343,
-9880572, 7482370, 15820512, 3772055, 4395899, -15566035, -18403934, -2018098, -13612362, -8422968,
--15844671, -22606024, 1122060, -5831492, 1358283, 1742683, 17347910, 17498234, -6528351, -3355980,
--7745437, 16908750, 11103564, 7414188, 2589329, -3317325, 9593346, -13188771, -5311264, -2057289,
--15226733, -29378650, 15488189, -433792, -9466645, -9113384, -5435818, -4094178, 11003706, 21037824,
--9100499, 27067958, -30996778, 25014964, -3333432, 33350958, -21721798, 19294066, -31953482, 27738510,
--25861608, -10781442, 38331508, 8935679, 30749282, 44257492, 4351876, -3528853, -18639622, -1444720,
-27875412, 7098507, -10144176, -31065498, 2460480, 6164889, 14492830, 8997420, 12029667, 7650948,
--18342732, -28918014, -12481175, 28027882, 10529649, 89391152, -28600188, -23873038, 28938952, 45893872,
-9418863, -776852, 11861089, 3043521, 14522895, -13482976, 5109401, 21457120, 23491324, 15828565,
-69159176, -8803072, -9168681, -4504884, 35582192, 21401822, -18354006, 18754512, -601295, 6120866,
--15148350, 31771484, -31893354, 2214056, 48780092, -36066452, 104969000, -48281876, 50132468, 46167676,
--45522360, -41430328, 46604692, 2018635, -27187142, -11419781, 25668336, -71017824, 10963441, -8351027,
--45880452, 29927332, -35953172, 2842195, 2537789, -14421963, -35481800, 9599789, -2854006, -1580548,
-6700149, -7295002, -11773579, 6346351, 14733885, -5623186, 2159295, 11536282, -10908143, 16052440,
-12273406, -25566330, 3573950, -14359149, 6423661, -1012002, 1982664, -13081397, 5338645, 3427384,
--171262, -6560563, 19665582, 4465156, -826244, 18877456, -13451838, -12186970, 1913945, 8150774,
-1932198, 9081708, 4581657, -26317948, -13750875, 6788733, -15577310, 22651658, -10292889, -12859132,
--617402, -8904541, 17933636, 22846004, -53821844, -23084912, 33314450, -69844224, -42980276, -29282014,
-48949204, 103781976, 28929826, -81630688, -18192408, -83393232, -43268576, 67782104, 40773200, 63720136,
-35303020, -48390324, -76418744, -58506044, -13807783, 34470872, 39504036, 23543936, 13463649, -20357608,
--83552680, -100847440, -21598316, 77022720, 137754096, 93148176, -17364016, -64644628, -92390656, -68816112,
--55351392, -73014, 22413286, 74995496, 80412528, -43557412, -26968100, -100986496, -93543848, -33860448,
-9463960, 97219272, 143976432, 63656248, -42221676, -150803824, -111461920, -82071456, 39791260, 85651848,
-53759032, 33743412, 29028610, -90038080, -16301012, -51408076, 19268834, -7254737, 53455700, 83532816,
-66653596, -78270408, -157379952, -118611424, 13363254, 91975648, -2058900, 127596496, 5535139, -33045478,
--38216084, -28374164, 584116, 92143688, 79881560, 14474040, -31492310, -11494943, -5621039, 48283484,
-53680112, 6255620, 2550137, -8498667, -1190243, -10434086, -12810277, -8768713, -4514548, 18378166,
-29136522, 23500988, -34645892, -39706972, -15007689, -16558710, -15432891, 35864052, 29676614, 37722160,
-11368242, -16427713, -28223304, -55225764, -34846144, 22928146, 48846664, 73462192, 50680076, 4028143,
--113313584, -100014216, -33769716, 40834940, 64117420, 85204096, 64638720, -5220533, -64335388, -95354176,
--91603064, -16945794, 100217696, 103283760, 52864068, -25128244, -68827384, -48386564, -32146220, 2691334,
-20949240, 27271968, 24539296, 14758044, 1286880, -15699716, -19223200, -20015084, -15890842, -18526878,
-36842768, 11479911, -29845190, -28161026, 86973, -45373108, -5610838, 6722161, 5189931, -3945464,
-1133335, -15258945, -1903207, -1793149, 7828652, -5265093, 20913806, -5552856, -4026532, -5840619,
--6567542, 13037373, 3730716, -6289980, 20255602, 1281511, -36009004, -17981418, 9919227, 17621714,
--5997385, 2146947, 24676734, -608812, 3368865, -20185810, -9015136, 6214281, -4386772, -4486630,
--2678449, 16324634, 5912560, -6393596, -19314468, -7693897, -1131187, -17617956, 1688459, -20121922,
--13463112, -9365713, -17878338, 28032178, -5048197, -12687870, 11862700, -197032, -27551678, -1614908,
-27531278, 22321482, -12785044, 17282412, 2914135, 16488379, -18399104, -27151172, 10419054, 11964168,
-10557030, 9130027, -10238665, 10078141, -20236812, 13707925, -27609124, -24322936, 17980344, -14235132,
-12277164, 16813724, 1243930, -13016972, 4205847, 4747013, -1074279, -1076426, -420370, 10948409,
--9172976, 7105487, -9586367, 12833899, -11221139, -6147709, 4759361, -3906810, -377420, 5061082,
-1258425, 3375308, 9937481, -7920994, -4655208, 5654325, 3450469, 11294690, -9146133, 3121904,
--1063541, -7101192, -7062537, 2881923, 1870995, -7027640, -10358924, 2974265, 194347, -1983201,
-6706592, -9990094, 11587822, 3415036, -9897215, -11140608, 9350144, -15643345, 10761041, -1795833,
-7481296, -843961, 2627983, 13962939, -22236656, 44463648, 67676872, -8779450, -25109990, -21449604,
-62396212, 28306518, 60387240, 32675038, 45634, -27979028, -6304475, 15506979, 28346784, 13669807,
--13183939, -3150359, 13529147, 20078972, 2442763, 4577899, -14013941, 2643552, -6781217, 9203578,
-10187662, 26538602, 22749904, -12006044, 1951526, -13487271, 3513820, 12163347, 18000208, 1431298,
--8600672, 64961, -15520401, 13031468, -3595425, 5433671, 12055973, 349503, 16066936, -7824894,
--4432406, -3670050, -16567299, -9819906, -25258166, -4681515, -28798292, 2064269, -9917079, 23782308,
-3506304, 7071664, -22268332, 9501005, 148176, -9807558, 16305843, -8708046, -4591320, 4147328,
-10781442, -1205812, -5921150, 36781028, 11931956, 8577587, 13774497, -9839233, -491774, -3218541,
-19178640, 26750130, 25608742, -15184320, -16706886, -2183454, -6644315, 6796786, 17262010, 18029198,
-794569, 10148471, -1202054, -2644089, 5872831, 11533598, -1087701, 9084393, -7521025, 1724966,
-135828, 3234110, -2579665, 10162429, 5850819, -964220, -2811593, 3146601, 1784022, 11043435,
-619549, -6371047, -7025493, -3937411, 3087545, 3826816, 7016903, -8411157, 1189169, -2231236,
-5639292, -4074850, 7955890, -2586107, 2973191, -4367982, -3711926, 2628520, -6932077, 142808,
-7682623, 2030983, -3160559, 824097, -373125, -25181930, -55021752, -7299297, 72427104, 111955304,
-93776312, 74310448, -5114769, 8835285, -54608900, -61691836, -100874824, -57897232, -63571960, -19874424,
-7873749, 43988520, 31128312, 95633888, 83060376, 27586038, 5703180, -14711874, -32563368, -51214264,
--18898930, -52499532, -14119705, -25489020, -16658031, -12164958, 2673080, 1013612, 17744120, 25927644,
-39144868, 42632384, 50954956, 44176960, -5402532, 4395899, -641561, 8386998, -25370372, 10321343,
--27109834, -67441184, -33259152, -50453516, -85051624, -24799678, -7480223, -34320008, 11566347, 26228292,
-59229208, 70016016, 103106056, 65271692, 53030500, 52897892, 32757178, -10123238, 5277441, -51964272,
--44936096, -75303664, -89720256, -103415296, -75458816, -57983132, -6136972, -2714956, 8129300, 30345554,
-51123532, 92331600, 91140280, 90912112, 72744936, 31324270, 46906412, 7464653, -23668492, -35436700,
--84074520, -76296336, -67724120, -58253180, -46796888, -28164784, -17231408, -5771363, 4124779, 28372018,
-33469606, 44299368, 36536748, 52494164, 47364900, 31140124, 35687420, 24128590, -6616397, -19338090,
--22496502, -53373020, -46432356, -41659036, -31359166, -16965120, -719407, -1985349, 13578539, 21104396,
-16284369, 19581830, 12377022, 3981972, -493384, 5719823, 1248225, -6490233, 6966437, 8556112,
-516470, 4623533, -1365800, -1854352, 707596, 3210488, -208306, -7208566, -9728638, -9415642,
--11026255, -7376607, -2294050, -2502892, 3114388, 1289564, 856309, 3709241, 4181688, 3405909,
-4519916, 7180112, 6049462, 3466039, 4128537, 1422171, -1560684, -492311, -1960653, -2914135,
--1450625, -2626909, -2525441, -3056406, -3860639, -4205847, -4065187, -2284923, 1074, 207769,
-2246268, 2316598, 1701881, 1283658, 2190433, 2204392, 3651259, 2461016, 3070902, 1580011,
--697932, -1678795, -667867, -2088965, -296890, -114354, -942208, -558883, -700080, -2057289,
--1542967, -1327145, -543850, -661962, -85362, -142271, 152471, -636192, -678068, -1054951,
-811212, 1258425, 3054259, 3034395, 3484829, 2530273, 1742146, 650688, 0, -952946,
--1112933, -2601140, -2313377, -2705830, -2338610, -2667175, -1591822, -1093606, 1611, 78383,
-1122597, 906775, 2121714, 2124935, 2464774, 1824287, 2156074, 1105954, 827318, -354872,
--548145, -1396401, -1118302, -1494112, -841277, -1156957, -347355, -623844, 66035, -290984,
-325881, -119185, 389231, -160524, 290984, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+5484137, -584652, 3586835, 943819, 788127, -11341935, -4990752, -5599564, 4393752, -573915,
+-3737159, 4066260, 4121021, 308701, 3954591, -1634235, -178241, -200253, -2508261, -1250372,
+-5510980, 2859375, -8127689, 3409667, -4260608, 3475166, 6384469, 2966749, -1268626, -1785633,
+4705674, -734439, 175020, 4526896, -4861903, -109522, -1675574, -2743410, 543313, -644782,
+949188, 4638028, 7546795, -2384244, 89121, 6336151, 431107, 1687385, -2371359, -3506841,
+-568546, 1087701, -6007586, -1537598, 3063922, 431107, 1074279, 1875290, -906238, -1836635,
+-1813013, -2063732, 2253247, 1912871, -1151051, -3389803, -4250407, 2098092, -15569, -3461207,
+3623342, -780073, -297963, 583042, 983548, -1716376, 2144799, -2319819, -846645, 2897492,
+-2042794, 1167157, -3419868, -2552284, -1295470, -813359, -272730, 474057, -1414655, -1679869,
+-229244, -949188, 320512, -341450, -367757, -446140, 298500, 116501, -417149, -678068,
+-479963, -243203, -126702, -360777, -303869, -516470, 423054, -763967, -545461, 627602,
+-3748433, -1012539, 16106, -3524021, -3592740, -2132988, 8575976, -6018323, -2493229, -4197794,
+-7683697, 2879776, 1302986, 313533, 6572911, 6249715, 6236293, 2033130, -1180579, 981937,
+4698694, -1999307, 2020245, 2394981, -5567888, 7927973, 1524177, 2476586, 5840619, -2234994,
+-5848672, 409633, 3955128, -2779381, -1277753, -3710852, 3937411, -85899, -411780, -6460705,
+-289910, -771484, 3978750, 2052994, -3560528, 7101192, 2606508, 1490354, 2473901, -1139777,
+3964792, -1531693, 188979, -4928475, -5914170, 4751845, 3701725, 6576669, 634045, 1786170,
+-5086852, -7847442, -3866544, -2343442, -2296734, -3616899, -3134789, 1637993, -915365, 2402497,
+-2956548, -1114544, 1292785, 1484448, -891206, 4019553, 1212791, -2988760, 6039798, -2353105,
+1856500, 7640747, 1624571, 1062468, -2364916, 122943, -2596308, -3084860, -500364, 1771674,
+-34897, 242666, 95563, -824097, -267899, 93416, -760209, 1804960, 1148367, -651761,
+-162135, 68719, 472983, 270583, -1183800, -624381, -281320, 149250, 535260, -535797,
+-848793, 752156, -432718, 580894, -298500, -456340, -585726, -7383586, -6905234, 4051765,
+908386, 5669357, -8756365, -1221918, -3488587, 951335, 10400263, 5954436, -9117142, 3456912,
+852551, -3785477, -4235912, -5152887, -8396124, 309775, 993748, -3098819, 1478006, -1781875,
+309238, 2538326, 1942399, 5414343, -4740034, 8519068, -5200669, 4950487, 3908957, -3179887,
+2282775, 419833, 3525095, -1408749, 1836635, 3251827, 1072131, 511101, -1312113, 2535105,
+747324, -1124208, 6043019, -7909719, 533113, -4789426, 9520332, 3371013, -8332774, 3239479,
+10886131, -10238665, -4896800, 1238561, -854162, -3880503, 3235721, -1357210, 7243463, -6101001,
+-622233, -2015950, -437550, -367220, 6997576, -6504191, -2178085, -703301, -6739341, 3626026,
+2784213, 7252053, 2931852, 6174553, 5543192, 916976, -2267743, 1749125, -219043, -773631,
+-1697049, -158914, -2587718, -1025423, -604517, -3588982, 2254321, 188979, -2530273, -426276,
+-2057289, 185757, -116501, 1377074, -513249, -815507, 140123, -1159104, -71941, 1185948,
+405874, -268435, -843961, 3273839, -5071820, 622770, -3181497, 3349538, 1219771, -5153961,
+14828911, -9452686, 2974265, 16015933, -11334956, 5248450, -301721, 5213017, -1399623, -9735080,
+-2131915, 7970923, 7167764, 1946157, -80531, 4013647, 1974074, 103079, 3340411, 3326989,
+-2803003, 4249334, -1211718, 6723235, -5476620, -8471286, 1775432, -7403450, 2514167, 83752,
+-2127620, -2408940, -3383897, -5060545, 942745, 1704565, 148176, 1211181, 1424855, -3148211,
+-6489159, 5011153, 1101659, 766115, -353261, 7391102, 1462436, 3053185, 7842074, -4914517,
+1867774, 241055, 2334315, 5442798, 4279935, -7271380, -6349573, -1705102, -3649649, -910533,
+206695, -3181497, 1593433, -5838471, 228170, -5622649, 2681133, 2619930, -3261491, -4301947,
+410169, 2216740, 368830, -4961761, 624918, -2884071, 2029372, 1633698, 714575, -1014686,
+-1431835, 863825, -209917, -629750, -102005, -1362578, -1127429, -3449933, -901406, 2931852,
+1255741, -987843, -682900, 2008434, -811749, 520228, -1024887, -82678, -321586, -9127,
+-1297617, -928787, -551903, -472983, -529892, -633508, 5369, -464393, -862752, -761283,
+301185, 1420024, 461709, 4479651, -1802813, 4037806, -601832, 1913408, -2237678, 91805,
+-1402307, 1207960, -573378, -9445170, 7217693, 4306779, 11777337, -7800198, 4937602, -9603547,
+-1421634, 5535139, 6401112, -6801081, 2081985, -7847442, 759136, -9166534, 3129421, -6918119,
+-8140574, -7659538, 3935801, -6228240, 452582, -7269769, 1110249, 833224, -874026, -5377836,
+3438658, 4334696, 2895345, 1908039, -5337571, 2800856, -5607080, -2041183, 3747896, -92879,
+-614180, -1770600, -34360, 3469260, -4087198, -8456254, -1553704, 2327336, -1553168, -6325413,
+-5993627, -8980240, 2285460, -2741800, -8020852, 5656472, -5073430, -5374078, 10109279, -3800509,
+-1770063, 596464, -1609539, -3452080, 988916, -5660767, -2509872, -4797479, -3424163, -1721208,
+3142842, 7291781, 568546, 4294431, 564251, 3148211, 2527588, 5846524, -257161, -359167,
+810138, 2019708, -1050120, 35433, -409633, 4211753, 10201, 1917166, 503585, 627602,
+-576063, 763430, -2540473, 2745021, 251792, -171799, -2043868, -796716, -2825015, 1194538,
+-1355599, 788127, -224949, 2765959, -1282048, 357556, -2434173, -2334852, -16106, -1151051,
+907849, 1675037, 561030, 723702, -1136019, 242129, 7623567, -10997264, 1950989, 9698573,
+-3616899, 10619307, 2913599, 712965, -3098282, -7337415, -4887673, 12639552, -6790344, -6979,
+-2362769, 1037235, 7554848, 6863358, -4147328, 9891847, 9801115, -4569845, -2439005, 6042482,
+-5069135, -4360466, -330712, -6729677, -164819, -1938641, 867047, 11868605, 4020626, 707596,
+-5414343, -15622944, -1916092, 8894340, 2163590, -5805722, 4512937, 7247758, 6265284, 7655243,
+-12398497, 2590402, 609885, -6070400, 3345780, -5452461, 3956739, -3036542, 4907000, 11093364,
+14556181, 9271761, 4234301, -5936182, -1645509, -7101729, -7547868, -1493038, 8549669, 2200097,
+159988, 2112050, -8317741, 2275796, 1068373, 33823, -4191351, 2372433, 4602058, -4714264,
+-9063455, 20842940, 2717104, -3593277, 1320166, 2352568, 9487583, -1777580, 2644626, 3345780,
+4736275, -3132105, -1548336, -3389266, 1726577, -840740, 1900523, 1856500, -1164473, -1787780,
+3576634, 610959, 993211, -525060, 2190970, -3498251, -2531346, -1604170, -574989, 4205310,
+1567126, 2865817, 2144799, 2283849, 231391, 634581, -818191, -2388539, 2585570, 772557,
+1146219, -1607392, -521302, 49392, 1170379, 3338800, 915902, -5555004, -1760400, -3350611,
+-1491427, 2804077, -3757023, 16493748, -1769527, 4750771, 11575474, 1678259, -1907502, -7537668,
+4155381, -4008815, -5342940, -15381352, -7096360, 3252364, -982474, -2874407, -11359652, 4038343,
+6018323, -8696235, -4766340, -2248416, -9388799, 3796751, 498753, -4767951, -4169876, -1568737,
+-12634720, -4335233, 6025302, 10479720, -8015483, -9711995, -3011309, -470836, -8137353, -6453725,
+2335925, 4468377, -8901857, 17599702, -76236, 7212324, -4145180, 6780143, -4692252, 2105071,
+-12586939, -2529199, 4908074, -12340515, 3248069, -2725694, -6492917, -14030048, -475131, 7907572,
+-47245, -14809047, -2410014, 2778307, 5825587, 10986526, -4180077, 4951561, 12589086, 4320200,
+1396938, -5741298, -1262720, -3562675, 595390, -4260608, 826781, -8098698, -1242319, 6292664,
+1621350, 1258962, -3710852, -6277095, 3345780, -1128503, 3456375, -1308891, 308701, -787590,
+-1992328, -1650878, 2183991, 942208, -639950, -810675, -93952, -2435783, 977642, -2491618,
+-3308199, -1960116, 929860, 158914, -164283, -2362232, 1680406, -294742, -1404454, -3349001,
+-1236414, 204548, 256624, 1349157, 3371013, 1115081, 636192, 1773822, -699543, -257698,
+-1118302, 2757906, 4655745, -1405528, -5005785, 6060736, 898185, -8923331, -14388677, -11488501,
+-14887430, 12830678, -7856032, -1763621, 4023311, -13815836, -5934571, -9574556, -4467840, -2978023,
+6163815, -12094628, -6667400, 4009889, 4690105, 7162932, -258772, 350040, -2330557, 88584,
+-3021510, 1859184, -9839233, -5102958, -8672076, 6020471, 2782602, 4686346, 5783174, -11674795,
+-1004486, -1167694, 10559714, -3926674, 3216394, 5936719, -2355253, 6348499, -4254165, 7065758,
+9614821, -3725347, -837519, 8484171, -7336341, 11694122, -5134097, -18355616, 2700461, 9647570,
+-3819300, 1191853, -489626, 7421167, 9016747, -9233643, -4238059, 2267206, 6152004, -10878615,
+-8504035, -6571837, 13108777, -229244, -15422154, -3221762, -6524592, 5293547, 500364, 4017405,
+-5910412, 9503689, 210453, 1770600, 2525441, -8631811, -3158949, 730144, -1285806, -2115272,
+-2730526, 2518462, -2611877, -2275796, 1644436, 2856690, 1225676, -5043902, -664109, -1966021,
+-1700270, 2196876, 1680406, 4372814, -799401, -2042794, 1436667, -4737886, -779537, 31675,
+-3351148, 498216, 81604, -1122597, 381178, -5401458, -1213865, -590558, 396211, 763967,
+2072859, -227096, 2353642, 1527935, 1102733, 236223, -556198, -8592619, -3428458, 5845988,
+2214593, 8391829, 2928094, 4091493, -16499654, -6508486, 6497749, -4382478, -3075734, -5534066,
+1741072, 8596914, 2309619, 2034741, -11031623, -3765613, -1970853, 4093104, 9785546, -11833172,
+5627481, -9646497, -2505040, -8873402, 1196148, 1220308, -391379, 3696893, -8213588, -2388002,
+-7691750, -3191161, 205085, -358093, -9672266, 5585068, 6320581, -2325188, 7489349, 14597520,
+1567663, 11061151, 14250165, 1125818, 533650, 3432216, -2904472, 4713727, 1039382, -3086471,
+-4698694, 17826262, -1771137, 10427644, 4684736, -5226975, -6009733, -4217121, 5062156, -4039954,
+6554657, 15715285, 8039105, -2051384, 343061, -13118978, -8972187, -7987566, 12438762, 19418084,
+-8412230, -33823, -7774965, -1255204, 11947525, -3702799, -622233, -18646064, -2401424, -3356517,
+-1882269, 7146826, 605054, 1528472, 2265059, -3695283, 3081102, 1644436, 2758443, -2178622,
+3951907, -1786706, -317828, -4670240, -1010391, 4189741, -1408749, -52613, -695248, 4030827,
+-892816, -2793339, 1788854, 1836635, 1123134, 1465658, 1575716, -1470489, 518617, 2881386,
+4956393, 4281546, 2837363, 1563905, 420370, 464393, -2896419, -173409, 2034741, -1750199,
+2137820, -575526, 826244, 2738579, -1008244, 4908074, -399969, 11367168, 30846456, 13701483,
+-4393215, -897111, -5939940, 14479408, -14499810, -7958575, -22075058, -69793, 10625749, 13618268,
+2246805, -5150203, -13301514, -9423158, 9504226, -1780801, 15197205, 140660, -5105643, 7438347,
+2473364, 54224, -3990025, 10218801, -2032593, 8853538, -305480, -4536559, 18740552, -4333622,
+7502771, 18774912, 6369974, -595390, -9248675, -1522029, -14960445, -17144972, 3610994, 11293080,
+-2827162, 1747515, -19083614, -7002944, 10799695, 6131066, -5064840, 3815542, -5773510, -2530810,
+-8788577, -14309220, 716723, -3229816, -10399190, -16543677, -14593225, -4507032, -13416941, 6295349,
+-6093485, 2297271, 1560684, 92342, 164283, -1953136, -3125126, 8781061, 16913044, -11309723,
+1932735, -4639639, 6019934, -6226092, -403727, -4440996, -2244657, 15899432, 11263552, 2770254,
+-1914482, 357556, -6568079, 2419677, 6250788, -1016834, -5698348, -2972117, 5395016, -6506876,
+471373, 3063922, 2543695, -2155537, -2281702, 2604361, 2878702, -2105071, 3455838, 2284923,
+2843805, -111132, 3800509, -210990, 2354716, 1433982, 1330903, 1115081, -1001801, 4839892,
+-4683125, -463856, 861141, -1155346, -1286880, -1929514, 1932198, 397821, -4051765, -1260573,
+2435783, -2605435, -12668006, -14573361, 3869766, 5441187, 17471390, -14773077, 4806606, 4401268,
+-24303072, -1231045, 304406, -20509542, -10986526, -7313256, 5346698, -1723356, 1375463, -5849746,
+8745627, 13442174, 7277822, -2007897, -20576114, -9109626, -11115375, 4127464, 1427540, -9171366,
+-547071, 7062537, -5873368, 12259984, -10954314, -404801, -6315750, -20791936, 3701725, -8891656,
+-9777493, 7644505, 11613592, -12910135, 5140002, 15084462, -4776541, 6572374, 5371394, -3619584,
+2239289, -16888348, 25640954, 9960029, 6208375, 24256364, -29501056, -2288144, -3927211, 3086471,
+12293807, 12520367, 5015985, 5939940, 15736760, -1544578, -10384157, -18420040, 7296076, -7004018,
+874026, 4907000, -3482682, 7445326, 20116554, -12355010, 9477919, -6020471, -5517423, 15008226,
+1334124, 4640176, 14807973, 12002286, -5113696, -6169184, -12667469, -3306051, 260382, 6646999,
+7231651, -41339, 1869385, 954020, -53150, 1346472, 1824287, 486942, 4179540, -2040110,
+806380, 2803003, 1799054, 779537, -1568200, 3792456, 2723009, 532576, -1970853, -3127810,
+-7065758, 4302484, -66572, -710817, 2434710, -3547106, -189515, 2386928, 3579318, 4990752,
+3073586, 1341640, 1631014, -96100, 1772748, 3711389, 15887621, 18747532, 4647692, 11571179,
+-7553774, 5458367, 5258651, -30715996, 8653822, 9973451, 2057826, -9781251, -271657, -18961206,
+22273164, 13451838, -7062537, -7506529, -11145977, -5795522, 16099148, -16349867, -9417253, -2456185,
+-2782065, -3531000, 2298881, -10834592, -11099806, -6518687, -8563091, -2314451, -11123428, -1541356,
+-7483981, -24311662, -15561203, -6015102, -3913789, 3378529, 4003447, -151934, 657667, 7021735,
+3330747, 3586298, 17046726, 3554622, 5723581, 10650982, 22913650, 19616190, 980326, -7790534,
+-15127949, 13700409, -3431142, 37055904, 7429757, 16598438, -1870995, 2090039, -14790257, -613643,
+12808129, 7407745, 9694815, -11165841, -7420093, -14341970, -27216134, 15646566, -24026584, -2960843,
+31547072, 2073932, 12607340, 5999533, 9257265, 245887, -17124572, 16552804, -344134, -15029164,
+-13472239, 450435, 5162014, 11116449, 2932926, -13188771, 629213, -2657511, 2604361, -5225902,
+-4372277, 2273648, 2054605, -4128537, 335544, -1373316, -438624, -5425618, -2030983, -1774895,
+2429341, -1495186, -3347927, 4234301, -2714956, -1126355, -7663296, -8126078, -44023, 115427,
+-3387656, -2188823, 2572686, 1895154, -3440806, -5471789, -397284, -5686537, 3292093, -21721260,
+6244346, 8502962, -14958297, -11145977, -9127, 9306120, 21220360, -862752, -16783658, -16463147,
+-1117765, -9214315, 2560874, 3277060, -18712098, -15701327, -30420180, -8681740, -8995272, -20312510,
+-14165876, 97174, -9798968, -5769752, -5653788, -1446867, -20553030, -10664941, -12731357, -5949604,
+6010807, -17041894, 1039919, 14615774, 16866336, -3782256, 4428648, 10029822, -17193828, 9809168,
+-7592966, 15298137, -7550016, 1611150, -8117488, -1474248, 29644938, -5908802, 10994579, -21618182,
+-3881040, 224949, -21004538, 19602230, 471910, -6849936, 13625784, -5448703, 3302830, 27704150,
+-11167452, -14787572, 10077067, -2619930, -31124018, 12787191, -41171556, -21701396, 16128676, 13059385,
+2349347, 8922795, -231391, 34897, -31130996, -16329466, -7547868, 3077881, -17817134, 4574140,
+2150168, 7493644, -11734388, 943819, 8563628, 6985228, 4802311, 850940, 3901978, -9783399,
+-6716255, -6517613, -2183991, -1132798, -1180579, 8367133, -4451734, 4516695, 7802882, -3720516,
+2209761, -6173479, -5194226, -40802, 1792612, -5519570, 2243584, -6984691, 6065031, -2288681,
+-1569811, 541166, 5412733, -1532767, 1988033, -4825933, 4276714, 3728569, 10249939, 2750927,
+8368207, -8276939, -3154117, -9897215, -3158949, -5264556, -5113696, 41482404, 22677964, 60666,
+-21366926, 10994579, -22279070, -18077518, 3271691, 18443126, 36382132, -5699422, 18385682, -6551973,
+13047037, 22093848, 12323872, 14132053, 7548405, -4103305, -18072148, -18656264, -5668283, -17629230,
+-5207648, -3214246, -3986804, 14146012, -2416456, -36244692, 2118493, 8778913, 8370355, 21726092,
+-2248416, -43259448, 24609088, -19343996, 6330782, -4211216, 14558865, 21238614, -23608898, -1626182,
+-11798812, -20553030, 14894410, -10208600, -25348896, 9974525, 14800994, 24392194, 6450504, -3771518,
+2663954, 19975892, -16051903, 31518080, -9898826, -8747238, -2831994, 19217832, -19959250, 1867774,
+2440615, -55533392, -8235063, 17231408, -7994008, 2915746, 7722351, 4066797, -2719251, 4555887,
+19065360, 22797150, -18014704, 6537477, -13193066, -2215130, 22539988, -442382, -2333241, 871878,
+-1510218, -11639361, 3230889, 823023, -6804302, -17255568, 248034, -4089883, 5304822, -7944616,
+-7450695, -9352291, 7984344, 1887101, 4903779, 3973919, 353261, 2947958, -3809099, -7871065,
+12140262, -1163399, -5845988, -129923, -4205310, -2594160, -4858145, 681289, 1524713, -650151,
+3391414, 8891656, -297427, -2080912, -3568044, 872952, -4444218, -2470680, 5090610, -3787624,
+-3171833, -4649839, -11631308, -6454799, 1672890, 7646116, -6053757, -1717450, 23853712, 15663746,
+-44080860, -25212532, 30347702, 34966404, -18757196, -6487548, -49618148, -27577448, 7249368, -2357937,
+6698539, -26526792, -16470663, -18214420, 26911728, 39755292, -1854889, 10653666, -6407018, -3600793,
+-425202, 9044664, 17354352, 4092567, -6072547, -3418257, -3978214, -23925116, -13428752, -24323474,
+-3144990, 7368017, -10104984, 14820858, -10990284, -4261145, 23250806, -11355357, 13096966, 8933532,
+-4183298, -22448720, -16097001, -13433584, 4087735, 41620916, 7411503, 22321482, 26517128, 20581484,
+15390478, 13594645, -22971096, 423054, -3711389, 30770220, 14740328, 17941152, 32318018, -15972983,
+-21647172, 7831873, 27341762, -46374372, -779537, 3550864, 21561810, -37531572, -56298432, -10163503,
+15846819, 3804267, 6442988, 17528298, 1184337, -12639015, -18442590, 472983, 2596845, 3515968,
+17118130, 25147034, 12020540, 1730872, 147103, -423591, 2144799, 2393908, -6325413, 9178882,
+1225676, -8687108, -14958297, 1704565, -6338835, 3066070, 1705102, -1516124, 1021129, -6386617,
+6539088, -3506841, 4414690, -6859600, -4254165, -12106976, -11698417, 383863, 6278706, -5459977,
+12494060, 151398, 3781719, -3928285, 13354127, 919660, 6172405, -6758131, -3491272, -2290828,
+-2301029, -8439611, -1422171, 8752070, -15288473, 11725798, -427349, -11541651, -19924890, 7368554,
+-9633075, -19796042, 14252849, 26984206, 8452496, -10507637, 16241419, 27141508, 10201621, 5527086,
+2035815, -3119220, 12928925, -22842784, 1450088, -32816772, 17590576, -26501022, -2130841, 14142254,
+7942469, -15149423, 3266860, -17518098, 35849556, 4562329, 11680700, 18578418, 39534636, -16361678,
+12887049, -18951006, 6890738, 14127221, 31789200, 7422777, -6386080, 32448478, 4452808, -2345589,
+-18653042, 1176284, 20432770, -6961068, 19639274, -24173686, 37205692, 38470560, -46277200, -1274532,
+-2879776, 10053982, -7852811, -6146098, 19965156, -16887274, -49384608, 517544, 43971340, -34746824,
+17435956, -8096550, -4373351, -21204254, 48527760, -3224984, 8046085, 4364761, -32613298, 42152420,
+3314641, 37473588, -74335144, 6977175, -6987375, -22530324, -6021008, 12941810, -17315698, 11514270,
+-15611132, -10516764, -20548198, 25786984, -9974525, 1633161, -21919366, 803696, -16113644, -5638755,
+7443179, -11253888, 5146445, 528281, -14889041, 13247290, -6134287, 1746441, -6403796, 11997454,
+-9217537, 1726577, 783295, -3584150, 16059420, -9516037, -11373073, -6743099, -12743168, -17840220,
+-8945343, 1491427, 1003949, -12914967, -7311645, -8752606, -12396886, -9950902, 4131759, 2630668,
+-509491, -5440650, 31035434, 4013110, -24242406, 2714419, -49017924, -10862509, 2187212, -9186935,
+-39129836, -4051228, -25780004, -6087043, 23127326, 5675263, 30405148, 12975096, 11307575, 7434052,
+-10738492, 24843164, -12757663, -15569, 11355357, 5580773, -15348066, 12444131, 4735202, 29352344,
+11724187, -5018133, 17350594, -13795435, 23521388, 8368744, -26383448, -26696980, 13654775, 17667884,
+7016366, 3032247, -12938052, -17025250, 5019206, -16751983, -25820806, -7677254, -4559645, -23342610,
+-8980777, 8964670, -16325171, -26351772, 7249905, 9989557, 699543, -3096135, -1772211, -4354023,
+9297530, 45299020, 8985072, -1330366, -1933809, -15814070, -25979720, -11293617, 36958192, 40064528,
+20255066, 3926674, 36040680, 17561584, -8402030, -50293532, -38647728, -31525596, -60428580, -34974456,
+8332774, 49060336, -21872658, 16675211, -24430848, 8048232, -2165737, 16931834, -8034273, -2724620,
+-21808234, -12306692, -5435818, -19184546, 24483462, -3733937, -12989055, -5988258, 2405182, -13852343,
+9880572, 7482370, 15820512, 3772055, 4395899, -15566035, -18403934, -2018098, -13612362, -8422968,
+-15844671, -22606024, 1122060, -5831492, 1358283, 1742683, 17347910, 17498234, -6528351, -3355980,
+-7745437, 16908750, 11103564, 7414188, 2589329, -3317325, 9593346, -13188771, -5311264, -2057289,
+-15226733, -29378650, 15488189, -433792, -9466645, -9113384, -5435818, -4094178, 11003706, 21037824,
+-9100499, 27067958, -30996778, 25014964, -3333432, 33350958, -21721798, 19294066, -31953482, 27738510,
+-25861608, -10781442, 38331508, 8935679, 30749282, 44257492, 4351876, -3528853, -18639622, -1444720,
+27875412, 7098507, -10144176, -31065498, 2460480, 6164889, 14492830, 8997420, 12029667, 7650948,
+-18342732, -28918014, -12481175, 28027882, 10529649, 89391152, -28600188, -23873038, 28938952, 45893872,
+9418863, -776852, 11861089, 3043521, 14522895, -13482976, 5109401, 21457120, 23491324, 15828565,
+69159176, -8803072, -9168681, -4504884, 35582192, 21401822, -18354006, 18754512, -601295, 6120866,
+-15148350, 31771484, -31893354, 2214056, 48780092, -36066452, 104969000, -48281876, 50132468, 46167676,
+-45522360, -41430328, 46604692, 2018635, -27187142, -11419781, 25668336, -71017824, 10963441, -8351027,
+-45880452, 29927332, -35953172, 2842195, 2537789, -14421963, -35481800, 9599789, -2854006, -1580548,
+6700149, -7295002, -11773579, 6346351, 14733885, -5623186, 2159295, 11536282, -10908143, 16052440,
+12273406, -25566330, 3573950, -14359149, 6423661, -1012002, 1982664, -13081397, 5338645, 3427384,
+-171262, -6560563, 19665582, 4465156, -826244, 18877456, -13451838, -12186970, 1913945, 8150774,
+1932198, 9081708, 4581657, -26317948, -13750875, 6788733, -15577310, 22651658, -10292889, -12859132,
+-617402, -8904541, 17933636, 22846004, -53821844, -23084912, 33314450, -69844224, -42980276, -29282014,
+48949204, 103781976, 28929826, -81630688, -18192408, -83393232, -43268576, 67782104, 40773200, 63720136,
+35303020, -48390324, -76418744, -58506044, -13807783, 34470872, 39504036, 23543936, 13463649, -20357608,
+-83552680, -100847440, -21598316, 77022720, 137754096, 93148176, -17364016, -64644628, -92390656, -68816112,
+-55351392, -73014, 22413286, 74995496, 80412528, -43557412, -26968100, -100986496, -93543848, -33860448,
+9463960, 97219272, 143976432, 63656248, -42221676, -150803824, -111461920, -82071456, 39791260, 85651848,
+53759032, 33743412, 29028610, -90038080, -16301012, -51408076, 19268834, -7254737, 53455700, 83532816,
+66653596, -78270408, -157379952, -118611424, 13363254, 91975648, -2058900, 127596496, 5535139, -33045478,
+-38216084, -28374164, 584116, 92143688, 79881560, 14474040, -31492310, -11494943, -5621039, 48283484,
+53680112, 6255620, 2550137, -8498667, -1190243, -10434086, -12810277, -8768713, -4514548, 18378166,
+29136522, 23500988, -34645892, -39706972, -15007689, -16558710, -15432891, 35864052, 29676614, 37722160,
+11368242, -16427713, -28223304, -55225764, -34846144, 22928146, 48846664, 73462192, 50680076, 4028143,
+-113313584, -100014216, -33769716, 40834940, 64117420, 85204096, 64638720, -5220533, -64335388, -95354176,
+-91603064, -16945794, 100217696, 103283760, 52864068, -25128244, -68827384, -48386564, -32146220, 2691334,
+20949240, 27271968, 24539296, 14758044, 1286880, -15699716, -19223200, -20015084, -15890842, -18526878,
+36842768, 11479911, -29845190, -28161026, 86973, -45373108, -5610838, 6722161, 5189931, -3945464,
+1133335, -15258945, -1903207, -1793149, 7828652, -5265093, 20913806, -5552856, -4026532, -5840619,
+-6567542, 13037373, 3730716, -6289980, 20255602, 1281511, -36009004, -17981418, 9919227, 17621714,
+-5997385, 2146947, 24676734, -608812, 3368865, -20185810, -9015136, 6214281, -4386772, -4486630,
+-2678449, 16324634, 5912560, -6393596, -19314468, -7693897, -1131187, -17617956, 1688459, -20121922,
+-13463112, -9365713, -17878338, 28032178, -5048197, -12687870, 11862700, -197032, -27551678, -1614908,
+27531278, 22321482, -12785044, 17282412, 2914135, 16488379, -18399104, -27151172, 10419054, 11964168,
+10557030, 9130027, -10238665, 10078141, -20236812, 13707925, -27609124, -24322936, 17980344, -14235132,
+12277164, 16813724, 1243930, -13016972, 4205847, 4747013, -1074279, -1076426, -420370, 10948409,
+-9172976, 7105487, -9586367, 12833899, -11221139, -6147709, 4759361, -3906810, -377420, 5061082,
+1258425, 3375308, 9937481, -7920994, -4655208, 5654325, 3450469, 11294690, -9146133, 3121904,
+-1063541, -7101192, -7062537, 2881923, 1870995, -7027640, -10358924, 2974265, 194347, -1983201,
+6706592, -9990094, 11587822, 3415036, -9897215, -11140608, 9350144, -15643345, 10761041, -1795833,
+7481296, -843961, 2627983, 13962939, -22236656, 44463648, 67676872, -8779450, -25109990, -21449604,
+62396212, 28306518, 60387240, 32675038, 45634, -27979028, -6304475, 15506979, 28346784, 13669807,
+-13183939, -3150359, 13529147, 20078972, 2442763, 4577899, -14013941, 2643552, -6781217, 9203578,
+10187662, 26538602, 22749904, -12006044, 1951526, -13487271, 3513820, 12163347, 18000208, 1431298,
+-8600672, 64961, -15520401, 13031468, -3595425, 5433671, 12055973, 349503, 16066936, -7824894,
+-4432406, -3670050, -16567299, -9819906, -25258166, -4681515, -28798292, 2064269, -9917079, 23782308,
+3506304, 7071664, -22268332, 9501005, 148176, -9807558, 16305843, -8708046, -4591320, 4147328,
+10781442, -1205812, -5921150, 36781028, 11931956, 8577587, 13774497, -9839233, -491774, -3218541,
+19178640, 26750130, 25608742, -15184320, -16706886, -2183454, -6644315, 6796786, 17262010, 18029198,
+794569, 10148471, -1202054, -2644089, 5872831, 11533598, -1087701, 9084393, -7521025, 1724966,
+135828, 3234110, -2579665, 10162429, 5850819, -964220, -2811593, 3146601, 1784022, 11043435,
+619549, -6371047, -7025493, -3937411, 3087545, 3826816, 7016903, -8411157, 1189169, -2231236,
+5639292, -4074850, 7955890, -2586107, 2973191, -4367982, -3711926, 2628520, -6932077, 142808,
+7682623, 2030983, -3160559, 824097, -373125, -25181930, -55021752, -7299297, 72427104, 111955304,
+93776312, 74310448, -5114769, 8835285, -54608900, -61691836, -100874824, -57897232, -63571960, -19874424,
+7873749, 43988520, 31128312, 95633888, 83060376, 27586038, 5703180, -14711874, -32563368, -51214264,
+-18898930, -52499532, -14119705, -25489020, -16658031, -12164958, 2673080, 1013612, 17744120, 25927644,
+39144868, 42632384, 50954956, 44176960, -5402532, 4395899, -641561, 8386998, -25370372, 10321343,
+-27109834, -67441184, -33259152, -50453516, -85051624, -24799678, -7480223, -34320008, 11566347, 26228292,
+59229208, 70016016, 103106056, 65271692, 53030500, 52897892, 32757178, -10123238, 5277441, -51964272,
+-44936096, -75303664, -89720256, -103415296, -75458816, -57983132, -6136972, -2714956, 8129300, 30345554,
+51123532, 92331600, 91140280, 90912112, 72744936, 31324270, 46906412, 7464653, -23668492, -35436700,
+-84074520, -76296336, -67724120, -58253180, -46796888, -28164784, -17231408, -5771363, 4124779, 28372018,
+33469606, 44299368, 36536748, 52494164, 47364900, 31140124, 35687420, 24128590, -6616397, -19338090,
+-22496502, -53373020, -46432356, -41659036, -31359166, -16965120, -719407, -1985349, 13578539, 21104396,
+16284369, 19581830, 12377022, 3981972, -493384, 5719823, 1248225, -6490233, 6966437, 8556112,
+516470, 4623533, -1365800, -1854352, 707596, 3210488, -208306, -7208566, -9728638, -9415642,
+-11026255, -7376607, -2294050, -2502892, 3114388, 1289564, 856309, 3709241, 4181688, 3405909,
+4519916, 7180112, 6049462, 3466039, 4128537, 1422171, -1560684, -492311, -1960653, -2914135,
+-1450625, -2626909, -2525441, -3056406, -3860639, -4205847, -4065187, -2284923, 1074, 207769,
+2246268, 2316598, 1701881, 1283658, 2190433, 2204392, 3651259, 2461016, 3070902, 1580011,
+-697932, -1678795, -667867, -2088965, -296890, -114354, -942208, -558883, -700080, -2057289,
+-1542967, -1327145, -543850, -661962, -85362, -142271, 152471, -636192, -678068, -1054951,
+811212, 1258425, 3054259, 3034395, 3484829, 2530273, 1742146, 650688, 0, -952946,
+-1112933, -2601140, -2313377, -2705830, -2338610, -2667175, -1591822, -1093606, 1611, 78383,
+1122597, 906775, 2121714, 2124935, 2464774, 1824287, 2156074, 1105954, 827318, -354872,
+-548145, -1396401, -1118302, -1494112, -841277, -1156957, -347355, -623844, 66035, -290984,
+325881, -119185, 389231, -160524, 290984, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
{
7448547,
-2763275, -3663607, -679142, 2626909, -504122, 2792266, -6819871, -4780299, -1229971, -5654862,
-2344515, -1221918, -674847, -3804804, -1764158, 3631932, 3534221, -1354525, -1135482, -2328409,
--5517959, 6151467, 3585761, 205622, 598074, -286152, 134218, 4963909, -2534568, 950798,
--7904888, -6397891, -1655710, 632971, -5520644, -969589, 1906966, 519691, 57982, -2702608,
--2156074, 5190468, -2421288, -2145336, -762357, -677531, 2226941, -1140851, -3406983, -71404,
-2916283, -4160750, 144418, -4459787, 279710, -3253438, 4967667, -237297, -5310727, -720481,
--548145, 675921, -7566659, -863825, 591632, -4988068, 2282775, 155156, -5836324, 2686502,
-3534221, -3049964, -3587372, -6330782, 3307125, 1974074, 5885179, 2965138, -911607, 1195075,
--852551, 1838783, 1850594, 4127464, 1009317, -1735167, -92879, 522375, -162672, 2376728,
-576599, -760746, -1162326, 1178432, 879931, 1792075, 847182, 722628, 1021665, 993211,
-366683, 631897, -135291, -258772, 349503, 290447, 421444, -204548, 501974, -668404,
--18254, -5511517, 2505040, -6866042, -1879585, -986232, -3431679, 3262028, 7671349, -3158949,
--998580, 329639, -3144453, 2167348, -458488, -2604898, -4352413, -2355253, 6918119, 6630893,
-3761855, 7707856, 4571993, 2430415, 7304129, -4562866, 1618129, 3083787, -131533, 1222992,
--2153926, 1363652, -10076530, 181462, -576599, 3608846, -2275259, -1316944, -695785, 2755759,
--3186329, -550830, 914828, 1929514, 1919314, -572841, -3419868, 612033, 1203665, 2434173,
-1869385, 2836289, -3216394, -1949915, -586263, -5750961, -673236, 1479079, 4912906, 5444945,
--750009, 2985002, 2253247, -448824, 2037425, 2387465, 3544959, -1461363, -47245, -2697240,
-459025, -2330020, 1575179, -3430605, -3202972, 1880122, -20938, -6373195, -594316, -4784057,
--1287953, -717260, -802085, -6337761, 605590, 2176475, -1858110, -1841467, 1085553, 748935,
-455267, -1293322, -3383897, -222265, -1482838, 1236951, 46171, 41339, -379031, -1448478,
--1553168, -1807644, 124554, -811749, 762357, -1153199, 435402, 212064, -1004486, -75162,
--1118839, -457951, 64961, -48855, -995359, -296353, -169114, -6964290, -6482717, 2384244,
--724239, 5379447, 5493263, 409633, 172336, 10443213, -2793876, -286689, 8846559, 328028,
--5050345, -7491497, 5451387, -2216203, 74625, -4651450, 1473174, -3331284, 3716757, 16336982,
--5934571, -4840428, -5861557, -6417218, 1209033, -5237713, -12855911, -352724, 1335198, 4832,
--5085778, -1104880, 4232691, -5292474, -3064459, 7626788, 2562485, -1970853, -1780264, 4904316,
--2399813, 3505767, 3266860, -7003481, -4587562, -4154307, 4613869, -3559991, -2061584, -1942399,
--2279554, -381715, -4663261, 24696, -1375463, 1151051, -605054, -10241350, 4791036, -5730560,
-4559645, 833761, -8360154, 1699196, 5665599, 1726040, 9403831, -3963718, 558883, 1089311,
-2234994, 3346317, -3646427, 1396938, 1279363, -5441187, 7502234, 536334, -1013612, 3167002,
--1027034, 1420560, -1319092, -2838974, -154082, -1826435, 2493229, -632971, 508954, 2913599,
-1050656, 1112933, -602369, 1589138, 325881, -420370, 1089848, 2123325, -1484985, 145492,
--1568737, 1017370, -479963, 3149285, -4392678, 2094870, 2154463, -2287607, 1014686, -1100585,
--9439801, 2950643, 8773544, 7397545, 8225399, 1506460, -1826435, -7041599, -3764539, -3279208,
--2719788, 7396471, 10153840, 789737, -732292, 7324530, -11829951, 285615, -984621, -158914,
--3875671, -3914326, 4267587, 5356361, 144418, -1129040, 2093260, -5686000, -4367445, 4438849,
--4810900, 9201431, 8273181, 1430761, 5085242, 4358318, 850940, -3708168, 1275605, -164819,
--6491306, 6311992, -581431, 2970507, 5079873, -6036577, -2381559, -7180649, -1655710, 1682554,
-6745246, -6918656, -2785286, 5102421, -1093069, -4417374, 7401303, -6158446, -13022341, 2216203,
--7346542, -3245385, 3511673, -3117610, 600222, 798864, -3198677, 5571647, -5106179, -5740761,
--6952479, -745177, -3031710, 477815, 1811939, -4213900, 1090922, 1233729, 283468, -1999307,
-1090922, 922881, 2866891, 453119, -962073, -1969779, -1309965, -865973, -550293, -686658,
--1264868, 390842, 532039, 854162, 230318, -372588, -1019518, -379568, 1407139, -1456531,
--1569274, -442919, -76236, -122407, 1067836, 1317481, 1187022, -749472, 394600, 275415,
-447750, 257161, -446677, 2813741, -1386738, 153008, -11738682, 2488397, 11090679, 875100,
-1744831, 3347390, 10387378, 1404991, -9972377, 11057930, 4874788, 3981972, 6750615, 5832029,
-53687, -2091649, 6365679, 4844186, 1668058, -4596152, 5535139, 2583423, 8191577, 9532143,
-3636227, -2378338, 219043, -92879, 3981972, 12103218, 7204271, -6754373, 11734924, 445603,
--1449015, 1525787, -8660265, 9592273, -1287953, 146566, -1156957, 2425046, -1308891, 4938139,
--6991133, 9796820, 8367670, -344134, -1578401, -5495948, -10427644, -3605088, 4115116, -2457795,
--3924526, 5488432, 6461779, -4426501, -3932043, -13391171, -4656282, -1690607, -676457, -14982993,
-7581691, 795643, -8928700, -7357279, 2422362, -3513820, 875100, -2254858, 444529, -3979287,
--904091, -3556233, 2496450, 4941360, -1451699, 3746285, 408022, -1632088, 4425427, 1503239,
-178778, 3627637, -474594, -1738925, -2367601, -2673080, -2779381, -2653753, -3242700, -2394444,
-108448, -1352378, -3050501, -1546725, 242666, -708133, -1174674, 570157, 1150514, 512712,
--1432372, -2025614, -2488397, 183073, -2366527, 2040646, -1334124, -1404991, -1320703, -39728,
--966905, 122943, 493384, 936840, -1159104, 1153736, 5376762, -6827925, -192200, 202400,
-120259, 11372000, 6045167, 29528, 13877576, 6600828, 12514998, 3142842, 4144107, 13624710,
--5475547, -8879308, -5827197, 12744242, 2955474, -7006166, 9496710, -2520609, -5756867, 8720931,
-20296942, -5160940, 893890, 3374234, 3774740, -5205501, 542777, 11355357, 1075889, 13937169,
--3143379, 14956687, 10377715, 3659849, 8679055, 5679021, -5418101, 3791383, -1488206, -1226750,
-1289564, 1102733, -1090385, 4010963, 2586107, 9687836, 6339909, -7934415, 2673080, 3700114,
--6049999, 437550, -14099304, -18023294, 7122667, -4558034, -11957189, -2460480, -6495065, 7874823,
-1587527, -3602404, -9056475, 7068443, -6587943, 4338454, -7377680, 1134408, -3044058, 11036992,
-1922535, -4219269, 4101157, -9294309, 8397198, 1447404, -8169565, 424665, -956167, -2254321,
--1090922, 1198833, 2253247, -2291365, 3797288, -823023, -1671279, -1737851, -1514513, -3422552,
--411780, -1191853, -3489661, -1204202, 1074816, -2048699, 2013803, 362925, -1330366, 599148,
--2369748, -389231, -1697049, -170725, -208843, 126165, 961536, 1359894, 1355062, 84289,
-615254, -61740, 587874, -1096827, 811212, -770947, 543850, -8061654, 1202054, 181462,
-2239289, -4967130, 5602785, 5897527, -515396, -4156992, -13776644, -12056510, -9041443, 4148939,
-1377611, 2089502, -11271605, 7102266, 5235565, 8869107, -9644886, 9150965, 7266011, -5742372,
--4526359, -2964064, 9578851, 6391448, -4022237, 809601, 14425185, 7117298, 3821984, 8156680,
-5823976, 2101313, -4599910, 944893, 789737, -2139968, -5122286, 12569759, 6060199, -11942693,
-8118562, 7818451, 8041790, 6075231, 1802813, -7492034, 355945, -1108102, 11202885, 1344862,
-5080947, 9927280, -1669669, -11100880, 2571075, 5784247, 11317239, -15037217, -8276939, 3962107,
-290447, 1251446, -8699993, -2307471, -8432631, -1315334, 4205310, -2943126, -4551592, -5820218,
-2549063, -1537061, -2710661, -7168301, 393526, -9555228, -40802, -1040993, -4643934, -5440113,
-6189048, -2209761, -1375463, -3138011, -5675800, 1928977, 2933463, 1811939, 2324651, 1462973,
--3077881, -1873143, -846109, -919660, -2886218, -5790690, -2382096, -274878, -1792612, -300648,
--2905009, 130997, -1518271, -1291175, -2078227, -2610803, -1174137, 2340757, -1665374, -999654,
-496606, 864362, 777926, -1344862, 2005213, 2683818, 2972117, -928250, -52076, -200790,
-466541, 351114, 5240934, 730144, -9293772, 9460739, 6007586, -2776160, 3697967, 5713380,
--6300180, -2077690, 24055038, -752156, 9354976, 6609955, -20159502, -10661719, -1177358, -814970,
--280247, 11454678, 2519535, -5531381, 11761231, 7281580, -1524177, -1912334, 3722126, -1896765,
--4219806, -8940511, -10671920, 5901822, -2377265, -4984310, -566936, -16531866, -3125126, 1112397,
-9086540, -10918881, -3211562, 1433445, 687195, 2401961, 767725, 11688753, -13651017, -4515621,
-2979097, -430034, -8075076, -1683627, 10543071, 9114994, 7828115, -2163053, -13594645, -6176163,
-4857071, -1538135, 9052717, -527744, -222265, -6752763, -4231617, 7945153, -9761387, 6652905,
-5156645, -7007776, -3520800, -1632625, 1081795, -7547868, 3630858, 2606508, -3744138, -1162326,
--10330470, 3721589, 7923678, 11373610, 962073, 3049427, 5359583, 1660005, -9028558, 6163278,
--2190970, 1009317, -6979, -2899103, -3134789, -1675574, 4152697, 735513, 3464965, -393526,
-541166, -5012764, -1737314, -2312303, 3745212, -395137, -1660005, 2601677, -1956895, 2034741,
--1257889, 321586, -4168266, 953483, -998043, -875636, -2686502, 933082, -455267, -2353105,
--4309463, -977105, 388695, -1741609, 1694902, -470836, -2839510, -18292802, -1086627, 2455111,
-12315819, 1483911, -460098, 7374459, -5337571, 16050830, -16035797, -1592359, -3405372, 2640868,
--747324, -1367410, 4166655, -3081102, -5429913, -3707631, -3195993, -9707163, -1493038, 6796249,
--1542967, -4350265, 10237055, -223338, 12306155, -12074227, -6849399, 15125801, -1517734, -995359,
-933082, -9637907, -1083406, -12015708, 3525631, -14409615, -334471, 10577968, -3452080, 7182259,
-9576703, 5470178, 7545184, -9776419, 9685688, 989990, -25243134, -4332549, 3701188, -2150705,
--2787971, -10921028, 8566312, -9322763, -1793686, -10562398, -9804873, -15299210, 13585518, 3758,
-15830176, -7968238, 11935714, 15705622, -10364830, 12778601, -15823196, -13269838, -14323179, -5086315,
--10089415, 3141232, 4779225, -656593, -1853815, -184147, -11329587, 785442, 137976, 6447283,
-2601677, 2461016, 4670240, 2530273, -2458332, -205622, -4610648, -2859911, 128312, 1778653,
-86436, 2023467, -1512902, 2182380, -691490, 1101659, -7028177, 315143, 2685428, 1928977,
-3911105, -2337536, -3102577, -4239133, -98784, -469225, -3292629, -3702262, 368293, -701153,
-597537, -100395, -1053878, 1743757, 5592585, -1497333, -1318018, -838056, -1539209, 4902169,
-188979, 474057, -1755031, 2855080, -3279745, -766115, 2157147, 11860015, 20163798, 2813204,
--5279589, -10926397, 6819335, 18451716, 245350, 5242545, 1026497, 7324530, 5167383, 5606543,
-10160282, -12228309, -896574, -4582730, 15972983, 11742441, -510564, 18250390, 9746355, 1582159,
--17153562, -8596377, -13063680, -6127308, 1401233, 4898410, -4642860, 651224, 18687940, -3531537,
-83215, 912144, 19200652, -11731703, -4641786, -4798552, -1810329, -11477226, 13247827, 850940,
-8908299, -13758928, 1938641, -1523640, -8107825, -3278671, -15081778, 4726612, 355945, 3165391,
--1792075, -943282, -17518098, -6000606, 6940667, 11157788, -3173444, 2905009, 23451596, -1537598,
-1426466, 4276714, 10611254, -9925133, 2345589, 11831561, -6953552, 8597451, 2600066, 8961986,
--11858942, -6084358, 1694902, 2721399, 6121939, 6834367, 6630356, -4505958, 1976759, 4030827,
-8007430, 12341589, 5804649, -5881958, -2653753, -4632122, 2075543, 2595234, 5465883, 4879083,
-3040300, 5156108, -5485747, -1133335, -5595806, 4877472, -6422050, 6580427, 4831838, -4953708,
-3007551, -614717, -2925947, 721555, 1086627, -1788854, 1596117, 8178155, -160524, -25233,
--4942434, 2570001, -127775, -171262, -4476430, 4682588, -3792456, 1459752, 2121177, 3712999,
--311922, -1777043, -10919417, -16663936, 4631049, -1799054, -16804596, 4591857, 1696512, 15220827,
-13477071, -12516072, -14992120, 3337190, -11447162, -6053220, 474057, 22676890, 323733, -2918430,
--20296404, -10198400, -1756105, -15174119, -23003844, 15742129, -5932961, -7304129, -1324997, 17072496,
--5357972, 1828046, -3434363, -3482682, -9947681, -5352066, 1667521, -24077586, -15457050, -4493610,
--8773008, -8191577, -2813204, -9483825, 8164733, 3683471, 2614561, -5808944, 4128001, -34745212,
-32245540, 18866180, -3274913, -4466229, 18137110, 1025960, -10863583, -15526844, -1976222, -5495411,
--6445672, -9373229, -9509594, 11792370, 11063836, -5096516, 24317032, -13610751, -11124502, -10112500,
-48318, 7861938, -28508920, 8334384, -9024800, 14803142, -16161962, 6991133, -1480153, -5564130,
-11133629, -21086678, 19710142, 1020055, -279710, -4550518, 565325, -396748, -9980967, 1846836,
--2775086, 5091147, 6618545, -6206228, 3015604, 4120484, 9293235, 214212, -3063386, -644245,
--857920, -3829500, 2700998, -1576790, -2262911, 2249489, -3731790, -1310502, 867583, 2543695,
-3157875, -7583839, -5739150, -5078799, 797790, 2901251, -49392, 1860258, 1684164, 4833986,
-2548526, -4201015, 3696893, 585726, -4687957, 16515223, 1363652, 38507604, 12546136, -780610,
-1656784, -14899778, -19300510, 24050744, -7122130, 2726767, 31932008, -8319889, -1539746, -6830609,
-24902220, 4789426, -10290742, 14699526, -5342403, 21835076, 11465415, 5440113, 3238405, -2418067,
--8354785, -2724620, -2263448, -23407034, -5876052, -3769908, 12954695, -7248294, 2447595, 4308389,
--16765405, -24981678, -885837, 21575768, -1434519, 19168440, -3313031, -26779658, -10365367, 1225139,
-6077916, 4852776, -21780316, 192200, -6229850, 15832323, -16160351, 20013474, 29590714, 19193136,
--6012954, 3588982, 11943230, -4243428, 23188528, 26836030, 23661512, 7744900, 25944824, -868657,
--10438381, 3369939, -13551159, -17103096, 9355513, -7328288, 21205864, 10973105, 5632850, -7256884,
--26086020, -23637352, 16618839, -10450729, -21105470, 14125611, 28168544, 16954384, -9016747, 13470628,
-8266739, -2894808, -6641630, 8011725, -9997073, -3004867, -1060857, -6860674, 927176, -1449552,
-5810017, 3551938, -1331440, -9137543, 5135171, 4707821, 3228205, -1938104, 313533, -8530879,
-707059, -34360, 2241973, 2071248, 237297, 5170067, -1768990, 7134478, 8000987, 2131378,
-6500433, 660888, -5117454, -12102681, 2770791, 369904, 2636036, -2009508, -8722005, -19463182,
-11388643, 14221710, -220654, 6945499, 4683662, 6868190, 5716065, 2596308, -1562294, 3331821,
--4099546, 7358353, -13241384, -36883032, -14809047, 20147154, 1131724, -6060736, -12374875, -124554,
-16938814, 21629992, 4570919, -13372381, -2405182, 17284560, -21060372, 1935957, -2685965, 15454366,
-17641042, -14278619, 26798986, 5139465, 981937, 37893960, 91805, -11990475, 13194676, -6422587,
-1788317, -8195335, 2706366, 25145960, 2789045, 32053878, 13438416, -28158342, -30854508, -6810208,
-7847979, 17067126, -23968064, -8529805, -3598646, 28829432, 26342646, -22807886, -1045288, -13966160,
-8573828, -4902169, 30120068, 266288, -6847252, 19755238, -4239670, -23658290, -12068321, -3997004,
-24226836, -21809844, 12903692, 37806988, 17759690, 25321516, -7043210, 10196789, -7101729, -15932181,
--15389942, 7793755, -11017128, -903017, -4120484, 6747931, -437013, 15234249, -3731253, -7287486,
--2796561, -3285650, 3508988, -2646237, 5645735, -10780368, 7512435, -7203197, -3503620, 1968706,
--3097745, -3512210, 4609037, -4863514, -2096481, -1603097, -4177393, -13232794, -7684770, -1494649,
--1882269, -4078072, -5463199, -1438277, 3498788, -2510409, 1896765, -2251637, -515396, 2698850,
--10387915, 850404, -1817845, -7805566, -711354, -18296024, 13734769, 19252190, 16775069, -28921772,
--13222594, 17627620, 54956792, 2926483, 12225088, -16229071, 5294084, -1166084, -2200097, -15263777,
-4859219, -5614596, 26549878, 20393578, -27031450, -12512850, 29294362, 14315663, 10747619, 2697240,
-15982647, 17856864, 6147709, 10526965, 10385768, -13593035, 2281702, -13319230, -5473399, 3194382,
--2214056, 1832340, -10843719, -10388989, 8083666, -2425583, 11023034, 8069707, -24990804, 18557480,
-4103841, 14872935, -16765942, 9449465, 15694347, -12265890, -19195282, -20006494, -21294984, -21984864,
--17595408, 6102075, 32301912, 8148090, 10175851, 14840186, 1381369, -589484, -12156368, 21115670,
--26844082, -54802708, 18988588, -12737799, 2689187, -46530600, 11738682, 14436996, 2837900, 8991514,
-8102456, -7078106, -11510512, -18561774, 6127845, 3871913, -13677323, 10031970, -5010616, -23859080,
--12609487, -446140, -3928821, 2331630, 1904818, 6857989, 3580392, 1110786, -155156, 5413270,
--3120831, -7718593, -13125420, -8216810, -8376797, -3171297, -4491462, 4806069, 7892003, 5524402,
--10402948, -1035087, -4207458, -81068, 6459631, 1723893, -9163313, -17668422, -1205812, 586263,
-1751810, -6393059, -2347200, -6677064, -1030255, -8679055, -8679592, 5656472, -8475044, 3464965,
-1769527, -4685273, -1493038, 5407901, -4751308, 1971927, -6474663, 13002477, 9284646, 12419435,
--17715130, -9142912, -2535641, 11353209, -23627152, 39261368, 18585934, -3175055, 21344914, 12883291,
-20337208, -10700374, -13785234, -13316546, 24642374, 8792872, 4400731, 22295712, -19567334, -63136020,
--4270271, 4231617, 7449621, -35537096, 27484570, 20043002, -38237020, -29375966, 874563, 15736223,
-1268089, 8939974, 20167018, -5364951, 12495670, -18439368, -21182778, -16834662, -22003118, -34149284,
-9443559, 3534758, -22996866, 30260192, 11693048, -7401303, -7286949, -17873506, -13453448, -31140124,
--16982838, 11059004, 27550604, -10537702, 2697240, 11347304, -24575266, 17661442, 23864448, 3507378,
--6209449, 20434918, 5528697, 2276333, -14740865, -17183628, -1331977, 30554398, -9481140, -28264642,
--570157, -36009544, -37541772, -39069172, -18787798, -20638928, -13223667, 16728898, -2430415, 15029701,
--3190087, -5043902, -14192183, -3862249, -4232691, 8032663, -6276558, -9101036, -1855963, -3622805,
-1255741, -13244069, 2421288, -6156836, -5337034, 6864432, -6372121, -2203318, 2211908, -4792110,
-10185515, -6612102, 1471026, 16514686, 1978369, 9592273, -3776887, -5973763, 16802986, 2387465,
--8988293, 181462, 117575, 1158031, 2342905, -4944581, 10485089, 471910, -839666, -5267241,
-945967, -5352603, -13828721, -23897734, -12525735, -12841415, 15557982, 30622044, 11304354, -13973139,
--29535416, 31671088, 17047262, -15290620, -8242579, -8165270, 1771674, 7444789, -9768366, 16449725,
-15301895, 843424, -10301479, -9769440, -9197672, -1196148, 5939403, -4646081, -10183904, -24215026,
-7435662, 21247740, -12238509, 18780282, 548145, 12593918, -10577968, 14003741, 40680856, -15294915,
-17732310, 35327716, 6100464, -6235219, -9863392, 10210211, 717260, 18000744, -13861470, 48479444,
--15076946, -32647658, 7425999, -14913200, 38343320, 12521440, -12080669, 2132988, -23244364, -31863288,
-38920992, 4375498, -10580652, 38442104, -20045686, 4928475, -11366094, 22232362, -28586228, -32078574,
--22923852, 6984691, 13639742, 25458418, 10810433, 26907434, 42249056, -5344550, 8400419, -5730560,
-5223754, -1494112, 1571958, -31292594, 1020592, -43162272, -14507863, -8640937, 7459822, -1623498,
-9256728, -3585224, -13032005, -13699872, -3272228, -9127879, -10097468, -17343078, -196495, -1998234,
-12824235, 5345087, -10769094, 9429601, 4300336, 7735236, 10292889, -13937706, 3605088, -5931350,
--2834142, 13499082, -4828617, 6597070, 9035537, -5808407, -15154255, -7869991, 5196374, -24809878,
--7920457, 270583, -3732864, -5837398, 10815265, -11895986, -13093208, 8672613, 14623827, -7157563,
-12163347, -8581882, 29442000, -4103305, 549219, 35958540, 3554086, -19211926, -22982906, -19735912,
-36271000, -24326158, 14186814, 17411798, -12105902, 3740917, -20474110, -4370666, 15991774, -14409615,
-11446625, -4728759, -25649008, -55358372, -5322538, 50044424, 20551956, 5224828, -10226854, -14917495,
--3065533, -19614042, 6053220, -27694486, 32926294, 2529736, 3695819, 2790655, -11538967, -33433636,
--13127031, 26941792, -22280680, -5585068, -15516643, 12053826, -11209328, 37245420, -6325413, 7706782,
--13893145, -34710316, 7368554, -26499412, -6307697, -2311229, -48979808, -41021232, -39126616, 12895102,
--7493644, -20995410, -14003204, -13431436, -12735115, -18744848, -12994960, -3253975, -44029320, 12200391,
-4529043, 16100222, -10045392, 37945500, -4340065, 7311108, -13544716, -5242545, 20080046, -40531068,
-16818556, 26535382, -27645630, -17661442, 1240172, 4274030, -7619272, -13125957, -21760988, -1341640,
-56371, -12893492, 10495826, -9522479, -17446694, -9432285, -7764227, 10721312, -773094, 314606,
--871342, 7985418, -21413634, -6051072, -3024194, -4130148, -1967095, 289373, -25601226, 722091,
--8659728, -6692633, -2708514, -11315091, 2514167, -3280281, 1680943, 363998, -2772402, -2893197,
--6861211, -1136556, -5755793, -1311576, 2867965, -5804649, -9832791, 154082, -2878165, -2187749,
--6424198, -10318122, -7615514, -2766496, -2006287, -2012192, 2872260, -7604777, -8224326, 14804215,
-9437654, 17977660, -6583648, -38278360, 11260331, 253403, 63377612, 64263448, 8114267, 347892,
-15514496, 7342247, 16552804, 27575300, 10691784, 28645822, 44019656, -11158862, 6051072, -36174900,
--4772783, 4434017, -4323959, -10948409, -21452288, -18571438, 10462003, 9822590, -47390132, 33793340,
-9519258, 47798156, -2608119, -9751723, 16030965, -3561602, 50898048, 12650826, -2271501, 9503152,
-10325638, -13787382, -30569430, -24434068, -11826192, 37549288, 819802, 41297720, 5417028, 40374840,
--11390790, -56031068, -20577188, -16404091, 29214904, 3326989, -26819386, -39495444, -27150098, -5660230,
-34249144, -29720100, -25419764, -17128330, 30594662, -15101642, -8531953, -39299488, -38641284, 12119324,
-6865505, 52269752, 13762686, -5701032, -13906030, 16295106, 17297444, 55832428, 1286343, -18272402,
--23978266, -1690070, -2236604, 1153199, 8961986, 7939247, -12789339, -3062312, 4468377, 11558294,
--12283606, -10273562, 15960635, 23066658, 10992969, 6994891, 9224516, -9863392, -3951907, -6241125,
--1076426, -1394791, 5279589, -13959, 30418570, 6270116, -1124208, -9309878, -15715822, 15111306,
-24690156, -8938901, 539555, 913217, 3193845, 14015015, 6236830, 10410464, 10758893, 2692408,
-8382166, 2712809, -455803, 2733210, -7423314, -2524904, 1866163, -4496294, -3022583, -9777493,
--592706, 3172907, 652298, 38765836, 14474040, -18606872, 36184564, -2112587, -71667968, -21626234,
-44863080, 50203336, -35452272, -35156456, -36086852, 20122458, 30429844, 61389040, 18308908, 8004746,
--35204772, -3464965, -2414845, 13860396, 30408368, 22342956, 1530619, -37017788, -72307384, -19043884,
--36729488, 54232016, 57090316, 100179576, -30302604, -96304440, -21304648, -33084134, 74538624, 25465398,
-75594648, 19552302, -25718802, -73406896, -49974092, 2645700, 8777839, 82247016, 33056216, -2905546,
--68097784, -118192672, -31272730, 2462090, 54187992, 124231928, 26691612, 37400576, -80514528, -122829088,
-4883378, 28087476, 97311608, 57354456, 40635224, -22797150, -79533664, -64821792, -1080721, 18117246,
--2157684, 49200460, -41206452, -38277284, -9920838, -87373056, 13148506, 4024921, 23313620, -17697950,
--35748088, -19146428, -15400679, -40087616, 8671539, 11477763, -13265006, -2204929, -37957312, 5137318,
-10348187, 12124693, 16938814, 5350993, -19686520, 6503654, -6568079, -3538516, 2312303, 30187178,
-4733591, -1196685, -8268349, -23377506, -5034776, -9484362, 8440684, -4443681, 9414031, 6197101,
--21691196, -48267380, -24155432, -35530116, 28311888, 28770912, 33978560, 19527606, -45287208, -40633076,
--62951336, -15344308, 50108848, 55755116, 54089744, 2407329, -60765196, -45383308, -35624068, -1015760,
-89338544, 62050468, 24930674, -48483740, -56547540, -42315628, 20157892, 21059298, 30641370, 16030429,
--10039486, -14208289, -26972932, -11766063, 7537131, 919660, 9026411, 12805445, -850404, -41779832,
-55261732, -1971927, 8709120, -23714662, -51065012, 30115774, -51425792, 54552528, 8752606, 4167192,
-12364137, -34033856, 33675764, 2467996, 23613730, -32660006, 11939472, -482110, 40290016, -16528108,
-10401337, 25672630, -29399052, -18092012, 3547106, -28169080, 45138496, -10720775, -17722108, 39288752,
-46625092, -13033078, -33426120, -9114457, -29390462, -6249178, 19144280, -3598109, -36754184, 3764002,
-20713016, -13843216, 23285702, -19480898, 9357660, 23633594, -9153649, 15350213, -41941428, -43483324,
-44156020, 23612120, 67825584, -3421478, -16489453, 56419764, -32000190, -29631516, 20568598, 18635864,
-32911260, -30005178, -13482439, 8082592, -5708549, 31717796, -25306484, -80679352, 21356724, 44205416,
-1126355, -37685652, 7553237, 22228066, -8419747, -10266582, -29354490, -10204305, -24137716, 24275692,
-6577743, -17970144, -4182761, 29109140, -20503638, -8017094, -18478024, -2760053, 14920716, -21414706,
-11700565, 30462592, 12421582, -943282, -8283918, -2242510, -10915659, -14943802, 23978802, -10280541,
-11199664, -3777961, -11398843, -581431, 3114925, 1736241, 9110699, 9845676, -17307644, -5926518,
-9489730, 6988986, 18353468, -2823404, -14778982, 5615133, -17303350, 8101919, -15703474, -9630390,
-926639, -3977677, -10305774, 24698746, -10332618, 4725001, 11633456, 1921998, 9277666, 16259672,
-380105, -3404835, 1519345, -1395328, -21291764, -13073344, 81109384, 22217328, 22563074, -68700152,
--17145510, -53813256, -45434848, 41050224, 43206296, 85499376, 39537860, -11342472, -16416976, -9836012,
-27096948, 18900004, 709743, 41661184, 8240969, -16405701, -19488414, -15670725, 29998200, 212064,
-26255672, 12386686, 15908559, 4141959, -6413997, 3250753, -31139, 4132296, -6657200, -1516124,
-8697309, 7409893, 56121264, 45271104, 36972688, -3020436, 10206453, -22597434, -3637301, -13975824,
--25566866, -26586384, 8226473, 14827838, 21414706, 26299158, 21645562, -13254806, -34232500, 52493092,
--37219112, -16130287, -9441949, 18165564, 2454037, 25819196, 26780732, 23592792, -31354872, -11041287,
-4372814, -12125766, -50639276, 34169148, -11824582, -8904004, 19246286, 39620000, 44754632, 32840930,
-31970126, 27801860, -29335700, 4065187, -7481833, -8901320, 16814260, 13552769, 17908404, 8916889,
--8151848, -14424111, -21202642, -22728430, -46074800, -18186502, 6791417, -2408403, 28066000, 173946,
--12834436, -4061965, -18377092, 7182796, 2092723, -1138703, -297963, 12144557, 26262114, -3016678,
-1238561, 14717779, 972810, 380641, -5362267, -1512365, -6358699, -5819144, 1467268, -12334609,
-5464272, 7378754, -9357660, -13450764, 3637301, 2947958, -5108327, 13586055, 17816598, -2259690,
-2538863, -5659157, -18329310, -7471633, 3639448, 3265249, -104901352, -52183316, -72059888, 52071108,
-11438035, 148937120, 153804928, 153387776, 175138032, 172605616, 123903368, 77227272, 96633544, 42856256,
-8967892, -81463184, -71035000, -178050560, -155815504, -139755552, -82431696, -103877544, -79259864, -6384469,
--25336548, -10095321, -12509629, 766652, -203474, 4855461, 20315196, 21950504, 20830592, 61567284,
-63050120, 66960688, 47747688, 133797360, 34961032, 56332256, 93586800, 104457896, 38800196, 105128992,
-126355256, 99761888, 86526408, 88099976, 9723269, 52818436, 106365400, 105218648, 67760088, 88332448,
-77139760, -867583, -28472948, -19908784, -52489868, -64666640, -8272107, -72696080, -111094160, -86439976,
--103465760, -152930896, -69998840, -103335304, -114671872, -162318096, -132064336, -149668880, -171130832, -113867096,
--193507600, -228822432, -229763040, -124867584, -155431104, -195800576, -38412040, -87065968, -40840308, -21749714,
-64385316, 28841242, 94410896, 50309636, 89199488, 85028008, 55901684, 44205952, 69210176, 128147864,
-130287296, 130842424, 133536440, 138847168, 168559216, 150701808, 125078576, 153855936, 173469968, 138782208,
-104387032, 124616328, 104819752, 67877128, 85562192, 58022324, 28947006, 12674985, 26656178, 8070244,
--10463077, -7090991, -13562433, -32936494, -50367080, -50033684, -54591180, -46575164, -58360552, -92010008,
--82702280, -95079304, -107303312, -125062472, -124727464, -103203768, -103657960, -84851376, -53694072, -60605208,
--41089416, -28736552, 3779571, 113280, 869194, 5590437, 19352586, 22138946, 7961796, 17643188,
-27967754, 22295712, 10387378, 11760157, 21060910, 12521440, 5887327, 8785356, 12328704, 11211475,
-7853348, 9605694, 15520401, 14835354, 7014756, 2393371, 5186173, 9203578, 5516349, 3758,
-3732327, 6972343, 5464809, 2654290, 4760435, 5076652, 3954054, 3482682, 1747515, 1334661,
-3897146, 3122978, 3411278, 1404454, -2167348, -2742874, 1567126, 3263102, -705448, -2262911,
-617402, 2147, 659278, 1937030, 1363115, 2318746, 4214437, 3942243, 6271189, 8435853,
-9817758, 7620883, 7777649, 8529805, 7134478, 5009006, 5712844, 6808060, 5264556, 2521683,
-3285113, 1961190, 1528472, -106300, -2600066, -2378338, -3318399, -6832219, -9496173, -9353902,
--8200703, -10675141, -10042170, -9166534, -8208756, -7983271, -6602439, -5299990, -3601330, -3008625,
--1858110, -1100049, -278636, 94489, 845572, 851477, 1544578, 1047972, 1236951, 774168,
-1088237, 488016, 637803, 130997, 282931, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, },
+2763275, -3663607, -679142, 2626909, -504122, 2792266, -6819871, -4780299, -1229971, -5654862,
+2344515, -1221918, -674847, -3804804, -1764158, 3631932, 3534221, -1354525, -1135482, -2328409,
+-5517959, 6151467, 3585761, 205622, 598074, -286152, 134218, 4963909, -2534568, 950798,
+-7904888, -6397891, -1655710, 632971, -5520644, -969589, 1906966, 519691, 57982, -2702608,
+-2156074, 5190468, -2421288, -2145336, -762357, -677531, 2226941, -1140851, -3406983, -71404,
+2916283, -4160750, 144418, -4459787, 279710, -3253438, 4967667, -237297, -5310727, -720481,
+-548145, 675921, -7566659, -863825, 591632, -4988068, 2282775, 155156, -5836324, 2686502,
+3534221, -3049964, -3587372, -6330782, 3307125, 1974074, 5885179, 2965138, -911607, 1195075,
+-852551, 1838783, 1850594, 4127464, 1009317, -1735167, -92879, 522375, -162672, 2376728,
+576599, -760746, -1162326, 1178432, 879931, 1792075, 847182, 722628, 1021665, 993211,
+366683, 631897, -135291, -258772, 349503, 290447, 421444, -204548, 501974, -668404,
+-18254, -5511517, 2505040, -6866042, -1879585, -986232, -3431679, 3262028, 7671349, -3158949,
+-998580, 329639, -3144453, 2167348, -458488, -2604898, -4352413, -2355253, 6918119, 6630893,
+3761855, 7707856, 4571993, 2430415, 7304129, -4562866, 1618129, 3083787, -131533, 1222992,
+-2153926, 1363652, -10076530, 181462, -576599, 3608846, -2275259, -1316944, -695785, 2755759,
+-3186329, -550830, 914828, 1929514, 1919314, -572841, -3419868, 612033, 1203665, 2434173,
+1869385, 2836289, -3216394, -1949915, -586263, -5750961, -673236, 1479079, 4912906, 5444945,
+-750009, 2985002, 2253247, -448824, 2037425, 2387465, 3544959, -1461363, -47245, -2697240,
+459025, -2330020, 1575179, -3430605, -3202972, 1880122, -20938, -6373195, -594316, -4784057,
+-1287953, -717260, -802085, -6337761, 605590, 2176475, -1858110, -1841467, 1085553, 748935,
+455267, -1293322, -3383897, -222265, -1482838, 1236951, 46171, 41339, -379031, -1448478,
+-1553168, -1807644, 124554, -811749, 762357, -1153199, 435402, 212064, -1004486, -75162,
+-1118839, -457951, 64961, -48855, -995359, -296353, -169114, -6964290, -6482717, 2384244,
+-724239, 5379447, 5493263, 409633, 172336, 10443213, -2793876, -286689, 8846559, 328028,
+-5050345, -7491497, 5451387, -2216203, 74625, -4651450, 1473174, -3331284, 3716757, 16336982,
+-5934571, -4840428, -5861557, -6417218, 1209033, -5237713, -12855911, -352724, 1335198, 4832,
+-5085778, -1104880, 4232691, -5292474, -3064459, 7626788, 2562485, -1970853, -1780264, 4904316,
+-2399813, 3505767, 3266860, -7003481, -4587562, -4154307, 4613869, -3559991, -2061584, -1942399,
+-2279554, -381715, -4663261, 24696, -1375463, 1151051, -605054, -10241350, 4791036, -5730560,
+4559645, 833761, -8360154, 1699196, 5665599, 1726040, 9403831, -3963718, 558883, 1089311,
+2234994, 3346317, -3646427, 1396938, 1279363, -5441187, 7502234, 536334, -1013612, 3167002,
+-1027034, 1420560, -1319092, -2838974, -154082, -1826435, 2493229, -632971, 508954, 2913599,
+1050656, 1112933, -602369, 1589138, 325881, -420370, 1089848, 2123325, -1484985, 145492,
+-1568737, 1017370, -479963, 3149285, -4392678, 2094870, 2154463, -2287607, 1014686, -1100585,
+-9439801, 2950643, 8773544, 7397545, 8225399, 1506460, -1826435, -7041599, -3764539, -3279208,
+-2719788, 7396471, 10153840, 789737, -732292, 7324530, -11829951, 285615, -984621, -158914,
+-3875671, -3914326, 4267587, 5356361, 144418, -1129040, 2093260, -5686000, -4367445, 4438849,
+-4810900, 9201431, 8273181, 1430761, 5085242, 4358318, 850940, -3708168, 1275605, -164819,
+-6491306, 6311992, -581431, 2970507, 5079873, -6036577, -2381559, -7180649, -1655710, 1682554,
+6745246, -6918656, -2785286, 5102421, -1093069, -4417374, 7401303, -6158446, -13022341, 2216203,
+-7346542, -3245385, 3511673, -3117610, 600222, 798864, -3198677, 5571647, -5106179, -5740761,
+-6952479, -745177, -3031710, 477815, 1811939, -4213900, 1090922, 1233729, 283468, -1999307,
+1090922, 922881, 2866891, 453119, -962073, -1969779, -1309965, -865973, -550293, -686658,
+-1264868, 390842, 532039, 854162, 230318, -372588, -1019518, -379568, 1407139, -1456531,
+-1569274, -442919, -76236, -122407, 1067836, 1317481, 1187022, -749472, 394600, 275415,
+447750, 257161, -446677, 2813741, -1386738, 153008, -11738682, 2488397, 11090679, 875100,
+1744831, 3347390, 10387378, 1404991, -9972377, 11057930, 4874788, 3981972, 6750615, 5832029,
+53687, -2091649, 6365679, 4844186, 1668058, -4596152, 5535139, 2583423, 8191577, 9532143,
+3636227, -2378338, 219043, -92879, 3981972, 12103218, 7204271, -6754373, 11734924, 445603,
+-1449015, 1525787, -8660265, 9592273, -1287953, 146566, -1156957, 2425046, -1308891, 4938139,
+-6991133, 9796820, 8367670, -344134, -1578401, -5495948, -10427644, -3605088, 4115116, -2457795,
+-3924526, 5488432, 6461779, -4426501, -3932043, -13391171, -4656282, -1690607, -676457, -14982993,
+7581691, 795643, -8928700, -7357279, 2422362, -3513820, 875100, -2254858, 444529, -3979287,
+-904091, -3556233, 2496450, 4941360, -1451699, 3746285, 408022, -1632088, 4425427, 1503239,
+178778, 3627637, -474594, -1738925, -2367601, -2673080, -2779381, -2653753, -3242700, -2394444,
+108448, -1352378, -3050501, -1546725, 242666, -708133, -1174674, 570157, 1150514, 512712,
+-1432372, -2025614, -2488397, 183073, -2366527, 2040646, -1334124, -1404991, -1320703, -39728,
+-966905, 122943, 493384, 936840, -1159104, 1153736, 5376762, -6827925, -192200, 202400,
+120259, 11372000, 6045167, 29528, 13877576, 6600828, 12514998, 3142842, 4144107, 13624710,
+-5475547, -8879308, -5827197, 12744242, 2955474, -7006166, 9496710, -2520609, -5756867, 8720931,
+20296942, -5160940, 893890, 3374234, 3774740, -5205501, 542777, 11355357, 1075889, 13937169,
+-3143379, 14956687, 10377715, 3659849, 8679055, 5679021, -5418101, 3791383, -1488206, -1226750,
+1289564, 1102733, -1090385, 4010963, 2586107, 9687836, 6339909, -7934415, 2673080, 3700114,
+-6049999, 437550, -14099304, -18023294, 7122667, -4558034, -11957189, -2460480, -6495065, 7874823,
+1587527, -3602404, -9056475, 7068443, -6587943, 4338454, -7377680, 1134408, -3044058, 11036992,
+1922535, -4219269, 4101157, -9294309, 8397198, 1447404, -8169565, 424665, -956167, -2254321,
+-1090922, 1198833, 2253247, -2291365, 3797288, -823023, -1671279, -1737851, -1514513, -3422552,
+-411780, -1191853, -3489661, -1204202, 1074816, -2048699, 2013803, 362925, -1330366, 599148,
+-2369748, -389231, -1697049, -170725, -208843, 126165, 961536, 1359894, 1355062, 84289,
+615254, -61740, 587874, -1096827, 811212, -770947, 543850, -8061654, 1202054, 181462,
+2239289, -4967130, 5602785, 5897527, -515396, -4156992, -13776644, -12056510, -9041443, 4148939,
+1377611, 2089502, -11271605, 7102266, 5235565, 8869107, -9644886, 9150965, 7266011, -5742372,
+-4526359, -2964064, 9578851, 6391448, -4022237, 809601, 14425185, 7117298, 3821984, 8156680,
+5823976, 2101313, -4599910, 944893, 789737, -2139968, -5122286, 12569759, 6060199, -11942693,
+8118562, 7818451, 8041790, 6075231, 1802813, -7492034, 355945, -1108102, 11202885, 1344862,
+5080947, 9927280, -1669669, -11100880, 2571075, 5784247, 11317239, -15037217, -8276939, 3962107,
+290447, 1251446, -8699993, -2307471, -8432631, -1315334, 4205310, -2943126, -4551592, -5820218,
+2549063, -1537061, -2710661, -7168301, 393526, -9555228, -40802, -1040993, -4643934, -5440113,
+6189048, -2209761, -1375463, -3138011, -5675800, 1928977, 2933463, 1811939, 2324651, 1462973,
+-3077881, -1873143, -846109, -919660, -2886218, -5790690, -2382096, -274878, -1792612, -300648,
+-2905009, 130997, -1518271, -1291175, -2078227, -2610803, -1174137, 2340757, -1665374, -999654,
+496606, 864362, 777926, -1344862, 2005213, 2683818, 2972117, -928250, -52076, -200790,
+466541, 351114, 5240934, 730144, -9293772, 9460739, 6007586, -2776160, 3697967, 5713380,
+-6300180, -2077690, 24055038, -752156, 9354976, 6609955, -20159502, -10661719, -1177358, -814970,
+-280247, 11454678, 2519535, -5531381, 11761231, 7281580, -1524177, -1912334, 3722126, -1896765,
+-4219806, -8940511, -10671920, 5901822, -2377265, -4984310, -566936, -16531866, -3125126, 1112397,
+9086540, -10918881, -3211562, 1433445, 687195, 2401961, 767725, 11688753, -13651017, -4515621,
+2979097, -430034, -8075076, -1683627, 10543071, 9114994, 7828115, -2163053, -13594645, -6176163,
+4857071, -1538135, 9052717, -527744, -222265, -6752763, -4231617, 7945153, -9761387, 6652905,
+5156645, -7007776, -3520800, -1632625, 1081795, -7547868, 3630858, 2606508, -3744138, -1162326,
+-10330470, 3721589, 7923678, 11373610, 962073, 3049427, 5359583, 1660005, -9028558, 6163278,
+-2190970, 1009317, -6979, -2899103, -3134789, -1675574, 4152697, 735513, 3464965, -393526,
+541166, -5012764, -1737314, -2312303, 3745212, -395137, -1660005, 2601677, -1956895, 2034741,
+-1257889, 321586, -4168266, 953483, -998043, -875636, -2686502, 933082, -455267, -2353105,
+-4309463, -977105, 388695, -1741609, 1694902, -470836, -2839510, -18292802, -1086627, 2455111,
+12315819, 1483911, -460098, 7374459, -5337571, 16050830, -16035797, -1592359, -3405372, 2640868,
+-747324, -1367410, 4166655, -3081102, -5429913, -3707631, -3195993, -9707163, -1493038, 6796249,
+-1542967, -4350265, 10237055, -223338, 12306155, -12074227, -6849399, 15125801, -1517734, -995359,
+933082, -9637907, -1083406, -12015708, 3525631, -14409615, -334471, 10577968, -3452080, 7182259,
+9576703, 5470178, 7545184, -9776419, 9685688, 989990, -25243134, -4332549, 3701188, -2150705,
+-2787971, -10921028, 8566312, -9322763, -1793686, -10562398, -9804873, -15299210, 13585518, 3758,
+15830176, -7968238, 11935714, 15705622, -10364830, 12778601, -15823196, -13269838, -14323179, -5086315,
+-10089415, 3141232, 4779225, -656593, -1853815, -184147, -11329587, 785442, 137976, 6447283,
+2601677, 2461016, 4670240, 2530273, -2458332, -205622, -4610648, -2859911, 128312, 1778653,
+86436, 2023467, -1512902, 2182380, -691490, 1101659, -7028177, 315143, 2685428, 1928977,
+3911105, -2337536, -3102577, -4239133, -98784, -469225, -3292629, -3702262, 368293, -701153,
+597537, -100395, -1053878, 1743757, 5592585, -1497333, -1318018, -838056, -1539209, 4902169,
+188979, 474057, -1755031, 2855080, -3279745, -766115, 2157147, 11860015, 20163798, 2813204,
+-5279589, -10926397, 6819335, 18451716, 245350, 5242545, 1026497, 7324530, 5167383, 5606543,
+10160282, -12228309, -896574, -4582730, 15972983, 11742441, -510564, 18250390, 9746355, 1582159,
+-17153562, -8596377, -13063680, -6127308, 1401233, 4898410, -4642860, 651224, 18687940, -3531537,
+83215, 912144, 19200652, -11731703, -4641786, -4798552, -1810329, -11477226, 13247827, 850940,
+8908299, -13758928, 1938641, -1523640, -8107825, -3278671, -15081778, 4726612, 355945, 3165391,
+-1792075, -943282, -17518098, -6000606, 6940667, 11157788, -3173444, 2905009, 23451596, -1537598,
+1426466, 4276714, 10611254, -9925133, 2345589, 11831561, -6953552, 8597451, 2600066, 8961986,
+-11858942, -6084358, 1694902, 2721399, 6121939, 6834367, 6630356, -4505958, 1976759, 4030827,
+8007430, 12341589, 5804649, -5881958, -2653753, -4632122, 2075543, 2595234, 5465883, 4879083,
+3040300, 5156108, -5485747, -1133335, -5595806, 4877472, -6422050, 6580427, 4831838, -4953708,
+3007551, -614717, -2925947, 721555, 1086627, -1788854, 1596117, 8178155, -160524, -25233,
+-4942434, 2570001, -127775, -171262, -4476430, 4682588, -3792456, 1459752, 2121177, 3712999,
+-311922, -1777043, -10919417, -16663936, 4631049, -1799054, -16804596, 4591857, 1696512, 15220827,
+13477071, -12516072, -14992120, 3337190, -11447162, -6053220, 474057, 22676890, 323733, -2918430,
+-20296404, -10198400, -1756105, -15174119, -23003844, 15742129, -5932961, -7304129, -1324997, 17072496,
+-5357972, 1828046, -3434363, -3482682, -9947681, -5352066, 1667521, -24077586, -15457050, -4493610,
+-8773008, -8191577, -2813204, -9483825, 8164733, 3683471, 2614561, -5808944, 4128001, -34745212,
+32245540, 18866180, -3274913, -4466229, 18137110, 1025960, -10863583, -15526844, -1976222, -5495411,
+-6445672, -9373229, -9509594, 11792370, 11063836, -5096516, 24317032, -13610751, -11124502, -10112500,
+48318, 7861938, -28508920, 8334384, -9024800, 14803142, -16161962, 6991133, -1480153, -5564130,
+11133629, -21086678, 19710142, 1020055, -279710, -4550518, 565325, -396748, -9980967, 1846836,
+-2775086, 5091147, 6618545, -6206228, 3015604, 4120484, 9293235, 214212, -3063386, -644245,
+-857920, -3829500, 2700998, -1576790, -2262911, 2249489, -3731790, -1310502, 867583, 2543695,
+3157875, -7583839, -5739150, -5078799, 797790, 2901251, -49392, 1860258, 1684164, 4833986,
+2548526, -4201015, 3696893, 585726, -4687957, 16515223, 1363652, 38507604, 12546136, -780610,
+1656784, -14899778, -19300510, 24050744, -7122130, 2726767, 31932008, -8319889, -1539746, -6830609,
+24902220, 4789426, -10290742, 14699526, -5342403, 21835076, 11465415, 5440113, 3238405, -2418067,
+-8354785, -2724620, -2263448, -23407034, -5876052, -3769908, 12954695, -7248294, 2447595, 4308389,
+-16765405, -24981678, -885837, 21575768, -1434519, 19168440, -3313031, -26779658, -10365367, 1225139,
+6077916, 4852776, -21780316, 192200, -6229850, 15832323, -16160351, 20013474, 29590714, 19193136,
+-6012954, 3588982, 11943230, -4243428, 23188528, 26836030, 23661512, 7744900, 25944824, -868657,
+-10438381, 3369939, -13551159, -17103096, 9355513, -7328288, 21205864, 10973105, 5632850, -7256884,
+-26086020, -23637352, 16618839, -10450729, -21105470, 14125611, 28168544, 16954384, -9016747, 13470628,
+8266739, -2894808, -6641630, 8011725, -9997073, -3004867, -1060857, -6860674, 927176, -1449552,
+5810017, 3551938, -1331440, -9137543, 5135171, 4707821, 3228205, -1938104, 313533, -8530879,
+707059, -34360, 2241973, 2071248, 237297, 5170067, -1768990, 7134478, 8000987, 2131378,
+6500433, 660888, -5117454, -12102681, 2770791, 369904, 2636036, -2009508, -8722005, -19463182,
+11388643, 14221710, -220654, 6945499, 4683662, 6868190, 5716065, 2596308, -1562294, 3331821,
+-4099546, 7358353, -13241384, -36883032, -14809047, 20147154, 1131724, -6060736, -12374875, -124554,
+16938814, 21629992, 4570919, -13372381, -2405182, 17284560, -21060372, 1935957, -2685965, 15454366,
+17641042, -14278619, 26798986, 5139465, 981937, 37893960, 91805, -11990475, 13194676, -6422587,
+1788317, -8195335, 2706366, 25145960, 2789045, 32053878, 13438416, -28158342, -30854508, -6810208,
+7847979, 17067126, -23968064, -8529805, -3598646, 28829432, 26342646, -22807886, -1045288, -13966160,
+8573828, -4902169, 30120068, 266288, -6847252, 19755238, -4239670, -23658290, -12068321, -3997004,
+24226836, -21809844, 12903692, 37806988, 17759690, 25321516, -7043210, 10196789, -7101729, -15932181,
+-15389942, 7793755, -11017128, -903017, -4120484, 6747931, -437013, 15234249, -3731253, -7287486,
+-2796561, -3285650, 3508988, -2646237, 5645735, -10780368, 7512435, -7203197, -3503620, 1968706,
+-3097745, -3512210, 4609037, -4863514, -2096481, -1603097, -4177393, -13232794, -7684770, -1494649,
+-1882269, -4078072, -5463199, -1438277, 3498788, -2510409, 1896765, -2251637, -515396, 2698850,
+-10387915, 850404, -1817845, -7805566, -711354, -18296024, 13734769, 19252190, 16775069, -28921772,
+-13222594, 17627620, 54956792, 2926483, 12225088, -16229071, 5294084, -1166084, -2200097, -15263777,
+4859219, -5614596, 26549878, 20393578, -27031450, -12512850, 29294362, 14315663, 10747619, 2697240,
+15982647, 17856864, 6147709, 10526965, 10385768, -13593035, 2281702, -13319230, -5473399, 3194382,
+-2214056, 1832340, -10843719, -10388989, 8083666, -2425583, 11023034, 8069707, -24990804, 18557480,
+4103841, 14872935, -16765942, 9449465, 15694347, -12265890, -19195282, -20006494, -21294984, -21984864,
+-17595408, 6102075, 32301912, 8148090, 10175851, 14840186, 1381369, -589484, -12156368, 21115670,
+-26844082, -54802708, 18988588, -12737799, 2689187, -46530600, 11738682, 14436996, 2837900, 8991514,
+8102456, -7078106, -11510512, -18561774, 6127845, 3871913, -13677323, 10031970, -5010616, -23859080,
+-12609487, -446140, -3928821, 2331630, 1904818, 6857989, 3580392, 1110786, -155156, 5413270,
+-3120831, -7718593, -13125420, -8216810, -8376797, -3171297, -4491462, 4806069, 7892003, 5524402,
+-10402948, -1035087, -4207458, -81068, 6459631, 1723893, -9163313, -17668422, -1205812, 586263,
+1751810, -6393059, -2347200, -6677064, -1030255, -8679055, -8679592, 5656472, -8475044, 3464965,
+1769527, -4685273, -1493038, 5407901, -4751308, 1971927, -6474663, 13002477, 9284646, 12419435,
+-17715130, -9142912, -2535641, 11353209, -23627152, 39261368, 18585934, -3175055, 21344914, 12883291,
+20337208, -10700374, -13785234, -13316546, 24642374, 8792872, 4400731, 22295712, -19567334, -63136020,
+-4270271, 4231617, 7449621, -35537096, 27484570, 20043002, -38237020, -29375966, 874563, 15736223,
+1268089, 8939974, 20167018, -5364951, 12495670, -18439368, -21182778, -16834662, -22003118, -34149284,
+9443559, 3534758, -22996866, 30260192, 11693048, -7401303, -7286949, -17873506, -13453448, -31140124,
+-16982838, 11059004, 27550604, -10537702, 2697240, 11347304, -24575266, 17661442, 23864448, 3507378,
+-6209449, 20434918, 5528697, 2276333, -14740865, -17183628, -1331977, 30554398, -9481140, -28264642,
+-570157, -36009544, -37541772, -39069172, -18787798, -20638928, -13223667, 16728898, -2430415, 15029701,
+-3190087, -5043902, -14192183, -3862249, -4232691, 8032663, -6276558, -9101036, -1855963, -3622805,
+1255741, -13244069, 2421288, -6156836, -5337034, 6864432, -6372121, -2203318, 2211908, -4792110,
+10185515, -6612102, 1471026, 16514686, 1978369, 9592273, -3776887, -5973763, 16802986, 2387465,
+-8988293, 181462, 117575, 1158031, 2342905, -4944581, 10485089, 471910, -839666, -5267241,
+945967, -5352603, -13828721, -23897734, -12525735, -12841415, 15557982, 30622044, 11304354, -13973139,
+-29535416, 31671088, 17047262, -15290620, -8242579, -8165270, 1771674, 7444789, -9768366, 16449725,
+15301895, 843424, -10301479, -9769440, -9197672, -1196148, 5939403, -4646081, -10183904, -24215026,
+7435662, 21247740, -12238509, 18780282, 548145, 12593918, -10577968, 14003741, 40680856, -15294915,
+17732310, 35327716, 6100464, -6235219, -9863392, 10210211, 717260, 18000744, -13861470, 48479444,
+-15076946, -32647658, 7425999, -14913200, 38343320, 12521440, -12080669, 2132988, -23244364, -31863288,
+38920992, 4375498, -10580652, 38442104, -20045686, 4928475, -11366094, 22232362, -28586228, -32078574,
+-22923852, 6984691, 13639742, 25458418, 10810433, 26907434, 42249056, -5344550, 8400419, -5730560,
+5223754, -1494112, 1571958, -31292594, 1020592, -43162272, -14507863, -8640937, 7459822, -1623498,
+9256728, -3585224, -13032005, -13699872, -3272228, -9127879, -10097468, -17343078, -196495, -1998234,
+12824235, 5345087, -10769094, 9429601, 4300336, 7735236, 10292889, -13937706, 3605088, -5931350,
+-2834142, 13499082, -4828617, 6597070, 9035537, -5808407, -15154255, -7869991, 5196374, -24809878,
+-7920457, 270583, -3732864, -5837398, 10815265, -11895986, -13093208, 8672613, 14623827, -7157563,
+12163347, -8581882, 29442000, -4103305, 549219, 35958540, 3554086, -19211926, -22982906, -19735912,
+36271000, -24326158, 14186814, 17411798, -12105902, 3740917, -20474110, -4370666, 15991774, -14409615,
+11446625, -4728759, -25649008, -55358372, -5322538, 50044424, 20551956, 5224828, -10226854, -14917495,
+-3065533, -19614042, 6053220, -27694486, 32926294, 2529736, 3695819, 2790655, -11538967, -33433636,
+-13127031, 26941792, -22280680, -5585068, -15516643, 12053826, -11209328, 37245420, -6325413, 7706782,
+-13893145, -34710316, 7368554, -26499412, -6307697, -2311229, -48979808, -41021232, -39126616, 12895102,
+-7493644, -20995410, -14003204, -13431436, -12735115, -18744848, -12994960, -3253975, -44029320, 12200391,
+4529043, 16100222, -10045392, 37945500, -4340065, 7311108, -13544716, -5242545, 20080046, -40531068,
+16818556, 26535382, -27645630, -17661442, 1240172, 4274030, -7619272, -13125957, -21760988, -1341640,
+56371, -12893492, 10495826, -9522479, -17446694, -9432285, -7764227, 10721312, -773094, 314606,
+-871342, 7985418, -21413634, -6051072, -3024194, -4130148, -1967095, 289373, -25601226, 722091,
+-8659728, -6692633, -2708514, -11315091, 2514167, -3280281, 1680943, 363998, -2772402, -2893197,
+-6861211, -1136556, -5755793, -1311576, 2867965, -5804649, -9832791, 154082, -2878165, -2187749,
+-6424198, -10318122, -7615514, -2766496, -2006287, -2012192, 2872260, -7604777, -8224326, 14804215,
+9437654, 17977660, -6583648, -38278360, 11260331, 253403, 63377612, 64263448, 8114267, 347892,
+15514496, 7342247, 16552804, 27575300, 10691784, 28645822, 44019656, -11158862, 6051072, -36174900,
+-4772783, 4434017, -4323959, -10948409, -21452288, -18571438, 10462003, 9822590, -47390132, 33793340,
+9519258, 47798156, -2608119, -9751723, 16030965, -3561602, 50898048, 12650826, -2271501, 9503152,
+10325638, -13787382, -30569430, -24434068, -11826192, 37549288, 819802, 41297720, 5417028, 40374840,
+-11390790, -56031068, -20577188, -16404091, 29214904, 3326989, -26819386, -39495444, -27150098, -5660230,
+34249144, -29720100, -25419764, -17128330, 30594662, -15101642, -8531953, -39299488, -38641284, 12119324,
+6865505, 52269752, 13762686, -5701032, -13906030, 16295106, 17297444, 55832428, 1286343, -18272402,
+-23978266, -1690070, -2236604, 1153199, 8961986, 7939247, -12789339, -3062312, 4468377, 11558294,
+-12283606, -10273562, 15960635, 23066658, 10992969, 6994891, 9224516, -9863392, -3951907, -6241125,
+-1076426, -1394791, 5279589, -13959, 30418570, 6270116, -1124208, -9309878, -15715822, 15111306,
+24690156, -8938901, 539555, 913217, 3193845, 14015015, 6236830, 10410464, 10758893, 2692408,
+8382166, 2712809, -455803, 2733210, -7423314, -2524904, 1866163, -4496294, -3022583, -9777493,
+-592706, 3172907, 652298, 38765836, 14474040, -18606872, 36184564, -2112587, -71667968, -21626234,
+44863080, 50203336, -35452272, -35156456, -36086852, 20122458, 30429844, 61389040, 18308908, 8004746,
+-35204772, -3464965, -2414845, 13860396, 30408368, 22342956, 1530619, -37017788, -72307384, -19043884,
+-36729488, 54232016, 57090316, 100179576, -30302604, -96304440, -21304648, -33084134, 74538624, 25465398,
+75594648, 19552302, -25718802, -73406896, -49974092, 2645700, 8777839, 82247016, 33056216, -2905546,
+-68097784, -118192672, -31272730, 2462090, 54187992, 124231928, 26691612, 37400576, -80514528, -122829088,
+4883378, 28087476, 97311608, 57354456, 40635224, -22797150, -79533664, -64821792, -1080721, 18117246,
+-2157684, 49200460, -41206452, -38277284, -9920838, -87373056, 13148506, 4024921, 23313620, -17697950,
+-35748088, -19146428, -15400679, -40087616, 8671539, 11477763, -13265006, -2204929, -37957312, 5137318,
+10348187, 12124693, 16938814, 5350993, -19686520, 6503654, -6568079, -3538516, 2312303, 30187178,
+4733591, -1196685, -8268349, -23377506, -5034776, -9484362, 8440684, -4443681, 9414031, 6197101,
+-21691196, -48267380, -24155432, -35530116, 28311888, 28770912, 33978560, 19527606, -45287208, -40633076,
+-62951336, -15344308, 50108848, 55755116, 54089744, 2407329, -60765196, -45383308, -35624068, -1015760,
+89338544, 62050468, 24930674, -48483740, -56547540, -42315628, 20157892, 21059298, 30641370, 16030429,
+-10039486, -14208289, -26972932, -11766063, 7537131, 919660, 9026411, 12805445, -850404, -41779832,
+55261732, -1971927, 8709120, -23714662, -51065012, 30115774, -51425792, 54552528, 8752606, 4167192,
+12364137, -34033856, 33675764, 2467996, 23613730, -32660006, 11939472, -482110, 40290016, -16528108,
+10401337, 25672630, -29399052, -18092012, 3547106, -28169080, 45138496, -10720775, -17722108, 39288752,
+46625092, -13033078, -33426120, -9114457, -29390462, -6249178, 19144280, -3598109, -36754184, 3764002,
+20713016, -13843216, 23285702, -19480898, 9357660, 23633594, -9153649, 15350213, -41941428, -43483324,
+44156020, 23612120, 67825584, -3421478, -16489453, 56419764, -32000190, -29631516, 20568598, 18635864,
+32911260, -30005178, -13482439, 8082592, -5708549, 31717796, -25306484, -80679352, 21356724, 44205416,
+1126355, -37685652, 7553237, 22228066, -8419747, -10266582, -29354490, -10204305, -24137716, 24275692,
+6577743, -17970144, -4182761, 29109140, -20503638, -8017094, -18478024, -2760053, 14920716, -21414706,
+11700565, 30462592, 12421582, -943282, -8283918, -2242510, -10915659, -14943802, 23978802, -10280541,
+11199664, -3777961, -11398843, -581431, 3114925, 1736241, 9110699, 9845676, -17307644, -5926518,
+9489730, 6988986, 18353468, -2823404, -14778982, 5615133, -17303350, 8101919, -15703474, -9630390,
+926639, -3977677, -10305774, 24698746, -10332618, 4725001, 11633456, 1921998, 9277666, 16259672,
+380105, -3404835, 1519345, -1395328, -21291764, -13073344, 81109384, 22217328, 22563074, -68700152,
+-17145510, -53813256, -45434848, 41050224, 43206296, 85499376, 39537860, -11342472, -16416976, -9836012,
+27096948, 18900004, 709743, 41661184, 8240969, -16405701, -19488414, -15670725, 29998200, 212064,
+26255672, 12386686, 15908559, 4141959, -6413997, 3250753, -31139, 4132296, -6657200, -1516124,
+8697309, 7409893, 56121264, 45271104, 36972688, -3020436, 10206453, -22597434, -3637301, -13975824,
+-25566866, -26586384, 8226473, 14827838, 21414706, 26299158, 21645562, -13254806, -34232500, 52493092,
+-37219112, -16130287, -9441949, 18165564, 2454037, 25819196, 26780732, 23592792, -31354872, -11041287,
+4372814, -12125766, -50639276, 34169148, -11824582, -8904004, 19246286, 39620000, 44754632, 32840930,
+31970126, 27801860, -29335700, 4065187, -7481833, -8901320, 16814260, 13552769, 17908404, 8916889,
+-8151848, -14424111, -21202642, -22728430, -46074800, -18186502, 6791417, -2408403, 28066000, 173946,
+-12834436, -4061965, -18377092, 7182796, 2092723, -1138703, -297963, 12144557, 26262114, -3016678,
+1238561, 14717779, 972810, 380641, -5362267, -1512365, -6358699, -5819144, 1467268, -12334609,
+5464272, 7378754, -9357660, -13450764, 3637301, 2947958, -5108327, 13586055, 17816598, -2259690,
+2538863, -5659157, -18329310, -7471633, 3639448, 3265249, -104901352, -52183316, -72059888, 52071108,
+11438035, 148937120, 153804928, 153387776, 175138032, 172605616, 123903368, 77227272, 96633544, 42856256,
+8967892, -81463184, -71035000, -178050560, -155815504, -139755552, -82431696, -103877544, -79259864, -6384469,
+-25336548, -10095321, -12509629, 766652, -203474, 4855461, 20315196, 21950504, 20830592, 61567284,
+63050120, 66960688, 47747688, 133797360, 34961032, 56332256, 93586800, 104457896, 38800196, 105128992,
+126355256, 99761888, 86526408, 88099976, 9723269, 52818436, 106365400, 105218648, 67760088, 88332448,
+77139760, -867583, -28472948, -19908784, -52489868, -64666640, -8272107, -72696080, -111094160, -86439976,
+-103465760, -152930896, -69998840, -103335304, -114671872, -162318096, -132064336, -149668880, -171130832, -113867096,
+-193507600, -228822432, -229763040, -124867584, -155431104, -195800576, -38412040, -87065968, -40840308, -21749714,
+64385316, 28841242, 94410896, 50309636, 89199488, 85028008, 55901684, 44205952, 69210176, 128147864,
+130287296, 130842424, 133536440, 138847168, 168559216, 150701808, 125078576, 153855936, 173469968, 138782208,
+104387032, 124616328, 104819752, 67877128, 85562192, 58022324, 28947006, 12674985, 26656178, 8070244,
+-10463077, -7090991, -13562433, -32936494, -50367080, -50033684, -54591180, -46575164, -58360552, -92010008,
+-82702280, -95079304, -107303312, -125062472, -124727464, -103203768, -103657960, -84851376, -53694072, -60605208,
+-41089416, -28736552, 3779571, 113280, 869194, 5590437, 19352586, 22138946, 7961796, 17643188,
+27967754, 22295712, 10387378, 11760157, 21060910, 12521440, 5887327, 8785356, 12328704, 11211475,
+7853348, 9605694, 15520401, 14835354, 7014756, 2393371, 5186173, 9203578, 5516349, 3758,
+3732327, 6972343, 5464809, 2654290, 4760435, 5076652, 3954054, 3482682, 1747515, 1334661,
+3897146, 3122978, 3411278, 1404454, -2167348, -2742874, 1567126, 3263102, -705448, -2262911,
+617402, 2147, 659278, 1937030, 1363115, 2318746, 4214437, 3942243, 6271189, 8435853,
+9817758, 7620883, 7777649, 8529805, 7134478, 5009006, 5712844, 6808060, 5264556, 2521683,
+3285113, 1961190, 1528472, -106300, -2600066, -2378338, -3318399, -6832219, -9496173, -9353902,
+-8200703, -10675141, -10042170, -9166534, -8208756, -7983271, -6602439, -5299990, -3601330, -3008625,
+-1858110, -1100049, -278636, 94489, 845572, 851477, 1544578, 1047972, 1236951, 774168,
+1088237, 488016, 637803, 130997, 282931, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, },
},
};
-const Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][2819] ={
+const Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819] ={
{
{
-4883915,
-5020817, -1855426, 3221, 4694936, -2680060, 1831804, -344671, 656593, -3192235, -6675990,
--1378685, 2623688, -1717450, 1596117, 2311229, 1965484, -1469953, 1113470, -4134443, -757525,
-1030792, 1708860, -143345, -93952, 510027, 1019518, -3462818, -2873333, 1208496, 2392297,
--1198833, 2504503, 4777614, -6426345, 910533, -3075197, -2086280, 1433982, -801548, 3948149,
--1226750, 3555696, 1866163, 581431, -256624, 1900523, 111669, -388695, -2005750, 5763309,
--4003447, -1213865, 2024540, 2238215, -102005, -1949378, 1106491, -2156074, 2234457, 430034,
-812823, -45634, -766115, -711891, 2985539, -7693360, 1804423, -989990, -4466229, -756451,
-3760781, 1820529, 2334852, -3367791, 2707977, -1172526, 1702418, 1038308, 1324461, -1422171,
-561030, 2026151, -1344325, -3005940, 1225139, -2790118, 537945, 2049236, -3221, -1008244,
--1167157, 550293, 1094680, -452582, 1315334, 62277, 941135, 812286, -370978, -190052,
-355409, -433792, -268435, -336081, 361851, -601832, 295816, -882079, -225486, -826781,
--125091, -259309, -945430, -201327, -8958228, 6958921, -3354370, 1549946, 1292248, 210453,
--1925219, -155693, -5038534, -6266894, 1705639, -1201517, 1949378, 1977296, 5639292, -4614406,
-667331, 3847754, 3712999, -3741990, -4006131, -2110977, -3479997, 332323, -1169842, -2688650,
--2089502, 30602, -6345278, -6032819, -1285806, 1224603, -556735, 522912, -732829, 1397475,
--3337190, 3865471, -1363115, 2210298, -484794, 1568200, -3045669, 1053878, 2099165, 2564096,
-1092532, 510027, 901406, -1065689, -2527052, 5142687, 3861713, 1645509, -1926293, 6372121,
-4289062, -1784559, 4031901, -302258, -3171833, -756451, -1152125, -2801393, 1825898, 2136209,
-1006096, -2145336, 4475893, -2945274, 2617246, 3815005, -740345, 412854, -5600101, -2454037,
--6026376, 904628, 2848100, -2859911, -875100, 1147293, -2734284, -736050, 1313723, -131533,
-938450, -594853, -1461900, -3931506, -1951526, -683437, -965831, -296353, -97174, 276489,
--503585, -636192, -1466731, -630286, 28454, 351114, 299037, -766652, -149787, 13422,
-198105, -143881, 205085, -44560, 385473, -31139, -728534, -1153736, -1250909, -82141,
--748398, 257698, 7541963, 3467649, -2860448, 1309965, 1009854, 12002286, -3503083, 3456912,
-5868536, -1104344, 5343476, 2189897, 3646964, -4718559, -1724966, -5533529, -2537252, 3766150,
--74088, -2622078, 668404, -3874597, -270046, -2530273, 3594351, -1541893, -454730, -1387274,
-1927367, 850404, 77846, -438624, 1589138, -5836324, -4474819, 2029909, 572841, -552977,
--2932389, 6985765, 2037425, -884226, 2339147, 2773475, 40802, 1378148, 690953, -3434363,
-3158949, -4090956, -3066070, 3687766, -4341138, 3785477, 1729261, -3300146, 5718212, 3075197,
-2219424, -1545115, 5185636, 1204202, -667331, -1495186, 1605244, 601832, -863288, -6077916,
--843424, -1190243, 1892470, -3574487, 4851166, -1684164, 3981972, -4136591, 175020, -442919,
-4950487, -2304250, -1577864, 883153, 1864553, -72478, 1000727, -763430, -4488778, -519154,
--284542, -247497, -581968, -99858, 56908, -630823, -834834, -942745, -1028645, 69793,
--381715, 10737, 652835, -768799, 518080, 592169, 1373853, -1619740, 1089311, 474594,
-853088, -107911, 1273458, 460098, -569620, -989453, -256087, -474594, 12512850, -10373957,
--9105868, -2929168, 9582072, -1330366, -5182952, 6563247, -4362613, 3104725, -233539, -7130183,
--4847945, 6025839, -3892851, 2989297, -4062502, 3984656, -1764695, -1094680, -446677, -3926137,
-2085207, 2891050, -3947075, 979253, -2002529, 826244, 1816234, -566399, 2601140, 795106,
-2130304, 3370476, -4299263, -3156801, 3905199, 213675, 3035468, 2963528, -2721936, -4056597,
--1606855, 720481, 5374615, -5771899, 2407329, -6446746, -7858180, -1835025, -4485020, -734439,
--5316633, -10131828, -5356898, 4733591, 4424890, 2879239, -3358665, 9741523, -2967286, 1661616,
--5349919, -5047661, 1360431, 22012, -468688, -6376416, -2065879, -343597, -1269163, -1219771,
--3421478, -2749316, 736050, -862215, -1864553, 239981, -3314104, 622233, 1928977, 3347927,
-1880122, -2780991, 2977486, -1910724, -157840, 3333432, 1430224, 513785, -1056562, 1729261,
-1977833, 1553704, 366146, -825171, 318901, 2381023, 1239635, 1545115, 676457, -852551,
-1287417, 272730, -115427, 388695, -640487, 255014, 374736, -667867, 1321239, 1954210,
-2295660, -116501, -143345, 361314, -1432909, 2144263, -112206, 1350767, 16019691, -5257577,
-7490960, -1999307, 10068477, -1953673, -1570347, 1705639, 2020245, -1699733, -11601244, 1149441,
--1138166, -3073586, -199716, -542777, 4097399, -1309965, 9833864, -1289027, 1086627, -691490,
-5550709, -1080184, 1896228, -4594005, -206158, -3149285, -3336653, -925029, -990527, 61203,
-3542811, -6309307, -1916092, 2170032, -777389, 4400731, 955630, -1087164, -2958696, -2864743,
--3141232, -5768678, 2124398, 2475512, 2105608, -10070625, -1545115, 7147363, 3937948, -1595044,
--382252, -3103651, -6997039, -7327751, 7264937, -2243584, -4992363, -2729989, 3915400, 3193845,
-294742, 3577708, 1403917, 3460133, -1766842, -7186017, -2524904, -3228205, -3744675, 5319317,
-3438658, -573915, 5836324, 8848170, -2171643, 3757560, -3481608, -423591, -7516, 3859565,
--362925, 974958, 814970, 1205275, 2991982, -3026341, 2333778, -1568737, 185220, -1924682,
-274341, 1027571, 2117956, 1584843, -96100, 572304, 86436, -230318, 1072668, -2856690,
--448824, -2279554, 483721, -405874, -409096, -996432, -642635, -1188095, 1236951, 605054,
--24026584, 13134547, 4753455, -1153199, -1114007, 18254, -3699041, -6726993, -1498407, 3219078,
-10103374, 6775848, -9300752, -1811403, -5552856, 3720516, -518080, -12541305, -3735548, 7629473,
-4691178, 2582349, 6456947, 3900904, -711891, -860604, 1874216, -4795868, -2858301, 1059246,
-5626944, -2425583, -4818417, -6941741, -3524021, 3415573, 11130945, 744103, -2002529, 2338073,
--2347737, -8317741, 573915, -5880347, -4646618, -5488968, 3359201, -362925, -7812546, 1421634,
-2901251, 3009162, -8448738, -4693863, -3172907, -2117956, -958315, -3138547, -1545115, -4048544,
--8201777, -984621, -6971806, -8352638, -5197984, -1504312, 1392106, -4985384, -7352447, 2122788,
-5823439, -340913, -1120450, -730144, 4224101, -6415608, 4725538, 7498476, 7277822, 5735392,
-9803263, 90731, -4101157, 2618856, 397284, -1075352, -960462, -22012, -2290828, 3224984,
-123480, 213138, -2046015, -581968, 1027571, 1197759, -1210107, -1094680, 578747, 3330747,
--482110, 1248762, 1088774, 2844342, -2375117, 120796, -93416, -2618320, 347355, 334471,
-2151242, 215822, 408022, 1862942, 1148904, -3254512, 1165547, -1180042, -9922448, 3738232,
--4909685, -850940, 1291711, 2923262, -413391, 5124433, 122943, -1037235, -13916768, 6445136,
--2589329, -2960843, 4988605, -8069170, -11092290, 4519916, -3889630, -5204427, -1646046, 10005663,
-6291590, -3669513, -2165201, 4651450, -1391569, -506269, 1343251, 4539244, 8338679, 5304822,
-6746320, -1043677, -296890, 156229, -4453344, 1127966, -1879048, 11352135, -8690329, -5041755,
--4598836, -4310000, 2728915, 1531156, 4065724, -686121, -5741298, -7692824, -2225867, -9575630,
--13329431, -2683281, 357019, 10341208, 2048163, -8219494, -2111513, 7749195, -3294240, 2587718,
-2332167, 4342749, -6172405, -9262634, -4096325, -4721780, 14924474, 1653562, -4791036, 3234647,
-2486786, -1116155, 1877438, 3400004, -418222, 6610492, -8776766, -7873212, 2545842, -3645354,
-7955353, -3696356, -208306, 4263829, -1315871, 3775276, -233002, -209917, -264141, -1309428,
--140660, 3394635, 1265942, 3297461, 1860795, 1636383, 117038, -1233729, -542777, 1369558,
--435402, 401579, -679142, 2361695, -1971927, 1366873, -1766842, 2381559, -2292439, 200253,
--221191, -265214, 1709397, 2243584, -2398202, 1659468, 922881, -823023, 3521336, 8611946,
-2764885, -642098, 5971079, -1056562, -7290170, -1306744, -586800, 7305740, -4025995, -918049,
--2149631, 1229971, -2179159, 505196, 2434173, 3480534, 5008469, 3292629, 1632625, 12765180,
-5079336, 4233227, -474594, -9969693, 726386, -8295730, 2617783, -5608154, 1453846, 75162,
-3295851, 15685221, 4508642, -2378338, 5690295, -4371203, 4858145, -2694555, 8220031, -4405026,
-22012, -6081674, 3793530, 6252936, -7208029, 14746770, -3545496, 1132261, -2199023, -3896609,
-1640141, -4352950, -12537546, 2198487, -3097745, -631360, -7719130, 1917703, -2691334, -12898324,
--5809480, -3548180, -11401528, 6584185, 16591996, 20103132, -19014894, -14494441, -8010114, 890669,
-4824859, -5807870, 2803003, -6600828, 1832340, 9329206, 14334453, -9736691, 16042777, 5207111,
-1947768, 2818036, 2962991, -3445638, 5560372, 5146445, 6186364, 4789963, 2051384, 7211250,
-115964, 2333778, -46171, 85899, 3940633, -1031329, -4570919, -1154809, 3135863, 2470680,
-1051730, 73014, -205085, -288300, 3162170, 2566243, 1176821, -2626373, 791885, 886911,
-144418, 3393561, 1525250, 2153926, 84826, 2572686, 1517734, 2601140, 3533684, 3700651,
-332323, 259846, -1692754, 4072166, 3631395, -282394, -976568, 526670, 2649995, 7444252,
--13361106, 19958714, 639413, 11780558, 4411469, -3830574, -3963718, 10931229, -6081137, 6988449,
-8567923, -852014, -5637145, 556735, 8855686, 5084168, 4663798, 4076461, -540629, 1611687,
-3131031, 11162083, 7937100, -5623723, -4756677, -671089, -2296734, -993211, -5506685, -3611531,
-5729487, 9865003, 2701535, 14769856, -3824132, 16129750, 961536, 7707856, 17770964, 12628278,
-4221416, 3794604, 8164733, -1522566, -6844031, 164283, 7700340, -4093641, -7885560, 506806,
--1046898, 16228534, 13122736, 39728, 18365280, -1412507, 9987410, 5341329, 7951595, -812823,
--6006512, 8325794, -1391033, 9705552, 6761353, 20298016, -10993506, -1743220, -22450868, 5017596,
--10910828, -1329829, 10700374, -4095251, 4546760, -1679332, 12470438, -3027952, -8256001, -453656,
--2637647, 3845606, -287763, 6109591, 7209103, 2028298, -1564442, 5692979, -948651, 2570001,
-296353, -3461744, 2777233, 2752000, 5104569, 2701535, 5689221, 2613488, 176631, 399432,
--1395328, 251792, 5589900, -1710471, -3716757, 2488397, 1074, 973347, 4636954, 1176821,
-1358820, 2002529, 3186329, -729608, -230318, 2110977, 3825742, 5852967, 5512054, 179852,
-2778844, 238371, 72478, 2661806, 3980898, -13140989, -9638443, 4751308, -7782481, 4469987,
--4685810, 1292248, 12120398, -2069101, -11393474, 3074123, -4769561, 11628624, -12171400, -8542690,
-4996121, 5582921, 8538395, 265751, -810138, 5449240, -3305514, -8389145, 5220533, -3482682,
--6616934, 1937567, 6560563, -4841502, 12299713, 4897337, -400506, 1538672, 6049999, 2550674,
--20883742, 8474507, -2095944, -2296197, -3562139, 11046119, 117575, 11763915, 548682, 943282,
-1360968, -3232500, -1216550, 5657009, -6645388, 1485522, 19090056, 1566589, 14057965, 973884,
--2777770, -1647657, -9351754, -19687594, -14178761, 6353331, 9062381, -3998615, 15061377, 6277095,
--10608569, -6359236, 13807783, 9615358, 9190156, 2653753, -4108136, -15032, -638876, -8572218,
--2484102, -5075578, -22901840, -10053445, -405874, 15308874, 3576097, -3735548, 1796907, 13113072,
--3153043, 507880, 225486, 3194382, -4209068, -2262911, -3102040, -2049236, -991601, 3010235,
-10201, -756988, -31139, 2310693, 2175938, 3706020, -2578054, -4513474, 1742683, -4769025,
--2330557, 370441, 1856500, 322659, -598074, 4562329, -2016487, -1639067, -5306969, 1879585,
--4771172, 3716757, 1967095, 2386928, -3992709, 144955, -489626, 1821066, -2191507, 1362578,
--1927367, 2382633, -4430796, -85362, -5232344, 6077379, 12774306, 5026186, 4454955, 14627585,
-12272869, 10285910, 653909, 3990562, 1033477, -2075543, -2547453, 2613488, -889595, -8352101,
-2136746, 8702677, 152471, -2178085, 2862596, -20781200, 7251516, -8123931, 5469641, 7383586,
-6680285, -7645579, 4507032, -558883, 75162, 12711493, 9359271, 377420, 5130339, 3867081,
--1437203, -6860137, 1987496, 6335614, 374199, 9128953, 2915209, 8281771, 16082505, 1080721,
-6646462, 7031399, 8745627, -102005, -5172751, 13928042, -5028870, 11293617, -12738336, -10436234,
-15249818, -496069, 5218386, 9091909, 13342316, 17169668, 7398618, 2586644, -7988103, 3981972,
--1421634, -14858439, 13102871, 8256538, -12103755, -468688, 1044214, -15234786, 5485747, 12593918,
-7559143, 164819, 5014375, 3643206, -6943889, 13760001, 1573569, -2372433, 7230578, 13614509,
-5519570, -261993, -4381404, -3381750, -1320166, 2557653, 4044786, 5790690, 2080375, 1232656,
-2005213, 6721624, 6038187, 7442105, 191126, -475131, 3127273, 6414534, 306016, 854162,
--944356, 3118683, 789737, -418759, -2028298, 1751810, -4132296, -7594576, -73014, 4720706,
-173409, 3425237, -3471944, 2700461, 458488, 3028489, 715649, -1831267, 2080375, -1138703,
--875100, -202400, -4480725, 3686156, -1465658, 1705102, 2939368, 443455, -390305, -1902134,
--2798171, -34899292, -21716428, 7033546, 7378754, 14271103, 23651312, -6576669, -3740380, -7604240,
--7021198, -8963597, -9562745, 708670, 3796214, 2928631, 14922864, 579821, 14645838, -818191,
-5028333, 6708202, 5199058, 10832444, 7767985, 464393, 9603010, -211527, -1146756, -5632313,
-6499360, -972810, -14323179, -12484933, 7773891, -1898376, 17081084, 10089952, 10987600, 3952981,
--21478058, 5063767, 13521094, -2191507, 3943854, -3414499, 2696703, 16843788, -572304, 14092325,
-23728620, 1198296, -8924942, -392990, 275415, -15025406, 20154670, 9441412, -2640331, -1300838,
-14616847, 6714645, -17634062, -14554570, 5712844, -6431714, 8493298, 5922760, 2724620, -7178501,
--12503724, -793495, 3235721, 2165737, 13641890, -18446884, 2728915, -1458141, -15397458, -7592966,
--15482820, 13353590, -4546760, 18541374, -14689325, 1135482, -7027640, 10424422, 4723391, -4866198,
--807991, 9575630, 702764, 2808372, -5602248, -3297461, -4720706, 8440684, 4425964, -314069,
-2418604, 2325188, -7883413, 245350, -2143189, 2499671, 1777043, -2037425, -8049843, -3164317,
--5914170, 6877317, -5242008, 839129, -1321239, 6790880, -1386201, -1596117, -2413772, -4801774,
--136902, -3315178, 2966749, 7493108, 6988986, -867047, -7049115, 8727910, 24712704, -29417842,
--8232379, -14340896, -606127, 4663261, 775778, 19722490, -20357072, 9623948, -2783139, 3931506,
--2468533, 10831371, -5976984, -10076530, -847719, -2935073, 7650411, -635118, 5170604, 11476689,
--2393908, -8596914, -1156957, 12906914, -7598871, 3080029, 2895882, 515933, -1178969, 12819941,
--491774, -3301756, -21413096, 6890738, -5304822, -13514651, -11771432, -3119757, -13048648, -7678328,
--11332808, 5377299, -13372918, 13339095, -12275553, 8272644, -6348499, 16171089, -15671262, -9090835,
--2371359, 9373229, 3843459, 86436, -6458557, -12823699, 1289564, 5022428, 18304614, 9613211,
-3983045, -10469520, 6217502, -9286256, -10499048, 9155260, -10193568, 4857608, 11854647, 9913858,
--2659659, -3776350, -8584566, 14294725, 1377611, 13681618, 22080426, -4315906, -11617887, -5170067,
--3883187, -7953206, 3475166, -13206488, 5733245, 4320200, 3946001, 10460930, -7413651, 396748,
--1371705, 2659659, 9477919, 286689, 7446937, -2702071, -208843, 948651, -4269198, -1506460,
-4458176, 2382633, -6091338, -7903277, -3795677, 3500398, 3096135, -3467649, 11265699, 3318936,
--8302709, 4172024, 6000606, 15074261, 12199318, 6871948, 2494302, 1460826, -6370510, -4948876,
--255014, -5014911, 903554, -2907156, -9287867, 5100274, -3109556, -1285806, 1039382, 5026186,
-63888, 16460999, 22759568, -23894514, 17719424, 12373801, 694711, 8930311, 30218316, -8390755,
--8577050, 2938295, 8965207, 12586939, 4222490, -11680164, 13407814, -4813048, 26715234, -624918,
--4290136, 8687108, 7098507, 6997576, -180389, 25057912, -20648592, 5140002, -270046, 6933688,
--8550206, -17202954, 8704825, 6853157, 7121056, -5973763, -4489852, 20956756, 7943542, 26316876,
-2510945, -9634685, -930397, 5905580, -2169495, 27314918, -3314641, 14905147, -2527588, 24515136,
-9027484, 6665253, -5814849, -1302986, 13573707, 323196, 14527190, 10947335, 12852153, -16838420,
-2834679, 12151536, 14649597, 10917270, 8441758, 19621558, 24119462, -18235894, -2069101, 36538896,
--8642548, -9810779, 23732378, 31891206, 731218, -253940, -17090748, -14106283, -797253, 16046535,
--2202781, -2949569, 862752, -1160715, -4297652, -12206297, -4341138, -867583, -7120519, 558883,
-7572564, -4086662, 9646497, -9546639, 8522289, -1887638, 7442642, -7140383, 389231, 5468567,
-3318399, 9308805, -1488206, -4811974, -2005213, 2819646, 8600672, 2570001, -2868501, 11738682,
--3483219, 6221797, 6328098, -995359, -1148904, -2571612, 17195438, -6154152, 2346663, 4416837,
-6496138, -3016678, -10890426, -6342593, -1765232, 12945031, 6398965, -900333, 932545, 4647692,
--665183, 221728, 4719632, 2481954, 1327145, 178241, 10069551, 22585086, -1319092, 7094212,
--19186156, 18393734, -9706089, -5943161, -16801376, -10853919, 34561600, 550293, -24283208, -10771241,
--702227, 170188, -3193308, 26774826, 12479027, -2201708, -11146514, -980326, 7018514, -3224447,
-35554812, 7645042, 15622407, 5478768, -8031052, -20048370, 4708895, -137976, 3122978, -15507516,
--1691143, -10439455, 11948599, 173409, 1917703, 12553653, -11326903, -8152922, 2395518, 659814,
-3631395, -17114370, -13612899, -29402272, -15524696, 1395328, -16947404, 2390686, -12327093, -7195681,
-21825950, 7030325, -10766409, 6706592, 2377265, 52613, 20975010, -3468186, 25428354, 9925133,
--11125576, -31033286, 5303211, 5128191, 17132088, -9174587, -22552336, -7820599, 6342056, 1282585,
--5506148, -15955267, -5347771, -22610856, -26134340, 8290361, -1626182, 26781806, -8697309, -16022912,
--14285061, -1110249, 18605798, -821949, 6719477, 12265353, 9027484, -3927211, 5909875, 8456791,
-2528662, 8666707, 8067023, -5660230, -1091459, 12065100, -2594697, 1880122, 11014444, -1905355,
-6426345, -8080981, 2986076, 6720013, -4074850, 4119411, 3427921, -7516193, 10040023, -9490804,
-4696547, 5456219, 7895761, -1755031, -5954972, 11300059, -1781338, 8437463, -12088185, -5420249,
--8974871, -6964827, 739808, -5674726, 4110284, 937377, 1496796, -11443403, 16091095, -18048526,
--1185411, 27169964, -5976984, 7971460, 2727304, 3513820, -25668872, 21132850, -2232309, -20551418,
--12105902, 10641318, -3185792, 5283884, -259309, -8568460, -6459094, 3600256, -6471442, -1558536,
--500364, -29734596, -7899519, -19963544, 4251481, 6988449, -328028, -8832600, 3368865, -4267050,
-11479911, -26321170, 1605781, 4496831, 14861124, -11506217, 13834090, -11335492, 8745090, 2302103,
-10726681, -17214766, 5086852, -8570607, -18376554, 11758010, -14902463, -29705068, 4189204, -2861522,
-23192824, -11357504, 3104188, 10648298, 15331960, 17457432, 1725503, -6098854, -11210402, 263604,
-8193187, 11465415, -23249194, 25777856, -365609, -17555142, -13221520, -23329188, 9298067, 5549098,
-9087077, 3996467, 24479702, -8849780, 26619670, -14634564, 6106370, -6007049, -12611098, -37428492,
-20900922, 3930969, -10065256, -25444996, -1640141, 4592931, -2337536, 9164923, -7002408, -8258685,
--1486596, 3835406, -7284265, -7140920, -4663798, -1433445, 3754338, -2331630, -2432562, -10177462,
-7284802, 102542, -5675263, 4463008, -4167192, 7613367, -2578054, 3734474, 4964982, 9432285,
--3486440, 8548059, 785979, 328028, -9576703, -7540889, 2113661, 3369402, 1113470, 328565,
--2010582, -6325950, -3604551, -3098819, -6907381, -3270081, 11535208, -6061810, -6873559, 3454764,
--14854681, -22018686, -138513, 12067247, -4871567, -23842438, -3847754, -34819836, 16785270, -38475928,
-22879290, -26614302, -23251880, 6564321, 19836844, 14824080, -13280039, 13906030, 24968256, 4409858,
-3664144, 5852967, 2179159, -14795089, 17881560, -30185030, -18815714, 1658394, -1953673, -1968169,
--4096862, -7544110, 3933653, 27717034, 7082401, 3828963, 2505040, -13081397, 16015933, -2937758,
--28015534, -4321274, 499827, 579821, -19200652, -13512504, 14592151, -4804995, 25112136, 4663798,
--88047, -20532628, -11356967, 7554848, 3148748, -5601174, 21496848, -17104170, -10498511, -747324,
--1374926, 20393042, 1547262, 23858006, -104690, -19485730, 4742181, -16609175, 12550968, -2319819,
-17142826, 32658932, -50352048, 17135308, 6841883, 9223442, 18906982, 4742181, -23154706, -5317707,
--2203318, -4135517, 11664057, -23562190, 2127083, -6141267, -3470334, -16217260, -8849780, -24552718,
-2633352, -1500554, 2427194, 6828998, -10090489, -1749662, 11844446, -7297687, 2240899, -4033511,
--12226161, 5701032, 7224135, -8427800, -995896, -13353590, -889058, -19348290, 6883222, 4850629,
--2522757, 2164664, -5001490, 903554, 3853123, -3023120, -3724274, 11190000, 13465259, -2950106,
-4401805, 2289755, 13823889, 6296959, -17620104, 2435783, 9962714, -5602248, 10067940, 3397319,
-4584878, 41149008, 35566624, -10129680, -13700409, -778463, -26986890, 15818365, -1500017, 5988258,
-2146947, -13632226, 41059352, -17591650, -72296112, -10558103, 14485851, -48673252, -8296803, 15269146,
--41205380, 5750961, 26911192, -18939196, 26848378, -25706454, 23074712, 28584618, -18190260, 7800198,
--2578054, 640487, -7674033, -11281268, -2028298, 17598628, -11275363, -18844706, -10246718, -15173046,
--1550483, -11907260, -1890323, 6313065, -2778307, 17184702, -15093052, -18602578, 14894947, -19679004,
--29152090, -37446748, -12989055, -881542, 7348152, 20881594, -8654896, 9364102, 9844065, -6863895,
--3164317, 34400004, -22675280, -872415, 23606750, 7303592, 18577344, -4622459, 6816113, 26118232,
-13494787, -1417339, -3116536, -16095390, 6670084, 26270168, -24356760, 18581640, -24102282, 7056095,
-34249144, 7879655, -19127636, 19434728, 3159485, -12266963, -9504763, 23517094, 7814693, 10143639,
--1343788, 1779190, 6525129, 7713762, -627065, -2356863, 10078141, 8724689, 1913408, -11625403,
-12870406, 1580548, -4338991, 3144990, 4460324, -8466991, -2171106, 6524592, 1334124, 10869488,
--13353590, 20192788, 15722265, -2785286, -12734578, -5207648, 13533442, 15388331, 24901146, -774705,
-4845797, 4055523, 13676786, -20728050, -10995653, 20774756, 13057774, 1396938, -3307662, 1772748,
-5789616, -10859288, -8471286, -7310571, 1555315, 6612102, -3320547, -11778411, -8421357, 36103496,
-24460376, -34862248, -7054484, 31077846, -9496710, -19296214, -13625247, -19363324, -11431055, 31371514,
-19133542, -2573222, 14236206, -3474629, 17359720, -10981158, -6096169, 34852584, -14549202, 6257768,
--10124312, -3824132, -420907, 9492415, 28372018, 10887205, -19268834, -5701032, -909996, -2973191,
-15961172, 2077690, 28572270, -8489003, 4920422, -3012383, 8327405, -24034100, 14386530, -22176526,
-14955076, -1238561, 21959094, -5801427, 16280074, -7585449, 5116917, 9278203, -9500468, 9613747,
-22173306, 27631672, -14689325, 28312962, 11923903, 33602212, -9684614, 6268505, -1271847, -4233764,
--6473590, -2415919, -11169599, -55309516, -34782792, -10792716, -718333, 7738458, 3869229, 12659953,
-20774756, -30488900, -1735704, -12378096, 45967960, -3324842, -14035953, -4107599, -40397388, -33872260,
-50808388, 20566450, 11327976, -7955353, 15888158, 1203665, -37002216, 7437273, 2459406, -14179835,
--14472966, 2202245, 153545, 3809636, -7792145, -4061429, -18166102, -15450071, 6427956, 7923678,
-6944962, 5264020, -9486509, -13976360, -8507256, -18046378, 11247982, 3711926, -31913218, -3924526,
--9318468, -2360085, 15477988, -14826227, -20692078, -4700842, 13204340, 4324495, -14405857, 8346732,
-18289044, -34418796, -9330280, 12002286, -747324, -2803003, -6667937, -1588601, 5825587, 10022843,
-2266132, 27487254, -39482560, 37381784, -10768557, -11015517, 9705015, 17462800, -30896384, -6095096,
-653909, 6307697, 1778117, -773094, 15662672, -9324374, 2103997, 8286603, 9161165, 13083544,
-10841034, 3697430, -16910360, -3318936, 23247584, -22371948, -19119584, 24091008, 8291971, 17052094,
-26320634, 40758164, -9118752, -25750476, 34491272, -13784698, -5705864, 35949952, 11362873, -13051869,
--37304476, -24588688, -3658239, -13710072, 17693654, 35431868, 18204218, -12021077, 36385888, 12312597,
--13048648, 10115722, 40593348, 11825656, 7946763, -8435853, -32342714, -43443596, -34517580, -2388002,
-26346404, 8136816, 16683800, 62194884, 30693984, -37044092, -24928528, 16589311, -51339892, -23514946,
-44462576, 15970299, -57053272, -47575352, -22022444, -36393944, -34215320, -20412906, 31209916, -8729521,
--6415071, 81292992, 13749801, -23234162, -6369974, -25113210, 43233140, -8964670, 9471477, 3110630,
-718333, -23493472, -9036074, -1724966, -11869679, 2975339, 9343701, 21249350, 2838437, -14224932,
--534187, 58519, -9386114, 4499515, 6207302, 7289633, -18640158, 4945118, -17265232, 3156264,
-9169218, -880468, 13902272, -3211562, -843961, 14151380, -2814814, 7979513, 15589658, -5128191,
-4677757, 10882373, 11724724, 9761924, 1964948, 2570001, 8160438, -8408472, -3275986, 5769215,
--55371256, 38477000, 16551730, 12497281, 15498389, -5877663, 19000936, 15626702, 22262962, -4143570,
-30507690, -19067508, 23152022, -8346732, -17648558, -5545340, -28981902, 3083250, -10618233, 10327249,
--7328825, -11172284, 27877558, -31922882, 20670604, -1029718, -13910325, -5521181, 12360379, 14014478,
-10096931, 26419954, 21264384, -15201500, -3172370, -13593035, 11854647, -12040404, 9245991, 12760348,
-5818070, 7187628, 4724464, -7452305, 29097330, -2665564, 8648454, 2964601, 13404593, 7496329,
--34799972, 2312303, -20823076, 5364951, 15349139, -2792803, -14752139, -13450764, 32409286, -34213172,
--27737436, 50939384, -21643414, 13254269, 5033702, 16399796, -7708930, 8608725, -35449588, 2481954,
-34360812, -18366354, -13947369, 29709900, -2068027, -24530706, -18252000, 10989748, -9692131, -5657546,
-18340048, -13497472, 4521527, 22977538, -25880400, 1763621, 15048492, -8313446, -5207111, -6677601,
-9227737, 2637647, 3674882, -3320547, 5200132, 4046933, -5163088, 468151, 823023, 13749264,
-6794102, -12740484, 15579994, 4005594, -8090645, 4662187, 4677757, -1333051, -4793184, 11332271,
--108448, 3882651, 1275605, 14634564, -6891275, -5373004, 8680129, -12954695, 16275779, -1130113,
--9451612, -1422708, -1169305, 2087891, -374199, -6201933, -1145683, 8682813, 16917340, -33296198,
--133538584, -144016688, -5728950, -82831128, 72360536, 262967968, 114325584, 158387664, 200176080, -76316736,
--54129472, -21854404, -180769808, -126582888, -41391672, -198159056, -86655800, -18097918, -81309640, 18751828,
-185025040, 168054560, 181899376, 235933824, 141960480, -13314935, 52640728, -53497576, -210872688, -114791592,
--85074176, -175296400, -120353040, 6186364, -135085856, -44795436, 29203630, -134963440, -69459824, 100114080,
-38526932, 108614888, 271280864, 220455296, 178168672, 320967744, 232829104, -4465156, 33058364, -60588028,
--288547168, -275825472, -284534592, -442900256, -300178496, -185716528, -181822064, 1661079, 143129248, 161299648,
-226247600, 342817856, 317198912, 267728400, 264304240, 151151712, 52784076, 7910256, -16838956, -120864136,
--207668112, -254826848, -272832960, -368158144, -306171040, -236220512, -115888416, 122686816, 363162560, 338246400,
-370649248, 259796128, 31206158, -35900556, -111983760, -153708288, -104126648, -51354924, -51825224, -23244364,
--24068996, -37835440, -284005, 4848481, 26501022, 84107808, 76287744, 56124484, 77304040, -7900056,
--50851876, -7302518, -59614684, -51641076, 31113816, 33757908, 7384123, 7334194, -90561000, -230745504,
--218571424, -186180928, -140436848, 67604392, 209500448, 256379488, 323928032, 290386496, 178890752, 124091808,
-43705588, -52121040, -108837152, -129674728, -168087296, -206096688, -232428064, -271307168, -241328304, -83675088,
-58921584, 139241232, 180591568, 196377712, 147273360, 102186936, 51091856, -2022393, -6049462, 24994026,
-39906688, 43802224, 47631724, 39638792, 3680787, -32318556, -70068096, -125386736, -120377192, -96618512,
--78635480, -38289096, 3576097, 27172110, 24034636, 15705085, 9292162, 7614440, },
+5020817, -1855426, 3221, 4694936, -2680060, 1831804, -344671, 656593, -3192235, -6675990,
+-1378685, 2623688, -1717450, 1596117, 2311229, 1965484, -1469953, 1113470, -4134443, -757525,
+1030792, 1708860, -143345, -93952, 510027, 1019518, -3462818, -2873333, 1208496, 2392297,
+-1198833, 2504503, 4777614, -6426345, 910533, -3075197, -2086280, 1433982, -801548, 3948149,
+-1226750, 3555696, 1866163, 581431, -256624, 1900523, 111669, -388695, -2005750, 5763309,
+-4003447, -1213865, 2024540, 2238215, -102005, -1949378, 1106491, -2156074, 2234457, 430034,
+812823, -45634, -766115, -711891, 2985539, -7693360, 1804423, -989990, -4466229, -756451,
+3760781, 1820529, 2334852, -3367791, 2707977, -1172526, 1702418, 1038308, 1324461, -1422171,
+561030, 2026151, -1344325, -3005940, 1225139, -2790118, 537945, 2049236, -3221, -1008244,
+-1167157, 550293, 1094680, -452582, 1315334, 62277, 941135, 812286, -370978, -190052,
+355409, -433792, -268435, -336081, 361851, -601832, 295816, -882079, -225486, -826781,
+-125091, -259309, -945430, -201327, -8958228, 6958921, -3354370, 1549946, 1292248, 210453,
+-1925219, -155693, -5038534, -6266894, 1705639, -1201517, 1949378, 1977296, 5639292, -4614406,
+667331, 3847754, 3712999, -3741990, -4006131, -2110977, -3479997, 332323, -1169842, -2688650,
+-2089502, 30602, -6345278, -6032819, -1285806, 1224603, -556735, 522912, -732829, 1397475,
+-3337190, 3865471, -1363115, 2210298, -484794, 1568200, -3045669, 1053878, 2099165, 2564096,
+1092532, 510027, 901406, -1065689, -2527052, 5142687, 3861713, 1645509, -1926293, 6372121,
+4289062, -1784559, 4031901, -302258, -3171833, -756451, -1152125, -2801393, 1825898, 2136209,
+1006096, -2145336, 4475893, -2945274, 2617246, 3815005, -740345, 412854, -5600101, -2454037,
+-6026376, 904628, 2848100, -2859911, -875100, 1147293, -2734284, -736050, 1313723, -131533,
+938450, -594853, -1461900, -3931506, -1951526, -683437, -965831, -296353, -97174, 276489,
+-503585, -636192, -1466731, -630286, 28454, 351114, 299037, -766652, -149787, 13422,
+198105, -143881, 205085, -44560, 385473, -31139, -728534, -1153736, -1250909, -82141,
+-748398, 257698, 7541963, 3467649, -2860448, 1309965, 1009854, 12002286, -3503083, 3456912,
+5868536, -1104344, 5343476, 2189897, 3646964, -4718559, -1724966, -5533529, -2537252, 3766150,
+-74088, -2622078, 668404, -3874597, -270046, -2530273, 3594351, -1541893, -454730, -1387274,
+1927367, 850404, 77846, -438624, 1589138, -5836324, -4474819, 2029909, 572841, -552977,
+-2932389, 6985765, 2037425, -884226, 2339147, 2773475, 40802, 1378148, 690953, -3434363,
+3158949, -4090956, -3066070, 3687766, -4341138, 3785477, 1729261, -3300146, 5718212, 3075197,
+2219424, -1545115, 5185636, 1204202, -667331, -1495186, 1605244, 601832, -863288, -6077916,
+-843424, -1190243, 1892470, -3574487, 4851166, -1684164, 3981972, -4136591, 175020, -442919,
+4950487, -2304250, -1577864, 883153, 1864553, -72478, 1000727, -763430, -4488778, -519154,
+-284542, -247497, -581968, -99858, 56908, -630823, -834834, -942745, -1028645, 69793,
+-381715, 10737, 652835, -768799, 518080, 592169, 1373853, -1619740, 1089311, 474594,
+853088, -107911, 1273458, 460098, -569620, -989453, -256087, -474594, 12512850, -10373957,
+-9105868, -2929168, 9582072, -1330366, -5182952, 6563247, -4362613, 3104725, -233539, -7130183,
+-4847945, 6025839, -3892851, 2989297, -4062502, 3984656, -1764695, -1094680, -446677, -3926137,
+2085207, 2891050, -3947075, 979253, -2002529, 826244, 1816234, -566399, 2601140, 795106,
+2130304, 3370476, -4299263, -3156801, 3905199, 213675, 3035468, 2963528, -2721936, -4056597,
+-1606855, 720481, 5374615, -5771899, 2407329, -6446746, -7858180, -1835025, -4485020, -734439,
+-5316633, -10131828, -5356898, 4733591, 4424890, 2879239, -3358665, 9741523, -2967286, 1661616,
+-5349919, -5047661, 1360431, 22012, -468688, -6376416, -2065879, -343597, -1269163, -1219771,
+-3421478, -2749316, 736050, -862215, -1864553, 239981, -3314104, 622233, 1928977, 3347927,
+1880122, -2780991, 2977486, -1910724, -157840, 3333432, 1430224, 513785, -1056562, 1729261,
+1977833, 1553704, 366146, -825171, 318901, 2381023, 1239635, 1545115, 676457, -852551,
+1287417, 272730, -115427, 388695, -640487, 255014, 374736, -667867, 1321239, 1954210,
+2295660, -116501, -143345, 361314, -1432909, 2144263, -112206, 1350767, 16019691, -5257577,
+7490960, -1999307, 10068477, -1953673, -1570347, 1705639, 2020245, -1699733, -11601244, 1149441,
+-1138166, -3073586, -199716, -542777, 4097399, -1309965, 9833864, -1289027, 1086627, -691490,
+5550709, -1080184, 1896228, -4594005, -206158, -3149285, -3336653, -925029, -990527, 61203,
+3542811, -6309307, -1916092, 2170032, -777389, 4400731, 955630, -1087164, -2958696, -2864743,
+-3141232, -5768678, 2124398, 2475512, 2105608, -10070625, -1545115, 7147363, 3937948, -1595044,
+-382252, -3103651, -6997039, -7327751, 7264937, -2243584, -4992363, -2729989, 3915400, 3193845,
+294742, 3577708, 1403917, 3460133, -1766842, -7186017, -2524904, -3228205, -3744675, 5319317,
+3438658, -573915, 5836324, 8848170, -2171643, 3757560, -3481608, -423591, -7516, 3859565,
+-362925, 974958, 814970, 1205275, 2991982, -3026341, 2333778, -1568737, 185220, -1924682,
+274341, 1027571, 2117956, 1584843, -96100, 572304, 86436, -230318, 1072668, -2856690,
+-448824, -2279554, 483721, -405874, -409096, -996432, -642635, -1188095, 1236951, 605054,
+-24026584, 13134547, 4753455, -1153199, -1114007, 18254, -3699041, -6726993, -1498407, 3219078,
+10103374, 6775848, -9300752, -1811403, -5552856, 3720516, -518080, -12541305, -3735548, 7629473,
+4691178, 2582349, 6456947, 3900904, -711891, -860604, 1874216, -4795868, -2858301, 1059246,
+5626944, -2425583, -4818417, -6941741, -3524021, 3415573, 11130945, 744103, -2002529, 2338073,
+-2347737, -8317741, 573915, -5880347, -4646618, -5488968, 3359201, -362925, -7812546, 1421634,
+2901251, 3009162, -8448738, -4693863, -3172907, -2117956, -958315, -3138547, -1545115, -4048544,
+-8201777, -984621, -6971806, -8352638, -5197984, -1504312, 1392106, -4985384, -7352447, 2122788,
+5823439, -340913, -1120450, -730144, 4224101, -6415608, 4725538, 7498476, 7277822, 5735392,
+9803263, 90731, -4101157, 2618856, 397284, -1075352, -960462, -22012, -2290828, 3224984,
+123480, 213138, -2046015, -581968, 1027571, 1197759, -1210107, -1094680, 578747, 3330747,
+-482110, 1248762, 1088774, 2844342, -2375117, 120796, -93416, -2618320, 347355, 334471,
+2151242, 215822, 408022, 1862942, 1148904, -3254512, 1165547, -1180042, -9922448, 3738232,
+-4909685, -850940, 1291711, 2923262, -413391, 5124433, 122943, -1037235, -13916768, 6445136,
+-2589329, -2960843, 4988605, -8069170, -11092290, 4519916, -3889630, -5204427, -1646046, 10005663,
+6291590, -3669513, -2165201, 4651450, -1391569, -506269, 1343251, 4539244, 8338679, 5304822,
+6746320, -1043677, -296890, 156229, -4453344, 1127966, -1879048, 11352135, -8690329, -5041755,
+-4598836, -4310000, 2728915, 1531156, 4065724, -686121, -5741298, -7692824, -2225867, -9575630,
+-13329431, -2683281, 357019, 10341208, 2048163, -8219494, -2111513, 7749195, -3294240, 2587718,
+2332167, 4342749, -6172405, -9262634, -4096325, -4721780, 14924474, 1653562, -4791036, 3234647,
+2486786, -1116155, 1877438, 3400004, -418222, 6610492, -8776766, -7873212, 2545842, -3645354,
+7955353, -3696356, -208306, 4263829, -1315871, 3775276, -233002, -209917, -264141, -1309428,
+-140660, 3394635, 1265942, 3297461, 1860795, 1636383, 117038, -1233729, -542777, 1369558,
+-435402, 401579, -679142, 2361695, -1971927, 1366873, -1766842, 2381559, -2292439, 200253,
+-221191, -265214, 1709397, 2243584, -2398202, 1659468, 922881, -823023, 3521336, 8611946,
+2764885, -642098, 5971079, -1056562, -7290170, -1306744, -586800, 7305740, -4025995, -918049,
+-2149631, 1229971, -2179159, 505196, 2434173, 3480534, 5008469, 3292629, 1632625, 12765180,
+5079336, 4233227, -474594, -9969693, 726386, -8295730, 2617783, -5608154, 1453846, 75162,
+3295851, 15685221, 4508642, -2378338, 5690295, -4371203, 4858145, -2694555, 8220031, -4405026,
+22012, -6081674, 3793530, 6252936, -7208029, 14746770, -3545496, 1132261, -2199023, -3896609,
+1640141, -4352950, -12537546, 2198487, -3097745, -631360, -7719130, 1917703, -2691334, -12898324,
+-5809480, -3548180, -11401528, 6584185, 16591996, 20103132, -19014894, -14494441, -8010114, 890669,
+4824859, -5807870, 2803003, -6600828, 1832340, 9329206, 14334453, -9736691, 16042777, 5207111,
+1947768, 2818036, 2962991, -3445638, 5560372, 5146445, 6186364, 4789963, 2051384, 7211250,
+115964, 2333778, -46171, 85899, 3940633, -1031329, -4570919, -1154809, 3135863, 2470680,
+1051730, 73014, -205085, -288300, 3162170, 2566243, 1176821, -2626373, 791885, 886911,
+144418, 3393561, 1525250, 2153926, 84826, 2572686, 1517734, 2601140, 3533684, 3700651,
+332323, 259846, -1692754, 4072166, 3631395, -282394, -976568, 526670, 2649995, 7444252,
+-13361106, 19958714, 639413, 11780558, 4411469, -3830574, -3963718, 10931229, -6081137, 6988449,
+8567923, -852014, -5637145, 556735, 8855686, 5084168, 4663798, 4076461, -540629, 1611687,
+3131031, 11162083, 7937100, -5623723, -4756677, -671089, -2296734, -993211, -5506685, -3611531,
+5729487, 9865003, 2701535, 14769856, -3824132, 16129750, 961536, 7707856, 17770964, 12628278,
+4221416, 3794604, 8164733, -1522566, -6844031, 164283, 7700340, -4093641, -7885560, 506806,
+-1046898, 16228534, 13122736, 39728, 18365280, -1412507, 9987410, 5341329, 7951595, -812823,
+-6006512, 8325794, -1391033, 9705552, 6761353, 20298016, -10993506, -1743220, -22450868, 5017596,
+-10910828, -1329829, 10700374, -4095251, 4546760, -1679332, 12470438, -3027952, -8256001, -453656,
+-2637647, 3845606, -287763, 6109591, 7209103, 2028298, -1564442, 5692979, -948651, 2570001,
+296353, -3461744, 2777233, 2752000, 5104569, 2701535, 5689221, 2613488, 176631, 399432,
+-1395328, 251792, 5589900, -1710471, -3716757, 2488397, 1074, 973347, 4636954, 1176821,
+1358820, 2002529, 3186329, -729608, -230318, 2110977, 3825742, 5852967, 5512054, 179852,
+2778844, 238371, 72478, 2661806, 3980898, -13140989, -9638443, 4751308, -7782481, 4469987,
+-4685810, 1292248, 12120398, -2069101, -11393474, 3074123, -4769561, 11628624, -12171400, -8542690,
+4996121, 5582921, 8538395, 265751, -810138, 5449240, -3305514, -8389145, 5220533, -3482682,
+-6616934, 1937567, 6560563, -4841502, 12299713, 4897337, -400506, 1538672, 6049999, 2550674,
+-20883742, 8474507, -2095944, -2296197, -3562139, 11046119, 117575, 11763915, 548682, 943282,
+1360968, -3232500, -1216550, 5657009, -6645388, 1485522, 19090056, 1566589, 14057965, 973884,
+-2777770, -1647657, -9351754, -19687594, -14178761, 6353331, 9062381, -3998615, 15061377, 6277095,
+-10608569, -6359236, 13807783, 9615358, 9190156, 2653753, -4108136, -15032, -638876, -8572218,
+-2484102, -5075578, -22901840, -10053445, -405874, 15308874, 3576097, -3735548, 1796907, 13113072,
+-3153043, 507880, 225486, 3194382, -4209068, -2262911, -3102040, -2049236, -991601, 3010235,
+10201, -756988, -31139, 2310693, 2175938, 3706020, -2578054, -4513474, 1742683, -4769025,
+-2330557, 370441, 1856500, 322659, -598074, 4562329, -2016487, -1639067, -5306969, 1879585,
+-4771172, 3716757, 1967095, 2386928, -3992709, 144955, -489626, 1821066, -2191507, 1362578,
+-1927367, 2382633, -4430796, -85362, -5232344, 6077379, 12774306, 5026186, 4454955, 14627585,
+12272869, 10285910, 653909, 3990562, 1033477, -2075543, -2547453, 2613488, -889595, -8352101,
+2136746, 8702677, 152471, -2178085, 2862596, -20781200, 7251516, -8123931, 5469641, 7383586,
+6680285, -7645579, 4507032, -558883, 75162, 12711493, 9359271, 377420, 5130339, 3867081,
+-1437203, -6860137, 1987496, 6335614, 374199, 9128953, 2915209, 8281771, 16082505, 1080721,
+6646462, 7031399, 8745627, -102005, -5172751, 13928042, -5028870, 11293617, -12738336, -10436234,
+15249818, -496069, 5218386, 9091909, 13342316, 17169668, 7398618, 2586644, -7988103, 3981972,
+-1421634, -14858439, 13102871, 8256538, -12103755, -468688, 1044214, -15234786, 5485747, 12593918,
+7559143, 164819, 5014375, 3643206, -6943889, 13760001, 1573569, -2372433, 7230578, 13614509,
+5519570, -261993, -4381404, -3381750, -1320166, 2557653, 4044786, 5790690, 2080375, 1232656,
+2005213, 6721624, 6038187, 7442105, 191126, -475131, 3127273, 6414534, 306016, 854162,
+-944356, 3118683, 789737, -418759, -2028298, 1751810, -4132296, -7594576, -73014, 4720706,
+173409, 3425237, -3471944, 2700461, 458488, 3028489, 715649, -1831267, 2080375, -1138703,
+-875100, -202400, -4480725, 3686156, -1465658, 1705102, 2939368, 443455, -390305, -1902134,
+-2798171, -34899292, -21716428, 7033546, 7378754, 14271103, 23651312, -6576669, -3740380, -7604240,
+-7021198, -8963597, -9562745, 708670, 3796214, 2928631, 14922864, 579821, 14645838, -818191,
+5028333, 6708202, 5199058, 10832444, 7767985, 464393, 9603010, -211527, -1146756, -5632313,
+6499360, -972810, -14323179, -12484933, 7773891, -1898376, 17081084, 10089952, 10987600, 3952981,
+-21478058, 5063767, 13521094, -2191507, 3943854, -3414499, 2696703, 16843788, -572304, 14092325,
+23728620, 1198296, -8924942, -392990, 275415, -15025406, 20154670, 9441412, -2640331, -1300838,
+14616847, 6714645, -17634062, -14554570, 5712844, -6431714, 8493298, 5922760, 2724620, -7178501,
+-12503724, -793495, 3235721, 2165737, 13641890, -18446884, 2728915, -1458141, -15397458, -7592966,
+-15482820, 13353590, -4546760, 18541374, -14689325, 1135482, -7027640, 10424422, 4723391, -4866198,
+-807991, 9575630, 702764, 2808372, -5602248, -3297461, -4720706, 8440684, 4425964, -314069,
+2418604, 2325188, -7883413, 245350, -2143189, 2499671, 1777043, -2037425, -8049843, -3164317,
+-5914170, 6877317, -5242008, 839129, -1321239, 6790880, -1386201, -1596117, -2413772, -4801774,
+-136902, -3315178, 2966749, 7493108, 6988986, -867047, -7049115, 8727910, 24712704, -29417842,
+-8232379, -14340896, -606127, 4663261, 775778, 19722490, -20357072, 9623948, -2783139, 3931506,
+-2468533, 10831371, -5976984, -10076530, -847719, -2935073, 7650411, -635118, 5170604, 11476689,
+-2393908, -8596914, -1156957, 12906914, -7598871, 3080029, 2895882, 515933, -1178969, 12819941,
+-491774, -3301756, -21413096, 6890738, -5304822, -13514651, -11771432, -3119757, -13048648, -7678328,
+-11332808, 5377299, -13372918, 13339095, -12275553, 8272644, -6348499, 16171089, -15671262, -9090835,
+-2371359, 9373229, 3843459, 86436, -6458557, -12823699, 1289564, 5022428, 18304614, 9613211,
+3983045, -10469520, 6217502, -9286256, -10499048, 9155260, -10193568, 4857608, 11854647, 9913858,
+-2659659, -3776350, -8584566, 14294725, 1377611, 13681618, 22080426, -4315906, -11617887, -5170067,
+-3883187, -7953206, 3475166, -13206488, 5733245, 4320200, 3946001, 10460930, -7413651, 396748,
+-1371705, 2659659, 9477919, 286689, 7446937, -2702071, -208843, 948651, -4269198, -1506460,
+4458176, 2382633, -6091338, -7903277, -3795677, 3500398, 3096135, -3467649, 11265699, 3318936,
+-8302709, 4172024, 6000606, 15074261, 12199318, 6871948, 2494302, 1460826, -6370510, -4948876,
+-255014, -5014911, 903554, -2907156, -9287867, 5100274, -3109556, -1285806, 1039382, 5026186,
+63888, 16460999, 22759568, -23894514, 17719424, 12373801, 694711, 8930311, 30218316, -8390755,
+-8577050, 2938295, 8965207, 12586939, 4222490, -11680164, 13407814, -4813048, 26715234, -624918,
+-4290136, 8687108, 7098507, 6997576, -180389, 25057912, -20648592, 5140002, -270046, 6933688,
+-8550206, -17202954, 8704825, 6853157, 7121056, -5973763, -4489852, 20956756, 7943542, 26316876,
+2510945, -9634685, -930397, 5905580, -2169495, 27314918, -3314641, 14905147, -2527588, 24515136,
+9027484, 6665253, -5814849, -1302986, 13573707, 323196, 14527190, 10947335, 12852153, -16838420,
+2834679, 12151536, 14649597, 10917270, 8441758, 19621558, 24119462, -18235894, -2069101, 36538896,
+-8642548, -9810779, 23732378, 31891206, 731218, -253940, -17090748, -14106283, -797253, 16046535,
+-2202781, -2949569, 862752, -1160715, -4297652, -12206297, -4341138, -867583, -7120519, 558883,
+7572564, -4086662, 9646497, -9546639, 8522289, -1887638, 7442642, -7140383, 389231, 5468567,
+3318399, 9308805, -1488206, -4811974, -2005213, 2819646, 8600672, 2570001, -2868501, 11738682,
+-3483219, 6221797, 6328098, -995359, -1148904, -2571612, 17195438, -6154152, 2346663, 4416837,
+6496138, -3016678, -10890426, -6342593, -1765232, 12945031, 6398965, -900333, 932545, 4647692,
+-665183, 221728, 4719632, 2481954, 1327145, 178241, 10069551, 22585086, -1319092, 7094212,
+-19186156, 18393734, -9706089, -5943161, -16801376, -10853919, 34561600, 550293, -24283208, -10771241,
+-702227, 170188, -3193308, 26774826, 12479027, -2201708, -11146514, -980326, 7018514, -3224447,
+35554812, 7645042, 15622407, 5478768, -8031052, -20048370, 4708895, -137976, 3122978, -15507516,
+-1691143, -10439455, 11948599, 173409, 1917703, 12553653, -11326903, -8152922, 2395518, 659814,
+3631395, -17114370, -13612899, -29402272, -15524696, 1395328, -16947404, 2390686, -12327093, -7195681,
+21825950, 7030325, -10766409, 6706592, 2377265, 52613, 20975010, -3468186, 25428354, 9925133,
+-11125576, -31033286, 5303211, 5128191, 17132088, -9174587, -22552336, -7820599, 6342056, 1282585,
+-5506148, -15955267, -5347771, -22610856, -26134340, 8290361, -1626182, 26781806, -8697309, -16022912,
+-14285061, -1110249, 18605798, -821949, 6719477, 12265353, 9027484, -3927211, 5909875, 8456791,
+2528662, 8666707, 8067023, -5660230, -1091459, 12065100, -2594697, 1880122, 11014444, -1905355,
+6426345, -8080981, 2986076, 6720013, -4074850, 4119411, 3427921, -7516193, 10040023, -9490804,
+4696547, 5456219, 7895761, -1755031, -5954972, 11300059, -1781338, 8437463, -12088185, -5420249,
+-8974871, -6964827, 739808, -5674726, 4110284, 937377, 1496796, -11443403, 16091095, -18048526,
+-1185411, 27169964, -5976984, 7971460, 2727304, 3513820, -25668872, 21132850, -2232309, -20551418,
+-12105902, 10641318, -3185792, 5283884, -259309, -8568460, -6459094, 3600256, -6471442, -1558536,
+-500364, -29734596, -7899519, -19963544, 4251481, 6988449, -328028, -8832600, 3368865, -4267050,
+11479911, -26321170, 1605781, 4496831, 14861124, -11506217, 13834090, -11335492, 8745090, 2302103,
+10726681, -17214766, 5086852, -8570607, -18376554, 11758010, -14902463, -29705068, 4189204, -2861522,
+23192824, -11357504, 3104188, 10648298, 15331960, 17457432, 1725503, -6098854, -11210402, 263604,
+8193187, 11465415, -23249194, 25777856, -365609, -17555142, -13221520, -23329188, 9298067, 5549098,
+9087077, 3996467, 24479702, -8849780, 26619670, -14634564, 6106370, -6007049, -12611098, -37428492,
+20900922, 3930969, -10065256, -25444996, -1640141, 4592931, -2337536, 9164923, -7002408, -8258685,
+-1486596, 3835406, -7284265, -7140920, -4663798, -1433445, 3754338, -2331630, -2432562, -10177462,
+7284802, 102542, -5675263, 4463008, -4167192, 7613367, -2578054, 3734474, 4964982, 9432285,
+-3486440, 8548059, 785979, 328028, -9576703, -7540889, 2113661, 3369402, 1113470, 328565,
+-2010582, -6325950, -3604551, -3098819, -6907381, -3270081, 11535208, -6061810, -6873559, 3454764,
+-14854681, -22018686, -138513, 12067247, -4871567, -23842438, -3847754, -34819836, 16785270, -38475928,
+22879290, -26614302, -23251880, 6564321, 19836844, 14824080, -13280039, 13906030, 24968256, 4409858,
+3664144, 5852967, 2179159, -14795089, 17881560, -30185030, -18815714, 1658394, -1953673, -1968169,
+-4096862, -7544110, 3933653, 27717034, 7082401, 3828963, 2505040, -13081397, 16015933, -2937758,
+-28015534, -4321274, 499827, 579821, -19200652, -13512504, 14592151, -4804995, 25112136, 4663798,
+-88047, -20532628, -11356967, 7554848, 3148748, -5601174, 21496848, -17104170, -10498511, -747324,
+-1374926, 20393042, 1547262, 23858006, -104690, -19485730, 4742181, -16609175, 12550968, -2319819,
+17142826, 32658932, -50352048, 17135308, 6841883, 9223442, 18906982, 4742181, -23154706, -5317707,
+-2203318, -4135517, 11664057, -23562190, 2127083, -6141267, -3470334, -16217260, -8849780, -24552718,
+2633352, -1500554, 2427194, 6828998, -10090489, -1749662, 11844446, -7297687, 2240899, -4033511,
+-12226161, 5701032, 7224135, -8427800, -995896, -13353590, -889058, -19348290, 6883222, 4850629,
+-2522757, 2164664, -5001490, 903554, 3853123, -3023120, -3724274, 11190000, 13465259, -2950106,
+4401805, 2289755, 13823889, 6296959, -17620104, 2435783, 9962714, -5602248, 10067940, 3397319,
+4584878, 41149008, 35566624, -10129680, -13700409, -778463, -26986890, 15818365, -1500017, 5988258,
+2146947, -13632226, 41059352, -17591650, -72296112, -10558103, 14485851, -48673252, -8296803, 15269146,
+-41205380, 5750961, 26911192, -18939196, 26848378, -25706454, 23074712, 28584618, -18190260, 7800198,
+-2578054, 640487, -7674033, -11281268, -2028298, 17598628, -11275363, -18844706, -10246718, -15173046,
+-1550483, -11907260, -1890323, 6313065, -2778307, 17184702, -15093052, -18602578, 14894947, -19679004,
+-29152090, -37446748, -12989055, -881542, 7348152, 20881594, -8654896, 9364102, 9844065, -6863895,
+-3164317, 34400004, -22675280, -872415, 23606750, 7303592, 18577344, -4622459, 6816113, 26118232,
+13494787, -1417339, -3116536, -16095390, 6670084, 26270168, -24356760, 18581640, -24102282, 7056095,
+34249144, 7879655, -19127636, 19434728, 3159485, -12266963, -9504763, 23517094, 7814693, 10143639,
+-1343788, 1779190, 6525129, 7713762, -627065, -2356863, 10078141, 8724689, 1913408, -11625403,
+12870406, 1580548, -4338991, 3144990, 4460324, -8466991, -2171106, 6524592, 1334124, 10869488,
+-13353590, 20192788, 15722265, -2785286, -12734578, -5207648, 13533442, 15388331, 24901146, -774705,
+4845797, 4055523, 13676786, -20728050, -10995653, 20774756, 13057774, 1396938, -3307662, 1772748,
+5789616, -10859288, -8471286, -7310571, 1555315, 6612102, -3320547, -11778411, -8421357, 36103496,
+24460376, -34862248, -7054484, 31077846, -9496710, -19296214, -13625247, -19363324, -11431055, 31371514,
+19133542, -2573222, 14236206, -3474629, 17359720, -10981158, -6096169, 34852584, -14549202, 6257768,
+-10124312, -3824132, -420907, 9492415, 28372018, 10887205, -19268834, -5701032, -909996, -2973191,
+15961172, 2077690, 28572270, -8489003, 4920422, -3012383, 8327405, -24034100, 14386530, -22176526,
+14955076, -1238561, 21959094, -5801427, 16280074, -7585449, 5116917, 9278203, -9500468, 9613747,
+22173306, 27631672, -14689325, 28312962, 11923903, 33602212, -9684614, 6268505, -1271847, -4233764,
+-6473590, -2415919, -11169599, -55309516, -34782792, -10792716, -718333, 7738458, 3869229, 12659953,
+20774756, -30488900, -1735704, -12378096, 45967960, -3324842, -14035953, -4107599, -40397388, -33872260,
+50808388, 20566450, 11327976, -7955353, 15888158, 1203665, -37002216, 7437273, 2459406, -14179835,
+-14472966, 2202245, 153545, 3809636, -7792145, -4061429, -18166102, -15450071, 6427956, 7923678,
+6944962, 5264020, -9486509, -13976360, -8507256, -18046378, 11247982, 3711926, -31913218, -3924526,
+-9318468, -2360085, 15477988, -14826227, -20692078, -4700842, 13204340, 4324495, -14405857, 8346732,
+18289044, -34418796, -9330280, 12002286, -747324, -2803003, -6667937, -1588601, 5825587, 10022843,
+2266132, 27487254, -39482560, 37381784, -10768557, -11015517, 9705015, 17462800, -30896384, -6095096,
+653909, 6307697, 1778117, -773094, 15662672, -9324374, 2103997, 8286603, 9161165, 13083544,
+10841034, 3697430, -16910360, -3318936, 23247584, -22371948, -19119584, 24091008, 8291971, 17052094,
+26320634, 40758164, -9118752, -25750476, 34491272, -13784698, -5705864, 35949952, 11362873, -13051869,
+-37304476, -24588688, -3658239, -13710072, 17693654, 35431868, 18204218, -12021077, 36385888, 12312597,
+-13048648, 10115722, 40593348, 11825656, 7946763, -8435853, -32342714, -43443596, -34517580, -2388002,
+26346404, 8136816, 16683800, 62194884, 30693984, -37044092, -24928528, 16589311, -51339892, -23514946,
+44462576, 15970299, -57053272, -47575352, -22022444, -36393944, -34215320, -20412906, 31209916, -8729521,
+-6415071, 81292992, 13749801, -23234162, -6369974, -25113210, 43233140, -8964670, 9471477, 3110630,
+718333, -23493472, -9036074, -1724966, -11869679, 2975339, 9343701, 21249350, 2838437, -14224932,
+-534187, 58519, -9386114, 4499515, 6207302, 7289633, -18640158, 4945118, -17265232, 3156264,
+9169218, -880468, 13902272, -3211562, -843961, 14151380, -2814814, 7979513, 15589658, -5128191,
+4677757, 10882373, 11724724, 9761924, 1964948, 2570001, 8160438, -8408472, -3275986, 5769215,
+-55371256, 38477000, 16551730, 12497281, 15498389, -5877663, 19000936, 15626702, 22262962, -4143570,
+30507690, -19067508, 23152022, -8346732, -17648558, -5545340, -28981902, 3083250, -10618233, 10327249,
+-7328825, -11172284, 27877558, -31922882, 20670604, -1029718, -13910325, -5521181, 12360379, 14014478,
+10096931, 26419954, 21264384, -15201500, -3172370, -13593035, 11854647, -12040404, 9245991, 12760348,
+5818070, 7187628, 4724464, -7452305, 29097330, -2665564, 8648454, 2964601, 13404593, 7496329,
+-34799972, 2312303, -20823076, 5364951, 15349139, -2792803, -14752139, -13450764, 32409286, -34213172,
+-27737436, 50939384, -21643414, 13254269, 5033702, 16399796, -7708930, 8608725, -35449588, 2481954,
+34360812, -18366354, -13947369, 29709900, -2068027, -24530706, -18252000, 10989748, -9692131, -5657546,
+18340048, -13497472, 4521527, 22977538, -25880400, 1763621, 15048492, -8313446, -5207111, -6677601,
+9227737, 2637647, 3674882, -3320547, 5200132, 4046933, -5163088, 468151, 823023, 13749264,
+6794102, -12740484, 15579994, 4005594, -8090645, 4662187, 4677757, -1333051, -4793184, 11332271,
+-108448, 3882651, 1275605, 14634564, -6891275, -5373004, 8680129, -12954695, 16275779, -1130113,
+-9451612, -1422708, -1169305, 2087891, -374199, -6201933, -1145683, 8682813, 16917340, -33296198,
+-133538584, -144016688, -5728950, -82831128, 72360536, 262967968, 114325584, 158387664, 200176080, -76316736,
+-54129472, -21854404, -180769808, -126582888, -41391672, -198159056, -86655800, -18097918, -81309640, 18751828,
+185025040, 168054560, 181899376, 235933824, 141960480, -13314935, 52640728, -53497576, -210872688, -114791592,
+-85074176, -175296400, -120353040, 6186364, -135085856, -44795436, 29203630, -134963440, -69459824, 100114080,
+38526932, 108614888, 271280864, 220455296, 178168672, 320967744, 232829104, -4465156, 33058364, -60588028,
+-288547168, -275825472, -284534592, -442900256, -300178496, -185716528, -181822064, 1661079, 143129248, 161299648,
+226247600, 342817856, 317198912, 267728400, 264304240, 151151712, 52784076, 7910256, -16838956, -120864136,
+-207668112, -254826848, -272832960, -368158144, -306171040, -236220512, -115888416, 122686816, 363162560, 338246400,
+370649248, 259796128, 31206158, -35900556, -111983760, -153708288, -104126648, -51354924, -51825224, -23244364,
+-24068996, -37835440, -284005, 4848481, 26501022, 84107808, 76287744, 56124484, 77304040, -7900056,
+-50851876, -7302518, -59614684, -51641076, 31113816, 33757908, 7384123, 7334194, -90561000, -230745504,
+-218571424, -186180928, -140436848, 67604392, 209500448, 256379488, 323928032, 290386496, 178890752, 124091808,
+43705588, -52121040, -108837152, -129674728, -168087296, -206096688, -232428064, -271307168, -241328304, -83675088,
+58921584, 139241232, 180591568, 196377712, 147273360, 102186936, 51091856, -2022393, -6049462, 24994026,
+39906688, 43802224, 47631724, 39638792, 3680787, -32318556, -70068096, -125386736, -120377192, -96618512,
+-78635480, -38289096, 3576097, 27172110, 24034636, 15705085, 9292162, 7614440, },
{
-7769596,
-3768297, -8835821, 1731946, 642635, 554051, -6028524, -2137283, 1660005, -1321776, 1964948,
-3140158, 1896228, -82141, 2475512, -6815576, 165356, -265751, -166967, 3743601, 5696737,
--5975374, -1340030, -3624953, -1181116, 2125472, 3909494, 631897, 970126, -1473711, -1946157,
--1586990, -1208496, -2721399, 1487132, -2743410, -1851131, 3117610, -2664490, 2237678, 369904,
--6746857, -2286533, -3719442, -891743, 2863133, -1995012, -592169, -1962263, -2030983, -1419487,
-2798708, 4258460, 782758, 2367601, 1879585, -2263448, -4291746, 2301029, 1893544, -938987,
--3693135, -3081102, 2777770, 561567, 2077154, 988916, -5676336, -1875290, -2114198, 3129421,
-1264868, -5708549, 1500017, -3026878, -938450, -298500, -2070174, 1626182, -1889249, 435402,
-2175938, 2246268, 1379758, 1548336, 1013075, -183073, 1081795, 1331440, 125628, -1109712,
-1523640, 314069, 12348, -451508, -1023813, 489626, 960999, 171799, 788663, -305480,
--521839, -13422, -801548, 840203, -148176, 993748, -192200, 191663, -96637, 923418,
-485868, -49392, -389231, 584652, -10961830, 7269769, -5234492, 734976, -690416, -1993939,
-5572720, -4885526, -3244311, 4832, 5890548, -2174327, -326954, -623307, 4875325, -2925947,
--7783018, -1723893, -3996467, -5440113, 217433, -425202, 915902, 3160022, 5205501, 3245922,
-517544, 7947300, 3106335, 278099, 5677947, 5947993, -461172, -3190624, 242129, 2632815,
-2113661, -36507, -1129040, -4599373, -4048007, -1986959, 4558571, 1890323, 7839389, 4438849,
--334471, 2628520, 3202435, 1075889, -4849018, 5274757, -2074469, 2762738, -195421, 1676648,
--5784247, -915902, -1829656, 2061047, -1756105, -2179159, 6066105, -408022, -4529580, 1807108,
--3443490, 2836289, -1935957, 4546760, 3925063, 4361540, 1480153, -4180614, 2321430, -624918,
-2288681, -1802813, 664109, 5970542, -2281702, 2906082, 3935264, -576599, 254477, -166967,
--698469, -1571958, 1005022, -81604, 1505386, -19327, 1219234, 89657, 114354, 872415,
-1466195, 618475, 1408212, 1565516, -279173, -1118839, 2032593, 235686, -41339, 171799,
-1245541, -315143, -1091995, 602906, -251256, 336081, 59056, 1227287, 410706, 675384,
-414464, 2190970, 2462627, 124017, -2135673, 2296734, 897111, 693637, 1088237, -8685498,
-2812667, -5537287, 917512, 1785633, 1883343, -2545305, 4609037, 723165, -1708323, -804233,
-5379984, 3852586, -2343979, -3023657, -2473364, 2070174, 3817152, -2321430, -2524904, 732292,
--9842454, -39728, -4201015, -1675574, -4179003, -5495948, -674310, 4967667, 1373316, -4483946,
--1185411, 4248797, 1291711, -2760590, 4831302, -2124398, -6736656, -2029372, 3783866, -1694365,
-4477504, 8532489, 6921340, 933619, -93952, 2393908, -1048509, -5074504, 54761, 1877438,
--3615289, 3022583, -7171522, -1099512, 447750, -3073049, -2340757, 3096672, 6256157, -4928475,
--5114769, 3151432, 3202435, 5858873, 1900523, -3468186, 4706211, 4029216, -1349157, 4495220,
--5004711, 5040144, 1233729, 3405372, 698469, -2728915, -1541356, -522375, 1120987, 71941,
--2459406, 813896, 29528, -1476932, -1178969, 296890, -361314, 1068910, 68183, 1806571,
--1332514, -1014149, -64425, 198105, 1601486, -849330, -1591285, 685047, 62814, -377420,
-1090385, -287763, 662499, -761820, 667867, 925029, 130460, 1524713, 14785425, -5742372,
--2528125, -945430, 10660109, -1059783, 8062191, -5859946, 7104950, -7029251, -6167036, 1484985,
-3365644, -4149475, -1018444, 2121714, -541703, 2766496, -4278861, 4942434, 1788317, -5296232,
--199716, 2128156, 1661079, 949725, 10028749, 7994545, 6254546, 2147, 4060355, 383326,
-1172526, 3005940, -9251896, -1411971, 5640903, 3672734, 4378719, -100395, -1637993, 2046015,
--362925, 11312944, -1710471, 1910724, 1137093, 556735, -3343632, 6786049, -769336, 7055558,
--3883187, -4070019, 2923799, -2710124, -9411347, -4332549, 1897839, -890132, -6731288, 1883343,
-22012, 8766028, 769873, 764504, -2676302, 3194382, 3237332, -714038, -508954, 7700877,
-5659693, 5623723, -3708704, -5277978, -4609037, -9019431, 753230, -6384469, -2155000, 407485,
--3481071, -3970697, -2212982, -444529, -1354525, 2128693, 3963181, -736587, -456340, -1774358,
-919660, -1283658, -1486059, 638876, 1087701, 22012, 1400696, -811212, 52076, -783295,
--528281, -425202, 816044, -482647, -487479, -285615, -1280974, -1453846, 91268, -155693,
--1763084, 1505923, 1504849, 1834488, -33286, -1271310, -746251, 1443109, 10844792, -8636642,
--242666, -9032316, -5943698, -3533684, 7788387, 4560182, -10908680, -14902463, -5753646, 5224828,
-3707094, -2254858, 5070209, 24696, -1293859, 554588, -7849590, 2330557, -1057636, 628139,
-2444910, 504659, -55298, 3261491, 2857227, -5222144, -5209796, 5892159, -1901597, -2934537,
-3596498, -10200547, 2398739, 2101313, -9404368, 3389266, 9678709, 5856188, 6635188, 1343788,
-3649649, 9193377, 1703491, 1734630, -10597295, 5561446, 7943542, 6499896, 1227287, 6603512,
--7558069, 7398618, -2252174, -7429220, -11444477, -131533, -7289097, -5877663, -2537789, -6979322,
--17383344, 735513, 879395, -599148, 2676838, 8522826, 3186866, 3427921, 2252710, -6218576,
-883153, 2884608, 2464774, 2186138, 2500745, -6381248, -1913408, -8039105, -3644817, -592169,
-1848447, -2948495, 2827162, 556735, 481573, -2023467, -344671, -1080721, -2684, -1166621,
-1056025, 335007, 796180, -307627, -1483911, -1236951, -1223529, 1220308, 776852, -14496,
--580357, -1121523, -1217086, -1182727, -3629247, 533113, 493384, -2753074, -1443646, -1007170,
--23475754, 11538967, 1474784, -9131637, 2201708, -1020055, -2704219, -1879585, -5178120, 2754148,
--2661806, 524523, 3367254, 3096672, 10151692, -4131222, -9726490, 5262409, -12329777, -5334350,
-1997160, 1669132, 1392106, 3963718, 4930623, 4231080, -101469, 5607617, 355409, -2268280,
-7474854, 4608500, -2291365, 4421132, -7753490, 14598594, 542777, 2688650, -1381906, -12594992,
--2184528, -4709969, -4409321, 1913945, 10460393, 259846, 431107, -1387274, -2895882, -6817187,
-2138357, -1156957, 3741990, -8582418, 2876554, 4511863, 1997697, -6369974, -2252710, 1627256,
-812823, 5086852, 1003412, 17746268, -5081483, -7623567, -8621073, -2649458, 178241, 6308233,
--8586713, -1155883, -3682398, 3879966, -12534862, -588411, -3397856, -5290863, 1559610, -1566053,
-3415573, -489089, 6278169, 3933116, -19864, 1292248, 484258, 748398, 7281580, 833761,
-5207111, 1846836, -1316944, 92342, 186294, 1463510, -958851, 732292, -279710, 2164127,
-408022, -1689533, -2396055, 1897302, -922881, -2895882, -1257889, -1541893, -663036, -913217,
--53150, 3491272, 60130, 954020, 426812, 1387811, -1396938, -817654, -3034931, 10569378,
--3438121, -2558727, 2251100, 3096672, -8580271, -8658117, -7921531, -7448547, -12162811, 7612293,
--7131793, 2110977, 2912525, 10990284, -1858110, -2656974, 8600672, 1963874, 1773285, -10177999,
--6680285, 4946729, 2128156, 3924526, 5925445, -10721849, 80531, 4518843, 10155450, -147103,
-924492, -1579474, -32749, -7013682, -1359894, -2212445, -13003550, -1087164, 3921305, -7487202,
-3144453, -8141648, -88047, -5648956, -1193464, -1797444, 688805, 10402948, -3091840, 86436,
-5313949, -3049427, 3093450, -8730595, -15508590, -8456791, -4734665, -2247879, 1598265, 10256919,
--4901095, 2705830, 2461553, -7484518, 2456721, -5779952, -2063732, 3711926, 10413148, -1674500,
--615791, 3274913, -293132, -9899900, -9362492, -3976603, 9230422, -1192927, -13987635, 908922,
--9211094, -4137664, -1960653, -1047972, 3032247, -3604551, -1128503, 3384971, -1043677, 3987877,
-3461207, 2464238, -1716913, 3901441, -3620658, -2761127, -2585034, 512712, -480499, -856846,
--908922, -779537, -1299765, 699006, -393526, 2474438, -1850057, -1228361, 1008780, -1645509,
--985158, -4126390, -4944581, -535260, 309775, 2289218, 244813, 1337882, 34897, 10321880,
-10834592, -3311957, 1009317, 11365557, -11555073, -10279467, 8696235, -2077690, 1189706, 7898982,
--1559073, -2153926, 7886097, -14601815, 6223408, -652298, 2472291, 7117298, 7332046, -8172249,
-1548873, -11230803, 3455301, -3374234, -1206349, -7812009, -404264, -11201275, 1082332, -9707163,
-6801081, -3398930, 1283122, 12138114, 5619965, 5441187, -9686762, 1795833, 11238319, -2646774,
--15984795, 8590471, -1957431, 1579474, -3150896, -7394323, 10549513, 3811784, 8594766, 2166811,
-1239098, -7077569, -9217000, 3337727, 4304094, 4641786, 6120329, 14163192, -476741, -10944650,
--7145215, 8535711, -1233729, -9403294, -2485712, -556735, -2576444, -11904576, 183073, 1655173,
-2974265, -4297652, 6870874, -326954, 755377, 9806484, 4998268, 10210211, -10023380, -4163971,
-1846299, -5480915, 4560719, 2829310, 2792803, -392990, -1276142, -813896, -156229, -3920768,
-5044976, -1822140, 3093450, -790274, 3603478, -1411434, -1789928, 250719, 2070174, -1750736,
--69256, -414464, -1990717, -971736, 912681, -2157684, -683974, -4613869, -3627637, 1996623,
-3206193, 1702955, 1460826, -449361, -380641, -2137283, -349503, 2431488, -3102040, -401579,
-1431835, -584652, 2509335, 2475512, -1736777, -657667, 2243584, 1602023, -1167694, 8219494,
--10004589, 11718281, -2637647, 12395276, -10122701, 9174587, 1010391, -969589, 15439871, -8065949,
-925029, -7829189, -2331094, 23530516, 11358041, 4996121, 3407520, 6692096, -3757023, -31675,
--19889994, 3694746, -827318, -8603893, 9543417, 7155416, -293668, 1698123, -11491185, 10129143,
--5363878, 10756746, 7054484, 5742908, -8242579, -1452773, -6929393, 10328323, 2384781, -3764002,
-18315888, 8749385, -2058900, 958851, -15162308, 2572686, 710817, 12045236, -5405217, -15432354,
--2647311, -4272956, -2991445, -21810380, -10858751, -23230404, -11823508, -8305393, 2742874, -5844377,
-10975252, 1362578, -12530030, 7561290, -8380018, 11854647, -10562398, -8578660, 6190122, 10559177,
-10416906, 30065, -9747965, -7792682, 4783520, -6391985, 250719, -3230352, 3941706, -4388383,
--6434935, 11361799, 5281199, 1549946, -1799054, 4280472, 2432562, 5269388, -485331, 3568044,
-1274532, 5917928, 125628, -280784, 343061, -2918967, 112206, 1511829, 734976, 647466,
-166430, 4557497, 2098629, -3601330, 406948, 2072322, -1130113, -1376000, -863288, 273804,
-877784, 2294586, -569083, 1564442, 2673080, -555125, -2699924, -238371, -2944737, -1296006,
--2719251, -1755031, 2368138, 162135, -1519882, -14412300, -17111686, -11342472, -1632088, -220117,
--2219961, 4067334, 6190659, 4298189, -2684, 2304787, -5430986, 3563749, -11024107, -15368467,
-482647, 11781632, 2063195, -4150549, 9428527, 5578626, 9125732, 15359877, 1994476, -4745939,
--9789841, -7841537, 4488778, -8987756, -6230924, 2309082, -7111392, -15677704, -8593156, -870805,
--1819992, 3660386, -3526168, 8676908, 2521146, 3288334, 12015708, -1931125, 1424855, 2779918,
--9591199, 11307038, 1862405, -10468983, -17119740, 4350265, 1538672, -12446278, 13166222, 8542690,
--11532524, 3898220, 11067057, 6221260, 2966749, 9185861, -4206921, -3714073, 694711, -5097053,
--8150238, 13941464, -12437152, -1393180, 5201206, 1188095, 21675626, -18824842, 5738613, -2412161,
--91805, 6055367, 241055, 1292248, -5064840, 2862596, -11167989, -23679228, -1338956, -294742,
--12175159, -7743826, -1702955, 4468377, 3894999, 1661616, 992137, -3950833, -130997, -5531918,
--2795487, -1079647, -3218541, -4988605, 1694365, -956704, 835908, -2558727, -1881196, 1166084,
--4076998, -8646306, -3037079, 571231, -2363306, -8338679, -4670240, 3441880, 2344515, 1625645,
--1676111, -3212636, -4017942, -753230, -2033130, -4740034, -3946001, -5586679, -2941516, -3774203,
--3800509, -125091, -955093, 1496259, -1509681, -1062468, 3049427, -4175782, -11172284, 9836549,
--20196546, -14342506, 10631118, -497679, -18396956, 9430138, -10768557, 20817706, 4153234, -27399744,
--3498788, 2491618, -6935836, 2062658, 4760435, 9727027, 8310762, -15913391, -715649, 1491964,
--3319473, -14581951, -2275259, -3022046, -5031018, -4443681, -232465, 1086090, 12392591, 13608604,
--4239133, 7333657, 6303938, 6193343, 13531294, 181462, 3621731, -15604153, -5390721, 5514201,
--3111704, 7551626, 18582712, 2755759, -16310138, -36280124, -106837, -11173357, 10282152, -6842957,
--3721589, -7112466, -19632296, 8555575, 26186416, 1558536, 6844568, -20537460, 4231617, -2304250,
--9286793, 2390149, 10027138, 5259188, 8085813, -8820252, 12981539, 7665443, -15186467, -22479858,
--1461363, -17082696, -16047608, -10166724, -11839077, 1587527, 21087752, 8159364, 750546, -2768107,
-13568339, -6864432, -10149008, -1560684, 2090575, -1528472, 2477659, 2175401, 97711, 2204929,
-5176510, 1988033, -589484, 467078, -2041720, -1919314, 5430986, -1564979, 5342403, 222265,
--3069828, 755377, -1629940, -2167885, 6462315, -1461900, 3482145, -7869454, -1051730, 3993783,
--70867, 1706713, 6599754, -4860293, 6027450, -483721, 639413, 1991254, -2075543, 4774930,
-636192, 417686, 776315, 374199, 2075543, 6124624, -2536715, 2253784, 2300492, 2484102,
-2593087, -39564164, -24974698, 17972828, 14476187, 23538032, -62277, 9288404, 2317672, 7446937,
--277562, 4811437, -10397579, -12466679, -7733089, -11158325, -7195144, -7941932, 9589051, 22630182,
-4959077, -27557048, -6531035, 4860829, -7303592, 6765111, -15746424, -1249299, -511101, 944893,
-7708393, 5855651, 1101122, -1870995, -3502009, 6448357, 12498355, -9972377, -15495168, 10350871,
-4934381, 13568339, 6200859, 19711752, -13598403, -4749697, 12584791, 18796388, 16323023, 9683541,
-4605279, -3995393, 1249299, -2334852, 84289, 6534256, -24508694, 13211319, -1921998, 3601867,
--1611150, 18650896, -5673115, -246424, -4075387, 11839077, 10033580, -20890184, 15015206, -17765596,
--894427, -8994198, -8946417, 8157217, 1489280, -27710056, -2455111, -2157684, -5116380, -3198677,
--650151, -3510062, 14413373, 1449552, 13786845, -4327717, 16302085, 7723962, -8420820, 3620121,
--2104534, 969589, 1056562, 1570884, 2195802, 874563, -3163244, -5186710, 8105677, 3630321,
-6651831, 1892470, -3963718, 7694971, 294205, 438087, 5769752, -16141561, -7505992, -7152731,
-2266132, -180926, -10996727, 514322, 1838783, -469225, -2072322, 10737, 3769371, -3979287,
--170725, 4419522, 2174327, 5378373, -4673462, -2244121, 1318555, 5832566, 21975200, -24447490,
--562104, -13895830, -39199092, -4634270, -14467597, -30939870, 6183679, -199179, -6012418, 1946157,
-16628503, -1074816, -17575544, 6033356, 710817, -5646809, -4227322, -3132105, 890132, 19164680,
--4299263, -702764, 8702677, 6433324, -2756832, 9281961, 8493298, -4088809, -4021700, -7694434,
-10666014, -2544231, -18357764, 2808909, -1212255, 6314676, 24064702, -16054051, -25756382, -16240882,
--7518341, 3569118, 8600672, 4574677, 18321794, 9160628, -12899934, -7444789, -17597554, 15252503,
-9388799, 1705639, 3247532, -10091563, 1075889, -10677289, 18474802, 18126910, 1306207, -8428336,
--4679367, 1801202, 16822314, 33556044, 20659866, -3161633, -7475928, 478352, 10696079, 4651450,
-9875204, 13607530, -13442174, -610422, -25943750, -17482128, -16661252, -11159936, 7009387, 15963320,
-10980621, 1757179, -3147674, -1470489, -14425185, -18149458, -4556424, -9629854, -9073655, 2114735,
--1809255, -2294586, 135828, 614180, 4191351, -4597763, 9330280, -9407589, 4032974, -11981348,
--3980898, 12885, 2274722, -323733, 2164664, 4638028, -3206730, 578747, 11092290, 13513578,
-16280074, 8943733, 10223096, 4641249, 1999307, 801011, 357019, 658204, -2765422, -8714489,
--8507793, -1376537, 6752763, 44023, 1114007, -3532074, -2458332, 1083942, 8258685, 5206037,
-9843528, 6957310, 8390219, -19150722, -2259690, -9921911, 14396730, -15912854, 3073049, 1387274,
-28167470, -17437030, -5116917, -17934172, -3887482, -17714592, -14890652, -10747619, 5542119, -19054086,
--13828184, -20718922, -5299990, -3126199, -6349036, -9368397, -23092428, 6023692, -16326244, 6584185,
--17128866, 21088826, 3238405, 9446781, -4083977, -19912006, 10650982, 6164352, -6710350, 10648298,
-14899242, -8067559, -21455510, -11492796, 28732794, -12289512, -947577, 734439, -4886599, 6313602,
-18619220, 3300682, 7914014, -6003291, 13318157, 183610, 10489384, 3197066, 3555159, -326954,
-1067836, 22790708, 6899865, 54564340, -33313914, 21263846, 29894582, -7899519, 674310, 15425375,
--11184632, -3272765, 25029996, 9921374, -4181151, 13292387, -5694590, -24241332, -17942226, 6090264,
-969052, -32388886, -9021042, -3306051, -16829830, 8652212, 5037997, -10930155, -8961986, -6597607,
-943819, 2989297, 6853694, -5677410, 803696, 4013110, -1795833, -7191923, 1984275, 1521492,
-2267743, 6747394, 1198296, -4091493, 545461, 7817378, 6918656, 3377992, -7744363, -155156,
-14251238, -4052302, -3006477, 7923678, -7740068, -13383655, -3818226, 751082, -1741609, -6859600,
--2112587, -395137, -7584912, -1552631, 814970, -2083059, -7870528, -12959527, 4940823, 13986561,
-5057324, -260919, 511638, -2582349, -8253854, -6565395, 30640296, 34205120, 775778, 24771224,
-24680492, -1058710, 11282879, -24239184, -7288560, 22007950, 2385854, 21731460, 30325154, 25001004,
--4642323, 16411607, -24810416, -38918308, -16445430, -14384382, 9780714, 347892, 10443750, 11212012,
-23963770, 18564996, 6718940, -18418968, -1927367, 18963354, 6364605, -8905615, 12378633, 26039850,
--2548526, 9234180, -20676510, 10329396, -16246251, -4245039, -10183367, -21556978, 13732084, 1761474,
-6881612, 26360362, -13763760, -15630997, 9783936, 27299886, -20903068, -13987098, 9155260, -6629282,
-38579008, 28526100, -26533234, -9926206, -20899848, 1364726, 23678154, -10600516, -15836618, -7169374,
-1790465, 5826660, -19025632, 4847945, 39319888, 3023120, -25690884, -39580808, 32455994, -38178500,
--31853624, -18658412, -16116865, -27580132, 7765838, 7218230, 44971528, 11319923, 19958176, -9706089,
-21672942, -2465848, -8800388, 8194261, 1301375, -1929514, 22218940, 2911451, 11522860, 14055280,
-7858717, 16823386, -4439923, 4620311, -3310346, -1260036, -3289945, -13971529, -10085657, -11527155,
-13693966, 4846871, 12230456, 14824616, -2945811, 8906152, 19452980, 6949794, -5874979, 9924596,
-11800960, 3991635, -2383170, -13848585, -12151536, 12444131, 5567352, 8282845, 16671452, 36328980,
-15936476, 9172440, 6987912, 10281615, -5104569, -1211718, 18622978, -11780558, 6689949, -6545530,
-6323803, 3681861, -35524748, -20596516, -26735634, 6997576, 14719927, 5149666, 22632868, 20334522,
-28725816, 8880382, 31373662, 13983340, 20218022, -10047539, -4019553, -10093710, -24332600, -17466558,
--37592776, -22316114, -7303592, -21922050, 4730907, -905701, -665720, 8909910, 7274064, 3358128,
-18061412, -4606353, -15148887, 21691196, 1911797, -28789166, -12495134, -3142306, -34647500, -26254598,
--25585120, 2330557, 12226698, 3315715, -13361106, -1698660, 14352170, 8873939, 34299072, 6393059,
--46342160, -15434502, -8088497, 7367480, 7131257, -5333276, -12358232, 17124034, -25706990, -4764730,
--20628192, 15557445, -40454296, -25016038, -33006824, -26453778, 1180042, -14918032, -11600170, -26539140,
-13269838, 47679504, -1312649, 30821222, -17182016, 7559680, -22717692, -92342, 33883532, 8096014,
--16132434, 1800665, 12994960, -22937272, -35606888, -19127100, 9007620, -27635968, 11797201, -407485,
--845035, 17737142, 9182103, -4734128, 20506322, 20498806, 16376173, -5407364, -5738613, -3591130,
--320512, 14288282, 10195715, 7216619, 290984, 14901389, 8186745, 2298881, 1885491, 11040750,
--4669703, -3772055, 7614440, -11471321, 10302553, -9963250, -9879499, -11725798, 20486994, 12801150,
-19040664, 6997576, 7141457, 1697586, 1282585, 9338870, -14387604, -23070954, 1759863, 6452115,
-5718212, -9440875, 26409218, 10785737, 26641682, -43562780, 18854370, 32673426, -3211562, 37637336,
--19997904, -57510684, -29775398, -438087, -5767068, 6305549, -20622286, 19825032, 28047748, -25324200,
-22271016, -13892609, -16986058, -40174588, -16421271, -23105314, -15263777, -18489834, 18066780, 2658048,
--35997732, -46090368, 34748432, 7826504, 12432857, -10810433, 2750927, -12505334, 292595, 10537165,
-16012712, 14506252, 38909720, 1208496, -27992450, 37738804, -4041027, -9855876, -17584670, 15904801,
--31122944, -20912196, 17591112, -16203838, -24253144, -30419642, -26665304, -5723581, 3512210, 2842732,
--8266202, 32724966, 27839442, -2724620, -15946677, -27426050, -31490164, 7728794, 6582038, -6216429,
--3121368, 44939316, 2982855, -13147969, 19377282, 9306657, -29688962, 23557896, 42742976, -46947212,
-75754632, 20233590, 21832392, 8289824, 21986474, -6037651, -46864536, 32044750, 2670933, -5830955,
-33251636, -39536248, 6856916, 6934762, -289910, -3830574, 1594507, -3095598, -10995653, 5823439,
-11614665, -9743133, -1326071, -14407468, -16596827, 21415244, -4829154, -10522133, 4825396, -5741835,
--13234405, -23835994, -5574331, -8109972, 20753282, -20001662, -2128156, 24549496, -5315559, 19615652,
--7131793, -17177184, 8803609, -3474092, -8289824, 10149008, 2262911, 27040040, -3764539, -435402,
-17815524, 54350664, 23877870, 1275605, -18184354, 25967910, -421981, 1887638, -12452721, 23699630,
--27472758, 20076288, 19294066, 20333448, 9842454, -7428146, 26949846, 33803540, -6877854, 13980119,
--20928302, 34012920, 14521821, 11404212, -21656836, -47345572, 9460739, -14481556, -10803453, -19183472,
--24204288, 14685030, 6595459, -11724187, 2736968, 1193464, -12772696, -57854820, -3583613, -12239046,
--5909338, -832150, 40845676, 27924266, -13576928, 10577968, -26856968, 3062312, 20158430, -30668214,
--28472948, -23376970, 36980204, -26500486, 7719667, 29717416, -39957156, -37104224, 34254512, 27263916,
-28760712, 38416872, 14229227, -49066780, 11112154, 14552960, -4305168, 80217640, -8257612, -12183212,
--36203888, -31303332, 16201154, -28853590, 18861886, 6577206, 21329882, 43945032, -28145458, -19209242,
-53524956, -32567664, -35935456, 23518704, -46293840, 33704756, -35191352, 8033200, 12156905, -25511568,
-10624675, -29619706, 20656108, 37780680, -1503239, 6550899, 7804493, 1393180, -11503533, -10896869,
--2432025, 10937671, -4833986, 7371775, -7625178, -23453742, 10090489, 2047089, 15979426, 7868380,
-13960791, -4776004, -4592931, -23270670, 16360067, -3175592, -21163452, 4918812, 43736724, 12039867,
--11103564, 12798466, 23580982, -11707007, 2630131, 17987324, -8999030, 17931488, 6172942, -5702106,
--28037546, 4708895, -10675678, -749472, 35101156, -16086263, 1921998, -9327595, 12139188, 40338332,
-3468723, -34213172, 49101676, 12007655, -3158949, 35035660, 17417166, 28366648, 10663867, -41888816,
--9134322, -15585899, 19874962, 49069464, -30921618, 8035884, -14788109, 21930104, 25152402, -32890322,
-27672474, -26388280, -23760296, 12282533, 22798224, 1114007, 7641284, 17825188, -26629334, 23760296,
-1967632, 28965260, -4993973, -7451769, 9513889, 42819212, -19031000, 34626028, -16555488, 7108708,
-9140227, 34602940, -1896228, -2077154, 11982422, 52074868, 3553549, -40421548, -3163244, -48696876,
-29477972, 266825, 80233744, 17309256, -23278186, -6947110, 17847736, -17564806, 28271622, 52427592,
-35931160, 941672, 15352897, 22796612, -2434710, -24173686, -3199214, -5383205, -83471616, 52279416,
-39040716, 36025648, 8806294, -36079336, -10699837, 27444304, 14287209, 23917062, 12958453, -79946520,
--28492276, 49295488, 13651017, 15994458, 42474544, -29885456, -857920, -4115653, 24106040, 6161668,
--2258616, -6444062, 19018652, -4878009, -21745420, 10911364, -10438918, -12457553, 11438572, 16696148,
--12197707, -3793530, -352724, 13175349, -16713865, 13683766, -14755897, 7043210, -25575994, -26228828,
-26139170, 3414499, 2390149, -2988760, -18873696, -5816997, 17535814, 1890859, 6019934, 29053306,
--4404489, -22042846, -2029372, -12529493, 10005663, 10868952, -10400263, -8912057, 11556683, 24045374,
-30529702, 31479426, -19498614, 32030792, -29353418, 4917738, 15315317, -15103789, 2131915, 5996311,
--8042327, -15772194, -29687350, 45157288, -10150081, -8937827, -15096810, -2568391, -6244883, 14651207,
--30408368, -8804683, -19035296, 6485938, -19133542, 18309982, -138513, 9414031, -21095268, -38458748,
-1802813, -28123982, -29343216, 13242995, -22509924, -19087908, 37120328, -13785234, -21714818, 2735894,
--22326850, 10429791, 14016626, -4130685, -18234820, -5365488, 10626823, 9309878, -8291435, -829466,
-32737314, -5878200, -20204600, -25706990, -3690988, -11294153, -38632156, 36206576, 12538620, -44404592,
-27318676, -2017561, -18596672, 85270136, 48050484, 39239360, 20856362, 11945915, -20247012, 3114388,
-9390946, 10011569, 3826816, 37313604, 8377334, -11123965, -18391050, -75511432, 15407121, 9876277,
--363998, -14769319, -28420872, -5659157, -18306224, -16436840, -1172526, 23791434, -16327855, 41187124,
-6055367, -8264054, -2876554, -3548180, 3295851, 17305496, -6718940, 4309463, 12189654, 4160213,
-2359011, 9447854, -15360951, 7440494, 2792803, 24079734, -8360154, -6066105, -6613176, -6134287,
--19122268, -10473278, 7015292, -20956220, 15627239, -4278861, -9947681, 14317273, 9169755, 12032888,
--4470524, -1950989, 1648731, 2246805, -13169980, 6876243, 998580, -685584, -1134408, 8560407,
--39060044, 65988416, 8433168, 21641266, 11814918, -16337519, 12295954, 18600430, 4662724, -1872069,
--15910169, -2775623, 4536559, -7435662, -5624260, 2785286, 7447474, 19210852, -13249437, 8091182,
-826781, 15335181, -5362267, 3053185, 5095442, -17577154, 14358613, 2334315, 3595961, 5153424,
-5341329, -11133092, 11944841, -9594957, 2494302, 11401528, -6140193, 11178189, -4758824, 14085345,
-10976863, 6362457, -17383880, 13064217, 9975598, 7956964, 21811454, -20890184, -1762547, -173409,
--4378719, 6414534, -10733660, -17304960, 11954505, 13456133, 6811818, -1640141, 2928094, -1846836,
-7066295, -6060199, 2915209, -12848932, 11790222, -19958714, 18937584, 10534481, -6250251, -267362,
-7912941, 569620, 7102802, 151934, 881542, -660888, -6688338, 9688372, 13208098, -11564199,
--2570001, 2429341, 7371238, -5250061, -5422396, 1537061, 2490007, -1310502, 1410897, -4248797,
-1704028, 5405217, -4107599, 1156420, 3278134, -4355097, 3833258, 4734665, -332323, -1521492,
--2150705, 923418, 9903658, -3688303, 1373316, -9097278, 647466, 10098542, -7042673, 7517267,
--3369402, 571768, 16824460, -2931852, 434865, -353261, -5054640, 8658117, 3650185, 3718368,
-3651796, -2735894, 2340757, 9482214, -2659122, 6455873, -4103841, -719944, 12753905, -52625160,
--122606824, -19586662, 71805944, 65180424, 160488976, 83813600, -43142408, -13246753, -88809720, -150803824,
--10371809, -68522984, -9509594, 109915728, 46970836, 84924392, 130380712, -15144592, -19054086, -66186520,
--112542104, -89491552, -5730023, -33614024, -12705050, 93552440, 29700236, 60861296, 110603464, 18134962,
--413391, 11467563, -67214088, -101802000, 17530982, -105197168, -68800008, 23377506, -10547366, 17128330,
-135453600, 15562277, 51946020, 110599168, -22000434, 3456375, 24684788, -106575856, -88871464, -31478352,
--121298464, -46964392, 15484431, 22470732, 83584360, 117725056, 83919368, 59248536, 51615844, -19576460,
--71051104, -58331560, -87848184, -92284888, -39557184, -23360328, 630286, 77509664, 92438432, 28973312,
-72234904, 21104932, -22857816, 15239081, -50332184, -69939248, -13689135, -32464584, -21749714, 39495444,
--1460289, 27559194, 49070540, -13415867, -1079647, 52076, -24839944, -7596187, -1713692, -18570902,
-20781200, 7590818, -4843113, 34013992, 10826539, -4804458, 32625646, -11399380, -34973380, 758062,
--53425100, -37321656, 11537356, -35474820, 7592429, 41255844, 30258044, 56211996, 61210800, 22373022,
-21633750, -2493229, -50493248, -70471824, -72613400, -75746584, -48209936, -3548180, 24310588, 52456048,
-90927144, 97675608, 80999328, 63506996, -3823058, -59535228, -85520312, -109204376, -111530640, -59366112,
--17980880, 46760384, 98652176, 89492624, 53832584, 40014600, 11560441, -8215199, -13448079, -39270496,
--45605036, -34097744, -28732258, -20415590, -4365298, 4234838, 16190416, 24474872, 24661166, 23924578,
-20991116, 9780714, -1379758, -7547332, -7346005, -5318780, -2968896, -2348810, },
+3768297, -8835821, 1731946, 642635, 554051, -6028524, -2137283, 1660005, -1321776, 1964948,
+3140158, 1896228, -82141, 2475512, -6815576, 165356, -265751, -166967, 3743601, 5696737,
+-5975374, -1340030, -3624953, -1181116, 2125472, 3909494, 631897, 970126, -1473711, -1946157,
+-1586990, -1208496, -2721399, 1487132, -2743410, -1851131, 3117610, -2664490, 2237678, 369904,
+-6746857, -2286533, -3719442, -891743, 2863133, -1995012, -592169, -1962263, -2030983, -1419487,
+2798708, 4258460, 782758, 2367601, 1879585, -2263448, -4291746, 2301029, 1893544, -938987,
+-3693135, -3081102, 2777770, 561567, 2077154, 988916, -5676336, -1875290, -2114198, 3129421,
+1264868, -5708549, 1500017, -3026878, -938450, -298500, -2070174, 1626182, -1889249, 435402,
+2175938, 2246268, 1379758, 1548336, 1013075, -183073, 1081795, 1331440, 125628, -1109712,
+1523640, 314069, 12348, -451508, -1023813, 489626, 960999, 171799, 788663, -305480,
+-521839, -13422, -801548, 840203, -148176, 993748, -192200, 191663, -96637, 923418,
+485868, -49392, -389231, 584652, -10961830, 7269769, -5234492, 734976, -690416, -1993939,
+5572720, -4885526, -3244311, 4832, 5890548, -2174327, -326954, -623307, 4875325, -2925947,
+-7783018, -1723893, -3996467, -5440113, 217433, -425202, 915902, 3160022, 5205501, 3245922,
+517544, 7947300, 3106335, 278099, 5677947, 5947993, -461172, -3190624, 242129, 2632815,
+2113661, -36507, -1129040, -4599373, -4048007, -1986959, 4558571, 1890323, 7839389, 4438849,
+-334471, 2628520, 3202435, 1075889, -4849018, 5274757, -2074469, 2762738, -195421, 1676648,
+-5784247, -915902, -1829656, 2061047, -1756105, -2179159, 6066105, -408022, -4529580, 1807108,
+-3443490, 2836289, -1935957, 4546760, 3925063, 4361540, 1480153, -4180614, 2321430, -624918,
+2288681, -1802813, 664109, 5970542, -2281702, 2906082, 3935264, -576599, 254477, -166967,
+-698469, -1571958, 1005022, -81604, 1505386, -19327, 1219234, 89657, 114354, 872415,
+1466195, 618475, 1408212, 1565516, -279173, -1118839, 2032593, 235686, -41339, 171799,
+1245541, -315143, -1091995, 602906, -251256, 336081, 59056, 1227287, 410706, 675384,
+414464, 2190970, 2462627, 124017, -2135673, 2296734, 897111, 693637, 1088237, -8685498,
+2812667, -5537287, 917512, 1785633, 1883343, -2545305, 4609037, 723165, -1708323, -804233,
+5379984, 3852586, -2343979, -3023657, -2473364, 2070174, 3817152, -2321430, -2524904, 732292,
+-9842454, -39728, -4201015, -1675574, -4179003, -5495948, -674310, 4967667, 1373316, -4483946,
+-1185411, 4248797, 1291711, -2760590, 4831302, -2124398, -6736656, -2029372, 3783866, -1694365,
+4477504, 8532489, 6921340, 933619, -93952, 2393908, -1048509, -5074504, 54761, 1877438,
+-3615289, 3022583, -7171522, -1099512, 447750, -3073049, -2340757, 3096672, 6256157, -4928475,
+-5114769, 3151432, 3202435, 5858873, 1900523, -3468186, 4706211, 4029216, -1349157, 4495220,
+-5004711, 5040144, 1233729, 3405372, 698469, -2728915, -1541356, -522375, 1120987, 71941,
+-2459406, 813896, 29528, -1476932, -1178969, 296890, -361314, 1068910, 68183, 1806571,
+-1332514, -1014149, -64425, 198105, 1601486, -849330, -1591285, 685047, 62814, -377420,
+1090385, -287763, 662499, -761820, 667867, 925029, 130460, 1524713, 14785425, -5742372,
+-2528125, -945430, 10660109, -1059783, 8062191, -5859946, 7104950, -7029251, -6167036, 1484985,
+3365644, -4149475, -1018444, 2121714, -541703, 2766496, -4278861, 4942434, 1788317, -5296232,
+-199716, 2128156, 1661079, 949725, 10028749, 7994545, 6254546, 2147, 4060355, 383326,
+1172526, 3005940, -9251896, -1411971, 5640903, 3672734, 4378719, -100395, -1637993, 2046015,
+-362925, 11312944, -1710471, 1910724, 1137093, 556735, -3343632, 6786049, -769336, 7055558,
+-3883187, -4070019, 2923799, -2710124, -9411347, -4332549, 1897839, -890132, -6731288, 1883343,
+22012, 8766028, 769873, 764504, -2676302, 3194382, 3237332, -714038, -508954, 7700877,
+5659693, 5623723, -3708704, -5277978, -4609037, -9019431, 753230, -6384469, -2155000, 407485,
+-3481071, -3970697, -2212982, -444529, -1354525, 2128693, 3963181, -736587, -456340, -1774358,
+919660, -1283658, -1486059, 638876, 1087701, 22012, 1400696, -811212, 52076, -783295,
+-528281, -425202, 816044, -482647, -487479, -285615, -1280974, -1453846, 91268, -155693,
+-1763084, 1505923, 1504849, 1834488, -33286, -1271310, -746251, 1443109, 10844792, -8636642,
+-242666, -9032316, -5943698, -3533684, 7788387, 4560182, -10908680, -14902463, -5753646, 5224828,
+3707094, -2254858, 5070209, 24696, -1293859, 554588, -7849590, 2330557, -1057636, 628139,
+2444910, 504659, -55298, 3261491, 2857227, -5222144, -5209796, 5892159, -1901597, -2934537,
+3596498, -10200547, 2398739, 2101313, -9404368, 3389266, 9678709, 5856188, 6635188, 1343788,
+3649649, 9193377, 1703491, 1734630, -10597295, 5561446, 7943542, 6499896, 1227287, 6603512,
+-7558069, 7398618, -2252174, -7429220, -11444477, -131533, -7289097, -5877663, -2537789, -6979322,
+-17383344, 735513, 879395, -599148, 2676838, 8522826, 3186866, 3427921, 2252710, -6218576,
+883153, 2884608, 2464774, 2186138, 2500745, -6381248, -1913408, -8039105, -3644817, -592169,
+1848447, -2948495, 2827162, 556735, 481573, -2023467, -344671, -1080721, -2684, -1166621,
+1056025, 335007, 796180, -307627, -1483911, -1236951, -1223529, 1220308, 776852, -14496,
+-580357, -1121523, -1217086, -1182727, -3629247, 533113, 493384, -2753074, -1443646, -1007170,
+-23475754, 11538967, 1474784, -9131637, 2201708, -1020055, -2704219, -1879585, -5178120, 2754148,
+-2661806, 524523, 3367254, 3096672, 10151692, -4131222, -9726490, 5262409, -12329777, -5334350,
+1997160, 1669132, 1392106, 3963718, 4930623, 4231080, -101469, 5607617, 355409, -2268280,
+7474854, 4608500, -2291365, 4421132, -7753490, 14598594, 542777, 2688650, -1381906, -12594992,
+-2184528, -4709969, -4409321, 1913945, 10460393, 259846, 431107, -1387274, -2895882, -6817187,
+2138357, -1156957, 3741990, -8582418, 2876554, 4511863, 1997697, -6369974, -2252710, 1627256,
+812823, 5086852, 1003412, 17746268, -5081483, -7623567, -8621073, -2649458, 178241, 6308233,
+-8586713, -1155883, -3682398, 3879966, -12534862, -588411, -3397856, -5290863, 1559610, -1566053,
+3415573, -489089, 6278169, 3933116, -19864, 1292248, 484258, 748398, 7281580, 833761,
+5207111, 1846836, -1316944, 92342, 186294, 1463510, -958851, 732292, -279710, 2164127,
+408022, -1689533, -2396055, 1897302, -922881, -2895882, -1257889, -1541893, -663036, -913217,
+-53150, 3491272, 60130, 954020, 426812, 1387811, -1396938, -817654, -3034931, 10569378,
+-3438121, -2558727, 2251100, 3096672, -8580271, -8658117, -7921531, -7448547, -12162811, 7612293,
+-7131793, 2110977, 2912525, 10990284, -1858110, -2656974, 8600672, 1963874, 1773285, -10177999,
+-6680285, 4946729, 2128156, 3924526, 5925445, -10721849, 80531, 4518843, 10155450, -147103,
+924492, -1579474, -32749, -7013682, -1359894, -2212445, -13003550, -1087164, 3921305, -7487202,
+3144453, -8141648, -88047, -5648956, -1193464, -1797444, 688805, 10402948, -3091840, 86436,
+5313949, -3049427, 3093450, -8730595, -15508590, -8456791, -4734665, -2247879, 1598265, 10256919,
+-4901095, 2705830, 2461553, -7484518, 2456721, -5779952, -2063732, 3711926, 10413148, -1674500,
+-615791, 3274913, -293132, -9899900, -9362492, -3976603, 9230422, -1192927, -13987635, 908922,
+-9211094, -4137664, -1960653, -1047972, 3032247, -3604551, -1128503, 3384971, -1043677, 3987877,
+3461207, 2464238, -1716913, 3901441, -3620658, -2761127, -2585034, 512712, -480499, -856846,
+-908922, -779537, -1299765, 699006, -393526, 2474438, -1850057, -1228361, 1008780, -1645509,
+-985158, -4126390, -4944581, -535260, 309775, 2289218, 244813, 1337882, 34897, 10321880,
+10834592, -3311957, 1009317, 11365557, -11555073, -10279467, 8696235, -2077690, 1189706, 7898982,
+-1559073, -2153926, 7886097, -14601815, 6223408, -652298, 2472291, 7117298, 7332046, -8172249,
+1548873, -11230803, 3455301, -3374234, -1206349, -7812009, -404264, -11201275, 1082332, -9707163,
+6801081, -3398930, 1283122, 12138114, 5619965, 5441187, -9686762, 1795833, 11238319, -2646774,
+-15984795, 8590471, -1957431, 1579474, -3150896, -7394323, 10549513, 3811784, 8594766, 2166811,
+1239098, -7077569, -9217000, 3337727, 4304094, 4641786, 6120329, 14163192, -476741, -10944650,
+-7145215, 8535711, -1233729, -9403294, -2485712, -556735, -2576444, -11904576, 183073, 1655173,
+2974265, -4297652, 6870874, -326954, 755377, 9806484, 4998268, 10210211, -10023380, -4163971,
+1846299, -5480915, 4560719, 2829310, 2792803, -392990, -1276142, -813896, -156229, -3920768,
+5044976, -1822140, 3093450, -790274, 3603478, -1411434, -1789928, 250719, 2070174, -1750736,
+-69256, -414464, -1990717, -971736, 912681, -2157684, -683974, -4613869, -3627637, 1996623,
+3206193, 1702955, 1460826, -449361, -380641, -2137283, -349503, 2431488, -3102040, -401579,
+1431835, -584652, 2509335, 2475512, -1736777, -657667, 2243584, 1602023, -1167694, 8219494,
+-10004589, 11718281, -2637647, 12395276, -10122701, 9174587, 1010391, -969589, 15439871, -8065949,
+925029, -7829189, -2331094, 23530516, 11358041, 4996121, 3407520, 6692096, -3757023, -31675,
+-19889994, 3694746, -827318, -8603893, 9543417, 7155416, -293668, 1698123, -11491185, 10129143,
+-5363878, 10756746, 7054484, 5742908, -8242579, -1452773, -6929393, 10328323, 2384781, -3764002,
+18315888, 8749385, -2058900, 958851, -15162308, 2572686, 710817, 12045236, -5405217, -15432354,
+-2647311, -4272956, -2991445, -21810380, -10858751, -23230404, -11823508, -8305393, 2742874, -5844377,
+10975252, 1362578, -12530030, 7561290, -8380018, 11854647, -10562398, -8578660, 6190122, 10559177,
+10416906, 30065, -9747965, -7792682, 4783520, -6391985, 250719, -3230352, 3941706, -4388383,
+-6434935, 11361799, 5281199, 1549946, -1799054, 4280472, 2432562, 5269388, -485331, 3568044,
+1274532, 5917928, 125628, -280784, 343061, -2918967, 112206, 1511829, 734976, 647466,
+166430, 4557497, 2098629, -3601330, 406948, 2072322, -1130113, -1376000, -863288, 273804,
+877784, 2294586, -569083, 1564442, 2673080, -555125, -2699924, -238371, -2944737, -1296006,
+-2719251, -1755031, 2368138, 162135, -1519882, -14412300, -17111686, -11342472, -1632088, -220117,
+-2219961, 4067334, 6190659, 4298189, -2684, 2304787, -5430986, 3563749, -11024107, -15368467,
+482647, 11781632, 2063195, -4150549, 9428527, 5578626, 9125732, 15359877, 1994476, -4745939,
+-9789841, -7841537, 4488778, -8987756, -6230924, 2309082, -7111392, -15677704, -8593156, -870805,
+-1819992, 3660386, -3526168, 8676908, 2521146, 3288334, 12015708, -1931125, 1424855, 2779918,
+-9591199, 11307038, 1862405, -10468983, -17119740, 4350265, 1538672, -12446278, 13166222, 8542690,
+-11532524, 3898220, 11067057, 6221260, 2966749, 9185861, -4206921, -3714073, 694711, -5097053,
+-8150238, 13941464, -12437152, -1393180, 5201206, 1188095, 21675626, -18824842, 5738613, -2412161,
+-91805, 6055367, 241055, 1292248, -5064840, 2862596, -11167989, -23679228, -1338956, -294742,
+-12175159, -7743826, -1702955, 4468377, 3894999, 1661616, 992137, -3950833, -130997, -5531918,
+-2795487, -1079647, -3218541, -4988605, 1694365, -956704, 835908, -2558727, -1881196, 1166084,
+-4076998, -8646306, -3037079, 571231, -2363306, -8338679, -4670240, 3441880, 2344515, 1625645,
+-1676111, -3212636, -4017942, -753230, -2033130, -4740034, -3946001, -5586679, -2941516, -3774203,
+-3800509, -125091, -955093, 1496259, -1509681, -1062468, 3049427, -4175782, -11172284, 9836549,
+-20196546, -14342506, 10631118, -497679, -18396956, 9430138, -10768557, 20817706, 4153234, -27399744,
+-3498788, 2491618, -6935836, 2062658, 4760435, 9727027, 8310762, -15913391, -715649, 1491964,
+-3319473, -14581951, -2275259, -3022046, -5031018, -4443681, -232465, 1086090, 12392591, 13608604,
+-4239133, 7333657, 6303938, 6193343, 13531294, 181462, 3621731, -15604153, -5390721, 5514201,
+-3111704, 7551626, 18582712, 2755759, -16310138, -36280124, -106837, -11173357, 10282152, -6842957,
+-3721589, -7112466, -19632296, 8555575, 26186416, 1558536, 6844568, -20537460, 4231617, -2304250,
+-9286793, 2390149, 10027138, 5259188, 8085813, -8820252, 12981539, 7665443, -15186467, -22479858,
+-1461363, -17082696, -16047608, -10166724, -11839077, 1587527, 21087752, 8159364, 750546, -2768107,
+13568339, -6864432, -10149008, -1560684, 2090575, -1528472, 2477659, 2175401, 97711, 2204929,
+5176510, 1988033, -589484, 467078, -2041720, -1919314, 5430986, -1564979, 5342403, 222265,
+-3069828, 755377, -1629940, -2167885, 6462315, -1461900, 3482145, -7869454, -1051730, 3993783,
+-70867, 1706713, 6599754, -4860293, 6027450, -483721, 639413, 1991254, -2075543, 4774930,
+636192, 417686, 776315, 374199, 2075543, 6124624, -2536715, 2253784, 2300492, 2484102,
+2593087, -39564164, -24974698, 17972828, 14476187, 23538032, -62277, 9288404, 2317672, 7446937,
+-277562, 4811437, -10397579, -12466679, -7733089, -11158325, -7195144, -7941932, 9589051, 22630182,
+4959077, -27557048, -6531035, 4860829, -7303592, 6765111, -15746424, -1249299, -511101, 944893,
+7708393, 5855651, 1101122, -1870995, -3502009, 6448357, 12498355, -9972377, -15495168, 10350871,
+4934381, 13568339, 6200859, 19711752, -13598403, -4749697, 12584791, 18796388, 16323023, 9683541,
+4605279, -3995393, 1249299, -2334852, 84289, 6534256, -24508694, 13211319, -1921998, 3601867,
+-1611150, 18650896, -5673115, -246424, -4075387, 11839077, 10033580, -20890184, 15015206, -17765596,
+-894427, -8994198, -8946417, 8157217, 1489280, -27710056, -2455111, -2157684, -5116380, -3198677,
+-650151, -3510062, 14413373, 1449552, 13786845, -4327717, 16302085, 7723962, -8420820, 3620121,
+-2104534, 969589, 1056562, 1570884, 2195802, 874563, -3163244, -5186710, 8105677, 3630321,
+6651831, 1892470, -3963718, 7694971, 294205, 438087, 5769752, -16141561, -7505992, -7152731,
+2266132, -180926, -10996727, 514322, 1838783, -469225, -2072322, 10737, 3769371, -3979287,
+-170725, 4419522, 2174327, 5378373, -4673462, -2244121, 1318555, 5832566, 21975200, -24447490,
+-562104, -13895830, -39199092, -4634270, -14467597, -30939870, 6183679, -199179, -6012418, 1946157,
+16628503, -1074816, -17575544, 6033356, 710817, -5646809, -4227322, -3132105, 890132, 19164680,
+-4299263, -702764, 8702677, 6433324, -2756832, 9281961, 8493298, -4088809, -4021700, -7694434,
+10666014, -2544231, -18357764, 2808909, -1212255, 6314676, 24064702, -16054051, -25756382, -16240882,
+-7518341, 3569118, 8600672, 4574677, 18321794, 9160628, -12899934, -7444789, -17597554, 15252503,
+9388799, 1705639, 3247532, -10091563, 1075889, -10677289, 18474802, 18126910, 1306207, -8428336,
+-4679367, 1801202, 16822314, 33556044, 20659866, -3161633, -7475928, 478352, 10696079, 4651450,
+9875204, 13607530, -13442174, -610422, -25943750, -17482128, -16661252, -11159936, 7009387, 15963320,
+10980621, 1757179, -3147674, -1470489, -14425185, -18149458, -4556424, -9629854, -9073655, 2114735,
+-1809255, -2294586, 135828, 614180, 4191351, -4597763, 9330280, -9407589, 4032974, -11981348,
+-3980898, 12885, 2274722, -323733, 2164664, 4638028, -3206730, 578747, 11092290, 13513578,
+16280074, 8943733, 10223096, 4641249, 1999307, 801011, 357019, 658204, -2765422, -8714489,
+-8507793, -1376537, 6752763, 44023, 1114007, -3532074, -2458332, 1083942, 8258685, 5206037,
+9843528, 6957310, 8390219, -19150722, -2259690, -9921911, 14396730, -15912854, 3073049, 1387274,
+28167470, -17437030, -5116917, -17934172, -3887482, -17714592, -14890652, -10747619, 5542119, -19054086,
+-13828184, -20718922, -5299990, -3126199, -6349036, -9368397, -23092428, 6023692, -16326244, 6584185,
+-17128866, 21088826, 3238405, 9446781, -4083977, -19912006, 10650982, 6164352, -6710350, 10648298,
+14899242, -8067559, -21455510, -11492796, 28732794, -12289512, -947577, 734439, -4886599, 6313602,
+18619220, 3300682, 7914014, -6003291, 13318157, 183610, 10489384, 3197066, 3555159, -326954,
+1067836, 22790708, 6899865, 54564340, -33313914, 21263846, 29894582, -7899519, 674310, 15425375,
+-11184632, -3272765, 25029996, 9921374, -4181151, 13292387, -5694590, -24241332, -17942226, 6090264,
+969052, -32388886, -9021042, -3306051, -16829830, 8652212, 5037997, -10930155, -8961986, -6597607,
+943819, 2989297, 6853694, -5677410, 803696, 4013110, -1795833, -7191923, 1984275, 1521492,
+2267743, 6747394, 1198296, -4091493, 545461, 7817378, 6918656, 3377992, -7744363, -155156,
+14251238, -4052302, -3006477, 7923678, -7740068, -13383655, -3818226, 751082, -1741609, -6859600,
+-2112587, -395137, -7584912, -1552631, 814970, -2083059, -7870528, -12959527, 4940823, 13986561,
+5057324, -260919, 511638, -2582349, -8253854, -6565395, 30640296, 34205120, 775778, 24771224,
+24680492, -1058710, 11282879, -24239184, -7288560, 22007950, 2385854, 21731460, 30325154, 25001004,
+-4642323, 16411607, -24810416, -38918308, -16445430, -14384382, 9780714, 347892, 10443750, 11212012,
+23963770, 18564996, 6718940, -18418968, -1927367, 18963354, 6364605, -8905615, 12378633, 26039850,
+-2548526, 9234180, -20676510, 10329396, -16246251, -4245039, -10183367, -21556978, 13732084, 1761474,
+6881612, 26360362, -13763760, -15630997, 9783936, 27299886, -20903068, -13987098, 9155260, -6629282,
+38579008, 28526100, -26533234, -9926206, -20899848, 1364726, 23678154, -10600516, -15836618, -7169374,
+1790465, 5826660, -19025632, 4847945, 39319888, 3023120, -25690884, -39580808, 32455994, -38178500,
+-31853624, -18658412, -16116865, -27580132, 7765838, 7218230, 44971528, 11319923, 19958176, -9706089,
+21672942, -2465848, -8800388, 8194261, 1301375, -1929514, 22218940, 2911451, 11522860, 14055280,
+7858717, 16823386, -4439923, 4620311, -3310346, -1260036, -3289945, -13971529, -10085657, -11527155,
+13693966, 4846871, 12230456, 14824616, -2945811, 8906152, 19452980, 6949794, -5874979, 9924596,
+11800960, 3991635, -2383170, -13848585, -12151536, 12444131, 5567352, 8282845, 16671452, 36328980,
+15936476, 9172440, 6987912, 10281615, -5104569, -1211718, 18622978, -11780558, 6689949, -6545530,
+6323803, 3681861, -35524748, -20596516, -26735634, 6997576, 14719927, 5149666, 22632868, 20334522,
+28725816, 8880382, 31373662, 13983340, 20218022, -10047539, -4019553, -10093710, -24332600, -17466558,
+-37592776, -22316114, -7303592, -21922050, 4730907, -905701, -665720, 8909910, 7274064, 3358128,
+18061412, -4606353, -15148887, 21691196, 1911797, -28789166, -12495134, -3142306, -34647500, -26254598,
+-25585120, 2330557, 12226698, 3315715, -13361106, -1698660, 14352170, 8873939, 34299072, 6393059,
+-46342160, -15434502, -8088497, 7367480, 7131257, -5333276, -12358232, 17124034, -25706990, -4764730,
+-20628192, 15557445, -40454296, -25016038, -33006824, -26453778, 1180042, -14918032, -11600170, -26539140,
+13269838, 47679504, -1312649, 30821222, -17182016, 7559680, -22717692, -92342, 33883532, 8096014,
+-16132434, 1800665, 12994960, -22937272, -35606888, -19127100, 9007620, -27635968, 11797201, -407485,
+-845035, 17737142, 9182103, -4734128, 20506322, 20498806, 16376173, -5407364, -5738613, -3591130,
+-320512, 14288282, 10195715, 7216619, 290984, 14901389, 8186745, 2298881, 1885491, 11040750,
+-4669703, -3772055, 7614440, -11471321, 10302553, -9963250, -9879499, -11725798, 20486994, 12801150,
+19040664, 6997576, 7141457, 1697586, 1282585, 9338870, -14387604, -23070954, 1759863, 6452115,
+5718212, -9440875, 26409218, 10785737, 26641682, -43562780, 18854370, 32673426, -3211562, 37637336,
+-19997904, -57510684, -29775398, -438087, -5767068, 6305549, -20622286, 19825032, 28047748, -25324200,
+22271016, -13892609, -16986058, -40174588, -16421271, -23105314, -15263777, -18489834, 18066780, 2658048,
+-35997732, -46090368, 34748432, 7826504, 12432857, -10810433, 2750927, -12505334, 292595, 10537165,
+16012712, 14506252, 38909720, 1208496, -27992450, 37738804, -4041027, -9855876, -17584670, 15904801,
+-31122944, -20912196, 17591112, -16203838, -24253144, -30419642, -26665304, -5723581, 3512210, 2842732,
+-8266202, 32724966, 27839442, -2724620, -15946677, -27426050, -31490164, 7728794, 6582038, -6216429,
+-3121368, 44939316, 2982855, -13147969, 19377282, 9306657, -29688962, 23557896, 42742976, -46947212,
+75754632, 20233590, 21832392, 8289824, 21986474, -6037651, -46864536, 32044750, 2670933, -5830955,
+33251636, -39536248, 6856916, 6934762, -289910, -3830574, 1594507, -3095598, -10995653, 5823439,
+11614665, -9743133, -1326071, -14407468, -16596827, 21415244, -4829154, -10522133, 4825396, -5741835,
+-13234405, -23835994, -5574331, -8109972, 20753282, -20001662, -2128156, 24549496, -5315559, 19615652,
+-7131793, -17177184, 8803609, -3474092, -8289824, 10149008, 2262911, 27040040, -3764539, -435402,
+17815524, 54350664, 23877870, 1275605, -18184354, 25967910, -421981, 1887638, -12452721, 23699630,
+-27472758, 20076288, 19294066, 20333448, 9842454, -7428146, 26949846, 33803540, -6877854, 13980119,
+-20928302, 34012920, 14521821, 11404212, -21656836, -47345572, 9460739, -14481556, -10803453, -19183472,
+-24204288, 14685030, 6595459, -11724187, 2736968, 1193464, -12772696, -57854820, -3583613, -12239046,
+-5909338, -832150, 40845676, 27924266, -13576928, 10577968, -26856968, 3062312, 20158430, -30668214,
+-28472948, -23376970, 36980204, -26500486, 7719667, 29717416, -39957156, -37104224, 34254512, 27263916,
+28760712, 38416872, 14229227, -49066780, 11112154, 14552960, -4305168, 80217640, -8257612, -12183212,
+-36203888, -31303332, 16201154, -28853590, 18861886, 6577206, 21329882, 43945032, -28145458, -19209242,
+53524956, -32567664, -35935456, 23518704, -46293840, 33704756, -35191352, 8033200, 12156905, -25511568,
+10624675, -29619706, 20656108, 37780680, -1503239, 6550899, 7804493, 1393180, -11503533, -10896869,
+-2432025, 10937671, -4833986, 7371775, -7625178, -23453742, 10090489, 2047089, 15979426, 7868380,
+13960791, -4776004, -4592931, -23270670, 16360067, -3175592, -21163452, 4918812, 43736724, 12039867,
+-11103564, 12798466, 23580982, -11707007, 2630131, 17987324, -8999030, 17931488, 6172942, -5702106,
+-28037546, 4708895, -10675678, -749472, 35101156, -16086263, 1921998, -9327595, 12139188, 40338332,
+3468723, -34213172, 49101676, 12007655, -3158949, 35035660, 17417166, 28366648, 10663867, -41888816,
+-9134322, -15585899, 19874962, 49069464, -30921618, 8035884, -14788109, 21930104, 25152402, -32890322,
+27672474, -26388280, -23760296, 12282533, 22798224, 1114007, 7641284, 17825188, -26629334, 23760296,
+1967632, 28965260, -4993973, -7451769, 9513889, 42819212, -19031000, 34626028, -16555488, 7108708,
+9140227, 34602940, -1896228, -2077154, 11982422, 52074868, 3553549, -40421548, -3163244, -48696876,
+29477972, 266825, 80233744, 17309256, -23278186, -6947110, 17847736, -17564806, 28271622, 52427592,
+35931160, 941672, 15352897, 22796612, -2434710, -24173686, -3199214, -5383205, -83471616, 52279416,
+39040716, 36025648, 8806294, -36079336, -10699837, 27444304, 14287209, 23917062, 12958453, -79946520,
+-28492276, 49295488, 13651017, 15994458, 42474544, -29885456, -857920, -4115653, 24106040, 6161668,
+-2258616, -6444062, 19018652, -4878009, -21745420, 10911364, -10438918, -12457553, 11438572, 16696148,
+-12197707, -3793530, -352724, 13175349, -16713865, 13683766, -14755897, 7043210, -25575994, -26228828,
+26139170, 3414499, 2390149, -2988760, -18873696, -5816997, 17535814, 1890859, 6019934, 29053306,
+-4404489, -22042846, -2029372, -12529493, 10005663, 10868952, -10400263, -8912057, 11556683, 24045374,
+30529702, 31479426, -19498614, 32030792, -29353418, 4917738, 15315317, -15103789, 2131915, 5996311,
+-8042327, -15772194, -29687350, 45157288, -10150081, -8937827, -15096810, -2568391, -6244883, 14651207,
+-30408368, -8804683, -19035296, 6485938, -19133542, 18309982, -138513, 9414031, -21095268, -38458748,
+1802813, -28123982, -29343216, 13242995, -22509924, -19087908, 37120328, -13785234, -21714818, 2735894,
+-22326850, 10429791, 14016626, -4130685, -18234820, -5365488, 10626823, 9309878, -8291435, -829466,
+32737314, -5878200, -20204600, -25706990, -3690988, -11294153, -38632156, 36206576, 12538620, -44404592,
+27318676, -2017561, -18596672, 85270136, 48050484, 39239360, 20856362, 11945915, -20247012, 3114388,
+9390946, 10011569, 3826816, 37313604, 8377334, -11123965, -18391050, -75511432, 15407121, 9876277,
+-363998, -14769319, -28420872, -5659157, -18306224, -16436840, -1172526, 23791434, -16327855, 41187124,
+6055367, -8264054, -2876554, -3548180, 3295851, 17305496, -6718940, 4309463, 12189654, 4160213,
+2359011, 9447854, -15360951, 7440494, 2792803, 24079734, -8360154, -6066105, -6613176, -6134287,
+-19122268, -10473278, 7015292, -20956220, 15627239, -4278861, -9947681, 14317273, 9169755, 12032888,
+-4470524, -1950989, 1648731, 2246805, -13169980, 6876243, 998580, -685584, -1134408, 8560407,
+-39060044, 65988416, 8433168, 21641266, 11814918, -16337519, 12295954, 18600430, 4662724, -1872069,
+-15910169, -2775623, 4536559, -7435662, -5624260, 2785286, 7447474, 19210852, -13249437, 8091182,
+826781, 15335181, -5362267, 3053185, 5095442, -17577154, 14358613, 2334315, 3595961, 5153424,
+5341329, -11133092, 11944841, -9594957, 2494302, 11401528, -6140193, 11178189, -4758824, 14085345,
+10976863, 6362457, -17383880, 13064217, 9975598, 7956964, 21811454, -20890184, -1762547, -173409,
+-4378719, 6414534, -10733660, -17304960, 11954505, 13456133, 6811818, -1640141, 2928094, -1846836,
+7066295, -6060199, 2915209, -12848932, 11790222, -19958714, 18937584, 10534481, -6250251, -267362,
+7912941, 569620, 7102802, 151934, 881542, -660888, -6688338, 9688372, 13208098, -11564199,
+-2570001, 2429341, 7371238, -5250061, -5422396, 1537061, 2490007, -1310502, 1410897, -4248797,
+1704028, 5405217, -4107599, 1156420, 3278134, -4355097, 3833258, 4734665, -332323, -1521492,
+-2150705, 923418, 9903658, -3688303, 1373316, -9097278, 647466, 10098542, -7042673, 7517267,
+-3369402, 571768, 16824460, -2931852, 434865, -353261, -5054640, 8658117, 3650185, 3718368,
+3651796, -2735894, 2340757, 9482214, -2659122, 6455873, -4103841, -719944, 12753905, -52625160,
+-122606824, -19586662, 71805944, 65180424, 160488976, 83813600, -43142408, -13246753, -88809720, -150803824,
+-10371809, -68522984, -9509594, 109915728, 46970836, 84924392, 130380712, -15144592, -19054086, -66186520,
+-112542104, -89491552, -5730023, -33614024, -12705050, 93552440, 29700236, 60861296, 110603464, 18134962,
+-413391, 11467563, -67214088, -101802000, 17530982, -105197168, -68800008, 23377506, -10547366, 17128330,
+135453600, 15562277, 51946020, 110599168, -22000434, 3456375, 24684788, -106575856, -88871464, -31478352,
+-121298464, -46964392, 15484431, 22470732, 83584360, 117725056, 83919368, 59248536, 51615844, -19576460,
+-71051104, -58331560, -87848184, -92284888, -39557184, -23360328, 630286, 77509664, 92438432, 28973312,
+72234904, 21104932, -22857816, 15239081, -50332184, -69939248, -13689135, -32464584, -21749714, 39495444,
+-1460289, 27559194, 49070540, -13415867, -1079647, 52076, -24839944, -7596187, -1713692, -18570902,
+20781200, 7590818, -4843113, 34013992, 10826539, -4804458, 32625646, -11399380, -34973380, 758062,
+-53425100, -37321656, 11537356, -35474820, 7592429, 41255844, 30258044, 56211996, 61210800, 22373022,
+21633750, -2493229, -50493248, -70471824, -72613400, -75746584, -48209936, -3548180, 24310588, 52456048,
+90927144, 97675608, 80999328, 63506996, -3823058, -59535228, -85520312, -109204376, -111530640, -59366112,
+-17980880, 46760384, 98652176, 89492624, 53832584, 40014600, 11560441, -8215199, -13448079, -39270496,
+-45605036, -34097744, -28732258, -20415590, -4365298, 4234838, 16190416, 24474872, 24661166, 23924578,
+20991116, 9780714, -1379758, -7547332, -7346005, -5318780, -2968896, -2348810, },
},
{
{
-4409321,
-4645544, 1169842, -2513093, -1113470, -5609228, -1494112, 4714264, -2479270, -1804423, 1459215,
--723702, -166967, 308164, -1490891, -1195075, 5713917, 2785823, -683974, 290984, -838056,
--1690607, 796180, 2050847, 3149285, -788663, 1211181, 1461900, -5037997, -1535451, 1074,
--989453, 3107946, 294742, -1051730, 2800319, -2114735, 955093, 4337380, -2386928, 285615,
-592169, 3295314, -1253057, 4540854, -6410776, -2333778, 2807298, -1263794, -5432060, 399432,
-1105417, 1821603, 1874216, -580357, -2334315, 209917, -2117419, -1439351, 644245, 2703145,
-2491081, -3621194, 3202435, -3963718, 3555696, 209380, 3118146, -1204738, -2568927, -1134408,
-2098092, -397821, -522912, -623844, 2902861, -3117073, 1610613, 768262, 783832, 995359,
-2321967, 745177, -1489817, -1682017, -930397, 1265405, -272730, -1234266, 238371, -1490891,
--330176, -102005, -1525787, -607738, -860067, 202937, 821413, -1028108, -740882, 427886,
--211527, -1471563, -15569, 804233, -573915, -73014, 300111, -135828, 576599, 420907,
-41876, -1111860, -373662, 41876, -505732, 30602, -124554, -779000, 436476, -1320703,
--15288473, 5019743, -5557151, -2214056, -4549981, -4671851, 2656437, -1557999, -3944928, -2119566,
-5366562, 7975755, -4361540, -1623498, -387084, -5743982, -5397164, 404801, -545461, 3509525,
-1182727, 2614025, -2302103, -1441498, -2982855, 840740, 5148055, 2234994, 1001264, -3318936,
-2517388, 761283, 1540820, -2166274, 192200, 760746, 1156957, -2943663, -2152852, 805843,
--4063576, -4154307, 1782948, 3151432, -3542274, -1782411, -1365263, 255014, 3141769, 2532957,
-1096290, 477815, 8125005, 3190624, -2565706, 3163780, 2253784, -2257542, 3838627, -1430224,
--962610, -21475, -1673427, 3411278, -1920387, 896038, 2056216, 1647657, -3036005, 1196148,
-566936, 614717, -1061931, -1505386, -632434, 4765266, 317291, -1412507, -1021665, 1124745,
--4287988, 830539, 2553358, -165893, 1653026, -944356, -1545115, 1036161, 944356, -399969,
-1606855, 827855, -458488, 1140314, 1194001, 1996623, 259846, 6979, -141197, -600759,
--849330, -85899, -152471, -531502, 587874, -188979, 1990181, 11633456, 4636417, -812286,
-525060, 2665027, 1391569, -788663, -5030481, 161061, 4458713, -4577899, -513785, -8590471,
-2252174, 3496640, 230854, -2047626, 6276558, 4413079, -4049081, 1954210, 235149, -3549791,
-5600638, 3087545, -367757, 2261300, 5336497, -1656784, -1105954, 355409, 28991, 126165,
-1279363, 6554657, 1317481, 977105, -10602664, -562104, 479963, 1264868, -4799626, 1108638,
--3871913, -2971581, -4095251, -2675765, 21475, 1229434, -2503429, 2498060, -6092948, -3499862,
--374736, -82678, 1950452, -2442226, -571231, -2211908, 1319629, 3296388, -1997697, 352187,
--1729798, -316217, 5110474, 4003447, -1618129, 3751654, -1801739, -3202435, -4001299, -302258,
--374199, -2698850, 2434173, -430570, 692564, -301185, -891206, 180926, -577136, -2188286,
--141197, -3485903, 391379, -1717987, -1123134, -2928631, 3393024, -1043140, 1155346, 2317672,
-917512, -1183264, -275952, -1328219, -98784, 583042, -1306744, 1346472, -111669, 146029,
-192737, -481036, 790811, 458488, 248034, 99321, 1918240, 921271, -619549, -1308891,
--1193464, 1159104, 1560684, -5906, 397284, 18367428, -7986492, 1513976, -667331, -3384434,
-2921652, 5151277, -3338263, 5537824, -299574, 5906654, 1641214, 2087354, -2539400, 3349538,
-1298691, 3430068, -7220377, 3874061, -4267050, 1340567, -3583077, 4536559, -1232119, 4569845,
--2678449, 1684164, -1753420, -392990, -195958, -457414, 1801202, 9492951, 426276, 2789581,
--2619930, -4395899, 192737, 88584, 193274, 1447941, -3041374, 6228240, -387621, 5221607,
-371515, -2253247, -2845953, -7824894, 3854733, 2553895, -3651796, 411780, 3146601, 1670742,
--9108552, 5449240, -297427, 3875134, -5466420, -5893232, -2851322, -5740224, -1043140, 6642704,
-1392643, -2540473, 408559, 3759170, -1250909, -3010772, -1553168, -3376918, 2433636, -5121749,
--889058, -3928821, -1488206, -14496, 4423817, 2076617, 499827, 1380295, 5551245, 2913062,
-695248, 2028298, -1545651, -612033, 389768, 106300, 905164, 467078, -933082, 546535,
-1974611, -130997, 444529, 733366, -920197, -1272921, 1249299, -1523640, 1841467, 1079647,
-1708860, 45634, -617938, 1039919, 1693291, 441845, -665183, 550830, 4801237, -11261404,
-2295123, -3550864, -10289668, -7931194, 4216048, 4702453, 6188511, -3063386, -1592359, 4260608,
-2035815, 6367289, 2073396, -710280, 651224, 4064113, 7918309, -2027225, 2308008, -96637,
-6416145, 1476395, -392453, -1286343, -4896263, -7444252, 80531, -1069984, 2237678, -420907,
-1752884, 1305133, 454193, 478352, 1482301, -2541010, 285078, 3541201, 5538361, -2709051,
-658204, -2387465, -3182034, 4576825, -3511673, -8744017, -3438658, -2238752, 4202089, 352187,
-4636417, 4240207, -2246268, 188442, -3628711, -503585, -1557999, 5430986, -6838125, -196495,
-2304787, -7240241, -8150774, 127238, 2518998, 5163625, -3598646, -8621073, 4501663, -7954280,
-9303436, 5259188, 1531693, 3968013, -93416, -3828427, 11826192, -1073742, 5724118, -216359,
-8272644, 5689758, 3024731, -840203, -1612223, -2772402, -1021665, 1253594, 300648, 2289218,
--2338073, 1428077, -1241782, -843424, -877784, -952409, 1123671, -591095, -19327, -1748052,
--79457, 1087164, 1996086, -1999844, -2450279, 351650, 1086090, -10201, 1305670, -725850,
-154619, -953483, -308701, 683437, 1234266, 1519345, 906775, -1183800, -24921548, 5126044,
-1252520, -12519830, -15799037, -2546916, -12199318, 9904195, 2830384, -7357279, 451508, -3427921,
-1094143, -5025649, 634581, -294205, 49929, 6979859, -2505577, -1636383, -2922725, -2578054,
--6598681, -4424890, 6602976, -2736968, 4172024, -3688303, 1800128, 104690, 3768297, -3850975,
-2851858, -3868155, 1675574, -1483911, -2420214, 2386391, -6170258, 2362232, -3146064, -1132261,
--4487704, 10817412, 5142150, 9484362, -4054449, 3998078, 3211562, -1887101, 1679869, -4496294,
-4759361, 10401874, 8217346, -5731097, -1542967, 2436320, -4155918, -2787434, -7270306, -13591961,
--4617627, 6969658, 2500208, -3353833, 1372779, 715649, -3709778, -6455336, -6522445, 4634807,
-534723, -9989020, 1058173, 966905, -493384, -744640, 3311420, 7247221, -740882, -4832,
-1012002, -3758, -1906429, -6601902, 2185602, 2230162, 1358283, 3090229, 1868311, -2822331,
-728534, -1775432, 368830, -1500554, -606664, -1660542, 42950, 379031, -199716, -1200443,
--1170916, -349503, 515396, -33823, 2428804, 873489, 2267206, 2458332, 2656974, -3177202,
--3230352, -1205812, 2440615, -823560, 896574, -945967, 1348620, 1418950, 913754, -1545115,
--874026, -9754408, -4061429, -2529736, 7379291, -1940252, 1758789, -7597261, -7928510, 406411,
-2311229, -4633196, -2652142, -4345970, 9042517, 2008434, -3016141, -6573448, -6491843, -6340446,
--1756642, 3076270, 9083319, 2965138, 5138929, -4049081, 9672803, 5541045, 1792075, 134755,
-9948218, -5777805, 961536, 3173981, 6740415, -10850698, -5519033, 4777078, 1932198, -1470489,
-11361799, -4924717, 3231426, 6874632, 2150705, 1185948, 5022428, 2068564, 2513093, 2584497,
-1111860, 2973191, -139050, 4362613, -973884, 10638634, -7676181, 8763344, 6959995, -5994701,
-6892886, 1312649, 5863167, 5947456, -12927315, -297427, -490700, -3855270, 2100776, -3472481,
-3620121, -1423782, 8289287, -852014, 1324997, 3436511, 2348273, 3328600, -5243082, -1717450,
--5359046, -4936528, -2837363, 8073465, 1221918, -2500745, 2392297, 2266669, 1043677, -1296006,
-857383, -899259, 3182034, 1257889, 1023813, -1469416, 993748, -2950106, -258772, 3564286,
-1843078, -505196, 1182190, 1305133, -963146, 1541356, 1009854, 3462281, 1887101, -1824287,
--735513, -1054951, 1051730, -2953327, 895501, 13029320, -3384434, -1966558, -3135863, 9292699,
-4901632, 1034550, 3574487, -6207302, 13874355, 4626217, -1044214, 5265093, 6726456, -11243688,
--709743, 2717104, 1368484, 28991, 9601399, -4549444, -5753109, 13191455, 2035278, -889595,
--1258962, 6913824, 574989, -955093, -1241246, -3149285, 3475166, -1937030, 4619238, 3257196,
--8234526, -7808251, 1034013, 15560667, -134755, 3208878, -9523553, 4766877, 6424198, -3921842,
-4776004, 5903433, -9656160, -5887327, -1168768, -12396349, -6548752, -7384123, 2233920, -2507187,
--2706903, -1328756, 8796093, -11954505, 5348845, 2641405, -3839164, 7355669, -4634807, 737661,
--10020696, -177167, 6140730, 5504538, 11514270, -13514651, -3316252, -15008763, -3177739, -275952,
--3528853, 1714766, -686121, 13708999, 10671920, 6038187, -6761353, 372588, 2673080, 6691022,
-8258149, -168041, 84826, -1150514, 222801, 4684199, -178241, -388695, -140123, 97174,
-283468, 579284, 1943473, -1916629, -557809, 1960653, 374736, 1811403, -14496, 206158,
--1524177, 2480344, 1576790, 34360, 2376728, -1179505, -99321, 2172180, 632434, -374736,
--2646237, -185757, 658204, 386010, -911607, 2777233, 4720169, -861678, -78383, -2116345,
-1595580, 8907225, -9888625, 377957, -6040335, 17067664, -7141457, -4081293, 14803679, 11172284,
-2113661, -20521890, -4962298, 9516037, 821949, -937377, -2874407, -1569811, -1548336, 1488206,
-3243237, 2957085, 2821794, 18278844, -3745748, -2595234, 73551, 2429341, -5374078, 3252364,
-1995549, -632434, -5919539, -3711926, 6645388, 7096360, 13408351, 3458523, -5428839, 3418257,
--107374, 3463354, 314069, 7449621, -6103686, -9160628, -9421011, 6255620, -2637647, 1341104,
-2538863, -3349001, -561030, 15881715, 5478231, -13320841, 9572945, 3077344, 16108275, -8301098,
--7793755, 4681515, 8704288, 6006512, 3395709, -1435056, 573378, 4167729, -5156645, -1460289,
-241592, 6851010, -4867809, 13722957, -424128, -147640, -7004555, -7936026, 15715822, 4691178,
--12769475, -2965138, 10854993, 7518341, 1562294, 2747705, -6465000, 2085207, 1813550, 2142115,
-1268626, 2373506, -2931852, -3614752, 563714, -74088, -2936147, -962073, 2880849, 2789045,
--3949759, 1102733, 79457, 1794760, 2499134, -634581, -619549, -956167, 1717987, 4848481,
--3391951, 2687576, -132070, 153008, -1947231, -440771, -1423782, -993748, 2403571, -762894,
--1241246, -3090766, -6979, -1735704, -12320114, -10470057, -4148402, 3668976, 3762928, 18720152,
-18159658, -2238752, 1349157, 700080, 9664, -315143, -3912178, -12379169, -9547175, -4967130,
-4209605, -3526705, -10814728, -3127810, 1889249, -893890, -16509317, -4911832, 3481608, -1773822,
-1404991, 1032403, 4772783, 7109782, 1017907, -5318244, 5163625, 5442261, 3740380, -309238,
-7019051, -14445049, 4655208, -12807592, 15695421, -11336566, 4173098, -12021077, -2139431, -13419088,
--7209640, -8393440, -9156870, 6087043, -8073465, -1606318, 2616172, -178241, -4384088, -3112778,
--1553168, -13117367, 257698, 780610, 6298570, -20432770, 307627, -599148, 9323300, 11348377,
--7929047, -4829691, 253940, 8705899, -17016124, 10723996, -7752416, -5071283, 639950, -16445967,
--1033477, -1387274, -2752000, -2990371, -2237678, 16369731, 6507949, 3317325, -4131222, -3748970,
--4315369, 458488, 3831648, -6635725, -383326, -1199370, -1977296, 826781, 4645544, -1859721,
--3323231, 3023657, 1671279, -112743, 3193845, 1799591, 2639258, -1781338, -2430415, 4093104,
--3209951, 1025960, -4141959, -784905, -53150, -828392, -1716913, -3489124, -4039417, -4063576,
-739808, -244813, -1120450, -2932389, -2995740, -1144072, -1698123, 893353, 3857418, 2967286,
--9756018, -25290914, -10154913, -4878009, 4305168, 6730751, -8361228, -3208878, -10496363, -9257802,
-4746476, -8142721, 8211978, 3306588, 5869073, -1073742, -8286603, 14220100, 5574868, 7928510,
--10334765, 4254165, 1752884, -14981383, 9093520, 5432597, 426276, -10228465, -4028679, 4915053,
-5181878, -333934, 1701344, 7132867, -7209640, -5323612, 8375723, -17062294, -16874390, -22086870,
--5083094, 6968585, -19452444, -16210280, -9926206, 217970, 6789270, 2109903, 1799591, 228707,
--5747203, -7807714, -18391586, 9513889, 2547989, 21988622, -5454609, 474057, -13852880, -16465831,
-1903744, 10459856, 550293, -10428717, 6633040, 2654827, 14882062, 1372779, 1710471, -7397545,
--1571421, 6280853, -14966887, -27712202, -7888245, -6999186, 1296006, 7153268, -13416404, -6795175,
-4117263, -4720169, -1270774, 4220342, -2755759, -2315524, 5480915, 1306744, -716186, 2710661,
-4207994, 4842039, 733366, -3390877, -8990440, -885300, -5571110, 1374926, 755377, 1047972,
-3419331, -3216394, 3085934, 4457639, 2801929, 2498060, 2310156, -6565395, -6189048, -2311229,
--5366025, 521839, 1228361, 1680406, 5859946, -1473711, 3635153, 2345052, -2811593, -1360968,
--3985193, -5073430, -1625645, -6672232, -2418067, -1515050, -23607824, -18145700, -8351027, 12451110,
--1092532, 21324512, 4210679, -1857573, -11978664, 4250944, 21978958, -23024246, -20717848, -6860137,
--3445101, -14448807, 13673565, 3985193, 7410429, 8827768, -14452028, -1746978, 5805722, -9137006,
-17059074, 217970, 3844533, -4999879, 4219806, -11307575, -6416681, -3915400, 6427419, 3000035,
-10383083, -17040282, 1540283, -182536, -12641699, 13769128, -8243116, -20274930, 4020626, 7223598,
-1497333, -6103686, -1439888, -8487929, 1420560, 6817187, 2962454, -13893682, 5448166, -3227131,
--15312632, -9154186, -18818936, 335007, -2894808, -589484, 2491081, 11478837, 14426795, 11866995,
--6069863, -10531797, 3502009, -2757369, -1702955, -8171176, 15021111, 12255689, -2594697, 22865332,
--14593225, 7544647, 14559402, 15479599, 493384, 9793599, -6345278, -2660732, -12785044, -5575942,
-7775502, -2754685, -9934259, 6110665, -5651640, 6424198, -2837363, -6984691, 3670050, -1504312,
--3811784, -3133179, 2728915, -3481608, 2398739, 4475356, -4751308, 6122476, -649077, -3578245,
-2467996, 591095, 537945, -3008088, 3809099, -5754183, 2049773, 1928440, 385473, -3904662,
--234613, -2392834, 3003793, 5013301, 11426760, 5523865, 9168681, -644245, 102542, 4431870,
--5545877, 1352378, -7587597, -3360275, 8602819, -20468204, 2574296, 220654, -12945568, 1864016,
--28779502, -24899000, -5970005, -240518, 1058710, -649077, -10239739, -382252, -2937221, 9176198,
-1783485, -605054, 1715303, -21757230, 7501698, 4028143, 12051678, 4978404, 5214627, 14142254,
-7047505, 2022930, 35442072, 7554311, 13630079, 18781892, 870268, 13236552, 3315178, -7400229,
-8605504, 577136, 4138738, -7250442, 529892, -4717485, 2998424, -4704063, 9964324, 1163399,
--6212670, -7793218, 1059783, -21077016, 12220793, 8208756, -1079647, -1948305, 4799089, -5636608,
--4647155, -6948184, -8339216, 6906845, -6653978, 11442867, 13366475, 13054553, 13932874, -3287798,
--21129628, 284005, 8909910, 21248814, -4948876, -841814, 10086731, 14820858, 21915608, -2902861,
-9651328, -6549825, -3766686, -17678086, -13743358, -6070400, -6241125, -5099200, 3670587, 693100,
--7561290, 8483634, 5391795, 6648610, 12048457, 4747550, 4511327, -1518271, 6979, -1866163,
--3458523, 17717, 2167348, -77309, 6353867, 4992363, 3101503, -457414, -5226439, 205085,
--3757023, -4254165, 2644626, 3120831, 956704, -6612102, -1475858, -9569724, -2315524, 2967286,
-4669167, -3154654, 3877819, -5535676, -6302865, -3316789, -3809099, 3354370, 1797444, -5680094,
--3825742, 17408040, 22578644, -16698833, -17476758, -23106924, 20958366, -2110977, -8340827, 7339026,
-7110319, 19632296, 16386374, 1173600, 17959406, 25475598, 7348689, -12779138, 12293807, -11814918,
--6535867, -2331094, -8200167, -9891847, 5374615, -4915053, -4810364, -11962021, 27759984, 3612068,
--14500883, 162672, -1804423, 12523588, 13251585, 5326297, -8400956, 13350906, -3379603, 8310762,
--25031606, 1504849, 10693395, -10643466, 3833795, -11580306, -9382356, 26239566, 11033771, 8046621,
--1606318, -22891638, -5392332, 6873022, 5191542, 3928285, -5254356, 18560164, -12691628, 10400800,
--5845988, 6947110, 7661685, 14747844, 19885162, -22638236, -373662, 11939472, 5927592, 16702054,
-16224776, -22571126, 287763, -6101538, -11577084, -539018, -12117176, 5281199, 9679246, -4399121,
-17352742, -3653407, -10008884, -12219719, 10887742, 12443057, 12406550, -3147137, 2347200, -505732,
--17455284, -16906066, -15823733, 10136660, 5220533, 3372623, 8206609, -335007, -4249334, 12269648,
-1877975, 117038, 7613367, 11893301, 7297150, 1078574, 1498944, -3271691, 7326141, 3740380,
-15179488, -1214402, 2025077, 10711112, 8744017, 3124589, -1278290, 6919193, -3758, -1201517,
-12032351, -9279277, 717260, 7493108, 789737, -1994476, -3350611, -1609539, 187368, 8083666,
-1697049, 770947, 8898635, 6541772, -5385889, 17271674, 34621196, 1280437, -16852378, 4491999,
--11338714, 6994891, -9881109, -10639171, 31417686, -24217174, 39500816, 24108188, -6055904, 7795903,
-18992882, 2576444, -30118458, 11553462, -24422794, 5568962, 1984812, -12176769, 343061, -1834488,
-17151416, -8866960, -1030255, -870805, -5427765, 36383740, -2255395, -5704791, 4565550, 12115566,
--12614856, -26539140, 20637318, -3535295, -1726040, 23473070, -14061723, -4067871, -16712791, 4220342,
--11715060, 13159780, 12217034, 24988120, -7341173, 6825240, 16729434, -24120536, 2823404, -15451682,
--24152748, -30967788, -16271484, -33467458, -37478420, -5460514, 2330557, -17825188, -19016504, 11491185,
--1408212, -10855530, -20485920, 14487998, -10975252, 3592740, 18447958, -35144108, -10135586, -6659884,
-15433428, 41492604, -19805704, 964220, -12586939, -18776524, 8938901, -22422950, 17820894, 30852898,
--8907762, -14796699, -15436112, -4153770, -3707631, 31139, 10078141, 7153805, -8207146, 7967165,
--1039382, 6205691, 373662, -7829726, -2144263, 8833674, -15115601, 6818261, -7908646, 1794760,
--6430103, -2777770, -9076877, 1774895, -8716636, -13908178, -6501507, 2911988, -10047002, -335007,
-3107946, 14602352, -8551280, -5355824, 4982162, 5821292, -10687489, -7051800, 3161096, -3263102,
--5638219, 10072772, 1942936, -8488466, 7402376, 1711545, -12443057, 2116345, -10230075, 11168526,
--5106179, -16229071, -23997056, -18205292, 20045686, -16488379, 8060043, 19100794, 8115341, 12255689,
--22893786, 32797444, 20583094, 17875654, -13278965, 23500988, -2655901, 15534360, 10145250, 3435974,
-8400419, 11400454, 6870874, -3855807, -5943161, -5255966, 2277407, -15830713, -18749142, 10481331,
-4533338, 6080600, -15446850, 4171487, 4561792, 11482058, 17013440, 25756918, -14670535, 3894462,
-36531380, 7901666, 3804804, 3541201, -7686381, 2689723, 36361728, 10588705, 23499914, 6740415,
--25441776, -10535018, -18571976, 52997748, 21376052, -20480552, -12992276, -18265422, 2921652, -11984569,
--28969018, 6617471, -21987012, 32454384, -2462627, -26859114, 35174708, 28676960, 3896609, -7791608,
-4636417, -16345572, 21575768, 38924752, -10626286, 18463528, 43301324, -6846715, -7307350, -4952634,
-26264798, -1920924, -14866492, -13732084, -14215268, -229781, -1976222, -12167642, 708670, -5098663,
-13084081, 3335042, -13120588, -8084739, -14914274, -1580548, 1694365, -2371359, -10554882, -11412265,
--8446053, 7168301, 11713450, 1893544, -12896713, -1815697, 15597174, 133681, 14251238, 7698192,
--8584566, -725313, -13125420, 12506408, 5173288, -16387985, -31295816, 2844342, -2441152, -9350144,
-9678709, -74088, -5866926, -4391067, 2665564, 842350, -1742146, -25120190, 9963787, -3449396,
-24899000, -52100100, -35747012, 20605106, 9856950, 7452842, 17495550, -17781164, -23175106, -12764643,
--19088446, 10777147, -20480552, 5966247, 13591424, 22327388, 737661, 18710488, 10897406, 3070365,
--5974837, -19588272, -13820668, 11402601, -23949274, 12181601, 2814277, 20388746, 15560130, -7638063,
--29806536, -19386408, -1803886, -1498944, -7883413, 20390894, -36029944, -2803540, 1257889, -37740416,
--730144, -4657892, -3010772, 4027069, 22091164, -21537114, -59304372, 22126598, 24169928, 14394046,
-46261628, -38096360, -4885526, 25685516, 19663434, -23917062, -11101954, -6608881, 36442796, 7157026,
-34786552, -50331112, 7348152, -60038276, -35940824, -34813396, 41266044, 13054016, -26603564, 24202678,
-2842195, -23365158, 23756538, -34943852, -36643588, 5457293, -38056096, 11274826, -65016140, 9907416,
-20539070, -27724550, 30476014, -13836774, -7323993, 20340966, -7008313, -5623723, -14485851, -1089311,
-4820564, 11204496, -1313186, 10409927, 20540144, -15468325, -1657857, -12307766, 7335268, -8053601,
--2095407, 4436701, 2563559, 2707977, -2661806, 21087752, -6965363, 1665374, 9089761, -18697604,
--16359530, -18158048, -8380555, -30549566, -13948980, -11202885, 26337276, 5151277, 23450522, 10020696,
-4792110, 10575283, 7481296, 901943, 8927090, 1828582, 18282602, 44980120, 16646219, -16108275,
--10515154, 6208912, -11420318, -13401372, -1590212, 20929376, -3628711, 3911642, -22243636, -4602058,
-30741766, -22428856, 17009682, 40137544, 20080582, -1706713, -7650411, -13201656, -25658672, -18879066,
-22130356, -12606266, 20767778, 14955076, 7136625, 974421, 8117488, -6406481, -32631014, -11331734,
-23374822, 18503792, 19432042, -20663088, 35665408, -9185861, 13882945, -26358752, 24157580, 41525356,
--8331163, -14808510, -1504312, 1509144, -9205726, 9059697, 18199388, -34099356, 22405234, 21680458,
--5277978, 25134686, 13372918, 10831371, -15917686, 3268470, 22546430, -47553340, -42282880, -17661980,
-11257646, -21911850, -64287608, 26923540, 17700098, -8383240, -10868952, 449361, -3725884, -22079890,
--59044528, -3620121, 42016056, 10139881, -7412577, -5069672, 9118752, 34315180, 27427124, -40395780,
--16588774, 26859652, -5641977, -10878615, -46061376, -2754148, 25361782, 8339753, -7041599, 15528991,
--5738077, 1577864, -17310866, -2925947, 10633265, 15792595, -8952859, -3342558, 3330747, 9096741,
--5617281, 5567888, 821413, -11356967, 6841883, 19211388, 3389803, 5674726, 3676492, 8623757,
--9016210, -16028818, 1625108, 17147656, -14049912, 6099391, -4698694, 1453846, -13625784, -26483306,
--14281840, 9738301, 32196148, -3372623, 15247134, -21363704, -9276056, -14473503, 8964670, 6155225,
-10207527, -7346005, -10937671, -865973, 2374580, -1056562, 21913996, 29035052, 683974, -32659468,
-43335148, -12127914, -30188788, 27120034, -4312147, -16409459, 20970714, 5637682, -4343823, 17692580,
--24173150, 22996866, -8167417, 804770, -7002408, -5981279, -33714420, 13398150, -12846247, 5349919,
--13493177, -1084479, -10049687, 9696426, -5872294, 36509368, 6484327, 23895050, -9247065, 5997922,
-15123117, -6376416, 10463614, -2038499, 18258442, -887448, -6086506, 28834800, -25703768, 14389214,
-19723564, -11528766, 22318798, -13615583, -520228, 11489574, -8684424, 26217554, 23488102, 4900558,
-39064340, -24031416, -55079196, -9253507, -34044060, -22524420, 80519360, -2028835, 24725052, -3736622,
--33938296, -854699, 33845416, 47907140, 29145648, 48257180, -25920664, -7744363, -11599633, -27524834,
-18291192, -7715909, -16973710, -1758789, -33401424, -61081416, 15404437, 21524766, -18058726, 12191802,
--3780645, -18212272, 19477140, 14341433, -7100118, 20055886, -7344931, -17882634, 9213779, -8873939,
-23786066, 2247342, 1794223, 13437342, 4495757, -15131170, -6334003, 7803419, -4971962, 14804752,
--20622822, 13326747, -21625160, -5501853, 5406290, -15348066, 9810779, 627065, -23043574, -3725884,
-1493575, -6180995, -53150, -4298726, -16909824, 6935299, 5073967, -2681670, 16981764, 26045218,
--14192183, -20293184, -1303523, -9671729, 28159416, 28940026, -17054778, -10782515, 24560234, -25841208,
-31070868, -18720152, 4296041, -38118, 3242700, -23838142, -3670587, -21558588, -17835926, 87510,
--7019051, -16256988, -6475200, 11965779, -13882408, 11029476, -6547678, 33411624, -15441481, 10000294,
-2047089, -8271034, -26783952, -9804337, 20442434, 3719442, -6659347, 26798448, -19782620, -19965692,
--2704219, 25591562, -23225036, -3220689, 4582730, 6966974, -25869124, 7823820, 9013526, -9226127,
--27052926, 517544, -21003464, 8938901, 4800700, 8096014, -41362684, -17656610, 23620710, 63696512,
--28806882, -3949223, 5145908, -10713259, -17961554, -320512, 53201760, 12291123, -5404680, -4638028,
--14042932, -3230352, -10750303, 20668994, 1098438, -13131863, -14128832, 781147, 9556839, -21166136,
-16577500, 4951024, 18071074, 765578, 22979686, 9694815, -15984258, 21609054, 20599200, 50972672,
-16237124, 4003983, 5281199, -18542984, 6252936, 16714939, 17256104, 6007049, -1155883, 723165,
--2025614, 6489696, 7221988, -1617055, 9317395, -2314987, -894964, 17666274, 7531762, 3102577,
--5203890, 5290326, 13378286, 14099304, 16167868, 5932961, 5977521, -8937827, -1074, -433792,
-3018825, 9197136, -304406, -7115687, 8336532, -7459822, 6950331, -232465, 8189966, 1319092,
--6585259, -1743757, 623844, 1967095, 4119411, -856846, 2975876, 2301566, -20401, -40421012,
-53762252, 7452305, 12267500, 12923557, -12372190, -14274324, 552440, -5484137, 7679402, 17725330,
--24817932, 8253854, -5202816, 6487011, 6089190, 4234301, 14206141, 11108396, -10557566, 9988483,
-8705362, -8578123, -14800457, 4558034, -5224291, -12291123, 7417409, 6074158, -997506, -8030515,
-272730, -5849746, -2806761, 585726, 3246459, 5670968, -11054709, -1635309, 8937827, -3955128,
-8027294, 1539209, 5805722, 11681774, 3502546, -11908334, 1298691, 11145440, -6270116, -576063,
-5450314, -18940268, -1097364, -4680441, -17606144, 24427090, -6156836, -1018444, 14551886, 2486786,
--10842108, 4301947, -10358924, -2104534, 8123931, -9767293, -3470334, 18054432, -19114216, 2046015,
-1788854, 6558952, -8456791, 5804649, -2858838, 5408975, -7243463, 333934, -1698660, 18183818,
--8230768, -827855, 4816269, -9199283, -810675, 12584254, -2582886, 8108362, -5464809, -5229123,
-1019518, 4869419, -4716948, 9277666, 19327, -2048699, -1934883, -2949569, -2835215, 7909719,
--6660958, 7741679, 4337917, -10218801, 2552284, -1052804, -770410, 5992553, -8392366, -3432753,
-1348083, -5681705, 6002754, -5844377, -743029, 9589588, 1843078, -1820529, 4497368, -4849555,
--3719979, -2364380, 4795331, 7993471, -2345052, -2331094, 1008244, 12678207, -53141092, -108196128,
--13875966, 68014032, 52310556, 150069376, 72237056, -34910032, -30489972, -71061848, -124499288, -15686831,
--48227116, -14926085, 88015152, 56127708, 59914792, 114534432, -3943854, -25276956, -43110736, -113146616,
--62423056, -20043002, -20966956, 3214246, 51605104, 39977020, 42436960, 79962088, 46821584, -29311004,
-42665668, -44688596, -104346232, 13426605, -70007432, -97436168, 38101728, -8307004, -17994302, 119955752,
-39348344, 31936840, 103408856, -11025718, -20253456, 31518618, -69177424, -85980416, -23068806, -73613056,
--65775812, 14023068, 14348412, 29837138, 90232968, 79915384, 48446696, 57337812, 11153493, -45105208,
--48569636, -60146724, -82680264, -38579544, -20929376, -28058484, 25088514, 79808544, 52138220, 51483236,
-42349988, -29742648, -248034, 8473970, -68223408, -28097140, -17042430, -19937238, 31403190, 16087874,
--3851512, 25670482, -5867999, -5274757, 4455492, -18371186, -13819594, 9151502, -11340861, 18617610,
-23424214, -8651675, 12737262, 23848342, -13800804, 15639050, 7873749, -46439872, 8305393, -15043660,
--50401440, 828392, -28751048, -25751550, 36792836, 39786428, 38449620, 71159552, 22749904, 22677964,
-24196236, -31077310, -62017180, -69293392, -88681408, -66090956, -19865834, 11611444, 53906136, 89234928,
-98915248, 77219216, 56332256, 11134703, -52264384, -78809432, -96182032, -89429272, -46296528, -2950106,
-25303262, 64063732, 59192164, 32273994, 32499480, 12581033, -866510, -256087, -9987946, -19697256,
--16267189, -20473036, -24694988, -18291728, -13554380, -3812320, 6594923, 16110422, 19504520, 20598664,
-16960288, 9419400, 2436857, -2137820, -2969970, -1813550, -957778, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+4645544, 1169842, -2513093, -1113470, -5609228, -1494112, 4714264, -2479270, -1804423, 1459215,
+-723702, -166967, 308164, -1490891, -1195075, 5713917, 2785823, -683974, 290984, -838056,
+-1690607, 796180, 2050847, 3149285, -788663, 1211181, 1461900, -5037997, -1535451, 1074,
+-989453, 3107946, 294742, -1051730, 2800319, -2114735, 955093, 4337380, -2386928, 285615,
+592169, 3295314, -1253057, 4540854, -6410776, -2333778, 2807298, -1263794, -5432060, 399432,
+1105417, 1821603, 1874216, -580357, -2334315, 209917, -2117419, -1439351, 644245, 2703145,
+2491081, -3621194, 3202435, -3963718, 3555696, 209380, 3118146, -1204738, -2568927, -1134408,
+2098092, -397821, -522912, -623844, 2902861, -3117073, 1610613, 768262, 783832, 995359,
+2321967, 745177, -1489817, -1682017, -930397, 1265405, -272730, -1234266, 238371, -1490891,
+-330176, -102005, -1525787, -607738, -860067, 202937, 821413, -1028108, -740882, 427886,
+-211527, -1471563, -15569, 804233, -573915, -73014, 300111, -135828, 576599, 420907,
+41876, -1111860, -373662, 41876, -505732, 30602, -124554, -779000, 436476, -1320703,
+-15288473, 5019743, -5557151, -2214056, -4549981, -4671851, 2656437, -1557999, -3944928, -2119566,
+5366562, 7975755, -4361540, -1623498, -387084, -5743982, -5397164, 404801, -545461, 3509525,
+1182727, 2614025, -2302103, -1441498, -2982855, 840740, 5148055, 2234994, 1001264, -3318936,
+2517388, 761283, 1540820, -2166274, 192200, 760746, 1156957, -2943663, -2152852, 805843,
+-4063576, -4154307, 1782948, 3151432, -3542274, -1782411, -1365263, 255014, 3141769, 2532957,
+1096290, 477815, 8125005, 3190624, -2565706, 3163780, 2253784, -2257542, 3838627, -1430224,
+-962610, -21475, -1673427, 3411278, -1920387, 896038, 2056216, 1647657, -3036005, 1196148,
+566936, 614717, -1061931, -1505386, -632434, 4765266, 317291, -1412507, -1021665, 1124745,
+-4287988, 830539, 2553358, -165893, 1653026, -944356, -1545115, 1036161, 944356, -399969,
+1606855, 827855, -458488, 1140314, 1194001, 1996623, 259846, 6979, -141197, -600759,
+-849330, -85899, -152471, -531502, 587874, -188979, 1990181, 11633456, 4636417, -812286,
+525060, 2665027, 1391569, -788663, -5030481, 161061, 4458713, -4577899, -513785, -8590471,
+2252174, 3496640, 230854, -2047626, 6276558, 4413079, -4049081, 1954210, 235149, -3549791,
+5600638, 3087545, -367757, 2261300, 5336497, -1656784, -1105954, 355409, 28991, 126165,
+1279363, 6554657, 1317481, 977105, -10602664, -562104, 479963, 1264868, -4799626, 1108638,
+-3871913, -2971581, -4095251, -2675765, 21475, 1229434, -2503429, 2498060, -6092948, -3499862,
+-374736, -82678, 1950452, -2442226, -571231, -2211908, 1319629, 3296388, -1997697, 352187,
+-1729798, -316217, 5110474, 4003447, -1618129, 3751654, -1801739, -3202435, -4001299, -302258,
+-374199, -2698850, 2434173, -430570, 692564, -301185, -891206, 180926, -577136, -2188286,
+-141197, -3485903, 391379, -1717987, -1123134, -2928631, 3393024, -1043140, 1155346, 2317672,
+917512, -1183264, -275952, -1328219, -98784, 583042, -1306744, 1346472, -111669, 146029,
+192737, -481036, 790811, 458488, 248034, 99321, 1918240, 921271, -619549, -1308891,
+-1193464, 1159104, 1560684, -5906, 397284, 18367428, -7986492, 1513976, -667331, -3384434,
+2921652, 5151277, -3338263, 5537824, -299574, 5906654, 1641214, 2087354, -2539400, 3349538,
+1298691, 3430068, -7220377, 3874061, -4267050, 1340567, -3583077, 4536559, -1232119, 4569845,
+-2678449, 1684164, -1753420, -392990, -195958, -457414, 1801202, 9492951, 426276, 2789581,
+-2619930, -4395899, 192737, 88584, 193274, 1447941, -3041374, 6228240, -387621, 5221607,
+371515, -2253247, -2845953, -7824894, 3854733, 2553895, -3651796, 411780, 3146601, 1670742,
+-9108552, 5449240, -297427, 3875134, -5466420, -5893232, -2851322, -5740224, -1043140, 6642704,
+1392643, -2540473, 408559, 3759170, -1250909, -3010772, -1553168, -3376918, 2433636, -5121749,
+-889058, -3928821, -1488206, -14496, 4423817, 2076617, 499827, 1380295, 5551245, 2913062,
+695248, 2028298, -1545651, -612033, 389768, 106300, 905164, 467078, -933082, 546535,
+1974611, -130997, 444529, 733366, -920197, -1272921, 1249299, -1523640, 1841467, 1079647,
+1708860, 45634, -617938, 1039919, 1693291, 441845, -665183, 550830, 4801237, -11261404,
+2295123, -3550864, -10289668, -7931194, 4216048, 4702453, 6188511, -3063386, -1592359, 4260608,
+2035815, 6367289, 2073396, -710280, 651224, 4064113, 7918309, -2027225, 2308008, -96637,
+6416145, 1476395, -392453, -1286343, -4896263, -7444252, 80531, -1069984, 2237678, -420907,
+1752884, 1305133, 454193, 478352, 1482301, -2541010, 285078, 3541201, 5538361, -2709051,
+658204, -2387465, -3182034, 4576825, -3511673, -8744017, -3438658, -2238752, 4202089, 352187,
+4636417, 4240207, -2246268, 188442, -3628711, -503585, -1557999, 5430986, -6838125, -196495,
+2304787, -7240241, -8150774, 127238, 2518998, 5163625, -3598646, -8621073, 4501663, -7954280,
+9303436, 5259188, 1531693, 3968013, -93416, -3828427, 11826192, -1073742, 5724118, -216359,
+8272644, 5689758, 3024731, -840203, -1612223, -2772402, -1021665, 1253594, 300648, 2289218,
+-2338073, 1428077, -1241782, -843424, -877784, -952409, 1123671, -591095, -19327, -1748052,
+-79457, 1087164, 1996086, -1999844, -2450279, 351650, 1086090, -10201, 1305670, -725850,
+154619, -953483, -308701, 683437, 1234266, 1519345, 906775, -1183800, -24921548, 5126044,
+1252520, -12519830, -15799037, -2546916, -12199318, 9904195, 2830384, -7357279, 451508, -3427921,
+1094143, -5025649, 634581, -294205, 49929, 6979859, -2505577, -1636383, -2922725, -2578054,
+-6598681, -4424890, 6602976, -2736968, 4172024, -3688303, 1800128, 104690, 3768297, -3850975,
+2851858, -3868155, 1675574, -1483911, -2420214, 2386391, -6170258, 2362232, -3146064, -1132261,
+-4487704, 10817412, 5142150, 9484362, -4054449, 3998078, 3211562, -1887101, 1679869, -4496294,
+4759361, 10401874, 8217346, -5731097, -1542967, 2436320, -4155918, -2787434, -7270306, -13591961,
+-4617627, 6969658, 2500208, -3353833, 1372779, 715649, -3709778, -6455336, -6522445, 4634807,
+534723, -9989020, 1058173, 966905, -493384, -744640, 3311420, 7247221, -740882, -4832,
+1012002, -3758, -1906429, -6601902, 2185602, 2230162, 1358283, 3090229, 1868311, -2822331,
+728534, -1775432, 368830, -1500554, -606664, -1660542, 42950, 379031, -199716, -1200443,
+-1170916, -349503, 515396, -33823, 2428804, 873489, 2267206, 2458332, 2656974, -3177202,
+-3230352, -1205812, 2440615, -823560, 896574, -945967, 1348620, 1418950, 913754, -1545115,
+-874026, -9754408, -4061429, -2529736, 7379291, -1940252, 1758789, -7597261, -7928510, 406411,
+2311229, -4633196, -2652142, -4345970, 9042517, 2008434, -3016141, -6573448, -6491843, -6340446,
+-1756642, 3076270, 9083319, 2965138, 5138929, -4049081, 9672803, 5541045, 1792075, 134755,
+9948218, -5777805, 961536, 3173981, 6740415, -10850698, -5519033, 4777078, 1932198, -1470489,
+11361799, -4924717, 3231426, 6874632, 2150705, 1185948, 5022428, 2068564, 2513093, 2584497,
+1111860, 2973191, -139050, 4362613, -973884, 10638634, -7676181, 8763344, 6959995, -5994701,
+6892886, 1312649, 5863167, 5947456, -12927315, -297427, -490700, -3855270, 2100776, -3472481,
+3620121, -1423782, 8289287, -852014, 1324997, 3436511, 2348273, 3328600, -5243082, -1717450,
+-5359046, -4936528, -2837363, 8073465, 1221918, -2500745, 2392297, 2266669, 1043677, -1296006,
+857383, -899259, 3182034, 1257889, 1023813, -1469416, 993748, -2950106, -258772, 3564286,
+1843078, -505196, 1182190, 1305133, -963146, 1541356, 1009854, 3462281, 1887101, -1824287,
+-735513, -1054951, 1051730, -2953327, 895501, 13029320, -3384434, -1966558, -3135863, 9292699,
+4901632, 1034550, 3574487, -6207302, 13874355, 4626217, -1044214, 5265093, 6726456, -11243688,
+-709743, 2717104, 1368484, 28991, 9601399, -4549444, -5753109, 13191455, 2035278, -889595,
+-1258962, 6913824, 574989, -955093, -1241246, -3149285, 3475166, -1937030, 4619238, 3257196,
+-8234526, -7808251, 1034013, 15560667, -134755, 3208878, -9523553, 4766877, 6424198, -3921842,
+4776004, 5903433, -9656160, -5887327, -1168768, -12396349, -6548752, -7384123, 2233920, -2507187,
+-2706903, -1328756, 8796093, -11954505, 5348845, 2641405, -3839164, 7355669, -4634807, 737661,
+-10020696, -177167, 6140730, 5504538, 11514270, -13514651, -3316252, -15008763, -3177739, -275952,
+-3528853, 1714766, -686121, 13708999, 10671920, 6038187, -6761353, 372588, 2673080, 6691022,
+8258149, -168041, 84826, -1150514, 222801, 4684199, -178241, -388695, -140123, 97174,
+283468, 579284, 1943473, -1916629, -557809, 1960653, 374736, 1811403, -14496, 206158,
+-1524177, 2480344, 1576790, 34360, 2376728, -1179505, -99321, 2172180, 632434, -374736,
+-2646237, -185757, 658204, 386010, -911607, 2777233, 4720169, -861678, -78383, -2116345,
+1595580, 8907225, -9888625, 377957, -6040335, 17067664, -7141457, -4081293, 14803679, 11172284,
+2113661, -20521890, -4962298, 9516037, 821949, -937377, -2874407, -1569811, -1548336, 1488206,
+3243237, 2957085, 2821794, 18278844, -3745748, -2595234, 73551, 2429341, -5374078, 3252364,
+1995549, -632434, -5919539, -3711926, 6645388, 7096360, 13408351, 3458523, -5428839, 3418257,
+-107374, 3463354, 314069, 7449621, -6103686, -9160628, -9421011, 6255620, -2637647, 1341104,
+2538863, -3349001, -561030, 15881715, 5478231, -13320841, 9572945, 3077344, 16108275, -8301098,
+-7793755, 4681515, 8704288, 6006512, 3395709, -1435056, 573378, 4167729, -5156645, -1460289,
+241592, 6851010, -4867809, 13722957, -424128, -147640, -7004555, -7936026, 15715822, 4691178,
+-12769475, -2965138, 10854993, 7518341, 1562294, 2747705, -6465000, 2085207, 1813550, 2142115,
+1268626, 2373506, -2931852, -3614752, 563714, -74088, -2936147, -962073, 2880849, 2789045,
+-3949759, 1102733, 79457, 1794760, 2499134, -634581, -619549, -956167, 1717987, 4848481,
+-3391951, 2687576, -132070, 153008, -1947231, -440771, -1423782, -993748, 2403571, -762894,
+-1241246, -3090766, -6979, -1735704, -12320114, -10470057, -4148402, 3668976, 3762928, 18720152,
+18159658, -2238752, 1349157, 700080, 9664, -315143, -3912178, -12379169, -9547175, -4967130,
+4209605, -3526705, -10814728, -3127810, 1889249, -893890, -16509317, -4911832, 3481608, -1773822,
+1404991, 1032403, 4772783, 7109782, 1017907, -5318244, 5163625, 5442261, 3740380, -309238,
+7019051, -14445049, 4655208, -12807592, 15695421, -11336566, 4173098, -12021077, -2139431, -13419088,
+-7209640, -8393440, -9156870, 6087043, -8073465, -1606318, 2616172, -178241, -4384088, -3112778,
+-1553168, -13117367, 257698, 780610, 6298570, -20432770, 307627, -599148, 9323300, 11348377,
+-7929047, -4829691, 253940, 8705899, -17016124, 10723996, -7752416, -5071283, 639950, -16445967,
+-1033477, -1387274, -2752000, -2990371, -2237678, 16369731, 6507949, 3317325, -4131222, -3748970,
+-4315369, 458488, 3831648, -6635725, -383326, -1199370, -1977296, 826781, 4645544, -1859721,
+-3323231, 3023657, 1671279, -112743, 3193845, 1799591, 2639258, -1781338, -2430415, 4093104,
+-3209951, 1025960, -4141959, -784905, -53150, -828392, -1716913, -3489124, -4039417, -4063576,
+739808, -244813, -1120450, -2932389, -2995740, -1144072, -1698123, 893353, 3857418, 2967286,
+-9756018, -25290914, -10154913, -4878009, 4305168, 6730751, -8361228, -3208878, -10496363, -9257802,
+4746476, -8142721, 8211978, 3306588, 5869073, -1073742, -8286603, 14220100, 5574868, 7928510,
+-10334765, 4254165, 1752884, -14981383, 9093520, 5432597, 426276, -10228465, -4028679, 4915053,
+5181878, -333934, 1701344, 7132867, -7209640, -5323612, 8375723, -17062294, -16874390, -22086870,
+-5083094, 6968585, -19452444, -16210280, -9926206, 217970, 6789270, 2109903, 1799591, 228707,
+-5747203, -7807714, -18391586, 9513889, 2547989, 21988622, -5454609, 474057, -13852880, -16465831,
+1903744, 10459856, 550293, -10428717, 6633040, 2654827, 14882062, 1372779, 1710471, -7397545,
+-1571421, 6280853, -14966887, -27712202, -7888245, -6999186, 1296006, 7153268, -13416404, -6795175,
+4117263, -4720169, -1270774, 4220342, -2755759, -2315524, 5480915, 1306744, -716186, 2710661,
+4207994, 4842039, 733366, -3390877, -8990440, -885300, -5571110, 1374926, 755377, 1047972,
+3419331, -3216394, 3085934, 4457639, 2801929, 2498060, 2310156, -6565395, -6189048, -2311229,
+-5366025, 521839, 1228361, 1680406, 5859946, -1473711, 3635153, 2345052, -2811593, -1360968,
+-3985193, -5073430, -1625645, -6672232, -2418067, -1515050, -23607824, -18145700, -8351027, 12451110,
+-1092532, 21324512, 4210679, -1857573, -11978664, 4250944, 21978958, -23024246, -20717848, -6860137,
+-3445101, -14448807, 13673565, 3985193, 7410429, 8827768, -14452028, -1746978, 5805722, -9137006,
+17059074, 217970, 3844533, -4999879, 4219806, -11307575, -6416681, -3915400, 6427419, 3000035,
+10383083, -17040282, 1540283, -182536, -12641699, 13769128, -8243116, -20274930, 4020626, 7223598,
+1497333, -6103686, -1439888, -8487929, 1420560, 6817187, 2962454, -13893682, 5448166, -3227131,
+-15312632, -9154186, -18818936, 335007, -2894808, -589484, 2491081, 11478837, 14426795, 11866995,
+-6069863, -10531797, 3502009, -2757369, -1702955, -8171176, 15021111, 12255689, -2594697, 22865332,
+-14593225, 7544647, 14559402, 15479599, 493384, 9793599, -6345278, -2660732, -12785044, -5575942,
+7775502, -2754685, -9934259, 6110665, -5651640, 6424198, -2837363, -6984691, 3670050, -1504312,
+-3811784, -3133179, 2728915, -3481608, 2398739, 4475356, -4751308, 6122476, -649077, -3578245,
+2467996, 591095, 537945, -3008088, 3809099, -5754183, 2049773, 1928440, 385473, -3904662,
+-234613, -2392834, 3003793, 5013301, 11426760, 5523865, 9168681, -644245, 102542, 4431870,
+-5545877, 1352378, -7587597, -3360275, 8602819, -20468204, 2574296, 220654, -12945568, 1864016,
+-28779502, -24899000, -5970005, -240518, 1058710, -649077, -10239739, -382252, -2937221, 9176198,
+1783485, -605054, 1715303, -21757230, 7501698, 4028143, 12051678, 4978404, 5214627, 14142254,
+7047505, 2022930, 35442072, 7554311, 13630079, 18781892, 870268, 13236552, 3315178, -7400229,
+8605504, 577136, 4138738, -7250442, 529892, -4717485, 2998424, -4704063, 9964324, 1163399,
+-6212670, -7793218, 1059783, -21077016, 12220793, 8208756, -1079647, -1948305, 4799089, -5636608,
+-4647155, -6948184, -8339216, 6906845, -6653978, 11442867, 13366475, 13054553, 13932874, -3287798,
+-21129628, 284005, 8909910, 21248814, -4948876, -841814, 10086731, 14820858, 21915608, -2902861,
+9651328, -6549825, -3766686, -17678086, -13743358, -6070400, -6241125, -5099200, 3670587, 693100,
+-7561290, 8483634, 5391795, 6648610, 12048457, 4747550, 4511327, -1518271, 6979, -1866163,
+-3458523, 17717, 2167348, -77309, 6353867, 4992363, 3101503, -457414, -5226439, 205085,
+-3757023, -4254165, 2644626, 3120831, 956704, -6612102, -1475858, -9569724, -2315524, 2967286,
+4669167, -3154654, 3877819, -5535676, -6302865, -3316789, -3809099, 3354370, 1797444, -5680094,
+-3825742, 17408040, 22578644, -16698833, -17476758, -23106924, 20958366, -2110977, -8340827, 7339026,
+7110319, 19632296, 16386374, 1173600, 17959406, 25475598, 7348689, -12779138, 12293807, -11814918,
+-6535867, -2331094, -8200167, -9891847, 5374615, -4915053, -4810364, -11962021, 27759984, 3612068,
+-14500883, 162672, -1804423, 12523588, 13251585, 5326297, -8400956, 13350906, -3379603, 8310762,
+-25031606, 1504849, 10693395, -10643466, 3833795, -11580306, -9382356, 26239566, 11033771, 8046621,
+-1606318, -22891638, -5392332, 6873022, 5191542, 3928285, -5254356, 18560164, -12691628, 10400800,
+-5845988, 6947110, 7661685, 14747844, 19885162, -22638236, -373662, 11939472, 5927592, 16702054,
+16224776, -22571126, 287763, -6101538, -11577084, -539018, -12117176, 5281199, 9679246, -4399121,
+17352742, -3653407, -10008884, -12219719, 10887742, 12443057, 12406550, -3147137, 2347200, -505732,
+-17455284, -16906066, -15823733, 10136660, 5220533, 3372623, 8206609, -335007, -4249334, 12269648,
+1877975, 117038, 7613367, 11893301, 7297150, 1078574, 1498944, -3271691, 7326141, 3740380,
+15179488, -1214402, 2025077, 10711112, 8744017, 3124589, -1278290, 6919193, -3758, -1201517,
+12032351, -9279277, 717260, 7493108, 789737, -1994476, -3350611, -1609539, 187368, 8083666,
+1697049, 770947, 8898635, 6541772, -5385889, 17271674, 34621196, 1280437, -16852378, 4491999,
+-11338714, 6994891, -9881109, -10639171, 31417686, -24217174, 39500816, 24108188, -6055904, 7795903,
+18992882, 2576444, -30118458, 11553462, -24422794, 5568962, 1984812, -12176769, 343061, -1834488,
+17151416, -8866960, -1030255, -870805, -5427765, 36383740, -2255395, -5704791, 4565550, 12115566,
+-12614856, -26539140, 20637318, -3535295, -1726040, 23473070, -14061723, -4067871, -16712791, 4220342,
+-11715060, 13159780, 12217034, 24988120, -7341173, 6825240, 16729434, -24120536, 2823404, -15451682,
+-24152748, -30967788, -16271484, -33467458, -37478420, -5460514, 2330557, -17825188, -19016504, 11491185,
+-1408212, -10855530, -20485920, 14487998, -10975252, 3592740, 18447958, -35144108, -10135586, -6659884,
+15433428, 41492604, -19805704, 964220, -12586939, -18776524, 8938901, -22422950, 17820894, 30852898,
+-8907762, -14796699, -15436112, -4153770, -3707631, 31139, 10078141, 7153805, -8207146, 7967165,
+-1039382, 6205691, 373662, -7829726, -2144263, 8833674, -15115601, 6818261, -7908646, 1794760,
+-6430103, -2777770, -9076877, 1774895, -8716636, -13908178, -6501507, 2911988, -10047002, -335007,
+3107946, 14602352, -8551280, -5355824, 4982162, 5821292, -10687489, -7051800, 3161096, -3263102,
+-5638219, 10072772, 1942936, -8488466, 7402376, 1711545, -12443057, 2116345, -10230075, 11168526,
+-5106179, -16229071, -23997056, -18205292, 20045686, -16488379, 8060043, 19100794, 8115341, 12255689,
+-22893786, 32797444, 20583094, 17875654, -13278965, 23500988, -2655901, 15534360, 10145250, 3435974,
+8400419, 11400454, 6870874, -3855807, -5943161, -5255966, 2277407, -15830713, -18749142, 10481331,
+4533338, 6080600, -15446850, 4171487, 4561792, 11482058, 17013440, 25756918, -14670535, 3894462,
+36531380, 7901666, 3804804, 3541201, -7686381, 2689723, 36361728, 10588705, 23499914, 6740415,
+-25441776, -10535018, -18571976, 52997748, 21376052, -20480552, -12992276, -18265422, 2921652, -11984569,
+-28969018, 6617471, -21987012, 32454384, -2462627, -26859114, 35174708, 28676960, 3896609, -7791608,
+4636417, -16345572, 21575768, 38924752, -10626286, 18463528, 43301324, -6846715, -7307350, -4952634,
+26264798, -1920924, -14866492, -13732084, -14215268, -229781, -1976222, -12167642, 708670, -5098663,
+13084081, 3335042, -13120588, -8084739, -14914274, -1580548, 1694365, -2371359, -10554882, -11412265,
+-8446053, 7168301, 11713450, 1893544, -12896713, -1815697, 15597174, 133681, 14251238, 7698192,
+-8584566, -725313, -13125420, 12506408, 5173288, -16387985, -31295816, 2844342, -2441152, -9350144,
+9678709, -74088, -5866926, -4391067, 2665564, 842350, -1742146, -25120190, 9963787, -3449396,
+24899000, -52100100, -35747012, 20605106, 9856950, 7452842, 17495550, -17781164, -23175106, -12764643,
+-19088446, 10777147, -20480552, 5966247, 13591424, 22327388, 737661, 18710488, 10897406, 3070365,
+-5974837, -19588272, -13820668, 11402601, -23949274, 12181601, 2814277, 20388746, 15560130, -7638063,
+-29806536, -19386408, -1803886, -1498944, -7883413, 20390894, -36029944, -2803540, 1257889, -37740416,
+-730144, -4657892, -3010772, 4027069, 22091164, -21537114, -59304372, 22126598, 24169928, 14394046,
+46261628, -38096360, -4885526, 25685516, 19663434, -23917062, -11101954, -6608881, 36442796, 7157026,
+34786552, -50331112, 7348152, -60038276, -35940824, -34813396, 41266044, 13054016, -26603564, 24202678,
+2842195, -23365158, 23756538, -34943852, -36643588, 5457293, -38056096, 11274826, -65016140, 9907416,
+20539070, -27724550, 30476014, -13836774, -7323993, 20340966, -7008313, -5623723, -14485851, -1089311,
+4820564, 11204496, -1313186, 10409927, 20540144, -15468325, -1657857, -12307766, 7335268, -8053601,
+-2095407, 4436701, 2563559, 2707977, -2661806, 21087752, -6965363, 1665374, 9089761, -18697604,
+-16359530, -18158048, -8380555, -30549566, -13948980, -11202885, 26337276, 5151277, 23450522, 10020696,
+4792110, 10575283, 7481296, 901943, 8927090, 1828582, 18282602, 44980120, 16646219, -16108275,
+-10515154, 6208912, -11420318, -13401372, -1590212, 20929376, -3628711, 3911642, -22243636, -4602058,
+30741766, -22428856, 17009682, 40137544, 20080582, -1706713, -7650411, -13201656, -25658672, -18879066,
+22130356, -12606266, 20767778, 14955076, 7136625, 974421, 8117488, -6406481, -32631014, -11331734,
+23374822, 18503792, 19432042, -20663088, 35665408, -9185861, 13882945, -26358752, 24157580, 41525356,
+-8331163, -14808510, -1504312, 1509144, -9205726, 9059697, 18199388, -34099356, 22405234, 21680458,
+-5277978, 25134686, 13372918, 10831371, -15917686, 3268470, 22546430, -47553340, -42282880, -17661980,
+11257646, -21911850, -64287608, 26923540, 17700098, -8383240, -10868952, 449361, -3725884, -22079890,
+-59044528, -3620121, 42016056, 10139881, -7412577, -5069672, 9118752, 34315180, 27427124, -40395780,
+-16588774, 26859652, -5641977, -10878615, -46061376, -2754148, 25361782, 8339753, -7041599, 15528991,
+-5738077, 1577864, -17310866, -2925947, 10633265, 15792595, -8952859, -3342558, 3330747, 9096741,
+-5617281, 5567888, 821413, -11356967, 6841883, 19211388, 3389803, 5674726, 3676492, 8623757,
+-9016210, -16028818, 1625108, 17147656, -14049912, 6099391, -4698694, 1453846, -13625784, -26483306,
+-14281840, 9738301, 32196148, -3372623, 15247134, -21363704, -9276056, -14473503, 8964670, 6155225,
+10207527, -7346005, -10937671, -865973, 2374580, -1056562, 21913996, 29035052, 683974, -32659468,
+43335148, -12127914, -30188788, 27120034, -4312147, -16409459, 20970714, 5637682, -4343823, 17692580,
+-24173150, 22996866, -8167417, 804770, -7002408, -5981279, -33714420, 13398150, -12846247, 5349919,
+-13493177, -1084479, -10049687, 9696426, -5872294, 36509368, 6484327, 23895050, -9247065, 5997922,
+15123117, -6376416, 10463614, -2038499, 18258442, -887448, -6086506, 28834800, -25703768, 14389214,
+19723564, -11528766, 22318798, -13615583, -520228, 11489574, -8684424, 26217554, 23488102, 4900558,
+39064340, -24031416, -55079196, -9253507, -34044060, -22524420, 80519360, -2028835, 24725052, -3736622,
+-33938296, -854699, 33845416, 47907140, 29145648, 48257180, -25920664, -7744363, -11599633, -27524834,
+18291192, -7715909, -16973710, -1758789, -33401424, -61081416, 15404437, 21524766, -18058726, 12191802,
+-3780645, -18212272, 19477140, 14341433, -7100118, 20055886, -7344931, -17882634, 9213779, -8873939,
+23786066, 2247342, 1794223, 13437342, 4495757, -15131170, -6334003, 7803419, -4971962, 14804752,
+-20622822, 13326747, -21625160, -5501853, 5406290, -15348066, 9810779, 627065, -23043574, -3725884,
+1493575, -6180995, -53150, -4298726, -16909824, 6935299, 5073967, -2681670, 16981764, 26045218,
+-14192183, -20293184, -1303523, -9671729, 28159416, 28940026, -17054778, -10782515, 24560234, -25841208,
+31070868, -18720152, 4296041, -38118, 3242700, -23838142, -3670587, -21558588, -17835926, 87510,
+-7019051, -16256988, -6475200, 11965779, -13882408, 11029476, -6547678, 33411624, -15441481, 10000294,
+2047089, -8271034, -26783952, -9804337, 20442434, 3719442, -6659347, 26798448, -19782620, -19965692,
+-2704219, 25591562, -23225036, -3220689, 4582730, 6966974, -25869124, 7823820, 9013526, -9226127,
+-27052926, 517544, -21003464, 8938901, 4800700, 8096014, -41362684, -17656610, 23620710, 63696512,
+-28806882, -3949223, 5145908, -10713259, -17961554, -320512, 53201760, 12291123, -5404680, -4638028,
+-14042932, -3230352, -10750303, 20668994, 1098438, -13131863, -14128832, 781147, 9556839, -21166136,
+16577500, 4951024, 18071074, 765578, 22979686, 9694815, -15984258, 21609054, 20599200, 50972672,
+16237124, 4003983, 5281199, -18542984, 6252936, 16714939, 17256104, 6007049, -1155883, 723165,
+-2025614, 6489696, 7221988, -1617055, 9317395, -2314987, -894964, 17666274, 7531762, 3102577,
+-5203890, 5290326, 13378286, 14099304, 16167868, 5932961, 5977521, -8937827, -1074, -433792,
+3018825, 9197136, -304406, -7115687, 8336532, -7459822, 6950331, -232465, 8189966, 1319092,
+-6585259, -1743757, 623844, 1967095, 4119411, -856846, 2975876, 2301566, -20401, -40421012,
+53762252, 7452305, 12267500, 12923557, -12372190, -14274324, 552440, -5484137, 7679402, 17725330,
+-24817932, 8253854, -5202816, 6487011, 6089190, 4234301, 14206141, 11108396, -10557566, 9988483,
+8705362, -8578123, -14800457, 4558034, -5224291, -12291123, 7417409, 6074158, -997506, -8030515,
+272730, -5849746, -2806761, 585726, 3246459, 5670968, -11054709, -1635309, 8937827, -3955128,
+8027294, 1539209, 5805722, 11681774, 3502546, -11908334, 1298691, 11145440, -6270116, -576063,
+5450314, -18940268, -1097364, -4680441, -17606144, 24427090, -6156836, -1018444, 14551886, 2486786,
+-10842108, 4301947, -10358924, -2104534, 8123931, -9767293, -3470334, 18054432, -19114216, 2046015,
+1788854, 6558952, -8456791, 5804649, -2858838, 5408975, -7243463, 333934, -1698660, 18183818,
+-8230768, -827855, 4816269, -9199283, -810675, 12584254, -2582886, 8108362, -5464809, -5229123,
+1019518, 4869419, -4716948, 9277666, 19327, -2048699, -1934883, -2949569, -2835215, 7909719,
+-6660958, 7741679, 4337917, -10218801, 2552284, -1052804, -770410, 5992553, -8392366, -3432753,
+1348083, -5681705, 6002754, -5844377, -743029, 9589588, 1843078, -1820529, 4497368, -4849555,
+-3719979, -2364380, 4795331, 7993471, -2345052, -2331094, 1008244, 12678207, -53141092, -108196128,
+-13875966, 68014032, 52310556, 150069376, 72237056, -34910032, -30489972, -71061848, -124499288, -15686831,
+-48227116, -14926085, 88015152, 56127708, 59914792, 114534432, -3943854, -25276956, -43110736, -113146616,
+-62423056, -20043002, -20966956, 3214246, 51605104, 39977020, 42436960, 79962088, 46821584, -29311004,
+42665668, -44688596, -104346232, 13426605, -70007432, -97436168, 38101728, -8307004, -17994302, 119955752,
+39348344, 31936840, 103408856, -11025718, -20253456, 31518618, -69177424, -85980416, -23068806, -73613056,
+-65775812, 14023068, 14348412, 29837138, 90232968, 79915384, 48446696, 57337812, 11153493, -45105208,
+-48569636, -60146724, -82680264, -38579544, -20929376, -28058484, 25088514, 79808544, 52138220, 51483236,
+42349988, -29742648, -248034, 8473970, -68223408, -28097140, -17042430, -19937238, 31403190, 16087874,
+-3851512, 25670482, -5867999, -5274757, 4455492, -18371186, -13819594, 9151502, -11340861, 18617610,
+23424214, -8651675, 12737262, 23848342, -13800804, 15639050, 7873749, -46439872, 8305393, -15043660,
+-50401440, 828392, -28751048, -25751550, 36792836, 39786428, 38449620, 71159552, 22749904, 22677964,
+24196236, -31077310, -62017180, -69293392, -88681408, -66090956, -19865834, 11611444, 53906136, 89234928,
+98915248, 77219216, 56332256, 11134703, -52264384, -78809432, -96182032, -89429272, -46296528, -2950106,
+25303262, 64063732, 59192164, 32273994, 32499480, 12581033, -866510, -256087, -9987946, -19697256,
+-16267189, -20473036, -24694988, -18291728, -13554380, -3812320, 6594923, 16110422, 19504520, 20598664,
+16960288, 9419400, 2436857, -2137820, -2969970, -1813550, -957778, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-1056562,
-2688113, 4654134, -3479997, -3011309, -4655208, 4212826, 2098629, 365072, 6233072, -625992,
--79994, -1909113, -1544578, 1350767, -1669669, -3251827, 1826435, 525060, 5205501, 7114077,
--1854889, -4189741, -5160403, -327491, -2951716, -2844879, -1952063, -398895, -4110821, 3954591,
--1473711, -1555315, -2720325, -2006824, 756451, 4443681, -465467, -1285806, 1341640, -4370666,
-3274913, -2727304, -9797894, 4855998, 3226594, 5394479, 5596343, 1063541, 2945811, -2925410,
-828929, 4240207, 328565, -53150, -1023276, -565862, 2274722, -2071248, -1494649, 104153,
-2162516, -1798518, -2238215, -3278671, 4190814, 1662689, 515933, -1023813, -4196720, -147103,
-3134253, 1945620, -599685, -796716, 3139621, -383863, -231391, -1370632, -1294396, -1919850,
--2271501, 139586, 477815, 1076426, -2337536, -927713, 1298154, -1620813, 1401770, 376883,
-627602, -607738, -39192, 302258, 683437, 169651, -272730, 426276, -298500, -801011,
--259846, -1324461, 877247, 448824, -378494, 16106, -598611, 785442, 811749, 259309,
-80531, 302795, 287763, -825171, 29528, -163209, -200790, -324807, -111132, 457951,
--14710800, 7640210, -745714, 195421, 2642479, 3732864, -5495411, -718333, -1006096, 3100430,
-1164473, -3371013, 10423349, -1142461, -671626, 4625680, 3791919, 1225139, 2623688, 8505646,
--4245575, 245887, -2176475, 832150, -2649458, 191663, 242129, 937914, -4759361, 386547,
--1161789, -1801739, -227633, 2956011, -1665374, 2747169, 4002910, -6968585, 911607, -2844879,
--793495, -4298189, 2109366, -2558727, -461172, -1453310, -4372814, 1642288, -2942590, 1963874,
-1064615, -2170032, -3190624, 82678, 2913062, 2193118, 5315022, 2450279, -2335389, -6577206,
--467078, 1138703, 8244190, -2582886, -1283658, -109522, -1639604, -4329327, -2084133, -4031364,
--569083, 3312494, -781684, 3947075, 2525441, 2031520, 2850248, 501437, -5202279, -1226213,
--3358665, -2134062, -5774584, -212064, -1666984, 757525, 1528472, 663572, -885300, -1187022,
-166967, 1501091, -1326071, -373125, 5369, -485331, -151934, -547608, 578210, -1992865,
--709743, -484258, 26844, -209917, -398895, -11811, -2814277, 10711112, 5579163, -1750199,
--4333622, 6123550, -7182796, -1211181, 3971771, -2976949, -2149094, -3104188, 7067906, -2515240,
-2173254, 572841, 2146947, 9653476, -9735080, 2869575, 4853850, -3264175, -9010841, -4716948,
--629750, 536871, -1290638, -1654636, 3755949, 5453535, -466004, -3913789, 279710, -4952098,
-1453846, -3121368, 1726040, 5825050, 2134599, -5913633, -166430, 329639, 8756365, 1609539,
-4379256, -1291711, 1938104, 1506460, -10604811, 141734, 5015985, 2297271, 5611375, -5001490,
--3059091, -4980015, 1341640, 3149285, -1014149, 1054951, 273804, -2512019, 943819, -1893007,
-1688996, 1568737, -361851, 2569464, 536334, -409633, 1149441, 6279242, 1162326, 3266323,
-4109747, 2245731, 103616, -120796, -5907191, -35433, 6307697, 2203318, 2801929, -142808,
--427886, 3939559, -2952790, 306016, -262530, 1991791, 1080184, -2684, -2559801, 404801,
--1287953, -401579, 448287, -845572, -594316, 603443, -62277, 2021856, 870805, 1846836,
-911070, 551903, 1027034, -771484, -999654, 103616, 134755, 2313377, 1446867, 328565,
-826244, 2198487, -352724, 206158, 709743, 22122840, -5714991, -2069101, -3358665, 4523138,
-3019362, 7525857, 2987150, -1115081, 3606699, -164283, 4034585, 1556389, 5608154, 111132,
-4706748, 6117644, -6795712, 1210107, 1756105, 1124208, 1069984, 1508070, -4039954, -20938,
--4651987, -683974, -168041, -7893613, -5355288, 1961190, -33286, -289910, 3139084, 3062849,
--1602560, -6809134, 2039573, 6111202, 4036733, 5698348, -1536525, 3072512, 5672578, -9459665,
-2998961, 4136591, -4662724, 5825050, -4064650, -872952, 581968, 1132798, -3138547, 2745021,
--823560, -1084479, -3265249, -2691334, 3279745, 3269007, 1488743, 3218004, 5042829, 2740189,
-7008850, -1494649, -7875897, 7607461, 1252520, 3722663, 1592359, -1321239, 1999307, 1432909,
-340376, 5213554, -1592359, 5143760, -7402376, -1726040, 969589, 2276870, 513785, -4074850,
--1859721, 651224, 243739, -451508, 260919, 1542430, -1976759, -1158031, -1110249, -1471563,
-860604, -462783, -535797, -1204738, -843424, 2223183, -523449, -770947, -14496, -819802,
--637266, 1113470, -436476, 1190780, -241055, 68719, 969052, -304406, 9791452, -11266236,
-7469485, 1568200, 7649337, 1762547, -4330938, 1403917, 5890548, -7066295, -1506460, 795643,
--7967165, -1584843, -6126771, -3753802, -4467840, -4897874, 2060511, -7608535, -4731980, -6064494,
--1557999, 5834713, 2094333, -7293392, -2851322, -7627325, -1898376, 1650878, 10919417, -8818105,
-3595425, -2252174, -3245922, -6574521, 289373, 1109175, 6992207, 3674882, 863288, -5961952,
--10353556, -161598, 3008625, 8106751, 2808372, 2594160, -6023692, 2179159, 5063230, 384936,
-767725, -3220152, -3208341, -1082332, 2935610, 522912, -2087891, 55835, -6624987, -950262,
--5587753, 3500935, -1194538, 3500398, -5475547, -4617627, -7529078, -874026, -4852776, -2080912,
-1893007, -7284802, -3171833, 837519, 3984119, -8749922, 5075578, -4118874, -4446902, -4650913,
--3913789, 2626909, -2639794, 1216550, 1480153, -2321967, 303332, 1819456, 1383516, 92879,
--2107218, -311922, -1029182, -2348273, -444529, 1735704, 999654, -1162326, 1557999, -1361505,
--1065152, -258772, 510564, -1749125, 90731, -213675, 1155883, 932008, 1927367, -1577864,
-433792, -357019, -703838, 610422, -1848983, -638340, 894427, 497142, -27346056, 4402879,
-3117073, -7897908, -1760937, -38655, 270583, -1517197, -2626373, -2026688, -8128763, 6248104,
--3939022, 856309, -6770479, -2413772, 9789304, 8864276, -5629092, -3405909, 281320, -166967,
--4620311, -5397164, -3820374, 629213, 418222, 150861, -556735, 2270964, -6672769, 2070174,
-228170, -11784853, -1414118, -3537443, 5381594, 7847442, 1228361, -1400696, 376347, -6915434,
--8638790, 4614406, 8547522, 9498857, -2566243, 1716913, 5553393, 5709622, -2966212, 5265630,
-8614094, -381178, 7252053, 6124624, -7221988, 2344515, 420907, 7748658, -4760971, -5100274,
-4481799, 5867462, -1807644, 504122, -8508867, 5969468, -4757750, 6302328, -10582263, 1125818,
-2524367, 5028870, 352724, -4457103, -9024800, -5564667, 7605314, -7530689, -344134, 825171,
-4108136, -2296197, -1593970, 3171833, -6027450, -5284958, 2167885, 1412507, -428423, 4292820,
--1990717, 999117, 1127966, 1129576, 1648194, 325881, -1668595, 1022202, 2243584, -952409,
-325881, -478889, -1105954, 880468, -2777233, -424128, -2995203, -606127, -550293, -1013612,
--1526861, 596464, -873489, -71404, -2321967, 907312, -403190, 784905, 976031, 327491,
-417686, -10597832, 3753802, -9365713, 11846594, 11392938, 347355, -15438260, 6389838, 873489,
--2881386, 10650445, 43487, -9199820, -980326, 11578695, -14528264, 457951, -3636227, -11465952,
--3190624, 207769, -2259153, -5872831, 3379066, -4865124, 3952981, -4144107, -7769596, 4140349,
--583042, 5949067, -11567958, 4719632, 9099425, -3659849, 746251, 9149891, 13378286, -3558917,
--2734821, -11275900, 657130, -9302362, -761820, -6475737, 319438, 907312, 5403606, 2590939,
-4938139, -3565360, 906238, 3062312, -588947, 12349642, -8199630, -4048544, 16245714, 16319802,
--3223373, -1029182, -10244034, -5235029, 519154, -2841658, -6780680, 9858024, 3037079, -2567317,
-14462229, 2804077, -6942278, -191126, -13284334, -6661495, -7531762, -6453725, -1766305, -10369662,
--7486665, 4274030, 3949223, -761820, 2329483, -3076807, 3471407, -2310693, -3395172, 587337,
--4887136, -2232309, 6273337, 502511, 3125663, -1676648, 641024, 481573, 1471026, 1360968,
--275415, -124554, -3106872, -35433, 661962, 502511, -876173, -880468, 2095944, 624918,
--449898, 74625, -535797, 70867, 1161252, 13157632, -3456375, -113280, 9073655, -2124398,
-5379984, -2894271, -11429445, -707059, 54224, -2320356, -6754373, -7546258, 3991098, -5970542,
-10660646, -3228205, -7659538, 6606197, 13370233, -3276523, 3780108, -3548717, 7744363, 204011,
--16151761, 5802501, 9042517, 931471, -2651606, -9385040, 7944079, 5319317, 5132486, 1069984,
-3252901, 10604811, -7415798, 1353452, 2115272, -5848135, -11340324, 10880763, 6080063, 20221242,
--983011, 8939438, -2921652, -6309844, 1123134, -958851, -242129, -1772748, -6533182, 14529874,
-379568, 1165547, 2095944, -1989107, 11970611, 1548873, 10029286, 4203699, 1722282, 10711112,
--4996121, -11934104, -2323577, 2246805, 1586990, -4915590, 5887864, -3508988, -16710644, 1551020,
-3364570, -9216463, 4347581, -924492, 1843078, 58519, -3768297, -4168266, 15569, 1622424,
-5144297, -424665, 1465658, -1935957, -1433982, 2347737, 1546725, -252866, 1592896, -1666984,
--165356, 155693, -2267206, -3268470, 2090039, -3642669, -926639, -1567126, -3192771, -855235,
--404264, -1155346, 1426466, -509491, -1331440, -360777, 6180458, 2455648, 2371359, -1202591,
-901943, -1886028, -2483028, -780610, -843424, 1112397, -1637456, 3022046, -3843459, -1174674,
-845572, 10630581, -17624936, 2893734, 7894687, 11751567, -12343736, -1778653, 8368744, 5832566,
-7141994, 1261647, 15074798, 2794950, 6250788, -1874216, 892279, 6220187, 3411278, 7180649,
-569620, -9969156, -14545444, 7714298, 3733937, -2769180, 1711008, 4338454, -13609141, 127238,
--8587787, 4017942, -467078, 8920110, -2858838, 3984119, -2059974, 2310156, 1221381, -379568,
-5023501, 6703907, 2403571, 3881577, -10661719, 4411469, -1877438, -18596134, -12352326, 3164854,
--13576928, -937377, 11224897, -8191577, 22296248, 8056285, -4488241, 12095702, 569620, -3965866,
--8995272, -8916352, -12377559, -1928977, 7239168, -8862128, -1097901, 8028368, 3670587, 4531728,
-16338592, 2011655, 10683194, 75699, 2099165, -17541184, 4859756, 1314260, -15958488, -15116137,
-8721468, -5769752, 1017370, 4583267, -2600603, -4115653, 925029, -920197, -1090385, 915902,
--2852932, 2561948, -2050847, 566399, -5036923, 2731599, 849330, 1108102, -270046, 6214818,
--5036923, 429497, -1409286, -1259499, 1260036, 1268089, 1741609, 2989297, 4999342, 3083250,
--3208878, 775778, -402116, 4547297, -1495186, 2932926, -4657892, -3545496, -2682744, -2262911,
--305480, -256087, 2318746, 2703682, -9143449, -222801, 5831492, -25770, 4108136, -9366787,
-7373385, -522375, 2181307, 6878390, -12665859, -8686571, 2358474, -115427, 7026030, 14450417,
--1288490, 3647501, 15506443, -5683853, -10430328, -543850, 11372537, -2395518, -12998182, 1105954,
-4863514, -2505040, -4035122, -900333, 16811038, -3133716, 14477261, 10960220, 13212930, 784905,
-1122060, 7750806, 2629057, -2611877, 2760053, -10365367, 7905961, 13245142, 8323110, 1191317,
-7405598, -5725729, 5697811, -5568962, 8310762, -7394323, 188442, -536334, -535797, 23513872,
--3466576, -1253594, -1999844, 3317325, 6510097, 12408161, 14143327, -7648800, 3420405, 14093935,
--7830799, -9716290, 5919002, -4198331, 6100464, 26851062, -12622909, 1870458, 2543695, -6920266,
-3056943, 8804146, 6167036, 784368, -5455146, -13141526, 6286759, -5699422, 7266548, -4903779,
-1047435, -6478422, -1404454, -10874320, 962073, -3414499, -3838090, -1305133, 1352378, 2815351,
-5446019, 2348273, -3084860, -724239, 5549098, -3209414, -2843268, 442382, 411243, -4925791,
--46171, -2460480, -1217623, -888521, -877247, 1960116, 1210644, 3963718, -2491081, -2464774,
-313533, -2962454, 1421097, 6195491, -3068217, -3240553, -6109054, 3176128, -1539209, -1550483,
--9080098, -14316737, -11020886, -14898168, -5738077, 1674500, 11930882, 8838506, 3202972, 12563853,
-3779034, 7675107, 7065758, -3406446, 10897406, 11810086, 8341900, -15939161, -8931921, -9230958,
-3479461, -6365679, 445066, 4540854, -4629975, -11246909, 7279970, -5331665, 2586107, 2421825,
-11479911, -11964168, 18611168, -18376018, 19012746, -38655, 9540733, -9219684, 3360275, -20540682,
--11437498, -9992241, 9061307, 4175782, 13135621, -1301375, -42413, -6660421, -16465831, 10758893,
--8989367, -4669703, 7841537, 18687940, 18083960, 8484171, -1198296, -12226161, 7204271, -18779208,
--1452773, -10660646, 6062883, 20278688, -19444390, 7102802, 9044127, -12089796, -1185948, -2056753,
-6798933, -8012799, -11536282, 2307471, -4656819, -16959752, 8630200, -1669669, -15921981, 11844446,
-15672873, -5154498, 545461, 2219961, -6719477, 10176925, 4733591, -2869575, -2507724, -6665253,
--3788698, 8165807, 4696547, 4663261, -328028, -7344394, -2188286, -2487323, -8140037, -1730872,
-2485176, -482110, -2361158, -733366, -5791227, 773094, -1946157, 3974455, 2241436, 836982,
--6711960, 5582384, 557809, -2907156, -1663763, -1098975, -293668, 3316252, -2443300, -1025960,
-2580202, 6863895, 3493419, 2035815, -4095251, 5478768, -13685913, -15979963, -4518306, 10286984,
--12236899, 8079907, -16807280, -3009698, -6467147, -5929203, -13325136, -1198833, -4975183, -8014409,
-6407018, -8928700, 9601399, 2019708, 7500087, -11795591, -22046068, -1841467, 4548907, -9241159,
--6757594, 3596498, 2878702, -10807211, -5120675, 15351287, 7462506, -2033667, 8409009, 22050362,
-790274, 2787971, 2267206, -1685238, -354872, 3242164, 2962454, -16962436, -6155762, -20724828,
--6539088, -19328964, -9098351, 1041530, 22581864, 10524817, -11161546, -13130252, 8425652, 17815524,
-11280732, -7988103, 13675176, -5215164, -1020592, -23945516, -7108708, -3097208, -2944200, -16382079,
--26220238, 8395587, -53687, -19202798, 4896263, 30008400, 3921842, 3384971, -18957448, -1721208,
--268972, 4187056, -21287468, 19648402, 3112241, 5418101, 10878078, 4186519, 11799886, -916976,
-5542656, -4643397, -9215389, -7693360, 4060355, -6201933, -1955821, -8281771, 2776696, 6736120,
-129923, 5670968, 639413, -2302639, -99321, -4769025, 3301219, 3388729, 609349, 603980,
--3236258, -1342177, 1807644, 4924180, 3591667, -4370666, -1546188, -1815697, -9956271, -13830332,
--10165651, -3353833, -1278290, 1581622, -2376191, -3935264, -4238059, -30065, -2841121, -3706020,
--6187438, -3384971, 9970230, -6197638, 12112345, -18402324, -3794604, 4327717, -8880919, 21087216,
--17499308, -18014166, -14659260, 20390894, 9080098, -11905649, -10740103, -7184944, -2285996, -6481106,
--6667400, 947040, 7574712, 20140712, -2297271, 8545374, 7434589, 7220377, -13550085, -16900160,
--12159589, 14057428, -2511482, 17093970, 5635534, -1969243, -23534274, -19209778, -2042257, 1483911,
--13674639, -8591545, -6455873, -6611029, -30848066, -6769942, -7578470, -11176579, -5491653, -7339562,
--14186814, 9852655, 19157702, 10596221, 479963, 11261941, 14377940, -5225365, 4526896, 3586835,
-1382980, -682900, -3715684, 10036265, 4038880, 16887274, -3982509, 1591285, 6017249, 33337536,
--427349, 17681306, 22445500, -2045478, -19624780, 1602560, 19494856, 2782065, -16712791, -15042586,
--19152332, 12392591, -15647640, -4326643, 22369264, -9716290, -15014132, 4544613, -4123169, 345745,
-6105296, -9488656, -4226785, 1774895, -2814814, -4355634, -852014, 1623498, 11181410, -1142998,
--5807333, -5094905, -48318, -4399121, -3528853, -3234647, -5634460, -2772402, 2127083, -2789045,
--533650, -7765301, 1975148, -831076, 1552631, 7560753, 4800700, -4624069, 2097018, 1562294,
--6753836, -10406169, 3855807, 4013110, 594853, -10635950, -11374684, -1906966, -7945153, -2702608,
--1161789, 18866180, 13743358, -31657668, 10040023, 12627741, -5550709, 9171366, 30079804, 2473364,
-6694781, -10508174, 6971269, -11105175, -7096897, -5916855, 2208687, 7740605, 10821170, -1551557,
-4460324, -3273839, -1843615, -5806796, 7963943, 28395102, -9274982, -9153112, 10180146, 7181186,
-1025423, -20649130, 13384729, -16462073, 9444633, 11853036, 1315871, 3013457, -3411815, 19537270,
-14782741, 177704, 9942849, -7810935, 12538083, 2107218, 14158897, 20694226, -465467, 5255966,
--2705293, -7616051, -533650, 9026948, 10160282, -19750944, -12014097, 4643934, 21459804, -10391137,
-14241038, 9557913, 2760053, -23012972, 2787971, 3599183, -27473296, 16202227, -15381888, -18263812,
--34772056, 8478265, 21081846, -9536438, -19407884, 4038880, 23365696, 14928769, 2593087, -3032247,
-318901, 8262980, -7160784, 11020349, 17943836, 17127256, -1275068, 7269232, 17752710, -2780991,
--247497, -1952063, 15284178, -2243584, 3750580, -7145752, 3877819, -4394826, 582505, 220117,
--1209570, -3460133, 3340411, 9014599, 3028489, 2565169, -8148090, 2074469, -8412230, 2554432,
-13226889, -4817343, 195958, 1746978, -6289443, -8185671, -9432285, -2138357, 5970005, -2768643,
-1595044, -5701032, -590558, 217970, -17452600, -4476967, -748935, 3670050, 4442070, -3623879,
-6182069, 3277597, 3299072, -5174362, -5073967, 7744363, 21812528, 15812459, -5468030, -42627552,
-5005248, 21329344, 10177999, 4632659, -18700288, -118112, -12913356, 2996277, -1252520, 3528853,
-6410239, 8930848, 3804804, -23178864, 13412646, -3231963, 4054986, 17591112, 6767258, 3282966,
--6313065, 21821118, -784905, 21688512, -26375932, -7762080, 8392366, -15374372, -13292387, 917512,
--3488587, -12037720, 1386201, 19160386, -663036, 1258425, -10104447, -20975010, -13389561, -6004901,
-8653822, -2325188, 1988033, -10326712, -11247446, -5518496, 16634408, -11489574, 9562745, 6432251,
-5363341, 1836099, -17293148, -24619826, -2046552, 16436840, -20478940, 9844602, -17639968, 10992432,
--18555332, -961536, -18296024, 25848186, -23666880, -14134201, 6053220, 4223027, 11803644, 9840844,
--6173479, -3288334, -6212134, 3186329, -311385, 15397458, -19212462, -7615514, -24672440, 12697534,
--8806294, 933619, -1088237, 6689412, -5508833, 2487860, -10133438, -15351287, 9785009, -7950522,
-188442, 2496987, 13016972, 5188858, -9455371, 1972464, -3242700, -12131672, -2299418, 2797634,
-3751117, -10974178, -5399848, 12028593, -1290638, -10206990, -4520990, 14121316, -16687559, -5689758,
-3335579, -3911642, 5865852, -1295470, -7369627, -9892920, -3211562, -4460861, -3119757, -3287798,
-2638184, -819802, 6113349, -6569153, 3364570, 1135482, -3017752, 6594923, -36378372, -5168457,
-10863046, 2648384, -8687645, -12991202, 1175747, -12349642, -1176821, -19063212, 17809082, -7144141,
-11134703, -24783036, -14085882, -524523, 30325154, -24861956, -2195802, -19463718, -15515569, -4742718,
-18979998, -4438312, 8398272, 8885214, -10147934, -21589726, 30345554, 13215614, -17446158, 3352222,
-2178622, 8368207, -16980690, 15156403, -1403381, -31805306, 3299609, 6344204, 8134668, -26355530,
--6371584, 3303367, 23134842, 4398584, 12859132, -33993592, -20724290, 10407780, -69793, 22159884,
--6013491, -3758097, 1626182, 11258720, 10252624, 3929358, -43276092, 12160126, -5105106, 9876814,
-22950694, -7293928, -2125472, -26323854, 8461086, 11891154, -13917305, -8225936, 23748484, 37620156,
-9760850, 6126771, -10739029, -4422206, -20636780, 1563905, 166430, -25378962, 9164386, -767189,
--7518877, -1938641, 11849815, -9721122, -6642704, -1133871, -2812667, -915365, 10448582, -4548907,
-114354, 6073621, 2319819, 8355859, 6935836, 5354214, 3671660, 10004589, 11602854, -15658377,
-4875862, -9771587, 7643968, 1169305, -10022843, -6715718, -3968550, -3273839, -6615324, 6027450,
--3429532, -6415608, 10661719, -1688459, -3534758, 6160594, 10980084, -19327, -4109747, 3085934,
-10233296, 11273215, 6952479, -3655017, 1762547, 2119030, 9188546, -31213674, -20424180, -7045357,
--343061, -17786534, 14090177, -36881420, 1772211, -22646826, 11720966, -8405251, -25178172, -2239826,
--6802155, -8875550, -28677496, -20924006, 5958194, 22577032, -15197205, 27873264, -23796266, -15640660,
-5060545, -2340220, 12625056, -7919920, -8329552, -11551315, -3266323, -39170100, -11313481, 1110786,
--1750736, -6548752, -15462956, 12270185, -13690745, 20885890, -6535867, -2630668, -14884746, -13676250,
--25993678, -11311333, 9515500, 3926137, -1625108, 1689533, -9387188, -7055558, -12085501, -10101763,
-5221070, 7688529, 3551401, -22537840, 25694104, 3474092, -11264089, 20601348, 14654428, 24556476,
--4766877, 14318884, -33779916, -18231600, -31927176, 32350768, -10566693, -22610856, -21855478, -46147276,
--19426674, 31893890, -2236604, -16213502, 11531987, -31499290, -21196738, 7876433, -2007897, -26288958,
--25813290, -333397, -14909442, 3916473, 5316096, -19558744, 18866180, -11652246, -17250736, 1460289,
--10305237, 27181238, -10671920, 12202539, 1760400, 16516297, -8613020, -4859219, 1396938, -7561827,
--476205, -15881715, -12210055, -3082713, 6405944, 295816, 10790568, 4414690, 7949985, -7145215,
--255551, -13823889, -3599720, -5000953, 3911105, 13151727, 5859946, 5265093, 6057515, 5430450,
-1235340, -18007724, -5565204, -12440910, -3319473, 2055142, 8244190, 40263708, 51555176, -4908074,
--22920092, -5462125, -8672613, -23157390, 9953587, 634581, -16785270, 49277232, 17088064, -11684459,
--34186328, -3070365, 8228084, 8983998, 9998684, 23568634, -6796249, -11664594, 11061688, -42776800,
--28592672, -11180337, -3081639, 4580046, -22851374, -20871394, 21984326, 17484274, -13466333, -25897042,
-16415365, 471910, 28968480, -23604604, -5431523, -8058970, -1481764, -18664318, -27800250, 23328652,
--17243756, -10902774, -21247740, -4769561, 14017700, 13160854, -8571144, 1834488, 2461553, 17592186,
-26968100, 19840602, -34570192, -16634408, -20509542, -5158793, 11793443, 4286914, -23629300, -34002184,
-28805272, 1795296, -28222230, -46882252, 23632520, -6136435, 12721156, 11707007, 12440373, 1614371,
-9188546, -18459232, -6962142, 12591233, 2321430, -8672613, 5252208, -2250563, -24813636, 12470974,
--31507880, -2124398, -1506460, -5559299, -11286100, -4476967, 13920526, -1023276, -3118683, 7038378,
--10139344, 30637076, -2360622, 2660195, -2210835, 207232, 7734163, -578210, 7458748, -15783468,
-3479461, -2984466, -10853382, 1006633, 5325223, 10115185, -5067525, 2736968, -26071526, -8690329,
--1334124, -13841069, 11768747, -1708860, -3048890, -7514582, -10666551, -16053514, -22197464, 6603512,
--2113661, 16189342, 19531900, 12187507, -13080860, -18549964, -23172960, -8922258, 21556440, 17293686,
-3147137, 7977902, -7337415, -13643500, -10080825, -9829033, 4538707, 18041546, 22355842, -27849642,
--23379118, 66219268, -5401458, -6535330, -10005126, -20970714, -2343442, 23861764, 38356744, -17742510,
--10756746, -3944391, -17552458, -4395362, -9929964, 15231028, -15874199, 17442400, 8257612, -6038724,
--22116398, -1651415, -9160628, 33042258, -18257906, -475668, -34360, -3325915, 14870787, -9557376,
--1344862, 6853694, -4627291, -32322314, 16375637, -14758044, -17167522, -3948149, -18306224, -10590852,
--33176474, 31623844, 1345935, -21095268, -38860328, 22546430, -22970022, -22334366, 188442, -17398912,
-7727183, 14295799, 43957380, -12547210, 17139066, -3726421, -21434034, -18124762, -5413807, 66292820,
--58612344, -4294431, 60764660, -55730960, -21268678, 31367756, -4765266, -25191594, 58751932, -29165512,
--12250320, 27020714, 6563784, 11523397, -17599702, 19508278, 27315456, 12854300, -7172059, -1822677,
-27582280, -4057134, 15712064, -391916, 10915659, -15895137, -2232846, 7300908, 4295504, 3047816,
-564788, 1117765, 11364483, -5310190, 2800856, 4268661, 3719442, -24931748, -10451266, 7978439,
--21306260, 6350109, 11849815, -8927626, -9616432, -7269769, 4838281, -10219875, 11865384, 10245644,
--1557999, 5937793, -7735773, -15018427, -14874009, 29116120, 5005248, 18166102, 3488587, 3597035,
-11260331, -9917616, -2607045, 18474802, -11244761, -25173878, 18605262, -2523293, 31513248, -39693552,
-36044976, -5900212, -22044456, 19480362, 6985228, -3360812, 4257387, 2834679, -4086662, 7241852,
--7487739, -9768366, -4326643, -13615583, -11306501, -25762824, -9727027, 22567906, 21289616, -32083942,
-11024644, 17365090, 14585709, -5334887, -31675920, -2668249, -15569793, -37125160, 23773180, 60029148,
--34112240, -3503083, 42722040, -11854647, -14936286, 34733936, 25851408, 12862353, -13703630, -27597850,
-9503689, -11115912, -17353816, 62770412, 46261092, -37522444, -27560806, 34001644, -61391724, -21465710,
--17221746, -10416906, 43313672, 28862180, 19074486, 20905216, -72164040, -25045564, 69226280, 40189084,
-8418673, -18195092, 24009940, -24074902, -48948668, -32573568, 24240258, -17727478, -3613678, 28079960,
-51845088, -5995775, -28815472, 3952981, 20653960, -34957276, -12774843, 36864240, 33224794, 33254858,
-23200876, -6360847, -20667382, -10165114, 28285580, 8320963, 12061879, -5159867, 3435974, 12984760,
-1414118, -4852776, -5669894, -7778186, 6535330, 4747013, 27165132, 7765838, -5003100, -10473278,
-2966212, 1576790, -3627100, -9164923, 2994129, 21023328, -21756156, -6376953, 20318416, -4325569,
--173946, 13515725, -4728222, 10064719, 4509179, 11780558, -21967148, -2954938, 5071283, 25691420,
-6538551, 12456479, 11014981, 6131603, -4483946, 8659728, 12453795, -13324599, 7133404, -61268784,
-26558468, 331786, -6247567, 31439160, -5307506, -23684598, 11960410, 10896869, 30750892, 17430052,
--16571058, 918586, 4789426, 21067888, 4922033, -24199456, -889058, -1364189, 4986994, -22511534,
--24526410, 35629440, -12783433, -37220188, 19207094, 33071248, -18544596, -6313065, 2224793, 22673670,
--26982596, -35496832, 9802726, 29997662, -6442451, -12776454, -7353521, -7303592, 13107703, 5564667,
-7857106, 75590352, 4239133, -9657771, 1095754, 2375117, 40890236, 1291711, -14443975, 9196062,
--31845036, -18746458, 8345659, 158377, 35156456, 27849642, -17955648, -5283347, -16969952, 803696,
-12655658, 3185792, 3980361, 12577812, -8958765, -37168648, 9540196, 25074020, -11777337, 22126060,
--34324304, 16188269, 10459856, -30169460, 5247913, 587874, -13069585, 1369558, -5540508, 14986215,
-14719390, -25281788, -15495168, 33709588, -25648470, 12390981, -2319819, -9901510, 7491497, -1014149,
--15051176, 8614631, 5321465, 6164352, -378494, -2580739, 1774358, 4665945, -5672578, -5484137,
-4685273, 3281355, -3089155, -281857, 7565048, 12550431, -7326678, -5079873, 1714229, -2248952,
-4508642, -3113851, -1571958, 2907156, -32212, 7543573, -2264522, 3724811, -9645423, 5940477,
--6689949, 6280853, 11167989, -974421, 338229, 1542967, -12567074, 21321292, -39366596, -129994704,
--153868272, -13640816, -106646720, 42198052, 260760880, 140367040, 211834224, 223225552, -24021752, -64063196,
-19283330, -162230576, -198335680, -61143692, -218355600, -175270096, 44725640, -126021856, -34170224, 251806416,
-91316376, 178082768, 307539520, 183100896, 82037096, 62457952, 22011708, -136706128, -170201504, -56047176,
--232546704, -232748032, 30930206, -174011136, -142734656, 86126976, -146353152, -150543440, 114015272, 46413028,
--20571820, 268790336, 251757568, 160793376, 341240512, 321543808, 110016128, 128091496, 99921880, -161630896,
--161975568, -204945632, -405914144, -479237824, -344579328, -343098624, -252981632, 8850317, 23626616, 167358240,
-289322944, 356492480, 324891712, 376936000, 323047040, 190562336, 128242888, 42798812, -63411972, -142835040,
--203224432, -174645712, -253262944, -283750784, -235234288, -275115200, -206328624, 32909114, 66457640, 160562528,
-321951296, 256349952, 197674256, 149405808, 59020368, -48597020, -39573292, -80473192, -100683696, -76896024,
--87436408, -84533544, -35874252, -34111704, 2164664, 52511344, 37479496, 73653856, 88517128, 15577310,
-64287072, 61702572, -16800302, 20645370, 14656039, -46595564, 2299955, 15355045, -53863184, -58930708,
--82276544, -169632960, -189603472, -147516016, -140883520, -46046344, 69653632, 125216016, 203660912, 307008032,
-331532288, 307394016, 215565488, 65954056, -69013144, -148154896, -221248256, -273264064, -268667392, -209836000,
--143895904, -68214816, -20581484, 9103720, 25472914, 63021664, 103716480, 106873280, 99418832, 101996344,
-72934984, 65732328, 57207892, 23780160, 6444599, 15372225, 13837848, 9188546, 6893960, -11006391,
--32198296, -46876348, -53939956, -44794360, -26738856, -17313550, -15388868, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+2688113, 4654134, -3479997, -3011309, -4655208, 4212826, 2098629, 365072, 6233072, -625992,
+-79994, -1909113, -1544578, 1350767, -1669669, -3251827, 1826435, 525060, 5205501, 7114077,
+-1854889, -4189741, -5160403, -327491, -2951716, -2844879, -1952063, -398895, -4110821, 3954591,
+-1473711, -1555315, -2720325, -2006824, 756451, 4443681, -465467, -1285806, 1341640, -4370666,
+3274913, -2727304, -9797894, 4855998, 3226594, 5394479, 5596343, 1063541, 2945811, -2925410,
+828929, 4240207, 328565, -53150, -1023276, -565862, 2274722, -2071248, -1494649, 104153,
+2162516, -1798518, -2238215, -3278671, 4190814, 1662689, 515933, -1023813, -4196720, -147103,
+3134253, 1945620, -599685, -796716, 3139621, -383863, -231391, -1370632, -1294396, -1919850,
+-2271501, 139586, 477815, 1076426, -2337536, -927713, 1298154, -1620813, 1401770, 376883,
+627602, -607738, -39192, 302258, 683437, 169651, -272730, 426276, -298500, -801011,
+-259846, -1324461, 877247, 448824, -378494, 16106, -598611, 785442, 811749, 259309,
+80531, 302795, 287763, -825171, 29528, -163209, -200790, -324807, -111132, 457951,
+-14710800, 7640210, -745714, 195421, 2642479, 3732864, -5495411, -718333, -1006096, 3100430,
+1164473, -3371013, 10423349, -1142461, -671626, 4625680, 3791919, 1225139, 2623688, 8505646,
+-4245575, 245887, -2176475, 832150, -2649458, 191663, 242129, 937914, -4759361, 386547,
+-1161789, -1801739, -227633, 2956011, -1665374, 2747169, 4002910, -6968585, 911607, -2844879,
+-793495, -4298189, 2109366, -2558727, -461172, -1453310, -4372814, 1642288, -2942590, 1963874,
+1064615, -2170032, -3190624, 82678, 2913062, 2193118, 5315022, 2450279, -2335389, -6577206,
+-467078, 1138703, 8244190, -2582886, -1283658, -109522, -1639604, -4329327, -2084133, -4031364,
+-569083, 3312494, -781684, 3947075, 2525441, 2031520, 2850248, 501437, -5202279, -1226213,
+-3358665, -2134062, -5774584, -212064, -1666984, 757525, 1528472, 663572, -885300, -1187022,
+166967, 1501091, -1326071, -373125, 5369, -485331, -151934, -547608, 578210, -1992865,
+-709743, -484258, 26844, -209917, -398895, -11811, -2814277, 10711112, 5579163, -1750199,
+-4333622, 6123550, -7182796, -1211181, 3971771, -2976949, -2149094, -3104188, 7067906, -2515240,
+2173254, 572841, 2146947, 9653476, -9735080, 2869575, 4853850, -3264175, -9010841, -4716948,
+-629750, 536871, -1290638, -1654636, 3755949, 5453535, -466004, -3913789, 279710, -4952098,
+1453846, -3121368, 1726040, 5825050, 2134599, -5913633, -166430, 329639, 8756365, 1609539,
+4379256, -1291711, 1938104, 1506460, -10604811, 141734, 5015985, 2297271, 5611375, -5001490,
+-3059091, -4980015, 1341640, 3149285, -1014149, 1054951, 273804, -2512019, 943819, -1893007,
+1688996, 1568737, -361851, 2569464, 536334, -409633, 1149441, 6279242, 1162326, 3266323,
+4109747, 2245731, 103616, -120796, -5907191, -35433, 6307697, 2203318, 2801929, -142808,
+-427886, 3939559, -2952790, 306016, -262530, 1991791, 1080184, -2684, -2559801, 404801,
+-1287953, -401579, 448287, -845572, -594316, 603443, -62277, 2021856, 870805, 1846836,
+911070, 551903, 1027034, -771484, -999654, 103616, 134755, 2313377, 1446867, 328565,
+826244, 2198487, -352724, 206158, 709743, 22122840, -5714991, -2069101, -3358665, 4523138,
+3019362, 7525857, 2987150, -1115081, 3606699, -164283, 4034585, 1556389, 5608154, 111132,
+4706748, 6117644, -6795712, 1210107, 1756105, 1124208, 1069984, 1508070, -4039954, -20938,
+-4651987, -683974, -168041, -7893613, -5355288, 1961190, -33286, -289910, 3139084, 3062849,
+-1602560, -6809134, 2039573, 6111202, 4036733, 5698348, -1536525, 3072512, 5672578, -9459665,
+2998961, 4136591, -4662724, 5825050, -4064650, -872952, 581968, 1132798, -3138547, 2745021,
+-823560, -1084479, -3265249, -2691334, 3279745, 3269007, 1488743, 3218004, 5042829, 2740189,
+7008850, -1494649, -7875897, 7607461, 1252520, 3722663, 1592359, -1321239, 1999307, 1432909,
+340376, 5213554, -1592359, 5143760, -7402376, -1726040, 969589, 2276870, 513785, -4074850,
+-1859721, 651224, 243739, -451508, 260919, 1542430, -1976759, -1158031, -1110249, -1471563,
+860604, -462783, -535797, -1204738, -843424, 2223183, -523449, -770947, -14496, -819802,
+-637266, 1113470, -436476, 1190780, -241055, 68719, 969052, -304406, 9791452, -11266236,
+7469485, 1568200, 7649337, 1762547, -4330938, 1403917, 5890548, -7066295, -1506460, 795643,
+-7967165, -1584843, -6126771, -3753802, -4467840, -4897874, 2060511, -7608535, -4731980, -6064494,
+-1557999, 5834713, 2094333, -7293392, -2851322, -7627325, -1898376, 1650878, 10919417, -8818105,
+3595425, -2252174, -3245922, -6574521, 289373, 1109175, 6992207, 3674882, 863288, -5961952,
+-10353556, -161598, 3008625, 8106751, 2808372, 2594160, -6023692, 2179159, 5063230, 384936,
+767725, -3220152, -3208341, -1082332, 2935610, 522912, -2087891, 55835, -6624987, -950262,
+-5587753, 3500935, -1194538, 3500398, -5475547, -4617627, -7529078, -874026, -4852776, -2080912,
+1893007, -7284802, -3171833, 837519, 3984119, -8749922, 5075578, -4118874, -4446902, -4650913,
+-3913789, 2626909, -2639794, 1216550, 1480153, -2321967, 303332, 1819456, 1383516, 92879,
+-2107218, -311922, -1029182, -2348273, -444529, 1735704, 999654, -1162326, 1557999, -1361505,
+-1065152, -258772, 510564, -1749125, 90731, -213675, 1155883, 932008, 1927367, -1577864,
+433792, -357019, -703838, 610422, -1848983, -638340, 894427, 497142, -27346056, 4402879,
+3117073, -7897908, -1760937, -38655, 270583, -1517197, -2626373, -2026688, -8128763, 6248104,
+-3939022, 856309, -6770479, -2413772, 9789304, 8864276, -5629092, -3405909, 281320, -166967,
+-4620311, -5397164, -3820374, 629213, 418222, 150861, -556735, 2270964, -6672769, 2070174,
+228170, -11784853, -1414118, -3537443, 5381594, 7847442, 1228361, -1400696, 376347, -6915434,
+-8638790, 4614406, 8547522, 9498857, -2566243, 1716913, 5553393, 5709622, -2966212, 5265630,
+8614094, -381178, 7252053, 6124624, -7221988, 2344515, 420907, 7748658, -4760971, -5100274,
+4481799, 5867462, -1807644, 504122, -8508867, 5969468, -4757750, 6302328, -10582263, 1125818,
+2524367, 5028870, 352724, -4457103, -9024800, -5564667, 7605314, -7530689, -344134, 825171,
+4108136, -2296197, -1593970, 3171833, -6027450, -5284958, 2167885, 1412507, -428423, 4292820,
+-1990717, 999117, 1127966, 1129576, 1648194, 325881, -1668595, 1022202, 2243584, -952409,
+325881, -478889, -1105954, 880468, -2777233, -424128, -2995203, -606127, -550293, -1013612,
+-1526861, 596464, -873489, -71404, -2321967, 907312, -403190, 784905, 976031, 327491,
+417686, -10597832, 3753802, -9365713, 11846594, 11392938, 347355, -15438260, 6389838, 873489,
+-2881386, 10650445, 43487, -9199820, -980326, 11578695, -14528264, 457951, -3636227, -11465952,
+-3190624, 207769, -2259153, -5872831, 3379066, -4865124, 3952981, -4144107, -7769596, 4140349,
+-583042, 5949067, -11567958, 4719632, 9099425, -3659849, 746251, 9149891, 13378286, -3558917,
+-2734821, -11275900, 657130, -9302362, -761820, -6475737, 319438, 907312, 5403606, 2590939,
+4938139, -3565360, 906238, 3062312, -588947, 12349642, -8199630, -4048544, 16245714, 16319802,
+-3223373, -1029182, -10244034, -5235029, 519154, -2841658, -6780680, 9858024, 3037079, -2567317,
+14462229, 2804077, -6942278, -191126, -13284334, -6661495, -7531762, -6453725, -1766305, -10369662,
+-7486665, 4274030, 3949223, -761820, 2329483, -3076807, 3471407, -2310693, -3395172, 587337,
+-4887136, -2232309, 6273337, 502511, 3125663, -1676648, 641024, 481573, 1471026, 1360968,
+-275415, -124554, -3106872, -35433, 661962, 502511, -876173, -880468, 2095944, 624918,
+-449898, 74625, -535797, 70867, 1161252, 13157632, -3456375, -113280, 9073655, -2124398,
+5379984, -2894271, -11429445, -707059, 54224, -2320356, -6754373, -7546258, 3991098, -5970542,
+10660646, -3228205, -7659538, 6606197, 13370233, -3276523, 3780108, -3548717, 7744363, 204011,
+-16151761, 5802501, 9042517, 931471, -2651606, -9385040, 7944079, 5319317, 5132486, 1069984,
+3252901, 10604811, -7415798, 1353452, 2115272, -5848135, -11340324, 10880763, 6080063, 20221242,
+-983011, 8939438, -2921652, -6309844, 1123134, -958851, -242129, -1772748, -6533182, 14529874,
+379568, 1165547, 2095944, -1989107, 11970611, 1548873, 10029286, 4203699, 1722282, 10711112,
+-4996121, -11934104, -2323577, 2246805, 1586990, -4915590, 5887864, -3508988, -16710644, 1551020,
+3364570, -9216463, 4347581, -924492, 1843078, 58519, -3768297, -4168266, 15569, 1622424,
+5144297, -424665, 1465658, -1935957, -1433982, 2347737, 1546725, -252866, 1592896, -1666984,
+-165356, 155693, -2267206, -3268470, 2090039, -3642669, -926639, -1567126, -3192771, -855235,
+-404264, -1155346, 1426466, -509491, -1331440, -360777, 6180458, 2455648, 2371359, -1202591,
+901943, -1886028, -2483028, -780610, -843424, 1112397, -1637456, 3022046, -3843459, -1174674,
+845572, 10630581, -17624936, 2893734, 7894687, 11751567, -12343736, -1778653, 8368744, 5832566,
+7141994, 1261647, 15074798, 2794950, 6250788, -1874216, 892279, 6220187, 3411278, 7180649,
+569620, -9969156, -14545444, 7714298, 3733937, -2769180, 1711008, 4338454, -13609141, 127238,
+-8587787, 4017942, -467078, 8920110, -2858838, 3984119, -2059974, 2310156, 1221381, -379568,
+5023501, 6703907, 2403571, 3881577, -10661719, 4411469, -1877438, -18596134, -12352326, 3164854,
+-13576928, -937377, 11224897, -8191577, 22296248, 8056285, -4488241, 12095702, 569620, -3965866,
+-8995272, -8916352, -12377559, -1928977, 7239168, -8862128, -1097901, 8028368, 3670587, 4531728,
+16338592, 2011655, 10683194, 75699, 2099165, -17541184, 4859756, 1314260, -15958488, -15116137,
+8721468, -5769752, 1017370, 4583267, -2600603, -4115653, 925029, -920197, -1090385, 915902,
+-2852932, 2561948, -2050847, 566399, -5036923, 2731599, 849330, 1108102, -270046, 6214818,
+-5036923, 429497, -1409286, -1259499, 1260036, 1268089, 1741609, 2989297, 4999342, 3083250,
+-3208878, 775778, -402116, 4547297, -1495186, 2932926, -4657892, -3545496, -2682744, -2262911,
+-305480, -256087, 2318746, 2703682, -9143449, -222801, 5831492, -25770, 4108136, -9366787,
+7373385, -522375, 2181307, 6878390, -12665859, -8686571, 2358474, -115427, 7026030, 14450417,
+-1288490, 3647501, 15506443, -5683853, -10430328, -543850, 11372537, -2395518, -12998182, 1105954,
+4863514, -2505040, -4035122, -900333, 16811038, -3133716, 14477261, 10960220, 13212930, 784905,
+1122060, 7750806, 2629057, -2611877, 2760053, -10365367, 7905961, 13245142, 8323110, 1191317,
+7405598, -5725729, 5697811, -5568962, 8310762, -7394323, 188442, -536334, -535797, 23513872,
+-3466576, -1253594, -1999844, 3317325, 6510097, 12408161, 14143327, -7648800, 3420405, 14093935,
+-7830799, -9716290, 5919002, -4198331, 6100464, 26851062, -12622909, 1870458, 2543695, -6920266,
+3056943, 8804146, 6167036, 784368, -5455146, -13141526, 6286759, -5699422, 7266548, -4903779,
+1047435, -6478422, -1404454, -10874320, 962073, -3414499, -3838090, -1305133, 1352378, 2815351,
+5446019, 2348273, -3084860, -724239, 5549098, -3209414, -2843268, 442382, 411243, -4925791,
+-46171, -2460480, -1217623, -888521, -877247, 1960116, 1210644, 3963718, -2491081, -2464774,
+313533, -2962454, 1421097, 6195491, -3068217, -3240553, -6109054, 3176128, -1539209, -1550483,
+-9080098, -14316737, -11020886, -14898168, -5738077, 1674500, 11930882, 8838506, 3202972, 12563853,
+3779034, 7675107, 7065758, -3406446, 10897406, 11810086, 8341900, -15939161, -8931921, -9230958,
+3479461, -6365679, 445066, 4540854, -4629975, -11246909, 7279970, -5331665, 2586107, 2421825,
+11479911, -11964168, 18611168, -18376018, 19012746, -38655, 9540733, -9219684, 3360275, -20540682,
+-11437498, -9992241, 9061307, 4175782, 13135621, -1301375, -42413, -6660421, -16465831, 10758893,
+-8989367, -4669703, 7841537, 18687940, 18083960, 8484171, -1198296, -12226161, 7204271, -18779208,
+-1452773, -10660646, 6062883, 20278688, -19444390, 7102802, 9044127, -12089796, -1185948, -2056753,
+6798933, -8012799, -11536282, 2307471, -4656819, -16959752, 8630200, -1669669, -15921981, 11844446,
+15672873, -5154498, 545461, 2219961, -6719477, 10176925, 4733591, -2869575, -2507724, -6665253,
+-3788698, 8165807, 4696547, 4663261, -328028, -7344394, -2188286, -2487323, -8140037, -1730872,
+2485176, -482110, -2361158, -733366, -5791227, 773094, -1946157, 3974455, 2241436, 836982,
+-6711960, 5582384, 557809, -2907156, -1663763, -1098975, -293668, 3316252, -2443300, -1025960,
+2580202, 6863895, 3493419, 2035815, -4095251, 5478768, -13685913, -15979963, -4518306, 10286984,
+-12236899, 8079907, -16807280, -3009698, -6467147, -5929203, -13325136, -1198833, -4975183, -8014409,
+6407018, -8928700, 9601399, 2019708, 7500087, -11795591, -22046068, -1841467, 4548907, -9241159,
+-6757594, 3596498, 2878702, -10807211, -5120675, 15351287, 7462506, -2033667, 8409009, 22050362,
+790274, 2787971, 2267206, -1685238, -354872, 3242164, 2962454, -16962436, -6155762, -20724828,
+-6539088, -19328964, -9098351, 1041530, 22581864, 10524817, -11161546, -13130252, 8425652, 17815524,
+11280732, -7988103, 13675176, -5215164, -1020592, -23945516, -7108708, -3097208, -2944200, -16382079,
+-26220238, 8395587, -53687, -19202798, 4896263, 30008400, 3921842, 3384971, -18957448, -1721208,
+-268972, 4187056, -21287468, 19648402, 3112241, 5418101, 10878078, 4186519, 11799886, -916976,
+5542656, -4643397, -9215389, -7693360, 4060355, -6201933, -1955821, -8281771, 2776696, 6736120,
+129923, 5670968, 639413, -2302639, -99321, -4769025, 3301219, 3388729, 609349, 603980,
+-3236258, -1342177, 1807644, 4924180, 3591667, -4370666, -1546188, -1815697, -9956271, -13830332,
+-10165651, -3353833, -1278290, 1581622, -2376191, -3935264, -4238059, -30065, -2841121, -3706020,
+-6187438, -3384971, 9970230, -6197638, 12112345, -18402324, -3794604, 4327717, -8880919, 21087216,
+-17499308, -18014166, -14659260, 20390894, 9080098, -11905649, -10740103, -7184944, -2285996, -6481106,
+-6667400, 947040, 7574712, 20140712, -2297271, 8545374, 7434589, 7220377, -13550085, -16900160,
+-12159589, 14057428, -2511482, 17093970, 5635534, -1969243, -23534274, -19209778, -2042257, 1483911,
+-13674639, -8591545, -6455873, -6611029, -30848066, -6769942, -7578470, -11176579, -5491653, -7339562,
+-14186814, 9852655, 19157702, 10596221, 479963, 11261941, 14377940, -5225365, 4526896, 3586835,
+1382980, -682900, -3715684, 10036265, 4038880, 16887274, -3982509, 1591285, 6017249, 33337536,
+-427349, 17681306, 22445500, -2045478, -19624780, 1602560, 19494856, 2782065, -16712791, -15042586,
+-19152332, 12392591, -15647640, -4326643, 22369264, -9716290, -15014132, 4544613, -4123169, 345745,
+6105296, -9488656, -4226785, 1774895, -2814814, -4355634, -852014, 1623498, 11181410, -1142998,
+-5807333, -5094905, -48318, -4399121, -3528853, -3234647, -5634460, -2772402, 2127083, -2789045,
+-533650, -7765301, 1975148, -831076, 1552631, 7560753, 4800700, -4624069, 2097018, 1562294,
+-6753836, -10406169, 3855807, 4013110, 594853, -10635950, -11374684, -1906966, -7945153, -2702608,
+-1161789, 18866180, 13743358, -31657668, 10040023, 12627741, -5550709, 9171366, 30079804, 2473364,
+6694781, -10508174, 6971269, -11105175, -7096897, -5916855, 2208687, 7740605, 10821170, -1551557,
+4460324, -3273839, -1843615, -5806796, 7963943, 28395102, -9274982, -9153112, 10180146, 7181186,
+1025423, -20649130, 13384729, -16462073, 9444633, 11853036, 1315871, 3013457, -3411815, 19537270,
+14782741, 177704, 9942849, -7810935, 12538083, 2107218, 14158897, 20694226, -465467, 5255966,
+-2705293, -7616051, -533650, 9026948, 10160282, -19750944, -12014097, 4643934, 21459804, -10391137,
+14241038, 9557913, 2760053, -23012972, 2787971, 3599183, -27473296, 16202227, -15381888, -18263812,
+-34772056, 8478265, 21081846, -9536438, -19407884, 4038880, 23365696, 14928769, 2593087, -3032247,
+318901, 8262980, -7160784, 11020349, 17943836, 17127256, -1275068, 7269232, 17752710, -2780991,
+-247497, -1952063, 15284178, -2243584, 3750580, -7145752, 3877819, -4394826, 582505, 220117,
+-1209570, -3460133, 3340411, 9014599, 3028489, 2565169, -8148090, 2074469, -8412230, 2554432,
+13226889, -4817343, 195958, 1746978, -6289443, -8185671, -9432285, -2138357, 5970005, -2768643,
+1595044, -5701032, -590558, 217970, -17452600, -4476967, -748935, 3670050, 4442070, -3623879,
+6182069, 3277597, 3299072, -5174362, -5073967, 7744363, 21812528, 15812459, -5468030, -42627552,
+5005248, 21329344, 10177999, 4632659, -18700288, -118112, -12913356, 2996277, -1252520, 3528853,
+6410239, 8930848, 3804804, -23178864, 13412646, -3231963, 4054986, 17591112, 6767258, 3282966,
+-6313065, 21821118, -784905, 21688512, -26375932, -7762080, 8392366, -15374372, -13292387, 917512,
+-3488587, -12037720, 1386201, 19160386, -663036, 1258425, -10104447, -20975010, -13389561, -6004901,
+8653822, -2325188, 1988033, -10326712, -11247446, -5518496, 16634408, -11489574, 9562745, 6432251,
+5363341, 1836099, -17293148, -24619826, -2046552, 16436840, -20478940, 9844602, -17639968, 10992432,
+-18555332, -961536, -18296024, 25848186, -23666880, -14134201, 6053220, 4223027, 11803644, 9840844,
+-6173479, -3288334, -6212134, 3186329, -311385, 15397458, -19212462, -7615514, -24672440, 12697534,
+-8806294, 933619, -1088237, 6689412, -5508833, 2487860, -10133438, -15351287, 9785009, -7950522,
+188442, 2496987, 13016972, 5188858, -9455371, 1972464, -3242700, -12131672, -2299418, 2797634,
+3751117, -10974178, -5399848, 12028593, -1290638, -10206990, -4520990, 14121316, -16687559, -5689758,
+3335579, -3911642, 5865852, -1295470, -7369627, -9892920, -3211562, -4460861, -3119757, -3287798,
+2638184, -819802, 6113349, -6569153, 3364570, 1135482, -3017752, 6594923, -36378372, -5168457,
+10863046, 2648384, -8687645, -12991202, 1175747, -12349642, -1176821, -19063212, 17809082, -7144141,
+11134703, -24783036, -14085882, -524523, 30325154, -24861956, -2195802, -19463718, -15515569, -4742718,
+18979998, -4438312, 8398272, 8885214, -10147934, -21589726, 30345554, 13215614, -17446158, 3352222,
+2178622, 8368207, -16980690, 15156403, -1403381, -31805306, 3299609, 6344204, 8134668, -26355530,
+-6371584, 3303367, 23134842, 4398584, 12859132, -33993592, -20724290, 10407780, -69793, 22159884,
+-6013491, -3758097, 1626182, 11258720, 10252624, 3929358, -43276092, 12160126, -5105106, 9876814,
+22950694, -7293928, -2125472, -26323854, 8461086, 11891154, -13917305, -8225936, 23748484, 37620156,
+9760850, 6126771, -10739029, -4422206, -20636780, 1563905, 166430, -25378962, 9164386, -767189,
+-7518877, -1938641, 11849815, -9721122, -6642704, -1133871, -2812667, -915365, 10448582, -4548907,
+114354, 6073621, 2319819, 8355859, 6935836, 5354214, 3671660, 10004589, 11602854, -15658377,
+4875862, -9771587, 7643968, 1169305, -10022843, -6715718, -3968550, -3273839, -6615324, 6027450,
+-3429532, -6415608, 10661719, -1688459, -3534758, 6160594, 10980084, -19327, -4109747, 3085934,
+10233296, 11273215, 6952479, -3655017, 1762547, 2119030, 9188546, -31213674, -20424180, -7045357,
+-343061, -17786534, 14090177, -36881420, 1772211, -22646826, 11720966, -8405251, -25178172, -2239826,
+-6802155, -8875550, -28677496, -20924006, 5958194, 22577032, -15197205, 27873264, -23796266, -15640660,
+5060545, -2340220, 12625056, -7919920, -8329552, -11551315, -3266323, -39170100, -11313481, 1110786,
+-1750736, -6548752, -15462956, 12270185, -13690745, 20885890, -6535867, -2630668, -14884746, -13676250,
+-25993678, -11311333, 9515500, 3926137, -1625108, 1689533, -9387188, -7055558, -12085501, -10101763,
+5221070, 7688529, 3551401, -22537840, 25694104, 3474092, -11264089, 20601348, 14654428, 24556476,
+-4766877, 14318884, -33779916, -18231600, -31927176, 32350768, -10566693, -22610856, -21855478, -46147276,
+-19426674, 31893890, -2236604, -16213502, 11531987, -31499290, -21196738, 7876433, -2007897, -26288958,
+-25813290, -333397, -14909442, 3916473, 5316096, -19558744, 18866180, -11652246, -17250736, 1460289,
+-10305237, 27181238, -10671920, 12202539, 1760400, 16516297, -8613020, -4859219, 1396938, -7561827,
+-476205, -15881715, -12210055, -3082713, 6405944, 295816, 10790568, 4414690, 7949985, -7145215,
+-255551, -13823889, -3599720, -5000953, 3911105, 13151727, 5859946, 5265093, 6057515, 5430450,
+1235340, -18007724, -5565204, -12440910, -3319473, 2055142, 8244190, 40263708, 51555176, -4908074,
+-22920092, -5462125, -8672613, -23157390, 9953587, 634581, -16785270, 49277232, 17088064, -11684459,
+-34186328, -3070365, 8228084, 8983998, 9998684, 23568634, -6796249, -11664594, 11061688, -42776800,
+-28592672, -11180337, -3081639, 4580046, -22851374, -20871394, 21984326, 17484274, -13466333, -25897042,
+16415365, 471910, 28968480, -23604604, -5431523, -8058970, -1481764, -18664318, -27800250, 23328652,
+-17243756, -10902774, -21247740, -4769561, 14017700, 13160854, -8571144, 1834488, 2461553, 17592186,
+26968100, 19840602, -34570192, -16634408, -20509542, -5158793, 11793443, 4286914, -23629300, -34002184,
+28805272, 1795296, -28222230, -46882252, 23632520, -6136435, 12721156, 11707007, 12440373, 1614371,
+9188546, -18459232, -6962142, 12591233, 2321430, -8672613, 5252208, -2250563, -24813636, 12470974,
+-31507880, -2124398, -1506460, -5559299, -11286100, -4476967, 13920526, -1023276, -3118683, 7038378,
+-10139344, 30637076, -2360622, 2660195, -2210835, 207232, 7734163, -578210, 7458748, -15783468,
+3479461, -2984466, -10853382, 1006633, 5325223, 10115185, -5067525, 2736968, -26071526, -8690329,
+-1334124, -13841069, 11768747, -1708860, -3048890, -7514582, -10666551, -16053514, -22197464, 6603512,
+-2113661, 16189342, 19531900, 12187507, -13080860, -18549964, -23172960, -8922258, 21556440, 17293686,
+3147137, 7977902, -7337415, -13643500, -10080825, -9829033, 4538707, 18041546, 22355842, -27849642,
+-23379118, 66219268, -5401458, -6535330, -10005126, -20970714, -2343442, 23861764, 38356744, -17742510,
+-10756746, -3944391, -17552458, -4395362, -9929964, 15231028, -15874199, 17442400, 8257612, -6038724,
+-22116398, -1651415, -9160628, 33042258, -18257906, -475668, -34360, -3325915, 14870787, -9557376,
+-1344862, 6853694, -4627291, -32322314, 16375637, -14758044, -17167522, -3948149, -18306224, -10590852,
+-33176474, 31623844, 1345935, -21095268, -38860328, 22546430, -22970022, -22334366, 188442, -17398912,
+7727183, 14295799, 43957380, -12547210, 17139066, -3726421, -21434034, -18124762, -5413807, 66292820,
+-58612344, -4294431, 60764660, -55730960, -21268678, 31367756, -4765266, -25191594, 58751932, -29165512,
+-12250320, 27020714, 6563784, 11523397, -17599702, 19508278, 27315456, 12854300, -7172059, -1822677,
+27582280, -4057134, 15712064, -391916, 10915659, -15895137, -2232846, 7300908, 4295504, 3047816,
+564788, 1117765, 11364483, -5310190, 2800856, 4268661, 3719442, -24931748, -10451266, 7978439,
+-21306260, 6350109, 11849815, -8927626, -9616432, -7269769, 4838281, -10219875, 11865384, 10245644,
+-1557999, 5937793, -7735773, -15018427, -14874009, 29116120, 5005248, 18166102, 3488587, 3597035,
+11260331, -9917616, -2607045, 18474802, -11244761, -25173878, 18605262, -2523293, 31513248, -39693552,
+36044976, -5900212, -22044456, 19480362, 6985228, -3360812, 4257387, 2834679, -4086662, 7241852,
+-7487739, -9768366, -4326643, -13615583, -11306501, -25762824, -9727027, 22567906, 21289616, -32083942,
+11024644, 17365090, 14585709, -5334887, -31675920, -2668249, -15569793, -37125160, 23773180, 60029148,
+-34112240, -3503083, 42722040, -11854647, -14936286, 34733936, 25851408, 12862353, -13703630, -27597850,
+9503689, -11115912, -17353816, 62770412, 46261092, -37522444, -27560806, 34001644, -61391724, -21465710,
+-17221746, -10416906, 43313672, 28862180, 19074486, 20905216, -72164040, -25045564, 69226280, 40189084,
+8418673, -18195092, 24009940, -24074902, -48948668, -32573568, 24240258, -17727478, -3613678, 28079960,
+51845088, -5995775, -28815472, 3952981, 20653960, -34957276, -12774843, 36864240, 33224794, 33254858,
+23200876, -6360847, -20667382, -10165114, 28285580, 8320963, 12061879, -5159867, 3435974, 12984760,
+1414118, -4852776, -5669894, -7778186, 6535330, 4747013, 27165132, 7765838, -5003100, -10473278,
+2966212, 1576790, -3627100, -9164923, 2994129, 21023328, -21756156, -6376953, 20318416, -4325569,
+-173946, 13515725, -4728222, 10064719, 4509179, 11780558, -21967148, -2954938, 5071283, 25691420,
+6538551, 12456479, 11014981, 6131603, -4483946, 8659728, 12453795, -13324599, 7133404, -61268784,
+26558468, 331786, -6247567, 31439160, -5307506, -23684598, 11960410, 10896869, 30750892, 17430052,
+-16571058, 918586, 4789426, 21067888, 4922033, -24199456, -889058, -1364189, 4986994, -22511534,
+-24526410, 35629440, -12783433, -37220188, 19207094, 33071248, -18544596, -6313065, 2224793, 22673670,
+-26982596, -35496832, 9802726, 29997662, -6442451, -12776454, -7353521, -7303592, 13107703, 5564667,
+7857106, 75590352, 4239133, -9657771, 1095754, 2375117, 40890236, 1291711, -14443975, 9196062,
+-31845036, -18746458, 8345659, 158377, 35156456, 27849642, -17955648, -5283347, -16969952, 803696,
+12655658, 3185792, 3980361, 12577812, -8958765, -37168648, 9540196, 25074020, -11777337, 22126060,
+-34324304, 16188269, 10459856, -30169460, 5247913, 587874, -13069585, 1369558, -5540508, 14986215,
+14719390, -25281788, -15495168, 33709588, -25648470, 12390981, -2319819, -9901510, 7491497, -1014149,
+-15051176, 8614631, 5321465, 6164352, -378494, -2580739, 1774358, 4665945, -5672578, -5484137,
+4685273, 3281355, -3089155, -281857, 7565048, 12550431, -7326678, -5079873, 1714229, -2248952,
+4508642, -3113851, -1571958, 2907156, -32212, 7543573, -2264522, 3724811, -9645423, 5940477,
+-6689949, 6280853, 11167989, -974421, 338229, 1542967, -12567074, 21321292, -39366596, -129994704,
+-153868272, -13640816, -106646720, 42198052, 260760880, 140367040, 211834224, 223225552, -24021752, -64063196,
+19283330, -162230576, -198335680, -61143692, -218355600, -175270096, 44725640, -126021856, -34170224, 251806416,
+91316376, 178082768, 307539520, 183100896, 82037096, 62457952, 22011708, -136706128, -170201504, -56047176,
+-232546704, -232748032, 30930206, -174011136, -142734656, 86126976, -146353152, -150543440, 114015272, 46413028,
+-20571820, 268790336, 251757568, 160793376, 341240512, 321543808, 110016128, 128091496, 99921880, -161630896,
+-161975568, -204945632, -405914144, -479237824, -344579328, -343098624, -252981632, 8850317, 23626616, 167358240,
+289322944, 356492480, 324891712, 376936000, 323047040, 190562336, 128242888, 42798812, -63411972, -142835040,
+-203224432, -174645712, -253262944, -283750784, -235234288, -275115200, -206328624, 32909114, 66457640, 160562528,
+321951296, 256349952, 197674256, 149405808, 59020368, -48597020, -39573292, -80473192, -100683696, -76896024,
+-87436408, -84533544, -35874252, -34111704, 2164664, 52511344, 37479496, 73653856, 88517128, 15577310,
+64287072, 61702572, -16800302, 20645370, 14656039, -46595564, 2299955, 15355045, -53863184, -58930708,
+-82276544, -169632960, -189603472, -147516016, -140883520, -46046344, 69653632, 125216016, 203660912, 307008032,
+331532288, 307394016, 215565488, 65954056, -69013144, -148154896, -221248256, -273264064, -268667392, -209836000,
+-143895904, -68214816, -20581484, 9103720, 25472914, 63021664, 103716480, 106873280, 99418832, 101996344,
+72934984, 65732328, 57207892, 23780160, 6444599, 15372225, 13837848, 9188546, 6893960, -11006391,
+-32198296, -46876348, -53939956, -44794360, -26738856, -17313550, -15388868, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-8929774,
--10633265, 5459977, 321586, 8239895, 2979634, 3637301, 2328409, 3346317, -105764, -109522,
--1868311, -5405217, -3132642, 1436667, -283468, -997506, -657130, 2874407, 2221035, 32212,
-2575370, -2423435, -6164352, 1959042, -1449552, 689879, -3154117, 2460480, -2587181, -1283122,
--1036698, 4407710, -1062468, -48855, -1864016, -506269, -5000953, 1677185, -868657, 2688113,
--2393371, 317828, -1146219, -3995393, 1238024, -398358, -1110786, 1777580, 3253438, -681289,
--2045478, -5842766, 499827, -3474092, 1578937, 56908, -2284386, -91805, -1000727, -817118,
--4249334, 2725694, -3772055, 2064269, -1506460, -2495376, -2160369, -4489315, 2437394, 229244,
-1195612, 2700461, -2916283, -4603668, 2913062, -4411469, 105764, -2939905, 901406, -2275796,
-1966021, -1151051, 1020592, -1963337, 317828, -911070, 1141388, -941135, -1074279, -1002875,
--987843, -1761474, 216359, 433255, -346819, -1387811, 920734, -1047972, 106837, -700617,
--1241246, -442919, -470299, -193810, -306016, -176094, -1032940, -536334, 109522, -594316,
--359167, -318364, -15739981, -189515, -2106145, 4116189, 59593, 1572495, -1318018, 2038499,
-382789, 1780801, -1835562, 10130754, -2223719, -1445793, -4373351, 1442572, -5276904, -1706176,
-379568, -2574296, -49392, 3707094, 2119566, 1398549, 2495376, 3600793, -4415764, -1697049,
--97174, 2283312, -4166118, 4035659, -3488050, -1769527, 3235184, -630286, 740345, -2596308,
-2988760, 3122441, 3357591, -5184563, -1584843, 5572183, -80531, -856309, -1257889, 6076305,
-3966402, 4697621, 81068, -1116155, -1411971, -348966, -129386, 677531, 1820529, -5902359,
--532576, -2756832, -3479997, -470299, 1003412, -3069828, 817654, -2349884, -853625, -959388,
--68719, 2022930, 1891396, -1082332, -693100, -1350767, -4772783, -1148367, -2956011, 61740,
--3900367, 1041530, 72478, 3930432, -1352915, 522912, -3412889, 278099, 493921, -1617592,
--1628330, 1655710, 70867, 423591, -142271, 1153736, -289910, 465467, -178241, -296890,
-1450625, 629750, 621697, 193810, -132607, 5335960, 6320581, -4410395, 558346, -3763465,
-5790153, 1056025, -2406256, -3407520, -3016141, -638876, 725850, 1527935, 7705708, -4598836,
--740345, -1832877, 3012920, -8627516, -1020055, 5484137, -163746, 4606353, 2029909, 3692598,
-3841848, 1665374, -766652, -4057134, 1322313, -1143535, 500364, 6415071, 1606855, 5502390,
--2910914, -1518808, 406948, -7429220, 854699, 5531381, -1643362, 505732, -4651450, 3490735,
--92342, 1544041, -5502390, 3218541, -3700651, -2066953, -3864934, -4534949, 2592550, 874026,
--1480153, -2326799, -2204929, -1621887, -1109175, 2550137, -2551748, -4606353, -7093676, 6540162,
-5013838, 261456, -7096360, 2142115, -3409667, 2780455, -2308008, 498216, -4352413, -2742337,
--5665599, -2565169, -802085, 5513128, 3278671, -6169721, 2662343, 129923, -544924, 2688650,
--374199, 2134062, 4376572, 223875, 916439, 2902324, 593779, 576063, 2867965, -510027,
--82678, 216359, 368830, 607201, 709207, -644245, 828929, -603443, 207232, 141197,
-733366, 168577, 1815697, 1588064, 111132, -88584, 1782411, 910533, -1343251, 255014,
-642098, 26761942, -9898826, 12004970, -9486509, 844498, 2871723, 2838437, -7826504, -2640868,
--2609193, -13126494, -42413, 721555, -4711043, -741419, -27917, 9429064, 1767916, -6534793,
-4819490, 5253819, 1196685, 9557913, -7059853, -2570538, -3759170, 2036888, 7666517, -530428,
-511101, 2864743, -1336272, 3435974, 1570884, 8748312, -1287417, 3442953, -5686537, 5238250,
--3972308, 5845451, -74625, -6067178, -884763, 8818105, -359167, 5973226, 3602941, 5745593,
-540092, -4508642, -3655017, 115964, -2708514, 4720169, 3147137, -4629975, 672699, -3613141,
-6234682, -1666984, 5008469, 5963025, 1072668, 6146098, -250182, -2949569, -977105, -3764539,
-206158, 8069707, -5014375, -5148055, -1920924, 2305324, -3503083, -2171106, 1593970, 3886946,
--1570884, 1440425, -7770670, 1941862, 542777, -538482, 2770254, 193274, 772557, 1876901,
--200790, -991064, 878321, -1779190, 601295, -730144, 263604, 359704, -239444, -607738,
--1522566, -105227, -1204738, -757525, -485868, -2671470, -22262426, 2440615, -6553583, -4685810,
--7187628, -8713952, 3440806, 7796977, -1172526, 3033321, 1236951, 4005057, 909996, 295279,
-2418604, -4770098, 11064373, -573915, -6438156, 7261716, -2217814, 3083250, -7257421, -4516158,
--5142150, 2228014, 1352915, 5681705, 173409, -3529926, 594853, -3151969, -3464428, -3844533,
--1335735, -5352603, -2712272, 4985920, -4642860, -330176, -3632469, -5681705, -2531346, 708670,
-1818919, 3601867, -2860985, -2626373, 3562139, 617938, 1340030, 941135, 2204392, 3337727,
--5437966, -1826972, -554051, -7627325, 2017024, -544924, 4459250, -4476967, -3415573, -4185983,
-716186, 4714801, 3653944, 8324721, 5590974, -5166846, 2089502, -2349884, 3941169, 2454037,
--5576478, 4000762, 1076426, -6200322, 792958, -1145146, 526134, -1179505, -4228396, 753230,
--3034931, -3207804, 1163936, -1775432, 729071, 2244121, -1523640, -2049773, -2110440, -3174518,
--590558, 2403034, -648003, 2499671, 16643, 1678795, 1155883, 859530, -1131724, -472446,
-429497, -1129576, -1231045, 256624, -1188095, -489626, 318901, -2247879, 1240172, -1168231,
--387621, 219043, -79994, 140123, 714038, -1024350, 635118, 1447404, -28349468, 7783555,
--8455180, -7044820, -5066988, 955630, -1474248, 16699370, 1645509, 3995393, -1860258, 63888,
--6859063, 6812355, 1991254, -993748, 1370632, 8893267, -4453344, -1541356, 2055679, 613107,
-4467840, -3890704, -1745904, 4902705, 1804423, 4515621, 543313, -4804995, -3140158, 2697776,
--464930, -1638530, -2994129, -1739999, -195421, 8419210, 2131378, -1537061, 179315, 609885,
--2555506, 6059662, 4651987, -1462973, -6378564, 1580548, -3376381, 5761699, 4491462, -4523138,
-1759863, -5852430, -5195837, -4593468, -5733782, -2007360, 1267552, -3476776, 286689, -3838627,
--3227131, 6626061, 4234838, -5672578, -7614977, 821413, 6488085, -5043366, -3714073, 5443334,
-4313758, 6212670, -4031364, -218506, 1767379, 2535105, 7026030, 1853815, -919660, -317291,
--5120138, -818728, -93416, -4445291, 320512, -1347546, -2006287, 31675, -594853, 2110977,
--521302, -903554, 1028108, -717796, -1831804, -1265405, 383326, 1686848, -839666, -720481,
-51540, -501437, 3289945, 523986, 4265977, -3092377, 768262, 145492, -1782948, -119722,
--151398, -2366527, 576063, -520228, -2535105, -2434173, -1233193, -2333778, -1722282, 503585,
--1126892, -14919643, -1469953, 2524367, 7270306, -1403381, -3795677, 1713692, 10678362, -13425531,
-3123515, -2714956, -2487323, -6036040, 3642669, -10755135, -7004018, 3716221, -5624260, 3420405,
-15347529, -2699387, 6205691, -7199439, 7413114, -1909113, 2213519, -6454799, 3024731, 1854889,
--3465502, 1542967, -697395, -3310346, -220117, 4233227, 6606734, -5152350, -8247948, -6516539,
--6054294, 805306, 4843650, 12851616, -146566, 8662412, 9023726, -8373039, 6455336, -12324946,
--4515621, 805843, -5493263, -5094905, 3424163, -11933567, -2364380, 8345659, -3591130, -3103651,
-1096827, -3627637, 3399467, -3598646, 5833103, 7565048, -2091112, 2369748, 310848, -7605850,
-653909, -4912906, -3409130, -6002754, 3427384, 2652679, -5796595, 498753, 4313758, 4041564,
-5111011, 5300527, -809601, -4982699, 4151623, 2203855, 2485176, 1387811, 3001645, -310848,
--101469, 470836, 1233193, 1486596, -2055679, -600759, -1658931, -1069984, 2408940, 2102923,
-2325725, -4195110, 862215, -496606, -1744831, -2010045, 2178622, -1314797, -2311766, 618475,
-545461, -727997, 5141076, 1740536, -1010391, -1104344, -2390149, -627065, 2101313, 3236795,
-804233, 42950, 3222299, 35440460, -1652489, -13935021, -1694902, -555125, 1399086, 4517232,
-1876901, -1561758, -1393717, -6986301, -3278134, 4010963, 8704825, -7023346, -4396436, 5834176,
-529892, -2014877, 2374043, -500901, -8139500, -8287140, 11429445, -994285, -659814, -1833414,
-5902359, -386010, 680752, 3784403, -6161131, 6674379, 2814277, 1145683, 2589329, 6672232,
--15812996, -7038378, -3795141, 14705431, 1957431, 1167694, -4438312, -4893042, 4449049, -586263,
-5147519, -1734093, -10080288, 1163399, 1309428, -1461900, 5001490, 2290291, 1393717, 8189429,
-19844896, -1488206, -1602023, 7609072, 2357937, -2258079, 5243618, 15467788, -1658931, 3024731,
-5640903, 4558571, 4072166, 4170413, 4641249, 3606162, -4000762, 6222871, 11043435, -2455648,
-4275640, 142808, -1316944, -7512972, 4802311, 1876901, -554588, 2384781, 2697776, 712965,
-368293, -2474975, -2882460, -1074279, -5804112, -2520609, -3913789, 5184026, 2558727, 2025077,
--766652, -679679, 359704, -3284039, 66035, 1328756, -4600447, 4174708, -1973538, 817118,
--1369021, 314069, 1603097, 1949378, -3576097, -3499862, -2937758, 498216, -566399, -902480,
--224412, 2613488, -614717, 359167, -1442572, -3096135, -1692754, 7154342, 7966091, -10118406,
--2925947, -8588324, 8529805, 15964930, -7626252, -1782948, -8750996, -3801046, -10591926, 7570417,
--6460168, -2625299, -670552, 82678, -4205847, -5189394, 9540196, -8637179, -3177202, 994822,
-6516003, 6945499, -9946071, -2923799, 3849901, -8564702, 4887673, -6794102, -2749853, 2509335,
-221728, -3716221, -1013075, 2051921, 11155104, 1379758, 2537252, 4832, -9494562, 10401874,
--5077188, -7797513, 6266894, -5558762, -6263673, 8198019, -3681324, 1049046, -1785633, 1101122,
-10802916, -1844689, 2444910, -9423158, -710280, 10966125, 2483565, 10864120, 9335111, -3065533,
--2349884, -12644384, 1974611, -2129230, 8413841, 10263898, -5869073, 2551748, -18533858, -5084705,
-6187974, -6423124, 9659918, 638876, 2116345, -3416647, -681289, -4464082, 827318, -3080565,
-6834904, 6671158, -263067, 2264522, -61740, 3764002, 1672890, 2722473, 5784784, -1743220,
--6416145, 2950643, 1515050, 4078072, -1020592, 4327180, -841277, -1526861, 1142461, -2632278,
--1687922, 424128, -4490925, 1248225, -1529545, 4004520, 1792612, -318901, -803159, -2678986,
--3971771, -346819, 602369, 1610076, -1421097, 875636, -3729105, -78383, 287763, -2028835,
-2601677, 227633, 122943, 1050656, -1174674, 167504, 90194, 6406481, -8133595, 2793339,
--7605314, -823560, -10275172, 16896938, -4964982, 1155346, -5325223, -15400142, 8890045, 3117610,
--11489574, 7125888, -5171141, -3806952, 4030827, 15993921, -7970386, 15451145, -293668, -10849087,
-467078, 3615289, -9540196, 10550050, -5519570, 7814156, 16983374, 1666447, -7914551, -2211908,
--890669, 3897683, -6728067, -3675418, -894964, 8371965, -2970507, -3352759, -11092827, -369904,
--13117367, -2413772, 14901926, -3331821, 8494372, 812286, 2281165, -19498614, 289373, -12473122,
-10077604, 17488570, 5417028, 4402342, 1110786, 2630131, -10167798, 3604551, 5473936, -4529580,
--1242319, -4013647, -2534568, 7891466, 210453, 9569724, 29316910, 10710038, 2957085, -10044318,
--9313637, -6044630, 5790690, -9944997, -828929, -892816, 2076080, 5650030, -5425618, -1014686,
-5484673, 5995238, 1270774, 1036161, 4107599, 5164698, 4340065, -32749, -911070, -950262,
-496606, -2111513, -2611877, 2348810, -1298691, 3642132, -4393215, -1388885, 3115462, 2625299,
--217433, 2373506, -2237678, 1090922, 1663226, 2204929, -2460480, -2451353, 3523484, 2498597,
-2000381, -882079, -1699733, 857383, -4892505, -1283658, 844498, -2619930, 1256278, -1814624,
--1232119, 573378, 455803, -404801, -925565, -3669513, 30596274, -16569447, -454193, -8233989,
--15529528, -20725902, 5737003, -6649146, 6075231, -19618874, 3841312, 6982543, 6282464, -8249559,
--18012556, -14191109, -11917461, 131533, -6941204, -13160854, -9062381, -4624069, -10751914, -7514582,
-1753420, 13515725, -403190, 1891933, -539018, -11967926, 7281580, -1132261, 2088428, -2710661,
--7957501, 6660958, -9908490, -13807783, 12240657, -13472776, 2567317, -181999, -18891414, -11294153,
-7256884, -400506, 8943733, -6073084, -20066624, -147640, 588411, 7382512, 7850127, 18589156,
--10924249, -38511360, -13559749, -13182865, 8486319, -25117506, -8593693, -4250407, -23079006, -7725036,
--519154, -4445828, -4436701, 4937602, -6322192, -620623, -5939940, 5321465, -13631689, 4793721,
-10715407, -13739600, -7004555, 6657200, 5158256, 4468377, -14125611, 3251290, 33286, -2051921,
-7289097, -1942936, 5971079, 5318244, -1342714, 1602560, 1044214, -1763621, -4789426, 7569343,
--2639258, -5452461, 35970, -289910, 3961571, 1374390, -116501, 1198296, -4164508, -4201552,
-334471, 1367947, 2324114, 4301410, -639413, 1923072, -561567, 1691143, -4825396, -2120640,
--3385508, -3080029, -619549, -722091, 1604170, -5411122, -2542084, -4071092, -2951180, -5666136,
--6978785, -6180995, -775778, -637266, 625455, -3834869, -4932770, -17763448, 6977711, 8732205,
--2961917, -3444564, -8876624, -9779641, 22493280, 8185671, -21070572, 7260106, -11498701, -1108638,
--10451803, -21618718, 6303938, -11269994, -4755066, 886374, 590558, -5505075, -18318572, -11333345,
-8922795, -11203959, -352724, -9908490, -15253576, -5915781, 16844862, 2717104, 2962991, -14713484,
--4982162, -3000572, -1964411, 6003291, 7358353, 9564355, 11767137, -5741835, 6612102, 2356327,
--6868727, 4220879, -11512123, -9955197, -8681203, 3762928, -10022306, 523449, -15046881, -13111461,
--6824703, 15603079, 12102144, 11871826, 12993887, -11944304, 16292422, 607738, 7481833, 22531398,
--4662187, -4060355, 3613141, -10734734, 4414153, -4993973, -14013941, 1915555, 11365557, -13394929,
--9669045, -1547262, 12214887, -10144176, 1119913, 3898220, 7320772, 1974074, -3110093, -6863358,
-1817308, 5364414, -2936684, 810138, -3683471, 1309965, -3507378, 1534377, 149250, 2097555,
--1384053, 1506997, 2398739, 6514392, -897648, 47245, 423591, 3144453, -4804458, -1758252,
--5283347, -1241782, -1272384, -5718212, 1004486, 5602785, -603980, -6835978, -1327682, -401043,
--6277632, -6670084, -10239202, -3929895, 3730179, 898722, 2593087, -1251983, -1966021, -3340948,
--684510, -8582955, -1775432, 5633387, 8299488, -110595, 2378875, -4704063, -8392366, -19698868,
-22737020, -17595408, 23542864, 13214004, 9028558, 5108864, 9311489, 10094784, 9351754, 25285546,
--8720394, 1862405, -1582696, -4264903, -662499, 3206193, -2237678, 4928475, -1530619, 7960185,
-6716792, -1342714, -4258997, -25041270, -8840653, -18145164, -733366, 9676561, 9798968, 3151969,
-5046587, 7308961, 6094022, 7084549, 18100602, 26894012, 18112950, 3692061, -3299609, -5123896,
--7589744, 9445170, 9676024, 10775536, -7857643, -6230387, -9773198, -1583232, 13191992, 175557,
-15785615, -9454297, 8511551, 5099737, 14180908, -29350196, -20928302, -8580808, -11691975, -12046846,
-3750580, -4898410, 18624588, 5524402, -20500416, -1670742, 33503430, -11224897, 10536629, -5018670,
-13845901, -6367826, -4043175, 512175, -5537287, -7429757, -404264, 5625871, 8390219, 5769752,
--2034741, 6502581, -1593970, 3010772, -8369281, -5783711, 5585068, 3466576, -8413841, -3727495,
--3492882, -1150514, 2262911, -2257542, -4053912, 1921461, 518080, 1387274, -534723, -2433099,
-3934727, 1219771, -2013803, 5001490, -564788, 1451699, -797790, 5895380, -4895726, 5243082,
-2455648, -4997195, 3417183, 133681, 1015760, -5217312, -14954539, 5606543, 270046, 1036698,
--1591285, 5690295, -1256815, -2759517, 1979980, 4421669, 3867618, -2306934, 4762045, -14501420,
--7264937, 11994770, 5235565, 8841727, 23098334, 1956358, 15432354, 22551262, 15668578, -10241350,
--22967338, -799938, -10548440, 24729884, 7120519, 19312858, -2771865, -10401337, -3828963, -11348377,
-4457639, -8742406, 1042066, -9735617, 5039071, -7125351, -2989834, -15614354, -15440407, -1575716,
--22115860, 12060268, 8332774, -6663642, 11311870, -5439576, 4393215, 12548821, -13986561, -18375480,
-3248069, -4059818, 30746598, 13008382, -33765960, -9174587, -9594420, -17477832, -18447958, -37769944,
-6632503, -13578539, -3553012, 5335423, 1355599, 7690676, -1513439, -4536023, -28594818, 3322157,
--13009993, 3433290, 16738561, 3447785, 11218455, -17107928, -22619446, 4485020, 13996225, 9349070,
-5247377, 8876624, 14552960, 18135500, 18727668, -16751983, -10042170, -12095702, -8595840, -14107357,
-19761144, 11491722, 11138998, 2950643, 8517457, 7201050, -702227, 10230612, -15933255, -5709086,
--1904818, 1202054, -3449396, -11403675, 644782, -2396055, 1471026, 3556770, 11551851, 528818,
-5408438, 5301601, 871342, 5633387, 198105, -3601330, 714575, -8786429, -3510599, 4505958,
-6673843, 1925756, 1234266, -10724533, -1011465, 246424, -5079336, -3661997, 1592896, 3267396,
--9709847, -10903848, -4886599, 3514357, 3153043, 5356361, 1345935, -3579318, 2447058, -11290932,
--9878425, 40805948, 26949310, 37439768, 2421825, -7427609, -25447682, -7508140, 4246649, 5900748,
--6075231, -19662898, -7117835, 32349694, 13364864, -4477504, 9895068, -732829, -11901891, -3474092,
--7772280, 22056804, -1712618, 1292785, 9502615, 623844, 10784663, -114354, 15273441, -14075145,
-17600776, 3566970, -8230231, -4967130, -9114994, 15907485, -22069152, -23805930, 15027554, 24893630,
-1140314, 17183628, 23605140, -26615376, 8826695, 5435818, -1494112, -245350, 3917010, -9992778,
-18520972, -11265699, -8989367, 7492571, 905701, -2017561, -4357781, -5553930, 2633889, -17584670,
--5309654, 14149770, -17388712, -4002910, -11762842, 431107, 35041564, -11033771, 2202781, 9379672,
-118112, -8091182, -21978422, 21406118, 9931575, -44164076, 10878615, 11098195, 8150774, -9915469,
--4679367, 22537840, 941672, 1644973, 5709622, -15705622, 523449, 9962714, -4158065, 5747740,
--1337882, -5121212, -13165685, 1969779, -1810329, 12096775, -1223529, -543313, -8807904, 9574556,
--3333968, -3371013, -13909788, -6973417, 4742718, -8924405, 619549, -4420058, 5401995, -5246303,
--11228655, 5563594, -12090870, -3329674, -5571110, 505732, 588947, -4548371, 11777874, -1537061,
-15926276, 9740449, -1773822, 1616518, 10123775, -7209103, 1672890, 1138703, 9696426, -9029095,
--5483063, -17971216, -43437152, 39140036, 23439248, 12586939, 8933532, 19466402, -43833900, 18366354,
-20631412, 8979703, -27964532, 15967078, 28809030, 13485124, 31739808, 11734924, 807991, -994285,
--716723, -5107253, 13605920, 22611930, 21567178, 7695508, -6272263, -10858214, 2927557, -9864466,
--11567421, 12702366, 8837432, 2616709, -11593190, -11302206, -2263985, -9795747, 5392869, 25938918,
--4296578, -8070781, 8946954, 4893579, 7887171, 9209484, -1693291, -4954782, 20920786, 13891535,
-7023882, 9339943, -1391033, -20293184, 5032628, 13885092, 2043331, -15050639, 20709258, 5548561,
-28700582, 1272384, 25827786, 2946885, -8104067, -2509335, 6401649, 36588828, -4323959, 13283260,
-9236327, 17393544, 9275519, 280784, -834297, 11412802, 52032456, 2617246, 21036212, -17355962,
--12837657, 6765647, 8407398, 10275709, 4416837, 1839320, -25173340, -9883793, -26409218, 1632088,
--4317516, -8637716, -7196755, -2796024, -10992432, 1580011, -907849, -11671037, 8719857, -13624173,
--6437619, -12289512, -8252780, -669478, 1622961, -9808632, -11299522, 2917357, 7592429, 8709657,
--1497870, -3153580, -14615237, -19303194, 2185602, 2495913, -8614631, 17792976, 17346836, 25424596,
-9116068, -5470178, 3691525, 7915625, 9812390, 11592117, 1923609, -11916924, 3248069, 15453829,
-8096014, 858457, 6368900, -28547038, 31158378, -542777, 27574764, 610959, 1822677, -25162602,
--7761543, -11365557, 19126026, 4797479, 8457327, 4983236, -19299972, 1821603, 1515050, -17007534,
--24244554, -24839406, 8362302, -9295920, 22528178, 1198296, -7162932, -5953899, 4855461, -8834211,
-1452773, 6500970, -9483825, 5216238, 7604777, 2476049, 2180770, 16935056, 28682866, -5737003,
--213138, 14281840, 11813308, 17127256, -12780212, -5147519, 5221607, -17288318, 1699733, 1356673,
--22756348, 29233158, -1410897, 14685030, 12826920, 8835285, -17299592, 1501628, 14847702, -12193412,
-26400090, 7099044, -9598715, 21656836, 16478179, 11323681, -36659692, -7622493, 7351911, -12678743,
-2021319, -20617454, -5077725, -31171262, -8827232, -4893579, -8517457, -34529928, -3398930, -9538585,
-51717848, -7591892, 10579578, -5460514, 8326331, -4491462, -8369281, 5428839, -7004018, -1246614,
--3732327, 13723494, 5062156, 5945846, -22231824, -20113332, -14824080, -6365142, 4041564, -28210956,
--4420058, -2416993, 2203855, 10109279, 7881802, -999654, 10998874, -9981504, 345208, 430034,
--16027744, -22473416, 4537096, -6688875, -20559472, -5840082, -9601936, 1249836, -21977884, -2688113,
--9501541, 12903692, 386010, -9609989, -3266323, 3907347, 5352603, -2280628, 10182831, -10269804,
--6077916, 12779138, 12555800, 16088411, 14131516, 10531260, -7634841, 6588480, 17639968, 17034378,
-7501698, -20534238, -23833848, 10620380, -3263102, 7690139, -4369056, 20272782, -15080704, -3087545,
--5187247, 17689360, -13242458, 30986578, 38071128, 38845832, 2415919, -7154342, 6327024, -4997732,
-9521942, -1609002, -187905, -11323681, -31118648, -10326175, -29801168, 17150878, 16124381, -18331994,
--13730474, -18377092, -8584566, -2609730, 40699112, 529892, -20718386, -22239878, -1314797, 28491202,
-13619878, -56948044, -11599096, -10022306, 7530152, 21482890, -24724516, -7783555, -14710263, 6535867,
--33749852, 16864190, -5601711, -699543, 9409200, 1459215, -16510928, 33415920, -3308199, 15938087,
-35736276, 73256576, 43923020, -992137, 24690694, 37403260, 48037060, 52111912, 14923401, 31957242,
-9154723, 501974, 19604378, -15304042, 32139778, 13857712, -13915157, -47759500, -34778496, 4645007,
--13567802, -9709847, -8788040, -5194226, -5828271, -19601156, -12853227, 852014, -2993592, -958851,
--6147172, -1620813, -10211285, 12888123, -21213918, -8570607, 6233608, 4062502, 1989644, -5348308,
--6581501, -3607236, 4366371, -3235184, 11048803, -12724914, -16093242, -16034187, -9908490, 12513387,
-13919989, -5005248, -2330020, 5226975, -2559801, 23146116, 5062693, 2219961, 18473192, 11731166,
-10605348, 26275000, 17219060, 19826642, 6203007, 9672803, 21604760, 8531953, 8972724, -7183333,
--16262894, 18925236, -23647016, 39813272, -4610111, -7207492, 814433, 31722628, -21053392, -3650722,
--843424, 510027, 11560441, -8108899, 16636556, 5829881, -3037616, 3925600, 1977833, 13088913,
--39737576, -12475806, -1142998, 4292283, -3863860, -28936806, 23883776, -1243930, 3328063, 8697309,
--18860812, -8556649, -43856984, 11707544, -10227391, 8485782, 32136556, -8734890, 6786049, -4072166,
-15351287, -26169236, -35035660, 30798674, -2835215, 2699924, 5255966, 30976914, 22580254, 26891864,
--419296, -35868884, 21356724, 10062572, -8449811, -12656195, 20412906, -3677566, 25798794, 42672112,
-33166274, 5694590, 2921115, 31493384, -6172942, 9707163, 25901874, -17566954, 29943976, 18361522,
-10693932, -21097954, -10419591, -28169616, -794569, 9733470, 42039676, 17747342, -38981124, -3551938,
-25259776, -3651796, 12312597, 16950088, -27635430, -6794102, 13543106, 3301219, 7585986, -12040941,
-9012452, 15269146, 2014340, 261993, 22326314, 4292820, -4770635, -5750425, 7434052, -1932735,
-12012487, 1923609, 9099425, 10341744, -1531156, -10660646, 21976810, -3124589, -6702834, -1387274,
--14870251, -14958834, -9811316, -10354629, 7159711, 13016435, -13034152, -11169599, 2629057, 19543712,
--28168006, -6823630, 10910291, -3330747, 91805, -3827353, -3027415, -20253456, -265214, -5392332,
-5631239, 1568737, 3388729, 237297, 1771137, -1603097, -55188184, 12604118, -9155260, -2200097,
-43050604, 18478024, -13526463, -10499048, -180926, -27904940, -34149284, 2841658, 284542, -19253802,
-20372104, 2421288, -19709068, 12400644, 37046240, -5018133, -21350282, 13350369, -12571906, -13759465,
-6916508, 30032558, -9794136, 4344360, 8257612, -9346386, -22395570, -14767171, 29726542, 10386305,
--29286308, 24990268, 9844602, -20153598, -10478646, 41195716, -13406740, -31755378, -16255914, 54774792,
--54134840, -25187298, 32160178, -14632954, -17389786, -51697984, 40287332, -33138358, 11861626, 1618666,
--6164889, -58376660, -17190606, 49777596, 31490700, -39532488, -10757282, -17182016, -8036958, 7973607,
-10878078, 12873628, -68801080, 37543920, 28923920, 30187178, 521839, 15744276, -33634424, -30070676,
-58980100, 24053964, 6586333, 23601920, -31656056, 6258304, -13969918, 15029701, -8500814, 41216116,
--16789028, -14506789, 5805185, 4857608, -15569256, 9281424, 4619774, 3384434, -2873333, 1956895,
-3405372, 3226594, -3793530, -2379412, 8741869, 354872, -4509179, 17947594, 5418101, -16232292,
-1858647, 15370614, 4134443, -15451145, 20613696, 36699420, -18025440, -21283710, -5640903, -4922570,
-12594992, 26840862, 8272107, -25148108, -8231842, -3797288, 3815005, 7435126, -4112968, 10880226,
--7885560, -1122060, 6552510, -45426796, 7956964, 56883084, 17827336, 6168110, 1622961, 4337380,
-24431384, 33423436, -7563975, 6298033, 8691940, -5677410, 20184198, -10543608, -2785823, -7964480,
-15520401, 11540577, -6253473, 10615012, -15095199, -12290586, 15496779, -9866077, 17022566, -11251204,
--4963909, -274878, 9330816, -524523, 6957310, 2849174, 17333414, -12307766, -2416993, 357019,
--6818798, 16734803, 14526653, -11904576, -4189204, -7297150, 3888556, -15374372, 8375186, 4808753,
-7691750, -6114423, -4625680, 19040664, -22769770, -3899294, 9681393, -6144488, -4099010, 9982041,
--27996208, 6818798, -10101226, 1723893, -9890773, 24300924, -7845832, -10430328, 10008348, -5462662,
--15849503, 30892626, -803696, 3206193, -6845104, -11833172, -13950591, 15608985, -17434882, -8382703,
-17839146, -24237038, -10531260, 3180423, -2231236, 3029563, -335007, 3514894, 10860899, -3837017,
-4285304, -4902705, 11394548, 6267968, -435939, 1013612, 6960532, -6022081, 5071283, 870805,
-5573257, -2446521, 8637179, -4325569, 2357400, -7423851, -6406481, -10160819, 1953136, 651761,
-3464965, -4952098, 11472395, -3719979, -1915555, 9851044, 8688719, 4683662, -3969624, -6525129,
-5945846, 7866770, 4947803, 3426847, -56908, 7114614, 7710003, 3437048, 6556268, 905164,
--5001490, 14734959, -42477764, -119853744, -98487360, 51880520, 14797236, 118887376, 212517136, 31457414,
-66920960, 24263344, -169716704, -53757960, -115171696, -139164992, 3789772, 22075596, -58116276, 83915072,
-109881368, 61611844, 175317344, 101045552, -22690312, -41772852, -81528680, -158582544, -125250376, -37015100,
--111701896, -15683073, 96156800, 15943455, 22291418, 145415776, 74132208, 45796700, 151633280, 23246510,
--42012296, 59192704, -79595944, -157556576, -65996468, -132951248, -166342480, -2565169, -34831648, -43888660,
-110586280, 121865936, 77517720, 183938416, 148405616, 69927976, 63248224, 36550708, -123118992, -113288888,
--143406816, -189333440, -151813136, -64151244, -44088912, 3741454, 108652472, 132120176, 138337136, 132578664,
-122876328, 26090852, 2172717, -21033528, -93864360, -102871448, -59475096, -107861128, -45431628, 9248138,
--23607824, 53902376, 97165584, 29590178, 40993852, 18125298, -26652956, -16721381, -40745280, -53049288,
--6448894, 14721537, 325344, 43472584, 40182104, 4415764, 38681012, -145492, -49143552, 43142948,
-12961674, -43791488, 30595200, -32478542, -65641596, 29792040, -46732464, -115732192, 1753420, -51037096,
--33719788, 114390552, 51774220, 54308252, 163842272, 108506440, 60254632, 71389872, -17882634, -103752992,
--131733088, -178965920, -197857872, -125675040, -80234824, -13973676, 75252656, 167494592, 185031488, 171438992,
-178644336, 95409480, 4387846, -45678588, -117630568, -150588000, -97391608, -108795280, -86541984, -17474074,
-3308199, 11541114, 42762840, 36324148, 31913218, 56554520, 56602300, 47831440, 56633440, 39530880,
-14287746, -2864743, -21993454, -52027088, -54877872, -40637908, -32021666, -13900125, -4604742, -3220689,
--3836480, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-10633265, 5459977, 321586, 8239895, 2979634, 3637301, 2328409, 3346317, -105764, -109522,
+-1868311, -5405217, -3132642, 1436667, -283468, -997506, -657130, 2874407, 2221035, 32212,
+2575370, -2423435, -6164352, 1959042, -1449552, 689879, -3154117, 2460480, -2587181, -1283122,
+-1036698, 4407710, -1062468, -48855, -1864016, -506269, -5000953, 1677185, -868657, 2688113,
+-2393371, 317828, -1146219, -3995393, 1238024, -398358, -1110786, 1777580, 3253438, -681289,
+-2045478, -5842766, 499827, -3474092, 1578937, 56908, -2284386, -91805, -1000727, -817118,
+-4249334, 2725694, -3772055, 2064269, -1506460, -2495376, -2160369, -4489315, 2437394, 229244,
+1195612, 2700461, -2916283, -4603668, 2913062, -4411469, 105764, -2939905, 901406, -2275796,
+1966021, -1151051, 1020592, -1963337, 317828, -911070, 1141388, -941135, -1074279, -1002875,
+-987843, -1761474, 216359, 433255, -346819, -1387811, 920734, -1047972, 106837, -700617,
+-1241246, -442919, -470299, -193810, -306016, -176094, -1032940, -536334, 109522, -594316,
+-359167, -318364, -15739981, -189515, -2106145, 4116189, 59593, 1572495, -1318018, 2038499,
+382789, 1780801, -1835562, 10130754, -2223719, -1445793, -4373351, 1442572, -5276904, -1706176,
+379568, -2574296, -49392, 3707094, 2119566, 1398549, 2495376, 3600793, -4415764, -1697049,
+-97174, 2283312, -4166118, 4035659, -3488050, -1769527, 3235184, -630286, 740345, -2596308,
+2988760, 3122441, 3357591, -5184563, -1584843, 5572183, -80531, -856309, -1257889, 6076305,
+3966402, 4697621, 81068, -1116155, -1411971, -348966, -129386, 677531, 1820529, -5902359,
+-532576, -2756832, -3479997, -470299, 1003412, -3069828, 817654, -2349884, -853625, -959388,
+-68719, 2022930, 1891396, -1082332, -693100, -1350767, -4772783, -1148367, -2956011, 61740,
+-3900367, 1041530, 72478, 3930432, -1352915, 522912, -3412889, 278099, 493921, -1617592,
+-1628330, 1655710, 70867, 423591, -142271, 1153736, -289910, 465467, -178241, -296890,
+1450625, 629750, 621697, 193810, -132607, 5335960, 6320581, -4410395, 558346, -3763465,
+5790153, 1056025, -2406256, -3407520, -3016141, -638876, 725850, 1527935, 7705708, -4598836,
+-740345, -1832877, 3012920, -8627516, -1020055, 5484137, -163746, 4606353, 2029909, 3692598,
+3841848, 1665374, -766652, -4057134, 1322313, -1143535, 500364, 6415071, 1606855, 5502390,
+-2910914, -1518808, 406948, -7429220, 854699, 5531381, -1643362, 505732, -4651450, 3490735,
+-92342, 1544041, -5502390, 3218541, -3700651, -2066953, -3864934, -4534949, 2592550, 874026,
+-1480153, -2326799, -2204929, -1621887, -1109175, 2550137, -2551748, -4606353, -7093676, 6540162,
+5013838, 261456, -7096360, 2142115, -3409667, 2780455, -2308008, 498216, -4352413, -2742337,
+-5665599, -2565169, -802085, 5513128, 3278671, -6169721, 2662343, 129923, -544924, 2688650,
+-374199, 2134062, 4376572, 223875, 916439, 2902324, 593779, 576063, 2867965, -510027,
+-82678, 216359, 368830, 607201, 709207, -644245, 828929, -603443, 207232, 141197,
+733366, 168577, 1815697, 1588064, 111132, -88584, 1782411, 910533, -1343251, 255014,
+642098, 26761942, -9898826, 12004970, -9486509, 844498, 2871723, 2838437, -7826504, -2640868,
+-2609193, -13126494, -42413, 721555, -4711043, -741419, -27917, 9429064, 1767916, -6534793,
+4819490, 5253819, 1196685, 9557913, -7059853, -2570538, -3759170, 2036888, 7666517, -530428,
+511101, 2864743, -1336272, 3435974, 1570884, 8748312, -1287417, 3442953, -5686537, 5238250,
+-3972308, 5845451, -74625, -6067178, -884763, 8818105, -359167, 5973226, 3602941, 5745593,
+540092, -4508642, -3655017, 115964, -2708514, 4720169, 3147137, -4629975, 672699, -3613141,
+6234682, -1666984, 5008469, 5963025, 1072668, 6146098, -250182, -2949569, -977105, -3764539,
+206158, 8069707, -5014375, -5148055, -1920924, 2305324, -3503083, -2171106, 1593970, 3886946,
+-1570884, 1440425, -7770670, 1941862, 542777, -538482, 2770254, 193274, 772557, 1876901,
+-200790, -991064, 878321, -1779190, 601295, -730144, 263604, 359704, -239444, -607738,
+-1522566, -105227, -1204738, -757525, -485868, -2671470, -22262426, 2440615, -6553583, -4685810,
+-7187628, -8713952, 3440806, 7796977, -1172526, 3033321, 1236951, 4005057, 909996, 295279,
+2418604, -4770098, 11064373, -573915, -6438156, 7261716, -2217814, 3083250, -7257421, -4516158,
+-5142150, 2228014, 1352915, 5681705, 173409, -3529926, 594853, -3151969, -3464428, -3844533,
+-1335735, -5352603, -2712272, 4985920, -4642860, -330176, -3632469, -5681705, -2531346, 708670,
+1818919, 3601867, -2860985, -2626373, 3562139, 617938, 1340030, 941135, 2204392, 3337727,
+-5437966, -1826972, -554051, -7627325, 2017024, -544924, 4459250, -4476967, -3415573, -4185983,
+716186, 4714801, 3653944, 8324721, 5590974, -5166846, 2089502, -2349884, 3941169, 2454037,
+-5576478, 4000762, 1076426, -6200322, 792958, -1145146, 526134, -1179505, -4228396, 753230,
+-3034931, -3207804, 1163936, -1775432, 729071, 2244121, -1523640, -2049773, -2110440, -3174518,
+-590558, 2403034, -648003, 2499671, 16643, 1678795, 1155883, 859530, -1131724, -472446,
+429497, -1129576, -1231045, 256624, -1188095, -489626, 318901, -2247879, 1240172, -1168231,
+-387621, 219043, -79994, 140123, 714038, -1024350, 635118, 1447404, -28349468, 7783555,
+-8455180, -7044820, -5066988, 955630, -1474248, 16699370, 1645509, 3995393, -1860258, 63888,
+-6859063, 6812355, 1991254, -993748, 1370632, 8893267, -4453344, -1541356, 2055679, 613107,
+4467840, -3890704, -1745904, 4902705, 1804423, 4515621, 543313, -4804995, -3140158, 2697776,
+-464930, -1638530, -2994129, -1739999, -195421, 8419210, 2131378, -1537061, 179315, 609885,
+-2555506, 6059662, 4651987, -1462973, -6378564, 1580548, -3376381, 5761699, 4491462, -4523138,
+1759863, -5852430, -5195837, -4593468, -5733782, -2007360, 1267552, -3476776, 286689, -3838627,
+-3227131, 6626061, 4234838, -5672578, -7614977, 821413, 6488085, -5043366, -3714073, 5443334,
+4313758, 6212670, -4031364, -218506, 1767379, 2535105, 7026030, 1853815, -919660, -317291,
+-5120138, -818728, -93416, -4445291, 320512, -1347546, -2006287, 31675, -594853, 2110977,
+-521302, -903554, 1028108, -717796, -1831804, -1265405, 383326, 1686848, -839666, -720481,
+51540, -501437, 3289945, 523986, 4265977, -3092377, 768262, 145492, -1782948, -119722,
+-151398, -2366527, 576063, -520228, -2535105, -2434173, -1233193, -2333778, -1722282, 503585,
+-1126892, -14919643, -1469953, 2524367, 7270306, -1403381, -3795677, 1713692, 10678362, -13425531,
+3123515, -2714956, -2487323, -6036040, 3642669, -10755135, -7004018, 3716221, -5624260, 3420405,
+15347529, -2699387, 6205691, -7199439, 7413114, -1909113, 2213519, -6454799, 3024731, 1854889,
+-3465502, 1542967, -697395, -3310346, -220117, 4233227, 6606734, -5152350, -8247948, -6516539,
+-6054294, 805306, 4843650, 12851616, -146566, 8662412, 9023726, -8373039, 6455336, -12324946,
+-4515621, 805843, -5493263, -5094905, 3424163, -11933567, -2364380, 8345659, -3591130, -3103651,
+1096827, -3627637, 3399467, -3598646, 5833103, 7565048, -2091112, 2369748, 310848, -7605850,
+653909, -4912906, -3409130, -6002754, 3427384, 2652679, -5796595, 498753, 4313758, 4041564,
+5111011, 5300527, -809601, -4982699, 4151623, 2203855, 2485176, 1387811, 3001645, -310848,
+-101469, 470836, 1233193, 1486596, -2055679, -600759, -1658931, -1069984, 2408940, 2102923,
+2325725, -4195110, 862215, -496606, -1744831, -2010045, 2178622, -1314797, -2311766, 618475,
+545461, -727997, 5141076, 1740536, -1010391, -1104344, -2390149, -627065, 2101313, 3236795,
+804233, 42950, 3222299, 35440460, -1652489, -13935021, -1694902, -555125, 1399086, 4517232,
+1876901, -1561758, -1393717, -6986301, -3278134, 4010963, 8704825, -7023346, -4396436, 5834176,
+529892, -2014877, 2374043, -500901, -8139500, -8287140, 11429445, -994285, -659814, -1833414,
+5902359, -386010, 680752, 3784403, -6161131, 6674379, 2814277, 1145683, 2589329, 6672232,
+-15812996, -7038378, -3795141, 14705431, 1957431, 1167694, -4438312, -4893042, 4449049, -586263,
+5147519, -1734093, -10080288, 1163399, 1309428, -1461900, 5001490, 2290291, 1393717, 8189429,
+19844896, -1488206, -1602023, 7609072, 2357937, -2258079, 5243618, 15467788, -1658931, 3024731,
+5640903, 4558571, 4072166, 4170413, 4641249, 3606162, -4000762, 6222871, 11043435, -2455648,
+4275640, 142808, -1316944, -7512972, 4802311, 1876901, -554588, 2384781, 2697776, 712965,
+368293, -2474975, -2882460, -1074279, -5804112, -2520609, -3913789, 5184026, 2558727, 2025077,
+-766652, -679679, 359704, -3284039, 66035, 1328756, -4600447, 4174708, -1973538, 817118,
+-1369021, 314069, 1603097, 1949378, -3576097, -3499862, -2937758, 498216, -566399, -902480,
+-224412, 2613488, -614717, 359167, -1442572, -3096135, -1692754, 7154342, 7966091, -10118406,
+-2925947, -8588324, 8529805, 15964930, -7626252, -1782948, -8750996, -3801046, -10591926, 7570417,
+-6460168, -2625299, -670552, 82678, -4205847, -5189394, 9540196, -8637179, -3177202, 994822,
+6516003, 6945499, -9946071, -2923799, 3849901, -8564702, 4887673, -6794102, -2749853, 2509335,
+221728, -3716221, -1013075, 2051921, 11155104, 1379758, 2537252, 4832, -9494562, 10401874,
+-5077188, -7797513, 6266894, -5558762, -6263673, 8198019, -3681324, 1049046, -1785633, 1101122,
+10802916, -1844689, 2444910, -9423158, -710280, 10966125, 2483565, 10864120, 9335111, -3065533,
+-2349884, -12644384, 1974611, -2129230, 8413841, 10263898, -5869073, 2551748, -18533858, -5084705,
+6187974, -6423124, 9659918, 638876, 2116345, -3416647, -681289, -4464082, 827318, -3080565,
+6834904, 6671158, -263067, 2264522, -61740, 3764002, 1672890, 2722473, 5784784, -1743220,
+-6416145, 2950643, 1515050, 4078072, -1020592, 4327180, -841277, -1526861, 1142461, -2632278,
+-1687922, 424128, -4490925, 1248225, -1529545, 4004520, 1792612, -318901, -803159, -2678986,
+-3971771, -346819, 602369, 1610076, -1421097, 875636, -3729105, -78383, 287763, -2028835,
+2601677, 227633, 122943, 1050656, -1174674, 167504, 90194, 6406481, -8133595, 2793339,
+-7605314, -823560, -10275172, 16896938, -4964982, 1155346, -5325223, -15400142, 8890045, 3117610,
+-11489574, 7125888, -5171141, -3806952, 4030827, 15993921, -7970386, 15451145, -293668, -10849087,
+467078, 3615289, -9540196, 10550050, -5519570, 7814156, 16983374, 1666447, -7914551, -2211908,
+-890669, 3897683, -6728067, -3675418, -894964, 8371965, -2970507, -3352759, -11092827, -369904,
+-13117367, -2413772, 14901926, -3331821, 8494372, 812286, 2281165, -19498614, 289373, -12473122,
+10077604, 17488570, 5417028, 4402342, 1110786, 2630131, -10167798, 3604551, 5473936, -4529580,
+-1242319, -4013647, -2534568, 7891466, 210453, 9569724, 29316910, 10710038, 2957085, -10044318,
+-9313637, -6044630, 5790690, -9944997, -828929, -892816, 2076080, 5650030, -5425618, -1014686,
+5484673, 5995238, 1270774, 1036161, 4107599, 5164698, 4340065, -32749, -911070, -950262,
+496606, -2111513, -2611877, 2348810, -1298691, 3642132, -4393215, -1388885, 3115462, 2625299,
+-217433, 2373506, -2237678, 1090922, 1663226, 2204929, -2460480, -2451353, 3523484, 2498597,
+2000381, -882079, -1699733, 857383, -4892505, -1283658, 844498, -2619930, 1256278, -1814624,
+-1232119, 573378, 455803, -404801, -925565, -3669513, 30596274, -16569447, -454193, -8233989,
+-15529528, -20725902, 5737003, -6649146, 6075231, -19618874, 3841312, 6982543, 6282464, -8249559,
+-18012556, -14191109, -11917461, 131533, -6941204, -13160854, -9062381, -4624069, -10751914, -7514582,
+1753420, 13515725, -403190, 1891933, -539018, -11967926, 7281580, -1132261, 2088428, -2710661,
+-7957501, 6660958, -9908490, -13807783, 12240657, -13472776, 2567317, -181999, -18891414, -11294153,
+7256884, -400506, 8943733, -6073084, -20066624, -147640, 588411, 7382512, 7850127, 18589156,
+-10924249, -38511360, -13559749, -13182865, 8486319, -25117506, -8593693, -4250407, -23079006, -7725036,
+-519154, -4445828, -4436701, 4937602, -6322192, -620623, -5939940, 5321465, -13631689, 4793721,
+10715407, -13739600, -7004555, 6657200, 5158256, 4468377, -14125611, 3251290, 33286, -2051921,
+7289097, -1942936, 5971079, 5318244, -1342714, 1602560, 1044214, -1763621, -4789426, 7569343,
+-2639258, -5452461, 35970, -289910, 3961571, 1374390, -116501, 1198296, -4164508, -4201552,
+334471, 1367947, 2324114, 4301410, -639413, 1923072, -561567, 1691143, -4825396, -2120640,
+-3385508, -3080029, -619549, -722091, 1604170, -5411122, -2542084, -4071092, -2951180, -5666136,
+-6978785, -6180995, -775778, -637266, 625455, -3834869, -4932770, -17763448, 6977711, 8732205,
+-2961917, -3444564, -8876624, -9779641, 22493280, 8185671, -21070572, 7260106, -11498701, -1108638,
+-10451803, -21618718, 6303938, -11269994, -4755066, 886374, 590558, -5505075, -18318572, -11333345,
+8922795, -11203959, -352724, -9908490, -15253576, -5915781, 16844862, 2717104, 2962991, -14713484,
+-4982162, -3000572, -1964411, 6003291, 7358353, 9564355, 11767137, -5741835, 6612102, 2356327,
+-6868727, 4220879, -11512123, -9955197, -8681203, 3762928, -10022306, 523449, -15046881, -13111461,
+-6824703, 15603079, 12102144, 11871826, 12993887, -11944304, 16292422, 607738, 7481833, 22531398,
+-4662187, -4060355, 3613141, -10734734, 4414153, -4993973, -14013941, 1915555, 11365557, -13394929,
+-9669045, -1547262, 12214887, -10144176, 1119913, 3898220, 7320772, 1974074, -3110093, -6863358,
+1817308, 5364414, -2936684, 810138, -3683471, 1309965, -3507378, 1534377, 149250, 2097555,
+-1384053, 1506997, 2398739, 6514392, -897648, 47245, 423591, 3144453, -4804458, -1758252,
+-5283347, -1241782, -1272384, -5718212, 1004486, 5602785, -603980, -6835978, -1327682, -401043,
+-6277632, -6670084, -10239202, -3929895, 3730179, 898722, 2593087, -1251983, -1966021, -3340948,
+-684510, -8582955, -1775432, 5633387, 8299488, -110595, 2378875, -4704063, -8392366, -19698868,
+22737020, -17595408, 23542864, 13214004, 9028558, 5108864, 9311489, 10094784, 9351754, 25285546,
+-8720394, 1862405, -1582696, -4264903, -662499, 3206193, -2237678, 4928475, -1530619, 7960185,
+6716792, -1342714, -4258997, -25041270, -8840653, -18145164, -733366, 9676561, 9798968, 3151969,
+5046587, 7308961, 6094022, 7084549, 18100602, 26894012, 18112950, 3692061, -3299609, -5123896,
+-7589744, 9445170, 9676024, 10775536, -7857643, -6230387, -9773198, -1583232, 13191992, 175557,
+15785615, -9454297, 8511551, 5099737, 14180908, -29350196, -20928302, -8580808, -11691975, -12046846,
+3750580, -4898410, 18624588, 5524402, -20500416, -1670742, 33503430, -11224897, 10536629, -5018670,
+13845901, -6367826, -4043175, 512175, -5537287, -7429757, -404264, 5625871, 8390219, 5769752,
+-2034741, 6502581, -1593970, 3010772, -8369281, -5783711, 5585068, 3466576, -8413841, -3727495,
+-3492882, -1150514, 2262911, -2257542, -4053912, 1921461, 518080, 1387274, -534723, -2433099,
+3934727, 1219771, -2013803, 5001490, -564788, 1451699, -797790, 5895380, -4895726, 5243082,
+2455648, -4997195, 3417183, 133681, 1015760, -5217312, -14954539, 5606543, 270046, 1036698,
+-1591285, 5690295, -1256815, -2759517, 1979980, 4421669, 3867618, -2306934, 4762045, -14501420,
+-7264937, 11994770, 5235565, 8841727, 23098334, 1956358, 15432354, 22551262, 15668578, -10241350,
+-22967338, -799938, -10548440, 24729884, 7120519, 19312858, -2771865, -10401337, -3828963, -11348377,
+4457639, -8742406, 1042066, -9735617, 5039071, -7125351, -2989834, -15614354, -15440407, -1575716,
+-22115860, 12060268, 8332774, -6663642, 11311870, -5439576, 4393215, 12548821, -13986561, -18375480,
+3248069, -4059818, 30746598, 13008382, -33765960, -9174587, -9594420, -17477832, -18447958, -37769944,
+6632503, -13578539, -3553012, 5335423, 1355599, 7690676, -1513439, -4536023, -28594818, 3322157,
+-13009993, 3433290, 16738561, 3447785, 11218455, -17107928, -22619446, 4485020, 13996225, 9349070,
+5247377, 8876624, 14552960, 18135500, 18727668, -16751983, -10042170, -12095702, -8595840, -14107357,
+19761144, 11491722, 11138998, 2950643, 8517457, 7201050, -702227, 10230612, -15933255, -5709086,
+-1904818, 1202054, -3449396, -11403675, 644782, -2396055, 1471026, 3556770, 11551851, 528818,
+5408438, 5301601, 871342, 5633387, 198105, -3601330, 714575, -8786429, -3510599, 4505958,
+6673843, 1925756, 1234266, -10724533, -1011465, 246424, -5079336, -3661997, 1592896, 3267396,
+-9709847, -10903848, -4886599, 3514357, 3153043, 5356361, 1345935, -3579318, 2447058, -11290932,
+-9878425, 40805948, 26949310, 37439768, 2421825, -7427609, -25447682, -7508140, 4246649, 5900748,
+-6075231, -19662898, -7117835, 32349694, 13364864, -4477504, 9895068, -732829, -11901891, -3474092,
+-7772280, 22056804, -1712618, 1292785, 9502615, 623844, 10784663, -114354, 15273441, -14075145,
+17600776, 3566970, -8230231, -4967130, -9114994, 15907485, -22069152, -23805930, 15027554, 24893630,
+1140314, 17183628, 23605140, -26615376, 8826695, 5435818, -1494112, -245350, 3917010, -9992778,
+18520972, -11265699, -8989367, 7492571, 905701, -2017561, -4357781, -5553930, 2633889, -17584670,
+-5309654, 14149770, -17388712, -4002910, -11762842, 431107, 35041564, -11033771, 2202781, 9379672,
+118112, -8091182, -21978422, 21406118, 9931575, -44164076, 10878615, 11098195, 8150774, -9915469,
+-4679367, 22537840, 941672, 1644973, 5709622, -15705622, 523449, 9962714, -4158065, 5747740,
+-1337882, -5121212, -13165685, 1969779, -1810329, 12096775, -1223529, -543313, -8807904, 9574556,
+-3333968, -3371013, -13909788, -6973417, 4742718, -8924405, 619549, -4420058, 5401995, -5246303,
+-11228655, 5563594, -12090870, -3329674, -5571110, 505732, 588947, -4548371, 11777874, -1537061,
+15926276, 9740449, -1773822, 1616518, 10123775, -7209103, 1672890, 1138703, 9696426, -9029095,
+-5483063, -17971216, -43437152, 39140036, 23439248, 12586939, 8933532, 19466402, -43833900, 18366354,
+20631412, 8979703, -27964532, 15967078, 28809030, 13485124, 31739808, 11734924, 807991, -994285,
+-716723, -5107253, 13605920, 22611930, 21567178, 7695508, -6272263, -10858214, 2927557, -9864466,
+-11567421, 12702366, 8837432, 2616709, -11593190, -11302206, -2263985, -9795747, 5392869, 25938918,
+-4296578, -8070781, 8946954, 4893579, 7887171, 9209484, -1693291, -4954782, 20920786, 13891535,
+7023882, 9339943, -1391033, -20293184, 5032628, 13885092, 2043331, -15050639, 20709258, 5548561,
+28700582, 1272384, 25827786, 2946885, -8104067, -2509335, 6401649, 36588828, -4323959, 13283260,
+9236327, 17393544, 9275519, 280784, -834297, 11412802, 52032456, 2617246, 21036212, -17355962,
+-12837657, 6765647, 8407398, 10275709, 4416837, 1839320, -25173340, -9883793, -26409218, 1632088,
+-4317516, -8637716, -7196755, -2796024, -10992432, 1580011, -907849, -11671037, 8719857, -13624173,
+-6437619, -12289512, -8252780, -669478, 1622961, -9808632, -11299522, 2917357, 7592429, 8709657,
+-1497870, -3153580, -14615237, -19303194, 2185602, 2495913, -8614631, 17792976, 17346836, 25424596,
+9116068, -5470178, 3691525, 7915625, 9812390, 11592117, 1923609, -11916924, 3248069, 15453829,
+8096014, 858457, 6368900, -28547038, 31158378, -542777, 27574764, 610959, 1822677, -25162602,
+-7761543, -11365557, 19126026, 4797479, 8457327, 4983236, -19299972, 1821603, 1515050, -17007534,
+-24244554, -24839406, 8362302, -9295920, 22528178, 1198296, -7162932, -5953899, 4855461, -8834211,
+1452773, 6500970, -9483825, 5216238, 7604777, 2476049, 2180770, 16935056, 28682866, -5737003,
+-213138, 14281840, 11813308, 17127256, -12780212, -5147519, 5221607, -17288318, 1699733, 1356673,
+-22756348, 29233158, -1410897, 14685030, 12826920, 8835285, -17299592, 1501628, 14847702, -12193412,
+26400090, 7099044, -9598715, 21656836, 16478179, 11323681, -36659692, -7622493, 7351911, -12678743,
+2021319, -20617454, -5077725, -31171262, -8827232, -4893579, -8517457, -34529928, -3398930, -9538585,
+51717848, -7591892, 10579578, -5460514, 8326331, -4491462, -8369281, 5428839, -7004018, -1246614,
+-3732327, 13723494, 5062156, 5945846, -22231824, -20113332, -14824080, -6365142, 4041564, -28210956,
+-4420058, -2416993, 2203855, 10109279, 7881802, -999654, 10998874, -9981504, 345208, 430034,
+-16027744, -22473416, 4537096, -6688875, -20559472, -5840082, -9601936, 1249836, -21977884, -2688113,
+-9501541, 12903692, 386010, -9609989, -3266323, 3907347, 5352603, -2280628, 10182831, -10269804,
+-6077916, 12779138, 12555800, 16088411, 14131516, 10531260, -7634841, 6588480, 17639968, 17034378,
+7501698, -20534238, -23833848, 10620380, -3263102, 7690139, -4369056, 20272782, -15080704, -3087545,
+-5187247, 17689360, -13242458, 30986578, 38071128, 38845832, 2415919, -7154342, 6327024, -4997732,
+9521942, -1609002, -187905, -11323681, -31118648, -10326175, -29801168, 17150878, 16124381, -18331994,
+-13730474, -18377092, -8584566, -2609730, 40699112, 529892, -20718386, -22239878, -1314797, 28491202,
+13619878, -56948044, -11599096, -10022306, 7530152, 21482890, -24724516, -7783555, -14710263, 6535867,
+-33749852, 16864190, -5601711, -699543, 9409200, 1459215, -16510928, 33415920, -3308199, 15938087,
+35736276, 73256576, 43923020, -992137, 24690694, 37403260, 48037060, 52111912, 14923401, 31957242,
+9154723, 501974, 19604378, -15304042, 32139778, 13857712, -13915157, -47759500, -34778496, 4645007,
+-13567802, -9709847, -8788040, -5194226, -5828271, -19601156, -12853227, 852014, -2993592, -958851,
+-6147172, -1620813, -10211285, 12888123, -21213918, -8570607, 6233608, 4062502, 1989644, -5348308,
+-6581501, -3607236, 4366371, -3235184, 11048803, -12724914, -16093242, -16034187, -9908490, 12513387,
+13919989, -5005248, -2330020, 5226975, -2559801, 23146116, 5062693, 2219961, 18473192, 11731166,
+10605348, 26275000, 17219060, 19826642, 6203007, 9672803, 21604760, 8531953, 8972724, -7183333,
+-16262894, 18925236, -23647016, 39813272, -4610111, -7207492, 814433, 31722628, -21053392, -3650722,
+-843424, 510027, 11560441, -8108899, 16636556, 5829881, -3037616, 3925600, 1977833, 13088913,
+-39737576, -12475806, -1142998, 4292283, -3863860, -28936806, 23883776, -1243930, 3328063, 8697309,
+-18860812, -8556649, -43856984, 11707544, -10227391, 8485782, 32136556, -8734890, 6786049, -4072166,
+15351287, -26169236, -35035660, 30798674, -2835215, 2699924, 5255966, 30976914, 22580254, 26891864,
+-419296, -35868884, 21356724, 10062572, -8449811, -12656195, 20412906, -3677566, 25798794, 42672112,
+33166274, 5694590, 2921115, 31493384, -6172942, 9707163, 25901874, -17566954, 29943976, 18361522,
+10693932, -21097954, -10419591, -28169616, -794569, 9733470, 42039676, 17747342, -38981124, -3551938,
+25259776, -3651796, 12312597, 16950088, -27635430, -6794102, 13543106, 3301219, 7585986, -12040941,
+9012452, 15269146, 2014340, 261993, 22326314, 4292820, -4770635, -5750425, 7434052, -1932735,
+12012487, 1923609, 9099425, 10341744, -1531156, -10660646, 21976810, -3124589, -6702834, -1387274,
+-14870251, -14958834, -9811316, -10354629, 7159711, 13016435, -13034152, -11169599, 2629057, 19543712,
+-28168006, -6823630, 10910291, -3330747, 91805, -3827353, -3027415, -20253456, -265214, -5392332,
+5631239, 1568737, 3388729, 237297, 1771137, -1603097, -55188184, 12604118, -9155260, -2200097,
+43050604, 18478024, -13526463, -10499048, -180926, -27904940, -34149284, 2841658, 284542, -19253802,
+20372104, 2421288, -19709068, 12400644, 37046240, -5018133, -21350282, 13350369, -12571906, -13759465,
+6916508, 30032558, -9794136, 4344360, 8257612, -9346386, -22395570, -14767171, 29726542, 10386305,
+-29286308, 24990268, 9844602, -20153598, -10478646, 41195716, -13406740, -31755378, -16255914, 54774792,
+-54134840, -25187298, 32160178, -14632954, -17389786, -51697984, 40287332, -33138358, 11861626, 1618666,
+-6164889, -58376660, -17190606, 49777596, 31490700, -39532488, -10757282, -17182016, -8036958, 7973607,
+10878078, 12873628, -68801080, 37543920, 28923920, 30187178, 521839, 15744276, -33634424, -30070676,
+58980100, 24053964, 6586333, 23601920, -31656056, 6258304, -13969918, 15029701, -8500814, 41216116,
+-16789028, -14506789, 5805185, 4857608, -15569256, 9281424, 4619774, 3384434, -2873333, 1956895,
+3405372, 3226594, -3793530, -2379412, 8741869, 354872, -4509179, 17947594, 5418101, -16232292,
+1858647, 15370614, 4134443, -15451145, 20613696, 36699420, -18025440, -21283710, -5640903, -4922570,
+12594992, 26840862, 8272107, -25148108, -8231842, -3797288, 3815005, 7435126, -4112968, 10880226,
+-7885560, -1122060, 6552510, -45426796, 7956964, 56883084, 17827336, 6168110, 1622961, 4337380,
+24431384, 33423436, -7563975, 6298033, 8691940, -5677410, 20184198, -10543608, -2785823, -7964480,
+15520401, 11540577, -6253473, 10615012, -15095199, -12290586, 15496779, -9866077, 17022566, -11251204,
+-4963909, -274878, 9330816, -524523, 6957310, 2849174, 17333414, -12307766, -2416993, 357019,
+-6818798, 16734803, 14526653, -11904576, -4189204, -7297150, 3888556, -15374372, 8375186, 4808753,
+7691750, -6114423, -4625680, 19040664, -22769770, -3899294, 9681393, -6144488, -4099010, 9982041,
+-27996208, 6818798, -10101226, 1723893, -9890773, 24300924, -7845832, -10430328, 10008348, -5462662,
+-15849503, 30892626, -803696, 3206193, -6845104, -11833172, -13950591, 15608985, -17434882, -8382703,
+17839146, -24237038, -10531260, 3180423, -2231236, 3029563, -335007, 3514894, 10860899, -3837017,
+4285304, -4902705, 11394548, 6267968, -435939, 1013612, 6960532, -6022081, 5071283, 870805,
+5573257, -2446521, 8637179, -4325569, 2357400, -7423851, -6406481, -10160819, 1953136, 651761,
+3464965, -4952098, 11472395, -3719979, -1915555, 9851044, 8688719, 4683662, -3969624, -6525129,
+5945846, 7866770, 4947803, 3426847, -56908, 7114614, 7710003, 3437048, 6556268, 905164,
+-5001490, 14734959, -42477764, -119853744, -98487360, 51880520, 14797236, 118887376, 212517136, 31457414,
+66920960, 24263344, -169716704, -53757960, -115171696, -139164992, 3789772, 22075596, -58116276, 83915072,
+109881368, 61611844, 175317344, 101045552, -22690312, -41772852, -81528680, -158582544, -125250376, -37015100,
+-111701896, -15683073, 96156800, 15943455, 22291418, 145415776, 74132208, 45796700, 151633280, 23246510,
+-42012296, 59192704, -79595944, -157556576, -65996468, -132951248, -166342480, -2565169, -34831648, -43888660,
+110586280, 121865936, 77517720, 183938416, 148405616, 69927976, 63248224, 36550708, -123118992, -113288888,
+-143406816, -189333440, -151813136, -64151244, -44088912, 3741454, 108652472, 132120176, 138337136, 132578664,
+122876328, 26090852, 2172717, -21033528, -93864360, -102871448, -59475096, -107861128, -45431628, 9248138,
+-23607824, 53902376, 97165584, 29590178, 40993852, 18125298, -26652956, -16721381, -40745280, -53049288,
+-6448894, 14721537, 325344, 43472584, 40182104, 4415764, 38681012, -145492, -49143552, 43142948,
+12961674, -43791488, 30595200, -32478542, -65641596, 29792040, -46732464, -115732192, 1753420, -51037096,
+-33719788, 114390552, 51774220, 54308252, 163842272, 108506440, 60254632, 71389872, -17882634, -103752992,
+-131733088, -178965920, -197857872, -125675040, -80234824, -13973676, 75252656, 167494592, 185031488, 171438992,
+178644336, 95409480, 4387846, -45678588, -117630568, -150588000, -97391608, -108795280, -86541984, -17474074,
+3308199, 11541114, 42762840, 36324148, 31913218, 56554520, 56602300, 47831440, 56633440, 39530880,
+14287746, -2864743, -21993454, -52027088, -54877872, -40637908, -32021666, -13900125, -4604742, -3220689,
+-3836480, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-10573136,
--12868796, 6489159, -2356327, 5675263, -2819109, -2884071, -5756867, 1356136, 1220308, -258235,
-93416, -646393, -4403415, -512712, -2517925, -2896956, -2744484, -106837, 330712, -221191,
--495532, 2181844, -606127, -6664179, 4145180, 2057826, -2269353, 663036, -64425, 68183,
-935766, 4279398, -2386928, 249645, -7549479, 3759170, 743029, 1695438, 2609730, 4236449,
--2370822, -1807108, -857383, -3801046, 304406, -576063, 3281892, -1769527, -224949, -1842541,
--2105608, 3991635, -3012383, -1461363, 375273, -2739116, 2282775, -107374, -1284195, 2466385,
-4533875, 279173, -176094, -642098, 3876208, -3857954, 33823, -607738, 2028298, -954020,
--1765232, 4211216, -74625, 884226, -1171452, 869194, 2267206, -1823214, -2542621, 122943,
-2213519, 3712462, -1674500, -1139777, 914828, 195421, 568009, -1711545, -550293, 1011465,
--230318, 709207, -1349157, -425739, -832687, -1169305, -842887, -788127, 591095, 98784,
--590558, 587874, 407485, -539555, -166967, -137439, -731755, -1319629, -369904, -5369,
-270583, 706522, -15343771, 2608119, 1813013, 5377836, -2108292, 1629403, 6252936, -2422362,
-1708860, -3794604, -5567352, 2036351, -3790309, -4326643, -4340065, 1305670, 1655173, -7405598,
-4352413, 2884071, -1260036, -2712809, 1731946, -675921, -1686848, 534187, 2454037, 1813013,
-3920232, 754304, -1194001, 4033511, -2030446, 8799851, 1981591, 5420786, 2090039, 4755603,
-2118493, 3276523, 1774895, 389231, 182536, 6658273, 1129576, -1072131, 440771, 3514357,
-2605435, 380105, -297963, -1372242, 742493, 8123394, 2331094, 3752728, -3926137, -2024003,
--4140885, -2622078, -4019553, 3015604, 1906966, -2573222, -1829656, 1805497, -1915019, 2015413,
--900869, -614717, -2779918, -4693863, 2019172, -7620883, -1075352, -1632625, -1926293, 406411,
--1777043, 348966, 2869038, 1380832, -1952600, 345745, -1548336, -3325379, -535797, 1581622,
--161598, -2570538, 932545, 459562, 973884, 1742683, 70330, 234613, -1203128, -741956,
--176094, -32749, 632971, -1398549, -1182727, 8637179, 11900818, -3645354, 3200825, -5910949,
--311922, 353798, 15205795, -1554241, -4014721, -6551973, 156766, 4363687, 6997039, -1575716,
--9173513, -2639258, -3494493, -2505577, 3124052, -672699, 5844914, 651761, -3297461, -7422241,
-2232846, -695248, 1731409, -894964, 845035, 3638374, 1341104, -9339406, 1131724, 6009196,
-2962454, 739271, 1445793, -1500554, 4170950, -5522254, -531502, 4555887, -3134789, 537,
-7409356, -3418794, -341987, -2508798, 4561256, -4789426, -3546032, 2216203, -4958540, -2449205,
-6470905, 3798899, -5767068, -2130304, -858993, -1433982, -2624225, 2073932, -2251100, 2378875,
--62277, 353798, 1051193, 4877472, -545998, 6724308, 3484829, -5164698, -2370822, -2521146,
-4049081, 1203128, -262530, -2075543, 5418638, 2083059, -90731, -117575, -1342177, -1241782,
-1615982, 622770, 1791538, 4219269, 1544578, -228170, 287763, 340376, 1380832, -280784,
-533650, 2017561, 451508, 2496987, 96100, 884226, 1291175, 1530619, 562641, 969589,
-1124208, 914291, 1449552, -438624, 456877, 984084, 1484448, -125628, -1102733, -1314797,
-339302, 28390270, -10488847, 5761699, -8010114, -831076, 283468, -581968, -4245575, 2327336,
-3267933, 796180, -3088082, -6575595, -245350, 4020626, 2856690, -2890513, -4950487, -397284,
-4435628, 8100309, -4367982, -586263, -3297461, -7087233, 794569, -3565360, 2152852, -2639794,
-5515812, -9678709, 6536940, -428960, -5761162, 1403381, 2428267, -683437, -3049964, 188442,
-7573638, -286689, 1249299, -1072131, 2900714, 1333587, -1785096, -2845953, -6221797, 4033511,
--1299765, -1835025, 2397666, 38655, -10459856, 8036421, -11258183, -6504191, -7971996, 1714766,
--930934, 4775467, -2607582, 2537252, -4796942, 2303176, -1251446, -1970316, -5292474, 3237332,
-3735011, 6368900, -1544578, -618475, 1734630, -1946694, -1137630, 1218697, 3693672, -4888747,
-2420751, 3494493, 3903589, -6193343, -5043902, 2107218, -3149822, 1600949, -43487, -382789,
-553514, 765041, -252866, 1446330, -1789928, 862215, -548145, 3601330, 227096, 871342,
-826244, 216359, -1410897, -139050, 367757, -411780, -22416508, 2263448, 216896, -1921461,
--3474629, 3899830, -3058554, 2588792, -824634, -57982, 3600793, 4695473, -2919504, 3454228,
--1032403, -1932735, -6302865, -325881, -8508867, -6249715, 7452305, 2649458, -2913062, -1074279,
--896038, 5169530, 2717641, -2683281, 4709432, 3129958, 1835562, 1620276, 1994476, 3586298,
-3081639, 3044058, 8336532, 7504382, 3230352, 819265, -5209259, 5767068, -7730941, 1511829,
--2165201, 6248641, -4735739, -6153078, 10539313, -2471217, -5669357, -5055177, 7841000, 4810900,
-274341, 4027069, 5688148, 2603824, 9207873, -561567, -1468879, 5220533, 3185792, 295279,
-193810, -4809827, 2864206, 2980171, 7430294, 3017752, 4621385, -2873333, -3838627, -8139500,
--1881196, -4408247, -3509525, -3714610, 4090956, -159451, 301721, -2393908, -2768107, -778463,
--2437394, 737124, -1647657, -2707977, 1088774, -279710, 84289, -2535641, -384936, 89121,
--3191698, -450435, -774168, 196495, -1444720, -1664837, -1040993, -627602, 37581, -545998,
-483721, -759136, 867583, 197032, 764504, 1725503, -420907, 1822677, 356482, 1191317,
--864899, 358630, -1612223, -609885, -290447, -1933809, -615791, -960462, -29869350, 7989713,
--6392522, -9442486, -9336722, 5761162, -6935299, 5086315, -8706972, 4763119, 4065187, 2491081,
--9164923, 6244346, -131533, 3772055, -7596724, 4198868, 8942122, 6830609, 227096, -3231963,
-1240172, -1957431, -9684078, -1978906, -4664872, 2189897, -6098854, 5197984, 5098663, -2044404,
--245887, 7160784, -1595580, 4851166, -3942243, -6283001, 3241627, -130460, 3354906, 8813810,
-5356361, -352187, -15425912, -7408282, -2160369, 2115808, -2391223, 8461622, -13404593, 4214437,
-1795296, -157303, 4174171, -1756642, 6478958, -14052596, -6570226, 5413807, -14122389, -2636573,
-6558952, 2334315, -3136937, -9427990, 3470871, 6047314, 4431870, -1702418, -9890236, -874026,
-52613, -1142998, -549219, -4855461, 2167885, -7753490, 4731444, 645319, -4608500, 883690,
--5538897, 395137, -6620692, -1870995, 2290828, 2408940, 192737, -659278, -2296197, -1739999,
-439160, -3901978, 3100430, 214748, -1898376, -12885, -3369402, -2665027, 724776, -1402307,
-1793149, -1788317, -1005022, -1181116, -1290638, -2290828, -403190, -1290101, -523986, 607201,
--549219, -1047972, 811212, -438624, -894964, -921807, -2027225, -1434519, 247497, 1033477,
--324270, -14036490, 1513976, 2340220, 10994579, -10384157, 12004970, 3404835, -971200, -2818572,
--1298691, 1116692, -8783745, -1677722, 2808372, -2880313, -5159330, -1387811, 8297340, -8573292,
--1874753, 8601209, 29528, -3400004, 3020973, -4172024, 6313602, 2790118, -92879, 3173444,
--3684545, -5768141, -427349, 454193, 4717485, -10121627, -5481452, -4458176, -3148748, -2987150,
--3090229, 1537598, 477278, 861678, -7584376, -7747048, -6189048, 245350, -9739375, -5344013,
-5794448, -3911105, 1259499, 645856, -210453, 2455648, 3423089, 3317325, 3877819, 5763309,
--1045288, 6234145, -430034, 3169686, -552440, -3947075, -271657, -6386080, 3932580, -7479149,
-6980933, -8348880, -167504, -8611409, 780073, -8651138, -8404714, 4002910, 11471858, 3522410,
--7470559, 5345624, -46171, -3232500, -2006824, -3387656, 4532264, 4000762, 5583458, 1070521,
-4341675, -3652333, -450435, 4363150, 454193, 1391569, 795643, -2029372, 2525441, -167504,
-905164, 3882651, 1061931, -879395, -2337536, -975494, 1515050, 1633161, 1183800, 519154,
--1837709, 217970, -440771, -3913789, 3817689, 534187, 1353989, 270583, -1015760, -1800665,
-1297617, -1835025, -992137, 39034272, 471373, -11252814, 1777580, -6109054, 15565498, -2545842,
-4383014, 1139240, 759136, -13675176, -7004018, 7583302, 6670084, -10776073, -1887101, -328565,
-9596031, 4714801, 3655554, 9401683, 1486059, 614717, 8169028, -2857227, -12424804, 1836099,
-9512279, 5624797, -3593277, 186294, 6635188, 4038343, 1818919, -358093, -6968585, 3389803,
--7580081, 750546, -14276471, 3739843, 4405026, -1161252, -6566468, 9062381, 4774930, -1884954,
-7058779, 3246459, -5939403, 10880763, 1180579, -3865471, 2534568, 11157251, 1745367, -294205,
--9306657, -5439039, 1313723, 3779034, 12730820, -4200478, -5034239, 1097901, 6953015, -4491999,
--5507222, -501974, 9256728, 6615324, -2295660, -7104950, -362388, 8072391, -3205119, 16769700,
-3665755, 2502355, -8575976, 7283191, 451508, -1859184, -4352413, 426276, -2425583, 445603,
-10386842, 4727686, 3792993, 1978906, 1214939, 170188, -658741, 959388, 2103460, 3741990,
-595927, 673773, 1393717, -2841658, 79457, 1232119, -621697, 3258807, -2291902, -64425,
--1112933, 1283658, 5529234, 1887101, -1702955, -408022, 1332514, 471373, 1859721, -351650,
--2356863, 2203318, 1990181, -1854889, -483721, 4867809, 1681480, 8798777, 4672388, -13883482,
--1445793, -7026030, 13937706, -5244692, 6491306, 1231582, 8724152, 3431679, 1285269, -732292,
-3538516, -4003447, -5934571, -16429324, -12155294, 3998615, 10798622, 14486925, -5346161, -7103339,
--6242735, 3218004, -3425237, -758599, -594316, 1934346, 2201708, 9664750, -5166846, 889595,
-2379949, 4709432, -4689031, -3497714, -7733626, -5259188, -5392869, -9221832, -23351200, -293668,
--3131568, -10055592, 2249489, -1154809, -12665322, 4231617, -10740103, 2731599, -1305670, -902480,
-5447629, 7035157, -202937, -10494216, 3084324, -6595459, -7252053, 10059350, 9106941, 10132902,
--3310346, 1624035, 1351841, -5202279, 808528, -2510409, 15909096, -2647847, -1631551, -1596654,
--107911, -9730785, -12016245, 2838974, -870805, -913754, 2725694, 17285632, -2128156, -8128226,
--3409667, 9065065, -1312113, -2967823, -2601677, -205085, -7357279, 1763621, -1400696, 1358820,
--3707631, 144418, -4667019, -416075, -278636, 1875827, -1945620, -984084, -2841658, 3847754,
-268972, -2860985, 657667, 1258962, -3011846, 753767, 1225676, 4707821, -954020, 1069447,
-3381750, 2044404, -1697586, 1979443, -3564286, -5905580, 753767, 530965, -2182380, -5508833,
--1081258, -1383516, 4900558, 1766305, 3304977, -595390, 4115653, 4501126, -15300284, 5615133,
-1836099, 16104517, -10882910, -6174016, -3633542, 8587787, -8251169, -7925826, 7107634, 4779225,
--8346732, -8412767, -8243116, -18403934, 12037183, 11305965, 11983496, -5194763, 3769371, 11900281,
--17304960, 4295, 11312407, 10495826, 4742181, -45634, -5559299, 1138166, -2692408, -14964740,
-1867237, 4079145, 2166811, 9898289, -8765491, 926102, -16358457, -2087354, 3200825, -8987219,
-3442953, 2742874, 7277822, 8916889, 12396349, -2553895, -4904853, -15009300, -10731513, 4614406,
-22005264, -6848326, -943819, -10166188, -5407364, -8067023, 4719632, 4871030, -1721745, 711891,
--16152298, -2135673, 10886131, -8720394, -7580081, 6467147, -2938831, 9467182, 2314987, -6966974,
-1093606, -10522133, -3060164, -2782065, 20258286, -2034741, -5971079, 4440460, 4110284, -1785096,
--3482682, -1038845, -2806224, -3773666, -3544422, -2688650, 1392643, 1575179, 3238405, -845572,
--84289, -1956358, 1948305, 513249, -5239860, 1393717, -80531, -563178, 1847910, -115427,
--2877628, -2811593, -6762426, 2244657, -2152852, 1988570, 2534568, -3161633, 1410360, 921271,
--709743, 2555506, -25233, 7296076, 987843, -1318555, 138513, -2114198, -417149, 1276142,
-170725, -629213, 557809, -2843268, 2245194, -9569724, 21889838, -10900090, -5649493, -513249,
--802622, -15664819, 927176, -11553462, 8222178, -21650930, -3221762, -6967511, 7290170, -7490423,
--7546258, -18325552, 12228309, -7570954, 4980552, -5936182, 3603478, 9663140, -7139310, -12031814,
--4098473, 8137353, 16927002, 5408438, 7043747, 788663, -17198660, -9222369, -9306120, -4799626,
-2919504, 15473157, 6616397, 8990977, 8404177, -2424509, -3690988, -5271536, -14388677, 727997,
--10063645, 15447924, -7161321, 10624675, 2211908, -5634997, 3504693, -3767760, -4927401, -8490077,
-12658342, 3286724, 21437256, 4661114, -23225572, -5822365, 7349763, 5973763, 3314104, -1358820,
-1980517, 24178518, 12045236, -4146791, 2534568, -6575595, 17485348, -724239, -762894, 6782827,
--15541339, -6728067, -5334887, -16596291, -19673634, 3835406, 6915434, -1886028, -9737228, -2580739,
--3156264, -7638600, 34360, -1602560, -6090264, 5916318, 9074729, -2068027, -1440962, -1440425,
--3692598, 2570001, 519154, -1102733, -1949915, -1655173, -1184874, 2958696, -1872606, -4377646,
--1161789, -272730, 1272384, 796716, -2750927, 6409702, -2243047, 3866544, -885300, 3216931,
-1609539, -1116692, -4531191, -4299799, 1325534, -1222992, -6789270, -2521146, -1771137, 2373506,
-483184, -574452, 1722282, 2976412, 891743, -1902671, -2887292, -13333726, 8060580, 17949742,
--1707786, -722628, -362925, 16687022, 5202816, 4039954, 2891050, 2019172, 2876554, -6501507,
-1266479, -20558398, 3001109, -9879499, 8652212, 21131776, -2699387, 1588601, -16593069, 22274774,
-10814191, 9495099, -2732673, -12164958, 1504312, -4114579, 11307575, 8142185, -10071698, 595390,
-5978595, 4261682, -7791608, -6886443, 32583232, -7493644, -5650030, 6920803, -8265128, -5986648,
-10375030, 10200010, 422517, 3961571, 3707094, -12541305, -6249715, -477815, 4311074, 11092290,
-2743410, 2666101, -14219026, -1283122, 4213363, -19366008, 4271882, -5341866, -1951526, -3520800,
-5724118, -5716065, -10538239, -11210938, -17837000, 2319819, -7226283, -3419868, 11433740, -3808562,
-3711926, -20064476, -35433, 18608482, 4337380, -9295920, -5571647, 11331197, 5772973, -12283606,
-6930467, -8876087, -6897718, -2875481, -1734093, 4275103, -1200443, 796716, -1917166, -2394444,
-1486059, 2313377, -3148748, 2741800, 8179229, 1337882, -1127429, 3572339, 5164698, -2134062,
-3510599, -2238215, -3189550, 959925, 2330557, 6867653, 1783485, -599685, 2463701, -971200,
-3498788, -1917703, 3214783, -2393371, 1059783, 2905546, 813896, -4640712, -2694018, 8698919,
--3674345, -6840273, 3391414, 1870995, 2524904, -1753957, 11043972, 3293166, -10327786, -10369125,
-24533926, -14740328, 3798362, -9434969, 28929826, 6121402, 5319854, -9293235, -10993506, 1022202,
-8238284, -8913668, -14198088, -8448738, -20629264, -8055211, -12127914, -52613, -27713814, 1908039,
-14954539, 9201967, 12215961, -8581882, 3157875, 13276818, -1580011, 9620190, 3549254, 15009300,
--7581154, 12513924, 9934259, 7105487, 16256451, -9148817, 9668508, -5008469, -5832029, -3866544,
-3564823, -31614718, -10141492, -19657528, 22695680, -14343580, -16210280, -3476776, 12790949, 344134,
--5818070, 17867600, -6429029, -5681168, -13015362, -31967442, 1513976, 2961380, 13282186, -13407277,
-2684, -8176007, -10816338, 17086454, -3487514, 8558796, -18622442, -18096308, -11322608, 14246407,
--1504312, -9024263, -9614284, -380105, -15800648, -10759967, 1495722, -6607807, -11793980, 17344688,
--23834922, -22669912, 5893232, 105227, 9980967, 1160715, -1131724, -7302518, -6497212, 1078574,
--11289858, -4518306, 9549323, 1293322, 1605781, -5541045, 5638755, 2131378, -6183143, 2906082,
--4593468, -904091, -4709432, 4096862, -6253473, -1525250, 4197794, 8283918, 886374, 377957,
--9015673, -2674691, -650688, 1350767, -1361505, 7691750, -354872, -2873333, 4854387, -5640903,
--5265630, 3280281, 6949794, -1901597, -4986994, -6662568, 5343476, 4397510, 8628052, -11963631,
--165893, 15846819, 2007360, -4900021, 8134131, -13025025, 25678536, 16091095, -242129, -11865921,
--13416941, 5478231, -3447785, -1287953, -795643, 23420994, -11631845, 353798, -8121247, 8569533,
--14696304, -13468481, -26441430, 6026913, -10802380, -14892799, -1902134, -25133612, -12404402, 6994891,
-5247377, -3514894, 12949863, 1140314, 15716896, -7056632, -21885542, -3387119, -16059420, -3118683,
--4890357, -20968568, 2637647, 16950626, -48029008, 5999533, 24696, 11818676, -2473901, -14989436,
--28538448, 11272142, -3585761, 10531260, 6252936, -3531537, 16506633, -20711942, 28855200, -7323456,
-16056735, 33717104, 13423920, 23974508, 9358197, 6249178, -3372086, 12495670, -4760435, -13191992,
--17796196, -11485279, -687195, 9912248, -1723356, -7783018, -11080479, -9882720, 13284334, -6007049,
--4912369, 11946988, 2094333, 8988293, -1023276, -1352378, -3733400, 2084670, 4452271, -6172405,
--1082332, -15044197, -10927471, 7342784, -3742527, -411780, -2273648, -314606, -5812702, -9011378,
-6429029, -5433134, 8379481, -8665633, -4058744, -981937, -6140730, -3067144, 4180077, 1751273,
-10178536, -2594697, -6204081, 3859028, -12330314, 192200, 1414655, -1913945, 718333, -1372242,
-5951214, 8683350, 1400159, -313533, -4274566, -7268159, -3601330, 418759, 14148696, 7131257,
--7256347, 40425304, 32943472, 29687350, -6747931, 89121, -25183004, 18844170, 23369990, 7960722,
-22574884, 9023726, 7681549, 7935489, -3976066, 3136400, 6253473, -5738613, -24264418, -14722611,
--888521, -16112033, -18786724, -44126492, 9707163, 7644505, 11514807, -8436390, -3011309, -5857799,
-318901, -13788993, -389231, -10502806, 12226698, 10188199, -6299644, -8542153, -23272280, 39223252,
--12239046, 7758859, -13422, 2542621, 6259915, -16189342, 19552302, -9841918, 6684043, 4401805,
--14609331, -15036681, -2787971, -1297080, 9082245, 41401876, -3457986, 6175626, 1371705, 12503187,
-8882529, 9321153, -7311645, -2157147, 3578245, -19975356, 4065187, -17090212, -27332098, 9549860,
-867583, 2193118, -20010790, -48067128, 20797306, 21751324, 14969572, -27247272, 25967910, 27624156,
-10208064, 8036958, 243203, -7917236, -18166638, 13631152, -12801687, 863288, 223875, -7174743,
-5485210, -13009456, -1366337, -2512019, 6452652, -3577171, -6013491, -8065412, 12421045, -6769942,
--2967286, 3286187, -11174968, 6257231, 5073967, -3815542, -3918084, 1137093, -10382547, 9650792,
--3491272, -2536178, -878321, 872415, 7063074, -5512591, -13127031, 3968013, -7323456, -2201171,
--7505456, -6575058, 1012002, -5302674, -2474975, -4933844, 16830904, -7394860, -13702556, 2233920,
--4927401, -23708756, -47311212, 39245800, 6303938, 6959995, -15766288, -11353209, -50333260, 13904957,
-35982700, 11028939, -31880468, -15953656, 5170604, -12414066, -7881802, 14744086, -16598438, 9262097,
-8264054, 6834904, -18476950, 6594923, 5713380, -8673686, -17292076, -10012643, -6659347, -4479114,
--16495359, -14228153, -7827578, -17009144, 13406740, -6352794, -21950504, -7583839, 13460428, -2789045,
--15221901, -8382166, -7770133, -57445, -12066174, -7279970, -19992536, -18996640, 8085813, -6760279,
-24937116, 16389058, 1601486, 14881525, -21805012, 14095546, -20697984, 17390860, -2982855, 8895951,
--9233106, 30904438, -7708930, 17307108, -4431333, 25421374, 10234907, 6186364, -26240102, 28460600,
-22778360, 9921911, 10583336, -20463372, -3908957, 8378945, 13981729, -3624416, 3374234, -22602802,
-14503568, 24800752, -547071, -17748416, -1036698, -11734388, -10053982, 4862977, -59056, -4896263,
-5729487, -12948790, -3048890, 507880, 3688303, -8923868, -12266427, 4731444, -5976447, -11565273,
--20772610, -1511292, 6445672, -1713692, -10462003, -12592307, -3875134, 8048769, -8677445, 3354370,
-4646618, 1338419, 3415573, -1038845, -5583458, -4676146, -1569274, 5834713, 1941862, -2205466,
--7798587, 10728828, -6905771, -5983963, -5041755, 2202781, 12422119, -8340827, 12232067, 10393821,
--4118337, 3838090, 6514392, -32829656, 28046674, -3228205, 13476534, -18068928, -5818070, -4432943,
--4152160, -4145180, 16408923, 574989, -13533979, 11053098, 1952063, 8010651, 13916231, 14088566,
-799938, -11951283, 49597744, -13458280, 38157564, 437013, 2347737, -21415780, -9365176, 3745748,
-18513456, 9297530, -5922223, 15288473, 3160022, -20649130, 3567507, 3258807, 21537650, -574989,
-12929999, -15590194, 96100, 14748918, 7313793, 12386149, 32314260, 26058640, -3930432, 13642427,
--1918240, 25606058, -20231980, 17206176, 6979322, -624918, 15304579, -7708393, 39567924, -6499896,
-19172198, -14031658, -12659953, 979789, 42146516, 14024679, -38912940, 34936336, -581431, 12472048,
--29299730, 10350871, 3517041, -58573152, 24864102, 45370960, 17424682, -18463528, -11716134, 9481140,
-44580688, 25617332, 34020436, -11945915, -16279537, -14637785, 7300371, 9583146, -1336809, -16569447,
--7346542, 21420076, 3971771, 5182415, -7035694, 10060961, -2248952, 4790499, -4289062, -5302137,
--6531035, 13103408, 21578990, 21049098, 4925254, 11370926, 19857782, 13379360, 14078366, 19195820,
-10931766, 18353468, 13959717, 5349382, -26927298, -4909685, -12424267, 8023536, 16176994, -17756468,
--6150393, 21809844, 12064026, 2841121, -4665945, 18527416, -13861470, 3689377, 19085760, 15127412,
-8558259, 10288594, 11790759, 9917616, 11691975, 7698729, -8935143, -4364761, -15902653, 20333986,
-3195456, 13576928, -10773925, 27122718, -9361955, 12703976, 4294968, 5734318, 4068408, 2486249,
--28151900, -16248935, 287226, 2678449, 19429358, 16071231, -22943178, 2469069, -12589623, -11423002,
-5798743, 1530619, -7787313, 9643275, 37418828, -24625732, -1858110, 57242252, -34665216, 4187593,
-20517058, -10379325, -8296266, 11927124, 18963892, -20448876, 10239739, -37165424, -3885872, 55640228,
-2567854, 15817291, -5739687, 30438970, 30665530, -8360154, -375273, -14353244, 3677566, -10598369,
--26933204, -17365090, -32163400, -23809152, 36144296, 14508400, 10817412, 47889960, -33740728, -20047834,
-6291054, 17951352, -13131326, 8735427, -14075682, 26503706, 16112570, 9170292, 19696184, 69403448,
--16193100, -5451387, -19128174, -22376780, -1153736, 29152090, -22575958, -3010772, 21099026, 22258132,
-26743150, 15352361, -17524540, 4524211, -9533754, -2194728, 15757698, 4918812, -946503, 11460046,
--20647518, 1332514, 774168, 5618354, -4311074, -5493800, 13222057, -4812511, -2735894, 14055817,
-18618684, 14423574, 6840809, 6060736, 12450573, 3466576, 1393180, 8200703, 1307818, -4860293,
-4126390, -231928, -787053, -23785528, 6232535, 15133854, 25426744, -5943698, -6563784, -8369818,
-13197361, 14173929, -31609886, 3661997, -13788993, -2244121, 2310693, 1867237, 5508833, -8137890,
--16961362, 13558675, -4235375, 31180926, -28660854, 7038378, -2245194, -9283572, -8478802, -4261682,
-9414031, 5774584, 6332393, -1646046, 17335562, 2938831, -23131620, -18190260, -2689187, -10736344,
--13391171, 2892124, 14296336, -2149094, -3496104, -21130702, 10151155, -3473018, 21310018, -7414724,
--41590852, 4975720, -12479564, -6320581, -148713, -33645164, -17870286, -28907278, 303869, -2164664,
--8311299, -38237020, -15750182, -3393024, 19733764, 22016002, 1543504, 1641751, 10516764, 2405182,
--26469346, 22968948, 31077310, -13619341, 4491999, -13641353, 5408975, -124554, 23609972, -26794690,
--19691352, -61269320, -21992916, 15446313, 24427090, 17573396, 15673409, -15080704, -5281199, 12244415,
-11454678, 26616986, 12328704, 11393474, 20183662, 5213554, -22837414, -24104430, -33050848, 13733158,
--21235928, 1897302, -18662706, -28230820, -43188044, 6155225, -12736189, -13331042, 3501472, 4132832,
--1953673, -6085969, 559420, 14229764, 9470940, 3728569, -5804112, 10333154, 22708566, -4967667,
--12955232, -10207527, 10952703, -5874979, -5542119, -20426864, -20270098, -15154792, -34383896, -1716913,
--284005, -13442711, 5645198, 9379135, 6319508, 17144972, 4292283, 20211042, 912144, 5727339,
-21648782, -10515154, -1013612, 3539053, -597537, -15057082, -987843, -2687039, 26148298, -1423245,
--11465952, 8616778, 2874944, 8086887, 16579648, 5830955, -49035104, 20628728, -14633490, 1868311,
-34892316, 29226716, -11558294, -4854924, 17967996, -11154030, -11784317, -9771051, 2408403, -3332895,
--1327682, 4211216, -3858491, 17234630, 40954660, -17258252, -32133334, 32104344, -24906516, -6670084,
-192737, 40056476, 3042448, -12059731, 11718281, 11201812, -41925860, -12257837, 6834367, -1577864,
--19958176, -1449552, 7779797, -61438972, -28543816, 30506078, -30431990, -33718176, -20955146, 24925842,
--32408750, -50516868, 50806780, -14940044, -31976032, -1803886, 19771346, -19446538, -34319472, -800475,
-15450071, -1715303, -44120052, 10403485, -766652, -19646792, 46141372, 43639016, -3425773, -17670032,
--34454764, 53194244, 7274064, 9467719, 18226768, -12975633, -51650204, 23306640, 39278012, 31627602,
--19633370, 11483669, 42862164, 25068650, -29845190, -6446746, -23435490, 10602664, 6339372, 27172648,
-26594974, -31977106, -1213865, -3224447, 4716411, -12338904, 12792560, -8028368, 7369627, 6904160,
-5368172, -8884677, 6940131, -13353053, 22276922, -11157788, -5796059, 14421963, 12328704, -12707198,
-1983738, -5810017, -15137075, -7821673, 5987185, 12129525, 7199976, -11927661, 6781754, -7562901,
--18801220, 1214939, 3301219, -2701535, -1584306, 13077639, 765041, 1741072, 5968394, -1384590,
-3198677, -19746650, 15066745, -50758460, 5582921, 47869020, 26055956, 6707129, -625992, -8649527,
-12422119, -16860968, 39728448, -3016678, 10570988, 14702747, -13710072, 555125, -1760400, -15123654,
--96637, 5771363, 22261352, -51540, -13881334, 6908992, 17900350, -2938295, 28395102, -22056804,
-4565014, 6446746, 7370701, 24697136, -13562433, 2212982, -989453, -32135482, 4508642, -10477036,
--17647484, 7567733, -6760279, 25336012, 18147848, -13216688, -28933584, 13758928, 2710124, 5831492,
-16034187, 35152160, -6075768, 7328288, -14350559, 20200842, 14317273, 15118285, -16834662, 23132156,
--8027831, -10011569, -20298552, -1743757, -8085813, 29940754, -22377316, 1680406, 7279970, -6740415,
--13702019, 41787348, -1930588, 9979357, -3935801, 5108864, -3574487, 11780558, -1562294, -4995584,
--3462281, -4384088, 13840532, 9786620, 13022341, 7401840, 4107063, -8892193, 9605694, 870268,
-5303211, 4722854, 11704323, -1550483, 365609, 2008434, 3714073, 4006668, 8707509, -7131257,
-5474473, 4938676, 4259534, 3738769, 2937221, 8693551, 3264712, -11121818, 6773701, 7933342,
-8121783, 3686693, 8727910, 2549600, -594853, 5101348, 2811056, 6453189, -558346, -5464272,
-1341104, 8888435, -4483409, 3778498, 410706, 9669045, 8522289, 3463891, 5975374, 9006010,
-4098473, 16758962, -44322452, -124505736, -118375744, 51528872, 5108327, 113922400, 241282672, 52872120,
-97284768, 51912732, -178860160, -80035640, -120267672, -176675088, -11775190, 20932596, -83414168, 74243880,
-126297808, 77334648, 217448832, 133450536, 1306207, -20072530, -76833208, -191960880, -155448832, -66990216,
--147242752, -43445204, 84325776, 25062208, 21416318, 199131328, 76914272, 48517024, 184385632, 8739185,
--9211631, 84969488, -42204496, -151926944, -73450920, -151816352, -221653600, -24566676, -100628936, -82245400,
-71108552, 137661216, 63807108, 243256752, 193936032, 112380504, 147317920, 49868864, -72028216, -111203144,
--148099056, -237423648, -190202096, -127729640, -108671264, -33877092, 82819320, 125566056, 140120624, 188135680,
-158572336, 74216496, 27159226, 40767828, -63394256, -97437240, -69020664, -145565568, -109362216, -18890340,
--65227668, 25909928, 106700944, 38029788, 54522464, 77349680, 8389145, 4588636, -18709952, -72961296,
--38030860, 562641, -28956132, 22456774, 31050466, -12600897, 39333848, 33607584, -52625696, 40310416,
-47283296, -33292438, 76962592, 11638825, -75373992, 52791592, -41255844, -147731312, -24206972, -89821728,
--108755016, 67185096, 8735963, 17026324, 142314816, 90204512, 100758856, 161437088, 119086024, 39277476,
-17263084, -112615656, -204296560, -203641040, -203811232, -193120528, -117455008, 5947456, 111295488, 162829184,
-223603520, 207243984, 196269264, 154291872, 26627724, -71069896, -77388328, -163993664, -202383696, -122074784,
--108815144, -60921964, 11917461, 29442000, 36089536, 69954816, 62122944, 57802744, 82423640, 67642512,
-43942348, 37842420, 10064719, -22348862, -38424924, -44301512, -45687716, -26032334, -13195750, -9221832,
--8396661, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-12868796, 6489159, -2356327, 5675263, -2819109, -2884071, -5756867, 1356136, 1220308, -258235,
+93416, -646393, -4403415, -512712, -2517925, -2896956, -2744484, -106837, 330712, -221191,
+-495532, 2181844, -606127, -6664179, 4145180, 2057826, -2269353, 663036, -64425, 68183,
+935766, 4279398, -2386928, 249645, -7549479, 3759170, 743029, 1695438, 2609730, 4236449,
+-2370822, -1807108, -857383, -3801046, 304406, -576063, 3281892, -1769527, -224949, -1842541,
+-2105608, 3991635, -3012383, -1461363, 375273, -2739116, 2282775, -107374, -1284195, 2466385,
+4533875, 279173, -176094, -642098, 3876208, -3857954, 33823, -607738, 2028298, -954020,
+-1765232, 4211216, -74625, 884226, -1171452, 869194, 2267206, -1823214, -2542621, 122943,
+2213519, 3712462, -1674500, -1139777, 914828, 195421, 568009, -1711545, -550293, 1011465,
+-230318, 709207, -1349157, -425739, -832687, -1169305, -842887, -788127, 591095, 98784,
+-590558, 587874, 407485, -539555, -166967, -137439, -731755, -1319629, -369904, -5369,
+270583, 706522, -15343771, 2608119, 1813013, 5377836, -2108292, 1629403, 6252936, -2422362,
+1708860, -3794604, -5567352, 2036351, -3790309, -4326643, -4340065, 1305670, 1655173, -7405598,
+4352413, 2884071, -1260036, -2712809, 1731946, -675921, -1686848, 534187, 2454037, 1813013,
+3920232, 754304, -1194001, 4033511, -2030446, 8799851, 1981591, 5420786, 2090039, 4755603,
+2118493, 3276523, 1774895, 389231, 182536, 6658273, 1129576, -1072131, 440771, 3514357,
+2605435, 380105, -297963, -1372242, 742493, 8123394, 2331094, 3752728, -3926137, -2024003,
+-4140885, -2622078, -4019553, 3015604, 1906966, -2573222, -1829656, 1805497, -1915019, 2015413,
+-900869, -614717, -2779918, -4693863, 2019172, -7620883, -1075352, -1632625, -1926293, 406411,
+-1777043, 348966, 2869038, 1380832, -1952600, 345745, -1548336, -3325379, -535797, 1581622,
+-161598, -2570538, 932545, 459562, 973884, 1742683, 70330, 234613, -1203128, -741956,
+-176094, -32749, 632971, -1398549, -1182727, 8637179, 11900818, -3645354, 3200825, -5910949,
+-311922, 353798, 15205795, -1554241, -4014721, -6551973, 156766, 4363687, 6997039, -1575716,
+-9173513, -2639258, -3494493, -2505577, 3124052, -672699, 5844914, 651761, -3297461, -7422241,
+2232846, -695248, 1731409, -894964, 845035, 3638374, 1341104, -9339406, 1131724, 6009196,
+2962454, 739271, 1445793, -1500554, 4170950, -5522254, -531502, 4555887, -3134789, 537,
+7409356, -3418794, -341987, -2508798, 4561256, -4789426, -3546032, 2216203, -4958540, -2449205,
+6470905, 3798899, -5767068, -2130304, -858993, -1433982, -2624225, 2073932, -2251100, 2378875,
+-62277, 353798, 1051193, 4877472, -545998, 6724308, 3484829, -5164698, -2370822, -2521146,
+4049081, 1203128, -262530, -2075543, 5418638, 2083059, -90731, -117575, -1342177, -1241782,
+1615982, 622770, 1791538, 4219269, 1544578, -228170, 287763, 340376, 1380832, -280784,
+533650, 2017561, 451508, 2496987, 96100, 884226, 1291175, 1530619, 562641, 969589,
+1124208, 914291, 1449552, -438624, 456877, 984084, 1484448, -125628, -1102733, -1314797,
+339302, 28390270, -10488847, 5761699, -8010114, -831076, 283468, -581968, -4245575, 2327336,
+3267933, 796180, -3088082, -6575595, -245350, 4020626, 2856690, -2890513, -4950487, -397284,
+4435628, 8100309, -4367982, -586263, -3297461, -7087233, 794569, -3565360, 2152852, -2639794,
+5515812, -9678709, 6536940, -428960, -5761162, 1403381, 2428267, -683437, -3049964, 188442,
+7573638, -286689, 1249299, -1072131, 2900714, 1333587, -1785096, -2845953, -6221797, 4033511,
+-1299765, -1835025, 2397666, 38655, -10459856, 8036421, -11258183, -6504191, -7971996, 1714766,
+-930934, 4775467, -2607582, 2537252, -4796942, 2303176, -1251446, -1970316, -5292474, 3237332,
+3735011, 6368900, -1544578, -618475, 1734630, -1946694, -1137630, 1218697, 3693672, -4888747,
+2420751, 3494493, 3903589, -6193343, -5043902, 2107218, -3149822, 1600949, -43487, -382789,
+553514, 765041, -252866, 1446330, -1789928, 862215, -548145, 3601330, 227096, 871342,
+826244, 216359, -1410897, -139050, 367757, -411780, -22416508, 2263448, 216896, -1921461,
+-3474629, 3899830, -3058554, 2588792, -824634, -57982, 3600793, 4695473, -2919504, 3454228,
+-1032403, -1932735, -6302865, -325881, -8508867, -6249715, 7452305, 2649458, -2913062, -1074279,
+-896038, 5169530, 2717641, -2683281, 4709432, 3129958, 1835562, 1620276, 1994476, 3586298,
+3081639, 3044058, 8336532, 7504382, 3230352, 819265, -5209259, 5767068, -7730941, 1511829,
+-2165201, 6248641, -4735739, -6153078, 10539313, -2471217, -5669357, -5055177, 7841000, 4810900,
+274341, 4027069, 5688148, 2603824, 9207873, -561567, -1468879, 5220533, 3185792, 295279,
+193810, -4809827, 2864206, 2980171, 7430294, 3017752, 4621385, -2873333, -3838627, -8139500,
+-1881196, -4408247, -3509525, -3714610, 4090956, -159451, 301721, -2393908, -2768107, -778463,
+-2437394, 737124, -1647657, -2707977, 1088774, -279710, 84289, -2535641, -384936, 89121,
+-3191698, -450435, -774168, 196495, -1444720, -1664837, -1040993, -627602, 37581, -545998,
+483721, -759136, 867583, 197032, 764504, 1725503, -420907, 1822677, 356482, 1191317,
+-864899, 358630, -1612223, -609885, -290447, -1933809, -615791, -960462, -29869350, 7989713,
+-6392522, -9442486, -9336722, 5761162, -6935299, 5086315, -8706972, 4763119, 4065187, 2491081,
+-9164923, 6244346, -131533, 3772055, -7596724, 4198868, 8942122, 6830609, 227096, -3231963,
+1240172, -1957431, -9684078, -1978906, -4664872, 2189897, -6098854, 5197984, 5098663, -2044404,
+-245887, 7160784, -1595580, 4851166, -3942243, -6283001, 3241627, -130460, 3354906, 8813810,
+5356361, -352187, -15425912, -7408282, -2160369, 2115808, -2391223, 8461622, -13404593, 4214437,
+1795296, -157303, 4174171, -1756642, 6478958, -14052596, -6570226, 5413807, -14122389, -2636573,
+6558952, 2334315, -3136937, -9427990, 3470871, 6047314, 4431870, -1702418, -9890236, -874026,
+52613, -1142998, -549219, -4855461, 2167885, -7753490, 4731444, 645319, -4608500, 883690,
+-5538897, 395137, -6620692, -1870995, 2290828, 2408940, 192737, -659278, -2296197, -1739999,
+439160, -3901978, 3100430, 214748, -1898376, -12885, -3369402, -2665027, 724776, -1402307,
+1793149, -1788317, -1005022, -1181116, -1290638, -2290828, -403190, -1290101, -523986, 607201,
+-549219, -1047972, 811212, -438624, -894964, -921807, -2027225, -1434519, 247497, 1033477,
+-324270, -14036490, 1513976, 2340220, 10994579, -10384157, 12004970, 3404835, -971200, -2818572,
+-1298691, 1116692, -8783745, -1677722, 2808372, -2880313, -5159330, -1387811, 8297340, -8573292,
+-1874753, 8601209, 29528, -3400004, 3020973, -4172024, 6313602, 2790118, -92879, 3173444,
+-3684545, -5768141, -427349, 454193, 4717485, -10121627, -5481452, -4458176, -3148748, -2987150,
+-3090229, 1537598, 477278, 861678, -7584376, -7747048, -6189048, 245350, -9739375, -5344013,
+5794448, -3911105, 1259499, 645856, -210453, 2455648, 3423089, 3317325, 3877819, 5763309,
+-1045288, 6234145, -430034, 3169686, -552440, -3947075, -271657, -6386080, 3932580, -7479149,
+6980933, -8348880, -167504, -8611409, 780073, -8651138, -8404714, 4002910, 11471858, 3522410,
+-7470559, 5345624, -46171, -3232500, -2006824, -3387656, 4532264, 4000762, 5583458, 1070521,
+4341675, -3652333, -450435, 4363150, 454193, 1391569, 795643, -2029372, 2525441, -167504,
+905164, 3882651, 1061931, -879395, -2337536, -975494, 1515050, 1633161, 1183800, 519154,
+-1837709, 217970, -440771, -3913789, 3817689, 534187, 1353989, 270583, -1015760, -1800665,
+1297617, -1835025, -992137, 39034272, 471373, -11252814, 1777580, -6109054, 15565498, -2545842,
+4383014, 1139240, 759136, -13675176, -7004018, 7583302, 6670084, -10776073, -1887101, -328565,
+9596031, 4714801, 3655554, 9401683, 1486059, 614717, 8169028, -2857227, -12424804, 1836099,
+9512279, 5624797, -3593277, 186294, 6635188, 4038343, 1818919, -358093, -6968585, 3389803,
+-7580081, 750546, -14276471, 3739843, 4405026, -1161252, -6566468, 9062381, 4774930, -1884954,
+7058779, 3246459, -5939403, 10880763, 1180579, -3865471, 2534568, 11157251, 1745367, -294205,
+-9306657, -5439039, 1313723, 3779034, 12730820, -4200478, -5034239, 1097901, 6953015, -4491999,
+-5507222, -501974, 9256728, 6615324, -2295660, -7104950, -362388, 8072391, -3205119, 16769700,
+3665755, 2502355, -8575976, 7283191, 451508, -1859184, -4352413, 426276, -2425583, 445603,
+10386842, 4727686, 3792993, 1978906, 1214939, 170188, -658741, 959388, 2103460, 3741990,
+595927, 673773, 1393717, -2841658, 79457, 1232119, -621697, 3258807, -2291902, -64425,
+-1112933, 1283658, 5529234, 1887101, -1702955, -408022, 1332514, 471373, 1859721, -351650,
+-2356863, 2203318, 1990181, -1854889, -483721, 4867809, 1681480, 8798777, 4672388, -13883482,
+-1445793, -7026030, 13937706, -5244692, 6491306, 1231582, 8724152, 3431679, 1285269, -732292,
+3538516, -4003447, -5934571, -16429324, -12155294, 3998615, 10798622, 14486925, -5346161, -7103339,
+-6242735, 3218004, -3425237, -758599, -594316, 1934346, 2201708, 9664750, -5166846, 889595,
+2379949, 4709432, -4689031, -3497714, -7733626, -5259188, -5392869, -9221832, -23351200, -293668,
+-3131568, -10055592, 2249489, -1154809, -12665322, 4231617, -10740103, 2731599, -1305670, -902480,
+5447629, 7035157, -202937, -10494216, 3084324, -6595459, -7252053, 10059350, 9106941, 10132902,
+-3310346, 1624035, 1351841, -5202279, 808528, -2510409, 15909096, -2647847, -1631551, -1596654,
+-107911, -9730785, -12016245, 2838974, -870805, -913754, 2725694, 17285632, -2128156, -8128226,
+-3409667, 9065065, -1312113, -2967823, -2601677, -205085, -7357279, 1763621, -1400696, 1358820,
+-3707631, 144418, -4667019, -416075, -278636, 1875827, -1945620, -984084, -2841658, 3847754,
+268972, -2860985, 657667, 1258962, -3011846, 753767, 1225676, 4707821, -954020, 1069447,
+3381750, 2044404, -1697586, 1979443, -3564286, -5905580, 753767, 530965, -2182380, -5508833,
+-1081258, -1383516, 4900558, 1766305, 3304977, -595390, 4115653, 4501126, -15300284, 5615133,
+1836099, 16104517, -10882910, -6174016, -3633542, 8587787, -8251169, -7925826, 7107634, 4779225,
+-8346732, -8412767, -8243116, -18403934, 12037183, 11305965, 11983496, -5194763, 3769371, 11900281,
+-17304960, 4295, 11312407, 10495826, 4742181, -45634, -5559299, 1138166, -2692408, -14964740,
+1867237, 4079145, 2166811, 9898289, -8765491, 926102, -16358457, -2087354, 3200825, -8987219,
+3442953, 2742874, 7277822, 8916889, 12396349, -2553895, -4904853, -15009300, -10731513, 4614406,
+22005264, -6848326, -943819, -10166188, -5407364, -8067023, 4719632, 4871030, -1721745, 711891,
+-16152298, -2135673, 10886131, -8720394, -7580081, 6467147, -2938831, 9467182, 2314987, -6966974,
+1093606, -10522133, -3060164, -2782065, 20258286, -2034741, -5971079, 4440460, 4110284, -1785096,
+-3482682, -1038845, -2806224, -3773666, -3544422, -2688650, 1392643, 1575179, 3238405, -845572,
+-84289, -1956358, 1948305, 513249, -5239860, 1393717, -80531, -563178, 1847910, -115427,
+-2877628, -2811593, -6762426, 2244657, -2152852, 1988570, 2534568, -3161633, 1410360, 921271,
+-709743, 2555506, -25233, 7296076, 987843, -1318555, 138513, -2114198, -417149, 1276142,
+170725, -629213, 557809, -2843268, 2245194, -9569724, 21889838, -10900090, -5649493, -513249,
+-802622, -15664819, 927176, -11553462, 8222178, -21650930, -3221762, -6967511, 7290170, -7490423,
+-7546258, -18325552, 12228309, -7570954, 4980552, -5936182, 3603478, 9663140, -7139310, -12031814,
+-4098473, 8137353, 16927002, 5408438, 7043747, 788663, -17198660, -9222369, -9306120, -4799626,
+2919504, 15473157, 6616397, 8990977, 8404177, -2424509, -3690988, -5271536, -14388677, 727997,
+-10063645, 15447924, -7161321, 10624675, 2211908, -5634997, 3504693, -3767760, -4927401, -8490077,
+12658342, 3286724, 21437256, 4661114, -23225572, -5822365, 7349763, 5973763, 3314104, -1358820,
+1980517, 24178518, 12045236, -4146791, 2534568, -6575595, 17485348, -724239, -762894, 6782827,
+-15541339, -6728067, -5334887, -16596291, -19673634, 3835406, 6915434, -1886028, -9737228, -2580739,
+-3156264, -7638600, 34360, -1602560, -6090264, 5916318, 9074729, -2068027, -1440962, -1440425,
+-3692598, 2570001, 519154, -1102733, -1949915, -1655173, -1184874, 2958696, -1872606, -4377646,
+-1161789, -272730, 1272384, 796716, -2750927, 6409702, -2243047, 3866544, -885300, 3216931,
+1609539, -1116692, -4531191, -4299799, 1325534, -1222992, -6789270, -2521146, -1771137, 2373506,
+483184, -574452, 1722282, 2976412, 891743, -1902671, -2887292, -13333726, 8060580, 17949742,
+-1707786, -722628, -362925, 16687022, 5202816, 4039954, 2891050, 2019172, 2876554, -6501507,
+1266479, -20558398, 3001109, -9879499, 8652212, 21131776, -2699387, 1588601, -16593069, 22274774,
+10814191, 9495099, -2732673, -12164958, 1504312, -4114579, 11307575, 8142185, -10071698, 595390,
+5978595, 4261682, -7791608, -6886443, 32583232, -7493644, -5650030, 6920803, -8265128, -5986648,
+10375030, 10200010, 422517, 3961571, 3707094, -12541305, -6249715, -477815, 4311074, 11092290,
+2743410, 2666101, -14219026, -1283122, 4213363, -19366008, 4271882, -5341866, -1951526, -3520800,
+5724118, -5716065, -10538239, -11210938, -17837000, 2319819, -7226283, -3419868, 11433740, -3808562,
+3711926, -20064476, -35433, 18608482, 4337380, -9295920, -5571647, 11331197, 5772973, -12283606,
+6930467, -8876087, -6897718, -2875481, -1734093, 4275103, -1200443, 796716, -1917166, -2394444,
+1486059, 2313377, -3148748, 2741800, 8179229, 1337882, -1127429, 3572339, 5164698, -2134062,
+3510599, -2238215, -3189550, 959925, 2330557, 6867653, 1783485, -599685, 2463701, -971200,
+3498788, -1917703, 3214783, -2393371, 1059783, 2905546, 813896, -4640712, -2694018, 8698919,
+-3674345, -6840273, 3391414, 1870995, 2524904, -1753957, 11043972, 3293166, -10327786, -10369125,
+24533926, -14740328, 3798362, -9434969, 28929826, 6121402, 5319854, -9293235, -10993506, 1022202,
+8238284, -8913668, -14198088, -8448738, -20629264, -8055211, -12127914, -52613, -27713814, 1908039,
+14954539, 9201967, 12215961, -8581882, 3157875, 13276818, -1580011, 9620190, 3549254, 15009300,
+-7581154, 12513924, 9934259, 7105487, 16256451, -9148817, 9668508, -5008469, -5832029, -3866544,
+3564823, -31614718, -10141492, -19657528, 22695680, -14343580, -16210280, -3476776, 12790949, 344134,
+-5818070, 17867600, -6429029, -5681168, -13015362, -31967442, 1513976, 2961380, 13282186, -13407277,
+2684, -8176007, -10816338, 17086454, -3487514, 8558796, -18622442, -18096308, -11322608, 14246407,
+-1504312, -9024263, -9614284, -380105, -15800648, -10759967, 1495722, -6607807, -11793980, 17344688,
+-23834922, -22669912, 5893232, 105227, 9980967, 1160715, -1131724, -7302518, -6497212, 1078574,
+-11289858, -4518306, 9549323, 1293322, 1605781, -5541045, 5638755, 2131378, -6183143, 2906082,
+-4593468, -904091, -4709432, 4096862, -6253473, -1525250, 4197794, 8283918, 886374, 377957,
+-9015673, -2674691, -650688, 1350767, -1361505, 7691750, -354872, -2873333, 4854387, -5640903,
+-5265630, 3280281, 6949794, -1901597, -4986994, -6662568, 5343476, 4397510, 8628052, -11963631,
+-165893, 15846819, 2007360, -4900021, 8134131, -13025025, 25678536, 16091095, -242129, -11865921,
+-13416941, 5478231, -3447785, -1287953, -795643, 23420994, -11631845, 353798, -8121247, 8569533,
+-14696304, -13468481, -26441430, 6026913, -10802380, -14892799, -1902134, -25133612, -12404402, 6994891,
+5247377, -3514894, 12949863, 1140314, 15716896, -7056632, -21885542, -3387119, -16059420, -3118683,
+-4890357, -20968568, 2637647, 16950626, -48029008, 5999533, 24696, 11818676, -2473901, -14989436,
+-28538448, 11272142, -3585761, 10531260, 6252936, -3531537, 16506633, -20711942, 28855200, -7323456,
+16056735, 33717104, 13423920, 23974508, 9358197, 6249178, -3372086, 12495670, -4760435, -13191992,
+-17796196, -11485279, -687195, 9912248, -1723356, -7783018, -11080479, -9882720, 13284334, -6007049,
+-4912369, 11946988, 2094333, 8988293, -1023276, -1352378, -3733400, 2084670, 4452271, -6172405,
+-1082332, -15044197, -10927471, 7342784, -3742527, -411780, -2273648, -314606, -5812702, -9011378,
+6429029, -5433134, 8379481, -8665633, -4058744, -981937, -6140730, -3067144, 4180077, 1751273,
+10178536, -2594697, -6204081, 3859028, -12330314, 192200, 1414655, -1913945, 718333, -1372242,
+5951214, 8683350, 1400159, -313533, -4274566, -7268159, -3601330, 418759, 14148696, 7131257,
+-7256347, 40425304, 32943472, 29687350, -6747931, 89121, -25183004, 18844170, 23369990, 7960722,
+22574884, 9023726, 7681549, 7935489, -3976066, 3136400, 6253473, -5738613, -24264418, -14722611,
+-888521, -16112033, -18786724, -44126492, 9707163, 7644505, 11514807, -8436390, -3011309, -5857799,
+318901, -13788993, -389231, -10502806, 12226698, 10188199, -6299644, -8542153, -23272280, 39223252,
+-12239046, 7758859, -13422, 2542621, 6259915, -16189342, 19552302, -9841918, 6684043, 4401805,
+-14609331, -15036681, -2787971, -1297080, 9082245, 41401876, -3457986, 6175626, 1371705, 12503187,
+8882529, 9321153, -7311645, -2157147, 3578245, -19975356, 4065187, -17090212, -27332098, 9549860,
+867583, 2193118, -20010790, -48067128, 20797306, 21751324, 14969572, -27247272, 25967910, 27624156,
+10208064, 8036958, 243203, -7917236, -18166638, 13631152, -12801687, 863288, 223875, -7174743,
+5485210, -13009456, -1366337, -2512019, 6452652, -3577171, -6013491, -8065412, 12421045, -6769942,
+-2967286, 3286187, -11174968, 6257231, 5073967, -3815542, -3918084, 1137093, -10382547, 9650792,
+-3491272, -2536178, -878321, 872415, 7063074, -5512591, -13127031, 3968013, -7323456, -2201171,
+-7505456, -6575058, 1012002, -5302674, -2474975, -4933844, 16830904, -7394860, -13702556, 2233920,
+-4927401, -23708756, -47311212, 39245800, 6303938, 6959995, -15766288, -11353209, -50333260, 13904957,
+35982700, 11028939, -31880468, -15953656, 5170604, -12414066, -7881802, 14744086, -16598438, 9262097,
+8264054, 6834904, -18476950, 6594923, 5713380, -8673686, -17292076, -10012643, -6659347, -4479114,
+-16495359, -14228153, -7827578, -17009144, 13406740, -6352794, -21950504, -7583839, 13460428, -2789045,
+-15221901, -8382166, -7770133, -57445, -12066174, -7279970, -19992536, -18996640, 8085813, -6760279,
+24937116, 16389058, 1601486, 14881525, -21805012, 14095546, -20697984, 17390860, -2982855, 8895951,
+-9233106, 30904438, -7708930, 17307108, -4431333, 25421374, 10234907, 6186364, -26240102, 28460600,
+22778360, 9921911, 10583336, -20463372, -3908957, 8378945, 13981729, -3624416, 3374234, -22602802,
+14503568, 24800752, -547071, -17748416, -1036698, -11734388, -10053982, 4862977, -59056, -4896263,
+5729487, -12948790, -3048890, 507880, 3688303, -8923868, -12266427, 4731444, -5976447, -11565273,
+-20772610, -1511292, 6445672, -1713692, -10462003, -12592307, -3875134, 8048769, -8677445, 3354370,
+4646618, 1338419, 3415573, -1038845, -5583458, -4676146, -1569274, 5834713, 1941862, -2205466,
+-7798587, 10728828, -6905771, -5983963, -5041755, 2202781, 12422119, -8340827, 12232067, 10393821,
+-4118337, 3838090, 6514392, -32829656, 28046674, -3228205, 13476534, -18068928, -5818070, -4432943,
+-4152160, -4145180, 16408923, 574989, -13533979, 11053098, 1952063, 8010651, 13916231, 14088566,
+799938, -11951283, 49597744, -13458280, 38157564, 437013, 2347737, -21415780, -9365176, 3745748,
+18513456, 9297530, -5922223, 15288473, 3160022, -20649130, 3567507, 3258807, 21537650, -574989,
+12929999, -15590194, 96100, 14748918, 7313793, 12386149, 32314260, 26058640, -3930432, 13642427,
+-1918240, 25606058, -20231980, 17206176, 6979322, -624918, 15304579, -7708393, 39567924, -6499896,
+19172198, -14031658, -12659953, 979789, 42146516, 14024679, -38912940, 34936336, -581431, 12472048,
+-29299730, 10350871, 3517041, -58573152, 24864102, 45370960, 17424682, -18463528, -11716134, 9481140,
+44580688, 25617332, 34020436, -11945915, -16279537, -14637785, 7300371, 9583146, -1336809, -16569447,
+-7346542, 21420076, 3971771, 5182415, -7035694, 10060961, -2248952, 4790499, -4289062, -5302137,
+-6531035, 13103408, 21578990, 21049098, 4925254, 11370926, 19857782, 13379360, 14078366, 19195820,
+10931766, 18353468, 13959717, 5349382, -26927298, -4909685, -12424267, 8023536, 16176994, -17756468,
+-6150393, 21809844, 12064026, 2841121, -4665945, 18527416, -13861470, 3689377, 19085760, 15127412,
+8558259, 10288594, 11790759, 9917616, 11691975, 7698729, -8935143, -4364761, -15902653, 20333986,
+3195456, 13576928, -10773925, 27122718, -9361955, 12703976, 4294968, 5734318, 4068408, 2486249,
+-28151900, -16248935, 287226, 2678449, 19429358, 16071231, -22943178, 2469069, -12589623, -11423002,
+5798743, 1530619, -7787313, 9643275, 37418828, -24625732, -1858110, 57242252, -34665216, 4187593,
+20517058, -10379325, -8296266, 11927124, 18963892, -20448876, 10239739, -37165424, -3885872, 55640228,
+2567854, 15817291, -5739687, 30438970, 30665530, -8360154, -375273, -14353244, 3677566, -10598369,
+-26933204, -17365090, -32163400, -23809152, 36144296, 14508400, 10817412, 47889960, -33740728, -20047834,
+6291054, 17951352, -13131326, 8735427, -14075682, 26503706, 16112570, 9170292, 19696184, 69403448,
+-16193100, -5451387, -19128174, -22376780, -1153736, 29152090, -22575958, -3010772, 21099026, 22258132,
+26743150, 15352361, -17524540, 4524211, -9533754, -2194728, 15757698, 4918812, -946503, 11460046,
+-20647518, 1332514, 774168, 5618354, -4311074, -5493800, 13222057, -4812511, -2735894, 14055817,
+18618684, 14423574, 6840809, 6060736, 12450573, 3466576, 1393180, 8200703, 1307818, -4860293,
+4126390, -231928, -787053, -23785528, 6232535, 15133854, 25426744, -5943698, -6563784, -8369818,
+13197361, 14173929, -31609886, 3661997, -13788993, -2244121, 2310693, 1867237, 5508833, -8137890,
+-16961362, 13558675, -4235375, 31180926, -28660854, 7038378, -2245194, -9283572, -8478802, -4261682,
+9414031, 5774584, 6332393, -1646046, 17335562, 2938831, -23131620, -18190260, -2689187, -10736344,
+-13391171, 2892124, 14296336, -2149094, -3496104, -21130702, 10151155, -3473018, 21310018, -7414724,
+-41590852, 4975720, -12479564, -6320581, -148713, -33645164, -17870286, -28907278, 303869, -2164664,
+-8311299, -38237020, -15750182, -3393024, 19733764, 22016002, 1543504, 1641751, 10516764, 2405182,
+-26469346, 22968948, 31077310, -13619341, 4491999, -13641353, 5408975, -124554, 23609972, -26794690,
+-19691352, -61269320, -21992916, 15446313, 24427090, 17573396, 15673409, -15080704, -5281199, 12244415,
+11454678, 26616986, 12328704, 11393474, 20183662, 5213554, -22837414, -24104430, -33050848, 13733158,
+-21235928, 1897302, -18662706, -28230820, -43188044, 6155225, -12736189, -13331042, 3501472, 4132832,
+-1953673, -6085969, 559420, 14229764, 9470940, 3728569, -5804112, 10333154, 22708566, -4967667,
+-12955232, -10207527, 10952703, -5874979, -5542119, -20426864, -20270098, -15154792, -34383896, -1716913,
+-284005, -13442711, 5645198, 9379135, 6319508, 17144972, 4292283, 20211042, 912144, 5727339,
+21648782, -10515154, -1013612, 3539053, -597537, -15057082, -987843, -2687039, 26148298, -1423245,
+-11465952, 8616778, 2874944, 8086887, 16579648, 5830955, -49035104, 20628728, -14633490, 1868311,
+34892316, 29226716, -11558294, -4854924, 17967996, -11154030, -11784317, -9771051, 2408403, -3332895,
+-1327682, 4211216, -3858491, 17234630, 40954660, -17258252, -32133334, 32104344, -24906516, -6670084,
+192737, 40056476, 3042448, -12059731, 11718281, 11201812, -41925860, -12257837, 6834367, -1577864,
+-19958176, -1449552, 7779797, -61438972, -28543816, 30506078, -30431990, -33718176, -20955146, 24925842,
+-32408750, -50516868, 50806780, -14940044, -31976032, -1803886, 19771346, -19446538, -34319472, -800475,
+15450071, -1715303, -44120052, 10403485, -766652, -19646792, 46141372, 43639016, -3425773, -17670032,
+-34454764, 53194244, 7274064, 9467719, 18226768, -12975633, -51650204, 23306640, 39278012, 31627602,
+-19633370, 11483669, 42862164, 25068650, -29845190, -6446746, -23435490, 10602664, 6339372, 27172648,
+26594974, -31977106, -1213865, -3224447, 4716411, -12338904, 12792560, -8028368, 7369627, 6904160,
+5368172, -8884677, 6940131, -13353053, 22276922, -11157788, -5796059, 14421963, 12328704, -12707198,
+1983738, -5810017, -15137075, -7821673, 5987185, 12129525, 7199976, -11927661, 6781754, -7562901,
+-18801220, 1214939, 3301219, -2701535, -1584306, 13077639, 765041, 1741072, 5968394, -1384590,
+3198677, -19746650, 15066745, -50758460, 5582921, 47869020, 26055956, 6707129, -625992, -8649527,
+12422119, -16860968, 39728448, -3016678, 10570988, 14702747, -13710072, 555125, -1760400, -15123654,
+-96637, 5771363, 22261352, -51540, -13881334, 6908992, 17900350, -2938295, 28395102, -22056804,
+4565014, 6446746, 7370701, 24697136, -13562433, 2212982, -989453, -32135482, 4508642, -10477036,
+-17647484, 7567733, -6760279, 25336012, 18147848, -13216688, -28933584, 13758928, 2710124, 5831492,
+16034187, 35152160, -6075768, 7328288, -14350559, 20200842, 14317273, 15118285, -16834662, 23132156,
+-8027831, -10011569, -20298552, -1743757, -8085813, 29940754, -22377316, 1680406, 7279970, -6740415,
+-13702019, 41787348, -1930588, 9979357, -3935801, 5108864, -3574487, 11780558, -1562294, -4995584,
+-3462281, -4384088, 13840532, 9786620, 13022341, 7401840, 4107063, -8892193, 9605694, 870268,
+5303211, 4722854, 11704323, -1550483, 365609, 2008434, 3714073, 4006668, 8707509, -7131257,
+5474473, 4938676, 4259534, 3738769, 2937221, 8693551, 3264712, -11121818, 6773701, 7933342,
+8121783, 3686693, 8727910, 2549600, -594853, 5101348, 2811056, 6453189, -558346, -5464272,
+1341104, 8888435, -4483409, 3778498, 410706, 9669045, 8522289, 3463891, 5975374, 9006010,
+4098473, 16758962, -44322452, -124505736, -118375744, 51528872, 5108327, 113922400, 241282672, 52872120,
+97284768, 51912732, -178860160, -80035640, -120267672, -176675088, -11775190, 20932596, -83414168, 74243880,
+126297808, 77334648, 217448832, 133450536, 1306207, -20072530, -76833208, -191960880, -155448832, -66990216,
+-147242752, -43445204, 84325776, 25062208, 21416318, 199131328, 76914272, 48517024, 184385632, 8739185,
+-9211631, 84969488, -42204496, -151926944, -73450920, -151816352, -221653600, -24566676, -100628936, -82245400,
+71108552, 137661216, 63807108, 243256752, 193936032, 112380504, 147317920, 49868864, -72028216, -111203144,
+-148099056, -237423648, -190202096, -127729640, -108671264, -33877092, 82819320, 125566056, 140120624, 188135680,
+158572336, 74216496, 27159226, 40767828, -63394256, -97437240, -69020664, -145565568, -109362216, -18890340,
+-65227668, 25909928, 106700944, 38029788, 54522464, 77349680, 8389145, 4588636, -18709952, -72961296,
+-38030860, 562641, -28956132, 22456774, 31050466, -12600897, 39333848, 33607584, -52625696, 40310416,
+47283296, -33292438, 76962592, 11638825, -75373992, 52791592, -41255844, -147731312, -24206972, -89821728,
+-108755016, 67185096, 8735963, 17026324, 142314816, 90204512, 100758856, 161437088, 119086024, 39277476,
+17263084, -112615656, -204296560, -203641040, -203811232, -193120528, -117455008, 5947456, 111295488, 162829184,
+223603520, 207243984, 196269264, 154291872, 26627724, -71069896, -77388328, -163993664, -202383696, -122074784,
+-108815144, -60921964, 11917461, 29442000, 36089536, 69954816, 62122944, 57802744, 82423640, 67642512,
+43942348, 37842420, 10064719, -22348862, -38424924, -44301512, -45687716, -26032334, -13195750, -9221832,
+-8396661, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-5057861,
--1954210, 1161789, -951872, -2919504, -227096, 6715182, -3470871, 771484, -1473711, -89121,
--2590402, 4829691, -2529199, -2690797, -3041911, 5757941, -3448322, -911070, -1639067, 1611150,
-2646237, 3365107, -4782446, -23085, 4543002, 2006824, 762357, -263067, -588411, 2049236,
-4631586, 1111323, -5990406, -3089692, -3231963, 5203353, -552977, 3968013, -2519535, 1833951,
-5197984, -2552284, -3948686, 1386738, -1489280, -272730, -3535295, -1429150, -2646774, 989990,
--4786741, -1582159, -1239098, -161061, 6432788, -2114198, -988916, -238371, -1709934, -676457,
--628139, 3898220, 2002529, 2388002, -3374771, 2455648, 2567854, -2292439, 1051193, 1527398,
--1745904, -2350421, 2725157, -4117263, 2887292, 1751273, 751082, -3815542, -1338956, 1417876,
--354872, -794569, -1045825, -91268, -2062658, -2376728, -382789, -392453, 267899, -893890,
-3221, 1407139, -70330, 523986, 183610, 278099, -2147, -275415, -1045825, -619549,
-687732, -365609, 18254, -140660, -3170223, 3351148, 390842, -1446867, -2164127, -591095,
--1102196, 3758, -2681670, -2057826, 1512365, -424128, -1034550, -4678830, -705985, 4351876,
--2940979, -733903, 3270618, -1890859, -3519189, -2678449, 2226941, 19327, -352187, -674847,
--3376381, 1133335, -1509681, -790274, 3794604, -2093797, -5169530, -1537061, 273804, 1546188,
-1342177, 443455, -3931506, -904091, -4786741, -4336843, -1182727, 4545149, -801011, -8981313,
--419296, 3026341, 2611340, -1853278, 1751273, 1933272, 164283, 2673080, -4855461, -3423626,
--471910, 1406065, 204011, 1002875, -539018, 1268089, 1130650, 1870995, -300648, 1154273,
-1077500, -901406, 1836635, -457951, -4738423, -3864397, -2525978, -1992328, -2139968, 646929,
--1095754, 3658239, 3001109, -557272, -1480153, -1268626, -698469, 1100585, 1704028, 220117,
--1031329, 186831, 219580, -997506, 1276679, 9664, -321586, -498216, -131533, -741419,
-497679, -144955, 76236, -858457, 491237, -540092, -16643, 8053, 333397, -141734,
--432181, -164283, -831613, -313533, 60130, -396748, 47245, -672162, 4108673, 2295123,
-6155225, 405338, -1218697, -764504, 4352413, -1194001, 2331094, -3998078, -432181, -113280,
-2280628, 1585917, 3901978, 2746095, -2021319, -3946538, -3228205, 2192044, -1382980, 2997350,
-1877438, 392990, -207769, 2490544, 1745904, -1825898, 2044941, -4248797, -605054, -3939022,
--3381750, -4738960, 1363115, 2688650, -518617, 3743601, -2935610, 3467649, -7058779, 2698313,
-1180579, 5198521, 1506997, 1862405, 2789581, -133681, -1815697, 1937567, 4524748, 1538672,
-2181307, -741419, -100395, -6452652, -449361, 1018444, 1219771, -952946, 3417183, 6453189,
--2181844, -4655745, 3074660, 678605, -3315178, -59593, -1548873, -3323768, 386010, 4641786,
-1140851, 1684701, 760746, -501974, 1744294, 1086090, -114890, 1523640, 72478, -427349,
--367220, -882616, 876710, -1293859, -185220, 2154463, -493921, -54224, 799938, -512712,
-1446330, -2060511, -951872, 28991, -847719, -900333, 192200, -506806, 679679, 1578937,
--622770, 891206, 211527, 91805, -5906, 219043, -1804423, -459025, -430570, 347892,
-1433445, 863288, 2265059, 3387119, 3258270, -3156264, 4973036, -1770063, -3306051, -4885526,
-1132261, -6461242, -405338, 670552, 1785633, -4121558, 2661269, -67109, 591632, 1724429,
-1058710, 1459215, -5562520, -374199, -1260036, -3629247, 2119566, 1066763, 832150, 3112241,
-10954314, -808528, 562104, 1561221, 2706366, 1071058, -8993662, 1867237, -1494649, -1033477,
-4924717, 143881, 2450279, 3551938, -4437238, -2477123, -1280437, -4305705, -9229885, 434865,
--3479461, -557272, -804770, -191126, -2139968, -4518306, 1282585, -4323422, -1372242, 973347,
--4818417, 4987531, 1722282, 1417339, -2024003, -370441, -788127, 991064, -1552631, 2560338,
--3951907, 1312649, 6011344, 4977867, -1738925, 2531346, -2365990, 1072668, -4480725, -148713,
-2790655, 3216931, 2880849, -497142, 5362267, 489089, 2681670, 2392297, -91268, 1114544,
-587337, 199716, -903017, 537945, 838592, -323733, 98784, -605590, -1468342, -230854,
-1012002, -789200, 2166811, -599148, -1117228, -958315, 764504, -541166, 952409, -181999,
--902480, 541166, -244813, 1115618, 687732, 654983, 456877, -1937030, -448287, 263067,
-839666, 29528, 171262, -519154, 7312719, -9306120, 379568, -5735929, 2913599, 4210142,
-5136244, -813896, -4907537, 110059, 5059472, 1067299, 955630, -3830574, -526134, -6696391,
-8864812, -486405, -6852084, 7387881, 1838783, 2179159, -497679, -2685428, -888521, -3541738,
--3494493, 2720862, 3866544, -805843, 3647501, -3033858, -1902134, -14496, 5096516, 4825933,
--1373853, -2742337, 3964255, 2525978, 357556, 3356517, 786516, -3973382, 4150549, 2586644,
--328565, -1389422, 1134408, -4281546, 11356430, -601832, -422517, 8461086, -786516, -5196911,
--2828236, -624381, 2049236, -5400385, 3671123, 1101659, 111669, -4903779, -4138201, -8657580,
--779537, 4022237, 1991791, 4880694, -2726767, -1930051, 10227391, -2855617, 1697049, -1432909,
--4259534, 318364, 1858647, -4438849, -7871602, 318901, -4859756, -4896263, -2404645, 2543158,
-213138, -746251, -3019362, -1036698, 329639, -1131187, -850940, 796716, 2783139, 387084,
-689342, -1987496, -1025960, -212601, -33823, -2800856, -2062658, -1780801, -119722, 670015,
-258772, -916976, 53687, -184684, -296890, -1472100, -551903, -218506, -574452, -773631,
--9816685, -150324, -4153234, -4692252, 1365800, -5627481, 113280, 3776887, 2036351, 7960185,
--13394929, 8528731, -1467268, 3704409, -2603824, -1956895, -7062000, 6203544, 5465346, 1341104,
--6283537, -388695, -3655017, -476205, 6445136, 4475356, 947040, 6142340, -137439, 272730,
-557809, -261456, -4379793, 9205726, -977642, 40802, 10699300, -6981470, 2520609, -3353833,
--749472, 3351685, -1518271, -5516886, 10296647, 8020852, -340913, 2573222, 4287451, 11131481,
--1497333, -2059974, -6113886, 1017907, 2075006, -6462852, -6892886, -6065568, 7172596, 121870,
--3008088, 4916127, 3482682, 22012, -1759326, 1573032, -3940633, -1036698, -4283693, -993748,
-3971234, -7878581, 1822140, -1683627, -5463736, 3291556, 5196911, 2198487, 5413270, 4687420,
--4023311, -6423661, -3216394, 2788508, -2543158, -4942971, 3170760, 5349382, -3920768, 646393,
-1132798, 581968, -3661997, 2110440, -1636383, -1303523, -2353105, -1240709, -1843615, -195421,
--213138, 695248, 1122060, -936840, -807991, -367757, -1464047, -858457, -399432, -588947,
-1150514, 1443109, 367757, 2128156, -1977833, 1437203, -1716376, -781147, 1472637, 7350300,
-7799124, 1292785, -6720550, -924492, -6382859, 2662343, 16794396, 4145717, 11637751, 4276177,
-149250, -10854456, -2664490, 1788854, 10512469, -4647155, -2311766, -4047470, 1011465, 8449274,
--6180458, 4137127, 7315403, 1626182, 2695092, -4783520, 9039296, -1934883, 11771432, -110059,
--3593277, -11041824, 1358283, 41339, 13175349, -3973919, -1068373, 8352638, 67109, 1106491,
--2709588, -8634495, 931471, 4973572, -6194954, -4889284, 1297617, -10355166, 5689221, 5748814,
--1740536, -673236, 2927557, 5863167, -490700, -3608310, -130997, 8609799, -1093606, -1323924,
--3250217, 11146514, 11292543, 763430, -2041183, 1758789, -476205, 2942053, 5222144, -431644,
-7540352, -2935610, -4180614, -6099928, 2067490, -500901, -9272834, -6693170, -3847217, 7294465,
--2130304, -3417183, -937377, 1074, -3143379, -4754529, -1665911, -1395328, -2834679, 462783,
--1777043, -1564979, 1499481, -3022046, -3111167, 976568, 2498597, -1507534, -2003602, -1520418,
--2613488, -1257352, 815507, -907312, 449898, 1374926, -459025, -778463, -2305324, 1421097,
-200253, -7406134, 7508677, 5712844, 442382, -4913443, -5517423, -2401424, -10961293, 12730820,
-9576703, -2052458, 3549791, 1148904, -2091649, 9652939, -774168, -4489315, 14289893, -15483894,
-3999688, 6670084, -53150, -6332930, 6810745, 1051730, 9847823, -3811247, -1058173, 2623688,
-3934727, 663572, -1345935, 14325327, 6180995, -6551973, -9891310, 6879464, -9895605, -2874944,
--11392938, -1479616, 17057462, 6975027, 8246337, 56371, -9049496, -1510218, -4421669, -1970316,
-12757127, -1991791, -14058502, -1139240, 2759517, -8948564, -1483911, 5763846, 4539244, -6016713,
--3140695, 6156299, 8153996, -2374043, 8494372, 147103, 2136209, 3174518, 720481, 3332895,
-5095979, 4926865, 4799089, -2529199, -10199474, -11272679, 2810519, -2268817, 8057896, -1447404,
-9563282, 3231426, 4449049, -5098126, -4545149, 3403762, -176094, 693100, 893353, 419833,
--4571993, -2100239, -707596, -3803194, -111669, -3267933, 587874, -1847910, 1409286, -464930,
-2441152, -5369, 1336272, 426276, -1227287, -1074279, -1470489, 3018825, 347892, -898185,
-960999, 1559073, 1307281, 291521, -2236604, -6256157, -3543885, 22012, -3025268, -76773,
-6189048, -877784, 5767604, -11780022, 4110821, 3243237, 1635846, -7742753, -6492380, -8242042,
-6278169, 3228205, -5915244, -5901822, 7913477, 2518998, -725850, -4980552, -8179765, -3384971,
-3204046, -5264556, 529355, -9800042, -2809982, 1051193, 3237869, 6263673, -1116692, 3965329,
-5439039, -5730560, -13600014, 9205189, 331249, -2238752, 8752606, -1464047, 255014, -6062347,
-7679402, -5070209, -6412923, -2569464, 6277632, 9574556, 8030515, 2423435, 1538672, -17186848,
-7662759, -1145146, 3164854, -6010807, -1216550, -6714108, -2394981, -1730872, -8876624, -4532801,
--3697430, -4917201, 8995272, -3040300, 11729556, -1526324, -766652, 7309498, 8365523, 14154602,
-9684078, -310311, -4726075, -655519, -78383, -6956774, 1629403, -4532264, -7605850, 14470282,
--9360344, -9951976, -1524177, 5368172, 709743, 1646046, 633508, 6059662, -175020, 1628330,
-2102923, -2427194, 286689, 3710315, -2165737, 1501091, 2645163, 2163053, 4648765, 1008780,
-20401, 2543158, 410706, -918049, 1697049, 2635499, 1015223, -37044, 780610, 398895,
-5405217, 412317, 4394289, 2921115, 633508, 4625143, 5073430, 490163, -171262, 669478,
-683437, 603980, -461172, -624918, 1271847, -3187403, -4567698, -18160732, 4028143, -12496207,
--7475928, 11832635, 9206262, -20737176, -19010598, 646929, 8124468, -4820564, 5017059, -6843494,
--761283, -12038793, -3139084, -10868415, -772020, -2974265, 354335, 4176856, 3429532, 6767795,
--834297, -5772436, 5021354, -6884296, -2754148, 2207613, 440771, 3506841, 7187628, -1162862,
-910533, 1650341, -2910914, -765041, -10518912, -12465606, -12062416, 9127, -12134893, 4064113,
-1598265, -4800163, -5645198, -2432562, -2020782, -1047972, -7227356, -11418171, -651224, 18113488,
-9980430, -2562485, -10831908, -11188390, 12498355, -11750494, -3883724, -2099702, -7847979, -5957657,
--7999914, -9361418, -13019656, -17609902, -2543158, -2850785, -2518462, 5881421, 5564667, 1445257,
-4873714, -4011500, -4903779, 16252156, 6868727, -4362613, -12016782, 3699041, -7121056, -8446590,
--55298, 13623099, -2739652, -144418, 9360881, -1090385, -6288906, 231928, 2206540, -228707,
--2594160, -2508798, -102542, 2268280, 1092532, 1500554, 913217, 4625143, -1404991, 2466385,
--6772090, 3071439, 1597728, -1255741, 1395864, -1462436, 2444910, -1267552, -1996623, -1179505,
-2217814, 1897302, 223875, 2556043, -3856881, 3778498, -1939715, -2362769, 1159104, -14951855,
-1668058, 7480223, 8129300, 7534983, 3158949, 14899778, -5942088, -10921565, -2890513, 1871532,
--2248952, 4708895, 9898289, 20030116, 12580496, 7314866, 9305047, -7798587, -14871324, -5138392,
--11153493, 12539157, 2799782, -2717104, -9059160, 14235132, 12224551, -4612258, -969052, -127238,
--7470022, -6247030, -11207180, 3242164, 3776350, 6275484, -10601053, 893890, 2938831, -4865661,
--10303627, 230854, 5882495, 7792145, 1260573, -20108500, -7230578, -9959492, 4031364, 11869142,
--80531, -11318849, 2605435, -10929081, 5939403, -2713883, 887448, -7776039, 16085726, 12681965,
--4077535, -3818763, -9404368, -710280, 12842489, 2890513, 15800111, 15229954, 12681965, 7425462,
-2539400, -10295573, -5774047, -13674102, 15622407, 15706695, -1336272, -12084964, 7665443, 18259516,
--293668, 2276333, -4489852, -477278, -12087112, 1869921, -9545028, 6465000, 2229625, 9113384,
-9055402, 4910758, 704912, 779000, 5581310, 2032593, -1367947, -3736085, -1263257, -5683853,
-940061, 4367445, -3771518, -2122788, -4308926, 3077881, -1005559, 6600291, -6327024, 1674500,
--256624, 6286222, -3091840, 2073932, 3784403, 684510, -244813, 223338, 1080184, -2901251,
--1199370, 3767223, -9881109, -2465311, 7269769, 12656732, -13233868, -16072841, -13888314, 15312632,
--6336688, 10242423, -150861, 185757, 24614994, -2947958, 1810866, -10873247, -16985522, 4265977,
--2536178, 4609574, 2984466, -1331440, -9720048, 2783139, 3627637, 1738925, -9177808, 6111739,
-4417911, 17992692, -8283382, 1268626, 9810779, 10077604, 387621, 10176388, -2561411, 446140,
-9054865, 7693360, 2049773, -3912715, -14452028, -10918881, 8479339, -197569, -3308199, -2831994,
-2151242, 19448148, -1196685, -6742025, 9885404, -4728222, 9343701, 2282775, 28003724, -5464809,
--899796, -48318, 4164508, 9580998, -1864553, -3244311, 6230387, -13125420, 10721312, 19720880,
-5841693, -4119948, 11001559, -4179003, -578210, 22306450, -12873628, 4948876, 8761196, -3729642,
-18572512, 4463008, 3991098, -7117298, -10688563, 1916629, 4862977, -11460583, 11678016, 1074,
-2957085, 77846, 3409130, 10781979, -2443300, 10879152, 5160403, 3595425, 6062347, 5416491,
--3155190, 6866579, 6383395, -5576478, 2117419, 4732517, 8702141, 2075543, 2510945, 4358318,
-5097053, 7748121, 794032, 278099, -459562, 5310190, 4493073, -4856535, -73551, 3518652,
-4951024, 3900904, -2900714, 7386270, -199179, 2573222, 911070, 6104223, 3109020, 2858301,
-2923262, 4232154, 2381023, 2822331, 4878009, -13969918, -3978750, 9625559, -4614406, -7272990,
--6487011, -6656126, 1244467, 9680856, -1183264, -21363168, 59593, -16221555, 6373732, 7042136,
-182536, 3354906, -7106561, -866510, 8696772, -20455318, 5266704, -4422743, 11496554, 7982734,
-5199058, 957241, -8125005, -18453326, -933619, -16119012, 10057740, 204011, -4836670, 17115444,
-8893267, -6724845, -5342403, -3473018, -2547453, -4683662, -9129490, 1737851, 2685965, 24731496,
--780073, -17540646, 39192, 12128451, 937377, -8986145, 5776731, -13600551, 9192841, -5693516,
-6106907, -7879655, 3730716, -13909788, 36914708, 1488206, 25516938, -2371359, -6942278, 6709276,
--8179229, -7978976, 14234595, 13902809, -12058658, -31984622, 30575872, -10618770, -8339753, -3915937,
--4256313, 4139812, -2779918, 2461016, 13188234, 3246459, -10620380, -8515846, -6427419, 4022774,
--6720013, -892279, 6142340, -16566226, -1415729, 1132798, -2593624, -4815732, 1883880, -3394635,
-9088688, -3534221, 4050154, -4003447, -2945274, 272194, -4213363, 2496450, 2162516, -1698660,
-2288681, -3834332, 1901060, -981937, -294742, -1700807, 52076, -6914898, -5093831, -947577,
--2838437, -5654325, -7548942, -4204773, -1843078, -2978023, -642635, -5015448, -5906, -4451734,
--1295470, -5811628, 3140158, -3215320, -1800128, -15748571, -5591511, -4791573, -13540421, -23845658,
--5885179, 374199, -12664785, 6190122, -5419175, 10596221, -9138080, -3827890, -13020193, 31026306,
-26249230, -5898601, 5853504, 18022756, -18961206, 19216758, -7998840, -8022462, 6928319, 2528662,
-3284576, -2838437, -4181151, 531502, 6222334, 5366562, -8431558, 9648107, -9086003, -15124190,
-10965052, 9642202, -12590160, -15648176, -18080738, -2659122, -2997887, 5049271, -11809013, -14803142,
--7558606, 24748138, 8662412, 8412767, -10608569, 9539659, 13028246, -10181757, 24322936, 4503810,
--8705362, -11419781, 6509560, -9594420, -20802674, 5051419, -237834, 450972, 11370389, 10573136,
--9142375, 1720134, -26659936, -3330747, -10514617, 22044994, 1316944, 3091840, -12859132, 10416369,
--22648436, -2774549, 8860518, 2532420, -2462627, -2607582, 2745558, -1069447, 2554969, -3411278,
-636729, 1855426, 5388574, 1313723, 1717987, -1255204, 3199214, -3347390, 1029182, 10029286,
--1975685, 427886, -3216394, 4454955, 2086817, -561030, 5265630, -5564667, -5258651, 5688684,
--4796942, -1806571, -4394289, 2394981, -6427419, -2927557, -2092723, 5136781, 5181341, -8295730,
-1305670, 4202626, -2839510, -9352291, -4500052, 6880001, -4510253, -11534135, 14614163, 15399068,
-13935558, 9400073, -119722, 12763569, 11574400, 1935420, -2191507, 5143224, 34360, -13014288,
--1548873, 4940823, -10174778, 14532022, -15152108, 12133819, 13215077, -3802120, -2980707, 5601711,
-17633526, 13209709, -15935939, -3479461, -4264366, -1271847, 3984119, -7435126, -7784092, 17297980,
-434865, 24841554, -16222091, -15387794, 12508555, -8287677, 4512937, -9751186, 8352101, 9528922,
-6292664, -3893925, -14251775, 1410360, 4746476, -11857331, -21774410, -753230, 1992865, -12857521,
-23539642, -2686502, -6660421, 31261994, 29456496, 2939368, -4080756, -1099512, -6271726, 7087233,
--15428059, 14471892, 1928440, -8399882, 17501454, 2804077, 3560528, -4990752, -9478993, -23481660,
-5171141, -7999377, -3854196, 10828686, 4408247, -5156645, -15328201, -4246112, -17457432, 7464117,
-15738371, -2223719, -11855183, -8305393, -11821897, 130460, 6400575, 7639673, -1597728, -8389145,
--4348118, -4578972, 1121523, -2544231, -4005057, 3371013, -616865, -2481417, 4152697, -9483288,
-2723546, 2445447, 14666240, 1323924, -3237869, -7504919, 6473590, -7840463, -1015223, 5478768,
--10401874, 9699110, 2083596, -421981, 1996086, 6557342, -3303904, -10290742, 250182, -3061775,
--1294933, 9882183, 9427990, -25803626, -59762860, 20028506, 18977312, -6685117, 4234838, -14391899,
-25785910, 16489453, -14622216, 4163434, 3506841, 367757, -6580964, -4744865, -30822296, 13034152,
-15215459, -3518652, -9664, -1730872, 10239739, -7730941, 19542102, 5789079, -23227720, -13166759,
-29498910, 19362250, -19222664, -4525822, -6831683, -11775727, 1840930, -4705674, 4210142, 38318624,
-10451266, 40148816, 22943178, 25872882, 23590108, 46243912, -3026878, -4296578, 11071352, -3271691,
--38784628, 31447750, -13616657, 18032420, -25632902, -20395726, -38289632, 7603703, -3514894, -12861816,
-9358197, -18006650, 82141, -25722560, -25673704, 7203197, 15018964, -20876762, -5521181, -14475650,
--20080046, -22569516, -16195785, 12339978, -9774809, -28177670, 40484900, 25356414, 40819368, -5328981,
--8765491, -8124468, -14380624, -23145042, -1461900, -5089000, -17493402, -5848135, 5172751, -12408161,
--11167989, 1291175, -1813550, -5530844, -4517232, 10066866, 10748693, 337155, 2729989, 7628399,
-9584220, 1945083, -777389, -1472100, 4522064, -1915555, 1151588, -1762010, -6700686, -181999,
-6379100, -6610492, 8704288, 10959683, 4660577, 357019, 1821603, 1156957, -7277285, 601832,
-4195646, -3760781, 89121, -1719061, 1232119, -2607582, 1009854, 4076998, -5561983, -4766877,
-8859444, 3598646, -1075352, 1345399, -21578990, -56873956, 24888798, 29694330, -13180181, -5640903,
--1299228, 33602212, 1261647, 7327214, 7237020, -7679939, 6828998, 15749108, -2934000, -14794015,
-3919695, 28606092, -14877767, -9246528, 6416681, -3790309, 21468394, -5149666, 9781788, -10789495,
--12984760, -12978317, 14137959, -4022774, 12571906, 14615237, -3541201, 2079838, 277025, -11616813,
-4098473, -10521596, 12819941, 31114354, 51002736, -456340, -1261110, -21341692, 11815455, 16802986,
--312459, 18849000, 26894548, 11404212, 15374372, -23256712, -13879187, 19634980, 50960324, -9131637,
--29615946, 7763691, -9718974, -370978, 13953812, 424665, -13405667, -6336688, -6827925, -34368328,
--14245333, 388695, 5917928, 12206297, -1794223, -13118441, -7459822, 3417720, -5194763, -13176960,
-13930726, 33380486, 14562623, 18052822, 2022393, -4379793, -26831198, -5820755, 7864085, 6131066,
--5862631, 15481746, -4145717, 8730058, -18724446, 1247688, -6333466, -5294084, 369904, 5399848,
-5334350, -5188321, -10101226, 10105521, -3714073, 8327942, 922881, -1921461, 863288, 1899449,
-7759932, 393526, -1013075, -3775276, -4147865, 6658810, 2349347, 6147172, -12680891, 9097278,
-5368172, 2575370, -4475356, -1569811, 9536975, -989990, 557809, -7070053, 863288, -10919954,
--2145873, 3332358, 9558987, 4781909, 8466991, 18117782, 6019934, 9492951, 3718905, 27307402,
--8613557, -3438658, -10735271, 6322729, -6666326, 5990406, 30998390, 6101001, -32836098, -8039105,
--9575093, -28123982, 17859548, 8398272, -3245385, 3932580, 1760400, -12656195, -104690, -941672,
--12513387, -3808026, 27067420, 39711804, 18777598, -13925895, -21905944, 10280541, 18191334, 1959579,
-14558865, -10197326, -6988986, 14854144, 4743792, 125091, -33348810, -43604656, -1378148, -25542170,
--14744623, 9004399, 36444408, 7791608, 1844152, -10657961, -12557948, -18357228, -16007880, 2875481,
-11025181, -4013110, -18040474, -29242284, 11620034, 638876, -16163573, -27275190, -18329310, -30013768,
--53864260, -32679870, -4807142, -6600828, 64882460, -8076149, -2377801, 37193880, 4435628, 1946157,
-22524420, -13571023, -32723892, -38276748, -5855114, -18423262, -20141786, -21658446, -23440858, 4418448,
-21305722, 33545842, 20117626, 3954054, 2269353, -8860518, 17488570, 3395709, -5198521, -21948894,
-4572530, 15627239, -676457, -268972, -7713225, 4157528, 8884140, 14259291, 4189204, 5935108,
-5663988, 7018514, 9102646, 9143985, -2515777, 6899865, 1584843, -5224828, -11250130, -13820668,
-1517734, 3018825, -13414793, -6869800, -12890807, 4036733, 6877317, 10133438, 15362561, 25422986,
-19261318, 19330038, 11818676, 7399692, -4495757, 1835562, 294205, -12201465, -18206366, -14083198,
--15509664, 20462834, -29096256, 7315940, 4592394, -12686797, -40793064, 27710056, 8210367, -2649458,
--41304164, 10956462, 6382859, -21827560, 3622268, 19091130, 11729019, 5536750, -18709414, -3841848,
--6996502, 3260417, -7057168, 1695975, -14495515, -20857434, 22819162, -15809775, 34688304, -21449604,
--19412178, -13175349, -24398098, 2105071, -489089, 36419712, -27035208, -28531468, 14669461, 9345849,
--23606750, -31411244, -3500398, -17719962, 20306606, 4283156, -25990994, 16811576, -4457103, -39972188,
-26191248, -17857400, 17087528, -29755534, -7293928, -879931, -12515535, -5175436, 3396782, 37440304,
--10146323, -3566434, -10804527, 10650982, -17774186, 13823352, 29275034, -1861868, 29435558, 23077396,
--3545496, 47161424, -2793339, 5396090, -1415729, 13266080, 47581260, -3980361, -13193066, -50958176,
-39396660, 13995688, 33633352, 11388643, -26460756, 11701638, 7539278, 4781909, -23493472, 13347148,
-2734284, 3803731, -12634720, -3750580, 16063178, 13697724, 598611, -1728188, -1651415, -1918240,
-3927211, 10019085, -20633022, -6160057, -2863670, 3223373, -4224101, 4512400, 4440460, 6436009,
--4822175, -11032160, 17023102, 26587996, 9330816, -13742822, -11746736, -5121212, -4006668, 7151658,
-3626026, -2732136, -16838420, -12123619, -13642964, -1398012, 13073880, 5686000, 11023034, 4154844,
--18362596, -3348464, 8028368, 27936078, -53846540, 2061047, -60601452, -20307680, -10295037, 18443664,
-55959664, 47562468, 17518098, 28080496, -18249316, -15375983, 2704756, -4129074, 12950400, 4103305,
--12656732, 18771154, 27638652, 22970558, 17165910, 14514305, -482110, 2584497, -9417253, 26157424,
-12200391, -5015985, -16148003, 5389110, 10719165, -2863133, 34221224, 35754528, -20707112, -15307263,
-739271, 27773406, 17296370, 4440996, 3377992, -6651294, -12559558, 6907381, 42684996, -17316234,
--21182778, -23030152, 22282290, 9101573, -12850542, -19922742, -31947040, -37795176, 4096862, 8259759,
-6766721, -8352638, -2848637, -10414759, 7398081, -30153354, -49567680, -22340810, -3513820, -8443906,
--19400368, 24748138, 41329396, -9341554, 21285322, 45680736, 29744260, 10560788, -31604516, 5064840,
-5589363, -27925340, -15505369, -4491999, -22292490, 24205362, 34453692, -2124935, -8063264, -4322885,
--10173167, -5676873, -14208826, -13893682, -5191005, -6933151, 4864051, -3163244, -3937411, 6733972,
--21072720, -2614561, 1605781, 21209622, -21907554, -3624953, -5087926, 3958349, -13998372, -4958003,
-4107063, -7678865, -12955232, -2196339, -1116692, -12664785, 14664629, -20379082, -2426120, -7581154,
-4361003, -2252174, -6117107, -11948599, 238371, 5842766, -4376035, -34298000, 27553288, -3564286,
-23664196, 14334453, 487479, 15677704, -6963216, -1822140, 13486197, 16552267, 2495913, 32212,
--609349, -15170898, -9886478, 3990562, -21139830, 516470, -7989176, 462246, -17935784, 2996814,
-927713, -16306917, 13506062, 5725192, 9118216, -20465520, -5583458, 3802657, -1142461, 1431298,
-11638825, 2545842, 3205656, -2389613, -4602058, -3242164, -1752347, 7516730, -3499325, -13079786,
-10481331, -17969070, -5709086, -6191196, 2069637, -8815420, -10480257, 13611288, -1822140, -13730474,
-8286066, -19133006, 15214385, 4722854, 636729, 15720654, 17450988, 2401424, 4911295, -13200045,
-16923244, -8356933, -11725261, -1035624, 2427730, 32126356, -14540612, -23777476, 20256140, -7770133,
-20238960, -3469260, 1242856, -8915815, 12220793, -20662550, -17213692, -6801618, 7993471, 4808753,
--1345399, 9869835, -12370580, -12439836, -8346732, 2918967, 3494493, 718870, -632434, -3771518,
-2030983, -17149804, 3371013, 3484292, -4234301, -1596654, 5066451, -2757369, -7427072, 8856223,
--4528506, 1090922, -481573, -2248952, 5876589, 2586644, -6321118, -712428, -1584843, -5556614,
--1306207, -2055142, -11521250, 3488050, 6862284, 5578626, -5291400, 5211406, -8437463, -2588792,
-96100, -5378373, 16521665, -7661148, -89492088, -170450608, -60821568, -133515504, -152109488, 36950676,
--5376226, 50716048, 196624672, 213190896, 150468816, 214711328, 176432432, 58385248, 61624728, 45514304,
--118897040, -122442536, -68225552, -118865368, -128453344, -43220256, -38052336, -108335720, -81677392, -13497472,
--48501992, -59281288, -14930380, -45439680, -80135496, -45774152, 14602889, -32337346, -39768712, 46630460,
--8257075, -44718124, 40188008, 74639552, -17628156, 18429168, 115857280, 15693810, -37532644, 76766632,
-67045512, -67080408, 37950332, 84633408, -26781268, 8968965, 146903984, 111984296, 56291452, 206418272,
-229885984, 117372328, 211695184, 273406336, 171520048, 161774240, 224769600, 144372112, 91763584, 101602824,
-52755084, -62214748, -120024472, -162727728, -277481184, -337613408, -382675680, -432752864, -426673856, -462485824,
--413162976, -306823872, -306766432, -241950544, -21989158, -12880607, 5908802, 172845584, 136513920, 45199164,
-90481000, 134757824, 49706732, 59921236, 136903696, 99535328, 20047834, 81960864, 115858888, 49562312,
-62275416, 142525264, 53216792, -23032298, 65582004, 45725832, -31964758, 61845380, 137756784, 64633352,
-101482024, 219956016, 182951648, 173267568, 258502272, 238642880, 164461808, 142896784, 128157528, 47743392,
--2170032, 6535867, -27303644, -86391120, -85927264, -98708552, -168664432, -188726768, -180856784, -202928608,
--243339424, -213241376, -206064480, -219896416, -170239616, -115214648, -90120224, -56909392, 1956358, 22580790,
-18983218, 31466004, 34665756, 17690434, 16227997, 31777390, 27537720, 18664318, 22523346, 26280904,
-19871740, 25792352, 39473972, 43389908, 41404560, 47466368, 46247136, 32323924, 26185878, 17865454,
-13853417, 13482976, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-1954210, 1161789, -951872, -2919504, -227096, 6715182, -3470871, 771484, -1473711, -89121,
+-2590402, 4829691, -2529199, -2690797, -3041911, 5757941, -3448322, -911070, -1639067, 1611150,
+2646237, 3365107, -4782446, -23085, 4543002, 2006824, 762357, -263067, -588411, 2049236,
+4631586, 1111323, -5990406, -3089692, -3231963, 5203353, -552977, 3968013, -2519535, 1833951,
+5197984, -2552284, -3948686, 1386738, -1489280, -272730, -3535295, -1429150, -2646774, 989990,
+-4786741, -1582159, -1239098, -161061, 6432788, -2114198, -988916, -238371, -1709934, -676457,
+-628139, 3898220, 2002529, 2388002, -3374771, 2455648, 2567854, -2292439, 1051193, 1527398,
+-1745904, -2350421, 2725157, -4117263, 2887292, 1751273, 751082, -3815542, -1338956, 1417876,
+-354872, -794569, -1045825, -91268, -2062658, -2376728, -382789, -392453, 267899, -893890,
+3221, 1407139, -70330, 523986, 183610, 278099, -2147, -275415, -1045825, -619549,
+687732, -365609, 18254, -140660, -3170223, 3351148, 390842, -1446867, -2164127, -591095,
+-1102196, 3758, -2681670, -2057826, 1512365, -424128, -1034550, -4678830, -705985, 4351876,
+-2940979, -733903, 3270618, -1890859, -3519189, -2678449, 2226941, 19327, -352187, -674847,
+-3376381, 1133335, -1509681, -790274, 3794604, -2093797, -5169530, -1537061, 273804, 1546188,
+1342177, 443455, -3931506, -904091, -4786741, -4336843, -1182727, 4545149, -801011, -8981313,
+-419296, 3026341, 2611340, -1853278, 1751273, 1933272, 164283, 2673080, -4855461, -3423626,
+-471910, 1406065, 204011, 1002875, -539018, 1268089, 1130650, 1870995, -300648, 1154273,
+1077500, -901406, 1836635, -457951, -4738423, -3864397, -2525978, -1992328, -2139968, 646929,
+-1095754, 3658239, 3001109, -557272, -1480153, -1268626, -698469, 1100585, 1704028, 220117,
+-1031329, 186831, 219580, -997506, 1276679, 9664, -321586, -498216, -131533, -741419,
+497679, -144955, 76236, -858457, 491237, -540092, -16643, 8053, 333397, -141734,
+-432181, -164283, -831613, -313533, 60130, -396748, 47245, -672162, 4108673, 2295123,
+6155225, 405338, -1218697, -764504, 4352413, -1194001, 2331094, -3998078, -432181, -113280,
+2280628, 1585917, 3901978, 2746095, -2021319, -3946538, -3228205, 2192044, -1382980, 2997350,
+1877438, 392990, -207769, 2490544, 1745904, -1825898, 2044941, -4248797, -605054, -3939022,
+-3381750, -4738960, 1363115, 2688650, -518617, 3743601, -2935610, 3467649, -7058779, 2698313,
+1180579, 5198521, 1506997, 1862405, 2789581, -133681, -1815697, 1937567, 4524748, 1538672,
+2181307, -741419, -100395, -6452652, -449361, 1018444, 1219771, -952946, 3417183, 6453189,
+-2181844, -4655745, 3074660, 678605, -3315178, -59593, -1548873, -3323768, 386010, 4641786,
+1140851, 1684701, 760746, -501974, 1744294, 1086090, -114890, 1523640, 72478, -427349,
+-367220, -882616, 876710, -1293859, -185220, 2154463, -493921, -54224, 799938, -512712,
+1446330, -2060511, -951872, 28991, -847719, -900333, 192200, -506806, 679679, 1578937,
+-622770, 891206, 211527, 91805, -5906, 219043, -1804423, -459025, -430570, 347892,
+1433445, 863288, 2265059, 3387119, 3258270, -3156264, 4973036, -1770063, -3306051, -4885526,
+1132261, -6461242, -405338, 670552, 1785633, -4121558, 2661269, -67109, 591632, 1724429,
+1058710, 1459215, -5562520, -374199, -1260036, -3629247, 2119566, 1066763, 832150, 3112241,
+10954314, -808528, 562104, 1561221, 2706366, 1071058, -8993662, 1867237, -1494649, -1033477,
+4924717, 143881, 2450279, 3551938, -4437238, -2477123, -1280437, -4305705, -9229885, 434865,
+-3479461, -557272, -804770, -191126, -2139968, -4518306, 1282585, -4323422, -1372242, 973347,
+-4818417, 4987531, 1722282, 1417339, -2024003, -370441, -788127, 991064, -1552631, 2560338,
+-3951907, 1312649, 6011344, 4977867, -1738925, 2531346, -2365990, 1072668, -4480725, -148713,
+2790655, 3216931, 2880849, -497142, 5362267, 489089, 2681670, 2392297, -91268, 1114544,
+587337, 199716, -903017, 537945, 838592, -323733, 98784, -605590, -1468342, -230854,
+1012002, -789200, 2166811, -599148, -1117228, -958315, 764504, -541166, 952409, -181999,
+-902480, 541166, -244813, 1115618, 687732, 654983, 456877, -1937030, -448287, 263067,
+839666, 29528, 171262, -519154, 7312719, -9306120, 379568, -5735929, 2913599, 4210142,
+5136244, -813896, -4907537, 110059, 5059472, 1067299, 955630, -3830574, -526134, -6696391,
+8864812, -486405, -6852084, 7387881, 1838783, 2179159, -497679, -2685428, -888521, -3541738,
+-3494493, 2720862, 3866544, -805843, 3647501, -3033858, -1902134, -14496, 5096516, 4825933,
+-1373853, -2742337, 3964255, 2525978, 357556, 3356517, 786516, -3973382, 4150549, 2586644,
+-328565, -1389422, 1134408, -4281546, 11356430, -601832, -422517, 8461086, -786516, -5196911,
+-2828236, -624381, 2049236, -5400385, 3671123, 1101659, 111669, -4903779, -4138201, -8657580,
+-779537, 4022237, 1991791, 4880694, -2726767, -1930051, 10227391, -2855617, 1697049, -1432909,
+-4259534, 318364, 1858647, -4438849, -7871602, 318901, -4859756, -4896263, -2404645, 2543158,
+213138, -746251, -3019362, -1036698, 329639, -1131187, -850940, 796716, 2783139, 387084,
+689342, -1987496, -1025960, -212601, -33823, -2800856, -2062658, -1780801, -119722, 670015,
+258772, -916976, 53687, -184684, -296890, -1472100, -551903, -218506, -574452, -773631,
+-9816685, -150324, -4153234, -4692252, 1365800, -5627481, 113280, 3776887, 2036351, 7960185,
+-13394929, 8528731, -1467268, 3704409, -2603824, -1956895, -7062000, 6203544, 5465346, 1341104,
+-6283537, -388695, -3655017, -476205, 6445136, 4475356, 947040, 6142340, -137439, 272730,
+557809, -261456, -4379793, 9205726, -977642, 40802, 10699300, -6981470, 2520609, -3353833,
+-749472, 3351685, -1518271, -5516886, 10296647, 8020852, -340913, 2573222, 4287451, 11131481,
+-1497333, -2059974, -6113886, 1017907, 2075006, -6462852, -6892886, -6065568, 7172596, 121870,
+-3008088, 4916127, 3482682, 22012, -1759326, 1573032, -3940633, -1036698, -4283693, -993748,
+3971234, -7878581, 1822140, -1683627, -5463736, 3291556, 5196911, 2198487, 5413270, 4687420,
+-4023311, -6423661, -3216394, 2788508, -2543158, -4942971, 3170760, 5349382, -3920768, 646393,
+1132798, 581968, -3661997, 2110440, -1636383, -1303523, -2353105, -1240709, -1843615, -195421,
+-213138, 695248, 1122060, -936840, -807991, -367757, -1464047, -858457, -399432, -588947,
+1150514, 1443109, 367757, 2128156, -1977833, 1437203, -1716376, -781147, 1472637, 7350300,
+7799124, 1292785, -6720550, -924492, -6382859, 2662343, 16794396, 4145717, 11637751, 4276177,
+149250, -10854456, -2664490, 1788854, 10512469, -4647155, -2311766, -4047470, 1011465, 8449274,
+-6180458, 4137127, 7315403, 1626182, 2695092, -4783520, 9039296, -1934883, 11771432, -110059,
+-3593277, -11041824, 1358283, 41339, 13175349, -3973919, -1068373, 8352638, 67109, 1106491,
+-2709588, -8634495, 931471, 4973572, -6194954, -4889284, 1297617, -10355166, 5689221, 5748814,
+-1740536, -673236, 2927557, 5863167, -490700, -3608310, -130997, 8609799, -1093606, -1323924,
+-3250217, 11146514, 11292543, 763430, -2041183, 1758789, -476205, 2942053, 5222144, -431644,
+7540352, -2935610, -4180614, -6099928, 2067490, -500901, -9272834, -6693170, -3847217, 7294465,
+-2130304, -3417183, -937377, 1074, -3143379, -4754529, -1665911, -1395328, -2834679, 462783,
+-1777043, -1564979, 1499481, -3022046, -3111167, 976568, 2498597, -1507534, -2003602, -1520418,
+-2613488, -1257352, 815507, -907312, 449898, 1374926, -459025, -778463, -2305324, 1421097,
+200253, -7406134, 7508677, 5712844, 442382, -4913443, -5517423, -2401424, -10961293, 12730820,
+9576703, -2052458, 3549791, 1148904, -2091649, 9652939, -774168, -4489315, 14289893, -15483894,
+3999688, 6670084, -53150, -6332930, 6810745, 1051730, 9847823, -3811247, -1058173, 2623688,
+3934727, 663572, -1345935, 14325327, 6180995, -6551973, -9891310, 6879464, -9895605, -2874944,
+-11392938, -1479616, 17057462, 6975027, 8246337, 56371, -9049496, -1510218, -4421669, -1970316,
+12757127, -1991791, -14058502, -1139240, 2759517, -8948564, -1483911, 5763846, 4539244, -6016713,
+-3140695, 6156299, 8153996, -2374043, 8494372, 147103, 2136209, 3174518, 720481, 3332895,
+5095979, 4926865, 4799089, -2529199, -10199474, -11272679, 2810519, -2268817, 8057896, -1447404,
+9563282, 3231426, 4449049, -5098126, -4545149, 3403762, -176094, 693100, 893353, 419833,
+-4571993, -2100239, -707596, -3803194, -111669, -3267933, 587874, -1847910, 1409286, -464930,
+2441152, -5369, 1336272, 426276, -1227287, -1074279, -1470489, 3018825, 347892, -898185,
+960999, 1559073, 1307281, 291521, -2236604, -6256157, -3543885, 22012, -3025268, -76773,
+6189048, -877784, 5767604, -11780022, 4110821, 3243237, 1635846, -7742753, -6492380, -8242042,
+6278169, 3228205, -5915244, -5901822, 7913477, 2518998, -725850, -4980552, -8179765, -3384971,
+3204046, -5264556, 529355, -9800042, -2809982, 1051193, 3237869, 6263673, -1116692, 3965329,
+5439039, -5730560, -13600014, 9205189, 331249, -2238752, 8752606, -1464047, 255014, -6062347,
+7679402, -5070209, -6412923, -2569464, 6277632, 9574556, 8030515, 2423435, 1538672, -17186848,
+7662759, -1145146, 3164854, -6010807, -1216550, -6714108, -2394981, -1730872, -8876624, -4532801,
+-3697430, -4917201, 8995272, -3040300, 11729556, -1526324, -766652, 7309498, 8365523, 14154602,
+9684078, -310311, -4726075, -655519, -78383, -6956774, 1629403, -4532264, -7605850, 14470282,
+-9360344, -9951976, -1524177, 5368172, 709743, 1646046, 633508, 6059662, -175020, 1628330,
+2102923, -2427194, 286689, 3710315, -2165737, 1501091, 2645163, 2163053, 4648765, 1008780,
+20401, 2543158, 410706, -918049, 1697049, 2635499, 1015223, -37044, 780610, 398895,
+5405217, 412317, 4394289, 2921115, 633508, 4625143, 5073430, 490163, -171262, 669478,
+683437, 603980, -461172, -624918, 1271847, -3187403, -4567698, -18160732, 4028143, -12496207,
+-7475928, 11832635, 9206262, -20737176, -19010598, 646929, 8124468, -4820564, 5017059, -6843494,
+-761283, -12038793, -3139084, -10868415, -772020, -2974265, 354335, 4176856, 3429532, 6767795,
+-834297, -5772436, 5021354, -6884296, -2754148, 2207613, 440771, 3506841, 7187628, -1162862,
+910533, 1650341, -2910914, -765041, -10518912, -12465606, -12062416, 9127, -12134893, 4064113,
+1598265, -4800163, -5645198, -2432562, -2020782, -1047972, -7227356, -11418171, -651224, 18113488,
+9980430, -2562485, -10831908, -11188390, 12498355, -11750494, -3883724, -2099702, -7847979, -5957657,
+-7999914, -9361418, -13019656, -17609902, -2543158, -2850785, -2518462, 5881421, 5564667, 1445257,
+4873714, -4011500, -4903779, 16252156, 6868727, -4362613, -12016782, 3699041, -7121056, -8446590,
+-55298, 13623099, -2739652, -144418, 9360881, -1090385, -6288906, 231928, 2206540, -228707,
+-2594160, -2508798, -102542, 2268280, 1092532, 1500554, 913217, 4625143, -1404991, 2466385,
+-6772090, 3071439, 1597728, -1255741, 1395864, -1462436, 2444910, -1267552, -1996623, -1179505,
+2217814, 1897302, 223875, 2556043, -3856881, 3778498, -1939715, -2362769, 1159104, -14951855,
+1668058, 7480223, 8129300, 7534983, 3158949, 14899778, -5942088, -10921565, -2890513, 1871532,
+-2248952, 4708895, 9898289, 20030116, 12580496, 7314866, 9305047, -7798587, -14871324, -5138392,
+-11153493, 12539157, 2799782, -2717104, -9059160, 14235132, 12224551, -4612258, -969052, -127238,
+-7470022, -6247030, -11207180, 3242164, 3776350, 6275484, -10601053, 893890, 2938831, -4865661,
+-10303627, 230854, 5882495, 7792145, 1260573, -20108500, -7230578, -9959492, 4031364, 11869142,
+-80531, -11318849, 2605435, -10929081, 5939403, -2713883, 887448, -7776039, 16085726, 12681965,
+-4077535, -3818763, -9404368, -710280, 12842489, 2890513, 15800111, 15229954, 12681965, 7425462,
+2539400, -10295573, -5774047, -13674102, 15622407, 15706695, -1336272, -12084964, 7665443, 18259516,
+-293668, 2276333, -4489852, -477278, -12087112, 1869921, -9545028, 6465000, 2229625, 9113384,
+9055402, 4910758, 704912, 779000, 5581310, 2032593, -1367947, -3736085, -1263257, -5683853,
+940061, 4367445, -3771518, -2122788, -4308926, 3077881, -1005559, 6600291, -6327024, 1674500,
+-256624, 6286222, -3091840, 2073932, 3784403, 684510, -244813, 223338, 1080184, -2901251,
+-1199370, 3767223, -9881109, -2465311, 7269769, 12656732, -13233868, -16072841, -13888314, 15312632,
+-6336688, 10242423, -150861, 185757, 24614994, -2947958, 1810866, -10873247, -16985522, 4265977,
+-2536178, 4609574, 2984466, -1331440, -9720048, 2783139, 3627637, 1738925, -9177808, 6111739,
+4417911, 17992692, -8283382, 1268626, 9810779, 10077604, 387621, 10176388, -2561411, 446140,
+9054865, 7693360, 2049773, -3912715, -14452028, -10918881, 8479339, -197569, -3308199, -2831994,
+2151242, 19448148, -1196685, -6742025, 9885404, -4728222, 9343701, 2282775, 28003724, -5464809,
+-899796, -48318, 4164508, 9580998, -1864553, -3244311, 6230387, -13125420, 10721312, 19720880,
+5841693, -4119948, 11001559, -4179003, -578210, 22306450, -12873628, 4948876, 8761196, -3729642,
+18572512, 4463008, 3991098, -7117298, -10688563, 1916629, 4862977, -11460583, 11678016, 1074,
+2957085, 77846, 3409130, 10781979, -2443300, 10879152, 5160403, 3595425, 6062347, 5416491,
+-3155190, 6866579, 6383395, -5576478, 2117419, 4732517, 8702141, 2075543, 2510945, 4358318,
+5097053, 7748121, 794032, 278099, -459562, 5310190, 4493073, -4856535, -73551, 3518652,
+4951024, 3900904, -2900714, 7386270, -199179, 2573222, 911070, 6104223, 3109020, 2858301,
+2923262, 4232154, 2381023, 2822331, 4878009, -13969918, -3978750, 9625559, -4614406, -7272990,
+-6487011, -6656126, 1244467, 9680856, -1183264, -21363168, 59593, -16221555, 6373732, 7042136,
+182536, 3354906, -7106561, -866510, 8696772, -20455318, 5266704, -4422743, 11496554, 7982734,
+5199058, 957241, -8125005, -18453326, -933619, -16119012, 10057740, 204011, -4836670, 17115444,
+8893267, -6724845, -5342403, -3473018, -2547453, -4683662, -9129490, 1737851, 2685965, 24731496,
+-780073, -17540646, 39192, 12128451, 937377, -8986145, 5776731, -13600551, 9192841, -5693516,
+6106907, -7879655, 3730716, -13909788, 36914708, 1488206, 25516938, -2371359, -6942278, 6709276,
+-8179229, -7978976, 14234595, 13902809, -12058658, -31984622, 30575872, -10618770, -8339753, -3915937,
+-4256313, 4139812, -2779918, 2461016, 13188234, 3246459, -10620380, -8515846, -6427419, 4022774,
+-6720013, -892279, 6142340, -16566226, -1415729, 1132798, -2593624, -4815732, 1883880, -3394635,
+9088688, -3534221, 4050154, -4003447, -2945274, 272194, -4213363, 2496450, 2162516, -1698660,
+2288681, -3834332, 1901060, -981937, -294742, -1700807, 52076, -6914898, -5093831, -947577,
+-2838437, -5654325, -7548942, -4204773, -1843078, -2978023, -642635, -5015448, -5906, -4451734,
+-1295470, -5811628, 3140158, -3215320, -1800128, -15748571, -5591511, -4791573, -13540421, -23845658,
+-5885179, 374199, -12664785, 6190122, -5419175, 10596221, -9138080, -3827890, -13020193, 31026306,
+26249230, -5898601, 5853504, 18022756, -18961206, 19216758, -7998840, -8022462, 6928319, 2528662,
+3284576, -2838437, -4181151, 531502, 6222334, 5366562, -8431558, 9648107, -9086003, -15124190,
+10965052, 9642202, -12590160, -15648176, -18080738, -2659122, -2997887, 5049271, -11809013, -14803142,
+-7558606, 24748138, 8662412, 8412767, -10608569, 9539659, 13028246, -10181757, 24322936, 4503810,
+-8705362, -11419781, 6509560, -9594420, -20802674, 5051419, -237834, 450972, 11370389, 10573136,
+-9142375, 1720134, -26659936, -3330747, -10514617, 22044994, 1316944, 3091840, -12859132, 10416369,
+-22648436, -2774549, 8860518, 2532420, -2462627, -2607582, 2745558, -1069447, 2554969, -3411278,
+636729, 1855426, 5388574, 1313723, 1717987, -1255204, 3199214, -3347390, 1029182, 10029286,
+-1975685, 427886, -3216394, 4454955, 2086817, -561030, 5265630, -5564667, -5258651, 5688684,
+-4796942, -1806571, -4394289, 2394981, -6427419, -2927557, -2092723, 5136781, 5181341, -8295730,
+1305670, 4202626, -2839510, -9352291, -4500052, 6880001, -4510253, -11534135, 14614163, 15399068,
+13935558, 9400073, -119722, 12763569, 11574400, 1935420, -2191507, 5143224, 34360, -13014288,
+-1548873, 4940823, -10174778, 14532022, -15152108, 12133819, 13215077, -3802120, -2980707, 5601711,
+17633526, 13209709, -15935939, -3479461, -4264366, -1271847, 3984119, -7435126, -7784092, 17297980,
+434865, 24841554, -16222091, -15387794, 12508555, -8287677, 4512937, -9751186, 8352101, 9528922,
+6292664, -3893925, -14251775, 1410360, 4746476, -11857331, -21774410, -753230, 1992865, -12857521,
+23539642, -2686502, -6660421, 31261994, 29456496, 2939368, -4080756, -1099512, -6271726, 7087233,
+-15428059, 14471892, 1928440, -8399882, 17501454, 2804077, 3560528, -4990752, -9478993, -23481660,
+5171141, -7999377, -3854196, 10828686, 4408247, -5156645, -15328201, -4246112, -17457432, 7464117,
+15738371, -2223719, -11855183, -8305393, -11821897, 130460, 6400575, 7639673, -1597728, -8389145,
+-4348118, -4578972, 1121523, -2544231, -4005057, 3371013, -616865, -2481417, 4152697, -9483288,
+2723546, 2445447, 14666240, 1323924, -3237869, -7504919, 6473590, -7840463, -1015223, 5478768,
+-10401874, 9699110, 2083596, -421981, 1996086, 6557342, -3303904, -10290742, 250182, -3061775,
+-1294933, 9882183, 9427990, -25803626, -59762860, 20028506, 18977312, -6685117, 4234838, -14391899,
+25785910, 16489453, -14622216, 4163434, 3506841, 367757, -6580964, -4744865, -30822296, 13034152,
+15215459, -3518652, -9664, -1730872, 10239739, -7730941, 19542102, 5789079, -23227720, -13166759,
+29498910, 19362250, -19222664, -4525822, -6831683, -11775727, 1840930, -4705674, 4210142, 38318624,
+10451266, 40148816, 22943178, 25872882, 23590108, 46243912, -3026878, -4296578, 11071352, -3271691,
+-38784628, 31447750, -13616657, 18032420, -25632902, -20395726, -38289632, 7603703, -3514894, -12861816,
+9358197, -18006650, 82141, -25722560, -25673704, 7203197, 15018964, -20876762, -5521181, -14475650,
+-20080046, -22569516, -16195785, 12339978, -9774809, -28177670, 40484900, 25356414, 40819368, -5328981,
+-8765491, -8124468, -14380624, -23145042, -1461900, -5089000, -17493402, -5848135, 5172751, -12408161,
+-11167989, 1291175, -1813550, -5530844, -4517232, 10066866, 10748693, 337155, 2729989, 7628399,
+9584220, 1945083, -777389, -1472100, 4522064, -1915555, 1151588, -1762010, -6700686, -181999,
+6379100, -6610492, 8704288, 10959683, 4660577, 357019, 1821603, 1156957, -7277285, 601832,
+4195646, -3760781, 89121, -1719061, 1232119, -2607582, 1009854, 4076998, -5561983, -4766877,
+8859444, 3598646, -1075352, 1345399, -21578990, -56873956, 24888798, 29694330, -13180181, -5640903,
+-1299228, 33602212, 1261647, 7327214, 7237020, -7679939, 6828998, 15749108, -2934000, -14794015,
+3919695, 28606092, -14877767, -9246528, 6416681, -3790309, 21468394, -5149666, 9781788, -10789495,
+-12984760, -12978317, 14137959, -4022774, 12571906, 14615237, -3541201, 2079838, 277025, -11616813,
+4098473, -10521596, 12819941, 31114354, 51002736, -456340, -1261110, -21341692, 11815455, 16802986,
+-312459, 18849000, 26894548, 11404212, 15374372, -23256712, -13879187, 19634980, 50960324, -9131637,
+-29615946, 7763691, -9718974, -370978, 13953812, 424665, -13405667, -6336688, -6827925, -34368328,
+-14245333, 388695, 5917928, 12206297, -1794223, -13118441, -7459822, 3417720, -5194763, -13176960,
+13930726, 33380486, 14562623, 18052822, 2022393, -4379793, -26831198, -5820755, 7864085, 6131066,
+-5862631, 15481746, -4145717, 8730058, -18724446, 1247688, -6333466, -5294084, 369904, 5399848,
+5334350, -5188321, -10101226, 10105521, -3714073, 8327942, 922881, -1921461, 863288, 1899449,
+7759932, 393526, -1013075, -3775276, -4147865, 6658810, 2349347, 6147172, -12680891, 9097278,
+5368172, 2575370, -4475356, -1569811, 9536975, -989990, 557809, -7070053, 863288, -10919954,
+-2145873, 3332358, 9558987, 4781909, 8466991, 18117782, 6019934, 9492951, 3718905, 27307402,
+-8613557, -3438658, -10735271, 6322729, -6666326, 5990406, 30998390, 6101001, -32836098, -8039105,
+-9575093, -28123982, 17859548, 8398272, -3245385, 3932580, 1760400, -12656195, -104690, -941672,
+-12513387, -3808026, 27067420, 39711804, 18777598, -13925895, -21905944, 10280541, 18191334, 1959579,
+14558865, -10197326, -6988986, 14854144, 4743792, 125091, -33348810, -43604656, -1378148, -25542170,
+-14744623, 9004399, 36444408, 7791608, 1844152, -10657961, -12557948, -18357228, -16007880, 2875481,
+11025181, -4013110, -18040474, -29242284, 11620034, 638876, -16163573, -27275190, -18329310, -30013768,
+-53864260, -32679870, -4807142, -6600828, 64882460, -8076149, -2377801, 37193880, 4435628, 1946157,
+22524420, -13571023, -32723892, -38276748, -5855114, -18423262, -20141786, -21658446, -23440858, 4418448,
+21305722, 33545842, 20117626, 3954054, 2269353, -8860518, 17488570, 3395709, -5198521, -21948894,
+4572530, 15627239, -676457, -268972, -7713225, 4157528, 8884140, 14259291, 4189204, 5935108,
+5663988, 7018514, 9102646, 9143985, -2515777, 6899865, 1584843, -5224828, -11250130, -13820668,
+1517734, 3018825, -13414793, -6869800, -12890807, 4036733, 6877317, 10133438, 15362561, 25422986,
+19261318, 19330038, 11818676, 7399692, -4495757, 1835562, 294205, -12201465, -18206366, -14083198,
+-15509664, 20462834, -29096256, 7315940, 4592394, -12686797, -40793064, 27710056, 8210367, -2649458,
+-41304164, 10956462, 6382859, -21827560, 3622268, 19091130, 11729019, 5536750, -18709414, -3841848,
+-6996502, 3260417, -7057168, 1695975, -14495515, -20857434, 22819162, -15809775, 34688304, -21449604,
+-19412178, -13175349, -24398098, 2105071, -489089, 36419712, -27035208, -28531468, 14669461, 9345849,
+-23606750, -31411244, -3500398, -17719962, 20306606, 4283156, -25990994, 16811576, -4457103, -39972188,
+26191248, -17857400, 17087528, -29755534, -7293928, -879931, -12515535, -5175436, 3396782, 37440304,
+-10146323, -3566434, -10804527, 10650982, -17774186, 13823352, 29275034, -1861868, 29435558, 23077396,
+-3545496, 47161424, -2793339, 5396090, -1415729, 13266080, 47581260, -3980361, -13193066, -50958176,
+39396660, 13995688, 33633352, 11388643, -26460756, 11701638, 7539278, 4781909, -23493472, 13347148,
+2734284, 3803731, -12634720, -3750580, 16063178, 13697724, 598611, -1728188, -1651415, -1918240,
+3927211, 10019085, -20633022, -6160057, -2863670, 3223373, -4224101, 4512400, 4440460, 6436009,
+-4822175, -11032160, 17023102, 26587996, 9330816, -13742822, -11746736, -5121212, -4006668, 7151658,
+3626026, -2732136, -16838420, -12123619, -13642964, -1398012, 13073880, 5686000, 11023034, 4154844,
+-18362596, -3348464, 8028368, 27936078, -53846540, 2061047, -60601452, -20307680, -10295037, 18443664,
+55959664, 47562468, 17518098, 28080496, -18249316, -15375983, 2704756, -4129074, 12950400, 4103305,
+-12656732, 18771154, 27638652, 22970558, 17165910, 14514305, -482110, 2584497, -9417253, 26157424,
+12200391, -5015985, -16148003, 5389110, 10719165, -2863133, 34221224, 35754528, -20707112, -15307263,
+739271, 27773406, 17296370, 4440996, 3377992, -6651294, -12559558, 6907381, 42684996, -17316234,
+-21182778, -23030152, 22282290, 9101573, -12850542, -19922742, -31947040, -37795176, 4096862, 8259759,
+6766721, -8352638, -2848637, -10414759, 7398081, -30153354, -49567680, -22340810, -3513820, -8443906,
+-19400368, 24748138, 41329396, -9341554, 21285322, 45680736, 29744260, 10560788, -31604516, 5064840,
+5589363, -27925340, -15505369, -4491999, -22292490, 24205362, 34453692, -2124935, -8063264, -4322885,
+-10173167, -5676873, -14208826, -13893682, -5191005, -6933151, 4864051, -3163244, -3937411, 6733972,
+-21072720, -2614561, 1605781, 21209622, -21907554, -3624953, -5087926, 3958349, -13998372, -4958003,
+4107063, -7678865, -12955232, -2196339, -1116692, -12664785, 14664629, -20379082, -2426120, -7581154,
+4361003, -2252174, -6117107, -11948599, 238371, 5842766, -4376035, -34298000, 27553288, -3564286,
+23664196, 14334453, 487479, 15677704, -6963216, -1822140, 13486197, 16552267, 2495913, 32212,
+-609349, -15170898, -9886478, 3990562, -21139830, 516470, -7989176, 462246, -17935784, 2996814,
+927713, -16306917, 13506062, 5725192, 9118216, -20465520, -5583458, 3802657, -1142461, 1431298,
+11638825, 2545842, 3205656, -2389613, -4602058, -3242164, -1752347, 7516730, -3499325, -13079786,
+10481331, -17969070, -5709086, -6191196, 2069637, -8815420, -10480257, 13611288, -1822140, -13730474,
+8286066, -19133006, 15214385, 4722854, 636729, 15720654, 17450988, 2401424, 4911295, -13200045,
+16923244, -8356933, -11725261, -1035624, 2427730, 32126356, -14540612, -23777476, 20256140, -7770133,
+20238960, -3469260, 1242856, -8915815, 12220793, -20662550, -17213692, -6801618, 7993471, 4808753,
+-1345399, 9869835, -12370580, -12439836, -8346732, 2918967, 3494493, 718870, -632434, -3771518,
+2030983, -17149804, 3371013, 3484292, -4234301, -1596654, 5066451, -2757369, -7427072, 8856223,
+-4528506, 1090922, -481573, -2248952, 5876589, 2586644, -6321118, -712428, -1584843, -5556614,
+-1306207, -2055142, -11521250, 3488050, 6862284, 5578626, -5291400, 5211406, -8437463, -2588792,
+96100, -5378373, 16521665, -7661148, -89492088, -170450608, -60821568, -133515504, -152109488, 36950676,
+-5376226, 50716048, 196624672, 213190896, 150468816, 214711328, 176432432, 58385248, 61624728, 45514304,
+-118897040, -122442536, -68225552, -118865368, -128453344, -43220256, -38052336, -108335720, -81677392, -13497472,
+-48501992, -59281288, -14930380, -45439680, -80135496, -45774152, 14602889, -32337346, -39768712, 46630460,
+-8257075, -44718124, 40188008, 74639552, -17628156, 18429168, 115857280, 15693810, -37532644, 76766632,
+67045512, -67080408, 37950332, 84633408, -26781268, 8968965, 146903984, 111984296, 56291452, 206418272,
+229885984, 117372328, 211695184, 273406336, 171520048, 161774240, 224769600, 144372112, 91763584, 101602824,
+52755084, -62214748, -120024472, -162727728, -277481184, -337613408, -382675680, -432752864, -426673856, -462485824,
+-413162976, -306823872, -306766432, -241950544, -21989158, -12880607, 5908802, 172845584, 136513920, 45199164,
+90481000, 134757824, 49706732, 59921236, 136903696, 99535328, 20047834, 81960864, 115858888, 49562312,
+62275416, 142525264, 53216792, -23032298, 65582004, 45725832, -31964758, 61845380, 137756784, 64633352,
+101482024, 219956016, 182951648, 173267568, 258502272, 238642880, 164461808, 142896784, 128157528, 47743392,
+-2170032, 6535867, -27303644, -86391120, -85927264, -98708552, -168664432, -188726768, -180856784, -202928608,
+-243339424, -213241376, -206064480, -219896416, -170239616, -115214648, -90120224, -56909392, 1956358, 22580790,
+18983218, 31466004, 34665756, 17690434, 16227997, 31777390, 27537720, 18664318, 22523346, 26280904,
+19871740, 25792352, 39473972, 43389908, 41404560, 47466368, 46247136, 32323924, 26185878, 17865454,
+13853417, 13482976, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-4371203,
-3634616, 3891240, -1843078, 3905199, -2352032, -512175, 5196911, -2124398, 2473901, 1511292,
--5755256, -2593624, 4327717, -1679869, -821413, 2725157, 1804960, 1943473, 523449, 6663105,
-1141388, -1705639, 1496796, -2295123, 4129611, -1181116, -2263985, -979253, -5386963, -1818919,
--3966939, 1309965, -64425, 1466195, -1587527, 2268817, 1071594, -238908, 695248, 371515,
-525597, 738198, -2847563, 7128572, 1053878, -2585570, 5277978, -1260036, -4549444, -4983236,
-4872641, -960999, -385473, 3230889, 366146, -830539, 2522757, -262530, 1463510, 428960,
-1859184, -958315, 2024003, -902480, 2404108, 3494493, 1900523, -2053531, -2113124, -1033477,
-942208, -2194728, 1558536, -1073742, 1933272, 2520609, -3112778, -1751810, 2724620, 817654,
--854162, 4202089, 2436320, 2010045, -203474, 1114007, -78920, 568546, -478889, 646929,
-253940, 312459, -947040, 1563368, 515396, 120259, -263604, 641024, 1021665, -523449,
-1099512, -31675, 4567161, 899796, 1040993, 3833795, 49392, 2767570, 1318555, -309775,
-296890, -2989297, 1402307, 243739, 4697084, 1665374, 1542967, 215285, 1391569, 5153961,
--4856535, 2755759, 731755, -3204046, -1431835, -1983738, -644782, -1840394, 1309965, 5951214,
-3748970, 4446365, 3534758, 6067178, 4423280, -5492727, -9968082, -1256815, 476205, -2426120,
-5265630, -215822, 7882876, -3669513, -3678640, 3402151, 195958, 289910, 3127810, -5743982,
-1488206, -4110821, 5461051, 3218004, -8053, 8286066, 381178, -784368, -1012539, -1446867,
--2040646, 3927211, 2108829, -2009508, -646393, -5757404, -2519535, -754841, 6058052, 4131759,
-755914, 3047279, 130997, 3244848, 23622, 1345935, -3442416, -2228551, 861678, 456340,
--161061, -1748589, 1644436, 1914482, -463856, -1797444, -306553, 1928977, -280247, 1029182,
--897648, -530965, -702764, 616865, -612033, 113280, -20401, 976031, -782758, 942208,
-1481764, -686658, 369904, 120796, -5369, 1752347, -537408, 445066, -628676, 696322,
-539018, 297963, -179315, 1536525, -50466, 74625, 679679, 3628174, 8248485, 2421288,
-365072, 258235, 2326799, 2168959, 495532, 1303523, 1871532, -125628, -170188, 2359548,
-9336185, 3122441, 7285875, -4126390, -3361886, -1366337, -4367445, -5120675, -2038499, 3788698,
--6309307, -883690, -734976, -9935870, 2007360, -10037339, -3325915, -1337346, 2396592, 32212,
-2106145, -1959579, -85362, -6774774, 2505577, -2246268, -3768834, 715112, 1921998, -315143,
-514859, 2898566, 5156108, -8650601, 2385854, 587874, -2537252, -2755222, -539018, 1195612,
--1137630, -5203890, -1204738, 1417339, 2733747, -356482, 6478422, 571768, 308164, 2641942,
--4115653, 6117644, 1970853, 3636227, 1641751, 3042984, -619012, -579821, 1827509, 1063541,
--834297, -1845762, -1480153, -3051574, -67646, -4096325, 290984, 2388002, -195958, -1744294,
--3193845, 2852395, -1692754, 1156957, 450972, -506806, -3038153, 254477, -274341, 748935,
--921807, -887448, 272730, -987306, -1665374, -905164, -689879, -168577, -1093606, -192200,
--617402, 1434519, -256624, -780610, -249645, 762894, -297963, -1304060, -1380832, 1481227,
-34897, 126702, -869731, 4925791, 5382668, -165893, 5937793, 379031, -766115, 734439,
-504122, -1092532, -48855, -4132296, -2352032, 3703873, 4359392, -5083094, -1203128, 2124398,
--3381750, -9731859, 2436857, 3611531, 4247186, -2228014, -2568391, -3463354, 5326833, 6067715,
-1053341, 2400887, -4742181, -3840775, 4516158, 1712618, -3550327, 6264210, -6252936, 1053341,
-615254, 5875516, 2171643, -1286343, 973884, -2020782, 3235721, -7638063, -2248952, -11009612,
--4793184, 5592048, -448287, 8568997, -1147830, -7132867, 4542465, 1007707, -2901787, -326954,
-366146, -2879776, 1917166, 5138392, 5793911, 172336, 2779381, -251256, 6589554, -3330747,
-2860448, -602906, -96100, 228707, 2292976, -657130, 8239358, 842350, 763967, -1253057,
-4862440, 1677722, -1614908, -3439732, 94489, 3332358, 1163936, 994285, -2128156, -87510,
-684510, -305480, -551903, -564788, -1127429, 922344, 95563, 419833, 719944, 1764158,
--660351, -1765768, 1999844, -501974, 217970, 69256, -214748, -201863, 805843, 750546,
-979253, -313533, 914828, 9664, 537408, 922881, -185757, 146566, 778463, 1185948,
-648003, 761283, 249645, 125091, 6022081, -8165270, -1122597, -5531918, -5745056, 2068027,
-1122597, 11906723, 628139, 4388920, -9922985, -2364916, 2201708, -5148055, 3419331, 1007170,
-850404, 2915209, 3368865, 7818988, 3485903, -1220308, 2480881, -3874597, 1145146, 3165928,
--205085, 670552, 3472481, 4493073, 10809359, 2131378, -1596117, -7369090, -301185, 5632313,
--8735963, 991064, -632434, 2774012, -4373888, -5141613, 9363029, -5948530, 1940788, -347892,
--5845988, 13545790, 3500935, 7117835, 3831111, 7781407, -1410897, -2881386, 4953708, -4517232,
-3811784, -3591130, 2081449, 5379984, 2966212, -2354716, -391379, 2770791, -4709432, -3455838,
-292058, -515933, 8014946, -4350802, -7466801, -1074279, 4170950, 6785512, -4161823, -7029788,
--1541893, 9896678, 1314797, 42950, -3505230, 533650, -192200, 3094524, 3138547, -143881,
-1508070, 1730335, -4788352, -1049583, 1666984, -177167, 2816962, 1176821, 294205, -1973538,
--201327, -215822, 1088774, -263067, 2938831, -505196, -291521, -1387811, 335544, -1770600,
-95026, -134755, 741956, 1774358, 70330, 1497333, -81068, -1652489, -332860, 238908,
--3153043, 3588445, -12938052, 7332046, 2153926, -2893734, 3933116, -10572599, -8825621, 1145683,
--4358855, 10009421, 8888435, 9452686, -6310918, 3676492, 137976, 9423158, 664109, 6663105,
-2665564, -2815888, -8483097, -7685307, 2449742, -10241350, -157840, -2416993, -4981625, -6839199,
--4023848, 62814, 8236674, 33286, 3208341, -11716134, -6551436, -1242856, -7353521, 514322,
-7348152, -7953206, 3278671, -95026, -2727841, -737661, -1713692, 8100309, 4337917, 4038343,
--1953136, -2463701, 11142756, -3371013, -3053185, -9193377, 6703370, -13052406, 1774358, -4291209,
-2025077, 4639639, -3159485, -6965363, -4323959, 477278, 9446781, -4754529, -1064615, -6140730,
--4966593, 3063386, 3267396, 7479686, -8757975, -69793, -4649839, -3050501, 1809792, -3451543,
--6887517, -3917010, -632971, 6286759, 6373195, 2217814, 313533, 934692, 2889439, 250719,
-420907, 1328756, -1845762, 187905, 2615098, -790274, 275952, 3237869, -834297, -119185,
-478889, 2357937, -56371, 370441, 815507, 404801, 1935420, -2330557, -2628520, -169114,
--987843, 31139, 1394791, -624918, 2633352, 1682017, -12078522, 3218004, 1097901, 2004139,
--16623671, 14829448, 291521, -343061, -306553, -5409512, 1732482, 174483, 5303211, -4671314,
-5947993, 1684164, -3724274, -6413460, -8009577, 3994320, 699543, -711354, 539018, -4634270,
-4974109, 3700651, 9185861, 5442798, 3627637, 5050345, -1206886, -5100274, -3810710, 278636,
--2680060, 3949759, -4495757, -6822556, -7456063, 406411, -10196789, 4620848, 5326833, -6126771,
-6209986, -7393250, 3690451, -10891500, 1457068, -2033130, 788663, -2926483, -168041, -10138270,
--1695975, -3518652, -6410776, -1762547, -5009006, 1546188, -4514548, -2645700, -6477885, 2813741,
--6194417, -503585, 9922985, -1742146, 293668, 3171833, -2209224, -10132902, -11502996, -1970853,
--8042863, 343597, -2194728, 7444789, 546535, 2766496, -7576859, 612570, -1709397, -1435056,
-5475547, 1298691, -652835, -3042448, 1488206, 2065342, 769873, 2826089, -120796, 1549410,
--864899, -361851, 427886, 440234, 1030792, -341987, 3182571, -970126, -2715493, 1048509,
--37581, 752156, 1050656, 609349, -395137, -1465658, 809064, -2523293, 949188, 4756140,
-3252901, -10346039, -366683, 1800128, -9637370, -10960757, 5935108, -10760504, 2042794, 7117835,
--5239323, -12360379, -5319317, 261456, 8099235, -3331284, 14315663, -1016834, -1167157, -8311299,
--5921150, -1005022, 2863670, 781684, -2998424, -2516314, -707059, -3117610, -6186901, 5037460,
--5134097, -3150359, 5345087, 1567126, -8719320, -9263171, -8537858, 7318088, -7944616, -8559870,
-13877576, -8767639, 6097243, -1248225, 3708704, -12589623, 5695127, 692027, -2098629, -647466,
--2510945, 4029753, 2914135, 11804718, -3048353, -2278480, 5550172, 11406896, 3077344, 2273648,
--5486821, -3610457, -9501005, -2037425, -312996, -134755, 6759205, -2186675, 3578782, 11942157,
--1919314, -476205, -1474784, -272730, -12256763, -13955422, 629213, 9147743, 33823, -18512920,
-4748623, -6505802, 3022046, -11576011, -7264401, -1839320, 250719, -4268124, 1773285, 4222490,
--606664, -615254, -493384, -2020782, 1811939, -2298344, 1802813, 234076, 525060, -2013266,
--1443109, -2792803, 1184874, 147640, -952409, -2682207, -685584, -843961, -1792075, -2000381,
-1083406, -2267206, -957241, 1829656, 457414, -1129576, -273267, -4295, -2931315, 237297,
-5150203, -812823, 6092948, -881005, -2511482, -3659312, 5179731, 3205656, -2806224, 2368138,
-5273683, -2702071, -17706540, -7693360, -3430068, -1944547, 7989176, -13894219, -10161356, 8572218,
-5361730, 21530134, 6125697, 4981625, 5978058, 2748779, -3787088, 450435, -3990562, 6869264,
-377420, 6932077, 281320, -182536, -9366250, 4907537, -6328635, 4982162, -907312, 5222680,
-2143726, 7005629, -10843182, 1282048, -7496329, 9114994, 639950, -9145596, 12171937, 8937290,
-5828271, -5483063, -18320720, 5295695, -1908039, -2290291, 9113384, -879395, 4269735, 8710194,
--1828582, -11070278, 7516, 4948339, 3329137, -2983392, -1127429, -8121783, 3119757, 1091995,
-1823214, -1235877, 1258962, 6955700, -4233764, 3161096, -1033477, -289373, 12684112, -3403762,
-5890548, 4117263, -3844533, -4451197, 1686848, 914291, -1994476, 1022739, -2079838, 1986422,
--1843615, 4743792, 559956, 4531191, 1005559, -163209, 5887864, 1995012, -1576790, 1566053,
--1219234, -1851131, 967978, 2235531, -2044404, 1401233, -988379, -2301029, 35970, 2221035,
--913754, -2561411, 907849, -1238024, -3712999, 1591822, 156229, -2050847, -1016297, -732292,
--2034741, -270046, 3005403, 4006131, -3721589, 4614943, -5037997, -20020454, 4126927, 4909148,
-20354386, -4231080, -3228742, 9645960, 12663174, -20552492, -11702175, 11277510, -5801427, 408559,
-4655208, -13080323, -28676960, -11245298, 16370268, 13011603, 11030550, -3306051, 6205691, -3321620,
-5720360, -5954436, 2047089, -14460081, 3601867, -5083094, 7480760, 7251516, 306553, -6810208,
-6818261, 4294431, 11733851, -1177895, -7192460, -3578245, -18341120, -9376450, 4570382, -1200980,
--12265353, 8395587, 11526618, -16221555, 15776489, -1472100, -1668058, 9911174, 2094870, 9371619,
--1166621, 3368865, -3493956, -1873680, 4792647, 18801756, -6728067, 11979201, -941672, 1141388,
-4561792, 10433012, -9560060, 1139240, 15319611, 4570919, -6929930, 4084514, 6089727, 1425392,
-12054363, 8679592, 15137075, -1349157, 4388383, -124017, 590558, -8370355, -5753646, -6653978,
--3164854, -4832, -1335198, -2688650, -2321967, 4509179, 6585259, 2994129, -3292093, 5252745,
--1461900, -835371, -3080029, -2524367, 3379066, 1101659, -1132798, 214212, -3423089, -2960843,
--3367254, 80531, -1850057, 3060701, 1948841, -1294933, 1424855, 3582003, -2117956, 1647657,
-2161442, -1910724, -1656784, -2035278, -261456, -583579, 2297271, -756988, -860067, -12996571,
--3260417, 13558138, 8637716, 10240813, -6526740, -3253975, -989990, -1348620, 14515379, 1940788,
--14792941, -6550899, -4476967, 9608379, 1928440, 2127083, 8163122, 17803176, -26140782, 17455284,
--3388729, -3025805, -6711960, 5246840, 5408438, 10290205, 1648731, 9810779, -949725, -2523293,
-3078955, -1552631, 5031018, 9028021, 1115618, -597537, 11825656, -8676371, -1574642, 2950106,
--974421, 10453950, -12199855, 1194538, -10433549, 1782948, -11065983, -1490354, 388695, 6172942,
-15095736, -8702141, -4795868, -9023726, -489089, -13225815, -8606041, -8669391, 5944235, 10949482,
-175557, 21616034, -13619878, 19325206, -13534516, -3094524, 5972689, 4456029, 19110456, 11075647,
--14257681, 7545184, -5962489, -19673634, -470299, -12443057, 15807090, 24058260, 15282031, -2899640,
--8473970, -3051038, 13435195, -1917166, 7010461, 891743, 3115462, 4817880, 1515050, 1966558,
-1595580, -5772973, 4076461, 151398, 1723893, -2178622, -1923072, -5474473, -3105261, -1832340,
-3416110, -1620276, 2288681, 2969970, -1096290, -627065, 72478, 3372623, 2081985, 1303523,
-6123550, -7516, 6396817, -5611912, -2528662, 4209605, 3957276, -2297808, 1341104, -1912871,
--4183835, 580894, -13309567, -8424041, 8590, 16798154, -2922188, 7582765, 15613280, -12713640,
-5855114, -20494510, 12792023, -12474733, -5994164, 20367808, 7052873, 21938156, -9041980, 404801,
--9600863, 6528351, 28025198, 7403450, 9638443, -13790603, -2487860, 955093, 10907606, 9717900,
-18002892, -14214731, -4833449, -15490873, -13169980, 1258962, 1285806, 9598178, -8930848, 6802155,
--21202642, 13684303, 10371272, 5104032, -3442416, -2262911, 1571958, 6635725, 2284923, 2064269,
-67646, 14821932, 12642773, 5661841, 1291175, -10740639, -10675678, 30303142, 1283122, 4025995,
-16907138, 7687992, -4571456, -3256659, 10814728, 21903260, -15504295, -6245420, -17493938, -16127602,
-21316996, 9750113, 382252, -3868155, 7176354, 16374026, 10430328, 16887274, 4799089, -7120519,
-12189654, -8302172, -21845814, 6803765, 948651, 666794, 213138, 9518184, 16088411, -2947958,
-8589935, 9678709, 8686571, 1310502, 2048699, 8522826, 259309, -2243047, -1646583, -3148748,
-8181376, -4364224, -1187559, 2320356, 4680441, 957778, -599148, 8877161, 1937030, -1517734,
-6600828, 8506720, 3919695, -3120294, 104690, -1232656, 2661806, 381715, 163209, 77846,
--1758252, 3164317, 1233193, 1031866, 2914672, 3964792, -518617, -3668439, -1414655, -199179,
-4963372, 2016487, 831076, -663572, 6529961, -13982803, -10441602, -4072166, -13013214, 14706505,
--1637993, -3707631, -12394202, -2028298, -11540577, -28572806, 4978941, -3482145, -9020505, 6512781,
--15170898, -874026, -8291435, -22888954, -5255966, -9899900, -10870025, 18385682, -4913443, -6563784,
--3343632, -365609, -4664872, -6417218, -1056025, 4897337, 15495168, 11754252, -467078, -838056,
--26061862, 1658394, 3525095, 10742787, -6045167, -5338645, 39462160, -6713034, -19351512, -18688476,
-16339129, -10894721, 4682588, -22159884, 5485747, -6158446, -11950210, -10205379, -25346750, 4148402,
-7210177, 18074296, 5237176, -9652939, 14118631, 1767379, 13275744, 14914274, 42643656, 11548630,
-2903935, -16510391, -18672908, -4905390, 1919850, -2274722, -16909824, 7668127, 19468550, 4619774,
-13826573, 21637508, 19221052, -8080444, -15518254, -10445897, 1285269, 3536369, -1969243, -16275242,
-3083250, -13211856, 3996467, -5796059, 788663, -7237020, 4748623, -1096827, 2988224, 527744,
--3229816, -7389491, -1818382, -52613, 4312147, 6242198, 4726075, 7176891, 310311, 6164352,
-10422812, 397821, 1896765, 6068252, 1945083, -5177046, -3146064, -8920647, -2786360, 5612986,
-2978560, 835371, -1306207, 3623342, 1832877, -1748589, -4350802, -7757248, 931471, 1428077,
--1240709, -2414309, -710817, -2615098, -5699959, -17220134, -7433515, -2644089, 5349382, -6278169,
-10288057, -5299990, -7029251, 19945292, 10391137, 22677428, 324807, -6554657, -8902930, 24042154,
--20590074, -7671349, 28067074, -16885664, 5644661, 5859946, 7314330, 1672890, 15794205, -4888747,
-14219563, -5352066, 3146064, 3412352, -7243999, 10554345, -15908559, -11086921, -10305774, -4737886,
--14133664, -26120380, -4709432, -7807714, 4209605, -6717329, -34685620, 9676561, 21874268, -1240709,
--4589173, 34171296, -42253352, -9137006, 23656142, -5765994, 18371722, -13435195, -8290898, 6374805,
--40318468, 13081397, -13689135, 20211580, 14899242, -21449066, 42439644, 6273337, 2312840, -2151779,
-16764868, -30639222, 12620225, -1421097, -4798552, 8238821, -19746650, 28074054, 25535728, -47036336,
-6835978, -9343701, -44096968, -7581691, -19645180, 10895795, 2864206, 7682623, -17756468, 27748174,
--2636036, -7414188, 12885976, -503585, 9178345, -1908576, 14445049, 376883, 7243999, 2261300,
--547608, -1495186, 8114267, -5777805, -6440304, 179315, -7579544, 11516955, -2420751, -5914170,
-704912, 5320928, 2625836, 5487895, 2202245, 13361106, 3245385, -7200513, 13902272, -7448547,
-7948911, 11937325, -3227668, 2720862, 8436390, -5696737, 8297340, 1344325, 25973814, -11578695,
--33418066, -33528126, 2697776, 4203163, -14720464, 8803072, -18636400, 6036577, -8427263, 17314624,
-22166326, 766115, 21447456, 19520090, -10785200, -228170, -13807783, -3429532, -3209951, 7567196,
--1316944, -2088428, -2278480, -22378928, -33872260, -13586055, 17746804, 13736916, -14506789, -16690780,
-9824738, 9958955, -22010634, 11182484, -14627048, -2679523, 17119740, 23756000, 222265, -13988172,
-9128953, 1868311, 14828375, 2623151, 12384001, 12787728, -3531000, -48535276, 5571110, 1343251,
-19731616, -7089918, 20123532, 19950660, -13228499, -65786016, -8760660, 2772938, -7839389, 39688720,
-41633804, 29070486, 41371808, -10602127, 19496468, -16209743, 27679990, 19429358, -32442572, 41181220,
--42405824, -36101884, -34027952, 10934987, 25752624, 21461414, 7258495, -26554710, 24693914, 3524021,
--8740795, -11313481, 1547799, 23327578, -17875118, -7089381, 35584340, 6664179, 16327855, 3218541,
-1825361, 8850854, -13305809, 7334731, -5377836, 386010, 3739306, -3309272, -6845641, -4463008,
--5978595, -13358959, 3125126, 12620761, -2385318, 12903692, 10004053, -8060043, -6373195, -5942088,
-8006893, 5084705, -16334834, -9399536, 963683, 936303, -2344515, 2316598, 10889353, -128312,
-8680666, 1026497, -6244346, -25970056, -49162344, 10479183, 18284212, -2536178, 25090662, 9680319,
--30969936, -7728794, 6725919, 7763691, 8673686, -6169184, 14525043, 1340567, -9157944, -4141422,
-5248987, 20611012, 26866094, 20327006, 32196686, -30735322, -8444443, -7895224, -31434328, -7458211,
-5548561, 1714766, 3631932, -12469364, -14107894, 16148003, 36172216, -16960288, 18731426, -12077448,
-4962298, -11132018, -1802276, -28004260, -10111427, -1509681, -38807712, -22670448, -37977176, -32076426,
-21443698, 50331648, 40214852, 1264868, -2398202, 221728, -8910983, -17191680, -60797948, -20279224,
--8615704, 5055714, 2731599, -21413634, -14899778, 7984344, 26934814, 16076063, 8767102, 17614734,
-30195230, 11856257, -29972966, 23111220, -17701708, -9256728, 17963700, 40227736, 8767639, 51556252,
--12151536, -53436372, -6068252, -17193290, -32693828, 49573048, 14161581, 16183974, 18254, -4321811,
-14434848, 11903502, 800475, -1920387, -8477192, -1648194, -2438468, 13610751, 16445430, 19600620,
--2107218, -633508, -676457, -620623, 12899934, -5400922, -4179003, -7423314, -5786395, 7359964,
--1383516, -139050, 2270964, 4730370, 7625715, 9400610, -1194001, -5427765, -9564892, 4937602,
-1917166, 4664872, 12182675, 10699300, -5262946, 2784750, 5545877, -9273908, -2783676, -2037425,
--8924405, -4029216, -295279, 8314520, -21051246, -34443492, 21228950, -3394098, -20825222, 9968619,
-22514218, 19487340, -40233644, -34765612, 8604967, -16185047, 4049617, 19583978, -10747619, -7940858,
-32411434, 8750459, -4591857, -10395968, -9287867, 12124156, -7377143, -1499481, -1028645, -13288092,
--5183489, -22068078, -29364154, 10390063, 15913928, -18568218, 13444858, 9178345, -6468758, -12904766,
-1897302, 23080080, 13251585, 4098473, -23249194, -25987236, -12708808, 6931004, 28933048, -21816286,
--11594801, -9957882, 17245368, 46675556, 12291123, -45788108, -10241886, -5449240, 23396834, 460635,
-12079059, -6039798, -10927471, -10197863, -25971130, 24059334, 25480430, 10232760, 26944478, -8530879,
-17397838, -8167417, -19589346, -21659520, -23164906, 4013647, -43299176, 45251240, -2212445, -17275970,
--25068114, -20513300, -1463510, -13454522, -4125853, -23851028, -14770393, -42330124, -11839614, -27910308,
-10189273, -9950902, 8152922, 9416179, 10082436, -7044820, 23285166, -5363341, 16848620, 569620,
-4001299, -1376000, 7291244, -3666292, -9431211, 1867237, 2619393, 8646843, -14044543, -4937065,
-3549791, -13838385, -17717, 5006322, -17286170, -7592429, 4056597, -2440615, -13255343, -20445654,
--12312061, 7405598, -3937948, 9320616, 2201171, 321586, 13785234, 921271, 11850889, 4572530,
-7366943, 27734214, 16589311, -7842074, 4184372, 35009352, 26261578, 10012106, 5141613, 16452946,
-14889041, -23845658, -34368328, 11627550, 26725434, 38292316, 139586, -8624294, -24023362, -14114873,
-16023449, -504659, -20526722, -41261212, -41300944, 8644695, -12485470, 23076322, -47576964, -15721191,
-9130564, 6799470, 8931921, -15060840, 6787122, -1307818, -9030169, -1800128, -22395034, 20528334,
-25242596, 18821620, -30118458, -16060493, -838056, 10152766, 14966350, 16133508, 12831215, -3410204,
--2259690, -4080219, 21340618, 59531468, 37484328, -31016106, -30618284, -19399830, -39408472, 46275052,
-24566140, -14349486, -40878424, -39055212, 44288628, 27315992, 5827734, 34170760, -35618700, -3926674,
-2079301, -9144522, 3340411, -13224741, -36035312, 8922258, -27573690, 36710696, 34586296, -13249437,
--6293201, 401579, 3857418, 39071316, 39851928, -63382444, -35478040, -20365662, 7868917, 17812304,
-17112760, -24553792, -26456998, -31108448, -3969624, 32270236, 600759, 6429566, -7481296, -34405908,
-7811472, -14419816, -18131742, 7876970, 60157460, 20395726, -11409581, -15426449, -14570140, -11904039,
-15700790, 18845780, 21637508, -3890704, 13912473, -21301964, 5020280, 7808251, 9575093, -7646116,
-4008278, 17859010, -4770635, -5012227, -3134789, 17635136, 11276974, 27436252, 6740415, -9696962,
--7526930, 10198400, 33694556, 27627914, 5574868, -20249698, -25163676, -7978439, -6192269, 5990406,
--12450573, 23312546, -38139848, 33227478, 48988932, 53179748, -59977608, 11013907, -1905892, -5150740,
-25354802, -10827613, -17847736, 17576616, 8912057, 36453000, -3770445, -28857886, 813896, -13165685,
-21475374, -33155536, -11808476, -15576773, -22164178, 30285962, -22216256, -3135326, 20776368, 12119324,
--7429757, -11567421, -31115428, 4030290, 40795748, 24919400, -1846836, 12182138, -9314173, 33419140,
--22603876, 15454366, -12523051, 20775294, 34367792, -7624104, -22499186, 11092290, -30647276, 50616188,
-5815386, -26798448, -9310415, -41831908, 5216238, 60031832, -11052025, -35242356, -24785182, 36828272,
-10845329, -19252190, -1123671, 9537512, 20488604, 50604380, -41384156, 18434000, 41275708, -6209986,
--49125836, -47346108, -27926952, 83122112, -60949344, 20666846, -64188824, -30693984, 133539120, 12936978,
--58486180, -55940340, -64764884, 81541568, 10302553, -15316390, -64906084, -15452755, 20020990, 66015796,
--23839752, 7272454, -28724204, 9900973, 39816496, 24526410, -36048736, 17019882, 6336151, 15636365,
-13537737, -36253284, 993211, -8506183, -14024679, 7344394, -13616657, -26673894, 10009421, -7761006,
-34596500, 5345087, -32389958, -36488968, -11977590, 1187022, 27808302, 21333102, 4618164, -16916802,
-6901476, -510027, -13963476, 1184874, 17540110, 15965467, 3513820, -26780732, 6355478, 10784126,
-16722455, 15469935, 10601590, 21766358, -56346748, 9863392, -50626928, 22338662, 23922430, 47257524,
-20907364, 10828686, 12352326, -14744086, -36152352, -25150254, -23746874, 10122164, 5872294, -6171331,
-21592948, 33324114, -14936286, -20955682, 23133230, 4101694, -30861488, -7109782, 13946296, -25458956,
--4518306, 5604396, 12928925, 6887517, 18294414, 31389232, 5520107, -20044076, -2341294, 6033356,
--15936476, -7128572, 14653892, -11171747, -20171850, 27997282, -6790344, -6956774, -11180874, -11028402,
-18126910, 4610111, 4117263, 24160802, -11590506, -18694918, -1119376, 1782948, -7958038, 6166500,
--1352378, -6668474, -1240172, -23570244, 5215701, 4597763, -4045322, 12677670, 8531953, 4421669,
-5635534, -24342800, 28765006, -10801843, -10464151, 8811125, -26387742, 8564165, -19772956, 2283312,
--15652471, 5057861, 6838662, 10653130, 907312, 9448391, 14223858, -5520644, -3267933, 7903814,
--532039, -5030481, 4299799, 997506, -3338800, -5061082, -4638028, -3042984, 10249939, -9859097,
-9939628, 678605, 2653753, 4991289, 2920578, 7274601, -463320, -205085, -4511327, -988916,
--6196564, 12381317, 846109, -5559835, -9126806, -2966749, 4734128, -8860518, 11675332, -5706401,
--14987825, 846109, 6252399, -865973, -513249, 1530619, -7132330, -26132728, 42376296, -2136746,
-24011014, -21688512, 2743410, -3882114, 7617662, 6896107, 12890271, -6502044, 9497783, -5819681,
-5253282, -888521, 4164508, 10264972, -1221381, 15888695, -6320045, 12018929, 668404, -449898,
--4437775, 7717520, -6062347, 6977711, -4037269, 542777, -3343632, 3848291, -2724083, 9064528,
--2775623, -6248641, 14468134, -9921911, 7580081, 6137509, 2253247, 7058779, -8815957, -6080063,
-6656663, 6260452, -3862249, -765578, 7095286, -566936, -9816685, 4400194, -4974646, 5133560,
-6888591, 3301219, 2376728, 2290828, -10572062, 5250598, 3013457, -3131031, 3904662, -4920959,
-2444373, -2413235, -457951, -1265942, 3723737, 7204808, -9863929, 8894877, -1723356, -3412352,
-5094368, -6809671, 3283503, 4922033, -1176284, -2423972, 3405909, -1277216, 2007360, -853625,
--3503083, -470836, 3799972, -930934, 1478006, -705448, -2567854, 1745367, 1540283, 2741800,
--3731790, 3080029, -247497, -1473174, 3557307, -3889630, 6204617, 3230352, -2316061, 6398428,
--480499, -2420214, 255014, -2416993, 3782256, -4059281, 4336843, 1832340, 2333778, 1174674,
--2493766, 2177549, 974421, 579284, 392453, 261456, -1018444, 1227824, -2612414, 3262565,
-1263794, -2889976, 10449655, -35759360, -111293344, -16433619, 53932980, 27856084, 131200512, 24330990,
-28149752, 17680232, -35443144, -49896244, -35565552, -63940252, -54955716, -31216896, -12846784, 36457292,
-99621768, 78989816, 68032816, 38626788, -30762704, -50018116, -36817532, -68898792, -65253976, -20082194,
--9229885, -15310485, 25184614, 39412768, 26053808, 48085916, 37156836, 11291469, 34170224, 6876243,
--5182415, 3049427, -20742544, -54444616, -46282032, -39361764, -55173688, -23181012, 15995532, 10948409,
-35175244, 39821328, 34808564, 35711044, 36487896, 23073102, 22573274, 2368675, -20426328, -38086696,
--26024818, -35860828, -47352552, -23387170, -21779780, -17766670, 6587406, 17812304, 17051558, 33292976,
-41648296, 20088636, 29329258, 25014964, -7077569, 2807835, 11193759, -13973676, -12661027, -22353694,
--40098888, -40257804, -31987842, -33121178, -6584185, 13799193, 9174050, 26213796, 39355860, 31019328,
-28635620, 29444686, 19611894, 6410239, 1766305, -9224516, -17289928, -18564460, -27628988, -34916472,
--37164352, -31993212, -28748364, -16441135, 3605625, 18033494, 41303088, 54681912, 47960828, 39767104,
-33712808, 19489488, 3999688, -16940962, -34868692, -47509316, -49798000, -54880556, -40511744, -16920024,
--4352413, 11444477, 32559074, 42089604, 45386532, 46777024, 39070244, 16564078, -1279900, -12120935,
--26682484, -34649112, -32581086, -28914256, -20886962, -8549132, 995359, 11500849, 14865419, 11462194,
-12537010, 10005663, 6784975, 5341866, 5468567, 1833414, 1801202, -470836, -2814277, -3337190,
--2980707, -4291746, -5121749, -5400922, -4730907, -3991635, -2706366, -787590, 926102, 956167,
-603980, 410169, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+3634616, 3891240, -1843078, 3905199, -2352032, -512175, 5196911, -2124398, 2473901, 1511292,
+-5755256, -2593624, 4327717, -1679869, -821413, 2725157, 1804960, 1943473, 523449, 6663105,
+1141388, -1705639, 1496796, -2295123, 4129611, -1181116, -2263985, -979253, -5386963, -1818919,
+-3966939, 1309965, -64425, 1466195, -1587527, 2268817, 1071594, -238908, 695248, 371515,
+525597, 738198, -2847563, 7128572, 1053878, -2585570, 5277978, -1260036, -4549444, -4983236,
+4872641, -960999, -385473, 3230889, 366146, -830539, 2522757, -262530, 1463510, 428960,
+1859184, -958315, 2024003, -902480, 2404108, 3494493, 1900523, -2053531, -2113124, -1033477,
+942208, -2194728, 1558536, -1073742, 1933272, 2520609, -3112778, -1751810, 2724620, 817654,
+-854162, 4202089, 2436320, 2010045, -203474, 1114007, -78920, 568546, -478889, 646929,
+253940, 312459, -947040, 1563368, 515396, 120259, -263604, 641024, 1021665, -523449,
+1099512, -31675, 4567161, 899796, 1040993, 3833795, 49392, 2767570, 1318555, -309775,
+296890, -2989297, 1402307, 243739, 4697084, 1665374, 1542967, 215285, 1391569, 5153961,
+-4856535, 2755759, 731755, -3204046, -1431835, -1983738, -644782, -1840394, 1309965, 5951214,
+3748970, 4446365, 3534758, 6067178, 4423280, -5492727, -9968082, -1256815, 476205, -2426120,
+5265630, -215822, 7882876, -3669513, -3678640, 3402151, 195958, 289910, 3127810, -5743982,
+1488206, -4110821, 5461051, 3218004, -8053, 8286066, 381178, -784368, -1012539, -1446867,
+-2040646, 3927211, 2108829, -2009508, -646393, -5757404, -2519535, -754841, 6058052, 4131759,
+755914, 3047279, 130997, 3244848, 23622, 1345935, -3442416, -2228551, 861678, 456340,
+-161061, -1748589, 1644436, 1914482, -463856, -1797444, -306553, 1928977, -280247, 1029182,
+-897648, -530965, -702764, 616865, -612033, 113280, -20401, 976031, -782758, 942208,
+1481764, -686658, 369904, 120796, -5369, 1752347, -537408, 445066, -628676, 696322,
+539018, 297963, -179315, 1536525, -50466, 74625, 679679, 3628174, 8248485, 2421288,
+365072, 258235, 2326799, 2168959, 495532, 1303523, 1871532, -125628, -170188, 2359548,
+9336185, 3122441, 7285875, -4126390, -3361886, -1366337, -4367445, -5120675, -2038499, 3788698,
+-6309307, -883690, -734976, -9935870, 2007360, -10037339, -3325915, -1337346, 2396592, 32212,
+2106145, -1959579, -85362, -6774774, 2505577, -2246268, -3768834, 715112, 1921998, -315143,
+514859, 2898566, 5156108, -8650601, 2385854, 587874, -2537252, -2755222, -539018, 1195612,
+-1137630, -5203890, -1204738, 1417339, 2733747, -356482, 6478422, 571768, 308164, 2641942,
+-4115653, 6117644, 1970853, 3636227, 1641751, 3042984, -619012, -579821, 1827509, 1063541,
+-834297, -1845762, -1480153, -3051574, -67646, -4096325, 290984, 2388002, -195958, -1744294,
+-3193845, 2852395, -1692754, 1156957, 450972, -506806, -3038153, 254477, -274341, 748935,
+-921807, -887448, 272730, -987306, -1665374, -905164, -689879, -168577, -1093606, -192200,
+-617402, 1434519, -256624, -780610, -249645, 762894, -297963, -1304060, -1380832, 1481227,
+34897, 126702, -869731, 4925791, 5382668, -165893, 5937793, 379031, -766115, 734439,
+504122, -1092532, -48855, -4132296, -2352032, 3703873, 4359392, -5083094, -1203128, 2124398,
+-3381750, -9731859, 2436857, 3611531, 4247186, -2228014, -2568391, -3463354, 5326833, 6067715,
+1053341, 2400887, -4742181, -3840775, 4516158, 1712618, -3550327, 6264210, -6252936, 1053341,
+615254, 5875516, 2171643, -1286343, 973884, -2020782, 3235721, -7638063, -2248952, -11009612,
+-4793184, 5592048, -448287, 8568997, -1147830, -7132867, 4542465, 1007707, -2901787, -326954,
+366146, -2879776, 1917166, 5138392, 5793911, 172336, 2779381, -251256, 6589554, -3330747,
+2860448, -602906, -96100, 228707, 2292976, -657130, 8239358, 842350, 763967, -1253057,
+4862440, 1677722, -1614908, -3439732, 94489, 3332358, 1163936, 994285, -2128156, -87510,
+684510, -305480, -551903, -564788, -1127429, 922344, 95563, 419833, 719944, 1764158,
+-660351, -1765768, 1999844, -501974, 217970, 69256, -214748, -201863, 805843, 750546,
+979253, -313533, 914828, 9664, 537408, 922881, -185757, 146566, 778463, 1185948,
+648003, 761283, 249645, 125091, 6022081, -8165270, -1122597, -5531918, -5745056, 2068027,
+1122597, 11906723, 628139, 4388920, -9922985, -2364916, 2201708, -5148055, 3419331, 1007170,
+850404, 2915209, 3368865, 7818988, 3485903, -1220308, 2480881, -3874597, 1145146, 3165928,
+-205085, 670552, 3472481, 4493073, 10809359, 2131378, -1596117, -7369090, -301185, 5632313,
+-8735963, 991064, -632434, 2774012, -4373888, -5141613, 9363029, -5948530, 1940788, -347892,
+-5845988, 13545790, 3500935, 7117835, 3831111, 7781407, -1410897, -2881386, 4953708, -4517232,
+3811784, -3591130, 2081449, 5379984, 2966212, -2354716, -391379, 2770791, -4709432, -3455838,
+292058, -515933, 8014946, -4350802, -7466801, -1074279, 4170950, 6785512, -4161823, -7029788,
+-1541893, 9896678, 1314797, 42950, -3505230, 533650, -192200, 3094524, 3138547, -143881,
+1508070, 1730335, -4788352, -1049583, 1666984, -177167, 2816962, 1176821, 294205, -1973538,
+-201327, -215822, 1088774, -263067, 2938831, -505196, -291521, -1387811, 335544, -1770600,
+95026, -134755, 741956, 1774358, 70330, 1497333, -81068, -1652489, -332860, 238908,
+-3153043, 3588445, -12938052, 7332046, 2153926, -2893734, 3933116, -10572599, -8825621, 1145683,
+-4358855, 10009421, 8888435, 9452686, -6310918, 3676492, 137976, 9423158, 664109, 6663105,
+2665564, -2815888, -8483097, -7685307, 2449742, -10241350, -157840, -2416993, -4981625, -6839199,
+-4023848, 62814, 8236674, 33286, 3208341, -11716134, -6551436, -1242856, -7353521, 514322,
+7348152, -7953206, 3278671, -95026, -2727841, -737661, -1713692, 8100309, 4337917, 4038343,
+-1953136, -2463701, 11142756, -3371013, -3053185, -9193377, 6703370, -13052406, 1774358, -4291209,
+2025077, 4639639, -3159485, -6965363, -4323959, 477278, 9446781, -4754529, -1064615, -6140730,
+-4966593, 3063386, 3267396, 7479686, -8757975, -69793, -4649839, -3050501, 1809792, -3451543,
+-6887517, -3917010, -632971, 6286759, 6373195, 2217814, 313533, 934692, 2889439, 250719,
+420907, 1328756, -1845762, 187905, 2615098, -790274, 275952, 3237869, -834297, -119185,
+478889, 2357937, -56371, 370441, 815507, 404801, 1935420, -2330557, -2628520, -169114,
+-987843, 31139, 1394791, -624918, 2633352, 1682017, -12078522, 3218004, 1097901, 2004139,
+-16623671, 14829448, 291521, -343061, -306553, -5409512, 1732482, 174483, 5303211, -4671314,
+5947993, 1684164, -3724274, -6413460, -8009577, 3994320, 699543, -711354, 539018, -4634270,
+4974109, 3700651, 9185861, 5442798, 3627637, 5050345, -1206886, -5100274, -3810710, 278636,
+-2680060, 3949759, -4495757, -6822556, -7456063, 406411, -10196789, 4620848, 5326833, -6126771,
+6209986, -7393250, 3690451, -10891500, 1457068, -2033130, 788663, -2926483, -168041, -10138270,
+-1695975, -3518652, -6410776, -1762547, -5009006, 1546188, -4514548, -2645700, -6477885, 2813741,
+-6194417, -503585, 9922985, -1742146, 293668, 3171833, -2209224, -10132902, -11502996, -1970853,
+-8042863, 343597, -2194728, 7444789, 546535, 2766496, -7576859, 612570, -1709397, -1435056,
+5475547, 1298691, -652835, -3042448, 1488206, 2065342, 769873, 2826089, -120796, 1549410,
+-864899, -361851, 427886, 440234, 1030792, -341987, 3182571, -970126, -2715493, 1048509,
+-37581, 752156, 1050656, 609349, -395137, -1465658, 809064, -2523293, 949188, 4756140,
+3252901, -10346039, -366683, 1800128, -9637370, -10960757, 5935108, -10760504, 2042794, 7117835,
+-5239323, -12360379, -5319317, 261456, 8099235, -3331284, 14315663, -1016834, -1167157, -8311299,
+-5921150, -1005022, 2863670, 781684, -2998424, -2516314, -707059, -3117610, -6186901, 5037460,
+-5134097, -3150359, 5345087, 1567126, -8719320, -9263171, -8537858, 7318088, -7944616, -8559870,
+13877576, -8767639, 6097243, -1248225, 3708704, -12589623, 5695127, 692027, -2098629, -647466,
+-2510945, 4029753, 2914135, 11804718, -3048353, -2278480, 5550172, 11406896, 3077344, 2273648,
+-5486821, -3610457, -9501005, -2037425, -312996, -134755, 6759205, -2186675, 3578782, 11942157,
+-1919314, -476205, -1474784, -272730, -12256763, -13955422, 629213, 9147743, 33823, -18512920,
+4748623, -6505802, 3022046, -11576011, -7264401, -1839320, 250719, -4268124, 1773285, 4222490,
+-606664, -615254, -493384, -2020782, 1811939, -2298344, 1802813, 234076, 525060, -2013266,
+-1443109, -2792803, 1184874, 147640, -952409, -2682207, -685584, -843961, -1792075, -2000381,
+1083406, -2267206, -957241, 1829656, 457414, -1129576, -273267, -4295, -2931315, 237297,
+5150203, -812823, 6092948, -881005, -2511482, -3659312, 5179731, 3205656, -2806224, 2368138,
+5273683, -2702071, -17706540, -7693360, -3430068, -1944547, 7989176, -13894219, -10161356, 8572218,
+5361730, 21530134, 6125697, 4981625, 5978058, 2748779, -3787088, 450435, -3990562, 6869264,
+377420, 6932077, 281320, -182536, -9366250, 4907537, -6328635, 4982162, -907312, 5222680,
+2143726, 7005629, -10843182, 1282048, -7496329, 9114994, 639950, -9145596, 12171937, 8937290,
+5828271, -5483063, -18320720, 5295695, -1908039, -2290291, 9113384, -879395, 4269735, 8710194,
+-1828582, -11070278, 7516, 4948339, 3329137, -2983392, -1127429, -8121783, 3119757, 1091995,
+1823214, -1235877, 1258962, 6955700, -4233764, 3161096, -1033477, -289373, 12684112, -3403762,
+5890548, 4117263, -3844533, -4451197, 1686848, 914291, -1994476, 1022739, -2079838, 1986422,
+-1843615, 4743792, 559956, 4531191, 1005559, -163209, 5887864, 1995012, -1576790, 1566053,
+-1219234, -1851131, 967978, 2235531, -2044404, 1401233, -988379, -2301029, 35970, 2221035,
+-913754, -2561411, 907849, -1238024, -3712999, 1591822, 156229, -2050847, -1016297, -732292,
+-2034741, -270046, 3005403, 4006131, -3721589, 4614943, -5037997, -20020454, 4126927, 4909148,
+20354386, -4231080, -3228742, 9645960, 12663174, -20552492, -11702175, 11277510, -5801427, 408559,
+4655208, -13080323, -28676960, -11245298, 16370268, 13011603, 11030550, -3306051, 6205691, -3321620,
+5720360, -5954436, 2047089, -14460081, 3601867, -5083094, 7480760, 7251516, 306553, -6810208,
+6818261, 4294431, 11733851, -1177895, -7192460, -3578245, -18341120, -9376450, 4570382, -1200980,
+-12265353, 8395587, 11526618, -16221555, 15776489, -1472100, -1668058, 9911174, 2094870, 9371619,
+-1166621, 3368865, -3493956, -1873680, 4792647, 18801756, -6728067, 11979201, -941672, 1141388,
+4561792, 10433012, -9560060, 1139240, 15319611, 4570919, -6929930, 4084514, 6089727, 1425392,
+12054363, 8679592, 15137075, -1349157, 4388383, -124017, 590558, -8370355, -5753646, -6653978,
+-3164854, -4832, -1335198, -2688650, -2321967, 4509179, 6585259, 2994129, -3292093, 5252745,
+-1461900, -835371, -3080029, -2524367, 3379066, 1101659, -1132798, 214212, -3423089, -2960843,
+-3367254, 80531, -1850057, 3060701, 1948841, -1294933, 1424855, 3582003, -2117956, 1647657,
+2161442, -1910724, -1656784, -2035278, -261456, -583579, 2297271, -756988, -860067, -12996571,
+-3260417, 13558138, 8637716, 10240813, -6526740, -3253975, -989990, -1348620, 14515379, 1940788,
+-14792941, -6550899, -4476967, 9608379, 1928440, 2127083, 8163122, 17803176, -26140782, 17455284,
+-3388729, -3025805, -6711960, 5246840, 5408438, 10290205, 1648731, 9810779, -949725, -2523293,
+3078955, -1552631, 5031018, 9028021, 1115618, -597537, 11825656, -8676371, -1574642, 2950106,
+-974421, 10453950, -12199855, 1194538, -10433549, 1782948, -11065983, -1490354, 388695, 6172942,
+15095736, -8702141, -4795868, -9023726, -489089, -13225815, -8606041, -8669391, 5944235, 10949482,
+175557, 21616034, -13619878, 19325206, -13534516, -3094524, 5972689, 4456029, 19110456, 11075647,
+-14257681, 7545184, -5962489, -19673634, -470299, -12443057, 15807090, 24058260, 15282031, -2899640,
+-8473970, -3051038, 13435195, -1917166, 7010461, 891743, 3115462, 4817880, 1515050, 1966558,
+1595580, -5772973, 4076461, 151398, 1723893, -2178622, -1923072, -5474473, -3105261, -1832340,
+3416110, -1620276, 2288681, 2969970, -1096290, -627065, 72478, 3372623, 2081985, 1303523,
+6123550, -7516, 6396817, -5611912, -2528662, 4209605, 3957276, -2297808, 1341104, -1912871,
+-4183835, 580894, -13309567, -8424041, 8590, 16798154, -2922188, 7582765, 15613280, -12713640,
+5855114, -20494510, 12792023, -12474733, -5994164, 20367808, 7052873, 21938156, -9041980, 404801,
+-9600863, 6528351, 28025198, 7403450, 9638443, -13790603, -2487860, 955093, 10907606, 9717900,
+18002892, -14214731, -4833449, -15490873, -13169980, 1258962, 1285806, 9598178, -8930848, 6802155,
+-21202642, 13684303, 10371272, 5104032, -3442416, -2262911, 1571958, 6635725, 2284923, 2064269,
+67646, 14821932, 12642773, 5661841, 1291175, -10740639, -10675678, 30303142, 1283122, 4025995,
+16907138, 7687992, -4571456, -3256659, 10814728, 21903260, -15504295, -6245420, -17493938, -16127602,
+21316996, 9750113, 382252, -3868155, 7176354, 16374026, 10430328, 16887274, 4799089, -7120519,
+12189654, -8302172, -21845814, 6803765, 948651, 666794, 213138, 9518184, 16088411, -2947958,
+8589935, 9678709, 8686571, 1310502, 2048699, 8522826, 259309, -2243047, -1646583, -3148748,
+8181376, -4364224, -1187559, 2320356, 4680441, 957778, -599148, 8877161, 1937030, -1517734,
+6600828, 8506720, 3919695, -3120294, 104690, -1232656, 2661806, 381715, 163209, 77846,
+-1758252, 3164317, 1233193, 1031866, 2914672, 3964792, -518617, -3668439, -1414655, -199179,
+4963372, 2016487, 831076, -663572, 6529961, -13982803, -10441602, -4072166, -13013214, 14706505,
+-1637993, -3707631, -12394202, -2028298, -11540577, -28572806, 4978941, -3482145, -9020505, 6512781,
+-15170898, -874026, -8291435, -22888954, -5255966, -9899900, -10870025, 18385682, -4913443, -6563784,
+-3343632, -365609, -4664872, -6417218, -1056025, 4897337, 15495168, 11754252, -467078, -838056,
+-26061862, 1658394, 3525095, 10742787, -6045167, -5338645, 39462160, -6713034, -19351512, -18688476,
+16339129, -10894721, 4682588, -22159884, 5485747, -6158446, -11950210, -10205379, -25346750, 4148402,
+7210177, 18074296, 5237176, -9652939, 14118631, 1767379, 13275744, 14914274, 42643656, 11548630,
+2903935, -16510391, -18672908, -4905390, 1919850, -2274722, -16909824, 7668127, 19468550, 4619774,
+13826573, 21637508, 19221052, -8080444, -15518254, -10445897, 1285269, 3536369, -1969243, -16275242,
+3083250, -13211856, 3996467, -5796059, 788663, -7237020, 4748623, -1096827, 2988224, 527744,
+-3229816, -7389491, -1818382, -52613, 4312147, 6242198, 4726075, 7176891, 310311, 6164352,
+10422812, 397821, 1896765, 6068252, 1945083, -5177046, -3146064, -8920647, -2786360, 5612986,
+2978560, 835371, -1306207, 3623342, 1832877, -1748589, -4350802, -7757248, 931471, 1428077,
+-1240709, -2414309, -710817, -2615098, -5699959, -17220134, -7433515, -2644089, 5349382, -6278169,
+10288057, -5299990, -7029251, 19945292, 10391137, 22677428, 324807, -6554657, -8902930, 24042154,
+-20590074, -7671349, 28067074, -16885664, 5644661, 5859946, 7314330, 1672890, 15794205, -4888747,
+14219563, -5352066, 3146064, 3412352, -7243999, 10554345, -15908559, -11086921, -10305774, -4737886,
+-14133664, -26120380, -4709432, -7807714, 4209605, -6717329, -34685620, 9676561, 21874268, -1240709,
+-4589173, 34171296, -42253352, -9137006, 23656142, -5765994, 18371722, -13435195, -8290898, 6374805,
+-40318468, 13081397, -13689135, 20211580, 14899242, -21449066, 42439644, 6273337, 2312840, -2151779,
+16764868, -30639222, 12620225, -1421097, -4798552, 8238821, -19746650, 28074054, 25535728, -47036336,
+6835978, -9343701, -44096968, -7581691, -19645180, 10895795, 2864206, 7682623, -17756468, 27748174,
+-2636036, -7414188, 12885976, -503585, 9178345, -1908576, 14445049, 376883, 7243999, 2261300,
+-547608, -1495186, 8114267, -5777805, -6440304, 179315, -7579544, 11516955, -2420751, -5914170,
+704912, 5320928, 2625836, 5487895, 2202245, 13361106, 3245385, -7200513, 13902272, -7448547,
+7948911, 11937325, -3227668, 2720862, 8436390, -5696737, 8297340, 1344325, 25973814, -11578695,
+-33418066, -33528126, 2697776, 4203163, -14720464, 8803072, -18636400, 6036577, -8427263, 17314624,
+22166326, 766115, 21447456, 19520090, -10785200, -228170, -13807783, -3429532, -3209951, 7567196,
+-1316944, -2088428, -2278480, -22378928, -33872260, -13586055, 17746804, 13736916, -14506789, -16690780,
+9824738, 9958955, -22010634, 11182484, -14627048, -2679523, 17119740, 23756000, 222265, -13988172,
+9128953, 1868311, 14828375, 2623151, 12384001, 12787728, -3531000, -48535276, 5571110, 1343251,
+19731616, -7089918, 20123532, 19950660, -13228499, -65786016, -8760660, 2772938, -7839389, 39688720,
+41633804, 29070486, 41371808, -10602127, 19496468, -16209743, 27679990, 19429358, -32442572, 41181220,
+-42405824, -36101884, -34027952, 10934987, 25752624, 21461414, 7258495, -26554710, 24693914, 3524021,
+-8740795, -11313481, 1547799, 23327578, -17875118, -7089381, 35584340, 6664179, 16327855, 3218541,
+1825361, 8850854, -13305809, 7334731, -5377836, 386010, 3739306, -3309272, -6845641, -4463008,
+-5978595, -13358959, 3125126, 12620761, -2385318, 12903692, 10004053, -8060043, -6373195, -5942088,
+8006893, 5084705, -16334834, -9399536, 963683, 936303, -2344515, 2316598, 10889353, -128312,
+8680666, 1026497, -6244346, -25970056, -49162344, 10479183, 18284212, -2536178, 25090662, 9680319,
+-30969936, -7728794, 6725919, 7763691, 8673686, -6169184, 14525043, 1340567, -9157944, -4141422,
+5248987, 20611012, 26866094, 20327006, 32196686, -30735322, -8444443, -7895224, -31434328, -7458211,
+5548561, 1714766, 3631932, -12469364, -14107894, 16148003, 36172216, -16960288, 18731426, -12077448,
+4962298, -11132018, -1802276, -28004260, -10111427, -1509681, -38807712, -22670448, -37977176, -32076426,
+21443698, 50331648, 40214852, 1264868, -2398202, 221728, -8910983, -17191680, -60797948, -20279224,
+-8615704, 5055714, 2731599, -21413634, -14899778, 7984344, 26934814, 16076063, 8767102, 17614734,
+30195230, 11856257, -29972966, 23111220, -17701708, -9256728, 17963700, 40227736, 8767639, 51556252,
+-12151536, -53436372, -6068252, -17193290, -32693828, 49573048, 14161581, 16183974, 18254, -4321811,
+14434848, 11903502, 800475, -1920387, -8477192, -1648194, -2438468, 13610751, 16445430, 19600620,
+-2107218, -633508, -676457, -620623, 12899934, -5400922, -4179003, -7423314, -5786395, 7359964,
+-1383516, -139050, 2270964, 4730370, 7625715, 9400610, -1194001, -5427765, -9564892, 4937602,
+1917166, 4664872, 12182675, 10699300, -5262946, 2784750, 5545877, -9273908, -2783676, -2037425,
+-8924405, -4029216, -295279, 8314520, -21051246, -34443492, 21228950, -3394098, -20825222, 9968619,
+22514218, 19487340, -40233644, -34765612, 8604967, -16185047, 4049617, 19583978, -10747619, -7940858,
+32411434, 8750459, -4591857, -10395968, -9287867, 12124156, -7377143, -1499481, -1028645, -13288092,
+-5183489, -22068078, -29364154, 10390063, 15913928, -18568218, 13444858, 9178345, -6468758, -12904766,
+1897302, 23080080, 13251585, 4098473, -23249194, -25987236, -12708808, 6931004, 28933048, -21816286,
+-11594801, -9957882, 17245368, 46675556, 12291123, -45788108, -10241886, -5449240, 23396834, 460635,
+12079059, -6039798, -10927471, -10197863, -25971130, 24059334, 25480430, 10232760, 26944478, -8530879,
+17397838, -8167417, -19589346, -21659520, -23164906, 4013647, -43299176, 45251240, -2212445, -17275970,
+-25068114, -20513300, -1463510, -13454522, -4125853, -23851028, -14770393, -42330124, -11839614, -27910308,
+10189273, -9950902, 8152922, 9416179, 10082436, -7044820, 23285166, -5363341, 16848620, 569620,
+4001299, -1376000, 7291244, -3666292, -9431211, 1867237, 2619393, 8646843, -14044543, -4937065,
+3549791, -13838385, -17717, 5006322, -17286170, -7592429, 4056597, -2440615, -13255343, -20445654,
+-12312061, 7405598, -3937948, 9320616, 2201171, 321586, 13785234, 921271, 11850889, 4572530,
+7366943, 27734214, 16589311, -7842074, 4184372, 35009352, 26261578, 10012106, 5141613, 16452946,
+14889041, -23845658, -34368328, 11627550, 26725434, 38292316, 139586, -8624294, -24023362, -14114873,
+16023449, -504659, -20526722, -41261212, -41300944, 8644695, -12485470, 23076322, -47576964, -15721191,
+9130564, 6799470, 8931921, -15060840, 6787122, -1307818, -9030169, -1800128, -22395034, 20528334,
+25242596, 18821620, -30118458, -16060493, -838056, 10152766, 14966350, 16133508, 12831215, -3410204,
+-2259690, -4080219, 21340618, 59531468, 37484328, -31016106, -30618284, -19399830, -39408472, 46275052,
+24566140, -14349486, -40878424, -39055212, 44288628, 27315992, 5827734, 34170760, -35618700, -3926674,
+2079301, -9144522, 3340411, -13224741, -36035312, 8922258, -27573690, 36710696, 34586296, -13249437,
+-6293201, 401579, 3857418, 39071316, 39851928, -63382444, -35478040, -20365662, 7868917, 17812304,
+17112760, -24553792, -26456998, -31108448, -3969624, 32270236, 600759, 6429566, -7481296, -34405908,
+7811472, -14419816, -18131742, 7876970, 60157460, 20395726, -11409581, -15426449, -14570140, -11904039,
+15700790, 18845780, 21637508, -3890704, 13912473, -21301964, 5020280, 7808251, 9575093, -7646116,
+4008278, 17859010, -4770635, -5012227, -3134789, 17635136, 11276974, 27436252, 6740415, -9696962,
+-7526930, 10198400, 33694556, 27627914, 5574868, -20249698, -25163676, -7978439, -6192269, 5990406,
+-12450573, 23312546, -38139848, 33227478, 48988932, 53179748, -59977608, 11013907, -1905892, -5150740,
+25354802, -10827613, -17847736, 17576616, 8912057, 36453000, -3770445, -28857886, 813896, -13165685,
+21475374, -33155536, -11808476, -15576773, -22164178, 30285962, -22216256, -3135326, 20776368, 12119324,
+-7429757, -11567421, -31115428, 4030290, 40795748, 24919400, -1846836, 12182138, -9314173, 33419140,
+-22603876, 15454366, -12523051, 20775294, 34367792, -7624104, -22499186, 11092290, -30647276, 50616188,
+5815386, -26798448, -9310415, -41831908, 5216238, 60031832, -11052025, -35242356, -24785182, 36828272,
+10845329, -19252190, -1123671, 9537512, 20488604, 50604380, -41384156, 18434000, 41275708, -6209986,
+-49125836, -47346108, -27926952, 83122112, -60949344, 20666846, -64188824, -30693984, 133539120, 12936978,
+-58486180, -55940340, -64764884, 81541568, 10302553, -15316390, -64906084, -15452755, 20020990, 66015796,
+-23839752, 7272454, -28724204, 9900973, 39816496, 24526410, -36048736, 17019882, 6336151, 15636365,
+13537737, -36253284, 993211, -8506183, -14024679, 7344394, -13616657, -26673894, 10009421, -7761006,
+34596500, 5345087, -32389958, -36488968, -11977590, 1187022, 27808302, 21333102, 4618164, -16916802,
+6901476, -510027, -13963476, 1184874, 17540110, 15965467, 3513820, -26780732, 6355478, 10784126,
+16722455, 15469935, 10601590, 21766358, -56346748, 9863392, -50626928, 22338662, 23922430, 47257524,
+20907364, 10828686, 12352326, -14744086, -36152352, -25150254, -23746874, 10122164, 5872294, -6171331,
+21592948, 33324114, -14936286, -20955682, 23133230, 4101694, -30861488, -7109782, 13946296, -25458956,
+-4518306, 5604396, 12928925, 6887517, 18294414, 31389232, 5520107, -20044076, -2341294, 6033356,
+-15936476, -7128572, 14653892, -11171747, -20171850, 27997282, -6790344, -6956774, -11180874, -11028402,
+18126910, 4610111, 4117263, 24160802, -11590506, -18694918, -1119376, 1782948, -7958038, 6166500,
+-1352378, -6668474, -1240172, -23570244, 5215701, 4597763, -4045322, 12677670, 8531953, 4421669,
+5635534, -24342800, 28765006, -10801843, -10464151, 8811125, -26387742, 8564165, -19772956, 2283312,
+-15652471, 5057861, 6838662, 10653130, 907312, 9448391, 14223858, -5520644, -3267933, 7903814,
+-532039, -5030481, 4299799, 997506, -3338800, -5061082, -4638028, -3042984, 10249939, -9859097,
+9939628, 678605, 2653753, 4991289, 2920578, 7274601, -463320, -205085, -4511327, -988916,
+-6196564, 12381317, 846109, -5559835, -9126806, -2966749, 4734128, -8860518, 11675332, -5706401,
+-14987825, 846109, 6252399, -865973, -513249, 1530619, -7132330, -26132728, 42376296, -2136746,
+24011014, -21688512, 2743410, -3882114, 7617662, 6896107, 12890271, -6502044, 9497783, -5819681,
+5253282, -888521, 4164508, 10264972, -1221381, 15888695, -6320045, 12018929, 668404, -449898,
+-4437775, 7717520, -6062347, 6977711, -4037269, 542777, -3343632, 3848291, -2724083, 9064528,
+-2775623, -6248641, 14468134, -9921911, 7580081, 6137509, 2253247, 7058779, -8815957, -6080063,
+6656663, 6260452, -3862249, -765578, 7095286, -566936, -9816685, 4400194, -4974646, 5133560,
+6888591, 3301219, 2376728, 2290828, -10572062, 5250598, 3013457, -3131031, 3904662, -4920959,
+2444373, -2413235, -457951, -1265942, 3723737, 7204808, -9863929, 8894877, -1723356, -3412352,
+5094368, -6809671, 3283503, 4922033, -1176284, -2423972, 3405909, -1277216, 2007360, -853625,
+-3503083, -470836, 3799972, -930934, 1478006, -705448, -2567854, 1745367, 1540283, 2741800,
+-3731790, 3080029, -247497, -1473174, 3557307, -3889630, 6204617, 3230352, -2316061, 6398428,
+-480499, -2420214, 255014, -2416993, 3782256, -4059281, 4336843, 1832340, 2333778, 1174674,
+-2493766, 2177549, 974421, 579284, 392453, 261456, -1018444, 1227824, -2612414, 3262565,
+1263794, -2889976, 10449655, -35759360, -111293344, -16433619, 53932980, 27856084, 131200512, 24330990,
+28149752, 17680232, -35443144, -49896244, -35565552, -63940252, -54955716, -31216896, -12846784, 36457292,
+99621768, 78989816, 68032816, 38626788, -30762704, -50018116, -36817532, -68898792, -65253976, -20082194,
+-9229885, -15310485, 25184614, 39412768, 26053808, 48085916, 37156836, 11291469, 34170224, 6876243,
+-5182415, 3049427, -20742544, -54444616, -46282032, -39361764, -55173688, -23181012, 15995532, 10948409,
+35175244, 39821328, 34808564, 35711044, 36487896, 23073102, 22573274, 2368675, -20426328, -38086696,
+-26024818, -35860828, -47352552, -23387170, -21779780, -17766670, 6587406, 17812304, 17051558, 33292976,
+41648296, 20088636, 29329258, 25014964, -7077569, 2807835, 11193759, -13973676, -12661027, -22353694,
+-40098888, -40257804, -31987842, -33121178, -6584185, 13799193, 9174050, 26213796, 39355860, 31019328,
+28635620, 29444686, 19611894, 6410239, 1766305, -9224516, -17289928, -18564460, -27628988, -34916472,
+-37164352, -31993212, -28748364, -16441135, 3605625, 18033494, 41303088, 54681912, 47960828, 39767104,
+33712808, 19489488, 3999688, -16940962, -34868692, -47509316, -49798000, -54880556, -40511744, -16920024,
+-4352413, 11444477, 32559074, 42089604, 45386532, 46777024, 39070244, 16564078, -1279900, -12120935,
+-26682484, -34649112, -32581086, -28914256, -20886962, -8549132, 995359, 11500849, 14865419, 11462194,
+12537010, 10005663, 6784975, 5341866, 5468567, 1833414, 1801202, -470836, -2814277, -3337190,
+-2980707, -4291746, -5121749, -5400922, -4730907, -3991635, -2706366, -787590, 926102, 956167,
+603980, 410169, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-3556770,
-2687039, 1690070, -3508988, -618475, 4480188, 1328756, 1105954, 2470143, -584652, 675384,
--1165547, -4686346, -1841467, -233539, -1034013, 1345935, -1450625, -455803, -3969087, -6442,
-684510, -2804077, -609885, -3539590, -1258962, -1129576, -4282620, -1969243, 1363115, 1862942,
-4799626, 2837900, 6131603, -670552, -1000191, 892816, -2115808, 5325223, 313533, 2511482,
-4226248, 733903, -1712618, 1721208, -2259690, -3012920, -756451, -1308891, -1665374, -5558225,
--1797981, 14496, 862752, 1642825, 459562, 2807298, -3152506, 2474975, -25233, 604517,
-1755568, -2205466, -4909685, -2129230, 2083059, 3048890, 2319819, 179315, 2365453, 1780264,
-3218541, 1602560, 1387274, -2146947, 161598, -363462, -432181, -1831804, -2245194, -987843,
--522375, -223875, -1731409, -4832, 244276, 654983, 157840, 1221918, -674310, 544387,
--1083942, -1656247, 808528, -260919, -41876, 1112933, 793495, 971736, 70330, 70867,
--946503, 537945, 176094, 308164, -139050, 1513439, -329639, 55835, -661425, -566936,
--743566, 624918, -501974, -1437203, -2571075, 2444910, -3954054, -2429878, 6368900, -1031329,
-5630702, -2879776, 548145, 2785286, 1240172, 186831, -3778498, -5360656, -5592048, 602906,
-145492, -1582696, 760746, -4950487, 9863392, 1115618, -5483600, 1460289, -2871723, -3128884,
-2944200, 4182225, -60130, 941672, 1999307, -302258, 23622, 3283503, -1797444, -802085,
-199179, 5979132, -115964, -699006, -2257005, -3532074, 1844689, -871342, -3623342, -1637993,
--4362613, 585726, -3956739, 89657, -2995740, -990527, -2634426, -5487895, -2247342, -344671,
-5184026, 762357, -1496259, 2825015, 4747013, 716186, -6458557, 2976412, -14496, 1207960,
-2125472, -1502165, 4098473, -2042794, -3653944, -3812320, -6749541, 631360, -2302639, -2396592,
--3039763, -3187403, -181999, -3476776, 1103807, -543313, -1972464, -731755, -2228551, 47245,
--96100, -2557116, -1061394, 1036698, -370441, 165356, 575526, 239981, 439697, 324807,
--693637, -2289755, -411243, -859530, 646393, -293132, 271120, -438624, 19864, -35433,
--495532, -1437740, -1180042, -195421, -520228, -554588, -462783, -1077500, -397821, -4952098,
-8290361, -2076080, -7517804, 582505, 2578591, 245887, 2377265, 1941325, -5949067, 2137283,
--1376537, -231391, 255014, -1079111, 4563403, -1394791, -2941516, -247497, 3650185, 2300492,
-1364726, 2149631, 8829916, 2338610, -3009698, 3993246, -3677029, 1234803, -2964064, 8299488,
-1307281, -2686502, -1609539, -2693481, -922881, 5509370, -4374961, -3690451, -1113470, 4564477,
-2625299, -4203163, 1204738, 958851, -2452426, 129923, -9014063, 3011846, -2067490, -1716913,
--5711233, 8682276, 496069, -4518843, -3546569, -4435091, 348966, -954557, 491237, -24159,
--5199058, 6873022, -3876208, -3557844, 2724620, 736587, 2705830, -1927367, -401579, -4227859,
-387084, 924492, -5369246, -4008278, 396748, -3741990, 1353989, -3346853, -944893, -943819,
-2392834, -4322885, -4491999, -918586, -712428, -1072668, -289373, -1937030, -491237, -1409823,
--1162862, -913754, -1401233, -1694365, -153545, -2275259, 603980, -1509681, -5906, 144955,
--547608, -856846, -118112, -603443, 1174137, -178778, -992137, -58519, -1753420, -343597,
--1075352, 86436, 235686, -1202591, 7194607, 223338, 1556389, -5951214, 1830193, 3419331,
-2495913, -249108, -2984466, 7737384, 1344862, -1541356, 3710852, 3032247, -3616899, 4741107,
--3187403, 7818451, 1108638, 6978248, -761283, 1231582, -2736431, -7900056, 855235, 162135,
-271120, -1365263, 1626182, 4172024, -1046898, -4057134, -2685965, -5770826, -1596117, -2841658,
--3052648, 532039, 1989107, 3134789, -3710852, 2589865, -2483565, -3085934, -416612, 2649995,
-496606, 657667, -5770826, -5567352, -1055488, -1650878, -4219269, 9196062, 4268661, -580894,
-1773285, 3696356, -9276592, -4692789, 6222871, -3468186, 5836861, 1324997, -1214939, -6225018,
--4594005, 7403987, 3923453, 7000797, -7351374, -509491, -5098126, -406411, 1814087, -2717641,
-867047, 545461, -4576288, 4112968, 461709, 623307, -745177, -8152385, 886911, -1962263,
--2564632, -2551211, -492311, 1418413, -1312113, 632434, -2866354, -607201, -1312113, 1833414,
--351650, -220654, -928787, 66035, -970663, 626528, -1617055, -775778, 537408, -461172,
--98784, -102005, -10201, 753767, 472446, -134755, -1133335, -1181116, -1228898, 1062468,
-487479, 1548873, 816581, 628139, -12179454, 582505, -1620813, 3218004, -7396471, 2282238,
--2537789, 12184822, -3315178, -6409165, -2389613, -5386426, 1592896, 4484483, -1517734, 8498667,
-809064, -2588792, 1995549, 981400, 2161442, -3095598, -603980, 3125126, 4955319, 1927904,
--1073205, 2350958, -4558571, -1460826, 6248641, 4458176, 7349226, 5206037, -197032, -3835943,
--7988103, 5403606, -938987, -5832029, 2923262, -1584306, -8939438, 172872, -7465727, -645319,
-6607271, -1193464, -5045513, -2347737, 6306623, -5589900, -9127879, 9131100, -1807108, -2291365,
-2078764, 1109175, 1013075, 2152852, 2138894, 1166621, -6747394, -2590939, 5078799, -752156,
--2054605, 1503775, 8771934, -4541928, -4988068, -2296197, 3547106, 1787780, -8051990, -3598109,
--2819646, -3531000, 2545305, -524523, -679679, -3016141, -2426120, -6361384, -3708168, 1472100,
-132607, 954557, -330712, 3690988, 3794067, 629213, 1337346, -1990717, 369367, 139586,
-1505386, -2439542, -1171452, 253940, -19327, 1074279, -122407, -1402844, 1314797, 475668,
--2731599, -560493, 692564, 436476, 376883, -705985, 276489, -1331977, -1352378, -1142461,
-596464, -605054, -729608, -229781, -10652056, -254477, 2814277, 10200010, 10543071, -3435437,
-5237176, -6829535, 2210298, 4465156, 6763500, -2010582, 10158135, -1947231, 8612483, -4753992,
-7212324, -3671660, -12063489, -2768107, 2981244, -4189741, 4622459, -2641942, -2916820, 1266479,
--13219909, -4303557, -297427, -2332167, -818728, -6416681, -2228014, -2315524, 2073396, 13411035,
-7728257, -7864085, 4252555, 10715407, 2643016, -3816615, 2656974, -2881923, -3227668, 7700877,
-5364414, -5428839, -747861, 5477157, 11515881, -3758097, 6254546, 17087528, 7349226, -7938710,
-3169149, 1947768, -9565429, 1385664, -7907572, 3480534, -8614631, -2069101, 338229, 4021700,
--5627481, -1595580, -2797634, -5142687, 6575595, 5619428, -324807, -3781719, 1006633, 963683,
-920734, 1549410, 4884989, 921271, -6522445, -153545, 7902740, 213138, 1768453, 1560684,
-2391223, -2501282, -1156420, -3999152, -1692754, -3682398, -307627, 2144799, -478352, -2097018,
-1157494, -446677, 455267, -1147830, -774168, 1447404, -110595, 3498788, 863288, -774168,
-1861868, -64961, -826781, -1349157, -1792612, 765041, -946503, -501437, 924492, -107911,
-1654099, 80531, -2153389, 4686346, -2295123, -10729902, 2501819, -8615704, 1415729, -2841121,
-11188927, -5648956, 1597191, 2958159, 1129040, 4073777, -1620276, 12243878, 979789, -7907035,
--1453310, -5825587, -915365, -1882806, -5450851, -6852621, -1742146, -4406637, -2069101, 7839389,
-2930242, -6593849, 2602213, -7878581, -1474248, 5762773, -10755135, -9497246, 5437429, 5102958,
-2659122, -308701, -6522982, 2607582, -3205656, -6169184, -2835215, 346819, 1978906, 10246181,
--4014184, -1147830, 563714, 4782446, 2535641, -3536906, -4554276, -8198556, -2482491, -1811403,
--4492536, -5257577, 3376918, 6845104, -10737, -4365835, 7595113, 1461363, -3715147, 935766,
--1085016, -978716, -2585034, -1471563, 4939750, -3905199, -5837398, -3375308, 3091840, -4529580,
-8028368, 3588982, -1298154, -3281892, -3700114, 2278480, 4997732, 10190884, -2918430, 5217312,
-200253, -16106, 585189, 1639067, -1848983, 49929, 1287417, 2147484, -1315871, 1503775,
--1125281, 4941360, 1915555, 3716757, 75699, 2527052, -102542, 2244121, -412317, -199716,
-2644626, 993211, 351650, 1388885, 341987, 2586644, -1878511, 610422, 1800665, 2378338,
-2082522, -782758, -2585570, -35433, 1687922, 365609, 339302, 2138357, 5562520, 10612864,
--7915625, -276489, 7226820, -3457986, -5187784, 6646462, -10486700, -639950, 1937567, -1363115,
--3912715, -4614943, -2221572, 1816234, -564788, 5021891, 2527588, -1676648, -3997541, -2914135,
-8260833, 325881, -10103911, 4712653, -6392522, -6260989, 3836480, 7279433, 7415261, 5633387,
--181999, 3808562, 2586107, 3595961, -3314641, -163209, -2989297, -7269232, 3054796, -1873680,
--401579, -1599875, 704375, -1197759, 8031052, 14952392, 2458869, -2587181, -47245, -10672457,
-10358387, -7275138, -4728222, -7000797, -8587787, 14535780, 791348, -8070244, -2928631, 10031970,
-5166309, -7593502, -5683316, 11498701, 925029, 1193464, 14856292, -7090454, 4078608, -5323075,
--14750528, 6937983, 7097434, 1194001, -8517457, -1186485, -1852742, 1771674, -3698504, 5408975,
-3321620, -11651173, 4947266, 5598490, 7117835, 1243393, -6240051, 10440529, 1764158, -912681,
--807454, -3481608, -3684545, -1305670, 652298, 3164317, -15569, 273804, -344134, -2786360,
-1170379, 1281511, 546535, -1267552, -783832, 2126546, 741956, 2419677, -1579474, 586800,
--3668439, 435939, 3435437, -4602058, 625992, -3600256, 4201552, -1733556, -115427, -2797098,
--36507, 2465848, -312459, 3354370, -11811, 5010616, 6408091, 11894375, 10891500, -453656,
-9284109, 4161287, 9468255, 9145596, -15250892, 5500243, -4944581, -6609418, -4822712, -1458678,
--9729712, -2055142, 2362769, -8326331, -17064442, 3879966, -1212255, -15381352, -11286637, -10082973,
--5633924, 528281, -2896419, 3629247, -2037962, 6088116, 11902965, -6839736, 4042638, -2700461,
--5466957, -3990562, 718333, -1187559, -501437, 8856223, -375273, 8928163, 11584601, 3445638,
-4983236, 7656853, -1013075, 1536525, -11454678, 10684268, -9343701, -3302293, -2982855, 932545,
--2588792, -8923868, -7858180, -17226040, 15586973, -17596482, -17049946, 2866891, 16346646, 5788006,
--2120640, -4128001, 7514046, -8268349, 9400610, -2761664, 1189706, 955630, -6251325, 6541235,
--7384123, -6040335, -715649, 2347737, -7054484, -1125818, 3775813, -581968, -1942399, 5024038,
--3346853, -6350109, -1470489, 3171297, -4209068, -2476049, -2886755, -664646, 1891933, -1384053,
-556198, -1076426, -2317672, 629213, -1497870, 1439351, -1564979, 2095944, -660888, 3934190,
--590558, 1504849, 2138357, -1402844, -2703682, -311385, -681826, -186831, -853625, 1811939,
-68183, 2352032, -2161442, 810675, -4604742, 173409, 167504, -1711545, 1357747, 7137699,
-9298604, 9294846, 10117869, 23848342, 10714870, 13631689, -6730214, 22075058, -12597676, 610422,
-4872104, -96100, -8295730, 2760590, -2287607, -18811420, 7138236, -4734665, 2028835, -1757715,
--6226092, 17180, 5604933, -7592966, -3935801, -1178969, 4434554, -11471858, 7282654, 2752000,
--10510859, -815507, 4300336, -9526237, 3582003, -11425687, 5287642, -973347, -3688303, -436476,
--7458211, 9613211, 11361799, -10813654, -6173479, 4917201, -3843459, 3029026, 2749853, 736587,
-375810, 13106630, -3292093, -8745627, 8122320, -324807, -6880001, -5779416, -10871099, 2107755,
-2980707, 5450851, 5237176, -5020280, -8443369, 4741107, 2377265, 16380468, 1737314, -2020782,
-425202, 1103270, -4820027, -2152316, -6045704, 6715182, 3887482, 4376572, -1273458, -10456635,
--9529996, -3118683, -837519, -3750580, -6601365, 1869385, -2885144, 4328790, 769873, -691490,
-2696703, 2793876, 4444755, 4164508, 3358665, -18790, -989990, 1191317, 2989834, 2311229,
--1322850, -1252520, -832150, 768262, -2147, -816044, 59056, -5144297, 639413, 3371549,
-2586107, -4007205, -2881386, 5760625, 3087008, 5712844, 2261837, -4164508, 3969624, -1013075,
--3147674, 620623, -4495220, -2467996, -1140851, 1729798, -897111, -12882218, -14477261, 24143622,
-16834124, 21583284, 1373316, -13860396, 4876936, 11261404, 8016020, -3540664, -8771934, -2585570,
--3228205, -4260071, -7553237, -3034395, -6345278, 16093242, 2567317, 2652142, 115964, 932008,
-1703491, -5958194, 10649371, 6010270, -642098, 3868155, -1524713, 10961293, 2014877, -978179,
--17951890, -1334661, 1120450, 1702955, -3367791, 2237678, -8507256, 14559402, 11792370, 11381126,
-9932649, -7822746, -10828686, 8296803, 2552284, 4053376, -718870, -12605192, -9119289, 721018,
--7110855, 77309, -5973226, -2602750, 7551626, 2398739, -5401458, 1925219, -13934485, 420370,
--23619636, -12006044, -22316114, 19258096, 17357036, 18526342, 22454626, 10871099, -3721589, -9968619,
--3027952, -557272, 3219078, 17787070, -5881958, -13524852, 10307922, -8609799, 4486630, -1976222,
--1950452, 4167192, -4013647, -7318088, -2074469, -9009231, -1916092, -8101382, -1866700, 1129040,
--720481, -981937, -2206003, -2830920, -5597953, -90731, 2927557, 452045, -2823404, 978179,
-4877472, -664646, 3258270, 1784022, 1925219, 1365800, -6471979, 5653788, -2507724, -2058900,
-3789772, 1302986, 4190814, 421981, -5390184, -1007170, 106837, 929324, -3303367, -8567386,
--11528229, 10162429, 13186623, -6478958, 12243341, 1725503, -5201206, 4923107, -17749490, -5508296,
-5004174, -5656472, -10885595, -20515448, 10077067, -8816494, 2371359, 13287018, 3187940, 15493021,
-11851962, 6737193, 2542621, -9151502, -2687039, -4791573, 836982, 8628052, 4496831, 1780264,
-7365869, 21065204, -1101122, -17918066, -7868917, 2894271, 4300336, -1027034, 443455, 1695438,
--7643968, 469762, -16865262, 3792456, -17643188, -6433861, -13662291, 6725919, -6816113, -11210402,
-17104708, 4796942, 1393717, -7699266, -10262824, 2561948, 4066260, 1506997, 5573257, -8746701,
-19229642, -23350126, 6073621, -9732933, -14173929, -7940858, 12238509, 3688303, -13287555, 9386651,
--10581726, 25936234, -2418067, -2847027, -12617003, 1510218, -16831440, -9029632, 22453552, -9038759,
--10197863, -6658810, 6713571, 843961, 9517111, 4744328, 4975183, 6937446, 3769908, -636192,
-716186, 3309272, 1417339, -1833951, 5574868, -1750736, -1942936, -4201015, -3773666, -1694902,
-2057289, -3307125, 243739, 1618129, -1365263, 1411434, 260919, 5502390, 2882997, -6442,
--1122597, 10201, -400506, 3288334, -2923262, 2983392, -825171, 1321239, 4609037, -1458678,
-241055, -635118, -2319819, 5646272, -795106, 24395414, 25103546, 23678154, 5052492, -6350109,
--3961034, -15255187, 12387223, 363998, 7268696, -4565014, 2336462, -5578626, -4291746, -8821326,
-4765803, -9185324, 15083388, -39366060, -11461657, 281857, -11911018, 8460549, -12242804, 2517925,
--4730370, 12380243, 2203855, 11917461, 864899, -2813741, -190052, 4362076, -13790066, -9909026,
--10726681, -1519345, 13424994, -26479010, 9189083, 23025856, 2832531, -16943110, -665720, -14270566,
--13677323, 9470940, -1790465, -11658689, 6481643, 967441, -4344360, -6588480, 3770445, 9570798,
-5816997, -13542032, -9884330, 7742216, 11674258, -9535364, -12596602, 6206228, 13079786, -15908559,
--549756, -14203457, -19489488, 23181012, -3859028, 3578245, -4350265, 14366129, -3389803, 3514357,
--7724499, 12495670, 6933688, 11496554, 13293461, -13252658, -14626511, -5961952, -2803540, -8784819,
--22006876, 2422362, 1196685, -14496, -1621887, -3575024, -2961380, 6320045, -556735, -2731062,
-5837935, -6440304, -3426310, 2389076, 11464341, -3482145, -3540664, 559956, -1450088, 3960497,
--1388348, -639950, -2019172, -3223910, -8053601, -11557220, 2043868, -819265, -8804683, -4403952,
-2316598, -3068754, -9975062, -5553393, -670552, -1737314, 795643, 2834142, 1189706, -22549,
-8176544, 2822331, 12869870, -4784057, -638340, -19092204, -9030169, -4583804, -16227460, -23199266,
--4536559, -7920457, 21370146, 6243272, 31897112, 5556077, -9482751, 3995393, 5851356, -26526254,
-1256815, 22816476, 14405857, -15559056, 1852742, 11281268, -21351356, -3632469, -10810970, 8723079,
--8513162, 5667746, 1188095, -4410932, 901406, -291521, -7031935, 6956237, -14585172, -5836861,
--6404333, -18239116, -4029216, -2607045, 37044, 1061394, -5159867, -5904507, 32584306, 9645960,
--13008919, -23475218, -8685498, 2126009, 23475754, -5986111, -3351685, -13501230, -3804267, -9570798,
-19194208, -16061030, 17091822, 21772800, -22520124, 14450417, 5270999, -9682467, -8689793, 5143760,
-10013179, -48785996, -6726456, -336081, -6969122, 12539694, -6876780, -36532992, -14439680, -10830297,
--16726213, -16244103, 2480344, 2866354, -9637370, -8514773, -15471009, 1292785, -5970005, 1023276,
--6939057, -7942469, -9073118, 1735167, -2148021, 5011153, -7917236, 3401614, -1329292, -7969849,
--16450798, -4297115, -1360431, 4910758, -2685428, -21621402, 3940096, 10060424, 3696893, -762357,
--7930657, 7313256, -1522566, -2743410, -13354127, -2485176, -4919885, 10391137, -2108292, 1432372,
--423591, 2017024, 6282464, -5224291, -98784, 71941, -2872796, 292595, 2397129, -15560667,
--13654775, -5296769, -11154567, -7700877, -3499325, -7027640, -9034464, -7031935, 5352066, 32123134,
--1119913, -37751152, -21204790, -23408646, -4525285, -13000329, -710280, -19219978, 31157840, 18515068,
--3532611, 24538758, 545998, 26471494, 6186364, -15426986, -21099026, -13265006, -17065516, -7617662,
-3921305, 11386495, -3945464, 3683471, -14149770, 2320893, -20324858, -1875827, -1380295, 6853694,
--7786776, 32161252, 3915937, -881542, 21122650, -8337606, -15414101, -8926016, 12837120, -1029182,
--8876624, 3566434, -395674, 27384174, 6480569, 71404, -10924786, -16546898, -42080480, 2705830,
--33498598, 16821776, 56625924, -40679784, -9025874, 9242233, -7340636, -7141457, -11739756, 9556839,
--12050068, -39325256, -10815265, -39206072, -8571681, -1099512, -24974698, -3428995, -35786740, 15426986,
--3932580, -22388054, 54812372, 4360466, 22117470, 18953154, 30056718, -18616536, -1655173, -11185169,
--4486094, -7534447, 14050986, 9290551, 12575127, -26718992, -5824513, -14481556, -19297288, -15677704,
--10132365, -1990181, 10043781, 8810589, 5558225, 7805030, -2600066, 2619930, 14545444, -2631204,
-14380624, 4531728, -13373454, -3374771, 4126390, -5417028, -2684892, 17635136, -217970, -5127654,
-19055160, -8870181, -1880659, -15904264, -4441533, -11031623, 7926899, -8378945, -4366371, -3049964,
-2689723, -3588445, 7080254, 419833, 7330436, 2449205, -3537979, -11910481, -66410932, -7089381,
--17114370, -18710488, 23934778, 18955302, -23399518, -18524730, 45294188, -5330055, 14565308, 2172717,
--2570538, -5417565, -5140002, -14942191, -360240, 5083631, 7947837, 5333276, 16060493, -12939663,
--511638, -12612708, -7621420, 4879620, 22865870, 14672145, 20164872, 18118856, -4312147, 6459094,
-10750840, -125091, -18916110, -3554622, 25688736, -4784057, -37227164, -16451335, 3832722, -31503586,
--13793287, -32278826, -22318260, -20224464, 29457570, 20172924, -6698002, 20193862, 7569343, 28543816,
-19013284, 9091372, -50719268, -11396159, 2003602, -44475460, -32711008, -12585865, -8902393, -52065740,
-10915123, 28599114, 38225208, 46017352, -15809775, -30194156, -623844, -30459908, -22863184, -42250132,
--47153908, -33210834, -28191092, 30926448, 1043677, 6120329, -28675886, -29847338, -26982596, -2784750,
-40368936, 51525648, 1024350, -19082540, -14929306, -20962124, -54604604, -24365350, -24543054, -6814503,
--2485176, -12449500, 13772886, -214748, -4675609, -19488414, -25662966, -13349295, -14687178, -22424024,
--5434744, -5849209, -2686502, -6162205, -10710038, 13276818, 7777649, -1597728, -12817793, 8689793,
-14143327, 915365, -13147969, -6806987, 9725417, 2616709, -3368328, -12268037, 9708774, -2625299,
--4518306, 1005022, 7403450, 1875827, -2885681, 1075352, 5609764, -20352776, -49432388, 19510426,
-2560338, -33547452, 31678068, 15848966, 9878962, -7148973, -29992294, -7355132, 1070521, 29628832,
-39228620, 2556043, 10734734, 2811056, 1394791, -1545651, 5451924, -16037408, 55151676, 13523241,
--17789218, -17634062, -7835094, 2762738, 27027692, -12662100, -3932043, 363998, 13742822, -12689481,
-7301445, 1299228, -2905546, -45017164, -14105209, 14970109, 23652384, 8779450, -4955319, -12666932,
--29874182, -2829847, 5001490, -6669011, 616865, -7354058, -19237158, 19949586, -4408784, 7458211,
--20587388, -3824669, 52938692, 4495220, -5797132, 6709813, 6962142, 5531918, 26678190, -9199820,
--11988864, 20426864, -2201171, 12358232, 7395934, 17898740, -6644315, -19044958, 9982578, -8450885,
-1600412, 75348224, 71971304, 32968706, -6376416, -3030636, 9131637, 34534220, 15687368, -9385040,
--1093606, -3765076, -19072340, -19581292, 11159936, 6317360, 2912525, 17655536, -2232309, -8687645,
-10075993, 5020280, 14858976, -20798380, -17561584, -21130702, 3282429, -9041980, 1249836, -3571265,
-7950522, 9693741, 18424336, 11534135, -19523310, -13536126, 7034620, -11132555, -6842420, 2406256,
-6372121, -7164006, -19221590, -1213865, 673773, -707596, 8540542, 3247532, -15521475, 5783174,
-25109452, 29877940, 21509734, 25671556, 17628694, 23279796, -5996848, -279710, 19184546, 35546760,
-3842385, -39765492, -11254962, 7474317, 4684199, -10378788, 28115392, 13403519, 10279467, -10774999,
-33080912, -3172907, -229244, -10309532, 17142288, 10944114, -27227946, -39323108, -11753178, 5272609,
-1142998, -8441221, -36163624, -4648765, 11470247, 1698123, -12879533, -6000606, -11623255, -14635638,
-7180112, 8855149, -23588498, -26361972, -9850507, -32429150, 7409356, 26308822, -25171192, 25247428,
--13514651, -15692200, -28135794, -38758320, -43490300, -41189272, -21778706, -1152662, 14029511, 5881421,
-13953812, -22269942, -48412336, -19755776, -46589120, -80714248, -31536334, 62977644, 108591272, 63234804,
--28167470, -22775138, -98852968, -88778048, 59692528, 9513353, 78796544, 81817520, 84949624, 27913530,
--35690640, -43817256, -48958868, -55614456, -9242233, 53196392, 90516976, 28276990, 8204462, -5284421,
--47152300, -68229848, -46654620, 7681012, 62023624, 28530930, 39663488, 32351304, 10831371, -25151328,
--28183038, 76773, -16291348, 4083977, 29532196, 31857920, 22724136, 3753802, 10795400, -567473,
--22492744, 3369402, 6934762, -4381404, 1958505, -7064685, 43321188, 25021942, 26823682, 16122770,
--17276506, -40717364, -57894548, 7343857, 17742510, 36765456, 36290864, 47937204, 21980568, -37462316,
--47266652, -56312928, -11730093, -1255204, 27839978, 16005196, 7303055, 14925548, -29713658, -82689392,
--56781080, -51486996, -13798119, 5148592, 16405701, -6380174, -13462038, -20138564, -3547643, 7641284,
--24974162, 34968012, 16813186, 31047782, -68272800, 15462956, 9242233, -21020644, 15320685, -15734613,
--7738458, -4717485, -9744744, 29375428, 54209468, -15779710, 10913512, -7589744, 13008382, 27511414,
--8403640, -5077725, -14974940, 7865159, -9488656, -29951492, 21858700, 36791228, -4814659, -19370302,
--17641578, -38903812, -10642392, 29348586, 20048370, 10162966, -42696808, -24917252, -18577344, 37725920,
-32913946, 28679108, -83398600, -55686400, -6668474, 41145248, 88236344, 217433, -105890272, -39073464,
-3652870, 35600984, -2801393, 19471234, 14957760, -46450608, -20144470, -12966506, -27625230, 1757179,
--51984672, 7983271, 20800526, -63189708, -40169756, -19840064, -7889855, 69535520, -229244, -107248016,
-10482941, 14867029, 16550656, 41944112, 19885162, -45964204, 2530273, -2000918, 91822104, 64355788,
--53449256, 48680232, -28365574, 19200652, 50849192, 17905182, -27469000, 25116432, -10803990, 6223945,
-17849348, -2186138, -18469970, 34320008, -21939766, 25058450, -11541114, 13318694, -3798362, 27520540,
--9373766, 21539260, -37780680, -6969658, -31139, -5408438, 12714714, 23336704, -23822036, 48530984,
--18694918, -17289928, -32896766, 23989002, 51968568, 9697499, -67282272, 4991289, -14711874, 32456530,
-16773995, 14338211, -26677116, -2422899, -16753594, 15855946, -6449431, -11470247, -3345780, 21658446,
--4701379, -14345191, -16090558, 11970074, 2684892, 11347840, -6748468, -409096, -12130061, -1708860,
--1904281, 5333276, 2784750, 12815646, 23630374, -56464860, 8009577, -41460392, 7550016, 35193500,
-31114890, 10187662, -20179904, 4037269, -11993696, -2969970, -14880988, -10995653, 7636452, 2054605,
--21660594, -2496987, 11260867, -2410014, 1265942, 4076998, -13819594, -13685913, -364535, 9049496,
-1196148, -22024592, 1830730, 11289322, 3541201, 2621004, 23030152, -2543158, -6148246, 8253317,
-8814347, -15585899, -17283486, 12806519, 2473364, -13272523, 8902930, 3853123, 4310537, -9286793,
-3733400, 10436234, 1253594, -13066901, 17713518, -2157684, -19870666, 593779, 15538655, 4840965,
--13005698, 11823508, 3914326, -18129056, 7446937, 927713, 18500034, -16777216, 1505386, 12744242,
--29372744, 932545, 12676059, -492848, 8784819, -4888210, -18804440, 2491618, -19897510, 18670222,
-9640054, 5260261, -7395397, -7800735, 15425912, -13301514, 13765370, 15117748, -21626770, -7023882,
-925565, 16740172, 261993, -9711458, 6202470, -11761231, -704375, 1699196, 9887015, 672699,
-1626719, -6079526, 10291279, -3447785, -12005507, 10916733, -4847408, 4706211, -2718178, 7870528,
-9948755, -11426224, 2001455, -6193880, 2695092, -6293738, 22121766, -6256157, -12404402, 9975062,
--5584531, -1883343, -6307697, 6519761, 6028524, -8950712, 5013301, 8705362, -4500589, 574989,
--12336757, -27938226, 45817100, 6478422, 20728586, -17812840, 7931731, -3845070, 5557151, 5027259,
--7623567, 3100967, 8421357, -4804458, 18295486, 853088, 635118, 6243809, 6014028, -644245,
--4607963, 7834021, -1161252, -5345624, -1055488, 7873749, -8402030, 1853278, 3882114, -10711648,
-13502840, -2623688, -6415608, 20695300, -8434779, -12096775, 9548249, 5305895, -5632850, 9018894,
-7233262, -2418067, -2835752, -1531156, 2761664, 5226975, 3086471, 48855, -3491809, 10716480,
--11249056, 10281078, 1667521, -1150514, 2918967, 3325379, 3382824, 559956, -10003516, 2930242,
-8763344, -6080063, 46708, 113280, 6693707, -557809, -2495376, 10107132, -5003637, 5480915,
--10282152, -3718368, 10110890, -9429064, 9723806, -2383707, 6428493, 7873749, -8722005, -2865817,
-10964515, -8968429, -404264, 1269163, 3368328, 941135, -1166621, 532576, 886374, 5158256,
--4218732, 1240172, 3275450, -188442, -2149631, 694174, 1951526, -298500, 716723, -1761474,
-2334315, 3272228, -5411659, -733903, 9549860, -4451734, 2774549, -559420, 5470715, 1672353,
--2923262, 747861, -525060, -3015067, -2127620, 11326366, -1839857, -2422899, 1664837, 1390496,
--809064, 2521146, 4670240, 291521, 1260036, 573378, -921807, 835908, 1413044, -1984812,
-1545115, 8590, 10660109, -37832220, -120885072, -6185827, 65093452, 29196114, 138708112, 11800423,
-29266444, 1187559, -40491876, -50996296, -34554084, -62139048, -43487616, -27359478, 954020, 47391208,
-93382256, 68718400, 59799368, 19458886, -32556388, -47795468, -42979736, -50644644, -56171192, -22781580,
--10801843, -4932770, 27354110, 36331128, 27379880, 50802484, 32779728, 12150462, 34064996, 773094,
--14861124, -9822053, -30663382, -62810676, -38213396, -36779416, -37527276, 1941325, 17414482, 12051141,
-46097348, 37824704, 26032334, 37204080, 39528732, 11202348, 11815455, -4227859, -34138548, -47387448,
--36257576, -47494284, -33822868, -11800423, -8411693, 2922188, 25799332, 20236276, 18209588, 36506148,
-30118458, 22183506, 37643776, 10334228, -7799661, -1559610, -15196131, -32760936, -19117974, -41445360,
--52455508, -30878668, -26141856, -11322071, 30341260, 41053444, 38206420, 44167296, 36264020, 20668456,
-19840064, 9667435, -4351876, -11218991, -21153788, -31132070, -31261994, -35234300, -37091876, -31636730,
--10875931, -3725347, 12364137, 31836446, 35336844, 35067872, 40862320, 32592896, 24300924, 20308216,
-6562710, -15809238, -28300076, -45917496, -58760520, -54905788, -43640624, -21888764, 5446556, 29463476,
-40306656, 46540804, 48375292, 41862508, 29458644, 15112916, -9759776, -23766738, -31585726, -36478232,
--32076426, -24023900, -16726750, -6840273, 7540352, 10192494, 13710609, 15955267, 14025216, 11304354,
-8856759, 6091874, 5172215, 2390149, -1968706, -3034395, -3290482, -4902169, -5582921, -6993281,
--8396124, -9071508, -7470022, -5532455, -3078418, 76236, 4412542, 5966247, 4590783, 2843805,
-1946694, 1621350, 0, 0, 0, 0, 0, 0, },
+2687039, 1690070, -3508988, -618475, 4480188, 1328756, 1105954, 2470143, -584652, 675384,
+-1165547, -4686346, -1841467, -233539, -1034013, 1345935, -1450625, -455803, -3969087, -6442,
+684510, -2804077, -609885, -3539590, -1258962, -1129576, -4282620, -1969243, 1363115, 1862942,
+4799626, 2837900, 6131603, -670552, -1000191, 892816, -2115808, 5325223, 313533, 2511482,
+4226248, 733903, -1712618, 1721208, -2259690, -3012920, -756451, -1308891, -1665374, -5558225,
+-1797981, 14496, 862752, 1642825, 459562, 2807298, -3152506, 2474975, -25233, 604517,
+1755568, -2205466, -4909685, -2129230, 2083059, 3048890, 2319819, 179315, 2365453, 1780264,
+3218541, 1602560, 1387274, -2146947, 161598, -363462, -432181, -1831804, -2245194, -987843,
+-522375, -223875, -1731409, -4832, 244276, 654983, 157840, 1221918, -674310, 544387,
+-1083942, -1656247, 808528, -260919, -41876, 1112933, 793495, 971736, 70330, 70867,
+-946503, 537945, 176094, 308164, -139050, 1513439, -329639, 55835, -661425, -566936,
+-743566, 624918, -501974, -1437203, -2571075, 2444910, -3954054, -2429878, 6368900, -1031329,
+5630702, -2879776, 548145, 2785286, 1240172, 186831, -3778498, -5360656, -5592048, 602906,
+145492, -1582696, 760746, -4950487, 9863392, 1115618, -5483600, 1460289, -2871723, -3128884,
+2944200, 4182225, -60130, 941672, 1999307, -302258, 23622, 3283503, -1797444, -802085,
+199179, 5979132, -115964, -699006, -2257005, -3532074, 1844689, -871342, -3623342, -1637993,
+-4362613, 585726, -3956739, 89657, -2995740, -990527, -2634426, -5487895, -2247342, -344671,
+5184026, 762357, -1496259, 2825015, 4747013, 716186, -6458557, 2976412, -14496, 1207960,
+2125472, -1502165, 4098473, -2042794, -3653944, -3812320, -6749541, 631360, -2302639, -2396592,
+-3039763, -3187403, -181999, -3476776, 1103807, -543313, -1972464, -731755, -2228551, 47245,
+-96100, -2557116, -1061394, 1036698, -370441, 165356, 575526, 239981, 439697, 324807,
+-693637, -2289755, -411243, -859530, 646393, -293132, 271120, -438624, 19864, -35433,
+-495532, -1437740, -1180042, -195421, -520228, -554588, -462783, -1077500, -397821, -4952098,
+8290361, -2076080, -7517804, 582505, 2578591, 245887, 2377265, 1941325, -5949067, 2137283,
+-1376537, -231391, 255014, -1079111, 4563403, -1394791, -2941516, -247497, 3650185, 2300492,
+1364726, 2149631, 8829916, 2338610, -3009698, 3993246, -3677029, 1234803, -2964064, 8299488,
+1307281, -2686502, -1609539, -2693481, -922881, 5509370, -4374961, -3690451, -1113470, 4564477,
+2625299, -4203163, 1204738, 958851, -2452426, 129923, -9014063, 3011846, -2067490, -1716913,
+-5711233, 8682276, 496069, -4518843, -3546569, -4435091, 348966, -954557, 491237, -24159,
+-5199058, 6873022, -3876208, -3557844, 2724620, 736587, 2705830, -1927367, -401579, -4227859,
+387084, 924492, -5369246, -4008278, 396748, -3741990, 1353989, -3346853, -944893, -943819,
+2392834, -4322885, -4491999, -918586, -712428, -1072668, -289373, -1937030, -491237, -1409823,
+-1162862, -913754, -1401233, -1694365, -153545, -2275259, 603980, -1509681, -5906, 144955,
+-547608, -856846, -118112, -603443, 1174137, -178778, -992137, -58519, -1753420, -343597,
+-1075352, 86436, 235686, -1202591, 7194607, 223338, 1556389, -5951214, 1830193, 3419331,
+2495913, -249108, -2984466, 7737384, 1344862, -1541356, 3710852, 3032247, -3616899, 4741107,
+-3187403, 7818451, 1108638, 6978248, -761283, 1231582, -2736431, -7900056, 855235, 162135,
+271120, -1365263, 1626182, 4172024, -1046898, -4057134, -2685965, -5770826, -1596117, -2841658,
+-3052648, 532039, 1989107, 3134789, -3710852, 2589865, -2483565, -3085934, -416612, 2649995,
+496606, 657667, -5770826, -5567352, -1055488, -1650878, -4219269, 9196062, 4268661, -580894,
+1773285, 3696356, -9276592, -4692789, 6222871, -3468186, 5836861, 1324997, -1214939, -6225018,
+-4594005, 7403987, 3923453, 7000797, -7351374, -509491, -5098126, -406411, 1814087, -2717641,
+867047, 545461, -4576288, 4112968, 461709, 623307, -745177, -8152385, 886911, -1962263,
+-2564632, -2551211, -492311, 1418413, -1312113, 632434, -2866354, -607201, -1312113, 1833414,
+-351650, -220654, -928787, 66035, -970663, 626528, -1617055, -775778, 537408, -461172,
+-98784, -102005, -10201, 753767, 472446, -134755, -1133335, -1181116, -1228898, 1062468,
+487479, 1548873, 816581, 628139, -12179454, 582505, -1620813, 3218004, -7396471, 2282238,
+-2537789, 12184822, -3315178, -6409165, -2389613, -5386426, 1592896, 4484483, -1517734, 8498667,
+809064, -2588792, 1995549, 981400, 2161442, -3095598, -603980, 3125126, 4955319, 1927904,
+-1073205, 2350958, -4558571, -1460826, 6248641, 4458176, 7349226, 5206037, -197032, -3835943,
+-7988103, 5403606, -938987, -5832029, 2923262, -1584306, -8939438, 172872, -7465727, -645319,
+6607271, -1193464, -5045513, -2347737, 6306623, -5589900, -9127879, 9131100, -1807108, -2291365,
+2078764, 1109175, 1013075, 2152852, 2138894, 1166621, -6747394, -2590939, 5078799, -752156,
+-2054605, 1503775, 8771934, -4541928, -4988068, -2296197, 3547106, 1787780, -8051990, -3598109,
+-2819646, -3531000, 2545305, -524523, -679679, -3016141, -2426120, -6361384, -3708168, 1472100,
+132607, 954557, -330712, 3690988, 3794067, 629213, 1337346, -1990717, 369367, 139586,
+1505386, -2439542, -1171452, 253940, -19327, 1074279, -122407, -1402844, 1314797, 475668,
+-2731599, -560493, 692564, 436476, 376883, -705985, 276489, -1331977, -1352378, -1142461,
+596464, -605054, -729608, -229781, -10652056, -254477, 2814277, 10200010, 10543071, -3435437,
+5237176, -6829535, 2210298, 4465156, 6763500, -2010582, 10158135, -1947231, 8612483, -4753992,
+7212324, -3671660, -12063489, -2768107, 2981244, -4189741, 4622459, -2641942, -2916820, 1266479,
+-13219909, -4303557, -297427, -2332167, -818728, -6416681, -2228014, -2315524, 2073396, 13411035,
+7728257, -7864085, 4252555, 10715407, 2643016, -3816615, 2656974, -2881923, -3227668, 7700877,
+5364414, -5428839, -747861, 5477157, 11515881, -3758097, 6254546, 17087528, 7349226, -7938710,
+3169149, 1947768, -9565429, 1385664, -7907572, 3480534, -8614631, -2069101, 338229, 4021700,
+-5627481, -1595580, -2797634, -5142687, 6575595, 5619428, -324807, -3781719, 1006633, 963683,
+920734, 1549410, 4884989, 921271, -6522445, -153545, 7902740, 213138, 1768453, 1560684,
+2391223, -2501282, -1156420, -3999152, -1692754, -3682398, -307627, 2144799, -478352, -2097018,
+1157494, -446677, 455267, -1147830, -774168, 1447404, -110595, 3498788, 863288, -774168,
+1861868, -64961, -826781, -1349157, -1792612, 765041, -946503, -501437, 924492, -107911,
+1654099, 80531, -2153389, 4686346, -2295123, -10729902, 2501819, -8615704, 1415729, -2841121,
+11188927, -5648956, 1597191, 2958159, 1129040, 4073777, -1620276, 12243878, 979789, -7907035,
+-1453310, -5825587, -915365, -1882806, -5450851, -6852621, -1742146, -4406637, -2069101, 7839389,
+2930242, -6593849, 2602213, -7878581, -1474248, 5762773, -10755135, -9497246, 5437429, 5102958,
+2659122, -308701, -6522982, 2607582, -3205656, -6169184, -2835215, 346819, 1978906, 10246181,
+-4014184, -1147830, 563714, 4782446, 2535641, -3536906, -4554276, -8198556, -2482491, -1811403,
+-4492536, -5257577, 3376918, 6845104, -10737, -4365835, 7595113, 1461363, -3715147, 935766,
+-1085016, -978716, -2585034, -1471563, 4939750, -3905199, -5837398, -3375308, 3091840, -4529580,
+8028368, 3588982, -1298154, -3281892, -3700114, 2278480, 4997732, 10190884, -2918430, 5217312,
+200253, -16106, 585189, 1639067, -1848983, 49929, 1287417, 2147484, -1315871, 1503775,
+-1125281, 4941360, 1915555, 3716757, 75699, 2527052, -102542, 2244121, -412317, -199716,
+2644626, 993211, 351650, 1388885, 341987, 2586644, -1878511, 610422, 1800665, 2378338,
+2082522, -782758, -2585570, -35433, 1687922, 365609, 339302, 2138357, 5562520, 10612864,
+-7915625, -276489, 7226820, -3457986, -5187784, 6646462, -10486700, -639950, 1937567, -1363115,
+-3912715, -4614943, -2221572, 1816234, -564788, 5021891, 2527588, -1676648, -3997541, -2914135,
+8260833, 325881, -10103911, 4712653, -6392522, -6260989, 3836480, 7279433, 7415261, 5633387,
+-181999, 3808562, 2586107, 3595961, -3314641, -163209, -2989297, -7269232, 3054796, -1873680,
+-401579, -1599875, 704375, -1197759, 8031052, 14952392, 2458869, -2587181, -47245, -10672457,
+10358387, -7275138, -4728222, -7000797, -8587787, 14535780, 791348, -8070244, -2928631, 10031970,
+5166309, -7593502, -5683316, 11498701, 925029, 1193464, 14856292, -7090454, 4078608, -5323075,
+-14750528, 6937983, 7097434, 1194001, -8517457, -1186485, -1852742, 1771674, -3698504, 5408975,
+3321620, -11651173, 4947266, 5598490, 7117835, 1243393, -6240051, 10440529, 1764158, -912681,
+-807454, -3481608, -3684545, -1305670, 652298, 3164317, -15569, 273804, -344134, -2786360,
+1170379, 1281511, 546535, -1267552, -783832, 2126546, 741956, 2419677, -1579474, 586800,
+-3668439, 435939, 3435437, -4602058, 625992, -3600256, 4201552, -1733556, -115427, -2797098,
+-36507, 2465848, -312459, 3354370, -11811, 5010616, 6408091, 11894375, 10891500, -453656,
+9284109, 4161287, 9468255, 9145596, -15250892, 5500243, -4944581, -6609418, -4822712, -1458678,
+-9729712, -2055142, 2362769, -8326331, -17064442, 3879966, -1212255, -15381352, -11286637, -10082973,
+-5633924, 528281, -2896419, 3629247, -2037962, 6088116, 11902965, -6839736, 4042638, -2700461,
+-5466957, -3990562, 718333, -1187559, -501437, 8856223, -375273, 8928163, 11584601, 3445638,
+4983236, 7656853, -1013075, 1536525, -11454678, 10684268, -9343701, -3302293, -2982855, 932545,
+-2588792, -8923868, -7858180, -17226040, 15586973, -17596482, -17049946, 2866891, 16346646, 5788006,
+-2120640, -4128001, 7514046, -8268349, 9400610, -2761664, 1189706, 955630, -6251325, 6541235,
+-7384123, -6040335, -715649, 2347737, -7054484, -1125818, 3775813, -581968, -1942399, 5024038,
+-3346853, -6350109, -1470489, 3171297, -4209068, -2476049, -2886755, -664646, 1891933, -1384053,
+556198, -1076426, -2317672, 629213, -1497870, 1439351, -1564979, 2095944, -660888, 3934190,
+-590558, 1504849, 2138357, -1402844, -2703682, -311385, -681826, -186831, -853625, 1811939,
+68183, 2352032, -2161442, 810675, -4604742, 173409, 167504, -1711545, 1357747, 7137699,
+9298604, 9294846, 10117869, 23848342, 10714870, 13631689, -6730214, 22075058, -12597676, 610422,
+4872104, -96100, -8295730, 2760590, -2287607, -18811420, 7138236, -4734665, 2028835, -1757715,
+-6226092, 17180, 5604933, -7592966, -3935801, -1178969, 4434554, -11471858, 7282654, 2752000,
+-10510859, -815507, 4300336, -9526237, 3582003, -11425687, 5287642, -973347, -3688303, -436476,
+-7458211, 9613211, 11361799, -10813654, -6173479, 4917201, -3843459, 3029026, 2749853, 736587,
+375810, 13106630, -3292093, -8745627, 8122320, -324807, -6880001, -5779416, -10871099, 2107755,
+2980707, 5450851, 5237176, -5020280, -8443369, 4741107, 2377265, 16380468, 1737314, -2020782,
+425202, 1103270, -4820027, -2152316, -6045704, 6715182, 3887482, 4376572, -1273458, -10456635,
+-9529996, -3118683, -837519, -3750580, -6601365, 1869385, -2885144, 4328790, 769873, -691490,
+2696703, 2793876, 4444755, 4164508, 3358665, -18790, -989990, 1191317, 2989834, 2311229,
+-1322850, -1252520, -832150, 768262, -2147, -816044, 59056, -5144297, 639413, 3371549,
+2586107, -4007205, -2881386, 5760625, 3087008, 5712844, 2261837, -4164508, 3969624, -1013075,
+-3147674, 620623, -4495220, -2467996, -1140851, 1729798, -897111, -12882218, -14477261, 24143622,
+16834124, 21583284, 1373316, -13860396, 4876936, 11261404, 8016020, -3540664, -8771934, -2585570,
+-3228205, -4260071, -7553237, -3034395, -6345278, 16093242, 2567317, 2652142, 115964, 932008,
+1703491, -5958194, 10649371, 6010270, -642098, 3868155, -1524713, 10961293, 2014877, -978179,
+-17951890, -1334661, 1120450, 1702955, -3367791, 2237678, -8507256, 14559402, 11792370, 11381126,
+9932649, -7822746, -10828686, 8296803, 2552284, 4053376, -718870, -12605192, -9119289, 721018,
+-7110855, 77309, -5973226, -2602750, 7551626, 2398739, -5401458, 1925219, -13934485, 420370,
+-23619636, -12006044, -22316114, 19258096, 17357036, 18526342, 22454626, 10871099, -3721589, -9968619,
+-3027952, -557272, 3219078, 17787070, -5881958, -13524852, 10307922, -8609799, 4486630, -1976222,
+-1950452, 4167192, -4013647, -7318088, -2074469, -9009231, -1916092, -8101382, -1866700, 1129040,
+-720481, -981937, -2206003, -2830920, -5597953, -90731, 2927557, 452045, -2823404, 978179,
+4877472, -664646, 3258270, 1784022, 1925219, 1365800, -6471979, 5653788, -2507724, -2058900,
+3789772, 1302986, 4190814, 421981, -5390184, -1007170, 106837, 929324, -3303367, -8567386,
+-11528229, 10162429, 13186623, -6478958, 12243341, 1725503, -5201206, 4923107, -17749490, -5508296,
+5004174, -5656472, -10885595, -20515448, 10077067, -8816494, 2371359, 13287018, 3187940, 15493021,
+11851962, 6737193, 2542621, -9151502, -2687039, -4791573, 836982, 8628052, 4496831, 1780264,
+7365869, 21065204, -1101122, -17918066, -7868917, 2894271, 4300336, -1027034, 443455, 1695438,
+-7643968, 469762, -16865262, 3792456, -17643188, -6433861, -13662291, 6725919, -6816113, -11210402,
+17104708, 4796942, 1393717, -7699266, -10262824, 2561948, 4066260, 1506997, 5573257, -8746701,
+19229642, -23350126, 6073621, -9732933, -14173929, -7940858, 12238509, 3688303, -13287555, 9386651,
+-10581726, 25936234, -2418067, -2847027, -12617003, 1510218, -16831440, -9029632, 22453552, -9038759,
+-10197863, -6658810, 6713571, 843961, 9517111, 4744328, 4975183, 6937446, 3769908, -636192,
+716186, 3309272, 1417339, -1833951, 5574868, -1750736, -1942936, -4201015, -3773666, -1694902,
+2057289, -3307125, 243739, 1618129, -1365263, 1411434, 260919, 5502390, 2882997, -6442,
+-1122597, 10201, -400506, 3288334, -2923262, 2983392, -825171, 1321239, 4609037, -1458678,
+241055, -635118, -2319819, 5646272, -795106, 24395414, 25103546, 23678154, 5052492, -6350109,
+-3961034, -15255187, 12387223, 363998, 7268696, -4565014, 2336462, -5578626, -4291746, -8821326,
+4765803, -9185324, 15083388, -39366060, -11461657, 281857, -11911018, 8460549, -12242804, 2517925,
+-4730370, 12380243, 2203855, 11917461, 864899, -2813741, -190052, 4362076, -13790066, -9909026,
+-10726681, -1519345, 13424994, -26479010, 9189083, 23025856, 2832531, -16943110, -665720, -14270566,
+-13677323, 9470940, -1790465, -11658689, 6481643, 967441, -4344360, -6588480, 3770445, 9570798,
+5816997, -13542032, -9884330, 7742216, 11674258, -9535364, -12596602, 6206228, 13079786, -15908559,
+-549756, -14203457, -19489488, 23181012, -3859028, 3578245, -4350265, 14366129, -3389803, 3514357,
+-7724499, 12495670, 6933688, 11496554, 13293461, -13252658, -14626511, -5961952, -2803540, -8784819,
+-22006876, 2422362, 1196685, -14496, -1621887, -3575024, -2961380, 6320045, -556735, -2731062,
+5837935, -6440304, -3426310, 2389076, 11464341, -3482145, -3540664, 559956, -1450088, 3960497,
+-1388348, -639950, -2019172, -3223910, -8053601, -11557220, 2043868, -819265, -8804683, -4403952,
+2316598, -3068754, -9975062, -5553393, -670552, -1737314, 795643, 2834142, 1189706, -22549,
+8176544, 2822331, 12869870, -4784057, -638340, -19092204, -9030169, -4583804, -16227460, -23199266,
+-4536559, -7920457, 21370146, 6243272, 31897112, 5556077, -9482751, 3995393, 5851356, -26526254,
+1256815, 22816476, 14405857, -15559056, 1852742, 11281268, -21351356, -3632469, -10810970, 8723079,
+-8513162, 5667746, 1188095, -4410932, 901406, -291521, -7031935, 6956237, -14585172, -5836861,
+-6404333, -18239116, -4029216, -2607045, 37044, 1061394, -5159867, -5904507, 32584306, 9645960,
+-13008919, -23475218, -8685498, 2126009, 23475754, -5986111, -3351685, -13501230, -3804267, -9570798,
+19194208, -16061030, 17091822, 21772800, -22520124, 14450417, 5270999, -9682467, -8689793, 5143760,
+10013179, -48785996, -6726456, -336081, -6969122, 12539694, -6876780, -36532992, -14439680, -10830297,
+-16726213, -16244103, 2480344, 2866354, -9637370, -8514773, -15471009, 1292785, -5970005, 1023276,
+-6939057, -7942469, -9073118, 1735167, -2148021, 5011153, -7917236, 3401614, -1329292, -7969849,
+-16450798, -4297115, -1360431, 4910758, -2685428, -21621402, 3940096, 10060424, 3696893, -762357,
+-7930657, 7313256, -1522566, -2743410, -13354127, -2485176, -4919885, 10391137, -2108292, 1432372,
+-423591, 2017024, 6282464, -5224291, -98784, 71941, -2872796, 292595, 2397129, -15560667,
+-13654775, -5296769, -11154567, -7700877, -3499325, -7027640, -9034464, -7031935, 5352066, 32123134,
+-1119913, -37751152, -21204790, -23408646, -4525285, -13000329, -710280, -19219978, 31157840, 18515068,
+-3532611, 24538758, 545998, 26471494, 6186364, -15426986, -21099026, -13265006, -17065516, -7617662,
+3921305, 11386495, -3945464, 3683471, -14149770, 2320893, -20324858, -1875827, -1380295, 6853694,
+-7786776, 32161252, 3915937, -881542, 21122650, -8337606, -15414101, -8926016, 12837120, -1029182,
+-8876624, 3566434, -395674, 27384174, 6480569, 71404, -10924786, -16546898, -42080480, 2705830,
+-33498598, 16821776, 56625924, -40679784, -9025874, 9242233, -7340636, -7141457, -11739756, 9556839,
+-12050068, -39325256, -10815265, -39206072, -8571681, -1099512, -24974698, -3428995, -35786740, 15426986,
+-3932580, -22388054, 54812372, 4360466, 22117470, 18953154, 30056718, -18616536, -1655173, -11185169,
+-4486094, -7534447, 14050986, 9290551, 12575127, -26718992, -5824513, -14481556, -19297288, -15677704,
+-10132365, -1990181, 10043781, 8810589, 5558225, 7805030, -2600066, 2619930, 14545444, -2631204,
+14380624, 4531728, -13373454, -3374771, 4126390, -5417028, -2684892, 17635136, -217970, -5127654,
+19055160, -8870181, -1880659, -15904264, -4441533, -11031623, 7926899, -8378945, -4366371, -3049964,
+2689723, -3588445, 7080254, 419833, 7330436, 2449205, -3537979, -11910481, -66410932, -7089381,
+-17114370, -18710488, 23934778, 18955302, -23399518, -18524730, 45294188, -5330055, 14565308, 2172717,
+-2570538, -5417565, -5140002, -14942191, -360240, 5083631, 7947837, 5333276, 16060493, -12939663,
+-511638, -12612708, -7621420, 4879620, 22865870, 14672145, 20164872, 18118856, -4312147, 6459094,
+10750840, -125091, -18916110, -3554622, 25688736, -4784057, -37227164, -16451335, 3832722, -31503586,
+-13793287, -32278826, -22318260, -20224464, 29457570, 20172924, -6698002, 20193862, 7569343, 28543816,
+19013284, 9091372, -50719268, -11396159, 2003602, -44475460, -32711008, -12585865, -8902393, -52065740,
+10915123, 28599114, 38225208, 46017352, -15809775, -30194156, -623844, -30459908, -22863184, -42250132,
+-47153908, -33210834, -28191092, 30926448, 1043677, 6120329, -28675886, -29847338, -26982596, -2784750,
+40368936, 51525648, 1024350, -19082540, -14929306, -20962124, -54604604, -24365350, -24543054, -6814503,
+-2485176, -12449500, 13772886, -214748, -4675609, -19488414, -25662966, -13349295, -14687178, -22424024,
+-5434744, -5849209, -2686502, -6162205, -10710038, 13276818, 7777649, -1597728, -12817793, 8689793,
+14143327, 915365, -13147969, -6806987, 9725417, 2616709, -3368328, -12268037, 9708774, -2625299,
+-4518306, 1005022, 7403450, 1875827, -2885681, 1075352, 5609764, -20352776, -49432388, 19510426,
+2560338, -33547452, 31678068, 15848966, 9878962, -7148973, -29992294, -7355132, 1070521, 29628832,
+39228620, 2556043, 10734734, 2811056, 1394791, -1545651, 5451924, -16037408, 55151676, 13523241,
+-17789218, -17634062, -7835094, 2762738, 27027692, -12662100, -3932043, 363998, 13742822, -12689481,
+7301445, 1299228, -2905546, -45017164, -14105209, 14970109, 23652384, 8779450, -4955319, -12666932,
+-29874182, -2829847, 5001490, -6669011, 616865, -7354058, -19237158, 19949586, -4408784, 7458211,
+-20587388, -3824669, 52938692, 4495220, -5797132, 6709813, 6962142, 5531918, 26678190, -9199820,
+-11988864, 20426864, -2201171, 12358232, 7395934, 17898740, -6644315, -19044958, 9982578, -8450885,
+1600412, 75348224, 71971304, 32968706, -6376416, -3030636, 9131637, 34534220, 15687368, -9385040,
+-1093606, -3765076, -19072340, -19581292, 11159936, 6317360, 2912525, 17655536, -2232309, -8687645,
+10075993, 5020280, 14858976, -20798380, -17561584, -21130702, 3282429, -9041980, 1249836, -3571265,
+7950522, 9693741, 18424336, 11534135, -19523310, -13536126, 7034620, -11132555, -6842420, 2406256,
+6372121, -7164006, -19221590, -1213865, 673773, -707596, 8540542, 3247532, -15521475, 5783174,
+25109452, 29877940, 21509734, 25671556, 17628694, 23279796, -5996848, -279710, 19184546, 35546760,
+3842385, -39765492, -11254962, 7474317, 4684199, -10378788, 28115392, 13403519, 10279467, -10774999,
+33080912, -3172907, -229244, -10309532, 17142288, 10944114, -27227946, -39323108, -11753178, 5272609,
+1142998, -8441221, -36163624, -4648765, 11470247, 1698123, -12879533, -6000606, -11623255, -14635638,
+7180112, 8855149, -23588498, -26361972, -9850507, -32429150, 7409356, 26308822, -25171192, 25247428,
+-13514651, -15692200, -28135794, -38758320, -43490300, -41189272, -21778706, -1152662, 14029511, 5881421,
+13953812, -22269942, -48412336, -19755776, -46589120, -80714248, -31536334, 62977644, 108591272, 63234804,
+-28167470, -22775138, -98852968, -88778048, 59692528, 9513353, 78796544, 81817520, 84949624, 27913530,
+-35690640, -43817256, -48958868, -55614456, -9242233, 53196392, 90516976, 28276990, 8204462, -5284421,
+-47152300, -68229848, -46654620, 7681012, 62023624, 28530930, 39663488, 32351304, 10831371, -25151328,
+-28183038, 76773, -16291348, 4083977, 29532196, 31857920, 22724136, 3753802, 10795400, -567473,
+-22492744, 3369402, 6934762, -4381404, 1958505, -7064685, 43321188, 25021942, 26823682, 16122770,
+-17276506, -40717364, -57894548, 7343857, 17742510, 36765456, 36290864, 47937204, 21980568, -37462316,
+-47266652, -56312928, -11730093, -1255204, 27839978, 16005196, 7303055, 14925548, -29713658, -82689392,
+-56781080, -51486996, -13798119, 5148592, 16405701, -6380174, -13462038, -20138564, -3547643, 7641284,
+-24974162, 34968012, 16813186, 31047782, -68272800, 15462956, 9242233, -21020644, 15320685, -15734613,
+-7738458, -4717485, -9744744, 29375428, 54209468, -15779710, 10913512, -7589744, 13008382, 27511414,
+-8403640, -5077725, -14974940, 7865159, -9488656, -29951492, 21858700, 36791228, -4814659, -19370302,
+-17641578, -38903812, -10642392, 29348586, 20048370, 10162966, -42696808, -24917252, -18577344, 37725920,
+32913946, 28679108, -83398600, -55686400, -6668474, 41145248, 88236344, 217433, -105890272, -39073464,
+3652870, 35600984, -2801393, 19471234, 14957760, -46450608, -20144470, -12966506, -27625230, 1757179,
+-51984672, 7983271, 20800526, -63189708, -40169756, -19840064, -7889855, 69535520, -229244, -107248016,
+10482941, 14867029, 16550656, 41944112, 19885162, -45964204, 2530273, -2000918, 91822104, 64355788,
+-53449256, 48680232, -28365574, 19200652, 50849192, 17905182, -27469000, 25116432, -10803990, 6223945,
+17849348, -2186138, -18469970, 34320008, -21939766, 25058450, -11541114, 13318694, -3798362, 27520540,
+-9373766, 21539260, -37780680, -6969658, -31139, -5408438, 12714714, 23336704, -23822036, 48530984,
+-18694918, -17289928, -32896766, 23989002, 51968568, 9697499, -67282272, 4991289, -14711874, 32456530,
+16773995, 14338211, -26677116, -2422899, -16753594, 15855946, -6449431, -11470247, -3345780, 21658446,
+-4701379, -14345191, -16090558, 11970074, 2684892, 11347840, -6748468, -409096, -12130061, -1708860,
+-1904281, 5333276, 2784750, 12815646, 23630374, -56464860, 8009577, -41460392, 7550016, 35193500,
+31114890, 10187662, -20179904, 4037269, -11993696, -2969970, -14880988, -10995653, 7636452, 2054605,
+-21660594, -2496987, 11260867, -2410014, 1265942, 4076998, -13819594, -13685913, -364535, 9049496,
+1196148, -22024592, 1830730, 11289322, 3541201, 2621004, 23030152, -2543158, -6148246, 8253317,
+8814347, -15585899, -17283486, 12806519, 2473364, -13272523, 8902930, 3853123, 4310537, -9286793,
+3733400, 10436234, 1253594, -13066901, 17713518, -2157684, -19870666, 593779, 15538655, 4840965,
+-13005698, 11823508, 3914326, -18129056, 7446937, 927713, 18500034, -16777216, 1505386, 12744242,
+-29372744, 932545, 12676059, -492848, 8784819, -4888210, -18804440, 2491618, -19897510, 18670222,
+9640054, 5260261, -7395397, -7800735, 15425912, -13301514, 13765370, 15117748, -21626770, -7023882,
+925565, 16740172, 261993, -9711458, 6202470, -11761231, -704375, 1699196, 9887015, 672699,
+1626719, -6079526, 10291279, -3447785, -12005507, 10916733, -4847408, 4706211, -2718178, 7870528,
+9948755, -11426224, 2001455, -6193880, 2695092, -6293738, 22121766, -6256157, -12404402, 9975062,
+-5584531, -1883343, -6307697, 6519761, 6028524, -8950712, 5013301, 8705362, -4500589, 574989,
+-12336757, -27938226, 45817100, 6478422, 20728586, -17812840, 7931731, -3845070, 5557151, 5027259,
+-7623567, 3100967, 8421357, -4804458, 18295486, 853088, 635118, 6243809, 6014028, -644245,
+-4607963, 7834021, -1161252, -5345624, -1055488, 7873749, -8402030, 1853278, 3882114, -10711648,
+13502840, -2623688, -6415608, 20695300, -8434779, -12096775, 9548249, 5305895, -5632850, 9018894,
+7233262, -2418067, -2835752, -1531156, 2761664, 5226975, 3086471, 48855, -3491809, 10716480,
+-11249056, 10281078, 1667521, -1150514, 2918967, 3325379, 3382824, 559956, -10003516, 2930242,
+8763344, -6080063, 46708, 113280, 6693707, -557809, -2495376, 10107132, -5003637, 5480915,
+-10282152, -3718368, 10110890, -9429064, 9723806, -2383707, 6428493, 7873749, -8722005, -2865817,
+10964515, -8968429, -404264, 1269163, 3368328, 941135, -1166621, 532576, 886374, 5158256,
+-4218732, 1240172, 3275450, -188442, -2149631, 694174, 1951526, -298500, 716723, -1761474,
+2334315, 3272228, -5411659, -733903, 9549860, -4451734, 2774549, -559420, 5470715, 1672353,
+-2923262, 747861, -525060, -3015067, -2127620, 11326366, -1839857, -2422899, 1664837, 1390496,
+-809064, 2521146, 4670240, 291521, 1260036, 573378, -921807, 835908, 1413044, -1984812,
+1545115, 8590, 10660109, -37832220, -120885072, -6185827, 65093452, 29196114, 138708112, 11800423,
+29266444, 1187559, -40491876, -50996296, -34554084, -62139048, -43487616, -27359478, 954020, 47391208,
+93382256, 68718400, 59799368, 19458886, -32556388, -47795468, -42979736, -50644644, -56171192, -22781580,
+-10801843, -4932770, 27354110, 36331128, 27379880, 50802484, 32779728, 12150462, 34064996, 773094,
+-14861124, -9822053, -30663382, -62810676, -38213396, -36779416, -37527276, 1941325, 17414482, 12051141,
+46097348, 37824704, 26032334, 37204080, 39528732, 11202348, 11815455, -4227859, -34138548, -47387448,
+-36257576, -47494284, -33822868, -11800423, -8411693, 2922188, 25799332, 20236276, 18209588, 36506148,
+30118458, 22183506, 37643776, 10334228, -7799661, -1559610, -15196131, -32760936, -19117974, -41445360,
+-52455508, -30878668, -26141856, -11322071, 30341260, 41053444, 38206420, 44167296, 36264020, 20668456,
+19840064, 9667435, -4351876, -11218991, -21153788, -31132070, -31261994, -35234300, -37091876, -31636730,
+-10875931, -3725347, 12364137, 31836446, 35336844, 35067872, 40862320, 32592896, 24300924, 20308216,
+6562710, -15809238, -28300076, -45917496, -58760520, -54905788, -43640624, -21888764, 5446556, 29463476,
+40306656, 46540804, 48375292, 41862508, 29458644, 15112916, -9759776, -23766738, -31585726, -36478232,
+-32076426, -24023900, -16726750, -6840273, 7540352, 10192494, 13710609, 15955267, 14025216, 11304354,
+8856759, 6091874, 5172215, 2390149, -1968706, -3034395, -3290482, -4902169, -5582921, -6993281,
+-8396124, -9071508, -7470022, -5532455, -3078418, 76236, 4412542, 5966247, 4590783, 2843805,
+1946694, 1621350, 0, 0, 0, 0, 0, 0, },
{
-2763275,
-666257, 3242164, -281320, 294205, -4798016, -2411087, 713501, 6369974, -4101157, 1333587,
--6607271, 6790880, 452045, 2491618, -775242, 1080184, -1268626, -2324651, -5742372, 2439005,
--5757404, -2687039, -3244848, 3278134, 2608119, 1260036, 2718178, 5120675, 343061, -4633196,
-3062312, 507343, -208306, 2511482, -911607, -1673964, -6774237, 1111323, -1932198, 1495186,
-2863133, -3670587, -1452773, 3364033, 1066763, 410169, -3441880, 8726300, 5266704, 866510,
-4231617, 3478924, 3378529, -7950522, 514859, -758599, -2090575, 1968706, 1340567, -1262184,
--1467805, -411780, -2362769, 2367064, -878321, 4651987, -149250, -1167157, -2177012, -4037806,
--718333, 3140695, -111669, 732829, 3699578, 1022202, 4275640, -66035, 670015, -419296,
-4595615, 4076461, 4124779, 911607, 22012, 1843078, -64425, 583579, 113817, 227096,
--314069, -1248762, -1048509, -214748, -1204738, 606127, 652298, -504659, 1368484, -507343,
--360777, -253403, 579284, 175557, 1227824, 126165, 46708, 119722, 1584306, 787590,
--88047, -394063, 102542, -194884, 410706, 1633161, 378494, 2076080, 7222525, -3497177,
-2413772, -1988570, -3126736, -1280437, -2164664, 3947075, -3255048, -6040872, -1541893, 1596117,
--5036386, -3040300, 5691369, 9834938, -1655710, 3762391, -3369939, -3543885, -156229, 1042066,
--431644, -95563, 3649112, -6227166, 2034741, -453119, -1305670, -5247377, 457951, 129923,
-2960843, 893890, -4111894, 5431523, -4316442, 5068599, -569083, 926639, 2057289, -586263,
--2532957, 3966402, 971200, 5296769, 803696, -4651987, 8452496, 6731825, -2345589, -678605,
--1631014, -5864778, -3180423, -956167, -1015223, 2385318, -3238405, 273267, 2313377, 24159,
--93952, -360240, -561030, -3193308, 5106179, 181462, -117575, -1594507, -576599, -4671851,
--4178466, 1400159, 3404299, -408559, -893890, 18790, -44560, -2379412, 4570919, 651761,
-1505386, -1165010, 1239098, 812286, -201863, -54224, -213675, 93416, 1072668, -571231,
-674310, 767725, -156229, -150861, 553514, 1260573, 1078574, -746251, 287763, 415001,
--622233, -301721, 1701881, -201327, -103079, -1306744, -1259499, -2028835, -788127, -7576323,
-9218074, -2070711, -1138166, 6571300, -2637647, 3364033, 14666240, -1817308, 389768, -5681705,
--4595615, -7065221, 4016331, -2949569, 1937030, 3811247, -4466229, -3826279, -2815888, 262530,
-1401233, -5506685, -2186675, 2328409, 1995549, -2217277, -936303, 3276523, -3487514, 481573,
--1757179, -676457, -2442763, 1987496, -2245194, 851477, 1905355, -955630, 6138045, 205622,
--887448, -4627828, 497142, 6560026, 865973, 2178085, -6101538, -8698383, -3189013, -7490960,
--6615860, -227633, -2882460, -312996, -8015483, 6759742, -7424388, 1029182, 5007395, -4620311,
--7755101, -5536750, -1666447, 5064304, 4495220, 6796249, -4079682, -3594888, -2882997, -2483028,
-4909148, 1222455, -2095944, -1150514, 2312840, 2632278, 769873, 1185411, 1673964, -424665,
--2895345, -513785, -1931662, 664646, 202937, 577136, 525060, 102005, 1154809, 112743,
-1353989, 91805, -1092532, 1379221, -1689533, -1118839, 293132, -477278, 1388885, -911070,
--691490, -327491, 151398, -602369, -1027571, 872952, -349503, 634045, -872952, -841277,
--1026497, -1185411, -757525, -1081795, 8020852, 832687, -3226057, 453656, -2670396, -595927,
-5613523, 9414031, -3219615, -3296924, -8543764, 1079111, 2145336, 4858682, -3221762, 5238787,
-831076, 8069170, -6476811, 1034013, -12230993, -1351841, 1462973, -2995203, -2749853, -1086627,
-4510253, -3699041, -6427956, 1817308, -9431748, -2064806, -4529043, 2072322, -1001264, 3182571,
-423591, -7202124, -7764764, 202937, 4143033, 7681012, -1522029, -3140695, 6448357, -7115687,
--3857418, 3416647, 3070365, 5078262, -4850629, 168041, 1978369, -3078418, -1022739, 2992519,
--4399657, 5731634, -2487323, -1083406, -6118181, -5112085, 2476586, -28991, 131533, -883153,
--3746822, 3542274, -2348273, 4408247, -57982, -5872831, -6123550, 2229088, -3069291, 1078574,
--8722542, -8369281, -1309965, 7840463, 79457, -1640678, 416075, 1112933, 865436, -381178,
-1282048, -4119411, 793495, 669478, 1272921, 1556389, 1782948, 900869, -2265595, 144418,
-2059974, 911607, 581431, -1168768, -1366873, 301721, 34360, -496069, 1942399, -63888,
--92342, -1346472, 2417530, 1931662, -73014, 144418, -1123671, 656593, 788127, 301721,
-155693, 753230, -1006096, 4831302, -13042742, 3058554, -5651640, 4830765, 5515275, -6151467,
--11433203, 1637456, -1505923, 7286949, -4337380, 10540387, -4403952, 6984154, -8581345, -3161096,
-3617436, 5200132, 1471563, -9127, -5256503, -665720, -4131222, -5164162, 2900714, -4403415,
-1755031, 1045288, 2157684, -2491081, 4913980, -890132, 4232154, -921807, -8041253, -1316408,
--2558190, 843961, 8070781, 536871, -672162, -389231, -3242700, 2815351, -3055869, 4281546,
-4619774, 1701344, 1789391, 8142185, -1988033, -1433982, -6468758, 4654134, 4097399, 891206,
-1070521, 886911, 360240, 2408403, 4962835, 3337190, 1905892, 1836099, -1237488, 6481106,
-2219961, -1292248, -4931160, 2552821, -1449015, 9448391, 5364414, 1227824, -4316979, -1579474,
-7194070, -2745021, 963683, 4198868, -2288144, -2845953, -5668820, 765578, 2107755, -407485,
-2765422, -2185602, -809064, -1693828, 2036351, -128849, -604517, -2686502, 685047, 745177,
-1670205, 1979443, -622770, 365609, 2168422, -119185, 2200097, -105764, 688805, 3235721,
-695248, 3324842, -213138, -670552, -169114, -240518, 147103, 278636, -2436320, 964220,
-2019708, 253403, 837519, -549756, -16821240, -9130027, 3398393, -3272228, 6788196, 6773164,
-10213432, 4235375, 4140349, 2531346, -12257837, -2731062, -1684164, 1115618, -1217086, 3833795,
-2724083, -4702453, -3756486, 3166465, 5985574, 7552700, 6508486, 8577050, -4684736, -4669703,
--6215892, 6616934, -3811784, 5469641, -1375463, -269509, -5822902, -3477850, -3329674, 4969814,
-6111202, 1092532, 6108517, 8753680, -3471407, 2224256, 10257456, -5144297, 3329137, 3492882,
-383863, 7726646, 9881646, 7529615, 17139604, 3198677, -2436857, -3160022, -2942590, -171799,
-3012383, 5211943, -954020, -1665374, -1820529, -4580046, 1921998, 2496450, 4434017, -10687489,
--1478006, 2720325, 7089381, 4964446, -9151502, -6757594, 1715303, 1723356, 7394860, -6509560,
-398358, -645319, 769873, -9268003, -2527052, -3183108, -2269890, -3800509, -1620813, 306553,
-3544422, 6979, 180926, 1403917, 1683627, -3530463, -582505, 279710, -8590, 1281511,
--1248225, -2301566, -1597728, -1753420, 2496450, -2410551, -1197222, -2776696, 670552, -582505,
-1762547, -2539936, 1040456, -848793, 1020055, 973884, 145492, 2232846, -2141041, 1109712,
-1179505, 387621, 2540473, 4088809, 8159901, -1026497, 1688459, 6979859, 10236518, 5775658,
--11240466, 63351, -11960947, -8476118, -5121749, -970126, -7307887, 8784282, 3267933, 5210332,
--14884746, -1043677, 9783936, 4987531, -4347044, -6243272, -3799436, 3830574, -11379516, -639413,
--7301982, 11253351, -1448478, -3256659, 1227824, -374736, -1893544, 2007897, -2935073, 5239860,
-3740380, 7519414, -522912, 408022, 11600170, -3634616, 7776039, -1232656, -1326608, 20401632,
-2462090, -2160369, -4567161, -15737834, 1697049, -16130287, -2682744, 17033304, -4764193, -3283503,
--11783780, -3443490, 457951, -6331319, 3454764, -595390, -8625368, 9227200, 3332358, 3018825,
-2572686, -6388764, 7071664, -10965588, 3218541, 4240744, 504659, -1434519, -4405026, -3473555,
--4487167, -1432909, 3692598, 4715874, -1140851, -3821447, -2229625, 5254356, 2193655, 10038949,
--129386, 775778, 4126390, -396211, -1797981, -1368484, -1217086, -1086090, -1603097, 1196685,
--1836635, -53150, 2094333, 769336, 2135136, 2030983, 1668595, 199716, 3077881, 2206540,
-1359894, 948114, 972273, -3141232, -2625836, 2312303, 385473, -1930051, 406411, -2197413,
-701690, 2551211, 985695, -408559, 993211, 2190970, 551366, -1740536, 1008244, 6735046,
--13292387, 5866389, -4629438, -6674379, -6358699, 5180805, 6593312, 3884261, 11364483, 8410083,
-1774358, 3487514, -8742406, 1887638, 4071629, 8836895, 1784559, -4097936, 3286187, 4179540,
--7827041, 1253057, -8031052, 6435472, 5870147, 7533373, -7137162, 4515621, 8056822, -3503620,
-2146947, 10669236, -233539, -6445672, -5119601, 2456185, -1658931, -6551973, -2646237, 226023,
-1641214, 3713536, -4494684, 7479149, 4574677, -1584843, 8994198, -996432, 3466039, 11775190,
--12316356, 22997402, -10448582, 3251290, 6992207, -2284923, -1188632, 3003256, 15595026, -740882,
--2058363, -357019, -3593814, 7639673, 8539469, -2600066, 3703336, 3110630, 2843268, 5280126,
-6743099, 655519, 7284802, 1658394, -6094559, -9408126, 2361158, 1044751, 4451197, 1970853,
-14440217, -1340567, 8103530, 6572911, -4361540, -8070244, -872415, 1035624, 2208687, -2112050,
-3779571, 1846836, -3437585, -855772, -3278671, -1129040, 2181307, -972273, 3179350, -674847,
-1194538, 901943, -1352378, 1748052, 1961726, -2747169, 2001455, 1385127, 682900, 784905,
--15569, 661425, 3518652, 1177358, -1133871, 727997, 1028108, 1806571, 2199023, -543313,
--2291902, -580894, -1992328, -1451699, 2622615, 7561290, 9972377, 6111202, -10686952, 20352240,
--6459094, 3816079, -15010374, 5896453, -13277891, 10197863, 1024887, -2906082, -7526930, 9634149,
-1263257, 6123013, 6355478, 3212636, -11181947, 5634997, -6779606, -1305670, 5003100, 5401995,
-1246614, -2146410, -11198590, 1483374, 10268730, 1074816, 6640557, 7374459, -11688217, 6347425,
--5951751, -5938329, 8591545, 9454297, 4939213, 5281736, 1472100, 5057324, -12039330, -5454609,
--3853123, 253940, 12790413, 6051072, 5061619, -1042603, 5618354, -385473, 14092325, 5104032,
-5340255, 2052994, -795643, -20969104, 7728257, 4824322, -1936493, -1589138, -15584289, 29528,
--5958731, 3606162, 13566191, -2399813, -7766912, 15697569, -708670, 8807904, -5272073, -77309,
--9867687, -1049046, 195421, -17236778, -5078799, -3092913, -7681549, -3713536, -1502702, 926639,
-8578123, 478352, -190052, -1813550, -4402342, -874026, 810675, -1792612, 629750, 38655,
-2318209, -4186519, -1554241, -717260, -3665755, 16106, -2364916, -1700270, -1176821, -3179887,
--1501628, 3299072, -1132798, 418222, -916976, 3582540, -128849, 1502165, -2420214, -5773510,
--1638530, -470299, 2447595, 766652, 3467649, -469225, -1030255, 2655901, -3527242, 4278861,
--75162, 13392782, -11476153, 1711008, 4892505, 6077379, -19942606, 13291313, 3738232, -14168560,
--9048959, 7782481, 17833242, -6235219, -3202435, -12263205, 25516938, 9931575, 1619203, 4277788,
--13349295, -8632884, -530428, 1144072, 13250511, 2899103, 10222559, 11488501, -468688, 742493,
-8010651, -2071785, -8480950, -8108362, -2040646, 11373073, -6097780, 14379014, -6626061, 21100638,
-9399536, 17024176, -4574140, 2779381, 13666586, -10587631, 6385006, 6183679, 5811628, -6051609,
-7289097, 1786706, 2341831, 6227703, 12993887, 10931766, -11041824, -2561948, 5721970, -10767483,
--6834904, -2825015, -22069152, 5936719, -10899553, -6822556, 2149631, -2714956, 7579544, 14103062,
-9041980, 5714454, -7588134, -1775969, -448287, -14926085, 2745021, 1289027, 18487686, 3994320,
-4166118, -3987340, 14283987, -112743, -401043, 57445, -4638028, -2110440, 603443, -840203,
--5029944, 474594, -1292785, 919123, -6002754, -6504728, -2139431, 5197984, -863825, 2026151,
-1963874, 1607392, -431107, -1376537, -1803349, -3608846, -6029061, 2068027, 308164, -1476932,
--7125351, 5239860, 3563212, 2024003, -600222, 437550, -2436857, 1778653, -1294396, -2351495,
-818728, 3025805, 1821603, -1893007, -477815, -777926, 2218888, -15928960, -23499376, 12692702,
--9574019, 10402411, 3399467, 5025649, 6163278, -15799574, -28711856, 2520072, 4148939, 16152298,
--15950435, -17512192, 15091978, -6055367, 6866579, -3328063, 3597035, 2361695, 3984119, -7998303,
-3853660, -1184337, -2486249, 9933722, 3733937, -1474248, -12939663, -1810329, -357556, -2430415,
--602906, -7056095, -17161616, -7684234, 12628814, -5422396, 6238440, -9792525, 7237557, 3661997,
--105227, -4962298, -21281562, 11718281, 11461657, 14638322, -10251550, -4422743, 20014010, 17593260,
-8193724, 3726958, 11329050, 4082903, 10185515, -5520644, 8854075, -16923782, -1028645, 4621922,
--4342212, 19968376, 827855, 10879689, -6489696, -10862509, 23222888, -479426, 9251360, -3158412,
-382789, -27349278, -2237678, 5699959, -10458782, 12739947, 9799505, 2295660, -5513128, -20868172,
--376883, -4331475, 5242545, 6194954, 1124208, -2644626, 4957466, 97174, 2474975, -1441498,
--6201396, -2423435, -5653251, 9914395, 3165928, -339302, -122943, 1118302, 9368934, -1748052,
--2131378, 1285269, -633508, -35433, 4260071, 2113661, 3842922, -2842195, -246961, -4459787,
-942208, -103616, 4029216, 3739306, -4228932, 6822019, 7239704, -5749888, 555125, -11770358,
--15421617, -4474282, -3608846, -26411364, -24774982, -6487548, 125091, 18656264, 15177341, 15021111,
--5802501, -2408940, -3753802, 16037945, 6893960, -6722161, -1185411, -5350993, 11601244, 9006010,
--6688338, -9368934, -8598525, -17568026, 7344931, 495532, 503585, 3841312, -2622078, 6670084,
-24719148, -14061723, 7457137, 1480690, -9519258, -5448703, -11303817, 4294431, -5020280, -5675800,
-12803298, 1578401, -4261682, 12927852, -1750199, -5697811, 4504347, 9434433, -5181878, 10138807,
-18205292, 17558364, -11988327, -158914, 4393215, 9898289, -15183246, -3157338, -4186519, 18938122,
-8076686, -2032593, -11503533, -12767864, -11349451, 17105780, 14168560, -27074936, -22586160, -17127256,
--12058658, 4096862, -10874320, 6621229, 1817308, 2698313, -21776022, -6972880, 19712290, 15205795,
--6585796, -13970455, 13622563, 7144141, -1622424, 239444, -1720671, -3301756, 7750806, -6924024,
-1709934, 1203128, -271120, -4998268, -9131637, 1782948, 7454990, -713501, 837519, -3180423,
-7082938, 7747048, 781684, -1007170, 2627983, -258772, 3148211, 3389266, 4891968, -6515466,
--603980, 2414309, 25770, -4034048, 1116155, 8216810, 7655243, -2882997, 5874442, -8923868,
-2274185, -2862596, -2449742, -3557844, -5556077, 21782464, 17156784, 10626823, 1605244, -14322105,
--7465727, -2260764, 5814849, 9010305, -12679280, 3227668, 731755, -10842645, -5156645, 8631811,
--6464463, 6847789, 2918967, 8063264, -10124849, -103616, -22543210, 3307125, -28498718, 11636677,
-11508365, -11114838, 13000866, 15502684, 400506, 4363687, -18396956, 10746545, 1020055, -7684234,
-9881646, -2420214, 81604, -251792, 1156957, 19087908, -2226404, -108448, 23449984, -316217,
--10924249, -31144418, -25611426, 28308130, 17609366, 6912750, 7075422, -11961484, -24010478, -11843909,
-3717831, -9279277, 18644454, -1088237, 2412161, 20110110, -4221953, -6360310, -4618701, -12809740,
--21686364, -17245904, 48760228, -23808614, -10820633, 13923210, -24817394, -17904644, 17633526, 24753508,
-8100845, -4611185, 29148870, 14029511, -23601920, -8251169, -13218836, -12903155, 26491358, 1829119,
--17791366, -12327630, -13867913, 3783329, -2930778, 8007967, -286689, -4184909, -6552510, 498216,
-7266548, -4059818, 3309272, -3958886, 3573413, 3231426, 10152766, -4095251, -1586990, 8684424,
-606664, 4386236, 4482872, 6165426, 1080721, -3779034, -2158758, -1052267, -1570347, 3733400,
--1292248, -4225174, 8157754, 8420283, -4813048, 2059974, -5466957, 1823751, 1899449, 5146445,
--1443646, -645856, -2757906, 2590939, 6003828, -20007032, -14753750, -10281078, -18305150, -1606318,
-17434882, -1212791, 3623879, 8606578, 5728413, -14725832, -7104413, -12161200, -6489159, 15705622,
--4736275, -1660542, -2099702, 9541807, 9515500, 28307056, 4549981, 20849918, -1168231, 7067906,
--11283416, -8485782, 7502234, -14370424, -15982647, 573378, 5097590, -8179765, 6628745, -9584756,
-2986613, -25296820, 14194867, 7964480, 11618423, 1488743, -10258529, -21187610, -7527467, -1846836,
-17552994, -13289166, -7847442, 4937065, 40082784, -11020349, 40746892, -24922622, 9904731, -9161165,
-17905718, -7038378, 30925376, -29000692, 44269300, -4138201, 9139690, 19185082, -32753420, 29286308,
--34988416, 23686744, -57039312, 30988726, -29301878, 26045756, -38240780, 33697240, 1174674, 21857088,
-9482751, -17809618, 15566572, -12741557, 38717520, -17578228, 6405407, -23039278, 6287296, -1506997,
-4275640, -8216273, 10771778, -10562398, 7640747, -3719442, 2484639, 3291556, 3449933, 4515621,
--2601140, -6064494, -4918275, -5810554, -13393319, 7785702, 2014877, -9194451, -4265440, -2759517,
-6001680, -10240813, 9788230, -7838852, 1969243, -4192962, 4771172, 1609539, -73014, 14848776,
--13120051, 8042863, -12677133, 19139984, -3623342, 18697604, -7347079, 5847598, 8455180, 2835752,
-2922725, -10201, 8956617, -13347685, 14645302, -10181757, 9639517, -17569100, -15916612, 18538690,
-31975494, -26477936, 40533216, -2346663, 2684, -1552094, 7046431, -12053826, -8850317, -18061948,
--4028679, 582505, 52613, -92342, 15943455, 2728378, 17478906, 17095044, -10858214, 6289980,
-36441724, 11898670, 7820062, 5460514, -31575526, 1605244, -5101348, -3965866, -28954522, -6136435,
-16675211, 4694936, 5561446, 8364986, 21123186, 5493263, -6483790, -2175401, -1791001, 7898982,
--14330158, -8852464, 21814676, 13502303, 10174778, 16820702, 12470974, -7350300, -3643743, -25143812,
--11002632, 10197863, 8096550, 18946712, -13636521, -6833830, -4759361, 13919452, 8200167, 12491912,
-5207111, -9940702, -9161165, 31337156, -9552544, -30508764, 7089381, 22016002, 15154255, -434865,
--2590939, 2688113, 5098126, 3080565, 28066000, -33782604, -28766080, 3310883, 11432666, -14565308,
--7441568, 2412698, -11375221, 5369783, -5528697, -1487669, 3073049, -2240899, -7617662, 233002,
-6447283, -4161287, 133681, -11229192, -1881196, -9889699, 7304129, -3189013, 6707665, -4070019,
-4224637, 1651952, 5680094, 8674760, -8782134, -4057670, -2556043, 6817187, -4207458, -8101382,
--14593762, -139586, -5767604, -2287607, 2341294, 1372779, 530428, 2783676, 4930086, -1051193,
-14944876, 1721745, -1060320, -11585137, 2120103, -2229625, -506269, -12412992, -64105608, 17726940,
--7802882, -4062502, 15737834, -10860899, 16887274, -2265595, -27775016, -5060009, 2710661, 9760313,
-12417824, 2893734, -19680078, 19492710, -7634841, -1767916, -12090870, -5437429, 10459319, -2084670,
-9331353, 15717433, -3627637, -20288352, 4512937, 22272090, -20723754, 7631083, 17297980, -3141769,
--13703630, -25588342, -17255568, 18054432, 46277200, -14244259, -18444738, 52128556, -3394098, -7504382,
-37528352, 21844204, 18653580, 15064598, 6195491, -11029476, 19072876, 17752710, 12245489, 5662915,
--34482144, 21545704, 19084688, -36420248, -21047488, -13086765, -10184978, -10035191, 39758512, 19840602,
--22707492, 21239688, -8395587, -21251498, 9271224, 10807748, -9371619, -9009768, -33319820, 3744675,
-5710696, 24379844, 11698417, 3013993, 20405390, -16207059, 42193760, -44841068, -52284784, 36916316,
--22556094, -1407676, 25914758, -16327855, -11215770, -3238942, -3067681, 3209951, 15905338, 7791071,
--12995497, -810138, 6202470, -1569274, 8842801, -364535, 4894652, 937914, -6892886, 3689377,
-14112189, 9692667, -603980, 1867774, 9439264, -1537061, -1112397, 2369211, 21845278, 11184095,
--3499862, 4749697, -19359566, -874026, 5115843, -8946417, -12002823, 11300059, -5188321, -365072,
-11649025, -10142565, 4480725, -1760937, -2895882, 14420353, -8177081, -17141752, -69851200, 21368000,
-39265128, -24485072, -5171141, -19061064, 40400072, 27138288, 17003776, -3321620, -14254996, 2816425,
-16225850, 7505992, -7140920, -1642825, 22230214, -1563905, -8324721, -30012694, -14283987, 25142738,
-14571750, -16016470, 12650826, -11625403, -3757023, 7473243, 7000797, -7043747, 4482872, -26327612,
-7402376, 35355632, -4613332, -7012071, -34953516, -21048024, 16792786, -27590334, -15044197, 6181532,
-6878390, -8609262, 22723062, 21443698, -22309670, 8176544, 12256226, 35617628, 32615982, -5289789,
-10592463, -988379, 37305548, 16147466, 15060303, 35340064, -15949898, -23286776, -11984569, -29778618,
-24892020, 11673721, 12099997, 6369437, 42322072, -28226526, -6680822, 17996450, -10143102, 19984482,
--1093069, 2222646, 9240085, -24669756, -37329172, 4553202, 7043210, 40787692, 31016644, 614180,
--30314952, -4913980, -33100240, -333397, -1166084, -9406515, -8572755, 4329864, -2974265, -2632815,
--8487929, -5589900, -7553774, -4585415, 1016834, -8990977, -8192113, -1503775, 8106214, 4041027,
--10847477, 9579388, -5559299, 17918066, -5789616, -16251083, -6025302, 7833484, -5117454, -12374875,
-13809394, -3180960, -12846784, -19867982, 2915209, -3351148, 2188823, 4161287, -7691750, -6660958,
--17360258, -4023848, -4680441, 1010928, 3064996, 6142877, 5380521, -13336947, 16343424, 27683212,
-24183350, 24907590, 32028644, -18237504, 25256018, -48977124, -21324512, 18702436, 4546223, 35976256,
-16503412, 30696668, -13174275, 4161287, -26414048, 18129056, 29879014, 27166206, 2862059, 19284404,
--47017544, -30601106, 29408178, 8628589, -29252486, -15081241, 3733937, 43348032, 13494250, -17501992,
--22070226, 4499515, -6343130, 26694832, 28860032, -2746632, -4528506, 5793911, -8009577, 34492884,
-10027138, -8075613, 7069516, -16291885, -9581535, -77009840, -26069378, 13822279, -11924977, -11460046,
--243203, -13831405, -13793287, 35409320, 23775328, -17722646, 32356136, 66867272, 13865228, 47648904,
-6707665, 9740449, 35032976, 23125714, -18670222, -21254182, -37401112, -23260470, -2337536, -36958732,
-13852880, -4392141, -35721244, -25646324, -25522306, -32169306, -19433116, -12891881, -17013976, 5131412,
-30718142, 37405408, 19821810, -3827890, -27103392, -3419868, 1203665, 2373506, -13127568, -2322504,
--8817568, 7345468, 10667625, 1212255, 7854422, -202937, -5140002, 8971113, -9483288, 1256815,
-8650601, 18329846, 2675765, -136365, 12502113, 5253819, 33258616, -8265128, -26756572, -1363652,
-18346490, 3263102, -7152195, -8188355, -21713744, -20688320, -11546483, -8228621, -3626026, -12419435,
--17765596, -19087908, -10272488, -1538672, 2831994, 25296820, 18508088, -6786049, 29644938, 52326660,
-36423472, 25478820, 16143708, 9997073, -12641162, -8347269, -12603582, -11652246, -454730, 30668214,
--3143379, 26079578, -16570521, 7086159, -57247084, 16365973, -8539469, 29709362, -7157563, -34163244,
-34726420, -12790413, 5475547, 19851338, 14891188, 31813360, -4636954, 5012227, -5827734, 36245228,
--7468412, 7046431, 25294136, -28723668, 24944634, -7030862, 15335181, 24223616, -6269042, 5610301,
-4214437, 2704756, -7546795, 10929081, 10580115, -3991098, -13907641, -2357937, -16244640, -5133023,
--2924873, 13711683, -6701223, -25924960, -17022566, 27828166, 28106266, -26103200, -21849036, 33274722,
-39064340, -14756971, -3612604, 28225988, 1371705, 14643691, 20604568, -46760920, -13652627, -2940979,
-45802068, 4430259, -2987150, -44548476, 9148280, 17850420, 11791833, 1844152, 12314745, 4883915,
-6482180, 57365732, -1491427, 3244311, 33894808, -19903952, 22612466, 4423280, 17130478, 11237245,
--25642028, -8309151, 31096100, 20644298, 12085501, -7077033, 11054709, 5614596, 272194, 4327717,
-8137353, -3517578, 13724568, -8609262, -2080375, 14093935, 8494372, 3036542, -28768764, 2837363,
-14666776, -10694469, 5427228, -25597468, -16052977, 18351322, 9134322, 15126875, 13331578, -10070625,
--27949500, -7671886, 10033580, 24849608, 15327665, -3455838, -5076652, -8442832, 20642686, -178241,
--3692598, -8076149, 11134166, 4722317, -4016331, -20374788, -12597676, 13196824, 13409425, 9430138,
--13715978, -19694572, 10409390, 26356604, 12678207, 1924682, -12663711, -3056943, 6609418, -233002,
-1020592, 1533303, -2685428, -6043019, 33007898, -55984360, -3893925, -47370804, -43910672, 10998874,
-9220758, 8008504, 1068910, 41718628, 23753854, 53720376, 58784144, -6492917, -28964722, 6124624,
--7894687, -5392869, 12703440, 5680094, -4759898, -27089970, -29659970, 32080722, 14780593, -3657702,
-4864051, 5214091, 2891050, 5909875, -3093450, -7681549, -43845172, 964757, 25052544, -7360500,
--33822868, -11060078, 27615566, -51386064, -17772038, 32517734, 19568408, 38833484, -1229971, 2857227,
--35903780, -36107792, -45645300, 38366944, 54154704, -71448928, -35755604, -3696356, 36169532, -28311888,
--4764730, 65614216, 26520886, 16689169, 43242268, 31769336, 47480864, -17139066, 47202764, -7144678,
--37321656, -54567024, -12985834, 21007222, -43465068, -8395587, 9133785, -9052180, -15432354, 9322763,
-8165270, -29679298, 21986474, 10950556, 32035624, -7660611, -31799400, 39497592, 7748121, -35803384,
--19327, -8242042, 14741402, -15782394, -16545288, -8250632, -1906429, -394600, -12608950, -14848776,
-11387569, -15493558, -380105, -15306190, 8240969, 14817100, 2057826, 22086332, 14801531, -21946210,
--8492761, 165356, -20148766, 3490198, -3634616, 8065412, -5513128, 7134478, 18928994, 229244,
-3428995, -13289703, 20374788, 13327820, -14900852, -4103305, 14443975, 14047764, -2336999, -21055004,
--3056943, -41513008, 31920734, -2742337, 9736691, 12335146, 11941083, 359704, -14016089, 22631256,
-5645735, 21843666, -4744865, -46437724, -4253628, 13365938, -15296526, -17021492, -10440529, -15691663,
-18865644, -4890357, -16535624, -970126, 17548162, -23671712, 16520055, -8233989, 8772471, -23318988,
--5839545, 9408126, -2033667, -2177549, 2841658, 13042742, -2347737, -2143189, -16304770, 8085813,
--4497368, 2594160, 5005785, 1690607, 12036109, -17679696, -13516799, 18478560, 15923591, -22193706,
-10550050, -17938468, 20645908, -17331804, 7772280, 5322002, -14687714, 32478006, 3133716, -36166308,
-16637630, 4363150, -27986006, 15675557, -10289668, 16696685, -24266028, 12429098, -25702694, 11777874,
-18249316, -16552267, 9466108, -17586280, 593242, 587337, 1659468, -11557757, 206158, 8794482,
--511101, -15874736, 11957189, -9947681, -21378736, 9200357, -9501005, 4650913, 9930501, -7560216,
--4584341, 1788317, -1418413, 6457484, -3404835, -2357937, 5746666, 7325604, 2445984, -7366406,
--4413079, 7074885, 4219806, -16670379, 15205258, -2183454, -5710696, 2123861, -1209033, 3600256,
-8149164, -2015413, 15447924, -4563940, -6740415, -7536057, -3041911, 1488743, -7327751, 1949915,
--2499134, -2978023, 1851131, 2501819, -3056406, -69256, -874563, -3232500, 3147137, 2126546,
--3587372, 9670119, 20732344, -9463960, -110973368, -200787040, -66302484, -155467616, -153792576, 83845280,
-17956184, 116351736, 262075680, 236206560, 193795904, 236546928, 145019040, 32918776, 46062988, -32902134,
--174462112, -172430592, -128863512, -167526272, -114657912, -23223426, -77175192, -106736376, -45950780, -12767864,
--55155432, -25900264, -431107, -27255862, -49018460, 11100343, 43574052, -13881871, 60214904, 89604296,
-2846490, 17825188, 120952720, 60271812, 1391033, 113373176, 92836792, -20972862, 44311176, 105891344,
--1346472, 9254044, 149197504, 80427024, 33837364, 180249584, 198587472, 97966056, 188301568, 233979616,
-61855584, 31953482, 95691872, -37376952, -112261320, -65275448, -146273168, -260020544, -259424080, -294641184,
--392551424, -395449440, -379395936, -388260736, -347292128, -297739488, -238337936, -156064624, -79091824, 38930120,
-172355424, 227028752, 276987808, 374867968, 329790144, 294760928, 329285472, 243121456, 113817704, 133605696,
-150991728, 55975236, 73049880, 151125936, 74445208, 14232985, 65090768, 58520540, -32891396, 121333,
-40793064, -59744604, -76190576, 17442936, -15067282, -24873766, 84329536, 72316512, 7628399, 65733936,
-95432024, 16763257, -7106561, 5338108, -97590248, -176729312, -184493536, -235586480, -296375840, -281000928,
--251261488, -229061888, -204137648, -150024288, -142177376, -155504656, -103988136, -34077880, 9470403, 38356204,
-102005472, 122057064, 138254464, 247564064, 288730240, 266666464, 246146720, 195955200, 124162672, 106183936,
-90483688, 55253144, 39558796, 36326832, 14534169, -3498788, -4943508, -10708964, -21847424, -27338004,
--22399328, -31034896, -42196980, -40799504, -39538932, -44727252, -42505680, -32320166, -25908316, -19180250,
--15596100, -14795625, 0, 0, 0, 0, 0, 0, },
+666257, 3242164, -281320, 294205, -4798016, -2411087, 713501, 6369974, -4101157, 1333587,
+-6607271, 6790880, 452045, 2491618, -775242, 1080184, -1268626, -2324651, -5742372, 2439005,
+-5757404, -2687039, -3244848, 3278134, 2608119, 1260036, 2718178, 5120675, 343061, -4633196,
+3062312, 507343, -208306, 2511482, -911607, -1673964, -6774237, 1111323, -1932198, 1495186,
+2863133, -3670587, -1452773, 3364033, 1066763, 410169, -3441880, 8726300, 5266704, 866510,
+4231617, 3478924, 3378529, -7950522, 514859, -758599, -2090575, 1968706, 1340567, -1262184,
+-1467805, -411780, -2362769, 2367064, -878321, 4651987, -149250, -1167157, -2177012, -4037806,
+-718333, 3140695, -111669, 732829, 3699578, 1022202, 4275640, -66035, 670015, -419296,
+4595615, 4076461, 4124779, 911607, 22012, 1843078, -64425, 583579, 113817, 227096,
+-314069, -1248762, -1048509, -214748, -1204738, 606127, 652298, -504659, 1368484, -507343,
+-360777, -253403, 579284, 175557, 1227824, 126165, 46708, 119722, 1584306, 787590,
+-88047, -394063, 102542, -194884, 410706, 1633161, 378494, 2076080, 7222525, -3497177,
+2413772, -1988570, -3126736, -1280437, -2164664, 3947075, -3255048, -6040872, -1541893, 1596117,
+-5036386, -3040300, 5691369, 9834938, -1655710, 3762391, -3369939, -3543885, -156229, 1042066,
+-431644, -95563, 3649112, -6227166, 2034741, -453119, -1305670, -5247377, 457951, 129923,
+2960843, 893890, -4111894, 5431523, -4316442, 5068599, -569083, 926639, 2057289, -586263,
+-2532957, 3966402, 971200, 5296769, 803696, -4651987, 8452496, 6731825, -2345589, -678605,
+-1631014, -5864778, -3180423, -956167, -1015223, 2385318, -3238405, 273267, 2313377, 24159,
+-93952, -360240, -561030, -3193308, 5106179, 181462, -117575, -1594507, -576599, -4671851,
+-4178466, 1400159, 3404299, -408559, -893890, 18790, -44560, -2379412, 4570919, 651761,
+1505386, -1165010, 1239098, 812286, -201863, -54224, -213675, 93416, 1072668, -571231,
+674310, 767725, -156229, -150861, 553514, 1260573, 1078574, -746251, 287763, 415001,
+-622233, -301721, 1701881, -201327, -103079, -1306744, -1259499, -2028835, -788127, -7576323,
+9218074, -2070711, -1138166, 6571300, -2637647, 3364033, 14666240, -1817308, 389768, -5681705,
+-4595615, -7065221, 4016331, -2949569, 1937030, 3811247, -4466229, -3826279, -2815888, 262530,
+1401233, -5506685, -2186675, 2328409, 1995549, -2217277, -936303, 3276523, -3487514, 481573,
+-1757179, -676457, -2442763, 1987496, -2245194, 851477, 1905355, -955630, 6138045, 205622,
+-887448, -4627828, 497142, 6560026, 865973, 2178085, -6101538, -8698383, -3189013, -7490960,
+-6615860, -227633, -2882460, -312996, -8015483, 6759742, -7424388, 1029182, 5007395, -4620311,
+-7755101, -5536750, -1666447, 5064304, 4495220, 6796249, -4079682, -3594888, -2882997, -2483028,
+4909148, 1222455, -2095944, -1150514, 2312840, 2632278, 769873, 1185411, 1673964, -424665,
+-2895345, -513785, -1931662, 664646, 202937, 577136, 525060, 102005, 1154809, 112743,
+1353989, 91805, -1092532, 1379221, -1689533, -1118839, 293132, -477278, 1388885, -911070,
+-691490, -327491, 151398, -602369, -1027571, 872952, -349503, 634045, -872952, -841277,
+-1026497, -1185411, -757525, -1081795, 8020852, 832687, -3226057, 453656, -2670396, -595927,
+5613523, 9414031, -3219615, -3296924, -8543764, 1079111, 2145336, 4858682, -3221762, 5238787,
+831076, 8069170, -6476811, 1034013, -12230993, -1351841, 1462973, -2995203, -2749853, -1086627,
+4510253, -3699041, -6427956, 1817308, -9431748, -2064806, -4529043, 2072322, -1001264, 3182571,
+423591, -7202124, -7764764, 202937, 4143033, 7681012, -1522029, -3140695, 6448357, -7115687,
+-3857418, 3416647, 3070365, 5078262, -4850629, 168041, 1978369, -3078418, -1022739, 2992519,
+-4399657, 5731634, -2487323, -1083406, -6118181, -5112085, 2476586, -28991, 131533, -883153,
+-3746822, 3542274, -2348273, 4408247, -57982, -5872831, -6123550, 2229088, -3069291, 1078574,
+-8722542, -8369281, -1309965, 7840463, 79457, -1640678, 416075, 1112933, 865436, -381178,
+1282048, -4119411, 793495, 669478, 1272921, 1556389, 1782948, 900869, -2265595, 144418,
+2059974, 911607, 581431, -1168768, -1366873, 301721, 34360, -496069, 1942399, -63888,
+-92342, -1346472, 2417530, 1931662, -73014, 144418, -1123671, 656593, 788127, 301721,
+155693, 753230, -1006096, 4831302, -13042742, 3058554, -5651640, 4830765, 5515275, -6151467,
+-11433203, 1637456, -1505923, 7286949, -4337380, 10540387, -4403952, 6984154, -8581345, -3161096,
+3617436, 5200132, 1471563, -9127, -5256503, -665720, -4131222, -5164162, 2900714, -4403415,
+1755031, 1045288, 2157684, -2491081, 4913980, -890132, 4232154, -921807, -8041253, -1316408,
+-2558190, 843961, 8070781, 536871, -672162, -389231, -3242700, 2815351, -3055869, 4281546,
+4619774, 1701344, 1789391, 8142185, -1988033, -1433982, -6468758, 4654134, 4097399, 891206,
+1070521, 886911, 360240, 2408403, 4962835, 3337190, 1905892, 1836099, -1237488, 6481106,
+2219961, -1292248, -4931160, 2552821, -1449015, 9448391, 5364414, 1227824, -4316979, -1579474,
+7194070, -2745021, 963683, 4198868, -2288144, -2845953, -5668820, 765578, 2107755, -407485,
+2765422, -2185602, -809064, -1693828, 2036351, -128849, -604517, -2686502, 685047, 745177,
+1670205, 1979443, -622770, 365609, 2168422, -119185, 2200097, -105764, 688805, 3235721,
+695248, 3324842, -213138, -670552, -169114, -240518, 147103, 278636, -2436320, 964220,
+2019708, 253403, 837519, -549756, -16821240, -9130027, 3398393, -3272228, 6788196, 6773164,
+10213432, 4235375, 4140349, 2531346, -12257837, -2731062, -1684164, 1115618, -1217086, 3833795,
+2724083, -4702453, -3756486, 3166465, 5985574, 7552700, 6508486, 8577050, -4684736, -4669703,
+-6215892, 6616934, -3811784, 5469641, -1375463, -269509, -5822902, -3477850, -3329674, 4969814,
+6111202, 1092532, 6108517, 8753680, -3471407, 2224256, 10257456, -5144297, 3329137, 3492882,
+383863, 7726646, 9881646, 7529615, 17139604, 3198677, -2436857, -3160022, -2942590, -171799,
+3012383, 5211943, -954020, -1665374, -1820529, -4580046, 1921998, 2496450, 4434017, -10687489,
+-1478006, 2720325, 7089381, 4964446, -9151502, -6757594, 1715303, 1723356, 7394860, -6509560,
+398358, -645319, 769873, -9268003, -2527052, -3183108, -2269890, -3800509, -1620813, 306553,
+3544422, 6979, 180926, 1403917, 1683627, -3530463, -582505, 279710, -8590, 1281511,
+-1248225, -2301566, -1597728, -1753420, 2496450, -2410551, -1197222, -2776696, 670552, -582505,
+1762547, -2539936, 1040456, -848793, 1020055, 973884, 145492, 2232846, -2141041, 1109712,
+1179505, 387621, 2540473, 4088809, 8159901, -1026497, 1688459, 6979859, 10236518, 5775658,
+-11240466, 63351, -11960947, -8476118, -5121749, -970126, -7307887, 8784282, 3267933, 5210332,
+-14884746, -1043677, 9783936, 4987531, -4347044, -6243272, -3799436, 3830574, -11379516, -639413,
+-7301982, 11253351, -1448478, -3256659, 1227824, -374736, -1893544, 2007897, -2935073, 5239860,
+3740380, 7519414, -522912, 408022, 11600170, -3634616, 7776039, -1232656, -1326608, 20401632,
+2462090, -2160369, -4567161, -15737834, 1697049, -16130287, -2682744, 17033304, -4764193, -3283503,
+-11783780, -3443490, 457951, -6331319, 3454764, -595390, -8625368, 9227200, 3332358, 3018825,
+2572686, -6388764, 7071664, -10965588, 3218541, 4240744, 504659, -1434519, -4405026, -3473555,
+-4487167, -1432909, 3692598, 4715874, -1140851, -3821447, -2229625, 5254356, 2193655, 10038949,
+-129386, 775778, 4126390, -396211, -1797981, -1368484, -1217086, -1086090, -1603097, 1196685,
+-1836635, -53150, 2094333, 769336, 2135136, 2030983, 1668595, 199716, 3077881, 2206540,
+1359894, 948114, 972273, -3141232, -2625836, 2312303, 385473, -1930051, 406411, -2197413,
+701690, 2551211, 985695, -408559, 993211, 2190970, 551366, -1740536, 1008244, 6735046,
+-13292387, 5866389, -4629438, -6674379, -6358699, 5180805, 6593312, 3884261, 11364483, 8410083,
+1774358, 3487514, -8742406, 1887638, 4071629, 8836895, 1784559, -4097936, 3286187, 4179540,
+-7827041, 1253057, -8031052, 6435472, 5870147, 7533373, -7137162, 4515621, 8056822, -3503620,
+2146947, 10669236, -233539, -6445672, -5119601, 2456185, -1658931, -6551973, -2646237, 226023,
+1641214, 3713536, -4494684, 7479149, 4574677, -1584843, 8994198, -996432, 3466039, 11775190,
+-12316356, 22997402, -10448582, 3251290, 6992207, -2284923, -1188632, 3003256, 15595026, -740882,
+-2058363, -357019, -3593814, 7639673, 8539469, -2600066, 3703336, 3110630, 2843268, 5280126,
+6743099, 655519, 7284802, 1658394, -6094559, -9408126, 2361158, 1044751, 4451197, 1970853,
+14440217, -1340567, 8103530, 6572911, -4361540, -8070244, -872415, 1035624, 2208687, -2112050,
+3779571, 1846836, -3437585, -855772, -3278671, -1129040, 2181307, -972273, 3179350, -674847,
+1194538, 901943, -1352378, 1748052, 1961726, -2747169, 2001455, 1385127, 682900, 784905,
+-15569, 661425, 3518652, 1177358, -1133871, 727997, 1028108, 1806571, 2199023, -543313,
+-2291902, -580894, -1992328, -1451699, 2622615, 7561290, 9972377, 6111202, -10686952, 20352240,
+-6459094, 3816079, -15010374, 5896453, -13277891, 10197863, 1024887, -2906082, -7526930, 9634149,
+1263257, 6123013, 6355478, 3212636, -11181947, 5634997, -6779606, -1305670, 5003100, 5401995,
+1246614, -2146410, -11198590, 1483374, 10268730, 1074816, 6640557, 7374459, -11688217, 6347425,
+-5951751, -5938329, 8591545, 9454297, 4939213, 5281736, 1472100, 5057324, -12039330, -5454609,
+-3853123, 253940, 12790413, 6051072, 5061619, -1042603, 5618354, -385473, 14092325, 5104032,
+5340255, 2052994, -795643, -20969104, 7728257, 4824322, -1936493, -1589138, -15584289, 29528,
+-5958731, 3606162, 13566191, -2399813, -7766912, 15697569, -708670, 8807904, -5272073, -77309,
+-9867687, -1049046, 195421, -17236778, -5078799, -3092913, -7681549, -3713536, -1502702, 926639,
+8578123, 478352, -190052, -1813550, -4402342, -874026, 810675, -1792612, 629750, 38655,
+2318209, -4186519, -1554241, -717260, -3665755, 16106, -2364916, -1700270, -1176821, -3179887,
+-1501628, 3299072, -1132798, 418222, -916976, 3582540, -128849, 1502165, -2420214, -5773510,
+-1638530, -470299, 2447595, 766652, 3467649, -469225, -1030255, 2655901, -3527242, 4278861,
+-75162, 13392782, -11476153, 1711008, 4892505, 6077379, -19942606, 13291313, 3738232, -14168560,
+-9048959, 7782481, 17833242, -6235219, -3202435, -12263205, 25516938, 9931575, 1619203, 4277788,
+-13349295, -8632884, -530428, 1144072, 13250511, 2899103, 10222559, 11488501, -468688, 742493,
+8010651, -2071785, -8480950, -8108362, -2040646, 11373073, -6097780, 14379014, -6626061, 21100638,
+9399536, 17024176, -4574140, 2779381, 13666586, -10587631, 6385006, 6183679, 5811628, -6051609,
+7289097, 1786706, 2341831, 6227703, 12993887, 10931766, -11041824, -2561948, 5721970, -10767483,
+-6834904, -2825015, -22069152, 5936719, -10899553, -6822556, 2149631, -2714956, 7579544, 14103062,
+9041980, 5714454, -7588134, -1775969, -448287, -14926085, 2745021, 1289027, 18487686, 3994320,
+4166118, -3987340, 14283987, -112743, -401043, 57445, -4638028, -2110440, 603443, -840203,
+-5029944, 474594, -1292785, 919123, -6002754, -6504728, -2139431, 5197984, -863825, 2026151,
+1963874, 1607392, -431107, -1376537, -1803349, -3608846, -6029061, 2068027, 308164, -1476932,
+-7125351, 5239860, 3563212, 2024003, -600222, 437550, -2436857, 1778653, -1294396, -2351495,
+818728, 3025805, 1821603, -1893007, -477815, -777926, 2218888, -15928960, -23499376, 12692702,
+-9574019, 10402411, 3399467, 5025649, 6163278, -15799574, -28711856, 2520072, 4148939, 16152298,
+-15950435, -17512192, 15091978, -6055367, 6866579, -3328063, 3597035, 2361695, 3984119, -7998303,
+3853660, -1184337, -2486249, 9933722, 3733937, -1474248, -12939663, -1810329, -357556, -2430415,
+-602906, -7056095, -17161616, -7684234, 12628814, -5422396, 6238440, -9792525, 7237557, 3661997,
+-105227, -4962298, -21281562, 11718281, 11461657, 14638322, -10251550, -4422743, 20014010, 17593260,
+8193724, 3726958, 11329050, 4082903, 10185515, -5520644, 8854075, -16923782, -1028645, 4621922,
+-4342212, 19968376, 827855, 10879689, -6489696, -10862509, 23222888, -479426, 9251360, -3158412,
+382789, -27349278, -2237678, 5699959, -10458782, 12739947, 9799505, 2295660, -5513128, -20868172,
+-376883, -4331475, 5242545, 6194954, 1124208, -2644626, 4957466, 97174, 2474975, -1441498,
+-6201396, -2423435, -5653251, 9914395, 3165928, -339302, -122943, 1118302, 9368934, -1748052,
+-2131378, 1285269, -633508, -35433, 4260071, 2113661, 3842922, -2842195, -246961, -4459787,
+942208, -103616, 4029216, 3739306, -4228932, 6822019, 7239704, -5749888, 555125, -11770358,
+-15421617, -4474282, -3608846, -26411364, -24774982, -6487548, 125091, 18656264, 15177341, 15021111,
+-5802501, -2408940, -3753802, 16037945, 6893960, -6722161, -1185411, -5350993, 11601244, 9006010,
+-6688338, -9368934, -8598525, -17568026, 7344931, 495532, 503585, 3841312, -2622078, 6670084,
+24719148, -14061723, 7457137, 1480690, -9519258, -5448703, -11303817, 4294431, -5020280, -5675800,
+12803298, 1578401, -4261682, 12927852, -1750199, -5697811, 4504347, 9434433, -5181878, 10138807,
+18205292, 17558364, -11988327, -158914, 4393215, 9898289, -15183246, -3157338, -4186519, 18938122,
+8076686, -2032593, -11503533, -12767864, -11349451, 17105780, 14168560, -27074936, -22586160, -17127256,
+-12058658, 4096862, -10874320, 6621229, 1817308, 2698313, -21776022, -6972880, 19712290, 15205795,
+-6585796, -13970455, 13622563, 7144141, -1622424, 239444, -1720671, -3301756, 7750806, -6924024,
+1709934, 1203128, -271120, -4998268, -9131637, 1782948, 7454990, -713501, 837519, -3180423,
+7082938, 7747048, 781684, -1007170, 2627983, -258772, 3148211, 3389266, 4891968, -6515466,
+-603980, 2414309, 25770, -4034048, 1116155, 8216810, 7655243, -2882997, 5874442, -8923868,
+2274185, -2862596, -2449742, -3557844, -5556077, 21782464, 17156784, 10626823, 1605244, -14322105,
+-7465727, -2260764, 5814849, 9010305, -12679280, 3227668, 731755, -10842645, -5156645, 8631811,
+-6464463, 6847789, 2918967, 8063264, -10124849, -103616, -22543210, 3307125, -28498718, 11636677,
+11508365, -11114838, 13000866, 15502684, 400506, 4363687, -18396956, 10746545, 1020055, -7684234,
+9881646, -2420214, 81604, -251792, 1156957, 19087908, -2226404, -108448, 23449984, -316217,
+-10924249, -31144418, -25611426, 28308130, 17609366, 6912750, 7075422, -11961484, -24010478, -11843909,
+3717831, -9279277, 18644454, -1088237, 2412161, 20110110, -4221953, -6360310, -4618701, -12809740,
+-21686364, -17245904, 48760228, -23808614, -10820633, 13923210, -24817394, -17904644, 17633526, 24753508,
+8100845, -4611185, 29148870, 14029511, -23601920, -8251169, -13218836, -12903155, 26491358, 1829119,
+-17791366, -12327630, -13867913, 3783329, -2930778, 8007967, -286689, -4184909, -6552510, 498216,
+7266548, -4059818, 3309272, -3958886, 3573413, 3231426, 10152766, -4095251, -1586990, 8684424,
+606664, 4386236, 4482872, 6165426, 1080721, -3779034, -2158758, -1052267, -1570347, 3733400,
+-1292248, -4225174, 8157754, 8420283, -4813048, 2059974, -5466957, 1823751, 1899449, 5146445,
+-1443646, -645856, -2757906, 2590939, 6003828, -20007032, -14753750, -10281078, -18305150, -1606318,
+17434882, -1212791, 3623879, 8606578, 5728413, -14725832, -7104413, -12161200, -6489159, 15705622,
+-4736275, -1660542, -2099702, 9541807, 9515500, 28307056, 4549981, 20849918, -1168231, 7067906,
+-11283416, -8485782, 7502234, -14370424, -15982647, 573378, 5097590, -8179765, 6628745, -9584756,
+2986613, -25296820, 14194867, 7964480, 11618423, 1488743, -10258529, -21187610, -7527467, -1846836,
+17552994, -13289166, -7847442, 4937065, 40082784, -11020349, 40746892, -24922622, 9904731, -9161165,
+17905718, -7038378, 30925376, -29000692, 44269300, -4138201, 9139690, 19185082, -32753420, 29286308,
+-34988416, 23686744, -57039312, 30988726, -29301878, 26045756, -38240780, 33697240, 1174674, 21857088,
+9482751, -17809618, 15566572, -12741557, 38717520, -17578228, 6405407, -23039278, 6287296, -1506997,
+4275640, -8216273, 10771778, -10562398, 7640747, -3719442, 2484639, 3291556, 3449933, 4515621,
+-2601140, -6064494, -4918275, -5810554, -13393319, 7785702, 2014877, -9194451, -4265440, -2759517,
+6001680, -10240813, 9788230, -7838852, 1969243, -4192962, 4771172, 1609539, -73014, 14848776,
+-13120051, 8042863, -12677133, 19139984, -3623342, 18697604, -7347079, 5847598, 8455180, 2835752,
+2922725, -10201, 8956617, -13347685, 14645302, -10181757, 9639517, -17569100, -15916612, 18538690,
+31975494, -26477936, 40533216, -2346663, 2684, -1552094, 7046431, -12053826, -8850317, -18061948,
+-4028679, 582505, 52613, -92342, 15943455, 2728378, 17478906, 17095044, -10858214, 6289980,
+36441724, 11898670, 7820062, 5460514, -31575526, 1605244, -5101348, -3965866, -28954522, -6136435,
+16675211, 4694936, 5561446, 8364986, 21123186, 5493263, -6483790, -2175401, -1791001, 7898982,
+-14330158, -8852464, 21814676, 13502303, 10174778, 16820702, 12470974, -7350300, -3643743, -25143812,
+-11002632, 10197863, 8096550, 18946712, -13636521, -6833830, -4759361, 13919452, 8200167, 12491912,
+5207111, -9940702, -9161165, 31337156, -9552544, -30508764, 7089381, 22016002, 15154255, -434865,
+-2590939, 2688113, 5098126, 3080565, 28066000, -33782604, -28766080, 3310883, 11432666, -14565308,
+-7441568, 2412698, -11375221, 5369783, -5528697, -1487669, 3073049, -2240899, -7617662, 233002,
+6447283, -4161287, 133681, -11229192, -1881196, -9889699, 7304129, -3189013, 6707665, -4070019,
+4224637, 1651952, 5680094, 8674760, -8782134, -4057670, -2556043, 6817187, -4207458, -8101382,
+-14593762, -139586, -5767604, -2287607, 2341294, 1372779, 530428, 2783676, 4930086, -1051193,
+14944876, 1721745, -1060320, -11585137, 2120103, -2229625, -506269, -12412992, -64105608, 17726940,
+-7802882, -4062502, 15737834, -10860899, 16887274, -2265595, -27775016, -5060009, 2710661, 9760313,
+12417824, 2893734, -19680078, 19492710, -7634841, -1767916, -12090870, -5437429, 10459319, -2084670,
+9331353, 15717433, -3627637, -20288352, 4512937, 22272090, -20723754, 7631083, 17297980, -3141769,
+-13703630, -25588342, -17255568, 18054432, 46277200, -14244259, -18444738, 52128556, -3394098, -7504382,
+37528352, 21844204, 18653580, 15064598, 6195491, -11029476, 19072876, 17752710, 12245489, 5662915,
+-34482144, 21545704, 19084688, -36420248, -21047488, -13086765, -10184978, -10035191, 39758512, 19840602,
+-22707492, 21239688, -8395587, -21251498, 9271224, 10807748, -9371619, -9009768, -33319820, 3744675,
+5710696, 24379844, 11698417, 3013993, 20405390, -16207059, 42193760, -44841068, -52284784, 36916316,
+-22556094, -1407676, 25914758, -16327855, -11215770, -3238942, -3067681, 3209951, 15905338, 7791071,
+-12995497, -810138, 6202470, -1569274, 8842801, -364535, 4894652, 937914, -6892886, 3689377,
+14112189, 9692667, -603980, 1867774, 9439264, -1537061, -1112397, 2369211, 21845278, 11184095,
+-3499862, 4749697, -19359566, -874026, 5115843, -8946417, -12002823, 11300059, -5188321, -365072,
+11649025, -10142565, 4480725, -1760937, -2895882, 14420353, -8177081, -17141752, -69851200, 21368000,
+39265128, -24485072, -5171141, -19061064, 40400072, 27138288, 17003776, -3321620, -14254996, 2816425,
+16225850, 7505992, -7140920, -1642825, 22230214, -1563905, -8324721, -30012694, -14283987, 25142738,
+14571750, -16016470, 12650826, -11625403, -3757023, 7473243, 7000797, -7043747, 4482872, -26327612,
+7402376, 35355632, -4613332, -7012071, -34953516, -21048024, 16792786, -27590334, -15044197, 6181532,
+6878390, -8609262, 22723062, 21443698, -22309670, 8176544, 12256226, 35617628, 32615982, -5289789,
+10592463, -988379, 37305548, 16147466, 15060303, 35340064, -15949898, -23286776, -11984569, -29778618,
+24892020, 11673721, 12099997, 6369437, 42322072, -28226526, -6680822, 17996450, -10143102, 19984482,
+-1093069, 2222646, 9240085, -24669756, -37329172, 4553202, 7043210, 40787692, 31016644, 614180,
+-30314952, -4913980, -33100240, -333397, -1166084, -9406515, -8572755, 4329864, -2974265, -2632815,
+-8487929, -5589900, -7553774, -4585415, 1016834, -8990977, -8192113, -1503775, 8106214, 4041027,
+-10847477, 9579388, -5559299, 17918066, -5789616, -16251083, -6025302, 7833484, -5117454, -12374875,
+13809394, -3180960, -12846784, -19867982, 2915209, -3351148, 2188823, 4161287, -7691750, -6660958,
+-17360258, -4023848, -4680441, 1010928, 3064996, 6142877, 5380521, -13336947, 16343424, 27683212,
+24183350, 24907590, 32028644, -18237504, 25256018, -48977124, -21324512, 18702436, 4546223, 35976256,
+16503412, 30696668, -13174275, 4161287, -26414048, 18129056, 29879014, 27166206, 2862059, 19284404,
+-47017544, -30601106, 29408178, 8628589, -29252486, -15081241, 3733937, 43348032, 13494250, -17501992,
+-22070226, 4499515, -6343130, 26694832, 28860032, -2746632, -4528506, 5793911, -8009577, 34492884,
+10027138, -8075613, 7069516, -16291885, -9581535, -77009840, -26069378, 13822279, -11924977, -11460046,
+-243203, -13831405, -13793287, 35409320, 23775328, -17722646, 32356136, 66867272, 13865228, 47648904,
+6707665, 9740449, 35032976, 23125714, -18670222, -21254182, -37401112, -23260470, -2337536, -36958732,
+13852880, -4392141, -35721244, -25646324, -25522306, -32169306, -19433116, -12891881, -17013976, 5131412,
+30718142, 37405408, 19821810, -3827890, -27103392, -3419868, 1203665, 2373506, -13127568, -2322504,
+-8817568, 7345468, 10667625, 1212255, 7854422, -202937, -5140002, 8971113, -9483288, 1256815,
+8650601, 18329846, 2675765, -136365, 12502113, 5253819, 33258616, -8265128, -26756572, -1363652,
+18346490, 3263102, -7152195, -8188355, -21713744, -20688320, -11546483, -8228621, -3626026, -12419435,
+-17765596, -19087908, -10272488, -1538672, 2831994, 25296820, 18508088, -6786049, 29644938, 52326660,
+36423472, 25478820, 16143708, 9997073, -12641162, -8347269, -12603582, -11652246, -454730, 30668214,
+-3143379, 26079578, -16570521, 7086159, -57247084, 16365973, -8539469, 29709362, -7157563, -34163244,
+34726420, -12790413, 5475547, 19851338, 14891188, 31813360, -4636954, 5012227, -5827734, 36245228,
+-7468412, 7046431, 25294136, -28723668, 24944634, -7030862, 15335181, 24223616, -6269042, 5610301,
+4214437, 2704756, -7546795, 10929081, 10580115, -3991098, -13907641, -2357937, -16244640, -5133023,
+-2924873, 13711683, -6701223, -25924960, -17022566, 27828166, 28106266, -26103200, -21849036, 33274722,
+39064340, -14756971, -3612604, 28225988, 1371705, 14643691, 20604568, -46760920, -13652627, -2940979,
+45802068, 4430259, -2987150, -44548476, 9148280, 17850420, 11791833, 1844152, 12314745, 4883915,
+6482180, 57365732, -1491427, 3244311, 33894808, -19903952, 22612466, 4423280, 17130478, 11237245,
+-25642028, -8309151, 31096100, 20644298, 12085501, -7077033, 11054709, 5614596, 272194, 4327717,
+8137353, -3517578, 13724568, -8609262, -2080375, 14093935, 8494372, 3036542, -28768764, 2837363,
+14666776, -10694469, 5427228, -25597468, -16052977, 18351322, 9134322, 15126875, 13331578, -10070625,
+-27949500, -7671886, 10033580, 24849608, 15327665, -3455838, -5076652, -8442832, 20642686, -178241,
+-3692598, -8076149, 11134166, 4722317, -4016331, -20374788, -12597676, 13196824, 13409425, 9430138,
+-13715978, -19694572, 10409390, 26356604, 12678207, 1924682, -12663711, -3056943, 6609418, -233002,
+1020592, 1533303, -2685428, -6043019, 33007898, -55984360, -3893925, -47370804, -43910672, 10998874,
+9220758, 8008504, 1068910, 41718628, 23753854, 53720376, 58784144, -6492917, -28964722, 6124624,
+-7894687, -5392869, 12703440, 5680094, -4759898, -27089970, -29659970, 32080722, 14780593, -3657702,
+4864051, 5214091, 2891050, 5909875, -3093450, -7681549, -43845172, 964757, 25052544, -7360500,
+-33822868, -11060078, 27615566, -51386064, -17772038, 32517734, 19568408, 38833484, -1229971, 2857227,
+-35903780, -36107792, -45645300, 38366944, 54154704, -71448928, -35755604, -3696356, 36169532, -28311888,
+-4764730, 65614216, 26520886, 16689169, 43242268, 31769336, 47480864, -17139066, 47202764, -7144678,
+-37321656, -54567024, -12985834, 21007222, -43465068, -8395587, 9133785, -9052180, -15432354, 9322763,
+8165270, -29679298, 21986474, 10950556, 32035624, -7660611, -31799400, 39497592, 7748121, -35803384,
+-19327, -8242042, 14741402, -15782394, -16545288, -8250632, -1906429, -394600, -12608950, -14848776,
+11387569, -15493558, -380105, -15306190, 8240969, 14817100, 2057826, 22086332, 14801531, -21946210,
+-8492761, 165356, -20148766, 3490198, -3634616, 8065412, -5513128, 7134478, 18928994, 229244,
+3428995, -13289703, 20374788, 13327820, -14900852, -4103305, 14443975, 14047764, -2336999, -21055004,
+-3056943, -41513008, 31920734, -2742337, 9736691, 12335146, 11941083, 359704, -14016089, 22631256,
+5645735, 21843666, -4744865, -46437724, -4253628, 13365938, -15296526, -17021492, -10440529, -15691663,
+18865644, -4890357, -16535624, -970126, 17548162, -23671712, 16520055, -8233989, 8772471, -23318988,
+-5839545, 9408126, -2033667, -2177549, 2841658, 13042742, -2347737, -2143189, -16304770, 8085813,
+-4497368, 2594160, 5005785, 1690607, 12036109, -17679696, -13516799, 18478560, 15923591, -22193706,
+10550050, -17938468, 20645908, -17331804, 7772280, 5322002, -14687714, 32478006, 3133716, -36166308,
+16637630, 4363150, -27986006, 15675557, -10289668, 16696685, -24266028, 12429098, -25702694, 11777874,
+18249316, -16552267, 9466108, -17586280, 593242, 587337, 1659468, -11557757, 206158, 8794482,
+-511101, -15874736, 11957189, -9947681, -21378736, 9200357, -9501005, 4650913, 9930501, -7560216,
+-4584341, 1788317, -1418413, 6457484, -3404835, -2357937, 5746666, 7325604, 2445984, -7366406,
+-4413079, 7074885, 4219806, -16670379, 15205258, -2183454, -5710696, 2123861, -1209033, 3600256,
+8149164, -2015413, 15447924, -4563940, -6740415, -7536057, -3041911, 1488743, -7327751, 1949915,
+-2499134, -2978023, 1851131, 2501819, -3056406, -69256, -874563, -3232500, 3147137, 2126546,
+-3587372, 9670119, 20732344, -9463960, -110973368, -200787040, -66302484, -155467616, -153792576, 83845280,
+17956184, 116351736, 262075680, 236206560, 193795904, 236546928, 145019040, 32918776, 46062988, -32902134,
+-174462112, -172430592, -128863512, -167526272, -114657912, -23223426, -77175192, -106736376, -45950780, -12767864,
+-55155432, -25900264, -431107, -27255862, -49018460, 11100343, 43574052, -13881871, 60214904, 89604296,
+2846490, 17825188, 120952720, 60271812, 1391033, 113373176, 92836792, -20972862, 44311176, 105891344,
+-1346472, 9254044, 149197504, 80427024, 33837364, 180249584, 198587472, 97966056, 188301568, 233979616,
+61855584, 31953482, 95691872, -37376952, -112261320, -65275448, -146273168, -260020544, -259424080, -294641184,
+-392551424, -395449440, -379395936, -388260736, -347292128, -297739488, -238337936, -156064624, -79091824, 38930120,
+172355424, 227028752, 276987808, 374867968, 329790144, 294760928, 329285472, 243121456, 113817704, 133605696,
+150991728, 55975236, 73049880, 151125936, 74445208, 14232985, 65090768, 58520540, -32891396, 121333,
+40793064, -59744604, -76190576, 17442936, -15067282, -24873766, 84329536, 72316512, 7628399, 65733936,
+95432024, 16763257, -7106561, 5338108, -97590248, -176729312, -184493536, -235586480, -296375840, -281000928,
+-251261488, -229061888, -204137648, -150024288, -142177376, -155504656, -103988136, -34077880, 9470403, 38356204,
+102005472, 122057064, 138254464, 247564064, 288730240, 266666464, 246146720, 195955200, 124162672, 106183936,
+90483688, 55253144, 39558796, 36326832, 14534169, -3498788, -4943508, -10708964, -21847424, -27338004,
+-22399328, -31034896, -42196980, -40799504, -39538932, -44727252, -42505680, -32320166, -25908316, -19180250,
+-15596100, -14795625, 0, 0, 0, 0, 0, 0, },
},
{
{
-8479339,
-937377, 5580773, 1907502, 3636764, -5305359, -2907156, 239444, -940061, 1421097, 4420058,
--10628970, -74625, 3493419, 2098629, 3220152, -3077344, -4296041, 4645544, -78920, 1294933,
-2895345, 3843996, 1417339, 802085, 3456912, -510564, -1107565, -2987687, 1609002, -840740,
--486942, -1551020, 1986422, 5056787, 20401, -1050656, 2378875, -3234647, -4840965, -2675228,
--981937, -3139084, 281857, -725850, 2031520, -1958505, 563714, -3927748, -379031, -3229816,
--155156, -1479079, -1276679, 1644436, -1864553, -189515, 2657511, -1397475, 3169686, 3842385,
-278636, 5193689, -2656974, -177167, 2482491, -898185, 1675037, 2360622, 1275068, -2731599,
-1074816, 1250372, 878321, 166430, -2284923, 3031173, -818191, 1448478, -499290, -627602,
-190589, -3153580, -260919, -2450279, -1142998, -107374, -427886, -83752, -244813, -1316944,
-1567126, 183610, 438624, 110059, 875100, -534187, 1105417, -81068, 470299, -180926,
--482110, 623844, 60130, -184684, -13959, 880468, 188442, -153545, 542777, 285615,
--113817, 14093398, -3992172, 1350230, -3084860, -259846, -1294933, 1615445, 1084479, 4826470,
-1474784, 836982, 1861332, -1179505, -9757629, -9336185, -2927020, 1236951, 2842732, -2376191,
-518617, -3041911, -1095217, 142271, 1639067, -4147865, -4518843, -1342714, -301721, 2419140,
-784905, -1023276, -3266860, 562104, -1806034, 79457, 2261300, -3311420, 1569811, 2918967,
--2304787, -6068789, -1596654, 2188823, -376347, 1774895, -311385, 1534377, -297427, 1687385,
-315680, -5666136, 1096827, 2298344, -908922, 1553168, 250182, -341450, -1135482, 42413,
--3344706, -311385, -929324, -4218732, -723702, -147103, 3718368, -3708168, 6126234, 7128035,
-5606543, -2452426, -1155883, -1313186, 2710124, -1050120, -1556926, 1688996, -4060892, -3693135,
-434329, 3245922, -117038, -1666984, -3633542, -2151242, -2773475, -1469953, -2560338, 936303,
--1539746, -422517, -1614908, -854699, 73551, 834297, 57445, 858993, -602906, 51540,
-677531, 348966, 531502, 539555, 310311, -684510, 679142, -13308493, -86436, -2052458,
-918049, -459562, -6890202, -1318018, -1455457, 2153389, 3347390, -4612795, 3682935, -1174674,
-2536715, 2549063, -1388885, 5540508, 334471, 245887, -965831, 962610, -1379758, 1022739,
--1549946, 206695, -3624416, 389231, 3986804, 537, 1676648, 4204236, -4138201, -4355634,
-1813550, -1977833, 3358128, -3401077, -1031866, -7111929, -5489505, -4752382, 2069101, 613643,
-2522757, -2583423, -1846299, -536334, 4457639, -4937602, 2033130, 862215, 360777, 2505040,
--1730335, -2261300, -2979097, 1816771, 958851, -4367445, -4822712, -5598490, -170725, -1201517,
-1816771, -252866, -1065689, 526134, 745177, 2507187, -6701223, 830539, 3802657, 5657009,
-5798206, 4800700, -854162, -3535832, 5195837, 1592359, 1001264, -2595771, 1494649, 1078574,
-149250, -640487, -1548873, -223338, 1770600, -1371705, -2284923, -926102, -989453, 388158,
--200790, -549219, 1541893, 129386, 1971390, -178241, 559956, 1332514, 1234803, 977642,
-693100, -783295, -886911, -276489, 774168, -144955, 755914, -530428, 1330366, 1135482,
--1180042, 80531, 81068, -1899449, 1431298, -7771207, 4826470, -4118337, 5751498, 7489349,
-4669167, -79457, 2223719, 512712, 6133750, -3341485, -3356517, 1761474, -931471, 2516314,
-4721243, -6738804, 2146947, 6058588, 2857764, -433255, -47245, 738198, -2811593, -40265,
--2656437, -3704409, -965831, 5740761, -2150705, 2669322, -1986422, -3500398, 6871948, -5985037,
-4614406, 5047661, 1000191, 3201361, -4434554, -1211181, -1755031, -1398012, 3204583, 971200,
--4769561, 779537, -460098, 907312, -1028108, 1721208, 1651415, 5724655, -5986648, 2885681,
-2278480, -602369, 2263448, 633508, 3522410, 3295851, 2089502, -1934346, 2806761, 4954782,
--124554, 2903935, -2097018, 5873905, 6062883, 6654515, -1912871, -4661114, 1504849, -650151,
-2374043, 1712618, -25770, -353798, -6667400, -1745367, -1546725, -528818, -1367410, -2002529,
-2289755, 876173, 723165, 2682744, -159451, 2712809, 1714229, 877247, -380105, 465467,
--594316, -1140851, 803696, 200790, 1315871, -398358, 316754, -90731, -886911, 1475858,
--55835, -1272921, 518617, 1195075, 140123, -1656784, 412317, -768262, 2273112, 1661079,
-1657321, -190589, 512712, 1293322, 133681, 663572, 10902238, -999117, -3404299, 10370735,
--4095251, 4660577, -2492155, -9903121, 1768453, -2844342, 315143, 11884175, -4597763, -5615133,
-457414, 6252936, -10044318, -3717294, 7537668, -2637647, 2435783, 3576634, -2688650, 3257196,
--2101850, -3464965, 700080, -964220, -1222455, -1271310, 4198868, -3348464, 8177618, 2058363,
-174483, -4670777, -1393717, 5021891, -5742372, 1243393, 1985349, -873489, -8006893, 5498095,
-1452236, 1370632, 705448, -1078037, 4125853, -2426120, 5642514, 3242164, -2201708, -9726490,
-4334159, 2645163, -249108, -2733210, 2348810, 6327024, 6387690, -668941, 3775276, -5718212,
-4170413, -985158, -1993939, 2522757, 4937602, -3439195, 4887136, 913217, -2081449, -1692754,
-3983582, -3307662, 9474161, -4843650, 3913789, -3241090, 839129, -2891587, 3781182, -3364033,
-154619, 2203318, -673236, 455267, -2947421, -957778, -420370, 57982, 782221, -1231582,
-1628330, -120796, -1167157, 1721745, -3383897, -3349538, -1959579, 103616, -354872, -632434,
-74088, -2267743, 2810519, 231391, -212064, 2035815, -1656247, -279173, 2211908, 1013612,
-756988, 3615289, 3241090, 10240813, 1357210, -2577517, -13080323, 4052302, 7431367, 4449586,
-2910377, -1096290, 3785477, 14248554, -1723893, 6589554, 651761, 3690988, 1410360, 271120,
-2863133, -1180579, -6076305, -1689533, -4515085, -1165547, -6371584, 2313377, 195421, 7483444,
-1473174, -3463354, 2478733, -1047435, -1817308, 4801237, 1729261, 3591667, 2100239, -2055679,
--8324721, 528818, 4859756, -317291, -1586454, 2189360, -4392141, -1859721, -7752416, -9605694,
-5000416, 5564667, 4350802, -1345399, -1562831, 87510, -144418, 2854543, -470836, 3125126,
-2806761, -76236, 2892661, -2655901, 795643, -1393180, 1726577, 2107218, 9061307, 43487,
-7420093, -2757906, -7579544, -670015, -999654, -2870649, 6090801, -462246, 2536715, 587337,
--4293894, -5176510, -1801202, -1074279, 619012, 5375689, 1797444, 600759, 2304250, 3615826,
--1470489, 2736431, -273804, 2334852, 1491964, 617402, 3241627, -306016, 1915019, 1107565,
-1014149, -541703, -794032, -1821066, -795643, 1919850, 2940442, -669478, 303869, -1579474,
--182536, 161598, -1560684, 1200443, -2982855, 169651, -96637, 44023, 4712116, -11611981,
--382252, 11824045, 16256451, -6757594, 1824287, 2578591, -5650030, -3298535, 636729, -4715337,
--4912906, 11376831, 1588064, -7554311, -1207423, -4932770, -2811056, 7396471, -2332167, -3288871,
-6713571, 4142496, 6782827, -2892124, 1392106, 6615860, 286689, -3987877, 1808718, -586263,
-820339, -8399345, -5725192, 2496987, -604517, 1985886, -7733089, 3615826, 2816425, 1795296,
--13626857, -7984344, -3462281, -1714229, 1924682, -5966784, -3995930, 1322313, 10423349, 6864969,
-3682935, -1861868, -1160715, -3959423, 2998424, -1155883, -7738458, -5911486, -731755, -130460,
-10915659, 6047314, -5436355, -6060199, 7539278, 1502702, -4581657, 38118, 6761889, 2566780,
-177167, -8837432, 9701794, -3428458, 6458557, 8500814, 8923331, 789737, -3331821, -2688113,
-4569845, 5269388, -4639639, 3705483, 4967667, 3532611, -1557999, -1184337, 674847, 3038153,
-2451890, -2637647, -4126390, -3847217, 1865626, -1844152, -1253057, -2668249, -571768, -1911261,
-947040, -1576253, 1136019, 937914, -354872, 8053, 2147484, -1593433, -3306051, -583042,
-2949569, -1799591, -1663763, -1702418, -1270237, -207232, -115964, -2010045, -112743, -1461363,
--768262, 563714, 1949378, -1309965, -114890, -420370, -948651, 1841467, 2233920, -3149285,
-4818954, -6154688, 7031935, -644245, -1900523, 3739306, -7095286, 2423972, 3869229, 777389,
-2704756, 3349538, -1916092, 7834021, -3682398, -13369159, -7949448, -1758789, 528818, -2832531,
--5706401, -6247030, -4234301, 13132399, -3638911, -1036161, 1902134, -2729452, 1574642, 10773389,
--5175973, 5113696, -3352222, -6925635, 6213207, 4482335, 2871186, 9655623, 226023, 4547834,
--412317, 1153199, -367757, -3171297, 2138357, -733903, 7005092, 1399086, -4807679, -1238561,
--1378685, -329102, -7843147, 3159485, -7732015, 1884954, 10433012, -6793028, -13013751, 3026878,
-1818919, 5977521, -2627446, -117575, 6110665, -3757023, 3002182, 4499515, 1276679, -2728378,
-6034429, 1304060, 7744900, 1647120, -4783520, -4541391, 5039071, 8453569, 2987687, -70867,
--6929930, -1396401, -2216203, 5019743, 1287953, -9482751, 1514513, 2529736, 717260, 972810,
-3711389, -1656247, 1579474, -2577517, 1648194, 1497870, 1214939, 1959042, 874563, 1301912,
-1202591, -2177549, 742493, -650688, -318364, 2170569, 930934, 1219771, 2454037, -714575,
--7588134, 763967, -479426, 590558, -660351, -437013, 2158758, 1431298, -1194001, -1406602,
--10411538, 23913842, -5627481, 10725070, 976568, 4457103, 3213709, -97711, -13458817, 11387032,
--16770237, 5379984, 3977140, 15047418, -7108171, 6760816, -10684268, 6915971, -3483755, -11501386,
--5534066, 2662880, 2895882, 4151086, 2090039, 5986648, 3902515, 9094056, -2873870, -7516193,
--6782827, 2588255, -126165, -3731790, 6065568, 2629594, -1299765, 3606162, 7517804, -735513,
-1909650, -1168768, 3692061, 2163053, -9735617, -4252018, -12741020, -2960306, -2206540, -332323,
-6040335, 5383205, 754841, -3543348, -122943, -1948305, -3067681, 1655173, 17801028, 1566589,
--446140, 5636608, -484258, 6463926, -2848637, 42950, -4297115, 17872432, 4166118, -7406134,
--8485782, -5674189, 642635, -419833, -11515344, 602369, 2302639, 749472, 12439836, -3279208,
-1776506, -7785165, -2604361, -21095268, -3707094, 1062468, 739271, -8123394, 2050847, -3921305,
-2574296, 1197222, -3897683, -499290, 2699387, 4250407, 7883413, 2069101, -2965138, -2748242,
--6470905, -2510945, 527744, 1044214, -3753802, -1430761, 3394098, 1208496, -1031329, -904628,
--2803003, -2569464, -1312649, 708670, -5406290, -3790309, 919123, 2112587, -56908, -1393180,
-1242319, 4349728, 650688, 332860, -449898, -1931662, 49929, -6254010, 12577812, 1133335,
-10479720, 6379637, 10278394, 3477850, -10297721, 10199474, -6571300, 17609366, -11297375, -3309809,
--15646029, -3268470, -1612223, 7027104, -7249368, 10289131, 8314520, -4929549, 636192, 11756936,
-16540456, -5210332, 469762, -2113124, 5221070, 117038, -1874753, 2428267, 4572530, -7822209,
-5979132, 1161789, 6847252, 2626909, 1090385, -13386876, -2115272, 15602006, -1810329, 5240934,
-11989938, 3473555, -874563, -4139812, -5446556, -3267396, 598611, -5093295, -3018288, 9049496,
-8397198, 2641405, 13910862, 9228274, -2849711, -1363115, 1950452, 3230352, -4182761, -11031087,
-14464376, 6359236, -2905009, 13202193, 13844290, 15380815, 6718403, 2327872, -5521181, 396211,
--7747048, -6250788, -3929895, -15413027, 6242735, -1953136, 13200582, -3119757, -10282152, -1948841,
-1040456, -1537598, -13733158, 2196876, 3725347, 6266358, 6691022, -4667556, 2185065, -3192771,
--8915815, 1746978, 3515968, -705985, -2605435, -6783364, 7137699, 3984119, -6280316, -7201587,
--3977140, 4090956, -689342, -2070174, 1959579, -3223910, 2029372, -856309, 1266479, 3061775,
--4535486, -2175938, 2088428, -1021665, 120259, 9139154, 3046743, 558346, -586800, 2123861,
--3020436, -1801202, -261993, 2939368, 13697188, 780073, 2478196, -2090575, 1103807, -1789391,
--20830054, 2383170, -233539, -3766150, -1584306, -10248866, 11695733, 12003897, 13415867, -21851182,
-7011534, 4489852, 511101, 21503290, 8801462, -10730439, -1285806, 21231098, 2471754, 3771518,
-4299263, -6264747, 3511136, 4362613, 13158169, 6680285, -10131828, -16618302, 6240588, 3919695,
--8407935, -1589138, 766652, -10220948, 1120987, 12446278, 5264020, 6971269, 10077604, 16381005,
-1505386, 14427332, 2806761, -5744519, -881542, -8555575, -4521527, 3567507, 4839892, 3732864,
-7207492, -10283225, -4696547, 18394808, -1415729, -3962644, -10339060, 8720394, 7851200, 2732136,
-3245922, -149787, 5014375, -8008504, 13080323, -6628745, -7905961, -6396817, -4458176, 17811766,
-4735202, 3705483, -19459960, -10666014, -16013786, 1154809, -1785096, -1583769, -15201500, -21009906,
--693100, 9430674, -5279052, 2682207, -1477469, -1446330, 5172215, -7322919, -3237869, -3343632,
-6260989, 1049046, -4796942, -82678, -872952, -127238, -2343979, -4412542, 970126, 7015292,
--3549254, -2316061, -4636417, -2057826, -3291556, -1556389, 2934000, -1044214, 4716948, -1612223,
--1200443, -2794950, -2216203, 7378217, -918586, -504659, -3654480, -568546, 4200478, 1188095,
--5541045, 1206886, 237834, 1553704, 19372450, 22798760, -5905580, 6365142, -1720134, -6738267,
-1270237, -15365246, -9509058, -730144, -3132105, 30593588, -13841606, 3867618, -19523848, -2917357,
-11838540, -5051956, -10887742, -11429982, -4206384, 4633196, 6009733, -818728, -1020592, -12840342,
-2970507, 8892193, 4475356, 5429913, 1593433, 1944547, -7505456, -2500208, 4962298, 1779727,
--54224, 508954, -9044664, 3955128, -9516574, -1592359, -291521, 2699924, -10562398, -1139240,
-5114233, 7494181, -12029667, -6343667, 21240760, -8235063, -16823924, 14045617, -13697188, -4361003,
--6085432, -2508261, -10526965, -7327751, -2248416, -10616622, -15118822, 24245090, 13361643, 10773389,
-7363722, -9498857, -3738232, -6426345, 6781217, -11497627, 8056822, -6163815, 3436511, 8084202,
-5261335, 1592359, -15570867, 15152108, -18591840, -4924717, -18026514, -7358890, 11785390, -748935,
-6664179, 13542569, 4274030, -1442572, 2598455, -4813585, 212064, -1510218, -5197448, 6082748,
--2192044, -2907693, 6971269, 3664144, -1920924, 418759, 265214, 1057099, -3226594, 3000572,
-903554, 1589138, -3850975, 2526515, -1821603, 6601902, -3046743, 4647692, -1490354, -2388002,
-6997039, -4787278, -2121177, -4289599, 2779381, 6922951, 3153043, -2056753, 3233037, -2882997,
-3303904, 4798016, -5348308, -12776454, -1011465, 32073742, -14435922, 13919452, -28753732, 7852811,
--18295486, -3464965, 10129680, -951872, 6475200, 10616622, 8456254, -12565464, 9286793, 1883343,
-6849399, -2734821, 9524627, 8838506, -2014877, 1822140, 5700496, 6455336, -9281424, -3206193,
--13508746, -1704565, 11787538, 279173, -5700496, 1182190, 4315369, 790274, -4963372, -9625022,
-2367601, -6521371, 6126234, -6163815, 22774600, -2184528, -12499429, -14062260, 3085934, -7741142,
-7117835, -15767362, -12382391, -16018617, 3600256, -13537200, -3293166, -19408958, 13763223, 2788508,
-9235790, 5690832, -20959440, 1546188, -1942936, -7879655, -11747272, -3253438, -10014790, -12598213,
--6992744, 5746666, 8184060, 11955041, -7008850, 1613297, 5129265, -17613660, 7975755, -12091407,
--1173600, 9824738, 4132832, 3924526, 1759863, 20255602, -11728482, -4356708, -4514011, 5252745,
--17429514, 1293322, -1491427, -257161, 11179263, 6452115, 5486284, 1921998, -4312147, 591632,
--2182380, 8093329, -3245922, -1158031, -4702989, 9184788, 3635690, -3368328, 2461553, -8340290,
-5575405, 2772938, 4366908, 600222, -1734630, 5089536, 9376987, 3099356, -4693326, -6412923,
--2660195, 2267206, -6498286, -1597191, -9834938, -7243999, -3929895, -148713, -5452998, 3766686,
--4318053, 9404368, -7629473, -312996, -139050, -26712550, -7680476, 30117384, 26656714, 15009300,
--12801150, 13238700, 19954954, -13094282, 17636746, -14099304, 16289737, 3894999, -1017907, 5415954,
--279710, 8607651, -12746926, -3572339, -5713917, 6574521, -12083354, -10844792, 17154100, -1574106,
--3495567, 1687385, -16448651, -293668, 26630408, 14561013, 3085934, -177167, 5724655, 25210384,
-10790568, 460635, 4298726, -6877854, -2923799, -5908802, 10859825, -5519570, 7272990, 1440962,
-12958453, -15203110, -262530, -837519, 451508, -4226248, 7255811, 11668352, -2674154, -3212099,
-11746736, 1427003, 1503775, 26579406, 4220342, 448824, -12087649, 5449240, -8978629, 12359305,
--14139032, -12479027, 1973538, -12290049, -13191992, -20120312, 5461588, -6651294, 10474888, -3329674,
-5928666, -29427506, 6058588, -9886478, -17870822, 9432285, 12403866, 6579890, 3863860, 2352032,
-5223217, 8003135, -3787088, -4461934, -5403069, -237297, -5930276, 3847217, 813359, -8412230,
--5865852, 5013838, 2940979, 511101, 8750996, -2923799, -886911, -6817724, -1449015, 180389,
-3638374, 2424509, -5817533, -3433290, -1595044, -6898791, -1311576, -6467684, 2677912, 1940788,
-7871065, 5507222, -541166, -3025268, 10737, 208843, -2229088, -326954, -8196408, -1299765,
-3370476, 3808026, 1047972, -1218160, 7915088, 1486059, 22325776, -34360812, 14414447, 15025943,
--24427626, -2493229, -20931524, -6908455, -18792092, -8500277, 21489868, -7360500, -1577327, -15117211,
--2937221, 3468186, -22408992, -876710, 14305462, -27666568, 1008780, -18891950, -10204842, 374736,
-2028835, -12513387, -10057740, -10486163, -3031710, -9016210, -591095, 4795868, -2731062, 7013145,
--13507135, -8608725, 18015240, -8439611, 9749576, -10733123, 10143639, 9291088, 1571958, 2476049,
-9446244, 443992, 13466870, 17059074, -3233037, 2523293, 25334402, 1502702, 13009993, -918586,
--10107132, -19989852, 3338800, 13879187, -22072910, 288837, -12987981, -6815040, -28618440, 12357158,
-18850074, -4933844, 9071508, -4632122, 20500416, 22713398, -1848983, -22491134, -21877490, 31169114,
--24300388, 9093520, 3573950, 3239479, 23294292, -9928891, 37965900, -632971, -8644159, -9900436,
--6882685, 6078453, -2411087, -2896419, -260919, 9816685, -2468533, -6167573, 8194798, -2960306,
-4117800, -7550016, -4589710, 7189239, 522375, 10741713, -3574487, 4576825, -7932268, -2249489,
--10843719, 2245194, 4372814, 5371931, 1007707, 5519033, 492311, -1677185, 5824513, -9146670,
-6026376, -7756174, -2806761, 4727149, -9578851, -2398202, -5512591, -16001438, -4328254, 1065689,
-5749888, -7808251, -4114579, -6864432, -2280091, 1694365, 6299107, 37312528, 42050952, -2485712,
--31717260, 31323734, -34675420, 4884452, 14702747, 3642132, -3712999, -16000901, 18013630, -8068096,
--6457484, -16294569, -9477919, -5083094, -20337744, -11193222, -9090835, -5090073, -3343095, 14119168,
--207769, 12203076, 89657, -5280663, -17814450, -19519552, -4929549, -716723, -263067, -2967823,
--7297150, -8435853, 9336722, 22472880, -12214350, 7737384, -7626788, -7864622, 8929237, -8712341,
--14105746, 31550830, -3485903, 2896419, 1547799, -17637284, -3878356, -3703873, 8937827, -22783728,
--10088878, 24089398, 3874061, -10249939, 13094282, 24482388, -13930190, -17253958, 8959839, -14627585,
-236760, -27371290, 8833674, 23261006, -2381559, 12128451, 7086159, 4061429, 26692148, 8369281,
--118112, 15381888, -2233383, -2143726, 9421011, 10084046, -38708928, 3528316, -16833588, 13677860,
--629213, 514859, 9630927, -2925410, -3694746, -5104569, 5189394, 1964411, -3782256, 5158256,
--5534602, 549219, -2935073, -7483981, 3441880, -3753802, 8373576, 4589173, -127775, 25770,
-2308545, -2232846, 4964446, 2416456, 1562294, 2011118, -1388348, 1821066, -3331821, -6501507,
--3545496, -1697586, 909996, -8453569, 6887517, 4603668, 360240, 2496450, -5651103, 7899519,
-983548, -4712653, 2892661, 3402151, -10095321, -2105608, 1034013, -824097, 164283, 1833951,
-1286343, -51167020, -35837208, 14963666, -15180025, -14304389, -43524124, -12553653, 9295920, 3608846,
--8563091, -24197308, -299037, 12287365, -884763, 1682554, 12729209, 22596896, -19572702, 51424716,
--13217762, -17052630, -5182415, -2871186, 246961, -20328080, 478889, -3563749, 10873783, -6852621,
-15384036, -6345814, -13066364, 5382131, 6350646, -11662984, 12764106, -39139500, 324270, -3115462,
-15641734, 18913426, -13676786, 17638894, -6753299, 5057324, -8413841, -2807835, -5170604, 14117021,
--1877438, 18581102, 29010356, -25224342, -7048578, 13628468, -17000018, 10309532, -19313394, -10647224,
--9612674, -11304354, -19717122, -10103911, 9193377, 7514582, 15129022, 19638202, 14263586, -23775866,
-2971581, 4405563, 5657546, 4808753, 15197205, -7438347, -16086263, 9207336, -4192962, -12568685,
-2443837, -21533892, -8922795, -18758806, 1702418, 11055783, -6848862, 10625749, 5686000, -642635,
--4093641, -317828, -16738561, -6277095, 5515275, 2779918, 3625489, 1151588, 1848983, 1487669,
-5165772, 1401233, -11257646, -1582696, 1655710, -1144609, 2864206, -5158256, -4743255, -10989748,
-2778844, 9690520, -11067594, -7770133, 5616744, -2814277, -11296301, 7384660, -5532992, -4531728,
-6666863, -536871, -2168422, -3473018, -5060009, -6700149, -7123740, -1864016, -6076305, -3629247,
--3169686, 4789426, -417686, 7146289, -10640781, -34854732, 26303454, -44617196, 31354336, -4498978,
--19958714, -17031156, -19010062, -12875238, -10023917, 953483, 22985054, -1867237, -19275814, 20467130,
-29008746, -44532368, -11896523, 3098819, -3690451, -6953552, -2237141, -6185827, -7921531, -12952011,
-16510928, -5801964, -12371116, -21195664, -21068426, 20738786, 5392332, -3808026, -2306934, 8053,
--4658429, -5661304, 4558034, -18649284, 10139881, 21198348, 15819438, 9865003, 20236276, 23552526,
--13566191, 5007932, -19520090, 21068962, -12089796, -3485366, -145492, -30772904, 9953050, 25303800,
-4279935, -10429254, -8496519, 33086280, -13367012, -14317810, 9251896, -33792264, -3987877, -16774532,
-682900, -33043330, 13756780, 5714454, 13480829, -53601728, -45995880, 7486128, -16103980, -10798085,
--6702297, -35908612, 11828877, -21240760, -23189602, 17428978, -15624017, -9220221, 7394323, -3787088,
--7060926, -1319629, -1997697, 7485055, -17749490, -8377871, -17128330, 13422, -7558606, 3406983,
--2505040, -13517336, -5593121, 4734665, -938987, 955093, 3543885, -14799384, 1822677, -18745922,
-8562017, 2822867, -13659607, 4312684, -16235513, -3502546, -5988258, 1199907, 8498130, -6395743,
-8795019, -4743255, 15023796, -6919729, 9412421, -5304285, -1753957, -493384, -1913945, 3059091,
--1639604, -11811, -1317481, -3433290, -51003, 5417028, -1598802, -2336999, -1972464, 1732482,
--2006824, -2037425, -1535451, -967978, 375810, -964757, -751619, -862752, -1945620, -807454,
-933082, -42413, 3280281, 39715024, -54683524, 56120728, 16663399, -1654099, 4861366, -40119288,
-8587787, 19184546, -6839199, 47834124, -13303661, 20818780, -16494822, 52669184, -1612223, -6844031,
--19772418, -7119445, 7944079, -5071820, 21562884, 16727287, -5280126, 1628866, -20329154, 8076686,
-21366388, 21538188, -22936736, 9931038, -4294431, 22979686, -5872294, 15006079, -13456669, -10604274,
--30691836, 2272575, -19334870, -28843390, 41489920, -18101140, -3326989, -7693360, -9575630, 5721434,
-3720516, 14705968, -6568079, 22509924, 2418067, 40734008, 15912317, 45071388, 38515120, -3691525,
-25861072, 19622632, -6400575, 23061290, 31538482, -13302587, -30837328, 17842368, 11838004, 25603374,
-13432510, -2429878, 24159, -33253784, -2823941, -9753871, -11756936, 44394392, -4734665, -440234,
-55413132, 36870148, 20185810, 24641838, 13016435, 1612223, 6663642, 31982474, 763430, -8349417,
-9858024, 26874148, 13016435, 15327128, 7960185, 18598282, -594853, 5364951, 7328825, 13024488,
-4853313, 3314641, 2747169, 1483374, 10950019, 15821586, 7155953, 20906828, 1950452, 12904229,
-13246753, 23567560, 92342, 16132971, 14777909, 3060164, 12545063, 672162, 3165391, -3989488,
-5475547, 6553047, 3746285, 3393561, 1370632, -2818036, 1196148, 5516886, -2384244, 2996277,
-11260867, -2362232, 17067664, -38375532, 73679088, -9994926, -8200167, -4698158, 53602804, -32916092,
-26883810, -36037996, 34144992, 6917045, -6666863, 879931, 19994684, -8586713, 18639622, -8656507,
--177704, 37667400, 11534672, -9630390, -164819, 9415105, 7364259, -36509908, 9710921, -13285944,
--3358128, -19226958, 18564996, 17721572, 2698850, 8419210, 31372588, -10398653, -50119048, 12005507,
-32687386, -12658879, -32999308, 8791261, 23365158, 7998303, -99858, -39355860, -19039590, -23272280,
-21762062, 8961986, 22413286, -47374028, 2867965, -8662412, -52623548, -13493177, 7519951, 23863376,
-32824288, -17457968, 61477624, 12139725, 838592, -12582644, -25145422, -17078938, 11374147, -28434830,
-57898308, -18456548, 2108829, 34593276, -22965728, 21188684, -22450868, -12490302, 47940424, -24234352,
-31312996, 29386704, 10256382, 13510357, -42163692, -4777078, -2570538, -14386530, 19293530, 18006114,
-6803228, 5667210, 18742700, -4291746, 7047505, -2029909, 5281736, -7948911, 6338835, -1124208,
-5269925, 4757750, 783295, -13935558, -2941516, 2284386, -5636608, -1347009, 9628780, 5987722,
-16208133, -7249368, 2957085, -27074400, -23654532, -2947958, -2015413, 16746077, 11667279, -7383049,
--6383395, -21480742, -718333, 7984344, -4198331, 413391, 4560719, -6441377, 4235375, -15681999,
-214748, -4942434, -7036767, 11146514, -43320652, 24714852, 15812459, 24719684, -9877351, -7035694,
-10007811, 59593, 2843805, 912681, 4881767, 1155346, -6820945, 31977642, -7473780, -22071836,
-9319005, -594853, -19432580, 6747394, 4478577, 13187697, -8972187, -14712947, 15789910, -12723304,
--1750199, -3801583, 12956306, -22390202, 7619809, -13896904, 11320997, -19726248, 6985228, -6626598,
-3370476, 43184284, -29735132, 5614059, 9480603, -26796300, 9688909, 12326019, -19873350, -4152160,
--7632157, 35913444, 2992519, -41576356, 24846922, -33611876, 6072547, 17374216, -16162499, 19876034,
--24112484, -19866372, 27282170, -4663261, 11569568, -40963252, 7625178, 8835285, -2219961, -6332393,
--388695, 16602196, 577673, -54469312, 32937030, -3445638, 12617540, -14319958, -16703665, 51912732,
--1438277, -33228014, 2820720, 16754667, 3774203, -50507204, 1737314, 46821048, -8635569, -21681532,
-5067525, 22641994, -3090229, 61740, -4053912, -2356863, 3173444, -8210904, -4859219, 15370077,
--6752763, -435402, -9125195, 9010305, 13653701, -2476586, -2140504, 14525043, 4683125, -10004053,
--2458332, 6251862, 4112431, -8499740, 4467840, 9991168, -8431021, 2136209, 2420751, 6434935,
--15626165, 977642, 9657771, 3666828, -10916733, 600222, 7575249, 1255204, -8127152, -5432060,
-20485920, -7113540, -107075680, -227823856, -90900832, -171527568, -208907216, 73983496, -857383, 75884016,
-288629856, 252064112, 143390704, 276215776, 154007856, 17377438, 95428808, 58706836, -104518568, -73883104,
--21790516, -115852984, -140099680, -46664284, -70968968, -110911088, -27918898, -5094368, -141215296, -97320736,
--14810121, -85860152, -111140872, -32447942, -54588496, -120822264, -23268522, 12206297, -67799816, -51719996,
-50965692, -18460844, -72706280, 15149960, 47976396, -35919348, 29376502, 105641160, -15632607, -28304908,
-104542192, 55764780, -26240640, 173695456, 236126032, 146938880, 248988384, 372514848, 286524800, 272667072,
-398497792, 345453344, 254232000, 311948832, 283574688, 180363936, 159536016, 85826328, -29753386, -124581968,
--222852432, -316567552, -376702976, -472311104, -504623776, -532122816, -602827648, -602401344, -455308416, -465896032,
--424299808, -191122816, -147904720, -143854560, 63703492, 121643136, 2567317, 126785824, 175977696, 60209536,
-83857088, 165034656, 123339112, 71798968, 116486496, 144235744, 61284888, 89785216, 179014240, 106449688,
-70076152, 164971312, 123714384, 49942416, 107213656, 122490856, 15721191, 63251448, 147455360, 84536768,
-101431024, 207883392, 195565424, 206089712, 266861344, 268735552, 215572992, 203900896, 174033680, 106267152,
-76625440, 40767828, -6388764, -41973104, -113781200, -155447744, -210108720, -279958848, -311737856, -352222752,
--410007232, -390456000, -350705024, -309728896, -226481680, -148488832, -78776144, -29069950, 12165495, 25860534,
-31632972, 40833328, 43250320, 36562520, 39009040, 43104828, 41725072, 46758772, 60379188, 67723584,
-72143104, 80195096, 81867984, 80804440, 77153720, 57716844, 36150740, 23155780, 19529216, 19545322,
-0, 0, 0, 0, 0, 0, 0, 0, },
+937377, 5580773, 1907502, 3636764, -5305359, -2907156, 239444, -940061, 1421097, 4420058,
+-10628970, -74625, 3493419, 2098629, 3220152, -3077344, -4296041, 4645544, -78920, 1294933,
+2895345, 3843996, 1417339, 802085, 3456912, -510564, -1107565, -2987687, 1609002, -840740,
+-486942, -1551020, 1986422, 5056787, 20401, -1050656, 2378875, -3234647, -4840965, -2675228,
+-981937, -3139084, 281857, -725850, 2031520, -1958505, 563714, -3927748, -379031, -3229816,
+-155156, -1479079, -1276679, 1644436, -1864553, -189515, 2657511, -1397475, 3169686, 3842385,
+278636, 5193689, -2656974, -177167, 2482491, -898185, 1675037, 2360622, 1275068, -2731599,
+1074816, 1250372, 878321, 166430, -2284923, 3031173, -818191, 1448478, -499290, -627602,
+190589, -3153580, -260919, -2450279, -1142998, -107374, -427886, -83752, -244813, -1316944,
+1567126, 183610, 438624, 110059, 875100, -534187, 1105417, -81068, 470299, -180926,
+-482110, 623844, 60130, -184684, -13959, 880468, 188442, -153545, 542777, 285615,
+-113817, 14093398, -3992172, 1350230, -3084860, -259846, -1294933, 1615445, 1084479, 4826470,
+1474784, 836982, 1861332, -1179505, -9757629, -9336185, -2927020, 1236951, 2842732, -2376191,
+518617, -3041911, -1095217, 142271, 1639067, -4147865, -4518843, -1342714, -301721, 2419140,
+784905, -1023276, -3266860, 562104, -1806034, 79457, 2261300, -3311420, 1569811, 2918967,
+-2304787, -6068789, -1596654, 2188823, -376347, 1774895, -311385, 1534377, -297427, 1687385,
+315680, -5666136, 1096827, 2298344, -908922, 1553168, 250182, -341450, -1135482, 42413,
+-3344706, -311385, -929324, -4218732, -723702, -147103, 3718368, -3708168, 6126234, 7128035,
+5606543, -2452426, -1155883, -1313186, 2710124, -1050120, -1556926, 1688996, -4060892, -3693135,
+434329, 3245922, -117038, -1666984, -3633542, -2151242, -2773475, -1469953, -2560338, 936303,
+-1539746, -422517, -1614908, -854699, 73551, 834297, 57445, 858993, -602906, 51540,
+677531, 348966, 531502, 539555, 310311, -684510, 679142, -13308493, -86436, -2052458,
+918049, -459562, -6890202, -1318018, -1455457, 2153389, 3347390, -4612795, 3682935, -1174674,
+2536715, 2549063, -1388885, 5540508, 334471, 245887, -965831, 962610, -1379758, 1022739,
+-1549946, 206695, -3624416, 389231, 3986804, 537, 1676648, 4204236, -4138201, -4355634,
+1813550, -1977833, 3358128, -3401077, -1031866, -7111929, -5489505, -4752382, 2069101, 613643,
+2522757, -2583423, -1846299, -536334, 4457639, -4937602, 2033130, 862215, 360777, 2505040,
+-1730335, -2261300, -2979097, 1816771, 958851, -4367445, -4822712, -5598490, -170725, -1201517,
+1816771, -252866, -1065689, 526134, 745177, 2507187, -6701223, 830539, 3802657, 5657009,
+5798206, 4800700, -854162, -3535832, 5195837, 1592359, 1001264, -2595771, 1494649, 1078574,
+149250, -640487, -1548873, -223338, 1770600, -1371705, -2284923, -926102, -989453, 388158,
+-200790, -549219, 1541893, 129386, 1971390, -178241, 559956, 1332514, 1234803, 977642,
+693100, -783295, -886911, -276489, 774168, -144955, 755914, -530428, 1330366, 1135482,
+-1180042, 80531, 81068, -1899449, 1431298, -7771207, 4826470, -4118337, 5751498, 7489349,
+4669167, -79457, 2223719, 512712, 6133750, -3341485, -3356517, 1761474, -931471, 2516314,
+4721243, -6738804, 2146947, 6058588, 2857764, -433255, -47245, 738198, -2811593, -40265,
+-2656437, -3704409, -965831, 5740761, -2150705, 2669322, -1986422, -3500398, 6871948, -5985037,
+4614406, 5047661, 1000191, 3201361, -4434554, -1211181, -1755031, -1398012, 3204583, 971200,
+-4769561, 779537, -460098, 907312, -1028108, 1721208, 1651415, 5724655, -5986648, 2885681,
+2278480, -602369, 2263448, 633508, 3522410, 3295851, 2089502, -1934346, 2806761, 4954782,
+-124554, 2903935, -2097018, 5873905, 6062883, 6654515, -1912871, -4661114, 1504849, -650151,
+2374043, 1712618, -25770, -353798, -6667400, -1745367, -1546725, -528818, -1367410, -2002529,
+2289755, 876173, 723165, 2682744, -159451, 2712809, 1714229, 877247, -380105, 465467,
+-594316, -1140851, 803696, 200790, 1315871, -398358, 316754, -90731, -886911, 1475858,
+-55835, -1272921, 518617, 1195075, 140123, -1656784, 412317, -768262, 2273112, 1661079,
+1657321, -190589, 512712, 1293322, 133681, 663572, 10902238, -999117, -3404299, 10370735,
+-4095251, 4660577, -2492155, -9903121, 1768453, -2844342, 315143, 11884175, -4597763, -5615133,
+457414, 6252936, -10044318, -3717294, 7537668, -2637647, 2435783, 3576634, -2688650, 3257196,
+-2101850, -3464965, 700080, -964220, -1222455, -1271310, 4198868, -3348464, 8177618, 2058363,
+174483, -4670777, -1393717, 5021891, -5742372, 1243393, 1985349, -873489, -8006893, 5498095,
+1452236, 1370632, 705448, -1078037, 4125853, -2426120, 5642514, 3242164, -2201708, -9726490,
+4334159, 2645163, -249108, -2733210, 2348810, 6327024, 6387690, -668941, 3775276, -5718212,
+4170413, -985158, -1993939, 2522757, 4937602, -3439195, 4887136, 913217, -2081449, -1692754,
+3983582, -3307662, 9474161, -4843650, 3913789, -3241090, 839129, -2891587, 3781182, -3364033,
+154619, 2203318, -673236, 455267, -2947421, -957778, -420370, 57982, 782221, -1231582,
+1628330, -120796, -1167157, 1721745, -3383897, -3349538, -1959579, 103616, -354872, -632434,
+74088, -2267743, 2810519, 231391, -212064, 2035815, -1656247, -279173, 2211908, 1013612,
+756988, 3615289, 3241090, 10240813, 1357210, -2577517, -13080323, 4052302, 7431367, 4449586,
+2910377, -1096290, 3785477, 14248554, -1723893, 6589554, 651761, 3690988, 1410360, 271120,
+2863133, -1180579, -6076305, -1689533, -4515085, -1165547, -6371584, 2313377, 195421, 7483444,
+1473174, -3463354, 2478733, -1047435, -1817308, 4801237, 1729261, 3591667, 2100239, -2055679,
+-8324721, 528818, 4859756, -317291, -1586454, 2189360, -4392141, -1859721, -7752416, -9605694,
+5000416, 5564667, 4350802, -1345399, -1562831, 87510, -144418, 2854543, -470836, 3125126,
+2806761, -76236, 2892661, -2655901, 795643, -1393180, 1726577, 2107218, 9061307, 43487,
+7420093, -2757906, -7579544, -670015, -999654, -2870649, 6090801, -462246, 2536715, 587337,
+-4293894, -5176510, -1801202, -1074279, 619012, 5375689, 1797444, 600759, 2304250, 3615826,
+-1470489, 2736431, -273804, 2334852, 1491964, 617402, 3241627, -306016, 1915019, 1107565,
+1014149, -541703, -794032, -1821066, -795643, 1919850, 2940442, -669478, 303869, -1579474,
+-182536, 161598, -1560684, 1200443, -2982855, 169651, -96637, 44023, 4712116, -11611981,
+-382252, 11824045, 16256451, -6757594, 1824287, 2578591, -5650030, -3298535, 636729, -4715337,
+-4912906, 11376831, 1588064, -7554311, -1207423, -4932770, -2811056, 7396471, -2332167, -3288871,
+6713571, 4142496, 6782827, -2892124, 1392106, 6615860, 286689, -3987877, 1808718, -586263,
+820339, -8399345, -5725192, 2496987, -604517, 1985886, -7733089, 3615826, 2816425, 1795296,
+-13626857, -7984344, -3462281, -1714229, 1924682, -5966784, -3995930, 1322313, 10423349, 6864969,
+3682935, -1861868, -1160715, -3959423, 2998424, -1155883, -7738458, -5911486, -731755, -130460,
+10915659, 6047314, -5436355, -6060199, 7539278, 1502702, -4581657, 38118, 6761889, 2566780,
+177167, -8837432, 9701794, -3428458, 6458557, 8500814, 8923331, 789737, -3331821, -2688113,
+4569845, 5269388, -4639639, 3705483, 4967667, 3532611, -1557999, -1184337, 674847, 3038153,
+2451890, -2637647, -4126390, -3847217, 1865626, -1844152, -1253057, -2668249, -571768, -1911261,
+947040, -1576253, 1136019, 937914, -354872, 8053, 2147484, -1593433, -3306051, -583042,
+2949569, -1799591, -1663763, -1702418, -1270237, -207232, -115964, -2010045, -112743, -1461363,
+-768262, 563714, 1949378, -1309965, -114890, -420370, -948651, 1841467, 2233920, -3149285,
+4818954, -6154688, 7031935, -644245, -1900523, 3739306, -7095286, 2423972, 3869229, 777389,
+2704756, 3349538, -1916092, 7834021, -3682398, -13369159, -7949448, -1758789, 528818, -2832531,
+-5706401, -6247030, -4234301, 13132399, -3638911, -1036161, 1902134, -2729452, 1574642, 10773389,
+-5175973, 5113696, -3352222, -6925635, 6213207, 4482335, 2871186, 9655623, 226023, 4547834,
+-412317, 1153199, -367757, -3171297, 2138357, -733903, 7005092, 1399086, -4807679, -1238561,
+-1378685, -329102, -7843147, 3159485, -7732015, 1884954, 10433012, -6793028, -13013751, 3026878,
+1818919, 5977521, -2627446, -117575, 6110665, -3757023, 3002182, 4499515, 1276679, -2728378,
+6034429, 1304060, 7744900, 1647120, -4783520, -4541391, 5039071, 8453569, 2987687, -70867,
+-6929930, -1396401, -2216203, 5019743, 1287953, -9482751, 1514513, 2529736, 717260, 972810,
+3711389, -1656247, 1579474, -2577517, 1648194, 1497870, 1214939, 1959042, 874563, 1301912,
+1202591, -2177549, 742493, -650688, -318364, 2170569, 930934, 1219771, 2454037, -714575,
+-7588134, 763967, -479426, 590558, -660351, -437013, 2158758, 1431298, -1194001, -1406602,
+-10411538, 23913842, -5627481, 10725070, 976568, 4457103, 3213709, -97711, -13458817, 11387032,
+-16770237, 5379984, 3977140, 15047418, -7108171, 6760816, -10684268, 6915971, -3483755, -11501386,
+-5534066, 2662880, 2895882, 4151086, 2090039, 5986648, 3902515, 9094056, -2873870, -7516193,
+-6782827, 2588255, -126165, -3731790, 6065568, 2629594, -1299765, 3606162, 7517804, -735513,
+1909650, -1168768, 3692061, 2163053, -9735617, -4252018, -12741020, -2960306, -2206540, -332323,
+6040335, 5383205, 754841, -3543348, -122943, -1948305, -3067681, 1655173, 17801028, 1566589,
+-446140, 5636608, -484258, 6463926, -2848637, 42950, -4297115, 17872432, 4166118, -7406134,
+-8485782, -5674189, 642635, -419833, -11515344, 602369, 2302639, 749472, 12439836, -3279208,
+1776506, -7785165, -2604361, -21095268, -3707094, 1062468, 739271, -8123394, 2050847, -3921305,
+2574296, 1197222, -3897683, -499290, 2699387, 4250407, 7883413, 2069101, -2965138, -2748242,
+-6470905, -2510945, 527744, 1044214, -3753802, -1430761, 3394098, 1208496, -1031329, -904628,
+-2803003, -2569464, -1312649, 708670, -5406290, -3790309, 919123, 2112587, -56908, -1393180,
+1242319, 4349728, 650688, 332860, -449898, -1931662, 49929, -6254010, 12577812, 1133335,
+10479720, 6379637, 10278394, 3477850, -10297721, 10199474, -6571300, 17609366, -11297375, -3309809,
+-15646029, -3268470, -1612223, 7027104, -7249368, 10289131, 8314520, -4929549, 636192, 11756936,
+16540456, -5210332, 469762, -2113124, 5221070, 117038, -1874753, 2428267, 4572530, -7822209,
+5979132, 1161789, 6847252, 2626909, 1090385, -13386876, -2115272, 15602006, -1810329, 5240934,
+11989938, 3473555, -874563, -4139812, -5446556, -3267396, 598611, -5093295, -3018288, 9049496,
+8397198, 2641405, 13910862, 9228274, -2849711, -1363115, 1950452, 3230352, -4182761, -11031087,
+14464376, 6359236, -2905009, 13202193, 13844290, 15380815, 6718403, 2327872, -5521181, 396211,
+-7747048, -6250788, -3929895, -15413027, 6242735, -1953136, 13200582, -3119757, -10282152, -1948841,
+1040456, -1537598, -13733158, 2196876, 3725347, 6266358, 6691022, -4667556, 2185065, -3192771,
+-8915815, 1746978, 3515968, -705985, -2605435, -6783364, 7137699, 3984119, -6280316, -7201587,
+-3977140, 4090956, -689342, -2070174, 1959579, -3223910, 2029372, -856309, 1266479, 3061775,
+-4535486, -2175938, 2088428, -1021665, 120259, 9139154, 3046743, 558346, -586800, 2123861,
+-3020436, -1801202, -261993, 2939368, 13697188, 780073, 2478196, -2090575, 1103807, -1789391,
+-20830054, 2383170, -233539, -3766150, -1584306, -10248866, 11695733, 12003897, 13415867, -21851182,
+7011534, 4489852, 511101, 21503290, 8801462, -10730439, -1285806, 21231098, 2471754, 3771518,
+4299263, -6264747, 3511136, 4362613, 13158169, 6680285, -10131828, -16618302, 6240588, 3919695,
+-8407935, -1589138, 766652, -10220948, 1120987, 12446278, 5264020, 6971269, 10077604, 16381005,
+1505386, 14427332, 2806761, -5744519, -881542, -8555575, -4521527, 3567507, 4839892, 3732864,
+7207492, -10283225, -4696547, 18394808, -1415729, -3962644, -10339060, 8720394, 7851200, 2732136,
+3245922, -149787, 5014375, -8008504, 13080323, -6628745, -7905961, -6396817, -4458176, 17811766,
+4735202, 3705483, -19459960, -10666014, -16013786, 1154809, -1785096, -1583769, -15201500, -21009906,
+-693100, 9430674, -5279052, 2682207, -1477469, -1446330, 5172215, -7322919, -3237869, -3343632,
+6260989, 1049046, -4796942, -82678, -872952, -127238, -2343979, -4412542, 970126, 7015292,
+-3549254, -2316061, -4636417, -2057826, -3291556, -1556389, 2934000, -1044214, 4716948, -1612223,
+-1200443, -2794950, -2216203, 7378217, -918586, -504659, -3654480, -568546, 4200478, 1188095,
+-5541045, 1206886, 237834, 1553704, 19372450, 22798760, -5905580, 6365142, -1720134, -6738267,
+1270237, -15365246, -9509058, -730144, -3132105, 30593588, -13841606, 3867618, -19523848, -2917357,
+11838540, -5051956, -10887742, -11429982, -4206384, 4633196, 6009733, -818728, -1020592, -12840342,
+2970507, 8892193, 4475356, 5429913, 1593433, 1944547, -7505456, -2500208, 4962298, 1779727,
+-54224, 508954, -9044664, 3955128, -9516574, -1592359, -291521, 2699924, -10562398, -1139240,
+5114233, 7494181, -12029667, -6343667, 21240760, -8235063, -16823924, 14045617, -13697188, -4361003,
+-6085432, -2508261, -10526965, -7327751, -2248416, -10616622, -15118822, 24245090, 13361643, 10773389,
+7363722, -9498857, -3738232, -6426345, 6781217, -11497627, 8056822, -6163815, 3436511, 8084202,
+5261335, 1592359, -15570867, 15152108, -18591840, -4924717, -18026514, -7358890, 11785390, -748935,
+6664179, 13542569, 4274030, -1442572, 2598455, -4813585, 212064, -1510218, -5197448, 6082748,
+-2192044, -2907693, 6971269, 3664144, -1920924, 418759, 265214, 1057099, -3226594, 3000572,
+903554, 1589138, -3850975, 2526515, -1821603, 6601902, -3046743, 4647692, -1490354, -2388002,
+6997039, -4787278, -2121177, -4289599, 2779381, 6922951, 3153043, -2056753, 3233037, -2882997,
+3303904, 4798016, -5348308, -12776454, -1011465, 32073742, -14435922, 13919452, -28753732, 7852811,
+-18295486, -3464965, 10129680, -951872, 6475200, 10616622, 8456254, -12565464, 9286793, 1883343,
+6849399, -2734821, 9524627, 8838506, -2014877, 1822140, 5700496, 6455336, -9281424, -3206193,
+-13508746, -1704565, 11787538, 279173, -5700496, 1182190, 4315369, 790274, -4963372, -9625022,
+2367601, -6521371, 6126234, -6163815, 22774600, -2184528, -12499429, -14062260, 3085934, -7741142,
+7117835, -15767362, -12382391, -16018617, 3600256, -13537200, -3293166, -19408958, 13763223, 2788508,
+9235790, 5690832, -20959440, 1546188, -1942936, -7879655, -11747272, -3253438, -10014790, -12598213,
+-6992744, 5746666, 8184060, 11955041, -7008850, 1613297, 5129265, -17613660, 7975755, -12091407,
+-1173600, 9824738, 4132832, 3924526, 1759863, 20255602, -11728482, -4356708, -4514011, 5252745,
+-17429514, 1293322, -1491427, -257161, 11179263, 6452115, 5486284, 1921998, -4312147, 591632,
+-2182380, 8093329, -3245922, -1158031, -4702989, 9184788, 3635690, -3368328, 2461553, -8340290,
+5575405, 2772938, 4366908, 600222, -1734630, 5089536, 9376987, 3099356, -4693326, -6412923,
+-2660195, 2267206, -6498286, -1597191, -9834938, -7243999, -3929895, -148713, -5452998, 3766686,
+-4318053, 9404368, -7629473, -312996, -139050, -26712550, -7680476, 30117384, 26656714, 15009300,
+-12801150, 13238700, 19954954, -13094282, 17636746, -14099304, 16289737, 3894999, -1017907, 5415954,
+-279710, 8607651, -12746926, -3572339, -5713917, 6574521, -12083354, -10844792, 17154100, -1574106,
+-3495567, 1687385, -16448651, -293668, 26630408, 14561013, 3085934, -177167, 5724655, 25210384,
+10790568, 460635, 4298726, -6877854, -2923799, -5908802, 10859825, -5519570, 7272990, 1440962,
+12958453, -15203110, -262530, -837519, 451508, -4226248, 7255811, 11668352, -2674154, -3212099,
+11746736, 1427003, 1503775, 26579406, 4220342, 448824, -12087649, 5449240, -8978629, 12359305,
+-14139032, -12479027, 1973538, -12290049, -13191992, -20120312, 5461588, -6651294, 10474888, -3329674,
+5928666, -29427506, 6058588, -9886478, -17870822, 9432285, 12403866, 6579890, 3863860, 2352032,
+5223217, 8003135, -3787088, -4461934, -5403069, -237297, -5930276, 3847217, 813359, -8412230,
+-5865852, 5013838, 2940979, 511101, 8750996, -2923799, -886911, -6817724, -1449015, 180389,
+3638374, 2424509, -5817533, -3433290, -1595044, -6898791, -1311576, -6467684, 2677912, 1940788,
+7871065, 5507222, -541166, -3025268, 10737, 208843, -2229088, -326954, -8196408, -1299765,
+3370476, 3808026, 1047972, -1218160, 7915088, 1486059, 22325776, -34360812, 14414447, 15025943,
+-24427626, -2493229, -20931524, -6908455, -18792092, -8500277, 21489868, -7360500, -1577327, -15117211,
+-2937221, 3468186, -22408992, -876710, 14305462, -27666568, 1008780, -18891950, -10204842, 374736,
+2028835, -12513387, -10057740, -10486163, -3031710, -9016210, -591095, 4795868, -2731062, 7013145,
+-13507135, -8608725, 18015240, -8439611, 9749576, -10733123, 10143639, 9291088, 1571958, 2476049,
+9446244, 443992, 13466870, 17059074, -3233037, 2523293, 25334402, 1502702, 13009993, -918586,
+-10107132, -19989852, 3338800, 13879187, -22072910, 288837, -12987981, -6815040, -28618440, 12357158,
+18850074, -4933844, 9071508, -4632122, 20500416, 22713398, -1848983, -22491134, -21877490, 31169114,
+-24300388, 9093520, 3573950, 3239479, 23294292, -9928891, 37965900, -632971, -8644159, -9900436,
+-6882685, 6078453, -2411087, -2896419, -260919, 9816685, -2468533, -6167573, 8194798, -2960306,
+4117800, -7550016, -4589710, 7189239, 522375, 10741713, -3574487, 4576825, -7932268, -2249489,
+-10843719, 2245194, 4372814, 5371931, 1007707, 5519033, 492311, -1677185, 5824513, -9146670,
+6026376, -7756174, -2806761, 4727149, -9578851, -2398202, -5512591, -16001438, -4328254, 1065689,
+5749888, -7808251, -4114579, -6864432, -2280091, 1694365, 6299107, 37312528, 42050952, -2485712,
+-31717260, 31323734, -34675420, 4884452, 14702747, 3642132, -3712999, -16000901, 18013630, -8068096,
+-6457484, -16294569, -9477919, -5083094, -20337744, -11193222, -9090835, -5090073, -3343095, 14119168,
+-207769, 12203076, 89657, -5280663, -17814450, -19519552, -4929549, -716723, -263067, -2967823,
+-7297150, -8435853, 9336722, 22472880, -12214350, 7737384, -7626788, -7864622, 8929237, -8712341,
+-14105746, 31550830, -3485903, 2896419, 1547799, -17637284, -3878356, -3703873, 8937827, -22783728,
+-10088878, 24089398, 3874061, -10249939, 13094282, 24482388, -13930190, -17253958, 8959839, -14627585,
+236760, -27371290, 8833674, 23261006, -2381559, 12128451, 7086159, 4061429, 26692148, 8369281,
+-118112, 15381888, -2233383, -2143726, 9421011, 10084046, -38708928, 3528316, -16833588, 13677860,
+-629213, 514859, 9630927, -2925410, -3694746, -5104569, 5189394, 1964411, -3782256, 5158256,
+-5534602, 549219, -2935073, -7483981, 3441880, -3753802, 8373576, 4589173, -127775, 25770,
+2308545, -2232846, 4964446, 2416456, 1562294, 2011118, -1388348, 1821066, -3331821, -6501507,
+-3545496, -1697586, 909996, -8453569, 6887517, 4603668, 360240, 2496450, -5651103, 7899519,
+983548, -4712653, 2892661, 3402151, -10095321, -2105608, 1034013, -824097, 164283, 1833951,
+1286343, -51167020, -35837208, 14963666, -15180025, -14304389, -43524124, -12553653, 9295920, 3608846,
+-8563091, -24197308, -299037, 12287365, -884763, 1682554, 12729209, 22596896, -19572702, 51424716,
+-13217762, -17052630, -5182415, -2871186, 246961, -20328080, 478889, -3563749, 10873783, -6852621,
+15384036, -6345814, -13066364, 5382131, 6350646, -11662984, 12764106, -39139500, 324270, -3115462,
+15641734, 18913426, -13676786, 17638894, -6753299, 5057324, -8413841, -2807835, -5170604, 14117021,
+-1877438, 18581102, 29010356, -25224342, -7048578, 13628468, -17000018, 10309532, -19313394, -10647224,
+-9612674, -11304354, -19717122, -10103911, 9193377, 7514582, 15129022, 19638202, 14263586, -23775866,
+2971581, 4405563, 5657546, 4808753, 15197205, -7438347, -16086263, 9207336, -4192962, -12568685,
+2443837, -21533892, -8922795, -18758806, 1702418, 11055783, -6848862, 10625749, 5686000, -642635,
+-4093641, -317828, -16738561, -6277095, 5515275, 2779918, 3625489, 1151588, 1848983, 1487669,
+5165772, 1401233, -11257646, -1582696, 1655710, -1144609, 2864206, -5158256, -4743255, -10989748,
+2778844, 9690520, -11067594, -7770133, 5616744, -2814277, -11296301, 7384660, -5532992, -4531728,
+6666863, -536871, -2168422, -3473018, -5060009, -6700149, -7123740, -1864016, -6076305, -3629247,
+-3169686, 4789426, -417686, 7146289, -10640781, -34854732, 26303454, -44617196, 31354336, -4498978,
+-19958714, -17031156, -19010062, -12875238, -10023917, 953483, 22985054, -1867237, -19275814, 20467130,
+29008746, -44532368, -11896523, 3098819, -3690451, -6953552, -2237141, -6185827, -7921531, -12952011,
+16510928, -5801964, -12371116, -21195664, -21068426, 20738786, 5392332, -3808026, -2306934, 8053,
+-4658429, -5661304, 4558034, -18649284, 10139881, 21198348, 15819438, 9865003, 20236276, 23552526,
+-13566191, 5007932, -19520090, 21068962, -12089796, -3485366, -145492, -30772904, 9953050, 25303800,
+4279935, -10429254, -8496519, 33086280, -13367012, -14317810, 9251896, -33792264, -3987877, -16774532,
+682900, -33043330, 13756780, 5714454, 13480829, -53601728, -45995880, 7486128, -16103980, -10798085,
+-6702297, -35908612, 11828877, -21240760, -23189602, 17428978, -15624017, -9220221, 7394323, -3787088,
+-7060926, -1319629, -1997697, 7485055, -17749490, -8377871, -17128330, 13422, -7558606, 3406983,
+-2505040, -13517336, -5593121, 4734665, -938987, 955093, 3543885, -14799384, 1822677, -18745922,
+8562017, 2822867, -13659607, 4312684, -16235513, -3502546, -5988258, 1199907, 8498130, -6395743,
+8795019, -4743255, 15023796, -6919729, 9412421, -5304285, -1753957, -493384, -1913945, 3059091,
+-1639604, -11811, -1317481, -3433290, -51003, 5417028, -1598802, -2336999, -1972464, 1732482,
+-2006824, -2037425, -1535451, -967978, 375810, -964757, -751619, -862752, -1945620, -807454,
+933082, -42413, 3280281, 39715024, -54683524, 56120728, 16663399, -1654099, 4861366, -40119288,
+8587787, 19184546, -6839199, 47834124, -13303661, 20818780, -16494822, 52669184, -1612223, -6844031,
+-19772418, -7119445, 7944079, -5071820, 21562884, 16727287, -5280126, 1628866, -20329154, 8076686,
+21366388, 21538188, -22936736, 9931038, -4294431, 22979686, -5872294, 15006079, -13456669, -10604274,
+-30691836, 2272575, -19334870, -28843390, 41489920, -18101140, -3326989, -7693360, -9575630, 5721434,
+3720516, 14705968, -6568079, 22509924, 2418067, 40734008, 15912317, 45071388, 38515120, -3691525,
+25861072, 19622632, -6400575, 23061290, 31538482, -13302587, -30837328, 17842368, 11838004, 25603374,
+13432510, -2429878, 24159, -33253784, -2823941, -9753871, -11756936, 44394392, -4734665, -440234,
+55413132, 36870148, 20185810, 24641838, 13016435, 1612223, 6663642, 31982474, 763430, -8349417,
+9858024, 26874148, 13016435, 15327128, 7960185, 18598282, -594853, 5364951, 7328825, 13024488,
+4853313, 3314641, 2747169, 1483374, 10950019, 15821586, 7155953, 20906828, 1950452, 12904229,
+13246753, 23567560, 92342, 16132971, 14777909, 3060164, 12545063, 672162, 3165391, -3989488,
+5475547, 6553047, 3746285, 3393561, 1370632, -2818036, 1196148, 5516886, -2384244, 2996277,
+11260867, -2362232, 17067664, -38375532, 73679088, -9994926, -8200167, -4698158, 53602804, -32916092,
+26883810, -36037996, 34144992, 6917045, -6666863, 879931, 19994684, -8586713, 18639622, -8656507,
+-177704, 37667400, 11534672, -9630390, -164819, 9415105, 7364259, -36509908, 9710921, -13285944,
+-3358128, -19226958, 18564996, 17721572, 2698850, 8419210, 31372588, -10398653, -50119048, 12005507,
+32687386, -12658879, -32999308, 8791261, 23365158, 7998303, -99858, -39355860, -19039590, -23272280,
+21762062, 8961986, 22413286, -47374028, 2867965, -8662412, -52623548, -13493177, 7519951, 23863376,
+32824288, -17457968, 61477624, 12139725, 838592, -12582644, -25145422, -17078938, 11374147, -28434830,
+57898308, -18456548, 2108829, 34593276, -22965728, 21188684, -22450868, -12490302, 47940424, -24234352,
+31312996, 29386704, 10256382, 13510357, -42163692, -4777078, -2570538, -14386530, 19293530, 18006114,
+6803228, 5667210, 18742700, -4291746, 7047505, -2029909, 5281736, -7948911, 6338835, -1124208,
+5269925, 4757750, 783295, -13935558, -2941516, 2284386, -5636608, -1347009, 9628780, 5987722,
+16208133, -7249368, 2957085, -27074400, -23654532, -2947958, -2015413, 16746077, 11667279, -7383049,
+-6383395, -21480742, -718333, 7984344, -4198331, 413391, 4560719, -6441377, 4235375, -15681999,
+214748, -4942434, -7036767, 11146514, -43320652, 24714852, 15812459, 24719684, -9877351, -7035694,
+10007811, 59593, 2843805, 912681, 4881767, 1155346, -6820945, 31977642, -7473780, -22071836,
+9319005, -594853, -19432580, 6747394, 4478577, 13187697, -8972187, -14712947, 15789910, -12723304,
+-1750199, -3801583, 12956306, -22390202, 7619809, -13896904, 11320997, -19726248, 6985228, -6626598,
+3370476, 43184284, -29735132, 5614059, 9480603, -26796300, 9688909, 12326019, -19873350, -4152160,
+-7632157, 35913444, 2992519, -41576356, 24846922, -33611876, 6072547, 17374216, -16162499, 19876034,
+-24112484, -19866372, 27282170, -4663261, 11569568, -40963252, 7625178, 8835285, -2219961, -6332393,
+-388695, 16602196, 577673, -54469312, 32937030, -3445638, 12617540, -14319958, -16703665, 51912732,
+-1438277, -33228014, 2820720, 16754667, 3774203, -50507204, 1737314, 46821048, -8635569, -21681532,
+5067525, 22641994, -3090229, 61740, -4053912, -2356863, 3173444, -8210904, -4859219, 15370077,
+-6752763, -435402, -9125195, 9010305, 13653701, -2476586, -2140504, 14525043, 4683125, -10004053,
+-2458332, 6251862, 4112431, -8499740, 4467840, 9991168, -8431021, 2136209, 2420751, 6434935,
+-15626165, 977642, 9657771, 3666828, -10916733, 600222, 7575249, 1255204, -8127152, -5432060,
+20485920, -7113540, -107075680, -227823856, -90900832, -171527568, -208907216, 73983496, -857383, 75884016,
+288629856, 252064112, 143390704, 276215776, 154007856, 17377438, 95428808, 58706836, -104518568, -73883104,
+-21790516, -115852984, -140099680, -46664284, -70968968, -110911088, -27918898, -5094368, -141215296, -97320736,
+-14810121, -85860152, -111140872, -32447942, -54588496, -120822264, -23268522, 12206297, -67799816, -51719996,
+50965692, -18460844, -72706280, 15149960, 47976396, -35919348, 29376502, 105641160, -15632607, -28304908,
+104542192, 55764780, -26240640, 173695456, 236126032, 146938880, 248988384, 372514848, 286524800, 272667072,
+398497792, 345453344, 254232000, 311948832, 283574688, 180363936, 159536016, 85826328, -29753386, -124581968,
+-222852432, -316567552, -376702976, -472311104, -504623776, -532122816, -602827648, -602401344, -455308416, -465896032,
+-424299808, -191122816, -147904720, -143854560, 63703492, 121643136, 2567317, 126785824, 175977696, 60209536,
+83857088, 165034656, 123339112, 71798968, 116486496, 144235744, 61284888, 89785216, 179014240, 106449688,
+70076152, 164971312, 123714384, 49942416, 107213656, 122490856, 15721191, 63251448, 147455360, 84536768,
+101431024, 207883392, 195565424, 206089712, 266861344, 268735552, 215572992, 203900896, 174033680, 106267152,
+76625440, 40767828, -6388764, -41973104, -113781200, -155447744, -210108720, -279958848, -311737856, -352222752,
+-410007232, -390456000, -350705024, -309728896, -226481680, -148488832, -78776144, -29069950, 12165495, 25860534,
+31632972, 40833328, 43250320, 36562520, 39009040, 43104828, 41725072, 46758772, 60379188, 67723584,
+72143104, 80195096, 81867984, 80804440, 77153720, 57716844, 36150740, 23155780, 19529216, 19545322,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-7162395,
-207232, 5693516, 3911105, 3934727, 2473901, 1562294, -2245194, 85362, -2554969, 6091338,
-3726958, 1462436, 880468, 879395, -77309, -1927367, 2989834, 4190814, 4025995, 2467459,
--3070365, -4425427, -4846871, -4598836, -487479, 2400887, -4738960, 3950833, -957241, 6906308,
--1156420, 4387846, 52613, -5728413, 1633698, -737661, 4628364, 319975, -547071, -2337536,
--3929358, 353261, 2209224, -5029944, -6883222, 4803921, -3989488, -3671123, -3470871, 2707440,
--2739116, 1151588, -1227824, -339302, -4056060, -1223529, -2761127, -4027606, 1321239, 3125126,
--1165547, -4430796, -869194, -904628, -2227478, -3830574, -299574, -3115999, -3672734, -664109,
-250182, 862752, -1246614, 538482, -682900, -5179194, -1145683, 637266, -1433445, -1329829,
--1626719, 1655710, -1985886, 1705102, -143345, 294205, 653372, -1268089, 1243930, 10201,
--694174, 307627, -341450, -1076963, 174483, 805306, -555125, -471373, -52076, 1301912,
-587337, 182536, 200253, 701690, 475131, 815507, 230854, 1049583, -876173, -386547,
--396748, 13487808, -4713727, -3085934, -4202089, -2887292, 314606, -9025874, 1523640, -4478041,
--8836358, -1888175, 7573638, -5447093, 1476932, -643171, 2541010, 3825742, 4093104, 6615324,
--1416802, -3790846, 1687385, 1597728, -3038689, -439160, -2053531, -1336272, 813359, -3473018,
--2171106, -505196, -4372277, -5131949, 2622078, 3967476, -2353105, -5897527, -1034013, -1382980,
-834834, 4764730, 315143, -1974074, -317291, 6379100, 795106, -3903589, -3764002, 1651415,
-1207960, 5091684, 2891050, -333934, -4861366, 272194, -286152, 4179003, -4474282, -1502702,
-2457795, 4857071, -1369558, 431644, -3679176, -2065879, 2254858, 140123, 475131, 1319092,
--1430761, 1768990, 523986, 2164127, 1330903, 836982, 8444443, 2587181, -346282, -1138166,
--2489471, 3621731, 2246805, 3914326, 2787434, 982474, 1037772, -817118, 775242, -1581085,
--1688996, -1296006, 443455, -597537, -413391, -255551, 1362578, 226023, 1780801, 168577,
--564251, -222265, -170725, -245887, 580357, 418759, 719944, -9894531, -2320356, -4665945,
-4539781, 1154273, 117038, 3230889, -1905892, -7646653, -4027069, 5094368, -268435, 5247913,
--380105, -2957085, 5817533, 2190970, 12741020, -2386928, 5537824, 816044, -5986648, 1520418,
--5083094, 3309272, 1180042, 1308354, -5432597, 2734821, -936840, -1913408, 2246268, 8677445,
-3234647, -38655, -6942278, 6041945, -1258425, 38118, 4279935, -6315213, -1170379, 4374961,
--2574833, -2246268, -7128572, -7787313, -580894, 4735202, 2793876, -3117073, -74088, 3088618,
-3867618, 1546725, -779537, -1490891, -6830072, 3229816, 8524973, 3882651, -2443300, -1189706,
-2706366, 4072703, -308164, -1257352, 1024887, -5621039, -1032403, -3936338, -1833414, -354872,
--2413235, 6497749, 5666136, -1679332, 2848100, 2109903, -1072668, -3823595, 912144, -2957622,
--1114544, 884763, -3817152, -807991, 390305, -1102733, 1095754, 1645509, -2439542, -870268,
--155156, 172872, -1912871, 513785, -882079, 1452236, -1695975, 1604170, -1158031, 390842,
-267362, -825171, 649614, 290984, -614717, 565862, 632434, 652298, -1257889, -588947,
-31139, -1785096, 239444, 1063541, -350577, -7442105, 8316131, -7164543, 7594576, -69793,
--6052683, -14278082, -5621576, -4096862, 2142115, 7487739, 5862631, -1800128, -1143535, -1737851,
--4092030, -1176821, -4598836, 1582159, 1699733, 2840584, 4713190, 2795487, 9011915, 32749,
-1825898, -3167002, -734439, -2142652, 3317325, 1007170, -4180077, -6052683, 258772, -4343286,
-555661, 4125853, -6845641, 4840428, -11525008, -3164854, -8545374, 1477469, -513785, 160524,
--3340411, -4506495, 1614371, 4107599, 2946348, 1101122, -6861211, 2119566, -4733054, -1786706,
--1345935, -9349070, -3639985, 2832531, 3645890, -295816, -6433861, 1139777, 2474975, -1219771,
--1258425, 804770, 5647882, 2049773, -1234266, -1772211, 1020055, -13327284, 992137, 3420405,
-3210488, 9447854, 1335198, -5244692, 5946919, -2035815, 922881, 2114735, 1992865, -1327145,
--4367445, 284005, 2617783, 2503966, 4034585, -1219234, -1279363, 734976, -731755, -470836,
-668404, -1104880, 406948, 952409, -519691, -2115808, -1619740, -49929, 281857, 598074,
--1001801, 2069637, -1034550, -555125, 1341640, 1565516, -420370, -2348273, -1226750, 980863,
--1184337, -617402, -709743, 543313, 1879585, -313533, 9509594, -2461016, 99321, 6261526,
--3285650, -3071975, 9380745, -7211250, -17013440, -11178189, -6600291, 10164040, 4304094, 1377074,
--9869835, 10371809, -4525822, 2882460, -2731062, 4052302, 4973572, -447750, 91268, -128312,
--1728724, -5417028, -4377646, -1357747, 528818, 4689568, 2640868, 7345468, 3487514, -3257196,
--1756642, 6534256, -4768488, 8025684, -6487011, 1698123, 3502009, 2250026, -5268315, 7070590,
--731218, 7599945, 10024991, 1506997, -4059281, -3934190, 4214974, -4875325, -10264972, -2671470,
-2107755, -6597070, 3704946, 3003793, -2219424, -4114579, -1781875, -1593970, 1927367, -821413,
--5799280, -2224256, 9901510, 7962870, 4261145, -11876658, -11678016, -6387153, 11121818, 5630702,
--920197, 1529008, -5551782, 7029251, -361851, -5512591, -1951526, 705985, -586800, -2775086,
--446677, -2202781, -1198296, 2065879, 3034931, -1826435, -76236, 252866, 473520, 420370,
--3103651, 3495567, -288300, -3516505, -2111513, -506269, -1131187, 39728, -297963, -457951,
--408022, 814970, 132070, -1631551, -146029, 600759, -433792, -2523293, -1743220, -2355790,
--857920, 1651415, 4787278, 7050189, -394600, 2717641, -11097122, -3745748, 1811939, 3795141,
--13762686, -1524177, 5918465, -4145717, -8956617, 5577015, -10417443, -7639136, -4134443, 909996,
--3787088, -2570538, -346282, 7737921, -6583111, 1716376, -2093797, -2734284, -5543729, -1529545,
--8089034, -2408403, -250719, 1540820, -5660230, -1194001, -3576097, 511638, -1831804, -2507187,
-1469416, 6366216, 1604170, -3319473, 3150359, -4862977, -1222992, 1862405, -1866163, 3171833,
--1051730, -359167, -22427246, 1487132, -7784628, 3792993, 3224984, 4950487, -12351789, -12584254,
-1681480, 439160, 2922188, 82141, 6689412, -2720325, 3628174, 4514548, -2168959, 10530186,
--3312494, -6857452, -1479079, -5676336, -214748, -11230266, 148176, 5554467, 2585034, 8381629,
--2340757, -2295123, 3684008, -4433480, 1031866, 2727304, 5393405, -2900177, 3086471, -4400194,
-853088, 172872, 564788, -2170032, -1050656, -1618129, 1708860, -2012729, -3215320, -67646,
--1527398, -2000381, -736050, -1567663, -701153, -986769, 896574, -1568200, 889595, -3164317,
--355945, -1894618, -821949, 252329, 193810, -449898, -1531156, 137976, 8677981, -17501992,
-4685810, 746251, 4857608, 7044820, 1275605, -6789270, -14910516, 1061931, -6029061, 11323144,
--4612795, 2335925, 821413, 2418604, 8541616, -3774203, -263604, -3964255, -2234994, 2231236,
--2157147, 8015483, 5969468, 1712081, -1701881, 110059, 5365488, -552977, 2589865, -124017,
--4424353, 3910031, -1137630, -3313567, 4738960, 8027831, 22012, 3138547, 562104, -5327907,
--3322694, 9747965, -4708895, 4662187, 7100655, -9422085, 6720550, 3593277, 3411815, -4183835,
-6891812, 1983738, -1191317, 8813810, 325881, -110059, -4131222, -2355790, -4295, -3861176,
--9429601, -2486249, 9630927, 7258495, 7923678, -890669, -8356396, 3461744, 10103374, -1893007,
--7154879, -373125, -5055177, -1305133, -839129, 7859790, -753767, 4031364, -1035087, 357556,
--5545877, 1457605, -954557, 2166274, 2155000, -3829500, 2594697, -6055904, 595390, 2167885,
-158914, -1570347, -104153, 1189706, -4190278, -783832, -3943317, 1217086, -2493229, -1580011,
--2415919, -4056060, -2668249, -1047972, 585189, -1250372, -98784, 1269163, 428423, -1069984,
--751619, -1224066, 2319819, 66572, 838056, 1492501, 934155, 1046361, -542240, 1969243,
--300648, 34897, 824634, -788663, -1089311, 507880, 2088965, -8311299, -2452963, -13399224,
--3919158, -7773354, -9165460, -8690866, -3080029, 11686069, 12716861, 17521856, 3916473, -6689949,
--4117800, 14502494, -57445, -3387119, 11110007, -1168768, 481573, -17368848, 7849053, 4362076,
--11590506, 16049756, -2240899, 7206419, -1953673, 3764002, 7132867, 8053, 12613245, 4830228,
-3576097, -1469416, -4479651, 1202591, 7639673, -2059437, 2265595, 3572339, 10119480, -482647,
--3069828, 6518150, -7672959, -4826470, 3461744, 11166378, -4960151, -5999533, -1896765, 9200357,
-77846, 1293322, -3446711, -1582159, 3297998, 4848481, 423591, -3981972, -12743705, 1502165,
-3746285, 12117713, 3517578, -986769, 9307194, 16634408, -3434363, 5822365, 3921842, 6886980,
--1348083, -5860483, 3423626, -13806709, -3758633, -2100776, -4482335, -2798708, 7177964, 2471217,
--8939438, -5280126, 248571, -2925947, -325881, -6844568, -214748, -2350958, -1728724, -948651,
-680215, -1912871, -482110, -937377, 1457605, -544924, 1336809, -1876901, -62277, 280784,
-615791, 2765422, 77309, -1072131, 2582886, 3776887, -309238, -2329483, -1472100, -3278134,
--2866354, 3921842, -673773, 1053341, 1433982, 1385127, 1294396, -3019362, 1466195, -1100585,
--15169824, 21242908, -10710038, 4822712, -786516, -7327214, 16192027, 3812857, 2009508, -17114908,
-4442070, -6826314, -7789997, 1901597, -7603703, 8658654, 5240397, -1455457, 1735704, -4193499,
--1894081, -6219650, -3999152, -7470022, -11535208, -2842195, -8071318, -2166811, 4391604, -3262028,
--4344897, 9134859, 5740761, 9168145, -7516730, -847719, -1510218, -8257612, 81604, -4390531,
--20556788, 1800128, 371515, -3178813, 7132867, -744640, 7868917, 6666863, 2460480, 12368432,
-11004243, -10865730, -2978560, 91268, -401579, 3868155, 1479616, 10516227, -2245731, 16796544,
--22549, -9904731, -8038568, 1286343, 3031173, 3436511, 12208981, 3207804, 3056406, 11477226,
-15282567, 625992, -9376450, -8879845, -840740, -2979097, -2166274, 19745038, 1415729, -8967892,
-6415071, -7851737, 7506529, 1239635, -1558536, -2347737, -6032282, 1679332, 1996623, -893890,
-1765232, 3330747, 1853815, 2269890, -886911, -839129, 217970, -1103807, -930934, 2238215,
-884226, 1588064, 1996623, 3539590, 200253, -1662152, 3294240, 1873680, 635655, 753230,
--682900, 500364, -125628, 3525631, 5501316, -2970507, 2624762, -651224, 2287607, 297427,
-487479, 4692789, -244813, 454730, 402653, 3855270, 2558727, 2820720, 12743168, 976568,
-8587787, -9400610, 4203163, 752156, -699543, 5671505, 13474386, -3719442, -1226750, 12406013,
--16411607, -9148280, -7169374, -18799072, 3689377, -5964099, -2652679, 2253784, -12833362, 14053670,
-10596758, 14928233, 6693707, -9300215, 871878, 592169, 11164767, -2070174, -369367, -439697,
--6947647, 552440, -4090956, 6241661, -7371775, -2788508, -2495376, -3186866, -8633421, 4050691,
--12656195, -1934346, -906238, 7937637, 4685810, 1054415, 119722, -2218351, 907849, 117575,
-6574521, 1523103, 1894081, -1056562, -19809462, -9205726, 2277407, 8201240, 9817221, -15507516,
-10357851, 3077881, -6124087, 1490891, 3339337, -3675955, 15003395, 139586, 2863670, -3542811,
--20944408, -7179038, -9547175, -2481954, 369367, -5806796, 2996814, 4456566, -4312147, -897648,
-13444858, 380105, 6844031, -8253317, 1030255, -134218, 7733089, 6842420, 4918275, -1863479,
-1589138, 5618354, 3402151, -247497, 5912560, 5749351, 6278706, 817654, 2389076, 2157147,
-1014686, -814433, -813359, 5433134, 1016834, -2865280, 478889, -416612, 2984466, -2084670,
-944356, 2834679, -2212982, 4406100, 1519882, -601832, 362925, -3803194, 2794950, 2825015,
--459562, -843424, -2335925, -3149822, 19393388, 3082176, 7833484, -11696270, -10590852, 6075231,
-10060961, 1169305, -3572876, 18610630, 5848672, 62277, -5168457, 4041027, -1454383, -2073396,
--704912, -3215857, 857920, -6209986, -14781667, 4852776, 1506997, 4488778, 1454920, 8195335,
-2487860, -8850854, -17993228, 455267, 1333587, -1458141, -15748034, -7692287, -2380486, 4395362,
--3448859, 1750199, -13777718, 658741, -3089155, 76773, 1365263, 3809636, -1499481, -12962748,
--11928198, -7434052, 4988068, 3688303, -3191161, -2699924, -20783346, -11761768, -437550, -20261508,
-18621368, -19130858, -5272073, -12390981, 19972134, 6400038, -14104673, 7072201, -1656247, 7547332,
--12022150, -3984656, 500364, 8121783, -11415486, -4566087, -3896609, -11593727, 797790, 7683697,
--1476395, -2137820, 13833016, -21971442, 17267380, -2879239, 3626563, -9914932, 6924024, -1123134,
-5510443, -5036386, 253940, 4379793, 4745402, -1386201, -2435247, 14496, 459562, 564788,
--1646583, 5401458, 5651103, 3999152, 1013075, 4054449, -420370, 4986994, -1877975, 907312,
--252866, -1892470, -1963337, 335544, -4163434, -5000953, -1488743, -319438, 5015448, -314069,
--868657, -1392106, -3529390, 2447595, -1163399, -1830730, -1298154, 2598992, -597000, -5667746,
--805843, 2004676, 428960, -546535, 17034378, 37327024, -5081483, -11712913, -10979547, -9698036,
--13892072, 2230699, -23611582, -263604, -18268106, -8475581, 5550709, 11370389, 6492917, -8254391,
--1188095, 10812580, -809601, 12488154, -7541963, -7612293, -6725919, 5856188, -4454418, -5791227,
-1946694, -6931004, -7061463, 8443369, 20024748, 7515119, 8527121, 3738232, -11894912, -2872796,
--9664750, -9143985, -1506997, -1715303, -7609072, -12152073, -24329380, -2342905, -8874476, 3066607,
--4547297, 9012452, 8364449, 4705137, 8757975, 6126771, -996969, 16912508, 24182814, 5714991,
--28456842, 5697274, -5150203, -16711718, 2253784, 8041790, 3975529, 636729, 7740605, -556198,
--13589277, 736587, 6353867, -13651017, -7181186, -12797392, -23609972, 18440978, 2506114, -1471026,
-12883291, 10005126, 666794, 651224, 12734041, -17480516, -7617125, 1854889, 9381282, 7866233,
-12075301, 8638253, -7212324, -4252555, -1630477, -2856153, -1078037, -1835562, -3519726, -4655208,
--7107097, -7221988, -5133023, -2821794, -796716, 3411815, -1954210, -1545115, -8133058, -5644124,
-810675, 4152697, 2903398, 1650341, 1685238, 1110786, -1165010, -4245575, -2037425, -2689723,
--2322504, 695785, -4483409, 815507, -3202435, 3273839, -402653, -1279900, -3067144, 2686502,
--2821794, -1002338, 5608154, -2435783, -193274, 27567248, -20399484, 23830090, -1989107, -2851322,
--12119861, -4471598, -12040404, -10229001, 12733504, -11309723, 6586869, 28579250, 10631655, -4221416,
--12883828, -10810970, 12754442, -10404558, -17621178, -7248831, 1819992, 1699196, -20118700, 1444183,
--6094559, 10516764, -6346888, -277025, 2347737, 30056182, -7249905, -9575630, 14586783, -11578695,
-17520246, -10215043, 12833362, 2170569, -9242770, -8451422, 16287590, -20993264, 16025060, -9037685,
-1658394, -5011153, 8762807, -7248294, -3694209, -267362, -6455873, 30654256, -8791798, 20923470,
-8128226, 9604084, -130997, 7926362, 13429289, 15042586, -4109210, -14565845, 93416, 12421582,
-5014375, -2205466, -18321794, 24522116, -5118528, -16217260, -4482872, -9945534, 7683160, 10586021,
-442919, 17746268, -4784057, 9100499, -20155208, -3568044, -21507048, -6706592, -7860864, -494995,
-1207423, -4156455, 7696045, 2515240, -5795522, -9914395, -7339026, -2141041, -907312, -4976257,
--1055488, -1770063, 6090264, -1813013, 271120, -2318209, -9306120, -2831994, -3733400, 1129040,
--1540283, -5248987, -8127689, 3208878, -5490579, 2524367, 3624953, -5713917, -13939853, -3352222,
--2175938, -3741990, -4968204, 548682, -2317672, 1478543, 1646583, -6361921, -811749, -6405407,
-5928666, 3607236, -3337190, 1573569, -5572720, -31242128, -13332115, 19185618, -3777961, -7838852,
-22299470, 2151242, -11562052, 8469676, 12147778, 10307922, 1626182, -19210314, -7924215, 2958696,
-2861522, 10073846, 6674379, 11361262, -9798968, -7732015, 3832722, -2641942, 9320616, -18054432,
--3033321, -19530290, -6295885, 3570192, -2667712, -2425583, 20953534, 4391067, -15479599, -2319819,
-1272921, -15811922, -2120640, 812823, 9550934, 24098524, -8513699, 8081518, -13405130, 2061047,
--7878044, -10133438, 9829570, 21082384, -16656957, 1651415, 18766322, -8426726, -1712618, -6997576,
-12287365, 2999498, -15226196, -148176, -5311264, -4908611, -1504312, -7450158, 11368778, -26912266,
-5719286, 2296734, -11324755, 15135465, 23161148, 16384226, 44111460, 13414257, -11305428, -15626702,
--12943421, -7033009, 16195785, -5803038, 22487376, 2100776, 27381490, -32503238, -20867636, 9838159,
--5345087, -3331821, 13132399, -8829379, -1010391, 14001057, 6223408, 10394895, 15298137, 11985643,
--2594160, 4912906, -9362492, 367220, -367220, -6538551, -7194070, 4818954, -9911174, -816581,
-14967424, 1394254, -8952322, -11651173, 2159832, -14646912, -5415417, 15817291, 8191577, -2557116,
--3631932, 3066070, -2943663, -4957466, 1045288, -3613141, -5632313, -941135, -7728794, 5476620,
-4715874, 5245229, -2888903, -2035278, 3319473, 8095477, 22090090, -51231980, -1883343, 29466160,
--38884488, -1613297, 7842074, -40169756, 18219252, 5086315, 32485522, -3061238, 11582453, 9701794,
--35333624, -29218662, -11286100, -2676302, -17608292, -21674016, -11400991, 20359218, 14309220, 12403329,
-1458141, 2448668, 6530498, 1425929, -25616796, -9472550, -32928978, -10394358, 18646064, 5678484,
-12644384, 41776612, 10967736, 15897285, -508417, 8501888, 36786396, 27730456, 7829189, 18255222,
-16740172, 36735392, 30179662, -39654896, 25089588, -2047089, 24016384, 24480776, 10266046, 44070660,
-38915624, -21180094, 19331110, -83752, 18428630, -31871342, 3267933, 3664144, 1340567, -7055558,
-20463908, 22206592, -21174726, -7009387, -12380780, 7943005, -17531520, -21731998, 20762946, 35389992,
-13044889, 36823440, -10416906, 49961208, 48845588, 13833553, 25677462, -7239168, -12659953, 11671037,
-11426224, 5687074, 3996467, 3203509, 6689412, -6721087, -12444668, -8782671, -23481124, -24529632,
--9870909, 11751567, -199716, 10388989, 1903207, 6412923, 15140833, 18652506, -5863167, 8675297,
--786516, -7402376, -6222334, -5198521, -15447924, -6929930, 340913, -13219372, -4675609, -11875585,
--6608881, 2841658, 16988206, -7746511, 6160057, 5003637, -2789581, 9570261, 5517423, 7363185,
-259846, 12637404, 8012799, 5642514, -4915053, -7272990, -16315507, 23956254, 43021612, -5750961,
--58559196, -18611168, 6049999, -4451197, -9660992, -12735115, 260382, -33398202, -20054812, -27698780,
--4439386, -7976291, 9341554, -19712826, -5664525, 5539971, 9365176, -43487, 10409927, 20462834,
-4230543, 29444148, -18798534, 7259569, 1209033, 28114856, 7346005, -5239323, -28073516, 18911814,
--4817880, 25691958, -21352430, -16713865, -16174310, -8367670, -25881472, -3291019, -4469451, -24093692,
-13434658, 28043452, -13418552, 4414153, -36031016, 34956740, -10923712, -18547280, 15826954, 14166950,
--20602422, 2138357, -12837657, 4885526, -9400610, 43729748, -1588064, -3349538, -10675678, 76937360,
-1975148, -10001905, 32821604, 26730266, -27801324, 22126060, -34067144, -18526342, -35603132, 27643484,
--24499030, 13573707, 18719614, 15347529, -31569084, 40315784, -7187091, -51733416, -59533616, -22982370,
--7329362, -16806744, 13873818, 14168560, 23546622, 4366908, 2046015, -17186848, 17782238, 28441810,
-40920300, 11315091, -11751567, 4525822, 34810708, 6353867, -19256486, -4195646, 37141804, 9098351,
--22024056, -5117454, 18305150, 11199664, 16659104, 11853573, 23487566, 815507, 12870406, 5229660,
-16592532, 8535711, 26415122, 9465571, 16652662, -2605435, 5157719, 1938641, -2077154, 7767449,
--2465311, 9885941, 16393890, 3244848, 9460739, 1978369, 12328704, -27420144, -6700149, 22565758,
--16466905, -78799232, 5681705, 50727860, -30573188, -20366198, 40739912, -29553670, -1879048, -8352638,
-39101384, -67020816, 37539624, 22318260, -18891950, 7067369, 36672040, 26227754, -12794171, 15039902,
-6753836, -10147934, 17260936, -296353, 10475962, 15933792, -6736120, 3911105, -1685238, 7645579,
--9682467, -7730405, -598611, 13696651, -39756364, -19601156, 19804094, -4375498, -26356066, -31055834,
-5411122, 38857104, -16799764, -24661702, 19072876, 29015188, -6310381, 7376070, -5097053, 27038430,
--14614163, 40490804, -5450851, 190589, 22136262, 585726, 5102958, -28562070, 45081588, -23178864,
--28221156, 21527986, -29884382, -9753871, 5056250, 15034533, 41648296, -14646912, 25969520, -5157719,
-13595719, -70398808, -53948548, -9772661, -21029770, 10910291, 9747428, 26921392, -4227322, -5469641,
-31942208, -34833260, -775778, 22523346, 22095996, -7985418, 24618216, 3260417, -5247377, 35970,
--5467494, 23744190, -13104482, -1173063, 22980222, 5452461, -5216238, 9237401, -11419244, 3124589,
--875100, 579284, 9282498, 4536559, -13065827, -2794413, 4036733, -9962177, -14919106, -1074,
-10896332, 19384262, -16203301, 18949396, 6398965, -18515068, 15516643, 17998598, -8973260, -20991116,
-19488950, -9463424, 3577708, 10974178, -10710575, -27857158, 9162239, 7794829, -15574625, -14453102,
-1063004, 10867341, -12366821, -5913633, -26510148, -12553116, 19080930, -33013802, 31912680, -28142236,
--35243964, 19601694, -17153026, -11665668, 20032802, -15432891, 16694001, -12184822, 7641284, 39239896,
--35549980, -2791729, -5630702, 33013266, 4253628, 2886755, -31853624, -29928406, -10794327, -8927090,
--4862977, -9829570, 5616744, 1469416, -3488587, 4657892, 6875169, 3151969, 5279052, -6372658,
-15288473, -10362682, 14617384, -28388124, 737124, -23050016, -29791504, -17689360, 39003672, -17200808,
--17536888, -13117904, 8761196, -8105140, 17211008, 25177098, -26976690, 23634668, 4014721, -37205692,
--18763638, 76042936, 39318816, -58137752, -11165304, 36469640, -18913962, -21403970, 14519137, -18539226,
--40258340, 28418188, 12815109, -54660440, 22106734, 27259620, -32251984, -21399674, 32176284, -8239358,
--24702504, 5280126, 15820512, -39701604, 7173133, 6657736, 11040213, -30383672, -9251896, -2930778,
--9946071, -2396592, 1644436, 3015067, -18721226, 2564632, 26852136, 9072582, 1387811, 8605504,
--803159, -4863514, -15264851, -4992900, -8419747, -11339251, -25912612, 6446746, -14936823, -4436165,
-31048856, -28153510, -18491982, 22740242, -17071422, -6477348, -7588671, 10018548, -18469970, -6995965,
-28587302, 14908368, -14484777, 15844134, 8766028, -12482786, -8005282, 38955892, -31820876, -24895242,
-41561860, -673236, -33816424, 4142496, 20269562, -20263118, -42142220, 27422830, 3071975, -46788300,
-7590818, 12459700, -34216392, -1202054, 22332220, -6809671, -15444166, 11470784, 9104794, -23787140,
--2774549, 16692927, 48168596, 68131600, -26939108, 76244800, -5781026, -20592758, -15879568, -25523380,
--1951526, 12987981, 45060112, 1762010, 14024679, -11171210, -38472708, 948651, 1626719, 25712358,
-5051956, -29023242, 54573464, -23009214, 10362145, 24643448, -26888106, -21787832, -38459820, -16732119,
-24092620, 29969744, 36980204, -13685913, -89778240, 20145544, 47188804, 60421600, 51977156, -617402,
--25556130, -31743566, 11090679, 30891016, -19391778, -10202158, -79516488, -48686676, 43058656, 72255848,
-14999100, -1835562, -17294760, -31408558, -7183870, 20136954, -27708444, 11068668, -3755949, 45710264,
--1738388, 17899814, -88938576, -11212549, 1312113, 54871428, 42656004, -1043677, -26485452, -7266011,
-65371548, 29542396, -76237816, -94635848, -36768140, 19127100, 147301808, 15978889, -25315074, 20336670,
--39137352, 104565808, 32133872, -83118352, -51801600, -10297184, 74028592, 11154567, -30480310, -28407988,
--26085484, 21082920, 39981312, 19989314, -42538428, -3484292, -14453639, 35394288, -3566970, 21435108,
--7241315, -8930311, -28116466, 11134166, -8423505, -2953864, 22352084, -34612068, 20557860, -5166309,
--5007932, 225486, 16305843, 34474628, 17680232, 2406792, -6498286, 7354595, 0, 14033806,
-4900021, 15477988, 4139812, 3962644, -17127256, 8163659, 9511742, 6334003, 446140, 5221607,
-3570729, 15323370, 7540352, -12324409, 31393526, -36105104, 1153736, -14501957, 8379481, -22341346,
-21034602, 5851893, -11895449, -22530862, -11068131, -4236985, 6595459, -30760018, 7129109, -15038828,
--5853504, -24071144, -11341935, 19611358, -20558934, -7216619, -2812667, 9620727, 6483253, -7951595,
-11092290, -17590038, -1389959, 287226, 9493488, -11493332, 16790638, 12604118, -12751758, -14694157,
--5638219, 23948200, -17172352, 7625715, 17736604, 4047470, -17273822, -6520297, 7443715, -10746008,
-8058433, 892816, 3900367, -15850577, 3358128, -12865038, -561567, 12185359, 15239618, 11985106,
--8814347, 11445551, 1432372, -14057428, -2107218, 102005, 16950088, -4510253, 3570192, 14887967,
--3184718, -19040664, 26808112, -10732586, 15852724, 11805254, 2720862, 3928285, -11347304, -13717052,
-18455474, 3046743, 16231218, 5142150, 8828842, 4754529, -546535, -599685, -14248017, 1870995,
-3756486, 5285494, 5566278, -1474248, 6487011, 1414655, -918049, 2096481, 761820, 7069516,
--1928977, 5588290, -6612102, -1344325, -96637, 848793, -3770445, -1748589, 12446815, 8252243,
--2246805, -8635032, -10283762, -3412889, -4227322, 11848741, 1024350, -3094524, -7723962, -3527779,
-934155, -5921150, 13089450, 1617592, -5527086, 2655364, -408022, -1996623, 3574487, -3467112,
-11324218, -10391137, 7719667, -10091563, -29118804, 54577760, 4990215, 3022046, -21992916, 12693239,
--1817845, 14356465, 10947335, 16795470, 1887101, 4312147, -9386651, 2758980, 15391552, -1460826,
-8440148, -1291175, 2714419, 3441880, 6267431, -6461242, 11661910, -7869991, 1110249, -1229971,
-3984656, -992674, 2380486, 8883066, 9738838, -4638028, 4322885, 1936493, -2123325, -4118874,
-12956843, -3922916, 2779381, -3626563, 6799470, 5906, -6138045, 13024488, -8018167, -2745021,
-3491272, -6056978, -3643743, -1847910, 590558, -2288144, 274341, -1195075, -3298535, 4460861,
--8296266, 5319317, 3632469, -2806224, 5599564, -4154307, 6622840, -3323768, 1326608, 1341640,
--3878892, 6520834, 78383, 960999, -1967095, 8762270, -10254234, 11077258, -7725036, 1388885,
-1976222, -236760, 2119030, -1685775, 6456947, -5914707, 511638, 5553930, -6514929, 4220342,
-3826816, -894427, 906238, 3817689, 1868848, -1654099, 2582886, 759672, -753230, 597000,
-2280091, 341987, -2682207, 841814, 1235340, -1337346, 3295314, -615791, 2726231, -1604170,
-531502, 2163053, -1255204, 427349, 1526861, -1969243, 3605088, -243739, 1832877, -358093,
-3789772, -1212791, 541703, 3554622, -2933463, 4097936, -2209224, 1835562, -2274722, 4027606,
-10452877, -49754512, -123906584, 19286014, 94407136, 87718264, 152150832, -38801808, -40703404, -103553272,
--141403744, -29131152, 51161652, 54757076, 103089416, 56020332, 4435628, -26736708, -71944464, -51126752,
--8820789, -7977365, 25654376, 23817742, 13762686, 8809515, 6924024, -3762391, -17673254, -1338956,
-20434380, 189515, 4305168, -1136019, -15311558, -11693048, -26046292, -25486872, 11576547, 10716480,
-23675470, 36039072, 26975078, 13216688, 4766340, -38825432, -27491012, -21227876, -21312702, -23728084,
-4958003, 15198279, 26346404, 33705828, 27843736, 6113349, -3298535, -22285512, -22805202, -13502303,
--6611029, 2233920, 3745748, 7596724, 653909, -7244536, 2462090, -11591043, 6062347, 9943923,
-1122060, 19857244, 23931558, 7459285, -4563940, -26288422, -34711924, -13916768, -6418292, -3992709,
-17632988, 13733158, -3617436, 15568183, 16818018, 9479530, 11612518, -6382859, -12527883, -9996536,
--14411226, -11361799, -2145873, -10903848, -4361540, 658204, 8768176, 12484933, 17889076, 15531675,
-14228690, 11385421, -5916318, -13368623, -22573274, -27722940, -16201154, -11996917, 1531156, 13312788,
-19492172, 22701050, 17861158, 16547972, 10589779, -13969918, -25078314, -22542672, -11098732, -3172907,
--1065152, 1757179, 9526774, 8489003, 3990025, 1979980, 7786239, 4502200, 6767795, 1959579,
--10533407, -11460046, -7624104, -2997887, 3562139, 2608656, -3848291, -2097555, 3539590, 1918777,
-1499481, 4835597, 7638063, 3541201, 120259, -3833258, -4506495, -3730716, -4631586, -5951214,
--4598836, -458488, 3103114, 4300873, 4996121, 4050154, 1229971, 60130, 96637, 234076,
-0, 0, 0, 0, 0, 0, 0, 0, },
+207232, 5693516, 3911105, 3934727, 2473901, 1562294, -2245194, 85362, -2554969, 6091338,
+3726958, 1462436, 880468, 879395, -77309, -1927367, 2989834, 4190814, 4025995, 2467459,
+-3070365, -4425427, -4846871, -4598836, -487479, 2400887, -4738960, 3950833, -957241, 6906308,
+-1156420, 4387846, 52613, -5728413, 1633698, -737661, 4628364, 319975, -547071, -2337536,
+-3929358, 353261, 2209224, -5029944, -6883222, 4803921, -3989488, -3671123, -3470871, 2707440,
+-2739116, 1151588, -1227824, -339302, -4056060, -1223529, -2761127, -4027606, 1321239, 3125126,
+-1165547, -4430796, -869194, -904628, -2227478, -3830574, -299574, -3115999, -3672734, -664109,
+250182, 862752, -1246614, 538482, -682900, -5179194, -1145683, 637266, -1433445, -1329829,
+-1626719, 1655710, -1985886, 1705102, -143345, 294205, 653372, -1268089, 1243930, 10201,
+-694174, 307627, -341450, -1076963, 174483, 805306, -555125, -471373, -52076, 1301912,
+587337, 182536, 200253, 701690, 475131, 815507, 230854, 1049583, -876173, -386547,
+-396748, 13487808, -4713727, -3085934, -4202089, -2887292, 314606, -9025874, 1523640, -4478041,
+-8836358, -1888175, 7573638, -5447093, 1476932, -643171, 2541010, 3825742, 4093104, 6615324,
+-1416802, -3790846, 1687385, 1597728, -3038689, -439160, -2053531, -1336272, 813359, -3473018,
+-2171106, -505196, -4372277, -5131949, 2622078, 3967476, -2353105, -5897527, -1034013, -1382980,
+834834, 4764730, 315143, -1974074, -317291, 6379100, 795106, -3903589, -3764002, 1651415,
+1207960, 5091684, 2891050, -333934, -4861366, 272194, -286152, 4179003, -4474282, -1502702,
+2457795, 4857071, -1369558, 431644, -3679176, -2065879, 2254858, 140123, 475131, 1319092,
+-1430761, 1768990, 523986, 2164127, 1330903, 836982, 8444443, 2587181, -346282, -1138166,
+-2489471, 3621731, 2246805, 3914326, 2787434, 982474, 1037772, -817118, 775242, -1581085,
+-1688996, -1296006, 443455, -597537, -413391, -255551, 1362578, 226023, 1780801, 168577,
+-564251, -222265, -170725, -245887, 580357, 418759, 719944, -9894531, -2320356, -4665945,
+4539781, 1154273, 117038, 3230889, -1905892, -7646653, -4027069, 5094368, -268435, 5247913,
+-380105, -2957085, 5817533, 2190970, 12741020, -2386928, 5537824, 816044, -5986648, 1520418,
+-5083094, 3309272, 1180042, 1308354, -5432597, 2734821, -936840, -1913408, 2246268, 8677445,
+3234647, -38655, -6942278, 6041945, -1258425, 38118, 4279935, -6315213, -1170379, 4374961,
+-2574833, -2246268, -7128572, -7787313, -580894, 4735202, 2793876, -3117073, -74088, 3088618,
+3867618, 1546725, -779537, -1490891, -6830072, 3229816, 8524973, 3882651, -2443300, -1189706,
+2706366, 4072703, -308164, -1257352, 1024887, -5621039, -1032403, -3936338, -1833414, -354872,
+-2413235, 6497749, 5666136, -1679332, 2848100, 2109903, -1072668, -3823595, 912144, -2957622,
+-1114544, 884763, -3817152, -807991, 390305, -1102733, 1095754, 1645509, -2439542, -870268,
+-155156, 172872, -1912871, 513785, -882079, 1452236, -1695975, 1604170, -1158031, 390842,
+267362, -825171, 649614, 290984, -614717, 565862, 632434, 652298, -1257889, -588947,
+31139, -1785096, 239444, 1063541, -350577, -7442105, 8316131, -7164543, 7594576, -69793,
+-6052683, -14278082, -5621576, -4096862, 2142115, 7487739, 5862631, -1800128, -1143535, -1737851,
+-4092030, -1176821, -4598836, 1582159, 1699733, 2840584, 4713190, 2795487, 9011915, 32749,
+1825898, -3167002, -734439, -2142652, 3317325, 1007170, -4180077, -6052683, 258772, -4343286,
+555661, 4125853, -6845641, 4840428, -11525008, -3164854, -8545374, 1477469, -513785, 160524,
+-3340411, -4506495, 1614371, 4107599, 2946348, 1101122, -6861211, 2119566, -4733054, -1786706,
+-1345935, -9349070, -3639985, 2832531, 3645890, -295816, -6433861, 1139777, 2474975, -1219771,
+-1258425, 804770, 5647882, 2049773, -1234266, -1772211, 1020055, -13327284, 992137, 3420405,
+3210488, 9447854, 1335198, -5244692, 5946919, -2035815, 922881, 2114735, 1992865, -1327145,
+-4367445, 284005, 2617783, 2503966, 4034585, -1219234, -1279363, 734976, -731755, -470836,
+668404, -1104880, 406948, 952409, -519691, -2115808, -1619740, -49929, 281857, 598074,
+-1001801, 2069637, -1034550, -555125, 1341640, 1565516, -420370, -2348273, -1226750, 980863,
+-1184337, -617402, -709743, 543313, 1879585, -313533, 9509594, -2461016, 99321, 6261526,
+-3285650, -3071975, 9380745, -7211250, -17013440, -11178189, -6600291, 10164040, 4304094, 1377074,
+-9869835, 10371809, -4525822, 2882460, -2731062, 4052302, 4973572, -447750, 91268, -128312,
+-1728724, -5417028, -4377646, -1357747, 528818, 4689568, 2640868, 7345468, 3487514, -3257196,
+-1756642, 6534256, -4768488, 8025684, -6487011, 1698123, 3502009, 2250026, -5268315, 7070590,
+-731218, 7599945, 10024991, 1506997, -4059281, -3934190, 4214974, -4875325, -10264972, -2671470,
+2107755, -6597070, 3704946, 3003793, -2219424, -4114579, -1781875, -1593970, 1927367, -821413,
+-5799280, -2224256, 9901510, 7962870, 4261145, -11876658, -11678016, -6387153, 11121818, 5630702,
+-920197, 1529008, -5551782, 7029251, -361851, -5512591, -1951526, 705985, -586800, -2775086,
+-446677, -2202781, -1198296, 2065879, 3034931, -1826435, -76236, 252866, 473520, 420370,
+-3103651, 3495567, -288300, -3516505, -2111513, -506269, -1131187, 39728, -297963, -457951,
+-408022, 814970, 132070, -1631551, -146029, 600759, -433792, -2523293, -1743220, -2355790,
+-857920, 1651415, 4787278, 7050189, -394600, 2717641, -11097122, -3745748, 1811939, 3795141,
+-13762686, -1524177, 5918465, -4145717, -8956617, 5577015, -10417443, -7639136, -4134443, 909996,
+-3787088, -2570538, -346282, 7737921, -6583111, 1716376, -2093797, -2734284, -5543729, -1529545,
+-8089034, -2408403, -250719, 1540820, -5660230, -1194001, -3576097, 511638, -1831804, -2507187,
+1469416, 6366216, 1604170, -3319473, 3150359, -4862977, -1222992, 1862405, -1866163, 3171833,
+-1051730, -359167, -22427246, 1487132, -7784628, 3792993, 3224984, 4950487, -12351789, -12584254,
+1681480, 439160, 2922188, 82141, 6689412, -2720325, 3628174, 4514548, -2168959, 10530186,
+-3312494, -6857452, -1479079, -5676336, -214748, -11230266, 148176, 5554467, 2585034, 8381629,
+-2340757, -2295123, 3684008, -4433480, 1031866, 2727304, 5393405, -2900177, 3086471, -4400194,
+853088, 172872, 564788, -2170032, -1050656, -1618129, 1708860, -2012729, -3215320, -67646,
+-1527398, -2000381, -736050, -1567663, -701153, -986769, 896574, -1568200, 889595, -3164317,
+-355945, -1894618, -821949, 252329, 193810, -449898, -1531156, 137976, 8677981, -17501992,
+4685810, 746251, 4857608, 7044820, 1275605, -6789270, -14910516, 1061931, -6029061, 11323144,
+-4612795, 2335925, 821413, 2418604, 8541616, -3774203, -263604, -3964255, -2234994, 2231236,
+-2157147, 8015483, 5969468, 1712081, -1701881, 110059, 5365488, -552977, 2589865, -124017,
+-4424353, 3910031, -1137630, -3313567, 4738960, 8027831, 22012, 3138547, 562104, -5327907,
+-3322694, 9747965, -4708895, 4662187, 7100655, -9422085, 6720550, 3593277, 3411815, -4183835,
+6891812, 1983738, -1191317, 8813810, 325881, -110059, -4131222, -2355790, -4295, -3861176,
+-9429601, -2486249, 9630927, 7258495, 7923678, -890669, -8356396, 3461744, 10103374, -1893007,
+-7154879, -373125, -5055177, -1305133, -839129, 7859790, -753767, 4031364, -1035087, 357556,
+-5545877, 1457605, -954557, 2166274, 2155000, -3829500, 2594697, -6055904, 595390, 2167885,
+158914, -1570347, -104153, 1189706, -4190278, -783832, -3943317, 1217086, -2493229, -1580011,
+-2415919, -4056060, -2668249, -1047972, 585189, -1250372, -98784, 1269163, 428423, -1069984,
+-751619, -1224066, 2319819, 66572, 838056, 1492501, 934155, 1046361, -542240, 1969243,
+-300648, 34897, 824634, -788663, -1089311, 507880, 2088965, -8311299, -2452963, -13399224,
+-3919158, -7773354, -9165460, -8690866, -3080029, 11686069, 12716861, 17521856, 3916473, -6689949,
+-4117800, 14502494, -57445, -3387119, 11110007, -1168768, 481573, -17368848, 7849053, 4362076,
+-11590506, 16049756, -2240899, 7206419, -1953673, 3764002, 7132867, 8053, 12613245, 4830228,
+3576097, -1469416, -4479651, 1202591, 7639673, -2059437, 2265595, 3572339, 10119480, -482647,
+-3069828, 6518150, -7672959, -4826470, 3461744, 11166378, -4960151, -5999533, -1896765, 9200357,
+77846, 1293322, -3446711, -1582159, 3297998, 4848481, 423591, -3981972, -12743705, 1502165,
+3746285, 12117713, 3517578, -986769, 9307194, 16634408, -3434363, 5822365, 3921842, 6886980,
+-1348083, -5860483, 3423626, -13806709, -3758633, -2100776, -4482335, -2798708, 7177964, 2471217,
+-8939438, -5280126, 248571, -2925947, -325881, -6844568, -214748, -2350958, -1728724, -948651,
+680215, -1912871, -482110, -937377, 1457605, -544924, 1336809, -1876901, -62277, 280784,
+615791, 2765422, 77309, -1072131, 2582886, 3776887, -309238, -2329483, -1472100, -3278134,
+-2866354, 3921842, -673773, 1053341, 1433982, 1385127, 1294396, -3019362, 1466195, -1100585,
+-15169824, 21242908, -10710038, 4822712, -786516, -7327214, 16192027, 3812857, 2009508, -17114908,
+4442070, -6826314, -7789997, 1901597, -7603703, 8658654, 5240397, -1455457, 1735704, -4193499,
+-1894081, -6219650, -3999152, -7470022, -11535208, -2842195, -8071318, -2166811, 4391604, -3262028,
+-4344897, 9134859, 5740761, 9168145, -7516730, -847719, -1510218, -8257612, 81604, -4390531,
+-20556788, 1800128, 371515, -3178813, 7132867, -744640, 7868917, 6666863, 2460480, 12368432,
+11004243, -10865730, -2978560, 91268, -401579, 3868155, 1479616, 10516227, -2245731, 16796544,
+-22549, -9904731, -8038568, 1286343, 3031173, 3436511, 12208981, 3207804, 3056406, 11477226,
+15282567, 625992, -9376450, -8879845, -840740, -2979097, -2166274, 19745038, 1415729, -8967892,
+6415071, -7851737, 7506529, 1239635, -1558536, -2347737, -6032282, 1679332, 1996623, -893890,
+1765232, 3330747, 1853815, 2269890, -886911, -839129, 217970, -1103807, -930934, 2238215,
+884226, 1588064, 1996623, 3539590, 200253, -1662152, 3294240, 1873680, 635655, 753230,
+-682900, 500364, -125628, 3525631, 5501316, -2970507, 2624762, -651224, 2287607, 297427,
+487479, 4692789, -244813, 454730, 402653, 3855270, 2558727, 2820720, 12743168, 976568,
+8587787, -9400610, 4203163, 752156, -699543, 5671505, 13474386, -3719442, -1226750, 12406013,
+-16411607, -9148280, -7169374, -18799072, 3689377, -5964099, -2652679, 2253784, -12833362, 14053670,
+10596758, 14928233, 6693707, -9300215, 871878, 592169, 11164767, -2070174, -369367, -439697,
+-6947647, 552440, -4090956, 6241661, -7371775, -2788508, -2495376, -3186866, -8633421, 4050691,
+-12656195, -1934346, -906238, 7937637, 4685810, 1054415, 119722, -2218351, 907849, 117575,
+6574521, 1523103, 1894081, -1056562, -19809462, -9205726, 2277407, 8201240, 9817221, -15507516,
+10357851, 3077881, -6124087, 1490891, 3339337, -3675955, 15003395, 139586, 2863670, -3542811,
+-20944408, -7179038, -9547175, -2481954, 369367, -5806796, 2996814, 4456566, -4312147, -897648,
+13444858, 380105, 6844031, -8253317, 1030255, -134218, 7733089, 6842420, 4918275, -1863479,
+1589138, 5618354, 3402151, -247497, 5912560, 5749351, 6278706, 817654, 2389076, 2157147,
+1014686, -814433, -813359, 5433134, 1016834, -2865280, 478889, -416612, 2984466, -2084670,
+944356, 2834679, -2212982, 4406100, 1519882, -601832, 362925, -3803194, 2794950, 2825015,
+-459562, -843424, -2335925, -3149822, 19393388, 3082176, 7833484, -11696270, -10590852, 6075231,
+10060961, 1169305, -3572876, 18610630, 5848672, 62277, -5168457, 4041027, -1454383, -2073396,
+-704912, -3215857, 857920, -6209986, -14781667, 4852776, 1506997, 4488778, 1454920, 8195335,
+2487860, -8850854, -17993228, 455267, 1333587, -1458141, -15748034, -7692287, -2380486, 4395362,
+-3448859, 1750199, -13777718, 658741, -3089155, 76773, 1365263, 3809636, -1499481, -12962748,
+-11928198, -7434052, 4988068, 3688303, -3191161, -2699924, -20783346, -11761768, -437550, -20261508,
+18621368, -19130858, -5272073, -12390981, 19972134, 6400038, -14104673, 7072201, -1656247, 7547332,
+-12022150, -3984656, 500364, 8121783, -11415486, -4566087, -3896609, -11593727, 797790, 7683697,
+-1476395, -2137820, 13833016, -21971442, 17267380, -2879239, 3626563, -9914932, 6924024, -1123134,
+5510443, -5036386, 253940, 4379793, 4745402, -1386201, -2435247, 14496, 459562, 564788,
+-1646583, 5401458, 5651103, 3999152, 1013075, 4054449, -420370, 4986994, -1877975, 907312,
+-252866, -1892470, -1963337, 335544, -4163434, -5000953, -1488743, -319438, 5015448, -314069,
+-868657, -1392106, -3529390, 2447595, -1163399, -1830730, -1298154, 2598992, -597000, -5667746,
+-805843, 2004676, 428960, -546535, 17034378, 37327024, -5081483, -11712913, -10979547, -9698036,
+-13892072, 2230699, -23611582, -263604, -18268106, -8475581, 5550709, 11370389, 6492917, -8254391,
+-1188095, 10812580, -809601, 12488154, -7541963, -7612293, -6725919, 5856188, -4454418, -5791227,
+1946694, -6931004, -7061463, 8443369, 20024748, 7515119, 8527121, 3738232, -11894912, -2872796,
+-9664750, -9143985, -1506997, -1715303, -7609072, -12152073, -24329380, -2342905, -8874476, 3066607,
+-4547297, 9012452, 8364449, 4705137, 8757975, 6126771, -996969, 16912508, 24182814, 5714991,
+-28456842, 5697274, -5150203, -16711718, 2253784, 8041790, 3975529, 636729, 7740605, -556198,
+-13589277, 736587, 6353867, -13651017, -7181186, -12797392, -23609972, 18440978, 2506114, -1471026,
+12883291, 10005126, 666794, 651224, 12734041, -17480516, -7617125, 1854889, 9381282, 7866233,
+12075301, 8638253, -7212324, -4252555, -1630477, -2856153, -1078037, -1835562, -3519726, -4655208,
+-7107097, -7221988, -5133023, -2821794, -796716, 3411815, -1954210, -1545115, -8133058, -5644124,
+810675, 4152697, 2903398, 1650341, 1685238, 1110786, -1165010, -4245575, -2037425, -2689723,
+-2322504, 695785, -4483409, 815507, -3202435, 3273839, -402653, -1279900, -3067144, 2686502,
+-2821794, -1002338, 5608154, -2435783, -193274, 27567248, -20399484, 23830090, -1989107, -2851322,
+-12119861, -4471598, -12040404, -10229001, 12733504, -11309723, 6586869, 28579250, 10631655, -4221416,
+-12883828, -10810970, 12754442, -10404558, -17621178, -7248831, 1819992, 1699196, -20118700, 1444183,
+-6094559, 10516764, -6346888, -277025, 2347737, 30056182, -7249905, -9575630, 14586783, -11578695,
+17520246, -10215043, 12833362, 2170569, -9242770, -8451422, 16287590, -20993264, 16025060, -9037685,
+1658394, -5011153, 8762807, -7248294, -3694209, -267362, -6455873, 30654256, -8791798, 20923470,
+8128226, 9604084, -130997, 7926362, 13429289, 15042586, -4109210, -14565845, 93416, 12421582,
+5014375, -2205466, -18321794, 24522116, -5118528, -16217260, -4482872, -9945534, 7683160, 10586021,
+442919, 17746268, -4784057, 9100499, -20155208, -3568044, -21507048, -6706592, -7860864, -494995,
+1207423, -4156455, 7696045, 2515240, -5795522, -9914395, -7339026, -2141041, -907312, -4976257,
+-1055488, -1770063, 6090264, -1813013, 271120, -2318209, -9306120, -2831994, -3733400, 1129040,
+-1540283, -5248987, -8127689, 3208878, -5490579, 2524367, 3624953, -5713917, -13939853, -3352222,
+-2175938, -3741990, -4968204, 548682, -2317672, 1478543, 1646583, -6361921, -811749, -6405407,
+5928666, 3607236, -3337190, 1573569, -5572720, -31242128, -13332115, 19185618, -3777961, -7838852,
+22299470, 2151242, -11562052, 8469676, 12147778, 10307922, 1626182, -19210314, -7924215, 2958696,
+2861522, 10073846, 6674379, 11361262, -9798968, -7732015, 3832722, -2641942, 9320616, -18054432,
+-3033321, -19530290, -6295885, 3570192, -2667712, -2425583, 20953534, 4391067, -15479599, -2319819,
+1272921, -15811922, -2120640, 812823, 9550934, 24098524, -8513699, 8081518, -13405130, 2061047,
+-7878044, -10133438, 9829570, 21082384, -16656957, 1651415, 18766322, -8426726, -1712618, -6997576,
+12287365, 2999498, -15226196, -148176, -5311264, -4908611, -1504312, -7450158, 11368778, -26912266,
+5719286, 2296734, -11324755, 15135465, 23161148, 16384226, 44111460, 13414257, -11305428, -15626702,
+-12943421, -7033009, 16195785, -5803038, 22487376, 2100776, 27381490, -32503238, -20867636, 9838159,
+-5345087, -3331821, 13132399, -8829379, -1010391, 14001057, 6223408, 10394895, 15298137, 11985643,
+-2594160, 4912906, -9362492, 367220, -367220, -6538551, -7194070, 4818954, -9911174, -816581,
+14967424, 1394254, -8952322, -11651173, 2159832, -14646912, -5415417, 15817291, 8191577, -2557116,
+-3631932, 3066070, -2943663, -4957466, 1045288, -3613141, -5632313, -941135, -7728794, 5476620,
+4715874, 5245229, -2888903, -2035278, 3319473, 8095477, 22090090, -51231980, -1883343, 29466160,
+-38884488, -1613297, 7842074, -40169756, 18219252, 5086315, 32485522, -3061238, 11582453, 9701794,
+-35333624, -29218662, -11286100, -2676302, -17608292, -21674016, -11400991, 20359218, 14309220, 12403329,
+1458141, 2448668, 6530498, 1425929, -25616796, -9472550, -32928978, -10394358, 18646064, 5678484,
+12644384, 41776612, 10967736, 15897285, -508417, 8501888, 36786396, 27730456, 7829189, 18255222,
+16740172, 36735392, 30179662, -39654896, 25089588, -2047089, 24016384, 24480776, 10266046, 44070660,
+38915624, -21180094, 19331110, -83752, 18428630, -31871342, 3267933, 3664144, 1340567, -7055558,
+20463908, 22206592, -21174726, -7009387, -12380780, 7943005, -17531520, -21731998, 20762946, 35389992,
+13044889, 36823440, -10416906, 49961208, 48845588, 13833553, 25677462, -7239168, -12659953, 11671037,
+11426224, 5687074, 3996467, 3203509, 6689412, -6721087, -12444668, -8782671, -23481124, -24529632,
+-9870909, 11751567, -199716, 10388989, 1903207, 6412923, 15140833, 18652506, -5863167, 8675297,
+-786516, -7402376, -6222334, -5198521, -15447924, -6929930, 340913, -13219372, -4675609, -11875585,
+-6608881, 2841658, 16988206, -7746511, 6160057, 5003637, -2789581, 9570261, 5517423, 7363185,
+259846, 12637404, 8012799, 5642514, -4915053, -7272990, -16315507, 23956254, 43021612, -5750961,
+-58559196, -18611168, 6049999, -4451197, -9660992, -12735115, 260382, -33398202, -20054812, -27698780,
+-4439386, -7976291, 9341554, -19712826, -5664525, 5539971, 9365176, -43487, 10409927, 20462834,
+4230543, 29444148, -18798534, 7259569, 1209033, 28114856, 7346005, -5239323, -28073516, 18911814,
+-4817880, 25691958, -21352430, -16713865, -16174310, -8367670, -25881472, -3291019, -4469451, -24093692,
+13434658, 28043452, -13418552, 4414153, -36031016, 34956740, -10923712, -18547280, 15826954, 14166950,
+-20602422, 2138357, -12837657, 4885526, -9400610, 43729748, -1588064, -3349538, -10675678, 76937360,
+1975148, -10001905, 32821604, 26730266, -27801324, 22126060, -34067144, -18526342, -35603132, 27643484,
+-24499030, 13573707, 18719614, 15347529, -31569084, 40315784, -7187091, -51733416, -59533616, -22982370,
+-7329362, -16806744, 13873818, 14168560, 23546622, 4366908, 2046015, -17186848, 17782238, 28441810,
+40920300, 11315091, -11751567, 4525822, 34810708, 6353867, -19256486, -4195646, 37141804, 9098351,
+-22024056, -5117454, 18305150, 11199664, 16659104, 11853573, 23487566, 815507, 12870406, 5229660,
+16592532, 8535711, 26415122, 9465571, 16652662, -2605435, 5157719, 1938641, -2077154, 7767449,
+-2465311, 9885941, 16393890, 3244848, 9460739, 1978369, 12328704, -27420144, -6700149, 22565758,
+-16466905, -78799232, 5681705, 50727860, -30573188, -20366198, 40739912, -29553670, -1879048, -8352638,
+39101384, -67020816, 37539624, 22318260, -18891950, 7067369, 36672040, 26227754, -12794171, 15039902,
+6753836, -10147934, 17260936, -296353, 10475962, 15933792, -6736120, 3911105, -1685238, 7645579,
+-9682467, -7730405, -598611, 13696651, -39756364, -19601156, 19804094, -4375498, -26356066, -31055834,
+5411122, 38857104, -16799764, -24661702, 19072876, 29015188, -6310381, 7376070, -5097053, 27038430,
+-14614163, 40490804, -5450851, 190589, 22136262, 585726, 5102958, -28562070, 45081588, -23178864,
+-28221156, 21527986, -29884382, -9753871, 5056250, 15034533, 41648296, -14646912, 25969520, -5157719,
+13595719, -70398808, -53948548, -9772661, -21029770, 10910291, 9747428, 26921392, -4227322, -5469641,
+31942208, -34833260, -775778, 22523346, 22095996, -7985418, 24618216, 3260417, -5247377, 35970,
+-5467494, 23744190, -13104482, -1173063, 22980222, 5452461, -5216238, 9237401, -11419244, 3124589,
+-875100, 579284, 9282498, 4536559, -13065827, -2794413, 4036733, -9962177, -14919106, -1074,
+10896332, 19384262, -16203301, 18949396, 6398965, -18515068, 15516643, 17998598, -8973260, -20991116,
+19488950, -9463424, 3577708, 10974178, -10710575, -27857158, 9162239, 7794829, -15574625, -14453102,
+1063004, 10867341, -12366821, -5913633, -26510148, -12553116, 19080930, -33013802, 31912680, -28142236,
+-35243964, 19601694, -17153026, -11665668, 20032802, -15432891, 16694001, -12184822, 7641284, 39239896,
+-35549980, -2791729, -5630702, 33013266, 4253628, 2886755, -31853624, -29928406, -10794327, -8927090,
+-4862977, -9829570, 5616744, 1469416, -3488587, 4657892, 6875169, 3151969, 5279052, -6372658,
+15288473, -10362682, 14617384, -28388124, 737124, -23050016, -29791504, -17689360, 39003672, -17200808,
+-17536888, -13117904, 8761196, -8105140, 17211008, 25177098, -26976690, 23634668, 4014721, -37205692,
+-18763638, 76042936, 39318816, -58137752, -11165304, 36469640, -18913962, -21403970, 14519137, -18539226,
+-40258340, 28418188, 12815109, -54660440, 22106734, 27259620, -32251984, -21399674, 32176284, -8239358,
+-24702504, 5280126, 15820512, -39701604, 7173133, 6657736, 11040213, -30383672, -9251896, -2930778,
+-9946071, -2396592, 1644436, 3015067, -18721226, 2564632, 26852136, 9072582, 1387811, 8605504,
+-803159, -4863514, -15264851, -4992900, -8419747, -11339251, -25912612, 6446746, -14936823, -4436165,
+31048856, -28153510, -18491982, 22740242, -17071422, -6477348, -7588671, 10018548, -18469970, -6995965,
+28587302, 14908368, -14484777, 15844134, 8766028, -12482786, -8005282, 38955892, -31820876, -24895242,
+41561860, -673236, -33816424, 4142496, 20269562, -20263118, -42142220, 27422830, 3071975, -46788300,
+7590818, 12459700, -34216392, -1202054, 22332220, -6809671, -15444166, 11470784, 9104794, -23787140,
+-2774549, 16692927, 48168596, 68131600, -26939108, 76244800, -5781026, -20592758, -15879568, -25523380,
+-1951526, 12987981, 45060112, 1762010, 14024679, -11171210, -38472708, 948651, 1626719, 25712358,
+5051956, -29023242, 54573464, -23009214, 10362145, 24643448, -26888106, -21787832, -38459820, -16732119,
+24092620, 29969744, 36980204, -13685913, -89778240, 20145544, 47188804, 60421600, 51977156, -617402,
+-25556130, -31743566, 11090679, 30891016, -19391778, -10202158, -79516488, -48686676, 43058656, 72255848,
+14999100, -1835562, -17294760, -31408558, -7183870, 20136954, -27708444, 11068668, -3755949, 45710264,
+-1738388, 17899814, -88938576, -11212549, 1312113, 54871428, 42656004, -1043677, -26485452, -7266011,
+65371548, 29542396, -76237816, -94635848, -36768140, 19127100, 147301808, 15978889, -25315074, 20336670,
+-39137352, 104565808, 32133872, -83118352, -51801600, -10297184, 74028592, 11154567, -30480310, -28407988,
+-26085484, 21082920, 39981312, 19989314, -42538428, -3484292, -14453639, 35394288, -3566970, 21435108,
+-7241315, -8930311, -28116466, 11134166, -8423505, -2953864, 22352084, -34612068, 20557860, -5166309,
+-5007932, 225486, 16305843, 34474628, 17680232, 2406792, -6498286, 7354595, 0, 14033806,
+4900021, 15477988, 4139812, 3962644, -17127256, 8163659, 9511742, 6334003, 446140, 5221607,
+3570729, 15323370, 7540352, -12324409, 31393526, -36105104, 1153736, -14501957, 8379481, -22341346,
+21034602, 5851893, -11895449, -22530862, -11068131, -4236985, 6595459, -30760018, 7129109, -15038828,
+-5853504, -24071144, -11341935, 19611358, -20558934, -7216619, -2812667, 9620727, 6483253, -7951595,
+11092290, -17590038, -1389959, 287226, 9493488, -11493332, 16790638, 12604118, -12751758, -14694157,
+-5638219, 23948200, -17172352, 7625715, 17736604, 4047470, -17273822, -6520297, 7443715, -10746008,
+8058433, 892816, 3900367, -15850577, 3358128, -12865038, -561567, 12185359, 15239618, 11985106,
+-8814347, 11445551, 1432372, -14057428, -2107218, 102005, 16950088, -4510253, 3570192, 14887967,
+-3184718, -19040664, 26808112, -10732586, 15852724, 11805254, 2720862, 3928285, -11347304, -13717052,
+18455474, 3046743, 16231218, 5142150, 8828842, 4754529, -546535, -599685, -14248017, 1870995,
+3756486, 5285494, 5566278, -1474248, 6487011, 1414655, -918049, 2096481, 761820, 7069516,
+-1928977, 5588290, -6612102, -1344325, -96637, 848793, -3770445, -1748589, 12446815, 8252243,
+-2246805, -8635032, -10283762, -3412889, -4227322, 11848741, 1024350, -3094524, -7723962, -3527779,
+934155, -5921150, 13089450, 1617592, -5527086, 2655364, -408022, -1996623, 3574487, -3467112,
+11324218, -10391137, 7719667, -10091563, -29118804, 54577760, 4990215, 3022046, -21992916, 12693239,
+-1817845, 14356465, 10947335, 16795470, 1887101, 4312147, -9386651, 2758980, 15391552, -1460826,
+8440148, -1291175, 2714419, 3441880, 6267431, -6461242, 11661910, -7869991, 1110249, -1229971,
+3984656, -992674, 2380486, 8883066, 9738838, -4638028, 4322885, 1936493, -2123325, -4118874,
+12956843, -3922916, 2779381, -3626563, 6799470, 5906, -6138045, 13024488, -8018167, -2745021,
+3491272, -6056978, -3643743, -1847910, 590558, -2288144, 274341, -1195075, -3298535, 4460861,
+-8296266, 5319317, 3632469, -2806224, 5599564, -4154307, 6622840, -3323768, 1326608, 1341640,
+-3878892, 6520834, 78383, 960999, -1967095, 8762270, -10254234, 11077258, -7725036, 1388885,
+1976222, -236760, 2119030, -1685775, 6456947, -5914707, 511638, 5553930, -6514929, 4220342,
+3826816, -894427, 906238, 3817689, 1868848, -1654099, 2582886, 759672, -753230, 597000,
+2280091, 341987, -2682207, 841814, 1235340, -1337346, 3295314, -615791, 2726231, -1604170,
+531502, 2163053, -1255204, 427349, 1526861, -1969243, 3605088, -243739, 1832877, -358093,
+3789772, -1212791, 541703, 3554622, -2933463, 4097936, -2209224, 1835562, -2274722, 4027606,
+10452877, -49754512, -123906584, 19286014, 94407136, 87718264, 152150832, -38801808, -40703404, -103553272,
+-141403744, -29131152, 51161652, 54757076, 103089416, 56020332, 4435628, -26736708, -71944464, -51126752,
+-8820789, -7977365, 25654376, 23817742, 13762686, 8809515, 6924024, -3762391, -17673254, -1338956,
+20434380, 189515, 4305168, -1136019, -15311558, -11693048, -26046292, -25486872, 11576547, 10716480,
+23675470, 36039072, 26975078, 13216688, 4766340, -38825432, -27491012, -21227876, -21312702, -23728084,
+4958003, 15198279, 26346404, 33705828, 27843736, 6113349, -3298535, -22285512, -22805202, -13502303,
+-6611029, 2233920, 3745748, 7596724, 653909, -7244536, 2462090, -11591043, 6062347, 9943923,
+1122060, 19857244, 23931558, 7459285, -4563940, -26288422, -34711924, -13916768, -6418292, -3992709,
+17632988, 13733158, -3617436, 15568183, 16818018, 9479530, 11612518, -6382859, -12527883, -9996536,
+-14411226, -11361799, -2145873, -10903848, -4361540, 658204, 8768176, 12484933, 17889076, 15531675,
+14228690, 11385421, -5916318, -13368623, -22573274, -27722940, -16201154, -11996917, 1531156, 13312788,
+19492172, 22701050, 17861158, 16547972, 10589779, -13969918, -25078314, -22542672, -11098732, -3172907,
+-1065152, 1757179, 9526774, 8489003, 3990025, 1979980, 7786239, 4502200, 6767795, 1959579,
+-10533407, -11460046, -7624104, -2997887, 3562139, 2608656, -3848291, -2097555, 3539590, 1918777,
+1499481, 4835597, 7638063, 3541201, 120259, -3833258, -4506495, -3730716, -4631586, -5951214,
+-4598836, -458488, 3103114, 4300873, 4996121, 4050154, 1229971, 60130, 96637, 234076,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-5836861,
--78920, 1278290, 969589, 4165582, 547608, -510027, -2685965, 6121939, 3781182, 199716,
--754304, 6081137, 2064269, -1942399, -5333276, 3403762, -1536525, 2643552, -5076115, 328028,
--1214402, -3770445, -1023813, -1896765, -703301, 289910, 23622, -2748779, -1690070, -435939,
--531502, -1708860, 1829656, -175020, -1831804, 3262028, -5426691, -2572149, 2587718, -3256122,
-446140, -2020782, -2980707, 2026688, 1836099, -1596654, 2034204, 3926137, 2206540, -2034204,
--2384781, 430570, 768799, -2398739, 2596845, 4330401, -3695283, -1177895, 2127620, 1596117,
--882616, -1127966, -1806034, 2387465, 722628, -2856690, 3248069, 1585380, -2674154, -1999844,
-3415573, -2576981, -3299609, -6209449, -5404680, 2943126, 3397319, 275952, 1489817, -586800,
-1218697, -2297808, 3485366, -287226, 1611150, -1596117, 897111, -1453310, -1141388, 58519,
-2231773, -490163, -573378, -997506, 329102, -752693, 150324, 265751, -466004, -539018,
-67109, -25233, -185220, -591632, 298500, -215285, 7792682, -747861, -1573032, -3189550,
-4988068, -2654290, -282931, -4051765, -4323422, -5437429, -2558190, 4265440, -4413079, -1649804,
--1552631, 1479079, -1098975, -6058052, 3157875, 1518271, 11778948, -1202591, 5510980, -1098438,
--290984, -533113, 608812, -2483028, 4561792, -1197759, -918586, -2752537, -504122, -984084,
-7068980, 1312649, -715112, -6624450, -676994, -1273995, 1998770, -4210142, -1165547, 1139777,
-950262, -1164473, -710817, -2616172, -985158, -3144453, -1415192, 6103686, -1796370, 1932735,
-3407520, -824634, -3317325, -4352950, 1130650, 1021665, 1314797, 2705830, 3207267, 2641405,
-1526861, -1209570, -1173063, -1399623, -6128382, -1465658, -623307, 2968359, 2530810, -1514513,
--148713, 3260417, -3400004, 1340030, 97174, -849330, -1967095, -2996814, -37044, 1783485,
-1803349, 1899986, -794032, 781147, -709743, 158914, 2672544, 1083942, 207232, 23085,
--407485, -63351, 170725, 532039, -339302, -373125, 1159641, 594316, 1181116, 1210644,
-248571, 672699, -173409, 194884, 88047, -541703, -1371705, -249645, -10328859, -2523830,
--209917, -2211908, -1535988, 3609920, -7258495, -6084358, -3565897, -2379949, 1024350, 8143795,
--1778117, -25233, 971736, -5852430, -1538672, -4889284, -765578, 8625368, -676994, -4210142,
--2742874, 99321, 1750736, 1720134, -2433636, -10946798, -5246303, -1473711, -4233227, 379031,
-186831, 4419522, -2870649, 3923990, 949188, -2035278, -5869073, -4916127, 6771553, -5616207,
-3715684, 1079647, -3605088, -1357747, -3220152, -2314451, 3183645, -6031208, 3103651, 1048509,
--106300, 999654, 412854, -609885, 125628, -3061238, -4193499, 290447, -1283658, -3099356,
--1256815, -4787278, 5546951, 3794604, 952409, 4538707, 532576, -1942936, 5637145, -2987687,
--1875827, -1926293, 4289599, -4203163, 1859721, 3011846, 163746, 1862942, 4672925, 1707250,
--146029, 289910, 992674, 771484, -926102, -566399, 55298, -246424, 1498944, 724239,
-1585380, 1175747, 450972, -1438277, -1683090, 1009854, -61203, -101469, 1534914, -1076426,
--855772, -30065, 367757, 499827, -153008, -1731946, 1436667, 380641, -6940667, 8510478,
-9656697, 2647847, 2600603, -2760053, 4507568, 2260764, -5636608, 1770600, 3641596, -6739341,
--5878737, 5925981, -5149129, -743566, -3314641, 5972689, 1315334, -676994, -2182917, -38118,
--3854196, 3599183, -1916092, 2182917, -915902, -23622, 3898220, 1534377, 562641, -1495186,
-3820910, 2425046, 1149978, -317828, 3952444, -297427, 737661, -2472828, 4814659, 1088774,
-1931125, 3521873, -9615895, -3118146, -1881196, -3437585, -3335579, 990527, 5394479, -2307471,
--1415729, -2929705, -1298154, 1176284, 2384781, -6616397, -378494, 2332167, 290447, -509491,
-2902324, 1893544, -6194954, -1722282, -1331440, 3864397, -4066797, 5451924, 5901285, 3095598,
-1235877, -2724083, -122407, 487479, 3953518, -1037235, 496069, 489626, 618475, 5826660,
-658204, 6207839, 2309619, 106300, -2942053, -1680406, 2560874, -504659, 19864, 262530,
-176094, 580894, 2607045, 752693, 1032940, 114890, 998580, -2047626, -151934, 667867,
-845572, -513249, -308164, 28991, 843961, -599148, -431107, 878321, 853088, 1578401,
-747324, 1461900, -836445, 130460, 193274, -554588, 1389959, 10682121, -1991254, -159451,
-3896609, 2520609, 1884954, 3598109, 9487046, -2655364, -877247, -9154186, 175020, -7867307,
--9976672, 347892, 4242891, -12885439, 4366371, 4205310, 2304787, -3918084, -3096135, -4272419,
--1622961, 239981, 267362, 4087735, 5405753, -748935, -5328981, -3239479, 4001299, -5731097,
--2851322, -4845260, 1040993, -7825431, 3892851, 610422, -531502, 1249299, -253940, -1796907,
-4832, 5025112, -5811628, 7028177, -5345087, -631360, 1296006, -3552475, -2898029, 2745021,
-1355062, -1130650, -2718178, 5242545, 2189360, -3669513, -7334194, 841277, 1696512, 4282083,
--178778, -1907502, 369904, 2263448, -1746441, 10189273, -3413425, -1669132, -7275675, -4831838,
-11507291, 4660040, -2556579, -670552, -4000762, -4491999, -357556, 1588064, 306016, -2187749,
-2485176, 1353452, 3444027, -379568, -2490007, 989453, 103079, -1152662, 1008244, 955093,
--260382, 431644, 1362042, 431644, -322123, -1052267, 571768, 338229, -960999, 1872606,
-1597728, 497679, -938450, -2444910, 176094, -211527, -91268, 1050656, -1195612, 759672,
-1276142, -782758, 2943126, 6882148, -9192841, -5430986, 6428493, -4817343, -5130339, -5632313,
--6733435, 4838818, -1702418, -200790, -1550483, 252329, -7492034, -1496259, 3425773, 3746822,
-849867, -3956202, -5750961, -4772246, -6068789, 1228898, 7233262, 973347, 2338073, 2478733,
-2410551, -4255239, 4455492, 2772938, -3189550, -2564632, -9826348, 1509144, 2187212, -7715909,
--618475, 2370822, -1454920, 951872, -703301, -8278013, 7030862, -7712151, 6054830, 324807,
-3046743, -8680129, -4864588, -7772817, -6137509, 1129576, -2195802, -2763275, -3464965, -26844,
-3854733, -7192460, -135291, 2084670, -2335389, -8019241, -5033702, -1680943, 1496796, 3887482,
-1675574, -6605660, 7031935, -2275259, -1554778, 7000260, -9204652, -3028489, -1847910, -1647120,
-10981695, -4016868, -204548, -4168266, -3467112, 1991254, 1497333, -259309, 1159641, -887448,
--1568737, 2044941, 10737, 829466, 861678, 2647311, -1059783, 763430, 572841, 172872,
-679142, -3035468, 3921305, 3565897, -1239098, -628676, 542240, -529892, 657130, 103079,
--294742, -1466195, 874026, -763430, 327491, 3469260, 2204392, 1858110, -1452236, 2471217,
-972273, -1017370, 1111323, 365072, 817118, 14220100, -12597676, -6620155, -8378945, 6125160,
-2331630, -4256850, 2896956, -23622, 8475044, 574452, 124017, -8094403, 5784247, 9359807,
-9808632, 8169565, -4493610, -649077, 1290638, -5149129, -3519189, 1411434, 625455, -7438884,
--3634079, -3106872, 3693135, -517544, -5621039, -2551748, 1894081, 4549444, 590021, -1516124,
-106300, -3921842, -77309, -192737, 646929, -8507256, 5035313, 5950677, 1251446, 3096672,
-3547643, -6873559, 9958955, 8996883, 1693828, -6110128, 3589519, -2120640, -9120900, -2265595,
--2843805, -71404, 615254, -102005, -5487358, -4874251, -11339251, -9423158, 191126, 5835787,
--5159867, 2505577, 805843, -3443490, -9223442, -837519, 5493800, -3517041, 4938139, 9672803,
-2981244, -3869229, 5599564, 71941, -509491, 2714956, 4376572, -279710, -674310, 1291711,
-2853469, -1434519, -6167573, 463856, -97711, 767189, 854699, 2198487, 4650913, -1530619,
--723165, 3562675, 3218004, 785442, 537408, -2108829, 4488241, 611496, -213138, 2757369,
-911070, 1081258, 532039, 2500745, 2204929, 2490007, 3979287, 432181, 2410014, 454193,
-2674691, 1357210, 1556389, 1134945, 2538863, 2290828, -13496935, 1444720, -5030481, -18082886,
--13909788, 3498788, 142808, -3102577, 3239479, 8724689, -1371168, 5236639, 4635344, 2706903,
--1374926, -4690641, 3860102, -3991635, 498216, -3423626, 5455146, 9978820, -8941048, -2556043,
-569083, 3642669, 980326, -2764348, -1613834, -3310883, -244276, -4103305, 5277441, 1184337,
--6281927, 7034083, -7008850, -2219424, 8614631, 7607461, 6408628, -7275138, -4779762, -6514392,
-7598334, 10308995, -139050, -2102923, 8170102, -11986180, 1491964, 3246995, -1146219, -10067403,
-9096741, 3209414, 4630512, 8552354, 468151, -12152073, 3212636, 5027259, -3102577, -879931,
-8410620, -8674760, -8152385, -7021735, 868657, 10849087, 5866389, -1534377, 12405476, -16456167,
--6065568, 222801, 7946763, 3722126, -2367064, -13072270, -2029372, -5226975, 1474784, 5012764,
-12782360, 2206540, -3588445, 1702955, -2157147, -818191, -4205847, 51540, -3462818, 1225676,
-3498788, 2008971, 3222299, 3656091, 1167157, 813896, 45634, 680752, -1733019, -1791538,
-182536, 3859565, 1461900, -425739, 696858, 1580548, 3088618, 454193, -1005022, 570157,
--981400, 2514167, -4543539, -2718178, -1996623, 2912525, 2496450, -14540075, 14723148, 5992016,
--345745, -1481764, 1250372, 2541010, 7982734, -1497870, 893353, -2535105, -1826972, 4510790,
-2330557, 5235029, 2310693, 3029026, -9927817, -4104915, 16693464, 1705102, 4970888, 7024956,
-2644626, -5637682, -10474351, 3281355, -4363150, 410706, 3701188, -5203890, -6126771, 7495792,
-8791261, -4557497, -3238405, 6816113, -8344585, 3675418, -6419903, 2911451, -6213207, 9050570,
-1269700, -1181116, 3189013, 15538118, 4291746, 6027987, -1743220, 804233, 2654827, 11477763,
--985158, 16443282, 496069, 7819525, -276489, 14843944, 5257040, 11081016, 8406325, -1855963,
--4956929, -1328219, -5663988, -6246493, 8700530, -1748052, -3394098, 1356673, 130460, -4440996,
--2163590, 1360968, 3894999, 1082332, -7437810, -7368017, -3828963, -7522635, -195958, -155693,
--2211371, 2087891, -148176, 3062312, -448824, -3067144, 634581, -1294396, -5670431, -3575024,
-811212, 7587597, -3197066, 2810519, -856846, -79994, 3517041, -2636573, 1195612, 1724966,
--1926830, -1313186, -947577, -2169495, 1069447, -2713346, -3541201, -1348620, -3837017, 4812511,
--1351304, 295279, -413927, -284542, 508954, -1591285, 710280, 1219771, 624918, 1963337,
-2602750, 463856, 1939715, -1447404, -4151623, 831076, -1150514, 1743220, -1698660, 17060146,
--4481262, -151934, -21030308, -751082, 11235634, -5887864, 9762461, -13380971, 1938641, 1337882,
--391379, -17743584, -804233, -29561724, 1389422, -3267933, -12383464, -2168422, 1653026, -6496138,
-1118839, 7459822, 1142461, -6777996, 1249836, -2108292, 6547141, -7288560, 416075, 9462350,
-2128156, 768799, -1421634, 7246684, -4683662, 744640, -37044, 5556614, 1069984, -9993315,
--5320391, -7055021, 8239358, -18703508, 9035001, 7414724, 6380174, 3546032, 1385664, -8200167,
-5820755, -12134356, -2875481, -2568927, -2518462, -559956, 761283, 3864934, -9320616, -3684008,
-15708843, 6559489, -5734318, -6687264, 1705639, -2794413, 4787278, -3222299, -971736, -5113696,
-14246407, 7229504, -4891968, 863825, -7257958, 1654099, -5479305, -1923072, 5657546, 5248450,
--1646046, 10368051, -4085051, 5127654, -6812355, 7228967, 1061394, -4256313, -5735929, -8571681,
-2166274, -972810, 3892314, -1127966, -2522757, 1531693, 1596654, 2547453, 2085207, 4729833,
--180389, 1495186, -3679713, 2936147, -2641405, -1369021, -1981054, -432181, -4684199, -847182,
-1833414, 4191351, -4025458, -1988570, -2908230, 2860985, 2239826, -1905892, -362925, -3176665,
-2412698, 10828149, 10940892, 6352257, 5672578, -5318244, 6309844, 10517838, -7812009, -278636,
--20275466, 11618423, 7928510, -2887829, 4697621, -1303523, 1621350, 7234336, -4539781, 11315628,
--10202158, 985695, 12741020, 5581847, 784368, 9835475, -3477850, 4519916, 2593087, 5270999,
-8705899, -5141076, -1042066, 16058883, 8028368, -348429, 2217277, -10875394, 14776835, -12437152,
--783295, 12942347, 4016868, 13933948, -8742406, 2237678, -565325, -3405372, 1869385, -13452911,
--9439264, 12687333, -6317360, -2713346, -4290136, -14306536, 10162429, -3369939, -2370822, -6336688,
-6251325, 14544907, -11464341, -2330020, 9803263, -10764799, -4698694, 8763881, 12220793, -20199232,
--5390184, -1729798, 8619999, -302258, 10066866, -2441689, -7378754, 493921, 5357435, 13049721,
-6577206, -8764418, -459025, 6422587, -13007845, -7958575, -2492692, -6657200, -6775311, -792421,
-6168647, -5833103, 1441498, 6437082, 1784022, 1158031, 4494684, -1107565, 2892124, 2801393,
-2736968, 1581622, -518080, -3910568, -1340567, -1083406, -3575024, -1606318, 547608, 467078,
--542240, 566936, 3929895, -3238405, -1060320, -2403034, 1877975, 1858110, -783295, -2680597,
--5962489, 3010772, 2255395, 3878892, 1045288, 955093, -435402, -3686693, 1475858, -1475321,
--1708860, -1065152, 10573136, 22405770, 4331475, -13243532, -4720169, 4399657, -29387776, 928787,
-179852, -4599910, -1442035, 13577465, -22179748, 4880157, 10369125, -8155069, 9189619, 17144436,
-4250407, -15838229, 4288525, -3986267, -287226, -15524696, -4690105, 14166950, -1591285, 12990665,
--3418794, -4548371, 2125472, -10986526, -6179384, -7907572, -5867999, -4319127, 10597295, -11704323,
-1903207, 20461224, 13810467, 4618164, -20795694, 3461744, 13644037, 5715528, 811212, -7410966,
--9030169, -22194780, -15337328, 3177739, -7590281, -7582765, -438087, 9492415, 6717866, -6667400,
-290984, 13503377, -5196374, -2276333, 612570, 17751100, 674310, -883153, 9023189, 2835752,
--20193326, 5674189, 5848672, -88047, -16723529, 7068980, 9795210, -7338489, -5243618, -13699872,
-3650185, -5019743, 5190468, 2623688, -3230889, -5796595, 3784403, 1755031, 5843840, -2888903,
-9114994, 3245922, -6257231, 776315, -326418, -8564702, 159451, 723702, -31675, -146566,
--4530654, -3887482, -1826435, -75699, 5713380, 1931662, 2986613, 4665408, -2117419, -2706903,
-2194728, -4431333, -4010426, -124554, -225486, 1440425, -1328219, 1060320, 2810519, 3045669,
-370441, -1722282, -429497, -178241, -506806, 92342, -745714, 418759, -103079, 3958349,
--2238215, -2728378, 7094749, 5151277, -685047, 2047089, -6592775, 23167054, 1289564, -4651450,
--300648, 10251550, -4913980, 2841121, -2469606, 2438468, 8795556, -15975668, 16921098, 19163070,
-5410048, 8125005, -6461779, 10879689, 25228638, 847182, -2859911, -4611721, 10756746, -3769371,
--6069863, -2092186, 3834332, -12516072, 5616207, -11018739, 12679280, 2915746, 12768401, -7951058,
-11641509, 3500398, 15228343, 2561948, 3233574, -5393405, 9497246, 2418067, -2966212, 13698798,
--5282810, -9677098, 19346680, 15451682, 5728413, 14608258, 21166136, 25655988, -7924752, -7976828,
--8996883, 3253975, -11720966, 13927505, -1676111, -1213865, -19648402, 4627828, 22382686, 22808424,
--838056, -2925947, -15573551, 301185, 14873472, -7516193, -9207873, 8447127, 1362042, -8031052,
-2916283, -1255204, -4893579, -1056562, -4190278, -111132, 8650601, 6460168, -1705102, 1600412,
--2033667, -8533563, -11155641, -2025614, 5630166, 2324114, 7948374, -1527398, -7398081, -1971927,
-8240432, -3784403, 4709969, 7611756, -7543573, -1953136, -692027, 1998234, -362925, 5106716,
-3737695, 1891933, -7519414, 1988570, 4189204, 1330903, 1749125, 2808372, -6667937, -3062312,
-49929, -268972, -3517578, -8639327, -2782065, 847182, 4560719, 1075889, -3529926, -4080219,
--30380452, -21248276, 11064909, 4254165, -15961709, 1571421, 6951405, -14556718, -9190693, -6317360,
-17196512, 7673496, 5445482, -5561446, -4297652, -4434017, -10838350, -14420890, -25361246, 13104482,
-11200738, -5427765, 28470264, 13655312, 27333708, 18753974, 1676648, -8835821, 7188165, 3313567,
-12391518, 14271639, 15752866, -2326262, -2859375, 6697465, -7231115, -1704565, -6382859, -11882027,
--19531364, -5716065, 19734838, -4951561, -7987566, -11256036, 7804493, 11955578, 7905961, 750009,
-11596949, 22721988, -13654775, -6229313, -10529112, -7616051, -22009560, -5397164, 5464809, -10011569,
--7888781, -25286620, -36046588, 3912715, -23778550, -37317896, -27064200, -11378442, 24055574, 8318815,
-14646912, 11020886, -24943022, -10519449, 2062658, 12439836, -12437152, -14670535, -14246407, -4430259,
-7307350, -8443369, -31070330, -19522774, -4549981, -6300180, -2323577, -4618164, 17399986, 15947214,
-16453483, 16858820, 5519570, -161061, 6247030, 1753957, -628139, 4973036, -14056891, -5408975,
-5964099, 8160975, -474594, -4559108, -5145908, 2041183, -7700340, -11060078, 10055592, -8242042,
--4272956, 907312, -9711995, -9073118, -16498580, -6405944, -3955665, 1161789, 13593035, -3525631,
--2135136, -4344897, 6880538, -3687766, 272194, 6671695, 433792, -4712653, 2960306, 6656663,
--4193499, -997506, -319438, 3524558, -57669064, -9054328, 18529562, -19633906, 8053601, -7653095,
--31289374, -9751186, 33492692, 42184096, -22407382, 777926, -7725573, -34428996, -27423366, -25912612,
--27657442, -14790257, -18066780, -1501628, 5893232, -4825396, 7033546, 6484864, -11336029, -3115999,
--15550466, 6501507, -24473798, -22049826, 5258651, 3774203, -6691559, -8104067, 19149112, -5680631,
-26601954, 5854578, 24654722, -16752520, 10714870, 6936909, 29868276, 15937550, 10444287, 2809982,
-4482872, -3597035, 8741869, 12264279, -9721122, -13556527, 20883742, -2959769, -26322780, -50470160,
--60679296, -43781288, 7185481, -150861, -56516400, 18258442, 9532680, 14047227, -19331648, 2354179,
-6553583, 2422362, 28869160, 29417304, 58891516, 19495930, -31553514, -40491340, -24925306, -22419192,
--25925496, -23087060, -913754, 12466679, 16816408, -11024644, 22172232, -19246286, -26808112, -20893406,
--13919989, -10515691, -20983600, 12924630, -1584843, 12353937, 9454834, 1292785, 21755084, -11647951,
--5167920, -21964462, 7181186, 11441256, -1986422, -2149094, 6423661, -21110302, 595390, -7649337,
-3820374, -10289131, -14547054, 8489003, -602369, -6196564, -2469606, 10012106, -8249022, 5063767,
--7694971, 5796595, 5039071, -3196530, -7645042, 4450123, 4928475, -15661061, 6209986, -4181688,
--4756677, -4997195, 3095598, -10262824, -4698694, 32355600, -8655433, -61085172, -17468706, 50333796,
--6975027, 11251741, 7160784, 9429601, 17609366, 14468134, 5022428, -9925133, -3717294, 2547453,
--10895258, -2479270, 18460844, -16486232, -9871982, -16522739, -3995930, 2919504, 2102387, 4463008,
-8616778, -12539694, 11216844, 27623620, -522375, -15993921, 1443646, -10432476, -3651259, 16429324,
--17260400, 2044941, 5424544, 20078972, 28915868, -18300318, -10523207, 11316165, 1524177, 3273302,
-3338800, -12093554, -31200790, -5456756, -14532559, 28490666, -53893788, -35302484, -14599668, -5748814,
-15549929, 3386582, -19035832, -3077881, -21929030, -23539642, -8489540, -16983374, 3105261, 14179298,
-64756296, 12138114, -9644886, -41539312, -34280280, 10299868, -1070521, -38981124, 21095806, 21143050,
--39814884, -603980, 10327249, 11635066, 42885248, 18994492, 8937290, -42261404, -21898428, -29112362,
-26603564, -2529199, -8763881, -4582193, 8274792, 28255516, 23810224, -12397423, -25206090, -36603860,
-8877161, 21926344, -7722351, -3591667, 19108846, 11135240, 16645683, 4414690, 5892695, -13971529,
--4293894, -6498286, 7155953, 7739531, -2058900, -3074660, -2191507, 10375567, 11324755, -16457778,
-9580998, 7557532, 13696651, -8602819, -6234145, 8894340, 2960843, -11802033, -1361505, 14417668,
-2577517, -10206990, -21426518, -72515688, 10282152, 11188390, -2464774, -1225139, -5648419, -20915954,
-8118562, -4654134, 36888400, -38203736, -7859254, 38875360, -1874216, -26397406, -3318936, 22903986,
-27858768, 17086454, -5107790, 19917374, -15211700, 13426068, -6235219, -5266704, -13178033, 21821656,
-14814416, -14405320, -6687264, -2193655, 22125524, -2207613, 2252710, -14391362, 14869714, 9612137,
--16582869, 29752850, 1217086, -26988500, 23607288, -29311542, -15522549, 26451630, -56852484, -36283348,
-30713312, -19721952, 22734872, -36095980, 7888245, 13060459, -19906636, 622770, -1693291, -37252936,
--8749922, 38198364, 40324376, -46169288, -15420006, 13915157, -37047852, 47522740, 47589848, 6701760,
--68454264, -35993436, 72507640, -38511360, -7794829, 58788976, -34710852, -70666704, -15966004, 63578400,
--13849659, -46630996, -11561515, -85021024, -4006668, 68650760, -25192668, -68745784, -7102266, -19391778,
--9372692, 20312510, -2566780, -919123, -25130390, -16472273, -8091182, 27391154, -35029752, 1611150,
-5489505, -11040213, 1118839, 32625108, -21053930, -26421028, -3593277, 9120363, 20426864, -8269423,
-10228465, 15549392, 1691143, -23861764, -12780212, 441308, -19040664, -9301825, 36140004, -13772350,
--35458712, -9576166, 20524574, 8437463, -2772938, 4490925, -32072132, -18531174, 24260122, 35989140,
-4288525, -26847304, -13152264, 1061394, 9466645, 17995376, -10561325, -40075268, -37822020, -1156957,
--47663936, -14195941, -20425790, -19201188, -14594836, 30654256, -3648575, -10026601, -13274133, 5869610,
--16906066, -39692476, 30370250, 9490804, 26204670, 8142721, 27113592, -11029476, -17147656, 5923297,
--28849832, 22085258, -26147224, -5627481, 16857210, -19811074, -4370129, -12088722, -31593242, 4582193,
--23901494, -17246978, -20876226, -15469935, -9646497, -21192980, 3524021, 23179402, -15964930, -5772973,
-2707440, 21346524, -9963787, 7461969, -22207666, 35650376, 11047193, 15197205, 9662066, 34183644,
--2158221, -40523016, 8770323, 14494978, -11345693, -295279, 21126944, -28242094, -27959700, -32752346,
-28030030, 8169565, -40183176, 15445239, -26550950, -5344550, -37493992, 16374026, 26485452, 5319854,
--41512468, 23082228, 19154480, -5478768, -36486284, 9636296, -22034256, -7723425, -1634772, -11326366,
-17997524, -16491601, -29581588, 14456323, -6629282, 12189117, -193810, -1329829, -219043, -8252243,
--9220758, 6008123, 26356604, -3453154, -37266356, -10554345, 15495705, -18664854, -7852811, 17627082,
--6743099, -2831994, -14895483, 28951300, 17169132, -8888435, 13149579, -2613488, 5918465, 23422604,
--4279398, -21048024, 8699993, 13241921, -10684805, 16787954, -2731062, 10241350, 1255204, -8028905,
-14304389, 20447266, -11836930, -22167400, 8612483, 13123809, -10718091, -2500745, 12541305, 3995930,
-35314832, 66304096, -15899969, 32900524, 6442451, -15614890, -29567092, -17223356, 38592428, -12593918,
-7210177, 14994805, -3841848, 35563404, -5173288, 27916214, 29196650, -35734664, 18490908, -9333501,
-926639, 13152800, 10946261, -1187022, 5873368, 10650982, 35738960, 36715528, 28367186, -20685636,
--6999186, -48734456, -1401770, 11547020, 22080426, 5105643, -40273372, 17703856, -24142012, 31331786,
--28195924, -19748260, 2122251, -23636278, -3977140, -13636521, 48272748, -26313118, -12808129, -50482508,
--16342351, -26494042, 71402760, 43375412, -14936823, -48023640, -51418276, -30593052, 35571456, 46309948,
-23569170, 6842957, -61711700, -28685550, 20418812, 17362942, 2793339, 22374096, -12719009, -40679244,
-19368692, -69022808, 75196288, -7012608, -48423608, 112950120, 16315507, 39310224, 67810016, -112115824,
--80661632, 22382686, -6536940, 17146046, 24677808, -70092256, -5065377, 14149770, 1537061, 58721328,
-4296041, -30749818, -3080565, 31561030, -18187040, 13786308, 16355772, 639413, -12706661, 15431281,
--40674952, 31144418, -7825431, -13008919, 17723720, 4670240, 1392643, 18439906, -4218195, 11036992,
--2118493, 7074885, -5185100, -21460340, 13155485, 9037685, 12448963, -151934, 511101, 8400419,
-4837207, 3239479, 25103010, 27685896, 1739999, 18127984, -16934520, 2539400, -11070278, 20964272,
-19316078, 2918430, -5394479, -12666932, -29463476, 2429341, -29357712, 19871204, -41475964, 25678536,
--17064978, 42136852, -18996640, -1957431, 24012088, 4270271, 2116882, -10860899, -9392020, 1096827,
--16121697, 17779018, -2055142, 18879066, -14783814, -14595373, 4989142, 743029, -14985678, 9458055,
--1867237, 8253854, -4581120, -4059818, 7918309, -7531762, -582505, 5879274, -3026878, -3597035,
-29931090, -2057826, -9973988, -5358509, 14235669, -1301375, -16243566, 8639864, 17537426, 3531000,
-464393, -10359998, 3723737, -8391829, 8069707, 21250424, -7495255, 9713069, -7960722, -2396055,
--8723615, -4159676, 5663988, 6867116, -12362526, 7477538, 2283849, -1588601, -12357158, 2121177,
-4580583, -9216463, 13415867, 11187316, -22369800, 5719823, -20525112, -23423678, 16173236, -8348880,
-19521164, 10576894, 666257, 9947681, -3029026, -12093017, -2806224, 709743, 13633837, -6126771,
-4236449, 5567888, -7701950, -1432909, 4794257, -2368675, -1414655, 7826504, 537, 2990908,
--6371047, 2682744, -569083, -6683506, 12720619, 1093606, 10403485, -5053566, 8563091, -4256850,
-696858, -6663105, 5762236, -3246459, 12606803, -3913252, 11929809, -12173548, 2802466, 780073,
--2441689, 401043, 1600412, 9381819, -296890, -11077258, 7431367, -6252936, 1301375, 6683506,
--6725919, 11698954, -24361592, 51601348, 9773198, 12713103, -6512244, 4763656, -1458678, 9816685,
-3121368, 22022444, 1550483, -11870216, 7274601, -7727183, 3426310, 4552666, -10045929, 587874,
-2472828, -10845866, 9977746, 2605435, -4434554, 13421773, -4738423, 5338645, -4048544, 2546916,
-2589329, 1279363, -1639604, -3894462, -1784022, 1929514, 372052, -2168422, -6459094, 4912906,
--4323959, 2481954, 4312147, -4386772, 987843, -4092567, 1235877, -6527814, -10639171, 11095511,
--5880884, -2795487, 4727149, 2217277, -1838246, 1319092, 9530532, -10392210, 4571993, -3876745,
-8263517, -8723615, 5049271, 2528125, -1501091, 1988033, 257161, 183610, 4071092, -5493263,
-3181497, 2819646, -1455457, -479426, 7232725, -1040456, 2498597, -8267812, 11292006, -8650064,
--79994, 5688148, -5018670, 3903589, 1309965, 1421634, -5249524, 4348118, 4509179, -2732136,
-1818382, 2279554, -3724274, 1395864, 1914482, -752156, 3966939, 239444, -31675, -354872,
-3566970, 2772402, -2171106, 3117073, -1512902, 1432909, 1602023, -317291, 4423280, -1902671,
-90194, 2851322, -3392487, 340913, -291521, -2376191, 404801, 2558727, -679142, -1986959,
-4407174, -2714419, 9754408, -45804752, -113715168, 24567750, 94564976, 63926832, 133378600, -43619152,
--37289444, -76732808, -122642792, -12117713, 38227356, 50395000, 65765612, 33160906, 3637301, -10746545,
--28434830, -40550396, -6144488, -10827613, 3993783, 9315247, -483184, 2345589, 4903242, 2182380,
-16060493, 19078244, 11851425, -2179696, 2202245, -14105209, -29614336, -31549220, -15476915, -20689932,
-17043504, 31428424, 33343978, 36621040, 20061256, -5910949, -14462765, -26898306, -28432684, -19742354,
--11120744, -1266479, 7172059, 13817447, 14812805, 12479564, 10733123, -1829656, 2878702, -3161633,
-1415192, -2371359, -1479079, -837519, -10089952, -10545755, -7662759, -15903727, 9664, -2978560,
-1994476, 27105538, 35668628, 12068321, 12079059, -9762998, -19623706, -13530758, -23627152, -18938658,
-6671158, -1599875, -11461657, 8829916, 9411347, 11272142, 26692148, 11147588, 11700028, 2950643,
--14396194, -14135811, -11617887, -12621835, -16047072, -13647259, -8172249, 2565706, 17818208, 26927298,
-25154012, 10253698, 5066451, -6506876, -12207371, -10909754, -12099997, -13897440, -6401649, -5753109,
--498753, 4764730, 3593814, 10902774, 14368813, 10471667, 7074348, 2563559, -933619, -6751689,
--7075422, -10926397, -12399034, -9655623, -8703214, -2121177, 9212168, 13889924, 14851997, 13303124,
-5356898, 2531883, -6673843, -10450192, -5654862, -7698192, -10627360, -7919920, 1420024, 7295002,
-6718403, 3897683, 4257923, 3983582, 2929168, 984621, -800475, -1020592, -2873870, -3522947,
--3422015, -3826816, -4690105, -2426120, 1854352, 3567507, 3937411, 2598992, 1114007, 340376,
-282394, 299574, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-78920, 1278290, 969589, 4165582, 547608, -510027, -2685965, 6121939, 3781182, 199716,
+-754304, 6081137, 2064269, -1942399, -5333276, 3403762, -1536525, 2643552, -5076115, 328028,
+-1214402, -3770445, -1023813, -1896765, -703301, 289910, 23622, -2748779, -1690070, -435939,
+-531502, -1708860, 1829656, -175020, -1831804, 3262028, -5426691, -2572149, 2587718, -3256122,
+446140, -2020782, -2980707, 2026688, 1836099, -1596654, 2034204, 3926137, 2206540, -2034204,
+-2384781, 430570, 768799, -2398739, 2596845, 4330401, -3695283, -1177895, 2127620, 1596117,
+-882616, -1127966, -1806034, 2387465, 722628, -2856690, 3248069, 1585380, -2674154, -1999844,
+3415573, -2576981, -3299609, -6209449, -5404680, 2943126, 3397319, 275952, 1489817, -586800,
+1218697, -2297808, 3485366, -287226, 1611150, -1596117, 897111, -1453310, -1141388, 58519,
+2231773, -490163, -573378, -997506, 329102, -752693, 150324, 265751, -466004, -539018,
+67109, -25233, -185220, -591632, 298500, -215285, 7792682, -747861, -1573032, -3189550,
+4988068, -2654290, -282931, -4051765, -4323422, -5437429, -2558190, 4265440, -4413079, -1649804,
+-1552631, 1479079, -1098975, -6058052, 3157875, 1518271, 11778948, -1202591, 5510980, -1098438,
+-290984, -533113, 608812, -2483028, 4561792, -1197759, -918586, -2752537, -504122, -984084,
+7068980, 1312649, -715112, -6624450, -676994, -1273995, 1998770, -4210142, -1165547, 1139777,
+950262, -1164473, -710817, -2616172, -985158, -3144453, -1415192, 6103686, -1796370, 1932735,
+3407520, -824634, -3317325, -4352950, 1130650, 1021665, 1314797, 2705830, 3207267, 2641405,
+1526861, -1209570, -1173063, -1399623, -6128382, -1465658, -623307, 2968359, 2530810, -1514513,
+-148713, 3260417, -3400004, 1340030, 97174, -849330, -1967095, -2996814, -37044, 1783485,
+1803349, 1899986, -794032, 781147, -709743, 158914, 2672544, 1083942, 207232, 23085,
+-407485, -63351, 170725, 532039, -339302, -373125, 1159641, 594316, 1181116, 1210644,
+248571, 672699, -173409, 194884, 88047, -541703, -1371705, -249645, -10328859, -2523830,
+-209917, -2211908, -1535988, 3609920, -7258495, -6084358, -3565897, -2379949, 1024350, 8143795,
+-1778117, -25233, 971736, -5852430, -1538672, -4889284, -765578, 8625368, -676994, -4210142,
+-2742874, 99321, 1750736, 1720134, -2433636, -10946798, -5246303, -1473711, -4233227, 379031,
+186831, 4419522, -2870649, 3923990, 949188, -2035278, -5869073, -4916127, 6771553, -5616207,
+3715684, 1079647, -3605088, -1357747, -3220152, -2314451, 3183645, -6031208, 3103651, 1048509,
+-106300, 999654, 412854, -609885, 125628, -3061238, -4193499, 290447, -1283658, -3099356,
+-1256815, -4787278, 5546951, 3794604, 952409, 4538707, 532576, -1942936, 5637145, -2987687,
+-1875827, -1926293, 4289599, -4203163, 1859721, 3011846, 163746, 1862942, 4672925, 1707250,
+-146029, 289910, 992674, 771484, -926102, -566399, 55298, -246424, 1498944, 724239,
+1585380, 1175747, 450972, -1438277, -1683090, 1009854, -61203, -101469, 1534914, -1076426,
+-855772, -30065, 367757, 499827, -153008, -1731946, 1436667, 380641, -6940667, 8510478,
+9656697, 2647847, 2600603, -2760053, 4507568, 2260764, -5636608, 1770600, 3641596, -6739341,
+-5878737, 5925981, -5149129, -743566, -3314641, 5972689, 1315334, -676994, -2182917, -38118,
+-3854196, 3599183, -1916092, 2182917, -915902, -23622, 3898220, 1534377, 562641, -1495186,
+3820910, 2425046, 1149978, -317828, 3952444, -297427, 737661, -2472828, 4814659, 1088774,
+1931125, 3521873, -9615895, -3118146, -1881196, -3437585, -3335579, 990527, 5394479, -2307471,
+-1415729, -2929705, -1298154, 1176284, 2384781, -6616397, -378494, 2332167, 290447, -509491,
+2902324, 1893544, -6194954, -1722282, -1331440, 3864397, -4066797, 5451924, 5901285, 3095598,
+1235877, -2724083, -122407, 487479, 3953518, -1037235, 496069, 489626, 618475, 5826660,
+658204, 6207839, 2309619, 106300, -2942053, -1680406, 2560874, -504659, 19864, 262530,
+176094, 580894, 2607045, 752693, 1032940, 114890, 998580, -2047626, -151934, 667867,
+845572, -513249, -308164, 28991, 843961, -599148, -431107, 878321, 853088, 1578401,
+747324, 1461900, -836445, 130460, 193274, -554588, 1389959, 10682121, -1991254, -159451,
+3896609, 2520609, 1884954, 3598109, 9487046, -2655364, -877247, -9154186, 175020, -7867307,
+-9976672, 347892, 4242891, -12885439, 4366371, 4205310, 2304787, -3918084, -3096135, -4272419,
+-1622961, 239981, 267362, 4087735, 5405753, -748935, -5328981, -3239479, 4001299, -5731097,
+-2851322, -4845260, 1040993, -7825431, 3892851, 610422, -531502, 1249299, -253940, -1796907,
+4832, 5025112, -5811628, 7028177, -5345087, -631360, 1296006, -3552475, -2898029, 2745021,
+1355062, -1130650, -2718178, 5242545, 2189360, -3669513, -7334194, 841277, 1696512, 4282083,
+-178778, -1907502, 369904, 2263448, -1746441, 10189273, -3413425, -1669132, -7275675, -4831838,
+11507291, 4660040, -2556579, -670552, -4000762, -4491999, -357556, 1588064, 306016, -2187749,
+2485176, 1353452, 3444027, -379568, -2490007, 989453, 103079, -1152662, 1008244, 955093,
+-260382, 431644, 1362042, 431644, -322123, -1052267, 571768, 338229, -960999, 1872606,
+1597728, 497679, -938450, -2444910, 176094, -211527, -91268, 1050656, -1195612, 759672,
+1276142, -782758, 2943126, 6882148, -9192841, -5430986, 6428493, -4817343, -5130339, -5632313,
+-6733435, 4838818, -1702418, -200790, -1550483, 252329, -7492034, -1496259, 3425773, 3746822,
+849867, -3956202, -5750961, -4772246, -6068789, 1228898, 7233262, 973347, 2338073, 2478733,
+2410551, -4255239, 4455492, 2772938, -3189550, -2564632, -9826348, 1509144, 2187212, -7715909,
+-618475, 2370822, -1454920, 951872, -703301, -8278013, 7030862, -7712151, 6054830, 324807,
+3046743, -8680129, -4864588, -7772817, -6137509, 1129576, -2195802, -2763275, -3464965, -26844,
+3854733, -7192460, -135291, 2084670, -2335389, -8019241, -5033702, -1680943, 1496796, 3887482,
+1675574, -6605660, 7031935, -2275259, -1554778, 7000260, -9204652, -3028489, -1847910, -1647120,
+10981695, -4016868, -204548, -4168266, -3467112, 1991254, 1497333, -259309, 1159641, -887448,
+-1568737, 2044941, 10737, 829466, 861678, 2647311, -1059783, 763430, 572841, 172872,
+679142, -3035468, 3921305, 3565897, -1239098, -628676, 542240, -529892, 657130, 103079,
+-294742, -1466195, 874026, -763430, 327491, 3469260, 2204392, 1858110, -1452236, 2471217,
+972273, -1017370, 1111323, 365072, 817118, 14220100, -12597676, -6620155, -8378945, 6125160,
+2331630, -4256850, 2896956, -23622, 8475044, 574452, 124017, -8094403, 5784247, 9359807,
+9808632, 8169565, -4493610, -649077, 1290638, -5149129, -3519189, 1411434, 625455, -7438884,
+-3634079, -3106872, 3693135, -517544, -5621039, -2551748, 1894081, 4549444, 590021, -1516124,
+106300, -3921842, -77309, -192737, 646929, -8507256, 5035313, 5950677, 1251446, 3096672,
+3547643, -6873559, 9958955, 8996883, 1693828, -6110128, 3589519, -2120640, -9120900, -2265595,
+-2843805, -71404, 615254, -102005, -5487358, -4874251, -11339251, -9423158, 191126, 5835787,
+-5159867, 2505577, 805843, -3443490, -9223442, -837519, 5493800, -3517041, 4938139, 9672803,
+2981244, -3869229, 5599564, 71941, -509491, 2714956, 4376572, -279710, -674310, 1291711,
+2853469, -1434519, -6167573, 463856, -97711, 767189, 854699, 2198487, 4650913, -1530619,
+-723165, 3562675, 3218004, 785442, 537408, -2108829, 4488241, 611496, -213138, 2757369,
+911070, 1081258, 532039, 2500745, 2204929, 2490007, 3979287, 432181, 2410014, 454193,
+2674691, 1357210, 1556389, 1134945, 2538863, 2290828, -13496935, 1444720, -5030481, -18082886,
+-13909788, 3498788, 142808, -3102577, 3239479, 8724689, -1371168, 5236639, 4635344, 2706903,
+-1374926, -4690641, 3860102, -3991635, 498216, -3423626, 5455146, 9978820, -8941048, -2556043,
+569083, 3642669, 980326, -2764348, -1613834, -3310883, -244276, -4103305, 5277441, 1184337,
+-6281927, 7034083, -7008850, -2219424, 8614631, 7607461, 6408628, -7275138, -4779762, -6514392,
+7598334, 10308995, -139050, -2102923, 8170102, -11986180, 1491964, 3246995, -1146219, -10067403,
+9096741, 3209414, 4630512, 8552354, 468151, -12152073, 3212636, 5027259, -3102577, -879931,
+8410620, -8674760, -8152385, -7021735, 868657, 10849087, 5866389, -1534377, 12405476, -16456167,
+-6065568, 222801, 7946763, 3722126, -2367064, -13072270, -2029372, -5226975, 1474784, 5012764,
+12782360, 2206540, -3588445, 1702955, -2157147, -818191, -4205847, 51540, -3462818, 1225676,
+3498788, 2008971, 3222299, 3656091, 1167157, 813896, 45634, 680752, -1733019, -1791538,
+182536, 3859565, 1461900, -425739, 696858, 1580548, 3088618, 454193, -1005022, 570157,
+-981400, 2514167, -4543539, -2718178, -1996623, 2912525, 2496450, -14540075, 14723148, 5992016,
+-345745, -1481764, 1250372, 2541010, 7982734, -1497870, 893353, -2535105, -1826972, 4510790,
+2330557, 5235029, 2310693, 3029026, -9927817, -4104915, 16693464, 1705102, 4970888, 7024956,
+2644626, -5637682, -10474351, 3281355, -4363150, 410706, 3701188, -5203890, -6126771, 7495792,
+8791261, -4557497, -3238405, 6816113, -8344585, 3675418, -6419903, 2911451, -6213207, 9050570,
+1269700, -1181116, 3189013, 15538118, 4291746, 6027987, -1743220, 804233, 2654827, 11477763,
+-985158, 16443282, 496069, 7819525, -276489, 14843944, 5257040, 11081016, 8406325, -1855963,
+-4956929, -1328219, -5663988, -6246493, 8700530, -1748052, -3394098, 1356673, 130460, -4440996,
+-2163590, 1360968, 3894999, 1082332, -7437810, -7368017, -3828963, -7522635, -195958, -155693,
+-2211371, 2087891, -148176, 3062312, -448824, -3067144, 634581, -1294396, -5670431, -3575024,
+811212, 7587597, -3197066, 2810519, -856846, -79994, 3517041, -2636573, 1195612, 1724966,
+-1926830, -1313186, -947577, -2169495, 1069447, -2713346, -3541201, -1348620, -3837017, 4812511,
+-1351304, 295279, -413927, -284542, 508954, -1591285, 710280, 1219771, 624918, 1963337,
+2602750, 463856, 1939715, -1447404, -4151623, 831076, -1150514, 1743220, -1698660, 17060146,
+-4481262, -151934, -21030308, -751082, 11235634, -5887864, 9762461, -13380971, 1938641, 1337882,
+-391379, -17743584, -804233, -29561724, 1389422, -3267933, -12383464, -2168422, 1653026, -6496138,
+1118839, 7459822, 1142461, -6777996, 1249836, -2108292, 6547141, -7288560, 416075, 9462350,
+2128156, 768799, -1421634, 7246684, -4683662, 744640, -37044, 5556614, 1069984, -9993315,
+-5320391, -7055021, 8239358, -18703508, 9035001, 7414724, 6380174, 3546032, 1385664, -8200167,
+5820755, -12134356, -2875481, -2568927, -2518462, -559956, 761283, 3864934, -9320616, -3684008,
+15708843, 6559489, -5734318, -6687264, 1705639, -2794413, 4787278, -3222299, -971736, -5113696,
+14246407, 7229504, -4891968, 863825, -7257958, 1654099, -5479305, -1923072, 5657546, 5248450,
+-1646046, 10368051, -4085051, 5127654, -6812355, 7228967, 1061394, -4256313, -5735929, -8571681,
+2166274, -972810, 3892314, -1127966, -2522757, 1531693, 1596654, 2547453, 2085207, 4729833,
+-180389, 1495186, -3679713, 2936147, -2641405, -1369021, -1981054, -432181, -4684199, -847182,
+1833414, 4191351, -4025458, -1988570, -2908230, 2860985, 2239826, -1905892, -362925, -3176665,
+2412698, 10828149, 10940892, 6352257, 5672578, -5318244, 6309844, 10517838, -7812009, -278636,
+-20275466, 11618423, 7928510, -2887829, 4697621, -1303523, 1621350, 7234336, -4539781, 11315628,
+-10202158, 985695, 12741020, 5581847, 784368, 9835475, -3477850, 4519916, 2593087, 5270999,
+8705899, -5141076, -1042066, 16058883, 8028368, -348429, 2217277, -10875394, 14776835, -12437152,
+-783295, 12942347, 4016868, 13933948, -8742406, 2237678, -565325, -3405372, 1869385, -13452911,
+-9439264, 12687333, -6317360, -2713346, -4290136, -14306536, 10162429, -3369939, -2370822, -6336688,
+6251325, 14544907, -11464341, -2330020, 9803263, -10764799, -4698694, 8763881, 12220793, -20199232,
+-5390184, -1729798, 8619999, -302258, 10066866, -2441689, -7378754, 493921, 5357435, 13049721,
+6577206, -8764418, -459025, 6422587, -13007845, -7958575, -2492692, -6657200, -6775311, -792421,
+6168647, -5833103, 1441498, 6437082, 1784022, 1158031, 4494684, -1107565, 2892124, 2801393,
+2736968, 1581622, -518080, -3910568, -1340567, -1083406, -3575024, -1606318, 547608, 467078,
+-542240, 566936, 3929895, -3238405, -1060320, -2403034, 1877975, 1858110, -783295, -2680597,
+-5962489, 3010772, 2255395, 3878892, 1045288, 955093, -435402, -3686693, 1475858, -1475321,
+-1708860, -1065152, 10573136, 22405770, 4331475, -13243532, -4720169, 4399657, -29387776, 928787,
+179852, -4599910, -1442035, 13577465, -22179748, 4880157, 10369125, -8155069, 9189619, 17144436,
+4250407, -15838229, 4288525, -3986267, -287226, -15524696, -4690105, 14166950, -1591285, 12990665,
+-3418794, -4548371, 2125472, -10986526, -6179384, -7907572, -5867999, -4319127, 10597295, -11704323,
+1903207, 20461224, 13810467, 4618164, -20795694, 3461744, 13644037, 5715528, 811212, -7410966,
+-9030169, -22194780, -15337328, 3177739, -7590281, -7582765, -438087, 9492415, 6717866, -6667400,
+290984, 13503377, -5196374, -2276333, 612570, 17751100, 674310, -883153, 9023189, 2835752,
+-20193326, 5674189, 5848672, -88047, -16723529, 7068980, 9795210, -7338489, -5243618, -13699872,
+3650185, -5019743, 5190468, 2623688, -3230889, -5796595, 3784403, 1755031, 5843840, -2888903,
+9114994, 3245922, -6257231, 776315, -326418, -8564702, 159451, 723702, -31675, -146566,
+-4530654, -3887482, -1826435, -75699, 5713380, 1931662, 2986613, 4665408, -2117419, -2706903,
+2194728, -4431333, -4010426, -124554, -225486, 1440425, -1328219, 1060320, 2810519, 3045669,
+370441, -1722282, -429497, -178241, -506806, 92342, -745714, 418759, -103079, 3958349,
+-2238215, -2728378, 7094749, 5151277, -685047, 2047089, -6592775, 23167054, 1289564, -4651450,
+-300648, 10251550, -4913980, 2841121, -2469606, 2438468, 8795556, -15975668, 16921098, 19163070,
+5410048, 8125005, -6461779, 10879689, 25228638, 847182, -2859911, -4611721, 10756746, -3769371,
+-6069863, -2092186, 3834332, -12516072, 5616207, -11018739, 12679280, 2915746, 12768401, -7951058,
+11641509, 3500398, 15228343, 2561948, 3233574, -5393405, 9497246, 2418067, -2966212, 13698798,
+-5282810, -9677098, 19346680, 15451682, 5728413, 14608258, 21166136, 25655988, -7924752, -7976828,
+-8996883, 3253975, -11720966, 13927505, -1676111, -1213865, -19648402, 4627828, 22382686, 22808424,
+-838056, -2925947, -15573551, 301185, 14873472, -7516193, -9207873, 8447127, 1362042, -8031052,
+2916283, -1255204, -4893579, -1056562, -4190278, -111132, 8650601, 6460168, -1705102, 1600412,
+-2033667, -8533563, -11155641, -2025614, 5630166, 2324114, 7948374, -1527398, -7398081, -1971927,
+8240432, -3784403, 4709969, 7611756, -7543573, -1953136, -692027, 1998234, -362925, 5106716,
+3737695, 1891933, -7519414, 1988570, 4189204, 1330903, 1749125, 2808372, -6667937, -3062312,
+49929, -268972, -3517578, -8639327, -2782065, 847182, 4560719, 1075889, -3529926, -4080219,
+-30380452, -21248276, 11064909, 4254165, -15961709, 1571421, 6951405, -14556718, -9190693, -6317360,
+17196512, 7673496, 5445482, -5561446, -4297652, -4434017, -10838350, -14420890, -25361246, 13104482,
+11200738, -5427765, 28470264, 13655312, 27333708, 18753974, 1676648, -8835821, 7188165, 3313567,
+12391518, 14271639, 15752866, -2326262, -2859375, 6697465, -7231115, -1704565, -6382859, -11882027,
+-19531364, -5716065, 19734838, -4951561, -7987566, -11256036, 7804493, 11955578, 7905961, 750009,
+11596949, 22721988, -13654775, -6229313, -10529112, -7616051, -22009560, -5397164, 5464809, -10011569,
+-7888781, -25286620, -36046588, 3912715, -23778550, -37317896, -27064200, -11378442, 24055574, 8318815,
+14646912, 11020886, -24943022, -10519449, 2062658, 12439836, -12437152, -14670535, -14246407, -4430259,
+7307350, -8443369, -31070330, -19522774, -4549981, -6300180, -2323577, -4618164, 17399986, 15947214,
+16453483, 16858820, 5519570, -161061, 6247030, 1753957, -628139, 4973036, -14056891, -5408975,
+5964099, 8160975, -474594, -4559108, -5145908, 2041183, -7700340, -11060078, 10055592, -8242042,
+-4272956, 907312, -9711995, -9073118, -16498580, -6405944, -3955665, 1161789, 13593035, -3525631,
+-2135136, -4344897, 6880538, -3687766, 272194, 6671695, 433792, -4712653, 2960306, 6656663,
+-4193499, -997506, -319438, 3524558, -57669064, -9054328, 18529562, -19633906, 8053601, -7653095,
+-31289374, -9751186, 33492692, 42184096, -22407382, 777926, -7725573, -34428996, -27423366, -25912612,
+-27657442, -14790257, -18066780, -1501628, 5893232, -4825396, 7033546, 6484864, -11336029, -3115999,
+-15550466, 6501507, -24473798, -22049826, 5258651, 3774203, -6691559, -8104067, 19149112, -5680631,
+26601954, 5854578, 24654722, -16752520, 10714870, 6936909, 29868276, 15937550, 10444287, 2809982,
+4482872, -3597035, 8741869, 12264279, -9721122, -13556527, 20883742, -2959769, -26322780, -50470160,
+-60679296, -43781288, 7185481, -150861, -56516400, 18258442, 9532680, 14047227, -19331648, 2354179,
+6553583, 2422362, 28869160, 29417304, 58891516, 19495930, -31553514, -40491340, -24925306, -22419192,
+-25925496, -23087060, -913754, 12466679, 16816408, -11024644, 22172232, -19246286, -26808112, -20893406,
+-13919989, -10515691, -20983600, 12924630, -1584843, 12353937, 9454834, 1292785, 21755084, -11647951,
+-5167920, -21964462, 7181186, 11441256, -1986422, -2149094, 6423661, -21110302, 595390, -7649337,
+3820374, -10289131, -14547054, 8489003, -602369, -6196564, -2469606, 10012106, -8249022, 5063767,
+-7694971, 5796595, 5039071, -3196530, -7645042, 4450123, 4928475, -15661061, 6209986, -4181688,
+-4756677, -4997195, 3095598, -10262824, -4698694, 32355600, -8655433, -61085172, -17468706, 50333796,
+-6975027, 11251741, 7160784, 9429601, 17609366, 14468134, 5022428, -9925133, -3717294, 2547453,
+-10895258, -2479270, 18460844, -16486232, -9871982, -16522739, -3995930, 2919504, 2102387, 4463008,
+8616778, -12539694, 11216844, 27623620, -522375, -15993921, 1443646, -10432476, -3651259, 16429324,
+-17260400, 2044941, 5424544, 20078972, 28915868, -18300318, -10523207, 11316165, 1524177, 3273302,
+3338800, -12093554, -31200790, -5456756, -14532559, 28490666, -53893788, -35302484, -14599668, -5748814,
+15549929, 3386582, -19035832, -3077881, -21929030, -23539642, -8489540, -16983374, 3105261, 14179298,
+64756296, 12138114, -9644886, -41539312, -34280280, 10299868, -1070521, -38981124, 21095806, 21143050,
+-39814884, -603980, 10327249, 11635066, 42885248, 18994492, 8937290, -42261404, -21898428, -29112362,
+26603564, -2529199, -8763881, -4582193, 8274792, 28255516, 23810224, -12397423, -25206090, -36603860,
+8877161, 21926344, -7722351, -3591667, 19108846, 11135240, 16645683, 4414690, 5892695, -13971529,
+-4293894, -6498286, 7155953, 7739531, -2058900, -3074660, -2191507, 10375567, 11324755, -16457778,
+9580998, 7557532, 13696651, -8602819, -6234145, 8894340, 2960843, -11802033, -1361505, 14417668,
+2577517, -10206990, -21426518, -72515688, 10282152, 11188390, -2464774, -1225139, -5648419, -20915954,
+8118562, -4654134, 36888400, -38203736, -7859254, 38875360, -1874216, -26397406, -3318936, 22903986,
+27858768, 17086454, -5107790, 19917374, -15211700, 13426068, -6235219, -5266704, -13178033, 21821656,
+14814416, -14405320, -6687264, -2193655, 22125524, -2207613, 2252710, -14391362, 14869714, 9612137,
+-16582869, 29752850, 1217086, -26988500, 23607288, -29311542, -15522549, 26451630, -56852484, -36283348,
+30713312, -19721952, 22734872, -36095980, 7888245, 13060459, -19906636, 622770, -1693291, -37252936,
+-8749922, 38198364, 40324376, -46169288, -15420006, 13915157, -37047852, 47522740, 47589848, 6701760,
+-68454264, -35993436, 72507640, -38511360, -7794829, 58788976, -34710852, -70666704, -15966004, 63578400,
+-13849659, -46630996, -11561515, -85021024, -4006668, 68650760, -25192668, -68745784, -7102266, -19391778,
+-9372692, 20312510, -2566780, -919123, -25130390, -16472273, -8091182, 27391154, -35029752, 1611150,
+5489505, -11040213, 1118839, 32625108, -21053930, -26421028, -3593277, 9120363, 20426864, -8269423,
+10228465, 15549392, 1691143, -23861764, -12780212, 441308, -19040664, -9301825, 36140004, -13772350,
+-35458712, -9576166, 20524574, 8437463, -2772938, 4490925, -32072132, -18531174, 24260122, 35989140,
+4288525, -26847304, -13152264, 1061394, 9466645, 17995376, -10561325, -40075268, -37822020, -1156957,
+-47663936, -14195941, -20425790, -19201188, -14594836, 30654256, -3648575, -10026601, -13274133, 5869610,
+-16906066, -39692476, 30370250, 9490804, 26204670, 8142721, 27113592, -11029476, -17147656, 5923297,
+-28849832, 22085258, -26147224, -5627481, 16857210, -19811074, -4370129, -12088722, -31593242, 4582193,
+-23901494, -17246978, -20876226, -15469935, -9646497, -21192980, 3524021, 23179402, -15964930, -5772973,
+2707440, 21346524, -9963787, 7461969, -22207666, 35650376, 11047193, 15197205, 9662066, 34183644,
+-2158221, -40523016, 8770323, 14494978, -11345693, -295279, 21126944, -28242094, -27959700, -32752346,
+28030030, 8169565, -40183176, 15445239, -26550950, -5344550, -37493992, 16374026, 26485452, 5319854,
+-41512468, 23082228, 19154480, -5478768, -36486284, 9636296, -22034256, -7723425, -1634772, -11326366,
+17997524, -16491601, -29581588, 14456323, -6629282, 12189117, -193810, -1329829, -219043, -8252243,
+-9220758, 6008123, 26356604, -3453154, -37266356, -10554345, 15495705, -18664854, -7852811, 17627082,
+-6743099, -2831994, -14895483, 28951300, 17169132, -8888435, 13149579, -2613488, 5918465, 23422604,
+-4279398, -21048024, 8699993, 13241921, -10684805, 16787954, -2731062, 10241350, 1255204, -8028905,
+14304389, 20447266, -11836930, -22167400, 8612483, 13123809, -10718091, -2500745, 12541305, 3995930,
+35314832, 66304096, -15899969, 32900524, 6442451, -15614890, -29567092, -17223356, 38592428, -12593918,
+7210177, 14994805, -3841848, 35563404, -5173288, 27916214, 29196650, -35734664, 18490908, -9333501,
+926639, 13152800, 10946261, -1187022, 5873368, 10650982, 35738960, 36715528, 28367186, -20685636,
+-6999186, -48734456, -1401770, 11547020, 22080426, 5105643, -40273372, 17703856, -24142012, 31331786,
+-28195924, -19748260, 2122251, -23636278, -3977140, -13636521, 48272748, -26313118, -12808129, -50482508,
+-16342351, -26494042, 71402760, 43375412, -14936823, -48023640, -51418276, -30593052, 35571456, 46309948,
+23569170, 6842957, -61711700, -28685550, 20418812, 17362942, 2793339, 22374096, -12719009, -40679244,
+19368692, -69022808, 75196288, -7012608, -48423608, 112950120, 16315507, 39310224, 67810016, -112115824,
+-80661632, 22382686, -6536940, 17146046, 24677808, -70092256, -5065377, 14149770, 1537061, 58721328,
+4296041, -30749818, -3080565, 31561030, -18187040, 13786308, 16355772, 639413, -12706661, 15431281,
+-40674952, 31144418, -7825431, -13008919, 17723720, 4670240, 1392643, 18439906, -4218195, 11036992,
+-2118493, 7074885, -5185100, -21460340, 13155485, 9037685, 12448963, -151934, 511101, 8400419,
+4837207, 3239479, 25103010, 27685896, 1739999, 18127984, -16934520, 2539400, -11070278, 20964272,
+19316078, 2918430, -5394479, -12666932, -29463476, 2429341, -29357712, 19871204, -41475964, 25678536,
+-17064978, 42136852, -18996640, -1957431, 24012088, 4270271, 2116882, -10860899, -9392020, 1096827,
+-16121697, 17779018, -2055142, 18879066, -14783814, -14595373, 4989142, 743029, -14985678, 9458055,
+-1867237, 8253854, -4581120, -4059818, 7918309, -7531762, -582505, 5879274, -3026878, -3597035,
+29931090, -2057826, -9973988, -5358509, 14235669, -1301375, -16243566, 8639864, 17537426, 3531000,
+464393, -10359998, 3723737, -8391829, 8069707, 21250424, -7495255, 9713069, -7960722, -2396055,
+-8723615, -4159676, 5663988, 6867116, -12362526, 7477538, 2283849, -1588601, -12357158, 2121177,
+4580583, -9216463, 13415867, 11187316, -22369800, 5719823, -20525112, -23423678, 16173236, -8348880,
+19521164, 10576894, 666257, 9947681, -3029026, -12093017, -2806224, 709743, 13633837, -6126771,
+4236449, 5567888, -7701950, -1432909, 4794257, -2368675, -1414655, 7826504, 537, 2990908,
+-6371047, 2682744, -569083, -6683506, 12720619, 1093606, 10403485, -5053566, 8563091, -4256850,
+696858, -6663105, 5762236, -3246459, 12606803, -3913252, 11929809, -12173548, 2802466, 780073,
+-2441689, 401043, 1600412, 9381819, -296890, -11077258, 7431367, -6252936, 1301375, 6683506,
+-6725919, 11698954, -24361592, 51601348, 9773198, 12713103, -6512244, 4763656, -1458678, 9816685,
+3121368, 22022444, 1550483, -11870216, 7274601, -7727183, 3426310, 4552666, -10045929, 587874,
+2472828, -10845866, 9977746, 2605435, -4434554, 13421773, -4738423, 5338645, -4048544, 2546916,
+2589329, 1279363, -1639604, -3894462, -1784022, 1929514, 372052, -2168422, -6459094, 4912906,
+-4323959, 2481954, 4312147, -4386772, 987843, -4092567, 1235877, -6527814, -10639171, 11095511,
+-5880884, -2795487, 4727149, 2217277, -1838246, 1319092, 9530532, -10392210, 4571993, -3876745,
+8263517, -8723615, 5049271, 2528125, -1501091, 1988033, 257161, 183610, 4071092, -5493263,
+3181497, 2819646, -1455457, -479426, 7232725, -1040456, 2498597, -8267812, 11292006, -8650064,
+-79994, 5688148, -5018670, 3903589, 1309965, 1421634, -5249524, 4348118, 4509179, -2732136,
+1818382, 2279554, -3724274, 1395864, 1914482, -752156, 3966939, 239444, -31675, -354872,
+3566970, 2772402, -2171106, 3117073, -1512902, 1432909, 1602023, -317291, 4423280, -1902671,
+90194, 2851322, -3392487, 340913, -291521, -2376191, 404801, 2558727, -679142, -1986959,
+4407174, -2714419, 9754408, -45804752, -113715168, 24567750, 94564976, 63926832, 133378600, -43619152,
+-37289444, -76732808, -122642792, -12117713, 38227356, 50395000, 65765612, 33160906, 3637301, -10746545,
+-28434830, -40550396, -6144488, -10827613, 3993783, 9315247, -483184, 2345589, 4903242, 2182380,
+16060493, 19078244, 11851425, -2179696, 2202245, -14105209, -29614336, -31549220, -15476915, -20689932,
+17043504, 31428424, 33343978, 36621040, 20061256, -5910949, -14462765, -26898306, -28432684, -19742354,
+-11120744, -1266479, 7172059, 13817447, 14812805, 12479564, 10733123, -1829656, 2878702, -3161633,
+1415192, -2371359, -1479079, -837519, -10089952, -10545755, -7662759, -15903727, 9664, -2978560,
+1994476, 27105538, 35668628, 12068321, 12079059, -9762998, -19623706, -13530758, -23627152, -18938658,
+6671158, -1599875, -11461657, 8829916, 9411347, 11272142, 26692148, 11147588, 11700028, 2950643,
+-14396194, -14135811, -11617887, -12621835, -16047072, -13647259, -8172249, 2565706, 17818208, 26927298,
+25154012, 10253698, 5066451, -6506876, -12207371, -10909754, -12099997, -13897440, -6401649, -5753109,
+-498753, 4764730, 3593814, 10902774, 14368813, 10471667, 7074348, 2563559, -933619, -6751689,
+-7075422, -10926397, -12399034, -9655623, -8703214, -2121177, 9212168, 13889924, 14851997, 13303124,
+5356898, 2531883, -6673843, -10450192, -5654862, -7698192, -10627360, -7919920, 1420024, 7295002,
+6718403, 3897683, 4257923, 3983582, 2929168, 984621, -800475, -1020592, -2873870, -3522947,
+-3422015, -3826816, -4690105, -2426120, 1854352, 3567507, 3937411, 2598992, 1114007, 340376,
+282394, 299574, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-6425271,
-817654, 2046015, 1981591, 10121627, 2752537, 2140504, -2994129, 390842, -5127654, 1207423,
-4716948, -2387465, 228707, -991601, -2522220, -4063576, 3143916, -6799470, -3429532, -3411278,
-3693135, 4044786, 2133525, 970126, 2930778, 2420214, 4838281, -1676648, 1696512, 3010235,
-642635, 993748, -3521336, -1516124, -1469953, -1323924, 3272765, -6254546, 1051193, -2165201,
-6562710, 159988, -1175747, -1641751, -2698313, -897111, -2816425, -8250096, -2607045, -1612760,
--1327682, -1847910, 858993, -1543504, -382789, -528818, 2895882, 1295470, -367757, 1848983,
--1610613, 3546032, -2315524, -3839164, 3717831, 3893925, -1675037, -3687230, 360777, 2024540,
-1532230, 1759863, -1740536, 24159, 1433445, 1927367, 847182, -526670, 242129, 2394981,
-4616553, 2234457, -562641, -53150, -1086090, -1153199, 970126, -1519345, 942745, 1140314,
--440234, -148176, 510027, 444529, -456877, 386010, 270046, -2115272, 342524, 166967,
-663572, 378494, -803159, 767189, 612033, -53150, 9155797, -1711545, -875100, 984084,
-2527052, -6744710, 4202089, -8005819, -360240, -3874597, -569083, -2560338, -603980, -622233,
-4025458, -3390340, 4359929, -4542465, -4963372, 2106145, 6663105, -7851200, -2180233, -3796214,
-56371, -1973538, 2124398, 2819646, 1425392, 2872260, -4562866, 169114, 6407018, 2519535,
-817118, -4647155, -6641630, -3994320, 1020592, -3395172, -1917703, 1301375, 4315369, -3884798,
--3828963, 1555852, -2799245, 4958003, 1661079, -506269, 3495030, 3321620, -2684, 5572183,
-2756295, 1747515, 1476932, 3654480, 5748814, -3781182, 1100049, 1583232, -4039954, 363462,
-3284039, -1273458, 8302172, -2559801, -2201708, -1724429, 3062312, 4227859, -5382668, -2189360,
-1466731, -973347, 1322850, 523986, -2358474, 1056562, 504659, -1734093, -2852932, 1179505,
-801011, 2621004, 220654, 811212, 1202054, -113817, -856309, 1921998, 114890, -4832,
-1653562, -893890, 801011, 2208687, -185757, -474057, 417686, -326954, 681289, -1348620,
--423591, -626528, 89657, -202937, 863288, 93952, -845035, 40265, -11768747, -1913408,
--2631204, -2105071, -1063004, -1448478, 6245956, 7468948, -1718524, 6092948, 2317135, -3382287,
-1579474, -5121212, 890669, 1073205, -6884296, -1025960, 1056025, 1192390, 4741644, -923955,
-4116726, -2776160, -5284421, -5574868, -1605781, -2825015, -4235375, 4362076, -1727114, -853625,
--779000, 904628, 2364916, -6751689, 11811, 932545, -3211025, 8027831, 614180, -1990181,
--1757179, 8572218, -628676, 1081795, 5060009, 142808, 3086471, 1199907, 271120, 4727149,
--42950, -3320547, 4234301, 2272575, 2714419, 3845070, 1257352, -3135326, 2211371, 3154117,
-3053185, 4735739, 11811, -4399121, -3528316, 5555004, 7724499, -7072201, 1402307, -1876364,
--1262720, 1615445, 2938831, 2830920, -2277407, -915365, -2201708, -3650722, -3204046, -1176821,
--2043868, -3138547, 695785, -861141, 1169842, 1005559, -992137, 556198, 172336, -2551211,
-839129, -1727114, -3111167, 200790, -932008, -1305670, -1409286, -401579, 537945, -477278,
-869731, -600759, -1065689, -1439888, -1347009, -576599, 214212, 1015223, -8646306, 9238475,
-8559870, 6455336, -4484483, 5048734, 9108552, -2277943, 7121056, 2685965, 1080184, -1097364,
-7850664, 3714610, -1822140, -5612449, 3273839, -2320356, -2992519, 3184718, 3764539, 1654099,
--5566815, 914291, 5025649, -2436320, 1714229, -10969883, 1596654, -875636, 5304822, 1301375,
--2261837, -3302830, 6784975, -5820218, 488553, -4699768, 566936, -1435056, 3798362, -782221,
--1215476, -5761162, -1365800, -1011465, 7178501, 362388, -6532109, -237297, -343597, 2244121,
-3442953, -2910377, 31675, -3715147, 3988951, -867047, 4817343, -2585570, 7162932, 3550864,
--7863548, 8356933, -1184337, -5769215, 1002875, 7635915, 1571421, 1176821, -6153078, -401579,
--2371359, -3336116, -3213173, 294742, 2932389, 3759170, 2064269, 2054605, -2388002, 1813550,
--2066416, -238371, -89657, -964757, -379031, 2172180, -3410204, 934692, -312459, 300648,
-1176821, 937377, -69256, 1491964, 186831, -2260764, -2423435, 1436667, 686121, -99321,
--1591822, -320512, 413927, -219580, -681826, -1576790, 1017907, -28454, -956704, 1090922,
--628676, -433792, -1232656, -775778, -449361, -1595044, 1145146, 9941239, -3456375, -7241852,
--402116, -10848014, -38655, -9325448, -3259880, 6366216, -6660958, -7347079, 2166274, 580894,
-629213, -1742146, -2425583, -5325760, 3559991, -10395968, -3215320, 1024350, 6401649, 351650,
-6495601, 2291902, 14303852, 5462125, -176094, 603980, 6799470, -1657321, -2068027, -1309428,
-1107028, -4544076, -2268280, -7642358, -556735, -3526168, -2120640, 9352291, 129386, 5840619,
--2374043, 2365453, -614717, 3473018, -1193464, 3230889, -3244311, -4019016, -664109, 1099512,
--4049617, -4057134, 334471, 2043331, 4338454, -657130, -2058363, -917512, 4116189, 7021735,
-368293, -4832375, -6890202, 68719, 1867237, 689879, 9356049, -5907191, -338766, 4168266,
--1571421, -4953171, 6588480, 2996277, 1153736, -3301756, -3549791, -5904507, -2321430, -660888,
--3066070, -1556926, -2658585, 470836, 663036, 1437203, 169114, 403190, -3295314, -1727651,
--3531537, -1253057, -1033477, -2709051, -1720134, 888521, -330176, -1164473, -322659, 837519,
--2217814, 1068910, -1604707, -214748, -679679, -1235340, -440234, -63351, 973347, -1585380,
--2323041, 1159641, 602369, 8894340, -6857452, -1407676, 549756, -547071, -272730, -5645735,
--4354560, -622770, 3717294, 1344862, 1480153, 1559610, 3906810, -819265, 3570729, 2899640,
--9287867, -3571265, -10897406, 2810519, -3853660, 5462662, -3548180, -4811974, -3546032, 2835215,
--7272990, -6034429, 8396661, -4608500, 9105868, -2167348, 2720325, -3223910, -6178311, 6769406,
--5245229, -5864778, -616328, -3192771, -6912750, -5305895, -8709120, 353261, 5547487, 3207267,
--3405372, 9635759, 3501472, -3546032, -4512937, -6977711, 270046, -2616172, -4914517, -2462627,
--2105608, -3438121, 1800128, 7711614, -503585, 505732, -5261335, 2454037, 2573759, -4544613,
--3646964, 1845225, 9336722, 3737695, -2365990, -1240172, -2010582, -9652939, -7641284, -6407555,
-6667937, 7133404, -1078037, -3329674, 3076270, -2124398, 2695629, -1417876, 1254131, 224949,
-98247, -3127810, 2054068, -1828046, -1358283, -489089, 1832877, 1410360, -229244, -2610266,
-1617592, -376347, 1176284, -881542, -624918, -2303176, -1051730, -80531, -326954, 451508,
-403727, -289373, 350040, -1909113, 817654, 194347, 234613, -686658, 2334315, 1519345,
--144418, -932008, 191126, -1449015, 2645163, 12802761, -2414845, -15032, -2092186, 8337069,
-7903814, 2735894, -13153337, -2179159, -15977278, 9475235, 4006668, 277025, 16517370, 7822209,
--1439888, -7382512, 6815040, -3149822, 1700270, 2327336, 1085553, 5426691, -4794257, 9265855,
-3532611, 919660, -2786360, -4684199, 6286222, 5308580, -1004486, 3460133, -7858180, 1499481,
--10497437, 4311074, 607738, 5387500, -8617315, 1816234, -2804077, 1933809, 9837623, 8348880,
-409096, 2434710, -6088116, 8050916, 244276, 17102560, 18066244, -2367601, -4797479, -4888210,
--3890167, -10435160, -2909304, -13636521, 845572, -1111860, -741956, -2755759, 4820027, 8111583,
-12679817, 11800423, 9082782, -14870251, -10611254, -432718, 768262, 15669114, -10989748, 8435853,
--566399, -3121368, -1592359, -346282, -3075197, -8622147, -5641977, -1593433, 2556043, 852014,
--194884, -2321967, 1388885, -3029026, -273804, -1590749, 3341485, 3743601, -870268, -661425,
-3477313, 2675765, 469225, -468151, 1292785, 266288, 545998, -630286, 1518271, -71941,
--842887, -1348083, 465467, 1526324, 2240899, 4817880, 3744138, -1762547, 478352, -3346317,
--609349, 1563368, -246424, -625455, 124554, 740345, -4617627, 9197136, 1984812, -6772627,
--3738769, 17262548, 16975858, 19024558, -1854352, -788663, -3223910, 3213173, 9314710, 10716480,
-3120831, -4581120, -9138617, -18598820, 5535676, -10995653, -2400887, -1104344, -2367601, 1277216,
--539555, -3394098, -394600, -10768020, -4258997, 673773, -1980517, -12034498, -5070746, 1060857,
-8781061, -2447595, 270046, -9572408, -3221762, 148176, 6376953, -3863323, 3927748, -10699300,
--2971581, 2532420, 4089883, -2904472, 14431090, -2924336, -1810329, -7466801, -2458869, 5843840,
-1992328, -617938, 7536057, 10456635, 12166032, -2099165, -6067178, -6853694, 112743, 1483374,
-2864743, -4850092, 3933653, 5218922, 4366371, 4292820, 12163884, 8245801, 5441724, -603980,
-2746095, -12048994, -2255932, 1323387, 6205154, 9847286, -1846836, -5480915, 1736777, 3424700,
--2820183, 5072893, 4039417, 5480915, 850940, 2426657, -250719, -377420, -3920768, 3127273,
--1220308, 2073932, 1801739, 625992, 2885144, 310848, 4639639, 3330210, 2101850, 1366337,
-1309428, 70330, -593779, 435939, -1930051, -76773, -2414845, -3830574, -1546188, 868120,
-682363, 1755568, -796180, 1177358, -1600412, 795643, 2054605, -17603998, 21971442, -589484,
-3256122, 12027519, 244276, -4182225, 661962, -21380884, -12993350, -6096169, 3455838, -4191888,
-2481954, -9986873, 6968048, -3474092, -54761, 13231184, -12840878, -8548059, 12399571, -3853660,
--18070538, 1303523, -11126113, 2326262, -886911, 6801618, 2962454, 3437048, 1421634, -2170569,
-8092792, -882079, 10385768, 6337224, -3634616, -6191732, -5774584, 2828773, -2815351, 2845416,
-2045478, 6100464, 1822140, -11419244, 720481, 3894462, -3905736, 494995, -7837242, -1742146,
-741956, 523449, 18146236, -3154117, 12907987, 15397995, -4187056, 8245264, -2486786, -447750,
--8515310, 5442798, 13138842, 9153649, 2081449, 3599183, 8162586, -527207, 6773701, -2735357,
--3709241, -6531572, 3610994, 16727824, 3790309, -2162516, 1376000, -11762305, -3929895, 279710,
-11120207, 8077760, 3539053, 7172059, -2011118, 7043747, -27380, 4430259, 605590, -345745,
--801548, 4908611, -477815, -3099356, -1859184, -1234803, -705448, -1253057, -2426120, 3540664,
--2251100, -3077881, -843424, -4041027, -2726231, -3451543, -1927367, -2414309, -3038689, 1035087,
-770947, 1305133, 1149441, -1840930, -901943, -3191161, -4099010, -392990, -2258616, 1335735,
--1056025, 333934, 2078764, 2104534, 1518271, 3628711, -928250, -348966, 2830920, 21039434,
-3062849, 5246303, -4973036, -2522220, 14292041, -9432285, -2174327, -18562848, 17392470, 9081171,
-1258425, -6308770, -17513266, 1770063, -4654134, 2142652, -19637128, 7003481, 10385768, -11420855,
--2720862, 1703491, 1219771, 3794604, 11274826, 13853954, 57445, -34897, 2611877, 523449,
--8385924, -9614821, -6349573, -12669080, -6212670, 10783052, 5042292, -4042638, -5326297, -3544422,
--22234508, 4827543, 5367636, -10427644, 17075716, 602369, 12743168, -4590783, 8275328, -2733747,
--10981158, 983011, 10159208, -5600101, 5590437, 6493454, 18141404, 5004174, 5721434, 17350058,
-9941239, 6562173, -23989002, 4959077, 3710315, 4645007, 525060, -9818295, 17447230, -12950937,
-9968619, 10390600, -15631533, -3443490, 21480206, -19119584, 3280818, -4497368, -2026688, -6903086,
-8389145, -3601867, -7087233, -6113349, 3775276, 8089034, -7530689, 9396852, -7772280, -3446175,
-10763188, 3921305, -839666, -4743792, -4972499, -164283, -1945083, -8184597, -891206, -1766305,
--2237141, -772557, 6489159, -577673, -5890548, 519691, 2565706, 6114960, 3898757, 4851703,
--1908039, 2545842, -3489661, 141197, -1148904, 2536178, 5174362, -3817152, 2413772, 2383707,
--212601, 1374926, 1117228, -11361799, -16969952, -7668127, -7270843, -22669374, 14890652, 2056216,
-15918759, 602369, 2025077, -8058433, -4329864, 7584912, -898722, 7854422, -8417062, -2915209,
-1168231, -3996467, -6941204, 9427990, -10226317, 11293617, -4350802, 3458523, -2790655, -8207146,
--7369627, 3069291, -2848637, -408559, 5706401, 22926536, 1391033, -3295851, -8121247, 3022046,
-18490908, -3770981, -3338263, -11242614, -4042638, 1254131, -10602664, -4091493, -15011448, 9175124,
--18316424, -32956894, -3678103, 738734, 15315317, -16422881, 14696841, 9433896, -7904351, -15520401,
--2679523, 2202245, 4206384, 251792, 9209484, -6612639, -2602750, -32518808, -4545686, 32977832,
-3018825, -5884642, -4654671, -17541184, 12742094, -5832566, -5135171, -4544076, -2716030, -7753490,
--11337640, 3051038, 6180458, -607738, 4663261, -9651865, -17373680, -890132, -9255118, -2861522,
-104690, -9213779, 1872606, -6789807, -11714523, -8777303, -4350802, 3453154, 5065914, -1259499,
--13819594, -3662533, 660351, -6962679, -3189013, -825707, -6443525, -3917547, 1467268, -528281,
--5109938, -2208687, 2047089, 581431, -6727530, -2842195, -62814, 5761699, 6459094, 1541893,
--2225330, -2678449, -998580, 4234838, -1181116, -686121, 139586, 1445257, -5686000, 4847945,
--1338419, 3190087, 15620259, 13969381, -4265977, -5506685, -1213328, -22041772, 14780593, -13886166,
--11407433, -8830453, 5662915, 2374580, 13720810, 1783485, -7256347, -8560944, -8821863, 7108171,
--3295314, -4703526, 12559558, 13956496, 4873178, -9208410, 11589432, 18525804, -6873559, -3925600,
-16110422, 4204236, 3354906, -10294500, 145492, 15257334, -22199076, 15494631, -3185792, 2181307,
-9398462, 11232950, 74088, 5654862, -10365904, -8515310, 5959267, 21270826, 5849746, 5250061,
-8195872, -10612327, 2420751, 9482214, 5617281, -1687922, 7748121, 4778688, -12529493, 10392747,
--12205760, 2851858, 9235790, -9777493, 7672959, -11948599, -4600447, 2256469, 620623, 7729868,
--4735739, 6635188, -4845260, 974958, 2642479, -2194728, -4741644, -9669582, 26141318, 2808909,
-7969849, -11281268, -26294326, 18716930, -17817672, -7785702, 77309, -4141959, -2522220, -1554778,
--7261716, 4647692, 3920232, 2008434, -6696391, 8505646, 6715718, -2846490, -2741800, 2503966,
--2221035, 2353642, -2241436, 9011378, 3490198, 830539, 6567542, 6735046, -3744138, 20401,
-3403225, 4670240, 2090039, 2220498, -4074850, -5591511, 4655745, 5790153, 8594766, -1197222,
--7483981, -1121523, 911070, 3747359, -11607686, 4408784, -3735548, -1774358, 2952790, 2717104,
--2705830, 4046396, 556735, 3201361, -1671279, 7718593, -14532559, 15519864, -5622649, -15217069,
--19750944, -5477694, -1948841, 11708618, -17377974, -2741263, -1983201, 9238475, 17396766, 14425185,
-9002251, 1435593, -4376572, -2606508, -1715839, 12268037, 10084583, -2286533, 1651415, -2583423,
-7915088, -18875844, 11372537, 6309844, 8916352, 3084324, 2105071, 16414828, -6374269, -13821205,
-140660, -4493073, 1015760, -19200114, -10611254, -1047435, 16183437, -10803990, -3379603, 2742337,
--587874, 561030, 15905875, 6474127, -2395518, 1494112, 7813620, 5218386, 18520436, -5327907,
-8492761, 9495099, 5082557, -2885144, 3081639, -19985020, 8650064, -3646964, 972810, -4498978,
--10998874, -14750528, 3082713, -6973417, -20129438, 4965519, -17094506, -12502113, -2908767, -25742960,
--15613817, 3995930, 11091216, -12791486, 2844342, 1156957, 29770566, 28315646, 26654568, -675384,
-1550483, -13859323, -8383240, 11235634, -5947456, -3803194, 1890859, -3423626, 6293738, -7514582,
--3751654, -142808, 2424509, -4457639, 5776731, 5891622, 316754, -2312840, 1641214, 5765994,
--4499515, -5867999, -1479079, 5207111, -6787122, 11741904, 6725382, -376883, 5321465, -1691680,
--4741644, -7475391, -4077535, -6607271, -3600256, 4137664, 770410, 11870753, -2648921, -3556770,
--26189100, -28976534, 17293148, 15544024, 5236639, 16840566, 28176060, 8041790, -10699837, 9120900,
--4243965, -7905424, 12899397, 965294, -11497091, 7114077, 9291625, 2179159, 3286187, 746251,
-1455994, 25811142, -530428, 5558225, 2426120, 16033113, 965831, 25605522, -97711, -11210402,
-20470352, 4221953, -9021579, -3152506, 10847477, -2201171, -170188, 8516383, -15527381, 15556372,
--3259343, -22679574, -6345814, 2273112, -22698902, -2503429, -2356327, 10032507, 9671729, 17132624,
--11969537, 2653216, 2734284, 3600793, 7318088, -10836202, -12251394, 6478958, -288837, 13110388,
-10635413, 3331821, 27299886, -4500589, -4180077, -18602040, 27854474, 4971962, 19332722, 11880953,
--31054224, 4508642, 2841121, 19099182, -10087268, 8173860, 190052, -8209830, -1012539, -6623914,
-15359877, -29343216, -3558381, -2054068, 131533, 1386201, 4737349, 7251516, -91268, 13629005,
--518080, -1887101, -4344897, -2763812, 890132, -4664335, 1611150, -1232119, 4108673, 2929705,
--1388885, 1190243, -1580548, -8144869, -435939, 464930, 2087354, -8320426, 4490389, -1669132,
-4715874, 3774740, 6659347, -6730751, 7780334, -4172024, 2514703, 5666136, 5073430, -1687385,
-180926, -3007014, 4391067, -208306, 2138894, -51003, -912144, 11370389, 6339909, 212064,
-5240934, 1623498, 5443334, 17149804, -36230732, 21507048, 21883932, -9345312, 5200669, 3036542,
-5921686, 143345, 17424682, -12713640, -2742874, -13639742, -111669, -7715372, 1231045, 3647501,
--19869592, 8923331, 21599390, -14877767, -14230300, -14558329, 28758564, -12584791, -7046431, 2649458,
--9838159, -29819422, 5251672, 21599928, -29680908, -13485124, 10277857, 15902116, 4343286, -4548907,
-6896107, -10570451, -4916664, -586263, 14728517, -20244866, -16045461, 11368242, 18496276, 7233262,
--23052700, -7512972, 601832, -1113470, -3981435, 12006044, -3548180, 18144090, -14771466, -3277060,
-10201, -16998944, 10783589, -19782082, -13529684, 6245956, -8781061, 19130858, 27786828, 16316044,
--18302466, 9667971, -5347771, -5553930, -12900471, -4087198, -21055540, 16085189, 11938398, 5686537,
-694174, -10042170, -5542656, 6467684, -21971442, 17726940, -4137127, -3089155, 9376987, 1599339,
-8548596, -2461016, -1256278, -7585449, -2097018, 659278, 1584843, -5963025, -1990717, -2872796,
--2039036, 9936944, 1150514, -219043, -4691178, 4005057, 4071629, -3603478, 2295660, 4523675,
-1122597, 7653632, -2657511, -5480379, 1218160, -8901857, 4677757, 3243774, 1250372, -328565,
-3634079, -805843, 5869073, 1792075, 4214974, -7053947, -1991791, 6473053, 486405, 2605435,
-3467649, -6579890, 1081258, 6652368, 21021718, 35051764, -267362, -26563836, 5609228, -31694174,
-5411122, 14369887, 6747931, 1892470, 19030464, 14064944, -865973, -2922725, -26201448, -14133127,
-374736, -12277164, 35460324, -6492380, -8056285, -15336791, 1896765, 13320841, 9322763, -507880,
-6846178, 10371272, -15748034, 5362804, 30425012, 10755135, -20900922, -14749991, 9872519, -10354092,
--1422708, 7390565, -4640712, -17265232, -4128001, 2067490, 28991030, -6303402, 6432788, -7742753,
--23443542, 4074850, 29412472, -7939784, -17646946, 5114233, -10810433, 7176891, -6180458, -7204808,
-20212652, -5196374, -2313377, 9867687, -17431124, 6267431, 21392158, -8876087, 1835025, -12562242,
-37620692, -6863358, 4482872, 12195023, -8743480, -2108829, -10050223, 5262409, -11356430, -9592273,
--8959302, 14401562, -19565186, 2861522, -2900177, -5843840, 15202574, 334471, -5197448, -6464463,
-791348, 5702643, 4435628, -8715562, -1589675, 388158, -2435783, -10783589, -6488085, -1964948,
-2561411, 864899, 862215, 1506997, 8773008, -8866960, 9222905, 1820529, 2657511, 617938,
-7310035, -4152697, 12009265, -2646774, -198105, 9209484, 12062953, -6324340, 7881265, -3952444,
-2632278, -7010997, 6089190, 5122822, -10434623, -528281, -4185983, -1436130, -5228586, 3759170,
--6431177, 5761699, -10212358, -58040576, -20332376, -1046898, 18554796, -9729175, -29046326, -10940355,
--4250407, 14235132, 3709778, -3875134, -14361297, 15178414, 26949846, -12227772, 20374788, 5113696,
--38565048, 14393509, 18112414, -6350109, -15677704, -2935610, 23778550, 25373594, -2094333, -19232326,
-1351304, -2191507, -2480344, -16026670, 3971234, 7319698, -25428354, 17563196, 14932528, -17933636,
-3333968, -20120312, 7138236, 49196168, -43939664, 45485316, 20586316, 2063195, 27827094, 13834090,
--28437516, 17113834, -21379274, -4787278, 23390392, 1107565, 6714108, -11935177, -20818780, 63392644,
--14872935, 932545, 24989730, -12046310, 4893042, 1925756, 15448460, 35720708, 33946348, 32130650,
-2023467, -607738, -5143224, 1650878, -8653822, 2430952, 27269822, -7196218, -9429064, 2745558,
-3793530, 15839839, 18451180, 5275831, 5192079, 13115220, 5588290, -9976672, 3288871, -5135707,
--14778446, -6624987, 7806640, -11132555, -16044387, -12179454, -534723, 1496796, -9186398, 4753992,
-10452340, 1647120, -3346317, -595390, -11716134, 13943611, -2018635, -3006477, 9665287, -7938710,
-6580964, -5935108, -4743255, 16408386, -27380, -12129525, 15556372, -9503689, 9392020, 4416837,
--6058052, 4708358, -2107218, 11340861, -5147519, 3980361, 593242, 979789, -1165010, 12070469,
--6146098, -1377074, -834834, 2177549, -1711545, 5284958, 14854681, -3930432, -42831024, 19451906,
--31119722, 43751760, 5154498, -38045896, 8571144, 340913, 17852032, 8432095, -9225053, 32379758,
-7885560, 1651415, 21600464, -17275970, -24055574, 794569, 12562779, 43641700, -6161131, 124017,
--4594005, 31457952, 3399467, -24962886, -14789720, 4743792, -2792803, 13937706, -24300924, 11678553,
-3930969, 7208029, -2201708, -9464497, 5490579, 9778030, 63888, 29237990, -47144784, 4142496,
--16654809, -10300942, -6120329, -34417720, -50096500, -51782272, -37710888, 4027069, 142271, -30020748,
--294742, -5443871, 3186866, -18615462, -48278652, 47556024, -909996, -6982543, 9620727, -47106128,
--3302293, -11699491, 8782671, 13886703, 64666100, 48285632, -5480915, -552440, -1600949, 12757127,
-19496468, 11919071, 8850854, -1770063, -7900056, -45820320, 8578123, -900869, -17976048, -7974681,
-29870424, -4165045, -5560909, 14350023, -1311039, 15737834, -6205691, 7930120, -982474, -3226594,
-10971494, 13591424, -6292664, 1957968, 5881421, -2476049, 2706366, 758062, -293668, 9305047,
--4055523, -4639102, 7516193, -8875013, 11704323, 2147, 6262599, 9938554, -5103495, 2520609,
-8441221, -1987496, -5808944, -2009508, 802085, -1479616, 2182917, -11571179, -914828, -9144522,
-9535901, 1538672, 6356015, 4731980, -1583769, 387621, -836982, 4537096, 5845451, 5068599,
--12159589, 58932320, -56114284, 9695352, -10749229, 2247879, 23847806, -17277580, 6018323, 971200,
--60714732, 1574642, -6742025, 3018825, 7107634, -27093190, -10044855, -44895832, -11506217, -2130304,
-2542621, -16955458, -12707734, -19522774, -8078834, 19492710, 4322348, 39307004, 9698036, -13213467,
--13834627, 24175298, -26736708, 46224584, -35982164, 10564009, -29011430, 657667, 27865748, -50394460,
-47623672, 8451959, 5588826, -34587908, -6830609, -6513855, 98784, 16685411, 16692390, 20987358,
--39901320, -949725, -15628849, -13567265, -15297600, -21502216, -14813879, 817654, 23015656, -24405078,
-6694781, -44987100, -14969572, 11461120, 13524315, 2505577, -51147692, -27666032, -18154290, -26040924,
--21515638, 1891396, -16925392, 27350352, 8302172, 13746043, -9342628, -14053133, 45830524, -15244986,
-12409234, -9100499, 3682935, 34426312, 4726075, 6295349, -19098108, 19609210, 11467026, -7963943,
-18255758, -13495324, 5137855, -4937065, 12410845, 2572149, -3947075, 6773701, 15773804, -5219459,
-5155572, 5684389, 4837207, -1722282, 4371740, -2094870, 10888816, -3411278, 1956358, 10292352,
--1929514, -3799972, 3307125, 4548907, -6802155, -1381906, -19216220, 12332999, 8491150, 249645,
--10568304, -4221416, 1162326, 4252018, 15005005, -2229625, -3841312, 5360119, 4015795, -2015950,
-15188615, 3049964, -18036178, 4992900, 18277234, 25606596, -47421808, 72998336, -54465016, -5488968,
--32755032, 6787659, 983011, -19688130, -27981712, 33326262, 22473954, 10657961, -14156212, 14860587,
-4788889, 31484258, -24435142, -16042240, 19652696, 32720134, -41135588, 16988744, -1235340, 19945828,
--14679124, 6021544, -18105972, 4036196, -34132640, 11533061, 37091336, -976031, -2601140, 46056008,
-8207146, -20868172, -44515188, 38516192, -20000588, 17509508, -16201690, 45994268, 20402706, -4779762,
-4920959, -26227218, 3752728, 11639361, -12575664, 13029320, -55143620, 21973052, 50417548, 39510476,
--21520470, -22292490, -22454090, 25666724, 2260764, -7794829, 2261300, 65102040, -31431644, -14504105,
-25311316, -21328808, -58341764, 25138980, 13291850, -41567232, 23678154, 40801116, 35953172, -10646150,
--15790447, -28258200, 15499463, -17329120, -11087458, 26288422, 17892834, 8331700, 23003308, 13171054,
--8648454, -7926362, -29266980, 7177964, -12195023, 10512469, -10741713, 21318070, 14674830, 3524558,
--3780108, 20291572, -10760504, -1225139, 2734284, 7994545, 4780836, 9557376, 8614094, 1024350,
--4680441, -2530273, 7246147, 4092567, 2990371, 1325534, 11318849, 36531920, -971200, -2503966,
-5523865, -12212203, 4567698, 13388487, -18544596, 8575976, 9743133, -6766721, -5137855, 8884140,
-4871567, -10378788, -46938624, 25035364, -2776160, 6518687, -17227650, 15001247, 278099, 8225936,
-2454574, 2724083, -9822590, 7472170, 25339234, -32410896, 27805618, -4752382, -17176648, 5740224,
--11709691, 7558069, -11999065, -9783399, 8164733, -25829934, -2738042, 34463892, -49811420, 14057965,
-2274722, -8283382, -15384573, -18036716, -11864310, 36178656, -29868276, -4210679, 11562052, -30175904,
-7549479, 16656420, 10972031, 5749888, 5097590, -16981764, 13291850, -44397076, 481573, 39023536,
--16429324, -4285841, -8888972, -10889353, -468151, -31378494, 16523276, 12759274, -26196616, 24536612,
-6630893, -29553134, 12029667, -5635534, 21342766, 18895708, -27786290, 9778567, 30467424, -28732794,
-15964393, -20412368, 15993384, 18914500, -29529510, 16680579, -2327872, -15368467, 22157736, 1357210,
--35490388, 11026792, 15465103, 4930086, -10038412, 1910724, 26504780, -12156368, -25236690, 26823144,
--1364726, 2240899, -1401233, -3124589, 16123844, -11980274, -6105833, 11826192, 4182761, -2600066,
--12237972, 17923972, -6973953, -11314554, 697395, 9569724, -5816460, -4009352, -3038689, 14093398,
--11050414, -5274220, 709207, 7803419, -6930467, 5694590, -557272, 14017163, -8966281, 2510945,
-839666, 1700807, 24089398, -8378945, -106415864, -234564272, -92240864, -155486400, -212211120, 81916304,
-29929480, 70902392, 318740256, 265725872, 175572896, 273875584, 186482656, 23269596, 47242492, 34529388,
--144333984, -92707408, -63526324, -165281072, -168730480, -45921792, -46419468, -104464880, -30429844, -21673478,
--126058904, -108241232, -34498788, -59095528, -119012472, -28282896, -19160386, -93015032, -9922448, 66413080,
--27414776, -21930104, 97543536, 60239064, -38458748, 86545200, 142094160, 16731582, 80344880, 174187232,
-85668488, 44741748, 187810336, 137587664, 102572944, 227844800, 307889568, 243753360, 282925600, 366358016,
-239577040, 157158224, 205816976, 132957152, -35803384, -8074002, -89920512, -224297152, -317518880, -341648000,
--457647008, -520731488, -552917952, -534852288, -513977664, -511009856, -426680320, -326364352, -306217760, -199535056,
-16931834, 85929944, 111173616, 335034304, 328798016, 227063104, 334043776, 306245664, 166558832, 161895568,
-213347136, 129408440, 61351996, 149486880, 152477248, 68977712, 123349848, 185794384, 123454536, 73828344,
-158160016, 131148976, 26970784, 80641232, 116485952, 13713294, 22687628, 127436512, 78206520, 42454676,
-135013376, 133860168, 49293340, 106783624, 92249456, -23176718, -65720516, -68127312, -157736432, -213777696,
--211134144, -243776432, -268844544, -278795456, -272988672, -280032416, -311534912, -322285760, -308402816, -344053184,
--294648704, -200646384, -153515552, -52246128, 88911728, 186234080, 272623584, 352035936, 357820704, 306426592,
-278176992, 228533056, 172809088, 139306192, 116966992, 94453312, 73554000, 66612260, 61385820, 45123464,
-37513856, 33026152, 15964930, -3494493, -15859704, -34508452, -52265992, -54976120, -43868260, -32267016,
--24082956, -21229486, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+817654, 2046015, 1981591, 10121627, 2752537, 2140504, -2994129, 390842, -5127654, 1207423,
+4716948, -2387465, 228707, -991601, -2522220, -4063576, 3143916, -6799470, -3429532, -3411278,
+3693135, 4044786, 2133525, 970126, 2930778, 2420214, 4838281, -1676648, 1696512, 3010235,
+642635, 993748, -3521336, -1516124, -1469953, -1323924, 3272765, -6254546, 1051193, -2165201,
+6562710, 159988, -1175747, -1641751, -2698313, -897111, -2816425, -8250096, -2607045, -1612760,
+-1327682, -1847910, 858993, -1543504, -382789, -528818, 2895882, 1295470, -367757, 1848983,
+-1610613, 3546032, -2315524, -3839164, 3717831, 3893925, -1675037, -3687230, 360777, 2024540,
+1532230, 1759863, -1740536, 24159, 1433445, 1927367, 847182, -526670, 242129, 2394981,
+4616553, 2234457, -562641, -53150, -1086090, -1153199, 970126, -1519345, 942745, 1140314,
+-440234, -148176, 510027, 444529, -456877, 386010, 270046, -2115272, 342524, 166967,
+663572, 378494, -803159, 767189, 612033, -53150, 9155797, -1711545, -875100, 984084,
+2527052, -6744710, 4202089, -8005819, -360240, -3874597, -569083, -2560338, -603980, -622233,
+4025458, -3390340, 4359929, -4542465, -4963372, 2106145, 6663105, -7851200, -2180233, -3796214,
+56371, -1973538, 2124398, 2819646, 1425392, 2872260, -4562866, 169114, 6407018, 2519535,
+817118, -4647155, -6641630, -3994320, 1020592, -3395172, -1917703, 1301375, 4315369, -3884798,
+-3828963, 1555852, -2799245, 4958003, 1661079, -506269, 3495030, 3321620, -2684, 5572183,
+2756295, 1747515, 1476932, 3654480, 5748814, -3781182, 1100049, 1583232, -4039954, 363462,
+3284039, -1273458, 8302172, -2559801, -2201708, -1724429, 3062312, 4227859, -5382668, -2189360,
+1466731, -973347, 1322850, 523986, -2358474, 1056562, 504659, -1734093, -2852932, 1179505,
+801011, 2621004, 220654, 811212, 1202054, -113817, -856309, 1921998, 114890, -4832,
+1653562, -893890, 801011, 2208687, -185757, -474057, 417686, -326954, 681289, -1348620,
+-423591, -626528, 89657, -202937, 863288, 93952, -845035, 40265, -11768747, -1913408,
+-2631204, -2105071, -1063004, -1448478, 6245956, 7468948, -1718524, 6092948, 2317135, -3382287,
+1579474, -5121212, 890669, 1073205, -6884296, -1025960, 1056025, 1192390, 4741644, -923955,
+4116726, -2776160, -5284421, -5574868, -1605781, -2825015, -4235375, 4362076, -1727114, -853625,
+-779000, 904628, 2364916, -6751689, 11811, 932545, -3211025, 8027831, 614180, -1990181,
+-1757179, 8572218, -628676, 1081795, 5060009, 142808, 3086471, 1199907, 271120, 4727149,
+-42950, -3320547, 4234301, 2272575, 2714419, 3845070, 1257352, -3135326, 2211371, 3154117,
+3053185, 4735739, 11811, -4399121, -3528316, 5555004, 7724499, -7072201, 1402307, -1876364,
+-1262720, 1615445, 2938831, 2830920, -2277407, -915365, -2201708, -3650722, -3204046, -1176821,
+-2043868, -3138547, 695785, -861141, 1169842, 1005559, -992137, 556198, 172336, -2551211,
+839129, -1727114, -3111167, 200790, -932008, -1305670, -1409286, -401579, 537945, -477278,
+869731, -600759, -1065689, -1439888, -1347009, -576599, 214212, 1015223, -8646306, 9238475,
+8559870, 6455336, -4484483, 5048734, 9108552, -2277943, 7121056, 2685965, 1080184, -1097364,
+7850664, 3714610, -1822140, -5612449, 3273839, -2320356, -2992519, 3184718, 3764539, 1654099,
+-5566815, 914291, 5025649, -2436320, 1714229, -10969883, 1596654, -875636, 5304822, 1301375,
+-2261837, -3302830, 6784975, -5820218, 488553, -4699768, 566936, -1435056, 3798362, -782221,
+-1215476, -5761162, -1365800, -1011465, 7178501, 362388, -6532109, -237297, -343597, 2244121,
+3442953, -2910377, 31675, -3715147, 3988951, -867047, 4817343, -2585570, 7162932, 3550864,
+-7863548, 8356933, -1184337, -5769215, 1002875, 7635915, 1571421, 1176821, -6153078, -401579,
+-2371359, -3336116, -3213173, 294742, 2932389, 3759170, 2064269, 2054605, -2388002, 1813550,
+-2066416, -238371, -89657, -964757, -379031, 2172180, -3410204, 934692, -312459, 300648,
+1176821, 937377, -69256, 1491964, 186831, -2260764, -2423435, 1436667, 686121, -99321,
+-1591822, -320512, 413927, -219580, -681826, -1576790, 1017907, -28454, -956704, 1090922,
+-628676, -433792, -1232656, -775778, -449361, -1595044, 1145146, 9941239, -3456375, -7241852,
+-402116, -10848014, -38655, -9325448, -3259880, 6366216, -6660958, -7347079, 2166274, 580894,
+629213, -1742146, -2425583, -5325760, 3559991, -10395968, -3215320, 1024350, 6401649, 351650,
+6495601, 2291902, 14303852, 5462125, -176094, 603980, 6799470, -1657321, -2068027, -1309428,
+1107028, -4544076, -2268280, -7642358, -556735, -3526168, -2120640, 9352291, 129386, 5840619,
+-2374043, 2365453, -614717, 3473018, -1193464, 3230889, -3244311, -4019016, -664109, 1099512,
+-4049617, -4057134, 334471, 2043331, 4338454, -657130, -2058363, -917512, 4116189, 7021735,
+368293, -4832375, -6890202, 68719, 1867237, 689879, 9356049, -5907191, -338766, 4168266,
+-1571421, -4953171, 6588480, 2996277, 1153736, -3301756, -3549791, -5904507, -2321430, -660888,
+-3066070, -1556926, -2658585, 470836, 663036, 1437203, 169114, 403190, -3295314, -1727651,
+-3531537, -1253057, -1033477, -2709051, -1720134, 888521, -330176, -1164473, -322659, 837519,
+-2217814, 1068910, -1604707, -214748, -679679, -1235340, -440234, -63351, 973347, -1585380,
+-2323041, 1159641, 602369, 8894340, -6857452, -1407676, 549756, -547071, -272730, -5645735,
+-4354560, -622770, 3717294, 1344862, 1480153, 1559610, 3906810, -819265, 3570729, 2899640,
+-9287867, -3571265, -10897406, 2810519, -3853660, 5462662, -3548180, -4811974, -3546032, 2835215,
+-7272990, -6034429, 8396661, -4608500, 9105868, -2167348, 2720325, -3223910, -6178311, 6769406,
+-5245229, -5864778, -616328, -3192771, -6912750, -5305895, -8709120, 353261, 5547487, 3207267,
+-3405372, 9635759, 3501472, -3546032, -4512937, -6977711, 270046, -2616172, -4914517, -2462627,
+-2105608, -3438121, 1800128, 7711614, -503585, 505732, -5261335, 2454037, 2573759, -4544613,
+-3646964, 1845225, 9336722, 3737695, -2365990, -1240172, -2010582, -9652939, -7641284, -6407555,
+6667937, 7133404, -1078037, -3329674, 3076270, -2124398, 2695629, -1417876, 1254131, 224949,
+98247, -3127810, 2054068, -1828046, -1358283, -489089, 1832877, 1410360, -229244, -2610266,
+1617592, -376347, 1176284, -881542, -624918, -2303176, -1051730, -80531, -326954, 451508,
+403727, -289373, 350040, -1909113, 817654, 194347, 234613, -686658, 2334315, 1519345,
+-144418, -932008, 191126, -1449015, 2645163, 12802761, -2414845, -15032, -2092186, 8337069,
+7903814, 2735894, -13153337, -2179159, -15977278, 9475235, 4006668, 277025, 16517370, 7822209,
+-1439888, -7382512, 6815040, -3149822, 1700270, 2327336, 1085553, 5426691, -4794257, 9265855,
+3532611, 919660, -2786360, -4684199, 6286222, 5308580, -1004486, 3460133, -7858180, 1499481,
+-10497437, 4311074, 607738, 5387500, -8617315, 1816234, -2804077, 1933809, 9837623, 8348880,
+409096, 2434710, -6088116, 8050916, 244276, 17102560, 18066244, -2367601, -4797479, -4888210,
+-3890167, -10435160, -2909304, -13636521, 845572, -1111860, -741956, -2755759, 4820027, 8111583,
+12679817, 11800423, 9082782, -14870251, -10611254, -432718, 768262, 15669114, -10989748, 8435853,
+-566399, -3121368, -1592359, -346282, -3075197, -8622147, -5641977, -1593433, 2556043, 852014,
+-194884, -2321967, 1388885, -3029026, -273804, -1590749, 3341485, 3743601, -870268, -661425,
+3477313, 2675765, 469225, -468151, 1292785, 266288, 545998, -630286, 1518271, -71941,
+-842887, -1348083, 465467, 1526324, 2240899, 4817880, 3744138, -1762547, 478352, -3346317,
+-609349, 1563368, -246424, -625455, 124554, 740345, -4617627, 9197136, 1984812, -6772627,
+-3738769, 17262548, 16975858, 19024558, -1854352, -788663, -3223910, 3213173, 9314710, 10716480,
+3120831, -4581120, -9138617, -18598820, 5535676, -10995653, -2400887, -1104344, -2367601, 1277216,
+-539555, -3394098, -394600, -10768020, -4258997, 673773, -1980517, -12034498, -5070746, 1060857,
+8781061, -2447595, 270046, -9572408, -3221762, 148176, 6376953, -3863323, 3927748, -10699300,
+-2971581, 2532420, 4089883, -2904472, 14431090, -2924336, -1810329, -7466801, -2458869, 5843840,
+1992328, -617938, 7536057, 10456635, 12166032, -2099165, -6067178, -6853694, 112743, 1483374,
+2864743, -4850092, 3933653, 5218922, 4366371, 4292820, 12163884, 8245801, 5441724, -603980,
+2746095, -12048994, -2255932, 1323387, 6205154, 9847286, -1846836, -5480915, 1736777, 3424700,
+-2820183, 5072893, 4039417, 5480915, 850940, 2426657, -250719, -377420, -3920768, 3127273,
+-1220308, 2073932, 1801739, 625992, 2885144, 310848, 4639639, 3330210, 2101850, 1366337,
+1309428, 70330, -593779, 435939, -1930051, -76773, -2414845, -3830574, -1546188, 868120,
+682363, 1755568, -796180, 1177358, -1600412, 795643, 2054605, -17603998, 21971442, -589484,
+3256122, 12027519, 244276, -4182225, 661962, -21380884, -12993350, -6096169, 3455838, -4191888,
+2481954, -9986873, 6968048, -3474092, -54761, 13231184, -12840878, -8548059, 12399571, -3853660,
+-18070538, 1303523, -11126113, 2326262, -886911, 6801618, 2962454, 3437048, 1421634, -2170569,
+8092792, -882079, 10385768, 6337224, -3634616, -6191732, -5774584, 2828773, -2815351, 2845416,
+2045478, 6100464, 1822140, -11419244, 720481, 3894462, -3905736, 494995, -7837242, -1742146,
+741956, 523449, 18146236, -3154117, 12907987, 15397995, -4187056, 8245264, -2486786, -447750,
+-8515310, 5442798, 13138842, 9153649, 2081449, 3599183, 8162586, -527207, 6773701, -2735357,
+-3709241, -6531572, 3610994, 16727824, 3790309, -2162516, 1376000, -11762305, -3929895, 279710,
+11120207, 8077760, 3539053, 7172059, -2011118, 7043747, -27380, 4430259, 605590, -345745,
+-801548, 4908611, -477815, -3099356, -1859184, -1234803, -705448, -1253057, -2426120, 3540664,
+-2251100, -3077881, -843424, -4041027, -2726231, -3451543, -1927367, -2414309, -3038689, 1035087,
+770947, 1305133, 1149441, -1840930, -901943, -3191161, -4099010, -392990, -2258616, 1335735,
+-1056025, 333934, 2078764, 2104534, 1518271, 3628711, -928250, -348966, 2830920, 21039434,
+3062849, 5246303, -4973036, -2522220, 14292041, -9432285, -2174327, -18562848, 17392470, 9081171,
+1258425, -6308770, -17513266, 1770063, -4654134, 2142652, -19637128, 7003481, 10385768, -11420855,
+-2720862, 1703491, 1219771, 3794604, 11274826, 13853954, 57445, -34897, 2611877, 523449,
+-8385924, -9614821, -6349573, -12669080, -6212670, 10783052, 5042292, -4042638, -5326297, -3544422,
+-22234508, 4827543, 5367636, -10427644, 17075716, 602369, 12743168, -4590783, 8275328, -2733747,
+-10981158, 983011, 10159208, -5600101, 5590437, 6493454, 18141404, 5004174, 5721434, 17350058,
+9941239, 6562173, -23989002, 4959077, 3710315, 4645007, 525060, -9818295, 17447230, -12950937,
+9968619, 10390600, -15631533, -3443490, 21480206, -19119584, 3280818, -4497368, -2026688, -6903086,
+8389145, -3601867, -7087233, -6113349, 3775276, 8089034, -7530689, 9396852, -7772280, -3446175,
+10763188, 3921305, -839666, -4743792, -4972499, -164283, -1945083, -8184597, -891206, -1766305,
+-2237141, -772557, 6489159, -577673, -5890548, 519691, 2565706, 6114960, 3898757, 4851703,
+-1908039, 2545842, -3489661, 141197, -1148904, 2536178, 5174362, -3817152, 2413772, 2383707,
+-212601, 1374926, 1117228, -11361799, -16969952, -7668127, -7270843, -22669374, 14890652, 2056216,
+15918759, 602369, 2025077, -8058433, -4329864, 7584912, -898722, 7854422, -8417062, -2915209,
+1168231, -3996467, -6941204, 9427990, -10226317, 11293617, -4350802, 3458523, -2790655, -8207146,
+-7369627, 3069291, -2848637, -408559, 5706401, 22926536, 1391033, -3295851, -8121247, 3022046,
+18490908, -3770981, -3338263, -11242614, -4042638, 1254131, -10602664, -4091493, -15011448, 9175124,
+-18316424, -32956894, -3678103, 738734, 15315317, -16422881, 14696841, 9433896, -7904351, -15520401,
+-2679523, 2202245, 4206384, 251792, 9209484, -6612639, -2602750, -32518808, -4545686, 32977832,
+3018825, -5884642, -4654671, -17541184, 12742094, -5832566, -5135171, -4544076, -2716030, -7753490,
+-11337640, 3051038, 6180458, -607738, 4663261, -9651865, -17373680, -890132, -9255118, -2861522,
+104690, -9213779, 1872606, -6789807, -11714523, -8777303, -4350802, 3453154, 5065914, -1259499,
+-13819594, -3662533, 660351, -6962679, -3189013, -825707, -6443525, -3917547, 1467268, -528281,
+-5109938, -2208687, 2047089, 581431, -6727530, -2842195, -62814, 5761699, 6459094, 1541893,
+-2225330, -2678449, -998580, 4234838, -1181116, -686121, 139586, 1445257, -5686000, 4847945,
+-1338419, 3190087, 15620259, 13969381, -4265977, -5506685, -1213328, -22041772, 14780593, -13886166,
+-11407433, -8830453, 5662915, 2374580, 13720810, 1783485, -7256347, -8560944, -8821863, 7108171,
+-3295314, -4703526, 12559558, 13956496, 4873178, -9208410, 11589432, 18525804, -6873559, -3925600,
+16110422, 4204236, 3354906, -10294500, 145492, 15257334, -22199076, 15494631, -3185792, 2181307,
+9398462, 11232950, 74088, 5654862, -10365904, -8515310, 5959267, 21270826, 5849746, 5250061,
+8195872, -10612327, 2420751, 9482214, 5617281, -1687922, 7748121, 4778688, -12529493, 10392747,
+-12205760, 2851858, 9235790, -9777493, 7672959, -11948599, -4600447, 2256469, 620623, 7729868,
+-4735739, 6635188, -4845260, 974958, 2642479, -2194728, -4741644, -9669582, 26141318, 2808909,
+7969849, -11281268, -26294326, 18716930, -17817672, -7785702, 77309, -4141959, -2522220, -1554778,
+-7261716, 4647692, 3920232, 2008434, -6696391, 8505646, 6715718, -2846490, -2741800, 2503966,
+-2221035, 2353642, -2241436, 9011378, 3490198, 830539, 6567542, 6735046, -3744138, 20401,
+3403225, 4670240, 2090039, 2220498, -4074850, -5591511, 4655745, 5790153, 8594766, -1197222,
+-7483981, -1121523, 911070, 3747359, -11607686, 4408784, -3735548, -1774358, 2952790, 2717104,
+-2705830, 4046396, 556735, 3201361, -1671279, 7718593, -14532559, 15519864, -5622649, -15217069,
+-19750944, -5477694, -1948841, 11708618, -17377974, -2741263, -1983201, 9238475, 17396766, 14425185,
+9002251, 1435593, -4376572, -2606508, -1715839, 12268037, 10084583, -2286533, 1651415, -2583423,
+7915088, -18875844, 11372537, 6309844, 8916352, 3084324, 2105071, 16414828, -6374269, -13821205,
+140660, -4493073, 1015760, -19200114, -10611254, -1047435, 16183437, -10803990, -3379603, 2742337,
+-587874, 561030, 15905875, 6474127, -2395518, 1494112, 7813620, 5218386, 18520436, -5327907,
+8492761, 9495099, 5082557, -2885144, 3081639, -19985020, 8650064, -3646964, 972810, -4498978,
+-10998874, -14750528, 3082713, -6973417, -20129438, 4965519, -17094506, -12502113, -2908767, -25742960,
+-15613817, 3995930, 11091216, -12791486, 2844342, 1156957, 29770566, 28315646, 26654568, -675384,
+1550483, -13859323, -8383240, 11235634, -5947456, -3803194, 1890859, -3423626, 6293738, -7514582,
+-3751654, -142808, 2424509, -4457639, 5776731, 5891622, 316754, -2312840, 1641214, 5765994,
+-4499515, -5867999, -1479079, 5207111, -6787122, 11741904, 6725382, -376883, 5321465, -1691680,
+-4741644, -7475391, -4077535, -6607271, -3600256, 4137664, 770410, 11870753, -2648921, -3556770,
+-26189100, -28976534, 17293148, 15544024, 5236639, 16840566, 28176060, 8041790, -10699837, 9120900,
+-4243965, -7905424, 12899397, 965294, -11497091, 7114077, 9291625, 2179159, 3286187, 746251,
+1455994, 25811142, -530428, 5558225, 2426120, 16033113, 965831, 25605522, -97711, -11210402,
+20470352, 4221953, -9021579, -3152506, 10847477, -2201171, -170188, 8516383, -15527381, 15556372,
+-3259343, -22679574, -6345814, 2273112, -22698902, -2503429, -2356327, 10032507, 9671729, 17132624,
+-11969537, 2653216, 2734284, 3600793, 7318088, -10836202, -12251394, 6478958, -288837, 13110388,
+10635413, 3331821, 27299886, -4500589, -4180077, -18602040, 27854474, 4971962, 19332722, 11880953,
+-31054224, 4508642, 2841121, 19099182, -10087268, 8173860, 190052, -8209830, -1012539, -6623914,
+15359877, -29343216, -3558381, -2054068, 131533, 1386201, 4737349, 7251516, -91268, 13629005,
+-518080, -1887101, -4344897, -2763812, 890132, -4664335, 1611150, -1232119, 4108673, 2929705,
+-1388885, 1190243, -1580548, -8144869, -435939, 464930, 2087354, -8320426, 4490389, -1669132,
+4715874, 3774740, 6659347, -6730751, 7780334, -4172024, 2514703, 5666136, 5073430, -1687385,
+180926, -3007014, 4391067, -208306, 2138894, -51003, -912144, 11370389, 6339909, 212064,
+5240934, 1623498, 5443334, 17149804, -36230732, 21507048, 21883932, -9345312, 5200669, 3036542,
+5921686, 143345, 17424682, -12713640, -2742874, -13639742, -111669, -7715372, 1231045, 3647501,
+-19869592, 8923331, 21599390, -14877767, -14230300, -14558329, 28758564, -12584791, -7046431, 2649458,
+-9838159, -29819422, 5251672, 21599928, -29680908, -13485124, 10277857, 15902116, 4343286, -4548907,
+6896107, -10570451, -4916664, -586263, 14728517, -20244866, -16045461, 11368242, 18496276, 7233262,
+-23052700, -7512972, 601832, -1113470, -3981435, 12006044, -3548180, 18144090, -14771466, -3277060,
+10201, -16998944, 10783589, -19782082, -13529684, 6245956, -8781061, 19130858, 27786828, 16316044,
+-18302466, 9667971, -5347771, -5553930, -12900471, -4087198, -21055540, 16085189, 11938398, 5686537,
+694174, -10042170, -5542656, 6467684, -21971442, 17726940, -4137127, -3089155, 9376987, 1599339,
+8548596, -2461016, -1256278, -7585449, -2097018, 659278, 1584843, -5963025, -1990717, -2872796,
+-2039036, 9936944, 1150514, -219043, -4691178, 4005057, 4071629, -3603478, 2295660, 4523675,
+1122597, 7653632, -2657511, -5480379, 1218160, -8901857, 4677757, 3243774, 1250372, -328565,
+3634079, -805843, 5869073, 1792075, 4214974, -7053947, -1991791, 6473053, 486405, 2605435,
+3467649, -6579890, 1081258, 6652368, 21021718, 35051764, -267362, -26563836, 5609228, -31694174,
+5411122, 14369887, 6747931, 1892470, 19030464, 14064944, -865973, -2922725, -26201448, -14133127,
+374736, -12277164, 35460324, -6492380, -8056285, -15336791, 1896765, 13320841, 9322763, -507880,
+6846178, 10371272, -15748034, 5362804, 30425012, 10755135, -20900922, -14749991, 9872519, -10354092,
+-1422708, 7390565, -4640712, -17265232, -4128001, 2067490, 28991030, -6303402, 6432788, -7742753,
+-23443542, 4074850, 29412472, -7939784, -17646946, 5114233, -10810433, 7176891, -6180458, -7204808,
+20212652, -5196374, -2313377, 9867687, -17431124, 6267431, 21392158, -8876087, 1835025, -12562242,
+37620692, -6863358, 4482872, 12195023, -8743480, -2108829, -10050223, 5262409, -11356430, -9592273,
+-8959302, 14401562, -19565186, 2861522, -2900177, -5843840, 15202574, 334471, -5197448, -6464463,
+791348, 5702643, 4435628, -8715562, -1589675, 388158, -2435783, -10783589, -6488085, -1964948,
+2561411, 864899, 862215, 1506997, 8773008, -8866960, 9222905, 1820529, 2657511, 617938,
+7310035, -4152697, 12009265, -2646774, -198105, 9209484, 12062953, -6324340, 7881265, -3952444,
+2632278, -7010997, 6089190, 5122822, -10434623, -528281, -4185983, -1436130, -5228586, 3759170,
+-6431177, 5761699, -10212358, -58040576, -20332376, -1046898, 18554796, -9729175, -29046326, -10940355,
+-4250407, 14235132, 3709778, -3875134, -14361297, 15178414, 26949846, -12227772, 20374788, 5113696,
+-38565048, 14393509, 18112414, -6350109, -15677704, -2935610, 23778550, 25373594, -2094333, -19232326,
+1351304, -2191507, -2480344, -16026670, 3971234, 7319698, -25428354, 17563196, 14932528, -17933636,
+3333968, -20120312, 7138236, 49196168, -43939664, 45485316, 20586316, 2063195, 27827094, 13834090,
+-28437516, 17113834, -21379274, -4787278, 23390392, 1107565, 6714108, -11935177, -20818780, 63392644,
+-14872935, 932545, 24989730, -12046310, 4893042, 1925756, 15448460, 35720708, 33946348, 32130650,
+2023467, -607738, -5143224, 1650878, -8653822, 2430952, 27269822, -7196218, -9429064, 2745558,
+3793530, 15839839, 18451180, 5275831, 5192079, 13115220, 5588290, -9976672, 3288871, -5135707,
+-14778446, -6624987, 7806640, -11132555, -16044387, -12179454, -534723, 1496796, -9186398, 4753992,
+10452340, 1647120, -3346317, -595390, -11716134, 13943611, -2018635, -3006477, 9665287, -7938710,
+6580964, -5935108, -4743255, 16408386, -27380, -12129525, 15556372, -9503689, 9392020, 4416837,
+-6058052, 4708358, -2107218, 11340861, -5147519, 3980361, 593242, 979789, -1165010, 12070469,
+-6146098, -1377074, -834834, 2177549, -1711545, 5284958, 14854681, -3930432, -42831024, 19451906,
+-31119722, 43751760, 5154498, -38045896, 8571144, 340913, 17852032, 8432095, -9225053, 32379758,
+7885560, 1651415, 21600464, -17275970, -24055574, 794569, 12562779, 43641700, -6161131, 124017,
+-4594005, 31457952, 3399467, -24962886, -14789720, 4743792, -2792803, 13937706, -24300924, 11678553,
+3930969, 7208029, -2201708, -9464497, 5490579, 9778030, 63888, 29237990, -47144784, 4142496,
+-16654809, -10300942, -6120329, -34417720, -50096500, -51782272, -37710888, 4027069, 142271, -30020748,
+-294742, -5443871, 3186866, -18615462, -48278652, 47556024, -909996, -6982543, 9620727, -47106128,
+-3302293, -11699491, 8782671, 13886703, 64666100, 48285632, -5480915, -552440, -1600949, 12757127,
+19496468, 11919071, 8850854, -1770063, -7900056, -45820320, 8578123, -900869, -17976048, -7974681,
+29870424, -4165045, -5560909, 14350023, -1311039, 15737834, -6205691, 7930120, -982474, -3226594,
+10971494, 13591424, -6292664, 1957968, 5881421, -2476049, 2706366, 758062, -293668, 9305047,
+-4055523, -4639102, 7516193, -8875013, 11704323, 2147, 6262599, 9938554, -5103495, 2520609,
+8441221, -1987496, -5808944, -2009508, 802085, -1479616, 2182917, -11571179, -914828, -9144522,
+9535901, 1538672, 6356015, 4731980, -1583769, 387621, -836982, 4537096, 5845451, 5068599,
+-12159589, 58932320, -56114284, 9695352, -10749229, 2247879, 23847806, -17277580, 6018323, 971200,
+-60714732, 1574642, -6742025, 3018825, 7107634, -27093190, -10044855, -44895832, -11506217, -2130304,
+2542621, -16955458, -12707734, -19522774, -8078834, 19492710, 4322348, 39307004, 9698036, -13213467,
+-13834627, 24175298, -26736708, 46224584, -35982164, 10564009, -29011430, 657667, 27865748, -50394460,
+47623672, 8451959, 5588826, -34587908, -6830609, -6513855, 98784, 16685411, 16692390, 20987358,
+-39901320, -949725, -15628849, -13567265, -15297600, -21502216, -14813879, 817654, 23015656, -24405078,
+6694781, -44987100, -14969572, 11461120, 13524315, 2505577, -51147692, -27666032, -18154290, -26040924,
+-21515638, 1891396, -16925392, 27350352, 8302172, 13746043, -9342628, -14053133, 45830524, -15244986,
+12409234, -9100499, 3682935, 34426312, 4726075, 6295349, -19098108, 19609210, 11467026, -7963943,
+18255758, -13495324, 5137855, -4937065, 12410845, 2572149, -3947075, 6773701, 15773804, -5219459,
+5155572, 5684389, 4837207, -1722282, 4371740, -2094870, 10888816, -3411278, 1956358, 10292352,
+-1929514, -3799972, 3307125, 4548907, -6802155, -1381906, -19216220, 12332999, 8491150, 249645,
+-10568304, -4221416, 1162326, 4252018, 15005005, -2229625, -3841312, 5360119, 4015795, -2015950,
+15188615, 3049964, -18036178, 4992900, 18277234, 25606596, -47421808, 72998336, -54465016, -5488968,
+-32755032, 6787659, 983011, -19688130, -27981712, 33326262, 22473954, 10657961, -14156212, 14860587,
+4788889, 31484258, -24435142, -16042240, 19652696, 32720134, -41135588, 16988744, -1235340, 19945828,
+-14679124, 6021544, -18105972, 4036196, -34132640, 11533061, 37091336, -976031, -2601140, 46056008,
+8207146, -20868172, -44515188, 38516192, -20000588, 17509508, -16201690, 45994268, 20402706, -4779762,
+4920959, -26227218, 3752728, 11639361, -12575664, 13029320, -55143620, 21973052, 50417548, 39510476,
+-21520470, -22292490, -22454090, 25666724, 2260764, -7794829, 2261300, 65102040, -31431644, -14504105,
+25311316, -21328808, -58341764, 25138980, 13291850, -41567232, 23678154, 40801116, 35953172, -10646150,
+-15790447, -28258200, 15499463, -17329120, -11087458, 26288422, 17892834, 8331700, 23003308, 13171054,
+-8648454, -7926362, -29266980, 7177964, -12195023, 10512469, -10741713, 21318070, 14674830, 3524558,
+-3780108, 20291572, -10760504, -1225139, 2734284, 7994545, 4780836, 9557376, 8614094, 1024350,
+-4680441, -2530273, 7246147, 4092567, 2990371, 1325534, 11318849, 36531920, -971200, -2503966,
+5523865, -12212203, 4567698, 13388487, -18544596, 8575976, 9743133, -6766721, -5137855, 8884140,
+4871567, -10378788, -46938624, 25035364, -2776160, 6518687, -17227650, 15001247, 278099, 8225936,
+2454574, 2724083, -9822590, 7472170, 25339234, -32410896, 27805618, -4752382, -17176648, 5740224,
+-11709691, 7558069, -11999065, -9783399, 8164733, -25829934, -2738042, 34463892, -49811420, 14057965,
+2274722, -8283382, -15384573, -18036716, -11864310, 36178656, -29868276, -4210679, 11562052, -30175904,
+7549479, 16656420, 10972031, 5749888, 5097590, -16981764, 13291850, -44397076, 481573, 39023536,
+-16429324, -4285841, -8888972, -10889353, -468151, -31378494, 16523276, 12759274, -26196616, 24536612,
+6630893, -29553134, 12029667, -5635534, 21342766, 18895708, -27786290, 9778567, 30467424, -28732794,
+15964393, -20412368, 15993384, 18914500, -29529510, 16680579, -2327872, -15368467, 22157736, 1357210,
+-35490388, 11026792, 15465103, 4930086, -10038412, 1910724, 26504780, -12156368, -25236690, 26823144,
+-1364726, 2240899, -1401233, -3124589, 16123844, -11980274, -6105833, 11826192, 4182761, -2600066,
+-12237972, 17923972, -6973953, -11314554, 697395, 9569724, -5816460, -4009352, -3038689, 14093398,
+-11050414, -5274220, 709207, 7803419, -6930467, 5694590, -557272, 14017163, -8966281, 2510945,
+839666, 1700807, 24089398, -8378945, -106415864, -234564272, -92240864, -155486400, -212211120, 81916304,
+29929480, 70902392, 318740256, 265725872, 175572896, 273875584, 186482656, 23269596, 47242492, 34529388,
+-144333984, -92707408, -63526324, -165281072, -168730480, -45921792, -46419468, -104464880, -30429844, -21673478,
+-126058904, -108241232, -34498788, -59095528, -119012472, -28282896, -19160386, -93015032, -9922448, 66413080,
+-27414776, -21930104, 97543536, 60239064, -38458748, 86545200, 142094160, 16731582, 80344880, 174187232,
+85668488, 44741748, 187810336, 137587664, 102572944, 227844800, 307889568, 243753360, 282925600, 366358016,
+239577040, 157158224, 205816976, 132957152, -35803384, -8074002, -89920512, -224297152, -317518880, -341648000,
+-457647008, -520731488, -552917952, -534852288, -513977664, -511009856, -426680320, -326364352, -306217760, -199535056,
+16931834, 85929944, 111173616, 335034304, 328798016, 227063104, 334043776, 306245664, 166558832, 161895568,
+213347136, 129408440, 61351996, 149486880, 152477248, 68977712, 123349848, 185794384, 123454536, 73828344,
+158160016, 131148976, 26970784, 80641232, 116485952, 13713294, 22687628, 127436512, 78206520, 42454676,
+135013376, 133860168, 49293340, 106783624, 92249456, -23176718, -65720516, -68127312, -157736432, -213777696,
+-211134144, -243776432, -268844544, -278795456, -272988672, -280032416, -311534912, -322285760, -308402816, -344053184,
+-294648704, -200646384, -153515552, -52246128, 88911728, 186234080, 272623584, 352035936, 357820704, 306426592,
+278176992, 228533056, 172809088, 139306192, 116966992, 94453312, 73554000, 66612260, 61385820, 45123464,
+37513856, 33026152, 15964930, -3494493, -15859704, -34508452, -52265992, -54976120, -43868260, -32267016,
+-24082956, -21229486, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-3984119,
-2426657, 3886946, -1370095, 3454228, -561030, 3645890, 1834488, -801548, -1427540, 3693135,
-312459, 736587, -4197794, -673236, -301721, -187368, 5740224, 2804077, -208843, -4306242,
--3131031, -1852742, 526134, -98784, 1243930, 2638721, 804233, 973347, -4345433, -668941,
--4229469, 169651, -2338610, 2769717, 2766496, -1103807, -2281702, 2895345, 620623, -1087164,
--3910031, -531502, -2507724, 701690, 2392297, -3968550, -1935957, -664109, -1551557, 10126996,
-2413235, 5845988, 426276, 1917166, -42950, -2927557, -2713883, -3456375, 1633161, -2851858,
-2051384, 62814, 2503966, 2559264, 6219113, 1874753, -514859, -316754, -3693135, 6021008,
-5542119, 966905, 1709397, 1567663, 1715303, -353798, -3091840, 918049, 1788854, -1165010,
-517544, -955093, -2826089, 1341640, -2357400, -1604707, -734439, 183610, -1054951, -1148904,
--1343788, -34360, -75162, -216896, 270583, -477278, 898185, -506806, -841277, -88047,
-1126892, 417686, -463856, -1523640, -448824, 1395328, 92342, 624918, 552977, 13995151,
--3311420, -2928094, -1137093, -2772402, 642098, -6654515, 518617, 1324461, 338229, 4521527,
-517544, -934692, -3995930, 2557653, -5632850, -4856535, 1752884, -2369211, -1132798, -840203,
-938450, 3795677, 5195300, 389768, -806380, 6175626, 2226404, -360240, 224949, -2524904,
-77846, 6778532, 2684, -3151432, -2548526, -732829, 2299955, -3138011, -3867081, -3950833,
--3231963, 3092913, -3040837, 1156420, -3694746, 1299228, 4472672, 291521, 3178276, -1352378,
--2522220, -1248762, 2204929, -135291, 3412352, 4990215, 731755, -1510755, -2582349, -130997,
--382252, 227633, 158377, -4401805, -464930, -2057826, -2238752, 2131378, 452045, 1367410,
-1620276, -5237713, -2918967, 2168959, -979789, 3868155, 702764, 3258807, -666794, -833224,
--900869, -1897839, -445066, -2090039, -840203, 57982, 3051574, -738198, -68719, -529892,
-966905, -28454, 1176284, 233539, -257161, -772020, 947577, -1500017, 6979, 76773,
--851477, 701153, 897648, -1267015, 424128, -626528, 545461, 528281, -3758, 897648,
-96100, -469225, -9992241, -4937065, -2165737, -6834904, -2381559, -6562173, 1906966, -594853,
--4095788, -4720169, -720481, -3859565, -113817, 3171297, -261993, -5861020, -2190433, 66035,
--2306934, -1913408, 1668058, 5483063, 7030862, -1156957, -1906429, 3941706, 4482335, -1424855,
--1068373, -918049, -3205119, 948651, 1445257, -2886755, -2171106, -687732, 2697240, 6002217,
-370441, -2048699, -20401, -3056406, -1142998, -4847945, -2295660, -2162516, -7659001, -831613,
--3489661, -2426120, -8406325, 5183489, -3673271, -3255585, 1466731, -541166, -628139, 1078574,
--6988986, -1828582, -2521146, -571231, -4046396, -568009, -1919314, 1828046, 2393371, -2285460,
--1235340, -3347390, 1155346, -514859, -705448, -6442, -5182415, -137976, -4686346, 700080,
--341450, -1483374, 1350230, 5652177, 2675765, -1347009, 282931, -1003949, -2228551, 206158,
-852551, -1119913, -183610, -1384053, 12348, -576599, -1733019, 676994, 634045, -1809792,
--867583, 479963, -780610, 236760, -1199370, -923955, -979253, -1690070, -1847910, -148176,
-438624, -936840, -1125818, -8053, -545998, -237834, -620086, -17717, -363462, -619012,
--1530619, 802085, -557272, -727997, -758062, -18480170, -1451699, -9104257, 8192650, -4735739,
-14740328, -9415642, 9295383, -8344048, -493921, -112206, -6430103, 5021891, 192737, -2385854,
-1517734, -2085744, -834834, -6257231, -49392, -4717485, 3757560, 1327145, 4597763, -2674154,
-6855305, 6179384, -5972152, 1701881, -5076652, 5432597, 59056, -3762928, 326418, -512175,
--186831, 3993246, 591632, -5883032, 2445447, 4271882, -272194, 5041218, -2325725, 4115116,
--6114423, -3091840, 4024384, -3497714, 1024350, 5427765, -4909685, 8008504, 3165391, -7860864,
-1924682, -7571491, 2740189, 4261145, 2870112, 4103841, 5873368, 2005750, -714575, -447213,
-395674, 1884417, 4223027, -1430224, 7973607, 1571958, 5465883, 2992519, 1592359, 419296,
-5483600, 1016834, 1365800, -3109556, -4267587, 2210835, 2961380, 353261, 4714801, -525597,
--32212, -838056, 5597416, 1724966, -1993939, 1303523, 958851, 841277, 1910724, 328565,
-3484829, -508417, 1203128, 695785, 1335198, -842350, 667867, 367757, 82141, 348429,
--1182190, -1028645, 443992, -1275068, -581968, -1385127, 913217, 20401, 12213276, 68719,
--3323768, -1114007, -4555350, -5438503, 8919036, -1730872, -1298691, 8186208, -634045, -1579474,
-3619584, 6371047, 1816771, 3165928, -163746, -6949257, -1843078, 5228586, -7924752, -7844221,
--2944200, 1723356, -5589363, -3353296, 108448, -777926, 5486821, -2111513, -1207423, 5794985,
-8048232, -6971806, 1819992, -1656784, 2933463, 810138, -3102577, -666794, 3343632, 5143224,
--1385127, -7238094, -1637993, -630286, -1919850, -3607773, 518080, -450435, 1312649, -988916,
-999654, 6782290, -5017059, 658741, -3823595, -3082176, -5252745, -1570347, -3039226, -7237557,
--270046, 507343, -2832531, -544924, -2997887, 2807298, 3510599, -542777, 1036698, -2599529,
--736587, 8763344, -1170916, -3617973, -11895986, -5399848, -170725, -4049617, 2727304, -1141388,
-1006633, -3221, -2404645, -440771, 3443490, -2913062, 662499, -814433, 317828, 16643,
--2507187, -1832877, -1067299, -1911261, -403727, -3031173, -654446, -1715303, 315143, -1194001,
--415001, -1630477, -1788317, -1727651, -468151, -177167, 600222, 455803, -261993, 503585,
-380641, -86436, 1673964, 1480690, -47245, 881005, -725850, -914828, 184684, 15832323,
-17791902, 3386582, -6470905, 4053912, 7016366, 7037841, 3972308, 5317170, 2382633, 8703751,
--878321, -1061931, -3544422, 5465883, -3197603, -7655243, -10550587, 1221381, -5056787, -4349728,
-3739843, -1101659, -2801393, 8894877, -630823, 11048803, 124554, -4350802, -2975876, 3886409,
-2580739, -2160369, -8731132, 12620225, 7297150, 89121, 6842957, 4097936, 4453881, -4115116,
-5027796, 2580202, 1020592, -1502165, -2237678, -5536750, -7830263, 2241436, 3810710, -6087043,
-2468533, 5305895, 7890392, 2113124, 7130183, 3332358, 6077379, -8876087, 2664490, 853625,
-1808181, 259846, -590021, 3819300, 3457449, 3379066, 4878546, -1566053, 2381023, 1436130,
-7010461, 8600672, -4306779, -5029407, 789737, -2025614, -4525822, 1951526, 4763119, -2882997,
-2032593, -8517457, -6263673, 1495722, -4314832, -1996623, -1377074, -3843996, 40802, -4832,
-521839, -45097, 1729798, 2065879, -105764, 1068910, 380641, 1576253, 1652489, 72478,
-152471, -52076, 1804423, 950262, 1012002, 2244121, -346282, -1064615, 1684701, -420907,
-28991, 2570001, 1586990, 2436320, 3294240, 563178, 1497870, 933082, 2195265, 14540075,
-4598836, 6422587, -5314485, 2110977, -13156022, 712965, -9502078, 7206955, 4853850, -4001836,
-6072547, 3449933, -6429029, -1593970, 9322763, -300111, 6424734, -1752347, 1302986, 7430294,
--9220758, -708670, 1530082, 2717641, 636729, 2989297, 409096, 9009231, -4154307, -2587181,
--2699387, 6811818, 888521, -3198140, 4160213, 11485816, -7994545, 1419487, 1572495, -697932,
-4664335, -2323577, 8803072, 2947958, 2251100, -7196755, -681826, -1910724, 4101694, 3055869,
-4429185, -4946192, -3190624, 4174171, -8579734, -4833449, 1994476, 9259413, 5658620, 8186745,
--8894877, -2840584, -9038759, -2364380, 2800856, -788127, -8523363, 1110786, -5203890, -90194,
--9329206, -11382737, -4590247, -8222178, 523986, 2881386, 1688996, -3529926, 4591320, 7264401,
-2102923, 2127620, 4251481, -1341640, -6924024, -451508, -4742181, 2487860, 865973, -499290,
-1369021, 623307, -5049271, -2647847, -1384053, 2535641, 444529, -1829656, -539555, -191663,
--670552, 387621, -962073, -513249, 442919, 2299955, 678605, 719407, 616328, -497679,
-780073, 1519345, 898185, 1989107, 702764, 1007170, 218506, 1563905, -2406792, -17141752,
--15458661, -11124502, 3373697, 3416647, 12809203, -5685463, 12164421, -4996658, -20118164, -1811403,
--1889786, -7799124, -13024488, -4772783, -306553, -8041253, -91805, -12359305, 878858, -13028246,
-7421704, -3301219, 5399848, -2580202, -256624, -4071629, -4719632, 7998303, 1547262, -2371896,
-9080098, 985695, 1437203, 3092913, 8353175, 7326678, 5583995, 103616, -9954124, -1075352,
-4735202, 1404454, 6049462, -2959233, 2676838, -14614700, 4573067, 8741869, -11070815, 6448357,
-2234457, 10347113, 7914551, -75699, -2785286, -315680, 7015829, 3417183, -9342628, -7631620,
--12903155, -6293738, -8677981, -2028298, -10727218, -2348810, -3632469, 10806675, -5129802, 5301064,
--2875481, -1669669, -3602404, -7603703, -4079682, -2499134, -2563559, 6769942, -20649130, -4473209,
-9569187, 355945, 1785096, 5066988, 9689446, -6209449, 1100585, 2499134, -520228, -186294,
--1496259, 2575370, 3965866, -1859721, 258235, -491237, 4437238, -1770600, -207232, 4440460,
-855235, 1497870, 2026151, 2029909, -823023, 278099, -1292248, -1868311, -1078037, -3231426,
-825171, 1942936, 1336809, 714038, -4147865, -92342, -621697, -300111, -1988570, 1020592,
-1738925, -1094143, -280247, 2042794, 2205466, -22512608, 17440252, -4793184, 10349261, 6059662,
--324807, -14860587, 11872900, 1694365, -945967, 7530689, 5365488, -6087580, -17717, 12776454,
-4296041, -5647345, 9089761, -4846334, -3881577, -2637647, 2972117, 141734, -1564442, 1301375,
-3942243, 3532074, 3630858, -9265855, 5851893, -7685844, 10640245, -6494528, 10590316, 3457986,
-1078037, -10239202, -10406169, -3402151, -3419331, 12306155, 3531000, 9855876, 4175245, -8672076,
-404264, -1921461, 4265977, 306553, 3764002, -1026497, -5813775, -3378529, 6277632, 15568720,
-11245835, 1319092, 3907347, -1064615, -2109366, 8012799, 6737730, -2794413, 9883793, 13909788,
-19430968, 469225, -11039140, -13320841, 4728222, 2480881, -496606, 3419331, 132607, -4230006,
--432718, 11759620, -2065342, -5056250, 20908974, 5323612, -3457986, 6190122, 212064, -154619,
--586800, -3239479, -396748, 6406481, 3218541, -1964411, -2976949, 4517769, 3676492, -217970,
-8542153, 2527588, 1676111, 1003949, 3881577, 1551020, 3642669, 2547989, 1330366, 809064,
-4570382, 2590402, 2479807, 770410, 4539244, -454193, 1837709, 2772402, 1941325, -224412,
-5064304, 5821828, 1860795, -767189, 6039261, 624918, -2615635, -299574, 4451734, 418222,
--221728, -718870, -635655, 423054, 1279900, 3015604, 10501732, -15330886, 12924630, 5326297,
--10466835, 24552180, 3701188, -12504797, 2915746, 6856916, 667331, 4961761, 17619566, -16809966,
-11004243, -6777996, 9761924, -3680250, 2094333, -15560667, 2665027, -1651415, 6283537, -5935645,
-884763, 1245004, 175020, -9107478, 8799314, 978716, -943282, 4197794, -1745904, 4139812,
--2173790, 12451110, 9781788, 12328167, 12204686, -1904818, 4265440, 5357972, 541703, -6335077,
-8628052, -10153303, 3156801, 10227391, -6038187, 5460514, -11341935, 3710315, -996432, -2605972,
--989990, 964220, 3490735, 3470871, 11927124, -7732015, -398358, 8009577, 16996260, -14975477,
-3844533, -3594351, 5148055, -2659122, 24823838, -15178951, 5428839, -8403104, -4759361, 2345052,
-2565706, 1504312, -21769578, -11324218, 17916456, 9978820, -2017561, -9569187, -11285027, -4308926,
-3963181, -11937325, -6650757, 6105296, 3272765, -86973, -405338, -8296803, 1517734, -2293513,
--3257196, 4045322, -2152316, -2433099, -1072668, -7221988, 2429341, -1732482, -2601677, -2502892,
-3275450, -3376918, 4006668, -445066, -1162326, 1610076, 1338956, 5522254, -5598490, -954557,
--4297115, -671626, 2518998, 2237678, 6825777, -2057826, 3690451, 1095217, -2720862, 11457899,
--15131707, -3231426, 21337398, -6439230, -452582, 11418707, 2662880, 7036230, -15968152, 15269146,
-971736, 1116155, -4072166, -9618579, -1344862, -1511829, -10297184, -6226629, 11368242, -3649649,
-2163590, -5620502, -25071872, 8452496, 1115618, -7765838, 4760971, 9673877, -932008, 1043677,
--1981591, 2411624, 6553047, 2063732, 10543608, 7206419, 1632088, 9207336, -7464653, -7360500,
--10460393, 3912715, 6012418, 1724429, -16579648, 4663798, -14169097, 20467130, -4881767, 7253126,
-17467632, -6925635, 11091216, 2740726, 12077448, 4838818, -5858336, -17986786, -12905840, -10078141,
--1403381, -10578504, -2124398, -9252433, -6001680, 18020610, 3896609, -7735773, -6852084, 3605088,
-6691559, -1607392, 2603824, -32871532, 13201119, 2197413, -10547366, -12986370, -3391414, -21725018,
-2327872, 10737418, 1178969, -9359807, 5745593, 4809827, -7668127, 3790309, 2269353, -1953673,
-245350, -4947803, 1280974, 1660005, 1261647, -6436009, -3506304, 2581275, -4012036, 878321,
--2425046, -1590749, 1534377, 5341866, -6837051, 2335925, 5305895, -6407018, -5995775, 745177,
--5502927, 1220308, -3655554, 3750043, 2050310, -6416681, 3568581, -4230006, -2714419, 4352950,
-1016297, 9852118, 3062312, -60130, -622233, 731755, -2595234, 7099581, -20359218, -24948392,
-14945412, -12293807, -14292577, -4144107, 9353902, 19340238, -12859132, 955630, 9172976, -2869575,
--4102231, 4910758, 3176665, 14513768, 4813585, -14136348, -607201, -7217156, -556735, -8439074,
--11075110, 1599875, 10936060, -902480, 4838281, -9226663, 2605972, 10790568, 8365523, 1180579,
-787053, 6705518, 6381785, 4015795, 9885404, -12701292, 13737990, 9838696, 3324305, -10517301,
-688269, 7926899, -8315594, 9225053, -6619619, 10461467, -2899103, 13690208, -21760988, 22907208,
-5310727, 21595096, 1313186, -4701379, -1604170, 7730405, 425202, -18229452, 617402, -1396938,
--18894098, 5828271, 13262859, -17954038, 14768245, -15819975, 4793721, 5945309, 3156801, -19770272,
--9591199, -9766756, 1787243, 1342177, -11589432, -16950626, 3176128, -14923938, 9982041, -7269769,
--3997004, 4963909, -9357123, -7248831, -9599789, -4024384, -5409512, 169114, -7706782, -5773510,
--7045357, -10349797, -5117991, -2261837, -2454037, -2711735, -3129421, -2110440, -5021354, -5458367,
-3383897, -6509560, -3629247, -1762010, 4779762, -2531883, 3221, -8280697, -6041945, -2786360,
--315143, -1978906, -7133941, -1090922, -763430, 5539971, 3481071, -4714801, -4474282, 801548,
--2469606, 4054449, -2511482, 2115808, -4485020, -11515344, 17443472, 3520263, 11479374, 11126650,
-3122978, -8591545, 1893007, 29444148, -20253992, 4872104, -3565897, -11059541, 653909, 3953518,
-4748087, -140660, 67646, -5801964, -8509941, -13238700, -6695854, 10001368, -8393440, -13300977,
-7644505, -4766340, 2929705, -1759326, 5939940, -5661304, 12524125, -4517769, 1352378, -281857,
-1321239, 11547020, 3924526, -5356361, 6152541, -4901632, 9456444, -5686000, 3877282, -13533979,
--9898289, -7247221, 2362769, -6759742, -11812234, 4978941, 8751533, 2574296, -6284074, 4051228,
-6180995, 7036230, 18924162, 26126822, 35485020, -3584150, 5655935, 8607651, 5015448, 4834523,
-5703180, -7204271, 14081050, -1925756, 18382996, 22752590, 16642461, 6823630, 9368397, 3219078,
-31733902, 9219684, -5810554, -4929549, -4511327, -1711008, -2042794, 1804423, -2533494, -5802501,
-5307506, -9256191, 2792803, -1978906, 2946885, -4515085, -3733400, -2761127, 7196218, -6830072,
--6739878, -315143, 2967286, -3340948, -8652748, -2681133, 498753, -3911642, 4621385, 8978629,
--4996121, -340913, 1865090, -642635, 2950106, 5332202, -2368138, -5790153, -991064, 3206730,
--2938831, 8217346, 9473624, 6070400, -2690260, -6095096, -814433, 9571871, 1088774, 67646,
-4170413, 1636919, -49392, -1208496, 2347737, 2708514, -6229850, -276489, 35423280, 28350006,
--12381854, -5713917, -14765561, 8472897, 4130685, 17324824, -3068217, -7555385, -3412352, -11288248,
-2525978, 389768, 16363825, -6175089, 6097243, -22084184, 12136504, -1777043, 8541616, -157840,
-7741679, 1268626, -12544526, -6527814, -10759967, -8227547, 9066676, 21792664, 9523016, -2658048,
--6769406, -357019, -1829656, 5387500, 7392176, -14038101, -265214, -4938139, -4663261, -15241765,
--11703786, -24659554, 468151, -1307818, 8879845, -7445326, 15781320, -12051141, -5251672, 31473520,
-31267898, -21688512, 4851166, 18037788, -10489921, -5102958, 9347996, -3569655, -13178033, 35005056,
--8705899, -53404160, 17772038, -778463, -27448062, 20932596, 22484690, -8059506, 15755551, 19877108,
--9401147, 600222, 12713640, -13835163, 5793911, 10903848, -19608674, -2816962, -6431714, 955630,
--7141457, -8590, 2812130, -8432095, 6759205, -9761387, -4375498, 4563940, 9564892, -5609764,
-610959, 1772748, -1357747, 3091303, -6866042, 10070625, -5113696, 10640245, 10530186, -403190,
-625455, 6933688, -5098663, 1377074, -186294, 8717173, -6555194, 5215164, 1740536, -20973400,
-4126390, -2772402, -3801046, 944893, -474057, 2039573, -11627550, 1411971, -2938831, -10566693,
-1903207, 17591112, -16605417, 5296769, 9898289, -14501420, 71404, 7590818, -13328357, -6648073,
-2406256, 6136972, 11695196, 5639829, -9622337, -1865090, 8625368, -10114648, 9930501, -5098663,
--12921946, 11421392, 5848672, 5623723, -3320547, -3353833, -4655208, -760746, 9586904, -20193862,
-9848360, -561567, 16610786, -10701985, -88584, -13273060, 5592585, -21512418, 2236067, 807454,
--8626979, -6585259, 3299609, -14532559, -24986510, 14916421, -1527398, 4384088, -14835354, 8869644,
--2516314, 9541807, 10242423, 5009006, -10507637, 8429947, -5113159, -2415919, -19353122, 2624762,
--13816910, -15138149, -22028888, -9125195, 3359738, 5927055, -22736484, -11307038, 1070521, -8231305,
--30485140, -24201604, -24881820, -5272073, -14937359, 12958453, 18304076, 4915053, -18438832, -21352966,
--24884504, -2462090, -1989107, 13342853, -12096775, -20769388, -10297721, -13885092, 4507032, 99321,
-4715337, 2305324, -6976638, 1306744, 4858145, -5492727, -2432025, -4679367, -3031710, -3427921,
--6790880, -471373, 7968238, 113817, 2183454, 2218888, -1623498, 5972152, -4197794, 9323300,
-8298951, -3525095, -7859254, -544387, -3153580, -4436701, -5028333, -4430259, 6621229, 138513,
-6221260, -6885907, -7525857, -1497333, 3323231, -11847667, 1777043, 1011465, -8791261, 1711008,
--7281044, -15429133, 9170292, -3806415, 925565, -2695629, 1353452, -7968238, -2287607, -15480136,
-26925150, 29920890, -7077569, 20207284, -5610301, -7770133, -7721815, 19681688, -16955458, -3796214,
--8009577, 31157304, 1295470, 11481521, 4204773, -2769717, 15612743, 8811125, 12808129, 4146254,
--1833951, -5275294, 12264816, -1860258, -11747809, 15006616, -259309, 13165685, -14384382, 10304700,
-3747359, -14606647, -11259794, 27157616, 17666274, -1474248, 9822053, 8269960, -17005924, -11059541,
-5822902, 4512400, 12142409, 1695438, 2779918, 4888210, 14784888, 6235219, 3903052, -14377940,
-40492952, 27303644, 3257733, -17933100, 9172976, -5888937, 5171678, -3933653, 8789114, -5716602,
-1509681, 22489522, -15278809, -7214472, -20585778, 6023155, -5499169, -3408057, 19094888, 6203544,
-2545305, 1872606, -7683160, -15221901, 11317776, 220654, 348966, 12259984, 12050068, -709743,
--8655970, -9934796, 19719806, -1798518, -1039919, -3566970, 14846091, -939524, -10210748, 7007239,
-5568962, 9490804, 4291746, 3519726, 13711146, -2525441, -4905390, 5021354, -273804, 824097,
-1259499, 6533719, -3464428, 246424, -4436701, 1762010, 6604049, -2762738, 1593970, 8519605,
--2872260, 2058363, 6008659, 714575, -1603097, -12395276, 8269960, -6798933, 5421323, -8174397,
--1853815, 3743064, -5353677, -1806034, 12085501, 9118216, 1024887, -1545115, 11283953, 2588255,
-5373541, 5356361, 2510409, -1683627, 4825396, -9709847, -21046950, 54731840, -61380452, -7084549,
--32293322, 39696772, 10720775, 7017440, -15394237, 3734474, -12553653, 35561256, -6224482, -2265059,
-3703873, -1745367, -13836774, 5330055, 8146479, 10765872, -23923504, -12583717, -12282533, 4938139,
--7186554, -6447283, -689342, -210453, 15831249, -8113193, 869194, 11906723, -1391033, -15819438,
-2086280, 12528420, -1400696, -24944634, 18751290, 2247342, 446140, -34360, -10425496, 8231305,
--46062988, -32235878, -4387309, -11544335, 2213519, 3531000, -21505438, 33996812, -13345000, 46833396,
--6484864, -16405164, 16172162, 2674691, 14452565, 21680458, 7019587, -22289806, -6030134, 25028922,
-58273044, 1918240, -14705431, 24210194, 2259153, 28554554, 4791036, 38659536, -9808632, -1570347,
--863825, 9011378, 1520418, 14835891, 27373438, 1584843, -5552319, -4880694, 8861054, -7415261,
--2966212, 17704392, 13180718, 1906966, -3096672, -6739341, -7290707, -4649839, -5881958, 12735115,
--7679402, -5573794, 6576132, 2211371, -2184528, 5655935, 6772090, -3704946, 5851356, 9002788,
--4437775, 507880, -12604118, 16165720, 199179, 12975633, 1154809, -13751948, 378494, 1296006,
-3883187, 1333051, 301185, -11851962, -10545218, -796180, -5997922, 8497593, 3492345, -4161287,
--68183, 6638946, 1734093, -4101157, 736587, 4750771, 413391, -2565706, 2226404, 79898200,
-24674588, 8687108, -2698313, -8769249, -11677479, 25972740, 23789824, -27792196, 16206522, 12277164,
-2631741, -8507256, -14882062, -37839200, -14345191, 11885785, 3690451, -12279848, 22519050, -7551626,
-8973797, 8949101, -5739687, -5489505, 23502598, 464393, -9286256, 14668387, -13185013, 28981366,
--14540612, -8839580, -1845762, 11203422, 5770826, 29313152, -9332964, -17795660, -6537477, 7627325,
-1750736, 15627239, 4060355, 1218697, -6702834, 12558484, 55051816, 23351738, -20852604, 17580912,
--11078331, -16974248, 13357348, -788663, 3683471, -1297080, 9534291, -14851460, -22606560, -59310816,
--15871515, 20892332, -8126615, -20497732, 8551817, -4939750, 8512088, -23896662, -21081846, -10002442,
-8576513, 9198209, 27870580, 4734128, -2326799, -22310208, -31587336, -4124779, -14396730, 2483028,
-10911364, -15137075, -15667504, -3542274, -19408958, -32042604, -10938208, -8699456, -17367774, -4217658,
-9068287, -9128416, -5060545, -10458782, -2759517, -22910430, -14816563, -14687714, 20401, 1835562,
-7798050, -12936441, 6732898, -17355962, 311922, -10333154, -1712081, 5018133, -5690832, 7754564,
--22882512, -4741644, 7227893, 2913599, 6605123, -3148748, -6569690, 10705206, -2625299, -2594160,
-7231115, -11539503, -9378061, -1970853, 1651415, -15219753, -7559680, -8444443, -5019206, -1601486,
--683974, 928250, -7220914, 328565, -12486007, 17802640, -14169634, 48931488, 41087804, 19277960,
--11148661, -17138530, 29390462, 25200184, -32877974, -6611566, -20114406, 28394028, -4718022, -40101572,
--17421998, 14403710, 25223270, -46370616, 18743238, -32076426, 12021077, -18902152, -4806606, 22450330,
--7418483, 3499325, 14400488, 29885456, -19376744, -32617592, 7450695, -2482491, 3691525, 30631170,
-7827041, 22881976, -28744606, -5242545, 9405978, -25680146, 42248520, -4827007, 25376814, -3437048,
--5767068, 20782810, 20844014, -11816529, 46530064, -10777147, -20024748, 22459458, 40008156, 2346126,
-7384660, 2017024, 17744120, -18663244, 14271103, 60564408, 27997282, -1807108, 26599806, 32632624,
--23926190, -73909408, 5797132, 44705776, 50633908, 13882945, -4658966, -21719650, 26394722, 55794848,
-26225070, 13667660, -54363548, 10385768, -30690762, -19180250, -47889960, 40993852, 9156333, -14025216,
--18888730, 14467597, -13571023, 7872138, 5770289, 7341173, -17548700, -3716221, -1916092, 9607842,
--5833640, 8135205, 7358890, -8049843, -4922570, 11266236, 833761, 12087649, -4748087, 4538170,
--7508140, 4336843, 23051090, 4345970, 4648229, -2808909, -23962160, -12268037, -14624364, 8114804,
-41517840, 38778724, 35459248, -2680060, -24999394, -24051280, -10991895, 16312286, 18654116, -1305670,
--7952669, -12996571, -18451180, 5049271, 11157251, 8866423, 8861591, 6523519, 723165, 33820184,
--67343480, 51163260, 10522670, -30957050, 303869, 28542206, -19221052, 657130, 15801722, -20168630,
-1591285, -18146236, -11525545, 18826990, -16419123, -9455907, -34367256, 14650670, 33199560, 9170292,
--15074261, -25624848, -4158602, 18891950, 10243497, -21931176, -665720, 25934624, -3548180, 1549410,
--9005473, -6644852, 61385820, -29752850, -7606387, -7115150, 10254771, 28280212, -30421790, -17318382,
-40373768, -5072893, -2663954, -48708688, -40080636, 16428787, 27136678, 14533632, -49627272, 33636572,
--967978, -7942469, 7045357, -35811436, -9876277, -4978941, -17617956, 31491238, -24943022, -14232448,
--26812944, -15878494, -35336308, 10219875, -55222544, -15911243, 6431177, -27924804, 6752226, 14822469,
-6678138, -869194, -9921911, -20330228, 29180008, -6835978, -2840584, -11011759, 17665738, 34904124,
-5305359, -48394080, 4214974, -21862458, 3188476, 3877282, -8735963, 2775623, -14331232, -5419175,
--1206349, -11449309, 214748, -3711926, 8429410, 6884833, -2601677, 3152506, 15688979, -7711077,
--5598490, 15366319, -11598559, 9971840, -5604933, -6072010, 1229434, -7496866, -3239479, 9053254,
--18944028, 5017059, 4538707, 6326487, 13681618, -10311143, 1715303, 9422085, 3795141, -4231617,
--8875013, -2560338, -2058900, -552977, -9085466, 1956358, -1478543, -38579544, 23527830, -635655,
-30430918, -6174016, 31474594, 4013110, -3926137, 14116484, 36508296, 17521856, 9422085, 7355132,
-4740570, 14403173, -18246094, -1414118, -13661754, -14367739, 22489522, 14011257, 8660802, -6375879,
--5543729, -2585570, 23516556, 3657165, -10285910, -16872780, -687195, -3939559, 17706540, 2747705,
-14821395, 27748710, -7631620, -70057360, 4686883, 57057568, 6024766, -41737420, -5338645, 16169478,
-12716324, 22456774, 20423644, -1595580, -13161927, -13489955, 17879412, -10768557, 2048699, 6305549,
--72768024, -12556874, -13955959, 11631308, 57273924, -979253, 4634807, -13214541, 3923990, 11871290,
-24040542, 12608950, -14164802, -7396471, -35332548, -2075006, 24324010, -10655814, -5033165, 9020505,
-24703042, 20081656, -5317170, -25060060, 158377, 9245991, 2802466, -16626892, 2065342, 2099702,
--1265942, -14343043, -18692772, 16306917, 13326210, -598611, -2928631, -14023068, 11178189, 4706211,
-2542621, 4430796, 3560528, 6564858, 412854, -15537044, 8732205, 523449, -983011, 990527,
-4152160, 2079301, -2123325, 73551, 602369, -5024038, -3036005, -21505974, 3391414, 15382962,
--10743861, 5567888, -17506824, 9979357, 4551592, -2474975, -4852776, -1632088, -1733556, 2207613,
--3860639, 19588808, -2420214, -115112640, -216399248, -87050400, -146506704, -168368080, 104485280, 36430988,
-95991448, 288896672, 189061776, 152517504, 228663520, 114071112, 7255274, 90339272, 22410066, -91710440,
--64458332, -73116984, -167773776, -136342656, -58970436, -122106456, -134511936, -55723444, -82837032, -138922864,
--71840304, 10570988, -87389696, -80032960, 17497696, -17469242, -79701168, 89006752, 58093192, -67019208,
-66034584, 100189776, 15087146, 57204132, 201543488, 95589328, 60335164, 237037104, 166104096, 96052648,
-233728368, 313306592, 193965024, 280924672, 363995808, 260001216, 172434352, 227247264, 119601416, -116052160,
--76428408, -153231552, -356656224, -357711712, -362243456, -546825600, -539878976, -542499456, -565066816, -533560576,
--518955008, -408637152, -327060672, -247448096, -102014600, 29774860, 79170744, 201628848, 350529984, 296884768,
-398152064, 566101376, 475904384, 444356256, 541167488, 400782176, 205583984, 222685472, 209030160, 78274168,
-55764244, 112037984, 41405096, -10045929, 37473052, 13161927, -78136192, -69956424, -42159936, -139772192,
--160428304, -70185672, -122082832, -168148512, -69500088, -44829260, -91661048, -1542967, 29429116, -30469034,
--4674535, -22543210, -128282080, -184868816, -207100096, -258740112, -304497088, -273414944, -249868848, -232778096,
--174697264, -111378704, -79285632, -14591615, 61543660, 95661272, 138835888, 228612512, 278014304, 324187360,
-347507424, 329170592, 293462752, 224423312, 153472064, 85607824, 11964705, -14595373, -24757802, -40394704,
--45456860, -46375448, -53682260, -57008176, -51444044, -46326592, -51407000, -55174760, -52517248, -55126444,
--60093572, -57780732, -54537496, -42010684, -24932286, -15557982, -3936338, 4896263, 3944391, 1649268,
-438624, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+2426657, 3886946, -1370095, 3454228, -561030, 3645890, 1834488, -801548, -1427540, 3693135,
+312459, 736587, -4197794, -673236, -301721, -187368, 5740224, 2804077, -208843, -4306242,
+-3131031, -1852742, 526134, -98784, 1243930, 2638721, 804233, 973347, -4345433, -668941,
+-4229469, 169651, -2338610, 2769717, 2766496, -1103807, -2281702, 2895345, 620623, -1087164,
+-3910031, -531502, -2507724, 701690, 2392297, -3968550, -1935957, -664109, -1551557, 10126996,
+2413235, 5845988, 426276, 1917166, -42950, -2927557, -2713883, -3456375, 1633161, -2851858,
+2051384, 62814, 2503966, 2559264, 6219113, 1874753, -514859, -316754, -3693135, 6021008,
+5542119, 966905, 1709397, 1567663, 1715303, -353798, -3091840, 918049, 1788854, -1165010,
+517544, -955093, -2826089, 1341640, -2357400, -1604707, -734439, 183610, -1054951, -1148904,
+-1343788, -34360, -75162, -216896, 270583, -477278, 898185, -506806, -841277, -88047,
+1126892, 417686, -463856, -1523640, -448824, 1395328, 92342, 624918, 552977, 13995151,
+-3311420, -2928094, -1137093, -2772402, 642098, -6654515, 518617, 1324461, 338229, 4521527,
+517544, -934692, -3995930, 2557653, -5632850, -4856535, 1752884, -2369211, -1132798, -840203,
+938450, 3795677, 5195300, 389768, -806380, 6175626, 2226404, -360240, 224949, -2524904,
+77846, 6778532, 2684, -3151432, -2548526, -732829, 2299955, -3138011, -3867081, -3950833,
+-3231963, 3092913, -3040837, 1156420, -3694746, 1299228, 4472672, 291521, 3178276, -1352378,
+-2522220, -1248762, 2204929, -135291, 3412352, 4990215, 731755, -1510755, -2582349, -130997,
+-382252, 227633, 158377, -4401805, -464930, -2057826, -2238752, 2131378, 452045, 1367410,
+1620276, -5237713, -2918967, 2168959, -979789, 3868155, 702764, 3258807, -666794, -833224,
+-900869, -1897839, -445066, -2090039, -840203, 57982, 3051574, -738198, -68719, -529892,
+966905, -28454, 1176284, 233539, -257161, -772020, 947577, -1500017, 6979, 76773,
+-851477, 701153, 897648, -1267015, 424128, -626528, 545461, 528281, -3758, 897648,
+96100, -469225, -9992241, -4937065, -2165737, -6834904, -2381559, -6562173, 1906966, -594853,
+-4095788, -4720169, -720481, -3859565, -113817, 3171297, -261993, -5861020, -2190433, 66035,
+-2306934, -1913408, 1668058, 5483063, 7030862, -1156957, -1906429, 3941706, 4482335, -1424855,
+-1068373, -918049, -3205119, 948651, 1445257, -2886755, -2171106, -687732, 2697240, 6002217,
+370441, -2048699, -20401, -3056406, -1142998, -4847945, -2295660, -2162516, -7659001, -831613,
+-3489661, -2426120, -8406325, 5183489, -3673271, -3255585, 1466731, -541166, -628139, 1078574,
+-6988986, -1828582, -2521146, -571231, -4046396, -568009, -1919314, 1828046, 2393371, -2285460,
+-1235340, -3347390, 1155346, -514859, -705448, -6442, -5182415, -137976, -4686346, 700080,
+-341450, -1483374, 1350230, 5652177, 2675765, -1347009, 282931, -1003949, -2228551, 206158,
+852551, -1119913, -183610, -1384053, 12348, -576599, -1733019, 676994, 634045, -1809792,
+-867583, 479963, -780610, 236760, -1199370, -923955, -979253, -1690070, -1847910, -148176,
+438624, -936840, -1125818, -8053, -545998, -237834, -620086, -17717, -363462, -619012,
+-1530619, 802085, -557272, -727997, -758062, -18480170, -1451699, -9104257, 8192650, -4735739,
+14740328, -9415642, 9295383, -8344048, -493921, -112206, -6430103, 5021891, 192737, -2385854,
+1517734, -2085744, -834834, -6257231, -49392, -4717485, 3757560, 1327145, 4597763, -2674154,
+6855305, 6179384, -5972152, 1701881, -5076652, 5432597, 59056, -3762928, 326418, -512175,
+-186831, 3993246, 591632, -5883032, 2445447, 4271882, -272194, 5041218, -2325725, 4115116,
+-6114423, -3091840, 4024384, -3497714, 1024350, 5427765, -4909685, 8008504, 3165391, -7860864,
+1924682, -7571491, 2740189, 4261145, 2870112, 4103841, 5873368, 2005750, -714575, -447213,
+395674, 1884417, 4223027, -1430224, 7973607, 1571958, 5465883, 2992519, 1592359, 419296,
+5483600, 1016834, 1365800, -3109556, -4267587, 2210835, 2961380, 353261, 4714801, -525597,
+-32212, -838056, 5597416, 1724966, -1993939, 1303523, 958851, 841277, 1910724, 328565,
+3484829, -508417, 1203128, 695785, 1335198, -842350, 667867, 367757, 82141, 348429,
+-1182190, -1028645, 443992, -1275068, -581968, -1385127, 913217, 20401, 12213276, 68719,
+-3323768, -1114007, -4555350, -5438503, 8919036, -1730872, -1298691, 8186208, -634045, -1579474,
+3619584, 6371047, 1816771, 3165928, -163746, -6949257, -1843078, 5228586, -7924752, -7844221,
+-2944200, 1723356, -5589363, -3353296, 108448, -777926, 5486821, -2111513, -1207423, 5794985,
+8048232, -6971806, 1819992, -1656784, 2933463, 810138, -3102577, -666794, 3343632, 5143224,
+-1385127, -7238094, -1637993, -630286, -1919850, -3607773, 518080, -450435, 1312649, -988916,
+999654, 6782290, -5017059, 658741, -3823595, -3082176, -5252745, -1570347, -3039226, -7237557,
+-270046, 507343, -2832531, -544924, -2997887, 2807298, 3510599, -542777, 1036698, -2599529,
+-736587, 8763344, -1170916, -3617973, -11895986, -5399848, -170725, -4049617, 2727304, -1141388,
+1006633, -3221, -2404645, -440771, 3443490, -2913062, 662499, -814433, 317828, 16643,
+-2507187, -1832877, -1067299, -1911261, -403727, -3031173, -654446, -1715303, 315143, -1194001,
+-415001, -1630477, -1788317, -1727651, -468151, -177167, 600222, 455803, -261993, 503585,
+380641, -86436, 1673964, 1480690, -47245, 881005, -725850, -914828, 184684, 15832323,
+17791902, 3386582, -6470905, 4053912, 7016366, 7037841, 3972308, 5317170, 2382633, 8703751,
+-878321, -1061931, -3544422, 5465883, -3197603, -7655243, -10550587, 1221381, -5056787, -4349728,
+3739843, -1101659, -2801393, 8894877, -630823, 11048803, 124554, -4350802, -2975876, 3886409,
+2580739, -2160369, -8731132, 12620225, 7297150, 89121, 6842957, 4097936, 4453881, -4115116,
+5027796, 2580202, 1020592, -1502165, -2237678, -5536750, -7830263, 2241436, 3810710, -6087043,
+2468533, 5305895, 7890392, 2113124, 7130183, 3332358, 6077379, -8876087, 2664490, 853625,
+1808181, 259846, -590021, 3819300, 3457449, 3379066, 4878546, -1566053, 2381023, 1436130,
+7010461, 8600672, -4306779, -5029407, 789737, -2025614, -4525822, 1951526, 4763119, -2882997,
+2032593, -8517457, -6263673, 1495722, -4314832, -1996623, -1377074, -3843996, 40802, -4832,
+521839, -45097, 1729798, 2065879, -105764, 1068910, 380641, 1576253, 1652489, 72478,
+152471, -52076, 1804423, 950262, 1012002, 2244121, -346282, -1064615, 1684701, -420907,
+28991, 2570001, 1586990, 2436320, 3294240, 563178, 1497870, 933082, 2195265, 14540075,
+4598836, 6422587, -5314485, 2110977, -13156022, 712965, -9502078, 7206955, 4853850, -4001836,
+6072547, 3449933, -6429029, -1593970, 9322763, -300111, 6424734, -1752347, 1302986, 7430294,
+-9220758, -708670, 1530082, 2717641, 636729, 2989297, 409096, 9009231, -4154307, -2587181,
+-2699387, 6811818, 888521, -3198140, 4160213, 11485816, -7994545, 1419487, 1572495, -697932,
+4664335, -2323577, 8803072, 2947958, 2251100, -7196755, -681826, -1910724, 4101694, 3055869,
+4429185, -4946192, -3190624, 4174171, -8579734, -4833449, 1994476, 9259413, 5658620, 8186745,
+-8894877, -2840584, -9038759, -2364380, 2800856, -788127, -8523363, 1110786, -5203890, -90194,
+-9329206, -11382737, -4590247, -8222178, 523986, 2881386, 1688996, -3529926, 4591320, 7264401,
+2102923, 2127620, 4251481, -1341640, -6924024, -451508, -4742181, 2487860, 865973, -499290,
+1369021, 623307, -5049271, -2647847, -1384053, 2535641, 444529, -1829656, -539555, -191663,
+-670552, 387621, -962073, -513249, 442919, 2299955, 678605, 719407, 616328, -497679,
+780073, 1519345, 898185, 1989107, 702764, 1007170, 218506, 1563905, -2406792, -17141752,
+-15458661, -11124502, 3373697, 3416647, 12809203, -5685463, 12164421, -4996658, -20118164, -1811403,
+-1889786, -7799124, -13024488, -4772783, -306553, -8041253, -91805, -12359305, 878858, -13028246,
+7421704, -3301219, 5399848, -2580202, -256624, -4071629, -4719632, 7998303, 1547262, -2371896,
+9080098, 985695, 1437203, 3092913, 8353175, 7326678, 5583995, 103616, -9954124, -1075352,
+4735202, 1404454, 6049462, -2959233, 2676838, -14614700, 4573067, 8741869, -11070815, 6448357,
+2234457, 10347113, 7914551, -75699, -2785286, -315680, 7015829, 3417183, -9342628, -7631620,
+-12903155, -6293738, -8677981, -2028298, -10727218, -2348810, -3632469, 10806675, -5129802, 5301064,
+-2875481, -1669669, -3602404, -7603703, -4079682, -2499134, -2563559, 6769942, -20649130, -4473209,
+9569187, 355945, 1785096, 5066988, 9689446, -6209449, 1100585, 2499134, -520228, -186294,
+-1496259, 2575370, 3965866, -1859721, 258235, -491237, 4437238, -1770600, -207232, 4440460,
+855235, 1497870, 2026151, 2029909, -823023, 278099, -1292248, -1868311, -1078037, -3231426,
+825171, 1942936, 1336809, 714038, -4147865, -92342, -621697, -300111, -1988570, 1020592,
+1738925, -1094143, -280247, 2042794, 2205466, -22512608, 17440252, -4793184, 10349261, 6059662,
+-324807, -14860587, 11872900, 1694365, -945967, 7530689, 5365488, -6087580, -17717, 12776454,
+4296041, -5647345, 9089761, -4846334, -3881577, -2637647, 2972117, 141734, -1564442, 1301375,
+3942243, 3532074, 3630858, -9265855, 5851893, -7685844, 10640245, -6494528, 10590316, 3457986,
+1078037, -10239202, -10406169, -3402151, -3419331, 12306155, 3531000, 9855876, 4175245, -8672076,
+404264, -1921461, 4265977, 306553, 3764002, -1026497, -5813775, -3378529, 6277632, 15568720,
+11245835, 1319092, 3907347, -1064615, -2109366, 8012799, 6737730, -2794413, 9883793, 13909788,
+19430968, 469225, -11039140, -13320841, 4728222, 2480881, -496606, 3419331, 132607, -4230006,
+-432718, 11759620, -2065342, -5056250, 20908974, 5323612, -3457986, 6190122, 212064, -154619,
+-586800, -3239479, -396748, 6406481, 3218541, -1964411, -2976949, 4517769, 3676492, -217970,
+8542153, 2527588, 1676111, 1003949, 3881577, 1551020, 3642669, 2547989, 1330366, 809064,
+4570382, 2590402, 2479807, 770410, 4539244, -454193, 1837709, 2772402, 1941325, -224412,
+5064304, 5821828, 1860795, -767189, 6039261, 624918, -2615635, -299574, 4451734, 418222,
+-221728, -718870, -635655, 423054, 1279900, 3015604, 10501732, -15330886, 12924630, 5326297,
+-10466835, 24552180, 3701188, -12504797, 2915746, 6856916, 667331, 4961761, 17619566, -16809966,
+11004243, -6777996, 9761924, -3680250, 2094333, -15560667, 2665027, -1651415, 6283537, -5935645,
+884763, 1245004, 175020, -9107478, 8799314, 978716, -943282, 4197794, -1745904, 4139812,
+-2173790, 12451110, 9781788, 12328167, 12204686, -1904818, 4265440, 5357972, 541703, -6335077,
+8628052, -10153303, 3156801, 10227391, -6038187, 5460514, -11341935, 3710315, -996432, -2605972,
+-989990, 964220, 3490735, 3470871, 11927124, -7732015, -398358, 8009577, 16996260, -14975477,
+3844533, -3594351, 5148055, -2659122, 24823838, -15178951, 5428839, -8403104, -4759361, 2345052,
+2565706, 1504312, -21769578, -11324218, 17916456, 9978820, -2017561, -9569187, -11285027, -4308926,
+3963181, -11937325, -6650757, 6105296, 3272765, -86973, -405338, -8296803, 1517734, -2293513,
+-3257196, 4045322, -2152316, -2433099, -1072668, -7221988, 2429341, -1732482, -2601677, -2502892,
+3275450, -3376918, 4006668, -445066, -1162326, 1610076, 1338956, 5522254, -5598490, -954557,
+-4297115, -671626, 2518998, 2237678, 6825777, -2057826, 3690451, 1095217, -2720862, 11457899,
+-15131707, -3231426, 21337398, -6439230, -452582, 11418707, 2662880, 7036230, -15968152, 15269146,
+971736, 1116155, -4072166, -9618579, -1344862, -1511829, -10297184, -6226629, 11368242, -3649649,
+2163590, -5620502, -25071872, 8452496, 1115618, -7765838, 4760971, 9673877, -932008, 1043677,
+-1981591, 2411624, 6553047, 2063732, 10543608, 7206419, 1632088, 9207336, -7464653, -7360500,
+-10460393, 3912715, 6012418, 1724429, -16579648, 4663798, -14169097, 20467130, -4881767, 7253126,
+17467632, -6925635, 11091216, 2740726, 12077448, 4838818, -5858336, -17986786, -12905840, -10078141,
+-1403381, -10578504, -2124398, -9252433, -6001680, 18020610, 3896609, -7735773, -6852084, 3605088,
+6691559, -1607392, 2603824, -32871532, 13201119, 2197413, -10547366, -12986370, -3391414, -21725018,
+2327872, 10737418, 1178969, -9359807, 5745593, 4809827, -7668127, 3790309, 2269353, -1953673,
+245350, -4947803, 1280974, 1660005, 1261647, -6436009, -3506304, 2581275, -4012036, 878321,
+-2425046, -1590749, 1534377, 5341866, -6837051, 2335925, 5305895, -6407018, -5995775, 745177,
+-5502927, 1220308, -3655554, 3750043, 2050310, -6416681, 3568581, -4230006, -2714419, 4352950,
+1016297, 9852118, 3062312, -60130, -622233, 731755, -2595234, 7099581, -20359218, -24948392,
+14945412, -12293807, -14292577, -4144107, 9353902, 19340238, -12859132, 955630, 9172976, -2869575,
+-4102231, 4910758, 3176665, 14513768, 4813585, -14136348, -607201, -7217156, -556735, -8439074,
+-11075110, 1599875, 10936060, -902480, 4838281, -9226663, 2605972, 10790568, 8365523, 1180579,
+787053, 6705518, 6381785, 4015795, 9885404, -12701292, 13737990, 9838696, 3324305, -10517301,
+688269, 7926899, -8315594, 9225053, -6619619, 10461467, -2899103, 13690208, -21760988, 22907208,
+5310727, 21595096, 1313186, -4701379, -1604170, 7730405, 425202, -18229452, 617402, -1396938,
+-18894098, 5828271, 13262859, -17954038, 14768245, -15819975, 4793721, 5945309, 3156801, -19770272,
+-9591199, -9766756, 1787243, 1342177, -11589432, -16950626, 3176128, -14923938, 9982041, -7269769,
+-3997004, 4963909, -9357123, -7248831, -9599789, -4024384, -5409512, 169114, -7706782, -5773510,
+-7045357, -10349797, -5117991, -2261837, -2454037, -2711735, -3129421, -2110440, -5021354, -5458367,
+3383897, -6509560, -3629247, -1762010, 4779762, -2531883, 3221, -8280697, -6041945, -2786360,
+-315143, -1978906, -7133941, -1090922, -763430, 5539971, 3481071, -4714801, -4474282, 801548,
+-2469606, 4054449, -2511482, 2115808, -4485020, -11515344, 17443472, 3520263, 11479374, 11126650,
+3122978, -8591545, 1893007, 29444148, -20253992, 4872104, -3565897, -11059541, 653909, 3953518,
+4748087, -140660, 67646, -5801964, -8509941, -13238700, -6695854, 10001368, -8393440, -13300977,
+7644505, -4766340, 2929705, -1759326, 5939940, -5661304, 12524125, -4517769, 1352378, -281857,
+1321239, 11547020, 3924526, -5356361, 6152541, -4901632, 9456444, -5686000, 3877282, -13533979,
+-9898289, -7247221, 2362769, -6759742, -11812234, 4978941, 8751533, 2574296, -6284074, 4051228,
+6180995, 7036230, 18924162, 26126822, 35485020, -3584150, 5655935, 8607651, 5015448, 4834523,
+5703180, -7204271, 14081050, -1925756, 18382996, 22752590, 16642461, 6823630, 9368397, 3219078,
+31733902, 9219684, -5810554, -4929549, -4511327, -1711008, -2042794, 1804423, -2533494, -5802501,
+5307506, -9256191, 2792803, -1978906, 2946885, -4515085, -3733400, -2761127, 7196218, -6830072,
+-6739878, -315143, 2967286, -3340948, -8652748, -2681133, 498753, -3911642, 4621385, 8978629,
+-4996121, -340913, 1865090, -642635, 2950106, 5332202, -2368138, -5790153, -991064, 3206730,
+-2938831, 8217346, 9473624, 6070400, -2690260, -6095096, -814433, 9571871, 1088774, 67646,
+4170413, 1636919, -49392, -1208496, 2347737, 2708514, -6229850, -276489, 35423280, 28350006,
+-12381854, -5713917, -14765561, 8472897, 4130685, 17324824, -3068217, -7555385, -3412352, -11288248,
+2525978, 389768, 16363825, -6175089, 6097243, -22084184, 12136504, -1777043, 8541616, -157840,
+7741679, 1268626, -12544526, -6527814, -10759967, -8227547, 9066676, 21792664, 9523016, -2658048,
+-6769406, -357019, -1829656, 5387500, 7392176, -14038101, -265214, -4938139, -4663261, -15241765,
+-11703786, -24659554, 468151, -1307818, 8879845, -7445326, 15781320, -12051141, -5251672, 31473520,
+31267898, -21688512, 4851166, 18037788, -10489921, -5102958, 9347996, -3569655, -13178033, 35005056,
+-8705899, -53404160, 17772038, -778463, -27448062, 20932596, 22484690, -8059506, 15755551, 19877108,
+-9401147, 600222, 12713640, -13835163, 5793911, 10903848, -19608674, -2816962, -6431714, 955630,
+-7141457, -8590, 2812130, -8432095, 6759205, -9761387, -4375498, 4563940, 9564892, -5609764,
+610959, 1772748, -1357747, 3091303, -6866042, 10070625, -5113696, 10640245, 10530186, -403190,
+625455, 6933688, -5098663, 1377074, -186294, 8717173, -6555194, 5215164, 1740536, -20973400,
+4126390, -2772402, -3801046, 944893, -474057, 2039573, -11627550, 1411971, -2938831, -10566693,
+1903207, 17591112, -16605417, 5296769, 9898289, -14501420, 71404, 7590818, -13328357, -6648073,
+2406256, 6136972, 11695196, 5639829, -9622337, -1865090, 8625368, -10114648, 9930501, -5098663,
+-12921946, 11421392, 5848672, 5623723, -3320547, -3353833, -4655208, -760746, 9586904, -20193862,
+9848360, -561567, 16610786, -10701985, -88584, -13273060, 5592585, -21512418, 2236067, 807454,
+-8626979, -6585259, 3299609, -14532559, -24986510, 14916421, -1527398, 4384088, -14835354, 8869644,
+-2516314, 9541807, 10242423, 5009006, -10507637, 8429947, -5113159, -2415919, -19353122, 2624762,
+-13816910, -15138149, -22028888, -9125195, 3359738, 5927055, -22736484, -11307038, 1070521, -8231305,
+-30485140, -24201604, -24881820, -5272073, -14937359, 12958453, 18304076, 4915053, -18438832, -21352966,
+-24884504, -2462090, -1989107, 13342853, -12096775, -20769388, -10297721, -13885092, 4507032, 99321,
+4715337, 2305324, -6976638, 1306744, 4858145, -5492727, -2432025, -4679367, -3031710, -3427921,
+-6790880, -471373, 7968238, 113817, 2183454, 2218888, -1623498, 5972152, -4197794, 9323300,
+8298951, -3525095, -7859254, -544387, -3153580, -4436701, -5028333, -4430259, 6621229, 138513,
+6221260, -6885907, -7525857, -1497333, 3323231, -11847667, 1777043, 1011465, -8791261, 1711008,
+-7281044, -15429133, 9170292, -3806415, 925565, -2695629, 1353452, -7968238, -2287607, -15480136,
+26925150, 29920890, -7077569, 20207284, -5610301, -7770133, -7721815, 19681688, -16955458, -3796214,
+-8009577, 31157304, 1295470, 11481521, 4204773, -2769717, 15612743, 8811125, 12808129, 4146254,
+-1833951, -5275294, 12264816, -1860258, -11747809, 15006616, -259309, 13165685, -14384382, 10304700,
+3747359, -14606647, -11259794, 27157616, 17666274, -1474248, 9822053, 8269960, -17005924, -11059541,
+5822902, 4512400, 12142409, 1695438, 2779918, 4888210, 14784888, 6235219, 3903052, -14377940,
+40492952, 27303644, 3257733, -17933100, 9172976, -5888937, 5171678, -3933653, 8789114, -5716602,
+1509681, 22489522, -15278809, -7214472, -20585778, 6023155, -5499169, -3408057, 19094888, 6203544,
+2545305, 1872606, -7683160, -15221901, 11317776, 220654, 348966, 12259984, 12050068, -709743,
+-8655970, -9934796, 19719806, -1798518, -1039919, -3566970, 14846091, -939524, -10210748, 7007239,
+5568962, 9490804, 4291746, 3519726, 13711146, -2525441, -4905390, 5021354, -273804, 824097,
+1259499, 6533719, -3464428, 246424, -4436701, 1762010, 6604049, -2762738, 1593970, 8519605,
+-2872260, 2058363, 6008659, 714575, -1603097, -12395276, 8269960, -6798933, 5421323, -8174397,
+-1853815, 3743064, -5353677, -1806034, 12085501, 9118216, 1024887, -1545115, 11283953, 2588255,
+5373541, 5356361, 2510409, -1683627, 4825396, -9709847, -21046950, 54731840, -61380452, -7084549,
+-32293322, 39696772, 10720775, 7017440, -15394237, 3734474, -12553653, 35561256, -6224482, -2265059,
+3703873, -1745367, -13836774, 5330055, 8146479, 10765872, -23923504, -12583717, -12282533, 4938139,
+-7186554, -6447283, -689342, -210453, 15831249, -8113193, 869194, 11906723, -1391033, -15819438,
+2086280, 12528420, -1400696, -24944634, 18751290, 2247342, 446140, -34360, -10425496, 8231305,
+-46062988, -32235878, -4387309, -11544335, 2213519, 3531000, -21505438, 33996812, -13345000, 46833396,
+-6484864, -16405164, 16172162, 2674691, 14452565, 21680458, 7019587, -22289806, -6030134, 25028922,
+58273044, 1918240, -14705431, 24210194, 2259153, 28554554, 4791036, 38659536, -9808632, -1570347,
+-863825, 9011378, 1520418, 14835891, 27373438, 1584843, -5552319, -4880694, 8861054, -7415261,
+-2966212, 17704392, 13180718, 1906966, -3096672, -6739341, -7290707, -4649839, -5881958, 12735115,
+-7679402, -5573794, 6576132, 2211371, -2184528, 5655935, 6772090, -3704946, 5851356, 9002788,
+-4437775, 507880, -12604118, 16165720, 199179, 12975633, 1154809, -13751948, 378494, 1296006,
+3883187, 1333051, 301185, -11851962, -10545218, -796180, -5997922, 8497593, 3492345, -4161287,
+-68183, 6638946, 1734093, -4101157, 736587, 4750771, 413391, -2565706, 2226404, 79898200,
+24674588, 8687108, -2698313, -8769249, -11677479, 25972740, 23789824, -27792196, 16206522, 12277164,
+2631741, -8507256, -14882062, -37839200, -14345191, 11885785, 3690451, -12279848, 22519050, -7551626,
+8973797, 8949101, -5739687, -5489505, 23502598, 464393, -9286256, 14668387, -13185013, 28981366,
+-14540612, -8839580, -1845762, 11203422, 5770826, 29313152, -9332964, -17795660, -6537477, 7627325,
+1750736, 15627239, 4060355, 1218697, -6702834, 12558484, 55051816, 23351738, -20852604, 17580912,
+-11078331, -16974248, 13357348, -788663, 3683471, -1297080, 9534291, -14851460, -22606560, -59310816,
+-15871515, 20892332, -8126615, -20497732, 8551817, -4939750, 8512088, -23896662, -21081846, -10002442,
+8576513, 9198209, 27870580, 4734128, -2326799, -22310208, -31587336, -4124779, -14396730, 2483028,
+10911364, -15137075, -15667504, -3542274, -19408958, -32042604, -10938208, -8699456, -17367774, -4217658,
+9068287, -9128416, -5060545, -10458782, -2759517, -22910430, -14816563, -14687714, 20401, 1835562,
+7798050, -12936441, 6732898, -17355962, 311922, -10333154, -1712081, 5018133, -5690832, 7754564,
+-22882512, -4741644, 7227893, 2913599, 6605123, -3148748, -6569690, 10705206, -2625299, -2594160,
+7231115, -11539503, -9378061, -1970853, 1651415, -15219753, -7559680, -8444443, -5019206, -1601486,
+-683974, 928250, -7220914, 328565, -12486007, 17802640, -14169634, 48931488, 41087804, 19277960,
+-11148661, -17138530, 29390462, 25200184, -32877974, -6611566, -20114406, 28394028, -4718022, -40101572,
+-17421998, 14403710, 25223270, -46370616, 18743238, -32076426, 12021077, -18902152, -4806606, 22450330,
+-7418483, 3499325, 14400488, 29885456, -19376744, -32617592, 7450695, -2482491, 3691525, 30631170,
+7827041, 22881976, -28744606, -5242545, 9405978, -25680146, 42248520, -4827007, 25376814, -3437048,
+-5767068, 20782810, 20844014, -11816529, 46530064, -10777147, -20024748, 22459458, 40008156, 2346126,
+7384660, 2017024, 17744120, -18663244, 14271103, 60564408, 27997282, -1807108, 26599806, 32632624,
+-23926190, -73909408, 5797132, 44705776, 50633908, 13882945, -4658966, -21719650, 26394722, 55794848,
+26225070, 13667660, -54363548, 10385768, -30690762, -19180250, -47889960, 40993852, 9156333, -14025216,
+-18888730, 14467597, -13571023, 7872138, 5770289, 7341173, -17548700, -3716221, -1916092, 9607842,
+-5833640, 8135205, 7358890, -8049843, -4922570, 11266236, 833761, 12087649, -4748087, 4538170,
+-7508140, 4336843, 23051090, 4345970, 4648229, -2808909, -23962160, -12268037, -14624364, 8114804,
+41517840, 38778724, 35459248, -2680060, -24999394, -24051280, -10991895, 16312286, 18654116, -1305670,
+-7952669, -12996571, -18451180, 5049271, 11157251, 8866423, 8861591, 6523519, 723165, 33820184,
+-67343480, 51163260, 10522670, -30957050, 303869, 28542206, -19221052, 657130, 15801722, -20168630,
+1591285, -18146236, -11525545, 18826990, -16419123, -9455907, -34367256, 14650670, 33199560, 9170292,
+-15074261, -25624848, -4158602, 18891950, 10243497, -21931176, -665720, 25934624, -3548180, 1549410,
+-9005473, -6644852, 61385820, -29752850, -7606387, -7115150, 10254771, 28280212, -30421790, -17318382,
+40373768, -5072893, -2663954, -48708688, -40080636, 16428787, 27136678, 14533632, -49627272, 33636572,
+-967978, -7942469, 7045357, -35811436, -9876277, -4978941, -17617956, 31491238, -24943022, -14232448,
+-26812944, -15878494, -35336308, 10219875, -55222544, -15911243, 6431177, -27924804, 6752226, 14822469,
+6678138, -869194, -9921911, -20330228, 29180008, -6835978, -2840584, -11011759, 17665738, 34904124,
+5305359, -48394080, 4214974, -21862458, 3188476, 3877282, -8735963, 2775623, -14331232, -5419175,
+-1206349, -11449309, 214748, -3711926, 8429410, 6884833, -2601677, 3152506, 15688979, -7711077,
+-5598490, 15366319, -11598559, 9971840, -5604933, -6072010, 1229434, -7496866, -3239479, 9053254,
+-18944028, 5017059, 4538707, 6326487, 13681618, -10311143, 1715303, 9422085, 3795141, -4231617,
+-8875013, -2560338, -2058900, -552977, -9085466, 1956358, -1478543, -38579544, 23527830, -635655,
+30430918, -6174016, 31474594, 4013110, -3926137, 14116484, 36508296, 17521856, 9422085, 7355132,
+4740570, 14403173, -18246094, -1414118, -13661754, -14367739, 22489522, 14011257, 8660802, -6375879,
+-5543729, -2585570, 23516556, 3657165, -10285910, -16872780, -687195, -3939559, 17706540, 2747705,
+14821395, 27748710, -7631620, -70057360, 4686883, 57057568, 6024766, -41737420, -5338645, 16169478,
+12716324, 22456774, 20423644, -1595580, -13161927, -13489955, 17879412, -10768557, 2048699, 6305549,
+-72768024, -12556874, -13955959, 11631308, 57273924, -979253, 4634807, -13214541, 3923990, 11871290,
+24040542, 12608950, -14164802, -7396471, -35332548, -2075006, 24324010, -10655814, -5033165, 9020505,
+24703042, 20081656, -5317170, -25060060, 158377, 9245991, 2802466, -16626892, 2065342, 2099702,
+-1265942, -14343043, -18692772, 16306917, 13326210, -598611, -2928631, -14023068, 11178189, 4706211,
+2542621, 4430796, 3560528, 6564858, 412854, -15537044, 8732205, 523449, -983011, 990527,
+4152160, 2079301, -2123325, 73551, 602369, -5024038, -3036005, -21505974, 3391414, 15382962,
+-10743861, 5567888, -17506824, 9979357, 4551592, -2474975, -4852776, -1632088, -1733556, 2207613,
+-3860639, 19588808, -2420214, -115112640, -216399248, -87050400, -146506704, -168368080, 104485280, 36430988,
+95991448, 288896672, 189061776, 152517504, 228663520, 114071112, 7255274, 90339272, 22410066, -91710440,
+-64458332, -73116984, -167773776, -136342656, -58970436, -122106456, -134511936, -55723444, -82837032, -138922864,
+-71840304, 10570988, -87389696, -80032960, 17497696, -17469242, -79701168, 89006752, 58093192, -67019208,
+66034584, 100189776, 15087146, 57204132, 201543488, 95589328, 60335164, 237037104, 166104096, 96052648,
+233728368, 313306592, 193965024, 280924672, 363995808, 260001216, 172434352, 227247264, 119601416, -116052160,
+-76428408, -153231552, -356656224, -357711712, -362243456, -546825600, -539878976, -542499456, -565066816, -533560576,
+-518955008, -408637152, -327060672, -247448096, -102014600, 29774860, 79170744, 201628848, 350529984, 296884768,
+398152064, 566101376, 475904384, 444356256, 541167488, 400782176, 205583984, 222685472, 209030160, 78274168,
+55764244, 112037984, 41405096, -10045929, 37473052, 13161927, -78136192, -69956424, -42159936, -139772192,
+-160428304, -70185672, -122082832, -168148512, -69500088, -44829260, -91661048, -1542967, 29429116, -30469034,
+-4674535, -22543210, -128282080, -184868816, -207100096, -258740112, -304497088, -273414944, -249868848, -232778096,
+-174697264, -111378704, -79285632, -14591615, 61543660, 95661272, 138835888, 228612512, 278014304, 324187360,
+347507424, 329170592, 293462752, 224423312, 153472064, 85607824, 11964705, -14595373, -24757802, -40394704,
+-45456860, -46375448, -53682260, -57008176, -51444044, -46326592, -51407000, -55174760, -52517248, -55126444,
+-60093572, -57780732, -54537496, -42010684, -24932286, -15557982, -3936338, 4896263, 3944391, 1649268,
+438624, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-6948184,
--644245, 6500970, -5812165, 2239826, -9788767, 96100, -3546569, 3928821, -3310883, 889595,
--2247879, -4098473, -1058173, -396748, 2964064, 3712999, -3535295, -6157373, 3216394, 1093606,
-2246268, 1352378, 2540473, -3570192, -2683818, 632434, -687732, 3200825, 2302103, -2732136,
--595390, 2437931, 4525822, 2784750, 25770, -3565897, 1903744, -618475, -1904818, 2495376,
-1072668, -3275986, -2745558, -2226941, 1816771, -3209951, -1732482, 2681670, 1025960, -105764,
--3362960, 1224603, -2893197, -7439957, 721555, -2539400, -4807142, 2193118, -1377611, -1379758,
--1657321, 93416, 3640522, 2192044, 1218160, 1656784, 2744484, -5606006, 2901251, -2236067,
--2164127, -1247151, 1842541, 346819, 3912178, 5706938, 2216203, 433255, 632971, -94489,
-3638911, -1553704, -149250, 1778653, 111669, -1522566, -1567126, 510564, -59056, -1717450,
--874026, 528281, -105764, -234613, -697932, -853625, 550830, 359167, 598611, -258772,
-197569, -181462, -1602023, -618475, 704375, 1260573, -730681, -846109, 268972, 14862197,
--1241246, 2734284, 3280281, -1508607, 1551557, 5928129, -4601521, -803696, 1702955, -2282238,
--440234, 4358318, -1392643, -967441, -290447, 1697049, -819802, 2105608, -1457605, -1431298,
--654446, -3358128, -5747203, -1071594, -1836635, -759136, 3401614, -6085432, 7507066, 59056,
-140660, 271657, 1425392, -166967, -2872260, 468151, 2320356, 5672041, 291521, -26844,
--852551, -1893007, 3769908, 1801202, -1365263, 2090575, -3738232, 654983, 1203665, -2819109,
--9732396, -3033321, -236223, -556735, -456877, -840740, -1233729, -689342, -1845225, 2404108,
-7183870, 4084514, 320512, 4832, -186294, 2527052, -1462436, -6526203, -221191, -3389803,
-2150168, -3848291, 2192044, -9425843, -54761, -1325534, 3211562, 5167383, -784905, -1205275,
-776315, -1074, 2770254, 1036161, 466004, 3768834, -2759517, -342524, 477815, 1363115,
-8053, 1389959, 77309, 898185, 400506, -157840, 280247, -312459, -40265, 811749,
-1190780, 168041, -326954, -439160, 156229, -179852, 673773, 510027, 327491, -194884,
-122943, 482647, -13077102, -12610024, -4745939, -1867774, -1799591, 10737, 3189013, 761283,
-2590402, -5921686, 2928631, 3689914, 3565897, 4181688, -3235184, 899259, 9839770, -6085969,
--214748, -4335233, -6287832, -752156, -446677, 5451924, -2644089, 573915, -4696547, 3011309,
-1880659, 2364380, -10528575, 1624035, -1925756, -3692598, -994285, -50466, -7811472, -5057324,
--4362076, -350577, 6526740, 2264522, 2161979, 3136937, -2920041, 1846836, -2619930, 5581310,
-8585640, -803159, -789737, 2442763, 600759, 2222109, 4824322, -2261837, 4991289, -779537,
--153545, 2955474, 4042638, -1527935, -5840082, -5370320, 2075006, -732292, -1003412, -2365453,
-2651069, -4471061, 1662152, 3356517, 5665599, -3291556, 5432597, 3551401, 1766842, 2718714,
-655519, -916439, -3659849, 2607582, -1722282, -3413425, -4317516, 1794760, -1423245, 2607582,
-457414, -1658394, -2015413, -1023813, 858457, -1060857, -380105, -1364726, -605590, -77309,
-1327682, 703301, -42950, 776315, 2617246, -246961, 6979, 1534914, -826781, 436476,
--576599, -441308, 752693, 1107028, 1107028, 715649, -16643, -337155, 816581, 395674,
-1791538, 2153389, -1709397, -169651, 942208, -14339285, 6152541, -6439230, 11455215, -10736881,
-8369818, 4249870, -4482335, -5592585, -3130494, 2157147, 1938641, -3035468, 6739878, -2472291,
--6514392, -1354525, 6972343, 4772246, -7127498, 1102196, -926102, -7458211, -3114388, -4807679,
--1154809, -5716602, -1549410, -2401424, -7872675, -2821794, 3939559, 5679558, -1139777, -6741488,
--1396401, 4734128, -1500554, 141197, 286689, 83215, -6714645, -221191, -836982, -1716376,
--351114, 1156957, -4818954, 2710124, -5157182, -133144, -71941, 85899, 3761855, 58519,
--1802813, 1528472, 2597382, 6258841, 2830384, 1408212, -1854889, -3913252, -3705483, -1546188,
--4043712, -2898029, 2326799, 4091493, -3059627, -5083094, -3499325, 1588601, 852014, -4768488,
--1663226, 574452, -4024921, -1853278, 520228, 1206886, 1590212, -1860795, -2238215, -3049427,
-83752, -387084, -1194001, 921271, -1028645, -359704, -2340757, -533113, -805843, 2013803,
-973884, -843961, 968515, -139586, 288300, -1007170, 89657, -605054, -73551, -840740,
--1564979, 1091995, -130460, -1487132, -943819, -158914, -1367410, -1579474, 17548162, 7016366,
--1110249, 4022237, -2747705, 9860171, 4207994, 17714056, 399969, -17027934, 4449049, 10417443,
--6091874, 1870995, 7204271, -5428839, 5102958, -4392141, -890669, -5428839, -5145908, -1600412,
-1527935, -516470, 2444910, -2299418, 7652021, -4478577, 2222109, 1445257, 5009543, -8981313,
--4621922, -3513820, -981400, -3151432, 939524, 5555540, 4022774, 8795556, -1189706, -607738,
--4894652, -1598265, 5617817, -5349919, 4657892, -5003100, -2022393, 8072391, 11699491, 8353175,
-1559610, -6083821, 4394826, 3226057, -3155727, 6789807, -4351876, 1366873, 1173063, -12306692,
--537, -11664594, -4599373, 1896765, -2984466, -5552856, -4657355, 1005559, 8149164, 2033130,
--3168075, -4052839, -3474092, 834834, 1421634, 3869229, -5966784, -5458367, 497142, -1034550,
-488553, -1554241, -779000, -958315, -398895, 1842541, 600222, 855772, -661425, -1249299,
--1103807, 375810, 3339874, 1084479, 2466385, 755914, -3536369, 2784213, 1387274, 517544,
-683974, 1612760, -221191, 1390496, 419833, -25233, -995359, -839129, -1430761, 472983,
-1684164, -290984, -594853, -858457, -5054640, -585189, -475131, 177167, -654446, 10864120,
-21988622, -9557376, -7099581, -1914482, -2571612, 7671886, -7306276, -13318694, -4612795, 943282,
--3257196, 3838627, 1817308, 6652905, 2791192, -2650532, 9562745, 8967355, -4123169, 659814,
--6158983, -1038845, 344671, -3788161, -731755, 6693170, 9598715, 391916, 1583769, 3954054,
-2528662, 1549946, 660888, -3624416, -6888054, 800475, -9910100, 363998, 2281702, -3153580,
-3898757, -2505577, -5477157, -421981, 5340792, 2367064, -2387465, 16197932, -43487, 5228586,
--9635759, -2144263, 6617471, -3093987, -7133404, 4203163, -8360154, -7496866, 1713155, 9189619,
--7512972, -4224637, -2216740, 384400, -3399467, -3389266, 12398497, 7250979, -1117228, 692027,
--5828808, -4178466, -2367064, 3726958, 4905927, 430570, 3934727, 2541010, -790274, 3648575,
--3346853, 12374875, 7019051, 1364726, 403727, 1141388, -2084133, -799401, -2074469, -2196876,
--57982, -79994, -1996086, 1068910, -3015604, -910533, 2366527, -846109, 2425583, 1379758,
-2295660, 96637, 1588064, 1803349, 1645509, 310848, 2724620, 893890, 390305, -1962263,
-210453, -726923, -13959, 135291, 991601, -130997, 905701, -1870995, -62814, 8677981,
--15627775, -2124398, -11744051, -6699075, -10641318, -2727304, -1655710, -1619740, -4106526, 4720169,
--14983530, 7669201, -5126581, 4552129, 1975148, 6221260, 325881, 2568927, -6054294, -2578054,
-2770254, -6025302, -4383014, 7333657, 2004676, 3311957, 2931315, -769873, 1955284, 10926934,
--3944928, 1037772, -4955319, 8785356, -5335960, -19565186, 6032819, 3062849, 8209293, 4435628,
-11320997, -7671349, -3054259, 6833830, -2863133, -6560563, -3112241, 3551401, -9517648, 9378598,
--345745, 6248104, -8036958, -3529926, -2927020, -8705362, -1784022, -6922951, -3164317, 727460,
-10002442, 8055211, -921271, -12288438, -7010997, -2268817, 9716290, 8038032, 5850819, 5413270,
--3455301, -14222784, -3645354, -424128, 3321620, -4497368, -1404991, 7264937, -1396938, 8588324,
-102005, 5947456, 2273648, 278099, -2200634, -237297, 3236258, 856309, -1513976, 286689,
--3931506, -683437, -230318, -5264020, -3150896, -3368328, -1642825, 1028108, -2116882, 841277,
--2835752, -378494, -832150, -1546725, 2299418, 1104344, -488553, -3586835, -1389422, 1417876,
-2342905, 30602, -3481071, -1852742, 788127, 1784022, 494995, 857383, 264141, -20565378,
--24823300, -14068702, 10043781, 720481, -4713727, -5334350, -7999377, -930397, 2579128, -13886166,
--1418413, 8620536, -5423470, -3878356, 9633075, 2470680, -6514929, 2364916, -6307697, 14350023,
--4760435, -3519726, 4574140, -7595113, -4803921, -4489315, 2348273, -5298916, -2048163, 2334852,
-1649804, -17035988, 7486665, 7306276, -4976794, 13047574, 4953171, 1174137, 12497818, 7109245,
-2157147, 1687922, 13521094, -1430761, -2411087, -989990, 8274792, 4608500, -12422119, 4711043,
-3777424, -160524, -6656126, -19972672, 8698919, -1377074, -4985384, -12548821, -7126962, 7604240,
--1707786, -3699578, -8391292, -16251619, 1562831, -2302639, -8667244, -3677566, -15378667, -2504503,
--3512747, -2950643, -726386, 5435818, 11682848, 4985920, -4000762, -8455717, 3191698, 540092,
-4835060, 3037616, -1964411, 3537979, 1240172, -431644, -4623533, 376883, -7482907, -483721,
--1697586, 1192927, -2932926, 3467112, 1999844, -853625, -675384, -739808, 438624, -1712618,
--498216, 1986959, -863825, -764504, 3767223, -1533840, -1048509, 3055869, -2433099, 1839857,
--6271189, -4052302, -2346663, -3313567, -398895, -3290482, -4433480, -3269544, -988379, -685047,
-1410360, -162135, -2734821, 1545651, 515933, -21169356, 17037598, 959925, 8710194, -1549946,
--704375, 1607928, 9409200, 938450, -1164473, -12781823, 4558571, -1394254, -9876277, 2595234,
--6450504, -4952634, 18349710, 5227512, 5655398, -3944391, 6577743, 7946227, 7674570, -4432943,
-6702297, 3491809, -7713225, 5050345, -7501161, -2574833, 4807679, 2294586, -766652, -4145180,
--3905199, 12221866, -3537979, -5332202, -3417720, 2518462, 2663417, -5801427, -9827422, -688269,
--10545755, -1216550, -9507447, -3561065, -2248416, 1905892, -4839892, -8206072, 10422275, -4265977,
--11455215, 7372848, 12247636, -5882495, -3911105, 6238440, 4506495, 12178917, 7856569, 1279363,
--106300, -12416750, 3022583, 12007118, 9622337, -8430484, 9174587, 9981504, -6626061, -18458158,
--5964099, -16524350, 2799782, 9584756, 4809827, 1220308, -4970351, -6639483, -738734, 949188,
-2889439, -1438814, 5436355, -2354716, -1904281, 2210298, 5755256, -8375186, -1117765, -984084,
--2573759, 150861, 2317135, -380641, -261456, -1238024, -163209, -1248762, 476205, -4295,
--179852, 913754, 3004867, -2494839, -1496259, 1832340, 1931125, 6437619, -613643, 2764885,
-2495913, -2593087, 2256469, 1146756, -2371896, 754304, 934692, 884763, 2568927, 5657546,
-1178432, -1702955, 3695283, -998580, -2058900, 472446, 4145717, -33678988, 16247324, 4655745,
--1513439, 22843320, -1270237, 11601244, -10102300, -2305324, 1870995, 223875, 13089450, 8356396,
--17599702, 11116986, 907849, 6707665, -15845745, -541166, 9273371, -15546171, 19626926, 5379447,
--136365, -6903623, 1241782, 8551280, -13947906, 1374926, 3653944, 2561948, -8572755, -3119220,
-8251706, 4711043, -807991, 1299765, -5615133, -9642738, 4094715, -16358994, -611496, 23638426,
-23065584, -7278359, 2920578, -929324, 6651294, 16631187, 1461900, 7996156, 2697240, -8616778,
--586263, -1584306, -24911884, -11206643, 15527381, 787053, 4833449, -5961415, -1466731, 5569499,
-7551090, -610959, 19308026, 347355, 15074261, 1938104, 3229816, 2028835, -9760850, -12275553,
-15264851, 3588982, -7864622, 11098732, -8974871, 885837, 9397925, 1579474, -2327872, 4413079,
--3947612, -3784940, 4735739, 6472516, 519691, -8532489, -4075387, -9197672, -3246459, 2353105,
-3044595, 1555852, -3522947, -1620276, -6601902, 4871030, -18254, -2631741, -1157494, 2082522,
-1182190, 6025839, 5406827, 3518652, 3538516, 1235877, 4308926, -2791192, 2019172, 2333778,
-2240362, -2431488, 4354023, 2315524, -569083, -721018, -1046361, -1009317, -1886564, 11305428,
--24597814, 9882720, 15497853, -2145873, 4609574, 6972343, -3761855, -2383707, 9564355, -3605088,
-14513768, -13816910, 7550553, 17939542, -19226958, 775242, -9143985, 11330124, 4784057, 9396315,
--9728638, -7604777, -110059, 24242942, 281320, 12263205, -5440113, 737661, -1666447, -2160369,
--10761041, -422517, -3017215, 4932770, -4802311, -6989523, -5861557, -453119, -2039573, 10945724,
-1888712, -6066642, -5488432, -5586679, -2035815, -2667712, 17888002, 767189, 8987756, 602369,
--4287988, -3927211, 14879914, 11082089, -4274030, -14025753, 7921531, 5427765, -30878130, 1777580,
-17438640, 16980154, 3974992, 13498008, -18624052, 30516816, 2691334, 5824513, 6054830, 14545980,
--1128503, -13079249, -3955128, -15450608, 17573396, -7785702, -5186173, 15297063, -441845, -6052146,
--4645544, -11549167, 10937134, -18835580, -2740726, 1782411, -438624, 2648384, -3879429, -8104067,
--5116917, 2478196, 2093797, -3848828, 1006096, -3673808, -3898757, -2933463, 3485903, 1770063,
--4427575, 4114579, 875636, -5465346, 2493766, -1035624, -1872069, -4183298, -4660040, 844498,
-2324114, 9687836, -4224637, 5715528, 752156, -1997697, -653372, -1206886, -2517925, 1427540,
--224412, -2965675, -917512, -2077690, 839666, 1903744, 1651952, 9299678, -18372260, -14714558,
-12912819, 10846940, 26673358, -9584756, -7218230, -4900558, 4923107, -11501922, -1500554, 4323959,
--929860, 14277545, 9148817, -11664594, 912144, 3245385, 8192113, -13267154, 13664975, -363998,
-5979668, -2462090, -6428493, -13911936, 4731444, -2521146, -5948530, 2638184, -8592619, -8357470,
--1982127, 4186519, 16581795, -25024090, -15196668, -13560822, -15220827, -4415764, 17198660, -10392210,
--615254, 16929688, -2647847, -7839389, -14941654, -4136591, -6519761, -30751428, -23902030, -6848862,
-5223217, -3068754, 5207111, -6944962, -5046050, 14390288, 8632347, -15452219, -8051453, -17277580,
--6957310, 1256815, 6707129, -3218004, 1687385, -14765024, -11842299, -10823854, -448287, 2345589,
-774168, -13982803, 304943, 18455474, 7881265, 21088826, -16877074, 25807384, 2151779, -16289737,
--2829847, 593242, 4409858, -2860985, 6924024, -10021232, 4540318, -8893267, 3979824, 5820755,
--2027225, 13140452, -1255204, 2985002, -3728569, -4953708, -2851858, 234076, 2862596, -5231270,
--1046361, 1557999, -1271847, 4959614, -1669669, -2703145, -8723615, 3650185, 411243, 4349192,
-1772748, -3022046, -8215736, 2464238, -10464151, 2482491, -2820183, -565325, 965831, -2357937,
-681826, 1491427, 7042136, 2674691, -3236258, -13123273, 2500208, -1446330, 30200062, 3290482,
-14537391, -12603582, -8574365, -3100967, -14245333, -9039296, -13761075, -6394670, -8924942, 16392280,
-4101694, 4137664, 16875464, -448287, -983548, 7635378, 15181636, 23771570, 17358648, -3564286,
--6470905, -27361626, 7523172, 8587787, 3319473, -17056926, 19712290, 7881265, 11572253, -3223910,
-1075352, 11228118, 24625732, 24019068, 13817984, 2921652, 25603374, 683437, -7675107, 8339753,
-15514496, 12647605, 23023172, 12202539, 486942, 2800319, -13940390, 6059125, -34798360, -5932424,
--3525631, 7738458, 27293980, 15407121, 3994320, 19887846, -14459007, -13041668, 2770254, -33712272,
--8107288, 1428614, 6429029, 7854959, 8879308, -1990181, 14763413, 1893544, 7609072, 27391154,
--16894254, -8713952, -4711043, 5255966, -3268470, -25770340, -4941360, 17648020, -1345399, 22371410,
--12053826, 660351, 9164923, -2116882, 2516314, -9272298, -4643397, -7188702, -4908611, -7981123,
--6674379, 1791538, 1287417, -16058883, -7577933, -9029095, -2523830, 3010235, 4761508, -7139847,
--408559, 2193655, -11445551, 1725503, -4678293, -7385197, -4015258, 614717, 2639258, -5056787,
--1424319, -7755637, -759136, -2057826, -2682207, -5651103, -8499203, 2138357, 2604361, -4522601,
--3338800, -3314641, -2710661, 1535451, 5328444, 1575716, 1557463, -23238994, -7289097, 4283156,
-17659294, 32396938, -12953621, 619549, 5397164, -5883569, 30032022, 5364414, -14718853, 26317948,
--5366025, -8767102, 18854906, -17015586, -9927280, 1195075, 1700270, 2389076, 12368969, 6635188,
-10048076, -3013457, 5355288, 15105937, 972810, 10313827, 1938104, 440234, 16695075, -21690122,
--7845295, -7327751, 14539001, -11036992, -2826625, -6485401, 14399415, -6046777, 31968516, 23381802,
--21692806, 10695542, -26075820, 3791383, 9492415, 5125507, 5699422, -33259152, -6410776, -32075890,
-4311074, 2689723, 3966402, -5032628, -5771899, 15401216, -27685896, 9578314, -11959873, -52206940,
--19513648, -17061220, 8648454, -7572564, 7998840, 26186952, 27928024, 15829639, 14718316, 13652627,
-4010963, -20738250, 21864068, 73014, -24079734, -19166292, -30275224, -40135932, -20666308, -4031901,
-32182190, 11616813, 2008434, 12344273, -9763534, -195958, 6233072, 5168457, -2534568, 4741644,
-1574106, 3298535, 1399623, -9901510, 8067023, 5352603, 3990025, 1625645, -5137855, 2849174,
--7665443, -2727304, -11936788, 10015864, 7596187, -1621350, 1144609, 8018167, 12745315, -5682242,
--12325482, -3728569, 10137733, -2211908, -7335268, 10799158, -875636, -6232535, 7490960, 3008088,
-542777, -1825361, -219043, -5290326, 3689377, -3366718, -1469953, 7741142, -41836204, -19655918,
--14792404, 7250442, -32010392, 10918344, -19299436, 26495654, -31834834, -40261560, -9039296, -6145025,
-30853972, 14867566, 13516799, -8420820, 3237332, -19720342, -15940234, 3218004, 6149857, -25302726,
--23574002, -16639240, -2474438, 12169253, 8639327, -17881560, -22470196, -13185013, -13431436, -30304216,
--17678086, 12855374, -8733279, -576599, -4520453, 9334038, 15031849, -4440996, -45212584, 18534932,
-37090800, 13601625, -1213328, -45346800, -11116986, 19246286, -5980205, 49890340, -5746666, -40895068,
-6313065, -7204271, 2983929, 741419, -8474507, 10505490, 13106093, -43126304, -11777874, 1971927,
-14785425, -8321499, -22135188, 19027242, 1593970, -14877767, -42953432, -49795852, -25783762, -3537979,
-3307662, 39205536, 55581708, 28431072, 21608518, 9204115, -32749662, 11463805, -455803, -17330730,
--5174899, -53803592, -11542188, -721555, 127775, 1516660, 23035520, 8380555, 6684043, -9960029,
--3336116, 19879794, -14062797, -599148, -1101122, 3552475, -10499048, -17229262, -19109920, 7994545,
--9046275, -3445638, 10796474, 29528, 1547262, -14750528, 4631049, 4279398, 2261837, -12207371,
--6225018, -8167954, -12665322, 1302986, -7445326, 13020730, 5023501, -9511205, 1517734, -3757560,
-9023726, -12947179, -1879048, -925565, 6349573, 5539434, 2813204, 6769942, -328028, 3410741,
-75163000, 69035160, -29177324, 35800700, 31707060, -8952322, -5412733, -16511465, -8961449, -19402514,
--13669807, 57280904, -3167002, 33367064, 351114, 1615445, 386010, -22619982, 5331128, 4681515,
--49766860, 7403987, 11965779, -26147224, -5542119, -8055211, -3645890, 7366943, -1567663, 1531156,
-21801254, 8895951, -10748156, 6770479, 34797824, 604517, 15978352, -830002, 13015898, -19206020,
--23344220, -12969727, -42769284, 11451993, 4660577, -18917720, -51952460, -33818036, -48581984, 35347580,
--25287694, 5558762, 8613020, 8072391, 6602439, 37725384, -36378908, 270583, -20452634, 39936752,
--89593552, 18418430, 6769942, 28681792, 25893820, 202937, -8404177, -13616120, -4108136, -25918518,
-18930068, 52771188, -4170413, 10958072, 33103998, -23144506, 13049721, 16298864, -29430726, -20204600,
--54435488, 45037564, -8904004, -39502960, 26390964, -6564321, 17175574, -1124745, 14860050, 2647311,
--11817603, 18701898, 17651778, 2979634, 10029286, 17017734, 9875740, -11304891, -5087926, -11039140,
--5119601, 14355928, 27113054, -1122060, -5267778, -1049046, 17319456, -27598922, 15633681, -7442105,
-36727876, 7387344, -22255984, -4416837, 16149077, -8536248, -11816529, -8579197, -6948184, -8434779,
-8714489, 6449431, 23337242, -19713364, 915902, -2223719, 12603045, 894427, -2003065, 7729868,
-8986682, 7242389, 15014669, 1968169, 17348446, -26094610, -24743306, 30555472, -62287228, 42921220,
--25697864, -17964774, -11305965, 3894999, -18046916, -14053133, 19509352, -6011344, -42606612, 14678051,
--2625299, 7521562, -9605694, 37848864, -30909806, 1298691, 15705085, -10742250, 11894375, -25228102,
-2067490, -21709986, -10996190, 23579908, 3024731, 9441412, -13405667, 22795002, -6566468, -10656351,
-8753680, -13978508, -11617350, -7474317, -7672422, -23559506, -31524524, -8788040, 17530982, 270583,
--9849434, -31499290, 1244467, -24896852, -1624035, 10022843, -24592446, -6063957, 18174690, 18409304,
-13411572, -30567820, -14425185, 21076478, 6910066, -584116, 17125108, -100325064, -23159000, -11178726,
--45525580, 4497905, 12582644, -2661806, 8472897, 21527450, -12338367, -21310554, 5502390, -19343996,
--5797132, 20905754, 33195802, -12540231, -39917964, -24106040, 2665564, -21307870, 3412889, -16521665,
--15550466, 4203163, -31958852, 420907, -19912006, -6100464, -10870562, 4535486, 8189966, -3127810,
--19753092, 4447976, -1217086, -12465606, 15629386, -587874, -14513768, -4965519, -3717831, -5443334,
--10015864, 5581310, -9130564, 7678328, 10644540, -4036196, 1355599, -6056441, -13706851, -19479288,
-3670587, 2742337, 9266392, -22547504, 4959077, 68183, -14442901, 11462194, -5840619, 8270497,
-18691698, -41000832, 8584566, 6024766, 12226161, -6600291, -3896072, 13875966, 766652, 67275296,
--8640400, -18760418, 2459406, -7614977, 33282776, 6170258, -2930778, 31585726, 32061930, 10441602,
-12344810, 17514340, -39743480, -22058952, 32789390, -4634807, -32640140, -16617228, -14864345, 22276922,
-11922829, -12101607, -47090560, 14453639, 7283728, 6070937, 7627862, -5840082, 4683662, -35426500,
-31435940, 21705690, 11545409, -17847736, -15078556, -259846, 15705085, -3649112, 16338056, 6948720,
--37245420, -16746614, 5812165, -37642168, 2160906, 6933151, -32981590, -46619724, -6544994, 13770202,
--27012660, -56569016, -24710020, -14989436, 36535676, -22457848, 41239204, -8752606, 1923072, 17386028,
-2405182, -63376536, -4211216, 2384781, 29492466, -56438016, -77640664, 5370320, -5052492, -49746996,
-27951110, 12900471, -1833414, -419833, 45722612, -65658240, 53707492, 11090679, 7221988, 21508122,
--23500988, -21588654, -4036733, 9890236, -13336410, -1236414, 27620934, -23608362, -18651432, 24120536,
--13711146, -7120519, 10305774, 6466610, -27231704, 13669270, -9048959, -2734821, 9780714, 9245991,
--28990492, -4984310, -22505628, 12421582, 17768816, 921807, -37306624, 26282516, -6328635, -842887,
-16202764, -4274566, -13470091, -2710124, 21374978, -32182190, 22014392, 946503, -2212982, 7776575,
-4421669, -20224464, 9434433, -335544, 1140851, -26286810, 18130130, -17295296, 19997904, 2712809,
--23610508, 1722819, 3238942, -7082401, 3506841, 31629750, 12401181, 74435544, -31120796, -32464048,
--13430363, -1174137, 70697312, -9660455, 58564564, -40860172, -16019691, 24883966, -44531296, -14565308,
--41896868, 7094212, 42760156, -58508192, -21420076, -4843113, 17880486, -292595, 6609955, 16465831,
--4062502, -37001144, -34286188, 1946157, 24354612, 65446712, -14405320, 17915382, -18688476, 32428076,
-1169305, 4000225, -8944269, -38263328, 1350767, 35741644, -6022081, -1837172, -13169443, -33340758,
-44314936, 17088064, 29595010, 39773008, -1857573, 2575907, 24628954, -62885300, 21913460, -31619550,
-74839272, -6791417, 7455527, 11490111, -21706228, -21744346, 7616051, -31516470, 47535088, -27454504,
--34840236, -35081828, 49705120, 17098802, 28851442, -6109054, 28825136, 29395294, -29586956, -8291971,
--27430346, -14247480, 51806432, 36885716, 4977330, 10307385, -78096464, 53918484, 70570608, 8378408,
--5511517, -13095355, -41826004, 61079804, -3358665, 4392141, -11774116, 2042257, -26327612, 57191784,
--13387413, 28021440, 4637491, -9592809, -3098282, 55106040, -30071750, 27302034, 9242770, -22974854,
-3463891, -7186017, 15370077, 4656282, 22461068, -8945343, 2597918, 4491462, 25770, 22306450,
-37961068, -11301133, -1617055, 4625143, 21005612, 6239514, -28642064, -19106162, 41111428, 8276402,
-20342576, -39675296, -47714404, 44741748, 29852170, 14198625, -3032247, -36896992, -405874, 6597070,
--55509768, 37976636, -39477192, 4795331, -18190798, 14657113, -1532230, 20884816, -3359738, -18065170,
-31116502, -10926397, -4352413, 4786741, -13061532, -11351062, 35924180, -8476118, -4932233, -4206384,
--1842541, 16482474, -12566001, 3882114, -9193914, 8227547, -8026220, -6121402, -19265076, 28180354,
--17401596, 9343701, 4526896, 19522774, -21929566, 4905390, -8963060, 22144852, 2917357, 1755568,
-17536888, 5215701, -29038274, -4303557, -4967667, 8062191, 12733504, 10621991, -26394722, 11297375,
--19934554, 14095546, -11355894, 2984466, -6507949, 13913547, -5432060, 4018479, -29524142, 6962679,
-14374182, -13562433, 13455059, 1812476, 4965519, 8345122, -11884175, 20394116, 8091182, -1176821,
--6394133, 9893994, -6187438, 18494130, -15473157, -4659503, -14723685, 19149112, -18942954, 17389786,
--15782394, 21153788, -17979806, 11075647, -17724256, 15549929, -1169305, 1582159, -5089536, 804233,
--3038689, -2778844, -5405753, 9224516, 3693135, -1313723, 3105798, -2863670, -4926865, 9262634,
-1505386, 3491272, -5937793, 335544, 9372692, -10754061, -2532957, 6189585, 223338, -3238942,
--6816113, 16808354, -5243082, -8535711, 4475893, 1476395, -2584497, 1753957, -877247, 1597191,
--2777233, 2373506, -4874251, 8220568, -6754910, 9485972, 4262755, -23131084, 46692200, 3883187,
-5858873, -18696530, -13776108, -29676614, 19868518, -8341364, -6074158, -12911209, -525597, -11514270,
--1451162, -1542967, 5192079, 5803575, -937377, -1407139, -8455717, 7830263, 7321846, -7023346,
-3271155, -15906948, 6301791, 3054259, -2806761, -2499671, -5325760, 5021354, 1086090, -11340861,
--3064996, -3352222, -9410810, 15353971, 1586990, -9869298, 1476932, -3892314, 13383655, -4691715,
--6298033, 2561411, -8027831, 15613280, 424665, -8695161, 2452426, -3568044, 7629473, -9912785,
--1983201, 3215320, -3613141, 6835978, -3940633, 1950452, 3095598, -8946954, 1222455, 8809515,
--13553306, -929860, 4082903, -12599287, 22855132, -20971788, 10425496, 3743064, -11977590, 23611046,
--16114180, 3755412, 2998961, -10045392, 7777649, -4129611, -7737384, 7502771, -9214315, 5939940,
--4243428, -3158949, 6781217, -5698885, 2169495, -2335925, -84289, 1284732, -3107946, 1410897,
--185220, -3060701, 6413460, -5513128, 4777078, 136902, -4509179, 4355634, -7944079, -806380,
-2078227, -1347546, -1104880, 1078574, -4134443, 5012764, -2573759, -1838246, 528281, 484258,
--3226594, -527207, -1867237, 1706713, 2529199, -3670050, 3161096, -3505230, -679679, 3310346,
--2508798, 10911364, -50020264, -115479856, 30309048, 106904424, 90385440, 121281824, -59779504, -77469400,
--116504208, -119077968, 8200167, 88793080, 98035848, 107392440, 35723928, -23358716, -85183160, -141038144,
--77262704, 35891968, 55603720, 94081792, 71322224, 19494320, -12621835, -29701310, -70636104, -45766636,
--43544524, -7971460, 37249716, 57088168, 30065844, 38117296, 19295678, -21452288, -3325379, -45891724,
--63880124, -10918881, -14878840, 11286637, 60317984, 34758632, 29956324, 8858370, -22555020, -23236310,
--20008642, -33078228, -8640937, 1484448, 14226005, 17333952, 28867012, 8239895, -985695, -14541149,
--26819386, -2278480, 9695352, 9941239, 16939352, -4293357, -13453448, -6451041, -13471702, -10572599,
-2904472, 7627862, 21689048, 18389976, 17576616, 1039382, -9394704, -35173096, -32698660, -13311714,
-2121177, 27216670, 29190746, 12058658, 12390981, -1358283, -23500450, -14370961, -1676648, -5487358,
-1284732, 2503966, 5677410, 4752918, -3021510, -7650948, 4561256, 7118372, 5833640, 6075231,
--534187, -4393215, -2738579, -11911018, -4902169, -6559489, -11219528, 6678674, 16325171, 19062676,
-6314139, 6896644, -3696356, -4418985, -17041894, -25295746, -9762998, 2932926, 7919920, 9874667,
-20774220, 19352586, 9365176, -7623030, -16259136, -18296024, -17172352, -12654047, -869731, 15446313,
-23834384, 18951006, 5470715, -8948027, -10819023, -10735271, -6268505, -4066797, -4714801, 4726612,
-10892574, 8103530, 1710471, -1356673, -878858, -2743410, -3231963, -4454418, -2032593, 2703145,
-2148021, 1435056, 1441498, 1399086, 956704, -1888175, -1979443, -308701, 120796, -30065,
--62814, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-644245, 6500970, -5812165, 2239826, -9788767, 96100, -3546569, 3928821, -3310883, 889595,
+-2247879, -4098473, -1058173, -396748, 2964064, 3712999, -3535295, -6157373, 3216394, 1093606,
+2246268, 1352378, 2540473, -3570192, -2683818, 632434, -687732, 3200825, 2302103, -2732136,
+-595390, 2437931, 4525822, 2784750, 25770, -3565897, 1903744, -618475, -1904818, 2495376,
+1072668, -3275986, -2745558, -2226941, 1816771, -3209951, -1732482, 2681670, 1025960, -105764,
+-3362960, 1224603, -2893197, -7439957, 721555, -2539400, -4807142, 2193118, -1377611, -1379758,
+-1657321, 93416, 3640522, 2192044, 1218160, 1656784, 2744484, -5606006, 2901251, -2236067,
+-2164127, -1247151, 1842541, 346819, 3912178, 5706938, 2216203, 433255, 632971, -94489,
+3638911, -1553704, -149250, 1778653, 111669, -1522566, -1567126, 510564, -59056, -1717450,
+-874026, 528281, -105764, -234613, -697932, -853625, 550830, 359167, 598611, -258772,
+197569, -181462, -1602023, -618475, 704375, 1260573, -730681, -846109, 268972, 14862197,
+-1241246, 2734284, 3280281, -1508607, 1551557, 5928129, -4601521, -803696, 1702955, -2282238,
+-440234, 4358318, -1392643, -967441, -290447, 1697049, -819802, 2105608, -1457605, -1431298,
+-654446, -3358128, -5747203, -1071594, -1836635, -759136, 3401614, -6085432, 7507066, 59056,
+140660, 271657, 1425392, -166967, -2872260, 468151, 2320356, 5672041, 291521, -26844,
+-852551, -1893007, 3769908, 1801202, -1365263, 2090575, -3738232, 654983, 1203665, -2819109,
+-9732396, -3033321, -236223, -556735, -456877, -840740, -1233729, -689342, -1845225, 2404108,
+7183870, 4084514, 320512, 4832, -186294, 2527052, -1462436, -6526203, -221191, -3389803,
+2150168, -3848291, 2192044, -9425843, -54761, -1325534, 3211562, 5167383, -784905, -1205275,
+776315, -1074, 2770254, 1036161, 466004, 3768834, -2759517, -342524, 477815, 1363115,
+8053, 1389959, 77309, 898185, 400506, -157840, 280247, -312459, -40265, 811749,
+1190780, 168041, -326954, -439160, 156229, -179852, 673773, 510027, 327491, -194884,
+122943, 482647, -13077102, -12610024, -4745939, -1867774, -1799591, 10737, 3189013, 761283,
+2590402, -5921686, 2928631, 3689914, 3565897, 4181688, -3235184, 899259, 9839770, -6085969,
+-214748, -4335233, -6287832, -752156, -446677, 5451924, -2644089, 573915, -4696547, 3011309,
+1880659, 2364380, -10528575, 1624035, -1925756, -3692598, -994285, -50466, -7811472, -5057324,
+-4362076, -350577, 6526740, 2264522, 2161979, 3136937, -2920041, 1846836, -2619930, 5581310,
+8585640, -803159, -789737, 2442763, 600759, 2222109, 4824322, -2261837, 4991289, -779537,
+-153545, 2955474, 4042638, -1527935, -5840082, -5370320, 2075006, -732292, -1003412, -2365453,
+2651069, -4471061, 1662152, 3356517, 5665599, -3291556, 5432597, 3551401, 1766842, 2718714,
+655519, -916439, -3659849, 2607582, -1722282, -3413425, -4317516, 1794760, -1423245, 2607582,
+457414, -1658394, -2015413, -1023813, 858457, -1060857, -380105, -1364726, -605590, -77309,
+1327682, 703301, -42950, 776315, 2617246, -246961, 6979, 1534914, -826781, 436476,
+-576599, -441308, 752693, 1107028, 1107028, 715649, -16643, -337155, 816581, 395674,
+1791538, 2153389, -1709397, -169651, 942208, -14339285, 6152541, -6439230, 11455215, -10736881,
+8369818, 4249870, -4482335, -5592585, -3130494, 2157147, 1938641, -3035468, 6739878, -2472291,
+-6514392, -1354525, 6972343, 4772246, -7127498, 1102196, -926102, -7458211, -3114388, -4807679,
+-1154809, -5716602, -1549410, -2401424, -7872675, -2821794, 3939559, 5679558, -1139777, -6741488,
+-1396401, 4734128, -1500554, 141197, 286689, 83215, -6714645, -221191, -836982, -1716376,
+-351114, 1156957, -4818954, 2710124, -5157182, -133144, -71941, 85899, 3761855, 58519,
+-1802813, 1528472, 2597382, 6258841, 2830384, 1408212, -1854889, -3913252, -3705483, -1546188,
+-4043712, -2898029, 2326799, 4091493, -3059627, -5083094, -3499325, 1588601, 852014, -4768488,
+-1663226, 574452, -4024921, -1853278, 520228, 1206886, 1590212, -1860795, -2238215, -3049427,
+83752, -387084, -1194001, 921271, -1028645, -359704, -2340757, -533113, -805843, 2013803,
+973884, -843961, 968515, -139586, 288300, -1007170, 89657, -605054, -73551, -840740,
+-1564979, 1091995, -130460, -1487132, -943819, -158914, -1367410, -1579474, 17548162, 7016366,
+-1110249, 4022237, -2747705, 9860171, 4207994, 17714056, 399969, -17027934, 4449049, 10417443,
+-6091874, 1870995, 7204271, -5428839, 5102958, -4392141, -890669, -5428839, -5145908, -1600412,
+1527935, -516470, 2444910, -2299418, 7652021, -4478577, 2222109, 1445257, 5009543, -8981313,
+-4621922, -3513820, -981400, -3151432, 939524, 5555540, 4022774, 8795556, -1189706, -607738,
+-4894652, -1598265, 5617817, -5349919, 4657892, -5003100, -2022393, 8072391, 11699491, 8353175,
+1559610, -6083821, 4394826, 3226057, -3155727, 6789807, -4351876, 1366873, 1173063, -12306692,
+-537, -11664594, -4599373, 1896765, -2984466, -5552856, -4657355, 1005559, 8149164, 2033130,
+-3168075, -4052839, -3474092, 834834, 1421634, 3869229, -5966784, -5458367, 497142, -1034550,
+488553, -1554241, -779000, -958315, -398895, 1842541, 600222, 855772, -661425, -1249299,
+-1103807, 375810, 3339874, 1084479, 2466385, 755914, -3536369, 2784213, 1387274, 517544,
+683974, 1612760, -221191, 1390496, 419833, -25233, -995359, -839129, -1430761, 472983,
+1684164, -290984, -594853, -858457, -5054640, -585189, -475131, 177167, -654446, 10864120,
+21988622, -9557376, -7099581, -1914482, -2571612, 7671886, -7306276, -13318694, -4612795, 943282,
+-3257196, 3838627, 1817308, 6652905, 2791192, -2650532, 9562745, 8967355, -4123169, 659814,
+-6158983, -1038845, 344671, -3788161, -731755, 6693170, 9598715, 391916, 1583769, 3954054,
+2528662, 1549946, 660888, -3624416, -6888054, 800475, -9910100, 363998, 2281702, -3153580,
+3898757, -2505577, -5477157, -421981, 5340792, 2367064, -2387465, 16197932, -43487, 5228586,
+-9635759, -2144263, 6617471, -3093987, -7133404, 4203163, -8360154, -7496866, 1713155, 9189619,
+-7512972, -4224637, -2216740, 384400, -3399467, -3389266, 12398497, 7250979, -1117228, 692027,
+-5828808, -4178466, -2367064, 3726958, 4905927, 430570, 3934727, 2541010, -790274, 3648575,
+-3346853, 12374875, 7019051, 1364726, 403727, 1141388, -2084133, -799401, -2074469, -2196876,
+-57982, -79994, -1996086, 1068910, -3015604, -910533, 2366527, -846109, 2425583, 1379758,
+2295660, 96637, 1588064, 1803349, 1645509, 310848, 2724620, 893890, 390305, -1962263,
+210453, -726923, -13959, 135291, 991601, -130997, 905701, -1870995, -62814, 8677981,
+-15627775, -2124398, -11744051, -6699075, -10641318, -2727304, -1655710, -1619740, -4106526, 4720169,
+-14983530, 7669201, -5126581, 4552129, 1975148, 6221260, 325881, 2568927, -6054294, -2578054,
+2770254, -6025302, -4383014, 7333657, 2004676, 3311957, 2931315, -769873, 1955284, 10926934,
+-3944928, 1037772, -4955319, 8785356, -5335960, -19565186, 6032819, 3062849, 8209293, 4435628,
+11320997, -7671349, -3054259, 6833830, -2863133, -6560563, -3112241, 3551401, -9517648, 9378598,
+-345745, 6248104, -8036958, -3529926, -2927020, -8705362, -1784022, -6922951, -3164317, 727460,
+10002442, 8055211, -921271, -12288438, -7010997, -2268817, 9716290, 8038032, 5850819, 5413270,
+-3455301, -14222784, -3645354, -424128, 3321620, -4497368, -1404991, 7264937, -1396938, 8588324,
+102005, 5947456, 2273648, 278099, -2200634, -237297, 3236258, 856309, -1513976, 286689,
+-3931506, -683437, -230318, -5264020, -3150896, -3368328, -1642825, 1028108, -2116882, 841277,
+-2835752, -378494, -832150, -1546725, 2299418, 1104344, -488553, -3586835, -1389422, 1417876,
+2342905, 30602, -3481071, -1852742, 788127, 1784022, 494995, 857383, 264141, -20565378,
+-24823300, -14068702, 10043781, 720481, -4713727, -5334350, -7999377, -930397, 2579128, -13886166,
+-1418413, 8620536, -5423470, -3878356, 9633075, 2470680, -6514929, 2364916, -6307697, 14350023,
+-4760435, -3519726, 4574140, -7595113, -4803921, -4489315, 2348273, -5298916, -2048163, 2334852,
+1649804, -17035988, 7486665, 7306276, -4976794, 13047574, 4953171, 1174137, 12497818, 7109245,
+2157147, 1687922, 13521094, -1430761, -2411087, -989990, 8274792, 4608500, -12422119, 4711043,
+3777424, -160524, -6656126, -19972672, 8698919, -1377074, -4985384, -12548821, -7126962, 7604240,
+-1707786, -3699578, -8391292, -16251619, 1562831, -2302639, -8667244, -3677566, -15378667, -2504503,
+-3512747, -2950643, -726386, 5435818, 11682848, 4985920, -4000762, -8455717, 3191698, 540092,
+4835060, 3037616, -1964411, 3537979, 1240172, -431644, -4623533, 376883, -7482907, -483721,
+-1697586, 1192927, -2932926, 3467112, 1999844, -853625, -675384, -739808, 438624, -1712618,
+-498216, 1986959, -863825, -764504, 3767223, -1533840, -1048509, 3055869, -2433099, 1839857,
+-6271189, -4052302, -2346663, -3313567, -398895, -3290482, -4433480, -3269544, -988379, -685047,
+1410360, -162135, -2734821, 1545651, 515933, -21169356, 17037598, 959925, 8710194, -1549946,
+-704375, 1607928, 9409200, 938450, -1164473, -12781823, 4558571, -1394254, -9876277, 2595234,
+-6450504, -4952634, 18349710, 5227512, 5655398, -3944391, 6577743, 7946227, 7674570, -4432943,
+6702297, 3491809, -7713225, 5050345, -7501161, -2574833, 4807679, 2294586, -766652, -4145180,
+-3905199, 12221866, -3537979, -5332202, -3417720, 2518462, 2663417, -5801427, -9827422, -688269,
+-10545755, -1216550, -9507447, -3561065, -2248416, 1905892, -4839892, -8206072, 10422275, -4265977,
+-11455215, 7372848, 12247636, -5882495, -3911105, 6238440, 4506495, 12178917, 7856569, 1279363,
+-106300, -12416750, 3022583, 12007118, 9622337, -8430484, 9174587, 9981504, -6626061, -18458158,
+-5964099, -16524350, 2799782, 9584756, 4809827, 1220308, -4970351, -6639483, -738734, 949188,
+2889439, -1438814, 5436355, -2354716, -1904281, 2210298, 5755256, -8375186, -1117765, -984084,
+-2573759, 150861, 2317135, -380641, -261456, -1238024, -163209, -1248762, 476205, -4295,
+-179852, 913754, 3004867, -2494839, -1496259, 1832340, 1931125, 6437619, -613643, 2764885,
+2495913, -2593087, 2256469, 1146756, -2371896, 754304, 934692, 884763, 2568927, 5657546,
+1178432, -1702955, 3695283, -998580, -2058900, 472446, 4145717, -33678988, 16247324, 4655745,
+-1513439, 22843320, -1270237, 11601244, -10102300, -2305324, 1870995, 223875, 13089450, 8356396,
+-17599702, 11116986, 907849, 6707665, -15845745, -541166, 9273371, -15546171, 19626926, 5379447,
+-136365, -6903623, 1241782, 8551280, -13947906, 1374926, 3653944, 2561948, -8572755, -3119220,
+8251706, 4711043, -807991, 1299765, -5615133, -9642738, 4094715, -16358994, -611496, 23638426,
+23065584, -7278359, 2920578, -929324, 6651294, 16631187, 1461900, 7996156, 2697240, -8616778,
+-586263, -1584306, -24911884, -11206643, 15527381, 787053, 4833449, -5961415, -1466731, 5569499,
+7551090, -610959, 19308026, 347355, 15074261, 1938104, 3229816, 2028835, -9760850, -12275553,
+15264851, 3588982, -7864622, 11098732, -8974871, 885837, 9397925, 1579474, -2327872, 4413079,
+-3947612, -3784940, 4735739, 6472516, 519691, -8532489, -4075387, -9197672, -3246459, 2353105,
+3044595, 1555852, -3522947, -1620276, -6601902, 4871030, -18254, -2631741, -1157494, 2082522,
+1182190, 6025839, 5406827, 3518652, 3538516, 1235877, 4308926, -2791192, 2019172, 2333778,
+2240362, -2431488, 4354023, 2315524, -569083, -721018, -1046361, -1009317, -1886564, 11305428,
+-24597814, 9882720, 15497853, -2145873, 4609574, 6972343, -3761855, -2383707, 9564355, -3605088,
+14513768, -13816910, 7550553, 17939542, -19226958, 775242, -9143985, 11330124, 4784057, 9396315,
+-9728638, -7604777, -110059, 24242942, 281320, 12263205, -5440113, 737661, -1666447, -2160369,
+-10761041, -422517, -3017215, 4932770, -4802311, -6989523, -5861557, -453119, -2039573, 10945724,
+1888712, -6066642, -5488432, -5586679, -2035815, -2667712, 17888002, 767189, 8987756, 602369,
+-4287988, -3927211, 14879914, 11082089, -4274030, -14025753, 7921531, 5427765, -30878130, 1777580,
+17438640, 16980154, 3974992, 13498008, -18624052, 30516816, 2691334, 5824513, 6054830, 14545980,
+-1128503, -13079249, -3955128, -15450608, 17573396, -7785702, -5186173, 15297063, -441845, -6052146,
+-4645544, -11549167, 10937134, -18835580, -2740726, 1782411, -438624, 2648384, -3879429, -8104067,
+-5116917, 2478196, 2093797, -3848828, 1006096, -3673808, -3898757, -2933463, 3485903, 1770063,
+-4427575, 4114579, 875636, -5465346, 2493766, -1035624, -1872069, -4183298, -4660040, 844498,
+2324114, 9687836, -4224637, 5715528, 752156, -1997697, -653372, -1206886, -2517925, 1427540,
+-224412, -2965675, -917512, -2077690, 839666, 1903744, 1651952, 9299678, -18372260, -14714558,
+12912819, 10846940, 26673358, -9584756, -7218230, -4900558, 4923107, -11501922, -1500554, 4323959,
+-929860, 14277545, 9148817, -11664594, 912144, 3245385, 8192113, -13267154, 13664975, -363998,
+5979668, -2462090, -6428493, -13911936, 4731444, -2521146, -5948530, 2638184, -8592619, -8357470,
+-1982127, 4186519, 16581795, -25024090, -15196668, -13560822, -15220827, -4415764, 17198660, -10392210,
+-615254, 16929688, -2647847, -7839389, -14941654, -4136591, -6519761, -30751428, -23902030, -6848862,
+5223217, -3068754, 5207111, -6944962, -5046050, 14390288, 8632347, -15452219, -8051453, -17277580,
+-6957310, 1256815, 6707129, -3218004, 1687385, -14765024, -11842299, -10823854, -448287, 2345589,
+774168, -13982803, 304943, 18455474, 7881265, 21088826, -16877074, 25807384, 2151779, -16289737,
+-2829847, 593242, 4409858, -2860985, 6924024, -10021232, 4540318, -8893267, 3979824, 5820755,
+-2027225, 13140452, -1255204, 2985002, -3728569, -4953708, -2851858, 234076, 2862596, -5231270,
+-1046361, 1557999, -1271847, 4959614, -1669669, -2703145, -8723615, 3650185, 411243, 4349192,
+1772748, -3022046, -8215736, 2464238, -10464151, 2482491, -2820183, -565325, 965831, -2357937,
+681826, 1491427, 7042136, 2674691, -3236258, -13123273, 2500208, -1446330, 30200062, 3290482,
+14537391, -12603582, -8574365, -3100967, -14245333, -9039296, -13761075, -6394670, -8924942, 16392280,
+4101694, 4137664, 16875464, -448287, -983548, 7635378, 15181636, 23771570, 17358648, -3564286,
+-6470905, -27361626, 7523172, 8587787, 3319473, -17056926, 19712290, 7881265, 11572253, -3223910,
+1075352, 11228118, 24625732, 24019068, 13817984, 2921652, 25603374, 683437, -7675107, 8339753,
+15514496, 12647605, 23023172, 12202539, 486942, 2800319, -13940390, 6059125, -34798360, -5932424,
+-3525631, 7738458, 27293980, 15407121, 3994320, 19887846, -14459007, -13041668, 2770254, -33712272,
+-8107288, 1428614, 6429029, 7854959, 8879308, -1990181, 14763413, 1893544, 7609072, 27391154,
+-16894254, -8713952, -4711043, 5255966, -3268470, -25770340, -4941360, 17648020, -1345399, 22371410,
+-12053826, 660351, 9164923, -2116882, 2516314, -9272298, -4643397, -7188702, -4908611, -7981123,
+-6674379, 1791538, 1287417, -16058883, -7577933, -9029095, -2523830, 3010235, 4761508, -7139847,
+-408559, 2193655, -11445551, 1725503, -4678293, -7385197, -4015258, 614717, 2639258, -5056787,
+-1424319, -7755637, -759136, -2057826, -2682207, -5651103, -8499203, 2138357, 2604361, -4522601,
+-3338800, -3314641, -2710661, 1535451, 5328444, 1575716, 1557463, -23238994, -7289097, 4283156,
+17659294, 32396938, -12953621, 619549, 5397164, -5883569, 30032022, 5364414, -14718853, 26317948,
+-5366025, -8767102, 18854906, -17015586, -9927280, 1195075, 1700270, 2389076, 12368969, 6635188,
+10048076, -3013457, 5355288, 15105937, 972810, 10313827, 1938104, 440234, 16695075, -21690122,
+-7845295, -7327751, 14539001, -11036992, -2826625, -6485401, 14399415, -6046777, 31968516, 23381802,
+-21692806, 10695542, -26075820, 3791383, 9492415, 5125507, 5699422, -33259152, -6410776, -32075890,
+4311074, 2689723, 3966402, -5032628, -5771899, 15401216, -27685896, 9578314, -11959873, -52206940,
+-19513648, -17061220, 8648454, -7572564, 7998840, 26186952, 27928024, 15829639, 14718316, 13652627,
+4010963, -20738250, 21864068, 73014, -24079734, -19166292, -30275224, -40135932, -20666308, -4031901,
+32182190, 11616813, 2008434, 12344273, -9763534, -195958, 6233072, 5168457, -2534568, 4741644,
+1574106, 3298535, 1399623, -9901510, 8067023, 5352603, 3990025, 1625645, -5137855, 2849174,
+-7665443, -2727304, -11936788, 10015864, 7596187, -1621350, 1144609, 8018167, 12745315, -5682242,
+-12325482, -3728569, 10137733, -2211908, -7335268, 10799158, -875636, -6232535, 7490960, 3008088,
+542777, -1825361, -219043, -5290326, 3689377, -3366718, -1469953, 7741142, -41836204, -19655918,
+-14792404, 7250442, -32010392, 10918344, -19299436, 26495654, -31834834, -40261560, -9039296, -6145025,
+30853972, 14867566, 13516799, -8420820, 3237332, -19720342, -15940234, 3218004, 6149857, -25302726,
+-23574002, -16639240, -2474438, 12169253, 8639327, -17881560, -22470196, -13185013, -13431436, -30304216,
+-17678086, 12855374, -8733279, -576599, -4520453, 9334038, 15031849, -4440996, -45212584, 18534932,
+37090800, 13601625, -1213328, -45346800, -11116986, 19246286, -5980205, 49890340, -5746666, -40895068,
+6313065, -7204271, 2983929, 741419, -8474507, 10505490, 13106093, -43126304, -11777874, 1971927,
+14785425, -8321499, -22135188, 19027242, 1593970, -14877767, -42953432, -49795852, -25783762, -3537979,
+3307662, 39205536, 55581708, 28431072, 21608518, 9204115, -32749662, 11463805, -455803, -17330730,
+-5174899, -53803592, -11542188, -721555, 127775, 1516660, 23035520, 8380555, 6684043, -9960029,
+-3336116, 19879794, -14062797, -599148, -1101122, 3552475, -10499048, -17229262, -19109920, 7994545,
+-9046275, -3445638, 10796474, 29528, 1547262, -14750528, 4631049, 4279398, 2261837, -12207371,
+-6225018, -8167954, -12665322, 1302986, -7445326, 13020730, 5023501, -9511205, 1517734, -3757560,
+9023726, -12947179, -1879048, -925565, 6349573, 5539434, 2813204, 6769942, -328028, 3410741,
+75163000, 69035160, -29177324, 35800700, 31707060, -8952322, -5412733, -16511465, -8961449, -19402514,
+-13669807, 57280904, -3167002, 33367064, 351114, 1615445, 386010, -22619982, 5331128, 4681515,
+-49766860, 7403987, 11965779, -26147224, -5542119, -8055211, -3645890, 7366943, -1567663, 1531156,
+21801254, 8895951, -10748156, 6770479, 34797824, 604517, 15978352, -830002, 13015898, -19206020,
+-23344220, -12969727, -42769284, 11451993, 4660577, -18917720, -51952460, -33818036, -48581984, 35347580,
+-25287694, 5558762, 8613020, 8072391, 6602439, 37725384, -36378908, 270583, -20452634, 39936752,
+-89593552, 18418430, 6769942, 28681792, 25893820, 202937, -8404177, -13616120, -4108136, -25918518,
+18930068, 52771188, -4170413, 10958072, 33103998, -23144506, 13049721, 16298864, -29430726, -20204600,
+-54435488, 45037564, -8904004, -39502960, 26390964, -6564321, 17175574, -1124745, 14860050, 2647311,
+-11817603, 18701898, 17651778, 2979634, 10029286, 17017734, 9875740, -11304891, -5087926, -11039140,
+-5119601, 14355928, 27113054, -1122060, -5267778, -1049046, 17319456, -27598922, 15633681, -7442105,
+36727876, 7387344, -22255984, -4416837, 16149077, -8536248, -11816529, -8579197, -6948184, -8434779,
+8714489, 6449431, 23337242, -19713364, 915902, -2223719, 12603045, 894427, -2003065, 7729868,
+8986682, 7242389, 15014669, 1968169, 17348446, -26094610, -24743306, 30555472, -62287228, 42921220,
+-25697864, -17964774, -11305965, 3894999, -18046916, -14053133, 19509352, -6011344, -42606612, 14678051,
+-2625299, 7521562, -9605694, 37848864, -30909806, 1298691, 15705085, -10742250, 11894375, -25228102,
+2067490, -21709986, -10996190, 23579908, 3024731, 9441412, -13405667, 22795002, -6566468, -10656351,
+8753680, -13978508, -11617350, -7474317, -7672422, -23559506, -31524524, -8788040, 17530982, 270583,
+-9849434, -31499290, 1244467, -24896852, -1624035, 10022843, -24592446, -6063957, 18174690, 18409304,
+13411572, -30567820, -14425185, 21076478, 6910066, -584116, 17125108, -100325064, -23159000, -11178726,
+-45525580, 4497905, 12582644, -2661806, 8472897, 21527450, -12338367, -21310554, 5502390, -19343996,
+-5797132, 20905754, 33195802, -12540231, -39917964, -24106040, 2665564, -21307870, 3412889, -16521665,
+-15550466, 4203163, -31958852, 420907, -19912006, -6100464, -10870562, 4535486, 8189966, -3127810,
+-19753092, 4447976, -1217086, -12465606, 15629386, -587874, -14513768, -4965519, -3717831, -5443334,
+-10015864, 5581310, -9130564, 7678328, 10644540, -4036196, 1355599, -6056441, -13706851, -19479288,
+3670587, 2742337, 9266392, -22547504, 4959077, 68183, -14442901, 11462194, -5840619, 8270497,
+18691698, -41000832, 8584566, 6024766, 12226161, -6600291, -3896072, 13875966, 766652, 67275296,
+-8640400, -18760418, 2459406, -7614977, 33282776, 6170258, -2930778, 31585726, 32061930, 10441602,
+12344810, 17514340, -39743480, -22058952, 32789390, -4634807, -32640140, -16617228, -14864345, 22276922,
+11922829, -12101607, -47090560, 14453639, 7283728, 6070937, 7627862, -5840082, 4683662, -35426500,
+31435940, 21705690, 11545409, -17847736, -15078556, -259846, 15705085, -3649112, 16338056, 6948720,
+-37245420, -16746614, 5812165, -37642168, 2160906, 6933151, -32981590, -46619724, -6544994, 13770202,
+-27012660, -56569016, -24710020, -14989436, 36535676, -22457848, 41239204, -8752606, 1923072, 17386028,
+2405182, -63376536, -4211216, 2384781, 29492466, -56438016, -77640664, 5370320, -5052492, -49746996,
+27951110, 12900471, -1833414, -419833, 45722612, -65658240, 53707492, 11090679, 7221988, 21508122,
+-23500988, -21588654, -4036733, 9890236, -13336410, -1236414, 27620934, -23608362, -18651432, 24120536,
+-13711146, -7120519, 10305774, 6466610, -27231704, 13669270, -9048959, -2734821, 9780714, 9245991,
+-28990492, -4984310, -22505628, 12421582, 17768816, 921807, -37306624, 26282516, -6328635, -842887,
+16202764, -4274566, -13470091, -2710124, 21374978, -32182190, 22014392, 946503, -2212982, 7776575,
+4421669, -20224464, 9434433, -335544, 1140851, -26286810, 18130130, -17295296, 19997904, 2712809,
+-23610508, 1722819, 3238942, -7082401, 3506841, 31629750, 12401181, 74435544, -31120796, -32464048,
+-13430363, -1174137, 70697312, -9660455, 58564564, -40860172, -16019691, 24883966, -44531296, -14565308,
+-41896868, 7094212, 42760156, -58508192, -21420076, -4843113, 17880486, -292595, 6609955, 16465831,
+-4062502, -37001144, -34286188, 1946157, 24354612, 65446712, -14405320, 17915382, -18688476, 32428076,
+1169305, 4000225, -8944269, -38263328, 1350767, 35741644, -6022081, -1837172, -13169443, -33340758,
+44314936, 17088064, 29595010, 39773008, -1857573, 2575907, 24628954, -62885300, 21913460, -31619550,
+74839272, -6791417, 7455527, 11490111, -21706228, -21744346, 7616051, -31516470, 47535088, -27454504,
+-34840236, -35081828, 49705120, 17098802, 28851442, -6109054, 28825136, 29395294, -29586956, -8291971,
+-27430346, -14247480, 51806432, 36885716, 4977330, 10307385, -78096464, 53918484, 70570608, 8378408,
+-5511517, -13095355, -41826004, 61079804, -3358665, 4392141, -11774116, 2042257, -26327612, 57191784,
+-13387413, 28021440, 4637491, -9592809, -3098282, 55106040, -30071750, 27302034, 9242770, -22974854,
+3463891, -7186017, 15370077, 4656282, 22461068, -8945343, 2597918, 4491462, 25770, 22306450,
+37961068, -11301133, -1617055, 4625143, 21005612, 6239514, -28642064, -19106162, 41111428, 8276402,
+20342576, -39675296, -47714404, 44741748, 29852170, 14198625, -3032247, -36896992, -405874, 6597070,
+-55509768, 37976636, -39477192, 4795331, -18190798, 14657113, -1532230, 20884816, -3359738, -18065170,
+31116502, -10926397, -4352413, 4786741, -13061532, -11351062, 35924180, -8476118, -4932233, -4206384,
+-1842541, 16482474, -12566001, 3882114, -9193914, 8227547, -8026220, -6121402, -19265076, 28180354,
+-17401596, 9343701, 4526896, 19522774, -21929566, 4905390, -8963060, 22144852, 2917357, 1755568,
+17536888, 5215701, -29038274, -4303557, -4967667, 8062191, 12733504, 10621991, -26394722, 11297375,
+-19934554, 14095546, -11355894, 2984466, -6507949, 13913547, -5432060, 4018479, -29524142, 6962679,
+14374182, -13562433, 13455059, 1812476, 4965519, 8345122, -11884175, 20394116, 8091182, -1176821,
+-6394133, 9893994, -6187438, 18494130, -15473157, -4659503, -14723685, 19149112, -18942954, 17389786,
+-15782394, 21153788, -17979806, 11075647, -17724256, 15549929, -1169305, 1582159, -5089536, 804233,
+-3038689, -2778844, -5405753, 9224516, 3693135, -1313723, 3105798, -2863670, -4926865, 9262634,
+1505386, 3491272, -5937793, 335544, 9372692, -10754061, -2532957, 6189585, 223338, -3238942,
+-6816113, 16808354, -5243082, -8535711, 4475893, 1476395, -2584497, 1753957, -877247, 1597191,
+-2777233, 2373506, -4874251, 8220568, -6754910, 9485972, 4262755, -23131084, 46692200, 3883187,
+5858873, -18696530, -13776108, -29676614, 19868518, -8341364, -6074158, -12911209, -525597, -11514270,
+-1451162, -1542967, 5192079, 5803575, -937377, -1407139, -8455717, 7830263, 7321846, -7023346,
+3271155, -15906948, 6301791, 3054259, -2806761, -2499671, -5325760, 5021354, 1086090, -11340861,
+-3064996, -3352222, -9410810, 15353971, 1586990, -9869298, 1476932, -3892314, 13383655, -4691715,
+-6298033, 2561411, -8027831, 15613280, 424665, -8695161, 2452426, -3568044, 7629473, -9912785,
+-1983201, 3215320, -3613141, 6835978, -3940633, 1950452, 3095598, -8946954, 1222455, 8809515,
+-13553306, -929860, 4082903, -12599287, 22855132, -20971788, 10425496, 3743064, -11977590, 23611046,
+-16114180, 3755412, 2998961, -10045392, 7777649, -4129611, -7737384, 7502771, -9214315, 5939940,
+-4243428, -3158949, 6781217, -5698885, 2169495, -2335925, -84289, 1284732, -3107946, 1410897,
+-185220, -3060701, 6413460, -5513128, 4777078, 136902, -4509179, 4355634, -7944079, -806380,
+2078227, -1347546, -1104880, 1078574, -4134443, 5012764, -2573759, -1838246, 528281, 484258,
+-3226594, -527207, -1867237, 1706713, 2529199, -3670050, 3161096, -3505230, -679679, 3310346,
+-2508798, 10911364, -50020264, -115479856, 30309048, 106904424, 90385440, 121281824, -59779504, -77469400,
+-116504208, -119077968, 8200167, 88793080, 98035848, 107392440, 35723928, -23358716, -85183160, -141038144,
+-77262704, 35891968, 55603720, 94081792, 71322224, 19494320, -12621835, -29701310, -70636104, -45766636,
+-43544524, -7971460, 37249716, 57088168, 30065844, 38117296, 19295678, -21452288, -3325379, -45891724,
+-63880124, -10918881, -14878840, 11286637, 60317984, 34758632, 29956324, 8858370, -22555020, -23236310,
+-20008642, -33078228, -8640937, 1484448, 14226005, 17333952, 28867012, 8239895, -985695, -14541149,
+-26819386, -2278480, 9695352, 9941239, 16939352, -4293357, -13453448, -6451041, -13471702, -10572599,
+2904472, 7627862, 21689048, 18389976, 17576616, 1039382, -9394704, -35173096, -32698660, -13311714,
+2121177, 27216670, 29190746, 12058658, 12390981, -1358283, -23500450, -14370961, -1676648, -5487358,
+1284732, 2503966, 5677410, 4752918, -3021510, -7650948, 4561256, 7118372, 5833640, 6075231,
+-534187, -4393215, -2738579, -11911018, -4902169, -6559489, -11219528, 6678674, 16325171, 19062676,
+6314139, 6896644, -3696356, -4418985, -17041894, -25295746, -9762998, 2932926, 7919920, 9874667,
+20774220, 19352586, 9365176, -7623030, -16259136, -18296024, -17172352, -12654047, -869731, 15446313,
+23834384, 18951006, 5470715, -8948027, -10819023, -10735271, -6268505, -4066797, -4714801, 4726612,
+10892574, 8103530, 1710471, -1356673, -878858, -2743410, -3231963, -4454418, -2032593, 2703145,
+2148021, 1435056, 1441498, 1399086, 956704, -1888175, -1979443, -308701, 120796, -30065,
+-62814, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-5540508,
--4885526, 6077916, -1243393, 4852776, 1415729, 7217693, -1682554, -3734474, -2572686, 4409321,
-122407, -1605781, -427886, 4985920, -1328219, 904091, 1749125, -3351685, -2550674, -1093606,
-919123, -3478924, 883153, 703838, -4029753, -1313186, -2411624, 336618, -1762547, 639950,
-6569153, 3364033, -1924145, 307090, -3122978, 2389076, -842350, 3876745, -8061117, -891743,
-1243393, -2876018, 512712, 3897683, 2977486, -3636227, -2687039, -2925410, -545998, -2320356,
--1177895, -3550327, 1347009, -324807, -4099546, -2134599, -1658394, -221191, 839129, -909459,
--430570, 1745367, 691490, -1948305, 1006633, 4345433, -2245194, -595390, -4696547, -1805497,
--371515, 1923609, -1990181, 545998, 783295, 633508, 1505386, -3642132, -129923, -2061047,
-1709397, -1326071, -3504157, -1013075, -119722, -79457, -1554241, -1643899, 1690607, -785979,
--324270, 611496, 982474, 28991, -240518, 175557, 579284, 21475, -399969, 758599,
-127238, -694711, -632971, 707596, -271120, 245887, -477278, 637803, -618475, -409096,
--114354, -148176, 216359, 7539815, -2809982, 2458332, 6305012, -5101348, -5756330, -838056,
--1433445, -59593, 3213709, 1797981, -8005819, 1263257, -4591857, -6311992, -403727, 2331630,
-2512019, -2050310, -264677, -662499, 3445101, -699543, 2833068, -1308891, 331786, 635655,
-863825, -3990025, 1686848, 3113315, -1451162, 3963718, -2185602, -414464, -4932770, 3524021,
-885837, -1286343, -3825205, -3774203, -1720671, -1277753, 1916092, -399969, 1654636, 1654636,
--3393561, 2133525, -4559108, 1650341, 2655901, 5052492, 4847945, -4158602, 2071785, -247497,
--1103807, 2966749, -2248416, -2663954, -2019172, 2422899, 1197222, 3152506, -3113851, 4736812,
--1529545, -217970, 1421097, 802622, 2767033, -2072859, 3942243, 4998268, 8708046, 4065187,
-2769717, -5120675, -941135, -3333968, -2428804, 3186866, -416075, 3932580, 1597191, -287226,
--782221, -654983, 2257005, -1686312, 1799591, 2154463, -1682017, 1044214, 777926, 251256,
-1285806, -770410, -239444, -1660005, -9224516, -9926743, 1133335, -812823, 2362769, 2205466,
-6558952, 2968359, 3134253, 1589675, -3205119, 1240172, 8286066, -5531918, -617938, 260382,
-6652905, 4005057, 930397, 2954401, -521839, 2283849, 3069291, 6820945, 3781182, 3833258,
-2061584, 1647657, 3326989, 1212255, -4744865, 2924873, 3928821, -1386738, 2858838, 3775276,
--1306744, 1195612, 4710506, 1749662, -1125818, 1701881, 4807679, -233002, -44023, -933082,
-1326071, 4510790, -1319629, -2521683, 1308891, -1543504, 2386391, 2837363, -3338263, 734439,
--2152852, 189515, 1381369, 3799972, 3125126, -7946763, -6442, 3915400, -2015950, -3302830,
-458488, 625992, 3933116, -311385, -8483634, -3697430, 2763275, -2345589, 4014721, -1096290,
-34360, 1032940, 5032091, 3164854, 2141578, -2566780, 4135517, -477278, 2538326, 1257889,
-512175, 880468, 872415, -47245, -646393, 569083, -343597, -2043331, -860604, -830539,
--248571, -457951, 5906, -605590, -1477469, 758062, 326954, -740882, 181999, 1418950,
-1038308, 501974, -186294, -219043, -136902, -58519, 1340030, -16789028, 2364380, 1744294,
-7845295, -293668, 6127845, 3149285, 1568200, -9834938, 23085, -140660, -7628936, 1233729,
-5719286, 1095217, -100932, -710817, -3038153, -3484292, 1568200, 2262911, -261456, 1512902,
-1764695, 6870337, 795643, 3047816, 3212099, -3590056, 787053, -839666, -983548, -451508,
-2536715, -383326, -1709934, -2742874, -1636383, 887448, -4874788, -3463891, 2068027, -3879966,
-1280437, -6378027, -7633768, -1945083, 9463960, -2494839, -547608, 5583995, 1880122, 415538,
-5979132, -842350, 677531, -754304, 1760400, 3838627, -1490891, -5966247, 3823595, -3477850,
--6613713, -2638184, -1842541, -6442, 2446521, 7173669, 59593, -71941, -2796561, -266288,
-4243428, -2001992, -2177012, 5115843, -4311074, -332860, 2352568, -5232881, -1013612, -1814624,
--1758789, 583579, -2791192, -3948149, 254477, 2448668, -1126892, -1704565, -2225330, -2261300,
--304943, 1631551, 746251, -223338, -650688, -1759863, 94489, -589484, -2137283, -3160022,
--2685428, -37581, -335544, 1276679, -2086817, -100932, -295279, 1016297, -153545, 436476,
-14968498, 497679, -900869, -5666673, -3257196, 7902740, -3189013, 6171868, 5311264, -6014565,
--974421, 4631049, -3364570, -1618129, -1569274, -2174327, 999117, 1669132, 290447, 2897492,
--1306207, 464930, 1096290, -1197759, -2824478, -2939905, -3328600, 279173, 3901978, 1709934,
--3286187, 322659, 1545651, 7446937, -2190970, 6668474, -6046777, 2760590, 4807142, -3145527,
--1919314, -6159520, 2929705, -40802, -4324495, 4319664, -5364414, 6053757, -316217, 8559333,
-1976222, 955093, 2079301, 3579855, 1910724, -2732673, 4225711, -756451, -4480188, -7004555,
--1900523, 3012920, -3510599, -2257542, 2759517, -3903052, 7728794, -7388955, -21475, 4993973,
--4222490, -1649268, -7769596, -548682, -3035468, -1672890, -2323041, 6770479, 2663417, 722091,
-290984, 5846524, 588947, -461709, 4670240, 3870303, 3505767, 7255811, -1525787, 743029,
--2019172, 2078764, 2393908, 525597, 711354, -1177895, -33823, -1683627, -846109, 209380,
-668404, 1190243, -552977, -208843, 2334315, 1121523, -851477, 4518306, -229244, -1068373,
--1821603, -1157494, 1655173, -1491427, 169114, -140660, -1554241, 738734, 494458, -379568,
-1148904, 1228898, -1176284, 1273995, 7224672, 12786118, -3730716, -5558225, 1470489, -2265059,
-3530463, 11642046, 77846, -2669859, 3698504, 2011655, 3451006, 2098629, -6325950, 248034,
--5645198, 3162170, 2739652, 1677722, 10643466, -495532, 7936563, -194884, -188979, 2428267,
--60130, 8361228, 1110786, 5270999, -1934883, 7135552, -3204046, 3812857, 14110578, -2290291,
--3554622, 9960566, 2098629, 6495601, -152471, -6165426, 1933272, -3549254, 4268124, -7431367,
--990527, -3853123, 4207994, -613107, 872415, 7701950, -3728032, -7704098, 2168959, -646929,
--358630, 6267968, 1213865, 909996, -2812130, -5060009, -5379984, -1780264, -4440996, -3338263,
-4610111, -2297271, -432718, -1661616, 547071, 46171, 4115653, 2594160, -4702453, -6772090,
--1583769, 241055, 1878511, -1829119, -1662689, 5609228, 3190087, 2775623, 816581, -4523675,
--2097018, 2487323, 112743, -1475858, 1995549, -599685, 1219234, -1451162, 125628, -819265,
--2575370, -3033858, -806917, -2680597, 723702, -372052, 273267, 1888712, -488016, -1421634,
-2289755, 525060, 1462973, 887448, 149787, -814970, 1134408, -248034, -254477, -47782,
--243203, 135828, -464393, 674847, 1453310, -1734630, 486405, -2051384, 328565, -971200,
-17539572, -9206262, 6154688, 240518, 3033858, -4235375, -3319473, -1928977, 3813394, 4912906,
-1043677, -2691334, -5099737, 2666638, 4848481, -947577, 1521492, -2593624, 5285494, 1960116,
--9936407, -3261491, 3195993, -577673, -4225174, -197569, 4517232, -3315178, 1531156, -6457484,
-3766686, 8172786, -3385508, 8644695, 289373, -1571421, 5752572, -245887, 439697, 5209796,
--11250667, 1691680, 3404299, 4787278, 3228205, 3740380, -5052492, -3910031, -182536, 1795833,
--5471789, 1808718, 5305359, 4771709, 1759863, 14564234, -4594005, -1823751, -6599218, -2822867,
--4328790, -6059125, 7496866, 3132642, 7321846, -1144072, -11735461, 6830072, -4147865, 3754338,
-3355443, 1640141, 2015950, -9260486, 10968273, 2398202, -5095442, -8886287, -5578626, -5566278,
-770410, 4540854, -4147328, 347892, 2782602, 2385854, -4295, -1927367, 447213, -192737,
-1723356, 1848447, 1975148, 1384053, 1302449, 686121, -3241090, -2897492, 131533, -1063541,
-1047972, 1320703, -1511829, 2106682, -520228, 770410, 1730335, 753767, 1340567, 404264,
--3447248, -235686, -55835, 1215476, 882616, 419833, -788127, -923418, 1848447, -541166,
-4517232, 784368, 1947231, -21022254, -17696876, -16316044, 3640522, 3351148, 1365800, 732292,
--1165010, -1270774, 436476, -2783139, -5920613, -4115653, -10364293, -4578435, -5031018, 6193880,
--7966628, -3526705, -4510253, 1336809, 90194, -2067490, 2323041, -692027, -8271570, -168041,
-7588671, 980326, -7378754, -6522445, 2849711, -2638184, 6368900, 4478577, -6971806, 6881075,
-10861972, -9107478, -9328669, -4989142, 3426310, 8635032, -6152541, -6361921, 3266860, -3673808,
-671626, -818728, -792958, -9907416, 1891933, 5997385, -3080029, 3433826, -4926865, -5858336,
--5815923, -2878702, -10018548, 17157320, -3638374, -1158567, 2995740, 1866163, 3654480, 2336462,
-5352603, 2443837, 4647155, 10619307, -13706851, 9590125, -3270081, -2606508, -471373, -15298137,
--700617, 4680978, 424128, 602906, 4274030, 1563905, -379568, 2543158, -5172215, 5987722,
--2165201, -3486440, 3250217, -2120640, -1913408, 612570, 2652679, -2047626, -3247532, 1104344,
-2574833, 100932, -1103807, -2830920, -1556926, 390305, -4002910, -2674691, -1397475, 1908576,
--906238, 143345, 2109366, 35970, -3987877, -908386, -3396246, -3019899, -2849174, -1758789,
--3147674, 2664490, -941672, 175020, 5714454, -1140314, -1743757, -1546725, 3090229, 775242,
--1065152, -20672752, 15845208, 4198331, 3453691, -3827353, 15509127, -2441152, 7306813, -22012,
-6573985, -9230958, 3652870, 3621731, 1411434, -4541391, 13804562, -3743064, 4206921, 3176665,
-14326937, -9667435, -630823, 3986267, -2493766, -7093676, 4278861, -6672232, 1723356, 1828046,
--7838852, 3033858, 638876, 395137, 15756624, 9854802, -1323387, -6447820, -5043902, 3518652,
--842887, -9450002, 2677912, -830002, 2778844, 7118372, 10478110, -7197292, 7123204, 3570729,
--4730907, 3408057, 2736431, -7443715, -4034585, -4666482, 7498476, -8112657, -6898791, -18595598,
--13634911, 3778498, -2568391, -2674154, -7173133, -14428406, 5525476, 1112397, -436476, 7069516,
-6009733, 8502425, 5037460, 2057826, -255014, 1360968, 9597641, -7096897, 13146895, -4836670,
--3740917, -12018392, 1906429, -2206003, -6138045, -1084479, 1453846, -3022583, 3491809, -1451162,
-142271, -1477469, -488016, -1268626, -301185, 2173790, 3435974, 278636, 2835215, -3204583,
--2289218, -1623498, 1175210, 2475512, -3278671, -1228361, -1533840, 481573, -1834488, 1473711,
--340376, 1283122, 2164127, 36507, -3495030, 4930623, 4723927, 1974611, 21475, -2126546,
--145492, -1107028, -526134, 5576478, -24987582, 23119272, 16607565, -6772627, -5717675, 6243272,
-56908, 569083, 11033771, 7809861, 321586, -1624035, 4444218, -2563022, -1595580, 3115462,
--4944044, 6213207, 4258460, -5159867, 6698002, -716723, 1807644, -483184, -11011222, -609885,
-8018704, 8313983, 3263638, 3564823, 4458176, -5124970, -6487011, 2808909, 4997195, -202400,
--2501819, -5652177, 2355790, -1653026, 7083475, 8341900, -926102, 9615358, -4992900, 10715407,
-5807333, 12913356, 937914, 1893007, -3709241, -5264556, -992674, 9913858, 16181826, 989990,
-12336220, -5305359, -11818676, 1592896, 4474819, -10327786, 10785200, -3550864, 3819300, -22764400,
--9785546, -134218, -5462125, 4424890, 7544647, 15835544, 3309272, 134755, -7735773, -13731010,
-3563212, 610422, -11522860, 4749160, 2513630, -8308078, -2349884, 2011655, 9135395, 228707,
-2774012, 2813204, 4770098, 3925600, -7699266, 2771865, -118648, -1510218, 187368, -354872,
--1218697, 3308199, 3124589, -3191161, -1305670, -17717, 2237678, -1205275, 3183645, 500364,
-2325725, 2084670, -2492155, 1924682, 2332167, 5980742, 564251, 3430605, 3747896, 951335,
-4396436, 1619740, 2280091, 1038308, 577136, 1618129, 5162014, -2160369, -4706748, 1190780,
-6153078, -9710384, 16675211, -7154879, 2004676, 12465069, 12899934, -952409, -7412040, -3974992,
--3930432, 956704, -9581535, -7600482, 8025684, 2017024, 5159867, 6288906, 7432441, -3322694,
-4821638, -1821603, 5773510, 24049670, 5664525, -11592117, 11259257, 12931073, 563714, -2131915,
-683437, -6395207, -8817031, -4613869, 13186086, 8857296, 7301982, 11216307, 2273648, -1930588,
--5155572, -14242648, 6601365, 7514582, 4171487, -2255932, -1763621, -4912906, 1981591, 11596949,
-7990787, -13285944, 8777303, -11201275, 11810623, 2522220, 4421669, 5281199, -1976222, -6330782,
--1926830, 4755603, 20434380, -3252901, 10206990, -4538170, -9241159, 10851235, 9766756, 2479807,
-2233920, 9840844, 3441343, 580894, -1122597, -6255083, -1930051, -9176734, 2947421, -7124277,
--3568044, 14483703, -767189, 395137, 286152, 6681896, -2183991, 1995012, 4420058, 6729140,
-7271380, 6066642, 2374580, 3188476, 3323768, 6096169, -944356, -4862977, 6885907, 2739652,
-3795677, 4185983, 174483, -482647, 428960, -3034395, 1890323, 6535867, 731755, 842350,
--1377074, -2422899, 5454072, 5873905, 1137093, 10409390, -1293859, 4494684, 7961259, 514322,
-2208687, -1147293, -3051574, 826781, 1728188, 2889439, 5733245, 2508798, 4294968, 1604707,
-1028645, 5980205, 8505109, -4292283, 8644159, 11042898, -12664785, 8529805, 4935991, -3061238,
-789737, 5868536, -5299990, -11187853, 16806744, 3633006, 3218541, 3141232, 9976135, 2907693,
--10039486, 10726144, -14397267, -16819628, 1495722, 2024003, -9287867, -3044058, -27509266, -19477676,
--14668387, -4955856, -15090904, -7430831, 5724118, -13566191, 9520869, 8757438, -11049877, 14268418,
-7611756, -2790655, -1435593, -7383049, 320512, -13184476, 28934658, 8461622, 4509179, -14441291,
-3518115, -4458176, 19187766, -3858491, -499827, -17511118, 17137456, 1147830, 6711960, 5563057,
-9994926, 5666136, -3880503, 5731097, -8534100, 8664023, -3132105, 5107253, -13661217, 30942018,
-4720169, -14343043, 7785165, 9038759, 7063074, 10532870, 8986682, -13929116, 11109470, -272730,
-8958765, -7045894, 2662880, -17923972, 7541426, 7819525, 2268817, -4298189, -13561359, -872415,
-9283035, -12030740, -1643362, -1414655, -57982, 3690451, 2793339, -2704219, 5216238, -294205,
--2557116, 4133369, 3170760, -3757023, -3039226, -7852274, -492848, -7304129, 4394289, 1239635,
-733903, 5767604, 8871255, 5638219, 4173635, 2834679, -3156264, -1219234, 91268, -5695664,
--4719632, -1293859, -1911797, 3106872, 7204271, 2294050, 4556961, -1016297, -89121, -22364432,
-6277095, -3061238, -2173254, 13280576, -2439005, -2260764, 1292785, 11890617, -3091303, 6936372,
--5800354, -6841346, -8742406, -11087458, 19270444, 10047539, 6996502, -6048925, -17637284, -21648782,
-10431939, 7185481, -7675107, 5163088, -5212480, 519154, 19181860, 8377871, -5424007, 10344429,
--3478924, 5369783, -6373732, 6493454, -14145475, -20809116, -8072928, -9280887, -1562831, 24359444,
--19810536, 11468100, 6605123, 4981089, -4363150, 9590662, 4300336, -19033148, -24193014, -8614094,
--11022497, 27420682, 19898584, -6637335, -12204150, -1016297, -12523588, -2648384, 19983410, 18487150,
-10513006, -16302085, 3549791, -12734041, 20037096, 9504763, -2085744, 71404, 6767795, -11819213,
-2690260, 17653390, 9622874, -15968152, 17384418, -8854612, 10404558, 27545236, 10553808, -6485938,
--8118025, 23574002, 2640331, -1436667, -10667088, 4153234, -5005248, 1516660, -3106872, -556735,
--652298, -11742441, 1529545, -1462973, -3298535, 5163088, -860604, -4154844, 799938, -2470143,
-705985, -3066070, -4519380, 4067871, -5014911, -3245385, 2459406, 6127845, -247497, 4326643,
-3629247, -817654, 42413, -5906654, 871342, 1996086, -4938139, 6703370, 3374771, -4095251,
--2679523, -2860448, -1205275, -6596533, 3968550, 6245420, 357556, -4913443, -2778844, 3241627,
--1351304, 3115462, 4481799, 313533, 1700807, -17768280, -6956774, 29768956, 13785771, 17157320,
-4190814, -24723442, 7648263, -20057498, 13202193, 37205156, 13232257, 23345832, -10500121, 6746320,
-10850161, -1112397, 2806224, -9535364, 2441689, 14636175, 782221, -3891777, -13196824, 7279433,
-5466957, -13448616, 7032472, -5101348, 10312216, 14713484, 15645492, 18844170, 1906966, -14596446,
-3968013, 8909373, -146566, 25653840, 2275259, -29464550, -18475876, 8398272, -7480223, -34775276,
-1283658, 14839112, 5493800, 1567126, -3142842, 18335752, -14374182, -17838072, -3424700, -6379100,
--17351668, -952409, 1296006, -10108206, -14936286, -9150965, 763430, 2178085, -21585968, 6466610,
--8983461, 5267241, 24977382, -3395172, -8644159, 17398376, -2993592, 14487998, -13678934, 9360344,
-644245, -15855409, -17683990, 31988916, 3147137, 4331475, 1551020, 46171, 32096828, 26208428,
-8316668, -2398739, 12610561, -6145025, 4331475, 7508677, -1344325, 9863929, 4278861, 2885144,
--14561550, 8706972, 4709432, -803159, 1374926, -4927938, 4255776, 11331734, -1822140, -3654480,
--6227166, -6833830, 6859063, 8047695, 490700, 56371, -6130529, -6619619, 1246614, -9515500,
-1416266, -3148211, 10063645, 3590593, 496069, -6277095, -10966125, -2479270, -5286031, -7397008,
-4355634, 4482335, 8647917, 25170656, 3271691, -34470872, -15591805, 21391084, -30829812, 17522930,
--29176250, 2374043, -4658429, -42198052, -5558762, 18997714, 38841536, 12372727, -5640366, 9431748,
--14894410, -4993437, -33880312, -1883343, -23010824, -3313031, -5036386, -15904264, -16874390, -5603859,
-9701794, -15285252, 10537165, 19398756, -19989314, 7249368, 6458557, 3433826, -21272974, -3248069,
--217970, -22286586, 5814849, 28389196, -2152852, -41213968, 14599668, -24893094, -63546724, 17922362,
--26278758, -32682554, 1744294, -14965814, 4539781, 11235098, -6259378, 16734803, -13984414, 14618458,
--11537893, -28440736, 170725, 20351166, 19514184, -36956584, 5441187, -4420058, -27507654, -7358353,
--6812355, 47873852, 23905252, 28083180, 12799003, 12213813, 29631516, 42561516, -9711995, -20164872,
--22000434, 3863860, -27334246, -8411157, 14157286, 22992570, 3235184, 2088428, 19967840, -4621922,
--11324755, -15411416, 12031814, 13643500, 13406740, 3129958, 15379204, 6376953, -9426916, -2094333,
--9130564, 14024679, 2268280, -1639604, -15726023, 4772246, 12607876, 1384053, 241055, 12316356,
--9827959, -6575595, 6819335, 695248, -4958540, -9468255, -3020973, 14492830, -697932, -32087700,
--2977486, -793495, -7348689, -6256694, -8472360, -5194763, 6998649, 6258304, 3729105, 2221572,
--5268851, -6656663, 55716464, 60232084, -35359392, -14008573, 26891328, -12200391, 10846940, -16780438,
-5019206, -17241072, -32293860, 44000868, 6415071, 13817984, 11316165, 4120484, 5779416, 1322313,
-8916352, 10933376, -31249108, -25761750, -22570590, -21308406, -15963320, -10060424, -8339216, -16753057,
--9491878, -14198088, 16145319, 12277164, 6207839, -7823820, 3280281, -33063196, -16612934, 8994735,
--30048664, -2777233, 14625437, 25942140, 3802120, 5028333, -11098195, -19403052, -22886806, 18387292,
--2488397, 18204218, -64170568, 4009352, -7460895, 7389491, 39237748, 4820564, 6549289, 4429185,
--11492796, -13215077, 361314, -2607045, -36026184, 7733089, -13212393, 32319628, 2156611, -35403416,
--48195440, -29943976, -6083821, -33843804, -33143188, -20561620, 23378044, -6052146, -22824530, -30775588,
-25724170, -3305514, 15222975, -17313014, 9342091, 25365004, -16840030, -24417426, -10255845, -12605729,
-26527328, 5595269, -11629161, 10457172, 7784628, 23088670, 14328548, 6725919, -20495584, -20424180,
--4488778, 2403571, -5360656, 3705483, 14220637, -3098282, -1189706, -10363219, -7597261, -5645198,
--10787347, -2019708, 4441533, 6542846, 33530810, 2261300, -8395050, -2640331, 4496831, 10507637,
--594316, 16623134, 6971269, 38341708, 5950677, -252866, 1417876, 7049115, -10610180, -16483011,
-62755376, -36376224, 23831700, 44472776, -21304112, 6334540, 35544612, -44917304, 1833414, 5098663,
-21923124, -50377820, 2849174, 3462818, 16632798, -21945672, 328565, 9104794, -29617558, 4484483,
--2202245, -5475547, 16387985, -4837207, -4423280, 6974490, -3834332, -4976794, 16079284, -14900852,
-4475893, -6098317, 4153770, -9520869, -5254893, -11627550, 230854, 2348810, 31419296, 10496900,
-15304579, -3097208, 426276, 23312008, -910533, -8718247, 13108240, 9679246, -10397579, -30348776,
-27960238, -30246770, 5044976, 14632954, 19199578, -29764660, 31967442, 51311976, -27921046, -51991652,
-69785168, 24716464, -34323768, 16000901, -33036888, -41052372, -20412368, -7434589, -42874512, 34879968,
--59804736, 18083422, 28701118, -23690502, -79981952, 75848584, -13065827, -19437948, 50596864, -50227496,
-26120380, 43182676, -12802224, -11724187, 13499619, 14897094, -7964480, 5434744, 4543002, 13758928,
--6613176, -4867809, 15416785, 63351, 3557307, -1519345, 3004867, 12329777, 9183177, -1559073,
--10780368, 18023294, 19523310, -3565897, -16517907, -1666984, 8362838, 1881196, 12092480, 161598,
-10603737, 4533338, 15483894, 11436424, 13037373, -19016504, 5084705, -265751, 951872, 178778,
--11491185, -20550344, 30412664, -4776541, -27759984, 10264435, 6976101, 3023657, -4403415, -19206556,
--15238544, 34819300, -23038742, -18430242, -36750424, -16944720, 21767968, 16884054, -9840307, -12259984,
-11571179, 28875602, -12477954, 21772800, 26074210, -18585934, -2714419, 15911780, -4185446, -143881,
--5330592, 1328756, -26742076, 7245610, -5974300, 834834, 6373195, -5437429, 5450314, -11144903,
--22409528, -10647224, -38976828, 4799626, -141734, -5875516, 7162932, 3641059, -2593624, -8938901,
-15588584, 24654186, -26035554, 37918656, -4339528, 5006322, 5448703, 33512020, 15352897, 24506010,
--30888868, -7709467, -5838471, 43707736, -40900436, -14015552, 19913616, -1532767, -47222092, 3136400,
--9784472, -8124468, 21481278, 23544474, 1604707, -17770428, 38060928, -16111496, 63508072, 785979,
--29541858, -92879, -5171678, -33420214, 63807644, 12782896, -9574019, -75647256, -37828460, 21251498,
--27875948, -25092810, 29556892, -110861160, 2748242, 21796422, 15988553, -9004936, 31120796, -19107236,
--2517388, 110059, 16189879, -4645544, 3274376, 22053584, -1583232, -5598490, -7030325, -7972533,
--390305, 2451890, -1510218, -3366718, 14232985, -20003274, -4518843, 2359011, 3299072, -11986717,
--20281910, -5166846, -6248104, -2909840, -1717450, 3911105, -22491134, 1719598, 17011828, -10619844,
-13004624, 9985799, -9811316, 611496, -7185481, 2839510, 4777078, -10466835, 29417842, -14281840,
--13191992, -17027398, 14239427, 19317152, 11791833, 48008072, -9225053, 10887742, -4577899, -24752970,
-12429098, -15771657, -8877697, 9910637, 21544092, -22691922, 24821152, 2863670, -1233729, 50586660,
--10255308, -5608154, 37924560, -24225764, 33504504, 14461692, -7919920, 13366475, 14124000, 31253404,
-32502702, 9447317, -26357140, 55205364, -55356224, 1873680, 50407348, -27116276, 11178189, -5975910,
--6510634, -58372364, 39660800, 10490994, 17617418, 18596134, -12108587, -29055990, -21831318, -17705466,
-2784213, 55472188, 394063, 43509628, -14455786, -33483566, 1859721, 12512850, -27485106, 44647796,
-18178450, 21940840, 44110388, 28552942, -47160888, 17997524, -67653784, -83598856, 1767379, 70399344,
-44163540, 5696737, -49787796, -177893792, -32693828, 55009404, 62872416, 89085672, -4512937, -112974816,
--63712620, -58852864, 90339808, 69042672, -12451647, -45145476, -26402238, -54900956, -6994354, 70731136,
--6849936, 16546362, 11826192, -11598022, -25608742, 38548944, -15628849, 21506512, 15781857, -1462436,
--35782984, 49090404, -19342386, -9268539, 14230300, 12738336, -26553098, 443455, -8309688, -10023917,
-3403225, -954557, 19676318, -35107064, 18625662, -42251740, -6657200, -7043747, 50258096, 1497333,
-13655849, -30659088, 16056198, -11526082, 22226992, 26558468, -12816182, -30494268, 11018202, 7902740,
-25736518, 7217156, -43612172, 36628016, -27421218, -4743792, -17755932, 17024176, -19945828, -848793,
--2097555, -5411122, 4093104, 18756660, -19812148, 8717710, 1555315, -4587025, 276489, 13226889,
--16747688, -4581657, -2454574, 27471148, -27819576, 7377680, -12191802, 18203682, -20310364, -5778342,
-6964827, -3934727, 3856344, -13140452, -2323577, 11880416, -3608310, 4589173, 3770981, 2484639,
-14865419, -13771813, 9328669, 10715943, 13272523, -1866163, -30778272, 3940096, 3666828, 12534325,
-11463805, -2248416, 3083787, -5194763, -13982266, -2392834, 6432788, -2649995, 18716394, -15235323,
--5020280, -30389578, 9091372, 3267933, -4769561, 6771016, 5950141, -455267, -15666430, 4870493,
-15355045, -3005940, -2209224, 6003291, -6159520, 11424613, -7034083, 1918777, -14374182, 6789270,
-2755222, -2319819, -3909494, 8311299, -3956739, -6083285, -8650064, 9041443, -327491, -4592931,
--1901597, 8994198, -3528853, 3951907, -4960151, -3061238, -421444, 278099, -41339, -5017596,
-599685, 103616, -4126927, 4225174, -3911105, 11749957, 1938641, 1525250, -16278463, 4555350,
--256624, -6583111, 7480760, 13791677, -9964324, -2326262, -300111, -7292855, 11069204, -1895154,
-1660005, -7314866, 3884798, -1623498, 1449552, -4704063, -24839406, 60313152, 16461536, 14921790,
--7944079, -19275814, -18538690, 5295158, 11735998, 1869921, -656056, -41876, -8774081, -1581085,
-4267587, -2313914, 1858110, -922881, -8786966, -440234, 4407710, 6904160, -6102612, 1708323,
-4451197, -8776766, 14472429, -8746701, -7604240, -7581154, 2015413, 4234301, 6739341, -7294465,
-9386651, -13447006, 8965207, 7967165, -5879810, -600759, -381178, -1536525, 7000260, -7474854,
-2232309, -2383170, -9634685, 13732084, -7616051, -250719, -5628018, -1768453, 9619653, -12481175,
-5137855, 3469260, -5399848, 4594005, -10599442, 3096672, 4489852, -7911330, 248571, 4256850,
--7262253, 7353521, -10046465, 2806761, 10418517, -15159624, 4425427, -5793374, 1110249, 5954436,
--4461934, -2321430, 1138166, 1294396, -838056, 4253092, -3168075, -2799782, 2149094, -2504503,
-1435056, -970663, 1865090, 1670205, -2371896, 1215476, -386010, 2189897, -1940252, -584116,
-1568200, 30602, -1083942, -3543348, 2317672, 2316598, -438624, -2458869, 2414309, -144418,
--1001801, 2366527, -4924180, -1049046, 2935610, -3650722, 5364414, -3260954, 348966, 8699993,
--2436320, 6255620, -3470871, -389231, 7056095, -4911295, 9025874, -46599860, -109318192, 30926986,
-106989784, 73576544, 116342072, -64791728, -68966440, -94036696, -108853800, 2326262, 83965536, 86750288,
-90569584, 17772038, -29945586, -59407988, -85263688, -72267656, 5616207, 56120728, 66568236, 59896540,
-14321568, -16564615, -10351945, -46788300, -52334176, -22083112, -1438814, 20115480, 44105556, 21540872,
-15989626, 22088480, -11049340, -26251914, -4311611, -41962904, -19695646, 451508, 6643778, 31963146,
-37214280, 3293166, -5657546, -3507915, -27490476, -7454453, -402116, -5727339, 9493488, 18386218,
--3941169, -1470489, -7239168, -11498701, 2338073, 1123671, -1272921, 20746840, 14033806, 5180268,
--548145, -19588808, -28324236, -22395570, 1596654, 21053930, 18065706, 23721642, 3208878, 604517,
-5378373, -29469382, -16785806, -13864691, -2538326, 22588844, 5091684, 7569880, 21066278, -12182675,
--17724256, -4134980, -3042448, 6523519, 7582228, 2364380, 4224637, 1845225, -10887742, -11274826,
--2765422, -16643, 8079907, 11706470, 3827353, -1668595, -2562485, -3347927, 2918430, -3301756,
--13837848, -2182380, 3242164, 6392522, 13745506, 3339874, -2869575, -6624987, -11331197, -2486786,
-1126355, 3678103, 6459094, 8076686, 6357089, -3274913, -9817758, -10344429, -9030706, -1043140,
-4477504, 4962298, 13284871, 13642427, 6645388, -2953327, -16789028, -17755394, -8233453, -6224482,
-6267968, 16568373, 12277701, 5311264, 70867, -1313723, -2155000, -5058398, -8322573, -7997766,
--3400540, 1205812, 3506841, 5606006, 8131984, 7780870, 3052648, -2842195, -6265284, -6518687,
--4183835, -918049, 641024, 546535, 176631, 75699, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-4885526, 6077916, -1243393, 4852776, 1415729, 7217693, -1682554, -3734474, -2572686, 4409321,
+122407, -1605781, -427886, 4985920, -1328219, 904091, 1749125, -3351685, -2550674, -1093606,
+919123, -3478924, 883153, 703838, -4029753, -1313186, -2411624, 336618, -1762547, 639950,
+6569153, 3364033, -1924145, 307090, -3122978, 2389076, -842350, 3876745, -8061117, -891743,
+1243393, -2876018, 512712, 3897683, 2977486, -3636227, -2687039, -2925410, -545998, -2320356,
+-1177895, -3550327, 1347009, -324807, -4099546, -2134599, -1658394, -221191, 839129, -909459,
+-430570, 1745367, 691490, -1948305, 1006633, 4345433, -2245194, -595390, -4696547, -1805497,
+-371515, 1923609, -1990181, 545998, 783295, 633508, 1505386, -3642132, -129923, -2061047,
+1709397, -1326071, -3504157, -1013075, -119722, -79457, -1554241, -1643899, 1690607, -785979,
+-324270, 611496, 982474, 28991, -240518, 175557, 579284, 21475, -399969, 758599,
+127238, -694711, -632971, 707596, -271120, 245887, -477278, 637803, -618475, -409096,
+-114354, -148176, 216359, 7539815, -2809982, 2458332, 6305012, -5101348, -5756330, -838056,
+-1433445, -59593, 3213709, 1797981, -8005819, 1263257, -4591857, -6311992, -403727, 2331630,
+2512019, -2050310, -264677, -662499, 3445101, -699543, 2833068, -1308891, 331786, 635655,
+863825, -3990025, 1686848, 3113315, -1451162, 3963718, -2185602, -414464, -4932770, 3524021,
+885837, -1286343, -3825205, -3774203, -1720671, -1277753, 1916092, -399969, 1654636, 1654636,
+-3393561, 2133525, -4559108, 1650341, 2655901, 5052492, 4847945, -4158602, 2071785, -247497,
+-1103807, 2966749, -2248416, -2663954, -2019172, 2422899, 1197222, 3152506, -3113851, 4736812,
+-1529545, -217970, 1421097, 802622, 2767033, -2072859, 3942243, 4998268, 8708046, 4065187,
+2769717, -5120675, -941135, -3333968, -2428804, 3186866, -416075, 3932580, 1597191, -287226,
+-782221, -654983, 2257005, -1686312, 1799591, 2154463, -1682017, 1044214, 777926, 251256,
+1285806, -770410, -239444, -1660005, -9224516, -9926743, 1133335, -812823, 2362769, 2205466,
+6558952, 2968359, 3134253, 1589675, -3205119, 1240172, 8286066, -5531918, -617938, 260382,
+6652905, 4005057, 930397, 2954401, -521839, 2283849, 3069291, 6820945, 3781182, 3833258,
+2061584, 1647657, 3326989, 1212255, -4744865, 2924873, 3928821, -1386738, 2858838, 3775276,
+-1306744, 1195612, 4710506, 1749662, -1125818, 1701881, 4807679, -233002, -44023, -933082,
+1326071, 4510790, -1319629, -2521683, 1308891, -1543504, 2386391, 2837363, -3338263, 734439,
+-2152852, 189515, 1381369, 3799972, 3125126, -7946763, -6442, 3915400, -2015950, -3302830,
+458488, 625992, 3933116, -311385, -8483634, -3697430, 2763275, -2345589, 4014721, -1096290,
+34360, 1032940, 5032091, 3164854, 2141578, -2566780, 4135517, -477278, 2538326, 1257889,
+512175, 880468, 872415, -47245, -646393, 569083, -343597, -2043331, -860604, -830539,
+-248571, -457951, 5906, -605590, -1477469, 758062, 326954, -740882, 181999, 1418950,
+1038308, 501974, -186294, -219043, -136902, -58519, 1340030, -16789028, 2364380, 1744294,
+7845295, -293668, 6127845, 3149285, 1568200, -9834938, 23085, -140660, -7628936, 1233729,
+5719286, 1095217, -100932, -710817, -3038153, -3484292, 1568200, 2262911, -261456, 1512902,
+1764695, 6870337, 795643, 3047816, 3212099, -3590056, 787053, -839666, -983548, -451508,
+2536715, -383326, -1709934, -2742874, -1636383, 887448, -4874788, -3463891, 2068027, -3879966,
+1280437, -6378027, -7633768, -1945083, 9463960, -2494839, -547608, 5583995, 1880122, 415538,
+5979132, -842350, 677531, -754304, 1760400, 3838627, -1490891, -5966247, 3823595, -3477850,
+-6613713, -2638184, -1842541, -6442, 2446521, 7173669, 59593, -71941, -2796561, -266288,
+4243428, -2001992, -2177012, 5115843, -4311074, -332860, 2352568, -5232881, -1013612, -1814624,
+-1758789, 583579, -2791192, -3948149, 254477, 2448668, -1126892, -1704565, -2225330, -2261300,
+-304943, 1631551, 746251, -223338, -650688, -1759863, 94489, -589484, -2137283, -3160022,
+-2685428, -37581, -335544, 1276679, -2086817, -100932, -295279, 1016297, -153545, 436476,
+14968498, 497679, -900869, -5666673, -3257196, 7902740, -3189013, 6171868, 5311264, -6014565,
+-974421, 4631049, -3364570, -1618129, -1569274, -2174327, 999117, 1669132, 290447, 2897492,
+-1306207, 464930, 1096290, -1197759, -2824478, -2939905, -3328600, 279173, 3901978, 1709934,
+-3286187, 322659, 1545651, 7446937, -2190970, 6668474, -6046777, 2760590, 4807142, -3145527,
+-1919314, -6159520, 2929705, -40802, -4324495, 4319664, -5364414, 6053757, -316217, 8559333,
+1976222, 955093, 2079301, 3579855, 1910724, -2732673, 4225711, -756451, -4480188, -7004555,
+-1900523, 3012920, -3510599, -2257542, 2759517, -3903052, 7728794, -7388955, -21475, 4993973,
+-4222490, -1649268, -7769596, -548682, -3035468, -1672890, -2323041, 6770479, 2663417, 722091,
+290984, 5846524, 588947, -461709, 4670240, 3870303, 3505767, 7255811, -1525787, 743029,
+-2019172, 2078764, 2393908, 525597, 711354, -1177895, -33823, -1683627, -846109, 209380,
+668404, 1190243, -552977, -208843, 2334315, 1121523, -851477, 4518306, -229244, -1068373,
+-1821603, -1157494, 1655173, -1491427, 169114, -140660, -1554241, 738734, 494458, -379568,
+1148904, 1228898, -1176284, 1273995, 7224672, 12786118, -3730716, -5558225, 1470489, -2265059,
+3530463, 11642046, 77846, -2669859, 3698504, 2011655, 3451006, 2098629, -6325950, 248034,
+-5645198, 3162170, 2739652, 1677722, 10643466, -495532, 7936563, -194884, -188979, 2428267,
+-60130, 8361228, 1110786, 5270999, -1934883, 7135552, -3204046, 3812857, 14110578, -2290291,
+-3554622, 9960566, 2098629, 6495601, -152471, -6165426, 1933272, -3549254, 4268124, -7431367,
+-990527, -3853123, 4207994, -613107, 872415, 7701950, -3728032, -7704098, 2168959, -646929,
+-358630, 6267968, 1213865, 909996, -2812130, -5060009, -5379984, -1780264, -4440996, -3338263,
+4610111, -2297271, -432718, -1661616, 547071, 46171, 4115653, 2594160, -4702453, -6772090,
+-1583769, 241055, 1878511, -1829119, -1662689, 5609228, 3190087, 2775623, 816581, -4523675,
+-2097018, 2487323, 112743, -1475858, 1995549, -599685, 1219234, -1451162, 125628, -819265,
+-2575370, -3033858, -806917, -2680597, 723702, -372052, 273267, 1888712, -488016, -1421634,
+2289755, 525060, 1462973, 887448, 149787, -814970, 1134408, -248034, -254477, -47782,
+-243203, 135828, -464393, 674847, 1453310, -1734630, 486405, -2051384, 328565, -971200,
+17539572, -9206262, 6154688, 240518, 3033858, -4235375, -3319473, -1928977, 3813394, 4912906,
+1043677, -2691334, -5099737, 2666638, 4848481, -947577, 1521492, -2593624, 5285494, 1960116,
+-9936407, -3261491, 3195993, -577673, -4225174, -197569, 4517232, -3315178, 1531156, -6457484,
+3766686, 8172786, -3385508, 8644695, 289373, -1571421, 5752572, -245887, 439697, 5209796,
+-11250667, 1691680, 3404299, 4787278, 3228205, 3740380, -5052492, -3910031, -182536, 1795833,
+-5471789, 1808718, 5305359, 4771709, 1759863, 14564234, -4594005, -1823751, -6599218, -2822867,
+-4328790, -6059125, 7496866, 3132642, 7321846, -1144072, -11735461, 6830072, -4147865, 3754338,
+3355443, 1640141, 2015950, -9260486, 10968273, 2398202, -5095442, -8886287, -5578626, -5566278,
+770410, 4540854, -4147328, 347892, 2782602, 2385854, -4295, -1927367, 447213, -192737,
+1723356, 1848447, 1975148, 1384053, 1302449, 686121, -3241090, -2897492, 131533, -1063541,
+1047972, 1320703, -1511829, 2106682, -520228, 770410, 1730335, 753767, 1340567, 404264,
+-3447248, -235686, -55835, 1215476, 882616, 419833, -788127, -923418, 1848447, -541166,
+4517232, 784368, 1947231, -21022254, -17696876, -16316044, 3640522, 3351148, 1365800, 732292,
+-1165010, -1270774, 436476, -2783139, -5920613, -4115653, -10364293, -4578435, -5031018, 6193880,
+-7966628, -3526705, -4510253, 1336809, 90194, -2067490, 2323041, -692027, -8271570, -168041,
+7588671, 980326, -7378754, -6522445, 2849711, -2638184, 6368900, 4478577, -6971806, 6881075,
+10861972, -9107478, -9328669, -4989142, 3426310, 8635032, -6152541, -6361921, 3266860, -3673808,
+671626, -818728, -792958, -9907416, 1891933, 5997385, -3080029, 3433826, -4926865, -5858336,
+-5815923, -2878702, -10018548, 17157320, -3638374, -1158567, 2995740, 1866163, 3654480, 2336462,
+5352603, 2443837, 4647155, 10619307, -13706851, 9590125, -3270081, -2606508, -471373, -15298137,
+-700617, 4680978, 424128, 602906, 4274030, 1563905, -379568, 2543158, -5172215, 5987722,
+-2165201, -3486440, 3250217, -2120640, -1913408, 612570, 2652679, -2047626, -3247532, 1104344,
+2574833, 100932, -1103807, -2830920, -1556926, 390305, -4002910, -2674691, -1397475, 1908576,
+-906238, 143345, 2109366, 35970, -3987877, -908386, -3396246, -3019899, -2849174, -1758789,
+-3147674, 2664490, -941672, 175020, 5714454, -1140314, -1743757, -1546725, 3090229, 775242,
+-1065152, -20672752, 15845208, 4198331, 3453691, -3827353, 15509127, -2441152, 7306813, -22012,
+6573985, -9230958, 3652870, 3621731, 1411434, -4541391, 13804562, -3743064, 4206921, 3176665,
+14326937, -9667435, -630823, 3986267, -2493766, -7093676, 4278861, -6672232, 1723356, 1828046,
+-7838852, 3033858, 638876, 395137, 15756624, 9854802, -1323387, -6447820, -5043902, 3518652,
+-842887, -9450002, 2677912, -830002, 2778844, 7118372, 10478110, -7197292, 7123204, 3570729,
+-4730907, 3408057, 2736431, -7443715, -4034585, -4666482, 7498476, -8112657, -6898791, -18595598,
+-13634911, 3778498, -2568391, -2674154, -7173133, -14428406, 5525476, 1112397, -436476, 7069516,
+6009733, 8502425, 5037460, 2057826, -255014, 1360968, 9597641, -7096897, 13146895, -4836670,
+-3740917, -12018392, 1906429, -2206003, -6138045, -1084479, 1453846, -3022583, 3491809, -1451162,
+142271, -1477469, -488016, -1268626, -301185, 2173790, 3435974, 278636, 2835215, -3204583,
+-2289218, -1623498, 1175210, 2475512, -3278671, -1228361, -1533840, 481573, -1834488, 1473711,
+-340376, 1283122, 2164127, 36507, -3495030, 4930623, 4723927, 1974611, 21475, -2126546,
+-145492, -1107028, -526134, 5576478, -24987582, 23119272, 16607565, -6772627, -5717675, 6243272,
+56908, 569083, 11033771, 7809861, 321586, -1624035, 4444218, -2563022, -1595580, 3115462,
+-4944044, 6213207, 4258460, -5159867, 6698002, -716723, 1807644, -483184, -11011222, -609885,
+8018704, 8313983, 3263638, 3564823, 4458176, -5124970, -6487011, 2808909, 4997195, -202400,
+-2501819, -5652177, 2355790, -1653026, 7083475, 8341900, -926102, 9615358, -4992900, 10715407,
+5807333, 12913356, 937914, 1893007, -3709241, -5264556, -992674, 9913858, 16181826, 989990,
+12336220, -5305359, -11818676, 1592896, 4474819, -10327786, 10785200, -3550864, 3819300, -22764400,
+-9785546, -134218, -5462125, 4424890, 7544647, 15835544, 3309272, 134755, -7735773, -13731010,
+3563212, 610422, -11522860, 4749160, 2513630, -8308078, -2349884, 2011655, 9135395, 228707,
+2774012, 2813204, 4770098, 3925600, -7699266, 2771865, -118648, -1510218, 187368, -354872,
+-1218697, 3308199, 3124589, -3191161, -1305670, -17717, 2237678, -1205275, 3183645, 500364,
+2325725, 2084670, -2492155, 1924682, 2332167, 5980742, 564251, 3430605, 3747896, 951335,
+4396436, 1619740, 2280091, 1038308, 577136, 1618129, 5162014, -2160369, -4706748, 1190780,
+6153078, -9710384, 16675211, -7154879, 2004676, 12465069, 12899934, -952409, -7412040, -3974992,
+-3930432, 956704, -9581535, -7600482, 8025684, 2017024, 5159867, 6288906, 7432441, -3322694,
+4821638, -1821603, 5773510, 24049670, 5664525, -11592117, 11259257, 12931073, 563714, -2131915,
+683437, -6395207, -8817031, -4613869, 13186086, 8857296, 7301982, 11216307, 2273648, -1930588,
+-5155572, -14242648, 6601365, 7514582, 4171487, -2255932, -1763621, -4912906, 1981591, 11596949,
+7990787, -13285944, 8777303, -11201275, 11810623, 2522220, 4421669, 5281199, -1976222, -6330782,
+-1926830, 4755603, 20434380, -3252901, 10206990, -4538170, -9241159, 10851235, 9766756, 2479807,
+2233920, 9840844, 3441343, 580894, -1122597, -6255083, -1930051, -9176734, 2947421, -7124277,
+-3568044, 14483703, -767189, 395137, 286152, 6681896, -2183991, 1995012, 4420058, 6729140,
+7271380, 6066642, 2374580, 3188476, 3323768, 6096169, -944356, -4862977, 6885907, 2739652,
+3795677, 4185983, 174483, -482647, 428960, -3034395, 1890323, 6535867, 731755, 842350,
+-1377074, -2422899, 5454072, 5873905, 1137093, 10409390, -1293859, 4494684, 7961259, 514322,
+2208687, -1147293, -3051574, 826781, 1728188, 2889439, 5733245, 2508798, 4294968, 1604707,
+1028645, 5980205, 8505109, -4292283, 8644159, 11042898, -12664785, 8529805, 4935991, -3061238,
+789737, 5868536, -5299990, -11187853, 16806744, 3633006, 3218541, 3141232, 9976135, 2907693,
+-10039486, 10726144, -14397267, -16819628, 1495722, 2024003, -9287867, -3044058, -27509266, -19477676,
+-14668387, -4955856, -15090904, -7430831, 5724118, -13566191, 9520869, 8757438, -11049877, 14268418,
+7611756, -2790655, -1435593, -7383049, 320512, -13184476, 28934658, 8461622, 4509179, -14441291,
+3518115, -4458176, 19187766, -3858491, -499827, -17511118, 17137456, 1147830, 6711960, 5563057,
+9994926, 5666136, -3880503, 5731097, -8534100, 8664023, -3132105, 5107253, -13661217, 30942018,
+4720169, -14343043, 7785165, 9038759, 7063074, 10532870, 8986682, -13929116, 11109470, -272730,
+8958765, -7045894, 2662880, -17923972, 7541426, 7819525, 2268817, -4298189, -13561359, -872415,
+9283035, -12030740, -1643362, -1414655, -57982, 3690451, 2793339, -2704219, 5216238, -294205,
+-2557116, 4133369, 3170760, -3757023, -3039226, -7852274, -492848, -7304129, 4394289, 1239635,
+733903, 5767604, 8871255, 5638219, 4173635, 2834679, -3156264, -1219234, 91268, -5695664,
+-4719632, -1293859, -1911797, 3106872, 7204271, 2294050, 4556961, -1016297, -89121, -22364432,
+6277095, -3061238, -2173254, 13280576, -2439005, -2260764, 1292785, 11890617, -3091303, 6936372,
+-5800354, -6841346, -8742406, -11087458, 19270444, 10047539, 6996502, -6048925, -17637284, -21648782,
+10431939, 7185481, -7675107, 5163088, -5212480, 519154, 19181860, 8377871, -5424007, 10344429,
+-3478924, 5369783, -6373732, 6493454, -14145475, -20809116, -8072928, -9280887, -1562831, 24359444,
+-19810536, 11468100, 6605123, 4981089, -4363150, 9590662, 4300336, -19033148, -24193014, -8614094,
+-11022497, 27420682, 19898584, -6637335, -12204150, -1016297, -12523588, -2648384, 19983410, 18487150,
+10513006, -16302085, 3549791, -12734041, 20037096, 9504763, -2085744, 71404, 6767795, -11819213,
+2690260, 17653390, 9622874, -15968152, 17384418, -8854612, 10404558, 27545236, 10553808, -6485938,
+-8118025, 23574002, 2640331, -1436667, -10667088, 4153234, -5005248, 1516660, -3106872, -556735,
+-652298, -11742441, 1529545, -1462973, -3298535, 5163088, -860604, -4154844, 799938, -2470143,
+705985, -3066070, -4519380, 4067871, -5014911, -3245385, 2459406, 6127845, -247497, 4326643,
+3629247, -817654, 42413, -5906654, 871342, 1996086, -4938139, 6703370, 3374771, -4095251,
+-2679523, -2860448, -1205275, -6596533, 3968550, 6245420, 357556, -4913443, -2778844, 3241627,
+-1351304, 3115462, 4481799, 313533, 1700807, -17768280, -6956774, 29768956, 13785771, 17157320,
+4190814, -24723442, 7648263, -20057498, 13202193, 37205156, 13232257, 23345832, -10500121, 6746320,
+10850161, -1112397, 2806224, -9535364, 2441689, 14636175, 782221, -3891777, -13196824, 7279433,
+5466957, -13448616, 7032472, -5101348, 10312216, 14713484, 15645492, 18844170, 1906966, -14596446,
+3968013, 8909373, -146566, 25653840, 2275259, -29464550, -18475876, 8398272, -7480223, -34775276,
+1283658, 14839112, 5493800, 1567126, -3142842, 18335752, -14374182, -17838072, -3424700, -6379100,
+-17351668, -952409, 1296006, -10108206, -14936286, -9150965, 763430, 2178085, -21585968, 6466610,
+-8983461, 5267241, 24977382, -3395172, -8644159, 17398376, -2993592, 14487998, -13678934, 9360344,
+644245, -15855409, -17683990, 31988916, 3147137, 4331475, 1551020, 46171, 32096828, 26208428,
+8316668, -2398739, 12610561, -6145025, 4331475, 7508677, -1344325, 9863929, 4278861, 2885144,
+-14561550, 8706972, 4709432, -803159, 1374926, -4927938, 4255776, 11331734, -1822140, -3654480,
+-6227166, -6833830, 6859063, 8047695, 490700, 56371, -6130529, -6619619, 1246614, -9515500,
+1416266, -3148211, 10063645, 3590593, 496069, -6277095, -10966125, -2479270, -5286031, -7397008,
+4355634, 4482335, 8647917, 25170656, 3271691, -34470872, -15591805, 21391084, -30829812, 17522930,
+-29176250, 2374043, -4658429, -42198052, -5558762, 18997714, 38841536, 12372727, -5640366, 9431748,
+-14894410, -4993437, -33880312, -1883343, -23010824, -3313031, -5036386, -15904264, -16874390, -5603859,
+9701794, -15285252, 10537165, 19398756, -19989314, 7249368, 6458557, 3433826, -21272974, -3248069,
+-217970, -22286586, 5814849, 28389196, -2152852, -41213968, 14599668, -24893094, -63546724, 17922362,
+-26278758, -32682554, 1744294, -14965814, 4539781, 11235098, -6259378, 16734803, -13984414, 14618458,
+-11537893, -28440736, 170725, 20351166, 19514184, -36956584, 5441187, -4420058, -27507654, -7358353,
+-6812355, 47873852, 23905252, 28083180, 12799003, 12213813, 29631516, 42561516, -9711995, -20164872,
+-22000434, 3863860, -27334246, -8411157, 14157286, 22992570, 3235184, 2088428, 19967840, -4621922,
+-11324755, -15411416, 12031814, 13643500, 13406740, 3129958, 15379204, 6376953, -9426916, -2094333,
+-9130564, 14024679, 2268280, -1639604, -15726023, 4772246, 12607876, 1384053, 241055, 12316356,
+-9827959, -6575595, 6819335, 695248, -4958540, -9468255, -3020973, 14492830, -697932, -32087700,
+-2977486, -793495, -7348689, -6256694, -8472360, -5194763, 6998649, 6258304, 3729105, 2221572,
+-5268851, -6656663, 55716464, 60232084, -35359392, -14008573, 26891328, -12200391, 10846940, -16780438,
+5019206, -17241072, -32293860, 44000868, 6415071, 13817984, 11316165, 4120484, 5779416, 1322313,
+8916352, 10933376, -31249108, -25761750, -22570590, -21308406, -15963320, -10060424, -8339216, -16753057,
+-9491878, -14198088, 16145319, 12277164, 6207839, -7823820, 3280281, -33063196, -16612934, 8994735,
+-30048664, -2777233, 14625437, 25942140, 3802120, 5028333, -11098195, -19403052, -22886806, 18387292,
+-2488397, 18204218, -64170568, 4009352, -7460895, 7389491, 39237748, 4820564, 6549289, 4429185,
+-11492796, -13215077, 361314, -2607045, -36026184, 7733089, -13212393, 32319628, 2156611, -35403416,
+-48195440, -29943976, -6083821, -33843804, -33143188, -20561620, 23378044, -6052146, -22824530, -30775588,
+25724170, -3305514, 15222975, -17313014, 9342091, 25365004, -16840030, -24417426, -10255845, -12605729,
+26527328, 5595269, -11629161, 10457172, 7784628, 23088670, 14328548, 6725919, -20495584, -20424180,
+-4488778, 2403571, -5360656, 3705483, 14220637, -3098282, -1189706, -10363219, -7597261, -5645198,
+-10787347, -2019708, 4441533, 6542846, 33530810, 2261300, -8395050, -2640331, 4496831, 10507637,
+-594316, 16623134, 6971269, 38341708, 5950677, -252866, 1417876, 7049115, -10610180, -16483011,
+62755376, -36376224, 23831700, 44472776, -21304112, 6334540, 35544612, -44917304, 1833414, 5098663,
+21923124, -50377820, 2849174, 3462818, 16632798, -21945672, 328565, 9104794, -29617558, 4484483,
+-2202245, -5475547, 16387985, -4837207, -4423280, 6974490, -3834332, -4976794, 16079284, -14900852,
+4475893, -6098317, 4153770, -9520869, -5254893, -11627550, 230854, 2348810, 31419296, 10496900,
+15304579, -3097208, 426276, 23312008, -910533, -8718247, 13108240, 9679246, -10397579, -30348776,
+27960238, -30246770, 5044976, 14632954, 19199578, -29764660, 31967442, 51311976, -27921046, -51991652,
+69785168, 24716464, -34323768, 16000901, -33036888, -41052372, -20412368, -7434589, -42874512, 34879968,
+-59804736, 18083422, 28701118, -23690502, -79981952, 75848584, -13065827, -19437948, 50596864, -50227496,
+26120380, 43182676, -12802224, -11724187, 13499619, 14897094, -7964480, 5434744, 4543002, 13758928,
+-6613176, -4867809, 15416785, 63351, 3557307, -1519345, 3004867, 12329777, 9183177, -1559073,
+-10780368, 18023294, 19523310, -3565897, -16517907, -1666984, 8362838, 1881196, 12092480, 161598,
+10603737, 4533338, 15483894, 11436424, 13037373, -19016504, 5084705, -265751, 951872, 178778,
+-11491185, -20550344, 30412664, -4776541, -27759984, 10264435, 6976101, 3023657, -4403415, -19206556,
+-15238544, 34819300, -23038742, -18430242, -36750424, -16944720, 21767968, 16884054, -9840307, -12259984,
+11571179, 28875602, -12477954, 21772800, 26074210, -18585934, -2714419, 15911780, -4185446, -143881,
+-5330592, 1328756, -26742076, 7245610, -5974300, 834834, 6373195, -5437429, 5450314, -11144903,
+-22409528, -10647224, -38976828, 4799626, -141734, -5875516, 7162932, 3641059, -2593624, -8938901,
+15588584, 24654186, -26035554, 37918656, -4339528, 5006322, 5448703, 33512020, 15352897, 24506010,
+-30888868, -7709467, -5838471, 43707736, -40900436, -14015552, 19913616, -1532767, -47222092, 3136400,
+-9784472, -8124468, 21481278, 23544474, 1604707, -17770428, 38060928, -16111496, 63508072, 785979,
+-29541858, -92879, -5171678, -33420214, 63807644, 12782896, -9574019, -75647256, -37828460, 21251498,
+-27875948, -25092810, 29556892, -110861160, 2748242, 21796422, 15988553, -9004936, 31120796, -19107236,
+-2517388, 110059, 16189879, -4645544, 3274376, 22053584, -1583232, -5598490, -7030325, -7972533,
+-390305, 2451890, -1510218, -3366718, 14232985, -20003274, -4518843, 2359011, 3299072, -11986717,
+-20281910, -5166846, -6248104, -2909840, -1717450, 3911105, -22491134, 1719598, 17011828, -10619844,
+13004624, 9985799, -9811316, 611496, -7185481, 2839510, 4777078, -10466835, 29417842, -14281840,
+-13191992, -17027398, 14239427, 19317152, 11791833, 48008072, -9225053, 10887742, -4577899, -24752970,
+12429098, -15771657, -8877697, 9910637, 21544092, -22691922, 24821152, 2863670, -1233729, 50586660,
+-10255308, -5608154, 37924560, -24225764, 33504504, 14461692, -7919920, 13366475, 14124000, 31253404,
+32502702, 9447317, -26357140, 55205364, -55356224, 1873680, 50407348, -27116276, 11178189, -5975910,
+-6510634, -58372364, 39660800, 10490994, 17617418, 18596134, -12108587, -29055990, -21831318, -17705466,
+2784213, 55472188, 394063, 43509628, -14455786, -33483566, 1859721, 12512850, -27485106, 44647796,
+18178450, 21940840, 44110388, 28552942, -47160888, 17997524, -67653784, -83598856, 1767379, 70399344,
+44163540, 5696737, -49787796, -177893792, -32693828, 55009404, 62872416, 89085672, -4512937, -112974816,
+-63712620, -58852864, 90339808, 69042672, -12451647, -45145476, -26402238, -54900956, -6994354, 70731136,
+-6849936, 16546362, 11826192, -11598022, -25608742, 38548944, -15628849, 21506512, 15781857, -1462436,
+-35782984, 49090404, -19342386, -9268539, 14230300, 12738336, -26553098, 443455, -8309688, -10023917,
+3403225, -954557, 19676318, -35107064, 18625662, -42251740, -6657200, -7043747, 50258096, 1497333,
+13655849, -30659088, 16056198, -11526082, 22226992, 26558468, -12816182, -30494268, 11018202, 7902740,
+25736518, 7217156, -43612172, 36628016, -27421218, -4743792, -17755932, 17024176, -19945828, -848793,
+-2097555, -5411122, 4093104, 18756660, -19812148, 8717710, 1555315, -4587025, 276489, 13226889,
+-16747688, -4581657, -2454574, 27471148, -27819576, 7377680, -12191802, 18203682, -20310364, -5778342,
+6964827, -3934727, 3856344, -13140452, -2323577, 11880416, -3608310, 4589173, 3770981, 2484639,
+14865419, -13771813, 9328669, 10715943, 13272523, -1866163, -30778272, 3940096, 3666828, 12534325,
+11463805, -2248416, 3083787, -5194763, -13982266, -2392834, 6432788, -2649995, 18716394, -15235323,
+-5020280, -30389578, 9091372, 3267933, -4769561, 6771016, 5950141, -455267, -15666430, 4870493,
+15355045, -3005940, -2209224, 6003291, -6159520, 11424613, -7034083, 1918777, -14374182, 6789270,
+2755222, -2319819, -3909494, 8311299, -3956739, -6083285, -8650064, 9041443, -327491, -4592931,
+-1901597, 8994198, -3528853, 3951907, -4960151, -3061238, -421444, 278099, -41339, -5017596,
+599685, 103616, -4126927, 4225174, -3911105, 11749957, 1938641, 1525250, -16278463, 4555350,
+-256624, -6583111, 7480760, 13791677, -9964324, -2326262, -300111, -7292855, 11069204, -1895154,
+1660005, -7314866, 3884798, -1623498, 1449552, -4704063, -24839406, 60313152, 16461536, 14921790,
+-7944079, -19275814, -18538690, 5295158, 11735998, 1869921, -656056, -41876, -8774081, -1581085,
+4267587, -2313914, 1858110, -922881, -8786966, -440234, 4407710, 6904160, -6102612, 1708323,
+4451197, -8776766, 14472429, -8746701, -7604240, -7581154, 2015413, 4234301, 6739341, -7294465,
+9386651, -13447006, 8965207, 7967165, -5879810, -600759, -381178, -1536525, 7000260, -7474854,
+2232309, -2383170, -9634685, 13732084, -7616051, -250719, -5628018, -1768453, 9619653, -12481175,
+5137855, 3469260, -5399848, 4594005, -10599442, 3096672, 4489852, -7911330, 248571, 4256850,
+-7262253, 7353521, -10046465, 2806761, 10418517, -15159624, 4425427, -5793374, 1110249, 5954436,
+-4461934, -2321430, 1138166, 1294396, -838056, 4253092, -3168075, -2799782, 2149094, -2504503,
+1435056, -970663, 1865090, 1670205, -2371896, 1215476, -386010, 2189897, -1940252, -584116,
+1568200, 30602, -1083942, -3543348, 2317672, 2316598, -438624, -2458869, 2414309, -144418,
+-1001801, 2366527, -4924180, -1049046, 2935610, -3650722, 5364414, -3260954, 348966, 8699993,
+-2436320, 6255620, -3470871, -389231, 7056095, -4911295, 9025874, -46599860, -109318192, 30926986,
+106989784, 73576544, 116342072, -64791728, -68966440, -94036696, -108853800, 2326262, 83965536, 86750288,
+90569584, 17772038, -29945586, -59407988, -85263688, -72267656, 5616207, 56120728, 66568236, 59896540,
+14321568, -16564615, -10351945, -46788300, -52334176, -22083112, -1438814, 20115480, 44105556, 21540872,
+15989626, 22088480, -11049340, -26251914, -4311611, -41962904, -19695646, 451508, 6643778, 31963146,
+37214280, 3293166, -5657546, -3507915, -27490476, -7454453, -402116, -5727339, 9493488, 18386218,
+-3941169, -1470489, -7239168, -11498701, 2338073, 1123671, -1272921, 20746840, 14033806, 5180268,
+-548145, -19588808, -28324236, -22395570, 1596654, 21053930, 18065706, 23721642, 3208878, 604517,
+5378373, -29469382, -16785806, -13864691, -2538326, 22588844, 5091684, 7569880, 21066278, -12182675,
+-17724256, -4134980, -3042448, 6523519, 7582228, 2364380, 4224637, 1845225, -10887742, -11274826,
+-2765422, -16643, 8079907, 11706470, 3827353, -1668595, -2562485, -3347927, 2918430, -3301756,
+-13837848, -2182380, 3242164, 6392522, 13745506, 3339874, -2869575, -6624987, -11331197, -2486786,
+1126355, 3678103, 6459094, 8076686, 6357089, -3274913, -9817758, -10344429, -9030706, -1043140,
+4477504, 4962298, 13284871, 13642427, 6645388, -2953327, -16789028, -17755394, -8233453, -6224482,
+6267968, 16568373, 12277701, 5311264, 70867, -1313723, -2155000, -5058398, -8322573, -7997766,
+-3400540, 1205812, 3506841, 5606006, 8131984, 7780870, 3052648, -2842195, -6265284, -6518687,
+-4183835, -918049, 641024, 546535, 176631, 75699, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-4398047,
--2920041, 1234803, -1123671, -1386201, -2139968, 525597, 4264366, -1364189, 21475, 438624,
-7299834, -140660, 1401233, -2997887, -2079838, -742493, -1958505, -2107218, -1975148, -1343251,
--1876364, -2482491, 2096481, 3469797, -1898912, 529892, 147640, -3933116, 118112, -85362,
--2785286, 5270462, -2684892, 2997350, 1149978, -806917, -3015604, -2792266, 2718178, -1409286,
--1012539, -4161823, -1052267, -386010, -1955284, 5557151, -1205275, -349503, 2331094, -405338,
--4621922, -2379412, -4073240, -2742337, 6344204, -1781338, 7054484, -30065, -282394, -1278827,
-830002, 294742, -4179540, -4466766, 3262028, 368830, 2221035, -301185, 2585034, 1578937,
--4049081, -28454, 1362578, 2187749, 4832, 1846299, 3376918, -4488778, 1195075, 1152125,
--2234457, -2684, 1031866, 3218004, 2132451, -2246268, -667331, -124017, 765578, 1022202,
-791885, 840740, -577136, 435939, -1209033, -784368, -5906, 1637993, 733903, -50466,
--105227, -1113470, 665720, -86973, -367220, -96637, 594316, 244276, 430570, 1055488,
--338229, 463320, 1284732, 9656697, -723702, -1136019, -2439005, -5237713, -6467684, -5915244,
-690416, 5323612, 1881733, 7098507, 2458332, -3182034, 883153, -8390219, -7101729, 3339874,
--2477123, 4693326, -409633, -3714073, -1836099, 9294309, 2096481, 3944928, -151398, 3026878,
--1355599, -1112397, 1861868, -1250909, -4021163, -272194, 1508607, -445603, -216359, 5921686,
-3673271, -6310918, 171262, -3993783, 6704981, 3975529, 305480, -2346126, -2413235, 3099893,
-1740536, 5010616, -4602058, 7938174, 9732933, -2647311, 9483825, 13422, 4982699, 3107946,
--1722819, 1665911, 7606387, -860067, -5089536, 4407710, 1439888, -29528, -562641, -873489,
-350577, 4450660, -2816425, 1634235, 1212255, 2369211, -3641596, 4197257, 991601, -341450,
-1344862, 633508, 430570, -150861, 967978, 2477659, -1704028, 1014686, 675384, 1057099,
--1553704, 137439, -2508261, 466004, 1213865, -1438814, -912144, 361314, 722628, 848793,
-252866, 774705, 21475, 37044, -8361765, -6541235, 2030983, -3710315, 2615098, -4632122,
--6577206, -6075768, 823560, -4541928, 4122095, 3024194, -5840619, -1210107, 2345589, 543850,
-2889439, -1726040, 2989834, 3702262, -5188321, 1643362, 1676648, -4156455, 2413772, 418759,
--4917738, 3626026, 3479461, -1746441, 3803731, 543850, 3099356, 2824478, 1156957, -1844689,
--483721, -5871221, -1795833, -2920041, 3062312, 3250753, 1256278, -9402757, 1767916, 3960497,
--2153389, 6608881, -5433671, -7170985, 517544, -2127620, 2263985, -5119064, 9306120, -490163,
--3154654, 915365, 85899, 5317707, -334471, -3099356, -238371, -2103460, -2901787, -3630321,
-1675037, -6563784, 640487, 242666, 1893544, 4391067, 1408212, 3125663, 4800700, -3304441,
--620623, 1084479, -4175782, 2831457, -1449015, 2413772, 1882806, -1277753, -1018444, 3551938,
--1192390, -3229816, 416612, -338766, -163746, -1740536, 2539400, -1987496, 937914, 972273,
-1271310, -510027, -584116, 161598, -1039919, 393526, -728534, 67646, -471373, -969589,
-1215476, -490700, 226560, -169114, 28454, 22549, 175020, -20105816, -448824, -2561411,
-13957570, 186831, 727460, 2881386, -2086280, 6970195, 1625645, -7705708, -4203163, -9019431,
-1454383, -747861, -3180423, -2699924, -3386045, -2203318, 10827613, -5166309, -2617246, -2980707,
--8476118, -483721, -2179159, 2722473, 4013110, -1483911, -186294, 2311229, -2690260, -826781,
--1220308, -3151969, 3215857, 6620692, -941135, -1246077, 5203353, -7190849, 4452808, -5767604,
--11507291, -7336341, -11461657, -1853278, -6593312, -4466766, 1058173, 4393752, 2159295, 3104725,
--1804423, 3793530, -4945655, -1210107, 3973382, -139050, 5569499, -2500745, 1625645, -4117800,
--3151969, 2845416, -7053410, 1737851, 5069135, -6864969, 577136, -1903207, -3250753, -4541928,
--4109210, -1438814, -1869385, 955093, 4738423, -2455648, 1413581, -4173635, -4449586, -3519726,
-1551020, 2206540, 513785, -1177895, -1362578, -1928440, 911070, -1650878, -1458141, -729608,
--1359894, -265214, 151934, -2308008, -603980, -367220, -1759326, -536334, -834834, -95026,
--373125, -3114388, 286152, 1165547, -654983, -1287417, -204548, 1767916, 884763, -832150,
-12785581, 69256, -7154342, -6878927, -2365990, -5022965, -1941862, -3782256, 967441, 600759,
--5657009, -3342022, -6211597, 11737072, 4978404, 1064078, -673773, 6354404, -9521942, -172872,
--206695, -6036577, -8011188, 7143068, 142808, 5088463, -8033737, -3540664, -2798708, 2763812,
--284542, 3403225, -5538361, 1644973, 2273112, -6027987, -5763846, -5250598, 1256815, -1752347,
--1605244, 5032628, -1473711, 525597, 106837, -1037235, -5711770, -3529390, -641561, -8645232,
--5603859, -4574140, 2417530, 1606855, 3464965, -892816, 1532230, -140123, -852551, 3960497,
--3078418, 6931004, 1011465, 2065342, -884763, -2352032, 2813741, 2108292, 5549635, -1714229,
-904628, 3313031, -1945083, 15032, -7233799, 3374771, -5556077, 3495567, -4092567, -4087198,
--7797513, -1589675, 2044941, 802085, -1266479, 1769527, 853625, 3526705, 647466, -1152125,
-3205656, 1653562, -2728378, 620623, -2203855, 2403034, -925565, 351650, -548682, -352187,
--1928440, -142808, 192200, 309238, -1094143, 865973, -1600949, 591095, -220654, -914828,
--1403917, 313533, -911607, 2040110, 690953, -642635, -832687, -934692, 1744831, 1017370,
-1675574, 76773, 279173, 735513, 15052787, 14245870, 10618233, -3677566, 3850438, 5340255,
-3110093, 2985002, -5374078, -4704063, -7014756, 6121402, -6586333, -872952, -4808753, 8142185,
--9176734, -6876780, -3460133, -1545651, -5083631, -7620346, 2086817, 318901, 374736, -9225053,
--5107253, 2308545, 1849520, 2514703, -2547989, -3717294, 219580, 2666638, 3445638, -2660732,
-3273302, -4942434, -1358820, -11973295, 4286378, 1341104, -2117956, -2344515, -8836895, -4097936,
-1031329, -2221035, -12383464, 6547141, 2667175, -112743, -3400004, -2684355, -5284421, 1489817,
--1925756, 3442953, -853088, -1875290, -7079717, -1462973, -782758, -3968550, 7606387, -5688684,
-21475, 4449586, -2001455, -6146098, -3475166, 5068062, 7429757, 3594888, -661425, -345208,
-3889630, -8227010, 3213709, -983548, -482647, 249108, 1656784, -594853, -427886, 275952,
--1676111, -5025112, -1413044, -1629403, 1400159, 907849, 474057, -2032593, -1088237, -2327872,
--2791192, -812823, -196495, 3087545, 212064, 296353, 304943, -1271310, -749472, 1339493,
--1792075, -412854, 486942, 780073, -2122251, -126702, -275952, 1038845, -1552631, -502511,
--955630, -1570884, -3211562, -1589138, -249645, -1515587, -96100, -1611, -250182, -1883880,
-18321256, 6164352, -2642479, -2105071, 6453725, -12330851, -2294586, 10035191, 5050882, -6950331,
--120796, -4708358, 1967632, 7721278, 18940268, 6263673, 14761266, -5194763, -1056562, -14305999,
-4901632, -4160213, 4073777, -6256157, -288837, 622770, -2190970, 5159867, -2260764, 2471754,
-6374805, -4836133, 2902324, 8097624, -2157684, 2716030, 56908, 3260417, 4476430, 4559645,
--24256364, 8895951, -2758980, -11376295, -1938104, 6955700, 2178622, -8789114, 4796942, 6933688,
--14260902, 1150514, -3986267, 8422431, 1978906, 6956237, -1644436, -5012227, -9995463, 612570,
--6022618, 18971944, 3565360, -3125126, 6385006, 788663, 6180995, -14942191, -1905355, 2293513,
-4690105, 1087164, -6923488, -1115081, 2615635, 6629282, 5671505, -4651450, 188979, 6519224,
--220117, 3058554, -2214056, -1146219, 4650376, 423054, -291521, -650151, 297427, 2221572,
--2097555, -985695, -208843, 1717987, 1761474, -252866, -535260, 4488778, -1371168, -808528,
--2316061, 280247, 1295470, -1223529, 152471, 1352378, 1914482, -1653026, -666794, -2720862,
-268435, 2074469, -945967, 347892, 1049046, 1050120, 3714073, 416612, 1854889, -164819,
--1512365, 2323577, 653909, -21703006, -23802172, -8147016, -1851131, 441845, 5066451, -10164577,
-3216394, 11990475, -6868727, 6383395, 8308078, -5780489, 188442, -2814814, 10160282, 14158360,
--6770479, -7991861, 7131793, 685584, -6784438, 3218541, 127238, 1774895, 2039036, -3634616,
--2632815, -15128485, -762357, -4327717, -331786, -448824, 10302553, 3052648, -18445810, 308701,
-8921184, -10099079, 2677375, 10859288, -2369748, 3821984, 239981, -2850785, -6996502, 13960791,
-11770358, -8936753, 4699768, -3324842, -441845, 4343823, -3078418, 3642669, -5506685, -632434,
-11818139, -3352759, 2518462, 5568962, -4004520, -9697499, -391379, 3326989, 1746978, -4661650,
-640487, 2611340, 4220342, 8623221, 5363878, 9489193, 5042829, 1831804, 4440996, -1560684,
-8587787, -282931, -6737193, -9110163, 1146219, 2954401, -1566589, 6806987, -3491809, -3680787,
-2734821, -861678, 756988, 342524, -4183298, -592169, -2509872, 3092377, 1416802, 2485712,
-4887673, 601832, -1692754, -7054484, -514859, 1631551, -1773285, -733366, 739271, -1575179,
-1533840, 1561221, 228707, -1668058, -1155883, 3444564, -459025, 1613834, 886374, 1110249,
--2443837, -2627983, -1516660, 594316, 1218697, 2058363, 1563368, 1003412, 994822, 2588255,
--648003, -23369454, 26096758, -1501628, 16796006, 1293322, -9721658, -2904472, -5622649, -6821482,
--871878, 479963, 12157442, -1906966, 8361228, -8376260, -419833, 2087354, 1950989, 972273,
-10574209, 10536629, 3875134, 1697586, -1296006, -2025614, -569083, -1726577, -17533668, -5963025,
-8135742, 5260261, -1918240, 924492, -8274255, 4242891, -10154913, 2266132, 16248398, 1798518,
-3564286, -13437879, 7245073, 6318434, 1779727, -9001178, -3904662, -4173635, 793495, -8074539,
-8349954, 10179072, 6174016, -851477, 15247671, 5434744, 22291418, 8739185, -5883569, 18574122,
-482647, -6700686, 13474923, -2128693, 4495220, 8508330, -6031208, -5164698, 12474196, 13392782,
-7949985, -10755135, 4184372, -42950, -4920422, -8821326, 6671158, 11862700, 7211787, 17196512,
-2445984, -3710852, -3732864, -10492068, -3915400, 6609955, 1112397, -1866163, 514859, -6518687,
--4515085, 992674, 1789391, -150861, 7192997, 5672041, 2593624, 299037, 2186675, 3432753,
-1846299, -3212099, -1212255, 1037235, -634581, -1056025, 3108483, 343061, -715112, 2475512,
-1046898, 843961, 1076426, -2094870, 689879, 6278169, -2669322, 3985730, 1968706, 239444,
--2642479, -3026878, -1433982, 5740224, -12565464, 16683264, -4832912, -10983842, 3663607, 7245610,
--7286949, -3707094, -15379204, 6420439, -5641977, -1874753, -14096620, -6215355, -4783520, -2433099,
--6357089, 3301756, -2853469, -3496104, 3314641, 4631049, 8207146, 8016557, -3478387, -2934537,
--11355357, 4447976, 220117, 7446937, 2055679, 1973538, -2571075, 2961380, -7095823, -6045167,
-3345243, 1670742, 3396246, -13887240, 4641786, 9026948, -25233, -12237972, -12735115, -9967008,
--29372208, 4113505, -3377992, 14178224, -6952479, 11770895, 3800509, 760746, 15241228, 2274722,
--1748589, 10899553, 4064650, -14977088, -7407745, 1733556, -4747550, -8525510, -5138929, 19191524,
-8868571, -9113384, -1083406, -5143760, -2470143, 2756832, 13611288, 190052, -3628711, 17923972,
--6423124, -16394427, -15563888, -18546742, -3260954, 1354525, -459562, -3313567, -2237141, -7966628,
--1528472, 2251637, -2425583, -2402497, 1589138, 1450088, -11595338, -4842576, -9073655, 370978,
--3053722, -3012920, -4841502, -1589138, 1336272, 6995428, 107374, 8593693, 4295504, 6294812,
-710817, 2931315, -2932389, 5734318, 1074, -4234301, -6190659, 3527242, 607201, 1925756,
--1590749, 1081258, -1923609, 1945620, -667331, 2318209, -460098, -1076426, 1572495, -382252,
-7329362, -12034498, -2995203, -3197603, -1542430, -802622, 32114544, 5288179, 11767674, -5654862,
-10283225, 20702280, -17671106, 26883810, 15961172, -7150047, 285615, 1660005, -9608916, -16163036,
-1161252, -9359271, -14401562, -6447820, 1333051, 51540, -1726040, -6468758, -1035624, -6298033,
--388158, -7286412, -480499, 5034776, -11301133, 6262599, 9618579, -7421167, -6862821, 4958540,
-3787624, -626528, 28858422, 2563022, 19258096, -13780403, -1277753, -16713865, -12222940, 2980171,
--12258374, -16897476, -11216307, -12829604, -2737505, -3402688, -14203457, -15488726, 20304994, 3196530,
-1341640, -2724083, 10553808, 5838471, 12716861, -1236414, 12025372, -6665789, 2797634, -22345642,
-18345416, 8851391, 1511292, -12265353, -849330, 5563057, 1242319, 2153926, 9105331, 12606266,
--9672266, -12521440, -8171176, -1946694, -126165, 1387274, -7281580, 855772, 2195265, 5203353,
-6830609, -838056, -4080756, 7043747, 3560528, -5231807, -271120, 2553895, -3044595, -5530308,
-1094143, -1866700, -1733019, -155156, -2336462, 6458020, -6701760, 3754338, -96100, 7142531,
--7345468, -1792075, 1352378, -1874216, -2734284, -1181653, -5797669, -6472516, -1122060, 696858,
-2022393, 2370822, -4295504, 4483409, 3487514, -2636573, 4103841, -766115, 2407329, 217433,
-2386391, -1780801, 15586973, -6415608, -5237713, 17405892, -14721537, -11235634, -2782602, -8945880,
--1461900, -17523466, 3882114, -10805601, 8221641, 1123671, 2777233, 9952513, 2833068, 7011534,
-9651328, 9157407, 7556995, 12848395, 1489280, 8719320, 7814156, -9453760, 16237661, 3941706,
-7482907, -8830453, 12661564, 5679021, 8877697, 2211371, 3138011, -1698123, -11764989, 2932389,
-6580427, 7762080, 8487929, 1783485, -14299020, -9065602, 10203769, 5523328, 2283849, -5472325,
-7047505, -5238250, -14333380, 20914344, 12757127, 9304510, -8121783, -4031901, -10691784, -33219962,
--1055488, -4691715, 4229469, -7809325, -8377871, -14687714, 2533494, 4624069, 18505404, -14703284,
-5883569, 204548, 8491687, -12955769, -15869367, -9703942, 10166724, 3047816, 3145527, 5361730,
--4392678, 1741072, 11926587, 4190814, 6015639, 7574175, -3104188, -2856690, -5071283, 51540,
-5185100, 6413997, 193810, 2615635, 1260573, 978179, 4869956, -3117610, -2662880, -4367982,
--2461553, -4518843, -186294, -6825240, -2771328, -7212324, -448287, -4371740, -1282048, -1061394,
--2522757, 1972464, -1833414, -9245991, -1422708, 3587908, 3957276, 7470559, -1181116, -4573067,
-2088965, -1856500, -6730751, 6067178, 5147519, 4913980, 11615202, 7558069, -705985, -26699128,
-15480136, 16469052, -8049843, 14057965, 4898947, -22501870, -3898220, 29790966, -4128001, -19658066,
--2989834, -1802276, -17064978, 12115029, 2597382, -8557722, 13054016, 8694088, 30728344, 18050136,
-580894, 2354716, 28998008, -7308424, 7420093, -11700565, -16878684, -4962298, -11430519, 2704219,
--731218, 5928666, -769873, -1967095, -4773320, 22879828, 1220308, -17839684, -14121316, -3135326,
--3573950, -533650, 7556995, 20892868, 13407277, 4500589, -12489765, 16276852, 29673930, -6140193,
-13550085, 12670154, 35733592, 6882685, 6921877, 10878615, 15310485, 8526047, -12084427, -11639898,
-8333311, -21716966, -13006235, -15531675, 14980846, 13095892, 9218074, -3433290, 11085847, 22962506,
--12882218, 18314814, 18274548, -2321967, 17968532, -16631187, -7235946, -5724655, 37480568, -18101676,
-18505940, 11591580, 6924024, 5336497, -16348793, -1514513, -12817256, 14071387, 13430363, -85899,
-1161789, -6542846, 10093173, -3754875, 1181653, 3860102, 4256313, 97174, 6242735, -4042101,
--2040646, -1533303, -3944928, 2013266, 3857418, -2951180, 1881733, 4421669, 7785702, 1291711,
--6753299, 3087008, -7335268, 1484985, 7048042, 4577362, 7445863, -1118839, 11867532, -4476967,
-8827232, -2120640, -2542084, -1398549, 730144, 9511205, -6568616, 4634270, 53687, 4693326,
--5294084, 1590749, 2522757, -2408403, 12593918, 5956583, 20477868, 36502928, 3943854, -3748433,
-3893925, -1930588, -5972152, 1112933, 3846143, -8878234, -11830487, 4058207, -6122476, -3333432,
-9337796, -432718, 18304076, -9576703, 17948132, 8825621, 1814624, -10359998, 3437048, 17884244,
-5229123, -9037685, 3592740, -2126009, 571768, 10518375, -14456323, -7652558, 16287590, 376883,
--3928285, 14111115, -614717, 5014911, 3284576, -13441637, -24474334, -5168457, 8611946, 15775952,
-3498788, -12047920, 15819975, -5117454, 31994822, -16115254, 21566104, -12505871, 7789460, 18440978,
--27084064, -28075664, -72478, -7922067, 7386270, 8999030, 1418950, -4103841, -16499117, 11245298,
--2273648, 19990926, 9160628, 18616536, 5215701, 10848551, -4384625, 14299020, 5308043, -8508867,
-1893544, -217970, -40955196, -1193464, 7402376, 9970230, 17560510, 14766098, -4631049, 1258425,
--2877091, 2774012, 170725, -4558571, -10716480, 4748087, -6172942, 14270029, 1873143, 2791192,
-7202660, 4155381, -4285304, 4121021, 10540387, 9066139, -2876018, -1638530, 1698123, -2189360,
--1274532, -6445672, -944356, -13508209, -1651952, 4634807, -11038603, 7819525, -8270497, -6905234,
-2263448, -7023882, 7395397, 2772402, -2437394, 4662724, -284542, -777389, 3256122, 9916006,
--6630893, 1539209, 1758252, 23791434, 30776662, -6739341, -1206349, 10842108, 40719512, 1120450,
--24107652, -9663676, 4888747, 4611185, -7628936, 7762617, -5512054, 12597139, -20443508, 1047435,
-12721156, -8560407, -9225053, 1748589, -20204600, -6254546, -6584185, -32190244, -27158688, -15768972,
-11850889, 13915157, -2447595, -22921166, 2576444, 776315, -808528, 4549444, -11489574, 27436788,
--7840463, 3460133, 30444338, -26687854, 12853227, 4464619, -9290551, 11028402, -7195144, -21649856,
-454193, 18648212, -8357470, -13619341, 7793218, 2474975, 17830556, 89657, -27464168, 2153389,
--16233366, 27020176, -9810242, 4045859, 6664179, 3198140, -3878356, -17620104, 7347079, 18382996,
-5364951, 18967650, -27843736, -15384036, -4580046, -301185, 3010235, -21547850, 19260780, -2698313,
--20477868, -6889128, 12971338, 12004970, -11334419, -15812459, 15575699, -12599287, -7844758, -345745,
--1912871, -1770600, -1000727, -4642860, -852551, 7754027, -1755568, 7121056, -8203925, 5647345,
-7517804, -2070174, 4072166, 1166084, -1493575, 44560, 1048509, 13314399, 733366, -2610266,
-1176284, 2920041, -6637335, 2343442, -8496519, -727997, 9922448, -3595425, -7731478, -2922188,
-4478577, 103079, 377957, 5789616, 520228, -7834557, -3994857, 14157286, 10429254, -3458523,
--546535, -21110302, 31081604, 905164, -53181896, 21330956, -7292855, 4165582, 5448703, 7162395,
-13080323, 4780299, -9612137, -2308008, 13172665, 8911520, -10543608, -547071, -8361228, -4327717,
--26111254, -3316789, 12597676, 15636902, 3531537, -6181532, 17322676, -17805860, 19735374, -11341935,
--6359773, 2366527, -6096706, 5272609, -15706159, -21216602, -23740968, -7590281, 12326019, -4737349,
-141734, 14486388, 4040491, 2543158, -432718, 505732, -4983236, 208306, 15618649, 9614821,
-16481400, 13972602, 16534550, 11248519, -9795747, -6250251, 4079145, -1040993, -18952616, 12769475,
--3411278, -17918604, 22527640, -245350, 3681324, -618475, -8162586, -2695092, 9474698, 13697188,
-11412265, 353798, 6999186, -22958748, -3237332, -8180839, 12520367, 4315369, -6375342, -7304129,
-28942174, -8815957, -9880572, -3135326, 4689568, -7162932, -19028852, -1080721, -3237332, -10303627,
-17886928, 3635690, 6750615, -5499169, -927176, 4146791, 1102196, 5238787, 5694590, -1872606,
-3504693, -3457449, 3968550, 1478006, -3126199, -2415919, 2949032, 4082367, 1151051, -3660923,
--2978023, -3296924, -2374043, 49929, 2079838, -2996277, -3545496, 810675, -244276, -687732,
-3141769, -1500017, 4954782, 1439351, 14432164, -1272921, -1759326, -3232500, -6194417, -8096550,
-72334768, -71203576, -3646964, -77408192, -12050604, -29493004, -3663070, 18780282, -9669582, -21496312,
-33653752, -9224516, -5961415, 1017907, 10315438, -1306744, 27955942, 18461916, 11042898, -16656420,
-1018981, -11397233, -11573863, -7786239, 332323, -3640522, -3185792, -9455907, -2170032, 15392089,
-1819992, 10149008, 10152229, -934692, 13581760, 19811610, 977105, -4195110, -10490458, -12533788,
-4871567, 5326833, -10399190, 16770237, -22409528, -22688702, 2391223, -8016020, 11973832, -21044266,
-8832600, -40361956, -21551072, -32335198, -2899103, -16019154, -1548873, -9822590, -12213276, -10646150,
--1072668, 2614025, -31589484, 3474629, -7005629, 3499325, 31139, -14664092, -25720948, 17597554,
--15523622, -2859911, 15730318, -1713692, -5083094, 10376641, 13019656, -2814814, 12969191, 8463770,
-15695958, 8618926, 15884937, 7477538, -9596031, -2739116, -8466991, 284005, -7029788, 1383516,
-5684926, 8101382, 8866960, -4076998, 4061965, 2905009, 5778342, -1486596, -2355253, 2987687,
-6950331, 844498, 1535451, 7699266, 3887482, 7930120, -1247688, 289373, -930934, 3830037,
-5444408, -1085016, -9322763, 4981625, -1640141, 1891396, -2994129, 1211718, -2719251, -1431835,
-386547, -7750806, 29528, 10459319, -6672769, -7001871, 813896, 3532611, 3573413, 1184337,
--6903086, 58997280, 29798484, 14583561, -13860933, -7016366, -30294014, 7078643, 24894704, -4467303,
--5508833, 40556304, -6877317, -8620536, 20244866, 29774860, 5426155, 30358976, -7187091, 4692252,
-18067316, 20345260, 31957242, 25885232, -1022739, -11110007, 9833328, 11823508, 11218991, 13843753,
-23983634, 11861626, 30413200, -11389716, -475131, 9070971, 8490077, 25746182, 15136002, 27569932,
--19363860, -5935645, 11221676, -20961052, 17458506, 17651242, 16993574, 7344394, -21060372, -7573638,
-40877888, 10674604, 27664422, 22911504, 25193742, -4883378, 33287608, 51831664, 18097382, 4762045,
-36530308, 25218974, -13620952, -8389145, -17212082, -13832479, 15559056, 17895518, 1853815, -14752676,
-623307, -13178570, -310848, -5800890, 9043591, -31238908, -3277060, 3319473, -15600395, 12139725,
-2424509, -9674951, 8691403, -19632832, -12551505, -21772800, -7022272, -10448582, 8040179, 2515240,
--9884867, 2405182, 14602352, 4313221, -4391067, -8608725, -13220446, -5147519, 4771709, -19063750,
--8631811, -1576790, 15661061, 5205501, -6248641, 3255585, -10031970, -2796024, -2892661, -8524436,
--5238787, 14383309, -3047279, -1016834, -3241090, 3381750, 9451076, 6512781, 8131447, 19786378,
-277562, 15930034, 993748, 1576790, 10256382, 8497593, -12927852, -7720741, -803696, 2974265,
-1619203, -8053, -18720152, 9063992, -22537840, 39040180, 55475408, 32251446, -14447196, -30711700,
--11438572, 27382564, -8332774, -22921166, 41289668, -28874528, 24579024, 13856101, -32774896, -13625247,
--3621731, -53893248, 1932198, 6068252, -26144002, 52874804, -18416282, 49105436, -37081672, 5374078,
-2144263, 35887136, 52766896, -4446902, 17767742, 24946780, -29532732, 19594714, -39897560, -10999411,
-75120048, -4299799, -21036750, -4122095, -42425688, 1780801, -13533979, 47118476, 17672180, 21922050,
--7492571, -12481712, -23744190, -21734146, 5196374, 3000572, -155693, 31394064, -7904351, 5994701,
--32862942, -16879222, 21477520, -48512728, -19420768, -14573898, -16884054, 45344116, 3002719, 48994840,
-34803192, 15650861, 18474802, -10930692, -26183732, 21980032, -35531192, -21460878, 43133820, 13262859,
--26495116, -43097312, -26451630, -30645128, 24337970, -26438208, 13414793, -19066970, -2017024, -16357920,
-17156246, 10308995, 1170916, -14168023, -3018825, -9747428, 2513093, -19290846, -13845901, -7193534,
-3867081, 10953240, -805306, -7780334, -11478837, -17894982, -13336410, 11587285, 15206332, -4787278,
-10340671, 22092238, 10021769, -20227686, -6480032, -7334194, 12387759, -12272332, -8694088, -2762201,
-4228932, -16168941, -22611392, -15518791, -5788542, 9257265, -852551, 2241973, -3693672, 12622372,
-3303367, 35417376, -58496380, 62438088, -1465658, 4899484, -19877108, 50437948, 11911555, 32517734,
-12341589, -21149492, 7334731, 18105972, -30724586, 21656298, 466004, 14403173, -41045928, -3107946,
-10162429, 37965364, -15719043, -31134218, -1296543, 37759740, 19945828, -14286672, -32397476, -1500017,
-27260158, 3660386, 1962800, 7641284, 19835770, 50016504, -70294656, -11500312, 6866042, 39242044,
-8827232, -21212844, -5215701, 15018964, 35883916, -3505767, 1808181, -67368176, 19603304, 10662793,
-18474264, -48847200, 43368432, 37404872, 14105209, -22032108, -2185065, -24389508, 18388902, 32053878,
-13467407, 15065135, -2717104, 24328306, -35209068, 33567316, -9832254, -11807939, 39385924, 32521492,
-2165201, -12121471, -32249298, 23796266, 25982942, -69102264, -5413270, 39938900, 9992778, -310311,
--24684788, -10525891, 67747744, -5052492, -23072028, -2798171, -12407087, -14925548, 22578106, -18893024,
-6940667, 10408316, 13806172, -9368934, 1420024, -9513889, -11515881, -7586523, 10440529, 10529649,
--10536629, -1977833, 5254893, -8279623, 20543366, -19517942, 5192616, -3393024, -6303402, 7422777,
-33978024, 2373506, 131533, -5295695, -11869679, 204011, 18530100, 4549981, -787053, -3427921,
--8619999, 15870441, -3985193, -766652, -9154723, 9167608, -52147884, 25677462, 5065914, 16405701,
-19749334, 28663002, 10262287, 9326521, -13441100, 14863271, 2859911, 33996276, -3737695, -9921911,
-26737782, 20587388, -4314832, 1948841, -11210938, 545461, 8576513, -2424509, -6634114, 15364709,
--11922292, 1768990, 20685636, -4223027, 12004434, -20711942, -4111894, 3016678, -8464307, -3111167,
-2549063, 15193984, -3656628, -24794310, 1133871, 50149112, 10494216, -26795228, 8232916, -27318676,
--18733036, -13971529, -3715684, 32126892, -3313567, -25088514, 51651276, -55427628, 9611063, 57191784,
-6167036, 40303972, -30407832, -56697328, 18554796, 2283312, 45592152, 2741263, -25469156, 21442624,
--5586679, -4372277, -10744398, -1460826, -15791521, 8330089, 2374043, 12520903, -19316078, -16368120,
--6505265, 20540144, 26072062, -8254927, 13954349, -1683090, 21852794, 15761993, -27122182, 22209812,
--5422933, 3651796, -4453881, -8050916, 85362, 309238, 3138547, -1646583, 2479270, 2401424,
-1737314, 3583077, -8808978, 914291, 5208185, -7064685, -782758, 5264020, -4621385, 6765111,
-7148973, -9803800, 12596065, 5528697, 13040594, -2370285, 6152004, 10838887, -19380504, 258772,
-6189585, 11931419, -6803765, -4683125, -6537477, -4351876, 22156126, -10135586, -106493176, -244153856,
--97014720, -147111216, -215228864, 115087944, 31514860, 66060356, 305528928, 235443664, 137154944, 251477312,
-187502704, 31738198, 61700428, 51320564, -119776976, -102499928, -50463720, -182902800, -174986624, -67205504,
--90123984, -126987152, -53385368, -45837500, -129331664, -107922864, -9384504, -61624192, -104951824, -36230732,
-32875290, -76236744, 22398254, 112650016, -9066139, -16517907, 152976000, 122218664, -5825587, 178953568,
-207263840, 84055728, 194702144, 273553440, 162918848, 141645344, 328174144, 261996224, 196725072, 233493216,
-309586080, 110580912, 43506408, 129544264, -102869296, -294081792, -213476512, -325214912, -526698816, -471585248,
--500714272, -581980416, -593386752, -511484448, -445680704, -446705600, -314376576, -139270224, -94665376, -14501957,
-151785216, 279665184, 282040288, 350556320, 504142176, 440926720, 402742848, 557059968, 442388608, 250142112,
-364811840, 255635376, 98792840, 89697704, 117497960, 11982422, -37787660, 22746684, 2836826, -82906288,
--44630080, 7207492, -66430260, -122240672, -59158880, -83909168, -178365696, -112239304, -43852688, -133041984,
--89887760, 17794586, -42775728, -62180924, 29912300, -36818072, -146983984, -112297824, -180297360, -303956992,
--286713216, -274494048, -285630368, -250611344, -168907104, -131568272, -79719424, -15364172, 66423280, 118810072,
-181738864, 229998720, 285086496, 297256832, 314661664, 351279456, 332600672, 305599808, 288465568, 191623728,
-66986456, 6649683, -29064044, -81466936, -96795144, -83759912, -95332168, -106209712, -94211184, -94285808,
--93087512, -77677168, -76464376, -79218528, -77041512, -66199404, -55065240, -45322104, -28477780, -13413720,
-3209951, 10022306, 13147432, 9614284, 5858873, 4073777, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-2920041, 1234803, -1123671, -1386201, -2139968, 525597, 4264366, -1364189, 21475, 438624,
+7299834, -140660, 1401233, -2997887, -2079838, -742493, -1958505, -2107218, -1975148, -1343251,
+-1876364, -2482491, 2096481, 3469797, -1898912, 529892, 147640, -3933116, 118112, -85362,
+-2785286, 5270462, -2684892, 2997350, 1149978, -806917, -3015604, -2792266, 2718178, -1409286,
+-1012539, -4161823, -1052267, -386010, -1955284, 5557151, -1205275, -349503, 2331094, -405338,
+-4621922, -2379412, -4073240, -2742337, 6344204, -1781338, 7054484, -30065, -282394, -1278827,
+830002, 294742, -4179540, -4466766, 3262028, 368830, 2221035, -301185, 2585034, 1578937,
+-4049081, -28454, 1362578, 2187749, 4832, 1846299, 3376918, -4488778, 1195075, 1152125,
+-2234457, -2684, 1031866, 3218004, 2132451, -2246268, -667331, -124017, 765578, 1022202,
+791885, 840740, -577136, 435939, -1209033, -784368, -5906, 1637993, 733903, -50466,
+-105227, -1113470, 665720, -86973, -367220, -96637, 594316, 244276, 430570, 1055488,
+-338229, 463320, 1284732, 9656697, -723702, -1136019, -2439005, -5237713, -6467684, -5915244,
+690416, 5323612, 1881733, 7098507, 2458332, -3182034, 883153, -8390219, -7101729, 3339874,
+-2477123, 4693326, -409633, -3714073, -1836099, 9294309, 2096481, 3944928, -151398, 3026878,
+-1355599, -1112397, 1861868, -1250909, -4021163, -272194, 1508607, -445603, -216359, 5921686,
+3673271, -6310918, 171262, -3993783, 6704981, 3975529, 305480, -2346126, -2413235, 3099893,
+1740536, 5010616, -4602058, 7938174, 9732933, -2647311, 9483825, 13422, 4982699, 3107946,
+-1722819, 1665911, 7606387, -860067, -5089536, 4407710, 1439888, -29528, -562641, -873489,
+350577, 4450660, -2816425, 1634235, 1212255, 2369211, -3641596, 4197257, 991601, -341450,
+1344862, 633508, 430570, -150861, 967978, 2477659, -1704028, 1014686, 675384, 1057099,
+-1553704, 137439, -2508261, 466004, 1213865, -1438814, -912144, 361314, 722628, 848793,
+252866, 774705, 21475, 37044, -8361765, -6541235, 2030983, -3710315, 2615098, -4632122,
+-6577206, -6075768, 823560, -4541928, 4122095, 3024194, -5840619, -1210107, 2345589, 543850,
+2889439, -1726040, 2989834, 3702262, -5188321, 1643362, 1676648, -4156455, 2413772, 418759,
+-4917738, 3626026, 3479461, -1746441, 3803731, 543850, 3099356, 2824478, 1156957, -1844689,
+-483721, -5871221, -1795833, -2920041, 3062312, 3250753, 1256278, -9402757, 1767916, 3960497,
+-2153389, 6608881, -5433671, -7170985, 517544, -2127620, 2263985, -5119064, 9306120, -490163,
+-3154654, 915365, 85899, 5317707, -334471, -3099356, -238371, -2103460, -2901787, -3630321,
+1675037, -6563784, 640487, 242666, 1893544, 4391067, 1408212, 3125663, 4800700, -3304441,
+-620623, 1084479, -4175782, 2831457, -1449015, 2413772, 1882806, -1277753, -1018444, 3551938,
+-1192390, -3229816, 416612, -338766, -163746, -1740536, 2539400, -1987496, 937914, 972273,
+1271310, -510027, -584116, 161598, -1039919, 393526, -728534, 67646, -471373, -969589,
+1215476, -490700, 226560, -169114, 28454, 22549, 175020, -20105816, -448824, -2561411,
+13957570, 186831, 727460, 2881386, -2086280, 6970195, 1625645, -7705708, -4203163, -9019431,
+1454383, -747861, -3180423, -2699924, -3386045, -2203318, 10827613, -5166309, -2617246, -2980707,
+-8476118, -483721, -2179159, 2722473, 4013110, -1483911, -186294, 2311229, -2690260, -826781,
+-1220308, -3151969, 3215857, 6620692, -941135, -1246077, 5203353, -7190849, 4452808, -5767604,
+-11507291, -7336341, -11461657, -1853278, -6593312, -4466766, 1058173, 4393752, 2159295, 3104725,
+-1804423, 3793530, -4945655, -1210107, 3973382, -139050, 5569499, -2500745, 1625645, -4117800,
+-3151969, 2845416, -7053410, 1737851, 5069135, -6864969, 577136, -1903207, -3250753, -4541928,
+-4109210, -1438814, -1869385, 955093, 4738423, -2455648, 1413581, -4173635, -4449586, -3519726,
+1551020, 2206540, 513785, -1177895, -1362578, -1928440, 911070, -1650878, -1458141, -729608,
+-1359894, -265214, 151934, -2308008, -603980, -367220, -1759326, -536334, -834834, -95026,
+-373125, -3114388, 286152, 1165547, -654983, -1287417, -204548, 1767916, 884763, -832150,
+12785581, 69256, -7154342, -6878927, -2365990, -5022965, -1941862, -3782256, 967441, 600759,
+-5657009, -3342022, -6211597, 11737072, 4978404, 1064078, -673773, 6354404, -9521942, -172872,
+-206695, -6036577, -8011188, 7143068, 142808, 5088463, -8033737, -3540664, -2798708, 2763812,
+-284542, 3403225, -5538361, 1644973, 2273112, -6027987, -5763846, -5250598, 1256815, -1752347,
+-1605244, 5032628, -1473711, 525597, 106837, -1037235, -5711770, -3529390, -641561, -8645232,
+-5603859, -4574140, 2417530, 1606855, 3464965, -892816, 1532230, -140123, -852551, 3960497,
+-3078418, 6931004, 1011465, 2065342, -884763, -2352032, 2813741, 2108292, 5549635, -1714229,
+904628, 3313031, -1945083, 15032, -7233799, 3374771, -5556077, 3495567, -4092567, -4087198,
+-7797513, -1589675, 2044941, 802085, -1266479, 1769527, 853625, 3526705, 647466, -1152125,
+3205656, 1653562, -2728378, 620623, -2203855, 2403034, -925565, 351650, -548682, -352187,
+-1928440, -142808, 192200, 309238, -1094143, 865973, -1600949, 591095, -220654, -914828,
+-1403917, 313533, -911607, 2040110, 690953, -642635, -832687, -934692, 1744831, 1017370,
+1675574, 76773, 279173, 735513, 15052787, 14245870, 10618233, -3677566, 3850438, 5340255,
+3110093, 2985002, -5374078, -4704063, -7014756, 6121402, -6586333, -872952, -4808753, 8142185,
+-9176734, -6876780, -3460133, -1545651, -5083631, -7620346, 2086817, 318901, 374736, -9225053,
+-5107253, 2308545, 1849520, 2514703, -2547989, -3717294, 219580, 2666638, 3445638, -2660732,
+3273302, -4942434, -1358820, -11973295, 4286378, 1341104, -2117956, -2344515, -8836895, -4097936,
+1031329, -2221035, -12383464, 6547141, 2667175, -112743, -3400004, -2684355, -5284421, 1489817,
+-1925756, 3442953, -853088, -1875290, -7079717, -1462973, -782758, -3968550, 7606387, -5688684,
+21475, 4449586, -2001455, -6146098, -3475166, 5068062, 7429757, 3594888, -661425, -345208,
+3889630, -8227010, 3213709, -983548, -482647, 249108, 1656784, -594853, -427886, 275952,
+-1676111, -5025112, -1413044, -1629403, 1400159, 907849, 474057, -2032593, -1088237, -2327872,
+-2791192, -812823, -196495, 3087545, 212064, 296353, 304943, -1271310, -749472, 1339493,
+-1792075, -412854, 486942, 780073, -2122251, -126702, -275952, 1038845, -1552631, -502511,
+-955630, -1570884, -3211562, -1589138, -249645, -1515587, -96100, -1611, -250182, -1883880,
+18321256, 6164352, -2642479, -2105071, 6453725, -12330851, -2294586, 10035191, 5050882, -6950331,
+-120796, -4708358, 1967632, 7721278, 18940268, 6263673, 14761266, -5194763, -1056562, -14305999,
+4901632, -4160213, 4073777, -6256157, -288837, 622770, -2190970, 5159867, -2260764, 2471754,
+6374805, -4836133, 2902324, 8097624, -2157684, 2716030, 56908, 3260417, 4476430, 4559645,
+-24256364, 8895951, -2758980, -11376295, -1938104, 6955700, 2178622, -8789114, 4796942, 6933688,
+-14260902, 1150514, -3986267, 8422431, 1978906, 6956237, -1644436, -5012227, -9995463, 612570,
+-6022618, 18971944, 3565360, -3125126, 6385006, 788663, 6180995, -14942191, -1905355, 2293513,
+4690105, 1087164, -6923488, -1115081, 2615635, 6629282, 5671505, -4651450, 188979, 6519224,
+-220117, 3058554, -2214056, -1146219, 4650376, 423054, -291521, -650151, 297427, 2221572,
+-2097555, -985695, -208843, 1717987, 1761474, -252866, -535260, 4488778, -1371168, -808528,
+-2316061, 280247, 1295470, -1223529, 152471, 1352378, 1914482, -1653026, -666794, -2720862,
+268435, 2074469, -945967, 347892, 1049046, 1050120, 3714073, 416612, 1854889, -164819,
+-1512365, 2323577, 653909, -21703006, -23802172, -8147016, -1851131, 441845, 5066451, -10164577,
+3216394, 11990475, -6868727, 6383395, 8308078, -5780489, 188442, -2814814, 10160282, 14158360,
+-6770479, -7991861, 7131793, 685584, -6784438, 3218541, 127238, 1774895, 2039036, -3634616,
+-2632815, -15128485, -762357, -4327717, -331786, -448824, 10302553, 3052648, -18445810, 308701,
+8921184, -10099079, 2677375, 10859288, -2369748, 3821984, 239981, -2850785, -6996502, 13960791,
+11770358, -8936753, 4699768, -3324842, -441845, 4343823, -3078418, 3642669, -5506685, -632434,
+11818139, -3352759, 2518462, 5568962, -4004520, -9697499, -391379, 3326989, 1746978, -4661650,
+640487, 2611340, 4220342, 8623221, 5363878, 9489193, 5042829, 1831804, 4440996, -1560684,
+8587787, -282931, -6737193, -9110163, 1146219, 2954401, -1566589, 6806987, -3491809, -3680787,
+2734821, -861678, 756988, 342524, -4183298, -592169, -2509872, 3092377, 1416802, 2485712,
+4887673, 601832, -1692754, -7054484, -514859, 1631551, -1773285, -733366, 739271, -1575179,
+1533840, 1561221, 228707, -1668058, -1155883, 3444564, -459025, 1613834, 886374, 1110249,
+-2443837, -2627983, -1516660, 594316, 1218697, 2058363, 1563368, 1003412, 994822, 2588255,
+-648003, -23369454, 26096758, -1501628, 16796006, 1293322, -9721658, -2904472, -5622649, -6821482,
+-871878, 479963, 12157442, -1906966, 8361228, -8376260, -419833, 2087354, 1950989, 972273,
+10574209, 10536629, 3875134, 1697586, -1296006, -2025614, -569083, -1726577, -17533668, -5963025,
+8135742, 5260261, -1918240, 924492, -8274255, 4242891, -10154913, 2266132, 16248398, 1798518,
+3564286, -13437879, 7245073, 6318434, 1779727, -9001178, -3904662, -4173635, 793495, -8074539,
+8349954, 10179072, 6174016, -851477, 15247671, 5434744, 22291418, 8739185, -5883569, 18574122,
+482647, -6700686, 13474923, -2128693, 4495220, 8508330, -6031208, -5164698, 12474196, 13392782,
+7949985, -10755135, 4184372, -42950, -4920422, -8821326, 6671158, 11862700, 7211787, 17196512,
+2445984, -3710852, -3732864, -10492068, -3915400, 6609955, 1112397, -1866163, 514859, -6518687,
+-4515085, 992674, 1789391, -150861, 7192997, 5672041, 2593624, 299037, 2186675, 3432753,
+1846299, -3212099, -1212255, 1037235, -634581, -1056025, 3108483, 343061, -715112, 2475512,
+1046898, 843961, 1076426, -2094870, 689879, 6278169, -2669322, 3985730, 1968706, 239444,
+-2642479, -3026878, -1433982, 5740224, -12565464, 16683264, -4832912, -10983842, 3663607, 7245610,
+-7286949, -3707094, -15379204, 6420439, -5641977, -1874753, -14096620, -6215355, -4783520, -2433099,
+-6357089, 3301756, -2853469, -3496104, 3314641, 4631049, 8207146, 8016557, -3478387, -2934537,
+-11355357, 4447976, 220117, 7446937, 2055679, 1973538, -2571075, 2961380, -7095823, -6045167,
+3345243, 1670742, 3396246, -13887240, 4641786, 9026948, -25233, -12237972, -12735115, -9967008,
+-29372208, 4113505, -3377992, 14178224, -6952479, 11770895, 3800509, 760746, 15241228, 2274722,
+-1748589, 10899553, 4064650, -14977088, -7407745, 1733556, -4747550, -8525510, -5138929, 19191524,
+8868571, -9113384, -1083406, -5143760, -2470143, 2756832, 13611288, 190052, -3628711, 17923972,
+-6423124, -16394427, -15563888, -18546742, -3260954, 1354525, -459562, -3313567, -2237141, -7966628,
+-1528472, 2251637, -2425583, -2402497, 1589138, 1450088, -11595338, -4842576, -9073655, 370978,
+-3053722, -3012920, -4841502, -1589138, 1336272, 6995428, 107374, 8593693, 4295504, 6294812,
+710817, 2931315, -2932389, 5734318, 1074, -4234301, -6190659, 3527242, 607201, 1925756,
+-1590749, 1081258, -1923609, 1945620, -667331, 2318209, -460098, -1076426, 1572495, -382252,
+7329362, -12034498, -2995203, -3197603, -1542430, -802622, 32114544, 5288179, 11767674, -5654862,
+10283225, 20702280, -17671106, 26883810, 15961172, -7150047, 285615, 1660005, -9608916, -16163036,
+1161252, -9359271, -14401562, -6447820, 1333051, 51540, -1726040, -6468758, -1035624, -6298033,
+-388158, -7286412, -480499, 5034776, -11301133, 6262599, 9618579, -7421167, -6862821, 4958540,
+3787624, -626528, 28858422, 2563022, 19258096, -13780403, -1277753, -16713865, -12222940, 2980171,
+-12258374, -16897476, -11216307, -12829604, -2737505, -3402688, -14203457, -15488726, 20304994, 3196530,
+1341640, -2724083, 10553808, 5838471, 12716861, -1236414, 12025372, -6665789, 2797634, -22345642,
+18345416, 8851391, 1511292, -12265353, -849330, 5563057, 1242319, 2153926, 9105331, 12606266,
+-9672266, -12521440, -8171176, -1946694, -126165, 1387274, -7281580, 855772, 2195265, 5203353,
+6830609, -838056, -4080756, 7043747, 3560528, -5231807, -271120, 2553895, -3044595, -5530308,
+1094143, -1866700, -1733019, -155156, -2336462, 6458020, -6701760, 3754338, -96100, 7142531,
+-7345468, -1792075, 1352378, -1874216, -2734284, -1181653, -5797669, -6472516, -1122060, 696858,
+2022393, 2370822, -4295504, 4483409, 3487514, -2636573, 4103841, -766115, 2407329, 217433,
+2386391, -1780801, 15586973, -6415608, -5237713, 17405892, -14721537, -11235634, -2782602, -8945880,
+-1461900, -17523466, 3882114, -10805601, 8221641, 1123671, 2777233, 9952513, 2833068, 7011534,
+9651328, 9157407, 7556995, 12848395, 1489280, 8719320, 7814156, -9453760, 16237661, 3941706,
+7482907, -8830453, 12661564, 5679021, 8877697, 2211371, 3138011, -1698123, -11764989, 2932389,
+6580427, 7762080, 8487929, 1783485, -14299020, -9065602, 10203769, 5523328, 2283849, -5472325,
+7047505, -5238250, -14333380, 20914344, 12757127, 9304510, -8121783, -4031901, -10691784, -33219962,
+-1055488, -4691715, 4229469, -7809325, -8377871, -14687714, 2533494, 4624069, 18505404, -14703284,
+5883569, 204548, 8491687, -12955769, -15869367, -9703942, 10166724, 3047816, 3145527, 5361730,
+-4392678, 1741072, 11926587, 4190814, 6015639, 7574175, -3104188, -2856690, -5071283, 51540,
+5185100, 6413997, 193810, 2615635, 1260573, 978179, 4869956, -3117610, -2662880, -4367982,
+-2461553, -4518843, -186294, -6825240, -2771328, -7212324, -448287, -4371740, -1282048, -1061394,
+-2522757, 1972464, -1833414, -9245991, -1422708, 3587908, 3957276, 7470559, -1181116, -4573067,
+2088965, -1856500, -6730751, 6067178, 5147519, 4913980, 11615202, 7558069, -705985, -26699128,
+15480136, 16469052, -8049843, 14057965, 4898947, -22501870, -3898220, 29790966, -4128001, -19658066,
+-2989834, -1802276, -17064978, 12115029, 2597382, -8557722, 13054016, 8694088, 30728344, 18050136,
+580894, 2354716, 28998008, -7308424, 7420093, -11700565, -16878684, -4962298, -11430519, 2704219,
+-731218, 5928666, -769873, -1967095, -4773320, 22879828, 1220308, -17839684, -14121316, -3135326,
+-3573950, -533650, 7556995, 20892868, 13407277, 4500589, -12489765, 16276852, 29673930, -6140193,
+13550085, 12670154, 35733592, 6882685, 6921877, 10878615, 15310485, 8526047, -12084427, -11639898,
+8333311, -21716966, -13006235, -15531675, 14980846, 13095892, 9218074, -3433290, 11085847, 22962506,
+-12882218, 18314814, 18274548, -2321967, 17968532, -16631187, -7235946, -5724655, 37480568, -18101676,
+18505940, 11591580, 6924024, 5336497, -16348793, -1514513, -12817256, 14071387, 13430363, -85899,
+1161789, -6542846, 10093173, -3754875, 1181653, 3860102, 4256313, 97174, 6242735, -4042101,
+-2040646, -1533303, -3944928, 2013266, 3857418, -2951180, 1881733, 4421669, 7785702, 1291711,
+-6753299, 3087008, -7335268, 1484985, 7048042, 4577362, 7445863, -1118839, 11867532, -4476967,
+8827232, -2120640, -2542084, -1398549, 730144, 9511205, -6568616, 4634270, 53687, 4693326,
+-5294084, 1590749, 2522757, -2408403, 12593918, 5956583, 20477868, 36502928, 3943854, -3748433,
+3893925, -1930588, -5972152, 1112933, 3846143, -8878234, -11830487, 4058207, -6122476, -3333432,
+9337796, -432718, 18304076, -9576703, 17948132, 8825621, 1814624, -10359998, 3437048, 17884244,
+5229123, -9037685, 3592740, -2126009, 571768, 10518375, -14456323, -7652558, 16287590, 376883,
+-3928285, 14111115, -614717, 5014911, 3284576, -13441637, -24474334, -5168457, 8611946, 15775952,
+3498788, -12047920, 15819975, -5117454, 31994822, -16115254, 21566104, -12505871, 7789460, 18440978,
+-27084064, -28075664, -72478, -7922067, 7386270, 8999030, 1418950, -4103841, -16499117, 11245298,
+-2273648, 19990926, 9160628, 18616536, 5215701, 10848551, -4384625, 14299020, 5308043, -8508867,
+1893544, -217970, -40955196, -1193464, 7402376, 9970230, 17560510, 14766098, -4631049, 1258425,
+-2877091, 2774012, 170725, -4558571, -10716480, 4748087, -6172942, 14270029, 1873143, 2791192,
+7202660, 4155381, -4285304, 4121021, 10540387, 9066139, -2876018, -1638530, 1698123, -2189360,
+-1274532, -6445672, -944356, -13508209, -1651952, 4634807, -11038603, 7819525, -8270497, -6905234,
+2263448, -7023882, 7395397, 2772402, -2437394, 4662724, -284542, -777389, 3256122, 9916006,
+-6630893, 1539209, 1758252, 23791434, 30776662, -6739341, -1206349, 10842108, 40719512, 1120450,
+-24107652, -9663676, 4888747, 4611185, -7628936, 7762617, -5512054, 12597139, -20443508, 1047435,
+12721156, -8560407, -9225053, 1748589, -20204600, -6254546, -6584185, -32190244, -27158688, -15768972,
+11850889, 13915157, -2447595, -22921166, 2576444, 776315, -808528, 4549444, -11489574, 27436788,
+-7840463, 3460133, 30444338, -26687854, 12853227, 4464619, -9290551, 11028402, -7195144, -21649856,
+454193, 18648212, -8357470, -13619341, 7793218, 2474975, 17830556, 89657, -27464168, 2153389,
+-16233366, 27020176, -9810242, 4045859, 6664179, 3198140, -3878356, -17620104, 7347079, 18382996,
+5364951, 18967650, -27843736, -15384036, -4580046, -301185, 3010235, -21547850, 19260780, -2698313,
+-20477868, -6889128, 12971338, 12004970, -11334419, -15812459, 15575699, -12599287, -7844758, -345745,
+-1912871, -1770600, -1000727, -4642860, -852551, 7754027, -1755568, 7121056, -8203925, 5647345,
+7517804, -2070174, 4072166, 1166084, -1493575, 44560, 1048509, 13314399, 733366, -2610266,
+1176284, 2920041, -6637335, 2343442, -8496519, -727997, 9922448, -3595425, -7731478, -2922188,
+4478577, 103079, 377957, 5789616, 520228, -7834557, -3994857, 14157286, 10429254, -3458523,
+-546535, -21110302, 31081604, 905164, -53181896, 21330956, -7292855, 4165582, 5448703, 7162395,
+13080323, 4780299, -9612137, -2308008, 13172665, 8911520, -10543608, -547071, -8361228, -4327717,
+-26111254, -3316789, 12597676, 15636902, 3531537, -6181532, 17322676, -17805860, 19735374, -11341935,
+-6359773, 2366527, -6096706, 5272609, -15706159, -21216602, -23740968, -7590281, 12326019, -4737349,
+141734, 14486388, 4040491, 2543158, -432718, 505732, -4983236, 208306, 15618649, 9614821,
+16481400, 13972602, 16534550, 11248519, -9795747, -6250251, 4079145, -1040993, -18952616, 12769475,
+-3411278, -17918604, 22527640, -245350, 3681324, -618475, -8162586, -2695092, 9474698, 13697188,
+11412265, 353798, 6999186, -22958748, -3237332, -8180839, 12520367, 4315369, -6375342, -7304129,
+28942174, -8815957, -9880572, -3135326, 4689568, -7162932, -19028852, -1080721, -3237332, -10303627,
+17886928, 3635690, 6750615, -5499169, -927176, 4146791, 1102196, 5238787, 5694590, -1872606,
+3504693, -3457449, 3968550, 1478006, -3126199, -2415919, 2949032, 4082367, 1151051, -3660923,
+-2978023, -3296924, -2374043, 49929, 2079838, -2996277, -3545496, 810675, -244276, -687732,
+3141769, -1500017, 4954782, 1439351, 14432164, -1272921, -1759326, -3232500, -6194417, -8096550,
+72334768, -71203576, -3646964, -77408192, -12050604, -29493004, -3663070, 18780282, -9669582, -21496312,
+33653752, -9224516, -5961415, 1017907, 10315438, -1306744, 27955942, 18461916, 11042898, -16656420,
+1018981, -11397233, -11573863, -7786239, 332323, -3640522, -3185792, -9455907, -2170032, 15392089,
+1819992, 10149008, 10152229, -934692, 13581760, 19811610, 977105, -4195110, -10490458, -12533788,
+4871567, 5326833, -10399190, 16770237, -22409528, -22688702, 2391223, -8016020, 11973832, -21044266,
+8832600, -40361956, -21551072, -32335198, -2899103, -16019154, -1548873, -9822590, -12213276, -10646150,
+-1072668, 2614025, -31589484, 3474629, -7005629, 3499325, 31139, -14664092, -25720948, 17597554,
+-15523622, -2859911, 15730318, -1713692, -5083094, 10376641, 13019656, -2814814, 12969191, 8463770,
+15695958, 8618926, 15884937, 7477538, -9596031, -2739116, -8466991, 284005, -7029788, 1383516,
+5684926, 8101382, 8866960, -4076998, 4061965, 2905009, 5778342, -1486596, -2355253, 2987687,
+6950331, 844498, 1535451, 7699266, 3887482, 7930120, -1247688, 289373, -930934, 3830037,
+5444408, -1085016, -9322763, 4981625, -1640141, 1891396, -2994129, 1211718, -2719251, -1431835,
+386547, -7750806, 29528, 10459319, -6672769, -7001871, 813896, 3532611, 3573413, 1184337,
+-6903086, 58997280, 29798484, 14583561, -13860933, -7016366, -30294014, 7078643, 24894704, -4467303,
+-5508833, 40556304, -6877317, -8620536, 20244866, 29774860, 5426155, 30358976, -7187091, 4692252,
+18067316, 20345260, 31957242, 25885232, -1022739, -11110007, 9833328, 11823508, 11218991, 13843753,
+23983634, 11861626, 30413200, -11389716, -475131, 9070971, 8490077, 25746182, 15136002, 27569932,
+-19363860, -5935645, 11221676, -20961052, 17458506, 17651242, 16993574, 7344394, -21060372, -7573638,
+40877888, 10674604, 27664422, 22911504, 25193742, -4883378, 33287608, 51831664, 18097382, 4762045,
+36530308, 25218974, -13620952, -8389145, -17212082, -13832479, 15559056, 17895518, 1853815, -14752676,
+623307, -13178570, -310848, -5800890, 9043591, -31238908, -3277060, 3319473, -15600395, 12139725,
+2424509, -9674951, 8691403, -19632832, -12551505, -21772800, -7022272, -10448582, 8040179, 2515240,
+-9884867, 2405182, 14602352, 4313221, -4391067, -8608725, -13220446, -5147519, 4771709, -19063750,
+-8631811, -1576790, 15661061, 5205501, -6248641, 3255585, -10031970, -2796024, -2892661, -8524436,
+-5238787, 14383309, -3047279, -1016834, -3241090, 3381750, 9451076, 6512781, 8131447, 19786378,
+277562, 15930034, 993748, 1576790, 10256382, 8497593, -12927852, -7720741, -803696, 2974265,
+1619203, -8053, -18720152, 9063992, -22537840, 39040180, 55475408, 32251446, -14447196, -30711700,
+-11438572, 27382564, -8332774, -22921166, 41289668, -28874528, 24579024, 13856101, -32774896, -13625247,
+-3621731, -53893248, 1932198, 6068252, -26144002, 52874804, -18416282, 49105436, -37081672, 5374078,
+2144263, 35887136, 52766896, -4446902, 17767742, 24946780, -29532732, 19594714, -39897560, -10999411,
+75120048, -4299799, -21036750, -4122095, -42425688, 1780801, -13533979, 47118476, 17672180, 21922050,
+-7492571, -12481712, -23744190, -21734146, 5196374, 3000572, -155693, 31394064, -7904351, 5994701,
+-32862942, -16879222, 21477520, -48512728, -19420768, -14573898, -16884054, 45344116, 3002719, 48994840,
+34803192, 15650861, 18474802, -10930692, -26183732, 21980032, -35531192, -21460878, 43133820, 13262859,
+-26495116, -43097312, -26451630, -30645128, 24337970, -26438208, 13414793, -19066970, -2017024, -16357920,
+17156246, 10308995, 1170916, -14168023, -3018825, -9747428, 2513093, -19290846, -13845901, -7193534,
+3867081, 10953240, -805306, -7780334, -11478837, -17894982, -13336410, 11587285, 15206332, -4787278,
+10340671, 22092238, 10021769, -20227686, -6480032, -7334194, 12387759, -12272332, -8694088, -2762201,
+4228932, -16168941, -22611392, -15518791, -5788542, 9257265, -852551, 2241973, -3693672, 12622372,
+3303367, 35417376, -58496380, 62438088, -1465658, 4899484, -19877108, 50437948, 11911555, 32517734,
+12341589, -21149492, 7334731, 18105972, -30724586, 21656298, 466004, 14403173, -41045928, -3107946,
+10162429, 37965364, -15719043, -31134218, -1296543, 37759740, 19945828, -14286672, -32397476, -1500017,
+27260158, 3660386, 1962800, 7641284, 19835770, 50016504, -70294656, -11500312, 6866042, 39242044,
+8827232, -21212844, -5215701, 15018964, 35883916, -3505767, 1808181, -67368176, 19603304, 10662793,
+18474264, -48847200, 43368432, 37404872, 14105209, -22032108, -2185065, -24389508, 18388902, 32053878,
+13467407, 15065135, -2717104, 24328306, -35209068, 33567316, -9832254, -11807939, 39385924, 32521492,
+2165201, -12121471, -32249298, 23796266, 25982942, -69102264, -5413270, 39938900, 9992778, -310311,
+-24684788, -10525891, 67747744, -5052492, -23072028, -2798171, -12407087, -14925548, 22578106, -18893024,
+6940667, 10408316, 13806172, -9368934, 1420024, -9513889, -11515881, -7586523, 10440529, 10529649,
+-10536629, -1977833, 5254893, -8279623, 20543366, -19517942, 5192616, -3393024, -6303402, 7422777,
+33978024, 2373506, 131533, -5295695, -11869679, 204011, 18530100, 4549981, -787053, -3427921,
+-8619999, 15870441, -3985193, -766652, -9154723, 9167608, -52147884, 25677462, 5065914, 16405701,
+19749334, 28663002, 10262287, 9326521, -13441100, 14863271, 2859911, 33996276, -3737695, -9921911,
+26737782, 20587388, -4314832, 1948841, -11210938, 545461, 8576513, -2424509, -6634114, 15364709,
+-11922292, 1768990, 20685636, -4223027, 12004434, -20711942, -4111894, 3016678, -8464307, -3111167,
+2549063, 15193984, -3656628, -24794310, 1133871, 50149112, 10494216, -26795228, 8232916, -27318676,
+-18733036, -13971529, -3715684, 32126892, -3313567, -25088514, 51651276, -55427628, 9611063, 57191784,
+6167036, 40303972, -30407832, -56697328, 18554796, 2283312, 45592152, 2741263, -25469156, 21442624,
+-5586679, -4372277, -10744398, -1460826, -15791521, 8330089, 2374043, 12520903, -19316078, -16368120,
+-6505265, 20540144, 26072062, -8254927, 13954349, -1683090, 21852794, 15761993, -27122182, 22209812,
+-5422933, 3651796, -4453881, -8050916, 85362, 309238, 3138547, -1646583, 2479270, 2401424,
+1737314, 3583077, -8808978, 914291, 5208185, -7064685, -782758, 5264020, -4621385, 6765111,
+7148973, -9803800, 12596065, 5528697, 13040594, -2370285, 6152004, 10838887, -19380504, 258772,
+6189585, 11931419, -6803765, -4683125, -6537477, -4351876, 22156126, -10135586, -106493176, -244153856,
+-97014720, -147111216, -215228864, 115087944, 31514860, 66060356, 305528928, 235443664, 137154944, 251477312,
+187502704, 31738198, 61700428, 51320564, -119776976, -102499928, -50463720, -182902800, -174986624, -67205504,
+-90123984, -126987152, -53385368, -45837500, -129331664, -107922864, -9384504, -61624192, -104951824, -36230732,
+32875290, -76236744, 22398254, 112650016, -9066139, -16517907, 152976000, 122218664, -5825587, 178953568,
+207263840, 84055728, 194702144, 273553440, 162918848, 141645344, 328174144, 261996224, 196725072, 233493216,
+309586080, 110580912, 43506408, 129544264, -102869296, -294081792, -213476512, -325214912, -526698816, -471585248,
+-500714272, -581980416, -593386752, -511484448, -445680704, -446705600, -314376576, -139270224, -94665376, -14501957,
+151785216, 279665184, 282040288, 350556320, 504142176, 440926720, 402742848, 557059968, 442388608, 250142112,
+364811840, 255635376, 98792840, 89697704, 117497960, 11982422, -37787660, 22746684, 2836826, -82906288,
+-44630080, 7207492, -66430260, -122240672, -59158880, -83909168, -178365696, -112239304, -43852688, -133041984,
+-89887760, 17794586, -42775728, -62180924, 29912300, -36818072, -146983984, -112297824, -180297360, -303956992,
+-286713216, -274494048, -285630368, -250611344, -168907104, -131568272, -79719424, -15364172, 66423280, 118810072,
+181738864, 229998720, 285086496, 297256832, 314661664, 351279456, 332600672, 305599808, 288465568, 191623728,
+66986456, 6649683, -29064044, -81466936, -96795144, -83759912, -95332168, -106209712, -94211184, -94285808,
+-93087512, -77677168, -76464376, -79218528, -77041512, -66199404, -55065240, -45322104, -28477780, -13413720,
+3209951, 10022306, 13147432, 9614284, 5858873, 4073777, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-8562554,
-5064840, -6513318, 790274, -2760590, -862752, 2532957, -4039417, -7337952, -1877438, 619549,
--4208531, -2426657, 3556770, -2112587, 1644436, -9188009, -791348, 6214281, 3308199, -10279467,
--3543348, -2697776, -2734284, 3470334, -1503775, -5354751, -3367791, -3828427, -3900904, 6772090,
-2113124, 4361540, -2831994, 5729487, 5203353, 3711389, -2066953, -4863514, -3825742, 403727,
-964757, 7794829, 2758443, 1483374, -3677566, 847182, 331249, 891743, 3083787, 1830193,
--5298916, -4500052, -2331630, 2849174, 657667, -996969, -5664525, -1729261, 2213519, 2563559,
--2289755, -862752, 119722, 2714956, -592169, -2993592, -3758, 433255, -3868155, 8221641,
-509491, -5576478, -16643, -857383, 5268851, 426812, 3562675, 4934381, 1839857, -333397,
-228170, -1787780, -1178969, -1187022, 3121368, -1005559, -417686, -1409286, 1067836, 383863,
--621697, -122943, -833224, 171262, -134755, 643171, 621160, 1054951, -5645198, -5108327,
-5800890, 5320928, -4297115, 3205656, 324807, 1654636, -14120779, 5468030, -2095407, -9640591,
--12573517, 344671, 9098351, 555661, 5900748, 226560, -11370926, -3919158, 1316408, 3986267,
--1998234, -965831, -4784057, 642635, -864362, 8048232, 4092567, 1716913, 1449015, 2193118,
-2798171, 7339026, 4449586, -6467684, -542777, 1514513, 1574642, -7694434, 2513630, -2282238,
--4864588, -1370632, -198105, 5277978, 1363115, -2936684, 5345624, 8326868, -1753957, -3147674,
-2020782, -587874, 4558034, 4645007, 3640522, -5554467, -4224101, 3997004, -1673964, -1389422,
--4255776, 469225, -6325413, 3780645, 3411278, 4472672, 1159641, 5196911, -5604396, -3521336,
-7303592, 388158, 2716567, 8616241, 3340948, 853625, -3453691, 5056787, 621697, -2556043,
-1459215, -6081674, 188979, -635655, 923418, 1640141, -678068, -2706903, -1469953, -436476,
-1344325, 1248225, 438087, -744640, 761820, 1723893, 322659, -564251, 7201050, 649077,
-2796024, -6038187, -5127117, 2956548, -1412507, -2199560, -2798708, -2615635, 2196339, -6988449,
--4002373, -8633421, -10377178, -1908576, 8660265, 5590974, -3481071, -958851, -1189706, -1998770,
--7471096, 5405217, -1866700, -1907502, 484794, 3538516, -1674500, 328028, -247497, 5117991,
--4705674, 5134097, 2805151, 6152541, -2082522, 4763656, 2121177, -2920578, 4290673, -2887292,
-2474438, 4565550, -3423089, 4794257, -2843268, -2286533, -712428, -1397475, 2415382, -1375463,
--3624416, 1477469, -3145527, 708670, 438087, 508417, 7213398, 1416802, -1648194, 57445,
--2946348, -4105452, 2138357, -976031, 6885370, 7030862, 2851858, -1930051, -1075889, -32749,
--2757906, -3180960, 3544422, 5576478, 185220, -587337, 3425237, 3706557, -476205, 1321239,
-1190243, -2663417, 2548526, -468688, 3655017, -1792075, -694711, -119722, -1516124, -147640,
-2662880, -563714, 807991, 798327, -1878511, 608275, -343597, -360240, 760746, 715649,
--1203128, 1391569, -464930, -570157, 99858, -134755, -227096, -1077500, -816044, 13702019,
--5815923, 5609764, -7005092, -5894306, 15569, -1646046, -1500554, 1897839, -2953864, 5917391,
-5774584, 4944044, -1500017, -660888, -2594160, -6344741, 978179, -3817689, -714038, 679679,
--2130304, 3592203, 1354525, -447750, -10458782, -4377109, -6594923, 231928, -4317516, -6638946,
--2911451, -3675418, -4057134, 6578280, -5276368, 4632122, 396211, -1886564, 2596845, 2221035,
--4729833, -1309965, 91805, 5076115, -490163, -6978248, -8837969, -9211094, 2388002, -3375308,
-198105, -745177, 1326608, 3091303, 5107790, -3547643, -1872606, 1665911, 1755568, 637803,
-6408091, -3602941, 3962644, -7380365, 14431090, 1757179, -1536525, 2788508, 1381906, 2742337,
--4010963, -724239, 1097364, -462246, -861678, -7299834, -2418604, -4966593, -1469953, -596464,
--3564823, -3505767, 2597382, 3011309, 928787, 578747, -326418, 2542084, 1511292, 2921115,
--1462436, 243203, 100395, 2683281, -1072668, -174483, -153545, 285615, -2124398, 510564,
--1533303, 765041, 1091995, -526670, -1784022, 344671, 570157, -569620, -602369, -1948305,
-528818, -239981, -967978, 1207960, 1425392, -192200, -6662568, 1022202, 1291175, 492311,
--1013075, -3969624, 2436857, 1960116, -6014028, 7165616, -8830453, 10998874, -1028108, 3702262,
-1661079, -176631, -1133871, 2300492, 10310069, 11560978, -2161979, 2120103, -1343251, -1587527,
-1570347, 2491618, 7939247, -954557, 2436320, -3947612, 4372814, 1008780, 6269042, 3063386,
-5874979, -8358007, 3590056, 3113315, -2601677, -38118, 6374805, 77309, 541166, 1976222,
-3896609, -1256278, -501974, 12261058, 5856725, 1132798, 1158031, -2501282, 5590974, -7327751,
--10766409, -13038984, -759136, 6933151, -165356, 3482145, 9352291, 3728569, -1601486, -3222836,
-5007932, -913217, 12012487, 5428302, 1821066, 1722819, -6484864, 1438277, 4977330, -2461016,
--7307350, 1341640, 2691871, -270583, -2508261, -888521, 1297617, -2339684, 1429687, 1411434,
-1296006, -425739, 1488743, -2295660, -2137820, -671089, -1340030, 798864, -2145873, 1316408,
-2199023, 1462436, 1670205, 1673427, 559956, 1090385, -2976412, -2506114, -904628, -1293322,
--1532230, -281320, 1060857, 606664, -61203, 1940252, 1075889, -99858, 2437931, 1530082,
--15933792, 1724966, -1189706, 10956462, -8174397, 4817880, -16872242, 6664179, -1577327, -8591008,
--9440338, -6598681, 5060009, 3957276, 12836047, 1719598, 4287451, 12288975, -2114735, -8908299,
-1358820, -6859063, 1700807, 10024991, 1879585, -2784213, -1171989, -1893007, 2961380, 3897146,
--804770, 2612951, 5174899, -3194382, 1652489, -6025839, -449361, -7546795, -1167694, 1058173,
--3570729, 5612986, 3835406, 4787815, 9511742, 634045, 11507291, 8822937, 4272419, -5946382,
-13193603, 5698348, 2333241, 11575474, -1248225, 287763, 979789, 3861713, -2390686, -3342558,
--7895224, -7626788, -6231998, 99858, -4914517, 10162429, -6092411, 4223027, 6338835, -3519189,
-338229, -2871186, -1686312, -9919764, -11381663, 5245229, -1975685, -3787088, -3368865, 1010391,
-1342177, 807991, 2239289, -3942780, 9324911, 695785, 2809446, -1869921, 524523, 2815888,
--4536559, 1574106, 179315, 1614371, 2115808, 32749, 1653026, 3229279, 9664, 964757,
-2295123, 2579128, 3297998, -89657, 565862, -1637456, -469762, 220654, -788127, -2334852,
-169114, -634045, -1033477, 317828, 13381507, 539555, 192200, -1204202, -2579128, 2429341,
-585189, -6781754, -8699993, -11800960, -6170258, -12348568, -7842074, -4186519, -9131637, -5762773,
--3978214, -4730907, -12355010, 8524973, 5348845, 345208, 4503810, 2087354, -3413425, 15406048,
-970126, -5281736, -2765959, -10390600, -4459787, 11481521, 579284, -9575093, -9582072, 1432909,
--9699647, 3148748, 3429532, -7538742, 319975, 2400887, 557272, 11303817, 3394635, -5110474,
-1157494, -6133750, 5707475, 846109, 2537789, -13743358, 9521942, -4698158, 3978214, 357556,
-1861332, 2301566, 373125, -3973919, -299574, -5341329, 28991, -10823854, -42413, -11679090,
-15469398, -2586107, 9848360, -7187091, -3363496, -1509681, -7443179, -4122632, 6054294, -172336,
--213675, 4519380, 5820755, 975494, 9494025, 8249559, 11414949, 6116571, 2440078, 1438277,
-5193153, 2812130, 1740536, 2154463, 1191317, 2590939, -696858, 4201552, 745177, -214212,
--852014, 3286187, 1336809, 2355253, 1176284, -1464047, 1126892, 1332514, 1094143, -2446521,
-4798016, 2631741, -439160, -3587372, -374736, -489089, -2596308, 1015760, 501437, 2778844,
--2208687, -4973036, -6855842, -35433, 5032091, -13160854, -10737, -5692979, -4558571, 9308268,
--15178951, -14338748, 3729642, 19103478, 484258, 1810866, 1464047, -2918967, 10458782, 10154376,
-5864241, 2876018, -2761127, -15540265, 9202504, 71941, -12451110, -4022237, 2880313, -635655,
-98247, 1265405, -3003256, -12261595, -696858, 494458, -2246805, -5127117, 3670587, 10622528,
--13720273, 8524973, -5148592, -2589865, 807454, 6762963, 22275312, -14418205, -3639985, 1407139,
--1437203, -2645163, 727997, -5532455, 1913945, -4997195, 15311022, 5260798, 2860985, 4219806,
--3247532, -892279, 8099772, -1282585, 3514894, -6750615, 11751031, 514859, -8335995, 16441135,
--10492068, 7565585, 2147484, 3727495, 11951820, -4776541, 5082557, -590558, 12348, 1433982,
--812823, -8083129, -4289599, -527744, -3581466, -1275605, -1957431, -4961761, -5074504, -3810173,
-2347200, -4345970, 2486786, -1167694, -190052, -3814468, -2616172, -2816425, 2225330, -5263483,
-514859, 500364, 3177739, 4983773, -1970853, -958315, -4507568, -3847217, 255551, -3385508,
-936840, -634581, -3003256, 47782, -920197, 1351304, 1783485, -1262720, 16307991, 1283122,
-4259534, 4844723, -2718178, -9373766, -7347079, 1136556, 16314433, 9251360, 2018098, -14571213,
-2113124, -8010114, 60130, 16321413, 15700790, 7933879, 10617159, -9558987, -19801946, -10366977,
--14267881, 7927436, -128312, -2405719, -40802, -10799695, -3194919, 3351148, -2016487, -4099010,
--3980361, 11566347, -732292, 3152506, -3270081, 7585449, 1622424, -4365835, -9176198, -7054484,
-20940650, -894427, -4714264, 6691559, -11938935, 3755949, -6825240, -20885352, -4668630, -2712272,
-6342056, 2428267, 5574331, 1769527, 8286603, 315143, 594853, 4581120, -20397336, -3221226,
--5463736, -1453846, 2004676, 11729556, 12975633, 4672925, -3367254, -8928163, -11710765, -3935801,
--6880001, 1482301, -3409667, -3655554, -8056822, 12093554, 8739185, 3544959, 11144366, -2644626,
-4466229, 6822019, -4316442, 4064113, -2770791, 891206, 4082903, -1232656, -2661269, -1116155,
--1456531, -1054951, -64961, 275415, 4048007, 163209, 509491, 1235877, -2202245, -6179384,
-280247, -1439888, -770947, -1117765, -3604551, -412317, 1245004, 5497558, 4551592, -2550137,
-668404, 3617436, -731218, 833224, -1264868, 830002, 3506304, 437013, 3844533, -23621784,
--15449534, -3588982, -5636071, 12045236, 8269423, -1992865, 20753818, -21005074, -4908611, -7936563,
-22169010, 10628433, -7303592, 8164196, 3098819, -8647917, 15307800, -16910360, 8353175, -7794829,
-1309428, 1829119, -5651103, 14781130, -10408316, 9072045, -4340602, -21777632, -3620658, 15192910,
--9214315, -14872398, 194347, -1864553, -22244710, -4168803, 8914205, 3773129, 11851425, 8710731,
--2519535, 21378736, -5124970, -6596533, -10525891, -9804337, -9480067, 5862094, 7981660, -6894497,
--7772280, 2553358, -6742025, 8959839, -2474975, 4859756, -3646964, -5568962, -4272956, -130997,
--12590697, 3401077, 9073655, -2129767, 3922916, 5447629, 6442451, 11613055, -8318815, 3731790,
-9059697, -1174137, -19302656, -20551418, 2261837, -1957968, 1526861, -7524246, -3122978, 1510218,
--7441031, -13505525, -4124242, 10187126, 8269960, -4063576, -1642825, 3134253, 2798708, -1609002,
--3275986, 244276, -427349, -5308043, -1961190, 5644124, -1615982, 4536023, 826781, -1407139,
--2768643, 3646427, 3600793, 4220342, 517544, -2359011, 2460480, -6316287, -3779571, 3127810,
-1472100, 2686502, 4942434, -2503966, 1039382, 1947231, 2421825, 476205, -2866354, -4134443,
-1879585, -2241973, -1359357, 17055852, -10550587, -26788784, 249108, 19338628, 24639154, 4725001,
--8906688, -6634114, 2647847, -4226248, -3743601, 10921028, 11052025, -5201743, 10668162, -13208635,
--1509681, 9801652, -4580583, 11837467, 5619965, -1457605, -15941308, 6310381, -3637301, -3651796,
-945430, -1030792, -1590749, 22212498, -10717017, 11423002, 19006304, 13276281, 7011534, 423054,
--12368432, 12669080, -6875706, 12081206, -6599218, 2934000, -13012140, -2340220, -12293270, -7956427,
-1986422, -11352135, -3090766, -3828427, -373125, 10478110, -12009802, -10216117, -3702799, -5778879,
--2360085, -10120554, -13245679, -16489990, 1781338, 13163538, -804770, -8015483, 1480153, 2979097,
-10384694, -11104638, -6390375, -3391414, -196495, 7946763, 228707, 2394444, -7718056, -3020973,
-4168266, 15881178, 7107097, 11054709, 12664248, 16587701, 6461779, -1945620, -5635534, 4256850,
-5155572, 7492571, 3231426, 987306, 169114, 10204842, 3710852, -3359201, 957241, 5869073,
-2415382, 1668595, -3461744, -3227668, -2360085, -4612795, 514322, 5017059, 4673998, 1335198,
--2480881, 6876243, 3954591, 8622684, 4505421, 610422, 5726802, 441845, -4107063, 6714645,
-142808, -476205, -2224256, 1645509, -1324461, 269509, 5739150, -45168560, -21471078, 15068893,
--36881956, -25567940, -1646583, -15049565, -10315438, 11253888, 12876312, 3941169, -2360622, 4659503,
-36840620, -4518306, 5900748, 14176076, 16169478, -16802448, -8706972, -7960722, 13611288, 14839649,
-7471096, 2726231, 13917305, -4092567, -6950868, 9756555, 18832894, 1332514, 6099391, 19129784,
-14137959, 11502996, -8567923, 3616899, 5821828, -46171, -289373, 12273943, -4000762, -204011,
--1213865, 8192113, 337692, -13447543, -8960912, 2681670, -18210124, 13807783, -4017942, 30522722,
-1253057, 16732656, 3359738, -748398, -9808632, -491774, 3955128, -12933757, -6606197, -15107011,
--1864016, 7695508, 10557030, -4610648, -24506010, 8868034, -3855270, 8347806, -8755828, -10546292,
-7756711, -15935402, -12119861, 23666344, 406411, 10878615, -2180770, -10300942, 2903935, 13918915,
-3455838, 11058467, -17929340, -938450, -1161789, -3028489, -15403900, 15047955, -8943733, 1055488,
--1702418, 1767916, -5672041, -617938, 3235721, 4568772, -3762928, 9830643, -2372970, -3224447,
--5727339, -5008469, -4932233, 4688494, -1854889, -3563749, -1397475, 1188095, -3734474, 6844568,
--1997697, 7753490, -4833986, 3248606, 1282048, 3050501, 5141613, 953483, 18333604, -8333847,
--21175800, 9108552, -11052561, 4655208, -266825, -10529112, 19515258, -26058640, -1062468, -31460636,
-782221, 25466472, 35609036, 16865262, -6099391, 16483011, -1235877, -2254321, 1782948, -2760590,
-8766028, -1050656, -16646756, 1008780, -23138600, 8186745, -7152731, -5126581, 15538118, -277562,
--17790292, -19863686, 4626217, 2789045, -9906342, -8221105, 14918032, -21532818, -105227, -4308926,
-7625715, -5745593, -4669167, -17213156, -7326141, -7571491, -3210488, 12492449, -14748918, 5363878,
--1788854, -2507187, 1948305, 5418101, -24974162, -2602750, 3398930, -2149631, 9255655, -7812546,
--11029476, -4975183, -27946816, -12271258, -12177306, 648003, 11948062, 18037788, -8490613, 13666586,
--23300734, 37436008, 2575907, -6642704, 19563040, -23116050, 19634980, 8841727, -5233418, 479963,
-6561637, 594316, 3149822, 17948668, -7627862, 7704098, -4123706, 5597416, 8929774, 8859444,
-10744934, -3614215, 9062918, 2218888, 1375463, -1414655, -12020540, 547071, -8523363, 4028143,
-5565204, -1757715, -1317481, 1704565, 1240172, 6121939, 2803540, -4259534, 6557342, 24696,
-794569, 8183524, 5544803, 3346853, 14681272, -11919071, 119722, 5487895, 46708, -9327058,
-2329483, -5876589, -5642514, 22841172, 1219234, -16447577, -446140, -2556043, 10551661, 6930467,
--10066330, 11456825, 131533, -25838524, -28133646, -2759517, -8530342, 6929393, -1284195, -9977746,
--25366076, -22127672, 11952357, -18836652, -4290673, 1122597, 5862094, 1340567, 17950816, 1450088,
--9193914, 12020003, -1683627, 1708323, 11076184, -14753750, -1042603, 3131568, -15076946, 9041980,
-12384538, 5381057, 11012296, 5741298, 17098264, 4639102, 12427488, -17616346, -5560909, -2850248,
--23656142, -172872, -2624762, 9826348, -1652489, 11271605, -1959042, -13730474, -9390946, -748398,
--21882322, 9522479, 532039, -4277788, 12684649, 8040716, 10525891, 10956462, 3297461, -1357210,
-9184788, -29610042, 8904541, 3689377, 13176423, -5263483, -20943872, 13115756, -3217468, 22566296,
--33394444, -11898670, -23404350, 15942919, -6866579, -21485038, -23977192, -15784542, -7135015, 7596187,
-5945309, -6589554, -6852621, -3595961, -484794, -7271917, -2799782, 12178917, 1843615, -1188632,
-3535832, 2647847, 2192044, 6605123, -5181341, -6823630, -215285, -11840688, -42413, -4166655,
--1726577, -7646653, -2095944, -10428181, -9359807, 11793443, -6629819, -435402, 3941169, 5677947,
--1028108, 9900436, -8267812, -2669322, 4076461, -9715753, -2680060, 11366631, 4070019, 2547989,
--3898757, -5869073, 4386772, 15659988, 14518600, 53112104, 40129492, 5439576, 11634530, 3374234,
-30830886, 854162, 15005542, -13998372, 36513664, -14457397, 33112588, -1480153, 21149492, -2451890,
-14923401, -14837501, 3570192, 7471096, -8149164, -2647847, -4384088, -3411278, 9866614, 255014,
--8537858, -11722039, -17737678, -22516366, -10854993, -3771518, 119185, 7118909, -19008452, 8077760,
--10471130, -16091095, -3375308, -11747809, 5357435, -2837363, -24733642, -5843840, -12589086, -14853608,
--15662672, 14239427, 18943490, -39637180, 8971650, 3568581, 11113765, 3976603, -5034776, 24051280,
-13471702, 12609487, -33239826, -14810658, -471373, 8238821, 27456652, 1083942, -3755412, 1386738,
-23251342, 20978768, -19866908, 22447110, 1617592, 5086315, -3832722, 13198435, -28304372, -9838696,
-29078002, -4409858, -1943473, -11155641, 19369766, 12754442, -10096394, -16931298, -2987150, -665183,
-1666984, 319975, -3696356, -15776489, -5483600, 12421582, 16130287, 10110890, -9012989, -2296197,
--2688113, -7592429, 2414845, 2633889, 7413114, -1573569, -5366562, 4758287, 1732482, 2898029,
-14580340, 2066416, -4164508, -5497558, 2434710, 5339718, 11328513, 2371359, -11195369, -5856725,
--8432631, 3387119, 4157528, -9105868, -19662360, 6407018, -1704565, -3211025, -6943889, -11969537,
-14304389, -6045704, 12428562, 19485730, -22603876, 6658810, -13034152, 36959804, -22325240, 20762408,
-19112068, -7656316, -35065724, -20521890, -2575370, -9532680, -1316944, -16225850, -25623238, -33993056,
--19607062, -22727356, 9405442, -19478750, 7712688, 2005213, -2492692, -2264522, -16098074, -5166846,
--16530792, 4489852, 14227079, 18733574, 56371, -5616207, -16965120, -4251481, 1367947, -10191957,
-2538326, -13952738, -9209484, -2232309, -13876502, 10473278, -12291660, -35685808, 1015223, -1368484,
--11996917, 14821932, 11521250, 16927540, 6294275, 13262322, 27071178, 4336307, -27545236, -6484864,
-12505334, -6258304, -22952842, 12385075, 17631914, 5782100, -442919, -30888332, 27040578, -1569811,
-22010096, -18795850, 22291418, 55151676, -5228586, -1850594, -27393838, 14317273, -22346714, 18319646,
-9109626, -12377559, -3043521, -30181808, 6561100, -16574816, -79457, 11263015, 11200738, -663036,
--8076149, -6933151, 7885023, 20003274, -10178536, -1828582, 2766496, -9074729, -2920578, -3031710,
-3899294, -1223529, 8153459, -4134443, -10072772, -5636608, 2584497, 7423314, -9979893, -3234647,
--512175, 1085553, 6785512, 1308891, -2787434, 2315524, -16697759, -9589051, -1361505, -1732482,
-3034931, 736050, 968515, -529892, -3179350, 8114804, -804233, 5994164, -762894, -2016487,
--6390912, -4358855, -43503188, 14866492, -57081724, 37812356, 13590350, -9700721, 40301824, -3801583,
--20410758, 35742716, -13659070, -1881733, 7626252, 12540231, 33066954, 1402307, -2596308, 23343684,
-9976135, 19611358, 24033026, 17811766, 1738388, 12465606, 2064269, -1195075, -13004087, 8441758,
-12669080, 3086471, -642635, -14101451, 6908455, -13208635, 16076063, 15794742, 2861522, 18651432,
--11332271, 12329240, 19424526, 12352863, -25900800, -27939836, 33022930, -3143916, 20710870, 31976032,
-902480, 74088, -3175055, 6321655, 18603114, 17570174, 1986959, 14601815, 168577, -16572668,
--20574504, -30677878, 705985, -12435004, 608812, 17448304, 16474958, -28699508, 2639258, 11180874,
--25028922, 4218195, 35241280, -15177341, -17313014, 18849000, -20047834, 4685273, -5502390, 36797668,
--10506027, 22736484, -11082089, 19110456, -1604707, 7111392, 15447924, -24008868, -7124277, 9163313,
--15719043, 11676405, -14086419, -3948149, -7868380, -7348152, 1229434, -3948149, -6347962, 3849365,
-11134166, -5505611, 3191161, 3988414, -9281424, 1673427, 1502702, -2445447, -6500970, -2775623,
--4972499, -15440944, -5918465, 3302830, -20055350, 7327751, -10174778, 7810935, -4505958, -1975148,
--13998909, -7441031, 388158, 3913789, -6060199, -13878650, 2527052, 926639, 7657927, 3175592,
-235686, 8994198, 7451232, 741956, 4134980, -19990388, 4418448, -23153632, 47499652, 11634530,
--25421912, 9633612, -5933498, -22623740, -26669600, -27048094, 7957501, -1351841, 23801098, 35346508,
-16949552, 8551280, -4334159, 11728482, 1069984, -44521632, 19464254, 46213848, -30325154, -31825170,
--27540404, -38896296, 28056336, -38300372, 17164300, 228707, -4861366, -270046, -12510703, -14829985,
-18920942, -39402028, 40403832, 23207318, 5290863, -25933550, -19666118, -17185238, 3539053, 6736656,
--16854526, -2348810, -12471511, 27849104, 12540768, -5064304, -942745, 11432666, 2474975, 13053479,
--22899692, -9062381, -2289755, -4073240, -21312702, -14958297, 12487617, -40365712, -23906862, 3034395,
-47035260, 22715008, -14485314, -1001801, -35965520, 17403744, 54569172, 1897302, -11889006, -8257612,
--25961466, 33652680, -10966662, -13050795, -1270774, 19935090, 12403866, -17352742, -15759846, -5611912,
-17448304, -4722317, 5005785, -1400696, -14115947, -4555350, 22138946, 12739410, 1671279, -10366977,
--1808718, -1590212, 17223892, 14136885, 6920803, 6377490, -20781200, 7872138, 7257958, -3098282,
-4510253, -3235721, -3118146, -18060874, -2089502, -929324, -2729989, -5763309, 4665408, 6622303,
-3299072, -21230024, -18451180, -8997420, -242666, 1302449, -21604222, 7652558, 26739392, 5443871,
--7656316, 526134, 3985193, 108985, -37044, -22217866, -15334644, -44321916, 9574556, -32682016,
--48816060, 11355357, 26852136, 6536940, 7144141, -20718922, -25885768, -6799470, -38308960, -18880676,
-9895068, -32085554, 50302656, 9711995, -12469364, 10735271, -24237038, -47831440, -16098611, -36607616,
-5706401, 10562398, -13480829, -26068840, -13257490, -16124918, 13914083, -19154480, -7041062, -2580202,
-21473762, -15706159, -2942053, -7404524, 5418638, 8901320, 1549410, -6561100, 22157200, 28980828,
-18514530, -15013058, -12299176, -42909944, -23907398, -9900436, 11244224, 71781792, -12376485, 725313,
-31920734, -3027415, 13543642, -16478179, -17115444, -13892072, 15098958, -40718436, 216896, -5509906,
--607201, 34997540, -15534360, 53043920, 4618164, 40164924, -51446192, -15537044, 14774151, -1154273,
--22369800, -18911814, 41601592, -43105364, -35529580, 51007568, 8932995, 44268228, -17715666, -3095061,
--3158949, 14151380, 6040335, -4214437, 15052250, 15005542, -884226, 6981470, 4711043, 1457068,
--5315022, -9710921, -2234994, -6475200, -8529268, 7748121, 4539244, -7327214, 5103495, -15831786,
--1586454, 10934450, 19315542, -1698123, -12227235, -1070521, -13909788, 7795366, 13276818, -9422085,
--7646116, 7324530, 8857296, -19969988, 7087770, 729608, 12932683, -8576513, -8687108, -241592,
-4112431, 5879274, -22292490, 3479461, -9429064, 17550846, -6140730, -2648384, -44131324, 20992726,
-32353452, -23495618, -19319300, -6614787, -21219822, -25556130, 6799470, 7539278, 19821274, 858993,
-17316234, 30840012, 32170378, 21351894, 7367480, -23620172, 2292439, 12263742, 16255377, 25020868,
-232465, -12967043, -18882286, -7130183, 25349434, -10424422, 9946607, 22047678, 2131915, 43330852,
-4952634, -27666032, 23860690, 23605140, 6761889, 10177462, 21856552, 3500398, 1804423, -25386478,
-54788212, -58460412, -43036108, -49867256, -16571058, 10324028, -29379186, 15066745, 32642826, -9692667,
-3135326, 28851980, 9142375, -31241056, -10925323, -24174224, -3547643, 1814624, 1508070, 27902792,
-27331562, -6286222, -7013145, 17536888, 42126648, 7347616, 34637836, -29272350, 30775052, -13522705,
-10129680, -6152004, -19807852, -13683229, -3235721, 14003204, 8445516, 34478924, -44704168, 22717692,
--17769354, -10984916, -8821863, 16540456, -7995619, -1522566, 3447785, -17851494, 11049340, -8722542,
--761283, -13544716, 4032974, -2720862, 428960, -15256261, 2093260, -1376000, 2871723, -1468879,
--16846472, 6681359, -9682467, -8612483, -4131222, 12447889, 14176613, 15921981, -13848048, 27352500,
--20811264, -6180995, 1333051, -2196339, -15452755, -8147016, -1123671, -11375758, 3010235, -903554,
--755377, -1317481, -11545409, 1496796, -2158758, -24957518, -50216756, -50544248, -36580236, 7511898,
-93910536, 23737210, -12948790, -28388124, -67853504, -95444912, 21553756, 39535712, 47460464, -9982578,
-4117263, -27984934, -48688288, 14042932, 8844948, 15847356, 2294050, -40832256, -12472585, 9980430,
--8205535, -1608465, -7721815, 53209812, 46726560, 31507880, -2878702, -22835804, -38783556, -25672630,
--23206246, 36347772, -6017786, 26598196, 12032888, 12458090, -16345572, -88406536, -60863980, 30061012,
--47890496, -16342351, 102009232, 70140040, 52707300, -39944268, 28872380, -27664422, 2032056, 2030983,
-14812805, 43272868, 76263584, -29189672, -2709588, -50273664, -40613748, -66535484, 7232725, -2739652,
--71636832, -17155174, 46163384, 17257178, 32225140, 43673376, 78692392, -57303992, -34386044, 4562329,
--46768972, -6016713, 26175678, 61300996, 31173946, 9584220, -37382320, -35842040, 24224690, -10193568,
-36138392, 31774168, -8553427, 14567992, 5865852, -6090264, -11994770, -6975027, -4509179, 10809896,
-3153580, -251792, 3781719, -1094680, 5240934, 169114, 22886270, 18822158, 29824790, 5398237,
--16342351, -34441344, -28130962, 11494406, 26805964, 30706332, -3809636, -19563040, -79255032, -40711460,
--37497212, 940598, 4059818, 8144869, -238371, 5950141, -8933532, 4295, -13240847, -11832635,
-16818018, 14847165, 8651138, 8740258, 4418448, 2033667, 23262616, -37721088, -124932008, -116255640,
--66723928, -72566160, -18080738, 120370752, 61170536, 123842160, 109904456, 172254496, 123032560, 105828528,
-17095044, -45919104, -103823320, -166393472, -141293680, -142310528, -74359840, -35695472, -8359080, 1201517,
-4119411, 29395830, 39298412, 99050000, 60176248, 116887536, 76168024, 100197296, 36280124, 96815544,
-33664492, 23692114, 22945326, -5750425, -27140972, -65525096, -75586592, -140383152, -96135328, -177893792,
--140714944, -215911760, -127972848, -101573296, -24471114, 59337656, 31598074, 5333276, 59273768, 126608120,
-169169632, 221744864, 264361136, 226169760, 165264976, 206039776, 170046880, 95297272, 42902964, -10572062,
--70841192, -164007616, -194742944, -260862352, -336744224, -389762912, -351673536, -309996768, -220571808, -150638992,
-46195056, 145269760, 177118016, 272665984, 227720784, 284360128, 298912544, 293163744, 338026272, 221853312,
-57685704, -55870008, -108266464, -134084048, -86757800, -125577328, -107594840, -125680408, -170003392, -172029552,
--200196480, -118600688, -92260192, -78731584, -43933756, -2707977, 11866458, 48595408, 132080448, 139081776,
-197581376, 171901776, 225963056, 166077792, 111059800, 114491480, 43718472, -30105036, -48995912, -217961008,
--280880672, -261649952, -230791136, -135231344, -106036840, -58089432, 5114233, 58809912, 89801320, 121946472,
-145718576, 173156432, 164531072, 155421984, 136944496, 76417128, -304406, -38872676, -90344104, -94649272,
--80968720, -66227320, -68890736, -69854960, -54808076, -39465380, -23320062, -9865003, -8927090, -6482717,
-1961190, -6857989, -7970386, 9463424, 22465900, 24951076, 16435229, 11529303, 19292456, 23252416,
-17068200, 15530602, 14453102, 9055402, 6154152, 5211943, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+5064840, -6513318, 790274, -2760590, -862752, 2532957, -4039417, -7337952, -1877438, 619549,
+-4208531, -2426657, 3556770, -2112587, 1644436, -9188009, -791348, 6214281, 3308199, -10279467,
+-3543348, -2697776, -2734284, 3470334, -1503775, -5354751, -3367791, -3828427, -3900904, 6772090,
+2113124, 4361540, -2831994, 5729487, 5203353, 3711389, -2066953, -4863514, -3825742, 403727,
+964757, 7794829, 2758443, 1483374, -3677566, 847182, 331249, 891743, 3083787, 1830193,
+-5298916, -4500052, -2331630, 2849174, 657667, -996969, -5664525, -1729261, 2213519, 2563559,
+-2289755, -862752, 119722, 2714956, -592169, -2993592, -3758, 433255, -3868155, 8221641,
+509491, -5576478, -16643, -857383, 5268851, 426812, 3562675, 4934381, 1839857, -333397,
+228170, -1787780, -1178969, -1187022, 3121368, -1005559, -417686, -1409286, 1067836, 383863,
+-621697, -122943, -833224, 171262, -134755, 643171, 621160, 1054951, -5645198, -5108327,
+5800890, 5320928, -4297115, 3205656, 324807, 1654636, -14120779, 5468030, -2095407, -9640591,
+-12573517, 344671, 9098351, 555661, 5900748, 226560, -11370926, -3919158, 1316408, 3986267,
+-1998234, -965831, -4784057, 642635, -864362, 8048232, 4092567, 1716913, 1449015, 2193118,
+2798171, 7339026, 4449586, -6467684, -542777, 1514513, 1574642, -7694434, 2513630, -2282238,
+-4864588, -1370632, -198105, 5277978, 1363115, -2936684, 5345624, 8326868, -1753957, -3147674,
+2020782, -587874, 4558034, 4645007, 3640522, -5554467, -4224101, 3997004, -1673964, -1389422,
+-4255776, 469225, -6325413, 3780645, 3411278, 4472672, 1159641, 5196911, -5604396, -3521336,
+7303592, 388158, 2716567, 8616241, 3340948, 853625, -3453691, 5056787, 621697, -2556043,
+1459215, -6081674, 188979, -635655, 923418, 1640141, -678068, -2706903, -1469953, -436476,
+1344325, 1248225, 438087, -744640, 761820, 1723893, 322659, -564251, 7201050, 649077,
+2796024, -6038187, -5127117, 2956548, -1412507, -2199560, -2798708, -2615635, 2196339, -6988449,
+-4002373, -8633421, -10377178, -1908576, 8660265, 5590974, -3481071, -958851, -1189706, -1998770,
+-7471096, 5405217, -1866700, -1907502, 484794, 3538516, -1674500, 328028, -247497, 5117991,
+-4705674, 5134097, 2805151, 6152541, -2082522, 4763656, 2121177, -2920578, 4290673, -2887292,
+2474438, 4565550, -3423089, 4794257, -2843268, -2286533, -712428, -1397475, 2415382, -1375463,
+-3624416, 1477469, -3145527, 708670, 438087, 508417, 7213398, 1416802, -1648194, 57445,
+-2946348, -4105452, 2138357, -976031, 6885370, 7030862, 2851858, -1930051, -1075889, -32749,
+-2757906, -3180960, 3544422, 5576478, 185220, -587337, 3425237, 3706557, -476205, 1321239,
+1190243, -2663417, 2548526, -468688, 3655017, -1792075, -694711, -119722, -1516124, -147640,
+2662880, -563714, 807991, 798327, -1878511, 608275, -343597, -360240, 760746, 715649,
+-1203128, 1391569, -464930, -570157, 99858, -134755, -227096, -1077500, -816044, 13702019,
+-5815923, 5609764, -7005092, -5894306, 15569, -1646046, -1500554, 1897839, -2953864, 5917391,
+5774584, 4944044, -1500017, -660888, -2594160, -6344741, 978179, -3817689, -714038, 679679,
+-2130304, 3592203, 1354525, -447750, -10458782, -4377109, -6594923, 231928, -4317516, -6638946,
+-2911451, -3675418, -4057134, 6578280, -5276368, 4632122, 396211, -1886564, 2596845, 2221035,
+-4729833, -1309965, 91805, 5076115, -490163, -6978248, -8837969, -9211094, 2388002, -3375308,
+198105, -745177, 1326608, 3091303, 5107790, -3547643, -1872606, 1665911, 1755568, 637803,
+6408091, -3602941, 3962644, -7380365, 14431090, 1757179, -1536525, 2788508, 1381906, 2742337,
+-4010963, -724239, 1097364, -462246, -861678, -7299834, -2418604, -4966593, -1469953, -596464,
+-3564823, -3505767, 2597382, 3011309, 928787, 578747, -326418, 2542084, 1511292, 2921115,
+-1462436, 243203, 100395, 2683281, -1072668, -174483, -153545, 285615, -2124398, 510564,
+-1533303, 765041, 1091995, -526670, -1784022, 344671, 570157, -569620, -602369, -1948305,
+528818, -239981, -967978, 1207960, 1425392, -192200, -6662568, 1022202, 1291175, 492311,
+-1013075, -3969624, 2436857, 1960116, -6014028, 7165616, -8830453, 10998874, -1028108, 3702262,
+1661079, -176631, -1133871, 2300492, 10310069, 11560978, -2161979, 2120103, -1343251, -1587527,
+1570347, 2491618, 7939247, -954557, 2436320, -3947612, 4372814, 1008780, 6269042, 3063386,
+5874979, -8358007, 3590056, 3113315, -2601677, -38118, 6374805, 77309, 541166, 1976222,
+3896609, -1256278, -501974, 12261058, 5856725, 1132798, 1158031, -2501282, 5590974, -7327751,
+-10766409, -13038984, -759136, 6933151, -165356, 3482145, 9352291, 3728569, -1601486, -3222836,
+5007932, -913217, 12012487, 5428302, 1821066, 1722819, -6484864, 1438277, 4977330, -2461016,
+-7307350, 1341640, 2691871, -270583, -2508261, -888521, 1297617, -2339684, 1429687, 1411434,
+1296006, -425739, 1488743, -2295660, -2137820, -671089, -1340030, 798864, -2145873, 1316408,
+2199023, 1462436, 1670205, 1673427, 559956, 1090385, -2976412, -2506114, -904628, -1293322,
+-1532230, -281320, 1060857, 606664, -61203, 1940252, 1075889, -99858, 2437931, 1530082,
+-15933792, 1724966, -1189706, 10956462, -8174397, 4817880, -16872242, 6664179, -1577327, -8591008,
+-9440338, -6598681, 5060009, 3957276, 12836047, 1719598, 4287451, 12288975, -2114735, -8908299,
+1358820, -6859063, 1700807, 10024991, 1879585, -2784213, -1171989, -1893007, 2961380, 3897146,
+-804770, 2612951, 5174899, -3194382, 1652489, -6025839, -449361, -7546795, -1167694, 1058173,
+-3570729, 5612986, 3835406, 4787815, 9511742, 634045, 11507291, 8822937, 4272419, -5946382,
+13193603, 5698348, 2333241, 11575474, -1248225, 287763, 979789, 3861713, -2390686, -3342558,
+-7895224, -7626788, -6231998, 99858, -4914517, 10162429, -6092411, 4223027, 6338835, -3519189,
+338229, -2871186, -1686312, -9919764, -11381663, 5245229, -1975685, -3787088, -3368865, 1010391,
+1342177, 807991, 2239289, -3942780, 9324911, 695785, 2809446, -1869921, 524523, 2815888,
+-4536559, 1574106, 179315, 1614371, 2115808, 32749, 1653026, 3229279, 9664, 964757,
+2295123, 2579128, 3297998, -89657, 565862, -1637456, -469762, 220654, -788127, -2334852,
+169114, -634045, -1033477, 317828, 13381507, 539555, 192200, -1204202, -2579128, 2429341,
+585189, -6781754, -8699993, -11800960, -6170258, -12348568, -7842074, -4186519, -9131637, -5762773,
+-3978214, -4730907, -12355010, 8524973, 5348845, 345208, 4503810, 2087354, -3413425, 15406048,
+970126, -5281736, -2765959, -10390600, -4459787, 11481521, 579284, -9575093, -9582072, 1432909,
+-9699647, 3148748, 3429532, -7538742, 319975, 2400887, 557272, 11303817, 3394635, -5110474,
+1157494, -6133750, 5707475, 846109, 2537789, -13743358, 9521942, -4698158, 3978214, 357556,
+1861332, 2301566, 373125, -3973919, -299574, -5341329, 28991, -10823854, -42413, -11679090,
+15469398, -2586107, 9848360, -7187091, -3363496, -1509681, -7443179, -4122632, 6054294, -172336,
+-213675, 4519380, 5820755, 975494, 9494025, 8249559, 11414949, 6116571, 2440078, 1438277,
+5193153, 2812130, 1740536, 2154463, 1191317, 2590939, -696858, 4201552, 745177, -214212,
+-852014, 3286187, 1336809, 2355253, 1176284, -1464047, 1126892, 1332514, 1094143, -2446521,
+4798016, 2631741, -439160, -3587372, -374736, -489089, -2596308, 1015760, 501437, 2778844,
+-2208687, -4973036, -6855842, -35433, 5032091, -13160854, -10737, -5692979, -4558571, 9308268,
+-15178951, -14338748, 3729642, 19103478, 484258, 1810866, 1464047, -2918967, 10458782, 10154376,
+5864241, 2876018, -2761127, -15540265, 9202504, 71941, -12451110, -4022237, 2880313, -635655,
+98247, 1265405, -3003256, -12261595, -696858, 494458, -2246805, -5127117, 3670587, 10622528,
+-13720273, 8524973, -5148592, -2589865, 807454, 6762963, 22275312, -14418205, -3639985, 1407139,
+-1437203, -2645163, 727997, -5532455, 1913945, -4997195, 15311022, 5260798, 2860985, 4219806,
+-3247532, -892279, 8099772, -1282585, 3514894, -6750615, 11751031, 514859, -8335995, 16441135,
+-10492068, 7565585, 2147484, 3727495, 11951820, -4776541, 5082557, -590558, 12348, 1433982,
+-812823, -8083129, -4289599, -527744, -3581466, -1275605, -1957431, -4961761, -5074504, -3810173,
+2347200, -4345970, 2486786, -1167694, -190052, -3814468, -2616172, -2816425, 2225330, -5263483,
+514859, 500364, 3177739, 4983773, -1970853, -958315, -4507568, -3847217, 255551, -3385508,
+936840, -634581, -3003256, 47782, -920197, 1351304, 1783485, -1262720, 16307991, 1283122,
+4259534, 4844723, -2718178, -9373766, -7347079, 1136556, 16314433, 9251360, 2018098, -14571213,
+2113124, -8010114, 60130, 16321413, 15700790, 7933879, 10617159, -9558987, -19801946, -10366977,
+-14267881, 7927436, -128312, -2405719, -40802, -10799695, -3194919, 3351148, -2016487, -4099010,
+-3980361, 11566347, -732292, 3152506, -3270081, 7585449, 1622424, -4365835, -9176198, -7054484,
+20940650, -894427, -4714264, 6691559, -11938935, 3755949, -6825240, -20885352, -4668630, -2712272,
+6342056, 2428267, 5574331, 1769527, 8286603, 315143, 594853, 4581120, -20397336, -3221226,
+-5463736, -1453846, 2004676, 11729556, 12975633, 4672925, -3367254, -8928163, -11710765, -3935801,
+-6880001, 1482301, -3409667, -3655554, -8056822, 12093554, 8739185, 3544959, 11144366, -2644626,
+4466229, 6822019, -4316442, 4064113, -2770791, 891206, 4082903, -1232656, -2661269, -1116155,
+-1456531, -1054951, -64961, 275415, 4048007, 163209, 509491, 1235877, -2202245, -6179384,
+280247, -1439888, -770947, -1117765, -3604551, -412317, 1245004, 5497558, 4551592, -2550137,
+668404, 3617436, -731218, 833224, -1264868, 830002, 3506304, 437013, 3844533, -23621784,
+-15449534, -3588982, -5636071, 12045236, 8269423, -1992865, 20753818, -21005074, -4908611, -7936563,
+22169010, 10628433, -7303592, 8164196, 3098819, -8647917, 15307800, -16910360, 8353175, -7794829,
+1309428, 1829119, -5651103, 14781130, -10408316, 9072045, -4340602, -21777632, -3620658, 15192910,
+-9214315, -14872398, 194347, -1864553, -22244710, -4168803, 8914205, 3773129, 11851425, 8710731,
+-2519535, 21378736, -5124970, -6596533, -10525891, -9804337, -9480067, 5862094, 7981660, -6894497,
+-7772280, 2553358, -6742025, 8959839, -2474975, 4859756, -3646964, -5568962, -4272956, -130997,
+-12590697, 3401077, 9073655, -2129767, 3922916, 5447629, 6442451, 11613055, -8318815, 3731790,
+9059697, -1174137, -19302656, -20551418, 2261837, -1957968, 1526861, -7524246, -3122978, 1510218,
+-7441031, -13505525, -4124242, 10187126, 8269960, -4063576, -1642825, 3134253, 2798708, -1609002,
+-3275986, 244276, -427349, -5308043, -1961190, 5644124, -1615982, 4536023, 826781, -1407139,
+-2768643, 3646427, 3600793, 4220342, 517544, -2359011, 2460480, -6316287, -3779571, 3127810,
+1472100, 2686502, 4942434, -2503966, 1039382, 1947231, 2421825, 476205, -2866354, -4134443,
+1879585, -2241973, -1359357, 17055852, -10550587, -26788784, 249108, 19338628, 24639154, 4725001,
+-8906688, -6634114, 2647847, -4226248, -3743601, 10921028, 11052025, -5201743, 10668162, -13208635,
+-1509681, 9801652, -4580583, 11837467, 5619965, -1457605, -15941308, 6310381, -3637301, -3651796,
+945430, -1030792, -1590749, 22212498, -10717017, 11423002, 19006304, 13276281, 7011534, 423054,
+-12368432, 12669080, -6875706, 12081206, -6599218, 2934000, -13012140, -2340220, -12293270, -7956427,
+1986422, -11352135, -3090766, -3828427, -373125, 10478110, -12009802, -10216117, -3702799, -5778879,
+-2360085, -10120554, -13245679, -16489990, 1781338, 13163538, -804770, -8015483, 1480153, 2979097,
+10384694, -11104638, -6390375, -3391414, -196495, 7946763, 228707, 2394444, -7718056, -3020973,
+4168266, 15881178, 7107097, 11054709, 12664248, 16587701, 6461779, -1945620, -5635534, 4256850,
+5155572, 7492571, 3231426, 987306, 169114, 10204842, 3710852, -3359201, 957241, 5869073,
+2415382, 1668595, -3461744, -3227668, -2360085, -4612795, 514322, 5017059, 4673998, 1335198,
+-2480881, 6876243, 3954591, 8622684, 4505421, 610422, 5726802, 441845, -4107063, 6714645,
+142808, -476205, -2224256, 1645509, -1324461, 269509, 5739150, -45168560, -21471078, 15068893,
+-36881956, -25567940, -1646583, -15049565, -10315438, 11253888, 12876312, 3941169, -2360622, 4659503,
+36840620, -4518306, 5900748, 14176076, 16169478, -16802448, -8706972, -7960722, 13611288, 14839649,
+7471096, 2726231, 13917305, -4092567, -6950868, 9756555, 18832894, 1332514, 6099391, 19129784,
+14137959, 11502996, -8567923, 3616899, 5821828, -46171, -289373, 12273943, -4000762, -204011,
+-1213865, 8192113, 337692, -13447543, -8960912, 2681670, -18210124, 13807783, -4017942, 30522722,
+1253057, 16732656, 3359738, -748398, -9808632, -491774, 3955128, -12933757, -6606197, -15107011,
+-1864016, 7695508, 10557030, -4610648, -24506010, 8868034, -3855270, 8347806, -8755828, -10546292,
+7756711, -15935402, -12119861, 23666344, 406411, 10878615, -2180770, -10300942, 2903935, 13918915,
+3455838, 11058467, -17929340, -938450, -1161789, -3028489, -15403900, 15047955, -8943733, 1055488,
+-1702418, 1767916, -5672041, -617938, 3235721, 4568772, -3762928, 9830643, -2372970, -3224447,
+-5727339, -5008469, -4932233, 4688494, -1854889, -3563749, -1397475, 1188095, -3734474, 6844568,
+-1997697, 7753490, -4833986, 3248606, 1282048, 3050501, 5141613, 953483, 18333604, -8333847,
+-21175800, 9108552, -11052561, 4655208, -266825, -10529112, 19515258, -26058640, -1062468, -31460636,
+782221, 25466472, 35609036, 16865262, -6099391, 16483011, -1235877, -2254321, 1782948, -2760590,
+8766028, -1050656, -16646756, 1008780, -23138600, 8186745, -7152731, -5126581, 15538118, -277562,
+-17790292, -19863686, 4626217, 2789045, -9906342, -8221105, 14918032, -21532818, -105227, -4308926,
+7625715, -5745593, -4669167, -17213156, -7326141, -7571491, -3210488, 12492449, -14748918, 5363878,
+-1788854, -2507187, 1948305, 5418101, -24974162, -2602750, 3398930, -2149631, 9255655, -7812546,
+-11029476, -4975183, -27946816, -12271258, -12177306, 648003, 11948062, 18037788, -8490613, 13666586,
+-23300734, 37436008, 2575907, -6642704, 19563040, -23116050, 19634980, 8841727, -5233418, 479963,
+6561637, 594316, 3149822, 17948668, -7627862, 7704098, -4123706, 5597416, 8929774, 8859444,
+10744934, -3614215, 9062918, 2218888, 1375463, -1414655, -12020540, 547071, -8523363, 4028143,
+5565204, -1757715, -1317481, 1704565, 1240172, 6121939, 2803540, -4259534, 6557342, 24696,
+794569, 8183524, 5544803, 3346853, 14681272, -11919071, 119722, 5487895, 46708, -9327058,
+2329483, -5876589, -5642514, 22841172, 1219234, -16447577, -446140, -2556043, 10551661, 6930467,
+-10066330, 11456825, 131533, -25838524, -28133646, -2759517, -8530342, 6929393, -1284195, -9977746,
+-25366076, -22127672, 11952357, -18836652, -4290673, 1122597, 5862094, 1340567, 17950816, 1450088,
+-9193914, 12020003, -1683627, 1708323, 11076184, -14753750, -1042603, 3131568, -15076946, 9041980,
+12384538, 5381057, 11012296, 5741298, 17098264, 4639102, 12427488, -17616346, -5560909, -2850248,
+-23656142, -172872, -2624762, 9826348, -1652489, 11271605, -1959042, -13730474, -9390946, -748398,
+-21882322, 9522479, 532039, -4277788, 12684649, 8040716, 10525891, 10956462, 3297461, -1357210,
+9184788, -29610042, 8904541, 3689377, 13176423, -5263483, -20943872, 13115756, -3217468, 22566296,
+-33394444, -11898670, -23404350, 15942919, -6866579, -21485038, -23977192, -15784542, -7135015, 7596187,
+5945309, -6589554, -6852621, -3595961, -484794, -7271917, -2799782, 12178917, 1843615, -1188632,
+3535832, 2647847, 2192044, 6605123, -5181341, -6823630, -215285, -11840688, -42413, -4166655,
+-1726577, -7646653, -2095944, -10428181, -9359807, 11793443, -6629819, -435402, 3941169, 5677947,
+-1028108, 9900436, -8267812, -2669322, 4076461, -9715753, -2680060, 11366631, 4070019, 2547989,
+-3898757, -5869073, 4386772, 15659988, 14518600, 53112104, 40129492, 5439576, 11634530, 3374234,
+30830886, 854162, 15005542, -13998372, 36513664, -14457397, 33112588, -1480153, 21149492, -2451890,
+14923401, -14837501, 3570192, 7471096, -8149164, -2647847, -4384088, -3411278, 9866614, 255014,
+-8537858, -11722039, -17737678, -22516366, -10854993, -3771518, 119185, 7118909, -19008452, 8077760,
+-10471130, -16091095, -3375308, -11747809, 5357435, -2837363, -24733642, -5843840, -12589086, -14853608,
+-15662672, 14239427, 18943490, -39637180, 8971650, 3568581, 11113765, 3976603, -5034776, 24051280,
+13471702, 12609487, -33239826, -14810658, -471373, 8238821, 27456652, 1083942, -3755412, 1386738,
+23251342, 20978768, -19866908, 22447110, 1617592, 5086315, -3832722, 13198435, -28304372, -9838696,
+29078002, -4409858, -1943473, -11155641, 19369766, 12754442, -10096394, -16931298, -2987150, -665183,
+1666984, 319975, -3696356, -15776489, -5483600, 12421582, 16130287, 10110890, -9012989, -2296197,
+-2688113, -7592429, 2414845, 2633889, 7413114, -1573569, -5366562, 4758287, 1732482, 2898029,
+14580340, 2066416, -4164508, -5497558, 2434710, 5339718, 11328513, 2371359, -11195369, -5856725,
+-8432631, 3387119, 4157528, -9105868, -19662360, 6407018, -1704565, -3211025, -6943889, -11969537,
+14304389, -6045704, 12428562, 19485730, -22603876, 6658810, -13034152, 36959804, -22325240, 20762408,
+19112068, -7656316, -35065724, -20521890, -2575370, -9532680, -1316944, -16225850, -25623238, -33993056,
+-19607062, -22727356, 9405442, -19478750, 7712688, 2005213, -2492692, -2264522, -16098074, -5166846,
+-16530792, 4489852, 14227079, 18733574, 56371, -5616207, -16965120, -4251481, 1367947, -10191957,
+2538326, -13952738, -9209484, -2232309, -13876502, 10473278, -12291660, -35685808, 1015223, -1368484,
+-11996917, 14821932, 11521250, 16927540, 6294275, 13262322, 27071178, 4336307, -27545236, -6484864,
+12505334, -6258304, -22952842, 12385075, 17631914, 5782100, -442919, -30888332, 27040578, -1569811,
+22010096, -18795850, 22291418, 55151676, -5228586, -1850594, -27393838, 14317273, -22346714, 18319646,
+9109626, -12377559, -3043521, -30181808, 6561100, -16574816, -79457, 11263015, 11200738, -663036,
+-8076149, -6933151, 7885023, 20003274, -10178536, -1828582, 2766496, -9074729, -2920578, -3031710,
+3899294, -1223529, 8153459, -4134443, -10072772, -5636608, 2584497, 7423314, -9979893, -3234647,
+-512175, 1085553, 6785512, 1308891, -2787434, 2315524, -16697759, -9589051, -1361505, -1732482,
+3034931, 736050, 968515, -529892, -3179350, 8114804, -804233, 5994164, -762894, -2016487,
+-6390912, -4358855, -43503188, 14866492, -57081724, 37812356, 13590350, -9700721, 40301824, -3801583,
+-20410758, 35742716, -13659070, -1881733, 7626252, 12540231, 33066954, 1402307, -2596308, 23343684,
+9976135, 19611358, 24033026, 17811766, 1738388, 12465606, 2064269, -1195075, -13004087, 8441758,
+12669080, 3086471, -642635, -14101451, 6908455, -13208635, 16076063, 15794742, 2861522, 18651432,
+-11332271, 12329240, 19424526, 12352863, -25900800, -27939836, 33022930, -3143916, 20710870, 31976032,
+902480, 74088, -3175055, 6321655, 18603114, 17570174, 1986959, 14601815, 168577, -16572668,
+-20574504, -30677878, 705985, -12435004, 608812, 17448304, 16474958, -28699508, 2639258, 11180874,
+-25028922, 4218195, 35241280, -15177341, -17313014, 18849000, -20047834, 4685273, -5502390, 36797668,
+-10506027, 22736484, -11082089, 19110456, -1604707, 7111392, 15447924, -24008868, -7124277, 9163313,
+-15719043, 11676405, -14086419, -3948149, -7868380, -7348152, 1229434, -3948149, -6347962, 3849365,
+11134166, -5505611, 3191161, 3988414, -9281424, 1673427, 1502702, -2445447, -6500970, -2775623,
+-4972499, -15440944, -5918465, 3302830, -20055350, 7327751, -10174778, 7810935, -4505958, -1975148,
+-13998909, -7441031, 388158, 3913789, -6060199, -13878650, 2527052, 926639, 7657927, 3175592,
+235686, 8994198, 7451232, 741956, 4134980, -19990388, 4418448, -23153632, 47499652, 11634530,
+-25421912, 9633612, -5933498, -22623740, -26669600, -27048094, 7957501, -1351841, 23801098, 35346508,
+16949552, 8551280, -4334159, 11728482, 1069984, -44521632, 19464254, 46213848, -30325154, -31825170,
+-27540404, -38896296, 28056336, -38300372, 17164300, 228707, -4861366, -270046, -12510703, -14829985,
+18920942, -39402028, 40403832, 23207318, 5290863, -25933550, -19666118, -17185238, 3539053, 6736656,
+-16854526, -2348810, -12471511, 27849104, 12540768, -5064304, -942745, 11432666, 2474975, 13053479,
+-22899692, -9062381, -2289755, -4073240, -21312702, -14958297, 12487617, -40365712, -23906862, 3034395,
+47035260, 22715008, -14485314, -1001801, -35965520, 17403744, 54569172, 1897302, -11889006, -8257612,
+-25961466, 33652680, -10966662, -13050795, -1270774, 19935090, 12403866, -17352742, -15759846, -5611912,
+17448304, -4722317, 5005785, -1400696, -14115947, -4555350, 22138946, 12739410, 1671279, -10366977,
+-1808718, -1590212, 17223892, 14136885, 6920803, 6377490, -20781200, 7872138, 7257958, -3098282,
+4510253, -3235721, -3118146, -18060874, -2089502, -929324, -2729989, -5763309, 4665408, 6622303,
+3299072, -21230024, -18451180, -8997420, -242666, 1302449, -21604222, 7652558, 26739392, 5443871,
+-7656316, 526134, 3985193, 108985, -37044, -22217866, -15334644, -44321916, 9574556, -32682016,
+-48816060, 11355357, 26852136, 6536940, 7144141, -20718922, -25885768, -6799470, -38308960, -18880676,
+9895068, -32085554, 50302656, 9711995, -12469364, 10735271, -24237038, -47831440, -16098611, -36607616,
+5706401, 10562398, -13480829, -26068840, -13257490, -16124918, 13914083, -19154480, -7041062, -2580202,
+21473762, -15706159, -2942053, -7404524, 5418638, 8901320, 1549410, -6561100, 22157200, 28980828,
+18514530, -15013058, -12299176, -42909944, -23907398, -9900436, 11244224, 71781792, -12376485, 725313,
+31920734, -3027415, 13543642, -16478179, -17115444, -13892072, 15098958, -40718436, 216896, -5509906,
+-607201, 34997540, -15534360, 53043920, 4618164, 40164924, -51446192, -15537044, 14774151, -1154273,
+-22369800, -18911814, 41601592, -43105364, -35529580, 51007568, 8932995, 44268228, -17715666, -3095061,
+-3158949, 14151380, 6040335, -4214437, 15052250, 15005542, -884226, 6981470, 4711043, 1457068,
+-5315022, -9710921, -2234994, -6475200, -8529268, 7748121, 4539244, -7327214, 5103495, -15831786,
+-1586454, 10934450, 19315542, -1698123, -12227235, -1070521, -13909788, 7795366, 13276818, -9422085,
+-7646116, 7324530, 8857296, -19969988, 7087770, 729608, 12932683, -8576513, -8687108, -241592,
+4112431, 5879274, -22292490, 3479461, -9429064, 17550846, -6140730, -2648384, -44131324, 20992726,
+32353452, -23495618, -19319300, -6614787, -21219822, -25556130, 6799470, 7539278, 19821274, 858993,
+17316234, 30840012, 32170378, 21351894, 7367480, -23620172, 2292439, 12263742, 16255377, 25020868,
+232465, -12967043, -18882286, -7130183, 25349434, -10424422, 9946607, 22047678, 2131915, 43330852,
+4952634, -27666032, 23860690, 23605140, 6761889, 10177462, 21856552, 3500398, 1804423, -25386478,
+54788212, -58460412, -43036108, -49867256, -16571058, 10324028, -29379186, 15066745, 32642826, -9692667,
+3135326, 28851980, 9142375, -31241056, -10925323, -24174224, -3547643, 1814624, 1508070, 27902792,
+27331562, -6286222, -7013145, 17536888, 42126648, 7347616, 34637836, -29272350, 30775052, -13522705,
+10129680, -6152004, -19807852, -13683229, -3235721, 14003204, 8445516, 34478924, -44704168, 22717692,
+-17769354, -10984916, -8821863, 16540456, -7995619, -1522566, 3447785, -17851494, 11049340, -8722542,
+-761283, -13544716, 4032974, -2720862, 428960, -15256261, 2093260, -1376000, 2871723, -1468879,
+-16846472, 6681359, -9682467, -8612483, -4131222, 12447889, 14176613, 15921981, -13848048, 27352500,
+-20811264, -6180995, 1333051, -2196339, -15452755, -8147016, -1123671, -11375758, 3010235, -903554,
+-755377, -1317481, -11545409, 1496796, -2158758, -24957518, -50216756, -50544248, -36580236, 7511898,
+93910536, 23737210, -12948790, -28388124, -67853504, -95444912, 21553756, 39535712, 47460464, -9982578,
+4117263, -27984934, -48688288, 14042932, 8844948, 15847356, 2294050, -40832256, -12472585, 9980430,
+-8205535, -1608465, -7721815, 53209812, 46726560, 31507880, -2878702, -22835804, -38783556, -25672630,
+-23206246, 36347772, -6017786, 26598196, 12032888, 12458090, -16345572, -88406536, -60863980, 30061012,
+-47890496, -16342351, 102009232, 70140040, 52707300, -39944268, 28872380, -27664422, 2032056, 2030983,
+14812805, 43272868, 76263584, -29189672, -2709588, -50273664, -40613748, -66535484, 7232725, -2739652,
+-71636832, -17155174, 46163384, 17257178, 32225140, 43673376, 78692392, -57303992, -34386044, 4562329,
+-46768972, -6016713, 26175678, 61300996, 31173946, 9584220, -37382320, -35842040, 24224690, -10193568,
+36138392, 31774168, -8553427, 14567992, 5865852, -6090264, -11994770, -6975027, -4509179, 10809896,
+3153580, -251792, 3781719, -1094680, 5240934, 169114, 22886270, 18822158, 29824790, 5398237,
+-16342351, -34441344, -28130962, 11494406, 26805964, 30706332, -3809636, -19563040, -79255032, -40711460,
+-37497212, 940598, 4059818, 8144869, -238371, 5950141, -8933532, 4295, -13240847, -11832635,
+16818018, 14847165, 8651138, 8740258, 4418448, 2033667, 23262616, -37721088, -124932008, -116255640,
+-66723928, -72566160, -18080738, 120370752, 61170536, 123842160, 109904456, 172254496, 123032560, 105828528,
+17095044, -45919104, -103823320, -166393472, -141293680, -142310528, -74359840, -35695472, -8359080, 1201517,
+4119411, 29395830, 39298412, 99050000, 60176248, 116887536, 76168024, 100197296, 36280124, 96815544,
+33664492, 23692114, 22945326, -5750425, -27140972, -65525096, -75586592, -140383152, -96135328, -177893792,
+-140714944, -215911760, -127972848, -101573296, -24471114, 59337656, 31598074, 5333276, 59273768, 126608120,
+169169632, 221744864, 264361136, 226169760, 165264976, 206039776, 170046880, 95297272, 42902964, -10572062,
+-70841192, -164007616, -194742944, -260862352, -336744224, -389762912, -351673536, -309996768, -220571808, -150638992,
+46195056, 145269760, 177118016, 272665984, 227720784, 284360128, 298912544, 293163744, 338026272, 221853312,
+57685704, -55870008, -108266464, -134084048, -86757800, -125577328, -107594840, -125680408, -170003392, -172029552,
+-200196480, -118600688, -92260192, -78731584, -43933756, -2707977, 11866458, 48595408, 132080448, 139081776,
+197581376, 171901776, 225963056, 166077792, 111059800, 114491480, 43718472, -30105036, -48995912, -217961008,
+-280880672, -261649952, -230791136, -135231344, -106036840, -58089432, 5114233, 58809912, 89801320, 121946472,
+145718576, 173156432, 164531072, 155421984, 136944496, 76417128, -304406, -38872676, -90344104, -94649272,
+-80968720, -66227320, -68890736, -69854960, -54808076, -39465380, -23320062, -9865003, -8927090, -6482717,
+1961190, -6857989, -7970386, 9463424, 22465900, 24951076, 16435229, 11529303, 19292456, 23252416,
+17068200, 15530602, 14453102, 9055402, 6154152, 5211943, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-12016245,
-4409858, -6861211, 3652333, -3889630, -7934415, -13678397, 2362232, 363998, 3390340, 2976949,
--992137, -1042603, 989453, 8204462, -5894843, -10487773, 3422015, -4362613, -7042136, 82678,
--1086627, 4284767, 1500017, 3044595, -3188476, -822486, -2105608, 6982543, -1959042, -2880849,
--2545305, -1279900, -1741609, -2862059, -2536178, -1770600, 1344862, 553514, 872415, 197569,
-1781875, 2938831, 1466195, -2696703, -7978439, -121870, -5563057, 758599, -423054, -2555506,
-3499325, 198105, -24696, -7945690, -3278134, 1014686, -669478, 2716567, 151398, 2412698,
--2345052, 974958, -1045825, 4831302, -1779190, 2522757, -4413616, -4387309, -5542656, 228170,
--1355062, -1646583, -15569, -1963874, -86436, -2282775, 423054, 54224, -995359, -3503083,
-293132, 314606, 1937567, 1706713, -34897, 1821066, -249645, -1493575, -529892, -729608,
-675921, -60130, 50466, 1007170, 712965, -179315, 907312, -687195, -8598525, -1796370,
--1148904, -2456185, -1120450, -2956011, 2819109, -1186485, -1018981, -272730, 42950, -202400,
--2083596, 7569343, 4871567, 7911867, -3734474, 7873749, -4698158, -3319473, 3060701, 8721468,
--206158, -5344550, -7849590, -5668283, -1095754, 6203544, 2441152, 2072859, 2759517, -2784750,
-4238059, 498753, 3164854, -1592896, -7150047, 1898376, -4949950, -3431142, -3474629, -872952,
--9073655, -469225, 421444, -3839164, 8463770, -1658931, -2743410, -3457986, -89657, 879395,
--3633542, 68183, -4454955, -1732482, 119722, -1893544, 6087580, 129386, -1642288, 3352222,
-2187212, 5580237, 2267206, 6719477, 1671279, 5481452, -6323803, 1577864, 5058935, -1796370,
--4514548, -6288369, -117575, -556198, -1238024, 1460826, 1836635, -1391569, 4854924, -4242891,
-1618666, 1619203, -3097208, 2193655, 520765, -2349347, 1228898, -651224, 492848, -2209224,
-675921, 185757, 411243, -320512, -133681, 970663, 290984, 1865626, 9737765, -4380330,
--3363496, 1000727, -2134062, -1581622, 4900021, -3761318, 4720169, 2179159, 135291, 2421288,
--3108483, -2966212, -5477157, -5910412, 7856569, 3724811, 2786897, 4209605, -2700461, -1800128,
--1976759, 9905268, -3784403, 10838887, -325344, -2726767, -2563559, -5701569, -6118181, -7448010,
--419833, -1858110, 1395328, 7245073, -571231, -3360812, -10025527, 374199, 8046621, 11767137,
--5464809, 3054259, 2211371, -2966212, -2608656, 3084860, 11176579, -2634963, 1802813, -934692,
--1572495, -1023276, 5390721, 7722351, -5779952, -3147674, 2443837, 10118406, 1741609, 7171522,
--5788542, -5404143, -239981, -879931, 2105608, 1550483, -71941, 649077, 1107565, -2616172,
-1287953, 3284576, 2571612, -1963874, 6518150, -1632088, 4120484, -2106682, -2163053, 2438468,
-2103997, 2205466, 557272, 2298881, 502511, -3343632, -2215130, 665720, -96100, 1249299,
--565325, 1860258, -15569, 1043677, -934155, -175020, -22012, -481573, -1097364, -96100,
--642635, -168577, -785979, -721555, 1894081, -16643, -807991, 1990181, 108448, 15882252,
--11045582, -2500208, -4633196, 1171452, 4175245, 7587597, -7735236, 5176510, -2074469, -8185671,
--13186623, -2765959, -5643050, 852014, -1322313, -5625871, -2902324, 2978023, 3170223, 10172093,
-5623186, 5135707, 472983, 1542967, -5376226, -3678103, 8177618, 6227703, 4222490, 1904281,
-3893925, 765041, -22012, -6961605, -9789841, 6432251, -2650532, -6633040, -3177202, -4199941,
-3430605, -3708704, 8221641, 1828582, -4817880, -2404645, -3701188, -3246995, 3993246, 5995775,
--569083, 4014721, -3050501, -3433290, -22012, 739808, -3247532, -1327145, 4733054, -24159,
--2014877, -2431488, 2559801, 2819109, -410169, 3424163, 446677, -2564632, 8213051, -1257889,
-869731, 315680, -9980430, 3797825, 3080565, 5078262, 3325379, -3722663, -869194, -9051644,
--4160213, -8313983, -3056943, -3774203, -3758, 700080, -5461588, 151934, -1346472, -70330,
-2276870, -908922, -1036698, -268435, -1537061, 179852, -801011, 532039, -958851, -2113124,
--1054415, -603980, -3427921, -400506, -191663, 610422, -245350, 323733, -219580, -12348,
--1847910, -2442763, 202400, -438087, -1081795, 343597, -10811506, 2880313, 187905, -3151969,
--5887864, 2564632, -5623186, -973884, 9922985, 14992657, 7421704, 8273181, -540092, -4072166,
-6241125, 5589900, 2404645, 3016678, 7428146, -1016297, 5422396, 5255430, 7705172, 7381975,
--5916318, 4969277, -312459, 1785633, -5507222, 1764158, -673236, 5062156, -1862942, -1354525,
--3867081, 3699041, -6036577, -4905927, 566936, 5310727, 2942590, -3109020, -1569274, -920197,
--2021856, 3228742, -7277822, 6817724, 40265, 8466991, -11872363, 895501, -10685342, -3344169,
--3356517, 2985539, -1053341, -2400887, 2433636, 938987, 2971581, 4696010, 7699803, -898185,
--6055367, 1364726, 10350871, 2145336, -2903398, -706522, 6410776, -3297461, 3930432, -3184182,
--10909754, 6394670, 6805376, 6288906, -5353677, -8100845, -5799817, 6950331, -665720, -1009854,
-4962835, 1852742, 1283122, 886911, -267362, 1947231, 2624762, -803696, -1313186, 1482838,
-230318, -435402, 943819, -1330903, 478352, 2265059, -839129, 2376728, -898722, -1682554,
-901943, -5369, 92879, 1225676, 986232, 1243930, 1022739, 906238, 17180, 1202054,
--16406238, 251792, -3659312, 1482301, -9201431, 1095217, 1486596, 12137578, -9760850, 99321,
--13084618, 2951716, -7919383, -1945083, 448287, -4296041, 3741990, 1650878, -6868727, 107374,
--138513, 6301791, -4166655, 10163503, -159988, -8841190, -4541928, 10819023, -1081258, 4322348,
-2844342, -1803349, 6438693, -7183870, -6826314, -5292474, 699543, -6879464, 7257421, -4033511,
-4639639, -6660421, -121870, -8089571, 5263483, 701153, 6313065, 5671505, -5428302, 10673531,
-9063455, 8592619, 1654636, 9023726, 7374459, -7669738, 6529961, 3136400, 557809, -7119445,
-3229816, -6059125, 5953362, -2607045, -4827007, -584652, 8905615, 3184718, -10364830, 9829033,
--864899, -3479461, -5947993, 10013179, 8607651, -7466264, 7332046, -535260, -8957154, 110059,
--5116917, -2775086, 4833986, -4287451, 3432753, -356482, 1484448, -2051384, 2597382, -363998,
--340376, -589484, -1053341, 949725, 447213, -2484102, 817654, 1248225, -75162, 933082,
-1013075, -2329483, 428423, -271120, -28991, -1961726, 621160, -797253, -1273995, -2612951,
-2937758, 642635, -1514513, -392990, 23383412, 3978214, -927713, -8056822, -15139760, 3870839,
--2225330, -22225382, 19507742, -9444096, -14101988, 2985539, -894964, 2632278, -904628, 3784940,
-5630702, 78920, -351650, -11356430, -936303, -1073742, 13403519, -2442226, 356482, 4934918,
--2341831, -1644973, -5441724, 11443403, -8572755, 8269960, -2029909, -6849399, 1293322, -7657927,
--3884798, -12439836, 2203318, 5718212, -3353833, -6204081, -4902705, 7527467, -11652783, -2753611,
--5740224, -157840, -1659468, 1524177, -10106595, 9863929, -13803488, -9443022, 3762391, 1673964,
--509491, 3696356, -7151658, -10306311, 1293859, -2798171, -456340, 5069135, -6148246, 4596152,
-3211562, 11382200, -3134789, 1639604, -858457, 171799, 15791521, 1329829, 15635828, -3762391,
--5845451, 1788317, -8012799, -707596, 8002061, 651224, -9323837, -8171176, 2316598, -859530,
-59056, 8026757, 648003, -1496796, 3354906, -446140, -297963, -3733937, 1413581, 1765232,
--1854889, -39192, -897111, 3108483, -1371168, -613643, 1620276, 425739, 996969, -279173,
-1805497, -568009, 42950, 961536, -1926830, 2454037, -1508607, 920197, 2086280, 1133871,
-1974611, 551366, -17235704, -2330020, -3570729, -13998372, -24041080, 7305740, 12361990, -8863739,
--4301947, 6955163, -2662880, 14843944, -1739999, -8057896, -4828617, -22413824, 7474854, 2438468,
--2108292, -15768436, 3636764, -8806830, -2370285, -7741142, -3990025, 11066520, -10767483, 4531728,
--15909096, 10062035, 1954747, 120796, -4636417, 1116155, -2134062, -8937290, -16744467, 3156264,
--34360, 3491272, 6931541, -4133906, -1398012, -10810970, -5579700, -2955474, 4484483, 2991445,
-7851737, 12548821, 9819369, 4999342, 7479149, 2208150, 7798587, 6984154, -6942815, 8012262,
-9091909, -1964411, 12196097, -1361505, 14319421, -6444062, -15495168, -2609193, 9799505, 10755672,
-12408697, -2491081, -21597780, -2251637, -1193464, 729608, -775778, -5386426, 3045132, -15810311,
-12196097, 7632694, 7378754, -8321499, -7821136, -1805497, 4510253, -646929, -8742406, -13422,
--4291746, -7165079, -2882997, -1262720, -3426847, 224949, -2902324, 1340030, -1825361, -1071594,
-2231236, 333397, 996432, -1222992, -3147137, -3543885, 2371896, -2847027, -134755, -1102196,
-1445257, -1220308, -741419, -1210107, 3580929, 1816234, 1069984, -1226213, 22947474, -5043366,
--5505075, 7654706, 12358232, -884763, 5754720, 14307073, 10340671, -23487028, -21575768, 176094,
--2068564, 3164854, -9640054, -17136382, 4075387, 13734769, 9082245, -9949829, 16167331, 13053479,
-12264279, -20591146, 5837398, 10791642, 563178, 1636919, 9199820, 21203180, -4090420, -9702331,
-6443525, 4800163, -2879776, 11455752, 17125646, 3187403, 17741436, 7741679, -13298829, 1490354,
-14714558, -1598265, -6026913, 7605314, 1240709, 2885144, 15444166, 9896678, 5262409, 1817308,
--17906256, -18267570, -1514513, 2878165, 4780299, -5648419, -782221, -4735739, 1615445, 2260227,
--6823630, 2572149, -4184372, -1083406, -5796059, 636192, 11418171, -6765111, -16462073, -2594697,
--13999446, 3064996, -4986457, -388158, -1865090, 6592775, -2459406, 4765803, -45097, 4082367,
-1959579, -1935957, -2216740, -2886755, -8109972, 2927557, 1079647, 2003065, 293132, -6322192,
-3182571, -4955319, -4113505, -1472637, -5288179, -1161252, -1712081, -2026151, -1646046, 3406446,
--1500017, 2254321, -187368, 1802813, 357019, 4407174, -1894081, 1153199, -3565897, -968515,
--3053185, -2877091, -554051, -2138894, 6885907, 2827699, 293132, -1020055, -929324, -38486128,
--24070608, -7408819, 6793565, -2524367, -9735080, 1536525, -9492951, 26647050, -11039677, 17029008,
-26298622, 14170171, 12864501, -10545755, 9198746, -5331128, -12465069, 10497974, 12298102, 8077760,
-17646946, -94489, -1123134, -8087961, -8268886, -7110319, -11313481, -11042361, -7630547, 3939022,
-1292248, -315680, -7196755, -4030827, -10987063, 4271345, -9520869, -8683887, -3999688, 4290673,
--275952, -5934571, -15901043, 1654636, -4867272, 5455146, -18716930, -14543296, 15982110, -2706366,
--3371013, -7734163, -4838281, 11921755, 3699578, -2752000, 6421513, -2056216, 6691022, 5266704,
-7668664, -5914170, -9576166, -23751170, 1387811, -23044110, -1796907, -19545322, -3034931, 18006650,
--2555506, 2985539, -13273596, -5889474, -6972343, 1206886, -8616778, -5119064, 7967165, 9954660,
--1315871, -1299765, 904091, -4925254, 1473174, -795106, -4834523, -2142652, -4175245, -1810866,
--2486786, -10850698, 1583769, -2048699, -1636919, 377420, -3157338, -3706020, -7543037, -1984812,
--4475356, -5311801, -1205275, -6618545, -3213173, 762357, -4236985, -4905390, 312459, -4150549,
-1027034, 1213328, 4295504, -3047816, 2924873, 1218697, -4416837, -1864553, -1258425, -2223183,
-573915, -1219234, -1464584, 26376468, 506269, -19113678, -16217260, 16549046, 12962211, -12232604,
--11835856, 22194780, 14081587, 818191, -13196287, 1597191, -5565741, 10533407, -8203388, 1262184,
--3494493, -2410551, 22914188, -3230352, -6284611, 4273493, 3867618, 6880538, 7049652, 800475,
--9097814, 6878927, 3426310, 7880728, 17704928, 8152922, -25602836, -7287486, -4215511, -19535658,
-7524246, -3367791, 347355, -10874320, 9162239, -4206384, 1706176, -14147622, 9559523, -11517492,
-889058, 11419244, -1890323, 12045773, -9441949, 15015743, -19268834, 9630390, 148713, -6879464,
-25049860, 6739878, -5296232, -14939507, 6442988, -3037616, 1990717, -2233920, 9112847, 13749801,
-18388366, -11644193, 8221105, -4589173, 16435766, 6100464, 2277407, -1475321, 9818295, 1813013,
--6649683, 8091182, -5805722, -9621264, -4279935, -13101261, 78920, -14682346, -1345399, -9878962,
-11258720, -3552475, 7202124, -7898982, 199716, -4401268, 6788196, -2137283, -763430, -4357245,
-2222109, -3255585, -5434744, -3017215, 2195265, -5087389, 3009698, -4020090, 1801739, -2584497,
--2674691, -2581812, -5790690, -3250217, 21475, -4085588, -3883187, 5291937, 4421132, 2523830,
--2758443, -6609955, -835371, 2953864, -369367, -5115306, -3213709, -38540888, -25012816, 20515986,
--15315853, -14379551, 7802882, 17943836, -29964914, -5097053, 6955700, 1779190, -15715285, -23472534,
-43664248, -19029926, 5804112, -21616570, 11690901, -7620346, 20338818, 18064096, 1692754, 3089692,
--24480776, -167504, 11360725, -9995463, -14654965, 11400454, 3120831, 12303471, 9739912, -2196876,
-4005594, -2867965, -1693291, 18210124, -15734076, -9291088, 14567992, -726386, -11912092, 15448460,
--612570, -3543885, -10662256, -4765266, 5608154, -8337069, -1076426, 5366025, -10580115, -10813654,
--7099581, 7783018, -22801444, 10718091, -1174137, 21451214, -20393042, 6636798, -15541339, 5589363,
--9385040, -11894375, 19305342, -10838350, -4867809, -10551661, 8269960, -12054899, 6941741, -4159676,
-14083735, 14490683, -1963874, -22817550, 8948564, 9371619, -1222992, -808528, -13109851, -9055939,
--2288144, -11267310, -9126269, -3246459, -400506, -5645735, -7526930, 8380555, 2703682, -5354214,
--4549444, -5467494, -5839545, 6080600, 2138357, 1414118, -8710194, -3342558, 7244536, -4354560,
--5397164, 3398393, -3902515, -31675, 2554432, 4243965, -1890859, -7151121, 1285806, 4185446,
--9615895, 172872, 2326799, 183610, -5131412, -2893197, 110595, -2289218, 19300510, 9376987,
--21734146, 7406134, 23381266, -2067490, 53150, 10783589, -6993281, 16386374, 14837501, -19625316,
--12028056, -3627637, 10362145, 18709952, 3327526, 9934796, 21134998, 15800648, -22224308, -2405182,
-35322348, 8701604, -2347200, -4191888, -6640020, -10397042, 3121368, 8630737, 9652402, 8951249,
--6307697, -15108621, 4065187, -7870528, 8294656, 24350854, -6469832, -24510304, 29314762, -8864812,
--16129750, 23703924, -4266513, -7113003, -25393994, -4611185, 10520522, 4970888, -5504001, -10769094,
-9833864, 1000191, -11754789, 10045929, -2343442, 23115514, -17029008, 2365990, -3310883, 26485990,
-9063992, -37758668, 11841225, -15813533, -6593849, -13538811, 16331613, 53905060, 19736986, 3069291,
-12510166, 15643345, -19879794, -8512625, -5577552, -11435350, -6851010, -12651900, 11901891, -27792196,
--7322919, 2423972, 3339337, -9168681, 1751810, 4799626, -2685965, -3609920, 9456981, 1638530,
-6323803, 5135707, -5655398, 1508070, 4691715, 1673964, 3929895, -2953864, 2424509, -5496485,
-751082, -1747515, -5120138, -2837363, -1134945, 8325257, 503048, 2065342, 380641, -1888712,
--1699733, 574452, -718870, -7971996, -912144, 1124208, -1824824, -6185827, -14047227, -5267778,
--4234838, 8135742, -1405528, 1656247, -8164196, -28502476, -12089796, 2018098, -11533061, -35893040,
-31244814, -5929203, 14119168, 2712809, -16419123, -28308130, -27266064, 30709554, 18735722, 7088844,
--10741713, -20450486, -15293305, -24295020, -6189048, 9131100, -3719979, 2039036, 3954054, -3947612,
--12544526, -12080132, -20627654, -7380365, -3905736, 10223096, 7175280, 11234024, -5477157, -9221832,
--3809099, 14668387, 2157147, 12990665, -43198244, -10154913, 20401, 9536438, -13727789, -569083,
--15900506, 12560095, 11107859, 2143189, 53539452, 881005, 16790638, 22028888, 1040993, 7135015,
-421981, -3819300, -6339909, 11113228, 16364899, 21309480, -385473, -3995393, 1556389, 14005888,
-12802224, 474594, 10397579, 8917963, 7030862, -2829847, 21021718, -6019934, 26948772, -26526254,
--13171591, -32630478, -10068477, 5849209, 885300, -8450348, 1845225, -105227, 14715095, -2959769,
-17610976, -8012262, -6409165, -8804683, 4618701, 9844065, -1507534, -4782983, -5222680, 6076305,
-178241, 20422570, -3149822, -1402307, 3750043, 5733245, 8504035, -7062000, -544924, 2737505,
-4240744, -9748502, 3474629, 3718368, 12606803, -12393128, 7130183, 4726075, -5197448, 10629507,
--5913096, -7282654, 126702, -2469606, 5529771, 2728915, -4289062, -129386, 4558571, 1042603,
-10994579, -508954, 7219303, 20288888, -3740917, 894427, 5343476, -27765890, 1164473, 3984656,
-17478370, 26663156, -22691386, 5027259, -14305462, 19005768, 17230872, 2182917, 33079838, 10320806,
-13174812, -12054899, -1937030, -21111374, 33051384, -19203872, 5166846, 20225538, -4809827, -13001403,
-10215580, -2968896, 5170067, 21714280, 566399, -6876780, -1996086, 4077535, -681826, -12872554,
-9543954, -1223529, -3650185, 37071472, -28477780, 26824218, 17317308, 33472828, 13639742, -23648090,
-18315888, 381178, 17020956, 44077640, -31778464, -13159243, -4082903, 867583, 29968672, -17762910,
-1568200, -19075560, 1508070, 33793340, -3796214, 35068944, 9891847, 6008123, 15949361, -21402896,
--3532611, 15426449, 21829708, -35435092, -1252520, -30359514, 13618804, -15781320, -511101, 7198365,
-9905805, 766115, -10792179, -8594766, -33196876, -3765613, -23580444, 19147502, 1669132, -1481764,
-14913200, 846109, -63888, 14323716, 10697153, 7207492, 188979, -4815195, 6764574, -11207717,
--825707, -7685844, 7706782, 8016557, -6766184, -1296006, -14398341, 6399502, -883153, -5906,
--382252, -13981192, -16849694, -5572183, 5465346, 12794708, 6514392, 5777268, -2026688, 10717554,
-7461432, -466004, -5444408, 9324911, -13269301, -3727495, 2774549, 15030238, 12429098, 2695092,
--6045704, -21467320, 6030134, -37565396, -33108292, 478352, 446677, -21028696, 17053168, 4930623,
--5751498, -19514720, 26515518, -6195491, 39475044, -5781563, 8469676, 14241038, -19276350, -6434935,
-5971615, -22937810, -12964359, -20062330, 17151952, -16077136, -4436165, -5293011, 14833206, -13558138,
--22949084, -31917512, -1027034, 26502096, 1485522, -14647986, -6337761, -18539764, -6320581, 130997,
-10939819, -20877836, -2460480, -4571456, -15000173, -20520280, 842350, 3397856, 13112535, 4515085,
-22630182, 6288906, 28592134, -12017855, 23579370, -6078453, -18678276, -4861903, 38435664, -16695075,
-17430052, -12246026, 28155658, -15004468, 9393630, 17940616, -1235340, -7435662, 3263102, -10271414,
-25581898, -23622320, -9064528, 25680684, -3337190, -21466246, 838592, 19628000, 10744934, 19630148,
--20017232, -16879222, -10894185, -2187749, 19190988, 23415088, -41653668, 2185065, 11819213, -22767622,
-3569655, 14368813, 11001559, 10540923, 10108206, 6882685, -3366181, 758062, 7698729, 8828305,
-6999186, 17719424, -5574331, 9317932, 3740917, 19183472, 11220065, -14803142, -18919868, 5966247,
-19949586, -5731634, -5784247, -12831215, -22084722, 2528662, -18879602, -5858336, 4066260, -12420509,
-11385958, 3331284, -4096325, -10253698, -2190433, -10628433, -1084479, 5924908, 2574833, 1688459,
--2081449, -2590402, -35620848, 39280696, -12983686, 33457258, -6896644, 26889180, 2330557, -8318815,
--18257906, -12894566, -2340757, 475131, 19789598, -7430294, -1428614, 5725729, -17840758, 29032368,
-10914049, 1156420, -23735064, 16428250, 8712341, -18937048, 18709414, 1702955, -2807298, 4774393,
--455267, 24523726, -5472325, -30645128, 33333778, -17041894, -2565169, 24765856, -10763725, -5317170,
--14618458, 39043400, -17326434, -4738960, -24235426, -4660040, 3113315, 34907348, -16173236, 6628745,
-11236171, 20784420, -5304822, -22025130, 24221468, 14680735, 19692426, -9470940, -4536023, 2537252,
-21805548, -11940009, -25251724, -28278602, 15249281, -19785304, 5236102, 21255794, 19821274, -13780403,
--4585415, 28585692, -45318884, -1013075, 6440304, 15794742, -1942936, -16536698, -3148211, 26074746,
--4884989, 53473952, 21068426, -15213848, -1893007, 1639067, -6262599, -19276886, -23523000, -17283486,
-15029164, -11167989, -4427575, -387084, 23471460, 10162429, -7892540, 10348724, 7699266, -251792,
-3610457, 4393752, -98784, 3301756, 24041616, 19718194, 19174344, 13010530, 2014340, -11673721,
-6528887, -9105331, 11631845, -14042932, 15538118, 22483616, 7650948, 28461138, 30813170, 12497281,
--83215, 16146393, 5735392, -2852932, -9540196, 16782584, -4138201, -13283260, 36507, 8174397,
--3604551, 7126962, 13357348, 5070209, 13629005, -7598334, -8668318, -50306416, 17134236, 9794673,
-44865764, 39315056, -5813238, -14511621, -46227268, 1362578, 15483894, -19785840, 15124727, 27080306,
-26346940, -12196097, 31715650, 28351616, 1377611, -17090748, -18301392, 28950764, 24777666, -35150012,
--47914120, 63750200, 3352222, -4493073, 8418673, 4743792, 23700704, 23528904, -9392020, -8018167,
-33272038, 15820512, -5873905, -22048214, 13464722, 2690797, 1870995, 11864847, 1745367, -1000191,
--13164612, 7479686, -3874061, -16199006, 29921964, -47421272, 33208150, 27514634, -44844828, -3081102,
-23029614, 5834176, 26262114, -6077379, 3791383, 24004572, -3040300, 12284680, -22048214, -35057132,
-98967856, -40377524, -56731148, -12375411, 110207248, 47591460, -46802260, -10560251, 19564112, 13507672,
--880468, -28275918, 41514080, 23228256, 17487496, 4156992, -55755116, -9101573, 9218074, 16712791,
--22827752, -37888056, 3473018, 12084427, 5371394, -17835926, -18847928, 9214315, 5225365, 13851270,
--2431488, -4522601, -1261647, 14798847, 18803904, 13007308, -28016072, -10773925, 19967840, 14746770,
--14059575, 174483, 16301548, 28875066, 11346230, -15042049, -20422570, -26714696, 12780212, -8458938,
-11893301, -22555020, 12861280, 6749004, 14475650, -10247255, -5377299, -18067854, -7636989, 18134426,
-3400540, -14775761, 8361228, 27331562, 7212861, -19659676, -12409234, 24756192, 42871828, 2995203,
-71201432, -31570694, -12141873, 41319732, 2040110, -2325725, -21248276, -42415488, 35262220, -22085796,
--24075440, 18336290, -26725434, 13303661, -25341918, -28023588, -4735739, 6200859, 3971771, -6553047,
-33728916, 8519068, 20564304, 9947144, 568546, 597000, -15248208, -32318556, 10351945, 32382442,
--26396332, 22640920, -26908506, -2718714, -1489817, -41523208, 29603062, -14335527, 11518565, 902480,
--12261595, 798864, -30110406, 31000000, -21806622, 10421738, -35053912, -21196200, -45974940, 17457968,
--21508660, -24063628, -19560892, -9943923, -6442, 49008260, 17459042, 24288040, -6731288, -22766012,
--28984050, 7755637, 1727651, -49741088, -23255100, -87550760, -41318660, -33790656, -5150203, -40284108,
--33332168, -7212324, 32013612, 36683316, -29827474, -37512780, -43337292, 21898428, 51662016, 2755222,
-41530724, 1182727, 25049324, 10207527, 2958159, 12242804, 4376035, -874026, -15106474, 21613886,
-17666812, 9679246, -18035642, -6978785, -2494839, 9337259, 9572945, -3431142, 10396505, -4495220,
--12168179, -20904142, 2503966, 29417304, 10426570, -3328063, 8132521, -9306120, 15562814, -5602248,
-20378546, 20016696, 2207076, -21248276, 3408594, 4915590, 23106388, 5813238, 26278758, -17548700,
--11048266, 24528022, 25120190, 6900402, -6764037, -4466229, -25179246, -11764452, -50134616, 11805254,
-17702782, -43410844, 24063628, 4795331, -12596065, 2597382, -12275553, -1213865, 9343164, 12673375,
-22216256, -26148834, 2545842, 30151744, -3350611, -14374182, 27116812, -11917997, 1899449, -16057809,
--6517613, -32063542, 8358543, 772557, 18115098, -12654047, 1343788, 22523346, -10662256, 360240,
-23241678, -45625976, 2967823, -52231096, -16616692, -34992708, 27935542, 9876277, -2049773, 11718281,
--10249939, 12784507, 35503272, 9547175, 55122684, -30719216, -35241280, 32469952, 8840116, -23834384,
--22372484, -9139154, 20354924, -19569482, -755377, -16925930, -21849572, 12815646, 16042777, -32583232,
--18941342, 27992450, -497679, 9874130, -6071473, 15333570, 6810745, 28254980, -16468515, -12236899,
-7166153, 6500433, -8178155, -29564408, -21609592, -23396298, 31272730, -14561013, -24217174, 6996502,
--6341519, -8003672, -15967615, 5992553, 7150584, -2684892, -4756140, -8715562, -14717242, -2608656,
--3345243, -10763188, 383863, -5291937, -10102300, 6082748, -5966247, 5592585, -5887327, -5034776,
-14760192, -5903433, 6971269, 5122822, -14078903, 6228777, 1852205, -5740761, -17071958, 23145042,
-15234786, -6635188, 3587372, -11468100, -8685498, 7009924, -214748, -14718316, 5117991, -5937256,
-13294534, -3635153, -2484639, 2485712, 6191196, -33851860, -68504192, -34213172, -13007308, 30036316,
-39127688, -74772696, 12953084, -29657822, -40523016, -8258149, 46896748, 30023968, 25588342, -16072841,
--18017388, -21510270, 23667954, 16750372, 36499704, 4838818, -47347720, -18477486, 35639100, -5387500,
-10470593, 31981400, -15229417, -22000434, -34635152, -34616364, 231928, 22705882, 48842904, 36250060,
-23983098, 9909026, -49948860, -53127136, 18613852, -36623188, 8674760, 46992312, 18653042, 3280281,
--23665270, -42347304, -7279433, -18189724, 14239964, 11194832, 7951595, 29502130, -4596689, -5580237,
-7710003, 21444234, 34571804, 35949412, 12127377, 32028108, 10702522, 11580306, -7057705, -35624068,
--14074608, -15381888, -29353954, 22191560, 20575578, 15462419, 15206332, -6679748, -35243964, 5959804,
-10451266, -421444, 23356570, 15203647, 12209518, -2647311, 1538135, 3587908, 24042690, 24437828,
-18371186, 5499706, -4532801, -17683454, -3388729, 10548440, 2938295, -5121212, -187368, -14012868,
--6693707, -8040179, -9415642, 7505992, 26239028, 13105556, -4933844, -2494302, -19814832, -1868848,
-6781754, 13467407, 14651207, -4493073, -6431177, -30515206, -17859548, -4274030, 81068, 12499965,
-10123238, -5875516, -7536057, 5142687, 1808718, 3350075, 7405061, -8393440, -3212636, -1542430,
-4862977, 8346732, 624381, -2689723, -2457795, -12662100, 21192442, -60351268, -121411744, -62691492,
-11719892, 47356848, 115472344, 112976432, 47042240, 48051020, 34483756, 1840394, -57573500, -97520456,
--146939952, -43881680, -61496416, -10729902, 59907276, 106827112, 89801864, 79313552, 43687332, -1005559,
--28019830, -37553584, -8069707, -65017752, -51657720, -49057652, -32174674, -26396870, -12279311, -2324114,
-22341346, 52674552, 54220204, 53317188, 39007968, 50794432, 26911728, 29049548, -9542880, -2131915,
--24014236, -62963148, -91231008, -110187920, -53413824, -21487722, 17113298, -2839510, 11607149, 25624312,
-33469606, 71484360, 82386064, 109236048, 69641824, 7041599, 31807990, -16495896, -60360396, -52765820,
--105075304, -122541320, -91645472, -56626460, -24384140, -19188304, 44069584, 49824840, 138174464, 113186344,
-82778512, 81086296, 38805028, -4942971, -54932096, -79373144, -57985280, -69497400, -95481952, -45326400,
-2607582, -9320079, 2682744, 41748692, 58132384, 42999600, 22393422, 21742198, 37032280, 15838229,
--2781528, -4425427, -18204218, -3043521, -16246251, -42748884, -22641994, -31874026, -51835424, -9098888,
--9021042, 41435160, 37704980, 22743462, 40567576, 70300560, 50260244, -12310987, -8513699, -33862060,
--30198988, -70717176, -73410120, -35460860, -15011984, 6133750, 24862492, 29518236, 43898324, 50099184,
-48352740, 50866372, 12934294, -5132486, -27078696, -32990180, -43663712, -48249664, -48510580, -20837570,
-10845329, 14587320, 21026012, 22070764, 15260019, 16369194, 17044578, 5551782, 3984119, -5629629,
--6033892, 10413685, -6889128, -16646756, 1023276, 3924526, -2014340, -4838818, -6873022, 720481,
--1183800, -6866579, -1421634, 733903, 66035, -76773, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+4409858, -6861211, 3652333, -3889630, -7934415, -13678397, 2362232, 363998, 3390340, 2976949,
+-992137, -1042603, 989453, 8204462, -5894843, -10487773, 3422015, -4362613, -7042136, 82678,
+-1086627, 4284767, 1500017, 3044595, -3188476, -822486, -2105608, 6982543, -1959042, -2880849,
+-2545305, -1279900, -1741609, -2862059, -2536178, -1770600, 1344862, 553514, 872415, 197569,
+1781875, 2938831, 1466195, -2696703, -7978439, -121870, -5563057, 758599, -423054, -2555506,
+3499325, 198105, -24696, -7945690, -3278134, 1014686, -669478, 2716567, 151398, 2412698,
+-2345052, 974958, -1045825, 4831302, -1779190, 2522757, -4413616, -4387309, -5542656, 228170,
+-1355062, -1646583, -15569, -1963874, -86436, -2282775, 423054, 54224, -995359, -3503083,
+293132, 314606, 1937567, 1706713, -34897, 1821066, -249645, -1493575, -529892, -729608,
+675921, -60130, 50466, 1007170, 712965, -179315, 907312, -687195, -8598525, -1796370,
+-1148904, -2456185, -1120450, -2956011, 2819109, -1186485, -1018981, -272730, 42950, -202400,
+-2083596, 7569343, 4871567, 7911867, -3734474, 7873749, -4698158, -3319473, 3060701, 8721468,
+-206158, -5344550, -7849590, -5668283, -1095754, 6203544, 2441152, 2072859, 2759517, -2784750,
+4238059, 498753, 3164854, -1592896, -7150047, 1898376, -4949950, -3431142, -3474629, -872952,
+-9073655, -469225, 421444, -3839164, 8463770, -1658931, -2743410, -3457986, -89657, 879395,
+-3633542, 68183, -4454955, -1732482, 119722, -1893544, 6087580, 129386, -1642288, 3352222,
+2187212, 5580237, 2267206, 6719477, 1671279, 5481452, -6323803, 1577864, 5058935, -1796370,
+-4514548, -6288369, -117575, -556198, -1238024, 1460826, 1836635, -1391569, 4854924, -4242891,
+1618666, 1619203, -3097208, 2193655, 520765, -2349347, 1228898, -651224, 492848, -2209224,
+675921, 185757, 411243, -320512, -133681, 970663, 290984, 1865626, 9737765, -4380330,
+-3363496, 1000727, -2134062, -1581622, 4900021, -3761318, 4720169, 2179159, 135291, 2421288,
+-3108483, -2966212, -5477157, -5910412, 7856569, 3724811, 2786897, 4209605, -2700461, -1800128,
+-1976759, 9905268, -3784403, 10838887, -325344, -2726767, -2563559, -5701569, -6118181, -7448010,
+-419833, -1858110, 1395328, 7245073, -571231, -3360812, -10025527, 374199, 8046621, 11767137,
+-5464809, 3054259, 2211371, -2966212, -2608656, 3084860, 11176579, -2634963, 1802813, -934692,
+-1572495, -1023276, 5390721, 7722351, -5779952, -3147674, 2443837, 10118406, 1741609, 7171522,
+-5788542, -5404143, -239981, -879931, 2105608, 1550483, -71941, 649077, 1107565, -2616172,
+1287953, 3284576, 2571612, -1963874, 6518150, -1632088, 4120484, -2106682, -2163053, 2438468,
+2103997, 2205466, 557272, 2298881, 502511, -3343632, -2215130, 665720, -96100, 1249299,
+-565325, 1860258, -15569, 1043677, -934155, -175020, -22012, -481573, -1097364, -96100,
+-642635, -168577, -785979, -721555, 1894081, -16643, -807991, 1990181, 108448, 15882252,
+-11045582, -2500208, -4633196, 1171452, 4175245, 7587597, -7735236, 5176510, -2074469, -8185671,
+-13186623, -2765959, -5643050, 852014, -1322313, -5625871, -2902324, 2978023, 3170223, 10172093,
+5623186, 5135707, 472983, 1542967, -5376226, -3678103, 8177618, 6227703, 4222490, 1904281,
+3893925, 765041, -22012, -6961605, -9789841, 6432251, -2650532, -6633040, -3177202, -4199941,
+3430605, -3708704, 8221641, 1828582, -4817880, -2404645, -3701188, -3246995, 3993246, 5995775,
+-569083, 4014721, -3050501, -3433290, -22012, 739808, -3247532, -1327145, 4733054, -24159,
+-2014877, -2431488, 2559801, 2819109, -410169, 3424163, 446677, -2564632, 8213051, -1257889,
+869731, 315680, -9980430, 3797825, 3080565, 5078262, 3325379, -3722663, -869194, -9051644,
+-4160213, -8313983, -3056943, -3774203, -3758, 700080, -5461588, 151934, -1346472, -70330,
+2276870, -908922, -1036698, -268435, -1537061, 179852, -801011, 532039, -958851, -2113124,
+-1054415, -603980, -3427921, -400506, -191663, 610422, -245350, 323733, -219580, -12348,
+-1847910, -2442763, 202400, -438087, -1081795, 343597, -10811506, 2880313, 187905, -3151969,
+-5887864, 2564632, -5623186, -973884, 9922985, 14992657, 7421704, 8273181, -540092, -4072166,
+6241125, 5589900, 2404645, 3016678, 7428146, -1016297, 5422396, 5255430, 7705172, 7381975,
+-5916318, 4969277, -312459, 1785633, -5507222, 1764158, -673236, 5062156, -1862942, -1354525,
+-3867081, 3699041, -6036577, -4905927, 566936, 5310727, 2942590, -3109020, -1569274, -920197,
+-2021856, 3228742, -7277822, 6817724, 40265, 8466991, -11872363, 895501, -10685342, -3344169,
+-3356517, 2985539, -1053341, -2400887, 2433636, 938987, 2971581, 4696010, 7699803, -898185,
+-6055367, 1364726, 10350871, 2145336, -2903398, -706522, 6410776, -3297461, 3930432, -3184182,
+-10909754, 6394670, 6805376, 6288906, -5353677, -8100845, -5799817, 6950331, -665720, -1009854,
+4962835, 1852742, 1283122, 886911, -267362, 1947231, 2624762, -803696, -1313186, 1482838,
+230318, -435402, 943819, -1330903, 478352, 2265059, -839129, 2376728, -898722, -1682554,
+901943, -5369, 92879, 1225676, 986232, 1243930, 1022739, 906238, 17180, 1202054,
+-16406238, 251792, -3659312, 1482301, -9201431, 1095217, 1486596, 12137578, -9760850, 99321,
+-13084618, 2951716, -7919383, -1945083, 448287, -4296041, 3741990, 1650878, -6868727, 107374,
+-138513, 6301791, -4166655, 10163503, -159988, -8841190, -4541928, 10819023, -1081258, 4322348,
+2844342, -1803349, 6438693, -7183870, -6826314, -5292474, 699543, -6879464, 7257421, -4033511,
+4639639, -6660421, -121870, -8089571, 5263483, 701153, 6313065, 5671505, -5428302, 10673531,
+9063455, 8592619, 1654636, 9023726, 7374459, -7669738, 6529961, 3136400, 557809, -7119445,
+3229816, -6059125, 5953362, -2607045, -4827007, -584652, 8905615, 3184718, -10364830, 9829033,
+-864899, -3479461, -5947993, 10013179, 8607651, -7466264, 7332046, -535260, -8957154, 110059,
+-5116917, -2775086, 4833986, -4287451, 3432753, -356482, 1484448, -2051384, 2597382, -363998,
+-340376, -589484, -1053341, 949725, 447213, -2484102, 817654, 1248225, -75162, 933082,
+1013075, -2329483, 428423, -271120, -28991, -1961726, 621160, -797253, -1273995, -2612951,
+2937758, 642635, -1514513, -392990, 23383412, 3978214, -927713, -8056822, -15139760, 3870839,
+-2225330, -22225382, 19507742, -9444096, -14101988, 2985539, -894964, 2632278, -904628, 3784940,
+5630702, 78920, -351650, -11356430, -936303, -1073742, 13403519, -2442226, 356482, 4934918,
+-2341831, -1644973, -5441724, 11443403, -8572755, 8269960, -2029909, -6849399, 1293322, -7657927,
+-3884798, -12439836, 2203318, 5718212, -3353833, -6204081, -4902705, 7527467, -11652783, -2753611,
+-5740224, -157840, -1659468, 1524177, -10106595, 9863929, -13803488, -9443022, 3762391, 1673964,
+-509491, 3696356, -7151658, -10306311, 1293859, -2798171, -456340, 5069135, -6148246, 4596152,
+3211562, 11382200, -3134789, 1639604, -858457, 171799, 15791521, 1329829, 15635828, -3762391,
+-5845451, 1788317, -8012799, -707596, 8002061, 651224, -9323837, -8171176, 2316598, -859530,
+59056, 8026757, 648003, -1496796, 3354906, -446140, -297963, -3733937, 1413581, 1765232,
+-1854889, -39192, -897111, 3108483, -1371168, -613643, 1620276, 425739, 996969, -279173,
+1805497, -568009, 42950, 961536, -1926830, 2454037, -1508607, 920197, 2086280, 1133871,
+1974611, 551366, -17235704, -2330020, -3570729, -13998372, -24041080, 7305740, 12361990, -8863739,
+-4301947, 6955163, -2662880, 14843944, -1739999, -8057896, -4828617, -22413824, 7474854, 2438468,
+-2108292, -15768436, 3636764, -8806830, -2370285, -7741142, -3990025, 11066520, -10767483, 4531728,
+-15909096, 10062035, 1954747, 120796, -4636417, 1116155, -2134062, -8937290, -16744467, 3156264,
+-34360, 3491272, 6931541, -4133906, -1398012, -10810970, -5579700, -2955474, 4484483, 2991445,
+7851737, 12548821, 9819369, 4999342, 7479149, 2208150, 7798587, 6984154, -6942815, 8012262,
+9091909, -1964411, 12196097, -1361505, 14319421, -6444062, -15495168, -2609193, 9799505, 10755672,
+12408697, -2491081, -21597780, -2251637, -1193464, 729608, -775778, -5386426, 3045132, -15810311,
+12196097, 7632694, 7378754, -8321499, -7821136, -1805497, 4510253, -646929, -8742406, -13422,
+-4291746, -7165079, -2882997, -1262720, -3426847, 224949, -2902324, 1340030, -1825361, -1071594,
+2231236, 333397, 996432, -1222992, -3147137, -3543885, 2371896, -2847027, -134755, -1102196,
+1445257, -1220308, -741419, -1210107, 3580929, 1816234, 1069984, -1226213, 22947474, -5043366,
+-5505075, 7654706, 12358232, -884763, 5754720, 14307073, 10340671, -23487028, -21575768, 176094,
+-2068564, 3164854, -9640054, -17136382, 4075387, 13734769, 9082245, -9949829, 16167331, 13053479,
+12264279, -20591146, 5837398, 10791642, 563178, 1636919, 9199820, 21203180, -4090420, -9702331,
+6443525, 4800163, -2879776, 11455752, 17125646, 3187403, 17741436, 7741679, -13298829, 1490354,
+14714558, -1598265, -6026913, 7605314, 1240709, 2885144, 15444166, 9896678, 5262409, 1817308,
+-17906256, -18267570, -1514513, 2878165, 4780299, -5648419, -782221, -4735739, 1615445, 2260227,
+-6823630, 2572149, -4184372, -1083406, -5796059, 636192, 11418171, -6765111, -16462073, -2594697,
+-13999446, 3064996, -4986457, -388158, -1865090, 6592775, -2459406, 4765803, -45097, 4082367,
+1959579, -1935957, -2216740, -2886755, -8109972, 2927557, 1079647, 2003065, 293132, -6322192,
+3182571, -4955319, -4113505, -1472637, -5288179, -1161252, -1712081, -2026151, -1646046, 3406446,
+-1500017, 2254321, -187368, 1802813, 357019, 4407174, -1894081, 1153199, -3565897, -968515,
+-3053185, -2877091, -554051, -2138894, 6885907, 2827699, 293132, -1020055, -929324, -38486128,
+-24070608, -7408819, 6793565, -2524367, -9735080, 1536525, -9492951, 26647050, -11039677, 17029008,
+26298622, 14170171, 12864501, -10545755, 9198746, -5331128, -12465069, 10497974, 12298102, 8077760,
+17646946, -94489, -1123134, -8087961, -8268886, -7110319, -11313481, -11042361, -7630547, 3939022,
+1292248, -315680, -7196755, -4030827, -10987063, 4271345, -9520869, -8683887, -3999688, 4290673,
+-275952, -5934571, -15901043, 1654636, -4867272, 5455146, -18716930, -14543296, 15982110, -2706366,
+-3371013, -7734163, -4838281, 11921755, 3699578, -2752000, 6421513, -2056216, 6691022, 5266704,
+7668664, -5914170, -9576166, -23751170, 1387811, -23044110, -1796907, -19545322, -3034931, 18006650,
+-2555506, 2985539, -13273596, -5889474, -6972343, 1206886, -8616778, -5119064, 7967165, 9954660,
+-1315871, -1299765, 904091, -4925254, 1473174, -795106, -4834523, -2142652, -4175245, -1810866,
+-2486786, -10850698, 1583769, -2048699, -1636919, 377420, -3157338, -3706020, -7543037, -1984812,
+-4475356, -5311801, -1205275, -6618545, -3213173, 762357, -4236985, -4905390, 312459, -4150549,
+1027034, 1213328, 4295504, -3047816, 2924873, 1218697, -4416837, -1864553, -1258425, -2223183,
+573915, -1219234, -1464584, 26376468, 506269, -19113678, -16217260, 16549046, 12962211, -12232604,
+-11835856, 22194780, 14081587, 818191, -13196287, 1597191, -5565741, 10533407, -8203388, 1262184,
+-3494493, -2410551, 22914188, -3230352, -6284611, 4273493, 3867618, 6880538, 7049652, 800475,
+-9097814, 6878927, 3426310, 7880728, 17704928, 8152922, -25602836, -7287486, -4215511, -19535658,
+7524246, -3367791, 347355, -10874320, 9162239, -4206384, 1706176, -14147622, 9559523, -11517492,
+889058, 11419244, -1890323, 12045773, -9441949, 15015743, -19268834, 9630390, 148713, -6879464,
+25049860, 6739878, -5296232, -14939507, 6442988, -3037616, 1990717, -2233920, 9112847, 13749801,
+18388366, -11644193, 8221105, -4589173, 16435766, 6100464, 2277407, -1475321, 9818295, 1813013,
+-6649683, 8091182, -5805722, -9621264, -4279935, -13101261, 78920, -14682346, -1345399, -9878962,
+11258720, -3552475, 7202124, -7898982, 199716, -4401268, 6788196, -2137283, -763430, -4357245,
+2222109, -3255585, -5434744, -3017215, 2195265, -5087389, 3009698, -4020090, 1801739, -2584497,
+-2674691, -2581812, -5790690, -3250217, 21475, -4085588, -3883187, 5291937, 4421132, 2523830,
+-2758443, -6609955, -835371, 2953864, -369367, -5115306, -3213709, -38540888, -25012816, 20515986,
+-15315853, -14379551, 7802882, 17943836, -29964914, -5097053, 6955700, 1779190, -15715285, -23472534,
+43664248, -19029926, 5804112, -21616570, 11690901, -7620346, 20338818, 18064096, 1692754, 3089692,
+-24480776, -167504, 11360725, -9995463, -14654965, 11400454, 3120831, 12303471, 9739912, -2196876,
+4005594, -2867965, -1693291, 18210124, -15734076, -9291088, 14567992, -726386, -11912092, 15448460,
+-612570, -3543885, -10662256, -4765266, 5608154, -8337069, -1076426, 5366025, -10580115, -10813654,
+-7099581, 7783018, -22801444, 10718091, -1174137, 21451214, -20393042, 6636798, -15541339, 5589363,
+-9385040, -11894375, 19305342, -10838350, -4867809, -10551661, 8269960, -12054899, 6941741, -4159676,
+14083735, 14490683, -1963874, -22817550, 8948564, 9371619, -1222992, -808528, -13109851, -9055939,
+-2288144, -11267310, -9126269, -3246459, -400506, -5645735, -7526930, 8380555, 2703682, -5354214,
+-4549444, -5467494, -5839545, 6080600, 2138357, 1414118, -8710194, -3342558, 7244536, -4354560,
+-5397164, 3398393, -3902515, -31675, 2554432, 4243965, -1890859, -7151121, 1285806, 4185446,
+-9615895, 172872, 2326799, 183610, -5131412, -2893197, 110595, -2289218, 19300510, 9376987,
+-21734146, 7406134, 23381266, -2067490, 53150, 10783589, -6993281, 16386374, 14837501, -19625316,
+-12028056, -3627637, 10362145, 18709952, 3327526, 9934796, 21134998, 15800648, -22224308, -2405182,
+35322348, 8701604, -2347200, -4191888, -6640020, -10397042, 3121368, 8630737, 9652402, 8951249,
+-6307697, -15108621, 4065187, -7870528, 8294656, 24350854, -6469832, -24510304, 29314762, -8864812,
+-16129750, 23703924, -4266513, -7113003, -25393994, -4611185, 10520522, 4970888, -5504001, -10769094,
+9833864, 1000191, -11754789, 10045929, -2343442, 23115514, -17029008, 2365990, -3310883, 26485990,
+9063992, -37758668, 11841225, -15813533, -6593849, -13538811, 16331613, 53905060, 19736986, 3069291,
+12510166, 15643345, -19879794, -8512625, -5577552, -11435350, -6851010, -12651900, 11901891, -27792196,
+-7322919, 2423972, 3339337, -9168681, 1751810, 4799626, -2685965, -3609920, 9456981, 1638530,
+6323803, 5135707, -5655398, 1508070, 4691715, 1673964, 3929895, -2953864, 2424509, -5496485,
+751082, -1747515, -5120138, -2837363, -1134945, 8325257, 503048, 2065342, 380641, -1888712,
+-1699733, 574452, -718870, -7971996, -912144, 1124208, -1824824, -6185827, -14047227, -5267778,
+-4234838, 8135742, -1405528, 1656247, -8164196, -28502476, -12089796, 2018098, -11533061, -35893040,
+31244814, -5929203, 14119168, 2712809, -16419123, -28308130, -27266064, 30709554, 18735722, 7088844,
+-10741713, -20450486, -15293305, -24295020, -6189048, 9131100, -3719979, 2039036, 3954054, -3947612,
+-12544526, -12080132, -20627654, -7380365, -3905736, 10223096, 7175280, 11234024, -5477157, -9221832,
+-3809099, 14668387, 2157147, 12990665, -43198244, -10154913, 20401, 9536438, -13727789, -569083,
+-15900506, 12560095, 11107859, 2143189, 53539452, 881005, 16790638, 22028888, 1040993, 7135015,
+421981, -3819300, -6339909, 11113228, 16364899, 21309480, -385473, -3995393, 1556389, 14005888,
+12802224, 474594, 10397579, 8917963, 7030862, -2829847, 21021718, -6019934, 26948772, -26526254,
+-13171591, -32630478, -10068477, 5849209, 885300, -8450348, 1845225, -105227, 14715095, -2959769,
+17610976, -8012262, -6409165, -8804683, 4618701, 9844065, -1507534, -4782983, -5222680, 6076305,
+178241, 20422570, -3149822, -1402307, 3750043, 5733245, 8504035, -7062000, -544924, 2737505,
+4240744, -9748502, 3474629, 3718368, 12606803, -12393128, 7130183, 4726075, -5197448, 10629507,
+-5913096, -7282654, 126702, -2469606, 5529771, 2728915, -4289062, -129386, 4558571, 1042603,
+10994579, -508954, 7219303, 20288888, -3740917, 894427, 5343476, -27765890, 1164473, 3984656,
+17478370, 26663156, -22691386, 5027259, -14305462, 19005768, 17230872, 2182917, 33079838, 10320806,
+13174812, -12054899, -1937030, -21111374, 33051384, -19203872, 5166846, 20225538, -4809827, -13001403,
+10215580, -2968896, 5170067, 21714280, 566399, -6876780, -1996086, 4077535, -681826, -12872554,
+9543954, -1223529, -3650185, 37071472, -28477780, 26824218, 17317308, 33472828, 13639742, -23648090,
+18315888, 381178, 17020956, 44077640, -31778464, -13159243, -4082903, 867583, 29968672, -17762910,
+1568200, -19075560, 1508070, 33793340, -3796214, 35068944, 9891847, 6008123, 15949361, -21402896,
+-3532611, 15426449, 21829708, -35435092, -1252520, -30359514, 13618804, -15781320, -511101, 7198365,
+9905805, 766115, -10792179, -8594766, -33196876, -3765613, -23580444, 19147502, 1669132, -1481764,
+14913200, 846109, -63888, 14323716, 10697153, 7207492, 188979, -4815195, 6764574, -11207717,
+-825707, -7685844, 7706782, 8016557, -6766184, -1296006, -14398341, 6399502, -883153, -5906,
+-382252, -13981192, -16849694, -5572183, 5465346, 12794708, 6514392, 5777268, -2026688, 10717554,
+7461432, -466004, -5444408, 9324911, -13269301, -3727495, 2774549, 15030238, 12429098, 2695092,
+-6045704, -21467320, 6030134, -37565396, -33108292, 478352, 446677, -21028696, 17053168, 4930623,
+-5751498, -19514720, 26515518, -6195491, 39475044, -5781563, 8469676, 14241038, -19276350, -6434935,
+5971615, -22937810, -12964359, -20062330, 17151952, -16077136, -4436165, -5293011, 14833206, -13558138,
+-22949084, -31917512, -1027034, 26502096, 1485522, -14647986, -6337761, -18539764, -6320581, 130997,
+10939819, -20877836, -2460480, -4571456, -15000173, -20520280, 842350, 3397856, 13112535, 4515085,
+22630182, 6288906, 28592134, -12017855, 23579370, -6078453, -18678276, -4861903, 38435664, -16695075,
+17430052, -12246026, 28155658, -15004468, 9393630, 17940616, -1235340, -7435662, 3263102, -10271414,
+25581898, -23622320, -9064528, 25680684, -3337190, -21466246, 838592, 19628000, 10744934, 19630148,
+-20017232, -16879222, -10894185, -2187749, 19190988, 23415088, -41653668, 2185065, 11819213, -22767622,
+3569655, 14368813, 11001559, 10540923, 10108206, 6882685, -3366181, 758062, 7698729, 8828305,
+6999186, 17719424, -5574331, 9317932, 3740917, 19183472, 11220065, -14803142, -18919868, 5966247,
+19949586, -5731634, -5784247, -12831215, -22084722, 2528662, -18879602, -5858336, 4066260, -12420509,
+11385958, 3331284, -4096325, -10253698, -2190433, -10628433, -1084479, 5924908, 2574833, 1688459,
+-2081449, -2590402, -35620848, 39280696, -12983686, 33457258, -6896644, 26889180, 2330557, -8318815,
+-18257906, -12894566, -2340757, 475131, 19789598, -7430294, -1428614, 5725729, -17840758, 29032368,
+10914049, 1156420, -23735064, 16428250, 8712341, -18937048, 18709414, 1702955, -2807298, 4774393,
+-455267, 24523726, -5472325, -30645128, 33333778, -17041894, -2565169, 24765856, -10763725, -5317170,
+-14618458, 39043400, -17326434, -4738960, -24235426, -4660040, 3113315, 34907348, -16173236, 6628745,
+11236171, 20784420, -5304822, -22025130, 24221468, 14680735, 19692426, -9470940, -4536023, 2537252,
+21805548, -11940009, -25251724, -28278602, 15249281, -19785304, 5236102, 21255794, 19821274, -13780403,
+-4585415, 28585692, -45318884, -1013075, 6440304, 15794742, -1942936, -16536698, -3148211, 26074746,
+-4884989, 53473952, 21068426, -15213848, -1893007, 1639067, -6262599, -19276886, -23523000, -17283486,
+15029164, -11167989, -4427575, -387084, 23471460, 10162429, -7892540, 10348724, 7699266, -251792,
+3610457, 4393752, -98784, 3301756, 24041616, 19718194, 19174344, 13010530, 2014340, -11673721,
+6528887, -9105331, 11631845, -14042932, 15538118, 22483616, 7650948, 28461138, 30813170, 12497281,
+-83215, 16146393, 5735392, -2852932, -9540196, 16782584, -4138201, -13283260, 36507, 8174397,
+-3604551, 7126962, 13357348, 5070209, 13629005, -7598334, -8668318, -50306416, 17134236, 9794673,
+44865764, 39315056, -5813238, -14511621, -46227268, 1362578, 15483894, -19785840, 15124727, 27080306,
+26346940, -12196097, 31715650, 28351616, 1377611, -17090748, -18301392, 28950764, 24777666, -35150012,
+-47914120, 63750200, 3352222, -4493073, 8418673, 4743792, 23700704, 23528904, -9392020, -8018167,
+33272038, 15820512, -5873905, -22048214, 13464722, 2690797, 1870995, 11864847, 1745367, -1000191,
+-13164612, 7479686, -3874061, -16199006, 29921964, -47421272, 33208150, 27514634, -44844828, -3081102,
+23029614, 5834176, 26262114, -6077379, 3791383, 24004572, -3040300, 12284680, -22048214, -35057132,
+98967856, -40377524, -56731148, -12375411, 110207248, 47591460, -46802260, -10560251, 19564112, 13507672,
+-880468, -28275918, 41514080, 23228256, 17487496, 4156992, -55755116, -9101573, 9218074, 16712791,
+-22827752, -37888056, 3473018, 12084427, 5371394, -17835926, -18847928, 9214315, 5225365, 13851270,
+-2431488, -4522601, -1261647, 14798847, 18803904, 13007308, -28016072, -10773925, 19967840, 14746770,
+-14059575, 174483, 16301548, 28875066, 11346230, -15042049, -20422570, -26714696, 12780212, -8458938,
+11893301, -22555020, 12861280, 6749004, 14475650, -10247255, -5377299, -18067854, -7636989, 18134426,
+3400540, -14775761, 8361228, 27331562, 7212861, -19659676, -12409234, 24756192, 42871828, 2995203,
+71201432, -31570694, -12141873, 41319732, 2040110, -2325725, -21248276, -42415488, 35262220, -22085796,
+-24075440, 18336290, -26725434, 13303661, -25341918, -28023588, -4735739, 6200859, 3971771, -6553047,
+33728916, 8519068, 20564304, 9947144, 568546, 597000, -15248208, -32318556, 10351945, 32382442,
+-26396332, 22640920, -26908506, -2718714, -1489817, -41523208, 29603062, -14335527, 11518565, 902480,
+-12261595, 798864, -30110406, 31000000, -21806622, 10421738, -35053912, -21196200, -45974940, 17457968,
+-21508660, -24063628, -19560892, -9943923, -6442, 49008260, 17459042, 24288040, -6731288, -22766012,
+-28984050, 7755637, 1727651, -49741088, -23255100, -87550760, -41318660, -33790656, -5150203, -40284108,
+-33332168, -7212324, 32013612, 36683316, -29827474, -37512780, -43337292, 21898428, 51662016, 2755222,
+41530724, 1182727, 25049324, 10207527, 2958159, 12242804, 4376035, -874026, -15106474, 21613886,
+17666812, 9679246, -18035642, -6978785, -2494839, 9337259, 9572945, -3431142, 10396505, -4495220,
+-12168179, -20904142, 2503966, 29417304, 10426570, -3328063, 8132521, -9306120, 15562814, -5602248,
+20378546, 20016696, 2207076, -21248276, 3408594, 4915590, 23106388, 5813238, 26278758, -17548700,
+-11048266, 24528022, 25120190, 6900402, -6764037, -4466229, -25179246, -11764452, -50134616, 11805254,
+17702782, -43410844, 24063628, 4795331, -12596065, 2597382, -12275553, -1213865, 9343164, 12673375,
+22216256, -26148834, 2545842, 30151744, -3350611, -14374182, 27116812, -11917997, 1899449, -16057809,
+-6517613, -32063542, 8358543, 772557, 18115098, -12654047, 1343788, 22523346, -10662256, 360240,
+23241678, -45625976, 2967823, -52231096, -16616692, -34992708, 27935542, 9876277, -2049773, 11718281,
+-10249939, 12784507, 35503272, 9547175, 55122684, -30719216, -35241280, 32469952, 8840116, -23834384,
+-22372484, -9139154, 20354924, -19569482, -755377, -16925930, -21849572, 12815646, 16042777, -32583232,
+-18941342, 27992450, -497679, 9874130, -6071473, 15333570, 6810745, 28254980, -16468515, -12236899,
+7166153, 6500433, -8178155, -29564408, -21609592, -23396298, 31272730, -14561013, -24217174, 6996502,
+-6341519, -8003672, -15967615, 5992553, 7150584, -2684892, -4756140, -8715562, -14717242, -2608656,
+-3345243, -10763188, 383863, -5291937, -10102300, 6082748, -5966247, 5592585, -5887327, -5034776,
+14760192, -5903433, 6971269, 5122822, -14078903, 6228777, 1852205, -5740761, -17071958, 23145042,
+15234786, -6635188, 3587372, -11468100, -8685498, 7009924, -214748, -14718316, 5117991, -5937256,
+13294534, -3635153, -2484639, 2485712, 6191196, -33851860, -68504192, -34213172, -13007308, 30036316,
+39127688, -74772696, 12953084, -29657822, -40523016, -8258149, 46896748, 30023968, 25588342, -16072841,
+-18017388, -21510270, 23667954, 16750372, 36499704, 4838818, -47347720, -18477486, 35639100, -5387500,
+10470593, 31981400, -15229417, -22000434, -34635152, -34616364, 231928, 22705882, 48842904, 36250060,
+23983098, 9909026, -49948860, -53127136, 18613852, -36623188, 8674760, 46992312, 18653042, 3280281,
+-23665270, -42347304, -7279433, -18189724, 14239964, 11194832, 7951595, 29502130, -4596689, -5580237,
+7710003, 21444234, 34571804, 35949412, 12127377, 32028108, 10702522, 11580306, -7057705, -35624068,
+-14074608, -15381888, -29353954, 22191560, 20575578, 15462419, 15206332, -6679748, -35243964, 5959804,
+10451266, -421444, 23356570, 15203647, 12209518, -2647311, 1538135, 3587908, 24042690, 24437828,
+18371186, 5499706, -4532801, -17683454, -3388729, 10548440, 2938295, -5121212, -187368, -14012868,
+-6693707, -8040179, -9415642, 7505992, 26239028, 13105556, -4933844, -2494302, -19814832, -1868848,
+6781754, 13467407, 14651207, -4493073, -6431177, -30515206, -17859548, -4274030, 81068, 12499965,
+10123238, -5875516, -7536057, 5142687, 1808718, 3350075, 7405061, -8393440, -3212636, -1542430,
+4862977, 8346732, 624381, -2689723, -2457795, -12662100, 21192442, -60351268, -121411744, -62691492,
+11719892, 47356848, 115472344, 112976432, 47042240, 48051020, 34483756, 1840394, -57573500, -97520456,
+-146939952, -43881680, -61496416, -10729902, 59907276, 106827112, 89801864, 79313552, 43687332, -1005559,
+-28019830, -37553584, -8069707, -65017752, -51657720, -49057652, -32174674, -26396870, -12279311, -2324114,
+22341346, 52674552, 54220204, 53317188, 39007968, 50794432, 26911728, 29049548, -9542880, -2131915,
+-24014236, -62963148, -91231008, -110187920, -53413824, -21487722, 17113298, -2839510, 11607149, 25624312,
+33469606, 71484360, 82386064, 109236048, 69641824, 7041599, 31807990, -16495896, -60360396, -52765820,
+-105075304, -122541320, -91645472, -56626460, -24384140, -19188304, 44069584, 49824840, 138174464, 113186344,
+82778512, 81086296, 38805028, -4942971, -54932096, -79373144, -57985280, -69497400, -95481952, -45326400,
+2607582, -9320079, 2682744, 41748692, 58132384, 42999600, 22393422, 21742198, 37032280, 15838229,
+-2781528, -4425427, -18204218, -3043521, -16246251, -42748884, -22641994, -31874026, -51835424, -9098888,
+-9021042, 41435160, 37704980, 22743462, 40567576, 70300560, 50260244, -12310987, -8513699, -33862060,
+-30198988, -70717176, -73410120, -35460860, -15011984, 6133750, 24862492, 29518236, 43898324, 50099184,
+48352740, 50866372, 12934294, -5132486, -27078696, -32990180, -43663712, -48249664, -48510580, -20837570,
+10845329, 14587320, 21026012, 22070764, 15260019, 16369194, 17044578, 5551782, 3984119, -5629629,
+-6033892, 10413685, -6889128, -16646756, 1023276, 3924526, -2014340, -4838818, -6873022, 720481,
+-1183800, -6866579, -1421634, 733903, 66035, -76773, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-4551055,
--7092602, -5158793, 2002529, -785442, -12138651, -6896107, -530428, 1733556, -3736085, 1276142,
--4507568, 877784, -3258270, 8514773, -6942278, -3049427, -3053722, 5424544, 3746285, 8668318,
-2287070, 1799054, -3967476, 4088272, 520228, 1105417, -485331, 3279745, 4500052, 331786,
-4485557, 4254702, -2073396, 2377265, -2534031, -2828236, 315680, -2312303, 1443109, -3624953,
--6555731, 1762010, 2340220, -1633161, 1823751, -3136937, 2951180, 4013647, -6924024, 1344862,
--382789, 2597918, 2226404, 356482, -6833830, -2056753, -3003256, 2258616, -80531, 679142,
--2193655, 1257889, -3505230, 160524, 3803731, 2419140, 257698, -1953136, 1259499, -5598490,
--3138011, -4115116, 744640, 697395, -348966, 5898064, 28991, 5140539, 75162, 537945,
-481573, -25233, -2788508, 2085207, -168577, 1028645, -596464, 660888, 978179, -384936,
--972810, -384936, -292058, -300648, -161598, -1502165, 258772, 1544041, 894427, 15032,
-175020, -423054, -678068, 653372, -14011257, -446140, 738198, 198105, 2298344, -4947803,
-3628711, 2035815, -2598455, -8352638, 5488432, 5628018, -1329292, 4682588, 3380139, -4632659,
-9192841, 1910187, -4166118, 4936528, 352187, 4612258, 674847, -8017094, 3040837, -1525787,
--2968359, -3118146, -2435783, 5237176, 4062502, 321049, 4250944, 1531693, -4023848, -4985920,
--456877, -1171989, 2139431, 1447404, -3917547, 926102, 2035815, 1917703, -3444564, -2894808,
--4562866, -1609002, -1139777, 906775, -1118839, 6113886, 2618856, -956167, -3104188, 1139777,
-2547453, 1312649, 6590628, -1107028, 3319473, -399432, -2168422, -4012573, 2823404, -914828,
--1857573, 3858491, -1193464, 1279363, -864362, -808528, -4449586, 969052, -1261647, 5223217,
-6473590, -3904125, -3962107, -2791729, 1089848, -2506114, -1275068, -1619740, -1610076, -1748052,
-1036698, 2405182, -156766, 616865, 719944, -259846, 77309, -1187022, -2645700, -4149475,
--9535901, -5700496, -2082522, 6831146, 867047, 1267552, 4173635, 1120987, 1788317, -9989557,
--9180493, -5848672, -1552094, -46171, 4205310, -3005403, 3285113, -1721745, -6181532, 1914482,
--925565, -4227859, -91805, 5904507, 8575439, 3889630, -3962644, 2299418, 250719, 6190122,
--52613, -4942971, -193274, -2888366, 6072010, 2658585, 2835215, 6163278, -1090385, 445066,
-8257612, 7231651, -295279, -38655, 546535, -463320, 2181307, 602369, -6055367, -8015483,
--2848100, -1021129, 5369, -2659122, -8946417, -952409, 2455111, -4866735, -2390686, -3171297,
--2724083, 942745, 1126355, 2942053, -6240588, -4983236, 4781373, -2034204, -1104880, 986769,
--388158, 3126199, -6010270, 2371896, 2204929, -2384244, -2301029, 2390149, -2635499, 3812320,
--1515587, 33286, -17180, -1505923, 740345, 2817499, 1552094, 317291, 1698123, 483184,
--796180, -1540283, -860067, -888521, 335007, 430034, -272194, -226560, 406411, -139050,
-12744779, -4890357, -3874597, -620086, 218506, -4765803, 42950, -3334505, 6130529, -1500017,
--7580618, -10558103, -2711198, -6993818, 9745818, 791348, 6915971, 5826123, -9241159, -520228,
-3879429, 2805688, 4912906, 914291, -594853, -838592, 2304787, -3063386, 3529390, 1948841,
--3295851, 2039036, 150324, 2381023, 5299453, -2861522, 2105608, -338766, 3027952, 2605435,
--1084479, 3591130, -1017370, 3123515, -2386928, 2848637, -7485055, -3182034, -2733210, 2105608,
-6473590, -4755066, -3142306, -1755031, 394600, -2173254, -2867965, -1519345, 2621541, 2123861,
-3744138, -1242319, 2134062, -2205466, -2324114, -217970, -1396401, 2590939, -34360, -3910568,
-2199560, -2283312, -3849365, -1429687, -2394444, 1693291, -2808909, -7623567, -1080184, -3295851,
--3248606, 1653562, -2103460, -4589173, -933619, 970663, -329102, 276489, -45097, -2881923,
-92342, 1521492, -1089848, -1204738, 306016, -58519, 550830, 489089, 1495722, 434865,
--1298154, 862215, -230318, -460635, -501974, -1290101, -1209570, -1315871, 2166274, 3345243,
--1291711, 5071283, -7919383, 3560528, -4727149, -5219459, 7687455, 2869038, -9036074, 957241,
-74088, 2743947, -6497212, -4154307, -550830, -5261872, -9604084, -9301289, -6129455, -9282498,
-4015258, -953483, 1431835, 5053029, -8144869, 5398237, -2286533, 2536178, 1682017, -813896,
-865973, -1163936, -1152125, -5306432, -3166465, 6971806, -2542084, -5767604, -5299453, -501437,
--2367601, 2183454, -5064304, -7861938, 1229434, 7337952, -1090385, 4453344, -2509335, 2433636,
--3910568, 2998961, 1246077, -5371931, 7939784, 1421634, -1642288, 1859721, 7303055, 6725382,
-3554086, -711354, -8097624, -1364189, -6746320, 1955284, -1464584, 1133871, 1193464, 1891396,
--6131066, -47245, -438087, 2973728, 6304475, -7865159, 1064615, -2302639, -7351374, -832150,
-2166811, -752693, -164283, -707059, 2437931, 475668, -2126009, -1466731, -1535451, -943282,
--2534568, 86973, -202400, 1425392, -3058554, -2155537, -227096, -411780, -373662, 139050,
--228707, 490700, -1106491, -1153199, -290447, -196495, -803696, -209380, -212064, 1362042,
-1277216, -26307, 37581, -1422708, -2296734, -823560, 121870, -9019968, -8642011, -5614059,
--9517648, -11278584, -10752451, 4555887, 4975720, -6916508, -1832340, -6261526, -10220948, 5471789,
--2683281, -8863739, 3040300, -602906, 444529, 901406, 3002182, 988916, -329102, 2284923,
-3056406, -5095979, -4911832, -1317481, -5987185, -421444, -6381785, -11015517, -892279, 6673843,
--7997229, -6112812, 4303021, -4205847, 477278, 1700270, -4135517, -3311420, -3512210, -11867532,
--5174362, 2554969, -3428995, -3929895, -7518877, 3345780, 6641093, -2411624, 10260677, -5698885,
--2729989, -43487, -2529199, -8702677, -658741, 1996623, -333934, -1830730, -7648263, -1250909,
-7433515, 3773666, 2157147, 3882651, 2724083, -1968706, 14258218, -4496294, -5608691, -5290863,
--6400038, 2525441, 8077223, 5552319, 569620, -1320703, -4160213, -1468342, -178241, -1925219,
-290447, -2582886, 941135, 5961952, 3799436, -2928094, -680752, -1060320, 2092723, -1234803,
-2282238, -2477123, -1311039, 372588, 413927, -615254, 734439, -1430224, 1483374, 61740,
-1154273, 1004486, 661425, -696322, -1212791, -295816, -1225139, 16069083, 10945724, -454193,
-9999758, -794032, 1500017, 1949378, -5402532, 9124121, 139586, 8055211, 7719667, -6165963,
-10014253, 196495, -7565585, -12503724, 11494943, 5595806, 11419781, -9497246, 6575058, 3586835,
--10469520, -10335302, -6110128, -2905546, 11002632, -10405095, 9283572, -856309, -1007707, 6704981,
-6312528, 8604967, 3175055, -4644471, 4207458, 8090108, -4860293, 8088497, 12259984, 5243618,
-7444789, 3123515, 2113124, 2123861, 327491, -6629282, 2474438, 714575, 499290, 5655398,
--3960497, 3390340, 3759707, -1588064, 10693395, -6228240, -3801583, -2373506, 9235790, -1638530,
-7627862, 3896609, 5156645, 4667556, 898722, -13000329, -2020782, -10412611, -5676336, 13630616,
-7090454, -6017786, -364535, -7428146, -6691559, -3441343, 11298985, 1058710, 3889630, 2258616,
--1768990, 2374043, 4045859, 7139310, -2007360, 4201552, 2980707, 2626373, -2439005, -1486059,
-1118839, -1195075, -61740, 1999307, 2610803, 1157494, 1126355, 3221762, 3076807, 1224603,
-85899, 1588601, -667331, 2749316, 4072703, 2018635, 106837, 4559108, -14037027, 8929237,
-8573292, 25295746, 1030255, 2224793, -1229434, -3426847, -1613834, 8580808, 7820062, 6820945,
-9852655, 4019553, 15538655, 4574140, -6112812, 1517734, 13545253, 5371394, 1400696, 2132988,
--6922414, -9966472, 6436546, -4935991, -9768366, -20712480, -305480, 8279623, -610959, 4893042,
--7161321, -3776887, -2663417, 1574642, -2254321, -6194954, -3016141, -16681116, -4342212, -14156212,
-1213865, -7453379, 5713917, -8115878, 3112241, -7802345, -2701535, -477815, 250182, 1221381,
-1597728, -10342281, 5019743, -1548873, 2307471, -5400385, 155693, 8276939, 3338800, 11435350,
-6409165, -3478924, -668404, -2347737, -1159641, -2673617, -3630858, -170725, 4697084, 3045132,
-3492882, 2251100, -16338592, 10799695, 10596221, -3953518, 6070937, 4757750, -8633958, 4180077,
-2595771, 569083, -1829656, 1530619, 5587216, -4883915, 3258807, -1356136, 287763, -350040,
-1235877, 3020436, -2492155, -1081795, 4149475, -2896956, 212601, 174483, 1576790, -1872606,
--3466576, 2173254, 140123, -1032940, -1034013, 582505, -121333, 2037962, 2298344, 2633352,
-38655, -2683281, 27225798, 9816148, -4545149, 13449153, -8829379, 9381282, 6239514, -12809740,
-2734821, -16114717, 331249, -5471789, -11348377, 6079526, 207232, 4655745, 6657736, 8266202,
-13254806, 5542656, -940598, -3410741, -9022653, -16240882, 5769215, 6383395, 1768453, -5658083,
-8786429, 1163936, 9283035, 5539434, -16952772, -6416145, 2285460, -12454868, 644782, -872415,
--2368138, 3696356, 2757369, -2915746, 12502650, -7196755, 497142, 7035694, -6160057, 4842039,
--2688650, -7552163, 5084705, -30602, -978179, 7233799, 4767414, 301721, -3737695, 14941654,
-668404, 8422968, 846645, -4604205, -5165772, -12453795, -4825396, 5261872, -327491, 4498442,
--1410897, -9689983, 3894462, 3266323, -14270029, 4203699, 7368554, -3757023, 7859254, 1906429,
--8096014, -8189966, 9370008, -127238, -18738406, 2412698, 2029909, 867583, -1895691, 1184337,
--2564632, 551366, 5610301, -1632088, 909459, 1495722, 1665911, -4634270, 1439351, -1598802,
-1315871, 3577171, 3702262, 2752000, 1295470, -3004867, 1423782, -174483, -264677, 1351841,
--3440269, 58519, 2385854, 3350075, -2141041, -1209570, -4031364, 825171, 4268661, -4068408,
-1723356, 1608465, -28284508, -9389872, 29560112, 8208220, 4720169, -4447976, -795643, -4541928,
-6029061, -9555228, 12922483, 7395934, 6058588, 6228777, -4577899, -445066, -533113, 4159676,
-8697309, -13085155, -7770133, -4177393, 9944460, 3595961, 5546414, 5975374, -1366873, -9379135,
-3074660, 738734, 18054968, 14216879, 3732864, 10798085, 586263, -5196374, 2233920, -1485522,
--2481417, 6963753, 8548059, 7048042, 17468168, 8449274, 6850473, 7683697, -7929047, -12971875,
--6092948, 5928129, -11074573, -5465883, 10755672, 11485279, 6288906, -5178120, 10147934, -3986267,
-1102196, 2443300, 5827197, -2972654, -6338298, 3643206, -5716602, -17891760, 773631, 5805185,
--9765682, 1290101, -1764158, -2515777, -1791538, -5779416, 14564234, -1505386, 8323647, -20871394,
--19872276, -16811038, -7678328, 1729798, 2040110, -531502, 1147293, -338766, -4441533, 2195265,
--4882304, -1420560, -2142652, 5111548, 805306, 1860258, -3922379, -706522, -3491809, -1248225,
-2765959, 4418448, 4722854, 4558034, -67109, -3022046, 2466922, 4017942, 2472291, 4000762,
-1389422, -361851, 1678795, 589484, 818191, -1179505, -2735357, 3234647, 3587372, -1167157,
--1034550, -777389, -604517, 14556181, 22890566, -33740188, -4788889, 1999307, -272730, -4055523,
--8426726, 9223442, -10812580, -17172352, -1762547, 16741783, -2416456, -9810242, 3093987, -13719736,
--7461969, 529892, 8780524, -14380624, 1578937, 15661598, 16069083, 402116, 5680094, 14035953,
--8051990, -12569759, -17564806, 1684701, -17508972, -3754338, 7349226, 6909529, -15495168, -14623290,
--8894877, 6272800, -4128537, -2746632, -4080756, 13936632, -20750060, -6083285, 3210488, -11199664,
--3872450, 19864, -13096966, 588411, 5364414, -731755, 17133162, -1180579, -6962142, 1436130,
--884226, -5652177, 3273839, 8419747, -7825431, 12015171, -5961952, -22426708, 1035624, -8766028,
--4815195, -643708, -2414309, -29580514, -4980015, 13529147, 11684995, 8164196, 17628156, 17952426,
--24338506, -2754685, 1552631, 5033165, -7082938, -12135967, -242129, 5468030, 6469295, 5516886,
-4306242, 2034741, 3471407, -6523519, 23622, 3852049, -2058363, -1536525, 711891, 1227287,
-3491809, -3912178, 703301, -1607928, 1631014, 2240362, -5201743, 704375, -541166, -3613678,
-1511292, -868657, 674310, 110595, -95563, -4560719, 2295660, 259846, 1195075, -3060701,
--2258079, -2051384, -1905892, -32273458, 8995272, -6016176, 10984916, -10339060, -122407, 16858284,
--5657546, 23958938, 5499706, 4604205, -10320806, 4519916, 11871290, -7338489, -1501091, 15489263,
-9979357, 11654931, 1637993, -17940616, 11387032, -11588896, -1093069, -6991670, 1763621, -8923331,
-5173825, -2336462, 5042292, 4798552, 8565775, 8684424, 9640591, -11453604, 2724620, 18262200,
-3893388, -3292629, -3671660, -9187472, -7406134, -49392, 671089, 3278671, 15371151, 1315334,
-8479339, 8210904, -580894, -3928285, -3741454, 13943611, -16296717, -3555159, -14421426, -11891691,
--3338263, 89657, -24196772, 6279779, -7606924, 14809047, -3069291, 635655, 10284836, 2093260,
-24845848, 20510616, 29595546, 11181947, 1257889, -3451006, -3000572, -5004174, -1451162, -5949604,
--16291885, 11024644, 13510357, 6424734, -2202781, 1493575, -11472395, -15628312, 7257421, 1912334,
-2164664, -5052492, -2145873, -5481452, -2945811, 4766877, 1597728, 6254010, -401579, 1357747,
--3587908, 4345433, -12921409, -3463354, -441845, -571768, -2419140, 2216203, 605590, 773094,
--878858, -3217468, -618475, -1381906, -849867, 3959960, 495532, 425202, -2641942, 787053,
-664646, -287763, -5752035, -4281546, -9451612, 12746926, -3721052, -2775623, 29734058, -6124624,
--6527814, 33059974, -460635, 18814642, 13888314, 1112933, 7797513, -4434017, 6117107, 5741298,
-3651796, 4660040, 15285252, -10528575, 18417894, -10136123, -301721, 3772592, -2476586, -13349295,
--11913166, -355945, -19345606, -6186901, -21134460, -1461363, -12550431, -9402757, -6867116, -6044093,
-3166465, -17012366, 19753628, 3094524, -12809740, -9577777, -597000, -2487323, -3127810, 5102958,
-2723546, 19407884, 2240899, -224949, -9905268, 1631014, 4034585, -732292, -10567230, -4588099,
-12194486, 13279502, -774705, -11288785, 4628364, -2226404, 17339320, 19293530, -7524246, -4997195,
--3553012, 2188286, -7400229, 7798050, -24005110, -2257542, 28399934, -25616796, -12612708, -5938329,
-1851668, 2265595, 3399467, -2319819, 7612830, -4541928, -1269700, 13821205, -2167348, 10016937,
--6771016, 10091026, -8825621, 6911676, 5641440, 13718662, -278636, -2320893, 5799817, 9030706,
-808528, -2162516, -1415192, 919123, -4902169, -1495186, 4625680, 6095633, 1921998, -1975685,
-5922223, -4624069, 4866198, 4063576, 4440460, 2444910, 163209, -7209640, 7250979, 4285841,
-3357054, 1592359, 3421478, 6343130, 1460826, -4976257, 2484102, -4055523, -3124052, 5250061,
--1276679, 4545149, 4926865, -1922535, -3582540, 2027225, -17297980, -9479530, -2705830, 13387413,
-16136729, 11059541, -10268193, -26353382, 45624364, 11477763, -28632400, -28727426, -4304094, 6956774,
-19432042, -24992952, -4412005, 4667019, -361314, -3594351, 26146150, 5610301, -15349139, 8195872,
-1079111, -733903, 13765370, -2511482, 7522635, -17040820, -5773510, 29944512, 11061151, 23613730,
-7451232, 21349208, 3731790, -7841537, 15009837, 13681081, 21442088, 10559714, -24218784, -9183177,
-5235565, 12517682, -9730248, 3692598, -9375914, -15658914, 1580011, -1810329, -9373229, 7284802,
-10142565, 8808978, 6431177, 6039261, -4622459, 16207059, -133681, -16102369, -11697880, 14576582,
-7896834, -25289842, 10991895, 4489852, 8124468, -22097606, -15111842, 14209362, 21943524, 12409234,
--4941360, -23630910, 5339718, -1045288, 20143396, -6728067, -27101780, 11356430, 15796890, -5990406,
-16441135, 13538811, 5572183, -10821707, 1409823, -142808, 3153043, 1186485, -745177, -5757941,
--2430952, -7226820, -760746, -1428077, 3764539, -4414690, -2660732, -1483374, -3321084, -2019172,
--1772211, -2018098, 8383240, 2524904, 85362, 8169028, -2044941, -7707856, -5192079, -4131222,
--3348464, 354335, -5637682, 2360085, 3400004, 2887292, 2132988, -7403450, -2896419, 6211597,
-5105643, -766652, 10897943, 21285322, 8205535, 22471268, 3767760, 10310069, 7679939, 37430640,
-50927036, 3984656, 10193568, -32407676, -10296647, 19607062, -16514149, 38554848, -7670275, 6080063,
-10386305, 22580790, 12524662, -5376226, -16356846, -19170586, -6326487, -3151432, -24041616, -11393474,
--9566503, 15428059, -8946954, 4595615, -15420006, 2055142, -6063957, -22496502, 23380192, 16217797,
-18821084, 8291435, -11482058, -11115912, -26188564, 483721, -23606750, -7170448, -2017024, 3112241,
-12071542, 9525701, -7672959, -5435818, 9996536, 22111028, 5924908, 8454106, 16123307, -20565378,
-14555107, -11681774, -10815265, -20764020, -9117679, 9495099, 8007967, 1323387, 24254754, -5315559,
--9028021, 3718368, 6327024, 33348274, -10996727, 13368623, 13144211, -32058172, 8590, 4005594,
--7093139, -4724464, 11054172, -6362457, 913754, 13583371, 6990596, -19729470, -23710366, -22867480,
--10735271, -8512088, 19040126, 16623134, -4589173, -7268159, 944893, 2110440, 12549894, -1419487,
--3965866, 7801808, -1464584, -1301375, -3326989, 5651103, 7721815, -4109210, 7391102, 6984691,
-7148436, 1262184, -3043521, 6319508, -4381941, 3786014, 8050380, 593779, 4800163, 6445136,
--10949482, -477815, 5327370, 5957657, 8024610, 944356, 7184407, 378494, 462783, -2469606,
-4125316, 6041409, 31903554, -7567196, 4663261, -14266808, -4087198, -19018652, 15111306, -27362700,
-1257352, -22033720, 4359929, 9433896, 3423626, -13188771, 45197016, -3176128, -6080600, 4103841,
--25724170, 1475858, -17381732, 597000, 4884452, -5211943, -592706, 10644003, -9445707, 405338,
-13678397, 1116692, 3460670, -22136262, 2818036, -1873143, -1380832, -5609228, -27460410, -15285789,
-6785512, 2242510, 12191802, -31822486, 3469260, -29617558, 15015743, -20201378, -32309428, 16357383,
-29788820, 5131412, 14652281, -22317724, 22095996, -5484137, 3298535, -13691282, 18403934, 7408282,
-19110456, 5994701, 23186918, -21012590, 4012036, 1152662, -3601867, -16663399, -13583371, -15663209,
-17768280, -4742718, 24148454, -15016816, -11518565, 2692945, 3216394, -13434658, 6971269, -7908646,
--31454730, 13810467, 20837034, 34586296, 12099460, 24527484, -14184666, 26307, -15992311, 26275000,
-8862665, -5061082, -10480794, 12460774, -8993125, -2555506, 1329292, -7960722, -13394929, -8953933,
--6352794, -5352066, -17838610, -7793218, -14870787, 11421392, -2843805, 6769406, 13340705, 3479997,
--10123238, -1021665, -10131291, -4399121, -15136538, -8413841, -16021839, -2863670, 26208428, 5284421,
--2025614, 5820218, 7844221, -15239618, -6995965, -958315, -2057826, -6371584, 6633040, -3070902,
--23232014, -2084133, -5367636, -52807160, 6482180, -16870094, 48863844, -9197672, -24679956, 9811316,
--1419487, -24587078, -4214974, 4092030, -14811732, 36892160, 5228586, 3539053, 16729971, -20747376,
--31947040, -19682224, 45009648, -3593814, -9596031, 29753922, 16756278, -14192183, -14139032, -7950522,
-35668628, 5004711, -8750459, -13963476, -6785512, -27888834, 18769008, -3249143, 7577396, 17940616,
--6395207, -28882582, -3590593, 37249176, -1654099, -9290014, 17893908, -8156680, 22217866, 14625974,
--1951526, -27523224, -14085882, -3773129, -25538950, -14948097, -14737643, 1998234, -3554622, 21510270,
--15018964, -5186710, -142271, 55300388, 19175956, -9516574, 11149735, 6524056, -3293166, 28085864,
-13615583, -10624675, 4365835, 22708566, 25617870, -15652471, -11206643, -37548216, -30183956, 17166984,
--11292543, 18532248, -534187, -22073984, 5375152, -1743220, 6983080, -14685567, -11233487, 20794622,
-5235029, 2762201, -2084670, -2424509, 13785771, -6620692, 7091528, -3528316, 8595303, 17470854,
-4625680, -12620761, 2064269, -4847945, 9501005, 7862475, 2589865, 11373610, 17666812, -6942815,
-14249091, -1379758, -18945100, -4895189, 592169, -10585484, 4250407, 13791140, -272194, -6979322,
-843424, -2579128, 17974438, 15420543, 1561758, 7299297, 9258339, 4843650, 12006044, -15411953,
--11476689, 5516349, 3095061, -3275450, -1370632, -2537252, -5765994, -5684926, -59680720, 20480014,
--12782896, 31747324, 32278290, -18722836, 15235860, -31965294, -47995724, 1163936, -33758980, 4429722,
--4236985, 26101054, -19398220, 18620830, 15971910, 26178900, -39882528, 4342749, -24414204, -22369800,
-2406792, -28876138, -18634252, 26196616, -7661685, 9943923, 30586610, -6075231, 10064182, -25218438,
-2889976, -27804544, 25761750, -23048942, -15311558, -17015050, 28738164, 23036058, -16511465, 31501438,
-20855824, -6666326, 31257162, -1743757, -33085744, -9141838, -3904662, -25776246, 5801427, -54536956,
-5468567, -13874355, -26179436, -21137144, 24375550, -14559939, 50542100, 37563248, -56511568, 25770,
--1478543, 2714419, 26121992, -44361644, -30942556, 30522186, -25433186, -31774704, -36597952, 2481954,
-75163536, 37371048, -34979288, -22007950, 3047816, 27374510, 10460930, -36557152, 5439039, -24414204,
--14358076, -1273458, -4403415, 1437203, 24127516, 5733245, 14307610, 9516574, -28135794, 7592429,
-12632036, -3942780, -10138807, 1521492, -24008868, 21409876, 7762080, 5880884, -31843424, 5352603,
-16428787, 4673998, -7521562, -5916855, 14122926, -23194434, -1495186, -17286706, -9580998, 22805740,
--24059334, -943819, 14344654, -12032888, 11247446, 13701483, 3558917, 2088428, 10030359, 3318399,
--12801150, 18737332, -14424648, -11258720, -6545530, -19704774, -6808597, -18464602, -17700098, 6441377,
-27705224, -31722628, 15244986, -52969832, -8336532, -20909512, -18252538, 27302570, -36308580, -56439092,
-32251984, 48736604, 11502996, -10035191, -45134200, 2535105, 17087528, 16998406, -7909183, -18435610,
-1834488, -4940823, -6259378, 5177046, -6991133, -15537044, -29681446, 3182571, -18014704, 3833258,
--16186658, -33934000, 20365662, 14726906, 25133074, 351114, 27217208, 14911053, 3783329, -9503152,
--14465987, -23549842, -16761110, -9807021, 6177774, 15297063, -10975789, -5750425, -38395396, 35163436,
-42000484, 22991496, -21893058, 22036404, -29772714, -1025423, 6485401, -64990908, 4981625, 5852967,
-30182346, -39003136, 49371184, 18953154, -35807680, -20685100, 14715632, -6731825, -26287348, -32471026,
--34639448, -47457240, 34333432, -15293842, 5234492, -72285376, -28754806, 3920768, 597000, 15973520,
--11619497, 2421288, 12075837, 12390981, -34459596, -8358007, 5414880, 18523120, 13640816, -3445101,
--13322452, -6110665, -2994666, 17259326, 2886755, -11596412, -1451162, -9121974, -3461207, 15923054,
-7415261, -8611409, 17419850, -17943836, -10317585, -13514115, 16853452, -7227356, 1965484, -8281771,
-7346542, -24772298, 3558917, 9674951, 3807489, -4734128, -10632192, -9602473, -12427488, 11839077,
-2647311, -4573067, -14209362, 14245870, 833224, 609885, 2107218, -25211994, -12131672, -16657494,
-2123861, -8650601, -5191005, -49203684, -6680285, 17721036, -23166516, -21619254, 20138564, 20377472,
-4060355, -19556596, -66505420, -9937481, 12884902, 7735773, 28697360, -818728, 16646219, -4524748,
--510027, -8558259, 1156957, 17374216, 1948305, 507880, 17000018, -4776004, -4195110, -22671522,
--2142652, -3841312, -2582349, 3624953, 13560285, 18371186, -3715684, -244276, 14548128, -3562139,
--28192702, -2196876, -25030532, 3368865, 3357591, -33028298, 23708756, -45410152, 10064182, 12132209,
--19828790, -1687922, 58486716, -16869020, 19724100, -12663711, 10427644, -44146896, 4700305, 25335476,
--710280, 21810380, -5173288, 1971390, -1444720, 27953794, -18219788, -22220014, 25097642, -23550380,
--28645822, -733366, -45744624, 30147986, 25373056, -9541807, 9797894, 3833795, -268435, -39352636,
--6406481, -3383361, 17177184, 6027987, -16414828, 15046881, -1100049, -20272782, -13440026, -12776991,
-2659122, 2247879, -2682744, -900869, 12474196, -12755516, -3506841, 8107825, -13079786, -7558069,
-10132365, -13937169, 927176, 11440182, 794569, -3838627, 5232344, -957241, 1236951, 9906342,
--3741990, -3670587, -7893076, 2964064, -4956929, -5311801, 4631586, 5192079, -11119670, 1296543,
--10375030, 9596031, -11818676, 6113349, -2147, -2654290, 1276142, -3134253, -1298154, -1010928,
--24344412, -73437496, -34567508, -11567958, 23879482, 53955528, -49584324, 10736881, -14407468, -50005232,
--7064148, 44777180, 12000139, 36872296, -31261994, 9196062, -10866267, 2102387, 21749178, 3611531,
-11792906, -7140383, -63677724, 18786724, 3073586, -27084600, 27679454, 21090974, -19274202, 19491098,
-2308545, -20795694, 6314676, -12878459, 39758512, 4809290, 16085189, 696322, -40853728, -32772212,
--11042898, -24304146, 26548266, 38097972, 39226472, 31512712, -10946798, 4332549, -32097902, -4915590,
--3239479, -13582297, -16917876, 2649458, 3092377, -44178572, -12920872, -17325362, -1216013, 19662898,
--21701932, -5098126, 7625715, -47245, 22699440, -25248502, -1024887, -28591598, -14975477, -21165062,
-11605002, 7471633, 22677428, -3177202, -2358474, -26966490, -8054138, -12869870, -3382287, 11218455,
-15530602, 31785442, -20477330, 5679021, -17743046, 6232535, 11955041, 3192235, -9766756, -4144644,
--3433290, -4148939, -1451162, 8264054, 8860518, -2688650, -1047435, -4440996, -6289443, 3919695,
-8818642, 2806224, 978716, 2199023, -7445326, -8864812, -8112657, 13202193, -383863, 9066139,
-7648263, -1492501, -10449119, -11423539, 1665374, 2910914, -8671539, -3003256, -7547868, 5342940,
--5470715, 1664300, 1581622, 5586679, -2953864, -3687230, 1423245, 1856500, 19069654, -30870078,
--121735480, -64207612, 13144211, 51173460, 114566640, 87520696, 49303540, 16576426, 25710212, -8192650,
--48204028, -93235152, -124003760, -31402116, -35947804, 1829656, 60381872, 86106576, 57753352, 77144592,
-17760226, 16320876, -9034464, -39085812, -44229572, -35800700, -38006704, -47027744, -37682432, -16148540,
--2424509, -619549, 30116310, 39039104, 74721696, 35265440, 11625403, 30636002, 47688632, 15158013,
-9101036, -38524248, -52668648, -86129664, -39782136, -45198088, -32673964, -19499688, -15266461, 6323266,
-10608032, 36142148, 74115568, 59569048, 65069828, 48119204, 59035400, 43867724, -35504348, -32614908,
--82030120, -63602560, -46495704, -104545944, -80806592, -49507552, 3929895, 63265944, 60369524, 71256728,
-89193584, 76190576, 41084584, 49425408, 1976222, -19454592, -52309480, -76060648, -76292576, -63052268,
--37826852, -8249022, 10888279, 18323942, 21182778, 35179540, 25507274, 41162968, 26134876, 10223633,
-6768869, -1685238, -4026532, -1090922, -28506772, -20043538, -3994320, -13382581, -34053720, -9693204,
--12197170, -12805445, -2317672, 25358560, 48223356, 39826156, 4258460, 39140036, 27724550, -5282810,
--32276680, -51323784, -47537772, -21697102, -23513336, -14889041, -8125005, 13423920, 29911762, 41248864,
-47119012, 33740728, 13318694, 14351096, -8957154, -25884694, -43292196, -39007428, -17136382, -1905892,
--12637404, -4318590, 12534325, 15674483, 16426102, 15391015, 4071092, 6305549, 10040023, -1909650,
--8971650, 105764, 3290482, -6816650, -7377143, -1222455, 3005940, 1996086, -4589173, -2531883,
-2313377, 876173, -3190087, -4255239, -1751810, 462246, -71941, -90194, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-7092602, -5158793, 2002529, -785442, -12138651, -6896107, -530428, 1733556, -3736085, 1276142,
+-4507568, 877784, -3258270, 8514773, -6942278, -3049427, -3053722, 5424544, 3746285, 8668318,
+2287070, 1799054, -3967476, 4088272, 520228, 1105417, -485331, 3279745, 4500052, 331786,
+4485557, 4254702, -2073396, 2377265, -2534031, -2828236, 315680, -2312303, 1443109, -3624953,
+-6555731, 1762010, 2340220, -1633161, 1823751, -3136937, 2951180, 4013647, -6924024, 1344862,
+-382789, 2597918, 2226404, 356482, -6833830, -2056753, -3003256, 2258616, -80531, 679142,
+-2193655, 1257889, -3505230, 160524, 3803731, 2419140, 257698, -1953136, 1259499, -5598490,
+-3138011, -4115116, 744640, 697395, -348966, 5898064, 28991, 5140539, 75162, 537945,
+481573, -25233, -2788508, 2085207, -168577, 1028645, -596464, 660888, 978179, -384936,
+-972810, -384936, -292058, -300648, -161598, -1502165, 258772, 1544041, 894427, 15032,
+175020, -423054, -678068, 653372, -14011257, -446140, 738198, 198105, 2298344, -4947803,
+3628711, 2035815, -2598455, -8352638, 5488432, 5628018, -1329292, 4682588, 3380139, -4632659,
+9192841, 1910187, -4166118, 4936528, 352187, 4612258, 674847, -8017094, 3040837, -1525787,
+-2968359, -3118146, -2435783, 5237176, 4062502, 321049, 4250944, 1531693, -4023848, -4985920,
+-456877, -1171989, 2139431, 1447404, -3917547, 926102, 2035815, 1917703, -3444564, -2894808,
+-4562866, -1609002, -1139777, 906775, -1118839, 6113886, 2618856, -956167, -3104188, 1139777,
+2547453, 1312649, 6590628, -1107028, 3319473, -399432, -2168422, -4012573, 2823404, -914828,
+-1857573, 3858491, -1193464, 1279363, -864362, -808528, -4449586, 969052, -1261647, 5223217,
+6473590, -3904125, -3962107, -2791729, 1089848, -2506114, -1275068, -1619740, -1610076, -1748052,
+1036698, 2405182, -156766, 616865, 719944, -259846, 77309, -1187022, -2645700, -4149475,
+-9535901, -5700496, -2082522, 6831146, 867047, 1267552, 4173635, 1120987, 1788317, -9989557,
+-9180493, -5848672, -1552094, -46171, 4205310, -3005403, 3285113, -1721745, -6181532, 1914482,
+-925565, -4227859, -91805, 5904507, 8575439, 3889630, -3962644, 2299418, 250719, 6190122,
+-52613, -4942971, -193274, -2888366, 6072010, 2658585, 2835215, 6163278, -1090385, 445066,
+8257612, 7231651, -295279, -38655, 546535, -463320, 2181307, 602369, -6055367, -8015483,
+-2848100, -1021129, 5369, -2659122, -8946417, -952409, 2455111, -4866735, -2390686, -3171297,
+-2724083, 942745, 1126355, 2942053, -6240588, -4983236, 4781373, -2034204, -1104880, 986769,
+-388158, 3126199, -6010270, 2371896, 2204929, -2384244, -2301029, 2390149, -2635499, 3812320,
+-1515587, 33286, -17180, -1505923, 740345, 2817499, 1552094, 317291, 1698123, 483184,
+-796180, -1540283, -860067, -888521, 335007, 430034, -272194, -226560, 406411, -139050,
+12744779, -4890357, -3874597, -620086, 218506, -4765803, 42950, -3334505, 6130529, -1500017,
+-7580618, -10558103, -2711198, -6993818, 9745818, 791348, 6915971, 5826123, -9241159, -520228,
+3879429, 2805688, 4912906, 914291, -594853, -838592, 2304787, -3063386, 3529390, 1948841,
+-3295851, 2039036, 150324, 2381023, 5299453, -2861522, 2105608, -338766, 3027952, 2605435,
+-1084479, 3591130, -1017370, 3123515, -2386928, 2848637, -7485055, -3182034, -2733210, 2105608,
+6473590, -4755066, -3142306, -1755031, 394600, -2173254, -2867965, -1519345, 2621541, 2123861,
+3744138, -1242319, 2134062, -2205466, -2324114, -217970, -1396401, 2590939, -34360, -3910568,
+2199560, -2283312, -3849365, -1429687, -2394444, 1693291, -2808909, -7623567, -1080184, -3295851,
+-3248606, 1653562, -2103460, -4589173, -933619, 970663, -329102, 276489, -45097, -2881923,
+92342, 1521492, -1089848, -1204738, 306016, -58519, 550830, 489089, 1495722, 434865,
+-1298154, 862215, -230318, -460635, -501974, -1290101, -1209570, -1315871, 2166274, 3345243,
+-1291711, 5071283, -7919383, 3560528, -4727149, -5219459, 7687455, 2869038, -9036074, 957241,
+74088, 2743947, -6497212, -4154307, -550830, -5261872, -9604084, -9301289, -6129455, -9282498,
+4015258, -953483, 1431835, 5053029, -8144869, 5398237, -2286533, 2536178, 1682017, -813896,
+865973, -1163936, -1152125, -5306432, -3166465, 6971806, -2542084, -5767604, -5299453, -501437,
+-2367601, 2183454, -5064304, -7861938, 1229434, 7337952, -1090385, 4453344, -2509335, 2433636,
+-3910568, 2998961, 1246077, -5371931, 7939784, 1421634, -1642288, 1859721, 7303055, 6725382,
+3554086, -711354, -8097624, -1364189, -6746320, 1955284, -1464584, 1133871, 1193464, 1891396,
+-6131066, -47245, -438087, 2973728, 6304475, -7865159, 1064615, -2302639, -7351374, -832150,
+2166811, -752693, -164283, -707059, 2437931, 475668, -2126009, -1466731, -1535451, -943282,
+-2534568, 86973, -202400, 1425392, -3058554, -2155537, -227096, -411780, -373662, 139050,
+-228707, 490700, -1106491, -1153199, -290447, -196495, -803696, -209380, -212064, 1362042,
+1277216, -26307, 37581, -1422708, -2296734, -823560, 121870, -9019968, -8642011, -5614059,
+-9517648, -11278584, -10752451, 4555887, 4975720, -6916508, -1832340, -6261526, -10220948, 5471789,
+-2683281, -8863739, 3040300, -602906, 444529, 901406, 3002182, 988916, -329102, 2284923,
+3056406, -5095979, -4911832, -1317481, -5987185, -421444, -6381785, -11015517, -892279, 6673843,
+-7997229, -6112812, 4303021, -4205847, 477278, 1700270, -4135517, -3311420, -3512210, -11867532,
+-5174362, 2554969, -3428995, -3929895, -7518877, 3345780, 6641093, -2411624, 10260677, -5698885,
+-2729989, -43487, -2529199, -8702677, -658741, 1996623, -333934, -1830730, -7648263, -1250909,
+7433515, 3773666, 2157147, 3882651, 2724083, -1968706, 14258218, -4496294, -5608691, -5290863,
+-6400038, 2525441, 8077223, 5552319, 569620, -1320703, -4160213, -1468342, -178241, -1925219,
+290447, -2582886, 941135, 5961952, 3799436, -2928094, -680752, -1060320, 2092723, -1234803,
+2282238, -2477123, -1311039, 372588, 413927, -615254, 734439, -1430224, 1483374, 61740,
+1154273, 1004486, 661425, -696322, -1212791, -295816, -1225139, 16069083, 10945724, -454193,
+9999758, -794032, 1500017, 1949378, -5402532, 9124121, 139586, 8055211, 7719667, -6165963,
+10014253, 196495, -7565585, -12503724, 11494943, 5595806, 11419781, -9497246, 6575058, 3586835,
+-10469520, -10335302, -6110128, -2905546, 11002632, -10405095, 9283572, -856309, -1007707, 6704981,
+6312528, 8604967, 3175055, -4644471, 4207458, 8090108, -4860293, 8088497, 12259984, 5243618,
+7444789, 3123515, 2113124, 2123861, 327491, -6629282, 2474438, 714575, 499290, 5655398,
+-3960497, 3390340, 3759707, -1588064, 10693395, -6228240, -3801583, -2373506, 9235790, -1638530,
+7627862, 3896609, 5156645, 4667556, 898722, -13000329, -2020782, -10412611, -5676336, 13630616,
+7090454, -6017786, -364535, -7428146, -6691559, -3441343, 11298985, 1058710, 3889630, 2258616,
+-1768990, 2374043, 4045859, 7139310, -2007360, 4201552, 2980707, 2626373, -2439005, -1486059,
+1118839, -1195075, -61740, 1999307, 2610803, 1157494, 1126355, 3221762, 3076807, 1224603,
+85899, 1588601, -667331, 2749316, 4072703, 2018635, 106837, 4559108, -14037027, 8929237,
+8573292, 25295746, 1030255, 2224793, -1229434, -3426847, -1613834, 8580808, 7820062, 6820945,
+9852655, 4019553, 15538655, 4574140, -6112812, 1517734, 13545253, 5371394, 1400696, 2132988,
+-6922414, -9966472, 6436546, -4935991, -9768366, -20712480, -305480, 8279623, -610959, 4893042,
+-7161321, -3776887, -2663417, 1574642, -2254321, -6194954, -3016141, -16681116, -4342212, -14156212,
+1213865, -7453379, 5713917, -8115878, 3112241, -7802345, -2701535, -477815, 250182, 1221381,
+1597728, -10342281, 5019743, -1548873, 2307471, -5400385, 155693, 8276939, 3338800, 11435350,
+6409165, -3478924, -668404, -2347737, -1159641, -2673617, -3630858, -170725, 4697084, 3045132,
+3492882, 2251100, -16338592, 10799695, 10596221, -3953518, 6070937, 4757750, -8633958, 4180077,
+2595771, 569083, -1829656, 1530619, 5587216, -4883915, 3258807, -1356136, 287763, -350040,
+1235877, 3020436, -2492155, -1081795, 4149475, -2896956, 212601, 174483, 1576790, -1872606,
+-3466576, 2173254, 140123, -1032940, -1034013, 582505, -121333, 2037962, 2298344, 2633352,
+38655, -2683281, 27225798, 9816148, -4545149, 13449153, -8829379, 9381282, 6239514, -12809740,
+2734821, -16114717, 331249, -5471789, -11348377, 6079526, 207232, 4655745, 6657736, 8266202,
+13254806, 5542656, -940598, -3410741, -9022653, -16240882, 5769215, 6383395, 1768453, -5658083,
+8786429, 1163936, 9283035, 5539434, -16952772, -6416145, 2285460, -12454868, 644782, -872415,
+-2368138, 3696356, 2757369, -2915746, 12502650, -7196755, 497142, 7035694, -6160057, 4842039,
+-2688650, -7552163, 5084705, -30602, -978179, 7233799, 4767414, 301721, -3737695, 14941654,
+668404, 8422968, 846645, -4604205, -5165772, -12453795, -4825396, 5261872, -327491, 4498442,
+-1410897, -9689983, 3894462, 3266323, -14270029, 4203699, 7368554, -3757023, 7859254, 1906429,
+-8096014, -8189966, 9370008, -127238, -18738406, 2412698, 2029909, 867583, -1895691, 1184337,
+-2564632, 551366, 5610301, -1632088, 909459, 1495722, 1665911, -4634270, 1439351, -1598802,
+1315871, 3577171, 3702262, 2752000, 1295470, -3004867, 1423782, -174483, -264677, 1351841,
+-3440269, 58519, 2385854, 3350075, -2141041, -1209570, -4031364, 825171, 4268661, -4068408,
+1723356, 1608465, -28284508, -9389872, 29560112, 8208220, 4720169, -4447976, -795643, -4541928,
+6029061, -9555228, 12922483, 7395934, 6058588, 6228777, -4577899, -445066, -533113, 4159676,
+8697309, -13085155, -7770133, -4177393, 9944460, 3595961, 5546414, 5975374, -1366873, -9379135,
+3074660, 738734, 18054968, 14216879, 3732864, 10798085, 586263, -5196374, 2233920, -1485522,
+-2481417, 6963753, 8548059, 7048042, 17468168, 8449274, 6850473, 7683697, -7929047, -12971875,
+-6092948, 5928129, -11074573, -5465883, 10755672, 11485279, 6288906, -5178120, 10147934, -3986267,
+1102196, 2443300, 5827197, -2972654, -6338298, 3643206, -5716602, -17891760, 773631, 5805185,
+-9765682, 1290101, -1764158, -2515777, -1791538, -5779416, 14564234, -1505386, 8323647, -20871394,
+-19872276, -16811038, -7678328, 1729798, 2040110, -531502, 1147293, -338766, -4441533, 2195265,
+-4882304, -1420560, -2142652, 5111548, 805306, 1860258, -3922379, -706522, -3491809, -1248225,
+2765959, 4418448, 4722854, 4558034, -67109, -3022046, 2466922, 4017942, 2472291, 4000762,
+1389422, -361851, 1678795, 589484, 818191, -1179505, -2735357, 3234647, 3587372, -1167157,
+-1034550, -777389, -604517, 14556181, 22890566, -33740188, -4788889, 1999307, -272730, -4055523,
+-8426726, 9223442, -10812580, -17172352, -1762547, 16741783, -2416456, -9810242, 3093987, -13719736,
+-7461969, 529892, 8780524, -14380624, 1578937, 15661598, 16069083, 402116, 5680094, 14035953,
+-8051990, -12569759, -17564806, 1684701, -17508972, -3754338, 7349226, 6909529, -15495168, -14623290,
+-8894877, 6272800, -4128537, -2746632, -4080756, 13936632, -20750060, -6083285, 3210488, -11199664,
+-3872450, 19864, -13096966, 588411, 5364414, -731755, 17133162, -1180579, -6962142, 1436130,
+-884226, -5652177, 3273839, 8419747, -7825431, 12015171, -5961952, -22426708, 1035624, -8766028,
+-4815195, -643708, -2414309, -29580514, -4980015, 13529147, 11684995, 8164196, 17628156, 17952426,
+-24338506, -2754685, 1552631, 5033165, -7082938, -12135967, -242129, 5468030, 6469295, 5516886,
+4306242, 2034741, 3471407, -6523519, 23622, 3852049, -2058363, -1536525, 711891, 1227287,
+3491809, -3912178, 703301, -1607928, 1631014, 2240362, -5201743, 704375, -541166, -3613678,
+1511292, -868657, 674310, 110595, -95563, -4560719, 2295660, 259846, 1195075, -3060701,
+-2258079, -2051384, -1905892, -32273458, 8995272, -6016176, 10984916, -10339060, -122407, 16858284,
+-5657546, 23958938, 5499706, 4604205, -10320806, 4519916, 11871290, -7338489, -1501091, 15489263,
+9979357, 11654931, 1637993, -17940616, 11387032, -11588896, -1093069, -6991670, 1763621, -8923331,
+5173825, -2336462, 5042292, 4798552, 8565775, 8684424, 9640591, -11453604, 2724620, 18262200,
+3893388, -3292629, -3671660, -9187472, -7406134, -49392, 671089, 3278671, 15371151, 1315334,
+8479339, 8210904, -580894, -3928285, -3741454, 13943611, -16296717, -3555159, -14421426, -11891691,
+-3338263, 89657, -24196772, 6279779, -7606924, 14809047, -3069291, 635655, 10284836, 2093260,
+24845848, 20510616, 29595546, 11181947, 1257889, -3451006, -3000572, -5004174, -1451162, -5949604,
+-16291885, 11024644, 13510357, 6424734, -2202781, 1493575, -11472395, -15628312, 7257421, 1912334,
+2164664, -5052492, -2145873, -5481452, -2945811, 4766877, 1597728, 6254010, -401579, 1357747,
+-3587908, 4345433, -12921409, -3463354, -441845, -571768, -2419140, 2216203, 605590, 773094,
+-878858, -3217468, -618475, -1381906, -849867, 3959960, 495532, 425202, -2641942, 787053,
+664646, -287763, -5752035, -4281546, -9451612, 12746926, -3721052, -2775623, 29734058, -6124624,
+-6527814, 33059974, -460635, 18814642, 13888314, 1112933, 7797513, -4434017, 6117107, 5741298,
+3651796, 4660040, 15285252, -10528575, 18417894, -10136123, -301721, 3772592, -2476586, -13349295,
+-11913166, -355945, -19345606, -6186901, -21134460, -1461363, -12550431, -9402757, -6867116, -6044093,
+3166465, -17012366, 19753628, 3094524, -12809740, -9577777, -597000, -2487323, -3127810, 5102958,
+2723546, 19407884, 2240899, -224949, -9905268, 1631014, 4034585, -732292, -10567230, -4588099,
+12194486, 13279502, -774705, -11288785, 4628364, -2226404, 17339320, 19293530, -7524246, -4997195,
+-3553012, 2188286, -7400229, 7798050, -24005110, -2257542, 28399934, -25616796, -12612708, -5938329,
+1851668, 2265595, 3399467, -2319819, 7612830, -4541928, -1269700, 13821205, -2167348, 10016937,
+-6771016, 10091026, -8825621, 6911676, 5641440, 13718662, -278636, -2320893, 5799817, 9030706,
+808528, -2162516, -1415192, 919123, -4902169, -1495186, 4625680, 6095633, 1921998, -1975685,
+5922223, -4624069, 4866198, 4063576, 4440460, 2444910, 163209, -7209640, 7250979, 4285841,
+3357054, 1592359, 3421478, 6343130, 1460826, -4976257, 2484102, -4055523, -3124052, 5250061,
+-1276679, 4545149, 4926865, -1922535, -3582540, 2027225, -17297980, -9479530, -2705830, 13387413,
+16136729, 11059541, -10268193, -26353382, 45624364, 11477763, -28632400, -28727426, -4304094, 6956774,
+19432042, -24992952, -4412005, 4667019, -361314, -3594351, 26146150, 5610301, -15349139, 8195872,
+1079111, -733903, 13765370, -2511482, 7522635, -17040820, -5773510, 29944512, 11061151, 23613730,
+7451232, 21349208, 3731790, -7841537, 15009837, 13681081, 21442088, 10559714, -24218784, -9183177,
+5235565, 12517682, -9730248, 3692598, -9375914, -15658914, 1580011, -1810329, -9373229, 7284802,
+10142565, 8808978, 6431177, 6039261, -4622459, 16207059, -133681, -16102369, -11697880, 14576582,
+7896834, -25289842, 10991895, 4489852, 8124468, -22097606, -15111842, 14209362, 21943524, 12409234,
+-4941360, -23630910, 5339718, -1045288, 20143396, -6728067, -27101780, 11356430, 15796890, -5990406,
+16441135, 13538811, 5572183, -10821707, 1409823, -142808, 3153043, 1186485, -745177, -5757941,
+-2430952, -7226820, -760746, -1428077, 3764539, -4414690, -2660732, -1483374, -3321084, -2019172,
+-1772211, -2018098, 8383240, 2524904, 85362, 8169028, -2044941, -7707856, -5192079, -4131222,
+-3348464, 354335, -5637682, 2360085, 3400004, 2887292, 2132988, -7403450, -2896419, 6211597,
+5105643, -766652, 10897943, 21285322, 8205535, 22471268, 3767760, 10310069, 7679939, 37430640,
+50927036, 3984656, 10193568, -32407676, -10296647, 19607062, -16514149, 38554848, -7670275, 6080063,
+10386305, 22580790, 12524662, -5376226, -16356846, -19170586, -6326487, -3151432, -24041616, -11393474,
+-9566503, 15428059, -8946954, 4595615, -15420006, 2055142, -6063957, -22496502, 23380192, 16217797,
+18821084, 8291435, -11482058, -11115912, -26188564, 483721, -23606750, -7170448, -2017024, 3112241,
+12071542, 9525701, -7672959, -5435818, 9996536, 22111028, 5924908, 8454106, 16123307, -20565378,
+14555107, -11681774, -10815265, -20764020, -9117679, 9495099, 8007967, 1323387, 24254754, -5315559,
+-9028021, 3718368, 6327024, 33348274, -10996727, 13368623, 13144211, -32058172, 8590, 4005594,
+-7093139, -4724464, 11054172, -6362457, 913754, 13583371, 6990596, -19729470, -23710366, -22867480,
+-10735271, -8512088, 19040126, 16623134, -4589173, -7268159, 944893, 2110440, 12549894, -1419487,
+-3965866, 7801808, -1464584, -1301375, -3326989, 5651103, 7721815, -4109210, 7391102, 6984691,
+7148436, 1262184, -3043521, 6319508, -4381941, 3786014, 8050380, 593779, 4800163, 6445136,
+-10949482, -477815, 5327370, 5957657, 8024610, 944356, 7184407, 378494, 462783, -2469606,
+4125316, 6041409, 31903554, -7567196, 4663261, -14266808, -4087198, -19018652, 15111306, -27362700,
+1257352, -22033720, 4359929, 9433896, 3423626, -13188771, 45197016, -3176128, -6080600, 4103841,
+-25724170, 1475858, -17381732, 597000, 4884452, -5211943, -592706, 10644003, -9445707, 405338,
+13678397, 1116692, 3460670, -22136262, 2818036, -1873143, -1380832, -5609228, -27460410, -15285789,
+6785512, 2242510, 12191802, -31822486, 3469260, -29617558, 15015743, -20201378, -32309428, 16357383,
+29788820, 5131412, 14652281, -22317724, 22095996, -5484137, 3298535, -13691282, 18403934, 7408282,
+19110456, 5994701, 23186918, -21012590, 4012036, 1152662, -3601867, -16663399, -13583371, -15663209,
+17768280, -4742718, 24148454, -15016816, -11518565, 2692945, 3216394, -13434658, 6971269, -7908646,
+-31454730, 13810467, 20837034, 34586296, 12099460, 24527484, -14184666, 26307, -15992311, 26275000,
+8862665, -5061082, -10480794, 12460774, -8993125, -2555506, 1329292, -7960722, -13394929, -8953933,
+-6352794, -5352066, -17838610, -7793218, -14870787, 11421392, -2843805, 6769406, 13340705, 3479997,
+-10123238, -1021665, -10131291, -4399121, -15136538, -8413841, -16021839, -2863670, 26208428, 5284421,
+-2025614, 5820218, 7844221, -15239618, -6995965, -958315, -2057826, -6371584, 6633040, -3070902,
+-23232014, -2084133, -5367636, -52807160, 6482180, -16870094, 48863844, -9197672, -24679956, 9811316,
+-1419487, -24587078, -4214974, 4092030, -14811732, 36892160, 5228586, 3539053, 16729971, -20747376,
+-31947040, -19682224, 45009648, -3593814, -9596031, 29753922, 16756278, -14192183, -14139032, -7950522,
+35668628, 5004711, -8750459, -13963476, -6785512, -27888834, 18769008, -3249143, 7577396, 17940616,
+-6395207, -28882582, -3590593, 37249176, -1654099, -9290014, 17893908, -8156680, 22217866, 14625974,
+-1951526, -27523224, -14085882, -3773129, -25538950, -14948097, -14737643, 1998234, -3554622, 21510270,
+-15018964, -5186710, -142271, 55300388, 19175956, -9516574, 11149735, 6524056, -3293166, 28085864,
+13615583, -10624675, 4365835, 22708566, 25617870, -15652471, -11206643, -37548216, -30183956, 17166984,
+-11292543, 18532248, -534187, -22073984, 5375152, -1743220, 6983080, -14685567, -11233487, 20794622,
+5235029, 2762201, -2084670, -2424509, 13785771, -6620692, 7091528, -3528316, 8595303, 17470854,
+4625680, -12620761, 2064269, -4847945, 9501005, 7862475, 2589865, 11373610, 17666812, -6942815,
+14249091, -1379758, -18945100, -4895189, 592169, -10585484, 4250407, 13791140, -272194, -6979322,
+843424, -2579128, 17974438, 15420543, 1561758, 7299297, 9258339, 4843650, 12006044, -15411953,
+-11476689, 5516349, 3095061, -3275450, -1370632, -2537252, -5765994, -5684926, -59680720, 20480014,
+-12782896, 31747324, 32278290, -18722836, 15235860, -31965294, -47995724, 1163936, -33758980, 4429722,
+-4236985, 26101054, -19398220, 18620830, 15971910, 26178900, -39882528, 4342749, -24414204, -22369800,
+2406792, -28876138, -18634252, 26196616, -7661685, 9943923, 30586610, -6075231, 10064182, -25218438,
+2889976, -27804544, 25761750, -23048942, -15311558, -17015050, 28738164, 23036058, -16511465, 31501438,
+20855824, -6666326, 31257162, -1743757, -33085744, -9141838, -3904662, -25776246, 5801427, -54536956,
+5468567, -13874355, -26179436, -21137144, 24375550, -14559939, 50542100, 37563248, -56511568, 25770,
+-1478543, 2714419, 26121992, -44361644, -30942556, 30522186, -25433186, -31774704, -36597952, 2481954,
+75163536, 37371048, -34979288, -22007950, 3047816, 27374510, 10460930, -36557152, 5439039, -24414204,
+-14358076, -1273458, -4403415, 1437203, 24127516, 5733245, 14307610, 9516574, -28135794, 7592429,
+12632036, -3942780, -10138807, 1521492, -24008868, 21409876, 7762080, 5880884, -31843424, 5352603,
+16428787, 4673998, -7521562, -5916855, 14122926, -23194434, -1495186, -17286706, -9580998, 22805740,
+-24059334, -943819, 14344654, -12032888, 11247446, 13701483, 3558917, 2088428, 10030359, 3318399,
+-12801150, 18737332, -14424648, -11258720, -6545530, -19704774, -6808597, -18464602, -17700098, 6441377,
+27705224, -31722628, 15244986, -52969832, -8336532, -20909512, -18252538, 27302570, -36308580, -56439092,
+32251984, 48736604, 11502996, -10035191, -45134200, 2535105, 17087528, 16998406, -7909183, -18435610,
+1834488, -4940823, -6259378, 5177046, -6991133, -15537044, -29681446, 3182571, -18014704, 3833258,
+-16186658, -33934000, 20365662, 14726906, 25133074, 351114, 27217208, 14911053, 3783329, -9503152,
+-14465987, -23549842, -16761110, -9807021, 6177774, 15297063, -10975789, -5750425, -38395396, 35163436,
+42000484, 22991496, -21893058, 22036404, -29772714, -1025423, 6485401, -64990908, 4981625, 5852967,
+30182346, -39003136, 49371184, 18953154, -35807680, -20685100, 14715632, -6731825, -26287348, -32471026,
+-34639448, -47457240, 34333432, -15293842, 5234492, -72285376, -28754806, 3920768, 597000, 15973520,
+-11619497, 2421288, 12075837, 12390981, -34459596, -8358007, 5414880, 18523120, 13640816, -3445101,
+-13322452, -6110665, -2994666, 17259326, 2886755, -11596412, -1451162, -9121974, -3461207, 15923054,
+7415261, -8611409, 17419850, -17943836, -10317585, -13514115, 16853452, -7227356, 1965484, -8281771,
+7346542, -24772298, 3558917, 9674951, 3807489, -4734128, -10632192, -9602473, -12427488, 11839077,
+2647311, -4573067, -14209362, 14245870, 833224, 609885, 2107218, -25211994, -12131672, -16657494,
+2123861, -8650601, -5191005, -49203684, -6680285, 17721036, -23166516, -21619254, 20138564, 20377472,
+4060355, -19556596, -66505420, -9937481, 12884902, 7735773, 28697360, -818728, 16646219, -4524748,
+-510027, -8558259, 1156957, 17374216, 1948305, 507880, 17000018, -4776004, -4195110, -22671522,
+-2142652, -3841312, -2582349, 3624953, 13560285, 18371186, -3715684, -244276, 14548128, -3562139,
+-28192702, -2196876, -25030532, 3368865, 3357591, -33028298, 23708756, -45410152, 10064182, 12132209,
+-19828790, -1687922, 58486716, -16869020, 19724100, -12663711, 10427644, -44146896, 4700305, 25335476,
+-710280, 21810380, -5173288, 1971390, -1444720, 27953794, -18219788, -22220014, 25097642, -23550380,
+-28645822, -733366, -45744624, 30147986, 25373056, -9541807, 9797894, 3833795, -268435, -39352636,
+-6406481, -3383361, 17177184, 6027987, -16414828, 15046881, -1100049, -20272782, -13440026, -12776991,
+2659122, 2247879, -2682744, -900869, 12474196, -12755516, -3506841, 8107825, -13079786, -7558069,
+10132365, -13937169, 927176, 11440182, 794569, -3838627, 5232344, -957241, 1236951, 9906342,
+-3741990, -3670587, -7893076, 2964064, -4956929, -5311801, 4631586, 5192079, -11119670, 1296543,
+-10375030, 9596031, -11818676, 6113349, -2147, -2654290, 1276142, -3134253, -1298154, -1010928,
+-24344412, -73437496, -34567508, -11567958, 23879482, 53955528, -49584324, 10736881, -14407468, -50005232,
+-7064148, 44777180, 12000139, 36872296, -31261994, 9196062, -10866267, 2102387, 21749178, 3611531,
+11792906, -7140383, -63677724, 18786724, 3073586, -27084600, 27679454, 21090974, -19274202, 19491098,
+2308545, -20795694, 6314676, -12878459, 39758512, 4809290, 16085189, 696322, -40853728, -32772212,
+-11042898, -24304146, 26548266, 38097972, 39226472, 31512712, -10946798, 4332549, -32097902, -4915590,
+-3239479, -13582297, -16917876, 2649458, 3092377, -44178572, -12920872, -17325362, -1216013, 19662898,
+-21701932, -5098126, 7625715, -47245, 22699440, -25248502, -1024887, -28591598, -14975477, -21165062,
+11605002, 7471633, 22677428, -3177202, -2358474, -26966490, -8054138, -12869870, -3382287, 11218455,
+15530602, 31785442, -20477330, 5679021, -17743046, 6232535, 11955041, 3192235, -9766756, -4144644,
+-3433290, -4148939, -1451162, 8264054, 8860518, -2688650, -1047435, -4440996, -6289443, 3919695,
+8818642, 2806224, 978716, 2199023, -7445326, -8864812, -8112657, 13202193, -383863, 9066139,
+7648263, -1492501, -10449119, -11423539, 1665374, 2910914, -8671539, -3003256, -7547868, 5342940,
+-5470715, 1664300, 1581622, 5586679, -2953864, -3687230, 1423245, 1856500, 19069654, -30870078,
+-121735480, -64207612, 13144211, 51173460, 114566640, 87520696, 49303540, 16576426, 25710212, -8192650,
+-48204028, -93235152, -124003760, -31402116, -35947804, 1829656, 60381872, 86106576, 57753352, 77144592,
+17760226, 16320876, -9034464, -39085812, -44229572, -35800700, -38006704, -47027744, -37682432, -16148540,
+-2424509, -619549, 30116310, 39039104, 74721696, 35265440, 11625403, 30636002, 47688632, 15158013,
+9101036, -38524248, -52668648, -86129664, -39782136, -45198088, -32673964, -19499688, -15266461, 6323266,
+10608032, 36142148, 74115568, 59569048, 65069828, 48119204, 59035400, 43867724, -35504348, -32614908,
+-82030120, -63602560, -46495704, -104545944, -80806592, -49507552, 3929895, 63265944, 60369524, 71256728,
+89193584, 76190576, 41084584, 49425408, 1976222, -19454592, -52309480, -76060648, -76292576, -63052268,
+-37826852, -8249022, 10888279, 18323942, 21182778, 35179540, 25507274, 41162968, 26134876, 10223633,
+6768869, -1685238, -4026532, -1090922, -28506772, -20043538, -3994320, -13382581, -34053720, -9693204,
+-12197170, -12805445, -2317672, 25358560, 48223356, 39826156, 4258460, 39140036, 27724550, -5282810,
+-32276680, -51323784, -47537772, -21697102, -23513336, -14889041, -8125005, 13423920, 29911762, 41248864,
+47119012, 33740728, 13318694, 14351096, -8957154, -25884694, -43292196, -39007428, -17136382, -1905892,
+-12637404, -4318590, 12534325, 15674483, 16426102, 15391015, 4071092, 6305549, 10040023, -1909650,
+-8971650, 105764, 3290482, -6816650, -7377143, -1222455, 3005940, 1996086, -4589173, -2531883,
+2313377, 876173, -3190087, -4255239, -1751810, 462246, -71941, -90194, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-1562831,
--2220498, -4257923, 2469606, 3956739, 7029788, 1888712, -4956393, -8808441, 1897302, -4122095,
-338229, 2747705, 1063004, 7102802, -5896990, -1464047, -811749, -481036, -5063767, 3098282,
-1307818, 635118, 125628, -2482491, -1908576, -1802813, -586800, 231928, 1180042, -1876901,
-2700998, 6356015, -213138, 2814814, -4527433, -2638721, -5416491, -2625836, 5734318, 258235,
--1180579, 1004486, 6084358, 639950, 3055869, -786516, -2866891, -913754, 3470334, -3006477,
-5450851, 3343632, 6147172, 3020436, 384936, -1902134, -4087198, -2280091, -3553549, -565862,
--2594697, 1005022, 222265, -1414118, 897111, -1218160, 2196876, -571231, -610959, 3089155,
--312996, -244276, 412317, -3033858, 1369021, -2226941, -3554622, -2069637, -1563905, 1522029,
--294205, -271657, -4030290, -695248, 1050656, 767725, -1600412, 125628, -1581622, 682900,
-1133335, 817118, 320512, -306016, -641561, 158914, -1242856, -701153, 278099, 157840,
-557272, 510027, 503048, 81604, -12274480, -2782065, 5031554, 879395, 6860674, 3657165,
--5651103, 1486059, -124554, 2244121, -2024540, -9427990, 5438503, 3328063, 6231998, 7785702,
-6707129, 2346126, 89657, -9606768, -991064, 4402342, -4378719, -3805341, -10026601, -680215,
--1678259, -1167157, -2552821, 1180579, -5985574, 2721936, -1050656, 2524904, 744640, -4031364,
-3104188, 2582886, 6953015, -817654, -5570573, -2885681, 3013993, 1203665, -1394254, 279710,
-2218888, 279710, -4070555, -47782, 856846, -442919, 257698, -2578591, -1126355, -3430605,
--704375, 4201552, 1505386, -1449552, 1799591, -558346, -216896, 628139, -4887136, -460635,
--242129, 2721936, 5292474, -1576790, -533113, -3425773, -2643016, 1338956, 6022618, -5341866,
--833224, 1355062, -288300, -1460826, -91805, -1424319, 1962263, 2044404, 1089848, 3332358,
--1589138, -1043677, -340376, 772020, -762894, 124017, 544387, 461709, -395137, -1422708,
-1050120, -1416802, 6787659, 2547453, 2294050, -2276333, 178778, 638340, 650688, -11654931,
--6302328, -528281, -2899103, -3607236, -178778, -3037079, -11860015, 7068980, 1626719, 3199751,
--1246614, 2434710, -3134253, 150324, 428423, 6111202, -2171106, -1287417, -1019518, -1032940,
--975494, -432718, 6624987, -1282585, -97174, -3772055, -209917, -1821066, 2153926, 1089311,
--6415071, 4976257, -6493454, -124017, 5696737, -815507, 213675, 434329, -130997, -3979287,
--2827699, 6539625, 3781719, -8104067, -4330938, 1282585, -4758287, -3452617, 3468723, -5832566,
-1133871, 1413044, 3335579, 6965363, 5339718, 3266860, 2495376, -4745402, -4947803, -4236449,
-1377074, 6061273, 2342905, -1039382, -2706903, 1987496, -2288144, -997506, 1411971, -2246805,
--3405909, -457951, 2730526, -494458, -2324651, 309775, 22549, 2660732, 1108102, 2457795,
-559956, -1126355, -1155346, -923955, -482647, -308701, 790274, 1546188, 1837172, 1932735,
-8908836, -2181307, -2276870, -2670396, 2512556, -2987687, 4356171, -8450348, -1082869, 6268505,
-3281892, -6355478, 4702453, 7719130, 7284802, 4645544, 890669, -289910, -4764730, -6144488,
-2605972, -591095, 6158446, -483721, 3682398, -3838627, -2554432, -2059974, 609349, 1961726,
--349503, -7503845, 1582159, 2598455, 1887101, 3234110, 1983738, -4072703, -10027138, -3229279,
-1467268, 1932735, 470836, -431107, 1901060, -4114579, -68719, -7471633, 3490198, -7708930,
--2034204, -3269544, -5073430, 3699578, 1634772, 1568200, -4430259, -2155000, -1305133, -4443144,
-418759, -378494, 2371896, -1905355, -3741454, -2856153, -8873939, 2816962, 1026497, 3809636,
-5618354, 7176354, 2799782, -2829310, -4228932, -1996623, 3898220, 3889093, -4407174, 4803921,
-202937, -3125126, 6926709, -1344325, 1561221, 1174674, 2031520, -124554, -1548873, 448824,
-2151779, 772557, -341987, 2331630, -1222455, -957241, -1693291, 799401, 209380, -865973,
-1274532, -1236951, -2230162, -935229, 1689533, -406948, -389231, 609349, 4460324, 4121021,
--706522, 2918430, -8606578, 1023813, -4108136, 462783, 1286880, -5402532, 1980517, 15855946,
-1736241, -1387811, -8915278, 12767327, -24159, 5370320, 638340, -252866, -6927782, 6745783,
-1731946, -3707094, 884226, 523986, -2763812, 2736431, 7099044, -2049773, 7548942, -2218888,
-3230889, -104690, 4978941, 4436165, 4958003, 69793, -2697776, 3897683, -2843268, 3434900,
--976031, 3462818, 3354370, 3227668, -416075, -972810, 1289564, -2773475, -4030290, -10290205,
-6735583, -6648073, 4661114, 610422, 1963337, -1187022, -12290049, -2646774, -3317325, -5972689,
-814970, 3740380, -7894150, -2483028, 3564286, 672162, 5585605, 9763534, -265214, -2624762,
--2330557, -10119480, 3109556, 1975148, -2264522, 546535, 4025458, 4142496, 1197222, 1067299,
-2914672, 350040, -445066, 4361540, 2563022, -2374580, 4449586, 3266323, 4368519, 1356673,
--741419, 329639, -281857, -278099, -1611150, 586800, -977105, 1029182, -1235340, 2052994,
-734976, 212601, 1691143, 166430, -507880, 493384, -360240, -128849, -574989, 2044941,
-1247151, 433792, 1451699, -439160, 2307471, 319975, 743566, -4495220, -5429913, -526670,
-2924873, -1739462, -2619393, -3958886, 1158567, 7198902, 3231963, 1131724, -16364362, -7515119,
--2277407, 3346317, -1949378, 5535139, 18685792, 5807333, -6853157, 1063004, -8108362, -2633889,
-5695127, -6465537, -1633161, 8329016, 2019708, -2090575, 1194001, 4708895, -2825015, 2281165,
-2487323, 2442763, -4626217, 2114735, -2159832, -2654290, -6839199, -2670933, -3993783, -7633768,
-3347927, 259309, -508954, 7699803, 5635534, 1971390, 6194954, 33823, -7825431, 6594386,
--737661, -5369783, -4223027, -7794829, 363462, 9380209, 650688, -4134980, 3997004, -6991670,
--4365298, 3613678, -5645198, -7529078, -3943317, -2375654, 4252555, -6652905, -2044941, -3098282,
-8559870, 1230508, -2957622, 4192425, -2558727, -3120294, 492848, 6770479, -1265405, 447213,
-3755949, 2144263, -8638253, -330712, 5280663, 2507187, 3080029, -704912, -1671816, 3877819,
--2308008, 668404, -1891396, 1105417, 1461900, 2004676, -4378183, 25770, 459025, 1103270,
-270046, 46708, 2051921, -384400, -389768, -1933809, 1508070, 5688148, 4107599, -10622528,
-10069014, -3799972, 923418, -4646081, 8622684, -1228898, -5819144, -18964428, -2535641, 9834401,
-2430952, -14785962, 6731825, -15032, -3033321, -4744865, -3847754, -1464584, -8798777, -1487669,
-7101192, 9250823, 11006927, 6681896, 10036265, -3294777, 7903814, 3809099, -15620259, -372052,
-4056597, 5541582, 2697240, -5386963, 299037, -1127429, 5502927, -9362492, -3373160, 6954089,
--2305324, 3908957, 2046015, -6237367, -6933688, -3578782, -10385231, -2956548, -3196530, 4257923,
-1535451, -6005438, -1389422, -12821014, -3242164, 5231807, -3757560, -12669080, -201327, 7192997,
--15381352, 4456029, 2544231, 4883378, -7300908, -3389803, -6940667, 534723, -2095407, -7849053,
--2080912, -1321239, 4702989, 2661806, 11475079, 728534, 103616, 1831267, -890669, -5824513,
-7245073, 2531883, -3012383, 6365679, 1132798, -3164854, 1026497, -199179, 3848291, 887448,
-735513, 2411624, -2090039, 87510, -2243047, -5369, -1794223, 1771674, -751082, 767725,
-2141578, 309238, -1410897, 2018635, 470299, 2148558, 543850, -620086, -11756399, 2643016,
-9449465, 12170864, 9075803, 9268539, 3591667, -6398965, 6498286, 11249056, -16604344, 8355322,
-8355859, -17791366, -4653060, 4393215, 19224810, -1480153, -1202054, -4559108, -5361730, 23778550,
-11800960, 3321620, 2991982, 12341052, -205085, -1859184, -4587025, 1858110, -10667625, -9633612,
--2182917, 3002719, 7170985, 3259880, 1643362, -3627637, 712428, -7832947, 3286187, -11616813,
-11416023, -1262720, -5655398, -6673843, -7607461, -11720966, 2050847, -11345693, -3796214, 7806640,
--1787780, -3879429, -3714610, -1808181, -9688909, -6739341, -4353486, -4130148, -2193655, 3580929,
-2018098, 600759, 542777, -8574902, 14802068, 8501888, 231928, -1079111, 19461570, -2335389,
--3332895, -4763119, -9824738, -2690260, 6522982, 6257231, -936303, 7612293, -15091441, 4479114,
--5741298, 1455994, 5843303, -2018635, -110059, 955093, 519691, 1874753, -2353642, 2824478,
-3645354, -3395172, 1426466, 1915019, 2385318, 6185827, -4622996, -417149, 676994, -108985,
-1468342, 692027, 1532230, 1953136, -1665911, 1256815, -505732, 155156, -3291019, -710817,
--759672, 2822331, 21895206, 7478612, 4633196, 10627360, -11993159, -7216619, 6861211, 7298223,
-16252156, 2352032, 4533338, -10940892, -624381, 5399848, -14341970, -4627828, 5768678, -4796405,
-199179, 3923990, 10632192, -3606162, 4166118, 2166274, 2353105, 9054328, 7910793, 9649718,
--7588671, -5098663, 10481331, -13291313, -4395899, -4418985, -877247, -3612604, -8473970, 8238821,
--285078, -9178882, 443455, -3631932, -9532680, -11912629, -6604586, -7152731, 14056354, -4502737,
--3569655, -8352638, -685047, -4266513, 2178085, 16538845, -3100967, -5449240, 2822867, -1013075,
-9560060, -11123965, 18775450, 3733937, -18065706, -13163538, 4763119, -12190728, 197569, -13050795,
-57445, 2753074, -1669132, 14033806, 17624936, -8413841, 2133525, -3488050, -13049721, -4904316,
--7110319, -8543764, -1964948, 6373732, -4435091, -10063645, 6633577, 401579, -5442798, -4625680,
-2180770, 3687766, -1627256, -1086627, -5126581, 241055, -4734665, -985695, -2376191, 3258270,
-3711926, 853088, -4702453, 461172, 292058, 2990371, -78383, -1203665, 241592, -5931887,
--659814, -3364570, -2371896, 414464, 1314797, -3139621, 2391760, -1846299, -1701344, 3955128,
--1613297, -3948149, -19105626, 7332583, 39757440, -6784975, -373662, -17289390, -7225209, 11864847,
--1632088, 22836878, 13751412, 12711493, 170725, 9828496, -18539764, 17027398, 8865886, 886911,
-2299418, -10713259, 4776541, -76236, 17358110, 9720585, 11595338, -4102768, 1207423, 3088082,
--11517492, -9278740, -4177930, 5383742, 20235202, -5504001, -6715182, -6778532, -3751117, 2700998,
--12724377, -3638374, -758599, -6775848, -13473312, -2784750, -17114908, -6175089, 10215043, -11882564,
--5135707, -2276870, 1058173, -19306952, -11593727, -2447595, -1927904, -3620121, 12328704, 5459441,
-915365, 7459285, 12699681, -7669738, -3103651, -10490994, 4924717, -8232379, 7197292, 8220568,
-9890773, 17854716, 5156108, -13290776, -2056753, 29866666, 9825275, 16830366, 8200167, 5172751,
--1023813, 2123861, -6919193, -8919036, 4196183, 3059091, -8812736, 2470143, 6386617, 5743982,
--8453569, 6815576, 2430952, 4937602, 5767068, 50466, 2860448, 4776541, 2075543, 5592048,
--406411, 1279900, -1582696, -3627100, 954557, 4894115, 870268, -2000381, 7901666, 5035849,
-4375498, 264677, -774168, -1177895, -38118, 359167, -1095217, 2815351, 2291902, 2237678,
-2526515, 1288490, -3952981, 20482162, 22446036, -22628036, 5566278, 16626892, 10053445, -6300717,
--12030203, -10408853, 23395224, 1930588, 8814884, 12274480, -6962679, 3473018, 5152887, -14294725,
--15183246, 12370043, 4222490, -22125524, -5087926, 28786482, 13820131, -47245, -16393890, 5395016,
-4340065, 17507360, 5806796, -8524436, 11476153, 2034204, -4796942, -1656784, -3440269, -13645111,
--6429566, 2096481, 2380486, -16290811, -17563196, -10406706, -5021354, -19348828, 11527692, -1207960,
--13717589, 2622078, 355945, -5962489, -1635309, 4154844, -79457, 4372814, 5107790, 7796977,
--7618735, -9081171, 12030740, 24324010, 11048803, 6640557, 17779018, -3332358, 9705015, 23640036,
-14495515, 2222109, 2678449, -7398618, -14433774, 14060649, -13747117, 6187974, -5482526, 4294968,
--18006650, 8648454, -195958, -5908802, -3364033, 10249403, -9689983, -4905927, -2480344, 1551557,
--197569, 3026878, -3820910, -497142, -6909529, -1770600, -369367, 1268089, -2045478, 2395518,
--2568927, 2076080, -2296197, 7858717, 2497524, -2031520, -3619584, 2969970, 367220, 2723546,
-2509335, -1887101, 2263985, 2890513, -1902134, 754841, 3616363, -1086090, 1305670, 3933116,
-4179540, 7190849, -4619774, -21237540, 5958731, -10239739, -4723927, -7915088, -1336809, 18177912,
-18002356, -36427764, 11266773, 11559368, -11320997, -18533320, -24167780, 4261145, -7105487, 4471598,
--8441221, -6635725, -3931506, 22546968, 5701032, -1965484, -398358, -3593814, -6751689, 5701569,
-3738769, -107374, 9032853, 1964411, -1921998, 3220689, 8195872, 23269596, 2325188, 2863133,
--11515344, -4924717, -5460514, -5791764, -722091, -1940252, 7690139, 11130408, 509491, 12859132,
--3007551, -2177549, -2656437, -1436130, -22578644, 25437480, 634045, 1799591, -1894618, -6616397,
-6729140, -1746978, 10304700, 582505, -9900973, 2670933, 10925860, -7792145, 10144713, 2470680,
--15581604, -2659122, -3352759, -28297392, -9687299, 7232725, 7284802, -11563663, -6673843, 6752763,
-914828, 18910204, -15093052, 6862821, 8418136, -1224603, 7358890, 6856379, 8344585, 3221762,
-3700114, 3383897, 2748779, -1259499, -1569274, -4884452, 1921461, 7067369, 1231582, -5185636,
--2045478, -2930242, 1647120, -2272038, -1951526, -3454228, 4546760, 2595771, 3090766, 333934,
--8266739, 3288871, -8402030, 641561, 1304596, 2952790, -4005057, -1916092, -1277216, 2709588,
-4974646, 2266132, 2074469, 703838, -5935108, 18496276, 5288716, 5660767, -13650480, 10079215,
--5499169, 9600326, -7650411, 12397423, -11404212, -9314173, 17064442, 2068564, 4316979, -10268730,
--22884660, -2255395, 6605123, 1700270, 9728101, -8225936, 1202054, -188979, -17103634, -12362526,
-5578089, -19327352, -12673375, 6054830, 19327, -20207822, -2939368, -10113574, 12764106, 7605314,
-2253784, -4781909, -12665859, -26879516, 9387188, -12093554, 14601815, -4519380, -4960687, -2578591,
--7169374, 3980361, 3778498, -21511344, -9512816, 20980378, 18373334, -19140522, 24677808, 1177895,
-18154826, -4468377, -4435628, -2399813, -7253663, 9363029, -7150047, -20081120, -10675141, 23631984,
--5382668, -4878009, -1395328, 7247758, 4641249, 11886322, -27341762, 7941932, 18496814, 14526116,
--6049999, -1635846, -5957120, -12453795, 1315334, 11226508, 17513266, -10913512, -11028402, -12498355,
--1345935, -2132451, 1065152, -6053220, 2988760, 2988224, -2189897, -980326, -2751464, -5523865,
-5184026, 2684, 702764, -8330089, -7020661, -1955821, -9075266, -3606699, -4604205, 889595,
--3292093, -102542, 6804839, -2916820, 2774012, -213138, -6558952, 1144609, -3364570, -960462,
-2663417, 5938866, 744103, 2417530, 5549635, 5504538, 7354058, -2499671, -2148558, -1488206,
-7541963, -1320703, -12496207, -835371, 12792023, 9925133, -9677098, -16480863, -13827647, -8127152,
--16022912, -903554, 7566122, 17563196, -3054259, -852551, -29430190, 17607756, 21932250, -3493956,
--11941620, -12138651, -7523172, 33014340, -20125144, -87510, -2384781, 8898635, -1490354, 38033548,
-918049, -20727512, -5461051, -19699942, 25679072, 22316114, -18035104, 20990578, 5256503, 16892644,
-6320581, -31787052, 9958419, 16971564, -22006338, -6129455, -24968792, -12502113, 863288, -23026394,
--19625316, -588411, -15899432, -252866, 5592048, -5723044, -15768972, 12918188, 11743514, -25999048,
--19842748, 10822781, 4585415, 6943352, 13172665, 17166984, -6320045, -9371619, -524523, -6087580,
--317291, -1966021, -8698383, 3421478, -36034240, 12246026, 17550310, -18632642, -15303505, 11588896,
--11712913, -10672457, -5049808, 6467147, 942208, 22331682, 199716, 13031468, -1255741, -9151502,
-4885526, 6709813, 7035157, -5918465, 188442, 686658, -784368, -3812857, -8885750, 5857799,
-9440338, -4849018, -15665893, 3968550, 1397475, 16616155, -1551020, -6540699, 5192616, 1823751,
-8373576, -37581, -5025649, 95563, 6843494, 5033702, 1749125, -1815697, 1341640, -3122978,
--2545842, -7843147, 3982509, 3717294, -5282273, 2560874, 2425583, 1410897, -836445, -2653753,
-753767, -7519951, 8381092, 20337208, 37970196, 59759100, 2063195, -23768886, -30681098, -6992744,
-1499481, -7121593, 29157460, 21923124, 15254650, 25366614, 18543522, 15028627, 1266479, 12157442,
--15193447, 22003118, 25425132, 1958505, 26441966, -10526965, 2421825, 6318434, -24135568, -16163573,
--5509906, -14272713, -16831976, -2288681, 27174794, -117575, -4904853, 3597035, 6034429, -3399467,
--36175972, -4751308, 9829570, -5136781, -10879689, 4744328, 14398341, 25280178, 6474127, 13005698,
-18020072, 22071300, -29844654, -20667382, 12162811, -8522289, 38661148, -3738769, 33287070, -26349624,
-16044387, 27125940, 1335198, 4621922, 16443819, -28827284, -13193603, 1015760, 16930762, 727997,
-19442244, 8013872, 7515656, 19743428, 7365332, -2321967, -7872675, -22759032, -4992900, 1600412,
-6447283, 727997, 846645, 779537, -12208981, 6797323, 4728759, 11143830, -3397856, 8448738,
-13726179, 8214662, 3736085, 222801, -1247151, 3088082, -4276177, 3006477, -4071092, 401579,
-3109020, 2991982, -3558381, 6274411, 6177237, 7576859, 1174674, 846645, 3414499, -2357937,
-5340255, -3454228, 5390184, 11813844, -1047435, -1954210, 1241246, 10305774, -5821292, 2626909,
--846109, -1230508, -1553704, 1638530, 3123515, 4779225, 3787088, 3706557, 9659381, -6299107,
-11395622, -5129265, 42939472, 14498736, 15281494, 31390842, -1972464, 6897181, 13842143, 20277614,
--21904334, -17510582, -7263327, -19236084, -3115462, -25950730, 13815299, 21271900, 15625628, 21127480,
--13714904, -7479686, 16402480, 12807592, -8479339, 21423296, 13003013, -4546223, -25515864, 14663555,
-16023449, -12823162, -1654099, 7851200, 4020626, -20513300, 24297166, 6730214, 26058640, 14382772,
-10387378, -13677323, 12308303, -7111929, 39556648, -30613990, 3672197, 12186433, -5597416, -19642496,
-13027710, 12847321, -2181844, 12647605, -11704323, 32368484, -14576045, 8788577, 7227893, -19983946,
--8562554, -27725088, 12195023, 8574902, -20635170, 19854024, 16924318, -14095546, 12203613, -1196685,
-32729798, 10979010, -16019154, -11551315, -11406359, 10598906, -6554657, 9092446, -3933653, 2292976,
-11092290, 7249368, 5634997, -10318659, 28132036, 3474629, -10645076, -15500537, 13679471, 7101729,
-12916040, -6893960, 3898220, 10506027, 21238614, 5753646, -3325379, 17945984, -4599373, -4691715,
--2355790, 2117419, 4861366, -10091563, -9088688, 4392141, -7849590, -4447439, 1092532, -3422015,
--1018444, -952946, -7724499, 5846524, 3202972, -14695231, 3688840, -10882910, -6979322, -3189013,
-5577015, 3361886, 10423349, 4958540, -295279, 3355443, 3830574, 4842039, 399432, 1655710,
-2379412, 9250823, -2899640, -38056632, 16586627, -32500554, 33107218, 39826156, -2399813, 6757594,
--32858648, -545998, -7544647, 3081639, 18680424, 19154480, -6010270, 9818295, 15489800, 2260227,
-6354404, 4311074, 6272263, -4359929, 22712860, -3440269, 4970888, -13042742, 25601764, 5367636,
--2657511, -1078037, 23030152, 8683887, 10761577, 25489558, -5940477, -16106664, 31367756, -33767568,
--14682346, -6030671, 7259569, 22003654, 4996658, -9332427, -9542344, -16407849, -485868, -3156801,
-6314676, 35414688, 34484292, 21799644, 31108984, -3034395, 46909096, -15891916, 13022878, -11333345,
-1043140, 14628122, -7299834, 1587527, -14162118, -18351858, 272730, -11579769, 9583146, -15677704,
-23200876, -17589502, -28144384, -11758547, -7228967, -2660195, 33847028, -20552492, -4713190, -2998961,
--21246130, -5471252, 12385612, 26507464, -2332704, -1259499, 1046361, -8825621, -18243410, 644782,
--771484, -2877628, -1869385, -91268, -10519986, 8404177, -8998493, 10405632, -4128001, -8139500,
--8789651, 2085744, 8396124, -5967320, -7515119, -2757906, 6977711, 7581691, -5483063, 3517578,
-4683125, 2652142, 4673998, -4465156, -3885335, 2067490, 533650, 4751308, -5869610, 4168266,
-7767449, -411243, -2430952, -4028679, 6822019, -13728863, -6347425, 13431436, -8063801, -1015223,
--2045478, 2553358, -8279087, 6023692, -2559801, 12380243, 10734734, 176631, -13336947, 58553288,
-81298896, 24929600, 63377612, -13875429, -44066900, -30888332, -21584358, 10690710, 11662447, -14696304,
--23663122, 20509006, 27597312, 16113107, 27533962, 21223044, 5252745, 8438000, 4169876, -1388885,
--18097918, 7980586, -21447992, 15110769, 150324, -20100446, 23296976, 14068702, 11150272, 40200356,
-24729348, -11551851, -7755101, -14499273, -17150878, -21036750, -8284455, 805306, -16613470, -5185100,
-34751656, 52674016, 38830800, 5285494, 26502632, 28233504, 43215424, 19757386, -22894860, -37628744,
--23444616, -24022826, 14200236, 11891691, -51395188, -35285840, -9073655, 21636434, 46774880, -35065724,
--1384590, -30440580, -3948686, 38196756, -21044802, 14368813, -30529164, -5019206, -9123584, 25743498,
--28618440, -16350940, 461709, 11341398, -23236846, 53303764, -12572443, -883153, 30324616, -13377749,
-22793392, -7324530, -18853832, -14697378, 8842801, 816044, 7533910, 4670240, -16842178, 399969,
--7130183, 20366734, 11926587, 3536906, 11125576, 12658342, 664109, -240518, -4095251, -12824235,
-25995290, -8143258, 5401995, 118648, -15161771, 512175, 1582696, -4867809, -10001368, -2263985,
--5910412, 1329292, 3786551, -4542465, 784368, 17635672, 12567611, -2412698, -2968359, 16693464,
--7168301, -2268280, -14341970, -20610474, -7820599, -5559835, -2439005, -5774047, -23241142, -44906032,
-5250061, 24711094, -20918638, 38393788, -15609522, 15161771, -5366562, -44740676, -23061826, -2325188,
--26461830, -60330868, -17121350, 21553756, 33135672, -16447040, -26016764, -53841172, -16222628, 15705622,
--10940355, -15701864, -26949846, 6198175, -6300717, -4654671, -5288179, 10722386, 21288006, -16905528,
-16389595, 14095546, -17246442, -49119932, 3716757, 3859565, 12359842, 5808407, 31768800, 3140158,
--49014168, 229244, -53951232, -335007, 18321256, 22379464, -4468377, 2897492, 24620364, -13113609,
--9816685, -16872780, 15818901, 11680164, -8051453, 19179176, -6331319, 8043937, 8623757, 31438624,
-3860102, -11231876, -34057480, -11663521, 17145510, 15138149, 26417270, 38963408, 67159864, 33571612,
-15878494, -17626546, -68166496, -18624052, -10163503, 51803212, -9092983, 3191698, -612033, -16391743,
-1830193, 15168751, 6853694, -388695, 332323, 254477, -324270, 25117506, -9503152, -7508140,
--8775692, 17424146, 6236293, 8812736, -7308424, -21445846, 6612102, 9066676, -10226854, -1437740,
-4984310, -1225139, 1184874, -3794604, -31321050, -10095321, -2971044, 14170171, 21678310, 2667712,
--18961744, -17963700, 7713762, 3036542, -2224793, -3001645, 479426, -1853815, -1456531, 16542067,
--18675054, 2378338, -16137803, 16565152, -9633075, 449361, -23008140, -3409667, 14515916, -4595615,
-7541426, -12758200, 3543348, -43776992, -13377749, 30306362, -15038291, -12641162, -3306051, -9893994,
--35098472, -39043936, -57045756, -18084496, 51003, -4508105, 37243272, 10164577, 48664664, 29956860,
-15035070, -6908455, -18053358, -3461744, 68274408, 4135517, 19645718, 10991358, -8622684, 33931852,
--14247480, 27365920, -30048128, -3096135, -21664352, 25744570, -36471788, -7789997, 11094974, 11355357,
-11656004, -31958852, 22622666, -36563056, 7369627, -17974976, -12261058, 36145372, 2113661, 2262374,
-12453795, -13888850, -839129, 9354976, -44255880, 1068910, 10176388, -6560026, 28469190, -12876849,
--5596343, 47800840, -18176838, -40007620, 83215, -15192373, 3209414, -3151432, -2114735, -32141388,
-17096118, -5347235, -43671764, 26142930, -54083840, 10362145, -12407624, -21548924, -34190624, -4547834,
-9238475, 15581068, 1387274, 12588012, 15761456, -18807662, 32934346, -7769059, 8797704, -588947,
-15715285, -867583, -1785096, -5506685, 9290014, -19840064, -2550137, 6287296, 4250944, -7809861,
--135828, -8725226, -11410654, 5709086, 4657355, 8506720, 5542656, -2650532, 6682432, 19424526,
--9703405, -10358924, 3403762, -1124208, 3821447, 14360760, -2092723, 7747584, 7386270, 7335804,
--9882720, -12000675, -2943663, -1126355, -12414066, -882616, -2474975, 5066988, -13559749, 3879429,
--18924700, -66735200, -68579352, -58546308, -29519310, 120998896, 37888056, -15138686, -15801185, -59913720,
--126835216, -14335527, 34027416, 42469712, 18218714, -19573240, -14664092, -37444060, -41227392, 30874372,
--29726006, 76229224, 57132192, -89101248, 28690918, 11587285, -18758806, 6805376, 63791540, 9029632,
-43967580, 87352656, -19175418, -71963248, 3234647, -12386686, -67085780, -18399104, 32200444, -3093987,
-39667244, 64164128, 5596343, -55910812, -109313896, -93885304, -83936544, -8967355, 81027776, 22978612,
-21504364, 12040404, -22231288, -109589312, -68625528, -35221416, -13508746, 6541235, 24562382, 23851028,
-30692910, 31455804, 39150776, -47317116, -17146584, -38776576, -3451006, -42396696, 26091926, 26068840,
-53616224, 59569584, 28363428, 746787, -16098611, -11184095, -73804720, -58764816, 51298552, 80371720,
-54670640, 64195804, -15650861, -28877750, -58440548, -33304788, 17036524, 8590, 3807489, 17969606,
-5898064, 4449049, -14299557, -18851686, -9447854, -14267344, 345745, 14082124, 3854196, 5390721,
--3413425, 8171712, -15578920, 10214506, -4769561, -14428943, -14212047, -4359392, -23524610, -7304129,
--14440217, 14703821, 16574816, 7981123, 6327024, -15337328, -31370978, -31025234, 8084202, -3015604,
-13921600, 12253005, 6466074, -22636626, -11580306, -21558052, -33183992, 9820980, 22939420, -8871255,
--121768232, -136324944, -92743376, -95395520, -25590488, 106556528, 71724880, 114979496, 128088272, 194632880,
-129216240, 133721656, 86231136, -6813429, -96453152, -166669424, -196809360, -170889776, -134812576, -97623000,
--23740432, -5173825, -14254996, 4721243, 42157252, 69490424, 96552472, 83866752, 114467320, 110504136,
-142940272, 130662032, 36607616, 87620552, -19233938, 23784456, 17546552, 4716948, -12320651, -127836480,
--153313696, -196057744, -229834976, -209082768, -116224496, -103421736, -85016728, -106574248, -123169464, -26641146,
-29941290, 76948632, 113022600, 163536784, 195575088, 250975872, 331434560, 321683392, 244395984, 198096784,
-164973456, 87024624, 138521280, -56552908, -113223392, -270952320, -310038112, -385605376, -370272896, -338864864,
--320932832, -310228704, -190948336, -118580824, -64470680, 172683984, 176159696, 269123200, 346027808, 299740928,
-270986144, 273855712, 215344288, 163902928, 90142776, 11492259, -1463510, -51218560, -61929132, -90070296,
--116286776, -160002560, -172614192, -157502896, -181144544, -140391200, -128580584, -121756952, -106627392, -55441584,
--10983305, 56186224, 116709296, 109102368, 170671264, 188196336, 208002048, 245097680, 198619696, 115471272,
-57822608, -35779224, -90550256, -91090888, -175111184, -162739536, -222120144, -177416512, -184124176, -118828320,
--123693448, -72920488, -9342091, 61786324, 93720480, 164700192, 192387696, 186087504, 181366800, 176068960,
-135773584, 47742320, -31244814, -45542760, -58606440, -65387656, -73498704, -87575992, -80851688, -60436096,
--64958696, -59369868, -51081120, -37298568, -16554415, -11860552, -8407935, 1801202, 10766409, 6766721,
-10054518, 25705916, 30918932, 27554362, 18340584, 12511240, 9405442, 9110163, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-2220498, -4257923, 2469606, 3956739, 7029788, 1888712, -4956393, -8808441, 1897302, -4122095,
+338229, 2747705, 1063004, 7102802, -5896990, -1464047, -811749, -481036, -5063767, 3098282,
+1307818, 635118, 125628, -2482491, -1908576, -1802813, -586800, 231928, 1180042, -1876901,
+2700998, 6356015, -213138, 2814814, -4527433, -2638721, -5416491, -2625836, 5734318, 258235,
+-1180579, 1004486, 6084358, 639950, 3055869, -786516, -2866891, -913754, 3470334, -3006477,
+5450851, 3343632, 6147172, 3020436, 384936, -1902134, -4087198, -2280091, -3553549, -565862,
+-2594697, 1005022, 222265, -1414118, 897111, -1218160, 2196876, -571231, -610959, 3089155,
+-312996, -244276, 412317, -3033858, 1369021, -2226941, -3554622, -2069637, -1563905, 1522029,
+-294205, -271657, -4030290, -695248, 1050656, 767725, -1600412, 125628, -1581622, 682900,
+1133335, 817118, 320512, -306016, -641561, 158914, -1242856, -701153, 278099, 157840,
+557272, 510027, 503048, 81604, -12274480, -2782065, 5031554, 879395, 6860674, 3657165,
+-5651103, 1486059, -124554, 2244121, -2024540, -9427990, 5438503, 3328063, 6231998, 7785702,
+6707129, 2346126, 89657, -9606768, -991064, 4402342, -4378719, -3805341, -10026601, -680215,
+-1678259, -1167157, -2552821, 1180579, -5985574, 2721936, -1050656, 2524904, 744640, -4031364,
+3104188, 2582886, 6953015, -817654, -5570573, -2885681, 3013993, 1203665, -1394254, 279710,
+2218888, 279710, -4070555, -47782, 856846, -442919, 257698, -2578591, -1126355, -3430605,
+-704375, 4201552, 1505386, -1449552, 1799591, -558346, -216896, 628139, -4887136, -460635,
+-242129, 2721936, 5292474, -1576790, -533113, -3425773, -2643016, 1338956, 6022618, -5341866,
+-833224, 1355062, -288300, -1460826, -91805, -1424319, 1962263, 2044404, 1089848, 3332358,
+-1589138, -1043677, -340376, 772020, -762894, 124017, 544387, 461709, -395137, -1422708,
+1050120, -1416802, 6787659, 2547453, 2294050, -2276333, 178778, 638340, 650688, -11654931,
+-6302328, -528281, -2899103, -3607236, -178778, -3037079, -11860015, 7068980, 1626719, 3199751,
+-1246614, 2434710, -3134253, 150324, 428423, 6111202, -2171106, -1287417, -1019518, -1032940,
+-975494, -432718, 6624987, -1282585, -97174, -3772055, -209917, -1821066, 2153926, 1089311,
+-6415071, 4976257, -6493454, -124017, 5696737, -815507, 213675, 434329, -130997, -3979287,
+-2827699, 6539625, 3781719, -8104067, -4330938, 1282585, -4758287, -3452617, 3468723, -5832566,
+1133871, 1413044, 3335579, 6965363, 5339718, 3266860, 2495376, -4745402, -4947803, -4236449,
+1377074, 6061273, 2342905, -1039382, -2706903, 1987496, -2288144, -997506, 1411971, -2246805,
+-3405909, -457951, 2730526, -494458, -2324651, 309775, 22549, 2660732, 1108102, 2457795,
+559956, -1126355, -1155346, -923955, -482647, -308701, 790274, 1546188, 1837172, 1932735,
+8908836, -2181307, -2276870, -2670396, 2512556, -2987687, 4356171, -8450348, -1082869, 6268505,
+3281892, -6355478, 4702453, 7719130, 7284802, 4645544, 890669, -289910, -4764730, -6144488,
+2605972, -591095, 6158446, -483721, 3682398, -3838627, -2554432, -2059974, 609349, 1961726,
+-349503, -7503845, 1582159, 2598455, 1887101, 3234110, 1983738, -4072703, -10027138, -3229279,
+1467268, 1932735, 470836, -431107, 1901060, -4114579, -68719, -7471633, 3490198, -7708930,
+-2034204, -3269544, -5073430, 3699578, 1634772, 1568200, -4430259, -2155000, -1305133, -4443144,
+418759, -378494, 2371896, -1905355, -3741454, -2856153, -8873939, 2816962, 1026497, 3809636,
+5618354, 7176354, 2799782, -2829310, -4228932, -1996623, 3898220, 3889093, -4407174, 4803921,
+202937, -3125126, 6926709, -1344325, 1561221, 1174674, 2031520, -124554, -1548873, 448824,
+2151779, 772557, -341987, 2331630, -1222455, -957241, -1693291, 799401, 209380, -865973,
+1274532, -1236951, -2230162, -935229, 1689533, -406948, -389231, 609349, 4460324, 4121021,
+-706522, 2918430, -8606578, 1023813, -4108136, 462783, 1286880, -5402532, 1980517, 15855946,
+1736241, -1387811, -8915278, 12767327, -24159, 5370320, 638340, -252866, -6927782, 6745783,
+1731946, -3707094, 884226, 523986, -2763812, 2736431, 7099044, -2049773, 7548942, -2218888,
+3230889, -104690, 4978941, 4436165, 4958003, 69793, -2697776, 3897683, -2843268, 3434900,
+-976031, 3462818, 3354370, 3227668, -416075, -972810, 1289564, -2773475, -4030290, -10290205,
+6735583, -6648073, 4661114, 610422, 1963337, -1187022, -12290049, -2646774, -3317325, -5972689,
+814970, 3740380, -7894150, -2483028, 3564286, 672162, 5585605, 9763534, -265214, -2624762,
+-2330557, -10119480, 3109556, 1975148, -2264522, 546535, 4025458, 4142496, 1197222, 1067299,
+2914672, 350040, -445066, 4361540, 2563022, -2374580, 4449586, 3266323, 4368519, 1356673,
+-741419, 329639, -281857, -278099, -1611150, 586800, -977105, 1029182, -1235340, 2052994,
+734976, 212601, 1691143, 166430, -507880, 493384, -360240, -128849, -574989, 2044941,
+1247151, 433792, 1451699, -439160, 2307471, 319975, 743566, -4495220, -5429913, -526670,
+2924873, -1739462, -2619393, -3958886, 1158567, 7198902, 3231963, 1131724, -16364362, -7515119,
+-2277407, 3346317, -1949378, 5535139, 18685792, 5807333, -6853157, 1063004, -8108362, -2633889,
+5695127, -6465537, -1633161, 8329016, 2019708, -2090575, 1194001, 4708895, -2825015, 2281165,
+2487323, 2442763, -4626217, 2114735, -2159832, -2654290, -6839199, -2670933, -3993783, -7633768,
+3347927, 259309, -508954, 7699803, 5635534, 1971390, 6194954, 33823, -7825431, 6594386,
+-737661, -5369783, -4223027, -7794829, 363462, 9380209, 650688, -4134980, 3997004, -6991670,
+-4365298, 3613678, -5645198, -7529078, -3943317, -2375654, 4252555, -6652905, -2044941, -3098282,
+8559870, 1230508, -2957622, 4192425, -2558727, -3120294, 492848, 6770479, -1265405, 447213,
+3755949, 2144263, -8638253, -330712, 5280663, 2507187, 3080029, -704912, -1671816, 3877819,
+-2308008, 668404, -1891396, 1105417, 1461900, 2004676, -4378183, 25770, 459025, 1103270,
+270046, 46708, 2051921, -384400, -389768, -1933809, 1508070, 5688148, 4107599, -10622528,
+10069014, -3799972, 923418, -4646081, 8622684, -1228898, -5819144, -18964428, -2535641, 9834401,
+2430952, -14785962, 6731825, -15032, -3033321, -4744865, -3847754, -1464584, -8798777, -1487669,
+7101192, 9250823, 11006927, 6681896, 10036265, -3294777, 7903814, 3809099, -15620259, -372052,
+4056597, 5541582, 2697240, -5386963, 299037, -1127429, 5502927, -9362492, -3373160, 6954089,
+-2305324, 3908957, 2046015, -6237367, -6933688, -3578782, -10385231, -2956548, -3196530, 4257923,
+1535451, -6005438, -1389422, -12821014, -3242164, 5231807, -3757560, -12669080, -201327, 7192997,
+-15381352, 4456029, 2544231, 4883378, -7300908, -3389803, -6940667, 534723, -2095407, -7849053,
+-2080912, -1321239, 4702989, 2661806, 11475079, 728534, 103616, 1831267, -890669, -5824513,
+7245073, 2531883, -3012383, 6365679, 1132798, -3164854, 1026497, -199179, 3848291, 887448,
+735513, 2411624, -2090039, 87510, -2243047, -5369, -1794223, 1771674, -751082, 767725,
+2141578, 309238, -1410897, 2018635, 470299, 2148558, 543850, -620086, -11756399, 2643016,
+9449465, 12170864, 9075803, 9268539, 3591667, -6398965, 6498286, 11249056, -16604344, 8355322,
+8355859, -17791366, -4653060, 4393215, 19224810, -1480153, -1202054, -4559108, -5361730, 23778550,
+11800960, 3321620, 2991982, 12341052, -205085, -1859184, -4587025, 1858110, -10667625, -9633612,
+-2182917, 3002719, 7170985, 3259880, 1643362, -3627637, 712428, -7832947, 3286187, -11616813,
+11416023, -1262720, -5655398, -6673843, -7607461, -11720966, 2050847, -11345693, -3796214, 7806640,
+-1787780, -3879429, -3714610, -1808181, -9688909, -6739341, -4353486, -4130148, -2193655, 3580929,
+2018098, 600759, 542777, -8574902, 14802068, 8501888, 231928, -1079111, 19461570, -2335389,
+-3332895, -4763119, -9824738, -2690260, 6522982, 6257231, -936303, 7612293, -15091441, 4479114,
+-5741298, 1455994, 5843303, -2018635, -110059, 955093, 519691, 1874753, -2353642, 2824478,
+3645354, -3395172, 1426466, 1915019, 2385318, 6185827, -4622996, -417149, 676994, -108985,
+1468342, 692027, 1532230, 1953136, -1665911, 1256815, -505732, 155156, -3291019, -710817,
+-759672, 2822331, 21895206, 7478612, 4633196, 10627360, -11993159, -7216619, 6861211, 7298223,
+16252156, 2352032, 4533338, -10940892, -624381, 5399848, -14341970, -4627828, 5768678, -4796405,
+199179, 3923990, 10632192, -3606162, 4166118, 2166274, 2353105, 9054328, 7910793, 9649718,
+-7588671, -5098663, 10481331, -13291313, -4395899, -4418985, -877247, -3612604, -8473970, 8238821,
+-285078, -9178882, 443455, -3631932, -9532680, -11912629, -6604586, -7152731, 14056354, -4502737,
+-3569655, -8352638, -685047, -4266513, 2178085, 16538845, -3100967, -5449240, 2822867, -1013075,
+9560060, -11123965, 18775450, 3733937, -18065706, -13163538, 4763119, -12190728, 197569, -13050795,
+57445, 2753074, -1669132, 14033806, 17624936, -8413841, 2133525, -3488050, -13049721, -4904316,
+-7110319, -8543764, -1964948, 6373732, -4435091, -10063645, 6633577, 401579, -5442798, -4625680,
+2180770, 3687766, -1627256, -1086627, -5126581, 241055, -4734665, -985695, -2376191, 3258270,
+3711926, 853088, -4702453, 461172, 292058, 2990371, -78383, -1203665, 241592, -5931887,
+-659814, -3364570, -2371896, 414464, 1314797, -3139621, 2391760, -1846299, -1701344, 3955128,
+-1613297, -3948149, -19105626, 7332583, 39757440, -6784975, -373662, -17289390, -7225209, 11864847,
+-1632088, 22836878, 13751412, 12711493, 170725, 9828496, -18539764, 17027398, 8865886, 886911,
+2299418, -10713259, 4776541, -76236, 17358110, 9720585, 11595338, -4102768, 1207423, 3088082,
+-11517492, -9278740, -4177930, 5383742, 20235202, -5504001, -6715182, -6778532, -3751117, 2700998,
+-12724377, -3638374, -758599, -6775848, -13473312, -2784750, -17114908, -6175089, 10215043, -11882564,
+-5135707, -2276870, 1058173, -19306952, -11593727, -2447595, -1927904, -3620121, 12328704, 5459441,
+915365, 7459285, 12699681, -7669738, -3103651, -10490994, 4924717, -8232379, 7197292, 8220568,
+9890773, 17854716, 5156108, -13290776, -2056753, 29866666, 9825275, 16830366, 8200167, 5172751,
+-1023813, 2123861, -6919193, -8919036, 4196183, 3059091, -8812736, 2470143, 6386617, 5743982,
+-8453569, 6815576, 2430952, 4937602, 5767068, 50466, 2860448, 4776541, 2075543, 5592048,
+-406411, 1279900, -1582696, -3627100, 954557, 4894115, 870268, -2000381, 7901666, 5035849,
+4375498, 264677, -774168, -1177895, -38118, 359167, -1095217, 2815351, 2291902, 2237678,
+2526515, 1288490, -3952981, 20482162, 22446036, -22628036, 5566278, 16626892, 10053445, -6300717,
+-12030203, -10408853, 23395224, 1930588, 8814884, 12274480, -6962679, 3473018, 5152887, -14294725,
+-15183246, 12370043, 4222490, -22125524, -5087926, 28786482, 13820131, -47245, -16393890, 5395016,
+4340065, 17507360, 5806796, -8524436, 11476153, 2034204, -4796942, -1656784, -3440269, -13645111,
+-6429566, 2096481, 2380486, -16290811, -17563196, -10406706, -5021354, -19348828, 11527692, -1207960,
+-13717589, 2622078, 355945, -5962489, -1635309, 4154844, -79457, 4372814, 5107790, 7796977,
+-7618735, -9081171, 12030740, 24324010, 11048803, 6640557, 17779018, -3332358, 9705015, 23640036,
+14495515, 2222109, 2678449, -7398618, -14433774, 14060649, -13747117, 6187974, -5482526, 4294968,
+-18006650, 8648454, -195958, -5908802, -3364033, 10249403, -9689983, -4905927, -2480344, 1551557,
+-197569, 3026878, -3820910, -497142, -6909529, -1770600, -369367, 1268089, -2045478, 2395518,
+-2568927, 2076080, -2296197, 7858717, 2497524, -2031520, -3619584, 2969970, 367220, 2723546,
+2509335, -1887101, 2263985, 2890513, -1902134, 754841, 3616363, -1086090, 1305670, 3933116,
+4179540, 7190849, -4619774, -21237540, 5958731, -10239739, -4723927, -7915088, -1336809, 18177912,
+18002356, -36427764, 11266773, 11559368, -11320997, -18533320, -24167780, 4261145, -7105487, 4471598,
+-8441221, -6635725, -3931506, 22546968, 5701032, -1965484, -398358, -3593814, -6751689, 5701569,
+3738769, -107374, 9032853, 1964411, -1921998, 3220689, 8195872, 23269596, 2325188, 2863133,
+-11515344, -4924717, -5460514, -5791764, -722091, -1940252, 7690139, 11130408, 509491, 12859132,
+-3007551, -2177549, -2656437, -1436130, -22578644, 25437480, 634045, 1799591, -1894618, -6616397,
+6729140, -1746978, 10304700, 582505, -9900973, 2670933, 10925860, -7792145, 10144713, 2470680,
+-15581604, -2659122, -3352759, -28297392, -9687299, 7232725, 7284802, -11563663, -6673843, 6752763,
+914828, 18910204, -15093052, 6862821, 8418136, -1224603, 7358890, 6856379, 8344585, 3221762,
+3700114, 3383897, 2748779, -1259499, -1569274, -4884452, 1921461, 7067369, 1231582, -5185636,
+-2045478, -2930242, 1647120, -2272038, -1951526, -3454228, 4546760, 2595771, 3090766, 333934,
+-8266739, 3288871, -8402030, 641561, 1304596, 2952790, -4005057, -1916092, -1277216, 2709588,
+4974646, 2266132, 2074469, 703838, -5935108, 18496276, 5288716, 5660767, -13650480, 10079215,
+-5499169, 9600326, -7650411, 12397423, -11404212, -9314173, 17064442, 2068564, 4316979, -10268730,
+-22884660, -2255395, 6605123, 1700270, 9728101, -8225936, 1202054, -188979, -17103634, -12362526,
+5578089, -19327352, -12673375, 6054830, 19327, -20207822, -2939368, -10113574, 12764106, 7605314,
+2253784, -4781909, -12665859, -26879516, 9387188, -12093554, 14601815, -4519380, -4960687, -2578591,
+-7169374, 3980361, 3778498, -21511344, -9512816, 20980378, 18373334, -19140522, 24677808, 1177895,
+18154826, -4468377, -4435628, -2399813, -7253663, 9363029, -7150047, -20081120, -10675141, 23631984,
+-5382668, -4878009, -1395328, 7247758, 4641249, 11886322, -27341762, 7941932, 18496814, 14526116,
+-6049999, -1635846, -5957120, -12453795, 1315334, 11226508, 17513266, -10913512, -11028402, -12498355,
+-1345935, -2132451, 1065152, -6053220, 2988760, 2988224, -2189897, -980326, -2751464, -5523865,
+5184026, 2684, 702764, -8330089, -7020661, -1955821, -9075266, -3606699, -4604205, 889595,
+-3292093, -102542, 6804839, -2916820, 2774012, -213138, -6558952, 1144609, -3364570, -960462,
+2663417, 5938866, 744103, 2417530, 5549635, 5504538, 7354058, -2499671, -2148558, -1488206,
+7541963, -1320703, -12496207, -835371, 12792023, 9925133, -9677098, -16480863, -13827647, -8127152,
+-16022912, -903554, 7566122, 17563196, -3054259, -852551, -29430190, 17607756, 21932250, -3493956,
+-11941620, -12138651, -7523172, 33014340, -20125144, -87510, -2384781, 8898635, -1490354, 38033548,
+918049, -20727512, -5461051, -19699942, 25679072, 22316114, -18035104, 20990578, 5256503, 16892644,
+6320581, -31787052, 9958419, 16971564, -22006338, -6129455, -24968792, -12502113, 863288, -23026394,
+-19625316, -588411, -15899432, -252866, 5592048, -5723044, -15768972, 12918188, 11743514, -25999048,
+-19842748, 10822781, 4585415, 6943352, 13172665, 17166984, -6320045, -9371619, -524523, -6087580,
+-317291, -1966021, -8698383, 3421478, -36034240, 12246026, 17550310, -18632642, -15303505, 11588896,
+-11712913, -10672457, -5049808, 6467147, 942208, 22331682, 199716, 13031468, -1255741, -9151502,
+4885526, 6709813, 7035157, -5918465, 188442, 686658, -784368, -3812857, -8885750, 5857799,
+9440338, -4849018, -15665893, 3968550, 1397475, 16616155, -1551020, -6540699, 5192616, 1823751,
+8373576, -37581, -5025649, 95563, 6843494, 5033702, 1749125, -1815697, 1341640, -3122978,
+-2545842, -7843147, 3982509, 3717294, -5282273, 2560874, 2425583, 1410897, -836445, -2653753,
+753767, -7519951, 8381092, 20337208, 37970196, 59759100, 2063195, -23768886, -30681098, -6992744,
+1499481, -7121593, 29157460, 21923124, 15254650, 25366614, 18543522, 15028627, 1266479, 12157442,
+-15193447, 22003118, 25425132, 1958505, 26441966, -10526965, 2421825, 6318434, -24135568, -16163573,
+-5509906, -14272713, -16831976, -2288681, 27174794, -117575, -4904853, 3597035, 6034429, -3399467,
+-36175972, -4751308, 9829570, -5136781, -10879689, 4744328, 14398341, 25280178, 6474127, 13005698,
+18020072, 22071300, -29844654, -20667382, 12162811, -8522289, 38661148, -3738769, 33287070, -26349624,
+16044387, 27125940, 1335198, 4621922, 16443819, -28827284, -13193603, 1015760, 16930762, 727997,
+19442244, 8013872, 7515656, 19743428, 7365332, -2321967, -7872675, -22759032, -4992900, 1600412,
+6447283, 727997, 846645, 779537, -12208981, 6797323, 4728759, 11143830, -3397856, 8448738,
+13726179, 8214662, 3736085, 222801, -1247151, 3088082, -4276177, 3006477, -4071092, 401579,
+3109020, 2991982, -3558381, 6274411, 6177237, 7576859, 1174674, 846645, 3414499, -2357937,
+5340255, -3454228, 5390184, 11813844, -1047435, -1954210, 1241246, 10305774, -5821292, 2626909,
+-846109, -1230508, -1553704, 1638530, 3123515, 4779225, 3787088, 3706557, 9659381, -6299107,
+11395622, -5129265, 42939472, 14498736, 15281494, 31390842, -1972464, 6897181, 13842143, 20277614,
+-21904334, -17510582, -7263327, -19236084, -3115462, -25950730, 13815299, 21271900, 15625628, 21127480,
+-13714904, -7479686, 16402480, 12807592, -8479339, 21423296, 13003013, -4546223, -25515864, 14663555,
+16023449, -12823162, -1654099, 7851200, 4020626, -20513300, 24297166, 6730214, 26058640, 14382772,
+10387378, -13677323, 12308303, -7111929, 39556648, -30613990, 3672197, 12186433, -5597416, -19642496,
+13027710, 12847321, -2181844, 12647605, -11704323, 32368484, -14576045, 8788577, 7227893, -19983946,
+-8562554, -27725088, 12195023, 8574902, -20635170, 19854024, 16924318, -14095546, 12203613, -1196685,
+32729798, 10979010, -16019154, -11551315, -11406359, 10598906, -6554657, 9092446, -3933653, 2292976,
+11092290, 7249368, 5634997, -10318659, 28132036, 3474629, -10645076, -15500537, 13679471, 7101729,
+12916040, -6893960, 3898220, 10506027, 21238614, 5753646, -3325379, 17945984, -4599373, -4691715,
+-2355790, 2117419, 4861366, -10091563, -9088688, 4392141, -7849590, -4447439, 1092532, -3422015,
+-1018444, -952946, -7724499, 5846524, 3202972, -14695231, 3688840, -10882910, -6979322, -3189013,
+5577015, 3361886, 10423349, 4958540, -295279, 3355443, 3830574, 4842039, 399432, 1655710,
+2379412, 9250823, -2899640, -38056632, 16586627, -32500554, 33107218, 39826156, -2399813, 6757594,
+-32858648, -545998, -7544647, 3081639, 18680424, 19154480, -6010270, 9818295, 15489800, 2260227,
+6354404, 4311074, 6272263, -4359929, 22712860, -3440269, 4970888, -13042742, 25601764, 5367636,
+-2657511, -1078037, 23030152, 8683887, 10761577, 25489558, -5940477, -16106664, 31367756, -33767568,
+-14682346, -6030671, 7259569, 22003654, 4996658, -9332427, -9542344, -16407849, -485868, -3156801,
+6314676, 35414688, 34484292, 21799644, 31108984, -3034395, 46909096, -15891916, 13022878, -11333345,
+1043140, 14628122, -7299834, 1587527, -14162118, -18351858, 272730, -11579769, 9583146, -15677704,
+23200876, -17589502, -28144384, -11758547, -7228967, -2660195, 33847028, -20552492, -4713190, -2998961,
+-21246130, -5471252, 12385612, 26507464, -2332704, -1259499, 1046361, -8825621, -18243410, 644782,
+-771484, -2877628, -1869385, -91268, -10519986, 8404177, -8998493, 10405632, -4128001, -8139500,
+-8789651, 2085744, 8396124, -5967320, -7515119, -2757906, 6977711, 7581691, -5483063, 3517578,
+4683125, 2652142, 4673998, -4465156, -3885335, 2067490, 533650, 4751308, -5869610, 4168266,
+7767449, -411243, -2430952, -4028679, 6822019, -13728863, -6347425, 13431436, -8063801, -1015223,
+-2045478, 2553358, -8279087, 6023692, -2559801, 12380243, 10734734, 176631, -13336947, 58553288,
+81298896, 24929600, 63377612, -13875429, -44066900, -30888332, -21584358, 10690710, 11662447, -14696304,
+-23663122, 20509006, 27597312, 16113107, 27533962, 21223044, 5252745, 8438000, 4169876, -1388885,
+-18097918, 7980586, -21447992, 15110769, 150324, -20100446, 23296976, 14068702, 11150272, 40200356,
+24729348, -11551851, -7755101, -14499273, -17150878, -21036750, -8284455, 805306, -16613470, -5185100,
+34751656, 52674016, 38830800, 5285494, 26502632, 28233504, 43215424, 19757386, -22894860, -37628744,
+-23444616, -24022826, 14200236, 11891691, -51395188, -35285840, -9073655, 21636434, 46774880, -35065724,
+-1384590, -30440580, -3948686, 38196756, -21044802, 14368813, -30529164, -5019206, -9123584, 25743498,
+-28618440, -16350940, 461709, 11341398, -23236846, 53303764, -12572443, -883153, 30324616, -13377749,
+22793392, -7324530, -18853832, -14697378, 8842801, 816044, 7533910, 4670240, -16842178, 399969,
+-7130183, 20366734, 11926587, 3536906, 11125576, 12658342, 664109, -240518, -4095251, -12824235,
+25995290, -8143258, 5401995, 118648, -15161771, 512175, 1582696, -4867809, -10001368, -2263985,
+-5910412, 1329292, 3786551, -4542465, 784368, 17635672, 12567611, -2412698, -2968359, 16693464,
+-7168301, -2268280, -14341970, -20610474, -7820599, -5559835, -2439005, -5774047, -23241142, -44906032,
+5250061, 24711094, -20918638, 38393788, -15609522, 15161771, -5366562, -44740676, -23061826, -2325188,
+-26461830, -60330868, -17121350, 21553756, 33135672, -16447040, -26016764, -53841172, -16222628, 15705622,
+-10940355, -15701864, -26949846, 6198175, -6300717, -4654671, -5288179, 10722386, 21288006, -16905528,
+16389595, 14095546, -17246442, -49119932, 3716757, 3859565, 12359842, 5808407, 31768800, 3140158,
+-49014168, 229244, -53951232, -335007, 18321256, 22379464, -4468377, 2897492, 24620364, -13113609,
+-9816685, -16872780, 15818901, 11680164, -8051453, 19179176, -6331319, 8043937, 8623757, 31438624,
+3860102, -11231876, -34057480, -11663521, 17145510, 15138149, 26417270, 38963408, 67159864, 33571612,
+15878494, -17626546, -68166496, -18624052, -10163503, 51803212, -9092983, 3191698, -612033, -16391743,
+1830193, 15168751, 6853694, -388695, 332323, 254477, -324270, 25117506, -9503152, -7508140,
+-8775692, 17424146, 6236293, 8812736, -7308424, -21445846, 6612102, 9066676, -10226854, -1437740,
+4984310, -1225139, 1184874, -3794604, -31321050, -10095321, -2971044, 14170171, 21678310, 2667712,
+-18961744, -17963700, 7713762, 3036542, -2224793, -3001645, 479426, -1853815, -1456531, 16542067,
+-18675054, 2378338, -16137803, 16565152, -9633075, 449361, -23008140, -3409667, 14515916, -4595615,
+7541426, -12758200, 3543348, -43776992, -13377749, 30306362, -15038291, -12641162, -3306051, -9893994,
+-35098472, -39043936, -57045756, -18084496, 51003, -4508105, 37243272, 10164577, 48664664, 29956860,
+15035070, -6908455, -18053358, -3461744, 68274408, 4135517, 19645718, 10991358, -8622684, 33931852,
+-14247480, 27365920, -30048128, -3096135, -21664352, 25744570, -36471788, -7789997, 11094974, 11355357,
+11656004, -31958852, 22622666, -36563056, 7369627, -17974976, -12261058, 36145372, 2113661, 2262374,
+12453795, -13888850, -839129, 9354976, -44255880, 1068910, 10176388, -6560026, 28469190, -12876849,
+-5596343, 47800840, -18176838, -40007620, 83215, -15192373, 3209414, -3151432, -2114735, -32141388,
+17096118, -5347235, -43671764, 26142930, -54083840, 10362145, -12407624, -21548924, -34190624, -4547834,
+9238475, 15581068, 1387274, 12588012, 15761456, -18807662, 32934346, -7769059, 8797704, -588947,
+15715285, -867583, -1785096, -5506685, 9290014, -19840064, -2550137, 6287296, 4250944, -7809861,
+-135828, -8725226, -11410654, 5709086, 4657355, 8506720, 5542656, -2650532, 6682432, 19424526,
+-9703405, -10358924, 3403762, -1124208, 3821447, 14360760, -2092723, 7747584, 7386270, 7335804,
+-9882720, -12000675, -2943663, -1126355, -12414066, -882616, -2474975, 5066988, -13559749, 3879429,
+-18924700, -66735200, -68579352, -58546308, -29519310, 120998896, 37888056, -15138686, -15801185, -59913720,
+-126835216, -14335527, 34027416, 42469712, 18218714, -19573240, -14664092, -37444060, -41227392, 30874372,
+-29726006, 76229224, 57132192, -89101248, 28690918, 11587285, -18758806, 6805376, 63791540, 9029632,
+43967580, 87352656, -19175418, -71963248, 3234647, -12386686, -67085780, -18399104, 32200444, -3093987,
+39667244, 64164128, 5596343, -55910812, -109313896, -93885304, -83936544, -8967355, 81027776, 22978612,
+21504364, 12040404, -22231288, -109589312, -68625528, -35221416, -13508746, 6541235, 24562382, 23851028,
+30692910, 31455804, 39150776, -47317116, -17146584, -38776576, -3451006, -42396696, 26091926, 26068840,
+53616224, 59569584, 28363428, 746787, -16098611, -11184095, -73804720, -58764816, 51298552, 80371720,
+54670640, 64195804, -15650861, -28877750, -58440548, -33304788, 17036524, 8590, 3807489, 17969606,
+5898064, 4449049, -14299557, -18851686, -9447854, -14267344, 345745, 14082124, 3854196, 5390721,
+-3413425, 8171712, -15578920, 10214506, -4769561, -14428943, -14212047, -4359392, -23524610, -7304129,
+-14440217, 14703821, 16574816, 7981123, 6327024, -15337328, -31370978, -31025234, 8084202, -3015604,
+13921600, 12253005, 6466074, -22636626, -11580306, -21558052, -33183992, 9820980, 22939420, -8871255,
+-121768232, -136324944, -92743376, -95395520, -25590488, 106556528, 71724880, 114979496, 128088272, 194632880,
+129216240, 133721656, 86231136, -6813429, -96453152, -166669424, -196809360, -170889776, -134812576, -97623000,
+-23740432, -5173825, -14254996, 4721243, 42157252, 69490424, 96552472, 83866752, 114467320, 110504136,
+142940272, 130662032, 36607616, 87620552, -19233938, 23784456, 17546552, 4716948, -12320651, -127836480,
+-153313696, -196057744, -229834976, -209082768, -116224496, -103421736, -85016728, -106574248, -123169464, -26641146,
+29941290, 76948632, 113022600, 163536784, 195575088, 250975872, 331434560, 321683392, 244395984, 198096784,
+164973456, 87024624, 138521280, -56552908, -113223392, -270952320, -310038112, -385605376, -370272896, -338864864,
+-320932832, -310228704, -190948336, -118580824, -64470680, 172683984, 176159696, 269123200, 346027808, 299740928,
+270986144, 273855712, 215344288, 163902928, 90142776, 11492259, -1463510, -51218560, -61929132, -90070296,
+-116286776, -160002560, -172614192, -157502896, -181144544, -140391200, -128580584, -121756952, -106627392, -55441584,
+-10983305, 56186224, 116709296, 109102368, 170671264, 188196336, 208002048, 245097680, 198619696, 115471272,
+57822608, -35779224, -90550256, -91090888, -175111184, -162739536, -222120144, -177416512, -184124176, -118828320,
+-123693448, -72920488, -9342091, 61786324, 93720480, 164700192, 192387696, 186087504, 181366800, 176068960,
+135773584, 47742320, -31244814, -45542760, -58606440, -65387656, -73498704, -87575992, -80851688, -60436096,
+-64958696, -59369868, -51081120, -37298568, -16554415, -11860552, -8407935, 1801202, 10766409, 6766721,
+10054518, 25705916, 30918932, 27554362, 18340584, 12511240, 9405442, 9110163, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
13406740,
-1573569, -5842766, 2067490, -3676492, 1025423, -2377801, -1482301, -3195456, 2348273, 4016868,
-1200443, 1285269, -7240241, 1482301, 179315, 2319282, 2834142, 1577327, 4240744, -833224,
--2290291, 493384, 5058398, 82678, -3781182, -334471, 4315369, 2367064, 513785, 93952,
-1254667, -56371, 381178, 877784, -79457, -1468342, -123480, 91268, 1730335, -2441689,
--5812702, 4386772, 4384088, 3836480, 3599720, -127238, 1990717, 3438658, -3501472, -744640,
--34897, -4678830, 1128503, 405874, 4346507, 503585, 2462627, 132070, 5450851, 2798171,
--730144, 3849365, 2350958, -1167694, -4343823, 1163936, 1209033, -1100585, 389768, -2437931,
--594853, 2316061, 1629940, 1935957, 4505958, -673236, -1341640, 672699, 2704219, 6169721,
--3528853, 1693828, 1710471, 1845225, -123480, -343061, 1946157, -985158, 111132, 962610,
--1089311, -130460, 233002, 388695, -690416, -1063541, 773094, -207769, 199716, -344671,
-1175747, -71404, 1387811, -246424, 11334419, -7558606, 2563022, 6385543, 1499481, 4504347,
-5449777, -4932770, 1046898, -439160, 2124935, -6256694, -4970351, -914291, 4881767, 6622303,
--2527052, -2173790, 3173444, -5350456, -7170985, -1309428, -8434779, 2905546, 2803540, 780610,
--5240397, -5318244, 1898912, -3088618, 722628, -140660, 5561983, 5887864, 5302137, -845035,
-3715147, -5791764, 2527588, -3408057, -316217, 325344, 4536023, -4881231, -4353486, 51003,
-5966247, 2478733, 2328409, -3597035, 2018098, 1497333, -1764158, -7442105, -1214939, -2512556,
--3283503, -2932926, 3414499, -3120831, -1021665, 796180, 2116882, 5376226, -2061584, -107374,
--4050154, -1938104, 828392, -5578626, -356482, 1550483, 3820374, -1194538, -2914135, -1444720,
--5841156, 2783676, 1698123, 362388, -487479, -5013838, 2061584, 442919, -1808718, 1859184,
--731218, 473520, 1656784, 193274, 331786, 1972464, 852014, 431107, 36507, 1588601,
-558883, -263067, 627065, 945430, -4001836, -7248831, -1810329, 1243393, -2238752, -3671123,
--2036888, -7226283, -4072166, 7630010, -311385, -3388729, 4042638, -6120329, -1406602, -7632694,
--1591285, -6016176, -3149285, 7056632, 364535, -1443646, -7974144, -4975720, -1804423, -3420405,
-1342177, -4248797, 409096, 2632815, 8441221, 4137664, 3162170, 3652333, 6832219, -5751498,
--73014, -1726577, -4435628, 1823751, -911607, -1729798, -4642323, 2413772, 4868883, 507343,
--3545496, -2272038, 12472048, 50466, -3590056, -4996121, -7486128, -9972377, -1248762, -5171678,
-1193464, -1014149, 2782065, 517007, 1343788, -4582730, 681826, 748398, 6034429, 2039573,
--4519380, 252866, -1407676, -1342177, -1079647, 2157684, 3234647, 3169686, -2960306, -2880849,
-1814624, 862215, 1186485, 1305670, -1152662, -4422743, -5194763, -614180, 935766, -1239635,
-539555, 35970, -705985, -1095217, -1628866, -632434, -313533, -978179, -1809792, 153545,
-588947, -978716, 343061, -861141, 170188, -1077500, -540629, 212601, 282931, -1298691,
-192737, -494458, -2334852, 242129, -821413, 1311039, -17431662, 6905234, -3114925, 2921115,
--7211787, -2900714, -5645735, -5162014, 354872, -1621887, -3536369, 8887361, 2305861, -818191,
--5383742, -1698123, 2501819, -6164889, -3263638, -5871221, -3267396, 8494908, 830539, 5666136,
--537945, -52076, -1422171, 1609539, 1572495, -4498978, 59593, 1353452, 2543158, 9216463,
--4811974, -5579163, -1100585, 10193568, 3211025, 10848014, 963683, 1001264, -1912334, 5359046,
--925565, 7900056, -797790, -918049, -1414655, -3285650, 3362960, 1019518, -2812130, 2296734,
-2981781, 5484137, -3162707, -277562, -976568, 4883915, -1988570, -824097, -1830730, -1250909,
-1184337, -1600949, 576599, 823560, -1184337, 1207423, -8081518, 773631, 5267778, 1843078,
-7052337, 569620, 758599, 1693828, 4497905, 7182796, -4741644, 687195, -362388, 1693828,
--212601, -182536, 2166274, 4655745, 1806034, 2282238, 265214, -812823, -1198833, 628139,
-2376728, -831613, 1089311, 1074816, 1134408, -48855, 500901, 1976759, -328565, 517007,
--56371, 2281165, 1352378, -746251, -113817, 2454037, 1280437, -744103, 1829656, 999117,
--3731790, -1841467, -79457, -8618926, -1440425, 81068, -4290136, -15254113, -3699041, -3289408,
--6647536, -1297080, -1709934, 9552544, -3314104, 7224672, 3383897, 5211406, -9808632, -4406637,
--9911711, -9207873, -8053, 1733556, 5765994, -2780455, -4333622, -2663417, -6703907, 1435056,
-3049427, 3510062, 2159832, -2030983, 2495913, -4471598, 480499, -8066486, 2910914, -2079301,
-1102196, 1779190, 3011309, 3218004, -3085934, 122943, 7810935, -4186519, 3783866, 3976603,
--263604, 2382096, 3840238, -1584843, 1509681, 3789235, 202937, 6680822, -3503083, -4621922,
--2243047, 2185602, -24696, -8877697, -4511327, -9836012, -10714870, -1823214, 2890513, -8725763,
-3884261, -1416266, -161598, -2987150, 2916283, -5191005, -838592, -1813550, -7335804, -6459094,
--2148558, 3837553, 115427, 3291019, -1393180, 2130304, 1695438, -4054449, 13959, -803159,
-2284923, -2733210, -4583804, -1495186, 613643, -3221, -1770600, 779000, -1102196, -415538,
-719944, -243203, 41876, -93952, -1049046, -227096, -1018444, -675384, -661425, -23085,
-462246, 55835, 1291711, 500364, -638876, 4925254, -14198088, -684510, 4411469, 2784213,
--7536057, -917512, -4795331, 1234266, 1439888, 1030792, -8230768, -11017665, -7510824, 1290638,
--6004365, 6572374, 2079301, -10608032, 7665443, 6723235, 5317707, 4765266, -5273146, 8643085,
-2281165, -61740, -3363496, 2923262, 5177046, -4741107, -6968585, 2582886, -2629594, -8630737,
--1153736, -8327942, -3038689, 15098421, -4027069, -6776385, -8412767, 477278, 1374926, 6012418,
-2391223, -5518496, 5027796, -633508, -4342749, -5737540, -6104223, 9308268, 4160213, 5869610,
--4430796, -6054294, 2736968, 1514513, -6242735, -306016, -3828427, 6021544, -1160715, 545998,
--7377143, 4720169, 3941706, -4185983, -2702608, -2594160, 8347806, 110059, 1224066, -2402497,
-5719823, -5834176, -9940702, -4425427, 858993, -1894618, 5411659, -1103807, -629750, -5784784,
--3064459, 2518462, 324807, -4114579, -2701535, 3528316, 1889786, -1110249, 143881, 60666,
--10737, -1127429, 1516124, 686121, 2362769, 385473, 399432, 91805, 1014686, -478352,
-1470489, -1941325, 2020245, -7623567, -335007, 1877438, -1915019, -6095096, -9043591, -7246684,
-7286949, 843961, 8934069, 10668162, 10357851, 1566589, 14219563, 3410204, -1585380, 6575595,
-5017059, 13143137, 1890323, 7556458, -10378788, 17075180, 12559021, 6072547, -5187784, -4110284,
-6165426, 1425392, 4422206, -2537252, 7360500, -2196876, -1915555, 6627672, 5377836, -6739878,
-4538170, -1799054, 7168838, 7797513, -15286862, -2811593, 9421548, 2849711, 5130339, 4049617,
-9329206, -4497368, 3743064, 186294, -7854422, -3818226, -214748, 1651415, -11533061, -962073,
-7297150, -5746666, 12248173, 9196062, -3696893, -88584, 2351495, 4614943, 7153268, -2747169,
--2305861, 11609297, -2733747, -214212, 5047661, 263067, 6782827, 5424007, 2234994, 3758097,
-3912715, 3754338, 1731409, 1613297, -1607928, -2674691, -1130650, -2433099, -285615, -1689533,
-1289564, 1191317, -2450279, -1907502, -287226, 1903744, 3794604, 3199751, 1800128, 397284,
-1889249, -3223910, -1467268, -1713155, 729608, -1229971, 1695438, -3751654, 419296, -24159,
-3278134, 1351841, 168041, 611496, 3397856, 1086090, -2921115, 1016834, -264141, 840740,
-29695940, -15530602, 2165201, 12246562, -1177358, 445066, 16207059, 17772038, 2109903, -1348083,
-3738232, -846109, 4015795, 5114769, -6495065, -1979443, 10490458, 9276592, -4329864, -8431021,
--9033390, -9356049, -5064304, 7808251, -6001680, 3435437, 412854, -10933376, -744640, -7259032,
--883690, 3162707, 4796405, -14181982, -6687264, -11286100, -3526168, 17164836, 2455648, -1517197,
-1507534, -1524713, 829466, 5092758, 2952790, 8588861, -477815, 6427956, 3789772, -5931350,
-3764539, -9043054, 236760, -9082245, -9529996, 3633542, -10484015, 4442070, -143881, 5370857,
-4216584, 3886409, -5609228, 6555731, -9512279, -153008, -4396436, -1432909, 11887933, 474057,
-5937256, 5956583, -1238024, -2213519, 4580046, -9796820, 3917547, 9425843, -13987098, -10203769,
--2876018, 7143605, -684510, -8521215, 3211025, -1191317, 3651259, -3097208, 1100585, -1731409,
-6129992, -1083406, 5633924, 3201361, 5258651, 1903207, 1436130, -2709051, 3550327, 1670742,
--154082, 2182380, 1781875, -948114, 2638721, 2181307, -1335198, -1315871, -4598836, -861141,
--2641405, 1074, -149787, -1449552, 2312303, -705448, 1340567, 602369, 4728222, -3662533,
--17729088, 3300146, 4282620, -11975443, 5409512, -78920, 12553116, -3311957, -6386617, 5315559,
--15519864, -5334887, 13084081, 5745056, -7971460, -19160922, 8525510, -2662343, 4678293, -12222403,
--16215649, -10991895, 14011257, 1155883, 7723425, -1340567, -7439420, -11011222, 5183489, -2930778,
--9605157, -11203422, 795643, -9999221, -7713762, -4190278, -1997697, -10833518, 6056978, 7261179,
-9787694, -4679904, 8697309, -7009924, 13775034, -2554432, -757525, 10522670, 5387500, -2591476,
--7088307, -3528316, 10126996, 2359011, -7563975, 3617436, 10758356, 10204842, 4359929, -12444668,
--13778792, -1218160, 2651606, 868657, -9925133, 2981244, 10908143, 3178276, -4680978, -17605070,
-4687957, -7652021, -17207786, 550830, 896574, -9698036, 13946833, -996432, -5767068, -19035832,
--139050, -5593121, -906238, 7165079, -4286378, -7271917, -510027, 1653026, 1705639, -5762773,
--5876052, -5801427, 2126546, -5006322, 296890, -893890, 801011, -1384053, 1388885, 2571612,
-2257542, 2937758, 1430761, 5272073, 6671695, 388158, 1950452, 1239098, -2625836, -717260,
--2143189, 830002, 715649, 404801, -6515466, 778463, -570157, -2359548, -328028, -2120103,
-1941325, -2593624, -2750927, -21936008, 13775034, 10627360, 11699491, 1673427, 12364674, 1270774,
--7902203, -9142375, 1404991, 9928354, -6815040, 2328409, -14769856, 10174241, 10790032, -5390721,
--3025268, 2520609, 11815455, 8632884, -6054294, -5402532, 8093866, -9629317, 3387119, -13178033,
-27917, -3849365, -17680770, -18233210, 3602941, 10622528, 4949950, -15553150, -8367670, 12021077,
--13181255, -5415417, 10674604, -2777770, 13331042, -4578972, -9199283, 3580392, -13406740, 15607374,
--1580548, 2843268, -7194607, -3592203, -559420, -14459544, -8818105, 1267552, -2289218, 1551020,
--4636954, -15349676, 2988224, -12691091, 5794985, -3123515, 9322227, -15316390, 7029251, 2739116,
--4297115, 11592654, -1357747, -7796977, -15055471, -1940788, 3426310, -12122545, 9127342, -8158827,
-5956046, -15993921, -16364362, 7926899, 6332930, -6482717, -5091147, 5326297, 3653407, -3403762,
--2848100, -4337380, -5628555, -431107, -9099962, -880468, -1255204, 779537, 2612951, -1610076,
-2640868, -1679869, -506806, -4873178, -2399813, -1259499, -586263, 7413651, -2117419, -940061,
-4285841, -4489315, 3221762, 1915555, -1726577, -1022202, -4559645, -4175245, -145492, -2405182,
--2910914, 7178501, -6950331, 2396055, 8545911, 12598750, -3302830, 1407139, -4442070, -16798690,
--3562139, -3591130, 7332046, -14758044, -11811, -8513699, 9195525, -10325638, -14047764, 9367324,
-4338454, 6091874, 19435264, -3201361, -5521181, 5468030, -12381317, -14496588, 1238561, 18554796,
-5692979, 10412074, -7357279, -9122511, -14708116, 2937758, 18900004, -8460012, 9906342, 2249489,
-14711337, -22437446, -7069516, -394063, 2694555, 12750684, 6222871, -17108466, -4563403, -7953206,
--610959, -19698868, -3024731, -7108171, 1430224, -10382547, -615254, 2374580, -28646894, 3260954,
--8928700, 1731409, -11289858, -653372, 7144678, 3572876, -3783866, -3677029, -15061913, 15188615,
-14718853, 4785668, 3737695, -13183939, 20155744, 6945499, 10436771, -3994320, -31489090, 12266427,
--984084, 23649700, 22359600, 6974490, -2756295, 9758703, 624381, 8538932, 570694, 933619,
--5478768, 2622078, -4992900, -2782065, -1307818, 10276246, -28991, 568546, 2774549, -712428,
--5454609, -2928094, 1077500, 4130148, -1844152, 2025077, -3142842, 4298189, -3291556, -5331128,
--2543695, -826244, 2602213, 887448, -987306, -984621, -1010391, 6748468, -1340030, 322123,
-1280437, 3328063, 27215060, 9607842, 18631568, -18045306, 4216048, 18997714, -5686537, -6822019,
-2700998, -11718818, 8979703, 2289218, -13689671, -17930414, -1330903, 15242302, -376347, -1207960,
-9978283, -14854144, -3772055, -12224551, 6894497, -20845624, 361314, -4442070, 7605850, -21772262,
--15038291, -9503152, 6403796, 7031935, 4871567, -7049652, 5312338, -5239860, 6477885, -4294968,
--1891933, -1481227, -6102612, 4165045, 9660455, 5761162, 9724880, -780073, -9401147, 1361505,
--9360881, 25001542, -6298033, -24554864, -7639673, 6736656, 21361556, -21344914, -8792872, -1372779,
-13741211, 898722, -30218854, -3692598, 13969381, 28837484, 1083406, 20082194, 28919626, -2130841,
-9320079, 13677323, -3764539, 24652576, -3294777, 29766270, 4752918, -8152385, -25782152, -16138876,
-207769, 7779797, 3721589, -3905736, -4998268, -7995619, -10926934, -9702868, 11847667, 3482145,
--129386, -16940962, -1902134, 645319, -3082176, -9625022, 2531346, 5127654, -1447404, -4977867,
--3634079, -9429601, -5694053, -2757369, 5966247, -1145683, -5133560, 5178657, -7380902, 5337034,
-5377299, -4610111, -8949101, 8210367, 12175159, 1884954, 382789, 762357, 7097434, -2091649,
--8464844, 1022202, 8223789, 6829535, -8405788, -7119982, 1318018, 1372779, 127238, 2457795,
--1310502, 11460583, 13868449, -23730768, -23086522, 6149857, -5368709, 760746, -9174050, 21599928,
--9664750, -6162741, 7518877, 5435281, 230854, -9828496, -7195681, -11967389, 4859756, -660351,
--5781563, -922344, 14365055, 21573620, -23269596, -1451699, -22699440, -2384781, -5850819, 22560926,
--9488656, -9053791, -4353486, 13744969, 4575214, 3819300, 5771363, 5522791, -4045859, 307627,
--2925410, 3698504, -2665027, 21124260, -5468567, 5635534, 14872398, -7693360, -17015586, 3831648,
-5833640, -5954436, -6509023, -1384053, 3531537, 10737418, -14570140, 19605988, 28798830, 19372450,
--8048232, -11599096, -26612154, -34333432, -12620225, -86973, -6191732, -1697586, -3887482, 8265128,
--686121, -13231720, 6999723, -5833103, -1238561, 12663711, 21068962, -5102958, 5939940, -3652870,
-1178969, 19208704, 9703942, 16436840, 16705275, -13277355, -4075924, -3000035, 499290, -250719,
-5962489, 466541, 3664681, 16858820, 724776, 7909719, -3535832, -3626026, -6856379, -2048699,
-1003949, 7718593, -2099165, -6300180, -2969970, 3754875, -2619930, -1353989, -1947231, 2403034,
-632434, -2392834, -1308354, 1800665, 877247, 964757, 9716290, -3877819, 266825, 1350767,
-167504, -5248987, 2472828, 3119220, 6215355, -12217571, 23172960, 10440529, 13198435, 19793894,
-30566746, -11698954, 15834471, -31405338, -3834332, -14070313, -30856118, 12535936, 7353521, 9440875,
-4169340, 12278238, 3775276, -22202296, 18762028, 33108830, -4911295, -5291400, 8138963, 3316252,
--6871411, -29460792, 2454574, 132070, -2643016, 425739, 10071698, -21056078, 4603131, 6013491,
--4298189, -12135430, -5890011, -13528610, 13840532, -30248918, -4351339, -19448148, 10852845, 4399121,
-11005317, -3831648, 3025268, -7719667, 18566070, 5598490, 15248208, -13817447, 14988899, -319438,
--14598594, 30254824, -4971962, 3721589, 20459614, -19603842, 22928682, 13697188, -17900350, 7587060,
--6818798, 10075993, -24813636, 18183280, 2616172, 6399502, -2291365, 5898601, -20142322, 12866648,
-22961432, -45521820, 4696010, 43935904, -28326920, -9093520, 3144990, 21422224, 15227270, 5293547,
-13310104, -5976984, 8043937, -3320010, -9670656, 4817880, -2128156, -1622961, 8304856, 11994770,
--982474, -4649839, -3951907, 3556233, 7690676, -10133438, -3754875, -6932077, -4272419, -9060770,
-9118752, 11989938, -2479807, 5524402, -3361886, 2248952, 7675107, 8616778, -9864466, 852014,
-3721589, -5195837, 7932268, 415538, -106300, 7148973, 3702262, -8575439, -7130183, 2451353,
-1198833, -2582349, 1517734, 18386754, -11215233, -13495324, -479963, -12923557, -5901822, -34055332,
--29070486, -4070019, -16698296, -20047296, -14463302, 8805220, -5180805, -10186589, -16292422, 14931991,
-963146, -24616068, -3914326, -215822, -11722039, -3752728, 9921374, 7080254, -1765232, 9664,
-428423, -6242198, 5200669, 11375221, -4330938, -2818572, 17558900, -33135136, -5416491, 9215389,
-35210680, -14680735, -9172440, -13236552, -17912162, 7710540, 37369436, 6854231, 23139136, 4691715,
--3829500, -2047626, -2791729, -18138720, 3932580, 3988414, -14711874, 3159485, 29189672, -4835060,
--9028021, 4800700, -10506027, -2505040, 25750476, 37993280, 10266046, 22768158, 26418344, -9481677,
--11049877, 2909840, -8743480, 1399623, -26154204, -337692, -20381230, 6090264, 4245575, 12306692,
--21214990, -8034810, -7239168, -8420283, -6644852, -7548942, 11811160, 2433636, 15225659, -3979824,
-5806259, 15107547, -2793339, 423054, -2203318, -6161131, -4854387, -945967, -3665218, -5675263,
--86973, 2184528, -2865817, 905164, 7122130, -7253126, -6476811, 367220, 5346161, 2643552,
--3409667, -10690174, -10261751, -1384053, 2433636, -6394133, -3471407, 2091649, -2103460, 983011,
-779537, 7101729, 2457258, 1712081, -7885560, 8640400, -3651796, 27110370, 30617748, -12203613,
-69198904, -9444096, 1641751, -12735652, 8199630, -5354214, 8093329, 17814988, 5090610, -16503949,
--8936216, -17246978, -229244, -11690901, -21378736, 2936147, 13967234, -2291365, 4105989, 6663105,
-8214662, -63351, -6127308, -8016557, 4163971, 11274, -10630044, 4260071, 29779692, 21074330,
-11999602, -25139518, 18156974, 14218489, -6591164, -7623030, -7656853, -10013179, -4285304, 8241506,
--18195092, 1818382, 2327336, 11025718, 28388660, 5548024, 5925981, 1618129, -3339874, -5655935,
-12340515, -7371775, 28665148, 9285719, -2716030, 12615930, 2432025, -19202798, -13824426, 16352014,
-18804978, 7056632, -4643397, 12560632, 13465796, 19206020, 37402184, 4102768, -10691247, -19108846,
--12781286, 9804337, 2158758, 3245922, -1729261, 13244069, 1443109, -1489817, -17387102, -8481487,
-18205830, 20481088, -7210713, -13721884, -16478179, -4669167, 8917426, 5705864, 1682554, -5465883,
-1487669, 125091, -7267622, 203474, -16111496, -4064113, -564788, 11742977, -2036351, -3364570,
-141197, 9557913, -5579163, 6896107, -3446175, -7432441, 6630356, 9456981, 6044630, 6740415,
--783832, 7208566, 13413720, 5997922, 5766531, 4000225, -4862440, -2051384, 437013, -1008780,
-4080756, -3578245, 6621229, 8645769, 5072357, 809064, -6356552, 2727841, 2414309, 7021198,
-11217918, -10737955, 49445812, -7349226, 2102387, 5483600, -3728569, -684510, 12404939, -9190156,
--10865194, -5701569, 16008417, 14295262, -38200512, 7379291, 6563784, 15643345, -9745281, -15073188,
--14333380, 10945187, 9933722, -15400142, -8374650, -6315213, 25776246, 12955769, 7291244, -4974109,
--26574574, 7565048, 6782290, 13752485, -3221226, 7317014, -7306276, 2614025, -23056996, 9629854,
-9563818, 355945, -5638755, -14500883, -28682866, 18685792, -12016245, 9615895, 9965398, 16510391,
-2423435, -17526688, 29325500, 5734855, -28408524, -13225278, 17221208, 4079145, 22507240, 9473087,
-3840775, -20329154, -9895605, 11368778, -35219804, 38115688, -27044872, 1552094, 23038742, -6135361,
-45507324, 6803765, 8404714, -16412144, 52993992, 5514738, 34550864, -23315230, -10232760, -7332046,
-13617731, -1414655, -5132486, 23966454, -19568408, 23115514, -27189828, 5928129, 3052648, 5028333,
--5043366, 20381230, -2168959, 10402948, 9433359, 13547401, 7978976, 3999152, 9765145, 10588168,
-676457, 3916473, 1482301, -7093676, 9364102, 320512, 6541235, 12812424, 6727530, 863288,
--321049, 9822053, 10841571, 5306969, -5655398, 21442088, -637266, -4236985, -3839701, 13778255,
--10100152, 4813585, -1975148, 7423851, 792421, 3103114, 4382478, -2894808, -2018098, 2127620,
-4427575, 3581466, 4617090, 5541582, -6131603, 17343614, 40761924, 13534516, 25595858, 32631014,
--1403917, 37420440, -28841242, -10326175, -10865194, -9532143, 3991635, 6116034, -2487323, -12730820,
--24819006, 23802708, 22434762, 9539659, 20257214, -33226940, -28815472, 9720585, 13707388, -15348603,
--21624624, 13812078, -6857989, -30959734, -11447698, -5876052, 15263777, -28458454, 15697569, 10735271,
-12418898, -13292924, -874563, -13145284, -5871221, -37906844, -9333501, 18434536, -60224032, -19013284,
--2397666, -1303523, 1984812, -36131948, -9102109, -54437100, -4643397, 10815801, -15620259, -16996796,
--7161321, 16443282, -5649493, -19590956, -22517976, -56792352, -20389820, 26667452, -25283398, -38203196,
-31911070, -9999221, -43147780, 13074417, 38723964, -20712480, -9558450, 4769025, -28352152, 35072704,
-15388868, 22478248, -11876658, -2411087, 11356967, 33413234, 15373299, 5332739, -10844792, -2250026,
-37660420, 3762391, 5717675, -2697240, -22484154, -9817758, 17577690, -304406, 922344, -3522410,
--20121922, -1416266, 8407935, -12256226, 14445586, -18951006, -12449500, 4030290, -6918656, 10014253,
-3779034, -17223356, 6880538, 8834211, 4438849, 3438658, -7293928, 4288525, -434329, -4094715,
--12568148, 6267968, 4723927, -1276142, 8996346, -13481902, 1242856, -12894566, 49392, 3642132,
--4937602, -2078227, -979253, 5354214, 418759, 47595752, 65606164, -9679246, -1520955, -24999930,
--25162602, -43725988, 19250044, -7008313, 65527244, -13229036, -27649926, -38662220, 2746095, 12682502,
--14006962, 12775917, 42996380, -16363825, -7122130, -29214368, -13060996, 29255706, 33626372, -32937030,
--9030169, 17586818, -6782290, 8038568, -9550934, 42239928, 33913060, 71675488, 23630910, 31957778,
--13597866, 23045720, 48566416, 16084653, -2659659, 11688753, -1212791, 31845036, 16827682, 46229416,
-13306882, -45714020, 16625818, 18287434, 38440496, -20827370, -17713518, 22501334, 24299852, -10919417,
-38636452, -12903692, 16079284, -41548440, 26998702, -9371619, 14985678, 15454903, 33921116, 29543470,
--22709640, -23616952, -7361037, 35653596, 35930624, -12887586, -19331648, -37341520, -3917547, 27187680,
-30626338, 20667920, -8454106, -24517820, -23310934, -3517041, 16843252, -15810311, 23331336, 6269042,
-16401943, 3460133, -7821136, 18816788, 11847130, -2103460, -7388955, 6346351, 15801722, -21746494,
-9357123, 11872900, 15397995, 8927090, 21628918, -6359773, 7823820, -9302899, -14316200, 9143985,
-18240726, 16476031, 24380918, 463856, -49392, 7950522, 6659884, 43728672, 8489540, -1100585,
--18580028, 826781, 27710592, 14714558, 21438866, 13114146, -439160, 1119913, -4620848, 562104,
-26593900, 22705882, 2400887, 8956617, -2604898, -3611531, 1012539, 11918534, 8495982, 8160975,
--5734855, -4853850, 6363531, 1636919, -15897285, -52763136, 3762928, 81046568, 48425220, -11223286,
--118620016, -16892106, -12009802, 9363029, -13470091, 2331094, 12406550, -4447976, 5369246, -25729538,
-16510928, 19931870, 36696200, -26423712, -33491082, 34765612, 54913304, 13943074, -24392730, -32399622,
--6979322, 8275865, 3077344, 8790187, 208843, 12194486, 4867809, 35955856, -11449846, -49115100,
--21335250, 15945603, 5792301, -16909824, -21549998, 2983929, 23213762, 41351408, 37831684, -690416,
-629213, 15643345, -14635101, -42359652, 12904229, -26373784, 51005956, 56084220, -1144072, 15940771,
-7989713, 11304354, -24751896, -3409130, 53179212, -19883552, 473520, -72110888, -9622337, 8348880,
-16698833, 15917149, 14942728, -17707614, -11274289, 32913946, 47877076, -8254927, -2097555, 4859756,
-19259170, 23591718, -10897406, 8086887, -26103738, -30554398, 3120831, 8680129, 11366094, -3518652,
--4853313, -5583995, -6662568, 21282100, -162672, -3685082, -11108396, -616328, 12951474, 12050068,
--6350109, 16387985, 3643743, 24797530, 1972464, 4619774, 756451, -8329552, -7407745, -4021700,
--5776194, -1375463, -7457674, -4861366, 1807644, 20692616, 23000086, 7159174, 11908334, 4820564,
-4107599, 20248086, -14483167, 15450608, 5357435, 25141664, -6761889, 6800007, 4460324, -9771051,
-7753490, -4480188, 7911330, -2489471, 13583908, -4511863, -8684961, 7127498, 2840584, 3651259,
-5258114, 3753265, 9573482, 2208687, 3465502, 2101313, 3238942, 3721052, 2735357, 6669011,
-4394826, 1012002, 645856, 1705102, 5940477, 4809827, 4429185, 5477694, -6285685, -53438520,
--22168474, 42549168, 46921980, 44537736, 60453276, 10289131, -26148834, -80000208, -60723860, -11544335,
-16848082, 50502372, 55006184, 25916906, 1159641, -26953604, -23276576, -10444824, 17138530, 47114180,
-26793616, -6383932, 1670742, -4011500, -25999048, -35676144, -29110214, 5283347, 43481176, 32517198,
-65407520, 42381664, 42112156, 59117004, -17303350, -41166724, -46642272, -62105764, -76261976, -28982976,
--9013526, 22431004, 41960756, 60401200, 56638272, 45806364, 29117194, 58001924, -11399917, -37063420,
--1733556, -9630927, 15408195, 17362942, 69524784, 60442000, -22573274, 10616085, -15806553, -46768436,
--13708462, 12054899, -27972586, 42913704, -17289928, 14060649, 3697967, -5240934, 37404332, 51622284,
-41442140, 28819230, -21559126, -52861920, -59757492, 16726750, -25179246, 4257387, -2852932, 33392834,
-5299453, 18740016, -16101296, -37175628, -34133716, -53997404, -46603616, 19435264, 11180337, 26633630,
-40685688, 31258772, 1242319, -24336358, -38580080, -52765820, -28628104, -13780403, -19250044, 8237211,
--6980396, -6493454, -6185290, -16325171, 168577, -7490423, -10548977, -13060459, -8020852, -2130304,
-8383776, -15719580, -9545565, 22308060, 2232846, -119464512, -125736776, -130787120, -134055592, -177140560,
--19223200, -50107236, -12120398, 16551193, 80706192, 91716880, 94836632, 132741872, 183504624, 175827904,
-172805856, 138838576, 100291248, 72878080, 21925808, -83719112, -40156332, -49458696, -30610768, -100545184,
--16660178, -41609644, -45818712, -83195664, -63918776, -65040300, -58906012, -61546344, -108156400, -95783680,
--56499756, -51095080, -64177548, -88938576, -13483513, -77876880, -147614272, -126491616, -111038328, -58529668,
--75420160, -13453448, -152784864, -67647880, -67648960, -31255550, -22764400, -78668768, 3539590, -78816944,
--9468255, 12314208, 37006512, 3340411, 38034084, 56727928, 89203784, 95056216, 130791416, 85453744,
-205208704, 129667208, 238850640, 162376064, 237952464, 275961856, 327714592, 269165056, 271026944, 305413504,
-274085472, 278319776, 270913120, 234870288, 135953424, 108615968, 76703288, 55919400, 65488588, 97633736,
-53890028, -19767050, -33867964, -39142184, -67223216, -87312928, -106416944, -98044440, -161110672, -156117232,
--160748816, -194795552, -171485152, -216383680, -191542656, -224826512, -230847520, -217517552, -239963584, -217045632,
--242307024, -192364608, -188419680, -156209568, -166662992, -171856144, -120736360, -108163384, -82571280, -42059004,
-14302241, 46119896, 40519260, 51621748, 46302968, 52185464, 60047400, 85623392, 102984728, 93013960,
-83799640, 102304512, 95332168, 117667608, 107268952, 78353624, 71478992, 62064424, 54842976, 34498788,
-26384520, 24437290, 15589658, 16940962, 6990596, 11067594, 9880572, 6725382, 9915469, 7137162,
-4484483, 1649804, -3459596, -496606, 87510, -10295573, -16087337, -9226127, -7261179, -6651831,
--4581657, -3251827, -2968896, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+1573569, -5842766, 2067490, -3676492, 1025423, -2377801, -1482301, -3195456, 2348273, 4016868,
+1200443, 1285269, -7240241, 1482301, 179315, 2319282, 2834142, 1577327, 4240744, -833224,
+-2290291, 493384, 5058398, 82678, -3781182, -334471, 4315369, 2367064, 513785, 93952,
+1254667, -56371, 381178, 877784, -79457, -1468342, -123480, 91268, 1730335, -2441689,
+-5812702, 4386772, 4384088, 3836480, 3599720, -127238, 1990717, 3438658, -3501472, -744640,
+-34897, -4678830, 1128503, 405874, 4346507, 503585, 2462627, 132070, 5450851, 2798171,
+-730144, 3849365, 2350958, -1167694, -4343823, 1163936, 1209033, -1100585, 389768, -2437931,
+-594853, 2316061, 1629940, 1935957, 4505958, -673236, -1341640, 672699, 2704219, 6169721,
+-3528853, 1693828, 1710471, 1845225, -123480, -343061, 1946157, -985158, 111132, 962610,
+-1089311, -130460, 233002, 388695, -690416, -1063541, 773094, -207769, 199716, -344671,
+1175747, -71404, 1387811, -246424, 11334419, -7558606, 2563022, 6385543, 1499481, 4504347,
+5449777, -4932770, 1046898, -439160, 2124935, -6256694, -4970351, -914291, 4881767, 6622303,
+-2527052, -2173790, 3173444, -5350456, -7170985, -1309428, -8434779, 2905546, 2803540, 780610,
+-5240397, -5318244, 1898912, -3088618, 722628, -140660, 5561983, 5887864, 5302137, -845035,
+3715147, -5791764, 2527588, -3408057, -316217, 325344, 4536023, -4881231, -4353486, 51003,
+5966247, 2478733, 2328409, -3597035, 2018098, 1497333, -1764158, -7442105, -1214939, -2512556,
+-3283503, -2932926, 3414499, -3120831, -1021665, 796180, 2116882, 5376226, -2061584, -107374,
+-4050154, -1938104, 828392, -5578626, -356482, 1550483, 3820374, -1194538, -2914135, -1444720,
+-5841156, 2783676, 1698123, 362388, -487479, -5013838, 2061584, 442919, -1808718, 1859184,
+-731218, 473520, 1656784, 193274, 331786, 1972464, 852014, 431107, 36507, 1588601,
+558883, -263067, 627065, 945430, -4001836, -7248831, -1810329, 1243393, -2238752, -3671123,
+-2036888, -7226283, -4072166, 7630010, -311385, -3388729, 4042638, -6120329, -1406602, -7632694,
+-1591285, -6016176, -3149285, 7056632, 364535, -1443646, -7974144, -4975720, -1804423, -3420405,
+1342177, -4248797, 409096, 2632815, 8441221, 4137664, 3162170, 3652333, 6832219, -5751498,
+-73014, -1726577, -4435628, 1823751, -911607, -1729798, -4642323, 2413772, 4868883, 507343,
+-3545496, -2272038, 12472048, 50466, -3590056, -4996121, -7486128, -9972377, -1248762, -5171678,
+1193464, -1014149, 2782065, 517007, 1343788, -4582730, 681826, 748398, 6034429, 2039573,
+-4519380, 252866, -1407676, -1342177, -1079647, 2157684, 3234647, 3169686, -2960306, -2880849,
+1814624, 862215, 1186485, 1305670, -1152662, -4422743, -5194763, -614180, 935766, -1239635,
+539555, 35970, -705985, -1095217, -1628866, -632434, -313533, -978179, -1809792, 153545,
+588947, -978716, 343061, -861141, 170188, -1077500, -540629, 212601, 282931, -1298691,
+192737, -494458, -2334852, 242129, -821413, 1311039, -17431662, 6905234, -3114925, 2921115,
+-7211787, -2900714, -5645735, -5162014, 354872, -1621887, -3536369, 8887361, 2305861, -818191,
+-5383742, -1698123, 2501819, -6164889, -3263638, -5871221, -3267396, 8494908, 830539, 5666136,
+-537945, -52076, -1422171, 1609539, 1572495, -4498978, 59593, 1353452, 2543158, 9216463,
+-4811974, -5579163, -1100585, 10193568, 3211025, 10848014, 963683, 1001264, -1912334, 5359046,
+-925565, 7900056, -797790, -918049, -1414655, -3285650, 3362960, 1019518, -2812130, 2296734,
+2981781, 5484137, -3162707, -277562, -976568, 4883915, -1988570, -824097, -1830730, -1250909,
+1184337, -1600949, 576599, 823560, -1184337, 1207423, -8081518, 773631, 5267778, 1843078,
+7052337, 569620, 758599, 1693828, 4497905, 7182796, -4741644, 687195, -362388, 1693828,
+-212601, -182536, 2166274, 4655745, 1806034, 2282238, 265214, -812823, -1198833, 628139,
+2376728, -831613, 1089311, 1074816, 1134408, -48855, 500901, 1976759, -328565, 517007,
+-56371, 2281165, 1352378, -746251, -113817, 2454037, 1280437, -744103, 1829656, 999117,
+-3731790, -1841467, -79457, -8618926, -1440425, 81068, -4290136, -15254113, -3699041, -3289408,
+-6647536, -1297080, -1709934, 9552544, -3314104, 7224672, 3383897, 5211406, -9808632, -4406637,
+-9911711, -9207873, -8053, 1733556, 5765994, -2780455, -4333622, -2663417, -6703907, 1435056,
+3049427, 3510062, 2159832, -2030983, 2495913, -4471598, 480499, -8066486, 2910914, -2079301,
+1102196, 1779190, 3011309, 3218004, -3085934, 122943, 7810935, -4186519, 3783866, 3976603,
+-263604, 2382096, 3840238, -1584843, 1509681, 3789235, 202937, 6680822, -3503083, -4621922,
+-2243047, 2185602, -24696, -8877697, -4511327, -9836012, -10714870, -1823214, 2890513, -8725763,
+3884261, -1416266, -161598, -2987150, 2916283, -5191005, -838592, -1813550, -7335804, -6459094,
+-2148558, 3837553, 115427, 3291019, -1393180, 2130304, 1695438, -4054449, 13959, -803159,
+2284923, -2733210, -4583804, -1495186, 613643, -3221, -1770600, 779000, -1102196, -415538,
+719944, -243203, 41876, -93952, -1049046, -227096, -1018444, -675384, -661425, -23085,
+462246, 55835, 1291711, 500364, -638876, 4925254, -14198088, -684510, 4411469, 2784213,
+-7536057, -917512, -4795331, 1234266, 1439888, 1030792, -8230768, -11017665, -7510824, 1290638,
+-6004365, 6572374, 2079301, -10608032, 7665443, 6723235, 5317707, 4765266, -5273146, 8643085,
+2281165, -61740, -3363496, 2923262, 5177046, -4741107, -6968585, 2582886, -2629594, -8630737,
+-1153736, -8327942, -3038689, 15098421, -4027069, -6776385, -8412767, 477278, 1374926, 6012418,
+2391223, -5518496, 5027796, -633508, -4342749, -5737540, -6104223, 9308268, 4160213, 5869610,
+-4430796, -6054294, 2736968, 1514513, -6242735, -306016, -3828427, 6021544, -1160715, 545998,
+-7377143, 4720169, 3941706, -4185983, -2702608, -2594160, 8347806, 110059, 1224066, -2402497,
+5719823, -5834176, -9940702, -4425427, 858993, -1894618, 5411659, -1103807, -629750, -5784784,
+-3064459, 2518462, 324807, -4114579, -2701535, 3528316, 1889786, -1110249, 143881, 60666,
+-10737, -1127429, 1516124, 686121, 2362769, 385473, 399432, 91805, 1014686, -478352,
+1470489, -1941325, 2020245, -7623567, -335007, 1877438, -1915019, -6095096, -9043591, -7246684,
+7286949, 843961, 8934069, 10668162, 10357851, 1566589, 14219563, 3410204, -1585380, 6575595,
+5017059, 13143137, 1890323, 7556458, -10378788, 17075180, 12559021, 6072547, -5187784, -4110284,
+6165426, 1425392, 4422206, -2537252, 7360500, -2196876, -1915555, 6627672, 5377836, -6739878,
+4538170, -1799054, 7168838, 7797513, -15286862, -2811593, 9421548, 2849711, 5130339, 4049617,
+9329206, -4497368, 3743064, 186294, -7854422, -3818226, -214748, 1651415, -11533061, -962073,
+7297150, -5746666, 12248173, 9196062, -3696893, -88584, 2351495, 4614943, 7153268, -2747169,
+-2305861, 11609297, -2733747, -214212, 5047661, 263067, 6782827, 5424007, 2234994, 3758097,
+3912715, 3754338, 1731409, 1613297, -1607928, -2674691, -1130650, -2433099, -285615, -1689533,
+1289564, 1191317, -2450279, -1907502, -287226, 1903744, 3794604, 3199751, 1800128, 397284,
+1889249, -3223910, -1467268, -1713155, 729608, -1229971, 1695438, -3751654, 419296, -24159,
+3278134, 1351841, 168041, 611496, 3397856, 1086090, -2921115, 1016834, -264141, 840740,
+29695940, -15530602, 2165201, 12246562, -1177358, 445066, 16207059, 17772038, 2109903, -1348083,
+3738232, -846109, 4015795, 5114769, -6495065, -1979443, 10490458, 9276592, -4329864, -8431021,
+-9033390, -9356049, -5064304, 7808251, -6001680, 3435437, 412854, -10933376, -744640, -7259032,
+-883690, 3162707, 4796405, -14181982, -6687264, -11286100, -3526168, 17164836, 2455648, -1517197,
+1507534, -1524713, 829466, 5092758, 2952790, 8588861, -477815, 6427956, 3789772, -5931350,
+3764539, -9043054, 236760, -9082245, -9529996, 3633542, -10484015, 4442070, -143881, 5370857,
+4216584, 3886409, -5609228, 6555731, -9512279, -153008, -4396436, -1432909, 11887933, 474057,
+5937256, 5956583, -1238024, -2213519, 4580046, -9796820, 3917547, 9425843, -13987098, -10203769,
+-2876018, 7143605, -684510, -8521215, 3211025, -1191317, 3651259, -3097208, 1100585, -1731409,
+6129992, -1083406, 5633924, 3201361, 5258651, 1903207, 1436130, -2709051, 3550327, 1670742,
+-154082, 2182380, 1781875, -948114, 2638721, 2181307, -1335198, -1315871, -4598836, -861141,
+-2641405, 1074, -149787, -1449552, 2312303, -705448, 1340567, 602369, 4728222, -3662533,
+-17729088, 3300146, 4282620, -11975443, 5409512, -78920, 12553116, -3311957, -6386617, 5315559,
+-15519864, -5334887, 13084081, 5745056, -7971460, -19160922, 8525510, -2662343, 4678293, -12222403,
+-16215649, -10991895, 14011257, 1155883, 7723425, -1340567, -7439420, -11011222, 5183489, -2930778,
+-9605157, -11203422, 795643, -9999221, -7713762, -4190278, -1997697, -10833518, 6056978, 7261179,
+9787694, -4679904, 8697309, -7009924, 13775034, -2554432, -757525, 10522670, 5387500, -2591476,
+-7088307, -3528316, 10126996, 2359011, -7563975, 3617436, 10758356, 10204842, 4359929, -12444668,
+-13778792, -1218160, 2651606, 868657, -9925133, 2981244, 10908143, 3178276, -4680978, -17605070,
+4687957, -7652021, -17207786, 550830, 896574, -9698036, 13946833, -996432, -5767068, -19035832,
+-139050, -5593121, -906238, 7165079, -4286378, -7271917, -510027, 1653026, 1705639, -5762773,
+-5876052, -5801427, 2126546, -5006322, 296890, -893890, 801011, -1384053, 1388885, 2571612,
+2257542, 2937758, 1430761, 5272073, 6671695, 388158, 1950452, 1239098, -2625836, -717260,
+-2143189, 830002, 715649, 404801, -6515466, 778463, -570157, -2359548, -328028, -2120103,
+1941325, -2593624, -2750927, -21936008, 13775034, 10627360, 11699491, 1673427, 12364674, 1270774,
+-7902203, -9142375, 1404991, 9928354, -6815040, 2328409, -14769856, 10174241, 10790032, -5390721,
+-3025268, 2520609, 11815455, 8632884, -6054294, -5402532, 8093866, -9629317, 3387119, -13178033,
+27917, -3849365, -17680770, -18233210, 3602941, 10622528, 4949950, -15553150, -8367670, 12021077,
+-13181255, -5415417, 10674604, -2777770, 13331042, -4578972, -9199283, 3580392, -13406740, 15607374,
+-1580548, 2843268, -7194607, -3592203, -559420, -14459544, -8818105, 1267552, -2289218, 1551020,
+-4636954, -15349676, 2988224, -12691091, 5794985, -3123515, 9322227, -15316390, 7029251, 2739116,
+-4297115, 11592654, -1357747, -7796977, -15055471, -1940788, 3426310, -12122545, 9127342, -8158827,
+5956046, -15993921, -16364362, 7926899, 6332930, -6482717, -5091147, 5326297, 3653407, -3403762,
+-2848100, -4337380, -5628555, -431107, -9099962, -880468, -1255204, 779537, 2612951, -1610076,
+2640868, -1679869, -506806, -4873178, -2399813, -1259499, -586263, 7413651, -2117419, -940061,
+4285841, -4489315, 3221762, 1915555, -1726577, -1022202, -4559645, -4175245, -145492, -2405182,
+-2910914, 7178501, -6950331, 2396055, 8545911, 12598750, -3302830, 1407139, -4442070, -16798690,
+-3562139, -3591130, 7332046, -14758044, -11811, -8513699, 9195525, -10325638, -14047764, 9367324,
+4338454, 6091874, 19435264, -3201361, -5521181, 5468030, -12381317, -14496588, 1238561, 18554796,
+5692979, 10412074, -7357279, -9122511, -14708116, 2937758, 18900004, -8460012, 9906342, 2249489,
+14711337, -22437446, -7069516, -394063, 2694555, 12750684, 6222871, -17108466, -4563403, -7953206,
+-610959, -19698868, -3024731, -7108171, 1430224, -10382547, -615254, 2374580, -28646894, 3260954,
+-8928700, 1731409, -11289858, -653372, 7144678, 3572876, -3783866, -3677029, -15061913, 15188615,
+14718853, 4785668, 3737695, -13183939, 20155744, 6945499, 10436771, -3994320, -31489090, 12266427,
+-984084, 23649700, 22359600, 6974490, -2756295, 9758703, 624381, 8538932, 570694, 933619,
+-5478768, 2622078, -4992900, -2782065, -1307818, 10276246, -28991, 568546, 2774549, -712428,
+-5454609, -2928094, 1077500, 4130148, -1844152, 2025077, -3142842, 4298189, -3291556, -5331128,
+-2543695, -826244, 2602213, 887448, -987306, -984621, -1010391, 6748468, -1340030, 322123,
+1280437, 3328063, 27215060, 9607842, 18631568, -18045306, 4216048, 18997714, -5686537, -6822019,
+2700998, -11718818, 8979703, 2289218, -13689671, -17930414, -1330903, 15242302, -376347, -1207960,
+9978283, -14854144, -3772055, -12224551, 6894497, -20845624, 361314, -4442070, 7605850, -21772262,
+-15038291, -9503152, 6403796, 7031935, 4871567, -7049652, 5312338, -5239860, 6477885, -4294968,
+-1891933, -1481227, -6102612, 4165045, 9660455, 5761162, 9724880, -780073, -9401147, 1361505,
+-9360881, 25001542, -6298033, -24554864, -7639673, 6736656, 21361556, -21344914, -8792872, -1372779,
+13741211, 898722, -30218854, -3692598, 13969381, 28837484, 1083406, 20082194, 28919626, -2130841,
+9320079, 13677323, -3764539, 24652576, -3294777, 29766270, 4752918, -8152385, -25782152, -16138876,
+207769, 7779797, 3721589, -3905736, -4998268, -7995619, -10926934, -9702868, 11847667, 3482145,
+-129386, -16940962, -1902134, 645319, -3082176, -9625022, 2531346, 5127654, -1447404, -4977867,
+-3634079, -9429601, -5694053, -2757369, 5966247, -1145683, -5133560, 5178657, -7380902, 5337034,
+5377299, -4610111, -8949101, 8210367, 12175159, 1884954, 382789, 762357, 7097434, -2091649,
+-8464844, 1022202, 8223789, 6829535, -8405788, -7119982, 1318018, 1372779, 127238, 2457795,
+-1310502, 11460583, 13868449, -23730768, -23086522, 6149857, -5368709, 760746, -9174050, 21599928,
+-9664750, -6162741, 7518877, 5435281, 230854, -9828496, -7195681, -11967389, 4859756, -660351,
+-5781563, -922344, 14365055, 21573620, -23269596, -1451699, -22699440, -2384781, -5850819, 22560926,
+-9488656, -9053791, -4353486, 13744969, 4575214, 3819300, 5771363, 5522791, -4045859, 307627,
+-2925410, 3698504, -2665027, 21124260, -5468567, 5635534, 14872398, -7693360, -17015586, 3831648,
+5833640, -5954436, -6509023, -1384053, 3531537, 10737418, -14570140, 19605988, 28798830, 19372450,
+-8048232, -11599096, -26612154, -34333432, -12620225, -86973, -6191732, -1697586, -3887482, 8265128,
+-686121, -13231720, 6999723, -5833103, -1238561, 12663711, 21068962, -5102958, 5939940, -3652870,
+1178969, 19208704, 9703942, 16436840, 16705275, -13277355, -4075924, -3000035, 499290, -250719,
+5962489, 466541, 3664681, 16858820, 724776, 7909719, -3535832, -3626026, -6856379, -2048699,
+1003949, 7718593, -2099165, -6300180, -2969970, 3754875, -2619930, -1353989, -1947231, 2403034,
+632434, -2392834, -1308354, 1800665, 877247, 964757, 9716290, -3877819, 266825, 1350767,
+167504, -5248987, 2472828, 3119220, 6215355, -12217571, 23172960, 10440529, 13198435, 19793894,
+30566746, -11698954, 15834471, -31405338, -3834332, -14070313, -30856118, 12535936, 7353521, 9440875,
+4169340, 12278238, 3775276, -22202296, 18762028, 33108830, -4911295, -5291400, 8138963, 3316252,
+-6871411, -29460792, 2454574, 132070, -2643016, 425739, 10071698, -21056078, 4603131, 6013491,
+-4298189, -12135430, -5890011, -13528610, 13840532, -30248918, -4351339, -19448148, 10852845, 4399121,
+11005317, -3831648, 3025268, -7719667, 18566070, 5598490, 15248208, -13817447, 14988899, -319438,
+-14598594, 30254824, -4971962, 3721589, 20459614, -19603842, 22928682, 13697188, -17900350, 7587060,
+-6818798, 10075993, -24813636, 18183280, 2616172, 6399502, -2291365, 5898601, -20142322, 12866648,
+22961432, -45521820, 4696010, 43935904, -28326920, -9093520, 3144990, 21422224, 15227270, 5293547,
+13310104, -5976984, 8043937, -3320010, -9670656, 4817880, -2128156, -1622961, 8304856, 11994770,
+-982474, -4649839, -3951907, 3556233, 7690676, -10133438, -3754875, -6932077, -4272419, -9060770,
+9118752, 11989938, -2479807, 5524402, -3361886, 2248952, 7675107, 8616778, -9864466, 852014,
+3721589, -5195837, 7932268, 415538, -106300, 7148973, 3702262, -8575439, -7130183, 2451353,
+1198833, -2582349, 1517734, 18386754, -11215233, -13495324, -479963, -12923557, -5901822, -34055332,
+-29070486, -4070019, -16698296, -20047296, -14463302, 8805220, -5180805, -10186589, -16292422, 14931991,
+963146, -24616068, -3914326, -215822, -11722039, -3752728, 9921374, 7080254, -1765232, 9664,
+428423, -6242198, 5200669, 11375221, -4330938, -2818572, 17558900, -33135136, -5416491, 9215389,
+35210680, -14680735, -9172440, -13236552, -17912162, 7710540, 37369436, 6854231, 23139136, 4691715,
+-3829500, -2047626, -2791729, -18138720, 3932580, 3988414, -14711874, 3159485, 29189672, -4835060,
+-9028021, 4800700, -10506027, -2505040, 25750476, 37993280, 10266046, 22768158, 26418344, -9481677,
+-11049877, 2909840, -8743480, 1399623, -26154204, -337692, -20381230, 6090264, 4245575, 12306692,
+-21214990, -8034810, -7239168, -8420283, -6644852, -7548942, 11811160, 2433636, 15225659, -3979824,
+5806259, 15107547, -2793339, 423054, -2203318, -6161131, -4854387, -945967, -3665218, -5675263,
+-86973, 2184528, -2865817, 905164, 7122130, -7253126, -6476811, 367220, 5346161, 2643552,
+-3409667, -10690174, -10261751, -1384053, 2433636, -6394133, -3471407, 2091649, -2103460, 983011,
+779537, 7101729, 2457258, 1712081, -7885560, 8640400, -3651796, 27110370, 30617748, -12203613,
+69198904, -9444096, 1641751, -12735652, 8199630, -5354214, 8093329, 17814988, 5090610, -16503949,
+-8936216, -17246978, -229244, -11690901, -21378736, 2936147, 13967234, -2291365, 4105989, 6663105,
+8214662, -63351, -6127308, -8016557, 4163971, 11274, -10630044, 4260071, 29779692, 21074330,
+11999602, -25139518, 18156974, 14218489, -6591164, -7623030, -7656853, -10013179, -4285304, 8241506,
+-18195092, 1818382, 2327336, 11025718, 28388660, 5548024, 5925981, 1618129, -3339874, -5655935,
+12340515, -7371775, 28665148, 9285719, -2716030, 12615930, 2432025, -19202798, -13824426, 16352014,
+18804978, 7056632, -4643397, 12560632, 13465796, 19206020, 37402184, 4102768, -10691247, -19108846,
+-12781286, 9804337, 2158758, 3245922, -1729261, 13244069, 1443109, -1489817, -17387102, -8481487,
+18205830, 20481088, -7210713, -13721884, -16478179, -4669167, 8917426, 5705864, 1682554, -5465883,
+1487669, 125091, -7267622, 203474, -16111496, -4064113, -564788, 11742977, -2036351, -3364570,
+141197, 9557913, -5579163, 6896107, -3446175, -7432441, 6630356, 9456981, 6044630, 6740415,
+-783832, 7208566, 13413720, 5997922, 5766531, 4000225, -4862440, -2051384, 437013, -1008780,
+4080756, -3578245, 6621229, 8645769, 5072357, 809064, -6356552, 2727841, 2414309, 7021198,
+11217918, -10737955, 49445812, -7349226, 2102387, 5483600, -3728569, -684510, 12404939, -9190156,
+-10865194, -5701569, 16008417, 14295262, -38200512, 7379291, 6563784, 15643345, -9745281, -15073188,
+-14333380, 10945187, 9933722, -15400142, -8374650, -6315213, 25776246, 12955769, 7291244, -4974109,
+-26574574, 7565048, 6782290, 13752485, -3221226, 7317014, -7306276, 2614025, -23056996, 9629854,
+9563818, 355945, -5638755, -14500883, -28682866, 18685792, -12016245, 9615895, 9965398, 16510391,
+2423435, -17526688, 29325500, 5734855, -28408524, -13225278, 17221208, 4079145, 22507240, 9473087,
+3840775, -20329154, -9895605, 11368778, -35219804, 38115688, -27044872, 1552094, 23038742, -6135361,
+45507324, 6803765, 8404714, -16412144, 52993992, 5514738, 34550864, -23315230, -10232760, -7332046,
+13617731, -1414655, -5132486, 23966454, -19568408, 23115514, -27189828, 5928129, 3052648, 5028333,
+-5043366, 20381230, -2168959, 10402948, 9433359, 13547401, 7978976, 3999152, 9765145, 10588168,
+676457, 3916473, 1482301, -7093676, 9364102, 320512, 6541235, 12812424, 6727530, 863288,
+-321049, 9822053, 10841571, 5306969, -5655398, 21442088, -637266, -4236985, -3839701, 13778255,
+-10100152, 4813585, -1975148, 7423851, 792421, 3103114, 4382478, -2894808, -2018098, 2127620,
+4427575, 3581466, 4617090, 5541582, -6131603, 17343614, 40761924, 13534516, 25595858, 32631014,
+-1403917, 37420440, -28841242, -10326175, -10865194, -9532143, 3991635, 6116034, -2487323, -12730820,
+-24819006, 23802708, 22434762, 9539659, 20257214, -33226940, -28815472, 9720585, 13707388, -15348603,
+-21624624, 13812078, -6857989, -30959734, -11447698, -5876052, 15263777, -28458454, 15697569, 10735271,
+12418898, -13292924, -874563, -13145284, -5871221, -37906844, -9333501, 18434536, -60224032, -19013284,
+-2397666, -1303523, 1984812, -36131948, -9102109, -54437100, -4643397, 10815801, -15620259, -16996796,
+-7161321, 16443282, -5649493, -19590956, -22517976, -56792352, -20389820, 26667452, -25283398, -38203196,
+31911070, -9999221, -43147780, 13074417, 38723964, -20712480, -9558450, 4769025, -28352152, 35072704,
+15388868, 22478248, -11876658, -2411087, 11356967, 33413234, 15373299, 5332739, -10844792, -2250026,
+37660420, 3762391, 5717675, -2697240, -22484154, -9817758, 17577690, -304406, 922344, -3522410,
+-20121922, -1416266, 8407935, -12256226, 14445586, -18951006, -12449500, 4030290, -6918656, 10014253,
+3779034, -17223356, 6880538, 8834211, 4438849, 3438658, -7293928, 4288525, -434329, -4094715,
+-12568148, 6267968, 4723927, -1276142, 8996346, -13481902, 1242856, -12894566, 49392, 3642132,
+-4937602, -2078227, -979253, 5354214, 418759, 47595752, 65606164, -9679246, -1520955, -24999930,
+-25162602, -43725988, 19250044, -7008313, 65527244, -13229036, -27649926, -38662220, 2746095, 12682502,
+-14006962, 12775917, 42996380, -16363825, -7122130, -29214368, -13060996, 29255706, 33626372, -32937030,
+-9030169, 17586818, -6782290, 8038568, -9550934, 42239928, 33913060, 71675488, 23630910, 31957778,
+-13597866, 23045720, 48566416, 16084653, -2659659, 11688753, -1212791, 31845036, 16827682, 46229416,
+13306882, -45714020, 16625818, 18287434, 38440496, -20827370, -17713518, 22501334, 24299852, -10919417,
+38636452, -12903692, 16079284, -41548440, 26998702, -9371619, 14985678, 15454903, 33921116, 29543470,
+-22709640, -23616952, -7361037, 35653596, 35930624, -12887586, -19331648, -37341520, -3917547, 27187680,
+30626338, 20667920, -8454106, -24517820, -23310934, -3517041, 16843252, -15810311, 23331336, 6269042,
+16401943, 3460133, -7821136, 18816788, 11847130, -2103460, -7388955, 6346351, 15801722, -21746494,
+9357123, 11872900, 15397995, 8927090, 21628918, -6359773, 7823820, -9302899, -14316200, 9143985,
+18240726, 16476031, 24380918, 463856, -49392, 7950522, 6659884, 43728672, 8489540, -1100585,
+-18580028, 826781, 27710592, 14714558, 21438866, 13114146, -439160, 1119913, -4620848, 562104,
+26593900, 22705882, 2400887, 8956617, -2604898, -3611531, 1012539, 11918534, 8495982, 8160975,
+-5734855, -4853850, 6363531, 1636919, -15897285, -52763136, 3762928, 81046568, 48425220, -11223286,
+-118620016, -16892106, -12009802, 9363029, -13470091, 2331094, 12406550, -4447976, 5369246, -25729538,
+16510928, 19931870, 36696200, -26423712, -33491082, 34765612, 54913304, 13943074, -24392730, -32399622,
+-6979322, 8275865, 3077344, 8790187, 208843, 12194486, 4867809, 35955856, -11449846, -49115100,
+-21335250, 15945603, 5792301, -16909824, -21549998, 2983929, 23213762, 41351408, 37831684, -690416,
+629213, 15643345, -14635101, -42359652, 12904229, -26373784, 51005956, 56084220, -1144072, 15940771,
+7989713, 11304354, -24751896, -3409130, 53179212, -19883552, 473520, -72110888, -9622337, 8348880,
+16698833, 15917149, 14942728, -17707614, -11274289, 32913946, 47877076, -8254927, -2097555, 4859756,
+19259170, 23591718, -10897406, 8086887, -26103738, -30554398, 3120831, 8680129, 11366094, -3518652,
+-4853313, -5583995, -6662568, 21282100, -162672, -3685082, -11108396, -616328, 12951474, 12050068,
+-6350109, 16387985, 3643743, 24797530, 1972464, 4619774, 756451, -8329552, -7407745, -4021700,
+-5776194, -1375463, -7457674, -4861366, 1807644, 20692616, 23000086, 7159174, 11908334, 4820564,
+4107599, 20248086, -14483167, 15450608, 5357435, 25141664, -6761889, 6800007, 4460324, -9771051,
+7753490, -4480188, 7911330, -2489471, 13583908, -4511863, -8684961, 7127498, 2840584, 3651259,
+5258114, 3753265, 9573482, 2208687, 3465502, 2101313, 3238942, 3721052, 2735357, 6669011,
+4394826, 1012002, 645856, 1705102, 5940477, 4809827, 4429185, 5477694, -6285685, -53438520,
+-22168474, 42549168, 46921980, 44537736, 60453276, 10289131, -26148834, -80000208, -60723860, -11544335,
+16848082, 50502372, 55006184, 25916906, 1159641, -26953604, -23276576, -10444824, 17138530, 47114180,
+26793616, -6383932, 1670742, -4011500, -25999048, -35676144, -29110214, 5283347, 43481176, 32517198,
+65407520, 42381664, 42112156, 59117004, -17303350, -41166724, -46642272, -62105764, -76261976, -28982976,
+-9013526, 22431004, 41960756, 60401200, 56638272, 45806364, 29117194, 58001924, -11399917, -37063420,
+-1733556, -9630927, 15408195, 17362942, 69524784, 60442000, -22573274, 10616085, -15806553, -46768436,
+-13708462, 12054899, -27972586, 42913704, -17289928, 14060649, 3697967, -5240934, 37404332, 51622284,
+41442140, 28819230, -21559126, -52861920, -59757492, 16726750, -25179246, 4257387, -2852932, 33392834,
+5299453, 18740016, -16101296, -37175628, -34133716, -53997404, -46603616, 19435264, 11180337, 26633630,
+40685688, 31258772, 1242319, -24336358, -38580080, -52765820, -28628104, -13780403, -19250044, 8237211,
+-6980396, -6493454, -6185290, -16325171, 168577, -7490423, -10548977, -13060459, -8020852, -2130304,
+8383776, -15719580, -9545565, 22308060, 2232846, -119464512, -125736776, -130787120, -134055592, -177140560,
+-19223200, -50107236, -12120398, 16551193, 80706192, 91716880, 94836632, 132741872, 183504624, 175827904,
+172805856, 138838576, 100291248, 72878080, 21925808, -83719112, -40156332, -49458696, -30610768, -100545184,
+-16660178, -41609644, -45818712, -83195664, -63918776, -65040300, -58906012, -61546344, -108156400, -95783680,
+-56499756, -51095080, -64177548, -88938576, -13483513, -77876880, -147614272, -126491616, -111038328, -58529668,
+-75420160, -13453448, -152784864, -67647880, -67648960, -31255550, -22764400, -78668768, 3539590, -78816944,
+-9468255, 12314208, 37006512, 3340411, 38034084, 56727928, 89203784, 95056216, 130791416, 85453744,
+205208704, 129667208, 238850640, 162376064, 237952464, 275961856, 327714592, 269165056, 271026944, 305413504,
+274085472, 278319776, 270913120, 234870288, 135953424, 108615968, 76703288, 55919400, 65488588, 97633736,
+53890028, -19767050, -33867964, -39142184, -67223216, -87312928, -106416944, -98044440, -161110672, -156117232,
+-160748816, -194795552, -171485152, -216383680, -191542656, -224826512, -230847520, -217517552, -239963584, -217045632,
+-242307024, -192364608, -188419680, -156209568, -166662992, -171856144, -120736360, -108163384, -82571280, -42059004,
+14302241, 46119896, 40519260, 51621748, 46302968, 52185464, 60047400, 85623392, 102984728, 93013960,
+83799640, 102304512, 95332168, 117667608, 107268952, 78353624, 71478992, 62064424, 54842976, 34498788,
+26384520, 24437290, 15589658, 16940962, 6990596, 11067594, 9880572, 6725382, 9915469, 7137162,
+4484483, 1649804, -3459596, -496606, 87510, -10295573, -16087337, -9226127, -7261179, -6651831,
+-4581657, -3251827, -2968896, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
17045114,
-2260227, -5585605, 2661806, 3018288, 1051193, -7075959, 3245922, 5035849, -5403606, -1613834,
--6622840, -1449552, -2807835, -2422362, -944356, 375810, -219043, 683437, 2396592, -2946885,
-1333051, -6787122, 2350421, 4185446, 900333, -1778117, -5499169, 3610457, -2409477, 5833640,
-4980552, -205622, -2302103, 4757750, 5547487, 4461934, 4514011, 1127966, -3442953, 1090922,
-4270271, -1779190, -3598109, 3249680, 5146445, -2247879, 2691871, -5837935, -472983, -5120138,
-3508452, -6817724, -1834488, -1264868, 2345589, 3409667, 2419677, -188442, -3609383, 449361,
--4996658, -3297461, 924492, -613643, -3009162, 1655710, 1704028, 437013, 3167539, -2806224,
-1367947, -3792456, -1499481, -1609539, 2101313, -1963337, -4013110, -1795833, -1490354, 5539971,
-4764730, 1214402, -2517925, 335544, -286689, 974958, 1917703, 359704, 115427, 345208,
--70867, 89657, -703838, 561567, -2110977, 108448, -154082, 882079, 464393, -644782,
--919660, 201863, 389768, 413391, 9718437, -9793062, 372052, 173946, -2478733, -2938295,
--3129958, 1015223, -5518496, -5443334, 770410, 2645700, -201327, 3135863, 2443837, -2991982,
-1234803, -10740639, -2626909, -2399276, -2498597, -3384434, -3733937, -9465571, -7354058, 1012539,
-2218351, -505732, 5128191, 4102768, 1727114, -1820529, -1018981, 4806069, -1851668, 599685,
--696322, -5039071, 1691680, -1683627, -3432216, -1322313, 4128001, 9969693, -3795141, 1118839,
-2429878, -1836099, 3142306, 1409286, -3476776, 2037425, -8228621, -3804804, 98247, 3375844,
-5236102, -3198140, -1481227, -350040, -11927661, 2047089, 6176163, 341450, 902480, 3384434,
--1935420, 5278515, 7112466, -890132, 2026151, 4279935, 4061429, 814970, 228707, -1972464,
--2844342, -1771674, 1265405, -2704219, 5941014, 3997004, -126165, -2891050, -1479616, 3427921,
-4026532, -2002529, 3126199, -1890323, 854699, -1927367, -1167694, -1318018, 380641, 99858,
-236760, 275952, -215822, -634581, -2573222, -8390219, 1941325, 304406, -8115341, 1240172,
-4545686, 6689412, 1717987, -4816269, 11340861, -1524713, -2234994, 5328981, -3295851, -3212099,
-545461, -4144107, 5054640, 5050345, -2044941, -7633231, -3770981, 3794604, -4912906, 10786810,
-9310952, -7445863, -9107478, 323196, 1703491, -8669391, -567473, 3578245, 2430415, -4245575,
--2467996, 9944460, -1056025, 6844031, -679679, -2226941, -2312840, -5126044, 892279, -731218,
-5367099, -4584341, 1242319, -1204202, 997506, -2701535, -354335, 4524748, 3599183, -5673115,
-8834211, 726923, -39728, -143345, -809064, 2393908, -1217086, -7910793, -1122060, -4178466,
-6889128, 2883534, 180389, 8459475, -4680441, 5658083, 5567352, 509491, -4116726, -843961,
--875636, -91805, -1170916, -1708860, 2341294, 2477659, -3738769, 1791538, -220117, 2622078,
-2318746, -768262, 363462, -1161789, -1756105, 1251446, -1615982, -1366873, 694174, 1772211,
--1632088, -1219771, -2124398, -914291, 1279363, -813896, -308701, 23085, 649614, -1180579,
--668404, 1634772, 544924, -351114, -514322, -1845762, -20218022, 4638028, 1080184, 14401562,
--782758, 5785858, -7752416, 1665374, -5810554, -1392643, -2849711, -918049, 2641942, -1560147,
-2466922, 4853313, 3703336, 13674102, 9433896, -6211060, 3131031, -335007, 2519535, 1612223,
--1750736, -13589813, 3435974, -695785, -137439, 5156108, -814433, -3791919, -2641405, -643171,
--4225174, -2269890, -10864120, -2549063, 280247, -3837017, -687195, 4499515, 6435472, -2084670,
-7953743, -5956046, 1304060, 2717641, 1036161, -1848983, -4196720, 2962454, -1059783, 1823751,
--3120294, -4432406, 819802, 2577517, -4479651, 4263829, -3063386, 10157061, 10772315, -3279745,
-3928285, 4136591, -566399, -1400696, -1454383, -13171054, 5496485, 5348845, 155156, -2219424,
--5507222, 574989, -1621887, -6713571, -15038828, 983011, -3733937, 3852049, -8053, -64961,
--2518462, -1704028, -2837900, -286152, 1533840, -1966558, 2281702, -2420751, -1407676, -1025423,
--608812, 1222992, 1013612, -820876, 464393, 331249, 816581, 1334124, 1028645, -711891,
--1602560, 1122597, -681289, -1198833, 429497, 379031, -711354, 827855, 1352378, 454193,
--4327180, -6606734, 6594923, 3757560, -574452, 7622493, -4086662, 6838125, -7700877, -7393250,
-3600793, -11798275, -4178466, 2976949, 7184407, 9388262, -1637456, 7007776, -242129, 6674379,
-2469069, 1085016, -1096827, 365609, 6661495, -3174518, -699543, 1211718, 579284, -6562710,
--815507, -3560528, 13570486, -6486475, -6572374, -1596654, 6396817, 6435472, 5528160, 7393250,
--1278290, 1357747, -1638530, -3670587, 2800319, -331786, -697932, -4197794, 10645076, 6562173,
--3287261, 2027225, 3147674, -5614596, 1194538, 4135517, -1045288, 7981660, -3221226, -1037235,
--8675834, -3275450, -7376070, 328028, 10180146, -4007205, 2876554, 1742146, 353798, -2779918,
--940061, 88584, -2485176, 4884989, -5019743, -2370822, -443455, 10728828, 1702418, -67109,
-3391951, -2924873, -8048769, 1993402, 813896, -1285806, 586263, 1974074, -529892, 403190,
-3916473, 737124, -311922, 926639, 59593, -528818, -932545, 3628174, -175557, 299574,
--3320010, 2010045, 515933, 2000918, -489626, -1372779, -407485, 1012539, 1647120, 1057636,
--2705830, 125628, 1919314, -601832, -3413962, -2212982, -19057844, 13824426, 1457605, -7010461,
--16831440, -1675037, 428960, -9957882, -897111, 4639102, 3954054, 365609, -2877628, 3672734,
-12033425, 12206834, -5228049, -5737540, -13234942, 2646237, -2384781, 12858595, -5238250, -284005,
--3015604, 4839892, -1440962, -13180181, 4330401, -618475, -7809325, 7516, 1235877, -1069984,
--1328756, -5417565, -7540889, 4585415, 1137093, 5996848, -5209796, 10093710, 4793721, -2085207,
--8939438, -1775969, 3236258, 9871445, 3066070, -5583458, -2542084, 4587025, 2966212, -2867965,
--1395328, 4835060, 3965329, 5104032, 9787157, 10916733, 5340792, 5812165, 6717866, -3931506,
-980863, -7227893, 7233799, 1138166, 3659312, -5163625, -8019778, 1833414, -10254234, -3699041,
--4467303, 7532836, 7905424, 8265128, 2181844, -2344515, -2610266, 7720741, 1580011, -1081258,
-1954210, -2434173, 4941897, 255014, -64425, 1619740, 2034741, -768799, 4052839, -3221,
-694711, -1940788, -1157494, 1113470, 3164854, -194347, 1154273, 1826435, 1062468, 608275,
--941135, 1509681, -1252520, -6855305, -406948, 12825309, 7885560, 10842645, 2063732, -11864847,
--3910568, 12592844, -3631932, -7980049, -8311836, -8186208, -8658654, 4760435, 4839892, 3104725,
-2846490, 2936684, 12118250, -1500017, 5260261, -10409390, -11709155, 7839926, -415538, -6394133,
-459562, -16316044, -5325760, -5499169, 2005213, -577136, -1504849, -11480448, -7511361, 1269163,
-7927436, 12874701, -5106716, -5057861, 6864432, -8849243, -632971, -457414, 2961917, 5629092,
-4598836, 8921184, -4790499, 12936441, 6107981, -13993003, 6990060, -7781407, -9274445, -7723962,
--11219528, 10149545, 2389076, -11969537, 1370632, 2515777, 1111860, 1886564, -2190433, 8414915,
--4884989, 6466610, -10404558, 7884486, -5277978, -4820027, 1031329, 3493956, -403190, 5693516,
-16340740, -1381369, -8759049, 5167383, 10710038, 845572, -1161252, -8498130, -3700651, 7876970,
--1337882, -540629, 271657, 1583769, -2208687, -1277753, -192737, 2319282, -1345399, -287763,
--1546188, 4439923, -3257196, 678605, -3061238, -3837553, 1011465, 1227287, -1195612, 590558,
--1109175, -846645, -240518, -439160, -92342, -1628866, -956167, 4558034, -235149, 26307,
-26589068, -23968064, 11085847, 11567421, -10772852, -1944010, 15906948, 5767604, 10102837, 3021510,
--3499862, 23929948, -960999, -4476967, -25770, 81604, 11486353, 18001282, 6815040, -122943,
-361851, 2703145, 6184753, -84826, 3281892, -12579959, 5956583, 9808632, -2056753, 4001836,
-1074, 1823751, -8110509, -6326487, 456877, -276489, 11107322, 5488968, 4594542, -4676146,
--5753109, -5744519, 6393596, 9295383, 78383, -2985539, 18149994, 9403831, 12128451, -6534256,
--13542569, -2575907, -14181982, -9327595, -4272956, -5910412, -814970, 10619307, -3359201, 412854,
--8684424, -9269076, 10577431, -530428, 4933844, 5285494, -5517959, 10166188, 2646237, 914828,
--3531000, -6801618, 7977365, -2440615, -14125074, 8169565, 6900402, 8542153, 3850975, -9947681,
--2086280, 930934, -10388989, 5940477, 5959267, -969052, 4500052, 3764539, 4022237, -972273,
-6357089, 948114, -250719, -3221762, 1579474, -62814, 5064304, 1093069, -141197, 1036698,
--48855, 3725884, -1585380, -459025, -2468533, 1265405, -658204, -1933809, 420907, 520765,
--734976, 576063, 4102768, 3097208, -1773822, -1156957, -2646774, 688269, -570157, -355409,
--18583786, 2284386, 6135361, -9127879, 7612830, -15771657, 3602941, 4810900, -2075543, -6245420,
--8014946, -9344775, -15823733, 2021856, 17996450, -5918465, 8680666, 4828080, 13383655, 7112466,
--5056787, -11488501, 5922223, -2896956, -4085051, -11905112, -1779190, -1593970, -4750771, -5093831,
--2738042, -8361765, -10994043, 12833899, -1258425, -7432978, 10064719, 3563212, -8778376, 1333051,
--644245, 5739687, -11664594, 3303367, 4010426, -17210470, 5755256, 5645735, -8870718, 2571612,
-672162, -2764885, 6366216, 614180, -1200980, 787590, 4312684, 11650099, 9250823, 11888469,
-8192113, 4255776, -3070365, 17683990, -4488241, -9014599, 19581292, 1333587, 11834246, 2573222,
--3795141, -18149458, -16800838, -4148402, 1063004, -6613713, -3216931, -5187247, 11553462, -10091026,
--2946885, -1692754, 2820720, -9848897, 7128035, -757525, 2254321, -825171, -3830037, -6400575,
--4311074, -5035849, -4099010, -1195075, 654983, -3087545, -2208150, -1712618, 4225711, -4890357,
--4323422, -3510062, -4162897, -152471, 3390877, -1480153, -1659468, 2448131, 595927, -1206886,
-1658931, -3052111, -3375844, 2610266, -3936875, -6323266, 2232846, 5706938, -3020436, 636729,
-3819300, -1283658, -3139084, -30940944, 15134391, 26657252, 1851668, -15128485, 6893960, -2794413,
--1060320, 4370129, 2574296, 6862284, -8075076, 932008, 23882166, 18354006, 16044387, -17520782,
--751082, 4305168, 9158481, -8406862, -9425843, -2399276, 3013457, 8303246, 4117263, -22531936,
--25583510, 7957501, -855235, 14412837, 14763413, -9531069, 12217571, 9842991, 13050795, -889058,
--7792682, -8101382, 6234145, -8579734, -3297461, -2684, -374736, 7813620, 16596827, 9337796,
--4549981, -3917010, -8225399, -2094870, 728534, 4494147, -1773822, -2924336, 8158291, 5140539,
--12541305, -166430, 518080, 15074261, -7587060, -8652212, -16438450, -5577552, 2814277, 1102733,
-8490077, -1829656, 2124398, -7349763, -10922639, -9904195, -10008348, -5756330, 4776541, -20623360,
-2463164, -2887829, -3236795, -4359929, 4079682, 11298448, 8229158, 1309428, -1849520, -10476499,
--3342558, -964757, -2131378, 6922951, 3533148, 2114198, 1523640, 3599720, 4199941, -1604170,
--1756642, 107374, -1902671, 367220, 462783, 1383516, 2308545, -6700149, 1034550, -865973,
-5084168, 1381369, -6740951, -375273, -4268124, -3269544, -1683090, -1504849, -1791001, -850404,
-3810710, 3490735, 2943126, 5042292, 15592342, 1273995, 13530221, -1851668, 17562658, 8761733,
-13695040, 8418136, 3990025, -6782290, -686121, -4245039, 9386651, 2764885, 8243653, -7871065,
--1376537, 14564234, -17952964, -10034654, 13993540, -23680840, -10440529, 1766305, -4520453, -11725261,
-23849416, -4262218, 16474421, 6609955, -14352170, -2195802, -5397700, -17352742, -22541062, 18005040,
--163746, -6558952, 4453881, 328028, -2992519, 6557342, 2573222, -2324114, -8291971, 1592359,
-17009144, 14421426, -11894912, 4720706, 934155, 13454522, -6124624, 9119289, -19339164, -4680441,
-13204877, 4437238, -4426501, 15759309, -5012764, 11048803, -21470004, -24755654, -8925479, 485868,
--17538498, 18953690, 13375065, 19254876, -8827232, -6496138, -6676527, 1002875, -9764071, -99858,
--14923401, -13545253, 620623, 3821984, 13827110, 6540699, -1455994, -5094368, 4351876, 7987566,
-5234492, 3196530, -4915590, 5776731, 5157182, 6510097, 4819490, 3528316, 5216238, -7155953,
-6038724, -4327180, -2196876, 9469866, 8368744, 5631239, -995359, 341987, -2527052, 4858682,
-1523640, -1987496, 2637110, 4929012, 744640, 3832722, 3722663, -4927938, 1637993, -3723737,
--1089311, 1172526, 21589726, 15525770, 24328306, -21605832, -16239808, -37012416, 15947750, -4121021,
--31628676, -6134824, 3000572, 4658429, -11818676, 12875238, 10877542, 1221381, -143345, 2010045,
--5240934, -11013370, 2427194, -6263673, -10307385, -135291, 23977728, 744103, -3639985, -19174882,
-8088497, 15141370, -7834557, -23135916, -4197794, 7798050, 2765422, -4911295, 5041218, 1647657,
-8321499, -2339684, 13725105, 20976084, 7934952, -13947906, 15808164, 7117835, -17865454, -19011672,
-20664698, 9994389, -8048232, -9277129, -459562, -16851304, 12334609, 16250546, -387621, 915902,
-4091493, -2081449, 17784386, 5979668, 4622996, -7374996, 2873333, 6005438, 21961778, -5272609,
-8414915, -17016124, -19383188, 17282948, -2608656, -1616518, 1784559, 16473884, 360240, -775778,
-10395431, -4975720, 2071248, 9540733, 11643656, -5570036, -7256884, -15631533, -7714298, 5105106,
--6909529, 5440113, -177167, 5772973, -3131031, 4257387, 878858, -2408940, 1872606, 8738648,
-2149631, 8698919, 2618320, -5508296, 347355, 3628711, 3004330, -5405753, -4961224, -5266167,
--2268280, -4138201, -4056060, -6431177, -2778844, 3577171, 2263985, -658741, -1059246, 1953673,
--4284767, -108448, 5484673, -1554778, -907849, -2652142, -2248952, -1160715, -8168491, -1151051,
--3182034, -3502546, -5104032, -7267622, -25049324, -2065342, -16390132, -33248416, -34266860, -14812268,
--26163868, -11862700, -4227322, 4699231, 14631880, 16324097, 1671279, -8833137, 17581986, -8939974,
-8665633, -32826436, -3229816, -22519588, -15115064, 15252503, 10707890, 10419054, 3463891, 21964462,
--2221572, -1374926, -15822660, -5485210, -3187940, -10769094, -10877005, -26975078, -10609106, -2979097,
--4351339, -16689706, 14756971, 5877126, 8804146, -7348152, -2831457, -40935332, -11800960, -11283416,
-9477382, 20979304, -12927852, -1982664, -23851564, -1722282, 12271795, -3908957, -8056822, 5365488,
-17601312, 30039002, 6311992, 952409, -1663226, -8058970, -12026982, 8032663, -7925826, 27247810,
-5356361, 11731703, 55566140, -11059541, -9460202, -14038637, -19479824, -2643016, 18981608, 8544837,
-2712809, 6316823, -8029978, -6225018, -16954920, -4059818, 9530532, -1556926, -3750043, -1591822,
--3954054, 1997697, -625992, 3695819, 3744675, 3820910, 5013838, 5490579, 14153528, 8641474,
--5246840, 8238821, -220117, 526134, 5920613, -6847789, 128849, -7900593, -4779225, -10814191,
--8033737, -11279121, -9361955, -6271189, 12367895, -7697119, -4345433, -9079024, 566399, 2698313,
--1964948, 3728569, 1499481, -228707, -7672959, -27808840, 15775415, 26007638, -15397995, 775242,
-5826123, -9003862, -2177549, -19459960, -416075, -10924786, 28234042, -26844, -5347235, 22655952,
--5782100, 6568079, -26042534, 13472239, 4001299, 17561048, -8236137, 13069049, 23095112, 24812026,
-13914083, 22363358, 11445014, -3597572, 21735756, -10570988, -14361834, -4628364, 8706972, 14721537,
--35458176, -2457795, -22935126, 18132278, 8194798, -492311, 6220187, 25407952, 1056562, 22670984,
-9666898, 34354368, 3060164, -3959960, 15030775, 4936528, -17572858, 3728569, -2080375, -23570780,
-16474958, -14233522, -23000624, -47004660, 3610457, -5831492, 27585502, -15426986, 36927592, 12159052,
--656593, -5693516, 14379551, 15164456, -27078696, -11588896, -20021526, 6927782, -9056475, 20266876,
-6420976, 6792491, 9774809, -4710506, 1702955, -7142531, -2509872, 539018, -2715493, -20922396,
-8213588, -66035, 6150930, 176094, -6192269, 644782, 8501351, -13926431, 11945378, -5118528,
--75699, 1339493, -11712376, -1018981, 7016903, 3550327, -8424578, -3486977, -2066416, -9855876,
-3265786, -2821257, 14296336, -11511586, 5069672, 9976135, 3546032, -4254165, -3182034, 4846334,
-2346663, 3003793, -2578054, 5025649, -15369004, 4094715, 3644280, 6580964, -4689031, -7176354,
-511638, 6441914, 861678, 17859010, -11941083, -13361643, -13145284, 17173964, 8909910, 22363358,
-6208375, 69186552, -20547660, 372052, 520765, 32205276, 13335873, 14911590, -21125870, 9278203,
--8329552, 598074, -9771587, 2150705, 23277112, -6125160, 7383586, 44978508, 14120779, -20371566,
--23852100, 2774549, 29334626, 15298137, 5576478, -11349988, 24973088, 4239670, -3703336, -27440546,
-8391292, -4359929, 11828340, -24910274, -15202574, 1298691, -6334540, 3278671, -23226110, -801011,
--14166413, 6582575, 20598126, 16464220, 5391258, -31871342, 271657, 3151432, -28718298, -25651156,
--16996796, -14024142, -13998372, 22733798, 5196374, -650151, 14826227, 23638426, 6310918, 20472498,
-558346, 13554380, 90393496, -20623896, 14898168, 10377178, -15879031, 3365107, -60224568, 1214402,
-29912300, 7829726, -16565689, 23028540, 5555540, 8761733, -15023259, -3409667, -12833899, 4514011,
-1124745, 1146756, 5164162, -18660022, 6915971, -10234370, -7439957, -25549150, 6350109, 5874442,
-5101885, 6585796, 31991600, 4836133, 3430605, 3679176, 2511482, 19124952, 2255395, 8080981,
-6696391, 14592688, 5872831, -867047, -3222299, -2644089, 2429341, 9259413, 11050951, 3277597,
--16782048, -7702487, -3713536, -3710315, -5543192, -17524004, -4256850, 13467944, 36599564, -17013440,
--865973, -24550570, -17829482, 5816997, 16043850, -20310364, 24260660, 10175851, -31825708, 19589882,
--12880607, -15761456, -1307281, -19062676, 4497905, -8528731, 24622510, -14171781, -1109175, 13558675,
--47501264, 6817724, 14761803, -14327474, 11716671, -28698434, 28716688, 3150896, 4960151, -54316304,
-49052820, 21041582, 16120623, 1094143, -30962420, 28414966, -1795296, -14057965, 50164144, -9971303,
--22001506, -11586211, 6075768, 14526653, 13759465, 3673808, -8434242, -59027884, -6648610, 14785962,
-882616, 21693880, -30971546, 32003412, 3270081, 10831908, -31479962, -9089761, 5093831, 40787156,
--16934520, 9543417, -29163364, 25831544, 14492830, 24378234, -9371082, 10811506, 4234301, -31884764,
--30440580, 16770237, 13716515, 26003342, 5594195, 33367600, -50232328, -65747896, 10528575, -13861470,
-37187976, -24230058, -5222680, 4297115, -27974196, 1398549, -16688095, 14576045, 20684562, 2076080,
-16789028, 18452254, 5509906, -16644609, -8378408, 29677150, 15473157, 3861713, 5224828, -8886824,
-747861, 18073222, 10165114, -14612016, -8225936, 16816944, -2335389, 10482941, 10572062, -6453725,
--8538395, -8662949, 121333, 8978629, 4112431, 11483132, 16503412, 1361505, -463856, 13431436,
-890669, 2709588, 4306779, -5603322, 4661114, -9807021, 5657009, 2026151, 295279, 4126390,
--4891968, -45965276, 41857140, -9073655, -10152766, -16379395, -4811974, -36250596, -67662376, 23325430,
-19382114, -3008088, -13977434, -27577986, -4585952, -8570607, -14685030, 26623966, -60512868, -25867514,
--31961536, -9543954, -46081776, -4265440, -6968048, -1671279, -7743826, -9358197, 7391102, -474057,
--20408610, -6400575, -487479, -27907086, -14924474, -8243116, 2012192, 21457656, -11038603, 43023224,
--22504554, -3233574, 18079664, -19202798, 11655467, 2440078, -29512868, -44139380, -10830834, 11265699,
-40240084, 17454210, -30842160, -13048111, -88525720, -29626148, -6391448, 18622442, 48063904, -2548526,
--51496656, 2863133, 27963996, -10289131, -2437394, 29654602, 31205622, 71602472, -79115984, -15336791,
-11212549, 20024748, -24972014, -29644402, -42304892, -41997800, -23496692, -19524384, -5500780, -3002182,
--48875656, -20253456, -17913234, 18097918, -9224516, -4813048, 44024488, 33347736, 2676838, -6283537,
--2017024, -27189290, -1207960, 9692667, -19645180, -10521059, 3726421, 12426951, -8326331, -9623948,
--6512244, 13866839, -9170829, 14531485, 1041530, 15007689, 10663330, 10819023, -8260833, 5479842,
--20591684, 10634339, -2705293, 6273337, -18205830, -14093935, -2039036, 4714801, -10248329, 278099,
--23076860, -4035659, -2764885, 9894531, 12228309, -14678051, 30142080, 642098, 11189464, 6722698,
-21840446, 21905406, -1055488, 13941464, -26118232, 6114423, -10652593, -62904092, 14060112, -10879689,
-18409840, -17497696, -17999134, 1177895, -26393648, 4315906, -26610544, -696858, -4748623, -10545218,
-12602508, -19929186, -25901338, -23702314, -30391188, -5243618, -3438121, 33362770, 7295002, -24664386,
--36511516, 4587562, -893890, 8469139, -7211250, 20133196, -24048058, -9709310, -33721936, -21711596,
--9780714, 907312, -14304389, 34797288, -12351789, -30135638, 9179956, 36121212, 26254598, 10549513,
--25808458, -16953846, -2731599, 32774896, 63065688, -795643, 12327630, -12333535, -61920008, -13796509,
-5516886, 23099408, 52655764, -29432874, -35872640, 20775294, 9867150, -12636331, 1578401, -19871740,
-12054363, -52468932, -6102612, 2782602, 12607876, -31718334, 36265632, -51318416, -58244588, -53910428,
-27036820, -11228655, 51117092, -71570264, -31161062, 5528160, 72803992, -6050535, -13033615, -40285720,
--14736570, -4875325, 35089344, -3168075, -203474, 1916629, 6060736, 516470, -563178, -15352897,
--12967580, 16591996, 7368554, 1861868, -38190848, 9397925, -9840307, -4680441, -19777788, 726386,
--1789928, -3772055, -44921600, 3993783, -9947681, -5298916, -3898220, 7459285, -156229, 2625836,
--308164, 118648, -143881, 57982, -16378321, -3319473, -10536629, -9189619, 7823283, 7997766,
--13133473, 361851, -9353902, 12093017, -4516695, 37345816, 11457899, -66524748, -11754252, -45882600,
-20562692, 3889630, -91495152, 6295349, -28106266, -59261960, -46082852, -67636608, 41965052, -20599736,
--53208740, -23896124, 17389248, -31704374, -27335320, -21332028, -12619688, -23522462, -23338852, -43174084,
--31194884, -59251220, -33368674, -30104500, -9862856, -27861990, -5614059, -12984223, -676994, 2369211,
-8032663, 16743393, -16227997, 13951664, 1830193, 30594126, 13427142, 19165218, 19365470, -55489904,
--14463302, 44837312, -7498476, -27509266, -31032750, -22939958, 18069464, 72281080, -4606353, -892816,
--48185240, -49149996, -10233833, 10388989, 43290048, -2755759, 39475044, 14766634, -47327320, 85985784,
-1830730, 66966056, 357019, -16802986, 36027796, -47805672, -61877056, -39533028, -137296144, -83176336,
--27164058, 63257352, 38845296, -54899344, -36097588, -84030496, 42000484, 56057912, -42880416, -42805256,
-10095321, 37150392, 52669720, 15010374, 30285962, -27676232, -15216532, -20771536, -31878322, -12790413,
--2736431, 3463891, 1471563, -17111150, 2892661, 12356621, 4059818, -2326799, -12552042, -8136816,
--14327474, -4912369, -21245592, -4086662, 13310104, -20285668, -33665028, -4420595, -22049288, -14561550,
--2485712, -27980638, -21925808, -5163088, 13782013, 14776298, 15883863, 322659, -12066174, -1352378,
-5224291, -6565932, 21299816, 1780801, 15731391, 1731409, 69793, 16452946, 12228309, 18410914,
-38111392, 24876988, 28465970, 24698210, -23368918, -56748868, 65997004, 63108100, -39907224, -51781200,
--240518, 56625924, -6137509, -3287798, -17640504, 49516140, -5487895, -13216151, -1203128, 13674639,
-25426744, 680215, -19085760, -21729314, 30558692, 2267206, -13124883, -32678258, 18586470, 10249939,
--3707631, -25757992, 8107825, 11078868, 9207873, -16294032, -9765682, 2873333, 25218974, -7420093,
-9066139, -37089192, -10307385, 53687, 24436216, -51628192, -9208410, 5015448, 37171868, -17866528,
-5777268, -26385594, 3612068, 10911364, -18126910, -13841069, -2133525, 6026376, 11349988, -11777337,
-814433, -46018964, 24916716, -7704635, 43119860, -26738856, 19248970, -18204218, 20012936, 3721052,
-13429289, 11349451, -33462628, 37852620, 7508140, 21829708, -36934036, 10251550, -9378061, 5853504,
--10512469, 1445257, -2536178, 5015448, 12577812, -1996086, -14749455, -8812199, 3800509, -2018098,
-952409, -5782637, -14367202, 4795331, 3848828, -4496294, -4049617, -301185, -4488241, 643171,
--7803956, -285078, -3800509, 6431714, 3799972, -2718714, -5787469, 1974611, 181999, -5145908,
-3756486, -15827491, -121333, -1889786, 7054484, -303869, 18214956, -12114492, -12257837, -4220879,
-9625559, -13114683, 19536732, -16440061, 8298951, -8081518, 17810692, -15962783, 19593640, -11164231,
-15322296, -13869523, 23807004, -22436910, 17243756, -5196374, 12979928, -12099460, 12754442, -13692893,
-14385456, -13771813, 11541114, -9204652, 12751758, -9868761, 10635950, -9786083, 3100967, -3188476,
-6408628, -4757750, 5177583, -4076998, 4045859, -2652142, 5296769, -19353122, -43012488, -57189100,
-41679972, 27649388, -32624572, -46478524, -22788560, 21502216, 11264625, 28607704, 30787400, 6025839,
--15557445, -4538707, 10755672, -10604811, -891206, 6365142, 1723356, 17238924, 12031814, 5222144,
--15548318, -581431, -9638980, 10001905, -16290274, -14095009, 11782169, -3758633, -6648610, -6505802,
--11335492, -15503758, 1156420, 12658342, 11522860, 9684078, -3710315, -12783433, -11133629, -7766375,
-13776108, 18778134, -8783745, -13127031, -5709086, 15582678, 8018167, 20847234, -14767708, -5606006,
-8206072, -3930432, 656056, -2234994, 7369090, 4436165, 5946919, 1254131, -14133127, 5837398,
-2594160, -522912, 10894721, -5674726, -2818572, 1884954, -2040646, 1399623, -4110821, 18504866,
-4627291, -1498407, 17608292, 17660368, -17973902, -27180164, -9982578, -18616536, 536334, 12310987,
-3498788, -11135776, -13450764, -3584687, -2610266, 10698227, 5090073, 6667400, 10006200, 6116571,
--5608691, 6193343, 4377646, -13084081, -17548700, 5249524, -4639102, 8722005, 6388764, -9618042,
--2585570, -3268470, -3538516, -11176042, -6143951, -696858, 3518652, 5334887, 14849313, -7401303,
--5548024, 3805878, -3462818, 19608136, -47631188, -125398016, -46098956, 22492744, 65234648, 137780944,
-92198456, 23731304, 34942244, -18410914, -56084220, -93134752, -81039592, -64423972, -18583786, 2482491,
-44819596, 49421116, 105191800, 51074676, 33668784, -2637110, -22430466, -50629612, -26300232, -40938556,
--47225848, -29067264, -24348170, -1809792, 13145821, 39364448, 24320790, 28258200, 25669946, 25964688,
-39031052, 3377992, 27039504, -5008469, -12156905, -32939178, -19644106, -49126908, -72341744, -63189708,
-732829, -10739566, 19822348, 33990372, 18620294, 52427056, 45756436, 66259536, 37698000, 44940928,
-2210298, 2221572, -35442072, -57870388, -67656472, -81190992, -53390200, -66349728, -5597953, -250182,
-31928250, 33521146, 80197776, 63027036, 89585504, 36383204, 41872708, 17485886, -396748, -53451404,
--87235080, -58386324, -69696584, -43393128, -47201152, -4392141, 7275675, 27861990, 36508832, 49514532,
-50501300, 48601312, 31788126, 34808024, 9033927, -6285685, -11977590, -39158292, -35747548, -46886012,
--33174864, -46868832, -35757212, -3709241, 8346195, 24740086, 37287832, 33309082, 34276524, 56542172,
-20436528, 34531536, 26462368, -35618164, -64539936, -27949500, -56913148, -35844724, -19550154, -4046933,
-5035313, 18134962, 32790464, 22864258, 35276712, 22429930, 19188304, 7769596, -2204392, -20501490,
--6782290, -9608916, -36036388, -33621540, -9318468, -3789772, 1864553, 11841225, 13784161, 17557826,
-13964012, 13880797, 5147519, 4683662, -265214, -7879118, -3991635, -2893734, -8113730, -12856985,
--4488778, -6484864, -7667054, -1001801, 3180423, 3663070, 5330055, 5941014, 5523328, 2313914,
-1056562, 714038, 734976, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+2260227, -5585605, 2661806, 3018288, 1051193, -7075959, 3245922, 5035849, -5403606, -1613834,
+-6622840, -1449552, -2807835, -2422362, -944356, 375810, -219043, 683437, 2396592, -2946885,
+1333051, -6787122, 2350421, 4185446, 900333, -1778117, -5499169, 3610457, -2409477, 5833640,
+4980552, -205622, -2302103, 4757750, 5547487, 4461934, 4514011, 1127966, -3442953, 1090922,
+4270271, -1779190, -3598109, 3249680, 5146445, -2247879, 2691871, -5837935, -472983, -5120138,
+3508452, -6817724, -1834488, -1264868, 2345589, 3409667, 2419677, -188442, -3609383, 449361,
+-4996658, -3297461, 924492, -613643, -3009162, 1655710, 1704028, 437013, 3167539, -2806224,
+1367947, -3792456, -1499481, -1609539, 2101313, -1963337, -4013110, -1795833, -1490354, 5539971,
+4764730, 1214402, -2517925, 335544, -286689, 974958, 1917703, 359704, 115427, 345208,
+-70867, 89657, -703838, 561567, -2110977, 108448, -154082, 882079, 464393, -644782,
+-919660, 201863, 389768, 413391, 9718437, -9793062, 372052, 173946, -2478733, -2938295,
+-3129958, 1015223, -5518496, -5443334, 770410, 2645700, -201327, 3135863, 2443837, -2991982,
+1234803, -10740639, -2626909, -2399276, -2498597, -3384434, -3733937, -9465571, -7354058, 1012539,
+2218351, -505732, 5128191, 4102768, 1727114, -1820529, -1018981, 4806069, -1851668, 599685,
+-696322, -5039071, 1691680, -1683627, -3432216, -1322313, 4128001, 9969693, -3795141, 1118839,
+2429878, -1836099, 3142306, 1409286, -3476776, 2037425, -8228621, -3804804, 98247, 3375844,
+5236102, -3198140, -1481227, -350040, -11927661, 2047089, 6176163, 341450, 902480, 3384434,
+-1935420, 5278515, 7112466, -890132, 2026151, 4279935, 4061429, 814970, 228707, -1972464,
+-2844342, -1771674, 1265405, -2704219, 5941014, 3997004, -126165, -2891050, -1479616, 3427921,
+4026532, -2002529, 3126199, -1890323, 854699, -1927367, -1167694, -1318018, 380641, 99858,
+236760, 275952, -215822, -634581, -2573222, -8390219, 1941325, 304406, -8115341, 1240172,
+4545686, 6689412, 1717987, -4816269, 11340861, -1524713, -2234994, 5328981, -3295851, -3212099,
+545461, -4144107, 5054640, 5050345, -2044941, -7633231, -3770981, 3794604, -4912906, 10786810,
+9310952, -7445863, -9107478, 323196, 1703491, -8669391, -567473, 3578245, 2430415, -4245575,
+-2467996, 9944460, -1056025, 6844031, -679679, -2226941, -2312840, -5126044, 892279, -731218,
+5367099, -4584341, 1242319, -1204202, 997506, -2701535, -354335, 4524748, 3599183, -5673115,
+8834211, 726923, -39728, -143345, -809064, 2393908, -1217086, -7910793, -1122060, -4178466,
+6889128, 2883534, 180389, 8459475, -4680441, 5658083, 5567352, 509491, -4116726, -843961,
+-875636, -91805, -1170916, -1708860, 2341294, 2477659, -3738769, 1791538, -220117, 2622078,
+2318746, -768262, 363462, -1161789, -1756105, 1251446, -1615982, -1366873, 694174, 1772211,
+-1632088, -1219771, -2124398, -914291, 1279363, -813896, -308701, 23085, 649614, -1180579,
+-668404, 1634772, 544924, -351114, -514322, -1845762, -20218022, 4638028, 1080184, 14401562,
+-782758, 5785858, -7752416, 1665374, -5810554, -1392643, -2849711, -918049, 2641942, -1560147,
+2466922, 4853313, 3703336, 13674102, 9433896, -6211060, 3131031, -335007, 2519535, 1612223,
+-1750736, -13589813, 3435974, -695785, -137439, 5156108, -814433, -3791919, -2641405, -643171,
+-4225174, -2269890, -10864120, -2549063, 280247, -3837017, -687195, 4499515, 6435472, -2084670,
+7953743, -5956046, 1304060, 2717641, 1036161, -1848983, -4196720, 2962454, -1059783, 1823751,
+-3120294, -4432406, 819802, 2577517, -4479651, 4263829, -3063386, 10157061, 10772315, -3279745,
+3928285, 4136591, -566399, -1400696, -1454383, -13171054, 5496485, 5348845, 155156, -2219424,
+-5507222, 574989, -1621887, -6713571, -15038828, 983011, -3733937, 3852049, -8053, -64961,
+-2518462, -1704028, -2837900, -286152, 1533840, -1966558, 2281702, -2420751, -1407676, -1025423,
+-608812, 1222992, 1013612, -820876, 464393, 331249, 816581, 1334124, 1028645, -711891,
+-1602560, 1122597, -681289, -1198833, 429497, 379031, -711354, 827855, 1352378, 454193,
+-4327180, -6606734, 6594923, 3757560, -574452, 7622493, -4086662, 6838125, -7700877, -7393250,
+3600793, -11798275, -4178466, 2976949, 7184407, 9388262, -1637456, 7007776, -242129, 6674379,
+2469069, 1085016, -1096827, 365609, 6661495, -3174518, -699543, 1211718, 579284, -6562710,
+-815507, -3560528, 13570486, -6486475, -6572374, -1596654, 6396817, 6435472, 5528160, 7393250,
+-1278290, 1357747, -1638530, -3670587, 2800319, -331786, -697932, -4197794, 10645076, 6562173,
+-3287261, 2027225, 3147674, -5614596, 1194538, 4135517, -1045288, 7981660, -3221226, -1037235,
+-8675834, -3275450, -7376070, 328028, 10180146, -4007205, 2876554, 1742146, 353798, -2779918,
+-940061, 88584, -2485176, 4884989, -5019743, -2370822, -443455, 10728828, 1702418, -67109,
+3391951, -2924873, -8048769, 1993402, 813896, -1285806, 586263, 1974074, -529892, 403190,
+3916473, 737124, -311922, 926639, 59593, -528818, -932545, 3628174, -175557, 299574,
+-3320010, 2010045, 515933, 2000918, -489626, -1372779, -407485, 1012539, 1647120, 1057636,
+-2705830, 125628, 1919314, -601832, -3413962, -2212982, -19057844, 13824426, 1457605, -7010461,
+-16831440, -1675037, 428960, -9957882, -897111, 4639102, 3954054, 365609, -2877628, 3672734,
+12033425, 12206834, -5228049, -5737540, -13234942, 2646237, -2384781, 12858595, -5238250, -284005,
+-3015604, 4839892, -1440962, -13180181, 4330401, -618475, -7809325, 7516, 1235877, -1069984,
+-1328756, -5417565, -7540889, 4585415, 1137093, 5996848, -5209796, 10093710, 4793721, -2085207,
+-8939438, -1775969, 3236258, 9871445, 3066070, -5583458, -2542084, 4587025, 2966212, -2867965,
+-1395328, 4835060, 3965329, 5104032, 9787157, 10916733, 5340792, 5812165, 6717866, -3931506,
+980863, -7227893, 7233799, 1138166, 3659312, -5163625, -8019778, 1833414, -10254234, -3699041,
+-4467303, 7532836, 7905424, 8265128, 2181844, -2344515, -2610266, 7720741, 1580011, -1081258,
+1954210, -2434173, 4941897, 255014, -64425, 1619740, 2034741, -768799, 4052839, -3221,
+694711, -1940788, -1157494, 1113470, 3164854, -194347, 1154273, 1826435, 1062468, 608275,
+-941135, 1509681, -1252520, -6855305, -406948, 12825309, 7885560, 10842645, 2063732, -11864847,
+-3910568, 12592844, -3631932, -7980049, -8311836, -8186208, -8658654, 4760435, 4839892, 3104725,
+2846490, 2936684, 12118250, -1500017, 5260261, -10409390, -11709155, 7839926, -415538, -6394133,
+459562, -16316044, -5325760, -5499169, 2005213, -577136, -1504849, -11480448, -7511361, 1269163,
+7927436, 12874701, -5106716, -5057861, 6864432, -8849243, -632971, -457414, 2961917, 5629092,
+4598836, 8921184, -4790499, 12936441, 6107981, -13993003, 6990060, -7781407, -9274445, -7723962,
+-11219528, 10149545, 2389076, -11969537, 1370632, 2515777, 1111860, 1886564, -2190433, 8414915,
+-4884989, 6466610, -10404558, 7884486, -5277978, -4820027, 1031329, 3493956, -403190, 5693516,
+16340740, -1381369, -8759049, 5167383, 10710038, 845572, -1161252, -8498130, -3700651, 7876970,
+-1337882, -540629, 271657, 1583769, -2208687, -1277753, -192737, 2319282, -1345399, -287763,
+-1546188, 4439923, -3257196, 678605, -3061238, -3837553, 1011465, 1227287, -1195612, 590558,
+-1109175, -846645, -240518, -439160, -92342, -1628866, -956167, 4558034, -235149, 26307,
+26589068, -23968064, 11085847, 11567421, -10772852, -1944010, 15906948, 5767604, 10102837, 3021510,
+-3499862, 23929948, -960999, -4476967, -25770, 81604, 11486353, 18001282, 6815040, -122943,
+361851, 2703145, 6184753, -84826, 3281892, -12579959, 5956583, 9808632, -2056753, 4001836,
+1074, 1823751, -8110509, -6326487, 456877, -276489, 11107322, 5488968, 4594542, -4676146,
+-5753109, -5744519, 6393596, 9295383, 78383, -2985539, 18149994, 9403831, 12128451, -6534256,
+-13542569, -2575907, -14181982, -9327595, -4272956, -5910412, -814970, 10619307, -3359201, 412854,
+-8684424, -9269076, 10577431, -530428, 4933844, 5285494, -5517959, 10166188, 2646237, 914828,
+-3531000, -6801618, 7977365, -2440615, -14125074, 8169565, 6900402, 8542153, 3850975, -9947681,
+-2086280, 930934, -10388989, 5940477, 5959267, -969052, 4500052, 3764539, 4022237, -972273,
+6357089, 948114, -250719, -3221762, 1579474, -62814, 5064304, 1093069, -141197, 1036698,
+-48855, 3725884, -1585380, -459025, -2468533, 1265405, -658204, -1933809, 420907, 520765,
+-734976, 576063, 4102768, 3097208, -1773822, -1156957, -2646774, 688269, -570157, -355409,
+-18583786, 2284386, 6135361, -9127879, 7612830, -15771657, 3602941, 4810900, -2075543, -6245420,
+-8014946, -9344775, -15823733, 2021856, 17996450, -5918465, 8680666, 4828080, 13383655, 7112466,
+-5056787, -11488501, 5922223, -2896956, -4085051, -11905112, -1779190, -1593970, -4750771, -5093831,
+-2738042, -8361765, -10994043, 12833899, -1258425, -7432978, 10064719, 3563212, -8778376, 1333051,
+-644245, 5739687, -11664594, 3303367, 4010426, -17210470, 5755256, 5645735, -8870718, 2571612,
+672162, -2764885, 6366216, 614180, -1200980, 787590, 4312684, 11650099, 9250823, 11888469,
+8192113, 4255776, -3070365, 17683990, -4488241, -9014599, 19581292, 1333587, 11834246, 2573222,
+-3795141, -18149458, -16800838, -4148402, 1063004, -6613713, -3216931, -5187247, 11553462, -10091026,
+-2946885, -1692754, 2820720, -9848897, 7128035, -757525, 2254321, -825171, -3830037, -6400575,
+-4311074, -5035849, -4099010, -1195075, 654983, -3087545, -2208150, -1712618, 4225711, -4890357,
+-4323422, -3510062, -4162897, -152471, 3390877, -1480153, -1659468, 2448131, 595927, -1206886,
+1658931, -3052111, -3375844, 2610266, -3936875, -6323266, 2232846, 5706938, -3020436, 636729,
+3819300, -1283658, -3139084, -30940944, 15134391, 26657252, 1851668, -15128485, 6893960, -2794413,
+-1060320, 4370129, 2574296, 6862284, -8075076, 932008, 23882166, 18354006, 16044387, -17520782,
+-751082, 4305168, 9158481, -8406862, -9425843, -2399276, 3013457, 8303246, 4117263, -22531936,
+-25583510, 7957501, -855235, 14412837, 14763413, -9531069, 12217571, 9842991, 13050795, -889058,
+-7792682, -8101382, 6234145, -8579734, -3297461, -2684, -374736, 7813620, 16596827, 9337796,
+-4549981, -3917010, -8225399, -2094870, 728534, 4494147, -1773822, -2924336, 8158291, 5140539,
+-12541305, -166430, 518080, 15074261, -7587060, -8652212, -16438450, -5577552, 2814277, 1102733,
+8490077, -1829656, 2124398, -7349763, -10922639, -9904195, -10008348, -5756330, 4776541, -20623360,
+2463164, -2887829, -3236795, -4359929, 4079682, 11298448, 8229158, 1309428, -1849520, -10476499,
+-3342558, -964757, -2131378, 6922951, 3533148, 2114198, 1523640, 3599720, 4199941, -1604170,
+-1756642, 107374, -1902671, 367220, 462783, 1383516, 2308545, -6700149, 1034550, -865973,
+5084168, 1381369, -6740951, -375273, -4268124, -3269544, -1683090, -1504849, -1791001, -850404,
+3810710, 3490735, 2943126, 5042292, 15592342, 1273995, 13530221, -1851668, 17562658, 8761733,
+13695040, 8418136, 3990025, -6782290, -686121, -4245039, 9386651, 2764885, 8243653, -7871065,
+-1376537, 14564234, -17952964, -10034654, 13993540, -23680840, -10440529, 1766305, -4520453, -11725261,
+23849416, -4262218, 16474421, 6609955, -14352170, -2195802, -5397700, -17352742, -22541062, 18005040,
+-163746, -6558952, 4453881, 328028, -2992519, 6557342, 2573222, -2324114, -8291971, 1592359,
+17009144, 14421426, -11894912, 4720706, 934155, 13454522, -6124624, 9119289, -19339164, -4680441,
+13204877, 4437238, -4426501, 15759309, -5012764, 11048803, -21470004, -24755654, -8925479, 485868,
+-17538498, 18953690, 13375065, 19254876, -8827232, -6496138, -6676527, 1002875, -9764071, -99858,
+-14923401, -13545253, 620623, 3821984, 13827110, 6540699, -1455994, -5094368, 4351876, 7987566,
+5234492, 3196530, -4915590, 5776731, 5157182, 6510097, 4819490, 3528316, 5216238, -7155953,
+6038724, -4327180, -2196876, 9469866, 8368744, 5631239, -995359, 341987, -2527052, 4858682,
+1523640, -1987496, 2637110, 4929012, 744640, 3832722, 3722663, -4927938, 1637993, -3723737,
+-1089311, 1172526, 21589726, 15525770, 24328306, -21605832, -16239808, -37012416, 15947750, -4121021,
+-31628676, -6134824, 3000572, 4658429, -11818676, 12875238, 10877542, 1221381, -143345, 2010045,
+-5240934, -11013370, 2427194, -6263673, -10307385, -135291, 23977728, 744103, -3639985, -19174882,
+8088497, 15141370, -7834557, -23135916, -4197794, 7798050, 2765422, -4911295, 5041218, 1647657,
+8321499, -2339684, 13725105, 20976084, 7934952, -13947906, 15808164, 7117835, -17865454, -19011672,
+20664698, 9994389, -8048232, -9277129, -459562, -16851304, 12334609, 16250546, -387621, 915902,
+4091493, -2081449, 17784386, 5979668, 4622996, -7374996, 2873333, 6005438, 21961778, -5272609,
+8414915, -17016124, -19383188, 17282948, -2608656, -1616518, 1784559, 16473884, 360240, -775778,
+10395431, -4975720, 2071248, 9540733, 11643656, -5570036, -7256884, -15631533, -7714298, 5105106,
+-6909529, 5440113, -177167, 5772973, -3131031, 4257387, 878858, -2408940, 1872606, 8738648,
+2149631, 8698919, 2618320, -5508296, 347355, 3628711, 3004330, -5405753, -4961224, -5266167,
+-2268280, -4138201, -4056060, -6431177, -2778844, 3577171, 2263985, -658741, -1059246, 1953673,
+-4284767, -108448, 5484673, -1554778, -907849, -2652142, -2248952, -1160715, -8168491, -1151051,
+-3182034, -3502546, -5104032, -7267622, -25049324, -2065342, -16390132, -33248416, -34266860, -14812268,
+-26163868, -11862700, -4227322, 4699231, 14631880, 16324097, 1671279, -8833137, 17581986, -8939974,
+8665633, -32826436, -3229816, -22519588, -15115064, 15252503, 10707890, 10419054, 3463891, 21964462,
+-2221572, -1374926, -15822660, -5485210, -3187940, -10769094, -10877005, -26975078, -10609106, -2979097,
+-4351339, -16689706, 14756971, 5877126, 8804146, -7348152, -2831457, -40935332, -11800960, -11283416,
+9477382, 20979304, -12927852, -1982664, -23851564, -1722282, 12271795, -3908957, -8056822, 5365488,
+17601312, 30039002, 6311992, 952409, -1663226, -8058970, -12026982, 8032663, -7925826, 27247810,
+5356361, 11731703, 55566140, -11059541, -9460202, -14038637, -19479824, -2643016, 18981608, 8544837,
+2712809, 6316823, -8029978, -6225018, -16954920, -4059818, 9530532, -1556926, -3750043, -1591822,
+-3954054, 1997697, -625992, 3695819, 3744675, 3820910, 5013838, 5490579, 14153528, 8641474,
+-5246840, 8238821, -220117, 526134, 5920613, -6847789, 128849, -7900593, -4779225, -10814191,
+-8033737, -11279121, -9361955, -6271189, 12367895, -7697119, -4345433, -9079024, 566399, 2698313,
+-1964948, 3728569, 1499481, -228707, -7672959, -27808840, 15775415, 26007638, -15397995, 775242,
+5826123, -9003862, -2177549, -19459960, -416075, -10924786, 28234042, -26844, -5347235, 22655952,
+-5782100, 6568079, -26042534, 13472239, 4001299, 17561048, -8236137, 13069049, 23095112, 24812026,
+13914083, 22363358, 11445014, -3597572, 21735756, -10570988, -14361834, -4628364, 8706972, 14721537,
+-35458176, -2457795, -22935126, 18132278, 8194798, -492311, 6220187, 25407952, 1056562, 22670984,
+9666898, 34354368, 3060164, -3959960, 15030775, 4936528, -17572858, 3728569, -2080375, -23570780,
+16474958, -14233522, -23000624, -47004660, 3610457, -5831492, 27585502, -15426986, 36927592, 12159052,
+-656593, -5693516, 14379551, 15164456, -27078696, -11588896, -20021526, 6927782, -9056475, 20266876,
+6420976, 6792491, 9774809, -4710506, 1702955, -7142531, -2509872, 539018, -2715493, -20922396,
+8213588, -66035, 6150930, 176094, -6192269, 644782, 8501351, -13926431, 11945378, -5118528,
+-75699, 1339493, -11712376, -1018981, 7016903, 3550327, -8424578, -3486977, -2066416, -9855876,
+3265786, -2821257, 14296336, -11511586, 5069672, 9976135, 3546032, -4254165, -3182034, 4846334,
+2346663, 3003793, -2578054, 5025649, -15369004, 4094715, 3644280, 6580964, -4689031, -7176354,
+511638, 6441914, 861678, 17859010, -11941083, -13361643, -13145284, 17173964, 8909910, 22363358,
+6208375, 69186552, -20547660, 372052, 520765, 32205276, 13335873, 14911590, -21125870, 9278203,
+-8329552, 598074, -9771587, 2150705, 23277112, -6125160, 7383586, 44978508, 14120779, -20371566,
+-23852100, 2774549, 29334626, 15298137, 5576478, -11349988, 24973088, 4239670, -3703336, -27440546,
+8391292, -4359929, 11828340, -24910274, -15202574, 1298691, -6334540, 3278671, -23226110, -801011,
+-14166413, 6582575, 20598126, 16464220, 5391258, -31871342, 271657, 3151432, -28718298, -25651156,
+-16996796, -14024142, -13998372, 22733798, 5196374, -650151, 14826227, 23638426, 6310918, 20472498,
+558346, 13554380, 90393496, -20623896, 14898168, 10377178, -15879031, 3365107, -60224568, 1214402,
+29912300, 7829726, -16565689, 23028540, 5555540, 8761733, -15023259, -3409667, -12833899, 4514011,
+1124745, 1146756, 5164162, -18660022, 6915971, -10234370, -7439957, -25549150, 6350109, 5874442,
+5101885, 6585796, 31991600, 4836133, 3430605, 3679176, 2511482, 19124952, 2255395, 8080981,
+6696391, 14592688, 5872831, -867047, -3222299, -2644089, 2429341, 9259413, 11050951, 3277597,
+-16782048, -7702487, -3713536, -3710315, -5543192, -17524004, -4256850, 13467944, 36599564, -17013440,
+-865973, -24550570, -17829482, 5816997, 16043850, -20310364, 24260660, 10175851, -31825708, 19589882,
+-12880607, -15761456, -1307281, -19062676, 4497905, -8528731, 24622510, -14171781, -1109175, 13558675,
+-47501264, 6817724, 14761803, -14327474, 11716671, -28698434, 28716688, 3150896, 4960151, -54316304,
+49052820, 21041582, 16120623, 1094143, -30962420, 28414966, -1795296, -14057965, 50164144, -9971303,
+-22001506, -11586211, 6075768, 14526653, 13759465, 3673808, -8434242, -59027884, -6648610, 14785962,
+882616, 21693880, -30971546, 32003412, 3270081, 10831908, -31479962, -9089761, 5093831, 40787156,
+-16934520, 9543417, -29163364, 25831544, 14492830, 24378234, -9371082, 10811506, 4234301, -31884764,
+-30440580, 16770237, 13716515, 26003342, 5594195, 33367600, -50232328, -65747896, 10528575, -13861470,
+37187976, -24230058, -5222680, 4297115, -27974196, 1398549, -16688095, 14576045, 20684562, 2076080,
+16789028, 18452254, 5509906, -16644609, -8378408, 29677150, 15473157, 3861713, 5224828, -8886824,
+747861, 18073222, 10165114, -14612016, -8225936, 16816944, -2335389, 10482941, 10572062, -6453725,
+-8538395, -8662949, 121333, 8978629, 4112431, 11483132, 16503412, 1361505, -463856, 13431436,
+890669, 2709588, 4306779, -5603322, 4661114, -9807021, 5657009, 2026151, 295279, 4126390,
+-4891968, -45965276, 41857140, -9073655, -10152766, -16379395, -4811974, -36250596, -67662376, 23325430,
+19382114, -3008088, -13977434, -27577986, -4585952, -8570607, -14685030, 26623966, -60512868, -25867514,
+-31961536, -9543954, -46081776, -4265440, -6968048, -1671279, -7743826, -9358197, 7391102, -474057,
+-20408610, -6400575, -487479, -27907086, -14924474, -8243116, 2012192, 21457656, -11038603, 43023224,
+-22504554, -3233574, 18079664, -19202798, 11655467, 2440078, -29512868, -44139380, -10830834, 11265699,
+40240084, 17454210, -30842160, -13048111, -88525720, -29626148, -6391448, 18622442, 48063904, -2548526,
+-51496656, 2863133, 27963996, -10289131, -2437394, 29654602, 31205622, 71602472, -79115984, -15336791,
+11212549, 20024748, -24972014, -29644402, -42304892, -41997800, -23496692, -19524384, -5500780, -3002182,
+-48875656, -20253456, -17913234, 18097918, -9224516, -4813048, 44024488, 33347736, 2676838, -6283537,
+-2017024, -27189290, -1207960, 9692667, -19645180, -10521059, 3726421, 12426951, -8326331, -9623948,
+-6512244, 13866839, -9170829, 14531485, 1041530, 15007689, 10663330, 10819023, -8260833, 5479842,
+-20591684, 10634339, -2705293, 6273337, -18205830, -14093935, -2039036, 4714801, -10248329, 278099,
+-23076860, -4035659, -2764885, 9894531, 12228309, -14678051, 30142080, 642098, 11189464, 6722698,
+21840446, 21905406, -1055488, 13941464, -26118232, 6114423, -10652593, -62904092, 14060112, -10879689,
+18409840, -17497696, -17999134, 1177895, -26393648, 4315906, -26610544, -696858, -4748623, -10545218,
+12602508, -19929186, -25901338, -23702314, -30391188, -5243618, -3438121, 33362770, 7295002, -24664386,
+-36511516, 4587562, -893890, 8469139, -7211250, 20133196, -24048058, -9709310, -33721936, -21711596,
+-9780714, 907312, -14304389, 34797288, -12351789, -30135638, 9179956, 36121212, 26254598, 10549513,
+-25808458, -16953846, -2731599, 32774896, 63065688, -795643, 12327630, -12333535, -61920008, -13796509,
+5516886, 23099408, 52655764, -29432874, -35872640, 20775294, 9867150, -12636331, 1578401, -19871740,
+12054363, -52468932, -6102612, 2782602, 12607876, -31718334, 36265632, -51318416, -58244588, -53910428,
+27036820, -11228655, 51117092, -71570264, -31161062, 5528160, 72803992, -6050535, -13033615, -40285720,
+-14736570, -4875325, 35089344, -3168075, -203474, 1916629, 6060736, 516470, -563178, -15352897,
+-12967580, 16591996, 7368554, 1861868, -38190848, 9397925, -9840307, -4680441, -19777788, 726386,
+-1789928, -3772055, -44921600, 3993783, -9947681, -5298916, -3898220, 7459285, -156229, 2625836,
+-308164, 118648, -143881, 57982, -16378321, -3319473, -10536629, -9189619, 7823283, 7997766,
+-13133473, 361851, -9353902, 12093017, -4516695, 37345816, 11457899, -66524748, -11754252, -45882600,
+20562692, 3889630, -91495152, 6295349, -28106266, -59261960, -46082852, -67636608, 41965052, -20599736,
+-53208740, -23896124, 17389248, -31704374, -27335320, -21332028, -12619688, -23522462, -23338852, -43174084,
+-31194884, -59251220, -33368674, -30104500, -9862856, -27861990, -5614059, -12984223, -676994, 2369211,
+8032663, 16743393, -16227997, 13951664, 1830193, 30594126, 13427142, 19165218, 19365470, -55489904,
+-14463302, 44837312, -7498476, -27509266, -31032750, -22939958, 18069464, 72281080, -4606353, -892816,
+-48185240, -49149996, -10233833, 10388989, 43290048, -2755759, 39475044, 14766634, -47327320, 85985784,
+1830730, 66966056, 357019, -16802986, 36027796, -47805672, -61877056, -39533028, -137296144, -83176336,
+-27164058, 63257352, 38845296, -54899344, -36097588, -84030496, 42000484, 56057912, -42880416, -42805256,
+10095321, 37150392, 52669720, 15010374, 30285962, -27676232, -15216532, -20771536, -31878322, -12790413,
+-2736431, 3463891, 1471563, -17111150, 2892661, 12356621, 4059818, -2326799, -12552042, -8136816,
+-14327474, -4912369, -21245592, -4086662, 13310104, -20285668, -33665028, -4420595, -22049288, -14561550,
+-2485712, -27980638, -21925808, -5163088, 13782013, 14776298, 15883863, 322659, -12066174, -1352378,
+5224291, -6565932, 21299816, 1780801, 15731391, 1731409, 69793, 16452946, 12228309, 18410914,
+38111392, 24876988, 28465970, 24698210, -23368918, -56748868, 65997004, 63108100, -39907224, -51781200,
+-240518, 56625924, -6137509, -3287798, -17640504, 49516140, -5487895, -13216151, -1203128, 13674639,
+25426744, 680215, -19085760, -21729314, 30558692, 2267206, -13124883, -32678258, 18586470, 10249939,
+-3707631, -25757992, 8107825, 11078868, 9207873, -16294032, -9765682, 2873333, 25218974, -7420093,
+9066139, -37089192, -10307385, 53687, 24436216, -51628192, -9208410, 5015448, 37171868, -17866528,
+5777268, -26385594, 3612068, 10911364, -18126910, -13841069, -2133525, 6026376, 11349988, -11777337,
+814433, -46018964, 24916716, -7704635, 43119860, -26738856, 19248970, -18204218, 20012936, 3721052,
+13429289, 11349451, -33462628, 37852620, 7508140, 21829708, -36934036, 10251550, -9378061, 5853504,
+-10512469, 1445257, -2536178, 5015448, 12577812, -1996086, -14749455, -8812199, 3800509, -2018098,
+952409, -5782637, -14367202, 4795331, 3848828, -4496294, -4049617, -301185, -4488241, 643171,
+-7803956, -285078, -3800509, 6431714, 3799972, -2718714, -5787469, 1974611, 181999, -5145908,
+3756486, -15827491, -121333, -1889786, 7054484, -303869, 18214956, -12114492, -12257837, -4220879,
+9625559, -13114683, 19536732, -16440061, 8298951, -8081518, 17810692, -15962783, 19593640, -11164231,
+15322296, -13869523, 23807004, -22436910, 17243756, -5196374, 12979928, -12099460, 12754442, -13692893,
+14385456, -13771813, 11541114, -9204652, 12751758, -9868761, 10635950, -9786083, 3100967, -3188476,
+6408628, -4757750, 5177583, -4076998, 4045859, -2652142, 5296769, -19353122, -43012488, -57189100,
+41679972, 27649388, -32624572, -46478524, -22788560, 21502216, 11264625, 28607704, 30787400, 6025839,
+-15557445, -4538707, 10755672, -10604811, -891206, 6365142, 1723356, 17238924, 12031814, 5222144,
+-15548318, -581431, -9638980, 10001905, -16290274, -14095009, 11782169, -3758633, -6648610, -6505802,
+-11335492, -15503758, 1156420, 12658342, 11522860, 9684078, -3710315, -12783433, -11133629, -7766375,
+13776108, 18778134, -8783745, -13127031, -5709086, 15582678, 8018167, 20847234, -14767708, -5606006,
+8206072, -3930432, 656056, -2234994, 7369090, 4436165, 5946919, 1254131, -14133127, 5837398,
+2594160, -522912, 10894721, -5674726, -2818572, 1884954, -2040646, 1399623, -4110821, 18504866,
+4627291, -1498407, 17608292, 17660368, -17973902, -27180164, -9982578, -18616536, 536334, 12310987,
+3498788, -11135776, -13450764, -3584687, -2610266, 10698227, 5090073, 6667400, 10006200, 6116571,
+-5608691, 6193343, 4377646, -13084081, -17548700, 5249524, -4639102, 8722005, 6388764, -9618042,
+-2585570, -3268470, -3538516, -11176042, -6143951, -696858, 3518652, 5334887, 14849313, -7401303,
+-5548024, 3805878, -3462818, 19608136, -47631188, -125398016, -46098956, 22492744, 65234648, 137780944,
+92198456, 23731304, 34942244, -18410914, -56084220, -93134752, -81039592, -64423972, -18583786, 2482491,
+44819596, 49421116, 105191800, 51074676, 33668784, -2637110, -22430466, -50629612, -26300232, -40938556,
+-47225848, -29067264, -24348170, -1809792, 13145821, 39364448, 24320790, 28258200, 25669946, 25964688,
+39031052, 3377992, 27039504, -5008469, -12156905, -32939178, -19644106, -49126908, -72341744, -63189708,
+732829, -10739566, 19822348, 33990372, 18620294, 52427056, 45756436, 66259536, 37698000, 44940928,
+2210298, 2221572, -35442072, -57870388, -67656472, -81190992, -53390200, -66349728, -5597953, -250182,
+31928250, 33521146, 80197776, 63027036, 89585504, 36383204, 41872708, 17485886, -396748, -53451404,
+-87235080, -58386324, -69696584, -43393128, -47201152, -4392141, 7275675, 27861990, 36508832, 49514532,
+50501300, 48601312, 31788126, 34808024, 9033927, -6285685, -11977590, -39158292, -35747548, -46886012,
+-33174864, -46868832, -35757212, -3709241, 8346195, 24740086, 37287832, 33309082, 34276524, 56542172,
+20436528, 34531536, 26462368, -35618164, -64539936, -27949500, -56913148, -35844724, -19550154, -4046933,
+5035313, 18134962, 32790464, 22864258, 35276712, 22429930, 19188304, 7769596, -2204392, -20501490,
+-6782290, -9608916, -36036388, -33621540, -9318468, -3789772, 1864553, 11841225, 13784161, 17557826,
+13964012, 13880797, 5147519, 4683662, -265214, -7879118, -3991635, -2893734, -8113730, -12856985,
+-4488778, -6484864, -7667054, -1001801, 3180423, 3663070, 5330055, 5941014, 5523328, 2313914,
+1056562, 714038, 734976, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
7651484,
-815507, -2067490, -2163053, 1333587, -3695283, -53687, -7201587, 5168993, 6554120, 4579509,
-6449967, -7733626, 628676, 1772748, -2756295, -2121177, -1883880, -9058086, -1522029, 5391258,
--9273908, -7535520, 4391067, 3980898, -5958194, -2075543, 3948686, 509491, 4800163, 2059437,
-4999879, -3133716, 958851, 696858, -1324997, 2331094, 1831804, 3396246, 1426466, -1493575,
-328028, 3794067, -1022202, -1719061, -638876, -4578435, -10112500, 6018323, 2921652, -3160022,
-4439923, -1772211, 493384, -150861, 2064269, -2664490, -692027, 5981279, -5626407, -2252174,
-1956895, 980863, -869194, -272730, 2621541, 304406, 2320893, -4006668, 4083440, 2105071,
--5228049, 4170950, 370978, 1514513, -623307, -1549946, -6102612, -1883880, -455803, 3142306,
--804770, 2571075, -1533303, 309775, 765578, 312459, 1821603, -319975, 126702, -217433,
--1235340, -558346, 243739, -658741, 88047, -25233, -280247, 1674500, 1679869, 878858,
-700617, 613643, 217433, 11811, 224949, 97174, -253403, -739808, -836982, 11946988,
--6880538, 2092723, -7604240, 908386, 1771674, -7665980, -9692131, 2413772, -10515154, 2310693,
--2746632, -731218, -6451578, -940061, -7243999, -3726421, 23085, -7663296, 8131984, 2859911,
--12707198, 1200980, -705985, -2305861, -5443334, 2726231, 6583111, 125628, -492311, 6179921,
--3641059, 73551, -2320356, 4093641, -4808753, 1402844, 5774584, -5038534, 5048734, 1772211,
-5461588, -475668, 1232656, -834297, -2318209, 7158637, -8902393, 2045478, -3946001, -1716376,
--1170379, -3244848, -2404645, -7096360, -4466766, -1115081, 4604742, -400506, 1721208, 6452652,
--163746, -5609228, -733903, 194884, 1738925, -2742337, -5906, -5517423, 102005, -2251637,
-1805497, 2855617, 4197257, 1493038, -2393908, -3103114, 4119411, -1392643, -1910724, 763430,
-2283312, 4755603, 563714, 1358820, -328028, 2784750, -559956, -2221572, -1148904, -1103807,
--117575, 1886028, 352724, -133681, -1023813, 1826972, -21475, -695785, -531502, -477815,
--551903, 864362, -384936, -99321, -1078037, -2876554, -9896678, -117038, -5964636, -1882269,
--972810, -6955700, -953483, -1620276, 3450469, 8112120, 8157754, 970126, -3489124, 3262565,
--7904888, -1130113, -3026341, 2755222, -11779485, 4158602, 1992328, -430034, -3391414, -5077188,
--2323577, -4188667, -3606162, 2203318, -791348, -4514548, -1320166, 914291, 7686918, -296890,
--7772817, 608275, 3342022, -97174, -2449205, 644782, 2921652, -8442832, -660888, -3671123,
-5927592, 3611531, 1001801, -7805030, 878858, 3006477, 4782446, 4478577, -5133560, -2412161,
-229244, -1603097, -1611687, 4172024, -2592013, 2553895, 697395, -3279745, -743029, -4505958,
-5425618, 2039036, -5366562, -3699041, 903017, 2846490, -4257923, -5366562, -915902, 266825,
--3571802, 768262, -1467268, 1811403, -3404299, 5058935, 2707977, 3813931, 1088237, 503585,
-3429532, 4642323, 540092, 1319629, -444529, 660888, 77846, -192737, 517544, 391379,
-537408, -732292, 25770, 357556, -259846, 82678, 1546188, -899259, 352187, -1076963,
--864362, -721555, 158914, 587337, 394600, 54761, -1002875, -663036, -16843788, 5437429,
-4862440, 8147016, -2122788, 5113159, -14529337, -3979287, 4542465, 530428, -7191386, -1881196,
--2399276, -12731357, -5164162, 1279363, -593242, -9080635, 5655935, 8039642, -8277476, 6263673,
--10837276, -3695283, -981400, 3714610, -68719, -4403952, 2960306, 1466731, -733903, 4823785,
--2352568, -3132105, -983548, -1794760, -3215320, 4743792, -3668439, 1331977, 3552475, -741419,
--2843268, -5333813, -657130, -3811247, -1170916, -4431333, -1206349, 9802726, 188442, 5953362,
--5493263, 4992363, -1578401, -8041790, -4747013, 4424353, -2929705, -4099010, 2917357, -4816806,
-3982509, 1056025, -1488743, 5205501, 4704600, 2063195, -5195300, -5885716, -418759, 7792145,
-1540283, 1165547, -4440460, 1134945, 2794413, -5977521, -2193118, 1918240, 4149475, 2045478,
-3511136, -217970, 23085, 1278290, 155693, -689342, 202937, -528818, -762357, -2655901,
--2117419, 622770, -1277216, -774705, 879395, 381178, 641561, -185220, 1071594, -718333,
-45097, -947577, 4295, -1145683, 557809, 173409, 766652, -1488743, -9048422, -8603356,
--5699959, 1022202, -1484448, 3468186, -3143916, -34360, 580894, -2596308, -1010928, 2118493,
--2574296, 9979893, -6614250, 4599373, -1766305, -727460, -4707821, -1325534, -687732, 7263864,
--5034239, 610959, 1371705, -7210713, -4426501, -4939750, -4206921, -8352638, -2908767, 2944200,
-5588826, 3525095, -6679748, -9402220, -2101850, 241055, -4811437, 827855, -3284576, -4927401,
--11630235, -5868536, -8166344, 4632659, -2148021, 3755412, -4711579, -11339787, -6036577, 511638,
--2348810, -3752728, -1734093, -4494147, 5982890, 493384, 3462818, 4651450, 1141388, -242666,
--3965329, 125628, 5057324, -929860, -3830037, -5289789, 8355322, -7041599, -9812390, -6944962,
--4021163, -5472862, 6064494, 9707700, -7826504, -5413270, 1148904, 4684199, 7224135, 5703717,
-4441533, 4381404, -1619203, -1985886, -2262911, -2341831, 1750736, -1453846, 439697, -1763084,
--2809446, -1174137, -2037425, 1409823, -1291175, -2508261, -1486059, -1468879, -2521146, -2781528,
--1759326, -737661, 497679, 445603, 1237488, 117575, -4293894, 457414, -701690, -1753957,
-451508, -788127, -1330903, -2828773, -2342368, 32212, -40802, -980326, -1122597, -43487,
-2309082, -18480708, 5698885, -1313723, 3266860, 10126996, 3974455, -2514703, 3426847, -7633231,
-4712653, 5524939, -10069014, -2159295, -5099737, 5668820, 4937065, 7695508, 8934069, -11621108,
--5984500, 1904818, 9972914, -3794067, 4635881, -11111080, -3355980, -3903052, -2357400, -6730751,
-1663763, -11001022, 7614440, -2167885, -1952063, 5555004, -332860, 1261110, 5913096, 151398,
-4840428, 3233574, -1370095, -1917166, -653372, -7727183, -5657009, -7061463, -444529, 14652281,
-3406446, 2826089, -342524, -2057289, -120796, 8752070, -1871532, 2732136, -16902844, 15546171,
--3767223, -2788508, 896574, 9517648, 3470334, -1605244, -5793911, 16658031, -3211025, -213138,
-5343476, -4233227, -23622, 2378875, -3751654, 3281355, 3272765, 13754096, -6847252, -8633421,
--1581085, 4108673, -5177046, 1143535, 3563749, 1126355, -3022583, 1352378, 3654480, -2314451,
-332323, -3950833, -1231582, -1170379, -3211025, 4213363, -3053722, -2607045, 1937030, -134755,
--3621194, -340376, 884226, 1547799, 185757, 1823214, -1307281, -1137093, -1063541, 1220308,
--1332514, 2179159, 249645, -938450, 1013612, 2275796, -51003, -1050120, 7998303, 4487167,
-8900783, -3558381, -2114198, 5130339, -8207146, 7393250, 8436926, -4223027, -707059, -13249437,
-632434, 4566624, 3696356, -2801929, -9012989, -18289044, 299037, -3104725, -8677981, 2030983,
-5841156, -7937100, -3380139, -8657043, 4387846, 503048, -1285269, -2874407, -3751654, 9346386,
-10902774, 4245039, 5197448, -2421825, -5466957, 15203647, 3784403, -2584497, -8919573, 6585259,
-279710, 8745627, -765041, 10806138, 5408438, 7564511, 6398965, 3265786, 8414378, 10500121,
--294205, 1947768, -3343632, -100395, 5733782, 2405182, 3121904, -9270150, -3398930, -1948305,
--8071854, -7716446, -5080947, 4337917, 8927626, 11671037, 15267535, 3408594, 1344325, 12306692,
--4890357, -9254044, -3216931, -4679367, 7969312, 6518150, 2503966, -8761733, -2378338, 1583769,
-1287417, -1688459, -4031901, 1259499, 1046898, 5099737, -1202591, -2785286, 603980, 1011465,
-1261110, 121870, 90731, 1035624, 2345052, -1614908, -1581622, 184147, -179852, -2276333,
--508417, -2911451, 3240553, 1069447, -2189360, -58519, 2207076, -1107028, -168041, -1712618,
-993748, 1186485, -744103, 2827699, 2149094, 14127758, -13378823, -6286759, -1789391, 5417565,
--12514998, 7927973, -12329777, 6081137, -28991, 6451578, 10211822, -4168266, 9327595, 10198937,
-9698573, -5608154, 8182450, -8792335, -7007239, -1082332, -5413270, -78383, -4653597, 8014946,
--5917391, 1768990, -5841693, -10266582, -4778151, -2157147, 12427488, -10404558, 9790915, 4311611,
--14409615, 16546898, 4086662, 1851668, 11629161, 2069101, 535797, -6573448, -19864, -3668439,
-13259101, 5599564, 9298604, -3611531, -2177012, 6397354, 11047193, -11527692, 11447698, 2093797,
--1843078, -2145336, -10848551, 5242008, -5111011, 2216740, 499290, -9843528, 3342558, 8343511,
--7558069, 5294084, 3481608, 11676405, 1257889, -783295, 7101729, 10211822, 847719, -5852430,
-6871411, -7898982, -4099546, 2111513, -3183108, 2136746, -2548526, 1018444, 4430796, 3227668,
--3207804, 2820720, -1642825, 2274185, -2246805, 7110319, 734439, 6788733, -797253, 1702955,
--1416802, -587337, -2149094, 4302484, 1824287, -3544422, 3724274, 4311074, -459562, -592706,
-2648921, -187905, -205622, 3588445, -92342, 880468, 2334852, 1514513, -539555, 2739652,
--2250563, -419296, 546535, 739271, 628139, -157303, -306016, -2733210, 1316408, 4057134,
--11404749, -8158827, 12411382, -15892990, 4009352, -8457864, 9449465, -10094784, 15433965, 5356361,
-1496259, -13382044, 6826851, 11343545, 2997887, -6874632, -4473209, -3930432, 10524817, 5734318,
--14685567, 2088965, -10390063, -560493, 1189706, -8866960, 11642046, 11700028, -5306432, 2576981,
-7926899, -9666898, -1474784, -2965138, -8019241, 17065516, -6199786, -3796751, -8589935, -14324790,
--2279017, 283468, -4960151, 2149631, -11874511, 1065689, 833224, -2359548, 9377524, -1935420,
--7304666, 3821447, -11811, -5440650, 4679367, 20234664, -4050691, 4836133, 1095217, -13704167,
--2239826, 12275553, 5515275, 12187507, -1253594, 7058779, -9695352, 4377109, 4274566, 1461363,
--8242042, 7644505, 2683818, -21330956, 1658394, -3825742, 14280229, -5451387, 11086384, 10310606,
-8252243, -986769, 3162170, 522912, 824634, -1352915, -2362232, 5621576, 2244657, -34360,
--3711926, -5133023, -1214939, 2261837, 3615826, 2643016, 4641786, 210990, -1268626, -1870995,
--1508607, 1733019, 2770791, -204548, 2183454, 1493575, 393526, 2068564, -398895, 2161979,
--3504693, -4260608, -5699959, -208843, 2573222, 1238024, -2686502, -905701, -1887101, -2002529,
-3458523, 1131187, 1529545, -24959128, 28223304, 3328600, 11141145, -20476256, 11180874, 14549202,
--16765942, 6389838, 8303783, 6423661, -10832981, 1422708, 1914482, -3656628, 6328098, 13032541,
--10459856, -8705362, -3182034, 11047730, 9556302, 13510893, -649077, 5706938, -10065256, -2637647,
--2612951, 2209224, 6353867, 17268990, 10285373, 6277632, 3286724, -573378, 8252780, -3054796,
--14816027, -2878702, 4359392, 4731980, -8669928, -6569153, -10737955, 2073396, -850404, 3769908,
--7038378, 12607340, 12328704, -10674604, 25381110, 1162862, -2329483, -145492, -5280663, -1143535,
--1622424, -10263898, 172872, 30065, 6739878, -21357262, 5234492, -7570954, 15516106, 18734110,
-8112120, 7783018, 3503083, 1249836, 16916266, -3173981, -12504797, 10702522, -5630702, 2868501,
-8358007, 15237470, 2143726, 1502165, -12197170, -532039, 3571265, 9671193, -4201015, 5252745,
-2536178, -3704409, 9825811, 1656247, 4406637, -2864206, -903554, -2838437, 482110, 1127966,
--1495186, -87510, 2961380, -1635846, 3001109, 2017561, -2090039, -224949, 1395864, -887448,
-241592, -2015413, -6623377, -1907502, -1005559, 6924024, 8578660, 838592, 1265942, -2467459,
--2864206, 718333, 940598, -3590056, -2779918, -1867774, -1618129, 2298344, -3965866, -196495,
--2913062, 10264435, 1964948, -7147900, 6655052, 9988483, 8675834, 5475010, 10350334, -12595528,
--8036421, 1397475, -11395085, -2847563, -1945620, 2500208, -2961380, -7403450, -9302899, -5599027,
-4533875, 7790534, -13729400, 2866891, -1475858, -400506, -16535087, -14850923, -2624762, -11528229,
-5381057, -13142063, 799938, 6972343, 10041097, -8975945, 11940009, 3016678, -1228361, -2685965,
-17729624, -4996658, -923955, -14324790, -8067023, 11595338, -925029, 4361003, -13780403, -15093589,
--4150549, -8538932, -1515587, 608275, -5587753, -7167227, 4198868, -6657736, 548682, -9788230,
--5296769, -301185, -16078747, 1424319, 10532870, 1959579, 5519570, 11447698, 19687056, -19079318,
-3441880, -11794517, -11436961, -6440304, -8695698, -5629092, -5140539, 19232864, 10594611, 10619844,
-2199560, 3078418, -13964549, 623307, -4928475, 2172717, -6070937, 8478265, 11256572, 1043140,
--5116380, -3525631, -9635759, 813896, 5908265, 3216394, -2338073, 6043019, 2935610, 6400038,
--1394791, -1249836, 1054951, 4140349, -2686502, 1729798, -3948149, -5546951, 3959423, 1359357,
-814433, 814433, -7470022, -4511863, -38655, 5670968, -4835060, 2803003, -6478422, -2239826,
--1034550, 2222109, 1559073, -2005213, -1579474, -8690329, 19815906, 21010444, 23088134, -17266306,
-1203665, 12422656, 9773198, -10113037, -19287624, -2301029, -2920041, -15191299, -8800388, 28651190,
-2208687, 1898912, 10695005, -1308354, 4545149, -4022774, -11439645, 7438884, 6225555, -15484431,
--21962852, -17047798, -13542569, -12920335, 1189706, 3672734, 6475737, -8615704, 8333311, 1941325,
--4238596, -9114994, -347355, 437013, -14010183, -11002632, 1561221, -2592013, 1864553, -8532489,
-6800544, 2060511, -8010651, -17161616, -6799470, -5840082, -22774600, -7237020, 2081449, 11163694,
--1132798, 13232257, -2394444, -1192390, -19415936, -4190814, 7568269, 3558917, -32458678, 9217000,
-2762738, -9111236, -5541582, -9501541, -10686416, -499827, 445603, -10355703, -3358665, 6487011,
-9408126, 14811732, -11426224, 469762, 8359080, -453119, -24830816, -19833086, -272194, -5303748,
-6162741, -257161, -6140193, -8949638, 4052839, -2630668, 3678103, 10058277, -316217, -5085242,
--8486319, -15567109, -5327907, 871342, -2605435, -2686502, 976031, 941672, 6849399, -3603478,
-682900, 2516851, 1328756, -5670968, 610422, -1494112, -13516262, 1306207, -5022428, -6157910,
-2156074, 1587527, -4115653, -1352915, 4827007, 1343788, 1263257, -5050345, -5672578, -2053531,
--450972, 227633, 3434900, 7945153, -6739878, 22556632, -19305342, -11885248, -3925063, -36501316,
--19067508, -100395, -23269596, 18067316, -8185134, -7541426, 2065879, 41372348, 19963008, 1278290,
-8491687, -1925219, -11108933, -1107565, -17185774, -12436615, 5908802, 6001680, 7416872, -11943230,
-15289010, 9358197, 17297980, -17589502, 2818036, 25642028, 2389076, 1046898, 5051419, -24598352,
-6267431, -6220724, 4034048, -9909026, -23232014, -1428614, 9370545, 11429445, 2946885, -3635153,
-1671279, -1073205, 7678328, -17544404, -25535192, 4554813, -9332964, 15222438, -6115497, -6353867,
-19877646, 4466766, 8536248, 1575716, -16843788, -6913824, -2035278, 9063992, 26222922, 20184736,
--6053220, -23218594, -505732, -2685965, 8566312, -14323179, -17954574, -10197326, 8459475, -18185428,
--2867965, -15262166, 63351, 12263742, -408559, -22866406, -5058398, 3011309, 5975374, 2828773,
--14279693, -9622337, -15280420, 2343979, -3236795, -6643778, -5126044, -6640020, 1252520, -2780455,
--6366752, -1813013, 4426501, -42950, -247497, -7769596, -228707, -745177, -4978941, 390842,
-9482751, 3168612, 1686312, -9829570, 3765076, -1102733, -1183264, 1518808, -285615, -214748,
--2071785, -5861020, -6568079, -5367636, 6553583, 5749351, -2744484, -14592151, -5457830, -5430986,
--1258425, -41510860, 16047608, 13171054, -6079526, -27430346, -6040335, -10557030, -11111617, 12123082,
-14975477, -1513439, 4107599, -31166968, 11005317, -39012800, -9855876, -3364570, 7798050, 19668266,
-31217432, 12975633, -18034030, 4229469, 21818434, 2932389, 6654515, 11860015, -18330384, -7048578,
--2872796, 5604933, -12906914, -6918119, -3897146, -9674414, -7385733, 13290239, 13028246, 3381750,
-1106491, 22473416, -4195646, 10519986, -25336012, 16864190, 4835060, -22945862, 2374043, 7417946,
--21589726, -2738579, -21114596, 7125351, 8929774, 9552007, -14207752, -1165547, 14235669, -11784853,
-192737, -1849520, 23481660, -13824963, 17306570, 8818642, -21827560, 19252728, -16064251, 12414603,
-16297790, -16367583, 9300752, -13953812, -17418240, -26227218, -21911312, -23976118, -5715528, 4362076,
--7211787, 21100638, 21864068, -9158481, 19272056, -2876018, -4029753, 24551644, -5418101, -16322486,
-11439109, -2381559, -12782360, -9774272, 9702868, 1802276, 5042829, 7745437, 1382443, 6389301,
-9761387, -2508798, 10941966, 7597797, 5471789, 6300180, 938987, 3909494, 9302362, 7573638,
-9430674, 1511829, 7835094, -1349694, 569083, 6922951, -3346853, -12123082, 5820218, 2075543,
-40802, 378494, 5557688, -10708427, 5589900, 7757785, 6216429, -7048042, 6820945, -32802276,
--15469398, -16103443, 28835336, 943282, 10826002, -4606353, 40860708, 6510097, -27166742, 2065879,
-30043296, -11030013, 6751689, -4880694, 2675228, -17447230, -23551990, 37554656, 26757646, -10200010,
-20556250, 8115341, 26716308, 30354144, -8776229, -7088307, 27011050, 19807316, 2266132, -8455180,
--13310641, -13987098, 12545599, 23811836, 11241540, -4279398, 16040629, -8345122, 15227807, -6727530,
-22171158, 39197484, 29880088, -31832686, 14639396, -5386426, -12920872, -376883, 11173357, 10775536,
-71567576, -7178501, -686658, -11599633, -12633646, 13968307, 25890600, -6287296, 19694572, 16809428,
--2196339, 635655, -13864691, 14216879, 11966853, 38081328, 38737384, 47022376, 19566798, -11959336,
--9678172, -21556978, 21126408, -31903018, 23147726, -29944512, 17661980, -10540387, -17993766, 13070122,
--48506288, -38367480, 7030325, 7574175, -13859323, -13438953, 22671522, 11315628, -20798380, 3124589,
--4716948, -11375221, 3758633, 5866389, 1806034, 5944235, 6977711, 12258910, -5640903, 2413235,
--6826851, -12109123, -7393786, 2935073, 1076426, 16802448, 3601867, -4029216, -13573707, 2186138,
--5369783, -4343823, -6027987, 4722854, 10133975, 3614752, 8797704, 7390028, 11625403, -4850629,
-8861054, 1202591, 2595234, -762357, 775242, -6789807, 8172249, 19503446, 10465225, -2021856,
--2152852, 15508590, 12999792, -11950747, 3837553, 7813083, -5992016, 22433152, 5067525, -52586504,
-12059731, 6888591, -39119636, 2302639, -6713034, 1619740, 14326400, -1902134, -36158256, -6426345,
--11530913, -2032593, 25589952, 30720828, -17498234, -4416837, -14689862, 7556995, -27710592, -53739704,
--19263466, -16238734, 2807298, 868120, 24417962, -36745592, 17485348, -8560407, -4079145, 15066745,
-7066832, 25523380, 5802501, 9810779, 27307402, -31255550, 38945152, 30910342, 16108275, 28987808,
--11296838, 10984379, -27211302, -5449240, -13711683, 24001888, -21338472, 5099200, -45788648, -56791816,
-37853696, -1804423, 24412594, -17289390, 16149614, -11317776, 3479997, -6521371, -37211060, -11822434,
--24886652, -11872900, 13427678, 55043228, 19643570, -48721036, -11041824, 12786118, -11307038, -7384123,
--32171452, -16727287, 24790552, -9409736, 5976984, 4765266, -20062330, 12549358, -2958159, 849330,
--41140956, -12105902, -905701, -18928458, -10689100, 1413044, -27851252, 2750390, 6197101, -22669912,
--17741974, -31947578, -23730768, -2379412, -13156559, -6470905, 766115, -9291088, -9010305, -3927211,
--14067092, -6934225, 1774895, 9342628, -12410845, -4643934, -21228412, 7267622, 5178657, 12241731,
--8807904, 12732967, -27457726, -1869921, -34897, -2180770, 4158065, -4720169, 2871723, -12998182,
--13390097, 3850975, 3308199, -32236414, 17130478, 17114908, 30323006, -14668924, 11165841, -16872780,
--19628538, 8879308, 40237400, 65157876, -3975529, -4220342, 1447404, -1349694, -28916404, 45624364,
-21946210, 24314884, 18744848, -13086765, 15882789, -25566330, -36870684, -6283001, 27740120, 18089328,
--13146895, -8437463, -1762547, 22480932, 1015760, 16413754, 16053514, 26602490, 8904004, -16580721,
--15770046, 15252503, -17762374, -13197898, 7913477, 29211146, 26903676, -30572650, -23664196, 15917149,
-18931142, 57332444, -13228499, -31067110, -32244466, 27487790, -20616380, 25941066, 29272350, 58992988,
-125030256, -27844810, -15879568, -46733004, -74512312, -23676008, -37502044, 4406100, 51884280, -7515656,
-27497454, 39262444, 25706990, -14367739, -46141372, -75521096, 42256036, -2865280, 48056924, -24568824,
--65544960, 22999550, -38831872, -51652352, -26540214, -16362752, 16522739, 16365436, 29525216, -2080375,
--14323716, -2166274, -1177895, -26666378, -25928180, 13328894, -9167071, 26584236, 24131810, -11404212,
-24024436, -18792630, 541703, 23789824, 2554432, -36718212, 9838159, -18428094, -3224447, -5838471,
--4938676, -27031988, -22236656, 4456566, 32223530, 34676492, -32350768, -3688303, 39342976, 37815576,
-44560, 8093329, -35633196, -18763102, 5273146, 20973936, -30807800, 8035884, 23985782, 12215961,
-9068823, 2893197, 15121506, -25233470, 4694936, -23002234, -63432372, 15969225, -26503706, 26326002,
-3870839, 14697915, 12883828, -58030376, -41111964, -20365662, -12785581, -13492103, -23716272, -7380365,
--39400956, -25100326, 18953154, -25660282, 48831632, -36335960, 3738232, 10059887, -3861713, 4290136,
--2095407, 11662984, -11324218, -12212203, -2112587, 8737037, -1537598, 20936354, -19766514, 4452271,
-30601642, 9797357, 4589173, 15573015, 1931662, -12475269, -7940858, 24821690, 5568962, -39260832,
--17403208, -31859530, -14499810, 42194296, 39355860, -40668508, -4498442, -46238544, -11142219, -3856881,
-10660646, 23163296, -37868728, 25246892, -32239636, -5469641, -21842594, 48581448, -9825811, 34259880,
-32057636, 71331888, -32869922, 29407642, 4787815, 27939300, 9760850, 21310018, -35756140, -32862942,
-47662864, 2303176, -1799591, -33777772, 38481296, -13052406, 19740206, -35553204, 74673376, -40039296,
-41539312, -50127100, 19789062, -37791416, 20855824, -34821984, 25789132, -22069690, 15146202, -12338367,
-8338679, -18787798, -11599633, -8921184, -2346126, 6584185, 1148904, 5297842, 428423, 5202279,
--2842195, -9628780, -15175193, 6816650, 7529615, 2117956, 6896107, -5738077, 2681133, -4566087,
-2818036, 25597468, -6494528, -18514530, 2578591, -10534481, -19695646, 6146635, -10773925, 7740605,
--9042517, 6408628, -17218524, 6849936, -22252226, 31101468, 4785668, -57204668, -25195888, -35458712,
-1929514, -8322036, -77232104, -35095788, -20277078, -41168336, -25653840, -77829104, -65706556, -12037183,
-27894738, -42905648, -25666724, -6378027, -36561984, -8515846, -3070365, -35390532, -9557913, 7046968,
-1577864, -46920372, -26770532, -26840862, -14992657, -16732119, -4955319, -32635308, 26874148, 17453674,
-38438348, 55988120, 48664664, 12287365, 51459612, 20509006, 9004399, -23156854, 17885318, 18611168,
-14668924, -6197638, -17915382, -8414378, 12712029, 22761716, 117880208, 15800111, 24100672, 17142288,
-48061220, 18474802, 42179800, 77001248, -37512244, -75856104, 9154723, 48088600, 86057184, 38024420,
--74822624, 9839770, -18871012, 108656768, 79860624, 97182224, 89071720, -77888696, -51504176, 63425392,
-76182520, -22580790, -44769128, -53954988, 120296664, 80039400, -5525476, -104097656, 24522116, -4274566,
--23455354, 28296318, 7315940, -9382356, -22682796, -739808, 15927886, 44486196, 31411780, -27064736,
--11237782, -7518341, -6230387, 24954834, 17882096, 19268298, -272194, 10153840, 40736692, 27593554,
-5207111, 16091095, -11943230, 20159502, 26041998, 34547644, 44014824, 34377992, 26060250, -163209,
--6766721, -9570261, -3775276, -20331302, -11695196, -9976135, -25400436, -32472100, -37142876, -63242856,
--36386428, -23783918, -38579008, -70343512, -49387828, -41647760, -48752172, -57642220, -61092688, -21170430,
--23972896, -33595772, -19364934, -21106544, -14496588, -19844896, -19596326, -19148038, -18945638, -55890948,
-89661200, 72392208, -62634044, 14002130, -1418413, 10076530, -2406256, -6205691, 23117124, -23205708,
-22583474, -9205726, 124554, 8892730, 7312719, 8019778, -18790, -13176423, -8354249, 14382235,
--11798275, -1564442, 13962939, -7642895, -7870528, -11106249, -20156818, -20383378, 14937896, -7488276,
-5619965, -12861816, 2647311, -27196270, -4794794, 7320772, 17552458, -11202885, 3920768, 11835319,
-19225884, -4713727, 15945066, -12992276, 50530828, -18873696, 17519708, 2152316, 9991168, -9621264,
-13518410, -5546951, 36074504, -6063957, 11293617, -25289304, 33127082, -17550846, -1156957, -5105106,
-4989679, -10077067, 19988778, -23081692, 18802830, -21187610, 27380416, -28686086, 34670588, -23186918,
--12135430, -14657113, -6988986, 1059783, -22429392, 14442364, -13194676, 12614319, 1290638, 17551384,
-6991133, 12015171, 22058416, 9032316, -7310035, 5480915, 5597416, -3511673, 4190814, -7241315,
-8161512, -4265977, 326418, -7126962, 15644955, -15631533, 1736241, -1856500, 12768938, -2867428,
-2901251, -3419331, 5355824, -7717520, 5899675, -6699075, -2837900, 11158862, 10989211, -3795677,
--10209674, 6240588, 9806484, 9411884, -8745627, 7152731, -5884642, 5175436, 1939178, 1522566,
--9356049, 9811853, -3345780, -13223667, 10919954, 8975945, -7709467, -2566780, -1132261, 1789928,
--7387881, 10380936, -9762998, 2929168, -10705206, 9300215, -7476465, 7775502, -5807870, 9751723,
--11068131, 11932493, -10848014, 5125507, -8821326, 8772471, -10209137, 7920457, -6080063, 10378252,
--11773042, 12176232, -10335302, -21983790, -45426260, -49982144, 42490112, 10733660, -13156022, -67734320,
--27228482, 37728068, 7690676, 27246198, 30393336, -10982768, -19103478, 889595, 7201587, 5575405,
-5037997, -11997454, -8805757, -6673843, 31675, 18301930, 9901510, -914828, 4120484, -5310190,
--8862665, -5691906, -4639639, 295279, 5413807, -4204773, 6986838, 7295002, -24871618, -11094974,
--11003169, 13235479, 9245991, -885300, -11573326, -15709380, 13648332, 2957622, 9155797, 12671764,
--23057532, -15413027, 4220342, 18519362, 9393093, -26310432, -16163573, -21388400, -10159208, 5424544,
-4832375, -8850317, 9663676, -4034048, -9186398, 4042101, 8810589, -6643778, 2110440, -335544,
--8202851, -834297, -2885144, -18718542, -18795850, -1246077, -20050518, -15142981, 658741, 5996848,
--4350802, 22053584, 16383153, 9222369, 730144, -2218351, -9822053, 12171400, 6047314, 7059853,
-6954089, -6302328, -2566780, -568009, 3567507, -11705396, -14076755, -2047089, 6274411, 818728,
-7929047, 5385352, -7305203, 2324114, 4397510, 2951180, -2299955, 7771207, -9731322, -5949067,
-18129594, 10269267, -11022497, -8446590, -5564667, -10008348, 11054172, -470836, 1672353, 4930623,
-3363496, -217970, -306016, -7483981, 4823785, 2716567, 6590091, -3741990, -942745, 4103305,
-17636210, -43859132, -119562760, -45428944, 27266064, 57630408, 135865920, 79868136, 21749714, 28464358,
--23499376, -43932684, -96171832, -64838972, -49699752, -16244640, 19762218, 52981104, 41190884, 51434380,
-49704584, 33699388, -11311870, -39169028, -33899640, -34845608, -27991912, -40399000, 12461848, -25531434,
-1924682, 18824842, 34791384, 19636590, 32570884, 42917460, 855235, 12816182, 1003949, -645319,
--23916526, -3158412, -21274584, -41620380, -65672196, -36594732, -19995220, 5314485, 5061082, 39090644,
-54299660, 52166672, 62135292, 9049496, 40799504, 16158204, -3609920, -38183868, -37361384, -50787988,
--66627292, -45459008, -51613160, -32715302, 261993, 16028281, 37202468, 59999084, 88428544, 70812200,
-64216204, 34744136, -13167296, -13075491, -34616900, -73785928, -56622700, -93243736, -61241940, -27159226,
--20604032, 29145648, 56052008, 76715632, 54221816, 41464152, 25283936, 28739774, 25337622, -4039417,
--28968480, -27709518, -43621300, -48371532, -38409356, -26340498, -24399172, -23283018, 10753524, 22667764,
-40219148, 47613472, 39157752, 34317324, 19684908, 672162, 1089848, 4420058, -28839632, -49107044,
--20013474, -42891692, -48499844, -1661079, 12253005, 27064736, 28120224, 17882634, 29715804, 17179870,
-23796266, -5028333, -393526, -20816632, -12393665, -11077258, -13642427, -15788300, -12594455, 2056753,
--5181341, -15032, 14536317, 19968914, 12717935, 10924786, -2667712, -3567507, -76236, -367220,
--5999533, -7295002, -1095217, -4362613, -4267587, -2720862, 178241, -4603668, -1415729, 8649527,
-3157875, 3783866, 5685463, 4010963, 1215476, 197032, -997506, -1186485, -715112, -471373,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+815507, -2067490, -2163053, 1333587, -3695283, -53687, -7201587, 5168993, 6554120, 4579509,
+6449967, -7733626, 628676, 1772748, -2756295, -2121177, -1883880, -9058086, -1522029, 5391258,
+-9273908, -7535520, 4391067, 3980898, -5958194, -2075543, 3948686, 509491, 4800163, 2059437,
+4999879, -3133716, 958851, 696858, -1324997, 2331094, 1831804, 3396246, 1426466, -1493575,
+328028, 3794067, -1022202, -1719061, -638876, -4578435, -10112500, 6018323, 2921652, -3160022,
+4439923, -1772211, 493384, -150861, 2064269, -2664490, -692027, 5981279, -5626407, -2252174,
+1956895, 980863, -869194, -272730, 2621541, 304406, 2320893, -4006668, 4083440, 2105071,
+-5228049, 4170950, 370978, 1514513, -623307, -1549946, -6102612, -1883880, -455803, 3142306,
+-804770, 2571075, -1533303, 309775, 765578, 312459, 1821603, -319975, 126702, -217433,
+-1235340, -558346, 243739, -658741, 88047, -25233, -280247, 1674500, 1679869, 878858,
+700617, 613643, 217433, 11811, 224949, 97174, -253403, -739808, -836982, 11946988,
+-6880538, 2092723, -7604240, 908386, 1771674, -7665980, -9692131, 2413772, -10515154, 2310693,
+-2746632, -731218, -6451578, -940061, -7243999, -3726421, 23085, -7663296, 8131984, 2859911,
+-12707198, 1200980, -705985, -2305861, -5443334, 2726231, 6583111, 125628, -492311, 6179921,
+-3641059, 73551, -2320356, 4093641, -4808753, 1402844, 5774584, -5038534, 5048734, 1772211,
+5461588, -475668, 1232656, -834297, -2318209, 7158637, -8902393, 2045478, -3946001, -1716376,
+-1170379, -3244848, -2404645, -7096360, -4466766, -1115081, 4604742, -400506, 1721208, 6452652,
+-163746, -5609228, -733903, 194884, 1738925, -2742337, -5906, -5517423, 102005, -2251637,
+1805497, 2855617, 4197257, 1493038, -2393908, -3103114, 4119411, -1392643, -1910724, 763430,
+2283312, 4755603, 563714, 1358820, -328028, 2784750, -559956, -2221572, -1148904, -1103807,
+-117575, 1886028, 352724, -133681, -1023813, 1826972, -21475, -695785, -531502, -477815,
+-551903, 864362, -384936, -99321, -1078037, -2876554, -9896678, -117038, -5964636, -1882269,
+-972810, -6955700, -953483, -1620276, 3450469, 8112120, 8157754, 970126, -3489124, 3262565,
+-7904888, -1130113, -3026341, 2755222, -11779485, 4158602, 1992328, -430034, -3391414, -5077188,
+-2323577, -4188667, -3606162, 2203318, -791348, -4514548, -1320166, 914291, 7686918, -296890,
+-7772817, 608275, 3342022, -97174, -2449205, 644782, 2921652, -8442832, -660888, -3671123,
+5927592, 3611531, 1001801, -7805030, 878858, 3006477, 4782446, 4478577, -5133560, -2412161,
+229244, -1603097, -1611687, 4172024, -2592013, 2553895, 697395, -3279745, -743029, -4505958,
+5425618, 2039036, -5366562, -3699041, 903017, 2846490, -4257923, -5366562, -915902, 266825,
+-3571802, 768262, -1467268, 1811403, -3404299, 5058935, 2707977, 3813931, 1088237, 503585,
+3429532, 4642323, 540092, 1319629, -444529, 660888, 77846, -192737, 517544, 391379,
+537408, -732292, 25770, 357556, -259846, 82678, 1546188, -899259, 352187, -1076963,
+-864362, -721555, 158914, 587337, 394600, 54761, -1002875, -663036, -16843788, 5437429,
+4862440, 8147016, -2122788, 5113159, -14529337, -3979287, 4542465, 530428, -7191386, -1881196,
+-2399276, -12731357, -5164162, 1279363, -593242, -9080635, 5655935, 8039642, -8277476, 6263673,
+-10837276, -3695283, -981400, 3714610, -68719, -4403952, 2960306, 1466731, -733903, 4823785,
+-2352568, -3132105, -983548, -1794760, -3215320, 4743792, -3668439, 1331977, 3552475, -741419,
+-2843268, -5333813, -657130, -3811247, -1170916, -4431333, -1206349, 9802726, 188442, 5953362,
+-5493263, 4992363, -1578401, -8041790, -4747013, 4424353, -2929705, -4099010, 2917357, -4816806,
+3982509, 1056025, -1488743, 5205501, 4704600, 2063195, -5195300, -5885716, -418759, 7792145,
+1540283, 1165547, -4440460, 1134945, 2794413, -5977521, -2193118, 1918240, 4149475, 2045478,
+3511136, -217970, 23085, 1278290, 155693, -689342, 202937, -528818, -762357, -2655901,
+-2117419, 622770, -1277216, -774705, 879395, 381178, 641561, -185220, 1071594, -718333,
+45097, -947577, 4295, -1145683, 557809, 173409, 766652, -1488743, -9048422, -8603356,
+-5699959, 1022202, -1484448, 3468186, -3143916, -34360, 580894, -2596308, -1010928, 2118493,
+-2574296, 9979893, -6614250, 4599373, -1766305, -727460, -4707821, -1325534, -687732, 7263864,
+-5034239, 610959, 1371705, -7210713, -4426501, -4939750, -4206921, -8352638, -2908767, 2944200,
+5588826, 3525095, -6679748, -9402220, -2101850, 241055, -4811437, 827855, -3284576, -4927401,
+-11630235, -5868536, -8166344, 4632659, -2148021, 3755412, -4711579, -11339787, -6036577, 511638,
+-2348810, -3752728, -1734093, -4494147, 5982890, 493384, 3462818, 4651450, 1141388, -242666,
+-3965329, 125628, 5057324, -929860, -3830037, -5289789, 8355322, -7041599, -9812390, -6944962,
+-4021163, -5472862, 6064494, 9707700, -7826504, -5413270, 1148904, 4684199, 7224135, 5703717,
+4441533, 4381404, -1619203, -1985886, -2262911, -2341831, 1750736, -1453846, 439697, -1763084,
+-2809446, -1174137, -2037425, 1409823, -1291175, -2508261, -1486059, -1468879, -2521146, -2781528,
+-1759326, -737661, 497679, 445603, 1237488, 117575, -4293894, 457414, -701690, -1753957,
+451508, -788127, -1330903, -2828773, -2342368, 32212, -40802, -980326, -1122597, -43487,
+2309082, -18480708, 5698885, -1313723, 3266860, 10126996, 3974455, -2514703, 3426847, -7633231,
+4712653, 5524939, -10069014, -2159295, -5099737, 5668820, 4937065, 7695508, 8934069, -11621108,
+-5984500, 1904818, 9972914, -3794067, 4635881, -11111080, -3355980, -3903052, -2357400, -6730751,
+1663763, -11001022, 7614440, -2167885, -1952063, 5555004, -332860, 1261110, 5913096, 151398,
+4840428, 3233574, -1370095, -1917166, -653372, -7727183, -5657009, -7061463, -444529, 14652281,
+3406446, 2826089, -342524, -2057289, -120796, 8752070, -1871532, 2732136, -16902844, 15546171,
+-3767223, -2788508, 896574, 9517648, 3470334, -1605244, -5793911, 16658031, -3211025, -213138,
+5343476, -4233227, -23622, 2378875, -3751654, 3281355, 3272765, 13754096, -6847252, -8633421,
+-1581085, 4108673, -5177046, 1143535, 3563749, 1126355, -3022583, 1352378, 3654480, -2314451,
+332323, -3950833, -1231582, -1170379, -3211025, 4213363, -3053722, -2607045, 1937030, -134755,
+-3621194, -340376, 884226, 1547799, 185757, 1823214, -1307281, -1137093, -1063541, 1220308,
+-1332514, 2179159, 249645, -938450, 1013612, 2275796, -51003, -1050120, 7998303, 4487167,
+8900783, -3558381, -2114198, 5130339, -8207146, 7393250, 8436926, -4223027, -707059, -13249437,
+632434, 4566624, 3696356, -2801929, -9012989, -18289044, 299037, -3104725, -8677981, 2030983,
+5841156, -7937100, -3380139, -8657043, 4387846, 503048, -1285269, -2874407, -3751654, 9346386,
+10902774, 4245039, 5197448, -2421825, -5466957, 15203647, 3784403, -2584497, -8919573, 6585259,
+279710, 8745627, -765041, 10806138, 5408438, 7564511, 6398965, 3265786, 8414378, 10500121,
+-294205, 1947768, -3343632, -100395, 5733782, 2405182, 3121904, -9270150, -3398930, -1948305,
+-8071854, -7716446, -5080947, 4337917, 8927626, 11671037, 15267535, 3408594, 1344325, 12306692,
+-4890357, -9254044, -3216931, -4679367, 7969312, 6518150, 2503966, -8761733, -2378338, 1583769,
+1287417, -1688459, -4031901, 1259499, 1046898, 5099737, -1202591, -2785286, 603980, 1011465,
+1261110, 121870, 90731, 1035624, 2345052, -1614908, -1581622, 184147, -179852, -2276333,
+-508417, -2911451, 3240553, 1069447, -2189360, -58519, 2207076, -1107028, -168041, -1712618,
+993748, 1186485, -744103, 2827699, 2149094, 14127758, -13378823, -6286759, -1789391, 5417565,
+-12514998, 7927973, -12329777, 6081137, -28991, 6451578, 10211822, -4168266, 9327595, 10198937,
+9698573, -5608154, 8182450, -8792335, -7007239, -1082332, -5413270, -78383, -4653597, 8014946,
+-5917391, 1768990, -5841693, -10266582, -4778151, -2157147, 12427488, -10404558, 9790915, 4311611,
+-14409615, 16546898, 4086662, 1851668, 11629161, 2069101, 535797, -6573448, -19864, -3668439,
+13259101, 5599564, 9298604, -3611531, -2177012, 6397354, 11047193, -11527692, 11447698, 2093797,
+-1843078, -2145336, -10848551, 5242008, -5111011, 2216740, 499290, -9843528, 3342558, 8343511,
+-7558069, 5294084, 3481608, 11676405, 1257889, -783295, 7101729, 10211822, 847719, -5852430,
+6871411, -7898982, -4099546, 2111513, -3183108, 2136746, -2548526, 1018444, 4430796, 3227668,
+-3207804, 2820720, -1642825, 2274185, -2246805, 7110319, 734439, 6788733, -797253, 1702955,
+-1416802, -587337, -2149094, 4302484, 1824287, -3544422, 3724274, 4311074, -459562, -592706,
+2648921, -187905, -205622, 3588445, -92342, 880468, 2334852, 1514513, -539555, 2739652,
+-2250563, -419296, 546535, 739271, 628139, -157303, -306016, -2733210, 1316408, 4057134,
+-11404749, -8158827, 12411382, -15892990, 4009352, -8457864, 9449465, -10094784, 15433965, 5356361,
+1496259, -13382044, 6826851, 11343545, 2997887, -6874632, -4473209, -3930432, 10524817, 5734318,
+-14685567, 2088965, -10390063, -560493, 1189706, -8866960, 11642046, 11700028, -5306432, 2576981,
+7926899, -9666898, -1474784, -2965138, -8019241, 17065516, -6199786, -3796751, -8589935, -14324790,
+-2279017, 283468, -4960151, 2149631, -11874511, 1065689, 833224, -2359548, 9377524, -1935420,
+-7304666, 3821447, -11811, -5440650, 4679367, 20234664, -4050691, 4836133, 1095217, -13704167,
+-2239826, 12275553, 5515275, 12187507, -1253594, 7058779, -9695352, 4377109, 4274566, 1461363,
+-8242042, 7644505, 2683818, -21330956, 1658394, -3825742, 14280229, -5451387, 11086384, 10310606,
+8252243, -986769, 3162170, 522912, 824634, -1352915, -2362232, 5621576, 2244657, -34360,
+-3711926, -5133023, -1214939, 2261837, 3615826, 2643016, 4641786, 210990, -1268626, -1870995,
+-1508607, 1733019, 2770791, -204548, 2183454, 1493575, 393526, 2068564, -398895, 2161979,
+-3504693, -4260608, -5699959, -208843, 2573222, 1238024, -2686502, -905701, -1887101, -2002529,
+3458523, 1131187, 1529545, -24959128, 28223304, 3328600, 11141145, -20476256, 11180874, 14549202,
+-16765942, 6389838, 8303783, 6423661, -10832981, 1422708, 1914482, -3656628, 6328098, 13032541,
+-10459856, -8705362, -3182034, 11047730, 9556302, 13510893, -649077, 5706938, -10065256, -2637647,
+-2612951, 2209224, 6353867, 17268990, 10285373, 6277632, 3286724, -573378, 8252780, -3054796,
+-14816027, -2878702, 4359392, 4731980, -8669928, -6569153, -10737955, 2073396, -850404, 3769908,
+-7038378, 12607340, 12328704, -10674604, 25381110, 1162862, -2329483, -145492, -5280663, -1143535,
+-1622424, -10263898, 172872, 30065, 6739878, -21357262, 5234492, -7570954, 15516106, 18734110,
+8112120, 7783018, 3503083, 1249836, 16916266, -3173981, -12504797, 10702522, -5630702, 2868501,
+8358007, 15237470, 2143726, 1502165, -12197170, -532039, 3571265, 9671193, -4201015, 5252745,
+2536178, -3704409, 9825811, 1656247, 4406637, -2864206, -903554, -2838437, 482110, 1127966,
+-1495186, -87510, 2961380, -1635846, 3001109, 2017561, -2090039, -224949, 1395864, -887448,
+241592, -2015413, -6623377, -1907502, -1005559, 6924024, 8578660, 838592, 1265942, -2467459,
+-2864206, 718333, 940598, -3590056, -2779918, -1867774, -1618129, 2298344, -3965866, -196495,
+-2913062, 10264435, 1964948, -7147900, 6655052, 9988483, 8675834, 5475010, 10350334, -12595528,
+-8036421, 1397475, -11395085, -2847563, -1945620, 2500208, -2961380, -7403450, -9302899, -5599027,
+4533875, 7790534, -13729400, 2866891, -1475858, -400506, -16535087, -14850923, -2624762, -11528229,
+5381057, -13142063, 799938, 6972343, 10041097, -8975945, 11940009, 3016678, -1228361, -2685965,
+17729624, -4996658, -923955, -14324790, -8067023, 11595338, -925029, 4361003, -13780403, -15093589,
+-4150549, -8538932, -1515587, 608275, -5587753, -7167227, 4198868, -6657736, 548682, -9788230,
+-5296769, -301185, -16078747, 1424319, 10532870, 1959579, 5519570, 11447698, 19687056, -19079318,
+3441880, -11794517, -11436961, -6440304, -8695698, -5629092, -5140539, 19232864, 10594611, 10619844,
+2199560, 3078418, -13964549, 623307, -4928475, 2172717, -6070937, 8478265, 11256572, 1043140,
+-5116380, -3525631, -9635759, 813896, 5908265, 3216394, -2338073, 6043019, 2935610, 6400038,
+-1394791, -1249836, 1054951, 4140349, -2686502, 1729798, -3948149, -5546951, 3959423, 1359357,
+814433, 814433, -7470022, -4511863, -38655, 5670968, -4835060, 2803003, -6478422, -2239826,
+-1034550, 2222109, 1559073, -2005213, -1579474, -8690329, 19815906, 21010444, 23088134, -17266306,
+1203665, 12422656, 9773198, -10113037, -19287624, -2301029, -2920041, -15191299, -8800388, 28651190,
+2208687, 1898912, 10695005, -1308354, 4545149, -4022774, -11439645, 7438884, 6225555, -15484431,
+-21962852, -17047798, -13542569, -12920335, 1189706, 3672734, 6475737, -8615704, 8333311, 1941325,
+-4238596, -9114994, -347355, 437013, -14010183, -11002632, 1561221, -2592013, 1864553, -8532489,
+6800544, 2060511, -8010651, -17161616, -6799470, -5840082, -22774600, -7237020, 2081449, 11163694,
+-1132798, 13232257, -2394444, -1192390, -19415936, -4190814, 7568269, 3558917, -32458678, 9217000,
+2762738, -9111236, -5541582, -9501541, -10686416, -499827, 445603, -10355703, -3358665, 6487011,
+9408126, 14811732, -11426224, 469762, 8359080, -453119, -24830816, -19833086, -272194, -5303748,
+6162741, -257161, -6140193, -8949638, 4052839, -2630668, 3678103, 10058277, -316217, -5085242,
+-8486319, -15567109, -5327907, 871342, -2605435, -2686502, 976031, 941672, 6849399, -3603478,
+682900, 2516851, 1328756, -5670968, 610422, -1494112, -13516262, 1306207, -5022428, -6157910,
+2156074, 1587527, -4115653, -1352915, 4827007, 1343788, 1263257, -5050345, -5672578, -2053531,
+-450972, 227633, 3434900, 7945153, -6739878, 22556632, -19305342, -11885248, -3925063, -36501316,
+-19067508, -100395, -23269596, 18067316, -8185134, -7541426, 2065879, 41372348, 19963008, 1278290,
+8491687, -1925219, -11108933, -1107565, -17185774, -12436615, 5908802, 6001680, 7416872, -11943230,
+15289010, 9358197, 17297980, -17589502, 2818036, 25642028, 2389076, 1046898, 5051419, -24598352,
+6267431, -6220724, 4034048, -9909026, -23232014, -1428614, 9370545, 11429445, 2946885, -3635153,
+1671279, -1073205, 7678328, -17544404, -25535192, 4554813, -9332964, 15222438, -6115497, -6353867,
+19877646, 4466766, 8536248, 1575716, -16843788, -6913824, -2035278, 9063992, 26222922, 20184736,
+-6053220, -23218594, -505732, -2685965, 8566312, -14323179, -17954574, -10197326, 8459475, -18185428,
+-2867965, -15262166, 63351, 12263742, -408559, -22866406, -5058398, 3011309, 5975374, 2828773,
+-14279693, -9622337, -15280420, 2343979, -3236795, -6643778, -5126044, -6640020, 1252520, -2780455,
+-6366752, -1813013, 4426501, -42950, -247497, -7769596, -228707, -745177, -4978941, 390842,
+9482751, 3168612, 1686312, -9829570, 3765076, -1102733, -1183264, 1518808, -285615, -214748,
+-2071785, -5861020, -6568079, -5367636, 6553583, 5749351, -2744484, -14592151, -5457830, -5430986,
+-1258425, -41510860, 16047608, 13171054, -6079526, -27430346, -6040335, -10557030, -11111617, 12123082,
+14975477, -1513439, 4107599, -31166968, 11005317, -39012800, -9855876, -3364570, 7798050, 19668266,
+31217432, 12975633, -18034030, 4229469, 21818434, 2932389, 6654515, 11860015, -18330384, -7048578,
+-2872796, 5604933, -12906914, -6918119, -3897146, -9674414, -7385733, 13290239, 13028246, 3381750,
+1106491, 22473416, -4195646, 10519986, -25336012, 16864190, 4835060, -22945862, 2374043, 7417946,
+-21589726, -2738579, -21114596, 7125351, 8929774, 9552007, -14207752, -1165547, 14235669, -11784853,
+192737, -1849520, 23481660, -13824963, 17306570, 8818642, -21827560, 19252728, -16064251, 12414603,
+16297790, -16367583, 9300752, -13953812, -17418240, -26227218, -21911312, -23976118, -5715528, 4362076,
+-7211787, 21100638, 21864068, -9158481, 19272056, -2876018, -4029753, 24551644, -5418101, -16322486,
+11439109, -2381559, -12782360, -9774272, 9702868, 1802276, 5042829, 7745437, 1382443, 6389301,
+9761387, -2508798, 10941966, 7597797, 5471789, 6300180, 938987, 3909494, 9302362, 7573638,
+9430674, 1511829, 7835094, -1349694, 569083, 6922951, -3346853, -12123082, 5820218, 2075543,
+40802, 378494, 5557688, -10708427, 5589900, 7757785, 6216429, -7048042, 6820945, -32802276,
+-15469398, -16103443, 28835336, 943282, 10826002, -4606353, 40860708, 6510097, -27166742, 2065879,
+30043296, -11030013, 6751689, -4880694, 2675228, -17447230, -23551990, 37554656, 26757646, -10200010,
+20556250, 8115341, 26716308, 30354144, -8776229, -7088307, 27011050, 19807316, 2266132, -8455180,
+-13310641, -13987098, 12545599, 23811836, 11241540, -4279398, 16040629, -8345122, 15227807, -6727530,
+22171158, 39197484, 29880088, -31832686, 14639396, -5386426, -12920872, -376883, 11173357, 10775536,
+71567576, -7178501, -686658, -11599633, -12633646, 13968307, 25890600, -6287296, 19694572, 16809428,
+-2196339, 635655, -13864691, 14216879, 11966853, 38081328, 38737384, 47022376, 19566798, -11959336,
+-9678172, -21556978, 21126408, -31903018, 23147726, -29944512, 17661980, -10540387, -17993766, 13070122,
+-48506288, -38367480, 7030325, 7574175, -13859323, -13438953, 22671522, 11315628, -20798380, 3124589,
+-4716948, -11375221, 3758633, 5866389, 1806034, 5944235, 6977711, 12258910, -5640903, 2413235,
+-6826851, -12109123, -7393786, 2935073, 1076426, 16802448, 3601867, -4029216, -13573707, 2186138,
+-5369783, -4343823, -6027987, 4722854, 10133975, 3614752, 8797704, 7390028, 11625403, -4850629,
+8861054, 1202591, 2595234, -762357, 775242, -6789807, 8172249, 19503446, 10465225, -2021856,
+-2152852, 15508590, 12999792, -11950747, 3837553, 7813083, -5992016, 22433152, 5067525, -52586504,
+12059731, 6888591, -39119636, 2302639, -6713034, 1619740, 14326400, -1902134, -36158256, -6426345,
+-11530913, -2032593, 25589952, 30720828, -17498234, -4416837, -14689862, 7556995, -27710592, -53739704,
+-19263466, -16238734, 2807298, 868120, 24417962, -36745592, 17485348, -8560407, -4079145, 15066745,
+7066832, 25523380, 5802501, 9810779, 27307402, -31255550, 38945152, 30910342, 16108275, 28987808,
+-11296838, 10984379, -27211302, -5449240, -13711683, 24001888, -21338472, 5099200, -45788648, -56791816,
+37853696, -1804423, 24412594, -17289390, 16149614, -11317776, 3479997, -6521371, -37211060, -11822434,
+-24886652, -11872900, 13427678, 55043228, 19643570, -48721036, -11041824, 12786118, -11307038, -7384123,
+-32171452, -16727287, 24790552, -9409736, 5976984, 4765266, -20062330, 12549358, -2958159, 849330,
+-41140956, -12105902, -905701, -18928458, -10689100, 1413044, -27851252, 2750390, 6197101, -22669912,
+-17741974, -31947578, -23730768, -2379412, -13156559, -6470905, 766115, -9291088, -9010305, -3927211,
+-14067092, -6934225, 1774895, 9342628, -12410845, -4643934, -21228412, 7267622, 5178657, 12241731,
+-8807904, 12732967, -27457726, -1869921, -34897, -2180770, 4158065, -4720169, 2871723, -12998182,
+-13390097, 3850975, 3308199, -32236414, 17130478, 17114908, 30323006, -14668924, 11165841, -16872780,
+-19628538, 8879308, 40237400, 65157876, -3975529, -4220342, 1447404, -1349694, -28916404, 45624364,
+21946210, 24314884, 18744848, -13086765, 15882789, -25566330, -36870684, -6283001, 27740120, 18089328,
+-13146895, -8437463, -1762547, 22480932, 1015760, 16413754, 16053514, 26602490, 8904004, -16580721,
+-15770046, 15252503, -17762374, -13197898, 7913477, 29211146, 26903676, -30572650, -23664196, 15917149,
+18931142, 57332444, -13228499, -31067110, -32244466, 27487790, -20616380, 25941066, 29272350, 58992988,
+125030256, -27844810, -15879568, -46733004, -74512312, -23676008, -37502044, 4406100, 51884280, -7515656,
+27497454, 39262444, 25706990, -14367739, -46141372, -75521096, 42256036, -2865280, 48056924, -24568824,
+-65544960, 22999550, -38831872, -51652352, -26540214, -16362752, 16522739, 16365436, 29525216, -2080375,
+-14323716, -2166274, -1177895, -26666378, -25928180, 13328894, -9167071, 26584236, 24131810, -11404212,
+24024436, -18792630, 541703, 23789824, 2554432, -36718212, 9838159, -18428094, -3224447, -5838471,
+-4938676, -27031988, -22236656, 4456566, 32223530, 34676492, -32350768, -3688303, 39342976, 37815576,
+44560, 8093329, -35633196, -18763102, 5273146, 20973936, -30807800, 8035884, 23985782, 12215961,
+9068823, 2893197, 15121506, -25233470, 4694936, -23002234, -63432372, 15969225, -26503706, 26326002,
+3870839, 14697915, 12883828, -58030376, -41111964, -20365662, -12785581, -13492103, -23716272, -7380365,
+-39400956, -25100326, 18953154, -25660282, 48831632, -36335960, 3738232, 10059887, -3861713, 4290136,
+-2095407, 11662984, -11324218, -12212203, -2112587, 8737037, -1537598, 20936354, -19766514, 4452271,
+30601642, 9797357, 4589173, 15573015, 1931662, -12475269, -7940858, 24821690, 5568962, -39260832,
+-17403208, -31859530, -14499810, 42194296, 39355860, -40668508, -4498442, -46238544, -11142219, -3856881,
+10660646, 23163296, -37868728, 25246892, -32239636, -5469641, -21842594, 48581448, -9825811, 34259880,
+32057636, 71331888, -32869922, 29407642, 4787815, 27939300, 9760850, 21310018, -35756140, -32862942,
+47662864, 2303176, -1799591, -33777772, 38481296, -13052406, 19740206, -35553204, 74673376, -40039296,
+41539312, -50127100, 19789062, -37791416, 20855824, -34821984, 25789132, -22069690, 15146202, -12338367,
+8338679, -18787798, -11599633, -8921184, -2346126, 6584185, 1148904, 5297842, 428423, 5202279,
+-2842195, -9628780, -15175193, 6816650, 7529615, 2117956, 6896107, -5738077, 2681133, -4566087,
+2818036, 25597468, -6494528, -18514530, 2578591, -10534481, -19695646, 6146635, -10773925, 7740605,
+-9042517, 6408628, -17218524, 6849936, -22252226, 31101468, 4785668, -57204668, -25195888, -35458712,
+1929514, -8322036, -77232104, -35095788, -20277078, -41168336, -25653840, -77829104, -65706556, -12037183,
+27894738, -42905648, -25666724, -6378027, -36561984, -8515846, -3070365, -35390532, -9557913, 7046968,
+1577864, -46920372, -26770532, -26840862, -14992657, -16732119, -4955319, -32635308, 26874148, 17453674,
+38438348, 55988120, 48664664, 12287365, 51459612, 20509006, 9004399, -23156854, 17885318, 18611168,
+14668924, -6197638, -17915382, -8414378, 12712029, 22761716, 117880208, 15800111, 24100672, 17142288,
+48061220, 18474802, 42179800, 77001248, -37512244, -75856104, 9154723, 48088600, 86057184, 38024420,
+-74822624, 9839770, -18871012, 108656768, 79860624, 97182224, 89071720, -77888696, -51504176, 63425392,
+76182520, -22580790, -44769128, -53954988, 120296664, 80039400, -5525476, -104097656, 24522116, -4274566,
+-23455354, 28296318, 7315940, -9382356, -22682796, -739808, 15927886, 44486196, 31411780, -27064736,
+-11237782, -7518341, -6230387, 24954834, 17882096, 19268298, -272194, 10153840, 40736692, 27593554,
+5207111, 16091095, -11943230, 20159502, 26041998, 34547644, 44014824, 34377992, 26060250, -163209,
+-6766721, -9570261, -3775276, -20331302, -11695196, -9976135, -25400436, -32472100, -37142876, -63242856,
+-36386428, -23783918, -38579008, -70343512, -49387828, -41647760, -48752172, -57642220, -61092688, -21170430,
+-23972896, -33595772, -19364934, -21106544, -14496588, -19844896, -19596326, -19148038, -18945638, -55890948,
+89661200, 72392208, -62634044, 14002130, -1418413, 10076530, -2406256, -6205691, 23117124, -23205708,
+22583474, -9205726, 124554, 8892730, 7312719, 8019778, -18790, -13176423, -8354249, 14382235,
+-11798275, -1564442, 13962939, -7642895, -7870528, -11106249, -20156818, -20383378, 14937896, -7488276,
+5619965, -12861816, 2647311, -27196270, -4794794, 7320772, 17552458, -11202885, 3920768, 11835319,
+19225884, -4713727, 15945066, -12992276, 50530828, -18873696, 17519708, 2152316, 9991168, -9621264,
+13518410, -5546951, 36074504, -6063957, 11293617, -25289304, 33127082, -17550846, -1156957, -5105106,
+4989679, -10077067, 19988778, -23081692, 18802830, -21187610, 27380416, -28686086, 34670588, -23186918,
+-12135430, -14657113, -6988986, 1059783, -22429392, 14442364, -13194676, 12614319, 1290638, 17551384,
+6991133, 12015171, 22058416, 9032316, -7310035, 5480915, 5597416, -3511673, 4190814, -7241315,
+8161512, -4265977, 326418, -7126962, 15644955, -15631533, 1736241, -1856500, 12768938, -2867428,
+2901251, -3419331, 5355824, -7717520, 5899675, -6699075, -2837900, 11158862, 10989211, -3795677,
+-10209674, 6240588, 9806484, 9411884, -8745627, 7152731, -5884642, 5175436, 1939178, 1522566,
+-9356049, 9811853, -3345780, -13223667, 10919954, 8975945, -7709467, -2566780, -1132261, 1789928,
+-7387881, 10380936, -9762998, 2929168, -10705206, 9300215, -7476465, 7775502, -5807870, 9751723,
+-11068131, 11932493, -10848014, 5125507, -8821326, 8772471, -10209137, 7920457, -6080063, 10378252,
+-11773042, 12176232, -10335302, -21983790, -45426260, -49982144, 42490112, 10733660, -13156022, -67734320,
+-27228482, 37728068, 7690676, 27246198, 30393336, -10982768, -19103478, 889595, 7201587, 5575405,
+5037997, -11997454, -8805757, -6673843, 31675, 18301930, 9901510, -914828, 4120484, -5310190,
+-8862665, -5691906, -4639639, 295279, 5413807, -4204773, 6986838, 7295002, -24871618, -11094974,
+-11003169, 13235479, 9245991, -885300, -11573326, -15709380, 13648332, 2957622, 9155797, 12671764,
+-23057532, -15413027, 4220342, 18519362, 9393093, -26310432, -16163573, -21388400, -10159208, 5424544,
+4832375, -8850317, 9663676, -4034048, -9186398, 4042101, 8810589, -6643778, 2110440, -335544,
+-8202851, -834297, -2885144, -18718542, -18795850, -1246077, -20050518, -15142981, 658741, 5996848,
+-4350802, 22053584, 16383153, 9222369, 730144, -2218351, -9822053, 12171400, 6047314, 7059853,
+6954089, -6302328, -2566780, -568009, 3567507, -11705396, -14076755, -2047089, 6274411, 818728,
+7929047, 5385352, -7305203, 2324114, 4397510, 2951180, -2299955, 7771207, -9731322, -5949067,
+18129594, 10269267, -11022497, -8446590, -5564667, -10008348, 11054172, -470836, 1672353, 4930623,
+3363496, -217970, -306016, -7483981, 4823785, 2716567, 6590091, -3741990, -942745, 4103305,
+17636210, -43859132, -119562760, -45428944, 27266064, 57630408, 135865920, 79868136, 21749714, 28464358,
+-23499376, -43932684, -96171832, -64838972, -49699752, -16244640, 19762218, 52981104, 41190884, 51434380,
+49704584, 33699388, -11311870, -39169028, -33899640, -34845608, -27991912, -40399000, 12461848, -25531434,
+1924682, 18824842, 34791384, 19636590, 32570884, 42917460, 855235, 12816182, 1003949, -645319,
+-23916526, -3158412, -21274584, -41620380, -65672196, -36594732, -19995220, 5314485, 5061082, 39090644,
+54299660, 52166672, 62135292, 9049496, 40799504, 16158204, -3609920, -38183868, -37361384, -50787988,
+-66627292, -45459008, -51613160, -32715302, 261993, 16028281, 37202468, 59999084, 88428544, 70812200,
+64216204, 34744136, -13167296, -13075491, -34616900, -73785928, -56622700, -93243736, -61241940, -27159226,
+-20604032, 29145648, 56052008, 76715632, 54221816, 41464152, 25283936, 28739774, 25337622, -4039417,
+-28968480, -27709518, -43621300, -48371532, -38409356, -26340498, -24399172, -23283018, 10753524, 22667764,
+40219148, 47613472, 39157752, 34317324, 19684908, 672162, 1089848, 4420058, -28839632, -49107044,
+-20013474, -42891692, -48499844, -1661079, 12253005, 27064736, 28120224, 17882634, 29715804, 17179870,
+23796266, -5028333, -393526, -20816632, -12393665, -11077258, -13642427, -15788300, -12594455, 2056753,
+-5181341, -15032, 14536317, 19968914, 12717935, 10924786, -2667712, -3567507, -76236, -367220,
+-5999533, -7295002, -1095217, -4362613, -4267587, -2720862, 178241, -4603668, -1415729, 8649527,
+3157875, 3783866, 5685463, 4010963, 1215476, 197032, -997506, -1186485, -715112, -471373,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
8075613,
-5168993, 141734, 270583, 6361384, 1582696, -3165928, 2160369, 4234301, -2147484, -3509525,
--12622909, 675384, -4248260, 8429947, -4185446, 4228932, 3401614, -435402, 2748242, 4667556,
-1267552, 1095217, -2306398, -2765422, -2153926, -3485366, 3036542, 1823214, -1656784, 2752000,
--1905892, -2782065, -3343632, -1598802, -2644626, 236223, 30602, -478352, 5761162, -3325915,
-4709432, -1691143, -1215476, 3186329, -1978906, 1007707, -1980517, 3493956, -1043677, -9844065,
-2914135, 366146, 1190243, 4983236, 2542621, 381178, -1148367, -3237869, 8419747, -4439923,
-3258270, 1745904, -3520263, 3583613, 1553704, -4097399, 3242700, -4225711, 212064, -407485,
-3690988, 647466, 3857954, -1465121, -8750459, -1826972, -2141578, -4101694, -3748970, -3633542,
-2966212, 1366873, 1010391, 1870995, 1779190, 409096, 818191, -974421, 562104, -704912,
--396211, -2077154, -80531, -654446, 1557463, -103616, -565862, -270046, 113280, -1045825,
-318901, -420370, 535797, -291521, 47782, -1209033, -222801, -1524177, -1043677, 15338402,
--7602092, 830002, -481573, -469762, 3471944, -2784750, -11052025, -10186052, 4760435, -3237332,
--966905, 2573222, 537945, 2539936, 2833605, -4865124, 2587718, 1781338, -3459059, 3991635,
-6019934, -3974455, -1329292, 274341, -6560026, -2978023, 623844, 7772280, -1293322, -468151,
--6536940, 3816615, -33823, -5861557, -2530273, 1996086, -923955, 1101122, -5083094, -154082,
-302795, -2088428, 5347235, 1330366, 1167694, 5170604, -584652, 6725382, -2315524, -8627516,
-3427384, 3329137, -3069828, -1353989, -1098975, 1031866, 338766, 2360622, -2014340, 1550483,
--4733591, -244276, 3033321, -4517232, -572841, 2604361, 791885, -2377801, 1497333, -1808181,
-440234, 4367445, 1538135, -6078990, 7303055, 2727304, 2662343, -657130, 4187056, 4667019,
--2076617, -318364, 1003412, 1181116, 1438277, 1955821, -234076, 139050, 1445257, -234613,
-181999, 903554, 2260227, -389231, 2302639, -108985, 534187, 1173063, 285078, -695785,
--218506, 796716, 766115, -154619, -1067299, -3751117, -8999567, -1111323, 923955, 9847823,
--3808026, 8434242, 2085744, -331249, 486405, 7540889, -1802276, -2117419, -2232846, 5301601,
-10817949, 2800319, -7523172, -10201621, -14488535, 1850057, -3811784, -6119792, -3371013, -9465034,
--80531, -4416837, 675384, 4479114, 4730370, -5416491, -4844186, -3462281, 570694, -8039105,
--905164, 2440078, -3652333, -1363652, 808528, 3177202, -4522064, 1126892, 10535555, -483721,
--542777, -3940096, 4371203, -2006287, 360240, 3311957, 4348118, 6454262, -1065152, 913217,
--1984275, -133681, -1136556, 813359, 10126996, -11325292, 227633, 2145336, 5974837, -2542084,
--3007551, -710817, -2840047, 8063264, -4489852, -10679973, -756451, -3220689, -4471061, 2591476,
--10542534, 3840238, -1143535, -2971044, 195958, 7383049, -2217814, -2844879, -2881923, 3513283,
--3355443, -956704, 615254, -354872, 1270774, 67646, 490700, 2155537, 170188, 525597,
--559420, 1722282, 383326, -404801, -2006287, -1127429, -155156, -1102733, 2054068, 1200443,
--1174674, 1482301, 155693, 174483, -1088774, 519154, -475668, -5369, -16508244, 6166500,
--5163088, 6920266, -6218576, -564788, 4792110, -9549323, -1638530, 2910377, -2597382, 13910325,
--5835250, -1765232, -5566278, -4659503, 7151121, 7945690, 3080565, -9370008, -11300059, 10448045,
-1757715, -10599979, 3962644, 382252, 5018670, -3150359, 4789426, -6347425, 3097208, 10222022,
-4235912, 4371740, 2331630, 167504, -2595771, 2124935, 807991, -6995965, 127775, -2229088,
--5117991, -5135171, -1931662, 4026532, -7348689, 986769, -5311801, -565862, -798864, 2409477,
-4383014, 9223979, 3281892, -76236, 3991635, -4965519, -7252589, -154619, 1714229, 729608,
-8806830, -2026151, -1051193, -2837363, -1219234, 1220308, 4291746, -1188095, 1809792, -4389994,
-7136625, -1897839, -2456185, -1674500, 2333241, -3893388, 151398, 4362076, -281320, -1298154,
-682900, 3455838, 2786360, -583042, 2253784, -1929514, 1440962, -1183800, 584116, 2459406,
--842887, 1026497, 1104880, -1750199, 1755031, 1005022, 424665, -777926, -1508070, -418222,
-1962263, 1226750, -622233, 721555, -324270, 3092913, -235149, -929324, -8236137, -1909113,
--5340255, -530965, 10976326, 7021735, 4910758, -817118, -9630927, 1362578, -6331319, -10208600,
--3378529, 7375533, -5759551, -9050570, 2384244, 794569, -4501126, 985158, 5175436, 1437203,
--12069932, -3409130, 7609609, 8961986, 4476430, -9999758, -3619047, 4580046, -1692217, -2140504,
-664109, 3368865, 554051, 1254667, 10292352, 34897, 6231461, 4833986, -64961, -4613332,
--99858, -2715493, 6141803, -3489661, -5832566, 27917, 9627706, 554051, 9564355, 5162014,
-939524, 6185290, -1027571, 13274670, 1082869, 6573985, 7486665, 705448, -6167573, -934692,
--7381438, 3787624, -5286568, -2958696, -4873714, -3209414, -2333241, 2439542, 832150, 3665755,
--140660, -4212289, -3666292, 1385127, 6840809, -2012729, 1699733, -7321309, 2332704, 6345278,
-9735617, -3340411, -715112, 1619740, -3336116, -244276, 3219078, -975494, 5906654, 396748,
-1350230, 155156, 287763, 2182917, -1431298, -927713, -760746, -437013, 601832, 736587,
--1105417, 970663, -333934, -1172526, -1429687, 490700, -1357747, -892816, -1703491, 833761,
-1184337, -244813, 3328063, -2155537, 587337, -234076, -1886028, 3166465, -914291, -449898,
-9999758, -14951318, -2758443, 12517145, -6220724, 2287070, -9667971, 4254165, 17607218, -2384244,
-923418, -745714, -12453258, 1004486, -802085, 18690088, -5907728, -914828, 8159901, -5151277,
-11573326, -7809861, -1178969, -11807939, 13339632, 185220, -5267241, 171262, 4878009, -6206228,
-9268539, -985158, 8211978, -56371, 4294431, -12904229, -8322573, -6018323, -1951526, 7784628,
--11714523, 6257768, 4814122, 1636919, -4861903, -7047505, 16064251, 3201361, -1844152, 6245956,
--5703717, 3389803, -7587060, -7423314, -3119220, -4981089, 17347372, 5196374, -3475166, -5153424,
--6650757, 5470715, 4485557, 1652489, -6138045, -736050, -2503429, 7432978, 643171, 6015102,
--14055280, 7641284, -1259499, 389231, -1591285, 2480881, -6222871, -2864743, -9759776, -3169686,
-3505767, 5950141, 6239514, 2336462, 2251637, 1481227, -3516505, 2092723, 1392106, -240518,
--2371359, -3866008, 2036888, 1957431, -3007014, 1551020, 171799, -2430415, 1569274, 466004,
--1087701, -560493, 115427, 496069, -1845225, 1275068, 653909, -2799782, -699006, -1427540,
-190052, 2007897, 1323387, -277025, 44023, -1287953, 153545, -1187022, 6329171, 3114925,
-5215701, 1541356, 56371, -1989107, -8012799, -2496450, -5171141, 3144453, -308701, 12030740,
--10127533, -13042742, -3310346, 4041564, -4085051, -3172907, 10225243, 2034204, -5686537, -6548752,
--6790880, 11180337, -5679021, 7546795, -3686693, 8259222, -8302709, 1789928, 12687333, 4323959,
--17376364, 3958349, 348966, -2255395, -1586454, 1743757, -2115808, 1646583, -2874944, 1351304,
--750009, -7786776, 7714298, 7922067, -2420751, 8779987, -7572028, -1343788, -2215666, -3624416,
-9659918, -7028177, -12429635, -6979859, 2281165, -10139881, -9456981, -4744865, -3225521, -6510097,
--587337, 8242042, 8677981, 1294396, 9359271, 2900177, 1214939, 7088307, -7674033, -1381369,
--45097, -6307160, -109522, -6111202, 7298223, -2151242, -1388348, 6068789, -1167694, -1962800,
--1310502, 7253663, -938987, 2506650, -7147363, -2557653, 3924526, -4645544, 290984, 90194,
-741956, -3549254, -2472828, -1885491, 68183, -1961726, -2334852, 694174, -396211, -2097018,
--949188, 231391, -264141, -678605, -744640, -1221918, 332323, -3849365, -2698850, -2604361,
--2588255, -3758, -188442, -940598, 883690, 19327352, -9545565, -9188546, 6222871, 15707769,
-3053185, 14147085, 8074002, 12848395, 5691906, -2403571, -5835250, 4601521, -9605157, -7306276,
-10721312, 8968429, 22405234, -577673, 3116536, -8299488, 8653285, 3920768, -9987946, -2367601,
-12688944, -41339, -13982803, -5647345, -7892003, -2677375, 7798050, 7164543, -5304285, -2570001,
-9727027, -9424769, 4328254, 8199630, 9795747, -5226439, 8432095, -3558917, -12736189, 4504347,
-11689827, -3119757, 3375308, 2863133, -3962644, 1438277, 3503083, -3622805, 1304060, 9479530,
--5574331, -2932926, 8737574, -1860795, -1765232, -14474040, -5128191, -8732742, -14377940, -9666898,
-7218230, -4694936, -6146635, 12477417, 12456479, -3124052, 13397077, 5395016, 8801462, -2446521,
--6928319, 5818607, -7184944, -14323716, -8645769, -3659312, 7080254, 3297998, 11869142, 2129767,
--2561411, -1888712, -8053, 2095944, -3693672, 275952, -2148021, -272730, 2080375, -321049,
-330176, 3881577, -1399623, -653372, 3811784, -2763812, -1443109, -1815161, 1121523, -2028298,
-1385127, 900333, 586800, 2057289, 2558190, 1216550, 4624069, 619012, 3156264, 1132261,
-2368138, 2790655, -2415919, 2233920, 2322504, -1628866, -540629, -179315, -3375308, 1031866,
--9757629, -10438381, 14139032, -2354716, 32300302, -13302051, -6255083, -740882, 7881802, -4502200,
--4399657, -13305272, -15397458, 6956774, 1336809, 21259552, 6886443, -2165737, -2427194, 14124000,
-14413910, -11905112, 8651138, -11371463, 2990371, -4893579, -5866389, -3484829, 2419677, -1843078,
-7484518, 3761318, 8375186, -1035087, -4001836, -7856569, -1526861, 9167071, 815507, -12154221,
--1535451, 2972654, -5200669, 9650792, 8137890, 1708323, 2827699, -26550950, -10181220, 9299678,
--627602, 14927696, 4156455, 16824998, -1893544, -9074192, 8968965, -5064840, 6116034, 1112397,
-24480240, 20272246, 2384244, 5754183, -3344169, 8078297, 8534637, 9263171, 9977209, 16268799,
--305480, 2945811, -6234145, -5392869, 5078262, -7561827, -18843632, -13932874, -337155, 11735461,
--5915244, -10615549, -6130529, -5706401, -649077, -12678207, -523449, 2403571, -98784, -1670742,
--1264868, 1363652, 2732673, -300648, 2055679, -9451076, -5840619, -2985002, -6751689, 646393,
--2450279, -3873524, -2658048, -1547799, 3826816, 1626182, -3629247, 1236414, 8486319, 4435091,
--1818919, -2974802, -3896072, -2193655, -3146064, -6591701, 2420214, -2503429, -559956, 4895726,
-1554241, -889595, 904628, -28055264, 22111028, -651224, 2501819, -7783018, 12390444, -26637924,
--17080012, -5396627, -6851547, -660888, -23883776, 4656282, 475131, -657667, -10914586, -11110544,
-4500589, 15194521, 2342905, -20316270, -4413079, -16638166, 13117904, 8458401, 647466, -7375533,
--3493419, -3773129, 10808822, -1558536, -230318, -2359011, -14718316, 7628399, 10299332, -6179921,
--3302830, 8005819, -16018617, -11680164, -17671106, -5998459, 4434017, -11278047, -5388574, -491237,
--18298172, 5578626, 11275363, 19962472, 2868501, -1993402, 1219771, -13146358, -10308995, 15282031,
--1097364, -5822365, -3619584, -23420456, -12568148, 4574140, -4952098, -2738042, -1831804, 15311022,
--2662880, -14564234, 1162326, 11336566, -297427, -7146289, -146029, 778463, -6020471, -10213432,
-8016557, -18774376, -9293772, -143345, 9069897, -11475616, 7254200, 4804995, 6609418, 7042673,
--7209103, -1823751, 8643085, 1653026, -5285494, 4959077, 7153805, -6687801, 2486249, 6417755,
-6061273, 9521406, 643708, -2908230, -1625108, 1563905, 132070, 4188130, 3529926, 327491,
--862752, -3036005, -1030255, 2100776, 4256850, -7031399, 916976, -1329292, 2924336, 6799470,
-348429, 4765803, -2524367, 3170760, 3899830, 5738613, 4479651, 5602248, -396748, 3224984,
--1011465, 2741263, 14862197, 13649406, 4966056, 23115514, -10306311, -4798016, 3764539, -6029061,
--1759326, 7564511, 24768540, -3971234, 5051419, -132070, -1496259, -386010, 27315992, -13200582,
-14188961, -121870, -17865990, 5956583, -17722108, -10823854, 10290742, -9325985, 7292318, 418222,
-1018444, 12256763, 9833864, -14674830, -16627966, -12494597, -4156455, 4797479, 4854924, 1830193,
-3344169, -19993610, 3112778, -10719165, -25176562, 17211008, -4918275, 16187195, 17311940, 1032940,
-6497749, -9183177, -11183021, -19826642, 4611185, 18246632, 3260417, -7955890, 1125818, -3984656,
-2838974, -10657424, -8706436, -10640781, 1893007, -1252520, -3439732, 11778948, 10600516, 6400575,
-17140140, 1974074, -17929340, 23284092, -16920024, -5170604, -4204773, -4434554, 19517942, -3052648,
--27828166, 23778550, -9212168, -5611912, 6554120, 6083285, 18331994, 11739756, 7706782, 9003325,
-8133595, 6180458, 406948, 7750269, 9289477, 2528125, 183073, 9968619, -1697049, 1231045,
--9026948, -2099702, -2834679, -4636417, 820339, -644782, 6025302, 4432406, 1835562, -648003,
-2936147, 1335735, 2157684, 4123706, -1178432, -1438814, 907849, -1412507, 3059627, 1508607,
-1464047, 2489471, 1435593, 9247601, 6742562, 2024540, 21172042, 23928874, 5592585, -44973140,
-1632088, 12733504, -14840723, 9071508, 18011482, 914291, 4905390, 11395622, 8753680, 3427384,
-16190953, 3711389, -2223719, 30430918, 11326903, 4026532, 13157632, -9980967, 16136192, -11225971,
--961536, -1204202, -3700651, -16587164, 5609764, -11709155, 21671868, -1844152, -4234301, 31911070,
-4272419, 4748623, 10611254, 1299228, 6124624, -7036230, -13849122, -1470489, 9378598, -16311749,
-19077170, 17319992, 12715788, 3446711, 7577396, -11228118, -11775727, -18579492, -8247948, -9965398,
--9604084, 4581657, -1802813, -18182744, -8111583, 16247861, -261993, -14971182, 8580271, -694174,
--10281615, -24389508, 1722819, -37037652, 21630530, -12509092, 19675246, 1107028, 5496485, 799938,
--7295002, 10050760, 33265058, 3215320, 9490267, -5651103, -25906706, 2464238, -2785823, 19134616,
-11049877, -4291209, -905164, -3749507, -2037425, 6628745, -7406134, 6237903, -862215, -6332393,
--6554657, 7194070, -8030515, -7723962, -11137387, -2053531, -8004746, 2724083, 7024419, 685584,
--2017024, -4986457, 10251550, -9385577, 2537789, 1471026, 875100, -5405753, 4088809, 10318122,
--433792, -4762582, -1212255, 9449465, 9556302, -7385733, 9150428, -389231, -2374580, 1738388,
--575526, 10409390, 2637110, 12400107, 9224516, 24508694, -33712808, 13282723, -19748260, 16815870,
--8387535, -14176076, -4072166, -16325708, -6869800, -3662533, 5877663, 7486665, -4772246, 23529978,
--1122597, -4085588, -3177739, -21369610, -2377801, 56371, -17972290, 5725192, -15329812, -19337554,
--6267431, 11588359, -31987842, -21736292, -14527190, 1607928, -22437446, -19075024, -15448460, -7786776,
--6283001, -2983392, -15176804, 16149614, 2742337, -1619740, -11338177, -11668889, 21859236, -19096498,
--13067975, 5706938, 5798206, 7822209, -11107322, -15439334, -6540699, -2905546, 7126425, -11102490,
--4478041, -4572530, -13242458, -22557706, -28493350, 26871462, -29523068, -1687385, 2054068, -5193689,
--5486284, -26413512, 10179072, -6371047, -27688580, -680752, -6103686, 25983478, 6417755, 18478024,
-17601850, -5299453, 6877854, -2945274, -5055177, 12986907, -3314104, 7443715, -10009958, 734976,
--10080288, 8545911, 6701223, 1183264, 6133750, -2669859, -967978, 6476811, 3105798, -6408628,
-4706748, 10589242, -1644973, 2416993, -5786395, -13637595, -1433982, -1229434, -454730, -9474698,
--2048699, 1482838, -1363115, -5061619, 6456947, -1207960, -3632469, -11033234, -11126113, 143881,
-6135898, 3586298, 2389613, -761283, 8053601, 9096741, -4053912, 1955821, 2247879, -611496,
-2763812, -29996052, 34702264, 5495411, 3499862, -6017249, 17619030, 217433, 29011430, -7911330,
-19900730, 10729365, -28617368, 12403866, 4687420, 13586055, -2348273, -7619809, -11406896, -4192962,
-13962939, 30758408, 3238405, -4491999, -19476602, 7350300, -21065204, -3325915, 21221970, -19186692,
-9664, 1355599, -3335579, -7237557, -8187282, 34093988, -7388418, -8364986, -4158602, 7738994,
-11407433, 4294431, 536871, -6937446, -129923, 5111011, 20679194, -4744865, 29596620, 17327508,
-8796630, -7113540, 25792352, 29358786, -2449205, -7763691, -1570884, -9528385, 2887829, -9433896,
-14770393, 5060545, 21293910, 16498580, -26154740, -29410326, 35261144, 26250304, 4129611, -4968741,
--14038637, -19359028, -7617662, 19903416, -18742164, -20205136, -2890513, -5426155, -32413582, -7172596,
-7146826, -12498355, 1692754, -33823, 1673964, 2684892, 5340255, -9488656, -5927592, -9750113,
--3598646, 22549, 1405528, -5284421, -2596308, -872415, -16027207, -5239860, -7661685, -3434363,
--482110, 1501628, 603980, 2768643, -1089848, 689879, -8471286, 4940286, -7305203, -8251169,
-5879810, 2668785, -15057618, -1509144, -4765266, 7520488, 14201309, 439160, -12259447, 9909563,
--2866891, 2697776, 3330210, -3804804, -2945274, 1048509, -6606197, -8424578, 15343771, -12607340,
--4096862, -2668249, 3018825, 464930, -18937584, -54842976, 27453968, -26381836, 10731513, 39107824,
-5962489, -16411607, 11279658, 13620415, -5703717, -12418361, -2586107, -27022324, 8907762, -28085864,
--17058000, 11256572, 1154273, 4846334, -25374130, -5178120, -18318572, -15561740, -22601192, -7900593,
-7731478, -13471702, -13664975, 13259101, 1827509, -1130650, 4214974, -26004416, -1606855, -20228222,
-17299054, 4756140, -49475876, 12441983, 26504244, -5684389, 15807627, 13289703, 8974871, 7182259,
-25312390, 19830938, 722628, -18141404, -3841312, 20042464, 13011067, -16816944, 1198833, -19641422,
--6332930, 1299765, 14220100, 19028852, -35002908, -27697170, -15500000, 2919504, -10414759, -3875671,
-32541894, 5327370, 7694971, 25323664, -10302553, 5201206, -6482717, 25910464, -13220983, 1028645,
-2572149, 19185618, -5368709, -2073396, 7019587, 7853348, -1016297, 3816079, 12537010, 464930,
--409633, -551366, 12206834, -6231998, -3974992, 2900714, 5272609, 3547643, 1595580, 5719286,
--2697776, -23622, -5613523, -208306, -4181688, -670552, -5752035, 9316321, -7090454, -10449119,
-9780714, 6369437, 6726456, -7399155, -9458592, -75699, -16946330, -4716411, -8747238, -8946417,
-3415036, -183610, -9058086, 2943663, 3646964, -1096290, -5373004, -5262946, 3897683, 2333241,
-8035884, 18126372, 17517024, -30652644, 6363531, -6629282, -8096550, -7147363, 20492900, 10878078,
--15029164, -8576513, 15624017, -28187334, 1547262, 10222022, 15650861, -3366181, 3422015, -32883880,
--178241, -14576045, 10937134, 4025995, 18183280, -28916404, -14638322, -4216048, 3506841, -2496987,
-5585068, 2060511, 15705622, 29710436, -18875308, -24306830, 6340983, -25328496, -7530689, 10608032,
--18475876, -17883170, 1428614, 11026792, 15402290, 10984916, -6977711, -1544041, -32316408, -21729850,
-28561532, -19853486, 38576860, -16368120, 7796977, 5681705, -377420, -28377386, 35512400, -16545825,
--3448322, -6366216, 13816373, 26840324, -27192512, -15378667, 31742492, -23510650, -134218, -8843338,
-6412923, 36887864, 114354, -2654290, -22887344, 28237262, -9279814, 7392713, 9217537, -17750026,
--21589726, 2175938, 12292196, -6353867, 6248104, -50899656, -23884314, -7209640, -26108032, -12723841,
-4234838, 16995722, -3671660, -4534949, -13407277, 461709, -1383516, -9600863, -3469797, 6088116,
-379568, 8123394, 3628711, 7711614, -10148471, -1287417, -2229088, 10688563, 8214125, -6165963,
-19209242, 7295002, -7924752, 11901354, 3076270, -980326, -6270116, 4627828, -4578972, -3962107,
-8494372, 941672, -3957812, -3189550, 7087770, -1784022, 6388764, -1256815, 11749957, 2728378,
-1561221, 1737851, 17754858, -19897510, 5756330, 16793322, 16594680, 37465000, -23553064, 34431144,
--5883569, -22265110, -21807160, 5815386, 14461155, -9744744, -4434017, -15267535, -6211597, 29208462,
--20336134, -1717987, 23483270, -7358890, 14072460, -9130027, -4304094, 24939802, -736050, 1455457,
-24018530, 16747151, 5981816, -2745021, 20303384, 27730456, -27927488, 26074746, -24656870, 13315472,
--17766670, 3946001, 21453362, 7502234, -48325900, 21715354, 13870060, 52076, 24672976, -38241852,
--7318088, 26368952, 22366580, 3942243, 35087200, -18386754, 508417, -4248797, -5305895, 15234249,
-6298570, 26442504, 21936008, -16148540, 14583025, -30176978, -9335111, 2672544, -1464047, -2119566,
--4864588, -47356848, -26189636, -36517960, -24888798, 27588722, -16931298, -3868155, 3190624, 45016624,
--10645076, -15506979, 35989140, 22264036, -991064, 29351270, 4463545, 5778879, -13554917, 328028,
--11333882, -11744051, -6156836, 9711458, -11464341, -5726802, 5597953, 2433099, 9029632, -3312494,
--1496259, 11926050, 6785512, 998043, -9194988, -7122130, -1137093, -2545842, 6928319, 11918534,
--862215, 2390149, 2682207, -4366371, 28890098, 9268539, 2045478, 1509144, -9460202, 8039105,
--16900696, -892816, 14531485, -648003, -3873524, 10926934, 6014565, 3616363, -284542, -9027484,
-6231998, 7235410, 2222109, -11940009, 11514270, 29552060, -16320339, 11400454, 14586783, -21307332,
-2728378, -26204132, 9960029, -2808909, -13966697, 20740934, 605590, 32358284, -1990717, -24241332,
-40967544, -7379291, 4083977, 5640366, -38459820, 11562052, 33097018, 11788611, -14395657, -25196962,
-2617246, 6124624, 28303834, 18239116, -9231495, -5523865, -22056804, 193810, 32027034, -43550968,
-13211856, 30418032, -27381490, 10031433, 2844342, 10534481, 32039920, 10681584, 12367358, -5950677,
--31457952, 32556388, -6045167, -16670379, 68305552, 33590404, 17429514, 2973191, 1553168, -32159104,
--26351772, -11971148, 20084340, -697932, -18644454, -13182865, 25334402, -15489263, 17452062, 9882183,
--12503187, 18619756, 8542153, -27076548, -13508746, -15893526, 4463008, 16916266, -33838436, 11107322,
--34672736, -43840340, -27547920, 42005316, -14525579, 8664560, -9822053, -14622216, -2092723, -17425756,
--12048457, -9292699, 2149094, -16707960, 1968169, 9738301, -9127, -14716169, -10900090, 5096516,
-1664300, 18625126, 2507187, -21524228, -8342974, -12358232, 17643188, -3638911, -7132330, -17053704,
--215285, 10149545, 4660577, 11569031, -5891085, -1976759, 3441880, 11778411, 7549479, -401043,
--6718940, 8746701, -8228084, -936303, 4785668, -7746511, -204011, 13166222, -430034, 2374043,
--14571750, -10340134, -11089069, 6505802, -11798275, 41917808, 69837776, -11564199, -2267743, -57142392,
--19145354, -41991896, -27991376, 39072928, 2817499, 10683194, -32337882, 10592463, -28390270, -63919312,
-9381819, 30857730, -2489471, 4085588, 33158758, -43782896, 50151260, 25088514, 15686831, -24713778,
-33732672, 65077880, -12869333, 20206210, 49373332, 41783588, 73546480, 16107738, 26433376, 20141786,
-17941152, 63279364, -16378858, -7345468, 23318452, 13986024, -6808597, 34889628, 2145336, 7490423,
--20547124, -56196424, 2244657, 37814504, 5785321, 22992034, -40636296, 2746095, -54053236, 328565,
--58094264, 4239670, 40852656, -4929549, -17275970, -55199992, 72691248, 13458280, 4937065, 75487808,
--840203, -16918414, -12631499, 4166118, 15114527, -3867081, 335007, -5672578, -39707508, 23876260,
-9224516, -24625194, -15214922, 20002200, -23965380, -41282152, -20234664, 9358197, 39832064, -41324564,
-33170032, -1346472, 17719962, -6994354, 14469745, -9706626, -1415729, 3868692, 4090956, 13604846,
-12137041, 2756832, 25451976, -1079111, 10466835, 13629542, 7825431, 6091874, 6077379, 22182970,
-16350940, 8120173, -8590471, -3397856, 19051938, -25183004, 9772661, -14962592, 3623342, -5472325,
-17178796, 20004348, 40274444, 22683332, 37988448, 21940840, 7952669, 40088152, 41401876, 39583492,
-22552874, -6658810, 23600308, 26312580, 16106127, 31643172, 23734526, 98247, 7155416, 5467494,
-5153961, 9323300, 6672769, -8026220, -8174397, 430034, 6585796, -1926830, -21905944, -72838352,
-3676492, 98816464, 14500883, -19930796, -18915036, -44733696, -29227790, 1556926, 61727808, 11077794,
--41000832, -2719788, 16908750, 4295504, 1357747, -3788161, 10834055, -29113972, -10910828, 15314243,
-34238404, 34732328, -32383516, -12163884, 2583423, 4932770, 8771934, -37012416, 3700114, 6467147,
--9750113, 27260158, -195421, 31409632, 46779712, 22762252, 9754944, 20760798, -26423712, 24523726,
--21327196, 36479840, 63733020, 21420612, -34307124, -29189672, 28933048, 11023034, 54339928, 41293964,
-12552042, -9653476, -12078522, 2212982, 2917894, -18322868, 21188684, 19043884, 3608846, 49616536,
-33660196, -3894999, 24027120, 27296128, 12536473, 27314382, 1232656, -45952392, -5683316, -10547903,
--10696616, 53723600, 24508694, 9322227, 42252816, 25707526, 26958436, 33753076, 11475079, -32925220,
--16655346, -18254, -539018, -11094437, -9826885, -19627464, 12766253, 9035001, 19862076, -8451422,
-22153978, 7069516, 22935126, 16203301, -5025649, -10789495, 3477313, 7094212, 258235, 3561065,
-16803522, 2575907, 26265336, 36094904, 10102300, -1970316, 2614561, 26246546, 5849209, -6976101,
--6675990, 20987894, -1012539, -5149666, -3848828, 7658464, 14176076, 29327110, -14855218, 3385508,
--9627169, 3466039, 1142461, 24202140, -12349642, 12560632, 13973139, 9532143, -10471667, 4462471,
-16254304, 3314641, 477278, 17004850, 2146410, 10798085, 5934034, 2928631, -3047816, 4225711,
--2214593, 5015448, 1114007, 5290326, 901406, 9165997, 2126009, 4663798, 1585917, 7167227,
-1376537, 7495792, 1595580, -526134, -14556718, -69439960, -15044734, 38685308, 20892332, 84694608,
-4583267, -12350178, -38033008, -74446816, -81748264, -13673565, 35172560, 39511016, 25324200, -41345504,
--54573464, -468151, -6723235, 21676700, 56847652, 28869160, -5381057, -34214248, -46319612, -29198262,
-1860795, -28612536, 11072426, -23972896, -11807939, 37783900, 31343060, 27759448, 10886668, -39133596,
--10883984, -37452652, -28683940, -15182709, 21994528, -4352950, 23363548, 57309896, 60016264, -25272662,
-6912213, -44560824, -30288110, -21428128, -3831111, 7981123, 34821448, 36822364, 51210504, 36068060,
-13092671, -25684978, -23324894, -5952288, 16485695, -42178728, 3080029, 48491256, 39017092, -10623065,
-52867288, 46732464, 26651882, 48841832, -93347360, 21747566, -26499412, -29281476, 16081968, -15953119,
--1284732, 93679144, 79765592, 27713276, -24553254, -2753611, -37397892, -7951058, -50310712, -18499498,
--8393440, 18810346, 61791156, 31678068, 13025025, 10321343, -9853729, -31667330, -39782672, -609885,
--26227754, 20338280, -2193118, -919123, 23776938, 18556944, 7415798, 19222126, 7203197, 30465814,
--21725018, -1313723, -23961086, 9117679, -20819854, -20136954, 3498251, -6757594, 16798154, 28609850,
-1962263, -28447180, -46036680, -14965814, -26616450, 1995549, 12173011, 20769924, -17689896, -7483981,
-23580444, 2032593, -119969176, -136030736, -146262960, -147783376, -200384384, -11873974, -71760848, -23181012,
-26607860, 66992364, 94001800, 96944392, 198101616, 212397408, 172939008, 128635880, 136284688, 129933496,
-50126564, -19303730, -89222040, -89418000, -137203264, -44578540, -74321728, -55431920, -5118528, -116489712,
--33435246, -104045584, -28242094, -119557392, -112658064, -52023864, -92994096, -9478456, -46922516, -43421584,
--69514048, -46044732, -105008728, -74268576, -39382164, -36158792, -55503324, -34037616, -3990562, -44966160,
-15251966, 67266704, -52278340, 79570176, 47782584, 106202728, 106757320, 93149248, 114941376, 97045320,
-160286032, 159140352, 126995744, 169804752, 145689056, 222382672, 219070176, 258062032, 200934672, 216196848,
-235676128, 212816160, 254544464, 188563024, 275626304, 220218544, 84031032, 107686640, 28484224, 42661912,
--148963424, -125099512, -139563888, -148647200, -156631552, -202496976, -190563936, -209574000, -230017504, -270531392,
--226011376, -207048560, -230041136, -250996272, -299143392, -240052160, -265689360, -267551760, -202892640, -228866464,
--131945688, -163920112, -112076632, -104183560, -55062556, -40372156, -57016764, -9896678, 27023934, 129907192,
-123240864, 89353040, 101184064, 108689520, 147529984, 150953072, 163422976, 172185776, 148242400, 150448944,
-110693120, 156531696, 160251136, 121903520, 85893440, 66139812, 96290480, 95058360, 74155832, 44241920,
-24610700, 37218040, -9754408, 4849555, -17558900, -14202920, -71130024, -65409132, -47492136, -33187750,
--43352864, -33563020, -15937550, -13494787, -17284022, -32502702, -29576756, -15161235, -19100794, -13125420,
--10730976, 1491964, 4895726, 316754, -4364761, -1374926, 435402, -1043140, -1068910, -1057099,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+5168993, 141734, 270583, 6361384, 1582696, -3165928, 2160369, 4234301, -2147484, -3509525,
+-12622909, 675384, -4248260, 8429947, -4185446, 4228932, 3401614, -435402, 2748242, 4667556,
+1267552, 1095217, -2306398, -2765422, -2153926, -3485366, 3036542, 1823214, -1656784, 2752000,
+-1905892, -2782065, -3343632, -1598802, -2644626, 236223, 30602, -478352, 5761162, -3325915,
+4709432, -1691143, -1215476, 3186329, -1978906, 1007707, -1980517, 3493956, -1043677, -9844065,
+2914135, 366146, 1190243, 4983236, 2542621, 381178, -1148367, -3237869, 8419747, -4439923,
+3258270, 1745904, -3520263, 3583613, 1553704, -4097399, 3242700, -4225711, 212064, -407485,
+3690988, 647466, 3857954, -1465121, -8750459, -1826972, -2141578, -4101694, -3748970, -3633542,
+2966212, 1366873, 1010391, 1870995, 1779190, 409096, 818191, -974421, 562104, -704912,
+-396211, -2077154, -80531, -654446, 1557463, -103616, -565862, -270046, 113280, -1045825,
+318901, -420370, 535797, -291521, 47782, -1209033, -222801, -1524177, -1043677, 15338402,
+-7602092, 830002, -481573, -469762, 3471944, -2784750, -11052025, -10186052, 4760435, -3237332,
+-966905, 2573222, 537945, 2539936, 2833605, -4865124, 2587718, 1781338, -3459059, 3991635,
+6019934, -3974455, -1329292, 274341, -6560026, -2978023, 623844, 7772280, -1293322, -468151,
+-6536940, 3816615, -33823, -5861557, -2530273, 1996086, -923955, 1101122, -5083094, -154082,
+302795, -2088428, 5347235, 1330366, 1167694, 5170604, -584652, 6725382, -2315524, -8627516,
+3427384, 3329137, -3069828, -1353989, -1098975, 1031866, 338766, 2360622, -2014340, 1550483,
+-4733591, -244276, 3033321, -4517232, -572841, 2604361, 791885, -2377801, 1497333, -1808181,
+440234, 4367445, 1538135, -6078990, 7303055, 2727304, 2662343, -657130, 4187056, 4667019,
+-2076617, -318364, 1003412, 1181116, 1438277, 1955821, -234076, 139050, 1445257, -234613,
+181999, 903554, 2260227, -389231, 2302639, -108985, 534187, 1173063, 285078, -695785,
+-218506, 796716, 766115, -154619, -1067299, -3751117, -8999567, -1111323, 923955, 9847823,
+-3808026, 8434242, 2085744, -331249, 486405, 7540889, -1802276, -2117419, -2232846, 5301601,
+10817949, 2800319, -7523172, -10201621, -14488535, 1850057, -3811784, -6119792, -3371013, -9465034,
+-80531, -4416837, 675384, 4479114, 4730370, -5416491, -4844186, -3462281, 570694, -8039105,
+-905164, 2440078, -3652333, -1363652, 808528, 3177202, -4522064, 1126892, 10535555, -483721,
+-542777, -3940096, 4371203, -2006287, 360240, 3311957, 4348118, 6454262, -1065152, 913217,
+-1984275, -133681, -1136556, 813359, 10126996, -11325292, 227633, 2145336, 5974837, -2542084,
+-3007551, -710817, -2840047, 8063264, -4489852, -10679973, -756451, -3220689, -4471061, 2591476,
+-10542534, 3840238, -1143535, -2971044, 195958, 7383049, -2217814, -2844879, -2881923, 3513283,
+-3355443, -956704, 615254, -354872, 1270774, 67646, 490700, 2155537, 170188, 525597,
+-559420, 1722282, 383326, -404801, -2006287, -1127429, -155156, -1102733, 2054068, 1200443,
+-1174674, 1482301, 155693, 174483, -1088774, 519154, -475668, -5369, -16508244, 6166500,
+-5163088, 6920266, -6218576, -564788, 4792110, -9549323, -1638530, 2910377, -2597382, 13910325,
+-5835250, -1765232, -5566278, -4659503, 7151121, 7945690, 3080565, -9370008, -11300059, 10448045,
+1757715, -10599979, 3962644, 382252, 5018670, -3150359, 4789426, -6347425, 3097208, 10222022,
+4235912, 4371740, 2331630, 167504, -2595771, 2124935, 807991, -6995965, 127775, -2229088,
+-5117991, -5135171, -1931662, 4026532, -7348689, 986769, -5311801, -565862, -798864, 2409477,
+4383014, 9223979, 3281892, -76236, 3991635, -4965519, -7252589, -154619, 1714229, 729608,
+8806830, -2026151, -1051193, -2837363, -1219234, 1220308, 4291746, -1188095, 1809792, -4389994,
+7136625, -1897839, -2456185, -1674500, 2333241, -3893388, 151398, 4362076, -281320, -1298154,
+682900, 3455838, 2786360, -583042, 2253784, -1929514, 1440962, -1183800, 584116, 2459406,
+-842887, 1026497, 1104880, -1750199, 1755031, 1005022, 424665, -777926, -1508070, -418222,
+1962263, 1226750, -622233, 721555, -324270, 3092913, -235149, -929324, -8236137, -1909113,
+-5340255, -530965, 10976326, 7021735, 4910758, -817118, -9630927, 1362578, -6331319, -10208600,
+-3378529, 7375533, -5759551, -9050570, 2384244, 794569, -4501126, 985158, 5175436, 1437203,
+-12069932, -3409130, 7609609, 8961986, 4476430, -9999758, -3619047, 4580046, -1692217, -2140504,
+664109, 3368865, 554051, 1254667, 10292352, 34897, 6231461, 4833986, -64961, -4613332,
+-99858, -2715493, 6141803, -3489661, -5832566, 27917, 9627706, 554051, 9564355, 5162014,
+939524, 6185290, -1027571, 13274670, 1082869, 6573985, 7486665, 705448, -6167573, -934692,
+-7381438, 3787624, -5286568, -2958696, -4873714, -3209414, -2333241, 2439542, 832150, 3665755,
+-140660, -4212289, -3666292, 1385127, 6840809, -2012729, 1699733, -7321309, 2332704, 6345278,
+9735617, -3340411, -715112, 1619740, -3336116, -244276, 3219078, -975494, 5906654, 396748,
+1350230, 155156, 287763, 2182917, -1431298, -927713, -760746, -437013, 601832, 736587,
+-1105417, 970663, -333934, -1172526, -1429687, 490700, -1357747, -892816, -1703491, 833761,
+1184337, -244813, 3328063, -2155537, 587337, -234076, -1886028, 3166465, -914291, -449898,
+9999758, -14951318, -2758443, 12517145, -6220724, 2287070, -9667971, 4254165, 17607218, -2384244,
+923418, -745714, -12453258, 1004486, -802085, 18690088, -5907728, -914828, 8159901, -5151277,
+11573326, -7809861, -1178969, -11807939, 13339632, 185220, -5267241, 171262, 4878009, -6206228,
+9268539, -985158, 8211978, -56371, 4294431, -12904229, -8322573, -6018323, -1951526, 7784628,
+-11714523, 6257768, 4814122, 1636919, -4861903, -7047505, 16064251, 3201361, -1844152, 6245956,
+-5703717, 3389803, -7587060, -7423314, -3119220, -4981089, 17347372, 5196374, -3475166, -5153424,
+-6650757, 5470715, 4485557, 1652489, -6138045, -736050, -2503429, 7432978, 643171, 6015102,
+-14055280, 7641284, -1259499, 389231, -1591285, 2480881, -6222871, -2864743, -9759776, -3169686,
+3505767, 5950141, 6239514, 2336462, 2251637, 1481227, -3516505, 2092723, 1392106, -240518,
+-2371359, -3866008, 2036888, 1957431, -3007014, 1551020, 171799, -2430415, 1569274, 466004,
+-1087701, -560493, 115427, 496069, -1845225, 1275068, 653909, -2799782, -699006, -1427540,
+190052, 2007897, 1323387, -277025, 44023, -1287953, 153545, -1187022, 6329171, 3114925,
+5215701, 1541356, 56371, -1989107, -8012799, -2496450, -5171141, 3144453, -308701, 12030740,
+-10127533, -13042742, -3310346, 4041564, -4085051, -3172907, 10225243, 2034204, -5686537, -6548752,
+-6790880, 11180337, -5679021, 7546795, -3686693, 8259222, -8302709, 1789928, 12687333, 4323959,
+-17376364, 3958349, 348966, -2255395, -1586454, 1743757, -2115808, 1646583, -2874944, 1351304,
+-750009, -7786776, 7714298, 7922067, -2420751, 8779987, -7572028, -1343788, -2215666, -3624416,
+9659918, -7028177, -12429635, -6979859, 2281165, -10139881, -9456981, -4744865, -3225521, -6510097,
+-587337, 8242042, 8677981, 1294396, 9359271, 2900177, 1214939, 7088307, -7674033, -1381369,
+-45097, -6307160, -109522, -6111202, 7298223, -2151242, -1388348, 6068789, -1167694, -1962800,
+-1310502, 7253663, -938987, 2506650, -7147363, -2557653, 3924526, -4645544, 290984, 90194,
+741956, -3549254, -2472828, -1885491, 68183, -1961726, -2334852, 694174, -396211, -2097018,
+-949188, 231391, -264141, -678605, -744640, -1221918, 332323, -3849365, -2698850, -2604361,
+-2588255, -3758, -188442, -940598, 883690, 19327352, -9545565, -9188546, 6222871, 15707769,
+3053185, 14147085, 8074002, 12848395, 5691906, -2403571, -5835250, 4601521, -9605157, -7306276,
+10721312, 8968429, 22405234, -577673, 3116536, -8299488, 8653285, 3920768, -9987946, -2367601,
+12688944, -41339, -13982803, -5647345, -7892003, -2677375, 7798050, 7164543, -5304285, -2570001,
+9727027, -9424769, 4328254, 8199630, 9795747, -5226439, 8432095, -3558917, -12736189, 4504347,
+11689827, -3119757, 3375308, 2863133, -3962644, 1438277, 3503083, -3622805, 1304060, 9479530,
+-5574331, -2932926, 8737574, -1860795, -1765232, -14474040, -5128191, -8732742, -14377940, -9666898,
+7218230, -4694936, -6146635, 12477417, 12456479, -3124052, 13397077, 5395016, 8801462, -2446521,
+-6928319, 5818607, -7184944, -14323716, -8645769, -3659312, 7080254, 3297998, 11869142, 2129767,
+-2561411, -1888712, -8053, 2095944, -3693672, 275952, -2148021, -272730, 2080375, -321049,
+330176, 3881577, -1399623, -653372, 3811784, -2763812, -1443109, -1815161, 1121523, -2028298,
+1385127, 900333, 586800, 2057289, 2558190, 1216550, 4624069, 619012, 3156264, 1132261,
+2368138, 2790655, -2415919, 2233920, 2322504, -1628866, -540629, -179315, -3375308, 1031866,
+-9757629, -10438381, 14139032, -2354716, 32300302, -13302051, -6255083, -740882, 7881802, -4502200,
+-4399657, -13305272, -15397458, 6956774, 1336809, 21259552, 6886443, -2165737, -2427194, 14124000,
+14413910, -11905112, 8651138, -11371463, 2990371, -4893579, -5866389, -3484829, 2419677, -1843078,
+7484518, 3761318, 8375186, -1035087, -4001836, -7856569, -1526861, 9167071, 815507, -12154221,
+-1535451, 2972654, -5200669, 9650792, 8137890, 1708323, 2827699, -26550950, -10181220, 9299678,
+-627602, 14927696, 4156455, 16824998, -1893544, -9074192, 8968965, -5064840, 6116034, 1112397,
+24480240, 20272246, 2384244, 5754183, -3344169, 8078297, 8534637, 9263171, 9977209, 16268799,
+-305480, 2945811, -6234145, -5392869, 5078262, -7561827, -18843632, -13932874, -337155, 11735461,
+-5915244, -10615549, -6130529, -5706401, -649077, -12678207, -523449, 2403571, -98784, -1670742,
+-1264868, 1363652, 2732673, -300648, 2055679, -9451076, -5840619, -2985002, -6751689, 646393,
+-2450279, -3873524, -2658048, -1547799, 3826816, 1626182, -3629247, 1236414, 8486319, 4435091,
+-1818919, -2974802, -3896072, -2193655, -3146064, -6591701, 2420214, -2503429, -559956, 4895726,
+1554241, -889595, 904628, -28055264, 22111028, -651224, 2501819, -7783018, 12390444, -26637924,
+-17080012, -5396627, -6851547, -660888, -23883776, 4656282, 475131, -657667, -10914586, -11110544,
+4500589, 15194521, 2342905, -20316270, -4413079, -16638166, 13117904, 8458401, 647466, -7375533,
+-3493419, -3773129, 10808822, -1558536, -230318, -2359011, -14718316, 7628399, 10299332, -6179921,
+-3302830, 8005819, -16018617, -11680164, -17671106, -5998459, 4434017, -11278047, -5388574, -491237,
+-18298172, 5578626, 11275363, 19962472, 2868501, -1993402, 1219771, -13146358, -10308995, 15282031,
+-1097364, -5822365, -3619584, -23420456, -12568148, 4574140, -4952098, -2738042, -1831804, 15311022,
+-2662880, -14564234, 1162326, 11336566, -297427, -7146289, -146029, 778463, -6020471, -10213432,
+8016557, -18774376, -9293772, -143345, 9069897, -11475616, 7254200, 4804995, 6609418, 7042673,
+-7209103, -1823751, 8643085, 1653026, -5285494, 4959077, 7153805, -6687801, 2486249, 6417755,
+6061273, 9521406, 643708, -2908230, -1625108, 1563905, 132070, 4188130, 3529926, 327491,
+-862752, -3036005, -1030255, 2100776, 4256850, -7031399, 916976, -1329292, 2924336, 6799470,
+348429, 4765803, -2524367, 3170760, 3899830, 5738613, 4479651, 5602248, -396748, 3224984,
+-1011465, 2741263, 14862197, 13649406, 4966056, 23115514, -10306311, -4798016, 3764539, -6029061,
+-1759326, 7564511, 24768540, -3971234, 5051419, -132070, -1496259, -386010, 27315992, -13200582,
+14188961, -121870, -17865990, 5956583, -17722108, -10823854, 10290742, -9325985, 7292318, 418222,
+1018444, 12256763, 9833864, -14674830, -16627966, -12494597, -4156455, 4797479, 4854924, 1830193,
+3344169, -19993610, 3112778, -10719165, -25176562, 17211008, -4918275, 16187195, 17311940, 1032940,
+6497749, -9183177, -11183021, -19826642, 4611185, 18246632, 3260417, -7955890, 1125818, -3984656,
+2838974, -10657424, -8706436, -10640781, 1893007, -1252520, -3439732, 11778948, 10600516, 6400575,
+17140140, 1974074, -17929340, 23284092, -16920024, -5170604, -4204773, -4434554, 19517942, -3052648,
+-27828166, 23778550, -9212168, -5611912, 6554120, 6083285, 18331994, 11739756, 7706782, 9003325,
+8133595, 6180458, 406948, 7750269, 9289477, 2528125, 183073, 9968619, -1697049, 1231045,
+-9026948, -2099702, -2834679, -4636417, 820339, -644782, 6025302, 4432406, 1835562, -648003,
+2936147, 1335735, 2157684, 4123706, -1178432, -1438814, 907849, -1412507, 3059627, 1508607,
+1464047, 2489471, 1435593, 9247601, 6742562, 2024540, 21172042, 23928874, 5592585, -44973140,
+1632088, 12733504, -14840723, 9071508, 18011482, 914291, 4905390, 11395622, 8753680, 3427384,
+16190953, 3711389, -2223719, 30430918, 11326903, 4026532, 13157632, -9980967, 16136192, -11225971,
+-961536, -1204202, -3700651, -16587164, 5609764, -11709155, 21671868, -1844152, -4234301, 31911070,
+4272419, 4748623, 10611254, 1299228, 6124624, -7036230, -13849122, -1470489, 9378598, -16311749,
+19077170, 17319992, 12715788, 3446711, 7577396, -11228118, -11775727, -18579492, -8247948, -9965398,
+-9604084, 4581657, -1802813, -18182744, -8111583, 16247861, -261993, -14971182, 8580271, -694174,
+-10281615, -24389508, 1722819, -37037652, 21630530, -12509092, 19675246, 1107028, 5496485, 799938,
+-7295002, 10050760, 33265058, 3215320, 9490267, -5651103, -25906706, 2464238, -2785823, 19134616,
+11049877, -4291209, -905164, -3749507, -2037425, 6628745, -7406134, 6237903, -862215, -6332393,
+-6554657, 7194070, -8030515, -7723962, -11137387, -2053531, -8004746, 2724083, 7024419, 685584,
+-2017024, -4986457, 10251550, -9385577, 2537789, 1471026, 875100, -5405753, 4088809, 10318122,
+-433792, -4762582, -1212255, 9449465, 9556302, -7385733, 9150428, -389231, -2374580, 1738388,
+-575526, 10409390, 2637110, 12400107, 9224516, 24508694, -33712808, 13282723, -19748260, 16815870,
+-8387535, -14176076, -4072166, -16325708, -6869800, -3662533, 5877663, 7486665, -4772246, 23529978,
+-1122597, -4085588, -3177739, -21369610, -2377801, 56371, -17972290, 5725192, -15329812, -19337554,
+-6267431, 11588359, -31987842, -21736292, -14527190, 1607928, -22437446, -19075024, -15448460, -7786776,
+-6283001, -2983392, -15176804, 16149614, 2742337, -1619740, -11338177, -11668889, 21859236, -19096498,
+-13067975, 5706938, 5798206, 7822209, -11107322, -15439334, -6540699, -2905546, 7126425, -11102490,
+-4478041, -4572530, -13242458, -22557706, -28493350, 26871462, -29523068, -1687385, 2054068, -5193689,
+-5486284, -26413512, 10179072, -6371047, -27688580, -680752, -6103686, 25983478, 6417755, 18478024,
+17601850, -5299453, 6877854, -2945274, -5055177, 12986907, -3314104, 7443715, -10009958, 734976,
+-10080288, 8545911, 6701223, 1183264, 6133750, -2669859, -967978, 6476811, 3105798, -6408628,
+4706748, 10589242, -1644973, 2416993, -5786395, -13637595, -1433982, -1229434, -454730, -9474698,
+-2048699, 1482838, -1363115, -5061619, 6456947, -1207960, -3632469, -11033234, -11126113, 143881,
+6135898, 3586298, 2389613, -761283, 8053601, 9096741, -4053912, 1955821, 2247879, -611496,
+2763812, -29996052, 34702264, 5495411, 3499862, -6017249, 17619030, 217433, 29011430, -7911330,
+19900730, 10729365, -28617368, 12403866, 4687420, 13586055, -2348273, -7619809, -11406896, -4192962,
+13962939, 30758408, 3238405, -4491999, -19476602, 7350300, -21065204, -3325915, 21221970, -19186692,
+9664, 1355599, -3335579, -7237557, -8187282, 34093988, -7388418, -8364986, -4158602, 7738994,
+11407433, 4294431, 536871, -6937446, -129923, 5111011, 20679194, -4744865, 29596620, 17327508,
+8796630, -7113540, 25792352, 29358786, -2449205, -7763691, -1570884, -9528385, 2887829, -9433896,
+14770393, 5060545, 21293910, 16498580, -26154740, -29410326, 35261144, 26250304, 4129611, -4968741,
+-14038637, -19359028, -7617662, 19903416, -18742164, -20205136, -2890513, -5426155, -32413582, -7172596,
+7146826, -12498355, 1692754, -33823, 1673964, 2684892, 5340255, -9488656, -5927592, -9750113,
+-3598646, 22549, 1405528, -5284421, -2596308, -872415, -16027207, -5239860, -7661685, -3434363,
+-482110, 1501628, 603980, 2768643, -1089848, 689879, -8471286, 4940286, -7305203, -8251169,
+5879810, 2668785, -15057618, -1509144, -4765266, 7520488, 14201309, 439160, -12259447, 9909563,
+-2866891, 2697776, 3330210, -3804804, -2945274, 1048509, -6606197, -8424578, 15343771, -12607340,
+-4096862, -2668249, 3018825, 464930, -18937584, -54842976, 27453968, -26381836, 10731513, 39107824,
+5962489, -16411607, 11279658, 13620415, -5703717, -12418361, -2586107, -27022324, 8907762, -28085864,
+-17058000, 11256572, 1154273, 4846334, -25374130, -5178120, -18318572, -15561740, -22601192, -7900593,
+7731478, -13471702, -13664975, 13259101, 1827509, -1130650, 4214974, -26004416, -1606855, -20228222,
+17299054, 4756140, -49475876, 12441983, 26504244, -5684389, 15807627, 13289703, 8974871, 7182259,
+25312390, 19830938, 722628, -18141404, -3841312, 20042464, 13011067, -16816944, 1198833, -19641422,
+-6332930, 1299765, 14220100, 19028852, -35002908, -27697170, -15500000, 2919504, -10414759, -3875671,
+32541894, 5327370, 7694971, 25323664, -10302553, 5201206, -6482717, 25910464, -13220983, 1028645,
+2572149, 19185618, -5368709, -2073396, 7019587, 7853348, -1016297, 3816079, 12537010, 464930,
+-409633, -551366, 12206834, -6231998, -3974992, 2900714, 5272609, 3547643, 1595580, 5719286,
+-2697776, -23622, -5613523, -208306, -4181688, -670552, -5752035, 9316321, -7090454, -10449119,
+9780714, 6369437, 6726456, -7399155, -9458592, -75699, -16946330, -4716411, -8747238, -8946417,
+3415036, -183610, -9058086, 2943663, 3646964, -1096290, -5373004, -5262946, 3897683, 2333241,
+8035884, 18126372, 17517024, -30652644, 6363531, -6629282, -8096550, -7147363, 20492900, 10878078,
+-15029164, -8576513, 15624017, -28187334, 1547262, 10222022, 15650861, -3366181, 3422015, -32883880,
+-178241, -14576045, 10937134, 4025995, 18183280, -28916404, -14638322, -4216048, 3506841, -2496987,
+5585068, 2060511, 15705622, 29710436, -18875308, -24306830, 6340983, -25328496, -7530689, 10608032,
+-18475876, -17883170, 1428614, 11026792, 15402290, 10984916, -6977711, -1544041, -32316408, -21729850,
+28561532, -19853486, 38576860, -16368120, 7796977, 5681705, -377420, -28377386, 35512400, -16545825,
+-3448322, -6366216, 13816373, 26840324, -27192512, -15378667, 31742492, -23510650, -134218, -8843338,
+6412923, 36887864, 114354, -2654290, -22887344, 28237262, -9279814, 7392713, 9217537, -17750026,
+-21589726, 2175938, 12292196, -6353867, 6248104, -50899656, -23884314, -7209640, -26108032, -12723841,
+4234838, 16995722, -3671660, -4534949, -13407277, 461709, -1383516, -9600863, -3469797, 6088116,
+379568, 8123394, 3628711, 7711614, -10148471, -1287417, -2229088, 10688563, 8214125, -6165963,
+19209242, 7295002, -7924752, 11901354, 3076270, -980326, -6270116, 4627828, -4578972, -3962107,
+8494372, 941672, -3957812, -3189550, 7087770, -1784022, 6388764, -1256815, 11749957, 2728378,
+1561221, 1737851, 17754858, -19897510, 5756330, 16793322, 16594680, 37465000, -23553064, 34431144,
+-5883569, -22265110, -21807160, 5815386, 14461155, -9744744, -4434017, -15267535, -6211597, 29208462,
+-20336134, -1717987, 23483270, -7358890, 14072460, -9130027, -4304094, 24939802, -736050, 1455457,
+24018530, 16747151, 5981816, -2745021, 20303384, 27730456, -27927488, 26074746, -24656870, 13315472,
+-17766670, 3946001, 21453362, 7502234, -48325900, 21715354, 13870060, 52076, 24672976, -38241852,
+-7318088, 26368952, 22366580, 3942243, 35087200, -18386754, 508417, -4248797, -5305895, 15234249,
+6298570, 26442504, 21936008, -16148540, 14583025, -30176978, -9335111, 2672544, -1464047, -2119566,
+-4864588, -47356848, -26189636, -36517960, -24888798, 27588722, -16931298, -3868155, 3190624, 45016624,
+-10645076, -15506979, 35989140, 22264036, -991064, 29351270, 4463545, 5778879, -13554917, 328028,
+-11333882, -11744051, -6156836, 9711458, -11464341, -5726802, 5597953, 2433099, 9029632, -3312494,
+-1496259, 11926050, 6785512, 998043, -9194988, -7122130, -1137093, -2545842, 6928319, 11918534,
+-862215, 2390149, 2682207, -4366371, 28890098, 9268539, 2045478, 1509144, -9460202, 8039105,
+-16900696, -892816, 14531485, -648003, -3873524, 10926934, 6014565, 3616363, -284542, -9027484,
+6231998, 7235410, 2222109, -11940009, 11514270, 29552060, -16320339, 11400454, 14586783, -21307332,
+2728378, -26204132, 9960029, -2808909, -13966697, 20740934, 605590, 32358284, -1990717, -24241332,
+40967544, -7379291, 4083977, 5640366, -38459820, 11562052, 33097018, 11788611, -14395657, -25196962,
+2617246, 6124624, 28303834, 18239116, -9231495, -5523865, -22056804, 193810, 32027034, -43550968,
+13211856, 30418032, -27381490, 10031433, 2844342, 10534481, 32039920, 10681584, 12367358, -5950677,
+-31457952, 32556388, -6045167, -16670379, 68305552, 33590404, 17429514, 2973191, 1553168, -32159104,
+-26351772, -11971148, 20084340, -697932, -18644454, -13182865, 25334402, -15489263, 17452062, 9882183,
+-12503187, 18619756, 8542153, -27076548, -13508746, -15893526, 4463008, 16916266, -33838436, 11107322,
+-34672736, -43840340, -27547920, 42005316, -14525579, 8664560, -9822053, -14622216, -2092723, -17425756,
+-12048457, -9292699, 2149094, -16707960, 1968169, 9738301, -9127, -14716169, -10900090, 5096516,
+1664300, 18625126, 2507187, -21524228, -8342974, -12358232, 17643188, -3638911, -7132330, -17053704,
+-215285, 10149545, 4660577, 11569031, -5891085, -1976759, 3441880, 11778411, 7549479, -401043,
+-6718940, 8746701, -8228084, -936303, 4785668, -7746511, -204011, 13166222, -430034, 2374043,
+-14571750, -10340134, -11089069, 6505802, -11798275, 41917808, 69837776, -11564199, -2267743, -57142392,
+-19145354, -41991896, -27991376, 39072928, 2817499, 10683194, -32337882, 10592463, -28390270, -63919312,
+9381819, 30857730, -2489471, 4085588, 33158758, -43782896, 50151260, 25088514, 15686831, -24713778,
+33732672, 65077880, -12869333, 20206210, 49373332, 41783588, 73546480, 16107738, 26433376, 20141786,
+17941152, 63279364, -16378858, -7345468, 23318452, 13986024, -6808597, 34889628, 2145336, 7490423,
+-20547124, -56196424, 2244657, 37814504, 5785321, 22992034, -40636296, 2746095, -54053236, 328565,
+-58094264, 4239670, 40852656, -4929549, -17275970, -55199992, 72691248, 13458280, 4937065, 75487808,
+-840203, -16918414, -12631499, 4166118, 15114527, -3867081, 335007, -5672578, -39707508, 23876260,
+9224516, -24625194, -15214922, 20002200, -23965380, -41282152, -20234664, 9358197, 39832064, -41324564,
+33170032, -1346472, 17719962, -6994354, 14469745, -9706626, -1415729, 3868692, 4090956, 13604846,
+12137041, 2756832, 25451976, -1079111, 10466835, 13629542, 7825431, 6091874, 6077379, 22182970,
+16350940, 8120173, -8590471, -3397856, 19051938, -25183004, 9772661, -14962592, 3623342, -5472325,
+17178796, 20004348, 40274444, 22683332, 37988448, 21940840, 7952669, 40088152, 41401876, 39583492,
+22552874, -6658810, 23600308, 26312580, 16106127, 31643172, 23734526, 98247, 7155416, 5467494,
+5153961, 9323300, 6672769, -8026220, -8174397, 430034, 6585796, -1926830, -21905944, -72838352,
+3676492, 98816464, 14500883, -19930796, -18915036, -44733696, -29227790, 1556926, 61727808, 11077794,
+-41000832, -2719788, 16908750, 4295504, 1357747, -3788161, 10834055, -29113972, -10910828, 15314243,
+34238404, 34732328, -32383516, -12163884, 2583423, 4932770, 8771934, -37012416, 3700114, 6467147,
+-9750113, 27260158, -195421, 31409632, 46779712, 22762252, 9754944, 20760798, -26423712, 24523726,
+-21327196, 36479840, 63733020, 21420612, -34307124, -29189672, 28933048, 11023034, 54339928, 41293964,
+12552042, -9653476, -12078522, 2212982, 2917894, -18322868, 21188684, 19043884, 3608846, 49616536,
+33660196, -3894999, 24027120, 27296128, 12536473, 27314382, 1232656, -45952392, -5683316, -10547903,
+-10696616, 53723600, 24508694, 9322227, 42252816, 25707526, 26958436, 33753076, 11475079, -32925220,
+-16655346, -18254, -539018, -11094437, -9826885, -19627464, 12766253, 9035001, 19862076, -8451422,
+22153978, 7069516, 22935126, 16203301, -5025649, -10789495, 3477313, 7094212, 258235, 3561065,
+16803522, 2575907, 26265336, 36094904, 10102300, -1970316, 2614561, 26246546, 5849209, -6976101,
+-6675990, 20987894, -1012539, -5149666, -3848828, 7658464, 14176076, 29327110, -14855218, 3385508,
+-9627169, 3466039, 1142461, 24202140, -12349642, 12560632, 13973139, 9532143, -10471667, 4462471,
+16254304, 3314641, 477278, 17004850, 2146410, 10798085, 5934034, 2928631, -3047816, 4225711,
+-2214593, 5015448, 1114007, 5290326, 901406, 9165997, 2126009, 4663798, 1585917, 7167227,
+1376537, 7495792, 1595580, -526134, -14556718, -69439960, -15044734, 38685308, 20892332, 84694608,
+4583267, -12350178, -38033008, -74446816, -81748264, -13673565, 35172560, 39511016, 25324200, -41345504,
+-54573464, -468151, -6723235, 21676700, 56847652, 28869160, -5381057, -34214248, -46319612, -29198262,
+1860795, -28612536, 11072426, -23972896, -11807939, 37783900, 31343060, 27759448, 10886668, -39133596,
+-10883984, -37452652, -28683940, -15182709, 21994528, -4352950, 23363548, 57309896, 60016264, -25272662,
+6912213, -44560824, -30288110, -21428128, -3831111, 7981123, 34821448, 36822364, 51210504, 36068060,
+13092671, -25684978, -23324894, -5952288, 16485695, -42178728, 3080029, 48491256, 39017092, -10623065,
+52867288, 46732464, 26651882, 48841832, -93347360, 21747566, -26499412, -29281476, 16081968, -15953119,
+-1284732, 93679144, 79765592, 27713276, -24553254, -2753611, -37397892, -7951058, -50310712, -18499498,
+-8393440, 18810346, 61791156, 31678068, 13025025, 10321343, -9853729, -31667330, -39782672, -609885,
+-26227754, 20338280, -2193118, -919123, 23776938, 18556944, 7415798, 19222126, 7203197, 30465814,
+-21725018, -1313723, -23961086, 9117679, -20819854, -20136954, 3498251, -6757594, 16798154, 28609850,
+1962263, -28447180, -46036680, -14965814, -26616450, 1995549, 12173011, 20769924, -17689896, -7483981,
+23580444, 2032593, -119969176, -136030736, -146262960, -147783376, -200384384, -11873974, -71760848, -23181012,
+26607860, 66992364, 94001800, 96944392, 198101616, 212397408, 172939008, 128635880, 136284688, 129933496,
+50126564, -19303730, -89222040, -89418000, -137203264, -44578540, -74321728, -55431920, -5118528, -116489712,
+-33435246, -104045584, -28242094, -119557392, -112658064, -52023864, -92994096, -9478456, -46922516, -43421584,
+-69514048, -46044732, -105008728, -74268576, -39382164, -36158792, -55503324, -34037616, -3990562, -44966160,
+15251966, 67266704, -52278340, 79570176, 47782584, 106202728, 106757320, 93149248, 114941376, 97045320,
+160286032, 159140352, 126995744, 169804752, 145689056, 222382672, 219070176, 258062032, 200934672, 216196848,
+235676128, 212816160, 254544464, 188563024, 275626304, 220218544, 84031032, 107686640, 28484224, 42661912,
+-148963424, -125099512, -139563888, -148647200, -156631552, -202496976, -190563936, -209574000, -230017504, -270531392,
+-226011376, -207048560, -230041136, -250996272, -299143392, -240052160, -265689360, -267551760, -202892640, -228866464,
+-131945688, -163920112, -112076632, -104183560, -55062556, -40372156, -57016764, -9896678, 27023934, 129907192,
+123240864, 89353040, 101184064, 108689520, 147529984, 150953072, 163422976, 172185776, 148242400, 150448944,
+110693120, 156531696, 160251136, 121903520, 85893440, 66139812, 96290480, 95058360, 74155832, 44241920,
+24610700, 37218040, -9754408, 4849555, -17558900, -14202920, -71130024, -65409132, -47492136, -33187750,
+-43352864, -33563020, -15937550, -13494787, -17284022, -32502702, -29576756, -15161235, -19100794, -13125420,
+-10730976, 1491964, 4895726, 316754, -4364761, -1374926, 435402, -1043140, -1068910, -1057099,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-2838974,
-5248450, -212064, 2153926, 833761, -4591320, -3453691, 1197759, -3111704, -4616553, 2632278,
--546535, 686658, -2649995, 1946157, 187905, -4090956, -185757, 4719096, 3835406, -2937758,
--5174899, -4716948, 694174, -1088237, -924492, -4014721, 4366908, -1163399, 1230508, -1832340,
--1111323, -402653, 1656247, -1189706, -2298881, -8810589, 2995740, -671626, 2847027, 1686848,
-1196685, -231391, 5872831, 1099512, 1173600, 815507, -3004867, -1925756, -278636, 427349,
--3008088, -716186, 1170916, -418222, -2842195, -1501091, 104690, 2775086, -4351876, -5907728,
--7315403, 2585570, 4191351, 419296, 3466576, 2538863, 486942, -6710887, -174483, -1759863,
--2352568, 111132, 374736, 2773475, -598611, 3949223, 2799782, -1256278, -4016331, -1959042,
--717260, 1020055, 307090, 1290638, 1504849, 2755759, -58519, -270046, -1300301, -1132261,
--1076426, -485331, -2240899, -1064615, -1267015, 690953, -148176, -288300, -688805, 1044214,
--1577327, 3165391, 4140349, -963683, -63351, -5941014, 5283884, -6803765, 2617246, 11435887,
--2460480, -4269735, 641024, 5961952, 625992, -1708860, -836982, -1722282, -1091995, -5389110,
--2103997, 2640331, -4280472, -2453500, 233539, -248571, 4711043, -2893197, 872952, -1126892,
-1022739, -611496, -2765422, 5215701, 8880919, 2240899, -514859, -1677722, 9612137, 437550,
--4031364, 258772, -7182259, 16106, 3737159, -5516349, -707059, 1171989, -4405563, -1332514,
-5059472, 712965, -550830, 4881231, -3259343, -5149666, 2903935, 1923072, -3597035, -1786706,
--3850438, -4512400, -4853850, -2688113, -2777770, 3924526, 2789581, 765041, -116501, -2731599,
-2521683, -595390, -1866163, 3325379, 3674882, -2629594, -529355, -1245541, -1679869, 513249,
-4211216, -2131915, 940061, 4015795, 2653216, -924492, 1015223, -704912, -114890, 1701344,
--245350, 25233, 1731409, -1856500, 748935, 380641, -597537, -1710471, 1306207, 149787,
--767189, 402116, 184684, -613107, 192200, -314069, -572304, -998580, 5847061, -8523899,
--5627481, -2029909, -1240172, 287763, 1096290, -8128226, 5644124, -2567854, 1844152, 1162862,
-1878511, 3549254, -25770, -1177358, -2705293, 5849746, -462783, 3802120, 7225209, -1569274,
-6143414, 5239323, -4543539, 3035468, 3072512, 3295314, -8017094, -798864, 478889, -2521683,
--5042829, 76236, 5883032, -1383516, -2520609, -1981054, 1799054, 5452998, 2693481, -2789581,
--46708, -2301029, 230854, -733903, -2719251, 5092221, -6585259, -5443334, -4998268, 1542967,
--703301, -182536, -6143951, -6489696, 1579474, -139586, 366146, -642635, -345745, -4845260,
--2866891, -5297306, 1036698, 4534412, -1415192, 4023311, 753230, 3576634, -7733089, 30065,
-1116155, -2582886, -1167694, 1029718, -2756295, -341987, 2024540, 2184528, -1716376, -5175436,
-4552666, 710817, 110595, -1146219, -661962, -4144644, 181999, 282394, -729608, 744103,
-133144, -1464584, 623844, 667331, -418222, -599148, -206695, -250182, -280247, 224949,
-2179696, 33286, -654983, 1801202, 804770, -145492, -601832, -181999, -2920578, 720481,
--586263, 5018670, 7982734, 506269, -3035468, -6788196, 3106335, 2015950, 1883880, 8456254,
--5528160, 195421, 1030255, -1532767, -2765422, 1250909, 533650, 5097590, 11246909, -989990,
-1947231, 4702989, -2038499, 4195110, 7310571, -5100811, -189515, -1900523, -104690, 3261491,
--5692979, 6152541, 1373316, 72478, 3244848, -532576, 4492536, -2433636, -1032403, -1263257,
-7056632, 3289408, 4495220, -850404, 3704409, -6845641, 7917236, -3062849, 3115462, -7206419,
-2911451, 5234492, 9649181, 3543885, 1804960, -6345814, -2427730, 1755031, -4801774, -5713917,
--1352378, 11399380, 13202193, 2533494, 3109020, -3763465, -1669132, 7383049, 1443109, 3234647,
--442919, 2249489, 1981591, -972810, 1691143, -1076963, 1275605, 892816, 4665945, 3797288,
--5851356, 5219996, -1709397, 2685965, -1840930, 1975148, -1553168, -2173254, -38118, -3471407,
-548145, 2546916, 581431, 1315334, -1231582, -1532230, -788663, 639413, 111669, 584116,
--222801, 406411, -979789, 369904, 376883, 1855963, 111669, 1265405, -592169, 1133871,
-5567888, 156766, 695785, 7811472, -6576132, -7741679, 12072079, -3124052, -1929514, 7894687,
-4726612, 586800, -13843753, 14963129, -2735894, -1886028, -1567126, -810138, 599148, 929860,
-4682588, 6984154, 4602595, -995359, 7835094, 4974109, 2521683, 2114735, -2874407, 3582540,
--5622112, 4503810, -852014, 1891396, -4757750, -6914361, 896574, -865436, 2548526, 4188667,
--2048699, -6616397, -3858491, 1644973, -7945153, 5157182, 1609002, -12670154, 5743445, 892816,
-3290482, 839129, 1985349, 2172180, -504122, -3558917, -3091840, -8637716, -6345814, -3512747,
--4405563, -952946, 533650, -6314676, -8951249, -1313186, 5851893, 10077067, -493384, -6665789,
-1132261, -10496900, 743029, -689342, -4118337, 8909910, 8370892, 2842195, -300648, -2114198,
--610959, -4631586, 2215666, 8547522, 4575214, 7070590, 1442572, -3175592, 3295314, 1737314,
--215822, 709743, 404801, 243739, 1541893, 1604170, 1529545, -438624, 2669322, 754841,
-5250061, 2080375, 1421097, 285078, 468151, 1418950, -358093, 2492692, 921271, 989453,
--1381369, 3091303, 779000, -1047972, -439697, -13585518, 7031399, -2587718, -4828617, -3828427,
--4618701, -6455336, 12463995, -15857019, 3750043, 3840238, 5199595, 7758859, 1282585, 2160369,
-2928631, 2106145, 1625108, 2632815, 6831683, 1237488, -3745748, -1611, -649077, -4878546,
--4407710, 2266669, 4581120, 4923643, 677531, 3511673, -8254391, -956704, -107374, -450972,
--7821136, -4687957, -2809446, 5122822, 4604742, -78383, -8560944, 49392, -4632122, -3321084,
--1674500, -2305324, 5394479, 7326678, 2234994, 7621420, -12183748, -8519068, 4067334, 2490007,
-425202, 1612760, 808528, -3954054, -7659538, -5300527, 4076998, -3435437, 6228777, 6121939,
--2220498, 5800890, -9220221, -4565550, -2586107, -3115999, 686121, 16811038, -2405719, 4753455,
--2671470, -2435247, -1701344, 3566434, 3836480, -447213, 3099356, 2108292, -5232881, 1444183,
-413391, 2248952, 500901, 273804, -2632278, 1692217, -97711, 1714766, 561567, 886374,
--476741, -1006096, 514322, -1534377, -2194728, 747324, -1195612, -1899986, -548145, 565325,
-762894, 746787, 836445, -113280, 604517, 1187022, 1006633, 330712, 303869, -397284,
--623307, 1107028, 13911936, -2665564, 388158, 5863704, -13227426, 9106404, 4622459, -7451769,
-8289287, 9273371, 3118683, -14281840, 8843338, 392990, -1339493, 7242926, 7823283, -434865,
--2299418, 236760, -5537824, 5198521, -3024194, -5275831, -11108933, 2605435, -12075301, 3253438,
--2953327, -1342714, 3492882, -9837086, -4037269, 8195335, -707059, -3812857, 5018133, 341987,
--4289062, 3717294, 1352378, 373662, -1834488, 2837363, -5986111, -619012, -8745627, 8291971,
-8288750, -10299332, 6897718, -7344931, -2768643, 7128035, 9961640, -712428, -4951024, 3019362,
--617938, 1445257, -12159052, -9609989, 1928977, 1736777, -2623151, -2490544, 3163780, -365072,
--4304631, 5153961, -4963372, 1752884, 3729642, -841814, 5844914, -5840082, 5910412, -30602,
-9398999, -3211025, 2858838, 5311801, 607738, -3357054, -950798, -339302, 2762201, -909996,
--4411469, 3735548, 817118, -1843615, 1654099, -1236951, -48318, -1729798, -490700, 1282585,
--1472637, 963146, 2582886, -1325534, 634581, 188442, -845572, 1639067, 443992, 1396401,
--2067490, 853088, -2116882, -2420751, 912681, -377957, 995896, 1034013, 315143, 3847217,
-1676111, -5063767, 9760850, -3343632, 4748623, -9858561, -700080, -2603824, -8950175, 309775,
-6319508, 11232950, 14697378, -8374113, -236223, -10437307, -782221, -6648073, 5931887, -6225018,
--12307766, 794569, -7888781, -741419, 10202158, -6052146, -6037651, 10947872, 336618, 1879048,
--1147293, -6441914, 2732673, 2333778, 13194140, -9108552, 6469832, -7725573, 1923072, 2559264,
--7622493, -4694936, 12669617, 3462281, -9428527, -2437394, -3451543, -7570954, -321586, 12418361,
-6651294, 8640400, 1973001, 3452617, -11339787, -1643899, 14414447, 1138166, -8963060, 4790499,
-4763656, -6579890, -5729487, -3173981, -14814416, -2288681, 4395362, 7313793, 13001403, -3263638,
--7117835, -2062658, -4431870, 10553808, -3931506, -9222369, -6285148, -2727841, -1262184, -2860985,
--5332202, 11490111, -6592238, -805306, 1057099, 544924, 3748970, 2335389, -3390340, -4552129,
-3411815, 4096862, 4333085, -998043, 1957968, -1207423, -721018, 1933809, -430570, -2021856,
-2039573, 952409, -63351, -1326071, -446677, -3365644, 308701, -839666, -2893734, -1481227,
-1309428, 1138166, 49392, 1337346, 6324340, -21955872, -15133854, -9700721, 1158031, -18396418,
-2749316, 13674639, 4524748, 14079977, -7555921, -3484829, -1529545, -7318625, -2739116, -10986526,
-19526532, 11148124, 7784628, -16497506, -3189013, -5310190, -10734197, 3711926, -1130113, 3480534,
--13332652, -918049, -1195075, -9575630, 5569499, 1584306, 9784472, 3934727, -8182987, 12890271,
--6096169, 5230734, 2714956, -110059, 10201084, 9479530, 2391760, -12303471, 15006079, -7598871,
-10759430, 4903242, -5568425, -6194954, 12065100, 1768453, -1406602, 3138547, -10192494, -3656091,
-5877126, -855772, 10669236, -6171331, -9647033, 3951370, 2729452, 324807, 10610717, 4569845,
-2157147, -6773701, 7721815, 3024731, -5919539, -818191, -635655, -3406983, -2476049, -2873870,
-4644471, 11650636, 19640348, 9123584, -3313567, 992674, -4509179, 4514548, 6043019, -100395,
--5018670, -2956011, -6550899, 4035659, -3579318, 954557, -3095061, -852551, 4357781, -522912,
-471910, -3992172, 4261682, -2254858, -1912871, 2335389, -3920232, 4289599, -3003793, 2294050,
--2123325, -406411, 961536, -2930778, -2081449, -1288490, -4769025, -4794794, -2102923, -257161,
--1690070, 3787088, 3499862, 2041183, -13863081, 18636400, 7727720, 21311090, -9553618, -11442867,
-20308216, 690416, -2091649, 4455492, 1562831, 11891691, 15843597, 2071785, -14704894, -23554674,
-3315715, -6497212, 1448478, 673773, -10188199, -645319, 12846247, 10502806, 8264591, 16534550,
--3720516, 14011257, -9824201, 12409234, 4094178, 9616432, -6427956, 16935056, 9759239, 12368432,
--19602768, -86436, 17861696, 10169946, 3257196, -4225174, 26861800, 11340861, -10508711, -6479495,
-6564858, -10231686, -978179, -4907000, 1403381, 22551800, 23629836, 17156246, 6317360, 207232,
-8908836, -7827041, -1959042, 9683004, -10001368, 23880018, 14904073, 11725798, 4639639, -908922,
--11250130, 14183056, 536871, 12373264, -5500780, 4814659, -7931731, -4548907, -180926, 6246493,
--9333501, 22233972, 9601936, -2432025, -10865194, -20928838, 10329933, 1848447, -6784975, -627602,
-2621541, -4879083, 3070365, 8098698, -1371705, -2765422, 281320, -1697586, -2056216, 1842541,
--2500745, -1837709, -3437048, 3639448, 2094333, -5244692, 2986076, 3390877, 3300146, -93952,
--1529545, -579284, -13422, 1761474, -423054, 1305133, -3089155, 5142150, -6415608, 118112,
-2246268, 5763309, 22985592, -1382980, -11419244, -5169530, -8962523, -380641, -14354318, 3673808,
--12376485, 6943352, 1541893, -3366718, -9752260, -11631308, -17627620, -18267570, -5462125, 15778099,
--1233729, -10353019, 4206384, -9874130, 7495792, -8441221, 14761266, -15257334, 3504157, -10833518,
--11105712, -2067490, 1824287, -3263102, 6937983, -21942988, 8763881, 2070174, -5335960, -1557463,
--1512902, -10881837, -17440788, -18671296, 13342853, 6584185, -7346005, 11558294, 308701, -4884452,
--13771276, -28849832, -23783918, 13390097, -4212826, 257698, -2918430, -1400159, -1444183, -19556596,
-7346542, -23095112, -12368432, 1009854, -798864, -4977330, -3175592, -3120294, 23695334, -7406671,
--7831873, -6501507, 24793236, -4540318, -10074383, 15708306, -12453258, -7923141, -10279467, -8645769,
--32168768, 6367826, 5046587, -10810970, -1654099, 7436199, -4282620, -2950643, -6079526, -5548561,
--877247, -2935610, -2946885, 11129334, -1032403, -1272384, 7378754, 8839043, -4516158, -3297998,
--845572, -1641214, 2156074, -5505075, 497142, 562104, 892816, -3300682, -4113505, -1704565,
-3524558, -1553704, -3094524, -473520, 2182380, -7076496, -1242319, 3910031, 122943, -2856690,
-3628174, -2500745, 3198677, -73551, 3049964, 3342022, 3337727, -6189585, -769336, -33990908,
--25667262, -14683419, 29677150, -1512365, -4947266, -3626563, -2340757, -9780714, 10502806, 8119099,
-26560614, -24512988, -4779225, 7548405, -17931488, -7176354, -6344741, 30595200, -448824, 7052337,
-15573551, 1408749, 14988362, -16185584, -20344186, -13614509, -3745212, -3461207, 2427194, 9560060,
--471373, -17136920, -11825119, -878321, -9149891, -19225348, 17157320, -2869575, -9590662, -122407,
-5507759, 5449777, 3203509, -8688719, 1748052, -17877802, -7829189, -26512834, 12455405, 8008504,
--3138547, -8325257, 9796284, -13210783, -3379066, 28600188, -3016141, 24238112, 10838350, 6498286,
--6352257, -30443802, -12666932, -5856725, -16396038, -12256226, -7819525, 13625784, -6236830, 310311,
--12241731, 25958246, -9290551, 10707353, 7254737, -17711908, -7137162, 3905736, 16402480, 29967060,
-24919400, 10801843, -1713692, 10289131, 62814, 894964, -5891622, 3027952, -6090801, -4224637,
--128312, 1764695, -3685619, -4868346, -8796630, -6991670, 3709241, 2881386, 3018288, -3233574,
--1381906, -17439714, -366146, -8042327, -3817152, 3159485, 2379412, 1008780, 7166153, 179315,
--1065152, 719407, -2959233, -12653511, -1253057, -7191923, 3546032, -6381785, -7010461, 813359,
-8007430, 3682398, -2370285, -4725538, -4450123, -2076617, 4260608, 1140314, -2036351, 17648558,
--816581, -9993852, 10902238, 6263673, 36871756, 1315334, 459025, 13032541, -16555488, -11409581,
--3237869, 3083250, 6025302, -4408784, 15650324, -9507984, 2243047, 14710800, 6676527, 5492190,
-5515275, -10758356, 2136209, -260919, -5199595, 2311229, -7755101, -13898514, -7192997, 1175210,
--13651017, 17860084, -1189169, 1857037, -2328946, 12319577, 13922136, -2525441, -10072772, -849867,
--3129421, 16375637, 21027624, -14769319, -10083509, -7419019, 5361730, 15625091, -13748727, 4743255,
--469225, 3365107, -7079180, -9561134, 3177202, 10350871, 2052458, -12539157, 11608760, 33770256,
--10740639, 6389301, -2383707, 2731062, 13145821, 3808026, 15471009, 12942884, -3218004, 19767050,
-35836132, 1588601, -13042205, 35084516, -550293, 33554968, -11414412, -16199006, 15552077, 6096706,
-23467702, -3631395, 32990718, 10536629, 7754564, -9669045, 15695421, 1983201, 1692754, 3828963,
-12839805, 2850785, 14643691, 1948305, 3732864, 684510, 2311766, 2513630, 4764730, -1279900,
-5325223, 12412455, 5245766, 5791227, 1861332, 3481071, -6669011, 6177237, 2431488, 2942590,
-4522064, 2542084, -299574, 129923, 3558381, -3207267, 1319092, 386010, 3180960, 8944806,
-3269544, -55835, -4280472, 4828617, 929324, 1344325, -689879, 4725001, 2753074, 6876780,
--23116588, -7454453, 36093296, 6043556, -16664473, 4976794, -12622909, 4685810, 6926172, -2918967,
--19084688, -7168301, -28534152, 11859478, 9797357, -10956462, 10626823, 16592532, 3415036, -4432943,
--16665010, 3822521, 26675506, -12738336, 16011101, 15308337, 2420214, 11522860, 10663330, 523449,
-13297756, 8894340, -25397216, -3570192, -10232760, 25987774, 17220672, -18076444, 11144903, -2051384,
-13707925, 43316892, -4086125, -7289633, 4334159, 38989712, 16004122, -2363843, 4991826, 7090454,
-22498112, 19879794, -13566191, 23858544, 10939819, 22119618, -15631533, 2405719, 4443144, 4733054,
-13667660, 20301236, -13180181, -10455024, 16068010, 8055211, -5445482, -5709086, 65498, 24360518,
--45873472, 10830297, -16303696, -12020540, 2222646, -15698642, -14595909, -2080375, -25079388, 18133888,
--5322538, 19158238, -678605, 16761110, -11040750, 6754373, 418222, 5560372, -503048, -6436009,
-5085242, 3590056, 4065187, 8187282, -3972845, 4152160, 5650030, -4677220, 453119, 7823820,
-2914672, -4187593, 8728984, -5718212, 1190243, 4554813, -5578626, -4210142, 1800128, 1752884,
-9735617, 8053064, 5786395, 2932389, -901943, 6283537, 1440425, 2772938, 2798708, 5215164,
-6366216, -5247913, -4363687, -8493298, 6726993, 2653753, 575526, 2119030, -8945343, -8573292,
-5996311, 7803956, 8240969, -10150618, -12122545, -31379032, 1490354, -17498770, 28650654, 3519189,
--7358353, -4218195, 17222282, 4971425, 27927488, 11274289, -7162932, 1188632, 5954972, 12715788,
-21030844, -23415088, -20223390, -4227322, 35321276, -10826539, 4575751, 10086731, 15521475, 18766860,
-26868242, 23175106, 2115272, -5481989, 25099788, 1979980, -15862388, 8519068, -14710263, 10723460,
-2747169, -13144747, 12145094, 47095392, 26295400, -16579111, -12502113, -1671279, -12972412, -12896713,
--11101954, 8123394, -6288906, -10966662, 2531346, 12991202, 7820599, 4337380, 18571976, 5004711,
--4394826, 19573776, 16529719, -14067629, 9663676, -15886010, -12367895, -14079977, 42950, -34074124,
--10021232, 23790898, 17604534, -8076149, 11847667, -2821257, 925565, -20925618, 4795868, 12627741,
-20064476, 11279658, 13316009, 7299834, 6415608, -8907762, -7807714, -9477382, 5419175, -2021319,
-824634, 4080756, 4255776, -404801, 10407780, -3223910, -4489852, -4910758, 7318088, -9469866,
--3794604, -11687143, -581431, 2321430, -5009543, 471910, -2754685, 7320772, -1365263, -15424301,
-271657, -1051193, 4636417, 6045704, 1990181, 6868190, -403190, 11162620, 2312303, -881542,
--271657, 1218160, 497679, 566936, -12811351, 10594074, 8552354, -16271484, -6954089, -35381940,
--2815351, 29511794, 370978, -21618718, 3502009, 1017370, -14508936, 19673634, 11391327, -7901666,
-5618891, 8919036, 12164421, 6753836, 2124398, -8730058, 4780836, 7004018, 18821084, 28102508,
--7698192, -18912352, -9944460, 5363878, 5866389, 23128398, -8826158, -18111340, -14097156, -14490683,
-27994596, 51287816, 18640158, 2574833, 56273736, 3384971, 23337778, 13311714, -4723927, -11795054,
-10011569, -15969762, -10636487, 11405823, 776852, -33896956, -35102768, -8781598, 14674830, -18315352,
--22969486, -12648142, -17004312, -14001057, 11871290, -9750113, -26046292, 11716671, 1035624, -7593502,
-6102075, -5869610, 13142600, 52789444, -32331440, 26613228, -36761160, -20846160, -12183748, -8318278,
-20445118, 8260833, 9806484, -3970697, 11360725, 23691576, 5929203, 555661, 310848, -6872485,
-3260954, 6496138, 18983756, -1140314, -9403831, -1403381, 14501957, 9322227, -4096325, 5500780,
-6582575, -5232881, -179852, -2237678, 18197776, 6594923, 8628589, 6405944, 5207648, -7491497,
--5310190, -1177358, 4671851, -9167071, 1349157, -9040906, -6237367, 1475858, 969589, -10391137,
-10198400, 13934485, -1363652, -1773285, 8476655, 125091, -3638911, 12335146, -5059472, 8560407,
-798864, 28574418, 18377628, 16569447, 24336358, -28398860, 10922639, -29744796, -1192390, 38876432,
-34575024, 14739254, 537408, 6727530, 4393215, -11148124, 9010841, 11194295, -48985176, 3003793,
-7202660, 14897631, -17949742, -27581744, 20234128, 9573482, 5149666, -11788611, 23999740, -3370476,
-18656802, 15502684, -1846836, 2368675, -5418101, 18894098, -11207180, 5769752, 11369852, -987843,
-24146306, 13981729, -1348083, 12389907, 14078903, -722628, -10893648, -36741836, -6771553, 3929358,
--21755620, 2109366, 17369922, -33387466, -14810121, 5129265, -14348412, -2317672, 17631378, 1030255,
--12459163, -16262357, 7253663, 7070590, -33750928, -11247982, -2792803, 149787, 21216064, 10399190,
-2383170, 37056440, -4655745, -1190780, 1475858, -21121576, 20029580, 181462, 32861868, -12722767,
--5477694, 9893994, 4978404, -27987618, 928787, -3853660, -11184632, -9036611, 3519189, 1174674,
--7884486, -687732, -4890357, -3447248, 1039382, -11963095, 3476776, 1661616, -1653026, 4600447,
-1282585, -7890392, 1636919, 2281702, 2127620, -7632694, 11203959, 2215666, 14570677, -10706817,
-1384590, -9018894, -3159485, -1643899, -16069083, 3443490, 1529545, -654983, -2144263, -2889976,
-6001680, -7237020, -5561446, 7028714, 9413495, -9306120, -34672196, -30218854, 5537824, -15552613,
--4867272, -23284628, -29007136, -30520038, -20055350, 21777632, 29727080, 802085, -24465208, 1948305,
-1151051, 338766, 11307575, 18978386, 18977850, 484258, -12284143, -30447560, -17454210, -26650808,
--5710696, 129386, 2263448, 2767570, 3765076, 7360500, 9536975, 17961554, -28161564, 12382928,
-4939750, 6234145, 15130096, 26743688, 30026116, -17275970, 13389024, -23884314, -7450695, -21671868,
--2100776, -8441758, 49908056, 17711908, 35957468, 1521492, -19269370, -8278013, 23032298, 24921010,
--14629732, 46033460, -19270444, 2874944, 2036351, 7997229, 16919486, 51208360, -3571802, 12540768,
-28525026, 6512781, -22582938, 14358613, 52405044, -9562745, -12668006, -30902290, -2564632, 19328964,
-11941083, 1621887, -29656750, -22476100, 3786014, -23453742, 7074348, 1037772, -29524142, -3348464,
-3052111, -4644471, 21343304, 20033874, 455803, -5850819, -12712029, 13868449, -5871221, 24102820,
--5483600, 311922, 16525424, 16571594, 23598698, 18216566, -13297219, -5221070, 3192235, -4408784,
-1627256, -10151155, -9737765, -9885941, 5184563, -12106976, -14077829, 8361228, 10950556, 983011,
--12087649, 7705708, 4326643, -2988224, -3051038, -8247411, -127238, 4702989, -2042794, -7374459,
--9552544, -1832877, -6256157, 7879118, 4478041, -4090420, -5290326, 10084046, 46531140, -2442226,
--289373, 19723026, 3806952, -64277408, -20220706, 45590004, 15151571, -13423383, -25621090, -3629784,
--16936666, 23490250, 12192875, 4380330, -13588740, -30449170, 6495065, -52421688, -6430640, 25578140,
-34936336, -4077535, -29721710, -20264192, -61336964, 17956184, -10675141, 23969676, 18116708, -17464410,
--12711493, -54444080, -40893996, 21233782, 57941256, 23106924, 27504970, -19352586, -34490736, -33111514,
--13894219, 49228916, 66342212, 34572340, -77173048, -28325846, -59144384, -31654982, 73260328, 17821966,
-16225850, -9776419, -70604432, -57835492, -58016420, -10827613, 5598490, 36506148, -13593571, 27760522,
--55994564, 34754340, 13900662, 4199941, 70351024, 4476430, -6523519, -3409130, -95494304, -29213294,
--6505802, 30029338, 15663209, 13705778, 42119132, -45089104, 2886218, -29850560, 32491428, 23439784,
-2236067, 6451041, 6909529, -5360119, 19319836, 10322417, 5125507, 16422344, -11236708, -21021718,
-5091147, 15018964, 22858352, 18806588, 12429635, -15793132, -25545928, -35830228, -3204046, 2521683,
-28958280, 35851704, -5405217, -27370752, -46979964, -22594750, 3350611, 35866736, 57643292, 14977088,
--56385940, -57922464, -59074052, -694174, 48194900, 42381664, 44775036, -15087146, -21800180, -42074036,
--42408508, 15494631, 28681792, 37330244, 18991272, -29693256, -27988692, -15897821, -4413079, 34633544,
-18415210, 5669894, -1547799, -21342766, -15317464, -3241627, 4268661, -27590334, 52947284, 22723598,
-24268712, -65591668, 13151727, -91370064, -20199768, -275415, 12898324, 5230734, -58566176, 31687194,
--16267726, -10576894, -11059541, -12491912, -14395657, -18146774, 38287484, -11010149, -32992866, 10472204,
--9380209, 3986267, 18432926, -37246492, -13370233, -2342368, 15544560, 1551557, 42121820, -3636764,
--24188718, 55632176, -47182364, 27488328, -43759812, -14509473, 21266530, -35556424, 2542084, 25681220,
--13485124, -3121368, -2696703, 33083060, 50514720, 29196650, -17063906, -7064685, -7953206, 3144990,
-16195248, -6765647, -10105521, 9770514, 5165772, -91743720, -3737159, -3461207, 13299903, 11322608,
-554588, 75162, 26038240, -28933048, -7458748, -2891050, 19834158, -73680704, -10360535, 66432408,
--17089138, -26920318, -282931, 50247360, -9307194, -12144557, 13672492, -19918984, -20783884, 30992484,
-48118128, -17555142, -24507084, 8184060, 14406931, -7755101, -25831544, -676457, 3715147, -5383205,
--3782793, -8211441, -11259257, 5135171, 344134, -10475962, -1881196, -555661, -393526, -9674951,
-5466420, -12903155, -13511430, -8078297, -8258685, 12321187, -1826435, -2823404, -294205, -7321846,
-10328323, -13712220, 3901978, 180926, 978179, 9162239, -433792, -16449725, 1874216, -4510253,
-3062312, 1992328, -14595909, 22780506, -6041945, -2416993, -2188286, 1868311, 5859409, -785979,
--5348845, -12221866, -22310744, -67123360, -55140936, 48186848, 41077604, 3758633, 43885440, -48110612,
--2922725, -92759480, -33041720, -16550120, 44715980, 40695888, 24888798, -37435472, -12973486, -1791001,
--17926120, 8642011, 16079821, 20918102, 27991912, -21612812, 15625628, -40227736, -25500832, -6499896,
--8668318, 911070, 26381300, -31792958, 27180700, -12379169, -17719962, -7145752, 2434710, -39873404,
--1010928, -36114232, -13558138, -14119705, -34313032, 46849504, 21456046, 10524817, 11365020, -9241159,
--48062296, -71184248, -41641320, -41924248, 28233504, 6635188, 30441654, 42484744, 35006668, -11643119,
-8310225, -24672440, -18966576, -22550188, 17466558, -23891292, -1251446, -22807350, -23567560, -14883135,
-27558658, -22415434, -6392522, 2116882, -3293166, -32270774, -34713000, -21106544, -12514461, -46750184,
--27857694, 6926709, 27963458, 29180544, 37263136, -2567317, -30575872, -39592620, -30466888, 15353434,
-4851166, -5023501, 18084496, 45932528, 12128988, 12159052, -11754252, -8871792, -15262703, -9385040,
--4985384, -14805289, -3491272, 17342542, -3850975, -7866233, -14292577, -15906948, -17867600, -5431523,
-8586176, -4911832, 3638911, 1998770, -32106492, 3314104, -15338939, 13255343, 25695178, -13129715,
-17736604, -2423435, 4291209, 441308, -25391310, -4197257, -8295730, -6752226, 23113366, -14740328,
--99975568, -135506752, -128042104, -121785944, -146004736, -24419574, -40365712, 25920128, 41320268, 130760816,
-84006872, 110859552, 152775200, 167980464, 114683680, 145937088, 83072720, 38725572, -5827197, -27396522,
--37221796, -61609696, -60469920, -83566104, -35329328, -30740154, -78617232, -58704688, -56209848, -63931660,
--104020888, -70853000, -54539104, -43803296, -80052288, -11157251, -23970212, -33285460, -77518792, -71603544,
--59025200, -50471236, -36640904, -14903537, -49276160, 14271103, 25593174, -38579544, 43280924, 60108604,
-57759256, 104812768, 85182088, 65615824, 72219872, 72659576, 72108208, 110221744, 124031680, 121886344,
-83422760, 131459288, 129814312, 135242080, 137529152, 156161792, 138625440, 146378928, 194237216, 99092408,
-100071664, 101423504, 94518808, -4447976, 43201464, 54335096, -31084288, -16762184, -53597432, -98354752,
--89000848, -94003952, -169333920, -124311920, -75579616, -132449816, -140167872, -115754736, -123284352, -122127928,
--146591536, -134413680, -135646880, -127032248, -118471304, -108113992, -100013144, -100224136, -83204792, -70188352,
--110928264, -16963510, -49847392, -57363584, -12874164, -7123740, -56115360, -7131793, -21639656, -8070781,
-20755430, 24841018, 65246996, 38691748, 54559508, 60465088, 65846680, 59726888, 83419536, 81347752,
-86646136, 80821624, 97010424, 99584184, 97806072, 79061224, 102270152, 107405320, 83400752, 56191596,
-54465016, 32988570, 28629178, 7789460, -3415573, -3235721, -17642116, -15925739, -12101607, -7037841,
--15665893, -16919486, -15651935, -7326141, -15650861, -20058572, -11640435, -3979287, -13694503, -18891950,
--15096273, -12797392, -20027432, -20374788, -15313169, -9833864, -8535174, -8010114, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+5248450, -212064, 2153926, 833761, -4591320, -3453691, 1197759, -3111704, -4616553, 2632278,
+-546535, 686658, -2649995, 1946157, 187905, -4090956, -185757, 4719096, 3835406, -2937758,
+-5174899, -4716948, 694174, -1088237, -924492, -4014721, 4366908, -1163399, 1230508, -1832340,
+-1111323, -402653, 1656247, -1189706, -2298881, -8810589, 2995740, -671626, 2847027, 1686848,
+1196685, -231391, 5872831, 1099512, 1173600, 815507, -3004867, -1925756, -278636, 427349,
+-3008088, -716186, 1170916, -418222, -2842195, -1501091, 104690, 2775086, -4351876, -5907728,
+-7315403, 2585570, 4191351, 419296, 3466576, 2538863, 486942, -6710887, -174483, -1759863,
+-2352568, 111132, 374736, 2773475, -598611, 3949223, 2799782, -1256278, -4016331, -1959042,
+-717260, 1020055, 307090, 1290638, 1504849, 2755759, -58519, -270046, -1300301, -1132261,
+-1076426, -485331, -2240899, -1064615, -1267015, 690953, -148176, -288300, -688805, 1044214,
+-1577327, 3165391, 4140349, -963683, -63351, -5941014, 5283884, -6803765, 2617246, 11435887,
+-2460480, -4269735, 641024, 5961952, 625992, -1708860, -836982, -1722282, -1091995, -5389110,
+-2103997, 2640331, -4280472, -2453500, 233539, -248571, 4711043, -2893197, 872952, -1126892,
+1022739, -611496, -2765422, 5215701, 8880919, 2240899, -514859, -1677722, 9612137, 437550,
+-4031364, 258772, -7182259, 16106, 3737159, -5516349, -707059, 1171989, -4405563, -1332514,
+5059472, 712965, -550830, 4881231, -3259343, -5149666, 2903935, 1923072, -3597035, -1786706,
+-3850438, -4512400, -4853850, -2688113, -2777770, 3924526, 2789581, 765041, -116501, -2731599,
+2521683, -595390, -1866163, 3325379, 3674882, -2629594, -529355, -1245541, -1679869, 513249,
+4211216, -2131915, 940061, 4015795, 2653216, -924492, 1015223, -704912, -114890, 1701344,
+-245350, 25233, 1731409, -1856500, 748935, 380641, -597537, -1710471, 1306207, 149787,
+-767189, 402116, 184684, -613107, 192200, -314069, -572304, -998580, 5847061, -8523899,
+-5627481, -2029909, -1240172, 287763, 1096290, -8128226, 5644124, -2567854, 1844152, 1162862,
+1878511, 3549254, -25770, -1177358, -2705293, 5849746, -462783, 3802120, 7225209, -1569274,
+6143414, 5239323, -4543539, 3035468, 3072512, 3295314, -8017094, -798864, 478889, -2521683,
+-5042829, 76236, 5883032, -1383516, -2520609, -1981054, 1799054, 5452998, 2693481, -2789581,
+-46708, -2301029, 230854, -733903, -2719251, 5092221, -6585259, -5443334, -4998268, 1542967,
+-703301, -182536, -6143951, -6489696, 1579474, -139586, 366146, -642635, -345745, -4845260,
+-2866891, -5297306, 1036698, 4534412, -1415192, 4023311, 753230, 3576634, -7733089, 30065,
+1116155, -2582886, -1167694, 1029718, -2756295, -341987, 2024540, 2184528, -1716376, -5175436,
+4552666, 710817, 110595, -1146219, -661962, -4144644, 181999, 282394, -729608, 744103,
+133144, -1464584, 623844, 667331, -418222, -599148, -206695, -250182, -280247, 224949,
+2179696, 33286, -654983, 1801202, 804770, -145492, -601832, -181999, -2920578, 720481,
+-586263, 5018670, 7982734, 506269, -3035468, -6788196, 3106335, 2015950, 1883880, 8456254,
+-5528160, 195421, 1030255, -1532767, -2765422, 1250909, 533650, 5097590, 11246909, -989990,
+1947231, 4702989, -2038499, 4195110, 7310571, -5100811, -189515, -1900523, -104690, 3261491,
+-5692979, 6152541, 1373316, 72478, 3244848, -532576, 4492536, -2433636, -1032403, -1263257,
+7056632, 3289408, 4495220, -850404, 3704409, -6845641, 7917236, -3062849, 3115462, -7206419,
+2911451, 5234492, 9649181, 3543885, 1804960, -6345814, -2427730, 1755031, -4801774, -5713917,
+-1352378, 11399380, 13202193, 2533494, 3109020, -3763465, -1669132, 7383049, 1443109, 3234647,
+-442919, 2249489, 1981591, -972810, 1691143, -1076963, 1275605, 892816, 4665945, 3797288,
+-5851356, 5219996, -1709397, 2685965, -1840930, 1975148, -1553168, -2173254, -38118, -3471407,
+548145, 2546916, 581431, 1315334, -1231582, -1532230, -788663, 639413, 111669, 584116,
+-222801, 406411, -979789, 369904, 376883, 1855963, 111669, 1265405, -592169, 1133871,
+5567888, 156766, 695785, 7811472, -6576132, -7741679, 12072079, -3124052, -1929514, 7894687,
+4726612, 586800, -13843753, 14963129, -2735894, -1886028, -1567126, -810138, 599148, 929860,
+4682588, 6984154, 4602595, -995359, 7835094, 4974109, 2521683, 2114735, -2874407, 3582540,
+-5622112, 4503810, -852014, 1891396, -4757750, -6914361, 896574, -865436, 2548526, 4188667,
+-2048699, -6616397, -3858491, 1644973, -7945153, 5157182, 1609002, -12670154, 5743445, 892816,
+3290482, 839129, 1985349, 2172180, -504122, -3558917, -3091840, -8637716, -6345814, -3512747,
+-4405563, -952946, 533650, -6314676, -8951249, -1313186, 5851893, 10077067, -493384, -6665789,
+1132261, -10496900, 743029, -689342, -4118337, 8909910, 8370892, 2842195, -300648, -2114198,
+-610959, -4631586, 2215666, 8547522, 4575214, 7070590, 1442572, -3175592, 3295314, 1737314,
+-215822, 709743, 404801, 243739, 1541893, 1604170, 1529545, -438624, 2669322, 754841,
+5250061, 2080375, 1421097, 285078, 468151, 1418950, -358093, 2492692, 921271, 989453,
+-1381369, 3091303, 779000, -1047972, -439697, -13585518, 7031399, -2587718, -4828617, -3828427,
+-4618701, -6455336, 12463995, -15857019, 3750043, 3840238, 5199595, 7758859, 1282585, 2160369,
+2928631, 2106145, 1625108, 2632815, 6831683, 1237488, -3745748, -1611, -649077, -4878546,
+-4407710, 2266669, 4581120, 4923643, 677531, 3511673, -8254391, -956704, -107374, -450972,
+-7821136, -4687957, -2809446, 5122822, 4604742, -78383, -8560944, 49392, -4632122, -3321084,
+-1674500, -2305324, 5394479, 7326678, 2234994, 7621420, -12183748, -8519068, 4067334, 2490007,
+425202, 1612760, 808528, -3954054, -7659538, -5300527, 4076998, -3435437, 6228777, 6121939,
+-2220498, 5800890, -9220221, -4565550, -2586107, -3115999, 686121, 16811038, -2405719, 4753455,
+-2671470, -2435247, -1701344, 3566434, 3836480, -447213, 3099356, 2108292, -5232881, 1444183,
+413391, 2248952, 500901, 273804, -2632278, 1692217, -97711, 1714766, 561567, 886374,
+-476741, -1006096, 514322, -1534377, -2194728, 747324, -1195612, -1899986, -548145, 565325,
+762894, 746787, 836445, -113280, 604517, 1187022, 1006633, 330712, 303869, -397284,
+-623307, 1107028, 13911936, -2665564, 388158, 5863704, -13227426, 9106404, 4622459, -7451769,
+8289287, 9273371, 3118683, -14281840, 8843338, 392990, -1339493, 7242926, 7823283, -434865,
+-2299418, 236760, -5537824, 5198521, -3024194, -5275831, -11108933, 2605435, -12075301, 3253438,
+-2953327, -1342714, 3492882, -9837086, -4037269, 8195335, -707059, -3812857, 5018133, 341987,
+-4289062, 3717294, 1352378, 373662, -1834488, 2837363, -5986111, -619012, -8745627, 8291971,
+8288750, -10299332, 6897718, -7344931, -2768643, 7128035, 9961640, -712428, -4951024, 3019362,
+-617938, 1445257, -12159052, -9609989, 1928977, 1736777, -2623151, -2490544, 3163780, -365072,
+-4304631, 5153961, -4963372, 1752884, 3729642, -841814, 5844914, -5840082, 5910412, -30602,
+9398999, -3211025, 2858838, 5311801, 607738, -3357054, -950798, -339302, 2762201, -909996,
+-4411469, 3735548, 817118, -1843615, 1654099, -1236951, -48318, -1729798, -490700, 1282585,
+-1472637, 963146, 2582886, -1325534, 634581, 188442, -845572, 1639067, 443992, 1396401,
+-2067490, 853088, -2116882, -2420751, 912681, -377957, 995896, 1034013, 315143, 3847217,
+1676111, -5063767, 9760850, -3343632, 4748623, -9858561, -700080, -2603824, -8950175, 309775,
+6319508, 11232950, 14697378, -8374113, -236223, -10437307, -782221, -6648073, 5931887, -6225018,
+-12307766, 794569, -7888781, -741419, 10202158, -6052146, -6037651, 10947872, 336618, 1879048,
+-1147293, -6441914, 2732673, 2333778, 13194140, -9108552, 6469832, -7725573, 1923072, 2559264,
+-7622493, -4694936, 12669617, 3462281, -9428527, -2437394, -3451543, -7570954, -321586, 12418361,
+6651294, 8640400, 1973001, 3452617, -11339787, -1643899, 14414447, 1138166, -8963060, 4790499,
+4763656, -6579890, -5729487, -3173981, -14814416, -2288681, 4395362, 7313793, 13001403, -3263638,
+-7117835, -2062658, -4431870, 10553808, -3931506, -9222369, -6285148, -2727841, -1262184, -2860985,
+-5332202, 11490111, -6592238, -805306, 1057099, 544924, 3748970, 2335389, -3390340, -4552129,
+3411815, 4096862, 4333085, -998043, 1957968, -1207423, -721018, 1933809, -430570, -2021856,
+2039573, 952409, -63351, -1326071, -446677, -3365644, 308701, -839666, -2893734, -1481227,
+1309428, 1138166, 49392, 1337346, 6324340, -21955872, -15133854, -9700721, 1158031, -18396418,
+2749316, 13674639, 4524748, 14079977, -7555921, -3484829, -1529545, -7318625, -2739116, -10986526,
+19526532, 11148124, 7784628, -16497506, -3189013, -5310190, -10734197, 3711926, -1130113, 3480534,
+-13332652, -918049, -1195075, -9575630, 5569499, 1584306, 9784472, 3934727, -8182987, 12890271,
+-6096169, 5230734, 2714956, -110059, 10201084, 9479530, 2391760, -12303471, 15006079, -7598871,
+10759430, 4903242, -5568425, -6194954, 12065100, 1768453, -1406602, 3138547, -10192494, -3656091,
+5877126, -855772, 10669236, -6171331, -9647033, 3951370, 2729452, 324807, 10610717, 4569845,
+2157147, -6773701, 7721815, 3024731, -5919539, -818191, -635655, -3406983, -2476049, -2873870,
+4644471, 11650636, 19640348, 9123584, -3313567, 992674, -4509179, 4514548, 6043019, -100395,
+-5018670, -2956011, -6550899, 4035659, -3579318, 954557, -3095061, -852551, 4357781, -522912,
+471910, -3992172, 4261682, -2254858, -1912871, 2335389, -3920232, 4289599, -3003793, 2294050,
+-2123325, -406411, 961536, -2930778, -2081449, -1288490, -4769025, -4794794, -2102923, -257161,
+-1690070, 3787088, 3499862, 2041183, -13863081, 18636400, 7727720, 21311090, -9553618, -11442867,
+20308216, 690416, -2091649, 4455492, 1562831, 11891691, 15843597, 2071785, -14704894, -23554674,
+3315715, -6497212, 1448478, 673773, -10188199, -645319, 12846247, 10502806, 8264591, 16534550,
+-3720516, 14011257, -9824201, 12409234, 4094178, 9616432, -6427956, 16935056, 9759239, 12368432,
+-19602768, -86436, 17861696, 10169946, 3257196, -4225174, 26861800, 11340861, -10508711, -6479495,
+6564858, -10231686, -978179, -4907000, 1403381, 22551800, 23629836, 17156246, 6317360, 207232,
+8908836, -7827041, -1959042, 9683004, -10001368, 23880018, 14904073, 11725798, 4639639, -908922,
+-11250130, 14183056, 536871, 12373264, -5500780, 4814659, -7931731, -4548907, -180926, 6246493,
+-9333501, 22233972, 9601936, -2432025, -10865194, -20928838, 10329933, 1848447, -6784975, -627602,
+2621541, -4879083, 3070365, 8098698, -1371705, -2765422, 281320, -1697586, -2056216, 1842541,
+-2500745, -1837709, -3437048, 3639448, 2094333, -5244692, 2986076, 3390877, 3300146, -93952,
+-1529545, -579284, -13422, 1761474, -423054, 1305133, -3089155, 5142150, -6415608, 118112,
+2246268, 5763309, 22985592, -1382980, -11419244, -5169530, -8962523, -380641, -14354318, 3673808,
+-12376485, 6943352, 1541893, -3366718, -9752260, -11631308, -17627620, -18267570, -5462125, 15778099,
+-1233729, -10353019, 4206384, -9874130, 7495792, -8441221, 14761266, -15257334, 3504157, -10833518,
+-11105712, -2067490, 1824287, -3263102, 6937983, -21942988, 8763881, 2070174, -5335960, -1557463,
+-1512902, -10881837, -17440788, -18671296, 13342853, 6584185, -7346005, 11558294, 308701, -4884452,
+-13771276, -28849832, -23783918, 13390097, -4212826, 257698, -2918430, -1400159, -1444183, -19556596,
+7346542, -23095112, -12368432, 1009854, -798864, -4977330, -3175592, -3120294, 23695334, -7406671,
+-7831873, -6501507, 24793236, -4540318, -10074383, 15708306, -12453258, -7923141, -10279467, -8645769,
+-32168768, 6367826, 5046587, -10810970, -1654099, 7436199, -4282620, -2950643, -6079526, -5548561,
+-877247, -2935610, -2946885, 11129334, -1032403, -1272384, 7378754, 8839043, -4516158, -3297998,
+-845572, -1641214, 2156074, -5505075, 497142, 562104, 892816, -3300682, -4113505, -1704565,
+3524558, -1553704, -3094524, -473520, 2182380, -7076496, -1242319, 3910031, 122943, -2856690,
+3628174, -2500745, 3198677, -73551, 3049964, 3342022, 3337727, -6189585, -769336, -33990908,
+-25667262, -14683419, 29677150, -1512365, -4947266, -3626563, -2340757, -9780714, 10502806, 8119099,
+26560614, -24512988, -4779225, 7548405, -17931488, -7176354, -6344741, 30595200, -448824, 7052337,
+15573551, 1408749, 14988362, -16185584, -20344186, -13614509, -3745212, -3461207, 2427194, 9560060,
+-471373, -17136920, -11825119, -878321, -9149891, -19225348, 17157320, -2869575, -9590662, -122407,
+5507759, 5449777, 3203509, -8688719, 1748052, -17877802, -7829189, -26512834, 12455405, 8008504,
+-3138547, -8325257, 9796284, -13210783, -3379066, 28600188, -3016141, 24238112, 10838350, 6498286,
+-6352257, -30443802, -12666932, -5856725, -16396038, -12256226, -7819525, 13625784, -6236830, 310311,
+-12241731, 25958246, -9290551, 10707353, 7254737, -17711908, -7137162, 3905736, 16402480, 29967060,
+24919400, 10801843, -1713692, 10289131, 62814, 894964, -5891622, 3027952, -6090801, -4224637,
+-128312, 1764695, -3685619, -4868346, -8796630, -6991670, 3709241, 2881386, 3018288, -3233574,
+-1381906, -17439714, -366146, -8042327, -3817152, 3159485, 2379412, 1008780, 7166153, 179315,
+-1065152, 719407, -2959233, -12653511, -1253057, -7191923, 3546032, -6381785, -7010461, 813359,
+8007430, 3682398, -2370285, -4725538, -4450123, -2076617, 4260608, 1140314, -2036351, 17648558,
+-816581, -9993852, 10902238, 6263673, 36871756, 1315334, 459025, 13032541, -16555488, -11409581,
+-3237869, 3083250, 6025302, -4408784, 15650324, -9507984, 2243047, 14710800, 6676527, 5492190,
+5515275, -10758356, 2136209, -260919, -5199595, 2311229, -7755101, -13898514, -7192997, 1175210,
+-13651017, 17860084, -1189169, 1857037, -2328946, 12319577, 13922136, -2525441, -10072772, -849867,
+-3129421, 16375637, 21027624, -14769319, -10083509, -7419019, 5361730, 15625091, -13748727, 4743255,
+-469225, 3365107, -7079180, -9561134, 3177202, 10350871, 2052458, -12539157, 11608760, 33770256,
+-10740639, 6389301, -2383707, 2731062, 13145821, 3808026, 15471009, 12942884, -3218004, 19767050,
+35836132, 1588601, -13042205, 35084516, -550293, 33554968, -11414412, -16199006, 15552077, 6096706,
+23467702, -3631395, 32990718, 10536629, 7754564, -9669045, 15695421, 1983201, 1692754, 3828963,
+12839805, 2850785, 14643691, 1948305, 3732864, 684510, 2311766, 2513630, 4764730, -1279900,
+5325223, 12412455, 5245766, 5791227, 1861332, 3481071, -6669011, 6177237, 2431488, 2942590,
+4522064, 2542084, -299574, 129923, 3558381, -3207267, 1319092, 386010, 3180960, 8944806,
+3269544, -55835, -4280472, 4828617, 929324, 1344325, -689879, 4725001, 2753074, 6876780,
+-23116588, -7454453, 36093296, 6043556, -16664473, 4976794, -12622909, 4685810, 6926172, -2918967,
+-19084688, -7168301, -28534152, 11859478, 9797357, -10956462, 10626823, 16592532, 3415036, -4432943,
+-16665010, 3822521, 26675506, -12738336, 16011101, 15308337, 2420214, 11522860, 10663330, 523449,
+13297756, 8894340, -25397216, -3570192, -10232760, 25987774, 17220672, -18076444, 11144903, -2051384,
+13707925, 43316892, -4086125, -7289633, 4334159, 38989712, 16004122, -2363843, 4991826, 7090454,
+22498112, 19879794, -13566191, 23858544, 10939819, 22119618, -15631533, 2405719, 4443144, 4733054,
+13667660, 20301236, -13180181, -10455024, 16068010, 8055211, -5445482, -5709086, 65498, 24360518,
+-45873472, 10830297, -16303696, -12020540, 2222646, -15698642, -14595909, -2080375, -25079388, 18133888,
+-5322538, 19158238, -678605, 16761110, -11040750, 6754373, 418222, 5560372, -503048, -6436009,
+5085242, 3590056, 4065187, 8187282, -3972845, 4152160, 5650030, -4677220, 453119, 7823820,
+2914672, -4187593, 8728984, -5718212, 1190243, 4554813, -5578626, -4210142, 1800128, 1752884,
+9735617, 8053064, 5786395, 2932389, -901943, 6283537, 1440425, 2772938, 2798708, 5215164,
+6366216, -5247913, -4363687, -8493298, 6726993, 2653753, 575526, 2119030, -8945343, -8573292,
+5996311, 7803956, 8240969, -10150618, -12122545, -31379032, 1490354, -17498770, 28650654, 3519189,
+-7358353, -4218195, 17222282, 4971425, 27927488, 11274289, -7162932, 1188632, 5954972, 12715788,
+21030844, -23415088, -20223390, -4227322, 35321276, -10826539, 4575751, 10086731, 15521475, 18766860,
+26868242, 23175106, 2115272, -5481989, 25099788, 1979980, -15862388, 8519068, -14710263, 10723460,
+2747169, -13144747, 12145094, 47095392, 26295400, -16579111, -12502113, -1671279, -12972412, -12896713,
+-11101954, 8123394, -6288906, -10966662, 2531346, 12991202, 7820599, 4337380, 18571976, 5004711,
+-4394826, 19573776, 16529719, -14067629, 9663676, -15886010, -12367895, -14079977, 42950, -34074124,
+-10021232, 23790898, 17604534, -8076149, 11847667, -2821257, 925565, -20925618, 4795868, 12627741,
+20064476, 11279658, 13316009, 7299834, 6415608, -8907762, -7807714, -9477382, 5419175, -2021319,
+824634, 4080756, 4255776, -404801, 10407780, -3223910, -4489852, -4910758, 7318088, -9469866,
+-3794604, -11687143, -581431, 2321430, -5009543, 471910, -2754685, 7320772, -1365263, -15424301,
+271657, -1051193, 4636417, 6045704, 1990181, 6868190, -403190, 11162620, 2312303, -881542,
+-271657, 1218160, 497679, 566936, -12811351, 10594074, 8552354, -16271484, -6954089, -35381940,
+-2815351, 29511794, 370978, -21618718, 3502009, 1017370, -14508936, 19673634, 11391327, -7901666,
+5618891, 8919036, 12164421, 6753836, 2124398, -8730058, 4780836, 7004018, 18821084, 28102508,
+-7698192, -18912352, -9944460, 5363878, 5866389, 23128398, -8826158, -18111340, -14097156, -14490683,
+27994596, 51287816, 18640158, 2574833, 56273736, 3384971, 23337778, 13311714, -4723927, -11795054,
+10011569, -15969762, -10636487, 11405823, 776852, -33896956, -35102768, -8781598, 14674830, -18315352,
+-22969486, -12648142, -17004312, -14001057, 11871290, -9750113, -26046292, 11716671, 1035624, -7593502,
+6102075, -5869610, 13142600, 52789444, -32331440, 26613228, -36761160, -20846160, -12183748, -8318278,
+20445118, 8260833, 9806484, -3970697, 11360725, 23691576, 5929203, 555661, 310848, -6872485,
+3260954, 6496138, 18983756, -1140314, -9403831, -1403381, 14501957, 9322227, -4096325, 5500780,
+6582575, -5232881, -179852, -2237678, 18197776, 6594923, 8628589, 6405944, 5207648, -7491497,
+-5310190, -1177358, 4671851, -9167071, 1349157, -9040906, -6237367, 1475858, 969589, -10391137,
+10198400, 13934485, -1363652, -1773285, 8476655, 125091, -3638911, 12335146, -5059472, 8560407,
+798864, 28574418, 18377628, 16569447, 24336358, -28398860, 10922639, -29744796, -1192390, 38876432,
+34575024, 14739254, 537408, 6727530, 4393215, -11148124, 9010841, 11194295, -48985176, 3003793,
+7202660, 14897631, -17949742, -27581744, 20234128, 9573482, 5149666, -11788611, 23999740, -3370476,
+18656802, 15502684, -1846836, 2368675, -5418101, 18894098, -11207180, 5769752, 11369852, -987843,
+24146306, 13981729, -1348083, 12389907, 14078903, -722628, -10893648, -36741836, -6771553, 3929358,
+-21755620, 2109366, 17369922, -33387466, -14810121, 5129265, -14348412, -2317672, 17631378, 1030255,
+-12459163, -16262357, 7253663, 7070590, -33750928, -11247982, -2792803, 149787, 21216064, 10399190,
+2383170, 37056440, -4655745, -1190780, 1475858, -21121576, 20029580, 181462, 32861868, -12722767,
+-5477694, 9893994, 4978404, -27987618, 928787, -3853660, -11184632, -9036611, 3519189, 1174674,
+-7884486, -687732, -4890357, -3447248, 1039382, -11963095, 3476776, 1661616, -1653026, 4600447,
+1282585, -7890392, 1636919, 2281702, 2127620, -7632694, 11203959, 2215666, 14570677, -10706817,
+1384590, -9018894, -3159485, -1643899, -16069083, 3443490, 1529545, -654983, -2144263, -2889976,
+6001680, -7237020, -5561446, 7028714, 9413495, -9306120, -34672196, -30218854, 5537824, -15552613,
+-4867272, -23284628, -29007136, -30520038, -20055350, 21777632, 29727080, 802085, -24465208, 1948305,
+1151051, 338766, 11307575, 18978386, 18977850, 484258, -12284143, -30447560, -17454210, -26650808,
+-5710696, 129386, 2263448, 2767570, 3765076, 7360500, 9536975, 17961554, -28161564, 12382928,
+4939750, 6234145, 15130096, 26743688, 30026116, -17275970, 13389024, -23884314, -7450695, -21671868,
+-2100776, -8441758, 49908056, 17711908, 35957468, 1521492, -19269370, -8278013, 23032298, 24921010,
+-14629732, 46033460, -19270444, 2874944, 2036351, 7997229, 16919486, 51208360, -3571802, 12540768,
+28525026, 6512781, -22582938, 14358613, 52405044, -9562745, -12668006, -30902290, -2564632, 19328964,
+11941083, 1621887, -29656750, -22476100, 3786014, -23453742, 7074348, 1037772, -29524142, -3348464,
+3052111, -4644471, 21343304, 20033874, 455803, -5850819, -12712029, 13868449, -5871221, 24102820,
+-5483600, 311922, 16525424, 16571594, 23598698, 18216566, -13297219, -5221070, 3192235, -4408784,
+1627256, -10151155, -9737765, -9885941, 5184563, -12106976, -14077829, 8361228, 10950556, 983011,
+-12087649, 7705708, 4326643, -2988224, -3051038, -8247411, -127238, 4702989, -2042794, -7374459,
+-9552544, -1832877, -6256157, 7879118, 4478041, -4090420, -5290326, 10084046, 46531140, -2442226,
+-289373, 19723026, 3806952, -64277408, -20220706, 45590004, 15151571, -13423383, -25621090, -3629784,
+-16936666, 23490250, 12192875, 4380330, -13588740, -30449170, 6495065, -52421688, -6430640, 25578140,
+34936336, -4077535, -29721710, -20264192, -61336964, 17956184, -10675141, 23969676, 18116708, -17464410,
+-12711493, -54444080, -40893996, 21233782, 57941256, 23106924, 27504970, -19352586, -34490736, -33111514,
+-13894219, 49228916, 66342212, 34572340, -77173048, -28325846, -59144384, -31654982, 73260328, 17821966,
+16225850, -9776419, -70604432, -57835492, -58016420, -10827613, 5598490, 36506148, -13593571, 27760522,
+-55994564, 34754340, 13900662, 4199941, 70351024, 4476430, -6523519, -3409130, -95494304, -29213294,
+-6505802, 30029338, 15663209, 13705778, 42119132, -45089104, 2886218, -29850560, 32491428, 23439784,
+2236067, 6451041, 6909529, -5360119, 19319836, 10322417, 5125507, 16422344, -11236708, -21021718,
+5091147, 15018964, 22858352, 18806588, 12429635, -15793132, -25545928, -35830228, -3204046, 2521683,
+28958280, 35851704, -5405217, -27370752, -46979964, -22594750, 3350611, 35866736, 57643292, 14977088,
+-56385940, -57922464, -59074052, -694174, 48194900, 42381664, 44775036, -15087146, -21800180, -42074036,
+-42408508, 15494631, 28681792, 37330244, 18991272, -29693256, -27988692, -15897821, -4413079, 34633544,
+18415210, 5669894, -1547799, -21342766, -15317464, -3241627, 4268661, -27590334, 52947284, 22723598,
+24268712, -65591668, 13151727, -91370064, -20199768, -275415, 12898324, 5230734, -58566176, 31687194,
+-16267726, -10576894, -11059541, -12491912, -14395657, -18146774, 38287484, -11010149, -32992866, 10472204,
+-9380209, 3986267, 18432926, -37246492, -13370233, -2342368, 15544560, 1551557, 42121820, -3636764,
+-24188718, 55632176, -47182364, 27488328, -43759812, -14509473, 21266530, -35556424, 2542084, 25681220,
+-13485124, -3121368, -2696703, 33083060, 50514720, 29196650, -17063906, -7064685, -7953206, 3144990,
+16195248, -6765647, -10105521, 9770514, 5165772, -91743720, -3737159, -3461207, 13299903, 11322608,
+554588, 75162, 26038240, -28933048, -7458748, -2891050, 19834158, -73680704, -10360535, 66432408,
+-17089138, -26920318, -282931, 50247360, -9307194, -12144557, 13672492, -19918984, -20783884, 30992484,
+48118128, -17555142, -24507084, 8184060, 14406931, -7755101, -25831544, -676457, 3715147, -5383205,
+-3782793, -8211441, -11259257, 5135171, 344134, -10475962, -1881196, -555661, -393526, -9674951,
+5466420, -12903155, -13511430, -8078297, -8258685, 12321187, -1826435, -2823404, -294205, -7321846,
+10328323, -13712220, 3901978, 180926, 978179, 9162239, -433792, -16449725, 1874216, -4510253,
+3062312, 1992328, -14595909, 22780506, -6041945, -2416993, -2188286, 1868311, 5859409, -785979,
+-5348845, -12221866, -22310744, -67123360, -55140936, 48186848, 41077604, 3758633, 43885440, -48110612,
+-2922725, -92759480, -33041720, -16550120, 44715980, 40695888, 24888798, -37435472, -12973486, -1791001,
+-17926120, 8642011, 16079821, 20918102, 27991912, -21612812, 15625628, -40227736, -25500832, -6499896,
+-8668318, 911070, 26381300, -31792958, 27180700, -12379169, -17719962, -7145752, 2434710, -39873404,
+-1010928, -36114232, -13558138, -14119705, -34313032, 46849504, 21456046, 10524817, 11365020, -9241159,
+-48062296, -71184248, -41641320, -41924248, 28233504, 6635188, 30441654, 42484744, 35006668, -11643119,
+8310225, -24672440, -18966576, -22550188, 17466558, -23891292, -1251446, -22807350, -23567560, -14883135,
+27558658, -22415434, -6392522, 2116882, -3293166, -32270774, -34713000, -21106544, -12514461, -46750184,
+-27857694, 6926709, 27963458, 29180544, 37263136, -2567317, -30575872, -39592620, -30466888, 15353434,
+4851166, -5023501, 18084496, 45932528, 12128988, 12159052, -11754252, -8871792, -15262703, -9385040,
+-4985384, -14805289, -3491272, 17342542, -3850975, -7866233, -14292577, -15906948, -17867600, -5431523,
+8586176, -4911832, 3638911, 1998770, -32106492, 3314104, -15338939, 13255343, 25695178, -13129715,
+17736604, -2423435, 4291209, 441308, -25391310, -4197257, -8295730, -6752226, 23113366, -14740328,
+-99975568, -135506752, -128042104, -121785944, -146004736, -24419574, -40365712, 25920128, 41320268, 130760816,
+84006872, 110859552, 152775200, 167980464, 114683680, 145937088, 83072720, 38725572, -5827197, -27396522,
+-37221796, -61609696, -60469920, -83566104, -35329328, -30740154, -78617232, -58704688, -56209848, -63931660,
+-104020888, -70853000, -54539104, -43803296, -80052288, -11157251, -23970212, -33285460, -77518792, -71603544,
+-59025200, -50471236, -36640904, -14903537, -49276160, 14271103, 25593174, -38579544, 43280924, 60108604,
+57759256, 104812768, 85182088, 65615824, 72219872, 72659576, 72108208, 110221744, 124031680, 121886344,
+83422760, 131459288, 129814312, 135242080, 137529152, 156161792, 138625440, 146378928, 194237216, 99092408,
+100071664, 101423504, 94518808, -4447976, 43201464, 54335096, -31084288, -16762184, -53597432, -98354752,
+-89000848, -94003952, -169333920, -124311920, -75579616, -132449816, -140167872, -115754736, -123284352, -122127928,
+-146591536, -134413680, -135646880, -127032248, -118471304, -108113992, -100013144, -100224136, -83204792, -70188352,
+-110928264, -16963510, -49847392, -57363584, -12874164, -7123740, -56115360, -7131793, -21639656, -8070781,
+20755430, 24841018, 65246996, 38691748, 54559508, 60465088, 65846680, 59726888, 83419536, 81347752,
+86646136, 80821624, 97010424, 99584184, 97806072, 79061224, 102270152, 107405320, 83400752, 56191596,
+54465016, 32988570, 28629178, 7789460, -3415573, -3235721, -17642116, -15925739, -12101607, -7037841,
+-15665893, -16919486, -15651935, -7326141, -15650861, -20058572, -11640435, -3979287, -13694503, -18891950,
+-15096273, -12797392, -20027432, -20374788, -15313169, -9833864, -8535174, -8010114, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-6308233,
-7975755, -615791, 3212099, 1615982, 3783329, -6770479, -3656628, 4343286, 2100239, 44023,
--3766150, 767189, -10504416, -6765111, -368293, -4034048, -4562329, 1868311, 8203925, 1373316,
-6246493, -1451699, 6172942, -3692061, -3295314, -415538, -5578626, 1102196, 2767570, -2019172,
--139050, 1442572, 258235, 2510945, -303332, -5971079, 2130304, -3703336, -2793339, 1669669,
--3680250, -5572720, 5533529, -5847061, 5265630, 4915590, 3234110, -272730, -6860674, -3997004,
-763967, -1304060, 8812199, -5410585, 2136746, -708133, 1156957, -6687801, -11156714, -1979980,
--3357054, -3733400, -887985, 4696547, -1032940, -5040144, 4397510, 1858647, -2246805, 3668439,
--731755, 1089848, -5143224, -438624, -1293859, -99858, 1952063, -2366527, 1578401, -4711579,
-3154654, -754841, 322123, -1735167, -1567126, -3221, 1910187, 681289, -82141, 715649,
--49929, -2850248, 801548, 204011, 1761474, -312459, 46171, -34897, 26307, -207769,
--1028645, 4281546, 4270271, 605054, 7701413, -87510, 3325379, 4138738, -50466, -3758633,
-392990, -5340255, -6840273, -2596308, -7794829, -8045011, -2621004, 5288179, -1891933, -1832340,
--4190814, -1060320, -7326678, 3579855, -2053531, 1808181, 4394826, 1490891, -1544578, 3022046,
-2864206, -3575560, 2481417, 329639, 661425, 2679523, -6391985, -2757906, 4524211, -2902324,
--213675, -1846299, 5021354, -6437619, -537945, -5391795, 3493419, -320512, -397821, 4871030,
--2107755, -2340757, -1685775, -4552666, 323196, -2062121, -363998, 301185, 3096672, 3148211,
-1058173, -1398549, -5376226, -8791798, -2727841, -610959, -2174864, 4725538, -1908576, -2710661,
-3770445, -2429878, -3773129, 8343511, -1815161, -4667019, -421444, 766115, -1400159, 4115653,
--535260, -3678640, 52613, 161598, -794569, -1108102, 3272228, 739271, 461172, -1952600,
-406411, -594853, 220654, 1276679, -287226, 723702, 1518271, 191663, -308164, -327491,
-643171, -1854889, -693637, -370978, -856309, 771484, 639413, -304406, 8938364, -5683316,
--2679523, -4112431, 3321084, 643708, -398358, 6447820, 1553168, 1890323, -9341017, 1724966,
--4353486, -5069672, -6584722, -105764, 245350, 7828115, -6387153, 2962454, -2673617, 9678709,
--3480534, -3204046, 6894497, -2630668, 2386391, 1040993, -446677, 1139777, -4606353, 752156,
-228707, 1954747, 9106404, 3171833, 861141, -3881577, 3194382, -7066295, -1949378, -1351841,
-3883724, 3310883, 5507759, 3606162, -4107599, -6058588, -2631204, 4632122, -554588, 2405719,
--960462, -666794, 9260486, 2183454, -687195, -11034845, -4908074, 289373, 3854733, 5907728,
-8325257, 4656819, -1991254, 1492501, -2019708, -2821257, 5978595, -3754338, 6155225, 282931,
--5525476, 2000918, -2838974, 4794257, -4096325, -468151, 4182225, 4782446, -4775467, -1836099,
--884763, -1961190, 2897492, -642098, -2030983, 1330366, 712965, 732829, 826781, 1160715,
-646929, 694711, 327491, -343061, -397821, -1772748, 2780455, -105227, 185757, 318364,
-62814, 441308, 1494649, 1435593, -44560, -374199, 1858647, 1401233, 1119376, 4686883,
--1122597, -785442, -1729798, -5486284, 213138, 3940096, 3925063, 7342247, 3365644, -9642202,
--8054138, -6989523, 288837, -1184337, 511638, -3808026, -2365990, -592706, 2927020, -39728,
--6177774, 6674916, -954020, -6202470, 1269700, 1464584, -127238, -595927, 2683281, 3534221,
--2212445, 5401995, 267899, 3164854, -7368017, 5240934, 1864016, 3022046, -5071283, -557272,
-3707094, 3172370, 8046085, -301185, -11112154, -3039763, -5323075, 2603287, 1799591, -461172,
--2967286, 847719, -4557497, -1615445, -8298414, -4884989, -280247, 4619774, 5156108, -3724274,
--3187940, -3263638, 5299453, -1810329, -653372, -7969849, 4801774, -7866233, -2732136, -343597,
--1663763, -2138357, 8366060, -714575, -1945620, -2241973, 1659468, -5045513, 579821, -8748312,
--7030862, 2559264, -2455111, -1308891, 3124589, -1586454, 4168803, 819265, 1914482, 2933463,
--785442, 1415729, 956704, 539555, -617402, 1070521, 433255, 261993, -651761, -690953,
-170188, -2565169, -48855, 1604707, 384400, -102005, 303869, -1575716, -509491, 957241,
--471373, 2231236, -2899640, 4105989, -3301756, 3221, 5667210, 10318659, 7138773, 1532230,
--8079371, -6062347, 2168422, -1387274, -5181341, -1701344, -6674379, -2870112, 13411035, 1549946,
--1428614, -2498597, 8053, -3121368, -2158221, 9067213, -9409200, -1110249, 929324, -2013266,
-2362232, 5484137, -2520072, -3098282, 1387274, -3854196, -3760244, -8749385, -3240553, 2356327,
--7832410, -1313186, 3886946, 5900212, 2099702, -12286828, -3707094, 2468533, 6193343, -4820564,
-10688026, -1246077, -5424544, -3026878, -2313914, -4224101, 5810017, -4345970, -1159104, -5739150,
--4502200, -2107218, -4578435, 6142877, -2261300, -12317429, 4704063, 8262980, 110059, 2985539,
--14969035, 11680700, 211527, -9816148, 989990, -6631430, -1406602, 1035087, -7124277, -8359617,
-5550709, 2593087, -7238094, -498753, 179315, -4482872, -567473, -1660542, 1112397, -3979824,
--2053531, -792958, -1982127, -1014149, -2925947, 950798, -199179, 1493575, -3181497, 738198,
-1787243, -54761, -1811939, 1152662, -1759326, 1656247, 1351304, -1356673, 1317481, -260382,
--936303, -446677, 453119, 625992, 374736, -11076721, 2500208, -8153459, 8719320, 2225867,
--3313031, -6579353, -11533598, -5007932, -8348880, 2894271, 16143708, 2765422, -4180614, -230854,
--2199023, -2468533, -7256347, -4764730, -7471096, 2047089, -548682, 1664300, -2604898, 1264331,
--7895761, -520228, 1824824, -5355824, -1967095, 703301, -2918967, 801548, -2685965, 11941083,
--14548128, -2567317, 1194538, 3944391, -1489817, -5955509, -8918500, -6308233, 4803384, -1247151,
-5327370, -4505958, 13817447, 1838783, -2666101, -105227, -8190503, -10455561, -5286568, 4008815,
--8941585, -509491, 10523207, -258772, -4970351, -9945534, -16865262, 736587, 8664023, -2360622,
-9940702, -862215, -3107946, -6194954, -5508296, 1006096, 3949223, -3142842, 14412300, 4393215,
--4625143, 2258079, -5920076, 2217277, 2725694, -1940252, 3124052, 5881421, 2482491, 311385,
--3868155, -10549513, 712428, -2364916, -1067836, -1575179, 761820, 268972, -139050, -4640712,
-738198, -2644626, 878858, -2604898, -879931, -650151, -244276, -199716, -512712, -1859721,
--1702955, -2041183, -3062312, -3216931, -1364189, 205622, 856309, -1670205, -52613, 137976,
-316217, -1261647, 9472014, -4160213, -10955925, -2996814, -8182987, -4258997, -3556233, 11605002,
--2917894, -3884798, -4900558, 7461432, 6700149, 5923834, 16365436, 17153026, 7936563, 10664404,
--4020626, -4928475, 7086159, 10523207, -4573604, 4629975, 3241090, -9128416, -8654896, 5113159,
--1275068, -105227, -8637179, -10953777, -2616709, -8877697, 10049150, 18808198, 3875134, 7428683,
-2153926, -2202245, 6709276, -12832825, -3439732, 2681133, 7149510, -4219269, -10378252, 15154792,
--35433, -4641786, -3707631, 6224482, -1862942, 5550172, -3792456, 8704825, -733366, -217970,
-10737418, 3348464, 4951561, 1939715, -1640141, 8032126, -12222940, -4892505, 4570919, 13835700,
--8412230, -971200, -1716376, -1941862, -5764383, -1263794, -2990908, -3958349, -565862, 935229,
-3908957, -1619740, 11101954, 4050154, -6370510, -1532767, 832150, 4242354, 1503239, -1922535,
--3841848, -835371, 2456721, -2470143, -2161979, -1889786, 2280091, 1421634, 2252174, 1175210,
--2040110, -807991, 71404, -2061047, -351114, 1615982, 1005559, -253940, -2287070, 3032247,
--408559, 1887638, -1272384, 926102, -2657511, -257698, -383326, 128312, -1768453, 6856916,
--6709813, -2596845, 6191196, -4805532, 2684892, 4668630, -9159555, -9773198, 2804614, 7516193,
--2538863, 6862284, -4968741, -2184528, 13055090, -14771466, 8927626, -4192962, 117575, 416612,
-16117939, -3563212, 3193308, 5140539, 8885750, 5209796, 7785702, -1273458, -1238561, 2557116,
-1262720, 1312649, -7763691, 12103218, -16106664, -3531000, -4231617, 9021579, -1803886, 10990284,
--492848, 1052267, -19167902, -5246303, 11704323, 19894826, -169114, -9849434, -8299488, 8180839,
-6579353, 4954245, 4697621, -8441221, -3858491, -4880157, 2596308, 376347, -5183489, 3077344,
-2684355, -2409477, -2647311, -11558294, -3037616, -4231080, 16557636, 1531156, 3133179, 6287296,
-512175, -12936978, 661425, -7782481, 6482717, 15462956, -8174397, 4792110, -2340757, -8002598,
-3893388, -6706055, -1146219, 2819109, 2094333, 3550864, 1509144, -545461, -2921652, 3359738,
-7257958, 1231045, 3604551, 5970542, 2667712, 6748468, -2019172, 6383395, 335007, 162135,
-1403381, 724776, 1845762, -183073, -3116536, -1730872, 149250, 1717450, 1809792, -1213865,
-3101503, 2936147, -2449742, 4146791, 6984154, -12017855, -4626754, -4521527, 2284386, -693100,
-17877264, -2247879, 620623, 11348914, -10126996, -7352984, -9495099, -9938017, -2417530, -366683,
-4457103, 19123878, -1760937, -11010149, 19794430, 324270, 5528697, 13535589, 9321690, 12632036,
--3320547, 9978820, -6461779, 13224204, 11546483, -3137474, 6007049, -5325223, -4962835, 4993437,
-15115601, 6814503, 5961415, 2141578, -4854924, -8366597, -8539469, 1379221, 10380399, -6060199,
--7320772, -8959302, -3432753, -17757006, -4198331, 3401077, -13081934, 6305549, 890132, -5954972,
--15363098, -10247792, -24159, -20328618, 6328098, 4496831, -498216, 5660767, 3633006, -1986422,
--10641318, -6418292, -1248225, -6712497, 6201396, -7034083, 16773458, -11337103, 537408, 7388418,
-587337, -5070746, -19491636, 3381750, 9451612, 2302639, 485331, 10532870, 5738613, -6041409,
--69793, -704912, 709207, -432181, -3439732, -6845641, -2128156, -7395397, 328028, 1847373,
-814970, -1916629, -3913252, -1772748, -2645163, 3210488, 872415, 4201015, 2895882, 2412698,
-824634, -347892, -1561221, -1301375, -3456912, 1542430, 107374, 1536525, -1733556, -223338,
--2921115, 178778, -2313914, 865973, -24816858, 8718784, 11337640, 19942606, -54224, -14808510,
-4185446, 7137699, -15328738, -15944529, -9960029, -391916, 8521752, -438087, -6238440, -324270,
--5457293, -3677029, -9877351, 16510391, 12904766, 4857071, -20233054, -6063420, 3267933, -1149441,
--4495220, 25629144, 9402757, 8055748, 7557532, 12167105, 9141838, 2226941, 9571335, -647466,
--15891916, 8613557, -16347719, 5005248, -16183974, 13690745, -4265440, 16530255, -8998493, 4021163,
--7274064, 5961952, 9687299, 25229174, 5353677, -32068910, -1677185, -4458176, 6910603, 14021458,
--2813741, -6223945, 10324028, -1814624, -5033165, 13812078, 900869, -606664, 726923, 5918465,
-11070815, 8751533, -9463960, -7050726, -5960341, -9623411, 2285996, -885837, 10947335, 7852811,
--14702210, -3548717, -8303246, 7153805, -4025995, -3931506, 2611877, 483184, -5643050, 4872641,
-1221918, 812823, -803159, 2771865, 2903935, 459562, -8303246, 2331630, 1494649, -1069984,
--1431835, -2771865, 147103, -3709241, 1761474, 4185446, -1231582, -1243930, 4149475, 641024,
--3785477, -2937221, -645856, 1998234, -1623498, -401579, -2309619, 628139, -1528472, 15569,
-3993783, -2647847, 27016954, -10253698, -18022220, -5745056, 7026567, -4465156, 12978854, 18781356,
--7568806, 17223892, 11082089, 8652212, -2857227, -2090039, -3482682, 16706349, 3048353, 2001455,
--9742596, 4224101, -5095442, -439697, -16084653, 10880763, -14760192, 54224, -10413148, 17426830,
--8921184, 375810, 17224430, 13085155, 8848170, -1067836, -6846715, 7995619, -257698, -1562294,
--22011708, -6549289, -13297756, -10813117, -8434779, -3988414, 11436424, 7175817, 6667400, 13959,
-16834662, -8933532, 17814450, 15653008, 16803522, 29389388, -11373073, -8885750, 12922483, 2419677,
--11414949, 17727478, -5843303, -8580808, 5750425, -2209761, -6160594, -5094368, 7612293, -10305774,
-4657355, -6391985, 16284905, -6949257, 243739, 4738960, 11870216, 16131897, 1279900, -14124000,
--15340013, 4989679, -10226317, -32905892, -17328046, 5225902, -391379, 9489730, 1194001, -5414880,
--648003, -3154117, 1372242, -5729487, -2536715, -3941169, -1676111, 423591, -739808, -10298258,
--2730526, -6755447, -6077916, -4774393, 2052458, -505732, 379568, -7509214, -5254893, -311922,
--329102, 1427003, 3811247, 3134789, 2304787, -5415417, 212064, 1192390, -7013145, 2415919,
-355409, 2990908, 1319092, 3824669, 2116345, -1617592, 3204046, -2537789, -1927367, -25209848,
--21310554, -1031866, 4474819, -14551349, 643171, 1285269, 23431194, -15287936, -17490718, 5665062,
--7373385, -31139, -12781823, 12169790, -12986370, -17396766, -10528039, 20098836, -13717589, -11206107,
--2587181, 8158291, -6017786, -14421963, 4466229, -5842766, 77309, 6558415, -19026706, -1436667,
-10525354, 16924318, -2580202, 25871810, 11336029, -2952253, 1141388, 11764452, -4855461, -10524817,
-1986959, 14013941, 1552631, 6726456, 304943, -11480984, 3957812, -25201258, 2283312, 1366873,
--3220152, -14844481, -13484050, 1633698, -6156299, -10193031, -6835978, -8206609, 9634685, -16598975,
--9483288, -4788352, 7210713, -9767829, 20340428, -3066607, -17114908, -1484985, -10193568, -27137750,
--8126615, 1793149, -836982, -17631378, -9423695, -4027606, 4007205, -10480257, -5211406, 17388712,
--6198712, -23741506, -8362302, 3069291, 1806571, 7797513, 6588480, 4918812, -5525476, -6900939,
--1653562, -4823249, 3455301, 1039919, -3053185, 5076652, 2108829, 2982318, -2061047, 2442763,
-1825898, -19327, -1019518, -1762547, -2211908, 38655, 1369021, -8443369, 1800665, -4860829,
-5415954, 2003065, -6249715, -5532992, -490163, -4380867, -648540, 1775969, -1590212, -2959769,
--4637491, -3525095, 2433099, 897111, -5251672, 1952600, 538482, -3496640, -2977486, 19248432,
-17204028, 5158793, 35217660, -6540699, -12300786, -11020886, -5161477, -18969796, 25633438, -15352897,
--5603859, -12435004, -6415608, -5843840, 3026341, -18039936, 283468, 211527, -2486786, 5132486,
--19071266, -4840428, 13086228, -12982076, 716186, -16800838, 16135655, 104690, -28656022, -14860587,
--5187247, -603980, 7971996, -17393544, -9757092, 11965242, -2040646, 8269960, 7597261, 7510824,
--10441602, 1183264, 12680354, 4705674, -23655070, 15273441, 11016591, -12764106, 36339720, -617402,
--26075820, 7263864, 8244190, -530965, 19396072, -5892159, -32395328, 9194451, 4650913, 9769440,
-11504607, -14745696, 23447300, 8892730, 7295539, -5499169, 35505956, -2646774, 617402, 24308978,
--4134443, 11135776, 19182934, 6660958, 2865817, -4513474, 9222905, 490700, 16219944, -7027640,
-15788837, 14579803, 887985, 14429480, 8581345, 11520713, -5812702, 75162, 13104482, 9557913,
-7041062, 4336307, 4486630, -8529268, -1010391, 544387, -4035122, 673236, -1462973, -3574487,
-7594039, -7661685, -1475858, -7511361, 6618008, -3114925, 7930657, -6610492, 1105954, -4557497,
--6675453, 4794257, -2546916, -12348, -6515466, -9514963, -7181186, 7651484, 716186, -2914135,
-789200, 9490804, 6760816, -2643552, 3278671, 306553, -2617246, 9819369, 340376, 7093676,
--25128244, -24663312, 50577000, 16311212, -31601296, -15896211, -14499273, -28941638, -2157147, -15278809,
-21061982, -11921219, 97174, 26268020, 558346, 4354023, -19359566, 24217174, 18051748, -329639,
--5851893, -1904818, -15052250, 1126355, 1905355, 3055869, -20681342, -3028489, -1202591, -6242198,
--4609574, -14271639, 13496935, 26728118, 32125818, -2637647, -13020730, -5450851, -6660421, -4524748,
--19725174, 6687801, 7701950, 7051263, -20554640, -27454504, 29648696, 11175505, 16603807, 21514564,
-20195474, -8779987, -13811004, 19465328, -19835232, 10036802, -14845554, -11414412, -6622303, 23163296,
--7687992, 4685273, 7973607, -4255776, -18752900, 38748660, -23443542, 2377801, 28094454, -25458418,
--11499775, 2959233, 10284299, 28846074, 5186173, -16782584, 492848, 3486440, -3907883, -7067906,
-4175782, -11766600, 9010841, -9747428, -13613973, 7318088, 4160213, 10355703, 4705137, -419833,
--4702453, 1132798, 2941516, 3165928, 11152956, -684510, 1575179, 6864432, -16421807, 2323041,
--7376607, 1762547, 1877438, -2705293, -6187974, -7769059, -1843078, -7797513, 3087008, 4159139,
-9558450, -887985, -6316823, 6014028, 7421704, 4433480, 4558034, -11898670, 467078, 2932389,
--2883534, 10137733, -3768834, 711354, 1141388, 9355513, -4432943, 2758980, 13125420, -8449811,
-8221641, 33676840, 20285130, -3073049, -21614960, 2231236, 34534760, 27492086, 5767604, -27388470,
--10566693, -23649700, -1791001, 18457622, 22807350, -1704565, 8651138, 27113054, 28856812, 44793288,
-45090176, -22558242, 9788767, -24357296, -4429722, -19751480, -7115687, 15520401, -3511136, 6777996,
-6083285, -14043469, -10296110, 11413339, 12728136, 16523813, 11735461, -589484, 12099460, 18241262,
--9704479, 9222905, 10744934, 3178813, 10492605, 34927748, -26304528, -22648974, -5125507, 21570400,
-20666308, -12330314, -191126, 33153926, 26804890, -18837726, -12577812, 11372000, -23002234, 6356015,
--11088532, -20866024, 6694781, -24511378, 25392384, 9308805, 28131498, -11864847, -16517907, -31858994,
--6930467, 10361609, -27929098, -23892366, -13107703, 12424804, 7332046, 5826660, -12331925, 5293011,
--8841190, 3343632, 25854630, -11066520, 2987687, -14735496, 11067594, -6101001, -12400644, 8668855,
-12032351, -6772627, -3541738, -4030827, 8619462, 19273666, -6257231, -13040058, 212064, -289910,
--4886062, -2117956, -18084496, 2440078, -9648644, -4347044, 6440304, -5939940, -3289945, -597000,
--5082557, 7871065, -8004746, -12548821, -11404749, -9603547, 10029822, 5257577, -2422899, 4405026,
-2909840, -8164733, -8936753, 3203509, -15760919, 13298292, 33883532, -2178085, -10481331, 21760452,
-4479114, -1242856, -32248226, 28342490, -13978508, -30634928, -10406706, 2087891, 35334160, 3398930,
-25322590, 10278930, -29976188, -6503654, -26555782, 4279935, -26470420, -19022410, -11361799, 1349157,
-5572720, -20504710, 20145008, -6482717, 12243878, 13173202, 13027173, 24449638, 44573708, 26169772,
--8500814, -21907554, -762357, 46945604, 29241212, -15962783, 23367306, -8985072, 28542206, -14161044,
-2775086, -10597295, -5262409, -1582159, -8015483, 70547520, -13414257, -19451370, -22500796, -31631360,
--12173548, -24376086, -1084479, 27273580, -10853919, 8066486, -9073655, -13895293, 24799142, -6882685,
-41775536, 7754564, 33416994, -40803264, 16816408, 71718976, 26097832, -39978628, 23815056, 21818434,
-1321239, 4641786, -12250320, 13675176, 62954020, 33490008, 14135811, 19108310, -19680614, 36448704,
--3800509, 5617817, 5792301, 9012989, 4237522, 23982560, -19786378, -4922570, 1739462, 30570504,
--5140539, 7513509, 35401268, -2762738, -19672024, -4529580, 13030931, 2171643, -8307004, -19934016,
-11632382, 8352101, -13719736, -8048232, 9549323, -16858820, -14020384, 4593468, 7055558, -30602,
-4911832, 3347390, 5739687, -6158446, 6003291, -3737159, -5005248, 5542119, 2400350, 7657390,
-1186485, 49008260, 22868016, 5441724, -1563905, -53556632, 24910810, 33598992, -24274618, -17652852,
-41486700, 27067958, -33318746, -35330400, 1170379, -20656646, 8903467, 3405372, 8491150, -33199560,
-8586713, -6458557, -16624745, 29488708, -2150168, -4909685, 9814000, 24734180, 22117470, 15212774,
--28513214, 631360, -13975287, -30259118, 10910828, 8588861, 18523120, -6373732, -14250165, 38766376,
--27950574, 12312061, 13313325, 10981695, 8167954, -4772783, 22741314, -21190832, -36839544, -6111739,
--42180872, 36932960, 22488448, 36246840, -3105798, 7184407, -29407104, 30457224, 38131792, 13817984,
--16499654, -42881492, -10088878, -56591024, 618475, -10476499, -38656852, -32530620, 14697378, 2467996,
-23404350, -18202072, 26858042, 22893786, -32408750, 6905234, -19468550, -5340255, -29316910, 3792456,
-84306984, 21201032, 24536612, 31092878, 13538811, -23898808, -3591667, -233002, 19769734, -4495757,
-20316806, -9230958, -13024488, 617402, -1756642, -23594940, 20066088, -3650185, -6147172, -7233262,
--16952772, 2512556, -8187819, -10483478, -15790447, -12021613, 7180112, -8644159, 7018514, 8548596,
--6282464, -9749576, -13703630, 6248104, -2779381, 5830418, 20030116, 12863427, -606664, -1540820,
-6158446, 12909061, -12992813, 11407433, -13100724, -5520644, -33506650, 15107011, 11596412, -15636365,
-5883569, -7935489, -50529216, -13197898, 12910672, -5666136, 5947456, -28071906, 37314676, -48410724,
-4200478, -35402340, 25129316, 27539330, 9288404, 23081154, 2918967, -23271744, 40480604, -18493592,
-4622996, 836445, -22659710, 38253664, 3056943, 10080288, 8753680, 12085501, 6757058, 28714540,
-34033856, 11559368, 39696772, -33888904, -2173254, 241592, 50641424, -9367324, 40473624, 22572738,
-55449640, 11054709, -12002286, -17296370, 22323630, -40871984, 39278012, -23164906, -13355738, -6263136,
-8311836, 29656212, -6395743, -53059488, -14325863, 86611776, 6890738, -54118736, 13931263, -35752380,
-11202885, 85340464, -22907208, -23030688, 59559384, -63459752, 32691144, 14886357, 19760608, 55674588,
-35548372, -48991620, 61152280, 40231496, 2350958, 64951180, -26051662, -8554501, 47342888, 31210990,
-6138045, 12935368, 488553, -257698, 6210523, 16456167, -13961328, 17374754, 17993766, -14105209,
-8126078, 12233141, -20213190, -1499481, 8355859, -1508070, 4539244, 26825292, 1028108, 18028126,
--8681203, 707596, 13360033, -7519951, -6035503, -16836272, 3591667, 16302622, 11190537, 15389942,
--27205934, 16089484, 18838264, 8788040, 3838627, 8083129, -619549, 17121888, 30251066, 7824357,
-14948634, 14123463, -6155225, -7155953, 14775224, 21540872, 29281476, 55824912, 27797028, -26767846,
-35700304, 10699837, 32209034, -9278203, -59617904, 60617556, 52640192, 32345398, 99380712, -9269076,
--83374976, -43110196, -39342976, 88140248, 64801392, 15665893, -5589900, -16109349, -58282168, -27692876,
--18869402, -33502356, 89719720, 72771776, 101192112, 1877975, -115698368, -180230784, -87856776, 100417944,
-135552928, 138379008, 55832964, -114705152, -210686944, -129230200, -65155728, 97231616, 165390608, 93891208,
-51142860, 13663365, -74477416, -100207496, -74891344, -5651103, 58247808, 117871080, 141021488, 25061672,
-27691264, -111823768, -185217776, -98826120, 92532384, 155081600, 147162224, 91807072, -53748832, -180289312,
--116565952, -151182848, 766652, 102634688, 111126376, 55604796, -43793096, -94926832, -83909168, -66519380,
-19963544, 63216012, 44739064, 127896072, 46518252, -28635620, -75277352, -28093382, 85600312, 124496072,
-42426224, -4904853, -75780400, -15532749, -16687022, 49100604, 19110994, -12628278, -52147884, -15904264,
-3488587, -8591008, -15222438, -3584687, 13094818, 26485452, 45679660, 21543556, -43631500, -39674224,
--36269388, 8672076, 48150880, 52459804, 25184078, 5390184, -32849520, -14789183, -65118684, -58641336,
--4144644, 17026860, 73496552, 108803336, 42464340, -38333120, -88883808, -112429896, -45936824, 87628608,
-146404704, 99345816, 31524524, -73296840, -117599960, -58635968, 991601, 21235928, 22835804, 50174880,
-27216670, 10764262, -28748900, -64632816, -46846820, 6252399, -12566537, -32347010, 37434400, 5425081,
--54120348, 7030325, -14050449, -21668110, 16345035, -16573205, -6578280, -28881508, 1734093, -10951093,
--21590264, 8816494, -2385854, 7421167, 3571802, 18177912, -17601850, -5756867, 5516349, 2178085,
-8432095, -7311645, 18211736, -12550431, 12576201, 6177774, -5768141, -13179644, -5686000, -24903830,
-27509802, -2195802, 1048509, -4467840, -6407018, 1819992, -665720, 1031329, 10720775, 6648610,
--179315, 15708306, -13150653, 5092758, -12483859, 14170171, 8563091, -10071698, 7456063, -12368432,
--14230837, -11243151, -22014392, -2033667, 16745004, -14799920, -29995514, -20264192, 1888175, 18705656,
-454730, 14034343, -28559386, -7186554, -3270081, -2277943, -27938762, -6698539, 973347, 4391604,
--10000294, 29468308, 11761768, -9168145, 26897232, -2416993, -48115980, -1768453, -7020124, -4097936,
-9250286, 6320581, 12750684, -14822469, 20633022, -35156992, 10152766, 6458020, -1557463, 197569,
--2378875, -2235531, 11768747, -2027225, 1998770, -5128191, -632971, -10178536, 2530810, 262530,
-20523502, 10201, 9015673, -9338333, 1012002, -4603131, -12348031, 3959423, -465467, -5867999,
-14562087, -2621541, -3997541, -5789079, 10620380, -3926137, -20643760, 4381941, -4256313, 6509023,
--8932458, 1104880, -2764348, -12311524, 11275900, -10870025, 7673496, -10375030, 5315022, -777389,
--4255239, -29228326, -47957068, -75341776, 2769180, 62201864, -23771034, -38155952, -40783936, -38536596,
-8071318, 8012262, 71694816, -10356240, -10268193, -31875100, 3595425, 9716827, 22591528, -23956790,
-12165495, -17419314, 28088550, 8966281, 9212168, 3395709, -17447230, -9484362, -11365020, -3741990,
-10178536, -10513543, -9263171, 19814294, -18064632, -11261941, 16372415, -15557982, -5716065, -13353053,
--21809308, 7727720, 14320495, 2646774, 13491566, -20502564, -5224828, -593242, 11895986, 14749455,
-18253074, 1291175, -1920924, -30842160, -31718870, -11715060, -10296647, -6926709, 14542222, 19957640,
-28144384, 3118683, -12880070, 28245852, -20200304, -9009231, 12537010, -8830990, 37044628, 1898912,
--6213744, 6292664, -13585518, 10764799, 25643640, 21059836, -7647190, 7975755, -25007448, -16282758,
--9315247, -6152541, 18452790, -2388539, 18010946, 4814659, -6028524, 2182380, 3161096, -21626234,
-12787728, -16005196, 9863929, -7341173, -4614943, -1116692, 11697343, -11230803, 1287417, 1994476,
-10189273, 18094698, -9336185, -2688650, -14522358, -5770826, 4817343, -5646809, 3789772, -4412005,
--6060199, -9978820, -15880642, -8637179, 14121852, -5608154, 6847252, -10281615, -2603824, -809601,
--3489661, -9216463, -4394289, 1056562, -1324461, 141197, -243739, -13948980, 19636054, -48543868,
--113477328, -86721832, -10009421, 37539088, 97904856, 82649664, 78922712, 80581640, 53192632, 22388590,
--29042568, -51546588, -98342400, -72493144, -71200896, -71025336, -44149580, 42811160, 57751740, 84813792,
-65161096, 54539104, 18029198, 36365488, -8167417, -9470940, -11410117, -19961934, -37220188, -30565134,
--62704912, -22904524, -49791556, -23795730, -11748883, 16256451, 3301756, 23283554, 5441724, 32631014,
-24084030, 39484172, 52624624, 65243776, 41826004, 27992986, 46466716, 3507915, -15741055, -57412976,
--67177584, -92573192, -82385528, -77167680, -29472602, -50680616, -26412976, 3010772, 14016089, 32560148,
-62366148, 66298188, 74277704, 111997712, 63181116, 85779088, 59629180, 13469017, -9038759, -35306240,
--89620400, -98213016, -93321584, -103745472, -76013944, -53199076, -42516420, -11780558, 21907018, 36452460,
-46553152, 69005632, 73498168, 77189152, 73128800, 45408540, 31883690, 14984604, 1750736, -324270,
--21952652, -36188320, -52003464, -62095028, -65673272, -62372588, -43633648, -19781546, -17519172, -6798397,
-11775190, 30865246, 38734700, 73016056, 51687248, 40594420, 40818832, 14555644, -1588601, -10691247,
--12872554, -13911399, -35380328, -31999654, -22934052, -24275156, -17552994, 2208150, 5609228, 6886443,
--4195110, 11512660, 416612, 13644574, 14296872, 4525822, -4839892, -716723, 3125126, 1840394,
-2273648, 6394670, 1486059, -3404835, -10267119, -2488934, 2340220, -383326, 6375879, 4872641,
--1081795, -1055488, -4389994, -3587372, -2379412, -1650341, -1961190, 1397475, -1194001, -930397,
--272730, -2176475, -2898566, 275952, 583042, 886911, 636729, 428423, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+7975755, -615791, 3212099, 1615982, 3783329, -6770479, -3656628, 4343286, 2100239, 44023,
+-3766150, 767189, -10504416, -6765111, -368293, -4034048, -4562329, 1868311, 8203925, 1373316,
+6246493, -1451699, 6172942, -3692061, -3295314, -415538, -5578626, 1102196, 2767570, -2019172,
+-139050, 1442572, 258235, 2510945, -303332, -5971079, 2130304, -3703336, -2793339, 1669669,
+-3680250, -5572720, 5533529, -5847061, 5265630, 4915590, 3234110, -272730, -6860674, -3997004,
+763967, -1304060, 8812199, -5410585, 2136746, -708133, 1156957, -6687801, -11156714, -1979980,
+-3357054, -3733400, -887985, 4696547, -1032940, -5040144, 4397510, 1858647, -2246805, 3668439,
+-731755, 1089848, -5143224, -438624, -1293859, -99858, 1952063, -2366527, 1578401, -4711579,
+3154654, -754841, 322123, -1735167, -1567126, -3221, 1910187, 681289, -82141, 715649,
+-49929, -2850248, 801548, 204011, 1761474, -312459, 46171, -34897, 26307, -207769,
+-1028645, 4281546, 4270271, 605054, 7701413, -87510, 3325379, 4138738, -50466, -3758633,
+392990, -5340255, -6840273, -2596308, -7794829, -8045011, -2621004, 5288179, -1891933, -1832340,
+-4190814, -1060320, -7326678, 3579855, -2053531, 1808181, 4394826, 1490891, -1544578, 3022046,
+2864206, -3575560, 2481417, 329639, 661425, 2679523, -6391985, -2757906, 4524211, -2902324,
+-213675, -1846299, 5021354, -6437619, -537945, -5391795, 3493419, -320512, -397821, 4871030,
+-2107755, -2340757, -1685775, -4552666, 323196, -2062121, -363998, 301185, 3096672, 3148211,
+1058173, -1398549, -5376226, -8791798, -2727841, -610959, -2174864, 4725538, -1908576, -2710661,
+3770445, -2429878, -3773129, 8343511, -1815161, -4667019, -421444, 766115, -1400159, 4115653,
+-535260, -3678640, 52613, 161598, -794569, -1108102, 3272228, 739271, 461172, -1952600,
+406411, -594853, 220654, 1276679, -287226, 723702, 1518271, 191663, -308164, -327491,
+643171, -1854889, -693637, -370978, -856309, 771484, 639413, -304406, 8938364, -5683316,
+-2679523, -4112431, 3321084, 643708, -398358, 6447820, 1553168, 1890323, -9341017, 1724966,
+-4353486, -5069672, -6584722, -105764, 245350, 7828115, -6387153, 2962454, -2673617, 9678709,
+-3480534, -3204046, 6894497, -2630668, 2386391, 1040993, -446677, 1139777, -4606353, 752156,
+228707, 1954747, 9106404, 3171833, 861141, -3881577, 3194382, -7066295, -1949378, -1351841,
+3883724, 3310883, 5507759, 3606162, -4107599, -6058588, -2631204, 4632122, -554588, 2405719,
+-960462, -666794, 9260486, 2183454, -687195, -11034845, -4908074, 289373, 3854733, 5907728,
+8325257, 4656819, -1991254, 1492501, -2019708, -2821257, 5978595, -3754338, 6155225, 282931,
+-5525476, 2000918, -2838974, 4794257, -4096325, -468151, 4182225, 4782446, -4775467, -1836099,
+-884763, -1961190, 2897492, -642098, -2030983, 1330366, 712965, 732829, 826781, 1160715,
+646929, 694711, 327491, -343061, -397821, -1772748, 2780455, -105227, 185757, 318364,
+62814, 441308, 1494649, 1435593, -44560, -374199, 1858647, 1401233, 1119376, 4686883,
+-1122597, -785442, -1729798, -5486284, 213138, 3940096, 3925063, 7342247, 3365644, -9642202,
+-8054138, -6989523, 288837, -1184337, 511638, -3808026, -2365990, -592706, 2927020, -39728,
+-6177774, 6674916, -954020, -6202470, 1269700, 1464584, -127238, -595927, 2683281, 3534221,
+-2212445, 5401995, 267899, 3164854, -7368017, 5240934, 1864016, 3022046, -5071283, -557272,
+3707094, 3172370, 8046085, -301185, -11112154, -3039763, -5323075, 2603287, 1799591, -461172,
+-2967286, 847719, -4557497, -1615445, -8298414, -4884989, -280247, 4619774, 5156108, -3724274,
+-3187940, -3263638, 5299453, -1810329, -653372, -7969849, 4801774, -7866233, -2732136, -343597,
+-1663763, -2138357, 8366060, -714575, -1945620, -2241973, 1659468, -5045513, 579821, -8748312,
+-7030862, 2559264, -2455111, -1308891, 3124589, -1586454, 4168803, 819265, 1914482, 2933463,
+-785442, 1415729, 956704, 539555, -617402, 1070521, 433255, 261993, -651761, -690953,
+170188, -2565169, -48855, 1604707, 384400, -102005, 303869, -1575716, -509491, 957241,
+-471373, 2231236, -2899640, 4105989, -3301756, 3221, 5667210, 10318659, 7138773, 1532230,
+-8079371, -6062347, 2168422, -1387274, -5181341, -1701344, -6674379, -2870112, 13411035, 1549946,
+-1428614, -2498597, 8053, -3121368, -2158221, 9067213, -9409200, -1110249, 929324, -2013266,
+2362232, 5484137, -2520072, -3098282, 1387274, -3854196, -3760244, -8749385, -3240553, 2356327,
+-7832410, -1313186, 3886946, 5900212, 2099702, -12286828, -3707094, 2468533, 6193343, -4820564,
+10688026, -1246077, -5424544, -3026878, -2313914, -4224101, 5810017, -4345970, -1159104, -5739150,
+-4502200, -2107218, -4578435, 6142877, -2261300, -12317429, 4704063, 8262980, 110059, 2985539,
+-14969035, 11680700, 211527, -9816148, 989990, -6631430, -1406602, 1035087, -7124277, -8359617,
+5550709, 2593087, -7238094, -498753, 179315, -4482872, -567473, -1660542, 1112397, -3979824,
+-2053531, -792958, -1982127, -1014149, -2925947, 950798, -199179, 1493575, -3181497, 738198,
+1787243, -54761, -1811939, 1152662, -1759326, 1656247, 1351304, -1356673, 1317481, -260382,
+-936303, -446677, 453119, 625992, 374736, -11076721, 2500208, -8153459, 8719320, 2225867,
+-3313031, -6579353, -11533598, -5007932, -8348880, 2894271, 16143708, 2765422, -4180614, -230854,
+-2199023, -2468533, -7256347, -4764730, -7471096, 2047089, -548682, 1664300, -2604898, 1264331,
+-7895761, -520228, 1824824, -5355824, -1967095, 703301, -2918967, 801548, -2685965, 11941083,
+-14548128, -2567317, 1194538, 3944391, -1489817, -5955509, -8918500, -6308233, 4803384, -1247151,
+5327370, -4505958, 13817447, 1838783, -2666101, -105227, -8190503, -10455561, -5286568, 4008815,
+-8941585, -509491, 10523207, -258772, -4970351, -9945534, -16865262, 736587, 8664023, -2360622,
+9940702, -862215, -3107946, -6194954, -5508296, 1006096, 3949223, -3142842, 14412300, 4393215,
+-4625143, 2258079, -5920076, 2217277, 2725694, -1940252, 3124052, 5881421, 2482491, 311385,
+-3868155, -10549513, 712428, -2364916, -1067836, -1575179, 761820, 268972, -139050, -4640712,
+738198, -2644626, 878858, -2604898, -879931, -650151, -244276, -199716, -512712, -1859721,
+-1702955, -2041183, -3062312, -3216931, -1364189, 205622, 856309, -1670205, -52613, 137976,
+316217, -1261647, 9472014, -4160213, -10955925, -2996814, -8182987, -4258997, -3556233, 11605002,
+-2917894, -3884798, -4900558, 7461432, 6700149, 5923834, 16365436, 17153026, 7936563, 10664404,
+-4020626, -4928475, 7086159, 10523207, -4573604, 4629975, 3241090, -9128416, -8654896, 5113159,
+-1275068, -105227, -8637179, -10953777, -2616709, -8877697, 10049150, 18808198, 3875134, 7428683,
+2153926, -2202245, 6709276, -12832825, -3439732, 2681133, 7149510, -4219269, -10378252, 15154792,
+-35433, -4641786, -3707631, 6224482, -1862942, 5550172, -3792456, 8704825, -733366, -217970,
+10737418, 3348464, 4951561, 1939715, -1640141, 8032126, -12222940, -4892505, 4570919, 13835700,
+-8412230, -971200, -1716376, -1941862, -5764383, -1263794, -2990908, -3958349, -565862, 935229,
+3908957, -1619740, 11101954, 4050154, -6370510, -1532767, 832150, 4242354, 1503239, -1922535,
+-3841848, -835371, 2456721, -2470143, -2161979, -1889786, 2280091, 1421634, 2252174, 1175210,
+-2040110, -807991, 71404, -2061047, -351114, 1615982, 1005559, -253940, -2287070, 3032247,
+-408559, 1887638, -1272384, 926102, -2657511, -257698, -383326, 128312, -1768453, 6856916,
+-6709813, -2596845, 6191196, -4805532, 2684892, 4668630, -9159555, -9773198, 2804614, 7516193,
+-2538863, 6862284, -4968741, -2184528, 13055090, -14771466, 8927626, -4192962, 117575, 416612,
+16117939, -3563212, 3193308, 5140539, 8885750, 5209796, 7785702, -1273458, -1238561, 2557116,
+1262720, 1312649, -7763691, 12103218, -16106664, -3531000, -4231617, 9021579, -1803886, 10990284,
+-492848, 1052267, -19167902, -5246303, 11704323, 19894826, -169114, -9849434, -8299488, 8180839,
+6579353, 4954245, 4697621, -8441221, -3858491, -4880157, 2596308, 376347, -5183489, 3077344,
+2684355, -2409477, -2647311, -11558294, -3037616, -4231080, 16557636, 1531156, 3133179, 6287296,
+512175, -12936978, 661425, -7782481, 6482717, 15462956, -8174397, 4792110, -2340757, -8002598,
+3893388, -6706055, -1146219, 2819109, 2094333, 3550864, 1509144, -545461, -2921652, 3359738,
+7257958, 1231045, 3604551, 5970542, 2667712, 6748468, -2019172, 6383395, 335007, 162135,
+1403381, 724776, 1845762, -183073, -3116536, -1730872, 149250, 1717450, 1809792, -1213865,
+3101503, 2936147, -2449742, 4146791, 6984154, -12017855, -4626754, -4521527, 2284386, -693100,
+17877264, -2247879, 620623, 11348914, -10126996, -7352984, -9495099, -9938017, -2417530, -366683,
+4457103, 19123878, -1760937, -11010149, 19794430, 324270, 5528697, 13535589, 9321690, 12632036,
+-3320547, 9978820, -6461779, 13224204, 11546483, -3137474, 6007049, -5325223, -4962835, 4993437,
+15115601, 6814503, 5961415, 2141578, -4854924, -8366597, -8539469, 1379221, 10380399, -6060199,
+-7320772, -8959302, -3432753, -17757006, -4198331, 3401077, -13081934, 6305549, 890132, -5954972,
+-15363098, -10247792, -24159, -20328618, 6328098, 4496831, -498216, 5660767, 3633006, -1986422,
+-10641318, -6418292, -1248225, -6712497, 6201396, -7034083, 16773458, -11337103, 537408, 7388418,
+587337, -5070746, -19491636, 3381750, 9451612, 2302639, 485331, 10532870, 5738613, -6041409,
+-69793, -704912, 709207, -432181, -3439732, -6845641, -2128156, -7395397, 328028, 1847373,
+814970, -1916629, -3913252, -1772748, -2645163, 3210488, 872415, 4201015, 2895882, 2412698,
+824634, -347892, -1561221, -1301375, -3456912, 1542430, 107374, 1536525, -1733556, -223338,
+-2921115, 178778, -2313914, 865973, -24816858, 8718784, 11337640, 19942606, -54224, -14808510,
+4185446, 7137699, -15328738, -15944529, -9960029, -391916, 8521752, -438087, -6238440, -324270,
+-5457293, -3677029, -9877351, 16510391, 12904766, 4857071, -20233054, -6063420, 3267933, -1149441,
+-4495220, 25629144, 9402757, 8055748, 7557532, 12167105, 9141838, 2226941, 9571335, -647466,
+-15891916, 8613557, -16347719, 5005248, -16183974, 13690745, -4265440, 16530255, -8998493, 4021163,
+-7274064, 5961952, 9687299, 25229174, 5353677, -32068910, -1677185, -4458176, 6910603, 14021458,
+-2813741, -6223945, 10324028, -1814624, -5033165, 13812078, 900869, -606664, 726923, 5918465,
+11070815, 8751533, -9463960, -7050726, -5960341, -9623411, 2285996, -885837, 10947335, 7852811,
+-14702210, -3548717, -8303246, 7153805, -4025995, -3931506, 2611877, 483184, -5643050, 4872641,
+1221918, 812823, -803159, 2771865, 2903935, 459562, -8303246, 2331630, 1494649, -1069984,
+-1431835, -2771865, 147103, -3709241, 1761474, 4185446, -1231582, -1243930, 4149475, 641024,
+-3785477, -2937221, -645856, 1998234, -1623498, -401579, -2309619, 628139, -1528472, 15569,
+3993783, -2647847, 27016954, -10253698, -18022220, -5745056, 7026567, -4465156, 12978854, 18781356,
+-7568806, 17223892, 11082089, 8652212, -2857227, -2090039, -3482682, 16706349, 3048353, 2001455,
+-9742596, 4224101, -5095442, -439697, -16084653, 10880763, -14760192, 54224, -10413148, 17426830,
+-8921184, 375810, 17224430, 13085155, 8848170, -1067836, -6846715, 7995619, -257698, -1562294,
+-22011708, -6549289, -13297756, -10813117, -8434779, -3988414, 11436424, 7175817, 6667400, 13959,
+16834662, -8933532, 17814450, 15653008, 16803522, 29389388, -11373073, -8885750, 12922483, 2419677,
+-11414949, 17727478, -5843303, -8580808, 5750425, -2209761, -6160594, -5094368, 7612293, -10305774,
+4657355, -6391985, 16284905, -6949257, 243739, 4738960, 11870216, 16131897, 1279900, -14124000,
+-15340013, 4989679, -10226317, -32905892, -17328046, 5225902, -391379, 9489730, 1194001, -5414880,
+-648003, -3154117, 1372242, -5729487, -2536715, -3941169, -1676111, 423591, -739808, -10298258,
+-2730526, -6755447, -6077916, -4774393, 2052458, -505732, 379568, -7509214, -5254893, -311922,
+-329102, 1427003, 3811247, 3134789, 2304787, -5415417, 212064, 1192390, -7013145, 2415919,
+355409, 2990908, 1319092, 3824669, 2116345, -1617592, 3204046, -2537789, -1927367, -25209848,
+-21310554, -1031866, 4474819, -14551349, 643171, 1285269, 23431194, -15287936, -17490718, 5665062,
+-7373385, -31139, -12781823, 12169790, -12986370, -17396766, -10528039, 20098836, -13717589, -11206107,
+-2587181, 8158291, -6017786, -14421963, 4466229, -5842766, 77309, 6558415, -19026706, -1436667,
+10525354, 16924318, -2580202, 25871810, 11336029, -2952253, 1141388, 11764452, -4855461, -10524817,
+1986959, 14013941, 1552631, 6726456, 304943, -11480984, 3957812, -25201258, 2283312, 1366873,
+-3220152, -14844481, -13484050, 1633698, -6156299, -10193031, -6835978, -8206609, 9634685, -16598975,
+-9483288, -4788352, 7210713, -9767829, 20340428, -3066607, -17114908, -1484985, -10193568, -27137750,
+-8126615, 1793149, -836982, -17631378, -9423695, -4027606, 4007205, -10480257, -5211406, 17388712,
+-6198712, -23741506, -8362302, 3069291, 1806571, 7797513, 6588480, 4918812, -5525476, -6900939,
+-1653562, -4823249, 3455301, 1039919, -3053185, 5076652, 2108829, 2982318, -2061047, 2442763,
+1825898, -19327, -1019518, -1762547, -2211908, 38655, 1369021, -8443369, 1800665, -4860829,
+5415954, 2003065, -6249715, -5532992, -490163, -4380867, -648540, 1775969, -1590212, -2959769,
+-4637491, -3525095, 2433099, 897111, -5251672, 1952600, 538482, -3496640, -2977486, 19248432,
+17204028, 5158793, 35217660, -6540699, -12300786, -11020886, -5161477, -18969796, 25633438, -15352897,
+-5603859, -12435004, -6415608, -5843840, 3026341, -18039936, 283468, 211527, -2486786, 5132486,
+-19071266, -4840428, 13086228, -12982076, 716186, -16800838, 16135655, 104690, -28656022, -14860587,
+-5187247, -603980, 7971996, -17393544, -9757092, 11965242, -2040646, 8269960, 7597261, 7510824,
+-10441602, 1183264, 12680354, 4705674, -23655070, 15273441, 11016591, -12764106, 36339720, -617402,
+-26075820, 7263864, 8244190, -530965, 19396072, -5892159, -32395328, 9194451, 4650913, 9769440,
+11504607, -14745696, 23447300, 8892730, 7295539, -5499169, 35505956, -2646774, 617402, 24308978,
+-4134443, 11135776, 19182934, 6660958, 2865817, -4513474, 9222905, 490700, 16219944, -7027640,
+15788837, 14579803, 887985, 14429480, 8581345, 11520713, -5812702, 75162, 13104482, 9557913,
+7041062, 4336307, 4486630, -8529268, -1010391, 544387, -4035122, 673236, -1462973, -3574487,
+7594039, -7661685, -1475858, -7511361, 6618008, -3114925, 7930657, -6610492, 1105954, -4557497,
+-6675453, 4794257, -2546916, -12348, -6515466, -9514963, -7181186, 7651484, 716186, -2914135,
+789200, 9490804, 6760816, -2643552, 3278671, 306553, -2617246, 9819369, 340376, 7093676,
+-25128244, -24663312, 50577000, 16311212, -31601296, -15896211, -14499273, -28941638, -2157147, -15278809,
+21061982, -11921219, 97174, 26268020, 558346, 4354023, -19359566, 24217174, 18051748, -329639,
+-5851893, -1904818, -15052250, 1126355, 1905355, 3055869, -20681342, -3028489, -1202591, -6242198,
+-4609574, -14271639, 13496935, 26728118, 32125818, -2637647, -13020730, -5450851, -6660421, -4524748,
+-19725174, 6687801, 7701950, 7051263, -20554640, -27454504, 29648696, 11175505, 16603807, 21514564,
+20195474, -8779987, -13811004, 19465328, -19835232, 10036802, -14845554, -11414412, -6622303, 23163296,
+-7687992, 4685273, 7973607, -4255776, -18752900, 38748660, -23443542, 2377801, 28094454, -25458418,
+-11499775, 2959233, 10284299, 28846074, 5186173, -16782584, 492848, 3486440, -3907883, -7067906,
+4175782, -11766600, 9010841, -9747428, -13613973, 7318088, 4160213, 10355703, 4705137, -419833,
+-4702453, 1132798, 2941516, 3165928, 11152956, -684510, 1575179, 6864432, -16421807, 2323041,
+-7376607, 1762547, 1877438, -2705293, -6187974, -7769059, -1843078, -7797513, 3087008, 4159139,
+9558450, -887985, -6316823, 6014028, 7421704, 4433480, 4558034, -11898670, 467078, 2932389,
+-2883534, 10137733, -3768834, 711354, 1141388, 9355513, -4432943, 2758980, 13125420, -8449811,
+8221641, 33676840, 20285130, -3073049, -21614960, 2231236, 34534760, 27492086, 5767604, -27388470,
+-10566693, -23649700, -1791001, 18457622, 22807350, -1704565, 8651138, 27113054, 28856812, 44793288,
+45090176, -22558242, 9788767, -24357296, -4429722, -19751480, -7115687, 15520401, -3511136, 6777996,
+6083285, -14043469, -10296110, 11413339, 12728136, 16523813, 11735461, -589484, 12099460, 18241262,
+-9704479, 9222905, 10744934, 3178813, 10492605, 34927748, -26304528, -22648974, -5125507, 21570400,
+20666308, -12330314, -191126, 33153926, 26804890, -18837726, -12577812, 11372000, -23002234, 6356015,
+-11088532, -20866024, 6694781, -24511378, 25392384, 9308805, 28131498, -11864847, -16517907, -31858994,
+-6930467, 10361609, -27929098, -23892366, -13107703, 12424804, 7332046, 5826660, -12331925, 5293011,
+-8841190, 3343632, 25854630, -11066520, 2987687, -14735496, 11067594, -6101001, -12400644, 8668855,
+12032351, -6772627, -3541738, -4030827, 8619462, 19273666, -6257231, -13040058, 212064, -289910,
+-4886062, -2117956, -18084496, 2440078, -9648644, -4347044, 6440304, -5939940, -3289945, -597000,
+-5082557, 7871065, -8004746, -12548821, -11404749, -9603547, 10029822, 5257577, -2422899, 4405026,
+2909840, -8164733, -8936753, 3203509, -15760919, 13298292, 33883532, -2178085, -10481331, 21760452,
+4479114, -1242856, -32248226, 28342490, -13978508, -30634928, -10406706, 2087891, 35334160, 3398930,
+25322590, 10278930, -29976188, -6503654, -26555782, 4279935, -26470420, -19022410, -11361799, 1349157,
+5572720, -20504710, 20145008, -6482717, 12243878, 13173202, 13027173, 24449638, 44573708, 26169772,
+-8500814, -21907554, -762357, 46945604, 29241212, -15962783, 23367306, -8985072, 28542206, -14161044,
+2775086, -10597295, -5262409, -1582159, -8015483, 70547520, -13414257, -19451370, -22500796, -31631360,
+-12173548, -24376086, -1084479, 27273580, -10853919, 8066486, -9073655, -13895293, 24799142, -6882685,
+41775536, 7754564, 33416994, -40803264, 16816408, 71718976, 26097832, -39978628, 23815056, 21818434,
+1321239, 4641786, -12250320, 13675176, 62954020, 33490008, 14135811, 19108310, -19680614, 36448704,
+-3800509, 5617817, 5792301, 9012989, 4237522, 23982560, -19786378, -4922570, 1739462, 30570504,
+-5140539, 7513509, 35401268, -2762738, -19672024, -4529580, 13030931, 2171643, -8307004, -19934016,
+11632382, 8352101, -13719736, -8048232, 9549323, -16858820, -14020384, 4593468, 7055558, -30602,
+4911832, 3347390, 5739687, -6158446, 6003291, -3737159, -5005248, 5542119, 2400350, 7657390,
+1186485, 49008260, 22868016, 5441724, -1563905, -53556632, 24910810, 33598992, -24274618, -17652852,
+41486700, 27067958, -33318746, -35330400, 1170379, -20656646, 8903467, 3405372, 8491150, -33199560,
+8586713, -6458557, -16624745, 29488708, -2150168, -4909685, 9814000, 24734180, 22117470, 15212774,
+-28513214, 631360, -13975287, -30259118, 10910828, 8588861, 18523120, -6373732, -14250165, 38766376,
+-27950574, 12312061, 13313325, 10981695, 8167954, -4772783, 22741314, -21190832, -36839544, -6111739,
+-42180872, 36932960, 22488448, 36246840, -3105798, 7184407, -29407104, 30457224, 38131792, 13817984,
+-16499654, -42881492, -10088878, -56591024, 618475, -10476499, -38656852, -32530620, 14697378, 2467996,
+23404350, -18202072, 26858042, 22893786, -32408750, 6905234, -19468550, -5340255, -29316910, 3792456,
+84306984, 21201032, 24536612, 31092878, 13538811, -23898808, -3591667, -233002, 19769734, -4495757,
+20316806, -9230958, -13024488, 617402, -1756642, -23594940, 20066088, -3650185, -6147172, -7233262,
+-16952772, 2512556, -8187819, -10483478, -15790447, -12021613, 7180112, -8644159, 7018514, 8548596,
+-6282464, -9749576, -13703630, 6248104, -2779381, 5830418, 20030116, 12863427, -606664, -1540820,
+6158446, 12909061, -12992813, 11407433, -13100724, -5520644, -33506650, 15107011, 11596412, -15636365,
+5883569, -7935489, -50529216, -13197898, 12910672, -5666136, 5947456, -28071906, 37314676, -48410724,
+4200478, -35402340, 25129316, 27539330, 9288404, 23081154, 2918967, -23271744, 40480604, -18493592,
+4622996, 836445, -22659710, 38253664, 3056943, 10080288, 8753680, 12085501, 6757058, 28714540,
+34033856, 11559368, 39696772, -33888904, -2173254, 241592, 50641424, -9367324, 40473624, 22572738,
+55449640, 11054709, -12002286, -17296370, 22323630, -40871984, 39278012, -23164906, -13355738, -6263136,
+8311836, 29656212, -6395743, -53059488, -14325863, 86611776, 6890738, -54118736, 13931263, -35752380,
+11202885, 85340464, -22907208, -23030688, 59559384, -63459752, 32691144, 14886357, 19760608, 55674588,
+35548372, -48991620, 61152280, 40231496, 2350958, 64951180, -26051662, -8554501, 47342888, 31210990,
+6138045, 12935368, 488553, -257698, 6210523, 16456167, -13961328, 17374754, 17993766, -14105209,
+8126078, 12233141, -20213190, -1499481, 8355859, -1508070, 4539244, 26825292, 1028108, 18028126,
+-8681203, 707596, 13360033, -7519951, -6035503, -16836272, 3591667, 16302622, 11190537, 15389942,
+-27205934, 16089484, 18838264, 8788040, 3838627, 8083129, -619549, 17121888, 30251066, 7824357,
+14948634, 14123463, -6155225, -7155953, 14775224, 21540872, 29281476, 55824912, 27797028, -26767846,
+35700304, 10699837, 32209034, -9278203, -59617904, 60617556, 52640192, 32345398, 99380712, -9269076,
+-83374976, -43110196, -39342976, 88140248, 64801392, 15665893, -5589900, -16109349, -58282168, -27692876,
+-18869402, -33502356, 89719720, 72771776, 101192112, 1877975, -115698368, -180230784, -87856776, 100417944,
+135552928, 138379008, 55832964, -114705152, -210686944, -129230200, -65155728, 97231616, 165390608, 93891208,
+51142860, 13663365, -74477416, -100207496, -74891344, -5651103, 58247808, 117871080, 141021488, 25061672,
+27691264, -111823768, -185217776, -98826120, 92532384, 155081600, 147162224, 91807072, -53748832, -180289312,
+-116565952, -151182848, 766652, 102634688, 111126376, 55604796, -43793096, -94926832, -83909168, -66519380,
+19963544, 63216012, 44739064, 127896072, 46518252, -28635620, -75277352, -28093382, 85600312, 124496072,
+42426224, -4904853, -75780400, -15532749, -16687022, 49100604, 19110994, -12628278, -52147884, -15904264,
+3488587, -8591008, -15222438, -3584687, 13094818, 26485452, 45679660, 21543556, -43631500, -39674224,
+-36269388, 8672076, 48150880, 52459804, 25184078, 5390184, -32849520, -14789183, -65118684, -58641336,
+-4144644, 17026860, 73496552, 108803336, 42464340, -38333120, -88883808, -112429896, -45936824, 87628608,
+146404704, 99345816, 31524524, -73296840, -117599960, -58635968, 991601, 21235928, 22835804, 50174880,
+27216670, 10764262, -28748900, -64632816, -46846820, 6252399, -12566537, -32347010, 37434400, 5425081,
+-54120348, 7030325, -14050449, -21668110, 16345035, -16573205, -6578280, -28881508, 1734093, -10951093,
+-21590264, 8816494, -2385854, 7421167, 3571802, 18177912, -17601850, -5756867, 5516349, 2178085,
+8432095, -7311645, 18211736, -12550431, 12576201, 6177774, -5768141, -13179644, -5686000, -24903830,
+27509802, -2195802, 1048509, -4467840, -6407018, 1819992, -665720, 1031329, 10720775, 6648610,
+-179315, 15708306, -13150653, 5092758, -12483859, 14170171, 8563091, -10071698, 7456063, -12368432,
+-14230837, -11243151, -22014392, -2033667, 16745004, -14799920, -29995514, -20264192, 1888175, 18705656,
+454730, 14034343, -28559386, -7186554, -3270081, -2277943, -27938762, -6698539, 973347, 4391604,
+-10000294, 29468308, 11761768, -9168145, 26897232, -2416993, -48115980, -1768453, -7020124, -4097936,
+9250286, 6320581, 12750684, -14822469, 20633022, -35156992, 10152766, 6458020, -1557463, 197569,
+-2378875, -2235531, 11768747, -2027225, 1998770, -5128191, -632971, -10178536, 2530810, 262530,
+20523502, 10201, 9015673, -9338333, 1012002, -4603131, -12348031, 3959423, -465467, -5867999,
+14562087, -2621541, -3997541, -5789079, 10620380, -3926137, -20643760, 4381941, -4256313, 6509023,
+-8932458, 1104880, -2764348, -12311524, 11275900, -10870025, 7673496, -10375030, 5315022, -777389,
+-4255239, -29228326, -47957068, -75341776, 2769180, 62201864, -23771034, -38155952, -40783936, -38536596,
+8071318, 8012262, 71694816, -10356240, -10268193, -31875100, 3595425, 9716827, 22591528, -23956790,
+12165495, -17419314, 28088550, 8966281, 9212168, 3395709, -17447230, -9484362, -11365020, -3741990,
+10178536, -10513543, -9263171, 19814294, -18064632, -11261941, 16372415, -15557982, -5716065, -13353053,
+-21809308, 7727720, 14320495, 2646774, 13491566, -20502564, -5224828, -593242, 11895986, 14749455,
+18253074, 1291175, -1920924, -30842160, -31718870, -11715060, -10296647, -6926709, 14542222, 19957640,
+28144384, 3118683, -12880070, 28245852, -20200304, -9009231, 12537010, -8830990, 37044628, 1898912,
+-6213744, 6292664, -13585518, 10764799, 25643640, 21059836, -7647190, 7975755, -25007448, -16282758,
+-9315247, -6152541, 18452790, -2388539, 18010946, 4814659, -6028524, 2182380, 3161096, -21626234,
+12787728, -16005196, 9863929, -7341173, -4614943, -1116692, 11697343, -11230803, 1287417, 1994476,
+10189273, 18094698, -9336185, -2688650, -14522358, -5770826, 4817343, -5646809, 3789772, -4412005,
+-6060199, -9978820, -15880642, -8637179, 14121852, -5608154, 6847252, -10281615, -2603824, -809601,
+-3489661, -9216463, -4394289, 1056562, -1324461, 141197, -243739, -13948980, 19636054, -48543868,
+-113477328, -86721832, -10009421, 37539088, 97904856, 82649664, 78922712, 80581640, 53192632, 22388590,
+-29042568, -51546588, -98342400, -72493144, -71200896, -71025336, -44149580, 42811160, 57751740, 84813792,
+65161096, 54539104, 18029198, 36365488, -8167417, -9470940, -11410117, -19961934, -37220188, -30565134,
+-62704912, -22904524, -49791556, -23795730, -11748883, 16256451, 3301756, 23283554, 5441724, 32631014,
+24084030, 39484172, 52624624, 65243776, 41826004, 27992986, 46466716, 3507915, -15741055, -57412976,
+-67177584, -92573192, -82385528, -77167680, -29472602, -50680616, -26412976, 3010772, 14016089, 32560148,
+62366148, 66298188, 74277704, 111997712, 63181116, 85779088, 59629180, 13469017, -9038759, -35306240,
+-89620400, -98213016, -93321584, -103745472, -76013944, -53199076, -42516420, -11780558, 21907018, 36452460,
+46553152, 69005632, 73498168, 77189152, 73128800, 45408540, 31883690, 14984604, 1750736, -324270,
+-21952652, -36188320, -52003464, -62095028, -65673272, -62372588, -43633648, -19781546, -17519172, -6798397,
+11775190, 30865246, 38734700, 73016056, 51687248, 40594420, 40818832, 14555644, -1588601, -10691247,
+-12872554, -13911399, -35380328, -31999654, -22934052, -24275156, -17552994, 2208150, 5609228, 6886443,
+-4195110, 11512660, 416612, 13644574, 14296872, 4525822, -4839892, -716723, 3125126, 1840394,
+2273648, 6394670, 1486059, -3404835, -10267119, -2488934, 2340220, -383326, 6375879, 4872641,
+-1081795, -1055488, -4389994, -3587372, -2379412, -1650341, -1961190, 1397475, -1194001, -930397,
+-272730, -2176475, -2898566, 275952, 583042, 886911, 636729, 428423, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-9297530,
-7221988, 367757, 3323768, 3297998, 9343701, 4401805, -3434900, -4341138, -6060736, 4363150,
--5300527, -3850975, 879931, 1349157, 587337, 5486821, -1776506, 5129265, -1298691, 4605279,
--4337917, 2026688, -1909650, -4636417, -316217, -8854075, 1341640, 2187212, 3976066, -3227131,
--40802, 3470871, -2535105, 3897146, 3669513, -2185602, 2638184, -2932926, -1358820, -2165737,
--3169686, -4029753, 3628174, 5354751, -3989488, 2382096, 4307316, 3488050, 5270999, 671626,
--780610, 3074123, 2334852, -5551782, -202937, 653909, 363462, 1775969, 3614215, 818728,
-1315871, -1920387, -1213865, 2561948, 3590593, 2007360, -1890859, -3312494, 3701188, -2989297,
--967441, 2077154, -616865, -125628, 1580548, 382252, 106300, 3357591, -3272228, 2503429,
-1363115, 1644436, 3097208, -1236414, -354335, -1037235, -430034, 135828, 1517734, -1194538,
--216359, -823023, -476205, 57982, -116501, -476741, -340913, 347892, 449361, -2684,
--195421, -328565, 49392, -100395, 52076, -474594, -107911, 487479, -1068910, 3682935,
--1955821, 2697776, 256087, -230854, -7508140, 1202591, 6391448, -3927748, 2639794, -7973070,
--8067023, -2660195, -6560026, -5726802, -863825, 1180042, 4503810, 714575, -2172717, 1017907,
-3064996, -3966939, 5491653, -3724274, -4027069, 4651987, -2317672, 5359583, 6813429, 941672,
--4916664, 3437585, 2246805, 1376537, -2502355, -1815161, 2861522, 2388002, 485868, -5558225,
--1603633, -5134634, 4635344, -4634807, -3021510, 3410204, 161598, 2959769, 848256, 1134408,
-5045513, 851477, 5659157, -7297687, -3744675, -1688996, 3616363, 5109938, 5844377, 7947837,
-864899, -2267743, -759136, -1069984, -241592, -5170067, -2260764, -2251100, -626528, 794569,
--4188667, -2485176, -943282, -1788317, -3274376, 3934190, -3936338, -1347009, 2625836, -6753299,
-2043868, 3675418, 4085588, 2143726, 1187559, 2441689, -1194001, -2622615, -655519, 700617,
--276489, 700617, 134218, -733366, 57445, -1054415, -1227824, 1497333, 682363, -144955,
--4832, -17717, 1147830, 523986, -438087, -472983, -457414, 78383, 851477, -1008244,
--159988, -63351, -177167, 549219, -18254, -413391, 8549669, -6314676, -2361158, -1233729,
-5261872, 4751845, -4768488, -421444, -8863202, -1924145, 10776610, 4070555, -4316442, 7743826,
-2535641, 2988224, 802622, -2575907, -8458401, 1154273, -3801583, -2398202, -1534377, -5146982,
--1813550, -3980361, 2803540, -1792612, -2325188, 4850629, -9104257, 8405788, -2943126, 1209033,
--2841121, 2634963, -325881, -821949, -211527, 3586835, 191126, 2273112, -3244848, 6300180,
--4873714, 7333657, 1573032, -709743, -4083440, -4792647, 9961640, 1729261, -9310952, 9550397,
-9002788, -4867809, -1774895, 2835752, -3666828, -672699, -2254321, 2269890, 5747740, -3475702,
-1324997, -2600603, -2373506, 951335, 7732552, -7066832, 4308389, -7284265, -5595806, -5258651,
--916439, 153545, 9664, 4423817, 6847252, 1791538, 1671816, 3344706, 2719788, 1501628,
-1709934, 2007897, -727460, 2160369, -972810, -2112050, 3649649, -178778, 513785, -657130,
--1066763, -630286, 36507, 1540283, -376883, 346819, 166967, -1367410, 25233, 758062,
-980863, -111669, 859530, 2437931, -3271691, 395674, -6462852, 6227703, -9084393, 387621,
-9549860, -17251274, 12074227, 4850092, -4559108, 3829500, -312996, 10531797, -1057099, -8636105,
--6022618, 3571265, 4108673, 1214939, 331249, 4505958, 1379758, 783295, 6094559, 2528125,
-1777580, 4413079, 3185255, 15004468, -4058207, 4035659, -161598, -2395518, 3934727, 2471217,
-1574106, 1959042, -2392834, -4076998, 331249, 56371, 271657, 2226941, 4620311, -4590247,
--4884452, 2199560, -1125281, -1826435, -2900177, 6149320, -4306779, 8858907, 4191888, 455803,
-2124935, 810138, 2464774, 11239393, 9446781, 783295, 592706, 2216740, -2184528, 4252018,
--857383, 3842385, 1225676, 318364, 70330, -4691715, 4628901, 3565897, -952946, -2663417,
-446140, 4468914, 498753, -1154809, 319975, -3246459, 2478733, 988916, 3140158, -731755,
-982474, 1372242, 1354525, 1163936, 1916092, 963683, 896038, -3966939, -159451, 1671279,
-2353105, -1298154, 1555315, 1452236, 1293322, 1460289, 663572, 1152662, 1407139, 1580548,
-317828, 667331, 511638, 778463, 299574, 481036, 1009854, 459025, -91805, -796716,
--1087701, 2228551, -1000727, 4868346, 132070, 5616744, -2121177, 4984847, -3733400, 10399726,
--7916699, -2935610, -3769371, 10723996, 6070937, 3959960, 6806450, -6109591, -1226750, 9899363,
-5615670, 4661650, 4806069, 2587718, 3305514, -1101122, 9478993, -953483, -4347581, -3209414,
-3330210, -3539590, 2179696, -8921721, 3326452, -1684701, 185757, -9587441, 4158065, -2030983,
-9040369, -1440425, 2867428, 2510945, -3797288, -912144, 4122632, 600222, 2829847, -2001992,
-5016522, 7135552, 905701, -4919348, 1909113, 5028870, 3577708, 696858, -3388729, -6945499,
-5857262, -7736847, -3284039, 4396436, -10304163, -2323041, 6398965, -4723927, 1348620, 128312,
--576063, -1338956, 2604361, -5100274, 288300, -8542690, -4440460, -11689827, 890132, -3248606,
-261456, -2230162, -361851, -2940442, 2691871, 2615098, 1040993, -1809255, 2485176, -235686,
-971736, -3335579, 865436, 739808, 1086627, 788663, 2325188, -251256, 2623151, -1100049,
--172872, 1869921, 2462090, 433255, 1363115, -1532230, -597000, -396748, -612570, -1085553,
-766115, 1970316, 524523, 2076617, -1919850, -1100049, -1075889, -2611877, -3059091, 2805688,
--18962818, 3308736, -5982353, -3485366, 4337380, 3279745, 2306398, 810675, -13933948, -1495722,
-4329864, -7511361, -1967632, -10266582, -5218922, 2247342, -1224603, -9459665, 9804337, 5881421,
--3010235, 1014149, 7712151, -5037460, 2065879, -3466039, -5395016, -3730179, -9750650, -3696356,
-7337952, 3399467, 9379135, -4819490, -15374372, -6710887, 3743064, -5004711, -10027138, -1771674,
--1899986, 9059697, 4642860, -10744398, 7096897, -7633231, -488016, -5541045, -5282810, -5085242,
--11829951, -7077033, 823560, 7488276, 11396696, 7235410, 2084670, 4460861, -5279052, -8854075,
--5463199, 5442798, -2739652, 5877663, -1867774, -5666136, -339302, 410169, -2750390, -6372658,
-325344, 4620848, -15401216, -10237591, 14249091, -4749160, 224949, -7994545, 3713536, 2019172,
--995359, -717260, 5170604, 3767760, 1110786, -1742683, -2021319, -462246, -2250026, 1124745,
-1472100, -3133716, -1595044, 1015223, 272194, -105227, 828392, 2869038, -3248606, -1571421,
--5882495, -2476586, -946503, -1198833, 218506, 714038, 1576790, 4295, 2042794, -2628520,
--1879585, 331786, 437550, 731218, 7244536, -203474, 3666292, -4968741, 3644280, -6790344,
--477815, 11792370, -5556077, 11140071, 11298985, 13925358, 3487514, 5572720, 12014634, 9402757,
-6925635, -9310952, 1218160, 2945811, 8060580, -1584306, -6901476, 8945343, 9075803, -2570001,
-6049999, -3007551, -3150896, 5689758, 4919885, -685584, 5836861, 517544, -9518184, -7612830,
-8250096, 11958800, -929324, -4134980, 2536178, 372588, -5686537, -10679436, 5589900, -10098005,
--4906464, 7731478, 1648194, 6840809, 303869, 10950019, 1532230, 12024298, -13967234, 12688944,
--2450816, -471373, 3832722, 6712497, -5365488, -11559368, -3271155, 10620917, -2052994, -12369506,
--7303592, -7573101, 2064269, 4496831, -10771778, 5470178, 6252399, 11221139, 3462281, 3547643,
-52613, 3172370, 594316, 2486786, 1711008, -8148627, -892279, 3913789, 2747705, 6634651,
--4319127, -1311576, -55835, 558346, 3172907, 427886, 2624225, 1079111, -1248225, -541166,
-2502355, 2302103, 897648, 2507187, 714038, 1113470, 3300146, 51003, -1743220, -904628,
-740345, 1608465, -201863, -755377, 2672544, 1372242, 611496, -2711735, -852551, -1550483,
--1332514, -125628, 2854543, 158377, 2717104, 3763465, 12053826, 1552094, 5039608, 14328548,
-15444702, 4607963, 3893925, -11403138, -5747203, 12613245, -9346386, 12890271, 3655554, -48855,
--2547453, -4503273, -7425462, 1367410, 5733782, -13861470, -6251325, -5895380, 3104725, 2784750,
-3068217, 427886, 2386928, -507880, 4212289, 3394098, -3642132, -6504728, -11950210, 2109366,
--6438693, 10816875, 473520, -6012954, -7501161, -2311766, 5067525, -9418863, 5934034, -3156264,
-1987496, -117575, -6657200, 6648073, 8475044, -5788542, 7140383, 2012729, -493384, 20199768,
--5030481, -13123809, 2540473, 4915053, -3220689, 1078574, -5646272, 13706851, 8043937, -1380832,
--2871723, 9726490, 9378598, -1971390, -7873212, -5790153, 19161460, -1782411, -2557653, -7724499,
--4924180, -1563905, 1932735, -2025077, -5003100, 8195872, -2525441, 9730248, 2911988, -3107946,
--995359, 1714229, 29528, -1705639, -1619203, 3403762, -4254165, -1102196, -1075889, 5602785,
-607738, -1267552, -50466, -2915746, -2589865, -398358, 664109, 5871221, -1294396, 3462281,
-1440425, -1968706, 1313186, 195421, -2764885, 2160369, -1324997, 3000572, -193810, -3170223,
--2189360, -1833414, -2201708, -90194, -621697, -1040993, 1170916, 1031329, 1766842, 4924180,
--10581189, -3029026, -3362960, 828392, 4437775, 10336376, 9029632, -14552960, 287763, 1656247,
--1513439, -4378183, -10036265, -1073205, 3326989, 5887864, 4786204, -9225053, -1642288, -11681237,
-10855530, 425202, -1124745, 5185100, -5223754, -1002875, -12429635, 2022930, -7437810, 5048734,
--1011465, -2133525, -4232691, -8282845, -8039105, -1010928, -9905805, -16142098, -3033858, -7393786,
--15498389, -1324997, -1374390, -8527658, 5492727, 8414915, -1101122, 3970697, -1117228, -1421097,
-2254858, 2427730, -12562242, -3770981, 6817187, -6113349, 14922864, 2620467, 3946538, -9745281,
--140660, -4449049, -9904731, -1138703, 13849122, 6356015, 10511932, 5774047, -4648765, -11296838,
--17559974, 11664057, 12004434, -1530619, 6181532, -13750875, 6492380, 5497022, 9767293, 1381369,
--11732777, -1601486, -10939282, -3878892, 861678, -3637837, 2267743, -2525978, -3658775, -1043140,
-1011465, -646393, -1225139, 3104725, -1042603, 1138166, -7951595, 33823, -692027, -1363115,
--3630321, -1637456, 2333241, -3446711, -3918621, -1511292, -1437203, -1717450, -61203, -1066226,
--4332549, -3580929, -2183454, 1088237, 1388348, 2388539, 1148904, 2179696, 743566, -3229279,
-579821, -641561, -1956358, 1017370, -3645890, 1394791, -1998770, -27109834, -6783364, 21555904,
-7203734, 8792872, -5618354, 8880919, 15027554, 1106491, -2534568, -25035364, -5846524, -1173600,
-14348412, 4042638, 5748277, -18754512, -5057861, -6971806, -4474282, 11665131, -6590091, -2279554,
-2013266, 3343632, -5933498, -2584497, 3002182, -5235565, 11454678, -12847321, 1381906, 8476655,
--11027329, 9046812, 15356656, 17903572, 8580808, 8766028, 11733314, -8047158, -14787572, 5905043,
-6405944, 9777493, 7754564, -16687559, -4769025, 8784282, 5051956, 3201361, 10459319, 2364380,
-12185359, -4529580, -2652142, 6995428, 6433861, 1959042, -10776610, -5737003, -11575474, -13216151,
--794569, -14455786, 741419, -8411157, 573915, -7649337, -4552666, -18571976, 12792560, 3393561,
--2795487, -3321620, -2124935, 2495913, -6910603, -954557, -16207059, -8852464, 5589363, 7326678,
-2972117, 2465311, 587874, -8472897, 3837017, 3881577, 2964064, -8096014, 1802276, 322123,
--6503654, -2171106, 1067836, 1022202, -3381213, -4839355, 1536525, -2376728, -3030636, -731755,
-636729, -600222, -433255, 1646583, -1577327, 2290828, -463856, 3266323, -1520418, 2918430,
-4494147, -3243237, 2467996, 224412, 1690607, -1999844, -280247, 2639258, 2034204, -3995930,
-2034741, 2095944, 16995722, -8292508, -7096360, -6291590, 11700028, 14853071, -9339406, 23841364,
-4999342, -10210748, 12199318, 3466039, -9948755, -11694659, -9438728, -780610, -5074504, -3490735,
--15574088, 6219113, 6468221, 21494164, 2900177, -3696356, -9725953, -10199474, 2561411, -1231045,
--13625247, 2384781, -5063767, 624381, 10493142, -8160438, 13882408, -12231530, -10270341, -724239,
--15979426, -19129248, 3081639, -2221035, -22058416, 1492501, 235686, -10522133, 5488432, -5128728,
-2763812, -14929306, -24338506, 15933792, -14899242, 24703578, 13485660, -17716204, -2285996, -17951890,
--4851166, -2308008, 7416335, -6490770, 11329587, 14272176, 13566728, -9845676, -8012799, 1232119,
--12045773, -1162326, -3940096, -15912317, 9470940, 6988449, -8471286, 12451647, -18577882, -1825361,
-1098975, -4904316, -3142306, 16081968, 11900281, 7885560, -984084, -8464844, -6831683, -6393059,
-2782602, 2551748, -522375, 1778653, -498753, -794032, 334471, -726386, 644782, 3167002,
--3837017, 1478006, -276489, 3489661, -2068027, -420370, 2044941, 4679904, 1876364, 3767223,
--4550518, -5019743, 2363306, -3360812, 802085, -72478, -5301601, -3012920, -3161633, 4295,
-1743757, 1522029, 1071594, 1191853, -14448807, -10988137, 7209640, 8733816, 9655086, 16321949,
--6010807, 30029338, -919660, -15534897, 6801618, 14807973, 4074850, 7787313, -6557342, -16638166,
-25062744, 13914620, 10288594, 4874251, -8638790, 8077760, 20883204, -7650411, 4507032, -193274,
-4427038, 3607773, 14893873, -4262218, 5092221, -5226975, 4560719, -1395864, -754304, 9243843,
-2006824, -18398566, -12310987, -17239462, -11779485, -9133785, -4502737, -13191455, -7430831, -6465537,
--11410654, -7937100, 5107253, -11936251, -4075387, -9259949, 22262426, 11325829, 19389092, -17488570,
--1591822, -15976741, -3328600, 17966386, 9922985, 21161840, 10133438, 13109314, -13836774, 6308233,
-6222334, 19600620, 19928648, 5982890, 18037788, -15451682, -7337415, 11563126, -40564356, 762357,
-6738804, 879931, 10147934, 6544457, 22971096, -1742146, -3104188, 24850144, 7562901, -2172180,
--11049877, -193274, 257161, 20370494, 2767033, 580894, 1711008, 4144644, 6410239, -1102733,
--1086627, 6596533, 3223373, 2168959, 3539053, 4798016, 3755949, -210990, 879931, 683974,
-6863895, -1168231, 3658775, 6588480, 4910758, 7346542, -3120294, -2393371, 1817308, 2405182,
--2383707, 243739, 4299799, 6825240, -332860, 2064269, 17480516, 11359652, -11475079, 22353158,
-13254269, -1140851, -5604933, -2820183, 13404593, 33028836, 17622788, 4744328, 1349157, 10849624,
--2685965, 26665304, 15040439, 16655883, 639950, -8490613, 5611375, 2008434, -14226005, -3494493,
--941672, -3349538, -4091493, 5416491, 2900177, -11631845, -5630166, -20555176, -2162516, -6387690,
--26506928, -11876121, 748935, 9903658, -13669807, 17029008, -4772246, -4062502, -2376191, -4153234,
-12324946, -8330626, 8596377, -27118960, 8332237, 11835856, 9066139, 18076444, -17911088, 15480136,
--16086263, -11962021, 13326210, -7842611, -2449205, 11244761, -18236968, 16117939, 25760676, -522375,
--3824132, 32959042, -7168301, 6350109, 18505940, -39605504, -20352240, 1351841, 1130113, 5380521,
-9451612, 19276350, 11510512, -15141370, -12218108, -3587372, -4411469, -20454244, -2081985, -4070019,
-4961761, -21371758, 155693, -6433324, 8604967, -3217468, 10980084, 2983929, 2147, -6321655,
--4746476, -5943161, -6405407, -4820564, 4258460, -12985834, 9217537, -1536525, 5086852, 331249,
--934155, -8858907, 4768488, -6286759, 1505386, -6679748, -3759707, -28991, -3069828, -7665980,
-460635, -2390686, 740345, -5212480, -5879810, -6132140, 1000727, 1337882, 7677254, 8336532,
--177167, 208306, -6032282, -31468688, -18950470, 23074712, 22943178, 2416993, -5496485, 19448148,
--31565326, -16972100, -34149284, 14856829, 4082367, 1458678, 6555194, -15568720, 7800735, 10734734,
-14092861, 23918672, 24586004, 20642686, -891206, 4623533, 215822, -9066676, -1917166, -7580081,
--3940096, 28513214, -6727530, -26329224, -6695317, -5464809, 2294050, 41106596, -14939507, -14818711,
-13874892, -22355304, 7651484, -24800214, 32258962, 9069360, -964757, 8227547, -12530567, -15844134,
-22080964, -26994406, -21576842, -19418084, 5301601, 8024073, 10009958, -18021682, 18354542, -5757941,
-1320166, 28313498, -2007360, -4895726, 8286603, 22835268, -14898168, 37915972, 1338956, -43845712,
--5396627, -1756642, -14688788, -4290673, -81068, -4171487, -12010876, -10119480, 21463026, 14355391,
--5377299, 13887777, -25218974, 6977175, 11193222, 6931004, 737661, 13368623, -2293513, -679142,
-4958540, 13065291, -5523328, -5821828, -4563403, 518080, 4891431, -2621541, -10450729, -11238856,
-467615, -5324686, 3788698, -226560, 2648921, 5826123, -7337415, -4889284, 12453795, -2991982,
-2182917, -1063004, 245887, -4378183, -4855461, -2514167, -1688996, -6765111, 3132642, 5990406,
-3321084, -222265, 474057, 2641405, -5211406, 1063004, 5737003, -698469, 4905390, -2952790,
--9198209, -12437152, 186294, 5459441, -8862665, -4029216, 41791644, 24776056, -33660196, -27191974,
-33641940, 32073206, 20075750, 23057532, -40080096, -8777839, -11034845, 10604274, 3912715, -16163036,
--29599840, -44837848, 13143137, 11866458, 3497714, 12366285, -6110128, -2225330, -10629507, 8935679,
-15546708, 13966697, 3659849, 18547816, 5957657, -2068564, -7533373, -27241904, -1449552, -11443403,
--9492951, 9516037, -29241748, 2652679, 1196148, -13620415, 11964705, 10984379, 5429376, -19654844,
--18299782, -48228724, -12269111, 375273, -15446850, 2757906, 10209674, 10188199, 27002460, 13277355,
--11909407, -8325794, -17919678, 22733262, -9529459, 39323648, 32846300, 9133785, -20965346, 43412456,
-19972134, -17539572, 2705293, 21829172, 50481436, -20820928, -38562364, -19868518, 543850, -13879187,
-6103686, 13952738, 11635603, -10091563, -15761993, -8683887, -13116293, -14384919, 4017405, 15717433,
-12542378, 7084012, 6256694, 2323041, 10551661, 1468879, 1708860, 15369004, 12033961, -663036,
--5021891, 3505230, -7974144, 8569533, -3030100, 8771397, -4461398, 3536906, 2292976, 5812702,
-7443715, 4422743, 3467649, -7192460, -14248554, 1735704, -7231115, -3621194, 4305168, 1335198,
--2105071, -2719251, 10302553, 3442416, 13936095, -4421132, 7455527, 7542500, -9478456, 9903121,
-519154, -7917772, 16753594, 6030671, -5754720, -16114717, 13639742, -27361626, -25299504, -9057012,
-19756312, -11198053, -14345728, -55835, 22752052, 2483565, 23508504, -7744900, 28361816, 3357054,
-15241228, -9813463, -6528887, 9045201, -29056528, -8025147, 11104101, -5086315, -3810710, -23350126,
--22049826, 10415296, -13401909, -9581535, 18305150, 25061672, -3537979, 16530792, -29358248, 1939178,
--7871065, 38441568, -15654619, 12899934, 23616952, 22494354, 6691022, -15428059, 10096931, 7295539,
-6960532, 12536473, -37547676, 69806104, 22449258, -5932961, 3862786, 7999377, 19541028, -5178120,
-15093589, 40797356, -2099165, -49999324, 21203180, 17675402, -17605070, 23795730, -4967667, -10306848,
--26684632, 52235392, -26556856, 58135604, -37908992, 14543296, -495532, 63143000, 28159954, -26668526,
-26051124, 1351841, -16464757, 12871480, 2212982, 5918465, 14334453, 6219650, -15915001, -3976603,
-19452444, 5375152, 11125576, -8603356, 12270185, -20068772, 7815230, -912681, -6285148, 12858595,
--6738804, -3717294, 9366787, -1316944, 1637456, -1371705, 15561203, -9776419, 15192910, -8577050,
-14076755, 19523848, 7454990, 5458904, 10955925, -2551748, -7303592, -7162395, 9492951, 3416647,
--1241782, 93416, -2113124, -13640279, -10368051, -1930051, 723165, -8450885, 47631724, 5566815,
-25796648, 13086228, -26422638, 1494112, 15454366, -4842039, -23026930, -4536023, -50055696, -14128832,
--18733036, -10922639, 10761577, -1622424, 17732310, -8923331, 1802276, 17236778, -15643882, 1504849,
-9794136, -1155346, -17149804, -209917, -11820287, 34257196, -6166500, 19771882, 3107946, -531502,
-35194036, 25242060, -15672873, -18460306, 8834211, 15776489, 19265076, 23320062, -554051, 8081518,
-22203370, -1440425, -9098351, 6756521, 664646, -20024212, -567473, 12790413, -19583978, -26479010,
--2596308, -1844689, -2925410, -9066139, -9586367, -31519154, -126165, 30404074, 9345312, 16785270,
-9982578, -4408247, -40485972, -29917132, 7864622, 25834228, 8440684, 12899397, 52964464, 54776940,
-46526844, -4029216, 23081692, -15110232, -39225400, -65594888, 11265699, 7696045, -2989297, 8706972,
--20716238, 4061965, -5102958, 23547696, -1869921, 18827526, -23713052, 11256036, -29102698, -6027987,
-12192338, 1676648, -14849313, 3052111, -12241731, -13603235, -5686000, 3054796, 11028939, 13887777,
-18773302, -4990215, -1085016, 4412005, -5232344, 5591511, -19591494, -17132088, -11655467, -16071768,
--15105400, -16411070, 10281078, 7034083, -2727841, -10952703, -15997679, 9166534, 92342, 14771466,
--3819837, 13023951, 9909026, 76236, 4219806, 15699716, -19527068, -18815178, 11093364, -2208687,
--14444512, -30776126, 9231495, -18315888, 9505299, -7756711, -21602612, -6445672, 255014, 11261404,
--8893267, 5910949, -31880468, 30577482, -67258112, -6400038, -16494285, -13492103, 9489730, 39104604,
-6650757, 14429480, -32898376, 7849053, 12724914, 26999238, -13409962, -21166672, -14511621, -6926709,
--568009, -190052, 16554415, 12105902, -9035001, -48489644, -22748294, -39358544, 5083631, 70491152,
--49117244, -19248970, -7145215, 40909028, -13063680, 17528298, -12458090, 19928112, -7237020, -11425150,
--24665998, 13391171, -28661928, 27398670, 49238580, 6678138, -8474507, -8694624, 40933724, 11143830,
-155693, 21788370, 7537131, 8148090, -7253126, 47153908, -72927472, 53613004, -44224740, 21671868,
-53057880, -41717016, 85703928, 58454504, -21286932, -6863358, 59119152, 21809308, -5005248, 38997228,
-35128000, -44546864, 60990148, -36134096, 11318849, 12003360, -15629923, 12081206, 20322712, -11787538,
--21536040, 7605314, -11334419, 5551782, 5662378, -5652177, -16744467, 7337415, 6791954, -6667400,
-7896298, 6296959, -13343927, 34656628, 4334696, 1141388, 1338419, -6503654, 5852967, 5043366,
-2434173, -10720775, 6426345, 2003602, -4243428, -9346923, 21772262, -7567196, 17834314, 20053202,
--1340030, -6834367, 5837935, 5260261, 8275865, 24082418, 21020644, -17830556, 9169755, -6985765,
--390842, 10639171, -1634235, 49753440, 47438452, -40207336, 39534636, 36369784, -33879240, -51261508,
--75781480, 17819282, 114192976, 46966004, 369904, 23648090, -108848432, -44917304, -3697430, 16720308,
-82184200, 80347560, 14024142, -30840550, -60226716, -35316444, 4271345, 26001196, 39391292, 63184876,
-38280508, -50770272, -119998704, -97881768, -9435506, 109086264, 118790744, 74998720, 23090818, -25121264,
--48212080, -73109472, -41515152, -44451836, 87456808, 72645080, 46080704, 40652404, -61495880, -86425480,
--100117296, -89820648, 34839164, 121734408, 150086016, 50689204, -45168024, -106667664, -127728568, -34802120,
-20842940, 13234942, 80325016, 31422518, -29996588, -17933100, -61378304, -13459891, -70204464, 30502320,
-83800720, 156241776, -9223442, -83566104, -181222928, -7122667, -61089468, -6551973, 87278568, 17200808,
--7699266, -38856032, -81468552, -53637700, 39560408, 63340568, 21158082, -11132018, -27547384, -33413234,
-32807108, 37284076, 23393614, 19929722, 9262634, 18573050, -1476932, 1687922, -17820894, -8492761,
-2406256, 47040092, 41564008, -2229625, -17324288, -4689031, -41719164, -28373090, -704912, 15953119,
-43882756, 33411624, 24173150, 2044404, -58228484, -52937620, -35339528, 13703093, 56965760, 109462608,
-67546952, -50705312, -90574416, -80554792, -31936304, 2113661, 75537200, 94286344, 70966816, 12212740,
--55582784, -127587912, -79746808, 25726318, 79597552, 90094992, 26947698, -13459354, -34496640, -41760504,
-707059, -10460930, 51341504, 30015378, -4581657, 10883447, 5512054, -36643588, -3876745, -3017215,
-3937948, 1101659, 2872796, -13423383, -5411659, -4975720, -3429532, -6125697, 21844740, -7904888,
-9348533, -16522739, -1724966, 6774774, -846109, -5041218, 37766184, 5206037, -21488796, -24919400,
-5163088, 5204964, -14700599, 4031901, 18929532, 9844602, 17810692, -18331994, 5463736, -671626,
-4217658, -12910135, 2369748, 14276471, 20161114, 5104032, -5358509, 5915781, 2199560, -4736275,
-13712220, -20412906, 4510253, -33236068, -10499048, 13700409, -11374684, -13370233, 17956722, -11540577,
--31113280, -24021752, 21148956, -2673617, -4328790, 4865661, 10654203, 26914950, -17682918, -22899156,
-849330, -3163244, 18112414, 112206, 10534481, 4857071, -1938641, 27958090, -36587216, -5366025,
--5288179, -21434034, 5338645, 11956652, 382789, -12779675, 5510443, -2907693, 3485903, -11055783,
-7940321, -605054, 1161252, -1012539, -2860985, 14155675, -14428943, 1069984, -2604361, -5171678,
--4731980, 1614908, -6348499, 6464463, 8178692, -8735427, -2383707, -3373697, 7471096, 8428336,
--4461398, 10399190, 834297, -1561758, -7242389, 7479149, 2405719, -3047279, -11856794, 5436355,
--10782515, 6742562, -5929739, -5196911, 9426916, 9556839, -13385266, 1499481, -3320547, -12974022,
-3927748, -7621420, 8190503, -7514582, -30088930, -33182918, -78932376, 22812718, 22565222, -1613834,
--66542464, -43021612, -6335614, -10923176, 44452912, 29982630, 14417668, -29465624, -12166032, -7817378,
-27831924, 3045669, -7941932, -17301202, 11407970, 5056787, 13841606, -773631, -5666136, -7090991,
--15934866, -7968238, -9647033, 26579942, 14207752, 3114925, 3979287, -17530982, -947577, 2111513,
-24271398, -1772748, 11308112, -9041980, -6297496, 4929012, -10016937, 6594923, 2895882, 7094212,
-23676008, -2092723, 20775830, -294205, 13338558, -10344966, 867583, -15203110, -19666118, -20700132,
--17710834, 5812165, 3060701, 1504312, -26077430, 12861280, -22698366, -2579665, 1171452, -14231374,
--15402826, -8147553, 272194, -27115202, -18342732, 16818556, -8189966, 15657303, 2484102, -4364224,
--14660871, -16935056, -1107028, 23990614, 29743722, -7428683, -3054796, -11206643, -14919643, -10310069,
-9478456, 5025112, 3642669, 9292162, -1847373, -6183679, 6442451, 3539053, 5361193, 8127689,
--4570919, 2729452, -908386, 173409, -6209986, 10744398, 3404835, 2438468, -3232500, 1543504,
--234613, 16757889, 2136746, 5016522, -9409200, 620086, -6092411, 10963978, 758599, 157840,
--3863860, 2538863, -1262720, 130997, 5255430, 491237, 6888054, -4690641, 2238752, 719407,
--8826158, -483184, 5049271, 1935420, -1815697, 17746804, -38152732, -94612224, -90687160, -13756780,
-27435714, 91260536, 78864728, 74349640, 79859552, 44466332, 10760504, -40305584, -40502080, -84171696,
--65369404, -57303992, -36354212, -45721536, 62989452, 51831664, 68209984, 39351564, 55751360, -2004139,
-14686104, -8937827, -21746494, -12420509, -26001732, -30228516, -30131344, -29702920, -35187056, -25738666,
--20921860, -2350421, 5542656, 49473728, 41502268, 21897890, 23503672, 32647658, 30276298, 14609331,
-70395584, 9185861, 920197, 13238700, -26297548, -80736792, -23109608, -64712272, -69442104, -73332272,
--51901460, -46185392, 2305861, 38361576, 39095476, 47794396, 86872160, 62565864, 76235672, 74968120,
-47801376, 51445120, 17547088, -18049064, -58700392, -76968496, -87997440, -57198228, -78978544, -66318592,
--75833552, -44202728, -5293011, 20817170, 61349312, 58597848, 59436980, 99037112, 68961072, 81874424,
-50959252, 8522826, -9623948, -24745454, -40991704, -45844480, -48641580, -47334836, -54641648, -46769508,
--34274912, -20999168, -10922102, -8198556, 23685670, 22563074, 31714576, 51331840, 57765164, 36694052,
-44125956, 27271432, -1708860, -11966316, -26683558, -33286534, -28613608, -24642374, -29909078, -10888816,
--7439420, 695785, 8391292, 9402220, 2312840, 1302449, 8213051, -1187022, -7259569, 6633577,
-3852586, 4733591, 7246684, 2183454, 1877975, 4459250, 10094247, 8725226, 3910031, 852014,
--2333778, -8684424, -6696391, -7903814, -6986838, -2757906, -5435281, -4656282, -2718714, -2073396,
--3004867, -828929, 3099893, 3169686, 3795141, 6293738, 4003447, 2831457, 3544959, 927713,
-641024, 338229, 5906, 26307, 64961, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+7221988, 367757, 3323768, 3297998, 9343701, 4401805, -3434900, -4341138, -6060736, 4363150,
+-5300527, -3850975, 879931, 1349157, 587337, 5486821, -1776506, 5129265, -1298691, 4605279,
+-4337917, 2026688, -1909650, -4636417, -316217, -8854075, 1341640, 2187212, 3976066, -3227131,
+-40802, 3470871, -2535105, 3897146, 3669513, -2185602, 2638184, -2932926, -1358820, -2165737,
+-3169686, -4029753, 3628174, 5354751, -3989488, 2382096, 4307316, 3488050, 5270999, 671626,
+-780610, 3074123, 2334852, -5551782, -202937, 653909, 363462, 1775969, 3614215, 818728,
+1315871, -1920387, -1213865, 2561948, 3590593, 2007360, -1890859, -3312494, 3701188, -2989297,
+-967441, 2077154, -616865, -125628, 1580548, 382252, 106300, 3357591, -3272228, 2503429,
+1363115, 1644436, 3097208, -1236414, -354335, -1037235, -430034, 135828, 1517734, -1194538,
+-216359, -823023, -476205, 57982, -116501, -476741, -340913, 347892, 449361, -2684,
+-195421, -328565, 49392, -100395, 52076, -474594, -107911, 487479, -1068910, 3682935,
+-1955821, 2697776, 256087, -230854, -7508140, 1202591, 6391448, -3927748, 2639794, -7973070,
+-8067023, -2660195, -6560026, -5726802, -863825, 1180042, 4503810, 714575, -2172717, 1017907,
+3064996, -3966939, 5491653, -3724274, -4027069, 4651987, -2317672, 5359583, 6813429, 941672,
+-4916664, 3437585, 2246805, 1376537, -2502355, -1815161, 2861522, 2388002, 485868, -5558225,
+-1603633, -5134634, 4635344, -4634807, -3021510, 3410204, 161598, 2959769, 848256, 1134408,
+5045513, 851477, 5659157, -7297687, -3744675, -1688996, 3616363, 5109938, 5844377, 7947837,
+864899, -2267743, -759136, -1069984, -241592, -5170067, -2260764, -2251100, -626528, 794569,
+-4188667, -2485176, -943282, -1788317, -3274376, 3934190, -3936338, -1347009, 2625836, -6753299,
+2043868, 3675418, 4085588, 2143726, 1187559, 2441689, -1194001, -2622615, -655519, 700617,
+-276489, 700617, 134218, -733366, 57445, -1054415, -1227824, 1497333, 682363, -144955,
+-4832, -17717, 1147830, 523986, -438087, -472983, -457414, 78383, 851477, -1008244,
+-159988, -63351, -177167, 549219, -18254, -413391, 8549669, -6314676, -2361158, -1233729,
+5261872, 4751845, -4768488, -421444, -8863202, -1924145, 10776610, 4070555, -4316442, 7743826,
+2535641, 2988224, 802622, -2575907, -8458401, 1154273, -3801583, -2398202, -1534377, -5146982,
+-1813550, -3980361, 2803540, -1792612, -2325188, 4850629, -9104257, 8405788, -2943126, 1209033,
+-2841121, 2634963, -325881, -821949, -211527, 3586835, 191126, 2273112, -3244848, 6300180,
+-4873714, 7333657, 1573032, -709743, -4083440, -4792647, 9961640, 1729261, -9310952, 9550397,
+9002788, -4867809, -1774895, 2835752, -3666828, -672699, -2254321, 2269890, 5747740, -3475702,
+1324997, -2600603, -2373506, 951335, 7732552, -7066832, 4308389, -7284265, -5595806, -5258651,
+-916439, 153545, 9664, 4423817, 6847252, 1791538, 1671816, 3344706, 2719788, 1501628,
+1709934, 2007897, -727460, 2160369, -972810, -2112050, 3649649, -178778, 513785, -657130,
+-1066763, -630286, 36507, 1540283, -376883, 346819, 166967, -1367410, 25233, 758062,
+980863, -111669, 859530, 2437931, -3271691, 395674, -6462852, 6227703, -9084393, 387621,
+9549860, -17251274, 12074227, 4850092, -4559108, 3829500, -312996, 10531797, -1057099, -8636105,
+-6022618, 3571265, 4108673, 1214939, 331249, 4505958, 1379758, 783295, 6094559, 2528125,
+1777580, 4413079, 3185255, 15004468, -4058207, 4035659, -161598, -2395518, 3934727, 2471217,
+1574106, 1959042, -2392834, -4076998, 331249, 56371, 271657, 2226941, 4620311, -4590247,
+-4884452, 2199560, -1125281, -1826435, -2900177, 6149320, -4306779, 8858907, 4191888, 455803,
+2124935, 810138, 2464774, 11239393, 9446781, 783295, 592706, 2216740, -2184528, 4252018,
+-857383, 3842385, 1225676, 318364, 70330, -4691715, 4628901, 3565897, -952946, -2663417,
+446140, 4468914, 498753, -1154809, 319975, -3246459, 2478733, 988916, 3140158, -731755,
+982474, 1372242, 1354525, 1163936, 1916092, 963683, 896038, -3966939, -159451, 1671279,
+2353105, -1298154, 1555315, 1452236, 1293322, 1460289, 663572, 1152662, 1407139, 1580548,
+317828, 667331, 511638, 778463, 299574, 481036, 1009854, 459025, -91805, -796716,
+-1087701, 2228551, -1000727, 4868346, 132070, 5616744, -2121177, 4984847, -3733400, 10399726,
+-7916699, -2935610, -3769371, 10723996, 6070937, 3959960, 6806450, -6109591, -1226750, 9899363,
+5615670, 4661650, 4806069, 2587718, 3305514, -1101122, 9478993, -953483, -4347581, -3209414,
+3330210, -3539590, 2179696, -8921721, 3326452, -1684701, 185757, -9587441, 4158065, -2030983,
+9040369, -1440425, 2867428, 2510945, -3797288, -912144, 4122632, 600222, 2829847, -2001992,
+5016522, 7135552, 905701, -4919348, 1909113, 5028870, 3577708, 696858, -3388729, -6945499,
+5857262, -7736847, -3284039, 4396436, -10304163, -2323041, 6398965, -4723927, 1348620, 128312,
+-576063, -1338956, 2604361, -5100274, 288300, -8542690, -4440460, -11689827, 890132, -3248606,
+261456, -2230162, -361851, -2940442, 2691871, 2615098, 1040993, -1809255, 2485176, -235686,
+971736, -3335579, 865436, 739808, 1086627, 788663, 2325188, -251256, 2623151, -1100049,
+-172872, 1869921, 2462090, 433255, 1363115, -1532230, -597000, -396748, -612570, -1085553,
+766115, 1970316, 524523, 2076617, -1919850, -1100049, -1075889, -2611877, -3059091, 2805688,
+-18962818, 3308736, -5982353, -3485366, 4337380, 3279745, 2306398, 810675, -13933948, -1495722,
+4329864, -7511361, -1967632, -10266582, -5218922, 2247342, -1224603, -9459665, 9804337, 5881421,
+-3010235, 1014149, 7712151, -5037460, 2065879, -3466039, -5395016, -3730179, -9750650, -3696356,
+7337952, 3399467, 9379135, -4819490, -15374372, -6710887, 3743064, -5004711, -10027138, -1771674,
+-1899986, 9059697, 4642860, -10744398, 7096897, -7633231, -488016, -5541045, -5282810, -5085242,
+-11829951, -7077033, 823560, 7488276, 11396696, 7235410, 2084670, 4460861, -5279052, -8854075,
+-5463199, 5442798, -2739652, 5877663, -1867774, -5666136, -339302, 410169, -2750390, -6372658,
+325344, 4620848, -15401216, -10237591, 14249091, -4749160, 224949, -7994545, 3713536, 2019172,
+-995359, -717260, 5170604, 3767760, 1110786, -1742683, -2021319, -462246, -2250026, 1124745,
+1472100, -3133716, -1595044, 1015223, 272194, -105227, 828392, 2869038, -3248606, -1571421,
+-5882495, -2476586, -946503, -1198833, 218506, 714038, 1576790, 4295, 2042794, -2628520,
+-1879585, 331786, 437550, 731218, 7244536, -203474, 3666292, -4968741, 3644280, -6790344,
+-477815, 11792370, -5556077, 11140071, 11298985, 13925358, 3487514, 5572720, 12014634, 9402757,
+6925635, -9310952, 1218160, 2945811, 8060580, -1584306, -6901476, 8945343, 9075803, -2570001,
+6049999, -3007551, -3150896, 5689758, 4919885, -685584, 5836861, 517544, -9518184, -7612830,
+8250096, 11958800, -929324, -4134980, 2536178, 372588, -5686537, -10679436, 5589900, -10098005,
+-4906464, 7731478, 1648194, 6840809, 303869, 10950019, 1532230, 12024298, -13967234, 12688944,
+-2450816, -471373, 3832722, 6712497, -5365488, -11559368, -3271155, 10620917, -2052994, -12369506,
+-7303592, -7573101, 2064269, 4496831, -10771778, 5470178, 6252399, 11221139, 3462281, 3547643,
+52613, 3172370, 594316, 2486786, 1711008, -8148627, -892279, 3913789, 2747705, 6634651,
+-4319127, -1311576, -55835, 558346, 3172907, 427886, 2624225, 1079111, -1248225, -541166,
+2502355, 2302103, 897648, 2507187, 714038, 1113470, 3300146, 51003, -1743220, -904628,
+740345, 1608465, -201863, -755377, 2672544, 1372242, 611496, -2711735, -852551, -1550483,
+-1332514, -125628, 2854543, 158377, 2717104, 3763465, 12053826, 1552094, 5039608, 14328548,
+15444702, 4607963, 3893925, -11403138, -5747203, 12613245, -9346386, 12890271, 3655554, -48855,
+-2547453, -4503273, -7425462, 1367410, 5733782, -13861470, -6251325, -5895380, 3104725, 2784750,
+3068217, 427886, 2386928, -507880, 4212289, 3394098, -3642132, -6504728, -11950210, 2109366,
+-6438693, 10816875, 473520, -6012954, -7501161, -2311766, 5067525, -9418863, 5934034, -3156264,
+1987496, -117575, -6657200, 6648073, 8475044, -5788542, 7140383, 2012729, -493384, 20199768,
+-5030481, -13123809, 2540473, 4915053, -3220689, 1078574, -5646272, 13706851, 8043937, -1380832,
+-2871723, 9726490, 9378598, -1971390, -7873212, -5790153, 19161460, -1782411, -2557653, -7724499,
+-4924180, -1563905, 1932735, -2025077, -5003100, 8195872, -2525441, 9730248, 2911988, -3107946,
+-995359, 1714229, 29528, -1705639, -1619203, 3403762, -4254165, -1102196, -1075889, 5602785,
+607738, -1267552, -50466, -2915746, -2589865, -398358, 664109, 5871221, -1294396, 3462281,
+1440425, -1968706, 1313186, 195421, -2764885, 2160369, -1324997, 3000572, -193810, -3170223,
+-2189360, -1833414, -2201708, -90194, -621697, -1040993, 1170916, 1031329, 1766842, 4924180,
+-10581189, -3029026, -3362960, 828392, 4437775, 10336376, 9029632, -14552960, 287763, 1656247,
+-1513439, -4378183, -10036265, -1073205, 3326989, 5887864, 4786204, -9225053, -1642288, -11681237,
+10855530, 425202, -1124745, 5185100, -5223754, -1002875, -12429635, 2022930, -7437810, 5048734,
+-1011465, -2133525, -4232691, -8282845, -8039105, -1010928, -9905805, -16142098, -3033858, -7393786,
+-15498389, -1324997, -1374390, -8527658, 5492727, 8414915, -1101122, 3970697, -1117228, -1421097,
+2254858, 2427730, -12562242, -3770981, 6817187, -6113349, 14922864, 2620467, 3946538, -9745281,
+-140660, -4449049, -9904731, -1138703, 13849122, 6356015, 10511932, 5774047, -4648765, -11296838,
+-17559974, 11664057, 12004434, -1530619, 6181532, -13750875, 6492380, 5497022, 9767293, 1381369,
+-11732777, -1601486, -10939282, -3878892, 861678, -3637837, 2267743, -2525978, -3658775, -1043140,
+1011465, -646393, -1225139, 3104725, -1042603, 1138166, -7951595, 33823, -692027, -1363115,
+-3630321, -1637456, 2333241, -3446711, -3918621, -1511292, -1437203, -1717450, -61203, -1066226,
+-4332549, -3580929, -2183454, 1088237, 1388348, 2388539, 1148904, 2179696, 743566, -3229279,
+579821, -641561, -1956358, 1017370, -3645890, 1394791, -1998770, -27109834, -6783364, 21555904,
+7203734, 8792872, -5618354, 8880919, 15027554, 1106491, -2534568, -25035364, -5846524, -1173600,
+14348412, 4042638, 5748277, -18754512, -5057861, -6971806, -4474282, 11665131, -6590091, -2279554,
+2013266, 3343632, -5933498, -2584497, 3002182, -5235565, 11454678, -12847321, 1381906, 8476655,
+-11027329, 9046812, 15356656, 17903572, 8580808, 8766028, 11733314, -8047158, -14787572, 5905043,
+6405944, 9777493, 7754564, -16687559, -4769025, 8784282, 5051956, 3201361, 10459319, 2364380,
+12185359, -4529580, -2652142, 6995428, 6433861, 1959042, -10776610, -5737003, -11575474, -13216151,
+-794569, -14455786, 741419, -8411157, 573915, -7649337, -4552666, -18571976, 12792560, 3393561,
+-2795487, -3321620, -2124935, 2495913, -6910603, -954557, -16207059, -8852464, 5589363, 7326678,
+2972117, 2465311, 587874, -8472897, 3837017, 3881577, 2964064, -8096014, 1802276, 322123,
+-6503654, -2171106, 1067836, 1022202, -3381213, -4839355, 1536525, -2376728, -3030636, -731755,
+636729, -600222, -433255, 1646583, -1577327, 2290828, -463856, 3266323, -1520418, 2918430,
+4494147, -3243237, 2467996, 224412, 1690607, -1999844, -280247, 2639258, 2034204, -3995930,
+2034741, 2095944, 16995722, -8292508, -7096360, -6291590, 11700028, 14853071, -9339406, 23841364,
+4999342, -10210748, 12199318, 3466039, -9948755, -11694659, -9438728, -780610, -5074504, -3490735,
+-15574088, 6219113, 6468221, 21494164, 2900177, -3696356, -9725953, -10199474, 2561411, -1231045,
+-13625247, 2384781, -5063767, 624381, 10493142, -8160438, 13882408, -12231530, -10270341, -724239,
+-15979426, -19129248, 3081639, -2221035, -22058416, 1492501, 235686, -10522133, 5488432, -5128728,
+2763812, -14929306, -24338506, 15933792, -14899242, 24703578, 13485660, -17716204, -2285996, -17951890,
+-4851166, -2308008, 7416335, -6490770, 11329587, 14272176, 13566728, -9845676, -8012799, 1232119,
+-12045773, -1162326, -3940096, -15912317, 9470940, 6988449, -8471286, 12451647, -18577882, -1825361,
+1098975, -4904316, -3142306, 16081968, 11900281, 7885560, -984084, -8464844, -6831683, -6393059,
+2782602, 2551748, -522375, 1778653, -498753, -794032, 334471, -726386, 644782, 3167002,
+-3837017, 1478006, -276489, 3489661, -2068027, -420370, 2044941, 4679904, 1876364, 3767223,
+-4550518, -5019743, 2363306, -3360812, 802085, -72478, -5301601, -3012920, -3161633, 4295,
+1743757, 1522029, 1071594, 1191853, -14448807, -10988137, 7209640, 8733816, 9655086, 16321949,
+-6010807, 30029338, -919660, -15534897, 6801618, 14807973, 4074850, 7787313, -6557342, -16638166,
+25062744, 13914620, 10288594, 4874251, -8638790, 8077760, 20883204, -7650411, 4507032, -193274,
+4427038, 3607773, 14893873, -4262218, 5092221, -5226975, 4560719, -1395864, -754304, 9243843,
+2006824, -18398566, -12310987, -17239462, -11779485, -9133785, -4502737, -13191455, -7430831, -6465537,
+-11410654, -7937100, 5107253, -11936251, -4075387, -9259949, 22262426, 11325829, 19389092, -17488570,
+-1591822, -15976741, -3328600, 17966386, 9922985, 21161840, 10133438, 13109314, -13836774, 6308233,
+6222334, 19600620, 19928648, 5982890, 18037788, -15451682, -7337415, 11563126, -40564356, 762357,
+6738804, 879931, 10147934, 6544457, 22971096, -1742146, -3104188, 24850144, 7562901, -2172180,
+-11049877, -193274, 257161, 20370494, 2767033, 580894, 1711008, 4144644, 6410239, -1102733,
+-1086627, 6596533, 3223373, 2168959, 3539053, 4798016, 3755949, -210990, 879931, 683974,
+6863895, -1168231, 3658775, 6588480, 4910758, 7346542, -3120294, -2393371, 1817308, 2405182,
+-2383707, 243739, 4299799, 6825240, -332860, 2064269, 17480516, 11359652, -11475079, 22353158,
+13254269, -1140851, -5604933, -2820183, 13404593, 33028836, 17622788, 4744328, 1349157, 10849624,
+-2685965, 26665304, 15040439, 16655883, 639950, -8490613, 5611375, 2008434, -14226005, -3494493,
+-941672, -3349538, -4091493, 5416491, 2900177, -11631845, -5630166, -20555176, -2162516, -6387690,
+-26506928, -11876121, 748935, 9903658, -13669807, 17029008, -4772246, -4062502, -2376191, -4153234,
+12324946, -8330626, 8596377, -27118960, 8332237, 11835856, 9066139, 18076444, -17911088, 15480136,
+-16086263, -11962021, 13326210, -7842611, -2449205, 11244761, -18236968, 16117939, 25760676, -522375,
+-3824132, 32959042, -7168301, 6350109, 18505940, -39605504, -20352240, 1351841, 1130113, 5380521,
+9451612, 19276350, 11510512, -15141370, -12218108, -3587372, -4411469, -20454244, -2081985, -4070019,
+4961761, -21371758, 155693, -6433324, 8604967, -3217468, 10980084, 2983929, 2147, -6321655,
+-4746476, -5943161, -6405407, -4820564, 4258460, -12985834, 9217537, -1536525, 5086852, 331249,
+-934155, -8858907, 4768488, -6286759, 1505386, -6679748, -3759707, -28991, -3069828, -7665980,
+460635, -2390686, 740345, -5212480, -5879810, -6132140, 1000727, 1337882, 7677254, 8336532,
+-177167, 208306, -6032282, -31468688, -18950470, 23074712, 22943178, 2416993, -5496485, 19448148,
+-31565326, -16972100, -34149284, 14856829, 4082367, 1458678, 6555194, -15568720, 7800735, 10734734,
+14092861, 23918672, 24586004, 20642686, -891206, 4623533, 215822, -9066676, -1917166, -7580081,
+-3940096, 28513214, -6727530, -26329224, -6695317, -5464809, 2294050, 41106596, -14939507, -14818711,
+13874892, -22355304, 7651484, -24800214, 32258962, 9069360, -964757, 8227547, -12530567, -15844134,
+22080964, -26994406, -21576842, -19418084, 5301601, 8024073, 10009958, -18021682, 18354542, -5757941,
+1320166, 28313498, -2007360, -4895726, 8286603, 22835268, -14898168, 37915972, 1338956, -43845712,
+-5396627, -1756642, -14688788, -4290673, -81068, -4171487, -12010876, -10119480, 21463026, 14355391,
+-5377299, 13887777, -25218974, 6977175, 11193222, 6931004, 737661, 13368623, -2293513, -679142,
+4958540, 13065291, -5523328, -5821828, -4563403, 518080, 4891431, -2621541, -10450729, -11238856,
+467615, -5324686, 3788698, -226560, 2648921, 5826123, -7337415, -4889284, 12453795, -2991982,
+2182917, -1063004, 245887, -4378183, -4855461, -2514167, -1688996, -6765111, 3132642, 5990406,
+3321084, -222265, 474057, 2641405, -5211406, 1063004, 5737003, -698469, 4905390, -2952790,
+-9198209, -12437152, 186294, 5459441, -8862665, -4029216, 41791644, 24776056, -33660196, -27191974,
+33641940, 32073206, 20075750, 23057532, -40080096, -8777839, -11034845, 10604274, 3912715, -16163036,
+-29599840, -44837848, 13143137, 11866458, 3497714, 12366285, -6110128, -2225330, -10629507, 8935679,
+15546708, 13966697, 3659849, 18547816, 5957657, -2068564, -7533373, -27241904, -1449552, -11443403,
+-9492951, 9516037, -29241748, 2652679, 1196148, -13620415, 11964705, 10984379, 5429376, -19654844,
+-18299782, -48228724, -12269111, 375273, -15446850, 2757906, 10209674, 10188199, 27002460, 13277355,
+-11909407, -8325794, -17919678, 22733262, -9529459, 39323648, 32846300, 9133785, -20965346, 43412456,
+19972134, -17539572, 2705293, 21829172, 50481436, -20820928, -38562364, -19868518, 543850, -13879187,
+6103686, 13952738, 11635603, -10091563, -15761993, -8683887, -13116293, -14384919, 4017405, 15717433,
+12542378, 7084012, 6256694, 2323041, 10551661, 1468879, 1708860, 15369004, 12033961, -663036,
+-5021891, 3505230, -7974144, 8569533, -3030100, 8771397, -4461398, 3536906, 2292976, 5812702,
+7443715, 4422743, 3467649, -7192460, -14248554, 1735704, -7231115, -3621194, 4305168, 1335198,
+-2105071, -2719251, 10302553, 3442416, 13936095, -4421132, 7455527, 7542500, -9478456, 9903121,
+519154, -7917772, 16753594, 6030671, -5754720, -16114717, 13639742, -27361626, -25299504, -9057012,
+19756312, -11198053, -14345728, -55835, 22752052, 2483565, 23508504, -7744900, 28361816, 3357054,
+15241228, -9813463, -6528887, 9045201, -29056528, -8025147, 11104101, -5086315, -3810710, -23350126,
+-22049826, 10415296, -13401909, -9581535, 18305150, 25061672, -3537979, 16530792, -29358248, 1939178,
+-7871065, 38441568, -15654619, 12899934, 23616952, 22494354, 6691022, -15428059, 10096931, 7295539,
+6960532, 12536473, -37547676, 69806104, 22449258, -5932961, 3862786, 7999377, 19541028, -5178120,
+15093589, 40797356, -2099165, -49999324, 21203180, 17675402, -17605070, 23795730, -4967667, -10306848,
+-26684632, 52235392, -26556856, 58135604, -37908992, 14543296, -495532, 63143000, 28159954, -26668526,
+26051124, 1351841, -16464757, 12871480, 2212982, 5918465, 14334453, 6219650, -15915001, -3976603,
+19452444, 5375152, 11125576, -8603356, 12270185, -20068772, 7815230, -912681, -6285148, 12858595,
+-6738804, -3717294, 9366787, -1316944, 1637456, -1371705, 15561203, -9776419, 15192910, -8577050,
+14076755, 19523848, 7454990, 5458904, 10955925, -2551748, -7303592, -7162395, 9492951, 3416647,
+-1241782, 93416, -2113124, -13640279, -10368051, -1930051, 723165, -8450885, 47631724, 5566815,
+25796648, 13086228, -26422638, 1494112, 15454366, -4842039, -23026930, -4536023, -50055696, -14128832,
+-18733036, -10922639, 10761577, -1622424, 17732310, -8923331, 1802276, 17236778, -15643882, 1504849,
+9794136, -1155346, -17149804, -209917, -11820287, 34257196, -6166500, 19771882, 3107946, -531502,
+35194036, 25242060, -15672873, -18460306, 8834211, 15776489, 19265076, 23320062, -554051, 8081518,
+22203370, -1440425, -9098351, 6756521, 664646, -20024212, -567473, 12790413, -19583978, -26479010,
+-2596308, -1844689, -2925410, -9066139, -9586367, -31519154, -126165, 30404074, 9345312, 16785270,
+9982578, -4408247, -40485972, -29917132, 7864622, 25834228, 8440684, 12899397, 52964464, 54776940,
+46526844, -4029216, 23081692, -15110232, -39225400, -65594888, 11265699, 7696045, -2989297, 8706972,
+-20716238, 4061965, -5102958, 23547696, -1869921, 18827526, -23713052, 11256036, -29102698, -6027987,
+12192338, 1676648, -14849313, 3052111, -12241731, -13603235, -5686000, 3054796, 11028939, 13887777,
+18773302, -4990215, -1085016, 4412005, -5232344, 5591511, -19591494, -17132088, -11655467, -16071768,
+-15105400, -16411070, 10281078, 7034083, -2727841, -10952703, -15997679, 9166534, 92342, 14771466,
+-3819837, 13023951, 9909026, 76236, 4219806, 15699716, -19527068, -18815178, 11093364, -2208687,
+-14444512, -30776126, 9231495, -18315888, 9505299, -7756711, -21602612, -6445672, 255014, 11261404,
+-8893267, 5910949, -31880468, 30577482, -67258112, -6400038, -16494285, -13492103, 9489730, 39104604,
+6650757, 14429480, -32898376, 7849053, 12724914, 26999238, -13409962, -21166672, -14511621, -6926709,
+-568009, -190052, 16554415, 12105902, -9035001, -48489644, -22748294, -39358544, 5083631, 70491152,
+-49117244, -19248970, -7145215, 40909028, -13063680, 17528298, -12458090, 19928112, -7237020, -11425150,
+-24665998, 13391171, -28661928, 27398670, 49238580, 6678138, -8474507, -8694624, 40933724, 11143830,
+155693, 21788370, 7537131, 8148090, -7253126, 47153908, -72927472, 53613004, -44224740, 21671868,
+53057880, -41717016, 85703928, 58454504, -21286932, -6863358, 59119152, 21809308, -5005248, 38997228,
+35128000, -44546864, 60990148, -36134096, 11318849, 12003360, -15629923, 12081206, 20322712, -11787538,
+-21536040, 7605314, -11334419, 5551782, 5662378, -5652177, -16744467, 7337415, 6791954, -6667400,
+7896298, 6296959, -13343927, 34656628, 4334696, 1141388, 1338419, -6503654, 5852967, 5043366,
+2434173, -10720775, 6426345, 2003602, -4243428, -9346923, 21772262, -7567196, 17834314, 20053202,
+-1340030, -6834367, 5837935, 5260261, 8275865, 24082418, 21020644, -17830556, 9169755, -6985765,
+-390842, 10639171, -1634235, 49753440, 47438452, -40207336, 39534636, 36369784, -33879240, -51261508,
+-75781480, 17819282, 114192976, 46966004, 369904, 23648090, -108848432, -44917304, -3697430, 16720308,
+82184200, 80347560, 14024142, -30840550, -60226716, -35316444, 4271345, 26001196, 39391292, 63184876,
+38280508, -50770272, -119998704, -97881768, -9435506, 109086264, 118790744, 74998720, 23090818, -25121264,
+-48212080, -73109472, -41515152, -44451836, 87456808, 72645080, 46080704, 40652404, -61495880, -86425480,
+-100117296, -89820648, 34839164, 121734408, 150086016, 50689204, -45168024, -106667664, -127728568, -34802120,
+20842940, 13234942, 80325016, 31422518, -29996588, -17933100, -61378304, -13459891, -70204464, 30502320,
+83800720, 156241776, -9223442, -83566104, -181222928, -7122667, -61089468, -6551973, 87278568, 17200808,
+-7699266, -38856032, -81468552, -53637700, 39560408, 63340568, 21158082, -11132018, -27547384, -33413234,
+32807108, 37284076, 23393614, 19929722, 9262634, 18573050, -1476932, 1687922, -17820894, -8492761,
+2406256, 47040092, 41564008, -2229625, -17324288, -4689031, -41719164, -28373090, -704912, 15953119,
+43882756, 33411624, 24173150, 2044404, -58228484, -52937620, -35339528, 13703093, 56965760, 109462608,
+67546952, -50705312, -90574416, -80554792, -31936304, 2113661, 75537200, 94286344, 70966816, 12212740,
+-55582784, -127587912, -79746808, 25726318, 79597552, 90094992, 26947698, -13459354, -34496640, -41760504,
+707059, -10460930, 51341504, 30015378, -4581657, 10883447, 5512054, -36643588, -3876745, -3017215,
+3937948, 1101659, 2872796, -13423383, -5411659, -4975720, -3429532, -6125697, 21844740, -7904888,
+9348533, -16522739, -1724966, 6774774, -846109, -5041218, 37766184, 5206037, -21488796, -24919400,
+5163088, 5204964, -14700599, 4031901, 18929532, 9844602, 17810692, -18331994, 5463736, -671626,
+4217658, -12910135, 2369748, 14276471, 20161114, 5104032, -5358509, 5915781, 2199560, -4736275,
+13712220, -20412906, 4510253, -33236068, -10499048, 13700409, -11374684, -13370233, 17956722, -11540577,
+-31113280, -24021752, 21148956, -2673617, -4328790, 4865661, 10654203, 26914950, -17682918, -22899156,
+849330, -3163244, 18112414, 112206, 10534481, 4857071, -1938641, 27958090, -36587216, -5366025,
+-5288179, -21434034, 5338645, 11956652, 382789, -12779675, 5510443, -2907693, 3485903, -11055783,
+7940321, -605054, 1161252, -1012539, -2860985, 14155675, -14428943, 1069984, -2604361, -5171678,
+-4731980, 1614908, -6348499, 6464463, 8178692, -8735427, -2383707, -3373697, 7471096, 8428336,
+-4461398, 10399190, 834297, -1561758, -7242389, 7479149, 2405719, -3047279, -11856794, 5436355,
+-10782515, 6742562, -5929739, -5196911, 9426916, 9556839, -13385266, 1499481, -3320547, -12974022,
+3927748, -7621420, 8190503, -7514582, -30088930, -33182918, -78932376, 22812718, 22565222, -1613834,
+-66542464, -43021612, -6335614, -10923176, 44452912, 29982630, 14417668, -29465624, -12166032, -7817378,
+27831924, 3045669, -7941932, -17301202, 11407970, 5056787, 13841606, -773631, -5666136, -7090991,
+-15934866, -7968238, -9647033, 26579942, 14207752, 3114925, 3979287, -17530982, -947577, 2111513,
+24271398, -1772748, 11308112, -9041980, -6297496, 4929012, -10016937, 6594923, 2895882, 7094212,
+23676008, -2092723, 20775830, -294205, 13338558, -10344966, 867583, -15203110, -19666118, -20700132,
+-17710834, 5812165, 3060701, 1504312, -26077430, 12861280, -22698366, -2579665, 1171452, -14231374,
+-15402826, -8147553, 272194, -27115202, -18342732, 16818556, -8189966, 15657303, 2484102, -4364224,
+-14660871, -16935056, -1107028, 23990614, 29743722, -7428683, -3054796, -11206643, -14919643, -10310069,
+9478456, 5025112, 3642669, 9292162, -1847373, -6183679, 6442451, 3539053, 5361193, 8127689,
+-4570919, 2729452, -908386, 173409, -6209986, 10744398, 3404835, 2438468, -3232500, 1543504,
+-234613, 16757889, 2136746, 5016522, -9409200, 620086, -6092411, 10963978, 758599, 157840,
+-3863860, 2538863, -1262720, 130997, 5255430, 491237, 6888054, -4690641, 2238752, 719407,
+-8826158, -483184, 5049271, 1935420, -1815697, 17746804, -38152732, -94612224, -90687160, -13756780,
+27435714, 91260536, 78864728, 74349640, 79859552, 44466332, 10760504, -40305584, -40502080, -84171696,
+-65369404, -57303992, -36354212, -45721536, 62989452, 51831664, 68209984, 39351564, 55751360, -2004139,
+14686104, -8937827, -21746494, -12420509, -26001732, -30228516, -30131344, -29702920, -35187056, -25738666,
+-20921860, -2350421, 5542656, 49473728, 41502268, 21897890, 23503672, 32647658, 30276298, 14609331,
+70395584, 9185861, 920197, 13238700, -26297548, -80736792, -23109608, -64712272, -69442104, -73332272,
+-51901460, -46185392, 2305861, 38361576, 39095476, 47794396, 86872160, 62565864, 76235672, 74968120,
+47801376, 51445120, 17547088, -18049064, -58700392, -76968496, -87997440, -57198228, -78978544, -66318592,
+-75833552, -44202728, -5293011, 20817170, 61349312, 58597848, 59436980, 99037112, 68961072, 81874424,
+50959252, 8522826, -9623948, -24745454, -40991704, -45844480, -48641580, -47334836, -54641648, -46769508,
+-34274912, -20999168, -10922102, -8198556, 23685670, 22563074, 31714576, 51331840, 57765164, 36694052,
+44125956, 27271432, -1708860, -11966316, -26683558, -33286534, -28613608, -24642374, -29909078, -10888816,
+-7439420, 695785, 8391292, 9402220, 2312840, 1302449, 8213051, -1187022, -7259569, 6633577,
+3852586, 4733591, 7246684, 2183454, 1877975, 4459250, 10094247, 8725226, 3910031, 852014,
+-2333778, -8684424, -6696391, -7903814, -6986838, -2757906, -5435281, -4656282, -2718714, -2073396,
+-3004867, -828929, 3099893, 3169686, 3795141, 6293738, 4003447, 2831457, 3544959, 927713,
+641024, 338229, 5906, 26307, 64961, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-4422206,
-7414188, 2582886, -1357747, 1876364, 2378875, 4445291, 7424925, -3573950, 2461553, -3045669,
--2370822, 1486596, 9664, 614717, -5254893, -2555506, 1842541, 3695283, -501437, 3112778,
--5634460, -4997732, 3134253, 2003602, 855772, 2280628, -1929514, 4025458, 4504347, 4374424,
-6274411, -3491272, -2888366, 218506, 789737, -6030671, -389231, -528818, 1646046, 586800,
--3777961, -934692, 5122822, -2747169, 996969, -3150359, 1498407, 1579474, 1017907, -4690105,
-3772592, 339839, 843424, -651224, -1549410, -1948841, -3204583, 6790880, -1206886, -1258425,
--1533303, 3012920, 695248, -6433324, 1624035, -2941516, -4420058, 2597382, -2735894, -6963753,
-2767033, 1015760, 295816, -6417218, -7785165, -3181497, -3841848, 3600256, -1054415, -15032,
--1767916, -2107755, -1758789, 48318, 3176128, 574452, -1430224, -120796, -1494112, -664646,
-1403917, 424665, -1354525, -1825898, -639413, -751619, 691490, -461172, 255014, 252866,
-754841, 194347, 1085553, -461172, 249645, -255014, 762357, -49392, 699006, 4347044,
-517544, 375273, 3867618, -5771363, 966905, -4815732, -6096706, 1760400, 5720360, -3535295,
-2716030, -2660195, -1285269, 1154809, 288300, -2828773, -8406862, -8347269, 150861, -2111513,
--75162, 4370666, 701153, 5350456, 7226820, -3805341, 6241125, 783295, 6335077, 403727,
-7517267, 960999, -4204773, -1152662, 424128, 3427921, -925565, -1125818, 747324, 2602213,
--3122978, -185757, -963146, 2302639, 2801929, 158914, -2845416, -197569, -514322, 1648731,
-2942590, 5274220, -1837172, 3424163, -1539746, -4581120, -4092567, -2763812, 2596308, 2820183,
--1547262, 4563403, 151934, 1660542, 239444, 5548024, 3677566, 4089883, 1661616, 2411087,
-1487669, 2237678, 4531728, -955093, -231391, 6403260, 1286880, 191126, 1333587, -2372433,
-358093, 1894081, -141734, -5972152, 1876901, 642635, -957241, -2068564, 1384590, 415538,
-3258807, -1195612, -590021, -1239635, -1010928, 830002, 238371, 1312113, 619012, 308701,
--1174674, -926639, -548682, -572841, 514322, -1547799, 1371168, -552440, 406411, -369904,
--553514, -856846, 529355, -689879, -523986, -1686312, 6424198, -6649683, -4496294, -3700114,
--5393405, 1649268, 2261300, -4344360, 953483, 8794482, -6482180, 4439386, 7575249, 7494718,
--4693863, -1313186, 3688840, 675921, 1112397, -3422552, 1809792, -11506217, 8958765, 14070313,
-2452426, 4715337, -2338610, -227633, 7446937, -3973382, -9095130, -1539746, 89657, -60130,
--7356205, 509491, 1773285, -8720394, -4128001, 4001836, 1322850, -3120831, -849867, 2982318,
--4283156, 8968965, 2762201, 388695, -5820218, -597000, 3058554, -1986422, 146566, -2087354,
--161598, -884763, -4672388, 265214, -4520453, 6729140, -6569153, -4365298, -1507534, -7834557,
-5190468, -4225174, -10920491, -2021319, -4736275, 1307281, 4953171, -5101885, 586263, -3470871,
-3504157, 470836, -3638911, 3062312, -3939022, -5167383, 5687611, -3723200, 1592359, 119722,
-476205, 1984275, -1176284, -1769527, -1999307, -3154117, 1007170, -4449049, 209380, -915365,
-1349694, -1336272, -151934, -11811, 75699, -2369748, 2064269, 84289, 354872, -1284732,
--933619, -966905, -108448, 1398549, -5071283, 3238942, -146566, -993211, 3844533, -3637837,
--12781286, -2495913, -784368, 5587753, 7914551, 7010461, 3373697, -2750927, -858993, -7881802,
--6679748, 2308008, 8993125, -2573222, 9212705, 5859946, -5679558, 3055869, -870268, 3195456,
--6347962, -4284230, 1051730, 4588099, -576063, 2735357, 3826279, -7181722, -1436667, -3313567,
--9774809, 6081674, 974958, 2208687, 4246112, 7756174, 2711735, 363998, 6091874, -1422708,
--3104188, 6256694, -3286724, 10574209, 4882304, 4204236, 230318, -3042984, -3689377, 5182415,
-7056095, -5237713, 1284732, 6724845, -1182727, 2185065, 14873472, -4497368, -1777043, 2885681,
--7437273, -304943, 1347546, -3325915, 3634079, -2410551, 2246805, 7372312, 273804, -1703491,
--5006858, -418759, -6221797, 2632815, -2298881, -3071975, -1262184, 1178432, -1777580, -1804960,
--1495722, 332323, 2315524, 1693828, 485868, -539018, -678068, -536334, -326954, -1043677,
--1817845, -364535, -550293, 962073, 24159, 479426, -1837709, 777926, 1001264, -704912,
--1606855, -615254, -1685775, -912144, -738734, 1249836, 159988, -281320, -107374, 283468,
--2547453, -505732, 920734, -3192771, -18236432, -1417876, -321586, -3594351, -5611375, -1791538,
-9885404, -6892886, -10351408, 3980898, -4167192, 1559073, 1917166, 6660421, -4434554, -1285269,
-1358283, 6198712, -2806224, -3951370, -1144072, -3389266, 4576825, 8345122, 4223564, 147640,
--623844, -4665945, -224412, 13088376, 2349884, -1541893, 15097884, -824634, 11243688, -3303904,
-149250, 7666517, 2363843, 1963874, 2768107, 1408749, 4234838, 2510409, -7083475, 13355738,
-8128226, 10981695, 7369627, 4893042, -7208029, 3293166, 3758633, 640487, -4397510, 12408161,
-7520488, 11218455, 2041720, -2137820, -2685965, 8284455, -3939559, -8383240, 10020159, 3201898,
--5413270, -3088082, 554051, -2474438, 1034550, -1072131, 1466195, -3370476, -886911, -7926362,
-3136937, -899259, -147103, 3033858, -924492, -1411434, 4776004, -222801, 3724811, 4997195,
-4085588, 2682207, 2640331, 1127429, 1569811, 115427, -954020, -842887, 2217277, -512175,
--1253594, -1280437, 1089311, -1455994, -335544, -212064, 2750390, 1216013, 1990717, -1704565,
-639413, -1347009, -437550, 1952063, -179315, -654983, -523449, -387621, -4587562, -609885,
--11943767, -4680441, -13363791, -9135395, 1043140, -8655970, -6802692, 872415, -1475321, 9047349,
--5923297, 10020696, 12272332, 1321239, -10329933, -7229504, 11027865, -5502927, -2951180, 6226092,
--7985955, -14200772, 5770289, 12387223, -6285685, 3218541, -179315, 5444408, -14836965, 3042448,
--5931350, 3672197, 350040, -6170258, 10429791, 4821101, 4433480, 13899588, 6492917, 2934000,
-7881802, 1647120, 2585570, 4024921, 1367410, 708670, 2186675, 1966558, 15791521, 8931921,
-12348, 13287018, 8320963, 9829033, 15291694, -7714298, -6462315, 13432510, -4610111, -435939,
--7885560, -3278134, 4793721, 7164006, -5999533, -632971, 2054605, -1630477, 3720516, -6317360,
--1161252, -7319161, 14416595, -4567161, 7889318, -2152316, -3804804, 10654203, 1888712, -3015604,
-3471944, -1226213, 333934, -2909304, 4031364, -670015, 1470489, 4366908, 2486249, 1365263,
-2442763, 273804, -357556, 1805497, 462783, -2841121, 656056, -525060, -1344862, 2743947,
-20401, 1388348, 1108102, -503585, 527207, -1626182, 376883, -1476395, 150861, -545461,
-1935420, 609349, 1664300, 544387, 4553739, -4858145, 1569274, 706522, 1555315, -6977711,
-9082245, 5277978, 12338367, 2397666, -1668595, -13914620, -7441568, -5209259, 3556770, -7222525,
--12054363, -3346317, 3090766, 1354525, -13462038, 10940892, 841277, -803696, -11467563, -6581501,
-2705293, 1430761, -12741020, -3944928, 4656282, 534723, 1284732, 6550362, 7628399, 4478041,
--1973538, 3868155, 1188632, -4547834, -9432285, 16273094, -4081293, -7888245, 153008, 4057670,
-5248987, 12176769, 1993939, -191663, -4569845, -105764, 6733435, -820339, 8413841, 16165183,
-1350767, -3464965, 483721, 13924284, 17365626, -8622147, 2418067, 2462627, 9385577, 5002027,
-1649268, 2928094, -6924561, 4350265, 4471598, 4515085, -2997887, 298500, 3402151, 5216775,
--739271, 1822140, 1185948, -5829881, 2823941, 325344, -5309117, -3802120, 5607617, -2473901,
-3875671, -5587216, -4320200, -1870995, 1266479, -33823, 5055714, 2370822, 893890, 304943,
-2519535, 2397666, 719944, -4221953, 169651, -1737851, 667867, -1292785, -1063004, 10737,
--450435, -544387, -1478543, -4129074, -1187559, 523986, -2850248, -1731946, -1816234, 147103,
--1819456, -2885144, -718333, 1477469, 2254858, -4488241, 6431177, -5662915, -10304700, 7203197,
--801011, -2478733, 2764348, 6138045, -17314624, 1108102, 13344463, -1503775, 23974508, 11478837,
--7265474, -5323075, -2200097, -6871948, -3027415, 10726144, -4067334, -3463354, 10752451, 8732742,
-2915209, 5025112, 10053982, 6664179, 7536057, -5448166, -3706557, 9542344, -1818919, 8641474,
-104153, -10233833, -6555731, 2820183, 8170102, -11135240, 748935, -5927592, 3180960, -6780143,
-9548786, 9508521, -9192304, -946503, 2755759, -261993, -12447889, -5568425, 2200634, 8328479,
-13700409, 4675609, -10050223, -2193118, -2400887, -1149441, 8640937, 1400159, 6936909, -10302016,
-4702989, 741419, -8135205, 9744207, 4188667, -1276142, -2112587, 1711545, -301185, -8327405,
-6364605, -1901060, 3821984, -6465000, -11425150, -6339372, 2785823, 5160403, 191126, 2863670,
-10384694, 137976, -2568391, 6518150, -1938641, 6136972, 431644, 2013266, -5168457, 565862,
-210990, 2830920, 3154654, 4356708, 2825015, -1036698, -1190780, -1984812, 5208185, -2374580,
-2750927, 587337, 1691143, 2131915, 2953327, 1293859, -904628, 2615098, 1098975, 893353,
--912144, 3508452, 1731946, 756451, -3374771, 1284732, -1276679, -11274, 2456721, 11126650,
--13597866, -2118493, -4307316, 14050986, -6200322, 11586748, -3544422, 10820096, 14653355, -6418829,
-4660577, -3660923, 8371428, -3107409, 6979859, 5801964, 5473936, -1187022, 5754720, -2822331,
--7185481, -3425773, 8143795, -9408663, 1554241, 19327, 7261716, 14640470, -13290776, 523449,
-13131863, -266288, 12011413, 1685775, 5310727, -1596117, -955630, 3279208, -18380850, 1868848,
--383863, -7284265, 4937602, 3071439, 13441100, 6710350, -1270774, 25465398, 6391448, -13344463,
-3601867, 1333587, 8934606, -5724655, 1762547, 7545184, 649614, 4612795, -1277216, -14585172,
--14925548, 71941, -5007932, 12079059, -20305532, 26220776, -97711, 14614700, 16728361, 4045859,
--4361540, -3295314, -7776575, -10341744, -833761, 3379066, -2577517, 5271536, -3449396, -8324721,
--5223754, -4195110, 1556926, -1280974, 973347, 5629629, 2870649, 2680060, 2105608, -2321967,
--2829310, 183610, -560493, 1622424, 432718, 661962, 1815697, 3266323, 1989644, -6477348,
-1232119, -1217623, 4769561, 4768488, 2801929, -434329, -1335198, 1872606, 1534377, -2292439,
--2374580, -598611, -1610076, 454730, -1723893, -3143379, 1294933, 5244155, -1311039, 2110977,
--3983045, 516470, 2358474, 2401961, -79994, 1539209, 3419868, -24267638, -1764695, 8190503,
-1307281, -9148817, -22539988, -64425, 2518998, -3999688, -991064, -6678674, 3435974, -5570036,
-11534135, 4030290, -6951942, -8688719, -14832133, 11011222, -4764193, 699006, 14362908, 19758998,
-12035035, -1898912, 992137, -13648332, -5856188, -5523328, 3606699, -19340238, 4996658, 5209796,
-1063004, -9971303, 9479530, 14747844, -2425046, -316754, 1689533, -8649527, -9119826, 5170604,
-3544422, 11141145, -12345347, 13304735, -7070053, 7307350, -11429982, -9055939, -4538170, -350577,
--1379221, 4818954, -2486249, -19988240, -14972793, -4265977, 505732, -20042464, 254477, 9823127,
--5311801, -2370285, 3007551, 8342974, -17602386, 8922795, -3111704, -2707440, -103079, 7119982,
-8957154, -10627360, -5406290, -7167764, -3462281, -2632815, 5205501, 1663226, -6383395, -2930242,
--4896800, 3319473, 11679090, 7629473, -68719, -412854, -6531572, 171799, -3991635, 5424007,
--1003412, 9517111, 3202435, 3268470, -3446711, 119722, 114354, -7758859, 8195872, 528281,
--1443109, 4185983, -1509144, -1385127, -384400, 540092, -6649683, 2835752, 4062502, 4204236,
--684510, -1669132, 1468879, 2332704, -2371896, -1513439, 2371896, -5166846, 571231, -230318,
-4768488, -472446, 21748640, 530965, -4409321, 16915728, -3692061, -6875169, -1815161, -1552094,
-20980916, 23992224, -3116536, 5107790, 6120866, -3059627, -11382737, 5612449, 22313428, 17017734,
-14557255, -5277978, 6315213, 11981885, -15535434, -11574937, 13590887, -6925635, -7595650, -519691,
-16989280, -2553358, 15641197, 1029718, 14038101, -8392366, 19284404, 5865315, -5960341, -9826885,
-3536906, -13904420, 1689533, -16499654, -5609228, -5917391, 9467719, -9446781, 15586436, -19053012,
--32944010, 20601884, 9243306, -4050154, 197569, 22723062, 10695005, 1805497, -5938329, 4908611,
--2619393, 272194, -14739254, -14981383, 8844411, -5031018, 4900021, 28209346, -7351911, 6066105,
--18388902, 21795886, -7266548, -9740986, -4634270, -3051574, 9134322, -18480170, 15480136, -18114024,
-13092134, -9329743, -12593918, 12593381, -511638, 4121021, -5084705, 7444252, -4054986, -5708549,
--2513093, -8649527, 5986111, -294205, -5589900, -2404108, 2136746, 9200894, 1782411, 1299765,
-2496450, -248571, -1535451, 4660040, -2594697, 2094870, 1989644, -2415382, -639413, -558346,
-6655052, 5759015, -2090575, -3228742, -6883222, -159988, -1375463, -1027034, -1090385, 171799,
-6381248, 1869921, -726386, 7967701, -24724516, -18378702, -17820356, 24875376, 831613, 10676215,
-6359236, -21916144, -19164144, 12881681, -34190088, 9988483, 10149008, -2197950, -13606993, -12511240,
-21293910, -11455215, -1510218, -3583077, -11045045, 16199006, 5152887, 14656039, 8517994, 10111964,
--3212636, 16456167, -1521492, -10762114, -12680354, -2917357, 7134478, -9607305, 12771085, 8204998,
--9641128, -34610456, -2915209, -2842732, -864899, 25149718, 562104, -19698330, -11696270, -12044699,
-10318659, -7591355, -16413754, -18306762, -11398843, -8900783, -40820444, 980863, 5081483, 13410499,
--21327734, 6983080, -17624398, -14408005, -4944044, 17065516, 4353486, 15840376, 29894046, 9004399,
-6852084, 19508816, -15215995, -1935420, -7233262, -8335995, 15613817, 14457934, 22942104, 11289322,
--21032992, -13993540, 16494822, -24823300, -27368606, -8591545, 19917374, 3170223, -4888747, 13602698,
-11076184, -105227, 3148748, 11536282, -7559143, 6829535, -5575942, -1051730, -5810017, -1065689,
-1501628, 8085276, -5143224, -6470905, -34360, 4568235, 1438814, 4155381, -664646, -6468221,
--1570347, -4279935, 317291, -3573950, -725313, -494458, -7313256, 5928129, 883153, 6033892,
-7546795, 10473278, -3948149, -5552319, -464930, 1023276, 12047383, -10572062, -22408992, 6523519,
--35970, -154082, 1124208, 3447248, 5104569, 10237591, 3524021, 8659728, 4901095, 10207527,
-26016764, 1122597, -33260764, -12023761, 8772471, 588947, -6704444, -21300354, -13930190, 4790499,
-17740900, 7022809, -16443282, 9188546, 7350300, -18647138, -3310883, -23119808, 18595060, -9495099,
--11937325, 17175038, -16159814, 4817880, 35544612, -3911642, 5987722, 10647761, 173946, 5367099,
--20456930, 5255966, 3885872, 3569655, 46610596, 31621696, -3234647, -15963857, -10482405, 14789720,
-17134772, -18377628, -10139344, -24737402, 39808980, 11120744, 4802847, -6174016, -4101694, -8629126,
--4675609, 28669980, -7406134, 7897371, 28649042, 4968204, -7813620, -20924544, 753767, 8624294,
--42232952, 9405978, 4849555, 29189672, 20030116, 15635292, 26114474, 14807973, -4926328, 2709051,
-9242233, -2781528, 1473711, -1693291, 4323959, 2423972, 24415816, -568009, 10153303, -4140349,
-9816148, -685584, 13034152, 2833605, 3791919, 11783780, -731755, 4948339, 8089034, 306016,
-6584185, 9076877, 4181151, 7252589, 10683731, 6098317, -3675955, -673773, 2538863, 2648384,
-326418, -4115653, 2318746, 2815888, 1479079, 5634460, -536334, 8795019, 4981089, -3504693,
-9321153, -1173600, -5903970, -27122182, -3881040, 18710488, 10491531, -30383672, -40066676, 4626217,
-27205396, 11018202, 16627429, -9429601, 12842489, 2173790, 344671, -14522895, -5201743, -22626962,
-33643016, 11300596, -27312234, -18712636, 12226698, 1327145, 6738267, -8145406, 16779364, 9835475,
-11548630, 22054658, 19501300, 4056060, 19064822, -9999758, 10940892, -12348, 13298829, 6156836,
--3208878, -7976291, 9171903, -11864847, 31368294, -8380555, -5954436, 6491843, 15493558, 15399605,
--10416906, 27096412, 26763552, 15646029, 6451578, 2316061, -8653822, -20288888, -34875672, -5585068,
-12345347, -671626, 15113990, 16608639, 17663590, 6258304, 9814537, 57942332, -28506772, -12329240,
-5662915, 11277510, -1540283, -45061724, 10515691, -6915434, 6680285, 8121783, 19918448, 4132296,
-236223, -18035104, 18725520, -6615860, 2599529, 16634945, 7369627, -17464410, -3940633, -9747428,
--3517578, -7444789, 1088237, 853625, 6935836, -1534914, 8488466, 8665097, 11052025, 62277,
--285078, -6642704, -3267396, -8949101, -6372121, -2534031, 11726871, 4017942, -2113124, 1007170,
--4924717, 1930051, 10231149, 11973832, -2609730, -10652056, -476741, 881005, 4796405, -2778844,
-3215857, -4933307, 7656316, -14973330, 1216013, -4430796, -5708549, 239444, 2662880, -9554692,
-4365835, -1613297, 4304631, -5071820, -8919573, 3413962, 15158013, 14920716, -8206072, -11167989,
-3339337, -10730976, -34408056, 35601520, -10368588, 10020159, 3314641, 29863444, 23816668, 14972793,
--14216879, -2338073, 20437066, 10849087, 24050744, 64064268, -3943854, -25232932, -6558952, 19161996,
--2836826, -29806536, 45585708, 23622320, -16041703, -24953760, -3055332, 5609228, -7910256, 18107582,
-15401753, 17767206, 34038688, 5705327, 9634149, 6089190, -13151190, -31654982, 18640158, -21538188,
--16160888, 24999394, 13124883, 14104136, 7422777, 5155035, -1406602, -31259846, -27728846, 523449,
-16626892, -20664698, 19606526, -9164923, -23157390, 7316477, 20369956, -3755949, 3943854, 20207284,
-19937776, 20674362, 1551557, -12612171, 11810623, 49118856, 5951751, 19975892, 28087476, 1373853,
--8867497, -24682104, -9953050, -38898980, -13311714, -9736154, -4771172, 8842801, 1539746, -1767916,
--11152956, -7366406, -6466074, 9610526, -9976135, -1999844, -8798241, 2874944, -5578626, -9584756,
-408022, -13795435, -4836670, 235149, -12433393, -2356863, -10829760, -6270653, 1225676, -19921132,
--1903744, 934155, -198642, 9411884, -12656732, -4177930, 13619341, 264677, -5334350, -590558,
--4554813, 2618320, -5821828, -4418448, 6788196, -467078, 478889, 18168248, 14977088, 530428,
--11720966, -17381196, -30827128, 5687074, 19188304, 26189636, -21982716, -23448374, 29105382, 13157632,
--985158, -2782065, -11857331, 5667746, -5447629, -12385075, 13426605, 16336445, 11349451, 1226213,
--2210835, -8908299, 2092723, 6946036, 4260608, -10084583, -36003636, 8209830, -8077760, -10705743,
-2152316, -4533338, 3172370, -35884452, 16937204, 13308493, -25798258, 18293340, 24246164, 20311438,
--5272073, 3521336, -3084324, 13292387, -2833068, 64425, 64538328, -19200652, 5496485, -17127792,
--9880572, 36504536, 13448079, 12557411, 23407034, -29477972, -24373940, 36703180, -23004918, 18799072,
-23230942, 2343442, 6303938, 8920647, 41626288, -13965623, -15699179, -37936908, -8011188, -16263431,
-13040594, -23692650, 40462352, 22069690, 24773372, 12258910, 21671868, 11416560, 38633232, 9599252,
-18668076, 14261439, -18762564, -8932458, -7162932, 3486440, 2347200, 18974092, 8378408, 105764,
--726923, 4421132, 1915019, -7213398, -14256070, -7577933, -10662793, 13729937, -4631049, -7647190,
-4558034, -2894808, 16969416, 7878044, -2824478, 9543954, -10647761, 5302674, 8628589, -2949032,
-16443819, 16729971, 11279121, -7689065, 13913010, 8012799, -13382044, -2502355, 1581085, -8091182,
-1095217, 11978127, -13464722, -15654082, 7122667, 3232500, -1341640, -10349797, 26659398, -15407658,
-14107894, 45291504, 22506166, 17154100, -25273198, 7159174, 25241522, -21509734, 35723928, 12826383,
-19128710, 17126182, -10945187, 17740362, 15285789, 6456410, 35418448, 26855894, -1999307, -60508572,
--7063611, 28168544, 27176406, 27933930, 6724845, 15611669, 1417339, 7882339, -1965484, -18705656,
-38816304, -964757, 36988260, 16689169, 26706644, -37244344, 25351582, 12659953, 11439109, -9725417,
-8845485, -6897181, 8447664, 37179920, 14865956, 48496088, 2462627, 10766409, 28381144, -5665062,
-44572096, 21983254, 3981972, -29416768, -18337362, 16276852, 1957968, -4864588, 1072131, -4982162,
-3595961, -21427054, 14460618, -22820772, -33939368, -12705587, -1792075, -11339251, -8659728, 28883118,
--3325915, 26305600, -24898462, 28900298, 3999152, -31935230, 31765042, 26444114, -9774272, -4445291,
-7681549, 13892609, 9040369, -1325534, -14381161, 9156333, -6135361, -922344, 18384070, -3730716,
--2865280, -14766634, -3813394, 4081830, 2988760, -995359, 13858786, 12152073, -9460739, 3283503,
--92342, 503048, 12759811, 3854733, -13623636, 9259413, -11633993, 5964099, -9385040, -3825742,
--2884608, -2165201, 1748052, 2634426, 1811939, 711891, -2598455, 2297271, -6484864, 4558571,
-5379447, -1146756, -5297306, 4006668, -1105417, 6811282, -3723737, -3313567, -9417253, -452045,
--8351564, -27005144, -25817586, -10389526, -11183021, 20903606, -33804076, -42122356, -45798312, -55315956,
-24714316, 27135066, -1580011, -4461398, -172872, -13169443, 3205119, 6861211, -11662984, 37642168,
-35469452, 23162758, 25373594, -23382338, 15526307, 1262720, 18489834, -7307887, -9527311, -34564288,
-30903900, -31236224, -37811280, -9958955, -7943542, 40552008, -22297860, 5428839, -21048024, -5913096,
-39121784, 7230041, 12377022, 19343996, 35929012, 2183991, -4023848, -43921408, -8101919, -3546032,
--1247688, 24023362, 12928925, 81713904, 4093641, -2552821, -27111444, -2205466, 32494648, 29781304,
--2685428, -14391899, -40385576, 10066866, 25567404, -13118978, -29452202, -12499429, 25198574, -7713225,
-18496814, -58531816, -32745368, -46790984, -12661564, 18780282, 9974525, -20383914, -19457812, -22903986,
-9188546, 48209396, 14589467, -206695, -17107928, -1383516, -13327820, -3637837, 5698348, 5703180,
--15346455, -6927782, -1379221, 10466835, -26081726, -17733384, -6099391, 12828530, -1794223, 16877074,
-5386426, 2005750, -5903433, -2893197, -11750494, -2466922, -17701708, -3914326, 19414862, 7006166,
-8831527, -13535589, -24476482, 12144020, 11470247, -7051800, -29528, -10052371, -1904281, 3102040,
--1348083, 9204115, 5662915, 6041409, 11611444, 6512781, 9163850, 9984188, -2003065, 8033200,
-4246649, -6693707, -16349330, -8483097, 39759048, 1304060, 231928, 70380552, 6968585, -52121040,
--40023728, 49353468, 43810276, 2788508, -34715684, -43120396, -24729884, 8619462, 42618960, 38004556,
-25460030, -15458124, 5045513, -15526307, 13952738, 32366874, 49885508, 54507428, -6759742, -28972776,
--45889580, -68576672, -652298, 36761700, 148871088, -19289772, -7877507, -71757096, -29685204, 6231461,
-17242684, 88737248, 63971392, 39658116, -44936096, -25307558, -43903692, -2469069, 74257304, 68743096,
-83689584, -22934588, -82261512, -59792924, -83060376, 20948702, 76348952, 67188856, 123729416, -58929100,
--71775880, -62857384, -10439992, 54813448, 72966128, 102040368, 46205260, -21308944, -39608188, 9501005,
--2980171, 29111288, 81609744, -17832704, 50732692, -17988396, -46887084, 790811, 7368017, 44277356,
-2136746, -4001299, 4242354, -11458973, -40550932, 17042968, -5562520, 13944685, -11448772, -33298344,
--8070244, -7772817, 3794067, 22296786, 3120831, -6304475, 8552354, -8002061, -10386305, -1848983,
-32360968, 8319889, 29717416, -2062658, 3407520, -8388071, 3884798, 3525095, 6016176, 23044648,
-39699456, -1065152, -10701448, -36237712, -47964584, 2005213, 2913599, 58187144, 37473588, 6404333,
--20088098, -81723024, -46030240, -6939594, 37085432, 72536632, 37641632, -21808770, -26973468, -84726816,
--31462246, 40558448, 74592848, 60280404, 3972845, -38293928, -43384000, -4215511, -1481227, 35291208,
--6411313, -36407900, 47585552, -11111080, 56196964, -51873540, 529892, -22701586, -53886272, 39304856,
--28339268, 36381056, -28980828, -11208254, -2694018, 18702436, 4080756, -20687246, -11118060, -953483,
-29036126, -27156542, 33321430, 23934778, -18354542, 4131222, -23017266, -23081692, 38814692, -38472708,
--19502910, 25810606, 59354836, -475668, 7907572, -5504538, -26199838, -7330973, 24129126, -8460549,
--39464844, 5519570, -8760123, -6693170, 11686606, -35873176, 17877802, -143345, 12189117, 27591944,
--62658204, -46271292, -15521475, -1428614, 64121716, -34144992, 23107998, 50538880, -27960774, -16438450,
--1958505, 27403502, 39758512, -21873194, 11345693, -8067023, 15615427, 62227632, -23324356, -70180304,
-14715095, 32116692, 8143795, -37512244, 23180476, 9806484, 23270670, -7355669, -1275068, -26203596,
--21026550, 15413564, 3697430, -27924266, 7977365, 19286550, -9581535, -143345, -31199180, 4540854,
--7930657, -34049428, -1408749, 15236933, 12986907, 5499706, -1147293, 8444979, -23506356, -5738613,
-8000987, -11272679, 17627620, -10873247, -4804458, -10278930, -229781, -10951093, 16841640, 3138011,
--13793287, -11565810, -828392, -459562, 27940372, -9821516, 9715216, -5085778, -838056, 6196564,
--12499965, -10752987, 1546725, -23837068, -6947110, 7046968, -20656646, 1009317, -4115653, -6983080,
-4023848, 13344463, -366683, 2011655, -7471633, -4850092, -72426568, -22986128, 31092342, 42567956,
-35347044, -36126580, 11518029, -100852808, -65582540, -55731496, -8877161, 47190416, 30370788, -2150168,
--22175990, -27405650, 13359496, -16783122, -1716913, 36062692, 9830106, 1651952, -35752380, -17251810,
--3644280, -16964584, 10921028, -3029026, 19378892, -5126581, -197032, -6396280, -1153199, -4664872,
--20408074, -15497316, -34252900, -24235964, 17499844, 33480344, 36536212, 20279762, 31843962, -4886062,
-27099634, -6368900, -12379169, -42811696, -1620276, -23665806, 18343806, 6970732, 54135380, -43717400,
-15555298, 30292404, -16668768, -23250268, -13411572, -10860362, -11046656, 3885872, 38477000, 24656334,
--10186052, -1476932, 27639188, -31959926, -35211752, 14529874, -40876276, -31563178, -27413702, 3389803,
-13370770, 15856482, 47595216, 32245540, -5062156, 23992224, -13738527, 927176, 6036577, 17769354,
-28936268, 31111670, 22038014, 18152680, 14748918, 1214402, -39808440, -11335492, -20498806, -5197984,
-23431194, -1044214, 3657702, -8730595, -17646946, 1945083, -8651675, -7292318, -19222126, 8511551,
-14670535, -6496675, 5748277, 12835510, 7236483, 8359080, 1628330, 8229158, -5557688, 5650030,
--2531883, -10207527, 7938710, 9716290, -7833484, -11739219, 1205275, -7941395, -13472776, 10509785,
-11528229, 4399121, 14805826, -1346472, -13288629, 22968412, -9435506, -86497960, -127776888, -156829664,
--123946312, -184840896, -32807108, -67602248, 20294258, 38631620, 133545032, 77936480, 138346800, 140676816,
-192649680, 140579104, 142914496, 105228848, 4383551, -30681098, -55955908, -34471408, -115299472, -78845936,
--62824636, -64205468, -63529008, -63410360, -61546880, -66406636, -72856064, -54349588, -84688704, -69283728,
--60394220, -27199492, -71184784, -22092774, 25999048, -52927420, -25636660, 14063334, 11456825, -44828184,
-37118716, 47732120, 60490320, 82091320, 83453360, -6693707, 49570364, 80692768, 114590264, 90278064,
-180574384, 169572832, 149770880, 121324240, 153663200, 76215272, 122317448, 148902224, 114664352, 73267848,
-124370440, 40256728, 41703060, 76340896, 76609872, 54346368, 15683073, 44399224, -14942728, 2514703,
-38873212, -44534516, -111682032, -166882560, -66003448, -228427296, -199794896, -175768320, -203199200, -226096736,
--189498784, -164084400, -158253440, -109153376, -143444384, -73741368, -91112360, -96892848, -146812176, -118706992,
--85592792, -70172248, -59370944, -55713780, -34911640, 13703630, -222265, -3491809, 41261212, 86177448,
-71929968, 72772856, 116196584, 99258304, 103241888, 131006704, 123636536, 105097312, 100065760, 119936960,
-102216464, 98993088, 105182136, 109018616, 92835184, 81045496, 74702368, 69687992, 91281480, 71452152,
-53732188, 56017112, 42037528, 24381456, -14480482, -30367030, -39531416, -71105864, -60648696, -63018444,
--74770552, -79284024, -72722920, -47602732, -53134652, -48323752, -48862768, -25378962, -27830314, -33794952,
--22845468, -7496329, -8087961, -15794742, -9655623, 993748, -5212480, -7736310, -5793374, -299037,
--398895, -436476, 399432, 703838, 124554, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+7414188, 2582886, -1357747, 1876364, 2378875, 4445291, 7424925, -3573950, 2461553, -3045669,
+-2370822, 1486596, 9664, 614717, -5254893, -2555506, 1842541, 3695283, -501437, 3112778,
+-5634460, -4997732, 3134253, 2003602, 855772, 2280628, -1929514, 4025458, 4504347, 4374424,
+6274411, -3491272, -2888366, 218506, 789737, -6030671, -389231, -528818, 1646046, 586800,
+-3777961, -934692, 5122822, -2747169, 996969, -3150359, 1498407, 1579474, 1017907, -4690105,
+3772592, 339839, 843424, -651224, -1549410, -1948841, -3204583, 6790880, -1206886, -1258425,
+-1533303, 3012920, 695248, -6433324, 1624035, -2941516, -4420058, 2597382, -2735894, -6963753,
+2767033, 1015760, 295816, -6417218, -7785165, -3181497, -3841848, 3600256, -1054415, -15032,
+-1767916, -2107755, -1758789, 48318, 3176128, 574452, -1430224, -120796, -1494112, -664646,
+1403917, 424665, -1354525, -1825898, -639413, -751619, 691490, -461172, 255014, 252866,
+754841, 194347, 1085553, -461172, 249645, -255014, 762357, -49392, 699006, 4347044,
+517544, 375273, 3867618, -5771363, 966905, -4815732, -6096706, 1760400, 5720360, -3535295,
+2716030, -2660195, -1285269, 1154809, 288300, -2828773, -8406862, -8347269, 150861, -2111513,
+-75162, 4370666, 701153, 5350456, 7226820, -3805341, 6241125, 783295, 6335077, 403727,
+7517267, 960999, -4204773, -1152662, 424128, 3427921, -925565, -1125818, 747324, 2602213,
+-3122978, -185757, -963146, 2302639, 2801929, 158914, -2845416, -197569, -514322, 1648731,
+2942590, 5274220, -1837172, 3424163, -1539746, -4581120, -4092567, -2763812, 2596308, 2820183,
+-1547262, 4563403, 151934, 1660542, 239444, 5548024, 3677566, 4089883, 1661616, 2411087,
+1487669, 2237678, 4531728, -955093, -231391, 6403260, 1286880, 191126, 1333587, -2372433,
+358093, 1894081, -141734, -5972152, 1876901, 642635, -957241, -2068564, 1384590, 415538,
+3258807, -1195612, -590021, -1239635, -1010928, 830002, 238371, 1312113, 619012, 308701,
+-1174674, -926639, -548682, -572841, 514322, -1547799, 1371168, -552440, 406411, -369904,
+-553514, -856846, 529355, -689879, -523986, -1686312, 6424198, -6649683, -4496294, -3700114,
+-5393405, 1649268, 2261300, -4344360, 953483, 8794482, -6482180, 4439386, 7575249, 7494718,
+-4693863, -1313186, 3688840, 675921, 1112397, -3422552, 1809792, -11506217, 8958765, 14070313,
+2452426, 4715337, -2338610, -227633, 7446937, -3973382, -9095130, -1539746, 89657, -60130,
+-7356205, 509491, 1773285, -8720394, -4128001, 4001836, 1322850, -3120831, -849867, 2982318,
+-4283156, 8968965, 2762201, 388695, -5820218, -597000, 3058554, -1986422, 146566, -2087354,
+-161598, -884763, -4672388, 265214, -4520453, 6729140, -6569153, -4365298, -1507534, -7834557,
+5190468, -4225174, -10920491, -2021319, -4736275, 1307281, 4953171, -5101885, 586263, -3470871,
+3504157, 470836, -3638911, 3062312, -3939022, -5167383, 5687611, -3723200, 1592359, 119722,
+476205, 1984275, -1176284, -1769527, -1999307, -3154117, 1007170, -4449049, 209380, -915365,
+1349694, -1336272, -151934, -11811, 75699, -2369748, 2064269, 84289, 354872, -1284732,
+-933619, -966905, -108448, 1398549, -5071283, 3238942, -146566, -993211, 3844533, -3637837,
+-12781286, -2495913, -784368, 5587753, 7914551, 7010461, 3373697, -2750927, -858993, -7881802,
+-6679748, 2308008, 8993125, -2573222, 9212705, 5859946, -5679558, 3055869, -870268, 3195456,
+-6347962, -4284230, 1051730, 4588099, -576063, 2735357, 3826279, -7181722, -1436667, -3313567,
+-9774809, 6081674, 974958, 2208687, 4246112, 7756174, 2711735, 363998, 6091874, -1422708,
+-3104188, 6256694, -3286724, 10574209, 4882304, 4204236, 230318, -3042984, -3689377, 5182415,
+7056095, -5237713, 1284732, 6724845, -1182727, 2185065, 14873472, -4497368, -1777043, 2885681,
+-7437273, -304943, 1347546, -3325915, 3634079, -2410551, 2246805, 7372312, 273804, -1703491,
+-5006858, -418759, -6221797, 2632815, -2298881, -3071975, -1262184, 1178432, -1777580, -1804960,
+-1495722, 332323, 2315524, 1693828, 485868, -539018, -678068, -536334, -326954, -1043677,
+-1817845, -364535, -550293, 962073, 24159, 479426, -1837709, 777926, 1001264, -704912,
+-1606855, -615254, -1685775, -912144, -738734, 1249836, 159988, -281320, -107374, 283468,
+-2547453, -505732, 920734, -3192771, -18236432, -1417876, -321586, -3594351, -5611375, -1791538,
+9885404, -6892886, -10351408, 3980898, -4167192, 1559073, 1917166, 6660421, -4434554, -1285269,
+1358283, 6198712, -2806224, -3951370, -1144072, -3389266, 4576825, 8345122, 4223564, 147640,
+-623844, -4665945, -224412, 13088376, 2349884, -1541893, 15097884, -824634, 11243688, -3303904,
+149250, 7666517, 2363843, 1963874, 2768107, 1408749, 4234838, 2510409, -7083475, 13355738,
+8128226, 10981695, 7369627, 4893042, -7208029, 3293166, 3758633, 640487, -4397510, 12408161,
+7520488, 11218455, 2041720, -2137820, -2685965, 8284455, -3939559, -8383240, 10020159, 3201898,
+-5413270, -3088082, 554051, -2474438, 1034550, -1072131, 1466195, -3370476, -886911, -7926362,
+3136937, -899259, -147103, 3033858, -924492, -1411434, 4776004, -222801, 3724811, 4997195,
+4085588, 2682207, 2640331, 1127429, 1569811, 115427, -954020, -842887, 2217277, -512175,
+-1253594, -1280437, 1089311, -1455994, -335544, -212064, 2750390, 1216013, 1990717, -1704565,
+639413, -1347009, -437550, 1952063, -179315, -654983, -523449, -387621, -4587562, -609885,
+-11943767, -4680441, -13363791, -9135395, 1043140, -8655970, -6802692, 872415, -1475321, 9047349,
+-5923297, 10020696, 12272332, 1321239, -10329933, -7229504, 11027865, -5502927, -2951180, 6226092,
+-7985955, -14200772, 5770289, 12387223, -6285685, 3218541, -179315, 5444408, -14836965, 3042448,
+-5931350, 3672197, 350040, -6170258, 10429791, 4821101, 4433480, 13899588, 6492917, 2934000,
+7881802, 1647120, 2585570, 4024921, 1367410, 708670, 2186675, 1966558, 15791521, 8931921,
+12348, 13287018, 8320963, 9829033, 15291694, -7714298, -6462315, 13432510, -4610111, -435939,
+-7885560, -3278134, 4793721, 7164006, -5999533, -632971, 2054605, -1630477, 3720516, -6317360,
+-1161252, -7319161, 14416595, -4567161, 7889318, -2152316, -3804804, 10654203, 1888712, -3015604,
+3471944, -1226213, 333934, -2909304, 4031364, -670015, 1470489, 4366908, 2486249, 1365263,
+2442763, 273804, -357556, 1805497, 462783, -2841121, 656056, -525060, -1344862, 2743947,
+20401, 1388348, 1108102, -503585, 527207, -1626182, 376883, -1476395, 150861, -545461,
+1935420, 609349, 1664300, 544387, 4553739, -4858145, 1569274, 706522, 1555315, -6977711,
+9082245, 5277978, 12338367, 2397666, -1668595, -13914620, -7441568, -5209259, 3556770, -7222525,
+-12054363, -3346317, 3090766, 1354525, -13462038, 10940892, 841277, -803696, -11467563, -6581501,
+2705293, 1430761, -12741020, -3944928, 4656282, 534723, 1284732, 6550362, 7628399, 4478041,
+-1973538, 3868155, 1188632, -4547834, -9432285, 16273094, -4081293, -7888245, 153008, 4057670,
+5248987, 12176769, 1993939, -191663, -4569845, -105764, 6733435, -820339, 8413841, 16165183,
+1350767, -3464965, 483721, 13924284, 17365626, -8622147, 2418067, 2462627, 9385577, 5002027,
+1649268, 2928094, -6924561, 4350265, 4471598, 4515085, -2997887, 298500, 3402151, 5216775,
+-739271, 1822140, 1185948, -5829881, 2823941, 325344, -5309117, -3802120, 5607617, -2473901,
+3875671, -5587216, -4320200, -1870995, 1266479, -33823, 5055714, 2370822, 893890, 304943,
+2519535, 2397666, 719944, -4221953, 169651, -1737851, 667867, -1292785, -1063004, 10737,
+-450435, -544387, -1478543, -4129074, -1187559, 523986, -2850248, -1731946, -1816234, 147103,
+-1819456, -2885144, -718333, 1477469, 2254858, -4488241, 6431177, -5662915, -10304700, 7203197,
+-801011, -2478733, 2764348, 6138045, -17314624, 1108102, 13344463, -1503775, 23974508, 11478837,
+-7265474, -5323075, -2200097, -6871948, -3027415, 10726144, -4067334, -3463354, 10752451, 8732742,
+2915209, 5025112, 10053982, 6664179, 7536057, -5448166, -3706557, 9542344, -1818919, 8641474,
+104153, -10233833, -6555731, 2820183, 8170102, -11135240, 748935, -5927592, 3180960, -6780143,
+9548786, 9508521, -9192304, -946503, 2755759, -261993, -12447889, -5568425, 2200634, 8328479,
+13700409, 4675609, -10050223, -2193118, -2400887, -1149441, 8640937, 1400159, 6936909, -10302016,
+4702989, 741419, -8135205, 9744207, 4188667, -1276142, -2112587, 1711545, -301185, -8327405,
+6364605, -1901060, 3821984, -6465000, -11425150, -6339372, 2785823, 5160403, 191126, 2863670,
+10384694, 137976, -2568391, 6518150, -1938641, 6136972, 431644, 2013266, -5168457, 565862,
+210990, 2830920, 3154654, 4356708, 2825015, -1036698, -1190780, -1984812, 5208185, -2374580,
+2750927, 587337, 1691143, 2131915, 2953327, 1293859, -904628, 2615098, 1098975, 893353,
+-912144, 3508452, 1731946, 756451, -3374771, 1284732, -1276679, -11274, 2456721, 11126650,
+-13597866, -2118493, -4307316, 14050986, -6200322, 11586748, -3544422, 10820096, 14653355, -6418829,
+4660577, -3660923, 8371428, -3107409, 6979859, 5801964, 5473936, -1187022, 5754720, -2822331,
+-7185481, -3425773, 8143795, -9408663, 1554241, 19327, 7261716, 14640470, -13290776, 523449,
+13131863, -266288, 12011413, 1685775, 5310727, -1596117, -955630, 3279208, -18380850, 1868848,
+-383863, -7284265, 4937602, 3071439, 13441100, 6710350, -1270774, 25465398, 6391448, -13344463,
+3601867, 1333587, 8934606, -5724655, 1762547, 7545184, 649614, 4612795, -1277216, -14585172,
+-14925548, 71941, -5007932, 12079059, -20305532, 26220776, -97711, 14614700, 16728361, 4045859,
+-4361540, -3295314, -7776575, -10341744, -833761, 3379066, -2577517, 5271536, -3449396, -8324721,
+-5223754, -4195110, 1556926, -1280974, 973347, 5629629, 2870649, 2680060, 2105608, -2321967,
+-2829310, 183610, -560493, 1622424, 432718, 661962, 1815697, 3266323, 1989644, -6477348,
+1232119, -1217623, 4769561, 4768488, 2801929, -434329, -1335198, 1872606, 1534377, -2292439,
+-2374580, -598611, -1610076, 454730, -1723893, -3143379, 1294933, 5244155, -1311039, 2110977,
+-3983045, 516470, 2358474, 2401961, -79994, 1539209, 3419868, -24267638, -1764695, 8190503,
+1307281, -9148817, -22539988, -64425, 2518998, -3999688, -991064, -6678674, 3435974, -5570036,
+11534135, 4030290, -6951942, -8688719, -14832133, 11011222, -4764193, 699006, 14362908, 19758998,
+12035035, -1898912, 992137, -13648332, -5856188, -5523328, 3606699, -19340238, 4996658, 5209796,
+1063004, -9971303, 9479530, 14747844, -2425046, -316754, 1689533, -8649527, -9119826, 5170604,
+3544422, 11141145, -12345347, 13304735, -7070053, 7307350, -11429982, -9055939, -4538170, -350577,
+-1379221, 4818954, -2486249, -19988240, -14972793, -4265977, 505732, -20042464, 254477, 9823127,
+-5311801, -2370285, 3007551, 8342974, -17602386, 8922795, -3111704, -2707440, -103079, 7119982,
+8957154, -10627360, -5406290, -7167764, -3462281, -2632815, 5205501, 1663226, -6383395, -2930242,
+-4896800, 3319473, 11679090, 7629473, -68719, -412854, -6531572, 171799, -3991635, 5424007,
+-1003412, 9517111, 3202435, 3268470, -3446711, 119722, 114354, -7758859, 8195872, 528281,
+-1443109, 4185983, -1509144, -1385127, -384400, 540092, -6649683, 2835752, 4062502, 4204236,
+-684510, -1669132, 1468879, 2332704, -2371896, -1513439, 2371896, -5166846, 571231, -230318,
+4768488, -472446, 21748640, 530965, -4409321, 16915728, -3692061, -6875169, -1815161, -1552094,
+20980916, 23992224, -3116536, 5107790, 6120866, -3059627, -11382737, 5612449, 22313428, 17017734,
+14557255, -5277978, 6315213, 11981885, -15535434, -11574937, 13590887, -6925635, -7595650, -519691,
+16989280, -2553358, 15641197, 1029718, 14038101, -8392366, 19284404, 5865315, -5960341, -9826885,
+3536906, -13904420, 1689533, -16499654, -5609228, -5917391, 9467719, -9446781, 15586436, -19053012,
+-32944010, 20601884, 9243306, -4050154, 197569, 22723062, 10695005, 1805497, -5938329, 4908611,
+-2619393, 272194, -14739254, -14981383, 8844411, -5031018, 4900021, 28209346, -7351911, 6066105,
+-18388902, 21795886, -7266548, -9740986, -4634270, -3051574, 9134322, -18480170, 15480136, -18114024,
+13092134, -9329743, -12593918, 12593381, -511638, 4121021, -5084705, 7444252, -4054986, -5708549,
+-2513093, -8649527, 5986111, -294205, -5589900, -2404108, 2136746, 9200894, 1782411, 1299765,
+2496450, -248571, -1535451, 4660040, -2594697, 2094870, 1989644, -2415382, -639413, -558346,
+6655052, 5759015, -2090575, -3228742, -6883222, -159988, -1375463, -1027034, -1090385, 171799,
+6381248, 1869921, -726386, 7967701, -24724516, -18378702, -17820356, 24875376, 831613, 10676215,
+6359236, -21916144, -19164144, 12881681, -34190088, 9988483, 10149008, -2197950, -13606993, -12511240,
+21293910, -11455215, -1510218, -3583077, -11045045, 16199006, 5152887, 14656039, 8517994, 10111964,
+-3212636, 16456167, -1521492, -10762114, -12680354, -2917357, 7134478, -9607305, 12771085, 8204998,
+-9641128, -34610456, -2915209, -2842732, -864899, 25149718, 562104, -19698330, -11696270, -12044699,
+10318659, -7591355, -16413754, -18306762, -11398843, -8900783, -40820444, 980863, 5081483, 13410499,
+-21327734, 6983080, -17624398, -14408005, -4944044, 17065516, 4353486, 15840376, 29894046, 9004399,
+6852084, 19508816, -15215995, -1935420, -7233262, -8335995, 15613817, 14457934, 22942104, 11289322,
+-21032992, -13993540, 16494822, -24823300, -27368606, -8591545, 19917374, 3170223, -4888747, 13602698,
+11076184, -105227, 3148748, 11536282, -7559143, 6829535, -5575942, -1051730, -5810017, -1065689,
+1501628, 8085276, -5143224, -6470905, -34360, 4568235, 1438814, 4155381, -664646, -6468221,
+-1570347, -4279935, 317291, -3573950, -725313, -494458, -7313256, 5928129, 883153, 6033892,
+7546795, 10473278, -3948149, -5552319, -464930, 1023276, 12047383, -10572062, -22408992, 6523519,
+-35970, -154082, 1124208, 3447248, 5104569, 10237591, 3524021, 8659728, 4901095, 10207527,
+26016764, 1122597, -33260764, -12023761, 8772471, 588947, -6704444, -21300354, -13930190, 4790499,
+17740900, 7022809, -16443282, 9188546, 7350300, -18647138, -3310883, -23119808, 18595060, -9495099,
+-11937325, 17175038, -16159814, 4817880, 35544612, -3911642, 5987722, 10647761, 173946, 5367099,
+-20456930, 5255966, 3885872, 3569655, 46610596, 31621696, -3234647, -15963857, -10482405, 14789720,
+17134772, -18377628, -10139344, -24737402, 39808980, 11120744, 4802847, -6174016, -4101694, -8629126,
+-4675609, 28669980, -7406134, 7897371, 28649042, 4968204, -7813620, -20924544, 753767, 8624294,
+-42232952, 9405978, 4849555, 29189672, 20030116, 15635292, 26114474, 14807973, -4926328, 2709051,
+9242233, -2781528, 1473711, -1693291, 4323959, 2423972, 24415816, -568009, 10153303, -4140349,
+9816148, -685584, 13034152, 2833605, 3791919, 11783780, -731755, 4948339, 8089034, 306016,
+6584185, 9076877, 4181151, 7252589, 10683731, 6098317, -3675955, -673773, 2538863, 2648384,
+326418, -4115653, 2318746, 2815888, 1479079, 5634460, -536334, 8795019, 4981089, -3504693,
+9321153, -1173600, -5903970, -27122182, -3881040, 18710488, 10491531, -30383672, -40066676, 4626217,
+27205396, 11018202, 16627429, -9429601, 12842489, 2173790, 344671, -14522895, -5201743, -22626962,
+33643016, 11300596, -27312234, -18712636, 12226698, 1327145, 6738267, -8145406, 16779364, 9835475,
+11548630, 22054658, 19501300, 4056060, 19064822, -9999758, 10940892, -12348, 13298829, 6156836,
+-3208878, -7976291, 9171903, -11864847, 31368294, -8380555, -5954436, 6491843, 15493558, 15399605,
+-10416906, 27096412, 26763552, 15646029, 6451578, 2316061, -8653822, -20288888, -34875672, -5585068,
+12345347, -671626, 15113990, 16608639, 17663590, 6258304, 9814537, 57942332, -28506772, -12329240,
+5662915, 11277510, -1540283, -45061724, 10515691, -6915434, 6680285, 8121783, 19918448, 4132296,
+236223, -18035104, 18725520, -6615860, 2599529, 16634945, 7369627, -17464410, -3940633, -9747428,
+-3517578, -7444789, 1088237, 853625, 6935836, -1534914, 8488466, 8665097, 11052025, 62277,
+-285078, -6642704, -3267396, -8949101, -6372121, -2534031, 11726871, 4017942, -2113124, 1007170,
+-4924717, 1930051, 10231149, 11973832, -2609730, -10652056, -476741, 881005, 4796405, -2778844,
+3215857, -4933307, 7656316, -14973330, 1216013, -4430796, -5708549, 239444, 2662880, -9554692,
+4365835, -1613297, 4304631, -5071820, -8919573, 3413962, 15158013, 14920716, -8206072, -11167989,
+3339337, -10730976, -34408056, 35601520, -10368588, 10020159, 3314641, 29863444, 23816668, 14972793,
+-14216879, -2338073, 20437066, 10849087, 24050744, 64064268, -3943854, -25232932, -6558952, 19161996,
+-2836826, -29806536, 45585708, 23622320, -16041703, -24953760, -3055332, 5609228, -7910256, 18107582,
+15401753, 17767206, 34038688, 5705327, 9634149, 6089190, -13151190, -31654982, 18640158, -21538188,
+-16160888, 24999394, 13124883, 14104136, 7422777, 5155035, -1406602, -31259846, -27728846, 523449,
+16626892, -20664698, 19606526, -9164923, -23157390, 7316477, 20369956, -3755949, 3943854, 20207284,
+19937776, 20674362, 1551557, -12612171, 11810623, 49118856, 5951751, 19975892, 28087476, 1373853,
+-8867497, -24682104, -9953050, -38898980, -13311714, -9736154, -4771172, 8842801, 1539746, -1767916,
+-11152956, -7366406, -6466074, 9610526, -9976135, -1999844, -8798241, 2874944, -5578626, -9584756,
+408022, -13795435, -4836670, 235149, -12433393, -2356863, -10829760, -6270653, 1225676, -19921132,
+-1903744, 934155, -198642, 9411884, -12656732, -4177930, 13619341, 264677, -5334350, -590558,
+-4554813, 2618320, -5821828, -4418448, 6788196, -467078, 478889, 18168248, 14977088, 530428,
+-11720966, -17381196, -30827128, 5687074, 19188304, 26189636, -21982716, -23448374, 29105382, 13157632,
+-985158, -2782065, -11857331, 5667746, -5447629, -12385075, 13426605, 16336445, 11349451, 1226213,
+-2210835, -8908299, 2092723, 6946036, 4260608, -10084583, -36003636, 8209830, -8077760, -10705743,
+2152316, -4533338, 3172370, -35884452, 16937204, 13308493, -25798258, 18293340, 24246164, 20311438,
+-5272073, 3521336, -3084324, 13292387, -2833068, 64425, 64538328, -19200652, 5496485, -17127792,
+-9880572, 36504536, 13448079, 12557411, 23407034, -29477972, -24373940, 36703180, -23004918, 18799072,
+23230942, 2343442, 6303938, 8920647, 41626288, -13965623, -15699179, -37936908, -8011188, -16263431,
+13040594, -23692650, 40462352, 22069690, 24773372, 12258910, 21671868, 11416560, 38633232, 9599252,
+18668076, 14261439, -18762564, -8932458, -7162932, 3486440, 2347200, 18974092, 8378408, 105764,
+-726923, 4421132, 1915019, -7213398, -14256070, -7577933, -10662793, 13729937, -4631049, -7647190,
+4558034, -2894808, 16969416, 7878044, -2824478, 9543954, -10647761, 5302674, 8628589, -2949032,
+16443819, 16729971, 11279121, -7689065, 13913010, 8012799, -13382044, -2502355, 1581085, -8091182,
+1095217, 11978127, -13464722, -15654082, 7122667, 3232500, -1341640, -10349797, 26659398, -15407658,
+14107894, 45291504, 22506166, 17154100, -25273198, 7159174, 25241522, -21509734, 35723928, 12826383,
+19128710, 17126182, -10945187, 17740362, 15285789, 6456410, 35418448, 26855894, -1999307, -60508572,
+-7063611, 28168544, 27176406, 27933930, 6724845, 15611669, 1417339, 7882339, -1965484, -18705656,
+38816304, -964757, 36988260, 16689169, 26706644, -37244344, 25351582, 12659953, 11439109, -9725417,
+8845485, -6897181, 8447664, 37179920, 14865956, 48496088, 2462627, 10766409, 28381144, -5665062,
+44572096, 21983254, 3981972, -29416768, -18337362, 16276852, 1957968, -4864588, 1072131, -4982162,
+3595961, -21427054, 14460618, -22820772, -33939368, -12705587, -1792075, -11339251, -8659728, 28883118,
+-3325915, 26305600, -24898462, 28900298, 3999152, -31935230, 31765042, 26444114, -9774272, -4445291,
+7681549, 13892609, 9040369, -1325534, -14381161, 9156333, -6135361, -922344, 18384070, -3730716,
+-2865280, -14766634, -3813394, 4081830, 2988760, -995359, 13858786, 12152073, -9460739, 3283503,
+-92342, 503048, 12759811, 3854733, -13623636, 9259413, -11633993, 5964099, -9385040, -3825742,
+-2884608, -2165201, 1748052, 2634426, 1811939, 711891, -2598455, 2297271, -6484864, 4558571,
+5379447, -1146756, -5297306, 4006668, -1105417, 6811282, -3723737, -3313567, -9417253, -452045,
+-8351564, -27005144, -25817586, -10389526, -11183021, 20903606, -33804076, -42122356, -45798312, -55315956,
+24714316, 27135066, -1580011, -4461398, -172872, -13169443, 3205119, 6861211, -11662984, 37642168,
+35469452, 23162758, 25373594, -23382338, 15526307, 1262720, 18489834, -7307887, -9527311, -34564288,
+30903900, -31236224, -37811280, -9958955, -7943542, 40552008, -22297860, 5428839, -21048024, -5913096,
+39121784, 7230041, 12377022, 19343996, 35929012, 2183991, -4023848, -43921408, -8101919, -3546032,
+-1247688, 24023362, 12928925, 81713904, 4093641, -2552821, -27111444, -2205466, 32494648, 29781304,
+-2685428, -14391899, -40385576, 10066866, 25567404, -13118978, -29452202, -12499429, 25198574, -7713225,
+18496814, -58531816, -32745368, -46790984, -12661564, 18780282, 9974525, -20383914, -19457812, -22903986,
+9188546, 48209396, 14589467, -206695, -17107928, -1383516, -13327820, -3637837, 5698348, 5703180,
+-15346455, -6927782, -1379221, 10466835, -26081726, -17733384, -6099391, 12828530, -1794223, 16877074,
+5386426, 2005750, -5903433, -2893197, -11750494, -2466922, -17701708, -3914326, 19414862, 7006166,
+8831527, -13535589, -24476482, 12144020, 11470247, -7051800, -29528, -10052371, -1904281, 3102040,
+-1348083, 9204115, 5662915, 6041409, 11611444, 6512781, 9163850, 9984188, -2003065, 8033200,
+4246649, -6693707, -16349330, -8483097, 39759048, 1304060, 231928, 70380552, 6968585, -52121040,
+-40023728, 49353468, 43810276, 2788508, -34715684, -43120396, -24729884, 8619462, 42618960, 38004556,
+25460030, -15458124, 5045513, -15526307, 13952738, 32366874, 49885508, 54507428, -6759742, -28972776,
+-45889580, -68576672, -652298, 36761700, 148871088, -19289772, -7877507, -71757096, -29685204, 6231461,
+17242684, 88737248, 63971392, 39658116, -44936096, -25307558, -43903692, -2469069, 74257304, 68743096,
+83689584, -22934588, -82261512, -59792924, -83060376, 20948702, 76348952, 67188856, 123729416, -58929100,
+-71775880, -62857384, -10439992, 54813448, 72966128, 102040368, 46205260, -21308944, -39608188, 9501005,
+-2980171, 29111288, 81609744, -17832704, 50732692, -17988396, -46887084, 790811, 7368017, 44277356,
+2136746, -4001299, 4242354, -11458973, -40550932, 17042968, -5562520, 13944685, -11448772, -33298344,
+-8070244, -7772817, 3794067, 22296786, 3120831, -6304475, 8552354, -8002061, -10386305, -1848983,
+32360968, 8319889, 29717416, -2062658, 3407520, -8388071, 3884798, 3525095, 6016176, 23044648,
+39699456, -1065152, -10701448, -36237712, -47964584, 2005213, 2913599, 58187144, 37473588, 6404333,
+-20088098, -81723024, -46030240, -6939594, 37085432, 72536632, 37641632, -21808770, -26973468, -84726816,
+-31462246, 40558448, 74592848, 60280404, 3972845, -38293928, -43384000, -4215511, -1481227, 35291208,
+-6411313, -36407900, 47585552, -11111080, 56196964, -51873540, 529892, -22701586, -53886272, 39304856,
+-28339268, 36381056, -28980828, -11208254, -2694018, 18702436, 4080756, -20687246, -11118060, -953483,
+29036126, -27156542, 33321430, 23934778, -18354542, 4131222, -23017266, -23081692, 38814692, -38472708,
+-19502910, 25810606, 59354836, -475668, 7907572, -5504538, -26199838, -7330973, 24129126, -8460549,
+-39464844, 5519570, -8760123, -6693170, 11686606, -35873176, 17877802, -143345, 12189117, 27591944,
+-62658204, -46271292, -15521475, -1428614, 64121716, -34144992, 23107998, 50538880, -27960774, -16438450,
+-1958505, 27403502, 39758512, -21873194, 11345693, -8067023, 15615427, 62227632, -23324356, -70180304,
+14715095, 32116692, 8143795, -37512244, 23180476, 9806484, 23270670, -7355669, -1275068, -26203596,
+-21026550, 15413564, 3697430, -27924266, 7977365, 19286550, -9581535, -143345, -31199180, 4540854,
+-7930657, -34049428, -1408749, 15236933, 12986907, 5499706, -1147293, 8444979, -23506356, -5738613,
+8000987, -11272679, 17627620, -10873247, -4804458, -10278930, -229781, -10951093, 16841640, 3138011,
+-13793287, -11565810, -828392, -459562, 27940372, -9821516, 9715216, -5085778, -838056, 6196564,
+-12499965, -10752987, 1546725, -23837068, -6947110, 7046968, -20656646, 1009317, -4115653, -6983080,
+4023848, 13344463, -366683, 2011655, -7471633, -4850092, -72426568, -22986128, 31092342, 42567956,
+35347044, -36126580, 11518029, -100852808, -65582540, -55731496, -8877161, 47190416, 30370788, -2150168,
+-22175990, -27405650, 13359496, -16783122, -1716913, 36062692, 9830106, 1651952, -35752380, -17251810,
+-3644280, -16964584, 10921028, -3029026, 19378892, -5126581, -197032, -6396280, -1153199, -4664872,
+-20408074, -15497316, -34252900, -24235964, 17499844, 33480344, 36536212, 20279762, 31843962, -4886062,
+27099634, -6368900, -12379169, -42811696, -1620276, -23665806, 18343806, 6970732, 54135380, -43717400,
+15555298, 30292404, -16668768, -23250268, -13411572, -10860362, -11046656, 3885872, 38477000, 24656334,
+-10186052, -1476932, 27639188, -31959926, -35211752, 14529874, -40876276, -31563178, -27413702, 3389803,
+13370770, 15856482, 47595216, 32245540, -5062156, 23992224, -13738527, 927176, 6036577, 17769354,
+28936268, 31111670, 22038014, 18152680, 14748918, 1214402, -39808440, -11335492, -20498806, -5197984,
+23431194, -1044214, 3657702, -8730595, -17646946, 1945083, -8651675, -7292318, -19222126, 8511551,
+14670535, -6496675, 5748277, 12835510, 7236483, 8359080, 1628330, 8229158, -5557688, 5650030,
+-2531883, -10207527, 7938710, 9716290, -7833484, -11739219, 1205275, -7941395, -13472776, 10509785,
+11528229, 4399121, 14805826, -1346472, -13288629, 22968412, -9435506, -86497960, -127776888, -156829664,
+-123946312, -184840896, -32807108, -67602248, 20294258, 38631620, 133545032, 77936480, 138346800, 140676816,
+192649680, 140579104, 142914496, 105228848, 4383551, -30681098, -55955908, -34471408, -115299472, -78845936,
+-62824636, -64205468, -63529008, -63410360, -61546880, -66406636, -72856064, -54349588, -84688704, -69283728,
+-60394220, -27199492, -71184784, -22092774, 25999048, -52927420, -25636660, 14063334, 11456825, -44828184,
+37118716, 47732120, 60490320, 82091320, 83453360, -6693707, 49570364, 80692768, 114590264, 90278064,
+180574384, 169572832, 149770880, 121324240, 153663200, 76215272, 122317448, 148902224, 114664352, 73267848,
+124370440, 40256728, 41703060, 76340896, 76609872, 54346368, 15683073, 44399224, -14942728, 2514703,
+38873212, -44534516, -111682032, -166882560, -66003448, -228427296, -199794896, -175768320, -203199200, -226096736,
+-189498784, -164084400, -158253440, -109153376, -143444384, -73741368, -91112360, -96892848, -146812176, -118706992,
+-85592792, -70172248, -59370944, -55713780, -34911640, 13703630, -222265, -3491809, 41261212, 86177448,
+71929968, 72772856, 116196584, 99258304, 103241888, 131006704, 123636536, 105097312, 100065760, 119936960,
+102216464, 98993088, 105182136, 109018616, 92835184, 81045496, 74702368, 69687992, 91281480, 71452152,
+53732188, 56017112, 42037528, 24381456, -14480482, -30367030, -39531416, -71105864, -60648696, -63018444,
+-74770552, -79284024, -72722920, -47602732, -53134652, -48323752, -48862768, -25378962, -27830314, -33794952,
+-22845468, -7496329, -8087961, -15794742, -9655623, 993748, -5212480, -7736310, -5793374, -299037,
+-398895, -436476, 399432, 703838, 124554, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
};
-const Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][2819] ={
+const Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819] ={
{
{
5241471,
-2590939, -3527242, 5304822, -3109020, -1074816, 81068, -1825361, -2042794, -4123706, 986769,
-6240588, 641024, 1112933, 2654827, 637266, -2216203, -696322, -1316944, -1335735, 3787624,
-1032940, 498216, -1298154, 700080, -164283, -1438277, -2364916, 3671123, 2816425, 525060,
--788663, 4257387, -5930813, -2205466, 2515240, -2453500, 5091684, 522912, 3591667, 463856,
-409096, 2330557, -2049236, -849867, -77309, -56908, -1600949, -1274532, 2243047, -112206,
--5470178, 5125507, -727460, 872415, -4621922, 2193118, -2050310, 1816771, 132607, -158914,
--1740536, -178241, -2675765, 2754685, -5195837, -586800, 3788161, -3008088, 1408749, 5661304,
-1717450, 567473, -2823404, 298500, 1505386, -1069447, 1887638, -1191853, -825171, -1598802,
-1708323, -1864553, -2979097, 943282, 494995, -749472, 3644280, -928250, -790811, -893890,
-1209570, 1323924, -95563, 141734, 658741, -734439, 652835, -1412507, -580894, -237834,
--294205, -765578, -26307, -51003, -156229, -453656, -33286, -768799, 404264, -391916,
-878858, -584116, 654983, 883153, 10931766, 2019708, -1530082, 3341485, -1651415, -1366873,
--1750199, -711354, -4104378, 5811091, 3357054, 2508798, 2700998, 2569464, -2692945, -3628711,
-4891431, -1051193, -3795141, -7225209, 1183264, -2138894, 2267743, 45634, -613107, -1617055,
-2274185, -2676838, -1352915, 3571265, 6783901, 1767379, 3086471, 588411, 3411815, -706522,
-3629784, 2290291, 410169, 2030446, 180389, 596464, 186831, 4958540, 1050120, 1304596,
--1120450, 734439, -351650, -693637, 4023311, 4605816, -1656247, -1695438, 928250, 4238596,
--6899328, -361851, -1874216, -5106716, -2078764, 710280, -2177549, 2269890, 1838783, 151934,
--3114388, 1449015, -664109, -2978560, 3820374, -5273683, -2493766, -5624797, -2784750, -799401,
-836445, 5674189, -2454037, -1479616, 1753420, -896038, -1350767, 2687039, -446140, -111669,
--1228898, -1903744, -2361158, -630823, 2003602, 797253, 973347, 929324, 710280, 70330,
--336618, -147103, 158914, 1414118, 687732, 744103, -485868, 115427, 484794, 399969,
--1074, 90194, 3221, -108985, -196495, -991064, -761820, -515396, 545998, 457414,
--223338, 3299072, 1460826, -6663105, -619549, 981400, 4744328, -1432909, -8250096, 6648610,
--7794829, 408559, -3396246, -2710124, -8265665, -5507759, -3214783, -2093797, 3424163, 1148904,
--5435281, 766652, -2898566, 36507, -173946, 2240362, 477815, -2386391, 408559, 577136,
-1358820, -1688996, -1143535, -510564, -2677375, -4103305, 5568425, 2565706, 773631, -772020,
-4747550, 4078608, -4640176, 1297080, 467615, -898185, -2694018, 606664, -4794257, 1072668,
--893353, -3945464, 4882304, 70867, -354335, 6070937, -5261872, 4772246, 1790465, -724239,
--3892851, 1124208, -542777, -4153234, -3426310, 16106, -1487669, -1874216, -5697274, 248571,
-1243930, 2664490, -1637993, 2476586, 781147, -1030255, -775242, -3399467, 2943663, 578210,
-450435, -5636608, 2967823, -514322, 421981, -2923799, 112743, -5181341, 649614, 1079647,
-718333, -471910, 530965, -128312, 61740, -927176, 306553, -297427, 1160178, 618475,
-497142, 1017370, 41876, 326418, 1080184, 600222, -702227, -330176, 1699733, -625455,
-359704, -609885, 653372, -1954747, -448824, -622770, 817118, -383326, -12273406, -11628624,
-4508642, 7691213, 4661650, -10475425, 7460895, -2536715, -950262, 656056, -4846871, -3686156,
-8801999, -126702, -10737, 664646, -205622, 2868501, -4372277, 2653753, -2314451, 2378338,
-4031901, -2673617, -719944, 2330020, -667331, 4196183, -1304596, 1821603, 368293, -431107,
-354872, -3582540, -4975183, 4697084, 617402, -908386, 42950, -4669703, -5806259, -164819,
-113817, 3022583, -5397700, -4605816, -980863, -9597641, 3726421, -759136, 1958505, -740345,
--2309082, 1464584, 12293807, 6820408, 3568581, -3687230, 4845797, -58519, -6313065, 15032,
--6589554, 5596880, 772020, 658204, -3754338, 31675, 3832185, 1399623, 766115, 476205,
-428423, 4111894, 2870112, 523986, 2796024, 1657321, 2232846, 6019934, 2500745, 2958696,
--2793876, 2258079, 1687385, -727997, 4748623, 1434519, -14496, -434865, 1417339, 2517925,
-308164, -40265, -938987, 598611, 2083059, 1141388, -476205, 195421, -1713692, 481036,
-429497, -774705, 164819, -118112, -34360, 1154809, -227096, 1205275, 1671279, 590558,
--984621, -1903744, 308701, -1205275, 909459, 808528, -1203128, 477815, -17632988, -1342177,
--4241817, -616865, -2947421, -10002979, -426276, -2690797, -4124242, -9377524, -1156957, 6657736,
--4653597, 4379256, -776315, 6174553, -2093260, 5016522, -1654636, -4968741, -1334124, 533113,
--2180233, -4467840, -3590593, -4392141, 140660, -4007741, 1459215, 471910, 399432, 1894618,
--3015604, -4037806, 5822902, -532576, 1725503, 59056, -4574677, -2902324, -3230352, 155693,
--2319819, 4059281, 4125853, 680215, -5603859, -1837709, 10302016, 2561948, -4361003, -3469260,
--2209224, -3821447, -2021319, 8048232, 4896263, -5846524, 3573413, 4746476, 7007776, -1810866,
-2847027, -432718, 59593, -2840584, -5839545, -1058710, 4304094, 440771, 8338679, 5916318,
-393526, 1934883, 7033009, -5605469, -2570001, -1655173, -3453154, 2477659, 1088237, 1135482,
--3026878, 2052994, -2199560, 2275796, -4303021, -202400, -398895, -1689533, -105764, -370441,
-2112587, 576599, 473520, -1845225, -1247688, -595927, -1737851, -75162, -2506650, -1459752,
-101469, -195958, 1561758, -1066763, 427349, -516470, 849867, 613107, 2160906, -1786706,
-22600654, 15170361, -4670777, -851477, 58519, -615254, -2582349, 3156801, 7739531, 6532109,
-3394635, -11855720, -5266167, 1524713, 691490, 5038534, -8921721, 1804423, 12104292, 8145406,
--1386201, 2902324, -1059783, -4085588, -5575942, 311385, -4750771, -2774012, 1395328, 3757560,
--3481071, -6489696, -3081102, 1115618, 5963025, 8322036, -1581085, -8801462, -1859184, -3147674,
--8827768, -533113, -264141, -4239670, 1463510, 2377801, 5164162, -7408819, 3029026, 3818226,
-835908, -7165079, -5318244, 2437931, 316217, 1857037, -778463, -703838, -245887, -3973919,
-1959579, 2070174, -2770791, 4968204, 5883569, 8038568, 1932735, 598074, 7579007, 12347494,
-1974611, 1685775, 2107218, 7259032, 824634, 4293357, 12196633, 3613678, 2248416, 331786,
--2302103, -10427644, 1395328, -285078, -1692217, -2001455, 1282585, -1453846, 2576444, 1137630,
--1378685, -768262, -352724, 2093260, 1338419, -590558, -405874, 1421097, 3097745, 12885,
--777389, 1071058, 118112, -1458678, -2881923, 2079838, -2713883, 1642288, 1145683, 2000381,
--136365, -349503, 41339, 643171, -3785477, 94489, 551366, -374736, 11893838, 263067,
-2478733, 2893197, 5735929, -2236067, 3652870, -3090229, -1971390, -9797894, 3910568, 6696928,
--6062347, 5083631, -2508798, -8584029, 8943196, 5311801, -1592896, 5370857, 10473278, 7349226,
--5401995, -3004330, 5279589, 1683627, -1192390, 4080756, 3730716, 5455682, 344671, -2365990,
--4670240, -8278013, -272194, -6868190, 847719, -2225867, 3846143, -5458367, -12592307, 2787434,
--3123515, 5829881, 1465121, 474057, -3485366, -7400229, -6225018, -569083, -637266, -5575405,
-7878044, 10212358, 10581189, 4297652, -7577396, -646393, 10025527, 985695, -1729261, 4689031,
--1312113, -2506114, -9518184, 5264556, 2757369, 13815299, 6376416, -9350681, 3146601, 3543885,
--992674, -151398, 3347927, -2259690, 767725, -3995930, -9870909, 8942659, 1632088, 5339181,
-2576444, -4631586, 7552700, -1654636, 1800128, 429497, -1670205, 310848, 231391, 623307,
-3951907, 1331440, 754841, 363998, -1349694, -1565516, -2063732, -1196685, 1363115, -630286,
--103079, -763967, 1249299, -1131724, -603980, 144955, -150324, 555661, -2175938, 2556043,
--1064078, 2252710, 736050, -1136556, -1435056, 3169686, -2870112, 2550674, -695248, -3663607,
--6111202, -1648731, -1560147, -10549513, 529355, 1295470, 5281736, -1994476, -4544613, 1894081,
-578210, 2497524, 85362, 5732708, 2305324, 3959960, 679679, -441308, 3411278, 1995012,
--10383083, -3208878, -14845018, 674310, -2762738, 1717450, 2639794, 200790, 7105487, 1808181,
-10142565, 1247688, -12039330, 247497, -4838281, -1991254, -562104, -1804960, -608812, -9549860,
-2090039, -4596152, 11518565, -11942693, 6640557, -2592550, -10192494, -1905892, -7162932, -1540820,
--2172180, -10853382, 3129421, 3330210, -1975148, -1792075, -679142, 3847217, -8610336, 224412,
-8102456, 1500017, 11266236, 18379238, 7606924, -16633871, -22192096, 10779294, 4842039, 16593606,
--3419331, 7966628, 1717987, 7912404, 11086384, 14262513, -7559680, 4119948, 10625212, -8676371,
-1635846, -1107028, -1072131, 807991, 7593502, -1144609, 2608119, -4896263, 1796907, -3772592,
--3970161, -1751273, -3312494, 561030, -1944010, -5591511, -185220, 3729105, 2335389, -1029718,
--1014686, -820339, 104690, 1743220, 1842541, -1434519, -2160906, -953483, 3245922, -773631,
-3146064, 509491, 485331, -776315, 783832, 940598, 291521, 879931, 180926, -2633352,
--2551748, -1660005, 858993, 2695629, -3740380, -2490007, -1157494, 1584843, -1739999, -20310900,
-15164993, 2818036, -2702608, -270046, -9225590, -7517267, 7904888, -2098629, -2604361, 8250096,
--6133214, -6544994, 344671, 8207146, 3456912, -2598992, 221728, -4636417, -651224, 686658,
-4361003, 238908, -10411538, -10283225, 2302639, -1335735, 2469069, -984084, 4130685, 8078297,
-14947560, -183073, 9263708, -2232309, 2598992, 6456410, -6253473, 12277701, -1783485, -7539278,
--10759430, -1992328, -8932458, -11169599, -3138011, 5236102, -3503083, -8660802, 4324495, 6281390,
-9684078, 12618077, -10271951, 3970161, -2887292, -9347996, 3498251, -10455561, -1969243, -17114908,
-6833830, -5053566, 2516314, -3019362, 2681133, -18402324, -18449568, -11100343, -4350802, 10306848,
--9936944, 19492710, -6866579, 2020245, -1825898, 3711389, -1788317, -13635447, 1974074, 1702955,
-3735011, 3290482, 1597728, 5425081, -3063386, -4604205, 8590, 326418, -4596152, 2198487,
--5912023, 3459059, 1972464, 2828773, -876173, 132607, -1811403, -4432943, -3323231, -1741609,
--2066416, 3166465, -2050310, -5375152, 1900523, 2498060, -1021129, 3883724, -319975, -955630,
--26307, 1035624, -1610613, -1415192, 1985349, 2872260, 2027761, 1082869, -4014184, -2698850,
--870805, -3007551, 1180579, 479963, -37581, -2675228, 17060146, 1104880, 6374805, 4625143,
-1704028, 10109816, 1275605, -13904957, 6644315, 2114198, 6338835, -532039, -10480794, 14948097,
-7918846, 6200859, -1513976, -4399121, 1799591, -979789, -8341900, 5433671, 3606162, -4475356,
-5849746, 9549323, 132607, 3659849, 9283035, -10134512, 2334315, -3345780, 4095251, -19153944,
-5754720, 9371082, -3365107, 2571075, 9155797, 5069135, 14496, 3172370, -9777493, 2586107,
--5813238, 536871, 2652679, 1631551, -4545686, 18552112, -3464965, -3392487, -4464619, -15987479,
--6691022, -9754944, -11591043, -2094870, 15691663, 17512730, -1887101, 5484137, 6787659, -14432701,
--4882841, 11922829, 9571335, -5667210, -4268661, -14212047, -4850629, -5309117, -7103339, -7968775,
-1951526, -14500346, 2200634, 13828184, 18960134, 6012418, -5850819, -281320, 9955197, -3444564,
--7132867, 786516, -1104880, -2927020, -4862977, 801011, -699543, 2388002, 2812130, 1879585,
--1881733, 1003949, 1391569, 1386201, -500901, -2680597, -6362994, 1869385, -616865, -2381023,
-4410932, 1580011, 2367064, -2484102, 3705483, -2669859, -2389613, -3020436, 2881386, 750009,
-2059437, 4741644, -655519, -2250563, -1542430, 2443837, 774705, -70867, -144955, 770410,
-392453, -134755, -1206349, 2483028, 2870112, 3998078, -1569811, -5404143, 3377455, 912681,
--7196218, -10644003, -11464341, -4558571, -11208254, -4636954, -4545686, 204548, -10661183, 2415382,
-4490925, 528818, -12167642, 3821447, -15094663, 4705674, 8438537, 281857, 13112535, 442382,
--3885335, -2343979, 8851391, -3128347, 12179454, 4384625, -4188667, -4110284, 2164664, -6138582,
--3324305, 525597, 11528766, -314069, 6109054, 3533684, 1075889, 8150774, -3584687, -7315940,
-3317862, -5213017, -2420214, -14366666, 8184060, -4987531, -4230006, -2835752, -15892453, 19161996,
-4992363, -2173254, 8352638, 2818036, 4093104, -8337606, -12636868, -14332843, -6915971, 861678,
--14530411, 5553393, 10633265, -16250009, -5913096, 6118181, -7469485, 4068408, 18249316, 701690,
--2879776, -4712116, 4174171, -9763534, 6536940, 3617973, -8853001, 3054796, 6410776, -3471944,
--10493679, -8901857, -4655745, -202937, 2966212, 2603824, 2052994, -1700270, -2567317, -1170916,
-2409477, 270583, -1416266, -5825587, -7042136, -1799054, 568009, -4936528, -6020471, -4061965,
--2484102, -2174327, -5270462, -4457103, -2403571, -3168075, -6749004, 1350767, 6494528, -484258,
--519691, -2405182, -1857573, 2305861, -2324651, 659278, -5300527, 373125, -1476932, -2717641,
-74088, -2535105, 1764695, 2695092, -2176475, 3984119, -2566780, -848256, -2655364, -15032,
-521839, 11679090, 28790240, 30438970, 9095130, 18931678, -12979928, -12918188, -3114925, -1808718,
-1015223, 4394826, 9601936, 17538498, 5632313, 16244103, 1703491, 5008469, 2317672, -4318590,
-7272990, -53687, 2847027, 1388885, -8297877, -874026, -4493610, -8750459, -5634460, 290984,
-795106, -11649025, -4955856, 15022722, 10617696, 7885560, 12495134, -7645042, -15032, -21456582,
-906238, 18720152, -3722126, -3529926, 2129230, -1823751, 14422500, -983548, -2525441, 11370926,
--13466333, -21478058, -8833137, 2113124, -11749957, 8790187, 11943767, -16869558, -6565395, 328565,
--427349, -24283208, -15694884, 8036421, 3273839, -1635309, 7766912, -10481331, -6665789, -14911590,
-3481608, 5062693, 1141388, 1257889, -10156524, -16451335, 13669807, -22442814, 6504728, -8081518,
-21521008, 2478196, 8903467, -5938329, -8665633, 6517613, 2803003, 9943386, -9356586, -1421634,
-6453725, -182536, -5238250, -4517232, -5152350, 743566, 4931696, 5827197, -6349573, -2323577,
--1138166, -8012262, -3070365, 1787243, -1034013, 1009854, -4467840, -6987375, -1161252, 479426,
-5574868, 2065342, -3654480, 4706211, 627065, 2548526, -8147553, 1953136, -4916664, 4122095,
-581431, 4350265, 6321118, 2319819, -4651987, -8703751, 2704756, 3367254, -28179818, -20266340,
-14038101, -2923262, 25526064, -6219650, 21014738, -16902844, 508954, 7558606, -1674500, 914291,
-2468533, -1309428, -12687870, 4458713, 4773856, 5561446, 6323266, -3895535, 10429254, -9469866,
--6998113, -5410585, 14669461, -8090645, -2728915, 1321776, -306016, -7610145, 6541235, -8492224,
--10116259, -19063212, 1739999, 3500935, -12950937, -6037114, 6238440, -2616172, 3333968, 1040993,
-15060303, 1053341, 11334956, 5060009, 488016, 9088151, 2063732, 3151432, -17082158, 17598092,
-6231461, 13789529, -8376797, 3665218, -9168145, 14305462, 10849624, 17452062, 2782065, -4562866,
--12680891, -782221, 2236604, -10786810, 15333033, 2480344, 2384781, 16519518, 3694746, -4939213,
--6592775, -527744, 9815611, 11857868, -3852586, 14785962, -17678622, -18510236, -8105677, 4319127,
--5646809, 8091719, -2014340, 4351876, 14154065, -614180, 7025493, -5876589, -5389647, 6207302,
--545461, 9946071, -3068754, -44023, -3048353, -6110128, 1242319, -3585761, -1436130, 4114042,
-1389422, -5549098, -5109401, 3007551, 7512972, 7826504, -790811, 6417218, 6930467, -9691594,
-4532264, 9226663, 7226283, 4112968, -7265474, -8760660, -9178882, -9208410, -9184788, 808528,
--3209414, -1245004, 1034550, -6718940, 4796405, 4399121, -3484829, 5228049, 1837172, 2499134,
--6438693, 12986907, -30627948, -1392106, 15961172, -10194105, -3400540, 11767674, -12746926, -25892748,
-5160403, 4414690, 4027069, -3362960, -15305116, 3886409, 4372277, 1177895, 8527121, -27428198,
-12621835, -6350109, 6583111, -15613817, 12757663, -19762756, -12610024, 7720204, -5151814, -2266669,
--15010911, 11864310, 15604153, 1611, 1778653, -7114077, 23392002, 5839545, 6416145, -4186519,
--20146080, -4286378, 11215233, -1970853, 16758962, 206158, -5986111, 4099010, -1097364, 10546829,
--19912542, -2336462, -15251429, 16658568, -6091338, 5643587, -378494, -500901, -18024368, -6267968,
-16007880, 5182952, 1523103, -4691715, 573915, 2140504, -23107998, -23926190, 25708600, -11245835,
--27679990, 11433203, 13256953, -22252226, -29153164, -20301774, -19493782, 3622268, 7918846, -2310156,
--18724446, -466541, -9957345, -4601521, -13530758, -608812, 1520955, 1534377, -2579665, 13111461,
--6876243, 5261335, -5810017, -121333, 3712999, -3117610, -336618, -7471096, 10285373, -2170032,
-3728569, -5416491, -7999377, -1494649, 4155381, 4749160, 1620813, -7759396, 4930086, -920734,
--6197638, 6491306, -9482751, -1697586, -5776731, 9974525, -4048544, -10541997, 4938139, -4020626,
--4406637, -14074608, -498753, 3483219, 12288438, 5194763, -6823630, -3355443, 1473174, -1637456,
--3486440, 2510945, -249108, -2444373, -2380486, -635118, 12252468, -17054242, -9112847, -17820356,
--1372242, 3329674, -23332946, 3503083, -11282879, 32523640, 1976759, -29795262, -6533182, 14025216,
-9002251, 6691022, 15119895, 14651744, -21047488, -5731097, -7987029, 19674708, -6767258, 23018878,
-223875, -13775571, -10473815, -21155936, -23645942, 1105417, 3041374, -4227859, -12057047, -5569499,
-1873680, 3460670, 8470749, -12024298, 6206765, -14084808, -15899969, 2819646, -3177202, -4649839,
--16589311, -16339666, -7421167, -5287642, 23190140, 1768453, 7982197, 12520367, -109522, 28449864,
-11964705, -9959492, 1779190, 14468671, -5499706, 18412524, -4638565, 1985886, 1599339, -25863756,
--25785374, 3478387, 18543522, 10201, -5379984, -28896004, 2142652, 9356586, 6429566, -10172630,
--7658464, -6059125, 3795141, -12707734, 30592516, 16687022, 18879602, 3293166, -21068962, 7381975,
-10064719, 29761440, 7264401, 2687039, 12420509, 4777078, -4611185, -121333, 9589051, -1258425,
-1573032, 2604898, -7344931, -5765457, 9332427, -142271, -6980933, 9097814, -5581847, -2583423,
--4205310, -4779225, 8749385, -5850819, -2135673, 4074313, -8792872, 3424700, -526134, -5599564,
-11432129, -4415227, 300111, -14602352, 8973260, -4738423, -3404835, -9557376, -12712566, 1660005,
--4952634, 8757438, -6442, 5034776, 3788161, -190589, -5130876, -245887, -14172855, -12931610,
-27304180, -8470749, -10105521, -1454920, -7519414, -18606872, 404264, 12843563, -31894964, -569620,
-8284455, 10157598, -10873247, 7203197, -18260054, 1372779, -4708895, 5680631, -16354699, 10146323,
--27851790, 4525285, 768799, 15737297, 14846628, 7341710, -10401874, 11549167, -3391414, 12904229,
--14104136, 2176475, 16517370, 13036836, -7755101, 2632815, 414464, -3721052, 8011725, -3178276,
--9618579, -10783052, 7638063, -19429896, 12787728, 2916820, -20767778, 19488950, 18720688, 17542258,
-6351720, -9236327, 22656490, 2640331, 9730785, -14003741, -12085501, -13430900, 4132296, 5077188,
-8110509, -18810884, 1805497, 13661217, -35938676, 1240709, -11812771, 22405234, 14506252, 11191074,
--3195993, 14805826, -14107357, -867047, -9830106, -21735218, -928787, -20030116, -16667157, 9600863,
-26521960, -25094958, -5945846, -4708895, 26623428, -6744173, 11628624, -7800735, -4707821, -1186485,
-9396315, -5742908, -2359011, 594853, 6387690, 4551592, 3339874, -3736622, 934692, 2593624,
-13159243, -10640781, 10972031, -2597382, 8012262, -188979, 2093260, 2597382, 5021891, -7125888,
--1619740, -1560147, -8644695, -7901666, -7679939, 5054640, 4187056, -1803886, -3486977, -4668093,
--6078990, -3973919, 427886, -2928631, -140660, 7689065, -266825, -14817637, 6746320, -8787503,
--1385664, 23739894, 5152350, 12020540, -34206192, 15855946, -19119584, 25897042, -2547989, 10069014,
-19678466, -21219822, 37845640, 27086748, 20503638, -9324374, 5580237, 25873420, -6427419, -8377871,
--5965710, -1417876, -19495394, 5128191, -10331544, -23809688, 23084376, 7543037, 6412923, 2813741,
-5426155, 8831527, 24299314, 5011153, -14992120, -1367410, -15560130, 3018825, 2368675, -27627378,
--1064078, 14911590, 1202591, -2059437, -8295730, 29190208, 6147172, 12378096, 6561637, -15901043,
--11179263, -8734353, 18312130, 10645613, -3526168, 10943040, -1505386, -20042464, 19469624, 2253784,
-22301080, 2350958, 2404645, 335544, -29317446, 3907347, 906238, 3150896, 18430778, -7347079,
-28933584, -43888124, -7647190, 32536524, -13093745, 10686416, -14776835, -23419382, -18641232, 13405667,
--12699145, 12489228, -20035486, -4438849, 3532074, -5089536, -7792145, -2676302, -2234994, 8673150,
-20421496, 2013803, 12178380, -4065187, -1876364, 14659797, -2003602, -4358855, 4246112, -7532299,
-6731288, 12742631, -8448738, -1458678, -3194382, 2216203, 2583423, 5968394, 23075786, -4306242,
-8242042, 265214, 5681705, 8176544, 4360466, 1136019, 12937515, 13637595, -3658775, -2093797,
-5893232, 2835752, 5132486, -17904108, -1262720, 16694538, -3563212, 3337190, 6835441, -1105954,
-17394080, 6135361, -35447440, -42407972, -3748970, -19875498, 2690260, 12077985, -16974248, 4957466,
--25926034, 11282342, -14280766, -70875552, -4566087, 43247636, -18641768, -8007967, 43447352, -10188199,
-2341294, 52064132, -12458090, 11520713, 4866735, -7591355, 41918344, -33741800, -4359392, -908386,
--5939940, -6777996, -6911676, -822486, 13652627, -7665980, -22874458, 278636, 456877, 6781217,
-8339216, 1537061, 18824842, -695248, 8662949, -5111548, -22695144, 15849503, -2786360, -23335094,
-897111, 13510893, 41291280, 20922934, 34712464, 767725, 8548059, 16608639, 3917010, -1984812,
-32451700, -1667521, -12639552, 38031400, 6641093, 6760279, 278099, -5311801, 21709986, 41876,
--12617540, -14201309, -2943126, -2768643, 32870996, -22238804, 2888366, 4285304, -5832029, 38649336,
-333934, -24629490, 4156992, 12671227, -18121004, -807454, 18494130, 15312632, -9309342, 1532767,
--10521596, 8973797, -2820720, 1294396, -10351945, 9722195, 148176, -977105, -15052250, 6322729,
-5179194, -9743670, 804770, 3658775, -5046587, -3257733, 11686606, 1917166, 6536940, -4179003,
-3461207, 20290500, -18276696, -8244727, -5958194, 21939230, 8193724, 11672110, -13123273, -11924977,
--4831838, -1321239, -15921444, -17828946, 21622476, 8844948, -12550431, -11633993, -7108708, 26844,
--12435004, -10832444, 284542, 3496104, 8302172, -1934346, -3868692, 2123325, 24089934, 19452444,
--39756364, -19417010, 30521648, -5610301, -29804388, -261456, 588411, 10797548, 32273994, 28739236,
--17724794, 5326833, -4051765, 261993, -340376, -18596672, 27983860, -8315057, -18421114, 6544994,
--13239774, 15928960, 1342714, 22649510, -7032472, -21480742, -19473918, 17160542, -8317741, 22339736,
--6058588, 14470819, -14753213, -11420318, -7050726, 1599875, -18504866, 4520453, 907849, 300111,
-17955648, -211527, 5951751, -12525198, 8864276, -19765976, 21082920, -19015968, 12501576, 6385543,
-17709760, -29759828, 941672, 2498060, -9068287, -21505974, -36495948, -6103149, -31155156, -11959873,
--24948392, -11596412, -45532024, -14136348, 20544440, 26107496, 14136885, 15194521, -2537789, 16508781,
--32465658, -7414724, 4942434, 20907900, 5688148, -44551160, -1841467, -19590956, -13120051, 52068964,
-34918084, -24701968, -10136123, -17348984, 5719286, -45913200, 2734821, 9570261, -13208098, -13629005,
-8262980, 2673617, 355945, -8822400, -7825431, -7556995, -7739531, 14320495, 13058311, -945967,
--3769908, -14136885, -16304233, -3452617, -4150549, 5454609, 13925895, -27370216, -2163590, 13684303,
--146566, 17513802, -6207302, -16791712, 8973260, 18930606, 9480067, -11389180, 1299765, 17517560,
--22414898, -15911780, 29501056, 1613297, -1116692, -3028489, 4589173, 6802692, 8886824, -3745212,
--7315940, -52413632, 15336791, 8163122, -27528056, 10817412, 10282152, -20067698, -15323370, 23471460,
-2965138, 12473122, -6284611, 15493558, -4908074, -2519535, 12295954, 5863167, 4063039, 277562,
--8230231, -14282377, -8621073, 22187264, -7797513, -19361712, 32852742, 20205674, 2645700, 14904073,
-4494684, -17015050, -50046568, 20451560, -1615445, -27144194, 22789096, -2476049, -36458368, -30790620,
--15903727, 23899882, 9690520, 24774446, 31384936, 9280351, -25234544, 7934952, 9179419, -32303522,
--5122822, 18088254, -9977746, -35193500, -26555782, -42884712, -27203250, -6262063, 27149562, 39094940,
-18972482, -2662343, 27074400, -6802692, -66017944, -52503292, 11630771, -26484916, -31224412, 44863080,
-6064494, -60498372, -46582680, 15899969, 2934537, 10291279, 22623740, 54077932, 31199716, -4589710,
-60432336, 19185618, -63061932, 539018, -13302587, 32670206, 10002442, -20771536, 10350871, -15593416,
--9052180, -13564044, 20764020, -3806952, 15244986, 12610561, 16500191, -3638911, -16095927, -5293011,
-11476153, -7027640, 9696426, 6099928, 7067906, -14161044, 1973001, 5746666, 576063, 25493316,
--570694, 11334956, 2814277, -4203163, 13940927, 3300146, -1693291, 15161771, -6892349, -2294586,
-9633075, 3824669, -1061394, -6126234, -8195872, 992674, -9456444, -7312182, 5714991, 7305740,
-49609020, 47986596, -15019501, 16663936, -19601156, 11971684, 776852, 6898255, -23379118, 1803886,
--19951734, -17976586, 316754, -41448044, 1169842, -17676474, 4763656, 12104828, -164283, 14033269,
--20180978, 30768608, -15079630, -620086, 21493626, -20155744, 8018704, 15316927, 19093278, 2647311,
-7010997, 4603668, -29542396, -16628503, -4607963, 4299799, 4789963, -4513474, 19914690, -6452652,
--63351, -3859028, -8323647, 6873022, 4138738, -23610508, 7138236, -18995566, 5393405, -45496052,
--1979443, -1237488, 119185, 18431852, -7259569, -16656420, -7175280, 16922708, 163746, -43979928,
-61604864, -5474473, -11521787, 13269301, -2461016, -9141838, -11289322, -12332462, -12941273, 41996192,
--16065325, -24499568, 21085068, 1930051, -33013802, -7949448, 14104673, 10943040, -10741176, 22601728,
--3790846, -6337224, 21219286, -15574625, -13996225, 26458072, -11546483, -4306779, -1237488, 11151883,
-5650567, -380105, -1658394, 556198, 5233955, -5560909, -207769, 5101885, 5726265, 6500433,
--16097537, 4104915, 8425115, -15952045, 1539209, 3221762, -2618320, -6514392, 6598144, 1721745,
--5534602, 822486, -348429, -2768107, -19780472, 11253888, -11627550, 3486440, 3573950, -18167712,
--817654, 790274, 79457, -350040, -5917928, -985695, 5308580, -829466, -38969312, -57749592,
--55357296, 122641184, 101938904, 115883584, 262156752, 68487008, -65593816, 20633022, -210137712, -222957120,
--55097988, -140153376, -108246600, 66185984, -34381752, 13735305, 167053824, 82813952, 123842160, 237672752,
-158519728, 41356240, 34524020, -70143792, -216390656, -165457712, -126530808, -255796448, -103424424, 6067178,
--45216880, -20437602, 129417568, 34237868, 17426292, 160160944, 19899658, 38252052, 227676224, 167276624,
-106005160, 215132768, 107243720, -37846180, -3214783, -68190120, -335209312, -292626848, -236352592, -367449472,
--279888512, -99262600, -132587248, 29817274, 255129104, 227741712, 315354752, 398032352, 296237312, 230945216,
-224735232, 124215288, -42115912, -80267568, -182861984, -261174272, -256440144, -222319312, -254577200, -260610032,
--209494544, -117306296, -85012432, 31417686, 199468480, 287551808, 410650944, 461801856, 275661728, 66695472,
--39724152, -278681088, -265160000, -202181296, -157153392, -58733140, 29127932, 21408802, 28007482, 35067336,
-16197395, 41336912, 58304716, 43080132, 70458936, 39763344, -18660022, -22736484, -63227288, -115181360,
--32059784, -36568424, -42036456, 35124780, 30054034, -39760124, -50971060, -94142464, -153156384, -64932928,
-85897200, 146859968, 285884832, 345068416, 234268992, 144892864, 37933152, -131108168, -191228592, -216287040,
--252678288, -237629264, -182725088, -148447488, -123167312, -75435728, -20340966, 61395484, 217233008, 303904896,
-269475904, 193068448, 118275344, 23935316, -49637472, -74557944, -93976568, -67868000, -20431160, -6199249,
--22164178, -34699576, -53975392, -84289808, -108737832, -105415144, -106363256, -64825016, 3194382, 30339112,
-60224568, 79373680, 71092984, 40979356, 15219217, 4548907, 1192927, 832687, },
+2590939, -3527242, 5304822, -3109020, -1074816, 81068, -1825361, -2042794, -4123706, 986769,
+6240588, 641024, 1112933, 2654827, 637266, -2216203, -696322, -1316944, -1335735, 3787624,
+1032940, 498216, -1298154, 700080, -164283, -1438277, -2364916, 3671123, 2816425, 525060,
+-788663, 4257387, -5930813, -2205466, 2515240, -2453500, 5091684, 522912, 3591667, 463856,
+409096, 2330557, -2049236, -849867, -77309, -56908, -1600949, -1274532, 2243047, -112206,
+-5470178, 5125507, -727460, 872415, -4621922, 2193118, -2050310, 1816771, 132607, -158914,
+-1740536, -178241, -2675765, 2754685, -5195837, -586800, 3788161, -3008088, 1408749, 5661304,
+1717450, 567473, -2823404, 298500, 1505386, -1069447, 1887638, -1191853, -825171, -1598802,
+1708323, -1864553, -2979097, 943282, 494995, -749472, 3644280, -928250, -790811, -893890,
+1209570, 1323924, -95563, 141734, 658741, -734439, 652835, -1412507, -580894, -237834,
+-294205, -765578, -26307, -51003, -156229, -453656, -33286, -768799, 404264, -391916,
+878858, -584116, 654983, 883153, 10931766, 2019708, -1530082, 3341485, -1651415, -1366873,
+-1750199, -711354, -4104378, 5811091, 3357054, 2508798, 2700998, 2569464, -2692945, -3628711,
+4891431, -1051193, -3795141, -7225209, 1183264, -2138894, 2267743, 45634, -613107, -1617055,
+2274185, -2676838, -1352915, 3571265, 6783901, 1767379, 3086471, 588411, 3411815, -706522,
+3629784, 2290291, 410169, 2030446, 180389, 596464, 186831, 4958540, 1050120, 1304596,
+-1120450, 734439, -351650, -693637, 4023311, 4605816, -1656247, -1695438, 928250, 4238596,
+-6899328, -361851, -1874216, -5106716, -2078764, 710280, -2177549, 2269890, 1838783, 151934,
+-3114388, 1449015, -664109, -2978560, 3820374, -5273683, -2493766, -5624797, -2784750, -799401,
+836445, 5674189, -2454037, -1479616, 1753420, -896038, -1350767, 2687039, -446140, -111669,
+-1228898, -1903744, -2361158, -630823, 2003602, 797253, 973347, 929324, 710280, 70330,
+-336618, -147103, 158914, 1414118, 687732, 744103, -485868, 115427, 484794, 399969,
+-1074, 90194, 3221, -108985, -196495, -991064, -761820, -515396, 545998, 457414,
+-223338, 3299072, 1460826, -6663105, -619549, 981400, 4744328, -1432909, -8250096, 6648610,
+-7794829, 408559, -3396246, -2710124, -8265665, -5507759, -3214783, -2093797, 3424163, 1148904,
+-5435281, 766652, -2898566, 36507, -173946, 2240362, 477815, -2386391, 408559, 577136,
+1358820, -1688996, -1143535, -510564, -2677375, -4103305, 5568425, 2565706, 773631, -772020,
+4747550, 4078608, -4640176, 1297080, 467615, -898185, -2694018, 606664, -4794257, 1072668,
+-893353, -3945464, 4882304, 70867, -354335, 6070937, -5261872, 4772246, 1790465, -724239,
+-3892851, 1124208, -542777, -4153234, -3426310, 16106, -1487669, -1874216, -5697274, 248571,
+1243930, 2664490, -1637993, 2476586, 781147, -1030255, -775242, -3399467, 2943663, 578210,
+450435, -5636608, 2967823, -514322, 421981, -2923799, 112743, -5181341, 649614, 1079647,
+718333, -471910, 530965, -128312, 61740, -927176, 306553, -297427, 1160178, 618475,
+497142, 1017370, 41876, 326418, 1080184, 600222, -702227, -330176, 1699733, -625455,
+359704, -609885, 653372, -1954747, -448824, -622770, 817118, -383326, -12273406, -11628624,
+4508642, 7691213, 4661650, -10475425, 7460895, -2536715, -950262, 656056, -4846871, -3686156,
+8801999, -126702, -10737, 664646, -205622, 2868501, -4372277, 2653753, -2314451, 2378338,
+4031901, -2673617, -719944, 2330020, -667331, 4196183, -1304596, 1821603, 368293, -431107,
+354872, -3582540, -4975183, 4697084, 617402, -908386, 42950, -4669703, -5806259, -164819,
+113817, 3022583, -5397700, -4605816, -980863, -9597641, 3726421, -759136, 1958505, -740345,
+-2309082, 1464584, 12293807, 6820408, 3568581, -3687230, 4845797, -58519, -6313065, 15032,
+-6589554, 5596880, 772020, 658204, -3754338, 31675, 3832185, 1399623, 766115, 476205,
+428423, 4111894, 2870112, 523986, 2796024, 1657321, 2232846, 6019934, 2500745, 2958696,
+-2793876, 2258079, 1687385, -727997, 4748623, 1434519, -14496, -434865, 1417339, 2517925,
+308164, -40265, -938987, 598611, 2083059, 1141388, -476205, 195421, -1713692, 481036,
+429497, -774705, 164819, -118112, -34360, 1154809, -227096, 1205275, 1671279, 590558,
+-984621, -1903744, 308701, -1205275, 909459, 808528, -1203128, 477815, -17632988, -1342177,
+-4241817, -616865, -2947421, -10002979, -426276, -2690797, -4124242, -9377524, -1156957, 6657736,
+-4653597, 4379256, -776315, 6174553, -2093260, 5016522, -1654636, -4968741, -1334124, 533113,
+-2180233, -4467840, -3590593, -4392141, 140660, -4007741, 1459215, 471910, 399432, 1894618,
+-3015604, -4037806, 5822902, -532576, 1725503, 59056, -4574677, -2902324, -3230352, 155693,
+-2319819, 4059281, 4125853, 680215, -5603859, -1837709, 10302016, 2561948, -4361003, -3469260,
+-2209224, -3821447, -2021319, 8048232, 4896263, -5846524, 3573413, 4746476, 7007776, -1810866,
+2847027, -432718, 59593, -2840584, -5839545, -1058710, 4304094, 440771, 8338679, 5916318,
+393526, 1934883, 7033009, -5605469, -2570001, -1655173, -3453154, 2477659, 1088237, 1135482,
+-3026878, 2052994, -2199560, 2275796, -4303021, -202400, -398895, -1689533, -105764, -370441,
+2112587, 576599, 473520, -1845225, -1247688, -595927, -1737851, -75162, -2506650, -1459752,
+101469, -195958, 1561758, -1066763, 427349, -516470, 849867, 613107, 2160906, -1786706,
+22600654, 15170361, -4670777, -851477, 58519, -615254, -2582349, 3156801, 7739531, 6532109,
+3394635, -11855720, -5266167, 1524713, 691490, 5038534, -8921721, 1804423, 12104292, 8145406,
+-1386201, 2902324, -1059783, -4085588, -5575942, 311385, -4750771, -2774012, 1395328, 3757560,
+-3481071, -6489696, -3081102, 1115618, 5963025, 8322036, -1581085, -8801462, -1859184, -3147674,
+-8827768, -533113, -264141, -4239670, 1463510, 2377801, 5164162, -7408819, 3029026, 3818226,
+835908, -7165079, -5318244, 2437931, 316217, 1857037, -778463, -703838, -245887, -3973919,
+1959579, 2070174, -2770791, 4968204, 5883569, 8038568, 1932735, 598074, 7579007, 12347494,
+1974611, 1685775, 2107218, 7259032, 824634, 4293357, 12196633, 3613678, 2248416, 331786,
+-2302103, -10427644, 1395328, -285078, -1692217, -2001455, 1282585, -1453846, 2576444, 1137630,
+-1378685, -768262, -352724, 2093260, 1338419, -590558, -405874, 1421097, 3097745, 12885,
+-777389, 1071058, 118112, -1458678, -2881923, 2079838, -2713883, 1642288, 1145683, 2000381,
+-136365, -349503, 41339, 643171, -3785477, 94489, 551366, -374736, 11893838, 263067,
+2478733, 2893197, 5735929, -2236067, 3652870, -3090229, -1971390, -9797894, 3910568, 6696928,
+-6062347, 5083631, -2508798, -8584029, 8943196, 5311801, -1592896, 5370857, 10473278, 7349226,
+-5401995, -3004330, 5279589, 1683627, -1192390, 4080756, 3730716, 5455682, 344671, -2365990,
+-4670240, -8278013, -272194, -6868190, 847719, -2225867, 3846143, -5458367, -12592307, 2787434,
+-3123515, 5829881, 1465121, 474057, -3485366, -7400229, -6225018, -569083, -637266, -5575405,
+7878044, 10212358, 10581189, 4297652, -7577396, -646393, 10025527, 985695, -1729261, 4689031,
+-1312113, -2506114, -9518184, 5264556, 2757369, 13815299, 6376416, -9350681, 3146601, 3543885,
+-992674, -151398, 3347927, -2259690, 767725, -3995930, -9870909, 8942659, 1632088, 5339181,
+2576444, -4631586, 7552700, -1654636, 1800128, 429497, -1670205, 310848, 231391, 623307,
+3951907, 1331440, 754841, 363998, -1349694, -1565516, -2063732, -1196685, 1363115, -630286,
+-103079, -763967, 1249299, -1131724, -603980, 144955, -150324, 555661, -2175938, 2556043,
+-1064078, 2252710, 736050, -1136556, -1435056, 3169686, -2870112, 2550674, -695248, -3663607,
+-6111202, -1648731, -1560147, -10549513, 529355, 1295470, 5281736, -1994476, -4544613, 1894081,
+578210, 2497524, 85362, 5732708, 2305324, 3959960, 679679, -441308, 3411278, 1995012,
+-10383083, -3208878, -14845018, 674310, -2762738, 1717450, 2639794, 200790, 7105487, 1808181,
+10142565, 1247688, -12039330, 247497, -4838281, -1991254, -562104, -1804960, -608812, -9549860,
+2090039, -4596152, 11518565, -11942693, 6640557, -2592550, -10192494, -1905892, -7162932, -1540820,
+-2172180, -10853382, 3129421, 3330210, -1975148, -1792075, -679142, 3847217, -8610336, 224412,
+8102456, 1500017, 11266236, 18379238, 7606924, -16633871, -22192096, 10779294, 4842039, 16593606,
+-3419331, 7966628, 1717987, 7912404, 11086384, 14262513, -7559680, 4119948, 10625212, -8676371,
+1635846, -1107028, -1072131, 807991, 7593502, -1144609, 2608119, -4896263, 1796907, -3772592,
+-3970161, -1751273, -3312494, 561030, -1944010, -5591511, -185220, 3729105, 2335389, -1029718,
+-1014686, -820339, 104690, 1743220, 1842541, -1434519, -2160906, -953483, 3245922, -773631,
+3146064, 509491, 485331, -776315, 783832, 940598, 291521, 879931, 180926, -2633352,
+-2551748, -1660005, 858993, 2695629, -3740380, -2490007, -1157494, 1584843, -1739999, -20310900,
+15164993, 2818036, -2702608, -270046, -9225590, -7517267, 7904888, -2098629, -2604361, 8250096,
+-6133214, -6544994, 344671, 8207146, 3456912, -2598992, 221728, -4636417, -651224, 686658,
+4361003, 238908, -10411538, -10283225, 2302639, -1335735, 2469069, -984084, 4130685, 8078297,
+14947560, -183073, 9263708, -2232309, 2598992, 6456410, -6253473, 12277701, -1783485, -7539278,
+-10759430, -1992328, -8932458, -11169599, -3138011, 5236102, -3503083, -8660802, 4324495, 6281390,
+9684078, 12618077, -10271951, 3970161, -2887292, -9347996, 3498251, -10455561, -1969243, -17114908,
+6833830, -5053566, 2516314, -3019362, 2681133, -18402324, -18449568, -11100343, -4350802, 10306848,
+-9936944, 19492710, -6866579, 2020245, -1825898, 3711389, -1788317, -13635447, 1974074, 1702955,
+3735011, 3290482, 1597728, 5425081, -3063386, -4604205, 8590, 326418, -4596152, 2198487,
+-5912023, 3459059, 1972464, 2828773, -876173, 132607, -1811403, -4432943, -3323231, -1741609,
+-2066416, 3166465, -2050310, -5375152, 1900523, 2498060, -1021129, 3883724, -319975, -955630,
+-26307, 1035624, -1610613, -1415192, 1985349, 2872260, 2027761, 1082869, -4014184, -2698850,
+-870805, -3007551, 1180579, 479963, -37581, -2675228, 17060146, 1104880, 6374805, 4625143,
+1704028, 10109816, 1275605, -13904957, 6644315, 2114198, 6338835, -532039, -10480794, 14948097,
+7918846, 6200859, -1513976, -4399121, 1799591, -979789, -8341900, 5433671, 3606162, -4475356,
+5849746, 9549323, 132607, 3659849, 9283035, -10134512, 2334315, -3345780, 4095251, -19153944,
+5754720, 9371082, -3365107, 2571075, 9155797, 5069135, 14496, 3172370, -9777493, 2586107,
+-5813238, 536871, 2652679, 1631551, -4545686, 18552112, -3464965, -3392487, -4464619, -15987479,
+-6691022, -9754944, -11591043, -2094870, 15691663, 17512730, -1887101, 5484137, 6787659, -14432701,
+-4882841, 11922829, 9571335, -5667210, -4268661, -14212047, -4850629, -5309117, -7103339, -7968775,
+1951526, -14500346, 2200634, 13828184, 18960134, 6012418, -5850819, -281320, 9955197, -3444564,
+-7132867, 786516, -1104880, -2927020, -4862977, 801011, -699543, 2388002, 2812130, 1879585,
+-1881733, 1003949, 1391569, 1386201, -500901, -2680597, -6362994, 1869385, -616865, -2381023,
+4410932, 1580011, 2367064, -2484102, 3705483, -2669859, -2389613, -3020436, 2881386, 750009,
+2059437, 4741644, -655519, -2250563, -1542430, 2443837, 774705, -70867, -144955, 770410,
+392453, -134755, -1206349, 2483028, 2870112, 3998078, -1569811, -5404143, 3377455, 912681,
+-7196218, -10644003, -11464341, -4558571, -11208254, -4636954, -4545686, 204548, -10661183, 2415382,
+4490925, 528818, -12167642, 3821447, -15094663, 4705674, 8438537, 281857, 13112535, 442382,
+-3885335, -2343979, 8851391, -3128347, 12179454, 4384625, -4188667, -4110284, 2164664, -6138582,
+-3324305, 525597, 11528766, -314069, 6109054, 3533684, 1075889, 8150774, -3584687, -7315940,
+3317862, -5213017, -2420214, -14366666, 8184060, -4987531, -4230006, -2835752, -15892453, 19161996,
+4992363, -2173254, 8352638, 2818036, 4093104, -8337606, -12636868, -14332843, -6915971, 861678,
+-14530411, 5553393, 10633265, -16250009, -5913096, 6118181, -7469485, 4068408, 18249316, 701690,
+-2879776, -4712116, 4174171, -9763534, 6536940, 3617973, -8853001, 3054796, 6410776, -3471944,
+-10493679, -8901857, -4655745, -202937, 2966212, 2603824, 2052994, -1700270, -2567317, -1170916,
+2409477, 270583, -1416266, -5825587, -7042136, -1799054, 568009, -4936528, -6020471, -4061965,
+-2484102, -2174327, -5270462, -4457103, -2403571, -3168075, -6749004, 1350767, 6494528, -484258,
+-519691, -2405182, -1857573, 2305861, -2324651, 659278, -5300527, 373125, -1476932, -2717641,
+74088, -2535105, 1764695, 2695092, -2176475, 3984119, -2566780, -848256, -2655364, -15032,
+521839, 11679090, 28790240, 30438970, 9095130, 18931678, -12979928, -12918188, -3114925, -1808718,
+1015223, 4394826, 9601936, 17538498, 5632313, 16244103, 1703491, 5008469, 2317672, -4318590,
+7272990, -53687, 2847027, 1388885, -8297877, -874026, -4493610, -8750459, -5634460, 290984,
+795106, -11649025, -4955856, 15022722, 10617696, 7885560, 12495134, -7645042, -15032, -21456582,
+906238, 18720152, -3722126, -3529926, 2129230, -1823751, 14422500, -983548, -2525441, 11370926,
+-13466333, -21478058, -8833137, 2113124, -11749957, 8790187, 11943767, -16869558, -6565395, 328565,
+-427349, -24283208, -15694884, 8036421, 3273839, -1635309, 7766912, -10481331, -6665789, -14911590,
+3481608, 5062693, 1141388, 1257889, -10156524, -16451335, 13669807, -22442814, 6504728, -8081518,
+21521008, 2478196, 8903467, -5938329, -8665633, 6517613, 2803003, 9943386, -9356586, -1421634,
+6453725, -182536, -5238250, -4517232, -5152350, 743566, 4931696, 5827197, -6349573, -2323577,
+-1138166, -8012262, -3070365, 1787243, -1034013, 1009854, -4467840, -6987375, -1161252, 479426,
+5574868, 2065342, -3654480, 4706211, 627065, 2548526, -8147553, 1953136, -4916664, 4122095,
+581431, 4350265, 6321118, 2319819, -4651987, -8703751, 2704756, 3367254, -28179818, -20266340,
+14038101, -2923262, 25526064, -6219650, 21014738, -16902844, 508954, 7558606, -1674500, 914291,
+2468533, -1309428, -12687870, 4458713, 4773856, 5561446, 6323266, -3895535, 10429254, -9469866,
+-6998113, -5410585, 14669461, -8090645, -2728915, 1321776, -306016, -7610145, 6541235, -8492224,
+-10116259, -19063212, 1739999, 3500935, -12950937, -6037114, 6238440, -2616172, 3333968, 1040993,
+15060303, 1053341, 11334956, 5060009, 488016, 9088151, 2063732, 3151432, -17082158, 17598092,
+6231461, 13789529, -8376797, 3665218, -9168145, 14305462, 10849624, 17452062, 2782065, -4562866,
+-12680891, -782221, 2236604, -10786810, 15333033, 2480344, 2384781, 16519518, 3694746, -4939213,
+-6592775, -527744, 9815611, 11857868, -3852586, 14785962, -17678622, -18510236, -8105677, 4319127,
+-5646809, 8091719, -2014340, 4351876, 14154065, -614180, 7025493, -5876589, -5389647, 6207302,
+-545461, 9946071, -3068754, -44023, -3048353, -6110128, 1242319, -3585761, -1436130, 4114042,
+1389422, -5549098, -5109401, 3007551, 7512972, 7826504, -790811, 6417218, 6930467, -9691594,
+4532264, 9226663, 7226283, 4112968, -7265474, -8760660, -9178882, -9208410, -9184788, 808528,
+-3209414, -1245004, 1034550, -6718940, 4796405, 4399121, -3484829, 5228049, 1837172, 2499134,
+-6438693, 12986907, -30627948, -1392106, 15961172, -10194105, -3400540, 11767674, -12746926, -25892748,
+5160403, 4414690, 4027069, -3362960, -15305116, 3886409, 4372277, 1177895, 8527121, -27428198,
+12621835, -6350109, 6583111, -15613817, 12757663, -19762756, -12610024, 7720204, -5151814, -2266669,
+-15010911, 11864310, 15604153, 1611, 1778653, -7114077, 23392002, 5839545, 6416145, -4186519,
+-20146080, -4286378, 11215233, -1970853, 16758962, 206158, -5986111, 4099010, -1097364, 10546829,
+-19912542, -2336462, -15251429, 16658568, -6091338, 5643587, -378494, -500901, -18024368, -6267968,
+16007880, 5182952, 1523103, -4691715, 573915, 2140504, -23107998, -23926190, 25708600, -11245835,
+-27679990, 11433203, 13256953, -22252226, -29153164, -20301774, -19493782, 3622268, 7918846, -2310156,
+-18724446, -466541, -9957345, -4601521, -13530758, -608812, 1520955, 1534377, -2579665, 13111461,
+-6876243, 5261335, -5810017, -121333, 3712999, -3117610, -336618, -7471096, 10285373, -2170032,
+3728569, -5416491, -7999377, -1494649, 4155381, 4749160, 1620813, -7759396, 4930086, -920734,
+-6197638, 6491306, -9482751, -1697586, -5776731, 9974525, -4048544, -10541997, 4938139, -4020626,
+-4406637, -14074608, -498753, 3483219, 12288438, 5194763, -6823630, -3355443, 1473174, -1637456,
+-3486440, 2510945, -249108, -2444373, -2380486, -635118, 12252468, -17054242, -9112847, -17820356,
+-1372242, 3329674, -23332946, 3503083, -11282879, 32523640, 1976759, -29795262, -6533182, 14025216,
+9002251, 6691022, 15119895, 14651744, -21047488, -5731097, -7987029, 19674708, -6767258, 23018878,
+223875, -13775571, -10473815, -21155936, -23645942, 1105417, 3041374, -4227859, -12057047, -5569499,
+1873680, 3460670, 8470749, -12024298, 6206765, -14084808, -15899969, 2819646, -3177202, -4649839,
+-16589311, -16339666, -7421167, -5287642, 23190140, 1768453, 7982197, 12520367, -109522, 28449864,
+11964705, -9959492, 1779190, 14468671, -5499706, 18412524, -4638565, 1985886, 1599339, -25863756,
+-25785374, 3478387, 18543522, 10201, -5379984, -28896004, 2142652, 9356586, 6429566, -10172630,
+-7658464, -6059125, 3795141, -12707734, 30592516, 16687022, 18879602, 3293166, -21068962, 7381975,
+10064719, 29761440, 7264401, 2687039, 12420509, 4777078, -4611185, -121333, 9589051, -1258425,
+1573032, 2604898, -7344931, -5765457, 9332427, -142271, -6980933, 9097814, -5581847, -2583423,
+-4205310, -4779225, 8749385, -5850819, -2135673, 4074313, -8792872, 3424700, -526134, -5599564,
+11432129, -4415227, 300111, -14602352, 8973260, -4738423, -3404835, -9557376, -12712566, 1660005,
+-4952634, 8757438, -6442, 5034776, 3788161, -190589, -5130876, -245887, -14172855, -12931610,
+27304180, -8470749, -10105521, -1454920, -7519414, -18606872, 404264, 12843563, -31894964, -569620,
+8284455, 10157598, -10873247, 7203197, -18260054, 1372779, -4708895, 5680631, -16354699, 10146323,
+-27851790, 4525285, 768799, 15737297, 14846628, 7341710, -10401874, 11549167, -3391414, 12904229,
+-14104136, 2176475, 16517370, 13036836, -7755101, 2632815, 414464, -3721052, 8011725, -3178276,
+-9618579, -10783052, 7638063, -19429896, 12787728, 2916820, -20767778, 19488950, 18720688, 17542258,
+6351720, -9236327, 22656490, 2640331, 9730785, -14003741, -12085501, -13430900, 4132296, 5077188,
+8110509, -18810884, 1805497, 13661217, -35938676, 1240709, -11812771, 22405234, 14506252, 11191074,
+-3195993, 14805826, -14107357, -867047, -9830106, -21735218, -928787, -20030116, -16667157, 9600863,
+26521960, -25094958, -5945846, -4708895, 26623428, -6744173, 11628624, -7800735, -4707821, -1186485,
+9396315, -5742908, -2359011, 594853, 6387690, 4551592, 3339874, -3736622, 934692, 2593624,
+13159243, -10640781, 10972031, -2597382, 8012262, -188979, 2093260, 2597382, 5021891, -7125888,
+-1619740, -1560147, -8644695, -7901666, -7679939, 5054640, 4187056, -1803886, -3486977, -4668093,
+-6078990, -3973919, 427886, -2928631, -140660, 7689065, -266825, -14817637, 6746320, -8787503,
+-1385664, 23739894, 5152350, 12020540, -34206192, 15855946, -19119584, 25897042, -2547989, 10069014,
+19678466, -21219822, 37845640, 27086748, 20503638, -9324374, 5580237, 25873420, -6427419, -8377871,
+-5965710, -1417876, -19495394, 5128191, -10331544, -23809688, 23084376, 7543037, 6412923, 2813741,
+5426155, 8831527, 24299314, 5011153, -14992120, -1367410, -15560130, 3018825, 2368675, -27627378,
+-1064078, 14911590, 1202591, -2059437, -8295730, 29190208, 6147172, 12378096, 6561637, -15901043,
+-11179263, -8734353, 18312130, 10645613, -3526168, 10943040, -1505386, -20042464, 19469624, 2253784,
+22301080, 2350958, 2404645, 335544, -29317446, 3907347, 906238, 3150896, 18430778, -7347079,
+28933584, -43888124, -7647190, 32536524, -13093745, 10686416, -14776835, -23419382, -18641232, 13405667,
+-12699145, 12489228, -20035486, -4438849, 3532074, -5089536, -7792145, -2676302, -2234994, 8673150,
+20421496, 2013803, 12178380, -4065187, -1876364, 14659797, -2003602, -4358855, 4246112, -7532299,
+6731288, 12742631, -8448738, -1458678, -3194382, 2216203, 2583423, 5968394, 23075786, -4306242,
+8242042, 265214, 5681705, 8176544, 4360466, 1136019, 12937515, 13637595, -3658775, -2093797,
+5893232, 2835752, 5132486, -17904108, -1262720, 16694538, -3563212, 3337190, 6835441, -1105954,
+17394080, 6135361, -35447440, -42407972, -3748970, -19875498, 2690260, 12077985, -16974248, 4957466,
+-25926034, 11282342, -14280766, -70875552, -4566087, 43247636, -18641768, -8007967, 43447352, -10188199,
+2341294, 52064132, -12458090, 11520713, 4866735, -7591355, 41918344, -33741800, -4359392, -908386,
+-5939940, -6777996, -6911676, -822486, 13652627, -7665980, -22874458, 278636, 456877, 6781217,
+8339216, 1537061, 18824842, -695248, 8662949, -5111548, -22695144, 15849503, -2786360, -23335094,
+897111, 13510893, 41291280, 20922934, 34712464, 767725, 8548059, 16608639, 3917010, -1984812,
+32451700, -1667521, -12639552, 38031400, 6641093, 6760279, 278099, -5311801, 21709986, 41876,
+-12617540, -14201309, -2943126, -2768643, 32870996, -22238804, 2888366, 4285304, -5832029, 38649336,
+333934, -24629490, 4156992, 12671227, -18121004, -807454, 18494130, 15312632, -9309342, 1532767,
+-10521596, 8973797, -2820720, 1294396, -10351945, 9722195, 148176, -977105, -15052250, 6322729,
+5179194, -9743670, 804770, 3658775, -5046587, -3257733, 11686606, 1917166, 6536940, -4179003,
+3461207, 20290500, -18276696, -8244727, -5958194, 21939230, 8193724, 11672110, -13123273, -11924977,
+-4831838, -1321239, -15921444, -17828946, 21622476, 8844948, -12550431, -11633993, -7108708, 26844,
+-12435004, -10832444, 284542, 3496104, 8302172, -1934346, -3868692, 2123325, 24089934, 19452444,
+-39756364, -19417010, 30521648, -5610301, -29804388, -261456, 588411, 10797548, 32273994, 28739236,
+-17724794, 5326833, -4051765, 261993, -340376, -18596672, 27983860, -8315057, -18421114, 6544994,
+-13239774, 15928960, 1342714, 22649510, -7032472, -21480742, -19473918, 17160542, -8317741, 22339736,
+-6058588, 14470819, -14753213, -11420318, -7050726, 1599875, -18504866, 4520453, 907849, 300111,
+17955648, -211527, 5951751, -12525198, 8864276, -19765976, 21082920, -19015968, 12501576, 6385543,
+17709760, -29759828, 941672, 2498060, -9068287, -21505974, -36495948, -6103149, -31155156, -11959873,
+-24948392, -11596412, -45532024, -14136348, 20544440, 26107496, 14136885, 15194521, -2537789, 16508781,
+-32465658, -7414724, 4942434, 20907900, 5688148, -44551160, -1841467, -19590956, -13120051, 52068964,
+34918084, -24701968, -10136123, -17348984, 5719286, -45913200, 2734821, 9570261, -13208098, -13629005,
+8262980, 2673617, 355945, -8822400, -7825431, -7556995, -7739531, 14320495, 13058311, -945967,
+-3769908, -14136885, -16304233, -3452617, -4150549, 5454609, 13925895, -27370216, -2163590, 13684303,
+-146566, 17513802, -6207302, -16791712, 8973260, 18930606, 9480067, -11389180, 1299765, 17517560,
+-22414898, -15911780, 29501056, 1613297, -1116692, -3028489, 4589173, 6802692, 8886824, -3745212,
+-7315940, -52413632, 15336791, 8163122, -27528056, 10817412, 10282152, -20067698, -15323370, 23471460,
+2965138, 12473122, -6284611, 15493558, -4908074, -2519535, 12295954, 5863167, 4063039, 277562,
+-8230231, -14282377, -8621073, 22187264, -7797513, -19361712, 32852742, 20205674, 2645700, 14904073,
+4494684, -17015050, -50046568, 20451560, -1615445, -27144194, 22789096, -2476049, -36458368, -30790620,
+-15903727, 23899882, 9690520, 24774446, 31384936, 9280351, -25234544, 7934952, 9179419, -32303522,
+-5122822, 18088254, -9977746, -35193500, -26555782, -42884712, -27203250, -6262063, 27149562, 39094940,
+18972482, -2662343, 27074400, -6802692, -66017944, -52503292, 11630771, -26484916, -31224412, 44863080,
+6064494, -60498372, -46582680, 15899969, 2934537, 10291279, 22623740, 54077932, 31199716, -4589710,
+60432336, 19185618, -63061932, 539018, -13302587, 32670206, 10002442, -20771536, 10350871, -15593416,
+-9052180, -13564044, 20764020, -3806952, 15244986, 12610561, 16500191, -3638911, -16095927, -5293011,
+11476153, -7027640, 9696426, 6099928, 7067906, -14161044, 1973001, 5746666, 576063, 25493316,
+-570694, 11334956, 2814277, -4203163, 13940927, 3300146, -1693291, 15161771, -6892349, -2294586,
+9633075, 3824669, -1061394, -6126234, -8195872, 992674, -9456444, -7312182, 5714991, 7305740,
+49609020, 47986596, -15019501, 16663936, -19601156, 11971684, 776852, 6898255, -23379118, 1803886,
+-19951734, -17976586, 316754, -41448044, 1169842, -17676474, 4763656, 12104828, -164283, 14033269,
+-20180978, 30768608, -15079630, -620086, 21493626, -20155744, 8018704, 15316927, 19093278, 2647311,
+7010997, 4603668, -29542396, -16628503, -4607963, 4299799, 4789963, -4513474, 19914690, -6452652,
+-63351, -3859028, -8323647, 6873022, 4138738, -23610508, 7138236, -18995566, 5393405, -45496052,
+-1979443, -1237488, 119185, 18431852, -7259569, -16656420, -7175280, 16922708, 163746, -43979928,
+61604864, -5474473, -11521787, 13269301, -2461016, -9141838, -11289322, -12332462, -12941273, 41996192,
+-16065325, -24499568, 21085068, 1930051, -33013802, -7949448, 14104673, 10943040, -10741176, 22601728,
+-3790846, -6337224, 21219286, -15574625, -13996225, 26458072, -11546483, -4306779, -1237488, 11151883,
+5650567, -380105, -1658394, 556198, 5233955, -5560909, -207769, 5101885, 5726265, 6500433,
+-16097537, 4104915, 8425115, -15952045, 1539209, 3221762, -2618320, -6514392, 6598144, 1721745,
+-5534602, 822486, -348429, -2768107, -19780472, 11253888, -11627550, 3486440, 3573950, -18167712,
+-817654, 790274, 79457, -350040, -5917928, -985695, 5308580, -829466, -38969312, -57749592,
+-55357296, 122641184, 101938904, 115883584, 262156752, 68487008, -65593816, 20633022, -210137712, -222957120,
+-55097988, -140153376, -108246600, 66185984, -34381752, 13735305, 167053824, 82813952, 123842160, 237672752,
+158519728, 41356240, 34524020, -70143792, -216390656, -165457712, -126530808, -255796448, -103424424, 6067178,
+-45216880, -20437602, 129417568, 34237868, 17426292, 160160944, 19899658, 38252052, 227676224, 167276624,
+106005160, 215132768, 107243720, -37846180, -3214783, -68190120, -335209312, -292626848, -236352592, -367449472,
+-279888512, -99262600, -132587248, 29817274, 255129104, 227741712, 315354752, 398032352, 296237312, 230945216,
+224735232, 124215288, -42115912, -80267568, -182861984, -261174272, -256440144, -222319312, -254577200, -260610032,
+-209494544, -117306296, -85012432, 31417686, 199468480, 287551808, 410650944, 461801856, 275661728, 66695472,
+-39724152, -278681088, -265160000, -202181296, -157153392, -58733140, 29127932, 21408802, 28007482, 35067336,
+16197395, 41336912, 58304716, 43080132, 70458936, 39763344, -18660022, -22736484, -63227288, -115181360,
+-32059784, -36568424, -42036456, 35124780, 30054034, -39760124, -50971060, -94142464, -153156384, -64932928,
+85897200, 146859968, 285884832, 345068416, 234268992, 144892864, 37933152, -131108168, -191228592, -216287040,
+-252678288, -237629264, -182725088, -148447488, -123167312, -75435728, -20340966, 61395484, 217233008, 303904896,
+269475904, 193068448, 118275344, 23935316, -49637472, -74557944, -93976568, -67868000, -20431160, -6199249,
+-22164178, -34699576, -53975392, -84289808, -108737832, -105415144, -106363256, -64825016, 3194382, 30339112,
+60224568, 79373680, 71092984, 40979356, 15219217, 4548907, 1192927, 832687, },
{
8950175,
--1191317, 726386, 7012071, -891743, -344134, -2033667, 7650411, 461709, 3710315, 2278480,
-2238215, -3151969, 1571421, -4888747, -552977, 3810173, 750546, 2235531, 3557307, -6040872,
--4247186, 1449552, -322123, 4499515, 2712272, -224412, -2514703, -1560147, -3106335, -483184,
--434865, -455267, 830539, 1181116, -2707440, 4507568, -1059246, -695785, 1513439, -5731097,
--1349694, 2488397, 852014, 5667210, -47782, -409096, 1079111, 390842, 2329483, 3924526,
-4956929, -284005, -542240, 93952, -2895882, -3635690, 1980517, 3253975, -2311229, -2186138,
--1508607, 4147865, 2411624, -568546, 615791, -4886599, -1438814, 2542621, 2076080, 3615826,
--5287105, 1194001, 1956358, -1095754, 3674882, -238908, 3198677, 1537061, 1006096, 4097936,
-2000918, 1032940, -537, 481036, -1011465, 341450, 535260, -326418, -1491427, 716186,
-673773, -1082332, -186831, -732292, 725313, 1173600, 11274, -156766, -103079, -1099512,
-499290, -393526, 870805, 420907, 241055, 185757, -526670, 286689, 95563, 456340,
--907312, -424665, -231391, 107374, 11616813, 3238405, -2698850, 5969468, -2916283, 6212670,
--2084133, -2784213, 3114925, 5812702, -205085, -2823404, 1516660, 1248762, -263067, -8192113,
-1902671, 2447058, 635655, 5176510, 6895033, 3751654, 6790344, 4670777, 4129611, -1068373,
-4589173, 2261300, -3515431, 1350230, 2110440, -4460324, -5735392, -835908, 2235531, 132607,
--2079838, -2720325, -2708514, -1290638, 3069291, 6227703, 5222680, 2023467, 4009352, -6444599,
-397284, -1607928, 51540, -7402376, 2752537, -666257, -1766842, -238908, -2031520, -3631932,
--2596308, 2665564, 618475, 2057826, -2722473, 5137318, 1301912, -5832029, 2428267, 803159,
-1633698, 3282429, 976568, 5976984, -1889249, 707596, -6912213, 1373853, 667867, 258235,
-165893, -1240709, 4920959, -1442035, -2281702, 3793530, -3859565, -1822140, -1589675, -654446,
--1794760, 1312113, 338229, 716723, -40802, -103616, 74625, -637803, 435939, 716186,
--236760, -233002, -19327, -1208496, -2071248, 840740, 271657, -1574642, -200790, -108985,
--340376, -1920387, 531502, 65498, -42413, 212601, 370441, 293132, -732292, 48855,
--1349157, 647466, -2427194, -2303713, -836982, 2230699, -4057134, 1230508, -7945690, 1542430,
-1418950, -853088, 5560372, 420907, -694711, 570157, 2913062, -4765803, 622233, 1542430,
-3016678, -6806450, -3546569, -2529199, 2452426, 1093606, -2222646, -6878927, 1617055, -6842420,
--489089, 2804077, -1345399, 2150705, -1258962, 4715337, 6833830, 3708704, -3636764, 732292,
-5163625, 3293166, -3299072, 2778844, 744103, -5318780, 1826972, 7460358, 3404299, 2543695,
-8185671, 803159, -3196530, -6250788, -340913, -3481071, -4315906, -1950989, 4472135, -4243428,
-1438277, -2507187, -2469606, 5351530, -757525, 940598, 4150549, 5807333, -2615098, -5208722,
-6644852, 5213017, 3221226, 376883, -4096862, 709207, 5237713, -5311801, 1573032, -3438658,
--181462, 3347927, -3144453, -106837, -5992016, -1497870, -586263, 966905, -380105, -2176475,
--332323, 1200443, -1815161, -386010, 747324, 746251, 443992, 556198, -155693, -364535,
--2403571, 1325534, -193810, 1363652, -970663, -1471026, 479963, 1297617, -872415, 1154809,
--250719, -1074, -163209, -171262, 1234803, -686658, 439697, -693637, -15617575, -5695664,
--2417530, 8552354, -3254512, -1267552, -5058398, -4252018, -743029, -11236708, 6293738, 2100776,
--332860, -4140349, 6197101, -1730872, 3141232, -2497524, 1979980, 3977677, -4959077, 541166,
-5448703, 3104725, 2188286, 5858873, 5212480, -3257196, -4189204, -5193153, -96100, -6833830,
-1627256, -9032316, -1742146, 6689949, 3498251, -2274185, -712965, -6788733, 3086471, -2889439,
-5996848, -3435437, -6169721, -1242319, -2546916, -5039071, 1955284, -1135482, -3229279, -3259343,
--10922639, 1517734, -3279745, -8064338, -2157684, 5015448, 2553895, -4157528, 3452080, 4472672,
-4289062, 1622961, -5585068, -901943, -1242856, 3894999, -3925600, -1478006, 2033130, 2098629,
--6111739, -7245610, -13069049, -2204392, -7591355, 2529736, -295279, -1780801, 3841312, -779000,
--1749662, 1708860, 2619930, 2552284, 1957968, 4583267, -1942399, -1564979, -1228898, 704375,
-229244, -997506, 1254131, 1842541, -401043, 462246, -796180, -994822, -192200, -631897,
-188979, 436476, 54761, -1105417, 178778, -731218, -295279, 695248, 1467268, -608275,
-1757715, 2184528, 338229, -574452, -1857573, -328565, 1251983, 879395, -13560285, -5450314,
--2414845, -4041027, 4637491, 6020471, 5710696, -11357504, -8449811, 3240553, 13828184, 8145943,
-7516, 1945083, 3948686, -4986994, 3289945, -4625680, 3335579, 4883915, 768799, 3914326,
-1239098, -299574, 2052994, 1187559, -3694209, -4715337, 6489159, 2602213, -4725001, 4615479,
--2574833, -505196, 11147051, -5345087, 6312528, 12428562, 5087389, -738734, 483184, -4520453,
-5826660, -5977521, -3250753, -10028749, 1885491, 7682623, -193274, -7108171, -2523293, -10065793,
--5097590, -1894081, -14276471, -7798587, -1414655, 1481764, -6254010, 3134789, -1661616, -4966593,
-5337034, 15745887, 1460289, 8009577, 5448703, 4695473, -5004711, 2066416, -8521752, 874026,
-2435783, 1873143, -3318936, 41339, -8655433, -3046743, -3046743, -650688, 4184372, 4464619,
--218506, 1715303, 2430415, -1273995, -963683, -834297, 788663, 62277, 584116, 433792,
-1357747, -770410, -70330, -2112587, -280784, -361851, 1454920, 806917, -936840, -1292248,
--1236414, -1216550, -425202, -1485522, 487479, 2619930, -2137820, -316217, 878321, 1471026,
-21109228, 13502840, -7392713, 2820183, 6726993, -2718178, 3807489, -1227824, 6267968, 3288871,
-1938104, 5874979, 3166465, 2955474, -1901597, -14095009, 6694781, -2320356, -3331284, 11200201,
-6771553, 3933653, 5019743, 3898757, 2724083, -2076080, 1543504, 547608, -3735011, 3031173,
-4700842, -7909719, 1430761, -5085778, 3727495, 4527970, -12618077, -110595, -14996952, 351114,
-1757715, 1358820, 3962107, 10255308, -1346472, -5172215, -2685428, -2733210, -4021163, 3018825,
-3045132, 1076963, -1758252, -1733556, 9769440, -3183108, -2081985, -5298916, 8665097, -1240172,
-7264401, -3377992, 7770133, -7495792, -16062104, -4650913, 889595, 3320547, 5283347, -5280126,
--4112431, 2277943, 1327682, -2399276, -4272956, 10064719, -4016331, 9578851, 2393371, 6794639,
-2525978, 4974646, 4002910, -1626182, -761820, 2008971, -399969, 5265093, 15032, -1625645,
-352724, -5712844, -1270237, -1254667, 281320, -1851131, -865973, -565325, -261993, -581431,
--3168075, -2381559, 613643, 297963, -3542811, -118112, 375273, 590558, 1264331, 679679,
-3229279, 236760, -1266479, -49392, -590021, -1470489, -1971927, -639950, 9893457, -3760781,
--6628745, -274341, 1014149, -9398999, -7407208, -2323577, 2527588, -1381906, 12202002, 7368017,
-283468, 11708618, 4173635, 3438658, -10061498, 9415642, -1803886, -2343442, -8496519, -3803731,
-7452305, 7419019, -2162516, 4923107, -10212895, -1419487, 6770479, 5146445, -3854733, -7208566,
--4110284, -4453881, -5626407, -4628901, 1048509, -7581154, -796716, 10481868, -5112622, 1210644,
--464930, -2413235, 4016331, -1673964, 6776922, 5369, 9585293, -2485176, -6162741, 3487514,
--4887136, -4773320, -4889284, -13723494, 1510755, 5667210, 8082592, 5874979, 10646150, -1113470,
--4214437, 6187974, -7714835, 1757715, 1087701, -1162862, 6860674, 6469832, -1765768, -8304320,
-1559610, -4300336, -7988639, -7333657, 3929895, 7059853, 4336843, -15348603, 3350611, 1606855,
--868657, 7202124, 3794604, 5887327, 2128693, -603443, 7650948, 1013075, 3413425, 2788508,
-498753, -3518115, 451508, -1977296, -4387309, 777389, 1175747, 1990181, -634045, 513785,
-353798, 338229, 1392643, 949725, 919123, -202400, -2827699, 1865090, -1224066, -1255204,
--1151051, -1964948, 3380676, 3933116, 3236258, 1314797, 228170, 529892, -958315, 2574296,
--12070469, -7066295, 1275068, -6895033, -17866528, 13540958, -295816, -887448, 1716376, 1072668,
--11815992, 8268349, -12318503, 1102196, 5639292, -1616518, 2057826, 1992865, -13251585, -4457639,
--5900212, -1220845, 2729452, -4349728, -2755222, -530428, -768262, 1222992, 5560909, 2979634,
-11944304, -4320200, 16390669, -1137093, 462246, -10697690, -1570347, 7968775, -1560684, -16458315,
-6671695, 7667054, -4878009, 4061429, -6128919, 11424076, 6339909, -313533, -645856, -7313793,
--4645544, -8004746, 7536057, 7419019, 3287798, 855772, 3413425, -6451041, -16962436, -6204081,
-5993627, 2622078, -12568148, 329639, 1531156, 1737314, -6003291, 4348118, 9001715, 4635344,
-235686, 3637301, 6213744, -3468186, 9229348, 154082, -184684, -9081708, -11548630, 7468412,
--3474629, 3707631, 3839701, -627602, -2417530, -2541010, -1868848, 1183800, -2780991, 3763465,
-952409, -1049583, 1043140, -1348620, 238908, -4756677, 1280974, 355945, -731218, -2660732,
-986769, -2358474, -25770, 731218, -377957, -1557463, 81604, -1564442, 5850819, 4332549,
-1747515, -704375, -369904, -1697049, 158377, -696322, 3795141, -1278827, -358093, 3451543,
-956167, 1410897, 2702608, -1851668, -827318, 2559264, 1724429, -796716, -257698, -18791556,
-10087804, -2531346, 3687230, -5536213, -3088618, 7958038, -9207873, 8944269, -5586679, -10648298,
-4794257, -5721434, 22731652, 3419331, -8012262, -11034308, -2037962, -13692893, -6359773, -14751065,
--923955, 9916006, -7063611, 6128919, 9920838, -9217000, -26307, -10763725, 5996311, 2159832,
--457414, 6390375, -6793565, -9651328, -8239895, 588411, 1760400, 8158827, -11775727, 8363375,
-1565516, -17267916, -9583146, -13932874, -5801964, 5330055, -4776004, -4633196, -26640072, -528818,
--5906654, -2408403, -17115982, -5909338, -2328946, 1344325, 13821742, 12690018, 10640781, 6190659,
-13319230, -14397267, 11162083, 1585917, 5163088, 3802657, -10380399, 16044924, 9853192, 6342593,
--7121056, -9433359, -6886980, 9324374, 989990, 64425, 4956929, 2455111, 5215701, -4640712,
-13996225, 7420093, -1591822, -2273648, 3075734, 2865817, 1635309, -818728, -942745, 1332514,
--306016, -222801, -5918465, 368830, -3456912, 236223, 1770063, 671626, -440234, 54761,
-1068373, 1043140, -5639292, -1445257, 1876364, -1581085, -2259153, -105227, 653909, 943282,
-984621, -777389, -1243930, 993748, -2517388, -4086125, -1138166, -988379, -1443646, 797253,
--421444, 3712999, 1621350, -1440962, 1515587, -820876, 7124814, 13223131, 14324253, 5861020,
-10020696, 8119099, 4846334, -2623151, 1069984, -3912178, 330176, -1351841, -8662412, 11023034,
-17486422, 6968585, -4791036, 7836705, 7447474, -310311, 4622996, -8257612, -15911780, -10589779,
--7247221, 4594542, -1933272, -8320426, 6205154, -2867428, -7443715, -104690, 12879533, 6482180,
-9540196, 3330747, 7021198, 7793218, -1795833, 7135552, -2789581, -8192650, 3442416, -9485972,
-3526168, 3749507, -13933411, -9066676, 5702643, 14409615, -7487739, 10034654, 14026826, -11624866,
-471373, 12774843, 1376000, -4701916, -1086090, -6590628, -11482058, 111669, -3492345, -6048925,
-7873212, 364535, -13143674, 16796006, -6968585, 13614509, -16164109, -11077794, 7870528, -9968082,
-5465346, -6717866, -4895726, -9368934, -5738613, -7636989, -19086298, 3095598, 11610907, -5424544,
--903017, 8025147, 8573292, 6063957, -1249299, -755377, -4990752, -1609539, -2225867, -2649458,
-1988570, -592169, -1877438, 2720862, 2455648, -1270774, -326954, -3496104, 1414118, -3089692,
--5549635, -475131, 5013838, -52613, -2949569, -858993, 8333847, 4115116, 191663, -2638184,
--3159485, -2347200, 409096, 464930, -2674154, -1080721, -11811, 872415, 3245385, 678068,
-5182952, 3053185, 3676492, 1315334, 1577327, -921271, 420907, -12042015, 7776039, -5239860,
--12796855, 18496814, 9699647, -13150653, 9432822, 8324184, 2611877, 15580531, -31925028, 2246268,
-13374528, 4464082, 1372779, 13937169, 738198, 7598334, -18377092, -2576444, 5250598, 163746,
--9099962, 3552475, 7669201, 3541738, 3737695, 9824201, 8434242, 13079786, 10538776, -4132296,
--4025458, 10103911, -6058052, 7064685, -11323144, -6339372, -14542759, -6796786, 8342437, 2763812,
--3195456, 12048457, -14177687, -19510962, -31252866, 9687299, 11077794, 8435853, 6863358, -7504919,
-5213554, -4391604, 12095165, 31657130, -4734128, -6782290, -13601625, -4473209, 12097312, -8193724,
-7022272, 11612518, 2119566, -355409, -9012989, -2765422, 4580583, -22092774, -20109036, 1941862,
-2956548, -7908646, 11359115, 8417062, 16259672, 25884694, 10559714, -6147709, -2960306, 5374078,
-60666, -14452565, 7020661, 5899138, 5325760, 1578937, 6884296, -397821, 3903589, 2949569,
-2267743, -3394098, 474057, -474057, -243203, 5175436, 1784022, -233002, 2985002, -5849746,
-1836635, 862752, -510027, 5447629, 1322313, -1808718, -743029, -3641596, 10169409, 486942,
-1922535, 4000762, -1252520, -1670205, 5822365, -6262599, 5792837, -4633733, 4840428, -505196,
--172872, -1270774, 2104534, -1130650, 4998268, -4128001, -1389959, 1261647, -651224, -1555852,
--2774549, 3268470, 47640316, 26867168, 17199734, -4437775, -4800700, -636192, -4005057, -4940823,
--7332583, -8938901, -15220290, 632971, -1028108, 3688303, 6710887, 12645457, 19242528, -2605972,
--24914032, -9801115, 21481278, -3380676, 8083666, -2814814, -307090, 14236206, 4997195, 10801306,
-6431177, -486405, -590021, -239981, 7262253, 9170292, -3519189, -14101988, 18471580, 13159780,
-9431748, 3412889, 4832375, -7515119, -13881334, 19160922, 10769630, 4904853, -8851391, -9946607,
--13849122, -8600672, -2415382, -8736500, 4876936, -17826798, 2518462, 13090523, -8482024, 4592931,
-853625, 1886028, -20245938, 7157026, -8659728, 14775761, -32551020, 5557151, -8462696, -11050951,
-2760053, -6684043, 6768332, 6319508, -21184926, 192200, 14914274, 2182380, 4417374, 9303973,
-3874597, 15457587, 6383395, 3239479, 1100049, -2285996, 10043244, -19756850, -313533, -1189706,
--1748052, 738198, -505196, -188442, -1654099, -2939368, -3730716, 6097780, 5199595, -2735357,
--379031, -9479530, 988379, -627065, -9258339, -80531, -13762149, -10540387, 4719096, 1723356,
-7337415, -8250096, 3591667, 7118909, 1640141, -343597, 1916629, 3800509, 384400, -2095407,
-7638063, 19864, 2525978, -4482872, -3279745, 3118146, 4603131, 769336, -29209536, -15059766,
-2196339, -25735980, 5928666, 18619220, -8943733, 22640920, 26633630, 3349001, 13322989, 16370268,
-7389491, -15777025, 10304163, 12482786, -584116, 3128347, 8863739, 7773891, 18804978, 3167002,
--7205882, 11949136, 4329327, -1901597, 303869, 7997766, -10943040, -5001490, -4613869, 6665789,
-3506304, -15516643, 4600447, 12889197, 374199, 15542413, -14709726, -27882390, 2253784, 12452184,
-18918258, 17480516, 9071508, 8272644, 6688875, -18960670, -5509370, -834834, 14221174, 22397718,
--7729331, 4789426, -8233453, 5263483, 3595425, 13615583, 21182242, -8201777, -9245454, -1889249,
-11616813, 14842870, 20876226, 465467, -22510998, -21301964, -3445101, 2702608, 90731, -9792525,
-243739, -25675852, -16518981, -15193447, -17216914, 7299297, 2667175, 20598664, 16522739, 6172405,
--9850507, -9904195, -9156333, -8383240, -14300630, 6705518, 4505958, 2600066, 9650255, 10657961,
-79994, 9085466, 1895691, 9705015, -3375844, 8040179, -2568927, -785442, 2419677, -3026878,
-13553306, 6045167, 8053064, 3580929, 9654013, 2105071, 4636954, 13771276, 12002286, 6366752,
--758599, -5356361, -4532801, -9833864, -5480379, -6474663, -3821984, -5975374, -7167764, -4205847,
-4187056, 9159555, 2565169, -2215130, 344134, -1420024, 5761699, 6751689, 5651640, -654983,
-2542621, 12390444, -27371826, 2492155, -5495948, 15001247, -8060043, -1233729, 4600984, 11364483,
--15300821, -25682294, -4502200, -10058277, 679679, -11586211, 6786049, 6749541, 629750, -13856101,
-8610873, 871342, 23111756, -3695283, 12634183, -10700374, 23867670, 6898255, 14874545, 10024991,
-16231218, 23947664, -5893769, 9292162, -16813724, 17666812, 17116518, -399969, 5520644, 17299054,
--11138461, -10702522, -1830730, 34827888, 5596880, -9746355, 17229262, 2257005, 13196287, 19064286,
-5490042, -1299228, 1722819, 2965675, 12510703, -4415764, 13420162, -9330280, 13096429, -7307350,
-29655138, -4336843, 25487946, -23210004, -25553982, 35423816, -29761976, -15900506, 1104880, -9579925,
--18513456, 16170015, -2258079, -22859426, -10907069, -11754789, -33695628, -12486007, 4036733, 7520488,
--26026964, -6650757, 15610059, -3172907, 8914741, 15477988, -11202885, -2564632, 2403571, 10090489,
-7143605, 7603166, -2644626, -1503239, 6132140, -585726, -4310537, 3402151, 7084012, 1329292,
-4875862, -192737, -4812511, -57445, 6509023, 2471217, -3560528, -8433168, -5233418, 9780714,
--4687420, -13261785, 2971581, -7633768, -14564234, -41339, 5236102, 456340, -3913789, -1118839,
-3763465, -3068217, -2684, 5119064, -481036, -2462090, -3299072, 9269613, 17690434, 922344,
--6514392, -5284958, -3132642, -8503498, -2034204, -3595961, 3519189, -22922240, -15318538, 4492536,
--30008400, -17469242, -20848308, -21173116, 25856776, -594316, 901943, 7748121, -7520488, -32934346,
--24656334, -24111946, -49260052, 3626563, 5630166, 21368536, 12488691, 7456600, 10673531, 7452842,
-2356327, -15472083, -22803056, -13075491, 17830020, -2151779, -13303124, -5297306, 17478370, -20940114,
--13500156, -21507048, -10660646, -1730872, -20645908, 7837242, -17121888, 18760954, 13175349, -2761127,
-13005698, -12542378, -25947508, 11531987, 15329812, -13309030, -29779692, 22689238, -1803886, 16480863,
-13856101, -42621644, -30243012, 455803, -6779069, 28031104, -15810311, -18293340, -4786204, 10458782,
-1755031, -2387465, -9513353, 37184216, -17951890, -29926796, -40531068, 29415158, -6766184, -33333242,
-15848429, 16124918, 9663676, 33935072, 36308044, 37260988, 16095927, -8177081, -3149822, -5510980,
-12560095, -23468776, 15511811, 3152506, 3260417, 11807402, 11468100, -9529996, 14614163, -10975252,
-5089000, -15687905, -8775692, -5927592, -7943005, -3020973, -8571144, -1937030, 6472516, 17023102,
-19832012, 1103270, 15647103, -8844411, 2594697, 9328669, 1604707, -16646756, 2482491, 4466229,
--4283693, -12276627, -7637526, -7423314, 20648056, 12918188, 6994891, 9859097, 17519172, -2341831,
--19836306, -12412455, -11183021, -14226542, -18364206, 3695819, -15301895, -27330488, -6254010, -5621039,
-4532264, -27398134, -10439455, 12259984, 20846160, 41420128, 7179575, 21497386, 10918881, 10194105,
--9203041, -3411278, -7800198, -23272818, -26600344, -38160784, -13441637, -34416108, -13071196, -18191870,
--6344741, 17930952, 4809827, 12082817, 21829708, -340913, 14845554, 3856881, 1044751, -868657,
--2541010, -29105382, 10756209, -3964792, -32166620, -20478404, 9774272, -21211232, -7703561, 7201587,
-23853174, 28212030, 10233833, -6330782, 4218195, 18756122, 10524280, 3648038, -289373, -57013544,
--11146514, 12136504, 14642617, 5342403, -1898376, -19487340, 13506062, -17429514, -12576738, -3750580,
-3736085, -9872519, -29987462, 15763067, -3619584, 37219648, 14559939, 12451110, 14705431, 27250494,
-62286152, 537945, 1298154, -3019362, -18240726, 10611254, -12586939, 44697724, -3786014, -16603270,
--14334453, 18644990, -24252070, -16950626, -3004867, 38165080, 1504849, 17984638, 28719372, 5327907,
-23286776, 17065516, -2988760, 15609522, 17591650, 141734, -11690901, -13246216, 3774740, 3965329,
-14777372, 8928700, -446677, -2631204, 2768107, 5487895, -10652056, -2712809, -2488934, -1875290,
--16815334, 10239739, -12165495, 3852586, -2349347, -7828115, 2196876, 20214264, 18220326, -426276,
--1085553, -13619341, -5252208, -13542032, -1835562, -15685757, -21585968, 5892695, 15132780, 561030,
-946503, 31472446, -4080219, 5537824, -34466576, -11952894, 40824200, -27289686, -7191923, -23662586,
--69057168, -10056129, 21425982, 17309792, 3543885, 4817880, -3568581, 38585988, -41646152, -258235,
--11871290, -28178744, -23507966, -3747896, 8105140, 6742562, 9516574, 24826522, 16412144, -17971754,
--17894444, 49604188, 40869836, -3508452, 4918275, -5703717, 13421236, -435402, 29207388, 10339597,
-15592342, 4106526, 2392834, -51775832, 21502754, -2464238, -29548302, -15364172, 3077344, -8250096,
--29410862, 28192702, -4889821, -21287468, -4271882, 2850248, 25336012, 27980102, 21592412, 8029978,
-25263534, 26610544, -20061792, -22312356, -13987098, -3862249, 26166014, 34578244, 6083285, 12300249,
-33509872, 19811610, -31208306, 22886270, 8527658, -7153268, 1341640, 63988032, -42436424, 32481764,
-37592776, -38001332, -2111513, -24793236, -7820599, -54481660, 15692200, 23710904, -32556388, 19426138,
--28161564, -20681878, 24780888, -15662672, -2201708, -9532680, 1271310, -13859859, 4248260, 5967857,
--10223633, -14838038, -1082332, -16094853, 20747376, 3412889, -19389092, 3940096, -3225521, -10875394,
--10168335, 6362994, 13223131, 16232829, 6812355, -15231565, 38132332, -7387344, 3803194, -2813204,
--20175608, 7357279, 10996727, -10588705, 16242493, 3789772, 12120398, -3202435, -19552838, 6213207,
-29246580, -18847390, -27409944, -44365400, 8761196, -8487929, -14178761, -17938468, 9793599, -10883447,
--5180805, 29199336, -9170292, -1628330, -22961432, 1880122, 14544907, -32065688, -20323786, -19179714,
--9517648, 11681237, -43335684, -24050206, -62508956, 10874857, -714575, -15844671, -7042673, -9204115,
-13256417, 20061792, -22261352, 850940, -7829189, -7490423, -39089572, 8596914, 29849486, 7937637,
-22559316, 28452548, 25382720, -34176128, -10552198, -10306848, -16108275, 28792388, -29496762, -16930224,
-937914, 41802380, 9345312, -14642617, 42004780, -23645406, -22328462, 50244140, 47998408, 4668630,
-12161200, -13638132, -45650672, -13987635, 45816564, -22214644, 41518912, -14969035, -65569120, -17223892,
--30703648, 34971236, 244813, 7879118, 31230318, -4940286, 25740276, -33620468, -39762808, 30604864,
--8021925, -66823248, 41259604, -21223044, 11220065, 13641890, -23446226, 44467944, -30351998, 16190953,
--508417, 11915850, 44913008, -11316165, -14239964, 1865090, -9393630, -12077985, -10188736, 5259188,
-10079751, 2660195, -6473590, 5862631, -21432960, 19489488, 13474386, 11075110, 4270808, 366683,
--10030359, -10641318, -10433012, 9343164, 17544942, -16927540, 15214922, 35762044, 11903502, -30087856,
-2934000, 11403675, -11293617, -19754702, 18884434, -16676284, -389231, -1162862, -18163954, -23050552,
--243203, 13660680, -7761006, 30894774, -10246181, -19816980, 14103062, 11967926, 23112292, 1726577,
--41636488, 24561844, 28305446, -34397320, 18802830, -181999, -12460237, -14710263, -49646600, -21885006,
-17423608, 3156264, 45530948, -36558224, -20701206, 8586176, -5047661, 29232622, -40605696, 80531,
-4154307, -34264176, 34295312, 18854906, 10462003, -16037945, 23487028, -27753542, 15366856, 12010339,
-7229504, -1913408, -15530065, 6512781, 31207232, -16335908, -5966784, 6180458, -24422794, 25005300,
-991064, 6615860, -33461554, 18149994, 4457103, 6229313, -78541528, 10870025, -22298934, 36817532,
-30452392, 32373852, 16550120, -63805496, -11159936, 13799193, 1430224, 4348118, 45081052, -6604049,
--27020176, -32392106, 1396401, -36037460, -31635118, -27986544, 13626857, -52617108, 37579892, 71818832,
--18693846, -8470749, -55852828, -12068321, 21565030, 13375065, -18486076, -3674882, -67579160, -23629836,
-68140728, 29120416, -20946018, 20077362, -38248296, -28191092, 7669738, 1715839, 4777614, -25815974,
--8843338, -5231807, 176094, -37504728, 8331700, -4600447, -11614128, 5280126, 15820512, -20344186,
--10087268, -2954401, 7675644, -15549929, -3975529, -2430952, -14707042, 528281, -27450210, 36527088,
-11970611, -9165460, -3368328, -10313827, -1195612, 23582592, 7271380, -3935801, 12468827, -7170448,
--34172372, 1965484, 1930588, 7673496, 15671799, -8644159, -6120866, 15454366, 18568218, 8178692,
--16225850, -51269024, 13932874, -22482544, -15300284, 15573551, -12560095, -18030810, 14267344, -23707146,
--1460826, -27023934, 39017632, 684510, -28536300, -8425652, 644245, -2869575, 9061844, -19058380,
--13218299, 4278325, 7841537, 4578972, 3801046, 14810121, -17191144, -6587406, -39505648, 14650670,
-3647501, -12054363, 28458990, 15598784, -11754789, 43650288, 9596031, -27425514, 20622822, 3593277,
-13379897, 28829432, -2798708, -7044283, 4373888, 23770496, 13276281, 563178, -2578591, 25432112,
--2420751, -29466696, -5280663, 5488432, 23118198, -10285910, 39927088, 44373456, -28347322, 23198728,
-49606872, -13389024, 75428216, 42773580, -19173808, -17149268, -28744068, -32179506, -18481244, 10164040,
--5895917, -5645735, -1256815, -4824322, -53134116, -20391968, -52467320, 12322261, 46523624, -17413408,
--3112241, -25356950, 12398497, 3265249, 8737037, 13161390, 38980048, -1834488, 17553532, 18352932,
--29777008, 1365263, -353798, 6544994, 12612171, -1564442, -7271917, 12371653, -2110440, -6678138,
-1254131, -12104828, -3237332, 9106941, 1380832, -5131949, -28533078, 1564442, -13321378, -945430,
--11281268, 23716272, -8244727, 11630771, 13871134, -11126113, 16802448, 11114302, -170188, -5961952,
--11134166, 2790655, -1584306, -6040872, -1454383, 11865384, -9432285, 5233955, -3658775, 8594230,
-66728224, 17685602, -23957864, 2723546, -31445066, -4060355, 10974178, -12981539, -16725676, -18547280,
--7087233, 7221988, -4138738, -5913633, 8457327, 4961761, 11476153, -11799886, -7473780, 8632884,
--3095598, 1604170, -17368848, 11851962, -20327006, 9831180, 6699612, -4295504, -916439, 830002,
--11796128, 2066416, 2402497, -9311489, 16989280, -9047349, 4115653, 188442, 596464, 8683887,
--8374113, -12932147, -3905199, 19734300, -14555644, 9721122, -26697516, -15782394, 5089000, -5669894,
--403190, -1656784, -16057272, 17170206, 13654775, 1355599, -11744051, -467615, -7125888, 3628711,
--8898098, -163746, -8535711, 6548215, -2323041, 1799591, 21659520, -18155364, -1506997, 3374234,
-1380295, -3834869, 579821, -8540006, 565862, -7134478, 4523138, 8667244, -13011603, -10731513,
-6354941, 954557, -3012920, -10215580, 4567698, 1530082, -340913, -2211371, 199179, -2232846,
-7327751, -4657355, -1218697, 3506304, -2299955, -238908, 5909875, -3717831, -2411087, -1330903,
-1369558, 6129992, -1893007, -6564321, 555661, -4168266, 15710990, -6117644, 2075006, 3722663,
--3783329, 12579422, -1607392, -10585484, 4040491, -5967857, 7840463, 3944928, -1509681, -471910,
--2654827, -2743410, 7767985, -4806606, -2065342, -616865, -6382322, 8702141, -32014150, -47329464,
-32984276, 151562960, 66400732, 69463576, -443992, -140291888, -101536248, -52824876, -110555680, 53674208,
-65971772, 34287260, 142995568, 64288680, -6190122, 47411072, -92502320, -117978456, -67315024, -82653960,
--17791366, 63887100, 65465504, 27396522, 109962976, 54550916, -7610145, 52865140, -48622252, -83513488,
--47840032, -62832688, -98535136, 36286032, -793495, -35416300, 106236016, 63903208, 36060008, 108657304,
-26369488, -55233816, 53630184, -78741248, -89627912, -18407156, -94270240, -95809984, 38001872, -15889232,
-23294828, 120698784, 82862808, 86045376, 81384800, 9805410, -45368276, -52679384, -87928184, -115650584,
--60450056, -32998770, -23736674, 44084080, 69021736, 64581276, 91729768, 82614768, -12550968, -14678588,
--14654965, -84959824, -25242596, -41880228, -62860604, 14037027, 26101054, 4112431, 59032176, 26160646,
-782221, 36742372, -28080496, -31283468, 1120987, -20360292, -6120866, 15292231, -2895882, 16987132,
-23080080, -12629351, 18223546, 7231651, -27258546, 2546379, -12837120, -52391620, -428960, -13360570,
--22001506, 50452980, 15469398, 18919330, 66676684, 26255136, 19824496, 14560476, -32525788, -48153564,
--44212932, -74928928, -60845728, -27301496, 2984466, 33668248, 77463496, 81564112, 75357888, 66368520,
-41458784, -16333761, -46511812, -93714040, -118250648, -91647088, -54499912, -19357954, 50539416, 92627416,
-106973136, 109150152, 53195856, -12895102, -35276712, -44001404, -56310244, -40934260, -41545756, -33894808,
--4146254, 10802916, 17840758, 29476360, 32159104, 29174640, 27214524, 15092515, 5302674, -2956011,
--12589623, -20225000, -17219060, -10948409, -3455301, -1072668, 845035, -561567, },
+-1191317, 726386, 7012071, -891743, -344134, -2033667, 7650411, 461709, 3710315, 2278480,
+2238215, -3151969, 1571421, -4888747, -552977, 3810173, 750546, 2235531, 3557307, -6040872,
+-4247186, 1449552, -322123, 4499515, 2712272, -224412, -2514703, -1560147, -3106335, -483184,
+-434865, -455267, 830539, 1181116, -2707440, 4507568, -1059246, -695785, 1513439, -5731097,
+-1349694, 2488397, 852014, 5667210, -47782, -409096, 1079111, 390842, 2329483, 3924526,
+4956929, -284005, -542240, 93952, -2895882, -3635690, 1980517, 3253975, -2311229, -2186138,
+-1508607, 4147865, 2411624, -568546, 615791, -4886599, -1438814, 2542621, 2076080, 3615826,
+-5287105, 1194001, 1956358, -1095754, 3674882, -238908, 3198677, 1537061, 1006096, 4097936,
+2000918, 1032940, -537, 481036, -1011465, 341450, 535260, -326418, -1491427, 716186,
+673773, -1082332, -186831, -732292, 725313, 1173600, 11274, -156766, -103079, -1099512,
+499290, -393526, 870805, 420907, 241055, 185757, -526670, 286689, 95563, 456340,
+-907312, -424665, -231391, 107374, 11616813, 3238405, -2698850, 5969468, -2916283, 6212670,
+-2084133, -2784213, 3114925, 5812702, -205085, -2823404, 1516660, 1248762, -263067, -8192113,
+1902671, 2447058, 635655, 5176510, 6895033, 3751654, 6790344, 4670777, 4129611, -1068373,
+4589173, 2261300, -3515431, 1350230, 2110440, -4460324, -5735392, -835908, 2235531, 132607,
+-2079838, -2720325, -2708514, -1290638, 3069291, 6227703, 5222680, 2023467, 4009352, -6444599,
+397284, -1607928, 51540, -7402376, 2752537, -666257, -1766842, -238908, -2031520, -3631932,
+-2596308, 2665564, 618475, 2057826, -2722473, 5137318, 1301912, -5832029, 2428267, 803159,
+1633698, 3282429, 976568, 5976984, -1889249, 707596, -6912213, 1373853, 667867, 258235,
+165893, -1240709, 4920959, -1442035, -2281702, 3793530, -3859565, -1822140, -1589675, -654446,
+-1794760, 1312113, 338229, 716723, -40802, -103616, 74625, -637803, 435939, 716186,
+-236760, -233002, -19327, -1208496, -2071248, 840740, 271657, -1574642, -200790, -108985,
+-340376, -1920387, 531502, 65498, -42413, 212601, 370441, 293132, -732292, 48855,
+-1349157, 647466, -2427194, -2303713, -836982, 2230699, -4057134, 1230508, -7945690, 1542430,
+1418950, -853088, 5560372, 420907, -694711, 570157, 2913062, -4765803, 622233, 1542430,
+3016678, -6806450, -3546569, -2529199, 2452426, 1093606, -2222646, -6878927, 1617055, -6842420,
+-489089, 2804077, -1345399, 2150705, -1258962, 4715337, 6833830, 3708704, -3636764, 732292,
+5163625, 3293166, -3299072, 2778844, 744103, -5318780, 1826972, 7460358, 3404299, 2543695,
+8185671, 803159, -3196530, -6250788, -340913, -3481071, -4315906, -1950989, 4472135, -4243428,
+1438277, -2507187, -2469606, 5351530, -757525, 940598, 4150549, 5807333, -2615098, -5208722,
+6644852, 5213017, 3221226, 376883, -4096862, 709207, 5237713, -5311801, 1573032, -3438658,
+-181462, 3347927, -3144453, -106837, -5992016, -1497870, -586263, 966905, -380105, -2176475,
+-332323, 1200443, -1815161, -386010, 747324, 746251, 443992, 556198, -155693, -364535,
+-2403571, 1325534, -193810, 1363652, -970663, -1471026, 479963, 1297617, -872415, 1154809,
+-250719, -1074, -163209, -171262, 1234803, -686658, 439697, -693637, -15617575, -5695664,
+-2417530, 8552354, -3254512, -1267552, -5058398, -4252018, -743029, -11236708, 6293738, 2100776,
+-332860, -4140349, 6197101, -1730872, 3141232, -2497524, 1979980, 3977677, -4959077, 541166,
+5448703, 3104725, 2188286, 5858873, 5212480, -3257196, -4189204, -5193153, -96100, -6833830,
+1627256, -9032316, -1742146, 6689949, 3498251, -2274185, -712965, -6788733, 3086471, -2889439,
+5996848, -3435437, -6169721, -1242319, -2546916, -5039071, 1955284, -1135482, -3229279, -3259343,
+-10922639, 1517734, -3279745, -8064338, -2157684, 5015448, 2553895, -4157528, 3452080, 4472672,
+4289062, 1622961, -5585068, -901943, -1242856, 3894999, -3925600, -1478006, 2033130, 2098629,
+-6111739, -7245610, -13069049, -2204392, -7591355, 2529736, -295279, -1780801, 3841312, -779000,
+-1749662, 1708860, 2619930, 2552284, 1957968, 4583267, -1942399, -1564979, -1228898, 704375,
+229244, -997506, 1254131, 1842541, -401043, 462246, -796180, -994822, -192200, -631897,
+188979, 436476, 54761, -1105417, 178778, -731218, -295279, 695248, 1467268, -608275,
+1757715, 2184528, 338229, -574452, -1857573, -328565, 1251983, 879395, -13560285, -5450314,
+-2414845, -4041027, 4637491, 6020471, 5710696, -11357504, -8449811, 3240553, 13828184, 8145943,
+7516, 1945083, 3948686, -4986994, 3289945, -4625680, 3335579, 4883915, 768799, 3914326,
+1239098, -299574, 2052994, 1187559, -3694209, -4715337, 6489159, 2602213, -4725001, 4615479,
+-2574833, -505196, 11147051, -5345087, 6312528, 12428562, 5087389, -738734, 483184, -4520453,
+5826660, -5977521, -3250753, -10028749, 1885491, 7682623, -193274, -7108171, -2523293, -10065793,
+-5097590, -1894081, -14276471, -7798587, -1414655, 1481764, -6254010, 3134789, -1661616, -4966593,
+5337034, 15745887, 1460289, 8009577, 5448703, 4695473, -5004711, 2066416, -8521752, 874026,
+2435783, 1873143, -3318936, 41339, -8655433, -3046743, -3046743, -650688, 4184372, 4464619,
+-218506, 1715303, 2430415, -1273995, -963683, -834297, 788663, 62277, 584116, 433792,
+1357747, -770410, -70330, -2112587, -280784, -361851, 1454920, 806917, -936840, -1292248,
+-1236414, -1216550, -425202, -1485522, 487479, 2619930, -2137820, -316217, 878321, 1471026,
+21109228, 13502840, -7392713, 2820183, 6726993, -2718178, 3807489, -1227824, 6267968, 3288871,
+1938104, 5874979, 3166465, 2955474, -1901597, -14095009, 6694781, -2320356, -3331284, 11200201,
+6771553, 3933653, 5019743, 3898757, 2724083, -2076080, 1543504, 547608, -3735011, 3031173,
+4700842, -7909719, 1430761, -5085778, 3727495, 4527970, -12618077, -110595, -14996952, 351114,
+1757715, 1358820, 3962107, 10255308, -1346472, -5172215, -2685428, -2733210, -4021163, 3018825,
+3045132, 1076963, -1758252, -1733556, 9769440, -3183108, -2081985, -5298916, 8665097, -1240172,
+7264401, -3377992, 7770133, -7495792, -16062104, -4650913, 889595, 3320547, 5283347, -5280126,
+-4112431, 2277943, 1327682, -2399276, -4272956, 10064719, -4016331, 9578851, 2393371, 6794639,
+2525978, 4974646, 4002910, -1626182, -761820, 2008971, -399969, 5265093, 15032, -1625645,
+352724, -5712844, -1270237, -1254667, 281320, -1851131, -865973, -565325, -261993, -581431,
+-3168075, -2381559, 613643, 297963, -3542811, -118112, 375273, 590558, 1264331, 679679,
+3229279, 236760, -1266479, -49392, -590021, -1470489, -1971927, -639950, 9893457, -3760781,
+-6628745, -274341, 1014149, -9398999, -7407208, -2323577, 2527588, -1381906, 12202002, 7368017,
+283468, 11708618, 4173635, 3438658, -10061498, 9415642, -1803886, -2343442, -8496519, -3803731,
+7452305, 7419019, -2162516, 4923107, -10212895, -1419487, 6770479, 5146445, -3854733, -7208566,
+-4110284, -4453881, -5626407, -4628901, 1048509, -7581154, -796716, 10481868, -5112622, 1210644,
+-464930, -2413235, 4016331, -1673964, 6776922, 5369, 9585293, -2485176, -6162741, 3487514,
+-4887136, -4773320, -4889284, -13723494, 1510755, 5667210, 8082592, 5874979, 10646150, -1113470,
+-4214437, 6187974, -7714835, 1757715, 1087701, -1162862, 6860674, 6469832, -1765768, -8304320,
+1559610, -4300336, -7988639, -7333657, 3929895, 7059853, 4336843, -15348603, 3350611, 1606855,
+-868657, 7202124, 3794604, 5887327, 2128693, -603443, 7650948, 1013075, 3413425, 2788508,
+498753, -3518115, 451508, -1977296, -4387309, 777389, 1175747, 1990181, -634045, 513785,
+353798, 338229, 1392643, 949725, 919123, -202400, -2827699, 1865090, -1224066, -1255204,
+-1151051, -1964948, 3380676, 3933116, 3236258, 1314797, 228170, 529892, -958315, 2574296,
+-12070469, -7066295, 1275068, -6895033, -17866528, 13540958, -295816, -887448, 1716376, 1072668,
+-11815992, 8268349, -12318503, 1102196, 5639292, -1616518, 2057826, 1992865, -13251585, -4457639,
+-5900212, -1220845, 2729452, -4349728, -2755222, -530428, -768262, 1222992, 5560909, 2979634,
+11944304, -4320200, 16390669, -1137093, 462246, -10697690, -1570347, 7968775, -1560684, -16458315,
+6671695, 7667054, -4878009, 4061429, -6128919, 11424076, 6339909, -313533, -645856, -7313793,
+-4645544, -8004746, 7536057, 7419019, 3287798, 855772, 3413425, -6451041, -16962436, -6204081,
+5993627, 2622078, -12568148, 329639, 1531156, 1737314, -6003291, 4348118, 9001715, 4635344,
+235686, 3637301, 6213744, -3468186, 9229348, 154082, -184684, -9081708, -11548630, 7468412,
+-3474629, 3707631, 3839701, -627602, -2417530, -2541010, -1868848, 1183800, -2780991, 3763465,
+952409, -1049583, 1043140, -1348620, 238908, -4756677, 1280974, 355945, -731218, -2660732,
+986769, -2358474, -25770, 731218, -377957, -1557463, 81604, -1564442, 5850819, 4332549,
+1747515, -704375, -369904, -1697049, 158377, -696322, 3795141, -1278827, -358093, 3451543,
+956167, 1410897, 2702608, -1851668, -827318, 2559264, 1724429, -796716, -257698, -18791556,
+10087804, -2531346, 3687230, -5536213, -3088618, 7958038, -9207873, 8944269, -5586679, -10648298,
+4794257, -5721434, 22731652, 3419331, -8012262, -11034308, -2037962, -13692893, -6359773, -14751065,
+-923955, 9916006, -7063611, 6128919, 9920838, -9217000, -26307, -10763725, 5996311, 2159832,
+-457414, 6390375, -6793565, -9651328, -8239895, 588411, 1760400, 8158827, -11775727, 8363375,
+1565516, -17267916, -9583146, -13932874, -5801964, 5330055, -4776004, -4633196, -26640072, -528818,
+-5906654, -2408403, -17115982, -5909338, -2328946, 1344325, 13821742, 12690018, 10640781, 6190659,
+13319230, -14397267, 11162083, 1585917, 5163088, 3802657, -10380399, 16044924, 9853192, 6342593,
+-7121056, -9433359, -6886980, 9324374, 989990, 64425, 4956929, 2455111, 5215701, -4640712,
+13996225, 7420093, -1591822, -2273648, 3075734, 2865817, 1635309, -818728, -942745, 1332514,
+-306016, -222801, -5918465, 368830, -3456912, 236223, 1770063, 671626, -440234, 54761,
+1068373, 1043140, -5639292, -1445257, 1876364, -1581085, -2259153, -105227, 653909, 943282,
+984621, -777389, -1243930, 993748, -2517388, -4086125, -1138166, -988379, -1443646, 797253,
+-421444, 3712999, 1621350, -1440962, 1515587, -820876, 7124814, 13223131, 14324253, 5861020,
+10020696, 8119099, 4846334, -2623151, 1069984, -3912178, 330176, -1351841, -8662412, 11023034,
+17486422, 6968585, -4791036, 7836705, 7447474, -310311, 4622996, -8257612, -15911780, -10589779,
+-7247221, 4594542, -1933272, -8320426, 6205154, -2867428, -7443715, -104690, 12879533, 6482180,
+9540196, 3330747, 7021198, 7793218, -1795833, 7135552, -2789581, -8192650, 3442416, -9485972,
+3526168, 3749507, -13933411, -9066676, 5702643, 14409615, -7487739, 10034654, 14026826, -11624866,
+471373, 12774843, 1376000, -4701916, -1086090, -6590628, -11482058, 111669, -3492345, -6048925,
+7873212, 364535, -13143674, 16796006, -6968585, 13614509, -16164109, -11077794, 7870528, -9968082,
+5465346, -6717866, -4895726, -9368934, -5738613, -7636989, -19086298, 3095598, 11610907, -5424544,
+-903017, 8025147, 8573292, 6063957, -1249299, -755377, -4990752, -1609539, -2225867, -2649458,
+1988570, -592169, -1877438, 2720862, 2455648, -1270774, -326954, -3496104, 1414118, -3089692,
+-5549635, -475131, 5013838, -52613, -2949569, -858993, 8333847, 4115116, 191663, -2638184,
+-3159485, -2347200, 409096, 464930, -2674154, -1080721, -11811, 872415, 3245385, 678068,
+5182952, 3053185, 3676492, 1315334, 1577327, -921271, 420907, -12042015, 7776039, -5239860,
+-12796855, 18496814, 9699647, -13150653, 9432822, 8324184, 2611877, 15580531, -31925028, 2246268,
+13374528, 4464082, 1372779, 13937169, 738198, 7598334, -18377092, -2576444, 5250598, 163746,
+-9099962, 3552475, 7669201, 3541738, 3737695, 9824201, 8434242, 13079786, 10538776, -4132296,
+-4025458, 10103911, -6058052, 7064685, -11323144, -6339372, -14542759, -6796786, 8342437, 2763812,
+-3195456, 12048457, -14177687, -19510962, -31252866, 9687299, 11077794, 8435853, 6863358, -7504919,
+5213554, -4391604, 12095165, 31657130, -4734128, -6782290, -13601625, -4473209, 12097312, -8193724,
+7022272, 11612518, 2119566, -355409, -9012989, -2765422, 4580583, -22092774, -20109036, 1941862,
+2956548, -7908646, 11359115, 8417062, 16259672, 25884694, 10559714, -6147709, -2960306, 5374078,
+60666, -14452565, 7020661, 5899138, 5325760, 1578937, 6884296, -397821, 3903589, 2949569,
+2267743, -3394098, 474057, -474057, -243203, 5175436, 1784022, -233002, 2985002, -5849746,
+1836635, 862752, -510027, 5447629, 1322313, -1808718, -743029, -3641596, 10169409, 486942,
+1922535, 4000762, -1252520, -1670205, 5822365, -6262599, 5792837, -4633733, 4840428, -505196,
+-172872, -1270774, 2104534, -1130650, 4998268, -4128001, -1389959, 1261647, -651224, -1555852,
+-2774549, 3268470, 47640316, 26867168, 17199734, -4437775, -4800700, -636192, -4005057, -4940823,
+-7332583, -8938901, -15220290, 632971, -1028108, 3688303, 6710887, 12645457, 19242528, -2605972,
+-24914032, -9801115, 21481278, -3380676, 8083666, -2814814, -307090, 14236206, 4997195, 10801306,
+6431177, -486405, -590021, -239981, 7262253, 9170292, -3519189, -14101988, 18471580, 13159780,
+9431748, 3412889, 4832375, -7515119, -13881334, 19160922, 10769630, 4904853, -8851391, -9946607,
+-13849122, -8600672, -2415382, -8736500, 4876936, -17826798, 2518462, 13090523, -8482024, 4592931,
+853625, 1886028, -20245938, 7157026, -8659728, 14775761, -32551020, 5557151, -8462696, -11050951,
+2760053, -6684043, 6768332, 6319508, -21184926, 192200, 14914274, 2182380, 4417374, 9303973,
+3874597, 15457587, 6383395, 3239479, 1100049, -2285996, 10043244, -19756850, -313533, -1189706,
+-1748052, 738198, -505196, -188442, -1654099, -2939368, -3730716, 6097780, 5199595, -2735357,
+-379031, -9479530, 988379, -627065, -9258339, -80531, -13762149, -10540387, 4719096, 1723356,
+7337415, -8250096, 3591667, 7118909, 1640141, -343597, 1916629, 3800509, 384400, -2095407,
+7638063, 19864, 2525978, -4482872, -3279745, 3118146, 4603131, 769336, -29209536, -15059766,
+2196339, -25735980, 5928666, 18619220, -8943733, 22640920, 26633630, 3349001, 13322989, 16370268,
+7389491, -15777025, 10304163, 12482786, -584116, 3128347, 8863739, 7773891, 18804978, 3167002,
+-7205882, 11949136, 4329327, -1901597, 303869, 7997766, -10943040, -5001490, -4613869, 6665789,
+3506304, -15516643, 4600447, 12889197, 374199, 15542413, -14709726, -27882390, 2253784, 12452184,
+18918258, 17480516, 9071508, 8272644, 6688875, -18960670, -5509370, -834834, 14221174, 22397718,
+-7729331, 4789426, -8233453, 5263483, 3595425, 13615583, 21182242, -8201777, -9245454, -1889249,
+11616813, 14842870, 20876226, 465467, -22510998, -21301964, -3445101, 2702608, 90731, -9792525,
+243739, -25675852, -16518981, -15193447, -17216914, 7299297, 2667175, 20598664, 16522739, 6172405,
+-9850507, -9904195, -9156333, -8383240, -14300630, 6705518, 4505958, 2600066, 9650255, 10657961,
+79994, 9085466, 1895691, 9705015, -3375844, 8040179, -2568927, -785442, 2419677, -3026878,
+13553306, 6045167, 8053064, 3580929, 9654013, 2105071, 4636954, 13771276, 12002286, 6366752,
+-758599, -5356361, -4532801, -9833864, -5480379, -6474663, -3821984, -5975374, -7167764, -4205847,
+4187056, 9159555, 2565169, -2215130, 344134, -1420024, 5761699, 6751689, 5651640, -654983,
+2542621, 12390444, -27371826, 2492155, -5495948, 15001247, -8060043, -1233729, 4600984, 11364483,
+-15300821, -25682294, -4502200, -10058277, 679679, -11586211, 6786049, 6749541, 629750, -13856101,
+8610873, 871342, 23111756, -3695283, 12634183, -10700374, 23867670, 6898255, 14874545, 10024991,
+16231218, 23947664, -5893769, 9292162, -16813724, 17666812, 17116518, -399969, 5520644, 17299054,
+-11138461, -10702522, -1830730, 34827888, 5596880, -9746355, 17229262, 2257005, 13196287, 19064286,
+5490042, -1299228, 1722819, 2965675, 12510703, -4415764, 13420162, -9330280, 13096429, -7307350,
+29655138, -4336843, 25487946, -23210004, -25553982, 35423816, -29761976, -15900506, 1104880, -9579925,
+-18513456, 16170015, -2258079, -22859426, -10907069, -11754789, -33695628, -12486007, 4036733, 7520488,
+-26026964, -6650757, 15610059, -3172907, 8914741, 15477988, -11202885, -2564632, 2403571, 10090489,
+7143605, 7603166, -2644626, -1503239, 6132140, -585726, -4310537, 3402151, 7084012, 1329292,
+4875862, -192737, -4812511, -57445, 6509023, 2471217, -3560528, -8433168, -5233418, 9780714,
+-4687420, -13261785, 2971581, -7633768, -14564234, -41339, 5236102, 456340, -3913789, -1118839,
+3763465, -3068217, -2684, 5119064, -481036, -2462090, -3299072, 9269613, 17690434, 922344,
+-6514392, -5284958, -3132642, -8503498, -2034204, -3595961, 3519189, -22922240, -15318538, 4492536,
+-30008400, -17469242, -20848308, -21173116, 25856776, -594316, 901943, 7748121, -7520488, -32934346,
+-24656334, -24111946, -49260052, 3626563, 5630166, 21368536, 12488691, 7456600, 10673531, 7452842,
+2356327, -15472083, -22803056, -13075491, 17830020, -2151779, -13303124, -5297306, 17478370, -20940114,
+-13500156, -21507048, -10660646, -1730872, -20645908, 7837242, -17121888, 18760954, 13175349, -2761127,
+13005698, -12542378, -25947508, 11531987, 15329812, -13309030, -29779692, 22689238, -1803886, 16480863,
+13856101, -42621644, -30243012, 455803, -6779069, 28031104, -15810311, -18293340, -4786204, 10458782,
+1755031, -2387465, -9513353, 37184216, -17951890, -29926796, -40531068, 29415158, -6766184, -33333242,
+15848429, 16124918, 9663676, 33935072, 36308044, 37260988, 16095927, -8177081, -3149822, -5510980,
+12560095, -23468776, 15511811, 3152506, 3260417, 11807402, 11468100, -9529996, 14614163, -10975252,
+5089000, -15687905, -8775692, -5927592, -7943005, -3020973, -8571144, -1937030, 6472516, 17023102,
+19832012, 1103270, 15647103, -8844411, 2594697, 9328669, 1604707, -16646756, 2482491, 4466229,
+-4283693, -12276627, -7637526, -7423314, 20648056, 12918188, 6994891, 9859097, 17519172, -2341831,
+-19836306, -12412455, -11183021, -14226542, -18364206, 3695819, -15301895, -27330488, -6254010, -5621039,
+4532264, -27398134, -10439455, 12259984, 20846160, 41420128, 7179575, 21497386, 10918881, 10194105,
+-9203041, -3411278, -7800198, -23272818, -26600344, -38160784, -13441637, -34416108, -13071196, -18191870,
+-6344741, 17930952, 4809827, 12082817, 21829708, -340913, 14845554, 3856881, 1044751, -868657,
+-2541010, -29105382, 10756209, -3964792, -32166620, -20478404, 9774272, -21211232, -7703561, 7201587,
+23853174, 28212030, 10233833, -6330782, 4218195, 18756122, 10524280, 3648038, -289373, -57013544,
+-11146514, 12136504, 14642617, 5342403, -1898376, -19487340, 13506062, -17429514, -12576738, -3750580,
+3736085, -9872519, -29987462, 15763067, -3619584, 37219648, 14559939, 12451110, 14705431, 27250494,
+62286152, 537945, 1298154, -3019362, -18240726, 10611254, -12586939, 44697724, -3786014, -16603270,
+-14334453, 18644990, -24252070, -16950626, -3004867, 38165080, 1504849, 17984638, 28719372, 5327907,
+23286776, 17065516, -2988760, 15609522, 17591650, 141734, -11690901, -13246216, 3774740, 3965329,
+14777372, 8928700, -446677, -2631204, 2768107, 5487895, -10652056, -2712809, -2488934, -1875290,
+-16815334, 10239739, -12165495, 3852586, -2349347, -7828115, 2196876, 20214264, 18220326, -426276,
+-1085553, -13619341, -5252208, -13542032, -1835562, -15685757, -21585968, 5892695, 15132780, 561030,
+946503, 31472446, -4080219, 5537824, -34466576, -11952894, 40824200, -27289686, -7191923, -23662586,
+-69057168, -10056129, 21425982, 17309792, 3543885, 4817880, -3568581, 38585988, -41646152, -258235,
+-11871290, -28178744, -23507966, -3747896, 8105140, 6742562, 9516574, 24826522, 16412144, -17971754,
+-17894444, 49604188, 40869836, -3508452, 4918275, -5703717, 13421236, -435402, 29207388, 10339597,
+15592342, 4106526, 2392834, -51775832, 21502754, -2464238, -29548302, -15364172, 3077344, -8250096,
+-29410862, 28192702, -4889821, -21287468, -4271882, 2850248, 25336012, 27980102, 21592412, 8029978,
+25263534, 26610544, -20061792, -22312356, -13987098, -3862249, 26166014, 34578244, 6083285, 12300249,
+33509872, 19811610, -31208306, 22886270, 8527658, -7153268, 1341640, 63988032, -42436424, 32481764,
+37592776, -38001332, -2111513, -24793236, -7820599, -54481660, 15692200, 23710904, -32556388, 19426138,
+-28161564, -20681878, 24780888, -15662672, -2201708, -9532680, 1271310, -13859859, 4248260, 5967857,
+-10223633, -14838038, -1082332, -16094853, 20747376, 3412889, -19389092, 3940096, -3225521, -10875394,
+-10168335, 6362994, 13223131, 16232829, 6812355, -15231565, 38132332, -7387344, 3803194, -2813204,
+-20175608, 7357279, 10996727, -10588705, 16242493, 3789772, 12120398, -3202435, -19552838, 6213207,
+29246580, -18847390, -27409944, -44365400, 8761196, -8487929, -14178761, -17938468, 9793599, -10883447,
+-5180805, 29199336, -9170292, -1628330, -22961432, 1880122, 14544907, -32065688, -20323786, -19179714,
+-9517648, 11681237, -43335684, -24050206, -62508956, 10874857, -714575, -15844671, -7042673, -9204115,
+13256417, 20061792, -22261352, 850940, -7829189, -7490423, -39089572, 8596914, 29849486, 7937637,
+22559316, 28452548, 25382720, -34176128, -10552198, -10306848, -16108275, 28792388, -29496762, -16930224,
+937914, 41802380, 9345312, -14642617, 42004780, -23645406, -22328462, 50244140, 47998408, 4668630,
+12161200, -13638132, -45650672, -13987635, 45816564, -22214644, 41518912, -14969035, -65569120, -17223892,
+-30703648, 34971236, 244813, 7879118, 31230318, -4940286, 25740276, -33620468, -39762808, 30604864,
+-8021925, -66823248, 41259604, -21223044, 11220065, 13641890, -23446226, 44467944, -30351998, 16190953,
+-508417, 11915850, 44913008, -11316165, -14239964, 1865090, -9393630, -12077985, -10188736, 5259188,
+10079751, 2660195, -6473590, 5862631, -21432960, 19489488, 13474386, 11075110, 4270808, 366683,
+-10030359, -10641318, -10433012, 9343164, 17544942, -16927540, 15214922, 35762044, 11903502, -30087856,
+2934000, 11403675, -11293617, -19754702, 18884434, -16676284, -389231, -1162862, -18163954, -23050552,
+-243203, 13660680, -7761006, 30894774, -10246181, -19816980, 14103062, 11967926, 23112292, 1726577,
+-41636488, 24561844, 28305446, -34397320, 18802830, -181999, -12460237, -14710263, -49646600, -21885006,
+17423608, 3156264, 45530948, -36558224, -20701206, 8586176, -5047661, 29232622, -40605696, 80531,
+4154307, -34264176, 34295312, 18854906, 10462003, -16037945, 23487028, -27753542, 15366856, 12010339,
+7229504, -1913408, -15530065, 6512781, 31207232, -16335908, -5966784, 6180458, -24422794, 25005300,
+991064, 6615860, -33461554, 18149994, 4457103, 6229313, -78541528, 10870025, -22298934, 36817532,
+30452392, 32373852, 16550120, -63805496, -11159936, 13799193, 1430224, 4348118, 45081052, -6604049,
+-27020176, -32392106, 1396401, -36037460, -31635118, -27986544, 13626857, -52617108, 37579892, 71818832,
+-18693846, -8470749, -55852828, -12068321, 21565030, 13375065, -18486076, -3674882, -67579160, -23629836,
+68140728, 29120416, -20946018, 20077362, -38248296, -28191092, 7669738, 1715839, 4777614, -25815974,
+-8843338, -5231807, 176094, -37504728, 8331700, -4600447, -11614128, 5280126, 15820512, -20344186,
+-10087268, -2954401, 7675644, -15549929, -3975529, -2430952, -14707042, 528281, -27450210, 36527088,
+11970611, -9165460, -3368328, -10313827, -1195612, 23582592, 7271380, -3935801, 12468827, -7170448,
+-34172372, 1965484, 1930588, 7673496, 15671799, -8644159, -6120866, 15454366, 18568218, 8178692,
+-16225850, -51269024, 13932874, -22482544, -15300284, 15573551, -12560095, -18030810, 14267344, -23707146,
+-1460826, -27023934, 39017632, 684510, -28536300, -8425652, 644245, -2869575, 9061844, -19058380,
+-13218299, 4278325, 7841537, 4578972, 3801046, 14810121, -17191144, -6587406, -39505648, 14650670,
+3647501, -12054363, 28458990, 15598784, -11754789, 43650288, 9596031, -27425514, 20622822, 3593277,
+13379897, 28829432, -2798708, -7044283, 4373888, 23770496, 13276281, 563178, -2578591, 25432112,
+-2420751, -29466696, -5280663, 5488432, 23118198, -10285910, 39927088, 44373456, -28347322, 23198728,
+49606872, -13389024, 75428216, 42773580, -19173808, -17149268, -28744068, -32179506, -18481244, 10164040,
+-5895917, -5645735, -1256815, -4824322, -53134116, -20391968, -52467320, 12322261, 46523624, -17413408,
+-3112241, -25356950, 12398497, 3265249, 8737037, 13161390, 38980048, -1834488, 17553532, 18352932,
+-29777008, 1365263, -353798, 6544994, 12612171, -1564442, -7271917, 12371653, -2110440, -6678138,
+1254131, -12104828, -3237332, 9106941, 1380832, -5131949, -28533078, 1564442, -13321378, -945430,
+-11281268, 23716272, -8244727, 11630771, 13871134, -11126113, 16802448, 11114302, -170188, -5961952,
+-11134166, 2790655, -1584306, -6040872, -1454383, 11865384, -9432285, 5233955, -3658775, 8594230,
+66728224, 17685602, -23957864, 2723546, -31445066, -4060355, 10974178, -12981539, -16725676, -18547280,
+-7087233, 7221988, -4138738, -5913633, 8457327, 4961761, 11476153, -11799886, -7473780, 8632884,
+-3095598, 1604170, -17368848, 11851962, -20327006, 9831180, 6699612, -4295504, -916439, 830002,
+-11796128, 2066416, 2402497, -9311489, 16989280, -9047349, 4115653, 188442, 596464, 8683887,
+-8374113, -12932147, -3905199, 19734300, -14555644, 9721122, -26697516, -15782394, 5089000, -5669894,
+-403190, -1656784, -16057272, 17170206, 13654775, 1355599, -11744051, -467615, -7125888, 3628711,
+-8898098, -163746, -8535711, 6548215, -2323041, 1799591, 21659520, -18155364, -1506997, 3374234,
+1380295, -3834869, 579821, -8540006, 565862, -7134478, 4523138, 8667244, -13011603, -10731513,
+6354941, 954557, -3012920, -10215580, 4567698, 1530082, -340913, -2211371, 199179, -2232846,
+7327751, -4657355, -1218697, 3506304, -2299955, -238908, 5909875, -3717831, -2411087, -1330903,
+1369558, 6129992, -1893007, -6564321, 555661, -4168266, 15710990, -6117644, 2075006, 3722663,
+-3783329, 12579422, -1607392, -10585484, 4040491, -5967857, 7840463, 3944928, -1509681, -471910,
+-2654827, -2743410, 7767985, -4806606, -2065342, -616865, -6382322, 8702141, -32014150, -47329464,
+32984276, 151562960, 66400732, 69463576, -443992, -140291888, -101536248, -52824876, -110555680, 53674208,
+65971772, 34287260, 142995568, 64288680, -6190122, 47411072, -92502320, -117978456, -67315024, -82653960,
+-17791366, 63887100, 65465504, 27396522, 109962976, 54550916, -7610145, 52865140, -48622252, -83513488,
+-47840032, -62832688, -98535136, 36286032, -793495, -35416300, 106236016, 63903208, 36060008, 108657304,
+26369488, -55233816, 53630184, -78741248, -89627912, -18407156, -94270240, -95809984, 38001872, -15889232,
+23294828, 120698784, 82862808, 86045376, 81384800, 9805410, -45368276, -52679384, -87928184, -115650584,
+-60450056, -32998770, -23736674, 44084080, 69021736, 64581276, 91729768, 82614768, -12550968, -14678588,
+-14654965, -84959824, -25242596, -41880228, -62860604, 14037027, 26101054, 4112431, 59032176, 26160646,
+782221, 36742372, -28080496, -31283468, 1120987, -20360292, -6120866, 15292231, -2895882, 16987132,
+23080080, -12629351, 18223546, 7231651, -27258546, 2546379, -12837120, -52391620, -428960, -13360570,
+-22001506, 50452980, 15469398, 18919330, 66676684, 26255136, 19824496, 14560476, -32525788, -48153564,
+-44212932, -74928928, -60845728, -27301496, 2984466, 33668248, 77463496, 81564112, 75357888, 66368520,
+41458784, -16333761, -46511812, -93714040, -118250648, -91647088, -54499912, -19357954, 50539416, 92627416,
+106973136, 109150152, 53195856, -12895102, -35276712, -44001404, -56310244, -40934260, -41545756, -33894808,
+-4146254, 10802916, 17840758, 29476360, 32159104, 29174640, 27214524, 15092515, 5302674, -2956011,
+-12589623, -20225000, -17219060, -10948409, -3455301, -1072668, 845035, -561567, },
},
{
{
4808753,
-2767033, -4361540, -995359, -1613297, -139586, 6528887, 375273, -2796024, 3442416, 699543,
-352187, 1146756, 723702, 55835, 4913443, 2767033, -3324305, -1284195, -381178, -1170916,
-1378685, 2094333, 1409286, -1427003, -2123325, 813896, -4277788, -1948841, 3213709, 279173,
-2587718, 1320703, -2086817, 1577864, 28454, -1846299, 4512400, -3022583, -1418950, 572304,
-1552631, -2068027, -542240, -2968359, -5867462, 5485210, -1100585, -3064459, 323733, 5042292,
-5369, 1948305, -2508261, -1471563, -1034550, 1546188, -1983738, 4031364, 637803, 3636764,
--5286568, 2231773, -1373853, 878858, 2245731, -916976, -588947, -3911642, 27380, 2106682,
-479426, -1094143, -184147, 1874216, -994822, -1046898, 2962991, -1357747, 940598, -569620,
--177704, -3652870, -1498407, -1001264, 1330903, -280247, -1625645, -287763, -331249, -1032940,
-970126, -1234803, 80531, 266288, 623844, 980326, -433255, -892816, 928250, 177167,
--668941, 111132, 1581622, -223875, -153008, 621697, 54761, 199716, 256624, -496606,
--856846, -504122, 676994, -174483, 76236, 317828, -459025, 425202, 10737, -295279,
-13784161, 4725538, -1090922, 3732327, 190589, 6801081, 4273493, -954020, 3496640, 6106907,
-7987566, -4714801, -4614406, 1962800, -1861868, -1542967, 5711770, 4616553, 4396973, 3139084,
-591095, -179852, -1994476, 2179696, 1522029, 7276749, 736050, -157303, -3218541, 1515050,
-2130841, -414464, -992137, -1138166, 1973001, -288300, -1173600, -2664490, 2825552, -948114,
--956704, 4018479, 5700496, -1469953, -699543, 3296924, 2949569, 5223217, 3235184, 1435593,
-536871, 4447439, 2515777, -6131066, 5369, 1882269, -3533684, 92342, 576599, -4373888,
-2226404, -2123861, 3278671, -707059, -567473, 1764695, 566399, -3017215, -270583, 1675574,
--594316, -746787, -877247, 325344, 3488587, 615791, -3515968, -835908, 824634, -1048509,
--448824, 5163088, -1047972, 627602, -607201, -1321239, 1165547, 1920387, -499827, 872415,
-938450, -957241, 454193, 858993, 198642, -637266, -1815697, -564251, -1093606, -508417,
--134218, 574989, -339302, 692027, 377420, -158377, 4769025, -371515, -9002251, -4190814,
--1746441, -1948305, -4900021, -4501126, -2826089, 4879083, -5360656, -2503429, -2545305, 981400,
-8140037, -1221918, -645319, 1990717, 4659503, -7123204, -1160715, 1453846, -3143379, 2515240,
-3984119, -4392141, -269509, 566399, -2552284, -6465000, 1126892, -2721936, 878858, -2506114,
-3702799, -4463545, -4164508, -10260677, -2763275, 3528853, -569620, -3936875, -1937030, -494995,
--4123706, 208306, -692027, 2835752, 2246268, -1062468, 132607, -1049583, -4352950, 5320928,
-931471, 3596498, -1315871, 13422, 940598, 1556389, 4126390, -1320166, -990527, 1219234,
--111132, 4499515, 2410014, -3889630, -1538135, -970126, -6153078, -692027, -576063, 3664144,
--2354179, 3339337, 580357, -116501, -336081, -587874, -658204, 712428, -2478196, 1154809,
--1425929, 1255204, 1078037, 483184, 315143, 3586835, 2639794, -658741, 3273302, -443455,
--1091459, -1037235, 647466, -233539, 2243584, -578210, 1404454, 1133335, -189515, 950262,
-8590, 995359, 993748, 288300, 347892, 1077500, 728534, -1473711, -801011, -155156,
-1825361, 2021319, 16643, -214748, 1108638, -19805168, -6204081, -1748589, -1602560, -1653562,
-7642895, -7051800, 3391951, -1642825, 1549410, -2011655, -1642825, -5675800, 926102, -2065879,
-423054, -8240432, 158377, -836445, -1484985, -125628, 1541356, 1258962, -790274, -554588,
--3316252, 1031329, -2664490, 1758252, -13422, 1503775, 5140002, -1335198, -5912560, -2510409,
--6921877, 971200, 1234266, -610959, 1184874, -2397666, 2303176, 1207423, -3073049, 282394,
--8319352, -1752347, -5568425, 3060164, 5481452, -4819490, -391916, 1597191, 830539, -7902740,
-1309965, 4097399, -3817689, -1787243, -9055939, 3094524, -1320703, 3764539, 6686727, 3846680,
--5397700, 1169842, 1260573, 325881, -6000070, 1577864, -2565169, 4019016, -1624035, -158914,
-1858647, 1661079, 4699768, 5397164, 3654480, -233539, 1344325, 3233037, 1603633, -3117073,
--661962, -2064269, -2128156, 1009317, -101469, 562641, 42413, -579821, -186831, 1979980,
--643708, -581968, 47245, -493921, -1427003, 1804960, 60130, 885837, 2114735, -205085,
-229781, -1608465, 1070521, 803159, 165893, -1614371, 549756, 89657, -12217571, 1311576,
-2234457, -4431333, -502511, 11948062, 9351754, 5016522, -1297617, -2211371, 6005438, 3704946,
-1952063, 2224256, -4767951, 1611687, 507343, 5602248, -5337571, -2492692, -985158, 676457,
--1059246, -6240051, -4167192, -4400731, -5121212, 2827162, 3503620, 2194728, 1576790, 81604,
-1541893, -810675, -629213, 363998, -1837172, -566399, 2760053, 2092723, -4179003, -4734128,
--399432, -4748087, 2865280, -1459752, -7943005, 938450, 4096862, 5725729, 4016868, 199179,
-3797288, -5718749, -1793149, -2566780, -362925, 379031, 2589865, -1983738, -5181341, 6331319,
--5730560, -2782065, 3962107, 9164386, 2203855, 1797444, -8935143, 9681930, 1191317, 6743099,
-10442676, -2315524, 1140851, 1196685, -4233227, 8608188, 2047626, -2843805, 2407866, -1222455,
-4283693, -7109245, -3754338, -7264401, -1381369, -3230352, 2932389, -1853815, 1262184, -3413425,
--845572, -679142, -2157147, -162672, -796180, 875636, -134755, -964757, -479963, -444529,
-1737851, 447213, -1284195, -2966749, 1672353, 1621887, 322123, -18254, -27917, -1240709,
-542240, -835371, 1810329, 318364, 1027571, -1043677, -1168231, -2359548, 18537078, 13058848,
--4655745, -6803765, 10293963, 6711960, 10834592, 15912317, -8016557, 5521718, 2668785, 4628364,
-2090039, 2785823, 6597607, 1649268, 6737193, 234076, -4274566, 1817308, -1365800, 2278480,
--779000, 12356621, 2105071, 2732136, 1693291, 499290, 4340065, 1846299, 272730, -784368,
-3111704, -2378338, 5925981, -4597226, 7130720, -3352759, 4320200, 2257542, 2647847, 2092723,
-10459319, 7986492, 519691, -2243047, -5641977, 6190659, -6881612, 1736241, -3000035, 3047279,
-6553583, 789737, -10923712, -8877161, 934155, -5522791, -5974837, -3454764, -6892349, 2465311,
-11989938, 6009196, -4395899, 277025, 1395328, -3139084, -3517578, -585189, 5892695, 6538014,
--6928319, 3285650, 7686381, 1525250, 2534568, 3701725, 5989869, -1035624, -4078072, 1585380,
--1752884, -355409, -3913789, 3615826, 5660230, 857920, 1016297, 774168, -3963718, -584116,
--65498, -452045, 402116, -635655, 652835, 474057, 1938104, 190589, -35970, 165356,
-1243930, 2123861, 1112933, 2248952, 1234803, 398358, 662499, -501437, -3697967, -3850438,
-773631, 2797634, 717260, -863825, 681826, -518617, 1774358, -1446867, -1316408, -2425583,
-1039382, 8117488, 1600949, 11772505, -994822, -185757, -3876745, -3211025, 4012036, 8899172,
--2560874, 2327872, 690416, 9646497, 4060355, -4553202, -4112968, 593779, 2086817, 8763881,
-8688719, 13102871, 2447058, 3619047, -2246268, 5320928, 6153615, -2401424, -2952790, 4686883,
--3558381, -5068599, 4797479, 1393180, -5759551, -7181722, 10941966, 5418638, -290984, 6903086,
-1432372, -4898947, 10400263, -2448131, 397821, -279710, 2763812, -3787088, 2765422, -3791919,
-2695629, -3523484, 3251290, -2885144, 4393752, -3630858, -3569655, 9589588, -11940546, 655519,
-1527398, -4155381, 906238, -13545790, -6545530, 6447283, -5289252, 3955665, -1332514, 2664490,
-1284732, 2283849, 1534914, -6146635, 3411815, -3577171, -295279, -7802345, -4106526, -1960116,
--1744831, 2212445, 7464117, 4245039, -5794985, 2279017, 1280974, 48318, -2717641, 401579,
--410169, 1440962, 816581, -1502702, -1869385, -783832, -416612, -1138166, 4391604, 792421,
--1479616, -908386, 1167157, -1736241, 337155, 863288, 214212, 244276, -4325569, -1803886,
--954020, 693637, -1080184, -162672, 3011846, -9571335, -8298414, -1074, 3562139, 6760816,
--7859254, 2289218, -7064148, 5851356, 4433480, -9641128, -2027761, 1077500, -11369315, -6416681,
-6889128, -855235, -511101, 1676111, -733903, -11840688, 10846940, 742493, -7713762, -3702262,
-1428077, -951872, -7413651, -2171106, -4267050, 1276142, -386010, -2309619, 2357400, -10253161,
--4592931, 2712809, 13458280, -2201708, -7929584, -5546951, -4421132, 9223979, -9780714, -1899449,
--689342, -10384694, -13019656, 3257196, -9026948, -1376537, 1338956, 6917582, 3828963, 621697,
-1480690, 8250096, -3541738, -2495913, 12138114, -8047695, 6322192, -2719788, -3035468, -1171452,
--1465658, 13023415, 303332, 5105106, -13334263, -9609452, 328028, -1865090, 14908368, 551903,
-10168335, 4350802, 12715788, 7781407, -1917166, -8773008, -3315178, 6019397, 2603287, 4089346,
--4897337, -5459977, -1519345, -1788854, 2646237, -1291711, -3562139, -573378, -855772, 39728,
--425202, 555125, -1444183, -1903207, 2442763, -103079, 171262, -606127, -1058173, -769873,
-679142, 2138894, -2150168, 561030, -1310502, -1901060, 1420024, -516470, -1814624, -2079301,
--393526, 2088965, 236223, 328028, 790811, 3714610, -3055332, -2498060, -1539746, 361851,
-1504849, -15947214, 1510218, -1562831, 10891500, 1270774, -11601244, 13816373, 4418985, -8105140,
--17808546, -7403987, 17537962, 876710, -2259690, -2936684, 1780264, 583579, 5389110, 2873870,
-5776194, -1256278, 10339060, -5348845, -12247636, 521839, 539555, -2905546, -470299, 4583804,
--3163244, -1864553, -1089311, 9775882, 7562901, 3932043, -743029, -13301514, -277025, -689342,
--573915, -2206003, -233002, -5816997, -10869488, -1694365, 7449621, 7269232, -2747169, 7809861,
--2531346, 3378529, 8564165, 8212515, -18125836, 6222334, 6525129, 2720862, -4425964, -15874736,
-9628243, 5701032, 3072512, -5654325, -3175055, -6403796, 3554622, -7104950, -1326608, 142808,
-6480032, -4006131, 3298535, 1812476, -11618423, -1581085, -7765838, 12750147, 5905043, -14935212,
--3171297, 11876658, 5908802, -6135361, -3073586, -6778532, -2295123, 3570192, -2073932, -789200,
--2593087, -3235184, -5682242, 1138166, 454730, -1789391, -572304, 2955474, 1973538, -3550327,
--1264331, 2682744, -689342, 2063732, -2357400, -1598265, -450972, 581431, 3063386, -3190624,
--2288681, 1686848, -3663607, -235686, -2578591, 1629403, -2042794, 3586835, -1227824, -573378,
--1796370, 2310156, 1539746, 4082367, 1271310, 9846213, 12270185, 12350715, 9648644, 12106976,
--15260019, -10167798, -5196374, -5106179, -7253663, -5760088, -12229383, -4305168, 933619, 7230041,
-93416, -7184407, -231391, 7221988, 456877, -6220187, -2762201, 16586627, 1717987, 6153078,
-2021319, 6775848, 1499481, 2107755, -10193031, 5599564, 472446, 2236604, -10691784, 3587908,
--16468515, -151398, -5154498, 3956739, -1436667, -12241731, -216359, -12186970, 2280091, -10154376,
-9204115, -5337571, 14426258, 290984, -196495, 7075422, 1621350, -2435783, -2047626, 2765422,
--4844186, 3226057, 8919573, 4365835, -6531572, -3616899, 19042812, 1286343, 15199352, -14207752,
--2898566, -1657857, 11068668, -12421582, 1780801, 5696737, -12137041, 8338142, -7607461, 2054605,
-11889006, 1104344, 6714645, 2981244, 15517717, 6522982, -6385006, -5236639, -6152541, 753767,
-621697, 6325950, -3843996, -922881, 4274030, 111669, 3299609, 4269198, 638876, -3780645,
-4302484, 3091840, -404264, 1135482, 1449015, -1781338, -1278827, -5284958, 3398930, -2639794,
--2280628, -1205812, -2647311, 2277943, -1808718, -826244, -2843268, -914828, -656056, 3356517,
-2532957, -345208, -601832, -443992, 1999844, 2218351, 2119566, 4357781, -569083, -4679904,
--15323370, 2284386, 15000710, 11165841, 12264279, -4098473, -3110093, 3028489, -2088965, 15106474,
-5102421, 7178501, 12792560, -958851, 4811437, -8701067, 12741020, 6313065, -3162170, -7830799,
--7211787, 8486319, -14709726, 5717675, 8524973, -6206228, -8197482, -4749160, 7952669, 2910914,
--2954938, -5457293, 141197, -9148280, -13630616, 2424509, -13082470, -19616726, -2425046, 683974,
-19841138, -8621610, -6721624, 8740258, 14624901, 14523969, 7810935, -978179, 3417183, -6393059,
-1155883, -6700149, 16342887, 14292577, 9358734, -770947, -16658031, -215822, -14224932, 15602542,
-12235288, 7465190, -11807402, 9630927, 5576478, 6622840, -2193655, -10166724, -7272990, -8166344,
-2739652, -11424613, -20628728, 3891777, 14011794, 7235946, 13755707, -4365835, -3776350, 13701483,
-4634270, 1684164, 9235790, 2856690, 271657, 7748658, 5004711, -947040, 3631932, 3235721,
-2087891, -2852395, -4562329, -6249715, 1607392, 3654480, 2248952, 7786776, 197032, 5476620,
--1816771, 2098629, 4514011, 371515, -2092723, -1495186, -6678674, -5978595, 1988570, 1182190,
-2632278, 6693170, 1005559, 5017596, -2029372, -1444183, 886374, -5393942, -4050154, -1775969,
--4345970, 1746978, -1465658, 1352915, 3847754, 5149129, 7653095, 12665859, 26687316, 12115566,
-9191230, 8915815, -16829292, -2442763, -6279242, 21429202, -21798570, -20322174, 5674726, 14042932,
--590558, 17136382, 15193984, -574989, 5720897, -10024454, -7554311, 16294569, -6571837, 11244224,
-3713536, -7024419, -3962644, -3029026, -3770981, -7337952, 6052683, 6845104, 5380521, 672162,
--8598525, -10627360, 13728863, -13574244, 10580652, 1140314, -17131550, 8665097, 15897821, -186831,
--4599910, -1906429, 1086627, 1065152, 10773925, -442919, -8491150, -3314641, 9132711, -16919486,
-3890704, -2728378, 13638132, 14756434, 9538049, 11577084, 14845554, 10959146, 3710315, -9674414,
--11275363, 5461051, 7123204, -409096, 6138582, 8807904, 22741852, -12847858, 14304389, -8501888,
--5741298, 15921444, 2174864, -9326521, -8462696, -8597451, -14408542, -4729296, -7164543, 11453604,
-42413, -8959302, 4731980, 3258270, -2171643, 5430450, -11046119, 7167227, 224949, -906775,
--1399086, 6103686, 799401, 1682554, 6023692, -2503966, 784368, 4674535, -7160784, 4978404,
-40802, 1914482, -3335579, 3985730, -1624571, 549756, 5099737, 110059, -1532767, 1451699,
-3358665, 4631049, 7341173, 6266894, 2008434, -3432216, -3170760, -10712185, 2134599, -8911520,
--2913062, -3841312, -3954591, 4327717, -17890686, -3190624, 10407243, -12841415, 405874, -8077760,
--14133127, 20557324, 17569100, 14694694, 6962142, 3833258, 5779952, 15093589, 8333847, 15474230,
--5730560, 12961674, -9764071, 15697032, 21075942, 13220983, 10534481, 5369783, 10881300, 10968273,
--3259343, 21821118, 5237176, -13153874, 6241125, -13317620, -9163313, -2726231, -20720532, 359704,
--4418448, -5614596, -10073846, -5235029, -2894271, -643171, -2044404, 903017, 865973, -11889006,
--7854959, 2467996, -6280853, 4942971, 20405926, -10284836, -830539, -1935957, 754304, -9751186,
-5257040, -4682588, 15796353, 3365107, 9435506, 14775224, 2522757, -977642, -9742060, -21686900,
-2864743, 16149077, 11720966, -3052111, -14454176, 12182675, 1284732, 7340099, -18504866, -13283797,
--12184822, -18350248, -11360725, -13424994, 6256694, 1988033, 4700842, 6127845, 8475581, -4141959,
-8627516, 9808632, 312996, 5273683, -3143916, -6511171, -6699075, -7049652, -2816962, -5140539,
--308164, 1548873, -673236, 463320, 1314260, -5967320, -5508296, -9447854, -3228205, -2195265,
--5245229, 2070711, 792958, -2797098, -8533026, -3938485, -3142306, -2214056, 7138236, 2167348,
--3100967, -3952981, -1424319, -10266582, 2810519, -2104534, 5310727, 587874, -3214783, -6065031,
-6321118, 8983998, -30671436, -19676856, -9319005, 21912386, 16006269, -11907260, 13722957, 12337294,
-10573136, 10302553, -10260140, 1035624, 5991480, -10253698, -30890478, -5658083, -8540542, -18973018,
-1759326, -6477348, -4806606, 5793911, 3498251, -4223027, 961536, 14496051, 15558519, -28512678,
-6834367, 1454383, 13247827, 4494684, 777926, -17751636, 5480915, -4546223, -4871030, -12203076,
--9019968, 22856206, -10307385, -398358, 2787434, -6024766, 25333864, 12014634, -11182484, -6786049,
--19704236, -2831994, 18968724, 5571110, 5789079, -6179921, 11618960, -2691871, -4907000, 10661183,
--6218039, 17658758, -4061429, 13166759, -26681410, -9025874, 15420006, 3811784, -2374580, 4358318,
--29521458, -13955422, 4593468, -11765526, 4619774, 1257352, 3386582, 18220862, -6697465, 7390565,
--1335735, -14695231, -2459943, 11244224, 16287053, -447750, -6673306, -12438762, 455267, -17393006,
--5572720, 1592896, 20669530, 18424336, 2622615, 7792145, 2429341, -2983392, 10311143, 7785165,
--3910568, 8538932, 6514392, 3480534, -6939057, -396211, -3526168, 6264210, 4456029, 5586142,
--302258, -8272644, 8050916, 466541, -3735548, -8048232, -220117, -548682, -7522635, 5513665,
--5413270, -8783745, 10242960, -3901978, -3200288, -4377646, 2452426, 1555315, 8275865, 1898376,
--1142998, 3468186, 5227512, -8885750, 2738579, 5987722, -13793287, -38021196, -3682935, -4229469,
--4591320, 6287296, -15767899, 30518964, -5935645, 1722819, 32788318, -38732016, -4512400, -7282117,
--4176856, -44426604, 2047089, -6577743, -9115531, 15538118, -15839303, 2700998, 2473364, 7578470,
--1875827, -15993921, 10697690, -10397042, 22804128, -3689914, -26868778, -1634235, -1371168, -13013214,
--27074936, 12242267, 13049721, -21968758, 17687750, -19844360, -16156056, -9351218, 1256278, 1896765,
-2494839, 13129715, -2947421, -11992086, -29504814, 6174016, -39710192, -20575578, -13995688, -31163746,
--19127636, -8812736, -2456185, -14508936, 21921514, 23331336, 4598300, -6734509, 24968256, 11725261,
--3453691, -5535676, 17819282, 13756780, -6816113, 24496882, -20942260, -10248866, 26002806, 12693776,
-36693516, -20147154, -23460186, 6123550, -17979806, 18949396, 1446867, 6720013, 34835404, -19327352,
--21496312, -7511898, 6778532, 8271570, 8334921, 9255655, 9670656, -10705206, 3723200, 1863479,
--1370632, -1066226, -7904351, -5628555, 9724343, -10985453, -1174137, 2455648, -6022618, 1588064,
--6168110, -209917, -1231045, 2511482, -9592273, 4755066, 10529649, 3490735, 2036351, 12527883,
-8411693, -689879, -12588549, 11090679, 2083596, -3959423, -9580998, 11497627, 981937, 512175,
-6174016, 8938901, -12052215, 6021544, 2923799, -7960185, -4131222, -12829604, 8270497, -1736241,
--14047764, -7316477, 3735548, 29721174, 17149804, -2957085, 40585832, -4849555, 16740172, -19288162,
-23742042, 22069690, -1899986, -18049064, 2010582, 6272263, -9853192, 10376104, -14435922, -419833,
--4351876, -4961224, -16421271, -12280922, -7405598, -1191317, -5236102, -13175886, 19427748, 13071733,
-3704409, -5570573, 3414499, 18415210, 8875550, 13489955, 8719320, -10334228, -15610596, 31616864,
--4038880, -17531520, -7118909, -7618735, -4028679, 22844932, 1114007, -17877802, -6645388, -44214540,
--10725607, -5310727, 27277874, 18606872, -53429392, -23207318, -12899934, -407485, 2818572, -21514564,
-15874736, 8290361, 13833553, 26735634, -35001836, 34250752, 24816858, -11289858, -23461258, 1385664,
--5752035, 9037148, 31429496, -16324634, -18009334, 25411174, -29921426, -33743412, -13414793, 3344706,
--9504763, -36961416, -14779519, -12011413, 694174, 1933809, -10427107, -826244, 1712081, 365072,
-3262565, -23379118, -8069170, -7791071, 1617592, 6446209, -1613834, -7514582, -4224101, 2419677,
-12006044, 12656195, -1657321, -11087458, -2761127, 16125992, 1069447, -4250407, 3479997, -21978958,
--6354404, -10383083, 1555315, 3767223, -21180632, -21712670, 5509906, 18851686, -8004746, 12337830,
-3910568, -6082748, -1674500, 5013838, 3884261, -1777043, 3858491, 27977416, 3863323, 10465225,
--21819508, -34675956, 50068044, 24947318, 2355253, 3195993, -11161546, -29512330, 10408853, -2374043,
-25318832, 5559835, 9448928, 27584964, 15385110, -397284, -2869575, 4591320, -16787954, -13960791,
--17855252, -10097468, 16684874, -4634807, 1128503, 20676510, -3489661, 9020505, -28765544, -26004416,
--17505750, 14891188, 6171868, -1051730, 6938520, -9265318, -25861072, 32651416, -31030602, 14238353,
-14863808, 11549167, 5272073, 19728932, -12716861, -31918586, 23596014, 66597228, -11687143, 32161252,
--38742216, -21049098, 24061480, 13933948, -35964984, -10266046, -2972654, 31170726, -7713762, -3510062,
--48928804, -31615254, -11190000, -36106716, 30146912, 31929860, 50657528, -44937704, 19326280, 5475547,
--24850144, -1574106, -1117765, -51903608, 36981280, -15518254, 17495012, -5462125, 2937758, 69902200,
--18858128, 24147380, 16127065, -17131550, 30602178, -210453, -5810017, 1692217, 7952669, 19551764,
-12153147, 7666517, -614180, 18488224, -17426292, -8820789, 1561758, 4471598, 8760660, -5005785,
-15181636, 1817308, 6803228, -3162707, 11535745, -1193464, -16642998, 9392557, -20463372, -12402792,
--4662724, 8566312, -2068564, 10268193, 24206972, 36911484, 26975616, 7109245, 17413944, -10252624,
-8943196, -926639, -580894, -1887101, 3783866, -8018704, 10390063, -9882183, -44627396, -25302726,
--922344, -6758668, -14957760, 5422933, 14388677, 1493038, -15808701, -793495, -15154792, 41043780,
--12607876, 944356, 31110058, -1744294, -31919124, -22201222, -21817896, -9659918, -11617350, 34195992,
-3541201, 5645198, 17040282, -9365176, -9545028, -5738613, -9730248, -20845624, -4901632, 39198556,
-12645457, 9322763, -26047902, 9617506, 2039573, -18543522, -2166811, -9287867, 42526620, -33627984,
--29038810, -10223633, 5303748, -10011032, 1295470, 11492796, -22141094, -5936182, 36025112, -29018410,
-5098126, -7262253, -17649094, -30778272, -23528904, 1154809, -42876660, -51833276, 12305081, 10634339,
-8324184, -46315316, 35775468, 43476344, -14759655, -12572980, 2709051, -1797444, -9800578, -24057722,
-17437030, 65597572, 17022566, -16193637, 314606, 10424959, 21876416, 5936182, -38816840, -34603476,
-37494528, -7171522, -15351287, -22603340, 7779260, 42874512, 13121662, -13547401, 7895224, -1658394,
--7642358, -3744675, -2302639, 18973018, 10477036, -6444599, -10503343, 8589398, 4968741, -1591285,
--4354023, 6943889, -10160282, 6306086, 16425029, -1510755, -9108015, -2731599, -5870147, -9949292,
--18422726, 2685428, 14031658, -9397925, -11627550, 5735392, -14509473, 85899, -23591718, 11317776,
-14674830, 37556804, -11977590, -5115843, -15573551, -15952582, 4483409, 8275328, 15600395, -1881733,
--3405372, -15748571, 6308233, 3877819, 4699768, 9933722, 11427834, -14187888, -37455872, 10375030,
-14631343, -55451784, 30376694, 1328756, -15811385, 5341329, 20236276, -28643674, 17701170, -26594974,
-7184407, -1514513, -13422310, -7424925, -3636764, -19568944, 14039711, 12323872, -573915, 6813429,
-852014, 10908143, 14179835, 13755707, 20338280, 17516488, -10814191, 2764348, -22193170, 23571318,
--18194556, 5806259, -3506304, 4842576, 1154273, -16761647, 15289010, -8471823, -16243566, 34129420,
--27267136, 8240432, -7859254, -13501767, 13761075, -3497177, 4089346, 21289080, -25661892, 1093606,
--31442918, -61914636, -1568737, 19801946, -7429757, 79709760, 16232292, -31072478, 8768176, -43371652,
-15099494, 31124554, 36719824, -12563316, -7219303, -48223356, -55319716, -4600984, -34478924, 8229694,
--2153389, -30059940, -7025493, -14857366, -32937030, 27064736, 53167400, -14858439, 3780645, 11519102,
--14062797, 16495896, 20984674, -14500883, 2469606, 105764, -26421028, 13268765, 2270964, 8087424,
-9720585, -18641232, 7361037, -9865540, -14958297, -16939888, 14492830, -10492068, 5988258, -16374026,
--5876589, -1068373, -19983946, 19676318, -12646531, 3977140, 6046777, -18619220, -2983392, 14444512,
--1641751, 2101313, 3269544, -5404680, 8910983, 18629420, -2153389, 10841034, 12794171, -15829639,
--30061012, 10241886, 4296578, 17448842, 20932596, -27201102, -26673358, 4728222, -39508332, 8123394,
--2848100, -23068806, 10400800, -14986215, -10074383, -18621368, 9517648, -20275466, 25973278, -2777233,
-9639517, -5998459, 34878892, -9484898, 19173270, -329102, 22852984, -6382859, -11480448, 7436736,
--12997108, -13789529, 1915555, 25948582, 16738024, -17681844, 18924162, -13263396, -20252382, 5718749,
-27814746, -10685342, -11265162, 14848776, 6716255, -13833553, 1603633, 18893024, -7821673, -18174690,
-9960029, 7579007, 11668889, 21279416, 4522064, -12833899, -4161287, 46743204, 49159120, -13562970,
--40596032, 31192736, -13530221, 8807904, 4490389, 52641804, 7305203, -27300960, -9910637, -6602439,
-1556389, 8164733, 12780749, 17126718, -20240034, 6553047, 4704600, 30539902, -7526394, 21528524,
-23217520, 12838194, 11121818, 6703370, 18511846, -17615272, 19915764, 25262460, 18294414, 3123515,
--35633196, -5288179, -22942104, 1125818, 15584289, 5260798, -7766375, -12493523, -7236483, -1937567,
--794032, 6620155, -7285339, 2080375, -649077, -5532992, 11009612, 4318053, -9631464, -4527433,
--2376191, 13377213, 125628, 2808372, -12666932, -9076877, -16844324, -7904888, -896038, -1523640,
-374199, -2868501, -15074261, 4020626, -5050882, -2395518, 2414845, -4146791, -57445, -13085692,
--2979634, 664109, 372588, 394600, -3195456, -3207804, -981400, -5108327, -7243463, 55684252,
-23128398, -24858196, 5847598, -25978110, -14406931, -1596117, 9269076, -3980361, 20126754, -24008330,
--956704, 9751723, -1017907, 10134512, -1647657, 3687766, 2120103, -17146046, -5652714, 4764730,
--16393353, -16099685, 1167694, 4405026, -11716671, 8451422, 7757785, -4642323, -8341900, -1087701,
-1561221, -2636036, 6637335, 1972464, 5185636, -6931004, -3234110, 12908524, -193274, 874026,
-5928129, -3875134, 6580964, -6252399, -12225624, -7583302, 12212740, -9639517, -7454990, 999654,
--9982041, -10332081, 14902463, -14796699, 23674934, 5472862, -10787347, 10695542, 1457605, -17456894,
-1345935, -2924873, -3304977, 8649527, -472983, -10138270, 20111184, -11935714, -4931160, 10769094,
-3178276, -4172561, 321049, 3509525, -539555, -597000, -2302103, 4932233, 8237748, -63351,
--14280229, 10342818, -7463580, -824097, 11844446, -528281, -3888556, -226560, -10612864, 5304822,
-3400540, -889595, 27380, 4517769, -10339597, 1009854, -3677029, 1294396, 3990562, 1349694,
--4512400, 10213432, -15316390, 2254321, 1582696, -799401, 1668058, -1949378, -8737037, 9687299,
--4571993, 6999723, -90731, -822486, 8664560, 3589519, -7626788, 3081102, -3946001, -2953864,
-1500017, 5893769, 5513128, -1962263, -7530689, 4030290, -4372277, -33574832, -40375912, 34054796,
-137916768, 53965728, 63273460, 869194, -129125504, -95083600, -49707804, -75767520, 34001644, 65270080,
-26913876, 115376784, 65284576, -4322885, 27121108, -58306864, -117659016, -46937012, -81719808, -13043279,
-56630756, 47723528, 43191800, 71928888, 44377748, 12225624, 19767050, -5328444, -83713744, -36973764,
--30141006, -115656488, 21472688, 15196668, -51357072, 83361560, 82481088, -2780455, 104355360, 51337208,
--48446696, 32411970, -48163228, -100250440, -7935489, -60540784, -87738664, 15548318, 9411347, -5200132,
-81851336, 78947408, 47149616, 70283920, 42714524, -27271432, -30760018, -54695336, -93787056, -69177424,
--33005214, -30909270, 16856136, 53028352, 36238788, 58257472, 87923888, 34253436, -11530377, -10939819,
--60773252, -49038864, 4533338, -56297356, -25558814, 30642444, 7570417, 38345468, 30822832, -15623480,
-10299332, -3092913, -20959978, 4721243, -9336185, -9412958, 19477140, 6826851, 8272644, 25963078,
--14822469, -5679558, 14105209, -19196894, -15781320, 7432978, -46141372, -7581154, 15913391, -37124624,
-18300318, 23379118, 2555506, 58543088, 55650428, 12910135, 22645216, -16091095, -49568216, -24765318,
--65993784, -74876848, -42454676, -17945448, 14334990, 71711456, 83000776, 87012280, 77242304, 44232796,
--9462350, -48297980, -76620608, -106884016, -91475824, -50193672, -12891881, 43451648, 77698104, 77627240,
-69367480, 45273252, -8191040, -13551159, -21918828, -33120104, -23543936, -20556250, -24495272, -12923020,
--6561637, -5403606, 5477157, 15188078, 19863150, 25978110, 23922430, 19169512, 8951249, 2305324,
--7988639, -10641318, -11562052, -6452652, -3611531, 23085, -782758, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+2767033, -4361540, -995359, -1613297, -139586, 6528887, 375273, -2796024, 3442416, 699543,
+352187, 1146756, 723702, 55835, 4913443, 2767033, -3324305, -1284195, -381178, -1170916,
+1378685, 2094333, 1409286, -1427003, -2123325, 813896, -4277788, -1948841, 3213709, 279173,
+2587718, 1320703, -2086817, 1577864, 28454, -1846299, 4512400, -3022583, -1418950, 572304,
+1552631, -2068027, -542240, -2968359, -5867462, 5485210, -1100585, -3064459, 323733, 5042292,
+5369, 1948305, -2508261, -1471563, -1034550, 1546188, -1983738, 4031364, 637803, 3636764,
+-5286568, 2231773, -1373853, 878858, 2245731, -916976, -588947, -3911642, 27380, 2106682,
+479426, -1094143, -184147, 1874216, -994822, -1046898, 2962991, -1357747, 940598, -569620,
+-177704, -3652870, -1498407, -1001264, 1330903, -280247, -1625645, -287763, -331249, -1032940,
+970126, -1234803, 80531, 266288, 623844, 980326, -433255, -892816, 928250, 177167,
+-668941, 111132, 1581622, -223875, -153008, 621697, 54761, 199716, 256624, -496606,
+-856846, -504122, 676994, -174483, 76236, 317828, -459025, 425202, 10737, -295279,
+13784161, 4725538, -1090922, 3732327, 190589, 6801081, 4273493, -954020, 3496640, 6106907,
+7987566, -4714801, -4614406, 1962800, -1861868, -1542967, 5711770, 4616553, 4396973, 3139084,
+591095, -179852, -1994476, 2179696, 1522029, 7276749, 736050, -157303, -3218541, 1515050,
+2130841, -414464, -992137, -1138166, 1973001, -288300, -1173600, -2664490, 2825552, -948114,
+-956704, 4018479, 5700496, -1469953, -699543, 3296924, 2949569, 5223217, 3235184, 1435593,
+536871, 4447439, 2515777, -6131066, 5369, 1882269, -3533684, 92342, 576599, -4373888,
+2226404, -2123861, 3278671, -707059, -567473, 1764695, 566399, -3017215, -270583, 1675574,
+-594316, -746787, -877247, 325344, 3488587, 615791, -3515968, -835908, 824634, -1048509,
+-448824, 5163088, -1047972, 627602, -607201, -1321239, 1165547, 1920387, -499827, 872415,
+938450, -957241, 454193, 858993, 198642, -637266, -1815697, -564251, -1093606, -508417,
+-134218, 574989, -339302, 692027, 377420, -158377, 4769025, -371515, -9002251, -4190814,
+-1746441, -1948305, -4900021, -4501126, -2826089, 4879083, -5360656, -2503429, -2545305, 981400,
+8140037, -1221918, -645319, 1990717, 4659503, -7123204, -1160715, 1453846, -3143379, 2515240,
+3984119, -4392141, -269509, 566399, -2552284, -6465000, 1126892, -2721936, 878858, -2506114,
+3702799, -4463545, -4164508, -10260677, -2763275, 3528853, -569620, -3936875, -1937030, -494995,
+-4123706, 208306, -692027, 2835752, 2246268, -1062468, 132607, -1049583, -4352950, 5320928,
+931471, 3596498, -1315871, 13422, 940598, 1556389, 4126390, -1320166, -990527, 1219234,
+-111132, 4499515, 2410014, -3889630, -1538135, -970126, -6153078, -692027, -576063, 3664144,
+-2354179, 3339337, 580357, -116501, -336081, -587874, -658204, 712428, -2478196, 1154809,
+-1425929, 1255204, 1078037, 483184, 315143, 3586835, 2639794, -658741, 3273302, -443455,
+-1091459, -1037235, 647466, -233539, 2243584, -578210, 1404454, 1133335, -189515, 950262,
+8590, 995359, 993748, 288300, 347892, 1077500, 728534, -1473711, -801011, -155156,
+1825361, 2021319, 16643, -214748, 1108638, -19805168, -6204081, -1748589, -1602560, -1653562,
+7642895, -7051800, 3391951, -1642825, 1549410, -2011655, -1642825, -5675800, 926102, -2065879,
+423054, -8240432, 158377, -836445, -1484985, -125628, 1541356, 1258962, -790274, -554588,
+-3316252, 1031329, -2664490, 1758252, -13422, 1503775, 5140002, -1335198, -5912560, -2510409,
+-6921877, 971200, 1234266, -610959, 1184874, -2397666, 2303176, 1207423, -3073049, 282394,
+-8319352, -1752347, -5568425, 3060164, 5481452, -4819490, -391916, 1597191, 830539, -7902740,
+1309965, 4097399, -3817689, -1787243, -9055939, 3094524, -1320703, 3764539, 6686727, 3846680,
+-5397700, 1169842, 1260573, 325881, -6000070, 1577864, -2565169, 4019016, -1624035, -158914,
+1858647, 1661079, 4699768, 5397164, 3654480, -233539, 1344325, 3233037, 1603633, -3117073,
+-661962, -2064269, -2128156, 1009317, -101469, 562641, 42413, -579821, -186831, 1979980,
+-643708, -581968, 47245, -493921, -1427003, 1804960, 60130, 885837, 2114735, -205085,
+229781, -1608465, 1070521, 803159, 165893, -1614371, 549756, 89657, -12217571, 1311576,
+2234457, -4431333, -502511, 11948062, 9351754, 5016522, -1297617, -2211371, 6005438, 3704946,
+1952063, 2224256, -4767951, 1611687, 507343, 5602248, -5337571, -2492692, -985158, 676457,
+-1059246, -6240051, -4167192, -4400731, -5121212, 2827162, 3503620, 2194728, 1576790, 81604,
+1541893, -810675, -629213, 363998, -1837172, -566399, 2760053, 2092723, -4179003, -4734128,
+-399432, -4748087, 2865280, -1459752, -7943005, 938450, 4096862, 5725729, 4016868, 199179,
+3797288, -5718749, -1793149, -2566780, -362925, 379031, 2589865, -1983738, -5181341, 6331319,
+-5730560, -2782065, 3962107, 9164386, 2203855, 1797444, -8935143, 9681930, 1191317, 6743099,
+10442676, -2315524, 1140851, 1196685, -4233227, 8608188, 2047626, -2843805, 2407866, -1222455,
+4283693, -7109245, -3754338, -7264401, -1381369, -3230352, 2932389, -1853815, 1262184, -3413425,
+-845572, -679142, -2157147, -162672, -796180, 875636, -134755, -964757, -479963, -444529,
+1737851, 447213, -1284195, -2966749, 1672353, 1621887, 322123, -18254, -27917, -1240709,
+542240, -835371, 1810329, 318364, 1027571, -1043677, -1168231, -2359548, 18537078, 13058848,
+-4655745, -6803765, 10293963, 6711960, 10834592, 15912317, -8016557, 5521718, 2668785, 4628364,
+2090039, 2785823, 6597607, 1649268, 6737193, 234076, -4274566, 1817308, -1365800, 2278480,
+-779000, 12356621, 2105071, 2732136, 1693291, 499290, 4340065, 1846299, 272730, -784368,
+3111704, -2378338, 5925981, -4597226, 7130720, -3352759, 4320200, 2257542, 2647847, 2092723,
+10459319, 7986492, 519691, -2243047, -5641977, 6190659, -6881612, 1736241, -3000035, 3047279,
+6553583, 789737, -10923712, -8877161, 934155, -5522791, -5974837, -3454764, -6892349, 2465311,
+11989938, 6009196, -4395899, 277025, 1395328, -3139084, -3517578, -585189, 5892695, 6538014,
+-6928319, 3285650, 7686381, 1525250, 2534568, 3701725, 5989869, -1035624, -4078072, 1585380,
+-1752884, -355409, -3913789, 3615826, 5660230, 857920, 1016297, 774168, -3963718, -584116,
+-65498, -452045, 402116, -635655, 652835, 474057, 1938104, 190589, -35970, 165356,
+1243930, 2123861, 1112933, 2248952, 1234803, 398358, 662499, -501437, -3697967, -3850438,
+773631, 2797634, 717260, -863825, 681826, -518617, 1774358, -1446867, -1316408, -2425583,
+1039382, 8117488, 1600949, 11772505, -994822, -185757, -3876745, -3211025, 4012036, 8899172,
+-2560874, 2327872, 690416, 9646497, 4060355, -4553202, -4112968, 593779, 2086817, 8763881,
+8688719, 13102871, 2447058, 3619047, -2246268, 5320928, 6153615, -2401424, -2952790, 4686883,
+-3558381, -5068599, 4797479, 1393180, -5759551, -7181722, 10941966, 5418638, -290984, 6903086,
+1432372, -4898947, 10400263, -2448131, 397821, -279710, 2763812, -3787088, 2765422, -3791919,
+2695629, -3523484, 3251290, -2885144, 4393752, -3630858, -3569655, 9589588, -11940546, 655519,
+1527398, -4155381, 906238, -13545790, -6545530, 6447283, -5289252, 3955665, -1332514, 2664490,
+1284732, 2283849, 1534914, -6146635, 3411815, -3577171, -295279, -7802345, -4106526, -1960116,
+-1744831, 2212445, 7464117, 4245039, -5794985, 2279017, 1280974, 48318, -2717641, 401579,
+-410169, 1440962, 816581, -1502702, -1869385, -783832, -416612, -1138166, 4391604, 792421,
+-1479616, -908386, 1167157, -1736241, 337155, 863288, 214212, 244276, -4325569, -1803886,
+-954020, 693637, -1080184, -162672, 3011846, -9571335, -8298414, -1074, 3562139, 6760816,
+-7859254, 2289218, -7064148, 5851356, 4433480, -9641128, -2027761, 1077500, -11369315, -6416681,
+6889128, -855235, -511101, 1676111, -733903, -11840688, 10846940, 742493, -7713762, -3702262,
+1428077, -951872, -7413651, -2171106, -4267050, 1276142, -386010, -2309619, 2357400, -10253161,
+-4592931, 2712809, 13458280, -2201708, -7929584, -5546951, -4421132, 9223979, -9780714, -1899449,
+-689342, -10384694, -13019656, 3257196, -9026948, -1376537, 1338956, 6917582, 3828963, 621697,
+1480690, 8250096, -3541738, -2495913, 12138114, -8047695, 6322192, -2719788, -3035468, -1171452,
+-1465658, 13023415, 303332, 5105106, -13334263, -9609452, 328028, -1865090, 14908368, 551903,
+10168335, 4350802, 12715788, 7781407, -1917166, -8773008, -3315178, 6019397, 2603287, 4089346,
+-4897337, -5459977, -1519345, -1788854, 2646237, -1291711, -3562139, -573378, -855772, 39728,
+-425202, 555125, -1444183, -1903207, 2442763, -103079, 171262, -606127, -1058173, -769873,
+679142, 2138894, -2150168, 561030, -1310502, -1901060, 1420024, -516470, -1814624, -2079301,
+-393526, 2088965, 236223, 328028, 790811, 3714610, -3055332, -2498060, -1539746, 361851,
+1504849, -15947214, 1510218, -1562831, 10891500, 1270774, -11601244, 13816373, 4418985, -8105140,
+-17808546, -7403987, 17537962, 876710, -2259690, -2936684, 1780264, 583579, 5389110, 2873870,
+5776194, -1256278, 10339060, -5348845, -12247636, 521839, 539555, -2905546, -470299, 4583804,
+-3163244, -1864553, -1089311, 9775882, 7562901, 3932043, -743029, -13301514, -277025, -689342,
+-573915, -2206003, -233002, -5816997, -10869488, -1694365, 7449621, 7269232, -2747169, 7809861,
+-2531346, 3378529, 8564165, 8212515, -18125836, 6222334, 6525129, 2720862, -4425964, -15874736,
+9628243, 5701032, 3072512, -5654325, -3175055, -6403796, 3554622, -7104950, -1326608, 142808,
+6480032, -4006131, 3298535, 1812476, -11618423, -1581085, -7765838, 12750147, 5905043, -14935212,
+-3171297, 11876658, 5908802, -6135361, -3073586, -6778532, -2295123, 3570192, -2073932, -789200,
+-2593087, -3235184, -5682242, 1138166, 454730, -1789391, -572304, 2955474, 1973538, -3550327,
+-1264331, 2682744, -689342, 2063732, -2357400, -1598265, -450972, 581431, 3063386, -3190624,
+-2288681, 1686848, -3663607, -235686, -2578591, 1629403, -2042794, 3586835, -1227824, -573378,
+-1796370, 2310156, 1539746, 4082367, 1271310, 9846213, 12270185, 12350715, 9648644, 12106976,
+-15260019, -10167798, -5196374, -5106179, -7253663, -5760088, -12229383, -4305168, 933619, 7230041,
+93416, -7184407, -231391, 7221988, 456877, -6220187, -2762201, 16586627, 1717987, 6153078,
+2021319, 6775848, 1499481, 2107755, -10193031, 5599564, 472446, 2236604, -10691784, 3587908,
+-16468515, -151398, -5154498, 3956739, -1436667, -12241731, -216359, -12186970, 2280091, -10154376,
+9204115, -5337571, 14426258, 290984, -196495, 7075422, 1621350, -2435783, -2047626, 2765422,
+-4844186, 3226057, 8919573, 4365835, -6531572, -3616899, 19042812, 1286343, 15199352, -14207752,
+-2898566, -1657857, 11068668, -12421582, 1780801, 5696737, -12137041, 8338142, -7607461, 2054605,
+11889006, 1104344, 6714645, 2981244, 15517717, 6522982, -6385006, -5236639, -6152541, 753767,
+621697, 6325950, -3843996, -922881, 4274030, 111669, 3299609, 4269198, 638876, -3780645,
+4302484, 3091840, -404264, 1135482, 1449015, -1781338, -1278827, -5284958, 3398930, -2639794,
+-2280628, -1205812, -2647311, 2277943, -1808718, -826244, -2843268, -914828, -656056, 3356517,
+2532957, -345208, -601832, -443992, 1999844, 2218351, 2119566, 4357781, -569083, -4679904,
+-15323370, 2284386, 15000710, 11165841, 12264279, -4098473, -3110093, 3028489, -2088965, 15106474,
+5102421, 7178501, 12792560, -958851, 4811437, -8701067, 12741020, 6313065, -3162170, -7830799,
+-7211787, 8486319, -14709726, 5717675, 8524973, -6206228, -8197482, -4749160, 7952669, 2910914,
+-2954938, -5457293, 141197, -9148280, -13630616, 2424509, -13082470, -19616726, -2425046, 683974,
+19841138, -8621610, -6721624, 8740258, 14624901, 14523969, 7810935, -978179, 3417183, -6393059,
+1155883, -6700149, 16342887, 14292577, 9358734, -770947, -16658031, -215822, -14224932, 15602542,
+12235288, 7465190, -11807402, 9630927, 5576478, 6622840, -2193655, -10166724, -7272990, -8166344,
+2739652, -11424613, -20628728, 3891777, 14011794, 7235946, 13755707, -4365835, -3776350, 13701483,
+4634270, 1684164, 9235790, 2856690, 271657, 7748658, 5004711, -947040, 3631932, 3235721,
+2087891, -2852395, -4562329, -6249715, 1607392, 3654480, 2248952, 7786776, 197032, 5476620,
+-1816771, 2098629, 4514011, 371515, -2092723, -1495186, -6678674, -5978595, 1988570, 1182190,
+2632278, 6693170, 1005559, 5017596, -2029372, -1444183, 886374, -5393942, -4050154, -1775969,
+-4345970, 1746978, -1465658, 1352915, 3847754, 5149129, 7653095, 12665859, 26687316, 12115566,
+9191230, 8915815, -16829292, -2442763, -6279242, 21429202, -21798570, -20322174, 5674726, 14042932,
+-590558, 17136382, 15193984, -574989, 5720897, -10024454, -7554311, 16294569, -6571837, 11244224,
+3713536, -7024419, -3962644, -3029026, -3770981, -7337952, 6052683, 6845104, 5380521, 672162,
+-8598525, -10627360, 13728863, -13574244, 10580652, 1140314, -17131550, 8665097, 15897821, -186831,
+-4599910, -1906429, 1086627, 1065152, 10773925, -442919, -8491150, -3314641, 9132711, -16919486,
+3890704, -2728378, 13638132, 14756434, 9538049, 11577084, 14845554, 10959146, 3710315, -9674414,
+-11275363, 5461051, 7123204, -409096, 6138582, 8807904, 22741852, -12847858, 14304389, -8501888,
+-5741298, 15921444, 2174864, -9326521, -8462696, -8597451, -14408542, -4729296, -7164543, 11453604,
+42413, -8959302, 4731980, 3258270, -2171643, 5430450, -11046119, 7167227, 224949, -906775,
+-1399086, 6103686, 799401, 1682554, 6023692, -2503966, 784368, 4674535, -7160784, 4978404,
+40802, 1914482, -3335579, 3985730, -1624571, 549756, 5099737, 110059, -1532767, 1451699,
+3358665, 4631049, 7341173, 6266894, 2008434, -3432216, -3170760, -10712185, 2134599, -8911520,
+-2913062, -3841312, -3954591, 4327717, -17890686, -3190624, 10407243, -12841415, 405874, -8077760,
+-14133127, 20557324, 17569100, 14694694, 6962142, 3833258, 5779952, 15093589, 8333847, 15474230,
+-5730560, 12961674, -9764071, 15697032, 21075942, 13220983, 10534481, 5369783, 10881300, 10968273,
+-3259343, 21821118, 5237176, -13153874, 6241125, -13317620, -9163313, -2726231, -20720532, 359704,
+-4418448, -5614596, -10073846, -5235029, -2894271, -643171, -2044404, 903017, 865973, -11889006,
+-7854959, 2467996, -6280853, 4942971, 20405926, -10284836, -830539, -1935957, 754304, -9751186,
+5257040, -4682588, 15796353, 3365107, 9435506, 14775224, 2522757, -977642, -9742060, -21686900,
+2864743, 16149077, 11720966, -3052111, -14454176, 12182675, 1284732, 7340099, -18504866, -13283797,
+-12184822, -18350248, -11360725, -13424994, 6256694, 1988033, 4700842, 6127845, 8475581, -4141959,
+8627516, 9808632, 312996, 5273683, -3143916, -6511171, -6699075, -7049652, -2816962, -5140539,
+-308164, 1548873, -673236, 463320, 1314260, -5967320, -5508296, -9447854, -3228205, -2195265,
+-5245229, 2070711, 792958, -2797098, -8533026, -3938485, -3142306, -2214056, 7138236, 2167348,
+-3100967, -3952981, -1424319, -10266582, 2810519, -2104534, 5310727, 587874, -3214783, -6065031,
+6321118, 8983998, -30671436, -19676856, -9319005, 21912386, 16006269, -11907260, 13722957, 12337294,
+10573136, 10302553, -10260140, 1035624, 5991480, -10253698, -30890478, -5658083, -8540542, -18973018,
+1759326, -6477348, -4806606, 5793911, 3498251, -4223027, 961536, 14496051, 15558519, -28512678,
+6834367, 1454383, 13247827, 4494684, 777926, -17751636, 5480915, -4546223, -4871030, -12203076,
+-9019968, 22856206, -10307385, -398358, 2787434, -6024766, 25333864, 12014634, -11182484, -6786049,
+-19704236, -2831994, 18968724, 5571110, 5789079, -6179921, 11618960, -2691871, -4907000, 10661183,
+-6218039, 17658758, -4061429, 13166759, -26681410, -9025874, 15420006, 3811784, -2374580, 4358318,
+-29521458, -13955422, 4593468, -11765526, 4619774, 1257352, 3386582, 18220862, -6697465, 7390565,
+-1335735, -14695231, -2459943, 11244224, 16287053, -447750, -6673306, -12438762, 455267, -17393006,
+-5572720, 1592896, 20669530, 18424336, 2622615, 7792145, 2429341, -2983392, 10311143, 7785165,
+-3910568, 8538932, 6514392, 3480534, -6939057, -396211, -3526168, 6264210, 4456029, 5586142,
+-302258, -8272644, 8050916, 466541, -3735548, -8048232, -220117, -548682, -7522635, 5513665,
+-5413270, -8783745, 10242960, -3901978, -3200288, -4377646, 2452426, 1555315, 8275865, 1898376,
+-1142998, 3468186, 5227512, -8885750, 2738579, 5987722, -13793287, -38021196, -3682935, -4229469,
+-4591320, 6287296, -15767899, 30518964, -5935645, 1722819, 32788318, -38732016, -4512400, -7282117,
+-4176856, -44426604, 2047089, -6577743, -9115531, 15538118, -15839303, 2700998, 2473364, 7578470,
+-1875827, -15993921, 10697690, -10397042, 22804128, -3689914, -26868778, -1634235, -1371168, -13013214,
+-27074936, 12242267, 13049721, -21968758, 17687750, -19844360, -16156056, -9351218, 1256278, 1896765,
+2494839, 13129715, -2947421, -11992086, -29504814, 6174016, -39710192, -20575578, -13995688, -31163746,
+-19127636, -8812736, -2456185, -14508936, 21921514, 23331336, 4598300, -6734509, 24968256, 11725261,
+-3453691, -5535676, 17819282, 13756780, -6816113, 24496882, -20942260, -10248866, 26002806, 12693776,
+36693516, -20147154, -23460186, 6123550, -17979806, 18949396, 1446867, 6720013, 34835404, -19327352,
+-21496312, -7511898, 6778532, 8271570, 8334921, 9255655, 9670656, -10705206, 3723200, 1863479,
+-1370632, -1066226, -7904351, -5628555, 9724343, -10985453, -1174137, 2455648, -6022618, 1588064,
+-6168110, -209917, -1231045, 2511482, -9592273, 4755066, 10529649, 3490735, 2036351, 12527883,
+8411693, -689879, -12588549, 11090679, 2083596, -3959423, -9580998, 11497627, 981937, 512175,
+6174016, 8938901, -12052215, 6021544, 2923799, -7960185, -4131222, -12829604, 8270497, -1736241,
+-14047764, -7316477, 3735548, 29721174, 17149804, -2957085, 40585832, -4849555, 16740172, -19288162,
+23742042, 22069690, -1899986, -18049064, 2010582, 6272263, -9853192, 10376104, -14435922, -419833,
+-4351876, -4961224, -16421271, -12280922, -7405598, -1191317, -5236102, -13175886, 19427748, 13071733,
+3704409, -5570573, 3414499, 18415210, 8875550, 13489955, 8719320, -10334228, -15610596, 31616864,
+-4038880, -17531520, -7118909, -7618735, -4028679, 22844932, 1114007, -17877802, -6645388, -44214540,
+-10725607, -5310727, 27277874, 18606872, -53429392, -23207318, -12899934, -407485, 2818572, -21514564,
+15874736, 8290361, 13833553, 26735634, -35001836, 34250752, 24816858, -11289858, -23461258, 1385664,
+-5752035, 9037148, 31429496, -16324634, -18009334, 25411174, -29921426, -33743412, -13414793, 3344706,
+-9504763, -36961416, -14779519, -12011413, 694174, 1933809, -10427107, -826244, 1712081, 365072,
+3262565, -23379118, -8069170, -7791071, 1617592, 6446209, -1613834, -7514582, -4224101, 2419677,
+12006044, 12656195, -1657321, -11087458, -2761127, 16125992, 1069447, -4250407, 3479997, -21978958,
+-6354404, -10383083, 1555315, 3767223, -21180632, -21712670, 5509906, 18851686, -8004746, 12337830,
+3910568, -6082748, -1674500, 5013838, 3884261, -1777043, 3858491, 27977416, 3863323, 10465225,
+-21819508, -34675956, 50068044, 24947318, 2355253, 3195993, -11161546, -29512330, 10408853, -2374043,
+25318832, 5559835, 9448928, 27584964, 15385110, -397284, -2869575, 4591320, -16787954, -13960791,
+-17855252, -10097468, 16684874, -4634807, 1128503, 20676510, -3489661, 9020505, -28765544, -26004416,
+-17505750, 14891188, 6171868, -1051730, 6938520, -9265318, -25861072, 32651416, -31030602, 14238353,
+14863808, 11549167, 5272073, 19728932, -12716861, -31918586, 23596014, 66597228, -11687143, 32161252,
+-38742216, -21049098, 24061480, 13933948, -35964984, -10266046, -2972654, 31170726, -7713762, -3510062,
+-48928804, -31615254, -11190000, -36106716, 30146912, 31929860, 50657528, -44937704, 19326280, 5475547,
+-24850144, -1574106, -1117765, -51903608, 36981280, -15518254, 17495012, -5462125, 2937758, 69902200,
+-18858128, 24147380, 16127065, -17131550, 30602178, -210453, -5810017, 1692217, 7952669, 19551764,
+12153147, 7666517, -614180, 18488224, -17426292, -8820789, 1561758, 4471598, 8760660, -5005785,
+15181636, 1817308, 6803228, -3162707, 11535745, -1193464, -16642998, 9392557, -20463372, -12402792,
+-4662724, 8566312, -2068564, 10268193, 24206972, 36911484, 26975616, 7109245, 17413944, -10252624,
+8943196, -926639, -580894, -1887101, 3783866, -8018704, 10390063, -9882183, -44627396, -25302726,
+-922344, -6758668, -14957760, 5422933, 14388677, 1493038, -15808701, -793495, -15154792, 41043780,
+-12607876, 944356, 31110058, -1744294, -31919124, -22201222, -21817896, -9659918, -11617350, 34195992,
+3541201, 5645198, 17040282, -9365176, -9545028, -5738613, -9730248, -20845624, -4901632, 39198556,
+12645457, 9322763, -26047902, 9617506, 2039573, -18543522, -2166811, -9287867, 42526620, -33627984,
+-29038810, -10223633, 5303748, -10011032, 1295470, 11492796, -22141094, -5936182, 36025112, -29018410,
+5098126, -7262253, -17649094, -30778272, -23528904, 1154809, -42876660, -51833276, 12305081, 10634339,
+8324184, -46315316, 35775468, 43476344, -14759655, -12572980, 2709051, -1797444, -9800578, -24057722,
+17437030, 65597572, 17022566, -16193637, 314606, 10424959, 21876416, 5936182, -38816840, -34603476,
+37494528, -7171522, -15351287, -22603340, 7779260, 42874512, 13121662, -13547401, 7895224, -1658394,
+-7642358, -3744675, -2302639, 18973018, 10477036, -6444599, -10503343, 8589398, 4968741, -1591285,
+-4354023, 6943889, -10160282, 6306086, 16425029, -1510755, -9108015, -2731599, -5870147, -9949292,
+-18422726, 2685428, 14031658, -9397925, -11627550, 5735392, -14509473, 85899, -23591718, 11317776,
+14674830, 37556804, -11977590, -5115843, -15573551, -15952582, 4483409, 8275328, 15600395, -1881733,
+-3405372, -15748571, 6308233, 3877819, 4699768, 9933722, 11427834, -14187888, -37455872, 10375030,
+14631343, -55451784, 30376694, 1328756, -15811385, 5341329, 20236276, -28643674, 17701170, -26594974,
+7184407, -1514513, -13422310, -7424925, -3636764, -19568944, 14039711, 12323872, -573915, 6813429,
+852014, 10908143, 14179835, 13755707, 20338280, 17516488, -10814191, 2764348, -22193170, 23571318,
+-18194556, 5806259, -3506304, 4842576, 1154273, -16761647, 15289010, -8471823, -16243566, 34129420,
+-27267136, 8240432, -7859254, -13501767, 13761075, -3497177, 4089346, 21289080, -25661892, 1093606,
+-31442918, -61914636, -1568737, 19801946, -7429757, 79709760, 16232292, -31072478, 8768176, -43371652,
+15099494, 31124554, 36719824, -12563316, -7219303, -48223356, -55319716, -4600984, -34478924, 8229694,
+-2153389, -30059940, -7025493, -14857366, -32937030, 27064736, 53167400, -14858439, 3780645, 11519102,
+-14062797, 16495896, 20984674, -14500883, 2469606, 105764, -26421028, 13268765, 2270964, 8087424,
+9720585, -18641232, 7361037, -9865540, -14958297, -16939888, 14492830, -10492068, 5988258, -16374026,
+-5876589, -1068373, -19983946, 19676318, -12646531, 3977140, 6046777, -18619220, -2983392, 14444512,
+-1641751, 2101313, 3269544, -5404680, 8910983, 18629420, -2153389, 10841034, 12794171, -15829639,
+-30061012, 10241886, 4296578, 17448842, 20932596, -27201102, -26673358, 4728222, -39508332, 8123394,
+-2848100, -23068806, 10400800, -14986215, -10074383, -18621368, 9517648, -20275466, 25973278, -2777233,
+9639517, -5998459, 34878892, -9484898, 19173270, -329102, 22852984, -6382859, -11480448, 7436736,
+-12997108, -13789529, 1915555, 25948582, 16738024, -17681844, 18924162, -13263396, -20252382, 5718749,
+27814746, -10685342, -11265162, 14848776, 6716255, -13833553, 1603633, 18893024, -7821673, -18174690,
+9960029, 7579007, 11668889, 21279416, 4522064, -12833899, -4161287, 46743204, 49159120, -13562970,
+-40596032, 31192736, -13530221, 8807904, 4490389, 52641804, 7305203, -27300960, -9910637, -6602439,
+1556389, 8164733, 12780749, 17126718, -20240034, 6553047, 4704600, 30539902, -7526394, 21528524,
+23217520, 12838194, 11121818, 6703370, 18511846, -17615272, 19915764, 25262460, 18294414, 3123515,
+-35633196, -5288179, -22942104, 1125818, 15584289, 5260798, -7766375, -12493523, -7236483, -1937567,
+-794032, 6620155, -7285339, 2080375, -649077, -5532992, 11009612, 4318053, -9631464, -4527433,
+-2376191, 13377213, 125628, 2808372, -12666932, -9076877, -16844324, -7904888, -896038, -1523640,
+374199, -2868501, -15074261, 4020626, -5050882, -2395518, 2414845, -4146791, -57445, -13085692,
+-2979634, 664109, 372588, 394600, -3195456, -3207804, -981400, -5108327, -7243463, 55684252,
+23128398, -24858196, 5847598, -25978110, -14406931, -1596117, 9269076, -3980361, 20126754, -24008330,
+-956704, 9751723, -1017907, 10134512, -1647657, 3687766, 2120103, -17146046, -5652714, 4764730,
+-16393353, -16099685, 1167694, 4405026, -11716671, 8451422, 7757785, -4642323, -8341900, -1087701,
+1561221, -2636036, 6637335, 1972464, 5185636, -6931004, -3234110, 12908524, -193274, 874026,
+5928129, -3875134, 6580964, -6252399, -12225624, -7583302, 12212740, -9639517, -7454990, 999654,
+-9982041, -10332081, 14902463, -14796699, 23674934, 5472862, -10787347, 10695542, 1457605, -17456894,
+1345935, -2924873, -3304977, 8649527, -472983, -10138270, 20111184, -11935714, -4931160, 10769094,
+3178276, -4172561, 321049, 3509525, -539555, -597000, -2302103, 4932233, 8237748, -63351,
+-14280229, 10342818, -7463580, -824097, 11844446, -528281, -3888556, -226560, -10612864, 5304822,
+3400540, -889595, 27380, 4517769, -10339597, 1009854, -3677029, 1294396, 3990562, 1349694,
+-4512400, 10213432, -15316390, 2254321, 1582696, -799401, 1668058, -1949378, -8737037, 9687299,
+-4571993, 6999723, -90731, -822486, 8664560, 3589519, -7626788, 3081102, -3946001, -2953864,
+1500017, 5893769, 5513128, -1962263, -7530689, 4030290, -4372277, -33574832, -40375912, 34054796,
+137916768, 53965728, 63273460, 869194, -129125504, -95083600, -49707804, -75767520, 34001644, 65270080,
+26913876, 115376784, 65284576, -4322885, 27121108, -58306864, -117659016, -46937012, -81719808, -13043279,
+56630756, 47723528, 43191800, 71928888, 44377748, 12225624, 19767050, -5328444, -83713744, -36973764,
+-30141006, -115656488, 21472688, 15196668, -51357072, 83361560, 82481088, -2780455, 104355360, 51337208,
+-48446696, 32411970, -48163228, -100250440, -7935489, -60540784, -87738664, 15548318, 9411347, -5200132,
+81851336, 78947408, 47149616, 70283920, 42714524, -27271432, -30760018, -54695336, -93787056, -69177424,
+-33005214, -30909270, 16856136, 53028352, 36238788, 58257472, 87923888, 34253436, -11530377, -10939819,
+-60773252, -49038864, 4533338, -56297356, -25558814, 30642444, 7570417, 38345468, 30822832, -15623480,
+10299332, -3092913, -20959978, 4721243, -9336185, -9412958, 19477140, 6826851, 8272644, 25963078,
+-14822469, -5679558, 14105209, -19196894, -15781320, 7432978, -46141372, -7581154, 15913391, -37124624,
+18300318, 23379118, 2555506, 58543088, 55650428, 12910135, 22645216, -16091095, -49568216, -24765318,
+-65993784, -74876848, -42454676, -17945448, 14334990, 71711456, 83000776, 87012280, 77242304, 44232796,
+-9462350, -48297980, -76620608, -106884016, -91475824, -50193672, -12891881, 43451648, 77698104, 77627240,
+69367480, 45273252, -8191040, -13551159, -21918828, -33120104, -23543936, -20556250, -24495272, -12923020,
+-6561637, -5403606, 5477157, 15188078, 19863150, 25978110, 23922430, 19169512, 8951249, 2305324,
+-7988639, -10641318, -11562052, -6452652, -3611531, 23085, -782758, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
536871,
-3439732, -4676683, -3805878, -653372, 3687230, 5433134, -2558190, 3172907, -1756642, -4524748,
--1240172, -2529199, 1487669, -622770, -2186138, 2004676, 3043521, 681826, 3679176, -6740951,
--7283191, -4679904, 678605, -18254, -1244467, 351114, 2224256, -728534, 3003256, 2480344,
--3180960, 1210644, -237297, 3888019, 3586835, 1351841, -3809099, 2497524, -2268817, 1269700,
-2501282, -6088653, 6653441, 9768366, 1280437, 4425964, -3595425, -727997, -3375308, -1756105,
-3028489, -1013075, -3490735, -927713, -2196876, 1681480, -2142652, -1951526, 198105, 1784022,
--1775969, -2009508, -867583, 3468723, 3127810, -2643552, -969052, -3123515, 721555, 4121021,
-1148904, -1512365, -1967095, 1548873, -550830, -2812130, -1022739, -1899986, -269509, -1020055,
-1633698, 1523640, 823560, -905701, -1241782, 2776696, -373125, 753230, 1446330, -417149,
--34897, -579284, 852014, 109522, 217433, -816581, 119185, -260919, -803696, 36507,
--120796, 597000, 1468879, -817118, 345745, -161598, 717796, 869194, -206158, -362925,
--177704, -48855, -775778, -331786, 355945, -303332, 154619, -21475, 657667, 137439,
-15028627, 6916508, -521839, 3146064, 2856153, -3605625, -1768990, 4166655, 1894081, 4534412,
--3299609, 6594386, 2475512, -6512781, 5163625, 271120, -120796, -3439732, 3776887, -7042673,
--6043556, -1299765, -2151779, -1175210, -2161979, 807991, -1314797, -2934000, -2121177, 2440078,
--2678449, 1700807, 1073742, 675384, -2956548, 4129074, -8671539, -1536525, -55298, -1532230,
--1097364, 732292, 1608465, -2794950, 2200634, -3384434, 3212636, 1002875, 694711, 3305514,
--2356327, -584116, 1334661, 5181341, 1275068, 2160906, -1212791, -4535486, -6318434, 1137093,
-3408057, 4445291, -1847373, -7073811, 1032403, -2907156, -1983201, -1656784, 1937030, 180389,
-6874632, -231928, 2301566, 1324461, -1063004, -1822677, -1942936, -7230041, -2136746, -1206349,
--1001264, -1408212, 1317481, 3577708, 984621, 3391951, -61740, -354872, -1118302, 909459,
-1222992, -376347, -1420560, 1181116, -744640, 444529, -636192, 597537, -1061931, -673236,
-949725, 282394, 522912, -409096, 309775, -696322, 8085813, 1894618, -6847252, -7743289,
-2115272, -2348273, -6435472, 7310571, -3591667, -1174137, -1005559, 5738613, 1194001, -3293703,
-4003983, -3089692, 6056978, -8361765, -5540508, 6701223, -6976638, -7011534, -2833068, 5731634,
-2492692, 2756832, -678605, 5138929, 3088618, -507880, -6763500, 1850057, -1887101, 2454037,
-2134599, 1864016, 5854041, 1595580, -5785858, 555661, 4012036, 5930813, 1981591, -3209414,
--773631, -4745402, 2031520, -8437463, -339302, 9167608, 482110, 1007707, -4696547, -5775658,
-883690, 1296006, 6716255, -1433982, 572304, 738198, -1000191, 722628, 2229088, 432181,
-4724464, -1249836, 3136937, 499290, 845572, 603980, 5545340, 267899, -776315, 1062468,
--1185411, -3714073, -1999307, -3829500, -89121, 7025493, 1466195, -2245731, -783295, -3946001,
-2270964, -3079492, -2189360, 802085, 120796, 279173, -1794760, -2502892, -520228, 678068,
--848793, 1510218, -154082, 46171, 1440962, 945430, 1452236, 1242856, -3758, 526134,
--1156420, 119185, -1023813, -1059783, 798327, 993748, 1669669, 1257889, -783295, -146566,
-893890, -581968, -1243393, 776852, 202400, -18589692, -12195023, -2648921, 1991254, 3027415,
-280784, 6442, -7144141, -407485, -1583769, -1158031, 121333, -1777043, -854699, -5225902,
-2694018, -11031087, -4080756, 1026497, -2257542, -3346853, -1973001, -6260452, -3228742, -2579665,
--3024731, 1429687, -4911295, -2643552, 6004365, 3976066, 373125, 2939905, 2097018, -1938641,
--4081830, 2442226, 8984535, 1063541, 1097364, -3513820, -3210488, 2694018, -7756174, -4068408,
-8529805, -7783555, 2334315, -1822677, -3976603, 1853815, 548145, -2132988, 479426, 1359357,
--2736968, 70867, -563178, 5327370, 4659503, 738198, 1237488, 2336999, -179315, -983011,
--1845762, -10817412, 5238787, 3329137, -2980707, -70867, -4568235, -1189706, 627065, -3277060,
-1489280, -3985730, -2262911, -4647692, -6984154, 4632122, -1342177, 255551, -5904507, -1420560,
-746787, 1027034, -1566053, -220654, -338229, -1573569, -3060164, 539018, -1576790, 1364726,
--253940, -715649, -637803, -265751, 1480690, 313533, -2266669, 482110, -688805, -132070,
-716186, 394063, -596464, 589484, -1780264, 1007170, -1618666, -444529, -16087337, 2477123,
-3774740, -1016834, -1409286, -8910983, -3644280, 2439005, -7953743, -7627325, 1557999, -7256347,
--3732864, -191126, -4377109, 2463701, -3450469, 5432597, -2870649, -1893544, 1717450, 3795677,
-7038378, 4388920, -7844758, -437013, -582505, 3855270, 5799817, 9842454, -4380330, -3888019,
-5107790, -5398774, 1248762, 1530082, 8326331, 3036005, 4647155, -6214281, -2740189, -8478802,
-6692633, 6989523, 8055748, -147640, -1733556, -5420249, -1132798, 5393942, -2513093, -3500935,
--3204583, -4262755, 915902, 971200, 1270774, -5826660, -77846, -5710159, -307627, -878858,
-2315524, 1971927, -1744294, -2609730, -7202660, -453119, -577136, 4405563, -2782065, 7342247,
--4205310, 884226, 3419331, 6665789, -5184026, 1513976, 3512210, -6060736, 3017215, -39192,
-7416872, 2434710, 1660005, 4519916, -462246, 1207960, 3506304, 1377074, 37044, -1338956,
-56908, 1435056, -479963, 1833951, 2871723, 2305324, -1088774, 1257889, 180926, -826781,
-1148367, 1465658, -2684, 644245, 1837172, 1302449, 1481227, 660888, -724239, -1247688,
-1415729, -1336272, 1409286, -794569, 102005, 1717987, 1346472, -476741, 19902878, 17075180,
--620086, 513785, 8873402, 1217086, 4342212, -2657511, 4867272, -3750580, 8957691, 3074123,
-6442, 1835025, 617938, 11353209, 7655243, -7435126, -6204081, 2416993, 1190780, -2379949,
--1625108, 1443646, 5432060, 4044786, 2473901, 587337, 2862059, -1891396, -161061, 6256157,
--6881075, 2761664, 8337069, 6266894, 11338714, -1113470, -1739999, -986232, 702227, -3620121,
-12322261, 11311333, 8064875, -3757560, -1140851, 4811974, 3901978, -3448859, 753767, 6475200,
--2437394, -3027415, 4099546, -11989938, -1413044, 666257, 1744294, -4056597, -7860864, 3204046,
-5341329, -6375342, -2397129, -6933151, 2561948, 489626, -1482838, -1489280, -6075231, 10139881,
--2695092, 1365800, -10339060, -2446521, -4952634, 12057584, -2158221, -1654099, 5337571, 2484102,
--66572, -3845606, 3534221, -2529736, -3628711, 5591511, 5168993, -76773, 3213173, 119722,
--1524177, 2967823, -503048, 1159641, -1005022, -1306744, -376883, 2309619, -1759326, -1305670,
--124554, -1747515, 574452, -1575179, -963146, 152471, -340913, 2295123, 16106, 675384,
-1405528, 1473711, 329639, 763967, 1148367, 3058554, 517544, 2882997, 421981, 1429687,
-2029909, 13103408, -499290, 8278013, 11330661, -5987185, -13932874, 578210, 10613938, -8215199,
-7455527, -2223183, -10081362, -4664335, 10171019, -9934796, -8756365, 6377490, -10126996, 3369939,
-4840428, 3969624, -2869038, 6132140, 1736241, 1146756, 3954054, -6479495, 8827232, 4336307,
-3835406, -1827509, -980863, 16440061, -5755793, 1015223, 4283156, 8269960, -11245298, -9265318,
--8623757, 326418, 638340, -583579, 5233955, 1622424, 9342091, 3753802, 5474473, -886374,
-731755, -4625143, 8348343, -3787624, 8233989, -4498442, -7106024, 12246026, 9949292, -14097156,
--12439836, -8182450, -6397891, 4429185, 698469, -2860448, 6478958, 7143605, -8586176, 5045513,
--700617, -17185774, -5682242, -8668855, -7864622, 2968359, -2682207, 5635534, -1307818, 841277,
-10268193, 10460393, -980863, 2746632, -921271, 1622424, 1469416, -3547106, 2936147, 853625,
--145492, 8825621, 2642479, -69793, 252329, -1584306, 2597382, -295816, 1705102, -1918240,
--118648, -2022930, 523986, 2291902, 710817, -13959, -290447, 2004139, 1280974, -1277753,
-159451, -62814, 287763, 1014149, 434865, -7471633, -10411538, 6240051, -5972689, -4431870,
--3697430, -12159052, -1241782, 5394479, -3247532, -754304, -4396436, 9980967, 1583769, 6350646,
-4904316, -8078297, 8320426, 12377022, -3754338, -5079873, 1379221, -2168959, 5399311, -15343771,
-5921150, 13262322, -1714766, -4358318, -3732327, 5761699, 11945378, -2832531, 3057480, -5316633,
-8202851, -9826885, -3704946, 1900523, -1476395, -7625715, 14086419, 9883257, 7469485, -3129421,
--10505490, -1306207, -14949171, 2589329, -1026497, -483184, -246424, -2266669, 8206072, 6889128,
--10361609, 5830418, -6175089, 8628052, -719944, -1748589, -643171, -9137543, -1671279, -8335458,
--18382996, -836445, 2237141, 1460289, -7007776, -236760, -1947768, -13783624, 360777, 11979201,
--7483981, 3140158, 3992172, -1511829, 935229, -3536906, -2010582, 2819646, 3496104, 3764002,
--864899, -2394981, -827318, -2574296, 2204929, 1047972, -2084670, -617938, -1908576, -2168422,
--194347, -1947231, -2879239, 1844689, -522912, -2266669, 1905355, -1583232, 1589675, 2291365,
-1062468, 2203318, 1651415, -9127, 1567663, 4959077, 2487860, -2441152, -1582159, -2804614,
-118648, -3633542, 2042257, -194884, 2937758, -730144, 2316061, -357556, -1438814, 4687420,
-2364916, -19313932, 1288490, 11377368, 6099391, -8761733, -7255811, 14244259, 3201898, 3257733,
--2865280, 3739843, -217433, -9405442, -2543695, -9882183, 4636954, -5857799, -978179, -9626632,
--10808285, -14360760, 8959839, 6169721, -4701916, -5072893, 3984119, -13181255, -1281511, 1072131,
-3130494, 5899675, 2774012, 446677, -4657892, 2003065, -4283156, 3572339, -4111358, 2384781,
-1156420, -4123706, -5523865, -10313290, -6924561, 2702608, -17798344, -4758287, 9656160, 5250061,
--2208687, 23217520, -3420942, 10795400, 10534481, -16793858, 1029718, -2167348, -14317273, -7379291,
--7910793, 322123, 1599339, 16067473, -2643016, 1611150, 10772852, 8114804, -1959579, 10870562,
--5187784, -3889630, -7282654, -9496173, -14001593, -5221070, 7883950, -15102716, -7807714, 11803107,
-8486319, -5039608, 10656351, -4698694, -804770, -401579, 5093831, -3278671, 5076652, -3136400,
-4334696, -1194538, 1755031, -1986422, 3496640, 3491272, 1418950, -520765, 3955665, -2515240,
--3001645, 3218541, -936840, 3505767, 2437394, 1782411, 2251100, 1491964, 599148, -5764920,
--1138703, 32212, 1576253, -1468342, -2529199, -1975685, -5657546, 2215666, -170188, 3627100,
-1941325, 3534221, 2565169, 825707, 1140851, 13302051, -2288681, 4273493, -6478422, 3818763,
-5623186, -3432216, 4816269, -7400766, -8069707, 12345883, 6780680, 7969849, 9904195, -54224,
--8067559, 10665478, -9299678, -12563853, 229781, 11776800, -1640678, -10207527, 1448478, 13862007,
--1942936, 3806415, 1399623, 19449222, 1288490, 4163434, 9657234, -1219234, -4904316, -9315247,
-1381906, -1289564, -8887898, 295279, -5207111, 3575560, 13257490, 136365, -7879655, -2353105,
--7299297, -3919158, -1071058, -3105798, 1864016, -9825811, 10640245, -5569499, 17920214, -4488778,
--12873628, 751619, 717796, 6340446, 2792803, 3437048, -13201656, -10763725, 7882339, -11208254,
--15532749, 4500052, 3202435, -3535832, 16997870, -13732621, -18951544, 7147363, -12905840, 1269163,
-1904818, 392990, -12402255, -7595113, -16160888, 5603859, -1522029, -872952, -2394444, -7220377,
--3138011, -5470178, -2592013, -2105071, 6338835, -4722854, 4901095, 1768990, 5058398, 857383,
-773631, -6608344, -2283849, 1837709, -1995549, -7213398, 1575716, -1139240, -2679523, -2514167,
-2460480, -2874407, 3271691, -1628866, 3942243, -687195, 2090039, -3740917, -3545496, -81068,
-450435, -1305133, 5885179, -4950487, -4579509, -3086471, 2950106, 3051574, -3670587, 883153,
--10432476, 5819144, 519154, 14220637, 14780056, 21497922, 9718974, 4625143, 2914135, 7143605,
--7338489, 8246337, -12965433, 6369974, -1322313, -1009317, -24800752, -9489193, -4118874, 8510478,
--1114544, 2128693, 2626373, 2328409, -12702366, 13168370, -550830, 5409512, 380105, 12295418,
--13178033, 9203578, -6505802, -232465, 9840307, -11155104, -5075578, -12163884, -4927938, -13554917,
-12363063, 9205726, 16627966, -741956, 3892314, -15119359, 3405909, -15678241, 15252503, 4406100,
--2543695, 14572287, 14738180, 7634305, -8872329, -13089450, -19013284, -769873, -6768332, -9484898,
-10230075, -2762738, 23896124, -17677548, -6528351, 13761075, -14343580, -5615133, 3234110, 315143,
--2141578, -13651017, 6202470, 2392834, -7519951, 6847252, 14379014, -12351789, 13877039, 17410724,
--5255966, -9133248, 7087770, -6998113, 6543920, 4277788, -7325604, -5604396, -1502165, -2209224,
-10116259, 3483755, -1787780, -4891968, -8140574, -4522601, 2498060, -5122822, 2415382, 4946192,
-3084324, -3433290, 2601140, -2804077, 3824669, 2564096, 4274566, 2661806, 144418, -4525285,
-2929168, 4584878, -4656282, 217970, 1534914, 1723893, 3875134, 385473, -561567, 4355634,
-5267241, 1063004, -2480344, -4132832, -154082, 3704409, 4491462, 3149285, 22266184, -5068062,
-3116536, -1168768, -7377143, 10021769, -3693135, 3726421, 1166084, 14344117, -4543539, 16722455,
-242666, 8334384, 7344931, -1298691, -5453535, -16248935, 7683697, 16951700, 847719, -97711,
-11709155, 9984725, -766652, 1855426, 20113332, 12642773, -3700114, 4402879, 13205414, -3329674,
--14731738, 360777, -10712722, -1671816, -6812355, 630286, -20361904, -6058052, -7457137, 347355,
-4189204, 4277788, 19689204, 21828634, 11448772, -15103252, -8973797, 12265353, 17147120, 3635153,
--15788300, -2590939, -3793530, -16404091, -10424422, -12424267, 15101105, -5683316, 2007360, -15446313,
-22378928, 16556025, -1939715, 6834904, 37192808, -1903207, -7720741, -14347875, -949725, 9884330,
-7759396, -5790153, 11149735, 22277458, -9644349, 14198625, -6571300, 4628901, -9047349, -4890894,
--7821673, -10152229, -5302137, 6591164, -127775, -2262374, 1511292, 2710124, 11922829, -1376537,
-1088237, -187905, -5674726, -652298, -2105608, 1062468, 4745939, -3207804, -1618666, -3964255,
--1982127, 1305133, 1348620, -1478006, -8082592, -7487202, -2684892, -9208410, -8126615, -1527935,
-6934762, 6191196, 5260261, 1132798, -1411971, 236760, 2854006, 2433636, -1152125, 1643899,
-1071594, 11319386, 907849, -7062537, -9737228, -15964930, 20779588, -12985834, 15634218, -11394011,
--17415556, 973884, 21526376, 14078903, -16189342, -10588705, 3543348, 3321620, 7172059, -1141388,
-14296872, 7825968, 18889804, -6829535, -3359738, -556735, -3860639, -18246632, -13708462, -4127464,
-18986440, 4097936, 1329292, 755914, -18032420, -20223928, -15892453, 8222178, 9097278, -6851547,
--4769561, 1874753, 2020245, -10744398, 2939368, 20301774, 3358128, 12750684, 12254615, 9033390,
-21499532, 31222802, 10033580, 627065, 4289599, 12378633, -6693707, -3375308, 8073465, -2725157,
-4224637, -2799245, 13245142, 4845260, 9321153, -2570001, -3783866, 6905771, 17759690, -1235340,
--14940044, 9499931, -23264228, -26670674, -9371082, 13901735, -9148280, -26378078, -16388521, -6663642,
-9433896, 6657200, -14526653, 25725780, -8477729, -17932026, 4467303, 7080791, -6150930, 8974871,
--9519795, -3599720, 3086471, 2463164, -5123359, 4584878, 605054, 8145406, -4738423, -9638980,
--5898064, 1659468, -2407866, -1918240, -1042066, 107374, -1057636, 6606197, -1410897, 1123671,
--2949032, 3059627, 5137855, 1086090, 4910222, 1641214, -8389682, -3555159, -270583, -6976101,
--8570070, 3992709, 5497022, -4520990, -9128953, -9683541, 3644280, 1619740, -750009, 6258841,
--3956739, 8410083, -37284076, 1984812, 18926310, -3520263, -4414690, 22918482, -12287901, -12752295,
--16187732, -5417028, -5458367, -10845329, 3219078, 5213017, 8863202, 6200859, -5168457, -4142496,
--1814087, -4637491, 1552094, 4267587, 18700824, -8067559, -24195162, 12883291, 114354, -776315,
--20122996, 8911520, 3918621, -2152852, 22944790, -6635188, 2502892, -2197413, 10122701, 12127377,
--13412646, -1395864, -7522635, -952409, 6866579, -5155572, 10510859, -16462610, -13674102, -8734890,
--14610405, -2623688, 1331440, 2182917, -20437066, -13518946, 9730248, 16400333, -7827578, -9306120,
-8666170, -18791556, -16957604, -16500727, 18034568, -30531312, 9880572, -1737314, -17966386, -5828271,
-15151571, 38597796, -5197984, -10791105, 12741020, 29569240, 10644540, -6805376, -7215545, -1472100,
-8104067, -671626, 3767760, 17551384, 1134945, -6724845, -12509092, 10232760, -14754286, -10165114,
--7365332, 5081483, -6110128, -10791105, -6794102, -6615324, -137439, -7995082, 2653216, -6225018,
--597537, -2125472, 7436199, -5794985, -4514548, -11742977, -3528853, -2194728, -3984119, 10902238,
--8211441, -10572062, -748398, -9295383, -8463233, -3965866, 1153736, 8134668, -1176821, -3673808,
--1692754, -5613523, 3764002, -11187316, -1061394, 11281268, 5322538, 7332583, -3000035, 2691871,
-3539590, -2889439, -4466229, -6381248, 2088428, 5355288, -2363306, -20855288, -33608656, -1828046,
-38245612, -6031208, -2888366, -25264608, -2058900, -1589138, 2498060, 8498130, 1009317, 7079717,
-353261, -319975, -18228914, 2668249, 16302085, -11019275, 20253456, -8513699, -1415192, -18006650,
-11435887, -8931384, -6009733, -20796768, -28453622, 14529874, -13968307, -13528610, 4809827, 2972117,
--6249715, 1455994, 15869904, -4693326, -15446850, -9439264, -19736986, -2346126, 5444945, 13607530,
-2626909, -3945464, -3508988, -8068633, 4546223, 14123463, 2180233, -8778376, 15870441, -15310485,
-1495722, -26410828, -7937100, -5154498, 32444720, -20578262, 6512244, -6672769, 4134980, -3779571,
--3786551, 644782, 13109851, 4030827, -24197846, 26455388, 7934952, 9451612, 3271691, -10535555,
--8200703, -3016678, 3196530, -585726, 5134634, -14302241, -15049029, -2433636, 7109782, 16067473,
--10107669, 13625784, -3509525, 5305895, -10930155, 6131066, -17717276, 19633906, 696858, 2176475,
-6281927, 8845485, 691490, -12277701, -6089727, 3285113, -11806865, 3132105, 5287105, 4886599,
--7099044, -4328254, 11587822, 2116345, -12141336, -1764695, 10019085, -3893388, -14899242, 16600049,
--4723391, 6379100, -3012920, -4843113, -8041253, 5050882, 1206886, 5251672, 595927, 8861591,
-848256, 6342593, -3336653, 341987, 3808026, -2379949, -3759707, -16653736, -9628243, 35494684,
--4250944, 2941516, -18313740, 16556562, -9396315, 12187507, -9483288, 21437256, 2342905, 2174864,
--10222559, -8544837, 12714177, 27788976, -11357504, -16951162, 8214125, -6678674, 18563922, 23156316,
-11661373, -3483755, 14573898, -9523553, -8605504, 19454592, 27043798, -29982092, 2719788, 4472135,
-5344013, -10146323, -436476, 12105902, -30030948, 9107478, 17983028, 6664716, -13205414, -3727495,
-22022444, 17811766, 6201396, -10236518, -13087302, -26226680, 37697464, 6774774, 19521700, -2798708,
--7680476, 4190814, 11485279, 353261, -314069, -30481920, 5012764, 28751584, -4844723, 27551142,
--16236587, -7426536, -11230803, 6423124, 26217018, -8169028, -449898, 23440858, 28932510, -9345312,
--20619602, -18671296, -15966004, -7584912, -6564858, 16464220, -19856708, 10977400, 12735115, -4593468,
-1743220, 12897787, -2178622, -7452842, 8089571, 5472325, 4467303, 11853036, 2939368, -2152852,
-11087995, 3805878, 4883915, 5413807, -1513439, 600759, -2110977, 4605279, -19433116, -5555004,
-1180042, -3925600, 8053601, -14926622, -1329829, 96100, 5624260, -448287, 8732742, 5732171,
--3637301, 11772505, 6422587, -4241280, 8939974, 9171366, 462783, -6118181, 4898410, 8914741,
-5869610, -1478543, -8334384, -4376035, 2674691, 1234803, 1797444, 14156749, 10413685, 24984362,
--7557532, 18095234, -9577240, -3819300, 16817482, -566399, 22923314, -27668716, 17335024, 3160022,
-7698192, -11130945, 8389682, 20640002, 40135932, -9243306, 10189273, -567473, -26646514, 24414204,
-2459406, 9538049, -4884452, -12480638, -4653060, -1036161, -10358924, -6514929, 34055332, 2362232,
-13077102, -9777493, 24124294, 106300, 11682848, 4920959, -14172855, -3048890, -8761733, 222265,
-4318053, 28519120, 14483167, 1159104, 3331821, -1063004, -2435247, 4627291, 2781528, 17829482,
-14490146, 7268696, -8589398, 12353400, 26036628, -24747064, 22804128, 3592203, 6785512, -24879672,
--11880953, -31245350, -25252798, -5065914, 16640851, 13873281, -43314208, -438087, -19616190, 10104447,
-42959872, 21498996, -27885612, 15013058, -11572789, -14458471, 23578834, 11838540, -12392591, -6977175,
-20713016, 16938814, 9159555, 26406532, -7381975, 16116865, 14140643, -17163764, 23517094, 6305012,
-27323508, 8176544, -2807298, 16000901, -1946157, 3994320, -19633370, 14323179, -9721658, 7330973,
--7313793, 3088618, 8680129, 21689048, 5441724, 13071196, 3049427, 3980361, -7551090, -1920924,
--2930242, 1495186, 10654740, 9105331, 16191490, 5810554, -2386391, 2325188, -4290673, -2515240,
--17064442, -3139621, 3710852, 4918812, 13845364, 12390981, 11230803, 14028974, -36266704, -55672976,
--14601815, -6265284, -13826573, 3097208, 18711562, -19624780, 28263032, 10372883, -40940704, -31345746,
--6376953, 22349400, 709207, 1876364, -4374961, -12944495, -39646844, 1632625, -33329484, -27519466,
-13385266, 10718091, 9652939, -4646081, -13001940, 29971892, 17843442, -12710956, -26036092, 19792284,
-9875204, 4668630, -12320114, -30335354, 11406359, -14236206, 4417374, -25837450, 31279710, 792421,
--12729746, 3080029, 7760469, 25929792, 16048682, -6622840, -1453310, 9092446, 8818642, 10002979,
--6065568, -40517648, -32048510, 6467147, -4561256, 23746338, -4728222, -10159208, -28782724, 33246268,
-12563853, -23128936, -24078660, 34105260, 31752156, -310848, 23238994, -3105798, 607201, -9659918,
--6091874, -18280992, 22381074, -4150012, -5337571, -9756555, 9101573, -28778428, 13374528, -8406325,
--5638755, 20491826, -673773, 3265249, 4910758, 18813568, 9372692, -7633231, 13706851, -4128537,
-16594680, 6680822, -19146964, 4726612, -9844602, 9002251, -8035884, 223338, -12805445, -6426345,
-6658810, -12408161, 5043366, 4279935, 5187784, -11090679, -8196408, -14279693, -12773233, 16699370,
--6258841, 10786810, 6535867, -10205379, -1683090, -8924405, 122943, -5659157, 20859046, 17796734,
-11814918, 16623134, -4318590, -18449032, -21365852, -3026341, 6160057, 30745524, 18547816, -7099044,
--5978058, -8286603, -15546708, -949725, 6721624, 3106335, 19530290, 1913408, -13764833, -35365296,
-55763708, 1405528, -43133820, -3264712, -16057272, 7294465, 21401286, 19439558, -23997592, -38509212,
-6577743, -18431316, 5873905, -3755412, 16979080, -5574331, 2429341, 10087268, -15731928, -19291382,
-2038499, 5063767, 16811576, -385473, -26896696, 17691508, -15001247, 13903883, -13038447, -8876624,
--1468342, -4268661, -28916404, 5432060, 8079371, -27958090, 11826192, -10988674, 5601174, -9329206,
-27011050, 21031918, -27236536, -14457397, 18602578, 23309324, -27870580, 36792836, 2386928, 29625610,
-21525840, 34959960, -10814728, -14838575, 7850664, -29011430, 4430796, 3664681, 50939924, -15794742,
--47884052, 80834504, -38193532, -29381872, 46605228, 21049098, -27193048, 45282912, 5039608, -36888400,
-45871860, 5535139, 4106526, -8021925, 6738267, 30434676, -7448010, -10620917, -15850040, 22657026,
--8259759, -5822902, -3191161, -9165997, -9780177, -14234058, 13598403, -2057289, -1282048, -5182415,
--3519189, 1681480, -6152541, -10718091, 1343251, -8686571, -16030965, -16715476, 20686710, -9062918,
-1902671, 19047644, -9222369, -8839043, 1321776, 9400610, 4053376, 3949223, 18358838, -11449846,
-2629594, -8471286, -5254356, -3795677, 30378840, 14976551, -4977867, 4199405, -16155519, 5033165,
--14789720, -9302899, 7093139, -4054986, -30488900, 18610094, 7627325, -5825587, -50255948, 7009387,
-14988362, -37600292, 17184164, 10033044, -13254806, -3691525, -706522, -9159555, -3071975, -5334350,
--16829292, 548682, -8410620, -1767916, -4155381, 8262444, 29965986, 25195352, -23167590, -2467996,
-31541702, -5439039, -5942624, -32192390, 3719979, 10694469, -5288716, 27610198, 65951908, -22087406,
--27797566, 47060492, -3132642, -25216290, 29308320, 19398220, -15191836, -22637162, -28101434, 8683887,
-15095736, -12409771, 44265008, 28985124, -55169928, -52842592, 30900142, -24806120, -32256278, 41998336,
-6767795, 56181932, 26934276, -6671158, -7508677, -40316860, -31507344, 92204896, 25456808, -19618874,
--44518948, 1379221, -18116172, -39654360, -6163815, 46761992, 19870666, 738734, 38416336, 33695092,
--10590316, -42572788, 6669548, 25769804, -10561861, -9832791, 53525492, 30911416, 5362804, -5451924,
--27449136, -26787174, -6909529, 25637734, 10315975, -10165651, -4851166, -11788611, 10070088, -7510287,
--10251013, -6453725, -1221918, 7847979, 10348724, 9337796, 3881577, -24255828, -8494908, -4575751,
-9285182, -9288404, 1745904, -2299418, 22552336, -14277008, -10036802, 23481124, 6548215, -11498164,
-18370648, -6118718, 5415417, 1722819, 4238059, -13741211, -3722126, 19410568, 18800146, 8082592,
--7354595, 5324149, -8453033, -6541235, -5168993, 10370735, -15610596, -2952790, 12537546, 49995568,
-41503880, -11044508, 29477972, 3130494, -22994718, 14770929, 25171192, 8516383, 10851772, -32958506,
--6788196, 3963718, 6626598, -4773856, -28797756, -10257993, 10302553, -6903086, -3116536, -24217174,
-37261524, 4772783, -30863098, 17546552, 43755516, -22512608, -13250511, 6518687, 14380624, -14026826,
--27674084, 23781770, 39779452, -3081102, -15757698, 5291937, 11199664, 18274548, 25448754, 1799591,
-46395848, -920197, -51864952, 525597, -5924371, 17010218, -5515275, -42149200, -1267015, -18132816,
--17929878, 25502978, 13242458, 14601815, 18130130, -37758132, -19916300, -6523519, -606127, 15430207,
-434865, -7612830, 966368, -12837657, -25922812, 2639794, 40061308, -20511154, 3725884, -15908022,
--11586748, 27603754, -33881388, -237297, 14743012, -11807939, 5442261, 4355634, 8305930, 9878962,
--17947058, -21231098, 35851704, -7331509, -11772505, 18668612, -18564460, 11707544, 2201708, -7440494,
-5550709, 15709380, -3073586, 2250563, -7788387, 3891240, 850404, -884226, -6971269, 8652748,
-4128537, -703838, -857383, 7283728, 5796595, -6486475, -12097312, 6694244, -862752, 3484829,
-550293, -2947958, 6021008, 328028, 4967130, -1825898, -1126355, -3319473, 812823, 5936719,
--1456531, 14567992, -6018323, -4210142, 486942, -6113886, 3826816, -43223476, -62003760, -54831164,
-110295832, 105287368, 105076376, 296649088, 105393664, -12213276, 19523310, -205112608, -249850064, -83937080,
--140196864, -194280704, 24983824, -10773925, -32512902, 213981712, 130604584, 54570244, 334143072, 157770784,
-29167122, 152371488, -36135172, -181773760, -174100256, -165839424, -229861824, -225025152, -52853868, -81204408,
--132513696, 154775584, 71257800, -55684788, 223462320, 72227392, -26243860, 252712112, 230200048, 53080964,
-238889296, 242449824, -9298604, 60250876, 27439472, -233230688, -270818624, -201627232, -381252448, -360993088,
--216846992, -289538784, -217855776, 24761024, 179109792, 203320528, 436755232, 397176576, 350167616, 377354208,
-278284352, 141373680, 43154756, -30522722, -212568672, -256203920, -274342112, -309107712, -293347872, -249975680,
--161589024, -117308440, -114790520, 22028350, 69610144, 136782368, 325055488, 337662272, 230827648, 288598720,
-121995328, -39716100, -95506648, -147853168, -202782048, -146757424, -98203888, -97641248, -33684356, -9064528,
-838592, 52167748, 66122632, 63123136, 96505768, 60898880, 39327940, 48821432, -28745680, -26458610,
-8225936, -78065328, -55330452, -20219632, -75537200, -46500000, -5207648, -75889384, -80305152, -53165252,
--78797080, -51562692, 59413356, 111162344, 176562352, 260577280, 243059184, 208193168, 195572416, 105966504,
--32239636, -162426544, -287866976, -341674304, -308279872, -249395872, -188383712, -88151520, 28366648, 112104552,
-157007904, 169647456, 149630224, 133777496, 124294744, 125515048, 87298432, 41714868, 19335406, -10277320,
--35206920, -31514322, -57379152, -61457224, -43352328, -31918586, -42579768, -40274984, -51890184, -58089968,
--54074712, -36619428, -17319992, 7194070, 10759430, 7631083, 514859, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+3439732, -4676683, -3805878, -653372, 3687230, 5433134, -2558190, 3172907, -1756642, -4524748,
+-1240172, -2529199, 1487669, -622770, -2186138, 2004676, 3043521, 681826, 3679176, -6740951,
+-7283191, -4679904, 678605, -18254, -1244467, 351114, 2224256, -728534, 3003256, 2480344,
+-3180960, 1210644, -237297, 3888019, 3586835, 1351841, -3809099, 2497524, -2268817, 1269700,
+2501282, -6088653, 6653441, 9768366, 1280437, 4425964, -3595425, -727997, -3375308, -1756105,
+3028489, -1013075, -3490735, -927713, -2196876, 1681480, -2142652, -1951526, 198105, 1784022,
+-1775969, -2009508, -867583, 3468723, 3127810, -2643552, -969052, -3123515, 721555, 4121021,
+1148904, -1512365, -1967095, 1548873, -550830, -2812130, -1022739, -1899986, -269509, -1020055,
+1633698, 1523640, 823560, -905701, -1241782, 2776696, -373125, 753230, 1446330, -417149,
+-34897, -579284, 852014, 109522, 217433, -816581, 119185, -260919, -803696, 36507,
+-120796, 597000, 1468879, -817118, 345745, -161598, 717796, 869194, -206158, -362925,
+-177704, -48855, -775778, -331786, 355945, -303332, 154619, -21475, 657667, 137439,
+15028627, 6916508, -521839, 3146064, 2856153, -3605625, -1768990, 4166655, 1894081, 4534412,
+-3299609, 6594386, 2475512, -6512781, 5163625, 271120, -120796, -3439732, 3776887, -7042673,
+-6043556, -1299765, -2151779, -1175210, -2161979, 807991, -1314797, -2934000, -2121177, 2440078,
+-2678449, 1700807, 1073742, 675384, -2956548, 4129074, -8671539, -1536525, -55298, -1532230,
+-1097364, 732292, 1608465, -2794950, 2200634, -3384434, 3212636, 1002875, 694711, 3305514,
+-2356327, -584116, 1334661, 5181341, 1275068, 2160906, -1212791, -4535486, -6318434, 1137093,
+3408057, 4445291, -1847373, -7073811, 1032403, -2907156, -1983201, -1656784, 1937030, 180389,
+6874632, -231928, 2301566, 1324461, -1063004, -1822677, -1942936, -7230041, -2136746, -1206349,
+-1001264, -1408212, 1317481, 3577708, 984621, 3391951, -61740, -354872, -1118302, 909459,
+1222992, -376347, -1420560, 1181116, -744640, 444529, -636192, 597537, -1061931, -673236,
+949725, 282394, 522912, -409096, 309775, -696322, 8085813, 1894618, -6847252, -7743289,
+2115272, -2348273, -6435472, 7310571, -3591667, -1174137, -1005559, 5738613, 1194001, -3293703,
+4003983, -3089692, 6056978, -8361765, -5540508, 6701223, -6976638, -7011534, -2833068, 5731634,
+2492692, 2756832, -678605, 5138929, 3088618, -507880, -6763500, 1850057, -1887101, 2454037,
+2134599, 1864016, 5854041, 1595580, -5785858, 555661, 4012036, 5930813, 1981591, -3209414,
+-773631, -4745402, 2031520, -8437463, -339302, 9167608, 482110, 1007707, -4696547, -5775658,
+883690, 1296006, 6716255, -1433982, 572304, 738198, -1000191, 722628, 2229088, 432181,
+4724464, -1249836, 3136937, 499290, 845572, 603980, 5545340, 267899, -776315, 1062468,
+-1185411, -3714073, -1999307, -3829500, -89121, 7025493, 1466195, -2245731, -783295, -3946001,
+2270964, -3079492, -2189360, 802085, 120796, 279173, -1794760, -2502892, -520228, 678068,
+-848793, 1510218, -154082, 46171, 1440962, 945430, 1452236, 1242856, -3758, 526134,
+-1156420, 119185, -1023813, -1059783, 798327, 993748, 1669669, 1257889, -783295, -146566,
+893890, -581968, -1243393, 776852, 202400, -18589692, -12195023, -2648921, 1991254, 3027415,
+280784, 6442, -7144141, -407485, -1583769, -1158031, 121333, -1777043, -854699, -5225902,
+2694018, -11031087, -4080756, 1026497, -2257542, -3346853, -1973001, -6260452, -3228742, -2579665,
+-3024731, 1429687, -4911295, -2643552, 6004365, 3976066, 373125, 2939905, 2097018, -1938641,
+-4081830, 2442226, 8984535, 1063541, 1097364, -3513820, -3210488, 2694018, -7756174, -4068408,
+8529805, -7783555, 2334315, -1822677, -3976603, 1853815, 548145, -2132988, 479426, 1359357,
+-2736968, 70867, -563178, 5327370, 4659503, 738198, 1237488, 2336999, -179315, -983011,
+-1845762, -10817412, 5238787, 3329137, -2980707, -70867, -4568235, -1189706, 627065, -3277060,
+1489280, -3985730, -2262911, -4647692, -6984154, 4632122, -1342177, 255551, -5904507, -1420560,
+746787, 1027034, -1566053, -220654, -338229, -1573569, -3060164, 539018, -1576790, 1364726,
+-253940, -715649, -637803, -265751, 1480690, 313533, -2266669, 482110, -688805, -132070,
+716186, 394063, -596464, 589484, -1780264, 1007170, -1618666, -444529, -16087337, 2477123,
+3774740, -1016834, -1409286, -8910983, -3644280, 2439005, -7953743, -7627325, 1557999, -7256347,
+-3732864, -191126, -4377109, 2463701, -3450469, 5432597, -2870649, -1893544, 1717450, 3795677,
+7038378, 4388920, -7844758, -437013, -582505, 3855270, 5799817, 9842454, -4380330, -3888019,
+5107790, -5398774, 1248762, 1530082, 8326331, 3036005, 4647155, -6214281, -2740189, -8478802,
+6692633, 6989523, 8055748, -147640, -1733556, -5420249, -1132798, 5393942, -2513093, -3500935,
+-3204583, -4262755, 915902, 971200, 1270774, -5826660, -77846, -5710159, -307627, -878858,
+2315524, 1971927, -1744294, -2609730, -7202660, -453119, -577136, 4405563, -2782065, 7342247,
+-4205310, 884226, 3419331, 6665789, -5184026, 1513976, 3512210, -6060736, 3017215, -39192,
+7416872, 2434710, 1660005, 4519916, -462246, 1207960, 3506304, 1377074, 37044, -1338956,
+56908, 1435056, -479963, 1833951, 2871723, 2305324, -1088774, 1257889, 180926, -826781,
+1148367, 1465658, -2684, 644245, 1837172, 1302449, 1481227, 660888, -724239, -1247688,
+1415729, -1336272, 1409286, -794569, 102005, 1717987, 1346472, -476741, 19902878, 17075180,
+-620086, 513785, 8873402, 1217086, 4342212, -2657511, 4867272, -3750580, 8957691, 3074123,
+6442, 1835025, 617938, 11353209, 7655243, -7435126, -6204081, 2416993, 1190780, -2379949,
+-1625108, 1443646, 5432060, 4044786, 2473901, 587337, 2862059, -1891396, -161061, 6256157,
+-6881075, 2761664, 8337069, 6266894, 11338714, -1113470, -1739999, -986232, 702227, -3620121,
+12322261, 11311333, 8064875, -3757560, -1140851, 4811974, 3901978, -3448859, 753767, 6475200,
+-2437394, -3027415, 4099546, -11989938, -1413044, 666257, 1744294, -4056597, -7860864, 3204046,
+5341329, -6375342, -2397129, -6933151, 2561948, 489626, -1482838, -1489280, -6075231, 10139881,
+-2695092, 1365800, -10339060, -2446521, -4952634, 12057584, -2158221, -1654099, 5337571, 2484102,
+-66572, -3845606, 3534221, -2529736, -3628711, 5591511, 5168993, -76773, 3213173, 119722,
+-1524177, 2967823, -503048, 1159641, -1005022, -1306744, -376883, 2309619, -1759326, -1305670,
+-124554, -1747515, 574452, -1575179, -963146, 152471, -340913, 2295123, 16106, 675384,
+1405528, 1473711, 329639, 763967, 1148367, 3058554, 517544, 2882997, 421981, 1429687,
+2029909, 13103408, -499290, 8278013, 11330661, -5987185, -13932874, 578210, 10613938, -8215199,
+7455527, -2223183, -10081362, -4664335, 10171019, -9934796, -8756365, 6377490, -10126996, 3369939,
+4840428, 3969624, -2869038, 6132140, 1736241, 1146756, 3954054, -6479495, 8827232, 4336307,
+3835406, -1827509, -980863, 16440061, -5755793, 1015223, 4283156, 8269960, -11245298, -9265318,
+-8623757, 326418, 638340, -583579, 5233955, 1622424, 9342091, 3753802, 5474473, -886374,
+731755, -4625143, 8348343, -3787624, 8233989, -4498442, -7106024, 12246026, 9949292, -14097156,
+-12439836, -8182450, -6397891, 4429185, 698469, -2860448, 6478958, 7143605, -8586176, 5045513,
+-700617, -17185774, -5682242, -8668855, -7864622, 2968359, -2682207, 5635534, -1307818, 841277,
+10268193, 10460393, -980863, 2746632, -921271, 1622424, 1469416, -3547106, 2936147, 853625,
+-145492, 8825621, 2642479, -69793, 252329, -1584306, 2597382, -295816, 1705102, -1918240,
+-118648, -2022930, 523986, 2291902, 710817, -13959, -290447, 2004139, 1280974, -1277753,
+159451, -62814, 287763, 1014149, 434865, -7471633, -10411538, 6240051, -5972689, -4431870,
+-3697430, -12159052, -1241782, 5394479, -3247532, -754304, -4396436, 9980967, 1583769, 6350646,
+4904316, -8078297, 8320426, 12377022, -3754338, -5079873, 1379221, -2168959, 5399311, -15343771,
+5921150, 13262322, -1714766, -4358318, -3732327, 5761699, 11945378, -2832531, 3057480, -5316633,
+8202851, -9826885, -3704946, 1900523, -1476395, -7625715, 14086419, 9883257, 7469485, -3129421,
+-10505490, -1306207, -14949171, 2589329, -1026497, -483184, -246424, -2266669, 8206072, 6889128,
+-10361609, 5830418, -6175089, 8628052, -719944, -1748589, -643171, -9137543, -1671279, -8335458,
+-18382996, -836445, 2237141, 1460289, -7007776, -236760, -1947768, -13783624, 360777, 11979201,
+-7483981, 3140158, 3992172, -1511829, 935229, -3536906, -2010582, 2819646, 3496104, 3764002,
+-864899, -2394981, -827318, -2574296, 2204929, 1047972, -2084670, -617938, -1908576, -2168422,
+-194347, -1947231, -2879239, 1844689, -522912, -2266669, 1905355, -1583232, 1589675, 2291365,
+1062468, 2203318, 1651415, -9127, 1567663, 4959077, 2487860, -2441152, -1582159, -2804614,
+118648, -3633542, 2042257, -194884, 2937758, -730144, 2316061, -357556, -1438814, 4687420,
+2364916, -19313932, 1288490, 11377368, 6099391, -8761733, -7255811, 14244259, 3201898, 3257733,
+-2865280, 3739843, -217433, -9405442, -2543695, -9882183, 4636954, -5857799, -978179, -9626632,
+-10808285, -14360760, 8959839, 6169721, -4701916, -5072893, 3984119, -13181255, -1281511, 1072131,
+3130494, 5899675, 2774012, 446677, -4657892, 2003065, -4283156, 3572339, -4111358, 2384781,
+1156420, -4123706, -5523865, -10313290, -6924561, 2702608, -17798344, -4758287, 9656160, 5250061,
+-2208687, 23217520, -3420942, 10795400, 10534481, -16793858, 1029718, -2167348, -14317273, -7379291,
+-7910793, 322123, 1599339, 16067473, -2643016, 1611150, 10772852, 8114804, -1959579, 10870562,
+-5187784, -3889630, -7282654, -9496173, -14001593, -5221070, 7883950, -15102716, -7807714, 11803107,
+8486319, -5039608, 10656351, -4698694, -804770, -401579, 5093831, -3278671, 5076652, -3136400,
+4334696, -1194538, 1755031, -1986422, 3496640, 3491272, 1418950, -520765, 3955665, -2515240,
+-3001645, 3218541, -936840, 3505767, 2437394, 1782411, 2251100, 1491964, 599148, -5764920,
+-1138703, 32212, 1576253, -1468342, -2529199, -1975685, -5657546, 2215666, -170188, 3627100,
+1941325, 3534221, 2565169, 825707, 1140851, 13302051, -2288681, 4273493, -6478422, 3818763,
+5623186, -3432216, 4816269, -7400766, -8069707, 12345883, 6780680, 7969849, 9904195, -54224,
+-8067559, 10665478, -9299678, -12563853, 229781, 11776800, -1640678, -10207527, 1448478, 13862007,
+-1942936, 3806415, 1399623, 19449222, 1288490, 4163434, 9657234, -1219234, -4904316, -9315247,
+1381906, -1289564, -8887898, 295279, -5207111, 3575560, 13257490, 136365, -7879655, -2353105,
+-7299297, -3919158, -1071058, -3105798, 1864016, -9825811, 10640245, -5569499, 17920214, -4488778,
+-12873628, 751619, 717796, 6340446, 2792803, 3437048, -13201656, -10763725, 7882339, -11208254,
+-15532749, 4500052, 3202435, -3535832, 16997870, -13732621, -18951544, 7147363, -12905840, 1269163,
+1904818, 392990, -12402255, -7595113, -16160888, 5603859, -1522029, -872952, -2394444, -7220377,
+-3138011, -5470178, -2592013, -2105071, 6338835, -4722854, 4901095, 1768990, 5058398, 857383,
+773631, -6608344, -2283849, 1837709, -1995549, -7213398, 1575716, -1139240, -2679523, -2514167,
+2460480, -2874407, 3271691, -1628866, 3942243, -687195, 2090039, -3740917, -3545496, -81068,
+450435, -1305133, 5885179, -4950487, -4579509, -3086471, 2950106, 3051574, -3670587, 883153,
+-10432476, 5819144, 519154, 14220637, 14780056, 21497922, 9718974, 4625143, 2914135, 7143605,
+-7338489, 8246337, -12965433, 6369974, -1322313, -1009317, -24800752, -9489193, -4118874, 8510478,
+-1114544, 2128693, 2626373, 2328409, -12702366, 13168370, -550830, 5409512, 380105, 12295418,
+-13178033, 9203578, -6505802, -232465, 9840307, -11155104, -5075578, -12163884, -4927938, -13554917,
+12363063, 9205726, 16627966, -741956, 3892314, -15119359, 3405909, -15678241, 15252503, 4406100,
+-2543695, 14572287, 14738180, 7634305, -8872329, -13089450, -19013284, -769873, -6768332, -9484898,
+10230075, -2762738, 23896124, -17677548, -6528351, 13761075, -14343580, -5615133, 3234110, 315143,
+-2141578, -13651017, 6202470, 2392834, -7519951, 6847252, 14379014, -12351789, 13877039, 17410724,
+-5255966, -9133248, 7087770, -6998113, 6543920, 4277788, -7325604, -5604396, -1502165, -2209224,
+10116259, 3483755, -1787780, -4891968, -8140574, -4522601, 2498060, -5122822, 2415382, 4946192,
+3084324, -3433290, 2601140, -2804077, 3824669, 2564096, 4274566, 2661806, 144418, -4525285,
+2929168, 4584878, -4656282, 217970, 1534914, 1723893, 3875134, 385473, -561567, 4355634,
+5267241, 1063004, -2480344, -4132832, -154082, 3704409, 4491462, 3149285, 22266184, -5068062,
+3116536, -1168768, -7377143, 10021769, -3693135, 3726421, 1166084, 14344117, -4543539, 16722455,
+242666, 8334384, 7344931, -1298691, -5453535, -16248935, 7683697, 16951700, 847719, -97711,
+11709155, 9984725, -766652, 1855426, 20113332, 12642773, -3700114, 4402879, 13205414, -3329674,
+-14731738, 360777, -10712722, -1671816, -6812355, 630286, -20361904, -6058052, -7457137, 347355,
+4189204, 4277788, 19689204, 21828634, 11448772, -15103252, -8973797, 12265353, 17147120, 3635153,
+-15788300, -2590939, -3793530, -16404091, -10424422, -12424267, 15101105, -5683316, 2007360, -15446313,
+22378928, 16556025, -1939715, 6834904, 37192808, -1903207, -7720741, -14347875, -949725, 9884330,
+7759396, -5790153, 11149735, 22277458, -9644349, 14198625, -6571300, 4628901, -9047349, -4890894,
+-7821673, -10152229, -5302137, 6591164, -127775, -2262374, 1511292, 2710124, 11922829, -1376537,
+1088237, -187905, -5674726, -652298, -2105608, 1062468, 4745939, -3207804, -1618666, -3964255,
+-1982127, 1305133, 1348620, -1478006, -8082592, -7487202, -2684892, -9208410, -8126615, -1527935,
+6934762, 6191196, 5260261, 1132798, -1411971, 236760, 2854006, 2433636, -1152125, 1643899,
+1071594, 11319386, 907849, -7062537, -9737228, -15964930, 20779588, -12985834, 15634218, -11394011,
+-17415556, 973884, 21526376, 14078903, -16189342, -10588705, 3543348, 3321620, 7172059, -1141388,
+14296872, 7825968, 18889804, -6829535, -3359738, -556735, -3860639, -18246632, -13708462, -4127464,
+18986440, 4097936, 1329292, 755914, -18032420, -20223928, -15892453, 8222178, 9097278, -6851547,
+-4769561, 1874753, 2020245, -10744398, 2939368, 20301774, 3358128, 12750684, 12254615, 9033390,
+21499532, 31222802, 10033580, 627065, 4289599, 12378633, -6693707, -3375308, 8073465, -2725157,
+4224637, -2799245, 13245142, 4845260, 9321153, -2570001, -3783866, 6905771, 17759690, -1235340,
+-14940044, 9499931, -23264228, -26670674, -9371082, 13901735, -9148280, -26378078, -16388521, -6663642,
+9433896, 6657200, -14526653, 25725780, -8477729, -17932026, 4467303, 7080791, -6150930, 8974871,
+-9519795, -3599720, 3086471, 2463164, -5123359, 4584878, 605054, 8145406, -4738423, -9638980,
+-5898064, 1659468, -2407866, -1918240, -1042066, 107374, -1057636, 6606197, -1410897, 1123671,
+-2949032, 3059627, 5137855, 1086090, 4910222, 1641214, -8389682, -3555159, -270583, -6976101,
+-8570070, 3992709, 5497022, -4520990, -9128953, -9683541, 3644280, 1619740, -750009, 6258841,
+-3956739, 8410083, -37284076, 1984812, 18926310, -3520263, -4414690, 22918482, -12287901, -12752295,
+-16187732, -5417028, -5458367, -10845329, 3219078, 5213017, 8863202, 6200859, -5168457, -4142496,
+-1814087, -4637491, 1552094, 4267587, 18700824, -8067559, -24195162, 12883291, 114354, -776315,
+-20122996, 8911520, 3918621, -2152852, 22944790, -6635188, 2502892, -2197413, 10122701, 12127377,
+-13412646, -1395864, -7522635, -952409, 6866579, -5155572, 10510859, -16462610, -13674102, -8734890,
+-14610405, -2623688, 1331440, 2182917, -20437066, -13518946, 9730248, 16400333, -7827578, -9306120,
+8666170, -18791556, -16957604, -16500727, 18034568, -30531312, 9880572, -1737314, -17966386, -5828271,
+15151571, 38597796, -5197984, -10791105, 12741020, 29569240, 10644540, -6805376, -7215545, -1472100,
+8104067, -671626, 3767760, 17551384, 1134945, -6724845, -12509092, 10232760, -14754286, -10165114,
+-7365332, 5081483, -6110128, -10791105, -6794102, -6615324, -137439, -7995082, 2653216, -6225018,
+-597537, -2125472, 7436199, -5794985, -4514548, -11742977, -3528853, -2194728, -3984119, 10902238,
+-8211441, -10572062, -748398, -9295383, -8463233, -3965866, 1153736, 8134668, -1176821, -3673808,
+-1692754, -5613523, 3764002, -11187316, -1061394, 11281268, 5322538, 7332583, -3000035, 2691871,
+3539590, -2889439, -4466229, -6381248, 2088428, 5355288, -2363306, -20855288, -33608656, -1828046,
+38245612, -6031208, -2888366, -25264608, -2058900, -1589138, 2498060, 8498130, 1009317, 7079717,
+353261, -319975, -18228914, 2668249, 16302085, -11019275, 20253456, -8513699, -1415192, -18006650,
+11435887, -8931384, -6009733, -20796768, -28453622, 14529874, -13968307, -13528610, 4809827, 2972117,
+-6249715, 1455994, 15869904, -4693326, -15446850, -9439264, -19736986, -2346126, 5444945, 13607530,
+2626909, -3945464, -3508988, -8068633, 4546223, 14123463, 2180233, -8778376, 15870441, -15310485,
+1495722, -26410828, -7937100, -5154498, 32444720, -20578262, 6512244, -6672769, 4134980, -3779571,
+-3786551, 644782, 13109851, 4030827, -24197846, 26455388, 7934952, 9451612, 3271691, -10535555,
+-8200703, -3016678, 3196530, -585726, 5134634, -14302241, -15049029, -2433636, 7109782, 16067473,
+-10107669, 13625784, -3509525, 5305895, -10930155, 6131066, -17717276, 19633906, 696858, 2176475,
+6281927, 8845485, 691490, -12277701, -6089727, 3285113, -11806865, 3132105, 5287105, 4886599,
+-7099044, -4328254, 11587822, 2116345, -12141336, -1764695, 10019085, -3893388, -14899242, 16600049,
+-4723391, 6379100, -3012920, -4843113, -8041253, 5050882, 1206886, 5251672, 595927, 8861591,
+848256, 6342593, -3336653, 341987, 3808026, -2379949, -3759707, -16653736, -9628243, 35494684,
+-4250944, 2941516, -18313740, 16556562, -9396315, 12187507, -9483288, 21437256, 2342905, 2174864,
+-10222559, -8544837, 12714177, 27788976, -11357504, -16951162, 8214125, -6678674, 18563922, 23156316,
+11661373, -3483755, 14573898, -9523553, -8605504, 19454592, 27043798, -29982092, 2719788, 4472135,
+5344013, -10146323, -436476, 12105902, -30030948, 9107478, 17983028, 6664716, -13205414, -3727495,
+22022444, 17811766, 6201396, -10236518, -13087302, -26226680, 37697464, 6774774, 19521700, -2798708,
+-7680476, 4190814, 11485279, 353261, -314069, -30481920, 5012764, 28751584, -4844723, 27551142,
+-16236587, -7426536, -11230803, 6423124, 26217018, -8169028, -449898, 23440858, 28932510, -9345312,
+-20619602, -18671296, -15966004, -7584912, -6564858, 16464220, -19856708, 10977400, 12735115, -4593468,
+1743220, 12897787, -2178622, -7452842, 8089571, 5472325, 4467303, 11853036, 2939368, -2152852,
+11087995, 3805878, 4883915, 5413807, -1513439, 600759, -2110977, 4605279, -19433116, -5555004,
+1180042, -3925600, 8053601, -14926622, -1329829, 96100, 5624260, -448287, 8732742, 5732171,
+-3637301, 11772505, 6422587, -4241280, 8939974, 9171366, 462783, -6118181, 4898410, 8914741,
+5869610, -1478543, -8334384, -4376035, 2674691, 1234803, 1797444, 14156749, 10413685, 24984362,
+-7557532, 18095234, -9577240, -3819300, 16817482, -566399, 22923314, -27668716, 17335024, 3160022,
+7698192, -11130945, 8389682, 20640002, 40135932, -9243306, 10189273, -567473, -26646514, 24414204,
+2459406, 9538049, -4884452, -12480638, -4653060, -1036161, -10358924, -6514929, 34055332, 2362232,
+13077102, -9777493, 24124294, 106300, 11682848, 4920959, -14172855, -3048890, -8761733, 222265,
+4318053, 28519120, 14483167, 1159104, 3331821, -1063004, -2435247, 4627291, 2781528, 17829482,
+14490146, 7268696, -8589398, 12353400, 26036628, -24747064, 22804128, 3592203, 6785512, -24879672,
+-11880953, -31245350, -25252798, -5065914, 16640851, 13873281, -43314208, -438087, -19616190, 10104447,
+42959872, 21498996, -27885612, 15013058, -11572789, -14458471, 23578834, 11838540, -12392591, -6977175,
+20713016, 16938814, 9159555, 26406532, -7381975, 16116865, 14140643, -17163764, 23517094, 6305012,
+27323508, 8176544, -2807298, 16000901, -1946157, 3994320, -19633370, 14323179, -9721658, 7330973,
+-7313793, 3088618, 8680129, 21689048, 5441724, 13071196, 3049427, 3980361, -7551090, -1920924,
+-2930242, 1495186, 10654740, 9105331, 16191490, 5810554, -2386391, 2325188, -4290673, -2515240,
+-17064442, -3139621, 3710852, 4918812, 13845364, 12390981, 11230803, 14028974, -36266704, -55672976,
+-14601815, -6265284, -13826573, 3097208, 18711562, -19624780, 28263032, 10372883, -40940704, -31345746,
+-6376953, 22349400, 709207, 1876364, -4374961, -12944495, -39646844, 1632625, -33329484, -27519466,
+13385266, 10718091, 9652939, -4646081, -13001940, 29971892, 17843442, -12710956, -26036092, 19792284,
+9875204, 4668630, -12320114, -30335354, 11406359, -14236206, 4417374, -25837450, 31279710, 792421,
+-12729746, 3080029, 7760469, 25929792, 16048682, -6622840, -1453310, 9092446, 8818642, 10002979,
+-6065568, -40517648, -32048510, 6467147, -4561256, 23746338, -4728222, -10159208, -28782724, 33246268,
+12563853, -23128936, -24078660, 34105260, 31752156, -310848, 23238994, -3105798, 607201, -9659918,
+-6091874, -18280992, 22381074, -4150012, -5337571, -9756555, 9101573, -28778428, 13374528, -8406325,
+-5638755, 20491826, -673773, 3265249, 4910758, 18813568, 9372692, -7633231, 13706851, -4128537,
+16594680, 6680822, -19146964, 4726612, -9844602, 9002251, -8035884, 223338, -12805445, -6426345,
+6658810, -12408161, 5043366, 4279935, 5187784, -11090679, -8196408, -14279693, -12773233, 16699370,
+-6258841, 10786810, 6535867, -10205379, -1683090, -8924405, 122943, -5659157, 20859046, 17796734,
+11814918, 16623134, -4318590, -18449032, -21365852, -3026341, 6160057, 30745524, 18547816, -7099044,
+-5978058, -8286603, -15546708, -949725, 6721624, 3106335, 19530290, 1913408, -13764833, -35365296,
+55763708, 1405528, -43133820, -3264712, -16057272, 7294465, 21401286, 19439558, -23997592, -38509212,
+6577743, -18431316, 5873905, -3755412, 16979080, -5574331, 2429341, 10087268, -15731928, -19291382,
+2038499, 5063767, 16811576, -385473, -26896696, 17691508, -15001247, 13903883, -13038447, -8876624,
+-1468342, -4268661, -28916404, 5432060, 8079371, -27958090, 11826192, -10988674, 5601174, -9329206,
+27011050, 21031918, -27236536, -14457397, 18602578, 23309324, -27870580, 36792836, 2386928, 29625610,
+21525840, 34959960, -10814728, -14838575, 7850664, -29011430, 4430796, 3664681, 50939924, -15794742,
+-47884052, 80834504, -38193532, -29381872, 46605228, 21049098, -27193048, 45282912, 5039608, -36888400,
+45871860, 5535139, 4106526, -8021925, 6738267, 30434676, -7448010, -10620917, -15850040, 22657026,
+-8259759, -5822902, -3191161, -9165997, -9780177, -14234058, 13598403, -2057289, -1282048, -5182415,
+-3519189, 1681480, -6152541, -10718091, 1343251, -8686571, -16030965, -16715476, 20686710, -9062918,
+1902671, 19047644, -9222369, -8839043, 1321776, 9400610, 4053376, 3949223, 18358838, -11449846,
+2629594, -8471286, -5254356, -3795677, 30378840, 14976551, -4977867, 4199405, -16155519, 5033165,
+-14789720, -9302899, 7093139, -4054986, -30488900, 18610094, 7627325, -5825587, -50255948, 7009387,
+14988362, -37600292, 17184164, 10033044, -13254806, -3691525, -706522, -9159555, -3071975, -5334350,
+-16829292, 548682, -8410620, -1767916, -4155381, 8262444, 29965986, 25195352, -23167590, -2467996,
+31541702, -5439039, -5942624, -32192390, 3719979, 10694469, -5288716, 27610198, 65951908, -22087406,
+-27797566, 47060492, -3132642, -25216290, 29308320, 19398220, -15191836, -22637162, -28101434, 8683887,
+15095736, -12409771, 44265008, 28985124, -55169928, -52842592, 30900142, -24806120, -32256278, 41998336,
+6767795, 56181932, 26934276, -6671158, -7508677, -40316860, -31507344, 92204896, 25456808, -19618874,
+-44518948, 1379221, -18116172, -39654360, -6163815, 46761992, 19870666, 738734, 38416336, 33695092,
+-10590316, -42572788, 6669548, 25769804, -10561861, -9832791, 53525492, 30911416, 5362804, -5451924,
+-27449136, -26787174, -6909529, 25637734, 10315975, -10165651, -4851166, -11788611, 10070088, -7510287,
+-10251013, -6453725, -1221918, 7847979, 10348724, 9337796, 3881577, -24255828, -8494908, -4575751,
+9285182, -9288404, 1745904, -2299418, 22552336, -14277008, -10036802, 23481124, 6548215, -11498164,
+18370648, -6118718, 5415417, 1722819, 4238059, -13741211, -3722126, 19410568, 18800146, 8082592,
+-7354595, 5324149, -8453033, -6541235, -5168993, 10370735, -15610596, -2952790, 12537546, 49995568,
+41503880, -11044508, 29477972, 3130494, -22994718, 14770929, 25171192, 8516383, 10851772, -32958506,
+-6788196, 3963718, 6626598, -4773856, -28797756, -10257993, 10302553, -6903086, -3116536, -24217174,
+37261524, 4772783, -30863098, 17546552, 43755516, -22512608, -13250511, 6518687, 14380624, -14026826,
+-27674084, 23781770, 39779452, -3081102, -15757698, 5291937, 11199664, 18274548, 25448754, 1799591,
+46395848, -920197, -51864952, 525597, -5924371, 17010218, -5515275, -42149200, -1267015, -18132816,
+-17929878, 25502978, 13242458, 14601815, 18130130, -37758132, -19916300, -6523519, -606127, 15430207,
+434865, -7612830, 966368, -12837657, -25922812, 2639794, 40061308, -20511154, 3725884, -15908022,
+-11586748, 27603754, -33881388, -237297, 14743012, -11807939, 5442261, 4355634, 8305930, 9878962,
+-17947058, -21231098, 35851704, -7331509, -11772505, 18668612, -18564460, 11707544, 2201708, -7440494,
+5550709, 15709380, -3073586, 2250563, -7788387, 3891240, 850404, -884226, -6971269, 8652748,
+4128537, -703838, -857383, 7283728, 5796595, -6486475, -12097312, 6694244, -862752, 3484829,
+550293, -2947958, 6021008, 328028, 4967130, -1825898, -1126355, -3319473, 812823, 5936719,
+-1456531, 14567992, -6018323, -4210142, 486942, -6113886, 3826816, -43223476, -62003760, -54831164,
+110295832, 105287368, 105076376, 296649088, 105393664, -12213276, 19523310, -205112608, -249850064, -83937080,
+-140196864, -194280704, 24983824, -10773925, -32512902, 213981712, 130604584, 54570244, 334143072, 157770784,
+29167122, 152371488, -36135172, -181773760, -174100256, -165839424, -229861824, -225025152, -52853868, -81204408,
+-132513696, 154775584, 71257800, -55684788, 223462320, 72227392, -26243860, 252712112, 230200048, 53080964,
+238889296, 242449824, -9298604, 60250876, 27439472, -233230688, -270818624, -201627232, -381252448, -360993088,
+-216846992, -289538784, -217855776, 24761024, 179109792, 203320528, 436755232, 397176576, 350167616, 377354208,
+278284352, 141373680, 43154756, -30522722, -212568672, -256203920, -274342112, -309107712, -293347872, -249975680,
+-161589024, -117308440, -114790520, 22028350, 69610144, 136782368, 325055488, 337662272, 230827648, 288598720,
+121995328, -39716100, -95506648, -147853168, -202782048, -146757424, -98203888, -97641248, -33684356, -9064528,
+838592, 52167748, 66122632, 63123136, 96505768, 60898880, 39327940, 48821432, -28745680, -26458610,
+8225936, -78065328, -55330452, -20219632, -75537200, -46500000, -5207648, -75889384, -80305152, -53165252,
+-78797080, -51562692, 59413356, 111162344, 176562352, 260577280, 243059184, 208193168, 195572416, 105966504,
+-32239636, -162426544, -287866976, -341674304, -308279872, -249395872, -188383712, -88151520, 28366648, 112104552,
+157007904, 169647456, 149630224, 133777496, 124294744, 125515048, 87298432, 41714868, 19335406, -10277320,
+-35206920, -31514322, -57379152, -61457224, -43352328, -31918586, -42579768, -40274984, -51890184, -58089968,
+-54074712, -36619428, -17319992, 7194070, 10759430, 7631083, 514859, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-3671660,
-13821205, 7314330, 6095633, 3394635, -1464584, -435402, -1415729, -2878702, -3990562, -2825552,
--4078072, -1725503, 3882651, 1322313, -202937, -5369, 2545305, 1183264, -1610613, -1734630,
--1305670, -7206419, 2986613, 754304, 69793, -1487669, 935229, 126165, -1991791, 1038845,
-2637110, -11274, -3290482, -838592, -1422708, -1532230, 405338, 3169686, -821413, 747861,
--3767223, 2417530, -4654671, 2965138, 656593, 175020, 35433, 2949569, -3573413, -2653753,
--4869956, 1290638, 874563, 237834, 2778307, -3005940, 647466, -413927, 78920, -2193655,
-1927367, 877247, -1616518, 2997350, -4789426, 2188823, -2615098, 4873178, 2219424, 852014,
-345745, -982474, -5975910, 4542465, -1437203, -157840, 776852, 1261110, 1080721, 1192927,
-1434519, -446140, 413391, -677531, 1399623, -117038, 793495, -1826435, 609885, -299574,
-387084, 707596, 1937030, -127775, -341450, 639950, 760209, -807454, 995896, -1209570,
-971736, 188442, 863825, 44560, 553514, -333397, 210990, 739271, 365072, -153008,
-568009, -154082, 13207561, 6292664, 8622684, 2362769, 2932926, -500364, 3374234, 354872,
-2998961, -2210298, 5847061, -1482838, -6682432, -1830730, 135828, 368293, -2122788, 5125507,
-281857, 2003065, 4949950, 2425583, 54761, -4832, 1177895, -4515085, -2990371, 1797444,
-2152316, -1641214, 469225, 2211371, -4483946, 6321118, -651761, 933619, -1006096, 2348810,
-3256122, 165893, -3430068, -3492882, 6851010, 155156, -2007897, -288300, 3943854, 2921115,
--2044941, -2749853, -6052146, -1875827, -2486249, 252866, -2246268, 541166, -5880884, -2399813,
-674847, -2393908, 1286343, 2369748, -1197759, -157840, 1105417, -1492501, 2305861, -169651,
-2902861, 35970, -1008780, -3380139, 375273, -4192425, 1311039, 76773, 2365990, 42950,
-2429878, 3141232, 2668249, 102005, -1746441, -132607, -644245, 3467112, -943282, 444529,
-2208687, 2319282, -170725, 1307818, 459025, 1195075, -498216, 1446867, -557272, 2132988,
-479426, 408022, -185220, 191126, 207232, 2793339, -8916352, -2873333, -2039036, 1555315,
-1746978, -6087043, -2743947, -1202591, 1449015, 3243774, 1006633, 4445828, -3678103, -5292474,
-1521492, 185757, -964220, -3622805, 11758547, -607201, 3118683, 709743, 353798, -257698,
--1826972, -4468377, -3526168, -1092532, 2994666, -2492692, 6150393, -2079301, -587874, -5043902,
--6025302, -510027, -3847754, -2124398, 8185671, -4473209, -1255204, -4342212, 1581622, 216359,
--1590749, -4562866, -884226, 47782, -5202816, 622233, -2806224, 4162360, 2717641, -2379412,
--1284732, -1309965, 1259499, -215285, 3285113, -1693828, -2179696, -2212982, 7464117, 6764574,
--2330020, -6490233, 869194, 2026151, -221191, 1925756, -2713883, 547071, -3145527, 2251637,
-158377, 7195681, 4414153, 6842420, -6228240, 2708514, 4146791, 177704, 3143379, 2292976,
-456877, 4714801, -877247, -479426, 1189169, 673236, -1942936, 1894618, -1491964, -1243930,
--147103, 500364, -225486, 735513, -1118839, 574452, -156229, 171799, 593242, 890132,
-396748, 1028108, 922881, -688269, -962610, 772557, 257698, -1659468, -707059, 1388885,
--845572, -29295972, -4744328, -8441758, -9577777, 2577517, -3241627, -8327405, -6903086, 1159104,
--6800544, 969589, 10140955, -2516314, 4353486, 3303904, 8551280, 2228551, -5954972, 1372779,
-9294846, -4330401, 4628364, -6848326, -6248104, 2059974, 2668249, 7315940, 431644, -4467303,
-4243965, -2991982, 3257733, -361851, 4612795, -3891240, -2531883, -4341675, 60666, 812286,
--1704028, 3370476, -7689602, 1013075, 7764227, 1704565, -2195802, 3013457, -3962644, -1985349,
--9708774, -2850785, -317291, 1548873, 169651, 5248987, -7793755, 788663, -1064615, 3961034,
-2107218, -1475321, 5563057, -4839892, -649614, -3876208, -7488276, -3120831, -1717450, -2080912,
-5643587, -5007932, -8090108, 360240, 2660195, -769336, -2327872, 2828236, 3104188, -2220498,
--1818382, -3102040, -1290638, 6564858, -3017215, 3642669, -1066763, -62814, -589484, -166967,
--3366718, 881005, -2011118, -41876, -228170, -430034, 91805, -719407, -1045825, -977642,
--272194, 391379, -639950, 1145683, 494995, -14551349, 8291971, 9394167, -530965, 5283347,
-2369211, 11092827, 14688251, 1917166, 1904281, 4249334, 1807108, 2474438, -2111513, 2939905,
--2445447, 3894999, 4480725, -12573517, 6510634, -1353989, -2356327, -3871376, -5124433, 2087354,
-3561065, 5763846, 1099512, 1002338, -7379828, 346819, -2168959, -2433636, -1111323, 1007170,
-403190, -540629, 7212861, -354872, -2422899, 2411087, -2833605, 3728032, 4865661, 5486821,
-2818572, 618475, -3067144, 6125160, 1916629, 839666, 615254, 820876, 416075, -3517578,
--5003100, 4535486, -4665945, 4344897, 3925600, 2916283, -668941, -3265786, 2930242, 3859565,
-8504035, 3951370, 3190624, 2010582, -8379481, -2558190, 992674, -1355599, 3558381, -7223062,
-328565, 2395518, -6801081, -631360, 2232309, -1635309, 828929, -3962644, 1457605, 511101,
--1732482, 3119757, 1794223, 122943, 3379603, -1552094, -1550483, -347892, 667867, 1393180,
-5142687, 840740, 1726577, 1215476, -91268, 1123134, -899259, -995359, -1438814, 902480,
--812286, -677531, 537408, 535797, -682363, 1742146, -1077500, 1211718, 1084479, -536871,
-1654099, 469225, 675384, 826781, 62814, 157840, 1927904, -170725, 27029840, 8152385,
-1998234, 5288716, 13511967, 5446556, 16292958, 3992709, -3595425, -1168231, -1367947, -1554778,
-4420058, 6984154, -3246995, 1500554, 4866198, -1809255, -6774774, 5382131, -639950, 2559264,
--2309619, -3398393, 5534602, 1292248, -511638, -1574642, -6172942, -3050501, 3338263, 839666,
--2126009, -1080721, 930934, 2324651, 6203544, 1963874, -5724655, -1310502, 365609, -1794760,
-2054068, 2945811, -5769752, -6957310, -409096, 1749125, -743566, 5382668, -9927817, -2102387,
--4506495, -5579163, -619012, -426276, 1459752, 5320391, -59056, 805843, 1710471, -853088,
-7079717, 4529043, -5825587, -5097590, 3876745, 8591545, -751082, -4010426, 8458938, 4484483,
-1953136, -3716757, -4049081, 4191888, 205622, 3172370, -1928440, -6143414, -3402151, -4179540,
--2665564, 2435247, -3443490, 478352, 1452236, -1227824, 1407676, 1039382, 1196148, 718333,
--2234457, 1236951, -717260, -1163936, -556198, 1660542, 1277753, 224949, -1924145, 1699733,
--773631, 2931315, -480499, 407485, -2812130, -3584687, 1171989, -3374234, -680752, -518080,
--1935420, -914828, 384936, -3029563, -1292248, -307090, 307627, -632434, 2105608, 302795,
--839666, 13263396, 6443525, 11942693, -4029216, 95563, -3037616, 12031814, -12379706, -1760937,
-3170760, -2374580, -2451890, 4025995, -1391569, -3819837, 10558103, 5964099, 1216013, 17835388,
--4875325, -1191853, -3776887, 131533, 2945811, -4609574, -593242, -2394981, 6807523, -5761699,
-1531693, 395137, -1809792, 615791, 4001299, 2723009, -5417565, -9453223, 221728, 1938641,
-7821673, 9174587, 9136469, 827318, -5269388, 6568616, -15948824, -2630131, -6264747, -9287867,
-6491843, -2141578, -3007551, 5056250, -1839320, -2725157, 13915157, 159451, -4108136, 4840428,
-372588, 3681861, 2716030, 1808718, 8429947, -5061619, -3102577, 488553, -7239704, -64961,
-1368484, -1844152, 2481954, 4160213, 8864276, -3352222, 2955474, 7649337, 4649302, 2260764,
-1445793, -2646774, -5597416, 2855080, 4270808, -941135, 428423, -896038, -714575, -3198140,
-625455, -988379, 548145, -2988224, -1498407, -2684, -520765, 2745021, 1200980, -2684,
--3832722, -1752884, 1905355, -2252710, -38655, 1460826, 1505923, -2606508, 2410551, 1860795,
-620086, 2463701, 2238752, -4460861, -789737, -1730872, 1207423, 2379949, 2932389, -638340,
--1632625, 354872, -886374, -20679730, -31088048, -5237176, 1534377, -535797, 853625, -1451162,
--6239514, -3508988, -4974646, -1333587, 5048197, 6032819, -5478768, -8069170, 6898791, 1433982,
--4436701, 364535, -739808, -4918812, -4132832, 11470247, 5834176, -6160057, 3131031, 1301912,
-4904853, -5975910, 6657200, -6646999, 4575751, 2995740, -1407676, -3097745, 2956011, -12396886,
--6154688, 7603703, 12237436, 6797323, -8563091, 207232, -6071473, 8142721, 1684701, 2116882,
-580357, -6698539, 3258270, 9961640, 1127429, 7533373, 5332202, 3454764, 5760625, 12219182,
--3384434, -12285754, 5965173, 43487, -2907156, 635655, 10573673, -4307852, -7340099, 3613141,
--1939715, -1240709, -2775086, -1640141, -3299609, -5735392, -2882997, 7099044, -9652402, -6047314,
--3556233, -6923488, -6743099, -388158, 4199405, -6345278, -107911, -2335389, -2678986, -5713380,
--3616363, -6562710, -344134, -5039071, -383326, -99858, 4638028, 3320547, -2337536, -2478733,
--3354370, -983548, -2369748, -2236604, 2817499, -4445828, 1707786, 434865, -2843268, 360777,
--1855963, 1136019, -954020, -3615289, -4476967, 18254, 1194538, 1926830, -836982, 856846,
-1435056, 68719, -2329483, -246424, -2988224, 389231, 1411434, 1374926, -11956652, -7790534,
-2020782, 1915555, 15943992, -13936095, -9534291, -5381594, -2633352, -1727114, 5158256, 4984310,
--7377143, 7585449, -1755031, 3440806, -5312338, 11307575, -2195265, -4256313, 7311108, 5274220,
-4254702, -7685307, -7230041, 9572945, -5007932, 2828236, 2342905, -3462281, 8136816, 2480881,
--4832, 1815161, 5973763, 7670812, 2364380, -6804302, 1588601, -9713069, 5805185, 2546379,
--10882910, 7730405, 1799054, -5648419, 9972914, 3185255, -2698313, 5830418, -900333, 11026792,
--2515240, -2739652, -2331630, -1423782, 14328011, 3044595, 248034, 3918621, -12036109, -7498476,
--8178692, 919123, 7623567, 1038308, 9454834, -12194486, -5024575, -7728257, -7186017, 17856326,
--1814624, 6398965, 4570919, -3794604, -894964, -2451353, 1349694, 973347, 4866735, 3003256,
-9748502, -5221607, 807991, -1630477, 2116882, -31139, -193274, 7516, -2081985, -9167071,
-3424163, 2186138, 1361505, -2406256, -870805, -1142998, -5142150, -287763, -1844689, -3299609,
-1864016, -2777770, 1195075, 1685775, 1285806, 2151779, -3582540, -1903207, -2430415, -2157147,
-1275068, 2601140, 1491964, -799938, -493921, -589484, -1124208, 3762391, -1289027, 2692945,
-1642288, -959388, 1105417, -682900, -11274, 979789, 982474, -16135118, 5031018, -6924561,
-3919695, -4840428, 13032005, 2208687, -9150965, 1448478, -9328669, 7570954, 14405857, -12282533,
-8108899, 3018288, -372588, 5956583, 15356656, -5864241, -27380, 4713190, -16791174, 997506,
-7622493, -4650376, 5461051, 5973226, -3071975, 15074261, -7515656, -13605920, -5868536, 1657321,
-355409, -2770791, -5881958, 4123169, 3794604, 24696, -9598715, -2232309, -2436857, 6428493,
--4206921, 25274272, -3181497, 3636227, -1166621, -1052267, -12257837, 1279900, 9084393, 7374459,
-24627880, -2625836, -2386928, -5078262, -973347, -6910603, -526670, 9900973, -5259725, -996969,
-1788317, 2354716, 9710384, 7926362, 2234994, 19092204, -3606162, -17634598, -17678622, -12443057,
--2566780, 5603859, -1742146, -4615479, 8413841, -485868, 7471633, -4577362, -872952, 6092948,
-5149666, -1843078, -1803349, 646929, 1579474, -1934346, -4125316, -5906117, -1997697, -2493229,
--744640, -4202089, 3167002, -1242856, 954557, -2113124, -3038689, 4106526, 1831804, -2052458,
--559420, -1676648, -1811403, 1809255, -1126355, -1988033, -4012573, 3204583, 1262720, -1693828,
--3037616, -4013647, -752156, -2749316, -2805151, 3447785, -2015413, 712428, 145492, -1438277,
-1474784, 701690, -546535, -718870, -887448, 28727426, -20703890, -15705622, -5025112, -9923522,
--11349451, 13935558, 5653788, 2794950, -4378719, -2778307, 16908750, -4905390, -7103876, -20219632,
--2916820, -486405, 9553618, 3537443, -4102768, 1261110, 8378408, 3800509, 5243618, 12964359,
-16266115, 4523138, -6046777, 4201015, -9753871, 6706055, 5492727, -3481071, 338229, -7553774,
-3063386, 212601, -14657650, 14299557, -1279363, -6645925, 8827232, -13561896, -3133179, 14930917,
-8517994, -186831, 561567, -18791556, 6599218, 10501732, 5992553, 3489661, -1028108, -13871134,
--40761388, -3252901, 8309688, 11454141, -1046361, -11956652, 20137492, -9329743, 9190693, 15244450,
-12562242, 2334852, 15196668, 1727114, 5415954, 3214246, 9221295, 1811403, 2924873, 19354734,
--6494528, -4232154, 16363825, 8529268, 4433480, -6767795, 1637456, 13308493, -1454383, 10661719,
-2441689, 2315524, 6706055, -3624953, -342524, 700080, -718333, -3027415, 5218922, 2414309,
--7303592, 3980361, 2698313, 3830037, 1875290, -2119030, -34897, -2350958, -2698850, 3191698,
-4066797, 1671279, 2447595, -2210835, -2158221, -1487132, -2647847, -3472481, -5180268, 700080,
--3344706, 2392834, -1265942, 1363652, -4800700, -3188476, -1066763, -1624571, -1478543, -2240899,
-534187, 4474819, 4675609, 1695438, 290447, -2761127, 3668976, 14352170, 13651017, -3611531,
--6997576, -1360968, -4129611, 15703474, 10207527, -27426588, -3009162, 2195802, -12865575, 5060009,
--18765786, 14208289, 3446175, -2261837, 7784092, 3815005, -3951907, -6363531, -4606890, 20073604,
-802622, -226023, 4449049, -2799245, 8063801, 23653996, 9663676, -3546032, -4196720, -3570192,
-13741748, 4798552, 13914083, 9536975, 6941741, 3914863, -6063420, -6766721, 6206228, -14191646,
-2406792, -7590281, -6259915, 368830, 9729175, 1251446, 782758, 3371549, -3061238, 16159278,
-21114596, 24038932, -113817, 10902238, -14342506, 5411122, 8311836, -6709276, 12295418, -9971840,
--19643570, 2471754, -10292889, -1682017, 930397, -10582799, 2631204, 14132590, -8667244, -8613557,
-7200513, 13077102, -579821, -5020280, 12175159, 926102, 2737505, -8515310, -1711545, -734976,
-10055592, -5256503, 836445, -2525441, 2223719, -364535, 1971390, 2371359, 1814087, -163209,
-1020592, 2006287, 2857227, -2477123, -4515621, -1012539, -643708, -4422743, -5115306, -599685,
--2329483, 3477850, -3442416, 2586107, 4919348, -567473, -8003135, -1103270, 1638530, -3114925,
--3739306, 259846, 2305861, 12246562, 4258997, 3553012, -308701, -33286, -1000727, 3331821,
--809064, 3562675, 10612864, 9237401, -1141924, -920734, -1699733, 108985, -17106318, 31129386,
-1944010, 8109972, 23763518, -8768713, 2409477, -4516158, 6250788, -6836514, 6843494, -16718160,
--19870666, -584116, -11775727, -876710, -1115618, -1309965, -3371549, 1293859, -5520644, 4984310,
--15796353, -6284074, -21304112, -1051730, 4871567, 10236518, 22982906, 12775380, 3966402, 2962454,
-6595459, 5124970, 3874061, 9315784, 9729175, -3060701, -19456202, -19254876, -13228499, -7871602,
-1930051, 6535330, -7127498, -11271068, -19734838, 606127, -7538742, 18047452, -8031052, 4563940,
--13692893, -6568616, -2397666, -5590437, -26459682, -27529130, 7566659, 2863670, 722091, 14179835,
-8075613, 11391864, 9155260, -17131550, -3726958, 32266478, -5956046, -12142946, 4750234, -7043747,
-3307662, -19839528, 8075076, -9074192, 1377611, -1257889, 13095355, 826781, 5267241, -11261941,
-2172180, -6325950, -2845416, -7706245, -5844914, 4115116, 4582730, -10286447, -3436511, 810138,
-1995549, 2636036, 1411434, -3947612, 4573604, 1933272, 1607392, -470836, -231928, 1492501,
-4645007, -4850092, 4696547, -1157494, -85362, -1677722, 3019899, -2818572, -1606855, 4149475,
--7580081, -76773, 1595044, -4591320, -1504312, -10672457, 7846369, 9214315, -504122, 2241973,
-2554432, 3202435, -4663261, 5180268, 3391951, 4066260, -3345780, 2266669, 3221226, 4711579,
-18467822, 14069776, 1833951, 14949171, -2799245, -6077379, 8180302, -11372537, -22275848, -33263448,
-2788508, 739808, 12869870, 9441412, -12411382, -6315750, -32526324, -2149094, -15149960, 3569655,
--7625715, -3604551, -6260989, -2377801, -2537252, -11264625, -5085242, -13134010, 10501732, -2612951,
-8986682, 23332410, -12309376, 6733972, -1913945, -5757941, 6002217, -12441447, -21205328, 10203232,
-4980015, 10147934, 6332393, -44394392, -20163798, 5939403, -14785962, -1235877, -12633109, 18604724,
-22389128, -1082869, 24748676, 3504693, 11242077, -3256659, -819802, -13833016, 8767639, 17901960,
-3876745, 29801704, 703838, 4109210, -8748848, -13089987, 17634598, 27966142, 9759776, 5435281,
-2755222, 10579041, 912681, 2025614, -26167626, -19189378, -1987496, 1398549, 3468186, 19678466,
-21160230, -3894999, 1389959, -7262253, 4406100, -13551696, 346819, -14341970, -12151536, 6274411,
--354335, 1580011, -8067559, 5179194, 6334540, 4261145, 6415071, 7575786, 657130, -4300336,
-3323768, -5874442, -1433982, -3625489, -8609799, -2473364, -4762582, -3834332, 7145215, 3946001,
--2546379, -5662378, -8527121, -5585068, 5754183, -5667746, -560493, 455267, 3938485, -8047158,
--6426345, 2849711, 9991705, 6367289, 2571612, -16106, -6010270, -736050, -3653944, -6968585,
-11900281, -17418776, -8582955, -32544578, -40553620, -30071214, -13728863, 9196599, -259846, -7132330,
--14812805, 32212, 26769458, 13107703, -23404350, -3851512, -4832375, -16542067, -2942590, 1225139,
-11275900, 8302172, -17456358, 12555263, -9856950, 5332739, -9181029, 2789045, -13369696, -4996658,
-6642167, -24172076, -4606890, -9110163, 7956964, -6012418, -22321482, 26286810, 25361782, 350040,
--10218801, 14322642, -34212100, -10719701, 10222022, -11514270, -7248294, -878321, -11038066, 2199560,
--2820720, -22944790, 9880572, -2918967, -7022272, -7845832, -6027987, -1430761, -6249178, -9725417,
-19080392, -9061307, -8963597, 9063992, -201863, 31256088, -6212134, -19367082, 11121818, -10111427,
--8550206, -15108621, 10528575, 19279572, -37556268, 2957622, 31794032, -5158256, -1915555, -12553116,
-21694416, -1525250, -11708081, -1560147, -10987063, -8860518, 15736223, -9411884, -731755, -5221607,
--6491843, -10998338, 4716948, 3684545, 5799817, -1306744, -8804683, -6080600, 390305, 1561758,
--13441100, -3867618, -8620536, 13448616, -4421669, 965294, 1986959, 1669132, 1503239, -10924786,
-7454990, 374736, -4095788, 9812927, 1599875, 12838194, -2190433, 14833206, 3524558, 5992016,
-7349226, -9590125, -6238440, 4696010, -7801271, -6153615, 2442226, 45097, -5449777, -12963822,
-6444599, -25663504, 51269024, 36568964, -695785, -9774272, 8138963, -30735322, 516470, 38264400,
--6737193, -13292387, 636729, 43370044, -6196564, 9531606, -9208410, -19594714, -15841987, -3993783,
--7227356, 8010651, 11107322, 625455, -16294032, -22821308, -20992726, -3365107, -4591320, -11303280,
-10649908, 8629126, -9152575, -11170673, -12195023, 6926709, 2440078, 8507256, 21721260, -78383,
--18444738, 12623446, 5018133, 4303021, 1386738, -284542, -8846559, 16104517, 8291971, -6352794,
--7576859, -5010616, -20936892, 5876589, 15504295, 4758824, -14625437, 17315160, 12738336, 7215545,
-2030983, -8960912, 4855461, -29882772, 4807142, -1768453, 26869316, -9508521, -13108777, 5778342,
--6772627, -455267, -19184008, -3394098, -5035313, 26080116, -16732119, -31376884, -20374252, -40804336,
-8190503, -8210367, -2550137, -21720724, -13770739, -36042292, -15847892, -12521440, -1692217, 8998493,
--11494943, -1911261, -2021319, -1705639, -3026878, 7893076, -13370770, 6035503, -5128728, -10412611,
-1845762, -2896956, 9934259, 5178657, 423591, -5141076, 12777528, 11870216, 7310035, -4371740,
--6008123, -6034966, -5465883, 13333189, 21788906, 2698850, 20052666, 21923660, 7532836, 567473,
--19151796, -1897302, 3930969, 3038153, -1512902, -5148055, -16139413, -175557, 11391864, 1978906,
--12014097, -2931852, -8935143, 48922900, 1705102, 8294119, -8356933, -15773267, -21721798, -6904697,
-5847061, 14470819, 11584601, -10122701, -290984, -21301964, -8092792, 7900056, -18345416, -9520332,
--7100118, 26478474, 13485124, 14658187, 13436268, -15051176, 2564096, 5712844, 5972689, -1288490,
-17498770, -3726958, 7569880, 13936095, 5031554, 3996467, 11384885, 16140487, -9654550, -18603650,
-12302934, -1872069, -191663, -19677930, -18719614, 4406100, -9492951, -7031399, 15967078, -16564615,
-21197274, 13998909, -9785546, 11442867, -12838194, -12534325, -15612206, 22298934, -15800648, 7117298,
-6499360, -25266218, 2141041, 3064996, -20316270, -34429532, -31160524, 22613002, -23490786, -322123,
--21151640, -4723927, -15204721, -1166084, 9375914, 5990943, -15472620, 15821586, 18003966, 38289632,
-9725417, -25648470, 8788040, -15771657, 8290361, -22565758, 11857868, -9646497, 1428614, -4614406,
-8983461, -2775623, -9462887, -21683142, -21900038, 2413235, 1817308, 13695577, -10030896, -937377,
-21100100, 6043019, 14543833, 4479651, -4144107, -1653026, -5354751, -14330158, 4857608, -17288854,
--10467372, 3671660, 14025753, -18884434, 10220948, 1916092, 13245679, -4645007, 7292855, 13589277,
-14748918, 15046344, -7164006, 7296076, 11500849, 12632036, 2205466, 7496329, 3686156, -5911486,
-23159538, 10746545, 11536819, -9826885, 880468, -21431886, -340376, 3600256, 4188130, -18901614,
--19663970, -31130460, 21627844, 2209761, 7450158, -5129265, 11475079, -8534100, -8360154, 6424734,
-16484084, 3845606, 10852845, 33501282, -4815732, -20244866, -42945916, -6134824, -16568373, -8186745,
--10193568, -19981798, -14017700, -29841432, -3414499, -476205, 10495826, 30917322, -25691958, -9926743,
--4176856, 10121627, 11017128, 30635464, 4234301, -35003448, -7968775, 7177427, 27447526, 7184944,
--42315628, -16995722, 38448012, 3498251, 38357816, -22513144, 1326071, 3005940, 23259396, -2143189,
-21176874, 31780074, 4594542, 26967562, 19006304, 4594005, 37427956, 31917512, 10457172, 49760416,
-38312184, 23988466, -40176736, -2575370, 15910169, 9215389, -345208, -29161218, -34794604, -18010946,
--49856516, -7836168, -37038724, -14111652, -9419400, -53446036, -50636592, -35252016, 17604534, 634581,
--11583527, -535260, -3697967, -978179, -9718437, -5126581, 12617540, 5082557, 2328946, -1560147,
-2155000, -2296734, 7894150, -1149441, -13177497, 23388244, 3943854, 5763309, -6706592, 1307281,
--617402, 12365211, -425739, 7300371, -3980361, -12495134, 5308043, 10061498, 25926034, 23079006,
-1742146, 21475, 16642998, 8432095, 19407346, 16210817, -4842039, 18665928, 10539850, 4020090,
-11808476, 7799124, -6280853, -2631741, -14421963, 9358734, -12836584, -5459441, 7301982, -27711666,
-29579976, -12831215, 19377818, 9430138, -24779814, 3600793, 15479599, -9846749, -25884158, 17084306,
--6971806, 14597520, -8644159, 3650185, 6061810, -16077673, -1821603, -7146826, -269509, -26244398,
--20474646, 25314538, 1243930, 10173704, -19980724, 20677046, 18659486, -14092861, 11922292, -20409148,
--4269735, -11483669, 14832670, 36033164, -533113, 43744780, -10989211, -2219424, 2218351, 4361003,
--2868501, -24874304, 43179452, 27931246, -3205656, 23437100, 18599356, 24332600, -9119289, -708133,
--43549356, 19622632, 20780662, -5842230, -7279970, 27213986, 14668387, 14273787, 34269544, 5533529,
--17277042, -21264384, 6617471, -6794639, -24918864, 20643760, -28898688, 1067836, 6713034, -20900922,
--32118840, -22202296, -7990250, 2117419, 26391500, 17324288, 8607651, -49827528, -13680008, 29696478,
--2097555, -11009075, 9109089, -27100170, -16485158, 22416508, 178241, 115964, -9268539, -66035,
-14057428, -4481262, -9848360, 7602629, -3208341, -19347218, -10095321, 1666984, -1127429, -1389422,
-614180, -8611946, 327491, -13357885, -17358110, 2164127, -1327682, -29286308, -2953864, -17823578,
--9846749, -3449396, 4715337, 5088463, 16259672, -14921790, -9690520, 2999498, 15852724, -16493211,
--17097728, 24289114, -3507915, -1600412, -4366371, -375810, -9960029, 4149475, 11796665, 6092411,
-10307385, 495532, 4062502, 34897, 1740536, -36783172, 20883742, 32648730, -714038, 37613712,
-11264625, -32523640, -20172388, -2490544, -11437498, -19752018, 20875152, 24609088, -2461553, 17153026,
-22902914, -18080202, 16125455, 27657442, -1775432, -37152004, 14527727, -971736, -7487739, 10364293,
-28021440, -8890045, -14264123, 6993281, -12430172, -16052440, -1228361, 24811490, 20998632, -34998076,
-11059004, 15128485, -23672786, -14951855, 28349468, -7629473, -41477572, -5163625, 34693672, -11225971,
--59882580, 62836984, -17936320, -7092602, -31008054, 40657772, 13106093, -13806172, 29381334, -17171816,
--13044353, -7398618, 75343928, 25352656, -31668404, -27764280, 28846074, -6519224, 42032160, 967978,
-31526670, -43321188, 34687228, 60143500, 5578089, -6244346, -10645613, -10253698, -24007256, 56767120,
-37934224, -33618320, 9412421, -35344360, -6174553, 4061965, 7328825, 5226439, 10409390, 1224066,
--39068096, 18479096, 2291365, -3803194, -929860, 18171470, -7861938, 4222490, -5782637, 9549323,
--3782793, 2659122, -6321655, 11967926, 377420, -2088428, 6570226, 9672803, -21433498, 2854006,
-13349832, 5394479, -15472620, 8494908, 24077586, -23397908, -36866388, 7511898, 4472135, 14687714,
-14019310, -1645509, -33310692, -10942503, 8993125, 4895726, 9254044, -4709432, 1301375, -1031866,
--11179263, 9983651, -8766565, 27043262, 61847528, 11956652, -23916526, -5699422, -5866389, 10845866,
-9306657, -19313932, -27538256, 7344394, -23304492, 4632659, -14507326, -16687559, -3628174, 2821794,
-7904351, -18599356, -7512972, -7377680, -23145042, 19406272, -7281580, 1246077, -3435437, -15444166,
-6124087, 4339528, 536334, -3339874, 171262, -569620, -9129490, -19646254, 8399345, -9754408,
-8519068, 5986111, -19634442, -15898358, -1806571, -2287070, -2238215, -4221416, 16004659, -11075647,
-1637993, -20853676, 17804250, -20431160, -10813117, 10158671, 288300, -16373489, 13020193, -22014392,
-1680943, 6631967, -578210, 2413235, 10557030, 5013301, -22680112, 11488501, 1620276, -13681618,
-19471234, 7675644, -21520470, -2346126, -17155174, -2248952, 7007776, 5768678, -21906480, 27939836,
--14744623, -8094940, 15566035, 10335839, 2571612, 10401874, -833761, 14549202, -6430640, 3002182,
--1762547, 7059853, 5531918, -4137127, -4996121, 5624797, -6924024, 780610, 1260036, 967441,
--4041027, 736050, -3762928, -6250788, -3355980, -6802692, -290447, 5200669, 9046275, 3394635,
-1147293, 4807679, 5959804, -8101382, 12674448, 3369939, -298500, -8214125, -4606353, 4018479,
-10060961, -1859721, -88047, -4808753, 1760937, 1515587, -3972845, -5482526, -4810364, -12868259,
--4586488, -37123548, -46348064, -16995186, 140025600, 112070728, 74327096, 135528224, -53813792, -128220344,
--41096932, -207234864, -80744312, 5864241, -48556216, 95051384, 129866928, 21242908, 82568600, 141779024,
-3122441, 39082056, -9192304, -166630768, -137820672, -104167992, -103435160, -50987168, 79103096, 42489036,
-61226908, 174037440, 73867528, 10805064, 104263552, 48442936, -59626496, 20330228, -50007376, -168875968,
--40581000, -88238496, -173916112, -28923384, 4083440, -42518564, 117759952, 135847664, 53641996, 159742176,
-161722704, 30163018, 62375812, 28030030, -102149888, -114591872, -107188424, -192924032, -170415712, -64983928,
--79121352, 16672526, 103380400, 141463344, 116963232, 180706448, 134122168, 71931576, 9993852, -22582402,
--104210400, -127000576, -93730144, -111598816, -93020400, -4106526, -5240934, 21129628, 100411504, 48358648,
-61341260, 96148752, -2008434, -30012694, -15902116, -60358248, -34495568, -20273320, -22270480, 24645596,
-50837380, 19662898, 28128814, 31978716, -23396834, -8398272, -9985262, -61582852, 8438000, 25622702,
--66715336, -888521, -6235756, -67350456, 24927990, 11272679, -76272712, 48027936, 71595496, 16767552,
-144330224, 89754616, -1946694, 76768784, 13698261, -97773320, -81282256, -127298536, -180623232, -135613600,
--88377544, -47559784, 61372936, 133379672, 156292784, 194695168, 190727152, 135007472, 29628832, -14517526,
--97274032, -177209808, -172392464, -153183760, -128762584, -27935004, 13528610, 22120692, 88153128, 93741960,
-64961380, 66937064, 51891256, 22429392, 31666258, 22938346, -5954972, -11979201, -28184112, -56296820,
--61058864, -60413548, -61165704, -45817100, -9196599, 4551592, 16142098, 19381040, 10968273, 4398047,
-1093069, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+13821205, 7314330, 6095633, 3394635, -1464584, -435402, -1415729, -2878702, -3990562, -2825552,
+-4078072, -1725503, 3882651, 1322313, -202937, -5369, 2545305, 1183264, -1610613, -1734630,
+-1305670, -7206419, 2986613, 754304, 69793, -1487669, 935229, 126165, -1991791, 1038845,
+2637110, -11274, -3290482, -838592, -1422708, -1532230, 405338, 3169686, -821413, 747861,
+-3767223, 2417530, -4654671, 2965138, 656593, 175020, 35433, 2949569, -3573413, -2653753,
+-4869956, 1290638, 874563, 237834, 2778307, -3005940, 647466, -413927, 78920, -2193655,
+1927367, 877247, -1616518, 2997350, -4789426, 2188823, -2615098, 4873178, 2219424, 852014,
+345745, -982474, -5975910, 4542465, -1437203, -157840, 776852, 1261110, 1080721, 1192927,
+1434519, -446140, 413391, -677531, 1399623, -117038, 793495, -1826435, 609885, -299574,
+387084, 707596, 1937030, -127775, -341450, 639950, 760209, -807454, 995896, -1209570,
+971736, 188442, 863825, 44560, 553514, -333397, 210990, 739271, 365072, -153008,
+568009, -154082, 13207561, 6292664, 8622684, 2362769, 2932926, -500364, 3374234, 354872,
+2998961, -2210298, 5847061, -1482838, -6682432, -1830730, 135828, 368293, -2122788, 5125507,
+281857, 2003065, 4949950, 2425583, 54761, -4832, 1177895, -4515085, -2990371, 1797444,
+2152316, -1641214, 469225, 2211371, -4483946, 6321118, -651761, 933619, -1006096, 2348810,
+3256122, 165893, -3430068, -3492882, 6851010, 155156, -2007897, -288300, 3943854, 2921115,
+-2044941, -2749853, -6052146, -1875827, -2486249, 252866, -2246268, 541166, -5880884, -2399813,
+674847, -2393908, 1286343, 2369748, -1197759, -157840, 1105417, -1492501, 2305861, -169651,
+2902861, 35970, -1008780, -3380139, 375273, -4192425, 1311039, 76773, 2365990, 42950,
+2429878, 3141232, 2668249, 102005, -1746441, -132607, -644245, 3467112, -943282, 444529,
+2208687, 2319282, -170725, 1307818, 459025, 1195075, -498216, 1446867, -557272, 2132988,
+479426, 408022, -185220, 191126, 207232, 2793339, -8916352, -2873333, -2039036, 1555315,
+1746978, -6087043, -2743947, -1202591, 1449015, 3243774, 1006633, 4445828, -3678103, -5292474,
+1521492, 185757, -964220, -3622805, 11758547, -607201, 3118683, 709743, 353798, -257698,
+-1826972, -4468377, -3526168, -1092532, 2994666, -2492692, 6150393, -2079301, -587874, -5043902,
+-6025302, -510027, -3847754, -2124398, 8185671, -4473209, -1255204, -4342212, 1581622, 216359,
+-1590749, -4562866, -884226, 47782, -5202816, 622233, -2806224, 4162360, 2717641, -2379412,
+-1284732, -1309965, 1259499, -215285, 3285113, -1693828, -2179696, -2212982, 7464117, 6764574,
+-2330020, -6490233, 869194, 2026151, -221191, 1925756, -2713883, 547071, -3145527, 2251637,
+158377, 7195681, 4414153, 6842420, -6228240, 2708514, 4146791, 177704, 3143379, 2292976,
+456877, 4714801, -877247, -479426, 1189169, 673236, -1942936, 1894618, -1491964, -1243930,
+-147103, 500364, -225486, 735513, -1118839, 574452, -156229, 171799, 593242, 890132,
+396748, 1028108, 922881, -688269, -962610, 772557, 257698, -1659468, -707059, 1388885,
+-845572, -29295972, -4744328, -8441758, -9577777, 2577517, -3241627, -8327405, -6903086, 1159104,
+-6800544, 969589, 10140955, -2516314, 4353486, 3303904, 8551280, 2228551, -5954972, 1372779,
+9294846, -4330401, 4628364, -6848326, -6248104, 2059974, 2668249, 7315940, 431644, -4467303,
+4243965, -2991982, 3257733, -361851, 4612795, -3891240, -2531883, -4341675, 60666, 812286,
+-1704028, 3370476, -7689602, 1013075, 7764227, 1704565, -2195802, 3013457, -3962644, -1985349,
+-9708774, -2850785, -317291, 1548873, 169651, 5248987, -7793755, 788663, -1064615, 3961034,
+2107218, -1475321, 5563057, -4839892, -649614, -3876208, -7488276, -3120831, -1717450, -2080912,
+5643587, -5007932, -8090108, 360240, 2660195, -769336, -2327872, 2828236, 3104188, -2220498,
+-1818382, -3102040, -1290638, 6564858, -3017215, 3642669, -1066763, -62814, -589484, -166967,
+-3366718, 881005, -2011118, -41876, -228170, -430034, 91805, -719407, -1045825, -977642,
+-272194, 391379, -639950, 1145683, 494995, -14551349, 8291971, 9394167, -530965, 5283347,
+2369211, 11092827, 14688251, 1917166, 1904281, 4249334, 1807108, 2474438, -2111513, 2939905,
+-2445447, 3894999, 4480725, -12573517, 6510634, -1353989, -2356327, -3871376, -5124433, 2087354,
+3561065, 5763846, 1099512, 1002338, -7379828, 346819, -2168959, -2433636, -1111323, 1007170,
+403190, -540629, 7212861, -354872, -2422899, 2411087, -2833605, 3728032, 4865661, 5486821,
+2818572, 618475, -3067144, 6125160, 1916629, 839666, 615254, 820876, 416075, -3517578,
+-5003100, 4535486, -4665945, 4344897, 3925600, 2916283, -668941, -3265786, 2930242, 3859565,
+8504035, 3951370, 3190624, 2010582, -8379481, -2558190, 992674, -1355599, 3558381, -7223062,
+328565, 2395518, -6801081, -631360, 2232309, -1635309, 828929, -3962644, 1457605, 511101,
+-1732482, 3119757, 1794223, 122943, 3379603, -1552094, -1550483, -347892, 667867, 1393180,
+5142687, 840740, 1726577, 1215476, -91268, 1123134, -899259, -995359, -1438814, 902480,
+-812286, -677531, 537408, 535797, -682363, 1742146, -1077500, 1211718, 1084479, -536871,
+1654099, 469225, 675384, 826781, 62814, 157840, 1927904, -170725, 27029840, 8152385,
+1998234, 5288716, 13511967, 5446556, 16292958, 3992709, -3595425, -1168231, -1367947, -1554778,
+4420058, 6984154, -3246995, 1500554, 4866198, -1809255, -6774774, 5382131, -639950, 2559264,
+-2309619, -3398393, 5534602, 1292248, -511638, -1574642, -6172942, -3050501, 3338263, 839666,
+-2126009, -1080721, 930934, 2324651, 6203544, 1963874, -5724655, -1310502, 365609, -1794760,
+2054068, 2945811, -5769752, -6957310, -409096, 1749125, -743566, 5382668, -9927817, -2102387,
+-4506495, -5579163, -619012, -426276, 1459752, 5320391, -59056, 805843, 1710471, -853088,
+7079717, 4529043, -5825587, -5097590, 3876745, 8591545, -751082, -4010426, 8458938, 4484483,
+1953136, -3716757, -4049081, 4191888, 205622, 3172370, -1928440, -6143414, -3402151, -4179540,
+-2665564, 2435247, -3443490, 478352, 1452236, -1227824, 1407676, 1039382, 1196148, 718333,
+-2234457, 1236951, -717260, -1163936, -556198, 1660542, 1277753, 224949, -1924145, 1699733,
+-773631, 2931315, -480499, 407485, -2812130, -3584687, 1171989, -3374234, -680752, -518080,
+-1935420, -914828, 384936, -3029563, -1292248, -307090, 307627, -632434, 2105608, 302795,
+-839666, 13263396, 6443525, 11942693, -4029216, 95563, -3037616, 12031814, -12379706, -1760937,
+3170760, -2374580, -2451890, 4025995, -1391569, -3819837, 10558103, 5964099, 1216013, 17835388,
+-4875325, -1191853, -3776887, 131533, 2945811, -4609574, -593242, -2394981, 6807523, -5761699,
+1531693, 395137, -1809792, 615791, 4001299, 2723009, -5417565, -9453223, 221728, 1938641,
+7821673, 9174587, 9136469, 827318, -5269388, 6568616, -15948824, -2630131, -6264747, -9287867,
+6491843, -2141578, -3007551, 5056250, -1839320, -2725157, 13915157, 159451, -4108136, 4840428,
+372588, 3681861, 2716030, 1808718, 8429947, -5061619, -3102577, 488553, -7239704, -64961,
+1368484, -1844152, 2481954, 4160213, 8864276, -3352222, 2955474, 7649337, 4649302, 2260764,
+1445793, -2646774, -5597416, 2855080, 4270808, -941135, 428423, -896038, -714575, -3198140,
+625455, -988379, 548145, -2988224, -1498407, -2684, -520765, 2745021, 1200980, -2684,
+-3832722, -1752884, 1905355, -2252710, -38655, 1460826, 1505923, -2606508, 2410551, 1860795,
+620086, 2463701, 2238752, -4460861, -789737, -1730872, 1207423, 2379949, 2932389, -638340,
+-1632625, 354872, -886374, -20679730, -31088048, -5237176, 1534377, -535797, 853625, -1451162,
+-6239514, -3508988, -4974646, -1333587, 5048197, 6032819, -5478768, -8069170, 6898791, 1433982,
+-4436701, 364535, -739808, -4918812, -4132832, 11470247, 5834176, -6160057, 3131031, 1301912,
+4904853, -5975910, 6657200, -6646999, 4575751, 2995740, -1407676, -3097745, 2956011, -12396886,
+-6154688, 7603703, 12237436, 6797323, -8563091, 207232, -6071473, 8142721, 1684701, 2116882,
+580357, -6698539, 3258270, 9961640, 1127429, 7533373, 5332202, 3454764, 5760625, 12219182,
+-3384434, -12285754, 5965173, 43487, -2907156, 635655, 10573673, -4307852, -7340099, 3613141,
+-1939715, -1240709, -2775086, -1640141, -3299609, -5735392, -2882997, 7099044, -9652402, -6047314,
+-3556233, -6923488, -6743099, -388158, 4199405, -6345278, -107911, -2335389, -2678986, -5713380,
+-3616363, -6562710, -344134, -5039071, -383326, -99858, 4638028, 3320547, -2337536, -2478733,
+-3354370, -983548, -2369748, -2236604, 2817499, -4445828, 1707786, 434865, -2843268, 360777,
+-1855963, 1136019, -954020, -3615289, -4476967, 18254, 1194538, 1926830, -836982, 856846,
+1435056, 68719, -2329483, -246424, -2988224, 389231, 1411434, 1374926, -11956652, -7790534,
+2020782, 1915555, 15943992, -13936095, -9534291, -5381594, -2633352, -1727114, 5158256, 4984310,
+-7377143, 7585449, -1755031, 3440806, -5312338, 11307575, -2195265, -4256313, 7311108, 5274220,
+4254702, -7685307, -7230041, 9572945, -5007932, 2828236, 2342905, -3462281, 8136816, 2480881,
+-4832, 1815161, 5973763, 7670812, 2364380, -6804302, 1588601, -9713069, 5805185, 2546379,
+-10882910, 7730405, 1799054, -5648419, 9972914, 3185255, -2698313, 5830418, -900333, 11026792,
+-2515240, -2739652, -2331630, -1423782, 14328011, 3044595, 248034, 3918621, -12036109, -7498476,
+-8178692, 919123, 7623567, 1038308, 9454834, -12194486, -5024575, -7728257, -7186017, 17856326,
+-1814624, 6398965, 4570919, -3794604, -894964, -2451353, 1349694, 973347, 4866735, 3003256,
+9748502, -5221607, 807991, -1630477, 2116882, -31139, -193274, 7516, -2081985, -9167071,
+3424163, 2186138, 1361505, -2406256, -870805, -1142998, -5142150, -287763, -1844689, -3299609,
+1864016, -2777770, 1195075, 1685775, 1285806, 2151779, -3582540, -1903207, -2430415, -2157147,
+1275068, 2601140, 1491964, -799938, -493921, -589484, -1124208, 3762391, -1289027, 2692945,
+1642288, -959388, 1105417, -682900, -11274, 979789, 982474, -16135118, 5031018, -6924561,
+3919695, -4840428, 13032005, 2208687, -9150965, 1448478, -9328669, 7570954, 14405857, -12282533,
+8108899, 3018288, -372588, 5956583, 15356656, -5864241, -27380, 4713190, -16791174, 997506,
+7622493, -4650376, 5461051, 5973226, -3071975, 15074261, -7515656, -13605920, -5868536, 1657321,
+355409, -2770791, -5881958, 4123169, 3794604, 24696, -9598715, -2232309, -2436857, 6428493,
+-4206921, 25274272, -3181497, 3636227, -1166621, -1052267, -12257837, 1279900, 9084393, 7374459,
+24627880, -2625836, -2386928, -5078262, -973347, -6910603, -526670, 9900973, -5259725, -996969,
+1788317, 2354716, 9710384, 7926362, 2234994, 19092204, -3606162, -17634598, -17678622, -12443057,
+-2566780, 5603859, -1742146, -4615479, 8413841, -485868, 7471633, -4577362, -872952, 6092948,
+5149666, -1843078, -1803349, 646929, 1579474, -1934346, -4125316, -5906117, -1997697, -2493229,
+-744640, -4202089, 3167002, -1242856, 954557, -2113124, -3038689, 4106526, 1831804, -2052458,
+-559420, -1676648, -1811403, 1809255, -1126355, -1988033, -4012573, 3204583, 1262720, -1693828,
+-3037616, -4013647, -752156, -2749316, -2805151, 3447785, -2015413, 712428, 145492, -1438277,
+1474784, 701690, -546535, -718870, -887448, 28727426, -20703890, -15705622, -5025112, -9923522,
+-11349451, 13935558, 5653788, 2794950, -4378719, -2778307, 16908750, -4905390, -7103876, -20219632,
+-2916820, -486405, 9553618, 3537443, -4102768, 1261110, 8378408, 3800509, 5243618, 12964359,
+16266115, 4523138, -6046777, 4201015, -9753871, 6706055, 5492727, -3481071, 338229, -7553774,
+3063386, 212601, -14657650, 14299557, -1279363, -6645925, 8827232, -13561896, -3133179, 14930917,
+8517994, -186831, 561567, -18791556, 6599218, 10501732, 5992553, 3489661, -1028108, -13871134,
+-40761388, -3252901, 8309688, 11454141, -1046361, -11956652, 20137492, -9329743, 9190693, 15244450,
+12562242, 2334852, 15196668, 1727114, 5415954, 3214246, 9221295, 1811403, 2924873, 19354734,
+-6494528, -4232154, 16363825, 8529268, 4433480, -6767795, 1637456, 13308493, -1454383, 10661719,
+2441689, 2315524, 6706055, -3624953, -342524, 700080, -718333, -3027415, 5218922, 2414309,
+-7303592, 3980361, 2698313, 3830037, 1875290, -2119030, -34897, -2350958, -2698850, 3191698,
+4066797, 1671279, 2447595, -2210835, -2158221, -1487132, -2647847, -3472481, -5180268, 700080,
+-3344706, 2392834, -1265942, 1363652, -4800700, -3188476, -1066763, -1624571, -1478543, -2240899,
+534187, 4474819, 4675609, 1695438, 290447, -2761127, 3668976, 14352170, 13651017, -3611531,
+-6997576, -1360968, -4129611, 15703474, 10207527, -27426588, -3009162, 2195802, -12865575, 5060009,
+-18765786, 14208289, 3446175, -2261837, 7784092, 3815005, -3951907, -6363531, -4606890, 20073604,
+802622, -226023, 4449049, -2799245, 8063801, 23653996, 9663676, -3546032, -4196720, -3570192,
+13741748, 4798552, 13914083, 9536975, 6941741, 3914863, -6063420, -6766721, 6206228, -14191646,
+2406792, -7590281, -6259915, 368830, 9729175, 1251446, 782758, 3371549, -3061238, 16159278,
+21114596, 24038932, -113817, 10902238, -14342506, 5411122, 8311836, -6709276, 12295418, -9971840,
+-19643570, 2471754, -10292889, -1682017, 930397, -10582799, 2631204, 14132590, -8667244, -8613557,
+7200513, 13077102, -579821, -5020280, 12175159, 926102, 2737505, -8515310, -1711545, -734976,
+10055592, -5256503, 836445, -2525441, 2223719, -364535, 1971390, 2371359, 1814087, -163209,
+1020592, 2006287, 2857227, -2477123, -4515621, -1012539, -643708, -4422743, -5115306, -599685,
+-2329483, 3477850, -3442416, 2586107, 4919348, -567473, -8003135, -1103270, 1638530, -3114925,
+-3739306, 259846, 2305861, 12246562, 4258997, 3553012, -308701, -33286, -1000727, 3331821,
+-809064, 3562675, 10612864, 9237401, -1141924, -920734, -1699733, 108985, -17106318, 31129386,
+1944010, 8109972, 23763518, -8768713, 2409477, -4516158, 6250788, -6836514, 6843494, -16718160,
+-19870666, -584116, -11775727, -876710, -1115618, -1309965, -3371549, 1293859, -5520644, 4984310,
+-15796353, -6284074, -21304112, -1051730, 4871567, 10236518, 22982906, 12775380, 3966402, 2962454,
+6595459, 5124970, 3874061, 9315784, 9729175, -3060701, -19456202, -19254876, -13228499, -7871602,
+1930051, 6535330, -7127498, -11271068, -19734838, 606127, -7538742, 18047452, -8031052, 4563940,
+-13692893, -6568616, -2397666, -5590437, -26459682, -27529130, 7566659, 2863670, 722091, 14179835,
+8075613, 11391864, 9155260, -17131550, -3726958, 32266478, -5956046, -12142946, 4750234, -7043747,
+3307662, -19839528, 8075076, -9074192, 1377611, -1257889, 13095355, 826781, 5267241, -11261941,
+2172180, -6325950, -2845416, -7706245, -5844914, 4115116, 4582730, -10286447, -3436511, 810138,
+1995549, 2636036, 1411434, -3947612, 4573604, 1933272, 1607392, -470836, -231928, 1492501,
+4645007, -4850092, 4696547, -1157494, -85362, -1677722, 3019899, -2818572, -1606855, 4149475,
+-7580081, -76773, 1595044, -4591320, -1504312, -10672457, 7846369, 9214315, -504122, 2241973,
+2554432, 3202435, -4663261, 5180268, 3391951, 4066260, -3345780, 2266669, 3221226, 4711579,
+18467822, 14069776, 1833951, 14949171, -2799245, -6077379, 8180302, -11372537, -22275848, -33263448,
+2788508, 739808, 12869870, 9441412, -12411382, -6315750, -32526324, -2149094, -15149960, 3569655,
+-7625715, -3604551, -6260989, -2377801, -2537252, -11264625, -5085242, -13134010, 10501732, -2612951,
+8986682, 23332410, -12309376, 6733972, -1913945, -5757941, 6002217, -12441447, -21205328, 10203232,
+4980015, 10147934, 6332393, -44394392, -20163798, 5939403, -14785962, -1235877, -12633109, 18604724,
+22389128, -1082869, 24748676, 3504693, 11242077, -3256659, -819802, -13833016, 8767639, 17901960,
+3876745, 29801704, 703838, 4109210, -8748848, -13089987, 17634598, 27966142, 9759776, 5435281,
+2755222, 10579041, 912681, 2025614, -26167626, -19189378, -1987496, 1398549, 3468186, 19678466,
+21160230, -3894999, 1389959, -7262253, 4406100, -13551696, 346819, -14341970, -12151536, 6274411,
+-354335, 1580011, -8067559, 5179194, 6334540, 4261145, 6415071, 7575786, 657130, -4300336,
+3323768, -5874442, -1433982, -3625489, -8609799, -2473364, -4762582, -3834332, 7145215, 3946001,
+-2546379, -5662378, -8527121, -5585068, 5754183, -5667746, -560493, 455267, 3938485, -8047158,
+-6426345, 2849711, 9991705, 6367289, 2571612, -16106, -6010270, -736050, -3653944, -6968585,
+11900281, -17418776, -8582955, -32544578, -40553620, -30071214, -13728863, 9196599, -259846, -7132330,
+-14812805, 32212, 26769458, 13107703, -23404350, -3851512, -4832375, -16542067, -2942590, 1225139,
+11275900, 8302172, -17456358, 12555263, -9856950, 5332739, -9181029, 2789045, -13369696, -4996658,
+6642167, -24172076, -4606890, -9110163, 7956964, -6012418, -22321482, 26286810, 25361782, 350040,
+-10218801, 14322642, -34212100, -10719701, 10222022, -11514270, -7248294, -878321, -11038066, 2199560,
+-2820720, -22944790, 9880572, -2918967, -7022272, -7845832, -6027987, -1430761, -6249178, -9725417,
+19080392, -9061307, -8963597, 9063992, -201863, 31256088, -6212134, -19367082, 11121818, -10111427,
+-8550206, -15108621, 10528575, 19279572, -37556268, 2957622, 31794032, -5158256, -1915555, -12553116,
+21694416, -1525250, -11708081, -1560147, -10987063, -8860518, 15736223, -9411884, -731755, -5221607,
+-6491843, -10998338, 4716948, 3684545, 5799817, -1306744, -8804683, -6080600, 390305, 1561758,
+-13441100, -3867618, -8620536, 13448616, -4421669, 965294, 1986959, 1669132, 1503239, -10924786,
+7454990, 374736, -4095788, 9812927, 1599875, 12838194, -2190433, 14833206, 3524558, 5992016,
+7349226, -9590125, -6238440, 4696010, -7801271, -6153615, 2442226, 45097, -5449777, -12963822,
+6444599, -25663504, 51269024, 36568964, -695785, -9774272, 8138963, -30735322, 516470, 38264400,
+-6737193, -13292387, 636729, 43370044, -6196564, 9531606, -9208410, -19594714, -15841987, -3993783,
+-7227356, 8010651, 11107322, 625455, -16294032, -22821308, -20992726, -3365107, -4591320, -11303280,
+10649908, 8629126, -9152575, -11170673, -12195023, 6926709, 2440078, 8507256, 21721260, -78383,
+-18444738, 12623446, 5018133, 4303021, 1386738, -284542, -8846559, 16104517, 8291971, -6352794,
+-7576859, -5010616, -20936892, 5876589, 15504295, 4758824, -14625437, 17315160, 12738336, 7215545,
+2030983, -8960912, 4855461, -29882772, 4807142, -1768453, 26869316, -9508521, -13108777, 5778342,
+-6772627, -455267, -19184008, -3394098, -5035313, 26080116, -16732119, -31376884, -20374252, -40804336,
+8190503, -8210367, -2550137, -21720724, -13770739, -36042292, -15847892, -12521440, -1692217, 8998493,
+-11494943, -1911261, -2021319, -1705639, -3026878, 7893076, -13370770, 6035503, -5128728, -10412611,
+1845762, -2896956, 9934259, 5178657, 423591, -5141076, 12777528, 11870216, 7310035, -4371740,
+-6008123, -6034966, -5465883, 13333189, 21788906, 2698850, 20052666, 21923660, 7532836, 567473,
+-19151796, -1897302, 3930969, 3038153, -1512902, -5148055, -16139413, -175557, 11391864, 1978906,
+-12014097, -2931852, -8935143, 48922900, 1705102, 8294119, -8356933, -15773267, -21721798, -6904697,
+5847061, 14470819, 11584601, -10122701, -290984, -21301964, -8092792, 7900056, -18345416, -9520332,
+-7100118, 26478474, 13485124, 14658187, 13436268, -15051176, 2564096, 5712844, 5972689, -1288490,
+17498770, -3726958, 7569880, 13936095, 5031554, 3996467, 11384885, 16140487, -9654550, -18603650,
+12302934, -1872069, -191663, -19677930, -18719614, 4406100, -9492951, -7031399, 15967078, -16564615,
+21197274, 13998909, -9785546, 11442867, -12838194, -12534325, -15612206, 22298934, -15800648, 7117298,
+6499360, -25266218, 2141041, 3064996, -20316270, -34429532, -31160524, 22613002, -23490786, -322123,
+-21151640, -4723927, -15204721, -1166084, 9375914, 5990943, -15472620, 15821586, 18003966, 38289632,
+9725417, -25648470, 8788040, -15771657, 8290361, -22565758, 11857868, -9646497, 1428614, -4614406,
+8983461, -2775623, -9462887, -21683142, -21900038, 2413235, 1817308, 13695577, -10030896, -937377,
+21100100, 6043019, 14543833, 4479651, -4144107, -1653026, -5354751, -14330158, 4857608, -17288854,
+-10467372, 3671660, 14025753, -18884434, 10220948, 1916092, 13245679, -4645007, 7292855, 13589277,
+14748918, 15046344, -7164006, 7296076, 11500849, 12632036, 2205466, 7496329, 3686156, -5911486,
+23159538, 10746545, 11536819, -9826885, 880468, -21431886, -340376, 3600256, 4188130, -18901614,
+-19663970, -31130460, 21627844, 2209761, 7450158, -5129265, 11475079, -8534100, -8360154, 6424734,
+16484084, 3845606, 10852845, 33501282, -4815732, -20244866, -42945916, -6134824, -16568373, -8186745,
+-10193568, -19981798, -14017700, -29841432, -3414499, -476205, 10495826, 30917322, -25691958, -9926743,
+-4176856, 10121627, 11017128, 30635464, 4234301, -35003448, -7968775, 7177427, 27447526, 7184944,
+-42315628, -16995722, 38448012, 3498251, 38357816, -22513144, 1326071, 3005940, 23259396, -2143189,
+21176874, 31780074, 4594542, 26967562, 19006304, 4594005, 37427956, 31917512, 10457172, 49760416,
+38312184, 23988466, -40176736, -2575370, 15910169, 9215389, -345208, -29161218, -34794604, -18010946,
+-49856516, -7836168, -37038724, -14111652, -9419400, -53446036, -50636592, -35252016, 17604534, 634581,
+-11583527, -535260, -3697967, -978179, -9718437, -5126581, 12617540, 5082557, 2328946, -1560147,
+2155000, -2296734, 7894150, -1149441, -13177497, 23388244, 3943854, 5763309, -6706592, 1307281,
+-617402, 12365211, -425739, 7300371, -3980361, -12495134, 5308043, 10061498, 25926034, 23079006,
+1742146, 21475, 16642998, 8432095, 19407346, 16210817, -4842039, 18665928, 10539850, 4020090,
+11808476, 7799124, -6280853, -2631741, -14421963, 9358734, -12836584, -5459441, 7301982, -27711666,
+29579976, -12831215, 19377818, 9430138, -24779814, 3600793, 15479599, -9846749, -25884158, 17084306,
+-6971806, 14597520, -8644159, 3650185, 6061810, -16077673, -1821603, -7146826, -269509, -26244398,
+-20474646, 25314538, 1243930, 10173704, -19980724, 20677046, 18659486, -14092861, 11922292, -20409148,
+-4269735, -11483669, 14832670, 36033164, -533113, 43744780, -10989211, -2219424, 2218351, 4361003,
+-2868501, -24874304, 43179452, 27931246, -3205656, 23437100, 18599356, 24332600, -9119289, -708133,
+-43549356, 19622632, 20780662, -5842230, -7279970, 27213986, 14668387, 14273787, 34269544, 5533529,
+-17277042, -21264384, 6617471, -6794639, -24918864, 20643760, -28898688, 1067836, 6713034, -20900922,
+-32118840, -22202296, -7990250, 2117419, 26391500, 17324288, 8607651, -49827528, -13680008, 29696478,
+-2097555, -11009075, 9109089, -27100170, -16485158, 22416508, 178241, 115964, -9268539, -66035,
+14057428, -4481262, -9848360, 7602629, -3208341, -19347218, -10095321, 1666984, -1127429, -1389422,
+614180, -8611946, 327491, -13357885, -17358110, 2164127, -1327682, -29286308, -2953864, -17823578,
+-9846749, -3449396, 4715337, 5088463, 16259672, -14921790, -9690520, 2999498, 15852724, -16493211,
+-17097728, 24289114, -3507915, -1600412, -4366371, -375810, -9960029, 4149475, 11796665, 6092411,
+10307385, 495532, 4062502, 34897, 1740536, -36783172, 20883742, 32648730, -714038, 37613712,
+11264625, -32523640, -20172388, -2490544, -11437498, -19752018, 20875152, 24609088, -2461553, 17153026,
+22902914, -18080202, 16125455, 27657442, -1775432, -37152004, 14527727, -971736, -7487739, 10364293,
+28021440, -8890045, -14264123, 6993281, -12430172, -16052440, -1228361, 24811490, 20998632, -34998076,
+11059004, 15128485, -23672786, -14951855, 28349468, -7629473, -41477572, -5163625, 34693672, -11225971,
+-59882580, 62836984, -17936320, -7092602, -31008054, 40657772, 13106093, -13806172, 29381334, -17171816,
+-13044353, -7398618, 75343928, 25352656, -31668404, -27764280, 28846074, -6519224, 42032160, 967978,
+31526670, -43321188, 34687228, 60143500, 5578089, -6244346, -10645613, -10253698, -24007256, 56767120,
+37934224, -33618320, 9412421, -35344360, -6174553, 4061965, 7328825, 5226439, 10409390, 1224066,
+-39068096, 18479096, 2291365, -3803194, -929860, 18171470, -7861938, 4222490, -5782637, 9549323,
+-3782793, 2659122, -6321655, 11967926, 377420, -2088428, 6570226, 9672803, -21433498, 2854006,
+13349832, 5394479, -15472620, 8494908, 24077586, -23397908, -36866388, 7511898, 4472135, 14687714,
+14019310, -1645509, -33310692, -10942503, 8993125, 4895726, 9254044, -4709432, 1301375, -1031866,
+-11179263, 9983651, -8766565, 27043262, 61847528, 11956652, -23916526, -5699422, -5866389, 10845866,
+9306657, -19313932, -27538256, 7344394, -23304492, 4632659, -14507326, -16687559, -3628174, 2821794,
+7904351, -18599356, -7512972, -7377680, -23145042, 19406272, -7281580, 1246077, -3435437, -15444166,
+6124087, 4339528, 536334, -3339874, 171262, -569620, -9129490, -19646254, 8399345, -9754408,
+8519068, 5986111, -19634442, -15898358, -1806571, -2287070, -2238215, -4221416, 16004659, -11075647,
+1637993, -20853676, 17804250, -20431160, -10813117, 10158671, 288300, -16373489, 13020193, -22014392,
+1680943, 6631967, -578210, 2413235, 10557030, 5013301, -22680112, 11488501, 1620276, -13681618,
+19471234, 7675644, -21520470, -2346126, -17155174, -2248952, 7007776, 5768678, -21906480, 27939836,
+-14744623, -8094940, 15566035, 10335839, 2571612, 10401874, -833761, 14549202, -6430640, 3002182,
+-1762547, 7059853, 5531918, -4137127, -4996121, 5624797, -6924024, 780610, 1260036, 967441,
+-4041027, 736050, -3762928, -6250788, -3355980, -6802692, -290447, 5200669, 9046275, 3394635,
+1147293, 4807679, 5959804, -8101382, 12674448, 3369939, -298500, -8214125, -4606353, 4018479,
+10060961, -1859721, -88047, -4808753, 1760937, 1515587, -3972845, -5482526, -4810364, -12868259,
+-4586488, -37123548, -46348064, -16995186, 140025600, 112070728, 74327096, 135528224, -53813792, -128220344,
+-41096932, -207234864, -80744312, 5864241, -48556216, 95051384, 129866928, 21242908, 82568600, 141779024,
+3122441, 39082056, -9192304, -166630768, -137820672, -104167992, -103435160, -50987168, 79103096, 42489036,
+61226908, 174037440, 73867528, 10805064, 104263552, 48442936, -59626496, 20330228, -50007376, -168875968,
+-40581000, -88238496, -173916112, -28923384, 4083440, -42518564, 117759952, 135847664, 53641996, 159742176,
+161722704, 30163018, 62375812, 28030030, -102149888, -114591872, -107188424, -192924032, -170415712, -64983928,
+-79121352, 16672526, 103380400, 141463344, 116963232, 180706448, 134122168, 71931576, 9993852, -22582402,
+-104210400, -127000576, -93730144, -111598816, -93020400, -4106526, -5240934, 21129628, 100411504, 48358648,
+61341260, 96148752, -2008434, -30012694, -15902116, -60358248, -34495568, -20273320, -22270480, 24645596,
+50837380, 19662898, 28128814, 31978716, -23396834, -8398272, -9985262, -61582852, 8438000, 25622702,
+-66715336, -888521, -6235756, -67350456, 24927990, 11272679, -76272712, 48027936, 71595496, 16767552,
+144330224, 89754616, -1946694, 76768784, 13698261, -97773320, -81282256, -127298536, -180623232, -135613600,
+-88377544, -47559784, 61372936, 133379672, 156292784, 194695168, 190727152, 135007472, 29628832, -14517526,
+-97274032, -177209808, -172392464, -153183760, -128762584, -27935004, 13528610, 22120692, 88153128, 93741960,
+64961380, 66937064, 51891256, 22429392, 31666258, 22938346, -5954972, -11979201, -28184112, -56296820,
+-61058864, -60413548, -61165704, -45817100, -9196599, 4551592, 16142098, 19381040, 10968273, 4398047,
+1093069, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-5063230,
-15737834, 6034966, 3824132, 1245541, -3338263, 45634, 3016678, 5682779, 75699, 554588,
-329639, -2076080, 550293, 1931662, -391379, 1886564, 2901251, 3874597, 1621887, 1592896,
-2035278, 1813550, -3562675, 3613141, 6772090, -3209414, 1919850, 1068910, 1884954, 354335,
-4005594, -2609193, -940598, -2347737, 2306934, 6725919, -1142461, 3266323, -101469, -1513976,
--5550709, 2077690, -2881923, 2558190, 1280974, 2857227, -331786, -1710471, 886911, -1176821,
-3834332, 501974, -3064996, 3911105, -871878, 3053722, 2335389, -118648, 2240362, 4408247,
--1258425, -1538672, -1269700, 2195802, -1821066, -2370822, 2719788, 36507, 1818382, -2929168,
-4310537, 260919, -1243930, -504122, -503585, 1729261, -1647120, -2595771, 1511829, 2330020,
-2178085, -2058363, -3105261, 1242319, -134755, -364535, -1213865, -1123134, 1514513, -399969,
--255014, -952946, -1161252, 226560, -843961, 353261, 207769, 1143535, 762357, -338229,
-377957, 651761, -721555, -285078, 10201, -312996, -561030, 397821, 1071594, 633508,
-791348, 16106, 12225624, 9594420, 4808753, 707059, -1816771, 5563594, -3260417, -3485903,
--812286, -6094559, 3677029, 255551, -2541547, 1453310, 3533148, 6098317, -2836826, 3521873,
-7898982, -2247342, 41339, 1823751, 4098473, -1024887, 4466229, 3184182, 4518306, 1057099,
-3446711, -3510062, 6026913, -707596, 5814312, 2906619, -659814, 740882, -983548, -118112,
--2126546, -978179, -2623151, -1902134, 2013266, -528818, -5667746, -1249299, 577136, -139050,
--3172907, -3236258, -1675037, -1388885, 4393752, -1749125, -4874788, -6460168, -7158100, -2441689,
--3167002, -236760, 1074279, 3464965, -4691715, -2099702, 519691, -453119, -2117956, 538482,
--4937602, -444529, -5814849, 3111704, -3179350, -1516660, 3984119, -565325, 2725694, 813896,
-973884, 3126736, 745177, -2483028, -1176821, 266825, -2471217, 1316944, 2453500, 1224603,
--1942936, 1454383, 2046552, 423591, 1094680, -592706, -1155346, -768262, -1155346, 817118,
--148176, 750546, -970663, -679679, 766115, 6478958, -14046691, -3777961, -7113540, -1328219,
-1611, 7731478, -3757023, -12601434, -4430796, -327491, 4803384, 1489817, -4664872, -10940892,
--2805688, 2991982, -1217086, 6154152, 251256, 2694018, -599148, -4858145, -5270462, 3178276,
-3894462, 451508, 1272384, -195958, 2386928, 548145, -6483253, 343597, 9163850, 1229971,
--2258079, -845572, -2414309, 559956, -2079838, -3975529, 6142877, -1904281, -2532420, 5560909,
--2889439, -4934381, 246424, 34897, 181462, -7116761, 5809480, -2203318, -115427, 5342940,
-4879083, -7629473, -1912334, 1482301, 1877975, -670552, 4206921, 1158031, 2102923, 2905009,
-460098, 2323041, 3530463, 770410, 48855, 3275450, -8679055, -1920387, 248571, 4445828,
-2491618, -1063004, -849867, 3236258, 3037079, -3462818, -463856, -1226750, 139050, 1919850,
-2465311, 496606, 3039226, -292595, -2120103, -1007170, 277025, 235149, 321586, -797790,
-2129767, -417686, 789737, -306553, -915365, 629750, 9127, -402116, -742493, 187368,
--695785, -106837, -1278827, -1003412, 311922, -185220, -990527, -2017561, -703301, 460635,
-1762010, -27909772, -11086384, -5578626, -7984881, 2561948, -2791729, -2610803, -379031, 3599183,
--3250753, -3754875, -5600638, 1182727, 4944581, 1181116, -3853660, -4662724, 1367947, 4231617,
-3809099, -5309654, -7968775, 667331, -7452842, 4018479, -93416, 2825552, -252866, 2728915,
--2959769, -1154809, 7705172, -9306120, 4270808, 2258079, 1005559, -3255048, 2028835, 4689568,
-1188095, -5641440, 1109175, -3552475, 2750927, -7726110, -338766, -6992207, 5395553, -504659,
--1444183, -1932735, 2951716, -11782706, 5425618, -3345243, -7219303, 2943663, 5733782, 6605123,
-3808562, 1469416, -504122, 852014, -632434, 4290673, -2443837, 1270774, 3277060, 8240432,
-1264331, 239981, -5899675, 3817152, -2951180, 747324, 128312, 4424890, -3889630, 307627,
-3956739, -273804, -4769025, -6439767, 5357435, 535260, 978179, 2801393, -592706, 1406065,
-1131187, 44023, 942208, -370978, 132070, 1532767, 1312113, 1512365, -2396592, 1017370,
--1806571, -685047, -1526324, 1487132, -1727651, -15913928, 7796977, 12402255, 2424509, 967978,
-6912750, 2316598, 2122788, 3760781, 530428, 3935264, 3983045, -3218004, -576599, 524523,
--3889630, -2432562, -39192, 1904818, -2289755, 12896176, 6870874, -1898376, 934692, 4085051,
-5173288, 5878200, -2456185, 4134980, 4843650, 257161, 1420560, 1378148, 2762738, 1979980,
-1224603, 2713883, 2616709, -5601174, -4307316, -8615704, 940598, -3061775, -4289599, 4409321,
--1248225, 2770254, -10645613, 11718818, -842350, -5595269, -1026497, 9286793, 6740951, -1497870,
-250182, 4489315, -2132988, 1922535, -3420942, -7337952, 871342, 670552, -5876589, -2342905,
--5792837, 1021665, 2152316, 1297617, -2812130, -5141076, -7805566, -9323837, -6686727, -2622615,
-542777, -2278480, 914291, 3078955, 2751464, -3883187, -408559, -4233764, 1547262, -1483911,
-1218697, -68719, -1717987, 1220845, 1415729, -1254667, -580357, -1629940, 2187749, -2599529,
-569083, 817118, 772557, -273804, -596464, 541166, 1165547, 1147830, 955093, 717796,
-983548, 310311, 1865626, -438624, 2066953, -1295470, 657130, -392453, -523449, -1489817,
--1139240, -994285, -1335198, 519691, -1071058, -153008, 987306, 318901, 29315300, 7773891,
-2174327, -1086627, 17668958, 2073932, 8395050, 1733019, 5583458, 9203578, 3246995, -5108327,
-5429913, 6326487, 996969, -461709, 1348620, 11580842, 799938, -3957812, -7044820, -2068564,
--216896, -8044474, 1344862, 2386928, 4611185, 1966558, 3252901, 8869107, -2776160, -1411434,
-5442798, -854162, -2411087, -462246, -7940858, 5128191, 3351685, 178778, 5094905, -2554969,
--6957310, -15022185, -5509370, 5541582, 6120866, 187368, 4292283, -4248797, -4618701, 12211666,
--7083475, 5529234, -6239514, 1291711, -9090835, -9541270, 10331007, -3962644, -3733400, 14259291,
-1060857, -1616518, -6719477, 5217849, 8228084, 387084, -4458713, -8422968, -1336809, 6092948,
--1973538, 2052458, -3732864, 2988760, -1433445, 952409, 6490770, -7047505, 2175401, -2012729,
-412317, 783295, -833224, 7496329, 2329483, 1078037, -2262911, 46708, -1800128, 3138547,
--1566053, 2480881, 2490007, -2677912, -19864, -459562, -1751273, 3537979, 562641, 1633161,
-92879, -1303523, 681289, -27380, 19864, 978716, 1537598, 544387, 2029372, 606664,
--210990, 1118302, 738734, -860604, 195421, -402653, 396211, 1801202, 1999307, 277025,
--252866, 14890115, 5004711, 12335146, -7537131, 2456721, 6964290, -9446781, -3172907, -3701725,
-1033477, -4782446, -2851858, 7305203, -2173254, -1396938, -463320, 9146133, -3291019, -4265440,
-9844065, 1567126, -6863358, 2901251, -1459215, 1547799, 3758097, -5631239, -1236414, -4236985,
--7509751, 900869, 250719, 1417876, -7387881, -7779260, 3062312, -695785, 2982318, -337692,
-4310537, 1225139, -134218, -4980552, -4738423, 1301912, 4841502, 2294050, -1337346, 14015552,
-3395709, 2370822, 6444599, 2330020, 4808216, 4799089, 3222836, 1905892, 2484102, -2077154,
--1049046, 1030255, -5901822, 1537598, -9548249, 2583960, -6301254, 4937602, -3519189, 2692945,
--1184874, -4701379, 1624035, -1275068, 5070209, -4411469, 13469017, 11260331, 5272073, -9710921,
-3092377, 4250944, -4072166, 1739462, 1249836, 6531035, 6305549, 2574296, -88047, -947040,
--1291711, -3872450, 5879274, -493384, -652298, -37044, -1624035, 579821, 1995012, -1658931,
-3085934, -1213328, -2449742, -2674154, -44023, 1726040, 1782411, -541166, -577673, -2127083,
--844498, 1025960, -2433099, 2699924, 2904472, -1884417, 558346, -2368675, -714575, 320512,
-975494, -1824287, 3074123, -18502720, -35604204, -1518271, -7135552, 6176700, -1835562, -9856413,
--955630, -7981123, -8804146, -7545184, 11644193, 6047851, -7776575, -4468377, 8862665, 5135171,
-7909719, -5437966, 5116380, -4822175, -4873714, -1497870, -2128156, -15052250, 4116189, 8608188,
-3706020, -8944269, -2054605, 1597728, 2297808, -7976291, -1775969, -11451457, 2534031, -5421860,
--503048, -3980361, 2199023, 12281459, -1315871, -2262911, 6153615, 8984535, -5416491, 2465311,
-3397856, -7542500, 4059818, 3796751, -8871792, 1419487, 5758478, -1333587, -9341017, -5867999,
--6020471, 8521215, 3305514, 8346195, -4907000, -9582072, 2295660, 4826470, -2027225, -6847789,
-4591320, 6758668, 6393059, -7853348, -4080756, -1599875, 12769475, -2668249, 7632157, 2280628,
--8947491, -7264401, -1371168, 5050345, -8475581, -454193, -1554778, 4727149, -994285, 10594611,
-1350767, -2358474, -3117610, -2613488, -3005403, -1909650, -996432, 1031329, 9127, -1174137,
--3827890, -307627, -3719979, -1575716, 1582696, -1242856, 652835, -1017907, -2799782, 1791538,
--417149, 4593468, -836445, -3585224, -2534568, 1525250, -643708, 250182, -977105, -2267743,
-850940, 2624762, -2200097, -612033, 3499325, 1698123, -2076080, 2858838, -18214420, -17180,
-504122, 10504416, 2544231, -4188130, 6212134, -2985002, 2717641, -9865003, -2905009, -6248641,
--3470871, -12473122, -4738960, -7446400, 17204028, 9895068, 10484015, -12234751, -10484552, -5007932,
-5859946, -551903, -144418, 366683, 3515431, -824097, 4991826, -7112466, -6127308, -103616,
--1748589, -8776229, -8858907, -7058779, -5140539, -3799436, -3536906, -11121281, 5096516, 13673565,
--2977486, 6422050, 8759586, -6405407, 7578470, 4835597, 1788854, 12491912, -614717, 10467372,
-3855270, 1379221, -9822590, 3964255, 4820027, -2538863, 14338748, 11496017, 2208150, -4217658,
--7183870, 4202089, -7063074, 2907156, -166967, 8555038, -48855, -12590697, 882616, -4919885,
--2046015, -9414568, 11052561, 5821828, 3985193, 2710661, 12337830, -3485903, -12999792, -1954210,
-8115341, 303869, -6715718, -1638530, 888521, -2804614, 1540283, 4005057, -80531, 208843,
--877247, 1359894, -260382, 4809290, 1395328, 1495186, -1160715, 1916092, 2444910, 4376572,
--3651259, 2463164, 2428267, 59056, 726386, 4408784, 2334852, 1209570, -2678986, 3761318,
--1135482, -2037425, -2537789, -70867, -6501507, 4165582, 2011655, 832687, -3110093, 3685082,
-3536906, 6477885, 3926674, 1182190, 1045825, 424128, 5235029, -16489453, 7431367, 5449240,
-7049652, -7704635, -13674102, 3952444, 4100083, 675921, -11532524, 11011222, 3155190, -5894306,
--10158135, 4568235, -4498442, 17633526, 20541754, 3019362, -3299072, -7685307, 11659762, -13298292,
--4764730, 16371342, 4064650, -3207267, -8875550, -8189429, -4630512, 267899, -10852845, 2420214,
-11537356, -1494649, 4326106, -8491150, -7745437, -2647847, -6406481, 16757889, -6175626, 7509751,
-6185290, 6782827, 1782948, 3316789, -11655467, -11703786, -11207717, -2527588, 8383240, 19320374,
--7814693, -14015015, -3248606, -6477348, 3564286, 2967286, 10758893, -6620155, -155693, -8760660,
--1679332, 15462419, -1999307, -8479876, 11072426, 3595425, 1775432, 5784247, -12455405, 1859184,
--4230006, 1161789, 5674726, 13585518, 3793530, -15880105, 5770826, 1342177, -2474975, -6645388,
-290984, -1734093, -883153, -473520, 2217814, 3602404, 4370666, 1405528, 281320, -2606508,
-810675, -844498, 3132642, -5428302, 1993939, 2038499, -133681, 418759, 884226, -4125316,
--127775, -2757369, 4414690, 4057134, 1004486, 4882841, -1949378, 621697, 3753265, -859530,
-2969970, 668941, 2747705, 863825, -6274411, -452045, -2256469, -426276, 828392, 295816,
--2226941, 136365, -2619930, -76236, -1286343, 26761404, -11611981, -9166534, -2755759, 5607080,
--15641197, 6234682, -4198331, 7872675, -7003481, -3251827, 9754944, 7164006, 2776160, -4941360,
--1745367, 13261248, 13120588, -2770791, 11458436, -3370476, 16835198, -7912941, -4108136, 2962454,
-17632988, 12808129, 4276714, -9497783, -644245, -19621558, -2940979, 2996814, 9012452, 10423886,
-18575196, 4801237, -328565, -962610, -7116761, -12267500, -868657, -10650445, 7659001, 2331094,
-11838540, 6516003, -4039417, 11658689, -13965086, 6241125, -3114925, 937377, -2430415, 14856292,
-8747238, 4198331, 2658048, -27180164, -4318590, 15996606, 8108362, 919123, -512712, 736587,
-12952011, 5420249, -20508468, -6766184, -7922067, 1838783, 426276, -20446192, 780073, -19118510,
--12640626, -1734093, -8200703, -8948564, 11880416, 14943265, -1635846, -7383586, -823023, 4533338,
--1862942, 3856344, 6132140, -577673, 6814503, 9929964, -3219615, -5655398, 908922, -2457795,
-3012920, 1893544, -1595044, -1476932, 115964, 71404, 2813204, -383326, -3459596, 624918,
-3394098, 1190780, 3014530, -2709051, 4579509, -76236, -1702955, 1054951, -2916820, 1091459,
--5834176, -3803731, -4567161, 2280091, 213138, -4400731, -872415, 3635690, 2429878, 3146064,
--2139431, 1701344, 26844, -788127, -5575405, -2929705, -5909875, 9710384, 18914500, -4787815,
--7692824, 1058710, 7319161, 4167192, -11563663, -754841, -9367324, -549756, -12751221, -1444183,
--10958609, 465467, 11362336, 841814, 25077240, -10576357, -5024038, -9001178, 10247792, 16641388,
--13345537, -4534949, -20709258, 3838627, -140660, 5605469, 5146445, -11677479, -6849936, 9007620,
--3358665, -2631741, -11241540, 22687090, -2988224, -24419574, 6903086, -6484327, -7177427, 8695161,
-6887517, -7106024, -7690139, -2422899, -14002667, -8526047, 4770635, 3080565, 4976257, -4361540,
--10088341, -11877195, -11747272, 9704479, -17292076, 203474, 4305168, -5439576, 573915, -185757,
--2236604, -13880797, -2427730, -5686537, 8918500, 11165304, -1950452, 17398912, -858457, -255014,
--5217312, -1192390, 25271050, 2359011, -11203959, -4609574, 9917079, 7201587, -13805636, 205085,
-2135136, -9538049, 8032126, 1773822, 8973797, 1286880, 1488743, 1276679, 834834, 3772055,
-5461051, 392453, 2808909, 8469139, 811212, -3133716, 1635309, 4022237, -3102040, -1013612,
-634581, -4100620, 3861176, 3342558, 4439923, 757525, -4511327, 983548, -1447404, 679142,
--830002, -956167, 559956, -2711198, 3864934, -2019172, -2416993, -3214783, 7661148, -24696,
--7991861, 5850819, 4812511, 1913945, -382252, 4450660, 3592740, -9165460, -12147241, 30758946,
--7871065, -2763275, 2792266, 13078175, 9492951, -20071456, -8112657, -19072876, 4220879, 1027571,
--5833640, -20990042, 914828, -9836012, 4392678, 4539244, 10608569, 465467, 7733089, 36134632,
-7912404, 8963060, -5644661, -2087891, 15849503, -1458141, 1281511, 4113505, 1069984, -2402497,
--8228084, 14505715, -15446313, 6362994, -22980222, -7089381, -10736881, -14292041, -12178380, -111132,
--25114822, -8646306, 3478387, 14307610, 8307541, -24793236, 14034879, 9229885, 10233296, -15779173,
-11553462, -7452305, -17966386, -6213744, -17877264, 8650601, 21412022, 5319317, -2036351, -14055280,
-11327976, -14964203, 22356916, -4217658, -2399276, -13530758, -14707042, 2118493, 17458506, 5705327,
--12006044, -4909685, 2926483, -2515777, -4806069, 11412802, 5903433, -5353140, 14774151, -1219234,
--20975010, 26278220, 13993003, 10817412, 4961761, -3553549, -1297080, -2201171, 7851737, 1777043,
-1151588, 17295296, 6753299, 303869, 824097, 2453500, 9031779, -7246147, 5091147, 493384,
-1699733, 1652489, 5815923, 2843268, 358093, 9746355, 7456063, 648003, -3411815, -3467112,
--1282048, 7977365, 3990025, 4476967, 4300873, 5305895, -6602976, 6598681, -1756105, -1764158,
-6112812, 9586904, -1398012, -2670933, -64425, 9124121, 10510859, 4021163, 6475200, 4962835,
-16905528, 3151969, -10803453, 4893042, -3116536, 5042292, 18542984, -26087094, -11802033, -20976084,
-11942157, -4229469, 2090575, -6925635, 15139760, -14873472, -14963666, -6830609, -3461744, -10712185,
--18527416, -8962523, 3515968, 12185896, -17045652, 11263015, -6393059, 1348083, 22168474, 16938814,
--245350, 8927090, 4318053, -3523484, -2637110, -30048128, 4205310, -3049427, 2998424, 5852967,
--2324114, 819265, 30396558, -27254788, 2601140, 32886028, 4325569, 9082782, -12862890, -3521336,
-17224966, 30189862, 1560684, 26773216, -10409390, 24220932, -8483097, 17928268, 18209588, -4500052,
-35460324, -5897527, -1476395, -10524817, -15991774, -16969416, -7765838, -10186052, -24635932, -11508902,
--5214627, 9118752, 9035537, 1156420, -12649216, -2115808, -3563749, 15857556, 4931696, -8268349,
-13594645, 3058017, -1673427, -1916629, -9884330, -1522029, -3928285, 4138201, -10009421, -4786741,
--6981470, -6947110, 12637941, 4879620, -4195646, 3816615, -3230352, 2414845, -7607998, 11325292,
-531502, 3176128, -302258, -7637526, 6986301, -930397, 2559801, 8044474, 5567888, 3426847,
-617402, -11883101, 5661304, -4558034, -565325, 10218801, -244276, 3783866, 2424509, 4879083,
-6845104, -2483565, -5574868, -3677566, -4474282, 2126009, 6133750, 10519449, 6042482, -12297565,
--1602560, -13472239, -11390253, -39062728, -27616102, -19650550, -1852742, 26421566, -17279190, -2256469,
--13274670, -19374598, -15896211, -19792284, -20485384, -8195335, -24194624, -26494042, -22897544, 6461779,
--15784005, -8344585, -19697794, 18815178, 30975304, 2633889, -3481608, -10931229, 2612414, -1969779,
--736587, -2524367, 9810242, 2008971, 21146808, -18411452, 1684701, -15668041, 32101660, 7817378,
--18711562, 14720464, -13389561, 11951820, -18003430, 10561325, 1623498, -10853382, 9782325, -17148730,
--5645198, 5398774, 17576616, 7623567, 31142270, -6995965, -19968914, 1859184, -5650030, 2344515,
--13209709, -11523397, -21316996, 2688113, -22667764, -4584878, -3490198, -19945828, 13381507, 16850768,
--9747428, -1085016, -29248728, 33687040, 40939092, 6535867, -16063178, 5569499, 36034776, -16893180,
--7599408, -19265612, -11152419, -21146272, 8745627, -1025960, -11857331, 9217000, -11877732, 4958540,
--7367480, -3425773, 4953171, 2556579, -28454, -7930120, -1516124, 6931541, 4110821, -13216151,
-10495289, -9211631, 4871567, 6024229, -4094715, -7781944, 4239670, -6297496, 5208722, 3696356,
--8147553, 2991445, -1050656, 3151969, -4830228, -13332652, 3693135, 2309082, -5408975, 3426310,
--4839892, 9459665, -88047, 3851512, 1150514, 12298102, 1694365, -16558173, 9373229, 6108517,
-2873870, -31477278, 57612156, 21807160, -4732517, -17359184, -4849555, -18436684, 19824496, 49993956,
-1082332, -33157684, -15183246, 18039936, 6702834, -6594386, 23820426, -4601521, 2988224, 13667123,
--1440425, -13746580, -4483946, 11257646, -14413910, -13096966, -5323075, 4686883, 711354, -2492155,
--6052683, 10608032, 1101659, 15699179, 12392591, -16169478, 7947837, 19295140, 10794327, -14943265,
-5776731, 3209414, 13012677, 336081, 4537096, 3511673, 5367099, 27202176, 25743498, 15955804,
-34891776, -17187386, 17987324, -20707648, 13220983, -228707, 12082817, 15152108, 4886062, 3941169,
-18397492, 8551817, -4896263, 11678016, 71941, 15663746, -16608639, -9497783, 1450625, 37759740,
--26046830, 2519535, -32753420, -3892851, 3810173, 12905303, -15931644, -3151969, -16419123, 4250407,
-20267414, -12424804, -29283624, -6246493, -2870649, -7959112, 7123740, 5091147, -8279087, 2923262,
--7080791, -6940131, 6582575, -1060857, -3941706, -13243532, 7197292, -576063, -8368744, -6726456,
-6269042, 17814988, 1743757, -5129802, -2357400, 6478958, 16019154, 3178813, 1402844, 13323525,
--377957, 3613678, -1231582, -2642479, -602369, 4820027, 7589207, 4535486, -2134062, -2850785,
-6762963, 4793184, -10033580, 9525164, 2592013, 18525268, -4606890, 4690641, 11173894, -7674570,
--4686346, 6270653, -10528575, 48233020, 3953518, 3496104, -10618770, -6762426, 7975755, 7368554,
-4398047, 18611168, 7754564, -7845832, 9827959, 19858318, -832150, 21771190, -2155537, 10574209,
--22204980, 40162776, -6026376, -4704063, 6685117, -30396020, -7873212, -14632417, 21369072, 11771968,
-12073690, -14198088, 5115843, 5128728, -18963892, 5246840, 16124381, 13764296, 4675609, -4677220,
-1879048, -9102646, 30465276, 4620311, 13735305, 11253351, 16406775, -27169964, -2236604, -8182450,
-4999879, -10080288, -11982422, 22514756, -21532282, 16502875, -13694503, 17372606, -3991635, -18184354,
--1810866, -27328876, 16844862, 15691126, 18903762, -56528748, 16218333, 10217727, -17470316, -11629698,
--16250009, 29136522, -41735272, 25012816, 58469536, 1130113, -28052042, -11192685, 16899622, 34391412,
-9402757, -11716671, -25287694, -42323680, -3500935, -216896, 16736951, -12645994, -5797132, -9681930,
-28951838, 1901597, -915902, -8278013, 5975374, 1713692, -89121, 1196685, -373662, 5501853,
-18453864, 22672596, 11884711, -3308199, -1869385, 9062918, 2237678, -5502927, 2642479, -8898098,
--5453535, -10854456, -15947750, -33374044, -13254269, 5258114, 1626182, 18946174, -13401909, -9406515,
-24139326, 9099425, -6262063, -9815611, 7864085, -2285996, -9200894, 24041080, 2816962, -960462,
--7470559, 882616, -9490267, -12644921, 7949448, -27215060, 3782256, -16236587, 24575266, 2248416,
-6480569, -13654238, 10722386, -3469797, -10337449, 5177583, -10627360, -5588290, -9061307, -21664888,
--13099113, 16757352, 13184476, 10899553, 11181410, -26302916, -8094403, 5761699, -8234526, 16186658,
-10759967, 1423782, 9143449, 27135604, -8334384, -26908506, 51730732, -22305912, -29455960, 32679332,
--15944529, -8760660, 6866042, 16977468, -19724638, -5664525, 1662152, -12324946, 67472864, -162135,
--11395622, -3851512, 300111, 17307644, -33502892, -24810952, -14467597, -12840342, -1442035, -28156732,
--343597, -2076617, 10231149, 43402256, 43061880, -16310675, 33223720, -32380296, -29569240, 18216566,
-26844620, -8764418, 7233799, 3996467, 18318572, 23594940, -228707, 2083596, 30043296, -26508002,
--54018876, -5398237, -21676700, 12555263, 25074020, -1897839, -17231946, 35112432, 9992778, 7572564,
--9558450, -27692338, -16120623, 3703336, -12505871, 16914654, -1694902, -9519258, -1689533, -10849624,
--12067784, 16826608, -5416491, 7212861, -12068858, 17891224, -1715303, -311922, 10808285, 17202418,
--2026688, -2694018, -11503533, 2209224, -9919227, -8081518, -7047505, -2089502, -17146046, 785442,
--7911330, -2083059, -17190606, 5753109, 19400904, 8291435, -12178917, -23974508, -2040110, -1359357,
-13173202, -32568200, -7057705, 8757438, -7013682, 16499117, -438087, 10397579, 2518462, -19599010,
-21180632, 201863, 12978317, -13397077, -20365662, 18910742, -20161114, 6187438, -4580046, 17765058,
-179315, 3833795, -10668699, 3317325, -7508677, -26492432, -20716774, 8726300, -1513976, -833224,
-4443681, 19500762, -8678518, -6172405, -16376710, 6948184, 6207839, -2220498, -3101503, -44423384,
-2193118, 12230993, -15643345, 10795400, -24330452, -4833449, 1805497, 15094126, 19573240, 2093797,
--9054328, 5899138, 35108672, 30196842, 30501248, -1659468, -2576981, 6176700, 3840238, -14233522,
-9218610, 37997040, -27110908, -9225053, -7712151, -267362, 1656784, 4615479, -20109036, -31341450,
--11434277, -2232309, 62594852, 31322660, 21386252, -3323768, -5261335, -16312823, 27333708, 3519726,
-17565342, -6843494, -8227010, -13025025, -10945724, -46555300, -20242718, -24780350, 19317690, -2243584,
--8813273, -1910724, -18751828, -9317932, 20226074, 29706678, -4539781, 26137560, 14502494, 10679973,
-1774358, 12138651, 16085189, 12934294, -3240553, -1316408, 344671, 17661442, -14231911, -18988588,
--8830990, 9468792, -1606855, -13502840, -8361765, -13526999, 7807714, -3437048, 16611323, 32425930,
-6277095, 19810536, 26475252, 12366285, 16454557, 7762080, 5277978, 6805376, -12002286, 16895864,
--14248017, -10087268, 3891240, 1001801, -10158135, 4771709, 9457518, 16968878, 7171522, -20476794,
-11037529, 7961259, 2189897, 8829379, -5383205, -42719892, 24018530, 20854750, -1084479, 34332356,
-15537044, -23579908, -23095650, 9953587, -9451076, -21053392, 1416266, 1958505, 9441412, -5336497,
-12301860, -3168612, 11650636, 14671071, -13604846, -55350856, 29714732, -8471823, -17242684, 12446815,
-19648938, 559420, -37033892, -4993437, -1440962, -38301444, -23766202, 19975892, -5749888, -15640660,
--13062069, 8505646, -37092412, -26496726, 50256488, -4404489, -29055990, 11282879, 27336930, 11565273,
--41184440, 58851252, 23922968, -36483600, 20282984, 26536456, 4333622, -24750286, 25638808, 28427852,
-17439714, -22821308, 21521008, 39871256, 2231773, 40279276, 50058380, -26874684, -15874736, -18751828,
-47301548, 29959008, -20441896, 11402064, -12333535, -30172146, 25936770, 58773408, 8567923, -17822504,
--14730127, 35265976, -3246459, -39717712, -28292560, 7096360, -1413044, 32693828, -5793911, 25233470,
--49174156, -7647726, 2022393, 8358007, -10197326, 10356777, -413927, 922344, 5694590, 1312649,
--12818330, 3823058, -6078453, 7863548, 3156801, -17997524, 15712064, 5037997, -14893336, -10726681,
-2876018, -13006772, 2565169, 11774116, 13041668, 1791001, -12210592, -4032438, 4038880, -16822314,
-9803800, 12361453, 4044786, 983011, 12412992, 4494684, -5578626, 6005975, -4500589, 992674,
--8577587, 5363878, 19854560, 34739844, 55672976, 22512072, -23155780, -8467528, -19429896, 11911555,
--9473624, 15336791, 10051297, -25540560, 12978854, -26025354, -8817568, 256087, -9627169, 1516660,
-13573170, 10696616, 720481, -20732344, 4658966, 16755204, -6348499, 2543158, -7551090, -24252606,
-24583856, -14623827, 17019882, -24975234, -14777909, -3466039, -20574504, -6045704, 20886426, -20310900,
-27540940, 1854889, 22461068, 8934069, -11188927, -30059402, 24715926, 15397458, 10295037, 6415608,
-25484188, -18805514, -9591736, -10850698, 7971460, 9640054, -2490007, -23710366, -1068373, -3207267,
--24013700, -9445707, 3810710, 6589017, 18974628, -2170569, -16862578, 22600654, -4318053, -3810173,
-27097486, 12979928, -22188338, 7305203, -13586055, 8732205, -7107634, 10712722, -19154480, 10853919,
--6618545, 21368536, 3683471, 8286066, -7169911, 82141, -15532212, 6375342, 1051730, 842350,
--364535, 4609037, -6233608, -5679558, -711354, 2682207, -1701881, 4250944, -7877507, -1354525,
-6124087, -1296006, -242666, -1099512, 206158, 553514, -12451647, 2561411, 10075993, 402653,
--1409823, -2488397, -1176284, -9071508, 722628, -2099702, -1098975, -4595615, -7609609, -1486596,
-7577396, -4099010, -2242510, 3772055, 1657857, 6012954, -5660230, -1935957, -794569, -4277251,
--6615860, -41258528, -48598092, -26026964, 144189568, 126756296, 76713488, 168197360, -35840964, -126346128,
--44422308, -238212304, -124871880, -2457258, -61648888, 85207856, 156161792, 21930640, 91764120, 178922432,
-30035244, 62448824, 5979668, -183727968, -153493536, -135514816, -149296816, -90467584, 74131672, 31441844,
-74226160, 193390032, 116533200, 30236570, 143471776, 65557844, -87885768, 47815872, -64135672, -168209168,
--20748988, -103965592, -191249520, -86223616, -19843286, -100211248, 111897320, 120471688, 57008712, 191822368,
-216646736, 82292112, 107134200, 101164736, -112692960, -73342472, -144118704, -225082592, -207087216, -132682280,
--133310416, -38168300, 86586544, 112165216, 149781072, 211168512, 189587904, 110932024, 80908056, 14693620,
--87850336, -127601328, -93598608, -121483688, -150190704, -50711216, -56702696, -27418534, 93711888, 65073588,
-69247760, 145929024, 37215892, -6254010, 24070070, -40108016, -63005024, -34879968, -63667520, -18914500,
-40859636, 15763067, 22525492, 51873540, -12111271, 11030013, 28192166, -47307456, -4731444, 60054916,
--56549152, 5197984, 9531069, -112512040, -5695127, -1864016, -134712192, 11098195, 47505560, -16942036,
-138870256, 126500208, 23171886, 135353216, 66657892, -5469641, 22497038, -35960688, -145471072, -151259616,
--187569280, -213129696, -107540616, -16962436, 43333000, 134529120, 222994704, 256076688, 203566960, 151034672,
-69009920, -27580670, -84715544, -186134224, -233558176, -171529712, -137841072, -130813968, 8683887, 65208340,
-79403208, 130254544, 116043576, 76997488, 75474384, 54920284, 17861696, 22657564, 560493, -39524436,
--45617384, -57357676, -73910480, -64209224, -43142408, -24988120, -2066953, 14066018, 8092256, 5173288,
-249645, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+15737834, 6034966, 3824132, 1245541, -3338263, 45634, 3016678, 5682779, 75699, 554588,
+329639, -2076080, 550293, 1931662, -391379, 1886564, 2901251, 3874597, 1621887, 1592896,
+2035278, 1813550, -3562675, 3613141, 6772090, -3209414, 1919850, 1068910, 1884954, 354335,
+4005594, -2609193, -940598, -2347737, 2306934, 6725919, -1142461, 3266323, -101469, -1513976,
+-5550709, 2077690, -2881923, 2558190, 1280974, 2857227, -331786, -1710471, 886911, -1176821,
+3834332, 501974, -3064996, 3911105, -871878, 3053722, 2335389, -118648, 2240362, 4408247,
+-1258425, -1538672, -1269700, 2195802, -1821066, -2370822, 2719788, 36507, 1818382, -2929168,
+4310537, 260919, -1243930, -504122, -503585, 1729261, -1647120, -2595771, 1511829, 2330020,
+2178085, -2058363, -3105261, 1242319, -134755, -364535, -1213865, -1123134, 1514513, -399969,
+-255014, -952946, -1161252, 226560, -843961, 353261, 207769, 1143535, 762357, -338229,
+377957, 651761, -721555, -285078, 10201, -312996, -561030, 397821, 1071594, 633508,
+791348, 16106, 12225624, 9594420, 4808753, 707059, -1816771, 5563594, -3260417, -3485903,
+-812286, -6094559, 3677029, 255551, -2541547, 1453310, 3533148, 6098317, -2836826, 3521873,
+7898982, -2247342, 41339, 1823751, 4098473, -1024887, 4466229, 3184182, 4518306, 1057099,
+3446711, -3510062, 6026913, -707596, 5814312, 2906619, -659814, 740882, -983548, -118112,
+-2126546, -978179, -2623151, -1902134, 2013266, -528818, -5667746, -1249299, 577136, -139050,
+-3172907, -3236258, -1675037, -1388885, 4393752, -1749125, -4874788, -6460168, -7158100, -2441689,
+-3167002, -236760, 1074279, 3464965, -4691715, -2099702, 519691, -453119, -2117956, 538482,
+-4937602, -444529, -5814849, 3111704, -3179350, -1516660, 3984119, -565325, 2725694, 813896,
+973884, 3126736, 745177, -2483028, -1176821, 266825, -2471217, 1316944, 2453500, 1224603,
+-1942936, 1454383, 2046552, 423591, 1094680, -592706, -1155346, -768262, -1155346, 817118,
+-148176, 750546, -970663, -679679, 766115, 6478958, -14046691, -3777961, -7113540, -1328219,
+1611, 7731478, -3757023, -12601434, -4430796, -327491, 4803384, 1489817, -4664872, -10940892,
+-2805688, 2991982, -1217086, 6154152, 251256, 2694018, -599148, -4858145, -5270462, 3178276,
+3894462, 451508, 1272384, -195958, 2386928, 548145, -6483253, 343597, 9163850, 1229971,
+-2258079, -845572, -2414309, 559956, -2079838, -3975529, 6142877, -1904281, -2532420, 5560909,
+-2889439, -4934381, 246424, 34897, 181462, -7116761, 5809480, -2203318, -115427, 5342940,
+4879083, -7629473, -1912334, 1482301, 1877975, -670552, 4206921, 1158031, 2102923, 2905009,
+460098, 2323041, 3530463, 770410, 48855, 3275450, -8679055, -1920387, 248571, 4445828,
+2491618, -1063004, -849867, 3236258, 3037079, -3462818, -463856, -1226750, 139050, 1919850,
+2465311, 496606, 3039226, -292595, -2120103, -1007170, 277025, 235149, 321586, -797790,
+2129767, -417686, 789737, -306553, -915365, 629750, 9127, -402116, -742493, 187368,
+-695785, -106837, -1278827, -1003412, 311922, -185220, -990527, -2017561, -703301, 460635,
+1762010, -27909772, -11086384, -5578626, -7984881, 2561948, -2791729, -2610803, -379031, 3599183,
+-3250753, -3754875, -5600638, 1182727, 4944581, 1181116, -3853660, -4662724, 1367947, 4231617,
+3809099, -5309654, -7968775, 667331, -7452842, 4018479, -93416, 2825552, -252866, 2728915,
+-2959769, -1154809, 7705172, -9306120, 4270808, 2258079, 1005559, -3255048, 2028835, 4689568,
+1188095, -5641440, 1109175, -3552475, 2750927, -7726110, -338766, -6992207, 5395553, -504659,
+-1444183, -1932735, 2951716, -11782706, 5425618, -3345243, -7219303, 2943663, 5733782, 6605123,
+3808562, 1469416, -504122, 852014, -632434, 4290673, -2443837, 1270774, 3277060, 8240432,
+1264331, 239981, -5899675, 3817152, -2951180, 747324, 128312, 4424890, -3889630, 307627,
+3956739, -273804, -4769025, -6439767, 5357435, 535260, 978179, 2801393, -592706, 1406065,
+1131187, 44023, 942208, -370978, 132070, 1532767, 1312113, 1512365, -2396592, 1017370,
+-1806571, -685047, -1526324, 1487132, -1727651, -15913928, 7796977, 12402255, 2424509, 967978,
+6912750, 2316598, 2122788, 3760781, 530428, 3935264, 3983045, -3218004, -576599, 524523,
+-3889630, -2432562, -39192, 1904818, -2289755, 12896176, 6870874, -1898376, 934692, 4085051,
+5173288, 5878200, -2456185, 4134980, 4843650, 257161, 1420560, 1378148, 2762738, 1979980,
+1224603, 2713883, 2616709, -5601174, -4307316, -8615704, 940598, -3061775, -4289599, 4409321,
+-1248225, 2770254, -10645613, 11718818, -842350, -5595269, -1026497, 9286793, 6740951, -1497870,
+250182, 4489315, -2132988, 1922535, -3420942, -7337952, 871342, 670552, -5876589, -2342905,
+-5792837, 1021665, 2152316, 1297617, -2812130, -5141076, -7805566, -9323837, -6686727, -2622615,
+542777, -2278480, 914291, 3078955, 2751464, -3883187, -408559, -4233764, 1547262, -1483911,
+1218697, -68719, -1717987, 1220845, 1415729, -1254667, -580357, -1629940, 2187749, -2599529,
+569083, 817118, 772557, -273804, -596464, 541166, 1165547, 1147830, 955093, 717796,
+983548, 310311, 1865626, -438624, 2066953, -1295470, 657130, -392453, -523449, -1489817,
+-1139240, -994285, -1335198, 519691, -1071058, -153008, 987306, 318901, 29315300, 7773891,
+2174327, -1086627, 17668958, 2073932, 8395050, 1733019, 5583458, 9203578, 3246995, -5108327,
+5429913, 6326487, 996969, -461709, 1348620, 11580842, 799938, -3957812, -7044820, -2068564,
+-216896, -8044474, 1344862, 2386928, 4611185, 1966558, 3252901, 8869107, -2776160, -1411434,
+5442798, -854162, -2411087, -462246, -7940858, 5128191, 3351685, 178778, 5094905, -2554969,
+-6957310, -15022185, -5509370, 5541582, 6120866, 187368, 4292283, -4248797, -4618701, 12211666,
+-7083475, 5529234, -6239514, 1291711, -9090835, -9541270, 10331007, -3962644, -3733400, 14259291,
+1060857, -1616518, -6719477, 5217849, 8228084, 387084, -4458713, -8422968, -1336809, 6092948,
+-1973538, 2052458, -3732864, 2988760, -1433445, 952409, 6490770, -7047505, 2175401, -2012729,
+412317, 783295, -833224, 7496329, 2329483, 1078037, -2262911, 46708, -1800128, 3138547,
+-1566053, 2480881, 2490007, -2677912, -19864, -459562, -1751273, 3537979, 562641, 1633161,
+92879, -1303523, 681289, -27380, 19864, 978716, 1537598, 544387, 2029372, 606664,
+-210990, 1118302, 738734, -860604, 195421, -402653, 396211, 1801202, 1999307, 277025,
+-252866, 14890115, 5004711, 12335146, -7537131, 2456721, 6964290, -9446781, -3172907, -3701725,
+1033477, -4782446, -2851858, 7305203, -2173254, -1396938, -463320, 9146133, -3291019, -4265440,
+9844065, 1567126, -6863358, 2901251, -1459215, 1547799, 3758097, -5631239, -1236414, -4236985,
+-7509751, 900869, 250719, 1417876, -7387881, -7779260, 3062312, -695785, 2982318, -337692,
+4310537, 1225139, -134218, -4980552, -4738423, 1301912, 4841502, 2294050, -1337346, 14015552,
+3395709, 2370822, 6444599, 2330020, 4808216, 4799089, 3222836, 1905892, 2484102, -2077154,
+-1049046, 1030255, -5901822, 1537598, -9548249, 2583960, -6301254, 4937602, -3519189, 2692945,
+-1184874, -4701379, 1624035, -1275068, 5070209, -4411469, 13469017, 11260331, 5272073, -9710921,
+3092377, 4250944, -4072166, 1739462, 1249836, 6531035, 6305549, 2574296, -88047, -947040,
+-1291711, -3872450, 5879274, -493384, -652298, -37044, -1624035, 579821, 1995012, -1658931,
+3085934, -1213328, -2449742, -2674154, -44023, 1726040, 1782411, -541166, -577673, -2127083,
+-844498, 1025960, -2433099, 2699924, 2904472, -1884417, 558346, -2368675, -714575, 320512,
+975494, -1824287, 3074123, -18502720, -35604204, -1518271, -7135552, 6176700, -1835562, -9856413,
+-955630, -7981123, -8804146, -7545184, 11644193, 6047851, -7776575, -4468377, 8862665, 5135171,
+7909719, -5437966, 5116380, -4822175, -4873714, -1497870, -2128156, -15052250, 4116189, 8608188,
+3706020, -8944269, -2054605, 1597728, 2297808, -7976291, -1775969, -11451457, 2534031, -5421860,
+-503048, -3980361, 2199023, 12281459, -1315871, -2262911, 6153615, 8984535, -5416491, 2465311,
+3397856, -7542500, 4059818, 3796751, -8871792, 1419487, 5758478, -1333587, -9341017, -5867999,
+-6020471, 8521215, 3305514, 8346195, -4907000, -9582072, 2295660, 4826470, -2027225, -6847789,
+4591320, 6758668, 6393059, -7853348, -4080756, -1599875, 12769475, -2668249, 7632157, 2280628,
+-8947491, -7264401, -1371168, 5050345, -8475581, -454193, -1554778, 4727149, -994285, 10594611,
+1350767, -2358474, -3117610, -2613488, -3005403, -1909650, -996432, 1031329, 9127, -1174137,
+-3827890, -307627, -3719979, -1575716, 1582696, -1242856, 652835, -1017907, -2799782, 1791538,
+-417149, 4593468, -836445, -3585224, -2534568, 1525250, -643708, 250182, -977105, -2267743,
+850940, 2624762, -2200097, -612033, 3499325, 1698123, -2076080, 2858838, -18214420, -17180,
+504122, 10504416, 2544231, -4188130, 6212134, -2985002, 2717641, -9865003, -2905009, -6248641,
+-3470871, -12473122, -4738960, -7446400, 17204028, 9895068, 10484015, -12234751, -10484552, -5007932,
+5859946, -551903, -144418, 366683, 3515431, -824097, 4991826, -7112466, -6127308, -103616,
+-1748589, -8776229, -8858907, -7058779, -5140539, -3799436, -3536906, -11121281, 5096516, 13673565,
+-2977486, 6422050, 8759586, -6405407, 7578470, 4835597, 1788854, 12491912, -614717, 10467372,
+3855270, 1379221, -9822590, 3964255, 4820027, -2538863, 14338748, 11496017, 2208150, -4217658,
+-7183870, 4202089, -7063074, 2907156, -166967, 8555038, -48855, -12590697, 882616, -4919885,
+-2046015, -9414568, 11052561, 5821828, 3985193, 2710661, 12337830, -3485903, -12999792, -1954210,
+8115341, 303869, -6715718, -1638530, 888521, -2804614, 1540283, 4005057, -80531, 208843,
+-877247, 1359894, -260382, 4809290, 1395328, 1495186, -1160715, 1916092, 2444910, 4376572,
+-3651259, 2463164, 2428267, 59056, 726386, 4408784, 2334852, 1209570, -2678986, 3761318,
+-1135482, -2037425, -2537789, -70867, -6501507, 4165582, 2011655, 832687, -3110093, 3685082,
+3536906, 6477885, 3926674, 1182190, 1045825, 424128, 5235029, -16489453, 7431367, 5449240,
+7049652, -7704635, -13674102, 3952444, 4100083, 675921, -11532524, 11011222, 3155190, -5894306,
+-10158135, 4568235, -4498442, 17633526, 20541754, 3019362, -3299072, -7685307, 11659762, -13298292,
+-4764730, 16371342, 4064650, -3207267, -8875550, -8189429, -4630512, 267899, -10852845, 2420214,
+11537356, -1494649, 4326106, -8491150, -7745437, -2647847, -6406481, 16757889, -6175626, 7509751,
+6185290, 6782827, 1782948, 3316789, -11655467, -11703786, -11207717, -2527588, 8383240, 19320374,
+-7814693, -14015015, -3248606, -6477348, 3564286, 2967286, 10758893, -6620155, -155693, -8760660,
+-1679332, 15462419, -1999307, -8479876, 11072426, 3595425, 1775432, 5784247, -12455405, 1859184,
+-4230006, 1161789, 5674726, 13585518, 3793530, -15880105, 5770826, 1342177, -2474975, -6645388,
+290984, -1734093, -883153, -473520, 2217814, 3602404, 4370666, 1405528, 281320, -2606508,
+810675, -844498, 3132642, -5428302, 1993939, 2038499, -133681, 418759, 884226, -4125316,
+-127775, -2757369, 4414690, 4057134, 1004486, 4882841, -1949378, 621697, 3753265, -859530,
+2969970, 668941, 2747705, 863825, -6274411, -452045, -2256469, -426276, 828392, 295816,
+-2226941, 136365, -2619930, -76236, -1286343, 26761404, -11611981, -9166534, -2755759, 5607080,
+-15641197, 6234682, -4198331, 7872675, -7003481, -3251827, 9754944, 7164006, 2776160, -4941360,
+-1745367, 13261248, 13120588, -2770791, 11458436, -3370476, 16835198, -7912941, -4108136, 2962454,
+17632988, 12808129, 4276714, -9497783, -644245, -19621558, -2940979, 2996814, 9012452, 10423886,
+18575196, 4801237, -328565, -962610, -7116761, -12267500, -868657, -10650445, 7659001, 2331094,
+11838540, 6516003, -4039417, 11658689, -13965086, 6241125, -3114925, 937377, -2430415, 14856292,
+8747238, 4198331, 2658048, -27180164, -4318590, 15996606, 8108362, 919123, -512712, 736587,
+12952011, 5420249, -20508468, -6766184, -7922067, 1838783, 426276, -20446192, 780073, -19118510,
+-12640626, -1734093, -8200703, -8948564, 11880416, 14943265, -1635846, -7383586, -823023, 4533338,
+-1862942, 3856344, 6132140, -577673, 6814503, 9929964, -3219615, -5655398, 908922, -2457795,
+3012920, 1893544, -1595044, -1476932, 115964, 71404, 2813204, -383326, -3459596, 624918,
+3394098, 1190780, 3014530, -2709051, 4579509, -76236, -1702955, 1054951, -2916820, 1091459,
+-5834176, -3803731, -4567161, 2280091, 213138, -4400731, -872415, 3635690, 2429878, 3146064,
+-2139431, 1701344, 26844, -788127, -5575405, -2929705, -5909875, 9710384, 18914500, -4787815,
+-7692824, 1058710, 7319161, 4167192, -11563663, -754841, -9367324, -549756, -12751221, -1444183,
+-10958609, 465467, 11362336, 841814, 25077240, -10576357, -5024038, -9001178, 10247792, 16641388,
+-13345537, -4534949, -20709258, 3838627, -140660, 5605469, 5146445, -11677479, -6849936, 9007620,
+-3358665, -2631741, -11241540, 22687090, -2988224, -24419574, 6903086, -6484327, -7177427, 8695161,
+6887517, -7106024, -7690139, -2422899, -14002667, -8526047, 4770635, 3080565, 4976257, -4361540,
+-10088341, -11877195, -11747272, 9704479, -17292076, 203474, 4305168, -5439576, 573915, -185757,
+-2236604, -13880797, -2427730, -5686537, 8918500, 11165304, -1950452, 17398912, -858457, -255014,
+-5217312, -1192390, 25271050, 2359011, -11203959, -4609574, 9917079, 7201587, -13805636, 205085,
+2135136, -9538049, 8032126, 1773822, 8973797, 1286880, 1488743, 1276679, 834834, 3772055,
+5461051, 392453, 2808909, 8469139, 811212, -3133716, 1635309, 4022237, -3102040, -1013612,
+634581, -4100620, 3861176, 3342558, 4439923, 757525, -4511327, 983548, -1447404, 679142,
+-830002, -956167, 559956, -2711198, 3864934, -2019172, -2416993, -3214783, 7661148, -24696,
+-7991861, 5850819, 4812511, 1913945, -382252, 4450660, 3592740, -9165460, -12147241, 30758946,
+-7871065, -2763275, 2792266, 13078175, 9492951, -20071456, -8112657, -19072876, 4220879, 1027571,
+-5833640, -20990042, 914828, -9836012, 4392678, 4539244, 10608569, 465467, 7733089, 36134632,
+7912404, 8963060, -5644661, -2087891, 15849503, -1458141, 1281511, 4113505, 1069984, -2402497,
+-8228084, 14505715, -15446313, 6362994, -22980222, -7089381, -10736881, -14292041, -12178380, -111132,
+-25114822, -8646306, 3478387, 14307610, 8307541, -24793236, 14034879, 9229885, 10233296, -15779173,
+11553462, -7452305, -17966386, -6213744, -17877264, 8650601, 21412022, 5319317, -2036351, -14055280,
+11327976, -14964203, 22356916, -4217658, -2399276, -13530758, -14707042, 2118493, 17458506, 5705327,
+-12006044, -4909685, 2926483, -2515777, -4806069, 11412802, 5903433, -5353140, 14774151, -1219234,
+-20975010, 26278220, 13993003, 10817412, 4961761, -3553549, -1297080, -2201171, 7851737, 1777043,
+1151588, 17295296, 6753299, 303869, 824097, 2453500, 9031779, -7246147, 5091147, 493384,
+1699733, 1652489, 5815923, 2843268, 358093, 9746355, 7456063, 648003, -3411815, -3467112,
+-1282048, 7977365, 3990025, 4476967, 4300873, 5305895, -6602976, 6598681, -1756105, -1764158,
+6112812, 9586904, -1398012, -2670933, -64425, 9124121, 10510859, 4021163, 6475200, 4962835,
+16905528, 3151969, -10803453, 4893042, -3116536, 5042292, 18542984, -26087094, -11802033, -20976084,
+11942157, -4229469, 2090575, -6925635, 15139760, -14873472, -14963666, -6830609, -3461744, -10712185,
+-18527416, -8962523, 3515968, 12185896, -17045652, 11263015, -6393059, 1348083, 22168474, 16938814,
+-245350, 8927090, 4318053, -3523484, -2637110, -30048128, 4205310, -3049427, 2998424, 5852967,
+-2324114, 819265, 30396558, -27254788, 2601140, 32886028, 4325569, 9082782, -12862890, -3521336,
+17224966, 30189862, 1560684, 26773216, -10409390, 24220932, -8483097, 17928268, 18209588, -4500052,
+35460324, -5897527, -1476395, -10524817, -15991774, -16969416, -7765838, -10186052, -24635932, -11508902,
+-5214627, 9118752, 9035537, 1156420, -12649216, -2115808, -3563749, 15857556, 4931696, -8268349,
+13594645, 3058017, -1673427, -1916629, -9884330, -1522029, -3928285, 4138201, -10009421, -4786741,
+-6981470, -6947110, 12637941, 4879620, -4195646, 3816615, -3230352, 2414845, -7607998, 11325292,
+531502, 3176128, -302258, -7637526, 6986301, -930397, 2559801, 8044474, 5567888, 3426847,
+617402, -11883101, 5661304, -4558034, -565325, 10218801, -244276, 3783866, 2424509, 4879083,
+6845104, -2483565, -5574868, -3677566, -4474282, 2126009, 6133750, 10519449, 6042482, -12297565,
+-1602560, -13472239, -11390253, -39062728, -27616102, -19650550, -1852742, 26421566, -17279190, -2256469,
+-13274670, -19374598, -15896211, -19792284, -20485384, -8195335, -24194624, -26494042, -22897544, 6461779,
+-15784005, -8344585, -19697794, 18815178, 30975304, 2633889, -3481608, -10931229, 2612414, -1969779,
+-736587, -2524367, 9810242, 2008971, 21146808, -18411452, 1684701, -15668041, 32101660, 7817378,
+-18711562, 14720464, -13389561, 11951820, -18003430, 10561325, 1623498, -10853382, 9782325, -17148730,
+-5645198, 5398774, 17576616, 7623567, 31142270, -6995965, -19968914, 1859184, -5650030, 2344515,
+-13209709, -11523397, -21316996, 2688113, -22667764, -4584878, -3490198, -19945828, 13381507, 16850768,
+-9747428, -1085016, -29248728, 33687040, 40939092, 6535867, -16063178, 5569499, 36034776, -16893180,
+-7599408, -19265612, -11152419, -21146272, 8745627, -1025960, -11857331, 9217000, -11877732, 4958540,
+-7367480, -3425773, 4953171, 2556579, -28454, -7930120, -1516124, 6931541, 4110821, -13216151,
+10495289, -9211631, 4871567, 6024229, -4094715, -7781944, 4239670, -6297496, 5208722, 3696356,
+-8147553, 2991445, -1050656, 3151969, -4830228, -13332652, 3693135, 2309082, -5408975, 3426310,
+-4839892, 9459665, -88047, 3851512, 1150514, 12298102, 1694365, -16558173, 9373229, 6108517,
+2873870, -31477278, 57612156, 21807160, -4732517, -17359184, -4849555, -18436684, 19824496, 49993956,
+1082332, -33157684, -15183246, 18039936, 6702834, -6594386, 23820426, -4601521, 2988224, 13667123,
+-1440425, -13746580, -4483946, 11257646, -14413910, -13096966, -5323075, 4686883, 711354, -2492155,
+-6052683, 10608032, 1101659, 15699179, 12392591, -16169478, 7947837, 19295140, 10794327, -14943265,
+5776731, 3209414, 13012677, 336081, 4537096, 3511673, 5367099, 27202176, 25743498, 15955804,
+34891776, -17187386, 17987324, -20707648, 13220983, -228707, 12082817, 15152108, 4886062, 3941169,
+18397492, 8551817, -4896263, 11678016, 71941, 15663746, -16608639, -9497783, 1450625, 37759740,
+-26046830, 2519535, -32753420, -3892851, 3810173, 12905303, -15931644, -3151969, -16419123, 4250407,
+20267414, -12424804, -29283624, -6246493, -2870649, -7959112, 7123740, 5091147, -8279087, 2923262,
+-7080791, -6940131, 6582575, -1060857, -3941706, -13243532, 7197292, -576063, -8368744, -6726456,
+6269042, 17814988, 1743757, -5129802, -2357400, 6478958, 16019154, 3178813, 1402844, 13323525,
+-377957, 3613678, -1231582, -2642479, -602369, 4820027, 7589207, 4535486, -2134062, -2850785,
+6762963, 4793184, -10033580, 9525164, 2592013, 18525268, -4606890, 4690641, 11173894, -7674570,
+-4686346, 6270653, -10528575, 48233020, 3953518, 3496104, -10618770, -6762426, 7975755, 7368554,
+4398047, 18611168, 7754564, -7845832, 9827959, 19858318, -832150, 21771190, -2155537, 10574209,
+-22204980, 40162776, -6026376, -4704063, 6685117, -30396020, -7873212, -14632417, 21369072, 11771968,
+12073690, -14198088, 5115843, 5128728, -18963892, 5246840, 16124381, 13764296, 4675609, -4677220,
+1879048, -9102646, 30465276, 4620311, 13735305, 11253351, 16406775, -27169964, -2236604, -8182450,
+4999879, -10080288, -11982422, 22514756, -21532282, 16502875, -13694503, 17372606, -3991635, -18184354,
+-1810866, -27328876, 16844862, 15691126, 18903762, -56528748, 16218333, 10217727, -17470316, -11629698,
+-16250009, 29136522, -41735272, 25012816, 58469536, 1130113, -28052042, -11192685, 16899622, 34391412,
+9402757, -11716671, -25287694, -42323680, -3500935, -216896, 16736951, -12645994, -5797132, -9681930,
+28951838, 1901597, -915902, -8278013, 5975374, 1713692, -89121, 1196685, -373662, 5501853,
+18453864, 22672596, 11884711, -3308199, -1869385, 9062918, 2237678, -5502927, 2642479, -8898098,
+-5453535, -10854456, -15947750, -33374044, -13254269, 5258114, 1626182, 18946174, -13401909, -9406515,
+24139326, 9099425, -6262063, -9815611, 7864085, -2285996, -9200894, 24041080, 2816962, -960462,
+-7470559, 882616, -9490267, -12644921, 7949448, -27215060, 3782256, -16236587, 24575266, 2248416,
+6480569, -13654238, 10722386, -3469797, -10337449, 5177583, -10627360, -5588290, -9061307, -21664888,
+-13099113, 16757352, 13184476, 10899553, 11181410, -26302916, -8094403, 5761699, -8234526, 16186658,
+10759967, 1423782, 9143449, 27135604, -8334384, -26908506, 51730732, -22305912, -29455960, 32679332,
+-15944529, -8760660, 6866042, 16977468, -19724638, -5664525, 1662152, -12324946, 67472864, -162135,
+-11395622, -3851512, 300111, 17307644, -33502892, -24810952, -14467597, -12840342, -1442035, -28156732,
+-343597, -2076617, 10231149, 43402256, 43061880, -16310675, 33223720, -32380296, -29569240, 18216566,
+26844620, -8764418, 7233799, 3996467, 18318572, 23594940, -228707, 2083596, 30043296, -26508002,
+-54018876, -5398237, -21676700, 12555263, 25074020, -1897839, -17231946, 35112432, 9992778, 7572564,
+-9558450, -27692338, -16120623, 3703336, -12505871, 16914654, -1694902, -9519258, -1689533, -10849624,
+-12067784, 16826608, -5416491, 7212861, -12068858, 17891224, -1715303, -311922, 10808285, 17202418,
+-2026688, -2694018, -11503533, 2209224, -9919227, -8081518, -7047505, -2089502, -17146046, 785442,
+-7911330, -2083059, -17190606, 5753109, 19400904, 8291435, -12178917, -23974508, -2040110, -1359357,
+13173202, -32568200, -7057705, 8757438, -7013682, 16499117, -438087, 10397579, 2518462, -19599010,
+21180632, 201863, 12978317, -13397077, -20365662, 18910742, -20161114, 6187438, -4580046, 17765058,
+179315, 3833795, -10668699, 3317325, -7508677, -26492432, -20716774, 8726300, -1513976, -833224,
+4443681, 19500762, -8678518, -6172405, -16376710, 6948184, 6207839, -2220498, -3101503, -44423384,
+2193118, 12230993, -15643345, 10795400, -24330452, -4833449, 1805497, 15094126, 19573240, 2093797,
+-9054328, 5899138, 35108672, 30196842, 30501248, -1659468, -2576981, 6176700, 3840238, -14233522,
+9218610, 37997040, -27110908, -9225053, -7712151, -267362, 1656784, 4615479, -20109036, -31341450,
+-11434277, -2232309, 62594852, 31322660, 21386252, -3323768, -5261335, -16312823, 27333708, 3519726,
+17565342, -6843494, -8227010, -13025025, -10945724, -46555300, -20242718, -24780350, 19317690, -2243584,
+-8813273, -1910724, -18751828, -9317932, 20226074, 29706678, -4539781, 26137560, 14502494, 10679973,
+1774358, 12138651, 16085189, 12934294, -3240553, -1316408, 344671, 17661442, -14231911, -18988588,
+-8830990, 9468792, -1606855, -13502840, -8361765, -13526999, 7807714, -3437048, 16611323, 32425930,
+6277095, 19810536, 26475252, 12366285, 16454557, 7762080, 5277978, 6805376, -12002286, 16895864,
+-14248017, -10087268, 3891240, 1001801, -10158135, 4771709, 9457518, 16968878, 7171522, -20476794,
+11037529, 7961259, 2189897, 8829379, -5383205, -42719892, 24018530, 20854750, -1084479, 34332356,
+15537044, -23579908, -23095650, 9953587, -9451076, -21053392, 1416266, 1958505, 9441412, -5336497,
+12301860, -3168612, 11650636, 14671071, -13604846, -55350856, 29714732, -8471823, -17242684, 12446815,
+19648938, 559420, -37033892, -4993437, -1440962, -38301444, -23766202, 19975892, -5749888, -15640660,
+-13062069, 8505646, -37092412, -26496726, 50256488, -4404489, -29055990, 11282879, 27336930, 11565273,
+-41184440, 58851252, 23922968, -36483600, 20282984, 26536456, 4333622, -24750286, 25638808, 28427852,
+17439714, -22821308, 21521008, 39871256, 2231773, 40279276, 50058380, -26874684, -15874736, -18751828,
+47301548, 29959008, -20441896, 11402064, -12333535, -30172146, 25936770, 58773408, 8567923, -17822504,
+-14730127, 35265976, -3246459, -39717712, -28292560, 7096360, -1413044, 32693828, -5793911, 25233470,
+-49174156, -7647726, 2022393, 8358007, -10197326, 10356777, -413927, 922344, 5694590, 1312649,
+-12818330, 3823058, -6078453, 7863548, 3156801, -17997524, 15712064, 5037997, -14893336, -10726681,
+2876018, -13006772, 2565169, 11774116, 13041668, 1791001, -12210592, -4032438, 4038880, -16822314,
+9803800, 12361453, 4044786, 983011, 12412992, 4494684, -5578626, 6005975, -4500589, 992674,
+-8577587, 5363878, 19854560, 34739844, 55672976, 22512072, -23155780, -8467528, -19429896, 11911555,
+-9473624, 15336791, 10051297, -25540560, 12978854, -26025354, -8817568, 256087, -9627169, 1516660,
+13573170, 10696616, 720481, -20732344, 4658966, 16755204, -6348499, 2543158, -7551090, -24252606,
+24583856, -14623827, 17019882, -24975234, -14777909, -3466039, -20574504, -6045704, 20886426, -20310900,
+27540940, 1854889, 22461068, 8934069, -11188927, -30059402, 24715926, 15397458, 10295037, 6415608,
+25484188, -18805514, -9591736, -10850698, 7971460, 9640054, -2490007, -23710366, -1068373, -3207267,
+-24013700, -9445707, 3810710, 6589017, 18974628, -2170569, -16862578, 22600654, -4318053, -3810173,
+27097486, 12979928, -22188338, 7305203, -13586055, 8732205, -7107634, 10712722, -19154480, 10853919,
+-6618545, 21368536, 3683471, 8286066, -7169911, 82141, -15532212, 6375342, 1051730, 842350,
+-364535, 4609037, -6233608, -5679558, -711354, 2682207, -1701881, 4250944, -7877507, -1354525,
+6124087, -1296006, -242666, -1099512, 206158, 553514, -12451647, 2561411, 10075993, 402653,
+-1409823, -2488397, -1176284, -9071508, 722628, -2099702, -1098975, -4595615, -7609609, -1486596,
+7577396, -4099010, -2242510, 3772055, 1657857, 6012954, -5660230, -1935957, -794569, -4277251,
+-6615860, -41258528, -48598092, -26026964, 144189568, 126756296, 76713488, 168197360, -35840964, -126346128,
+-44422308, -238212304, -124871880, -2457258, -61648888, 85207856, 156161792, 21930640, 91764120, 178922432,
+30035244, 62448824, 5979668, -183727968, -153493536, -135514816, -149296816, -90467584, 74131672, 31441844,
+74226160, 193390032, 116533200, 30236570, 143471776, 65557844, -87885768, 47815872, -64135672, -168209168,
+-20748988, -103965592, -191249520, -86223616, -19843286, -100211248, 111897320, 120471688, 57008712, 191822368,
+216646736, 82292112, 107134200, 101164736, -112692960, -73342472, -144118704, -225082592, -207087216, -132682280,
+-133310416, -38168300, 86586544, 112165216, 149781072, 211168512, 189587904, 110932024, 80908056, 14693620,
+-87850336, -127601328, -93598608, -121483688, -150190704, -50711216, -56702696, -27418534, 93711888, 65073588,
+69247760, 145929024, 37215892, -6254010, 24070070, -40108016, -63005024, -34879968, -63667520, -18914500,
+40859636, 15763067, 22525492, 51873540, -12111271, 11030013, 28192166, -47307456, -4731444, 60054916,
+-56549152, 5197984, 9531069, -112512040, -5695127, -1864016, -134712192, 11098195, 47505560, -16942036,
+138870256, 126500208, 23171886, 135353216, 66657892, -5469641, 22497038, -35960688, -145471072, -151259616,
+-187569280, -213129696, -107540616, -16962436, 43333000, 134529120, 222994704, 256076688, 203566960, 151034672,
+69009920, -27580670, -84715544, -186134224, -233558176, -171529712, -137841072, -130813968, 8683887, 65208340,
+79403208, 130254544, 116043576, 76997488, 75474384, 54920284, 17861696, 22657564, 560493, -39524436,
+-45617384, -57357676, -73910480, -64209224, -43142408, -24988120, -2066953, 14066018, 8092256, 5173288,
+249645, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-527744,
-6460705, -673773, 1967632, -1189706, 8621073, -3393561, -827855, -316754, 1074279, -1533303,
-3951907, -694174, -2653753, -484258, 5400385, 387621, -2724083, 2516851, 1869921, 3539053,
-1460289, -2718178, -1783485, 6015639, 843961, -1557463, -1187559, -1242856, 1189706, 1269163,
--773094, -7691750, -1918240, 355409, 5303211, 1879048, -653909, -37581, -3054796, 4204773,
--4307852, -5748814, 744640, 39728, -1940252, -1336809, -1599875, 803696, 523449, 489089,
--2006287, 4989142, 153545, 6692096, -1080721, -3213709, 1470489, -374199, 958315, 1539746,
-3389803, 2288681, -868657, -1860258, -1571421, 4334696, -4434017, 154082, 122407, -797253,
--3804267, 3333432, -1919850, 423591, 2907156, -2069637, -2751464, -2304787, 2947421, -292058,
--925029, -840203, 91805, -573915, -1204738, 1445257, 1495186, 1075889, 676994, 354335,
-2044404, 310311, -51540, 410706, -210453, 52076, -484258, -276489, -256087, 1364189,
-323733, -949188, 1178969, -2560874, 2239289, 1325534, -2985002, -1663226, -217970, 265751,
--140660, -456340, -1503239, 2703682, 540629, -1183800, -1572495, -93952, 5638219, -799401,
--2622078, 3586298, -1380832, -3401077, -323196, 2866891, 2172717, -1868848, 530428, -2332704,
-1374390, 1307281, -1085016, 2863133, -761283, -5206037, 989453, 2677375, 2537789, 339302,
--358630, -3778498, -1242319, -510564, -1622424, 3383361, 4800163, 2207613, -6482717, 2188286,
-7691213, 3154654, -345745, -66572, 3558381, -1761474, 1184874, -3246995, -2893197, 2950106,
-3382287, 1600949, 927713, 576599, 703838, 1567126, 331786, -320512, -1124745, 787053,
--2246268, -446677, -950798, -4666482, -2294050, 956167, 1759326, 1409286, 3176128, 2463164,
-2643016, 3744138, -2370285, -1532767, -667331, 1176284, 1406602, 2201171, -448824, -763967,
--393526, 1336272, -959925, 1207423, 332323, -531502, -388158, 385473, -203474, 727460,
-331249, 99321, -287226, 392990, 397284, -184684, 624918, 129923, 172336, -513785,
-128312, -160524, 34360, 767189, 110059, 312996, 310848, 4453344, -311922, 1835562,
--2867965, -4285841, -2674154, 2324651, -1945083, -1992328, -2109903, -2831994, 2725694, 378494,
-2000381, -887985, 590021, -5818070, -3733937, -2660732, 3729105, 703301, 831076, 2029909,
--2056753, -1054951, -462783, 664109, -4403952, -860067, -2971044, -3249143, 187905, -2867965,
-1921461, 1799054, 7681549, -1921461, 3906810, -2609730, 1614908, -1794760, 402116, 6706592,
-1077500, 2899640, -3182034, 2036351, -2862596, -1371168, -443455, 4256313, -2106682, -1108638,
--3797825, -2028835, -4484483, -613643, 4236985, 1001801, 314069, 723165, 3884261, -3841848,
--6720550, 1545651, 2113661, -4398047, -324270, 578210, -1089311, 1760400, 5251672, 1088237,
--1336809, 110595, -1873143, 338766, 317291, -1509681, -453656, -485868, -2126546, -507880,
--1214939, 442382, -463320, -843424, 1736241, -336081, -1713692, 727460, -1221381, 48318,
--1321239, -1925219, 1116155, -352187, -140123, 608275, 816044, 245350, 1779727, -848793,
--149787, 297427, -641561, -274341, -202400, -887448, -465467, 1465658, 489626, 2088428,
-256087, 937914, -828392, 2471754, -6861747, 1145683, -2402497, -5046050, -3655017, 2059437,
--1013075, -226023, 5006858, 1671816, -700617, 446677, 4257923, -1995012, 3143379, -1417339,
-938987, -4496831, -796180, 3065533, -1028108, 3805878, 4256313, 1412507, 2681670, 5586679,
--1304060, -7839389, 1786170, -3481608, 245350, -9604084, 263067, 3099893, -1927367, 3602941,
-510564, -3455838, 1248225, -7218767, -4626217, -1750199, -1775969, -5987722, 3043521, 3342022,
-197032, 3111704, 239444, 855772, -1944547, 2823404, 2140504, -1106491, 6624987, -1229434,
-5473399, 4704063, -268972, -745177, 14496, 1518808, 2236067, 731218, 2502892, 852014,
-850404, 7348152, 2798171, -3182571, -1471563, -25233, -1765768, 1106491, -1277753, 7412577,
-1234803, 3492882, -2655901, 3020436, -33286, -1437740, 635118, -2372970, -1559073, -390305,
--1718524, -1036698, -1040993, 927176, -1612760, -355945, -1136019, -564788, -553514, 2052994,
--866510, 1080721, -292058, -1707250, -288300, 1091459, 428960, 212064, 664646, -1022202,
-893890, 609885, 523449, 1025423, -576599, 262530, -1691680, -96637, 1296543, 1188632,
-281320, 244276, 161598, 976568, -13087302, 42950, -31675, 3358665, 5753646, 2018098,
--2888366, -4784057, -756988, 6223945, -1173600, -1185948, -4604205, -106837, -1911261, 4609037,
-5485747, -9402757, 6143951, 3919695, -3557307, -762894, -4922570, 31139, -1479616, 117575,
-3240016, 6254010, -2339684, 1445793, -1628866, -2139431, 2329483, 4315906, 2917357, -2711198,
--4443681, 3103114, 2161442, -1602560, -802085, 543850, -5729487, 2086280, 1743757, -2296734,
--3828427, 1483374, -2907156, 5102958, 2253784, -8960376, 4098473, -3837553, -9860171, -2861522,
--729071, 1979980, -4038343, -187905, 2186138, -4358855, -4284767, -4486094, -1363115, 1123134,
-9376450, 1472637, 1791001, -2016487, -4885526, 6380711, -1925756, -7494181, 381178, -7563975,
-582505, -734439, -2745021, -8286066, 2537789, 110595, -1809255, 2023467, 5038534, 2303713,
--941135, -860604, -11274, 2738579, 457414, 667867, 1556389, 2666101, -217433, -1256815,
--1584306, -1660542, 656593, -136365, -1287953, -1336809, 1229434, 1162326, 2351495, 482647,
--37044, -143345, 890669, -420370, -22012, -383863, 1494649, -181999, 807454, -231391,
-8153459, 2177012, 1771137, 3555159, 5131949, -1147830, 12534862, -1838246, 8968429, -10593000,
-3641596, 6165963, -2240899, 845572, -2981781, -300648, 4827543, 8799314, -2501282, -4395362,
--1296006, 4092030, 867047, 8947491, 4231617, -983548, 1279363, -81604, -4201552, 817654,
--945967, -1315334, 3906810, 5130876, -8133595, 9364639, -7152731, -3900904, 1583769, -2908767,
-4713190, 105764, -2726231, 6610492, 9277129, -6936372, -1261110, -692564, 2864743, -6568616,
--10805601, -5051956, -3312494, 3158949, -7497939, -4339528, -884226, 7736847, 4864051, -5422933,
-3850438, 2034741, -2956548, -4460324, -716723, -2752537, -3182571, 302795, -2121714, 5779416,
--4401805, -935229, 4897874, -3914326, 5294084, 6324340, 851477, -677531, 544924, -7860864,
--6972343, -1760400, 4356171, 166430, -3062312, 2865817, 6427419, -4316442, -2012729, 1730872,
--593242, -3074660, -28454, 802622, -2970507, 136365, -827318, 1302449, 380105, 2305861,
-311385, 1804423, -1176284, -508417, 73551, 186831, -134218, 1612760, 688805, 1884954,
-1811403, 154619, 532039, -302258, 1229971, 1874216, -947577, 4778151, 3884261, 5219459,
--5042292, -6671158, -3606699, 4531728, 204548, 18763638, -1434519, -466004, -4539244, -8487392,
--12473659, -2758980, 4096325, 6591701, -4136591, -7989713, 1012539, 63888, 7976828, -2685428,
--3304441, 9869835, -5409512, 635655, -7645042, 4872641, -1556389, 31139, -1723356, -11609297,
--7310571, 609349, 6407018, 4297115, 492311, -12029130, 7951058, -4865661, -4991289, -5194763,
--6906845, -1084479, 6502044, -5335960, -5901285, 4026532, -1951526, 2309082, 11996917, -5260261,
-226023, 590021, 5074504, -3569118, -3295851, -1670742, 7610682, -1731946, -4068945, -718870,
-5926518, 7737921, -7722351, -8750459, -3009162, -1302449, -2963528, 1851131, -6174016, -2177012,
--5829881, -11558831, -4600447, -2676302, 1499481, -10630581, -2983392, 158377, 7479149, 219580,
--6575595, -128849, -313533, -2005750, -3657165, 159988, 1508070, -695248, 1106491, 1054951,
--1484448, 2159832, -934692, -2157147, 2304787, 2873333, -1286880, -2757369, -127775, -542240,
-440771, 2301029, 817654, 41876, 1580011, -875636, -1428614, -1108638, -1563368, 2246805,
--6123550, 5189931, 6342056, -4664335, -5645735, -4775467, 2587718, -483184, 9190693, 16004122,
--8981313, 590558, -369367, -1119913, 1496259, 4627828, -13139379, 11800960, -9257265, -4588636,
-11888469, -2754685, -5675263, 3932043, 4398047, 259846, -656593, -9176198, 5732708, -1314260,
-1996623, -6076305, 7575786, -701153, -12641162, -13512504, 4523138, -2485176, -6966974, 3416647,
--569620, 20914880, 3519726, -3834332, -6220187, -12345347, -4365835, 2387465, -2993055, 9626632,
--2029372, -14377403, -1380832, 9871982, -4306242, 1286343, 8548059, 5757404, -4833449, -913754,
-6925098, 9227737, -4201015, 1796370, 1331440, -4464082, 2014877, -2061584, -604517, 1366873,
--2134599, -2611877, -8887898, -9747965, -8215199, 8199093, 4601521, 5337034, 2278480, 51003,
-3293166, -7116761, -3908957, -9955734, 4955856, -1269700, -1353452, -2036351, -1461900, -5086852,
--2990371, 1024350, -2040646, 289910, 405338, 340376, 1975148, 236223, 2365990, -274341,
-1751273, -2328946, 1349694, -3484292, 317828, -1665911, 2915209, 119722, -1803886, -562104,
-940598, -1511829, -1655173, -4072703, -4039954, -2275796, 4167192, 252866, 1490891, 2578054,
--10722386, 4066797, -11574937, 448287, 4214437, -1872069, -8661875, -4076998, -1765768, 7756711,
-6163278, -4619774, -4780299, 8271034, 3452617, -4792110, -5168457, -4034048, -545998, 7997766,
--1356136, 725313, -444529, -98784, 10276783, 5092221, 6889128, -483184, -492311, 3544422,
--5301601, -8944806, 7321309, 11761768, -7940858, 10111427, -2949569, -1024350, -4515621, 5210869,
-340376, -5660767, 3469260, 9562208, 7504382, 3456375, -7157026, -2943663, -14513768, 2416993,
-7601019, -4671851, -1138703, -5754183, 1536525, -3424700, 5674726, -3587908, 1915019, 6738267,
-3875134, 12693239, 6673843, 4294968, 8153459, -6806450, 12221329, 3775276, 7446400, -2430415,
--8356396, -12946642, -2418067, -2167885, -3336653, -3034395, 4869419, -8897562, 13514115, -2303176,
--10842645, 6213207, 10115722, 4185446, 1349694, 2112050, 3831648, 1289564, -2176475, 2597382,
--1987496, -23085, 4286378, -3221, -98784, 4638565, 725313, 2548526, -321586, -2157684,
-771484, 468688, -1779727, 1458141, 1965484, 518080, -1244467, 1130113, 460635, 3598646,
-869194, -636729, 2347737, -3054259, 981400, 718333, -3263102, -4873178, -1281511, -1894618,
--1168768, -2404645, -1619203, -999117, -324807, 6007586, -12783433, 9402757, 3255585, -1932198,
-13877576, 10739029, -17622788, -11799886, 11119670, 19087908, -1762547, 2820720, -1624571, -2404108,
--1906966, -787053, 4831838, 2878702, 11536282, 2845953, 11039677, 3124052, 4804995, -1493575,
--6236830, 2683818, 865973, -5085242, 8451959, 875636, 3391414, 1980517, -1745367, -7830799,
-1023813, -8884677, -2997350, -10283225, -6880001, -4155381, 8650601, 1241782, 4263829, 10592463,
--4574677, -878321, 1247688, 3808562, 1149978, 265751, -2968359, 7843147, 17274358, 8315057,
--13746043, -9796284, -10172630, 11933567, -1807108, -11045045, 6454262, -6189048, -674847, -1804423,
--767189, -848256, 378494, 10462003, 17291002, 6540699, 14892262, 9552544, 4830228, 1941325,
-3752191, -4792110, 15850577, 5131949, -8315594, -11133092, 4917738, 3664144, -3051038, 7943542,
-14988362, 3459059, -5788542, 9339406, -876173, -6867653, 1424319, 5237176, 850404, -909459,
-593779, 2876018, 5052492, 2243584, 2237141, 574452, 3295314, -1398012, -651224, -1945620,
--562641, 6914361, -3677029, 2559264, -1089848, 1649268, 162135, -1843615, 1023813, 2451353,
-3003256, -1429687, 1225676, -2791192, -85362, 1389422, -5006858, 2123325, -7150047, 1994476,
-17193828, 3285650, 6038187, -5516349, 4406100, -8470212, -14982993, 347355, 7969849, 2392297,
-6393596, 9030706, 9903658, 591632, -10875931, -9211631, -14397804, -22244172, -419833, -2677912,
-9803800, 7313793, -8383776, -4652524, 5735929, 11638825, -14595909, -9394704, -2833068, -7975755,
--5469104, -2979634, 4472672, 9038222, 373662, -5487358, -6776922, 9133248, -7327214, -3069828,
--251792, 12855374, -936840, 1056025, -20212116, -1522566, 4891968, 10369125, 13438953, 2905009,
--13032541, 6135361, 224412, 6106370, 8447127, 1429687, 4226248, 9749039, 16994112, -11324218,
--4514011, -995896, 5178120, 18124226, 7590281, 6055367, 10124312, -3487514, -6029061, -10878615,
--13746580, -8132521, -572304, 8796630, 20136418, -12583180, -9290551, -1290101, 19745038, -11075647,
--6473053, -9892383, -1860795, -8865886, 2797634, 1694902, 4669703, 10513006, 1901060, 6735583,
--4407174, -4329864, -5638755, 456877, -2865280, -6553047, -5919002, -2866354, -1586454, -1357210,
-6643241, -5000416, -1549410, -1879585, 4741107, 1208496, 3445638, -2251100, -2318209, 4786204,
-1553704, 1270237, -4028143, 6166500, -3144453, -157840, -2205466, 1966558, -2285996, 649614,
-4022774, 4904853, 8951786, 5057861, 12610561, -14915348, -10645076, -1661079, 21887154, 8849780,
-555661, 11842835, -7371775, 17770428, -4169876, -15599321, -3020973, -15501611, 12607876, 7532836,
-4950487, 4909148, 297963, -4970888, 6109054, 9084393, 4582193, -3164317, 8145943, 10880763,
-9752260, -1212791, -8446590, 14743549, 3481608, -899796, -2461553, 1774358, -9605694, 9568650,
--1796907, -2649458, -12246026, -6669548, -7553774, 17200270, 6147172, 187905, 2286533, 8893267,
-12786655, 6521371, -16492138, 15035607, -1752347, 8700530, 3727495, 13214004, -3007014, -17277042,
-5446019, -780073, 7178501, -3059091, -7042673, 6441914, -2727841, 4376035, 21794812, -2629594,
--9989020, 68183, 2896419, -10545755, 17575544, -7783018, -10541997, 15498389, -8970039, 7916699,
-1088774, -11188927, -7925826, -11190537, 3585761, 9429064, -5546951, 5479305, 10471130, -5750961,
-7407745, -2354179, 12385612, -4330938, 3744675, 4065187, -3315178, 96100, 556198, -5537287,
--643708, 5159867, -7757785, -1453846, 5852967, 3017215, 271657, -4729296, 2495913, -1217623,
-2046015, -4944044, -4758287, -2645163, 1146756, 1329292, -5743445, -3570192, 5600638, 816044,
-2518998, -5856725, 2857227, 631897, -2567317, 1300838, 981400, 2053531, -3032784, 362925,
--1404454, -199716, -6242735, 4671314, -14404783, -3122441, 7761006, 1553168, -14087493, 3477313,
--4937602, 10128607, 2518462, 5071283, -23530516, 6954626, 447213, 8893804, 15185931, 558346,
--1910724, 1018444, -7648263, 15155866, -14636712, 4517232, 9269076, 6081137, 8535711, -4147328,
--7053947, -8448738, -15149423, 5749888, 2309619, 8568460, 16090558, -6332930, 13797046, 7252589,
--13311177, -7839926, -208306, 1186485, 707059, -389231, 6823630, 11574937, 10957535, 4362076,
--27811524, 6603512, 8254391, 7953743, -18331458, 10808285, -9416179, 9339406, 1138166, 4798552,
--2506114, 6929930, -2238215, 23349590, 11335492, -10873247, 1306207, -30019138, 4971425, -9066139,
--9019968, 8039105, 5978595, -15246597, -29599840, 18388902, 11502996, -28090696, 10851235, -6604049,
-10628433, -2655901, 2558190, 4018479, 303869, -19042812, -6976101, -3048890, 5952288, -518617,
--4710506, 7523172, -9981504, -4293894, 10421738, -1251983, -875100, 3260954, 2198487, 3724811,
-1899986, -5937256, 2349347, -8704825, 5224291, -4019016, 3007014, 1842004, -2165737, -1644436,
--1447404, -3344169, 1589138, -5171141, -701690, -4442607, -2937221, -7081864, 3510599, -2389613,
--1701881, -4247723, 1855426, 2935610, 2297271, 1402844, 746787, 576599, 2627446, -581431,
-2847027, 1879585, 6504728, -3843996, -3449396, -6016176, 10919954, -8339753, 92342, 1622424,
-28033788, -3811247, 20246476, 4985920, 15248745, 969052, 4363687, 4951561, 27030376, 27078158,
--13978508, -12780212, 15475304, -19614042, 24159, 5306432, -19547470, 11137924, 1584306, -1560147,
--3543348, -5959804, 2371359, 2110440, 3680787, -12015171, 113280, -2930778, -15786689, 8064875,
-11023034, -17653390, -13128104, -6453725, 9536438, 9248675, 8868034, -951335, -3564286, 8304320,
-28147606, 15166066, -5521718, -3663607, -3817689, 18992346, -15170361, 7017440, 4042101, -23685134,
--9800578, -1064615, 3240553, -20074678, 13843753, 9006010, 4045322, 3823595, 9605157, -19010598,
--2289218, -15768972, 714038, 9791452, 16480326, 10140955, -10407243, -5537824, -817118, 555125,
--11959336, 26775900, -2119566, 3567507, -6306623, 9188009, -2032593, 5375689, -2421288, 3344169,
-2522220, 5831492, -679142, 105764, -2182917, 1389422, -415001, -1499481, 7894687, -2348273,
--5829345, -327491, -657130, 4049081, -5943161, 1365263, -4931160, -7715909, 4760971, -1422708,
--5289252, 442382, -115427, 930934, -4660040, 6186901, 1586454, 7594576, -9385040, -631360,
-4375498, -2345052, -7627325, -120259, 8175470, 3722126, -2525441, 12914430, 20024748, -1394791,
-1302449, -12402792, 1042066, -546535, -8865886, -14810658, -2843268, -6857989, -11098732, -8113730,
-12550431, -10638634, 9101573, -3206730, -2540473, 17577154, -12169790, -6789807, 2684892, 7090454,
-1030792, -23255100, -14295799, 2660195, -3752728, 3772592, -3260954, -7299297, 14817637, 3175592,
--1289027, -6089190, -33454038, 20084340, -6062347, -364535, -2860448, 1278827, 9573482, -5570036,
--9139154, -15608985, -1487132, 6892349, -9651865, -12367895, 5083631, 19638202, -3350611, 18263812,
-13430363, -13368086, 24570972, 16254841, -16232292, -25052544, -7223062, -10917807, 1324461, -7937637,
--1964948, 12001212, -20966420, 10262824, -3422552, -11769821, -13164075, -13129715, -15930034, 3317325,
-9533754, -8547522, 13630616, -1773822, -7983271, -16409459, 250719, -1837709, 6328635, 19588272,
--7099044, -14838038, -5196374, 434865, 5019743, 13406740, 3509525, -1657321, -11001022, -79994,
-395137, 4989679, 2058900, 31139, 3688840, 5495948, -4131759, 6860674, -3966939, 3144990,
-7944616, 7181186, 421981, -11214160, -4626217, 1716376, 2753074, -7793218, 12649216, -7668664,
-5773510, 6856379, -5212480, 693637, 1376537, -2954938, -10751914, 2296197, 4805532, 869194,
-9005473, 6309844, -6150393, -21228950, 38631084, 54366768, -5245229, 6623914, 3491272, 13167833,
-26363584, -25164214, 303332, 4359392, 500901, -9075803, 1362042, -11212549, 13235479, 32386200,
--6834904, 695248, 1851668, 9810242, 904091, 3802120, 12460237, -24955370, -1854889, 24482388,
-25161530, -29403346, -6233608, 4227322, 4145717, 8748848, 22148072, 6226629, 44668196, 7430831,
-13790066, 6576132, -7008313, -9270687, -525597, -31345746, -45076220, -15269682, -14622753, -46976204,
-7362648, -1124745, -26223996, -12809740, -43936980, -4815195, -6040335, 29944512, -29339996, 18299782,
--20045150, -1644436, -13179107, -10420664, 11793980, 26907434, -20734492, -7795366, -1870458, -6152541,
--2190433, 11343009, 21594558, 23032298, -16434155, 46338940, 31102006, 4038343, -17568026, -38151120,
--8641474, -14208289, -10399726, 2505040, 12259447, -8017094, 4580583, 14377403, 2347737, -4578972,
-14632954, 9723806, 5026723, 6402723, 15362561, 15469935, 134755, 1254131, 6222871, 5791764,
--2512019, -4625680, -2635499, 2819646, -363998, -1963337, 985695, -3093450, 2158221, 10084046,
--415538, 3550864, 12345883, -3234110, -4396973, -4728222, -500901, -6855305, -1354525, 5833640,
--3180423, -1880659, 1207423, 31139, 1078574, -981937, 4878546, -3294240, -3367791, 7974144,
-5679558, -6235219, -290447, -3340948, -19413790, 35566088, 59204512, -13906030, -3015067, 10546829,
-26513370, 8959839, -15373835, 9681930, -13127031, 3459059, 8405788, -3124052, -17709224, 5393942,
-18905910, -4646081, -26976690, 21203716, -6160057, 17322676, -6340983, -4198331, -6614787, -10856067,
--384400, 19240380, 10764799, 3248069, 15560667, -7283728, -6081137, 5989332, -8214125, 10813117,
-6325413, 16499117, 28195924, 24734716, -17672716, -32952600, -11989938, -1982664, 25937844, -9806484,
-4680441, 10525354, -10168872, -15130096, -24276766, -24919938, 19801410, 21124260, -16698296, -60122564,
-5075041, -4133906, -8157754, 4786741, -5904507, -24052890, -11177116, -5555004, -16683264, -7070590,
-25745108, 9825811, 14890115, -5675800, -8269960, -5322002, 14370961, 2518462, 2792803, 12380780,
-35682052, -2974802, -5094905, -17827872, -16853452, -24665998, -2534568, 14166413, 9713605, -9986336,
-7560753, -4539244, -5747740, -10205379, -9264781, 8705362, -7136088, 8498130, 4081293, 4862440,
--5145371, -7590281, 8880382, 5545877, -2018635, 6736656, -8942659, 3979824, -1063541, 5578089,
--2832531, -5057324, -2760590, -2432025, 6320581, 3190624, -88584, -6248641, -1311576, 12971338,
--8974871, -79457, -8704825, 11154567, -5708012, -2312303, -8012799, 1340567, -3295314, 1341104,
-9553618, 9546639, 2186138, 310311, -3328063, -12590697, -1873143, -10380936, 5513665, -14761266,
--24550034, -5179194, -4205310, 4697084, -8458938, 18991272, -11318849, -38155952, -20898238, 13452374,
--18187040, 21486648, 18901078, -8221105, -3013993, 2951180, -11809549, 251792, 6112812, -1472637,
-3273302, 27168352, 22362820, -5796595, -35850092, -26900990, 1899449, 19132468, -14479408, -5970542,
--16994648, -21423296, 1873143, -5901822, -25467008, -27406724, -40615360, 16485695, 5462662, 1089848,
-23236846, 31534724, -1352915, -23228256, -17906256, -18752364, -10831908, -6519224, 7005629, 12321187,
--10949482, -17062294, -21169356, 11339251, 9694815, -20507396, -19832548, -7745974, -3561065, -11906186,
-7343857, 50964620, 30379378, 59490128, 19714436, -31396748, 36840620, -1484448, -19051938, 1956895,
--17944374, -38801272, -16226923, 9035537, 18436684, -4283693, 16974248, 9968619, 37655588, 41310608,
-33793876, 11332808, -9657234, -5903433, -5720897, 7250979, 9458055, -14268418, -5431523, 2417530,
-30681098, -4250407, 2529199, -3318936, 11013370, 11246372, 13039521, -644782, 124554, 236223,
-2729452, -1194538, 1728188, -11222750, -3732327, -3841848, -10661183, -10877005, -5165235, 3946538,
-12893492, -8429410, 1830193, 4565014, 14669998, 20038706, 13587666, 12805445, 14137959, 3141769,
--5494337, -11041287, -16031502, -19791210, -15716359, -9215926, -18910204, -19098646, -7524783, -3382824,
-35376036, -20088636, 2306934, 10405095, -4464082, -26219702, 26520886, 25340308, -14579803, -20045150,
-2738042, 35087736, -18402324, 10011569, 22471268, 6896107, -8469139, -16741783, -11023034, 7803419,
--2678449, 5954436, -9838696, 6573985, -21779780, 31876710, -3094524, 7184407, -1519882, -40111236,
-12492449, -11077794, 20683488, 12504797, 22100292, -8599598, -38729868, 27837294, 12495670, -13121662,
--24119462, 19969450, 10659572, 21234318, 21376590, -18622442, 8567386, 22407918, -32811402, 30090540,
-14768245, -911607, 9535901, -16962974, 37616936, -4202089, 24748138, 11162083, 43683040, -3024731,
--7686381, 6194954, 17756468, 11842299, 12351789, 44189308, 2568391, 10831371, 25777856, -17022030,
-17681306, 2133525, -29388314, 10970420, -9921374, 33247878, -24487220, -29356638, -30617748, 26167626,
-42871828, -13657459, 10892037, -50549080, 4794794, 2473901, -1961726, -23653996, 3930969, 10062035,
--7853348, -6476811, -6391448, 16061567, 7480760, -10071698, -10937134, -6256157, -2609193, -3130494,
-4561792, -17402670, -10492068, 9307194, 3789235, 3338263, 521302, 8025684, -1401770, -883690,
--10286984, 13781476, 17095044, -7283191, -26714160, -17977122, -240518, 77846, 5068599, 1398549,
--8458401, -13060459, -7248831, 4996658, 7651484, 21429740, 7175817, 1174137, 301721, -15879031,
--3330210, 16620987, 9726490, -64912524, 3564823, -7966628, 2028835, 50225884, 41371808, 59481540,
-31433256, -15845745, -12112345, -24675124, -32855962, 11545946, 2891050, 8606578, 10457172, -9598715,
-14966887, 25347824, 4671314, -6818261, -8591008, -17995912, -11945378, -10886668, 4963372, 8056285,
--25805774, -15292231, -3558381, 17288854, -7815767, 11125576, 13854491, -36697812, -36132488, 6827388,
-10472204, 8019241, -27275726, -12568148, -24499568, -11886322, -11218455, 23596014, -31053150, -43262132,
--16256988, 8545374, 7347616, -33376728, -26781806, -21077016, -15946140, 17986786, 25393458, 1111323,
--8634495, -10588168, -5896990, -5663452, -11484743, -37050536, 12168179, 27769648, 25262460, 7827041,
-34507376, 46639048, -4078072, -6047314, 35730368, -8701067, -21767432, -49213344, -16762184, 6650757,
--26998702, -18113488, 12623446, -4469451, 17508972, 30611306, -18685792, -29019484, -9611600, -12483859,
--7213398, -7917772, -7820062, 3205119, 4423280, 3525631, 6214818, -10465225, 9054865, -14434848,
--1752347, 8875550, 11951283, -12907450, -17948668, 10196789, -4113505, 596464, -12539157, 14717779,
--8693014, -3185792, -3481071, 13613973, -11619497, 14773614, -6627672, -7006166, 9784472, 2513630,
-7784628, -6276558, 653372, 2829310, 15963857, -1957968, 3758097, 42610908, 14971719, 3436511,
-15572478, -17681306, 1165010, -9041443, -13186623, 7865159, 3127273, -11043435, -18305688, -10556493,
--16990890, -13861470, 5599564, -10703059, -5180805, 7970923, -5254893, 1782411, -5849746, 21161304,
--16540993, 17342004, 6344741, 1924145, -15996606, -6944425, 12832289, 5149129, -251256, 10182831,
--1772211, -4281546, -6524056, -5582921, -4357781, 1868848, -40265, 2098629, -18743238, 9822590,
--7811472, -7420093, 6597607, 4437238, 2503966, -3608310, 13231720, 11281805, -16396575, 14650133,
--2011655, 9913858, 19902878, -4242891, 10794863, 10157598, -9825811, -7117835, -13111998, 1094143,
-2313377, -21188148, 8758512, 3113851, 16479790, -6562710, -37381784, 23375896, 1472100, 585726,
-532039, -16621523, -5171678, -4453881, -5539434, -24184960, 13765907, 6795175, 14842870, -10837276,
-6559489, -12146168, -10937134, 394063, 9438191, 7470022, 293132, -1497333, -3333968, 716186,
--5479842, -1257352, 16005196, -6608344, 3216394, 1608465, 4576825, -9922448, 10668699, -522375,
--1979980, 2359011, -1015223, 2298881, 3601330, -9046812, -1187022, 16106, -1633161, -1777580,
-4909148, -5839008, 7144678, 10176925, 3932580, -6592775, -287226, -1501091, -5971079, 7374459,
--2056753, 3955665, -21979496, -62221192, -92652112, 19484656, 72727216, 3061775, 199157632, 183672128,
-126109904, 217009664, 166875584, 22737556, 3547643, -22484154, -159137664, -162250448, -123415888, -212531088,
--198250864, -56649008, -66169340, -66847408, 15864535, 40253508, -33210298, -11047730, 63720136, 40621800,
--2214056, 47418048, 32847910, 2487860, 39664024, 93978176, 61793840, 21552146, 96267400, 71271760,
-5556614, 82744152, 112146968, 26933204, 12138114, 114417392, 31335544, -44549012, 57605712, 88132728,
--45041860, 20586852, 123179128, 11701102, 20353314, 148707344, 116867136, 9869835, 92727808, 122989608,
--42707544, -25306484, 34996468, -100618736, -168106096, -113456392, -185379376, -275375040, -252932768, -282906816,
--360331104, -380201248, -336338880, -355431616, -334764256, -251346320, -200756976, -104570104, -26079042, 59113784,
-206190640, 239972704, 260528960, 404256832, 395223968, 265348448, 341647456, 266976784, 106180720, 117365888,
-165971488, 81170048, 52882860, 124010200, 88442504, -566936, 42354820, 96364032, 23981486, 6656663,
-71806488, 16535087, -74924096, 24137180, 58799712, -17300666, 52645024, 140332144, 55506548, 31452582,
-123509840, 67342400, -24438364, 14312442, -32136020, -148364816, -181694304, -180536272, -227627360, -257132176,
--212735632, -204527424, -233190960, -210472192, -174064816, -200471360, -183533616, -123744448, -98538896, -94358824,
--38999912, 21944062, 26232050, 83369072, 141111680, 148402400, 146712320, 165781440, 153117728, 109302624,
-92571040, 82350096, 56575992, 46007688, 56799332, 50285476, 33621004, 34934728, 38308960, 31956704,
-31077310, 40149356, 34928820, 23197118, 17160542, 12417287, -5382668, -11112154, -11217381, -10800232,
--5050882, -1528472, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+6460705, -673773, 1967632, -1189706, 8621073, -3393561, -827855, -316754, 1074279, -1533303,
+3951907, -694174, -2653753, -484258, 5400385, 387621, -2724083, 2516851, 1869921, 3539053,
+1460289, -2718178, -1783485, 6015639, 843961, -1557463, -1187559, -1242856, 1189706, 1269163,
+-773094, -7691750, -1918240, 355409, 5303211, 1879048, -653909, -37581, -3054796, 4204773,
+-4307852, -5748814, 744640, 39728, -1940252, -1336809, -1599875, 803696, 523449, 489089,
+-2006287, 4989142, 153545, 6692096, -1080721, -3213709, 1470489, -374199, 958315, 1539746,
+3389803, 2288681, -868657, -1860258, -1571421, 4334696, -4434017, 154082, 122407, -797253,
+-3804267, 3333432, -1919850, 423591, 2907156, -2069637, -2751464, -2304787, 2947421, -292058,
+-925029, -840203, 91805, -573915, -1204738, 1445257, 1495186, 1075889, 676994, 354335,
+2044404, 310311, -51540, 410706, -210453, 52076, -484258, -276489, -256087, 1364189,
+323733, -949188, 1178969, -2560874, 2239289, 1325534, -2985002, -1663226, -217970, 265751,
+-140660, -456340, -1503239, 2703682, 540629, -1183800, -1572495, -93952, 5638219, -799401,
+-2622078, 3586298, -1380832, -3401077, -323196, 2866891, 2172717, -1868848, 530428, -2332704,
+1374390, 1307281, -1085016, 2863133, -761283, -5206037, 989453, 2677375, 2537789, 339302,
+-358630, -3778498, -1242319, -510564, -1622424, 3383361, 4800163, 2207613, -6482717, 2188286,
+7691213, 3154654, -345745, -66572, 3558381, -1761474, 1184874, -3246995, -2893197, 2950106,
+3382287, 1600949, 927713, 576599, 703838, 1567126, 331786, -320512, -1124745, 787053,
+-2246268, -446677, -950798, -4666482, -2294050, 956167, 1759326, 1409286, 3176128, 2463164,
+2643016, 3744138, -2370285, -1532767, -667331, 1176284, 1406602, 2201171, -448824, -763967,
+-393526, 1336272, -959925, 1207423, 332323, -531502, -388158, 385473, -203474, 727460,
+331249, 99321, -287226, 392990, 397284, -184684, 624918, 129923, 172336, -513785,
+128312, -160524, 34360, 767189, 110059, 312996, 310848, 4453344, -311922, 1835562,
+-2867965, -4285841, -2674154, 2324651, -1945083, -1992328, -2109903, -2831994, 2725694, 378494,
+2000381, -887985, 590021, -5818070, -3733937, -2660732, 3729105, 703301, 831076, 2029909,
+-2056753, -1054951, -462783, 664109, -4403952, -860067, -2971044, -3249143, 187905, -2867965,
+1921461, 1799054, 7681549, -1921461, 3906810, -2609730, 1614908, -1794760, 402116, 6706592,
+1077500, 2899640, -3182034, 2036351, -2862596, -1371168, -443455, 4256313, -2106682, -1108638,
+-3797825, -2028835, -4484483, -613643, 4236985, 1001801, 314069, 723165, 3884261, -3841848,
+-6720550, 1545651, 2113661, -4398047, -324270, 578210, -1089311, 1760400, 5251672, 1088237,
+-1336809, 110595, -1873143, 338766, 317291, -1509681, -453656, -485868, -2126546, -507880,
+-1214939, 442382, -463320, -843424, 1736241, -336081, -1713692, 727460, -1221381, 48318,
+-1321239, -1925219, 1116155, -352187, -140123, 608275, 816044, 245350, 1779727, -848793,
+-149787, 297427, -641561, -274341, -202400, -887448, -465467, 1465658, 489626, 2088428,
+256087, 937914, -828392, 2471754, -6861747, 1145683, -2402497, -5046050, -3655017, 2059437,
+-1013075, -226023, 5006858, 1671816, -700617, 446677, 4257923, -1995012, 3143379, -1417339,
+938987, -4496831, -796180, 3065533, -1028108, 3805878, 4256313, 1412507, 2681670, 5586679,
+-1304060, -7839389, 1786170, -3481608, 245350, -9604084, 263067, 3099893, -1927367, 3602941,
+510564, -3455838, 1248225, -7218767, -4626217, -1750199, -1775969, -5987722, 3043521, 3342022,
+197032, 3111704, 239444, 855772, -1944547, 2823404, 2140504, -1106491, 6624987, -1229434,
+5473399, 4704063, -268972, -745177, 14496, 1518808, 2236067, 731218, 2502892, 852014,
+850404, 7348152, 2798171, -3182571, -1471563, -25233, -1765768, 1106491, -1277753, 7412577,
+1234803, 3492882, -2655901, 3020436, -33286, -1437740, 635118, -2372970, -1559073, -390305,
+-1718524, -1036698, -1040993, 927176, -1612760, -355945, -1136019, -564788, -553514, 2052994,
+-866510, 1080721, -292058, -1707250, -288300, 1091459, 428960, 212064, 664646, -1022202,
+893890, 609885, 523449, 1025423, -576599, 262530, -1691680, -96637, 1296543, 1188632,
+281320, 244276, 161598, 976568, -13087302, 42950, -31675, 3358665, 5753646, 2018098,
+-2888366, -4784057, -756988, 6223945, -1173600, -1185948, -4604205, -106837, -1911261, 4609037,
+5485747, -9402757, 6143951, 3919695, -3557307, -762894, -4922570, 31139, -1479616, 117575,
+3240016, 6254010, -2339684, 1445793, -1628866, -2139431, 2329483, 4315906, 2917357, -2711198,
+-4443681, 3103114, 2161442, -1602560, -802085, 543850, -5729487, 2086280, 1743757, -2296734,
+-3828427, 1483374, -2907156, 5102958, 2253784, -8960376, 4098473, -3837553, -9860171, -2861522,
+-729071, 1979980, -4038343, -187905, 2186138, -4358855, -4284767, -4486094, -1363115, 1123134,
+9376450, 1472637, 1791001, -2016487, -4885526, 6380711, -1925756, -7494181, 381178, -7563975,
+582505, -734439, -2745021, -8286066, 2537789, 110595, -1809255, 2023467, 5038534, 2303713,
+-941135, -860604, -11274, 2738579, 457414, 667867, 1556389, 2666101, -217433, -1256815,
+-1584306, -1660542, 656593, -136365, -1287953, -1336809, 1229434, 1162326, 2351495, 482647,
+-37044, -143345, 890669, -420370, -22012, -383863, 1494649, -181999, 807454, -231391,
+8153459, 2177012, 1771137, 3555159, 5131949, -1147830, 12534862, -1838246, 8968429, -10593000,
+3641596, 6165963, -2240899, 845572, -2981781, -300648, 4827543, 8799314, -2501282, -4395362,
+-1296006, 4092030, 867047, 8947491, 4231617, -983548, 1279363, -81604, -4201552, 817654,
+-945967, -1315334, 3906810, 5130876, -8133595, 9364639, -7152731, -3900904, 1583769, -2908767,
+4713190, 105764, -2726231, 6610492, 9277129, -6936372, -1261110, -692564, 2864743, -6568616,
+-10805601, -5051956, -3312494, 3158949, -7497939, -4339528, -884226, 7736847, 4864051, -5422933,
+3850438, 2034741, -2956548, -4460324, -716723, -2752537, -3182571, 302795, -2121714, 5779416,
+-4401805, -935229, 4897874, -3914326, 5294084, 6324340, 851477, -677531, 544924, -7860864,
+-6972343, -1760400, 4356171, 166430, -3062312, 2865817, 6427419, -4316442, -2012729, 1730872,
+-593242, -3074660, -28454, 802622, -2970507, 136365, -827318, 1302449, 380105, 2305861,
+311385, 1804423, -1176284, -508417, 73551, 186831, -134218, 1612760, 688805, 1884954,
+1811403, 154619, 532039, -302258, 1229971, 1874216, -947577, 4778151, 3884261, 5219459,
+-5042292, -6671158, -3606699, 4531728, 204548, 18763638, -1434519, -466004, -4539244, -8487392,
+-12473659, -2758980, 4096325, 6591701, -4136591, -7989713, 1012539, 63888, 7976828, -2685428,
+-3304441, 9869835, -5409512, 635655, -7645042, 4872641, -1556389, 31139, -1723356, -11609297,
+-7310571, 609349, 6407018, 4297115, 492311, -12029130, 7951058, -4865661, -4991289, -5194763,
+-6906845, -1084479, 6502044, -5335960, -5901285, 4026532, -1951526, 2309082, 11996917, -5260261,
+226023, 590021, 5074504, -3569118, -3295851, -1670742, 7610682, -1731946, -4068945, -718870,
+5926518, 7737921, -7722351, -8750459, -3009162, -1302449, -2963528, 1851131, -6174016, -2177012,
+-5829881, -11558831, -4600447, -2676302, 1499481, -10630581, -2983392, 158377, 7479149, 219580,
+-6575595, -128849, -313533, -2005750, -3657165, 159988, 1508070, -695248, 1106491, 1054951,
+-1484448, 2159832, -934692, -2157147, 2304787, 2873333, -1286880, -2757369, -127775, -542240,
+440771, 2301029, 817654, 41876, 1580011, -875636, -1428614, -1108638, -1563368, 2246805,
+-6123550, 5189931, 6342056, -4664335, -5645735, -4775467, 2587718, -483184, 9190693, 16004122,
+-8981313, 590558, -369367, -1119913, 1496259, 4627828, -13139379, 11800960, -9257265, -4588636,
+11888469, -2754685, -5675263, 3932043, 4398047, 259846, -656593, -9176198, 5732708, -1314260,
+1996623, -6076305, 7575786, -701153, -12641162, -13512504, 4523138, -2485176, -6966974, 3416647,
+-569620, 20914880, 3519726, -3834332, -6220187, -12345347, -4365835, 2387465, -2993055, 9626632,
+-2029372, -14377403, -1380832, 9871982, -4306242, 1286343, 8548059, 5757404, -4833449, -913754,
+6925098, 9227737, -4201015, 1796370, 1331440, -4464082, 2014877, -2061584, -604517, 1366873,
+-2134599, -2611877, -8887898, -9747965, -8215199, 8199093, 4601521, 5337034, 2278480, 51003,
+3293166, -7116761, -3908957, -9955734, 4955856, -1269700, -1353452, -2036351, -1461900, -5086852,
+-2990371, 1024350, -2040646, 289910, 405338, 340376, 1975148, 236223, 2365990, -274341,
+1751273, -2328946, 1349694, -3484292, 317828, -1665911, 2915209, 119722, -1803886, -562104,
+940598, -1511829, -1655173, -4072703, -4039954, -2275796, 4167192, 252866, 1490891, 2578054,
+-10722386, 4066797, -11574937, 448287, 4214437, -1872069, -8661875, -4076998, -1765768, 7756711,
+6163278, -4619774, -4780299, 8271034, 3452617, -4792110, -5168457, -4034048, -545998, 7997766,
+-1356136, 725313, -444529, -98784, 10276783, 5092221, 6889128, -483184, -492311, 3544422,
+-5301601, -8944806, 7321309, 11761768, -7940858, 10111427, -2949569, -1024350, -4515621, 5210869,
+340376, -5660767, 3469260, 9562208, 7504382, 3456375, -7157026, -2943663, -14513768, 2416993,
+7601019, -4671851, -1138703, -5754183, 1536525, -3424700, 5674726, -3587908, 1915019, 6738267,
+3875134, 12693239, 6673843, 4294968, 8153459, -6806450, 12221329, 3775276, 7446400, -2430415,
+-8356396, -12946642, -2418067, -2167885, -3336653, -3034395, 4869419, -8897562, 13514115, -2303176,
+-10842645, 6213207, 10115722, 4185446, 1349694, 2112050, 3831648, 1289564, -2176475, 2597382,
+-1987496, -23085, 4286378, -3221, -98784, 4638565, 725313, 2548526, -321586, -2157684,
+771484, 468688, -1779727, 1458141, 1965484, 518080, -1244467, 1130113, 460635, 3598646,
+869194, -636729, 2347737, -3054259, 981400, 718333, -3263102, -4873178, -1281511, -1894618,
+-1168768, -2404645, -1619203, -999117, -324807, 6007586, -12783433, 9402757, 3255585, -1932198,
+13877576, 10739029, -17622788, -11799886, 11119670, 19087908, -1762547, 2820720, -1624571, -2404108,
+-1906966, -787053, 4831838, 2878702, 11536282, 2845953, 11039677, 3124052, 4804995, -1493575,
+-6236830, 2683818, 865973, -5085242, 8451959, 875636, 3391414, 1980517, -1745367, -7830799,
+1023813, -8884677, -2997350, -10283225, -6880001, -4155381, 8650601, 1241782, 4263829, 10592463,
+-4574677, -878321, 1247688, 3808562, 1149978, 265751, -2968359, 7843147, 17274358, 8315057,
+-13746043, -9796284, -10172630, 11933567, -1807108, -11045045, 6454262, -6189048, -674847, -1804423,
+-767189, -848256, 378494, 10462003, 17291002, 6540699, 14892262, 9552544, 4830228, 1941325,
+3752191, -4792110, 15850577, 5131949, -8315594, -11133092, 4917738, 3664144, -3051038, 7943542,
+14988362, 3459059, -5788542, 9339406, -876173, -6867653, 1424319, 5237176, 850404, -909459,
+593779, 2876018, 5052492, 2243584, 2237141, 574452, 3295314, -1398012, -651224, -1945620,
+-562641, 6914361, -3677029, 2559264, -1089848, 1649268, 162135, -1843615, 1023813, 2451353,
+3003256, -1429687, 1225676, -2791192, -85362, 1389422, -5006858, 2123325, -7150047, 1994476,
+17193828, 3285650, 6038187, -5516349, 4406100, -8470212, -14982993, 347355, 7969849, 2392297,
+6393596, 9030706, 9903658, 591632, -10875931, -9211631, -14397804, -22244172, -419833, -2677912,
+9803800, 7313793, -8383776, -4652524, 5735929, 11638825, -14595909, -9394704, -2833068, -7975755,
+-5469104, -2979634, 4472672, 9038222, 373662, -5487358, -6776922, 9133248, -7327214, -3069828,
+-251792, 12855374, -936840, 1056025, -20212116, -1522566, 4891968, 10369125, 13438953, 2905009,
+-13032541, 6135361, 224412, 6106370, 8447127, 1429687, 4226248, 9749039, 16994112, -11324218,
+-4514011, -995896, 5178120, 18124226, 7590281, 6055367, 10124312, -3487514, -6029061, -10878615,
+-13746580, -8132521, -572304, 8796630, 20136418, -12583180, -9290551, -1290101, 19745038, -11075647,
+-6473053, -9892383, -1860795, -8865886, 2797634, 1694902, 4669703, 10513006, 1901060, 6735583,
+-4407174, -4329864, -5638755, 456877, -2865280, -6553047, -5919002, -2866354, -1586454, -1357210,
+6643241, -5000416, -1549410, -1879585, 4741107, 1208496, 3445638, -2251100, -2318209, 4786204,
+1553704, 1270237, -4028143, 6166500, -3144453, -157840, -2205466, 1966558, -2285996, 649614,
+4022774, 4904853, 8951786, 5057861, 12610561, -14915348, -10645076, -1661079, 21887154, 8849780,
+555661, 11842835, -7371775, 17770428, -4169876, -15599321, -3020973, -15501611, 12607876, 7532836,
+4950487, 4909148, 297963, -4970888, 6109054, 9084393, 4582193, -3164317, 8145943, 10880763,
+9752260, -1212791, -8446590, 14743549, 3481608, -899796, -2461553, 1774358, -9605694, 9568650,
+-1796907, -2649458, -12246026, -6669548, -7553774, 17200270, 6147172, 187905, 2286533, 8893267,
+12786655, 6521371, -16492138, 15035607, -1752347, 8700530, 3727495, 13214004, -3007014, -17277042,
+5446019, -780073, 7178501, -3059091, -7042673, 6441914, -2727841, 4376035, 21794812, -2629594,
+-9989020, 68183, 2896419, -10545755, 17575544, -7783018, -10541997, 15498389, -8970039, 7916699,
+1088774, -11188927, -7925826, -11190537, 3585761, 9429064, -5546951, 5479305, 10471130, -5750961,
+7407745, -2354179, 12385612, -4330938, 3744675, 4065187, -3315178, 96100, 556198, -5537287,
+-643708, 5159867, -7757785, -1453846, 5852967, 3017215, 271657, -4729296, 2495913, -1217623,
+2046015, -4944044, -4758287, -2645163, 1146756, 1329292, -5743445, -3570192, 5600638, 816044,
+2518998, -5856725, 2857227, 631897, -2567317, 1300838, 981400, 2053531, -3032784, 362925,
+-1404454, -199716, -6242735, 4671314, -14404783, -3122441, 7761006, 1553168, -14087493, 3477313,
+-4937602, 10128607, 2518462, 5071283, -23530516, 6954626, 447213, 8893804, 15185931, 558346,
+-1910724, 1018444, -7648263, 15155866, -14636712, 4517232, 9269076, 6081137, 8535711, -4147328,
+-7053947, -8448738, -15149423, 5749888, 2309619, 8568460, 16090558, -6332930, 13797046, 7252589,
+-13311177, -7839926, -208306, 1186485, 707059, -389231, 6823630, 11574937, 10957535, 4362076,
+-27811524, 6603512, 8254391, 7953743, -18331458, 10808285, -9416179, 9339406, 1138166, 4798552,
+-2506114, 6929930, -2238215, 23349590, 11335492, -10873247, 1306207, -30019138, 4971425, -9066139,
+-9019968, 8039105, 5978595, -15246597, -29599840, 18388902, 11502996, -28090696, 10851235, -6604049,
+10628433, -2655901, 2558190, 4018479, 303869, -19042812, -6976101, -3048890, 5952288, -518617,
+-4710506, 7523172, -9981504, -4293894, 10421738, -1251983, -875100, 3260954, 2198487, 3724811,
+1899986, -5937256, 2349347, -8704825, 5224291, -4019016, 3007014, 1842004, -2165737, -1644436,
+-1447404, -3344169, 1589138, -5171141, -701690, -4442607, -2937221, -7081864, 3510599, -2389613,
+-1701881, -4247723, 1855426, 2935610, 2297271, 1402844, 746787, 576599, 2627446, -581431,
+2847027, 1879585, 6504728, -3843996, -3449396, -6016176, 10919954, -8339753, 92342, 1622424,
+28033788, -3811247, 20246476, 4985920, 15248745, 969052, 4363687, 4951561, 27030376, 27078158,
+-13978508, -12780212, 15475304, -19614042, 24159, 5306432, -19547470, 11137924, 1584306, -1560147,
+-3543348, -5959804, 2371359, 2110440, 3680787, -12015171, 113280, -2930778, -15786689, 8064875,
+11023034, -17653390, -13128104, -6453725, 9536438, 9248675, 8868034, -951335, -3564286, 8304320,
+28147606, 15166066, -5521718, -3663607, -3817689, 18992346, -15170361, 7017440, 4042101, -23685134,
+-9800578, -1064615, 3240553, -20074678, 13843753, 9006010, 4045322, 3823595, 9605157, -19010598,
+-2289218, -15768972, 714038, 9791452, 16480326, 10140955, -10407243, -5537824, -817118, 555125,
+-11959336, 26775900, -2119566, 3567507, -6306623, 9188009, -2032593, 5375689, -2421288, 3344169,
+2522220, 5831492, -679142, 105764, -2182917, 1389422, -415001, -1499481, 7894687, -2348273,
+-5829345, -327491, -657130, 4049081, -5943161, 1365263, -4931160, -7715909, 4760971, -1422708,
+-5289252, 442382, -115427, 930934, -4660040, 6186901, 1586454, 7594576, -9385040, -631360,
+4375498, -2345052, -7627325, -120259, 8175470, 3722126, -2525441, 12914430, 20024748, -1394791,
+1302449, -12402792, 1042066, -546535, -8865886, -14810658, -2843268, -6857989, -11098732, -8113730,
+12550431, -10638634, 9101573, -3206730, -2540473, 17577154, -12169790, -6789807, 2684892, 7090454,
+1030792, -23255100, -14295799, 2660195, -3752728, 3772592, -3260954, -7299297, 14817637, 3175592,
+-1289027, -6089190, -33454038, 20084340, -6062347, -364535, -2860448, 1278827, 9573482, -5570036,
+-9139154, -15608985, -1487132, 6892349, -9651865, -12367895, 5083631, 19638202, -3350611, 18263812,
+13430363, -13368086, 24570972, 16254841, -16232292, -25052544, -7223062, -10917807, 1324461, -7937637,
+-1964948, 12001212, -20966420, 10262824, -3422552, -11769821, -13164075, -13129715, -15930034, 3317325,
+9533754, -8547522, 13630616, -1773822, -7983271, -16409459, 250719, -1837709, 6328635, 19588272,
+-7099044, -14838038, -5196374, 434865, 5019743, 13406740, 3509525, -1657321, -11001022, -79994,
+395137, 4989679, 2058900, 31139, 3688840, 5495948, -4131759, 6860674, -3966939, 3144990,
+7944616, 7181186, 421981, -11214160, -4626217, 1716376, 2753074, -7793218, 12649216, -7668664,
+5773510, 6856379, -5212480, 693637, 1376537, -2954938, -10751914, 2296197, 4805532, 869194,
+9005473, 6309844, -6150393, -21228950, 38631084, 54366768, -5245229, 6623914, 3491272, 13167833,
+26363584, -25164214, 303332, 4359392, 500901, -9075803, 1362042, -11212549, 13235479, 32386200,
+-6834904, 695248, 1851668, 9810242, 904091, 3802120, 12460237, -24955370, -1854889, 24482388,
+25161530, -29403346, -6233608, 4227322, 4145717, 8748848, 22148072, 6226629, 44668196, 7430831,
+13790066, 6576132, -7008313, -9270687, -525597, -31345746, -45076220, -15269682, -14622753, -46976204,
+7362648, -1124745, -26223996, -12809740, -43936980, -4815195, -6040335, 29944512, -29339996, 18299782,
+-20045150, -1644436, -13179107, -10420664, 11793980, 26907434, -20734492, -7795366, -1870458, -6152541,
+-2190433, 11343009, 21594558, 23032298, -16434155, 46338940, 31102006, 4038343, -17568026, -38151120,
+-8641474, -14208289, -10399726, 2505040, 12259447, -8017094, 4580583, 14377403, 2347737, -4578972,
+14632954, 9723806, 5026723, 6402723, 15362561, 15469935, 134755, 1254131, 6222871, 5791764,
+-2512019, -4625680, -2635499, 2819646, -363998, -1963337, 985695, -3093450, 2158221, 10084046,
+-415538, 3550864, 12345883, -3234110, -4396973, -4728222, -500901, -6855305, -1354525, 5833640,
+-3180423, -1880659, 1207423, 31139, 1078574, -981937, 4878546, -3294240, -3367791, 7974144,
+5679558, -6235219, -290447, -3340948, -19413790, 35566088, 59204512, -13906030, -3015067, 10546829,
+26513370, 8959839, -15373835, 9681930, -13127031, 3459059, 8405788, -3124052, -17709224, 5393942,
+18905910, -4646081, -26976690, 21203716, -6160057, 17322676, -6340983, -4198331, -6614787, -10856067,
+-384400, 19240380, 10764799, 3248069, 15560667, -7283728, -6081137, 5989332, -8214125, 10813117,
+6325413, 16499117, 28195924, 24734716, -17672716, -32952600, -11989938, -1982664, 25937844, -9806484,
+4680441, 10525354, -10168872, -15130096, -24276766, -24919938, 19801410, 21124260, -16698296, -60122564,
+5075041, -4133906, -8157754, 4786741, -5904507, -24052890, -11177116, -5555004, -16683264, -7070590,
+25745108, 9825811, 14890115, -5675800, -8269960, -5322002, 14370961, 2518462, 2792803, 12380780,
+35682052, -2974802, -5094905, -17827872, -16853452, -24665998, -2534568, 14166413, 9713605, -9986336,
+7560753, -4539244, -5747740, -10205379, -9264781, 8705362, -7136088, 8498130, 4081293, 4862440,
+-5145371, -7590281, 8880382, 5545877, -2018635, 6736656, -8942659, 3979824, -1063541, 5578089,
+-2832531, -5057324, -2760590, -2432025, 6320581, 3190624, -88584, -6248641, -1311576, 12971338,
+-8974871, -79457, -8704825, 11154567, -5708012, -2312303, -8012799, 1340567, -3295314, 1341104,
+9553618, 9546639, 2186138, 310311, -3328063, -12590697, -1873143, -10380936, 5513665, -14761266,
+-24550034, -5179194, -4205310, 4697084, -8458938, 18991272, -11318849, -38155952, -20898238, 13452374,
+-18187040, 21486648, 18901078, -8221105, -3013993, 2951180, -11809549, 251792, 6112812, -1472637,
+3273302, 27168352, 22362820, -5796595, -35850092, -26900990, 1899449, 19132468, -14479408, -5970542,
+-16994648, -21423296, 1873143, -5901822, -25467008, -27406724, -40615360, 16485695, 5462662, 1089848,
+23236846, 31534724, -1352915, -23228256, -17906256, -18752364, -10831908, -6519224, 7005629, 12321187,
+-10949482, -17062294, -21169356, 11339251, 9694815, -20507396, -19832548, -7745974, -3561065, -11906186,
+7343857, 50964620, 30379378, 59490128, 19714436, -31396748, 36840620, -1484448, -19051938, 1956895,
+-17944374, -38801272, -16226923, 9035537, 18436684, -4283693, 16974248, 9968619, 37655588, 41310608,
+33793876, 11332808, -9657234, -5903433, -5720897, 7250979, 9458055, -14268418, -5431523, 2417530,
+30681098, -4250407, 2529199, -3318936, 11013370, 11246372, 13039521, -644782, 124554, 236223,
+2729452, -1194538, 1728188, -11222750, -3732327, -3841848, -10661183, -10877005, -5165235, 3946538,
+12893492, -8429410, 1830193, 4565014, 14669998, 20038706, 13587666, 12805445, 14137959, 3141769,
+-5494337, -11041287, -16031502, -19791210, -15716359, -9215926, -18910204, -19098646, -7524783, -3382824,
+35376036, -20088636, 2306934, 10405095, -4464082, -26219702, 26520886, 25340308, -14579803, -20045150,
+2738042, 35087736, -18402324, 10011569, 22471268, 6896107, -8469139, -16741783, -11023034, 7803419,
+-2678449, 5954436, -9838696, 6573985, -21779780, 31876710, -3094524, 7184407, -1519882, -40111236,
+12492449, -11077794, 20683488, 12504797, 22100292, -8599598, -38729868, 27837294, 12495670, -13121662,
+-24119462, 19969450, 10659572, 21234318, 21376590, -18622442, 8567386, 22407918, -32811402, 30090540,
+14768245, -911607, 9535901, -16962974, 37616936, -4202089, 24748138, 11162083, 43683040, -3024731,
+-7686381, 6194954, 17756468, 11842299, 12351789, 44189308, 2568391, 10831371, 25777856, -17022030,
+17681306, 2133525, -29388314, 10970420, -9921374, 33247878, -24487220, -29356638, -30617748, 26167626,
+42871828, -13657459, 10892037, -50549080, 4794794, 2473901, -1961726, -23653996, 3930969, 10062035,
+-7853348, -6476811, -6391448, 16061567, 7480760, -10071698, -10937134, -6256157, -2609193, -3130494,
+4561792, -17402670, -10492068, 9307194, 3789235, 3338263, 521302, 8025684, -1401770, -883690,
+-10286984, 13781476, 17095044, -7283191, -26714160, -17977122, -240518, 77846, 5068599, 1398549,
+-8458401, -13060459, -7248831, 4996658, 7651484, 21429740, 7175817, 1174137, 301721, -15879031,
+-3330210, 16620987, 9726490, -64912524, 3564823, -7966628, 2028835, 50225884, 41371808, 59481540,
+31433256, -15845745, -12112345, -24675124, -32855962, 11545946, 2891050, 8606578, 10457172, -9598715,
+14966887, 25347824, 4671314, -6818261, -8591008, -17995912, -11945378, -10886668, 4963372, 8056285,
+-25805774, -15292231, -3558381, 17288854, -7815767, 11125576, 13854491, -36697812, -36132488, 6827388,
+10472204, 8019241, -27275726, -12568148, -24499568, -11886322, -11218455, 23596014, -31053150, -43262132,
+-16256988, 8545374, 7347616, -33376728, -26781806, -21077016, -15946140, 17986786, 25393458, 1111323,
+-8634495, -10588168, -5896990, -5663452, -11484743, -37050536, 12168179, 27769648, 25262460, 7827041,
+34507376, 46639048, -4078072, -6047314, 35730368, -8701067, -21767432, -49213344, -16762184, 6650757,
+-26998702, -18113488, 12623446, -4469451, 17508972, 30611306, -18685792, -29019484, -9611600, -12483859,
+-7213398, -7917772, -7820062, 3205119, 4423280, 3525631, 6214818, -10465225, 9054865, -14434848,
+-1752347, 8875550, 11951283, -12907450, -17948668, 10196789, -4113505, 596464, -12539157, 14717779,
+-8693014, -3185792, -3481071, 13613973, -11619497, 14773614, -6627672, -7006166, 9784472, 2513630,
+7784628, -6276558, 653372, 2829310, 15963857, -1957968, 3758097, 42610908, 14971719, 3436511,
+15572478, -17681306, 1165010, -9041443, -13186623, 7865159, 3127273, -11043435, -18305688, -10556493,
+-16990890, -13861470, 5599564, -10703059, -5180805, 7970923, -5254893, 1782411, -5849746, 21161304,
+-16540993, 17342004, 6344741, 1924145, -15996606, -6944425, 12832289, 5149129, -251256, 10182831,
+-1772211, -4281546, -6524056, -5582921, -4357781, 1868848, -40265, 2098629, -18743238, 9822590,
+-7811472, -7420093, 6597607, 4437238, 2503966, -3608310, 13231720, 11281805, -16396575, 14650133,
+-2011655, 9913858, 19902878, -4242891, 10794863, 10157598, -9825811, -7117835, -13111998, 1094143,
+2313377, -21188148, 8758512, 3113851, 16479790, -6562710, -37381784, 23375896, 1472100, 585726,
+532039, -16621523, -5171678, -4453881, -5539434, -24184960, 13765907, 6795175, 14842870, -10837276,
+6559489, -12146168, -10937134, 394063, 9438191, 7470022, 293132, -1497333, -3333968, 716186,
+-5479842, -1257352, 16005196, -6608344, 3216394, 1608465, 4576825, -9922448, 10668699, -522375,
+-1979980, 2359011, -1015223, 2298881, 3601330, -9046812, -1187022, 16106, -1633161, -1777580,
+4909148, -5839008, 7144678, 10176925, 3932580, -6592775, -287226, -1501091, -5971079, 7374459,
+-2056753, 3955665, -21979496, -62221192, -92652112, 19484656, 72727216, 3061775, 199157632, 183672128,
+126109904, 217009664, 166875584, 22737556, 3547643, -22484154, -159137664, -162250448, -123415888, -212531088,
+-198250864, -56649008, -66169340, -66847408, 15864535, 40253508, -33210298, -11047730, 63720136, 40621800,
+-2214056, 47418048, 32847910, 2487860, 39664024, 93978176, 61793840, 21552146, 96267400, 71271760,
+5556614, 82744152, 112146968, 26933204, 12138114, 114417392, 31335544, -44549012, 57605712, 88132728,
+-45041860, 20586852, 123179128, 11701102, 20353314, 148707344, 116867136, 9869835, 92727808, 122989608,
+-42707544, -25306484, 34996468, -100618736, -168106096, -113456392, -185379376, -275375040, -252932768, -282906816,
+-360331104, -380201248, -336338880, -355431616, -334764256, -251346320, -200756976, -104570104, -26079042, 59113784,
+206190640, 239972704, 260528960, 404256832, 395223968, 265348448, 341647456, 266976784, 106180720, 117365888,
+165971488, 81170048, 52882860, 124010200, 88442504, -566936, 42354820, 96364032, 23981486, 6656663,
+71806488, 16535087, -74924096, 24137180, 58799712, -17300666, 52645024, 140332144, 55506548, 31452582,
+123509840, 67342400, -24438364, 14312442, -32136020, -148364816, -181694304, -180536272, -227627360, -257132176,
+-212735632, -204527424, -233190960, -210472192, -174064816, -200471360, -183533616, -123744448, -98538896, -94358824,
+-38999912, 21944062, 26232050, 83369072, 141111680, 148402400, 146712320, 165781440, 153117728, 109302624,
+92571040, 82350096, 56575992, 46007688, 56799332, 50285476, 33621004, 34934728, 38308960, 31956704,
+31077310, 40149356, 34928820, 23197118, 17160542, 12417287, -5382668, -11112154, -11217381, -10800232,
+-5050882, -1528472, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
3755412,
-5177583, -3042448, 206695, 171262, -3719979, 4968204, -1986959, -1937567, 1413044, -5119601,
--2303176, 5493263, 1240709, -2234994, 3896072, 1211181, 828929, -801011, 1896765, -30065,
--6574521, -310848, -2443837, -292058, -149250, -6285685, 91268, -4039954, 213675, 637803,
-2801929, 3360275, 1102196, 836445, 610959, 2903398, -1593970, 994285, 179852, 457951,
-600759, -868657, 2587181, 3878892, -7452305, 3462818, -1952063, -4476967, -2869038, 5717139,
-2861522, -1927367, 3241627, 947040, -2051921, 2016487, 40265, 0, 296890, 393526,
--779000, 46708, 420370, -326954, 2454037, -1524177, -3442416, -3330210, -22012, 1124208,
--212601, 163209, 1877438, -737124, 3296924, -3481071, -1040456, 2685965, 2895345, -1988033,
-3264175, 1151588, -845035, -2199560, -1021129, -937377, -877247, -868657, -433792, -121333,
--478889, -915365, 281320, 662499, -1309965, -339302, -420370, 684510, -1138703, -256624,
-164283, 2767570, 198642, -2206003, 1379221, -1188095, -1768990, 435402, -3721589, -444529,
--2790655, 977105, 1734093, 1672890, 1323924, -2901787, -211527, -2404645, 2567317, -4961224,
--2822867, 2502892, -5444945, -615254, -367220, 1385664, 1184874, 2670933, 5633924, 2601140,
--712965, -21475, -2029372, -1576253, -9976672, -9179419, -624918, 6787659, -1698123, 5420786,
-463320, 1546725, -1698660, -7719667, 3978214, 1216550, -2333241, 1895691, -4101694, -837519,
-2304787, 1015760, 7221988, -4969277, 4377109, -2280628, -5710159, -2652142, -1566053, -1570884,
-2005750, 1696512, -4605816, -2055142, -2627983, -983011, 4424353, 4728222, 5081483, -3738769,
-627065, -2347200, -316754, -1975148, -2520609, -3056406, -3432753, 1884954, 531502, -533113,
--1250909, 447213, 1921998, -1968169, -1728724, -885300, 2202781, -770947, -424128, -967978,
--1120450, -282394, 480499, -32212, -187905, 364535, 482647, -147103, -214748, 1409286,
--1116155, -708670, 541166, -687732, 1090385, -689342, -758599, -155156, -139050, 681289,
--359167, -347892, 408559, 85899, -1111323, 357019, 259309, 3708704, -3513820, -4534949,
--3939022, 117575, -1560147, -1253594, -3118146, 678068, -3482682, -248571, -1437203, 5337571,
--3439195, -3758633, -8400956, -10890963, -2643552, -4852776, -4474282, -1062468, 2248416, -2761664,
--6545530, 4059281, -9490267, 2855080, -1600949, -1698123, 6123013, 4330401, 2259690, 855772,
--1065152, -968515, -2314987, 1000727, 4152160, -3339874, 3936875, 3655554, 1050656, 551903,
-1633161, 2804614, -6175626, -2660732, 5869610, -4543002, 374736, -75699, 3586835, -433255,
--1379221, 699006, 6090264, 3397319, 2114198, 1988570, 3390340, -5364414, 4151623, -4373888,
-3843996, 2561411, -1151051, -747861, -1841467, -2388002, -3930432, -173409, -1232656, -3099356,
--3468723, -1920924, -2020782, -323196, -240518, -921807, 4624069, -1884417, -874563, -3119757,
-3203509, 46171, -716723, 711354, -1356136, -2239826, 44023, 1309965, -158914, -191126,
--1479079, 454730, -492311, -1295470, 81068, 326418, 724776, -136365, 474057, 434865,
-1082332, 408559, -1191853, 82678, 608812, -140660, -1045825, -620086, 1521492, 821949,
--827855, -328028, -331249, 2185602, -5772973, -137976, -2709051, -5302137, -2465848, -986769,
--3696893, -1248762, -3410741, -1330903, 2685965, 3613678, -5990406, -3408057, 1962263, -1193464,
--6544994, 4353486, 7795903, 1634235, -1836635, -3644817, 862215, 3765076, 7052337, -3586298,
--1494112, -4521527, -3625489, 3897683, 3912715, -5487895, 3223373, -1754494, -3500935, 5544803,
--14496, 3023657, -7596187, 522375, -4871030, 1101122, -6051609, -3801046, -988916, -1414118,
-12621835, 4005057, 3272765, 2462090, -9397388, 5253282, 3656091, -2077154, -236223, 4095788,
--581968, 4327717, 5011690, 4982699, -2891050, 363462, -1613834, 2651069, -2369211, -2507724,
-1650341, -2355790, 1112933, 1557999, 86436, 2933463, 1164473, -5575405, -673773, -712965,
-1751810, -6319508, -2030446, -1606318, 4454418, -1359894, -740345, -3417720, -903017, 219043,
--321049, -1594507, 46171, -1036698, 1152125, 403190, 10201, 180926, 425202, -821949,
--2349884, 1240709, 526134, -1357210, 652835, -744640, 281320, 285078, 843424, -194347,
--281857, -595927, 540092, -978179, 918586, -1112397, -56371, -97174, 733366, -740882,
--284005, -1073742, -615791, -991601, -7810398, -4358855, 3197603, -3422552, 9165997, 4029753,
-8973797, -139586, -4384088, -4676683, -6294812, 9576166, -2345052, 4373351, 4894652, 1009317,
-3446711, 3122441, 3048890, 1209570, -6323803, -365072, -2442763, -951872, 4339528, -397821,
--386010, 3018288, 1911261, 3126199, -2747169, -9982578, -5950677, -3784940, 7348689, -6644315,
--2007360, 4494147, -505196, 831076, -5566815, 9654550, 528818, -3769371, 7631083, -4693863,
-11820287, 6100464, -2665564, 1361505, -3365107, -2308545, -10885595, 3852049, -4957466, -777389,
--423054, -2389613, 4669167, -1826435, -4750234, -4638565, 1082332, -4238596, -4658429, 2657511,
-417149, 3355443, -1816234, -9943386, 3438658, 4315906, 5561446, -5351530, -6011881, 780610,
-9859097, 1583232, -5085778, -2336462, -855235, 2699924, 501974, 2875481, -2888903, -1100585,
--559420, -3565360, -2908230, 4379256, -717796, 1717987, -367757, -1247151, -2774012, -267362,
-124554, 1089848, -504659, 1013612, -705448, -2266132, -891743, -311922, -33286, -408022,
-1726040, 99321, 1867774, -620086, -109522, -284005, -1987496, -2684, 1066763, 1044751,
-7885023, -7255274, 3623342, 9255118, -6672769, 1830730, -3749507, -7276749, 10769094, 4022774,
-10008884, 9215389, 1359894, -7356742, -4494147, 3813931, -468688, 1588601, -7945153, 829466,
--14125611, -5944772, -11016054, 6795712, -6253473, -230854, 2042794, -1828046, -2842195, 3340411,
-3368865, 9771587, -1347546, -2175401, -7472170, -6401112, 6260989, 1337882, 2170032, 11687680,
--3520800, 75699, 6241661, -2799782, 2895882, 2137820, 6247030, 5598490, -3862786, -614717,
--7919383, 8252243, -5401995, -7171522, -6871411, 4355634, -2535641, -3783329, 8151848, -2539400,
-8449274, -5194226, -3924526, -1084479, 5542119, 7152195, -520228, -7737921, 2816962, -4948876,
-10087804, 2079301, 5936719, -8104604, -3551401, 2161979, -2051921, 4872104, 745714, -2764348,
-2945274, 6459631, 9148280, 7031399, 132607, -1657857, -83215, 1514513, 168577, -1589138,
-1097901, -1339493, -195421, 2594697, 164819, -1286880, 2813204, -899796, -1457068, 721018,
-1001801, -58519, -1725503, 637266, -1180579, 243739, -2357400, -2947958, 759672, 1104344,
--61203, 2276870, -802622, 1027571, 4663798, -12346420, 4294968, 3688840, 2447595, -9330280,
-7118909, 11783243, -11493869, 4388920, -7074885, 4643397, 606127, 4173635, -3420405, -241055,
-2692945, -7796440, -3893388, -3351148, 6166500, 6513855, -2151242, 3068754, -1607392, 4817880,
-6110128, 2405182, 1833414, -6197638, -2349884, -7743826, -8613557, -5996848, 559420, -2863133,
--419833, -3578782, -8577587, -2887292, 1724966, 789200, -539555, 12967580, -10505490, 3878892,
--5243082, -1500017, -3275450, -3289408, 5485210, -3274913, 399432, -3969624, -2677912, -4824859,
-6587943, -6068789, 5400385, -1403381, 5394479, -483184, 797790, -552977, 5213017, 3034395,
--175020, 11246372, 423591, -5623186, 2936684, -5057324, -6243809, -7489886, 7267085, 2586107,
-6470905, 6629282, 7740068, 4570382, -959388, -1385664, -1427540, 7476465, -1122597, 8381629,
-1760937, -352724, -1304060, 2878165, 4240207, 1120450, 1727114, 592706, -593779, 838592,
--1433982, 2256469, 75699, 1935957, -600759, 1837172, -224412, -2922725, 1423245, 2017561,
--30602, 1641751, -545461, 95563, -1721745, 1417876, -434329, 695248, 3076807, 3102040,
--12988518, -1032403, 1680943, -3008088, -10230612, 11696807, -762357, 426276, 9935870, -2787434,
--10240276, 3601867, 6699612, 12686797, -822486, 5355824, 1091459, -11184095, -3290482, -5820218,
-5682779, 3230889, 2965675, -4194036, -770947, -483721, 1015760, -3791383, 5291937, 1457068,
--4504347, 6544457, 917512, -7353521, -6171331, 1700807, 7928510, 7108708, -9953587, 19442780,
--972810, 352187, 5345624, -788127, -2562485, -188979, 12498892, -6273337, 6178311, -1523103,
-8650601, 2595771, 7752953, -2962991, -6109591, 4294431, 6628745, -3304441, -7425462, -8077760,
--7110319, -3226057, -1439888, 7387881, 178778, 6420439, -776315, -2130841, 6377490, -5577552,
--10764262, -2869575, -6874095, -6476274, -11969000, 8921184, 7785165, 3196530, -18559628, 4358855,
-3907883, -1392106, -545461, -6476811, 8866960, 4538707, 3510599, 2166811, 8143258, -710280,
--583579, 600222, -83752, 1891396, 923418, 36507, 2495913, -1504312, -337692, -1921461,
-557272, 645319, 2749853, -1924682, -302258, -756988, 2118493, -982474, 787590, 1253057,
-1695438, -1472100, 4068945, -11274, -125091, -1499481, 1588064, -2550674, 898185, 104153,
--3725884, -874563, -618475, -7399692, -499827, 576599, 5389647, -7787313, 395137, -1194001,
--3250753, -16176457, -1960116, 7652558, 5905580, 7841537, 906238, -8687108, 22981834, 9681930,
-15629923, 1647657, -6844568, -2714956, -2221035, -9736691, -615791, -3809099, 4897337, 47782,
-505732, -3103651, -4172561, -8227010, 2779918, 838056, 405874, 4283156, -352187, 1834488,
--823023, -7141457, -5566278, 4366908, 26307, 10471667, -13195750, 10593537, 6480032, -4625680,
--9540196, -14868640, 3153043, 11797738, -6018860, 11421929, -891743, -470836, 2619393, -3304441,
--13225815, 1627256, 6257231, 2829847, -5742372, -1462436, -3600793, 2968359, 6419366, -292058,
-1642825, -825707, 6181532, -2720325, -2103997, 4261145, -3649112, 9767829, -2592013, -4875862,
-3620121, -8751533, -4483946, 124554, 3489124, -3763465, 1643362, -1335735, 1945620, 118648,
-2310693, 2054068, -779000, 1250372, -4165582, 2318209, -564251, -5575942, -1954210, -1537598,
--3388192, 59056, 985695, -2574296, -1883343, -61740, -3569655, 320512, 915902, -714038,
--3778498, 402653, -56371, -2790118, 1176821, 2180770, -2323577, -80531, 679679, 299037,
-1101122, 3410204, 2776160, -2789045, -2298344, 2561411, -17788144, 12727599, 11475079, 13552232,
--4380867, -12084964, 4214974, 4859756, -18100602, -16432008, 15892990, 1742146, -7815230, 6028524,
--11324755, -12836584, 1792612, 33440616, 15489800, 6207839, -9124121, 150861, -3280281, 264141,
--3854196, -1858647, -4276177, 1204738, 9479530, 1888712, 11696807, -4649302, -3930969, 2149631,
-8161512, -1567663, -1224066, -17485348, -784905, -9847823, -566936, 13558138, 9631464, -3584687,
-9413495, 18814104, -8999030, 5434208, 15545634, -11446088, 16433619, -1373316, 6738267, -3906273,
-658204, -2226941, 2251100, 3818226, 16303159, -6262599, -2095944, 4248260, -7648263, 4803921,
-2491081, -4383551, -7451769, 16094316, -1097364, -8838506, -2952790, 9980430, -4227322, 6774774,
--72478, 487479, -10644003, -11559904, -5586142, -9860171, -8936216, -9660455, -610959, -2302103,
-4680978, -606664, 831613, -881005, 5898064, 3765613, 410706, -7322919, 258235, -1370632,
--5458904, -1556389, -2814814, 2862596, 1082869, -3722663, -1253057, -2854543, -2245194, -262530,
-2040110, 1997697, 2087354, 3585224, -2206003, 455803, 2248416, -1558536, -2148021, 2633889,
--3708168, -1458678, -1139240, 1661079, 710817, 2667712, 466004, 273804, -1047435, -2679523,
-21697638, 3886946, 3074660, -11292006, -6532109, 562641, 2510409, 4384625, 5044439, -21524766,
-984084, 1351841, 15555835, 2479807, 3968013, -1484985, 14153528, -23113904, 725313, 11829414,
--13748727, 3436511, 2714956, 11139535, 2208150, 1180579, -3766686, 352724, -11800423, 3997541,
--2932926, 2088428, 3233574, -2029909, -8944806, 3275986, -7056095, -12317429, 6971806, -6966974,
-4594005, -11581379, -7276212, -1230508, -3568044, 2758443, -4896263, 12683575, -122943, 12093554,
--12749074, -10802916, -3439195, 171799, -187368, -3760781, 10915659, 8887361, 22739168, -3651796,
-14555644, -8517457, -1429687, 4373888, -17209934, 19669340, -497142, 12244952, -453656, -17180942,
--10322954, 7226820, -22958210, 11967389, 3336116, 17470316, 22057342, 2862596, -16296180, -12355010,
--5059472, 12543452, -1500017, -3040300, 724776, -4600447, 698469, -3367254, -4918812, -1711545,
--7931731, -391379, 386010, -3693672, -3294777, -4507568, -3187403, -1546188, 2025077, 3831111,
-1447941, -635655, 3521873, -2400887, -1314797, 816581, 1872606, 2237141, -2215666, 2830920,
--2893734, -1366337, -4233764, -7431367, 4617627, 797790, -4206384, -4254165, -799938, -5898601,
-820876, 62814, 4397510, 11016054, 17063368, 5839545, -7018514, 16094853, -17290464, -1884954,
--5290326, 2063195, 13864691, -12594455, 31208842, 4052302, 7753490, -9268003, -12547210, 4265440,
-135291, 26402774, -3770981, -9257802, -15111306, -10289131, 7409893, 4652524, 4345970, -1994476,
--14874009, -23065048, 1752884, -13937169, 18462990, 2323577, 15000173, -9330816, 6291054, -6062347,
-7789460, 21539260, -3556233, -2365990, -3231426, 5567352, 7223062, 3621194, 1619740, 2157684,
-9419937, 8364449, -4824322, -7493108, -6640020, -7503308, 24757802, 9691057, -14461692, 11109470,
--3259880, -11931419, -8475581, 4298726, 9088151, -16977468, -22028888, 2398739, -9814537, 28923384,
-15101642, -5042292, -3253975, 6076842, 13117367, 3282966, -2174327, -3916473, -19966230, -1001264,
--4854387, -21787832, 8276402, 13619878, -2172717, 6791417, 3841848, 13893682, -7618735, -2121714,
-5063767, -2237678, -6245956, -7174743, -137439, -4356171, -10544682, -2244657, -4828617, 4555350,
--2000918, -5913096, 4117263, 1562294, 644782, -3685619, 4109210, 1057099, -6593849, 2257005,
-2707440, -3163244, -9177808, -4606890, -1627793, -1053341, -50466, -3541201, -397284, -2640868,
-1347546, 1041530, -1746978, 369904, -71404, -2816425, -5657009, -807454, 1297080, 3278134,
-1755568, -4373351, -2739116, 1029182, -8122857, -13793287, 7967701, -4635344, 12035035, 5354214,
--12809203, -5536213, -6425808, 2692408, -17292612, 11699491, 16588774, -6796786, 10391673, -2587718,
--4416300, 7927973, -12076911, 7500624, 13499082, 3604551, 23196582, 11130408, -9545028, 9789304,
-4311611, 8593693, 525597, 12340515, 10917270, 16558173, 6393596, -6595459, -7676181, -10386305,
--854699, 25728464, 679142, 10832981, -16122770, 33636036, -9875740, -26519276, -12367358, 21203180,
-1814087, -3056943, -2789581, -1653562, 15996606, -11748346, 9319005, -2463701, 20109036, 30422864,
-15840913, 14617921, -10715943, 17258252, 10623602, 10210748, 11933567, 17256642, -3478387, -30403536,
--19306414, -22115860, 5848135, 7742216, 6421513, -5210869, 10388452, 26656178, 2014877, 1976222,
-6662031, -1602560, -23333484, -25352656, -8497056, 4915053, 2834142, -1178432, -14295262, 3571265,
-859530, 1088774, 7727720, -1774895, 4967667, 1549410, 9506373, -2457795, 6399502, -5049808,
-1271847, 879931, 11011222, 4884452, 10992969, 1119913, 5675263, -2042257, 1376537, 4544613,
--2844342, -7158100, 1785633, -4308926, -7789460, -6371047, -1572495, -1823214, 10735271, 2110440,
-136902, -3315715, 1818919, -45634, -3645354, -4426501, -2997350, 2294050, 6925098, -955630,
-796716, 753767, 3204583, 2034741, -6931541, 4402879, 11159399, 13067438, 4746476, 6127845,
-10206453, -8047158, 23714126, 9331353, 4596689, -6779606, -18163416, -7350837, 9932112, -1005022,
--25746718, 34674344, -12167642, -6815576, 10705206, 507880, -3447785, 2496450, -6720550, -8162586,
--1763621, -18893024, 4682051, -20302310, 574452, -16098611, -18094160, -3651259, -3840238, -3990562,
--13234405, 5791764, 14190572, 3782793, 10867878, -18846316, 18574122, 33805688, 3511136, -13604309,
-21141976, -17355426, -27452894, 45698988, -4682051, 3223373, -3175055, -20467130, 15780784, -18556944,
-8029978, 27913530, -551903, 38346540, -29936996, 28880970, 8429947, -19011136, -9944460, 3598646,
--18240726, -9117679, 20332376, -19959250, 13242458, -13430363, 7350300, 21210696, -46618648, -20574504,
-21475374, -40040368, 14146549, 12382391, 22894324, 20214800, 9117679, -1653562, 13440026, 20050518,
--21796960, 21758304, -401043, 7511361, -1143535, 6808597, 1771137, -4170413, 1508607, -6353331,
--2071248, 1607928, -1122597, -10996190, 6912750, -1962800, 9002251, 5359583, -7762080, 6107444,
-7513509, 5428839, 2265059, 3878356, 2360622, 4949950, -15229417, 8519605, -1988570, -4179540,
-10829760, -8714489, -7062000, 3620658, -8993662, -7354058, -8862665, 4904316, -13435731, -40099964,
--10435697, 13137231, 30958662, -9863392, 15632607, 424665, 7385197, 16031502, 10386842, 27766964,
--7177964, 1169842, 7635915, -24616068, -15817291, -7348689, -7951058, 5645735, 427886, 2069637,
--12814572, -2138894, -16967806, -13822279, 6649683, 34289408, 19749334, -9037148, -10968810, 16333224,
-19602768, -11685532, 5184563, 15056545, -5956046, 32796370, 11181410, 4802311, -25298968, 15600932,
-3227131, 12289512, -2580739, 3158412, -4159676, -5473936, -39898636, 10562398, 27625766, 13618804,
-3715147, -793495, 13942538, -22473954, -41447508, 3063922, 55005108, 13210246, 43642236, 41334228,
-574989, 3587372, -26277146, -23582054, -2487860, -20233590, 27564026, -60043104, 11368778, -22510460,
--47904992, 10624138, 22468048, 47896400, 4329864, 2367601, -30507152, 9948218, 14462229, -21379810,
--1959042, 1480153, 22429930, -6036040, -14249628, 33867428, 7215545, -12150999, -394600, -19659676,
-2632278, -18611168, -3704409, -678068, -9031779, 2784213, -7285875, -7829189, -4207994, -127238,
--3655554, 6231461, 17624936, -1041530, 260919, 6499896, -15846819, -9665824, -1853278, 4760435,
-5091147, -13907641, -7776039, 10942503, 6549825, 3769908, 2718178, 11555073, -373662, 134755,
-1263794, -7912941, 1489817, -10405632, 29235842, 51306068, 1251983, 14089103, 9154723, -26816166,
--7710003, 26946088, 8385387, 11936788, -6811818, 7903277, 4500589, -9418326, 348966, 14031658,
-14693083, 18103824, -8029442, -2115808, -39858908, -37226092, 5074504, -22979148, 725850, 20117090,
-4772246, 2480881, -6985228, -4362613, 12769475, 31428424, -22832046, -12970264, -3046206, -22025666,
--1688459, -21224654, -6705518, -22538378, 19923280, -27332636, -2310693, 5036386, 13211319, 48063368,
-63883880, 16662326, -16896938, -34024732, -3091303, -23241678, -9241696, -36193688, 5350993, 35095788,
-25736518, 21102784, 2445447, 5191005, 35778152, 34927748, 25508884, -1991254, 16071231, 6069863,
-7900056, -41179608, 12370043, 4676146, -9604621, 25001542, 33718716, -4591320, -657130, -16492674,
--70618928, -1257352, 20776904, -10139344, 48740900, 34793532, -16208670, 3337190, -18061948, 12254079,
-3283503, -6435472, -10844792, -4802311, -1087164, 7693360, 9350144, 14553497, 318364, -8590471,
--18896246, 1202054, -8959839, 7289097, -8460012, -11360188, -2944737, -2866891, 8427800, 3677029,
--3315715, 4591857, 2379412, 3667902, 750546, -6408091, -10478110, -5150740, 3835406, 8819715,
--842350, 7214472, -176094, -10298258, -10921565, 3134789, -13346074, -7348689, -57445, -5709086,
--1709934, 3852049, 5348845, -4824859, -12460774, 31922344, 22778896, -15224585, 15429133, 23709830,
-2685965, -29725468, -35461936, 33123324, 11289858, 7655243, 26097296, 569083, -11348377, 27988154,
-7391102, -21254182, -10766409, -7714298, 9463960, 575526, -12706661, 4902705, -14057965, -1430761,
--6334003, -6865505, 19091130, 35537632, -12088185, 7356205, 16775069, -8350490, -7135552, 6851010,
-20265266, 6454262, -15520938, -19696720, -23655606, 12681965, 13368623, 32251984, -15267535, -14518600,
-11359652, 19204410, 30114164, -882079, -55706264, -11959873, 17999672, 17893908, 8096550, -10917270,
--386010, -22321482, 3380139, -9667435, 23199266, 33174864, -10011569, 694711, -19423452, -21111912,
--8109435, -42719356, -8563628, -21737904, 18951544, -17405354, 19658066, 24317568, -49372260, -4161287,
--20877300, 21122112, -8684424, 7423851, -15343771, 2469606, -13067975, 14536854, 16253230, 27989228,
-27075474, 13365401, 26050050, 12041478, 1563905, 13729937, 8871255, -3927748, 11603391, -12917651,
-6219650, -6627672, 5385889, -16273094, 9629854, 35433, 7627862, -11997454, -6787659, 7708930,
--3119757, -4056060, 13975824, -11054709, -2528662, 11264089, 5590437, -7658464, -2405182, 4555350,
-25790204, 13793287, 11241003, 15139760, 1028645, 16462610, 5565204, 4987531, 8638253, -65498,
-13865765, 3767223, -23866596, -11230803, -6379637, -11727408, -16201690, -26793616, -6073621, -14905684,
--27178554, -41064720, 20088098, 21264384, 12539694, -27438936, -37344740, -28675886, -16259136, 6732898,
--1219234, -36371932, -21703544, -24924232, 35325568, 10997264, 15406048, -11102490, -20062866, 44762148,
-11103027, 13969381, -8525510, 2662343, 13270912, -9141301, 10560251, -3283503, 21398600, 30171608,
-1388348, -24319716, -19468550, 23906324, 16443819, 20944944, 6128919, 5270462, -10697690, -4705674,
-3556770, 14646912, 31692564, -239444, -58819576, -54595476, 910533, -13316546, 35492536, 36011152,
--39887900, -27003534, -16684874, 49859200, 44536664, -24002424, 7254200, -31443456, -30176978, 18546206,
--13781476, 251256, -4470524, -21792664, 15809238, 16101296, 12960601, 50525460, -36764384, -9868224,
--3204046, 13019656, 4336307, 20846698, -73593192, -42818140, 15701327, 23270132, 23138600, 6601365,
--24103894, -24806658, 718870, 14849313, 42973832, 10496900, -13895830, 4499515, -27314918, 17274358,
-15255187, 1000727, 24236500, 51366200, 12643310, -37459632, -19364396, -2522757, 4685273, 24887724,
-21879100, 10344966, -10943577, -4458713, -7410429, -8723615, 22683870, -2455111, 2460480, -8698919,
-22028888, -9836012, -3727495, -367757, 19194746, 8426189, 7126962, -3750043, -23118736, -8212515,
-8144332, 19062676, 3740380, -25916906, -35806604, -29993368, -206158, 4699768, 6138582, 3969087,
-49425948, -32813014, 30838402, 30768072, 19640886, -71599256, -28770912, 24052354, -19480898, 13940927,
--5122822, -29703994, 19053012, 5794985, 5676336, -13095892, -47438452, -4435628, -1449552, 242666,
--6773701, -34497716, 25834766, -21293374, 44123808, -4594542, -3859028, 21559126, 16003585, -21032992,
--1957968, -15905338, 23576150, 37204080, 28266790, -31259846, 7022809, -20896626, 18900540, -18141942,
--7475928, 3165928, -1595580, 20252918, -18543522, -43428024, 11187316, -15488726, 16243566, 17032230,
--55048060, -9271224, -10499584, 2080375, 60956860, -16363825, -44362180, -11716134, 38743288, 18673980,
--24024974, -7812009, 24034100, -27380, 29672318, -44557064, -23574002, 26931592, -28016608, -67973224,
--20074678, -9201431, 77653544, -21111912, -40119828, 21420612, -46283640, 122176784, 11562589, -113368880,
--30205968, -19958176, 80524192, 43666932, -50622096, -26645978, -657667, 59585692, 47456168, -7325604,
--37314140, 14698452, -12623983, 53746684, -5196374, -26884884, -22321482, 35233764, -28139552, 18292802,
--53884124, -171262, -2064269, -3068217, -3163780, 11397233, -29831232, 28958280, 2397129, 21258478,
-855772, -33960844, -26140244, 19452980, 22935126, 36099200, 13449690, -3606699, -23523536, 3204583,
-5853504, -6144488, 1542430, 23682986, 3676492, -1054415, -26909580, 5241471, 19115288, 7125888,
-788127, -7808788, -19353122, -65553012, 18389976, -1058173, 22408454, 54184232, 17386028, 7450158,
--30533996, -12688944, -30515206, -36579164, -12230993, 7173133, 20915954, 27640262, -3083787, 16069083,
-19501300, -16987670, -34390876, 18209588, 6564321, -27980102, -9489730, 26543434, -9025874, -2994666,
-24320252, 13603772, 10818486, 3361886, 13830868, -13249974, -31948114, -13922673, 9118752, -13120588,
--7542500, 11682311, 795643, -22538378, 23476828, 5040681, -20839718, 2646237, -5022965, 20169166,
-11251204, -8176544, 9495099, -12475269, -28009092, 3728569, 6826851, -2573222, 74088, 5901822,
--12232067, 3843996, -10473278, 6265821, 19996294, -2145873, 8744017, 9217537, -7723425, 474594,
--19071802, 6503118, 11258183, -34692060, 20131586, -21646636, 6823630, 979253, -96100, 9528385,
-3872987, 22602802, 4132832, 6373195, -3266860, 11551315, -12162811, -8035347, 2805688, 1912871,
--10642929, 3807489, -948651, -3124589, -6147172, 2166811, -1211718, 12216498, -3136937, 1430224,
-8770860, -6188511, 6094022, -3826279, 2138894, -6194417, -5371394, -6187438, -1617055, -2804614,
-4632122, 3265249, -14354318, -3966939, -4194036, 9951976, -5923834, 3692598, 1716913, -16037408,
-5320391, 10331007, 681289, -3947075, 1730335, -4752918, -2369211, 53062712, -1931662, -1765768,
--14733885, -14492293, 10923176, -644245, 9456444, 162672, -5185636, -7016903, 3596498, -9820980,
-9954660, -9249749, 14504105, -11741904, 8451959, -9940702, -2211908, -1613297, -9245454, -7082401,
-2091112, -4188130, -2919504, -85899, -6951942, 904628, -1380832, 2201171, -1634772, 4039417,
--13937706, 12680354, -4771709, -4175782, 9622337, -7738458, 515396, -9660992, -8449274, 6135361,
-5418101, -6792491, -4381404, 2717641, -438624, -11811160, 3019362, 2063195, -11274, 7736310,
--2876018, -3339874, -3184182, -8067559, -2194728, 8443369, -8993662, 2307471, -4362613, -1114544,
-572304, -2741800, 1978906, 42950, 5905043, -8595840, -746251, 5540508, -11094437, 6456410,
--4999879, 69256, 5063767, -2463164, -5057861, 2282775, -900333, -1453846, -379031, -3613678,
--95026, 3743064, -249645, -1765232, 650688, -3131568, 2158221, 1576253, 916976, -2529199,
--761820, 3243237, -4155381, 4138738, -1902671, 1798518, 4600984, -5548561, 1319092, 370441,
--7000797, 1269700, -2234457, 2878702, -998043, 207769, 4233227, -2798708, 808528, -4506495,
-768262, 646393, -1130113, -1090385, -547071, -1627256, 311922, -824634, 178241, 3115999,
--4567698, 1991791, -24917790, -42071352, 15599858, 134742784, 33703684, 74294344, -2939905, -72384696,
--23528368, -71231496, -60878476, -21531208, -14697915, -4994510, 40325448, 54178864, 71619120, 90486368,
-39031588, -23211078, -41968272, -88926224, -84546968, -34493956, -28285044, -18869938, 36458368, 49733036,
-29701310, 46104328, 55294484, 18677740, 15121506, 10293426, -28742994, -13253195, -20601348, -44813688,
--24767466, -33312304, -49348100, -26882200, 6044630, 5217849, 27468464, 66728224, 45624364, 37962680,
-36983428, 11339251, 2673617, -3862786, -19291920, -27497992, -34785476, -49700824, -43947716, -24603720,
--7763691, -16833588, 13779329, 25659746, 21796960, 37652904, 41984916, 26928908, 24391120, 23833848,
--3791383, -11799886, -5958731, -34308736, -28424094, -7332046, -28135258, -30109332, -19083076, -27092654,
--13190918, 7634841, 17203492, 31152472, 50001472, 30964030, 28713466, 31755914, 11715597, -3879966,
--5873368, -17193828, -28355374, -29469918, -28071906, -30815854, -21428666, -19755238, -16398722, -6837051,
-7608535, 18880140, 29344290, 44281648, 46665892, 45452028, 38643968, 12141873, -10161893, -20864952,
--33481418, -44344464, -50033684, -50003084, -39577588, -22399866, -5398774, 13573170, 40905804, 45449880,
-45578192, 47685412, 39457864, 20635170, 6519224, -11373610, -31998044, -44806172, -39498128, -37031208,
--29146722, -13701483, 1115081, 10712185, 21919366, 24741696, 24450176, 19325742, 8734353, 3875134,
-1481764, -3832185, -4310537, -4444218, -5719286, -7172059, -5539971, -7909719, -5350993, -4576825,
--3178276, -4049617, -1530619, -928787, 1657321, 1683090, 3795141, 3054259, 2889976, 344671,
-848793, -466541, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+5177583, -3042448, 206695, 171262, -3719979, 4968204, -1986959, -1937567, 1413044, -5119601,
+-2303176, 5493263, 1240709, -2234994, 3896072, 1211181, 828929, -801011, 1896765, -30065,
+-6574521, -310848, -2443837, -292058, -149250, -6285685, 91268, -4039954, 213675, 637803,
+2801929, 3360275, 1102196, 836445, 610959, 2903398, -1593970, 994285, 179852, 457951,
+600759, -868657, 2587181, 3878892, -7452305, 3462818, -1952063, -4476967, -2869038, 5717139,
+2861522, -1927367, 3241627, 947040, -2051921, 2016487, 40265, 0, 296890, 393526,
+-779000, 46708, 420370, -326954, 2454037, -1524177, -3442416, -3330210, -22012, 1124208,
+-212601, 163209, 1877438, -737124, 3296924, -3481071, -1040456, 2685965, 2895345, -1988033,
+3264175, 1151588, -845035, -2199560, -1021129, -937377, -877247, -868657, -433792, -121333,
+-478889, -915365, 281320, 662499, -1309965, -339302, -420370, 684510, -1138703, -256624,
+164283, 2767570, 198642, -2206003, 1379221, -1188095, -1768990, 435402, -3721589, -444529,
+-2790655, 977105, 1734093, 1672890, 1323924, -2901787, -211527, -2404645, 2567317, -4961224,
+-2822867, 2502892, -5444945, -615254, -367220, 1385664, 1184874, 2670933, 5633924, 2601140,
+-712965, -21475, -2029372, -1576253, -9976672, -9179419, -624918, 6787659, -1698123, 5420786,
+463320, 1546725, -1698660, -7719667, 3978214, 1216550, -2333241, 1895691, -4101694, -837519,
+2304787, 1015760, 7221988, -4969277, 4377109, -2280628, -5710159, -2652142, -1566053, -1570884,
+2005750, 1696512, -4605816, -2055142, -2627983, -983011, 4424353, 4728222, 5081483, -3738769,
+627065, -2347200, -316754, -1975148, -2520609, -3056406, -3432753, 1884954, 531502, -533113,
+-1250909, 447213, 1921998, -1968169, -1728724, -885300, 2202781, -770947, -424128, -967978,
+-1120450, -282394, 480499, -32212, -187905, 364535, 482647, -147103, -214748, 1409286,
+-1116155, -708670, 541166, -687732, 1090385, -689342, -758599, -155156, -139050, 681289,
+-359167, -347892, 408559, 85899, -1111323, 357019, 259309, 3708704, -3513820, -4534949,
+-3939022, 117575, -1560147, -1253594, -3118146, 678068, -3482682, -248571, -1437203, 5337571,
+-3439195, -3758633, -8400956, -10890963, -2643552, -4852776, -4474282, -1062468, 2248416, -2761664,
+-6545530, 4059281, -9490267, 2855080, -1600949, -1698123, 6123013, 4330401, 2259690, 855772,
+-1065152, -968515, -2314987, 1000727, 4152160, -3339874, 3936875, 3655554, 1050656, 551903,
+1633161, 2804614, -6175626, -2660732, 5869610, -4543002, 374736, -75699, 3586835, -433255,
+-1379221, 699006, 6090264, 3397319, 2114198, 1988570, 3390340, -5364414, 4151623, -4373888,
+3843996, 2561411, -1151051, -747861, -1841467, -2388002, -3930432, -173409, -1232656, -3099356,
+-3468723, -1920924, -2020782, -323196, -240518, -921807, 4624069, -1884417, -874563, -3119757,
+3203509, 46171, -716723, 711354, -1356136, -2239826, 44023, 1309965, -158914, -191126,
+-1479079, 454730, -492311, -1295470, 81068, 326418, 724776, -136365, 474057, 434865,
+1082332, 408559, -1191853, 82678, 608812, -140660, -1045825, -620086, 1521492, 821949,
+-827855, -328028, -331249, 2185602, -5772973, -137976, -2709051, -5302137, -2465848, -986769,
+-3696893, -1248762, -3410741, -1330903, 2685965, 3613678, -5990406, -3408057, 1962263, -1193464,
+-6544994, 4353486, 7795903, 1634235, -1836635, -3644817, 862215, 3765076, 7052337, -3586298,
+-1494112, -4521527, -3625489, 3897683, 3912715, -5487895, 3223373, -1754494, -3500935, 5544803,
+-14496, 3023657, -7596187, 522375, -4871030, 1101122, -6051609, -3801046, -988916, -1414118,
+12621835, 4005057, 3272765, 2462090, -9397388, 5253282, 3656091, -2077154, -236223, 4095788,
+-581968, 4327717, 5011690, 4982699, -2891050, 363462, -1613834, 2651069, -2369211, -2507724,
+1650341, -2355790, 1112933, 1557999, 86436, 2933463, 1164473, -5575405, -673773, -712965,
+1751810, -6319508, -2030446, -1606318, 4454418, -1359894, -740345, -3417720, -903017, 219043,
+-321049, -1594507, 46171, -1036698, 1152125, 403190, 10201, 180926, 425202, -821949,
+-2349884, 1240709, 526134, -1357210, 652835, -744640, 281320, 285078, 843424, -194347,
+-281857, -595927, 540092, -978179, 918586, -1112397, -56371, -97174, 733366, -740882,
+-284005, -1073742, -615791, -991601, -7810398, -4358855, 3197603, -3422552, 9165997, 4029753,
+8973797, -139586, -4384088, -4676683, -6294812, 9576166, -2345052, 4373351, 4894652, 1009317,
+3446711, 3122441, 3048890, 1209570, -6323803, -365072, -2442763, -951872, 4339528, -397821,
+-386010, 3018288, 1911261, 3126199, -2747169, -9982578, -5950677, -3784940, 7348689, -6644315,
+-2007360, 4494147, -505196, 831076, -5566815, 9654550, 528818, -3769371, 7631083, -4693863,
+11820287, 6100464, -2665564, 1361505, -3365107, -2308545, -10885595, 3852049, -4957466, -777389,
+-423054, -2389613, 4669167, -1826435, -4750234, -4638565, 1082332, -4238596, -4658429, 2657511,
+417149, 3355443, -1816234, -9943386, 3438658, 4315906, 5561446, -5351530, -6011881, 780610,
+9859097, 1583232, -5085778, -2336462, -855235, 2699924, 501974, 2875481, -2888903, -1100585,
+-559420, -3565360, -2908230, 4379256, -717796, 1717987, -367757, -1247151, -2774012, -267362,
+124554, 1089848, -504659, 1013612, -705448, -2266132, -891743, -311922, -33286, -408022,
+1726040, 99321, 1867774, -620086, -109522, -284005, -1987496, -2684, 1066763, 1044751,
+7885023, -7255274, 3623342, 9255118, -6672769, 1830730, -3749507, -7276749, 10769094, 4022774,
+10008884, 9215389, 1359894, -7356742, -4494147, 3813931, -468688, 1588601, -7945153, 829466,
+-14125611, -5944772, -11016054, 6795712, -6253473, -230854, 2042794, -1828046, -2842195, 3340411,
+3368865, 9771587, -1347546, -2175401, -7472170, -6401112, 6260989, 1337882, 2170032, 11687680,
+-3520800, 75699, 6241661, -2799782, 2895882, 2137820, 6247030, 5598490, -3862786, -614717,
+-7919383, 8252243, -5401995, -7171522, -6871411, 4355634, -2535641, -3783329, 8151848, -2539400,
+8449274, -5194226, -3924526, -1084479, 5542119, 7152195, -520228, -7737921, 2816962, -4948876,
+10087804, 2079301, 5936719, -8104604, -3551401, 2161979, -2051921, 4872104, 745714, -2764348,
+2945274, 6459631, 9148280, 7031399, 132607, -1657857, -83215, 1514513, 168577, -1589138,
+1097901, -1339493, -195421, 2594697, 164819, -1286880, 2813204, -899796, -1457068, 721018,
+1001801, -58519, -1725503, 637266, -1180579, 243739, -2357400, -2947958, 759672, 1104344,
+-61203, 2276870, -802622, 1027571, 4663798, -12346420, 4294968, 3688840, 2447595, -9330280,
+7118909, 11783243, -11493869, 4388920, -7074885, 4643397, 606127, 4173635, -3420405, -241055,
+2692945, -7796440, -3893388, -3351148, 6166500, 6513855, -2151242, 3068754, -1607392, 4817880,
+6110128, 2405182, 1833414, -6197638, -2349884, -7743826, -8613557, -5996848, 559420, -2863133,
+-419833, -3578782, -8577587, -2887292, 1724966, 789200, -539555, 12967580, -10505490, 3878892,
+-5243082, -1500017, -3275450, -3289408, 5485210, -3274913, 399432, -3969624, -2677912, -4824859,
+6587943, -6068789, 5400385, -1403381, 5394479, -483184, 797790, -552977, 5213017, 3034395,
+-175020, 11246372, 423591, -5623186, 2936684, -5057324, -6243809, -7489886, 7267085, 2586107,
+6470905, 6629282, 7740068, 4570382, -959388, -1385664, -1427540, 7476465, -1122597, 8381629,
+1760937, -352724, -1304060, 2878165, 4240207, 1120450, 1727114, 592706, -593779, 838592,
+-1433982, 2256469, 75699, 1935957, -600759, 1837172, -224412, -2922725, 1423245, 2017561,
+-30602, 1641751, -545461, 95563, -1721745, 1417876, -434329, 695248, 3076807, 3102040,
+-12988518, -1032403, 1680943, -3008088, -10230612, 11696807, -762357, 426276, 9935870, -2787434,
+-10240276, 3601867, 6699612, 12686797, -822486, 5355824, 1091459, -11184095, -3290482, -5820218,
+5682779, 3230889, 2965675, -4194036, -770947, -483721, 1015760, -3791383, 5291937, 1457068,
+-4504347, 6544457, 917512, -7353521, -6171331, 1700807, 7928510, 7108708, -9953587, 19442780,
+-972810, 352187, 5345624, -788127, -2562485, -188979, 12498892, -6273337, 6178311, -1523103,
+8650601, 2595771, 7752953, -2962991, -6109591, 4294431, 6628745, -3304441, -7425462, -8077760,
+-7110319, -3226057, -1439888, 7387881, 178778, 6420439, -776315, -2130841, 6377490, -5577552,
+-10764262, -2869575, -6874095, -6476274, -11969000, 8921184, 7785165, 3196530, -18559628, 4358855,
+3907883, -1392106, -545461, -6476811, 8866960, 4538707, 3510599, 2166811, 8143258, -710280,
+-583579, 600222, -83752, 1891396, 923418, 36507, 2495913, -1504312, -337692, -1921461,
+557272, 645319, 2749853, -1924682, -302258, -756988, 2118493, -982474, 787590, 1253057,
+1695438, -1472100, 4068945, -11274, -125091, -1499481, 1588064, -2550674, 898185, 104153,
+-3725884, -874563, -618475, -7399692, -499827, 576599, 5389647, -7787313, 395137, -1194001,
+-3250753, -16176457, -1960116, 7652558, 5905580, 7841537, 906238, -8687108, 22981834, 9681930,
+15629923, 1647657, -6844568, -2714956, -2221035, -9736691, -615791, -3809099, 4897337, 47782,
+505732, -3103651, -4172561, -8227010, 2779918, 838056, 405874, 4283156, -352187, 1834488,
+-823023, -7141457, -5566278, 4366908, 26307, 10471667, -13195750, 10593537, 6480032, -4625680,
+-9540196, -14868640, 3153043, 11797738, -6018860, 11421929, -891743, -470836, 2619393, -3304441,
+-13225815, 1627256, 6257231, 2829847, -5742372, -1462436, -3600793, 2968359, 6419366, -292058,
+1642825, -825707, 6181532, -2720325, -2103997, 4261145, -3649112, 9767829, -2592013, -4875862,
+3620121, -8751533, -4483946, 124554, 3489124, -3763465, 1643362, -1335735, 1945620, 118648,
+2310693, 2054068, -779000, 1250372, -4165582, 2318209, -564251, -5575942, -1954210, -1537598,
+-3388192, 59056, 985695, -2574296, -1883343, -61740, -3569655, 320512, 915902, -714038,
+-3778498, 402653, -56371, -2790118, 1176821, 2180770, -2323577, -80531, 679679, 299037,
+1101122, 3410204, 2776160, -2789045, -2298344, 2561411, -17788144, 12727599, 11475079, 13552232,
+-4380867, -12084964, 4214974, 4859756, -18100602, -16432008, 15892990, 1742146, -7815230, 6028524,
+-11324755, -12836584, 1792612, 33440616, 15489800, 6207839, -9124121, 150861, -3280281, 264141,
+-3854196, -1858647, -4276177, 1204738, 9479530, 1888712, 11696807, -4649302, -3930969, 2149631,
+8161512, -1567663, -1224066, -17485348, -784905, -9847823, -566936, 13558138, 9631464, -3584687,
+9413495, 18814104, -8999030, 5434208, 15545634, -11446088, 16433619, -1373316, 6738267, -3906273,
+658204, -2226941, 2251100, 3818226, 16303159, -6262599, -2095944, 4248260, -7648263, 4803921,
+2491081, -4383551, -7451769, 16094316, -1097364, -8838506, -2952790, 9980430, -4227322, 6774774,
+-72478, 487479, -10644003, -11559904, -5586142, -9860171, -8936216, -9660455, -610959, -2302103,
+4680978, -606664, 831613, -881005, 5898064, 3765613, 410706, -7322919, 258235, -1370632,
+-5458904, -1556389, -2814814, 2862596, 1082869, -3722663, -1253057, -2854543, -2245194, -262530,
+2040110, 1997697, 2087354, 3585224, -2206003, 455803, 2248416, -1558536, -2148021, 2633889,
+-3708168, -1458678, -1139240, 1661079, 710817, 2667712, 466004, 273804, -1047435, -2679523,
+21697638, 3886946, 3074660, -11292006, -6532109, 562641, 2510409, 4384625, 5044439, -21524766,
+984084, 1351841, 15555835, 2479807, 3968013, -1484985, 14153528, -23113904, 725313, 11829414,
+-13748727, 3436511, 2714956, 11139535, 2208150, 1180579, -3766686, 352724, -11800423, 3997541,
+-2932926, 2088428, 3233574, -2029909, -8944806, 3275986, -7056095, -12317429, 6971806, -6966974,
+4594005, -11581379, -7276212, -1230508, -3568044, 2758443, -4896263, 12683575, -122943, 12093554,
+-12749074, -10802916, -3439195, 171799, -187368, -3760781, 10915659, 8887361, 22739168, -3651796,
+14555644, -8517457, -1429687, 4373888, -17209934, 19669340, -497142, 12244952, -453656, -17180942,
+-10322954, 7226820, -22958210, 11967389, 3336116, 17470316, 22057342, 2862596, -16296180, -12355010,
+-5059472, 12543452, -1500017, -3040300, 724776, -4600447, 698469, -3367254, -4918812, -1711545,
+-7931731, -391379, 386010, -3693672, -3294777, -4507568, -3187403, -1546188, 2025077, 3831111,
+1447941, -635655, 3521873, -2400887, -1314797, 816581, 1872606, 2237141, -2215666, 2830920,
+-2893734, -1366337, -4233764, -7431367, 4617627, 797790, -4206384, -4254165, -799938, -5898601,
+820876, 62814, 4397510, 11016054, 17063368, 5839545, -7018514, 16094853, -17290464, -1884954,
+-5290326, 2063195, 13864691, -12594455, 31208842, 4052302, 7753490, -9268003, -12547210, 4265440,
+135291, 26402774, -3770981, -9257802, -15111306, -10289131, 7409893, 4652524, 4345970, -1994476,
+-14874009, -23065048, 1752884, -13937169, 18462990, 2323577, 15000173, -9330816, 6291054, -6062347,
+7789460, 21539260, -3556233, -2365990, -3231426, 5567352, 7223062, 3621194, 1619740, 2157684,
+9419937, 8364449, -4824322, -7493108, -6640020, -7503308, 24757802, 9691057, -14461692, 11109470,
+-3259880, -11931419, -8475581, 4298726, 9088151, -16977468, -22028888, 2398739, -9814537, 28923384,
+15101642, -5042292, -3253975, 6076842, 13117367, 3282966, -2174327, -3916473, -19966230, -1001264,
+-4854387, -21787832, 8276402, 13619878, -2172717, 6791417, 3841848, 13893682, -7618735, -2121714,
+5063767, -2237678, -6245956, -7174743, -137439, -4356171, -10544682, -2244657, -4828617, 4555350,
+-2000918, -5913096, 4117263, 1562294, 644782, -3685619, 4109210, 1057099, -6593849, 2257005,
+2707440, -3163244, -9177808, -4606890, -1627793, -1053341, -50466, -3541201, -397284, -2640868,
+1347546, 1041530, -1746978, 369904, -71404, -2816425, -5657009, -807454, 1297080, 3278134,
+1755568, -4373351, -2739116, 1029182, -8122857, -13793287, 7967701, -4635344, 12035035, 5354214,
+-12809203, -5536213, -6425808, 2692408, -17292612, 11699491, 16588774, -6796786, 10391673, -2587718,
+-4416300, 7927973, -12076911, 7500624, 13499082, 3604551, 23196582, 11130408, -9545028, 9789304,
+4311611, 8593693, 525597, 12340515, 10917270, 16558173, 6393596, -6595459, -7676181, -10386305,
+-854699, 25728464, 679142, 10832981, -16122770, 33636036, -9875740, -26519276, -12367358, 21203180,
+1814087, -3056943, -2789581, -1653562, 15996606, -11748346, 9319005, -2463701, 20109036, 30422864,
+15840913, 14617921, -10715943, 17258252, 10623602, 10210748, 11933567, 17256642, -3478387, -30403536,
+-19306414, -22115860, 5848135, 7742216, 6421513, -5210869, 10388452, 26656178, 2014877, 1976222,
+6662031, -1602560, -23333484, -25352656, -8497056, 4915053, 2834142, -1178432, -14295262, 3571265,
+859530, 1088774, 7727720, -1774895, 4967667, 1549410, 9506373, -2457795, 6399502, -5049808,
+1271847, 879931, 11011222, 4884452, 10992969, 1119913, 5675263, -2042257, 1376537, 4544613,
+-2844342, -7158100, 1785633, -4308926, -7789460, -6371047, -1572495, -1823214, 10735271, 2110440,
+136902, -3315715, 1818919, -45634, -3645354, -4426501, -2997350, 2294050, 6925098, -955630,
+796716, 753767, 3204583, 2034741, -6931541, 4402879, 11159399, 13067438, 4746476, 6127845,
+10206453, -8047158, 23714126, 9331353, 4596689, -6779606, -18163416, -7350837, 9932112, -1005022,
+-25746718, 34674344, -12167642, -6815576, 10705206, 507880, -3447785, 2496450, -6720550, -8162586,
+-1763621, -18893024, 4682051, -20302310, 574452, -16098611, -18094160, -3651259, -3840238, -3990562,
+-13234405, 5791764, 14190572, 3782793, 10867878, -18846316, 18574122, 33805688, 3511136, -13604309,
+21141976, -17355426, -27452894, 45698988, -4682051, 3223373, -3175055, -20467130, 15780784, -18556944,
+8029978, 27913530, -551903, 38346540, -29936996, 28880970, 8429947, -19011136, -9944460, 3598646,
+-18240726, -9117679, 20332376, -19959250, 13242458, -13430363, 7350300, 21210696, -46618648, -20574504,
+21475374, -40040368, 14146549, 12382391, 22894324, 20214800, 9117679, -1653562, 13440026, 20050518,
+-21796960, 21758304, -401043, 7511361, -1143535, 6808597, 1771137, -4170413, 1508607, -6353331,
+-2071248, 1607928, -1122597, -10996190, 6912750, -1962800, 9002251, 5359583, -7762080, 6107444,
+7513509, 5428839, 2265059, 3878356, 2360622, 4949950, -15229417, 8519605, -1988570, -4179540,
+10829760, -8714489, -7062000, 3620658, -8993662, -7354058, -8862665, 4904316, -13435731, -40099964,
+-10435697, 13137231, 30958662, -9863392, 15632607, 424665, 7385197, 16031502, 10386842, 27766964,
+-7177964, 1169842, 7635915, -24616068, -15817291, -7348689, -7951058, 5645735, 427886, 2069637,
+-12814572, -2138894, -16967806, -13822279, 6649683, 34289408, 19749334, -9037148, -10968810, 16333224,
+19602768, -11685532, 5184563, 15056545, -5956046, 32796370, 11181410, 4802311, -25298968, 15600932,
+3227131, 12289512, -2580739, 3158412, -4159676, -5473936, -39898636, 10562398, 27625766, 13618804,
+3715147, -793495, 13942538, -22473954, -41447508, 3063922, 55005108, 13210246, 43642236, 41334228,
+574989, 3587372, -26277146, -23582054, -2487860, -20233590, 27564026, -60043104, 11368778, -22510460,
+-47904992, 10624138, 22468048, 47896400, 4329864, 2367601, -30507152, 9948218, 14462229, -21379810,
+-1959042, 1480153, 22429930, -6036040, -14249628, 33867428, 7215545, -12150999, -394600, -19659676,
+2632278, -18611168, -3704409, -678068, -9031779, 2784213, -7285875, -7829189, -4207994, -127238,
+-3655554, 6231461, 17624936, -1041530, 260919, 6499896, -15846819, -9665824, -1853278, 4760435,
+5091147, -13907641, -7776039, 10942503, 6549825, 3769908, 2718178, 11555073, -373662, 134755,
+1263794, -7912941, 1489817, -10405632, 29235842, 51306068, 1251983, 14089103, 9154723, -26816166,
+-7710003, 26946088, 8385387, 11936788, -6811818, 7903277, 4500589, -9418326, 348966, 14031658,
+14693083, 18103824, -8029442, -2115808, -39858908, -37226092, 5074504, -22979148, 725850, 20117090,
+4772246, 2480881, -6985228, -4362613, 12769475, 31428424, -22832046, -12970264, -3046206, -22025666,
+-1688459, -21224654, -6705518, -22538378, 19923280, -27332636, -2310693, 5036386, 13211319, 48063368,
+63883880, 16662326, -16896938, -34024732, -3091303, -23241678, -9241696, -36193688, 5350993, 35095788,
+25736518, 21102784, 2445447, 5191005, 35778152, 34927748, 25508884, -1991254, 16071231, 6069863,
+7900056, -41179608, 12370043, 4676146, -9604621, 25001542, 33718716, -4591320, -657130, -16492674,
+-70618928, -1257352, 20776904, -10139344, 48740900, 34793532, -16208670, 3337190, -18061948, 12254079,
+3283503, -6435472, -10844792, -4802311, -1087164, 7693360, 9350144, 14553497, 318364, -8590471,
+-18896246, 1202054, -8959839, 7289097, -8460012, -11360188, -2944737, -2866891, 8427800, 3677029,
+-3315715, 4591857, 2379412, 3667902, 750546, -6408091, -10478110, -5150740, 3835406, 8819715,
+-842350, 7214472, -176094, -10298258, -10921565, 3134789, -13346074, -7348689, -57445, -5709086,
+-1709934, 3852049, 5348845, -4824859, -12460774, 31922344, 22778896, -15224585, 15429133, 23709830,
+2685965, -29725468, -35461936, 33123324, 11289858, 7655243, 26097296, 569083, -11348377, 27988154,
+7391102, -21254182, -10766409, -7714298, 9463960, 575526, -12706661, 4902705, -14057965, -1430761,
+-6334003, -6865505, 19091130, 35537632, -12088185, 7356205, 16775069, -8350490, -7135552, 6851010,
+20265266, 6454262, -15520938, -19696720, -23655606, 12681965, 13368623, 32251984, -15267535, -14518600,
+11359652, 19204410, 30114164, -882079, -55706264, -11959873, 17999672, 17893908, 8096550, -10917270,
+-386010, -22321482, 3380139, -9667435, 23199266, 33174864, -10011569, 694711, -19423452, -21111912,
+-8109435, -42719356, -8563628, -21737904, 18951544, -17405354, 19658066, 24317568, -49372260, -4161287,
+-20877300, 21122112, -8684424, 7423851, -15343771, 2469606, -13067975, 14536854, 16253230, 27989228,
+27075474, 13365401, 26050050, 12041478, 1563905, 13729937, 8871255, -3927748, 11603391, -12917651,
+6219650, -6627672, 5385889, -16273094, 9629854, 35433, 7627862, -11997454, -6787659, 7708930,
+-3119757, -4056060, 13975824, -11054709, -2528662, 11264089, 5590437, -7658464, -2405182, 4555350,
+25790204, 13793287, 11241003, 15139760, 1028645, 16462610, 5565204, 4987531, 8638253, -65498,
+13865765, 3767223, -23866596, -11230803, -6379637, -11727408, -16201690, -26793616, -6073621, -14905684,
+-27178554, -41064720, 20088098, 21264384, 12539694, -27438936, -37344740, -28675886, -16259136, 6732898,
+-1219234, -36371932, -21703544, -24924232, 35325568, 10997264, 15406048, -11102490, -20062866, 44762148,
+11103027, 13969381, -8525510, 2662343, 13270912, -9141301, 10560251, -3283503, 21398600, 30171608,
+1388348, -24319716, -19468550, 23906324, 16443819, 20944944, 6128919, 5270462, -10697690, -4705674,
+3556770, 14646912, 31692564, -239444, -58819576, -54595476, 910533, -13316546, 35492536, 36011152,
+-39887900, -27003534, -16684874, 49859200, 44536664, -24002424, 7254200, -31443456, -30176978, 18546206,
+-13781476, 251256, -4470524, -21792664, 15809238, 16101296, 12960601, 50525460, -36764384, -9868224,
+-3204046, 13019656, 4336307, 20846698, -73593192, -42818140, 15701327, 23270132, 23138600, 6601365,
+-24103894, -24806658, 718870, 14849313, 42973832, 10496900, -13895830, 4499515, -27314918, 17274358,
+15255187, 1000727, 24236500, 51366200, 12643310, -37459632, -19364396, -2522757, 4685273, 24887724,
+21879100, 10344966, -10943577, -4458713, -7410429, -8723615, 22683870, -2455111, 2460480, -8698919,
+22028888, -9836012, -3727495, -367757, 19194746, 8426189, 7126962, -3750043, -23118736, -8212515,
+8144332, 19062676, 3740380, -25916906, -35806604, -29993368, -206158, 4699768, 6138582, 3969087,
+49425948, -32813014, 30838402, 30768072, 19640886, -71599256, -28770912, 24052354, -19480898, 13940927,
+-5122822, -29703994, 19053012, 5794985, 5676336, -13095892, -47438452, -4435628, -1449552, 242666,
+-6773701, -34497716, 25834766, -21293374, 44123808, -4594542, -3859028, 21559126, 16003585, -21032992,
+-1957968, -15905338, 23576150, 37204080, 28266790, -31259846, 7022809, -20896626, 18900540, -18141942,
+-7475928, 3165928, -1595580, 20252918, -18543522, -43428024, 11187316, -15488726, 16243566, 17032230,
+-55048060, -9271224, -10499584, 2080375, 60956860, -16363825, -44362180, -11716134, 38743288, 18673980,
+-24024974, -7812009, 24034100, -27380, 29672318, -44557064, -23574002, 26931592, -28016608, -67973224,
+-20074678, -9201431, 77653544, -21111912, -40119828, 21420612, -46283640, 122176784, 11562589, -113368880,
+-30205968, -19958176, 80524192, 43666932, -50622096, -26645978, -657667, 59585692, 47456168, -7325604,
+-37314140, 14698452, -12623983, 53746684, -5196374, -26884884, -22321482, 35233764, -28139552, 18292802,
+-53884124, -171262, -2064269, -3068217, -3163780, 11397233, -29831232, 28958280, 2397129, 21258478,
+855772, -33960844, -26140244, 19452980, 22935126, 36099200, 13449690, -3606699, -23523536, 3204583,
+5853504, -6144488, 1542430, 23682986, 3676492, -1054415, -26909580, 5241471, 19115288, 7125888,
+788127, -7808788, -19353122, -65553012, 18389976, -1058173, 22408454, 54184232, 17386028, 7450158,
+-30533996, -12688944, -30515206, -36579164, -12230993, 7173133, 20915954, 27640262, -3083787, 16069083,
+19501300, -16987670, -34390876, 18209588, 6564321, -27980102, -9489730, 26543434, -9025874, -2994666,
+24320252, 13603772, 10818486, 3361886, 13830868, -13249974, -31948114, -13922673, 9118752, -13120588,
+-7542500, 11682311, 795643, -22538378, 23476828, 5040681, -20839718, 2646237, -5022965, 20169166,
+11251204, -8176544, 9495099, -12475269, -28009092, 3728569, 6826851, -2573222, 74088, 5901822,
+-12232067, 3843996, -10473278, 6265821, 19996294, -2145873, 8744017, 9217537, -7723425, 474594,
+-19071802, 6503118, 11258183, -34692060, 20131586, -21646636, 6823630, 979253, -96100, 9528385,
+3872987, 22602802, 4132832, 6373195, -3266860, 11551315, -12162811, -8035347, 2805688, 1912871,
+-10642929, 3807489, -948651, -3124589, -6147172, 2166811, -1211718, 12216498, -3136937, 1430224,
+8770860, -6188511, 6094022, -3826279, 2138894, -6194417, -5371394, -6187438, -1617055, -2804614,
+4632122, 3265249, -14354318, -3966939, -4194036, 9951976, -5923834, 3692598, 1716913, -16037408,
+5320391, 10331007, 681289, -3947075, 1730335, -4752918, -2369211, 53062712, -1931662, -1765768,
+-14733885, -14492293, 10923176, -644245, 9456444, 162672, -5185636, -7016903, 3596498, -9820980,
+9954660, -9249749, 14504105, -11741904, 8451959, -9940702, -2211908, -1613297, -9245454, -7082401,
+2091112, -4188130, -2919504, -85899, -6951942, 904628, -1380832, 2201171, -1634772, 4039417,
+-13937706, 12680354, -4771709, -4175782, 9622337, -7738458, 515396, -9660992, -8449274, 6135361,
+5418101, -6792491, -4381404, 2717641, -438624, -11811160, 3019362, 2063195, -11274, 7736310,
+-2876018, -3339874, -3184182, -8067559, -2194728, 8443369, -8993662, 2307471, -4362613, -1114544,
+572304, -2741800, 1978906, 42950, 5905043, -8595840, -746251, 5540508, -11094437, 6456410,
+-4999879, 69256, 5063767, -2463164, -5057861, 2282775, -900333, -1453846, -379031, -3613678,
+-95026, 3743064, -249645, -1765232, 650688, -3131568, 2158221, 1576253, 916976, -2529199,
+-761820, 3243237, -4155381, 4138738, -1902671, 1798518, 4600984, -5548561, 1319092, 370441,
+-7000797, 1269700, -2234457, 2878702, -998043, 207769, 4233227, -2798708, 808528, -4506495,
+768262, 646393, -1130113, -1090385, -547071, -1627256, 311922, -824634, 178241, 3115999,
+-4567698, 1991791, -24917790, -42071352, 15599858, 134742784, 33703684, 74294344, -2939905, -72384696,
+-23528368, -71231496, -60878476, -21531208, -14697915, -4994510, 40325448, 54178864, 71619120, 90486368,
+39031588, -23211078, -41968272, -88926224, -84546968, -34493956, -28285044, -18869938, 36458368, 49733036,
+29701310, 46104328, 55294484, 18677740, 15121506, 10293426, -28742994, -13253195, -20601348, -44813688,
+-24767466, -33312304, -49348100, -26882200, 6044630, 5217849, 27468464, 66728224, 45624364, 37962680,
+36983428, 11339251, 2673617, -3862786, -19291920, -27497992, -34785476, -49700824, -43947716, -24603720,
+-7763691, -16833588, 13779329, 25659746, 21796960, 37652904, 41984916, 26928908, 24391120, 23833848,
+-3791383, -11799886, -5958731, -34308736, -28424094, -7332046, -28135258, -30109332, -19083076, -27092654,
+-13190918, 7634841, 17203492, 31152472, 50001472, 30964030, 28713466, 31755914, 11715597, -3879966,
+-5873368, -17193828, -28355374, -29469918, -28071906, -30815854, -21428666, -19755238, -16398722, -6837051,
+7608535, 18880140, 29344290, 44281648, 46665892, 45452028, 38643968, 12141873, -10161893, -20864952,
+-33481418, -44344464, -50033684, -50003084, -39577588, -22399866, -5398774, 13573170, 40905804, 45449880,
+45578192, 47685412, 39457864, 20635170, 6519224, -11373610, -31998044, -44806172, -39498128, -37031208,
+-29146722, -13701483, 1115081, 10712185, 21919366, 24741696, 24450176, 19325742, 8734353, 3875134,
+1481764, -3832185, -4310537, -4444218, -5719286, -7172059, -5539971, -7909719, -5350993, -4576825,
+-3178276, -4049617, -1530619, -928787, 1657321, 1683090, 3795141, 3054259, 2889976, 344671,
+848793, -466541, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
3117610,
-3112241, -2801929, -496069, 4461398, 1465121, -2306934, 481036, -2548526, -2270427, -1824287,
--3999152, -1387811, 2437931, -195421, 1350230, -672699, -1133871, -1107028, -485868, 3362423,
--2123861, 211527, -151934, 148713, 2667712, -85899, 1835025, 5850819, 4560719, 4588636,
-2376728, 1043140, -740345, -5404680, 2219961, -2015413, 3468186, 1233193, -1835562, 1635309,
--2414309, -4684199, -1444720, -1808718, -4438849, 192200, -545461, -631360, -2079301, 286152,
-4632659, 2057826, 3148748, -45634, 1936493, -1807108, -130460, 2426657, -2001455, 1626719,
--2481417, -2637110, 268972, 5457830, 3593277, 2098092, -1060857, 915902, 585189, 319975,
--984084, -2090039, -3202435, -2318209, 73014, -1984275, -993748, -2136746, 709743, 330712,
-1108102, -627065, 911607, 1292785, 1059783, 142808, 665720, -487479, -533650, -12885,
--1333051, 1409286, 1153736, -130460, 1457605, 433792, 293668, -653909, -414464, -836982,
-280247, 475668, -15032, -260919, 503585, -318364, -1236951, -345745, -827855, -45634,
-242666, 309775, -1295470, 236223, 1999844, 1028108, -3454764, 8158827, -177167, 491774,
--865436, -4310537, 3183645, -2250026, -2155537, -5023501, -3871913, -1630477, 3114388, 4479651,
--911070, 2647847, -1035624, 4859219, 5042829, -10080288, 1840394, 42950, -992137, 3403762,
-5356898, -1660542, -787590, 102542, -336081, -2566780, 2101313, -2587718, -2046552, -215822,
-2679523, -1527398, -5674726, -2526515, -3860639, 443455, 333934, -5039071, -606664, -2203855,
-1034013, -158377, -769873, 1227824, -1687922, 1698123, -2708514, 2636573, 3860639, 5937793,
-2457258, -2608119, 2118493, 2485712, -948114, -6742025, 425739, 3496104, -2719251, 2011655,
--3918621, -54224, -2506650, -6849936, -2099702, -3587372, 1717450, 2531346, -2324651, 1079111,
--1102733, 3216931, 235686, 1879585, 2686502, -1164473, 1097364, 536334, 1122060, 2316598,
--566399, 775778, 2889439, 1642825, 369367, 1725503, 287226, 739271, -147640, -51540,
--1607928, 830539, 971736, 1307281, 872952, 284005, 395674, 28991, 471373, -221728,
--474594, -137976, 1038308, 887448, 243203, 793495, 156229, 919660, 766652, 6669548,
-1837172, -9086540, 3231426, 4647155, 1708860, -798327, 2374043, -5713917, 811212, 2516851,
--1272384, 2433099, -384936, 2966749, 722628, -3862249, 2422362, 3506304, 3479461, -1024350,
-1663226, 1888175, 1321239, -10289131, 1443646, -4387309, -1294396, -1468342, 2399813, 1097901,
--8386461, -3034931, -1879585, -1606855, 3409130, -3138011, -5869610, 1432909, 2718714, 1679869,
--5840619, -2761127, 1868848, -5527623, -447213, -6106370, 892279, 2971044, -3124589, -966368,
-3482145, 4422206, -10355166, -782221, -2878702, 3118683, 1280974, 499290, 892279, -2932389,
-2633352, 2262911, -8042863, 6157910, -831613, 1501628, -4105989, -1734093, -3473555, -451508,
-899796, -3238405, -4472135, 3946538, -1444720, 1614371, -226560, -828392, 1145146, 1326071,
--1635309, -4154307, 2296734, 2064806, 525597, 945967, -135291, 289910, 684510, -55298,
-681826, 456877, -98784, 1566053, 220654, 1193464, 1441498, 57982, 2034741, -80531,
-392453, 524523, 907849, 708670, 1008780, -1553168, 686121, -720481, 300648, 650688,
-488016, 1173600, -421444, -389768, -4362076, -4093104, -3404299, -2157147, 6780680, -2368675,
-921271, -5509370, 5839545, 392453, -3964792, -1041530, 3381213, -7055021, 2390686, -2080912,
-1585917, 1140851, -3235184, -2291365, -8397735, -2257542, -9457518, 1225676, 2126009, -1012539,
--1290101, -862215, 1422708, -3697967, -6743099, -3129958, -2483565, -1038845, 2469606, -1551020,
-4007205, 1783485, 3069828, -4175245, -240518, -205622, -3498251, 971200, 2747169, -272194,
--1747515, -4093104, -3792456, 2551211, 3808562, -122943, 7546795, 5990943, -5415954, -1376537,
-8053, -5708549, -6538014, 9872519, -167504, 271657, 3089692, -6273337, -2070711, -4064113,
-9742060, 2634426, 499290, -7762617, -6171331, 828929, -2547453, 5037997, -2592013, -55298,
-1374390, -3046743, 1098438, 3040837, -4574677, 50466, -7290707, 795106, 2734821, -2103997,
-1057099, 875100, 3564823, -512175, 566936, -705448, -144955, 1546188, 1582159, 1484448,
--1106491, 474594, -77846, 666257, 42950, 652835, -1069984, 2298881, 13959, 659278,
-341987, 725850, 534187, 664109, -619012, -596464, -525060, 506806, 1537061, 1817308,
-317291, 824097, -1504312, -11388643, 5701569, 3231426, 5813775, -3117073, 3187940, 3334505,
-5974837, 1418413, -11367168, 2843805, 493384, 4523675, 8256538, 438087, 3587908, 3144453,
--6805913, 2396055, 634045, 947040, -1847373, -942208, 4228932, 2804614, 175020, -4161823,
--47245, -1983738, -2153389, 6816113, 3150359, -281857, -909459, -8228084, -7058779, -8083129,
-2154463, 2189897, -8380018, 599148, 570157, -8302709, 524523, 1286880, -1108638, 9551470,
--1175210, -4688494, -1178969, 5486821, -452045, -8501888, 9243843, 4792110, -5879274, 4501663,
-897111, 867583, -151934, 521839, -2283312, -4268124, -4041564, 7391102, -490163, -2154463,
--343061, 5316633, -4922033, -8691940, 311922, 1983201, 1631014, -7597261, -3935801, 2929168,
--683437, 4251481, 1619740, -1347009, -1270237, -1158567, -603980, 150324, 6752763, 3937411,
-2441689, 2163053, 2610266, 3934190, -1878511, -625992, -2129767, -646929, 748398, 195958,
--1178969, -1900523, 1984812, 304406, 894964, -31139, -1214402, 435402, 1048509, -2401424,
--408559, 1924145, 415538, 114354, -883153, -264141, -574452, -1042603, 257161, 975494,
-777926, -703301, 793495, 68719, 3410204, 13167296, 3894462, 10564009, -11620571, 463320,
--5748277, 202400, 3829500, 4457639, -5981816, 2621004, -3474629, -3038689, -4165045, -6720550,
--1010928, -15852187, -173409, 5257040, -722091, -1064078, 1722819, -8309688, 2908230, -7924215,
--2528662, 8192650, 1634772, 2837900, 172336, 2421825, 6951942, 6324340, 12128451, 6326487,
--9210020, -751082, 10214506, -1418413, -7511898, -1124208, 928787, -3408057, 6837588, 5097590,
--5912560, -1706176, 6556805, 7015829, -2513093, -4434554, 11077794, -4558034, -14979235, -10093710,
-3277597, -15032922, -318901, -4489315, 55298, -1381369, -4224637, 5652714, 1593970, -1456531,
--4936528, 4320200, -2964601, 7995619, 5434744, -2164127, -5307506, 1152662, 2069637, 759136,
-282394, 1903207, -1118302, -5849746, -1715839, 8185134, -961536, -3304977, -899259, -1698660,
--4237522, -4083977, -2289755, -1953136, 469762, -20401, 4076998, -339302, -1490354, 592169,
-1449015, -965294, 840203, -1389959, 2767570, -71404, 1694365, 273267, -2690260, -253403,
--304406, -2793339, -772557, -1692754, 1267015, 101469, -446677, 984084, 420370, -263604,
-488553, -3126199, 670552, 915365, -12826920, 6088653, -1129040, 3261491, 4254165, 6956774,
-1559073, -6072010, 8287140, -3058017, 3690451, -3678103, 3075734, -534187, -15067819, -3092377,
--2575370, -1743757, 1035087, -3588982, -2485176, 2045478, 3310883, 1172526, 8144869, 3788161,
--7866233, -547608, 20938, -4399121, 9370008, -5567888, -5410585, 9895605, 10391137, -1256278,
--117575, -6430103, 2336462, 1442035, -3367791, 1760937, 6437619, 4010426, 7740605, -1887101,
--6070937, 3816615, 907312, 1896228, -7237020, -3714073, -4250407, 1744831, 4148402, 1555315,
-1112933, 7471633, 8913131, 1367947, -4231080, 5109401, 4157528, -6242735, 880468, 1127429,
--715112, 771484, -140123, 5357435, -578210, -4117263, 2121714, 7050189, 3120294, 4154844,
-8691940, -5887327, 1061394, -1978906, 8248485, 4759898, 8834211, -4214974, -1127429, 1505386,
--3135863, 496069, 872415, -965294, 10737, 2083059, 2366527, -849867, 1294933, 954020,
-3068217, 2739652, -359167, -192200, -1374390, 428423, -1384053, 768262, -2440078, 2459406,
--35433, -901406, -31675, -167504, 102542, -824634, -1897839, 2733210, -330712, 484794,
--3004867, -2432562, -658741, 2627983, -267362, -237297, 260919, -259309, 5373004, -11148124,
--6640557, 4408247, -2584497, -10414222, 5309654, -5457830, -4728222, 6688338, -2012729, -2238752,
--1641751, 1711545, 4989679, 2560874, 2695092, 2729452, -4113505, -2492155, -838592, 6024229,
-3135863, -10641855, 3406983, 3294777, -4431333, 9976672, 9194988, 4917201, 380105, -3648038,
--2326799, 519691, -3091303, -3754338, -6128919, 877247, -7000797, 5084168, 1987496, 45634,
-1139777, 2675228, 2356863, 5443871, 8549669, -3246995, -13471165, -2370822, -9164386, 3151969,
-1304060, -12239583, 4466229, -5148592, 15381888, 5077188, -9635222, -349503, 9799505, 5073430,
--7970923, -4786204, 10251550, 5848672, -7057705, 8708046, -7243999, -9621264, 1523103, -14558329,
-8813273, 9420474, -2126546, -8771397, -1530082, 3419868, 1819992, 1445793, 923418, 6744710,
--9464497, 3039763, 10632192, 156766, 409633, -9349607, 4687420, 2585034, -8566849, -2171106,
--4301947, -2082522, 386547, 2671470, 2204392, 281857, -2544231, 239981, -2728915, 1126355,
-1703491, -379031, -1293859, -953483, 1747515, 512712, -493384, -1480153, -2721399, -344134,
--2655364, 5375689, -5012227, -43487, -483184, 2041720, 1452236, -2949569, 944893, -936303,
-4651987, -610959, 1356136, 101469, -2585034, -296353, 2948495, -31675, -8721468, -6441914,
-206158, -10472204, 31139, -24622510, -7750269, -2830920, -13455059, -4712116, -2818036, -5899675,
--4560719, 3211562, -6485938, -12313134, 3278671, 7727720, -12577812, -3476776, 3875671, 6314139,
-10849087, 6927246, 6390375, 7011534, 2534031, 12426414, -7395397, -3164317, 2630131, -6148246,
-2338610, 3522410, 6503654, 855772, 10635413, 2235531, 2621004, 7344931, -3246995, -6296959,
-111132, -9654013, -6176163, -11143293, -469225, -512175, -14653355, 5283347, -6640557, 2998961,
--13841069, 1656784, -10475962, 15626165, 781147, -13928042, 16709570, 20473572, 5743445, -6862821,
--5090610, 5312338, -1789391, -676457, 6041945, -9778030, 6362457, -10099079, 5338645, -4027606,
--5698885, 2405182, 5361193, -2921652, -321586, 6299644, 1640678, -3115999, 3535295, -1563905,
--5791764, 752693, 5383742, -1045288, -2148021, 2136746, 1554778, 4388920, 864899, 141197,
-1879048, -1485522, 3049964, 764504, 2522757, 867583, 2000381, 1619740, 1628330, 1311576,
--1900523, 2105071, -2550674, -2362769, 210453, 1376000, 436476, 681826, 1501628, 991064,
-97711, -835908, -1924682, 6979, -2022930, 5326297, -2674691, 4798016, 7240241, 1066226,
-6681896, -3778498, 10444824, -8122320, -7565585, -19903952, -4425427, -10321343, -24285356, 6091338,
--14005888, -8505109, -11294153, 3097745, -21879638, 5848672, 1773822, -4203163, -500364, -6293738,
--2237141, 5241471, -7469485, -5316633, 270046, 3994320, -6537477, -509491, 7459285, -12006044,
--2798708, 7000260, -6685117, -411243, 39192, -1902134, 10120554, -8875013, 6000606, -4039417,
-8227547, 8702141, -8883066, -11833709, 11045582, -1199370, 2386928, 2891587, 970663, -2541547,
-6209449, -3380676, -13707925, 3568581, 2762201, -11855183, -1349694, -4243965, 7099581, 8672613,
-4269198, 1462436, -3437585, -8421894, 8593156, 5330055, 7683160, -528818, -12164958, -2837363,
--1856500, -5296769, -3018288, -1413044, 3482145, 5412196, -4714264, -3980898, -12087112, -5721434,
-2303176, 4983773, 1320166, -1015223, 5500780, 5217312, 3092377, 6404870, -1989107, 5026186,
-2251100, 3442953, 554588, 57982, -3350075, -2523830, -633508, 1633698, -814970, -2808909,
--3570729, -92342, -607738, 772020, -2436320, 599148, -2900714, 935229, 4786741, 1123671,
--2780455, -2794413, 6098854, 3526705, -781147, -326954, -7769059, -831613, -114354, -6511171,
-144418, -2611340, -2056753, 1610613, 2017024, 545998, -776315, -5984500, 29561186, 17069810,
-1137630, -9383967, -22384296, -2729452, 10408316, -4902169, -9043591, -16783658, -980863, -3622805,
-542240, -5758478, 5382668, -95026, 14612016, 5792301, -6157910, -435939, -2657511, 1105954,
--3063922, 3025268, 9041980, -10644003, 2019708, -6416145, 4189204, -4571993, -7797513, -15166066,
--1264331, 8673150, 2869575, -1899449, 3162170, -1129576, 8237748, 13089450, -4609037, -2989834,
--15209553, -16451335, 4507032, 2435247, -6995428, -6019397, -13700409, -9394167, 5370857, -1776506,
--15569, 690953, -1098975, 6237903, 3529926, -11249593, 429497, -10252624, -933082, -5532455,
--3224447, 10880226, 22396106, 36958732, 1351304, 11886859, -11194295, -14207752, -20002200, -1054415,
--110059, 4044786, 4188130, -2731599, -25273736, 10472741, -4330938, -3484292, 1546188, -6616934,
-719944, -3598109, -10321343, 128849, -4155918, 97174, 984621, 394063, 7257958, 1060320,
-791348, -392453, 261456, -304943, 3093987, 6882685, 1995012, -242666, 1431835, 6241125,
-130997, 80531, 2309082, -2064269, 736050, -5702106, 1912871, 2988760, -5400385, 5487895,
-293132, 481036, -1625108, -5961952, -1959579, 2678986, -8590, -599685, -1525787, 214748,
-10821707, 18009872, -8901320, 22549, 3475702, -14709726, 148176, -9501541, -9184788, 13834627,
--4063576, -3488050, -7430831, 15889232, 13985487, -16643, 22969486, 2570001, 7181186, 5039608,
--6389838, -7511898, -11940009, -6308233, 2809446, 96637, 10298795, 785442, -1112933, -1890323,
-7279970, -10524817, -25669946, -9019968, 7582765, 2357400, -2100776, -7669201, 464930, -12373264,
--1847910, -11274826, -769873, -1429150, -7923141, 7582228, 3784403, 14419816, -11920145, 22348862,
-6012954, -4373351, -7909719, -4087198, 3531537, 12882218, -3964255, 7361037, -11395085, 9191230,
--10347650, -11676405, 11497627, -16689706, 10930155, 9153649, 17735530, -18076444, 13725642, -1737314,
-12236899, 4751308, -18965502, -3345243, -4452271, 5264020, -10061498, 29840360, -1465121, -10572062,
-4240744, 13775571, 9380209, 6437082, 7131793, -971736, 3399467, -1251983, -3955128, -2550137,
-1056025, -163746, -3923453, 1095754, -1150514, -6090801, -1255741, -2347200, 2551748, 3161096,
-1743757, -871342, 5900212, -993211, 3267396, 1269163, 4176319, 1531156, -2103460, -2662880,
-719944, -352724, 2881386, -1206349, 280784, 2400887, -1473174, 4140885, -1971927, -2352032,
-1174137, -1775432, 4374961, 1535988, -1273458, 1286343, -12487617, -16750909, -34305516, -10536629,
--20145544, 5608154, -920734, -6870337, -9979893, -9505836, -8588324, -9312026, -9118752, 943819,
--7436199, -1351304, -16156593, -24792162, 30344480, -9476308, 16436303, -3162170, 4233227, 5221607,
-8852464, 5827734, -1565516, -520228, -13124883, -2988224, -3138547, -8839043, -13766444, 5341866,
--1574106, 19401978, -13478681, 327491, 26851598, -6509023, -22362284, -7237020, 856309, -10156524,
-15695421, 7192997, -8670465, 6344204, 8414378, -5245766, -209380, 4208531, 10476499, -432181,
--10397042, -10236518, 12543452, 8955544, -6656663, -14388140, 9108552, 10546829, -9501541, -12954158,
-8996883, -16416439, 31271120, 6686727, -2611340, 1225139, 7607998, 1675037, -5570573, 452045,
-2193655, 11191611, -7439420, 2194192, -22317724, -20106352, -2304250, 1135482, -2252174, -9792525,
-7016903, 16489990, -530428, 4176856, -1624571, 3470871, 4933844, 5903433, -6473590, 7110319,
--3393024, -1981054, 4680978, 8766565, -2688113, -8948027, 2449742, -896038, 1399623, -886911,
--4841502, -1403381, -5003637, -3131031, -6157373, 6165426, 6309844, -3923990, -99321, 7603166,
-2346663, -3347390, 1515587, 9543417, 6239514, 6855305, 6903086, 6092948, 2197950, 8734890,
-4558034, 3582003, 3173444, 8264591, -12912819, 27917, 4774393, 3672197, -8462696, 20390358,
-14376866, 29351270, 16209743, 10930155, 4247186, -25670482, -2120103, 3500935, -15137612, -4026532,
-29021094, 2232309, -16850768, -16598975, 15022185, -22873922, -5960878, 1009854, 6100464, 2633352,
--4394826, 7433515, -10364830, -13422, -2128156, -6504191, -1474784, -4526896, -14984067, 7875360,
--12996034, 7596724, 6717329, 8841727, 1547262, 5860483, -5473936, 24154896, 3175592, -25650618,
--22624278, 2070174, 10047002, 19632832, -6554657, -15409269, -6914361, -2041720, 2124935, 11528766,
-2413772, -9096204, 26466126, -32569810, -5527086, 6164889, -22767084, -11737609, -6074695, 3346853,
--36829344, -17388712, 26169772, -9970230, 7552163, -8551280, -29772714, -11227581, 14141180, -4387846,
-5424544, 9069897, 18606336, -8950175, 1921461, -5622649, 11589969, 5298916, 4901632, 721018,
--624381, 274341, 10065793, 5209259, 5884642, -1628866, -399432, 3738232, -7030862, -6334540,
-2553895, 11783243, 5375152, 4539244, -11745662, 6739878, 21447456, -177704, -431107, -8381629,
-5661304, 882616, -5242008, -6828998, 695248, 6319508, 7296613, 5337571, -6922951, 4398584,
--4725001, 5002027, -8868571, -4871567, -1991254, -4671314, -5870684, -1844152, -14313515, -13485124,
-1920387, -1107028, -2488934, 4602595, -456340, -1453846, -176094, 4552129, 15224585, -6714645,
--47055124, -12598213, 2956548, 12864501, 13244069, 11370389, 12129525, 20935818, 38648264, -22345642,
-16353088, -5941551, -416612, -6021544, -31228708, -23920820, -4211753, -1797444, 7027640, 11979738,
-16422881, -5454609, -279173, -8690329, 322123, -1857573, 90194, 16304233, 9166534, 5197448,
-13064754, 14814953, -26378078, 12836047, -15230491, -19996294, -5570036, 12315819, 3882651, -13622026,
-4612258, 1249299, 9717364, -1263257, -25640954, -18891950, -21227876, -21712134, 3016678, 17328046,
--3098282, 63722284, -41689100, -31935766, 19498614, -5999533, -12657269, -4683662, -3318399, 350040,
--39058968, 3789772, -2707440, 5043366, 30169998, -2446521, 10650982, 11247982, 14461155, 48959944,
--18165564, 62001612, 17482128, -2039573, 8341364, 3234110, -25482040, -23046258, -281857, -5914707,
-3328600, 9288404, 7787850, -4787278, -21836150, -18455474, 7372312, -12568685, 8079371, 8329552,
-19583440, 18516140, 17441862, 2996277, 6175626, -635118, -708670, 12379169, -1960653, -1504312,
-4236449, -18851148, -4238596, 7406134, 147103, -2260764, 11930882, 4058744, -17029546, 11461120,
--9448928, -13822279, -7318625, -4562329, 3507915, 5179194, 6029061, -7575249, 8638253, 3150896,
-5626944, 1960116, 7354595, -3380139, 4527970, -11554536, -2121177, -28176060, 10267119, 44988708,
-1320703, 46948288, 24839944, -2930242, -18136036, 52952116, 7986492, -9029632, 6885907, -12190728,
--3537443, -1934346, -3238942, 6570763, 14823543, 10177999, 1971927, 6665253, -10634339, -10448582,
-3232500, -3299072, 17450988, 18747532, 12048994, -5033702, 1203128, -23171348, -14421426, -4457103,
--15774878, -25062744, -14805289, 11646878, -14442364, -44069584, -20282446, 13182328, -17721572, -12729209,
-627602, -3457449, 20635708, 30104500, 39873404, -21364242, 11336029, -555125, 1308891, -8840116,
--26374320, -52894668, -34653408, 17996450, -35115116, -18692234, 9578851, 17561048, -13007845, 19835770,
-57707716, 11862163, 11181410, -43912820, -58496380, -12962748, -18212272, -31508954, -8913668, -26374858,
-18611704, 10294500, 52310016, 21264384, -6063957, -10886668, -18177912, 12063489, 23766202, 47082504,
-33141042, -23123568, -47892108, -23701240, -15288473, -28656558, -5301064, 23827942, 11563126, 29544544,
-1261647, 20906290, 8438000, -7248831, -8973260, -10606422, 5742372, 12631499, 3195993, 16531866,
-21023328, 12371116, 14974940, 6548215, 22702660, 19623168, 771484, -806917, 9917616, 22185654,
--2281702, -6441914, -3455301, 18853296, 5843840, 502511, -5806259, 11621645, 9162776, -3387656,
-7587597, 9096741, 4638028, -2535641, 2007897, 6371047, 750546, -11464341, 24106040, 47805132,
--25517474, 36192080, 29050622, -4895726, -7565048, -16487306, 4835060, 32249298, 23928874, 37853696,
--16711181, -7744900, -7932268, -2594697, -10410464, 9717900, -12748537, 27700928, 11687143, -46186468,
--20023674, 124017, 6699612, 19556060, -9680319, -17644800, 4948876, 5144834, -7592429, -8851391,
-4945655, -13326747, -20222854, -9348533, 43060804, 17655536, 7111392, -22226992, -7319698, -18900004,
-10671920, 20727512, 6845104, 1131187, 12182138, -7618198, 27401354, 15426449, 1425929, 8919036,
--1226213, 54475216, 11096585, -23549306, 8697846, 9216463, 5246303, 12151536, 519691, -22478786,
-26173530, 5580773, 4327180, 10118406, 4609037, -260919, -16540993, 18640694, 21296596, 10900627,
-61481920, 43639016, -23853174, -47808356, -33501282, -3474629, 3970161, -5061082, -40652940, -20271172,
--14524506, -16847010, -16764331, 14871324, 11636140, -4423280, 2367601, -3791919, -22822920, 6388227,
--4312684, -1391033, -23375896, -22503482, -4140349, 9360344, 10995653, 1252520, 11734388, 4954245,
-14834817, 2059974, 2894271, -25469156, -15162308, 10714870, 2871723, -7107634, 13238700, 5574868,
-2313377, -12271795, 11760157, 16168404, 11371463, 11730093, 14843944, -3320010, 16457241, 32993402,
-26022134, 5866926, 3605088, -4228396, -5755256, -16967806, -21448530, 5641977, -2357937, -8938901,
--55867324, -7334731, 13858786, 15622407, -12870943, 19532438, 5946919, -8077223, -21052320, 4483946,
--5286031, -31256624, -10151692, -11220602, 2017561, -42992084, -33784212, -5919002, 20724290, -3045669,
--6823093, -26112328, 161061, 21940840, 683437, -15621870, -9255118, -3562139, -9094056, 5252745,
-6961068, -22181896, -24854438, 3543885, -1261110, 4990215, 39902932, -24944096, -2987687, -1846299,
--39735964, -12149926, -29194504, -4817880, -2856153, 27504970, 30911954, 38056632, 10560251, 6167036,
--15010911, -33942052, 918049, 13297219, -12096239, 46783468, 109790640, 105502112, 15014669, -68137512,
--62648540, -24790014, -39560408, 129475008, 79903032, 50057308, 65168612, -1476395, -35230008, -92965640,
--59742460, -23409182, -5399848, 36839544, 74978856, 66718560, -8426726, -55988120, -34078956, -50755776,
--39982388, 6535330, 54178328, 79152488, 30423938, -4829691, 4016331, -31077310, -36588828, -36477156,
-12129525, 5071283, 8957691, 31439160, 16670379, -3815005, -20917028, -18349174, -12128451, -28679644,
--5996848, 11814918, -10852845, 123480, -4227859, 18875844, 14304389, -26737246, -16609712, -53397180,
--42813308, -38366944, 23790898, 42049340, 15903190, 10401337, -15835544, -28012314, -83099024, -61882964,
--37087580, 6427956, 22641456, 14055280, 3091303, -31093416, -25740812, -48826260, -80191872, -32101122,
-8966818, 22689776, 40568112, 18256296, -338229, -23165442, -8599598, -15602542, 28831578, -28202366,
-32521492, 6686191, 3249680, -51775292, -17261474, 46268072, -31066572, 13106630, -320512, -9896678,
-13778255, 5738613, 24099062, 39135204, -23012972, -29812978, 7601019, -17955648, 23886460, -31166968,
--16982838, -19520626, 2020245, -4911295, -18684718, 8830453, 36524400, -28394028, -32298154, -23124104,
--7723425, -6424198, 49148384, 3512210, -1753957, -48176112, -12821551, 5047124, 41252088, 18508624,
--7625178, -69670272, -50451908, 48051556, 51667384, 50630148, -23201414, -116545552, -23204634, 52867288,
-43682500, 6990060, -13635984, 7711614, -47302084, -27880780, 15904264, -13654775, 14395657, -8419747,
-1917703, 49733036, -36817532, -19163608, 41056668, 32525788, 61951684, 26458610, -82691544, 26069378,
-89352496, 19387482, 45256072, 11579232, -25060598, -566399, 56872884, 39257612, 75527000, -99027984,
-13606456, -472983, -11203959, 39507256, 538482, -51380156, 4413079, -2063732, -10769630, 7809861,
--413391, -31352724, 27399206, -12828530, -992137, 1617055, -7721278, 1600412, 3895535, -8533026,
--11737072, -16968342, -25524454, 25059524, -1545115, 9383967, 20816632, -23858544, 11145440, -627602,
--44217764, 463856, 13217225, 47602196, -12948790, -65412888, -8260833, 31721554, 7872138, 28103044,
--22303766, -17915382, -24532854, 11478837, -4873714, 17412334, -25961466, 13110925, 5688684, 8169565,
--28858960, 3510062, 5194226, 20543366, -8775155, 4934381, -17972828, 7087770, -11120744, 17869748,
--4068945, 14529874, -5345087, 6612639, -58281096, 6585796, 10422812, 5555004, 57461832, 9678709,
--4313221, -36686536, -6272263, -3611531, -8596377, -368830, -6944425, 14698452, 6860137, -10818486,
--1853815, 22813792, 70330, -1289027, 2423435, -5717675, -9794673, 12799003, 11320460, 8586713,
--14267881, 7493108, 21346524, 8364986, -1227287, 13762686, -2508261, -16346646, 4319664, 4133369,
--13163001, -14312979, 14249091, 13868449, -13700946, 8770323, 8475044, -129923, -4991826, 92879,
-10832444, -607738, -12103218, 6288906, 7379291, -22486302, 5745593, 16611323, 5434208, -14623290,
-2273648, 10306311, -18937048, 5134097, 8869107, 3736622, -4928475, -18061948, 21246130, -23011362,
--2035815, 22126060, 355409, -3826816, 483184, -20813412, 9203041, -316217, 11878269, 22002580,
--9967008, -1594507, -12728672, 16825534, -3534221, -1891933, 17254494, -22550726, -9918690, 12503724,
-10204305, 4470524, -18335216, 6325413, -4035659, -1162862, 8781061, 6670084, 1250372, -4677220,
--2355253, 839666, 4964446, -16011638, 11648488, 2367601, -2232846, 4505421, -2106682, 10110890,
--15060303, -2738579, 301185, 874563, 1492501, 6955163, 4602058, -25573310, 13508209, -2741263,
--2981781, -1074279, 5192079, 6979859, -6344741, -2567317, 11883638, -10184978, -1315871, -7793755,
-5645735, 53852448, 4723391, -6572374, -18009334, -11969537, 6309307, -8026220, 6944962, -10712722,
--853088, 8532489, -4827543, 4011500, 3929358, -14929843, 4122095, -4890894, -3252901, -12305081,
-3469797, -3486440, -7762617, -3620121, 5943161, -5372467, -5320928, 7589744, -8436390, 4266513,
-7215545, -14959908, 14740865, -3736085, -17600240, 9335111, 9284109, -8208756, 2848637, 5322538,
--7437810, -6660421, 39728, 990527, 4787815, -2421825, -911607, -7405061, 6783901, -5801427,
--1882269, 8519605, -10300942, 2967286, -1877438, 26307, -4857071, -6641093, -2717104, 11583527,
--7933879, -3018288, 1859184, 2461553, 319438, -7020661, 5331665, -3146601, -6074695, -172872,
--11123965, 16242493, -7189239, 3292093, 3571802, -3339874, 5619428, -9660455, -7893613, 9891310,
--4871567, -6700149, 6611566, -439697, 1835562, -4464082, 1166621, -984621, 3017215, -3559454,
--2800319, 3754338, -2188286, -2592013, -709743, 2373506, -1551557, -209380, -1261110, 638876,
-2245194, -3157875, -3199214, 9313637, -2747705, -3318399, 2907156, -1054951, 2702608, -7451232,
-497679, -1227287, -232465, -1962263, 8722542, 132607, -7676181, 2534031, 849330, -309775,
-67646, 3416647, -2188286, -2183991, -970126, -1966021, -994822, 989990, -2396055, -27917,
-728534, -301721, -26739392, -43719544, 19992536, 150777504, 23133230, 75307960, -17661980, -76678048,
--27823872, -74729208, -49151068, -15658377, -8187819, 3504157, 44393320, 53282828, 74076376, 73485280,
-23393076, -29124174, -47028820, -86385216, -66111356, -34844532, -13527536, -8881455, 26677116, 44685376,
-34590592, 47084652, 45702212, 16784732, 14826764, 5535139, -33415920, -12473659, -28729574, -49810348,
--30063160, -29122026, -43118788, -9237938, 20173998, 15265924, 44015900, 57611616, 30034706, 38356744,
-28922310, -4117800, -1243930, -2764348, -31003758, -38262788, -34055332, -51375324, -43698072, -15517180,
--2554432, 6142877, 35617628, 32708324, 31599686, 39724152, 29722784, 10146860, 18787798, 10229538,
--11570105, -5587753, -21398600, -45119704, -27084064, -25632364, -35471600, -17167522, -11361799, -20021526,
-16876538, 31833224, 36849744, 58693948, 55381992, 23298586, 13754633, -849330, -20066088, -23904178,
--24569898, -35863512, -32764158, -30173756, -27583354, -17323750, -6845104, -140123, 13436268, 31406948,
-39256000, 36418100, 44050260, 30415348, 14788109, 6150393, -5115843, -22700512, -25531970, -35694400,
--46444704, -46923592, -37205692, -31182536, -4738960, 18469970, 41553272, 55597276, 60287920, 46454904,
-30328374, 13320841, -3651259, -23476828, -34227132, -46366320, -45914812, -32997160, -21588116, -6720550,
-8288213, 16398722, 21910238, 27285928, 23644868, 14607184, 12456479, 4246112, -368830, -4604205,
--5756867, -7623030, -7311645, -10666014, -8605504, -6968048, -5687611, -5888400, -3838090, -3960497,
--1025960, 1182190, 5236102, 6003291, 8458401, 8270497, 7847979, 2549600, 786516, -1102196,
-179852, -684510, 0, 0, 0, 0, 0, 0, },
+3112241, -2801929, -496069, 4461398, 1465121, -2306934, 481036, -2548526, -2270427, -1824287,
+-3999152, -1387811, 2437931, -195421, 1350230, -672699, -1133871, -1107028, -485868, 3362423,
+-2123861, 211527, -151934, 148713, 2667712, -85899, 1835025, 5850819, 4560719, 4588636,
+2376728, 1043140, -740345, -5404680, 2219961, -2015413, 3468186, 1233193, -1835562, 1635309,
+-2414309, -4684199, -1444720, -1808718, -4438849, 192200, -545461, -631360, -2079301, 286152,
+4632659, 2057826, 3148748, -45634, 1936493, -1807108, -130460, 2426657, -2001455, 1626719,
+-2481417, -2637110, 268972, 5457830, 3593277, 2098092, -1060857, 915902, 585189, 319975,
+-984084, -2090039, -3202435, -2318209, 73014, -1984275, -993748, -2136746, 709743, 330712,
+1108102, -627065, 911607, 1292785, 1059783, 142808, 665720, -487479, -533650, -12885,
+-1333051, 1409286, 1153736, -130460, 1457605, 433792, 293668, -653909, -414464, -836982,
+280247, 475668, -15032, -260919, 503585, -318364, -1236951, -345745, -827855, -45634,
+242666, 309775, -1295470, 236223, 1999844, 1028108, -3454764, 8158827, -177167, 491774,
+-865436, -4310537, 3183645, -2250026, -2155537, -5023501, -3871913, -1630477, 3114388, 4479651,
+-911070, 2647847, -1035624, 4859219, 5042829, -10080288, 1840394, 42950, -992137, 3403762,
+5356898, -1660542, -787590, 102542, -336081, -2566780, 2101313, -2587718, -2046552, -215822,
+2679523, -1527398, -5674726, -2526515, -3860639, 443455, 333934, -5039071, -606664, -2203855,
+1034013, -158377, -769873, 1227824, -1687922, 1698123, -2708514, 2636573, 3860639, 5937793,
+2457258, -2608119, 2118493, 2485712, -948114, -6742025, 425739, 3496104, -2719251, 2011655,
+-3918621, -54224, -2506650, -6849936, -2099702, -3587372, 1717450, 2531346, -2324651, 1079111,
+-1102733, 3216931, 235686, 1879585, 2686502, -1164473, 1097364, 536334, 1122060, 2316598,
+-566399, 775778, 2889439, 1642825, 369367, 1725503, 287226, 739271, -147640, -51540,
+-1607928, 830539, 971736, 1307281, 872952, 284005, 395674, 28991, 471373, -221728,
+-474594, -137976, 1038308, 887448, 243203, 793495, 156229, 919660, 766652, 6669548,
+1837172, -9086540, 3231426, 4647155, 1708860, -798327, 2374043, -5713917, 811212, 2516851,
+-1272384, 2433099, -384936, 2966749, 722628, -3862249, 2422362, 3506304, 3479461, -1024350,
+1663226, 1888175, 1321239, -10289131, 1443646, -4387309, -1294396, -1468342, 2399813, 1097901,
+-8386461, -3034931, -1879585, -1606855, 3409130, -3138011, -5869610, 1432909, 2718714, 1679869,
+-5840619, -2761127, 1868848, -5527623, -447213, -6106370, 892279, 2971044, -3124589, -966368,
+3482145, 4422206, -10355166, -782221, -2878702, 3118683, 1280974, 499290, 892279, -2932389,
+2633352, 2262911, -8042863, 6157910, -831613, 1501628, -4105989, -1734093, -3473555, -451508,
+899796, -3238405, -4472135, 3946538, -1444720, 1614371, -226560, -828392, 1145146, 1326071,
+-1635309, -4154307, 2296734, 2064806, 525597, 945967, -135291, 289910, 684510, -55298,
+681826, 456877, -98784, 1566053, 220654, 1193464, 1441498, 57982, 2034741, -80531,
+392453, 524523, 907849, 708670, 1008780, -1553168, 686121, -720481, 300648, 650688,
+488016, 1173600, -421444, -389768, -4362076, -4093104, -3404299, -2157147, 6780680, -2368675,
+921271, -5509370, 5839545, 392453, -3964792, -1041530, 3381213, -7055021, 2390686, -2080912,
+1585917, 1140851, -3235184, -2291365, -8397735, -2257542, -9457518, 1225676, 2126009, -1012539,
+-1290101, -862215, 1422708, -3697967, -6743099, -3129958, -2483565, -1038845, 2469606, -1551020,
+4007205, 1783485, 3069828, -4175245, -240518, -205622, -3498251, 971200, 2747169, -272194,
+-1747515, -4093104, -3792456, 2551211, 3808562, -122943, 7546795, 5990943, -5415954, -1376537,
+8053, -5708549, -6538014, 9872519, -167504, 271657, 3089692, -6273337, -2070711, -4064113,
+9742060, 2634426, 499290, -7762617, -6171331, 828929, -2547453, 5037997, -2592013, -55298,
+1374390, -3046743, 1098438, 3040837, -4574677, 50466, -7290707, 795106, 2734821, -2103997,
+1057099, 875100, 3564823, -512175, 566936, -705448, -144955, 1546188, 1582159, 1484448,
+-1106491, 474594, -77846, 666257, 42950, 652835, -1069984, 2298881, 13959, 659278,
+341987, 725850, 534187, 664109, -619012, -596464, -525060, 506806, 1537061, 1817308,
+317291, 824097, -1504312, -11388643, 5701569, 3231426, 5813775, -3117073, 3187940, 3334505,
+5974837, 1418413, -11367168, 2843805, 493384, 4523675, 8256538, 438087, 3587908, 3144453,
+-6805913, 2396055, 634045, 947040, -1847373, -942208, 4228932, 2804614, 175020, -4161823,
+-47245, -1983738, -2153389, 6816113, 3150359, -281857, -909459, -8228084, -7058779, -8083129,
+2154463, 2189897, -8380018, 599148, 570157, -8302709, 524523, 1286880, -1108638, 9551470,
+-1175210, -4688494, -1178969, 5486821, -452045, -8501888, 9243843, 4792110, -5879274, 4501663,
+897111, 867583, -151934, 521839, -2283312, -4268124, -4041564, 7391102, -490163, -2154463,
+-343061, 5316633, -4922033, -8691940, 311922, 1983201, 1631014, -7597261, -3935801, 2929168,
+-683437, 4251481, 1619740, -1347009, -1270237, -1158567, -603980, 150324, 6752763, 3937411,
+2441689, 2163053, 2610266, 3934190, -1878511, -625992, -2129767, -646929, 748398, 195958,
+-1178969, -1900523, 1984812, 304406, 894964, -31139, -1214402, 435402, 1048509, -2401424,
+-408559, 1924145, 415538, 114354, -883153, -264141, -574452, -1042603, 257161, 975494,
+777926, -703301, 793495, 68719, 3410204, 13167296, 3894462, 10564009, -11620571, 463320,
+-5748277, 202400, 3829500, 4457639, -5981816, 2621004, -3474629, -3038689, -4165045, -6720550,
+-1010928, -15852187, -173409, 5257040, -722091, -1064078, 1722819, -8309688, 2908230, -7924215,
+-2528662, 8192650, 1634772, 2837900, 172336, 2421825, 6951942, 6324340, 12128451, 6326487,
+-9210020, -751082, 10214506, -1418413, -7511898, -1124208, 928787, -3408057, 6837588, 5097590,
+-5912560, -1706176, 6556805, 7015829, -2513093, -4434554, 11077794, -4558034, -14979235, -10093710,
+3277597, -15032922, -318901, -4489315, 55298, -1381369, -4224637, 5652714, 1593970, -1456531,
+-4936528, 4320200, -2964601, 7995619, 5434744, -2164127, -5307506, 1152662, 2069637, 759136,
+282394, 1903207, -1118302, -5849746, -1715839, 8185134, -961536, -3304977, -899259, -1698660,
+-4237522, -4083977, -2289755, -1953136, 469762, -20401, 4076998, -339302, -1490354, 592169,
+1449015, -965294, 840203, -1389959, 2767570, -71404, 1694365, 273267, -2690260, -253403,
+-304406, -2793339, -772557, -1692754, 1267015, 101469, -446677, 984084, 420370, -263604,
+488553, -3126199, 670552, 915365, -12826920, 6088653, -1129040, 3261491, 4254165, 6956774,
+1559073, -6072010, 8287140, -3058017, 3690451, -3678103, 3075734, -534187, -15067819, -3092377,
+-2575370, -1743757, 1035087, -3588982, -2485176, 2045478, 3310883, 1172526, 8144869, 3788161,
+-7866233, -547608, 20938, -4399121, 9370008, -5567888, -5410585, 9895605, 10391137, -1256278,
+-117575, -6430103, 2336462, 1442035, -3367791, 1760937, 6437619, 4010426, 7740605, -1887101,
+-6070937, 3816615, 907312, 1896228, -7237020, -3714073, -4250407, 1744831, 4148402, 1555315,
+1112933, 7471633, 8913131, 1367947, -4231080, 5109401, 4157528, -6242735, 880468, 1127429,
+-715112, 771484, -140123, 5357435, -578210, -4117263, 2121714, 7050189, 3120294, 4154844,
+8691940, -5887327, 1061394, -1978906, 8248485, 4759898, 8834211, -4214974, -1127429, 1505386,
+-3135863, 496069, 872415, -965294, 10737, 2083059, 2366527, -849867, 1294933, 954020,
+3068217, 2739652, -359167, -192200, -1374390, 428423, -1384053, 768262, -2440078, 2459406,
+-35433, -901406, -31675, -167504, 102542, -824634, -1897839, 2733210, -330712, 484794,
+-3004867, -2432562, -658741, 2627983, -267362, -237297, 260919, -259309, 5373004, -11148124,
+-6640557, 4408247, -2584497, -10414222, 5309654, -5457830, -4728222, 6688338, -2012729, -2238752,
+-1641751, 1711545, 4989679, 2560874, 2695092, 2729452, -4113505, -2492155, -838592, 6024229,
+3135863, -10641855, 3406983, 3294777, -4431333, 9976672, 9194988, 4917201, 380105, -3648038,
+-2326799, 519691, -3091303, -3754338, -6128919, 877247, -7000797, 5084168, 1987496, 45634,
+1139777, 2675228, 2356863, 5443871, 8549669, -3246995, -13471165, -2370822, -9164386, 3151969,
+1304060, -12239583, 4466229, -5148592, 15381888, 5077188, -9635222, -349503, 9799505, 5073430,
+-7970923, -4786204, 10251550, 5848672, -7057705, 8708046, -7243999, -9621264, 1523103, -14558329,
+8813273, 9420474, -2126546, -8771397, -1530082, 3419868, 1819992, 1445793, 923418, 6744710,
+-9464497, 3039763, 10632192, 156766, 409633, -9349607, 4687420, 2585034, -8566849, -2171106,
+-4301947, -2082522, 386547, 2671470, 2204392, 281857, -2544231, 239981, -2728915, 1126355,
+1703491, -379031, -1293859, -953483, 1747515, 512712, -493384, -1480153, -2721399, -344134,
+-2655364, 5375689, -5012227, -43487, -483184, 2041720, 1452236, -2949569, 944893, -936303,
+4651987, -610959, 1356136, 101469, -2585034, -296353, 2948495, -31675, -8721468, -6441914,
+206158, -10472204, 31139, -24622510, -7750269, -2830920, -13455059, -4712116, -2818036, -5899675,
+-4560719, 3211562, -6485938, -12313134, 3278671, 7727720, -12577812, -3476776, 3875671, 6314139,
+10849087, 6927246, 6390375, 7011534, 2534031, 12426414, -7395397, -3164317, 2630131, -6148246,
+2338610, 3522410, 6503654, 855772, 10635413, 2235531, 2621004, 7344931, -3246995, -6296959,
+111132, -9654013, -6176163, -11143293, -469225, -512175, -14653355, 5283347, -6640557, 2998961,
+-13841069, 1656784, -10475962, 15626165, 781147, -13928042, 16709570, 20473572, 5743445, -6862821,
+-5090610, 5312338, -1789391, -676457, 6041945, -9778030, 6362457, -10099079, 5338645, -4027606,
+-5698885, 2405182, 5361193, -2921652, -321586, 6299644, 1640678, -3115999, 3535295, -1563905,
+-5791764, 752693, 5383742, -1045288, -2148021, 2136746, 1554778, 4388920, 864899, 141197,
+1879048, -1485522, 3049964, 764504, 2522757, 867583, 2000381, 1619740, 1628330, 1311576,
+-1900523, 2105071, -2550674, -2362769, 210453, 1376000, 436476, 681826, 1501628, 991064,
+97711, -835908, -1924682, 6979, -2022930, 5326297, -2674691, 4798016, 7240241, 1066226,
+6681896, -3778498, 10444824, -8122320, -7565585, -19903952, -4425427, -10321343, -24285356, 6091338,
+-14005888, -8505109, -11294153, 3097745, -21879638, 5848672, 1773822, -4203163, -500364, -6293738,
+-2237141, 5241471, -7469485, -5316633, 270046, 3994320, -6537477, -509491, 7459285, -12006044,
+-2798708, 7000260, -6685117, -411243, 39192, -1902134, 10120554, -8875013, 6000606, -4039417,
+8227547, 8702141, -8883066, -11833709, 11045582, -1199370, 2386928, 2891587, 970663, -2541547,
+6209449, -3380676, -13707925, 3568581, 2762201, -11855183, -1349694, -4243965, 7099581, 8672613,
+4269198, 1462436, -3437585, -8421894, 8593156, 5330055, 7683160, -528818, -12164958, -2837363,
+-1856500, -5296769, -3018288, -1413044, 3482145, 5412196, -4714264, -3980898, -12087112, -5721434,
+2303176, 4983773, 1320166, -1015223, 5500780, 5217312, 3092377, 6404870, -1989107, 5026186,
+2251100, 3442953, 554588, 57982, -3350075, -2523830, -633508, 1633698, -814970, -2808909,
+-3570729, -92342, -607738, 772020, -2436320, 599148, -2900714, 935229, 4786741, 1123671,
+-2780455, -2794413, 6098854, 3526705, -781147, -326954, -7769059, -831613, -114354, -6511171,
+144418, -2611340, -2056753, 1610613, 2017024, 545998, -776315, -5984500, 29561186, 17069810,
+1137630, -9383967, -22384296, -2729452, 10408316, -4902169, -9043591, -16783658, -980863, -3622805,
+542240, -5758478, 5382668, -95026, 14612016, 5792301, -6157910, -435939, -2657511, 1105954,
+-3063922, 3025268, 9041980, -10644003, 2019708, -6416145, 4189204, -4571993, -7797513, -15166066,
+-1264331, 8673150, 2869575, -1899449, 3162170, -1129576, 8237748, 13089450, -4609037, -2989834,
+-15209553, -16451335, 4507032, 2435247, -6995428, -6019397, -13700409, -9394167, 5370857, -1776506,
+-15569, 690953, -1098975, 6237903, 3529926, -11249593, 429497, -10252624, -933082, -5532455,
+-3224447, 10880226, 22396106, 36958732, 1351304, 11886859, -11194295, -14207752, -20002200, -1054415,
+-110059, 4044786, 4188130, -2731599, -25273736, 10472741, -4330938, -3484292, 1546188, -6616934,
+719944, -3598109, -10321343, 128849, -4155918, 97174, 984621, 394063, 7257958, 1060320,
+791348, -392453, 261456, -304943, 3093987, 6882685, 1995012, -242666, 1431835, 6241125,
+130997, 80531, 2309082, -2064269, 736050, -5702106, 1912871, 2988760, -5400385, 5487895,
+293132, 481036, -1625108, -5961952, -1959579, 2678986, -8590, -599685, -1525787, 214748,
+10821707, 18009872, -8901320, 22549, 3475702, -14709726, 148176, -9501541, -9184788, 13834627,
+-4063576, -3488050, -7430831, 15889232, 13985487, -16643, 22969486, 2570001, 7181186, 5039608,
+-6389838, -7511898, -11940009, -6308233, 2809446, 96637, 10298795, 785442, -1112933, -1890323,
+7279970, -10524817, -25669946, -9019968, 7582765, 2357400, -2100776, -7669201, 464930, -12373264,
+-1847910, -11274826, -769873, -1429150, -7923141, 7582228, 3784403, 14419816, -11920145, 22348862,
+6012954, -4373351, -7909719, -4087198, 3531537, 12882218, -3964255, 7361037, -11395085, 9191230,
+-10347650, -11676405, 11497627, -16689706, 10930155, 9153649, 17735530, -18076444, 13725642, -1737314,
+12236899, 4751308, -18965502, -3345243, -4452271, 5264020, -10061498, 29840360, -1465121, -10572062,
+4240744, 13775571, 9380209, 6437082, 7131793, -971736, 3399467, -1251983, -3955128, -2550137,
+1056025, -163746, -3923453, 1095754, -1150514, -6090801, -1255741, -2347200, 2551748, 3161096,
+1743757, -871342, 5900212, -993211, 3267396, 1269163, 4176319, 1531156, -2103460, -2662880,
+719944, -352724, 2881386, -1206349, 280784, 2400887, -1473174, 4140885, -1971927, -2352032,
+1174137, -1775432, 4374961, 1535988, -1273458, 1286343, -12487617, -16750909, -34305516, -10536629,
+-20145544, 5608154, -920734, -6870337, -9979893, -9505836, -8588324, -9312026, -9118752, 943819,
+-7436199, -1351304, -16156593, -24792162, 30344480, -9476308, 16436303, -3162170, 4233227, 5221607,
+8852464, 5827734, -1565516, -520228, -13124883, -2988224, -3138547, -8839043, -13766444, 5341866,
+-1574106, 19401978, -13478681, 327491, 26851598, -6509023, -22362284, -7237020, 856309, -10156524,
+15695421, 7192997, -8670465, 6344204, 8414378, -5245766, -209380, 4208531, 10476499, -432181,
+-10397042, -10236518, 12543452, 8955544, -6656663, -14388140, 9108552, 10546829, -9501541, -12954158,
+8996883, -16416439, 31271120, 6686727, -2611340, 1225139, 7607998, 1675037, -5570573, 452045,
+2193655, 11191611, -7439420, 2194192, -22317724, -20106352, -2304250, 1135482, -2252174, -9792525,
+7016903, 16489990, -530428, 4176856, -1624571, 3470871, 4933844, 5903433, -6473590, 7110319,
+-3393024, -1981054, 4680978, 8766565, -2688113, -8948027, 2449742, -896038, 1399623, -886911,
+-4841502, -1403381, -5003637, -3131031, -6157373, 6165426, 6309844, -3923990, -99321, 7603166,
+2346663, -3347390, 1515587, 9543417, 6239514, 6855305, 6903086, 6092948, 2197950, 8734890,
+4558034, 3582003, 3173444, 8264591, -12912819, 27917, 4774393, 3672197, -8462696, 20390358,
+14376866, 29351270, 16209743, 10930155, 4247186, -25670482, -2120103, 3500935, -15137612, -4026532,
+29021094, 2232309, -16850768, -16598975, 15022185, -22873922, -5960878, 1009854, 6100464, 2633352,
+-4394826, 7433515, -10364830, -13422, -2128156, -6504191, -1474784, -4526896, -14984067, 7875360,
+-12996034, 7596724, 6717329, 8841727, 1547262, 5860483, -5473936, 24154896, 3175592, -25650618,
+-22624278, 2070174, 10047002, 19632832, -6554657, -15409269, -6914361, -2041720, 2124935, 11528766,
+2413772, -9096204, 26466126, -32569810, -5527086, 6164889, -22767084, -11737609, -6074695, 3346853,
+-36829344, -17388712, 26169772, -9970230, 7552163, -8551280, -29772714, -11227581, 14141180, -4387846,
+5424544, 9069897, 18606336, -8950175, 1921461, -5622649, 11589969, 5298916, 4901632, 721018,
+-624381, 274341, 10065793, 5209259, 5884642, -1628866, -399432, 3738232, -7030862, -6334540,
+2553895, 11783243, 5375152, 4539244, -11745662, 6739878, 21447456, -177704, -431107, -8381629,
+5661304, 882616, -5242008, -6828998, 695248, 6319508, 7296613, 5337571, -6922951, 4398584,
+-4725001, 5002027, -8868571, -4871567, -1991254, -4671314, -5870684, -1844152, -14313515, -13485124,
+1920387, -1107028, -2488934, 4602595, -456340, -1453846, -176094, 4552129, 15224585, -6714645,
+-47055124, -12598213, 2956548, 12864501, 13244069, 11370389, 12129525, 20935818, 38648264, -22345642,
+16353088, -5941551, -416612, -6021544, -31228708, -23920820, -4211753, -1797444, 7027640, 11979738,
+16422881, -5454609, -279173, -8690329, 322123, -1857573, 90194, 16304233, 9166534, 5197448,
+13064754, 14814953, -26378078, 12836047, -15230491, -19996294, -5570036, 12315819, 3882651, -13622026,
+4612258, 1249299, 9717364, -1263257, -25640954, -18891950, -21227876, -21712134, 3016678, 17328046,
+-3098282, 63722284, -41689100, -31935766, 19498614, -5999533, -12657269, -4683662, -3318399, 350040,
+-39058968, 3789772, -2707440, 5043366, 30169998, -2446521, 10650982, 11247982, 14461155, 48959944,
+-18165564, 62001612, 17482128, -2039573, 8341364, 3234110, -25482040, -23046258, -281857, -5914707,
+3328600, 9288404, 7787850, -4787278, -21836150, -18455474, 7372312, -12568685, 8079371, 8329552,
+19583440, 18516140, 17441862, 2996277, 6175626, -635118, -708670, 12379169, -1960653, -1504312,
+4236449, -18851148, -4238596, 7406134, 147103, -2260764, 11930882, 4058744, -17029546, 11461120,
+-9448928, -13822279, -7318625, -4562329, 3507915, 5179194, 6029061, -7575249, 8638253, 3150896,
+5626944, 1960116, 7354595, -3380139, 4527970, -11554536, -2121177, -28176060, 10267119, 44988708,
+1320703, 46948288, 24839944, -2930242, -18136036, 52952116, 7986492, -9029632, 6885907, -12190728,
+-3537443, -1934346, -3238942, 6570763, 14823543, 10177999, 1971927, 6665253, -10634339, -10448582,
+3232500, -3299072, 17450988, 18747532, 12048994, -5033702, 1203128, -23171348, -14421426, -4457103,
+-15774878, -25062744, -14805289, 11646878, -14442364, -44069584, -20282446, 13182328, -17721572, -12729209,
+627602, -3457449, 20635708, 30104500, 39873404, -21364242, 11336029, -555125, 1308891, -8840116,
+-26374320, -52894668, -34653408, 17996450, -35115116, -18692234, 9578851, 17561048, -13007845, 19835770,
+57707716, 11862163, 11181410, -43912820, -58496380, -12962748, -18212272, -31508954, -8913668, -26374858,
+18611704, 10294500, 52310016, 21264384, -6063957, -10886668, -18177912, 12063489, 23766202, 47082504,
+33141042, -23123568, -47892108, -23701240, -15288473, -28656558, -5301064, 23827942, 11563126, 29544544,
+1261647, 20906290, 8438000, -7248831, -8973260, -10606422, 5742372, 12631499, 3195993, 16531866,
+21023328, 12371116, 14974940, 6548215, 22702660, 19623168, 771484, -806917, 9917616, 22185654,
+-2281702, -6441914, -3455301, 18853296, 5843840, 502511, -5806259, 11621645, 9162776, -3387656,
+7587597, 9096741, 4638028, -2535641, 2007897, 6371047, 750546, -11464341, 24106040, 47805132,
+-25517474, 36192080, 29050622, -4895726, -7565048, -16487306, 4835060, 32249298, 23928874, 37853696,
+-16711181, -7744900, -7932268, -2594697, -10410464, 9717900, -12748537, 27700928, 11687143, -46186468,
+-20023674, 124017, 6699612, 19556060, -9680319, -17644800, 4948876, 5144834, -7592429, -8851391,
+4945655, -13326747, -20222854, -9348533, 43060804, 17655536, 7111392, -22226992, -7319698, -18900004,
+10671920, 20727512, 6845104, 1131187, 12182138, -7618198, 27401354, 15426449, 1425929, 8919036,
+-1226213, 54475216, 11096585, -23549306, 8697846, 9216463, 5246303, 12151536, 519691, -22478786,
+26173530, 5580773, 4327180, 10118406, 4609037, -260919, -16540993, 18640694, 21296596, 10900627,
+61481920, 43639016, -23853174, -47808356, -33501282, -3474629, 3970161, -5061082, -40652940, -20271172,
+-14524506, -16847010, -16764331, 14871324, 11636140, -4423280, 2367601, -3791919, -22822920, 6388227,
+-4312684, -1391033, -23375896, -22503482, -4140349, 9360344, 10995653, 1252520, 11734388, 4954245,
+14834817, 2059974, 2894271, -25469156, -15162308, 10714870, 2871723, -7107634, 13238700, 5574868,
+2313377, -12271795, 11760157, 16168404, 11371463, 11730093, 14843944, -3320010, 16457241, 32993402,
+26022134, 5866926, 3605088, -4228396, -5755256, -16967806, -21448530, 5641977, -2357937, -8938901,
+-55867324, -7334731, 13858786, 15622407, -12870943, 19532438, 5946919, -8077223, -21052320, 4483946,
+-5286031, -31256624, -10151692, -11220602, 2017561, -42992084, -33784212, -5919002, 20724290, -3045669,
+-6823093, -26112328, 161061, 21940840, 683437, -15621870, -9255118, -3562139, -9094056, 5252745,
+6961068, -22181896, -24854438, 3543885, -1261110, 4990215, 39902932, -24944096, -2987687, -1846299,
+-39735964, -12149926, -29194504, -4817880, -2856153, 27504970, 30911954, 38056632, 10560251, 6167036,
+-15010911, -33942052, 918049, 13297219, -12096239, 46783468, 109790640, 105502112, 15014669, -68137512,
+-62648540, -24790014, -39560408, 129475008, 79903032, 50057308, 65168612, -1476395, -35230008, -92965640,
+-59742460, -23409182, -5399848, 36839544, 74978856, 66718560, -8426726, -55988120, -34078956, -50755776,
+-39982388, 6535330, 54178328, 79152488, 30423938, -4829691, 4016331, -31077310, -36588828, -36477156,
+12129525, 5071283, 8957691, 31439160, 16670379, -3815005, -20917028, -18349174, -12128451, -28679644,
+-5996848, 11814918, -10852845, 123480, -4227859, 18875844, 14304389, -26737246, -16609712, -53397180,
+-42813308, -38366944, 23790898, 42049340, 15903190, 10401337, -15835544, -28012314, -83099024, -61882964,
+-37087580, 6427956, 22641456, 14055280, 3091303, -31093416, -25740812, -48826260, -80191872, -32101122,
+8966818, 22689776, 40568112, 18256296, -338229, -23165442, -8599598, -15602542, 28831578, -28202366,
+32521492, 6686191, 3249680, -51775292, -17261474, 46268072, -31066572, 13106630, -320512, -9896678,
+13778255, 5738613, 24099062, 39135204, -23012972, -29812978, 7601019, -17955648, 23886460, -31166968,
+-16982838, -19520626, 2020245, -4911295, -18684718, 8830453, 36524400, -28394028, -32298154, -23124104,
+-7723425, -6424198, 49148384, 3512210, -1753957, -48176112, -12821551, 5047124, 41252088, 18508624,
+-7625178, -69670272, -50451908, 48051556, 51667384, 50630148, -23201414, -116545552, -23204634, 52867288,
+43682500, 6990060, -13635984, 7711614, -47302084, -27880780, 15904264, -13654775, 14395657, -8419747,
+1917703, 49733036, -36817532, -19163608, 41056668, 32525788, 61951684, 26458610, -82691544, 26069378,
+89352496, 19387482, 45256072, 11579232, -25060598, -566399, 56872884, 39257612, 75527000, -99027984,
+13606456, -472983, -11203959, 39507256, 538482, -51380156, 4413079, -2063732, -10769630, 7809861,
+-413391, -31352724, 27399206, -12828530, -992137, 1617055, -7721278, 1600412, 3895535, -8533026,
+-11737072, -16968342, -25524454, 25059524, -1545115, 9383967, 20816632, -23858544, 11145440, -627602,
+-44217764, 463856, 13217225, 47602196, -12948790, -65412888, -8260833, 31721554, 7872138, 28103044,
+-22303766, -17915382, -24532854, 11478837, -4873714, 17412334, -25961466, 13110925, 5688684, 8169565,
+-28858960, 3510062, 5194226, 20543366, -8775155, 4934381, -17972828, 7087770, -11120744, 17869748,
+-4068945, 14529874, -5345087, 6612639, -58281096, 6585796, 10422812, 5555004, 57461832, 9678709,
+-4313221, -36686536, -6272263, -3611531, -8596377, -368830, -6944425, 14698452, 6860137, -10818486,
+-1853815, 22813792, 70330, -1289027, 2423435, -5717675, -9794673, 12799003, 11320460, 8586713,
+-14267881, 7493108, 21346524, 8364986, -1227287, 13762686, -2508261, -16346646, 4319664, 4133369,
+-13163001, -14312979, 14249091, 13868449, -13700946, 8770323, 8475044, -129923, -4991826, 92879,
+10832444, -607738, -12103218, 6288906, 7379291, -22486302, 5745593, 16611323, 5434208, -14623290,
+2273648, 10306311, -18937048, 5134097, 8869107, 3736622, -4928475, -18061948, 21246130, -23011362,
+-2035815, 22126060, 355409, -3826816, 483184, -20813412, 9203041, -316217, 11878269, 22002580,
+-9967008, -1594507, -12728672, 16825534, -3534221, -1891933, 17254494, -22550726, -9918690, 12503724,
+10204305, 4470524, -18335216, 6325413, -4035659, -1162862, 8781061, 6670084, 1250372, -4677220,
+-2355253, 839666, 4964446, -16011638, 11648488, 2367601, -2232846, 4505421, -2106682, 10110890,
+-15060303, -2738579, 301185, 874563, 1492501, 6955163, 4602058, -25573310, 13508209, -2741263,
+-2981781, -1074279, 5192079, 6979859, -6344741, -2567317, 11883638, -10184978, -1315871, -7793755,
+5645735, 53852448, 4723391, -6572374, -18009334, -11969537, 6309307, -8026220, 6944962, -10712722,
+-853088, 8532489, -4827543, 4011500, 3929358, -14929843, 4122095, -4890894, -3252901, -12305081,
+3469797, -3486440, -7762617, -3620121, 5943161, -5372467, -5320928, 7589744, -8436390, 4266513,
+7215545, -14959908, 14740865, -3736085, -17600240, 9335111, 9284109, -8208756, 2848637, 5322538,
+-7437810, -6660421, 39728, 990527, 4787815, -2421825, -911607, -7405061, 6783901, -5801427,
+-1882269, 8519605, -10300942, 2967286, -1877438, 26307, -4857071, -6641093, -2717104, 11583527,
+-7933879, -3018288, 1859184, 2461553, 319438, -7020661, 5331665, -3146601, -6074695, -172872,
+-11123965, 16242493, -7189239, 3292093, 3571802, -3339874, 5619428, -9660455, -7893613, 9891310,
+-4871567, -6700149, 6611566, -439697, 1835562, -4464082, 1166621, -984621, 3017215, -3559454,
+-2800319, 3754338, -2188286, -2592013, -709743, 2373506, -1551557, -209380, -1261110, 638876,
+2245194, -3157875, -3199214, 9313637, -2747705, -3318399, 2907156, -1054951, 2702608, -7451232,
+497679, -1227287, -232465, -1962263, 8722542, 132607, -7676181, 2534031, 849330, -309775,
+67646, 3416647, -2188286, -2183991, -970126, -1966021, -994822, 989990, -2396055, -27917,
+728534, -301721, -26739392, -43719544, 19992536, 150777504, 23133230, 75307960, -17661980, -76678048,
+-27823872, -74729208, -49151068, -15658377, -8187819, 3504157, 44393320, 53282828, 74076376, 73485280,
+23393076, -29124174, -47028820, -86385216, -66111356, -34844532, -13527536, -8881455, 26677116, 44685376,
+34590592, 47084652, 45702212, 16784732, 14826764, 5535139, -33415920, -12473659, -28729574, -49810348,
+-30063160, -29122026, -43118788, -9237938, 20173998, 15265924, 44015900, 57611616, 30034706, 38356744,
+28922310, -4117800, -1243930, -2764348, -31003758, -38262788, -34055332, -51375324, -43698072, -15517180,
+-2554432, 6142877, 35617628, 32708324, 31599686, 39724152, 29722784, 10146860, 18787798, 10229538,
+-11570105, -5587753, -21398600, -45119704, -27084064, -25632364, -35471600, -17167522, -11361799, -20021526,
+16876538, 31833224, 36849744, 58693948, 55381992, 23298586, 13754633, -849330, -20066088, -23904178,
+-24569898, -35863512, -32764158, -30173756, -27583354, -17323750, -6845104, -140123, 13436268, 31406948,
+39256000, 36418100, 44050260, 30415348, 14788109, 6150393, -5115843, -22700512, -25531970, -35694400,
+-46444704, -46923592, -37205692, -31182536, -4738960, 18469970, 41553272, 55597276, 60287920, 46454904,
+30328374, 13320841, -3651259, -23476828, -34227132, -46366320, -45914812, -32997160, -21588116, -6720550,
+8288213, 16398722, 21910238, 27285928, 23644868, 14607184, 12456479, 4246112, -368830, -4604205,
+-5756867, -7623030, -7311645, -10666014, -8605504, -6968048, -5687611, -5888400, -3838090, -3960497,
+-1025960, 1182190, 5236102, 6003291, 8458401, 8270497, 7847979, 2549600, 786516, -1102196,
+179852, -684510, 0, 0, 0, 0, 0, 0, },
{
-1141388,
-6170258, -3467112, 1032940, -5153961, 1443109, 580357, 7864622, -4709432, 15569, -2477123,
-3941706, 4025458, -2567317, -488016, -2206540, -1264868, -2579128, -3210488, 2369748, 775778,
--2099702, 4391604, 3998078, 6833830, -201863, 2589329, 1359357, -112206, -6172405, 1607928,
-2572149, -2434710, 1545115, -1794223, -2091649, -3385508, 1760937, 4363687, 453656, 5091684,
--2073932, -430034, 5135171, 2688650, 418759, -59593, 4878546, 7326141, -5439039, 1224603,
--1874216, -839129, -8468602, -3003256, 3433290, -2627446, 2381559, 1102196, -1236951, -2050310,
-1207960, -697932, 2652679, 1440425, 1241246, 1360431, -4389994, 173946, -2105071, 2714419,
-4500052, 3156801, -628139, 4871567, 43487, 2071785, -632434, -1071058, 273267, 2448668,
-2824478, -908922, -1904818, -3950296, -496606, -1736241, -1859721, -1045288, -1579474, -1129576,
--1862405, -972810, -29528, -13422, 61203, 1574642, -1063004, 829466, -371515, -747861,
-62814, 728534, 282931, 583042, 22012, -511101, 32212, 744640, 265214, -1062468,
--811749, -27380, 35433, 450972, 89657, 815507, -1052804, 3673271, -4502737, -4709969,
-178241, -6343130, 1164473, -1997160, 3082713, -1699196, -5031554, 572304, 4932770, -753767,
-170188, 6868190, 8632884, -3725347, -3961034, -1125818, -6417218, 2741800, 586263, 1599875,
--2256469, 3426310, -4471061, -814433, 3062312, -2516314, -916976, 469225, 5563057, 358093,
-4025458, -5304822, 5212480, -568009, 754304, 3374234, -2910914, 2815351, -1321239, -1347009,
-2425583, 3199751, -541166, 1830193, -7035157, 4255239, 4130685, -7458211, -6564321, -1854352,
--5443871, -1525787, 2077690, 1354525, 1983738, 114354, -1813550, 4589710, -1535988, 168041,
--1833414, 1081258, -2777770, 3905199, 958851, -3004867, -1678259, -1189706, -1739999, -1541356,
-3956739, 5181878, -244813, -1056562, 203474, 1659468, -1075889, 3620121, 2057826, -1479616,
--275952, -924492, 1576253, -1517734, -40265, -400506, 242666, 573378, -86436, -445066,
-984621, -760209, -249645, 203474, 658204, 51540, -1311039, -907312, 257161, -865973,
--722091, 868657, -456877, -1606855, -1030792, -1292785, -339302, 204548, 1549410, 11094974,
-2119566, -4102768, 5143760, 654983, -3492345, 10134512, -6800544, -9741523, -5709086, -5906654,
--1988570, 2882460, 3555159, -3366718, 5116380, -6419366, -3500398, -776315, 2128156, 1601486,
--1955821, -2522757, 5724118, 1102196, -390305, -3208878, 4272956, -3125126, -723165, -6442,
--362388, -448824, 1663763, 889058, -881542, 3568044, -1682554, 2175401, -153545, -5820218,
--2283849, -2324651, 6189585, -3431142, -4172561, -7558606, -8832063, -1613834, 449361, -3526705,
-6702297, 905164, 3600256, -2706903, 5801427, 2474438, -3364033, 9355513, -4239133, -4529580,
-724239, 5864241, 8596377, 6087580, 2015413, -2994129, -6765647, 2695629, -83215, 6667400,
-2681133, -1905355, -230854, 3400004, 2731062, 49929, -637266, 280247, -1331977, -2808372,
--265751, 884226, 695785, 2427730, -86436, 1472100, -515396, 1161789, -295816, 221728,
--250182, -1643362, 154082, -299574, -2107755, 1693291, -389231, 1037235, -572841, -1132798,
-156766, 201327, -82141, -740882, 780610, 313533, -557272, -170188, -1621887, 210453,
--915365, 817654, -304943, 1753420, -792421, -10478110, 1628330, -3794604, 2422362, 723702,
-7532299, -9689446, -5557151, -7104413, 3806415, 3199751, 4571456, -5058935, 1738925, -1481227,
-635655, -7895761, -6772627, -4929549, -4925791, 8039105, -3236795, -928787, -156766, 2762738,
--1287417, -8390219, 3540664, -3315715, -1112397, 3934727, 2917357, 4511863, 277562, 2430415,
--5914707, -2403034, 5283347, 8831527, 5148592, -343061, -6726456, 4828080, -2174864, -5760088,
-8002598, 2420214, 2746632, -4888747, -2884071, 2792266, -1822140, -2702608, 4219269, -3288871,
-1462436, 255014, -5593121, -1139777, -3703873, 5912560, 2980171, -768262, 993748, -2651606,
-3468723, 629213, -106300, 1079111, -6691559, -3435437, 3766686, 1868311, -1096827, -813896,
--4759361, 7843147, 9642202, 5376762, -4428648, 4005057, 676457, 3425773, -1476395, 2824478,
--2126009, 1845762, 3520263, 1949378, 1685775, 1329292, 63888, -1138703, -401043, 3504693,
-175557, 278099, -1302449, -199716, 720481, 2126546, -264141, 2490544, 397284, 110595,
--94489, 2030446, 2433099, -1016834, -469762, -226560, 375810, 1789928, -103079, 517544,
-127775, 464930, -877784, -15846819, 5287105, 804233, 3941706, 4268661, -3094524, -11207180,
-8637179, 3669513, 8498667, -1562294, 4505421, -88047, -3058554, -209917, -7921531, 9693741,
-2213519, 919123, -4989142, -2865817, -3379066, 2896419, -4449049, 7424388, 326418, 2556579,
-4136054, 2286533, -476205, 2398202, 2290828, -1733556, 1927904, -8252780, 2146410, 3764002,
-3850975, 7413651, 2574296, -4948876, 2481954, -2492692, 5041755, 979253, 3668976, 5645198,
-925029, -1232119, 4422743, -3039763, -4805532, -1772748, 3085397, 7823820, -1853815, 497142,
-140123, 940598, 1535988, 3281892, 1112933, -2050847, -368830, -2768107, 2014340, 656056,
--4955856, -4356171, 1741609, 2759517, 2760053, 4920959, -7568269, -4063576, -5516886, 6500433,
--2862596, -4019016, 2103997, -3703336, -5394479, -1938641, 150861, 5787469, -2041720, 1880122,
--2299418, -1336272, -335544, 1773822, 764504, -1031329, -876710, 1123671, 2869038, 988379,
-1654099, -779000, -545461, 1964948, -77309, 153008, 731218, -1336272, 2563022, -779537,
--178778, -1177358, -3268470, -484794, -719944, -218506, -36507, -1204202, 128849, 2953864,
--731218, -256624, -558883, -1056025, 3910031, 16094316, 8539469, 7646653, 11149198, 3034395,
-2036888, -6818261, -223338, -12751221, -2297271, 4859756, 3526705, 2268280, 2950643, 3512210,
--2752537, -1862942, 7311645, 6594923, 5656472, -425739, 794032, -9104794, -7888781, -2983929,
-5765994, 1869921, -1196148, 3135863, -5305359, 506806, -2736968, 6346888, 4981625, 11143830,
--1105417, 4207458, 3501472, -1787243, -5841156, 10485089, -6093485, -1377074, 4745939, 233002,
-2697776, 7561290, -2412698, 2823941, -7305740, -15611669, -8661875, -5175973, -2097555, 730144,
--623307, -4020626, -8394514, -1742683, -6027450, 1858110, -139050, 751082, -9466645, -4303021,
-6138045, 2126546, -368293, -10487773, -9496173, 5659693, 1016834, 3448322, -6957310, -5545340,
-374199, -2825552, -5935108, -4212289, 3336116, -1280437, 1537598, 446677, 4172024, 3063386,
-1433445, -2113661, 1130113, -372052, -2525441, -2487323, 2402497, -1019518, 713501, -1606318,
--2436857, -418759, -191663, 2174327, -236223, -2104534, 576599, 818728, 2403034, 476741,
-584652, -1008244, 3007551, -1133335, 3423626, -1876901, 2542084, -2233920, 401579, 1333587,
-128312, -157303, 559956, -507880, -891206, -8137890, 6157373, -3616899, -305480, -21188148,
--5009543, -7829726, -5187247, 867047, 6991133, -1387274, 9245991, 4906464, -553514, -9108015,
--3780645, 13570486, 2261300, -8111583, -5941014, -2673617, 6351720, -4950487, 68183, 4381404,
-6911140, 7814693, -8567923, 5768141, 772020, 1637456, 2436857, 3171297, 2744484, 7835094,
-206695, 2383707, -6868727, 9600863, -4829691, -2253247, 1602560, -7958038, 9842454, -1553704,
--19267760, -6360847, -15473157, 951335, -236760, -4666482, 20956756, -3661997, -10394358, -3516505,
--2565706, 9641665, -1333051, 4602595, 5636608, -3928285, 7182259, 9936944, -5060009, 3786551,
--8841190, 4311074, -3179350, -2488934, 10183367, -3726958, -988916, -4527970, 258235, 179315,
-3877282, 5763309, 6089727, -1621350, -1742683, 246424, 7892003, 3753802, 4097936, 164283,
--6463926, 2598455, -3143916, -3505767, -1938104, -57982, -188442, 425739, 1427540, 1513439,
--386010, 4301410, 689879, 1884417, 741956, 856846, -1205812, 1146219, 431107, -1261647,
--1883880, -1213328, -3236795, -2520609, 2226404, 1804423, -2739116, 756988, -149250, 780610,
-3092913, 668941, -1208496, 348966, 999117, 82141, -2498060, 1121523, 9632538, -13450764,
-2685965, 2753074, -4261145, 1809255, 10137197, 10870025, 4029753, 3890167, 5182415, -8404177,
--1464047, -8973260, -190052, 5739687, 3629784, -1885491, -7103339, -2295660, 4798552, -9301289,
-315680, -658204, 4294431, 8870718, 838592, -4770098, -3641059, 9492415, -6096169, -2934537,
-5458904, -3387119, -11212012, -4051765, 2552284, 1908039, -4482335, 1061931, 5841693, 4043712,
-5634997, -648003, 4249334, 8076149, -3550864, 4031901, 3469797, -5495411, 11963631, -11477226,
-6859063, 3037079, -15972447, 15313169, -9888088, 2194728, -1759326, 12226698, -5172215, -8627516,
--1832340, 101469, 2223183, 9401683, -7958575, -363998, 580894, 577136, -1421634, 2805151,
--6467684, -920197, -4607963, -8597451, -9546102, 5185100, 4191888, 4019016, 111132, 6087580,
--2771865, -6959458, 1840394, -12351789, -10308995, -1907502, 3052111, -68183, -1886564, -1561758,
-1512365, -6742562, -2232846, -1388885, -1069447, 3189013, -290984, 561030, 296890, -2186138,
-1158567, -2461553, 235149, 1235340, -2665027, -535797, 2352032, -1748589, 69256, -1213328,
--45097, 894427, 144418, -3675955, -520765, -4832, -114890, -597000, -2201708, -3784403,
--841814, -193810, -449361, 3153580, 2391223, -10718628, 8497056, -24561844, 13445932, -9778030,
--6720013, -12010339, 1316408, -1445793, 2076080, 8567923, -7242389, -2776696, 6791417, 6235219,
--2101850, 2421288, -3363496, -11259257, -1140851, 2825552, -5840619, 9070434, 1450088, -1066763,
--5479305, -5315559, 1142461, 13980655, 484794, -1972464, 3723200, -12098386, -2202245, 4411469,
--8310762, 11746736, 7345468, -427886, -3722663, -3943317, -4656282, -8043937, -10062035, 8347806,
-490163, 14833743, 1217623, -773094, -6799470, 1231582, -2744484, 3330210, -338766, -9351754,
--7444789, -9529459, -16184511, -2235531, 14019310, -13531831, -964757, -14169097, 2130841, 3993783,
-3163244, 10115722, -1243393, -14565308, 10324565, -1009317, -7182259, -5874979, -12721156, -4306779,
--9703942, 5253819, -14831059, -2445984, 5650030, -107374, 991601, 7037304, 3454228, 8451422,
--92342, -4563940, -1931662, -3125126, -281857, 3124589, -986769, 553514, 303869, 345745,
--2578054, -3571802, 2133525, -2498597, 970126, 461709, -634581, 1130113, 252866, 481036,
-4951561, 929860, -421981, 979789, 1482301, 1138703, -2676838, -370978, -5499706, 2035815,
-2660195, 4228932, 1391033, 1469416, -207232, -2702071, 1512902, -100395, 10517301, -3825742,
-9349070, -9119289, -4887136, 6454799, 2026151, -12318503, 772020, 16117939, -18545668, 1136019,
-8625905, 20857434, -8922795, -5248987, -2302639, 16163573, 15802795, -16678969, -805843, -12801150,
--6171868, 8420283, 8400956, 11074573, 6243272, -2135136, 7734699, -9531606, -5182952, -907849,
--1487132, -13818520, 1216550, -261456, 18343268, -2781528, 9036611, 2241436, 5354751, 12347494,
--7445326, -3258807, -18132278, 12546673, -15979963, -2780991, 3667365, -2101313, -9228811, -2258616,
-2621541, -6505265, 1800665, -1013075, -1395328, -20313584, -14427869, 1069447, -10458782, -14243722,
-2644626, -13163538, 4219806, 8669928, -7758859, 14846628, 3113851, 9552007, 10190347, 2677375,
--7538205, -8887898, -11127187, 5792837, -11545409, 7022272, 8375723, 11597485, 2056216, -8142721,
--5254356, 299574, 1139240, -15227807, -352187, -9834938, -1659468, -2729452, 644782, -7179038,
-981400, -1584306, -76236, -4633196, -3405372, 1207423, 7665443, 888521, -697932, 1120987,
--1054415, -2741800, -2747705, -2972117, -1309428, -3541738, 3976066, 2973728, -233539, -2910914,
-4719632, 7110319, -1520418, -1116155, -1618129, -612033, -194884, 1834488, -2620467, 2899103,
-2630668, 1890323, -2490007, -263067, 1505923, 2165737, 4877472, -9814537, 25395068, 10645613,
-4378183, 13121125, -5030481, 2793339, -13533442, -17352204, 10937134, 22402550, 6634114, -63888,
--22119082, 26709864, 3835943, 3324305, 3806952, 1029182, 4803384, 1562831, -3839164, -124554,
-6716792, -4094715, 8445516, 1664837, -6680822, -9206262, -2541010, 8484708, -2330020, 2794950,
--3835406, -3352759, 127775, 23965380, 3857418, 3497714, 3219078, 2055142, 14329085, -5309117,
-4114579, -9233643, 17075716, 23835994, 6193343, -1339493, -8482560, 24903830, 11680164, 396748,
--9633075, 3666828, -5781563, -863825, -11049340, -4121558, -7374996, -10099616, 16364899, -4886062,
-12059194, 2554969, -9412421, -116501, -20136954, 19160386, -1390496, -9134322, -7153268, -11648488,
--14381698, -7846369, 22269942, -6924024, 8022462, 10133975, -9000641, -8548596, -16068010, 2437394,
-10834055, 3733400, 10359998, -2375654, -2044941, 477278, 2947421, -4408247, 1241782, -7992934,
-2605435, -363998, 9091372, 6416681, -4907537, 500901, -262530, 5410585, -1829656, -7195681,
-1605244, -222265, -576063, 2676838, 505196, -1128503, -3599183, -4039417, -766652, -965831,
-4286914, -165356, 4300336, -5888400, 1435593, 4437238, -8335458, -6088116, 2212445, -2656974,
-6269579, 7528541, -5606006, -5959267, 23675470, 23209466, 28672128, 17252884, 5694053, -7293392,
--7569343, 4287988, 8330089, 10188199, -15234786, -453119, -1813550, 7640747, 6038187, -10576357,
--13036299, -53150, -4937602, 12426951, 14629732, -8590, 7756711, 2550137, 3102577, 16889422,
--10313290, -13676250, 10787347, -17909476, 1551020, -5521181, 9887552, 5041755, 185757, 11557757,
-10615549, -9650255, 12027519, -28454, -5141613, 2842732, 13065827, -5051956, 5591511, 9683541,
-4386772, -20875152, -12065637, 2054605, 1106491, -14193256, -9693204, 4712116, 6756521, 5738077,
--19332184, -13507672, -13452374, -1069447, 8384850, 12221329, -30712774, -22577032, 3760244, 4718559,
-17745732, 6254546, 6510097, 12916577, -1387274, -3316789, -4685810, 31712964, 10967199, -5005785,
--16592532, 15160698, 9908490, -4960687, -4505421, 2339147, -4564477, 8097087, -2922188, -1736241,
-4771172, -1183264, -1899449, -2501819, 5010616, 12998719, 93416, 922881, 457414, 5651103,
-7262790, -1853815, -4568772, 1961190, -424665, 1458678, 853088, 1109175, -6164352, -3370476,
-4371203, 438087, -2507724, 2126546, 6082748, 4728222, -8156680, -1839320, -5422396, -5230197,
-3872987, -6243809, 2447058, -3371549, 6059662, -7225209, -10075456, -19494856, -18979460, -15596100,
-6016713, -2006824, 8800925, -17195976, -2838437, 805306, -6639483, -8046085, 13977971, -5354214,
-2827162, -210453, 969052, -14020384, -5164162, -11988864, 1591285, 1585380, 3111704, 33153390,
--12918725, 9158481, 13951664, -7080791, -6687801, -10028212, -2030983, 15488189, -15804943, 10821170,
--1040456, -2630668, 1448478, 1590212, 8485782, 956704, -16767015, 12825309, -10446434, -24054502,
--19478214, -9752260, 32561220, 27635968, -15024869, -4319127, -20624970, -17204028, -6800007, 20123532,
-518617, 13881871, 7248294, -9458055, 10573136, -7199439, -21467320, -1812476, -13019120, -2646774,
--6979322, 42372000, 382252, -35062504, 27528056, -11104101, -7824357, 27825482, 28267864, 100932,
--12386686, 5523865, 6908992, -38074348, -16391206, 1018981, -5604933, 19947438, 8434242, -28880970,
--4329864, -2309619, 13091060, 8341900, 5695664, 5189394, -6022618, 1040456, 2291902, 12099460,
--1503239, 1673427, 2368138, 2076080, 7102266, 3380676, 157840, -8244727, 10445897, -935229,
--52076, 497142, 10737, -4449586, -6960532, -4757213, 944893, -1709934, 3039226, -462246,
--3085397, 3333968, 7707856, -10245644, -3336653, -3118146, -1472100, 2935610, -199716, -2920041,
--5783174, -2156074, -1494649, 5223754, -16862578, -10484552, 5126044, 4002373, 9173513, 28868086,
-4981625, -731755, 6759205, 1515587, -11996917, -7365332, 6473053, 1494649, 23574002, 5575405,
--1460826, 8536784, 12661027, 12836047, 13813689, 757525, -9674414, -2675228, -22111028, -2994129,
--24967182, 13944685, -15190226, -5871757, 84826, 20237350, -11712913, 11267310, -8222178, 6833293,
--10314364, 12921946, 19520626, 1343788, -4111358, -10482941, -15121506, 8484171, 9715753, 24752970,
--3337727, 1255741, 10916196, 39637716, -9230958, 5953899, -6397354, -22054120, 15511274, -3145527,
-11035382, -1354525, 2749316, -13281649, 36702108, -55004572, 40520332, -63114008, 27235998, -32552094,
-10140955, -25522306, 9218074, 16940962, -4023311, 12590697, -6448357, 46057620, -27906550, 30583926,
--47353088, 23912768, -18556944, 23005992, -15430744, -16719771, -8165270, -4228932, 11632382, -3177739,
--2030446, 1162862, 727997, -5911486, 8279087, -8919573, 8748848, -6445672, 2689187, -10258529,
--5731097, -7579007, 1371168, -6968585, 8638790, 9205726, -8711267, -138513, 3499325, 8448738,
--1267015, 3030100, 6930467, -6487011, 11454141, -3184182, 15146202, -9023189, 18141942, -12936441,
-4671314, -1063541, 10120554, 8395587, -1603633, 4915590, -13973139, 15932181, -10944650, 3871913,
--11121281, 8053601, -14836428, 5098126, -1249299, -5439039, 5609228, 14039711, 11213623, 44458816,
--30917322, 12972949, 8119636, -26612692, -748398, -5189394, -7585986, -13648332, -742493, 1627256,
-17670570, 6646462, 9244380, 13340705, 10749229, 458488, 14733348, -16940424, -2455648, 20540682,
-2275796, -28049358, -6468221, -36723044, -6882685, 6475737, -6823093, -8513699, -1607928, 32940252,
-8304856, 2580739, 4009352, 8293045, -2486786, -18797998, -5782100, -2030446, 3497177, -4285841,
--8817568, 23872502, 12811351, -4858145, -1138166, -5052492, -21534966, -17608292, -12917114, -10667625,
-24024436, 5853504, 8864276, -14416595, -14068702, 4589173, 9776419, 9087077, -4074313, -2781528,
--16335371, -10724533, 14254996, 710817, -39533028, 13970992, 21561272, 6968585, -17231946, -10530186,
--8588324, 2899640, -12408697, 6190659, -29100550, -38823284, 16089484, 14093398, -7780334, -14232985,
-10903848, -6337224, 2818036, 3441880, -5736466, 6287832, -3556770, -3595425, -2114735, 9410810,
--6659347, -1903207, -7284802, -42950, 603443, 6310381, 6468221, -670015, 3809099, -4538707,
-7559680, -5216775, 6174553, -14251775, -6519224, -1919850, 4126390, -4625143, -9338870, -7108171,
-3405372, 7421167, -281320, 9573482, 2672544, 3813931, 581968, 6247030, -3512210, 5971079,
--1433445, -11744051, -9069360, -3432753, 5365488, -6588480, 3899830, -36660232, 32088774, 39051452,
--3675418, 28391882, 1136556, 4335233, 12350178, -25087440, 9102109, 18559090, 18297634, 7679939,
-5654325, -18142478, 13248363, 7799124, -11023570, 5851356, -2207613, 21625160, 5944772, 5524402,
-12765717, -5138929, -14752676, 4247723, 27538794, -9884330, -5383205, 24879134, -9165460, -11149198,
--9088151, 8559333, 31995896, 44511968, -2789581, -28896004, 43656196, 15028627, -28782724, 32561220,
-12457016, -8090645, -8370355, -12227772, -20285130, -1162862, 10632192, -17399450, -11398306, -36742372,
--5000416, 21374442, -44508748, -24111410, 7019587, 7167764, 8772471, 26990112, 23884850, -39553964,
-321586, 1511292, -27992986, 7812009, 13316009, -14364518, -10252624, -12128988, 8109972, 31078384,
-9725953, 16161962, -21253646, 10829760, -24064702, 2104534, -16183974, -65751116, 50287088, 12923020,
--18352396, 34039228, -11744051, -15510738, 9156870, 6956237, 8757975, 13310104, 5383205, -13371307,
--4246649, 13058311, -429497, 5024575, 2105608, -2144263, 3205656, -5865315, 4343286, 12200391,
-4404489, -7199439, -5326297, 3724811, -3267396, -6532109, 2489471, 7611219, 4423280, -22741314,
--6877854, -16748225, -8689793, 9761387, -7467338, -9361418, 8909910, 5756867, -9816685, 12469364,
--9210020, -4030290, 4478577, -7228967, 8196945, -3646427, -13492103, -20862266, 24039468, 79703856,
--25447144, 702227, 6124624, 35986996, 31905164, -10442676, -13852880, -20099910, 855772, 15243376,
--507880, -10276246, -10569378, 14384919, -7849590, -19335406, -17285632, -3491809, 29287918, 20542828,
--23291608, 1564979, 423591, -10155450, 11545409, 4271882, -8312373, -2743947, -6538014, -3123515,
-37387152, -13923210, -24831354, -17380658, -14113799, 33064268, 913754, -7667591, 30445950, 20928838,
-8318278, 15493021, 29938070, -18210662, 4614406, 29127932, 17029546, 22251688, -25282324, -7129646,
--948114, 10656351, 10038949, -23933168, 2279554, -31442918, -47288664, -2498597, -12514461, 21951578,
-24413130, -6411850, -1944547, 4950487, -17199196, -45808512, 30817464, -22203908, 4758287, -8556649,
--15496242, -8997956, -17969070, -36318780, 21432424, 19068582, 23142894, 4453344, -28864864, -50706920,
--15063524, -14042932, -6214818, 16002511, -10384157, -2558727, 3045669, 2125472, -8080444, -3715147,
--6495065, 754841, -2904472, 5326833, -3200288, -3969624, 5859946, 7611756, 6037651, -12306155,
-3993783, 653909, -1132261, 99858, -26972394, 1254667, 3700651, 3911105, -17783312, 11500312,
--2576444, -14846628, -12127377, 7115150, 9474161, -1849520, 5611375, -9193377, -6449431, -6296959,
-683437, 10924786, 2749316, 10423886, -302258, 4771172, -15706695, -2544768, 3780108, 2078764,
--12459163, -3775813, -39140036, -22436910, -18248242, -46079092, 53204444, -1219771, 28021978, -6394670,
-1392643, -32116154, -17566416, -16571058, 3707094, 25164750, -1159104, -26201984, -19602230, -37455872,
--41704132, 35763656, 13187160, -32457604, -10082436, 16014322, 29773788, 4172561, -36970004, -22473416,
-7275675, 10340134, 9165460, 21577378, -22991496, -21808234, -3361349, -7739531, 3032247, 6426345,
--44427140, -8185671, -30991410, -19839528, -41329396, -15661598, 56581364, 9760313, 1773285, 13883482,
-14017163, 4435091, 42041288, 33298344, -11026255, 11313481, 56810068, -14885820, -13293998, -13571560,
--42355892, -1631014, -23201414, -52585432, -55175296, -28913182, -28494960, 12885976, -21347062, 1866700,
-11161009, -37470904, -13758391, 238908, -187905, 9674951, 24477018, 16295643, 29520384, 40018356,
-29003378, -3574487, -21162914, -30655866, -2637110, 12688407, 3710315, -4313221, -409633, 8692477,
-6993818, 18849000, -2148558, 3005403, 307627, -6280853, 6134824, 974421, -3063922, 16107201,
-6939057, 3656628, -15127412, 10159208, -5449777, 7661685, -14359149, -39756900, -1898376, 15698105,
--3002719, -21103322, -13581760, -15444702, -11686069, 5036386, 6892886, 7883413, 2110977, -1413044,
-5873905, 15557982, 25927106, 24531242, 30456686, 26115012, -2550137, 17559436, 39727372, 2822867,
--17523466, -24922622, -25156698, -34163244, -27809376, -13284871, -14970109, -2090039, 35221952, -23026394,
-6957847, -26669062, -9042517, -29083908, 3735548, 35279400, -811212, 21805012, -43616468, 38343320,
-12850005, -7857106, 30392262, 4261682, 13826573, -12155294, -14347338, -272730, 9312563, 7137162,
--30455076, 27960238, -33749852, 4135517, 9446781, -11457362, 19894826, -20977694, -11916387, -2316061,
--7484518, -10619307, -2342905, 4502200, -15583752, -18369038, -5950677, -3214246, -4508642, 11162620,
-6067178, 4548907, -22282828, 5930813, 27114128, 35941360, -26511760, -13357885, 30561914, 41794864,
--25338160, -15671262, 17627082, 7398081, -20122996, 16709570, -47270948, -9309342, 19267224, 37790880,
-4920959, -23442468, -21195126, 5736466, 45296336, 3948686, 6794639, 1359357, 15035070, -2901251,
-33666100, -368293, -37234144, 23502598, -24291798, -7450695, 10314364, -14219026, 3409130, -30316026,
--11288248, 28111634, 12958990, -12594455, -17993766, -9851044, 2366527, -14615237, -4395362, -3222299,
--8940511, -5491653, -4305168, -18975702, 12040941, -7092065, -8397735, -27485644, -6906308, 20219096,
--13961865, -7721278, -7261716, -15697032, 30262340, 12410845, 1201517, -992674, -16749836, -25160456,
-1660005, 22507240, 18526878, 6199249, -18866180, -11057930, -8391292, 10980621, 2075006, -16828756,
--4099010, 1093606, 6710350, -14968498, -9996536, -8829379, 23551454, 12037720, 1604170, -14539001,
--12512313, 13161390, 28309740, -282931, -12048994, -17365626, -5794985, 7849053, 716186, -4001836,
-1104880, -3464428, -2565706, 2673080, -56834764, -15902653, 9708774, -19330574, 56313464, 41024992,
-27085138, 14196478, 38018512, 26644366, 9004399, 18095770, -44542032, -60117732, -8256001, 404801,
--15349676, 7850664, -2784750, -15832323, -19582904, -16209743, 31150324, 26865558, -21567178, -2957622,
--2936684, -5614059, -7615514, -11460046, -16304770, -23124104, -4299799, 40349072, -12874701, -22687090,
--10665478, 37860672, -17678086, -17655000, 58954332, 20772610, 10003516, -14487998, -32240172, -22748832,
--33257006, 8855149, 27630062, 74175696, -65212636, -27864674, 38434588, 52910776, 9373229, -3277060,
-68245960, 32516124, -21383568, 21586506, -7730405, 145492, -47068008, -23906324, -16372415, -77454368,
--32689532, -12564390, 41769632, -22608170, -12914967, 30988190, -1947231, -4196720, 7556458, 21793200,
--21012590, 15391015, 23779624, 493384, -4380867, -43728672, 20276004, 15615427, -50363324, -3686693,
-5590437, 3246995, -4172024, -22436372, 6094022, 3790309, 6429029, -3561602, -6354404, 16134582,
-3571802, -3379066, 11258183, 4607426, 29799020, -4069482, 9859634, 1869921, -23438710, -20536386,
-14541149, -11433740, 8890582, 11078868, 7002944, 6840273, 324807, 19609210, -6130529, -4912369,
--7608535, 5627481, 15408732, -23007066, -8429410, 11049340, 5266167, -13034689, -23336168, -5998996,
-6577206, 49292264, 18099530, -4116189, 12794171, -2502355, -4552666, -18168786, 8727374, 7524246,
--14321568, -6982006, -52141440, -2122251, 21483964, -5037460, -21738976, 9519795, -4878009, 23463944,
-4696010, -11365020, -174483, 25119116, -14292577, 4042638, 9079561, -7641284, -215822, -13587666,
-27741194, -1664837, 4132832, 445066, 13408888, -6068789, -5216238, -8669391, 5548561, 10425496,
--4564477, 12385075, -5358509, 7632157, -13007845, -10248866, 15799574, 20259898, -26170310, 1224603,
-39192, 2454574, 8253854, -16466368, 25266756, -22626424, 20337208, 2848100, -35321812, -1924682,
-27576374, -35955856, 17162690, 158377, 4652524, -8631811, -5379984, 7268159, -10424959, 36826660,
--27236536, 4074313, -7304666, -3302830, 9088151, 517544, -4464619, -843961, 11141682, -345745,
--12773770, 3602941, 6491843, -21392158, 16648904, 7515119, 789200, 15346455, -5612449, -4745939,
-7229504, 3353833, 4587025, 2609730, -4229469, 8664023, 3733937, 642635, -9356049, -1545115,
-4575214, 8304320, -14202920, 7434052, 8853001, -12554726, 5958194, 1842541, 2139968, 6626061,
--3733937, 1480153, -2340220, -18211198, -273804, -4403952, 7955353, -5130339, 3037616, 1997160,
--751082, 2428267, 4609037, -3018825, 4295, 819265, -130997, 1315871, 5534066, -5647345,
-5185100, -4125316, -26274462, -74187504, -105962208, 35633196, 94238560, 20808042, 261197360, 215122032,
-145350288, 245979760, 128133368, -8739185, -30689152, -97119408, -224258496, -185192016, -180112672, -250465312,
--185173216, -54378580, -40103184, -6555731, 87158312, 40580460, -10827076, 55288040, 91443608, 44781476,
-42848204, 83224120, 49582712, 38241316, 75406744, 118406880, 49300320, 69510288, 111144624, 19077708,
-7546258, 98209792, 58076012, -37649684, 47359532, 61028800, -63678260, -18997178, 70382168, -14176076,
--42127724, 90914256, 48194364, -56398828, 48798344, 64725156, -86312200, -80798000, -34509524, -208447648,
--276600736, -173480704, -244529136, -325952576, -227131296, -232436656, -300528000, -237652896, -164791456, -178677088,
--106789528, 10205916, 66716412, 145021184, 237282992, 295772384, 364217536, 404668608, 442085824, 468772608,
-420947072, 331012064, 305788800, 196009952, 59263568, 46551540, -31323196, -150494576, -118199648, -50157700,
--111970336, -115118008, -24298240, -81093816, -155436480, -93868656, -68067712, -139036688, -118374664, -41826004,
--105197704, -124978176, -9959492, -6238977, -56297356, 22367652, 13051332, -90618440, -67170064, -38986492,
--129012768, -177761712, -145357264, -198545056, -246279872, -182703072, -146731120, -139179488, -60919816, 28548110,
-74086576, 109913584, 151769648, 171272560, 153622384, 200292048, 256780528, 266178992, 248589488, 253168992,
-244185536, 198255152, 223857984, 202116336, 86896312, 11434814, -49597208, -109308528, -115546968, -95266672,
--112528144, -110007536, -95225864, -93947576, -100153808, -82252384, -73451456, -70123928, -66205848, -51005420,
--48302812, -50069656, -39617852, -25890600, -23276038, -14841796, -1594507, 6151467, 6395743, 7705708,
-2896419, 1775969, 0, 0, 0, 0, 0, 0, },
+6170258, -3467112, 1032940, -5153961, 1443109, 580357, 7864622, -4709432, 15569, -2477123,
+3941706, 4025458, -2567317, -488016, -2206540, -1264868, -2579128, -3210488, 2369748, 775778,
+-2099702, 4391604, 3998078, 6833830, -201863, 2589329, 1359357, -112206, -6172405, 1607928,
+2572149, -2434710, 1545115, -1794223, -2091649, -3385508, 1760937, 4363687, 453656, 5091684,
+-2073932, -430034, 5135171, 2688650, 418759, -59593, 4878546, 7326141, -5439039, 1224603,
+-1874216, -839129, -8468602, -3003256, 3433290, -2627446, 2381559, 1102196, -1236951, -2050310,
+1207960, -697932, 2652679, 1440425, 1241246, 1360431, -4389994, 173946, -2105071, 2714419,
+4500052, 3156801, -628139, 4871567, 43487, 2071785, -632434, -1071058, 273267, 2448668,
+2824478, -908922, -1904818, -3950296, -496606, -1736241, -1859721, -1045288, -1579474, -1129576,
+-1862405, -972810, -29528, -13422, 61203, 1574642, -1063004, 829466, -371515, -747861,
+62814, 728534, 282931, 583042, 22012, -511101, 32212, 744640, 265214, -1062468,
+-811749, -27380, 35433, 450972, 89657, 815507, -1052804, 3673271, -4502737, -4709969,
+178241, -6343130, 1164473, -1997160, 3082713, -1699196, -5031554, 572304, 4932770, -753767,
+170188, 6868190, 8632884, -3725347, -3961034, -1125818, -6417218, 2741800, 586263, 1599875,
+-2256469, 3426310, -4471061, -814433, 3062312, -2516314, -916976, 469225, 5563057, 358093,
+4025458, -5304822, 5212480, -568009, 754304, 3374234, -2910914, 2815351, -1321239, -1347009,
+2425583, 3199751, -541166, 1830193, -7035157, 4255239, 4130685, -7458211, -6564321, -1854352,
+-5443871, -1525787, 2077690, 1354525, 1983738, 114354, -1813550, 4589710, -1535988, 168041,
+-1833414, 1081258, -2777770, 3905199, 958851, -3004867, -1678259, -1189706, -1739999, -1541356,
+3956739, 5181878, -244813, -1056562, 203474, 1659468, -1075889, 3620121, 2057826, -1479616,
+-275952, -924492, 1576253, -1517734, -40265, -400506, 242666, 573378, -86436, -445066,
+984621, -760209, -249645, 203474, 658204, 51540, -1311039, -907312, 257161, -865973,
+-722091, 868657, -456877, -1606855, -1030792, -1292785, -339302, 204548, 1549410, 11094974,
+2119566, -4102768, 5143760, 654983, -3492345, 10134512, -6800544, -9741523, -5709086, -5906654,
+-1988570, 2882460, 3555159, -3366718, 5116380, -6419366, -3500398, -776315, 2128156, 1601486,
+-1955821, -2522757, 5724118, 1102196, -390305, -3208878, 4272956, -3125126, -723165, -6442,
+-362388, -448824, 1663763, 889058, -881542, 3568044, -1682554, 2175401, -153545, -5820218,
+-2283849, -2324651, 6189585, -3431142, -4172561, -7558606, -8832063, -1613834, 449361, -3526705,
+6702297, 905164, 3600256, -2706903, 5801427, 2474438, -3364033, 9355513, -4239133, -4529580,
+724239, 5864241, 8596377, 6087580, 2015413, -2994129, -6765647, 2695629, -83215, 6667400,
+2681133, -1905355, -230854, 3400004, 2731062, 49929, -637266, 280247, -1331977, -2808372,
+-265751, 884226, 695785, 2427730, -86436, 1472100, -515396, 1161789, -295816, 221728,
+-250182, -1643362, 154082, -299574, -2107755, 1693291, -389231, 1037235, -572841, -1132798,
+156766, 201327, -82141, -740882, 780610, 313533, -557272, -170188, -1621887, 210453,
+-915365, 817654, -304943, 1753420, -792421, -10478110, 1628330, -3794604, 2422362, 723702,
+7532299, -9689446, -5557151, -7104413, 3806415, 3199751, 4571456, -5058935, 1738925, -1481227,
+635655, -7895761, -6772627, -4929549, -4925791, 8039105, -3236795, -928787, -156766, 2762738,
+-1287417, -8390219, 3540664, -3315715, -1112397, 3934727, 2917357, 4511863, 277562, 2430415,
+-5914707, -2403034, 5283347, 8831527, 5148592, -343061, -6726456, 4828080, -2174864, -5760088,
+8002598, 2420214, 2746632, -4888747, -2884071, 2792266, -1822140, -2702608, 4219269, -3288871,
+1462436, 255014, -5593121, -1139777, -3703873, 5912560, 2980171, -768262, 993748, -2651606,
+3468723, 629213, -106300, 1079111, -6691559, -3435437, 3766686, 1868311, -1096827, -813896,
+-4759361, 7843147, 9642202, 5376762, -4428648, 4005057, 676457, 3425773, -1476395, 2824478,
+-2126009, 1845762, 3520263, 1949378, 1685775, 1329292, 63888, -1138703, -401043, 3504693,
+175557, 278099, -1302449, -199716, 720481, 2126546, -264141, 2490544, 397284, 110595,
+-94489, 2030446, 2433099, -1016834, -469762, -226560, 375810, 1789928, -103079, 517544,
+127775, 464930, -877784, -15846819, 5287105, 804233, 3941706, 4268661, -3094524, -11207180,
+8637179, 3669513, 8498667, -1562294, 4505421, -88047, -3058554, -209917, -7921531, 9693741,
+2213519, 919123, -4989142, -2865817, -3379066, 2896419, -4449049, 7424388, 326418, 2556579,
+4136054, 2286533, -476205, 2398202, 2290828, -1733556, 1927904, -8252780, 2146410, 3764002,
+3850975, 7413651, 2574296, -4948876, 2481954, -2492692, 5041755, 979253, 3668976, 5645198,
+925029, -1232119, 4422743, -3039763, -4805532, -1772748, 3085397, 7823820, -1853815, 497142,
+140123, 940598, 1535988, 3281892, 1112933, -2050847, -368830, -2768107, 2014340, 656056,
+-4955856, -4356171, 1741609, 2759517, 2760053, 4920959, -7568269, -4063576, -5516886, 6500433,
+-2862596, -4019016, 2103997, -3703336, -5394479, -1938641, 150861, 5787469, -2041720, 1880122,
+-2299418, -1336272, -335544, 1773822, 764504, -1031329, -876710, 1123671, 2869038, 988379,
+1654099, -779000, -545461, 1964948, -77309, 153008, 731218, -1336272, 2563022, -779537,
+-178778, -1177358, -3268470, -484794, -719944, -218506, -36507, -1204202, 128849, 2953864,
+-731218, -256624, -558883, -1056025, 3910031, 16094316, 8539469, 7646653, 11149198, 3034395,
+2036888, -6818261, -223338, -12751221, -2297271, 4859756, 3526705, 2268280, 2950643, 3512210,
+-2752537, -1862942, 7311645, 6594923, 5656472, -425739, 794032, -9104794, -7888781, -2983929,
+5765994, 1869921, -1196148, 3135863, -5305359, 506806, -2736968, 6346888, 4981625, 11143830,
+-1105417, 4207458, 3501472, -1787243, -5841156, 10485089, -6093485, -1377074, 4745939, 233002,
+2697776, 7561290, -2412698, 2823941, -7305740, -15611669, -8661875, -5175973, -2097555, 730144,
+-623307, -4020626, -8394514, -1742683, -6027450, 1858110, -139050, 751082, -9466645, -4303021,
+6138045, 2126546, -368293, -10487773, -9496173, 5659693, 1016834, 3448322, -6957310, -5545340,
+374199, -2825552, -5935108, -4212289, 3336116, -1280437, 1537598, 446677, 4172024, 3063386,
+1433445, -2113661, 1130113, -372052, -2525441, -2487323, 2402497, -1019518, 713501, -1606318,
+-2436857, -418759, -191663, 2174327, -236223, -2104534, 576599, 818728, 2403034, 476741,
+584652, -1008244, 3007551, -1133335, 3423626, -1876901, 2542084, -2233920, 401579, 1333587,
+128312, -157303, 559956, -507880, -891206, -8137890, 6157373, -3616899, -305480, -21188148,
+-5009543, -7829726, -5187247, 867047, 6991133, -1387274, 9245991, 4906464, -553514, -9108015,
+-3780645, 13570486, 2261300, -8111583, -5941014, -2673617, 6351720, -4950487, 68183, 4381404,
+6911140, 7814693, -8567923, 5768141, 772020, 1637456, 2436857, 3171297, 2744484, 7835094,
+206695, 2383707, -6868727, 9600863, -4829691, -2253247, 1602560, -7958038, 9842454, -1553704,
+-19267760, -6360847, -15473157, 951335, -236760, -4666482, 20956756, -3661997, -10394358, -3516505,
+-2565706, 9641665, -1333051, 4602595, 5636608, -3928285, 7182259, 9936944, -5060009, 3786551,
+-8841190, 4311074, -3179350, -2488934, 10183367, -3726958, -988916, -4527970, 258235, 179315,
+3877282, 5763309, 6089727, -1621350, -1742683, 246424, 7892003, 3753802, 4097936, 164283,
+-6463926, 2598455, -3143916, -3505767, -1938104, -57982, -188442, 425739, 1427540, 1513439,
+-386010, 4301410, 689879, 1884417, 741956, 856846, -1205812, 1146219, 431107, -1261647,
+-1883880, -1213328, -3236795, -2520609, 2226404, 1804423, -2739116, 756988, -149250, 780610,
+3092913, 668941, -1208496, 348966, 999117, 82141, -2498060, 1121523, 9632538, -13450764,
+2685965, 2753074, -4261145, 1809255, 10137197, 10870025, 4029753, 3890167, 5182415, -8404177,
+-1464047, -8973260, -190052, 5739687, 3629784, -1885491, -7103339, -2295660, 4798552, -9301289,
+315680, -658204, 4294431, 8870718, 838592, -4770098, -3641059, 9492415, -6096169, -2934537,
+5458904, -3387119, -11212012, -4051765, 2552284, 1908039, -4482335, 1061931, 5841693, 4043712,
+5634997, -648003, 4249334, 8076149, -3550864, 4031901, 3469797, -5495411, 11963631, -11477226,
+6859063, 3037079, -15972447, 15313169, -9888088, 2194728, -1759326, 12226698, -5172215, -8627516,
+-1832340, 101469, 2223183, 9401683, -7958575, -363998, 580894, 577136, -1421634, 2805151,
+-6467684, -920197, -4607963, -8597451, -9546102, 5185100, 4191888, 4019016, 111132, 6087580,
+-2771865, -6959458, 1840394, -12351789, -10308995, -1907502, 3052111, -68183, -1886564, -1561758,
+1512365, -6742562, -2232846, -1388885, -1069447, 3189013, -290984, 561030, 296890, -2186138,
+1158567, -2461553, 235149, 1235340, -2665027, -535797, 2352032, -1748589, 69256, -1213328,
+-45097, 894427, 144418, -3675955, -520765, -4832, -114890, -597000, -2201708, -3784403,
+-841814, -193810, -449361, 3153580, 2391223, -10718628, 8497056, -24561844, 13445932, -9778030,
+-6720013, -12010339, 1316408, -1445793, 2076080, 8567923, -7242389, -2776696, 6791417, 6235219,
+-2101850, 2421288, -3363496, -11259257, -1140851, 2825552, -5840619, 9070434, 1450088, -1066763,
+-5479305, -5315559, 1142461, 13980655, 484794, -1972464, 3723200, -12098386, -2202245, 4411469,
+-8310762, 11746736, 7345468, -427886, -3722663, -3943317, -4656282, -8043937, -10062035, 8347806,
+490163, 14833743, 1217623, -773094, -6799470, 1231582, -2744484, 3330210, -338766, -9351754,
+-7444789, -9529459, -16184511, -2235531, 14019310, -13531831, -964757, -14169097, 2130841, 3993783,
+3163244, 10115722, -1243393, -14565308, 10324565, -1009317, -7182259, -5874979, -12721156, -4306779,
+-9703942, 5253819, -14831059, -2445984, 5650030, -107374, 991601, 7037304, 3454228, 8451422,
+-92342, -4563940, -1931662, -3125126, -281857, 3124589, -986769, 553514, 303869, 345745,
+-2578054, -3571802, 2133525, -2498597, 970126, 461709, -634581, 1130113, 252866, 481036,
+4951561, 929860, -421981, 979789, 1482301, 1138703, -2676838, -370978, -5499706, 2035815,
+2660195, 4228932, 1391033, 1469416, -207232, -2702071, 1512902, -100395, 10517301, -3825742,
+9349070, -9119289, -4887136, 6454799, 2026151, -12318503, 772020, 16117939, -18545668, 1136019,
+8625905, 20857434, -8922795, -5248987, -2302639, 16163573, 15802795, -16678969, -805843, -12801150,
+-6171868, 8420283, 8400956, 11074573, 6243272, -2135136, 7734699, -9531606, -5182952, -907849,
+-1487132, -13818520, 1216550, -261456, 18343268, -2781528, 9036611, 2241436, 5354751, 12347494,
+-7445326, -3258807, -18132278, 12546673, -15979963, -2780991, 3667365, -2101313, -9228811, -2258616,
+2621541, -6505265, 1800665, -1013075, -1395328, -20313584, -14427869, 1069447, -10458782, -14243722,
+2644626, -13163538, 4219806, 8669928, -7758859, 14846628, 3113851, 9552007, 10190347, 2677375,
+-7538205, -8887898, -11127187, 5792837, -11545409, 7022272, 8375723, 11597485, 2056216, -8142721,
+-5254356, 299574, 1139240, -15227807, -352187, -9834938, -1659468, -2729452, 644782, -7179038,
+981400, -1584306, -76236, -4633196, -3405372, 1207423, 7665443, 888521, -697932, 1120987,
+-1054415, -2741800, -2747705, -2972117, -1309428, -3541738, 3976066, 2973728, -233539, -2910914,
+4719632, 7110319, -1520418, -1116155, -1618129, -612033, -194884, 1834488, -2620467, 2899103,
+2630668, 1890323, -2490007, -263067, 1505923, 2165737, 4877472, -9814537, 25395068, 10645613,
+4378183, 13121125, -5030481, 2793339, -13533442, -17352204, 10937134, 22402550, 6634114, -63888,
+-22119082, 26709864, 3835943, 3324305, 3806952, 1029182, 4803384, 1562831, -3839164, -124554,
+6716792, -4094715, 8445516, 1664837, -6680822, -9206262, -2541010, 8484708, -2330020, 2794950,
+-3835406, -3352759, 127775, 23965380, 3857418, 3497714, 3219078, 2055142, 14329085, -5309117,
+4114579, -9233643, 17075716, 23835994, 6193343, -1339493, -8482560, 24903830, 11680164, 396748,
+-9633075, 3666828, -5781563, -863825, -11049340, -4121558, -7374996, -10099616, 16364899, -4886062,
+12059194, 2554969, -9412421, -116501, -20136954, 19160386, -1390496, -9134322, -7153268, -11648488,
+-14381698, -7846369, 22269942, -6924024, 8022462, 10133975, -9000641, -8548596, -16068010, 2437394,
+10834055, 3733400, 10359998, -2375654, -2044941, 477278, 2947421, -4408247, 1241782, -7992934,
+2605435, -363998, 9091372, 6416681, -4907537, 500901, -262530, 5410585, -1829656, -7195681,
+1605244, -222265, -576063, 2676838, 505196, -1128503, -3599183, -4039417, -766652, -965831,
+4286914, -165356, 4300336, -5888400, 1435593, 4437238, -8335458, -6088116, 2212445, -2656974,
+6269579, 7528541, -5606006, -5959267, 23675470, 23209466, 28672128, 17252884, 5694053, -7293392,
+-7569343, 4287988, 8330089, 10188199, -15234786, -453119, -1813550, 7640747, 6038187, -10576357,
+-13036299, -53150, -4937602, 12426951, 14629732, -8590, 7756711, 2550137, 3102577, 16889422,
+-10313290, -13676250, 10787347, -17909476, 1551020, -5521181, 9887552, 5041755, 185757, 11557757,
+10615549, -9650255, 12027519, -28454, -5141613, 2842732, 13065827, -5051956, 5591511, 9683541,
+4386772, -20875152, -12065637, 2054605, 1106491, -14193256, -9693204, 4712116, 6756521, 5738077,
+-19332184, -13507672, -13452374, -1069447, 8384850, 12221329, -30712774, -22577032, 3760244, 4718559,
+17745732, 6254546, 6510097, 12916577, -1387274, -3316789, -4685810, 31712964, 10967199, -5005785,
+-16592532, 15160698, 9908490, -4960687, -4505421, 2339147, -4564477, 8097087, -2922188, -1736241,
+4771172, -1183264, -1899449, -2501819, 5010616, 12998719, 93416, 922881, 457414, 5651103,
+7262790, -1853815, -4568772, 1961190, -424665, 1458678, 853088, 1109175, -6164352, -3370476,
+4371203, 438087, -2507724, 2126546, 6082748, 4728222, -8156680, -1839320, -5422396, -5230197,
+3872987, -6243809, 2447058, -3371549, 6059662, -7225209, -10075456, -19494856, -18979460, -15596100,
+6016713, -2006824, 8800925, -17195976, -2838437, 805306, -6639483, -8046085, 13977971, -5354214,
+2827162, -210453, 969052, -14020384, -5164162, -11988864, 1591285, 1585380, 3111704, 33153390,
+-12918725, 9158481, 13951664, -7080791, -6687801, -10028212, -2030983, 15488189, -15804943, 10821170,
+-1040456, -2630668, 1448478, 1590212, 8485782, 956704, -16767015, 12825309, -10446434, -24054502,
+-19478214, -9752260, 32561220, 27635968, -15024869, -4319127, -20624970, -17204028, -6800007, 20123532,
+518617, 13881871, 7248294, -9458055, 10573136, -7199439, -21467320, -1812476, -13019120, -2646774,
+-6979322, 42372000, 382252, -35062504, 27528056, -11104101, -7824357, 27825482, 28267864, 100932,
+-12386686, 5523865, 6908992, -38074348, -16391206, 1018981, -5604933, 19947438, 8434242, -28880970,
+-4329864, -2309619, 13091060, 8341900, 5695664, 5189394, -6022618, 1040456, 2291902, 12099460,
+-1503239, 1673427, 2368138, 2076080, 7102266, 3380676, 157840, -8244727, 10445897, -935229,
+-52076, 497142, 10737, -4449586, -6960532, -4757213, 944893, -1709934, 3039226, -462246,
+-3085397, 3333968, 7707856, -10245644, -3336653, -3118146, -1472100, 2935610, -199716, -2920041,
+-5783174, -2156074, -1494649, 5223754, -16862578, -10484552, 5126044, 4002373, 9173513, 28868086,
+4981625, -731755, 6759205, 1515587, -11996917, -7365332, 6473053, 1494649, 23574002, 5575405,
+-1460826, 8536784, 12661027, 12836047, 13813689, 757525, -9674414, -2675228, -22111028, -2994129,
+-24967182, 13944685, -15190226, -5871757, 84826, 20237350, -11712913, 11267310, -8222178, 6833293,
+-10314364, 12921946, 19520626, 1343788, -4111358, -10482941, -15121506, 8484171, 9715753, 24752970,
+-3337727, 1255741, 10916196, 39637716, -9230958, 5953899, -6397354, -22054120, 15511274, -3145527,
+11035382, -1354525, 2749316, -13281649, 36702108, -55004572, 40520332, -63114008, 27235998, -32552094,
+10140955, -25522306, 9218074, 16940962, -4023311, 12590697, -6448357, 46057620, -27906550, 30583926,
+-47353088, 23912768, -18556944, 23005992, -15430744, -16719771, -8165270, -4228932, 11632382, -3177739,
+-2030446, 1162862, 727997, -5911486, 8279087, -8919573, 8748848, -6445672, 2689187, -10258529,
+-5731097, -7579007, 1371168, -6968585, 8638790, 9205726, -8711267, -138513, 3499325, 8448738,
+-1267015, 3030100, 6930467, -6487011, 11454141, -3184182, 15146202, -9023189, 18141942, -12936441,
+4671314, -1063541, 10120554, 8395587, -1603633, 4915590, -13973139, 15932181, -10944650, 3871913,
+-11121281, 8053601, -14836428, 5098126, -1249299, -5439039, 5609228, 14039711, 11213623, 44458816,
+-30917322, 12972949, 8119636, -26612692, -748398, -5189394, -7585986, -13648332, -742493, 1627256,
+17670570, 6646462, 9244380, 13340705, 10749229, 458488, 14733348, -16940424, -2455648, 20540682,
+2275796, -28049358, -6468221, -36723044, -6882685, 6475737, -6823093, -8513699, -1607928, 32940252,
+8304856, 2580739, 4009352, 8293045, -2486786, -18797998, -5782100, -2030446, 3497177, -4285841,
+-8817568, 23872502, 12811351, -4858145, -1138166, -5052492, -21534966, -17608292, -12917114, -10667625,
+24024436, 5853504, 8864276, -14416595, -14068702, 4589173, 9776419, 9087077, -4074313, -2781528,
+-16335371, -10724533, 14254996, 710817, -39533028, 13970992, 21561272, 6968585, -17231946, -10530186,
+-8588324, 2899640, -12408697, 6190659, -29100550, -38823284, 16089484, 14093398, -7780334, -14232985,
+10903848, -6337224, 2818036, 3441880, -5736466, 6287832, -3556770, -3595425, -2114735, 9410810,
+-6659347, -1903207, -7284802, -42950, 603443, 6310381, 6468221, -670015, 3809099, -4538707,
+7559680, -5216775, 6174553, -14251775, -6519224, -1919850, 4126390, -4625143, -9338870, -7108171,
+3405372, 7421167, -281320, 9573482, 2672544, 3813931, 581968, 6247030, -3512210, 5971079,
+-1433445, -11744051, -9069360, -3432753, 5365488, -6588480, 3899830, -36660232, 32088774, 39051452,
+-3675418, 28391882, 1136556, 4335233, 12350178, -25087440, 9102109, 18559090, 18297634, 7679939,
+5654325, -18142478, 13248363, 7799124, -11023570, 5851356, -2207613, 21625160, 5944772, 5524402,
+12765717, -5138929, -14752676, 4247723, 27538794, -9884330, -5383205, 24879134, -9165460, -11149198,
+-9088151, 8559333, 31995896, 44511968, -2789581, -28896004, 43656196, 15028627, -28782724, 32561220,
+12457016, -8090645, -8370355, -12227772, -20285130, -1162862, 10632192, -17399450, -11398306, -36742372,
+-5000416, 21374442, -44508748, -24111410, 7019587, 7167764, 8772471, 26990112, 23884850, -39553964,
+321586, 1511292, -27992986, 7812009, 13316009, -14364518, -10252624, -12128988, 8109972, 31078384,
+9725953, 16161962, -21253646, 10829760, -24064702, 2104534, -16183974, -65751116, 50287088, 12923020,
+-18352396, 34039228, -11744051, -15510738, 9156870, 6956237, 8757975, 13310104, 5383205, -13371307,
+-4246649, 13058311, -429497, 5024575, 2105608, -2144263, 3205656, -5865315, 4343286, 12200391,
+4404489, -7199439, -5326297, 3724811, -3267396, -6532109, 2489471, 7611219, 4423280, -22741314,
+-6877854, -16748225, -8689793, 9761387, -7467338, -9361418, 8909910, 5756867, -9816685, 12469364,
+-9210020, -4030290, 4478577, -7228967, 8196945, -3646427, -13492103, -20862266, 24039468, 79703856,
+-25447144, 702227, 6124624, 35986996, 31905164, -10442676, -13852880, -20099910, 855772, 15243376,
+-507880, -10276246, -10569378, 14384919, -7849590, -19335406, -17285632, -3491809, 29287918, 20542828,
+-23291608, 1564979, 423591, -10155450, 11545409, 4271882, -8312373, -2743947, -6538014, -3123515,
+37387152, -13923210, -24831354, -17380658, -14113799, 33064268, 913754, -7667591, 30445950, 20928838,
+8318278, 15493021, 29938070, -18210662, 4614406, 29127932, 17029546, 22251688, -25282324, -7129646,
+-948114, 10656351, 10038949, -23933168, 2279554, -31442918, -47288664, -2498597, -12514461, 21951578,
+24413130, -6411850, -1944547, 4950487, -17199196, -45808512, 30817464, -22203908, 4758287, -8556649,
+-15496242, -8997956, -17969070, -36318780, 21432424, 19068582, 23142894, 4453344, -28864864, -50706920,
+-15063524, -14042932, -6214818, 16002511, -10384157, -2558727, 3045669, 2125472, -8080444, -3715147,
+-6495065, 754841, -2904472, 5326833, -3200288, -3969624, 5859946, 7611756, 6037651, -12306155,
+3993783, 653909, -1132261, 99858, -26972394, 1254667, 3700651, 3911105, -17783312, 11500312,
+-2576444, -14846628, -12127377, 7115150, 9474161, -1849520, 5611375, -9193377, -6449431, -6296959,
+683437, 10924786, 2749316, 10423886, -302258, 4771172, -15706695, -2544768, 3780108, 2078764,
+-12459163, -3775813, -39140036, -22436910, -18248242, -46079092, 53204444, -1219771, 28021978, -6394670,
+1392643, -32116154, -17566416, -16571058, 3707094, 25164750, -1159104, -26201984, -19602230, -37455872,
+-41704132, 35763656, 13187160, -32457604, -10082436, 16014322, 29773788, 4172561, -36970004, -22473416,
+7275675, 10340134, 9165460, 21577378, -22991496, -21808234, -3361349, -7739531, 3032247, 6426345,
+-44427140, -8185671, -30991410, -19839528, -41329396, -15661598, 56581364, 9760313, 1773285, 13883482,
+14017163, 4435091, 42041288, 33298344, -11026255, 11313481, 56810068, -14885820, -13293998, -13571560,
+-42355892, -1631014, -23201414, -52585432, -55175296, -28913182, -28494960, 12885976, -21347062, 1866700,
+11161009, -37470904, -13758391, 238908, -187905, 9674951, 24477018, 16295643, 29520384, 40018356,
+29003378, -3574487, -21162914, -30655866, -2637110, 12688407, 3710315, -4313221, -409633, 8692477,
+6993818, 18849000, -2148558, 3005403, 307627, -6280853, 6134824, 974421, -3063922, 16107201,
+6939057, 3656628, -15127412, 10159208, -5449777, 7661685, -14359149, -39756900, -1898376, 15698105,
+-3002719, -21103322, -13581760, -15444702, -11686069, 5036386, 6892886, 7883413, 2110977, -1413044,
+5873905, 15557982, 25927106, 24531242, 30456686, 26115012, -2550137, 17559436, 39727372, 2822867,
+-17523466, -24922622, -25156698, -34163244, -27809376, -13284871, -14970109, -2090039, 35221952, -23026394,
+6957847, -26669062, -9042517, -29083908, 3735548, 35279400, -811212, 21805012, -43616468, 38343320,
+12850005, -7857106, 30392262, 4261682, 13826573, -12155294, -14347338, -272730, 9312563, 7137162,
+-30455076, 27960238, -33749852, 4135517, 9446781, -11457362, 19894826, -20977694, -11916387, -2316061,
+-7484518, -10619307, -2342905, 4502200, -15583752, -18369038, -5950677, -3214246, -4508642, 11162620,
+6067178, 4548907, -22282828, 5930813, 27114128, 35941360, -26511760, -13357885, 30561914, 41794864,
+-25338160, -15671262, 17627082, 7398081, -20122996, 16709570, -47270948, -9309342, 19267224, 37790880,
+4920959, -23442468, -21195126, 5736466, 45296336, 3948686, 6794639, 1359357, 15035070, -2901251,
+33666100, -368293, -37234144, 23502598, -24291798, -7450695, 10314364, -14219026, 3409130, -30316026,
+-11288248, 28111634, 12958990, -12594455, -17993766, -9851044, 2366527, -14615237, -4395362, -3222299,
+-8940511, -5491653, -4305168, -18975702, 12040941, -7092065, -8397735, -27485644, -6906308, 20219096,
+-13961865, -7721278, -7261716, -15697032, 30262340, 12410845, 1201517, -992674, -16749836, -25160456,
+1660005, 22507240, 18526878, 6199249, -18866180, -11057930, -8391292, 10980621, 2075006, -16828756,
+-4099010, 1093606, 6710350, -14968498, -9996536, -8829379, 23551454, 12037720, 1604170, -14539001,
+-12512313, 13161390, 28309740, -282931, -12048994, -17365626, -5794985, 7849053, 716186, -4001836,
+1104880, -3464428, -2565706, 2673080, -56834764, -15902653, 9708774, -19330574, 56313464, 41024992,
+27085138, 14196478, 38018512, 26644366, 9004399, 18095770, -44542032, -60117732, -8256001, 404801,
+-15349676, 7850664, -2784750, -15832323, -19582904, -16209743, 31150324, 26865558, -21567178, -2957622,
+-2936684, -5614059, -7615514, -11460046, -16304770, -23124104, -4299799, 40349072, -12874701, -22687090,
+-10665478, 37860672, -17678086, -17655000, 58954332, 20772610, 10003516, -14487998, -32240172, -22748832,
+-33257006, 8855149, 27630062, 74175696, -65212636, -27864674, 38434588, 52910776, 9373229, -3277060,
+68245960, 32516124, -21383568, 21586506, -7730405, 145492, -47068008, -23906324, -16372415, -77454368,
+-32689532, -12564390, 41769632, -22608170, -12914967, 30988190, -1947231, -4196720, 7556458, 21793200,
+-21012590, 15391015, 23779624, 493384, -4380867, -43728672, 20276004, 15615427, -50363324, -3686693,
+5590437, 3246995, -4172024, -22436372, 6094022, 3790309, 6429029, -3561602, -6354404, 16134582,
+3571802, -3379066, 11258183, 4607426, 29799020, -4069482, 9859634, 1869921, -23438710, -20536386,
+14541149, -11433740, 8890582, 11078868, 7002944, 6840273, 324807, 19609210, -6130529, -4912369,
+-7608535, 5627481, 15408732, -23007066, -8429410, 11049340, 5266167, -13034689, -23336168, -5998996,
+6577206, 49292264, 18099530, -4116189, 12794171, -2502355, -4552666, -18168786, 8727374, 7524246,
+-14321568, -6982006, -52141440, -2122251, 21483964, -5037460, -21738976, 9519795, -4878009, 23463944,
+4696010, -11365020, -174483, 25119116, -14292577, 4042638, 9079561, -7641284, -215822, -13587666,
+27741194, -1664837, 4132832, 445066, 13408888, -6068789, -5216238, -8669391, 5548561, 10425496,
+-4564477, 12385075, -5358509, 7632157, -13007845, -10248866, 15799574, 20259898, -26170310, 1224603,
+39192, 2454574, 8253854, -16466368, 25266756, -22626424, 20337208, 2848100, -35321812, -1924682,
+27576374, -35955856, 17162690, 158377, 4652524, -8631811, -5379984, 7268159, -10424959, 36826660,
+-27236536, 4074313, -7304666, -3302830, 9088151, 517544, -4464619, -843961, 11141682, -345745,
+-12773770, 3602941, 6491843, -21392158, 16648904, 7515119, 789200, 15346455, -5612449, -4745939,
+7229504, 3353833, 4587025, 2609730, -4229469, 8664023, 3733937, 642635, -9356049, -1545115,
+4575214, 8304320, -14202920, 7434052, 8853001, -12554726, 5958194, 1842541, 2139968, 6626061,
+-3733937, 1480153, -2340220, -18211198, -273804, -4403952, 7955353, -5130339, 3037616, 1997160,
+-751082, 2428267, 4609037, -3018825, 4295, 819265, -130997, 1315871, 5534066, -5647345,
+5185100, -4125316, -26274462, -74187504, -105962208, 35633196, 94238560, 20808042, 261197360, 215122032,
+145350288, 245979760, 128133368, -8739185, -30689152, -97119408, -224258496, -185192016, -180112672, -250465312,
+-185173216, -54378580, -40103184, -6555731, 87158312, 40580460, -10827076, 55288040, 91443608, 44781476,
+42848204, 83224120, 49582712, 38241316, 75406744, 118406880, 49300320, 69510288, 111144624, 19077708,
+7546258, 98209792, 58076012, -37649684, 47359532, 61028800, -63678260, -18997178, 70382168, -14176076,
+-42127724, 90914256, 48194364, -56398828, 48798344, 64725156, -86312200, -80798000, -34509524, -208447648,
+-276600736, -173480704, -244529136, -325952576, -227131296, -232436656, -300528000, -237652896, -164791456, -178677088,
+-106789528, 10205916, 66716412, 145021184, 237282992, 295772384, 364217536, 404668608, 442085824, 468772608,
+420947072, 331012064, 305788800, 196009952, 59263568, 46551540, -31323196, -150494576, -118199648, -50157700,
+-111970336, -115118008, -24298240, -81093816, -155436480, -93868656, -68067712, -139036688, -118374664, -41826004,
+-105197704, -124978176, -9959492, -6238977, -56297356, 22367652, 13051332, -90618440, -67170064, -38986492,
+-129012768, -177761712, -145357264, -198545056, -246279872, -182703072, -146731120, -139179488, -60919816, 28548110,
+74086576, 109913584, 151769648, 171272560, 153622384, 200292048, 256780528, 266178992, 248589488, 253168992,
+244185536, 198255152, 223857984, 202116336, 86896312, 11434814, -49597208, -109308528, -115546968, -95266672,
+-112528144, -110007536, -95225864, -93947576, -100153808, -82252384, -73451456, -70123928, -66205848, -51005420,
+-48302812, -50069656, -39617852, -25890600, -23276038, -14841796, -1594507, 6151467, 6395743, 7705708,
+2896419, 1775969, 0, 0, 0, 0, 0, 0, },
},
{
{
4054449,
-9705015, 164283, 397821, -4638028, -3712999, 2798171, 1709934, 250719, 3958349, -5982890,
--2035815, 9687299, 654446, 1883343, -2555506, -3277597, 4550518, 3805341, -1604707, 3745212,
-151934, 605054, -3704409, 1323387, -3373697, -2634426, -3314104, 1117228, 125628, -1085016,
--380105, 1123671, 2874407, -1386738, -5276904, 81604, -3764002, -4810900, -1267015, 2155537,
--746251, 1923072, 1219771, 1762010, -764504, -685584, -910533, -787053, 1614908, -66035,
-3328063, -458488, 4122632, 676994, 927713, 3919158, 1393717, 996432, 5076652, -2076617,
-1675037, -1777043, -3600256, 3288871, -1197759, -1074, 1212255, -613643, -2990371, -931471,
-2143189, -1402844, -81068, -2909304, 1394791, 181999, -1938641, 222265, -3090229, 451508,
--2964064, -278636, -44560, -410169, 1708323, 812823, 446140, 928250, -325881, 1714229,
-1251446, -156229, 383326, 370441, -64961, 46708, 572841, -740882, 396211, -942745,
-791348, 69256, -146029, -57445, 655519, 151398, -605054, 191663, -31675, -367757,
--913754, -12736726, -6614250, -2976412, -2764885, -13422, 31675, 945430, 179315, -715649,
--5219459, -2368675, -5348845, -8376797, -6998113, 3947612, 4869419, 4925791, -1943473, -585726,
--557272, -1102733, 1812476, 755914, -1784022, -3797825, 2732136, 2331630, 3413962, 891206,
--1151588, -2080912, 967441, 1628866, -390842, 3467649, -1690070, -100395, 3370476, -2583960,
--4097936, 323196, 5663988, 1298691, 1251983, 789737, 47782, 722628, -878321, 1004486,
--4478041, 726386, 4643934, -1067836, 67109, 456877, -1586990, -891206, -645856, -759672,
--1244467, 2837900, -2668785, 2785286, 2374580, 5213017, -363462, 2928631, 6659347, -1233193,
--5369783, -6021544, -291521, -790811, 322659, -5111548, 1479616, -3589519, -2669322, 1222992,
-3725347, -1538135, -2846490, -3409130, -667331, -377957, 936303, 296890, 2139968, 1263257,
--121333, 1077500, 309238, 2109903, 1596654, 1001264, 456877, 457414, -373662, 1410360,
-64961, 420370, -176631, 26307, -1069984, -4295, -209380, 8849780, 6982543, 2968359,
-3580392, -2310693, 1621350, 6119255, 3008088, 6590628, -2557653, 2656974, 3788161, -191126,
-4854387, -2507187, 3039763, 551366, -3084860, -788127, -571768, -194347, -865436, 361314,
--1541356, 485868, -1124208, 6027987, -1373853, -333397, -2684, -2720862, -7652021, 4360466,
--1805497, 1683090, -3031173, -2881386, -3243774, -2159832, 2004676, 5782637, 4575214, 1920387,
--316754, -1243393, 1847373, 4155918, -911607, -1365800, 5160403, -2282238, 2476586, -2567317,
--2001455, -1231045, 1927367, 2038499, -3607236, -2490544, 108985, 3868155, 5021891, 2719251,
-3915937, -538482, 3668976, 1438277, 3852586, -2164664, 1549946, 8792335, 4105989, 3731253,
--894964, -2473364, -5989332, 3480534, 1505923, -2474438, -2477659, -815507, 1836099, -1821603,
--834834, -1639604, 61203, 1258425, -528818, -2468533, 719944, 851477, 1422708, 1462973,
-205085, 2071785, 1025423, 861141, 645319, -678605, 1466195, 135828, 0, -710280,
--1077500, -1185948, 293668, 851477, 356482, 54761, 267362, -71404, 1317481, -1795296,
--423054, 543313, -712965, 717796, 2754685, 10166188, 1449015, 3689377, 7364795, 139586,
--4208531, -1805497, -1262720, 290447, -2651069, -7227356, 2902324, 243739, 157840, 3020973,
--4792647, -2215130, 7550553, -1850057, -2849174, -4472672, 155156, -4226248, -703838, -1410360,
--1269700, 542240, 6101538, -196495, -1912334, 1789391, -4847408, 6505265, -827318, -1462973,
-8135205, -4685810, 388695, -5537287, -2529736, 471373, 260382, 2128693, 2569464, -4940823,
-1473711, 2070711, 1687385, 474057, 2335389, 1693291, 3409130, -3127810, -1668058, 6418292,
--2667175, 2452963, 615254, 1844152, 1661079, -545998, -2171643, -336618, 4537633, -2698850,
--296353, -1434519, 1054415, 4047470, -2270427, -5048734, -9748502, 609349, -397821, -839666,
-42950, -3750580, -2623151, -5439576, -2138357, 2707977, -86436, 1685238, -642098, 3388729,
-2352568, -31139, 1764695, -135828, -205085, 1176821, -2110977, -1129576, -1712081, -10737,
--2044941, 1224066, -68183, 584652, -755377, -656593, -79994, -736050, 478889, 775242,
--1892470, 909996, 776852, 450972, -1803886, 964757, 650688, 1717450, 1813550, -158377,
--615791, -940061, 909996, -471373, -324270, 344671, -4330938, -10963978, 5577552, -3653407,
--6138582, 209917, -11588359, 2443837, 3634079, -1358283, 8585103, -3333968, -10186052, 2385854,
-3961034, -3644817, -7186554, 12322261, -710280, -817654, 3218541, -2818572, -1520418, 1189169,
--6001680, 3480534, -577136, 1674500, -1204738, 5720360, -1400159, 3172370, 2923262, -5805722,
--2743410, -3306588, 6020471, -3042984, -1714229, 4446365, -1513976, -3445101, 2688113, 8221105,
--4152697, 3966939, -4292283, 5378373, -2947958, 2798171, 613107, -3012383, -8434242, 4674535,
-6179384, -648540, -1893007, 3442416, 4348655, 4089346, -5788006, -740882, -5099737, -548145,
-1872606, -3673271, 1442572, 3974992, -4251481, -163209, 882616, -4190814, -2952790, 3791919,
--2707977, 2983929, -1745367, -5361193, 1126355, -5199595, 1379758, -2007360, 1841467, -5718749,
-5259725, -4325032, 576599, -4024921, -93952, -303869, 1107565, -476741, 9664, -1296543,
-1409286, -3888019, 1376537, -3193845, -2494839, 19327, 2337536, 1044214, 456877, 668404,
-176094, 1326071, 2965138, -2515777, 2469069, -1641751, -305480, 1509681, 1263794, -1796907,
-6979, -4398584, 5557151, -6121939, -6093485, -10421201, 4381404, 11029476, 1666447, -1970316,
--964220, -1848983, 9587441, -5750425, -5257040, -1233193, -5794448, -1770063, -6294275, -2706366,
--4421132, -8721468, -2460480, -1917166, -316754, -950798, 2255395, 5216238, 1850594, 2587718,
--8028905, 1003412, -139050, -2501819, 2774549, 1494649, -2346663, -1022739, -5717139, -6319508,
--932008, 7031935, -2064269, -3597035, -779537, -2327872, -4937065, 97711, -5154498, 10547903,
-8879308, 2314451, -2718178, -2450279, 926102, 1602560, 1816234, 1752884, -643708, 3938485,
--3721052, 1752884, -3273302, 120259, -39192, 2220498, 1539209, 4962835, -2142115, -3016141,
--2769717, -11418707, 357019, 2405182, -1155346, 4169340, 1794760, -3419331, 996432, -5981816,
--2231236, 521839, 4600447, 1983738, 6294812, 1289027, -752693, 61740, 2334315, -2580739,
--328028, 627065, -1079111, 1636383, -2255395, 1212255, -1717450, -1378148, -278099, -1900523,
--1886564, -2331094, -1239635, -660351, 1773285, 1501628, -1744831, -2469069, -755914, -1881196,
-1330366, -2101313, 1052804, -1209033, -345208, 2159295, 155693, 1811939, -10768557, 1743757,
-10979010, 10347650, -11121281, -10151155, 2622615, -8078297, -4290673, 1155346, -567473, -3306588,
-8331163, 3680787, -11748346, -966368, 696322, -125091, 7501698, 2773475, -5460514, 7883950,
-2942053, 1019518, -4239133, -4532801, 3377992, -2916820, -7959112, -1475321, -1040456, -3581466,
--4750771, -6445136, 6830609, 452582, 1008780, -4474282, 109522, 4817343, -3820910, -8103530,
--8184597, 8560407, 1930051, 8078834, -1291711, 2292976, 5973226, 12124693, 3924526, -1558536,
--6204081, -2698313, -3092377, 1813013, 658741, -4874251, -1964948, 7034083, 4993437, 9568650,
-4497368, -6678138, -6353867, 7909719, 4226785, -4214437, 49392, 8147553, 641024, -498753,
--6356552, 6985765, 5266167, -1291175, 9780714, -1504849, -2816425, -10263361, -1347546, 466541,
-5444945, -7099044, -433792, 3101503, -1720134, -5121749, -4759361, -690416, -471373, -977642,
--5950141, -5314485, -3117610, 1850594, -108448, -2473901, -809064, -380105, 530428, 442382,
-891206, -559420, 2012729, -1704565, -410169, -5369, -1177358, -3992172, 270583, 2231236,
--705985, -3533148, 307627, -894427, 1248762, 147103, -429497, -367757, 1153736, -593242,
-2126546, 1036698, -55835, -1982127, 1441498, -1575716, 1456531, 1793149, -4409321, 1745367,
--1649804, -889058, 5393942, -8987756, 5403606, -5893232, 1062468, 4711579, -62277, -2396592,
-1760937, -6171868, 245350, -4807679, -13950591, -4270808, 5899138, 3813931, 2146410, -3398393,
-2841658, 1268626, 14886894, 2550137, -5051419, 5531381, 1081258, 1169305, 9892383, -2866891,
--2800856, 3430068, -6997576, 8382703, 7740068, -202400, 4371203, -1654099, -4291209, -581431,
--5389110, 425739, -5277441, 2028835, -91805, 1493038, 589484, -9051107, -1875827, -1190780,
-483721, -4575214, 1951526, 1975685, -1751273, 11876121, -5217312, -10609106, 6298570, 10382010,
-2345589, 2663417, -4613869, 8904004, -3064996, 1474784, 3995393, 1144609, -4065724, 4234301,
-1828582, 484794, -44560, -8185671, -2898566, 3978750, 7231651, -2834679, -5377299, -7449621,
--2435783, 2474438, 1355062, 3689914, -9172440, 1701344, 6155225, 790274, -367757, 2341831,
--1921998, -1061394, -265751, -517544, 3226057, -929860, 1020055, -981937, -678605, -725313,
--2349347, -1336809, 1104344, -1659468, 2221572, -370978, -406411, -1094143, -1321239, -6969658,
-651224, 3702262, -190052, 1281511, -671626, 2289755, 774168, -1376537, -1605781, 1276142,
-30389042, -8327405, 183073, -3066607, -1944010, -6772090, -153545, -17808008, 9247065, -6402723,
--452582, 10300942, 5086852, -6842957, -7342247, -2752537, -6279242, 5659693, -14732812, 2712809,
-6095096, 8419747, 1650878, 2503966, 332323, 1364189, -1955821, -4640176, -13470091, -1999844,
-1694902, 6179384, -4862440, 5957657, 2314451, -2464774, -881005, 4609574, -4892505, -4625680,
--2672544, -3540127, -544924, -11934104, -5596880, -2863670, -357019, 9421011, 2087354, 8986145,
-3076270, -434865, -5684389, 667331, 533113, 1349157, 3089155, 12602508, 1447404, -11846057,
-3022583, -4661114, -360240, -4485020, -5022428, -2365990, 4804458, 3102577, -20969640, -7886097,
--6263136, 3936875, -935766, -4526359, -2920041, 11787538, -4890357, 9048959, -8593156, -6465537,
--9302899, -5087926, -9887015, -1576790, 13116830, 3041374, -1627793, 1534377, 5551245, -153545,
-6852084, -3923453, 2614025, 3812857, 4633196, 1803886, -871878, -9171366, -3431679, -4734128,
-18790, 2908767, 2503966, -1896228, -708133, 3798899, 1548873, -3064459, -1316408, -2166274,
--985695, 112743, 1931125, -1657321, -1622424, 4840428, 4076461, 1246077, -637803, 1713692,
-3323231, 188979, -3059627, -358093, -3121904, 719944, -2809982, 1559073, -4690641, -5100811,
-3808562, -9479530, 557809, -22160420, 5369246, -7236483, 2138894, -7522099, -16397648, -2490007,
--3836480, 11651709, 4900021, 4218195, -417149, 15455440, -11613055, 2868501, 4356708, 11951820,
--13748190, -7791608, -2740726, 1175210, -941135, -3854196, -1296543, 4160750, -7411503, 1556389,
-4351876, -799401, 577136, -5916318, -6849936, -4179540, 18420040, 219043, -4499515, 7224672,
--4444218, -9222369, -7614440, -4972499, -1345935, 3326989, 670552, 695785, 10226854, 9417790,
--1699733, 3395709, 2249489, -11764989, -8126078, -450972, -953483, -3032784, -8074002, 9976135,
-11966316, -9749039, 6459631, 6136435, -1921998, -9312563, -15145128, -14609868, -11322608, -6598681,
--13069049, 1261647, -10698227, 6486475, 5773510, 1026497, 129386, -18187040, 1196148, 415001,
-1347546, -9284109, 3147137, 10453950, 1400159, 2710661, -8266202, -5046587, -1009854, -8636642,
-2035815, 5505075, -2566780, -3155727, -3997541, 3470334, 5534602, -9592809, -5288179, -393526,
-6465537, 2477659, -2805151, 2352568, -328028, -17180, 2916283, -1772211, 3755949, -4203699,
--1498407, 3224984, 2744484, -974421, 7267085, 558346, -4529043, -3766686, -632971, -3084324,
--2856690, 487479, 2065879, -1250909, -9032853, -7677791, -5236102, -6020471, -1839320, -13604846,
-635655, 14735496, -5182415, 7730941, -3085934, 14689862, 12526809, 5092758, -15308874, -4013647,
-20509006, -5378910, 15208479, 2291902, -14539538, -7470022, 17179332, 277025, -11523934, 177167,
--9823664, -1447941, 3496640, 1314797, -1955821, -17202954, -15184857, 4101157, 11007464, -9867150,
--850940, 4193499, -724776, 1587527, 18276696, 3271155, 2669859, 1490891, 6047314, -8178155,
--5723044, -4240744, -19245748, -6622303, -7218767, -5071820, 5087389, 3310883, -1212255, -2000918,
--7611756, -11622718, 15069430, -3325915, -13233331, -6280316, 2695629, 10014790, -7994545, -2580202,
--8485782, -1668595, -10139881, -2026151, -2159295, -20454782, 1872069, -6935836, 14121852, -3706020,
--11474005, -21687974, -14256607, -2761127, 1795296, 7531762, -5592585, -5173288, -11780558, 10733123,
-18228378, 1880122, -2160906, 6158446, -4761508, 6817187, -5141076, -2524904, 2346663, 5208185,
-3783329, -6402723, 221728, 1296543, -84289, -484258, -1600412, 1696512, 6471442, -2736968,
--5690295, -268972, -1276679, 2946885, -47245, 6277095, 435939, 2288681, 221191, -3867618,
-1009854, -1552631, 6754373, 387084, -4308389, -818728, -1049046, 4519380, 442919, -4949413,
--767189, 3487514, -1618666, 855235, 7036230, -24910810, -12749610, -8559333, -13653701, -7281044,
--5600638, -14122389, 14839649, -4289599, 22408992, -11310260, -16947404, -3283503, -11385421, 19313394,
--6666863, -10172093, -4737349, 5184026, 9791989, 8435853, -2061584, -2259153, -4448513, 2134062,
-15889768, -418222, 1493575, -5119064, -2034741, -8329552, -2749853, 3701188, 2714419, -6885907,
-304406, -10191957, 2019172, -3042448, -3078955, 4168803, 1911797, -4744328, -1931662, 8718247,
-3246459, -7212861, -9526774, 15856482, -785979, -25239376, 13100187, -2796024, -10759430, 5090610,
--1593970, 1162326, -2498060, 8785356, 3353833, 904628, 24206972, 23944442, -8494908, 2619393,
--18044232, -3818763, -3510062, 7649337, -2807298, 1248225, 7336341, -5439576, 13794898, -5848672,
-1464584, -18754512, 7732015, -4876936, -13192529, 6600828, -3101503, 26420492, 6224482, 5041755,
-9705552, 1100049, -9290014, -727997, -3873524, -2260764, 2574833, -3263638, 5306969, 3307125,
--4112968, 6739878, 3738232, -4408247, -1238561, 412317, 599685, -1802813, 1355062, 2370822,
--720481, -1969243, 373662, 2109903, 1153736, 1601486, -4338454, 4324495, -8599061, 7570417,
--5094368, -2910914, -674847, 3954591, 5529771, 1521492, -6562173, 78383, -2713883, -1534914,
-1440962, -6193343, -11389716, 3335579, 29972966, -22464290, -7180112, -14201309, -9440875, 11394548,
--12914967, 27544700, -3206730, 8453033, 1547799, 6733972, -17073032, 3189550, 4511863, -1208496,
--2547453, -1446330, 5077188, -10448582, -6345278, -1434519, -2949569, -12928388, -11506754, -3039763,
--5308043, 15735150, -4060355, -7383586, -5347235, 5442261, -8029978, -3361349, -13917305, 6577206,
--5302674, 5801427, -4911295, 7363185, -3710852, -24004572, -12228846, 3594888, -1853278, -1429687,
--7480223, -14281303, -802622, 6349036, 4262755, -3218541, 4741644, 7403987, 22825066, -9747428,
-10823854, -25632364, 1636383, 3801046, -3031173, -7342784, 5223217, 993211, 1206886, 5791227,
-18145700, 12327093, 9306657, -4836670, -5834176, 8995272, -10911901, 2711735, 9188009, -6477885,
-22694608, -329639, 7053410, -6169184, 13094282, -12432320, -12250320, 416612, 4602595, -5609764,
--1363115, 14180908, 139586, 12911745, 4722854, -1982127, -2032593, -7349226, -587874, -379568,
-3644817, -469225, -5912023, 1035624, 2663954, 7320235, -10674067, 1847910, -5417028, 2260227,
-6098854, -2083596, -165893, -5571647, 1837709, 2083059, -3611531, -12855374, -8049843, -5080947,
-2495376, -6794102, -3859565, -4556961, -4082903, 2585570, 4967667, -142271, 4121558, 1582696,
-2195802, 752693, -9295383, 7886097, -6860674, 12038256, 35474820, 25130390, -6750615, -15731928,
--10660109, 21538724, -25599078, 1370632, -6489696, -6278169, 10467372, -18764712, 2501819, -9599789,
--237297, -13057237, -10073309, 1522029, 683437, 524523, -12608950, 20099910, 4072703, -8993662,
-3645354, -2656974, 1766842, 29968134, 9469866, -8367670, -7361574, 1453846, 9300215, 2507187,
--22405234, -5517959, -15487652, -5174362, -7248294, 7568269, -4173635, -2129767, -143881, -773094,
--10981158, -12758737, 8316668, -4833986, 2256469, -600759, 11162620, -9061307, -6470905, 2837363,
-4669167, -11995844, 13396540, -8391829, -19522774, -18213346, -6500970, -5229660, -7888781, -4083440,
--27757300, 9800042, -13166222, -4183298, -10989748, 15391552, 5010080, 7363185, 4295, -2365990,
--13418015, -4064650, 18139794, -14931991, 21980032, 16769700, 5909875, -3960497, 776852, -3106872,
-3176665, -9712532, -7786776, -4849018, 1360968, -1333587, 1417876, 4096325, -7026567, -1759863,
-7125888, 7392176, -2881386, 4592394, -3900904, -6346888, -2765959, -2002529, 4734128, 1246077,
-1806034, -6280853, -4066260, 2139968, -2278480, 1987496, 2656974, 4424890, 8847096, 3473018,
-4991826, -5950677, -3346317, -2065342, 2655901, -2918430, 1258425, -2706903, 1316408, 8888972,
-4296041, 2375117, -1628330, 5569499, 1872069, -2394981, -34999688, -4329864, 23318988, -28592134,
--11374147, -688805, -8740258, 10372346, -5928666, 32329830, -3222299, -7023346, -5320391, -1424319,
-9505299, -6419366, -6197638, 26382374, -19281182, -2346663, 6192269, -4268661, 16560320, 9310952,
--1091459, -2068564, 7067906, 9379672, 10271414, 8369281, 17525078, 5564667, 7580618, 4544076,
--5594732, 29214904, 3751654, 5452998, 7459822, 4344897, 21167746, -1512902, 5283347, 7263327,
-6175089, 3438121, 13993540, -8248485, -6567542, 13841069, -2469069, -13997298, -3515431, -24464670,
--8240432, -4708895, 23222888, -21925808, -2760053, 935766, -679142, -1277216, 13722421, 37376952,
--6456410, 4672925, 4345433, 5653788, 17908404, -19351512, -19783694, -18060338, 31908922, 2339684,
--11913702, 29220810, -11086384, 25473452, -13660680, 9763534, 1140314, -33916284, -4866198, -8492761,
-9771587, -718870, -2861522, 201863, 6163278, -926639, -10223633, 5524402, 208843, -4814122,
--39192, -9038759, 12187507, -1322313, 4410932, -5775658, -5147519, -5165235, -6834904, -665183,
-249108, 11558294, -471910, 1267015, -4583804, 1277753, -10923712, 3481071, -10528039, -1970853,
--2240362, -9457518, 5051419, -7489886, -7476465, 1644973, -10446434, 3216394, 8427263, 7821673,
--3908957, -3698504, 2059974, 3170760, 7330436, 9298067, 20734492, 1889249, -20896626, -61448096,
-12311524, -14756971, -23753854, 26623428, -15943992, -8203388, -23392002, 6077916, -4626754, -22852448,
--7398081, -13566191, 6416681, -12562779, 645319, 4909685, 10313827, 5245229, 17447230, 2758443,
--89121, -1792075, -14623290, -11238319, -10401337, 8463233, 13054016, 6071473, 4665945, -355945,
-5066988, 10226854, 23836532, -11249056, -6227166, 4193499, -10770704, 11471858, 2530810, -10394895,
-24260122, 8863202, -20342038, 8075076, -19566260, 2343442, 3790309, 10347113, -5529234, -6602439,
-30835718, 11986180, -13195750, 8062728, 16334297, -12608413, -26801670, 14936286, -2111513, -277562,
-2253247, 6568079, 41712184, -3842922, 5260798, 8017630, -82678, 9612674, 5647882, -22069152,
-4744328, -11722576, -10229001, -6149857, 5092758, -35662188, -4292820, 11191074, 1820529, 17795660,
--12991739, 12620761, -8468065, -3685619, -4744328, 5681168, 2524904, -4319664, 88047, 46708,
--6273337, 5105106, -7933342, 8457327, 1178432, 5909338, 5035849, -3551401, -2915746, 1531693,
--2172180, 1280974, 2001992, -3446175, -1214939, -3968550, -2774549, -2583960, -7106561, 194884,
-1048509, 4225711, -2257542, 4072703, 9767293, -5033165, 1639604, -5050345, 2615635, 3144990,
--8137353, 144955, 2674691, -7676181, -3799436, 6787122, 110059, 1395864, 1535988, 310848,
--19010062, -21875880, 46920372, 10037339, -3032784, -5647882, 10582263, 42406360, 19449760, 5079336,
--1229434, 14221710, 35408784, 8818642, 12206834, 11050414, 25244744, -16267726, 16350404, 7277822,
--48476760, 14369350, -6857452, 14382235, -15097347, 11411728, 7567196, 15069430, -122407, 6399502,
-2357937, -13744432, 6855842, 13651554, -11446625, 6868190, -11115375, -6671158, 34750580, 3565360,
-30767536, -21883396, 9579388, -1107565, -4408247, -675384, -2678986, 4795331, 11274826, 7837779,
--861678, 17596482, -28032178, -26405996, 19160922, -15023796, -3879966, -3507915, -18130668, 9148817,
--4783520, 5168457, 2804614, 29795798, 14457934, 15706159, 5887864, 4221416, -27097486, -6228777,
-13318694, -248034, 331786, -20938, -8700530, -23563264, 4502200, 2180233, -17651242, 2493766,
--8486855, -6973417, 7396471, 4984310, 26723286, -3835406, 6787122, 6382859, -5159330, -6913287,
--764504, -6572911, -2545305, 15739981, 6565932, 2838437, 770410, -306016, 358630, -215285,
--957241, -10709501, -3288871, 6513855, -1891396, 638876, -3988951, -5420249, -2228551, 1714766,
-12754979, -8540542, -8263517, 7495792, 3657165, -9592809, 6721624, 4048007, -6818261, 8513699,
-673773, -5145908, -2420751, -3575560, -1644436, -1670742, 4203699, 2107755, 2081449, 4829154,
-7025493, 5214627, -1414655, 12181064, -42531988, 36284956, -15293842, 7169374, 23478438, -34000036,
--887985, -2732136, 8287140, 12954158, 14776835, 25667798, 4304094, -16168941, 9039296, 27325118,
--38501696, -22428320, 25861072, 1556389, -199179, 1452773, 2215130, -464930, -665183, 13451838,
-8108362, -18258980, 1174137, -4968741, 32160178, 19684908, -6576669, 2180233, 3864397, 4236449,
--215822, 11924977, 1168768, 9217000, 32822140, 4768488, 3452617, -4727686, 8422968, -30983358,
--13526999, -12888123, -1405528, 3536906, -27557584, 11044508, -24460912, 8450348, 25334402, -5383742,
--22834194, -12093017, 9426379, -4337380, -46627776, 12857521, -32548872, -6999186, -4061429, 1149978,
--13059922, 3375844, 16409459, -13438416, -30931818, -46416784, 36294084, 11078331, -5702106, 10386305,
--10996190, 11097122, 20125680, -20912732, 36080948, 4978941, -3846143, 16765942, 9511742, -5814312,
-9315247, 682363, 10055592, -9786083, -5213554, 2716030, 7265474, 12521440, 3721052, 11286637,
--7473780, 6406481, 11726334, 10407243, -1745904, 9474161, -10183904, 4032974, 960462, 4359392,
-19551764, -13064754, 7770670, 1063541, -745714, 15260019, 4166118, 19895362, -2624762, 9827422,
-2599529, 7752416, 2216203, -4092567, 5951751, -10282152, 8870718, -3810710, 7344394, -1763084,
-1967095, -834297, 1474784, -148176, 7689602, -1758252, -1918777, -1045825, 3274913, -383863,
--862215, 359704, 1599875, 1101659, 1327682, -964220, 1326608, -1131724, 1253594, 881005,
-1402844, -2665564, 51849920, -55794848, 22557706, 28368258, -34955664, -10785200, -18817862, -10368051,
-51481624, -23176180, 36536212, -17150342, -4916664, -9289477, 11978127, 4466766, -44513040, -8513699,
--11778948, 19084150, 1006633, 7926899, 15503758, -21889300, -4005594, -14048301, 7834557, 17969070,
-11332271, -28268402, -4829154, 5411122, 3838627, -1978369, -13139916, -5692979, -25238302, -4868883,
--3417183, 23096724, -20577726, 50705848, 11340324, -15112379, 22601728, 576063, 29320132, 15714212,
-27836756, 6585259, 25446608, 20431696, 24902220, 25905096, 4122095, 25062744, -32196148, -5788006,
-6958384, -21525302, -3532611, 13222057, -24932286, -36954436, 14950244, 23682450, 940061, 5331665,
--25549686, -7089381, -21339546, -993748, 24780888, 1891933, 46139224, 20700668, -11410654, 48364016,
-25862146, -14409078, -5339718, -10323491, -15190762, -9879499, 12099460, -7003481, -23635206, 3832185,
-16938278, 549219, -7600482, -6337761, -4739497, -8083129, -14220637, 2483565, -3103651, -1959042,
--10909217, -1071594, -3673808, 4863514, 8227547, -2456721, 1862405, -3238942, -8432095, 5634460,
--2040110, -6771016, -16175921, 7628936, -22397718, -3192235, -15422691, -9616432, -12474733, -3329674,
--1677185, -4666482, -8614631, -4429722, -9868224, -1910724, -814433, -785979, -6485401, 10416369,
--7896834, 4930623, -72444824, 66055524, -14985141, -21896818, -19305342, 45788648, -34743600, -5507759,
--9978283, -303332, 24504936, -27210766, -2507724, 10947335, -8248485, -3500398, 621697, -15336791,
-21906480, 1441498, -35865124, -8838506, -8728447, 2416456, -39306468, -127775, 4617627, -7586523,
-275952, 10936597, 24162412, -9818832, -6183143, 5389647, -16285442, -50299436, 4307852, 40317396,
--20524038, -30874910, 2071785, 32571422, -15166603, -9434969, -41966124, -6585796, 788127, 30090004,
-13792214, 4017942, -31664110, -17869748, 24807732, -29637958, 10474888, 49550500, 27864138, 38466264,
--18524194, 22498650, 14165339, -42717208, -15808164, -22869628, -5694053, 25404194, -1215476, 27458262,
-22151830, -42450384, 47469052, -28755880, -137976, 2567317, -21830782, 47036872, -3188476, -10773925,
-37654516, -30516280, -5308580, -43592308, -14920716, 20081120, -6245956, 18177376, 19390704, -4416837,
--7683697, 3409130, -10741713, -12288438, -3507378, -9024263, -5515812, -7294465, 3102577, -9094593,
-1775969, -11497627, -11453067, -10056666, 8476655, -5900748, -1047972, 5995238, 1407676, -2010045,
--12504260, -19389092, -12584791, -25303262, 18629958, 7809861, 16122770, 5878200, -13807783, -13962402,
--7364795, -1902671, 20476794, -4225711, -141734, 2792803, -3307662, -3311957, -1770600, -7652558,
-14258755, -8950175, 18296024, -94489, 43173548, 30640296, 4515621, -8260833, -22429392, 13139379,
--1762010, -2000918, -1424855, -736050, 95026, -8570070, 10871636, -206158, -38528004, 9684614,
-3453154, -13310104, 508954, 16663936, -5613523, 1134408, -27860380, 20307680, -9913858, -2983929,
--2809446, 11570642, -15098958, -536334, 3433826, 481573, 3190624, -7138773, 20634096, -10790032,
-36373004, -22355304, -23862838, 22515830, -25214680, 1355062, 18797998, -17377974, -7771207, 10054518,
-11703786, 15535434, -55486144, 17707076, -527744, -12652437, 35184372, -17615808, 2158758, 224412,
--29878476, 38338488, -1826972, -1625108, -20132122, -3584687, 31584116, -7317014, -1189706, 1305133,
-9105868, 5301064, -39005820, 19284404, 34756484, -18206366, 13925358, -27152784, 45565308, 2103997,
--42527692, 628676, 23722714, -2342368, -26419418, -5892159, 62081604, -9614284, -25572236, 4354023,
-27387396, -7030325, -8560407, -3169686, -1214939, 1662152, 1235877, -6905771, 18079664, -2877091,
--4247723, 1066226, 6175626, 15202037, -4522601, -7346542, 8346195, 1934883, -14010720, -5067525,
-7520488, 1773285, -5852967, -3095598, 12079059, -10929618, -2209224, 1933272, 1738925, -10318659,
--4187056, 13474386, -725850, -9607305, -4088272, 9780714, -2858301, -7201050, -6155225, 8553964,
--24212342, -80252536, -121662464, 8208756, 105224552, 1657321, 275283776, 249527392, 149385936, 288067744,
-189007552, -31211528, 10933913, -36941552, -226762464, -128756680, -99783904, -221475360, -182144192, -53716620,
--106925360, -122781840, -10005663, 7328288, -51941724, 11409044, 46994460, -59993712, -51007568, 80447424,
-16457241, -19468014, 56136296, 75351440, -95026, 77290624, 130810208, 46902652, 35880156, 133387728,
-90148680, 10921565, 97915056, 144494512, 63469952, 73898136, 164641136, 62550828, 22469658, 157276864,
-154773440, 47864728, 186415536, 265127264, 98820216, 108856480, 184854320, 56422448, -59852516, 10631118,
--61479236, -222722512, -212468816, -226881648, -364529440, -393987552, -421357760, -498292448, -521311872, -509161408,
--495585536, -436274176, -391560352, -320140960, -211549680, -150965952, -52153252, 143920592, 233397648, 230576928,
-426933696, 455305728, 354357344, 431855200, 452352928, 242871808, 253343472, 310701152, 150802208, 122003376,
-201604160, 146323632, 68690488, 95245192, 127449400, 54249196, 44214004, 128094176, 67640904, -11609297,
-70111584, 54817740, -40045740, 5582921, 50444928, -33292438, -14607184, 94714232, 37373732, 3594888,
-91035592, 59886340, -9008157, 4949950, -39962524, -134073848, -182550064, -201753936, -264710112, -283097408,
--282916480, -306338528, -309315488, -323811552, -324899776, -296906784, -295007872, -247531312, -191290320, -151409952,
--63475860, 55115168, 118241520, 197481520, 246926800, 261653696, 249303520, 227543616, 193117840, 156853824,
-136414608, 119386136, 97623000, 88011400, 85248656, 77701864, 72557032, 75857712, 70376264, 58717036,
-49600428, 38540352, 20977158, 8018704, -12636868, -28193776, -28339804, -18241262, -8790187, -2099165,
-0, 0, 0, 0, 0, 0, 0, 0, },
+9705015, 164283, 397821, -4638028, -3712999, 2798171, 1709934, 250719, 3958349, -5982890,
+-2035815, 9687299, 654446, 1883343, -2555506, -3277597, 4550518, 3805341, -1604707, 3745212,
+151934, 605054, -3704409, 1323387, -3373697, -2634426, -3314104, 1117228, 125628, -1085016,
+-380105, 1123671, 2874407, -1386738, -5276904, 81604, -3764002, -4810900, -1267015, 2155537,
+-746251, 1923072, 1219771, 1762010, -764504, -685584, -910533, -787053, 1614908, -66035,
+3328063, -458488, 4122632, 676994, 927713, 3919158, 1393717, 996432, 5076652, -2076617,
+1675037, -1777043, -3600256, 3288871, -1197759, -1074, 1212255, -613643, -2990371, -931471,
+2143189, -1402844, -81068, -2909304, 1394791, 181999, -1938641, 222265, -3090229, 451508,
+-2964064, -278636, -44560, -410169, 1708323, 812823, 446140, 928250, -325881, 1714229,
+1251446, -156229, 383326, 370441, -64961, 46708, 572841, -740882, 396211, -942745,
+791348, 69256, -146029, -57445, 655519, 151398, -605054, 191663, -31675, -367757,
+-913754, -12736726, -6614250, -2976412, -2764885, -13422, 31675, 945430, 179315, -715649,
+-5219459, -2368675, -5348845, -8376797, -6998113, 3947612, 4869419, 4925791, -1943473, -585726,
+-557272, -1102733, 1812476, 755914, -1784022, -3797825, 2732136, 2331630, 3413962, 891206,
+-1151588, -2080912, 967441, 1628866, -390842, 3467649, -1690070, -100395, 3370476, -2583960,
+-4097936, 323196, 5663988, 1298691, 1251983, 789737, 47782, 722628, -878321, 1004486,
+-4478041, 726386, 4643934, -1067836, 67109, 456877, -1586990, -891206, -645856, -759672,
+-1244467, 2837900, -2668785, 2785286, 2374580, 5213017, -363462, 2928631, 6659347, -1233193,
+-5369783, -6021544, -291521, -790811, 322659, -5111548, 1479616, -3589519, -2669322, 1222992,
+3725347, -1538135, -2846490, -3409130, -667331, -377957, 936303, 296890, 2139968, 1263257,
+-121333, 1077500, 309238, 2109903, 1596654, 1001264, 456877, 457414, -373662, 1410360,
+64961, 420370, -176631, 26307, -1069984, -4295, -209380, 8849780, 6982543, 2968359,
+3580392, -2310693, 1621350, 6119255, 3008088, 6590628, -2557653, 2656974, 3788161, -191126,
+4854387, -2507187, 3039763, 551366, -3084860, -788127, -571768, -194347, -865436, 361314,
+-1541356, 485868, -1124208, 6027987, -1373853, -333397, -2684, -2720862, -7652021, 4360466,
+-1805497, 1683090, -3031173, -2881386, -3243774, -2159832, 2004676, 5782637, 4575214, 1920387,
+-316754, -1243393, 1847373, 4155918, -911607, -1365800, 5160403, -2282238, 2476586, -2567317,
+-2001455, -1231045, 1927367, 2038499, -3607236, -2490544, 108985, 3868155, 5021891, 2719251,
+3915937, -538482, 3668976, 1438277, 3852586, -2164664, 1549946, 8792335, 4105989, 3731253,
+-894964, -2473364, -5989332, 3480534, 1505923, -2474438, -2477659, -815507, 1836099, -1821603,
+-834834, -1639604, 61203, 1258425, -528818, -2468533, 719944, 851477, 1422708, 1462973,
+205085, 2071785, 1025423, 861141, 645319, -678605, 1466195, 135828, 0, -710280,
+-1077500, -1185948, 293668, 851477, 356482, 54761, 267362, -71404, 1317481, -1795296,
+-423054, 543313, -712965, 717796, 2754685, 10166188, 1449015, 3689377, 7364795, 139586,
+-4208531, -1805497, -1262720, 290447, -2651069, -7227356, 2902324, 243739, 157840, 3020973,
+-4792647, -2215130, 7550553, -1850057, -2849174, -4472672, 155156, -4226248, -703838, -1410360,
+-1269700, 542240, 6101538, -196495, -1912334, 1789391, -4847408, 6505265, -827318, -1462973,
+8135205, -4685810, 388695, -5537287, -2529736, 471373, 260382, 2128693, 2569464, -4940823,
+1473711, 2070711, 1687385, 474057, 2335389, 1693291, 3409130, -3127810, -1668058, 6418292,
+-2667175, 2452963, 615254, 1844152, 1661079, -545998, -2171643, -336618, 4537633, -2698850,
+-296353, -1434519, 1054415, 4047470, -2270427, -5048734, -9748502, 609349, -397821, -839666,
+42950, -3750580, -2623151, -5439576, -2138357, 2707977, -86436, 1685238, -642098, 3388729,
+2352568, -31139, 1764695, -135828, -205085, 1176821, -2110977, -1129576, -1712081, -10737,
+-2044941, 1224066, -68183, 584652, -755377, -656593, -79994, -736050, 478889, 775242,
+-1892470, 909996, 776852, 450972, -1803886, 964757, 650688, 1717450, 1813550, -158377,
+-615791, -940061, 909996, -471373, -324270, 344671, -4330938, -10963978, 5577552, -3653407,
+-6138582, 209917, -11588359, 2443837, 3634079, -1358283, 8585103, -3333968, -10186052, 2385854,
+3961034, -3644817, -7186554, 12322261, -710280, -817654, 3218541, -2818572, -1520418, 1189169,
+-6001680, 3480534, -577136, 1674500, -1204738, 5720360, -1400159, 3172370, 2923262, -5805722,
+-2743410, -3306588, 6020471, -3042984, -1714229, 4446365, -1513976, -3445101, 2688113, 8221105,
+-4152697, 3966939, -4292283, 5378373, -2947958, 2798171, 613107, -3012383, -8434242, 4674535,
+6179384, -648540, -1893007, 3442416, 4348655, 4089346, -5788006, -740882, -5099737, -548145,
+1872606, -3673271, 1442572, 3974992, -4251481, -163209, 882616, -4190814, -2952790, 3791919,
+-2707977, 2983929, -1745367, -5361193, 1126355, -5199595, 1379758, -2007360, 1841467, -5718749,
+5259725, -4325032, 576599, -4024921, -93952, -303869, 1107565, -476741, 9664, -1296543,
+1409286, -3888019, 1376537, -3193845, -2494839, 19327, 2337536, 1044214, 456877, 668404,
+176094, 1326071, 2965138, -2515777, 2469069, -1641751, -305480, 1509681, 1263794, -1796907,
+6979, -4398584, 5557151, -6121939, -6093485, -10421201, 4381404, 11029476, 1666447, -1970316,
+-964220, -1848983, 9587441, -5750425, -5257040, -1233193, -5794448, -1770063, -6294275, -2706366,
+-4421132, -8721468, -2460480, -1917166, -316754, -950798, 2255395, 5216238, 1850594, 2587718,
+-8028905, 1003412, -139050, -2501819, 2774549, 1494649, -2346663, -1022739, -5717139, -6319508,
+-932008, 7031935, -2064269, -3597035, -779537, -2327872, -4937065, 97711, -5154498, 10547903,
+8879308, 2314451, -2718178, -2450279, 926102, 1602560, 1816234, 1752884, -643708, 3938485,
+-3721052, 1752884, -3273302, 120259, -39192, 2220498, 1539209, 4962835, -2142115, -3016141,
+-2769717, -11418707, 357019, 2405182, -1155346, 4169340, 1794760, -3419331, 996432, -5981816,
+-2231236, 521839, 4600447, 1983738, 6294812, 1289027, -752693, 61740, 2334315, -2580739,
+-328028, 627065, -1079111, 1636383, -2255395, 1212255, -1717450, -1378148, -278099, -1900523,
+-1886564, -2331094, -1239635, -660351, 1773285, 1501628, -1744831, -2469069, -755914, -1881196,
+1330366, -2101313, 1052804, -1209033, -345208, 2159295, 155693, 1811939, -10768557, 1743757,
+10979010, 10347650, -11121281, -10151155, 2622615, -8078297, -4290673, 1155346, -567473, -3306588,
+8331163, 3680787, -11748346, -966368, 696322, -125091, 7501698, 2773475, -5460514, 7883950,
+2942053, 1019518, -4239133, -4532801, 3377992, -2916820, -7959112, -1475321, -1040456, -3581466,
+-4750771, -6445136, 6830609, 452582, 1008780, -4474282, 109522, 4817343, -3820910, -8103530,
+-8184597, 8560407, 1930051, 8078834, -1291711, 2292976, 5973226, 12124693, 3924526, -1558536,
+-6204081, -2698313, -3092377, 1813013, 658741, -4874251, -1964948, 7034083, 4993437, 9568650,
+4497368, -6678138, -6353867, 7909719, 4226785, -4214437, 49392, 8147553, 641024, -498753,
+-6356552, 6985765, 5266167, -1291175, 9780714, -1504849, -2816425, -10263361, -1347546, 466541,
+5444945, -7099044, -433792, 3101503, -1720134, -5121749, -4759361, -690416, -471373, -977642,
+-5950141, -5314485, -3117610, 1850594, -108448, -2473901, -809064, -380105, 530428, 442382,
+891206, -559420, 2012729, -1704565, -410169, -5369, -1177358, -3992172, 270583, 2231236,
+-705985, -3533148, 307627, -894427, 1248762, 147103, -429497, -367757, 1153736, -593242,
+2126546, 1036698, -55835, -1982127, 1441498, -1575716, 1456531, 1793149, -4409321, 1745367,
+-1649804, -889058, 5393942, -8987756, 5403606, -5893232, 1062468, 4711579, -62277, -2396592,
+1760937, -6171868, 245350, -4807679, -13950591, -4270808, 5899138, 3813931, 2146410, -3398393,
+2841658, 1268626, 14886894, 2550137, -5051419, 5531381, 1081258, 1169305, 9892383, -2866891,
+-2800856, 3430068, -6997576, 8382703, 7740068, -202400, 4371203, -1654099, -4291209, -581431,
+-5389110, 425739, -5277441, 2028835, -91805, 1493038, 589484, -9051107, -1875827, -1190780,
+483721, -4575214, 1951526, 1975685, -1751273, 11876121, -5217312, -10609106, 6298570, 10382010,
+2345589, 2663417, -4613869, 8904004, -3064996, 1474784, 3995393, 1144609, -4065724, 4234301,
+1828582, 484794, -44560, -8185671, -2898566, 3978750, 7231651, -2834679, -5377299, -7449621,
+-2435783, 2474438, 1355062, 3689914, -9172440, 1701344, 6155225, 790274, -367757, 2341831,
+-1921998, -1061394, -265751, -517544, 3226057, -929860, 1020055, -981937, -678605, -725313,
+-2349347, -1336809, 1104344, -1659468, 2221572, -370978, -406411, -1094143, -1321239, -6969658,
+651224, 3702262, -190052, 1281511, -671626, 2289755, 774168, -1376537, -1605781, 1276142,
+30389042, -8327405, 183073, -3066607, -1944010, -6772090, -153545, -17808008, 9247065, -6402723,
+-452582, 10300942, 5086852, -6842957, -7342247, -2752537, -6279242, 5659693, -14732812, 2712809,
+6095096, 8419747, 1650878, 2503966, 332323, 1364189, -1955821, -4640176, -13470091, -1999844,
+1694902, 6179384, -4862440, 5957657, 2314451, -2464774, -881005, 4609574, -4892505, -4625680,
+-2672544, -3540127, -544924, -11934104, -5596880, -2863670, -357019, 9421011, 2087354, 8986145,
+3076270, -434865, -5684389, 667331, 533113, 1349157, 3089155, 12602508, 1447404, -11846057,
+3022583, -4661114, -360240, -4485020, -5022428, -2365990, 4804458, 3102577, -20969640, -7886097,
+-6263136, 3936875, -935766, -4526359, -2920041, 11787538, -4890357, 9048959, -8593156, -6465537,
+-9302899, -5087926, -9887015, -1576790, 13116830, 3041374, -1627793, 1534377, 5551245, -153545,
+6852084, -3923453, 2614025, 3812857, 4633196, 1803886, -871878, -9171366, -3431679, -4734128,
+18790, 2908767, 2503966, -1896228, -708133, 3798899, 1548873, -3064459, -1316408, -2166274,
+-985695, 112743, 1931125, -1657321, -1622424, 4840428, 4076461, 1246077, -637803, 1713692,
+3323231, 188979, -3059627, -358093, -3121904, 719944, -2809982, 1559073, -4690641, -5100811,
+3808562, -9479530, 557809, -22160420, 5369246, -7236483, 2138894, -7522099, -16397648, -2490007,
+-3836480, 11651709, 4900021, 4218195, -417149, 15455440, -11613055, 2868501, 4356708, 11951820,
+-13748190, -7791608, -2740726, 1175210, -941135, -3854196, -1296543, 4160750, -7411503, 1556389,
+4351876, -799401, 577136, -5916318, -6849936, -4179540, 18420040, 219043, -4499515, 7224672,
+-4444218, -9222369, -7614440, -4972499, -1345935, 3326989, 670552, 695785, 10226854, 9417790,
+-1699733, 3395709, 2249489, -11764989, -8126078, -450972, -953483, -3032784, -8074002, 9976135,
+11966316, -9749039, 6459631, 6136435, -1921998, -9312563, -15145128, -14609868, -11322608, -6598681,
+-13069049, 1261647, -10698227, 6486475, 5773510, 1026497, 129386, -18187040, 1196148, 415001,
+1347546, -9284109, 3147137, 10453950, 1400159, 2710661, -8266202, -5046587, -1009854, -8636642,
+2035815, 5505075, -2566780, -3155727, -3997541, 3470334, 5534602, -9592809, -5288179, -393526,
+6465537, 2477659, -2805151, 2352568, -328028, -17180, 2916283, -1772211, 3755949, -4203699,
+-1498407, 3224984, 2744484, -974421, 7267085, 558346, -4529043, -3766686, -632971, -3084324,
+-2856690, 487479, 2065879, -1250909, -9032853, -7677791, -5236102, -6020471, -1839320, -13604846,
+635655, 14735496, -5182415, 7730941, -3085934, 14689862, 12526809, 5092758, -15308874, -4013647,
+20509006, -5378910, 15208479, 2291902, -14539538, -7470022, 17179332, 277025, -11523934, 177167,
+-9823664, -1447941, 3496640, 1314797, -1955821, -17202954, -15184857, 4101157, 11007464, -9867150,
+-850940, 4193499, -724776, 1587527, 18276696, 3271155, 2669859, 1490891, 6047314, -8178155,
+-5723044, -4240744, -19245748, -6622303, -7218767, -5071820, 5087389, 3310883, -1212255, -2000918,
+-7611756, -11622718, 15069430, -3325915, -13233331, -6280316, 2695629, 10014790, -7994545, -2580202,
+-8485782, -1668595, -10139881, -2026151, -2159295, -20454782, 1872069, -6935836, 14121852, -3706020,
+-11474005, -21687974, -14256607, -2761127, 1795296, 7531762, -5592585, -5173288, -11780558, 10733123,
+18228378, 1880122, -2160906, 6158446, -4761508, 6817187, -5141076, -2524904, 2346663, 5208185,
+3783329, -6402723, 221728, 1296543, -84289, -484258, -1600412, 1696512, 6471442, -2736968,
+-5690295, -268972, -1276679, 2946885, -47245, 6277095, 435939, 2288681, 221191, -3867618,
+1009854, -1552631, 6754373, 387084, -4308389, -818728, -1049046, 4519380, 442919, -4949413,
+-767189, 3487514, -1618666, 855235, 7036230, -24910810, -12749610, -8559333, -13653701, -7281044,
+-5600638, -14122389, 14839649, -4289599, 22408992, -11310260, -16947404, -3283503, -11385421, 19313394,
+-6666863, -10172093, -4737349, 5184026, 9791989, 8435853, -2061584, -2259153, -4448513, 2134062,
+15889768, -418222, 1493575, -5119064, -2034741, -8329552, -2749853, 3701188, 2714419, -6885907,
+304406, -10191957, 2019172, -3042448, -3078955, 4168803, 1911797, -4744328, -1931662, 8718247,
+3246459, -7212861, -9526774, 15856482, -785979, -25239376, 13100187, -2796024, -10759430, 5090610,
+-1593970, 1162326, -2498060, 8785356, 3353833, 904628, 24206972, 23944442, -8494908, 2619393,
+-18044232, -3818763, -3510062, 7649337, -2807298, 1248225, 7336341, -5439576, 13794898, -5848672,
+1464584, -18754512, 7732015, -4876936, -13192529, 6600828, -3101503, 26420492, 6224482, 5041755,
+9705552, 1100049, -9290014, -727997, -3873524, -2260764, 2574833, -3263638, 5306969, 3307125,
+-4112968, 6739878, 3738232, -4408247, -1238561, 412317, 599685, -1802813, 1355062, 2370822,
+-720481, -1969243, 373662, 2109903, 1153736, 1601486, -4338454, 4324495, -8599061, 7570417,
+-5094368, -2910914, -674847, 3954591, 5529771, 1521492, -6562173, 78383, -2713883, -1534914,
+1440962, -6193343, -11389716, 3335579, 29972966, -22464290, -7180112, -14201309, -9440875, 11394548,
+-12914967, 27544700, -3206730, 8453033, 1547799, 6733972, -17073032, 3189550, 4511863, -1208496,
+-2547453, -1446330, 5077188, -10448582, -6345278, -1434519, -2949569, -12928388, -11506754, -3039763,
+-5308043, 15735150, -4060355, -7383586, -5347235, 5442261, -8029978, -3361349, -13917305, 6577206,
+-5302674, 5801427, -4911295, 7363185, -3710852, -24004572, -12228846, 3594888, -1853278, -1429687,
+-7480223, -14281303, -802622, 6349036, 4262755, -3218541, 4741644, 7403987, 22825066, -9747428,
+10823854, -25632364, 1636383, 3801046, -3031173, -7342784, 5223217, 993211, 1206886, 5791227,
+18145700, 12327093, 9306657, -4836670, -5834176, 8995272, -10911901, 2711735, 9188009, -6477885,
+22694608, -329639, 7053410, -6169184, 13094282, -12432320, -12250320, 416612, 4602595, -5609764,
+-1363115, 14180908, 139586, 12911745, 4722854, -1982127, -2032593, -7349226, -587874, -379568,
+3644817, -469225, -5912023, 1035624, 2663954, 7320235, -10674067, 1847910, -5417028, 2260227,
+6098854, -2083596, -165893, -5571647, 1837709, 2083059, -3611531, -12855374, -8049843, -5080947,
+2495376, -6794102, -3859565, -4556961, -4082903, 2585570, 4967667, -142271, 4121558, 1582696,
+2195802, 752693, -9295383, 7886097, -6860674, 12038256, 35474820, 25130390, -6750615, -15731928,
+-10660109, 21538724, -25599078, 1370632, -6489696, -6278169, 10467372, -18764712, 2501819, -9599789,
+-237297, -13057237, -10073309, 1522029, 683437, 524523, -12608950, 20099910, 4072703, -8993662,
+3645354, -2656974, 1766842, 29968134, 9469866, -8367670, -7361574, 1453846, 9300215, 2507187,
+-22405234, -5517959, -15487652, -5174362, -7248294, 7568269, -4173635, -2129767, -143881, -773094,
+-10981158, -12758737, 8316668, -4833986, 2256469, -600759, 11162620, -9061307, -6470905, 2837363,
+4669167, -11995844, 13396540, -8391829, -19522774, -18213346, -6500970, -5229660, -7888781, -4083440,
+-27757300, 9800042, -13166222, -4183298, -10989748, 15391552, 5010080, 7363185, 4295, -2365990,
+-13418015, -4064650, 18139794, -14931991, 21980032, 16769700, 5909875, -3960497, 776852, -3106872,
+3176665, -9712532, -7786776, -4849018, 1360968, -1333587, 1417876, 4096325, -7026567, -1759863,
+7125888, 7392176, -2881386, 4592394, -3900904, -6346888, -2765959, -2002529, 4734128, 1246077,
+1806034, -6280853, -4066260, 2139968, -2278480, 1987496, 2656974, 4424890, 8847096, 3473018,
+4991826, -5950677, -3346317, -2065342, 2655901, -2918430, 1258425, -2706903, 1316408, 8888972,
+4296041, 2375117, -1628330, 5569499, 1872069, -2394981, -34999688, -4329864, 23318988, -28592134,
+-11374147, -688805, -8740258, 10372346, -5928666, 32329830, -3222299, -7023346, -5320391, -1424319,
+9505299, -6419366, -6197638, 26382374, -19281182, -2346663, 6192269, -4268661, 16560320, 9310952,
+-1091459, -2068564, 7067906, 9379672, 10271414, 8369281, 17525078, 5564667, 7580618, 4544076,
+-5594732, 29214904, 3751654, 5452998, 7459822, 4344897, 21167746, -1512902, 5283347, 7263327,
+6175089, 3438121, 13993540, -8248485, -6567542, 13841069, -2469069, -13997298, -3515431, -24464670,
+-8240432, -4708895, 23222888, -21925808, -2760053, 935766, -679142, -1277216, 13722421, 37376952,
+-6456410, 4672925, 4345433, 5653788, 17908404, -19351512, -19783694, -18060338, 31908922, 2339684,
+-11913702, 29220810, -11086384, 25473452, -13660680, 9763534, 1140314, -33916284, -4866198, -8492761,
+9771587, -718870, -2861522, 201863, 6163278, -926639, -10223633, 5524402, 208843, -4814122,
+-39192, -9038759, 12187507, -1322313, 4410932, -5775658, -5147519, -5165235, -6834904, -665183,
+249108, 11558294, -471910, 1267015, -4583804, 1277753, -10923712, 3481071, -10528039, -1970853,
+-2240362, -9457518, 5051419, -7489886, -7476465, 1644973, -10446434, 3216394, 8427263, 7821673,
+-3908957, -3698504, 2059974, 3170760, 7330436, 9298067, 20734492, 1889249, -20896626, -61448096,
+12311524, -14756971, -23753854, 26623428, -15943992, -8203388, -23392002, 6077916, -4626754, -22852448,
+-7398081, -13566191, 6416681, -12562779, 645319, 4909685, 10313827, 5245229, 17447230, 2758443,
+-89121, -1792075, -14623290, -11238319, -10401337, 8463233, 13054016, 6071473, 4665945, -355945,
+5066988, 10226854, 23836532, -11249056, -6227166, 4193499, -10770704, 11471858, 2530810, -10394895,
+24260122, 8863202, -20342038, 8075076, -19566260, 2343442, 3790309, 10347113, -5529234, -6602439,
+30835718, 11986180, -13195750, 8062728, 16334297, -12608413, -26801670, 14936286, -2111513, -277562,
+2253247, 6568079, 41712184, -3842922, 5260798, 8017630, -82678, 9612674, 5647882, -22069152,
+4744328, -11722576, -10229001, -6149857, 5092758, -35662188, -4292820, 11191074, 1820529, 17795660,
+-12991739, 12620761, -8468065, -3685619, -4744328, 5681168, 2524904, -4319664, 88047, 46708,
+-6273337, 5105106, -7933342, 8457327, 1178432, 5909338, 5035849, -3551401, -2915746, 1531693,
+-2172180, 1280974, 2001992, -3446175, -1214939, -3968550, -2774549, -2583960, -7106561, 194884,
+1048509, 4225711, -2257542, 4072703, 9767293, -5033165, 1639604, -5050345, 2615635, 3144990,
+-8137353, 144955, 2674691, -7676181, -3799436, 6787122, 110059, 1395864, 1535988, 310848,
+-19010062, -21875880, 46920372, 10037339, -3032784, -5647882, 10582263, 42406360, 19449760, 5079336,
+-1229434, 14221710, 35408784, 8818642, 12206834, 11050414, 25244744, -16267726, 16350404, 7277822,
+-48476760, 14369350, -6857452, 14382235, -15097347, 11411728, 7567196, 15069430, -122407, 6399502,
+2357937, -13744432, 6855842, 13651554, -11446625, 6868190, -11115375, -6671158, 34750580, 3565360,
+30767536, -21883396, 9579388, -1107565, -4408247, -675384, -2678986, 4795331, 11274826, 7837779,
+-861678, 17596482, -28032178, -26405996, 19160922, -15023796, -3879966, -3507915, -18130668, 9148817,
+-4783520, 5168457, 2804614, 29795798, 14457934, 15706159, 5887864, 4221416, -27097486, -6228777,
+13318694, -248034, 331786, -20938, -8700530, -23563264, 4502200, 2180233, -17651242, 2493766,
+-8486855, -6973417, 7396471, 4984310, 26723286, -3835406, 6787122, 6382859, -5159330, -6913287,
+-764504, -6572911, -2545305, 15739981, 6565932, 2838437, 770410, -306016, 358630, -215285,
+-957241, -10709501, -3288871, 6513855, -1891396, 638876, -3988951, -5420249, -2228551, 1714766,
+12754979, -8540542, -8263517, 7495792, 3657165, -9592809, 6721624, 4048007, -6818261, 8513699,
+673773, -5145908, -2420751, -3575560, -1644436, -1670742, 4203699, 2107755, 2081449, 4829154,
+7025493, 5214627, -1414655, 12181064, -42531988, 36284956, -15293842, 7169374, 23478438, -34000036,
+-887985, -2732136, 8287140, 12954158, 14776835, 25667798, 4304094, -16168941, 9039296, 27325118,
+-38501696, -22428320, 25861072, 1556389, -199179, 1452773, 2215130, -464930, -665183, 13451838,
+8108362, -18258980, 1174137, -4968741, 32160178, 19684908, -6576669, 2180233, 3864397, 4236449,
+-215822, 11924977, 1168768, 9217000, 32822140, 4768488, 3452617, -4727686, 8422968, -30983358,
+-13526999, -12888123, -1405528, 3536906, -27557584, 11044508, -24460912, 8450348, 25334402, -5383742,
+-22834194, -12093017, 9426379, -4337380, -46627776, 12857521, -32548872, -6999186, -4061429, 1149978,
+-13059922, 3375844, 16409459, -13438416, -30931818, -46416784, 36294084, 11078331, -5702106, 10386305,
+-10996190, 11097122, 20125680, -20912732, 36080948, 4978941, -3846143, 16765942, 9511742, -5814312,
+9315247, 682363, 10055592, -9786083, -5213554, 2716030, 7265474, 12521440, 3721052, 11286637,
+-7473780, 6406481, 11726334, 10407243, -1745904, 9474161, -10183904, 4032974, 960462, 4359392,
+19551764, -13064754, 7770670, 1063541, -745714, 15260019, 4166118, 19895362, -2624762, 9827422,
+2599529, 7752416, 2216203, -4092567, 5951751, -10282152, 8870718, -3810710, 7344394, -1763084,
+1967095, -834297, 1474784, -148176, 7689602, -1758252, -1918777, -1045825, 3274913, -383863,
+-862215, 359704, 1599875, 1101659, 1327682, -964220, 1326608, -1131724, 1253594, 881005,
+1402844, -2665564, 51849920, -55794848, 22557706, 28368258, -34955664, -10785200, -18817862, -10368051,
+51481624, -23176180, 36536212, -17150342, -4916664, -9289477, 11978127, 4466766, -44513040, -8513699,
+-11778948, 19084150, 1006633, 7926899, 15503758, -21889300, -4005594, -14048301, 7834557, 17969070,
+11332271, -28268402, -4829154, 5411122, 3838627, -1978369, -13139916, -5692979, -25238302, -4868883,
+-3417183, 23096724, -20577726, 50705848, 11340324, -15112379, 22601728, 576063, 29320132, 15714212,
+27836756, 6585259, 25446608, 20431696, 24902220, 25905096, 4122095, 25062744, -32196148, -5788006,
+6958384, -21525302, -3532611, 13222057, -24932286, -36954436, 14950244, 23682450, 940061, 5331665,
+-25549686, -7089381, -21339546, -993748, 24780888, 1891933, 46139224, 20700668, -11410654, 48364016,
+25862146, -14409078, -5339718, -10323491, -15190762, -9879499, 12099460, -7003481, -23635206, 3832185,
+16938278, 549219, -7600482, -6337761, -4739497, -8083129, -14220637, 2483565, -3103651, -1959042,
+-10909217, -1071594, -3673808, 4863514, 8227547, -2456721, 1862405, -3238942, -8432095, 5634460,
+-2040110, -6771016, -16175921, 7628936, -22397718, -3192235, -15422691, -9616432, -12474733, -3329674,
+-1677185, -4666482, -8614631, -4429722, -9868224, -1910724, -814433, -785979, -6485401, 10416369,
+-7896834, 4930623, -72444824, 66055524, -14985141, -21896818, -19305342, 45788648, -34743600, -5507759,
+-9978283, -303332, 24504936, -27210766, -2507724, 10947335, -8248485, -3500398, 621697, -15336791,
+21906480, 1441498, -35865124, -8838506, -8728447, 2416456, -39306468, -127775, 4617627, -7586523,
+275952, 10936597, 24162412, -9818832, -6183143, 5389647, -16285442, -50299436, 4307852, 40317396,
+-20524038, -30874910, 2071785, 32571422, -15166603, -9434969, -41966124, -6585796, 788127, 30090004,
+13792214, 4017942, -31664110, -17869748, 24807732, -29637958, 10474888, 49550500, 27864138, 38466264,
+-18524194, 22498650, 14165339, -42717208, -15808164, -22869628, -5694053, 25404194, -1215476, 27458262,
+22151830, -42450384, 47469052, -28755880, -137976, 2567317, -21830782, 47036872, -3188476, -10773925,
+37654516, -30516280, -5308580, -43592308, -14920716, 20081120, -6245956, 18177376, 19390704, -4416837,
+-7683697, 3409130, -10741713, -12288438, -3507378, -9024263, -5515812, -7294465, 3102577, -9094593,
+1775969, -11497627, -11453067, -10056666, 8476655, -5900748, -1047972, 5995238, 1407676, -2010045,
+-12504260, -19389092, -12584791, -25303262, 18629958, 7809861, 16122770, 5878200, -13807783, -13962402,
+-7364795, -1902671, 20476794, -4225711, -141734, 2792803, -3307662, -3311957, -1770600, -7652558,
+14258755, -8950175, 18296024, -94489, 43173548, 30640296, 4515621, -8260833, -22429392, 13139379,
+-1762010, -2000918, -1424855, -736050, 95026, -8570070, 10871636, -206158, -38528004, 9684614,
+3453154, -13310104, 508954, 16663936, -5613523, 1134408, -27860380, 20307680, -9913858, -2983929,
+-2809446, 11570642, -15098958, -536334, 3433826, 481573, 3190624, -7138773, 20634096, -10790032,
+36373004, -22355304, -23862838, 22515830, -25214680, 1355062, 18797998, -17377974, -7771207, 10054518,
+11703786, 15535434, -55486144, 17707076, -527744, -12652437, 35184372, -17615808, 2158758, 224412,
+-29878476, 38338488, -1826972, -1625108, -20132122, -3584687, 31584116, -7317014, -1189706, 1305133,
+9105868, 5301064, -39005820, 19284404, 34756484, -18206366, 13925358, -27152784, 45565308, 2103997,
+-42527692, 628676, 23722714, -2342368, -26419418, -5892159, 62081604, -9614284, -25572236, 4354023,
+27387396, -7030325, -8560407, -3169686, -1214939, 1662152, 1235877, -6905771, 18079664, -2877091,
+-4247723, 1066226, 6175626, 15202037, -4522601, -7346542, 8346195, 1934883, -14010720, -5067525,
+7520488, 1773285, -5852967, -3095598, 12079059, -10929618, -2209224, 1933272, 1738925, -10318659,
+-4187056, 13474386, -725850, -9607305, -4088272, 9780714, -2858301, -7201050, -6155225, 8553964,
+-24212342, -80252536, -121662464, 8208756, 105224552, 1657321, 275283776, 249527392, 149385936, 288067744,
+189007552, -31211528, 10933913, -36941552, -226762464, -128756680, -99783904, -221475360, -182144192, -53716620,
+-106925360, -122781840, -10005663, 7328288, -51941724, 11409044, 46994460, -59993712, -51007568, 80447424,
+16457241, -19468014, 56136296, 75351440, -95026, 77290624, 130810208, 46902652, 35880156, 133387728,
+90148680, 10921565, 97915056, 144494512, 63469952, 73898136, 164641136, 62550828, 22469658, 157276864,
+154773440, 47864728, 186415536, 265127264, 98820216, 108856480, 184854320, 56422448, -59852516, 10631118,
+-61479236, -222722512, -212468816, -226881648, -364529440, -393987552, -421357760, -498292448, -521311872, -509161408,
+-495585536, -436274176, -391560352, -320140960, -211549680, -150965952, -52153252, 143920592, 233397648, 230576928,
+426933696, 455305728, 354357344, 431855200, 452352928, 242871808, 253343472, 310701152, 150802208, 122003376,
+201604160, 146323632, 68690488, 95245192, 127449400, 54249196, 44214004, 128094176, 67640904, -11609297,
+70111584, 54817740, -40045740, 5582921, 50444928, -33292438, -14607184, 94714232, 37373732, 3594888,
+91035592, 59886340, -9008157, 4949950, -39962524, -134073848, -182550064, -201753936, -264710112, -283097408,
+-282916480, -306338528, -309315488, -323811552, -324899776, -296906784, -295007872, -247531312, -191290320, -151409952,
+-63475860, 55115168, 118241520, 197481520, 246926800, 261653696, 249303520, 227543616, 193117840, 156853824,
+136414608, 119386136, 97623000, 88011400, 85248656, 77701864, 72557032, 75857712, 70376264, 58717036,
+49600428, 38540352, 20977158, 8018704, -12636868, -28193776, -28339804, -18241262, -8790187, -2099165,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
2938295,
-9543417, 2138357, 1384590, -2166274, -790274, -4711043, -202937, -1203128, 3533148, 3134253,
--3160022, -2272038, -1909650, -1809255, -2250563, 246961, 2811593, -2234457, -2403034, -7866770,
--5793374, -4255776, -199716, 423591, 5768678, -3178813, 2858838, 1768990, 1469416, 346819,
--4310000, 1104880, -9188546, 1120987, 283468, 433792, -630823, -5666136, -2583423, -4884452,
-299574, 314606, -2954401, -7584912, 5214091, -366146, -4439923, -20938, 2958696, 644245,
--1531693, 1078037, -2528662, -1090385, -2386391, 1837172, -2539936, 3576097, 2891587, -573915,
--5054103, 264141, 697395, -449361, -1852742, 1279900, 898185, -1152662, 2730526, 2974802,
-2052458, 196495, 12885, 951335, -2745021, 380641, 4224637, 493921, 807454, 782221,
-3121904, 1199907, 981400, 2801929, -692027, 2206003, -862752, 1439888, 1010928, -384400,
-598074, 813359, -249108, 1029182, 1577327, 376883, 33823, 1118302, 1486596, 1187559,
--178778, 451508, 487479, 580357, 170725, 93952, -114890, -370978, -1174674, 765578,
-85899, -10144713, -11386495, -808528, -4500589, 3477850, -5578089, 1401770, 2582886, -3804267,
-3113315, 11394548, 643171, -1048509, 6249715, 846645, 6275484, 97174, 2867428, -4484483,
--5938329, -321586, 2261300, -4132832, -1324461, -419296, -1159641, 1131724, -1207960, -2182917,
-2072322, -1029182, -858457, 4476430, 6391985, -1990717, -3423626, 1270774, 5117991, 1939178,
-6557342, 273804, -910533, -168577, 5853504, 375273, -4168803, -2296197, 4598836, 3326989,
-3580929, 970663, -2263448, -4721780, 947577, 2221572, 2772402, -1017907, -2458332, 5103495,
-3445101, -847719, -2838974, 170188, -1969779, 5319317, 1651415, 974958, 1720671, 593779,
-1126892, 3267933, 602369, 3282966, -610959, 5233418, 667867, -5180268, -2020245, -1805497,
-2602750, 3197603, -483721, 853625, -3591667, -1319092, -3342558, -1027034, -2166811, -1876901,
--759672, 1097901, 83752, 28991, 178241, 1447404, 266288, 328565, -143881, -1555315,
--402653, 80531, -114890, 627065, 276489, 267899, -552977, 5978595, 4192962, 6295349,
-6554657, -1571421, 3285113, -1404991, -3711926, -346282, 9709310, 4249334, 2170569, 3453691,
--4043175, 6919729, 2972117, 4636417, -1362578, -7682086, 3234647, -11986180, 2438468, -3061775,
-2416456, 1888712, -218506, -4126390, 1002875, 2691871, -1596117, 2524367, 6085432, -436476,
--5029944, -6867653, 1081258, 3069291, -6312528, 3514894, -5931887, -3876745, 4322885, -2507187,
--5012764, -2448668, -3533684, 5548024, 7627862, 4314295, -2731062, 32749, 4078608, 2430415,
--336081, -3114388, -1469953, -2733210, 2909304, 9422085, -66572, -5111011, -4027069, 2185602,
-775242, -1915555, -5571110, -103616, -4771172, -1877438, 759672, -819265, 3799436, 708133,
-4769025, 5541582, -4854924, -1789928, 278636, -3794604, -4547834, -728534, 28454, -2787434,
-2676838, -2532957, -309775, 2108829, 430034, 151398, 2089502, -2561948, -880468, 606664,
-968515, -1160178, 835908, 454730, 943819, -142808, -16106, 960999, -1304596, 1675574,
--1306744, 820339, 260382, -372052, -99858, 745714, -535797, -872415, -1476932, 925565,
--1083942, 406948, 1414655, -194347, -900333, 13376139, -3593814, 1304060, 1909650, -8822937,
--7517804, 195958, 8742406, 6670084, 10567767, 3485903, -2982855, -4547297, 779000, -2610266,
-2083059, 1009854, 3570729, 6564858, 2091112, 4840428, -136365, 2870112, -2913062, -6114960,
--3205119, -4680441, 63351, -1306744, 1427003, -7449621, -3719442, -996969, 2756295, -3682398,
-7719130, -8698383, 1866163, -5477694, -4443144, 2529199, 2216203, 7447474, -827318, 1882269,
--2126546, 5216238, 5512591, 1532767, -1188632, -5604933, -777926, 1934346, -4297652, 4307316,
--4730907, 2029372, 7820062, 6554657, 96100, -2525978, 1224603, 7818451, -977642, 1921998,
-1214402, 6388764, 62814, -1706176, -3968550, 2785823, -5980205, 2175938, 12436615, 3056943,
-5855651, 579821, -8229694, 2974265, 1527398, -3248069, 3356517, -1043677, -897111, -4105452,
-1714229, 4036733, 1801739, 775242, -1876901, -4041027, 932008, -805843, -631360, 258772,
--206695, -765578, 1299765, -1379221, -1255204, -1188632, 1829656, 731218, 1439351, -814970,
-1327145, 72478, -1313723, 1404991, 765041, -1166621, -2226941, -813896, 1827509, 111669,
--484794, 917512, 828392, 1986422, -96637, -782221, -4876936, -8341900, 4207994, -5947993,
--6132140, 1263794, -2972117, -19624242, 1901597, 3032247, 17962626, 5820218, 1329829, -8154533,
-7485055, 3246459, -3260954, 3926137, -682900, 6531572, -3942780, -2018635, -1329292, -1730335,
--2708514, -1168768, 4634807, 4062502, 7014219, 2514703, 3439195, -64425, -4571993, -4932770,
-6643241, -3633006, 1472637, -591095, -4699768, 6752226, -1132261, -2913062, 1169305, 4918275,
--3272765, 7463043, -9454297, -7807714, -9588514, 2330020, -5405217, -8191577, -1896228, 7674570,
--3258270, 2309082, 4537633, -3288334, -4336307, 357019, 695248, 2572686, 456877, -2384244,
--288300, 9885941, 4177393, -4020626, -12447889, -9927817, 3617973, 11758547, 9867687, -7704098,
-181462, -5025112, 2210298, 1956358, -8442832, -667867, 1651952, 986232, -2305324, 504122,
-485868, 256624, 2837900, 2614561, -1703491, -2055142, 1380295, -999654, 634045, -2940979,
-1183800, 877247, -4714801, -1058173, 984621, 710280, 361851, 919660, -315143, 339302,
-321049, 463856, -1739999, -243203, 574452, -549756, -2109903, -1045825, 251256, 320512,
-2234457, -3506304, 5814312, -9774809, -1626719, -12113418, -3509525, 1795833, 4269735, -11041824,
--2705293, 7562901, -867583, -11052025, 5772973, -3537979, -6276021, 3462281, 5844914, 1312113,
-1260573, 1998234, 7622493, -3596498, -3102040, 1980517, -3710315, -1915019, 145492, -426812,
-296890, 6073621, 3160022, -706522, -488016, 3549254, 1532230, 4359392, -337155, 4921496,
-5251135, 2076617, -5646809, 821949, -757525, -4045859, 5514738, -3104725, 2332167, -3758633,
--1343788, -13534516, 1275605, 10987063, 1006633, 11680164, -2120103, -2625299, -11992622, 14113263,
-6683506, 8041790, 1350230, 6591701, -42413, -51540, 5532455, -3215320, 2021856, -22549,
--13455059, 3094524, -3133716, 3563749, -2002529, 3216394, 12546136, 3775276, 3326989, -151934,
--7574175, 5705327, -3059627, 1144609, 2889439, 3761855, -4160750, -1105954, -1708323, -2265595,
-2467459, -1424855, -1069447, -1779727, 310848, 456877, 207232, -3501472, 1422708, 607201,
--768262, 1010391, 505732, 881005, 746251, 1663763, 30602, 354335, -198642, -804770,
-2110977, -394600, 2968896, 459025, 1243393, -910533, 1639067, 545461, -15541339, -512712,
-11682848, -2560874, 6914361, -7457137, -5145371, -13425531, 7663833, 3978750, 8898635, 4160213,
--4393752, 7503308, -1903744, 7179038, -4734665, -4372814, 536871, -1605244, 6210523, 1304596,
-5235565, 5864241, -3523484, -2997350, -2085207, 3862249, -806917, -2492692, 783832, -5280663,
-2715493, 1870458, -2792803, 3907883, 6849399, -2746095, -3130494, -827318, -5201206, -2517925,
-7873749, 1073742, -4903242, 9592809, -10563472, 1671816, 5631776, -2413235, -3490198, -773631,
-4486094, -8043937, 4013647, -3263102, -6929930, -5174362, -4195646, 157840, -1993939, -4397510,
-1879585, 11915313, 6549289, -1606855, -4115116, -11503533, 1195075, 6417218, -3780108, -12713640,
-314069, -1977296, 611496, 1628330, 5812165, -317291, -3000572, -1103807, -4679367, -2716567,
--2229625, 3535295, -2917894, 3283503, -6818798, 604517, -3148211, -2040110, 4096862, -1932198,
--1982664, -2335389, 810675, -4298189, -1767379, -957778, -204011, 969052, -3113315, 912681,
--2477123, 1391033, 1577864, 3608310, 633508, 1332514, 1842004, 1481227, -1057636, 623307,
-188442, 2697776, 1501091, -226023, 1555852, -86436, 106300, -1043677, 130460, 55298,
--1912334, 603980, -1330366, -947577, 102005, 1455457, -428423, 5170604, -2277407, 1315334,
-7642895, 496606, 8953933, 9706089, 21658984, 14770393, 9057549, -2302639, -11473468, -4002910,
-10510859, 4544076, -11082626, 8267812, -1934883, -5501316, -6782827, 1008780, 18724984, -12695923,
-13540421, 5281199, -2919504, 4443681, -3663070, 9686225, -3723200, 5113696, 1016834, -6731288,
--4713727, -6558415, 248571, 5536750, -1604707, -3701188, 3568044, 454730, -1122597, -12674448,
-3831111, -7103876, -5374078, 3487514, 8346732, -6174553, -8885214, 307627, 7534983, 614180,
--5066988, -1895691, -3017752, 3429532, 2502892, -2922188, -4789426, -7198902, 4444755, 11527692,
-7065221, 3636227, -6696391, 3462818, 7299297, -8202314, -10703595, 1865626, -8837969, -4233227,
--17324824, 217433, -11897596, -6203544, 3198140, -1500554, -1145683, 5261335, 895501, -9711995,
--6733972, 4371203, -1344862, 524523, -3022046, 280784, 2833605, -427886, 1877975, 1885491,
-388158, 173409, 1393717, 1626182, 1082332, 122943, 335544, -984084, 2563559, 62814,
-2359548, -426276, -1570884, 759672, 2196339, -2760053, -4049617, -2070174, -586263, -1273458,
-4604742, 1728188, -1449015, 2041720, -1166621, 302795, -3710852, -338766, 269509, -1705102,
-23699092, 530428, -9276592, 10445897, -11426224, 13224204, 1072668, -8055748, -13795435, -3344169,
-6769942, -10969883, 9735617, -1555315, 6277095, 7473243, -6415071, -2672007, -3860102, -5113696,
--1985886, -4777614, 798327, -5839008, 6075231, 3833258, 5099737, 10337986, 5325760, -1544578,
-12336757, 6284074, 2282238, -6622303, -7215008, 3696893, -5522254, 1268089, 3901978, -8239358,
-7056095, 18787798, 1437203, 13361106, 6331319, 6462852, 9546639, 552977, 5062156, 5337571,
--12158516, -8253317, 8397735, 558346, 7926362, 1407139, 8321499, -1346472, 2997887, 2066416,
--17418776, -1150514, 4485020, 11656541, 2611340, 10223096, 1047972, -2413235, 3364033, 4585952,
--9772124, -16542603, -8719320, 2273112, 4082903, 551903, 12152610, 4279398, -19016504, 4842576,
--2747705, 100395, 5489505, -7638063, -245887, -4115653, 3518652, 4920422, 316217, 1062468,
-3578245, 144955, -13959, -1648731, -1804960, 647466, 380641, 122407, 2994666, 2158221,
-772020, 1791538, 1178969, 85362, -2889976, 2334315, 1935420, -1141388, -226560, -396748,
-173946, 1711008, 1447404, 4519916, -3753265, -1065689, 1729261, -913217, 2406256, -1867237,
-3999152, -923955, -1162326, 580357, 2312303, 1631014, -507343, -232465, -11432129, -1044214,
--10172093, -4860293, 4369593, -5224291, 2365990, 3445638, -6068252, -15291157, 4963909, -15149423,
--17293686, 3725347, -8462159, 7620346, 11013907, -2844342, 12839805, -3134789, 12687333, 17131014,
-112206, 967441, -17256642, -3326452, 1978369, 2922725, -1928440, -11476153, 898185, -9725417,
-1336272, -2655901, 2739652, -3763465, -6308233, 1409823, -1038308, -3579855, 4174708, 360777,
--2541010, 12365211, 4713727, 9272834, -5781563, 1673964, -4858145, 3506841, -1003412, 4838818,
--1531156, -3722663, -4653597, -11021960, -6373195, 17671642, 7277285, 11706470, -13489419, 2822331,
-10159208, -8606041, 184147, 6528351, -3452617, 6551436, 1047972, -11911555, -2979634, -18314814,
--2153926, 7332583, 3917547, 12229383, 1495722, 8110509, 8799314, 2980707, -437013, 15856482,
-1454383, 375273, -2616709, -1610613, 8527658, 4890894, 8162586, -998043, -1544041, -2103460,
-5995775, 1152662, -1108638, 1544578, 4153770, -1012539, -2253247, -4726612, 289910, -3783866,
--1527398, -3237332, 2811056, -441845, -5332739, -1079647, 544387, 329639, -126165, -2660732,
-3864397, -3093987, 1096827, 1323387, -3977140, -854162, -2605972, 472446, 3456375, -3031173,
--2240362, -1922535, -1637993, 1750199, -11148661, -10152229, -10554345, -15652471, 10706280, 6755447,
-1047435, -10572599, 9551470, -203474, -13103408, -10914586, -3675418, -2811056, -8360154, -3452617,
--4922570, -4373351, -3039226, -12332999, 6196027, 7024419, -552440, -1263794, -2146947, -4640176,
--14420890, -15947750, 562641, 6733972, -4100083, -9875204, -5396627, 7282654, 5529771, 224412,
--2973728, -4323959, -4167192, 9241159, -4703526, 6453189, -4447439, 52076, -15699179, -3579855,
--1173063, 11759620, 3341485, -2935073, -8799314, -6314139, -12344273, 19880866, -9146133, 18872086,
-2488934, -8351564, 12613782, 12203076, 21417928, -21100100, 8732205, 3325915, 2883534, -4319127,
--5960878, 9096741, 4850092, -1758252, -9773735, 10757819, -5684389, 11576011, 9751723, 9018358,
--8269423, 17966386, -13343927, 7282654, 11744588, -6914898, 1511829, 153545, 10209137, -2886755,
-4563403, -5488432, 10904385, -535797, 1952063, -6426345, 5003100, -540629, 5158793, -1683627,
-6936909, 3168612, 2218888, -4275640, 1347009, -3616363, 241055, -3113315, -3870839, -1001801,
--3414499, -2523293, -326954, -1978369, -3403225, 2138894, 2910377, 3994320, 1024350, -4175782,
-413391, -2897492, 2711735, 879931, -1896765, 280247, 1907502, 878321, -4400194, 623307,
-4496294, 1499481, -660888, 1028645, 16922172, -28350542, -30653182, -19094888, -3302830, -13282723,
-8122857, -10908143, 1043140, 5580237, -909996, 20215874, 14413910, 5230734, -5988258, -4390531,
-13995688, -2261300, 2092723, -5673115, -12660490, 132607, 5000953, 3467649, -7000260, 6189048,
-781684, -723165, 11843909, 16528108, 1089848, -10409390, -4613869, -20056960, -7900593, -5115306,
--6141803, 1002338, 3435437, -7233799, -3022046, -10155987, 10951093, 13342316, 10951630, 12463995,
-9634149, 16282221, 1890859, 5646809, 3748970, -2850785, 6145025, 9739375, -9780714, -33382634,
--7890929, 11206107, -17442400, 8927090, 10833518, 4038880, -5378373, 923418, -4271882, -13357885,
--3765613, 8830453, -10858751, -9016210, 3120831, -7306276, 21679922, 22242026, -8321499, 14348949,
-3653944, -2020782, -9820443, 6897718, -13208098, -10751377, 11787538, 9067750, 6184216, -772020,
--1272384, -15883863, -11593727, -2039036, -3754875, -2910377, -2514167, -4659503, -4037806, -4341675,
--2333241, 632971, 3634616, 3027415, 4858682, -373125, -2509335, -2345052, -1762547, 7239704,
-6549825, 3497177, -755914, -420907, -1675037, -2658048, -4325569, -1817308, 617938, -1210644,
-2769180, -1518271, 952409, 1409823, 1089311, 2768643, -3349001, -43487, 502511, 2343442,
--4009352, 6646999, -2901251, -1676111, 27279484, -22953378, -476205, 3941169, -22059488, -6452115,
--9345312, 3360275, -6775848, 19145354, 2395518, -191126, 23776938, -1304060, -21210696, -16901234,
--10453950, 8213051, -1320166, -20443508, 5155572, 5750961, 10667625, -12144020, 6084358, 10412074,
-8910983, 7293392, -2615098, 12434467, 13264470, 4570919, -29956324, 21853868, -10828149, 8450885,
--2309082, -3045132, 5575942, -13163538, -7697119, 14076218, -6561637, -1774358, 12527883, -14131516,
-12597676, -4874251, 11682311, -15571941, 20690468, -9217000, 32097364, -4165582, 1853815, 8361765,
--7320235, -5237713, -4108673, 2693481, -1845225, -16175921, -20600274, -5568425, 11644193, -6043019,
--7619272, -20715164, 9366250, 2222109, -28627568, -329639, 156229, 4282083, 14387067, -9837086,
-4334159, -12658342, -11391864, -16818556, -17110612, -2901787, -10115185, 12301323, -2287070, 12018392,
--6073084, 6888054, -1221918, -7537668, -10888816, -1124208, 990527, 5288179, -2807835, 2383170,
-758062, 4345970, -715649, -5540508, -1114544, -8433168, -696858, 1482301, 1583769, 580894,
--3546569, -4038880, 4376572, 2273112, -1733556, 5437429, -7038915, -8840653, -498753, 8044474,
--155156, 2404108, 2795487, 5535676, -28454, 6183143, -5310727, 2058900, 848256, 5047661,
-8003135, -5104032, 971200, -1118839, 984084, 10377178, 31868658, 15681462, -9511742, 21720724,
-7348152, -14096083, 5531918, 13991930, -2028835, -4939750, -19324132, -5408975, 12177843, 7727720,
-5880347, 3414499, -3350075, -7938710, -18226230, 9671729, -6103686, 4762045, -13953812, -7758322,
--183610, -2287070, 18255222, 5341329, 3054796, 13739600, 6821482, -21055540, -2275259, 7558069,
--3752191, 333397, 18045842, 5780489, 20923470, -12176769, -7438884, -3502009, -7560753, 8044474,
--7887171, 15531139, 15738371, -6934762, -15015743, 25368224, -12916577, -5380521, -2865817, 7494718,
-4067334, -14288819, -4048007, 9002788, -6562710, 11443403, -5261335, 16250009, -8290898, 3605625,
-25170656, -584116, 17792438, 30387430, 4054449, 14882062, -7527467, -36728412, -24632712, -4836133,
--1359357, 20749524, -468151, 6888591, 1983201, -5255966, -16764868, -37898256, 28840706, 1903744,
-1066763, 9288941, 4684199, -9296994, 21382494, 988916, 4693863, -332860, 1653562, -18723374,
--6699075, -12366285, -7189239, -668941, -6700149, -7010997, 4569845, -1575179, -4534412, 13586055,
--2301029, -13943611, -9679246, 3426310, 932008, -4085051, 21386790, 6323803, -6815040, -8225936,
-2454574, -1953136, -4118337, 638876, 2210835, -4807679, 5286031, -207769, 7517804, 9357660,
-2119030, -926102, -2556043, 6265821, 6394670, 5472325, -41344964, -9958419, 43298640, -16637093,
--18471044, 38144680, -24419574, 21488258, 28833726, 11345156, 4041564, -21846888, 8454643, -38307352,
--18767396, 8386461, 20025822, 2264522, 4712116, 14536854, 38871600, 26219164, 8319352, 1480153,
-96100, 4353486, 3348464, -14986215, 475668, 9646497, 12284143, 51773684, 29315300, 19999516,
-37515464, 15338402, -5164698, 11307575, -514859, 35871568, 13145284, -2817499, -5762236, 15060840,
--2092186, 17285096, -53121768, 2432025, 18589692, -965831, 22459994, -8170639, 6111739, 11996381,
--49417356, -19031000, -3642132, -15734613, -20316270, -24071682, 22957674, -14649060, 4797479, -4345970,
-23051626, -37110664, -9961103, -5049271, 12001212, 44560, -3142842, 27737436, 48275968, -3758,
-15230491, -8844948, 4347581, 33814276, -35388384, -20961052, -29563334, -37444060, -2978560, -1242319,
--14536854, -15720654, -14799920, -14103062, -18198850, -26615376, -11402601, -17160004, -10342281, 4976794,
-23983634, 7850664, 3921305, 3850438, -2005213, 5567888, 2640331, -16502875, -14788646, -4052302,
--20975546, -8167954, -9055402, -7017977, -8054675, 10067940, -7415798, 921271, 1793149, 4534412,
-12084427, 18238578, 136365, -4186519, 13348221, -6267968, 8631274, 3515431, 2151779, -3157875,
-2710124, 1993402, -7307887, -9766756, -10598906, -1165547, 22807886, 19432580, -18272402, -66247188,
--11587285, 26682484, 6460168, -7683160, -4984847, 1720671, -8887898, -12417824, 14754286, 10521596,
-30190936, 10588168, 18238042, -7074348, 40101572, 6896107, 25505126, -3863323, 37011880, -14265197,
-24192478, -23638964, 434865, 2294586, 17352204, -7028177, -12541305, -31165894, 17437030, 1986959,
-3765613, -15207942, -27460410, -1973001, 3462818, -3685082, 8741332, 17571248, 2949569, 12490302,
-45825152, -19441170, 4827007, -15273977, 23795192, 20164872, -22600654, 21338472, 24907052, -17856864,
-6524056, 5557688, 17343078, 8196945, 34964792, 10697690, -12039330, 1851668, 45113800, 13984950,
--51002736, 14908368, 9453223, -44346612, -11994770, -14348412, -30900142, 2041183, 19517942, 20890720,
--12241731, 37736656, -9488656, -16668768, -8216273, 19870666, -74187504, -9277129, 1358283, 59880972,
-8234526, 50750408, 24738474, 35571992, -730681, 12102144, -6573985, 30127584, 30999464, 27420682,
--6400038, -18519898, -7237557, 30114700, -3284039, -19906636, -8315594, 35716948, 5276904, -22427782,
--7349226, 32220844, 9526774, 13355738, -156766, 12112882, -8961986, -735513, -418759, 5202816,
--581968, 5639292, -4213363, -10570451, -12143483, -15256798, -1721745, -11147588, 275952, -2028835,
--4048544, 10689637, -11941083, -5032091, -11836930, -4512937, -21958020, -16586090, 22749368, 398895,
--40840308, 33114198, 71446784, 4757750, -39609800, 61536680, -13791677, -920197, 8865886, 34893388,
--19991462, 1476395, 69994008, -34677564, 16739098, 23535884, 22692460, -31015570, -3030636, 5539971,
--15093052, 2635499, 7387344, -12615393, 12510703, -21381958, -5957120, -8567386, -1511829, -12840342,
--11123428, -4153234, 6841346, -23315230, -21675626, 32747516, 6058052, -20523502, -5262946, 19477140,
-47405164, -4127464, -22941030, 24669218, 36386428, -10540387, -2572686, 940598, 13253195, 98247,
-158377, 16491064, -39934604, 27484032, -22983980, 295279, -32631014, 18387292, -2434710, -48932564,
-24282672, -3492882, -18803904, 33022392, 4013647, 32652488, -27485644, -10576894, -11024107, -25546466,
--39508332, -52441012, 44644576, 18196702, 32902134, 30215632, 18835042, 7294465, -18719614, 28611462,
--14081050, -12040941, 38872676, 12935905, -7150047, -3474092, 11950747, -27456116, 7220377, -10850161,
-18327162, -6984154, -11588359, 17346836, 3100430, -20409684, 1802276, -9671729, -5525476, 4317516,
--4291746, 3733400, -949725, -14703284, -7262790, 6356552, -4720169, -9274982, 9365176, 14460618,
-14386530, -11428371, -4494147, 16622597, -28021978, 8455717, 10524817, -12098923, -27838368, 14089103,
-1958505, -12658342, 8968429, -13551159, -21616570, 5718749, 19788524, -16227460, -6780680, 6904697,
-17307108, -4716411, -1907502, 931471, -11731703, 38742216, -15791521, 11476689, 8929774, -40184788,
-36098664, 12632036, -10366440, 31018790, 2551748, 2064806, 15120969, -13485124, 39537860, -31793496,
--17067126, 14745160, 13575318, 6720550, -29616484, -18015240, -32998234, 18177912, 4304094, 16598975,
--47782, 17826262, 7125888, 5943698, 632434, 15185931, -6956774, 8339216, -15149960, 11243151,
--14015552, -174483, -18475876, -13113072, 658741, -16406775, 7538742, 38893612, 9190156, -29275570,
-15106474, 11645804, 20526722, 501437, 34216932, -29613800, 4367982, 13618804, -28646358, -6742562,
-57328688, 32266478, -76258752, -32412508, 40296456, -11162620, -36288180, 14119705, -3890704, -27978490,
-20229296, 34475704, -47119548, 9141838, 41442676, -28371480, -25560960, 33915748, 4333085, -28191628,
-4738960, 21981106, -24755654, -3578782, 26604102, -4128537, -12243878, -19432042, 24300388, -6693707,
-13417478, 2983392, 13624710, -9758703, 8704825, 24582246, 9471477, -18505940, 1165547, -13313862,
--9193914, -18656802, -2018098, -5166309, -1667521, -12636331, 12279311, 10626823, -4703526, 28074590,
--7570954, -30427158, 35878008, -4599373, -7315940, 6385543, 12280385, 1391033, -3806952, 30302068,
-16383153, -21845278, 1359357, 8370355, -16087337, -13253732, 21665426, -11776800, -42505680, 40105868,
-4654671, -41328860, -1723356, 21170430, -15918759, -34840776, 19323058, 26102126, -43011948, 5812702,
-31408022, -19193672, -3855807, 34529928, -3174518, -14786499, 7616588, 14272713, -19772418, -5788006,
-19931332, -5268851, 33157148, -72130752, -5623723, -12389370, -81151800, -13991393, -25345138, 8368207,
-13424994, 24332064, -11101954, -31029528, -12344273, -44976896, 5639829, 16714402, 8964670, 7669738,
--36980744, 22878218, 3121368, -43457016, 31644782, -46764140, -19746112, -17252346, 12393128, 34638376,
-39209832, -2781528, -9341554, -75953272, 32403918, 77858096, 27797028, 2253784, -42926588, -61822832,
--25999048, -4781909, 32136020, -38539816, -23717346, -39603356, -13175349, 72769632, 77541880, -13099113,
--36334888, -30481382, -16888886, -7749195, 38865160, -18177376, 11354820, 8668855, 25726318, -6694781,
--17989470, -45035416, -20135344, 69836704, 29317446, 46643880, -42712376, -22981296, -19984482, 47656956,
-591095, -76229760, -74381856, 41947872, 70997424, 120196272, 20579872, -101145408, 16658031, -26336740,
-34223372, 33849712, -124907312, -39190504, 23990076, 66180076, 15621333, -62846644, -14542759, -5777805,
-36518496, 32032940, 8072928, -50202264, -8281234, 11745125, 22308060, 11884711, -13574781, 2806224,
--28432684, -2916283, -809601, 27828166, -18935438, 36907728, -23460186, 11027865, 20699594, -7972533,
-17114370, 16158204, 28114320, 2200097, -14136885, -15641197, 2236604, 2158221, 4481262, 3762928,
--1279363, -1107565, -10631118, -10041634, -2498060, 18811420, -4959614, 1353989, -4088272, 6882685,
-1021129, 10911364, -36348308, 30974230, -32389958, -7456063, 1527398, 7938174, -5862094, 7082938,
-13024488, -21441014, -17808546, -758599, 5088463, 13176960, -14957760, 1789928, 11957726, -9413495,
-7567733, -5064840, 35979476, -876710, -5102958, 20144470, 11517492, 17859010, -8941048, 11268384,
--3427921, -864362, 15310485, 10314901, 2778844, 4111894, 20549272, -19287624, -5435281, 1648194,
-27628988, -816044, -5884105, 25061672, -6190122, -11436961, -10730439, 20698522, -4720706, 8825084,
-5920076, 2825552, -7118909, 3403225, 8505109, 2517925, 24095840, 11428908, 7060390, -10700374,
--1248762, 8689256, -16676284, 5728950, 6781217, 17146584, 561030, -2479807, 10251013, 1792075,
--19397682, 21800718, 7118909, -5585068, 18773838, -12922483, -1211718, -9749576, -7830799, 17736068,
-13625247, -1671816, 6995965, -11259794, 2881386, -15037217, -1033477, -13809930, 3349001, 8210367,
-3512210, 1175747, -2532957, -2292439, 2927557, -8443369, 2703145, -3918621, 4170950, -5727339,
--1475858, -5339718, -5834176, 2541547, -693637, -891206, -1904281, 8117488, 3718905, -11382737,
--10979010, -8255464, 2798708, 3064459, 8712341, 4428112, -10073846, -2057826, -3532074, 9123047,
--1991254, 9874667, 4731980, -9017821, 493384, 4095251, -4414690, 6109591, -3456375, 6971806,
--4823249, -2212982, 2877091, -4758824, 57496192, 4593468, -21199958, -17617418, 2882460, 12959527,
--766115, 11827803, -4487167, -3211562, -15910169, -3538516, -11134166, 17706540, -11072963, -937377,
--6982006, -3338800, -4086662, 1912334, -11766600, 1779727, -5056787, -8337606, 2464774, -1350230,
-693100, -2275259, 4179540, 1978906, -9835475, -6359236, 20938, -6709813, -5790690, 4871567,
--1568737, -10099616, 699006, -5623723, 4327717, -14907295, 7472170, -6488085, -11270531, 3420942,
--5149129, -5872294, 1559610, -109522, 733903, -2488934, 2530810, -4564477, 5068599, -3135326,
-565325, 8294656, -5961952, 2779381, -1546188, -886374, 2297808, -6870337, 6279779, -7221451,
-6270653, -1511829, -265214, -4624606, 5931887, -6936372, 496606, 2446521, -9072582, 9088151,
--5506685, 3855807, -4158602, 3684008, -3192771, -4028679, 6805913, -4242891, -785442, 6642167,
--4237522, -63888, 606664, 1049583, -4687420, 376347, -363462, -2075543, -1267552, 1138166,
--1423782, -2559264, -1199907, 2893734, -2575370, 2167885, -675384, -306553, -772020, -1966558,
-1928977, -1329829, -1462436, 1986422, -1995012, 1570347, 820876, -1257889, 401579, -328028,
-645319, -4016331, 3944391, -4131222, 813896, -613643, -2058900, 547608, -1085016, 2806224,
--27634356, -44680008, 47362752, 164437648, 31579820, 49323940, -101259224, -140924864, -58798640, -73826728,
-57007100, 132004208, 75981728, 50914152, 5156645, -72858752, -64381024, -64512020, -26299696, 36478232,
-31237298, 33237678, 30000346, -1081258, -4791573, -7725573, -10326175, -15362024, -2006287, 20110648,
--1735167, -11823508, -4540318, -17042968, -9474161, -3043521, -4154844, 32319628, 30198988, 17730162,
-19196356, 883690, -23344758, -23968064, -43723304, -29271812, 4088272, 3470871, 9012989, 25737592,
-36881420, 21985938, 18615462, -954557, -20762408, -29111826, -24955370, -21117280, 3092377, 7377680,
-13568875, 9201431, 6281390, 1228361, -7501698, 2859911, 827318, 3054796, 18387828, -1835562,
-8199093, 8196408, -13504988, -25853018, -26385594, -24012626, 6450504, 19454592, 14305462, 21297670,
-19002546, -6471979, 4860829, 11548630, -7419019, -7198365, -16355772, -21368536, -8130910, -5158256,
--2088428, 8843875, 4320200, 4707284, 14433238, 13460964, 14211510, 7890392, 3720516, -7206955,
--8615704, -21964462, -23791434, -17112224, -12306155, 5242545, 15757161, 19505594, 26515518, 18693308,
-12176232, 22012, -8036958, -13057774, -27117886, -29067802, -10052371, 5010080, 13991930, 10882910,
-9791989, 10893648, 8153459, -693637, -1879585, 1011465, 482110, -4954782, -4115653, -14765024,
--9398462, -560493, 5490042, 7046431, 5912560, -2326799, -29528, 5161477, 4407174, 176094,
-3142842, 2426657, -1449015, -7011534, -5933498, -6081137, -1101659, -1687385, 172872, 1158567,
-6395207, 6658273, 6322192, 2576981, 1786706, -2451353, -1755568, -1751810, 297963, -704912,
-0, 0, 0, 0, 0, 0, 0, 0, },
+9543417, 2138357, 1384590, -2166274, -790274, -4711043, -202937, -1203128, 3533148, 3134253,
+-3160022, -2272038, -1909650, -1809255, -2250563, 246961, 2811593, -2234457, -2403034, -7866770,
+-5793374, -4255776, -199716, 423591, 5768678, -3178813, 2858838, 1768990, 1469416, 346819,
+-4310000, 1104880, -9188546, 1120987, 283468, 433792, -630823, -5666136, -2583423, -4884452,
+299574, 314606, -2954401, -7584912, 5214091, -366146, -4439923, -20938, 2958696, 644245,
+-1531693, 1078037, -2528662, -1090385, -2386391, 1837172, -2539936, 3576097, 2891587, -573915,
+-5054103, 264141, 697395, -449361, -1852742, 1279900, 898185, -1152662, 2730526, 2974802,
+2052458, 196495, 12885, 951335, -2745021, 380641, 4224637, 493921, 807454, 782221,
+3121904, 1199907, 981400, 2801929, -692027, 2206003, -862752, 1439888, 1010928, -384400,
+598074, 813359, -249108, 1029182, 1577327, 376883, 33823, 1118302, 1486596, 1187559,
+-178778, 451508, 487479, 580357, 170725, 93952, -114890, -370978, -1174674, 765578,
+85899, -10144713, -11386495, -808528, -4500589, 3477850, -5578089, 1401770, 2582886, -3804267,
+3113315, 11394548, 643171, -1048509, 6249715, 846645, 6275484, 97174, 2867428, -4484483,
+-5938329, -321586, 2261300, -4132832, -1324461, -419296, -1159641, 1131724, -1207960, -2182917,
+2072322, -1029182, -858457, 4476430, 6391985, -1990717, -3423626, 1270774, 5117991, 1939178,
+6557342, 273804, -910533, -168577, 5853504, 375273, -4168803, -2296197, 4598836, 3326989,
+3580929, 970663, -2263448, -4721780, 947577, 2221572, 2772402, -1017907, -2458332, 5103495,
+3445101, -847719, -2838974, 170188, -1969779, 5319317, 1651415, 974958, 1720671, 593779,
+1126892, 3267933, 602369, 3282966, -610959, 5233418, 667867, -5180268, -2020245, -1805497,
+2602750, 3197603, -483721, 853625, -3591667, -1319092, -3342558, -1027034, -2166811, -1876901,
+-759672, 1097901, 83752, 28991, 178241, 1447404, 266288, 328565, -143881, -1555315,
+-402653, 80531, -114890, 627065, 276489, 267899, -552977, 5978595, 4192962, 6295349,
+6554657, -1571421, 3285113, -1404991, -3711926, -346282, 9709310, 4249334, 2170569, 3453691,
+-4043175, 6919729, 2972117, 4636417, -1362578, -7682086, 3234647, -11986180, 2438468, -3061775,
+2416456, 1888712, -218506, -4126390, 1002875, 2691871, -1596117, 2524367, 6085432, -436476,
+-5029944, -6867653, 1081258, 3069291, -6312528, 3514894, -5931887, -3876745, 4322885, -2507187,
+-5012764, -2448668, -3533684, 5548024, 7627862, 4314295, -2731062, 32749, 4078608, 2430415,
+-336081, -3114388, -1469953, -2733210, 2909304, 9422085, -66572, -5111011, -4027069, 2185602,
+775242, -1915555, -5571110, -103616, -4771172, -1877438, 759672, -819265, 3799436, 708133,
+4769025, 5541582, -4854924, -1789928, 278636, -3794604, -4547834, -728534, 28454, -2787434,
+2676838, -2532957, -309775, 2108829, 430034, 151398, 2089502, -2561948, -880468, 606664,
+968515, -1160178, 835908, 454730, 943819, -142808, -16106, 960999, -1304596, 1675574,
+-1306744, 820339, 260382, -372052, -99858, 745714, -535797, -872415, -1476932, 925565,
+-1083942, 406948, 1414655, -194347, -900333, 13376139, -3593814, 1304060, 1909650, -8822937,
+-7517804, 195958, 8742406, 6670084, 10567767, 3485903, -2982855, -4547297, 779000, -2610266,
+2083059, 1009854, 3570729, 6564858, 2091112, 4840428, -136365, 2870112, -2913062, -6114960,
+-3205119, -4680441, 63351, -1306744, 1427003, -7449621, -3719442, -996969, 2756295, -3682398,
+7719130, -8698383, 1866163, -5477694, -4443144, 2529199, 2216203, 7447474, -827318, 1882269,
+-2126546, 5216238, 5512591, 1532767, -1188632, -5604933, -777926, 1934346, -4297652, 4307316,
+-4730907, 2029372, 7820062, 6554657, 96100, -2525978, 1224603, 7818451, -977642, 1921998,
+1214402, 6388764, 62814, -1706176, -3968550, 2785823, -5980205, 2175938, 12436615, 3056943,
+5855651, 579821, -8229694, 2974265, 1527398, -3248069, 3356517, -1043677, -897111, -4105452,
+1714229, 4036733, 1801739, 775242, -1876901, -4041027, 932008, -805843, -631360, 258772,
+-206695, -765578, 1299765, -1379221, -1255204, -1188632, 1829656, 731218, 1439351, -814970,
+1327145, 72478, -1313723, 1404991, 765041, -1166621, -2226941, -813896, 1827509, 111669,
+-484794, 917512, 828392, 1986422, -96637, -782221, -4876936, -8341900, 4207994, -5947993,
+-6132140, 1263794, -2972117, -19624242, 1901597, 3032247, 17962626, 5820218, 1329829, -8154533,
+7485055, 3246459, -3260954, 3926137, -682900, 6531572, -3942780, -2018635, -1329292, -1730335,
+-2708514, -1168768, 4634807, 4062502, 7014219, 2514703, 3439195, -64425, -4571993, -4932770,
+6643241, -3633006, 1472637, -591095, -4699768, 6752226, -1132261, -2913062, 1169305, 4918275,
+-3272765, 7463043, -9454297, -7807714, -9588514, 2330020, -5405217, -8191577, -1896228, 7674570,
+-3258270, 2309082, 4537633, -3288334, -4336307, 357019, 695248, 2572686, 456877, -2384244,
+-288300, 9885941, 4177393, -4020626, -12447889, -9927817, 3617973, 11758547, 9867687, -7704098,
+181462, -5025112, 2210298, 1956358, -8442832, -667867, 1651952, 986232, -2305324, 504122,
+485868, 256624, 2837900, 2614561, -1703491, -2055142, 1380295, -999654, 634045, -2940979,
+1183800, 877247, -4714801, -1058173, 984621, 710280, 361851, 919660, -315143, 339302,
+321049, 463856, -1739999, -243203, 574452, -549756, -2109903, -1045825, 251256, 320512,
+2234457, -3506304, 5814312, -9774809, -1626719, -12113418, -3509525, 1795833, 4269735, -11041824,
+-2705293, 7562901, -867583, -11052025, 5772973, -3537979, -6276021, 3462281, 5844914, 1312113,
+1260573, 1998234, 7622493, -3596498, -3102040, 1980517, -3710315, -1915019, 145492, -426812,
+296890, 6073621, 3160022, -706522, -488016, 3549254, 1532230, 4359392, -337155, 4921496,
+5251135, 2076617, -5646809, 821949, -757525, -4045859, 5514738, -3104725, 2332167, -3758633,
+-1343788, -13534516, 1275605, 10987063, 1006633, 11680164, -2120103, -2625299, -11992622, 14113263,
+6683506, 8041790, 1350230, 6591701, -42413, -51540, 5532455, -3215320, 2021856, -22549,
+-13455059, 3094524, -3133716, 3563749, -2002529, 3216394, 12546136, 3775276, 3326989, -151934,
+-7574175, 5705327, -3059627, 1144609, 2889439, 3761855, -4160750, -1105954, -1708323, -2265595,
+2467459, -1424855, -1069447, -1779727, 310848, 456877, 207232, -3501472, 1422708, 607201,
+-768262, 1010391, 505732, 881005, 746251, 1663763, 30602, 354335, -198642, -804770,
+2110977, -394600, 2968896, 459025, 1243393, -910533, 1639067, 545461, -15541339, -512712,
+11682848, -2560874, 6914361, -7457137, -5145371, -13425531, 7663833, 3978750, 8898635, 4160213,
+-4393752, 7503308, -1903744, 7179038, -4734665, -4372814, 536871, -1605244, 6210523, 1304596,
+5235565, 5864241, -3523484, -2997350, -2085207, 3862249, -806917, -2492692, 783832, -5280663,
+2715493, 1870458, -2792803, 3907883, 6849399, -2746095, -3130494, -827318, -5201206, -2517925,
+7873749, 1073742, -4903242, 9592809, -10563472, 1671816, 5631776, -2413235, -3490198, -773631,
+4486094, -8043937, 4013647, -3263102, -6929930, -5174362, -4195646, 157840, -1993939, -4397510,
+1879585, 11915313, 6549289, -1606855, -4115116, -11503533, 1195075, 6417218, -3780108, -12713640,
+314069, -1977296, 611496, 1628330, 5812165, -317291, -3000572, -1103807, -4679367, -2716567,
+-2229625, 3535295, -2917894, 3283503, -6818798, 604517, -3148211, -2040110, 4096862, -1932198,
+-1982664, -2335389, 810675, -4298189, -1767379, -957778, -204011, 969052, -3113315, 912681,
+-2477123, 1391033, 1577864, 3608310, 633508, 1332514, 1842004, 1481227, -1057636, 623307,
+188442, 2697776, 1501091, -226023, 1555852, -86436, 106300, -1043677, 130460, 55298,
+-1912334, 603980, -1330366, -947577, 102005, 1455457, -428423, 5170604, -2277407, 1315334,
+7642895, 496606, 8953933, 9706089, 21658984, 14770393, 9057549, -2302639, -11473468, -4002910,
+10510859, 4544076, -11082626, 8267812, -1934883, -5501316, -6782827, 1008780, 18724984, -12695923,
+13540421, 5281199, -2919504, 4443681, -3663070, 9686225, -3723200, 5113696, 1016834, -6731288,
+-4713727, -6558415, 248571, 5536750, -1604707, -3701188, 3568044, 454730, -1122597, -12674448,
+3831111, -7103876, -5374078, 3487514, 8346732, -6174553, -8885214, 307627, 7534983, 614180,
+-5066988, -1895691, -3017752, 3429532, 2502892, -2922188, -4789426, -7198902, 4444755, 11527692,
+7065221, 3636227, -6696391, 3462818, 7299297, -8202314, -10703595, 1865626, -8837969, -4233227,
+-17324824, 217433, -11897596, -6203544, 3198140, -1500554, -1145683, 5261335, 895501, -9711995,
+-6733972, 4371203, -1344862, 524523, -3022046, 280784, 2833605, -427886, 1877975, 1885491,
+388158, 173409, 1393717, 1626182, 1082332, 122943, 335544, -984084, 2563559, 62814,
+2359548, -426276, -1570884, 759672, 2196339, -2760053, -4049617, -2070174, -586263, -1273458,
+4604742, 1728188, -1449015, 2041720, -1166621, 302795, -3710852, -338766, 269509, -1705102,
+23699092, 530428, -9276592, 10445897, -11426224, 13224204, 1072668, -8055748, -13795435, -3344169,
+6769942, -10969883, 9735617, -1555315, 6277095, 7473243, -6415071, -2672007, -3860102, -5113696,
+-1985886, -4777614, 798327, -5839008, 6075231, 3833258, 5099737, 10337986, 5325760, -1544578,
+12336757, 6284074, 2282238, -6622303, -7215008, 3696893, -5522254, 1268089, 3901978, -8239358,
+7056095, 18787798, 1437203, 13361106, 6331319, 6462852, 9546639, 552977, 5062156, 5337571,
+-12158516, -8253317, 8397735, 558346, 7926362, 1407139, 8321499, -1346472, 2997887, 2066416,
+-17418776, -1150514, 4485020, 11656541, 2611340, 10223096, 1047972, -2413235, 3364033, 4585952,
+-9772124, -16542603, -8719320, 2273112, 4082903, 551903, 12152610, 4279398, -19016504, 4842576,
+-2747705, 100395, 5489505, -7638063, -245887, -4115653, 3518652, 4920422, 316217, 1062468,
+3578245, 144955, -13959, -1648731, -1804960, 647466, 380641, 122407, 2994666, 2158221,
+772020, 1791538, 1178969, 85362, -2889976, 2334315, 1935420, -1141388, -226560, -396748,
+173946, 1711008, 1447404, 4519916, -3753265, -1065689, 1729261, -913217, 2406256, -1867237,
+3999152, -923955, -1162326, 580357, 2312303, 1631014, -507343, -232465, -11432129, -1044214,
+-10172093, -4860293, 4369593, -5224291, 2365990, 3445638, -6068252, -15291157, 4963909, -15149423,
+-17293686, 3725347, -8462159, 7620346, 11013907, -2844342, 12839805, -3134789, 12687333, 17131014,
+112206, 967441, -17256642, -3326452, 1978369, 2922725, -1928440, -11476153, 898185, -9725417,
+1336272, -2655901, 2739652, -3763465, -6308233, 1409823, -1038308, -3579855, 4174708, 360777,
+-2541010, 12365211, 4713727, 9272834, -5781563, 1673964, -4858145, 3506841, -1003412, 4838818,
+-1531156, -3722663, -4653597, -11021960, -6373195, 17671642, 7277285, 11706470, -13489419, 2822331,
+10159208, -8606041, 184147, 6528351, -3452617, 6551436, 1047972, -11911555, -2979634, -18314814,
+-2153926, 7332583, 3917547, 12229383, 1495722, 8110509, 8799314, 2980707, -437013, 15856482,
+1454383, 375273, -2616709, -1610613, 8527658, 4890894, 8162586, -998043, -1544041, -2103460,
+5995775, 1152662, -1108638, 1544578, 4153770, -1012539, -2253247, -4726612, 289910, -3783866,
+-1527398, -3237332, 2811056, -441845, -5332739, -1079647, 544387, 329639, -126165, -2660732,
+3864397, -3093987, 1096827, 1323387, -3977140, -854162, -2605972, 472446, 3456375, -3031173,
+-2240362, -1922535, -1637993, 1750199, -11148661, -10152229, -10554345, -15652471, 10706280, 6755447,
+1047435, -10572599, 9551470, -203474, -13103408, -10914586, -3675418, -2811056, -8360154, -3452617,
+-4922570, -4373351, -3039226, -12332999, 6196027, 7024419, -552440, -1263794, -2146947, -4640176,
+-14420890, -15947750, 562641, 6733972, -4100083, -9875204, -5396627, 7282654, 5529771, 224412,
+-2973728, -4323959, -4167192, 9241159, -4703526, 6453189, -4447439, 52076, -15699179, -3579855,
+-1173063, 11759620, 3341485, -2935073, -8799314, -6314139, -12344273, 19880866, -9146133, 18872086,
+2488934, -8351564, 12613782, 12203076, 21417928, -21100100, 8732205, 3325915, 2883534, -4319127,
+-5960878, 9096741, 4850092, -1758252, -9773735, 10757819, -5684389, 11576011, 9751723, 9018358,
+-8269423, 17966386, -13343927, 7282654, 11744588, -6914898, 1511829, 153545, 10209137, -2886755,
+4563403, -5488432, 10904385, -535797, 1952063, -6426345, 5003100, -540629, 5158793, -1683627,
+6936909, 3168612, 2218888, -4275640, 1347009, -3616363, 241055, -3113315, -3870839, -1001801,
+-3414499, -2523293, -326954, -1978369, -3403225, 2138894, 2910377, 3994320, 1024350, -4175782,
+413391, -2897492, 2711735, 879931, -1896765, 280247, 1907502, 878321, -4400194, 623307,
+4496294, 1499481, -660888, 1028645, 16922172, -28350542, -30653182, -19094888, -3302830, -13282723,
+8122857, -10908143, 1043140, 5580237, -909996, 20215874, 14413910, 5230734, -5988258, -4390531,
+13995688, -2261300, 2092723, -5673115, -12660490, 132607, 5000953, 3467649, -7000260, 6189048,
+781684, -723165, 11843909, 16528108, 1089848, -10409390, -4613869, -20056960, -7900593, -5115306,
+-6141803, 1002338, 3435437, -7233799, -3022046, -10155987, 10951093, 13342316, 10951630, 12463995,
+9634149, 16282221, 1890859, 5646809, 3748970, -2850785, 6145025, 9739375, -9780714, -33382634,
+-7890929, 11206107, -17442400, 8927090, 10833518, 4038880, -5378373, 923418, -4271882, -13357885,
+-3765613, 8830453, -10858751, -9016210, 3120831, -7306276, 21679922, 22242026, -8321499, 14348949,
+3653944, -2020782, -9820443, 6897718, -13208098, -10751377, 11787538, 9067750, 6184216, -772020,
+-1272384, -15883863, -11593727, -2039036, -3754875, -2910377, -2514167, -4659503, -4037806, -4341675,
+-2333241, 632971, 3634616, 3027415, 4858682, -373125, -2509335, -2345052, -1762547, 7239704,
+6549825, 3497177, -755914, -420907, -1675037, -2658048, -4325569, -1817308, 617938, -1210644,
+2769180, -1518271, 952409, 1409823, 1089311, 2768643, -3349001, -43487, 502511, 2343442,
+-4009352, 6646999, -2901251, -1676111, 27279484, -22953378, -476205, 3941169, -22059488, -6452115,
+-9345312, 3360275, -6775848, 19145354, 2395518, -191126, 23776938, -1304060, -21210696, -16901234,
+-10453950, 8213051, -1320166, -20443508, 5155572, 5750961, 10667625, -12144020, 6084358, 10412074,
+8910983, 7293392, -2615098, 12434467, 13264470, 4570919, -29956324, 21853868, -10828149, 8450885,
+-2309082, -3045132, 5575942, -13163538, -7697119, 14076218, -6561637, -1774358, 12527883, -14131516,
+12597676, -4874251, 11682311, -15571941, 20690468, -9217000, 32097364, -4165582, 1853815, 8361765,
+-7320235, -5237713, -4108673, 2693481, -1845225, -16175921, -20600274, -5568425, 11644193, -6043019,
+-7619272, -20715164, 9366250, 2222109, -28627568, -329639, 156229, 4282083, 14387067, -9837086,
+4334159, -12658342, -11391864, -16818556, -17110612, -2901787, -10115185, 12301323, -2287070, 12018392,
+-6073084, 6888054, -1221918, -7537668, -10888816, -1124208, 990527, 5288179, -2807835, 2383170,
+758062, 4345970, -715649, -5540508, -1114544, -8433168, -696858, 1482301, 1583769, 580894,
+-3546569, -4038880, 4376572, 2273112, -1733556, 5437429, -7038915, -8840653, -498753, 8044474,
+-155156, 2404108, 2795487, 5535676, -28454, 6183143, -5310727, 2058900, 848256, 5047661,
+8003135, -5104032, 971200, -1118839, 984084, 10377178, 31868658, 15681462, -9511742, 21720724,
+7348152, -14096083, 5531918, 13991930, -2028835, -4939750, -19324132, -5408975, 12177843, 7727720,
+5880347, 3414499, -3350075, -7938710, -18226230, 9671729, -6103686, 4762045, -13953812, -7758322,
+-183610, -2287070, 18255222, 5341329, 3054796, 13739600, 6821482, -21055540, -2275259, 7558069,
+-3752191, 333397, 18045842, 5780489, 20923470, -12176769, -7438884, -3502009, -7560753, 8044474,
+-7887171, 15531139, 15738371, -6934762, -15015743, 25368224, -12916577, -5380521, -2865817, 7494718,
+4067334, -14288819, -4048007, 9002788, -6562710, 11443403, -5261335, 16250009, -8290898, 3605625,
+25170656, -584116, 17792438, 30387430, 4054449, 14882062, -7527467, -36728412, -24632712, -4836133,
+-1359357, 20749524, -468151, 6888591, 1983201, -5255966, -16764868, -37898256, 28840706, 1903744,
+1066763, 9288941, 4684199, -9296994, 21382494, 988916, 4693863, -332860, 1653562, -18723374,
+-6699075, -12366285, -7189239, -668941, -6700149, -7010997, 4569845, -1575179, -4534412, 13586055,
+-2301029, -13943611, -9679246, 3426310, 932008, -4085051, 21386790, 6323803, -6815040, -8225936,
+2454574, -1953136, -4118337, 638876, 2210835, -4807679, 5286031, -207769, 7517804, 9357660,
+2119030, -926102, -2556043, 6265821, 6394670, 5472325, -41344964, -9958419, 43298640, -16637093,
+-18471044, 38144680, -24419574, 21488258, 28833726, 11345156, 4041564, -21846888, 8454643, -38307352,
+-18767396, 8386461, 20025822, 2264522, 4712116, 14536854, 38871600, 26219164, 8319352, 1480153,
+96100, 4353486, 3348464, -14986215, 475668, 9646497, 12284143, 51773684, 29315300, 19999516,
+37515464, 15338402, -5164698, 11307575, -514859, 35871568, 13145284, -2817499, -5762236, 15060840,
+-2092186, 17285096, -53121768, 2432025, 18589692, -965831, 22459994, -8170639, 6111739, 11996381,
+-49417356, -19031000, -3642132, -15734613, -20316270, -24071682, 22957674, -14649060, 4797479, -4345970,
+23051626, -37110664, -9961103, -5049271, 12001212, 44560, -3142842, 27737436, 48275968, -3758,
+15230491, -8844948, 4347581, 33814276, -35388384, -20961052, -29563334, -37444060, -2978560, -1242319,
+-14536854, -15720654, -14799920, -14103062, -18198850, -26615376, -11402601, -17160004, -10342281, 4976794,
+23983634, 7850664, 3921305, 3850438, -2005213, 5567888, 2640331, -16502875, -14788646, -4052302,
+-20975546, -8167954, -9055402, -7017977, -8054675, 10067940, -7415798, 921271, 1793149, 4534412,
+12084427, 18238578, 136365, -4186519, 13348221, -6267968, 8631274, 3515431, 2151779, -3157875,
+2710124, 1993402, -7307887, -9766756, -10598906, -1165547, 22807886, 19432580, -18272402, -66247188,
+-11587285, 26682484, 6460168, -7683160, -4984847, 1720671, -8887898, -12417824, 14754286, 10521596,
+30190936, 10588168, 18238042, -7074348, 40101572, 6896107, 25505126, -3863323, 37011880, -14265197,
+24192478, -23638964, 434865, 2294586, 17352204, -7028177, -12541305, -31165894, 17437030, 1986959,
+3765613, -15207942, -27460410, -1973001, 3462818, -3685082, 8741332, 17571248, 2949569, 12490302,
+45825152, -19441170, 4827007, -15273977, 23795192, 20164872, -22600654, 21338472, 24907052, -17856864,
+6524056, 5557688, 17343078, 8196945, 34964792, 10697690, -12039330, 1851668, 45113800, 13984950,
+-51002736, 14908368, 9453223, -44346612, -11994770, -14348412, -30900142, 2041183, 19517942, 20890720,
+-12241731, 37736656, -9488656, -16668768, -8216273, 19870666, -74187504, -9277129, 1358283, 59880972,
+8234526, 50750408, 24738474, 35571992, -730681, 12102144, -6573985, 30127584, 30999464, 27420682,
+-6400038, -18519898, -7237557, 30114700, -3284039, -19906636, -8315594, 35716948, 5276904, -22427782,
+-7349226, 32220844, 9526774, 13355738, -156766, 12112882, -8961986, -735513, -418759, 5202816,
+-581968, 5639292, -4213363, -10570451, -12143483, -15256798, -1721745, -11147588, 275952, -2028835,
+-4048544, 10689637, -11941083, -5032091, -11836930, -4512937, -21958020, -16586090, 22749368, 398895,
+-40840308, 33114198, 71446784, 4757750, -39609800, 61536680, -13791677, -920197, 8865886, 34893388,
+-19991462, 1476395, 69994008, -34677564, 16739098, 23535884, 22692460, -31015570, -3030636, 5539971,
+-15093052, 2635499, 7387344, -12615393, 12510703, -21381958, -5957120, -8567386, -1511829, -12840342,
+-11123428, -4153234, 6841346, -23315230, -21675626, 32747516, 6058052, -20523502, -5262946, 19477140,
+47405164, -4127464, -22941030, 24669218, 36386428, -10540387, -2572686, 940598, 13253195, 98247,
+158377, 16491064, -39934604, 27484032, -22983980, 295279, -32631014, 18387292, -2434710, -48932564,
+24282672, -3492882, -18803904, 33022392, 4013647, 32652488, -27485644, -10576894, -11024107, -25546466,
+-39508332, -52441012, 44644576, 18196702, 32902134, 30215632, 18835042, 7294465, -18719614, 28611462,
+-14081050, -12040941, 38872676, 12935905, -7150047, -3474092, 11950747, -27456116, 7220377, -10850161,
+18327162, -6984154, -11588359, 17346836, 3100430, -20409684, 1802276, -9671729, -5525476, 4317516,
+-4291746, 3733400, -949725, -14703284, -7262790, 6356552, -4720169, -9274982, 9365176, 14460618,
+14386530, -11428371, -4494147, 16622597, -28021978, 8455717, 10524817, -12098923, -27838368, 14089103,
+1958505, -12658342, 8968429, -13551159, -21616570, 5718749, 19788524, -16227460, -6780680, 6904697,
+17307108, -4716411, -1907502, 931471, -11731703, 38742216, -15791521, 11476689, 8929774, -40184788,
+36098664, 12632036, -10366440, 31018790, 2551748, 2064806, 15120969, -13485124, 39537860, -31793496,
+-17067126, 14745160, 13575318, 6720550, -29616484, -18015240, -32998234, 18177912, 4304094, 16598975,
+-47782, 17826262, 7125888, 5943698, 632434, 15185931, -6956774, 8339216, -15149960, 11243151,
+-14015552, -174483, -18475876, -13113072, 658741, -16406775, 7538742, 38893612, 9190156, -29275570,
+15106474, 11645804, 20526722, 501437, 34216932, -29613800, 4367982, 13618804, -28646358, -6742562,
+57328688, 32266478, -76258752, -32412508, 40296456, -11162620, -36288180, 14119705, -3890704, -27978490,
+20229296, 34475704, -47119548, 9141838, 41442676, -28371480, -25560960, 33915748, 4333085, -28191628,
+4738960, 21981106, -24755654, -3578782, 26604102, -4128537, -12243878, -19432042, 24300388, -6693707,
+13417478, 2983392, 13624710, -9758703, 8704825, 24582246, 9471477, -18505940, 1165547, -13313862,
+-9193914, -18656802, -2018098, -5166309, -1667521, -12636331, 12279311, 10626823, -4703526, 28074590,
+-7570954, -30427158, 35878008, -4599373, -7315940, 6385543, 12280385, 1391033, -3806952, 30302068,
+16383153, -21845278, 1359357, 8370355, -16087337, -13253732, 21665426, -11776800, -42505680, 40105868,
+4654671, -41328860, -1723356, 21170430, -15918759, -34840776, 19323058, 26102126, -43011948, 5812702,
+31408022, -19193672, -3855807, 34529928, -3174518, -14786499, 7616588, 14272713, -19772418, -5788006,
+19931332, -5268851, 33157148, -72130752, -5623723, -12389370, -81151800, -13991393, -25345138, 8368207,
+13424994, 24332064, -11101954, -31029528, -12344273, -44976896, 5639829, 16714402, 8964670, 7669738,
+-36980744, 22878218, 3121368, -43457016, 31644782, -46764140, -19746112, -17252346, 12393128, 34638376,
+39209832, -2781528, -9341554, -75953272, 32403918, 77858096, 27797028, 2253784, -42926588, -61822832,
+-25999048, -4781909, 32136020, -38539816, -23717346, -39603356, -13175349, 72769632, 77541880, -13099113,
+-36334888, -30481382, -16888886, -7749195, 38865160, -18177376, 11354820, 8668855, 25726318, -6694781,
+-17989470, -45035416, -20135344, 69836704, 29317446, 46643880, -42712376, -22981296, -19984482, 47656956,
+591095, -76229760, -74381856, 41947872, 70997424, 120196272, 20579872, -101145408, 16658031, -26336740,
+34223372, 33849712, -124907312, -39190504, 23990076, 66180076, 15621333, -62846644, -14542759, -5777805,
+36518496, 32032940, 8072928, -50202264, -8281234, 11745125, 22308060, 11884711, -13574781, 2806224,
+-28432684, -2916283, -809601, 27828166, -18935438, 36907728, -23460186, 11027865, 20699594, -7972533,
+17114370, 16158204, 28114320, 2200097, -14136885, -15641197, 2236604, 2158221, 4481262, 3762928,
+-1279363, -1107565, -10631118, -10041634, -2498060, 18811420, -4959614, 1353989, -4088272, 6882685,
+1021129, 10911364, -36348308, 30974230, -32389958, -7456063, 1527398, 7938174, -5862094, 7082938,
+13024488, -21441014, -17808546, -758599, 5088463, 13176960, -14957760, 1789928, 11957726, -9413495,
+7567733, -5064840, 35979476, -876710, -5102958, 20144470, 11517492, 17859010, -8941048, 11268384,
+-3427921, -864362, 15310485, 10314901, 2778844, 4111894, 20549272, -19287624, -5435281, 1648194,
+27628988, -816044, -5884105, 25061672, -6190122, -11436961, -10730439, 20698522, -4720706, 8825084,
+5920076, 2825552, -7118909, 3403225, 8505109, 2517925, 24095840, 11428908, 7060390, -10700374,
+-1248762, 8689256, -16676284, 5728950, 6781217, 17146584, 561030, -2479807, 10251013, 1792075,
+-19397682, 21800718, 7118909, -5585068, 18773838, -12922483, -1211718, -9749576, -7830799, 17736068,
+13625247, -1671816, 6995965, -11259794, 2881386, -15037217, -1033477, -13809930, 3349001, 8210367,
+3512210, 1175747, -2532957, -2292439, 2927557, -8443369, 2703145, -3918621, 4170950, -5727339,
+-1475858, -5339718, -5834176, 2541547, -693637, -891206, -1904281, 8117488, 3718905, -11382737,
+-10979010, -8255464, 2798708, 3064459, 8712341, 4428112, -10073846, -2057826, -3532074, 9123047,
+-1991254, 9874667, 4731980, -9017821, 493384, 4095251, -4414690, 6109591, -3456375, 6971806,
+-4823249, -2212982, 2877091, -4758824, 57496192, 4593468, -21199958, -17617418, 2882460, 12959527,
+-766115, 11827803, -4487167, -3211562, -15910169, -3538516, -11134166, 17706540, -11072963, -937377,
+-6982006, -3338800, -4086662, 1912334, -11766600, 1779727, -5056787, -8337606, 2464774, -1350230,
+693100, -2275259, 4179540, 1978906, -9835475, -6359236, 20938, -6709813, -5790690, 4871567,
+-1568737, -10099616, 699006, -5623723, 4327717, -14907295, 7472170, -6488085, -11270531, 3420942,
+-5149129, -5872294, 1559610, -109522, 733903, -2488934, 2530810, -4564477, 5068599, -3135326,
+565325, 8294656, -5961952, 2779381, -1546188, -886374, 2297808, -6870337, 6279779, -7221451,
+6270653, -1511829, -265214, -4624606, 5931887, -6936372, 496606, 2446521, -9072582, 9088151,
+-5506685, 3855807, -4158602, 3684008, -3192771, -4028679, 6805913, -4242891, -785442, 6642167,
+-4237522, -63888, 606664, 1049583, -4687420, 376347, -363462, -2075543, -1267552, 1138166,
+-1423782, -2559264, -1199907, 2893734, -2575370, 2167885, -675384, -306553, -772020, -1966558,
+1928977, -1329829, -1462436, 1986422, -1995012, 1570347, 820876, -1257889, 401579, -328028,
+645319, -4016331, 3944391, -4131222, 813896, -613643, -2058900, 547608, -1085016, 2806224,
+-27634356, -44680008, 47362752, 164437648, 31579820, 49323940, -101259224, -140924864, -58798640, -73826728,
+57007100, 132004208, 75981728, 50914152, 5156645, -72858752, -64381024, -64512020, -26299696, 36478232,
+31237298, 33237678, 30000346, -1081258, -4791573, -7725573, -10326175, -15362024, -2006287, 20110648,
+-1735167, -11823508, -4540318, -17042968, -9474161, -3043521, -4154844, 32319628, 30198988, 17730162,
+19196356, 883690, -23344758, -23968064, -43723304, -29271812, 4088272, 3470871, 9012989, 25737592,
+36881420, 21985938, 18615462, -954557, -20762408, -29111826, -24955370, -21117280, 3092377, 7377680,
+13568875, 9201431, 6281390, 1228361, -7501698, 2859911, 827318, 3054796, 18387828, -1835562,
+8199093, 8196408, -13504988, -25853018, -26385594, -24012626, 6450504, 19454592, 14305462, 21297670,
+19002546, -6471979, 4860829, 11548630, -7419019, -7198365, -16355772, -21368536, -8130910, -5158256,
+-2088428, 8843875, 4320200, 4707284, 14433238, 13460964, 14211510, 7890392, 3720516, -7206955,
+-8615704, -21964462, -23791434, -17112224, -12306155, 5242545, 15757161, 19505594, 26515518, 18693308,
+12176232, 22012, -8036958, -13057774, -27117886, -29067802, -10052371, 5010080, 13991930, 10882910,
+9791989, 10893648, 8153459, -693637, -1879585, 1011465, 482110, -4954782, -4115653, -14765024,
+-9398462, -560493, 5490042, 7046431, 5912560, -2326799, -29528, 5161477, 4407174, 176094,
+3142842, 2426657, -1449015, -7011534, -5933498, -6081137, -1101659, -1687385, 172872, 1158567,
+6395207, 6658273, 6322192, 2576981, 1786706, -2451353, -1755568, -1751810, 297963, -704912,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
2178622,
-6312528, 533113, 4223564, -972273, -621697, -2283312, 4503273, 2844342, -2654827, -3499862,
-2265595, -896574, -5377836, -6229850, 1469953, 302795, -2107218, -2129767, -4195646, 2667175,
--4934381, 1252520, -492848, 1107565, 398358, 1046898, -2221572, -332323, 866510, 1406602,
--513249, 1722819, 1257352, -2197413, 1640141, -1334124, -4209605, 5954972, -1154809, 259846,
-1413044, -760209, 3281892, 4194573, -911607, 1566053, 3153043, 252866, -3366181, -2583423,
-832687, 1986959, -1028108, 1079647, 3871376, -3431679, -3089692, 3210488, 603980, -1294396,
--2091112, -106300, 726386, 2430952, -3926674, 1909113, 986769, -3072512, -3315178, 2802466,
--1808718, -4066797, -1740536, -399432, 6102612, 7040525, -619549, 1151588, -889058, 1064615,
--1174137, 1854352, 1131187, -1187022, -401043, -1259499, 594853, -1672353, 1547262, 1364726,
-307627, -1955821, 221728, -116501, 834834, -525060, 1299765, -704375, 226023, 57982,
-804770, -207769, 275415, 209380, 831613, -69256, -7766912, -3353296, -5359583, 3512747,
--2601677, -3635690, -2468533, -3260417, -652835, 1204738, 5868536, 1014686, -3142842, 4958540,
-188979, 5111011, -4916664, 7915088, 3667365, 8586176, -1546188, -2923262, -595927, -4725538,
--408022, -338229, -1717987, 1604170, 152471, -3753265, -916439, -15569, 1155346, 3723200,
-852551, -5611912, -4679367, -1774895, 3143916, 206695, 147640, -2846490, 4663798, -130460,
-334471, -2018098, 587337, -1220845, 2443300, -798864, 7779260, 61740, -1034013, 2946885,
--1975685, -3508988, -1459752, 2632815, 4690105, 774168, 2868501, 702764, 475668, -2479807,
--2426657, -3969087, -187905, -4114579, 1009317, 3338263, 3559454, 2502355, -1283658, -1828582,
-3193845, -2283849, -963146, 1993939, -1843615, -330712, -965294, 2063732, 3673808, 1893544,
-1067836, -941672, -427886, 656056, -381715, 2459943, 405338, -1214402, -728534, -562641,
--180926, 336618, 292595, 30065, -397284, 1134945, 712428, 46171, 428960, -903017,
--583042, -723165, -847719, -306553, -948114, -927176, -213675, 1161789, 5428302, 5872831,
-3100430, 9664, 4788352, -2580202, -4074313, 3976603, 4126390, 5244692, 7707856, 751619,
--4910758, 2876554, -4683662, -282931, 1567126, 1158567, 8584566, 716186, -6912213, -278099,
-1233729, 2947958, -499290, -2301029, -7610145, -1447404, 6458557, 2282775, 4247723, 5026186,
-4134980, 1204202, -719944, 4473746, -5653251, -120796, -3843459, 10366440, -559420, 340913,
-4591320, -3773666, -601832, 1664837, -578747, 6203007, -950262, 1909113, 5886790, -1095217,
-1845762, 538482, -285078, -9664, -774705, -1653562, 2544231, 3464428, -827318, 3448322,
-1239635, 6776385, 7691213, -363998, 2056216, 1317481, -3884798, 3856881, -951335, -3195456,
-1356136, 3798362, 1060320, -937914, 6815576, -927176, 1850594, 2086280, 1009317, -3420942,
--200790, -667331, 549756, -1788854, -377420, 245350, 723702, 767725, 1254131, -404801,
-613107, -1662152, -1153199, -2070174, 1603633, 565862, -313533, 672699, -290447, -1694365,
-1086627, 199716, 787053, -496606, -605054, 334471, 2026151, -2071248, 8581345, 8387535,
--3295314, -4818954, -4190814, -2895882, 2171106, -9192304, -876173, 1260573, -4374424, -8144332,
-7918309, -1718524, -1962263, 1251446, 3666292, 3229816, -4000225, -1615445, -131533, -452045,
-1933272, 2767033, -1493575, 3406446, -2522220, 5230197, -586263, 201327, -2639258, 2757906,
-1067836, -808528, -2626909, 1260573, -1469416, -2349884, -1915019, 460635, 1779190, -4964982,
-479963, -9361955, -5353677, 3360812, -1352378, 1114544, 2147484, 6158446, -1924682, -3105261,
--155693, 194884, 2653753, 2493766, -2821794, -1266479, 6868727, 263067, 1103807, 582505,
-3093987, -5670968, 258772, 2879776, 5356361, 1114544, 2341831, 8047695, -1908576, -751082,
--4283156, 63888, 1395328, 2822867, 64425, -1727114, 2529736, -203474, 4538170, 52076,
--105764, 558346, -5578089, -2901787, -3272228, 3159485, -477815, -898722, 9664, 428423,
--162135, 1666984, -461172, -926102, -1180042, -595390, -1696512, -1124208, 1372242, 98784,
--426812, -870805, 461709, 366683, 166430, -761820, 1506997, 644245, 966905, -193810,
--41876, -995896, -1067299, 761283, -488016, 1021665, 1355062, -5434208, -8507256, 3651796,
--2777770, 174483, -4379793, 3411815, -9820443, -8048232, -9261023, -3103651, -1960653, -6449967,
-3305514, 8871255, -6513855, 1384590, 10402411, -2387465, -2829847, -4765266, 852551, -9127,
-4614943, 1524713, 3320010, 2339684, -3375308, -6586869, -3134789, 3963181, -2230699, -4022237,
-1029718, 1686312, 1308891, 856309, 9059160, -4254702, 4936528, -2340220, 2483565, -2617246,
-7539278, -5587753, 3083250, -445066, -4465156, 4187593, -1651415, -1464584, 4498978, 2404645,
--377420, -1966558, 4089883, 2027761, -4190278, -5015448, 3452617, 5579700, 3140695, 142808,
--2414845, 295816, 3556770, -1517734, 4297115, -997506, -8730595, 287226, -3831111, 12451647,
-4349728, -7068980, -3982509, -1386738, -3200825, 3218541, 3115999, 2367601, -1521492, 2736968,
-2200634, 781147, -520765, -3646964, 726386, 1265405, -1042066, 849330, 1274532, -481573,
--152471, 811212, -230854, -1078574, -906238, 94489, 956167, -984084, 904628, 1072131,
--1368484, -1741072, -2202245, 77309, 1309965, -592706, 1163399, -940598, -90194, 890132,
--625992, 376883, 3262565, -7239704, -8828842, 7606924, -1585380, -7203734, 652298, -1853278,
-7438347, 3678640, -1824824, 1378685, -309775, -1096827, -1257889, 8589935, 1744831, 469762,
--5793374, -2668785, -1304060, 3018825, 3839164, 11564199, 358630, 391916, -284542, 798864,
--5010080, 242129, 2169495, -6303938, -4390531, -4078072, -448824, 8456791, -6799470, 1182727,
-3925063, 1683627, -3142842, 3528316, -8504572, 7022272, -1449552, 11811, 3874061, -4325032,
--5013301, -7866770, 1736777, -2567317, 7528541, 2603287, 249645, 1430761, 2334852, 5862631,
--2524367, -1280437, 6177237, -1248762, -3424700, -121333, 6180995, 6207302, 5716602, 3067681,
--3705483, 3637301, 5175973, -6038187, 7793755, -4723927, -4363687, 7016903, 791885, 10121627,
--75699, -5675263, 2550137, -2526515, 6754373, 3201898, 1896765, 454730, 2347200, -1180579,
-4261682, 1469953, 1721208, 1273458, 2513630, -197032, -164283, 1930588, -30065, 1417339,
--715112, 2336462, 4817880, -2780991, -1236414, 841277, 638340, 306016, 1254131, -242129,
-421444, 980863, 2379949, 169651, 4437238, 1046898, 549756, -1978369, 536334, 1453846,
--1941325, 429497, 899796, -120259, 599685, -15849503, -10442139, 2807835, 5091684, 10837276,
--6604586, 5815386, 1083406, 6124624, -312459, -2859911, -3722663, 3781182, 11228118, 947040,
--983011, -10714333, -8960376, 54761, -6585796, -3878892, 384936, 1346472, -6749541, -2025077,
-1640678, 3960497, 2118493, -4372277, -9664, 5034776, 4108673, 847182, -4136591, 760209,
--2528125, 1215476, 1420560, 2305861, -3182571, 3995930, 9786620, -1000727, -720481, 1891396,
--5442798, 2567854, 7885023, -7769059, -9146133, -4743255, 769336, -11862700, 307090, 332860,
-1668595, 108985, -159451, -5635534, -3018288, -3662533, -482647, 8060580, 11926050, 331249,
-802085, 5804649, -2415919, -1001801, 2716030, 13392782, 1713692, 4810364, 9430138, 1713692,
--6084358, 2527588, 2834679, -2824478, 2917357, 2415382, -605590, -2920578, 1397475, 850940,
--607201, -4985920, 2221572, 4564477, 1736777, 3324305, 1886564, 4013110, -841277, -1514513,
-3728569, 3067681, -923418, -210453, -1075352, 2640868, 2901787, -2320356, 2883534, 762894,
-384936, 712965, 1582159, 2137820, 312996, 1867774, -1232656, -680215, 25770, -337692,
-801548, -1249299, 225486, -376883, 586263, -1682554, 8201240, 5070746, -7483981, -372052,
-16224776, 14247480, 3077881, 8575976, 10722386, 2648921, -91805, 6959995, -3103114, 37581,
--6289980, 5154498, -371515, 218506, 2403571, 2725694, 8859444, -7457137, -6706055, 6685654,
-1436667, 3030636, -5222680, 912144, -1789391, 3418257, 107911, 4814122, 4828080, -4901095,
-4096862, 3329674, -5531918, 14292041, 2561948, 2743947, -11068668, -3618510, -839666, 9244380,
-8718247, -936840, -9494025, 6181532, -8248485, -2636573, 7326678, -270046, -5834176, 7042136,
-8980777, -2334315, 3063386, -3654480, -12460774, 10201, 8078297, -3752728, -4226785, 5214627,
--5949067, -9181029, 2319282, 6115497, 11317776, 5838471, -8386461, 3467649, -9861782, -11753715,
-10837813, 5003100, 3999688, -7329899, -7785165, -1247151, 8182450, 2642479, 11667279, 5082557,
-2983929, -12412992, 2047626, -3508452, 521302, -2951180, 2620467, 705985, 3161096, 5144834,
-2772938, 394600, 2350421, -2124935, -967441, -2164127, 17180, -2030983, -537945, 701690,
-3936875, 609885, -1578401, -767725, 1287417, 102542, -306016, -4041027, 258772, -2101850,
-792421, -2895345, -3070902, 1998234, 2489471, 3810173, -3779571, 16782584, 10765872, -7274601,
--1992865, -277025, 2934537, 2367064, -1063004, -6561100, 1586454, -4498442, 6977175, 217433,
-2685965, -2283849, -1043677, -6847789, -3650722, 14426258, 4763119, -8798777, 4157528, -8595303,
--6077379, -13444321, 5836861, 222801, 200253, 3183108, -382252, -6097780, 10125385, 5796595,
--2248952, -10215580, 10214506, -7014219, 2684892, -266288, 3336116, 2017024, 6484864, 7494718,
--1765768, 4149475, 11863773, 1522029, -3744138, -3401614, -2119566, 1843615, 7913477, -2181307,
-3206193, 622770, -7282654, 277562, -1806571, 3542811, -10945187, -184684, -18234820, -11044508,
--10182294, -2572686, -10062035, 6752763, -2528662, -8313446, -2254858, -934155, -6752226, -2924336,
--258235, 676457, -4058207, -8734353, -8768176, 471910, -1919850, 2137820, 4886599, -781147,
-2435247, 1223529, -59593, -142808, -4785131, -202937, -117575, -3825205, -334471, 3607773,
-6912213, -1197222, -3335042, 2600066, -4311611, 3633542, -3602941, -1333587, 671626, -2605972,
--3240016, -16643, -2029909, 505732, -769336, -3235184, 1575716, -126165, 4024384, 2729452,
--2872796, 2448131, -1613834, 2277943, -1328219, 1551020, 1401770, 1111323, 62277, 1628866,
--1908039, -1001801, -2118493, -4217658, 537408, 1548336, -462783, 933619, -3342022, -11431592,
--14370961, -6723235, -9565966, 24769614, -11993159, 5669357, -11326366, -3177202, 1190243, -1760400,
--16876538, -281320, -8021389, 671089, 19868518, -6287296, 8334921, 11009612, 3949223, 4518843,
-11948062, 3629247, -4656819, 3469260, 4682051, 5115306, 2136746, -2413235, 13905493, 601832,
--1122597, -2259690, 3767223, -1118302, -4846871, 4777078, -1797444, 3446175, -13479755, 631360,
--2610266, 12259447, -4817343, 4001299, 18271864, -1525250, 376347, -4394826, -7560753, -367757,
--1246077, -7664906, 9702868, -2027761, 7038378, 811212, 6646462, -3799436, -724776, 14671608,
-7141457, -11287711, -5947456, 3150896, 3505230, 1794760, 3107409, -3260417, 4127464, 5412733,
-12130061, -15538655, 930397, -6617471, 3171297, -237297, 1775432, 5783174, 8330089, -5525476,
-5883032, -3991098, -2744484, -2213519, -2086280, 4735202, -10615012, -2051384, -4903779, 6115497,
-4913443, 2128156, 2528125, -3527242, 4058207, 1889249, 2920578, -392453, 2315524, -3129958,
--1773822, -3932580, -336081, -629213, -3552475, -46708, -369904, -943282, -49392, 4210142,
-2579665, -2317135, -3799436, 1982127, 1439351, 4824859, -3723737, 290447, -1343251, 2164127,
-2461016, -2024540, -3831111, -8199630, -7264937, -7932805, 8596377, -16594143, -4827007, -10411538,
-5215701, 17124034, -9286256, 468688, 545998, -3397856, 6678138, -5559835, 2721399, -1749125,
--7005092, 15276125, 825171, -5024575, 282394, -2269890, -6710887, 5313949, -5126581, 4987531,
--9629854, -4531728, 6600291, 4776004, -16131360, -2930778, -13727252, 4088809, -2247879, -13282723,
-16231218, -4540854, -255551, -12287365, -13397077, 768799, -12072616, -1597728, -10422275, -8960912,
-10646687, 1160178, -13574781, 4466766, -12144020, 10872173, 3991635, -5279052, 475668, 3493956,
-11487964, -8846022, -12452721, 12656732, -8781598, -5042829, 6692633, 9555765, -17672716, -8722542,
-10139881, 7496329, 3968013, -928787, 1305670, -12736726, 4432406, 4247723, 7083475, -2241973,
--13420162, -9769977, 4825933, -11627013, -10125385, 4291746, -618475, 159988, 4301410, 9821516,
-68719, -411243, 9200894, 850940, -1434519, 1568200, -1192927, -1859184, 2024540, -2404108,
--1644436, -4615479, -4365835, -3150896, 865436, -2621541, 91805, 1870458, 1542430, -255014,
--2147, 2001992, -2261837, -3660923, 1156420, -119185, 3554086, -3372623, -909459, -3823595,
-4495757, 4690641, 1066763, -232465, -2838974, -1172526, -4014721, 350577, 714575, -2279554,
-765578, 928250, 8433705, -13015898, -21220896, -17139604, 7722351, -20492362, -991064, 15512885,
--1374926, 1102733, 11139535, -7407745, -6301254, 24660628, -9772124, 5759015, 9388799, -1757715,
--22368726, -1876901, 2359548, -5640903, -3100430, -5222680, 20871394, 182536, 236760, -1045825,
--15034533, 2733210, -8656507, -4369056, 936303, 2494302, 4455492, 12099460, 2692408, -3144990,
-23847806, 2488397, -5898064, -21829172, -3182571, 15973520, -3471944, -10030896, -13420699, -11844983,
--10094247, -6376416, 16963510, 6570763, 975494, 9402220, 14172318, 7877507, -3087008, -2513630,
-14649060, -2919504, -4492536, 4227859, 11202348, 1567663, -11511586, 2618320, -1161789, -17236778,
--1300301, 13663902, -6782290, -7941395, -1925756, 18379238, -14652281, -2968359, -8176007, 8377871,
-4879620, 3865471, 5887864, -2444910, -3157875, 6202470, 4975720, 3411278, -1005559, 737661,
-3915937, -10848551, -1999844, 1386201, -5601174, 113280, 5913633, -629750, 1091459, -2356327,
--674847, 3211025, 4176856, 6240051, 3520800, -1080721, 2228551, -3614752, -4573604, 1281511,
--897648, -3746822, 4136054, 2173790, 3128347, 638876, 1513976, 3191161, 1778653, -954557,
--2303176, -629750, 1301912, -16106, 1319629, 248034, 1636919, 973347, 2802466, 337692,
--2698313, 5935645, 4871567, -4604742, -1555315, -2215130, 17365090, 1741072, -15501074, -578210,
-4657355, -564251, -7062537, 6725919, -5223217, 13800804, -10613401, 9482751, 20744692, -5614059,
--5515812, -4890894, -4305705, 18510772, -13710609, -15081241, -11495480, 4198868, -5992016, -9708774,
--4454418, 6649146, -9293235, 5146445, 1232656, 7262790, 10798085, 1327145, -1364189, -2070711,
-10644540, -2739116, 3771518, -13029320, -100395, -4640176, 10380399, -13845901, 11387032, -4782983,
--7120519, 11449309, 19853486, -11149198, 5662915, -2461016, 4041564, -29782376, -23597624, -14324253,
-2083596, -9086003, 3943317, 974421, -11046656, -8736500, 980326, 23745800, 5616207, -14790257,
--22100292, -11666205, -8147016, 14555644, -10064719, -14402636, 3471944, 3170223, -13303124, -830002,
--194884, -6600828, -1491427, -340913, -527207, 6533182, 1637993, -7648800, -6765647, -3723200,
--9767293, -5323075, 1666984, 11054172, 1897302, 2086817, -3150896, -9038759, -1353989, 7440494,
--301185, -4191351, 6875706, -10306848, -5020280, 1579474, 1697049, -143345, 1209033, 757525,
--3427384, -7204271, -2535641, 5551782, -3142306, -2542084, -2822331, -6423124, -7072201, 2709051,
--2491081, -1525250, -6653978, 1701881, 4499515, 5383742, -145492, -3173444, -3666828, 3892851,
-3546569, 29823716, 19563576, -5156108, 2012729, 19283866, -7577933, 629750, 8342437, 20875688,
-12313671, -3680787, -4611721, -7269232, 1931662, -4024384, 376347, 484794, 22073448, 36377300,
--2079838, 25076704, 15924128, 3198140, 3995393, -17964774, -17710834, -2078227, 4762045, -1341104,
-4413079, -6746857, -13247290, -22508850, -1876364, -14508400, -12162274, -8158827, -12591770, -9154186,
--444529, 20770998, -609349, -15894600, -1278827, 4427038, 15525770, -4935991, -3875134, -9526774,
-7074348, -28451474, -25440702, -12350178, -12665322, -13714904, -8217883, 8956081, -11417634, -15987479,
--13321378, -23869280, 12243341, 6433324, -21082920, 10740639, 21400212, 41756208, 23139674, -363998,
-7691750, -24190866, -9805410, 12861280, 11008538, -6280316, -16247324, 2010045, 3468186, 14702210,
--1836635, -15325517, -2612414, 24141474, 15542413, 17445620, 14016626, 24349244, 23086522, 6793565,
-6311992, -5511517, -9632001, -2820183, -795106, -8406325, 20938, -9697499, -7088844, 10982768,
-4984847, -3149822, -9597104, -3806952, -1103270, -282931, -10688563, 10577431, 187905, -9114457,
-5431523, -5669894, -4601521, -1506997, 3402688, 14639933, 7282117, 17541720, 129923, -3615289,
-2072859, 6611566, 4551592, -2406256, 9382893, 319438, -2953864, 1251446, 7779260, -3932580,
--3201898, 2747169, -590558, -31003222, -2796561, 49465676, -3496640, 1637456, 12520367, -18285286,
-10293963, 35012572, 32605782, -32986960, -31322122, -199716, -33994128, -13112535, 59056, 3734474,
-12548284, 18523658, 16630650, 29001766, 6998113, 11285027, 11733314, -5166309, -1996086, 2948495,
-3941169, 8391292, -15590194, 34874596, 15145665, 16146930, -2983392, 35410396, 4495220, 21238614,
-8977019, 6461242, -8335995, -5724118, 18245558, 6716255, 8510478, -19450296, -10200547, -16294032,
--9296994, -11935714, -11274, -23503134, -25164214, -1779190, -9672266, -47854524, -35356708, -32360432,
-9167608, 34331820, 44903348, -25120726, 30962420, 47779900, 8227547, 3723737, -3050501, 32764694,
-2537252, 29603062, 12891344, 13669270, -19962472, -66432944, -52325048, -12187507, -1786706, 1024887,
-2312840, 24037322, 23067196, 19705310, -12541305, 1209033, -6565932, -34473020, 3403762, 2292976,
-17078938, 2225867, 25132002, 22320408, 5577015, 19350976, -8448738, 12952548, -11972221, -13846975,
--5027259, 4842576, 21791590, -5410048, -6272800, 2734284, -10948409, -5807333, 10954851, -3664144,
-7520488, -14319421, 18639084, 5152350, 32749, -1844689, 14281303, -4115653, 827855, 1785633,
--483721, 9236327, -7304666, -4225174, -320512, 8829916, -14291504, 1252520, 4769025, -7499013,
-792421, 1910187, 1473174, -3758633, 24251532, -5446556, -43361988, -3970161, 69448008, 12526809,
--12780749, 17726404, -5531381, 11488501, -5347771, -7655779, -22613002, -8726837, -2280628, -3964792,
--10718628, 16238198, -14595909, -16052977, -882079, 2392297, 14726906, 6376953, 4208531, 6042482,
--5704791, -20938, 21889300, -11218991, -25601764, -5320928, 2492155, -8871255, 18260590, -9578851,
--5847598, 15045270, 4502737, 11324218, -26452704, -30204358, 10231686, -5950677, -9982578, -13022341,
--15634755, -33244658, 338766, -3052648, 11300059, -21340082, -43934832, 32950990, 9367861, 30963492,
-3726958, -10189810, -9101573, 7949448, -16371342, 25647934, 5403606, 30814242, 21880710, 45824616,
--4275103, -44306884, -34053184, -19672024, 25675314, 25373056, -19136764, 20114942, 40477920, -23854248,
--3384971, 43067784, 6989523, 33042258, -4667019, -17141752, -44713832, -17660906, 5333813, 28525026,
-25286620, -14960982, 12826383, 11638288, 23991688, 8005282, -23420994, -28189480, -10799695, 19166292,
-41342280, -1229971, -3481071, 21195126, 11496554, 1752347, -3335579, -9197136, -10909217, -9165997,
-7212861, 4103841, 13218299, -5658620, -1324997, 1041530, 8061117, 9955197, -12842489, 30602,
-14906221, -1871532, -4125853, -16543140, 12030740, -225486, -6869264, -5217849, 16590385, -973347,
--10396505, -5843303, -36529772, 37874096, 51391432, 8949101, 2333241, 11412802, -7844758, 22418656,
-12541305, 23427972, -4752918, -24757802, 54984172, 306553, -20675436, 2532420, 37176164, 17012902,
-7283728, -23573464, 2545842, -12629351, -9221295, 3670050, -17539036, 1462436, 4702453, 21115132,
--30026116, -5130339, -3615289, 17826798, -6808060, -11113228, -10572062, -171262, 11358041, -23369990,
-1677722, 6114960, -47771848, 6543920, -12969727, -33693480, 22094922, -24916716, -43661028, 57560076,
--488553, 3284576, -4588636, -16077136, 34715148, -24650964, -2363306, 5114233, -15925739, -1365800,
-43873092, 22644678, -38815232, -42008000, 41295036, -19821274, 24028194, 39621072, -35710504, -61422328,
--42539504, 70717712, -4291209, -55629492, 50675244, -37131068, -70527120, -1231582, 60632052, -2753611,
--73196440, -1180579, -24715926, 527207, 89997280, -13901199, -66475356, 9475772, 35182760, 590558,
-41161892, 2239289, 678605, -13237626, 1535988, 9271224, 33190970, -7152195, -9148280, 32819456,
--4571993, 7679402, 22959284, -4159676, -33833068, 21764210, 15755014, 25520158, -8158827, -818728,
-8969502, -7634305, -24965034, -11152419, 10037339, 538482, -5070209, 32411970, -1177358, -36580236,
-8287677, 29433410, 17010218, -12904766, 1423782, -14757508, -8286603, 35733592, 29991220, -8152385,
--34840776, -11387032, 13991930, 11285027, 9206799, -6838662, -1504312, -24237038, 37248640, -7216619,
-10973641, 24420110, 16769163, 18585934, 43892956, 19528142, -11373073, 7343857, 10446434, 14806363,
--16566763, 42999600, 39825620, 5930813, 13459354, -9546102, -532039, -43249784, 19513110, -22687628,
-15011984, -1460289, -16524350, 23928336, -9910100, -17307108, 8941585, -24570972, 16006806, 1024350,
--5247377, 7193534, 9805410, 15770046, 15305116, 15375446, 44661216, -4116189, 4403415, 14605573,
-29918742, -2667712, 7569880, 441845, 23284628, 28586228, -9732933, 7136088, -1781875, -4271345,
--52151640, 4478041, 21482352, -11996917, -13158169, 11788075, -22038014, -31656594, 2327872, 18521510,
-37613712, -48637284, 18224620, -2146410, -1901060, 585726, 18632642, 41437844, 200790, -29599304,
-9410273, 33698852, -18586470, -25992606, 2019708, 14993731, -14664629, 26766774, -5669357, 20660940,
-1232656, -19856170, 24350854, 20385526, 2866354, 16161962, -9436580, 10235444, -5377836, 5592048,
-7602092, 24425480, -5645735, -28770376, -4297115, 34153044, 2069637, -3912178, 29470454, 6652368,
--682900, 7606387, 20283520, 31353262, -20419886, 8023536, 3698504, -1086090, 14673219, -4036733,
--23088134, 7806640, 20969104, -8805757, 5082020, 7719667, -7515656, 8773008, -14872398, 10624138,
-8661338, -12093554, -27531814, 11938935, 14842333, -6706592, -10367514, 14760729, -1603633, -8295730,
-23213224, -44100724, -34886944, -323733, -53669912, -18033494, -20048908, 41394896, -1491964, -14921253,
-18613314, -9409736, 10184978, 2971044, -20671678, 24616068, -55305220, -4940823, 3047279, -13476534,
-9851044, 2732673, -11025181, -1682554, 1329292, 14134737, 547608, -15854872, -53661860, -38655244,
--29939680, -14476724, 32810328, -6431177, 969589, -53178136, 3732864, -3452080, -7509214, 1957431,
--51944944, 27945742, -25352656, 13004624, -10529649, 35464620, -19473382, -33812668, -16648367, -22549,
-25275346, 46810848, 48644800, -60065116, -44897440, -30531848, 20558934, 49848464, 59755344, -10188199,
--15299747, -52538188, -19823422, 47291348, 28496572, -287763, -213138, -842350, -44847512, 30137248,
--9181566, 29099478, 69561288, -77671264, 94272384, 26979910, -51383916, 14605573, -102807560, -99976104,
-73813848, 31872416, 7108171, 22371948, -38160248, -17941690, 68790880, -2323041, 46209552, -4247186,
--37461240, -11857868, 40810780, -13320304, -1060320, 13615046, -3444564, -23565948, 13162464, -19069118,
-8829916, 26455388, -27300960, 26066694, 8518531, -3111704, 9626632, -1232656, -6219650, 4630512,
--9524090, 5199595, -19385334, 17479980, 17775796, 4010426, 536334, -5569499, 9097814, 3725884,
-3615826, 9238475, 17131550, -20895016, -7220377, -19360102, -15096273, 1969243, 768799, 17391396,
--22034256, -16466905, -21221970, -12992276, -5665062, -44542568, 36820756, -22075596, 22588306, 12036109,
-14204531, 8458938, -28632400, 31212602, -4771709, -11070815, -10366977, -12286828, 9398999, -6426882,
-13431973, 8134131, -1929514, -3204583, -23998666, 13913547, 5495411, -6068789, 5155572, 12635257,
--3741454, 7195144, -12276627, 14372571, -5494337, 1895154, 5658083, 6146098, -6537477, 22126060,
--1025960, -20678120, -1543504, 9628780, 4551055, -15803869, 7544647, 18536542, -3643743, -8911520,
--8933532, -1151588, 4916127, -2177549, 21527986, -14534706, -5757941, -5124433, -11070278, -864362,
--3494493, 8013335, 5587753, -8910983, -1516660, 8400956, -8934606, -4452808, -2779918, 13474923,
--8455180, 5812165, 8859444, -20735028, -8528731, 6717866, -21837224, 32952600, 8650064, 10525354,
-15037217, -9570798, -392990, -2791729, -15074798, 3055869, 4802847, 12065637, -2507187, -4999879,
-7202124, -7539278, -3240016, 7253663, -33823, -1719598, 5974300, 1907502, -3995930, -127775,
--4398047, 9648107, -9184788, 14615237, 550830, 3254512, -6170258, -500901, -2301029, -4511863,
--2482491, 3510062, 1673964, 4236449, -162672, -3389803, -2374043, -11241540, 11328513, -9018894,
-5098663, -2110977, 6596533, -3684545, -10583336, 743029, 5419712, -8594230, 12919262, -10251550,
-5636608, -3889093, 51510616, 6703370, -17445620, -13565654, -10151692, -998043, -1649268, 1114007,
--1395328, -2008971, -29116658, 615254, -5791227, -6744710, 3705483, -11457362, -5180268, 5282273,
--7964480, 2248416, 9048959, -12240657, 7712151, -4545149, -6471979, -1058173, -6472516, 3010235,
--6005438, -3230352, -7077569, -1406065, -88047, -186294, -4242354, -4447439, 1361505, 2302103,
--5073430, 6874632, -8465917, -772557, -3361886, -1101122, -1568200, -6756521, 9262634, 5648419,
--9233106, 11252277, -1113470, 2388002, -5057324, 10797548, -10770167, 798327, 966368, 2844879,
--1745904, -2811056, 8111583, -5364951, 1243930, 418222, -1596654, 2571612, -3463891, -495532,
-4556961, -2273648, -2007360, 5101885, -1937030, -2234994, -4689031, 2462627, 2380486, -10519986,
-12650289, -7110319, 2908230, 863825, 234076, -4076998, 1803886, 5177583, -3777961, -1949378,
-2840584, -3872987, -181462, 3171297, -1239098, 1263257, 759672, -2870112, 569620, 370978,
-2649458, -4660577, 454730, -525597, -1766305, 1948305, -2221035, 1122060, -1413044, -4076461,
-2355253, -3533684, -1960116, 1312113, -2140504, 820339, 2127620, 228707, -3010772, 3278134,
--554051, -2017024, -25169582, -40950364, 45730128, 153798480, 15653545, 35328252, -83669720, -127949760,
--32150514, -66827544, 52081312, 107227080, 56507276, 35751308, -8010114, -41578504, -40898288, -30758946,
--28565290, 10227391, 18294950, 10596221, 19691888, 2628520, 1580548, 7796977, 2236604, 8848706,
-7039989, -5222144, -19582904, -14465987, -17258790, -23287850, -12305081, 13168370, 16972100, 31524524,
-44500156, 16151225, 6449967, -14752139, -35255776, -34103116, -23822572, -16515223, 3403762, 13167296,
-18895172, 20172388, 16996796, 11483132, 1347546, -1309428, -11193222, -7715372, -4930623, -5577552,
--2168422, -6307160, -1806034, -7484518, -7322383, 2747169, -572304, 9772124, 16033113, 9547175,
-23838142, 21247740, -10186589, -20888574, -20937966, -31170726, -8763344, -7478075, -1657321, 19235548,
-17143362, -2988760, 14911590, 18602578, 6324876, 13007308, -1140314, -14951318, -10835666, -25690346,
--16171089, -6067715, -1570884, -1874753, 4672388, 12171937, 19283330, 24317568, 20585778, 6887517,
--11181947, -18344880, -17546552, -19585588, -8764955, -4963909, -1989107, 4359392, 9715216, 7704098,
-13575318, 7413114, 8934606, 8097624, 118112, -6673306, -8691403, -10926397, -10706817, -9567040,
--5032628, -5268851, 3118146, 5536213, 11178726, 16149614, 15633681, 5940477, 1159104, -8870718,
--10735271, -12714177, -12694313, -3730716, -497679, -2449742, 3126199, 9918153, 13003013, 6391448,
-1512365, -696858, 283468, -2609730, -2826625, -4890894, -2901787, -3724811, -2519535, -1631551,
-183073, 1611, 3009162, 5558225, 5997385, 2678986, 1183264, -1540820, -776852, -1169842,
-238908, -545461, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+6312528, 533113, 4223564, -972273, -621697, -2283312, 4503273, 2844342, -2654827, -3499862,
+2265595, -896574, -5377836, -6229850, 1469953, 302795, -2107218, -2129767, -4195646, 2667175,
+-4934381, 1252520, -492848, 1107565, 398358, 1046898, -2221572, -332323, 866510, 1406602,
+-513249, 1722819, 1257352, -2197413, 1640141, -1334124, -4209605, 5954972, -1154809, 259846,
+1413044, -760209, 3281892, 4194573, -911607, 1566053, 3153043, 252866, -3366181, -2583423,
+832687, 1986959, -1028108, 1079647, 3871376, -3431679, -3089692, 3210488, 603980, -1294396,
+-2091112, -106300, 726386, 2430952, -3926674, 1909113, 986769, -3072512, -3315178, 2802466,
+-1808718, -4066797, -1740536, -399432, 6102612, 7040525, -619549, 1151588, -889058, 1064615,
+-1174137, 1854352, 1131187, -1187022, -401043, -1259499, 594853, -1672353, 1547262, 1364726,
+307627, -1955821, 221728, -116501, 834834, -525060, 1299765, -704375, 226023, 57982,
+804770, -207769, 275415, 209380, 831613, -69256, -7766912, -3353296, -5359583, 3512747,
+-2601677, -3635690, -2468533, -3260417, -652835, 1204738, 5868536, 1014686, -3142842, 4958540,
+188979, 5111011, -4916664, 7915088, 3667365, 8586176, -1546188, -2923262, -595927, -4725538,
+-408022, -338229, -1717987, 1604170, 152471, -3753265, -916439, -15569, 1155346, 3723200,
+852551, -5611912, -4679367, -1774895, 3143916, 206695, 147640, -2846490, 4663798, -130460,
+334471, -2018098, 587337, -1220845, 2443300, -798864, 7779260, 61740, -1034013, 2946885,
+-1975685, -3508988, -1459752, 2632815, 4690105, 774168, 2868501, 702764, 475668, -2479807,
+-2426657, -3969087, -187905, -4114579, 1009317, 3338263, 3559454, 2502355, -1283658, -1828582,
+3193845, -2283849, -963146, 1993939, -1843615, -330712, -965294, 2063732, 3673808, 1893544,
+1067836, -941672, -427886, 656056, -381715, 2459943, 405338, -1214402, -728534, -562641,
+-180926, 336618, 292595, 30065, -397284, 1134945, 712428, 46171, 428960, -903017,
+-583042, -723165, -847719, -306553, -948114, -927176, -213675, 1161789, 5428302, 5872831,
+3100430, 9664, 4788352, -2580202, -4074313, 3976603, 4126390, 5244692, 7707856, 751619,
+-4910758, 2876554, -4683662, -282931, 1567126, 1158567, 8584566, 716186, -6912213, -278099,
+1233729, 2947958, -499290, -2301029, -7610145, -1447404, 6458557, 2282775, 4247723, 5026186,
+4134980, 1204202, -719944, 4473746, -5653251, -120796, -3843459, 10366440, -559420, 340913,
+4591320, -3773666, -601832, 1664837, -578747, 6203007, -950262, 1909113, 5886790, -1095217,
+1845762, 538482, -285078, -9664, -774705, -1653562, 2544231, 3464428, -827318, 3448322,
+1239635, 6776385, 7691213, -363998, 2056216, 1317481, -3884798, 3856881, -951335, -3195456,
+1356136, 3798362, 1060320, -937914, 6815576, -927176, 1850594, 2086280, 1009317, -3420942,
+-200790, -667331, 549756, -1788854, -377420, 245350, 723702, 767725, 1254131, -404801,
+613107, -1662152, -1153199, -2070174, 1603633, 565862, -313533, 672699, -290447, -1694365,
+1086627, 199716, 787053, -496606, -605054, 334471, 2026151, -2071248, 8581345, 8387535,
+-3295314, -4818954, -4190814, -2895882, 2171106, -9192304, -876173, 1260573, -4374424, -8144332,
+7918309, -1718524, -1962263, 1251446, 3666292, 3229816, -4000225, -1615445, -131533, -452045,
+1933272, 2767033, -1493575, 3406446, -2522220, 5230197, -586263, 201327, -2639258, 2757906,
+1067836, -808528, -2626909, 1260573, -1469416, -2349884, -1915019, 460635, 1779190, -4964982,
+479963, -9361955, -5353677, 3360812, -1352378, 1114544, 2147484, 6158446, -1924682, -3105261,
+-155693, 194884, 2653753, 2493766, -2821794, -1266479, 6868727, 263067, 1103807, 582505,
+3093987, -5670968, 258772, 2879776, 5356361, 1114544, 2341831, 8047695, -1908576, -751082,
+-4283156, 63888, 1395328, 2822867, 64425, -1727114, 2529736, -203474, 4538170, 52076,
+-105764, 558346, -5578089, -2901787, -3272228, 3159485, -477815, -898722, 9664, 428423,
+-162135, 1666984, -461172, -926102, -1180042, -595390, -1696512, -1124208, 1372242, 98784,
+-426812, -870805, 461709, 366683, 166430, -761820, 1506997, 644245, 966905, -193810,
+-41876, -995896, -1067299, 761283, -488016, 1021665, 1355062, -5434208, -8507256, 3651796,
+-2777770, 174483, -4379793, 3411815, -9820443, -8048232, -9261023, -3103651, -1960653, -6449967,
+3305514, 8871255, -6513855, 1384590, 10402411, -2387465, -2829847, -4765266, 852551, -9127,
+4614943, 1524713, 3320010, 2339684, -3375308, -6586869, -3134789, 3963181, -2230699, -4022237,
+1029718, 1686312, 1308891, 856309, 9059160, -4254702, 4936528, -2340220, 2483565, -2617246,
+7539278, -5587753, 3083250, -445066, -4465156, 4187593, -1651415, -1464584, 4498978, 2404645,
+-377420, -1966558, 4089883, 2027761, -4190278, -5015448, 3452617, 5579700, 3140695, 142808,
+-2414845, 295816, 3556770, -1517734, 4297115, -997506, -8730595, 287226, -3831111, 12451647,
+4349728, -7068980, -3982509, -1386738, -3200825, 3218541, 3115999, 2367601, -1521492, 2736968,
+2200634, 781147, -520765, -3646964, 726386, 1265405, -1042066, 849330, 1274532, -481573,
+-152471, 811212, -230854, -1078574, -906238, 94489, 956167, -984084, 904628, 1072131,
+-1368484, -1741072, -2202245, 77309, 1309965, -592706, 1163399, -940598, -90194, 890132,
+-625992, 376883, 3262565, -7239704, -8828842, 7606924, -1585380, -7203734, 652298, -1853278,
+7438347, 3678640, -1824824, 1378685, -309775, -1096827, -1257889, 8589935, 1744831, 469762,
+-5793374, -2668785, -1304060, 3018825, 3839164, 11564199, 358630, 391916, -284542, 798864,
+-5010080, 242129, 2169495, -6303938, -4390531, -4078072, -448824, 8456791, -6799470, 1182727,
+3925063, 1683627, -3142842, 3528316, -8504572, 7022272, -1449552, 11811, 3874061, -4325032,
+-5013301, -7866770, 1736777, -2567317, 7528541, 2603287, 249645, 1430761, 2334852, 5862631,
+-2524367, -1280437, 6177237, -1248762, -3424700, -121333, 6180995, 6207302, 5716602, 3067681,
+-3705483, 3637301, 5175973, -6038187, 7793755, -4723927, -4363687, 7016903, 791885, 10121627,
+-75699, -5675263, 2550137, -2526515, 6754373, 3201898, 1896765, 454730, 2347200, -1180579,
+4261682, 1469953, 1721208, 1273458, 2513630, -197032, -164283, 1930588, -30065, 1417339,
+-715112, 2336462, 4817880, -2780991, -1236414, 841277, 638340, 306016, 1254131, -242129,
+421444, 980863, 2379949, 169651, 4437238, 1046898, 549756, -1978369, 536334, 1453846,
+-1941325, 429497, 899796, -120259, 599685, -15849503, -10442139, 2807835, 5091684, 10837276,
+-6604586, 5815386, 1083406, 6124624, -312459, -2859911, -3722663, 3781182, 11228118, 947040,
+-983011, -10714333, -8960376, 54761, -6585796, -3878892, 384936, 1346472, -6749541, -2025077,
+1640678, 3960497, 2118493, -4372277, -9664, 5034776, 4108673, 847182, -4136591, 760209,
+-2528125, 1215476, 1420560, 2305861, -3182571, 3995930, 9786620, -1000727, -720481, 1891396,
+-5442798, 2567854, 7885023, -7769059, -9146133, -4743255, 769336, -11862700, 307090, 332860,
+1668595, 108985, -159451, -5635534, -3018288, -3662533, -482647, 8060580, 11926050, 331249,
+802085, 5804649, -2415919, -1001801, 2716030, 13392782, 1713692, 4810364, 9430138, 1713692,
+-6084358, 2527588, 2834679, -2824478, 2917357, 2415382, -605590, -2920578, 1397475, 850940,
+-607201, -4985920, 2221572, 4564477, 1736777, 3324305, 1886564, 4013110, -841277, -1514513,
+3728569, 3067681, -923418, -210453, -1075352, 2640868, 2901787, -2320356, 2883534, 762894,
+384936, 712965, 1582159, 2137820, 312996, 1867774, -1232656, -680215, 25770, -337692,
+801548, -1249299, 225486, -376883, 586263, -1682554, 8201240, 5070746, -7483981, -372052,
+16224776, 14247480, 3077881, 8575976, 10722386, 2648921, -91805, 6959995, -3103114, 37581,
+-6289980, 5154498, -371515, 218506, 2403571, 2725694, 8859444, -7457137, -6706055, 6685654,
+1436667, 3030636, -5222680, 912144, -1789391, 3418257, 107911, 4814122, 4828080, -4901095,
+4096862, 3329674, -5531918, 14292041, 2561948, 2743947, -11068668, -3618510, -839666, 9244380,
+8718247, -936840, -9494025, 6181532, -8248485, -2636573, 7326678, -270046, -5834176, 7042136,
+8980777, -2334315, 3063386, -3654480, -12460774, 10201, 8078297, -3752728, -4226785, 5214627,
+-5949067, -9181029, 2319282, 6115497, 11317776, 5838471, -8386461, 3467649, -9861782, -11753715,
+10837813, 5003100, 3999688, -7329899, -7785165, -1247151, 8182450, 2642479, 11667279, 5082557,
+2983929, -12412992, 2047626, -3508452, 521302, -2951180, 2620467, 705985, 3161096, 5144834,
+2772938, 394600, 2350421, -2124935, -967441, -2164127, 17180, -2030983, -537945, 701690,
+3936875, 609885, -1578401, -767725, 1287417, 102542, -306016, -4041027, 258772, -2101850,
+792421, -2895345, -3070902, 1998234, 2489471, 3810173, -3779571, 16782584, 10765872, -7274601,
+-1992865, -277025, 2934537, 2367064, -1063004, -6561100, 1586454, -4498442, 6977175, 217433,
+2685965, -2283849, -1043677, -6847789, -3650722, 14426258, 4763119, -8798777, 4157528, -8595303,
+-6077379, -13444321, 5836861, 222801, 200253, 3183108, -382252, -6097780, 10125385, 5796595,
+-2248952, -10215580, 10214506, -7014219, 2684892, -266288, 3336116, 2017024, 6484864, 7494718,
+-1765768, 4149475, 11863773, 1522029, -3744138, -3401614, -2119566, 1843615, 7913477, -2181307,
+3206193, 622770, -7282654, 277562, -1806571, 3542811, -10945187, -184684, -18234820, -11044508,
+-10182294, -2572686, -10062035, 6752763, -2528662, -8313446, -2254858, -934155, -6752226, -2924336,
+-258235, 676457, -4058207, -8734353, -8768176, 471910, -1919850, 2137820, 4886599, -781147,
+2435247, 1223529, -59593, -142808, -4785131, -202937, -117575, -3825205, -334471, 3607773,
+6912213, -1197222, -3335042, 2600066, -4311611, 3633542, -3602941, -1333587, 671626, -2605972,
+-3240016, -16643, -2029909, 505732, -769336, -3235184, 1575716, -126165, 4024384, 2729452,
+-2872796, 2448131, -1613834, 2277943, -1328219, 1551020, 1401770, 1111323, 62277, 1628866,
+-1908039, -1001801, -2118493, -4217658, 537408, 1548336, -462783, 933619, -3342022, -11431592,
+-14370961, -6723235, -9565966, 24769614, -11993159, 5669357, -11326366, -3177202, 1190243, -1760400,
+-16876538, -281320, -8021389, 671089, 19868518, -6287296, 8334921, 11009612, 3949223, 4518843,
+11948062, 3629247, -4656819, 3469260, 4682051, 5115306, 2136746, -2413235, 13905493, 601832,
+-1122597, -2259690, 3767223, -1118302, -4846871, 4777078, -1797444, 3446175, -13479755, 631360,
+-2610266, 12259447, -4817343, 4001299, 18271864, -1525250, 376347, -4394826, -7560753, -367757,
+-1246077, -7664906, 9702868, -2027761, 7038378, 811212, 6646462, -3799436, -724776, 14671608,
+7141457, -11287711, -5947456, 3150896, 3505230, 1794760, 3107409, -3260417, 4127464, 5412733,
+12130061, -15538655, 930397, -6617471, 3171297, -237297, 1775432, 5783174, 8330089, -5525476,
+5883032, -3991098, -2744484, -2213519, -2086280, 4735202, -10615012, -2051384, -4903779, 6115497,
+4913443, 2128156, 2528125, -3527242, 4058207, 1889249, 2920578, -392453, 2315524, -3129958,
+-1773822, -3932580, -336081, -629213, -3552475, -46708, -369904, -943282, -49392, 4210142,
+2579665, -2317135, -3799436, 1982127, 1439351, 4824859, -3723737, 290447, -1343251, 2164127,
+2461016, -2024540, -3831111, -8199630, -7264937, -7932805, 8596377, -16594143, -4827007, -10411538,
+5215701, 17124034, -9286256, 468688, 545998, -3397856, 6678138, -5559835, 2721399, -1749125,
+-7005092, 15276125, 825171, -5024575, 282394, -2269890, -6710887, 5313949, -5126581, 4987531,
+-9629854, -4531728, 6600291, 4776004, -16131360, -2930778, -13727252, 4088809, -2247879, -13282723,
+16231218, -4540854, -255551, -12287365, -13397077, 768799, -12072616, -1597728, -10422275, -8960912,
+10646687, 1160178, -13574781, 4466766, -12144020, 10872173, 3991635, -5279052, 475668, 3493956,
+11487964, -8846022, -12452721, 12656732, -8781598, -5042829, 6692633, 9555765, -17672716, -8722542,
+10139881, 7496329, 3968013, -928787, 1305670, -12736726, 4432406, 4247723, 7083475, -2241973,
+-13420162, -9769977, 4825933, -11627013, -10125385, 4291746, -618475, 159988, 4301410, 9821516,
+68719, -411243, 9200894, 850940, -1434519, 1568200, -1192927, -1859184, 2024540, -2404108,
+-1644436, -4615479, -4365835, -3150896, 865436, -2621541, 91805, 1870458, 1542430, -255014,
+-2147, 2001992, -2261837, -3660923, 1156420, -119185, 3554086, -3372623, -909459, -3823595,
+4495757, 4690641, 1066763, -232465, -2838974, -1172526, -4014721, 350577, 714575, -2279554,
+765578, 928250, 8433705, -13015898, -21220896, -17139604, 7722351, -20492362, -991064, 15512885,
+-1374926, 1102733, 11139535, -7407745, -6301254, 24660628, -9772124, 5759015, 9388799, -1757715,
+-22368726, -1876901, 2359548, -5640903, -3100430, -5222680, 20871394, 182536, 236760, -1045825,
+-15034533, 2733210, -8656507, -4369056, 936303, 2494302, 4455492, 12099460, 2692408, -3144990,
+23847806, 2488397, -5898064, -21829172, -3182571, 15973520, -3471944, -10030896, -13420699, -11844983,
+-10094247, -6376416, 16963510, 6570763, 975494, 9402220, 14172318, 7877507, -3087008, -2513630,
+14649060, -2919504, -4492536, 4227859, 11202348, 1567663, -11511586, 2618320, -1161789, -17236778,
+-1300301, 13663902, -6782290, -7941395, -1925756, 18379238, -14652281, -2968359, -8176007, 8377871,
+4879620, 3865471, 5887864, -2444910, -3157875, 6202470, 4975720, 3411278, -1005559, 737661,
+3915937, -10848551, -1999844, 1386201, -5601174, 113280, 5913633, -629750, 1091459, -2356327,
+-674847, 3211025, 4176856, 6240051, 3520800, -1080721, 2228551, -3614752, -4573604, 1281511,
+-897648, -3746822, 4136054, 2173790, 3128347, 638876, 1513976, 3191161, 1778653, -954557,
+-2303176, -629750, 1301912, -16106, 1319629, 248034, 1636919, 973347, 2802466, 337692,
+-2698313, 5935645, 4871567, -4604742, -1555315, -2215130, 17365090, 1741072, -15501074, -578210,
+4657355, -564251, -7062537, 6725919, -5223217, 13800804, -10613401, 9482751, 20744692, -5614059,
+-5515812, -4890894, -4305705, 18510772, -13710609, -15081241, -11495480, 4198868, -5992016, -9708774,
+-4454418, 6649146, -9293235, 5146445, 1232656, 7262790, 10798085, 1327145, -1364189, -2070711,
+10644540, -2739116, 3771518, -13029320, -100395, -4640176, 10380399, -13845901, 11387032, -4782983,
+-7120519, 11449309, 19853486, -11149198, 5662915, -2461016, 4041564, -29782376, -23597624, -14324253,
+2083596, -9086003, 3943317, 974421, -11046656, -8736500, 980326, 23745800, 5616207, -14790257,
+-22100292, -11666205, -8147016, 14555644, -10064719, -14402636, 3471944, 3170223, -13303124, -830002,
+-194884, -6600828, -1491427, -340913, -527207, 6533182, 1637993, -7648800, -6765647, -3723200,
+-9767293, -5323075, 1666984, 11054172, 1897302, 2086817, -3150896, -9038759, -1353989, 7440494,
+-301185, -4191351, 6875706, -10306848, -5020280, 1579474, 1697049, -143345, 1209033, 757525,
+-3427384, -7204271, -2535641, 5551782, -3142306, -2542084, -2822331, -6423124, -7072201, 2709051,
+-2491081, -1525250, -6653978, 1701881, 4499515, 5383742, -145492, -3173444, -3666828, 3892851,
+3546569, 29823716, 19563576, -5156108, 2012729, 19283866, -7577933, 629750, 8342437, 20875688,
+12313671, -3680787, -4611721, -7269232, 1931662, -4024384, 376347, 484794, 22073448, 36377300,
+-2079838, 25076704, 15924128, 3198140, 3995393, -17964774, -17710834, -2078227, 4762045, -1341104,
+4413079, -6746857, -13247290, -22508850, -1876364, -14508400, -12162274, -8158827, -12591770, -9154186,
+-444529, 20770998, -609349, -15894600, -1278827, 4427038, 15525770, -4935991, -3875134, -9526774,
+7074348, -28451474, -25440702, -12350178, -12665322, -13714904, -8217883, 8956081, -11417634, -15987479,
+-13321378, -23869280, 12243341, 6433324, -21082920, 10740639, 21400212, 41756208, 23139674, -363998,
+7691750, -24190866, -9805410, 12861280, 11008538, -6280316, -16247324, 2010045, 3468186, 14702210,
+-1836635, -15325517, -2612414, 24141474, 15542413, 17445620, 14016626, 24349244, 23086522, 6793565,
+6311992, -5511517, -9632001, -2820183, -795106, -8406325, 20938, -9697499, -7088844, 10982768,
+4984847, -3149822, -9597104, -3806952, -1103270, -282931, -10688563, 10577431, 187905, -9114457,
+5431523, -5669894, -4601521, -1506997, 3402688, 14639933, 7282117, 17541720, 129923, -3615289,
+2072859, 6611566, 4551592, -2406256, 9382893, 319438, -2953864, 1251446, 7779260, -3932580,
+-3201898, 2747169, -590558, -31003222, -2796561, 49465676, -3496640, 1637456, 12520367, -18285286,
+10293963, 35012572, 32605782, -32986960, -31322122, -199716, -33994128, -13112535, 59056, 3734474,
+12548284, 18523658, 16630650, 29001766, 6998113, 11285027, 11733314, -5166309, -1996086, 2948495,
+3941169, 8391292, -15590194, 34874596, 15145665, 16146930, -2983392, 35410396, 4495220, 21238614,
+8977019, 6461242, -8335995, -5724118, 18245558, 6716255, 8510478, -19450296, -10200547, -16294032,
+-9296994, -11935714, -11274, -23503134, -25164214, -1779190, -9672266, -47854524, -35356708, -32360432,
+9167608, 34331820, 44903348, -25120726, 30962420, 47779900, 8227547, 3723737, -3050501, 32764694,
+2537252, 29603062, 12891344, 13669270, -19962472, -66432944, -52325048, -12187507, -1786706, 1024887,
+2312840, 24037322, 23067196, 19705310, -12541305, 1209033, -6565932, -34473020, 3403762, 2292976,
+17078938, 2225867, 25132002, 22320408, 5577015, 19350976, -8448738, 12952548, -11972221, -13846975,
+-5027259, 4842576, 21791590, -5410048, -6272800, 2734284, -10948409, -5807333, 10954851, -3664144,
+7520488, -14319421, 18639084, 5152350, 32749, -1844689, 14281303, -4115653, 827855, 1785633,
+-483721, 9236327, -7304666, -4225174, -320512, 8829916, -14291504, 1252520, 4769025, -7499013,
+792421, 1910187, 1473174, -3758633, 24251532, -5446556, -43361988, -3970161, 69448008, 12526809,
+-12780749, 17726404, -5531381, 11488501, -5347771, -7655779, -22613002, -8726837, -2280628, -3964792,
+-10718628, 16238198, -14595909, -16052977, -882079, 2392297, 14726906, 6376953, 4208531, 6042482,
+-5704791, -20938, 21889300, -11218991, -25601764, -5320928, 2492155, -8871255, 18260590, -9578851,
+-5847598, 15045270, 4502737, 11324218, -26452704, -30204358, 10231686, -5950677, -9982578, -13022341,
+-15634755, -33244658, 338766, -3052648, 11300059, -21340082, -43934832, 32950990, 9367861, 30963492,
+3726958, -10189810, -9101573, 7949448, -16371342, 25647934, 5403606, 30814242, 21880710, 45824616,
+-4275103, -44306884, -34053184, -19672024, 25675314, 25373056, -19136764, 20114942, 40477920, -23854248,
+-3384971, 43067784, 6989523, 33042258, -4667019, -17141752, -44713832, -17660906, 5333813, 28525026,
+25286620, -14960982, 12826383, 11638288, 23991688, 8005282, -23420994, -28189480, -10799695, 19166292,
+41342280, -1229971, -3481071, 21195126, 11496554, 1752347, -3335579, -9197136, -10909217, -9165997,
+7212861, 4103841, 13218299, -5658620, -1324997, 1041530, 8061117, 9955197, -12842489, 30602,
+14906221, -1871532, -4125853, -16543140, 12030740, -225486, -6869264, -5217849, 16590385, -973347,
+-10396505, -5843303, -36529772, 37874096, 51391432, 8949101, 2333241, 11412802, -7844758, 22418656,
+12541305, 23427972, -4752918, -24757802, 54984172, 306553, -20675436, 2532420, 37176164, 17012902,
+7283728, -23573464, 2545842, -12629351, -9221295, 3670050, -17539036, 1462436, 4702453, 21115132,
+-30026116, -5130339, -3615289, 17826798, -6808060, -11113228, -10572062, -171262, 11358041, -23369990,
+1677722, 6114960, -47771848, 6543920, -12969727, -33693480, 22094922, -24916716, -43661028, 57560076,
+-488553, 3284576, -4588636, -16077136, 34715148, -24650964, -2363306, 5114233, -15925739, -1365800,
+43873092, 22644678, -38815232, -42008000, 41295036, -19821274, 24028194, 39621072, -35710504, -61422328,
+-42539504, 70717712, -4291209, -55629492, 50675244, -37131068, -70527120, -1231582, 60632052, -2753611,
+-73196440, -1180579, -24715926, 527207, 89997280, -13901199, -66475356, 9475772, 35182760, 590558,
+41161892, 2239289, 678605, -13237626, 1535988, 9271224, 33190970, -7152195, -9148280, 32819456,
+-4571993, 7679402, 22959284, -4159676, -33833068, 21764210, 15755014, 25520158, -8158827, -818728,
+8969502, -7634305, -24965034, -11152419, 10037339, 538482, -5070209, 32411970, -1177358, -36580236,
+8287677, 29433410, 17010218, -12904766, 1423782, -14757508, -8286603, 35733592, 29991220, -8152385,
+-34840776, -11387032, 13991930, 11285027, 9206799, -6838662, -1504312, -24237038, 37248640, -7216619,
+10973641, 24420110, 16769163, 18585934, 43892956, 19528142, -11373073, 7343857, 10446434, 14806363,
+-16566763, 42999600, 39825620, 5930813, 13459354, -9546102, -532039, -43249784, 19513110, -22687628,
+15011984, -1460289, -16524350, 23928336, -9910100, -17307108, 8941585, -24570972, 16006806, 1024350,
+-5247377, 7193534, 9805410, 15770046, 15305116, 15375446, 44661216, -4116189, 4403415, 14605573,
+29918742, -2667712, 7569880, 441845, 23284628, 28586228, -9732933, 7136088, -1781875, -4271345,
+-52151640, 4478041, 21482352, -11996917, -13158169, 11788075, -22038014, -31656594, 2327872, 18521510,
+37613712, -48637284, 18224620, -2146410, -1901060, 585726, 18632642, 41437844, 200790, -29599304,
+9410273, 33698852, -18586470, -25992606, 2019708, 14993731, -14664629, 26766774, -5669357, 20660940,
+1232656, -19856170, 24350854, 20385526, 2866354, 16161962, -9436580, 10235444, -5377836, 5592048,
+7602092, 24425480, -5645735, -28770376, -4297115, 34153044, 2069637, -3912178, 29470454, 6652368,
+-682900, 7606387, 20283520, 31353262, -20419886, 8023536, 3698504, -1086090, 14673219, -4036733,
+-23088134, 7806640, 20969104, -8805757, 5082020, 7719667, -7515656, 8773008, -14872398, 10624138,
+8661338, -12093554, -27531814, 11938935, 14842333, -6706592, -10367514, 14760729, -1603633, -8295730,
+23213224, -44100724, -34886944, -323733, -53669912, -18033494, -20048908, 41394896, -1491964, -14921253,
+18613314, -9409736, 10184978, 2971044, -20671678, 24616068, -55305220, -4940823, 3047279, -13476534,
+9851044, 2732673, -11025181, -1682554, 1329292, 14134737, 547608, -15854872, -53661860, -38655244,
+-29939680, -14476724, 32810328, -6431177, 969589, -53178136, 3732864, -3452080, -7509214, 1957431,
+-51944944, 27945742, -25352656, 13004624, -10529649, 35464620, -19473382, -33812668, -16648367, -22549,
+25275346, 46810848, 48644800, -60065116, -44897440, -30531848, 20558934, 49848464, 59755344, -10188199,
+-15299747, -52538188, -19823422, 47291348, 28496572, -287763, -213138, -842350, -44847512, 30137248,
+-9181566, 29099478, 69561288, -77671264, 94272384, 26979910, -51383916, 14605573, -102807560, -99976104,
+73813848, 31872416, 7108171, 22371948, -38160248, -17941690, 68790880, -2323041, 46209552, -4247186,
+-37461240, -11857868, 40810780, -13320304, -1060320, 13615046, -3444564, -23565948, 13162464, -19069118,
+8829916, 26455388, -27300960, 26066694, 8518531, -3111704, 9626632, -1232656, -6219650, 4630512,
+-9524090, 5199595, -19385334, 17479980, 17775796, 4010426, 536334, -5569499, 9097814, 3725884,
+3615826, 9238475, 17131550, -20895016, -7220377, -19360102, -15096273, 1969243, 768799, 17391396,
+-22034256, -16466905, -21221970, -12992276, -5665062, -44542568, 36820756, -22075596, 22588306, 12036109,
+14204531, 8458938, -28632400, 31212602, -4771709, -11070815, -10366977, -12286828, 9398999, -6426882,
+13431973, 8134131, -1929514, -3204583, -23998666, 13913547, 5495411, -6068789, 5155572, 12635257,
+-3741454, 7195144, -12276627, 14372571, -5494337, 1895154, 5658083, 6146098, -6537477, 22126060,
+-1025960, -20678120, -1543504, 9628780, 4551055, -15803869, 7544647, 18536542, -3643743, -8911520,
+-8933532, -1151588, 4916127, -2177549, 21527986, -14534706, -5757941, -5124433, -11070278, -864362,
+-3494493, 8013335, 5587753, -8910983, -1516660, 8400956, -8934606, -4452808, -2779918, 13474923,
+-8455180, 5812165, 8859444, -20735028, -8528731, 6717866, -21837224, 32952600, 8650064, 10525354,
+15037217, -9570798, -392990, -2791729, -15074798, 3055869, 4802847, 12065637, -2507187, -4999879,
+7202124, -7539278, -3240016, 7253663, -33823, -1719598, 5974300, 1907502, -3995930, -127775,
+-4398047, 9648107, -9184788, 14615237, 550830, 3254512, -6170258, -500901, -2301029, -4511863,
+-2482491, 3510062, 1673964, 4236449, -162672, -3389803, -2374043, -11241540, 11328513, -9018894,
+5098663, -2110977, 6596533, -3684545, -10583336, 743029, 5419712, -8594230, 12919262, -10251550,
+5636608, -3889093, 51510616, 6703370, -17445620, -13565654, -10151692, -998043, -1649268, 1114007,
+-1395328, -2008971, -29116658, 615254, -5791227, -6744710, 3705483, -11457362, -5180268, 5282273,
+-7964480, 2248416, 9048959, -12240657, 7712151, -4545149, -6471979, -1058173, -6472516, 3010235,
+-6005438, -3230352, -7077569, -1406065, -88047, -186294, -4242354, -4447439, 1361505, 2302103,
+-5073430, 6874632, -8465917, -772557, -3361886, -1101122, -1568200, -6756521, 9262634, 5648419,
+-9233106, 11252277, -1113470, 2388002, -5057324, 10797548, -10770167, 798327, 966368, 2844879,
+-1745904, -2811056, 8111583, -5364951, 1243930, 418222, -1596654, 2571612, -3463891, -495532,
+4556961, -2273648, -2007360, 5101885, -1937030, -2234994, -4689031, 2462627, 2380486, -10519986,
+12650289, -7110319, 2908230, 863825, 234076, -4076998, 1803886, 5177583, -3777961, -1949378,
+2840584, -3872987, -181462, 3171297, -1239098, 1263257, 759672, -2870112, 569620, 370978,
+2649458, -4660577, 454730, -525597, -1766305, 1948305, -2221035, 1122060, -1413044, -4076461,
+2355253, -3533684, -1960116, 1312113, -2140504, 820339, 2127620, 228707, -3010772, 3278134,
+-554051, -2017024, -25169582, -40950364, 45730128, 153798480, 15653545, 35328252, -83669720, -127949760,
+-32150514, -66827544, 52081312, 107227080, 56507276, 35751308, -8010114, -41578504, -40898288, -30758946,
+-28565290, 10227391, 18294950, 10596221, 19691888, 2628520, 1580548, 7796977, 2236604, 8848706,
+7039989, -5222144, -19582904, -14465987, -17258790, -23287850, -12305081, 13168370, 16972100, 31524524,
+44500156, 16151225, 6449967, -14752139, -35255776, -34103116, -23822572, -16515223, 3403762, 13167296,
+18895172, 20172388, 16996796, 11483132, 1347546, -1309428, -11193222, -7715372, -4930623, -5577552,
+-2168422, -6307160, -1806034, -7484518, -7322383, 2747169, -572304, 9772124, 16033113, 9547175,
+23838142, 21247740, -10186589, -20888574, -20937966, -31170726, -8763344, -7478075, -1657321, 19235548,
+17143362, -2988760, 14911590, 18602578, 6324876, 13007308, -1140314, -14951318, -10835666, -25690346,
+-16171089, -6067715, -1570884, -1874753, 4672388, 12171937, 19283330, 24317568, 20585778, 6887517,
+-11181947, -18344880, -17546552, -19585588, -8764955, -4963909, -1989107, 4359392, 9715216, 7704098,
+13575318, 7413114, 8934606, 8097624, 118112, -6673306, -8691403, -10926397, -10706817, -9567040,
+-5032628, -5268851, 3118146, 5536213, 11178726, 16149614, 15633681, 5940477, 1159104, -8870718,
+-10735271, -12714177, -12694313, -3730716, -497679, -2449742, 3126199, 9918153, 13003013, 6391448,
+1512365, -696858, 283468, -2609730, -2826625, -4890894, -2901787, -3724811, -2519535, -1631551,
+183073, 1611, 3009162, 5558225, 5997385, 2678986, 1183264, -1540820, -776852, -1169842,
+238908, -545461, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
3988414,
-6492380, 1704565, 5732708, 98784, -5909875, -4076461, -4303557, -669478, -2954401, 6932077,
--5181341, -1316944, -2350958, -828392, -4154844, 3998615, -2448668, -1918777, 3365644, 5577552,
-6313602, 973884, -448287, 1314260, 338229, 892816, -2851322, -3071975, 1507534, -2784750,
--2786897, -3737695, -3927748, 1202054, -2599529, 3482682, -4335770, -587337, 1920924, 1825361,
-1612223, -6729140, -1202591, -3730716, -643171, -1563368, -4099546, -79994, 4909685, 1496796,
-2389076, 2260227, 2658585, 343061, 3333432, 2097555, 3719442, -2093797, 2486249, -1212255,
-1720671, 203474, -3415036, 4013647, 4540854, -2420214, -3029563, 1345399, 4174708, 1001801,
-1123671, -1385664, -261993, 2266669, 1423245, 373125, -812286, 285078, 1918777, 2330020,
--268435, -3613141, -2204392, -1211718, -1529545, 849330, -333397, -321586, 1734093, -1260573,
--411780, 537, 316217, -852014, -233539, 135828, -1359894, -150324, 1699733, -242129,
-905701, -1213328, 718870, 366683, -69793, -795106, -10142565, -2664490, -4575214, 3356517,
--9508521, 2083059, -4191888, -2215130, 1347009, 186831, 1061394, 1419487, 1069984, 4123706,
--1836635, 428960, -419296, -5023501, 3698504, 6179921, -5034776, -4726612, 3586835, 919660,
-4428648, 1401233, 5950141, -830002, 2003065, -3155190, -963146, 6066105, 481573, -3963181,
--4888210, -5280126, 220117, 4366908, 2215130, -32212, 4969814, 3961034, 152471, -4070019,
-6356552, 1620276, 4901632, 4983236, -876173, 3173981, 3751117, -458488, 2215130, 2570538,
--2477123, 507880, -770410, 2442763, -5591511, -3580392, 1801202, -3461744, -1336809, 4789426,
--1942399, 2630668, -1125818, -7523709, 1266479, -38118, 3950833, -6196564, -3333432, 2798708,
-706522, -597000, 1596654, -2921652, 847182, 743566, -894964, -1842004, 2532420, 2302103,
-1592359, 288300, -954557, 611496, -707059, -1116155, 833761, 716186, -1511292, 1089311,
--845035, -642635, 1359894, -978179, -2011118, -30602, -750009, -246424, -952946, -1047435,
-420907, -78383, 612570, -5369, 601295, -1482301, 430570, -431644, 6379100, 6734509,
-2962991, 4981089, 3890167, 6744710, 7687455, -2860448, -825707, 2587181, -7681012, -258235,
--2532957, -1466731, 3515968, -4472672, -523986, 5681705, 1049583, 3641596, -1802813, -1318555,
--1915019, -7224135, -1184337, 489626, 3819300, -1163399, 6572911, 2588792, -1136556, 2626373,
-1361505, 3376381, -2443837, -512175, 7675107, -1029182, 7250979, 3401614, -3183645, 759136,
-6385006, 3322694, -4214437, 5819144, -1599339, 390842, 300648, -1178969, 1115081, 643171,
--5266704, 3354906, 2452426, -458488, 188442, -1179505, -4758287, 0, 2670396, -550293,
--563714, -3208341, -6995965, -2410014, 2600066, 5862631, -8920110, -4762582, 1664300, -3900367,
-2281702, -189515, -44023, -5376226, -4075387, -2394981, -3488050, -1730872, 194884, 591632,
--1252520, 2010045, 1606855, 317291, 1480690, -1644973, -606664, 26307, -2405719, -540629,
-235686, -3064996, 1277216, 719944, -586800, 71404, 634045, 1446867, 162672, 187368,
-23085, -1504312, -190589, -470836, 1085553, 731755, 1486059, -1079111, 9400073, 10040560,
--2024540, -4172561, -4608500, 9628780, -8355322, 253940, -1381906, -3858491, -5297842, 1902671,
--1471563, -7159174, -8764955, 359167, -678605, -4540854, 1633161, 2451353, -3235184, -4816269,
--4539781, 6414534, -6913287, -804770, -8075076, 122407, 4467303, 1556926, 750009, -4489852,
--4363687, 3983045, -3069828, -4589173, 557272, -1651415, 2810519, 86436, 1126892, -4575214,
--1717450, -1269163, 4407174, 3061238, 3060701, -9087614, 1429150, 2571612, 2069637, 2600603,
--2612414, -1630477, 315143, 1879048, 3595961, -594316, 2372433, -2607582, 7030325, -12740484,
-4477504, 395674, -6804839, -260382, 7503308, -2241436, -3531537, -6816113, -2318746, 564788,
--1910187, 24159, 3073586, 3952981, 3269007, -938450, -547608, -3996467, -827318, -1000191,
--2033667, 588947, -828929, -767189, 1633161, -2006287, -946503, 1997160, -985158, 1300301,
--303332, -781147, -710817, -512712, -2951716, -1813013, 1282048, 1476932, -1401770, -1102196,
--954020, 1115618, -697395, -393526, -1159104, 785979, 804770, -1351304, 551903, -168041,
--1256815, -271657, -711891, 836982, -417686, 1232119, 1705639, -4459787, -14147085, 2587718,
--6456410, 1421097, 1170379, -810138, 10019622, 562641, -6430640, 8577587, 4116726, 2949569,
--1302449, 1782411, -2624225, 6724845, -1130650, 770410, 10105521, 9884330, 4211753, 4529043,
-4335233, 4922033, 3265786, -9759776, -3067681, -133681, -2586107, -8308078, -935229, -1969779,
--2216203, -4464082, -107374, -1311576, 7126962, -2296734, 12512313, -78920, 1033477, -2326799,
--1838783, 90194, -385473, -1009854, -2217277, -1476395, -6168647, 1487132, 979789, -742493,
--3202972, 4279398, 3149285, 3707094, -1333051, -2702608, 44560, 3227131, 3480534, -2837900,
--8053064, -4113505, 837519, 6673843, -954557, 5452461, -4374424, -6327561, 4681515, -2225867,
--5213017, 2990908, 3110093, -5829881, -4626754, -6414534, -2158221, -2225330, 3636764, -2024003,
-1082869, -436476, 2412161, 1487669, 1319092, -1235340, -719944, -3356517, -1709397, -919660,
--78920, 1443646, -323196, 67646, 2725157, 1044751, -176631, -9127, 1735167, -1207423,
-438624, 472446, -981400, 1029718, -876173, 662499, 506806, 743566, -548682, -2115272,
-1962800, -3532611, 5196374, -6154152, -6729677, 3238942, -1927904, -563178, -3533148, -2019708,
-3450469, 4904316, 2556579, -1102733, 751082, -552440, -1117765, -4620848, 1576790, -12507482,
--3628711, -3958886, 3476239, 4341138, 375273, 2175938, -7794829, 2173254, 1220845, 2164127,
--7024956, 13342853, -581431, 2514703, 1764695, -6244346, 1012002, -8971650, 5810554, -1877975,
--7525857, 1566589, 598611, -3740917, 432718, 869731, 5983427, 10772852, 4667019, -2127620,
-3497177, 4450660, -9962177, -3626563, -4552129, 2821794, 2307471, -1617055, 1604170, 3519726,
-2237678, 4520990, 8391829, 236760, -3092913, -817654, -335544, 6614787, -4706748, 66035,
-3053722, 8905615, 52613, -5858336, -5736466, -471373, -7050189, -922344, 2695629, 10896332,
-9366787, -1052804, -4949950, 4037269, 311385, 1202591, 1025423, -342524, 1382980, -348966,
--1361505, 1213865, 1569811, -1506460, 2194192, 2051384, 1981054, -545998, -1596654, 1285269,
-1763084, -267362, 526134, -1340567, 217970, -281320, 2555506, 941135, 1595580, 1236951,
-398895, 830002, -11274, 1003412, 2284923, 479963, 938450, 1631014, 2222109, -1065689,
--558346, 530428, 660888, 1673427, 2609730, -13028783, -3544422, -4843113, 5573794, 159988,
--2673617, -16741783, -2201708, -2273648, 6928319, 16506633, -4760971, 11076184, 1915555, -9822590,
--9991168, 1698123, 2543695, -5726265, 6269042, -4534412, 5052492, -6263673, 3015604, 2108292,
--5914170, -5018133, -3797288, 1928440, 6476274, -8477192, 316754, -8911520, -493384, -3412352,
-2165737, 6441914, 682900, -2839510, -2478733, 6976101, -19864, 10653130, 3284576, -4065724,
--3876745, -3130494, 1531693, 6672232, -137439, 11083163, -19796042, -14634027, -11813308, -2767570,
--10075993, 620086, -3792456, 3550864, 8992051, 1581085, 3722126, 5732708, 9518184, 4860829,
-1457068, -6598144, -16386911, -17302812, 9268539, 593779, 11765526, -8413841, -6032282, 5122822,
--12129525, 208306, -4332549, -489626, -7822746, 276489, 2610266, 7036230, 1277753, 1112933,
--2255395, 2517388, -516470, 812823, 1974074, 3170760, 4120484, -1146756, -1730335, 2972117,
-1519345, -1169842, -2172717, 430034, -362388, -288837, -920197, 439160, 31675, -1203665,
--401043, 1207960, 2228551, 1765232, 1531156, 777389, -5024038, -2786360, -1921461, -1806034,
-2699387, -437550, -832150, 5369, 769873, 181999, 7848516, 3428995, -6251862, -170725,
-14944876, 12669617, -1170916, -10951093, -18478024, -2108292, -6486475, 6609955, -5537287, -5450851,
--20925080, -8978629, -18742164, 6917582, -612570, -4567161, 4995047, -656056, 115427, 1358283,
--6014565, 532039, -6908992, -1226750, 4201552, 3125663, -7046968, 2541547, 7199439, 11715597,
--1768990, -1636919, -3892851, 668404, 6086506, 8637179, -1234266, 1279363, -1855963, -1492501,
-10293426, 7490423, 308701, 7726110, 2244121, -9458592, 1794760, -947040, 12251931, 4791573,
-1551557, 5915244, 7953206, 2194192, -6978785, -11961484, -2752537, 2505040, 6431714, 3287798,
-411780, 2516314, 9506373, 2101313, 3099893, 4383551, 2566780, -6092948, -6886443, -5984500,
--6802155, -6228240, 10568304, 1497870, 8164733, -7156490, -6313065, -1206349, 6826314, -4254165,
-3642669, 2096481, 1098438, -3611531, -2289218, -3336116, -2278480, -3803731, 1531693, 1241782,
--1031329, 2517925, -1641751, 1191853, -656056, 285615, 1155883, -3365644, -2086817, -3377455,
--2182917, -4116726, -1175747, -3411815, -1628330, -1973538, -2594697, -160524, 3002719, 987306,
-1258425, -1062468, -281320, -364535, -702764, 2341294, -1093069, 26212186, 5743982, -8078297,
-4683662, -4700305, -15537044, -3135326, -15240691, -8339753, 7893613, 10533944, 4070019, 2194728,
-897648, 1982664, 9982041, -7036230, 14120242, -9069360, -9274445, 11325292, 5015985, -18104360,
-7965554, 4721780, 5779416, 12070469, 5927055, 9007620, -588411, 4937065, -2828773, 7715909,
-2016487, 1747515, 5095979, -10120017, -5516349, -3011846, 6586869, 2991445, 2378338, 5361730,
-1544578, 1998234, -9233643, 244276, 10050223, -1643899, 1266479, 1425929, 1326608, 12150999,
-4655745, 16293495, 3761855, -2127083, 15372225, -13016435, -1670205, -1909113, -5217312, -1023276,
-3262565, 15380278, 1511292, -3037616, -5850283, 3332895, -6153078, -2461553, -3938485, -8122320,
--1275605, 2427194, 13060996, -876710, -12495670, -3271155, -7474854, -3572876, 9142912, 7534983,
-8570070, -6555194, 1472637, -7314866, -1068373, -2335925, -4468914, -2320356, -6153615, -3403225,
--1093069, -2435247, -8096550, -3002719, -2266669, -1433445, -1769527, -2635499, 445603, -1144609,
--6347962, -95563, -3009162, -1618666, -448824, 161598, 1229971, 27917, 2985539, 3073049,
-591095, 747861, -1963337, -1564442, -378494, -1937030, 3062312, 2004139, 2884071, 2875481,
-1239635, 3932580, 2553358, 1176821, 1828046, -248571, -1392643, 2864206, 3848828, -9395778,
--14583025, -5211943, -14358613, 10322954, -12256763, -8952859, -7234336, 6539625, 16345572, -16584479,
--5939403, -18695456, 5328444, 2654827, 1719061, -5342403, 1423782, 21133386, -11076184, -1813013,
-7948374, 5495948, 4138738, 7460895, 4902169, -6898255, -11764452, -2150168, -6534256, -8809515,
--10865194, 213675, -2566780, 2705830, 13897977, 8865886, -7870528, -4189741, -918049, -4003983,
-3370476, 26549340, -9041443, 18532248, 5749351, 3148211, -1255741, -2957622, 3083787, -10114111,
-4815195, 14433238, 564251, 2338610, 11474542, 7515119, 4412542, -9673340, 8078297, -5752572,
--8699456, -23373748, -7414188, 15250355, -8695161, 3981972, -16524350, 11831561, -6249715, -6454799,
-10257456, -16390669, -12190728, 18650896, -13309030, -12453795, 7425999, -8531416, 1692217, 67646,
-5289789, -13438416, 4203163, 390842, 13405130, -9965935, 3304441, -1382980, -7634305, 10000294,
-1989644, -8256538, -6041409, -5677410, 851477, 14496, -4199941, 147103, 5176510, -400506,
-3663070, 4179540, 3269544, -7432978, 4132832, 3837553, 5978058, -118112, 427349, -5397700,
--2183454, -2640868, -2828773, 1286343, -637803, 3505767, -4949950, -3085397, 1853815, -4749697,
--4037269, 1730335, -10584947, -7891466, -1073742, 12032351, -5703180, 21150566, 19701014, 3858491,
-6306086, -11460583, 1410897, -9285719, 14783277, -2986076, 4347581, -7093139, -4585415, 2487323,
-1979443, -6817187, 11318313, -3242164, 2382633, 4191888, -7452842, 2771328, -9505299, -1611,
-5359583, 6412923, 117038, 8490077, 10736881, -856309, -20221242, -3448859, -6015639, 14391899,
--12239046, -15204721, -10855530, -7290707, 2050847, -8644159, -6796786, -4381941, -1298154, 2595771,
--29641180, 18615462, 14501957, 21230560, -6832756, 3351685, 14206141, -13712220, -12707734, 2430952,
-9255118, 6053757, -1676648, 2800856, -7547332, -8982924, -11445551, -3420405, 39268884, 3080565,
--21886616, -3987877, -12029667, 7415798, 5798206, -13611825, 2812667, -4245039, 1030255, -6770479,
-8329552, 8480413, -1369558, -4460324, -5254893, -17241610, 5070746, 2653216, -785442, 6964290,
--3515968, 1015223, 2648921, -8248485, 3015067, 4734128, 11126113, 5842766, 597537, -9790378,
--34897, 8676371, 409633, -142808, 6484864, -9127, 2141578, 6347962, 5394479, -1161789,
-2900177, 5340255, 4966056, -2592550, 2105071, 6434398, 7976828, 5807333, -304943, -4435091,
--1100049, 537, 4939213, -206695, -1591822, 143345, 1720671, -3383897, 1728188, 2939368,
--3244848, 1798518, -5686537, -11259794, -21733072, 1755568, -18155900, 8551280, 2927557, -14614163,
-8242579, 9483288, 13219909, 3823058, 5224291, -15167140, -310311, -3025268, 14119168, 6571837,
-616328, 13206488, 14709189, -1773822, -7057168, 1680406, 18139794, -11819213, -9372156, 9350144,
-5097053, -12023224, -2682744, -11125576, 20745228, -17720498, 4901095, 11036992, -6703907, 10143639,
-3630858, -5069135, -5412196, -5455682, -8485245, 11613055, 15625628, 3116536, -12050068, 1236414,
--13306882, -5068062, 8588324, -1655173, -6639483, -4855998, 2159832, -17663590, 471910, -1868311,
--10242423, 13763223, -13642964, -935766, -3205119, -10062035, 10558103, -863288, 6069326, -5128728,
--1139777, -625455, -6528887, 4931696, -6025839, -1122060, -5936719, 15915538, 6743636, -18949932,
--4268124, -31210454, 17885318, -73551, -14181982, 12584254, 1234803, 1846836, 4480188, 204011,
-7091528, 8813810, 1853278, -2310156, 4721780, 9480067, -5577015, -3365107, 3702799, 1358283,
-2184528, 2782065, 4658966, 6457484, -4387846, 3365644, 1881196, -5126044, -4848481, 4099010,
-686658, -537408, -3593814, -3112778, -5760625, 5526549, 5531918, 958315, -3911105, -11769821,
-71941, 1058710, 3649649, -7559680, 647466, 5975374, -3461207, 6914361, 2936684, -456877,
-1729261, 3760781, 137976, 1367410, 1891396, 4622459, 19021336, 716723, -14482630, -6225555,
-8553964, 13855028, 14849313, 533650, -3494493, 20877836, 9081171, 23204634, 2818572, 1967632,
--11189464, -4602058, -6641093, 6190122, 3344169, 12549894, -14399952, 971736, -8579197, 7697655,
--12486007, 4735202, 13787382, -2080912, -440771, -7218230, 1931662, -7265474, -24820616, 3401077,
--3839701, 1719061, -11104638, -2440615, 9651328, 18714784, -1973001, -6805913, 10865730, 5115306,
-2626373, 12880070, 4458713, -6889665, -3318936, 8312373, -1173063, 7586523, -9090298, -8088497,
-2779918, -7601555, -14565308, -6731288, -16585016, -3707094, 5565741, -13023415, -1883343, -14956687,
--6550362, -114890, 5870684, -17822504, 7785702, 1315871, -10605885, 13269838, -4737349, 3510599,
-23527294, 26637388, 1709934, 9364639, 19481972, 23296440, 23125178, -2283849, -15418396, -23638964,
--8591545, -15673409, 14799384, -3190087, -6978785, 3784403, -379568, 1612223, -276489, -7008313,
-7522099, 2120640, 2825015, 542240, 10170483, -5690832, -99321, -3125663, 7061463, -6548215,
--2773475, -697932, 10049687, -2619393, 6078990, 8274255, -7577396, -1629940, -3187940, -8603893,
--3451006, -1974611, 3741990, 294205, 11780022, 3187403, 7985955, -756451, -7530689, 2114735,
-234613, 31835908, 36827196, 1775432, 11893301, 11099806, -1406602, -26541288, -559956, -1209033,
--9872519, 7294465, 7040525, -14515379, 7963943, 9909026, 1797444, -3973382, 5599027, -3817152,
-18817326, -3355980, -8617852, -26844, 4370666, -1907502, -1110249, -482647, -29667486, 8454106,
--560493, -20723218, -8417599, 3415573, -1821066, -14166950, 4984310, -16693464, -1385127, 1486059,
--26452704, -4892505, 11509439, -8666170, 1348083, 16618302, 10379325, 12681428, 4099546, -7354595,
--12298102, 12621835, -6475737, 7013145, -11679090, -6289443, 8575976, 14194867, 2210298, 17030620,
--11392401, 14717242, -12452721, -15259482, -10695542, 14669461, 15602006, -14433774, 7521562, -39634496,
--3492882, 11489574, 3790846, -6323266, -15627775, 7129646, -22135724, 3469797, -11353209, 10432476,
--17064978, -11087458, 17361868, 270046, 8792335, 1841467, 7682623, -3994857, 3253438, -2069101,
--12745852, -2447058, -5869610, 3894462, -4013110, 2175401, 657667, 2029372, 1182190, -2951180,
--3765613, 432718, -8002598, 2797098, 2471754, 4571456, -5066451, 4539781, 4490389, 2742874,
-3888019, 2630668, -5444408, 484258, 2897492, -4253628, 7671886, -785979, -2729452, -4396973,
-139586, 560493, 3751654, -2838437, 3570729, -2745558, 8074002, 3358128, -6456410, -1838246,
--1460289, -3241090, -2604361, -28981902, 2132988, 35885524, -24260660, -2269890, -2106682, 1917166,
--9600863, 4592394, -15306190, -15658914, -5173825, -4269735, 3784403, -3932043, 8159901, -11735998,
-383863, 23087596, -18918794, -16681653, -4053912, 20204600, 2815351, -25275346, 10757819, -9372156,
--10824391, 2523830, 34748432, -19543174, -10910828, 24753508, 18315888, 1604707, -10244034, 689879,
--3817152, -7847442, 7067906, 6473590, -4226248, -20040318, 25672630, 12074764, 4846871, -27285390,
--4194036, 8490613, 9430138, -3384971, 14338748, -2306934, 4866198, -6248641, -16457241, 10724533,
--11747272, 7047505, 3635153, -14399415, 27199492, 4195110, 19583978, 19659676, 3491809, -29554744,
--5684926, 288300, -11753178, -5947993, 1108638, -936303, 12831752, 24142548, -6982543, -2355253,
--10657424, -4752382, 10023380, -6764037, 5823439, 17950816, -15693810, 17842368, -3507378, 5365488,
--6784975, -3634079, -5695664, 774705, 3330210, 3940096, -2985002, 99858, 4071629, 2321430,
-9430674, 4427038, -4759361, 405874, 860604, 8603893, -4766340, 2504503, 3974992, 1342714,
--335007, 304943, -11218991, 5514738, -4129074, 5399311, 7040525, 946503, -1136556, 3581466,
--367220, 2741800, 933082, -1167694, -4142496, -4214437, 8367133, 1431298, -1955821, 2349347,
--5204964, -979253, 8530879, 11190537, 1545115, -10300405, -51554640, 3386582, -13435195, 1777580,
-25844966, 2466385, -4955856, 4704600, 1023813, -17515414, -18874770, -17029546, -16316581, 21271362,
--4229469, 25389162, 2286533, -23987392, -809601, 2645163, 20584168, 4045859, -3285650, -4085588,
-5906117, -12917114, -4911832, 22726282, -4596152, -29515016, -22505092, 13471165, -2891050, -6135361,
-6824703, -2118493, -15163919, 4584341, 8973797, 20463372, -4079682, -16988206, 277562, -21425982,
-8289824, 24255290, -3835943, -29769492, 9419937, -340913, 1723893, 7175817, -9327058, 18321794,
-1425929, -12359842, 9663676, -6691559, -4084514, 26181046, -13357885, -4502200, -4348655, 16496433,
-6682969, -28956132, 14746770, -23333484, -5513128, -12588012, 3065533, -7675644, -7020124, -2405719,
-13356275, -4318053, -8138963, 15744813, -9119826, 16163573, -26844, -8528194, -5077725, 4028679,
-4507568, 3212099, -9651328, -3202435, 2448668, -530965, -6291054, 156229, 6056978, 9240085,
-3908420, 4763119, 818728, 9086540, -5066988, 2966749, 7237557, -2699924, 968515, 2950106,
--1723893, 1459752, 2910377, -8853001, 7575786, 3232500, -8866960, -7290707, 591632, -10475425,
-988916, -7706245, 10108742, -18097918, 34897, -3788698, 1985886, -4667019, 5738613, -2962991,
-2713883, 2098629, -25188372, 5157182, 41580116, 27087822, 12387223, -20632486, 15458124, 19551228,
-28922846, 13972602, 3415573, 1029182, 18118856, 31284004, -7062537, -3808562, 17712446, -35019016,
-12742631, 31251256, -6481643, -10817949, 8108899, 24267638, 19538344, -13056701, -22383222, -1307281,
-11257109, -3782793, 2711198, 372052, 26249766, -14976551, 16816408, 25409564, -10163503, -3053722,
-17927730, -2667175, 62862216, -26339424, 11319923, 43051140, -24775518, 8147016, 2881923, -34854196,
--1079647, 6544994, -15380278, 34155728, 2585570, -4648229, 2658585, -14150843, 46786152, 12947716,
--37491308, 36229660, -15117211, 1394791, 11108396, 13494250, 24017994, 11767137, -6479495, -23376970,
--31523986, -11770895, -12631499, -2097018, -9667971, 19896972, -12048457, -20826834, 2350421, 5852967,
-4268661, 7694434, -11818139, -11446625, -6984691, -7539815, -24842090, -10415296, -8446590, -17077326,
--8235600, 6241661, -7283191, -16002511, -750546, 6360847, 10835666, -2442763, 5110474, 11885248,
--653372, -7885023, -471373, -4735739, 6582038, 9511205, -13146895, 11711302, -6797860, 270583,
-1768453, -5983963, 12205223, 4834523, -17074106, 10669773, 1628866, -5933498, 12664785, -14224932,
-5799817, -2534568, 6208912, -3267396, -3962644, 2566243, -2315524, -1284195, 4482335, -2418604,
--9765145, 4739497, -873489, 3188476, -390842, 8412230, 10298258, -48389248, 28187870, 1261110,
-17042968, 28054190, -46380816, 10584410, 23885386, 5386963, 17825188, -17889076, 19622094, 5695664,
--18176302, 244276, -11451993, -33996276, 18654654, 10555419, 31073552, -17213156, -22744536, -7987029,
-7298760, -4764730, -38502236, -19044422, 11853573, -2913062, 5776194, -16298327, -5024575, 12771085,
--10843719, -5466957, -16427713, -3898220, 6006512, -18269180, 1939178, -39844412, -32726040, 10066330,
--34041912, 2907693, -35615480, -25041270, -17169668, 16702591, 33290292, 40888088, -9666898, 18131204,
-22231824, 10678899, 9657771, -15968688, 45629196, 46405512, -31554050, 31601832, -24815784, 15860240,
-32753420, 30988726, 37948720, 45122928, 32112396, -36063768, -25489020, -355409, 960999, 13517336,
--8501351, -7004555, -21487722, -12038256, -31907312, 6937983, 26929444, -10935524, 6662031, 27944130,
-13294534, -19289772, 21626770, -1416802, 7706245, -2197950, -3712462, 6127308, -6680822, 9443559,
-8151311, -7242389, -8548596, 8136816, -5790153, 197569, 367757, -771484, 2463164, 720481,
--11411728, 10636487, -4774393, 5035313, 6286759, -4377109, 6764037, -8330089, -5909875, 5357972,
--6478422, -8601746, -3627637, 3279208, -3199751, 1999844, -7555921, 164283, 2966212, 6969658,
-10746008, -2629057, 6117107, -7133941, 148176, -1418950, 3359738, 2330557, -486405, -5550172,
-59872916, -43826384, -22296248, 23605678, -14051522, 22549116, -17580374, -19614578, 6621766, -46351824,
--2098092, 31156766, -7524246, 16010564, -26585848, -6540699, -10499048, 1049583, 33238216, 10045929,
-7384123, -5940477, 18242874, 5862631, 45413372, 11164767, 26511222, 1879585, -20739324, -19616190,
-26422638, -12861280, 12215424, -265751, -34114924, 24581172, -30397094, 59008020, -44004088, 26845156,
-24035174, -25272662, -21241834, -15696495, 21785148, -1678795, 22798224, -302795, 2962454, -40373228,
--21701932, 9373229, -19852412, 6549825, -12113418, 11834782, 6714645, 30974768, -18438832, -6366216,
--7875897, -15217606, 42003168, 7755101, 3933653, -39165808, -12701292, 21024938, 12400644, 13380434,
-36375152, 23267448, 32162326, 37119256, -1112397, 16420197, -15480673, 49381388, 3688840, -8191577,
-17975512, -4257387, 37888592, 651224, -7670275, -7871065, 4508105, 26625040, -20262582, 13734232,
--6476274, -2233383, 7872138, 5255966, 10337986, -6568079, 6713571, 12396886, -3315178, -4792110,
-8381092, -1432909, -1372779, -1013075, 2212982, 1310502, 4000225, -9122511, 11803107, -7066832,
--3934727, -1996623, 7187091, -10326712, 964220, -7418483, 9844065, 17871896, -6090801, -5068599,
--2471754, 12234751, 5980205, 12779675, -1127966, -7602092, 5797669, 6072547, -1946157, 6009733,
-4682588, -17632988, 2605972, 19901804, -2794950, -90372552, 62827856, -38934952, -27227946, 699006,
-12917114, 16255377, 2952790, -14426258, 48926656, 24847996, 6867116, -24415816, 16079821, -767189,
-18277234, -23302882, -16105590, 12582644, 36602784, -41836740, 1767916, 13668197, 4512400, -10227928,
--6140730, -5187784, 1744831, -2033130, 9529459, 46183248, 3036005, -20723754, 31061740, -7129109,
--29888678, -38544648, 36886252, 12153147, -5039071, 13828184, 8587250, 30749282, -41489920, -4281009,
--21061982, -5879810, 23841900, -17388176, 9341017, -20066624, 9831717, 63661616, 4889284, -36219996,
--40731324, -2376728, 19520626, 19225884, -16280610, 4101694, 30993558, -12826920, -59771988, 34280820,
--20561082, -33881924, 15017353, 56917980, -39143260, 28763396, 39644160, 13812615, -34206192, -28436442,
--17549236, 14451491, 12444131, -11654931, 35587564, 17534204, -2160369, -812286, 2202781, -29438780,
--11257109, -20764020, 10873783, 9816685, 7120519, 9924596, 7341710, 22114250, -10866804, -5063230,
-4250407, 368830, -16818018, 14876156, -587337, 9452686, -4166655, 7215545, -10816875, -2981244,
--6506876, 10641855, 1994476, 2501282, 331249, 6592238, 16075526, -5916855, -30582314, 2959769,
--15087683, -2482491, 9171903, -12463458, -8405788, 17911624, -16258062, -3084324, 141197, 8915815,
--17415018, 1831267, 52217140, 16742319, 3774740, -4136591, 8558259, 14265734, -4318053, 6478422,
--7524783, -405874, -5877663, 24035174, -27014270, -3403225, 16677895, -38312720, 12621298, -9599789,
-3190624, -4776541, -10304163, 6460705, -2610266, -15797963, 41941428, -32089848, -8613557, 29220810,
--18617610, -3223373, -5653251, 6176700, 29553134, 1951526, -28200756, 38769596, -20803210, 13608604,
-24676198, 10533944, -8785356, 1839857, -21163452, 4932233, -12695923, -10545755, 52665964, -12481712,
--20564304, 6506339, -9440875, 12120398, -7831873, 13339632, 33995204, -18838800, 11457362, 25425132,
--29952028, 13549548, 16768626, 7220914, 20911122, -23798950, -5885716, 35683664, -24538222, -5787469,
-10581726, -10384694, 34644816, -34427384, 6103686, 11985106, -15458661, 11649562, 13430363, -32801738,
-11870216, 27377196, 5906, -8646306, -1000727, 17497160, -3374234, -30822832, 25107306, 11441256,
--13094282, 4761508, -7076496, 10678899, -3979824, -13975287, 16386911, 571768, -3183108, -12192338,
-11485279, 1798518, -15500000, 5331128, 10922102, -2513630, -4854924, 1993402, 10124312, -1772748,
--9852655, 10084583, 7139847, 950262, -184684, 8380555, 2008434, 2733210, -11763915, 15057082,
--8130373, 16080894, -29304024, -78957072, -124177704, 11333882, 118946968, 9832254, 269277792, 278022368,
-138430016, 291076928, 194143264, -40121436, -4071092, -63851668, -233445968, -204847936, -126589328, -238421152,
--186597536, -54069880, -116843512, -97733592, 34941168, 58971512, -28166396, 15653545, 52679384, -40058088,
--23347442, 74197168, 65900904, 7896834, 73643120, 125495184, 42152956, 90908352, 171538304, 82629800,
-43786116, 153811904, 128603672, 17562658, 92493728, 180210928, 36024576, 42825120, 145635360, 63077500,
--15236396, 103179608, 97373352, -8501888, 86041080, 110995376, -1336809, -80329312, -37193344, -189463888,
--313381760, -278604320, -297155904, -454059648, -407854400, -381576160, -464255904, -451000032, -369962048, -333497760,
--300032992, -173482848, -66462472, 59311888, 125695976, 240323280, 358060160, 390899456, 435348608, 567958976,
-560492160, 441139328, 482507904, 426700704, 176867824, 192731824, 163821856, -6374805, -26262114, 47860968,
--6117107, -72679440, 9965935, 49776524, -47006808, -18303540, 44027708, -22453552, -92481384, -30144228,
--24634858, -134018552, -94858112, -25123412, -105031816, -118967912, -7724499, -41801844, -120361088, -57508000,
--54153096, -169387072, -160614064, -145444240, -262729584, -284023488, -236774560, -252527440, -272568832, -195046816,
--166292000, -144168096, -104231880, -55759948, -24739012, -6111739, 22801444, 94352376, 128515624, 197865392,
-322125216, 364261536, 402918944, 470593120, 459937312, 405423968, 345721792, 243185344, 106091064, 28623810,
--21842056, -74117712, -87450368, -85623392, -86521040, -88280904, -81964080, -73420320, -79135312, -80620832,
--75550088, -80783504, -88265872, -82670608, -77054400, -70557184, -50822348, -23611582, -5479842, 1469416,
-2094870, 474057, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+6492380, 1704565, 5732708, 98784, -5909875, -4076461, -4303557, -669478, -2954401, 6932077,
+-5181341, -1316944, -2350958, -828392, -4154844, 3998615, -2448668, -1918777, 3365644, 5577552,
+6313602, 973884, -448287, 1314260, 338229, 892816, -2851322, -3071975, 1507534, -2784750,
+-2786897, -3737695, -3927748, 1202054, -2599529, 3482682, -4335770, -587337, 1920924, 1825361,
+1612223, -6729140, -1202591, -3730716, -643171, -1563368, -4099546, -79994, 4909685, 1496796,
+2389076, 2260227, 2658585, 343061, 3333432, 2097555, 3719442, -2093797, 2486249, -1212255,
+1720671, 203474, -3415036, 4013647, 4540854, -2420214, -3029563, 1345399, 4174708, 1001801,
+1123671, -1385664, -261993, 2266669, 1423245, 373125, -812286, 285078, 1918777, 2330020,
+-268435, -3613141, -2204392, -1211718, -1529545, 849330, -333397, -321586, 1734093, -1260573,
+-411780, 537, 316217, -852014, -233539, 135828, -1359894, -150324, 1699733, -242129,
+905701, -1213328, 718870, 366683, -69793, -795106, -10142565, -2664490, -4575214, 3356517,
+-9508521, 2083059, -4191888, -2215130, 1347009, 186831, 1061394, 1419487, 1069984, 4123706,
+-1836635, 428960, -419296, -5023501, 3698504, 6179921, -5034776, -4726612, 3586835, 919660,
+4428648, 1401233, 5950141, -830002, 2003065, -3155190, -963146, 6066105, 481573, -3963181,
+-4888210, -5280126, 220117, 4366908, 2215130, -32212, 4969814, 3961034, 152471, -4070019,
+6356552, 1620276, 4901632, 4983236, -876173, 3173981, 3751117, -458488, 2215130, 2570538,
+-2477123, 507880, -770410, 2442763, -5591511, -3580392, 1801202, -3461744, -1336809, 4789426,
+-1942399, 2630668, -1125818, -7523709, 1266479, -38118, 3950833, -6196564, -3333432, 2798708,
+706522, -597000, 1596654, -2921652, 847182, 743566, -894964, -1842004, 2532420, 2302103,
+1592359, 288300, -954557, 611496, -707059, -1116155, 833761, 716186, -1511292, 1089311,
+-845035, -642635, 1359894, -978179, -2011118, -30602, -750009, -246424, -952946, -1047435,
+420907, -78383, 612570, -5369, 601295, -1482301, 430570, -431644, 6379100, 6734509,
+2962991, 4981089, 3890167, 6744710, 7687455, -2860448, -825707, 2587181, -7681012, -258235,
+-2532957, -1466731, 3515968, -4472672, -523986, 5681705, 1049583, 3641596, -1802813, -1318555,
+-1915019, -7224135, -1184337, 489626, 3819300, -1163399, 6572911, 2588792, -1136556, 2626373,
+1361505, 3376381, -2443837, -512175, 7675107, -1029182, 7250979, 3401614, -3183645, 759136,
+6385006, 3322694, -4214437, 5819144, -1599339, 390842, 300648, -1178969, 1115081, 643171,
+-5266704, 3354906, 2452426, -458488, 188442, -1179505, -4758287, 0, 2670396, -550293,
+-563714, -3208341, -6995965, -2410014, 2600066, 5862631, -8920110, -4762582, 1664300, -3900367,
+2281702, -189515, -44023, -5376226, -4075387, -2394981, -3488050, -1730872, 194884, 591632,
+-1252520, 2010045, 1606855, 317291, 1480690, -1644973, -606664, 26307, -2405719, -540629,
+235686, -3064996, 1277216, 719944, -586800, 71404, 634045, 1446867, 162672, 187368,
+23085, -1504312, -190589, -470836, 1085553, 731755, 1486059, -1079111, 9400073, 10040560,
+-2024540, -4172561, -4608500, 9628780, -8355322, 253940, -1381906, -3858491, -5297842, 1902671,
+-1471563, -7159174, -8764955, 359167, -678605, -4540854, 1633161, 2451353, -3235184, -4816269,
+-4539781, 6414534, -6913287, -804770, -8075076, 122407, 4467303, 1556926, 750009, -4489852,
+-4363687, 3983045, -3069828, -4589173, 557272, -1651415, 2810519, 86436, 1126892, -4575214,
+-1717450, -1269163, 4407174, 3061238, 3060701, -9087614, 1429150, 2571612, 2069637, 2600603,
+-2612414, -1630477, 315143, 1879048, 3595961, -594316, 2372433, -2607582, 7030325, -12740484,
+4477504, 395674, -6804839, -260382, 7503308, -2241436, -3531537, -6816113, -2318746, 564788,
+-1910187, 24159, 3073586, 3952981, 3269007, -938450, -547608, -3996467, -827318, -1000191,
+-2033667, 588947, -828929, -767189, 1633161, -2006287, -946503, 1997160, -985158, 1300301,
+-303332, -781147, -710817, -512712, -2951716, -1813013, 1282048, 1476932, -1401770, -1102196,
+-954020, 1115618, -697395, -393526, -1159104, 785979, 804770, -1351304, 551903, -168041,
+-1256815, -271657, -711891, 836982, -417686, 1232119, 1705639, -4459787, -14147085, 2587718,
+-6456410, 1421097, 1170379, -810138, 10019622, 562641, -6430640, 8577587, 4116726, 2949569,
+-1302449, 1782411, -2624225, 6724845, -1130650, 770410, 10105521, 9884330, 4211753, 4529043,
+4335233, 4922033, 3265786, -9759776, -3067681, -133681, -2586107, -8308078, -935229, -1969779,
+-2216203, -4464082, -107374, -1311576, 7126962, -2296734, 12512313, -78920, 1033477, -2326799,
+-1838783, 90194, -385473, -1009854, -2217277, -1476395, -6168647, 1487132, 979789, -742493,
+-3202972, 4279398, 3149285, 3707094, -1333051, -2702608, 44560, 3227131, 3480534, -2837900,
+-8053064, -4113505, 837519, 6673843, -954557, 5452461, -4374424, -6327561, 4681515, -2225867,
+-5213017, 2990908, 3110093, -5829881, -4626754, -6414534, -2158221, -2225330, 3636764, -2024003,
+1082869, -436476, 2412161, 1487669, 1319092, -1235340, -719944, -3356517, -1709397, -919660,
+-78920, 1443646, -323196, 67646, 2725157, 1044751, -176631, -9127, 1735167, -1207423,
+438624, 472446, -981400, 1029718, -876173, 662499, 506806, 743566, -548682, -2115272,
+1962800, -3532611, 5196374, -6154152, -6729677, 3238942, -1927904, -563178, -3533148, -2019708,
+3450469, 4904316, 2556579, -1102733, 751082, -552440, -1117765, -4620848, 1576790, -12507482,
+-3628711, -3958886, 3476239, 4341138, 375273, 2175938, -7794829, 2173254, 1220845, 2164127,
+-7024956, 13342853, -581431, 2514703, 1764695, -6244346, 1012002, -8971650, 5810554, -1877975,
+-7525857, 1566589, 598611, -3740917, 432718, 869731, 5983427, 10772852, 4667019, -2127620,
+3497177, 4450660, -9962177, -3626563, -4552129, 2821794, 2307471, -1617055, 1604170, 3519726,
+2237678, 4520990, 8391829, 236760, -3092913, -817654, -335544, 6614787, -4706748, 66035,
+3053722, 8905615, 52613, -5858336, -5736466, -471373, -7050189, -922344, 2695629, 10896332,
+9366787, -1052804, -4949950, 4037269, 311385, 1202591, 1025423, -342524, 1382980, -348966,
+-1361505, 1213865, 1569811, -1506460, 2194192, 2051384, 1981054, -545998, -1596654, 1285269,
+1763084, -267362, 526134, -1340567, 217970, -281320, 2555506, 941135, 1595580, 1236951,
+398895, 830002, -11274, 1003412, 2284923, 479963, 938450, 1631014, 2222109, -1065689,
+-558346, 530428, 660888, 1673427, 2609730, -13028783, -3544422, -4843113, 5573794, 159988,
+-2673617, -16741783, -2201708, -2273648, 6928319, 16506633, -4760971, 11076184, 1915555, -9822590,
+-9991168, 1698123, 2543695, -5726265, 6269042, -4534412, 5052492, -6263673, 3015604, 2108292,
+-5914170, -5018133, -3797288, 1928440, 6476274, -8477192, 316754, -8911520, -493384, -3412352,
+2165737, 6441914, 682900, -2839510, -2478733, 6976101, -19864, 10653130, 3284576, -4065724,
+-3876745, -3130494, 1531693, 6672232, -137439, 11083163, -19796042, -14634027, -11813308, -2767570,
+-10075993, 620086, -3792456, 3550864, 8992051, 1581085, 3722126, 5732708, 9518184, 4860829,
+1457068, -6598144, -16386911, -17302812, 9268539, 593779, 11765526, -8413841, -6032282, 5122822,
+-12129525, 208306, -4332549, -489626, -7822746, 276489, 2610266, 7036230, 1277753, 1112933,
+-2255395, 2517388, -516470, 812823, 1974074, 3170760, 4120484, -1146756, -1730335, 2972117,
+1519345, -1169842, -2172717, 430034, -362388, -288837, -920197, 439160, 31675, -1203665,
+-401043, 1207960, 2228551, 1765232, 1531156, 777389, -5024038, -2786360, -1921461, -1806034,
+2699387, -437550, -832150, 5369, 769873, 181999, 7848516, 3428995, -6251862, -170725,
+14944876, 12669617, -1170916, -10951093, -18478024, -2108292, -6486475, 6609955, -5537287, -5450851,
+-20925080, -8978629, -18742164, 6917582, -612570, -4567161, 4995047, -656056, 115427, 1358283,
+-6014565, 532039, -6908992, -1226750, 4201552, 3125663, -7046968, 2541547, 7199439, 11715597,
+-1768990, -1636919, -3892851, 668404, 6086506, 8637179, -1234266, 1279363, -1855963, -1492501,
+10293426, 7490423, 308701, 7726110, 2244121, -9458592, 1794760, -947040, 12251931, 4791573,
+1551557, 5915244, 7953206, 2194192, -6978785, -11961484, -2752537, 2505040, 6431714, 3287798,
+411780, 2516314, 9506373, 2101313, 3099893, 4383551, 2566780, -6092948, -6886443, -5984500,
+-6802155, -6228240, 10568304, 1497870, 8164733, -7156490, -6313065, -1206349, 6826314, -4254165,
+3642669, 2096481, 1098438, -3611531, -2289218, -3336116, -2278480, -3803731, 1531693, 1241782,
+-1031329, 2517925, -1641751, 1191853, -656056, 285615, 1155883, -3365644, -2086817, -3377455,
+-2182917, -4116726, -1175747, -3411815, -1628330, -1973538, -2594697, -160524, 3002719, 987306,
+1258425, -1062468, -281320, -364535, -702764, 2341294, -1093069, 26212186, 5743982, -8078297,
+4683662, -4700305, -15537044, -3135326, -15240691, -8339753, 7893613, 10533944, 4070019, 2194728,
+897648, 1982664, 9982041, -7036230, 14120242, -9069360, -9274445, 11325292, 5015985, -18104360,
+7965554, 4721780, 5779416, 12070469, 5927055, 9007620, -588411, 4937065, -2828773, 7715909,
+2016487, 1747515, 5095979, -10120017, -5516349, -3011846, 6586869, 2991445, 2378338, 5361730,
+1544578, 1998234, -9233643, 244276, 10050223, -1643899, 1266479, 1425929, 1326608, 12150999,
+4655745, 16293495, 3761855, -2127083, 15372225, -13016435, -1670205, -1909113, -5217312, -1023276,
+3262565, 15380278, 1511292, -3037616, -5850283, 3332895, -6153078, -2461553, -3938485, -8122320,
+-1275605, 2427194, 13060996, -876710, -12495670, -3271155, -7474854, -3572876, 9142912, 7534983,
+8570070, -6555194, 1472637, -7314866, -1068373, -2335925, -4468914, -2320356, -6153615, -3403225,
+-1093069, -2435247, -8096550, -3002719, -2266669, -1433445, -1769527, -2635499, 445603, -1144609,
+-6347962, -95563, -3009162, -1618666, -448824, 161598, 1229971, 27917, 2985539, 3073049,
+591095, 747861, -1963337, -1564442, -378494, -1937030, 3062312, 2004139, 2884071, 2875481,
+1239635, 3932580, 2553358, 1176821, 1828046, -248571, -1392643, 2864206, 3848828, -9395778,
+-14583025, -5211943, -14358613, 10322954, -12256763, -8952859, -7234336, 6539625, 16345572, -16584479,
+-5939403, -18695456, 5328444, 2654827, 1719061, -5342403, 1423782, 21133386, -11076184, -1813013,
+7948374, 5495948, 4138738, 7460895, 4902169, -6898255, -11764452, -2150168, -6534256, -8809515,
+-10865194, 213675, -2566780, 2705830, 13897977, 8865886, -7870528, -4189741, -918049, -4003983,
+3370476, 26549340, -9041443, 18532248, 5749351, 3148211, -1255741, -2957622, 3083787, -10114111,
+4815195, 14433238, 564251, 2338610, 11474542, 7515119, 4412542, -9673340, 8078297, -5752572,
+-8699456, -23373748, -7414188, 15250355, -8695161, 3981972, -16524350, 11831561, -6249715, -6454799,
+10257456, -16390669, -12190728, 18650896, -13309030, -12453795, 7425999, -8531416, 1692217, 67646,
+5289789, -13438416, 4203163, 390842, 13405130, -9965935, 3304441, -1382980, -7634305, 10000294,
+1989644, -8256538, -6041409, -5677410, 851477, 14496, -4199941, 147103, 5176510, -400506,
+3663070, 4179540, 3269544, -7432978, 4132832, 3837553, 5978058, -118112, 427349, -5397700,
+-2183454, -2640868, -2828773, 1286343, -637803, 3505767, -4949950, -3085397, 1853815, -4749697,
+-4037269, 1730335, -10584947, -7891466, -1073742, 12032351, -5703180, 21150566, 19701014, 3858491,
+6306086, -11460583, 1410897, -9285719, 14783277, -2986076, 4347581, -7093139, -4585415, 2487323,
+1979443, -6817187, 11318313, -3242164, 2382633, 4191888, -7452842, 2771328, -9505299, -1611,
+5359583, 6412923, 117038, 8490077, 10736881, -856309, -20221242, -3448859, -6015639, 14391899,
+-12239046, -15204721, -10855530, -7290707, 2050847, -8644159, -6796786, -4381941, -1298154, 2595771,
+-29641180, 18615462, 14501957, 21230560, -6832756, 3351685, 14206141, -13712220, -12707734, 2430952,
+9255118, 6053757, -1676648, 2800856, -7547332, -8982924, -11445551, -3420405, 39268884, 3080565,
+-21886616, -3987877, -12029667, 7415798, 5798206, -13611825, 2812667, -4245039, 1030255, -6770479,
+8329552, 8480413, -1369558, -4460324, -5254893, -17241610, 5070746, 2653216, -785442, 6964290,
+-3515968, 1015223, 2648921, -8248485, 3015067, 4734128, 11126113, 5842766, 597537, -9790378,
+-34897, 8676371, 409633, -142808, 6484864, -9127, 2141578, 6347962, 5394479, -1161789,
+2900177, 5340255, 4966056, -2592550, 2105071, 6434398, 7976828, 5807333, -304943, -4435091,
+-1100049, 537, 4939213, -206695, -1591822, 143345, 1720671, -3383897, 1728188, 2939368,
+-3244848, 1798518, -5686537, -11259794, -21733072, 1755568, -18155900, 8551280, 2927557, -14614163,
+8242579, 9483288, 13219909, 3823058, 5224291, -15167140, -310311, -3025268, 14119168, 6571837,
+616328, 13206488, 14709189, -1773822, -7057168, 1680406, 18139794, -11819213, -9372156, 9350144,
+5097053, -12023224, -2682744, -11125576, 20745228, -17720498, 4901095, 11036992, -6703907, 10143639,
+3630858, -5069135, -5412196, -5455682, -8485245, 11613055, 15625628, 3116536, -12050068, 1236414,
+-13306882, -5068062, 8588324, -1655173, -6639483, -4855998, 2159832, -17663590, 471910, -1868311,
+-10242423, 13763223, -13642964, -935766, -3205119, -10062035, 10558103, -863288, 6069326, -5128728,
+-1139777, -625455, -6528887, 4931696, -6025839, -1122060, -5936719, 15915538, 6743636, -18949932,
+-4268124, -31210454, 17885318, -73551, -14181982, 12584254, 1234803, 1846836, 4480188, 204011,
+7091528, 8813810, 1853278, -2310156, 4721780, 9480067, -5577015, -3365107, 3702799, 1358283,
+2184528, 2782065, 4658966, 6457484, -4387846, 3365644, 1881196, -5126044, -4848481, 4099010,
+686658, -537408, -3593814, -3112778, -5760625, 5526549, 5531918, 958315, -3911105, -11769821,
+71941, 1058710, 3649649, -7559680, 647466, 5975374, -3461207, 6914361, 2936684, -456877,
+1729261, 3760781, 137976, 1367410, 1891396, 4622459, 19021336, 716723, -14482630, -6225555,
+8553964, 13855028, 14849313, 533650, -3494493, 20877836, 9081171, 23204634, 2818572, 1967632,
+-11189464, -4602058, -6641093, 6190122, 3344169, 12549894, -14399952, 971736, -8579197, 7697655,
+-12486007, 4735202, 13787382, -2080912, -440771, -7218230, 1931662, -7265474, -24820616, 3401077,
+-3839701, 1719061, -11104638, -2440615, 9651328, 18714784, -1973001, -6805913, 10865730, 5115306,
+2626373, 12880070, 4458713, -6889665, -3318936, 8312373, -1173063, 7586523, -9090298, -8088497,
+2779918, -7601555, -14565308, -6731288, -16585016, -3707094, 5565741, -13023415, -1883343, -14956687,
+-6550362, -114890, 5870684, -17822504, 7785702, 1315871, -10605885, 13269838, -4737349, 3510599,
+23527294, 26637388, 1709934, 9364639, 19481972, 23296440, 23125178, -2283849, -15418396, -23638964,
+-8591545, -15673409, 14799384, -3190087, -6978785, 3784403, -379568, 1612223, -276489, -7008313,
+7522099, 2120640, 2825015, 542240, 10170483, -5690832, -99321, -3125663, 7061463, -6548215,
+-2773475, -697932, 10049687, -2619393, 6078990, 8274255, -7577396, -1629940, -3187940, -8603893,
+-3451006, -1974611, 3741990, 294205, 11780022, 3187403, 7985955, -756451, -7530689, 2114735,
+234613, 31835908, 36827196, 1775432, 11893301, 11099806, -1406602, -26541288, -559956, -1209033,
+-9872519, 7294465, 7040525, -14515379, 7963943, 9909026, 1797444, -3973382, 5599027, -3817152,
+18817326, -3355980, -8617852, -26844, 4370666, -1907502, -1110249, -482647, -29667486, 8454106,
+-560493, -20723218, -8417599, 3415573, -1821066, -14166950, 4984310, -16693464, -1385127, 1486059,
+-26452704, -4892505, 11509439, -8666170, 1348083, 16618302, 10379325, 12681428, 4099546, -7354595,
+-12298102, 12621835, -6475737, 7013145, -11679090, -6289443, 8575976, 14194867, 2210298, 17030620,
+-11392401, 14717242, -12452721, -15259482, -10695542, 14669461, 15602006, -14433774, 7521562, -39634496,
+-3492882, 11489574, 3790846, -6323266, -15627775, 7129646, -22135724, 3469797, -11353209, 10432476,
+-17064978, -11087458, 17361868, 270046, 8792335, 1841467, 7682623, -3994857, 3253438, -2069101,
+-12745852, -2447058, -5869610, 3894462, -4013110, 2175401, 657667, 2029372, 1182190, -2951180,
+-3765613, 432718, -8002598, 2797098, 2471754, 4571456, -5066451, 4539781, 4490389, 2742874,
+3888019, 2630668, -5444408, 484258, 2897492, -4253628, 7671886, -785979, -2729452, -4396973,
+139586, 560493, 3751654, -2838437, 3570729, -2745558, 8074002, 3358128, -6456410, -1838246,
+-1460289, -3241090, -2604361, -28981902, 2132988, 35885524, -24260660, -2269890, -2106682, 1917166,
+-9600863, 4592394, -15306190, -15658914, -5173825, -4269735, 3784403, -3932043, 8159901, -11735998,
+383863, 23087596, -18918794, -16681653, -4053912, 20204600, 2815351, -25275346, 10757819, -9372156,
+-10824391, 2523830, 34748432, -19543174, -10910828, 24753508, 18315888, 1604707, -10244034, 689879,
+-3817152, -7847442, 7067906, 6473590, -4226248, -20040318, 25672630, 12074764, 4846871, -27285390,
+-4194036, 8490613, 9430138, -3384971, 14338748, -2306934, 4866198, -6248641, -16457241, 10724533,
+-11747272, 7047505, 3635153, -14399415, 27199492, 4195110, 19583978, 19659676, 3491809, -29554744,
+-5684926, 288300, -11753178, -5947993, 1108638, -936303, 12831752, 24142548, -6982543, -2355253,
+-10657424, -4752382, 10023380, -6764037, 5823439, 17950816, -15693810, 17842368, -3507378, 5365488,
+-6784975, -3634079, -5695664, 774705, 3330210, 3940096, -2985002, 99858, 4071629, 2321430,
+9430674, 4427038, -4759361, 405874, 860604, 8603893, -4766340, 2504503, 3974992, 1342714,
+-335007, 304943, -11218991, 5514738, -4129074, 5399311, 7040525, 946503, -1136556, 3581466,
+-367220, 2741800, 933082, -1167694, -4142496, -4214437, 8367133, 1431298, -1955821, 2349347,
+-5204964, -979253, 8530879, 11190537, 1545115, -10300405, -51554640, 3386582, -13435195, 1777580,
+25844966, 2466385, -4955856, 4704600, 1023813, -17515414, -18874770, -17029546, -16316581, 21271362,
+-4229469, 25389162, 2286533, -23987392, -809601, 2645163, 20584168, 4045859, -3285650, -4085588,
+5906117, -12917114, -4911832, 22726282, -4596152, -29515016, -22505092, 13471165, -2891050, -6135361,
+6824703, -2118493, -15163919, 4584341, 8973797, 20463372, -4079682, -16988206, 277562, -21425982,
+8289824, 24255290, -3835943, -29769492, 9419937, -340913, 1723893, 7175817, -9327058, 18321794,
+1425929, -12359842, 9663676, -6691559, -4084514, 26181046, -13357885, -4502200, -4348655, 16496433,
+6682969, -28956132, 14746770, -23333484, -5513128, -12588012, 3065533, -7675644, -7020124, -2405719,
+13356275, -4318053, -8138963, 15744813, -9119826, 16163573, -26844, -8528194, -5077725, 4028679,
+4507568, 3212099, -9651328, -3202435, 2448668, -530965, -6291054, 156229, 6056978, 9240085,
+3908420, 4763119, 818728, 9086540, -5066988, 2966749, 7237557, -2699924, 968515, 2950106,
+-1723893, 1459752, 2910377, -8853001, 7575786, 3232500, -8866960, -7290707, 591632, -10475425,
+988916, -7706245, 10108742, -18097918, 34897, -3788698, 1985886, -4667019, 5738613, -2962991,
+2713883, 2098629, -25188372, 5157182, 41580116, 27087822, 12387223, -20632486, 15458124, 19551228,
+28922846, 13972602, 3415573, 1029182, 18118856, 31284004, -7062537, -3808562, 17712446, -35019016,
+12742631, 31251256, -6481643, -10817949, 8108899, 24267638, 19538344, -13056701, -22383222, -1307281,
+11257109, -3782793, 2711198, 372052, 26249766, -14976551, 16816408, 25409564, -10163503, -3053722,
+17927730, -2667175, 62862216, -26339424, 11319923, 43051140, -24775518, 8147016, 2881923, -34854196,
+-1079647, 6544994, -15380278, 34155728, 2585570, -4648229, 2658585, -14150843, 46786152, 12947716,
+-37491308, 36229660, -15117211, 1394791, 11108396, 13494250, 24017994, 11767137, -6479495, -23376970,
+-31523986, -11770895, -12631499, -2097018, -9667971, 19896972, -12048457, -20826834, 2350421, 5852967,
+4268661, 7694434, -11818139, -11446625, -6984691, -7539815, -24842090, -10415296, -8446590, -17077326,
+-8235600, 6241661, -7283191, -16002511, -750546, 6360847, 10835666, -2442763, 5110474, 11885248,
+-653372, -7885023, -471373, -4735739, 6582038, 9511205, -13146895, 11711302, -6797860, 270583,
+1768453, -5983963, 12205223, 4834523, -17074106, 10669773, 1628866, -5933498, 12664785, -14224932,
+5799817, -2534568, 6208912, -3267396, -3962644, 2566243, -2315524, -1284195, 4482335, -2418604,
+-9765145, 4739497, -873489, 3188476, -390842, 8412230, 10298258, -48389248, 28187870, 1261110,
+17042968, 28054190, -46380816, 10584410, 23885386, 5386963, 17825188, -17889076, 19622094, 5695664,
+-18176302, 244276, -11451993, -33996276, 18654654, 10555419, 31073552, -17213156, -22744536, -7987029,
+7298760, -4764730, -38502236, -19044422, 11853573, -2913062, 5776194, -16298327, -5024575, 12771085,
+-10843719, -5466957, -16427713, -3898220, 6006512, -18269180, 1939178, -39844412, -32726040, 10066330,
+-34041912, 2907693, -35615480, -25041270, -17169668, 16702591, 33290292, 40888088, -9666898, 18131204,
+22231824, 10678899, 9657771, -15968688, 45629196, 46405512, -31554050, 31601832, -24815784, 15860240,
+32753420, 30988726, 37948720, 45122928, 32112396, -36063768, -25489020, -355409, 960999, 13517336,
+-8501351, -7004555, -21487722, -12038256, -31907312, 6937983, 26929444, -10935524, 6662031, 27944130,
+13294534, -19289772, 21626770, -1416802, 7706245, -2197950, -3712462, 6127308, -6680822, 9443559,
+8151311, -7242389, -8548596, 8136816, -5790153, 197569, 367757, -771484, 2463164, 720481,
+-11411728, 10636487, -4774393, 5035313, 6286759, -4377109, 6764037, -8330089, -5909875, 5357972,
+-6478422, -8601746, -3627637, 3279208, -3199751, 1999844, -7555921, 164283, 2966212, 6969658,
+10746008, -2629057, 6117107, -7133941, 148176, -1418950, 3359738, 2330557, -486405, -5550172,
+59872916, -43826384, -22296248, 23605678, -14051522, 22549116, -17580374, -19614578, 6621766, -46351824,
+-2098092, 31156766, -7524246, 16010564, -26585848, -6540699, -10499048, 1049583, 33238216, 10045929,
+7384123, -5940477, 18242874, 5862631, 45413372, 11164767, 26511222, 1879585, -20739324, -19616190,
+26422638, -12861280, 12215424, -265751, -34114924, 24581172, -30397094, 59008020, -44004088, 26845156,
+24035174, -25272662, -21241834, -15696495, 21785148, -1678795, 22798224, -302795, 2962454, -40373228,
+-21701932, 9373229, -19852412, 6549825, -12113418, 11834782, 6714645, 30974768, -18438832, -6366216,
+-7875897, -15217606, 42003168, 7755101, 3933653, -39165808, -12701292, 21024938, 12400644, 13380434,
+36375152, 23267448, 32162326, 37119256, -1112397, 16420197, -15480673, 49381388, 3688840, -8191577,
+17975512, -4257387, 37888592, 651224, -7670275, -7871065, 4508105, 26625040, -20262582, 13734232,
+-6476274, -2233383, 7872138, 5255966, 10337986, -6568079, 6713571, 12396886, -3315178, -4792110,
+8381092, -1432909, -1372779, -1013075, 2212982, 1310502, 4000225, -9122511, 11803107, -7066832,
+-3934727, -1996623, 7187091, -10326712, 964220, -7418483, 9844065, 17871896, -6090801, -5068599,
+-2471754, 12234751, 5980205, 12779675, -1127966, -7602092, 5797669, 6072547, -1946157, 6009733,
+4682588, -17632988, 2605972, 19901804, -2794950, -90372552, 62827856, -38934952, -27227946, 699006,
+12917114, 16255377, 2952790, -14426258, 48926656, 24847996, 6867116, -24415816, 16079821, -767189,
+18277234, -23302882, -16105590, 12582644, 36602784, -41836740, 1767916, 13668197, 4512400, -10227928,
+-6140730, -5187784, 1744831, -2033130, 9529459, 46183248, 3036005, -20723754, 31061740, -7129109,
+-29888678, -38544648, 36886252, 12153147, -5039071, 13828184, 8587250, 30749282, -41489920, -4281009,
+-21061982, -5879810, 23841900, -17388176, 9341017, -20066624, 9831717, 63661616, 4889284, -36219996,
+-40731324, -2376728, 19520626, 19225884, -16280610, 4101694, 30993558, -12826920, -59771988, 34280820,
+-20561082, -33881924, 15017353, 56917980, -39143260, 28763396, 39644160, 13812615, -34206192, -28436442,
+-17549236, 14451491, 12444131, -11654931, 35587564, 17534204, -2160369, -812286, 2202781, -29438780,
+-11257109, -20764020, 10873783, 9816685, 7120519, 9924596, 7341710, 22114250, -10866804, -5063230,
+4250407, 368830, -16818018, 14876156, -587337, 9452686, -4166655, 7215545, -10816875, -2981244,
+-6506876, 10641855, 1994476, 2501282, 331249, 6592238, 16075526, -5916855, -30582314, 2959769,
+-15087683, -2482491, 9171903, -12463458, -8405788, 17911624, -16258062, -3084324, 141197, 8915815,
+-17415018, 1831267, 52217140, 16742319, 3774740, -4136591, 8558259, 14265734, -4318053, 6478422,
+-7524783, -405874, -5877663, 24035174, -27014270, -3403225, 16677895, -38312720, 12621298, -9599789,
+3190624, -4776541, -10304163, 6460705, -2610266, -15797963, 41941428, -32089848, -8613557, 29220810,
+-18617610, -3223373, -5653251, 6176700, 29553134, 1951526, -28200756, 38769596, -20803210, 13608604,
+24676198, 10533944, -8785356, 1839857, -21163452, 4932233, -12695923, -10545755, 52665964, -12481712,
+-20564304, 6506339, -9440875, 12120398, -7831873, 13339632, 33995204, -18838800, 11457362, 25425132,
+-29952028, 13549548, 16768626, 7220914, 20911122, -23798950, -5885716, 35683664, -24538222, -5787469,
+10581726, -10384694, 34644816, -34427384, 6103686, 11985106, -15458661, 11649562, 13430363, -32801738,
+11870216, 27377196, 5906, -8646306, -1000727, 17497160, -3374234, -30822832, 25107306, 11441256,
+-13094282, 4761508, -7076496, 10678899, -3979824, -13975287, 16386911, 571768, -3183108, -12192338,
+11485279, 1798518, -15500000, 5331128, 10922102, -2513630, -4854924, 1993402, 10124312, -1772748,
+-9852655, 10084583, 7139847, 950262, -184684, 8380555, 2008434, 2733210, -11763915, 15057082,
+-8130373, 16080894, -29304024, -78957072, -124177704, 11333882, 118946968, 9832254, 269277792, 278022368,
+138430016, 291076928, 194143264, -40121436, -4071092, -63851668, -233445968, -204847936, -126589328, -238421152,
+-186597536, -54069880, -116843512, -97733592, 34941168, 58971512, -28166396, 15653545, 52679384, -40058088,
+-23347442, 74197168, 65900904, 7896834, 73643120, 125495184, 42152956, 90908352, 171538304, 82629800,
+43786116, 153811904, 128603672, 17562658, 92493728, 180210928, 36024576, 42825120, 145635360, 63077500,
+-15236396, 103179608, 97373352, -8501888, 86041080, 110995376, -1336809, -80329312, -37193344, -189463888,
+-313381760, -278604320, -297155904, -454059648, -407854400, -381576160, -464255904, -451000032, -369962048, -333497760,
+-300032992, -173482848, -66462472, 59311888, 125695976, 240323280, 358060160, 390899456, 435348608, 567958976,
+560492160, 441139328, 482507904, 426700704, 176867824, 192731824, 163821856, -6374805, -26262114, 47860968,
+-6117107, -72679440, 9965935, 49776524, -47006808, -18303540, 44027708, -22453552, -92481384, -30144228,
+-24634858, -134018552, -94858112, -25123412, -105031816, -118967912, -7724499, -41801844, -120361088, -57508000,
+-54153096, -169387072, -160614064, -145444240, -262729584, -284023488, -236774560, -252527440, -272568832, -195046816,
+-166292000, -144168096, -104231880, -55759948, -24739012, -6111739, 22801444, 94352376, 128515624, 197865392,
+322125216, 364261536, 402918944, 470593120, 459937312, 405423968, 345721792, 243185344, 106091064, 28623810,
+-21842056, -74117712, -87450368, -85623392, -86521040, -88280904, -81964080, -73420320, -79135312, -80620832,
+-75550088, -80783504, -88265872, -82670608, -77054400, -70557184, -50822348, -23611582, -5479842, 1469416,
+2094870, 474057, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
1627256,
-6451578, -3213709, 1780801, -667331, 367220, 302258, -2611877, -2961380, 1931125, -542240,
--2381559, -3036542, -1876364, 2673617, -286152, 3588982, 747324, -4556424, -4711579, -3341485,
-1365263, 1162326, 2431488, -365609, 2783676, -2135136, -402653, -4927401, -765578, -919660,
-1008780, 1852742, 1851668, 3637837, -1819992, -2436857, 1960116, 1110249, -2383707, -2423435,
-104690, 1692217, 802085, 4039417, -1546725, -1280974, 4569309, 1399623, 8574365, 3648575,
--2420214, -82678, -5295695, 98784, -6034966, -397284, -2265059, 4161823, 427349, 2233920,
-3036542, 1649804, 2910914, 1944547, 402653, -5053566, -574452, -2532957, 3471407, 5085778,
--3579855, -2539400, -1546725, -2058900, -2705293, -4332549, -996969, 1299228, -2566780, -2111513,
--912681, -3561602, 400506, -716186, -2417530, 768262, 115427, -13959, -1196685, 212601,
-210990, 1324461, -380641, 854699, -452582, 618475, -184684, -799938, 205622, 1040993,
-163209, -933082, -973347, -98247, 1760937, 411780, -356482, 286152, -534187, -10131828,
--10831371, -860604, -3106335, 417149, -2350421, -638340, 6026913, -1077500, 3240016, -1489280,
--2896956, -4003983, 735513, -827855, -4782446, 5513128, 1656247, 379031, 2938831, 2804077,
-4545686, 3202435, -301721, -3382287, 3157875, 736050, -4559645, -2014340, -2056216, -1365800,
-4075924, -1395864, -6953552, -2354716, -795106, 1452236, -2161442, -4524211, 147640, -441308,
-5255966, 779000, -42413, 1920387, -120796, 7092065, -1223529, 652835, -1567663, -2813741,
-2684, 3045669, 1377074, 831076, 2878165, -2640331, -4400194, -3147137, -633508, 579284,
--1026497, 126165, -3302830, -731218, 1730872, -1053341, 3445101, 1797981, -194347, 639413,
--3230352, -2750927, 5346161, 1214939, 2277407, 1551020, -950262, -314069, -4060355, 286689,
--2319819, 996969, -790811, 1034013, 1102196, 3143916, -326418, -1098975, 185757, 673773,
-421444, 112743, 111669, -947040, -744640, 381715, -341450, -816044, 1278290, -646393,
-657130, 972273, -919660, -274341, 736050, -277562, 1319092, -792958, 655519, -631897,
--458488, -1647657, 1516660, 7004555, -387621, 3594351, 2110977, 4793184, 5873368, -1335198,
-477815, 3622268, 3569655, 2395518, 6719477, 1369021, -2206540, 297963, 5877126, 2076617,
-2770254, 5108864, 6852621, 4533875, -1569274, -4698158, 3296924, 2260764, -2734821, -4538170,
-230318, -2648921, 1192390, 1742683, -1677722, -2263985, 2262374, 1807108, 4031364, -2710661,
--5551245, -2771865, -2418604, -3684545, -1306744, -4209068, 2491081, -5762236, 2443300, 490700,
-1298154, -2563022, 5466957, 4195646, -3928821, 4833986, 1778117, -716723, 1551557, -3506304,
--1162862, 3304441, 1131187, 1383516, 820876, 3946538, 1553704, 4879620, -2444373, -296890,
--366146, 1892470, 2777233, -1129576, 1830193, -2565706, 1244467, 1712081, 1489817, 5353677,
-144955, 3994320, 4425427, 2511482, -4135517, -787053, -692027, -1071058, 307627, 2266132,
--998580, 67109, -226560, 256087, 766115, -670015, 909996, 1560684, -1153736, -588411,
-1428614, 48318, -45634, -79994, -908386, 367757, -472983, 118112, 1090922, 1879048,
-19864, -260382, 888521, 723702, 236223, 432181, 300648, 456877, -133681, -266288,
-773631, 1016834, -1009854, 532039, -405338, 19370302, 161598, 17151416, 1381369, 10863046,
--2330557, -1870458, 2977486, -8108899, 8868571, -5040681, 5951751, 4385162, -3237869, 2588255,
--229781, 328565, -1489817, 2465311, 3513283, 4343286, 7173133, 1744831, 2298344, -281857,
-8435853, -9675488, 250719, -744103, 2337536, 4100083, -5071283, 1941862, 2315524, 1175747,
-3387656, 1816234, -3907347, 1862942, 7557532, -1422171, 2327872, -1282585, -1149978, -372588,
--5389110, 8331700, -105227, 797253, 6265821, -893890, 507880, 7722888, -11331197, 3096672,
--185220, 3375844, 9220758, 2719251, 2251637, 3160022, -965831, -2597918, -1707786, 2217277,
-871878, 4904316, -1751273, 4023848, 1927367, -1418950, 869731, -3281355, -2067490, 392453,
--912681, -4517769, -2806224, -4621922, 2753074, 4002910, -1047972, 1202054, -905701, -3090766,
--82678, 1627256, 1735704, -5509906, -176094, 457951, -787590, 256087, -1071058, 58519,
--1153736, -2682207, 5369, -1793686, -1343788, -2226404, 154619, -2178622, -598074, -2114735,
--1506997, -119185, -682363, -1150514, -52076, 224949, 1065689, -1157494, -7730405, -9527311,
--3762928, -1442035, -3550327, 7602092, 3266860, -6092411, 6789807, -963683, -4930086, 1461363,
-2964064, -2767570, -4504884, -4084514, -8576513, -4351339, 3720516, -5461051, -8709120, 2442226,
-3541201, 683974, -3196530, 6517076, 819802, 6024229, -366683, -1410897, 3463891, 5705327,
--8130910, -3900904, 2231773, -1848447, 2007897, -5349382, -375273, 1410897, 1941862, -4570919,
--8257612, -2355790, 2426657, -1428077, -1029182, 473520, 2687039, -848256, 1497870, -2818036,
-4810900, -6328098, -4694400, -1679332, -4598300, -1416266, -1232119, 1803886, -3369402, 2522220,
-5223217, -486942, 1238561, 1367410, 2514703, 5049808, -1918240, -1014686, -948114, -2149631,
-5311801, -2193655, -9204652, -5929203, -3878892, 8818642, 172336, 5040681, 2350958, 726386,
-1392643, -657130, -178241, 4220879, -1396938, -1017907, 1402307, -794032, 708133, -1957968,
--1136556, 929324, -235686, 1026497, -252329, 584652, 1623498, 1097364, 1519345, -41876,
-1065689, -284005, 1556926, 1628330, 2757369, 1656247, 2194192, 459562, 1473174, 1189706,
-923418, 1239635, 1823214, -870268, 166430, -408559, -739271, 686121, 1088774, -2210835,
--8369818, -19458886, -1811403, 1348083, 212601, -6308770, -2788508, -7159711, -1839857, -8444443,
--9666898, -7558606, -1745904, -5006858, -10894185, -6820945, 2265595, 3374234, -3002719, 6560026,
-3638911, -2425583, 8099235, 1733556, 679679, 1301912, -11060078, -405338, 1855426, 4170950,
--3468186, -3081639, 6609418, 12836584, -9589051, 3456912, -2811593, -493921, -8449274, -743566,
--82678, -4313758, -5461588, -3974455, -4643934, -2477659, 2784213, 9426379, -4387846, 3537443,
-6382859, 5767604, -1931125, 656056, -2048163, -1825898, -8672613, -4296578, 4939213, -3128347,
-1083942, -2986076, 2498060, 1323387, -942745, -323196, -4037806, -3337190, 778463, -1200980,
-1801202, -10274099, -10858214, -1162862, -1573032, -4664335, -6979, 3458523, -5328444, -4105989,
--4540318, -7903277, 5614059, -563714, -1166084, 2159295, -289373, 1939178, 3712462, 1293322,
-2072859, 1185948, 2734284, -798327, 510027, 454193, 642635, 913217, -682363, -657130,
-177167, 854699, 1075352, -650688, 886911, -954020, -1832877, 1032940, 760746, -713501,
-2458332, 1124745, 191663, 963146, -1443646, -1566053, -387621, -817118, -633508, -12083890,
--2380486, -14550812, -3263638, -10307922, -1232119, 1946157, 2623688, 11195369, -6984154, 2507724,
-3020436, -6067178, -2742337, 9009768, 954020, -2624225, 1130113, -7409356, 6727530, -9495636,
--3139621, 4243965, 2635499, -981937, 1621887, -1869385, 3111704, -4047470, -7138773, 494458,
-3452617, 2834679, -5709086, 1590749, 6414534, -6589017, -8363375, 6673843, -5703717, 4360466,
--4105452, 2436857, -170188, -5925445, -7723425, -4746476, 2102387, -299574, 2883534, -4024921,
--3936338, -9848360, 5137855, -7056632, -3232500, 3847217, 8746701, -1125818, -1817845, -12894566,
--10168872, -3379603, -3626026, 4861903, -1377074, -7550016, -1213865, 408559, -4207458, -1024350,
--9032316, 6026376, 2335925, 7597261, 9264244, 4893579, 376883, 4045859, 8263517, -678605,
--1909650, -556198, -2531883, -8208220, 454193, 616865, 1766305, 4413079, -1794760, 983011,
--8590, -3222836, -1755031, 3015604, 2886755, 2745558, -2110440, 835371, 1133871, 1054415,
-1007170, 1214402, 391916, 2298344, 2267206, 1557463, -466004, 1065689, -394600, 915902,
-1634772, 593779, 656056, 51540, -571768, -500901, -38118, -1415192, -667867, 7177427,
-3761855, 20844014, 10084046, 13503914, -4178466, -513785, -225486, -20558398, 1077500, 8884140,
--4076461, -1584843, 703838, 12976170, -2200097, 7522635, -1541893, 7204808, 3948149, 8895414,
-12484396, 1617592, 8333847, -2571612, 7211787, -966905, 13360033, 7121593, -230318, 7614977,
-6134824, -2241973, 5855651, 3537443, 5055177, -3992709, -3216931, -10794327, -668941, 7665980,
-1465658, 981937, -2522757, -4034048, -3234110, -3556233, 18799608, -12091944, 4785668, 5719823,
-3230352, 1630477, -7232188, -9599252, -2469069, -1427540, -458488, -16636019, -8267812, -8551280,
-393526, -391916, 4930623, -545461, 4377646, 5897527, 10638097, 1956358, -2763812, 3583077,
--6728603, 1832340, -4941897, 1789391, 4100620, 2327336, 6764574, -4590247, -5236102, 24410984,
-3317862, 4423280, 3062312, 8278550, -5895380, -3044595, 5186173, -618475, -175557, 946503,
-1682554, 4771172, -2412698, -381715, 864899, 2738042, 589484, -2543695, 4594542, 151934,
--1138703, 84289, -583042, -2505577, -2373506, -1113470, -2636036, -32212, -1065689, 1101122,
-3267933, -336618, -382252, -3686693, -828929, 1776506, -464930, 186294, 274341, 2845416,
--1557463, -466541, 859530, 1049583, -3259880, 31934156, 3443490, 4751308, 3615826, -2004139,
--12931073, 8730058, 9251896, -5184563, 4067871, 4141959, -7735773, -1098975, 7636452, 4356708,
--13642427, 3469797, -3661997, -7016366, -73551, 4008815, 1182190, -140123, -156229, 5902359,
--1741609, 3326452, -10578504, 4279935, -981937, 4203163, 2537789, -1949915, 7742216, -10390600,
--4345970, -10260677, 9063992, 4230006, 14705431, 7208029, 96100, 3133716, -11668352, -97711,
-3599720, 3771518, 3750580, 792421, 2238752, -3122978, 3526705, 10470057, 14256070, 6104223,
--6247567, -3531537, -1277753, -2779381, 5421860, 7129109, -4759898, 4220342, 8058970, 2423972,
--10671920, -21437792, -10392747, 4311074, 9585830, -4035659, 3023657, -804770, -1757715, -68719,
-10009958, 1802813, -7853348, 13258027, 6230387, -15355582, 955093, -1839320, -4693326, -1713692,
--2078764, -1074, 5589363, 2250563, -3873524, -2189360, 3428458, 5739687, -2263985, 4371203,
-1416802, -3554086, -625455, 588947, 448287, -648003, 620623, -1748589, -974421, 1298154,
-687195, -1546188, -1359894, 133681, -748935, -2580739, 1976759, -874563, -1009317, 783295,
-3093450, -2885681, -4261145, 12885, -293132, -6749541, -783295, 1750199, 397821, -4048007,
--77846, -1455457, 1737314, 1032940, 2574296, 1761474, -19536196, 5826660, 9364102, -10545755,
-6846178, 11384885, -27827630, 5965710, 1265942, 6063420, -10331007, 15700253, -21937620, -254477,
--1496796, -1864553, -2176475, -6471442, -8239895, -1428614, 7974681, 745177, 304943, -4264366,
-5641440, -932008, -2629057, 4123169, 9829033, -6522445, 7116761, -1342714, 4360466, 2072322,
-6694244, 10049150, -2235531, 2595771, -12996034, -6627672, -2597918, -5027259, -11822971, 1219234,
--4232154, -7829189, 11576547, -10806138, -3460670, -5130876, -5683853, 7764227, -8764418, 4913980,
--2979097, 7980049, -4110821, 8745627, -11493869, -3371549, 1646046, 10604811, -18638010, -7151658,
-855235, -75162, -3177739, 7407208, -9579388, -19187230, 4320737, -16859894, 8686034, -6084358,
-237834, -17625472, -6673843, 18800682, 10881300, -14329622, -11703786, -10184978, 786516, 5616207,
--2282238, -6486475, 12492986, 4264903, -1960116, -2808909, -4413079, -1097364, 5029407, -4651450,
-5393405, -758599, -3379066, 502511, -2530810, 1741609, 4595078, -2772938, 2159295, 3040837,
-2494839, -558346, 5311801, -5015985, 5029944, -1541893, 4454418, -5811091, -2684892, 645856,
-605590, 5632313, 2201708, 3303904, -1727114, -3547106, 2173790, -6643778, -379031, -14475114,
--6213744, 18236432, 767189, -15037754, 14155138, -6626061, 937377, -15680926, 2406792, 6220187,
--13841069, -3376918, -12371116, -85362, 779537, -4165582, -3441343, 12073690, 1848447, -8175470,
-2041183, -17518634, 10519449, 16696148, -5409512, 6973417, 11832098, -883153, -2429878, 1458141,
-1427003, 6938520, 1172526, 1604707, 3630858, -9793599, -717260, -11258720, -11516418, -4719096,
-4824322, 6831683, -372588, -13546327, 2658048, 3551938, 6653978, 14482630, -14861124, 21734146,
--18035104, 794032, -3642669, -3125663, -8727374, -16727287, -22575422, -8754754, -2594160, 5744519,
--1722819, 932545, 3309809, -169114, 15881178, 7513509, -16314970, -2549600, -343597, 10398653,
--11279658, 745714, -22721988, 4247723, 17732846, -15868294, -6238440, 2238752, -184147, 4429722,
-24852828, 363462, -3292629, 1284732, 12647068, -8606041, 3377992, 4617090, -1891396, -930934,
--179852, -346282, 5622112, -1856500, -1307818, -4892505, 8192113, -1793149, 2401424, 810138,
-1430224, 2033130, 5952288, -4171487, -1082869, 6305549, -4604742, -6487548, 5319317, 238371,
-2587718, 3576634, 2011118, 6519761, -5106179, 3021510, 3597572, -2289218, 9235790, 3150896,
-5641977, 2048163, -5595269, -2064269, -966905, -999654, -1010391, -9310415, -18886044, 22574348,
-9644886, -11063299, 14656039, 14664092, 20829518, -7683697, -7190849, 15202037, -2234994, -3010235,
-5301601, 6758131, 2700998, 3231426, -20717312, -2202781, 66572, 170725, 1149441, -2346126,
-8792335, 17037598, 1731946, 1161252, -283468, 810675, 15703474, 4165045, -1098975, -3433290,
-4026532, 3466576, -2455111, 1795296, -8949638, -1876901, 13656922, -13553843, -6577206, -11690364,
-15258408, -13985487, 7012071, -5732708, 4493073, -3048353, 3624416, -11241003, 2576981, 16938814,
--11151346, 874026, -29584808, -1329829, -10451803, 785979, -27614492, -1238024, -1360968, -8535711,
--5935645, 22523882, -24197308, 4016331, -6545530, -9048422, 6501507, -8209293, -18906446, -13280576,
-1824824, 972273, 3890704, -9390946, -12737262, 7218767, 597537, 1386738, 8460012, -14141717,
-10557566, -10297184, -4838281, -4446902, 2492155, 329639, 2994129, -1861868, -3628711, 840740,
--2078227, 2930778, 6552510, 3792456, 2388539, 1814624, 1744294, 1695975, -751619, 7110319,
-1310502, -1429150, 5294084, 5431523, 1999844, -3110630, -365072, -4511327, 7075422, 2465311,
-5674189, -2881386, 5821828, 5176510, 7638600, 3714073, -2258616, -4110284, 6401112, 1232656,
-5521718, 1184337, 1419487, 1384590, 1574106, 18934900, 6665789, -2500745, 4099010, -9484898,
--9987410, -8194261, 18454400, -16483011, -20480552, 9823127, -19053548, 7082401, 762357, 5208722,
--8501351, -2048163, -10352482, -4393752, -7983271, 3871913, 9516037, 6554120, -15372225, 17921824,
-2207076, 6269042, 1672353, 8636105, -1816771, 8296266, 2071785, -3688840, 5328981, 1938641,
-7050189, 4834523, -11651709, 4705674, -3386582, 3307125, -2340220, -4349192, -3575024, -8198019,
-7691750, 8198019, 8606041, -1593970, 15709380, 18726058, 7533910, 2458332, 8540542, 19408958,
-9621800, 21172042, 13642964, 15783468, -16914118, -17068200, 3516505, -3462818, -4552129, 1333051,
--8501888, 7099581, 5352603, 3337727, 16161962, -3787624, -10386305, -8739722, -7669738, 1874753,
--3636227, -34615824, -15017890, -13474923, -4855461, -6999186, -3595425, -5254356, -9787157, 357019,
--5866926, -5662915, 2336999, -5681705, -1741609, -8732205, 558883, 448824, -1332514, -12441983,
-5182952, -43487, 648540, -9362492, 2886218, 3313031, 3670587, 1010928, 10924786, -7030325,
--2604898, 2203855, 1266479, -806380, 4556424, -4984310, -4133369, -921807, 7789997, -808528,
-5695664, 6361921, -1271847, -8043400, -7084549, -892279, 8137353, 595390, -5642514, 788127,
--1152662, -3939022, -2806761, -1271847, 576599, -6024229, -4969277, 15397458, 10457708, -33719788,
--24904904, -7755101, -325344, 11113765, -4636954, -790811, -26848378, 3801583, -14069776, 10042707,
--1969243, 13305272, -11425687, -2835752, -13557601, 2353105, 11004780, -5276368, 3183108, -7740605,
-536871, -18116708, -5076652, -865973, 1246077, 13448616, 17425756, 617938, -16125455, -11287711,
--5262946, 1660005, -4321811, 5123359, -18535468, -5715528, -2618856, -4776541, -10459856, -2415919,
--4877472, 12581570, 18131742, 12320651, 4387846, 7535520, 7530689, -8770323, 30346092, 18496276,
--24145770, -20752746, 22252762, -17571784, -10292889, 3481071, 2336999, -17054242, 16409996, 1111860,
--51740936, 13845901, 32219770, -22373558, 22145926, 29894046, -10120017, -3055869, 15768436, -18604724,
--12537010, 6260989, -10348187, -11621108, 13332652, -22580254, -7085623, 2944737, 308164, 1323387,
--2398202, 8326868, -6146098, 3580392, 991601, -5973763, 11740293, 6150393, -629213, -7604240,
-8997420, -5770289, 6885370, -6145562, 8426189, 927176, 1547262, 8812199, -7063074, -7621957,
-2050310, -7031399, -4602595, -315680, 493384, -4678830, -8723615, 4024384, -20127828, -537,
-8876087, -7326678, 5113159, -2243584, 2428804, -8318815, -82678, 4556961, -4181151, 2983392,
-17542258, -7943005, -7765838, 17537426, -12981539, -2133525, 14445586, -10521059, -6655052, 11059004,
-6828998, 7252589, -1789391, -10857140, -8667781, 10208064, -8152385, -775778, 3042448, -15352897,
-9979893, 8121783, -6207302, -5050882, -11969537, 289373, -7406134, 10311143, -16807818, 1243393,
-6440304, -933082, -7998303, -17460652, -3923453, -7621420, -1699196, -13524315, 18379238, -17999672,
-3138011, -6575595, 4616553, -25475598, 26200374, 4932233, 2611877, -10539313, 5966247, 4216048,
-1136019, 2328409, -4691715, -20120848, -3489661, -8745090, -12881144, -17299054, -6236830, -4409321,
--17141752, -6621229, -820339, 11768210, 5433134, -15575162, -13575318, 8279087, -3585761, -19756312,
--8521752, 4762045, 16168941, 16025060, 16334297, 26052734, -5062693, -17801566, -16977468, -1158567,
-11434277, 20267414, 9102646, 4285841, -20806970, 11594801, 4298189, 19759534, 13734769, 8899172,
-6743099, -96637, 1700270, 11581916, -2842195, 709207, 1999307, 3263638, 3943854, 3641059,
-5569499, 13906567, 4332549, 889058, 4742718, -483721, 4414690, 1144609, 736050, 8556112,
--10678899, -7692824, -2901787, 3760781, -5463199, 3287798, -2450279, 10778220, 295816, 1622961,
--5850283, -7342247, 498216, 6170258, -6165426, -919123, 7287486, -6365679, -490700, 3224447,
--10759967, 12696460, 6824703, -2592013, 2962454, -780610, -286152, -3422015, 7191923, 12145631,
-32870996, -28993176, -838056, -11569031, -15337328, -9206799, 15042586, -8256001, -8928163, 7676717,
-19372450, 12160663, -14533632, 9360881, -15250355, 11184632, 636729, -1754494, -7370164, -11418171,
--9160092, 1890323, 2108292, -18037788, 11442867, 1845225, -1599339, -6875706, -7609609, 12739410,
--17438640, -870268, 19044422, 22307524, -20000052, -1387811, -3941169, -13027710, -16741246, 18312130,
-4227859, 11622182, -3549254, 1374390, -1532230, 11569031, -4469987, 574452, -14333916, 20588462,
-17279728, -25224880, -30697742, -6579353, 441845, -10186052, 1110249, -7586523, 2438468, -15677704,
-16642461, -20139638, -17493938, -6623377, 3002182, 13792214, -7134478, 20013474, 2229625, -7237557,
--6745246, -5337034, -12515535, 12167105, 9268539, -3393024, 7864085, 6000070, -9753334, -9957882,
--8238284, 15493558, 4270808, -11207717, 1642288, 4318590, 5476620, -16680579, 8797167, 6565395,
-3464965, -244276, -4318590, 2142652, -4748087, -14849313, 3445638, -2037425, -2291902, -1801739,
-1859721, -4551055, -5234492, -378494, -1627793, 7313793, -3508988, -2121714, 4706211, -2044941,
--6513318, 5762773, -6483790, -2332167, -11624329, 6399502, 1771674, -1787780, 2639258, -5483600,
-11263015, -741419, 2350421, 12093017, 9239012, -3418794, -3415573, 5799280, 3830574, -4210142,
-2910377, -3862786, -2947421, -771484, 3321084, -44487808, 65910032, -45283988, -11583527, 11925514,
-35582732, 28926604, -10704132, -11583527, 1859184, 1651952, 18330384, 6769406, -24335284, 7292855,
--5297842, -8535174, 2335389, 9943386, -191663, -18210662, -16117939, 8503498, 6881612, 11260867,
--6225555, 13939316, 3180423, 16348793, -1767916, -5570036, 12022687, -1457068, -13005698, 2261300,
-14944876, -635655, -17224430, 8521752, 19888382, -18391586, 7182259, -19756312, 7741142, -24966108,
--16401406, 27518930, 25563646, 12066174, 33314988, -6398428, 39786968, 14841259, 15288473, 21437256,
--36197984, 30474404, 10312753, 12344273, 13968307, 3391951, -17719424, 2906619, 33554968, 38358352,
--551366, -43346420, 21227338, 1219234, 8972724, -1454920, 925029, -9401683, -32810866, 6657736,
--5544803, 7425999, -6208375, 16258599, -18500572, -19649476, -13990319, 2934537, -6103686, -8795556,
-10425496, 4240207, -14249091, -14860050, -11952894, -8704825, -1721745, -2237678, 7649874, -96637,
--12250320, 9693741, 1730335, -2846490, 360777, 4863514, -6206228, -2809446, 5822365, -10435160,
--4696010, -7067369, 6026913, 8005819, -9100499, 2896419, -24083492, 752156, 973347, 1609539,
--4870493, -4161287, -10986526, -7761006, 5260261, 3884798, 5032628, 8742406, -8174397, 1064615,
-3016678, 2564096, -8021389, 498216, 1724966, 194884, -6631430, -440234, 43660492, -1674500,
--51773684, -26273388, -30448096, -11724187, 346282, 17040282, -44117368, -9965935, 7031935, -20669530,
--23643794, -21674016, -23603530, -3889093, 26223996, 13351980, -10283225, 12484933, 5230734, -12058121,
-13569412, -15212237, -3270618, 6221260, 9006010, -30137786, 15174656, -14877230, 8682813, -6011344,
--24058796, 6598681, 7574175, 3619584, 4041564, -10140955, -34187404, 1265942, 7143605, 7333657,
-410169, 4139275, -14158897, -309238, -1153736, 30964566, -4732517, -51310900, -23064512, -5712844,
--42456824, 9519258, -12943958, -11011759, -20448876, -9341554, -30565134, -30165166, -36766532, -3841848,
-38754564, 5135707, -24492052, 11098195, 355409, -2915209, -13776108, -19579146, 8142185, 15740518,
-12146704, 6382322, -7341710, -31598074, -22388590, -31814970, 4636954, 3216931, -1117228, 10981695,
--16655346, -20382842, -2858301, -7743826, -20583094, 4176856, 11811160, 1312649, 4302484, 19429896,
--3593277, -4456566, -3418257, 927713, -7132867, -4320200, 8786966, 13111998, 14717242, 9539122,
--4140349, 244276, 2247879, -6601902, 13612899, -6046777, 19889456, -7474854, 9298067, -9989557,
--2728915, 19783156, 6640020, 2288144, -181462, -8433705, 7893076, 1226213, -9955197, 3942243,
--8535711, -11383811, 3039226, 2703145, -6805913, -7073275, 6805376, -194347, 9606768, 1519882,
-6505802, -4193499, 2804077, 2143726, 28492276, -3134253, 22783190, 29993904, -25400974, -31233002,
--33435246, 8996883, 11348377, -45185204, -26546656, 1204738, 1027034, 13995688, -53173844, 5957120,
-11950747, 36988260, -42651172, 5324686, 6670621, -4973036, 23090282, -13143674, 40672804, -1939715,
-3330747, 12664785, 15627775, -15161771, -33355252, 19593104, 23075786, 5706401, 29271812, 6057515,
--4033511, -10725607, -25273198, 39018168, -17585744, 37000068, 14210973, -2375654, 10579041, -15164456,
-19557134, 19945828, -13947369, 14927159, 7181186, -38088308, 27761594, 28876676, -3850975, -19238232,
-3466576, -576063, 1007707, -6541235, 52697100, -600222, -30955440, -16820166, 5775658, -43937516,
--58299348, 8358007, 72428184, 16472810, -5347771, -45977624, -11989401, -7276212, 49299784, -33428804,
--21903796, -81117976, -12016245, -14475114, -19416474, -14832670, 29773788, 32474784, -32077500, -11895986,
-10327249, 4932233, -6018323, 13652627, -5792837, -9546639, -10212895, 11859478, 4342212, 4226785,
--4235912, 11661910, -11633456, -3316252, 9618579, 5111011, -816581, 163209, -8715562, 4767951,
--5835250, 21785148, -5944235, -10838887, -9580461, -17416630, -6291590, 14646375, 15615964, 43717936,
-16223702, -4153234, -32942400, -44612900, -21376590, 1448478, 18425410, 15804406, -12229383, -17253420,
--9297530, -6571300, 11128797, 20369956, 4200478, 1975685, -2561948, -6069326, -6003828, -72405096,
-21020644, 35044248, -46631532, -3986267, 26137560, -11042898, -20983062, 18959060, -20246476, -10854456,
-1534914, -14998563, 24581708, -8058970, -11237245, -4058207, 12984223, 44719736, -6937446, -20252382,
--22891102, 8486319, 21253646, 12956306, -20234664, -2943663, 24188718, 895501, -18343806, 6318434,
--16376173, 41375568, -18626200, -44332116, 15363098, -7260642, 21240760, -29622390, -29407104, 29727080,
--2412698, -37983080, -20357608, -36282272, 47240884, 23035520, 12704513, -49579492, 8804683, 20799452,
--34988416, 2297808, -25154012, -18785650, 19448148, -16677358, 22323630, -13734769, -30419642, -6607271,
--7594039, -4246649, 10355166, 3885335, -19044422, 59170152, -7350837, 26392574, 26679264, 16578574,
--8144332, 6471979, -13501767, 33399814, 8027831, -8089571, 3817152, 14345728, 22842246, -5449240,
--50164680, -3126199, 15417859, -4705674, 26228292, -10921565, 8924405, -3754338, 491774, 11142219,
-2430415, 6884296, 13262322, 8244190, 15425375, -3502009, 4857071, 8525510, 852551, -15822660,
-19016504, -7752953, -130997, 3215320, -9880572, 5187784, 732292, -2335389, 13128104, -5828271,
-714038, 19566798, -480499, 10988674, -9745818, -5898601, 10154913, -2259690, -7495792, -9943923,
-223875, 1555315, 2112050, -3216931, 2162516, 6194954, -2508798, 52382496, 10928007, 22605486,
--1787243, 5345624, 8466454, -19258096, 8559333, 18182744, 324270, -22136798, -11613055, -16463683,
--6534793, -22185654, -21120502, 2501282, -16804596, 24718610, 8207146, -5958731, -17864380, -8804683,
--5774047, 13240310, -3983045, -20992190, -17041894, 4192962, 4631586, 11774116, 4689568, -4764730,
-5705864, -18329310, -55143084, 2139968, 67267776, -2141578, -48619028, -8103530, 32105954, 8719320,
-5382131, -1079111, -21020106, -26584236, -15620259, 5834176, -1446867, -24604258, 9199283, -49304076,
--8607651, 45316736, 13576392, 58346056, -7508677, -23278186, -6780680, -5337034, 15867757, 3224984,
--239444, -32105954, -15857556, -15451682, -1950989, 36863168, -4774930, -9246528, 12399034, 14820858,
-2614561, -19905562, -30562450, -2413772, 12688407, -1558536, -15056545, -4103305, 8825621, -6666863,
--5522791, -10268730, 18811420, 19423990, -9629317, -5361730, -8826695, 7784092, 11809013, -5560909,
-1912871, -2252174, -1371168, -3862786, -14472429, 1422708, 8650064, -9120363, 2450816, -2345589,
-914291, -8186745, -2437394, -3560528, -4984847, -6259915, -5970542, -1966558, 26540214, -13244069,
-415001, -5334887, 1706176, 14345728, -9557376, -1572495, -2547453, 4392141, -413927, 3980361,
--7275675, -23177254, -77510736, -119378616, 28063854, 107094472, 33621004, 261784160, 246326576, 109751448,
-253993632, 107470816, -46210628, -639950, -76565848, -208953920, -114287472, -109355776, -214424624, -155889056,
--89741192, -134854464, -90902984, 19876572, -8020315, -43067248, 51022600, 47952236, -354872, 51397872,
-139037216, 58558656, 26063472, 133361416, 119061328, 40173512, 141861696, 173888736, -437013, 103062032,
-175019920, 66469988, 69870528, 178709296, 106525928, -14016626, 139211696, 97948880, -38175280, 54832772,
-110692048, -49526880, -88164944, -19764366, -186136896, -312066944, -302403808, -335934080, -537761024, -465206176,
--384055968, -497368480, -426716800, -273993152, -325097888, -248219040, -68926712, -22103512, 104955040, 195820448,
-322470976, 432388864, 471352256, 550111232, 597182976, 558135296, 528369024, 560839488, 426398976, 338322080,
-401059744, 218930048, 34744136, 50596324, -81301048, -296434880, -249188640, -184152624, -266078592, -271801088,
--169854688, -193007248, -243695904, -178406496, -162540352, -228993168, -205757920, -134005664, -170757168, -183092304,
--60250876, -57679264, -108396384, -11425150, 40776420, -31009128, 5458367, 40754944, -58700928, -75530224,
--72015864, -157022400, -173702432, -121460064, -91613800, -66606352, 22042310, 106140456, 144018304, 204564464,
-261873280, 273772480, 290104640, 321181952, 304293056, 276854656, 288044128, 261059920, 193701952, 132891120,
-34321084, -52053928, -133230424, -193299296, -216880272, -228179264, -204051744, -156315872, -137408896, -115732192,
--95217816, -82114408, -72873248, -54766200, -43184284, -39674760, -39241504, -27759984, -21966610, -17820894,
--8230768, 5494874, 16648367, 31831614, 31901406, 30655330, 27302034, 17678086, 6714645, 3770981,
-200253, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+6451578, -3213709, 1780801, -667331, 367220, 302258, -2611877, -2961380, 1931125, -542240,
+-2381559, -3036542, -1876364, 2673617, -286152, 3588982, 747324, -4556424, -4711579, -3341485,
+1365263, 1162326, 2431488, -365609, 2783676, -2135136, -402653, -4927401, -765578, -919660,
+1008780, 1852742, 1851668, 3637837, -1819992, -2436857, 1960116, 1110249, -2383707, -2423435,
+104690, 1692217, 802085, 4039417, -1546725, -1280974, 4569309, 1399623, 8574365, 3648575,
+-2420214, -82678, -5295695, 98784, -6034966, -397284, -2265059, 4161823, 427349, 2233920,
+3036542, 1649804, 2910914, 1944547, 402653, -5053566, -574452, -2532957, 3471407, 5085778,
+-3579855, -2539400, -1546725, -2058900, -2705293, -4332549, -996969, 1299228, -2566780, -2111513,
+-912681, -3561602, 400506, -716186, -2417530, 768262, 115427, -13959, -1196685, 212601,
+210990, 1324461, -380641, 854699, -452582, 618475, -184684, -799938, 205622, 1040993,
+163209, -933082, -973347, -98247, 1760937, 411780, -356482, 286152, -534187, -10131828,
+-10831371, -860604, -3106335, 417149, -2350421, -638340, 6026913, -1077500, 3240016, -1489280,
+-2896956, -4003983, 735513, -827855, -4782446, 5513128, 1656247, 379031, 2938831, 2804077,
+4545686, 3202435, -301721, -3382287, 3157875, 736050, -4559645, -2014340, -2056216, -1365800,
+4075924, -1395864, -6953552, -2354716, -795106, 1452236, -2161442, -4524211, 147640, -441308,
+5255966, 779000, -42413, 1920387, -120796, 7092065, -1223529, 652835, -1567663, -2813741,
+2684, 3045669, 1377074, 831076, 2878165, -2640331, -4400194, -3147137, -633508, 579284,
+-1026497, 126165, -3302830, -731218, 1730872, -1053341, 3445101, 1797981, -194347, 639413,
+-3230352, -2750927, 5346161, 1214939, 2277407, 1551020, -950262, -314069, -4060355, 286689,
+-2319819, 996969, -790811, 1034013, 1102196, 3143916, -326418, -1098975, 185757, 673773,
+421444, 112743, 111669, -947040, -744640, 381715, -341450, -816044, 1278290, -646393,
+657130, 972273, -919660, -274341, 736050, -277562, 1319092, -792958, 655519, -631897,
+-458488, -1647657, 1516660, 7004555, -387621, 3594351, 2110977, 4793184, 5873368, -1335198,
+477815, 3622268, 3569655, 2395518, 6719477, 1369021, -2206540, 297963, 5877126, 2076617,
+2770254, 5108864, 6852621, 4533875, -1569274, -4698158, 3296924, 2260764, -2734821, -4538170,
+230318, -2648921, 1192390, 1742683, -1677722, -2263985, 2262374, 1807108, 4031364, -2710661,
+-5551245, -2771865, -2418604, -3684545, -1306744, -4209068, 2491081, -5762236, 2443300, 490700,
+1298154, -2563022, 5466957, 4195646, -3928821, 4833986, 1778117, -716723, 1551557, -3506304,
+-1162862, 3304441, 1131187, 1383516, 820876, 3946538, 1553704, 4879620, -2444373, -296890,
+-366146, 1892470, 2777233, -1129576, 1830193, -2565706, 1244467, 1712081, 1489817, 5353677,
+144955, 3994320, 4425427, 2511482, -4135517, -787053, -692027, -1071058, 307627, 2266132,
+-998580, 67109, -226560, 256087, 766115, -670015, 909996, 1560684, -1153736, -588411,
+1428614, 48318, -45634, -79994, -908386, 367757, -472983, 118112, 1090922, 1879048,
+19864, -260382, 888521, 723702, 236223, 432181, 300648, 456877, -133681, -266288,
+773631, 1016834, -1009854, 532039, -405338, 19370302, 161598, 17151416, 1381369, 10863046,
+-2330557, -1870458, 2977486, -8108899, 8868571, -5040681, 5951751, 4385162, -3237869, 2588255,
+-229781, 328565, -1489817, 2465311, 3513283, 4343286, 7173133, 1744831, 2298344, -281857,
+8435853, -9675488, 250719, -744103, 2337536, 4100083, -5071283, 1941862, 2315524, 1175747,
+3387656, 1816234, -3907347, 1862942, 7557532, -1422171, 2327872, -1282585, -1149978, -372588,
+-5389110, 8331700, -105227, 797253, 6265821, -893890, 507880, 7722888, -11331197, 3096672,
+-185220, 3375844, 9220758, 2719251, 2251637, 3160022, -965831, -2597918, -1707786, 2217277,
+871878, 4904316, -1751273, 4023848, 1927367, -1418950, 869731, -3281355, -2067490, 392453,
+-912681, -4517769, -2806224, -4621922, 2753074, 4002910, -1047972, 1202054, -905701, -3090766,
+-82678, 1627256, 1735704, -5509906, -176094, 457951, -787590, 256087, -1071058, 58519,
+-1153736, -2682207, 5369, -1793686, -1343788, -2226404, 154619, -2178622, -598074, -2114735,
+-1506997, -119185, -682363, -1150514, -52076, 224949, 1065689, -1157494, -7730405, -9527311,
+-3762928, -1442035, -3550327, 7602092, 3266860, -6092411, 6789807, -963683, -4930086, 1461363,
+2964064, -2767570, -4504884, -4084514, -8576513, -4351339, 3720516, -5461051, -8709120, 2442226,
+3541201, 683974, -3196530, 6517076, 819802, 6024229, -366683, -1410897, 3463891, 5705327,
+-8130910, -3900904, 2231773, -1848447, 2007897, -5349382, -375273, 1410897, 1941862, -4570919,
+-8257612, -2355790, 2426657, -1428077, -1029182, 473520, 2687039, -848256, 1497870, -2818036,
+4810900, -6328098, -4694400, -1679332, -4598300, -1416266, -1232119, 1803886, -3369402, 2522220,
+5223217, -486942, 1238561, 1367410, 2514703, 5049808, -1918240, -1014686, -948114, -2149631,
+5311801, -2193655, -9204652, -5929203, -3878892, 8818642, 172336, 5040681, 2350958, 726386,
+1392643, -657130, -178241, 4220879, -1396938, -1017907, 1402307, -794032, 708133, -1957968,
+-1136556, 929324, -235686, 1026497, -252329, 584652, 1623498, 1097364, 1519345, -41876,
+1065689, -284005, 1556926, 1628330, 2757369, 1656247, 2194192, 459562, 1473174, 1189706,
+923418, 1239635, 1823214, -870268, 166430, -408559, -739271, 686121, 1088774, -2210835,
+-8369818, -19458886, -1811403, 1348083, 212601, -6308770, -2788508, -7159711, -1839857, -8444443,
+-9666898, -7558606, -1745904, -5006858, -10894185, -6820945, 2265595, 3374234, -3002719, 6560026,
+3638911, -2425583, 8099235, 1733556, 679679, 1301912, -11060078, -405338, 1855426, 4170950,
+-3468186, -3081639, 6609418, 12836584, -9589051, 3456912, -2811593, -493921, -8449274, -743566,
+-82678, -4313758, -5461588, -3974455, -4643934, -2477659, 2784213, 9426379, -4387846, 3537443,
+6382859, 5767604, -1931125, 656056, -2048163, -1825898, -8672613, -4296578, 4939213, -3128347,
+1083942, -2986076, 2498060, 1323387, -942745, -323196, -4037806, -3337190, 778463, -1200980,
+1801202, -10274099, -10858214, -1162862, -1573032, -4664335, -6979, 3458523, -5328444, -4105989,
+-4540318, -7903277, 5614059, -563714, -1166084, 2159295, -289373, 1939178, 3712462, 1293322,
+2072859, 1185948, 2734284, -798327, 510027, 454193, 642635, 913217, -682363, -657130,
+177167, 854699, 1075352, -650688, 886911, -954020, -1832877, 1032940, 760746, -713501,
+2458332, 1124745, 191663, 963146, -1443646, -1566053, -387621, -817118, -633508, -12083890,
+-2380486, -14550812, -3263638, -10307922, -1232119, 1946157, 2623688, 11195369, -6984154, 2507724,
+3020436, -6067178, -2742337, 9009768, 954020, -2624225, 1130113, -7409356, 6727530, -9495636,
+-3139621, 4243965, 2635499, -981937, 1621887, -1869385, 3111704, -4047470, -7138773, 494458,
+3452617, 2834679, -5709086, 1590749, 6414534, -6589017, -8363375, 6673843, -5703717, 4360466,
+-4105452, 2436857, -170188, -5925445, -7723425, -4746476, 2102387, -299574, 2883534, -4024921,
+-3936338, -9848360, 5137855, -7056632, -3232500, 3847217, 8746701, -1125818, -1817845, -12894566,
+-10168872, -3379603, -3626026, 4861903, -1377074, -7550016, -1213865, 408559, -4207458, -1024350,
+-9032316, 6026376, 2335925, 7597261, 9264244, 4893579, 376883, 4045859, 8263517, -678605,
+-1909650, -556198, -2531883, -8208220, 454193, 616865, 1766305, 4413079, -1794760, 983011,
+-8590, -3222836, -1755031, 3015604, 2886755, 2745558, -2110440, 835371, 1133871, 1054415,
+1007170, 1214402, 391916, 2298344, 2267206, 1557463, -466004, 1065689, -394600, 915902,
+1634772, 593779, 656056, 51540, -571768, -500901, -38118, -1415192, -667867, 7177427,
+3761855, 20844014, 10084046, 13503914, -4178466, -513785, -225486, -20558398, 1077500, 8884140,
+-4076461, -1584843, 703838, 12976170, -2200097, 7522635, -1541893, 7204808, 3948149, 8895414,
+12484396, 1617592, 8333847, -2571612, 7211787, -966905, 13360033, 7121593, -230318, 7614977,
+6134824, -2241973, 5855651, 3537443, 5055177, -3992709, -3216931, -10794327, -668941, 7665980,
+1465658, 981937, -2522757, -4034048, -3234110, -3556233, 18799608, -12091944, 4785668, 5719823,
+3230352, 1630477, -7232188, -9599252, -2469069, -1427540, -458488, -16636019, -8267812, -8551280,
+393526, -391916, 4930623, -545461, 4377646, 5897527, 10638097, 1956358, -2763812, 3583077,
+-6728603, 1832340, -4941897, 1789391, 4100620, 2327336, 6764574, -4590247, -5236102, 24410984,
+3317862, 4423280, 3062312, 8278550, -5895380, -3044595, 5186173, -618475, -175557, 946503,
+1682554, 4771172, -2412698, -381715, 864899, 2738042, 589484, -2543695, 4594542, 151934,
+-1138703, 84289, -583042, -2505577, -2373506, -1113470, -2636036, -32212, -1065689, 1101122,
+3267933, -336618, -382252, -3686693, -828929, 1776506, -464930, 186294, 274341, 2845416,
+-1557463, -466541, 859530, 1049583, -3259880, 31934156, 3443490, 4751308, 3615826, -2004139,
+-12931073, 8730058, 9251896, -5184563, 4067871, 4141959, -7735773, -1098975, 7636452, 4356708,
+-13642427, 3469797, -3661997, -7016366, -73551, 4008815, 1182190, -140123, -156229, 5902359,
+-1741609, 3326452, -10578504, 4279935, -981937, 4203163, 2537789, -1949915, 7742216, -10390600,
+-4345970, -10260677, 9063992, 4230006, 14705431, 7208029, 96100, 3133716, -11668352, -97711,
+3599720, 3771518, 3750580, 792421, 2238752, -3122978, 3526705, 10470057, 14256070, 6104223,
+-6247567, -3531537, -1277753, -2779381, 5421860, 7129109, -4759898, 4220342, 8058970, 2423972,
+-10671920, -21437792, -10392747, 4311074, 9585830, -4035659, 3023657, -804770, -1757715, -68719,
+10009958, 1802813, -7853348, 13258027, 6230387, -15355582, 955093, -1839320, -4693326, -1713692,
+-2078764, -1074, 5589363, 2250563, -3873524, -2189360, 3428458, 5739687, -2263985, 4371203,
+1416802, -3554086, -625455, 588947, 448287, -648003, 620623, -1748589, -974421, 1298154,
+687195, -1546188, -1359894, 133681, -748935, -2580739, 1976759, -874563, -1009317, 783295,
+3093450, -2885681, -4261145, 12885, -293132, -6749541, -783295, 1750199, 397821, -4048007,
+-77846, -1455457, 1737314, 1032940, 2574296, 1761474, -19536196, 5826660, 9364102, -10545755,
+6846178, 11384885, -27827630, 5965710, 1265942, 6063420, -10331007, 15700253, -21937620, -254477,
+-1496796, -1864553, -2176475, -6471442, -8239895, -1428614, 7974681, 745177, 304943, -4264366,
+5641440, -932008, -2629057, 4123169, 9829033, -6522445, 7116761, -1342714, 4360466, 2072322,
+6694244, 10049150, -2235531, 2595771, -12996034, -6627672, -2597918, -5027259, -11822971, 1219234,
+-4232154, -7829189, 11576547, -10806138, -3460670, -5130876, -5683853, 7764227, -8764418, 4913980,
+-2979097, 7980049, -4110821, 8745627, -11493869, -3371549, 1646046, 10604811, -18638010, -7151658,
+855235, -75162, -3177739, 7407208, -9579388, -19187230, 4320737, -16859894, 8686034, -6084358,
+237834, -17625472, -6673843, 18800682, 10881300, -14329622, -11703786, -10184978, 786516, 5616207,
+-2282238, -6486475, 12492986, 4264903, -1960116, -2808909, -4413079, -1097364, 5029407, -4651450,
+5393405, -758599, -3379066, 502511, -2530810, 1741609, 4595078, -2772938, 2159295, 3040837,
+2494839, -558346, 5311801, -5015985, 5029944, -1541893, 4454418, -5811091, -2684892, 645856,
+605590, 5632313, 2201708, 3303904, -1727114, -3547106, 2173790, -6643778, -379031, -14475114,
+-6213744, 18236432, 767189, -15037754, 14155138, -6626061, 937377, -15680926, 2406792, 6220187,
+-13841069, -3376918, -12371116, -85362, 779537, -4165582, -3441343, 12073690, 1848447, -8175470,
+2041183, -17518634, 10519449, 16696148, -5409512, 6973417, 11832098, -883153, -2429878, 1458141,
+1427003, 6938520, 1172526, 1604707, 3630858, -9793599, -717260, -11258720, -11516418, -4719096,
+4824322, 6831683, -372588, -13546327, 2658048, 3551938, 6653978, 14482630, -14861124, 21734146,
+-18035104, 794032, -3642669, -3125663, -8727374, -16727287, -22575422, -8754754, -2594160, 5744519,
+-1722819, 932545, 3309809, -169114, 15881178, 7513509, -16314970, -2549600, -343597, 10398653,
+-11279658, 745714, -22721988, 4247723, 17732846, -15868294, -6238440, 2238752, -184147, 4429722,
+24852828, 363462, -3292629, 1284732, 12647068, -8606041, 3377992, 4617090, -1891396, -930934,
+-179852, -346282, 5622112, -1856500, -1307818, -4892505, 8192113, -1793149, 2401424, 810138,
+1430224, 2033130, 5952288, -4171487, -1082869, 6305549, -4604742, -6487548, 5319317, 238371,
+2587718, 3576634, 2011118, 6519761, -5106179, 3021510, 3597572, -2289218, 9235790, 3150896,
+5641977, 2048163, -5595269, -2064269, -966905, -999654, -1010391, -9310415, -18886044, 22574348,
+9644886, -11063299, 14656039, 14664092, 20829518, -7683697, -7190849, 15202037, -2234994, -3010235,
+5301601, 6758131, 2700998, 3231426, -20717312, -2202781, 66572, 170725, 1149441, -2346126,
+8792335, 17037598, 1731946, 1161252, -283468, 810675, 15703474, 4165045, -1098975, -3433290,
+4026532, 3466576, -2455111, 1795296, -8949638, -1876901, 13656922, -13553843, -6577206, -11690364,
+15258408, -13985487, 7012071, -5732708, 4493073, -3048353, 3624416, -11241003, 2576981, 16938814,
+-11151346, 874026, -29584808, -1329829, -10451803, 785979, -27614492, -1238024, -1360968, -8535711,
+-5935645, 22523882, -24197308, 4016331, -6545530, -9048422, 6501507, -8209293, -18906446, -13280576,
+1824824, 972273, 3890704, -9390946, -12737262, 7218767, 597537, 1386738, 8460012, -14141717,
+10557566, -10297184, -4838281, -4446902, 2492155, 329639, 2994129, -1861868, -3628711, 840740,
+-2078227, 2930778, 6552510, 3792456, 2388539, 1814624, 1744294, 1695975, -751619, 7110319,
+1310502, -1429150, 5294084, 5431523, 1999844, -3110630, -365072, -4511327, 7075422, 2465311,
+5674189, -2881386, 5821828, 5176510, 7638600, 3714073, -2258616, -4110284, 6401112, 1232656,
+5521718, 1184337, 1419487, 1384590, 1574106, 18934900, 6665789, -2500745, 4099010, -9484898,
+-9987410, -8194261, 18454400, -16483011, -20480552, 9823127, -19053548, 7082401, 762357, 5208722,
+-8501351, -2048163, -10352482, -4393752, -7983271, 3871913, 9516037, 6554120, -15372225, 17921824,
+2207076, 6269042, 1672353, 8636105, -1816771, 8296266, 2071785, -3688840, 5328981, 1938641,
+7050189, 4834523, -11651709, 4705674, -3386582, 3307125, -2340220, -4349192, -3575024, -8198019,
+7691750, 8198019, 8606041, -1593970, 15709380, 18726058, 7533910, 2458332, 8540542, 19408958,
+9621800, 21172042, 13642964, 15783468, -16914118, -17068200, 3516505, -3462818, -4552129, 1333051,
+-8501888, 7099581, 5352603, 3337727, 16161962, -3787624, -10386305, -8739722, -7669738, 1874753,
+-3636227, -34615824, -15017890, -13474923, -4855461, -6999186, -3595425, -5254356, -9787157, 357019,
+-5866926, -5662915, 2336999, -5681705, -1741609, -8732205, 558883, 448824, -1332514, -12441983,
+5182952, -43487, 648540, -9362492, 2886218, 3313031, 3670587, 1010928, 10924786, -7030325,
+-2604898, 2203855, 1266479, -806380, 4556424, -4984310, -4133369, -921807, 7789997, -808528,
+5695664, 6361921, -1271847, -8043400, -7084549, -892279, 8137353, 595390, -5642514, 788127,
+-1152662, -3939022, -2806761, -1271847, 576599, -6024229, -4969277, 15397458, 10457708, -33719788,
+-24904904, -7755101, -325344, 11113765, -4636954, -790811, -26848378, 3801583, -14069776, 10042707,
+-1969243, 13305272, -11425687, -2835752, -13557601, 2353105, 11004780, -5276368, 3183108, -7740605,
+536871, -18116708, -5076652, -865973, 1246077, 13448616, 17425756, 617938, -16125455, -11287711,
+-5262946, 1660005, -4321811, 5123359, -18535468, -5715528, -2618856, -4776541, -10459856, -2415919,
+-4877472, 12581570, 18131742, 12320651, 4387846, 7535520, 7530689, -8770323, 30346092, 18496276,
+-24145770, -20752746, 22252762, -17571784, -10292889, 3481071, 2336999, -17054242, 16409996, 1111860,
+-51740936, 13845901, 32219770, -22373558, 22145926, 29894046, -10120017, -3055869, 15768436, -18604724,
+-12537010, 6260989, -10348187, -11621108, 13332652, -22580254, -7085623, 2944737, 308164, 1323387,
+-2398202, 8326868, -6146098, 3580392, 991601, -5973763, 11740293, 6150393, -629213, -7604240,
+8997420, -5770289, 6885370, -6145562, 8426189, 927176, 1547262, 8812199, -7063074, -7621957,
+2050310, -7031399, -4602595, -315680, 493384, -4678830, -8723615, 4024384, -20127828, -537,
+8876087, -7326678, 5113159, -2243584, 2428804, -8318815, -82678, 4556961, -4181151, 2983392,
+17542258, -7943005, -7765838, 17537426, -12981539, -2133525, 14445586, -10521059, -6655052, 11059004,
+6828998, 7252589, -1789391, -10857140, -8667781, 10208064, -8152385, -775778, 3042448, -15352897,
+9979893, 8121783, -6207302, -5050882, -11969537, 289373, -7406134, 10311143, -16807818, 1243393,
+6440304, -933082, -7998303, -17460652, -3923453, -7621420, -1699196, -13524315, 18379238, -17999672,
+3138011, -6575595, 4616553, -25475598, 26200374, 4932233, 2611877, -10539313, 5966247, 4216048,
+1136019, 2328409, -4691715, -20120848, -3489661, -8745090, -12881144, -17299054, -6236830, -4409321,
+-17141752, -6621229, -820339, 11768210, 5433134, -15575162, -13575318, 8279087, -3585761, -19756312,
+-8521752, 4762045, 16168941, 16025060, 16334297, 26052734, -5062693, -17801566, -16977468, -1158567,
+11434277, 20267414, 9102646, 4285841, -20806970, 11594801, 4298189, 19759534, 13734769, 8899172,
+6743099, -96637, 1700270, 11581916, -2842195, 709207, 1999307, 3263638, 3943854, 3641059,
+5569499, 13906567, 4332549, 889058, 4742718, -483721, 4414690, 1144609, 736050, 8556112,
+-10678899, -7692824, -2901787, 3760781, -5463199, 3287798, -2450279, 10778220, 295816, 1622961,
+-5850283, -7342247, 498216, 6170258, -6165426, -919123, 7287486, -6365679, -490700, 3224447,
+-10759967, 12696460, 6824703, -2592013, 2962454, -780610, -286152, -3422015, 7191923, 12145631,
+32870996, -28993176, -838056, -11569031, -15337328, -9206799, 15042586, -8256001, -8928163, 7676717,
+19372450, 12160663, -14533632, 9360881, -15250355, 11184632, 636729, -1754494, -7370164, -11418171,
+-9160092, 1890323, 2108292, -18037788, 11442867, 1845225, -1599339, -6875706, -7609609, 12739410,
+-17438640, -870268, 19044422, 22307524, -20000052, -1387811, -3941169, -13027710, -16741246, 18312130,
+4227859, 11622182, -3549254, 1374390, -1532230, 11569031, -4469987, 574452, -14333916, 20588462,
+17279728, -25224880, -30697742, -6579353, 441845, -10186052, 1110249, -7586523, 2438468, -15677704,
+16642461, -20139638, -17493938, -6623377, 3002182, 13792214, -7134478, 20013474, 2229625, -7237557,
+-6745246, -5337034, -12515535, 12167105, 9268539, -3393024, 7864085, 6000070, -9753334, -9957882,
+-8238284, 15493558, 4270808, -11207717, 1642288, 4318590, 5476620, -16680579, 8797167, 6565395,
+3464965, -244276, -4318590, 2142652, -4748087, -14849313, 3445638, -2037425, -2291902, -1801739,
+1859721, -4551055, -5234492, -378494, -1627793, 7313793, -3508988, -2121714, 4706211, -2044941,
+-6513318, 5762773, -6483790, -2332167, -11624329, 6399502, 1771674, -1787780, 2639258, -5483600,
+11263015, -741419, 2350421, 12093017, 9239012, -3418794, -3415573, 5799280, 3830574, -4210142,
+2910377, -3862786, -2947421, -771484, 3321084, -44487808, 65910032, -45283988, -11583527, 11925514,
+35582732, 28926604, -10704132, -11583527, 1859184, 1651952, 18330384, 6769406, -24335284, 7292855,
+-5297842, -8535174, 2335389, 9943386, -191663, -18210662, -16117939, 8503498, 6881612, 11260867,
+-6225555, 13939316, 3180423, 16348793, -1767916, -5570036, 12022687, -1457068, -13005698, 2261300,
+14944876, -635655, -17224430, 8521752, 19888382, -18391586, 7182259, -19756312, 7741142, -24966108,
+-16401406, 27518930, 25563646, 12066174, 33314988, -6398428, 39786968, 14841259, 15288473, 21437256,
+-36197984, 30474404, 10312753, 12344273, 13968307, 3391951, -17719424, 2906619, 33554968, 38358352,
+-551366, -43346420, 21227338, 1219234, 8972724, -1454920, 925029, -9401683, -32810866, 6657736,
+-5544803, 7425999, -6208375, 16258599, -18500572, -19649476, -13990319, 2934537, -6103686, -8795556,
+10425496, 4240207, -14249091, -14860050, -11952894, -8704825, -1721745, -2237678, 7649874, -96637,
+-12250320, 9693741, 1730335, -2846490, 360777, 4863514, -6206228, -2809446, 5822365, -10435160,
+-4696010, -7067369, 6026913, 8005819, -9100499, 2896419, -24083492, 752156, 973347, 1609539,
+-4870493, -4161287, -10986526, -7761006, 5260261, 3884798, 5032628, 8742406, -8174397, 1064615,
+3016678, 2564096, -8021389, 498216, 1724966, 194884, -6631430, -440234, 43660492, -1674500,
+-51773684, -26273388, -30448096, -11724187, 346282, 17040282, -44117368, -9965935, 7031935, -20669530,
+-23643794, -21674016, -23603530, -3889093, 26223996, 13351980, -10283225, 12484933, 5230734, -12058121,
+13569412, -15212237, -3270618, 6221260, 9006010, -30137786, 15174656, -14877230, 8682813, -6011344,
+-24058796, 6598681, 7574175, 3619584, 4041564, -10140955, -34187404, 1265942, 7143605, 7333657,
+410169, 4139275, -14158897, -309238, -1153736, 30964566, -4732517, -51310900, -23064512, -5712844,
+-42456824, 9519258, -12943958, -11011759, -20448876, -9341554, -30565134, -30165166, -36766532, -3841848,
+38754564, 5135707, -24492052, 11098195, 355409, -2915209, -13776108, -19579146, 8142185, 15740518,
+12146704, 6382322, -7341710, -31598074, -22388590, -31814970, 4636954, 3216931, -1117228, 10981695,
+-16655346, -20382842, -2858301, -7743826, -20583094, 4176856, 11811160, 1312649, 4302484, 19429896,
+-3593277, -4456566, -3418257, 927713, -7132867, -4320200, 8786966, 13111998, 14717242, 9539122,
+-4140349, 244276, 2247879, -6601902, 13612899, -6046777, 19889456, -7474854, 9298067, -9989557,
+-2728915, 19783156, 6640020, 2288144, -181462, -8433705, 7893076, 1226213, -9955197, 3942243,
+-8535711, -11383811, 3039226, 2703145, -6805913, -7073275, 6805376, -194347, 9606768, 1519882,
+6505802, -4193499, 2804077, 2143726, 28492276, -3134253, 22783190, 29993904, -25400974, -31233002,
+-33435246, 8996883, 11348377, -45185204, -26546656, 1204738, 1027034, 13995688, -53173844, 5957120,
+11950747, 36988260, -42651172, 5324686, 6670621, -4973036, 23090282, -13143674, 40672804, -1939715,
+3330747, 12664785, 15627775, -15161771, -33355252, 19593104, 23075786, 5706401, 29271812, 6057515,
+-4033511, -10725607, -25273198, 39018168, -17585744, 37000068, 14210973, -2375654, 10579041, -15164456,
+19557134, 19945828, -13947369, 14927159, 7181186, -38088308, 27761594, 28876676, -3850975, -19238232,
+3466576, -576063, 1007707, -6541235, 52697100, -600222, -30955440, -16820166, 5775658, -43937516,
+-58299348, 8358007, 72428184, 16472810, -5347771, -45977624, -11989401, -7276212, 49299784, -33428804,
+-21903796, -81117976, -12016245, -14475114, -19416474, -14832670, 29773788, 32474784, -32077500, -11895986,
+10327249, 4932233, -6018323, 13652627, -5792837, -9546639, -10212895, 11859478, 4342212, 4226785,
+-4235912, 11661910, -11633456, -3316252, 9618579, 5111011, -816581, 163209, -8715562, 4767951,
+-5835250, 21785148, -5944235, -10838887, -9580461, -17416630, -6291590, 14646375, 15615964, 43717936,
+16223702, -4153234, -32942400, -44612900, -21376590, 1448478, 18425410, 15804406, -12229383, -17253420,
+-9297530, -6571300, 11128797, 20369956, 4200478, 1975685, -2561948, -6069326, -6003828, -72405096,
+21020644, 35044248, -46631532, -3986267, 26137560, -11042898, -20983062, 18959060, -20246476, -10854456,
+1534914, -14998563, 24581708, -8058970, -11237245, -4058207, 12984223, 44719736, -6937446, -20252382,
+-22891102, 8486319, 21253646, 12956306, -20234664, -2943663, 24188718, 895501, -18343806, 6318434,
+-16376173, 41375568, -18626200, -44332116, 15363098, -7260642, 21240760, -29622390, -29407104, 29727080,
+-2412698, -37983080, -20357608, -36282272, 47240884, 23035520, 12704513, -49579492, 8804683, 20799452,
+-34988416, 2297808, -25154012, -18785650, 19448148, -16677358, 22323630, -13734769, -30419642, -6607271,
+-7594039, -4246649, 10355166, 3885335, -19044422, 59170152, -7350837, 26392574, 26679264, 16578574,
+-8144332, 6471979, -13501767, 33399814, 8027831, -8089571, 3817152, 14345728, 22842246, -5449240,
+-50164680, -3126199, 15417859, -4705674, 26228292, -10921565, 8924405, -3754338, 491774, 11142219,
+2430415, 6884296, 13262322, 8244190, 15425375, -3502009, 4857071, 8525510, 852551, -15822660,
+19016504, -7752953, -130997, 3215320, -9880572, 5187784, 732292, -2335389, 13128104, -5828271,
+714038, 19566798, -480499, 10988674, -9745818, -5898601, 10154913, -2259690, -7495792, -9943923,
+223875, 1555315, 2112050, -3216931, 2162516, 6194954, -2508798, 52382496, 10928007, 22605486,
+-1787243, 5345624, 8466454, -19258096, 8559333, 18182744, 324270, -22136798, -11613055, -16463683,
+-6534793, -22185654, -21120502, 2501282, -16804596, 24718610, 8207146, -5958731, -17864380, -8804683,
+-5774047, 13240310, -3983045, -20992190, -17041894, 4192962, 4631586, 11774116, 4689568, -4764730,
+5705864, -18329310, -55143084, 2139968, 67267776, -2141578, -48619028, -8103530, 32105954, 8719320,
+5382131, -1079111, -21020106, -26584236, -15620259, 5834176, -1446867, -24604258, 9199283, -49304076,
+-8607651, 45316736, 13576392, 58346056, -7508677, -23278186, -6780680, -5337034, 15867757, 3224984,
+-239444, -32105954, -15857556, -15451682, -1950989, 36863168, -4774930, -9246528, 12399034, 14820858,
+2614561, -19905562, -30562450, -2413772, 12688407, -1558536, -15056545, -4103305, 8825621, -6666863,
+-5522791, -10268730, 18811420, 19423990, -9629317, -5361730, -8826695, 7784092, 11809013, -5560909,
+1912871, -2252174, -1371168, -3862786, -14472429, 1422708, 8650064, -9120363, 2450816, -2345589,
+914291, -8186745, -2437394, -3560528, -4984847, -6259915, -5970542, -1966558, 26540214, -13244069,
+415001, -5334887, 1706176, 14345728, -9557376, -1572495, -2547453, 4392141, -413927, 3980361,
+-7275675, -23177254, -77510736, -119378616, 28063854, 107094472, 33621004, 261784160, 246326576, 109751448,
+253993632, 107470816, -46210628, -639950, -76565848, -208953920, -114287472, -109355776, -214424624, -155889056,
+-89741192, -134854464, -90902984, 19876572, -8020315, -43067248, 51022600, 47952236, -354872, 51397872,
+139037216, 58558656, 26063472, 133361416, 119061328, 40173512, 141861696, 173888736, -437013, 103062032,
+175019920, 66469988, 69870528, 178709296, 106525928, -14016626, 139211696, 97948880, -38175280, 54832772,
+110692048, -49526880, -88164944, -19764366, -186136896, -312066944, -302403808, -335934080, -537761024, -465206176,
+-384055968, -497368480, -426716800, -273993152, -325097888, -248219040, -68926712, -22103512, 104955040, 195820448,
+322470976, 432388864, 471352256, 550111232, 597182976, 558135296, 528369024, 560839488, 426398976, 338322080,
+401059744, 218930048, 34744136, 50596324, -81301048, -296434880, -249188640, -184152624, -266078592, -271801088,
+-169854688, -193007248, -243695904, -178406496, -162540352, -228993168, -205757920, -134005664, -170757168, -183092304,
+-60250876, -57679264, -108396384, -11425150, 40776420, -31009128, 5458367, 40754944, -58700928, -75530224,
+-72015864, -157022400, -173702432, -121460064, -91613800, -66606352, 22042310, 106140456, 144018304, 204564464,
+261873280, 273772480, 290104640, 321181952, 304293056, 276854656, 288044128, 261059920, 193701952, 132891120,
+34321084, -52053928, -133230424, -193299296, -216880272, -228179264, -204051744, -156315872, -137408896, -115732192,
+-95217816, -82114408, -72873248, -54766200, -43184284, -39674760, -39241504, -27759984, -21966610, -17820894,
+-8230768, 5494874, 16648367, 31831614, 31901406, 30655330, 27302034, 17678086, 6714645, 3770981,
+200253, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-553514,
-11153493, -5529771, 440234, -3299072, -253403, 4714264, 2237141, 2957622, -2580202, 3663607,
--3787624, 4112968, 2056216, 4956929, 2093797, -943819, -5597416, 6019397, 4151086, 1525250,
-708670, 557272, -2378338, -2726767, 3114388, 1904818, 2035278, 2986076, -3037079, -237297,
-2806224, 3318399, -432181, -2484639, -4712116, 11274, 881542, -2855617, 1067299, 751082,
--4247186, -2305324, -322123, 2150168, 49929, -2079301, 3968550, 730144, -1340030, -2947421,
--651761, 336618, -5545877, 2549063, 3478387, -1942399, 4453881, 3631932, -574989, 3001109,
-1785633, 5879274, 1860258, 1086627, -912681, 2203318, -4737349, 592706, 2279554, -2368675,
-2609193, 3119757, 3454764, 2131378, 4538707, -994285, -2746095, -1451162, -1157494, 578747,
--1041530, -3544959, 1677185, -1685775, -1846299, -2160906, 821413, -27380, -1074816, -879395,
-1411971, 78383, -153008, -403727, -129386, 634581, 951335, -179852, -45634, -826244,
-234076, -1465658, 148176, 933619, 1284732, -936840, -953483, 192200, 841814, -10582263,
--7401303, -1053878, -4765266, -4078608, 2007360, -6026913, -5810554, 1671816, -2631741, -2362232,
-2419677, -1903744, -4115653, -450435, -310311, -1165547, -1882269, -1114007, -4720169, -296890,
--3403762, -2465848, -128312, 4218732, -936303, 6097780, -3169686, 3661997, 4212289, -4732517,
-1650341, -1202054, 918586, -3352222, 1661079, 2160369, 3250753, -1673964, -3966402, -1387811,
--2173790, 1264331, 1544041, -4820027, -601832, -3312494, -2651606, 896038, -3938485, -6322729,
--1177895, 6192269, 1378148, 2161442, 344671, 1416266, 855772, 2273112, 2459406, 6944962,
-530428, -3100430, -3981435, -868120, -1890323, -525060, -8060580, 1662152, -562104, 2565169,
--1066763, 704375, -1913408, -957778, 7913477, 1571958, 7257958, -2471754, -1306744, 540092,
-2075543, 688805, 2471754, -2423972, 2683281, -2823941, -1725503, 1425392, 1058710, -120259,
-144418, 42950, -590021, 181999, -1053341, -115964, -349503, -192737, 489626, 531502,
--573378, -1040456, -613643, 49392, 61740, 155693, 361314, -443992, -444529, -452045,
-134218, -185220, 585189, 8590471, 9932649, 7619272, 5680094, 8010114, 3267933, 3473018,
--718333, 2265059, 8458401, 886374, 2588792, -3153580, -2079301, 6456947, -4329864, -7933342,
-2408403, -6630893, 5721970, 1330903, 6863358, -2197413, -418759, -1705102, 2262911, 2727304,
--85899, -6755447, -1379758, 5757941, -3832722, 2587181, 1538135, -1318018, -1651415, 6400038,
-4847408, 11176579, 4489315, 912681, 2689187, -963146, 688269, 3508988, 2109903, 9523016,
--4078608, -2739652, 671626, 2439542, -1495722, 4404489, -4136054, 841277, -266825, -3198677,
-994822, 939524, -4305705, -5850819, -3605088, 4599910, 2241973, 537, -371515, 3466576,
-266825, 1136556, 6047851, 2963528, -1438814, -981937, 5376226, -4679904, 619012, -4220879,
--1889786, -5449777, 1480153, -1149978, -3218541, -2129230, 3150896, 1922535, 563178, 1830730,
--3015604, -526670, -257161, 2316061, 67646, 146029, 431644, 676994, 1718524, 1907502,
-1520955, 97174, 812823, 1724429, 98247, -1607392, 1468342, -826244, -314069, 336618,
--267362, 1261110, 1165547, 563178, -2684, -466541, -462246, 529892, 733903, 246961,
-1120450, -2288144, -1449015, 1114007, -79994, 18690088, -331786, 9156333, -1661079, -1432372,
-9819906, -9614284, -3331821, -750009, 4849018, 3368865, -2062121, 1869385, 904628, -8710194,
-2198487, 4656282, 4132296, -9763534, -3438121, 1096827, -7005629, -1930588, 527744, 309238,
-943819, -1083406, 4449049, -3161633, 3535295, 7308424, 7298760, -2134599, -4205847, -760746,
-8221641, -483721, -457951, 47782, 793495, -4293357, 713501, 3449933, 500364, 805843,
-3296924, -2215130, 2211908, 1278827, -929324, 5770826, 544924, 4583267, 883690, -1564442,
-1982127, 3054796, 2625836, -157840, -4558571, -4147328, -5484137, -2455111, -225486, -22012,
--672699, 4027606, 3449933, -2666638, -5385352, 140660, 2736431, 3308736, -3313031, -642098,
-3115462, -317291, -482647, 4163434, 1919314, 1953136, -1614371, -1388348, -301185, 1770600,
-2646237, 19864, 1988570, 693100, 112743, 350577, 621160, 2465848, 1825361, 2779381,
--1496259, 1284195, 125628, 306016, -479426, 242666, 348966, 70867, 294742, -518617,
-1275605, 1268089, -1308891, 266825, 673773, 771484, -487479, 2552821, -5022965, -13935558,
--3653944, -4718022, 877247, 2324651, -2402497, -2791192, -26329224, 526670, 8410083, -6139119,
--9884330, 7365332, -11182484, -1689533, -5032628, -5861557, -3692061, -3684008, 339302, 4461934,
--878321, 2484102, -2907156, 3362423, -2647311, -3993783, 1687922, -1502165, -6357626, -8040179,
-3768297, 374736, 3718905, 1152662, 8408472, 1190780, 2868501, -4082903, -7135552, -2056753,
--3580929, 7045357, -3369402, 176094, 1755568, -3510599, 9787694, 6527814, 63351, -7866233,
--10048613, -3391414, 3240016, -9002251, -304406, -4382478, -8640400, 788663, -13485124, -2971581,
--1506460, -4991826, 8933532, -562641, -1500017, -152471, 5566278, 7200513, 2085744, -7217693,
--2413235, -1829656, 3805341, 1816771, 2150705, -4055523, -5246840, 4050691, 2682207, 1016834,
-1283658, -254477, 2236604, 643708, 3410204, 990527, 734976, -294205, -179852, 558346,
-2172717, 3207804, 1892470, -781684, 1202591, -4005594, 1998234, 2390149, -745177, -331786,
-664109, -900333, -323196, -217433, -1304596, -1291175, -776852, -376347, 686121, 1597728,
--316217, -1842541, -77846, -2604898, 825707, 3589519, 1474248, 2123325, 1436130, 5578626,
--15049029, -22181896, 2692408, -5082557, 4913980, -6227703, -11041287, 250182, 10096931, 2045478,
-6184753, 4935991, 3816615, 2438468, -3576097, 2688113, 6703370, -10564009, -4959614, -3529926,
--2385318, 3839164, -889595, 1306207, 6960532, 6059125, -2488397, -5966784, 1380295, -3350611,
--2550674, -5783174, -4013647, -8795556, 2105071, -3299072, -75699, 7778723, -1560147, 1478543,
-2060511, -5606006, 4700842, 4631586, 6500433, -5711233, 10263898, -1680943, -7503845, -6349573,
--8208220, 7644505, -2887829, -8728447, 2653753, -1346472, -6145025, 6545530, 8798777, -3036542,
--7341173, 5452998, 1732482, 4276714, -634581, 11834782, 6957847, -6897718, -3422015, -3250217,
--2687576, 3958886, 5418638, 7030862, -9127, 941672, 2698313, -2773475, 2566780, -752156,
-4539781, 6462852, -8741332, -3885872, -4406100, -2727841, -4501663, -325344, -3190624, 1500017,
--193274, -253403, -392990, 1202054, -2172180, 5503464, -704375, 2368138, 803159, 1175747,
--1090922, 256087, 125091, 369367, -1871532, 436476, -1227287, -1864016, -2911988, -795643,
--201863, -418759, 77846, 406411, -616328, -322123, -1116155, -934692, 1684701, -20713554,
--13959, -3762391, 1373316, -37581, 7816304, 5732708, 8096014, -1312649, 11043435, -5131949,
-7510287, 9193377, 1695975, 9163313, 1980517, 2383170, -2566780, -935229, -3849901, 7265474,
--446140, -824634, 10234907, 6183143, 100395, 2759517, -865973, -340913, 6658273, -3801583,
--6577206, -3758, -907849, 3381750, -18609020, 11196980, 12080132, 4769025, 2355253, 322659,
--5913633, -12410845, 8205535, -5000416, -5640366, -3777424, 7365332, -5180805, 4545686, 4612258,
--4405563, -2917894, -10717554, 4938676, -6970732, 4140885, 694174, 3708168, 6519224, 10406706,
-4465156, -4798016, -11443940, -2015950, 7004018, 11467563, 8608188, -1737314, -2275796, -7371238,
--12257300, -1297617, 8477192, 3783866, 2672007, -2720325, 11250130, -383863, 3781182, 1088774,
--2185602, 1063004, -5753646, -2799245, -2915746, 1911797, -1455457, -4106526, -2434710, -2838437,
--3081639, 1225139, -4380330, -1820529, 825171, 749472, 3359738, 175557, 461709, 575526,
--934692, 2750927, -889058, 3128884, 1112397, -904628, -2430415, -133144, 3001109, 2143189,
--405874, -2954938, -803159, 2596308, 2308008, 322659, -562641, -366683, -1816234, 1995549,
-7925289, 27070642, 14795089, -1302986, 2630668, 2419140, 6029597, 10715407, -1428077, 2122788,
-18177912, 1872606, -719407, 10947335, 7693360, -7514046, 4570919, 1121523, 7361574, 5042292,
--12503187, 9601936, -5748277, -800475, 1153199, 7523172, 1418413, 2059974, 5775121, 6568616,
--6162741, 6746857, 20080582, -3499325, 9180493, 9372692, -4903242, 7357816, 2011655, -4783520,
--5140002, 3584150, -4587562, -12414066, -1541356, -555125, 1347009, -15899432, -3822521, 4920422,
--10010495, -6761353, -16531329, 5508833, 7697655, -11329050, -3987877, -5456756, 12071006, 305480,
--6816650, -4799089, -7599408, 3856881, 10106058, -7135552, 3925063, -3030636, 4896263, 11373073,
-4821638, 8959302, 9147743, 11354283, 1779190, -6363531, -6312528, 4550518, 7230578, 1036698,
-4868346, -5093831, 2068027, -629213, -1549946, -5350456, 762357, -2380486, 332860, 4335233,
-1864016, 1819992, 1492501, 4786204, -2959233, 156766, -787053, 1411434, -549219, 145492,
-2063732, 521839, -1680943, 2548526, -554588, -3714610, 2302639, -2662880, -2108829, -2761664,
--5537287, 2964601, -1269700, 2501282, -295279, -558883, 738198, 4083440, 2769717, 3637301,
-1705102, -92342, 1498944, 4193499, -1735704, 27827630, 7488276, 1127966, -1559073, -4036733,
-221728, 5203890, -3329137, -6440841, -9475772, 710280, 6854231, -8483097, 4221416, 5564667,
--2335389, 18779208, 6696928, -4686346, -3153043, -1422708, 6804302, -2792803, -6209449, -6908992,
-4377109, -15066208, 590558, -4263829, -5439576, 4797479, 1126355, -5538897, -3345243, -5324686,
-7573638, -2502892, -11855720, -1474248, 338766, 860604, -6847789, -9755481, 985695, -1851131,
--1253057, 3269544, -1993402, 9073655, 1950989, 5396627, -5746130, 13223667, 3922916, -6664716,
-8850854, 16737488, -4742718, -4172024, 8670465, 7888245, 3382287, 4780836, -10276783, -2810519,
--11116449, 3242164, 10580115, 4698694, -13044353, -2723546, 4242891, -13025562, -20258824, -1819992,
-756451, 5721434, 18564460, 1416266, -2013803, -5830955, -4281546, 2833068, 4775467, 3870303,
--192737, 2019172, 272194, -4145717, 2623688, 3122441, -5107253, -5040144, 5703180, -1947231,
-3391951, 2433636, 1758252, -1483911, 1301912, -213138, 2039036, 397821, 3048353, 2684,
-2705293, 1745904, 684510, -2481417, 5527086, 1646583, 5055714, -1124208, -1553704, 1723893,
--3216394, -650151, 2461553, -3207267, 908922, 1714229, 1208496, 1090922, 2758980, -1133335,
--4726075, -153545, -399969, -5216238, 861678, -2240899, -21597244, 10154376, 28708098, -11808476,
-20148228, -4558034, -4341675, -6311992, -10407780, 7714835, 296353, 5264020, 5217849, -18865106,
-251256, 8759049, -7642895, -4059281, -11874511, 20998632, -13105556, 10351945, 9787157, -12527883,
--5151277, -4384088, 8820789, -10026064, -4078608, 10170483, -1770063, -2743947, -4956929, 12409234,
-2196339, -2025614, -5102421, 314069, -9446781, 10229001, -1207960, 4698694, 25551834, 17132624,
--14700062, -10416906, 4021163, -1336272, 10695005, -5883032, -8615704, -3071975, -16022375, -6193880,
--1894618, -12315282, -7027104, 27303644, 6523519, 94489, -1331977, -302795, 8047158, 9620190,
--2019172, 9503689, 774168, -5217312, 1040456, -14565845, -1084479, -13495861, -7276749, 8141111,
-11933567, -17895518, 7279433, -4580583, -5667210, 8681203, -1254667, -8231305, -452045, -3219615,
--6437619, 3321620, 2416456, -4493610, -11087995, -5339718, -1087164, -863825, 8812199, 2622078,
-2229625, -4765803, 119185, -1952600, 4750234, 5285494, -2768643, 2269890, 4023848, 4352413,
-3459059, 4947803, -1893007, 365609, -3325379, 293132, -3879966, -2077690, 1580011, -1067836,
--3109020, -729071, 1772211, -5243082, -2506650, -2831457, -1489280, -1985349, -2296734, -22871238,
-3881040, 21264920, -5629629, -5392869, 4541391, -6566468, -5428302, 6019397, -852551, -1168768,
--315680, -14387067, 24401320, -25975962, -2564632, -570157, 8846022, 5385889, 254477, -9845676,
--7162395, 3136400, 19036368, -1527398, -8491150, -5733782, -13627394, -898185, -8033737, -6310381,
--2864206, 4277251, -525060, 662499, -9255118, 1872606, 2531883, 5896453, 4808753, 5937256,
--12537010, 83752, -2620467, 8217883, 1997160, 16645146, 3513283, -3819300, 1389959, -9009231,
--147640, 7287486, 9286256, -14233522, -11143830, -1006096, 14803142, -23251880, 6035503, 26917096,
-14701136, -7150584, 2406256, -14409078, 6016713, 13321915, -22809498, 5127654, -11153493, -3082713,
--30894774, 207232, -13060459, 12065100, 752156, -14267344, 9445170, -861678, -18546206, -2408940,
--11755325, 7678328, -6582038, -9590125, 13063680, -2478196, 2257005, -4315906, -5767068, -1495186,
-5543729, 4261682, -3224984, -732829, 169114, -3187403, 1974074, 3256122, 4577899, -4629975,
-1786706, 2556579, -5640903, 418222, 2388002, -3929895, 321586, -2519535, 6107444, 3375844,
-7446937, -3488050, -2867428, 2585034, -7217693, -689879, -2117419, -1052267, -436476, 1591285,
--4077535, 330712, -599148, 1477469, 1316944, 326418, -4115116, -6231998, -17362406, 27469000,
-8078297, 14367202, -16182363, -18261664, -3241090, 4803921, -4947266, -2471217, 9358734, 2500745,
-3004867, 8118025, -20089172, -2248416, 411780, 5108327, -13927505, 1814087, 2538863, -9825811,
--5260261, -13523241, -9994926, -110059, 4475356, -10953240, 958851, -4987531, -9561671, 3728569,
-114354, 7705172, -21306796, -22435836, 4776004, -1971390, 8532489, 18728204, 2208150, -11868605,
-16889422, -8422431, -15678241, -12209518, -5102421, 1286343, -16660715, -6533719, 16535087, 22278532,
-9491878, 6191732, 4719096, -2648921, 14287746, 7978439, -16574816, -9138080, 130460, 1586990,
-15625628, 9945534, 2529199, -2474975, -1904281, -7730941, 10374494, 8040716, 18020610, 4032974,
-5260261, 2103997, 32339494, 3578782, 12532715, -13469017, 1158031, 12198781, -29294362, 2308008,
-3873524, 8156680, -3043521, 4289599, -3835406, -1095217, 5017059, -2537252, 15516106, -6343130,
-9063455, -2509872, -5529234, -3069828, -5981816, 49392, 2408403, 2924336, -1265942, -3128347,
-6446209, -2074469, 4301947, -2442763, -2515240, -4866735, 4826470, 5165235, 1089311, 356482,
--4020090, -7016903, 3146064, -761283, 156229, 7984881, -2365990, 6969122, -1177895, 3994857,
-2749853, 5316096, 1157494, -5282810, -1056025, 18524730, 1234266, 23019414, -827855, -10707890,
--11653320, -21792128, 3919695, -9266392, -668404, 1728188, 7727720, 11229729, 19123878, 19760070,
--3147674, 17575006, -1388348, -1675037, 6625524, 14788109, 6425271, 4039954, -23823646, -12331388,
--19385872, 9651328, 19278498, 3621194, -8428336, 13373991, 19339164, -2762201, 2945274, -4678830,
-16249472, 13655312, 11637214, -7062000, -12373801, -2092723, -3259343, -27525908, 4714801, 3614215,
-2377801, -7097971, -3699041, -30680026, -10873247, -27857694, -4915053, -20894480, -10823318, 19896972,
-5254356, 20970178, 1344862, -17402134, -8460012, -18101676, -34395708, 4724464, -21274046, -6315750,
-20208894, 8330626, 7925826, 1549946, -3888556, -1600949, 3951907, -14904073, 11832635, -25341380,
--26026964, -1559073, -2232846, -3362960, -19116362, -4457639, 25270514, -1491964, 1586454, -6848862,
--21834004, 11005854, -14667313, -5887327, -14598594, -9166534, -6795175, -4781909, -5224291, -3364033,
-405874, 2492155, -13645111, -6009733, 2717641, 2354179, 7746511, 3488050, -4479651, -5879274,
-5093295, -9366787, -1316408, 2772402, -7009924, 2156074, 2253784, 5070209, -4755603, -1781875,
--2490544, -468151, 3534221, -2121177, -201327, -2813741, 5561983, 7453379, -2379412, -1302986,
-2144263, 2445984, 4849018, 6596533, 1337882, -1222992, -1499481, 10827613, 21814676, 18986976,
-20456930, -11790222, -20521890, 15783468, -9327058, 16312823, 4903779, -26205206, 6609955, 4881767,
--29501594, 15863999, -13431436, -13735842, 8075613, 8979166, 1436667, 10658498, 835371, 532576,
--6892886, -3997004, 6512244, -4098473, -10088341, 680215, -18984292, 6874632, -24141474, -14697915,
-938987, 9596031, -3259343, -9995463, 3792993, 7569880, 5675263, 447213, 19519552, -44758392,
--10118406, -12255152, -14819785, 19423990, -15608448, -2136746, -36056252, -10095858, -4237522, 1887638,
-24129664, -5804112, 3099356, -14533632, 12267500, -18084496, -11659762, 9408126, -41864120, 6108517,
-22467510, 29111826, 22291954, 14082661, 32792076, 18082886, -326954, -8089034, -8336532, -12651900,
--28152974, -3052648, 2707977, -39905616, -15721191, -12059194, -8934606, 12784507, 33514166, 39072392,
-25952876, -13100724, 10756209, -8442295, -1747515, 8854075, 6099391, -3397856, 2202781, 2920041,
--685584, 1354525, -6046777, 3524558, 11067057, -5151277, 1566589, -9665824, 2483565, -4523675,
--550293, -468688, 8583492, 15027017, -5273146, 948651, 3773129, 6124087, -8965744, -14054207,
-391916, 10954314, 3310883, -8962523, 8534100, 4427038, -8978092, 6394670, 4222490, -3500935,
--2651606, -966368, -1552631, 1657857, 3568044, -3190624, 6295349, -38429756, 52076, 6413460,
-26948772, -8773544, 12455405, 11333345, 5961952, 6186901, -42038068, 33146410, 18051748, 41068476,
-15065672, -1792612, -15291157, -9704479, -9589588, -14897094, 10586558, 7789997, -15150497, -17205638,
-9038759, 12295418, 21408802, 5978058, -13383655, -19946902, 4159139, 3326989, 1311039, 2338073,
-38035692, 12839268, 7208566, 12482786, 13706314, 15442555, 271657, -24254218, 16926466, 53067544,
--5529234, -14900315, -32452236, -7056095, 42749956, 4901632, 17620104, 5822902, -59381144, 12102681,
-10508174, 1116155, 5954972, -4282083, 766652, 11948062, -32051194, -13390634, 26916024, 9888625,
-3547643, -24182814, 16994648, 6198712, -21823802, -23673322, -15955804, 21332028, 44552232, 41450728,
-45671608, 46326056, 1651952, -20921860, -17251274, -40886480, -13553306, 12647068, -33231236, -514859,
--27127014, 137976, 35919348, 13861470, 14653355, 17716740, 10958609, -11272142, -3921842, -13850733,
-19391778, -12147241, -10763188, 3281355, -2560338, -7346005, -13286481, -4059818, 13094818, 12326019,
--6194417, 19210852, -1219771, 190052, -9166534, 2565169, 9743670, -2869575, -8008504, -7776575,
-4676146, -4461934, 10642392, 6590628, 8537858, 12638478, -13640816, 3003793, 757525, 5577552,
--3161633, -6071473, 11278047, 2397129, 9115531, -5568962, 3042448, -8232379, -3031710, 18506478,
-39304320, -79104704, -27183922, 5612449, -45367204, -42624328, -17676474, -26087632, 3467649, -19345070,
-50361176, -5814312, -17083232, -7665443, -37550364, -11076721, -30185030, -13320304, 5966784, -40184252,
--6053220, 30222612, -25134148, -7914551, 9473087, -655519, 13443248, 2189360, 670552, 10962367,
-4882841, -20211042, -3058017, 17053168, -8230231, -25048250, -7421167, -30268246, -14009646, -52650392,
-5749888, -36020280, 17826262, 5860483, -12355010, -46495704, 4943508, -5384279, 57388280, 22052510,
-1742683, 30289720, 14041859, -191126, 25724706, -29986924, -13324599, 1733556, 22841172, -24916716,
--14130979, 81717656, -7146826, 42104100, -32479080, -543850, -22997402, 17404818, -7701950, 27411556,
-44479756, 705985, -30342334, 26135950, -32370094, -15459735, 11788075, -34744136, -22270480, -11383274,
-25565792, 47102368, -55925844, 47225312, 10195715, 13495861, 5923297, 6254010, 5742372, -7475928,
-9284646, 24259586, -11813308, 3903589, -1746441, 2797098, -26115012, -5238250, -7522635, 7659001,
-8961986, 25959856, -15778099, -9969693, -12139725, 17890150, -22679038, 5218386, 9333501, 7531225,
-9414568, -38922604, -8448738, 13487271, -5898601, -16860430, -1423245, 4148939, 1722819, 15931644,
-9024263, 12569759, -12210592, -11953968, 13918378, 3483219, 9623948, -9053791, 9692131, 5696201,
-2499134, 2945811, -2809446, -4368519, 1028108, -29680908, 61337500, -35249332, 22557706, 20098300,
--31913754, 17479444, 9641665, 6868727, -5671505, 24203214, 12526272, -30871152, 21869436, 25410638,
-4945655, 4269735, 15387257, -452582, -30671436, 39799852, -22766012, 8959302, -16937204, -3965866,
-4992900, -7532836, 32456530, 7228430, -4317516, -7886097, -1728188, 6283001, -33088428, 10395431,
--17173426, -11668889, -7974144, -170188, -16263967, -7813620, 3891777, 34215320, 316217, -7301982,
--21922050, 9025337, 5979132, 902480, 26571888, -6596533, -2839510, 31562104, 9898289, 1718524,
--30642444, -16131360, 19659140, 10899016, -28714004, 772557, -65161096, -32382980, 58272504, -13823889,
-31484258, 41191956, 11683385, 6874095, 18635864, -8151848, -22938884, 12104292, 3764002, -1663226,
-26243324, 16935592, -19002546, -45628120, -9494562, 18320720, 5811091, -1301912, 14642617, -17374216,
-25400436, -12702366, 9448928, 11681774, 5123359, 17268990, 13179644, 20976620, 2316061, -5744519,
-7584912, 20320028, -5480379, 17758080, 10705743, -11890617, 3539590, 9319542, 6350646, 3694746,
-12824235, 10557566, 4645544, 21310554, -6926172, 2226941, -3199214, -1634772, -5570036, 18888730,
-15734076, 12454331, -6069863, 2189897, 22462142, -6106907, 16445430, 14614163, -44560, 25635586,
--23467164, 3084860, 35392680, 4341138, 9975598, -7570954, 24894168, 4635344, 34817152, -10747082,
--58195732, 9895605, -7023882, 20044612, 6117107, -19729470, 10212895, 12011413, -22508312, -24697136,
--16550120, -41238664, -41522672, 28557238, -6638409, -42649024, -13100724, 4364761, 14085882, 13500693,
--26151518, -28333900, 2755759, 39402568, -18881214, 15198279, -26550414, 9408663, -29949880, 19463718,
-20532628, -14691473, -30823370, -21211232, -3466039, 12053826, -13250511, -8746701, -11037529, -39209292,
--33886756, 17708150, -28455232, -5858873, 10095858, -23521388, -37936908, 14419279, 19859392, -2597382,
--45664092, 20352776, 17879948, 57647588, 239444, 15086073, 11271605, -24718074, 9415105, -7732015,
--49902688, -7713225, 30466350, 7181186, -25256556, -62668940, 39507256, 50442244, -15044734, 40782324,
-47543140, 2365453, 2130304, 37502580, -24372328, 1798518, 62941136, -46510200, 26975078, -39855684,
--10936597, -3330210, 27095338, -9299141, 3921842, 15114527, -491774, -35291208, 38757248, -7132330,
--4560182, 5862631, 16180752, -26554172, 11578158, 6713571, -3997004, 7969312, 9423695, -24617142,
--3323768, 5623723, 12886513, 26679264, -2258079, -23589572, 11948062, 27384174, -21862458, 26707718,
--12692702, -2950106, -9419400, 30129196, -20893942, 7066832, 18897320, -13168370, 4753992, 3227668,
--17411798, 3704946, 7532836, -3423089, -13214541, 8490613, 10998338, -6270116, 21855478, -32947768,
-8114804, 9451612, 479963, 1843078, 22563610, -5069672, 12657269, -26199300, -82958368, 22434224,
--9587978, 61962956, -21329882, -13605383, -24897388, -70965208, 32439352, -41350872, -24209120, 1274532,
--116501, 54758148, -39202852, -27409408, 36019208, 21478058, 18760418, -6782827, 17922362, -12677133,
--18096308, -16605954, 42241540, 35188668, 54930484, -17467632, -20617990, 998580, -3673271, 20211580,
--33140504, 7125888, -34831112, 18615998, 34078420, 11746199, -28144384, 19184546, -24816322, 55819544,
-28362890, 7931194, 7473780, -8582955, -43789340, 24760486, -59385440, 12433930, 11016054, 29033442,
-22980222, -51228224, 15430207, -32255742, -19198504, 14000520, -5116380, 19171660, 12230993, -46832860,
-19138912, 43101608, 56913148, -16477642, 16809428, -23204098, 39943732, -56719340, -3005403, -10296110,
-17919678, 37389300, 53625888, -42883636, 10692858, -57398480, 36928664, 75728328, -19220516, -51527796,
--4144644, -38849588, 49700288, 12663711, -25367150, -7126962, 2895882, -8446590, 35501124, 13418552,
--20044612, 19153406, -28385438, 1903744, 26653494, -5506685, -32715840, 36341864, -52207476, 15192910,
--7863548, 20931524, -1293322, 13023951, -12016782, -6388227, 5339181, 4643397, 5568962, 24828670,
--25310242, -21232170, 1212791, 5774047, -5821292, -26372172, -19295140, 38765836, 10475962, -17149804,
--19804094, -44125956, 52938692, 41467372, -16082505, -14120779, -30808338, 1226750, 39571144, -65168076,
-46535972, -6029597, -1832340, 15484968, 12962748, 18437758, 5099200, 9034464, -22964116, 21797496,
-5909875, -23331336, 15726560, -9244917, -431107, 21314848, 12249784, -33216204, 18631032, -15684147,
-27653146, -20119238, 6947110, -10245644, 12831215, -9760850, 5859409, -14568529, 31811750, -2743410,
-794569, 9570798, 10612327, -16065325, -3444027, 7380365, 10554882, 9806484, -11294153, 4141959,
-381715, -32292786, -2780455, 8512088, 11829951, 5298916, 7549479, -29033442, 4549981, -1575179,
-2847563, 6830609, -5864241, 6468221, 4767414, 2878165, -7144678, -6452115, -2346663, 33879240,
--11963095, 6852084, 12443057, -6927246, 11834782, -13424457, 11401528, 6113349, -9184788, -13504988,
-8478802, -8243116, 6627135, -12131135, -10700911, -4716411, 15403900, -3862786, 1388885, 3237869,
--1226213, 3828427, -12387223, 9426379, -8029978, 20545512, -19097036, 8999030, -11435350, 10276783,
--9358197, 8242042, 125091, 13912473, -12050604, 6555194, -6215892, 801548, 2338610, 8239895,
--8681740, 2103997, -9360344, 13187697, -11085311, -2977486, 6534256, 2785823, -5459441, -1520955,
-7393786, 5019206, -18207976, 10189810, 802085, 170188, -2005750, 3723737, -2354179, 1992865,
--1494649, 2407866, 514859, 4782446, -5214627, 13001940, -16545825, 51849920, -3747896, -16776679,
--25608742, -11626476, -14381161, 18817862, 10864120, -13663902, 1125818, 1620813, 6129455, 852014,
-13008382, 4502737, 10241886, -3510599, -384936, -3071439, 4792110, 11125039, -10340671, -60666,
--5126581, 367757, 13538274, -7685307, 1303523, -3470871, 5323075, 2760590, -7456063, -2753611,
-7960722, -2448668, 12991202, 9256728, -13595182, 4354023, 2859375, 7124277, 2991982, -12830141,
-8665633, -2401961, 8426726, 6757594, -15337865, 4202626, 24696, 3448322, -1730335, -6729677,
-10900627, -2685965, 4935991, 259846, -3301756, 5054103, -6542846, -918049, 9086540, -6260989,
--7532836, 15180562, -9826885, 14161581, -1498944, -11477226, 23453206, -21559126, 18716930, -6649146,
--11257109, 11868605, -11060615, 3266860, 3799972, -10804527, 9069360, -1949915, -722628, 5802501,
--7536594, 9821516, -3211562, -762357, 2394444, -1683627, 3424163, -1653026, 527207, 2859375,
--2796561, 4575214, -565862, -2619393, 5607080, -8749922, 4613869, -3897146, -1826972, 5440113,
-423054, -1654099, 2795487, -2086817, 2774549, 1420024, -4085588, 2700461, 515396, -933619,
--726923, 2436857, 490700, 4511327, -3606162, 1271847, 542777, -2574296, 4977330, -1470489,
--835908, -25397216, -43562780, 54951424, 157414304, 24879672, 15255724, -115089016, -142278304, -45605572,
--27970438, 96225520, 146793936, 75520024, 21888228, -49427556, -106209176, -96898224, -81145352, 6397354,
-121610392, 101683352, 58327268, 19775640, -52042656, -67532992, -53611392, -51851528, -18273476, 24542516,
-33777232, 69821672, 50016504, 12097849, -16935056, -10004589, -56225416, -27357868, -28411208, -38532300,
-22922240, 43156904, 24987582, 62845036, 16710644, -14973867, -24150064, -41849088, -33033668, -5214627,
--10208064, 12797929, 26032870, 23144506, 16578574, 11244224, -5708012, -22995254, -16218870, -19131394,
-6162741, 22230750, 7362111, 5432060, -9651328, -20007032, -3718368, -86436, -273267, 16134045,
-14504641, 16172162, 6418829, -5624260, -17357574, -25213068, -25744034, -16796006, 17878876, 26396332,
-32813550, 22639310, -5685463, -12861816, -13588203, -27021250, -11897596, 9809705, 5207648, 4850092,
-7888245, 3741454, 3037616, -4217121, -5394479, 4221953, 9392557, -233539, -790274, -6490233,
--8856759, -4651450, -5372467, -3205119, 6969122, -1260573, 14554570, 17908404, 10395431, -6248641,
--10171556, -11458973, -14414447, -10586021, -14265197, 7611756, 19707458, 17926656, 10654203, 11185169,
-4268661, -11062762, -21550536, -22101902, -11191611, -2306934, 7006166, 15702937, 23120882, 18925236,
-3592203, -12224014, -20303384, -14921253, -4921496, 124017, 5583995, 3523484, 8735963, 11130408,
-3325379, -4839355, -6562173, -3712462, -2729452, -2689723, -744640, 784905, 5194763, 3124589,
-372052, -63888, -309238, -997506, -2262911, -2369748, 716186, 729608, 443992, -177704,
-214748, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+11153493, -5529771, 440234, -3299072, -253403, 4714264, 2237141, 2957622, -2580202, 3663607,
+-3787624, 4112968, 2056216, 4956929, 2093797, -943819, -5597416, 6019397, 4151086, 1525250,
+708670, 557272, -2378338, -2726767, 3114388, 1904818, 2035278, 2986076, -3037079, -237297,
+2806224, 3318399, -432181, -2484639, -4712116, 11274, 881542, -2855617, 1067299, 751082,
+-4247186, -2305324, -322123, 2150168, 49929, -2079301, 3968550, 730144, -1340030, -2947421,
+-651761, 336618, -5545877, 2549063, 3478387, -1942399, 4453881, 3631932, -574989, 3001109,
+1785633, 5879274, 1860258, 1086627, -912681, 2203318, -4737349, 592706, 2279554, -2368675,
+2609193, 3119757, 3454764, 2131378, 4538707, -994285, -2746095, -1451162, -1157494, 578747,
+-1041530, -3544959, 1677185, -1685775, -1846299, -2160906, 821413, -27380, -1074816, -879395,
+1411971, 78383, -153008, -403727, -129386, 634581, 951335, -179852, -45634, -826244,
+234076, -1465658, 148176, 933619, 1284732, -936840, -953483, 192200, 841814, -10582263,
+-7401303, -1053878, -4765266, -4078608, 2007360, -6026913, -5810554, 1671816, -2631741, -2362232,
+2419677, -1903744, -4115653, -450435, -310311, -1165547, -1882269, -1114007, -4720169, -296890,
+-3403762, -2465848, -128312, 4218732, -936303, 6097780, -3169686, 3661997, 4212289, -4732517,
+1650341, -1202054, 918586, -3352222, 1661079, 2160369, 3250753, -1673964, -3966402, -1387811,
+-2173790, 1264331, 1544041, -4820027, -601832, -3312494, -2651606, 896038, -3938485, -6322729,
+-1177895, 6192269, 1378148, 2161442, 344671, 1416266, 855772, 2273112, 2459406, 6944962,
+530428, -3100430, -3981435, -868120, -1890323, -525060, -8060580, 1662152, -562104, 2565169,
+-1066763, 704375, -1913408, -957778, 7913477, 1571958, 7257958, -2471754, -1306744, 540092,
+2075543, 688805, 2471754, -2423972, 2683281, -2823941, -1725503, 1425392, 1058710, -120259,
+144418, 42950, -590021, 181999, -1053341, -115964, -349503, -192737, 489626, 531502,
+-573378, -1040456, -613643, 49392, 61740, 155693, 361314, -443992, -444529, -452045,
+134218, -185220, 585189, 8590471, 9932649, 7619272, 5680094, 8010114, 3267933, 3473018,
+-718333, 2265059, 8458401, 886374, 2588792, -3153580, -2079301, 6456947, -4329864, -7933342,
+2408403, -6630893, 5721970, 1330903, 6863358, -2197413, -418759, -1705102, 2262911, 2727304,
+-85899, -6755447, -1379758, 5757941, -3832722, 2587181, 1538135, -1318018, -1651415, 6400038,
+4847408, 11176579, 4489315, 912681, 2689187, -963146, 688269, 3508988, 2109903, 9523016,
+-4078608, -2739652, 671626, 2439542, -1495722, 4404489, -4136054, 841277, -266825, -3198677,
+994822, 939524, -4305705, -5850819, -3605088, 4599910, 2241973, 537, -371515, 3466576,
+266825, 1136556, 6047851, 2963528, -1438814, -981937, 5376226, -4679904, 619012, -4220879,
+-1889786, -5449777, 1480153, -1149978, -3218541, -2129230, 3150896, 1922535, 563178, 1830730,
+-3015604, -526670, -257161, 2316061, 67646, 146029, 431644, 676994, 1718524, 1907502,
+1520955, 97174, 812823, 1724429, 98247, -1607392, 1468342, -826244, -314069, 336618,
+-267362, 1261110, 1165547, 563178, -2684, -466541, -462246, 529892, 733903, 246961,
+1120450, -2288144, -1449015, 1114007, -79994, 18690088, -331786, 9156333, -1661079, -1432372,
+9819906, -9614284, -3331821, -750009, 4849018, 3368865, -2062121, 1869385, 904628, -8710194,
+2198487, 4656282, 4132296, -9763534, -3438121, 1096827, -7005629, -1930588, 527744, 309238,
+943819, -1083406, 4449049, -3161633, 3535295, 7308424, 7298760, -2134599, -4205847, -760746,
+8221641, -483721, -457951, 47782, 793495, -4293357, 713501, 3449933, 500364, 805843,
+3296924, -2215130, 2211908, 1278827, -929324, 5770826, 544924, 4583267, 883690, -1564442,
+1982127, 3054796, 2625836, -157840, -4558571, -4147328, -5484137, -2455111, -225486, -22012,
+-672699, 4027606, 3449933, -2666638, -5385352, 140660, 2736431, 3308736, -3313031, -642098,
+3115462, -317291, -482647, 4163434, 1919314, 1953136, -1614371, -1388348, -301185, 1770600,
+2646237, 19864, 1988570, 693100, 112743, 350577, 621160, 2465848, 1825361, 2779381,
+-1496259, 1284195, 125628, 306016, -479426, 242666, 348966, 70867, 294742, -518617,
+1275605, 1268089, -1308891, 266825, 673773, 771484, -487479, 2552821, -5022965, -13935558,
+-3653944, -4718022, 877247, 2324651, -2402497, -2791192, -26329224, 526670, 8410083, -6139119,
+-9884330, 7365332, -11182484, -1689533, -5032628, -5861557, -3692061, -3684008, 339302, 4461934,
+-878321, 2484102, -2907156, 3362423, -2647311, -3993783, 1687922, -1502165, -6357626, -8040179,
+3768297, 374736, 3718905, 1152662, 8408472, 1190780, 2868501, -4082903, -7135552, -2056753,
+-3580929, 7045357, -3369402, 176094, 1755568, -3510599, 9787694, 6527814, 63351, -7866233,
+-10048613, -3391414, 3240016, -9002251, -304406, -4382478, -8640400, 788663, -13485124, -2971581,
+-1506460, -4991826, 8933532, -562641, -1500017, -152471, 5566278, 7200513, 2085744, -7217693,
+-2413235, -1829656, 3805341, 1816771, 2150705, -4055523, -5246840, 4050691, 2682207, 1016834,
+1283658, -254477, 2236604, 643708, 3410204, 990527, 734976, -294205, -179852, 558346,
+2172717, 3207804, 1892470, -781684, 1202591, -4005594, 1998234, 2390149, -745177, -331786,
+664109, -900333, -323196, -217433, -1304596, -1291175, -776852, -376347, 686121, 1597728,
+-316217, -1842541, -77846, -2604898, 825707, 3589519, 1474248, 2123325, 1436130, 5578626,
+-15049029, -22181896, 2692408, -5082557, 4913980, -6227703, -11041287, 250182, 10096931, 2045478,
+6184753, 4935991, 3816615, 2438468, -3576097, 2688113, 6703370, -10564009, -4959614, -3529926,
+-2385318, 3839164, -889595, 1306207, 6960532, 6059125, -2488397, -5966784, 1380295, -3350611,
+-2550674, -5783174, -4013647, -8795556, 2105071, -3299072, -75699, 7778723, -1560147, 1478543,
+2060511, -5606006, 4700842, 4631586, 6500433, -5711233, 10263898, -1680943, -7503845, -6349573,
+-8208220, 7644505, -2887829, -8728447, 2653753, -1346472, -6145025, 6545530, 8798777, -3036542,
+-7341173, 5452998, 1732482, 4276714, -634581, 11834782, 6957847, -6897718, -3422015, -3250217,
+-2687576, 3958886, 5418638, 7030862, -9127, 941672, 2698313, -2773475, 2566780, -752156,
+4539781, 6462852, -8741332, -3885872, -4406100, -2727841, -4501663, -325344, -3190624, 1500017,
+-193274, -253403, -392990, 1202054, -2172180, 5503464, -704375, 2368138, 803159, 1175747,
+-1090922, 256087, 125091, 369367, -1871532, 436476, -1227287, -1864016, -2911988, -795643,
+-201863, -418759, 77846, 406411, -616328, -322123, -1116155, -934692, 1684701, -20713554,
+-13959, -3762391, 1373316, -37581, 7816304, 5732708, 8096014, -1312649, 11043435, -5131949,
+7510287, 9193377, 1695975, 9163313, 1980517, 2383170, -2566780, -935229, -3849901, 7265474,
+-446140, -824634, 10234907, 6183143, 100395, 2759517, -865973, -340913, 6658273, -3801583,
+-6577206, -3758, -907849, 3381750, -18609020, 11196980, 12080132, 4769025, 2355253, 322659,
+-5913633, -12410845, 8205535, -5000416, -5640366, -3777424, 7365332, -5180805, 4545686, 4612258,
+-4405563, -2917894, -10717554, 4938676, -6970732, 4140885, 694174, 3708168, 6519224, 10406706,
+4465156, -4798016, -11443940, -2015950, 7004018, 11467563, 8608188, -1737314, -2275796, -7371238,
+-12257300, -1297617, 8477192, 3783866, 2672007, -2720325, 11250130, -383863, 3781182, 1088774,
+-2185602, 1063004, -5753646, -2799245, -2915746, 1911797, -1455457, -4106526, -2434710, -2838437,
+-3081639, 1225139, -4380330, -1820529, 825171, 749472, 3359738, 175557, 461709, 575526,
+-934692, 2750927, -889058, 3128884, 1112397, -904628, -2430415, -133144, 3001109, 2143189,
+-405874, -2954938, -803159, 2596308, 2308008, 322659, -562641, -366683, -1816234, 1995549,
+7925289, 27070642, 14795089, -1302986, 2630668, 2419140, 6029597, 10715407, -1428077, 2122788,
+18177912, 1872606, -719407, 10947335, 7693360, -7514046, 4570919, 1121523, 7361574, 5042292,
+-12503187, 9601936, -5748277, -800475, 1153199, 7523172, 1418413, 2059974, 5775121, 6568616,
+-6162741, 6746857, 20080582, -3499325, 9180493, 9372692, -4903242, 7357816, 2011655, -4783520,
+-5140002, 3584150, -4587562, -12414066, -1541356, -555125, 1347009, -15899432, -3822521, 4920422,
+-10010495, -6761353, -16531329, 5508833, 7697655, -11329050, -3987877, -5456756, 12071006, 305480,
+-6816650, -4799089, -7599408, 3856881, 10106058, -7135552, 3925063, -3030636, 4896263, 11373073,
+4821638, 8959302, 9147743, 11354283, 1779190, -6363531, -6312528, 4550518, 7230578, 1036698,
+4868346, -5093831, 2068027, -629213, -1549946, -5350456, 762357, -2380486, 332860, 4335233,
+1864016, 1819992, 1492501, 4786204, -2959233, 156766, -787053, 1411434, -549219, 145492,
+2063732, 521839, -1680943, 2548526, -554588, -3714610, 2302639, -2662880, -2108829, -2761664,
+-5537287, 2964601, -1269700, 2501282, -295279, -558883, 738198, 4083440, 2769717, 3637301,
+1705102, -92342, 1498944, 4193499, -1735704, 27827630, 7488276, 1127966, -1559073, -4036733,
+221728, 5203890, -3329137, -6440841, -9475772, 710280, 6854231, -8483097, 4221416, 5564667,
+-2335389, 18779208, 6696928, -4686346, -3153043, -1422708, 6804302, -2792803, -6209449, -6908992,
+4377109, -15066208, 590558, -4263829, -5439576, 4797479, 1126355, -5538897, -3345243, -5324686,
+7573638, -2502892, -11855720, -1474248, 338766, 860604, -6847789, -9755481, 985695, -1851131,
+-1253057, 3269544, -1993402, 9073655, 1950989, 5396627, -5746130, 13223667, 3922916, -6664716,
+8850854, 16737488, -4742718, -4172024, 8670465, 7888245, 3382287, 4780836, -10276783, -2810519,
+-11116449, 3242164, 10580115, 4698694, -13044353, -2723546, 4242891, -13025562, -20258824, -1819992,
+756451, 5721434, 18564460, 1416266, -2013803, -5830955, -4281546, 2833068, 4775467, 3870303,
+-192737, 2019172, 272194, -4145717, 2623688, 3122441, -5107253, -5040144, 5703180, -1947231,
+3391951, 2433636, 1758252, -1483911, 1301912, -213138, 2039036, 397821, 3048353, 2684,
+2705293, 1745904, 684510, -2481417, 5527086, 1646583, 5055714, -1124208, -1553704, 1723893,
+-3216394, -650151, 2461553, -3207267, 908922, 1714229, 1208496, 1090922, 2758980, -1133335,
+-4726075, -153545, -399969, -5216238, 861678, -2240899, -21597244, 10154376, 28708098, -11808476,
+20148228, -4558034, -4341675, -6311992, -10407780, 7714835, 296353, 5264020, 5217849, -18865106,
+251256, 8759049, -7642895, -4059281, -11874511, 20998632, -13105556, 10351945, 9787157, -12527883,
+-5151277, -4384088, 8820789, -10026064, -4078608, 10170483, -1770063, -2743947, -4956929, 12409234,
+2196339, -2025614, -5102421, 314069, -9446781, 10229001, -1207960, 4698694, 25551834, 17132624,
+-14700062, -10416906, 4021163, -1336272, 10695005, -5883032, -8615704, -3071975, -16022375, -6193880,
+-1894618, -12315282, -7027104, 27303644, 6523519, 94489, -1331977, -302795, 8047158, 9620190,
+-2019172, 9503689, 774168, -5217312, 1040456, -14565845, -1084479, -13495861, -7276749, 8141111,
+11933567, -17895518, 7279433, -4580583, -5667210, 8681203, -1254667, -8231305, -452045, -3219615,
+-6437619, 3321620, 2416456, -4493610, -11087995, -5339718, -1087164, -863825, 8812199, 2622078,
+2229625, -4765803, 119185, -1952600, 4750234, 5285494, -2768643, 2269890, 4023848, 4352413,
+3459059, 4947803, -1893007, 365609, -3325379, 293132, -3879966, -2077690, 1580011, -1067836,
+-3109020, -729071, 1772211, -5243082, -2506650, -2831457, -1489280, -1985349, -2296734, -22871238,
+3881040, 21264920, -5629629, -5392869, 4541391, -6566468, -5428302, 6019397, -852551, -1168768,
+-315680, -14387067, 24401320, -25975962, -2564632, -570157, 8846022, 5385889, 254477, -9845676,
+-7162395, 3136400, 19036368, -1527398, -8491150, -5733782, -13627394, -898185, -8033737, -6310381,
+-2864206, 4277251, -525060, 662499, -9255118, 1872606, 2531883, 5896453, 4808753, 5937256,
+-12537010, 83752, -2620467, 8217883, 1997160, 16645146, 3513283, -3819300, 1389959, -9009231,
+-147640, 7287486, 9286256, -14233522, -11143830, -1006096, 14803142, -23251880, 6035503, 26917096,
+14701136, -7150584, 2406256, -14409078, 6016713, 13321915, -22809498, 5127654, -11153493, -3082713,
+-30894774, 207232, -13060459, 12065100, 752156, -14267344, 9445170, -861678, -18546206, -2408940,
+-11755325, 7678328, -6582038, -9590125, 13063680, -2478196, 2257005, -4315906, -5767068, -1495186,
+5543729, 4261682, -3224984, -732829, 169114, -3187403, 1974074, 3256122, 4577899, -4629975,
+1786706, 2556579, -5640903, 418222, 2388002, -3929895, 321586, -2519535, 6107444, 3375844,
+7446937, -3488050, -2867428, 2585034, -7217693, -689879, -2117419, -1052267, -436476, 1591285,
+-4077535, 330712, -599148, 1477469, 1316944, 326418, -4115116, -6231998, -17362406, 27469000,
+8078297, 14367202, -16182363, -18261664, -3241090, 4803921, -4947266, -2471217, 9358734, 2500745,
+3004867, 8118025, -20089172, -2248416, 411780, 5108327, -13927505, 1814087, 2538863, -9825811,
+-5260261, -13523241, -9994926, -110059, 4475356, -10953240, 958851, -4987531, -9561671, 3728569,
+114354, 7705172, -21306796, -22435836, 4776004, -1971390, 8532489, 18728204, 2208150, -11868605,
+16889422, -8422431, -15678241, -12209518, -5102421, 1286343, -16660715, -6533719, 16535087, 22278532,
+9491878, 6191732, 4719096, -2648921, 14287746, 7978439, -16574816, -9138080, 130460, 1586990,
+15625628, 9945534, 2529199, -2474975, -1904281, -7730941, 10374494, 8040716, 18020610, 4032974,
+5260261, 2103997, 32339494, 3578782, 12532715, -13469017, 1158031, 12198781, -29294362, 2308008,
+3873524, 8156680, -3043521, 4289599, -3835406, -1095217, 5017059, -2537252, 15516106, -6343130,
+9063455, -2509872, -5529234, -3069828, -5981816, 49392, 2408403, 2924336, -1265942, -3128347,
+6446209, -2074469, 4301947, -2442763, -2515240, -4866735, 4826470, 5165235, 1089311, 356482,
+-4020090, -7016903, 3146064, -761283, 156229, 7984881, -2365990, 6969122, -1177895, 3994857,
+2749853, 5316096, 1157494, -5282810, -1056025, 18524730, 1234266, 23019414, -827855, -10707890,
+-11653320, -21792128, 3919695, -9266392, -668404, 1728188, 7727720, 11229729, 19123878, 19760070,
+-3147674, 17575006, -1388348, -1675037, 6625524, 14788109, 6425271, 4039954, -23823646, -12331388,
+-19385872, 9651328, 19278498, 3621194, -8428336, 13373991, 19339164, -2762201, 2945274, -4678830,
+16249472, 13655312, 11637214, -7062000, -12373801, -2092723, -3259343, -27525908, 4714801, 3614215,
+2377801, -7097971, -3699041, -30680026, -10873247, -27857694, -4915053, -20894480, -10823318, 19896972,
+5254356, 20970178, 1344862, -17402134, -8460012, -18101676, -34395708, 4724464, -21274046, -6315750,
+20208894, 8330626, 7925826, 1549946, -3888556, -1600949, 3951907, -14904073, 11832635, -25341380,
+-26026964, -1559073, -2232846, -3362960, -19116362, -4457639, 25270514, -1491964, 1586454, -6848862,
+-21834004, 11005854, -14667313, -5887327, -14598594, -9166534, -6795175, -4781909, -5224291, -3364033,
+405874, 2492155, -13645111, -6009733, 2717641, 2354179, 7746511, 3488050, -4479651, -5879274,
+5093295, -9366787, -1316408, 2772402, -7009924, 2156074, 2253784, 5070209, -4755603, -1781875,
+-2490544, -468151, 3534221, -2121177, -201327, -2813741, 5561983, 7453379, -2379412, -1302986,
+2144263, 2445984, 4849018, 6596533, 1337882, -1222992, -1499481, 10827613, 21814676, 18986976,
+20456930, -11790222, -20521890, 15783468, -9327058, 16312823, 4903779, -26205206, 6609955, 4881767,
+-29501594, 15863999, -13431436, -13735842, 8075613, 8979166, 1436667, 10658498, 835371, 532576,
+-6892886, -3997004, 6512244, -4098473, -10088341, 680215, -18984292, 6874632, -24141474, -14697915,
+938987, 9596031, -3259343, -9995463, 3792993, 7569880, 5675263, 447213, 19519552, -44758392,
+-10118406, -12255152, -14819785, 19423990, -15608448, -2136746, -36056252, -10095858, -4237522, 1887638,
+24129664, -5804112, 3099356, -14533632, 12267500, -18084496, -11659762, 9408126, -41864120, 6108517,
+22467510, 29111826, 22291954, 14082661, 32792076, 18082886, -326954, -8089034, -8336532, -12651900,
+-28152974, -3052648, 2707977, -39905616, -15721191, -12059194, -8934606, 12784507, 33514166, 39072392,
+25952876, -13100724, 10756209, -8442295, -1747515, 8854075, 6099391, -3397856, 2202781, 2920041,
+-685584, 1354525, -6046777, 3524558, 11067057, -5151277, 1566589, -9665824, 2483565, -4523675,
+-550293, -468688, 8583492, 15027017, -5273146, 948651, 3773129, 6124087, -8965744, -14054207,
+391916, 10954314, 3310883, -8962523, 8534100, 4427038, -8978092, 6394670, 4222490, -3500935,
+-2651606, -966368, -1552631, 1657857, 3568044, -3190624, 6295349, -38429756, 52076, 6413460,
+26948772, -8773544, 12455405, 11333345, 5961952, 6186901, -42038068, 33146410, 18051748, 41068476,
+15065672, -1792612, -15291157, -9704479, -9589588, -14897094, 10586558, 7789997, -15150497, -17205638,
+9038759, 12295418, 21408802, 5978058, -13383655, -19946902, 4159139, 3326989, 1311039, 2338073,
+38035692, 12839268, 7208566, 12482786, 13706314, 15442555, 271657, -24254218, 16926466, 53067544,
+-5529234, -14900315, -32452236, -7056095, 42749956, 4901632, 17620104, 5822902, -59381144, 12102681,
+10508174, 1116155, 5954972, -4282083, 766652, 11948062, -32051194, -13390634, 26916024, 9888625,
+3547643, -24182814, 16994648, 6198712, -21823802, -23673322, -15955804, 21332028, 44552232, 41450728,
+45671608, 46326056, 1651952, -20921860, -17251274, -40886480, -13553306, 12647068, -33231236, -514859,
+-27127014, 137976, 35919348, 13861470, 14653355, 17716740, 10958609, -11272142, -3921842, -13850733,
+19391778, -12147241, -10763188, 3281355, -2560338, -7346005, -13286481, -4059818, 13094818, 12326019,
+-6194417, 19210852, -1219771, 190052, -9166534, 2565169, 9743670, -2869575, -8008504, -7776575,
+4676146, -4461934, 10642392, 6590628, 8537858, 12638478, -13640816, 3003793, 757525, 5577552,
+-3161633, -6071473, 11278047, 2397129, 9115531, -5568962, 3042448, -8232379, -3031710, 18506478,
+39304320, -79104704, -27183922, 5612449, -45367204, -42624328, -17676474, -26087632, 3467649, -19345070,
+50361176, -5814312, -17083232, -7665443, -37550364, -11076721, -30185030, -13320304, 5966784, -40184252,
+-6053220, 30222612, -25134148, -7914551, 9473087, -655519, 13443248, 2189360, 670552, 10962367,
+4882841, -20211042, -3058017, 17053168, -8230231, -25048250, -7421167, -30268246, -14009646, -52650392,
+5749888, -36020280, 17826262, 5860483, -12355010, -46495704, 4943508, -5384279, 57388280, 22052510,
+1742683, 30289720, 14041859, -191126, 25724706, -29986924, -13324599, 1733556, 22841172, -24916716,
+-14130979, 81717656, -7146826, 42104100, -32479080, -543850, -22997402, 17404818, -7701950, 27411556,
+44479756, 705985, -30342334, 26135950, -32370094, -15459735, 11788075, -34744136, -22270480, -11383274,
+25565792, 47102368, -55925844, 47225312, 10195715, 13495861, 5923297, 6254010, 5742372, -7475928,
+9284646, 24259586, -11813308, 3903589, -1746441, 2797098, -26115012, -5238250, -7522635, 7659001,
+8961986, 25959856, -15778099, -9969693, -12139725, 17890150, -22679038, 5218386, 9333501, 7531225,
+9414568, -38922604, -8448738, 13487271, -5898601, -16860430, -1423245, 4148939, 1722819, 15931644,
+9024263, 12569759, -12210592, -11953968, 13918378, 3483219, 9623948, -9053791, 9692131, 5696201,
+2499134, 2945811, -2809446, -4368519, 1028108, -29680908, 61337500, -35249332, 22557706, 20098300,
+-31913754, 17479444, 9641665, 6868727, -5671505, 24203214, 12526272, -30871152, 21869436, 25410638,
+4945655, 4269735, 15387257, -452582, -30671436, 39799852, -22766012, 8959302, -16937204, -3965866,
+4992900, -7532836, 32456530, 7228430, -4317516, -7886097, -1728188, 6283001, -33088428, 10395431,
+-17173426, -11668889, -7974144, -170188, -16263967, -7813620, 3891777, 34215320, 316217, -7301982,
+-21922050, 9025337, 5979132, 902480, 26571888, -6596533, -2839510, 31562104, 9898289, 1718524,
+-30642444, -16131360, 19659140, 10899016, -28714004, 772557, -65161096, -32382980, 58272504, -13823889,
+31484258, 41191956, 11683385, 6874095, 18635864, -8151848, -22938884, 12104292, 3764002, -1663226,
+26243324, 16935592, -19002546, -45628120, -9494562, 18320720, 5811091, -1301912, 14642617, -17374216,
+25400436, -12702366, 9448928, 11681774, 5123359, 17268990, 13179644, 20976620, 2316061, -5744519,
+7584912, 20320028, -5480379, 17758080, 10705743, -11890617, 3539590, 9319542, 6350646, 3694746,
+12824235, 10557566, 4645544, 21310554, -6926172, 2226941, -3199214, -1634772, -5570036, 18888730,
+15734076, 12454331, -6069863, 2189897, 22462142, -6106907, 16445430, 14614163, -44560, 25635586,
+-23467164, 3084860, 35392680, 4341138, 9975598, -7570954, 24894168, 4635344, 34817152, -10747082,
+-58195732, 9895605, -7023882, 20044612, 6117107, -19729470, 10212895, 12011413, -22508312, -24697136,
+-16550120, -41238664, -41522672, 28557238, -6638409, -42649024, -13100724, 4364761, 14085882, 13500693,
+-26151518, -28333900, 2755759, 39402568, -18881214, 15198279, -26550414, 9408663, -29949880, 19463718,
+20532628, -14691473, -30823370, -21211232, -3466039, 12053826, -13250511, -8746701, -11037529, -39209292,
+-33886756, 17708150, -28455232, -5858873, 10095858, -23521388, -37936908, 14419279, 19859392, -2597382,
+-45664092, 20352776, 17879948, 57647588, 239444, 15086073, 11271605, -24718074, 9415105, -7732015,
+-49902688, -7713225, 30466350, 7181186, -25256556, -62668940, 39507256, 50442244, -15044734, 40782324,
+47543140, 2365453, 2130304, 37502580, -24372328, 1798518, 62941136, -46510200, 26975078, -39855684,
+-10936597, -3330210, 27095338, -9299141, 3921842, 15114527, -491774, -35291208, 38757248, -7132330,
+-4560182, 5862631, 16180752, -26554172, 11578158, 6713571, -3997004, 7969312, 9423695, -24617142,
+-3323768, 5623723, 12886513, 26679264, -2258079, -23589572, 11948062, 27384174, -21862458, 26707718,
+-12692702, -2950106, -9419400, 30129196, -20893942, 7066832, 18897320, -13168370, 4753992, 3227668,
+-17411798, 3704946, 7532836, -3423089, -13214541, 8490613, 10998338, -6270116, 21855478, -32947768,
+8114804, 9451612, 479963, 1843078, 22563610, -5069672, 12657269, -26199300, -82958368, 22434224,
+-9587978, 61962956, -21329882, -13605383, -24897388, -70965208, 32439352, -41350872, -24209120, 1274532,
+-116501, 54758148, -39202852, -27409408, 36019208, 21478058, 18760418, -6782827, 17922362, -12677133,
+-18096308, -16605954, 42241540, 35188668, 54930484, -17467632, -20617990, 998580, -3673271, 20211580,
+-33140504, 7125888, -34831112, 18615998, 34078420, 11746199, -28144384, 19184546, -24816322, 55819544,
+28362890, 7931194, 7473780, -8582955, -43789340, 24760486, -59385440, 12433930, 11016054, 29033442,
+22980222, -51228224, 15430207, -32255742, -19198504, 14000520, -5116380, 19171660, 12230993, -46832860,
+19138912, 43101608, 56913148, -16477642, 16809428, -23204098, 39943732, -56719340, -3005403, -10296110,
+17919678, 37389300, 53625888, -42883636, 10692858, -57398480, 36928664, 75728328, -19220516, -51527796,
+-4144644, -38849588, 49700288, 12663711, -25367150, -7126962, 2895882, -8446590, 35501124, 13418552,
+-20044612, 19153406, -28385438, 1903744, 26653494, -5506685, -32715840, 36341864, -52207476, 15192910,
+-7863548, 20931524, -1293322, 13023951, -12016782, -6388227, 5339181, 4643397, 5568962, 24828670,
+-25310242, -21232170, 1212791, 5774047, -5821292, -26372172, -19295140, 38765836, 10475962, -17149804,
+-19804094, -44125956, 52938692, 41467372, -16082505, -14120779, -30808338, 1226750, 39571144, -65168076,
+46535972, -6029597, -1832340, 15484968, 12962748, 18437758, 5099200, 9034464, -22964116, 21797496,
+5909875, -23331336, 15726560, -9244917, -431107, 21314848, 12249784, -33216204, 18631032, -15684147,
+27653146, -20119238, 6947110, -10245644, 12831215, -9760850, 5859409, -14568529, 31811750, -2743410,
+794569, 9570798, 10612327, -16065325, -3444027, 7380365, 10554882, 9806484, -11294153, 4141959,
+381715, -32292786, -2780455, 8512088, 11829951, 5298916, 7549479, -29033442, 4549981, -1575179,
+2847563, 6830609, -5864241, 6468221, 4767414, 2878165, -7144678, -6452115, -2346663, 33879240,
+-11963095, 6852084, 12443057, -6927246, 11834782, -13424457, 11401528, 6113349, -9184788, -13504988,
+8478802, -8243116, 6627135, -12131135, -10700911, -4716411, 15403900, -3862786, 1388885, 3237869,
+-1226213, 3828427, -12387223, 9426379, -8029978, 20545512, -19097036, 8999030, -11435350, 10276783,
+-9358197, 8242042, 125091, 13912473, -12050604, 6555194, -6215892, 801548, 2338610, 8239895,
+-8681740, 2103997, -9360344, 13187697, -11085311, -2977486, 6534256, 2785823, -5459441, -1520955,
+7393786, 5019206, -18207976, 10189810, 802085, 170188, -2005750, 3723737, -2354179, 1992865,
+-1494649, 2407866, 514859, 4782446, -5214627, 13001940, -16545825, 51849920, -3747896, -16776679,
+-25608742, -11626476, -14381161, 18817862, 10864120, -13663902, 1125818, 1620813, 6129455, 852014,
+13008382, 4502737, 10241886, -3510599, -384936, -3071439, 4792110, 11125039, -10340671, -60666,
+-5126581, 367757, 13538274, -7685307, 1303523, -3470871, 5323075, 2760590, -7456063, -2753611,
+7960722, -2448668, 12991202, 9256728, -13595182, 4354023, 2859375, 7124277, 2991982, -12830141,
+8665633, -2401961, 8426726, 6757594, -15337865, 4202626, 24696, 3448322, -1730335, -6729677,
+10900627, -2685965, 4935991, 259846, -3301756, 5054103, -6542846, -918049, 9086540, -6260989,
+-7532836, 15180562, -9826885, 14161581, -1498944, -11477226, 23453206, -21559126, 18716930, -6649146,
+-11257109, 11868605, -11060615, 3266860, 3799972, -10804527, 9069360, -1949915, -722628, 5802501,
+-7536594, 9821516, -3211562, -762357, 2394444, -1683627, 3424163, -1653026, 527207, 2859375,
+-2796561, 4575214, -565862, -2619393, 5607080, -8749922, 4613869, -3897146, -1826972, 5440113,
+423054, -1654099, 2795487, -2086817, 2774549, 1420024, -4085588, 2700461, 515396, -933619,
+-726923, 2436857, 490700, 4511327, -3606162, 1271847, 542777, -2574296, 4977330, -1470489,
+-835908, -25397216, -43562780, 54951424, 157414304, 24879672, 15255724, -115089016, -142278304, -45605572,
+-27970438, 96225520, 146793936, 75520024, 21888228, -49427556, -106209176, -96898224, -81145352, 6397354,
+121610392, 101683352, 58327268, 19775640, -52042656, -67532992, -53611392, -51851528, -18273476, 24542516,
+33777232, 69821672, 50016504, 12097849, -16935056, -10004589, -56225416, -27357868, -28411208, -38532300,
+22922240, 43156904, 24987582, 62845036, 16710644, -14973867, -24150064, -41849088, -33033668, -5214627,
+-10208064, 12797929, 26032870, 23144506, 16578574, 11244224, -5708012, -22995254, -16218870, -19131394,
+6162741, 22230750, 7362111, 5432060, -9651328, -20007032, -3718368, -86436, -273267, 16134045,
+14504641, 16172162, 6418829, -5624260, -17357574, -25213068, -25744034, -16796006, 17878876, 26396332,
+32813550, 22639310, -5685463, -12861816, -13588203, -27021250, -11897596, 9809705, 5207648, 4850092,
+7888245, 3741454, 3037616, -4217121, -5394479, 4221953, 9392557, -233539, -790274, -6490233,
+-8856759, -4651450, -5372467, -3205119, 6969122, -1260573, 14554570, 17908404, 10395431, -6248641,
+-10171556, -11458973, -14414447, -10586021, -14265197, 7611756, 19707458, 17926656, 10654203, 11185169,
+4268661, -11062762, -21550536, -22101902, -11191611, -2306934, 7006166, 15702937, 23120882, 18925236,
+3592203, -12224014, -20303384, -14921253, -4921496, 124017, 5583995, 3523484, 8735963, 11130408,
+3325379, -4839355, -6562173, -3712462, -2729452, -2689723, -744640, 784905, 5194763, 3124589,
+372052, -63888, -309238, -997506, -2262911, -2369748, 716186, 729608, 443992, -177704,
+214748, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-2868501,
-10933913, 1274532, 2968359, 1044751, 1568737, -2637647, -6599754, -1277753, 3503083, 1244467,
--3261491, -461709, 2681670, -691490, -3928821, 1185948, -4530117, -2815888, -130460, 1247151,
--1280974, -1028108, 2824478, -3917547, -83215, 494458, 1903744, 1498944, 1451162, 4781373,
-2170032, -5949604, -1506997, -2706903, 762357, -157840, -440771, -3748433, -4872104, 6461779,
--2976412, 1576790, 1890323, 1615982, -6127845, -3492345, -1599339, 672162, -472983, -196495,
--556198, 1029182, 2347200, -3213709, -1074, 1714766, 2008971, 2384244, 886374, 38655,
-2319282, 815507, -998580, -300648, 3761318, -2793339, -2944200, -1597191, -1178969, 3202972,
-1900523, 758062, -1195075, 3085934, -1376000, 1596117, -3653407, -355409, 282931, 753230,
-759672, -2958696, 799401, 2081985, 1051730, 346282, -265751, 2725694, 1301912, -283468,
-1751810, 1033477, 454730, -408559, 587337, 462783, 380105, -529892, 665183, 179852,
--550830, -445603, 946503, 199716, -93416, 2684, 36507, 149787, -883690, 622770,
--248571, 486942, -695785, -6215355, -3741990, 2647847, -6080063, -8597451, 1672353, 738734,
-1060857, 1256815, 1210644, -7391102, -1206886, 2146410, -4686346, 4924717, 4787815, 4108136,
--1661079, 377420, 1112397, 3146064, 717796, -106837, 619549, -2138894, 1985886, -772557,
--778463, -1005559, 6073084, -3623342, 2102387, -2287070, -1969243, -2054068, 1611687, 3321084,
--3543885, -1767379, -1919850, 2430415, 2289218, 3692598, 2510409, 492848, 3236258, -2756295,
-1945620, 739271, 845572, 6776922, 1603633, 3350611, -5561446, -1502165, 2294050, -2783139,
-2639258, -1203128, -2046552, 724239, 4067334, 2742337, 1876364, -995359, 833224, 3030636,
--3667365, 4837744, -659278, 3964792, -1610613, 3271155, 3906273, 3288871, -1836635, -4880157,
--7202660, -4866198, 470299, -2553358, 4758824, 788663, 745714, 1272384, -3395709, -1052267,
--1527398, 1708323, -918586, -654446, 2096481, -2560338, -903554, 1013075, -1420560, 117575,
--1585380, -1267552, -1003949, -285078, -1690607, 10443750, 7504382, 6148783, 5117454, 5767068,
-2436320, -454730, -127238, -2141578, -638340, 7587597, -3311420, -3413425, 5236102, 3886946,
-5034239, -3518652, 1524713, -1330366, 1138166, 2243047, 3143379, 460098, -2293513, -1704565,
--2951180, -1054415, -1823214, -5381594, -651761, 4531728, -3526168, -613643, 1676648, -2772402,
--2510409, 2563559, -1382980, -3594351, -1924682, 2048699, -3069828, -3954054, -1801202, -1173600,
-1336809, -2758443, -5714991, 406411, -938987, -799401, 1660005, -4691715, -2281165, 88047,
--1953673, 2589329, -651224, 1118839, -8416525, -2551211, 4778688, -1875290, -4628364, 1385664,
-834297, 1311039, -1713692, -6677601, -3019362, 7523172, 526670, 2776160, 1606318, -1074816,
-2308545, 3138547, 1334661, -1549946, -3579318, -1074, 916439, -2718178, 1253057, -3524558,
--340376, -2245194, -1079111, -2974265, -544387, -1697049, -2139968, -1662689, 355409, -735513,
-410706, -806917, 324270, -1495722, 1104344, 586800, -383326, -267899, 1429687, -24159,
--471373, -1328219, -653909, -597537, -67109, 136902, 68183, 14810121, 9098351, 8611946,
-158377, 865973, 693100, -3520800, -7835631, -2953327, 5924371, -4465156, 2684892, 8012799,
-650151, -2524904, -996969, -1608465, -844498, 3249143, 4604742, 178778, 1359357, 1893007,
-3002182, 196495, -4210142, 1315334, -6786049, -2028298, -857383, -1870458, -1233729, 864362,
--1625108, -3543885, -2778307, -1263257, 290984, -1509144, -4119948, 4914517, -1841467, 377420,
--1278290, -3186866, 4010426, 11205570, 2684355, -3867081, 6599754, 1536525, -2054605, 2039036,
--1163936, -4283156, -2147, -1781338, 1646583, -3707094, -6485938, 279173, 1047972, -7812009,
-2313914, 1645509, 4350265, 2511482, 5757941, -1936493, -3935801, -2269890, -1246077, 2842195,
--1062468, -5014911, 3404299, -2434173, -4615479, 3151969, -4610648, -2484102, 1414655, -1634235,
-1553168, -1070521, -1923072, 1540283, 3852586, -877784, -1946694, -675384, -36507, 1381906,
-2697776, 804770, -830539, -999654, -1034013, -314606, 614180, -1959579, -726386, -565862,
-2960843, 1538672, 2085207, -340913, 131533, 1654636, 1068373, 806380, -125628, 290447,
--7620883, -12045773, -3698504, -6026913, 8631274, -1969779, -1056562, 3232500, -7967701, -5613523,
-4781909, -3860102, -3585224, -198105, -325881, 849867, 3150359, -1324461, 1433445, -2076617,
--1545115, -147103, -1367410, -3490735, -314069, -749472, 3645890, 3692598, 3237869, -4323959,
-2007360, 1465658, 6047851, -3047279, -226023, -2072322, -4628364, 6592238, -6252936, -3067681,
--2435247, 1557463, 5468567, -5059472, 5657009, -609885, 3049427, 4719096, 765041, 3639448,
--6735583, 1489817, -2540473, 354335, -7133941, 141197, -2458869, -6380174, -4907537, 391379,
-4713727, 256624, -3434900, 5375152, -1843078, 3115462, -421981, -6620692, 9280887, -5782100,
--1147293, -3284576, 2320893, 3777961, 2496987, 3486440, 7516193, 5746130, -955630, 1210644,
-3551401, 2248416, -2670933, 3828963, 2977486, -549219, 1694902, -3731253, -5158793, -539018,
--1658931, 2914135, -3021510, -616328, -2903935, -659278, -1330366, -419833, 878858, 1091995,
-601295, -114890, -724239, 1757179, 893890, -1787780, 1311039, 98784, -4463008, -385473,
--1599875, 2571075, -673773, -288300, 942745, -476205, 899796, 2019708, -123480, 1315334,
-1399623, -255014, 529892, 2842732, 3246995, -8528731, -12162811, 1367947, 1023813, 688805,
-7844758, -2533494, -8531953, 910533, 999654, -2245194, -484258, -7499013, -1474784, 945430,
-1124745, 8412767, -1460826, 7540889, -1809255, -1930588, 641024, -7458748, 3201361, -2802466,
-4564477, -1245004, -1909113, -2761127, -1342714, 282394, -5571647, 9677635, -6680285, -10846940,
-3264175, 516470, -7612830, -2237141, -14624901, 271120, -5196911, -52076, -5643587, -4573604,
-813359, 539555, 2542084, -4610648, 3717294, -5204964, -10089952, 1226213, 2820183, -3042448,
-3334505, -1711545, -5588826, -4919348, -6799470, -3215320, -704375, 1141388, -2018635, 6354404,
-42950, -1952600, 573378, 406948, 1341104, 1009854, 767725, -6048925, -5654862, 1229434,
-4049617, 2403034, 691490, -1314797, 5025112, 2775086, -2304250, -1694365, -5569499, -2286533,
-2523830, 1201517, -3023120, 1253594, -822486, -879931, -1402307, -1745367, -581968, -2310156,
--1738925, 981400, 492848, 1415729, 2434710, 208306, 2140504, 122407, -1358820, 2014340,
-1283658, -387621, 325881, -1126892, -1108102, -16643, 137976, -1264868, 94489, -377420,
--22549, 0, -240518, 1313723, -2052458, -321586, -584116, 118112, 763967, 1344862,
--18781356, -4739497, 763967, -4818954, -3489124, -6023692, 1564979, 2085207, 4292820, -3253975,
--3995393, -4561792, 2280628, 5031018, -2505040, -2188823, -1274532, -802622, 2411087, -10507637,
--2576444, 5898064, 1942936, -3095061, 1133335, 5222144, -504122, -1362578, 1846836, -354335,
-12878459, -5559835, 3158949, 1012539, -5407901, 1760400, 1221381, -6186901, 4363687, -8781598,
--840740, 7730941, 1714766, -245887, -1621350, -6008659, -5160940, 1362042, 3343632, -2273112,
-1633698, 6404870, 3193845, -2684892, 3969624, -5718212, -13400835, -1791001, -5880347, 3714610,
--3763465, 9510131, 4779225, -452582, -1553704, -12363600, 3905199, 4707821, -3778498, 7535520,
--5854041, 2291902, -9817221, 4549981, 3457986, -11201275, -7111392, -2304250, 2776160, 3709778,
-8168491, -1138703, -381178, 5288716, 1241246, 22549, -2349347, 1208496, 1241782, 1587527,
-1751273, 431107, -201327, -1019518, -1142461, -3019362, -2491618, 2010045, 1443109, 1035624,
-2512556, -1009854, 1222992, 1272384, -616328, 2149631, -267899, -17180, -492311, -2426120,
--511101, 2800319, 649614, 2081449, -751082, 768799, -1078574, 3330747, 338766, 2795487,
-1254131, -1359894, 751082, 4720706, 7927436, 18341658, 19556596, 3929358, 5861020, 63888,
-2795487, 184147, 2064269, -5224291, 2431488, -3245922, 4336307, 4109747, 10071698, 1559610,
--2032593, 6317897, 4555887, 7597261, 379031, 4728759, 2749853, -2335925, 2366527, 11304354,
-1801202, -4873714, -2627446, 8366597, 5173825, 4027069, 7777649, -5976447, 2336462, 9270687,
--9230422, -11031087, 3649649, 5919539, 9624485, -4167192, -7179575, 5827197, 2113661, -870268,
-3619584, -1457068, -878321, -52613, 13696651, -4951561, 2777233, -3302830, -2122251, -1612760,
-7141457, -944893, 15939697, 7645042, -7654169, 8909373, 1941862, 4153234, 1914482, 1935957,
-2171643, -2917894, 5376762, -12609487, -3333432, 5770826, -12845173, 4398047, -10380399, 2437931,
-11452530, 2832531, -79994, 3148211, 1087701, -3083787, 769336, -3277597, 373125, 2639794,
--7723425, 4423280, -1409286, -1837172, 513785, 2394444, -2031520, -3077881, 1030792, 2781528,
--1479079, -2604361, -2571612, -1506460, 1061394, -1840394, -1657857, 1731946, 2410551, 1130113,
--1292785, 1576790, -1155346, -3980361, -1813013, -64961, -2038499, 1131724, 808528, 1661616,
-2692945, 3967476, -1897302, 5597416, -1981054, -3280281, -1135482, 1980517, 408022, -3335579,
--2182917, 30239790, 5273146, 4748623, -8848170, 13032005, -4322348, -580357, -3419331, 715112,
--8469139, -654446, 4021700, 941672, -6896644, 8595303, -2058363, -4480188, 1262184, 2684892,
--8880919, -12520903, 5211406, -5179731, -7364795, 1438277, -13959, -3811247, 6543920, -6581501,
-2193655, 6326487, -1094680, 9225053, 2940979, -11724724, -12208981, -5249524, 824634, 2212445,
--9640054, 3481608, 3553012, 1824824, 3147137, 4254702, -10019622, -5032091, 2952253, -11226508,
--4019016, -282931, -11573326, -6235219, -3932580, 2337536, -5908802, -12635794, -5945309, -6758668,
-14664092, 7050189, -1152662, 1988033, -3876745, 11614128, 13996762, 1555315, 9396315, 6808060,
-2738042, 1669669, -5354214, -1184337, -4723927, 6765647, -8877697, 290984, -2105071, -13700409,
--4106526, -1983201, 7473243, -6784438, 3767760, 3190087, 1434519, 707059, 3263638, -3280281,
-2612414, -1980517, 2895882, -730681, 4264366, 1230508, 401043, -2222109, -784368, -5353677,
-2904472, -746787, 4582730, -4369056, 28454, -455267, 2746632, -479963, 2457795, 1025423,
-1354525, 1288490, 719944, -2927557, 3419331, 4303557, -2153926, -3103651, -3599183, -1508070,
--201863, -1307281, 405338, -20629802, 13928042, 22355304, -16768626, -9987410, 4606353, 4010963,
--3401614, 7346005, 1998234, -6250251, -7636989, -156229, -2452963, -5452998, 2793339, -2506114,
-359704, 6184753, -8315057, 1753957, 1119376, -4936528, 712965, -7841537, 1537598, 11520713,
-5880884, -1148904, -3693672, -938987, -6566468, -6992744, 3452080, 5831492, -1828046, -3215857,
--2283849, 3491809, 5815386, 2794950, 10646150, -5713917, 4389994, -2748242, 1062468, 6645925,
--2370285, -2087354, -12639552, -1927367, -9782325, 4940823, 3383361, 12618077, -10783589, -3968013,
--10436234, -17194902, -2870649, 7195681, -11865384, 2652679, -1294933, -8657043, -10203769, -12873628,
-17330730, 670015, 10303090, 7574175, 8756901, -3935801, -11488501, -8697846, -10749229, 3782793,
-8471286, -8049843, 3835943, 9028021, -6069863, 1051730, 7333120, 8414378, 2047089, -2987150,
-3629247, -1484448, 1952600, -8928163, -787053, 3455301, -3003256, 1167694, 591095, 404801,
-2037962, 3393561, -3504157, -1244467, 2092186, 3025805, 883153, 1480690, 2976412, -612570,
-3213709, -2652679, 2215130, 3229816, 3621731, 416612, -1312113, 2814814, -2233383, 711891,
--471373, -1920387, -914828, -1894081, -473520, 916439, -2318209, -6519761, 2353105, 3587908,
--16137803, 11657078, -1468342, -6052146, 9983115, 3525631, -9722195, -13922136, -5378910, 35970,
-284005, 666257, -4963372, 15816754, 6555194, 4773856, 3651259, 4968204, -4816269, 1189706,
-3142842, 2304250, 14212047, 1471563, -21182242, 2597918, 8813273, -7912404, -11909944, -2533494,
--6467684, -3833258, 990527, 14963666, 8968965, -1531693, -344671, -4530117, -13116830, -4450660,
--10834592, 7719667, 10581189, 120259, -5877663, -2157147, -2429878, 4836133, 6737730, 7132330,
--16522202, 3171833, 572841, 1444183, 11492259, -6719477, 4708358, -6133214, -4405026, 1197759,
-7523172, 13517873, -2141578, -8766565, 2840047, -15769509, 12591770, 6780143, -1551557, -6521908,
-3409667, -3652333, -7770133, -6481106, -7042673, -3376918, -1470489, 468151, 6676527, -5101348,
-18344880, 762357, -2771865, 1050656, 5484673, 246424, -192737, 5945309, 4109747, 3067144,
-246424, -2883534, -2211908, -685584, -384936, -2659659, -7415798, 3940096, 3768297, -2808909,
-1064615, -4125853, -3051038, -1423245, -767725, -103079, 6602439, -1345399, -2010582, -1058173,
--333397, 4036733, 7355132, -2376728, 4149475, -1097364, -4508642, 5291400, -4885526, -3986804,
--2577517, -4023311, 926639, 3124052, 1656247, 3203509, 119185, -1179505, -222265, -3251290,
-2036888, -1855426, -6988986, -1709934, 7741142, -13870060, -3935801, 8979703, -11275363, -1156957,
--1119376, -1501628, -13132399, 13056701, 5661841, -9087077, -1561758, -3894462, -3328063, -19956566,
--2797634, -9115531, -22526030, 4818954, 3489661, -10242960, -8470749, -12071542, -13744432, 11724187,
-6617471, 12342662, 442382, 25894358, 1222992, 13528610, 18614388, -2150168, 5695127, 19177566,
--12908524, 5919539, -7776039, 13195213, -4136591, 25691420, 11676942, -7989176, -12070469, 2012192,
-5960878, 10720238, 2886218, -9283572, -2136209, 8511015, 19092740, -7965554, 12806519, -4656819,
-7817914, -14937896, 5905043, -8118562, 5915244, 983011, 1973538, -2705293, 11802570, 16478716,
--29925184, 9090298, 6238977, 4456029, -5456219, 3948686, -21468930, 1840930, 385473, -3337727,
--8200167, -7119445, -7092602, -2056753, 15321222, -8813273, -5178120, -12402255, 456340, 11018202,
--5510980, -6148246, 8530879, -303332, 6196564, 1381369, -1510755, 156766, 2736968, -5922223,
-3008088, 1201517, -5093295, -4263829, -2488397, 1498944, 3457986, 3558917, 10385768, -1095217,
-7867843, 3870303, 2567317, -5182415, -1609002, -7828652, -3532074, -1300301, -2619930, -3714073,
-4358318, 2529199, 5206037, 6671158, 1256278, -1500554, -841277, -4257923, 2596845, 14920180,
-15857019, -3458523, 16487306, -846109, -3438658, 1302986, 9270687, -3470871, -4198868, -1925219,
--11718818, 1924682, -3358128, 18461916, 12152610, -8798777, -9322763, -17526150, -6416681, 12729209,
-22930294, -10434623, 7083475, 1537061, 3017752, 12492986, 8940511, -17955110, 3566970, -6409165,
--3649112, -7406134, -4048544, -7816304, -17307644, 3034931, 11573863, 4439923, 27108760, -6586869,
--3739306, 18837726, -6867653, -1046898, -4204236, 4993437, -20686710, -13272523, 7186554, 15477988,
-22548578, 26919782, -19782082, -10257993, -1040456, 9008694, -890132, 30544734, 8497056, 4570382,
--23698018, 1650341, 170725, 11464341, 14950244, -11136850, -3696893, 4679904, -4860293, 5906,
-16986596, 6135898, -16797618, 4389994, 8857833, -8057896, 26418344, -9129490, -14128832, -19824496,
-14658723, -3165928, -16646756, -13186623, -3023120, -606127, -6624450, 404264, -7211787, 1414118,
--10040560, 714038, 4904853, -3450469, 3862786, 781147, -6072547, 693637, -96100, -1149978,
-647466, -4107063, 4987531, 68719, -2546379, 5723581, 5791227, 282394, -1598265, 2572686,
--5458367, -2245194, -4385699, -800475, 4504884, -3520800, 1971390, 4470524, -8209830, -2905546,
--1692754, 1385664, -1552094, 3572339, 7949448, -2210298, -4752382, -2279554, 5133560, 1496796,
-483184, 4156455, -2386391, -1664837, -1498407, 3672734, 31316218, 14855218, -8227010, -2637647,
--28894392, 2261300, 7649337, 2028298, 43103220, -5435281, -3260954, -18917184, -16356846, 6732361,
--13373991, -8152385, -8968429, -6015639, 10710575, -6972880, -12295418, -10586021, 963146, 10829223,
--13904957, 3158412, 6291590, 1422171, 15554224, -1776506, 1224066, -15776489, -22244172, -9131100,
-10198400, -12242267, 2981781, -10273025, -38836704, -20879984, 11647414, 866510, -22252226, 3466576,
-31008054, -1396401, -799938, -12069395, 6788733, -13321915, -23939610, 641024, 3644817, -9253507,
-4603668, 9051644, -2212445, -7790534, 6468221, 8422431, 15564425, -8909373, 11700028, 15025943,
-6324340, 26102664, 2937221, -16159814, 19017042, 1193464, 3196530, -3416647, -3809099, 11791833,
--11602317, -1616518, 28933584, 22732188, -14013941, 14572287, -4168803, 26892400, 11330124, -9242770,
--21404506, -868657, -7809325, -9236864, 6074158, -8313983, -222265, -2073932, -7457674, -12474733,
--2422362, 10699837, -11393474, 142808, -7060926, 1173063, 4515085, -4538170, -13332115, -2267743,
--6288369, 8237211, 4975183, -3163244, -8804683, -3576634, -9474698, 5834713, -4628364, 3219078,
-3791919, 5571110, 4414690, -7291781, -5191542, -8202851, 2517388, 5456756, 757525, 10748693,
-11335492, 6245956, 4645544, -22498650, -23877870, -28525026, 39322036, -21771726, 5166309, -1205812,
--12511240, 19969450, -23490250, 10159208, 41813656, 25741350, 5959267, -33907156, -1919850, -22371948,
--11365020, -20429548, -1957431, 5806796, -3695283, 16065325, -7740068, 2672007, 7924215, 22451942,
-3105261, 3099893, 27156542, -17889612, -2554969, 11985106, -5262409, -13874892, -9241159, 13692356,
--11958263, 5742372, 23240068, -6474663, -41962368, -2563559, 10473815, -51515984, 31060130, 23970212,
--19569482, 31947578, 21626234, 14256070, 33112588, 712428, 16997334, 1962800, 1974074, 11938398,
--21103858, 21019034, 28515362, 21973052, -22719304, -4438849, 31341450, -15235860, 24840480, 22814866,
-53289808, 32174674, 1782948, 3689377, -6950331, 6690486, 9235253, -30920006, -44302588, -15411953,
-3787088, 1650341, -6423124, 34622268, 16256451, 6522445, -15293305, 13728863, -10859825, -13677323,
--7059853, 15673946, 18185428, 3521873, -3365107, -3517578, 466541, -21451214, -5162551, -5540508,
-6853694, 3985730, -11218991, -8480950, -611496, 16909824, -4807142, -6518150, 351650, -6750615,
--17235704, 8575976, -3798362, -6704981, -10154913, 59056, 5581847, 1119376, -30578020, -1727651,
-14895483, -2280628, 481573, 2506650, 4229469, 12776991, 10040023, 446140, -271120, -4907537,
--1715839, 24009940, 29700236, -58271968, -53360672, 23273354, -15335181, -16805134, -6995428, -20308752,
-7216082, -32898912, 41539848, 15617038, -17307108, -372052, -16929688, -12733504, -13645648, -15623480,
--10123775, -39684424, -35655208, -6651831, -8095477, 2268280, 3390340, 6899328, -2501282, 5061619,
-6649683, 17656610, 19559818, -7377680, -9875740, -11581916, -9816685, -22458920, 33427730, -11805791,
-8158827, 24814710, 23466628, -8907225, -10043244, -18701362, -12270722, -15357192, 25693568, 2731599,
-3176128, -31793496, -11268920, 45938972, -4451197, 42768212, -8637179, -16035260, -10104984, -18126372,
--18551574, -3413962, 207232, -25523380, 2145336, 12183748, -1031866, 9573482, -58887224, -23810224,
--16486232, 31259846, -7472706, 5135171, 10683194, 49080740, 13928042, -4537633, -5001490, 42261404,
-25534118, 6222871, 8247411, -2177012, 33564632, -14004815, -19142132, 10334765, 15775415, 28003186,
-26064546, -15289547, 17688286, 13217762, 14253923, 4227322, -10193568, -20143934, -17093970, 10632728,
-14751602, 7866770, 5302137, 17407502, -1721208, -4836670, -1001264, -1469416, 9069360, 5432060,
-11836393, 20682416, 14607721, 23660974, 6387153, -21314312, 6752763, 5668820, 18501108, -369904,
-14496051, 6167036, 13939853, 301185, -26785564, -3482682, -5893232, -1820529, -30786862, 63946696,
--20648592, -12836047, 37896644, -24022826, -36273148, 33646236, -48828408, -14120242, 11511586, 8386461,
--34059628, -13357348, 29237452, 190589, -5761162, -19013284, 22948548, -22762252, 1509681, 18067854,
--6027450, 16589848, 119185, -8189966, 5557688, 3943317, -9889699, 15774878, -8677445, -3514894,
-4712116, -308701, 982474, -2960306, 4684736, 10012106, 16183974, 23295902, 11427834, -9619116,
--2682207, -14773614, 13659607, -4912369, -21345988, 5015448, 91805, -12160663, -29180544, 20550882,
-1560147, -13503914, 32991254, 1899449, -10205379, -5949604, 48863308, -45703284, -49195628, 30003568,
-46837156, -86405616, 428423, -31983548, -29031832, -12853227, 31449362, -24286430, 41618232, -5889474,
--1019518, 55919400, -15781857, -43290584, 53761180, 63311040, -61478700, 68732360, -23152022, 1693828,
-56829396, -19017042, -21735756, 15581068, 15282031, -7307887, -2860985, 10545218, 2111513, 1345399,
--13512504, 18687402, 121870, -1222992, 372052, 2507724, 8458401, 5106716, -6801081, -7454453,
-7878581, 18633178, -16115254, -14958834, -3998078, 19510962, -659814, 10421201, -2801929, 4342749,
-108985, 4444218, -2192581, -3431679, -23021024, -9687836, 5816997, -8335458, -2281165, -8201777,
--12412455, 19476066, 12228309, -33921116, 13589813, 17575006, -3391414, -148713, -11884711, 17394618,
-38050188, -17785460, -24105504, -6626598, 6039798, 38674032, 28889024, -10097468, -3077344, 12076911,
-31471372, -10482941, -1763084, 19302120, -24736328, -21269752, 16958142, -11293617, -8426189, -10400800,
--935766, -17135846, 1374926, 11746736, -7198902, 9070971, -8058433, -5069135, -5075041, -23701778,
-3547643, -9602473, 14549202, 31022548, 1734630, 15457050, 12850005, 1176821, 5889474, 9702331,
-32948304, -23301272, 15936476, 13982266, -16833050, 11272679, 11014444, 3494493, -14936286, -29933238,
--30234422, 9970230, 10878615, -11437498, -50545860, 41115720, -13824426, -22165790, -12774843, 41359460,
--19437412, 45229764, 24159, 15187004, -42562052, 40240084, -18420040, 17823040, -5429913, -58272504,
--18344880, 11468100, -35974648, 36999532, 3990025, -53426172, -60051696, -30914638, 41766408, 10306311,
--37273872, 45449880, -48877264, -2412698, 88286808, 13205414, 5028333, 8773544, 6701760, -23175106,
-24138254, 1786170, 12338904, -15555835, 23202488, -12817793, -12207371, -10239202, -1293322, -641561,
-7033009, -2332167, -3403762, 4549981, -8077223, -16724066, 15217069, -5619428, -2609730, -19845434,
-9072045, 4403415, 8610336, 2354179, 9934259, -7368017, 2345589, 27445914, -3192235, 285615,
-14552423, -15604153, -3285113, 802085, -1561221, 10673531, -11041287, 11983496, -4191888, -31039728,
-2005750, -8117488, 9125195, -10331544, 12004970, -19273666, -36839544, 155156, -39133056, 10743861,
--3497177, -6998649, 13070659, 21617108, -13874355, 3105798, 23742042, -18612240, 32206350, -4294431,
--35455492, 30411590, -14638859, -6500433, 27066348, -34686156, 9135932, 594316, 12579422, -5443871,
--12743705, -52939232, 12135430, -21845814, -53192096, 64297272, -43289512, -18022220, -8601209, -14628122,
--32676112, 18341120, 44362180, -27451820, 12446278, -39824548, -22540526, -22686554, 20045150, 3621194,
-58214524, -10005663, -4864051, -17358648, -50228568, 68719, 24410984, -18551038, 20490216, 24661702,
--20807506, 2090039, -17744658, -74177840, -38924752, -22820234, -77961176, 49844168, 65639448, 30890478,
--66104380, -53117472, -118581896, 17160542, 140966192, 65222300, 24903830, -37044092, -130065032, -29527900,
-30109868, 88916024, 89147952, -60568704, -51250772, -23785528, 11633993, 6155762, 96846680, 1641751,
--11803644, 7897371, -9600863, -23633594, 34070364, 6129992, -7305740, 18867254, -15446850, -26361436,
-18700288, 16195248, -44914084, 30264488, -6719477, -9883257, -23929948, 25419764, -24179056, 29092498,
--14308684, 29777008, -35100084, 14052596, -9810242, 472446, 25376814, 41511396, 11761231, -15420543,
--10966125, -2581275, 22942104, -3663607, 32989106, -25796648, -20305532, 9495099, 32703492, 3846680,
-19938848, -55810952, 40487048, -7945690, -8863202, 1005022, 18234284, 345745, -3493956, 13492640,
-4639102, 4494147, 21510270, -13631689, -151934, 11170136, -3894999, -2030446, 13562433, -12593381,
--3056943, 3814468, 21319144, -14095546, -10006737, 11934640, -566936, 6699075, -21124796, 27702540,
--6608344, 9347459, -6060199, 3567507, 15090904, 6642167, -3554622, 12986370, -4957466, 13125420,
--10358387, -776852, 13534516, -3125126, -5653251, -27354110, 2752537, 21137144, 2189360, 9904731,
--13872207, -4398047, -8319889, -8702141, -3599720, 15289547, -5617817, 9315784, -12087649, -14403710,
--6218039, 3419331, 27925878, -10732586, 12676059, 835371, 2739116, -13676250, 7425999, 14512694,
-735513, -13222057, 10167261, -8812199, 6798933, -5378373, -3940096, -5145908, 1844152, 10178536,
--5181878, -2617246, 4656282, -613643, -7789997, -1660542, 7543037, 6443525, -6763500, 1134408,
-6887517, 281857, -4278861, 1114544, -6807523, 5050882, -475131, 2579128, -3121904, 1312113,
-4365835, -2214056, 5124970, 984084, 4669703, 3597572, -7684770, -7755101, -2675765, 13538811,
--8674760, 9403294, 7482907, -5510980, -14035953, 10593537, -9028558, 11970074, -1165547, -1999307,
--4974646, 1984812, 1949378, -740882, -1642825, 1003412, 53126060, 10568304, -28496034, -20215338,
--31471910, -9958419, 6036577, 16723529, -5236639, -6734509, -5835250, -5586679, -5319317, 7654706,
--3896609, -1047972, -1703491, -5514738, -1343251, 8413841, 1180042, -2405719, -8410620, 9654013,
--12513924, 7366943, -4484483, -12235288, 27917, 5614596, 6261526, 4946192, -7268696, 1642288,
--2348810, -3937411, 14738180, -13117904, -2427194, -503585, -936840, 1416802, -2228551, -7689602,
-6471979, -12205223, 11643656, -1673964, -8229158, 2869575, -4260071, 10423886, -6104223, -3631932,
-11181947, -10006737, 3465502, -4766877, -1135482, 8644159, -6171868, -2395518, 7678865, -5243618,
-1998770, 842350, -6288906, 15275051, -13326747, -1083942, 5832566, -3330747, 9701794, -4360466,
--2173790, 2598992, 3185792, -995359, 2131915, -806917, -4335770, 3921842, -26307, 433255,
-2098629, -221191, 3016141, -3008625, 871342, 666794, 663572, -321049, -1913408, 2541010,
--375810, -598611, -1815161, 2253247, 3561602, -1156957, -1849520, 1173063, 2075543, -2580202,
-2166811, -1932735, -1730335, 5786395, -891743, 2171106, 3005940, -3908420, 9734007, -3145527,
--523449, -436476, -5637145, 5876052, -3646427, -5775658, -25152402, -37796784, 49539764, 154542592,
-13232794, 13455059, -105353400, -133264784, -27765890, -28225452, 78500728, 133611600, 68563784, 13200045,
--48343080, -94068376, -66399120, -47472812, -2462627, 65096136, 95122792, 51408076, 11780558, -33348810,
--59278064, -33192044, -31935230, -29908542, 18905372, 38758320, 38200512, 38485056, 9254044, -16681116,
--6844568, -25353728, -39690328, -4395899, -11834246, -8008504, 35840964, 20709796, 29942902, 18161806,
--13572634, -32659468, -7864085, -21226802, -3277060, 14849313, 4552666, 8024073, 16199006, -8208756,
--11488501, -2643552, -6749004, 6538551, 10460393, 569083, 12912819, 7662222, -13550085, -13035763,
--20772072, -17764522, 792421, 21435644, 32492502, 15651935, 4112968, -7550553, -21744346, -3730179,
--24518358, -15043660, 11550241, 9060234, 27470074, 9254581, -6986301, 8094403, -14235669, -24707874,
-4353486, 6267431, 8288750, 7658464, -1542430, -3087545, -2360085, -10273562, -7870528, 5388574,
-8386461, 8431558, 8557722, -2370822, -8266739, -5481452, -3172907, 218506, -170188, -9354439,
-2397129, 11777874, 6357626, 7328825, -2181844, -11855183, -6885907, -7000260, 2737505, 8310225,
-5484137, 5132486, 2222646, -1700807, -8991514, -11849278, -5422933, 719407, 7320772, 11674795,
-7150584, 7191923, 4540854, -7441031, -13795972, -17713518, -11482595, 4935991, 9909026, 12851079,
-17835926, 5404143, -5371394, -9043591, -7332583, -5459441, -5149666, -5248450, -1543504, 3941169,
-7832947, 6881612, 5398774, 3718905, 799938, -5079336, -8754754, -8478265, -4339528, -273267,
-3159485, 3179350, 1852742, 339302, 267362, -92879, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+10933913, 1274532, 2968359, 1044751, 1568737, -2637647, -6599754, -1277753, 3503083, 1244467,
+-3261491, -461709, 2681670, -691490, -3928821, 1185948, -4530117, -2815888, -130460, 1247151,
+-1280974, -1028108, 2824478, -3917547, -83215, 494458, 1903744, 1498944, 1451162, 4781373,
+2170032, -5949604, -1506997, -2706903, 762357, -157840, -440771, -3748433, -4872104, 6461779,
+-2976412, 1576790, 1890323, 1615982, -6127845, -3492345, -1599339, 672162, -472983, -196495,
+-556198, 1029182, 2347200, -3213709, -1074, 1714766, 2008971, 2384244, 886374, 38655,
+2319282, 815507, -998580, -300648, 3761318, -2793339, -2944200, -1597191, -1178969, 3202972,
+1900523, 758062, -1195075, 3085934, -1376000, 1596117, -3653407, -355409, 282931, 753230,
+759672, -2958696, 799401, 2081985, 1051730, 346282, -265751, 2725694, 1301912, -283468,
+1751810, 1033477, 454730, -408559, 587337, 462783, 380105, -529892, 665183, 179852,
+-550830, -445603, 946503, 199716, -93416, 2684, 36507, 149787, -883690, 622770,
+-248571, 486942, -695785, -6215355, -3741990, 2647847, -6080063, -8597451, 1672353, 738734,
+1060857, 1256815, 1210644, -7391102, -1206886, 2146410, -4686346, 4924717, 4787815, 4108136,
+-1661079, 377420, 1112397, 3146064, 717796, -106837, 619549, -2138894, 1985886, -772557,
+-778463, -1005559, 6073084, -3623342, 2102387, -2287070, -1969243, -2054068, 1611687, 3321084,
+-3543885, -1767379, -1919850, 2430415, 2289218, 3692598, 2510409, 492848, 3236258, -2756295,
+1945620, 739271, 845572, 6776922, 1603633, 3350611, -5561446, -1502165, 2294050, -2783139,
+2639258, -1203128, -2046552, 724239, 4067334, 2742337, 1876364, -995359, 833224, 3030636,
+-3667365, 4837744, -659278, 3964792, -1610613, 3271155, 3906273, 3288871, -1836635, -4880157,
+-7202660, -4866198, 470299, -2553358, 4758824, 788663, 745714, 1272384, -3395709, -1052267,
+-1527398, 1708323, -918586, -654446, 2096481, -2560338, -903554, 1013075, -1420560, 117575,
+-1585380, -1267552, -1003949, -285078, -1690607, 10443750, 7504382, 6148783, 5117454, 5767068,
+2436320, -454730, -127238, -2141578, -638340, 7587597, -3311420, -3413425, 5236102, 3886946,
+5034239, -3518652, 1524713, -1330366, 1138166, 2243047, 3143379, 460098, -2293513, -1704565,
+-2951180, -1054415, -1823214, -5381594, -651761, 4531728, -3526168, -613643, 1676648, -2772402,
+-2510409, 2563559, -1382980, -3594351, -1924682, 2048699, -3069828, -3954054, -1801202, -1173600,
+1336809, -2758443, -5714991, 406411, -938987, -799401, 1660005, -4691715, -2281165, 88047,
+-1953673, 2589329, -651224, 1118839, -8416525, -2551211, 4778688, -1875290, -4628364, 1385664,
+834297, 1311039, -1713692, -6677601, -3019362, 7523172, 526670, 2776160, 1606318, -1074816,
+2308545, 3138547, 1334661, -1549946, -3579318, -1074, 916439, -2718178, 1253057, -3524558,
+-340376, -2245194, -1079111, -2974265, -544387, -1697049, -2139968, -1662689, 355409, -735513,
+410706, -806917, 324270, -1495722, 1104344, 586800, -383326, -267899, 1429687, -24159,
+-471373, -1328219, -653909, -597537, -67109, 136902, 68183, 14810121, 9098351, 8611946,
+158377, 865973, 693100, -3520800, -7835631, -2953327, 5924371, -4465156, 2684892, 8012799,
+650151, -2524904, -996969, -1608465, -844498, 3249143, 4604742, 178778, 1359357, 1893007,
+3002182, 196495, -4210142, 1315334, -6786049, -2028298, -857383, -1870458, -1233729, 864362,
+-1625108, -3543885, -2778307, -1263257, 290984, -1509144, -4119948, 4914517, -1841467, 377420,
+-1278290, -3186866, 4010426, 11205570, 2684355, -3867081, 6599754, 1536525, -2054605, 2039036,
+-1163936, -4283156, -2147, -1781338, 1646583, -3707094, -6485938, 279173, 1047972, -7812009,
+2313914, 1645509, 4350265, 2511482, 5757941, -1936493, -3935801, -2269890, -1246077, 2842195,
+-1062468, -5014911, 3404299, -2434173, -4615479, 3151969, -4610648, -2484102, 1414655, -1634235,
+1553168, -1070521, -1923072, 1540283, 3852586, -877784, -1946694, -675384, -36507, 1381906,
+2697776, 804770, -830539, -999654, -1034013, -314606, 614180, -1959579, -726386, -565862,
+2960843, 1538672, 2085207, -340913, 131533, 1654636, 1068373, 806380, -125628, 290447,
+-7620883, -12045773, -3698504, -6026913, 8631274, -1969779, -1056562, 3232500, -7967701, -5613523,
+4781909, -3860102, -3585224, -198105, -325881, 849867, 3150359, -1324461, 1433445, -2076617,
+-1545115, -147103, -1367410, -3490735, -314069, -749472, 3645890, 3692598, 3237869, -4323959,
+2007360, 1465658, 6047851, -3047279, -226023, -2072322, -4628364, 6592238, -6252936, -3067681,
+-2435247, 1557463, 5468567, -5059472, 5657009, -609885, 3049427, 4719096, 765041, 3639448,
+-6735583, 1489817, -2540473, 354335, -7133941, 141197, -2458869, -6380174, -4907537, 391379,
+4713727, 256624, -3434900, 5375152, -1843078, 3115462, -421981, -6620692, 9280887, -5782100,
+-1147293, -3284576, 2320893, 3777961, 2496987, 3486440, 7516193, 5746130, -955630, 1210644,
+3551401, 2248416, -2670933, 3828963, 2977486, -549219, 1694902, -3731253, -5158793, -539018,
+-1658931, 2914135, -3021510, -616328, -2903935, -659278, -1330366, -419833, 878858, 1091995,
+601295, -114890, -724239, 1757179, 893890, -1787780, 1311039, 98784, -4463008, -385473,
+-1599875, 2571075, -673773, -288300, 942745, -476205, 899796, 2019708, -123480, 1315334,
+1399623, -255014, 529892, 2842732, 3246995, -8528731, -12162811, 1367947, 1023813, 688805,
+7844758, -2533494, -8531953, 910533, 999654, -2245194, -484258, -7499013, -1474784, 945430,
+1124745, 8412767, -1460826, 7540889, -1809255, -1930588, 641024, -7458748, 3201361, -2802466,
+4564477, -1245004, -1909113, -2761127, -1342714, 282394, -5571647, 9677635, -6680285, -10846940,
+3264175, 516470, -7612830, -2237141, -14624901, 271120, -5196911, -52076, -5643587, -4573604,
+813359, 539555, 2542084, -4610648, 3717294, -5204964, -10089952, 1226213, 2820183, -3042448,
+3334505, -1711545, -5588826, -4919348, -6799470, -3215320, -704375, 1141388, -2018635, 6354404,
+42950, -1952600, 573378, 406948, 1341104, 1009854, 767725, -6048925, -5654862, 1229434,
+4049617, 2403034, 691490, -1314797, 5025112, 2775086, -2304250, -1694365, -5569499, -2286533,
+2523830, 1201517, -3023120, 1253594, -822486, -879931, -1402307, -1745367, -581968, -2310156,
+-1738925, 981400, 492848, 1415729, 2434710, 208306, 2140504, 122407, -1358820, 2014340,
+1283658, -387621, 325881, -1126892, -1108102, -16643, 137976, -1264868, 94489, -377420,
+-22549, 0, -240518, 1313723, -2052458, -321586, -584116, 118112, 763967, 1344862,
+-18781356, -4739497, 763967, -4818954, -3489124, -6023692, 1564979, 2085207, 4292820, -3253975,
+-3995393, -4561792, 2280628, 5031018, -2505040, -2188823, -1274532, -802622, 2411087, -10507637,
+-2576444, 5898064, 1942936, -3095061, 1133335, 5222144, -504122, -1362578, 1846836, -354335,
+12878459, -5559835, 3158949, 1012539, -5407901, 1760400, 1221381, -6186901, 4363687, -8781598,
+-840740, 7730941, 1714766, -245887, -1621350, -6008659, -5160940, 1362042, 3343632, -2273112,
+1633698, 6404870, 3193845, -2684892, 3969624, -5718212, -13400835, -1791001, -5880347, 3714610,
+-3763465, 9510131, 4779225, -452582, -1553704, -12363600, 3905199, 4707821, -3778498, 7535520,
+-5854041, 2291902, -9817221, 4549981, 3457986, -11201275, -7111392, -2304250, 2776160, 3709778,
+8168491, -1138703, -381178, 5288716, 1241246, 22549, -2349347, 1208496, 1241782, 1587527,
+1751273, 431107, -201327, -1019518, -1142461, -3019362, -2491618, 2010045, 1443109, 1035624,
+2512556, -1009854, 1222992, 1272384, -616328, 2149631, -267899, -17180, -492311, -2426120,
+-511101, 2800319, 649614, 2081449, -751082, 768799, -1078574, 3330747, 338766, 2795487,
+1254131, -1359894, 751082, 4720706, 7927436, 18341658, 19556596, 3929358, 5861020, 63888,
+2795487, 184147, 2064269, -5224291, 2431488, -3245922, 4336307, 4109747, 10071698, 1559610,
+-2032593, 6317897, 4555887, 7597261, 379031, 4728759, 2749853, -2335925, 2366527, 11304354,
+1801202, -4873714, -2627446, 8366597, 5173825, 4027069, 7777649, -5976447, 2336462, 9270687,
+-9230422, -11031087, 3649649, 5919539, 9624485, -4167192, -7179575, 5827197, 2113661, -870268,
+3619584, -1457068, -878321, -52613, 13696651, -4951561, 2777233, -3302830, -2122251, -1612760,
+7141457, -944893, 15939697, 7645042, -7654169, 8909373, 1941862, 4153234, 1914482, 1935957,
+2171643, -2917894, 5376762, -12609487, -3333432, 5770826, -12845173, 4398047, -10380399, 2437931,
+11452530, 2832531, -79994, 3148211, 1087701, -3083787, 769336, -3277597, 373125, 2639794,
+-7723425, 4423280, -1409286, -1837172, 513785, 2394444, -2031520, -3077881, 1030792, 2781528,
+-1479079, -2604361, -2571612, -1506460, 1061394, -1840394, -1657857, 1731946, 2410551, 1130113,
+-1292785, 1576790, -1155346, -3980361, -1813013, -64961, -2038499, 1131724, 808528, 1661616,
+2692945, 3967476, -1897302, 5597416, -1981054, -3280281, -1135482, 1980517, 408022, -3335579,
+-2182917, 30239790, 5273146, 4748623, -8848170, 13032005, -4322348, -580357, -3419331, 715112,
+-8469139, -654446, 4021700, 941672, -6896644, 8595303, -2058363, -4480188, 1262184, 2684892,
+-8880919, -12520903, 5211406, -5179731, -7364795, 1438277, -13959, -3811247, 6543920, -6581501,
+2193655, 6326487, -1094680, 9225053, 2940979, -11724724, -12208981, -5249524, 824634, 2212445,
+-9640054, 3481608, 3553012, 1824824, 3147137, 4254702, -10019622, -5032091, 2952253, -11226508,
+-4019016, -282931, -11573326, -6235219, -3932580, 2337536, -5908802, -12635794, -5945309, -6758668,
+14664092, 7050189, -1152662, 1988033, -3876745, 11614128, 13996762, 1555315, 9396315, 6808060,
+2738042, 1669669, -5354214, -1184337, -4723927, 6765647, -8877697, 290984, -2105071, -13700409,
+-4106526, -1983201, 7473243, -6784438, 3767760, 3190087, 1434519, 707059, 3263638, -3280281,
+2612414, -1980517, 2895882, -730681, 4264366, 1230508, 401043, -2222109, -784368, -5353677,
+2904472, -746787, 4582730, -4369056, 28454, -455267, 2746632, -479963, 2457795, 1025423,
+1354525, 1288490, 719944, -2927557, 3419331, 4303557, -2153926, -3103651, -3599183, -1508070,
+-201863, -1307281, 405338, -20629802, 13928042, 22355304, -16768626, -9987410, 4606353, 4010963,
+-3401614, 7346005, 1998234, -6250251, -7636989, -156229, -2452963, -5452998, 2793339, -2506114,
+359704, 6184753, -8315057, 1753957, 1119376, -4936528, 712965, -7841537, 1537598, 11520713,
+5880884, -1148904, -3693672, -938987, -6566468, -6992744, 3452080, 5831492, -1828046, -3215857,
+-2283849, 3491809, 5815386, 2794950, 10646150, -5713917, 4389994, -2748242, 1062468, 6645925,
+-2370285, -2087354, -12639552, -1927367, -9782325, 4940823, 3383361, 12618077, -10783589, -3968013,
+-10436234, -17194902, -2870649, 7195681, -11865384, 2652679, -1294933, -8657043, -10203769, -12873628,
+17330730, 670015, 10303090, 7574175, 8756901, -3935801, -11488501, -8697846, -10749229, 3782793,
+8471286, -8049843, 3835943, 9028021, -6069863, 1051730, 7333120, 8414378, 2047089, -2987150,
+3629247, -1484448, 1952600, -8928163, -787053, 3455301, -3003256, 1167694, 591095, 404801,
+2037962, 3393561, -3504157, -1244467, 2092186, 3025805, 883153, 1480690, 2976412, -612570,
+3213709, -2652679, 2215130, 3229816, 3621731, 416612, -1312113, 2814814, -2233383, 711891,
+-471373, -1920387, -914828, -1894081, -473520, 916439, -2318209, -6519761, 2353105, 3587908,
+-16137803, 11657078, -1468342, -6052146, 9983115, 3525631, -9722195, -13922136, -5378910, 35970,
+284005, 666257, -4963372, 15816754, 6555194, 4773856, 3651259, 4968204, -4816269, 1189706,
+3142842, 2304250, 14212047, 1471563, -21182242, 2597918, 8813273, -7912404, -11909944, -2533494,
+-6467684, -3833258, 990527, 14963666, 8968965, -1531693, -344671, -4530117, -13116830, -4450660,
+-10834592, 7719667, 10581189, 120259, -5877663, -2157147, -2429878, 4836133, 6737730, 7132330,
+-16522202, 3171833, 572841, 1444183, 11492259, -6719477, 4708358, -6133214, -4405026, 1197759,
+7523172, 13517873, -2141578, -8766565, 2840047, -15769509, 12591770, 6780143, -1551557, -6521908,
+3409667, -3652333, -7770133, -6481106, -7042673, -3376918, -1470489, 468151, 6676527, -5101348,
+18344880, 762357, -2771865, 1050656, 5484673, 246424, -192737, 5945309, 4109747, 3067144,
+246424, -2883534, -2211908, -685584, -384936, -2659659, -7415798, 3940096, 3768297, -2808909,
+1064615, -4125853, -3051038, -1423245, -767725, -103079, 6602439, -1345399, -2010582, -1058173,
+-333397, 4036733, 7355132, -2376728, 4149475, -1097364, -4508642, 5291400, -4885526, -3986804,
+-2577517, -4023311, 926639, 3124052, 1656247, 3203509, 119185, -1179505, -222265, -3251290,
+2036888, -1855426, -6988986, -1709934, 7741142, -13870060, -3935801, 8979703, -11275363, -1156957,
+-1119376, -1501628, -13132399, 13056701, 5661841, -9087077, -1561758, -3894462, -3328063, -19956566,
+-2797634, -9115531, -22526030, 4818954, 3489661, -10242960, -8470749, -12071542, -13744432, 11724187,
+6617471, 12342662, 442382, 25894358, 1222992, 13528610, 18614388, -2150168, 5695127, 19177566,
+-12908524, 5919539, -7776039, 13195213, -4136591, 25691420, 11676942, -7989176, -12070469, 2012192,
+5960878, 10720238, 2886218, -9283572, -2136209, 8511015, 19092740, -7965554, 12806519, -4656819,
+7817914, -14937896, 5905043, -8118562, 5915244, 983011, 1973538, -2705293, 11802570, 16478716,
+-29925184, 9090298, 6238977, 4456029, -5456219, 3948686, -21468930, 1840930, 385473, -3337727,
+-8200167, -7119445, -7092602, -2056753, 15321222, -8813273, -5178120, -12402255, 456340, 11018202,
+-5510980, -6148246, 8530879, -303332, 6196564, 1381369, -1510755, 156766, 2736968, -5922223,
+3008088, 1201517, -5093295, -4263829, -2488397, 1498944, 3457986, 3558917, 10385768, -1095217,
+7867843, 3870303, 2567317, -5182415, -1609002, -7828652, -3532074, -1300301, -2619930, -3714073,
+4358318, 2529199, 5206037, 6671158, 1256278, -1500554, -841277, -4257923, 2596845, 14920180,
+15857019, -3458523, 16487306, -846109, -3438658, 1302986, 9270687, -3470871, -4198868, -1925219,
+-11718818, 1924682, -3358128, 18461916, 12152610, -8798777, -9322763, -17526150, -6416681, 12729209,
+22930294, -10434623, 7083475, 1537061, 3017752, 12492986, 8940511, -17955110, 3566970, -6409165,
+-3649112, -7406134, -4048544, -7816304, -17307644, 3034931, 11573863, 4439923, 27108760, -6586869,
+-3739306, 18837726, -6867653, -1046898, -4204236, 4993437, -20686710, -13272523, 7186554, 15477988,
+22548578, 26919782, -19782082, -10257993, -1040456, 9008694, -890132, 30544734, 8497056, 4570382,
+-23698018, 1650341, 170725, 11464341, 14950244, -11136850, -3696893, 4679904, -4860293, 5906,
+16986596, 6135898, -16797618, 4389994, 8857833, -8057896, 26418344, -9129490, -14128832, -19824496,
+14658723, -3165928, -16646756, -13186623, -3023120, -606127, -6624450, 404264, -7211787, 1414118,
+-10040560, 714038, 4904853, -3450469, 3862786, 781147, -6072547, 693637, -96100, -1149978,
+647466, -4107063, 4987531, 68719, -2546379, 5723581, 5791227, 282394, -1598265, 2572686,
+-5458367, -2245194, -4385699, -800475, 4504884, -3520800, 1971390, 4470524, -8209830, -2905546,
+-1692754, 1385664, -1552094, 3572339, 7949448, -2210298, -4752382, -2279554, 5133560, 1496796,
+483184, 4156455, -2386391, -1664837, -1498407, 3672734, 31316218, 14855218, -8227010, -2637647,
+-28894392, 2261300, 7649337, 2028298, 43103220, -5435281, -3260954, -18917184, -16356846, 6732361,
+-13373991, -8152385, -8968429, -6015639, 10710575, -6972880, -12295418, -10586021, 963146, 10829223,
+-13904957, 3158412, 6291590, 1422171, 15554224, -1776506, 1224066, -15776489, -22244172, -9131100,
+10198400, -12242267, 2981781, -10273025, -38836704, -20879984, 11647414, 866510, -22252226, 3466576,
+31008054, -1396401, -799938, -12069395, 6788733, -13321915, -23939610, 641024, 3644817, -9253507,
+4603668, 9051644, -2212445, -7790534, 6468221, 8422431, 15564425, -8909373, 11700028, 15025943,
+6324340, 26102664, 2937221, -16159814, 19017042, 1193464, 3196530, -3416647, -3809099, 11791833,
+-11602317, -1616518, 28933584, 22732188, -14013941, 14572287, -4168803, 26892400, 11330124, -9242770,
+-21404506, -868657, -7809325, -9236864, 6074158, -8313983, -222265, -2073932, -7457674, -12474733,
+-2422362, 10699837, -11393474, 142808, -7060926, 1173063, 4515085, -4538170, -13332115, -2267743,
+-6288369, 8237211, 4975183, -3163244, -8804683, -3576634, -9474698, 5834713, -4628364, 3219078,
+3791919, 5571110, 4414690, -7291781, -5191542, -8202851, 2517388, 5456756, 757525, 10748693,
+11335492, 6245956, 4645544, -22498650, -23877870, -28525026, 39322036, -21771726, 5166309, -1205812,
+-12511240, 19969450, -23490250, 10159208, 41813656, 25741350, 5959267, -33907156, -1919850, -22371948,
+-11365020, -20429548, -1957431, 5806796, -3695283, 16065325, -7740068, 2672007, 7924215, 22451942,
+3105261, 3099893, 27156542, -17889612, -2554969, 11985106, -5262409, -13874892, -9241159, 13692356,
+-11958263, 5742372, 23240068, -6474663, -41962368, -2563559, 10473815, -51515984, 31060130, 23970212,
+-19569482, 31947578, 21626234, 14256070, 33112588, 712428, 16997334, 1962800, 1974074, 11938398,
+-21103858, 21019034, 28515362, 21973052, -22719304, -4438849, 31341450, -15235860, 24840480, 22814866,
+53289808, 32174674, 1782948, 3689377, -6950331, 6690486, 9235253, -30920006, -44302588, -15411953,
+3787088, 1650341, -6423124, 34622268, 16256451, 6522445, -15293305, 13728863, -10859825, -13677323,
+-7059853, 15673946, 18185428, 3521873, -3365107, -3517578, 466541, -21451214, -5162551, -5540508,
+6853694, 3985730, -11218991, -8480950, -611496, 16909824, -4807142, -6518150, 351650, -6750615,
+-17235704, 8575976, -3798362, -6704981, -10154913, 59056, 5581847, 1119376, -30578020, -1727651,
+14895483, -2280628, 481573, 2506650, 4229469, 12776991, 10040023, 446140, -271120, -4907537,
+-1715839, 24009940, 29700236, -58271968, -53360672, 23273354, -15335181, -16805134, -6995428, -20308752,
+7216082, -32898912, 41539848, 15617038, -17307108, -372052, -16929688, -12733504, -13645648, -15623480,
+-10123775, -39684424, -35655208, -6651831, -8095477, 2268280, 3390340, 6899328, -2501282, 5061619,
+6649683, 17656610, 19559818, -7377680, -9875740, -11581916, -9816685, -22458920, 33427730, -11805791,
+8158827, 24814710, 23466628, -8907225, -10043244, -18701362, -12270722, -15357192, 25693568, 2731599,
+3176128, -31793496, -11268920, 45938972, -4451197, 42768212, -8637179, -16035260, -10104984, -18126372,
+-18551574, -3413962, 207232, -25523380, 2145336, 12183748, -1031866, 9573482, -58887224, -23810224,
+-16486232, 31259846, -7472706, 5135171, 10683194, 49080740, 13928042, -4537633, -5001490, 42261404,
+25534118, 6222871, 8247411, -2177012, 33564632, -14004815, -19142132, 10334765, 15775415, 28003186,
+26064546, -15289547, 17688286, 13217762, 14253923, 4227322, -10193568, -20143934, -17093970, 10632728,
+14751602, 7866770, 5302137, 17407502, -1721208, -4836670, -1001264, -1469416, 9069360, 5432060,
+11836393, 20682416, 14607721, 23660974, 6387153, -21314312, 6752763, 5668820, 18501108, -369904,
+14496051, 6167036, 13939853, 301185, -26785564, -3482682, -5893232, -1820529, -30786862, 63946696,
+-20648592, -12836047, 37896644, -24022826, -36273148, 33646236, -48828408, -14120242, 11511586, 8386461,
+-34059628, -13357348, 29237452, 190589, -5761162, -19013284, 22948548, -22762252, 1509681, 18067854,
+-6027450, 16589848, 119185, -8189966, 5557688, 3943317, -9889699, 15774878, -8677445, -3514894,
+4712116, -308701, 982474, -2960306, 4684736, 10012106, 16183974, 23295902, 11427834, -9619116,
+-2682207, -14773614, 13659607, -4912369, -21345988, 5015448, 91805, -12160663, -29180544, 20550882,
+1560147, -13503914, 32991254, 1899449, -10205379, -5949604, 48863308, -45703284, -49195628, 30003568,
+46837156, -86405616, 428423, -31983548, -29031832, -12853227, 31449362, -24286430, 41618232, -5889474,
+-1019518, 55919400, -15781857, -43290584, 53761180, 63311040, -61478700, 68732360, -23152022, 1693828,
+56829396, -19017042, -21735756, 15581068, 15282031, -7307887, -2860985, 10545218, 2111513, 1345399,
+-13512504, 18687402, 121870, -1222992, 372052, 2507724, 8458401, 5106716, -6801081, -7454453,
+7878581, 18633178, -16115254, -14958834, -3998078, 19510962, -659814, 10421201, -2801929, 4342749,
+108985, 4444218, -2192581, -3431679, -23021024, -9687836, 5816997, -8335458, -2281165, -8201777,
+-12412455, 19476066, 12228309, -33921116, 13589813, 17575006, -3391414, -148713, -11884711, 17394618,
+38050188, -17785460, -24105504, -6626598, 6039798, 38674032, 28889024, -10097468, -3077344, 12076911,
+31471372, -10482941, -1763084, 19302120, -24736328, -21269752, 16958142, -11293617, -8426189, -10400800,
+-935766, -17135846, 1374926, 11746736, -7198902, 9070971, -8058433, -5069135, -5075041, -23701778,
+3547643, -9602473, 14549202, 31022548, 1734630, 15457050, 12850005, 1176821, 5889474, 9702331,
+32948304, -23301272, 15936476, 13982266, -16833050, 11272679, 11014444, 3494493, -14936286, -29933238,
+-30234422, 9970230, 10878615, -11437498, -50545860, 41115720, -13824426, -22165790, -12774843, 41359460,
+-19437412, 45229764, 24159, 15187004, -42562052, 40240084, -18420040, 17823040, -5429913, -58272504,
+-18344880, 11468100, -35974648, 36999532, 3990025, -53426172, -60051696, -30914638, 41766408, 10306311,
+-37273872, 45449880, -48877264, -2412698, 88286808, 13205414, 5028333, 8773544, 6701760, -23175106,
+24138254, 1786170, 12338904, -15555835, 23202488, -12817793, -12207371, -10239202, -1293322, -641561,
+7033009, -2332167, -3403762, 4549981, -8077223, -16724066, 15217069, -5619428, -2609730, -19845434,
+9072045, 4403415, 8610336, 2354179, 9934259, -7368017, 2345589, 27445914, -3192235, 285615,
+14552423, -15604153, -3285113, 802085, -1561221, 10673531, -11041287, 11983496, -4191888, -31039728,
+2005750, -8117488, 9125195, -10331544, 12004970, -19273666, -36839544, 155156, -39133056, 10743861,
+-3497177, -6998649, 13070659, 21617108, -13874355, 3105798, 23742042, -18612240, 32206350, -4294431,
+-35455492, 30411590, -14638859, -6500433, 27066348, -34686156, 9135932, 594316, 12579422, -5443871,
+-12743705, -52939232, 12135430, -21845814, -53192096, 64297272, -43289512, -18022220, -8601209, -14628122,
+-32676112, 18341120, 44362180, -27451820, 12446278, -39824548, -22540526, -22686554, 20045150, 3621194,
+58214524, -10005663, -4864051, -17358648, -50228568, 68719, 24410984, -18551038, 20490216, 24661702,
+-20807506, 2090039, -17744658, -74177840, -38924752, -22820234, -77961176, 49844168, 65639448, 30890478,
+-66104380, -53117472, -118581896, 17160542, 140966192, 65222300, 24903830, -37044092, -130065032, -29527900,
+30109868, 88916024, 89147952, -60568704, -51250772, -23785528, 11633993, 6155762, 96846680, 1641751,
+-11803644, 7897371, -9600863, -23633594, 34070364, 6129992, -7305740, 18867254, -15446850, -26361436,
+18700288, 16195248, -44914084, 30264488, -6719477, -9883257, -23929948, 25419764, -24179056, 29092498,
+-14308684, 29777008, -35100084, 14052596, -9810242, 472446, 25376814, 41511396, 11761231, -15420543,
+-10966125, -2581275, 22942104, -3663607, 32989106, -25796648, -20305532, 9495099, 32703492, 3846680,
+19938848, -55810952, 40487048, -7945690, -8863202, 1005022, 18234284, 345745, -3493956, 13492640,
+4639102, 4494147, 21510270, -13631689, -151934, 11170136, -3894999, -2030446, 13562433, -12593381,
+-3056943, 3814468, 21319144, -14095546, -10006737, 11934640, -566936, 6699075, -21124796, 27702540,
+-6608344, 9347459, -6060199, 3567507, 15090904, 6642167, -3554622, 12986370, -4957466, 13125420,
+-10358387, -776852, 13534516, -3125126, -5653251, -27354110, 2752537, 21137144, 2189360, 9904731,
+-13872207, -4398047, -8319889, -8702141, -3599720, 15289547, -5617817, 9315784, -12087649, -14403710,
+-6218039, 3419331, 27925878, -10732586, 12676059, 835371, 2739116, -13676250, 7425999, 14512694,
+735513, -13222057, 10167261, -8812199, 6798933, -5378373, -3940096, -5145908, 1844152, 10178536,
+-5181878, -2617246, 4656282, -613643, -7789997, -1660542, 7543037, 6443525, -6763500, 1134408,
+6887517, 281857, -4278861, 1114544, -6807523, 5050882, -475131, 2579128, -3121904, 1312113,
+4365835, -2214056, 5124970, 984084, 4669703, 3597572, -7684770, -7755101, -2675765, 13538811,
+-8674760, 9403294, 7482907, -5510980, -14035953, 10593537, -9028558, 11970074, -1165547, -1999307,
+-4974646, 1984812, 1949378, -740882, -1642825, 1003412, 53126060, 10568304, -28496034, -20215338,
+-31471910, -9958419, 6036577, 16723529, -5236639, -6734509, -5835250, -5586679, -5319317, 7654706,
+-3896609, -1047972, -1703491, -5514738, -1343251, 8413841, 1180042, -2405719, -8410620, 9654013,
+-12513924, 7366943, -4484483, -12235288, 27917, 5614596, 6261526, 4946192, -7268696, 1642288,
+-2348810, -3937411, 14738180, -13117904, -2427194, -503585, -936840, 1416802, -2228551, -7689602,
+6471979, -12205223, 11643656, -1673964, -8229158, 2869575, -4260071, 10423886, -6104223, -3631932,
+11181947, -10006737, 3465502, -4766877, -1135482, 8644159, -6171868, -2395518, 7678865, -5243618,
+1998770, 842350, -6288906, 15275051, -13326747, -1083942, 5832566, -3330747, 9701794, -4360466,
+-2173790, 2598992, 3185792, -995359, 2131915, -806917, -4335770, 3921842, -26307, 433255,
+2098629, -221191, 3016141, -3008625, 871342, 666794, 663572, -321049, -1913408, 2541010,
+-375810, -598611, -1815161, 2253247, 3561602, -1156957, -1849520, 1173063, 2075543, -2580202,
+2166811, -1932735, -1730335, 5786395, -891743, 2171106, 3005940, -3908420, 9734007, -3145527,
+-523449, -436476, -5637145, 5876052, -3646427, -5775658, -25152402, -37796784, 49539764, 154542592,
+13232794, 13455059, -105353400, -133264784, -27765890, -28225452, 78500728, 133611600, 68563784, 13200045,
+-48343080, -94068376, -66399120, -47472812, -2462627, 65096136, 95122792, 51408076, 11780558, -33348810,
+-59278064, -33192044, -31935230, -29908542, 18905372, 38758320, 38200512, 38485056, 9254044, -16681116,
+-6844568, -25353728, -39690328, -4395899, -11834246, -8008504, 35840964, 20709796, 29942902, 18161806,
+-13572634, -32659468, -7864085, -21226802, -3277060, 14849313, 4552666, 8024073, 16199006, -8208756,
+-11488501, -2643552, -6749004, 6538551, 10460393, 569083, 12912819, 7662222, -13550085, -13035763,
+-20772072, -17764522, 792421, 21435644, 32492502, 15651935, 4112968, -7550553, -21744346, -3730179,
+-24518358, -15043660, 11550241, 9060234, 27470074, 9254581, -6986301, 8094403, -14235669, -24707874,
+4353486, 6267431, 8288750, 7658464, -1542430, -3087545, -2360085, -10273562, -7870528, 5388574,
+8386461, 8431558, 8557722, -2370822, -8266739, -5481452, -3172907, 218506, -170188, -9354439,
+2397129, 11777874, 6357626, 7328825, -2181844, -11855183, -6885907, -7000260, 2737505, 8310225,
+5484137, 5132486, 2222646, -1700807, -8991514, -11849278, -5422933, 719407, 7320772, 11674795,
+7150584, 7191923, 4540854, -7441031, -13795972, -17713518, -11482595, 4935991, 9909026, 12851079,
+17835926, 5404143, -5371394, -9043591, -7332583, -5459441, -5149666, -5248450, -1543504, 3941169,
+7832947, 6881612, 5398774, 3718905, 799938, -5079336, -8754754, -8478265, -4339528, -273267,
+3159485, 3179350, 1852742, 339302, 267362, -92879, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
1260573,
-3418794, 2694018, -905701, 2068027, 963146, 5925981, -1047972, -141734, 727997, 4341675,
--872415, -4496294, -2115808, -4315369, 1037235, -1525787, -380641, -530965, 1027034, 434329,
-860067, 2525978, 4592931, -2033667, -1154273, 937377, -2197413, -284005, 3578245, -1938104,
-4427575, 475131, -1617592, 2971044, -4054449, -1016297, -2831457, 3960497, -139586, -1438814,
--1094680, 64961, 3642669, 165893, 4388920, 1712618, -3648575, 2954938, -1607928, -2690260,
--2235531, 3036542, -651761, 9637907, 998580, 2436857, 1728188, -4465156, 44560, -643171,
-1151588, -2527588, -1742683, 5031018, 4085588, 389768, 1685775, -441308, 2535105, -4118337,
-401579, 3123515, 1937567, 333397, -338766, 2230699, -3527779, -1600412, 3717294, -2439542,
-776852, 1835025, 2191507, 694711, -2822867, -1854889, 1461900, 341450, 1449552, -430570,
-405874, -1386738, -95026, -683974, -427886, 812286, 1522566, 660351, -908386, -334471,
--619012, 374736, 926639, -544924, 680752, 520765, 965294, -128312, 1161252, -466004,
-281857, 730144, 907849, -7336341, -6628209, -4118337, -3757023, -3248606, 1245004, 4636417,
-9438728, 1816234, 2433099, -13422, -6740415, -2814277, -2503966, -6047314, 9420474, 2511482,
-3741990, 2594697, -2083059, 967978, 9020505, 3609383, -2121177, -164283, -2186675, 199716,
--4173098, 2522220, -1314260, -1859184, 360240, 4805532, 510564, 1685238, 3008088, 4169340,
--7441031, 111132, 1897302, 4348655, 6665789, -3688840, -744103, -1777580, 5562520, 3026341,
-3590593, -573915, 1670742, 11127723, -7006166, 1428077, 665720, -4669167, 2010582, -6531035,
--868657, 1705639, -1404454, -9856950, 2785823, 709207, -2656437, -2711735, -441308, -1458141,
-3353833, -3105261, -1371168, 1003412, -86973, -3018825, -129386, 2531346, -4119411, 400506,
--1110249, -957778, -1269163, -693637, 650688, -2376191, -1797981, 395674, -1424319, -1869921,
--1943473, -632971, -1283658, 2441152, -2094870, -555661, 360777, 1249836, -118112, 126702,
--715649, 191663, -1246077, 1000727, -1787780, 9912785, 914291, 3528853, -375810, -2715493,
-251792, 6950868, 3616899, 4468914, 7267085, -3239479, 109522, 6973953, 2280628, 3037079,
-435402, 816044, 4149475, -3772055, -1061931, 5171678, -3518652, 1990717, 3006477, -2275796,
-2218888, 6949257, -3283503, 2533494, 590558, 219580, 124554, -1511292, -4742181, -1534377,
--3968013, -477278, 1709397, 3295851, 3579318, -695785, -5958194, -608275, 8785356, -3305514,
-1802276, -1633698, -9170292, 5312875, 1387811, 3926674, -631897, 4479651, 4468377, -7902740,
-3165928, 165356, 2974265, -655519, -5454072, -339302, -734976, -1088237, -995359, 3425237,
-24696, 602906, 7153805, 1294933, 5696737, 98247, 593242, 998043, -3056943, -4970351,
-3389803, -3783329, 2244657, 1284195, -144955, 2240899, -2420214, -1493575, 1612223, -9127,
--4669167, 1429687, 606127, 519691, -905701, 1954210, 244276, -909996, 2328409, -614180,
--147640, -1992328, 727997, -1042603, 377420, -82141, -230854, 357556, -671626, 1132798,
-333934, -583579, 405874, -390305, 184147, -157303, -707059, 16291885, 9166534, 13938243,
-4534412, -5795522, 2971044, -2603287, 401579, 1340030, -11883101, -3185792, -3266323, 3054259,
-4680978, -1943473, -266288, 1552631, 383863, 8492224, -932008, -8944269, 2913062, -5180268,
-3971234, 4503273, 3614752, 5248987, -1263257, -1844152, 2142115, -1601486, -2072322, 1495722,
--1383516, 3140695, 4532264, -1979443, -6870874, 2192044, -6683506, -4328254, -841814, -13927505,
-135291, -2370822, 5450851, 5178120, 2511482, 8494372, 8568460, 3773666, 1905355, -644782,
-412854, 459025, -3892314, 7931194, -1067299, 2741800, -2529736, -3058017, -1101659, -4570919,
-4002373, -2127620, -1691143, 7777112, -6508486, -2019172, 1642825, -3005403, -913217, -264677,
-2723546, 3202972, 2156074, 5531381, -1831267, -1535988, -819265, -3520263, 1835025, 3544959,
-4886062, -111669, -754304, -1060857, 46708, 1037772, 1019518, -1489280, 1615445, -38118,
-1160715, 981400, -213138, -402653, 2090039, -622770, 1048509, 850404, 963146, 855772,
--617402, 774705, 3539590, -277562, 161598, 404801, 2608656, 457951, -603443, -1879585,
--6206228, -14286135, -5110474, -1483911, 2021856, -1764158, 4315369, -939524, 6973417, -6280853,
-3680250, -1541356, 12836584, 5408975, -2844879, -5489505, 2938831, -7817914, -4234838, 3046206,
--2807835, -4652524, 8858907, 3738769, -564251, -4083440, -5617817, 3804804, 2847563, 2849711,
--302795, -1350767, -3497177, 5276368, -6903086, -2896419, -383326, 4902169, 3654480, -308701,
-5293547, 718870, -2578591, 1134945, -2568927, -2557116, -3090766, 3823058, -2843268, -41339,
-4918812, 7505456, 7556995, 3178813, 2628520, -441308, 4246112, -1679332, 6139656, -1020055,
-3886409, 3118146, -2638721, 383326, -2883534, 3089692, 2559801, 1125281, -1040456, -5158793,
-3612604, -5619428, -761283, -6085432, 2188286, -381715, -663036, 1247151, -5299990, 319438,
-1291711, 8571144, 2687576, 1511829, 1946694, 3396782, 1394254, 1806034, -2596308, 1993939,
-1379221, -3389266, -359704, 280784, 675921, 1583232, -1783485, 1200443, -1178432, 337692,
--277562, 2245731, 158914, 372052, 191663, 825707, -513249, 2049236, -1129576, 835371,
-689342, 1980517, 826244, 2708514, -1948305, 1076426, -510027, 3107409, 1085553, 1178432,
--453656, -310848, 169651, -474594, -2021856, -6649146, -14017163, -11288785, 688805, -9644349,
--4773856, -13665512, -7299834, -8326331, 3299609, -4445291, -5943698, -2021856, 306016, -3511136,
--13302587, 3572876, -2369748, 1339493, -6033892, 5998996, 2199560, 139586, -5371931, -2379412,
-6774774, 4638028, 277562, -1010391, -4585415, 2845416, 1449552, 2945811, -5486284, -507880,
--4462471, -3980361, -4366908, 449898, 8778913, -7185481, 125628, -6846178, 671089, 3183108,
-3964792, -7220377, 7227356, 8807367, -2937758, -2101850, -1571958, -354335, 2767033, 3549254,
-845572, 2411624, -4332012, -844498, -1632625, 7572028, -2413235, 8380018, -254477, -2588255,
-6654515, -712965, -4046396, 1416266, 7211787, 8337606, -670552, -2632815, -4594542, 2858838,
--6118718, -623307, 4018479, -3133716, 1783485, -238908, -86436, -2526515, 4832, -1966021,
--3090229, -338766, 2518462, 1328756, 2507724, -1178969, -883153, -2084133, 746251, -1692754,
-2610803, 1318018, 3668976, 311922, -926102, -374199, -717796, -1364189, 1648731, -1214402,
--731218, 650151, 513249, -1887638, -700080, 437013, -3758, -1069984, -1838246, -170188,
--1700807, -1194538, -749472, 2080912, -220654, 674310, 579821, 19864, -1347009, -459025,
--10846403, -10730439, -12461311, 3687230, -10097468, -4160213, 9649718, 4751308, -10956462, -702227,
-79457, 4835597, 7118909, 12240657, -3329137, -4354023, -12027519, -14696304, -8730595, -2928631,
-5979668, -5940477, 2863670, -8451959, 8796630, -6332930, 7058779, -3249680, 965831, 1887101,
--1452236, -6244346, 9926743, -8555038, -464393, -4545149, 1187022, -5301601, 1197222, -21484500,
-315680, 10064182, -12847321, 2973728, 8719320, 3192771, -6709276, -691490, 10501732, -12934831,
--82141, 5370320, 5060545, 5052492, -1915019, -1822677, -8440148, -4109747, 3401077, 5791227,
-9084393, 11191074, -16432545, 6297496, -4989142, 1263794, -11599096, -4635344, 9473624, 2388539,
-1264331, -6282464, -36507, 6204617, 4423280, 2805688, -5766531, -3630858, 5912560, -1513976,
--2568927, -1219771, -4257923, 3660923, -741956, -3259343, -1322313, -1071594, 811749, -2080912,
--2338073, 863825, 765041, 989990, -1354525, -1828582, 1574106, -1141924, -4403952, -308701,
--1349694, 2713346, -2074469, 213138, 153008, 1132261, -2781528, -1452236, -1043677, 368830,
-2830384, -258772, -751082, 1862405, -30602, 1833414, -892279, -1855963, -797253, -3202972,
-675384, 56371, -2355253, 1309965, 12831752, 21485038, 11905649, 14014478, 2099165, 4993973,
-18786724, -562104, 532576, 12907450, -6327561, 57982, 3673808, 6448357, 10595684, -8619999,
--12359842, 6824703, 3746285, -7131793, 1506997, 4425427, -2774549, 2554969, -6666326, -1472637,
--7780870, 2413772, 8423505, 2655901, 7376070, 5751498, 5997922, -14635101, 744103, 17098264,
--2055142, -274878, 15883863, -2066416, -585189, 2386928, -2119030, -436476, 8783745, 13862007,
--13608067, -2183991, 2692408, -4139812, 6396280, -2128693, 613107, 1038845, -2979097, 12207908,
--1575716, -4403952, 4548371, -4567698, -7610682, 2651606, 8284455, 3168075, -934155, 1712618,
-7927973, 4179003, 7102266, 2177549, 876173, -49392, -6984691, -1412507, -5472862, -1219234,
--2301029, -12396886, -5386963, 833224, 8012262, -3262565, 3096672, -2099165, -6573448, 2947958,
-713501, -2058900, 1032403, -3971771, 201863, 1026497, 2458332, 3528316, -834297, 2284386,
--3013457, -4438849, -5345087, -535797, 4844186, -843424, -376883, 1647657, 268972, 564788,
-2610803, -1232656, -477815, -1392643, 3753802, 117575, -552440, 470836, -943819, -1968706,
--2396592, 1022739, 2135136, 2682744, 1468879, 1081795, -462246, -140660, 46171, -835908,
--3684545, 36210332, 5020280, -772557, -219043, -17377974, -5083631, 1678259, -4053376, 7668664,
-3373697, 12429635, -1582159, 20401, -2681133, -5253282, 8338679, 1568737, 3190624, 4683125,
-6528351, -6138045, -6182069, -7144678, -4972499, -4092567, -1793686, -9815611, -1925756, 15853798,
-7474317, -3015067, -1071058, -1862942, 1323924, 5616207, -2745558, 22655416, -3937411, -616328,
--10282152, 4109747, 9884330, -1699196, -7565585, -981400, 3808026, 7587597, 3278134, 10666014,
-15932181, 5190468, -338229, 9463960, 7732552, 2891050, 5976984, -19857782, 4610648, 525060,
--17569638, 6454799, -409633, -7570417, 4954782, -8028368, -7810398, 9319542, 7334731, -4139275,
--15544024, -7035694, 3739306, -8936216, -1817308, 3909494, 15278809, -2475512, 3094524, -7959648,
--16772384, -9009231, -8032663, -3641059, 8025147, 1098438, -5558225, -1685775, -3460670, -3383897,
-5139465, 4270271, 1660542, 3647501, 4340065, -3637837, -2658585, -2702071, 599685, -2963528,
--4389994, -4274566, 1879048, -1447404, -610422, 610422, 1607392, -3629247, 2087354, -778463,
--412317, -1605781, -561567, -2280628, 5754720, -3532074, -1204202, 1021129, -3646427, -3537979,
--2665027, 224412, 2945811, -19191524, 12086575, -2223719, -12400107, -491237, 11242614, -12862890,
--2732673, -10370735, 6854768, 2230162, -3841312, -4415764, -1615445, 6905771, 5253819, 2966212,
-7153805, 6307160, 610422, 7616588, 8703751, 3615289, 4799089, -8907225, -4399657, -6201933,
-5468030, 7185481, 2520609, 2222646, -4275103, -3098282, -2641405, -2298344, -7618198, 6925098,
-1534377, 449898, -8152385, -2418604, 12799539, -9259949, -9943923, -15155866, 5228049, -11367705,
-16429324, 19085760, 13080323, 7696582, 662499, 14918032, -7964480, 11724187, -1606318, -8366060,
-535260, 682363, -18034030, -7990787, 6648073, 1024350, -3130494, 2707977, 14961519, 10291279,
--17396766, -4382478, -359167, -465467, 4884989, 7357279, -456877, -13884019, 5471789, -8061654,
--25848724, -7500087, -5352066, 7976828, 12879533, 4377109, 528818, 652298, 272194, 1147830,
-9135932, 21475, 1254131, 1179505, 4553202, -8201240, -558883, 2503429, 5982890, 7344931,
-2480344, 4356171, 6389838, 8579734, 10953240, 4218732, 5357972, 5402532, 145492, -517007,
--2137820, -1378685, -73551, 2248416, -6609955, -1614371, 3644817, 6062347, -784368, 1693828,
--965294, 2540473, -93416, 3885335, -765041, 3725347, -2918967, 4773856, -44560, 4508642,
--16095390, 1604170, 1789928, 10067403, 2168422, 25721486, 4093641, -10616085, -3435974, -8938901,
-16252693, -20852066, -1864553, 14412837, -31498216, -12431246, -10631118, -11012296, -20892868, 1974074,
--3664681, -8960912, -1144609, 9881109, 1240709, 1309428, -6165426, 2448668, -2088428, 2433636,
-9127, 1561221, 8054138, -1959042, -502511, 16389058, -10604811, -2136746, 2828236, 14115947,
--7415798, 20156282, -6106370, -8144869, -17261474, -22457848, -6555731, -16716013, 8149701, -5073430,
--12553653, 1712081, 2024003, 9244380, 7816841, 3266860, -1592359, 28526636, 15785079, -1803349,
-2779381, 9767829, 7300371, 4743255, -3866544, -558883, -5122822, -6652905, -6156299, 4298189,
-22245784, -15557445, -3813394, -8861054, 16030429, -4226785, 4965519, -2290291, 7525320, -17621178,
--13181255, -4553202, 7485591, 2370822, 6463389, -3900904, 3986267, 6028524, 5294084, 2508798,
--1053878, -7519951, 4730370, 1762547, -6381248, -4480725, 3991098, -4201552, -3180423, -139586,
-4297652, -4003447, 5179194, -3251290, 7399155, -4128001, 827855, 2573222, 1345935, -3577171,
--6761353, 5230197, -2030983, -1531693, -528281, -716723, -2137283, 4958540, 6204081, 4292283,
-3796214, -753230, 2189897, 7104413, -3838090, 2797634, 1236951, -185757, 1568737, -479426,
-385473, -2594160, -12823162, -12326556, 6950331, -5527086, -23089208, 11432666, -6877854, 9128953,
--6635188, 11490648, 7839389, 9552007, 15322296, 2470143, 12968117, 5194763, 3364033, 8779450,
-3055869, 2395518, 650688, -384936, -8205535, 7312719, -16683800, 7291244, 1772748, -4807142,
--8977019, -257161, 6488622, -7482370, -3085934, -11178189, -4290136, -13755707, 903554, 7536594,
--102005, -1802813, -8678518, -15185931, -10972568, 11829951, 3998615, -4962298, -8667781, -2156611,
--651224, -14847165, 12600897, 11403138, -14553497, -14212584, -23203560, -3561065, -27770722, 7475928,
-10893648, 5681168, -1675037, -3573413, -2811593, 11399380, 11610907, 13300977, -8608725, -6920266,
-8979703, -3868155, -4083440, -16337519, 7322383, 13310641, 15344308, -3617973, 8442295, -4716411,
-2595771, 8330089, 4395362, -5904507, 2853469, -10093710, -6039261, -4198868, 1592896, 4232691,
-3746822, -4011500, -3557844, -1508070, -4410932, -911070, -6113349, -7767449, -3956739, -3249143,
--2262374, -1052267, -2137820, -3100430, 797253, -162135, 4614943, -1574106, 5863704, -1530619,
-4711043, 289910, -2452963, 1149441, 11735998, 3571802, 6055904, -2692945, -4541928, 935229,
-4369056, -4071092, 8562017, 8433705, 2576981, 3949759, 1922535, -9691057, -4928475, 22184580,
-25709674, -10188199, -537408, 6895033, -20735028, -3888019, 25865366, 868120, -28098750, 3055869,
-8685498, -705985, 9812927, 23078470, -9441412, 20857434, 11355357, 17799418, 5034776, -13676786,
--14507863, 11633456, -13161390, -20750060, -5983963, -24648280, 5456756, -1677185, 8781598, 7499013,
-5413807, 2763812, -956167, 678605, 12552042, 6096169, -24108726, -2837900, 8123931, 15512348,
-8687108, 19221590, 17383344, 13578002, -6386617, -2326262, 3631395, 35006132, -14624364, 2561948,
-7458211, 13730474, -5622649, -19464254, -4046933, -4908611, -11681774, -21526376, -23469848, 6454799,
--13147432, -9951976, 6120866, 18512920, 22844394, 433255, -1251983, -274878, 17556752, -11880416,
--6033356, 20738250, -22563074, 2510945, -17816598, -11973832, 1372242, 24049132, -3860102, -16443819,
-21488258, -21949430, 936840, -26497800, -2292976, -3323231, 7851737, 14746770, -10864120, -6198175,
--7665980, 1990181, 594316, -8203388, 4714264, -2421825, -2265595, -3494493, -2774549, -9713605,
-2245731, -4673998, 3505767, 2632815, -648003, -2139431, 5968394, 14496, 153545, -11454678,
-1785096, -964757, -311922, 10709501, 1145683, 3034931, -4393215, 1743220, -2502892, -6216429,
-2809982, -12685186, 4318053, -4363687, 9597641, -7541963, -942208, 1771674, -971736, -1960116,
--3864397, 7081864, -4575214, 7710003, -2633352, 4552129, 12068321, -14183593, -31756452, -7492571,
--11081016, -10463077, -6570226, 1474784, -10888816, -9210020, 3029563, 7074885, -6841346, 16811576,
--1834488, 11263015, -5700496, -671089, 9687299, -13858786, -8689793, -4718559, 14456860, -3490735,
--15904801, -6003828, 2385854, -7708930, 6584185, -10656888, -10729365, 15569793, 4508642, -12342662,
-7477538, -1490891, -9741523, -947040, -16141561, -13870060, 2734821, 24174760, 9731859, 7530689,
--19394462, 14923938, -1731946, 11433203, -6770479, -13493714, 6542846, -24887188, 20769388, -33694556,
--21370146, 7800735, 18532784, 1433445, 22194244, -9719511, 5808944, -15416248, 20818780, 6695854,
-15479599, 7131793, 3623879, -4893042, -5206574, -10176925, -3568044, -612033, -17969606, -10722923,
-1556926, -27217208, 1517197, 30562450, 9097278, 11005854, 2929168, -13866839, -10451266, -2828773,
--3360275, -986232, -5403606, -7295539, 6074695, 3996467, 5510980, 8633958, -8735963, 5667210,
--3326989, -4712653, -3570192, 7688529, -2613488, -8390219, -12720619, -88584, -7664369, -3604015,
--7857106, -2180233, -5155572, -3092377, 11950747, -6534793, 2723546, 3706557, -9610526, 10948409,
-90194, 6546067, 8612483, -4011500, 4253628, 1931662, -398358, 2663954, 7206419, -4184372,
--4100083, 6644852, 558883, 5282810, -23865522, -22257058, 2196876, 9173513, -11253888, -50353124,
--10525354, -257161, 6581501, -17031692, 1472637, -9496710, -1979980, -13568875, -15151571, 13460428,
--14734422, -18078054, -3057480, -12652974, -13916231, 4793184, -20215874, -6689949, 12197707, 27935542,
-22562000, -1075889, -13764833, 4830228, 20308216, -936303, 13506062, -3874597, 17013440, 9568650,
--17476222, 27816356, -21199958, -11193222, 18721762, -20627118, 6226092, -4736812, -15527381, 1834488,
-23533736, -4878546, -13833016, 8817568, 11548093, -325881, 4779762, -33839512, 8172786, 1422708,
-17076254, 8276402, -14846091, 14754286, -7909719, -1275068, -13758928, 7321846, 19832548, -4074313,
--3923990, -20315732, -28749438, 16368657, -2079838, 13191455, -15722802, 11978664, 9560597, -20447802,
-1180579, 18234284, 10407780, -9538049, -16450798, 14916958, 2429878, -12767327, 12133819, 2021856,
-5410048, 1461363, 5027796, 963683, 13557601, 210453, 4668630, -894964, 563714, 12061342,
--3878892, 322659, 2739116, -3131568, 2197950, 1102196, 8316131, -403727, -9252970, -1115081,
-1178969, -5481452, -1638530, 617402, -3694746, 12489228, -2939905, -7128035, 792958, 7954280,
-3730179, -402116, 4522064, 657667, -5187247, -631360, 13100187, 8962523, -8857833, -6469295,
-1893007, 18979460, 19041738, -51345796, 19358492, 26025354, -6622840, 18103824, -183073, 9381819,
--4168266, -10560251, -6820408, 10918881, 2576444, -14834280, -9635222, -1373853, -6956774, -3800509,
--1593970, 31758598, 6385543, 7030325, -19649476, 13673028, -13991930, 204011, 2461016, -21474836,
-10027675, -7963406, 1119376, -8696772, -15523622, 419296, 10304700, 29427506, 10584947, 3055332,
-18204756, 7703024, -2197413, 2987687, 459025, 5134634, 2982855, 19959250, 8737574, 6030134,
-3294240, -2564096, -6205154, -19658602, -16500727, 2287070, -2359011, -12131135, 1722819, 14737107,
--22487912, 21721260, 5599027, -8007430, -903017, -5822902, -1802813, 13154411, 5754183, 4281546,
--15280957, -3113851, -20885890, -6449967, 5816460, 7628936, 7609609, -9051644, -7260642, 16179142,
--1908576, -26244398, 3769908, -488016, -286152, -15501611, 5078799, 11575474, -1599875, 16665547,
-11243688, -5619965, -308701, -7245610, 9006546, -791885, 2968359, 1352915, -3791919, -3184718,
--695248, -3301219, 3652870, -7203197, -704912, 405874, 3885335, -3723200, -4310537, -5151277,
-280247, -1273458, 2861522, 1625645, -151934, -3228742, 3473555, 2603824, 512712, 3777961,
-692564, 2693481, 2516851, 3582540, -999117, -13187160, -498216, -3781182, -45634028, 70723080,
--69924216, -31622770, -15978889, -4773320, 40907952, 12021077, 45795624, 11434814, -9364102, 36082020,
-15612743, -12218108, 16915192, 15308337, 8560407, 14322105, 13890461, -12385612, -19997904, -14241038,
-2304250, -13096966, 6906308, 4101157, 8955007, -1402844, 6186901, 2084133, 22480932, 5323612,
-2108829, 6911676, -5251672, -327491, 7927436, -14121852, -20074140, -13654775, -11684459, 1981591,
-5939403, -14161581, -2315524, -8528731, -34795676, 17500918, -6301254, 8848170, -18309982, -6234145,
--16961900, -23244900, 8759586, 6138582, 22585622, -994822, 19897510, -8451422, 16664473, 1945083,
-23790898, -16884054, 14714558, 17673254, 9774809, 10242960, 853625, -7252589, 27860380, 18631568,
--1866163, 33606508, 8038568, 3914863, 14380624, 21654688, 245350, 9943923, 12498892, 5696201,
-5447629, -2538326, 1083942, -19681688, -5051956, -2677375, 3100430, 4098473, 3861713, 13042205,
-5750425, 6635188, -5150203, -744640, 5104569, 514859, 396211, -4702453, 5338108, 4526896,
-2548526, -3678103, 6790344, -1071058, 1175210, -5330592, -4963909, -2008971, 493921, 574452,
--3270081, -10844792, 2455648, 2313377, -2983392, -574989, -2829847, 783832, -4019016, 2631741,
--3874597, 132607, 9631464, -2787971, -9673340, 6207839, 4451197, 3765613, -2384244, -1313186,
-43176768, 3740917, -26011396, -38210176, -20270636, -15940234, 5127117, 31641560, -524523, -13367549,
-28294708, 2341294, -22870164, 20582558, 22315040, -4076998, -422517, -2152852, -20245402, 22509924,
-1264868, 12788802, -7140383, -17992692, -31481574, 5750425, 3972845, 4884452, -4444755, 9911711,
--10469520, -108985, -20177220, -25124484, 8828305, -3165391, 8002061, -3615289, -9327058, -22747758,
--35334160, 18138720, -19746112, 8122320, 16995186, -1170916, -9096204, -17330730, -12501039, 40705016,
-9247601, -1835562, 5289252, -5355288, -16445967, -5377836, 23594402, -22792854, -38379292, -13389024,
--12181064, -53763328, -42018200, -22608708, -23365696, 5793911, -242129, -18698676, -35874788, -14179298,
--16952772, -12161200, -9810779, -7211787, -21456046, -20556788, 16276315, -18254684, 1162326, 2785823,
--22479858, -3924526, -16401406, -20548198, -4982699, -3335579, 9555765, 4025458, 12847321, -13121662,
-3399467, 7568806, -32212, -17655000, -9972377, -11840151, -1120987, 5784784, -5975374, -8582418,
-15358803, 9143449, 11068131, -18047990, 3120831, -8772471, -954020, 784368, 1859184, -2143726,
-18315352, 1460289, -3146064, 2331094, 6467684, 9238475, 7654169, -1182727, 10895795, -7765301,
--4068408, -3330210, -14057428, -378494, -4226248, -18161270, -15120432, 2655364, 865973, -278099,
--4551592, -3978750, 29667486, -3526705, 28262496, 41829224, -7705708, -45412836, -43940200, -9514963,
-21079162, 2825552, -34482680, 27012660, -5892159, -22675280, 27796492, -52298744, -10961830, 164819,
--9233106, -8119099, 63356672, -26667988, 59373628, -3065533, 12510166, -4527433, -23421530, 37877852,
-10117869, 39386996, -27057220, -26843546, 8662412, -43211128, -12869333, -7079180, -29908004, 62126164,
--5390184, -64796024, -946503, -28986734, 8456254, 15732465, 25948044, 20856362, -25486872, -16166257,
--39677444, -11831024, -18355616, 16821776, 11289858, -2359011, 11749420, -8155606, -28134184, -11749420,
--32838784, 33506650, -25380036, -17787070, 30313342, 6942815, 51216412, 24589762, 4531728, 26792542,
--36134632, -13727789, -37309844, -36532456, -5535139, -5504001, -45528264, 46784540, -8202314, -36696200,
--54235236, 3339874, -10698227, 39573292, -2456185, 1850057, 5426691, -7346542, 7631620, 8739722,
-18767934, -12723841, -12517145, -8276402, 656593, -2499671, -2527588, -12028593, 13280039, 7946763,
-15823733, -3907347, -8420283, -7493108, -2696166, 2747169, 21161840, 22189412, -3561065, 1034550,
-12255689, -3586835, -27967216, -13815299, 1837709, 3667902, -2119030, -18070538, 6349573, -2306934,
--4173098, -20661478, 8105677, 6760816, 24481314, 3828963, 6089190, -1363115, 10113574, 1606855,
--5742372, -84701584, 43760348, 10011032, -18227842, -13848585, 27057758, 14794015, -16292422, -4533875,
--39785356, -16750372, 17002164, -34524020, 1388885, 6097243, -10455024, -23058606, -15606301, 30844308,
-12497281, -6305012, -44392244, 14963129, 28057948, 16056198, -34354368, -23036594, 224412, 37376416,
-3422015, -9166534, 5989332, 1108638, 19235548, -50039052, -43112344, 53368188, 8385924, 22268332,
--50765976, 10979547, -2195265, 37182604, -33331094, -6489159, -50886236, 17739288, 36852432, 8523899,
--22545358, 14516989, 53444964, -23992224, -25325812, -20046760, 7700340, 2139431, 46905876, -14055817,
-3714073, -25308632, 8408472, -27743342, -773094, 17681306, -34418796, 32968706, 10174241, -24076512,
--37237368, -22768696, -1734630, 33266132, -60151016, -13204877, 54744728, 7126962, -24447490, -11637214,
--17186312, 51347944, -5512591, -53940496, -6067178, -80531, -13085692, 21912924, -3561065, -7610682,
-16882980, -1556926, -10831371, -14177687, -1249299, -12505334, 4022774, 9102109, 12350715, -10885058,
--7725036, 11163157, -7086159, 10572062, -5359046, -10848014, 15093052, -8169565, 13627931, 18333068,
-1477469, -26656178, -1513976, -15899969, 6913287, 9802726, 6735583, -18629958, 512175, -14071923,
-13465259, -3969087, -7714835, -5381594, 3192771, 4492536, 55988120, 28586766, 13028246, 12884365,
-13590350, -8952322, -8645769, -18926848, 2538863, 6014028, 5102421, -1181653, -31994822, 15328201,
-6483790, -22429930, -18797998, -9766219, -10916196, 8247411, -8107825, -9565966, 2943663, -868657,
--16888886, 21805548, -15516643, -5167920, -16128139, -14894410, 10853919, -6397891, -1939715, 5420249,
-7162932, -1873680, -21519396, 5094905, 34121368, 7152731, -52947820, -3449933, -11313481, -16614544,
-11433740, 11910481, 27762132, 13169443, -34445100, 37535328, -9075803, -26156888, 78588240, -15868294,
--6454262, -25918518, -62027916, 28447716, 31889596, 10364293, 12199855, -53314504, 15737834, -4229469,
--12643847, -9439264, 2392834, -5120675, 8595303, 10082973, 2464238, -7947837, -14976551, 16107738,
-20553566, 28214714, -13707388, -2900714, 6272263, -4189741, 15079093, -36574332, 3808562, 6443525,
--16858820, 2815351, -13999983, 5581310, 528818, 4478041, -2090039, 1005022, 1677722, -738198,
--222265, -4863514, -3520263, 9769977, -5129265, -355945, 7492571, 1619203, 599148, 11957726,
--9575093, 7337952, 8847096, -502511, -1444720, -10074920, 8460012, -18860812, -5029407, 12380780,
-3839701, -5104569, -12507482, 3927748, -2692945, 15414638, -31584652, -76201848, -128408784, 10289668,
-130941208, 12390444, 278156576, 280774912, 102083856, 281765408, 163556656, -47663936, -4332549, -25672094,
--213511952, -177250080, -124206696, -221905920, -211710752, -60574072, -133194456, -116287848, 26462368, 36965708,
--28595892, 41084048, 60687352, -244813, 4424353, 120390616, 80583248, 30535070, 89302568, 166571712,
-78663936, 91740504, 206434912, 81456736, 37279244, 178235232, 172160544, 7387881, 110191680, 194452496,
-573915, 49251464, 115574352, -4691178, -94101120, 46541340, -19474992, -181646512, -169031120, -155659280,
--302008672, -446889728, -310791360, -434803712, -578893440, -408809472, -331022272, -447922688, -285800000, -137820672,
--132487392, -25393458, 133590128, 268937440, 304902400, 407628352, 555155648, 545121024, 516071456, 580908288,
-580420288, 473622144, 381617504, 408232896, 271632512, 96346856, 129574328, 31514860, -238117280, -153473136,
--161822016, -332800384, -280714752, -202219408, -236321456, -273893824, -170152640, -149067584, -206835424, -171030960,
--88569208, -142349168, -186926640, -112752016, -79222280, -148663856, -83610664, 19250580, -46332496, -53366580,
-59635620, -2390686, -75184480, -9943386, -47316580, -170468864, -118286080, -89816896, -157783680, -70967352,
-39364448, 75255880, 139774880, 232244448, 270479328, 283416288, 318271584, 338409600, 333651840, 307201280,
-286277824, 242683376, 193212320, 118089592, 88774824, 9987410, -76047768, -133461280, -212672288, -306159232,
--297311584, -253665056, -229517680, -199735312, -136616464, -115801448, -103142032, -75254808, -49491444, -45008036,
--19389092, -13026636, -9327058, -2040646, 16123844, 27232778, 36182952, 42131480, 49587544, 45695768,
-41121092, 24771224, 17101486, 3621194, 4120484, -1491427, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+3418794, 2694018, -905701, 2068027, 963146, 5925981, -1047972, -141734, 727997, 4341675,
+-872415, -4496294, -2115808, -4315369, 1037235, -1525787, -380641, -530965, 1027034, 434329,
+860067, 2525978, 4592931, -2033667, -1154273, 937377, -2197413, -284005, 3578245, -1938104,
+4427575, 475131, -1617592, 2971044, -4054449, -1016297, -2831457, 3960497, -139586, -1438814,
+-1094680, 64961, 3642669, 165893, 4388920, 1712618, -3648575, 2954938, -1607928, -2690260,
+-2235531, 3036542, -651761, 9637907, 998580, 2436857, 1728188, -4465156, 44560, -643171,
+1151588, -2527588, -1742683, 5031018, 4085588, 389768, 1685775, -441308, 2535105, -4118337,
+401579, 3123515, 1937567, 333397, -338766, 2230699, -3527779, -1600412, 3717294, -2439542,
+776852, 1835025, 2191507, 694711, -2822867, -1854889, 1461900, 341450, 1449552, -430570,
+405874, -1386738, -95026, -683974, -427886, 812286, 1522566, 660351, -908386, -334471,
+-619012, 374736, 926639, -544924, 680752, 520765, 965294, -128312, 1161252, -466004,
+281857, 730144, 907849, -7336341, -6628209, -4118337, -3757023, -3248606, 1245004, 4636417,
+9438728, 1816234, 2433099, -13422, -6740415, -2814277, -2503966, -6047314, 9420474, 2511482,
+3741990, 2594697, -2083059, 967978, 9020505, 3609383, -2121177, -164283, -2186675, 199716,
+-4173098, 2522220, -1314260, -1859184, 360240, 4805532, 510564, 1685238, 3008088, 4169340,
+-7441031, 111132, 1897302, 4348655, 6665789, -3688840, -744103, -1777580, 5562520, 3026341,
+3590593, -573915, 1670742, 11127723, -7006166, 1428077, 665720, -4669167, 2010582, -6531035,
+-868657, 1705639, -1404454, -9856950, 2785823, 709207, -2656437, -2711735, -441308, -1458141,
+3353833, -3105261, -1371168, 1003412, -86973, -3018825, -129386, 2531346, -4119411, 400506,
+-1110249, -957778, -1269163, -693637, 650688, -2376191, -1797981, 395674, -1424319, -1869921,
+-1943473, -632971, -1283658, 2441152, -2094870, -555661, 360777, 1249836, -118112, 126702,
+-715649, 191663, -1246077, 1000727, -1787780, 9912785, 914291, 3528853, -375810, -2715493,
+251792, 6950868, 3616899, 4468914, 7267085, -3239479, 109522, 6973953, 2280628, 3037079,
+435402, 816044, 4149475, -3772055, -1061931, 5171678, -3518652, 1990717, 3006477, -2275796,
+2218888, 6949257, -3283503, 2533494, 590558, 219580, 124554, -1511292, -4742181, -1534377,
+-3968013, -477278, 1709397, 3295851, 3579318, -695785, -5958194, -608275, 8785356, -3305514,
+1802276, -1633698, -9170292, 5312875, 1387811, 3926674, -631897, 4479651, 4468377, -7902740,
+3165928, 165356, 2974265, -655519, -5454072, -339302, -734976, -1088237, -995359, 3425237,
+24696, 602906, 7153805, 1294933, 5696737, 98247, 593242, 998043, -3056943, -4970351,
+3389803, -3783329, 2244657, 1284195, -144955, 2240899, -2420214, -1493575, 1612223, -9127,
+-4669167, 1429687, 606127, 519691, -905701, 1954210, 244276, -909996, 2328409, -614180,
+-147640, -1992328, 727997, -1042603, 377420, -82141, -230854, 357556, -671626, 1132798,
+333934, -583579, 405874, -390305, 184147, -157303, -707059, 16291885, 9166534, 13938243,
+4534412, -5795522, 2971044, -2603287, 401579, 1340030, -11883101, -3185792, -3266323, 3054259,
+4680978, -1943473, -266288, 1552631, 383863, 8492224, -932008, -8944269, 2913062, -5180268,
+3971234, 4503273, 3614752, 5248987, -1263257, -1844152, 2142115, -1601486, -2072322, 1495722,
+-1383516, 3140695, 4532264, -1979443, -6870874, 2192044, -6683506, -4328254, -841814, -13927505,
+135291, -2370822, 5450851, 5178120, 2511482, 8494372, 8568460, 3773666, 1905355, -644782,
+412854, 459025, -3892314, 7931194, -1067299, 2741800, -2529736, -3058017, -1101659, -4570919,
+4002373, -2127620, -1691143, 7777112, -6508486, -2019172, 1642825, -3005403, -913217, -264677,
+2723546, 3202972, 2156074, 5531381, -1831267, -1535988, -819265, -3520263, 1835025, 3544959,
+4886062, -111669, -754304, -1060857, 46708, 1037772, 1019518, -1489280, 1615445, -38118,
+1160715, 981400, -213138, -402653, 2090039, -622770, 1048509, 850404, 963146, 855772,
+-617402, 774705, 3539590, -277562, 161598, 404801, 2608656, 457951, -603443, -1879585,
+-6206228, -14286135, -5110474, -1483911, 2021856, -1764158, 4315369, -939524, 6973417, -6280853,
+3680250, -1541356, 12836584, 5408975, -2844879, -5489505, 2938831, -7817914, -4234838, 3046206,
+-2807835, -4652524, 8858907, 3738769, -564251, -4083440, -5617817, 3804804, 2847563, 2849711,
+-302795, -1350767, -3497177, 5276368, -6903086, -2896419, -383326, 4902169, 3654480, -308701,
+5293547, 718870, -2578591, 1134945, -2568927, -2557116, -3090766, 3823058, -2843268, -41339,
+4918812, 7505456, 7556995, 3178813, 2628520, -441308, 4246112, -1679332, 6139656, -1020055,
+3886409, 3118146, -2638721, 383326, -2883534, 3089692, 2559801, 1125281, -1040456, -5158793,
+3612604, -5619428, -761283, -6085432, 2188286, -381715, -663036, 1247151, -5299990, 319438,
+1291711, 8571144, 2687576, 1511829, 1946694, 3396782, 1394254, 1806034, -2596308, 1993939,
+1379221, -3389266, -359704, 280784, 675921, 1583232, -1783485, 1200443, -1178432, 337692,
+-277562, 2245731, 158914, 372052, 191663, 825707, -513249, 2049236, -1129576, 835371,
+689342, 1980517, 826244, 2708514, -1948305, 1076426, -510027, 3107409, 1085553, 1178432,
+-453656, -310848, 169651, -474594, -2021856, -6649146, -14017163, -11288785, 688805, -9644349,
+-4773856, -13665512, -7299834, -8326331, 3299609, -4445291, -5943698, -2021856, 306016, -3511136,
+-13302587, 3572876, -2369748, 1339493, -6033892, 5998996, 2199560, 139586, -5371931, -2379412,
+6774774, 4638028, 277562, -1010391, -4585415, 2845416, 1449552, 2945811, -5486284, -507880,
+-4462471, -3980361, -4366908, 449898, 8778913, -7185481, 125628, -6846178, 671089, 3183108,
+3964792, -7220377, 7227356, 8807367, -2937758, -2101850, -1571958, -354335, 2767033, 3549254,
+845572, 2411624, -4332012, -844498, -1632625, 7572028, -2413235, 8380018, -254477, -2588255,
+6654515, -712965, -4046396, 1416266, 7211787, 8337606, -670552, -2632815, -4594542, 2858838,
+-6118718, -623307, 4018479, -3133716, 1783485, -238908, -86436, -2526515, 4832, -1966021,
+-3090229, -338766, 2518462, 1328756, 2507724, -1178969, -883153, -2084133, 746251, -1692754,
+2610803, 1318018, 3668976, 311922, -926102, -374199, -717796, -1364189, 1648731, -1214402,
+-731218, 650151, 513249, -1887638, -700080, 437013, -3758, -1069984, -1838246, -170188,
+-1700807, -1194538, -749472, 2080912, -220654, 674310, 579821, 19864, -1347009, -459025,
+-10846403, -10730439, -12461311, 3687230, -10097468, -4160213, 9649718, 4751308, -10956462, -702227,
+79457, 4835597, 7118909, 12240657, -3329137, -4354023, -12027519, -14696304, -8730595, -2928631,
+5979668, -5940477, 2863670, -8451959, 8796630, -6332930, 7058779, -3249680, 965831, 1887101,
+-1452236, -6244346, 9926743, -8555038, -464393, -4545149, 1187022, -5301601, 1197222, -21484500,
+315680, 10064182, -12847321, 2973728, 8719320, 3192771, -6709276, -691490, 10501732, -12934831,
+-82141, 5370320, 5060545, 5052492, -1915019, -1822677, -8440148, -4109747, 3401077, 5791227,
+9084393, 11191074, -16432545, 6297496, -4989142, 1263794, -11599096, -4635344, 9473624, 2388539,
+1264331, -6282464, -36507, 6204617, 4423280, 2805688, -5766531, -3630858, 5912560, -1513976,
+-2568927, -1219771, -4257923, 3660923, -741956, -3259343, -1322313, -1071594, 811749, -2080912,
+-2338073, 863825, 765041, 989990, -1354525, -1828582, 1574106, -1141924, -4403952, -308701,
+-1349694, 2713346, -2074469, 213138, 153008, 1132261, -2781528, -1452236, -1043677, 368830,
+2830384, -258772, -751082, 1862405, -30602, 1833414, -892279, -1855963, -797253, -3202972,
+675384, 56371, -2355253, 1309965, 12831752, 21485038, 11905649, 14014478, 2099165, 4993973,
+18786724, -562104, 532576, 12907450, -6327561, 57982, 3673808, 6448357, 10595684, -8619999,
+-12359842, 6824703, 3746285, -7131793, 1506997, 4425427, -2774549, 2554969, -6666326, -1472637,
+-7780870, 2413772, 8423505, 2655901, 7376070, 5751498, 5997922, -14635101, 744103, 17098264,
+-2055142, -274878, 15883863, -2066416, -585189, 2386928, -2119030, -436476, 8783745, 13862007,
+-13608067, -2183991, 2692408, -4139812, 6396280, -2128693, 613107, 1038845, -2979097, 12207908,
+-1575716, -4403952, 4548371, -4567698, -7610682, 2651606, 8284455, 3168075, -934155, 1712618,
+7927973, 4179003, 7102266, 2177549, 876173, -49392, -6984691, -1412507, -5472862, -1219234,
+-2301029, -12396886, -5386963, 833224, 8012262, -3262565, 3096672, -2099165, -6573448, 2947958,
+713501, -2058900, 1032403, -3971771, 201863, 1026497, 2458332, 3528316, -834297, 2284386,
+-3013457, -4438849, -5345087, -535797, 4844186, -843424, -376883, 1647657, 268972, 564788,
+2610803, -1232656, -477815, -1392643, 3753802, 117575, -552440, 470836, -943819, -1968706,
+-2396592, 1022739, 2135136, 2682744, 1468879, 1081795, -462246, -140660, 46171, -835908,
+-3684545, 36210332, 5020280, -772557, -219043, -17377974, -5083631, 1678259, -4053376, 7668664,
+3373697, 12429635, -1582159, 20401, -2681133, -5253282, 8338679, 1568737, 3190624, 4683125,
+6528351, -6138045, -6182069, -7144678, -4972499, -4092567, -1793686, -9815611, -1925756, 15853798,
+7474317, -3015067, -1071058, -1862942, 1323924, 5616207, -2745558, 22655416, -3937411, -616328,
+-10282152, 4109747, 9884330, -1699196, -7565585, -981400, 3808026, 7587597, 3278134, 10666014,
+15932181, 5190468, -338229, 9463960, 7732552, 2891050, 5976984, -19857782, 4610648, 525060,
+-17569638, 6454799, -409633, -7570417, 4954782, -8028368, -7810398, 9319542, 7334731, -4139275,
+-15544024, -7035694, 3739306, -8936216, -1817308, 3909494, 15278809, -2475512, 3094524, -7959648,
+-16772384, -9009231, -8032663, -3641059, 8025147, 1098438, -5558225, -1685775, -3460670, -3383897,
+5139465, 4270271, 1660542, 3647501, 4340065, -3637837, -2658585, -2702071, 599685, -2963528,
+-4389994, -4274566, 1879048, -1447404, -610422, 610422, 1607392, -3629247, 2087354, -778463,
+-412317, -1605781, -561567, -2280628, 5754720, -3532074, -1204202, 1021129, -3646427, -3537979,
+-2665027, 224412, 2945811, -19191524, 12086575, -2223719, -12400107, -491237, 11242614, -12862890,
+-2732673, -10370735, 6854768, 2230162, -3841312, -4415764, -1615445, 6905771, 5253819, 2966212,
+7153805, 6307160, 610422, 7616588, 8703751, 3615289, 4799089, -8907225, -4399657, -6201933,
+5468030, 7185481, 2520609, 2222646, -4275103, -3098282, -2641405, -2298344, -7618198, 6925098,
+1534377, 449898, -8152385, -2418604, 12799539, -9259949, -9943923, -15155866, 5228049, -11367705,
+16429324, 19085760, 13080323, 7696582, 662499, 14918032, -7964480, 11724187, -1606318, -8366060,
+535260, 682363, -18034030, -7990787, 6648073, 1024350, -3130494, 2707977, 14961519, 10291279,
+-17396766, -4382478, -359167, -465467, 4884989, 7357279, -456877, -13884019, 5471789, -8061654,
+-25848724, -7500087, -5352066, 7976828, 12879533, 4377109, 528818, 652298, 272194, 1147830,
+9135932, 21475, 1254131, 1179505, 4553202, -8201240, -558883, 2503429, 5982890, 7344931,
+2480344, 4356171, 6389838, 8579734, 10953240, 4218732, 5357972, 5402532, 145492, -517007,
+-2137820, -1378685, -73551, 2248416, -6609955, -1614371, 3644817, 6062347, -784368, 1693828,
+-965294, 2540473, -93416, 3885335, -765041, 3725347, -2918967, 4773856, -44560, 4508642,
+-16095390, 1604170, 1789928, 10067403, 2168422, 25721486, 4093641, -10616085, -3435974, -8938901,
+16252693, -20852066, -1864553, 14412837, -31498216, -12431246, -10631118, -11012296, -20892868, 1974074,
+-3664681, -8960912, -1144609, 9881109, 1240709, 1309428, -6165426, 2448668, -2088428, 2433636,
+9127, 1561221, 8054138, -1959042, -502511, 16389058, -10604811, -2136746, 2828236, 14115947,
+-7415798, 20156282, -6106370, -8144869, -17261474, -22457848, -6555731, -16716013, 8149701, -5073430,
+-12553653, 1712081, 2024003, 9244380, 7816841, 3266860, -1592359, 28526636, 15785079, -1803349,
+2779381, 9767829, 7300371, 4743255, -3866544, -558883, -5122822, -6652905, -6156299, 4298189,
+22245784, -15557445, -3813394, -8861054, 16030429, -4226785, 4965519, -2290291, 7525320, -17621178,
+-13181255, -4553202, 7485591, 2370822, 6463389, -3900904, 3986267, 6028524, 5294084, 2508798,
+-1053878, -7519951, 4730370, 1762547, -6381248, -4480725, 3991098, -4201552, -3180423, -139586,
+4297652, -4003447, 5179194, -3251290, 7399155, -4128001, 827855, 2573222, 1345935, -3577171,
+-6761353, 5230197, -2030983, -1531693, -528281, -716723, -2137283, 4958540, 6204081, 4292283,
+3796214, -753230, 2189897, 7104413, -3838090, 2797634, 1236951, -185757, 1568737, -479426,
+385473, -2594160, -12823162, -12326556, 6950331, -5527086, -23089208, 11432666, -6877854, 9128953,
+-6635188, 11490648, 7839389, 9552007, 15322296, 2470143, 12968117, 5194763, 3364033, 8779450,
+3055869, 2395518, 650688, -384936, -8205535, 7312719, -16683800, 7291244, 1772748, -4807142,
+-8977019, -257161, 6488622, -7482370, -3085934, -11178189, -4290136, -13755707, 903554, 7536594,
+-102005, -1802813, -8678518, -15185931, -10972568, 11829951, 3998615, -4962298, -8667781, -2156611,
+-651224, -14847165, 12600897, 11403138, -14553497, -14212584, -23203560, -3561065, -27770722, 7475928,
+10893648, 5681168, -1675037, -3573413, -2811593, 11399380, 11610907, 13300977, -8608725, -6920266,
+8979703, -3868155, -4083440, -16337519, 7322383, 13310641, 15344308, -3617973, 8442295, -4716411,
+2595771, 8330089, 4395362, -5904507, 2853469, -10093710, -6039261, -4198868, 1592896, 4232691,
+3746822, -4011500, -3557844, -1508070, -4410932, -911070, -6113349, -7767449, -3956739, -3249143,
+-2262374, -1052267, -2137820, -3100430, 797253, -162135, 4614943, -1574106, 5863704, -1530619,
+4711043, 289910, -2452963, 1149441, 11735998, 3571802, 6055904, -2692945, -4541928, 935229,
+4369056, -4071092, 8562017, 8433705, 2576981, 3949759, 1922535, -9691057, -4928475, 22184580,
+25709674, -10188199, -537408, 6895033, -20735028, -3888019, 25865366, 868120, -28098750, 3055869,
+8685498, -705985, 9812927, 23078470, -9441412, 20857434, 11355357, 17799418, 5034776, -13676786,
+-14507863, 11633456, -13161390, -20750060, -5983963, -24648280, 5456756, -1677185, 8781598, 7499013,
+5413807, 2763812, -956167, 678605, 12552042, 6096169, -24108726, -2837900, 8123931, 15512348,
+8687108, 19221590, 17383344, 13578002, -6386617, -2326262, 3631395, 35006132, -14624364, 2561948,
+7458211, 13730474, -5622649, -19464254, -4046933, -4908611, -11681774, -21526376, -23469848, 6454799,
+-13147432, -9951976, 6120866, 18512920, 22844394, 433255, -1251983, -274878, 17556752, -11880416,
+-6033356, 20738250, -22563074, 2510945, -17816598, -11973832, 1372242, 24049132, -3860102, -16443819,
+21488258, -21949430, 936840, -26497800, -2292976, -3323231, 7851737, 14746770, -10864120, -6198175,
+-7665980, 1990181, 594316, -8203388, 4714264, -2421825, -2265595, -3494493, -2774549, -9713605,
+2245731, -4673998, 3505767, 2632815, -648003, -2139431, 5968394, 14496, 153545, -11454678,
+1785096, -964757, -311922, 10709501, 1145683, 3034931, -4393215, 1743220, -2502892, -6216429,
+2809982, -12685186, 4318053, -4363687, 9597641, -7541963, -942208, 1771674, -971736, -1960116,
+-3864397, 7081864, -4575214, 7710003, -2633352, 4552129, 12068321, -14183593, -31756452, -7492571,
+-11081016, -10463077, -6570226, 1474784, -10888816, -9210020, 3029563, 7074885, -6841346, 16811576,
+-1834488, 11263015, -5700496, -671089, 9687299, -13858786, -8689793, -4718559, 14456860, -3490735,
+-15904801, -6003828, 2385854, -7708930, 6584185, -10656888, -10729365, 15569793, 4508642, -12342662,
+7477538, -1490891, -9741523, -947040, -16141561, -13870060, 2734821, 24174760, 9731859, 7530689,
+-19394462, 14923938, -1731946, 11433203, -6770479, -13493714, 6542846, -24887188, 20769388, -33694556,
+-21370146, 7800735, 18532784, 1433445, 22194244, -9719511, 5808944, -15416248, 20818780, 6695854,
+15479599, 7131793, 3623879, -4893042, -5206574, -10176925, -3568044, -612033, -17969606, -10722923,
+1556926, -27217208, 1517197, 30562450, 9097278, 11005854, 2929168, -13866839, -10451266, -2828773,
+-3360275, -986232, -5403606, -7295539, 6074695, 3996467, 5510980, 8633958, -8735963, 5667210,
+-3326989, -4712653, -3570192, 7688529, -2613488, -8390219, -12720619, -88584, -7664369, -3604015,
+-7857106, -2180233, -5155572, -3092377, 11950747, -6534793, 2723546, 3706557, -9610526, 10948409,
+90194, 6546067, 8612483, -4011500, 4253628, 1931662, -398358, 2663954, 7206419, -4184372,
+-4100083, 6644852, 558883, 5282810, -23865522, -22257058, 2196876, 9173513, -11253888, -50353124,
+-10525354, -257161, 6581501, -17031692, 1472637, -9496710, -1979980, -13568875, -15151571, 13460428,
+-14734422, -18078054, -3057480, -12652974, -13916231, 4793184, -20215874, -6689949, 12197707, 27935542,
+22562000, -1075889, -13764833, 4830228, 20308216, -936303, 13506062, -3874597, 17013440, 9568650,
+-17476222, 27816356, -21199958, -11193222, 18721762, -20627118, 6226092, -4736812, -15527381, 1834488,
+23533736, -4878546, -13833016, 8817568, 11548093, -325881, 4779762, -33839512, 8172786, 1422708,
+17076254, 8276402, -14846091, 14754286, -7909719, -1275068, -13758928, 7321846, 19832548, -4074313,
+-3923990, -20315732, -28749438, 16368657, -2079838, 13191455, -15722802, 11978664, 9560597, -20447802,
+1180579, 18234284, 10407780, -9538049, -16450798, 14916958, 2429878, -12767327, 12133819, 2021856,
+5410048, 1461363, 5027796, 963683, 13557601, 210453, 4668630, -894964, 563714, 12061342,
+-3878892, 322659, 2739116, -3131568, 2197950, 1102196, 8316131, -403727, -9252970, -1115081,
+1178969, -5481452, -1638530, 617402, -3694746, 12489228, -2939905, -7128035, 792958, 7954280,
+3730179, -402116, 4522064, 657667, -5187247, -631360, 13100187, 8962523, -8857833, -6469295,
+1893007, 18979460, 19041738, -51345796, 19358492, 26025354, -6622840, 18103824, -183073, 9381819,
+-4168266, -10560251, -6820408, 10918881, 2576444, -14834280, -9635222, -1373853, -6956774, -3800509,
+-1593970, 31758598, 6385543, 7030325, -19649476, 13673028, -13991930, 204011, 2461016, -21474836,
+10027675, -7963406, 1119376, -8696772, -15523622, 419296, 10304700, 29427506, 10584947, 3055332,
+18204756, 7703024, -2197413, 2987687, 459025, 5134634, 2982855, 19959250, 8737574, 6030134,
+3294240, -2564096, -6205154, -19658602, -16500727, 2287070, -2359011, -12131135, 1722819, 14737107,
+-22487912, 21721260, 5599027, -8007430, -903017, -5822902, -1802813, 13154411, 5754183, 4281546,
+-15280957, -3113851, -20885890, -6449967, 5816460, 7628936, 7609609, -9051644, -7260642, 16179142,
+-1908576, -26244398, 3769908, -488016, -286152, -15501611, 5078799, 11575474, -1599875, 16665547,
+11243688, -5619965, -308701, -7245610, 9006546, -791885, 2968359, 1352915, -3791919, -3184718,
+-695248, -3301219, 3652870, -7203197, -704912, 405874, 3885335, -3723200, -4310537, -5151277,
+280247, -1273458, 2861522, 1625645, -151934, -3228742, 3473555, 2603824, 512712, 3777961,
+692564, 2693481, 2516851, 3582540, -999117, -13187160, -498216, -3781182, -45634028, 70723080,
+-69924216, -31622770, -15978889, -4773320, 40907952, 12021077, 45795624, 11434814, -9364102, 36082020,
+15612743, -12218108, 16915192, 15308337, 8560407, 14322105, 13890461, -12385612, -19997904, -14241038,
+2304250, -13096966, 6906308, 4101157, 8955007, -1402844, 6186901, 2084133, 22480932, 5323612,
+2108829, 6911676, -5251672, -327491, 7927436, -14121852, -20074140, -13654775, -11684459, 1981591,
+5939403, -14161581, -2315524, -8528731, -34795676, 17500918, -6301254, 8848170, -18309982, -6234145,
+-16961900, -23244900, 8759586, 6138582, 22585622, -994822, 19897510, -8451422, 16664473, 1945083,
+23790898, -16884054, 14714558, 17673254, 9774809, 10242960, 853625, -7252589, 27860380, 18631568,
+-1866163, 33606508, 8038568, 3914863, 14380624, 21654688, 245350, 9943923, 12498892, 5696201,
+5447629, -2538326, 1083942, -19681688, -5051956, -2677375, 3100430, 4098473, 3861713, 13042205,
+5750425, 6635188, -5150203, -744640, 5104569, 514859, 396211, -4702453, 5338108, 4526896,
+2548526, -3678103, 6790344, -1071058, 1175210, -5330592, -4963909, -2008971, 493921, 574452,
+-3270081, -10844792, 2455648, 2313377, -2983392, -574989, -2829847, 783832, -4019016, 2631741,
+-3874597, 132607, 9631464, -2787971, -9673340, 6207839, 4451197, 3765613, -2384244, -1313186,
+43176768, 3740917, -26011396, -38210176, -20270636, -15940234, 5127117, 31641560, -524523, -13367549,
+28294708, 2341294, -22870164, 20582558, 22315040, -4076998, -422517, -2152852, -20245402, 22509924,
+1264868, 12788802, -7140383, -17992692, -31481574, 5750425, 3972845, 4884452, -4444755, 9911711,
+-10469520, -108985, -20177220, -25124484, 8828305, -3165391, 8002061, -3615289, -9327058, -22747758,
+-35334160, 18138720, -19746112, 8122320, 16995186, -1170916, -9096204, -17330730, -12501039, 40705016,
+9247601, -1835562, 5289252, -5355288, -16445967, -5377836, 23594402, -22792854, -38379292, -13389024,
+-12181064, -53763328, -42018200, -22608708, -23365696, 5793911, -242129, -18698676, -35874788, -14179298,
+-16952772, -12161200, -9810779, -7211787, -21456046, -20556788, 16276315, -18254684, 1162326, 2785823,
+-22479858, -3924526, -16401406, -20548198, -4982699, -3335579, 9555765, 4025458, 12847321, -13121662,
+3399467, 7568806, -32212, -17655000, -9972377, -11840151, -1120987, 5784784, -5975374, -8582418,
+15358803, 9143449, 11068131, -18047990, 3120831, -8772471, -954020, 784368, 1859184, -2143726,
+18315352, 1460289, -3146064, 2331094, 6467684, 9238475, 7654169, -1182727, 10895795, -7765301,
+-4068408, -3330210, -14057428, -378494, -4226248, -18161270, -15120432, 2655364, 865973, -278099,
+-4551592, -3978750, 29667486, -3526705, 28262496, 41829224, -7705708, -45412836, -43940200, -9514963,
+21079162, 2825552, -34482680, 27012660, -5892159, -22675280, 27796492, -52298744, -10961830, 164819,
+-9233106, -8119099, 63356672, -26667988, 59373628, -3065533, 12510166, -4527433, -23421530, 37877852,
+10117869, 39386996, -27057220, -26843546, 8662412, -43211128, -12869333, -7079180, -29908004, 62126164,
+-5390184, -64796024, -946503, -28986734, 8456254, 15732465, 25948044, 20856362, -25486872, -16166257,
+-39677444, -11831024, -18355616, 16821776, 11289858, -2359011, 11749420, -8155606, -28134184, -11749420,
+-32838784, 33506650, -25380036, -17787070, 30313342, 6942815, 51216412, 24589762, 4531728, 26792542,
+-36134632, -13727789, -37309844, -36532456, -5535139, -5504001, -45528264, 46784540, -8202314, -36696200,
+-54235236, 3339874, -10698227, 39573292, -2456185, 1850057, 5426691, -7346542, 7631620, 8739722,
+18767934, -12723841, -12517145, -8276402, 656593, -2499671, -2527588, -12028593, 13280039, 7946763,
+15823733, -3907347, -8420283, -7493108, -2696166, 2747169, 21161840, 22189412, -3561065, 1034550,
+12255689, -3586835, -27967216, -13815299, 1837709, 3667902, -2119030, -18070538, 6349573, -2306934,
+-4173098, -20661478, 8105677, 6760816, 24481314, 3828963, 6089190, -1363115, 10113574, 1606855,
+-5742372, -84701584, 43760348, 10011032, -18227842, -13848585, 27057758, 14794015, -16292422, -4533875,
+-39785356, -16750372, 17002164, -34524020, 1388885, 6097243, -10455024, -23058606, -15606301, 30844308,
+12497281, -6305012, -44392244, 14963129, 28057948, 16056198, -34354368, -23036594, 224412, 37376416,
+3422015, -9166534, 5989332, 1108638, 19235548, -50039052, -43112344, 53368188, 8385924, 22268332,
+-50765976, 10979547, -2195265, 37182604, -33331094, -6489159, -50886236, 17739288, 36852432, 8523899,
+-22545358, 14516989, 53444964, -23992224, -25325812, -20046760, 7700340, 2139431, 46905876, -14055817,
+3714073, -25308632, 8408472, -27743342, -773094, 17681306, -34418796, 32968706, 10174241, -24076512,
+-37237368, -22768696, -1734630, 33266132, -60151016, -13204877, 54744728, 7126962, -24447490, -11637214,
+-17186312, 51347944, -5512591, -53940496, -6067178, -80531, -13085692, 21912924, -3561065, -7610682,
+16882980, -1556926, -10831371, -14177687, -1249299, -12505334, 4022774, 9102109, 12350715, -10885058,
+-7725036, 11163157, -7086159, 10572062, -5359046, -10848014, 15093052, -8169565, 13627931, 18333068,
+1477469, -26656178, -1513976, -15899969, 6913287, 9802726, 6735583, -18629958, 512175, -14071923,
+13465259, -3969087, -7714835, -5381594, 3192771, 4492536, 55988120, 28586766, 13028246, 12884365,
+13590350, -8952322, -8645769, -18926848, 2538863, 6014028, 5102421, -1181653, -31994822, 15328201,
+6483790, -22429930, -18797998, -9766219, -10916196, 8247411, -8107825, -9565966, 2943663, -868657,
+-16888886, 21805548, -15516643, -5167920, -16128139, -14894410, 10853919, -6397891, -1939715, 5420249,
+7162932, -1873680, -21519396, 5094905, 34121368, 7152731, -52947820, -3449933, -11313481, -16614544,
+11433740, 11910481, 27762132, 13169443, -34445100, 37535328, -9075803, -26156888, 78588240, -15868294,
+-6454262, -25918518, -62027916, 28447716, 31889596, 10364293, 12199855, -53314504, 15737834, -4229469,
+-12643847, -9439264, 2392834, -5120675, 8595303, 10082973, 2464238, -7947837, -14976551, 16107738,
+20553566, 28214714, -13707388, -2900714, 6272263, -4189741, 15079093, -36574332, 3808562, 6443525,
+-16858820, 2815351, -13999983, 5581310, 528818, 4478041, -2090039, 1005022, 1677722, -738198,
+-222265, -4863514, -3520263, 9769977, -5129265, -355945, 7492571, 1619203, 599148, 11957726,
+-9575093, 7337952, 8847096, -502511, -1444720, -10074920, 8460012, -18860812, -5029407, 12380780,
+3839701, -5104569, -12507482, 3927748, -2692945, 15414638, -31584652, -76201848, -128408784, 10289668,
+130941208, 12390444, 278156576, 280774912, 102083856, 281765408, 163556656, -47663936, -4332549, -25672094,
+-213511952, -177250080, -124206696, -221905920, -211710752, -60574072, -133194456, -116287848, 26462368, 36965708,
+-28595892, 41084048, 60687352, -244813, 4424353, 120390616, 80583248, 30535070, 89302568, 166571712,
+78663936, 91740504, 206434912, 81456736, 37279244, 178235232, 172160544, 7387881, 110191680, 194452496,
+573915, 49251464, 115574352, -4691178, -94101120, 46541340, -19474992, -181646512, -169031120, -155659280,
+-302008672, -446889728, -310791360, -434803712, -578893440, -408809472, -331022272, -447922688, -285800000, -137820672,
+-132487392, -25393458, 133590128, 268937440, 304902400, 407628352, 555155648, 545121024, 516071456, 580908288,
+580420288, 473622144, 381617504, 408232896, 271632512, 96346856, 129574328, 31514860, -238117280, -153473136,
+-161822016, -332800384, -280714752, -202219408, -236321456, -273893824, -170152640, -149067584, -206835424, -171030960,
+-88569208, -142349168, -186926640, -112752016, -79222280, -148663856, -83610664, 19250580, -46332496, -53366580,
+59635620, -2390686, -75184480, -9943386, -47316580, -170468864, -118286080, -89816896, -157783680, -70967352,
+39364448, 75255880, 139774880, 232244448, 270479328, 283416288, 318271584, 338409600, 333651840, 307201280,
+286277824, 242683376, 193212320, 118089592, 88774824, 9987410, -76047768, -133461280, -212672288, -306159232,
+-297311584, -253665056, -229517680, -199735312, -136616464, -115801448, -103142032, -75254808, -49491444, -45008036,
+-19389092, -13026636, -9327058, -2040646, 16123844, 27232778, 36182952, 42131480, 49587544, 45695768,
+41121092, 24771224, 17101486, 3621194, 4120484, -1491427, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
10251550,
--424128, -542777, 3265786, -1328219, 3730179, -1974074, -4786741, 1686848, 4809290, 712965,
--746251, 6389301, 217433, 266825, -2178622, -1212255, 9953587, 1387274, -6755447, -4993973,
-7020661, -637266, 7280507, 513249, -1382980, -682900, 5499169, 1090385, 11543798, 5085242,
-3178813, -619549, 2565169, 5223754, -1283122, -3890167, -4887673, -935229, 4408784, 3791919,
-5881958, 1653562, -3287261, -3418794, -1422708, 2457795, -786516, 1352378, -668404, -5232881,
--4038880, 1603097, 3823058, 2353105, -1891933, -2158758, -144418, 5708012, 2905009, -625455,
--1275605, 2646774, 1787243, 1136019, -2909304, 1464047, 2737505, -351114, 4180614, 4932770,
--8614631, 3164854, 1762010, 5624260, 1698123, 447750, 2567854, -1139777, -4015795, -1492501,
--2419140, -807454, -497679, 2445984, -122943, -1957968, 30602, 288300, 1461363, -1271847,
-237834, -246424, 522912, 747324, 523449, 964757, 97711, 595927, 2881923, 4487167,
-9698036, -7882876, 1774895, -1730335, 110059, -10129143, 1016297, 6094022, -9011378, -1867237,
-6018860, 15976741, 2288681, -107374, 1134945, -10005126, -323733, 7377680, 6546067, 181462,
--209380, 609349, 3435437, 5756330, 6063420, 6557878, -2929705, 1420024, -399969, 2530810,
-707596, 1633161, -10154913, -2779381, 1582696, 833224, -5616744, -176094, 3830574, -4463008,
-3526705, 3260417, 6010270, 2819646, -2299418, 3005403, 6717329, -3757023, -6067715, 2041183,
-1406602, 1190780, 3183645, -2683818, -4906464, -7306276, 5905043, -1081258, -1383516, -2372433,
-2591476, -83752, 3829500, 7579007, 1532230, 522375, -408022, -1820529, -5906654, 9193377,
-2260227, -1088237, 4747550, -737661, -5444945, -4778688, -1063541, 1816234, -7940858, 663572,
--4707821, -879395, 2422899, -128312, 1273995, -1410897, -2596845, -541166, 1312113, 1809792,
-1333051, -265751, -796716, -35970, 1297617, -673236, -1322313, -976568, -4754529, -4126927,
--5158256, -7329899, 4102768, -95563, -3502009, -1394791, -1789928, 1590212, -2909304, -5033165,
-1145146, -3273302, 8596914, 11426760, 9037685, -6254010, -240518, -413391, 2417530, -3471944,
-7090454, 4445291, -1011465, 3432753, 5377836, 434329, 1304060, 1875827, 5225365, -500364,
-1944547, 6251862, 637803, -71941, -2729989, 4498442, -6793565, 2744484, -949725, -1396938,
-4530117, -4375498, -550830, 154082, -5904507, 2454037, -1189169, 2735894, -188442, -2552821,
-1796370, 1879585, -308701, 5247913, -372052, 6054294, -87510, -4023848, -1787780, 233002,
--2744484, 5399311, 2820720, 4635344, 5259725, -2296734, -5199595, -3398930, -2147, -964220,
--1104880, 4285304, 5410048, -806917, -2957085, 1882806, 1480153, -2069101, -2821257, 972273,
--4054449, 992137, -72478, -125091, -1081258, -3841312, 875100, -1511292, 165356, 1722819,
-6442, -1961190, 992674, -2690260, -40265, 175557, -609885, 228707, 525597, -1469953,
-35433, 182536, -1735167, 372588, -514322, -104690, -906775, -22012, 498753, -15112916,
--3567507, -4704600, -8178155, 2790118, 2137820, -970663, 3798362, -522375, 3205119, 4535486,
--1995012, -5282273, -6665789, -2537252, -6207839, 490700, 683437, -2698850, 3520263, -3033321,
-1887101, -1384053, -3542811, -9405978, -3664144, 841814, 1477469, 2476049, -3500935, 2501282,
-3780645, 1254667, 8582418, 2138357, -221728, 6649146, -4699768, 3841312, 629750, -2233920,
--3183108, 4288525, 574452, 1356673, -10136123, -1867237, -3351148, 10183367, 4362076, 3668439,
-4130148, 4675072, 3696893, 5184026, -2745021, -1111323, 3175055, 5092221, -687732, 5946919,
--3204046, 1300838, -1293322, 5036923, 7540889, -11785927, 3085397, -2916820, 373125, -5561446,
--2862596, 927713, -1692217, -2390686, -4722317, -2129767, 2216203, -117575, 5040144, -535260,
-1939715, 4369056, 6944425, -265214, 1829656, -819265, 3228742, 512712, 1567126, -2164127,
--766115, 223338, 1471026, -971200, -1584306, 68719, 78920, -1228898, 176631, 697395,
-19864, 2017024, -900333, -957241, 220654, 1755568, -725313, 28454, -652298, 1040456,
-1615982, -239444, 1545115, 1689533, -424665, -746251, 5900212, 3622805, 2138894, -1119913,
-485331, 644245, 7620883, -6049999, 7645042, -1012002, 4166655, 7838852, -4904316, 6074695,
--3794604, 3119757, 1188632, 9215926, 4075387, -5124433, -8441221, 1928440, -6328098, 5212480,
--1296006, 6791417, -5054103, -816581, -4046396, 2346126, 1510755, 1947231, -503048, -715112,
--7366406, -3226057, 6065031, -4822712, -976568, 3947612, 191663, -3773666, 1239098, 348429,
--841814, -3270081, 6631430, 2121714, -9426916, -4248260, -7608535, -1323387, -6725919, -11602317,
--2636573, 5078799, 14316200, 3139621, 1191853, 6753836, -166967, -5265093, -4601521, 3777424,
-1480690, 2555506, 4143033, -10107132, -2473364, -9294846, -2028835, 2627446, -3672197, -8588861,
-890132, 3744138, -1821066, -3180423, -1495186, 1517197, -1256278, -339302, 1910187, -1158031,
--1247688, -1712618, -1236414, -3917547, 1441498, -1002338, 1847910, -641561, 1096827, 2516851,
-386547, -644782, -193810, -2073932, -1353452, -3300682, -2983929, 492848, 409096, 31675,
-1234803, 1982127, 1413581, 33823, 1293859, 1084479, -855235, 799401, 850940, -1700807,
-16449725, 3915400, 11910481, -5584531, -774705, -3973382, -916976, 12654047, -10794863, 3622268,
-1225676, 16571594, 8824547, 10996727, 2009508, -2736431, 5191005, -3619047, -13740137, 2612414,
-781684, 1610613, 10829223, 1028108, -6362457, -562641, 285078, 3432753, 3748433, -326954,
--1417876, 4418448, -5176510, -1428614, -2621004, -1330903, 1336809, 195958, 9539659, 1371168,
-7490960, 8631811, 2390686, 7612830, -564251, 2517388, 4630512, -5002027, -7464117, 932545,
-7518877, -12014634, 3576097, -9220758, -8610873, -5287105, -2386391, -8114267, -7853348, -8319889,
--4262755, -2075006, 5582384, 129923, 6688338, 1006633, -5507222, 8427263, -8767102, -3332358,
--3628711, -3608310, -4647155, -6128382, 8753680, 6802692, -3825205, 3337190, 2756295, 6911676,
-28454, 4990215, -2454574, 6274411, 3175055, -3714073, 216896, -3356517, 4002910, -3828963,
-427349, 3084860, 238908, 2358474, -670015, 373662, 1649268, -558883, -1676111, 1552631,
--446140, 263604, -3226057, -2687576, -2572686, -2024540, -333397, -1134408, -2226941, -110595,
-475668, -1058173, 271120, -83752, -8826695, -8984535, -5206037, -5535139, -2872796, -2308008,
--10597832, -8609262, -7184407, -1155346, -572304, -1387274, 7440494, 697932, 3866544, 5624797,
-6684580, 998580, 13018583, 16191490, -286689, 4656819, 3712999, -2017561, 7150584, 3805341,
--14544907, -533113, -5000953, 798864, 11333345, 4444755, -11621645, -3146064, 5240397, 5105643,
-761283, 14893336, -6142877, 5977521, 6143414, 6607807, 3941169, 7704635, -13101798, 4769561,
--5085242, 7763691, 337155, 3317325, -9825275, 7199976, 5296232, -1322850, 5129802, -901406,
-1465121, -146029, -5102958, 1289564, -3245922, 3173444, -4015258, 5004174, 1635846, 12606803,
-9510668, -3034931, 3427921, -10489921, 9134859, -2908230, 5621039, 9761924, 9692667, 396211,
-9899363, 6746857, 4707284, 4938676, 9100499, 835908, 2003065, -7455527, -1234266, -2186675,
-1746978, -5397700, 848256, -3952444, 1260573, -3937948, 1235340, -1491964, -2370822, -2353642,
-1650341, 95563, -1169842, -986232, -3090229, -1090385, 607201, -989453, -2213519, 261456,
-2401961, -5471789, -3285113, -3054796, 2231236, -3386582, 2088428, -54761, 1222992, -2819646,
--3984656, -989453, 799938, 8543764, -7612830, -2025077, 6843494, -3664144, 11708081, -3759707,
--8244190, 15507516, 21132850, 4663798, -8323110, 5801427, -4383551, 8642548, 5058935, -1924682,
--8829916, -5818070, -15023796, 3901978, 6419366, -13298829, -1570884, 7672959, 2018635, -680752,
-322123, -1663763, -7175817, 1706713, 8912594, 324270, 1931125, 3183108, 12621298, -8353175,
--221728, 9124658, -8374650, 12269111, 652835, 17259862, -14384382, -13018583, 7153805, 597537,
--1712081, 3675955, -1174674, 4773320, 2974802, 9577777, 9185861, -7621957, 1404991, -4997195,
--2969433, 5713380, -696322, -3009162, -1261110, 227633, 8629663, -16489453, 12553116, -3973382,
--5575405, 9250286, -7482370, 7406134, -10074920, -5720897, -1849520, -7548942, -2568391, -5345087,
--8372502, -5705864, 1860795, -1964411, -1991791, -173409, -3884261, -1301912, -554051, 5153424,
--239981, 702227, 2124935, -2248416, -827855, -1912871, 1292785, 2491081, 727460, -1105417,
-6148783, -23085, 4570382, -4988605, -3154117, -2987150, -2075006, 2274185, 1168231, 105764,
-3592203, -2712272, 2750927, 1012002, 2561948, 1367410, 391379, -3192235, -10470057, -7973070,
--3517578, -7476465, -11413339, -2385318, 4136591, 14014478, 2263448, -8439074, -15668578, -3255048,
-4844723, -2725694, 16799764, 5302674, -5959267, -11877195, -14872935, -28135258, -2311229, -3092377,
-10771241, 7992398, -5778879, 746251, -4474282, -2421825, 10108206, -252329, 525597, -1218697,
-11469710, 1959579, -3457449, -555661, -437013, 3122441, -10460930, -3275986, -4121558, 16547972,
-3843459, -17372068, 4473209, -9008157, -5090610, 2576981, -16193637, 5051956, 11654394, 10362682,
-8056822, 1987496, 3248069, -505732, 1707250, -10187126, 3696356, -15959025, -3077881, 9169218,
-3333432, 9393630, 9235790, 7664369, -5243618, -11772505, -10326175, -7956427, 2580202, 3213709,
-5447629, 5449240, 1165547, 3650185, 11521787, 16175384, -3888019, 5781563, -4034048, -4318053,
-4923643, -7060926, -2523293, 319975, -4511327, 4233227, -3922916, -3369402, -1893544, 1041530,
--1046361, 2321967, 18254, 3346317, -806917, -1976222, -952946, -1933272, -5129265, 1401770,
-2717641, -209917, 1777043, -455803, 2440078, 4742181, 4481799, 3548717, -3639985, -1791001,
-3440269, -1014686, -1416802, 369367, -612570, 3530463, -818191, -155693, -568546, 8240969,
-14570140, 16887812, 12199855, 20875152, -9774809, 14837501, -12718472, -9959492, 10975252, 14049912,
-16574279, -17112760, -113280, 4318590, -12695923, 6010807, -5591511, -8980240, 10226854, -13324599,
-14443975, -13697188, 13529147, -9830643, -3644280, -897111, -17942226, -2484639, 19735912, -5050345,
--14145475, 3024194, 9149354, -10294500, 5075041, 21368000, 11461120, 4327717, 9423158, -11299522,
-7516730, -6787122, -19495930, -5902896, -5124970, 1445793, 8790724, 10905459, -4867272, -8533563,
-7731478, 54224, 5907191, 3713536, -3214246, 1062468, -7786776, 1175747, 2415382, -107374,
-2492155, 17571784, -2228014, 1733019, 4975183, 1041530, 2108829, -8948027, -9837623, 6787659,
--11701638, -15832860, -16654273, 12896713, 8300561, 2473901, -956167, -1934346, 6105833, -992137,
--4715874, 5898601, 16195785, 10970420, -4359929, -2783139, 4971962, 2889439, -1204738, -2598992,
-1773285, 2268280, -748935, 639950, 8757438, 2084670, 1192927, 3429532, -2941516, 614180,
-2736968, 5851893, -639950, 389231, -5827197, 1830193, -3070902, -2222646, 5931350, 4787815,
-233002, 3743064, -3345243, -1615445, 1721208, -6979, -1817845, -3358128, -3668976, 2245194,
-939524, -1603097, 1964948, -13536663, -21455510, 7627862, 27899034, 13638132, -5213554, -21576842,
--7478075, 1364189, 3024731, -4201015, 10602127, 7133404, -7820062, -4062502, -1036161, -14277545,
-19840064, -9038222, 7077569, -1662152, -4658429, -17391396, 5712307, 3606162, -2151779, 2097555,
-7804493, -2843268, 19405200, -4344360, -2939905, 16168941, -1786170, -11609833, -10361072, -20054812,
-2778307, -4452271, -6208375, -4371740, -14689325, -6160594, -13754096, 1473174, -12102144, 10962367,
--6827925, -222265, 3436511, 1365263, 6359236, -5819144, -14858439, 6487548, -1683627, 3711926,
--3296924, -1493575, 475131, 14351633, 21494164, 5842766, -6700149, 7431367, 7828652, 8541616,
--3466576, -7155416, 10983305, 5202279, 14665703, 3425773, 3949759, 441308, 4442607, 13196287,
-18026514, 8878234, 3084860, 6789270, 2893197, -3721589, -12265890, -7772817, 1452773, 6009196,
-993748, -266288, -4559645, -1664837, 2582349, 1764695, -9680856, -1795296, 2254321, -353261,
--4792110, -3996467, -5362804, 1088237, -897648, 3759707, 6956774, 4124242, 286152, -2228014,
-4280472, 5148055, 399969, 1770063, -6735583, -175020, -2240362, -6890202, 1530082, 1348620,
--6161668, -559420, -1394254, 2431488, -2354179, 5942624, 96100, 8131447, 41477572, 1202054,
--11297911, 34826816, 17395154, 15510201, 29985852, 30183956, 8435316, 9746891, 7388418, 32788854,
-1520418, -11274826, 13911936, 3227668, -12885976, -14097693, 12368969, 12373801, 23246510, -2065879,
-1530619, 545461, 3036005, -13678934, 15482820, 11124502, 4633196, -10571525, 16394964, -4788889,
--1056025, -21772262, -4985920, -1429687, -1580548, -11371463, 7416872, -10560251, -6362994, -6087580,
-2952790, -7242389, -10324028, -13810467, 14653892, -10454487, 15596100, 7218767, 12773770, 4241817,
--13385266, -430034, -21403432, -9592273, -11758010, 4664335, -14927696, -7809861, -2879239, 317828,
-15073188, 1788854, -2599529, -24262270, 9482751, 8464844, -789200, -55298, -12589623, 9651865,
-816581, -10464688, 28735478, 6663105, -3991635, -201863, -11891154, 2080375, 14281840, -3694209,
--1429687, -15953656, -9764608, 5983963, -2489471, -7505992, 9157944, 5886790, -9824738, 8673150,
--3561602, 2843805, -3453691, 8493835, 1555315, -1174674, -16106, 2163590, -11797201, 265751,
--4518843, 3564286, 3702799, 5788006, -4998805, 4261682, 2841121, 2618856, 3978750, 5140002,
--625992, 3994857, -5823439, 9906879, -4686883, 8405788, -5986648, 3803731, -12678743, -23251880,
-7140920, 7002944, -7194607, 15134928, -16735340, 18178450, -13114146, -7638063, 5851356, 4206921,
-46916612, 18331994, 7028177, -29278256, -779000, -6949257, -15518254, -4509179, -5672041, -5136781,
--1737314, -24347632, -468688, -9212168, 301721, 11853036, -12915504, 15381352, -5042829, -17023640,
--15188078, 12185359, 9347459, -3807489, -8385924, 15542413, -8386998, -7920994, 12215961, -348966,
-3758633, -12586402, -425202, -7400229, 15668578, -2362232, 22476638, -8407398, 3376918, 6773701,
--643708, 860067, 6855842, -14492830, -2325725, 18471580, 1496259, 5070746, -173946, -14977625,
-6400038, -10455024, 5322002, 16149077, 20946556, 22848152, 24050206, -5188321, 8438000, -191663,
-12903692, 29154238, -32022740, 24894704, -14807437, 6692633, 20006494, -12624519, 1282585, 6287296,
-5450851, -1490891, 13922136, -5393405, -4412542, 5895380, -3349001, 13424994, -1999307, 5093295,
--10825465, -1750736, -333397, -8704825, -3675955, -10981695, 103616, 3188476, 1056025, 12214887,
--4041564, 836445, 1302449, 5201743, 1260573, 5247913, -7249368, 5459977, 1655173, -288300,
-3860102, 5356361, -6101538, 5565204, -11716134, -10311680, 7191386, -3439195, -8320426, -1165010,
-3371013, -5301601, 9389872, -11156178, -24824374, -4734128, 4915590, 418222, 5713380, -18303540,
--2580739, -3693672, -26239566, -20177756, 10313290, 10924249, 4936528, 7550016, -13475997, -6507949,
--9577240, 28653874, 6782827, 845572, 21339008, 12379169, 10689637, 9745281, 8341900, -15049565,
-10777684, 4446902, -4719096, 8571144, -7692287, -7483444, 14860587, -6458557, 9336722, 19752554,
-615254, 3805878, -423054, 1304596, -4365835, -11548630, -14689325, -23737748, 9664750, -20105816,
-7485055, 7847979, 10056129, 82678, 545461, -2806224, -15555298, -7339562, 7795903, -5360656,
-8046621, 19743964, -6138045, 15104326, 6847789, 1681480, -932008, -5381057, -14412837, -602369,
--19452444, -6730751, 20691542, -11095511, 3221226, -34255584, 16183437, -6346351, 5162551, -26434450,
--23590108, 2219424, 6228777, 12089796, -27365920, -2893734, 263067, 18591840, 15153181, 17206176,
--5571647, 358630, 2529199, 8994198, 2057826, 4943508, 14138495, 8070781, -5513128, 5153961,
-1297080, 1009854, -401579, -3031173, -11839077, 4117800, -5783711, 1748052, 4557497, -157840,
-947040, -166967, 4565550, -2907156, 19080392, 5202279, -860604, 10691247, 6374805, 882616,
-3102577, -335007, -8674223, 11238856, -3799436, 1505386, 13330505, 7464117, -4316979, 45634,
--5481989, 8850854, 6011881, 7396471, 6784975, 20326470, -48289392, -12014097, -28639916, 9594957,
--25709674, -8761196, -29151016, 7722888, -15151034, -11806865, -2393908, -24950002, -8930311, -26723824,
--13339632, -30925376, 6754910, -28618440, -11170136, -14914811, -8196945, -7928510, -6554120, -27318676,
--15459735, -20804284, -10520522, -6072547, 11865921, -1791538, 8885750, -17031156, -2647847, 892279,
--19413252, 3692061, -1256815, 1574642, 5225902, -19842212, -1004486, 7212861, -2331094, 8142185,
-16524887, 29660508, -24585466, 1447941, 33164664, 91268, 16338056, -11651173, 20596516, 3678640,
--4773856, -27542552, -16064251, 22756884, 14204531, 22223234, 933619, -15600395, 5796059, 7996692,
-16054051, -29933774, 333934, 5610301, -16374563, -5545340, -7009924, -10049150, -23826332, 36990944,
--6683506, -11940009, -7479149, 7639673, 9014063, -20966956, -19333796, -805843, 6320045, 940061,
-186831, -4110821, -6946573, -115964, 18783502, 11539503, 1611, -15388331, -10512469, 1709397,
--5805722, 4057670, 5049271, 2500745, -1497333, -7934952, 3364570, 3925063, -2071248, 5948530,
--3339337, -13644574, -6362994, -773094, 4082903, -1003949, -4271882, -19954954, -7867307, -4555350,
-1624571, 2528125, -8517457, -15441481, 6170258, 9321690, -8097624, 407485, -7108171, 7865159,
--2482491, -13771813, 20636780, -34804804, -321049, -6941204, 15067819, -7705708, -21376590, 18653580,
--37557340, -32478542, -26720602, 15285789, -7923141, 802085, -14557255, -13874892, -16104517, 9009231,
-7889855, 26153666, 12373264, 5244155, 24441586, -6550899, 8883603, -8862665, 7663833, 4354560,
-14573361, 23447838, 12309913, -4953171, -14350023, -8642011, -2909304, 13138842, -4329327, 3617973,
-523986, -6134824, 12510703, -858993, 10273562, 7540889, -19997904, 16440598, 30353608, 4654134,
-25392384, 24489904, 11156178, 8058433, 72478, 12903155, -8070244, -29579440, -9594957, 21832930,
-224412, -10928544, 11294153, 31036508, -7098507, 2299955, -22513144, 22099754, 19892678, -1530619,
-6403260, -10249403, 51063940, -32131188, -27821188, -26346404, 2226404, 843424, -7729331, 22674206,
--31971736, -638340, -20437066, 7719667, 9055402, -1532230, 22183506, 5019743, -1880659, -12108050,
--149787, 5505611, 16161962, -11177116, -14265734, 5851893, -8502962, -2334315, 1973001, 3779571,
-1316408, -6442, -1073742, -13513041, 1269163, 3119220, 9208410, -8039105, -4511327, 5098126,
-2438468, 3515431, 307627, -8869107, -1011465, -10054518, -7602629, 9912785, 5054103, 5537287,
-3889093, -443992, 1910724, -2817499, 6030134, 729071, -2767033, -693100, -8791261, -3391414,
--5859409, 3425237, 55830280, -12306692, 31096636, 53647900, -18298172, 25722022, 11345693, -33786896,
-30842160, 4692252, -14806900, 22763864, 9660992, 21388938, -219580, -18034568, 17028472, 5879810,
-51003, 5385352, -5204427, -19075560, -11420318, -9127342, -16558173, -12248710, -3166465, 12709882,
--11410117, -6816650, -16308528, 3460670, 1358283, 2621004, 22299470, -13353053, 5349382, -12386149,
--7042136, 12838194, -10271951, -22900228, -29481730, 33932924, 15035070, -8392366, 23349590, -21481816,
--18869402, -11426224, -1918777, 3462281, 127775, -19990388, -14754286, -15624017, -34454228, -21472688,
--18577344, 6682969, 11516955, -911070, 19954954, 3838627, -20626580, -17723182, 26934276, -23079006,
-3212636, 23676544, -3152506, -40632000, 28368796, -14948634, 4459250, 1890859, 23454280, -5592048,
--9139154, -1128503, -13598940, 7131793, -23374822, 7984881, -30025042, -19073412, 11442867, -12599823,
--3794604, -1553168, -17889076, 5912560, -10510859, 8602283, -2857764, -221728, 756988, 11176579,
--8144869, -6248104, 1792075, -11104638, -5115843, 1831267, -7490960, -7733626, -5568425, -3210488,
--8714489, -4640176, 11906186, -9675488, 4493073, 7436199, -1937030, 7947300, -10561861, 1311039,
--7477538, 15351824, 2669859, 5636608, -10806138, 13515188, 8988293, 10394895, 4131222, 1501628,
-3084860, 7626252, -7476465, 1007707, -26993332, 16175921, -7554311, 27379342, 18999862, -43814036,
--5378373, 4625143, -26528940, -4364224, -4235375, 32318556, 23466628, 21583822, 27042724, -1025960,
--18742700, -14629732, -14896557, 687732, -41671384, 4990752, 35899484, -32649268, -58775016, 5967857,
--21926344, 43412456, -183610, 1392106, 29231548, -13383118, 6085969, -1387811, -7814156, 25255482,
--7202660, 12754442, 42620572, -31343060, -17769354, -28573344, 14288819, 2314987, 28557238, -16383153,
-11300059, 1459215, 26011932, 15213311, -12604118, -8506183, 9885404, -4760435, -1083942, -18392660,
--17999672, 9405978, -3968013, -5408438, -10211822, 23396298, -8848706, -9522479, 39442296, 42013908,
-27328340, -35878008, -3125663, -11345156, 13950591, 52334176, -6589017, -40063992, -2576981, -16568373,
-23578834, 10424422, -26747446, 13996762, 10433012, 13648869, -25813290, -9426916, 1944010, 22771916,
-1434519, -3803731, 3773666, -7968775, 1820529, 22750978, 11123428, -9655623, -11438572, -2733747,
-7215008, 9016747, 12087649, -11559904, -4342212, -21077552, -4399657, 13116830, -13160854, -2208687,
--8138426, -7672422, -12372727, -2733210, 8383776, -2030446, -927176, 1957431, 5322002, -5706938,
--15801185, -16497506, 9814537, 7433515, 13727252, -7039989, 10052908, 29454348, 1484448, -17878876,
--2927020, 1446867, -1674500, -11247446, -25740276, 3888019, -21129092, 19460496, 11157788, -20614770,
-35159676, 53355840, 1484448, -2455648, -18278844, -18434000, 3076807, 3106335, -9026948, 48265232,
--4383551, 36006860, 28797756, -36313412, -1182190, -12155294, -38916160, 9834938, 8970039, 21265456,
-36339180, -1073742, -10437307, 11995307, 13145821, 28668370, 11947525, 2653753, 23526220, 24839944,
-8487392, -5683853, 21568788, 9659918, 25929254, 5585068, 7438347, 16275779, 27464168, -4574140,
--21873194, -25201794, -8288213, -8754217, 43229384, 23736136, 66759360, -3104725, -33742872, 29662118,
--10238128, -11531987, -10160282, -22726282, 3294777, 12773233, -555125, -12731357, 47412144, -9476308,
-55959664, -15341623, 30084636, 2637647, -9524090, -30573188, -43716324, 40931040, -4023848, -6993281,
--12606803, 38037840, -79994, -39920648, 73123968, 23007066, 7905424, -8405251, -30790084, 15386183,
-756988, 15486578, -14353244, 11044508, 5490042, -6912750, -10628970, 1887638, -12833899, -5994164,
--14570140, 1685238, -2632815, -202400, 4713190, 11943767, -12258910, 4665945, -6038724, -379031,
-15963857, 10691784, -5853504, -20131048, -753767, -1219234, 2561411, 18334678, -12029667, -7074885,
-4491462, 11486353, -16847010, 1072131, 10895795, -304406, -1419487, -17519708, 8920647, -615791,
-8108362, -18314278, 1925756, 7664369, 5969468, 8950175, -17655000, -18492518, 11992086, 49593452,
--29471528, -18967650, 4029216, 8934069, -5608691, 35086124, 27346056, 27593554, 9336185, 13608067,
-23240604, 14317273, -8401493, -13874892, -31182536, -5084168, 17157320, 5829345, 3720516, -11659226,
--29489782, -8653822, -4119411, 30049202, 437550, -3636227, 22843858, -3666828, 6337761, 4827543,
--50794432, 12992276, 13755707, -8920647, -21698712, 4090420, -28631862, -14630806, -43868796, 13232794,
--36621576, -72698760, 8466991, -1036161, 51198156, -1800128, 17412872, 42205032, -6890738, -10993506,
-18803366, -414464, -36831492, -12922483, 4876936, 6098854, 27229556, 11281268, 24251532, 20942798,
--15057082, -11330661, 10351408, 30838402, -12827457, -6515466, -28320478, -19615652, 7557532, -38313792,
-11129334, -43028592, 8199630, -11376295, 30546344, -13367549, 21660594, -46112380, -9357660, 6252399,
--27388470, 6885907, 4887673, 4694936, -20651814, 10817412, -20221780, 5733782, -1520418, -8670465,
--3672734, -2075543, 6505802, -7105487, -3200288, -5708549, 13211319, -8626442, 7733089, -19502910,
-10277857, -1176284, -1532767, 2740726, 18879066, 6504191, 8086887, -22601728, 2969970, -9298604,
--27820650, 11135240, -8891656, -7141457, -10259603, 10324565, -4986457, 4949413, 5872294, -2750927,
-1254131, -6890202, 1989644, 5639292, -1306744, -907849, -10611254, 38970924, 41536092, 97071096,
-11441793, -54326504, -40790380, -30024506, -34657700, 67949600, 90689848, 30753040, -8650601, -28513214,
-1010928, -34508452, 37988984, 35920960, 10660109, 5207648, -22495428, -3251827, 41803452, 9752797,
-16798154, 14157286, 43865576, 36909876, -14221710, -32611150, -43116104, -29058674, -4319127, 12022150,
-39436388, 23655070, -8226473, 21375516, -29925722, -10186052, -67299456, -10628433, 66248796, 51200844,
--10305237, 134233296, 42111616, 3938485, -73592120, -12541305, -6310381, -17264694, 18801756, 10436234,
-15931644, 28171764, -60050624, -64691872, -32500554, -43643312, -6225555, 14779519, 54339388, -32500554,
-19883014, 84688704, 42344084, 14741938, 23748484, 17279190, -51151988, -84672592, 43312060, -20951388,
-18652506, 45334452, 50169512, 4419522, -30332132, -39986144, -32586454, 35038344, 20272246, 6094559,
-34993784, -34892852, -6055367, -5605469, -15433965, -18072148, -1537061, -542240, 11353746, 3497714,
--5004174, 68183, -439697, 548682, 2995740, 6448357, 10106595, -10149008, -13808857, -47424492,
--25933012, -23468238, 27966680, 16504486, 9993315, -38849588, -37995428, -61266636, -16708497, 23989540,
-30746598, 39954472, 15688979, 11625940, 4655745, 3787624, -1163936, 8892193, -2167348, 28573344,
-20281910, 3965866, 201327, 86436, -4956393, -187368, -20646444, -88874144, -21176874, 49544596,
-94871536, 83583824, 200390288, 104882568, 71168144, 62617940, 28500866, -11206107, -101227544, -127078952,
--189579312, -145178480, -148927456, -56657060, 753767, 57038240, 106115224, 87538952, 90471872, 62354872,
-85127328, 66636416, 94253592, 44887240, 35160748, 16816408, -24217710, -37271728, -57085484, -34511672,
--124022552, -52383568, -117383064, -84693536, -134352480, -79866528, -125057096, -44408888, -61977988, -20175072,
-9610526, 63513440, 166544336, 158587376, 222207648, 150402240, 102614288, 133222904, 181965952, 160133568,
-134514080, 93855776, 11358041, -90945936, -90268400, -111922016, -213010512, -235181664, -256151312, -255803952,
--280874208, -242930336, -204622448, -180476144, -117492592, 13542032, 133772128, 232641200, 307534688, 383323680,
-426546624, 297359904, 283619232, 184056528, 111552112, 105392592, -6248104, -34780644, -163318272, -313109568,
--337186080, -273754240, -211555600, -124652832, -100818448, -102707704, -56598544, -88200912, -35631584, -9789304,
-67833640, 128674000, 105763568, 137546320, 147887536, 157692944, 139343232, 185904432, 138229760, 113206744,
-58567784, 12033425, -31302796, -143992000, -127455840, -170948832, -226579920, -205357952, -235316432, -241932816,
--70449272, 7923141, 123055104, 150504240, 160395024, 186043488, 194426720, 164846752, 143498608, 109957608,
-83495240, 30157112, -21370684, -64116344, -115519048, -169909440, -159030832, -142096304, -106151728, -50050864,
--21888228, -10467909, -6097243, 15657840, 32884954, 39683888, 42875584, 35240744, 28387050, 30558692,
-25065966, 18533858, 34237868, 38134476, 29416768, 13982803, 7261179, 11187316, 14527190, 3441880,
--623307, -1331977, -4027069, -6428493, -2675228, -1762547, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-424128, -542777, 3265786, -1328219, 3730179, -1974074, -4786741, 1686848, 4809290, 712965,
+-746251, 6389301, 217433, 266825, -2178622, -1212255, 9953587, 1387274, -6755447, -4993973,
+7020661, -637266, 7280507, 513249, -1382980, -682900, 5499169, 1090385, 11543798, 5085242,
+3178813, -619549, 2565169, 5223754, -1283122, -3890167, -4887673, -935229, 4408784, 3791919,
+5881958, 1653562, -3287261, -3418794, -1422708, 2457795, -786516, 1352378, -668404, -5232881,
+-4038880, 1603097, 3823058, 2353105, -1891933, -2158758, -144418, 5708012, 2905009, -625455,
+-1275605, 2646774, 1787243, 1136019, -2909304, 1464047, 2737505, -351114, 4180614, 4932770,
+-8614631, 3164854, 1762010, 5624260, 1698123, 447750, 2567854, -1139777, -4015795, -1492501,
+-2419140, -807454, -497679, 2445984, -122943, -1957968, 30602, 288300, 1461363, -1271847,
+237834, -246424, 522912, 747324, 523449, 964757, 97711, 595927, 2881923, 4487167,
+9698036, -7882876, 1774895, -1730335, 110059, -10129143, 1016297, 6094022, -9011378, -1867237,
+6018860, 15976741, 2288681, -107374, 1134945, -10005126, -323733, 7377680, 6546067, 181462,
+-209380, 609349, 3435437, 5756330, 6063420, 6557878, -2929705, 1420024, -399969, 2530810,
+707596, 1633161, -10154913, -2779381, 1582696, 833224, -5616744, -176094, 3830574, -4463008,
+3526705, 3260417, 6010270, 2819646, -2299418, 3005403, 6717329, -3757023, -6067715, 2041183,
+1406602, 1190780, 3183645, -2683818, -4906464, -7306276, 5905043, -1081258, -1383516, -2372433,
+2591476, -83752, 3829500, 7579007, 1532230, 522375, -408022, -1820529, -5906654, 9193377,
+2260227, -1088237, 4747550, -737661, -5444945, -4778688, -1063541, 1816234, -7940858, 663572,
+-4707821, -879395, 2422899, -128312, 1273995, -1410897, -2596845, -541166, 1312113, 1809792,
+1333051, -265751, -796716, -35970, 1297617, -673236, -1322313, -976568, -4754529, -4126927,
+-5158256, -7329899, 4102768, -95563, -3502009, -1394791, -1789928, 1590212, -2909304, -5033165,
+1145146, -3273302, 8596914, 11426760, 9037685, -6254010, -240518, -413391, 2417530, -3471944,
+7090454, 4445291, -1011465, 3432753, 5377836, 434329, 1304060, 1875827, 5225365, -500364,
+1944547, 6251862, 637803, -71941, -2729989, 4498442, -6793565, 2744484, -949725, -1396938,
+4530117, -4375498, -550830, 154082, -5904507, 2454037, -1189169, 2735894, -188442, -2552821,
+1796370, 1879585, -308701, 5247913, -372052, 6054294, -87510, -4023848, -1787780, 233002,
+-2744484, 5399311, 2820720, 4635344, 5259725, -2296734, -5199595, -3398930, -2147, -964220,
+-1104880, 4285304, 5410048, -806917, -2957085, 1882806, 1480153, -2069101, -2821257, 972273,
+-4054449, 992137, -72478, -125091, -1081258, -3841312, 875100, -1511292, 165356, 1722819,
+6442, -1961190, 992674, -2690260, -40265, 175557, -609885, 228707, 525597, -1469953,
+35433, 182536, -1735167, 372588, -514322, -104690, -906775, -22012, 498753, -15112916,
+-3567507, -4704600, -8178155, 2790118, 2137820, -970663, 3798362, -522375, 3205119, 4535486,
+-1995012, -5282273, -6665789, -2537252, -6207839, 490700, 683437, -2698850, 3520263, -3033321,
+1887101, -1384053, -3542811, -9405978, -3664144, 841814, 1477469, 2476049, -3500935, 2501282,
+3780645, 1254667, 8582418, 2138357, -221728, 6649146, -4699768, 3841312, 629750, -2233920,
+-3183108, 4288525, 574452, 1356673, -10136123, -1867237, -3351148, 10183367, 4362076, 3668439,
+4130148, 4675072, 3696893, 5184026, -2745021, -1111323, 3175055, 5092221, -687732, 5946919,
+-3204046, 1300838, -1293322, 5036923, 7540889, -11785927, 3085397, -2916820, 373125, -5561446,
+-2862596, 927713, -1692217, -2390686, -4722317, -2129767, 2216203, -117575, 5040144, -535260,
+1939715, 4369056, 6944425, -265214, 1829656, -819265, 3228742, 512712, 1567126, -2164127,
+-766115, 223338, 1471026, -971200, -1584306, 68719, 78920, -1228898, 176631, 697395,
+19864, 2017024, -900333, -957241, 220654, 1755568, -725313, 28454, -652298, 1040456,
+1615982, -239444, 1545115, 1689533, -424665, -746251, 5900212, 3622805, 2138894, -1119913,
+485331, 644245, 7620883, -6049999, 7645042, -1012002, 4166655, 7838852, -4904316, 6074695,
+-3794604, 3119757, 1188632, 9215926, 4075387, -5124433, -8441221, 1928440, -6328098, 5212480,
+-1296006, 6791417, -5054103, -816581, -4046396, 2346126, 1510755, 1947231, -503048, -715112,
+-7366406, -3226057, 6065031, -4822712, -976568, 3947612, 191663, -3773666, 1239098, 348429,
+-841814, -3270081, 6631430, 2121714, -9426916, -4248260, -7608535, -1323387, -6725919, -11602317,
+-2636573, 5078799, 14316200, 3139621, 1191853, 6753836, -166967, -5265093, -4601521, 3777424,
+1480690, 2555506, 4143033, -10107132, -2473364, -9294846, -2028835, 2627446, -3672197, -8588861,
+890132, 3744138, -1821066, -3180423, -1495186, 1517197, -1256278, -339302, 1910187, -1158031,
+-1247688, -1712618, -1236414, -3917547, 1441498, -1002338, 1847910, -641561, 1096827, 2516851,
+386547, -644782, -193810, -2073932, -1353452, -3300682, -2983929, 492848, 409096, 31675,
+1234803, 1982127, 1413581, 33823, 1293859, 1084479, -855235, 799401, 850940, -1700807,
+16449725, 3915400, 11910481, -5584531, -774705, -3973382, -916976, 12654047, -10794863, 3622268,
+1225676, 16571594, 8824547, 10996727, 2009508, -2736431, 5191005, -3619047, -13740137, 2612414,
+781684, 1610613, 10829223, 1028108, -6362457, -562641, 285078, 3432753, 3748433, -326954,
+-1417876, 4418448, -5176510, -1428614, -2621004, -1330903, 1336809, 195958, 9539659, 1371168,
+7490960, 8631811, 2390686, 7612830, -564251, 2517388, 4630512, -5002027, -7464117, 932545,
+7518877, -12014634, 3576097, -9220758, -8610873, -5287105, -2386391, -8114267, -7853348, -8319889,
+-4262755, -2075006, 5582384, 129923, 6688338, 1006633, -5507222, 8427263, -8767102, -3332358,
+-3628711, -3608310, -4647155, -6128382, 8753680, 6802692, -3825205, 3337190, 2756295, 6911676,
+28454, 4990215, -2454574, 6274411, 3175055, -3714073, 216896, -3356517, 4002910, -3828963,
+427349, 3084860, 238908, 2358474, -670015, 373662, 1649268, -558883, -1676111, 1552631,
+-446140, 263604, -3226057, -2687576, -2572686, -2024540, -333397, -1134408, -2226941, -110595,
+475668, -1058173, 271120, -83752, -8826695, -8984535, -5206037, -5535139, -2872796, -2308008,
+-10597832, -8609262, -7184407, -1155346, -572304, -1387274, 7440494, 697932, 3866544, 5624797,
+6684580, 998580, 13018583, 16191490, -286689, 4656819, 3712999, -2017561, 7150584, 3805341,
+-14544907, -533113, -5000953, 798864, 11333345, 4444755, -11621645, -3146064, 5240397, 5105643,
+761283, 14893336, -6142877, 5977521, 6143414, 6607807, 3941169, 7704635, -13101798, 4769561,
+-5085242, 7763691, 337155, 3317325, -9825275, 7199976, 5296232, -1322850, 5129802, -901406,
+1465121, -146029, -5102958, 1289564, -3245922, 3173444, -4015258, 5004174, 1635846, 12606803,
+9510668, -3034931, 3427921, -10489921, 9134859, -2908230, 5621039, 9761924, 9692667, 396211,
+9899363, 6746857, 4707284, 4938676, 9100499, 835908, 2003065, -7455527, -1234266, -2186675,
+1746978, -5397700, 848256, -3952444, 1260573, -3937948, 1235340, -1491964, -2370822, -2353642,
+1650341, 95563, -1169842, -986232, -3090229, -1090385, 607201, -989453, -2213519, 261456,
+2401961, -5471789, -3285113, -3054796, 2231236, -3386582, 2088428, -54761, 1222992, -2819646,
+-3984656, -989453, 799938, 8543764, -7612830, -2025077, 6843494, -3664144, 11708081, -3759707,
+-8244190, 15507516, 21132850, 4663798, -8323110, 5801427, -4383551, 8642548, 5058935, -1924682,
+-8829916, -5818070, -15023796, 3901978, 6419366, -13298829, -1570884, 7672959, 2018635, -680752,
+322123, -1663763, -7175817, 1706713, 8912594, 324270, 1931125, 3183108, 12621298, -8353175,
+-221728, 9124658, -8374650, 12269111, 652835, 17259862, -14384382, -13018583, 7153805, 597537,
+-1712081, 3675955, -1174674, 4773320, 2974802, 9577777, 9185861, -7621957, 1404991, -4997195,
+-2969433, 5713380, -696322, -3009162, -1261110, 227633, 8629663, -16489453, 12553116, -3973382,
+-5575405, 9250286, -7482370, 7406134, -10074920, -5720897, -1849520, -7548942, -2568391, -5345087,
+-8372502, -5705864, 1860795, -1964411, -1991791, -173409, -3884261, -1301912, -554051, 5153424,
+-239981, 702227, 2124935, -2248416, -827855, -1912871, 1292785, 2491081, 727460, -1105417,
+6148783, -23085, 4570382, -4988605, -3154117, -2987150, -2075006, 2274185, 1168231, 105764,
+3592203, -2712272, 2750927, 1012002, 2561948, 1367410, 391379, -3192235, -10470057, -7973070,
+-3517578, -7476465, -11413339, -2385318, 4136591, 14014478, 2263448, -8439074, -15668578, -3255048,
+4844723, -2725694, 16799764, 5302674, -5959267, -11877195, -14872935, -28135258, -2311229, -3092377,
+10771241, 7992398, -5778879, 746251, -4474282, -2421825, 10108206, -252329, 525597, -1218697,
+11469710, 1959579, -3457449, -555661, -437013, 3122441, -10460930, -3275986, -4121558, 16547972,
+3843459, -17372068, 4473209, -9008157, -5090610, 2576981, -16193637, 5051956, 11654394, 10362682,
+8056822, 1987496, 3248069, -505732, 1707250, -10187126, 3696356, -15959025, -3077881, 9169218,
+3333432, 9393630, 9235790, 7664369, -5243618, -11772505, -10326175, -7956427, 2580202, 3213709,
+5447629, 5449240, 1165547, 3650185, 11521787, 16175384, -3888019, 5781563, -4034048, -4318053,
+4923643, -7060926, -2523293, 319975, -4511327, 4233227, -3922916, -3369402, -1893544, 1041530,
+-1046361, 2321967, 18254, 3346317, -806917, -1976222, -952946, -1933272, -5129265, 1401770,
+2717641, -209917, 1777043, -455803, 2440078, 4742181, 4481799, 3548717, -3639985, -1791001,
+3440269, -1014686, -1416802, 369367, -612570, 3530463, -818191, -155693, -568546, 8240969,
+14570140, 16887812, 12199855, 20875152, -9774809, 14837501, -12718472, -9959492, 10975252, 14049912,
+16574279, -17112760, -113280, 4318590, -12695923, 6010807, -5591511, -8980240, 10226854, -13324599,
+14443975, -13697188, 13529147, -9830643, -3644280, -897111, -17942226, -2484639, 19735912, -5050345,
+-14145475, 3024194, 9149354, -10294500, 5075041, 21368000, 11461120, 4327717, 9423158, -11299522,
+7516730, -6787122, -19495930, -5902896, -5124970, 1445793, 8790724, 10905459, -4867272, -8533563,
+7731478, 54224, 5907191, 3713536, -3214246, 1062468, -7786776, 1175747, 2415382, -107374,
+2492155, 17571784, -2228014, 1733019, 4975183, 1041530, 2108829, -8948027, -9837623, 6787659,
+-11701638, -15832860, -16654273, 12896713, 8300561, 2473901, -956167, -1934346, 6105833, -992137,
+-4715874, 5898601, 16195785, 10970420, -4359929, -2783139, 4971962, 2889439, -1204738, -2598992,
+1773285, 2268280, -748935, 639950, 8757438, 2084670, 1192927, 3429532, -2941516, 614180,
+2736968, 5851893, -639950, 389231, -5827197, 1830193, -3070902, -2222646, 5931350, 4787815,
+233002, 3743064, -3345243, -1615445, 1721208, -6979, -1817845, -3358128, -3668976, 2245194,
+939524, -1603097, 1964948, -13536663, -21455510, 7627862, 27899034, 13638132, -5213554, -21576842,
+-7478075, 1364189, 3024731, -4201015, 10602127, 7133404, -7820062, -4062502, -1036161, -14277545,
+19840064, -9038222, 7077569, -1662152, -4658429, -17391396, 5712307, 3606162, -2151779, 2097555,
+7804493, -2843268, 19405200, -4344360, -2939905, 16168941, -1786170, -11609833, -10361072, -20054812,
+2778307, -4452271, -6208375, -4371740, -14689325, -6160594, -13754096, 1473174, -12102144, 10962367,
+-6827925, -222265, 3436511, 1365263, 6359236, -5819144, -14858439, 6487548, -1683627, 3711926,
+-3296924, -1493575, 475131, 14351633, 21494164, 5842766, -6700149, 7431367, 7828652, 8541616,
+-3466576, -7155416, 10983305, 5202279, 14665703, 3425773, 3949759, 441308, 4442607, 13196287,
+18026514, 8878234, 3084860, 6789270, 2893197, -3721589, -12265890, -7772817, 1452773, 6009196,
+993748, -266288, -4559645, -1664837, 2582349, 1764695, -9680856, -1795296, 2254321, -353261,
+-4792110, -3996467, -5362804, 1088237, -897648, 3759707, 6956774, 4124242, 286152, -2228014,
+4280472, 5148055, 399969, 1770063, -6735583, -175020, -2240362, -6890202, 1530082, 1348620,
+-6161668, -559420, -1394254, 2431488, -2354179, 5942624, 96100, 8131447, 41477572, 1202054,
+-11297911, 34826816, 17395154, 15510201, 29985852, 30183956, 8435316, 9746891, 7388418, 32788854,
+1520418, -11274826, 13911936, 3227668, -12885976, -14097693, 12368969, 12373801, 23246510, -2065879,
+1530619, 545461, 3036005, -13678934, 15482820, 11124502, 4633196, -10571525, 16394964, -4788889,
+-1056025, -21772262, -4985920, -1429687, -1580548, -11371463, 7416872, -10560251, -6362994, -6087580,
+2952790, -7242389, -10324028, -13810467, 14653892, -10454487, 15596100, 7218767, 12773770, 4241817,
+-13385266, -430034, -21403432, -9592273, -11758010, 4664335, -14927696, -7809861, -2879239, 317828,
+15073188, 1788854, -2599529, -24262270, 9482751, 8464844, -789200, -55298, -12589623, 9651865,
+816581, -10464688, 28735478, 6663105, -3991635, -201863, -11891154, 2080375, 14281840, -3694209,
+-1429687, -15953656, -9764608, 5983963, -2489471, -7505992, 9157944, 5886790, -9824738, 8673150,
+-3561602, 2843805, -3453691, 8493835, 1555315, -1174674, -16106, 2163590, -11797201, 265751,
+-4518843, 3564286, 3702799, 5788006, -4998805, 4261682, 2841121, 2618856, 3978750, 5140002,
+-625992, 3994857, -5823439, 9906879, -4686883, 8405788, -5986648, 3803731, -12678743, -23251880,
+7140920, 7002944, -7194607, 15134928, -16735340, 18178450, -13114146, -7638063, 5851356, 4206921,
+46916612, 18331994, 7028177, -29278256, -779000, -6949257, -15518254, -4509179, -5672041, -5136781,
+-1737314, -24347632, -468688, -9212168, 301721, 11853036, -12915504, 15381352, -5042829, -17023640,
+-15188078, 12185359, 9347459, -3807489, -8385924, 15542413, -8386998, -7920994, 12215961, -348966,
+3758633, -12586402, -425202, -7400229, 15668578, -2362232, 22476638, -8407398, 3376918, 6773701,
+-643708, 860067, 6855842, -14492830, -2325725, 18471580, 1496259, 5070746, -173946, -14977625,
+6400038, -10455024, 5322002, 16149077, 20946556, 22848152, 24050206, -5188321, 8438000, -191663,
+12903692, 29154238, -32022740, 24894704, -14807437, 6692633, 20006494, -12624519, 1282585, 6287296,
+5450851, -1490891, 13922136, -5393405, -4412542, 5895380, -3349001, 13424994, -1999307, 5093295,
+-10825465, -1750736, -333397, -8704825, -3675955, -10981695, 103616, 3188476, 1056025, 12214887,
+-4041564, 836445, 1302449, 5201743, 1260573, 5247913, -7249368, 5459977, 1655173, -288300,
+3860102, 5356361, -6101538, 5565204, -11716134, -10311680, 7191386, -3439195, -8320426, -1165010,
+3371013, -5301601, 9389872, -11156178, -24824374, -4734128, 4915590, 418222, 5713380, -18303540,
+-2580739, -3693672, -26239566, -20177756, 10313290, 10924249, 4936528, 7550016, -13475997, -6507949,
+-9577240, 28653874, 6782827, 845572, 21339008, 12379169, 10689637, 9745281, 8341900, -15049565,
+10777684, 4446902, -4719096, 8571144, -7692287, -7483444, 14860587, -6458557, 9336722, 19752554,
+615254, 3805878, -423054, 1304596, -4365835, -11548630, -14689325, -23737748, 9664750, -20105816,
+7485055, 7847979, 10056129, 82678, 545461, -2806224, -15555298, -7339562, 7795903, -5360656,
+8046621, 19743964, -6138045, 15104326, 6847789, 1681480, -932008, -5381057, -14412837, -602369,
+-19452444, -6730751, 20691542, -11095511, 3221226, -34255584, 16183437, -6346351, 5162551, -26434450,
+-23590108, 2219424, 6228777, 12089796, -27365920, -2893734, 263067, 18591840, 15153181, 17206176,
+-5571647, 358630, 2529199, 8994198, 2057826, 4943508, 14138495, 8070781, -5513128, 5153961,
+1297080, 1009854, -401579, -3031173, -11839077, 4117800, -5783711, 1748052, 4557497, -157840,
+947040, -166967, 4565550, -2907156, 19080392, 5202279, -860604, 10691247, 6374805, 882616,
+3102577, -335007, -8674223, 11238856, -3799436, 1505386, 13330505, 7464117, -4316979, 45634,
+-5481989, 8850854, 6011881, 7396471, 6784975, 20326470, -48289392, -12014097, -28639916, 9594957,
+-25709674, -8761196, -29151016, 7722888, -15151034, -11806865, -2393908, -24950002, -8930311, -26723824,
+-13339632, -30925376, 6754910, -28618440, -11170136, -14914811, -8196945, -7928510, -6554120, -27318676,
+-15459735, -20804284, -10520522, -6072547, 11865921, -1791538, 8885750, -17031156, -2647847, 892279,
+-19413252, 3692061, -1256815, 1574642, 5225902, -19842212, -1004486, 7212861, -2331094, 8142185,
+16524887, 29660508, -24585466, 1447941, 33164664, 91268, 16338056, -11651173, 20596516, 3678640,
+-4773856, -27542552, -16064251, 22756884, 14204531, 22223234, 933619, -15600395, 5796059, 7996692,
+16054051, -29933774, 333934, 5610301, -16374563, -5545340, -7009924, -10049150, -23826332, 36990944,
+-6683506, -11940009, -7479149, 7639673, 9014063, -20966956, -19333796, -805843, 6320045, 940061,
+186831, -4110821, -6946573, -115964, 18783502, 11539503, 1611, -15388331, -10512469, 1709397,
+-5805722, 4057670, 5049271, 2500745, -1497333, -7934952, 3364570, 3925063, -2071248, 5948530,
+-3339337, -13644574, -6362994, -773094, 4082903, -1003949, -4271882, -19954954, -7867307, -4555350,
+1624571, 2528125, -8517457, -15441481, 6170258, 9321690, -8097624, 407485, -7108171, 7865159,
+-2482491, -13771813, 20636780, -34804804, -321049, -6941204, 15067819, -7705708, -21376590, 18653580,
+-37557340, -32478542, -26720602, 15285789, -7923141, 802085, -14557255, -13874892, -16104517, 9009231,
+7889855, 26153666, 12373264, 5244155, 24441586, -6550899, 8883603, -8862665, 7663833, 4354560,
+14573361, 23447838, 12309913, -4953171, -14350023, -8642011, -2909304, 13138842, -4329327, 3617973,
+523986, -6134824, 12510703, -858993, 10273562, 7540889, -19997904, 16440598, 30353608, 4654134,
+25392384, 24489904, 11156178, 8058433, 72478, 12903155, -8070244, -29579440, -9594957, 21832930,
+224412, -10928544, 11294153, 31036508, -7098507, 2299955, -22513144, 22099754, 19892678, -1530619,
+6403260, -10249403, 51063940, -32131188, -27821188, -26346404, 2226404, 843424, -7729331, 22674206,
+-31971736, -638340, -20437066, 7719667, 9055402, -1532230, 22183506, 5019743, -1880659, -12108050,
+-149787, 5505611, 16161962, -11177116, -14265734, 5851893, -8502962, -2334315, 1973001, 3779571,
+1316408, -6442, -1073742, -13513041, 1269163, 3119220, 9208410, -8039105, -4511327, 5098126,
+2438468, 3515431, 307627, -8869107, -1011465, -10054518, -7602629, 9912785, 5054103, 5537287,
+3889093, -443992, 1910724, -2817499, 6030134, 729071, -2767033, -693100, -8791261, -3391414,
+-5859409, 3425237, 55830280, -12306692, 31096636, 53647900, -18298172, 25722022, 11345693, -33786896,
+30842160, 4692252, -14806900, 22763864, 9660992, 21388938, -219580, -18034568, 17028472, 5879810,
+51003, 5385352, -5204427, -19075560, -11420318, -9127342, -16558173, -12248710, -3166465, 12709882,
+-11410117, -6816650, -16308528, 3460670, 1358283, 2621004, 22299470, -13353053, 5349382, -12386149,
+-7042136, 12838194, -10271951, -22900228, -29481730, 33932924, 15035070, -8392366, 23349590, -21481816,
+-18869402, -11426224, -1918777, 3462281, 127775, -19990388, -14754286, -15624017, -34454228, -21472688,
+-18577344, 6682969, 11516955, -911070, 19954954, 3838627, -20626580, -17723182, 26934276, -23079006,
+3212636, 23676544, -3152506, -40632000, 28368796, -14948634, 4459250, 1890859, 23454280, -5592048,
+-9139154, -1128503, -13598940, 7131793, -23374822, 7984881, -30025042, -19073412, 11442867, -12599823,
+-3794604, -1553168, -17889076, 5912560, -10510859, 8602283, -2857764, -221728, 756988, 11176579,
+-8144869, -6248104, 1792075, -11104638, -5115843, 1831267, -7490960, -7733626, -5568425, -3210488,
+-8714489, -4640176, 11906186, -9675488, 4493073, 7436199, -1937030, 7947300, -10561861, 1311039,
+-7477538, 15351824, 2669859, 5636608, -10806138, 13515188, 8988293, 10394895, 4131222, 1501628,
+3084860, 7626252, -7476465, 1007707, -26993332, 16175921, -7554311, 27379342, 18999862, -43814036,
+-5378373, 4625143, -26528940, -4364224, -4235375, 32318556, 23466628, 21583822, 27042724, -1025960,
+-18742700, -14629732, -14896557, 687732, -41671384, 4990752, 35899484, -32649268, -58775016, 5967857,
+-21926344, 43412456, -183610, 1392106, 29231548, -13383118, 6085969, -1387811, -7814156, 25255482,
+-7202660, 12754442, 42620572, -31343060, -17769354, -28573344, 14288819, 2314987, 28557238, -16383153,
+11300059, 1459215, 26011932, 15213311, -12604118, -8506183, 9885404, -4760435, -1083942, -18392660,
+-17999672, 9405978, -3968013, -5408438, -10211822, 23396298, -8848706, -9522479, 39442296, 42013908,
+27328340, -35878008, -3125663, -11345156, 13950591, 52334176, -6589017, -40063992, -2576981, -16568373,
+23578834, 10424422, -26747446, 13996762, 10433012, 13648869, -25813290, -9426916, 1944010, 22771916,
+1434519, -3803731, 3773666, -7968775, 1820529, 22750978, 11123428, -9655623, -11438572, -2733747,
+7215008, 9016747, 12087649, -11559904, -4342212, -21077552, -4399657, 13116830, -13160854, -2208687,
+-8138426, -7672422, -12372727, -2733210, 8383776, -2030446, -927176, 1957431, 5322002, -5706938,
+-15801185, -16497506, 9814537, 7433515, 13727252, -7039989, 10052908, 29454348, 1484448, -17878876,
+-2927020, 1446867, -1674500, -11247446, -25740276, 3888019, -21129092, 19460496, 11157788, -20614770,
+35159676, 53355840, 1484448, -2455648, -18278844, -18434000, 3076807, 3106335, -9026948, 48265232,
+-4383551, 36006860, 28797756, -36313412, -1182190, -12155294, -38916160, 9834938, 8970039, 21265456,
+36339180, -1073742, -10437307, 11995307, 13145821, 28668370, 11947525, 2653753, 23526220, 24839944,
+8487392, -5683853, 21568788, 9659918, 25929254, 5585068, 7438347, 16275779, 27464168, -4574140,
+-21873194, -25201794, -8288213, -8754217, 43229384, 23736136, 66759360, -3104725, -33742872, 29662118,
+-10238128, -11531987, -10160282, -22726282, 3294777, 12773233, -555125, -12731357, 47412144, -9476308,
+55959664, -15341623, 30084636, 2637647, -9524090, -30573188, -43716324, 40931040, -4023848, -6993281,
+-12606803, 38037840, -79994, -39920648, 73123968, 23007066, 7905424, -8405251, -30790084, 15386183,
+756988, 15486578, -14353244, 11044508, 5490042, -6912750, -10628970, 1887638, -12833899, -5994164,
+-14570140, 1685238, -2632815, -202400, 4713190, 11943767, -12258910, 4665945, -6038724, -379031,
+15963857, 10691784, -5853504, -20131048, -753767, -1219234, 2561411, 18334678, -12029667, -7074885,
+4491462, 11486353, -16847010, 1072131, 10895795, -304406, -1419487, -17519708, 8920647, -615791,
+8108362, -18314278, 1925756, 7664369, 5969468, 8950175, -17655000, -18492518, 11992086, 49593452,
+-29471528, -18967650, 4029216, 8934069, -5608691, 35086124, 27346056, 27593554, 9336185, 13608067,
+23240604, 14317273, -8401493, -13874892, -31182536, -5084168, 17157320, 5829345, 3720516, -11659226,
+-29489782, -8653822, -4119411, 30049202, 437550, -3636227, 22843858, -3666828, 6337761, 4827543,
+-50794432, 12992276, 13755707, -8920647, -21698712, 4090420, -28631862, -14630806, -43868796, 13232794,
+-36621576, -72698760, 8466991, -1036161, 51198156, -1800128, 17412872, 42205032, -6890738, -10993506,
+18803366, -414464, -36831492, -12922483, 4876936, 6098854, 27229556, 11281268, 24251532, 20942798,
+-15057082, -11330661, 10351408, 30838402, -12827457, -6515466, -28320478, -19615652, 7557532, -38313792,
+11129334, -43028592, 8199630, -11376295, 30546344, -13367549, 21660594, -46112380, -9357660, 6252399,
+-27388470, 6885907, 4887673, 4694936, -20651814, 10817412, -20221780, 5733782, -1520418, -8670465,
+-3672734, -2075543, 6505802, -7105487, -3200288, -5708549, 13211319, -8626442, 7733089, -19502910,
+10277857, -1176284, -1532767, 2740726, 18879066, 6504191, 8086887, -22601728, 2969970, -9298604,
+-27820650, 11135240, -8891656, -7141457, -10259603, 10324565, -4986457, 4949413, 5872294, -2750927,
+1254131, -6890202, 1989644, 5639292, -1306744, -907849, -10611254, 38970924, 41536092, 97071096,
+11441793, -54326504, -40790380, -30024506, -34657700, 67949600, 90689848, 30753040, -8650601, -28513214,
+1010928, -34508452, 37988984, 35920960, 10660109, 5207648, -22495428, -3251827, 41803452, 9752797,
+16798154, 14157286, 43865576, 36909876, -14221710, -32611150, -43116104, -29058674, -4319127, 12022150,
+39436388, 23655070, -8226473, 21375516, -29925722, -10186052, -67299456, -10628433, 66248796, 51200844,
+-10305237, 134233296, 42111616, 3938485, -73592120, -12541305, -6310381, -17264694, 18801756, 10436234,
+15931644, 28171764, -60050624, -64691872, -32500554, -43643312, -6225555, 14779519, 54339388, -32500554,
+19883014, 84688704, 42344084, 14741938, 23748484, 17279190, -51151988, -84672592, 43312060, -20951388,
+18652506, 45334452, 50169512, 4419522, -30332132, -39986144, -32586454, 35038344, 20272246, 6094559,
+34993784, -34892852, -6055367, -5605469, -15433965, -18072148, -1537061, -542240, 11353746, 3497714,
+-5004174, 68183, -439697, 548682, 2995740, 6448357, 10106595, -10149008, -13808857, -47424492,
+-25933012, -23468238, 27966680, 16504486, 9993315, -38849588, -37995428, -61266636, -16708497, 23989540,
+30746598, 39954472, 15688979, 11625940, 4655745, 3787624, -1163936, 8892193, -2167348, 28573344,
+20281910, 3965866, 201327, 86436, -4956393, -187368, -20646444, -88874144, -21176874, 49544596,
+94871536, 83583824, 200390288, 104882568, 71168144, 62617940, 28500866, -11206107, -101227544, -127078952,
+-189579312, -145178480, -148927456, -56657060, 753767, 57038240, 106115224, 87538952, 90471872, 62354872,
+85127328, 66636416, 94253592, 44887240, 35160748, 16816408, -24217710, -37271728, -57085484, -34511672,
+-124022552, -52383568, -117383064, -84693536, -134352480, -79866528, -125057096, -44408888, -61977988, -20175072,
+9610526, 63513440, 166544336, 158587376, 222207648, 150402240, 102614288, 133222904, 181965952, 160133568,
+134514080, 93855776, 11358041, -90945936, -90268400, -111922016, -213010512, -235181664, -256151312, -255803952,
+-280874208, -242930336, -204622448, -180476144, -117492592, 13542032, 133772128, 232641200, 307534688, 383323680,
+426546624, 297359904, 283619232, 184056528, 111552112, 105392592, -6248104, -34780644, -163318272, -313109568,
+-337186080, -273754240, -211555600, -124652832, -100818448, -102707704, -56598544, -88200912, -35631584, -9789304,
+67833640, 128674000, 105763568, 137546320, 147887536, 157692944, 139343232, 185904432, 138229760, 113206744,
+58567784, 12033425, -31302796, -143992000, -127455840, -170948832, -226579920, -205357952, -235316432, -241932816,
+-70449272, 7923141, 123055104, 150504240, 160395024, 186043488, 194426720, 164846752, 143498608, 109957608,
+83495240, 30157112, -21370684, -64116344, -115519048, -169909440, -159030832, -142096304, -106151728, -50050864,
+-21888228, -10467909, -6097243, 15657840, 32884954, 39683888, 42875584, 35240744, 28387050, 30558692,
+25065966, 18533858, 34237868, 38134476, 29416768, 13982803, 7261179, 11187316, 14527190, 3441880,
+-623307, -1331977, -4027069, -6428493, -2675228, -1762547, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
12924630,
-582505, 2175938, 1815161, -5267241, -2720325, 7160784, 12469364, 2010045, 6646999, -2693481,
-1263794, -342524, 5630166, -4454418, -10153840, 4110821, 4764730, -5923834, 6877854, 3383897,
-6274947, 1984275, 1498407, -2736431, -869194, 328028, 4184909, 377957, -6283537, 277562,
--502511, 1361505, -869731, 1121523, 1515587, 3749507, 2726767, 895501, 1178969, 372052,
-1844689, -1937567, -3132642, -6969658, 1351304, 1531156, 568546, 5337034, -1886564, 4146791,
-1150514, -1658931, -3287798, -2134062, 7480760, 1597191, 4175245, 690953, 1647657, -1440425,
-257161, 494995, 2150705, -652298, -2785286, -1514513, -5799280, 637266, 1132798, 4952098,
--1594507, 3782793, -661962, 2472828, 41876, 2225867, 1733019, 1031866, -933082, 2559801,
-3543348, 2465311, 2311766, -93952, 495532, 565325, -1965484, 807991, 434329, 1708323,
-880468, 693637, 907849, 1216013, -705985, 726923, -542240, -89121, 4791036, 4626754,
-2111513, 1891933, 2525978, 3058554, 4522601, -1974074, 4692789, 51003, 5014375, -1101659,
-8928700, 3033321, 2947421, -6089727, -857920, -1382980, -7924752, 4326106, 3642132, -2503966,
--10380399, -4727686, -1565516, 5052492, 6947647, 4382478, -2789045, 1480690, -4457103, 207232,
-376347, -3626026, -1812476, -9389872, 764504, -1182727, -3939559, 402653, 530428, -1278827,
--308701, 8975945, -2171106, 7309498, 1412507, -5663452, 407485, 541166, 4102231, -1856500,
-1154809, 965294, 302795, 5592048, 1931662, 5740761, 4217121, -2963528, 5230734, 2541547,
-3815542, 347355, 1236951, -1356673, -2509872, -4750234, -5847061, 6060199, -6074695, -4690641,
--5027796, 2792803, 2521683, 1100049, 1083942, 3542811, -2311766, 2661806, -1750199, -2444910,
-3869229, -3597572, 584652, 1800128, -3033321, 709207, 417686, -490163, -492311, -287226,
-2019708, -691490, 739808, -927713, 1545651, -461172, 855772, -1108638, -8093866, -7525320,
-1620813, 150324, -1632088, 4510253, -594316, -784368, 4679367, -5152887, 1008244, -4497905,
--2914672, -1623498, 48318, 7648800, 8685498, -4034585, 3402688, -6256694, -599685, -2449205,
-8438537, -2495376, -479426, 883690, -11885785, -2066953, -5870147, -1934346, -1457605, 4427575,
-5880884, 2410014, 7948911, -1017370, -3620121, -3672734, 4590783, 11930345, 8339753, -4651987,
--5440113, 5969468, -5353140, 1021129, 1904818, 9776956, -3596498, -4813585, 1066763, -2984466,
-1870995, 2495376, 6215355, -6800007, -4412005, 3996467, 7508677, -683437, -3482682, -4415227,
--10611254, 4037806, -17180, 3174518, 498216, 287763, -1666984, 1961190, -2707977, 1695438,
-2295123, 2327336, -3765613, 2782602, -688269, -2629594, 256624, -5557688, 3496104, 543850,
-445066, -2197413, -758599, -1855963, -3884261, -2932389, 2070174, 213138, 839666, -704375,
-275952, -197569, -1108638, -854699, -1620813, 193274, -928787, -671626, -224949, 391379,
--284005, 559420, -296353, 1981591, 759136, -1105417, 1332514, 832150, -1523640, -19680614,
--6484864, -1042603, 3353833, 2253784, 4891431, -9403831, -2821794, -432718, -9756018, -6972343,
-2439005, 5887327, 3449396, 6496675, -843961, 3725884, 8650601, 7633768, 7170448, 4128537,
--2785823, -2218351, -4469451, -1986959, -4490925, 9231495, 4280472, -1437203, -4119948, -2516851,
--4207458, -6113349, -6599218, -8280160, 4954782, 3547643, -9196062, 2140504, -513249, 6307160,
-929860, 3093450, 4061965, -8688182, -1394254, -342524, 1100049, 4522601, 6854231, -2790655,
--1052804, -2053531, -5510443, 1650878, 1032940, -601832, -1547799, 5208722, 225486, -2920578,
--1041530, 2455111, 3284039, -1378685, -215285, 847719, -4809827, 3491809, -434329, -7157026,
-751082, -8729521, 1312649, 6438693, -2230699, -291521, -9844602, -4801237, -7334731, -4438312,
--678605, -783295, 4432943, 846645, 5216238, -3209951, 1703491, 2841658, 876173, 2795487,
-243203, -1933809, 1009854, -882079, 820876, 52613, 287226, -388695, -1435056, -526134,
-1098975, -1323387, 791885, 2209224, 1044751, 548145, -45097, 43487, -579284, -900869,
--1556926, 1046898, 1320166, -879931, 827318, -928250, 10799695, 4080219, 1822140, -2691871,
-7955890, 3094524, 4495220, 12621298, 13654775, 532576, -2220498, -4831838, -7426536, 2738042,
-5395553, -2780991, -555661, 784368, -1301375, -4347044, 5120138, -4995584, 2362769, -14441828,
--2087354, -3504157, -3511673, -7128035, -1489817, -908386, 111132, -3644817, -5229123, -4103841,
-573915, -2712809, -5546951, 3336116, 4769025, 408022, -4549981, -5090073, 1879048, -3914863,
-4497905, -5603859, 3627637, 1331440, -66572, -7992398, -7415798, 1739999, -5372467, 8744553,
-1561758, 7341173, -3790309, 7389491, 1439351, 4764193, 1618129, 4515085, -4135517, -5901822,
--117038, 9496173, -922344, -6365679, -3381213, 4149475, -2646237, -3630858, 965294, -10160282,
-6879464, 8297877, -511101, -7046431, -8908299, -257698, 7502771, 5431523, -4241280, 5769215,
-604517, -823560, -1116155, -581431, -477278, 1597728, -2509872, -2162516, 198105, 871878,
--1884954, 702227, -880468, -252866, 1995549, -787590, -427349, 333934, -3136937, 1676111,
-420907, 299574, 731755, 1007170, -131533, 279173, -612033, -597000, -467615, -350577,
-15533286, 3183645, 8539469, -3347927, 6401112, 4764193, 9961103, -7358890, -5244692, -1675574,
-593242, 7084549, -3306588, 10749766, -780610, 6114960, 5289252, -2990908, 2187212, 6196027,
-5738077, 1476932, 1600412, 5645735, -11623792, 1916092, 9026411, 7050189, -6274411, 7870528,
--9263171, 5650030, -8168491, -4122095, -2134599, 8537321, -1729261, 8938901, 1994476, 1931662,
-450972, -294205, 3541738, 5248450, 11640435, 1835025, 10046465, -4934381, 7344931, 9669582,
--299574, -1728724, -3482145, 3741990, -13805099, -1142461, 1365263, -5167383, -8190503, -456877,
--517007, -1103807, 3621194, -8433168, 4271882, 3724811, 5367099, -13299903, 4584878, 3202972,
--7859790, -920734, 4341138, 9795210, -12399571, -1533840, 958315, -11721503, -1025423, 1726040,
--3246995, 7709467, -1714229, 673236, 2178622, -1347009, -374736, -523449, 1388885, -3032784,
-469762, -1572495, 949725, 279173, -1708860, -186831, 2152316, -943819, -405874, 54761,
--2456721, -940061, 508417, -950262, -1104344, -354335, 501974, -1372779, -550830, 1734093,
-2365990, -3003793, -46171, 491774, -13803488, -16917876, -13545790, -12233141, -420370, 8618389,
--17856864, 12711493, 8214125, -20049444, 12620761, 5358509, 4311611, 1992865, 1932198, 4543539,
--3161633, -3266323, -6601365, -188979, 7681549, 6511171, 3777961, -11412265, 7791071, -8154533,
-209917, -7169911, 8943196, -4738960, -3718905, 2835752, -13443785, 1348620, -4464082, -4007741,
--1447941, 969052, 13191992, -6221797, -2039036, -5020280, 10028212, -6102612, -3310883, 3102577,
-3002719, 2838974, 3536369, -4162897, 4825933, 1241246, -11035918, 15149423, 6003828, 2451890,
-1557999, -72478, -7078643, 8672076, 7239704, 3038153, 9693741, 1038308, 4252018, 9771051,
-4948339, 2103997, -6760816, 8050916, -3563212, 15378130, -1707786, 409633, -4230543, -16130823,
-2071785, -3912178, -1957431, 8278013, -744640, -8751533, -5027796, 7114614, 5908802, 927713,
-6852621, 1816771, -5118528, 2404645, -539018, -1698660, -1462973, 558883, 4028679, -1933272,
-447213, 722628, 2238215, 869194, -1918240, 2982318, 371515, 792421, -242666, 769336,
-301721, -1170916, 1639067, -1183264, 1335735, 1098438, -944893, 3359738, -533650, 826244,
--1222455, -765041, 9861245, 6709276, -1136556, -6189585, 16200617, 25745108, -3397856, -3584687,
-12455942, 3019899, 4109210, 3293703, -18547816, 2032056, -11993696, 9583683, 13681618, -3603478,
--6610492, 2222646, 8664023, -5215701, 10465762, -4123706, 20200842, -5923834, 3905199, -1007707,
-5478231, 14375792, -5440650, 1399086, -1277216, 4143570, -5345087, -2597918, 8185134, 17635672,
-1466731, 12904229, -4795868, 1759326, -2441689, 4285304, 9438191, 14064944, 10973641, 10409390,
-10838350, 6836514, -1995012, 1646046, -1507534, 243739, 2141041, -7079180, -2046015, 11322071,
--9989557, 3942780, -4402342, -2661269, -5201206, -20586316, 2280628, 11110544, 7035694, -2570001,
--9766219, -23725400, -3835406, 9604621, -2012192, 3767760, -7403987, 5473399, -6830072, 6218576,
-13413183, -5936719, -7283728, -13444858, 4024384, 1614371, 2181844, -10640245, 745714, 20938,
--3229279, 566399, 4981089, 175020, 3418257, 1478543, 2207076, 2674691, -489626, 4232691,
-1003949, 384400, -908386, -1442572, -1199907, 4027069, 1357210, -196495, 2720862, 1382443,
-1959042, -439160, 2249489, 2702071, 3724811, -1627256, 382252, -1588601, -17794050, -13981729,
-1735704, 8384850, -8049843, -5126044, 943282, -4191888, -26593364, -22773528, 9879499, 9278203,
-1607392, 1446867, -9788767, 15302968, 18396956, 11491185, -9609452, 8994735, 12052752, -1791538,
--15466177, -6843494, 21192980, -6218576, 2058363, 1394791, 11875048, -9485435, -17155710, 3809636,
-7777649, -4099010, 4952098, 11171210, -5442261, -4148402, -573378, -23757074, -6980933, 8313446,
--4603131, -15838766, 2817499, -317291, -5085778, 3275986, -1575179, -15010374, -12883291, -22520124,
--18053358, 3617436, 7860864, 849330, -5451924, -7442105, 118648, -5053566, 4760435, -10759967,
-303332, -3738232, -3205119, -3569118, -1048509, 4362076, -5007932, -21592948, 3194382, -3008625,
-5296769, 6069326, 344671, 4254165, 4967130, 1719598, -1304596, 2767570, -3149285, 1343788,
--6831146, -3459059, -3098819, -3593277, 1478543, 6110128, -3192235, 1075352, -7755101, 1020592,
--831613, -5564130, 2428267, -1677185, 1379221, 2475512, 1279363, 1183264, 4788352, 1202054,
-570694, 1762010, -47782, 811212, 610959, -1237488, -3729105, -579821, -3774203, 1905892,
--2885681, 4316979, -15569, 6121402, 2689723, -3437048, -2433099, -1800665, -279710, 8654359,
-27779848, 24691230, 19286550, -2054068, 18855444, 6122476, 26316338, 11154567, -543313, 32117766,
--6687264, -1675574, -20452098, -5388574, -420907, -14416058, 8626979, 12892955, -4196183, -176631,
--11616813, -19907710, -11757473, -15177878, -4439386, -9168681, -2898029, -1442035, 9110699, 2315524,
--1911797, -8204998, -2849174, -5477694, 2896419, 214212, -8149701, 4295504, 5385889, 2134062,
--6306086, -8258149, 2732673, 7626788, -1112933, -288300, -14622753, 26174068, 4364224, -4982699,
--744103, 2317672, 11173894, 9508521, -9880035, 5544266, -3885872, 1182727, -1699196, -2495913,
--15002321, -13366475, -17959406, 2699924, -795106, -3799972, 11201275, -3597035, 31706522, -3150359,
--1765232, -7845832, -3549254, 4095788, 5406290, 3810710, -325344, 13637595, 9737765, -2053531,
--6673843, 1777043, -4007205, -53150, 1219234, -4438849, -1522029, 77309, -1548873, 2107218,
--5484137, 3178813, 5973226, -1896228, 3096672, -1915019, -1569811, -2492692, 915902, 3297998,
--1506997, 4441533, 767189, 1527935, 6128382, 2613488, -914291, 6457484, 2852932, 4453881,
-5794985, 4461934, 409096, -95026, 4264366, -4090420, 38655, 2570538, 1358820, 2951180,
-2717641, 1424855, 3513820, -17089674, -23978802, -13571023, 18076980, 13961865, -12192875, -12916040,
-19373524, 11450920, -12047920, -16793858, -2621004, 2641942, 1938641, 2161979, -9599789, 9946607,
--7140920, 19655918, -3007014, -14155138, 3321620, 4881767, -52613, 1321776, -6083821, -9273908,
--442919, 7873749, -4888210, 5949067, -9702868, -26267484, -21098490, 13195213, -16424492, 13008382,
-3902515, 1343251, -5463199, 7558606, 2530273, -2266132, -3738232, 3432753, 7981123, -7368017,
-22102976, -5771363, 7461432, -6857452, 1980517, -2073396, -8613020, 21097416, -16635482, 22968412,
--805306, -11729019, -17486422, 8748848, 3171833, 2698850, 1061931, 9212168, 6346351, 8328479,
--18003430, -5676873, 514859, 36507, 4583804, -13877576, -6590628, -4726612, -2309082, -17322140,
--3459596, -5974837, -19207630, -1289564, -10877542, 2541010, -5086315, 1190243, 2516851, 8155606,
-5021354, -3496104, -503048, -7353521, 3936338, -785979, 3420942, -8588861, 491237, -3624416,
-2043868, -7945690, 1540283, 1432372, 418222, -2014340, 2711735, -4806069, 3461207, -7323993,
-2718178, -5345087, 2483028, 996969, 3468186, -2939368, 8830453, 3120831, 163209, -5648419,
--4344897, -1184874, 5903433, -1564442, -2848100, -3100430, 4051228, 3535295, 41260140, 13748190,
--9190693, 21177946, 19744502, -10225243, -13001940, 31846646, -2854543, 6985765, -18902152, 46363636,
-1614908, -13018046, 6726993, 2289755, 22515292, 357556, 28435368, -20479478, 425202, -22369800,
-1705639, 15660525, 711891, -13725105, 19370302, 10320806, 5687611, 4622459, -6803228, -6586333,
-1736777, -9736154, 12665859, -11375758, -15127949, 13269301, 5012227, -17569638, 9468792, 1088237,
--12773233, -7207492, -4301410, 6622840, -1554241, -7744900, 9295920, -11397233, -4547834, -3964792,
-15589658, -10362682, 7499013, 11930882, 5496485, -7203734, -14695767, 9174050, -12580496, 16810502,
--21381958, 27996744, -8399882, -4060355, -4080219, 12683038, -1012539, 4526896, 7556995, 4486094,
-10776073, -10736881, -20310900, 1290638, 17072496, -11593190, -5535139, -12115029, -7299297, 3020973,
--1299765, -3588445, 7312719, 5202279, 3806952, -2037425, 11202885, 6783901, -5389110, -2928631,
-2101850, 444529, 9456444, 5916318, -918049, -3289945, -2575907, 10301479, 824097, -5545340,
-6483253, 1808181, 122943, 5348845, 2353642, -1164473, -5807333, 1383516, 6719477, -5306432,
--1443109, 7642895, -679679, -1827509, -2151779, 4419522, 716186, -84289, -2253247, -24482924,
--3240016, 22750978, -6772090, -13877576, 6058052, -6412386, -1386738, 10423349, -24675124, -14199699,
-9305047, 12807056, 17027398, -1017370, -3409667, 7129646, -1819992, -24024436, -16750372, 28700582,
--2320356, -24760486, -14650133, -9840307, -8411157, 2527052, 8231842, 663572, -4318053, -12248710,
--19205484, 2778307, 2390149, -454193, 15440944, -10421738, -30037928, 12340515, 8655970, -34701188,
-20714090, -5430986, -17769890, -14311368, -1447404, 20092930, 4619774, -6361921, -7329362, 5896990,
-10316511, -14483167, 11130408, 2036888, 8167954, -6143951, -15420543, 13794898, -77846, 15444166,
--47379932, 6233072, 7181186, -6764574, 13019656, 15481746, 44815836, 1500554, -29777546, -13449690,
--7858717, -28605020, -28411746, 1698123, -16178068, 437550, -10782515, 10818486, -10968810, -10454487,
-18864034, 4884989, -733903, -812823, 11038603, -2121177, -1196685, 6674379, 5210332, -3861713,
-3538516, -9908490, -2308008, 3056406, -1985886, -2714956, -4952634, -4967667, -2730526, -6179921,
-2509872, -7916162, 1706713, -1178969, 7585986, -1569811, -4041564, -3159485, -4645544, -4687420,
--1362578, -3206193, -6026913, -4191351, 4344897, -5692443, -3088082, -10363756, 3240553, 4494684,
-10918881, 2706903, -1427003, 589484, -20609400, 3279208, 12723304, 11319923, -18289582, 32553704,
-22706418, -10468983, 13582834, -26394722, -5847061, -8861054, 41643468, 26652956, -9907416, -15910169,
--19428822, -4342749, 1113470, 7626252, 27941984, 5919002, 4757750, 6019934, 784368, -9234180,
-1137093, -1766305, 12885976, 17350058, 22040698, 14314589, 9358734, -2186138, -4049617, 3482145,
-19987168, 3142842, 3566970, -20314658, -10292889, 34264712, 13941464, 10294500, 284005, 20528334,
-11001022, 43269648, -2391760, 44613972, 3203509, -13845901, 14478335, -12052752, -8975945, -1575179,
--8198019, 498753, 8323647, 17858474, 3146601, -3790846, -19505594, 6320581, 1663226, 12911745,
--15285252, 4106526, -6721624, 2331630, -19451370, 9925669, -17106854, -2061584, -23302882, -32105418,
--5298379, -4993973, 26521960, 7156490, -755377, 4986457, 8324184, 10341744, 1821066, -363462,
-506269, -18588618, 5983427, 299037, 17441326, -7012608, -756988, -4606353, 12428025, 2492692,
-11365557, -97174, -12985834, 6420439, -569083, 4369593, -9836012, -4465156, 2510945, 2785286,
--7271917, 748935, 6916508, 4261682, -6371047, -7194070, 12895102, -12798466, 5499706, -3922916,
--10311143, 3354906, 2559801, 3382287, 4525285, -4758824, -428423, 6158446, 680215, 4297115,
--1614908, -4865124, -4792647, -10887742, -16693464, 5105643, -19147502, -10201, 23054848, 7271917,
-19644644, -22833120, -10597295, 11225434, 2243047, 32730872, -16683800, 19581830, -7463043, -9879499,
--24442122, -9449465, -13171054, 16369194, 3754338, -21698712, 27143120, -14046154, -13161927, 2661806,
-10530186, -7934415, 18748606, -9111236, -13158706, -6723772, 6174016, -2283312, -3671660, 2054068,
-18684182, -12701829, 34262564, -13319230, -524523, 31832686, -6471442, 5613523, -43482784, 1939178,
-7675644, -9787157, 19061602, -34812856, -42681236, 16176457, -7645579, 23564874, -17674328, -16601122,
-1808181, -5457830, 36122284, -4403415, -1749662, 8072928, -33731600, 1919314, -34086472, -13615583,
-1865626, 8126615, -42533600, -18943490, -5304285, -2070711, 13643500, -18206904, 21635898, -8923868,
-2347737, -27884538, -1506460, -24636470, 9214852, 5334887, 18243410, 23374286, -8801999, 15330349,
-1980517, -5012764, 7742753, 4905390, -7618735, -7615514, -13568339, -478352, -8109972, -8373039,
-2811056, -1966021, 11522324, -15585899, -2812667, -9791989, 3774740, 5702106, -5514738, -703301,
--8398809, -8265128, 9217537, 15308337, 17101486, 3563749, 1015223, -4590783, 3165928, 2882460,
--6599218, -10314364, 3447248, -5410585, -7690676, 11677479, 8005282, 6842957, -10739029, -12244415,
--26271242, 21422224, -18779744, -5392332, 17201344, 39302172, -11093901, 32214402, 11571716, 8318815,
--14846091, 35689032, 5738613, 16661252, 1708860, -20908974, 7771207, -20995948, -20759188, 13083007,
--20678656, -4468914, -4713190, 21163452, 1982664, -7072201, 7021735, 9429601, -4182761, -19912006,
--4501663, 15359877, 37317896, 8581882, -20745766, 2324114, -3839701, 8924405, 11454678, 18850612,
--8145943, 448287, 12371653, 2823941, -459562, 24857124, 22618372, 26732414, 9396315, 22461068,
-3251290, 13469554, -10391673, -1894081, 3160022, -20900384, 1753957, 35316980, -4311611, -7766912,
-7613367, -560493, 9678172, -21081846, 28024662, -17516488, -7630010, -4829154, 1600949, 3229279,
-3755412, -30660160, 38785164, -8432095, -12184822, -4640176, 32959042, -3802657, 6995428, -26006026,
--17879412, 452582, 13813689, 12465069, 21133386, -33774012, -10383083, 32170378, -11419244, 3474092,
-27770722, 6484864, 6204081, -1891396, 1113470, -10638097, -658204, 2536715, 8039105, -4871030,
-6717329, -12266427, -6678674, 551366, -3281355, -2205466, -28149216, -22039624, 1942936, 14123463,
--13215077, -22987738, -9203578, -18909130, 5405217, 679679, -7056095, 17848274, -5054103, 7196218,
-8368207, -9965935, -6790344, -1810329, 2332167, -904628, 13711683, -389768, 977105, -6769942,
--1369558, -10551124, 63107564, -3704409, 12639552, -526670, -6502581, 1784022, -29207926, -12459700,
--8989903, 11353209, 8086887, 14286135, 1620813, -15358266, 16084116, -13043816, 18545668, 13662828,
--15034533, -16090558, 1899986, 22708566, -23295902, 9754408, 10714333, -13297219, 5908265, -1715839,
-8114267, -1030255, -33955476, 19039054, 11683922, -28597502, 34493420, -18287434, -4406100, -11319923,
-27843200, -5519033, -23704462, -39728, 350577, 23028540, 23406498, 1561221, -18059800, 26261578,
--4240744, 4648765, -33300492, 26237956, 10696079, 1601486, -19100256, -14454176, -2024540, 9147743,
--15343234, -27422830, -11668889, 21715354, 13460428, -3175592, 35228932, 2136209, -5688684, -25352656,
-31099322, -28827284, -9277666, 31766652, 10072772, 4161287, -11878269, 4980552, 31333398, 6999186,
-13778255, 19862614, -51099912, -11147051, -8423505, -4170413, -21138218, -3690988, -2423435, 31163208,
-8523899, 2181307, 15908559, 22297322, 15670188, -10917807, 6048925, 13387950, -2506650, 5242008,
-5869073, 7205345, 4733591, 22189412, 12101607, 1493575, -6269579, -9820443, -18956912, 2920041,
-193274, 5306969, 6457484, 3133716, 33421824, -4405026, 12216498, 7367480, -8842801, -26209502,
--4055523, -9589588, -16210817, -17529910, 3286724, -2731599, -21150030, 272730, 8398809, -1901060,
--1834488, 7693360, -5003637, -16127602, -25305410, 802622, -28329604, 26497800, 41407244, 19223736,
-23553064, -36156108, -32230508, -25332254, 2415919, 44800804, -8317741, 16643535, 29115046, 14665703,
--16121160, 940061, 21246666, -27473832, -22971096, -19712290, 22262426, 15514496, -28816546, -40666360,
-55066848, 33957084, -39348344, 17758080, -4647692, 16265578, 1688996, -11926050, -27350352, 24890410,
--727997, -20271708, -30350924, 7715909, 7023882, -7692824, 745177, -2841121, -15008763, -6606734,
--7935489, 14021994, -26607322, 29251948, -20091320, 1045825, 46021112, -44488344, -10791642, 41929080,
-3004330, 9781251, -6288906, -13175886, 13115220, -4919348, -18554796, 2359011, -42246372, 71503688,
--7087233, -78959216, 29817274, 77783472, 45880452, -96259880, -28030030, 18143552, 6914898, -14713484,
--22223234, 11939472, 29365766, -36266704, -10026601, -63227288, -10925860, 21740050, 7931731, -19375134,
--31634582, 12360379, 27683212, -667867, -8558259, -15228343, 22002580, 13011603, 8938364, -1935957,
--6657736, 2540473, 12288975, 9475772, -2253784, -25393994, -15776489, 26249230, 11273752, -13657996,
--9212705, 18806052, 6311992, -2729452, -38398620, -17692044, -19151260, 21461414, 5905043, 4620311,
--3988951, 452582, 20963736, -4356708, -3725884, -18394808, 3629247, -6015102, 29271812, 6116034,
--6548752, 3463354, 29552596, -3943854, -19952270, 4591857, 19639274, 45867028, -19213000, 14944876,
--24252070, -64328408, 34746824, -16205985, -35156456, -24392730, -35939748, 17241072, 12030740, -48404820,
-31118648, -16879222, -1165547, -602906, -24783036, 19145890, 19148574, 16819628, -1529008, 22006876,
-11577084, -13372918, 1288490, -27612882, -9920301, -24501714, -16998944, -1223529, 39875012, -33261838,
--7014219, -7189239, -29697014, 17437030, -33506650, 17379586, 15184857, -22832046, 18073222, -36688148,
-10628433, -31903554, 20782274, -11973295, -16746614, -17506286, -25875568, -7042136, 13188771, 22610318,
--26262652, 17584670, 9982578, 27540940, 34029024, 19619948, -28075128, -13136694, -52896280, -13446469,
--15277199, 17580374, -61750892, -11790222, -36678484, -3250217, 37033356, 33914136, 22448720, 7847442,
-49826988, 54377508, 48583060, -16714402, -21659520, 18355080, 47561932, 87650616, 6463926, 20468204,
-10823318, -4767414, 16341814, -15884400, 9689446, -4185446, -102542, -10266046, 16580184, 18954228,
--6512244, -15817828, -11809013, 14336601, 6507949, 16267189, -8835285, 6255083, -3115462, -7334194,
--4544076, 16151761, 32224066, 15247671, -16520055, 8375186, -5625871, 11400454, 5273683, 5588290,
-15827491, -10210211, -21001854, 1657857, 16378321, 12642773, 4506495, -3257733, -7149510, -29131690,
-28651190, 7871065, -6589017, -30285426, -6928856, -20841866, 10472204, -10135049, 7466264, 57370564,
--33879240, 21373368, 26214332, -12205223, 2467459, 9884330, -3114925, 27758910, 1516124, 20060718,
--25731686, -3781182, 22526030, 3565897, -34950832, 22541062, -13916231, -11539503, -13305809, -3615826,
--12979391, 13141526, 18622442, 8896488, -3182034, -9890773, 16158741, -5394479, -25676926, 20924006,
--43389908, -11089606, -8901857, -9692131, 24823300, 26980448, 48690972, -14419816, 20847234, -920197,
-9411884, 31751082, -2302103, 3262028, -21250962, -67168456, 33202782, 6243809, -32341104, -22322556,
-3287798, 17373680, -3074660, -19138374, 9859634, -19621022, 25617870, 14136885, -11158862, -23506356,
-46427524, 4955319, 2467996, -4410395, 6438693, 3126199, 2026151, -15763604, -32995012, 8968965,
--4833986, -11898670, -30411590, -7637526, -905164, 26963804, 11180337, -34328064, 19913616, 3393024,
--1308354, -3949759, 11101954, 14079977, -2834142, -6546604, -2438468, -6205154, 5243082, 8301098,
--392453, 4691178, 9478993, -3669513, 13692893, 5667746, 4189204, 7042673, -3888019, 17009144,
-2873333, -3802657, 11184632, -13724031, 4334696, 7634305, -3243774, -5965173, 15436112, 22123914,
--19987168, -3862249, -7067906, -7005629, 7931731, 6739878, -12575664, 6773701, 5531381, 4803921,
-5789616, -11421392, 7997229, -1029182, 4694936, -3716757, 3206193, 63839856, 32560148, 64239288,
--59319404, 5129265, 30833570, -11959873, 35119948, 67781024, 37195492, 2161442, -18263812, -18833432,
-3513820, 29375966, 31457414, 7147363, -78920, -46780784, -9642202, 46133856, 15262703, -12868259,
-25479356, -21677236, -30323006, -8329552, -2024540, 35668628, 46585900, 41851236, 15857556, -16225313,
--24941948, -46271832, -46010376, 40074728, 16806744, 3284039, 61892628, 3749507, -18951544, -25327960,
--25733834, 12517682, 26443040, 21044802, 40598716, 2882997, 29212756, -1915555, -5250598, 14798847,
-27047556, 19786378, 17188996, -15428059, -5844377, -12168716, -27435178, -21980568, -39983460, -13383118,
-10719701, -6564321, 29088740, 34969088, -569620, 331786, -14317273, -25561498, 5273683, 33790120,
--1946694, 18702972, 8203388, -2452963, -10584947, -4866735, 3092913, 11798812, 9199283, -9029095,
--18913962, -23381266, -21939766, -8500277, 8915815, -2281702, -13786308, -7052873, -9564892, -8085813,
-4529580, -1219234, 12958453, 18538690, 4167729, -22535156, -11579769, -13498545, -3058017, 15210627,
-3679713, 3745212, -18423262, -17454210, -19886236, -10210748, 17382270, 11839614, 15007689, 8062191,
--7240241, -8974871, 6381248, 5761699, -1534377, 3908420, -7587597, -6115497, 4542465, 3183108,
-6285148, -3657702, -7537131, -3480534, -5768678, -1090385, -33910916, -66134444, 26095148, 107843408,
-109653200, 92815320, 67252744, -41511932, -47341276, -51159504, -68038184, -104120208, -83875880, -72855528,
-33817500, 78255912, 58200564, 125858112, 97275640, 50713900, -18721762, -33934536, -84619984, -66070556,
--65416648, -13388487, -40088152, -32566052, 9695889, 17690970, 35639640, 35762584, 49079128, 48673792,
-62807992, 36617280, 16100759, -9165460, -10624138, -27668180, -41843720, -50535660, -61763240, -40470940,
--75856104, -50557672, -37941740, 37927784, 71951440, 77581072, 53672060, 36550172, 57283052, 43812424,
-54974508, 43184824, 15129022, -20452634, -96331288, -68146632, -69452304, -107778984, -67620504, -58540404,
--56804164, 20594906, 57084948, 90651728, 74645992, 106577464, 95655368, 93523448, 66672388, -36457828,
--32996086, -74947176, -99089192, -109189880, -89558120, -43022688, -12247099, -22676890, 29482266, 78036336,
-55006720, 37131604, 62583044, 52578452, 18759344, -12465069, -12555800, -4138738, -15393163, -42106248,
--26477400, -30112016, -16299401, -13556527, -31383326, -11688753, 10714870, -10591389, 34605088, 45687176,
-50202264, 53104048, 3228742, 15780247, 15439334, -4645007, -72967736, -58252640, -45535780, -40685152,
--32058172, -30416958, 33442226, 49999324, 54350664, 52010980, 42861628, 29352880, 26404386, -529355,
--7988639, -42276972, -57024280, -51077900, -42633456, -27248346, -17794586, 1903207, 25476672, 51852068,
-38766376, 24608016, 17751100, 4735739, -548682, -166430, -10603201, -13758928, -11458436, -13467407,
-2892124, -5226975, -18506478, 2125472, 8365523, -3543885, -4925254, -4093104, 1682017, 3077344,
--4189204, 799938, 4656282, 1343251, 504659, 18254, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+582505, 2175938, 1815161, -5267241, -2720325, 7160784, 12469364, 2010045, 6646999, -2693481,
+1263794, -342524, 5630166, -4454418, -10153840, 4110821, 4764730, -5923834, 6877854, 3383897,
+6274947, 1984275, 1498407, -2736431, -869194, 328028, 4184909, 377957, -6283537, 277562,
+-502511, 1361505, -869731, 1121523, 1515587, 3749507, 2726767, 895501, 1178969, 372052,
+1844689, -1937567, -3132642, -6969658, 1351304, 1531156, 568546, 5337034, -1886564, 4146791,
+1150514, -1658931, -3287798, -2134062, 7480760, 1597191, 4175245, 690953, 1647657, -1440425,
+257161, 494995, 2150705, -652298, -2785286, -1514513, -5799280, 637266, 1132798, 4952098,
+-1594507, 3782793, -661962, 2472828, 41876, 2225867, 1733019, 1031866, -933082, 2559801,
+3543348, 2465311, 2311766, -93952, 495532, 565325, -1965484, 807991, 434329, 1708323,
+880468, 693637, 907849, 1216013, -705985, 726923, -542240, -89121, 4791036, 4626754,
+2111513, 1891933, 2525978, 3058554, 4522601, -1974074, 4692789, 51003, 5014375, -1101659,
+8928700, 3033321, 2947421, -6089727, -857920, -1382980, -7924752, 4326106, 3642132, -2503966,
+-10380399, -4727686, -1565516, 5052492, 6947647, 4382478, -2789045, 1480690, -4457103, 207232,
+376347, -3626026, -1812476, -9389872, 764504, -1182727, -3939559, 402653, 530428, -1278827,
+-308701, 8975945, -2171106, 7309498, 1412507, -5663452, 407485, 541166, 4102231, -1856500,
+1154809, 965294, 302795, 5592048, 1931662, 5740761, 4217121, -2963528, 5230734, 2541547,
+3815542, 347355, 1236951, -1356673, -2509872, -4750234, -5847061, 6060199, -6074695, -4690641,
+-5027796, 2792803, 2521683, 1100049, 1083942, 3542811, -2311766, 2661806, -1750199, -2444910,
+3869229, -3597572, 584652, 1800128, -3033321, 709207, 417686, -490163, -492311, -287226,
+2019708, -691490, 739808, -927713, 1545651, -461172, 855772, -1108638, -8093866, -7525320,
+1620813, 150324, -1632088, 4510253, -594316, -784368, 4679367, -5152887, 1008244, -4497905,
+-2914672, -1623498, 48318, 7648800, 8685498, -4034585, 3402688, -6256694, -599685, -2449205,
+8438537, -2495376, -479426, 883690, -11885785, -2066953, -5870147, -1934346, -1457605, 4427575,
+5880884, 2410014, 7948911, -1017370, -3620121, -3672734, 4590783, 11930345, 8339753, -4651987,
+-5440113, 5969468, -5353140, 1021129, 1904818, 9776956, -3596498, -4813585, 1066763, -2984466,
+1870995, 2495376, 6215355, -6800007, -4412005, 3996467, 7508677, -683437, -3482682, -4415227,
+-10611254, 4037806, -17180, 3174518, 498216, 287763, -1666984, 1961190, -2707977, 1695438,
+2295123, 2327336, -3765613, 2782602, -688269, -2629594, 256624, -5557688, 3496104, 543850,
+445066, -2197413, -758599, -1855963, -3884261, -2932389, 2070174, 213138, 839666, -704375,
+275952, -197569, -1108638, -854699, -1620813, 193274, -928787, -671626, -224949, 391379,
+-284005, 559420, -296353, 1981591, 759136, -1105417, 1332514, 832150, -1523640, -19680614,
+-6484864, -1042603, 3353833, 2253784, 4891431, -9403831, -2821794, -432718, -9756018, -6972343,
+2439005, 5887327, 3449396, 6496675, -843961, 3725884, 8650601, 7633768, 7170448, 4128537,
+-2785823, -2218351, -4469451, -1986959, -4490925, 9231495, 4280472, -1437203, -4119948, -2516851,
+-4207458, -6113349, -6599218, -8280160, 4954782, 3547643, -9196062, 2140504, -513249, 6307160,
+929860, 3093450, 4061965, -8688182, -1394254, -342524, 1100049, 4522601, 6854231, -2790655,
+-1052804, -2053531, -5510443, 1650878, 1032940, -601832, -1547799, 5208722, 225486, -2920578,
+-1041530, 2455111, 3284039, -1378685, -215285, 847719, -4809827, 3491809, -434329, -7157026,
+751082, -8729521, 1312649, 6438693, -2230699, -291521, -9844602, -4801237, -7334731, -4438312,
+-678605, -783295, 4432943, 846645, 5216238, -3209951, 1703491, 2841658, 876173, 2795487,
+243203, -1933809, 1009854, -882079, 820876, 52613, 287226, -388695, -1435056, -526134,
+1098975, -1323387, 791885, 2209224, 1044751, 548145, -45097, 43487, -579284, -900869,
+-1556926, 1046898, 1320166, -879931, 827318, -928250, 10799695, 4080219, 1822140, -2691871,
+7955890, 3094524, 4495220, 12621298, 13654775, 532576, -2220498, -4831838, -7426536, 2738042,
+5395553, -2780991, -555661, 784368, -1301375, -4347044, 5120138, -4995584, 2362769, -14441828,
+-2087354, -3504157, -3511673, -7128035, -1489817, -908386, 111132, -3644817, -5229123, -4103841,
+573915, -2712809, -5546951, 3336116, 4769025, 408022, -4549981, -5090073, 1879048, -3914863,
+4497905, -5603859, 3627637, 1331440, -66572, -7992398, -7415798, 1739999, -5372467, 8744553,
+1561758, 7341173, -3790309, 7389491, 1439351, 4764193, 1618129, 4515085, -4135517, -5901822,
+-117038, 9496173, -922344, -6365679, -3381213, 4149475, -2646237, -3630858, 965294, -10160282,
+6879464, 8297877, -511101, -7046431, -8908299, -257698, 7502771, 5431523, -4241280, 5769215,
+604517, -823560, -1116155, -581431, -477278, 1597728, -2509872, -2162516, 198105, 871878,
+-1884954, 702227, -880468, -252866, 1995549, -787590, -427349, 333934, -3136937, 1676111,
+420907, 299574, 731755, 1007170, -131533, 279173, -612033, -597000, -467615, -350577,
+15533286, 3183645, 8539469, -3347927, 6401112, 4764193, 9961103, -7358890, -5244692, -1675574,
+593242, 7084549, -3306588, 10749766, -780610, 6114960, 5289252, -2990908, 2187212, 6196027,
+5738077, 1476932, 1600412, 5645735, -11623792, 1916092, 9026411, 7050189, -6274411, 7870528,
+-9263171, 5650030, -8168491, -4122095, -2134599, 8537321, -1729261, 8938901, 1994476, 1931662,
+450972, -294205, 3541738, 5248450, 11640435, 1835025, 10046465, -4934381, 7344931, 9669582,
+-299574, -1728724, -3482145, 3741990, -13805099, -1142461, 1365263, -5167383, -8190503, -456877,
+-517007, -1103807, 3621194, -8433168, 4271882, 3724811, 5367099, -13299903, 4584878, 3202972,
+-7859790, -920734, 4341138, 9795210, -12399571, -1533840, 958315, -11721503, -1025423, 1726040,
+-3246995, 7709467, -1714229, 673236, 2178622, -1347009, -374736, -523449, 1388885, -3032784,
+469762, -1572495, 949725, 279173, -1708860, -186831, 2152316, -943819, -405874, 54761,
+-2456721, -940061, 508417, -950262, -1104344, -354335, 501974, -1372779, -550830, 1734093,
+2365990, -3003793, -46171, 491774, -13803488, -16917876, -13545790, -12233141, -420370, 8618389,
+-17856864, 12711493, 8214125, -20049444, 12620761, 5358509, 4311611, 1992865, 1932198, 4543539,
+-3161633, -3266323, -6601365, -188979, 7681549, 6511171, 3777961, -11412265, 7791071, -8154533,
+209917, -7169911, 8943196, -4738960, -3718905, 2835752, -13443785, 1348620, -4464082, -4007741,
+-1447941, 969052, 13191992, -6221797, -2039036, -5020280, 10028212, -6102612, -3310883, 3102577,
+3002719, 2838974, 3536369, -4162897, 4825933, 1241246, -11035918, 15149423, 6003828, 2451890,
+1557999, -72478, -7078643, 8672076, 7239704, 3038153, 9693741, 1038308, 4252018, 9771051,
+4948339, 2103997, -6760816, 8050916, -3563212, 15378130, -1707786, 409633, -4230543, -16130823,
+2071785, -3912178, -1957431, 8278013, -744640, -8751533, -5027796, 7114614, 5908802, 927713,
+6852621, 1816771, -5118528, 2404645, -539018, -1698660, -1462973, 558883, 4028679, -1933272,
+447213, 722628, 2238215, 869194, -1918240, 2982318, 371515, 792421, -242666, 769336,
+301721, -1170916, 1639067, -1183264, 1335735, 1098438, -944893, 3359738, -533650, 826244,
+-1222455, -765041, 9861245, 6709276, -1136556, -6189585, 16200617, 25745108, -3397856, -3584687,
+12455942, 3019899, 4109210, 3293703, -18547816, 2032056, -11993696, 9583683, 13681618, -3603478,
+-6610492, 2222646, 8664023, -5215701, 10465762, -4123706, 20200842, -5923834, 3905199, -1007707,
+5478231, 14375792, -5440650, 1399086, -1277216, 4143570, -5345087, -2597918, 8185134, 17635672,
+1466731, 12904229, -4795868, 1759326, -2441689, 4285304, 9438191, 14064944, 10973641, 10409390,
+10838350, 6836514, -1995012, 1646046, -1507534, 243739, 2141041, -7079180, -2046015, 11322071,
+-9989557, 3942780, -4402342, -2661269, -5201206, -20586316, 2280628, 11110544, 7035694, -2570001,
+-9766219, -23725400, -3835406, 9604621, -2012192, 3767760, -7403987, 5473399, -6830072, 6218576,
+13413183, -5936719, -7283728, -13444858, 4024384, 1614371, 2181844, -10640245, 745714, 20938,
+-3229279, 566399, 4981089, 175020, 3418257, 1478543, 2207076, 2674691, -489626, 4232691,
+1003949, 384400, -908386, -1442572, -1199907, 4027069, 1357210, -196495, 2720862, 1382443,
+1959042, -439160, 2249489, 2702071, 3724811, -1627256, 382252, -1588601, -17794050, -13981729,
+1735704, 8384850, -8049843, -5126044, 943282, -4191888, -26593364, -22773528, 9879499, 9278203,
+1607392, 1446867, -9788767, 15302968, 18396956, 11491185, -9609452, 8994735, 12052752, -1791538,
+-15466177, -6843494, 21192980, -6218576, 2058363, 1394791, 11875048, -9485435, -17155710, 3809636,
+7777649, -4099010, 4952098, 11171210, -5442261, -4148402, -573378, -23757074, -6980933, 8313446,
+-4603131, -15838766, 2817499, -317291, -5085778, 3275986, -1575179, -15010374, -12883291, -22520124,
+-18053358, 3617436, 7860864, 849330, -5451924, -7442105, 118648, -5053566, 4760435, -10759967,
+303332, -3738232, -3205119, -3569118, -1048509, 4362076, -5007932, -21592948, 3194382, -3008625,
+5296769, 6069326, 344671, 4254165, 4967130, 1719598, -1304596, 2767570, -3149285, 1343788,
+-6831146, -3459059, -3098819, -3593277, 1478543, 6110128, -3192235, 1075352, -7755101, 1020592,
+-831613, -5564130, 2428267, -1677185, 1379221, 2475512, 1279363, 1183264, 4788352, 1202054,
+570694, 1762010, -47782, 811212, 610959, -1237488, -3729105, -579821, -3774203, 1905892,
+-2885681, 4316979, -15569, 6121402, 2689723, -3437048, -2433099, -1800665, -279710, 8654359,
+27779848, 24691230, 19286550, -2054068, 18855444, 6122476, 26316338, 11154567, -543313, 32117766,
+-6687264, -1675574, -20452098, -5388574, -420907, -14416058, 8626979, 12892955, -4196183, -176631,
+-11616813, -19907710, -11757473, -15177878, -4439386, -9168681, -2898029, -1442035, 9110699, 2315524,
+-1911797, -8204998, -2849174, -5477694, 2896419, 214212, -8149701, 4295504, 5385889, 2134062,
+-6306086, -8258149, 2732673, 7626788, -1112933, -288300, -14622753, 26174068, 4364224, -4982699,
+-744103, 2317672, 11173894, 9508521, -9880035, 5544266, -3885872, 1182727, -1699196, -2495913,
+-15002321, -13366475, -17959406, 2699924, -795106, -3799972, 11201275, -3597035, 31706522, -3150359,
+-1765232, -7845832, -3549254, 4095788, 5406290, 3810710, -325344, 13637595, 9737765, -2053531,
+-6673843, 1777043, -4007205, -53150, 1219234, -4438849, -1522029, 77309, -1548873, 2107218,
+-5484137, 3178813, 5973226, -1896228, 3096672, -1915019, -1569811, -2492692, 915902, 3297998,
+-1506997, 4441533, 767189, 1527935, 6128382, 2613488, -914291, 6457484, 2852932, 4453881,
+5794985, 4461934, 409096, -95026, 4264366, -4090420, 38655, 2570538, 1358820, 2951180,
+2717641, 1424855, 3513820, -17089674, -23978802, -13571023, 18076980, 13961865, -12192875, -12916040,
+19373524, 11450920, -12047920, -16793858, -2621004, 2641942, 1938641, 2161979, -9599789, 9946607,
+-7140920, 19655918, -3007014, -14155138, 3321620, 4881767, -52613, 1321776, -6083821, -9273908,
+-442919, 7873749, -4888210, 5949067, -9702868, -26267484, -21098490, 13195213, -16424492, 13008382,
+3902515, 1343251, -5463199, 7558606, 2530273, -2266132, -3738232, 3432753, 7981123, -7368017,
+22102976, -5771363, 7461432, -6857452, 1980517, -2073396, -8613020, 21097416, -16635482, 22968412,
+-805306, -11729019, -17486422, 8748848, 3171833, 2698850, 1061931, 9212168, 6346351, 8328479,
+-18003430, -5676873, 514859, 36507, 4583804, -13877576, -6590628, -4726612, -2309082, -17322140,
+-3459596, -5974837, -19207630, -1289564, -10877542, 2541010, -5086315, 1190243, 2516851, 8155606,
+5021354, -3496104, -503048, -7353521, 3936338, -785979, 3420942, -8588861, 491237, -3624416,
+2043868, -7945690, 1540283, 1432372, 418222, -2014340, 2711735, -4806069, 3461207, -7323993,
+2718178, -5345087, 2483028, 996969, 3468186, -2939368, 8830453, 3120831, 163209, -5648419,
+-4344897, -1184874, 5903433, -1564442, -2848100, -3100430, 4051228, 3535295, 41260140, 13748190,
+-9190693, 21177946, 19744502, -10225243, -13001940, 31846646, -2854543, 6985765, -18902152, 46363636,
+1614908, -13018046, 6726993, 2289755, 22515292, 357556, 28435368, -20479478, 425202, -22369800,
+1705639, 15660525, 711891, -13725105, 19370302, 10320806, 5687611, 4622459, -6803228, -6586333,
+1736777, -9736154, 12665859, -11375758, -15127949, 13269301, 5012227, -17569638, 9468792, 1088237,
+-12773233, -7207492, -4301410, 6622840, -1554241, -7744900, 9295920, -11397233, -4547834, -3964792,
+15589658, -10362682, 7499013, 11930882, 5496485, -7203734, -14695767, 9174050, -12580496, 16810502,
+-21381958, 27996744, -8399882, -4060355, -4080219, 12683038, -1012539, 4526896, 7556995, 4486094,
+10776073, -10736881, -20310900, 1290638, 17072496, -11593190, -5535139, -12115029, -7299297, 3020973,
+-1299765, -3588445, 7312719, 5202279, 3806952, -2037425, 11202885, 6783901, -5389110, -2928631,
+2101850, 444529, 9456444, 5916318, -918049, -3289945, -2575907, 10301479, 824097, -5545340,
+6483253, 1808181, 122943, 5348845, 2353642, -1164473, -5807333, 1383516, 6719477, -5306432,
+-1443109, 7642895, -679679, -1827509, -2151779, 4419522, 716186, -84289, -2253247, -24482924,
+-3240016, 22750978, -6772090, -13877576, 6058052, -6412386, -1386738, 10423349, -24675124, -14199699,
+9305047, 12807056, 17027398, -1017370, -3409667, 7129646, -1819992, -24024436, -16750372, 28700582,
+-2320356, -24760486, -14650133, -9840307, -8411157, 2527052, 8231842, 663572, -4318053, -12248710,
+-19205484, 2778307, 2390149, -454193, 15440944, -10421738, -30037928, 12340515, 8655970, -34701188,
+20714090, -5430986, -17769890, -14311368, -1447404, 20092930, 4619774, -6361921, -7329362, 5896990,
+10316511, -14483167, 11130408, 2036888, 8167954, -6143951, -15420543, 13794898, -77846, 15444166,
+-47379932, 6233072, 7181186, -6764574, 13019656, 15481746, 44815836, 1500554, -29777546, -13449690,
+-7858717, -28605020, -28411746, 1698123, -16178068, 437550, -10782515, 10818486, -10968810, -10454487,
+18864034, 4884989, -733903, -812823, 11038603, -2121177, -1196685, 6674379, 5210332, -3861713,
+3538516, -9908490, -2308008, 3056406, -1985886, -2714956, -4952634, -4967667, -2730526, -6179921,
+2509872, -7916162, 1706713, -1178969, 7585986, -1569811, -4041564, -3159485, -4645544, -4687420,
+-1362578, -3206193, -6026913, -4191351, 4344897, -5692443, -3088082, -10363756, 3240553, 4494684,
+10918881, 2706903, -1427003, 589484, -20609400, 3279208, 12723304, 11319923, -18289582, 32553704,
+22706418, -10468983, 13582834, -26394722, -5847061, -8861054, 41643468, 26652956, -9907416, -15910169,
+-19428822, -4342749, 1113470, 7626252, 27941984, 5919002, 4757750, 6019934, 784368, -9234180,
+1137093, -1766305, 12885976, 17350058, 22040698, 14314589, 9358734, -2186138, -4049617, 3482145,
+19987168, 3142842, 3566970, -20314658, -10292889, 34264712, 13941464, 10294500, 284005, 20528334,
+11001022, 43269648, -2391760, 44613972, 3203509, -13845901, 14478335, -12052752, -8975945, -1575179,
+-8198019, 498753, 8323647, 17858474, 3146601, -3790846, -19505594, 6320581, 1663226, 12911745,
+-15285252, 4106526, -6721624, 2331630, -19451370, 9925669, -17106854, -2061584, -23302882, -32105418,
+-5298379, -4993973, 26521960, 7156490, -755377, 4986457, 8324184, 10341744, 1821066, -363462,
+506269, -18588618, 5983427, 299037, 17441326, -7012608, -756988, -4606353, 12428025, 2492692,
+11365557, -97174, -12985834, 6420439, -569083, 4369593, -9836012, -4465156, 2510945, 2785286,
+-7271917, 748935, 6916508, 4261682, -6371047, -7194070, 12895102, -12798466, 5499706, -3922916,
+-10311143, 3354906, 2559801, 3382287, 4525285, -4758824, -428423, 6158446, 680215, 4297115,
+-1614908, -4865124, -4792647, -10887742, -16693464, 5105643, -19147502, -10201, 23054848, 7271917,
+19644644, -22833120, -10597295, 11225434, 2243047, 32730872, -16683800, 19581830, -7463043, -9879499,
+-24442122, -9449465, -13171054, 16369194, 3754338, -21698712, 27143120, -14046154, -13161927, 2661806,
+10530186, -7934415, 18748606, -9111236, -13158706, -6723772, 6174016, -2283312, -3671660, 2054068,
+18684182, -12701829, 34262564, -13319230, -524523, 31832686, -6471442, 5613523, -43482784, 1939178,
+7675644, -9787157, 19061602, -34812856, -42681236, 16176457, -7645579, 23564874, -17674328, -16601122,
+1808181, -5457830, 36122284, -4403415, -1749662, 8072928, -33731600, 1919314, -34086472, -13615583,
+1865626, 8126615, -42533600, -18943490, -5304285, -2070711, 13643500, -18206904, 21635898, -8923868,
+2347737, -27884538, -1506460, -24636470, 9214852, 5334887, 18243410, 23374286, -8801999, 15330349,
+1980517, -5012764, 7742753, 4905390, -7618735, -7615514, -13568339, -478352, -8109972, -8373039,
+2811056, -1966021, 11522324, -15585899, -2812667, -9791989, 3774740, 5702106, -5514738, -703301,
+-8398809, -8265128, 9217537, 15308337, 17101486, 3563749, 1015223, -4590783, 3165928, 2882460,
+-6599218, -10314364, 3447248, -5410585, -7690676, 11677479, 8005282, 6842957, -10739029, -12244415,
+-26271242, 21422224, -18779744, -5392332, 17201344, 39302172, -11093901, 32214402, 11571716, 8318815,
+-14846091, 35689032, 5738613, 16661252, 1708860, -20908974, 7771207, -20995948, -20759188, 13083007,
+-20678656, -4468914, -4713190, 21163452, 1982664, -7072201, 7021735, 9429601, -4182761, -19912006,
+-4501663, 15359877, 37317896, 8581882, -20745766, 2324114, -3839701, 8924405, 11454678, 18850612,
+-8145943, 448287, 12371653, 2823941, -459562, 24857124, 22618372, 26732414, 9396315, 22461068,
+3251290, 13469554, -10391673, -1894081, 3160022, -20900384, 1753957, 35316980, -4311611, -7766912,
+7613367, -560493, 9678172, -21081846, 28024662, -17516488, -7630010, -4829154, 1600949, 3229279,
+3755412, -30660160, 38785164, -8432095, -12184822, -4640176, 32959042, -3802657, 6995428, -26006026,
+-17879412, 452582, 13813689, 12465069, 21133386, -33774012, -10383083, 32170378, -11419244, 3474092,
+27770722, 6484864, 6204081, -1891396, 1113470, -10638097, -658204, 2536715, 8039105, -4871030,
+6717329, -12266427, -6678674, 551366, -3281355, -2205466, -28149216, -22039624, 1942936, 14123463,
+-13215077, -22987738, -9203578, -18909130, 5405217, 679679, -7056095, 17848274, -5054103, 7196218,
+8368207, -9965935, -6790344, -1810329, 2332167, -904628, 13711683, -389768, 977105, -6769942,
+-1369558, -10551124, 63107564, -3704409, 12639552, -526670, -6502581, 1784022, -29207926, -12459700,
+-8989903, 11353209, 8086887, 14286135, 1620813, -15358266, 16084116, -13043816, 18545668, 13662828,
+-15034533, -16090558, 1899986, 22708566, -23295902, 9754408, 10714333, -13297219, 5908265, -1715839,
+8114267, -1030255, -33955476, 19039054, 11683922, -28597502, 34493420, -18287434, -4406100, -11319923,
+27843200, -5519033, -23704462, -39728, 350577, 23028540, 23406498, 1561221, -18059800, 26261578,
+-4240744, 4648765, -33300492, 26237956, 10696079, 1601486, -19100256, -14454176, -2024540, 9147743,
+-15343234, -27422830, -11668889, 21715354, 13460428, -3175592, 35228932, 2136209, -5688684, -25352656,
+31099322, -28827284, -9277666, 31766652, 10072772, 4161287, -11878269, 4980552, 31333398, 6999186,
+13778255, 19862614, -51099912, -11147051, -8423505, -4170413, -21138218, -3690988, -2423435, 31163208,
+8523899, 2181307, 15908559, 22297322, 15670188, -10917807, 6048925, 13387950, -2506650, 5242008,
+5869073, 7205345, 4733591, 22189412, 12101607, 1493575, -6269579, -9820443, -18956912, 2920041,
+193274, 5306969, 6457484, 3133716, 33421824, -4405026, 12216498, 7367480, -8842801, -26209502,
+-4055523, -9589588, -16210817, -17529910, 3286724, -2731599, -21150030, 272730, 8398809, -1901060,
+-1834488, 7693360, -5003637, -16127602, -25305410, 802622, -28329604, 26497800, 41407244, 19223736,
+23553064, -36156108, -32230508, -25332254, 2415919, 44800804, -8317741, 16643535, 29115046, 14665703,
+-16121160, 940061, 21246666, -27473832, -22971096, -19712290, 22262426, 15514496, -28816546, -40666360,
+55066848, 33957084, -39348344, 17758080, -4647692, 16265578, 1688996, -11926050, -27350352, 24890410,
+-727997, -20271708, -30350924, 7715909, 7023882, -7692824, 745177, -2841121, -15008763, -6606734,
+-7935489, 14021994, -26607322, 29251948, -20091320, 1045825, 46021112, -44488344, -10791642, 41929080,
+3004330, 9781251, -6288906, -13175886, 13115220, -4919348, -18554796, 2359011, -42246372, 71503688,
+-7087233, -78959216, 29817274, 77783472, 45880452, -96259880, -28030030, 18143552, 6914898, -14713484,
+-22223234, 11939472, 29365766, -36266704, -10026601, -63227288, -10925860, 21740050, 7931731, -19375134,
+-31634582, 12360379, 27683212, -667867, -8558259, -15228343, 22002580, 13011603, 8938364, -1935957,
+-6657736, 2540473, 12288975, 9475772, -2253784, -25393994, -15776489, 26249230, 11273752, -13657996,
+-9212705, 18806052, 6311992, -2729452, -38398620, -17692044, -19151260, 21461414, 5905043, 4620311,
+-3988951, 452582, 20963736, -4356708, -3725884, -18394808, 3629247, -6015102, 29271812, 6116034,
+-6548752, 3463354, 29552596, -3943854, -19952270, 4591857, 19639274, 45867028, -19213000, 14944876,
+-24252070, -64328408, 34746824, -16205985, -35156456, -24392730, -35939748, 17241072, 12030740, -48404820,
+31118648, -16879222, -1165547, -602906, -24783036, 19145890, 19148574, 16819628, -1529008, 22006876,
+11577084, -13372918, 1288490, -27612882, -9920301, -24501714, -16998944, -1223529, 39875012, -33261838,
+-7014219, -7189239, -29697014, 17437030, -33506650, 17379586, 15184857, -22832046, 18073222, -36688148,
+10628433, -31903554, 20782274, -11973295, -16746614, -17506286, -25875568, -7042136, 13188771, 22610318,
+-26262652, 17584670, 9982578, 27540940, 34029024, 19619948, -28075128, -13136694, -52896280, -13446469,
+-15277199, 17580374, -61750892, -11790222, -36678484, -3250217, 37033356, 33914136, 22448720, 7847442,
+49826988, 54377508, 48583060, -16714402, -21659520, 18355080, 47561932, 87650616, 6463926, 20468204,
+10823318, -4767414, 16341814, -15884400, 9689446, -4185446, -102542, -10266046, 16580184, 18954228,
+-6512244, -15817828, -11809013, 14336601, 6507949, 16267189, -8835285, 6255083, -3115462, -7334194,
+-4544076, 16151761, 32224066, 15247671, -16520055, 8375186, -5625871, 11400454, 5273683, 5588290,
+15827491, -10210211, -21001854, 1657857, 16378321, 12642773, 4506495, -3257733, -7149510, -29131690,
+28651190, 7871065, -6589017, -30285426, -6928856, -20841866, 10472204, -10135049, 7466264, 57370564,
+-33879240, 21373368, 26214332, -12205223, 2467459, 9884330, -3114925, 27758910, 1516124, 20060718,
+-25731686, -3781182, 22526030, 3565897, -34950832, 22541062, -13916231, -11539503, -13305809, -3615826,
+-12979391, 13141526, 18622442, 8896488, -3182034, -9890773, 16158741, -5394479, -25676926, 20924006,
+-43389908, -11089606, -8901857, -9692131, 24823300, 26980448, 48690972, -14419816, 20847234, -920197,
+9411884, 31751082, -2302103, 3262028, -21250962, -67168456, 33202782, 6243809, -32341104, -22322556,
+3287798, 17373680, -3074660, -19138374, 9859634, -19621022, 25617870, 14136885, -11158862, -23506356,
+46427524, 4955319, 2467996, -4410395, 6438693, 3126199, 2026151, -15763604, -32995012, 8968965,
+-4833986, -11898670, -30411590, -7637526, -905164, 26963804, 11180337, -34328064, 19913616, 3393024,
+-1308354, -3949759, 11101954, 14079977, -2834142, -6546604, -2438468, -6205154, 5243082, 8301098,
+-392453, 4691178, 9478993, -3669513, 13692893, 5667746, 4189204, 7042673, -3888019, 17009144,
+2873333, -3802657, 11184632, -13724031, 4334696, 7634305, -3243774, -5965173, 15436112, 22123914,
+-19987168, -3862249, -7067906, -7005629, 7931731, 6739878, -12575664, 6773701, 5531381, 4803921,
+5789616, -11421392, 7997229, -1029182, 4694936, -3716757, 3206193, 63839856, 32560148, 64239288,
+-59319404, 5129265, 30833570, -11959873, 35119948, 67781024, 37195492, 2161442, -18263812, -18833432,
+3513820, 29375966, 31457414, 7147363, -78920, -46780784, -9642202, 46133856, 15262703, -12868259,
+25479356, -21677236, -30323006, -8329552, -2024540, 35668628, 46585900, 41851236, 15857556, -16225313,
+-24941948, -46271832, -46010376, 40074728, 16806744, 3284039, 61892628, 3749507, -18951544, -25327960,
+-25733834, 12517682, 26443040, 21044802, 40598716, 2882997, 29212756, -1915555, -5250598, 14798847,
+27047556, 19786378, 17188996, -15428059, -5844377, -12168716, -27435178, -21980568, -39983460, -13383118,
+10719701, -6564321, 29088740, 34969088, -569620, 331786, -14317273, -25561498, 5273683, 33790120,
+-1946694, 18702972, 8203388, -2452963, -10584947, -4866735, 3092913, 11798812, 9199283, -9029095,
+-18913962, -23381266, -21939766, -8500277, 8915815, -2281702, -13786308, -7052873, -9564892, -8085813,
+4529580, -1219234, 12958453, 18538690, 4167729, -22535156, -11579769, -13498545, -3058017, 15210627,
+3679713, 3745212, -18423262, -17454210, -19886236, -10210748, 17382270, 11839614, 15007689, 8062191,
+-7240241, -8974871, 6381248, 5761699, -1534377, 3908420, -7587597, -6115497, 4542465, 3183108,
+6285148, -3657702, -7537131, -3480534, -5768678, -1090385, -33910916, -66134444, 26095148, 107843408,
+109653200, 92815320, 67252744, -41511932, -47341276, -51159504, -68038184, -104120208, -83875880, -72855528,
+33817500, 78255912, 58200564, 125858112, 97275640, 50713900, -18721762, -33934536, -84619984, -66070556,
+-65416648, -13388487, -40088152, -32566052, 9695889, 17690970, 35639640, 35762584, 49079128, 48673792,
+62807992, 36617280, 16100759, -9165460, -10624138, -27668180, -41843720, -50535660, -61763240, -40470940,
+-75856104, -50557672, -37941740, 37927784, 71951440, 77581072, 53672060, 36550172, 57283052, 43812424,
+54974508, 43184824, 15129022, -20452634, -96331288, -68146632, -69452304, -107778984, -67620504, -58540404,
+-56804164, 20594906, 57084948, 90651728, 74645992, 106577464, 95655368, 93523448, 66672388, -36457828,
+-32996086, -74947176, -99089192, -109189880, -89558120, -43022688, -12247099, -22676890, 29482266, 78036336,
+55006720, 37131604, 62583044, 52578452, 18759344, -12465069, -12555800, -4138738, -15393163, -42106248,
+-26477400, -30112016, -16299401, -13556527, -31383326, -11688753, 10714870, -10591389, 34605088, 45687176,
+50202264, 53104048, 3228742, 15780247, 15439334, -4645007, -72967736, -58252640, -45535780, -40685152,
+-32058172, -30416958, 33442226, 49999324, 54350664, 52010980, 42861628, 29352880, 26404386, -529355,
+-7988639, -42276972, -57024280, -51077900, -42633456, -27248346, -17794586, 1903207, 25476672, 51852068,
+38766376, 24608016, 17751100, 4735739, -548682, -166430, -10603201, -13758928, -11458436, -13467407,
+2892124, -5226975, -18506478, 2125472, 8365523, -3543885, -4925254, -4093104, 1682017, 3077344,
+-4189204, 799938, 4656282, 1343251, 504659, 18254, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-3324305,
-3346317, 2889976, 6421513, -8774618, 1864016, 5806796, 10568304, -1130650, 5942088, -237834,
-5392332, 1321776, 8284992, -155693, -2724620, 5610838, 7937637, 7559680, 4425427, 1229971,
--3105261, -2411624, 716186, 3863860, -1990181, 1802813, 441308, 4391067, -2152852, -108985,
-1056562, -5212480, -3074123, -1523103, -5494337, 1320703, -1579474, -31675, -782221, -4527433,
-3495567, 5431523, -1161789, 450972, 455803, -848793, 5704254, -6957310, -66035, 2902861,
-727460, 938450, -1722282, -5759015, -1524177, 2264522, 2608119, 2971581, -574989, 120259,
--12885, 1189706, -1033477, 6068252, 115964, -512712, -4019016, 556198, -2894808, -2169495,
-2330557, 2620467, 6179384, 241055, 6074158, 717796, 605590, 433792, -3300146, 221728,
--1212791, -1626719, 602369, 1984275, -1300301, 814433, -1343788, 1580011, -1688996, -482110,
--898722, 923955, -583579, 864362, -791348, 1014686, 1678795, 892279, -917512, -205622,
--504122, -401579, 432181, 395674, 6939594, 11257109, 1504312, 5604396, -2035815, 3329137,
-4342749, -1335735, -3485903, 5902896, 10177462, -1995549, 1127966, 3939022, -4875862, 3034931,
-4343823, -8898635, 2501282, 870268, -2004139, 2147, -9269076, 378494, 2594160, -4404489,
-813359, 156766, 5934571, 4241817, -2230699, -632971, -565862, -6308233, -4244502, 695248,
-2546916, 571768, 2829847, -4167192, 627602, 2083059, 428423, -3857954, -2827699, -854162,
-1341104, 3123515, 3227668, 2155537, 3768297, 3691525, -4144107, -1266479, 165893, 5246840,
--800475, 3765076, -2477659, -2560874, -795106, -4712653, -2177549, 967441, 2748779, -4022237,
-3936338, -1112933, -1177895, -784905, -1597191, -2033667, 812286, 3064459, 1140314, 5114769,
--7095823, -5717675, -1261647, 2120640, -77846, -1165010, 1082332, 160524, 1313186, 2159295,
-3612604, 66035, -215285, 857383, -337692, -51003, 555125, -1649804, -889058, -3424163,
-1351304, 6541772, 9217000, 5365488, -2332704, 3974455, -2429878, -1613297, -7904888, -6270653,
-2834142, 6054830, 5900748, 6172405, 1364189, 344134, 3806415, -5076652, 5108864, 4157528,
-373125, 3572876, 9138080, 6234145, 1734630, -6562173, 181999, 2221035, 1409286, 1095754,
--7211250, 1735704, 1316408, 4831302, 5311801, -1661079, 3408057, -2580202, -2885144, 3884798,
-2188823, -6884296, -6534256, -2848637, -3675955, -2719251, -2922188, -7955353, -7217693, -643708,
-2592013, -37581, -770947, -5358509, 704912, 6378027, -1797981, -2004676, 2389076, -5369,
-4596689, 2323041, 2343442, -2965138, -3679713, 6847252, 3118683, -2731599, 4495220, -593779,
-3501472, -2965138, 541703, 5055714, -1930051, -1631014, 3628711, 451508, 1437740, 2172717,
--2525441, 2837363, -1194001, 2325188, 2323577, 1811939, -1625645, 594853, -817654, -1366337,
--1768990, 101469, 193274, 1144609, 963146, 268435, -106837, 898722, 261993, 625992,
--12756590, -7500624, -2357400, 2422362, -5263483, 1607928, -1446867, 3673808, -899796, -7135015,
--5687074, 4942971, 4032974, 10218801, 9011915, -1368484, 6517076, -9818832, -1608465, 7635915,
-2289755, 1772211, -1017370, -3207804, -1507534, 1056025, -887985, -298500, 3852049, -4816269,
-1061931, 1748589, -128312, 3038153, -3322694, -2714956, 1735704, -2112587, 2704219, -5385889,
-878858, -3237332, -1286343, -3605625, -2710124, -4095788, -6081674, 3713536, -54761, 6334540,
--5945846, -5083631, -58519, 1207423, -713501, -1226750, 401579, 3811247, 1811403, 813359,
--2626909, -2526515, -1446330, -4746476, 733903, -1238024, 535797, -234613, -5119064, -440234,
--425202, -5412196, 127775, -1031866, 605590, -924492, -6034966, 528818, 2679523, -1209570,
-3949223, 1083406, -2148558, 1657857, 4144107, 1355599, 694711, 926639, -908386, 500901,
-3235721, -272730, -543313, 1182190, 1313723, 499290, 1053878, 212601, 426276, -2201708,
-214748, -194884, -1097364, -806380, -816044, -1134945, 141734, -936840, 4430796, -6810745,
-2770254, -7617125, -1333587, 414464, -5653788, 5357435, 4054986, -11330124, -1152662, 1947231,
--1053341, -4938139, -6669548, 1409286, -3359201, -5513665, -2740189, 3321084, 2911988, 8093866,
-10481331, -880468, 9365176, -5717139, 3679176, 4112968, -840740, 4051228, -2314451, 117038,
--621160, -1901060, -1013075, -2132451, 7795903, -409096, -5833103, -1362042, 3896609, 2458869,
-3112241, 651761, -2736431, 5733245, 11608223, 752156, 1154809, 708133, -883690, 1867237,
--800475, 6668474, -5099737, 6379100, 4383551, -4013110, 2048163, 4161823, 2810519, -4816269,
--5264556, -10335302, -1717987, -958315, 1289027, 4023311, -1000191, 2625836, -907312, -2734284,
--2769717, 5365488, -1248225, 5689221, -8398272, -3287798, 1895154, -5293547, 1350767, 5720360,
-512175, -27917, 389231, 1229971, 753767, -3204046, -1060857, -512712, 436476, -560493,
-1014686, 1474248, 721555, -921807, -2195802, 2375654, 877784, 929860, 582505, 695785,
-134755, 67646, -1082332, 993748, 425739, 391916, 130997, 1042066, 652835, 1247151,
--1485522, -874563, -1737314, -1570884, -464393, 1247151, -1035087, 117038, 3010235, 1332514,
-153008, 4044786, 11738682, 13835700, -3592203, -321586, 2917357, -2094870, 8964134, 8744017,
--5505611, 8571144, 6741488, 2592550, 3910568, 3490198, 1788317, -757525, 625992, 1145683,
--4729833, -5796059, 1520418, -1627793, -70867, 993211, -5116380, 5155035, 10367514, -332860,
--6220187, 10126996, 1232119, 300111, 3978750, -1792075, -3041374, 1462436, -3814468, 1508070,
-10349261, 4420595, -78920, 3685082, 5622649, 14593225, -2393908, 6286222, -1259499, -6371047,
-4168803, 358093, -2119030, 2851858, 8950712, 2275796, 1584306, -156766, 3579318, 12905840,
-5790153, 1588064, 1302986, 3374234, -3739306, 6584722, -1716913, -12834436, 1549410, -1408749,
-7701950, 9046275, 3919158, -3923453, -3541201, -3354370, -468688, 2783139, 252329, 1868311,
-1290638, 1958505, 5777805, 2456721, -4610648, -2046552, 620086, 1547262, 277562, -171799,
-154082, -2581275, 2648921, 567473, 520228, 226023, 518617, 180389, 1974074, -882616,
-1431298, -1526861, -455803, -2371359, 434865, -958315, -155156, 773094, -15583752, -1796907,
--6591164, -7866233, -2035815, -5622112, 304406, 4756677, -7298223, 7558069, -16190416, 2263448,
--4765266, -8690866, -11567958, 12070469, 6088116, 735513, -10245108, -6771553, 3881577, -13401909,
--9298067, 3125663, 2878165, 13521631, -1719061, 1085016, 10094247, -6023692, 9916543, 3343095,
-3661460, -1968706, -5902896, -739808, 8266202, -4478041, 744103, 10284299, -3724811, -3085934,
--4952098, -6174016, -5257577, -4015258, -8294119, -1058173, 2551748, -2893734, 1880659, -2768107,
--4221953, 5769215, -7399155, 4493073, -6282464, -8010114, 433255, 6534793, 474594, -2005213,
-2652142, -5350456, -2636573, -7483981, -13248363, -6306086, 1938641, -4053376, 15234249, 6019934,
--10553272, -5363878, -1525250, -3841312, 4924180, 10280541, 6813966, -5000416, 4813048, -5925445,
-3604551, 521839, 4825396, -5245229, -1192927, 456340, -2256469, -4472135, -3688840, 690416,
--195958, -1040993, 2393908, 899259, 414464, -1475858, 1452773, -286152, -1098975, -3243237,
--22012, -1660542, 336081, 1459215, -1018444, -3599183, -367220, -1517197, 16913044, 11003169,
-11574400, -3393024, -16451872, -1330903, -8431558, 2089502, 3640522, 8825084, -4163434, 3855270,
--6772090, 1127966, -5974837, -15316390, -8260296, 5823439, -5594195, -12142946, -11408507, -10619307,
--16559783, 2032056, -5810017, -12619688, -11347304, 1962800, 15914464, -2156074, -2673080, -5352603,
--9673877, 1967632, -3858491, 1031866, -12064026, 743566, -12565464, 1726577, -1033477, 6719477,
-5214627, 5588826, 2874944, -500901, 4651450, -3105798, 9160628, 2554432, 4633733, 2759517,
--3005940, 3241090, 9232569, -1230508, 5155572, -1335735, 14525043, 1847910, 5456219, 687732,
--8148090, -6256157, 286689, -2909840, 1879048, -2129767, 4816269, 4272419, 5599027, -2593624,
-3195993, -11165841, 5936719, 16276852, -7852811, -1672890, 4338991, -9401147, -633508, 5854578,
--3674345, -598074, -1938104, 5092221, -5228049, -1261647, 1433982, -2938831, 1434519, -1026497,
-2171106, -2718714, -2687039, 3000572, -1338956, -2984466, 2123861, -1182190, 83752, -4211216,
-3235721, 1072668, -675921, -700080, 1854352, 649077, 1799054, 1293322, 341450, -1802813,
--3153580, -927176, -8148090, -23716272, -3899294, -8296803, -12445205, 6684043, -23773718, -3117073,
--8443369, -4640712, 6891812, -7607461, 10084583, 8645769, 1402307, 7792682, 712428, 4103841,
--6184216, -10980084, -12034498, -6777459, -11027865, 8575976, 11299522, -520228, -5927055, 3221762,
-3269544, -4190278, 846109, -18855980, -9936944, 8715026, -4782446, 216896, 8603356, -853625,
-5327907, 4507568, -2435247, 5163088, -47245, -10071161, 11183021, -7891466, 551903, 577136,
--6149320, 4065187, 6672769, -3966939, 7621957, 817118, -580894, -6994354, 8608725, -85899,
--6951405, -2343979, -13938779, -5889474, -7952669, -1044214, 9605694, 2733747, -900333, 124554,
--9016747, 1996623, 6956237, -9141838, 535797, 13914083, -5729487, 1336272, 1069447, -9947144,
--5952825, 6313602, 5326833, -16164646, 3263102, 12036109, -47782, 1410897, 84289, 2879776,
--908386, 7588671, -1731409, -343061, 988379, 1436667, -3441880, 850404, 2696166, 802085,
-4540318, 1639067, -83215, -1686312, -3551938, -1053878, 1708323, -2230699, 1616518, -2286533,
--50466, 3115462, 1699733, -2231236, -2983392, 136902, 118112, 6656126, -2676302, 528818,
-3671123, 1459752, 3586835, 42191612, 9388799, -5535139, -8465381, -829466, -2677375, 7467875,
--1666984, 6309844, 11965242, -4841502, 601832, -7935489, -5422396, 2527588, -1306744, 6130529,
--11828877, -6953015, 5583458, 11833172, 7826504, -391379, 2808909, -2930242, -7123204, 5123359,
-9266929, 9690520, 11727945, -9741523, -2300492, -5601174, -12046310, -1553168, 626528, -2671470,
-5538361, 7273527, -15569, 3572876, -2160369, -12834436, -6964827, -17154636, -17370458, -5106179,
-5822902, -2576444, -7691213, 14524506, 5511517, -630823, -13650480, -662499, -4200478, -9804873,
-128849, -4507568, -6320045, -13563507, -1725503, -5036386, -14859513, -44560, 11385958, -7684770,
--3613678, 4159676, -6382859, 2502355, -6323266, 9222369, -2950106, -8995809, -13881871, -22871238,
-4530654, 3815542, 17471390, 6980933, 6069863, -127238, 5326833, -4150012, 5645198, -561567,
-2014340, 2750390, 6694244, 3004330, 310311, -1262184, -287226, 2593624, 1693291, 6873559,
-5476620, 3587372, 1232656, -1452236, -3602404, 1952600, 4542465, 357019, 345208, -885837,
--3173444, -601832, -415538, -1595044, -1085553, -2541547, 2151242, 3008625, -2787434, -2956548,
--87510, -425202, 1678795, 9491878, -33430952, -19048716, 17723182, -4604742, 1139777, -9182640,
-7733089, -3167539, -12898324, 6202470, 17916992, 2303713, -15675020, 4428648, -3411815, -3580392,
-10317048, 10704132, -1440962, -2169495, 22561464, 5048734, -3241090, -13856638, 6142877, -19876034,
--16361678, -15073725, 6123013, -2844342, -1613297, 12970264, 5173825, -13156022, -10997801, 2873870,
-12805982, 4392678, -1457068, 737661, 8540006, -6157910, -13899588, 18154290, -5327370, 1893007,
-7331509, 1141388, 2519535, 18669150, 329639, 11895449, 542777, -12495670, 1815697, 2679523,
--2586107, 2391760, 8497593, -6316287, -1915019, 2177549, -24712704, 6562173, 5058398, -138513,
-5935108, 4625680, -9168145, 4349728, 33949568, 14594299, 8389145, 2462090, 8246874, -26099980,
--12371116, 13208098, 529355, -121870, -10014253, 8825621, 10684268, 8944806, 1490891, 1873143,
--3584687, 141197, -6211060, -2259690, 4900558, -1109712, -3133716, 2543695, 197032, 2440078,
--3624953, -1541356, 1210644, -667867, 2468533, -4340065, -1504849, 3074123, -3465502, 2483028,
-894964, 308164, 83752, 15032, -2814814, 1383516, 2571612, -1316408, -1319629, -3020973,
-1297617, -205085, -22415972, 15753940, 16830366, 5448703, 9277666, -6209449, 26872536, -3142306,
-10241350, 7035157, -12416750, -5064840, -5738077, 15647103, -9306120, -2866891, 9826348, 8304856,
--9147207, -2449205, -26415660, 4966056, -2944200, -7720204, 2268817, 746251, 1932198, 2459943,
-8921184, 398358, 9773735, 1198833, 4755066, -2495376, -8523363, -9035537, 17041356, -6042482,
--12371116, -10364293, -4732517, -5686537, 7383049, 4626754, 5681705, 7579544, 2244121, -9314710,
-5339718, -15212237, -5009006, -13288092, 9148280, -16045998, -11560978, -3378529, -5435281, 4838281,
-10798622, -8562017, 10193568, 16848082, 8329552, 16231218, -6812892, 21776558, 1970853, 18454400,
-10427644, 2327872, -9839233, -24668682, -16704202, -13536126, -7722351, -7572564, -2434710, -11469173,
-8658654, 14479945, -5568425, -11042361, -10111964, -7960722, -15040439, 9499931, 6838662, -3962107,
--3882114, -5805722, 765041, -3275986, 8095477, 53150, 2072322, -4288525, -3710852, -6059125,
--1125281, -7263864, -7006703, 7209103, -507880, 906238, 177167, 2661269, -2865280, -242666,
--4304094, 172872, 25233, -160524, 2216203, 262530, -3522410, -2287070, -2527588, 734439,
--3784940, -4095788, -5204964, 1433982, 12482249, 6362994, -7102266, 21017422, 2376728, -20511690,
-25618406, 1719598, -10910291, 9044127, -21038360, -4024921, -13393856, -4179540, -2369748, -4107063,
--9572945, 2687039, -18175228, -7027104, -6550899, -24526410, 2984466, -17785460, -12640626, -19953882,
-4010426, -15053860, -4540318, -4984310, 169651, 7597261, -6113886, 10692858, 560493, 14187351,
--3294777, 12341052, 15551540, -18648212, -270046, 5011153, 11419781, 452582, 13729937, 4602058,
-13239237, -270046, -10096931, -6347425, -960999, 8568997, -1959042, -3929895, -847182, 15862925,
-10022306, -3761318, -13054553, 4388383, 7191923, 5113159, 14071923, -18821084, -13915694, -3970697,
-1341104, -5293011, 165893, -5397164, -11758547, 33042794, -16301548, -18927384, 14150843, 8150238,
-12295954, 3776887, 4531728, 2549600, 7196755, -6776922, 18992882, -3310346, 4672388, -3660386,
-2558727, 1146756, -1021129, 12105902, 1534377, 1066763, -11907797, 5408975, 1803886, -1743220,
--9693741, -987306, -1989107, 264141, -3073049, 8723079, 2036351, 2443300, -6999723, 4802311,
--3315715, 983548, 4223564, -167504, -2055679, -2247342, -6226092, 3640522, 6405944, -3031173,
--686658, -2247879, 969589, -3617436, -8388071, -2535105, -263604, -5751498, 5989869, -510027,
--794032, 2026688, -5635534, -6391448, 2623688, -4400731, -5602785, 16653736, 12264279, 19691888,
--6556268, -4876399, -27045410, 31403190, 14394046, -41827612, -22386444, 13401372, 18618146, 18728742,
--12031277, -9767293, 22662394, 5373541, 5201206, 15709917, 12700218, -23130010, 7087233, 9743670,
--1731946, 10911901, 2099165, -2975339, 2261837, -7534983, 38612292, 10104984, 5029944, -1067299,
--4774930, -2602213, -21901648, 4192425, 6437082, -5164698, -7180649, -35464080, -16939352, 7412577,
-6182606, -11646341, -11381663, -1617592, -16879758, 6971269, 6267431, -2469606, 7051263, 13966697,
-702764, -742493, -4477504, -7487739, -2441152, 1238024, -26132192, -3496640, 6140193, 15916612,
--28283434, 6264747, 10139881, -2244657, -13314935, -12041478, 21358872, 21089900, -3087008, -13200582,
--25006374, 5244692, 10030896, 5228586, 417149, -27287000, 11503533, 24794310, -8400956, 2778844,
-7798050, -10235444, -16289200, -8638790, 2486249, -5080947, -1293322, -7707856, -6616934, -5638755,
--2376728, -2239826, 3317862, -628676, -496606, -7030325, 2886218, -3322157, 1504849, 16106,
-2263448, 4203163, 4944044, -7854422, 3140695, -6080600, -10166188, -5383742, 1460289, -1072668,
-4443681, -1032403, 2894271, 5956046, 301721, -325881, -5270462, -2991982, 7950522, 3981972,
--3326452, -2085744, 12441983, -9162776, 3395172, -7635915, -6732898, 1169305, 8434779, 16833588,
--31005906, -40464496, -28118078, -36200668, 31436476, -20968568, 12662100, -3545496, -25420838, 4548907,
--6891812, -9450539, -33003602, -30245160, -22572738, -8619462, 1193464, -17500382, -5052492, 4622996,
-14236206, 1127429, -8825621, 35970, -9438191, 13643500, -17140140, 23721104, 20461224, -4887673,
--6480569, -28125594, -16380468, -17103096, 2084133, 3784940, -4557497, 22990960, 6577743, 18638548,
-3702262, -2190433, -8424578, 16770774, 11608223, 5269925, -16804596, 9026948, -28439126, -3167539,
--2989297, -18888730, -3076270, 249108, 21809308, 14443438, 452582, 10088878, -360777, -21446920,
-10976326, 3056943, 17947594, -10116795, -20614770, 12345883, -37077916, -8491687, 13182328, -5548024,
--5865852, 9119826, -2374580, -7291781, 6921877, -3066607, -23772644, -20914344, -3417183, 9836549,
-15895674, 22328998, 22383222, -9431211, -7541963, 4436165, 8149164, 7345468, 3105261, -9880572,
-8781061, 213138, -1788854, 1176821, 5470178, 9111236, -2585034, 1585917, 8628052, -1926830,
--105764, -8580808, 4385699, -1818919, -529355, 7195681, -1323387, -3112241, 3274376, -9751723,
--3557844, 10072235, 2942590, 3323768, -3449933, -2244121, -1391033, -7745974, -944356, -4272419,
-6039261, -16936666, -40449464, -3780645, -25750476, 1571958, -18962818, 17254494, -13540958, -1455457,
-3408057, 6429566, 20827908, 6963753, -9412958, 22462678, 7016903, -38289096, 6332930, -22985054,
--1603097, 4346507, -3174518, 18862960, -5566815, 3404835, 4816806, 1634772, -12236899, 19142132,
--11063836, -1087701, -22388054, -53150, 3842922, -3584150, -7850127, -10327786, -11676942, 29027000,
-1204738, 15008763, -25846040, 2876018, -284542, 8838506, 15491410, -17853642, 31659814, 45471356,
--2039573, 4333622, -15854335, 7221988, 10635413, -8864276, 2307471, 8498130, 17706540, -657130,
-1077500, -5564667, -15335181, -23180476, 11798812, -17411798, -7284265, -11443403, 5046050, 15444702,
-13977971, -2872260, 5268315, -31452046, 20735028, -3979287, 4534412, -9330280, 20257750, -28254980,
-33574296, 24274082, 27975270, -11441793, -649614, -27713814, -14928769, -10410464, 9074192, 7492571,
--22807350, -16913044, 645319, -6002754, -16642461, -257698, -11519639, -13892609, -5119064, -2274722,
-1051730, -9273908, 1612223, 2807298, 13817984, 12122545, -1932735, 11406359, -5755793, -14835891,
--8075076, -3401614, -7361037, -1411971, -5477694, 7943005, 2476049, 31513786, 4188667, -11283953,
--3785477, 2517388, -16654809, -10732586, 3936875, 307090, -4334696, 1289564, -14496, -18547816,
--1931662, 11759620, -8990977, 50797116, 14543296, 36935108, 11821897, -38556460, 15507516, 10678899,
--12800076, 2581275, 24916180, 1061394, 23849416, 21053392, -24706262, 13572097, -24716464, -16770774,
--2314987, 49706192, 15328201, -22518514, 21242372, 13600014, -27356794, -12149389, -1838783, 27788438,
-4149475, -25546466, -14297409, -863288, -6942278, 15394773, 22345642, -8135742, 19659676, -12709345,
--17064978, -661425, 40460740, 3688840, -23167054, 13131326, -1046898, -2382096, 11358578, -26417270,
--22718766, -21690658, 15887621, -14231911, 5157719, 6665789, 24215026, 11879343, 24893630, 2570538,
--1021129, 20182588, 37248104, 22028350, -36734320, 685047, 3634079, -6311455, 7157026, 10125385,
--28351080, -4365835, 5690832, 4837744, -33776696, -32161252, -17918066, -19577534, 33670396, 12338904,
-1630477, 14731201, -27341762, 11220602, 7667591, 4912369, -2346663, -6378564, 23295366, 13844290,
--9205189, 3856344, -6919193, 15037217, -4283693, 942208, 3273302, 2120640, 11389180, -1921998,
--18252000, -909459, 3539590, 4670240, 9540196, -2709588, 949188, 6908992, -14116484, -8591545,
--1210644, -26045756, -3855270, 6995428, -1798518, 2619930, 14930917, -2307471, -10205379, 2007897,
-3716757, 9413495, 11613055, -11294690, -6705518, -964757, -9278203, -6369974, -17904108, -21727702,
-6105296, 82678, -9534827, -8381629, -9730248, -19330574, 14476187, -38626788, 27954332, 31219044,
-8655433, 33997352, -34842924, -17059074, -9424232, -50085224, 28221156, 2811593, 17473538, 22952842,
-22468584, 1716913, -696322, 22816476, -3604015, -27134530, -28142236, 17022030, -31798328, 31022548,
--8899172, 6783901, 30764850, 27713814, -13948980, 42212548, -24475944, 2710661, -25450902, 4090420,
--8693014, 16601659, 5659693, -18090940, 16212428, 24601572, 36191004, -20950314, 7748121, 22181358,
--30511984, 1374926, -12258374, -44168368, -18981608, 11747272, -24233816, 8597451, -20343650, -528818,
-29726006, -14143327, 12595528, 34203508, 24461450, 9121974, 45536316, -70967352, -13362717, 23635206,
--2729989, 13754096, -21962316, -38376068, 46562276, -717796, -23455890, 9998684, 29465624, 73065448,
-27689118, -55350316, -30186104, 18786186, 20447266, 8812199, -38626788, -3425237, 8465917, -11996381,
-26074746, 9269613, 16641925, 19753628, 14859513, -10208064, 11471321, -30752502, 4404489, 16320876,
--1989107, -16358457, 9491878, -10022306, 16251619, 17901424, -7722888, -15073725, -4064650, 33111514,
--5975374, -4000762, -13048648, 14905147, -12960064, -8087961, 9558987, -6328098, 31243740, -2524367,
--7798050, 31323196, -2864743, 7196218, 19217294, -1628866, -1703491, 1674500, 2803540, -14984067,
-6666326, 620086, -21532818, 14392972, -6725382, 27464168, -15079093, 8664560, 2580739, 37442988,
--32917704, -2981244, -15734613, -19508278, 30005178, -11678553, 39397200, -3911105, -30403000, 47262356,
-68317896, -9756018, -21829172, -33013802, 7836705, 36290864, 7128035, -7660074, -22656490, 5366025,
-5332202, -5029407, 5580773, -3249143, -11147588, -11377368, 10439455, 14894410, -1171989, 20138028,
--19471234, 41326712, 31128850, 17928268, -1538672, 2418067, 5855114, -21929030, -19192062, -21261162,
--11191074, -5862094, 13209172, 11586748, 22399866, -10894721, -2721399, -9664750, 25485262, 49776524,
--11815455, -32129040, -20691004, -1378685, -43453256, 33669324, -59005872, 16925930, 24930674, 25577068,
--25752624, 5902896, 25959856, -59794536, -28281822, 12147778, -6379100, -30027726, -26471494, -3541201,
--13903346, 44267692, 18973554, -16394964, -15033996, -24790014, 67938864, 14469745, 35458176, -2707440,
-10303090, 12692165, 15174119, -22420266, -2927557, 28063854, 19388020, 11457899, -9416179, -12322798,
--83752, 8593693, 12937515, 8612483, -17641042, 2266669, 86436, 4293894, 12542378, 12414066,
--18478024, 8276402, -11432666, -14186814, 1345935, 14058502, 5723581, -8988830, 1854889, -1597728,
--2753074, -7771744, 27026618, -8442295, -62814, -16681116, 3672734, -6467147, 17758080, 5313412,
--3992709, -10077604, 10020159, 7922067, -12671227, 312459, -20527260, -8594766, 4628364, 7771207,
-11290932, -758599, -25681220, 7734699, 39410084, 1304060, -13455059, 33083596, 23506892, -6737193,
--21288006, -31996432, 6028524, 63225676, 13766981, 32468342, -2951180, 2930778, -2666638, -7316477,
--118112, 3002182, 15167140, 5157719, -12389370, 10612327, -10864120, -11700565, -13492640, 440771,
-12524662, 2856690, 9980430, 10976863, 8627516, -8766028, -15822123, 5078799, -11018739, -27027156,
--8211441, 6272800, -9647033, 31826782, -32912872, 26757110, -8640937, 317291, 39217884, -6064494,
--1286880, 51604568, -8122320, -20834350, 3562675, -17834852, -4304094, -16831976, 57111252, -16100222,
-13591424, -13657996, -6426345, -7738994, 9270150, -14310294, -35415228, 15640660, -4301410, -38873212,
-20132122, -10094784, 21430276, 49104896, -24826522, -401043, -2806224, -7118909, -26699128, -4475356,
-23887534, 9840307, 14540075, -22091164, 6294275, 4093641, -21790516, -5698885, 4476967, 11206107,
-13475997, 1294933, 2320356, 9160628, -2469069, -10526428, 15226196, -5972152, -5038534, 14313515,
-1584306, -3736085, 20746302, -1241246, -1937030, 344134, 6540699, -6160057, 10295037, -8046085,
--4464619, -6322729, 5185100, -6979, -1130650, 3228742, 9426916, -11468100, 2163053, -1395864,
-6658273, 2258616, -2609730, 12181064, -7688529, 6649683, -2441152, 3722126, 459562, 9160628,
--13980119, 40265, 65739308, 33405182, 68971272, -38569880, -10020696, 22825604, -21573084, 16539919,
-70950176, 16891570, 10260677, -18645526, -17644800, 20414516, -10750840, 28834262, -4720169, -6471979,
--8341900, -40686764, 9823127, 49148920, -25905632, 29765198, 25873420, -16495359, -4999342, 20518132,
--32588064, 16372952, -2304787, 24693914, 8329016, -20277614, -6564858, -40904732, -21032454, 19338628,
-14471892, 31982474, 49737868, 5417028, 793495, -42960948, -26312044, -25612500, -21176874, 11380590,
--17568564, -4925254, -4034048, 12998182, -32895154, -5214091, 17035988, 8889509, 27123256, -3536906,
--12991739, 27073326, -4890357, 16629040, -20780662, -12451647, -3220152, -6851547, 13226889, 19717122,
-27740656, 7923141, 2277943, -19082002, -5405753, -9756555, 23224498, 333934, 34809636, 6128382,
-26214332, -25442312, -9165460, -111669, -646393, 19059454, -3044595, -9381282, -5163625, 4725001,
-1289027, 4995584, 8752070, 7907035, -4857608, -5631239, 326418, -3313031, 7368554, 7954280,
-1814087, -6578816, 245887, -8642011, -3682935, -1868848, 14921790, 5395016, -2004139, 3926137,
--10071698, -11809013, -8062191, 3770445, 8157217, -7031935, -759672, 138513, 6062347, 3417720,
--1004486, 6538551, 953483, -329639, -6519761, 3097745, 1813550, -2632815, -18079664, -67524936,
-1752347, 108659992, 97988608, 92165168, 39050916, -39142184, -54268524, -53801444, -48118668, -88320096,
--63079648, -61475476, 47531328, 73056856, 59576028, 95081984, 79076792, 16786880, -3704946, -34017752,
--66315904, -39555040, -69683160, -37821484, -23352810, 384400, -9350681, 17483738, 29851634, 50814832,
-31916976, 53389664, 40582608, 42422464, 3244311, -34907348, -15963857, 1229434, -38211788, -50378892,
--65593816, -64403572, -45761264, -6416681, 31907848, 12654047, 46452220, 32930588, 52988084, 47267188,
-51376936, 59711320, 32040456, -4565014, -9720585, -38954280, -31981400, -105214352, -84272088, -67448704,
--52822728, 6162741, -23112292, 1515050, 71785008, 88787712, 121346248, 76819784, 46072116, 31439160,
-7233262, -46508052, -42750492, -64845952, -83967144, -71009232, -66367984, -31074088, 4648765, 33590404,
-55068460, 54523000, 46261092, 29273960, 31002684, 13387950, 8255464, -1484448, -25905096, -22432614,
--20644298, -22826678, -12303471, -25514254, -18409840, 6337224, 2033130, -14825690, 7912941, 21053930,
-11791833, 24020142, 37248640, 38939784, 17005386, -24040006, -10578504, -3348464, -49256832, -51750060,
--45331232, -18820010, 13822279, 22193706, 18297098, 31113816, 34957276, 43404404, 28573880, 17772038,
--6861747, -29052770, -29781840, -32909114, -44574244, -31455266, -17709760, 15184857, 23820426, 15628312,
-9210020, 28147068, 18712636, 11580306, 2381559, -4144107, -9283572, 970663, -11103027, -12775917,
--5059472, 4378719, -7834021, -5544803, 814970, 5854578, 321586, -2796561, -4303021, 4425964,
--463320, -1953673, -4393752, 1906429, 1319629, 2702071, -1252520, 1613297, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+3346317, 2889976, 6421513, -8774618, 1864016, 5806796, 10568304, -1130650, 5942088, -237834,
+5392332, 1321776, 8284992, -155693, -2724620, 5610838, 7937637, 7559680, 4425427, 1229971,
+-3105261, -2411624, 716186, 3863860, -1990181, 1802813, 441308, 4391067, -2152852, -108985,
+1056562, -5212480, -3074123, -1523103, -5494337, 1320703, -1579474, -31675, -782221, -4527433,
+3495567, 5431523, -1161789, 450972, 455803, -848793, 5704254, -6957310, -66035, 2902861,
+727460, 938450, -1722282, -5759015, -1524177, 2264522, 2608119, 2971581, -574989, 120259,
+-12885, 1189706, -1033477, 6068252, 115964, -512712, -4019016, 556198, -2894808, -2169495,
+2330557, 2620467, 6179384, 241055, 6074158, 717796, 605590, 433792, -3300146, 221728,
+-1212791, -1626719, 602369, 1984275, -1300301, 814433, -1343788, 1580011, -1688996, -482110,
+-898722, 923955, -583579, 864362, -791348, 1014686, 1678795, 892279, -917512, -205622,
+-504122, -401579, 432181, 395674, 6939594, 11257109, 1504312, 5604396, -2035815, 3329137,
+4342749, -1335735, -3485903, 5902896, 10177462, -1995549, 1127966, 3939022, -4875862, 3034931,
+4343823, -8898635, 2501282, 870268, -2004139, 2147, -9269076, 378494, 2594160, -4404489,
+813359, 156766, 5934571, 4241817, -2230699, -632971, -565862, -6308233, -4244502, 695248,
+2546916, 571768, 2829847, -4167192, 627602, 2083059, 428423, -3857954, -2827699, -854162,
+1341104, 3123515, 3227668, 2155537, 3768297, 3691525, -4144107, -1266479, 165893, 5246840,
+-800475, 3765076, -2477659, -2560874, -795106, -4712653, -2177549, 967441, 2748779, -4022237,
+3936338, -1112933, -1177895, -784905, -1597191, -2033667, 812286, 3064459, 1140314, 5114769,
+-7095823, -5717675, -1261647, 2120640, -77846, -1165010, 1082332, 160524, 1313186, 2159295,
+3612604, 66035, -215285, 857383, -337692, -51003, 555125, -1649804, -889058, -3424163,
+1351304, 6541772, 9217000, 5365488, -2332704, 3974455, -2429878, -1613297, -7904888, -6270653,
+2834142, 6054830, 5900748, 6172405, 1364189, 344134, 3806415, -5076652, 5108864, 4157528,
+373125, 3572876, 9138080, 6234145, 1734630, -6562173, 181999, 2221035, 1409286, 1095754,
+-7211250, 1735704, 1316408, 4831302, 5311801, -1661079, 3408057, -2580202, -2885144, 3884798,
+2188823, -6884296, -6534256, -2848637, -3675955, -2719251, -2922188, -7955353, -7217693, -643708,
+2592013, -37581, -770947, -5358509, 704912, 6378027, -1797981, -2004676, 2389076, -5369,
+4596689, 2323041, 2343442, -2965138, -3679713, 6847252, 3118683, -2731599, 4495220, -593779,
+3501472, -2965138, 541703, 5055714, -1930051, -1631014, 3628711, 451508, 1437740, 2172717,
+-2525441, 2837363, -1194001, 2325188, 2323577, 1811939, -1625645, 594853, -817654, -1366337,
+-1768990, 101469, 193274, 1144609, 963146, 268435, -106837, 898722, 261993, 625992,
+-12756590, -7500624, -2357400, 2422362, -5263483, 1607928, -1446867, 3673808, -899796, -7135015,
+-5687074, 4942971, 4032974, 10218801, 9011915, -1368484, 6517076, -9818832, -1608465, 7635915,
+2289755, 1772211, -1017370, -3207804, -1507534, 1056025, -887985, -298500, 3852049, -4816269,
+1061931, 1748589, -128312, 3038153, -3322694, -2714956, 1735704, -2112587, 2704219, -5385889,
+878858, -3237332, -1286343, -3605625, -2710124, -4095788, -6081674, 3713536, -54761, 6334540,
+-5945846, -5083631, -58519, 1207423, -713501, -1226750, 401579, 3811247, 1811403, 813359,
+-2626909, -2526515, -1446330, -4746476, 733903, -1238024, 535797, -234613, -5119064, -440234,
+-425202, -5412196, 127775, -1031866, 605590, -924492, -6034966, 528818, 2679523, -1209570,
+3949223, 1083406, -2148558, 1657857, 4144107, 1355599, 694711, 926639, -908386, 500901,
+3235721, -272730, -543313, 1182190, 1313723, 499290, 1053878, 212601, 426276, -2201708,
+214748, -194884, -1097364, -806380, -816044, -1134945, 141734, -936840, 4430796, -6810745,
+2770254, -7617125, -1333587, 414464, -5653788, 5357435, 4054986, -11330124, -1152662, 1947231,
+-1053341, -4938139, -6669548, 1409286, -3359201, -5513665, -2740189, 3321084, 2911988, 8093866,
+10481331, -880468, 9365176, -5717139, 3679176, 4112968, -840740, 4051228, -2314451, 117038,
+-621160, -1901060, -1013075, -2132451, 7795903, -409096, -5833103, -1362042, 3896609, 2458869,
+3112241, 651761, -2736431, 5733245, 11608223, 752156, 1154809, 708133, -883690, 1867237,
+-800475, 6668474, -5099737, 6379100, 4383551, -4013110, 2048163, 4161823, 2810519, -4816269,
+-5264556, -10335302, -1717987, -958315, 1289027, 4023311, -1000191, 2625836, -907312, -2734284,
+-2769717, 5365488, -1248225, 5689221, -8398272, -3287798, 1895154, -5293547, 1350767, 5720360,
+512175, -27917, 389231, 1229971, 753767, -3204046, -1060857, -512712, 436476, -560493,
+1014686, 1474248, 721555, -921807, -2195802, 2375654, 877784, 929860, 582505, 695785,
+134755, 67646, -1082332, 993748, 425739, 391916, 130997, 1042066, 652835, 1247151,
+-1485522, -874563, -1737314, -1570884, -464393, 1247151, -1035087, 117038, 3010235, 1332514,
+153008, 4044786, 11738682, 13835700, -3592203, -321586, 2917357, -2094870, 8964134, 8744017,
+-5505611, 8571144, 6741488, 2592550, 3910568, 3490198, 1788317, -757525, 625992, 1145683,
+-4729833, -5796059, 1520418, -1627793, -70867, 993211, -5116380, 5155035, 10367514, -332860,
+-6220187, 10126996, 1232119, 300111, 3978750, -1792075, -3041374, 1462436, -3814468, 1508070,
+10349261, 4420595, -78920, 3685082, 5622649, 14593225, -2393908, 6286222, -1259499, -6371047,
+4168803, 358093, -2119030, 2851858, 8950712, 2275796, 1584306, -156766, 3579318, 12905840,
+5790153, 1588064, 1302986, 3374234, -3739306, 6584722, -1716913, -12834436, 1549410, -1408749,
+7701950, 9046275, 3919158, -3923453, -3541201, -3354370, -468688, 2783139, 252329, 1868311,
+1290638, 1958505, 5777805, 2456721, -4610648, -2046552, 620086, 1547262, 277562, -171799,
+154082, -2581275, 2648921, 567473, 520228, 226023, 518617, 180389, 1974074, -882616,
+1431298, -1526861, -455803, -2371359, 434865, -958315, -155156, 773094, -15583752, -1796907,
+-6591164, -7866233, -2035815, -5622112, 304406, 4756677, -7298223, 7558069, -16190416, 2263448,
+-4765266, -8690866, -11567958, 12070469, 6088116, 735513, -10245108, -6771553, 3881577, -13401909,
+-9298067, 3125663, 2878165, 13521631, -1719061, 1085016, 10094247, -6023692, 9916543, 3343095,
+3661460, -1968706, -5902896, -739808, 8266202, -4478041, 744103, 10284299, -3724811, -3085934,
+-4952098, -6174016, -5257577, -4015258, -8294119, -1058173, 2551748, -2893734, 1880659, -2768107,
+-4221953, 5769215, -7399155, 4493073, -6282464, -8010114, 433255, 6534793, 474594, -2005213,
+2652142, -5350456, -2636573, -7483981, -13248363, -6306086, 1938641, -4053376, 15234249, 6019934,
+-10553272, -5363878, -1525250, -3841312, 4924180, 10280541, 6813966, -5000416, 4813048, -5925445,
+3604551, 521839, 4825396, -5245229, -1192927, 456340, -2256469, -4472135, -3688840, 690416,
+-195958, -1040993, 2393908, 899259, 414464, -1475858, 1452773, -286152, -1098975, -3243237,
+-22012, -1660542, 336081, 1459215, -1018444, -3599183, -367220, -1517197, 16913044, 11003169,
+11574400, -3393024, -16451872, -1330903, -8431558, 2089502, 3640522, 8825084, -4163434, 3855270,
+-6772090, 1127966, -5974837, -15316390, -8260296, 5823439, -5594195, -12142946, -11408507, -10619307,
+-16559783, 2032056, -5810017, -12619688, -11347304, 1962800, 15914464, -2156074, -2673080, -5352603,
+-9673877, 1967632, -3858491, 1031866, -12064026, 743566, -12565464, 1726577, -1033477, 6719477,
+5214627, 5588826, 2874944, -500901, 4651450, -3105798, 9160628, 2554432, 4633733, 2759517,
+-3005940, 3241090, 9232569, -1230508, 5155572, -1335735, 14525043, 1847910, 5456219, 687732,
+-8148090, -6256157, 286689, -2909840, 1879048, -2129767, 4816269, 4272419, 5599027, -2593624,
+3195993, -11165841, 5936719, 16276852, -7852811, -1672890, 4338991, -9401147, -633508, 5854578,
+-3674345, -598074, -1938104, 5092221, -5228049, -1261647, 1433982, -2938831, 1434519, -1026497,
+2171106, -2718714, -2687039, 3000572, -1338956, -2984466, 2123861, -1182190, 83752, -4211216,
+3235721, 1072668, -675921, -700080, 1854352, 649077, 1799054, 1293322, 341450, -1802813,
+-3153580, -927176, -8148090, -23716272, -3899294, -8296803, -12445205, 6684043, -23773718, -3117073,
+-8443369, -4640712, 6891812, -7607461, 10084583, 8645769, 1402307, 7792682, 712428, 4103841,
+-6184216, -10980084, -12034498, -6777459, -11027865, 8575976, 11299522, -520228, -5927055, 3221762,
+3269544, -4190278, 846109, -18855980, -9936944, 8715026, -4782446, 216896, 8603356, -853625,
+5327907, 4507568, -2435247, 5163088, -47245, -10071161, 11183021, -7891466, 551903, 577136,
+-6149320, 4065187, 6672769, -3966939, 7621957, 817118, -580894, -6994354, 8608725, -85899,
+-6951405, -2343979, -13938779, -5889474, -7952669, -1044214, 9605694, 2733747, -900333, 124554,
+-9016747, 1996623, 6956237, -9141838, 535797, 13914083, -5729487, 1336272, 1069447, -9947144,
+-5952825, 6313602, 5326833, -16164646, 3263102, 12036109, -47782, 1410897, 84289, 2879776,
+-908386, 7588671, -1731409, -343061, 988379, 1436667, -3441880, 850404, 2696166, 802085,
+4540318, 1639067, -83215, -1686312, -3551938, -1053878, 1708323, -2230699, 1616518, -2286533,
+-50466, 3115462, 1699733, -2231236, -2983392, 136902, 118112, 6656126, -2676302, 528818,
+3671123, 1459752, 3586835, 42191612, 9388799, -5535139, -8465381, -829466, -2677375, 7467875,
+-1666984, 6309844, 11965242, -4841502, 601832, -7935489, -5422396, 2527588, -1306744, 6130529,
+-11828877, -6953015, 5583458, 11833172, 7826504, -391379, 2808909, -2930242, -7123204, 5123359,
+9266929, 9690520, 11727945, -9741523, -2300492, -5601174, -12046310, -1553168, 626528, -2671470,
+5538361, 7273527, -15569, 3572876, -2160369, -12834436, -6964827, -17154636, -17370458, -5106179,
+5822902, -2576444, -7691213, 14524506, 5511517, -630823, -13650480, -662499, -4200478, -9804873,
+128849, -4507568, -6320045, -13563507, -1725503, -5036386, -14859513, -44560, 11385958, -7684770,
+-3613678, 4159676, -6382859, 2502355, -6323266, 9222369, -2950106, -8995809, -13881871, -22871238,
+4530654, 3815542, 17471390, 6980933, 6069863, -127238, 5326833, -4150012, 5645198, -561567,
+2014340, 2750390, 6694244, 3004330, 310311, -1262184, -287226, 2593624, 1693291, 6873559,
+5476620, 3587372, 1232656, -1452236, -3602404, 1952600, 4542465, 357019, 345208, -885837,
+-3173444, -601832, -415538, -1595044, -1085553, -2541547, 2151242, 3008625, -2787434, -2956548,
+-87510, -425202, 1678795, 9491878, -33430952, -19048716, 17723182, -4604742, 1139777, -9182640,
+7733089, -3167539, -12898324, 6202470, 17916992, 2303713, -15675020, 4428648, -3411815, -3580392,
+10317048, 10704132, -1440962, -2169495, 22561464, 5048734, -3241090, -13856638, 6142877, -19876034,
+-16361678, -15073725, 6123013, -2844342, -1613297, 12970264, 5173825, -13156022, -10997801, 2873870,
+12805982, 4392678, -1457068, 737661, 8540006, -6157910, -13899588, 18154290, -5327370, 1893007,
+7331509, 1141388, 2519535, 18669150, 329639, 11895449, 542777, -12495670, 1815697, 2679523,
+-2586107, 2391760, 8497593, -6316287, -1915019, 2177549, -24712704, 6562173, 5058398, -138513,
+5935108, 4625680, -9168145, 4349728, 33949568, 14594299, 8389145, 2462090, 8246874, -26099980,
+-12371116, 13208098, 529355, -121870, -10014253, 8825621, 10684268, 8944806, 1490891, 1873143,
+-3584687, 141197, -6211060, -2259690, 4900558, -1109712, -3133716, 2543695, 197032, 2440078,
+-3624953, -1541356, 1210644, -667867, 2468533, -4340065, -1504849, 3074123, -3465502, 2483028,
+894964, 308164, 83752, 15032, -2814814, 1383516, 2571612, -1316408, -1319629, -3020973,
+1297617, -205085, -22415972, 15753940, 16830366, 5448703, 9277666, -6209449, 26872536, -3142306,
+10241350, 7035157, -12416750, -5064840, -5738077, 15647103, -9306120, -2866891, 9826348, 8304856,
+-9147207, -2449205, -26415660, 4966056, -2944200, -7720204, 2268817, 746251, 1932198, 2459943,
+8921184, 398358, 9773735, 1198833, 4755066, -2495376, -8523363, -9035537, 17041356, -6042482,
+-12371116, -10364293, -4732517, -5686537, 7383049, 4626754, 5681705, 7579544, 2244121, -9314710,
+5339718, -15212237, -5009006, -13288092, 9148280, -16045998, -11560978, -3378529, -5435281, 4838281,
+10798622, -8562017, 10193568, 16848082, 8329552, 16231218, -6812892, 21776558, 1970853, 18454400,
+10427644, 2327872, -9839233, -24668682, -16704202, -13536126, -7722351, -7572564, -2434710, -11469173,
+8658654, 14479945, -5568425, -11042361, -10111964, -7960722, -15040439, 9499931, 6838662, -3962107,
+-3882114, -5805722, 765041, -3275986, 8095477, 53150, 2072322, -4288525, -3710852, -6059125,
+-1125281, -7263864, -7006703, 7209103, -507880, 906238, 177167, 2661269, -2865280, -242666,
+-4304094, 172872, 25233, -160524, 2216203, 262530, -3522410, -2287070, -2527588, 734439,
+-3784940, -4095788, -5204964, 1433982, 12482249, 6362994, -7102266, 21017422, 2376728, -20511690,
+25618406, 1719598, -10910291, 9044127, -21038360, -4024921, -13393856, -4179540, -2369748, -4107063,
+-9572945, 2687039, -18175228, -7027104, -6550899, -24526410, 2984466, -17785460, -12640626, -19953882,
+4010426, -15053860, -4540318, -4984310, 169651, 7597261, -6113886, 10692858, 560493, 14187351,
+-3294777, 12341052, 15551540, -18648212, -270046, 5011153, 11419781, 452582, 13729937, 4602058,
+13239237, -270046, -10096931, -6347425, -960999, 8568997, -1959042, -3929895, -847182, 15862925,
+10022306, -3761318, -13054553, 4388383, 7191923, 5113159, 14071923, -18821084, -13915694, -3970697,
+1341104, -5293011, 165893, -5397164, -11758547, 33042794, -16301548, -18927384, 14150843, 8150238,
+12295954, 3776887, 4531728, 2549600, 7196755, -6776922, 18992882, -3310346, 4672388, -3660386,
+2558727, 1146756, -1021129, 12105902, 1534377, 1066763, -11907797, 5408975, 1803886, -1743220,
+-9693741, -987306, -1989107, 264141, -3073049, 8723079, 2036351, 2443300, -6999723, 4802311,
+-3315715, 983548, 4223564, -167504, -2055679, -2247342, -6226092, 3640522, 6405944, -3031173,
+-686658, -2247879, 969589, -3617436, -8388071, -2535105, -263604, -5751498, 5989869, -510027,
+-794032, 2026688, -5635534, -6391448, 2623688, -4400731, -5602785, 16653736, 12264279, 19691888,
+-6556268, -4876399, -27045410, 31403190, 14394046, -41827612, -22386444, 13401372, 18618146, 18728742,
+-12031277, -9767293, 22662394, 5373541, 5201206, 15709917, 12700218, -23130010, 7087233, 9743670,
+-1731946, 10911901, 2099165, -2975339, 2261837, -7534983, 38612292, 10104984, 5029944, -1067299,
+-4774930, -2602213, -21901648, 4192425, 6437082, -5164698, -7180649, -35464080, -16939352, 7412577,
+6182606, -11646341, -11381663, -1617592, -16879758, 6971269, 6267431, -2469606, 7051263, 13966697,
+702764, -742493, -4477504, -7487739, -2441152, 1238024, -26132192, -3496640, 6140193, 15916612,
+-28283434, 6264747, 10139881, -2244657, -13314935, -12041478, 21358872, 21089900, -3087008, -13200582,
+-25006374, 5244692, 10030896, 5228586, 417149, -27287000, 11503533, 24794310, -8400956, 2778844,
+7798050, -10235444, -16289200, -8638790, 2486249, -5080947, -1293322, -7707856, -6616934, -5638755,
+-2376728, -2239826, 3317862, -628676, -496606, -7030325, 2886218, -3322157, 1504849, 16106,
+2263448, 4203163, 4944044, -7854422, 3140695, -6080600, -10166188, -5383742, 1460289, -1072668,
+4443681, -1032403, 2894271, 5956046, 301721, -325881, -5270462, -2991982, 7950522, 3981972,
+-3326452, -2085744, 12441983, -9162776, 3395172, -7635915, -6732898, 1169305, 8434779, 16833588,
+-31005906, -40464496, -28118078, -36200668, 31436476, -20968568, 12662100, -3545496, -25420838, 4548907,
+-6891812, -9450539, -33003602, -30245160, -22572738, -8619462, 1193464, -17500382, -5052492, 4622996,
+14236206, 1127429, -8825621, 35970, -9438191, 13643500, -17140140, 23721104, 20461224, -4887673,
+-6480569, -28125594, -16380468, -17103096, 2084133, 3784940, -4557497, 22990960, 6577743, 18638548,
+3702262, -2190433, -8424578, 16770774, 11608223, 5269925, -16804596, 9026948, -28439126, -3167539,
+-2989297, -18888730, -3076270, 249108, 21809308, 14443438, 452582, 10088878, -360777, -21446920,
+10976326, 3056943, 17947594, -10116795, -20614770, 12345883, -37077916, -8491687, 13182328, -5548024,
+-5865852, 9119826, -2374580, -7291781, 6921877, -3066607, -23772644, -20914344, -3417183, 9836549,
+15895674, 22328998, 22383222, -9431211, -7541963, 4436165, 8149164, 7345468, 3105261, -9880572,
+8781061, 213138, -1788854, 1176821, 5470178, 9111236, -2585034, 1585917, 8628052, -1926830,
+-105764, -8580808, 4385699, -1818919, -529355, 7195681, -1323387, -3112241, 3274376, -9751723,
+-3557844, 10072235, 2942590, 3323768, -3449933, -2244121, -1391033, -7745974, -944356, -4272419,
+6039261, -16936666, -40449464, -3780645, -25750476, 1571958, -18962818, 17254494, -13540958, -1455457,
+3408057, 6429566, 20827908, 6963753, -9412958, 22462678, 7016903, -38289096, 6332930, -22985054,
+-1603097, 4346507, -3174518, 18862960, -5566815, 3404835, 4816806, 1634772, -12236899, 19142132,
+-11063836, -1087701, -22388054, -53150, 3842922, -3584150, -7850127, -10327786, -11676942, 29027000,
+1204738, 15008763, -25846040, 2876018, -284542, 8838506, 15491410, -17853642, 31659814, 45471356,
+-2039573, 4333622, -15854335, 7221988, 10635413, -8864276, 2307471, 8498130, 17706540, -657130,
+1077500, -5564667, -15335181, -23180476, 11798812, -17411798, -7284265, -11443403, 5046050, 15444702,
+13977971, -2872260, 5268315, -31452046, 20735028, -3979287, 4534412, -9330280, 20257750, -28254980,
+33574296, 24274082, 27975270, -11441793, -649614, -27713814, -14928769, -10410464, 9074192, 7492571,
+-22807350, -16913044, 645319, -6002754, -16642461, -257698, -11519639, -13892609, -5119064, -2274722,
+1051730, -9273908, 1612223, 2807298, 13817984, 12122545, -1932735, 11406359, -5755793, -14835891,
+-8075076, -3401614, -7361037, -1411971, -5477694, 7943005, 2476049, 31513786, 4188667, -11283953,
+-3785477, 2517388, -16654809, -10732586, 3936875, 307090, -4334696, 1289564, -14496, -18547816,
+-1931662, 11759620, -8990977, 50797116, 14543296, 36935108, 11821897, -38556460, 15507516, 10678899,
+-12800076, 2581275, 24916180, 1061394, 23849416, 21053392, -24706262, 13572097, -24716464, -16770774,
+-2314987, 49706192, 15328201, -22518514, 21242372, 13600014, -27356794, -12149389, -1838783, 27788438,
+4149475, -25546466, -14297409, -863288, -6942278, 15394773, 22345642, -8135742, 19659676, -12709345,
+-17064978, -661425, 40460740, 3688840, -23167054, 13131326, -1046898, -2382096, 11358578, -26417270,
+-22718766, -21690658, 15887621, -14231911, 5157719, 6665789, 24215026, 11879343, 24893630, 2570538,
+-1021129, 20182588, 37248104, 22028350, -36734320, 685047, 3634079, -6311455, 7157026, 10125385,
+-28351080, -4365835, 5690832, 4837744, -33776696, -32161252, -17918066, -19577534, 33670396, 12338904,
+1630477, 14731201, -27341762, 11220602, 7667591, 4912369, -2346663, -6378564, 23295366, 13844290,
+-9205189, 3856344, -6919193, 15037217, -4283693, 942208, 3273302, 2120640, 11389180, -1921998,
+-18252000, -909459, 3539590, 4670240, 9540196, -2709588, 949188, 6908992, -14116484, -8591545,
+-1210644, -26045756, -3855270, 6995428, -1798518, 2619930, 14930917, -2307471, -10205379, 2007897,
+3716757, 9413495, 11613055, -11294690, -6705518, -964757, -9278203, -6369974, -17904108, -21727702,
+6105296, 82678, -9534827, -8381629, -9730248, -19330574, 14476187, -38626788, 27954332, 31219044,
+8655433, 33997352, -34842924, -17059074, -9424232, -50085224, 28221156, 2811593, 17473538, 22952842,
+22468584, 1716913, -696322, 22816476, -3604015, -27134530, -28142236, 17022030, -31798328, 31022548,
+-8899172, 6783901, 30764850, 27713814, -13948980, 42212548, -24475944, 2710661, -25450902, 4090420,
+-8693014, 16601659, 5659693, -18090940, 16212428, 24601572, 36191004, -20950314, 7748121, 22181358,
+-30511984, 1374926, -12258374, -44168368, -18981608, 11747272, -24233816, 8597451, -20343650, -528818,
+29726006, -14143327, 12595528, 34203508, 24461450, 9121974, 45536316, -70967352, -13362717, 23635206,
+-2729989, 13754096, -21962316, -38376068, 46562276, -717796, -23455890, 9998684, 29465624, 73065448,
+27689118, -55350316, -30186104, 18786186, 20447266, 8812199, -38626788, -3425237, 8465917, -11996381,
+26074746, 9269613, 16641925, 19753628, 14859513, -10208064, 11471321, -30752502, 4404489, 16320876,
+-1989107, -16358457, 9491878, -10022306, 16251619, 17901424, -7722888, -15073725, -4064650, 33111514,
+-5975374, -4000762, -13048648, 14905147, -12960064, -8087961, 9558987, -6328098, 31243740, -2524367,
+-7798050, 31323196, -2864743, 7196218, 19217294, -1628866, -1703491, 1674500, 2803540, -14984067,
+6666326, 620086, -21532818, 14392972, -6725382, 27464168, -15079093, 8664560, 2580739, 37442988,
+-32917704, -2981244, -15734613, -19508278, 30005178, -11678553, 39397200, -3911105, -30403000, 47262356,
+68317896, -9756018, -21829172, -33013802, 7836705, 36290864, 7128035, -7660074, -22656490, 5366025,
+5332202, -5029407, 5580773, -3249143, -11147588, -11377368, 10439455, 14894410, -1171989, 20138028,
+-19471234, 41326712, 31128850, 17928268, -1538672, 2418067, 5855114, -21929030, -19192062, -21261162,
+-11191074, -5862094, 13209172, 11586748, 22399866, -10894721, -2721399, -9664750, 25485262, 49776524,
+-11815455, -32129040, -20691004, -1378685, -43453256, 33669324, -59005872, 16925930, 24930674, 25577068,
+-25752624, 5902896, 25959856, -59794536, -28281822, 12147778, -6379100, -30027726, -26471494, -3541201,
+-13903346, 44267692, 18973554, -16394964, -15033996, -24790014, 67938864, 14469745, 35458176, -2707440,
+10303090, 12692165, 15174119, -22420266, -2927557, 28063854, 19388020, 11457899, -9416179, -12322798,
+-83752, 8593693, 12937515, 8612483, -17641042, 2266669, 86436, 4293894, 12542378, 12414066,
+-18478024, 8276402, -11432666, -14186814, 1345935, 14058502, 5723581, -8988830, 1854889, -1597728,
+-2753074, -7771744, 27026618, -8442295, -62814, -16681116, 3672734, -6467147, 17758080, 5313412,
+-3992709, -10077604, 10020159, 7922067, -12671227, 312459, -20527260, -8594766, 4628364, 7771207,
+11290932, -758599, -25681220, 7734699, 39410084, 1304060, -13455059, 33083596, 23506892, -6737193,
+-21288006, -31996432, 6028524, 63225676, 13766981, 32468342, -2951180, 2930778, -2666638, -7316477,
+-118112, 3002182, 15167140, 5157719, -12389370, 10612327, -10864120, -11700565, -13492640, 440771,
+12524662, 2856690, 9980430, 10976863, 8627516, -8766028, -15822123, 5078799, -11018739, -27027156,
+-8211441, 6272800, -9647033, 31826782, -32912872, 26757110, -8640937, 317291, 39217884, -6064494,
+-1286880, 51604568, -8122320, -20834350, 3562675, -17834852, -4304094, -16831976, 57111252, -16100222,
+13591424, -13657996, -6426345, -7738994, 9270150, -14310294, -35415228, 15640660, -4301410, -38873212,
+20132122, -10094784, 21430276, 49104896, -24826522, -401043, -2806224, -7118909, -26699128, -4475356,
+23887534, 9840307, 14540075, -22091164, 6294275, 4093641, -21790516, -5698885, 4476967, 11206107,
+13475997, 1294933, 2320356, 9160628, -2469069, -10526428, 15226196, -5972152, -5038534, 14313515,
+1584306, -3736085, 20746302, -1241246, -1937030, 344134, 6540699, -6160057, 10295037, -8046085,
+-4464619, -6322729, 5185100, -6979, -1130650, 3228742, 9426916, -11468100, 2163053, -1395864,
+6658273, 2258616, -2609730, 12181064, -7688529, 6649683, -2441152, 3722126, 459562, 9160628,
+-13980119, 40265, 65739308, 33405182, 68971272, -38569880, -10020696, 22825604, -21573084, 16539919,
+70950176, 16891570, 10260677, -18645526, -17644800, 20414516, -10750840, 28834262, -4720169, -6471979,
+-8341900, -40686764, 9823127, 49148920, -25905632, 29765198, 25873420, -16495359, -4999342, 20518132,
+-32588064, 16372952, -2304787, 24693914, 8329016, -20277614, -6564858, -40904732, -21032454, 19338628,
+14471892, 31982474, 49737868, 5417028, 793495, -42960948, -26312044, -25612500, -21176874, 11380590,
+-17568564, -4925254, -4034048, 12998182, -32895154, -5214091, 17035988, 8889509, 27123256, -3536906,
+-12991739, 27073326, -4890357, 16629040, -20780662, -12451647, -3220152, -6851547, 13226889, 19717122,
+27740656, 7923141, 2277943, -19082002, -5405753, -9756555, 23224498, 333934, 34809636, 6128382,
+26214332, -25442312, -9165460, -111669, -646393, 19059454, -3044595, -9381282, -5163625, 4725001,
+1289027, 4995584, 8752070, 7907035, -4857608, -5631239, 326418, -3313031, 7368554, 7954280,
+1814087, -6578816, 245887, -8642011, -3682935, -1868848, 14921790, 5395016, -2004139, 3926137,
+-10071698, -11809013, -8062191, 3770445, 8157217, -7031935, -759672, 138513, 6062347, 3417720,
+-1004486, 6538551, 953483, -329639, -6519761, 3097745, 1813550, -2632815, -18079664, -67524936,
+1752347, 108659992, 97988608, 92165168, 39050916, -39142184, -54268524, -53801444, -48118668, -88320096,
+-63079648, -61475476, 47531328, 73056856, 59576028, 95081984, 79076792, 16786880, -3704946, -34017752,
+-66315904, -39555040, -69683160, -37821484, -23352810, 384400, -9350681, 17483738, 29851634, 50814832,
+31916976, 53389664, 40582608, 42422464, 3244311, -34907348, -15963857, 1229434, -38211788, -50378892,
+-65593816, -64403572, -45761264, -6416681, 31907848, 12654047, 46452220, 32930588, 52988084, 47267188,
+51376936, 59711320, 32040456, -4565014, -9720585, -38954280, -31981400, -105214352, -84272088, -67448704,
+-52822728, 6162741, -23112292, 1515050, 71785008, 88787712, 121346248, 76819784, 46072116, 31439160,
+7233262, -46508052, -42750492, -64845952, -83967144, -71009232, -66367984, -31074088, 4648765, 33590404,
+55068460, 54523000, 46261092, 29273960, 31002684, 13387950, 8255464, -1484448, -25905096, -22432614,
+-20644298, -22826678, -12303471, -25514254, -18409840, 6337224, 2033130, -14825690, 7912941, 21053930,
+11791833, 24020142, 37248640, 38939784, 17005386, -24040006, -10578504, -3348464, -49256832, -51750060,
+-45331232, -18820010, 13822279, 22193706, 18297098, 31113816, 34957276, 43404404, 28573880, 17772038,
+-6861747, -29052770, -29781840, -32909114, -44574244, -31455266, -17709760, 15184857, 23820426, 15628312,
+9210020, 28147068, 18712636, 11580306, 2381559, -4144107, -9283572, 970663, -11103027, -12775917,
+-5059472, 4378719, -7834021, -5544803, 814970, 5854578, 321586, -2796561, -4303021, 4425964,
+-463320, -1953673, -4393752, 1906429, 1319629, 2702071, -1252520, 1613297, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
1097901,
--1261647, 4443144, 4995047, 2682744, -1933272, -7547868, -6924024, 2508798, 3972308, -1468342,
-7419019, -1438814, 4425427, -5273683, -4651987, 2025614, 181462, -1371168, 1959042, 4809290,
--2097555, 664646, -2753611, -278099, 252866, 1968706, 1832340, 2467996, 406411, 1467805,
-5493263, -2124935, -2575370, -2780455, -4983236, 1428614, -1050656, 9104257, 1767379, -689879,
-713501, 5521718, -513785, -1209033, -1412507, -3245922, -597537, 4244502, -656593, 1757715,
-4293894, -1353452, -312459, -6916508, -4065724, -6307697, -1236414, -1836099, 927713, 338229,
-905164, 2242510, -1514513, 1080721, 67109, 550830, 957241, -2306398, 2172180, -751082,
--2623688, -339302, -2645700, -811749, 243739, -4124779, 1087701, 179315, 3170760, 326418,
--58519, -1899449, 421444, 3156801, 1543504, -796180, 348966, 695785, 766115, 2405719,
-285078, 142271, -586800, -371515, 238908, 86973, -251256, 1584843, 865436, 937914,
-670015, 488016, 201327, 471910, 5119064, 12112345, 4767951, 2874944, 3352222, -7099044,
--846109, 3080029, -973347, 1211718, -6497749, 6389301, 8629663, 1501628, 3849365, -1808181,
--5071820, -7830263, -8595840, -5697274, 6795175, -6412923, -4092567, -5425618, 1733019, 4532264,
-843424, 623307, 2517388, -245350, 1586454, 5582384, -792958, 4642860, -4422743, 4236985,
-2930778, 2697776, -2334852, -7196218, -1544041, 4136054, 2433099, -2004139, -251256, 1437203,
--315143, -3467649, -739271, 2958159, -1022202, 336081, -1728188, -371515, 204011, 994285,
-5079336, 2137283, -2618320, 448824, 411243, -1719598, 918049, -2508798, -304943, 4137127,
-1333587, 4640712, -3318936, -2831994, -1708860, -724239, 2347737, 5259188, -3039226, -3791383,
-4510253, -417149, -97174, 164283, 1549946, 1125281, 3789235, -1061931, 1760937, -2309082,
--2179696, 178241, 1016834, -152471, 67646, 879931, 940598, 734439, -1966021, 2207613,
--461172, 3546569, 1509144, -3982509, -3751654, -4267587, -664109, -3483755, -7330973, -6988449,
-7218767, -158377, 1524713, -54224, 4399657, -6499896, 9663676, 8576513, 450435, 457414,
-19327, 255014, -947577, 3358665, 2619393, 212601, -5490579, 2382633, -1699196, 2643552,
--760209, 5857262, -1358283, -3408594, -1538672, -919123, 2176475, -36507, 3628174, -5815386,
-3141769, 1014149, -3221762, 9152038, -1447404, -1310502, -186294, -142808, -2406792, -779000,
-4890894, 3998615, -8571144, -4046396, 4366908, 1255741, -2045478, 7463043, 279173, 1672890,
-7354595, 3034395, 5775121, 1629940, -2209224, -2996277, -5765994, -5593121, 819265, 2976949,
-7157563, 272730, -2909304, -3648575, 1250909, -67109, -1990717, 2320893, -799401, -1835025,
-1680406, 3875671, 1263257, -1943473, 1949915, 2018635, 2538326, 1624035, 135291, 241592,
--2393908, -504659, -25770, 1230508, 1044751, 1974074, 1916629, 1585917, 609885, -155693,
--9784472, -3417183, -4757750, 4440996, -3248069, 2882997, -3512747, -1459752, 8306467, 4052839,
--5506148, 2508798, 7922604, 1155346, -2771865, -5565741, -6675990, -4584878, -6713034, 4454418,
-1017907, 2448668, -1285806, -3045132, -3204046, -5922223, 310848, -188442, 1408749, -1447941,
--5378373, 82678, 5750425, -1278827, 68719, -2869038, -5729487, -8485782, -727997, 6107444,
-2223183, 638876, -2874407, 777926, -4600447, -1511829, -3461207, 436476, 783295, -5244692,
-5916855, -3335042, 7528541, 2843268, 716186, -3424163, -1794760, 1930588, -430570, 1826435,
-4041564, 817654, 1603633, -4476430, 2641405, -2252174, 6920266, 8566849, 3932043, 5756330,
-2681670, -882079, -6011344, -3885335, 496069, 4427575, 4465692, -3575560, 469225, 4207458,
--5505611, 5434744, 348966, -2792266, 1792612, -1173600, -263604, -3105261, 609349, 877247,
-535797, -2491618, 659814, -1761474, -2335925, -818191, 165893, 1029182, -1524177, 374736,
--660888, -2167348, 231928, 1782948, 748398, -1552094, 1003412, -1168231, 3275986, -7900593,
-1037772, -8448201, -37581, 1298691, 785979, 3816079, 382252, 609885, 14949171, -1869385,
--6602976, -7115150, 7509214, 5037460, -5665062, 1376537, -6317897, -2700461, 212064, 7158637,
--8864812, 2593087, -345208, 1422171, -674847, 9087614, -4693326, 2570001, -1418413, -2392834,
-1382443, -425202, 2724620, -2767033, -2576444, -7670275, 1207960, -2538863, -1649804, 621160,
--2716030, 2279017, -4329327, -2565169, -7619809, -215822, -6764574, -2842732, -8046085, 5997922,
-1221918, -2453500, 5267241, -6084895, -22549, -11609297, -616865, 4038343, -307627, 3465502,
-7408819, -2576981, -1030792, 9278740, 3918621, 3596498, 5665599, -2902861, -8543227, -883690,
--5108864, 3764539, 8540006, -1508607, 2517388, 4564477, 3835943, -425202, -697932, 1085553,
-183610, -1545651, 2318209, 2090039, -3527242, 1214402, 3022583, -1472100, -1056025, -5237713,
--1196148, -2181844, -700080, -2264522, 494995, -519154, 445603, -197032, 393526, 1402844,
--1517197, 593779, -600222, -1540283, -173946, -223875, -439697, 164819, 946503, 1544041,
--1428077, 566399, -1200443, 271657, -97174, -1603633, -607738, -1076426, 4223027, 4776004,
-1727114, -2874944, 2066416, 1255204, 9092983, -1377074, -1955821, -12259447, -3469260, 9233643,
-9004399, 5803575, 4562329, 13140452, 807454, -15670188, -4024921, -2602213, -3803194, 8370892,
--1330903, -3030100, 9740986, 1534377, -4024384, -1384053, 3885335, -3448859, -1372779, 1200443,
--1251983, -5451924, -2483565, -246424, -5285494, -2408403, -2223183, 3695819, -2484639, 7109782,
-6895570, 681289, 6558952, 4616553, -2971581, -999117, -2257005, -10180683, 1140314, 2115808,
--9701257, -1380832, -2754148, 3484292, 8853538, 1361505, -8989367, 1333051, -3468723, -6041409,
-4897874, -1402844, -6439767, 2933463, 2473364, 7128572, -571768, -864362, 5236639, 6214281,
-6811818, -6978785, 4937602, -873489, -1191317, 1860795, 7354058, -306553, -1967095, 2352032,
-1118302, -6213744, -825707, 8594766, 1887638, -521302, -1077500, -3837553, 2757906, -1388348,
--1760937, 325344, -256624, 2018635, -132607, -2621541, -1909650, 3609383, -445066, 1450625,
--1612760, 1770600, -1331977, -948114, -1317481, 947040, 1902671, 6259915, -16042240, 6675453,
--1748052, -3659312, -3292629, 2753074, -1519882, -9512816, -10129680, 1239098, 15810848, 4358318,
--11494943, 2597382, 9383967, -6744710, 1222455, -1701344, 5597953, -33286, 5166309, 13830332,
-10074920, 6289980, -229244, -1139240, -6385543, -6843494, 2731599, -17909476, -2826625, 8496519,
-956704, -900869, -8573292, -3054259, -359167, -383863, -4162897, -8865886, 9947144, -3430605,
--2173254, -1597728, -8212515, -9238475, -284005, -4505958, 648003, 4405563, 3375308, 3729105,
--7330436, -1901060, -3598646, -2288681, 11806328, -1240709, -5382131, 383326, 15138686, -8069707,
-2549063, 11143293, 352724, -2554432, -5609764, 3393561, 648540, 8026220, -4310000, 6791954,
-5515275, 10512469, 5091684, 7874286, 839666, -5150740, 1113470, -209380, -2967823, 4759361,
-6778532, -5615670, 3702262, 2029372, -5046050, 665720, 1800128, 1418950, 1842004, -2884071,
-1644436, -3161633, -948651, -873489, 227633, 593779, 1366873, 1732482, -352187, 2594697,
--187368, -1155883, 904091, 1727114, -579821, 1048509, -2697776, 1074816, 9222369, 13238700,
-8085276, 1350767, -2843268, -4953708, -10998874, -3182034, 7249368, -14955613, -6142340, 13626321,
--18886044, -3415573, 10546829, 13255343, -1371168, -13310641, 1833951, -5093295, 17792438, 7893076,
--12241194, -7873749, -1893544, -7548405, -15402826, -7703561, -6841883, -5574331, -12476343, 6266358,
-2199560, 7693360, -4758287, -2305861, -10976863, -1128503, -9526237, 985695, -6337224, 1394791,
-3313567, -14694694, -4836670, -5598490, -3911642, 3158949, 3123515, -4696547, 14467597, -945967,
--3798899, -2724083, 1386201, -3406983, -1207960, 5379984, 4578435, 6023692, 7934415, 7532299,
-585726, 4937065, -2423435, 11288248, 12073153, -6085969, -3171833, 7407745, -223338, -18336290,
-832687, -9316321, 5672041, 5788006, 10354629, -7872138, 4402342, -11042898, -1082332, 6297496,
--2703682, 9841381, -2575370, -1207960, 1969243, 638340, 1373853, -659814, 571768, 4181151,
--3112241, -800475, 4019553, -626528, 3155190, -4719096, -4102768, 2767033, -664646, 863825,
-433255, -567473, 721018, -2824478, -741419, -494458, -1230508, -1910187, -666257, 1493038,
-1794760, -92342, -10160819, -12294881, -6022081, -11878269, -16950088, 11992086, 1185948, 6710350,
--9367861, -9747428, -13442711, -9094056, 4149475, -9970230, -8952859, 12193949, -3053722, 573378,
-2948495, 6965900, -5417028, -4109210, 2011118, -3291019, 1905355, -621160, -6020471, -11523934,
--18037788, 5957657, -12956306, -11883101, 624381, -3134789, -833224, -6691022, 3023120, 3433290,
--14703821, -326418, -3229279, -5761162, -8175470, 4642323, 993748, 14688251, 1752347, -8252780,
--513249, 1357747, 6060736, 2529736, 13030394, -1127429, -14179835, 6060736, -3009162, 6396280,
--8478802, 1840394, 4811437, -25080998, -11909407, 8854612, -770410, -2700461, 3850975, -1285269,
-15833397, -566936, 10027675, 8704288, -12834436, -14904610, 867047, -16510928, -379568, -824634,
-333934, 2389076, 10342281, -372052, -6495065, 5919539, 7782481, -7274064, 1275068, 2330020,
-7828652, -3836480, 274878, -3890167, 2647847, -224949, 1657857, 2593087, 4218195, 4258997,
--129386, -4112431, 183610, 3025268, 952946, 626528, -3747896, 397821, -3753802, -560493,
-2032056, -613107, 3688303, 2728915, -157840, 770410, 2986613, -2782065, 5267241, -118648,
--2309082, 2355790, 8559870, 35158604, -8695698, -23583128, -2152852, -10304163, 25499220, 1992865,
-14262513, 7750269, -4498442, -11282342, -5114769, -12294344, -3213709, 17214766, -19205484, 831076,
--15676631, 4262218, 1255204, 7653632, 1721745, -7478612, -12712566, -14747307, -2783676, -14467060,
--11384885, 1874753, 3332358, 10790568, -10115185, -20985748, -4440460, -7275138, 2481954, -9856950,
--6709276, 3046743, -5294084, -8338142, -606127, 930934, -4308926, 20487530, -4231617, -3340948,
-5136781, 5366562, -6106370, -2562485, 15113990, 12721693, 8308614, 15992848, 12482249, 44560,
-5214091, 9094056, -6771553, -6324340, 1843615, 6558952, 10606422, 4376572, 21544092, 2384781,
-14443438, -4078072, -8359617, -5359583, 30586072, 5456756, -3978214, -3670050, -10991895, -10493679,
--7577396, -7352447, -8798777, 3533684, 7049652, -7473243, 2408940, 7625715, 3779571, -6898791,
-1403917, 7778186, -1941325, 4313221, -3872987, -1069447, 1737851, -1297080, -869194, -2310156,
--4946729, -755377, -4480188, 2391223, 3753265, 1930051, -3735011, 4980015, 3225521, -2732136,
--3263102, -5051419, -1505386, -1384053, 1336809, -1091459, 2363843, 1772748, 443992, -478352,
-89121, -4026532, 1690607, 6812355, -30944702, -11268920, 15279346, -3518652, -15878494, -14592688,
--5120138, 16877074, 8762807, -13286481, 7306813, -17734456, -7480760, -2004139, -11887396, -15917149,
-13370770, 7563975, -14442364, -4904316, 30726196, 7302518, -13759465, -18648748, 264141, 10244571,
-1666447, 1862942, -21562346, -511101, -2471217, -15336254, -9043591, -6119255, -12403329, -5749888,
-3570729, 590558, -13086765, -12960601, 1657321, 8315057, -224412, 11106785, 18422726, -12859669,
-11416023, 8710731, 3629247, 2580202, 13889924, 4422206, 8565239, 5817533, 7720204, -2514703,
--1671279, 15939161, 24795920, 4186519, -5766531, 3118683, -3564286, -9315247, 15782394, -7637526,
--13298292, -20956756, -7225746, -24432996, 12257300, -9923522, -4225711, -1359357, -3520800, -8741332,
--1462436, 9824201, -11150809, -919123, 5157719, -3141232, -10872173, 5527623, 901406, 3103114,
--711891, -1227824, -3879966, -363998, -2004676, 5895380, 1549410, 1676648, 963146, 1970316,
-95563, 3034931, 2030446, 5234492, -7219303, -784905, 616865, 4862977, -1962263, 4064113,
--4342749, 1574642, 1087164, -877784, -2392834, 4262755, -1886028, -263067, 2441689, 817118,
-261456, -5805185, -13565117, 11527692, 6928319, -2055679, 7719667, 5714454, 16422881, 12638478,
--26656714, -8862128, 29672318, -23380192, -6886980, -14168023, 21150566, 9400610, 9758166, 4093104,
-3118683, 8450885, 22437446, 10661183, -9848897, -202400, 765578, -634581, 8897025, 9968619,
-1236951, 5896990, 5667210, -5149129, 6969122, 4167192, 13874892, -6655052, -13295608, -11443940,
--8888435, 2635499, -1135482, 5286031, 6030671, 6036040, 12222403, -5350456, 2598992, -5392869,
--9486509, -3853660, 1035624, -10964515, 14031658, 16949552, -18396418, 6277095, -12736726, 10420664,
--2062121, 4050154, -1376000, -10198937, -2462090, 11727945, -9154186, -2825015, 2097018, -18808736,
--7169374, 3939022, -14529874, -1012002, 23293218, 11573863, -1553168, -5329518, 18588618, 4876399,
-13390097, -4208531, -5989332, 19390704, -6571300, 6051609, 2592013, 2753074, -3985193, -2927020,
--3562139, -2472291, -6519761, -4032974, -4541928, 650688, 4202626, -1547799, -9160628, -2947958,
--1260036, 1032940, -277025, -2285460, 42950, 2583423, 4478577, -3576097, -106837, -9888088,
-1675037, -1235877, -1866700, 6665789, -117038, -646393, -3935264, 4075924, 1120450, 6037114,
--2063732, -357019, -4051228, -447213, 18521510, -1506997, -4325569, -15394773, 652835, 1467805,
--4153770, -325881, -7161321, 2708514, -22139482, 20195474, -4100620, -7141994, -14021458, -15804943,
--1655173, 19266686, -3515431, 5342940, -11926587, -6871948, -3345780, -11583527, -14010183, 12790949,
--7925289, -6432788, 11310796, 11026792, -15611132, 5436355, 5870684, 13502840, 11125039, -4068408,
--9889699, -6219650, -15181099, 16680579, 10945187, 5539971, 11870753, -12314745, 8410083, -1785096,
-7707319, 8571144, -8091719, -634581, 27118424, 22754200, -17226040, 6890738, 14067092, -10828149,
-3330210, -25365540, 7575249, -13724031, 11320997, -7961796, -8795019, -6199786, 30258044, 1731946,
--8846559, 2686502, 10160819, 1339493, 6034966, -16317654, -1880659, 27197344, -915902, -10681047,
--16655883, 514322, -12334609, 7686918, 7822746, 9506373, -17011292, -17743584, -4758287, 2987150,
-5814312, 1852742, 70867, 435402, 6446746, -4353486, -1767379, -1348083, -2881386, 3187403,
-2680060, -5427228, -3759170, -8337069, 5077188, -3058017, 2206540, 3651259, 5345624, 4267587,
-1821066, 8375723, 510564, -1952063, 3989488, -6223945, 3454764, 2410551, 1682017, 5543729,
-5918465, 1100049, -845572, 3503083, 377420, -537945, -6575058, -8588861, -1648194, -663036,
--1087701, -16742856, -868657, -1991791, 4880157, -24310588, -11260331, -13619878, 11486890, -5768141,
-17092896, 10424959, 21763136, -10776610, -913754, -17056388, 14504641, 26466126, -8246874, -20946018,
-2043868, -4242891, 32416266, -7939247, -12734578, 12412455, 6802155, 5228049, 12202539, 4212289,
--40770512, 205622, -2747169, 15976205, 28619514, -26985816, 1060320, 8174397, -12983686, -2566780,
--36968932, -8303783, 18838264, -30351998, -18211736, -9271224, -11911018, 12191802, -7377680, -10772315,
-16279537, 5018133, 5931350, 16858284, 1840394, -5713380, 11939472, 17686676, -17149268, -12706661,
-26209502, 18095770, 6077379, 8396661, 6188511, -11733314, -17044578, 46708, 219580, -3435974,
-5361730, -10245644, 7315940, -14215805, 5789079, 33410014, -15524696, -12753369, 18332532, 5354214,
--6249178, 11672110, 16112570, 12050068, 14238890, 7128035, -7243463, 5946919, -17581448, 9468792,
-3980361, 5039608, -8922258, -2591476, 1864553, -757525, -1783485, -2603824, 5769215, 11367168,
--4414153, -10835129, 6919193, 13135621, 6820408, 5211943, -15465640, 9441412, 1005022, 5143224,
--2480344, -5218922, -1235877, 7971996, 719407, -1382443, -6673306, -471910, -3891240, -1845225,
--3084324, 3590593, 7460895, -4411469, 295279, 4786741, -1844152, -742493, -4076461, 821413,
--2731599, -2965675, 9670656, 8733279, 14242112, -32988570, -60928408, -28082644, -4271345, 20737712,
-1468342, 22868554, 21125334, -6389838, 3424163, -5175436, -11587822, -19051402, -11087458, -13752485,
--7998840, 21725018, -28238336, -4909685, -23535348, -29190746, -5112085, -29460254, -23703388, 2902324,
--6201396, -3400004, 5360656, 25853556, 1804960, -18762028, 1069447, -2250563, -5645198, -24363738,
--1597191, 29041496, 2686502, -495532, 11766600, 22561464, 15187541, 3946001, -9188009, 7866770,
--7718056, -20679730, -37922952, 36074504, -4566624, 30051350, -2530273, 399969, -10799158, -17364552,
-31679142, -18000744, -14626511, -1520955, -23082228, -21686364, 18031346, 13224204, 6940667, -2301566,
-9185861, -16013786, 6231461, -12995497, -18344880, -20022600, -15614890, -6438156, 15515032, 987843,
-5576478, -9262634, 5494337, -12119324, 8833137, 6860674, 6293738, -3946538, -497679, 7817378,
--2118493, -9453223, -7124277, -9357123, -799401, -6905234, -1588601, -2423435, -2505040, 2767570,
-1147293, -3710852, 1619203, 4923107, -1277753, -3118146, -7314866, -47782, -5018670, -680215,
--795106, -3471944, 8587787, -8027831, -7507603, -3543348, 4575751, -7104413, -7137699, 1040993,
--5959804, -27380, -1031866, 3370476, -743029, 1145146, -4796405, 1972464, -9982578, -5036386,
--1467805, -21164526, -15495705, -23486492, -242129, -22465364, -26086558, -4413616, -11917461, -28652264,
--39670464, 4494684, -15010374, 7315940, -2858301, 14875619, 33423972, 1688459, 3463891, -16959216,
--18142478, 15108084, 8449274, -12283070, 74088, 9853192, -22597434, -17393544, -1207423, 28680718,
--24647744, 320512, 609885, 13198971, -21046950, 21949430, 11552925, 6213744, -548682, -9155260,
--24424942, -258235, -5822902, 8833137, -13239774, -32455458, 26767846, -19559282, -8682813, -1372779,
-26197690, -19908248, 9214852, -16354162, 10167261, -5929739, -24021752, 11502459, -30616674, -6774237,
--8756365, 10703595, 25174950, -14546517, 9351218, 25458956, -20341502, 3360812, 6201933, 5979132,
-7577396, -37153076, -11069204, -6292127, 13429826, 2808372, -1074, 6784438, -6470905, 14826227,
--2641405, 3375844, -14221174, 12374338, 3245385, -22900228, -10378252, 10784663, 13569949, -1910724,
--3356517, -8957154, 12724914, 1596654, 292058, -23818278, 3974992, -11457362, -17942762, -5453535,
--3539053, -2320356, -10513006, -13662291, 5012764, -3142842, -6620155, 3936875, -1267552, -1952600,
-908386, -3652870, 1415192, 7379828, -13774497, 1410360, 2734821, -4567161, 10136123, 9336185,
-10736344, 4275103, 6532109, -6674379, 2911451, 361314, 3177202, -3024731, 272194, -186294,
-4576288, -2682744, -6071473, 43771084, 4236449, 18607946, 49758268, -23159000, -13325136, -19375672,
--7500624, 23212688, 1309965, 28543816, 7420093, -847182, -10788958, 21608518, -13561359, 5046587,
--9130027, 9017284, -14354854, 16500191, -8156680, -3652333, -9537512, 12720083, 8404714, -13676786,
--3495030, 13381507, 3793530, -8728447, 682900, -11271068, -37734508, 16422344, -19922206, -28722594,
-17638894, 8043400, 19093278, -1680406, -18995566, -6901476, -5233955, 11330661, 14774151, 16771310,
-27578522, 27523224, -12359842, 3896072, -29207926, 408022, -21321292, -37629820, -3912715, -30661234,
-9783936, -24467354, -16375637, -16171626, -23243826, 2382633, -5659693, 2037962, -7054484, -2816425,
--2204392, -39818104, 6184753, 6154688, 8917426, 19245212, -3805341, -31646930, 18194018, -20469278,
-11697343, 11791833, 25740812, -13992467, -13059922, -8449811, -5199058, -18351322, 7231115, 4326643,
-2183991, -4342212, 6381248, -9129490, 9206799, -1466195, 1813013, 2836826, -11500312, 8590,
-4345433, 11335492, -3067144, -6717329, 4846334, 7871065, 9565966, -5971615, -16106, 5471252,
--734439, -978179, -3659849, -7104950, 4992900, -74088, 3169686, -3942780, -615791, 6646462,
--4420058, -6681359, -3921842, 1120987, -2920578, -11787001, 19014894, -4784594, -3966402, 1709397,
-3612068, -3132105, 3470871, 4625680, -1901597, -470836, -2617246, -3830037, 31152472, 58289148,
--31998580, -25845502, -45173928, -91829088, -22741852, -9621800, 20497732, 12404402, -7974144, -17723182,
-25060598, 30662308, 2624762, -1484448, 141734, -24228448, -14318884, -17184164, -13228499, -25628070,
--381715, -6475737, -3129421, 17579838, -24101208, 19286014, 18060338, -5648419, 9281961, -1059246,
--42859480, -30514132, -17062832, -15599321, -7218767, 3381213, 16472810, 5349919, 8839043, 41352480,
-37568080, 8515310, -27975270, -14535243, -1253594, -14365055, -26530012, -66125852, -55605868, -24996710,
--5994164, 2729452, 14439680, -45870788, -26468272, 23790360, 27567784, 33143188, -30238718, -36666136,
-11915850, -22365506, 54385024, -27431420, -3157338, -16139413, -8761196, 7524783, 16073378, -8019778,
--21530672, 19987704, 19356344, -4378719, 22177064, 19739132, -43123620, 38585448, -25010132, 134218,
--7369627, -25753698, -7245073, 13065827, 9715753, -2077690, 5029944, -15697569, 353798, 7919920,
-10653666, 16839494, -12637941, 2575907, -3616899, -6838662, -17890686, -2174327, -17235166, 15220827,
--2809446, -18289582, 2912525, -20952998, -1409823, 2553895, -4875862, -9050033, 614180, 1704565,
-2193118, 6868727, -1301375, -298500, 12233141, 4014721, -12348031, -14127221, 3855807, -9363029,
--19967840, -6830072, -18784040, 6199786, 5935108, 14779519, 2004676, -15200963, -10908680, 10790032,
-54786064, -18260590, 17663054, -770947, -24383066, 3764002, -49229452, -11090142, 10584410, 966905,
--28655484, 16961362, 50190452, 35205848, -15529528, -31428424, -13381507, 3530463, 52741124, 7093676,
-1330903, 199716, 24387362, 25071334, 6556805, 19167366, 15547782, 29473676, -8398272, 3363496,
-18833432, -17188996, -26161182, 14694157, 43274480, 9375377, 20972326, 2007360, 12875775, -57930520,
-10721312, -2268817, 13084081, 56785372, 22915798, 7674033, -5640366, 25445534, -5814849, -11940009,
-8992051, 15810311, 33421288, -10780368, 20770998, 3777424, 5759551, 13145284, 16908750, -534723,
--22141094, -13745506, 5170067, 42828340, 29335700, 22785876, 24674588, 20656108, -5931350, -53048752,
--38113004, -72768560, -1030255, 22178138, 41872172, 6513855, -30569966, 10085657, -18927920, 6062883,
-14447196, 4367445, -8880382, -4922033, 128849, -4111358, 11707007, -8053601, -21189222, 396748,
-7012071, 9404368, -13721347, -6219113, -25491168, 6302328, 11033771, -9785546, -8825621, 6358162,
--5037460, -6297496, -5559835, -19791746, -4306242, 20402706, 12720083, 18472654, -10027675, -20919176,
--15575699, 13568875, 10634339, -4930623, -1006096, -1278290, 3717831, -5888937, 12168716, -13958644,
--7978976, 969052, 2218888, 8035347, -17350058, 3561065, -12778601, 33640332, -9990631, 7335268,
--11106785, 3878892, -20858508, -8732205, 44769128, -1823751, -20946556, 5119064, -4068408, -17020418,
--13842680, 2493229, 23553064, 64255396, 28704340, 56952340, 29635274, 25293062, 23938000, -16954920,
--14346265, -16224239, 6949257, 46664820, 14841259, -39041788, 16640314, -41975252, 20802674, -26634702,
--5847061, -23387708, -25300578, -1243930, 3030636, -411780, -31607202, 40862856, -8514773, 15325517,
--39922256, 10584947, -9443559, -12283070, 20379082, -16916802, 40968620, 4799089, -16454020, 2063195,
--12450573, -16928614, 11370389, -27965068, -6212134, 35014184, -7881802, 14297946, -2121177, -25472378,
-27632208, -15067819, -58098024, 7154342, 4110821, -283468, 6141267, -8029978, -11513734, -3288871,
-25956098, -49784576, 29148870, -11778411, -7166153, 32670206, -20382842, 9567040, 11826192, 47452948,
-16291885, 20944944, -3620121, 28333900, -22932978, 22462142, 3445638, -8759586, 5778879, 1296006,
-681289, -12326556, -3437048, 2128693, -5477694, -9244917, 19054622, 259846, -1636383, -5760088,
-6185290, -7643431, 16958678, 9935333, 9002251, 2056753, -334471, -1715303, 14153528, -11623255,
--15038828, 5603859, 7301982, -795106, 12681965, -5642514, -2844342, 558346, -4653597, -14486925,
--14642617, -1460826, 4576825, -7259032, 2251100, 4492536, 4898410, -3997541, -585726, 9319542,
--13623099, -24177444, 39688184, 36976448, 128737352, 52049100, -70138960, -32889786, -34357592, -53830436,
-37567544, 115807888, 46342160, 22031034, -29013040, -7915088, -1941862, -1292248, 55576340, 38143068,
-24253144, 83699784, -100140384, 6597607, 52366388, -12608413, 10777684, 54943368, 9632001, -15581604,
-29603598, -55146308, -110787608, -10485626, 10902238, -42881492, -4858682, 59466508, 10028212, 3588982,
-22584012, -46783468, -95454040, -87126096, -39672612, 28950228, 56761752, 125801200, 31594316, -15969762,
--15792058, -33964600, -75163000, -22742926, 55020680, 55458764, 58083528, 56726856, 35562328, 29591788,
-8554501, 12994424, -48297980, -29582124, 7194607, 13612362, 24776056, 30447560, 74711496, 19653234,
-43486544, -28527710, -28229746, -50608672, -11020349, -38687456, -9250823, 77973520, 100024416, 2240362,
--4054449, -62228172, -71832256, -40390948, -17080548, 39961448, 21242372, -4318053, 14816563, -5479842,
--10284299, -18753438, -17803176, -2348273, 4505421, 3718368, 21965000, -1571958, -496606, -11232950,
-356482, -13991393, -4730370, 51540, -20671140, -9294309, 411780, -5637145, -1481764, 12079596,
-10704669, 25223270, -11143830, -4583267, -25596394, -20706574, -15734076, 26125750, 16543140, 8188892,
-8652748, -8114804, -22742926, -18330384, 789737, -12926778, 22186190, 32952600, -8517457, -91468304,
--57002804, 33371896, 86161872, 101055208, 209268528, 128189208, 86421720, 77004472, 59290412, -10017474,
--91162832, -99053760, -193261184, -204773840, -194810048, -123944704, -43750148, 43570296, 74320648, 124753232,
-121874528, 86133960, 84371408, 108649784, 103573672, 93591632, 58783068, 41459320, 35929548, -3372086,
--6679211, -119639000, -85850488, -107017160, -130326488, -54338852, -127279744, -102146136, -187348624, -163325264,
--116372136, -77200960, -11916387, 97542464, 117423872, 99558416, 105678744, 98485744, 181598736, 237217488,
-211356416, 210297712, 184953632, 179213952, 132652216, 133264784, 28134720, -89485640, -187132800, -178376432,
--267623712, -222709088, -324954016, -386380096, -343978016, -326083040, -196828688, -136566544, 24632712, 65036544,
-152207200, 227101760, 349377344, 303155424, 436951168, 377958208, 270214112, 266318576, 120735288, 8944269,
--24729884, -94681480, -165959680, -197671568, -236801408, -204694928, -186028448, -178929408, -145939760, -149774096,
--123605936, -108258408, -33475512, -23013508, 29337310, 69844224, 79685600, 104644728, 148240800, 180031072,
-191355296, 200879920, 146976464, 122148872, 117831888, 43910136, 28419262, -66788888, -160451392, -212955216,
--218491424, -243868784, -155523984, -176704080, -118485264, -85106928, -24205898, 42155104, 82562160, 126500744,
-130667400, 197745120, 202465840, 195067744, 164701792, 148314880, 58227408, 14848776, -37970732, -84294104,
--161159520, -189090768, -157872256, -106834088, -95185600, -66264904, -61289720, -32001264, -5160403, 7349763,
-4319127, 27973122, 31084826, 50520088, 42119132, 39662948, 36180268, 42039140, 28331752, 27146340,
-29990146, 30527016, 11153493, 3393561, -7248831, -1510218, -4686883, 2255932, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-1261647, 4443144, 4995047, 2682744, -1933272, -7547868, -6924024, 2508798, 3972308, -1468342,
+7419019, -1438814, 4425427, -5273683, -4651987, 2025614, 181462, -1371168, 1959042, 4809290,
+-2097555, 664646, -2753611, -278099, 252866, 1968706, 1832340, 2467996, 406411, 1467805,
+5493263, -2124935, -2575370, -2780455, -4983236, 1428614, -1050656, 9104257, 1767379, -689879,
+713501, 5521718, -513785, -1209033, -1412507, -3245922, -597537, 4244502, -656593, 1757715,
+4293894, -1353452, -312459, -6916508, -4065724, -6307697, -1236414, -1836099, 927713, 338229,
+905164, 2242510, -1514513, 1080721, 67109, 550830, 957241, -2306398, 2172180, -751082,
+-2623688, -339302, -2645700, -811749, 243739, -4124779, 1087701, 179315, 3170760, 326418,
+-58519, -1899449, 421444, 3156801, 1543504, -796180, 348966, 695785, 766115, 2405719,
+285078, 142271, -586800, -371515, 238908, 86973, -251256, 1584843, 865436, 937914,
+670015, 488016, 201327, 471910, 5119064, 12112345, 4767951, 2874944, 3352222, -7099044,
+-846109, 3080029, -973347, 1211718, -6497749, 6389301, 8629663, 1501628, 3849365, -1808181,
+-5071820, -7830263, -8595840, -5697274, 6795175, -6412923, -4092567, -5425618, 1733019, 4532264,
+843424, 623307, 2517388, -245350, 1586454, 5582384, -792958, 4642860, -4422743, 4236985,
+2930778, 2697776, -2334852, -7196218, -1544041, 4136054, 2433099, -2004139, -251256, 1437203,
+-315143, -3467649, -739271, 2958159, -1022202, 336081, -1728188, -371515, 204011, 994285,
+5079336, 2137283, -2618320, 448824, 411243, -1719598, 918049, -2508798, -304943, 4137127,
+1333587, 4640712, -3318936, -2831994, -1708860, -724239, 2347737, 5259188, -3039226, -3791383,
+4510253, -417149, -97174, 164283, 1549946, 1125281, 3789235, -1061931, 1760937, -2309082,
+-2179696, 178241, 1016834, -152471, 67646, 879931, 940598, 734439, -1966021, 2207613,
+-461172, 3546569, 1509144, -3982509, -3751654, -4267587, -664109, -3483755, -7330973, -6988449,
+7218767, -158377, 1524713, -54224, 4399657, -6499896, 9663676, 8576513, 450435, 457414,
+19327, 255014, -947577, 3358665, 2619393, 212601, -5490579, 2382633, -1699196, 2643552,
+-760209, 5857262, -1358283, -3408594, -1538672, -919123, 2176475, -36507, 3628174, -5815386,
+3141769, 1014149, -3221762, 9152038, -1447404, -1310502, -186294, -142808, -2406792, -779000,
+4890894, 3998615, -8571144, -4046396, 4366908, 1255741, -2045478, 7463043, 279173, 1672890,
+7354595, 3034395, 5775121, 1629940, -2209224, -2996277, -5765994, -5593121, 819265, 2976949,
+7157563, 272730, -2909304, -3648575, 1250909, -67109, -1990717, 2320893, -799401, -1835025,
+1680406, 3875671, 1263257, -1943473, 1949915, 2018635, 2538326, 1624035, 135291, 241592,
+-2393908, -504659, -25770, 1230508, 1044751, 1974074, 1916629, 1585917, 609885, -155693,
+-9784472, -3417183, -4757750, 4440996, -3248069, 2882997, -3512747, -1459752, 8306467, 4052839,
+-5506148, 2508798, 7922604, 1155346, -2771865, -5565741, -6675990, -4584878, -6713034, 4454418,
+1017907, 2448668, -1285806, -3045132, -3204046, -5922223, 310848, -188442, 1408749, -1447941,
+-5378373, 82678, 5750425, -1278827, 68719, -2869038, -5729487, -8485782, -727997, 6107444,
+2223183, 638876, -2874407, 777926, -4600447, -1511829, -3461207, 436476, 783295, -5244692,
+5916855, -3335042, 7528541, 2843268, 716186, -3424163, -1794760, 1930588, -430570, 1826435,
+4041564, 817654, 1603633, -4476430, 2641405, -2252174, 6920266, 8566849, 3932043, 5756330,
+2681670, -882079, -6011344, -3885335, 496069, 4427575, 4465692, -3575560, 469225, 4207458,
+-5505611, 5434744, 348966, -2792266, 1792612, -1173600, -263604, -3105261, 609349, 877247,
+535797, -2491618, 659814, -1761474, -2335925, -818191, 165893, 1029182, -1524177, 374736,
+-660888, -2167348, 231928, 1782948, 748398, -1552094, 1003412, -1168231, 3275986, -7900593,
+1037772, -8448201, -37581, 1298691, 785979, 3816079, 382252, 609885, 14949171, -1869385,
+-6602976, -7115150, 7509214, 5037460, -5665062, 1376537, -6317897, -2700461, 212064, 7158637,
+-8864812, 2593087, -345208, 1422171, -674847, 9087614, -4693326, 2570001, -1418413, -2392834,
+1382443, -425202, 2724620, -2767033, -2576444, -7670275, 1207960, -2538863, -1649804, 621160,
+-2716030, 2279017, -4329327, -2565169, -7619809, -215822, -6764574, -2842732, -8046085, 5997922,
+1221918, -2453500, 5267241, -6084895, -22549, -11609297, -616865, 4038343, -307627, 3465502,
+7408819, -2576981, -1030792, 9278740, 3918621, 3596498, 5665599, -2902861, -8543227, -883690,
+-5108864, 3764539, 8540006, -1508607, 2517388, 4564477, 3835943, -425202, -697932, 1085553,
+183610, -1545651, 2318209, 2090039, -3527242, 1214402, 3022583, -1472100, -1056025, -5237713,
+-1196148, -2181844, -700080, -2264522, 494995, -519154, 445603, -197032, 393526, 1402844,
+-1517197, 593779, -600222, -1540283, -173946, -223875, -439697, 164819, 946503, 1544041,
+-1428077, 566399, -1200443, 271657, -97174, -1603633, -607738, -1076426, 4223027, 4776004,
+1727114, -2874944, 2066416, 1255204, 9092983, -1377074, -1955821, -12259447, -3469260, 9233643,
+9004399, 5803575, 4562329, 13140452, 807454, -15670188, -4024921, -2602213, -3803194, 8370892,
+-1330903, -3030100, 9740986, 1534377, -4024384, -1384053, 3885335, -3448859, -1372779, 1200443,
+-1251983, -5451924, -2483565, -246424, -5285494, -2408403, -2223183, 3695819, -2484639, 7109782,
+6895570, 681289, 6558952, 4616553, -2971581, -999117, -2257005, -10180683, 1140314, 2115808,
+-9701257, -1380832, -2754148, 3484292, 8853538, 1361505, -8989367, 1333051, -3468723, -6041409,
+4897874, -1402844, -6439767, 2933463, 2473364, 7128572, -571768, -864362, 5236639, 6214281,
+6811818, -6978785, 4937602, -873489, -1191317, 1860795, 7354058, -306553, -1967095, 2352032,
+1118302, -6213744, -825707, 8594766, 1887638, -521302, -1077500, -3837553, 2757906, -1388348,
+-1760937, 325344, -256624, 2018635, -132607, -2621541, -1909650, 3609383, -445066, 1450625,
+-1612760, 1770600, -1331977, -948114, -1317481, 947040, 1902671, 6259915, -16042240, 6675453,
+-1748052, -3659312, -3292629, 2753074, -1519882, -9512816, -10129680, 1239098, 15810848, 4358318,
+-11494943, 2597382, 9383967, -6744710, 1222455, -1701344, 5597953, -33286, 5166309, 13830332,
+10074920, 6289980, -229244, -1139240, -6385543, -6843494, 2731599, -17909476, -2826625, 8496519,
+956704, -900869, -8573292, -3054259, -359167, -383863, -4162897, -8865886, 9947144, -3430605,
+-2173254, -1597728, -8212515, -9238475, -284005, -4505958, 648003, 4405563, 3375308, 3729105,
+-7330436, -1901060, -3598646, -2288681, 11806328, -1240709, -5382131, 383326, 15138686, -8069707,
+2549063, 11143293, 352724, -2554432, -5609764, 3393561, 648540, 8026220, -4310000, 6791954,
+5515275, 10512469, 5091684, 7874286, 839666, -5150740, 1113470, -209380, -2967823, 4759361,
+6778532, -5615670, 3702262, 2029372, -5046050, 665720, 1800128, 1418950, 1842004, -2884071,
+1644436, -3161633, -948651, -873489, 227633, 593779, 1366873, 1732482, -352187, 2594697,
+-187368, -1155883, 904091, 1727114, -579821, 1048509, -2697776, 1074816, 9222369, 13238700,
+8085276, 1350767, -2843268, -4953708, -10998874, -3182034, 7249368, -14955613, -6142340, 13626321,
+-18886044, -3415573, 10546829, 13255343, -1371168, -13310641, 1833951, -5093295, 17792438, 7893076,
+-12241194, -7873749, -1893544, -7548405, -15402826, -7703561, -6841883, -5574331, -12476343, 6266358,
+2199560, 7693360, -4758287, -2305861, -10976863, -1128503, -9526237, 985695, -6337224, 1394791,
+3313567, -14694694, -4836670, -5598490, -3911642, 3158949, 3123515, -4696547, 14467597, -945967,
+-3798899, -2724083, 1386201, -3406983, -1207960, 5379984, 4578435, 6023692, 7934415, 7532299,
+585726, 4937065, -2423435, 11288248, 12073153, -6085969, -3171833, 7407745, -223338, -18336290,
+832687, -9316321, 5672041, 5788006, 10354629, -7872138, 4402342, -11042898, -1082332, 6297496,
+-2703682, 9841381, -2575370, -1207960, 1969243, 638340, 1373853, -659814, 571768, 4181151,
+-3112241, -800475, 4019553, -626528, 3155190, -4719096, -4102768, 2767033, -664646, 863825,
+433255, -567473, 721018, -2824478, -741419, -494458, -1230508, -1910187, -666257, 1493038,
+1794760, -92342, -10160819, -12294881, -6022081, -11878269, -16950088, 11992086, 1185948, 6710350,
+-9367861, -9747428, -13442711, -9094056, 4149475, -9970230, -8952859, 12193949, -3053722, 573378,
+2948495, 6965900, -5417028, -4109210, 2011118, -3291019, 1905355, -621160, -6020471, -11523934,
+-18037788, 5957657, -12956306, -11883101, 624381, -3134789, -833224, -6691022, 3023120, 3433290,
+-14703821, -326418, -3229279, -5761162, -8175470, 4642323, 993748, 14688251, 1752347, -8252780,
+-513249, 1357747, 6060736, 2529736, 13030394, -1127429, -14179835, 6060736, -3009162, 6396280,
+-8478802, 1840394, 4811437, -25080998, -11909407, 8854612, -770410, -2700461, 3850975, -1285269,
+15833397, -566936, 10027675, 8704288, -12834436, -14904610, 867047, -16510928, -379568, -824634,
+333934, 2389076, 10342281, -372052, -6495065, 5919539, 7782481, -7274064, 1275068, 2330020,
+7828652, -3836480, 274878, -3890167, 2647847, -224949, 1657857, 2593087, 4218195, 4258997,
+-129386, -4112431, 183610, 3025268, 952946, 626528, -3747896, 397821, -3753802, -560493,
+2032056, -613107, 3688303, 2728915, -157840, 770410, 2986613, -2782065, 5267241, -118648,
+-2309082, 2355790, 8559870, 35158604, -8695698, -23583128, -2152852, -10304163, 25499220, 1992865,
+14262513, 7750269, -4498442, -11282342, -5114769, -12294344, -3213709, 17214766, -19205484, 831076,
+-15676631, 4262218, 1255204, 7653632, 1721745, -7478612, -12712566, -14747307, -2783676, -14467060,
+-11384885, 1874753, 3332358, 10790568, -10115185, -20985748, -4440460, -7275138, 2481954, -9856950,
+-6709276, 3046743, -5294084, -8338142, -606127, 930934, -4308926, 20487530, -4231617, -3340948,
+5136781, 5366562, -6106370, -2562485, 15113990, 12721693, 8308614, 15992848, 12482249, 44560,
+5214091, 9094056, -6771553, -6324340, 1843615, 6558952, 10606422, 4376572, 21544092, 2384781,
+14443438, -4078072, -8359617, -5359583, 30586072, 5456756, -3978214, -3670050, -10991895, -10493679,
+-7577396, -7352447, -8798777, 3533684, 7049652, -7473243, 2408940, 7625715, 3779571, -6898791,
+1403917, 7778186, -1941325, 4313221, -3872987, -1069447, 1737851, -1297080, -869194, -2310156,
+-4946729, -755377, -4480188, 2391223, 3753265, 1930051, -3735011, 4980015, 3225521, -2732136,
+-3263102, -5051419, -1505386, -1384053, 1336809, -1091459, 2363843, 1772748, 443992, -478352,
+89121, -4026532, 1690607, 6812355, -30944702, -11268920, 15279346, -3518652, -15878494, -14592688,
+-5120138, 16877074, 8762807, -13286481, 7306813, -17734456, -7480760, -2004139, -11887396, -15917149,
+13370770, 7563975, -14442364, -4904316, 30726196, 7302518, -13759465, -18648748, 264141, 10244571,
+1666447, 1862942, -21562346, -511101, -2471217, -15336254, -9043591, -6119255, -12403329, -5749888,
+3570729, 590558, -13086765, -12960601, 1657321, 8315057, -224412, 11106785, 18422726, -12859669,
+11416023, 8710731, 3629247, 2580202, 13889924, 4422206, 8565239, 5817533, 7720204, -2514703,
+-1671279, 15939161, 24795920, 4186519, -5766531, 3118683, -3564286, -9315247, 15782394, -7637526,
+-13298292, -20956756, -7225746, -24432996, 12257300, -9923522, -4225711, -1359357, -3520800, -8741332,
+-1462436, 9824201, -11150809, -919123, 5157719, -3141232, -10872173, 5527623, 901406, 3103114,
+-711891, -1227824, -3879966, -363998, -2004676, 5895380, 1549410, 1676648, 963146, 1970316,
+95563, 3034931, 2030446, 5234492, -7219303, -784905, 616865, 4862977, -1962263, 4064113,
+-4342749, 1574642, 1087164, -877784, -2392834, 4262755, -1886028, -263067, 2441689, 817118,
+261456, -5805185, -13565117, 11527692, 6928319, -2055679, 7719667, 5714454, 16422881, 12638478,
+-26656714, -8862128, 29672318, -23380192, -6886980, -14168023, 21150566, 9400610, 9758166, 4093104,
+3118683, 8450885, 22437446, 10661183, -9848897, -202400, 765578, -634581, 8897025, 9968619,
+1236951, 5896990, 5667210, -5149129, 6969122, 4167192, 13874892, -6655052, -13295608, -11443940,
+-8888435, 2635499, -1135482, 5286031, 6030671, 6036040, 12222403, -5350456, 2598992, -5392869,
+-9486509, -3853660, 1035624, -10964515, 14031658, 16949552, -18396418, 6277095, -12736726, 10420664,
+-2062121, 4050154, -1376000, -10198937, -2462090, 11727945, -9154186, -2825015, 2097018, -18808736,
+-7169374, 3939022, -14529874, -1012002, 23293218, 11573863, -1553168, -5329518, 18588618, 4876399,
+13390097, -4208531, -5989332, 19390704, -6571300, 6051609, 2592013, 2753074, -3985193, -2927020,
+-3562139, -2472291, -6519761, -4032974, -4541928, 650688, 4202626, -1547799, -9160628, -2947958,
+-1260036, 1032940, -277025, -2285460, 42950, 2583423, 4478577, -3576097, -106837, -9888088,
+1675037, -1235877, -1866700, 6665789, -117038, -646393, -3935264, 4075924, 1120450, 6037114,
+-2063732, -357019, -4051228, -447213, 18521510, -1506997, -4325569, -15394773, 652835, 1467805,
+-4153770, -325881, -7161321, 2708514, -22139482, 20195474, -4100620, -7141994, -14021458, -15804943,
+-1655173, 19266686, -3515431, 5342940, -11926587, -6871948, -3345780, -11583527, -14010183, 12790949,
+-7925289, -6432788, 11310796, 11026792, -15611132, 5436355, 5870684, 13502840, 11125039, -4068408,
+-9889699, -6219650, -15181099, 16680579, 10945187, 5539971, 11870753, -12314745, 8410083, -1785096,
+7707319, 8571144, -8091719, -634581, 27118424, 22754200, -17226040, 6890738, 14067092, -10828149,
+3330210, -25365540, 7575249, -13724031, 11320997, -7961796, -8795019, -6199786, 30258044, 1731946,
+-8846559, 2686502, 10160819, 1339493, 6034966, -16317654, -1880659, 27197344, -915902, -10681047,
+-16655883, 514322, -12334609, 7686918, 7822746, 9506373, -17011292, -17743584, -4758287, 2987150,
+5814312, 1852742, 70867, 435402, 6446746, -4353486, -1767379, -1348083, -2881386, 3187403,
+2680060, -5427228, -3759170, -8337069, 5077188, -3058017, 2206540, 3651259, 5345624, 4267587,
+1821066, 8375723, 510564, -1952063, 3989488, -6223945, 3454764, 2410551, 1682017, 5543729,
+5918465, 1100049, -845572, 3503083, 377420, -537945, -6575058, -8588861, -1648194, -663036,
+-1087701, -16742856, -868657, -1991791, 4880157, -24310588, -11260331, -13619878, 11486890, -5768141,
+17092896, 10424959, 21763136, -10776610, -913754, -17056388, 14504641, 26466126, -8246874, -20946018,
+2043868, -4242891, 32416266, -7939247, -12734578, 12412455, 6802155, 5228049, 12202539, 4212289,
+-40770512, 205622, -2747169, 15976205, 28619514, -26985816, 1060320, 8174397, -12983686, -2566780,
+-36968932, -8303783, 18838264, -30351998, -18211736, -9271224, -11911018, 12191802, -7377680, -10772315,
+16279537, 5018133, 5931350, 16858284, 1840394, -5713380, 11939472, 17686676, -17149268, -12706661,
+26209502, 18095770, 6077379, 8396661, 6188511, -11733314, -17044578, 46708, 219580, -3435974,
+5361730, -10245644, 7315940, -14215805, 5789079, 33410014, -15524696, -12753369, 18332532, 5354214,
+-6249178, 11672110, 16112570, 12050068, 14238890, 7128035, -7243463, 5946919, -17581448, 9468792,
+3980361, 5039608, -8922258, -2591476, 1864553, -757525, -1783485, -2603824, 5769215, 11367168,
+-4414153, -10835129, 6919193, 13135621, 6820408, 5211943, -15465640, 9441412, 1005022, 5143224,
+-2480344, -5218922, -1235877, 7971996, 719407, -1382443, -6673306, -471910, -3891240, -1845225,
+-3084324, 3590593, 7460895, -4411469, 295279, 4786741, -1844152, -742493, -4076461, 821413,
+-2731599, -2965675, 9670656, 8733279, 14242112, -32988570, -60928408, -28082644, -4271345, 20737712,
+1468342, 22868554, 21125334, -6389838, 3424163, -5175436, -11587822, -19051402, -11087458, -13752485,
+-7998840, 21725018, -28238336, -4909685, -23535348, -29190746, -5112085, -29460254, -23703388, 2902324,
+-6201396, -3400004, 5360656, 25853556, 1804960, -18762028, 1069447, -2250563, -5645198, -24363738,
+-1597191, 29041496, 2686502, -495532, 11766600, 22561464, 15187541, 3946001, -9188009, 7866770,
+-7718056, -20679730, -37922952, 36074504, -4566624, 30051350, -2530273, 399969, -10799158, -17364552,
+31679142, -18000744, -14626511, -1520955, -23082228, -21686364, 18031346, 13224204, 6940667, -2301566,
+9185861, -16013786, 6231461, -12995497, -18344880, -20022600, -15614890, -6438156, 15515032, 987843,
+5576478, -9262634, 5494337, -12119324, 8833137, 6860674, 6293738, -3946538, -497679, 7817378,
+-2118493, -9453223, -7124277, -9357123, -799401, -6905234, -1588601, -2423435, -2505040, 2767570,
+1147293, -3710852, 1619203, 4923107, -1277753, -3118146, -7314866, -47782, -5018670, -680215,
+-795106, -3471944, 8587787, -8027831, -7507603, -3543348, 4575751, -7104413, -7137699, 1040993,
+-5959804, -27380, -1031866, 3370476, -743029, 1145146, -4796405, 1972464, -9982578, -5036386,
+-1467805, -21164526, -15495705, -23486492, -242129, -22465364, -26086558, -4413616, -11917461, -28652264,
+-39670464, 4494684, -15010374, 7315940, -2858301, 14875619, 33423972, 1688459, 3463891, -16959216,
+-18142478, 15108084, 8449274, -12283070, 74088, 9853192, -22597434, -17393544, -1207423, 28680718,
+-24647744, 320512, 609885, 13198971, -21046950, 21949430, 11552925, 6213744, -548682, -9155260,
+-24424942, -258235, -5822902, 8833137, -13239774, -32455458, 26767846, -19559282, -8682813, -1372779,
+26197690, -19908248, 9214852, -16354162, 10167261, -5929739, -24021752, 11502459, -30616674, -6774237,
+-8756365, 10703595, 25174950, -14546517, 9351218, 25458956, -20341502, 3360812, 6201933, 5979132,
+7577396, -37153076, -11069204, -6292127, 13429826, 2808372, -1074, 6784438, -6470905, 14826227,
+-2641405, 3375844, -14221174, 12374338, 3245385, -22900228, -10378252, 10784663, 13569949, -1910724,
+-3356517, -8957154, 12724914, 1596654, 292058, -23818278, 3974992, -11457362, -17942762, -5453535,
+-3539053, -2320356, -10513006, -13662291, 5012764, -3142842, -6620155, 3936875, -1267552, -1952600,
+908386, -3652870, 1415192, 7379828, -13774497, 1410360, 2734821, -4567161, 10136123, 9336185,
+10736344, 4275103, 6532109, -6674379, 2911451, 361314, 3177202, -3024731, 272194, -186294,
+4576288, -2682744, -6071473, 43771084, 4236449, 18607946, 49758268, -23159000, -13325136, -19375672,
+-7500624, 23212688, 1309965, 28543816, 7420093, -847182, -10788958, 21608518, -13561359, 5046587,
+-9130027, 9017284, -14354854, 16500191, -8156680, -3652333, -9537512, 12720083, 8404714, -13676786,
+-3495030, 13381507, 3793530, -8728447, 682900, -11271068, -37734508, 16422344, -19922206, -28722594,
+17638894, 8043400, 19093278, -1680406, -18995566, -6901476, -5233955, 11330661, 14774151, 16771310,
+27578522, 27523224, -12359842, 3896072, -29207926, 408022, -21321292, -37629820, -3912715, -30661234,
+9783936, -24467354, -16375637, -16171626, -23243826, 2382633, -5659693, 2037962, -7054484, -2816425,
+-2204392, -39818104, 6184753, 6154688, 8917426, 19245212, -3805341, -31646930, 18194018, -20469278,
+11697343, 11791833, 25740812, -13992467, -13059922, -8449811, -5199058, -18351322, 7231115, 4326643,
+2183991, -4342212, 6381248, -9129490, 9206799, -1466195, 1813013, 2836826, -11500312, 8590,
+4345433, 11335492, -3067144, -6717329, 4846334, 7871065, 9565966, -5971615, -16106, 5471252,
+-734439, -978179, -3659849, -7104950, 4992900, -74088, 3169686, -3942780, -615791, 6646462,
+-4420058, -6681359, -3921842, 1120987, -2920578, -11787001, 19014894, -4784594, -3966402, 1709397,
+3612068, -3132105, 3470871, 4625680, -1901597, -470836, -2617246, -3830037, 31152472, 58289148,
+-31998580, -25845502, -45173928, -91829088, -22741852, -9621800, 20497732, 12404402, -7974144, -17723182,
+25060598, 30662308, 2624762, -1484448, 141734, -24228448, -14318884, -17184164, -13228499, -25628070,
+-381715, -6475737, -3129421, 17579838, -24101208, 19286014, 18060338, -5648419, 9281961, -1059246,
+-42859480, -30514132, -17062832, -15599321, -7218767, 3381213, 16472810, 5349919, 8839043, 41352480,
+37568080, 8515310, -27975270, -14535243, -1253594, -14365055, -26530012, -66125852, -55605868, -24996710,
+-5994164, 2729452, 14439680, -45870788, -26468272, 23790360, 27567784, 33143188, -30238718, -36666136,
+11915850, -22365506, 54385024, -27431420, -3157338, -16139413, -8761196, 7524783, 16073378, -8019778,
+-21530672, 19987704, 19356344, -4378719, 22177064, 19739132, -43123620, 38585448, -25010132, 134218,
+-7369627, -25753698, -7245073, 13065827, 9715753, -2077690, 5029944, -15697569, 353798, 7919920,
+10653666, 16839494, -12637941, 2575907, -3616899, -6838662, -17890686, -2174327, -17235166, 15220827,
+-2809446, -18289582, 2912525, -20952998, -1409823, 2553895, -4875862, -9050033, 614180, 1704565,
+2193118, 6868727, -1301375, -298500, 12233141, 4014721, -12348031, -14127221, 3855807, -9363029,
+-19967840, -6830072, -18784040, 6199786, 5935108, 14779519, 2004676, -15200963, -10908680, 10790032,
+54786064, -18260590, 17663054, -770947, -24383066, 3764002, -49229452, -11090142, 10584410, 966905,
+-28655484, 16961362, 50190452, 35205848, -15529528, -31428424, -13381507, 3530463, 52741124, 7093676,
+1330903, 199716, 24387362, 25071334, 6556805, 19167366, 15547782, 29473676, -8398272, 3363496,
+18833432, -17188996, -26161182, 14694157, 43274480, 9375377, 20972326, 2007360, 12875775, -57930520,
+10721312, -2268817, 13084081, 56785372, 22915798, 7674033, -5640366, 25445534, -5814849, -11940009,
+8992051, 15810311, 33421288, -10780368, 20770998, 3777424, 5759551, 13145284, 16908750, -534723,
+-22141094, -13745506, 5170067, 42828340, 29335700, 22785876, 24674588, 20656108, -5931350, -53048752,
+-38113004, -72768560, -1030255, 22178138, 41872172, 6513855, -30569966, 10085657, -18927920, 6062883,
+14447196, 4367445, -8880382, -4922033, 128849, -4111358, 11707007, -8053601, -21189222, 396748,
+7012071, 9404368, -13721347, -6219113, -25491168, 6302328, 11033771, -9785546, -8825621, 6358162,
+-5037460, -6297496, -5559835, -19791746, -4306242, 20402706, 12720083, 18472654, -10027675, -20919176,
+-15575699, 13568875, 10634339, -4930623, -1006096, -1278290, 3717831, -5888937, 12168716, -13958644,
+-7978976, 969052, 2218888, 8035347, -17350058, 3561065, -12778601, 33640332, -9990631, 7335268,
+-11106785, 3878892, -20858508, -8732205, 44769128, -1823751, -20946556, 5119064, -4068408, -17020418,
+-13842680, 2493229, 23553064, 64255396, 28704340, 56952340, 29635274, 25293062, 23938000, -16954920,
+-14346265, -16224239, 6949257, 46664820, 14841259, -39041788, 16640314, -41975252, 20802674, -26634702,
+-5847061, -23387708, -25300578, -1243930, 3030636, -411780, -31607202, 40862856, -8514773, 15325517,
+-39922256, 10584947, -9443559, -12283070, 20379082, -16916802, 40968620, 4799089, -16454020, 2063195,
+-12450573, -16928614, 11370389, -27965068, -6212134, 35014184, -7881802, 14297946, -2121177, -25472378,
+27632208, -15067819, -58098024, 7154342, 4110821, -283468, 6141267, -8029978, -11513734, -3288871,
+25956098, -49784576, 29148870, -11778411, -7166153, 32670206, -20382842, 9567040, 11826192, 47452948,
+16291885, 20944944, -3620121, 28333900, -22932978, 22462142, 3445638, -8759586, 5778879, 1296006,
+681289, -12326556, -3437048, 2128693, -5477694, -9244917, 19054622, 259846, -1636383, -5760088,
+6185290, -7643431, 16958678, 9935333, 9002251, 2056753, -334471, -1715303, 14153528, -11623255,
+-15038828, 5603859, 7301982, -795106, 12681965, -5642514, -2844342, 558346, -4653597, -14486925,
+-14642617, -1460826, 4576825, -7259032, 2251100, 4492536, 4898410, -3997541, -585726, 9319542,
+-13623099, -24177444, 39688184, 36976448, 128737352, 52049100, -70138960, -32889786, -34357592, -53830436,
+37567544, 115807888, 46342160, 22031034, -29013040, -7915088, -1941862, -1292248, 55576340, 38143068,
+24253144, 83699784, -100140384, 6597607, 52366388, -12608413, 10777684, 54943368, 9632001, -15581604,
+29603598, -55146308, -110787608, -10485626, 10902238, -42881492, -4858682, 59466508, 10028212, 3588982,
+22584012, -46783468, -95454040, -87126096, -39672612, 28950228, 56761752, 125801200, 31594316, -15969762,
+-15792058, -33964600, -75163000, -22742926, 55020680, 55458764, 58083528, 56726856, 35562328, 29591788,
+8554501, 12994424, -48297980, -29582124, 7194607, 13612362, 24776056, 30447560, 74711496, 19653234,
+43486544, -28527710, -28229746, -50608672, -11020349, -38687456, -9250823, 77973520, 100024416, 2240362,
+-4054449, -62228172, -71832256, -40390948, -17080548, 39961448, 21242372, -4318053, 14816563, -5479842,
+-10284299, -18753438, -17803176, -2348273, 4505421, 3718368, 21965000, -1571958, -496606, -11232950,
+356482, -13991393, -4730370, 51540, -20671140, -9294309, 411780, -5637145, -1481764, 12079596,
+10704669, 25223270, -11143830, -4583267, -25596394, -20706574, -15734076, 26125750, 16543140, 8188892,
+8652748, -8114804, -22742926, -18330384, 789737, -12926778, 22186190, 32952600, -8517457, -91468304,
+-57002804, 33371896, 86161872, 101055208, 209268528, 128189208, 86421720, 77004472, 59290412, -10017474,
+-91162832, -99053760, -193261184, -204773840, -194810048, -123944704, -43750148, 43570296, 74320648, 124753232,
+121874528, 86133960, 84371408, 108649784, 103573672, 93591632, 58783068, 41459320, 35929548, -3372086,
+-6679211, -119639000, -85850488, -107017160, -130326488, -54338852, -127279744, -102146136, -187348624, -163325264,
+-116372136, -77200960, -11916387, 97542464, 117423872, 99558416, 105678744, 98485744, 181598736, 237217488,
+211356416, 210297712, 184953632, 179213952, 132652216, 133264784, 28134720, -89485640, -187132800, -178376432,
+-267623712, -222709088, -324954016, -386380096, -343978016, -326083040, -196828688, -136566544, 24632712, 65036544,
+152207200, 227101760, 349377344, 303155424, 436951168, 377958208, 270214112, 266318576, 120735288, 8944269,
+-24729884, -94681480, -165959680, -197671568, -236801408, -204694928, -186028448, -178929408, -145939760, -149774096,
+-123605936, -108258408, -33475512, -23013508, 29337310, 69844224, 79685600, 104644728, 148240800, 180031072,
+191355296, 200879920, 146976464, 122148872, 117831888, 43910136, 28419262, -66788888, -160451392, -212955216,
+-218491424, -243868784, -155523984, -176704080, -118485264, -85106928, -24205898, 42155104, 82562160, 126500744,
+130667400, 197745120, 202465840, 195067744, 164701792, 148314880, 58227408, 14848776, -37970732, -84294104,
+-161159520, -189090768, -157872256, -106834088, -95185600, -66264904, -61289720, -32001264, -5160403, 7349763,
+4319127, 27973122, 31084826, 50520088, 42119132, 39662948, 36180268, 42039140, 28331752, 27146340,
+29990146, 30527016, 11153493, 3393561, -7248831, -1510218, -4686883, 2255932, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-5173288,
--13850196, -1168231, -2212982, -1891933, 205622, -2310693, 863288, 1357210, 5676336, -1917166,
--228170, -5236102, 386010, 5262409, 366683, 3803194, -1122597, 1596117, -2198487, -3307125,
-111669, 3615289, -463856, -4532264, -186294, 4386236, 1431298, -1881196, -1564979, -208306,
--601832, -1027034, 54761, -744103, -1506997, -194347, 904091, 612033, -196495, -3453691,
-5136244, 6989523, 230318, 811749, -2819646, -1607392, 561567, -3653407, -4043712, 2419140,
--3282966, 2390686, 3110630, 3086471, 1168768, -470299, 847719, 643708, 2344515, -5027259,
-447213, -651224, -3643206, -4951024, 160524, 2469606, -1868311, -264141, -557272, -351114,
-3506841, 1727651, 486942, 1364189, -1117765, -4074313, 1604707, 658204, 3510599, -4188667,
--3149285, 2361158, -1848983, -873489, -3093450, 705448, -1806571, -1703491, 69793, -1365800,
--1457605, 408022, -774705, -376883, -1662152, 1044214, -179852, 98247, -420907, 853088,
--129923, 276489, -270046, -266825, -12686797, -2997887, 4943508, -763430, -3901441, 1595580,
--9404905, -3697967, -1354525, -1771137, -4859219, -5214627, 2791729, 4199941, 3682398, -4881767,
--7074885, 731218, -4137664, -7637526, 1743757, -552440, 2153926, 8432631, -2787971, -969589,
--5359046, 7276749, 579821, 3595425, 2544768, 5961952, 3080029, 1794760, -5974837, -749472,
--5492727, -1588601, 252329, -2381559, 1861332, 1492501, -2592550, -5178657, 3266323, 5258114,
-1510218, -2604898, -3934190, -2514703, 1275068, -4507032, -5614596, -1665374, 2795487, -1617055,
-1384053, 3475166, 2245194, -2688113, 5138929, 400506, 4378719, -3716221, -3068754, -1840394,
--2139968, 2994666, -1704565, 128312, 5188321, 1790465, 141197, -4949950, 1347009, -2003602,
-3643206, 5227512, -897648, 390305, -2395518, 1954747, 4655208, -1690070, 2906082, 1272384,
-628139, 2350958, 965831, 78920, 1921461, 687195, -138513, -23622, 858457, 738198,
--844498, 609885, 658741, 947577, -2592013, 3271691, 4522601, 1822140, -2815888, 1967095,
--1316944, 1361505, 8497593, 5231807, -7159711, 4862977, -3935801, -1950452, -1028108, 139586,
-3617973, 132070, 9936407, 2864743, -3801583, -2507187, -2464238, 6987375, 1653026, 6729140,
-2216740, 4529043, 7031935, 8051990, 3071975, -914828, -798864, 1210644, -6451041, -6013491,
-1925756, -4566624, 2597918, 1240172, -1540820, -679142, 1898912, 6717329, -2198487, -2291365,
--3452617, 8582418, -1157494, -10719165, -5339718, -4254702, -3892314, 4417374, 4257387, 3731790,
-5602785, 2476586, 3513283, -164819, -332323, -166967, 5634460, 1821066, 3307662, -7464653,
-492311, 334471, 408022, 483184, 3248069, 2262911, 944356, -3622268, -3593814, 2081449,
-1745367, -1073742, -220654, -2920041, -3694746, -3033321, 2062121, 3570729, 442382, 197032,
-1253594, -1047435, -125628, -830539, 653372, 622770, 379031, -505196, 1080184, 1708860,
--248034, 160524, 385473, -284542, 460098, -719944, 1260036, -1074, -236760, -820339,
-1114007, -2172180, 1224066, 345745, 922881, -169651, 18855980, 4178466, 2876554, -2253247,
--1306744, 1875290, 1321239, 5076652, 6655052, -258235, 9797894, 3955665, -3455301, -3186866,
--247497, 4736275, -552977, -2508798, 5185100, 778463, 14128832, 3750580, 2796561, 633508,
--1365263, 718333, 2137283, 2792803, -642635, 82141, 7580081, 1114544, 8344585, -4143033,
--4013647, 2808909, 12530030, 3686693, 3025805, -1029718, -5422396, -2072859, 1692217, 430570,
--126702, 518080, -7693897, 603980, -3387119, 3140158, 2423435, -2975876, 1766305, 2759517,
-1809792, -3551401, -3715147, 947577, 1309428, 75699, -4775467, 1313186, -1861332, 3127810,
--444529, 663036, 1939178, -667331, 1069984, -1633698, 520228, 11070815, 1242319, 3969087,
-127775, -2957622, 1803886, 729608, 3404299, -6044630, -4267587, 2167348, -900869, 1333051,
--1596654, 2407329, 1951526, 324270, -2712809, -945967, -3689914, -576599, -850940, 2450816,
--1703491, -368830, 398895, -242666, -889595, -802622, 686658, -856846, -1241246, 73014,
-43487, 753230, -2499134, -880468, 628139, 453119, -2720325, -568009, -185220, -3400004,
--397284, 2777233, -4158065, -721555, 4229469, -2142652, -6557878, -42950, 10821170, -752693,
-8495982, 4348118, 11752641, 1410897, 1100049, 4266513, -3300146, -7017440, -9210557, 2159295,
--4686883, 10821707, 6204617, 7640210, -1428614, -3202435, 970663, 1700270, 3595425, 10123238,
-1230508, 4205310, -4619238, 3208878, -3273302, 1362042, -1757715, 3313031, 5823439, 756988,
-5564667, 2005213, 2793339, -1637993, -1324997, 7385733, -1717450, -1892470, 5604933, -3382287,
--300648, 759136, -2433099, -3285650, 2488397, -3763465, -698469, -4794257, -10122701, -1183264,
--1529008, -314069, -10549513, -4083977, -3213173, -2789045, 3979824, 10349797, -2642479, 3286724,
-5449777, -1577864, 1030792, 858993, 624381, -3854196, 4144107, -4873714, 1260573, 3388192,
-9754944, 2978560, 2890513, 815507, -126165, 2868501, -3524558, -105227, 2012192, 876173,
-172872, -4027606, 2354179, 2796024, 2890513, -631360, 2150705, 1087164, 604517, 1874216,
-1130113, 144955, 1105417, -364535, 855772, 461709, 719407, 1038308, 1412507, 1580548,
-1156420, 1025960, 1253057, -850404, 1131724, -13722957, 1202054, 7348689, 3891777, -7707856,
--566399, 340376, 1826435, 2795487, -429497, -6008123, -5720897, 864899, 9724343, 4590783,
-5770826, 9745281, -6605660, 6943352, 12911745, -1222455, 2917357, -7357279, 2521146, 2598455,
--6270116, -3426310, -1346472, 2922188, -6335614, -8425115, 1612760, 861141, -7170985, 507343,
-2278480, -1535451, 15305116, -945967, -10823854, -820339, 3758097, 8526047, 3190624, 3771518,
--6934762, 1825361, 2209224, -6296959, -391916, -1159104, 10633802, 6391985, -1748589, -3758633,
--8211441, 3430605, 3312494, -4975720, -152471, 1850057, 3233037, 3182034, -4175782, -243203,
--900869, 9835475, -8361228, 898722, -2169495, 8840116, -632971, -2328946, -3752191, 987306,
--3883724, -9276592, 263604, 6808060, 2089502, 4213363, 1095217, -3436511, -1299765, -1806571,
-5925445, 2202781, -1600412, -369367, 5381057, 3867618, -1510218, 424665, 852551, 1005022,
--98247, 1998770, 1496796, 1160715, 141197, -909459, -340376, 270046, -768262, 97711,
--1072668, -515933, 881005, 5214091, 4747013, 1668058, -3483755, 965831, 2272038, 16044924,
-10657961, 7970923, 11303280, 4550518, -981400, 1582159, 4177930, -11433203, 5841156, 132607,
-6279779, -4636417, -2338610, -7391639, 2074469, 12901545, -12679817, -8088497, -13480292, 6771553,
--3090766, 374736, -6149857, 734439, -2308545, -6190659, 2317135, 2945811, -9598715, -1367947,
-1703491, -2171643, 5024575, -13942538, -6753299, 14140106, 1391569, -309238, -1439351, 442382,
--7249368, -7719130, 416612, -11203422, -2609193, 1065152, 2949032, -4849555, -1140314, 13778792,
--930397, 4800700, 10256919, -9644886, -3370476, 2198487, 2401961, 1793149, -2975876, -6906845,
-7824357, -919660, -7348152, 5324149, -1345399, 1210644, 2020245, -3996467, -2415919, -1720134,
--3009162, -4326106, -5168457, -4991826, -6331856, -1956358, -2685428, -670015, -828392, -122407,
-826781, -2639794, -2066416, 1450088, 1756105, 2850248, -157303, -1212255, -3715684, -1090922,
--4293894, -2782602, -567473, 810675, -296890, 552977, -1069447, -666257, 3226057, 1213328,
-2248416, -2181844, 598074, 505196, 872952, -4393215, 365072, 1292785, 49392, 2325188,
--26616986, -14918569, 12118787, -4723391, -5605469, 7218230, 6423124, -11487427, -15331423, -5024038,
--5429376, -5881421, -963683, -10689637, -7559143, 3787088, 500901, -14351096, -15631533, -8902393,
--4220879, -891206, 8139500, -677531, -5781563, 4321274, -12994960, 295816, -520765, 456340,
-4663261, 2408940, -9440875, -7276212, 5816460, 1898376, 21369610, 5112085, -6986838, 852014,
-791348, 102542, 5717675, 957241, 2448668, -2306398, -4571456, 1265405, -12127377, -2410014,
--5225365, -6597070, 1521492, -9862856, 11455215, -1589675, 4854924, 7985955, 2522757, 4172561,
--412854, -5397164, -104153, -807991, -6427419, 8385924, -3404835, 15025406, -372052, -479426,
-835371, -4067334, -8076149, 2425046, -6307160, -2745021, 9016210, -11599633, -11132555, 7421704,
-7330436, 6032282, -9408126, 6759742, 3022046, 3886409, -138513, 1627793, 2030446, 5228049,
-2445984, 1185948, 4138201, -659814, -81604, -3390340, -2367601, -652298, 2877091, -3630321,
-652835, -530428, -1882806, -1395864, 1078037, -4634270, -2570001, -3488587, -404264, 1328756,
-166967, 3216931, -926102, 3371549, 501437, 1175747, 754841, 2583960, -1899986, -1826435,
-5506148, 19712826, -10964515, 9351218, 3972845, 6951942, -2716567, -10838887, 1632088, -2887292,
--9976672, 20339892, -1345399, -5731097, -20018306, 12300786, 3524558, -284542, -7423851, -8759049,
-321586, 20654498, 7800198, -867583, -1957431, -8951249, -7152731, 5917928, 2729989, -7016366,
--4811974, 7165079, 1887638, -363998, 6292127, 9498320, 1581085, 12559021, 14397267, 8624831,
--3229279, 3087545, 1241782, 2294050, 7542500, -10685342, 11235634, -842887, -5611375, -8679592,
-116501, 7256347, 5198521, -10232760, 2287607, 7946227, 1293322, -7435662, -15806553, -14513231,
-3861713, 6298033, 1129040, -5681705, -690953, 11439645, -5235565, -8787503, -16702054, 1681480,
-3303904, -12591770, 4745939, 12402792, -5636608, 9624485, 3426310, -11673721, -8534100, 798864,
-11935714, -1337346, 12534862, -2273648, -4334159, 2522220, 6410776, 1586990, -2091649, -3466039,
-2180770, 5529771, 4620311, 657667, 7455527, 1254131, 5357435, 1199370, 7312182, 972810,
-4526359, -202937, 3621731, 1803349, -1767916, -5455682, 484258, -6359773, -845572, -2687576,
-998043, -958315, -218506, -5671505, -499290, 2434710, -2683818, 207232, -639950, 236760,
--353798, -4154844, 621160, 23737210, 15847892, 3418794, -4641249, -2713883, -3200288, -16558173,
--6491306, -372052, 10610180, -7699803, -4080756, -3687766, 315143, 17112224, -13296145, -3762391,
--612033, 7945690, -2677912, -10085657, -16480326, 5777805, -11349451, -5417028, -7034620, -7912404,
-2556043, -13175349, -6200322, 11372000, 17399450, 627065, -10703059, -9810242, 16051903, -1946694,
--8524973, 16475495, 624918, 858993, 808528, -18312130, 7489886, -6888054, 6701223, 5936719,
--12237436, -1508607, -12416750, 4700305, -12040404, -2230699, 5181341, 6737730, -3961571, 4030290,
--14637249, 9975062, -1055488, 6752763, 5895917, 4035122, -3184182, -3249680, 14766098, -10320270,
-7373922, -2658585, -12422119, -7708393, -756988, 13031468, -7478075, 6019397, 1846836, -4230006,
-239981, -14865419, 18658412, 11266773, -2129767, -5218386, 9175124, 3790846, -2619393, -4929012,
-1090922, -3338800, 4753455, -1136019, 2525441, 7558069, 2828236, 5951214, 43487, 2012192,
-957778, -1292248, 211527, -722628, 5327907, 1928440, 7373385, 1076963, -4065187, 5192616,
--2099165, -305480, 4051765, -4013647, -1239098, -2190433, -1611687, 3158949, 2053531, 1568200,
-6854768, -2195802, -2332704, 9341554, 1786706, -6183679, -14185740, -775242, -18437220, 3173981,
-1642825, 9018894, -7363185, -1758789, 4782446, 3980898, 5260798, -12475806, 17645336, 12517145,
-2306398, 9255655, -4170950, -17772038, 4197257, -7481296, -8324721, 8381092, 20451024, 3584687,
--5639829, -7409356, -16403017, 41876, 764504, 25231322, -9926743, -387084, 756988, -756988,
--15193984, -17136920, 13575318, 545461, 7715909, -2193118, -19420232, -11172284, 1552631, -3234647,
--4106526, -5530844, 12712566, -2668249, 8258685, -8891656, 17707076, -20891258, 10352482, 10861972,
-6470368, 5754183, 5243082, 16563541, 8501888, -1178969, 3531537, 153008, 16346646, 24588150,
--2831994, 1988033, -7218230, 10305237, 16494822, -11254425, 3466576, -28396714, 18578954, 19218368,
-12804371, 17882634, -8137353, -14213657, -1023276, -2030983, -4211216, -2950106, -8547522, -5897527,
--3160559, -703838, -4780836, 2915209, 5222680, 2083059, -8032126, 1662689, -4462471, -4633196,
--2966749, 3416647, 3092377, -1335198, -2000381, -627065, -1394254, 950798, -7772280, 2676838,
-1124745, 5128191, 1124745, -235686, -227096, 1209033, 4403415, 1631551, -4023311, 3324305,
-2684, 584652, -20667382, -3076270, -26437672, -13589813, 10413685, -10846940, -23511188, 2165737,
--12674985, 564788, 463856, -15104326, -14329622, 6463389, 13855028, 4158065, -16093779, 7682086,
--18103824, -6371584, -6664716, 5647882, -7434589, -3414499, 8712341, 1465658, -5952825, -12916040,
-13660680, 13215077, 17213156, 2223719, -1905892, 585726, 5522254, -1324461, 7064685, -7786776,
-9286793, -3677029, 10696616, 8546448, 6461242, -3131031, 454193, -16653199, 5669894, -4212826,
-12517145, 2247879, -29060822, 4438312, 14339822, 19246822, -11077258, -15175730, 18139258, 8200703,
-12756053, -22736484, 11236708, 28395102, 29950954, 1874753, 721018, 17005924, -11782706, -15745887,
-10075456, -17430588, 6541235, -8136816, -6837588, -3877819, -37464464, -21675090, -18241800, 13426605,
-5116380, 3747896, -13304198, -5453535, -10049687, -1943473, -5395553, 14674293, 3504157, -5894306,
--13067975, -2954401, 8472360, -1395864, -3609920, 2554432, 8868034, -3202435, -5231270, -2559264,
--1937567, -652835, 6897181, 6872485, 6021008, -6132140, 7889855, -456340, 2257542, 8957154,
--4047470, -4125316, 7862475, 14048301, -3297461, -4670240, -2245194, 1632088, -2542621, -9788230,
-1569811, 7028177, 1914482, -9861245, -9375377, 4345433, 3177202, -602906, -602369, -1793149,
--6973953, -4754529, -15586973, -29882772, 22846542, 2407329, 7666517, -3862249, 16178605, 440771,
--13810467, 10692321, 4341675, -4877472, -8337069, -6519224, 2053531, 3912715, 14331769, -8150238,
-11246909, 3595425, 20438138, -29316374, -7873212, -4634807, 3775813, 11988327, 17373680, 3960497,
--14110041, 9543417, 13669807, 11522860, -3216931, 4031364, 830002, -4800700, -1970316, 850404,
-4425964, 1609539, 10109279, 1684701, -12745852, 11929272, -13215077, -16857210, 2626909, 12220256,
--5930276, -4359392, 4439386, 5974837, 10522670, -5986648, 4992363, 23775866, -9474161, -25222196,
--32690606, -16502875, -22147536, 10084583, 19234474, 12319577, 4707821, 11589969, 6806450, 12807592,
--10936597, 14474577, 7517267, 5886790, 15069430, 19594178, -6080063, -4345970, 5359046, -1261647,
-17626008, 6846715, -2678986, 2995203, -21476984, -15005542, 2990908, -824097, 3834869, 1473174,
-4530654, -3993783, 11341398, -5960878, -6898255, -6655052, -11286100, -4076998, -2218351, 3737159,
-3035468, -1667521, -9689446, -540629, 3235184, 1107565, -3875134, 2325188, 158377, 3779034,
--4038343, 1697049, 807991, 4553739, -2134599, 6993818, -4282083, -4935991, 1507534, -814433,
--3599720, 1184874, 4849018, 443992, -702764, 29956324, 2857764, 4731980, -6241661, 10905459,
--34251292, -15067819, -23417772, -24099598, 9557376, -21024938, 20682416, 23612120, 1010391, 5152350,
--3651796, 4355097, -22402550, 9240622, 24748138, -14068702, -28833190, 3853660, -10853919, -9148817,
--28122372, 4909148, 10307922, -69256, -3826816, 9080635, -16041703, -2629594, 10417980, -5710696,
--14216879, 1759863, -7100118, 14725832, -9736691, -5361730, 13747653, 11973295, 25391310, 3403762,
-6127845, -2297271, 6816650, 9085466, 15687905, -4483409, -515396, -9712532, 20699058, -26048976,
-28028956, 1038845, -11171210, 13173202, -10184978, -7460358, 25782152, -37174016, 6075231, -7810935,
-7286412, -14396194, 6958921, 14805289, -7639673, -1322313, -3921842, -6121402, -3299072, 27475442,
--31109522, -10583873, 52319680, -19648938, -23080618, 22689776, 13557601, 15160698, -13164075, 1088774,
--13084081, -7282654, -2045478, -14904610, 3285113, 2070711, -3886946, 5439576, 4828080, -6721624,
--12710956, -3215857, -1058710, 5058935, -11215770, -7822209, 310311, -1063004, 2848100, 7069516,
-16673063, -7512972, -361851, -1757179, -1723893, 4858682, 1899986, -9838159, -7456600, 8032126,
--6431177, 3082176, 2077690, -5957120, 2322504, -1304596, -10107132, -8225936, 4997732, 3351148,
--1505386, -98247, 6359773, -14866492, -23005456, 2250563, -8738111, -7767449, -12963822, -16190953,
-20411832, 8812736, 1268626, 9611600, 24179592, 14326400, -1692754, 4959614, 16243029, 20790862,
--18473192, 8630200, 17352742, 7586523, 6335077, 24006720, 11523934, 5024575, -768799, 10813117,
--1245004, 12233141, 10053445, 5542119, -11272142, 21237002, -17482128, -2163053, 26519812, 26281442,
--6295349, -23265838, 8723079, -338229, 22744536, 39235064, 8719857, -5991480, 2729989, -22486838,
--2702608, -5931350, -4882841, 466541, 19968376, -8573828, 8761733, 24096378, 4042638, -22263500,
-14692546, -1125281, 9327595, 22640920, 31816580, -8977019, -8500814, -2721399, -25294674, -36949604,
-959388, -16798690, -2772938, -20368346, -2144799, 666794, 2724083, 15137612, -477278, -10524280,
--17565880, 12807592, -5455146, 10959683, 352724, 20405926, 7512972, 7536594, 24696, -6333466,
-11405823, -8733279, -10176388, -3044058, -7664369, -2941516, 532039, 817118, -2786360, 3145527,
-4444755, 380105, -1208496, 5945846, -5156108, -7229504, 4372814, 5236639, 993748, -6249715,
--7576859, -4383014, 6010807, 8163659, 1017370, -1144609, 8982924, 2481417, 4258460, 3755412,
-6407555, 1826972, -1243930, -4765803, 2542621, 5152887, -10643466, 24938728, -46798500, 25739740,
--19685982, -46212236, -13635447, -11667816, -1594507, -10681584, 5650567, -12799003, -28562606, -17307108,
--8505109, -2633889, 3332358, -11800960, 11569568, 22400402, 889595, -1426466, 6205691, 1362042,
--4121021, -8337069, -4629975, 6053757, 6731825, -2000918, 6406481, 27533424, 7652558, -8060580,
--27254252, -4369593, 19375672, -23510650, -10980084, -8956617, 357556, -1796370, 14904073, -4892505,
-1853815, 20414516, 7364795, 22647900, -3108483, -10683731, -4829691, -5801427, -5791227, 10932302,
-1266479, 7397545, 13884019, -24257438, 3649112, -6409165, -15021111, -11377905, 23795192, 17099338,
-951872, -11557757, 4885526, 10034654, 1132798, 6953552, -16199543, -40240084, -18556944, -14713484,
-14847165, 1528472, -1751810, -6765647, 2996277, -4502737, -12615930, -13154948, -6766184, 16341277,
-12428562, -18143552, -22611392, -8833674, 1713155, 13853417, 5718212, -4344897, -5965710, -4616016,
-3354370, -10019622, 1648194, -6818798, 726923, 10484552, 11263552, 3022583, -5597416, 3667365,
-8166344, -178778, -1560147, 6022081, -7997229, 11458973, 10359998, 4063039, -16643, -367220,
--969589, 9637370, -3558917, -4917201, -5561446, -8056822, -7834557, 2704756, -2769717, 3594351,
--2106682, 1864553, 6212670, -2811593, -5596343, -8284992, -2132451, 4063576, -5783174, 13517873,
--18470506, 22223234, -1764695, -35128000, 7190849, -16930224, -3486440, -2532420, -4134980, -22357990,
-7065221, 1187559, 17759690, -38233800, 649614, 18884434, 2303176, -9051644, -19324668, -1476932,
-11137924, 16544751, -13677323, -4855998, 8953396, 18908594, 17270600, -16594143, -3355443, -26924614,
-12611098, 13737990, 8517994, -7634841, -2068564, -7284802, -2826089, -8934069, 2638184, 19732154,
--7249905, -7684770, -6709276, -11090679, 22374632, 19264538, -1832340, 27102854, -1183264, 9680856,
--23822572, 19670414, 8750996, -26763014, -8638253, 30812096, 12785581, 8407935, 6019934, -14381161,
--11355894, -15424301, 26723286, -13721347, 20651814, 21416318, -24162412, 56078316, -11956115, 34814468,
-1554778, -7776575, -14962592, 26179974, 10107669, -20154134, -12335683, -43412456, 17435420, -5883569,
-20043538, -26691074, 29967598, -22852448, 8866423, -8804683, -6836514, 19785840, 1872069, 1926830,
-10996190, 7773354, -5014375, 13013751, -1564979, 3884261, -8996883, 1852742, -1219234, -5614059,
--9044127, 420370, -10040023, 4914517, 4342212, -2254321, 8702677, -3020973, -5214091, -7191386,
-5133560, 1170379, -1202054, -14304389, 6540699, -2757906, -17351132, -5406290, 4993437, -4799626,
--8974334, 6141267, -4868883, 5095442, -9133248, 4447439, -9307194, -1481764, -1394254, 5190468,
--2188823, 1065152, -3018288, -3065533, 13429826, 23036058, 1910187, -19317152, 9359271, -37305548,
--9893457, -33889440, -46876884, 1611687, -17996986, 6045167, -3437048, -7343321, -17804786, -12266427,
-10537702, 28257126, -23489714, -5039608, -40503688, -35591856, 9868224, 14281303, -22217866, -23297514,
-1517734, 5178657, -37624988, 2021856, 858993, 19595788, -16859894, 756988, 16284905, -10564009,
--19563576, -21932788, -10556493, -20000588, -16353625, -20880520, 29296508, -37171332, -23007066, 33614024,
--1035624, 9478993, -28099286, -4920422, -7985955, 732292, 47422880, -6730751, -899259, 4664872,
-22231824, 498216, -20963198, -9324374, -15110769, 5077725, 56725780, 11000485, -19968376, 42703788,
-30892626, -27466852, 31860068, 52230560, 457414, -20437602, 35576288, -6224482, 37425808, 33675764,
-2834679, -1804960, -10051834, 23490250, 19143206, 10842108, -19981798, -6713034, -12901545, 29756070,
--3785477, -20584168, -9993852, -20696910, -8880382, 20319490, 2311229, -10852845, -3664681, -13268228,
--2219424, 18141404, -8810589, 4374424, -1835562, -17535278, 18853296, 2154463, 7562901, 9019968,
--12161200, 3624953, 17322676, -3234647, 682900, -9440338, -38655, 1275605, -5706401, -5391795,
-3273839, 12729746, -8266739, 4947266, -11038066, -5410585, 654446, -3823058, 12655121, -5019206,
-542240, 1058173, 4619774, 261993, -6048925, 26369488, -67005784, -40488656, -43492448, -14959371,
--28926068, 36040680, 13800267, 29551522, -4242891, -57256744, -8566312, 9225053, 39520140, -1671279,
-9317932, 36101884, -13333726, -26197690, 2866354, -1780264, 45870252, 29698626, -14716169, -20748450,
-48724256, 3404299, 24486146, 11702175, 45475112, 39106216, 30361660, 3195993, -25347824, -13903883,
--19315542, 37842956, -17961016, -25836912, -13903346, 1400696, -879931, 16760573, -16240882, 6049462,
--76694160, 8673150, 12119861, 12692165, -31977642, -29755534, 9363029, 27145804, -33015414, 12991739,
--18699214, -14639396, -22114786, -1924145, 23810762, -15758235, 26146150, -6522982, 10355166, -47846472,
--30633854, -1117228, 25660818, 17903034, -34672196, -37485400, -17251274, 3636227, 40057548, 16523276,
--3629784, -27880780, -32091996, -10865730, 6960532, 28314572, -2266669, 9476845, 19107236, -7088844,
-7047505, -18548354, 11819750, 6800544, -11320460, -9453223, 1267552, 14643691, -13657459, -383863,
-23313620, 3795677, 3633006, 189515, -6305549, -15487115, 4291746, -17215840, 20730196, 17735530,
-13617194, 1786170, -1328219, -20182052, 13205951, -3902515, 24152748, -5551245, -26616986, -16370268,
--3008625, 26463440, 7730405, -5383742, -2323041, -20879446, -9830106, -8267275, -898185, 12104828,
-11802033, -21050708, -11360188, -12792560, -12359305, -4377646, 4414153, -1547262, -6855842, -12727599,
--12887586, 2030446, -255014, -6504728, -6391448, 11878806, 86785184, 8770323, -46380816, -104252816,
--9488120, 61783640, 15496779, 26940182, -2898029, 37571836, -6378564, 16505559, -8773544, 21280490,
-29998200, 16002511, -14622753, -34433828, 40446780, 45948632, -10392747, -45546516, -27751394, 4736275,
-26466662, 8786429, 9465571, 1662689, 6742025, 3018825, 6682969, -8975408, -52755620, -333397,
-32597728, 25045564, -10384157, 2507724, 20069846, 43918724, 27000848, 21517786, -25890062, -18124762,
--4409321, -4807679, -39286604, 27804008, 16556562, 28885802, 59111636, -30421790, -19435800, -2755759,
--16315507, -14221174, -25748328, 45765560, -27692876, -29985852, -30709016, -10769094, 58609124, 14935749,
-22910966, -1280974, -4778688, -13567802, 36510980, 29362008, -14910516, -34189552, 11982422, -4497905,
-14273250, -32056026, -12283070, -18656802, -24071682, 14772540, 24367496, 4493610, 1160715, -12921946,
-7431904, -5061619, 22682260, 1780264, -7427072, -4457103, 7745437, 14382235, 16119012, -9209484,
-10127533, 5133560, 5402532, -737661, -16557099, -2214593, -13366475, -5457830, 1126355, 2290828,
-4971425, 4896800, 6009733, 14708652, 22100828, 19459960, -1381906, -4786741, 2892124, -9522479,
-12389907, -13385802, -1174674, 10902238, -207769, -2636036, -21297670, 10901164, -21240224, 7267085,
--4399657, 3480534, -1419487, 2529736, -541703, -13433047, 8040179, 6744710, -639413, 4586488,
--281857, 3951370, -1297617, -3422015, -172336, -1005022, 1242319, -542777, 1272921, 690953,
--4089883, -1752347, -420907, 3235184, 1342714, -843424, -2201171, -1486596, -25388088, 2558727,
-66215512, 51577724, 7667591, 4229469, -36512052, -69332048, -61297772, -29513404, 49622980, 54983096,
-56402048, 31751620, -8699456, -35864052, -33777772, -21657372, 13908715, 22440130, 38474316, 3819837,
--29937532, -24762634, -5844914, -24812026, -12046846, 5711770, 39851392, 57629872, 36811628, 17959942,
-15903190, -35756140, -4647692, -72111424, -81236088, -50437412, -24782498, -22001506, 37401112, 59403156,
-65227132, 59512140, 50987704, 21476448, 3068217, -24628416, -7226820, -39790724, -71269080, -5693516,
-6206765, 7060926, 23130010, 14193256, 23470922, -79211008, -43770012, -28221156, -46375984, -19369228,
-33660196, -20173998, 22543746, 3304977, -21337934, 17044578, -17893370, 19143206, 21771190, -16764331,
--34448324, -70183520, -68517080, -50746648, 24537686, 8883066, -10122701, 13243532, 3304441, 338766,
--32900524, -22767084, -60900488, -19992000, -22686018, -2355790, 43884364, 47406776, 6556268, 24513526,
--15031312, -32743220, -59256592, -38735772, -36749352, -1212791, 17635672, 10357314, 14305999, 15848429,
--11218455, 9627706, -10601590, 9986336, 2124935, -308701, -2509872, 8258149, 6894497, 15712064,
--3922379, -3645354, 14318884, 11638288, -119188024, -60955248, -31728534, 40125732, 9317395, 152951840,
-156783488, 118181392, 152860032, 160154496, 145531744, 104460584, 94839856, 105214888, 41909216, -6241125,
--65066072, -100603704, -139003936, -135078336, -201327136, -122180544, -79442936, -63131188, -89737440, -47238196,
--12901008, -67286568, -52195128, -55180128, -12418898, -33139968, -11743514, -44866304, -22721988, 26733488,
-27756226, 8265665, -8217883, 29133836, 23672786, -67884640, 14182519, 45878304, 100553240, 73687680,
-95739656, 39223788, 38096896, 159353488, 86382528, 163068640, 54702316, 152937344, 105701832, 133520872,
-180215760, 170591808, 138453632, 155343056, 172707616, 187822672, 160545872, 185144224, 126454040, 187798512,
-150929984, 133781248, 142798000, 77869368, 159854928, 77257872, 47036872, -58789512, 4012573, -86831888,
--97406640, -149234544, -175992192, -270794464, -264223696, -249788320, -233374032, -220191168, -185868464, -227027680,
--279189504, -275581760, -228361264, -241985968, -227316512, -228361264, -194655440, -212261040, -203266848, -151865744,
--167440368, -128891432, -120099096, -110990008, -70514776, -91454352, -20642686, -34062312, 15850577, 21065740,
-66728224, 98288712, 103332616, 118985624, 105979928, 159287984, 180908320, 178919744, 207125872, 215965984,
-214331760, 163141648, 146004736, 127811784, 118857848, 115367656, 118808456, 111309984, 85127328, 54579908,
-62406948, 47911972, 37671160, 24845848, -18876382, -25119116, -25985090, -32317482, -39075076, -44471700,
--30838402, -34409668, -27037892, -28014998, -23817742, -17382270, -20411832, -16988206, -16018617, -20175072,
--18025978, -20480552, -15482820, -12837657, -16935056, -19777788, -6792491, -1621350, -1369558, -512175,
-1505923, 8590, 653909, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-13850196, -1168231, -2212982, -1891933, 205622, -2310693, 863288, 1357210, 5676336, -1917166,
+-228170, -5236102, 386010, 5262409, 366683, 3803194, -1122597, 1596117, -2198487, -3307125,
+111669, 3615289, -463856, -4532264, -186294, 4386236, 1431298, -1881196, -1564979, -208306,
+-601832, -1027034, 54761, -744103, -1506997, -194347, 904091, 612033, -196495, -3453691,
+5136244, 6989523, 230318, 811749, -2819646, -1607392, 561567, -3653407, -4043712, 2419140,
+-3282966, 2390686, 3110630, 3086471, 1168768, -470299, 847719, 643708, 2344515, -5027259,
+447213, -651224, -3643206, -4951024, 160524, 2469606, -1868311, -264141, -557272, -351114,
+3506841, 1727651, 486942, 1364189, -1117765, -4074313, 1604707, 658204, 3510599, -4188667,
+-3149285, 2361158, -1848983, -873489, -3093450, 705448, -1806571, -1703491, 69793, -1365800,
+-1457605, 408022, -774705, -376883, -1662152, 1044214, -179852, 98247, -420907, 853088,
+-129923, 276489, -270046, -266825, -12686797, -2997887, 4943508, -763430, -3901441, 1595580,
+-9404905, -3697967, -1354525, -1771137, -4859219, -5214627, 2791729, 4199941, 3682398, -4881767,
+-7074885, 731218, -4137664, -7637526, 1743757, -552440, 2153926, 8432631, -2787971, -969589,
+-5359046, 7276749, 579821, 3595425, 2544768, 5961952, 3080029, 1794760, -5974837, -749472,
+-5492727, -1588601, 252329, -2381559, 1861332, 1492501, -2592550, -5178657, 3266323, 5258114,
+1510218, -2604898, -3934190, -2514703, 1275068, -4507032, -5614596, -1665374, 2795487, -1617055,
+1384053, 3475166, 2245194, -2688113, 5138929, 400506, 4378719, -3716221, -3068754, -1840394,
+-2139968, 2994666, -1704565, 128312, 5188321, 1790465, 141197, -4949950, 1347009, -2003602,
+3643206, 5227512, -897648, 390305, -2395518, 1954747, 4655208, -1690070, 2906082, 1272384,
+628139, 2350958, 965831, 78920, 1921461, 687195, -138513, -23622, 858457, 738198,
+-844498, 609885, 658741, 947577, -2592013, 3271691, 4522601, 1822140, -2815888, 1967095,
+-1316944, 1361505, 8497593, 5231807, -7159711, 4862977, -3935801, -1950452, -1028108, 139586,
+3617973, 132070, 9936407, 2864743, -3801583, -2507187, -2464238, 6987375, 1653026, 6729140,
+2216740, 4529043, 7031935, 8051990, 3071975, -914828, -798864, 1210644, -6451041, -6013491,
+1925756, -4566624, 2597918, 1240172, -1540820, -679142, 1898912, 6717329, -2198487, -2291365,
+-3452617, 8582418, -1157494, -10719165, -5339718, -4254702, -3892314, 4417374, 4257387, 3731790,
+5602785, 2476586, 3513283, -164819, -332323, -166967, 5634460, 1821066, 3307662, -7464653,
+492311, 334471, 408022, 483184, 3248069, 2262911, 944356, -3622268, -3593814, 2081449,
+1745367, -1073742, -220654, -2920041, -3694746, -3033321, 2062121, 3570729, 442382, 197032,
+1253594, -1047435, -125628, -830539, 653372, 622770, 379031, -505196, 1080184, 1708860,
+-248034, 160524, 385473, -284542, 460098, -719944, 1260036, -1074, -236760, -820339,
+1114007, -2172180, 1224066, 345745, 922881, -169651, 18855980, 4178466, 2876554, -2253247,
+-1306744, 1875290, 1321239, 5076652, 6655052, -258235, 9797894, 3955665, -3455301, -3186866,
+-247497, 4736275, -552977, -2508798, 5185100, 778463, 14128832, 3750580, 2796561, 633508,
+-1365263, 718333, 2137283, 2792803, -642635, 82141, 7580081, 1114544, 8344585, -4143033,
+-4013647, 2808909, 12530030, 3686693, 3025805, -1029718, -5422396, -2072859, 1692217, 430570,
+-126702, 518080, -7693897, 603980, -3387119, 3140158, 2423435, -2975876, 1766305, 2759517,
+1809792, -3551401, -3715147, 947577, 1309428, 75699, -4775467, 1313186, -1861332, 3127810,
+-444529, 663036, 1939178, -667331, 1069984, -1633698, 520228, 11070815, 1242319, 3969087,
+127775, -2957622, 1803886, 729608, 3404299, -6044630, -4267587, 2167348, -900869, 1333051,
+-1596654, 2407329, 1951526, 324270, -2712809, -945967, -3689914, -576599, -850940, 2450816,
+-1703491, -368830, 398895, -242666, -889595, -802622, 686658, -856846, -1241246, 73014,
+43487, 753230, -2499134, -880468, 628139, 453119, -2720325, -568009, -185220, -3400004,
+-397284, 2777233, -4158065, -721555, 4229469, -2142652, -6557878, -42950, 10821170, -752693,
+8495982, 4348118, 11752641, 1410897, 1100049, 4266513, -3300146, -7017440, -9210557, 2159295,
+-4686883, 10821707, 6204617, 7640210, -1428614, -3202435, 970663, 1700270, 3595425, 10123238,
+1230508, 4205310, -4619238, 3208878, -3273302, 1362042, -1757715, 3313031, 5823439, 756988,
+5564667, 2005213, 2793339, -1637993, -1324997, 7385733, -1717450, -1892470, 5604933, -3382287,
+-300648, 759136, -2433099, -3285650, 2488397, -3763465, -698469, -4794257, -10122701, -1183264,
+-1529008, -314069, -10549513, -4083977, -3213173, -2789045, 3979824, 10349797, -2642479, 3286724,
+5449777, -1577864, 1030792, 858993, 624381, -3854196, 4144107, -4873714, 1260573, 3388192,
+9754944, 2978560, 2890513, 815507, -126165, 2868501, -3524558, -105227, 2012192, 876173,
+172872, -4027606, 2354179, 2796024, 2890513, -631360, 2150705, 1087164, 604517, 1874216,
+1130113, 144955, 1105417, -364535, 855772, 461709, 719407, 1038308, 1412507, 1580548,
+1156420, 1025960, 1253057, -850404, 1131724, -13722957, 1202054, 7348689, 3891777, -7707856,
+-566399, 340376, 1826435, 2795487, -429497, -6008123, -5720897, 864899, 9724343, 4590783,
+5770826, 9745281, -6605660, 6943352, 12911745, -1222455, 2917357, -7357279, 2521146, 2598455,
+-6270116, -3426310, -1346472, 2922188, -6335614, -8425115, 1612760, 861141, -7170985, 507343,
+2278480, -1535451, 15305116, -945967, -10823854, -820339, 3758097, 8526047, 3190624, 3771518,
+-6934762, 1825361, 2209224, -6296959, -391916, -1159104, 10633802, 6391985, -1748589, -3758633,
+-8211441, 3430605, 3312494, -4975720, -152471, 1850057, 3233037, 3182034, -4175782, -243203,
+-900869, 9835475, -8361228, 898722, -2169495, 8840116, -632971, -2328946, -3752191, 987306,
+-3883724, -9276592, 263604, 6808060, 2089502, 4213363, 1095217, -3436511, -1299765, -1806571,
+5925445, 2202781, -1600412, -369367, 5381057, 3867618, -1510218, 424665, 852551, 1005022,
+-98247, 1998770, 1496796, 1160715, 141197, -909459, -340376, 270046, -768262, 97711,
+-1072668, -515933, 881005, 5214091, 4747013, 1668058, -3483755, 965831, 2272038, 16044924,
+10657961, 7970923, 11303280, 4550518, -981400, 1582159, 4177930, -11433203, 5841156, 132607,
+6279779, -4636417, -2338610, -7391639, 2074469, 12901545, -12679817, -8088497, -13480292, 6771553,
+-3090766, 374736, -6149857, 734439, -2308545, -6190659, 2317135, 2945811, -9598715, -1367947,
+1703491, -2171643, 5024575, -13942538, -6753299, 14140106, 1391569, -309238, -1439351, 442382,
+-7249368, -7719130, 416612, -11203422, -2609193, 1065152, 2949032, -4849555, -1140314, 13778792,
+-930397, 4800700, 10256919, -9644886, -3370476, 2198487, 2401961, 1793149, -2975876, -6906845,
+7824357, -919660, -7348152, 5324149, -1345399, 1210644, 2020245, -3996467, -2415919, -1720134,
+-3009162, -4326106, -5168457, -4991826, -6331856, -1956358, -2685428, -670015, -828392, -122407,
+826781, -2639794, -2066416, 1450088, 1756105, 2850248, -157303, -1212255, -3715684, -1090922,
+-4293894, -2782602, -567473, 810675, -296890, 552977, -1069447, -666257, 3226057, 1213328,
+2248416, -2181844, 598074, 505196, 872952, -4393215, 365072, 1292785, 49392, 2325188,
+-26616986, -14918569, 12118787, -4723391, -5605469, 7218230, 6423124, -11487427, -15331423, -5024038,
+-5429376, -5881421, -963683, -10689637, -7559143, 3787088, 500901, -14351096, -15631533, -8902393,
+-4220879, -891206, 8139500, -677531, -5781563, 4321274, -12994960, 295816, -520765, 456340,
+4663261, 2408940, -9440875, -7276212, 5816460, 1898376, 21369610, 5112085, -6986838, 852014,
+791348, 102542, 5717675, 957241, 2448668, -2306398, -4571456, 1265405, -12127377, -2410014,
+-5225365, -6597070, 1521492, -9862856, 11455215, -1589675, 4854924, 7985955, 2522757, 4172561,
+-412854, -5397164, -104153, -807991, -6427419, 8385924, -3404835, 15025406, -372052, -479426,
+835371, -4067334, -8076149, 2425046, -6307160, -2745021, 9016210, -11599633, -11132555, 7421704,
+7330436, 6032282, -9408126, 6759742, 3022046, 3886409, -138513, 1627793, 2030446, 5228049,
+2445984, 1185948, 4138201, -659814, -81604, -3390340, -2367601, -652298, 2877091, -3630321,
+652835, -530428, -1882806, -1395864, 1078037, -4634270, -2570001, -3488587, -404264, 1328756,
+166967, 3216931, -926102, 3371549, 501437, 1175747, 754841, 2583960, -1899986, -1826435,
+5506148, 19712826, -10964515, 9351218, 3972845, 6951942, -2716567, -10838887, 1632088, -2887292,
+-9976672, 20339892, -1345399, -5731097, -20018306, 12300786, 3524558, -284542, -7423851, -8759049,
+321586, 20654498, 7800198, -867583, -1957431, -8951249, -7152731, 5917928, 2729989, -7016366,
+-4811974, 7165079, 1887638, -363998, 6292127, 9498320, 1581085, 12559021, 14397267, 8624831,
+-3229279, 3087545, 1241782, 2294050, 7542500, -10685342, 11235634, -842887, -5611375, -8679592,
+116501, 7256347, 5198521, -10232760, 2287607, 7946227, 1293322, -7435662, -15806553, -14513231,
+3861713, 6298033, 1129040, -5681705, -690953, 11439645, -5235565, -8787503, -16702054, 1681480,
+3303904, -12591770, 4745939, 12402792, -5636608, 9624485, 3426310, -11673721, -8534100, 798864,
+11935714, -1337346, 12534862, -2273648, -4334159, 2522220, 6410776, 1586990, -2091649, -3466039,
+2180770, 5529771, 4620311, 657667, 7455527, 1254131, 5357435, 1199370, 7312182, 972810,
+4526359, -202937, 3621731, 1803349, -1767916, -5455682, 484258, -6359773, -845572, -2687576,
+998043, -958315, -218506, -5671505, -499290, 2434710, -2683818, 207232, -639950, 236760,
+-353798, -4154844, 621160, 23737210, 15847892, 3418794, -4641249, -2713883, -3200288, -16558173,
+-6491306, -372052, 10610180, -7699803, -4080756, -3687766, 315143, 17112224, -13296145, -3762391,
+-612033, 7945690, -2677912, -10085657, -16480326, 5777805, -11349451, -5417028, -7034620, -7912404,
+2556043, -13175349, -6200322, 11372000, 17399450, 627065, -10703059, -9810242, 16051903, -1946694,
+-8524973, 16475495, 624918, 858993, 808528, -18312130, 7489886, -6888054, 6701223, 5936719,
+-12237436, -1508607, -12416750, 4700305, -12040404, -2230699, 5181341, 6737730, -3961571, 4030290,
+-14637249, 9975062, -1055488, 6752763, 5895917, 4035122, -3184182, -3249680, 14766098, -10320270,
+7373922, -2658585, -12422119, -7708393, -756988, 13031468, -7478075, 6019397, 1846836, -4230006,
+239981, -14865419, 18658412, 11266773, -2129767, -5218386, 9175124, 3790846, -2619393, -4929012,
+1090922, -3338800, 4753455, -1136019, 2525441, 7558069, 2828236, 5951214, 43487, 2012192,
+957778, -1292248, 211527, -722628, 5327907, 1928440, 7373385, 1076963, -4065187, 5192616,
+-2099165, -305480, 4051765, -4013647, -1239098, -2190433, -1611687, 3158949, 2053531, 1568200,
+6854768, -2195802, -2332704, 9341554, 1786706, -6183679, -14185740, -775242, -18437220, 3173981,
+1642825, 9018894, -7363185, -1758789, 4782446, 3980898, 5260798, -12475806, 17645336, 12517145,
+2306398, 9255655, -4170950, -17772038, 4197257, -7481296, -8324721, 8381092, 20451024, 3584687,
+-5639829, -7409356, -16403017, 41876, 764504, 25231322, -9926743, -387084, 756988, -756988,
+-15193984, -17136920, 13575318, 545461, 7715909, -2193118, -19420232, -11172284, 1552631, -3234647,
+-4106526, -5530844, 12712566, -2668249, 8258685, -8891656, 17707076, -20891258, 10352482, 10861972,
+6470368, 5754183, 5243082, 16563541, 8501888, -1178969, 3531537, 153008, 16346646, 24588150,
+-2831994, 1988033, -7218230, 10305237, 16494822, -11254425, 3466576, -28396714, 18578954, 19218368,
+12804371, 17882634, -8137353, -14213657, -1023276, -2030983, -4211216, -2950106, -8547522, -5897527,
+-3160559, -703838, -4780836, 2915209, 5222680, 2083059, -8032126, 1662689, -4462471, -4633196,
+-2966749, 3416647, 3092377, -1335198, -2000381, -627065, -1394254, 950798, -7772280, 2676838,
+1124745, 5128191, 1124745, -235686, -227096, 1209033, 4403415, 1631551, -4023311, 3324305,
+2684, 584652, -20667382, -3076270, -26437672, -13589813, 10413685, -10846940, -23511188, 2165737,
+-12674985, 564788, 463856, -15104326, -14329622, 6463389, 13855028, 4158065, -16093779, 7682086,
+-18103824, -6371584, -6664716, 5647882, -7434589, -3414499, 8712341, 1465658, -5952825, -12916040,
+13660680, 13215077, 17213156, 2223719, -1905892, 585726, 5522254, -1324461, 7064685, -7786776,
+9286793, -3677029, 10696616, 8546448, 6461242, -3131031, 454193, -16653199, 5669894, -4212826,
+12517145, 2247879, -29060822, 4438312, 14339822, 19246822, -11077258, -15175730, 18139258, 8200703,
+12756053, -22736484, 11236708, 28395102, 29950954, 1874753, 721018, 17005924, -11782706, -15745887,
+10075456, -17430588, 6541235, -8136816, -6837588, -3877819, -37464464, -21675090, -18241800, 13426605,
+5116380, 3747896, -13304198, -5453535, -10049687, -1943473, -5395553, 14674293, 3504157, -5894306,
+-13067975, -2954401, 8472360, -1395864, -3609920, 2554432, 8868034, -3202435, -5231270, -2559264,
+-1937567, -652835, 6897181, 6872485, 6021008, -6132140, 7889855, -456340, 2257542, 8957154,
+-4047470, -4125316, 7862475, 14048301, -3297461, -4670240, -2245194, 1632088, -2542621, -9788230,
+1569811, 7028177, 1914482, -9861245, -9375377, 4345433, 3177202, -602906, -602369, -1793149,
+-6973953, -4754529, -15586973, -29882772, 22846542, 2407329, 7666517, -3862249, 16178605, 440771,
+-13810467, 10692321, 4341675, -4877472, -8337069, -6519224, 2053531, 3912715, 14331769, -8150238,
+11246909, 3595425, 20438138, -29316374, -7873212, -4634807, 3775813, 11988327, 17373680, 3960497,
+-14110041, 9543417, 13669807, 11522860, -3216931, 4031364, 830002, -4800700, -1970316, 850404,
+4425964, 1609539, 10109279, 1684701, -12745852, 11929272, -13215077, -16857210, 2626909, 12220256,
+-5930276, -4359392, 4439386, 5974837, 10522670, -5986648, 4992363, 23775866, -9474161, -25222196,
+-32690606, -16502875, -22147536, 10084583, 19234474, 12319577, 4707821, 11589969, 6806450, 12807592,
+-10936597, 14474577, 7517267, 5886790, 15069430, 19594178, -6080063, -4345970, 5359046, -1261647,
+17626008, 6846715, -2678986, 2995203, -21476984, -15005542, 2990908, -824097, 3834869, 1473174,
+4530654, -3993783, 11341398, -5960878, -6898255, -6655052, -11286100, -4076998, -2218351, 3737159,
+3035468, -1667521, -9689446, -540629, 3235184, 1107565, -3875134, 2325188, 158377, 3779034,
+-4038343, 1697049, 807991, 4553739, -2134599, 6993818, -4282083, -4935991, 1507534, -814433,
+-3599720, 1184874, 4849018, 443992, -702764, 29956324, 2857764, 4731980, -6241661, 10905459,
+-34251292, -15067819, -23417772, -24099598, 9557376, -21024938, 20682416, 23612120, 1010391, 5152350,
+-3651796, 4355097, -22402550, 9240622, 24748138, -14068702, -28833190, 3853660, -10853919, -9148817,
+-28122372, 4909148, 10307922, -69256, -3826816, 9080635, -16041703, -2629594, 10417980, -5710696,
+-14216879, 1759863, -7100118, 14725832, -9736691, -5361730, 13747653, 11973295, 25391310, 3403762,
+6127845, -2297271, 6816650, 9085466, 15687905, -4483409, -515396, -9712532, 20699058, -26048976,
+28028956, 1038845, -11171210, 13173202, -10184978, -7460358, 25782152, -37174016, 6075231, -7810935,
+7286412, -14396194, 6958921, 14805289, -7639673, -1322313, -3921842, -6121402, -3299072, 27475442,
+-31109522, -10583873, 52319680, -19648938, -23080618, 22689776, 13557601, 15160698, -13164075, 1088774,
+-13084081, -7282654, -2045478, -14904610, 3285113, 2070711, -3886946, 5439576, 4828080, -6721624,
+-12710956, -3215857, -1058710, 5058935, -11215770, -7822209, 310311, -1063004, 2848100, 7069516,
+16673063, -7512972, -361851, -1757179, -1723893, 4858682, 1899986, -9838159, -7456600, 8032126,
+-6431177, 3082176, 2077690, -5957120, 2322504, -1304596, -10107132, -8225936, 4997732, 3351148,
+-1505386, -98247, 6359773, -14866492, -23005456, 2250563, -8738111, -7767449, -12963822, -16190953,
+20411832, 8812736, 1268626, 9611600, 24179592, 14326400, -1692754, 4959614, 16243029, 20790862,
+-18473192, 8630200, 17352742, 7586523, 6335077, 24006720, 11523934, 5024575, -768799, 10813117,
+-1245004, 12233141, 10053445, 5542119, -11272142, 21237002, -17482128, -2163053, 26519812, 26281442,
+-6295349, -23265838, 8723079, -338229, 22744536, 39235064, 8719857, -5991480, 2729989, -22486838,
+-2702608, -5931350, -4882841, 466541, 19968376, -8573828, 8761733, 24096378, 4042638, -22263500,
+14692546, -1125281, 9327595, 22640920, 31816580, -8977019, -8500814, -2721399, -25294674, -36949604,
+959388, -16798690, -2772938, -20368346, -2144799, 666794, 2724083, 15137612, -477278, -10524280,
+-17565880, 12807592, -5455146, 10959683, 352724, 20405926, 7512972, 7536594, 24696, -6333466,
+11405823, -8733279, -10176388, -3044058, -7664369, -2941516, 532039, 817118, -2786360, 3145527,
+4444755, 380105, -1208496, 5945846, -5156108, -7229504, 4372814, 5236639, 993748, -6249715,
+-7576859, -4383014, 6010807, 8163659, 1017370, -1144609, 8982924, 2481417, 4258460, 3755412,
+6407555, 1826972, -1243930, -4765803, 2542621, 5152887, -10643466, 24938728, -46798500, 25739740,
+-19685982, -46212236, -13635447, -11667816, -1594507, -10681584, 5650567, -12799003, -28562606, -17307108,
+-8505109, -2633889, 3332358, -11800960, 11569568, 22400402, 889595, -1426466, 6205691, 1362042,
+-4121021, -8337069, -4629975, 6053757, 6731825, -2000918, 6406481, 27533424, 7652558, -8060580,
+-27254252, -4369593, 19375672, -23510650, -10980084, -8956617, 357556, -1796370, 14904073, -4892505,
+1853815, 20414516, 7364795, 22647900, -3108483, -10683731, -4829691, -5801427, -5791227, 10932302,
+1266479, 7397545, 13884019, -24257438, 3649112, -6409165, -15021111, -11377905, 23795192, 17099338,
+951872, -11557757, 4885526, 10034654, 1132798, 6953552, -16199543, -40240084, -18556944, -14713484,
+14847165, 1528472, -1751810, -6765647, 2996277, -4502737, -12615930, -13154948, -6766184, 16341277,
+12428562, -18143552, -22611392, -8833674, 1713155, 13853417, 5718212, -4344897, -5965710, -4616016,
+3354370, -10019622, 1648194, -6818798, 726923, 10484552, 11263552, 3022583, -5597416, 3667365,
+8166344, -178778, -1560147, 6022081, -7997229, 11458973, 10359998, 4063039, -16643, -367220,
+-969589, 9637370, -3558917, -4917201, -5561446, -8056822, -7834557, 2704756, -2769717, 3594351,
+-2106682, 1864553, 6212670, -2811593, -5596343, -8284992, -2132451, 4063576, -5783174, 13517873,
+-18470506, 22223234, -1764695, -35128000, 7190849, -16930224, -3486440, -2532420, -4134980, -22357990,
+7065221, 1187559, 17759690, -38233800, 649614, 18884434, 2303176, -9051644, -19324668, -1476932,
+11137924, 16544751, -13677323, -4855998, 8953396, 18908594, 17270600, -16594143, -3355443, -26924614,
+12611098, 13737990, 8517994, -7634841, -2068564, -7284802, -2826089, -8934069, 2638184, 19732154,
+-7249905, -7684770, -6709276, -11090679, 22374632, 19264538, -1832340, 27102854, -1183264, 9680856,
+-23822572, 19670414, 8750996, -26763014, -8638253, 30812096, 12785581, 8407935, 6019934, -14381161,
+-11355894, -15424301, 26723286, -13721347, 20651814, 21416318, -24162412, 56078316, -11956115, 34814468,
+1554778, -7776575, -14962592, 26179974, 10107669, -20154134, -12335683, -43412456, 17435420, -5883569,
+20043538, -26691074, 29967598, -22852448, 8866423, -8804683, -6836514, 19785840, 1872069, 1926830,
+10996190, 7773354, -5014375, 13013751, -1564979, 3884261, -8996883, 1852742, -1219234, -5614059,
+-9044127, 420370, -10040023, 4914517, 4342212, -2254321, 8702677, -3020973, -5214091, -7191386,
+5133560, 1170379, -1202054, -14304389, 6540699, -2757906, -17351132, -5406290, 4993437, -4799626,
+-8974334, 6141267, -4868883, 5095442, -9133248, 4447439, -9307194, -1481764, -1394254, 5190468,
+-2188823, 1065152, -3018288, -3065533, 13429826, 23036058, 1910187, -19317152, 9359271, -37305548,
+-9893457, -33889440, -46876884, 1611687, -17996986, 6045167, -3437048, -7343321, -17804786, -12266427,
+10537702, 28257126, -23489714, -5039608, -40503688, -35591856, 9868224, 14281303, -22217866, -23297514,
+1517734, 5178657, -37624988, 2021856, 858993, 19595788, -16859894, 756988, 16284905, -10564009,
+-19563576, -21932788, -10556493, -20000588, -16353625, -20880520, 29296508, -37171332, -23007066, 33614024,
+-1035624, 9478993, -28099286, -4920422, -7985955, 732292, 47422880, -6730751, -899259, 4664872,
+22231824, 498216, -20963198, -9324374, -15110769, 5077725, 56725780, 11000485, -19968376, 42703788,
+30892626, -27466852, 31860068, 52230560, 457414, -20437602, 35576288, -6224482, 37425808, 33675764,
+2834679, -1804960, -10051834, 23490250, 19143206, 10842108, -19981798, -6713034, -12901545, 29756070,
+-3785477, -20584168, -9993852, -20696910, -8880382, 20319490, 2311229, -10852845, -3664681, -13268228,
+-2219424, 18141404, -8810589, 4374424, -1835562, -17535278, 18853296, 2154463, 7562901, 9019968,
+-12161200, 3624953, 17322676, -3234647, 682900, -9440338, -38655, 1275605, -5706401, -5391795,
+3273839, 12729746, -8266739, 4947266, -11038066, -5410585, 654446, -3823058, 12655121, -5019206,
+542240, 1058173, 4619774, 261993, -6048925, 26369488, -67005784, -40488656, -43492448, -14959371,
+-28926068, 36040680, 13800267, 29551522, -4242891, -57256744, -8566312, 9225053, 39520140, -1671279,
+9317932, 36101884, -13333726, -26197690, 2866354, -1780264, 45870252, 29698626, -14716169, -20748450,
+48724256, 3404299, 24486146, 11702175, 45475112, 39106216, 30361660, 3195993, -25347824, -13903883,
+-19315542, 37842956, -17961016, -25836912, -13903346, 1400696, -879931, 16760573, -16240882, 6049462,
+-76694160, 8673150, 12119861, 12692165, -31977642, -29755534, 9363029, 27145804, -33015414, 12991739,
+-18699214, -14639396, -22114786, -1924145, 23810762, -15758235, 26146150, -6522982, 10355166, -47846472,
+-30633854, -1117228, 25660818, 17903034, -34672196, -37485400, -17251274, 3636227, 40057548, 16523276,
+-3629784, -27880780, -32091996, -10865730, 6960532, 28314572, -2266669, 9476845, 19107236, -7088844,
+7047505, -18548354, 11819750, 6800544, -11320460, -9453223, 1267552, 14643691, -13657459, -383863,
+23313620, 3795677, 3633006, 189515, -6305549, -15487115, 4291746, -17215840, 20730196, 17735530,
+13617194, 1786170, -1328219, -20182052, 13205951, -3902515, 24152748, -5551245, -26616986, -16370268,
+-3008625, 26463440, 7730405, -5383742, -2323041, -20879446, -9830106, -8267275, -898185, 12104828,
+11802033, -21050708, -11360188, -12792560, -12359305, -4377646, 4414153, -1547262, -6855842, -12727599,
+-12887586, 2030446, -255014, -6504728, -6391448, 11878806, 86785184, 8770323, -46380816, -104252816,
+-9488120, 61783640, 15496779, 26940182, -2898029, 37571836, -6378564, 16505559, -8773544, 21280490,
+29998200, 16002511, -14622753, -34433828, 40446780, 45948632, -10392747, -45546516, -27751394, 4736275,
+26466662, 8786429, 9465571, 1662689, 6742025, 3018825, 6682969, -8975408, -52755620, -333397,
+32597728, 25045564, -10384157, 2507724, 20069846, 43918724, 27000848, 21517786, -25890062, -18124762,
+-4409321, -4807679, -39286604, 27804008, 16556562, 28885802, 59111636, -30421790, -19435800, -2755759,
+-16315507, -14221174, -25748328, 45765560, -27692876, -29985852, -30709016, -10769094, 58609124, 14935749,
+22910966, -1280974, -4778688, -13567802, 36510980, 29362008, -14910516, -34189552, 11982422, -4497905,
+14273250, -32056026, -12283070, -18656802, -24071682, 14772540, 24367496, 4493610, 1160715, -12921946,
+7431904, -5061619, 22682260, 1780264, -7427072, -4457103, 7745437, 14382235, 16119012, -9209484,
+10127533, 5133560, 5402532, -737661, -16557099, -2214593, -13366475, -5457830, 1126355, 2290828,
+4971425, 4896800, 6009733, 14708652, 22100828, 19459960, -1381906, -4786741, 2892124, -9522479,
+12389907, -13385802, -1174674, 10902238, -207769, -2636036, -21297670, 10901164, -21240224, 7267085,
+-4399657, 3480534, -1419487, 2529736, -541703, -13433047, 8040179, 6744710, -639413, 4586488,
+-281857, 3951370, -1297617, -3422015, -172336, -1005022, 1242319, -542777, 1272921, 690953,
+-4089883, -1752347, -420907, 3235184, 1342714, -843424, -2201171, -1486596, -25388088, 2558727,
+66215512, 51577724, 7667591, 4229469, -36512052, -69332048, -61297772, -29513404, 49622980, 54983096,
+56402048, 31751620, -8699456, -35864052, -33777772, -21657372, 13908715, 22440130, 38474316, 3819837,
+-29937532, -24762634, -5844914, -24812026, -12046846, 5711770, 39851392, 57629872, 36811628, 17959942,
+15903190, -35756140, -4647692, -72111424, -81236088, -50437412, -24782498, -22001506, 37401112, 59403156,
+65227132, 59512140, 50987704, 21476448, 3068217, -24628416, -7226820, -39790724, -71269080, -5693516,
+6206765, 7060926, 23130010, 14193256, 23470922, -79211008, -43770012, -28221156, -46375984, -19369228,
+33660196, -20173998, 22543746, 3304977, -21337934, 17044578, -17893370, 19143206, 21771190, -16764331,
+-34448324, -70183520, -68517080, -50746648, 24537686, 8883066, -10122701, 13243532, 3304441, 338766,
+-32900524, -22767084, -60900488, -19992000, -22686018, -2355790, 43884364, 47406776, 6556268, 24513526,
+-15031312, -32743220, -59256592, -38735772, -36749352, -1212791, 17635672, 10357314, 14305999, 15848429,
+-11218455, 9627706, -10601590, 9986336, 2124935, -308701, -2509872, 8258149, 6894497, 15712064,
+-3922379, -3645354, 14318884, 11638288, -119188024, -60955248, -31728534, 40125732, 9317395, 152951840,
+156783488, 118181392, 152860032, 160154496, 145531744, 104460584, 94839856, 105214888, 41909216, -6241125,
+-65066072, -100603704, -139003936, -135078336, -201327136, -122180544, -79442936, -63131188, -89737440, -47238196,
+-12901008, -67286568, -52195128, -55180128, -12418898, -33139968, -11743514, -44866304, -22721988, 26733488,
+27756226, 8265665, -8217883, 29133836, 23672786, -67884640, 14182519, 45878304, 100553240, 73687680,
+95739656, 39223788, 38096896, 159353488, 86382528, 163068640, 54702316, 152937344, 105701832, 133520872,
+180215760, 170591808, 138453632, 155343056, 172707616, 187822672, 160545872, 185144224, 126454040, 187798512,
+150929984, 133781248, 142798000, 77869368, 159854928, 77257872, 47036872, -58789512, 4012573, -86831888,
+-97406640, -149234544, -175992192, -270794464, -264223696, -249788320, -233374032, -220191168, -185868464, -227027680,
+-279189504, -275581760, -228361264, -241985968, -227316512, -228361264, -194655440, -212261040, -203266848, -151865744,
+-167440368, -128891432, -120099096, -110990008, -70514776, -91454352, -20642686, -34062312, 15850577, 21065740,
+66728224, 98288712, 103332616, 118985624, 105979928, 159287984, 180908320, 178919744, 207125872, 215965984,
+214331760, 163141648, 146004736, 127811784, 118857848, 115367656, 118808456, 111309984, 85127328, 54579908,
+62406948, 47911972, 37671160, 24845848, -18876382, -25119116, -25985090, -32317482, -39075076, -44471700,
+-30838402, -34409668, -27037892, -28014998, -23817742, -17382270, -20411832, -16988206, -16018617, -20175072,
+-18025978, -20480552, -15482820, -12837657, -16935056, -19777788, -6792491, -1621350, -1369558, -512175,
+1505923, 8590, 653909, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-7687455,
--15177341, -2673617, 219043, -3496104, -7132867, -2373506, 5257040, -8422431, -4627828, -2797634,
--1629403, 2656974, -1183264, 2959769, 1378148, 2590939, -272194, 3210488, -2793876, 511638,
--1215476, 597000, 8129300, -1738925, -480499, -4032974, 5032628, 3099893, 2431488, 6243272,
--3178813, -1829656, 2159295, 5589363, -1490891, -384936, -4501126, -4964982, -3292629, 3526168,
--4376572, -3781719, -454730, 5027796, -6796786, -1460289, -5674726, -2772938, -1607928, 774705,
--490700, -4092567, 5258651, 884763, 4735202, -1913408, -1170916, -5878200, -103616, -2066416,
--2189360, 3375844, 1926293, -1058173, 1845762, 3737159, -1040993, 1602560, -2655901, -1553704,
--623307, -2534568, 2271501, 776852, 1736241, -4016331, 2906082, 1653562, 6522445, 3859565,
--1036698, -4131759, -309238, 896038, 541166, 1280437, -162672, -1401233, 84826, -952946,
-36507, -1152125, 439160, -1120450, -45097, 1249836, 452045, 644782, -770410, -563178,
-623307, 859530, 421444, -127775, -12489228, -4502200, 3614752, -3322157, -1472100, -1413044,
-1713692, -650688, -3281892, 5193153, 4673462, 1541356, -568009, 2399813, -6402723, -953483,
--6327024, -3209414, 4696547, -794569, 852014, -653909, -710280, 92879, 9808095, 8950712,
-4021163, 4772246, 5689221, -1107565, -635655, -1966021, 5021891, -500364, -1881733, 1394254,
--2898566, 1988570, 3619584, -1853815, 4078072, 4576288, 8968965, -3514357, -4206384, 3821984,
--2296734, 117038, 1903207, -5215164, 329639, -2733747, -3036542, 6885907, 4069482, 4953708,
--2821257, -3752728, 2644626, -4366908, 3075197, 13298292, 767725, 904091, 3005403, 1290638,
-1242319, 7566122, -4038880, -1036698, 1404991, 979789, -3759170, -2780455, -3837553, -1837172,
--1394791, 3474629, -580357, 3490198, 3597572, -3605625, -3837017, -999654, 2441689, 3365644,
--4023848, -792421, -1188095, -2780455, -326954, -2634426, 694711, -181999, 1414655, -810138,
-549219, -1026497, -249108, -790274, -3657165, 3959423, 6368363, -3056943, 3149285, 10035191,
-3343095, 2297808, -7030325, 5816460, 1515050, -9028558, 3814468, -2533494, -5436355, 2185065,
--769336, 2105608, 5230734, -5509906, -5805722, -2575370, 7857106, 222265, 3891240, 8152922,
--12140262, -9777493, 1574642, 5975374, -4398047, 388695, 8077760, 2089502, -1060857, -2430952,
-9669582, 1189169, -2372433, 1359894, -8800388, 1003412, -4859756, 4480725, 769336, 4759361,
--2407329, -1185948, 2135673, 149787, 612033, 280784, 4548907, 3679176, -5017059, 2872796,
-4024921, -6862284, 806380, -3088618, 1277753, -1568200, -5322002, 93416, 4566624, 3986267,
-8822400, -5464272, 6828998, -4516158, -921271, 4065187, -4438849, -6591164, -2396592, 321049,
--427349, -328028, -723702, 1317481, 2805688, -3829500, -59593, 1838246, -362925, 1580011,
--3156264, -1795833, -1257352, -2302639, 669478, -490163, -1821603, 1005022, 1018981, -1506460,
--2332167, -111669, -549756, 2406792, -128849, -380105, 429497, 526134, -426812, -705985,
-1602023, 547608, -1297080, -639413, -995359, 157303, 20176682, 9045201, 12222403, -989453,
--3381750, -4407710, -4421132, 2404108, -3713536, 5626944, -639950, 7721815, 464930, 4084514,
-5068062, 3919158, 3353296, 4443681, -14992120, -4432943, -1412507, -3160559, -2777233, -4719632,
--10681047, 479426, 7311108, -4503810, 4387846, -3617436, -5333276, -4022774, 602369, -3395709,
--1265942, -3482145, -248034, 8821863, 464393, 3964792, 5570573, 7252589, -3414499, 1698123,
--1629403, -5599027, 6350109, -3558381, -266825, -5542119, 4043175, -55835, 84826, -1531156,
--2587718, 1874216, 5671505, -2385318, 3191698, 3028489, 2539400, 9763534, -9836549, -4157528,
-228170, -5415417, -7023346, -2786360, -8594230, 1282585, 10051834, -6947647, -3324305, -7933879,
-499290, -2502355, -3805878, -9300752, 5448703, 7125888, 2807835, 4977330, -2546379, 795106,
--1891933, 2059437, 70867, 4925791, -1294933, 2115272, -118648, -1271847, 1699196, 1171452,
-2241436, 1887638, -344134, 444529, 1215476, 490700, 943282, -92342, -966905, -1792612,
-862752, 454193, -1245004, 867583, 944893, -313533, 396748, 1160178, -384936, -1072668,
--389231, 6270653, 8941585, -4954245, 4647692, -4043712, -1975685, -1604707, -11108933, 8065949,
--2365990, -1180579, 12783433, 7963406, 8537858, -3477850, 308701, 1529008, -1991254, 2850785,
--6548215, -171262, -4487167, 5228049, -5100811, -3498251, -555125, 892816, -6294275, 1209570,
-642098, 8240432, 35433, -11256572, 6463389, 6080063, 8635569, -1374390, 2155537, -6225018,
--4720706, -1964411, -4583804, 1791001, 1165547, -1698660, -710280, 4711579, 7311108, -10043781,
--2196876, -3758, -4145180, -4290136, 6611029, -5342940, 2479270, -5243618, -6974490, -5171678,
--3459059, 2400887, 949188, 12423730, -2128693, -3333432, 3677566, -3730716, -1117228, -3311957,
-3437048, -3064459, 4437238, -2230699, -2079301, 3069291, 7436736, 2075543, -7030862, 42950,
--3477313, -7103876, 1991791, 5031018, -1695438, 1165547, 1728724, 249645, -789200, 2590939,
-28454, -2878702, -2147, -1035624, -561567, -1495722, 2338610, -556735, -1963337, -2075543,
-265751, 2187212, -1003949, -146029, -2937221, 274878, 498216, 986232, -552977, -2463164,
--1309965, 2166811, -909459, -2658585, 1049583, -15432354, 14843944, 7967701, -8856759, -8931921,
-3661997, 11783780, -170725, 3456912, 13722421, 4602058, 4131222, -2318746, 7152195, 6536940,
-7533910, -13582834, -8342974, -8240432, 6506876, 5614596, 7156490, 343061, -8291435, 3409667,
--1257889, 3752191, -11919071, 4606890, 7220914, -5589900, 3122978, 5843840, 1636383, -173409,
-1252520, -1872069, 10434623, 7092602, 5582921, 210990, 3626026, 8055748, -7189776, -3866008,
-354872, 10651519, 6813429, 4193499, -8022462, 299574, 5452998, 6362994, -2238215, 1975148,
-6211597, 7696045, 2428267, 7116761, 2822867, -790274, -6564321, -36507, -10932302, -4472672,
--5244692, 921807, 3604551, -6325950, -2565706, -11555610, 5029407, -3203509, -84289, 6142340,
-8943196, 10814728, 1342177, -1115618, -6704981, -1994476, 3424700, 3701188, -7114077, 2243584,
--3201361, 2617783, 477278, -2392297, 45634, 1280974, -2254858, 1020055, -595390, -2682207,
--1383516, -1684164, 1698123, 2080912, -361851, -1551557, 1117765, -1189706, -861678, -2083596,
--288300, -438624, -2437931, 2027225, 13076565, 4100083, -2217814, -5925981, -15495168, -7510287,
-9509058, -3320010, -14240501, -3792993, -2247342, 2192044, 7896298, 12056510, -688269, 3561602,
--2739652, 6018323, -6700686, -7136088, -7681012, -13664438, 7329899, 4185983, -11411728, 373662,
--8327942, -3163780, 7394860, 4198331, 6038724, -1669669, -1563368, -1939178, 13019656, 10145786,
-10744934, -4852240, -9152038, 7279433, -1217623, -3223910, 9261023, 1672890, 9111236, -263067,
-5100274, -6365142, -320512, 4599910, -19484656, -2914672, 950798, -14246943, 3714610, -3610994,
-13331578, 8520678, -8153459, 672699, 12171400, -1232656, 6204617, -4056597, 8367133, -3859028,
-1655710, -3198140, 208306, 5884105, -7920457, 8579734, 4385699, 4940286, 1398549, 11393474,
--4463008, -12971875, 2250563, 9048422, -4269198, -8043937, -5832566, -4092030, 9325448, 234613,
--4001299, 422517, 221728, -1778653, -1792075, 620623, 1790465, -1007170, -1228361, -642635,
-1993402, -1007707, -3513283, 1018981, -3889093, 3589519, 2301029, -6979, -405874, 987306,
--1139240, 1613834, 143345, 1130113, 197569, 525597, 4112968, 1482301, -2175938, 1207960,
--31410706, -6636798, 16843252, -13594645, -4930623, 14319958, 5389647, -4530654, 1512902, -11841762,
-10573673, -1331977, -19102404, 1377611, -1001801, 7231651, 7086696, -3784403, -14963129, -6400038,
--5712844, 329639, -7977902, -4372277, -10173167, -2911988, 11092827, -9095130, -4571993, -3488587,
--5920613, -6241125, -8487392, 5812702, 1182190, 7226283, 1265405, -5305359, -8223252, -8106751,
--1667521, 5424544, 7988103, -2802466, -7267085, 7656316, 3185255, -11420318, -12738336, -25972740,
--2290828, -8284992, -5015448, 3872987, 3959423, 2399813, 11684995, -1196685, -5566815, -682363,
--5999533, 13336410, 7087770, -2567317, 7126962, -7469485, 3744138, 3087008, -7311645, -3193845,
--6555731, 4718559, 3313031, -12065637, 7985955, 12253542, -789737, -562104, -12366285, -4795331,
-5464272, -3819837, 3614215, 12149926, -4044786, 2694018, 1239098, 969589, -3825205, 741419,
--610422, -5034776, -3036542, -432181, 1813550, 324270, 1430761, -5250598, 643708, -2796561,
-1356673, -3025805, -2940979, -1766842, -164283, 701690, -2244121, 732829, 1312649, -279173,
-557272, 2287070, 1285806, -4158065, -2742874, -1272921, 467078, 1606318, -648003, 1629403,
-5607617, 20832738, -9722732, 7917236, -5092758, -48855, 11955041, -3446175, -5306969, -2816425,
--1099512, 2101313, 8132521, 27451284, -1497870, 1656784, 7630010, 1778117, 141734, -12841415,
--13348221, 2057826, 1842004, -8396124, -4271345, -1936493, 7621420, -3372623, 1490891, -175020,
-3335579, -3438121, 16042240, 8900246, -7474317, 8814347, 7997766, -9699647, 1709397, 4126927,
-3224447, -2699924, -3272228, 13346611, -11674795, 4942971, 14779519, -5152350, 1851668, 9458592,
--1019518, 8223252, 4542465, 116501, 4538170, 7052337, 9731322, 6097780, 804770, -372588,
--6684043, -7431367, 293132, 804233, -23284092, 15195594, -3562675, -7227356, -8084202, -17105780,
--19286550, -12557411, 2354716, 9528385, -3487514, 1154273, -1548336, 9465034, -3533684, -7714298,
-4377646, 2250026, -3194382, 1134945, 6482717, -6296422, 1256815, -7998303, -2661269, -3612604,
-1915019, -970126, 4098473, 2498597, 871342, -1197759, 2087891, 2747169, -62277, -5819144,
-3236795, -339839, 4926865, 4642860, 2347737, -2427730, 4268661, 863288, -670015, -221728,
-254477, -3929895, 4282620, -475668, -2831457, 4034048, 8230768, -1720134, -1754494, 4131222,
--1664300, -3042984, -1098975, 28195386, 28336584, -816581, -23424752, 4566087, 4821638, -2705293,
-6165426, 3510599, 2075006, -281320, -3937948, 22874458, 4263829, -3691525, -25458956, -14341433,
-6059662, -1593433, -8824010, -15297063, 2181307, 2583423, 3974455, -3819837, -16711718, -17890150,
-19434728, 18339510, 5779416, 16842178, -14347875, 1953136, 7605314, -3041374, -9073655, -16428250,
--8061654, 2898566, -632971, -7711614, 7994008, 144955, 7762080, 6236830, 496606, -17661980,
--10195179, -8308614, -1355062, 1813013, 2406256, -3007014, -4925791, 1212255, 2924336, -15793668,
--3904662, 2579128, 3624953, -7172596, -19679004, -4614943, -4890894, 14583561, -492311, 6561637,
--6529424, -5013838, -8766565, -9883793, -5712307, 1592896, -664109, 12242804, -7200513, 2122251,
-14228153, -988916, 7146289, 6331319, 13824963, 3052111, -3915400, -7043210, -6111739, -2426120,
-8390755, 1283658, 8458401, 4453344, -577136, -227096, 491237, 676457, -3655017, -4687957,
-95563, -1163936, -367220, 1356673, -824634, 1061931, -5357972, -1270774, 3428458, -201863,
-2200634, -9322227, -957241, -381715, -1731409, 1897839, 1541893, 1187559, 1713155, 2119030,
--4275103, 5094905, -3276523, 12281459, -6314139, 2145873, -4756677, 950798, 3227668, -7728794,
--5229123, -13798119, -15256261, -10020159, -3923453, -699006, 382252, -8442295, -7821673, -15820512,
-7611756, -15855409, -20403780, 13179644, -12230993, -15570330, 14504641, 2755222, -3269007, 15556372,
-8982387, -12087112, 11180337, -30819612, -2079301, -7920457, -3284576, -14489609, 25368762, 11877195,
--7421167, 3723737, 8001524, -5309117, 8833137, 133144, 400506, -7247221, 8579197, 9874130,
-13357885, -20908438, -716186, -144955, 6202470, -9480067, -3605625, -9649181, -9471477, 16618302,
-5385889, -12450036, 6429029, -7702487, -8156143, -13369696, -24285356, 6345278, 16069083, 1088774,
-16186658, 21961242, -1294396, -8997956, -20807506, 1621887, -2654827, 1330366, -5184026, 4300336,
--9137543, 19661824, 10899553, 17199196, 3498788, -2121714, -5220533, 7021198, 8130910, 3659849,
--1471026, -2461016, 781684, 9254581, -1620813, 3880503, -5825050, 2520072, -9634149, 940598,
-1201517, -4243428, 9103720, 5262946, -2328946, -5980742, -5223754, -1725503, -476205, 2922725,
--6117644, 1584306, 1103807, -447750, -4226248, 1603633, -9176198, -1858647, -2173254, -2562485,
-1591285, -166967, -17593796, 2357400, -39244728, -26365730, -18900540, 10227928, 19465328, -27764280,
-6441377, 19682762, 12157442, -281320, 7204808, 18558016, -8524973, -1109712, -5406290, 547071,
--12059731, 8573292, 177704, 1013612, 3167539, 24875914, -1261110, -10975789, -10691247, 5929739,
-18313204, -7397545, -18551038, 5505611, 18583786, 10849624, -2509872, 9024263, 6094022, 8694624,
-1930051, 7364795, 12604655, -1574642, -21261162, 1064615, 6551973, -19922206, -14548128, 19486266,
-15286325, -15047418, -9862856, 4759361, -1013612, 9557913, 23694260, -5095442, -4592394, 4505421,
--1231045, 8773008, 4378183, -8639864, -6792491, -3261491, 6935299, 6305549, -6314139, -17176112,
--3037616, -25846576, 24448028, 4123169, -4495757, 2326799, 10125385, -526134, -11368778, 4218195,
--4948876, -7369627, 5746130, -1546725, -11251204, -18489834, -6048925, -7540352, 15257871, -2436857,
-5027796, 2903935, 1856500, -1438277, -1337882, 2380486, -4110821, 664109, 5517959, -668941,
--2904472, -1657857, -12617003, -3894462, -350040, -2369211, -9188546, -8242579, -3470871, -1887638,
--836982, -2699387, -497142, 152471, 6902013, 2443300, -1147830, -2810519, 1076426, -2486249,
--2103460, 4481799, -2270427, -5364951, -1582696, -4043712, 474594, -4973036, 132070, 3280281,
-1027571, -4772246, -1591822, -15162845, -656056, 2622615, -18586470, -4884452, 13973676, 18176302,
-12863964, 33918432, 20459614, 30734786, 11473468, 8098698, -15880642, 17249126, -5807870, -1944010,
--12717398, -8469139, 16666621, -5459977, 37801080, 17586280, 10907606, -2025614, 8740258, -5952288,
--17648020, -8929774, -10954851, 7961796, -10329933, -240518, -11054172, 6462852, 15375983, 13875429,
--917512, 20068234, 16767552, 776852, -5844914, -7678865, -13762149, -4740570, 31645320, 12263742,
-36429376, -11755862, 178778, -1249836, 8490077, 29227790, 10013716, 685584, 18793166, 21525840,
-22746684, -2079838, -13453448, -4963372, -3721052, -3903052, 15076409, 10272488, 14307610, 21824876,
--13634911, 33022392, -22205518, -41686416, -6451041, -13026636, 8483097, 20070382, 9831717, -11284490,
--1157494, -12253005, -9141301, -6086506, 146029, 16591459, 2797634, -4753455, 2595234, 1198296,
-4977330, 5256503, 3610457, 6459631, 1759863, 4041564, 1486596, 4487167, 281320, -13478144,
--5193153, -203474, -12532715, 1315871, -13085155, -6942278, -7946763, -7408819, -6205154, -4610648,
--1757715, 686658, 3749507, 13699872, 1863479, -8791798, 3986267, 739271, 12447889, -2435783,
-5368172, -183073, 152471, -6765111, 1567663, 19730542, 32081258, -15973520, -12649216, 11539503,
--9678172, -1759863, -4604205, 4307316, 13931800, 15108084, 22198538, -24516748, 27394376, -9978820,
-2238752, -12761958, 11186779, 20806432, 8209293, 3804267, 1101659, 25347824, 5884105, -907312,
--8772471, -3947075, -26498874, -3599720, -13099113, -31496606, 2261837, -1967095, 12401181, -32803886,
--6856379, 7595650, 11649025, 27161374, -7959112, 7848516, 14397804, 2156074, -4278325, 7612830,
--7733089, -1954747, -41375568, 3495030, -17905718, -20571820, -23301808, 9123047, -37110664, 11976516,
--14190572, -18493056, -25390236, 22433152, 24042690, 23934778, 4673462, 4292283, 22550188, -31660352,
--3110093, -9846749, 12774843, -37597068, -12916577, -3998078, 12001749, 9401147, 7701413, 15008763,
--14020384, 5413807, -16923244, -5115843, -10146323, -4095788, -3449933, 339302, -16036334, 7198902,
-10072772, -1859184, 708670, -7982734, -2457795, 7590818, -10342818, -330176, 5087926, -12929462,
-5879810, -11598022, 161598, 7072201, 1734093, -9529459, -6155762, 3522947, -5207648, 5723581,
-4128001, 6620692, -831076, -8361765, 15768972, -7585986, -3729642, -10286447, 7064685, -3578245,
-1049583, -9552544, 1315334, -11581379, -1762010, 8296803, -2597382, -4982162, -11967926, 1278827,
-1671279, -1708860, -15724949, -29685204, -508954, -10645076, 35097936, 7238631, 24832964, -8207146,
-33889440, -21368536, -39864276, 8912057, 6784975, 4458176, -19804632, -22680648, -17671642, 6529961,
--17798344, 7742216, -9429064, 26486526, -8644695, -4107063, 19191524, 502511, -47707424, -19927038,
--618475, 31363462, -3586835, -9955734, -27341224, 4662724, -6725382, -23638964, -27862526, -3320547,
-5139465, -9686762, -10590852, -27994060, 18308908, -7005092, 6600828, -13974750, 645319, 8204462,
-5087926, 24563992, 282931, -8551817, -31996432, -11366631, 15516643, -21997212, -11142756, 8054138,
-17660906, 13689135, 35170952, 26749594, 545998, 20287278, 20901996, 7049652, 867583, 12153147,
--10367514, 52977884, -24337970, -57962196, 15452755, -49343268, -1852205, -38631084, -208843, 47165720,
-5975910, -22531936, 7546258, 7988639, -14630269, -12110734, -16559783, 3577708, -4956929, 15097884,
--11873437, 10084046, -19931870, 5571110, -594316, -3299072, -4466766, 13688598, 26311506, 8188892,
-10746008, 18114562, 5619428, -18118856, 5374078, -6723235, 12215961, -3775813, -5533529, -699006,
--1116692, -4869956, -14800457, -9791989, -6487011, -821413, 2255395, -1079647, -9324911, -21337398,
--13205951, 3221226, -3616363, -363998, -8010651, 2889439, 15586973, 22196390, -33643016, -22378390,
--13894756, -11812234, 13532368, 21005074, -12352326, 1401233, 18748070, -37948184, 2807835, 8895414,
--28625420, 14829985, -9529459, 13083544, 4926328, 14744623, 1601486, -18551038, 19217294, -24177982,
--5263483, 46826416, -19209778, 17155710, -11143830, 19280646, 17578764, -6142877, -20535312, 21822192,
-56761752, -31099858, 8083129, -41275708, 20882668, 12561706, -22362284, 24776592, 2326262, -49561776,
-7115150, 2437931, 22624814, -6068789, -3517041, -26039850, -25353192, -13006772, 61872224, -9445170,
-31392990, -27589260, 20635708, 10126459, -5737540, -21209086, -3994320, 17467096, 34744136, -12600360,
--11752104, -3676492, 6750615, 30302604, -7772280, -7151121, -22580790, 6922414, -33956548, -15060303,
-24060406, 29272886, 3183645, -2407866, -16000364, -26006564, -75670880, 47162500, 17790292, 27098022,
-2528125, -24554328, 26897232, -15198816, 11291469, 16125455, 15526307, 36418640, -847182, 8532489,
-9896678, -4041564, -16102369, -5248987, 26419418, 16446504, -15081241, -3214783, -10317048, -2556579,
-12238509, 3727495, -17627620, -11221676, 16503412, 3945464, -5461588, 8711804, -14943265, -8936216,
--3258270, 7350837, 11587822, 7709467, 2061047, 9363566, -7693897, -9805410, 1564979, -897648,
--13457743, 1679332, -13877576, -437550, -8571681, -1910187, 1918777, -6945499, -13305272, 4551055,
--31807990, 22220550, 21751862, -43097312, 4054449, -22642530, 2678986, -47445968, 47571056, 41485624,
--4387309, -21644488, -7651484, -8674223, 23008676, -23731304, 29713120, -39672076, -23148264, 11316702,
-13903883, 3226057, 13415867, 37796248, 10726144, 17438640, 4473746, 18121540, 12714714, -8483634,
-3597572, 15348603, -1249299, -1291175, 29995514, 13561359, 39421356, -3609920, 22382148, 76773,
--29171954, 29642790, -15525233, -3309809, 8916889, -27454504, -18797998, 10682121, 42872900, 23561654,
-15326054, -55531780, -13184476, -38933880, -643708, 62310848, 40700184, 47144784, 3403225, -45712948,
-13918915, 46402288, 9426379, -11597485, 40969692, 4475893, 27273042, -71105328, -59337656, 42417632,
--3412889, -19128710, -45552424, -9834938, -17335024, 19345070, 17545478, 21181168, 21359946, -8960376,
-6391448, 39303244, 35907536, 37963752, 2749316, 54546084, 26808112, -9649181, -22009560, 356482,
--11060615, 3264712, 27307938, -4347581, 783295, 20216412, 21825414, 2170569, -335007, 8651675,
-24212878, 8710731, 11110007, 16809428, 5526549, 13085155, -1091459, -7335804, -3681324, -2784750,
-560493, 17379048, -7113540, 3092377, -14690399, 21027086, 9691594, 9207873, -744103, 10626286,
--492848, 36010616, 8745627, 36971080, -10502806, 32345936, 14306536, 4809290, 13544716, 13940390,
-15251429, -4179003, -3431679, 22141630, 7098507, 18557480, -41175316, 24273008, 32386200, 2456721,
-11021423, -29346974, 22852448, -13363791, 10912975, 1036698, 19327, 19361176, -6084358, 12590160,
--4152160, -23579908, 6185290, -1675037, 26213796, 22939958, 32615444, 10851772, -25177098, -20745766,
-21117280, 23796804, 10908143, 2024540, 7403450, -6601902, -20691542, 3406983, -7768522, 28973850,
-20142860, 17634598, 22867480, 23528368, -32815698, 35817880, 35139276, 25769266, -17738214, -15741055,
--22891102, 31170188, 18099530, 51268488, -31512712, -31134754, -24165096, -45616848, -12074764, 48965312,
-7594039, 38413112, -41380400, -44177496, 9360881, 27761058, -38723964, 5842230, -30897458, 12018929,
--35630512, -2998961, 16548509, 17570174, -32432372, 12471511, -24741160, -48967460, -1893544, 57471496,
-29600378, 23128936, -16416439, -41552196, 62444528, 50470160, 13957033, -56674776, -2509872, -13545253,
-39873940, 20218022, 24595130, -29634738, 21718576, -13487271, 14112726, -20644298, 6862821, -23065048,
-32503238, -6865505, 5064304, -39576512, 11009612, 4498442, -2161979, -9210557, 7613367, 3672197,
-3745212, -24717536, 9851581, 24244016, 1200443, 14372571, 12229383, 9848897, 1277753, 4352413,
-145492, 781684, 715112, -8305930, -1256815, 7190849, -510027, 14938433, 12799003, -7672959,
--1752884, 6525129, 2703145, 11332271, -22984518, -694174, -79154640, -16244640, -1588064, 929324,
-28145458, -73983496, -7981660, 33414308, -54089744, 12233141, -11969537, 63461900, 34058552, -38953744,
-10023380, 42640972, 4799089, -17157858, 14532022, 10115185, 6061810, -978716, -3820910, 3113315,
-7431904, 14463302, 44455596, 35030292, 38927972, 26049514, 48906792, 23327042, 49993956, 20117626,
-44395468, 308701, 27731530, 24234352, 27482958, 20365662, -1562294, 7747584, -33315524, -20480014,
-64636036, 454730, -25248502, -7547868, 20571282, 33472828, 69519952, -9709310, -37630356, -19524384,
--27636504, 38994544, 45439680, 50070728, 16064788, -2220498, 34537444, -58406724, 53204980, 19619410,
--27460948, -916976, -89874872, 1739462, -59278064, -83143584, -20219632, -49039400, -20733418, 93315680,
-85899880, 80006648, -62914292, -6905234, -6849399, 62816580, 99470904, -22505628, -27606440, 54484880,
-56768732, 48099876, -5412196, -8247948, -27082990, -34965864, 5380521, -13127568, 15557445, 23420994,
-21088290, 13959717, 1753420, 8894877, 26866094, 4118337, 478889, -7937637, 1828582, 1387274,
-7537131, 5037997, 5732171, 27032524, -2090039, -16770774, 17119202, 19532438, 4969277, 31452046,
-7836705, 15003931, 35155380, 46214384, 34398392, 24540906, 10384694, 4293357, 13889924, 31556736,
-14361834, 32364726, 24591372, 15343234, 23153632, 8039105, 31336618, 26750666, 22392348, 33341294,
-19667728, 5961415, 9709310, -2107755, -22002580, 56847112, 69080256, -57219164, -52486648, 17656610,
-60392072, 1500554, -28310276, 198105, 16386374, 18122614, -49956376, 18570364, -6671695, 26362510,
--27431420, -13207024, -32142998, 33925408, -4631049, -15008763, -30055108, 22009024, 12994960, -5214091,
--25402048, 11867532, 11246372, 5983427, -22446036, -3255048, -1127429, 25933012, -19564112, -4788889,
--28610388, -7552163, 9898826, 22755810, -29768418, -11396696, 31729070, 27133992, -8332774, -19236622,
--117575, -9833328, 26509612, -15188078, -8351564, 12783433, 9634149, 16147466, -14537391, 4549981,
--20034412, 23108534, 27416924, 12940736, 4297652, -21497386, 24371256, -17301738, 37715720, -27625230,
-30324616, -47564080, 32136556, 3982509, -2681133, -33478734, -9868761, 10799695, -8426189, 3176128,
--8140574, 9375914, -4048544, 10499048, -10262824, -14388677, -8955544, 9967008, 907312, -1335735,
--2332167, -8002061, 5114233, 11665668, -5901822, -1598802, 928787, 1498944, -416075, 1983201,
--1862405, 8404177, 494458, 10920491, -9787694, 1720671, -4374424, 11011222, -11770358, 10837276,
--12136504, 7205882, 3956202, 13742822, -2973728, 12987981, -11793980, -9912248, -1642288, 21188148,
--10055055, 16264504, -5548561, 1988570, 2758443, 11350525, -4669703, 5546951, 2703145, -340913,
--303869, 3527779, -753230, -7945690, 15497853, -9450002, 3040837, -7713225, 5412733, -7363185,
-8406325, -10912438, 12682502, -10239739, 10908143, -13741748, 12432857, -17282948, 16669842, -10912438,
-12116103, -12826383, 12898861, -13064217, 13468481, -12328704, 12906377, -1834488, -12327630, 55091544,
-58628452, -34500400, -20433844, 11623255, 55989732, 34782256, 20864952, 20065550, -8914205, -23431194,
--7089918, 13153874, -201863, -5521718, 16703665, 287763, 11773042, 1440425, -6261526, -20995410,
--5571647, -1232119, 1549946, -834834, -17056926, 19036906, 3177202, -7669201, -431107, -593242,
-267899, 12286828, 22577032, 9623948, 2281702, -8135742, -11688217, -3038153, 7333657, 15127949,
-20376936, -11381663, -11236708, 2535105, 20598126, 9284646, 4589710, -9316858, -18702972, 15938624,
--3294777, 439160, 1076963, 5127117, 4919885, -2278480, -689879, -12202539, 1863479, 10739029,
--5116380, 6410776, -3613678, -8699993, 5507222, -1663226, 2973728, -677531, 9336185, 6327024,
--13952201, 4097936, 652298, -25302190, -33618320, 947577, 1952063, 7640747, 20444582, 2226404,
--9027484, -8836358, 8041253, 8783745, 13336947, 9087614, 550830, 3866544, -1452236, -10162966,
--4238059, 1527398, -13945759, -13342853, 8559333, 9092983, -239444, 10229538, -14554570, -2658585,
--706522, 702764, -4516158, 2281702, 7823283, 10872710, 5285494, 9152575, -5833103, -11419781,
-6654515, 1043140, -2829847, -19475530, -72702520, 30869540, 112121728, 103376640, 88251376, 35198332,
--83727168, -52414708, -75270376, -84359064, -75414792, -21974664, 16316044, 63572496, 66234300, 79306032,
-52545704, 52977348, 1327145, -55736328, -53213036, -65630320, -51317344, -28585692, -1910724, -18420040,
-19964618, 24577414, 39879844, 43765716, 44487808, 26479010, 2260227, 11756399, -9773735, 6290517,
--30415348, -22144314, -28126130, -46028092, -36479840, -27997818, -19729470, -32735166, 4567698, 55819004,
-63122596, 35201552, 66001836, 16328392, 38527468, 19775640, 11336029, -16616155, -35194572, -48300664,
--67775656, -52025476, -77321224, -32064616, -34410204, 22165790, 22261352, 64661808, 74585864, 66357780,
-59155660, 57766772, 36196372, 4397510, -20207822, -61877056, -38763152, -80816256, -68845640, -95841120,
--15478525, -8628052, 23637890, 30262876, 54630372, 64190972, 53781580, 47953308, 35622996, 20949776,
-2993055, -17894982, -25680146, -34675420, -53434224, -37612640, -46520940, -32430224, -16580184, -4850092,
-10570988, 10211285, 51095616, 47026672, 46680388, 36334348, 26716308, 3124589, 16617228, -18558554,
--30644054, -23951958, -66360464, -77450608, -14915885, -5276368, -3333968, 37687264, 30925912, 41136124,
-28893318, 37585796, 11504607, 9670119, -2896956, -16013249, -20494510, -26574574, -29343216, -18138184,
--3783866, -22975928, -12064026, 18245022, 26132192, 17448842, 22638772, 15371151, 11236171, 2847027,
--2025614, -8031052, -11204496, -8782134, -14011257, -7438347, -2748242, -5360119, -7111929, 1508607,
-5422396, 1076963, 8237211, 10339597, 7846905, 5226975, 4565014, 1374390, -846109, -2950643,
--749472, -1116692, 394063, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-15177341, -2673617, 219043, -3496104, -7132867, -2373506, 5257040, -8422431, -4627828, -2797634,
+-1629403, 2656974, -1183264, 2959769, 1378148, 2590939, -272194, 3210488, -2793876, 511638,
+-1215476, 597000, 8129300, -1738925, -480499, -4032974, 5032628, 3099893, 2431488, 6243272,
+-3178813, -1829656, 2159295, 5589363, -1490891, -384936, -4501126, -4964982, -3292629, 3526168,
+-4376572, -3781719, -454730, 5027796, -6796786, -1460289, -5674726, -2772938, -1607928, 774705,
+-490700, -4092567, 5258651, 884763, 4735202, -1913408, -1170916, -5878200, -103616, -2066416,
+-2189360, 3375844, 1926293, -1058173, 1845762, 3737159, -1040993, 1602560, -2655901, -1553704,
+-623307, -2534568, 2271501, 776852, 1736241, -4016331, 2906082, 1653562, 6522445, 3859565,
+-1036698, -4131759, -309238, 896038, 541166, 1280437, -162672, -1401233, 84826, -952946,
+36507, -1152125, 439160, -1120450, -45097, 1249836, 452045, 644782, -770410, -563178,
+623307, 859530, 421444, -127775, -12489228, -4502200, 3614752, -3322157, -1472100, -1413044,
+1713692, -650688, -3281892, 5193153, 4673462, 1541356, -568009, 2399813, -6402723, -953483,
+-6327024, -3209414, 4696547, -794569, 852014, -653909, -710280, 92879, 9808095, 8950712,
+4021163, 4772246, 5689221, -1107565, -635655, -1966021, 5021891, -500364, -1881733, 1394254,
+-2898566, 1988570, 3619584, -1853815, 4078072, 4576288, 8968965, -3514357, -4206384, 3821984,
+-2296734, 117038, 1903207, -5215164, 329639, -2733747, -3036542, 6885907, 4069482, 4953708,
+-2821257, -3752728, 2644626, -4366908, 3075197, 13298292, 767725, 904091, 3005403, 1290638,
+1242319, 7566122, -4038880, -1036698, 1404991, 979789, -3759170, -2780455, -3837553, -1837172,
+-1394791, 3474629, -580357, 3490198, 3597572, -3605625, -3837017, -999654, 2441689, 3365644,
+-4023848, -792421, -1188095, -2780455, -326954, -2634426, 694711, -181999, 1414655, -810138,
+549219, -1026497, -249108, -790274, -3657165, 3959423, 6368363, -3056943, 3149285, 10035191,
+3343095, 2297808, -7030325, 5816460, 1515050, -9028558, 3814468, -2533494, -5436355, 2185065,
+-769336, 2105608, 5230734, -5509906, -5805722, -2575370, 7857106, 222265, 3891240, 8152922,
+-12140262, -9777493, 1574642, 5975374, -4398047, 388695, 8077760, 2089502, -1060857, -2430952,
+9669582, 1189169, -2372433, 1359894, -8800388, 1003412, -4859756, 4480725, 769336, 4759361,
+-2407329, -1185948, 2135673, 149787, 612033, 280784, 4548907, 3679176, -5017059, 2872796,
+4024921, -6862284, 806380, -3088618, 1277753, -1568200, -5322002, 93416, 4566624, 3986267,
+8822400, -5464272, 6828998, -4516158, -921271, 4065187, -4438849, -6591164, -2396592, 321049,
+-427349, -328028, -723702, 1317481, 2805688, -3829500, -59593, 1838246, -362925, 1580011,
+-3156264, -1795833, -1257352, -2302639, 669478, -490163, -1821603, 1005022, 1018981, -1506460,
+-2332167, -111669, -549756, 2406792, -128849, -380105, 429497, 526134, -426812, -705985,
+1602023, 547608, -1297080, -639413, -995359, 157303, 20176682, 9045201, 12222403, -989453,
+-3381750, -4407710, -4421132, 2404108, -3713536, 5626944, -639950, 7721815, 464930, 4084514,
+5068062, 3919158, 3353296, 4443681, -14992120, -4432943, -1412507, -3160559, -2777233, -4719632,
+-10681047, 479426, 7311108, -4503810, 4387846, -3617436, -5333276, -4022774, 602369, -3395709,
+-1265942, -3482145, -248034, 8821863, 464393, 3964792, 5570573, 7252589, -3414499, 1698123,
+-1629403, -5599027, 6350109, -3558381, -266825, -5542119, 4043175, -55835, 84826, -1531156,
+-2587718, 1874216, 5671505, -2385318, 3191698, 3028489, 2539400, 9763534, -9836549, -4157528,
+228170, -5415417, -7023346, -2786360, -8594230, 1282585, 10051834, -6947647, -3324305, -7933879,
+499290, -2502355, -3805878, -9300752, 5448703, 7125888, 2807835, 4977330, -2546379, 795106,
+-1891933, 2059437, 70867, 4925791, -1294933, 2115272, -118648, -1271847, 1699196, 1171452,
+2241436, 1887638, -344134, 444529, 1215476, 490700, 943282, -92342, -966905, -1792612,
+862752, 454193, -1245004, 867583, 944893, -313533, 396748, 1160178, -384936, -1072668,
+-389231, 6270653, 8941585, -4954245, 4647692, -4043712, -1975685, -1604707, -11108933, 8065949,
+-2365990, -1180579, 12783433, 7963406, 8537858, -3477850, 308701, 1529008, -1991254, 2850785,
+-6548215, -171262, -4487167, 5228049, -5100811, -3498251, -555125, 892816, -6294275, 1209570,
+642098, 8240432, 35433, -11256572, 6463389, 6080063, 8635569, -1374390, 2155537, -6225018,
+-4720706, -1964411, -4583804, 1791001, 1165547, -1698660, -710280, 4711579, 7311108, -10043781,
+-2196876, -3758, -4145180, -4290136, 6611029, -5342940, 2479270, -5243618, -6974490, -5171678,
+-3459059, 2400887, 949188, 12423730, -2128693, -3333432, 3677566, -3730716, -1117228, -3311957,
+3437048, -3064459, 4437238, -2230699, -2079301, 3069291, 7436736, 2075543, -7030862, 42950,
+-3477313, -7103876, 1991791, 5031018, -1695438, 1165547, 1728724, 249645, -789200, 2590939,
+28454, -2878702, -2147, -1035624, -561567, -1495722, 2338610, -556735, -1963337, -2075543,
+265751, 2187212, -1003949, -146029, -2937221, 274878, 498216, 986232, -552977, -2463164,
+-1309965, 2166811, -909459, -2658585, 1049583, -15432354, 14843944, 7967701, -8856759, -8931921,
+3661997, 11783780, -170725, 3456912, 13722421, 4602058, 4131222, -2318746, 7152195, 6536940,
+7533910, -13582834, -8342974, -8240432, 6506876, 5614596, 7156490, 343061, -8291435, 3409667,
+-1257889, 3752191, -11919071, 4606890, 7220914, -5589900, 3122978, 5843840, 1636383, -173409,
+1252520, -1872069, 10434623, 7092602, 5582921, 210990, 3626026, 8055748, -7189776, -3866008,
+354872, 10651519, 6813429, 4193499, -8022462, 299574, 5452998, 6362994, -2238215, 1975148,
+6211597, 7696045, 2428267, 7116761, 2822867, -790274, -6564321, -36507, -10932302, -4472672,
+-5244692, 921807, 3604551, -6325950, -2565706, -11555610, 5029407, -3203509, -84289, 6142340,
+8943196, 10814728, 1342177, -1115618, -6704981, -1994476, 3424700, 3701188, -7114077, 2243584,
+-3201361, 2617783, 477278, -2392297, 45634, 1280974, -2254858, 1020055, -595390, -2682207,
+-1383516, -1684164, 1698123, 2080912, -361851, -1551557, 1117765, -1189706, -861678, -2083596,
+-288300, -438624, -2437931, 2027225, 13076565, 4100083, -2217814, -5925981, -15495168, -7510287,
+9509058, -3320010, -14240501, -3792993, -2247342, 2192044, 7896298, 12056510, -688269, 3561602,
+-2739652, 6018323, -6700686, -7136088, -7681012, -13664438, 7329899, 4185983, -11411728, 373662,
+-8327942, -3163780, 7394860, 4198331, 6038724, -1669669, -1563368, -1939178, 13019656, 10145786,
+10744934, -4852240, -9152038, 7279433, -1217623, -3223910, 9261023, 1672890, 9111236, -263067,
+5100274, -6365142, -320512, 4599910, -19484656, -2914672, 950798, -14246943, 3714610, -3610994,
+13331578, 8520678, -8153459, 672699, 12171400, -1232656, 6204617, -4056597, 8367133, -3859028,
+1655710, -3198140, 208306, 5884105, -7920457, 8579734, 4385699, 4940286, 1398549, 11393474,
+-4463008, -12971875, 2250563, 9048422, -4269198, -8043937, -5832566, -4092030, 9325448, 234613,
+-4001299, 422517, 221728, -1778653, -1792075, 620623, 1790465, -1007170, -1228361, -642635,
+1993402, -1007707, -3513283, 1018981, -3889093, 3589519, 2301029, -6979, -405874, 987306,
+-1139240, 1613834, 143345, 1130113, 197569, 525597, 4112968, 1482301, -2175938, 1207960,
+-31410706, -6636798, 16843252, -13594645, -4930623, 14319958, 5389647, -4530654, 1512902, -11841762,
+10573673, -1331977, -19102404, 1377611, -1001801, 7231651, 7086696, -3784403, -14963129, -6400038,
+-5712844, 329639, -7977902, -4372277, -10173167, -2911988, 11092827, -9095130, -4571993, -3488587,
+-5920613, -6241125, -8487392, 5812702, 1182190, 7226283, 1265405, -5305359, -8223252, -8106751,
+-1667521, 5424544, 7988103, -2802466, -7267085, 7656316, 3185255, -11420318, -12738336, -25972740,
+-2290828, -8284992, -5015448, 3872987, 3959423, 2399813, 11684995, -1196685, -5566815, -682363,
+-5999533, 13336410, 7087770, -2567317, 7126962, -7469485, 3744138, 3087008, -7311645, -3193845,
+-6555731, 4718559, 3313031, -12065637, 7985955, 12253542, -789737, -562104, -12366285, -4795331,
+5464272, -3819837, 3614215, 12149926, -4044786, 2694018, 1239098, 969589, -3825205, 741419,
+-610422, -5034776, -3036542, -432181, 1813550, 324270, 1430761, -5250598, 643708, -2796561,
+1356673, -3025805, -2940979, -1766842, -164283, 701690, -2244121, 732829, 1312649, -279173,
+557272, 2287070, 1285806, -4158065, -2742874, -1272921, 467078, 1606318, -648003, 1629403,
+5607617, 20832738, -9722732, 7917236, -5092758, -48855, 11955041, -3446175, -5306969, -2816425,
+-1099512, 2101313, 8132521, 27451284, -1497870, 1656784, 7630010, 1778117, 141734, -12841415,
+-13348221, 2057826, 1842004, -8396124, -4271345, -1936493, 7621420, -3372623, 1490891, -175020,
+3335579, -3438121, 16042240, 8900246, -7474317, 8814347, 7997766, -9699647, 1709397, 4126927,
+3224447, -2699924, -3272228, 13346611, -11674795, 4942971, 14779519, -5152350, 1851668, 9458592,
+-1019518, 8223252, 4542465, 116501, 4538170, 7052337, 9731322, 6097780, 804770, -372588,
+-6684043, -7431367, 293132, 804233, -23284092, 15195594, -3562675, -7227356, -8084202, -17105780,
+-19286550, -12557411, 2354716, 9528385, -3487514, 1154273, -1548336, 9465034, -3533684, -7714298,
+4377646, 2250026, -3194382, 1134945, 6482717, -6296422, 1256815, -7998303, -2661269, -3612604,
+1915019, -970126, 4098473, 2498597, 871342, -1197759, 2087891, 2747169, -62277, -5819144,
+3236795, -339839, 4926865, 4642860, 2347737, -2427730, 4268661, 863288, -670015, -221728,
+254477, -3929895, 4282620, -475668, -2831457, 4034048, 8230768, -1720134, -1754494, 4131222,
+-1664300, -3042984, -1098975, 28195386, 28336584, -816581, -23424752, 4566087, 4821638, -2705293,
+6165426, 3510599, 2075006, -281320, -3937948, 22874458, 4263829, -3691525, -25458956, -14341433,
+6059662, -1593433, -8824010, -15297063, 2181307, 2583423, 3974455, -3819837, -16711718, -17890150,
+19434728, 18339510, 5779416, 16842178, -14347875, 1953136, 7605314, -3041374, -9073655, -16428250,
+-8061654, 2898566, -632971, -7711614, 7994008, 144955, 7762080, 6236830, 496606, -17661980,
+-10195179, -8308614, -1355062, 1813013, 2406256, -3007014, -4925791, 1212255, 2924336, -15793668,
+-3904662, 2579128, 3624953, -7172596, -19679004, -4614943, -4890894, 14583561, -492311, 6561637,
+-6529424, -5013838, -8766565, -9883793, -5712307, 1592896, -664109, 12242804, -7200513, 2122251,
+14228153, -988916, 7146289, 6331319, 13824963, 3052111, -3915400, -7043210, -6111739, -2426120,
+8390755, 1283658, 8458401, 4453344, -577136, -227096, 491237, 676457, -3655017, -4687957,
+95563, -1163936, -367220, 1356673, -824634, 1061931, -5357972, -1270774, 3428458, -201863,
+2200634, -9322227, -957241, -381715, -1731409, 1897839, 1541893, 1187559, 1713155, 2119030,
+-4275103, 5094905, -3276523, 12281459, -6314139, 2145873, -4756677, 950798, 3227668, -7728794,
+-5229123, -13798119, -15256261, -10020159, -3923453, -699006, 382252, -8442295, -7821673, -15820512,
+7611756, -15855409, -20403780, 13179644, -12230993, -15570330, 14504641, 2755222, -3269007, 15556372,
+8982387, -12087112, 11180337, -30819612, -2079301, -7920457, -3284576, -14489609, 25368762, 11877195,
+-7421167, 3723737, 8001524, -5309117, 8833137, 133144, 400506, -7247221, 8579197, 9874130,
+13357885, -20908438, -716186, -144955, 6202470, -9480067, -3605625, -9649181, -9471477, 16618302,
+5385889, -12450036, 6429029, -7702487, -8156143, -13369696, -24285356, 6345278, 16069083, 1088774,
+16186658, 21961242, -1294396, -8997956, -20807506, 1621887, -2654827, 1330366, -5184026, 4300336,
+-9137543, 19661824, 10899553, 17199196, 3498788, -2121714, -5220533, 7021198, 8130910, 3659849,
+-1471026, -2461016, 781684, 9254581, -1620813, 3880503, -5825050, 2520072, -9634149, 940598,
+1201517, -4243428, 9103720, 5262946, -2328946, -5980742, -5223754, -1725503, -476205, 2922725,
+-6117644, 1584306, 1103807, -447750, -4226248, 1603633, -9176198, -1858647, -2173254, -2562485,
+1591285, -166967, -17593796, 2357400, -39244728, -26365730, -18900540, 10227928, 19465328, -27764280,
+6441377, 19682762, 12157442, -281320, 7204808, 18558016, -8524973, -1109712, -5406290, 547071,
+-12059731, 8573292, 177704, 1013612, 3167539, 24875914, -1261110, -10975789, -10691247, 5929739,
+18313204, -7397545, -18551038, 5505611, 18583786, 10849624, -2509872, 9024263, 6094022, 8694624,
+1930051, 7364795, 12604655, -1574642, -21261162, 1064615, 6551973, -19922206, -14548128, 19486266,
+15286325, -15047418, -9862856, 4759361, -1013612, 9557913, 23694260, -5095442, -4592394, 4505421,
+-1231045, 8773008, 4378183, -8639864, -6792491, -3261491, 6935299, 6305549, -6314139, -17176112,
+-3037616, -25846576, 24448028, 4123169, -4495757, 2326799, 10125385, -526134, -11368778, 4218195,
+-4948876, -7369627, 5746130, -1546725, -11251204, -18489834, -6048925, -7540352, 15257871, -2436857,
+5027796, 2903935, 1856500, -1438277, -1337882, 2380486, -4110821, 664109, 5517959, -668941,
+-2904472, -1657857, -12617003, -3894462, -350040, -2369211, -9188546, -8242579, -3470871, -1887638,
+-836982, -2699387, -497142, 152471, 6902013, 2443300, -1147830, -2810519, 1076426, -2486249,
+-2103460, 4481799, -2270427, -5364951, -1582696, -4043712, 474594, -4973036, 132070, 3280281,
+1027571, -4772246, -1591822, -15162845, -656056, 2622615, -18586470, -4884452, 13973676, 18176302,
+12863964, 33918432, 20459614, 30734786, 11473468, 8098698, -15880642, 17249126, -5807870, -1944010,
+-12717398, -8469139, 16666621, -5459977, 37801080, 17586280, 10907606, -2025614, 8740258, -5952288,
+-17648020, -8929774, -10954851, 7961796, -10329933, -240518, -11054172, 6462852, 15375983, 13875429,
+-917512, 20068234, 16767552, 776852, -5844914, -7678865, -13762149, -4740570, 31645320, 12263742,
+36429376, -11755862, 178778, -1249836, 8490077, 29227790, 10013716, 685584, 18793166, 21525840,
+22746684, -2079838, -13453448, -4963372, -3721052, -3903052, 15076409, 10272488, 14307610, 21824876,
+-13634911, 33022392, -22205518, -41686416, -6451041, -13026636, 8483097, 20070382, 9831717, -11284490,
+-1157494, -12253005, -9141301, -6086506, 146029, 16591459, 2797634, -4753455, 2595234, 1198296,
+4977330, 5256503, 3610457, 6459631, 1759863, 4041564, 1486596, 4487167, 281320, -13478144,
+-5193153, -203474, -12532715, 1315871, -13085155, -6942278, -7946763, -7408819, -6205154, -4610648,
+-1757715, 686658, 3749507, 13699872, 1863479, -8791798, 3986267, 739271, 12447889, -2435783,
+5368172, -183073, 152471, -6765111, 1567663, 19730542, 32081258, -15973520, -12649216, 11539503,
+-9678172, -1759863, -4604205, 4307316, 13931800, 15108084, 22198538, -24516748, 27394376, -9978820,
+2238752, -12761958, 11186779, 20806432, 8209293, 3804267, 1101659, 25347824, 5884105, -907312,
+-8772471, -3947075, -26498874, -3599720, -13099113, -31496606, 2261837, -1967095, 12401181, -32803886,
+-6856379, 7595650, 11649025, 27161374, -7959112, 7848516, 14397804, 2156074, -4278325, 7612830,
+-7733089, -1954747, -41375568, 3495030, -17905718, -20571820, -23301808, 9123047, -37110664, 11976516,
+-14190572, -18493056, -25390236, 22433152, 24042690, 23934778, 4673462, 4292283, 22550188, -31660352,
+-3110093, -9846749, 12774843, -37597068, -12916577, -3998078, 12001749, 9401147, 7701413, 15008763,
+-14020384, 5413807, -16923244, -5115843, -10146323, -4095788, -3449933, 339302, -16036334, 7198902,
+10072772, -1859184, 708670, -7982734, -2457795, 7590818, -10342818, -330176, 5087926, -12929462,
+5879810, -11598022, 161598, 7072201, 1734093, -9529459, -6155762, 3522947, -5207648, 5723581,
+4128001, 6620692, -831076, -8361765, 15768972, -7585986, -3729642, -10286447, 7064685, -3578245,
+1049583, -9552544, 1315334, -11581379, -1762010, 8296803, -2597382, -4982162, -11967926, 1278827,
+1671279, -1708860, -15724949, -29685204, -508954, -10645076, 35097936, 7238631, 24832964, -8207146,
+33889440, -21368536, -39864276, 8912057, 6784975, 4458176, -19804632, -22680648, -17671642, 6529961,
+-17798344, 7742216, -9429064, 26486526, -8644695, -4107063, 19191524, 502511, -47707424, -19927038,
+-618475, 31363462, -3586835, -9955734, -27341224, 4662724, -6725382, -23638964, -27862526, -3320547,
+5139465, -9686762, -10590852, -27994060, 18308908, -7005092, 6600828, -13974750, 645319, 8204462,
+5087926, 24563992, 282931, -8551817, -31996432, -11366631, 15516643, -21997212, -11142756, 8054138,
+17660906, 13689135, 35170952, 26749594, 545998, 20287278, 20901996, 7049652, 867583, 12153147,
+-10367514, 52977884, -24337970, -57962196, 15452755, -49343268, -1852205, -38631084, -208843, 47165720,
+5975910, -22531936, 7546258, 7988639, -14630269, -12110734, -16559783, 3577708, -4956929, 15097884,
+-11873437, 10084046, -19931870, 5571110, -594316, -3299072, -4466766, 13688598, 26311506, 8188892,
+10746008, 18114562, 5619428, -18118856, 5374078, -6723235, 12215961, -3775813, -5533529, -699006,
+-1116692, -4869956, -14800457, -9791989, -6487011, -821413, 2255395, -1079647, -9324911, -21337398,
+-13205951, 3221226, -3616363, -363998, -8010651, 2889439, 15586973, 22196390, -33643016, -22378390,
+-13894756, -11812234, 13532368, 21005074, -12352326, 1401233, 18748070, -37948184, 2807835, 8895414,
+-28625420, 14829985, -9529459, 13083544, 4926328, 14744623, 1601486, -18551038, 19217294, -24177982,
+-5263483, 46826416, -19209778, 17155710, -11143830, 19280646, 17578764, -6142877, -20535312, 21822192,
+56761752, -31099858, 8083129, -41275708, 20882668, 12561706, -22362284, 24776592, 2326262, -49561776,
+7115150, 2437931, 22624814, -6068789, -3517041, -26039850, -25353192, -13006772, 61872224, -9445170,
+31392990, -27589260, 20635708, 10126459, -5737540, -21209086, -3994320, 17467096, 34744136, -12600360,
+-11752104, -3676492, 6750615, 30302604, -7772280, -7151121, -22580790, 6922414, -33956548, -15060303,
+24060406, 29272886, 3183645, -2407866, -16000364, -26006564, -75670880, 47162500, 17790292, 27098022,
+2528125, -24554328, 26897232, -15198816, 11291469, 16125455, 15526307, 36418640, -847182, 8532489,
+9896678, -4041564, -16102369, -5248987, 26419418, 16446504, -15081241, -3214783, -10317048, -2556579,
+12238509, 3727495, -17627620, -11221676, 16503412, 3945464, -5461588, 8711804, -14943265, -8936216,
+-3258270, 7350837, 11587822, 7709467, 2061047, 9363566, -7693897, -9805410, 1564979, -897648,
+-13457743, 1679332, -13877576, -437550, -8571681, -1910187, 1918777, -6945499, -13305272, 4551055,
+-31807990, 22220550, 21751862, -43097312, 4054449, -22642530, 2678986, -47445968, 47571056, 41485624,
+-4387309, -21644488, -7651484, -8674223, 23008676, -23731304, 29713120, -39672076, -23148264, 11316702,
+13903883, 3226057, 13415867, 37796248, 10726144, 17438640, 4473746, 18121540, 12714714, -8483634,
+3597572, 15348603, -1249299, -1291175, 29995514, 13561359, 39421356, -3609920, 22382148, 76773,
+-29171954, 29642790, -15525233, -3309809, 8916889, -27454504, -18797998, 10682121, 42872900, 23561654,
+15326054, -55531780, -13184476, -38933880, -643708, 62310848, 40700184, 47144784, 3403225, -45712948,
+13918915, 46402288, 9426379, -11597485, 40969692, 4475893, 27273042, -71105328, -59337656, 42417632,
+-3412889, -19128710, -45552424, -9834938, -17335024, 19345070, 17545478, 21181168, 21359946, -8960376,
+6391448, 39303244, 35907536, 37963752, 2749316, 54546084, 26808112, -9649181, -22009560, 356482,
+-11060615, 3264712, 27307938, -4347581, 783295, 20216412, 21825414, 2170569, -335007, 8651675,
+24212878, 8710731, 11110007, 16809428, 5526549, 13085155, -1091459, -7335804, -3681324, -2784750,
+560493, 17379048, -7113540, 3092377, -14690399, 21027086, 9691594, 9207873, -744103, 10626286,
+-492848, 36010616, 8745627, 36971080, -10502806, 32345936, 14306536, 4809290, 13544716, 13940390,
+15251429, -4179003, -3431679, 22141630, 7098507, 18557480, -41175316, 24273008, 32386200, 2456721,
+11021423, -29346974, 22852448, -13363791, 10912975, 1036698, 19327, 19361176, -6084358, 12590160,
+-4152160, -23579908, 6185290, -1675037, 26213796, 22939958, 32615444, 10851772, -25177098, -20745766,
+21117280, 23796804, 10908143, 2024540, 7403450, -6601902, -20691542, 3406983, -7768522, 28973850,
+20142860, 17634598, 22867480, 23528368, -32815698, 35817880, 35139276, 25769266, -17738214, -15741055,
+-22891102, 31170188, 18099530, 51268488, -31512712, -31134754, -24165096, -45616848, -12074764, 48965312,
+7594039, 38413112, -41380400, -44177496, 9360881, 27761058, -38723964, 5842230, -30897458, 12018929,
+-35630512, -2998961, 16548509, 17570174, -32432372, 12471511, -24741160, -48967460, -1893544, 57471496,
+29600378, 23128936, -16416439, -41552196, 62444528, 50470160, 13957033, -56674776, -2509872, -13545253,
+39873940, 20218022, 24595130, -29634738, 21718576, -13487271, 14112726, -20644298, 6862821, -23065048,
+32503238, -6865505, 5064304, -39576512, 11009612, 4498442, -2161979, -9210557, 7613367, 3672197,
+3745212, -24717536, 9851581, 24244016, 1200443, 14372571, 12229383, 9848897, 1277753, 4352413,
+145492, 781684, 715112, -8305930, -1256815, 7190849, -510027, 14938433, 12799003, -7672959,
+-1752884, 6525129, 2703145, 11332271, -22984518, -694174, -79154640, -16244640, -1588064, 929324,
+28145458, -73983496, -7981660, 33414308, -54089744, 12233141, -11969537, 63461900, 34058552, -38953744,
+10023380, 42640972, 4799089, -17157858, 14532022, 10115185, 6061810, -978716, -3820910, 3113315,
+7431904, 14463302, 44455596, 35030292, 38927972, 26049514, 48906792, 23327042, 49993956, 20117626,
+44395468, 308701, 27731530, 24234352, 27482958, 20365662, -1562294, 7747584, -33315524, -20480014,
+64636036, 454730, -25248502, -7547868, 20571282, 33472828, 69519952, -9709310, -37630356, -19524384,
+-27636504, 38994544, 45439680, 50070728, 16064788, -2220498, 34537444, -58406724, 53204980, 19619410,
+-27460948, -916976, -89874872, 1739462, -59278064, -83143584, -20219632, -49039400, -20733418, 93315680,
+85899880, 80006648, -62914292, -6905234, -6849399, 62816580, 99470904, -22505628, -27606440, 54484880,
+56768732, 48099876, -5412196, -8247948, -27082990, -34965864, 5380521, -13127568, 15557445, 23420994,
+21088290, 13959717, 1753420, 8894877, 26866094, 4118337, 478889, -7937637, 1828582, 1387274,
+7537131, 5037997, 5732171, 27032524, -2090039, -16770774, 17119202, 19532438, 4969277, 31452046,
+7836705, 15003931, 35155380, 46214384, 34398392, 24540906, 10384694, 4293357, 13889924, 31556736,
+14361834, 32364726, 24591372, 15343234, 23153632, 8039105, 31336618, 26750666, 22392348, 33341294,
+19667728, 5961415, 9709310, -2107755, -22002580, 56847112, 69080256, -57219164, -52486648, 17656610,
+60392072, 1500554, -28310276, 198105, 16386374, 18122614, -49956376, 18570364, -6671695, 26362510,
+-27431420, -13207024, -32142998, 33925408, -4631049, -15008763, -30055108, 22009024, 12994960, -5214091,
+-25402048, 11867532, 11246372, 5983427, -22446036, -3255048, -1127429, 25933012, -19564112, -4788889,
+-28610388, -7552163, 9898826, 22755810, -29768418, -11396696, 31729070, 27133992, -8332774, -19236622,
+-117575, -9833328, 26509612, -15188078, -8351564, 12783433, 9634149, 16147466, -14537391, 4549981,
+-20034412, 23108534, 27416924, 12940736, 4297652, -21497386, 24371256, -17301738, 37715720, -27625230,
+30324616, -47564080, 32136556, 3982509, -2681133, -33478734, -9868761, 10799695, -8426189, 3176128,
+-8140574, 9375914, -4048544, 10499048, -10262824, -14388677, -8955544, 9967008, 907312, -1335735,
+-2332167, -8002061, 5114233, 11665668, -5901822, -1598802, 928787, 1498944, -416075, 1983201,
+-1862405, 8404177, 494458, 10920491, -9787694, 1720671, -4374424, 11011222, -11770358, 10837276,
+-12136504, 7205882, 3956202, 13742822, -2973728, 12987981, -11793980, -9912248, -1642288, 21188148,
+-10055055, 16264504, -5548561, 1988570, 2758443, 11350525, -4669703, 5546951, 2703145, -340913,
+-303869, 3527779, -753230, -7945690, 15497853, -9450002, 3040837, -7713225, 5412733, -7363185,
+8406325, -10912438, 12682502, -10239739, 10908143, -13741748, 12432857, -17282948, 16669842, -10912438,
+12116103, -12826383, 12898861, -13064217, 13468481, -12328704, 12906377, -1834488, -12327630, 55091544,
+58628452, -34500400, -20433844, 11623255, 55989732, 34782256, 20864952, 20065550, -8914205, -23431194,
+-7089918, 13153874, -201863, -5521718, 16703665, 287763, 11773042, 1440425, -6261526, -20995410,
+-5571647, -1232119, 1549946, -834834, -17056926, 19036906, 3177202, -7669201, -431107, -593242,
+267899, 12286828, 22577032, 9623948, 2281702, -8135742, -11688217, -3038153, 7333657, 15127949,
+20376936, -11381663, -11236708, 2535105, 20598126, 9284646, 4589710, -9316858, -18702972, 15938624,
+-3294777, 439160, 1076963, 5127117, 4919885, -2278480, -689879, -12202539, 1863479, 10739029,
+-5116380, 6410776, -3613678, -8699993, 5507222, -1663226, 2973728, -677531, 9336185, 6327024,
+-13952201, 4097936, 652298, -25302190, -33618320, 947577, 1952063, 7640747, 20444582, 2226404,
+-9027484, -8836358, 8041253, 8783745, 13336947, 9087614, 550830, 3866544, -1452236, -10162966,
+-4238059, 1527398, -13945759, -13342853, 8559333, 9092983, -239444, 10229538, -14554570, -2658585,
+-706522, 702764, -4516158, 2281702, 7823283, 10872710, 5285494, 9152575, -5833103, -11419781,
+6654515, 1043140, -2829847, -19475530, -72702520, 30869540, 112121728, 103376640, 88251376, 35198332,
+-83727168, -52414708, -75270376, -84359064, -75414792, -21974664, 16316044, 63572496, 66234300, 79306032,
+52545704, 52977348, 1327145, -55736328, -53213036, -65630320, -51317344, -28585692, -1910724, -18420040,
+19964618, 24577414, 39879844, 43765716, 44487808, 26479010, 2260227, 11756399, -9773735, 6290517,
+-30415348, -22144314, -28126130, -46028092, -36479840, -27997818, -19729470, -32735166, 4567698, 55819004,
+63122596, 35201552, 66001836, 16328392, 38527468, 19775640, 11336029, -16616155, -35194572, -48300664,
+-67775656, -52025476, -77321224, -32064616, -34410204, 22165790, 22261352, 64661808, 74585864, 66357780,
+59155660, 57766772, 36196372, 4397510, -20207822, -61877056, -38763152, -80816256, -68845640, -95841120,
+-15478525, -8628052, 23637890, 30262876, 54630372, 64190972, 53781580, 47953308, 35622996, 20949776,
+2993055, -17894982, -25680146, -34675420, -53434224, -37612640, -46520940, -32430224, -16580184, -4850092,
+10570988, 10211285, 51095616, 47026672, 46680388, 36334348, 26716308, 3124589, 16617228, -18558554,
+-30644054, -23951958, -66360464, -77450608, -14915885, -5276368, -3333968, 37687264, 30925912, 41136124,
+28893318, 37585796, 11504607, 9670119, -2896956, -16013249, -20494510, -26574574, -29343216, -18138184,
+-3783866, -22975928, -12064026, 18245022, 26132192, 17448842, 22638772, 15371151, 11236171, 2847027,
+-2025614, -8031052, -11204496, -8782134, -14011257, -7438347, -2748242, -5360119, -7111929, 1508607,
+5422396, 1076963, 8237211, 10339597, 7846905, 5226975, 4565014, 1374390, -846109, -2950643,
+-749472, -1116692, 394063, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
-5164698,
--5280663, -4364224, 1209033, -2503966, -403727, -715649, 2529199, 10109279, -2704756, 1017907,
--9630927, -5260261, 2934537, -4578435, -3572876, -1351304, -4069482, -1078037, 8386998, -3602941,
--5373541, 9064528, 7254737, -2560338, -1684164, 8297340, 2359011, 3218004, 1600412, 406411,
--2125472, -3496640, 3287261, -2604898, 2456185, 892816, 944893, -1161252, -2853469, -2236604,
-2024540, -2574833, -4070019, -1833951, -1820529, -5180805, 5861557, 9061307, -5214091, 2957622,
-249108, -2033667, 1434519, -224412, 73014, -3033858, 5602785, -3324305, -4108673, 4664335,
-1422171, -243739, -525060, 2563022, 161061, -72478, -1610613, -806917, 4923107, -7191923,
-2446521, 1323924, -1751273, -1719061, -2513630, -3659849, 26307, 3533148, 3607236, 1052267,
--71404, 818191, -2007897, 2629594, -999117, 1547799, -1121523, -719944, -543850, -654446,
--526134, 1214402, -60666, 501974, 730681, 446677, 1257352, 1592896, -529355, -365609,
--716723, -491237, -1016297, -297963, -679679, -553514, -1034013, -404264, -120796, -15923591,
--2515240, -5817533, -1432372, 1287953, -4342212, -9705552, 7114077, -2382633, 1655710, 4764193,
--1515050, -484258, -594853, 2194192, -1686312, 8014409, -334471, 6182606, 9060770, -10877005,
-2276870, 7559143, 517007, 1507534, 5228049, 9669045, 1378148, -2173790, 4861903, -1293859,
--2525978, 2180770, 1714766, 2157147, -2729452, 9852655, -4554813, 2486249, 3668439, -44560,
--489626, -4807679, 774168, -5570573, 4669703, -5690832, -4379256, 3150896, -5315559, 3637837,
--3714610, 1527398, -3001645, 2021319, 4275103, 8393977, 2563559, 949188, 4071629, 61203,
--7271380, 961536, 2022393, 2759517, -1843078, 378494, -1017907, 1377611, 4027069, 2439005,
-5508296, 1905892, 712965, -3372086, -1745367, 3255585, 2514167, -3229279, 3841312, 1887101,
-4202089, -1324997, -1045288, -1329292, 164283, -823560, -3426847, -629750, 524523, 561567,
-2156074, 239444, -689879, -840740, 887985, 462783, -1699196, -253403, -166430, 9664,
-624918, 177167, -814433, -112206, -774705, -5814312, 4338991, 2779918, 909996, 5433134,
--250719, 3033858, 7473243, 4580046, 9787694, 1858647, -1396401, -10006200, 1614908, -6145025,
--2001992, 744640, 2294586, -3857418, 43487, 9574556, -4866198, -281320, -4858682, 2309082,
-92879, 1840394, 3964255, 4598300, -2864743, 3444564, 3626026, 6920803, 309238, -6834904,
-705448, 7337952, -680215, -482110, -973884, 4927401, -5719823, 463856, 3823058, 4931696,
-5974300, -2253784, -3844533, -517544, 8568460, 777389, 3119757, -6955700, -3063922, 1665911,
-1470489, -1204202, 4556961, -328565, -900869, 2520072, -4327180, 261993, -649614, 2965675,
-4611721, -6755984, -1479079, 2169495, 4545686, -2900177, -2738579, 1858647, 5379447, -484258,
-3623879, 2540473, 3714610, 1539209, 4140349, 6189048, 268435, 1728188, -1686312, 2516314,
-1829119, -1189169, -2768107, -532576, -1955284, 644245, -1786706, 780610, -802085, 431644,
--1446330, 33286, -122943, 303869, -861678, 1378148, -1296543, -574989, -569083, -708133,
-188979, 775778, 824097, 443992, -379031, -293132, -598074, 1865090, 17311940, 8404714,
-6822556, -6437619, -1139777, -8984535, -6423661, 9649718, 870268, -6069863, -2829847, 2077690,
--5754183, -504659, 9802189, 3937948, -407485, 3163780, 14374719, -9554155, 2294050, -1775969,
--4651450, 8284992, 4198868, 4308389, -3220689, 3723200, 4744328, -1439888, 3044058, -948651,
--4101694, 875636, 1537598, -690416, 4865661, 1224603, -1761474, 5410048, -2463701, -2514167,
--3123515, 1537061, 2062658, 417149, 3864934, 543850, 12164958, 824634, -10737, -2801393,
--2543695, 2944737, -9060770, 401579, 5428302, 4342749, -4894115, 7196755, 117038, 3234110,
-5724655, -1598802, 4430796, 3469260, -1580011, -5140002, -3949759, 3266860, 8138426, 2349884,
--3546569, -1714766, -2012192, 5631239, -4754529, -243203, 4618164, 5389110, 736050, 701690,
--1488743, -2218351, 91268, -496606, -1889786, -364535, -863825, -909996, -1454383, -704912,
-1898912, 1318018, -386010, 2492155, 724776, 1020055, -323733, 864899, -438624, -192737,
--103616, 308701, 302258, 714038, 1339493, 363998, 152471, -387621, 4168266, 1124208,
-11323144, 2839510, 6747931, -285615, 1494112, 1918240, 1879048, -1853278, 6899865, -2887292,
-7465727, -3646964, -2896419, 1982664, -4941897, -1387811, -1559073, 2131378, 3102040, -1952063,
--7233799, 3316789, -8745627, -3498251, -1490891, -170725, -1377074, 1742683, 7825431, 4459250,
-524523, -8110509, -7833484, 304943, 5274757, -2754148, 819265, -964220, -3478924, -5196911,
-533650, 3579855, 7546258, 6851547, -881542, 2225867, -9480067, 3272765, 6285685, 7184944,
--890132, 6554120, 1387811, 9525164, 5606006, 1848447, 4285841, -399432, -2490007, -1656247,
--972273, 5987185, -2294586, -3342558, -4163971, 5974300, -1450088, -10421201, 2066416, 3974992,
-5840619, 7590281, 12934294, -5417028, -4456029, 7670275, 8082055, 6387690, 2721936, -1342177,
--1489817, -5053566, -5680094, -1588601, -2062121, 1684701, -248571, -1664300, -248571, -3152506,
-656056, -442919, 1454383, 173409, -2415919, -227096, 233002, -433255, -240518, 1097364,
-2097555, 2097018, 1723893, 424128, 413391, -3248606, 122407, 2185065, -1479079, 1174674,
-244276, -959388, -792421, -464393, 2178085, 1589138, 307627, -273804, 1178432, 27917,
--15039365, 7305740, 10304700, 1391569, 8577050, 1213865, -7689065, -693100, -3589519, -1860795,
-7918309, -10275172, -2876554, 3640522, 4048007, 9364102, -1840930, 4071629, -14623290, -7401840,
-3741454, 8688719, -5695127, -4047470, -6104759, -7319161, 3848828, -869731, 73551, 2781528,
-1335735, 2900714, 11344619, -6832219, 11009612, -573378, 2251637, 2478196, 2393371, -3285650,
-3829500, -7754564, -1482301, -4207994, -821949, -5750961, 7014756, 1275605, 19427748, 658204,
--1245004, -4881231, 859530, -4081830, 10153303, -6230387, 1345399, -11327976, 8524436, 7881802,
--9410810, 5788006, 5840082, 2471754, -5100274, -5148055, 8552890, 2252710, -12378633, 5975910,
--5877663, -3145527, 2798171, -3044595, 1105954, 2550674, 3334505, -6396280, -15683610, 2332704,
-3517041, -431644, -3372623, 6241125, -2672544, -1954210, -2906082, 4170413, -5077725, -1949378,
--2887829, -2078227, 1272384, -1877438, 2687576, 448824, -4516158, 3367791, 430570, -2252174,
--143881, 3042984, 965831, 207232, -406948, -754304, -2397666, 266288, 656056, 369904,
--248571, 1436130, -2713346, 363998, 504659, -2941516, -2690260, 6612102, 1274532, -119722,
--5582384, -9362492, 3314641, -5018133, -2030446, 9084930, -12360379, -5135707, -9107478, -914291,
-7807177, -711891, -6442988, -8927090, -10039486, 3926137, 10618770, -3029563, 6634651, 10001905,
--2765422, -2290828, 3911642, 5568425, 11857331, -1704565, 6666326, 980863, 14098767, 10380936,
-2838974, -3304977, 1425392, -7799661, 13688598, 3195993, -6035503, -6686191, 7895761, 6681896,
-4801237, 3433290, 2346126, 7102266, -3060164, 3142306, -4685273, 692564, 386547, -7100655,
--9505299, -3357591, -6712497, 4333622, -4095788, -3029026, -10366977, -6509023, 1992328, -3527779,
--1238561, 5000953, 10394358, 13119514, 6818261, 5440113, -4825396, -10653130, 191126, -7451232,
--17244294, 167504, -1206886, 6452115, 4346507, -4205310, -9605157, -5207111, 4655208, -212064,
--1064615, -3961571, 2134062, 2211371, 1743757, -1006096, -5465346, 1172526, 727460, 553514,
--1229971, -654983, -732292, 702764, -2670933, -2738042, -281320, 354872, -2218888, 215285,
--436476, 2080375, 2761664, -2954401, -98247, 2177549, -355409, -1228361, 513249, 333397,
-2995203, -905701, 1930588, 1529008, -1272384, -19889456, -6159520, 1097901, 9682467, -6976101,
-4719632, 3107946, -425202, 14606110, -1981591, 13746043, -8120173, 4037269, 4322885, 172336,
--12585328, -5190468, -4717485, -14260365, 4838281, -3547106, 2997887, -890669, 5143224, -18254,
--5609228, 2976949, -9208410, 6774774, 3934190, 15636365, -694174, 472983, 14251238, -12618614,
-11056320, 13591424, -8531416, 8753680, -3686693, -4105452, -7165616, 1801739, 1609002, 9666361,
-6178848, -2490544, -4061965, -8215736, 4461934, 5127117, -9469329, -4237522, 8773544, -15460272,
-1395328, -11942157, 6694781, 660888, -284542, 3613141, -4109747, 1374390, 14190572, -5872294,
-3059091, 6936372, 4316979, 763967, -7569343, 3322157, 2727304, -4369593, -12232067, 133681,
--2835752, -9647570, 7261716, -2626909, 2643016, -384400, 1338956, 3073586, 2940979, -5389647,
-1317481, -536871, 1190780, -430034, 3598109, 1821603, -941135, -666794, -5297306, -205085,
--3633542, 632434, 558346, 3815005, -5597416, 2071248, 2968359, -2103460, -3488050, 1242856,
--534723, -2035815, 1637993, -435402, -2189897, 775242, -759672, -2489471, -726386, -1608465,
--3372086, 1588601, -1048509, 318901, -1857037, -375810, -1897302, 903554, 3562139, -462246,
--8130910, 23639500, -8790724, 4570382, 3400004, 8419210, 2654290, 5099200, 11809549, -9150965,
--5607617, -773631, 16428787, -6362457, -6991133, -8174397, 4060892, 2719788, 8990977, -18778670,
-177704, 372588, -1273995, 9614821, -2339684, 7408819, 13788456, -10047002, -4498442, 3905199,
--7522635, -9483288, 6360310, -8811125, 12965433, -2238215, -13352516, -1788854, -7668127, 4217121,
-10574209, -227633, 5346698, -678605, 2052994, 12578349, 383863, 9117142, 3606699, -6868190,
-7128035, 6080063, 837519, 5104032, 18076980, -3021510, -8139500, 4275640, -10300942, 784905,
-17265232, 5844914, 2717104, -3312494, -4956929, -3350075, -6121402, 10394358, -6852084, -1843615,
--4275640, 11798275, -21734682, 7412040, 7646116, 13055090, 3090766, 976568, 11508365, -3277060,
--4993973, -6540699, 152471, -5443334, -554051, -4685810, 3768834, 332860, -4172024, -4401805,
--3684008, 1382443, 4495220, 3598109, 767725, 248571, -1930588, -4763119, -1593970, -1242319,
-1947768, 1985886, -804233, -1186485, 922344, -2862596, -17717, -2778307, -1403381, -3652333,
--4912369, -1381369, 1669132, 5435818, 869731, -1530082, -1464047, 2123325, -534187, 5212480,
-2355790, 895501, 725313, 34939560, 10427107, -6367826, -8485782, -7148436, 25313464, -21814676,
-1736241, 8544837, 1263794, -11826729, -2675228, 5937793, -1267015, 1379758, 10500658, -10865730,
--9128416, 4481262, 13687524, 8437463, 3535295, -6630356, -6481106, -6238440, -7269232, 6780680,
-2692945, 9716290, 7793218, 4442070, -10310069, -4900021, -10983305, -2176475, -7205345, -16588237,
--3091303, 7419019, 1648731, -7692287, -7758859, 200790, 4014721, 10392210, 1321239, 5272609,
-1505386, 20076288, -17413944, 11400991, 2137820, -17765058, -3208878, -5350456, -4395362, 2737505,
--7778186, 4702989, 3416110, 7965554, -9700184, 3445101, 15538655, 7285875, 24688008, -5513128,
--612570, -6058588, -3103114, 680752, -490163, -23398982, 10436234, -974421, -1369021, 6361384,
-6286759, -6626598, -9969156, -10900090, -4052839, 7755637, 3302830, -2535105, -6440304, 5695664,
--10128070, 5316096, -1657857, -4576288, -5724118, -6206228, -2240362, -2061584, 987306, -2585034,
--1751810, 1296006, -1858110, -1729798, 1079111, -5070746, -2312303, -344134, -1725503, -2898566,
--1293859, -5149666, 733903, 3871376, 5210869, 6117644, -4432406, -5425618, -3849365, -4905390,
-189515, -3221, -3009162, -3422015, 1322313, -449361, 3399467, -1048509, -244276, 2638184,
-2640868, -2114735, -11694659, 2843805, 6362994, -243203, -7185481, -4986457, -15532749, -18456548,
-3832185, -8178692, -3895535, 2718714, -154082, -1928977, -8236137, -4085051, -78920, 6484864,
-6908992, -10136660, -5816460, 6388227, -9084930, -4459250, -14879377, 14408542, -1874753, 12981002,
-1136019, 4871567, 13790066, 10425496, -6122476, 3144453, 7012071, -7361574, -2997350, 6833830,
--2533494, -16526497, -3071975, -11578695, 16992502, -1793149, -4510253, -9711458, -14173392, 5083094,
-3005940, 3346317, 6994891, 165893, -2583423, 7320772, 1869921, -1395864, 2575370, -4088272,
-11229729, -2650532, 7085623, 20964272, 4675072, 3940096, 4909685, 7736847, -18246632, -14768245,
-5623186, -16119012, 11164231, -2274722, 12790949, 3379603, 24937654, 9793599, 1698123, -7245610,
--3214783, -12823162, -864362, 4001836, 2505040, 2726767, 4408247, 11380590, -4733054, -9228811,
--3208341, -2564632, 3582003, 10326712, 3652333, -2489471, 2977486, 3029026, -532039, -2386928,
--6010807, 404264, 677531, -2933463, -3977677, -758062, -6374269, 4471061, 2538326, -2997350,
--971736, -6331856, -3103651, 2927020, 5541582, -2783676, -2572686, -117038, -5087926, 5395016,
--255551, 3885872, -5263483, 2147, -5453535, 3192235, -6471442, -1468342, -29772714, -20850456,
-7736310, -8304856, -17219060, -26137024, -636729, 2084670, -5068062, -4174708, 24928528, 6541235,
--18026514, 3772055, -11000485, -9253507, -8932995, -16099148, -2659122, 1484448, -22169548, -20992726,
--7975218, 3473018, 2067490, 12719546, 10765872, 6688875, -5337571, -207232, 4920422, -11369852,
--6338298, -3879429, 3765613, -10681584, -6524056, 7300371, 4422743, -289373, -1639067, -1995012,
-6086506, -15381888, -8764418, -7573101, 10205379, -11923366, 8106214, 13665512, 18722300, -1245004,
-5389110, -4438849, -8930311, -11724724, -3157875, 11559368, 4350802, -20989506, 932545, 21721798,
--14421963, 702227, -3074660, 1158031, 5168457, 11077794, -2291365, 3519726, 13302051, 9145596,
-5862094, -10174241, -12241194, 8949638, -8856223, -16772384, -16106664, 17553532, 6687801, 9696426,
-4167729, -2764348, -3377992, 8375186, 5939403, 1578937, 8072928, -3217468, -10566693, -5459977,
--7362111, 2961380, 10699300, 5208722, 1300838, 6330782, 3520263, 5902896, -1120987, -3029026,
-3640522, -1319629, -4087198, -3486440, 2825015, -9766756, 2155537, 5728413, -3436511, 7086696,
-4866198, -408559, -765041, 6680822, 835371, -1545115, -4248797, -4181151, 1176821, 3521873,
-810138, 2835752, -4233764, -17400524, 9601936, -14085882, -25107842, 4529580, -15264851, -8873402,
-29669634, 2012192, 22216792, 19985556, -4006668, 21046950, 29132226, 20708184, -26051124, -3484829,
--12106439, -12274480, -7500624, 515396, -10737955, 22725208, 6759205, 12466679, -10641318, 11932493,
-9197672, 3048353, -13553843, -10558103, 21646098, -3964255, -20181514, -1387811, -23359254, -3383361,
-6509560, -8392903, 530965, -19084688, 8774081, 17273284, 9382356, -2563022, -9338870, -3512210,
--2334315, -3262565, -8744553, -23447300, 15851651, 8881455, 8294656, 9895605, -13285944, 20645908,
-2627983, -6268505, -4575751, -16509854, -7232725, 10650445, 6643778, 17648558, -1871532, -20278688,
--35497904, -2130841, -212601, 100932, -12767864, -17945984, -3372086, 11805791, -6208375, -7289633,
-4751308, -1646583, 18090940, -3612068, -16012175, -5797132, 16850230, 1021665, 3237869, -16410533,
--5769752, -3142306, 6805376, 8696772, -4284230, 2986076, 712428, 6495601, 4323422, -723702,
-2961380, 8722005, 2180233, -216359, -2881923, 927713, 5840619, -260919, 2986076, 9979357,
-1510755, -3520263, -7405598, -883690, 5425081, -5223754, 2783676, -2385854, -1562831, -3504693,
--4445291, -3450469, 93952, 6280316, 4969814, -6806450, -12377559, -3730179, 4645007, 1607392,
-1684701, 37877852, 23890218, -3391414, -22062174, 4642323, 11000485, 6338298, 16076599, 24128590,
--10647224, 1986422, -21566104, 6106370, 1780264, -8370892, 38863548, 14725295, 33534030, 13840532,
-8651675, -29221884, 453119, 16292422, 2973191, -15559056, 6578280, -23782308, -9280351, 1627793,
-7168838, -7129109, -4619238, 5145371, 4206384, 1707786, 21058224, 13070659, 3469260, -8439074,
-14505178, -9439801, -6766184, -13874355, -4610648, 18073222, -28563680, -449898, 12827457, -14266271,
--4476430, 5426691, 4828080, 26370026, -1513976, -310311, -12306692, 25781614, -11483132, 3244311,
-2716030, 17848274, -4158065, -6463926, 17011292, -28702192, 7487202, 2734821, -11882564, 22923852,
--28660316, -3653944, -9574019, -19267224, -9622874, -1725503, 8173860, 18004502, 29734058, 14484240,
-19653234, 29898342, -12160126, 5496485, 7538205, -12801150, 17311940, 325344, -22891638, 11998528,
-6367826, -8407935, 818728, 17670032, 13395466, 3924526, 10576357, 3118683, 3469260, 9690520,
--1710471, 4107063, 8705899, -2138894, 1941862, -1613834, -450435, 6095096, 1254667, 624918,
--5310727, -3214246, -3661997, -7601019, 1700270, -4211216, -12054899, 4617627, 7326678, -2537789,
--66035, 3217468, -4123169, -179852, 12861280, -1973001, -3508452, -8126615, -36710696, 10171556,
-1933809, 44338020, 10126459, 8335458, -1217086, 21625160, 5837935, -32502702, -4989679, 34774740,
--10302553, -7322383, 2934000, -2404645, 790274, -6331856, 36215164, 41199472, -22152904, 10001368,
-11093901, 6024229, 11705396, -18133352, -25047176, 19280646, 5299990, -13853954, -23944980, -7188702,
--8129836, 21905944, 17905718, 10049687, -20271708, 11151346, -8780524, 7110319, 1222992, 9411884,
-20657718, 4754529, -46166604, -14148159, 8488466, -18496276, 5632313, 19593640, 6591701, 34118684,
--11280195, -51246476, -1175210, -20428476, 17841832, 15477988, -5579700, -10898480, 15847356, -24609088,
--4381941, -13295608, 11635066, 16027744, 13698798, 14891188, -11087458, -20853140, -62065500, -29677150,
--36113160, 5710696, -24471114, -11863237, -4971425, -26927298, 14452028, -48480516, 15113453, -34861712,
--25249576, 24869472, 29388850, -9023189, -1177895, 15917149, 20725364, -28452548, 632434, 4664872,
--4079145, 5025649, 15312632, -1948305, 6779606, -1288490, 5992553, -12577275, -6581501, -5733245,
--8267275, -1796907, 12020003, 4991289, 10822781, 409633, -11414949, -10379325, 1824287, 6305012,
--2348810, 6695317, 6998649, 16860968, 1670742, 5803575, 1850594, 4022237, -7407745, -2270427,
-3103114, -6027987, 324270, -2760590, 727460, 3132642, 17623862, -1617055, -10432476, -11577621,
-1161252, -654983, -18408230, -10794863, 7621420, -12106439, -596464, -156229, -48012364, -7062000,
-31971736, -37949796, 3831648, 14191646, 513249, 9953587, -2724620, -30061550, -2397666, 16397111,
-5628555, 24423868, 16665010, -25784836, -27793270, -3701725, -11957726, -3958349, -45888504, 17212618,
-18356690, 32192390, 14751065, 29302414, -12561169, 4027069, 30209190, -9505836, 32866700, 9124658,
-17428440, 5860483, -8250096, 16200617, -19801410, 970663, 41504416, -32154810, 3044058, -41823856,
--18763102, -30079266, -20387136, -5272073, 2263448, -9893457, -31819266, -5771899, -52893060, 59782188,
-21026012, 335544, -8057896, -14475650, 3353296, -26339960, 4893579, -39461624, 925565, 1983738,
-8833137, 25245280, 36420784, 1227287, -61062624, -28090696, 26176216, -13350369, -12199318, -14823543,
--8126615, 30103962, 6258304, -16962974, 12640089, -28330142, 4910758, -5402532, -12584254, -28603946,
--16201690, 18023294, -8630200, -6966974, 9686762, -10672457, -3350075, 17931488, -21079700, -14323179,
--6190122, -4446365, 22535694, 10470593, 6077379, 13298829, 5190468, -2282238, 10362682, -307090,
-7587060, 10835129, 16944182, -6706055, -202400, -1986959, 12472048, 18976776, 6998649, -4677757,
--1449552, -5891085, -13921063, 24271934, -7232188, 12452721, -7285339, 3755412, -7740605, -5648956,
-6139656, 11019275, -23813446, 16870632, 27314382, 10059350, -12475806, -16615618, 7963406, -21450678,
-33951716, 28268938, 43029668, -30693446, -37789808, -9505299, -860067, -19135690, 25312926, 30682710,
--22688702, -96100, -40464496, -11968463, -19153944, -36564668, 11578695, 30144228, 18297634, -23775328,
--9181566, 2764885, 20360830, 3022046, -1426466, 7614977, -2244657, -10299868, -32695976, -22230214,
-8505646, -3078418, -17753248, 19326816, 17277580, 10951093, -33451352, -30587684, 29000156, 17449378,
-21584358, -21837224, -55770688, -10562398, 23620710, 23345832, -5617817, 56500296, -6912213, 56797184,
--85290000, -105902080, -43386148, -63807108, 875636, 24849608, 13223667, 68977176, -7704098, -4530654,
-12991739, -13806172, -54291608, -48511656, -53821844, 43117176, 35483408, -13383118, -3497177, -90292024,
-25307022, -1211181, -40127880, 16687022, 25985090, 39846560, 31456878, 14419816, -2608119, -26865558,
-972810, 1273995, -7335804, -11595338, 32024886, 19575388, 12576738, 32408212, -24830280, 5915781,
--6824703, -15564425, 20513300, -3256659, -35323960, -305480, 11375758, -12796855, 17024714, -6825240,
-4684736, -7913477, 39586176, 30712774, 36688148, -30840550, -6812355, 37755448, 28139552, -26879516,
--16406238, -27073326, -15752866, 22012782, 25238302, -8858907, -2379949, 42107324, 1942936, 3870839,
--5374078, 7490960, 7435662, 6911676, 12130061, -40904196, 35690640, 27307938, 11113228, 33791192,
--19881404, 12508555, -55881284, -26883274, 14597520, 20697984, 9382356, 7291781, 6860137, 14533096,
--6864969, 63592360, 5640903, 39638252, 11272142, -18977850, 48298516, -6484327, 18911278, 1105954,
-17250200, -1728724, -1136019, 10727755, 24185498, 7176891, 17641578, 1347546, -3755949, 38299832,
-4248260, -7952132, 557272, -2905546, -19331110, -5403606, 10657424, 7203734, -43203612, -10433549,
-5341866, 10067403, 44964012, 36821292, -44671956, -24469502, 3578245, -9774809, 49524196, 4932233,
-45670536, -32140314, 22941568, 4731980, 2440078, 21342230, 46940772, 30606474, 6180995, 41668164,
-16247861, -19504520, -42031088, 36837936, -33538862, 22298934, -44137232, 247497, -69940320, 72538240,
--18022756, 2537789, -49000744, 44040596, -17169132, 13955959, -35976792, 42534136, -22251152, -19976966,
--14627585, -26721140, 8227010, -14974403, 12597139, -13886703, 23209466, -26106958, 23255100, -27489402,
-15067282, -32189170, 25649544, -11136313, 28478854, -9993852, 14898168, -12174085, 9595494, -13887240,
-450972, -15177341, 17273284, 7036767, 4858682, -6087043, 1629403, -12139188, 9273908, -12473122,
-21810380, -18148922, -21587580, -9779641, 8683887, -25661356, 19734300, -6396280, 10830834, -7355132,
-6159520, -11854647, 5494337, -6161668, 6586869, -2030446, -69959648, -17481054, -5423470, 7377143,
-6280316, -43545600, -25300578, 39353176, -15261629, 14516453, -17413944, 3847217, 49437220, 79685064,
-5526013, -2837363, 40025872, 17437568, 16579111, 49334140, 1111860, 29862908, 36239860, 34775812,
--13634911, 15024869, 31327492, 43588548, 35692788, 53609780, 30296700, 68462856, 72685344, 52494700,
-57957364, 39460548, -4317516, 19306952, 10282152, -15044734, -14824616, 11349988, 33843268, 7661148,
-1567126, -246961, 16729971, 50302120, 39168492, 84515832, 17067664, -43992812, 17541720, 770410,
-17935784, -22649510, 33627984, -61435212, -79102560, 22014392, 79542256, 34493956, 15892990, -98717672,
-569620, 37351720, 59565292, 79878872, -34011848, 4813048, -137941472, -91093568, 36843840, 51518668,
--76838576, -65705484, -40889700, 75249976, 50280108, -90382216, -116525144, -23755464, 47414828, -55947316,
-26495654, -8759586, -20204600, -30343944, 4111358, 11723650, 19552838, -3762391, -48289928, -41973104,
-5063767, -13276281, 20141786, 2452963, -5114769, -18652506, -12259447, 7282654, -1210107, -40427452,
--20327006, -30702574, -15854872, 5092221, -15647103, -11768210, -36083632, -48142288, -65935264, -66071092,
--55643984, -47536700, -52207476, -52105468, -39735964, -54952496, -58031452, -49638548, -55778204, -36383204,
--9934796, -32364190, -46662136, -31232466, 1142461, -17441326, -9554692, -11639361, 23698556, 25040196,
-464393, 10836739, 12772159, 6851547, 7050189, -721555, 5334887, 3546569, -26832272, 66924716,
-73720968, -83197808, -35548908, 33078228, -24147916, 16941498, -31431108, 28802588, -26725970, 7348689,
--761283, -11534135, 5674726, 2480881, -8715026, -4887136, -21520470, -4489852, 3799972, 3595425,
--21921514, 21182778, -20176146, -5640903, -17603460, 2993055, -16887812, 33927020, -1552631, 9757629,
--9704479, 9730248, -10269267, 10424959, 19203872, 28381680, -8300561, 10233833, 9182103, 25043418,
--15888158, 16487843, -14277545, 29874182, -8553964, -15360414, 8411157, -6183143, -9682467, 4290136,
--3505767, 13379897, -7570954, -15469398, -16954920, 3473018, 2113661, -27666568, 7727183, -3479461,
--3853123, 5896990, -9079561, -3933653, 1909113, -3633542, 2935610, -14471892, 17034914, -50247360,
-25985626, -20885352, 33252174, -22040162, 29650844, 562104, 15607911, 10631655, 12477417, 7191386,
-1176284, 6870337, -2205466, -20586852, -5639829, 2003065, -9874130, -3063386, -5733782, -1281511,
-31675, -7158637, -1869921, 4156455, -1998770, -12339978, 13188234, -1280974, 6449967, -13164075,
-5649493, -7670812, 4615479, -9127879, 10597295, -13894219, 20170240, -2819109, 1624035, -20899310,
-14015015, 244813, 9783936, -19717658, 3899294, -7415261, 1806034, -2887292, 503585, -12394202,
-5332202, -1301375, -10181220, 2428804, 15556372, -17833242, -470299, -5937256, 8320963, -11896523,
-11062762, -9127879, 1496796, -5953362, 7838316, -1698660, 3164854, -2026688, 3651796, -5495948,
-1864553, -1134408, -4429722, 1763621, 558883, 1500554, -1970316, 5234492, -1410360, 1239098,
--4015795, 7402376, -9881109, 3321620, -13566728, 63551556, 38538740, -20952462, -24102820, -2110977,
-78964048, 32992328, 11072426, 21859236, -19147502, -24171002, 6736120, 15329812, 3999152, 1391033,
--8408472, -6551973, 7430294, 7575786, 18383534, 8181913, -9911174, -4369593, -4900558, -9990094,
--111132, 1762547, 4896800, 6233608, 190589, -2652142, 7336878, -21195126, -8055211, 9429064,
-13519483, 16762720, -9436043, -5490042, -10031970, 17145510, 11860552, -3246459, 5447093, -19815368,
--17149268, 15821586, 12304008, 3881040, -30031486, -15439871, 1232119, 5002563, 19763292, 14129906,
--2221572, 5811091, 7019587, -9388262, 8580271, 9309878, -2756832, -5729487, 5529771, -10052371,
-937914, -1720671, -7056632, -10769094, 14936823, 3052111, 3304977, 20577188, 25031070, 8860518,
-20255602, 18962818, -3000035, -5127654, -5709086, -3663070, 7902740, 12934294, -5031018, 3977677,
--11625940, -4230006, -580894, 2756832, -6345814, -7573638, 7818988, 14970645, 6468758, 4148402,
-6264747, -7205345, 578210, 7119982, 1388348, -2244657, 1789391, -739808, -8732205, 17752710,
-5779952, -14215805, -13427678, 5395553, -2667175, 13997835, 7406671, -1797444, 5226439, 1792612,
--2901787, -652835, -4051228, 4097399, 6420439, 991064, -1686312, -5567352, 4757213, -1108638,
--22798224, -62870804, 21777632, 115624280, 90913184, 87067040, 27836220, -80922016, -48547088, -71734008,
--71970232, -65578780, -22892176, 35391604, 45601280, 71744208, 64250028, 38718592, 6505802, 6344741,
--31079994, -49118856, -70338144, -27018566, -19088446, 6362457, -3955665, 35748088, 24126978, 10302553,
-47747152, 26851062, 20444582, -4118337, 17942226, -32363652, -24422258, -20158966, -23587960, -31040802,
--18719078, -12353400, -31609886, -21826486, 8416525, 46592344, 44944684, 51084340, 40099964, 58400280,
-10115722, 14999636, -38766376, -28661390, -24604794, -58137216, -57931056, -51942260, -24558622, -30415348,
-7168838, 22622130, 32510218, 65351148, 64165200, 61452392, 55104968, 48260936, 10320806, -28279138,
--46134392, -82390896, -70807368, -51601348, -70377336, -32615982, -14673219, 3161096, 69107096, 54202488,
-79492328, 78556024, 57380764, 16109885, -15825344, -23417772, -27187142, -24218784, -46749644, -57812408,
--40397924, -27568322, -24387362, 3126199, 16289200, 25919590, 22317724, 46600396, 50925428, 38513508,
-30630096, 5166309, -10724533, -21898428, -35871028, -30802968, -21850110, -34409132, -46649252, -4879083,
-2746632, -7626788, 40273372, 53151832, 34029564, 29905320, 2279017, 8497593, -5473399, -9287867,
--23160074, -27224724, -17851494, -20332912, 2971044, -8076149, 2704756, 469762, 18398566, 9927817,
-9543954, 17205638, 17582522, 109522, -4488241, -12349105, -12289512, -3447248, -2666638, -5901822,
--5779952, 1298154, 1684701, -1341640, 3221226, 3459596, 3337727, 1105417, 11629698, 4390531,
-126165, 2072322, 37581, -3620121, -3052111, -3062312, -1673964, -1042603, 250719, -383863,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-5280663, -4364224, 1209033, -2503966, -403727, -715649, 2529199, 10109279, -2704756, 1017907,
+-9630927, -5260261, 2934537, -4578435, -3572876, -1351304, -4069482, -1078037, 8386998, -3602941,
+-5373541, 9064528, 7254737, -2560338, -1684164, 8297340, 2359011, 3218004, 1600412, 406411,
+-2125472, -3496640, 3287261, -2604898, 2456185, 892816, 944893, -1161252, -2853469, -2236604,
+2024540, -2574833, -4070019, -1833951, -1820529, -5180805, 5861557, 9061307, -5214091, 2957622,
+249108, -2033667, 1434519, -224412, 73014, -3033858, 5602785, -3324305, -4108673, 4664335,
+1422171, -243739, -525060, 2563022, 161061, -72478, -1610613, -806917, 4923107, -7191923,
+2446521, 1323924, -1751273, -1719061, -2513630, -3659849, 26307, 3533148, 3607236, 1052267,
+-71404, 818191, -2007897, 2629594, -999117, 1547799, -1121523, -719944, -543850, -654446,
+-526134, 1214402, -60666, 501974, 730681, 446677, 1257352, 1592896, -529355, -365609,
+-716723, -491237, -1016297, -297963, -679679, -553514, -1034013, -404264, -120796, -15923591,
+-2515240, -5817533, -1432372, 1287953, -4342212, -9705552, 7114077, -2382633, 1655710, 4764193,
+-1515050, -484258, -594853, 2194192, -1686312, 8014409, -334471, 6182606, 9060770, -10877005,
+2276870, 7559143, 517007, 1507534, 5228049, 9669045, 1378148, -2173790, 4861903, -1293859,
+-2525978, 2180770, 1714766, 2157147, -2729452, 9852655, -4554813, 2486249, 3668439, -44560,
+-489626, -4807679, 774168, -5570573, 4669703, -5690832, -4379256, 3150896, -5315559, 3637837,
+-3714610, 1527398, -3001645, 2021319, 4275103, 8393977, 2563559, 949188, 4071629, 61203,
+-7271380, 961536, 2022393, 2759517, -1843078, 378494, -1017907, 1377611, 4027069, 2439005,
+5508296, 1905892, 712965, -3372086, -1745367, 3255585, 2514167, -3229279, 3841312, 1887101,
+4202089, -1324997, -1045288, -1329292, 164283, -823560, -3426847, -629750, 524523, 561567,
+2156074, 239444, -689879, -840740, 887985, 462783, -1699196, -253403, -166430, 9664,
+624918, 177167, -814433, -112206, -774705, -5814312, 4338991, 2779918, 909996, 5433134,
+-250719, 3033858, 7473243, 4580046, 9787694, 1858647, -1396401, -10006200, 1614908, -6145025,
+-2001992, 744640, 2294586, -3857418, 43487, 9574556, -4866198, -281320, -4858682, 2309082,
+92879, 1840394, 3964255, 4598300, -2864743, 3444564, 3626026, 6920803, 309238, -6834904,
+705448, 7337952, -680215, -482110, -973884, 4927401, -5719823, 463856, 3823058, 4931696,
+5974300, -2253784, -3844533, -517544, 8568460, 777389, 3119757, -6955700, -3063922, 1665911,
+1470489, -1204202, 4556961, -328565, -900869, 2520072, -4327180, 261993, -649614, 2965675,
+4611721, -6755984, -1479079, 2169495, 4545686, -2900177, -2738579, 1858647, 5379447, -484258,
+3623879, 2540473, 3714610, 1539209, 4140349, 6189048, 268435, 1728188, -1686312, 2516314,
+1829119, -1189169, -2768107, -532576, -1955284, 644245, -1786706, 780610, -802085, 431644,
+-1446330, 33286, -122943, 303869, -861678, 1378148, -1296543, -574989, -569083, -708133,
+188979, 775778, 824097, 443992, -379031, -293132, -598074, 1865090, 17311940, 8404714,
+6822556, -6437619, -1139777, -8984535, -6423661, 9649718, 870268, -6069863, -2829847, 2077690,
+-5754183, -504659, 9802189, 3937948, -407485, 3163780, 14374719, -9554155, 2294050, -1775969,
+-4651450, 8284992, 4198868, 4308389, -3220689, 3723200, 4744328, -1439888, 3044058, -948651,
+-4101694, 875636, 1537598, -690416, 4865661, 1224603, -1761474, 5410048, -2463701, -2514167,
+-3123515, 1537061, 2062658, 417149, 3864934, 543850, 12164958, 824634, -10737, -2801393,
+-2543695, 2944737, -9060770, 401579, 5428302, 4342749, -4894115, 7196755, 117038, 3234110,
+5724655, -1598802, 4430796, 3469260, -1580011, -5140002, -3949759, 3266860, 8138426, 2349884,
+-3546569, -1714766, -2012192, 5631239, -4754529, -243203, 4618164, 5389110, 736050, 701690,
+-1488743, -2218351, 91268, -496606, -1889786, -364535, -863825, -909996, -1454383, -704912,
+1898912, 1318018, -386010, 2492155, 724776, 1020055, -323733, 864899, -438624, -192737,
+-103616, 308701, 302258, 714038, 1339493, 363998, 152471, -387621, 4168266, 1124208,
+11323144, 2839510, 6747931, -285615, 1494112, 1918240, 1879048, -1853278, 6899865, -2887292,
+7465727, -3646964, -2896419, 1982664, -4941897, -1387811, -1559073, 2131378, 3102040, -1952063,
+-7233799, 3316789, -8745627, -3498251, -1490891, -170725, -1377074, 1742683, 7825431, 4459250,
+524523, -8110509, -7833484, 304943, 5274757, -2754148, 819265, -964220, -3478924, -5196911,
+533650, 3579855, 7546258, 6851547, -881542, 2225867, -9480067, 3272765, 6285685, 7184944,
+-890132, 6554120, 1387811, 9525164, 5606006, 1848447, 4285841, -399432, -2490007, -1656247,
+-972273, 5987185, -2294586, -3342558, -4163971, 5974300, -1450088, -10421201, 2066416, 3974992,
+5840619, 7590281, 12934294, -5417028, -4456029, 7670275, 8082055, 6387690, 2721936, -1342177,
+-1489817, -5053566, -5680094, -1588601, -2062121, 1684701, -248571, -1664300, -248571, -3152506,
+656056, -442919, 1454383, 173409, -2415919, -227096, 233002, -433255, -240518, 1097364,
+2097555, 2097018, 1723893, 424128, 413391, -3248606, 122407, 2185065, -1479079, 1174674,
+244276, -959388, -792421, -464393, 2178085, 1589138, 307627, -273804, 1178432, 27917,
+-15039365, 7305740, 10304700, 1391569, 8577050, 1213865, -7689065, -693100, -3589519, -1860795,
+7918309, -10275172, -2876554, 3640522, 4048007, 9364102, -1840930, 4071629, -14623290, -7401840,
+3741454, 8688719, -5695127, -4047470, -6104759, -7319161, 3848828, -869731, 73551, 2781528,
+1335735, 2900714, 11344619, -6832219, 11009612, -573378, 2251637, 2478196, 2393371, -3285650,
+3829500, -7754564, -1482301, -4207994, -821949, -5750961, 7014756, 1275605, 19427748, 658204,
+-1245004, -4881231, 859530, -4081830, 10153303, -6230387, 1345399, -11327976, 8524436, 7881802,
+-9410810, 5788006, 5840082, 2471754, -5100274, -5148055, 8552890, 2252710, -12378633, 5975910,
+-5877663, -3145527, 2798171, -3044595, 1105954, 2550674, 3334505, -6396280, -15683610, 2332704,
+3517041, -431644, -3372623, 6241125, -2672544, -1954210, -2906082, 4170413, -5077725, -1949378,
+-2887829, -2078227, 1272384, -1877438, 2687576, 448824, -4516158, 3367791, 430570, -2252174,
+-143881, 3042984, 965831, 207232, -406948, -754304, -2397666, 266288, 656056, 369904,
+-248571, 1436130, -2713346, 363998, 504659, -2941516, -2690260, 6612102, 1274532, -119722,
+-5582384, -9362492, 3314641, -5018133, -2030446, 9084930, -12360379, -5135707, -9107478, -914291,
+7807177, -711891, -6442988, -8927090, -10039486, 3926137, 10618770, -3029563, 6634651, 10001905,
+-2765422, -2290828, 3911642, 5568425, 11857331, -1704565, 6666326, 980863, 14098767, 10380936,
+2838974, -3304977, 1425392, -7799661, 13688598, 3195993, -6035503, -6686191, 7895761, 6681896,
+4801237, 3433290, 2346126, 7102266, -3060164, 3142306, -4685273, 692564, 386547, -7100655,
+-9505299, -3357591, -6712497, 4333622, -4095788, -3029026, -10366977, -6509023, 1992328, -3527779,
+-1238561, 5000953, 10394358, 13119514, 6818261, 5440113, -4825396, -10653130, 191126, -7451232,
+-17244294, 167504, -1206886, 6452115, 4346507, -4205310, -9605157, -5207111, 4655208, -212064,
+-1064615, -3961571, 2134062, 2211371, 1743757, -1006096, -5465346, 1172526, 727460, 553514,
+-1229971, -654983, -732292, 702764, -2670933, -2738042, -281320, 354872, -2218888, 215285,
+-436476, 2080375, 2761664, -2954401, -98247, 2177549, -355409, -1228361, 513249, 333397,
+2995203, -905701, 1930588, 1529008, -1272384, -19889456, -6159520, 1097901, 9682467, -6976101,
+4719632, 3107946, -425202, 14606110, -1981591, 13746043, -8120173, 4037269, 4322885, 172336,
+-12585328, -5190468, -4717485, -14260365, 4838281, -3547106, 2997887, -890669, 5143224, -18254,
+-5609228, 2976949, -9208410, 6774774, 3934190, 15636365, -694174, 472983, 14251238, -12618614,
+11056320, 13591424, -8531416, 8753680, -3686693, -4105452, -7165616, 1801739, 1609002, 9666361,
+6178848, -2490544, -4061965, -8215736, 4461934, 5127117, -9469329, -4237522, 8773544, -15460272,
+1395328, -11942157, 6694781, 660888, -284542, 3613141, -4109747, 1374390, 14190572, -5872294,
+3059091, 6936372, 4316979, 763967, -7569343, 3322157, 2727304, -4369593, -12232067, 133681,
+-2835752, -9647570, 7261716, -2626909, 2643016, -384400, 1338956, 3073586, 2940979, -5389647,
+1317481, -536871, 1190780, -430034, 3598109, 1821603, -941135, -666794, -5297306, -205085,
+-3633542, 632434, 558346, 3815005, -5597416, 2071248, 2968359, -2103460, -3488050, 1242856,
+-534723, -2035815, 1637993, -435402, -2189897, 775242, -759672, -2489471, -726386, -1608465,
+-3372086, 1588601, -1048509, 318901, -1857037, -375810, -1897302, 903554, 3562139, -462246,
+-8130910, 23639500, -8790724, 4570382, 3400004, 8419210, 2654290, 5099200, 11809549, -9150965,
+-5607617, -773631, 16428787, -6362457, -6991133, -8174397, 4060892, 2719788, 8990977, -18778670,
+177704, 372588, -1273995, 9614821, -2339684, 7408819, 13788456, -10047002, -4498442, 3905199,
+-7522635, -9483288, 6360310, -8811125, 12965433, -2238215, -13352516, -1788854, -7668127, 4217121,
+10574209, -227633, 5346698, -678605, 2052994, 12578349, 383863, 9117142, 3606699, -6868190,
+7128035, 6080063, 837519, 5104032, 18076980, -3021510, -8139500, 4275640, -10300942, 784905,
+17265232, 5844914, 2717104, -3312494, -4956929, -3350075, -6121402, 10394358, -6852084, -1843615,
+-4275640, 11798275, -21734682, 7412040, 7646116, 13055090, 3090766, 976568, 11508365, -3277060,
+-4993973, -6540699, 152471, -5443334, -554051, -4685810, 3768834, 332860, -4172024, -4401805,
+-3684008, 1382443, 4495220, 3598109, 767725, 248571, -1930588, -4763119, -1593970, -1242319,
+1947768, 1985886, -804233, -1186485, 922344, -2862596, -17717, -2778307, -1403381, -3652333,
+-4912369, -1381369, 1669132, 5435818, 869731, -1530082, -1464047, 2123325, -534187, 5212480,
+2355790, 895501, 725313, 34939560, 10427107, -6367826, -8485782, -7148436, 25313464, -21814676,
+1736241, 8544837, 1263794, -11826729, -2675228, 5937793, -1267015, 1379758, 10500658, -10865730,
+-9128416, 4481262, 13687524, 8437463, 3535295, -6630356, -6481106, -6238440, -7269232, 6780680,
+2692945, 9716290, 7793218, 4442070, -10310069, -4900021, -10983305, -2176475, -7205345, -16588237,
+-3091303, 7419019, 1648731, -7692287, -7758859, 200790, 4014721, 10392210, 1321239, 5272609,
+1505386, 20076288, -17413944, 11400991, 2137820, -17765058, -3208878, -5350456, -4395362, 2737505,
+-7778186, 4702989, 3416110, 7965554, -9700184, 3445101, 15538655, 7285875, 24688008, -5513128,
+-612570, -6058588, -3103114, 680752, -490163, -23398982, 10436234, -974421, -1369021, 6361384,
+6286759, -6626598, -9969156, -10900090, -4052839, 7755637, 3302830, -2535105, -6440304, 5695664,
+-10128070, 5316096, -1657857, -4576288, -5724118, -6206228, -2240362, -2061584, 987306, -2585034,
+-1751810, 1296006, -1858110, -1729798, 1079111, -5070746, -2312303, -344134, -1725503, -2898566,
+-1293859, -5149666, 733903, 3871376, 5210869, 6117644, -4432406, -5425618, -3849365, -4905390,
+189515, -3221, -3009162, -3422015, 1322313, -449361, 3399467, -1048509, -244276, 2638184,
+2640868, -2114735, -11694659, 2843805, 6362994, -243203, -7185481, -4986457, -15532749, -18456548,
+3832185, -8178692, -3895535, 2718714, -154082, -1928977, -8236137, -4085051, -78920, 6484864,
+6908992, -10136660, -5816460, 6388227, -9084930, -4459250, -14879377, 14408542, -1874753, 12981002,
+1136019, 4871567, 13790066, 10425496, -6122476, 3144453, 7012071, -7361574, -2997350, 6833830,
+-2533494, -16526497, -3071975, -11578695, 16992502, -1793149, -4510253, -9711458, -14173392, 5083094,
+3005940, 3346317, 6994891, 165893, -2583423, 7320772, 1869921, -1395864, 2575370, -4088272,
+11229729, -2650532, 7085623, 20964272, 4675072, 3940096, 4909685, 7736847, -18246632, -14768245,
+5623186, -16119012, 11164231, -2274722, 12790949, 3379603, 24937654, 9793599, 1698123, -7245610,
+-3214783, -12823162, -864362, 4001836, 2505040, 2726767, 4408247, 11380590, -4733054, -9228811,
+-3208341, -2564632, 3582003, 10326712, 3652333, -2489471, 2977486, 3029026, -532039, -2386928,
+-6010807, 404264, 677531, -2933463, -3977677, -758062, -6374269, 4471061, 2538326, -2997350,
+-971736, -6331856, -3103651, 2927020, 5541582, -2783676, -2572686, -117038, -5087926, 5395016,
+-255551, 3885872, -5263483, 2147, -5453535, 3192235, -6471442, -1468342, -29772714, -20850456,
+7736310, -8304856, -17219060, -26137024, -636729, 2084670, -5068062, -4174708, 24928528, 6541235,
+-18026514, 3772055, -11000485, -9253507, -8932995, -16099148, -2659122, 1484448, -22169548, -20992726,
+-7975218, 3473018, 2067490, 12719546, 10765872, 6688875, -5337571, -207232, 4920422, -11369852,
+-6338298, -3879429, 3765613, -10681584, -6524056, 7300371, 4422743, -289373, -1639067, -1995012,
+6086506, -15381888, -8764418, -7573101, 10205379, -11923366, 8106214, 13665512, 18722300, -1245004,
+5389110, -4438849, -8930311, -11724724, -3157875, 11559368, 4350802, -20989506, 932545, 21721798,
+-14421963, 702227, -3074660, 1158031, 5168457, 11077794, -2291365, 3519726, 13302051, 9145596,
+5862094, -10174241, -12241194, 8949638, -8856223, -16772384, -16106664, 17553532, 6687801, 9696426,
+4167729, -2764348, -3377992, 8375186, 5939403, 1578937, 8072928, -3217468, -10566693, -5459977,
+-7362111, 2961380, 10699300, 5208722, 1300838, 6330782, 3520263, 5902896, -1120987, -3029026,
+3640522, -1319629, -4087198, -3486440, 2825015, -9766756, 2155537, 5728413, -3436511, 7086696,
+4866198, -408559, -765041, 6680822, 835371, -1545115, -4248797, -4181151, 1176821, 3521873,
+810138, 2835752, -4233764, -17400524, 9601936, -14085882, -25107842, 4529580, -15264851, -8873402,
+29669634, 2012192, 22216792, 19985556, -4006668, 21046950, 29132226, 20708184, -26051124, -3484829,
+-12106439, -12274480, -7500624, 515396, -10737955, 22725208, 6759205, 12466679, -10641318, 11932493,
+9197672, 3048353, -13553843, -10558103, 21646098, -3964255, -20181514, -1387811, -23359254, -3383361,
+6509560, -8392903, 530965, -19084688, 8774081, 17273284, 9382356, -2563022, -9338870, -3512210,
+-2334315, -3262565, -8744553, -23447300, 15851651, 8881455, 8294656, 9895605, -13285944, 20645908,
+2627983, -6268505, -4575751, -16509854, -7232725, 10650445, 6643778, 17648558, -1871532, -20278688,
+-35497904, -2130841, -212601, 100932, -12767864, -17945984, -3372086, 11805791, -6208375, -7289633,
+4751308, -1646583, 18090940, -3612068, -16012175, -5797132, 16850230, 1021665, 3237869, -16410533,
+-5769752, -3142306, 6805376, 8696772, -4284230, 2986076, 712428, 6495601, 4323422, -723702,
+2961380, 8722005, 2180233, -216359, -2881923, 927713, 5840619, -260919, 2986076, 9979357,
+1510755, -3520263, -7405598, -883690, 5425081, -5223754, 2783676, -2385854, -1562831, -3504693,
+-4445291, -3450469, 93952, 6280316, 4969814, -6806450, -12377559, -3730179, 4645007, 1607392,
+1684701, 37877852, 23890218, -3391414, -22062174, 4642323, 11000485, 6338298, 16076599, 24128590,
+-10647224, 1986422, -21566104, 6106370, 1780264, -8370892, 38863548, 14725295, 33534030, 13840532,
+8651675, -29221884, 453119, 16292422, 2973191, -15559056, 6578280, -23782308, -9280351, 1627793,
+7168838, -7129109, -4619238, 5145371, 4206384, 1707786, 21058224, 13070659, 3469260, -8439074,
+14505178, -9439801, -6766184, -13874355, -4610648, 18073222, -28563680, -449898, 12827457, -14266271,
+-4476430, 5426691, 4828080, 26370026, -1513976, -310311, -12306692, 25781614, -11483132, 3244311,
+2716030, 17848274, -4158065, -6463926, 17011292, -28702192, 7487202, 2734821, -11882564, 22923852,
+-28660316, -3653944, -9574019, -19267224, -9622874, -1725503, 8173860, 18004502, 29734058, 14484240,
+19653234, 29898342, -12160126, 5496485, 7538205, -12801150, 17311940, 325344, -22891638, 11998528,
+6367826, -8407935, 818728, 17670032, 13395466, 3924526, 10576357, 3118683, 3469260, 9690520,
+-1710471, 4107063, 8705899, -2138894, 1941862, -1613834, -450435, 6095096, 1254667, 624918,
+-5310727, -3214246, -3661997, -7601019, 1700270, -4211216, -12054899, 4617627, 7326678, -2537789,
+-66035, 3217468, -4123169, -179852, 12861280, -1973001, -3508452, -8126615, -36710696, 10171556,
+1933809, 44338020, 10126459, 8335458, -1217086, 21625160, 5837935, -32502702, -4989679, 34774740,
+-10302553, -7322383, 2934000, -2404645, 790274, -6331856, 36215164, 41199472, -22152904, 10001368,
+11093901, 6024229, 11705396, -18133352, -25047176, 19280646, 5299990, -13853954, -23944980, -7188702,
+-8129836, 21905944, 17905718, 10049687, -20271708, 11151346, -8780524, 7110319, 1222992, 9411884,
+20657718, 4754529, -46166604, -14148159, 8488466, -18496276, 5632313, 19593640, 6591701, 34118684,
+-11280195, -51246476, -1175210, -20428476, 17841832, 15477988, -5579700, -10898480, 15847356, -24609088,
+-4381941, -13295608, 11635066, 16027744, 13698798, 14891188, -11087458, -20853140, -62065500, -29677150,
+-36113160, 5710696, -24471114, -11863237, -4971425, -26927298, 14452028, -48480516, 15113453, -34861712,
+-25249576, 24869472, 29388850, -9023189, -1177895, 15917149, 20725364, -28452548, 632434, 4664872,
+-4079145, 5025649, 15312632, -1948305, 6779606, -1288490, 5992553, -12577275, -6581501, -5733245,
+-8267275, -1796907, 12020003, 4991289, 10822781, 409633, -11414949, -10379325, 1824287, 6305012,
+-2348810, 6695317, 6998649, 16860968, 1670742, 5803575, 1850594, 4022237, -7407745, -2270427,
+3103114, -6027987, 324270, -2760590, 727460, 3132642, 17623862, -1617055, -10432476, -11577621,
+1161252, -654983, -18408230, -10794863, 7621420, -12106439, -596464, -156229, -48012364, -7062000,
+31971736, -37949796, 3831648, 14191646, 513249, 9953587, -2724620, -30061550, -2397666, 16397111,
+5628555, 24423868, 16665010, -25784836, -27793270, -3701725, -11957726, -3958349, -45888504, 17212618,
+18356690, 32192390, 14751065, 29302414, -12561169, 4027069, 30209190, -9505836, 32866700, 9124658,
+17428440, 5860483, -8250096, 16200617, -19801410, 970663, 41504416, -32154810, 3044058, -41823856,
+-18763102, -30079266, -20387136, -5272073, 2263448, -9893457, -31819266, -5771899, -52893060, 59782188,
+21026012, 335544, -8057896, -14475650, 3353296, -26339960, 4893579, -39461624, 925565, 1983738,
+8833137, 25245280, 36420784, 1227287, -61062624, -28090696, 26176216, -13350369, -12199318, -14823543,
+-8126615, 30103962, 6258304, -16962974, 12640089, -28330142, 4910758, -5402532, -12584254, -28603946,
+-16201690, 18023294, -8630200, -6966974, 9686762, -10672457, -3350075, 17931488, -21079700, -14323179,
+-6190122, -4446365, 22535694, 10470593, 6077379, 13298829, 5190468, -2282238, 10362682, -307090,
+7587060, 10835129, 16944182, -6706055, -202400, -1986959, 12472048, 18976776, 6998649, -4677757,
+-1449552, -5891085, -13921063, 24271934, -7232188, 12452721, -7285339, 3755412, -7740605, -5648956,
+6139656, 11019275, -23813446, 16870632, 27314382, 10059350, -12475806, -16615618, 7963406, -21450678,
+33951716, 28268938, 43029668, -30693446, -37789808, -9505299, -860067, -19135690, 25312926, 30682710,
+-22688702, -96100, -40464496, -11968463, -19153944, -36564668, 11578695, 30144228, 18297634, -23775328,
+-9181566, 2764885, 20360830, 3022046, -1426466, 7614977, -2244657, -10299868, -32695976, -22230214,
+8505646, -3078418, -17753248, 19326816, 17277580, 10951093, -33451352, -30587684, 29000156, 17449378,
+21584358, -21837224, -55770688, -10562398, 23620710, 23345832, -5617817, 56500296, -6912213, 56797184,
+-85290000, -105902080, -43386148, -63807108, 875636, 24849608, 13223667, 68977176, -7704098, -4530654,
+12991739, -13806172, -54291608, -48511656, -53821844, 43117176, 35483408, -13383118, -3497177, -90292024,
+25307022, -1211181, -40127880, 16687022, 25985090, 39846560, 31456878, 14419816, -2608119, -26865558,
+972810, 1273995, -7335804, -11595338, 32024886, 19575388, 12576738, 32408212, -24830280, 5915781,
+-6824703, -15564425, 20513300, -3256659, -35323960, -305480, 11375758, -12796855, 17024714, -6825240,
+4684736, -7913477, 39586176, 30712774, 36688148, -30840550, -6812355, 37755448, 28139552, -26879516,
+-16406238, -27073326, -15752866, 22012782, 25238302, -8858907, -2379949, 42107324, 1942936, 3870839,
+-5374078, 7490960, 7435662, 6911676, 12130061, -40904196, 35690640, 27307938, 11113228, 33791192,
+-19881404, 12508555, -55881284, -26883274, 14597520, 20697984, 9382356, 7291781, 6860137, 14533096,
+-6864969, 63592360, 5640903, 39638252, 11272142, -18977850, 48298516, -6484327, 18911278, 1105954,
+17250200, -1728724, -1136019, 10727755, 24185498, 7176891, 17641578, 1347546, -3755949, 38299832,
+4248260, -7952132, 557272, -2905546, -19331110, -5403606, 10657424, 7203734, -43203612, -10433549,
+5341866, 10067403, 44964012, 36821292, -44671956, -24469502, 3578245, -9774809, 49524196, 4932233,
+45670536, -32140314, 22941568, 4731980, 2440078, 21342230, 46940772, 30606474, 6180995, 41668164,
+16247861, -19504520, -42031088, 36837936, -33538862, 22298934, -44137232, 247497, -69940320, 72538240,
+-18022756, 2537789, -49000744, 44040596, -17169132, 13955959, -35976792, 42534136, -22251152, -19976966,
+-14627585, -26721140, 8227010, -14974403, 12597139, -13886703, 23209466, -26106958, 23255100, -27489402,
+15067282, -32189170, 25649544, -11136313, 28478854, -9993852, 14898168, -12174085, 9595494, -13887240,
+450972, -15177341, 17273284, 7036767, 4858682, -6087043, 1629403, -12139188, 9273908, -12473122,
+21810380, -18148922, -21587580, -9779641, 8683887, -25661356, 19734300, -6396280, 10830834, -7355132,
+6159520, -11854647, 5494337, -6161668, 6586869, -2030446, -69959648, -17481054, -5423470, 7377143,
+6280316, -43545600, -25300578, 39353176, -15261629, 14516453, -17413944, 3847217, 49437220, 79685064,
+5526013, -2837363, 40025872, 17437568, 16579111, 49334140, 1111860, 29862908, 36239860, 34775812,
+-13634911, 15024869, 31327492, 43588548, 35692788, 53609780, 30296700, 68462856, 72685344, 52494700,
+57957364, 39460548, -4317516, 19306952, 10282152, -15044734, -14824616, 11349988, 33843268, 7661148,
+1567126, -246961, 16729971, 50302120, 39168492, 84515832, 17067664, -43992812, 17541720, 770410,
+17935784, -22649510, 33627984, -61435212, -79102560, 22014392, 79542256, 34493956, 15892990, -98717672,
+569620, 37351720, 59565292, 79878872, -34011848, 4813048, -137941472, -91093568, 36843840, 51518668,
+-76838576, -65705484, -40889700, 75249976, 50280108, -90382216, -116525144, -23755464, 47414828, -55947316,
+26495654, -8759586, -20204600, -30343944, 4111358, 11723650, 19552838, -3762391, -48289928, -41973104,
+5063767, -13276281, 20141786, 2452963, -5114769, -18652506, -12259447, 7282654, -1210107, -40427452,
+-20327006, -30702574, -15854872, 5092221, -15647103, -11768210, -36083632, -48142288, -65935264, -66071092,
+-55643984, -47536700, -52207476, -52105468, -39735964, -54952496, -58031452, -49638548, -55778204, -36383204,
+-9934796, -32364190, -46662136, -31232466, 1142461, -17441326, -9554692, -11639361, 23698556, 25040196,
+464393, 10836739, 12772159, 6851547, 7050189, -721555, 5334887, 3546569, -26832272, 66924716,
+73720968, -83197808, -35548908, 33078228, -24147916, 16941498, -31431108, 28802588, -26725970, 7348689,
+-761283, -11534135, 5674726, 2480881, -8715026, -4887136, -21520470, -4489852, 3799972, 3595425,
+-21921514, 21182778, -20176146, -5640903, -17603460, 2993055, -16887812, 33927020, -1552631, 9757629,
+-9704479, 9730248, -10269267, 10424959, 19203872, 28381680, -8300561, 10233833, 9182103, 25043418,
+-15888158, 16487843, -14277545, 29874182, -8553964, -15360414, 8411157, -6183143, -9682467, 4290136,
+-3505767, 13379897, -7570954, -15469398, -16954920, 3473018, 2113661, -27666568, 7727183, -3479461,
+-3853123, 5896990, -9079561, -3933653, 1909113, -3633542, 2935610, -14471892, 17034914, -50247360,
+25985626, -20885352, 33252174, -22040162, 29650844, 562104, 15607911, 10631655, 12477417, 7191386,
+1176284, 6870337, -2205466, -20586852, -5639829, 2003065, -9874130, -3063386, -5733782, -1281511,
+31675, -7158637, -1869921, 4156455, -1998770, -12339978, 13188234, -1280974, 6449967, -13164075,
+5649493, -7670812, 4615479, -9127879, 10597295, -13894219, 20170240, -2819109, 1624035, -20899310,
+14015015, 244813, 9783936, -19717658, 3899294, -7415261, 1806034, -2887292, 503585, -12394202,
+5332202, -1301375, -10181220, 2428804, 15556372, -17833242, -470299, -5937256, 8320963, -11896523,
+11062762, -9127879, 1496796, -5953362, 7838316, -1698660, 3164854, -2026688, 3651796, -5495948,
+1864553, -1134408, -4429722, 1763621, 558883, 1500554, -1970316, 5234492, -1410360, 1239098,
+-4015795, 7402376, -9881109, 3321620, -13566728, 63551556, 38538740, -20952462, -24102820, -2110977,
+78964048, 32992328, 11072426, 21859236, -19147502, -24171002, 6736120, 15329812, 3999152, 1391033,
+-8408472, -6551973, 7430294, 7575786, 18383534, 8181913, -9911174, -4369593, -4900558, -9990094,
+-111132, 1762547, 4896800, 6233608, 190589, -2652142, 7336878, -21195126, -8055211, 9429064,
+13519483, 16762720, -9436043, -5490042, -10031970, 17145510, 11860552, -3246459, 5447093, -19815368,
+-17149268, 15821586, 12304008, 3881040, -30031486, -15439871, 1232119, 5002563, 19763292, 14129906,
+-2221572, 5811091, 7019587, -9388262, 8580271, 9309878, -2756832, -5729487, 5529771, -10052371,
+937914, -1720671, -7056632, -10769094, 14936823, 3052111, 3304977, 20577188, 25031070, 8860518,
+20255602, 18962818, -3000035, -5127654, -5709086, -3663070, 7902740, 12934294, -5031018, 3977677,
+-11625940, -4230006, -580894, 2756832, -6345814, -7573638, 7818988, 14970645, 6468758, 4148402,
+6264747, -7205345, 578210, 7119982, 1388348, -2244657, 1789391, -739808, -8732205, 17752710,
+5779952, -14215805, -13427678, 5395553, -2667175, 13997835, 7406671, -1797444, 5226439, 1792612,
+-2901787, -652835, -4051228, 4097399, 6420439, 991064, -1686312, -5567352, 4757213, -1108638,
+-22798224, -62870804, 21777632, 115624280, 90913184, 87067040, 27836220, -80922016, -48547088, -71734008,
+-71970232, -65578780, -22892176, 35391604, 45601280, 71744208, 64250028, 38718592, 6505802, 6344741,
+-31079994, -49118856, -70338144, -27018566, -19088446, 6362457, -3955665, 35748088, 24126978, 10302553,
+47747152, 26851062, 20444582, -4118337, 17942226, -32363652, -24422258, -20158966, -23587960, -31040802,
+-18719078, -12353400, -31609886, -21826486, 8416525, 46592344, 44944684, 51084340, 40099964, 58400280,
+10115722, 14999636, -38766376, -28661390, -24604794, -58137216, -57931056, -51942260, -24558622, -30415348,
+7168838, 22622130, 32510218, 65351148, 64165200, 61452392, 55104968, 48260936, 10320806, -28279138,
+-46134392, -82390896, -70807368, -51601348, -70377336, -32615982, -14673219, 3161096, 69107096, 54202488,
+79492328, 78556024, 57380764, 16109885, -15825344, -23417772, -27187142, -24218784, -46749644, -57812408,
+-40397924, -27568322, -24387362, 3126199, 16289200, 25919590, 22317724, 46600396, 50925428, 38513508,
+30630096, 5166309, -10724533, -21898428, -35871028, -30802968, -21850110, -34409132, -46649252, -4879083,
+2746632, -7626788, 40273372, 53151832, 34029564, 29905320, 2279017, 8497593, -5473399, -9287867,
+-23160074, -27224724, -17851494, -20332912, 2971044, -8076149, 2704756, 469762, 18398566, 9927817,
+9543954, 17205638, 17582522, 109522, -4488241, -12349105, -12289512, -3447248, -2666638, -5901822,
+-5779952, 1298154, 1684701, -1341640, 3221226, 3459596, 3337727, 1105417, 11629698, 4390531,
+126165, 2072322, 37581, -3620121, -3052111, -3062312, -1673964, -1042603, 250719, -383863,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
-3353833,
--4174171, -6163278, 2082522, -3011846, -6083821, -3896609, 2767570, -7686381, -4258997, -9400610,
-3266860, 4199405, 5347235, 2915209, -3289945, 7120519, -4875325, 1437203, 149250, -1025960,
--5151814, -2640331, -5666136, 219580, -2408403, 3170760, 2100776, -2705830, -863825, -620086,
--5200669, -219580, -1155883, 2308545, -92342, 4701379, -1673964, 5949067, -2576981, 73014,
-958315, -4350265, 3022046, -1337882, -1668595, 486942, -1175747, 2273112, -9109626, 4215511,
-5487895, 760746, 3119757, 1662689, -4031364, -573378, -4374961, 5931350, -1574642, -3770981,
-3605088, -5532992, 245887, 2059974, -6214281, 675384, -1447941, -2442763, 2155537, 389231,
-586263, -3024194, -1861332, -10088341, -1197759, 2073396, -1568737, 390842, 1290101, 5232344,
-4606353, 168041, 1570884, 541166, -780610, -845572, -1255741, -816044, -338229, -1125818,
--827318, -146029, 1069447, 539555, 754841, -1654636, 98784, -159988, -329639, -216896,
-477815, -331786, 163209, -856309, -481573, -776852, 81068, -736587, 1043140, -14274324,
--8556112, 1568200, -4616016, 865973, -4762582, -8206609, -5439576, 9281424, 5425081, -1457068,
-6311992, 1466195, 1562294, 1750736, -3036542, -846645, 5133560, -4137664, 2339684, 3718368,
--3979287, -6334003, 2910914, -5180268, 590558, 2944737, 7602092, -1724966, -3641596, -3215320,
-1198296, 4111894, -5587753, -60666, 4628901, 1802276, 503585, -318901, -413391, 5976447,
--209917, 5473936, 3625489, -1406602, 3612604, -1278290, -307627, -573915, -9998147, 3454228,
-5682242, -3290482, -1847910, 1367410, 1561221, 1595044, 905164, -557809, -1188632, 325881,
--2499134, 6846178, -3054796, 784905, 3746822, 2964601, -2430952, 2695629, 878321, 1751810,
-3784940, 3308199, -4953708, 5140002, 5732171, -1948841, 119722, -372052, 3752191, -4575751,
--2351495, 992137, 676994, 165356, 271120, -980326, -1509144, 909996, -700080, -399432,
-292058, 1300838, -943282, -235149, 56908, -1796370, 638876, -1067299, -1071594, -865973,
-699006, 92342, -485331, -1074279, 284542, -5602785, 7177427, 4774930, 11129871, -1809255,
-1154809, 3468186, -5476620, -1081258, 2120103, -2199560, -7422777, -394600, 750546, 4994510,
--6004901, -14516989, -11801496, -7199439, 2754685, 6963216, -7014756, 3959423, -3464428, 5388037,
-4108673, 3663607, 6363531, 3608846, -5077188, -4605279, 819802, 3464965, -316754, 327491,
-8917963, -36507, 1507534, 4499515, 4658966, 814433, 77309, 11123428, -834834, -4136054,
--1312649, 2549063, 3175055, -2123325, 5901285, 1196685, 3138547, -4241280, -3845606, -1431835,
--2565169, 1468879, -2049236, 6517613, -7562901, -6669548, 8036421, -829466, -409096, -9402220,
-2857227, -4551055, 5011690, -3903052, -10509248, -462783, 5293547, -4452808, 6862821, -4160750,
-3117610, 6496138, -1914482, 2724083, 6444062, -416612, -4902169, 413391, 3103114, 1486059,
--2419677, 4502200, 209917, 2376191, 802085, 650151, 1609002, 311922, -773094, -45634,
-139586, 687732, -1912334, -923955, -1046361, 1724429, 106300, 1756105, 1727651, -1708323,
-312996, 439160, -1090385, -738198, -460635, 321049, -1003949, 351650, 17353278, 4138201,
-4598836, 2032056, -4012036, 8388608, -3986804, -2322504, 10583336, -758062, 8504572, -860604,
--9800578, 3495030, -3346853, 10814728, 5638219, -710817, -9679783, -6705518, 8878771, 10609643,
--12370043, 6222871, 4913980, 3757560, -839666, 1238561, 996432, -896574, 12184822, -515396,
--2126546, -3329137, -4131222, -5189931, -1757715, -238908, -7074348, -2467996, 1803886, -4866735,
-239444, 321049, 7277822, -2703682, 195421, 3439732, 255014, 7027640, 3121904, 7305203,
-3560528, 2251100, -7718593, 845572, -5727876, -5287105, 1241246, 7448010, -322123, 6401649,
--2700461, -4776004, -1149978, 341450, 1841467, 4406100, -2051921, -4832, -2422362, 2476049,
-1640141, -6233608, 1188632, 1334661, 801548, -1731409, 6527277, -663572, -1312113, 734439,
-3047279, 1382443, -2183991, -666257, -902480, -1546725, 1258425, -1855426, 3064459, -1837709,
--396748, 404264, -1491427, -392453, 1691680, -1998770, -490700, -2154463, 819802, 936840,
-1728188, -2356863, 446677, -950798, 1178969, -790274, -2876554, -894427, 4908611, 3436511,
-3948686, 11185169, 5856188, -4855461, -4336843, -12039867, -777389, -266825, -6420439, 2443837,
-9667971, 1173063, -7606387, 7071664, 6724308, -697395, 2692945, 6811818, 1621350, -6181532,
--945967, 14430016, 7105487, 1497333, -9506373, -3400004, 8691940, 2993055, -1285269, 4895189,
-4381941, 4584341, -24696, 8961986, -68183, -1139240, 2269890, -4438849, -5814312, -284542,
-1000727, 3339337, 1843615, -5435281, 5546951, 9720048, 4999879, -254477, 7226820, -8196408,
-4699768, -4877472, 5162551, -1357210, -5888400, -286152, -7676181, -12582644, -4578972, -4990215,
--593779, -37044, -6574521, 1296006, -2005750, 3843996, 2546916, 4549981, -700080, 1843078,
--6327561, 1120987, 1030255, 8871255, -3394635, -257161, -3047279, 1891933, 7986492, 4114579,
--4595615, -7369090, 2365453, -2932389, -985695, 3874061, -514859, 1320166, 935229, -4374961,
-241592, -3330747, 987306, -3161633, -2116345, -1131724, -99858, -397821, 616328, -2011118,
--176094, -654446, -1593433, -1341104, 529355, -322123, -805843, 256087, 797790, 2487323,
--825171, 1472637, -1016834, -2424509, 1872606, -2655364, 2639258, -200253, -1694365, -249645,
--11778948, -7809861, 16695612, -3662533, -3646964, 968515, -571231, 17875118, -5214627, -9660455,
-249645, -9529996, 2387465, 7582765, 8176544, 2571612, -16586627, 13637595, -10727755, 5698885,
--7329362, -5589900, -4096862, 6805913, 7340636, -10991895, 883690, 4790499, -3395172, 2193118,
-3238405, -3977140, 521839, -9053254, -6066105, -13969918, 8282845, -1959042, 14090714, -6563247,
-3068754, 9395241, -2335389, -2796561, -4148402, 10769630, 7879118, -13232257, 3787088, -7485591,
--2499134, -2909304, -7416872, 4459787, 2379412, 11647414, 8211978, -14636175, -2386391, -6287832,
-8561480, 2973728, 747324, -8540542, 1290638, -899796, 7196755, -1202054, 911070, -9821516,
--213138, 6971806, -6419903, 1078574, -2018635, -1917703, -5186710, 1044751, -673773, 12360916,
-5461051, 5653251, -2253784, -1381369, -2138894, -3367791, -1797981, 2757906, -3774740, -1203665,
--3702799, 2806224, 2363843, -2018098, -1128503, 2609730, -3486977, 1733556, 538482, -938450,
--1103807, 938450, -91268, -315680, -664646, 2283312, -3365644, 450435, 308164, 1710471,
-1851131, 1851668, -1707250, 510027, -1204202, 2473364, 578747, 1813550, 4061429, -4477504,
-297427, -9448391, -1192927, -10904385, 1695975, -2729452, 6250251, -438624, 5300527, -7470559,
--14081050, 2986613, 9452149, 1236951, -1155883, 7382512, 4953708, -11505681, -200253, -4338454,
-14548128, -649077, 1679332, 1142461, 131533, -457951, -5243618, 11540040, -999654, -16364899,
--3091840, 9912785, -6409165, 1650341, -281857, 1321776, -2070711, 1575179, -3033321, 3906273,
--6299644, 5905580, 8267275, -6505802, -1683090, -3853660, -11420318, 4555350, -8116952, 7034083,
--7138773, -12302397, -3389266, 7299834, -2313377, -4400194, 4853313, 6749004, 3833258, 7397008,
-12636331, 10195715, -692027, 1976759, 1692754, -6808060, 1260036, -7118909, -7783018, 4216048,
--5946919, 1911261, -389768, 4444218, 4487167, -5890548, 6788196, -1881733, -2843805, -1272921,
-4759361, -896574, -4480725, -3038153, -6327561, 7166153, -3651259, -958315, 1189169, -312996,
--2710661, -2281165, 431644, 934692, 261993, -1272384, 1604707, 1202591, -1467268, 111669,
-1010928, 635118, -918049, -39192, -1213865, 432181, -1994476, -1800128, 1032940, 534187,
-2326799, 2595771, 159451, 1779190, -42413, -16176457, -13372381, 7764227, 14508936, -77309,
--745177, 2673080, -6817187, -3430605, -16536698, -8936216, -4606353, -230318, -11996381, 17243220,
-3554086, 9562745, -10925323, -13245679, -9793062, -3934190, 2751464, -15025943, -6577743, 6846178,
--2848100, -18260054, -6048925, 2371359, 311922, 11199664, 3913252, -3622805, -8500814, 10649908,
--6104759, -705448, 8209293, 2314451, -8681203, -4598836, -558883, -14795089, 3832185, 11369315,
--4855461, -6391985, 1797444, -7522635, -2622078, 1408212, -4618164, -3700114, 4010426, -5622649,
--11608760, 5737540, -6562710, -8822400, -11897059, -6078453, 1334124, -4866735, 2136209, 14739254,
-8497056, -1858647, 14246943, 14273250, -6063420, 1940788, 4122095, -7474317, -4674535, -15771120,
-1765768, -5082557, -12565464, -172336, 6842957, 11788611, 7431904, 3433826, 1472637, -10723460,
--1186485, -2473364, 2955474, -4075387, -311385, 219580, 4295, 2544768, 658204, -994822,
-2456185, -974958, -3206193, 2689187, -2094333, -3042984, 624918, 1092532, 1180042, 223875,
-3449396, -348429, 2269353, 1218160, 420907, 652298, 153008, -2560338, 748398, -3514894,
-989453, -5608691, -1218697, -250182, -3516505, -4392678, -396748, -4341138, -627602, -923955,
--10186052, 26036092, -971200, 15943992, -7992398, -22892712, 6580964, 1925219, -845035, -10753524,
--991601, -7096360, 18153216, 13214004, 11900281, 8619999, -14131516, -122943, 2006824, 12559021,
--21482890, -2483028, -5215701, -6333466, 3292093, -7135015, 2822331, 4758824, 3623879, 3795141,
-5049808, -1537061, -2062121, -10514080, -2437394, -1639067, 10345502, -40265, -9358734, -2254321,
-11252814, -1343251, 6571837, 8329552, -6008123, -3630321, -13815836, -8104604, 27215598, 7113540,
-12145094, 6454799, 1634235, 981937, -17149268, 10161356, 1673964, 2955474, 8847096, 9544491,
-14981920, -17213156, -7031399, -9569187, -1142998, 2344515, -2207076, -4851166, -2757369, -14440754,
--18041546, -11792906, -16904992, -2238215, -11027865, -19031536, -7968775, 6138582, 10466298, -3991098,
--16185584, -610422, -2393371, 3816079, -4407174, 1014149, 9398462, 399432, -627065, -609349,
-1247151, 1614371, -2701535, -2509872, -6471442, -7345468, 3955665, -2034741, 3545496, 3131031,
--1134945, 2125472, 2932926, 5237176, 3786551, -2309619, 1210107, 6681896, 1344325, -6798933,
--5553393, -3080565, -1364726, 492311, -2334852, 3864397, 4330401, -1045825, 6509023, 836982,
--1756642, -1399623, 1546188, 35039952, 7927436, -5056250, -7277285, 1125818, -11251741, -21974664,
-16168404, 70330, 10402948, -7872675, 7523172, 17985712, -1788317, 2004139, -4539781, 15652471,
-13171591, 5109938, -21226266, 1529008, 3109556, 13103945, 19068044, -5641977, -3919695, -2533494,
-5101348, 6802155, 5648956, -9662603, 4392678, -11137387, 8491150, 11345693, -5450314, -11267310,
-7081864, -12259984, -11223286, -489626, 3228205, 15929497, 1899986, -2208150, 13562433, -2544768,
-12177843, 22530324, 11275900, 230318, -14353781, -1391033, -8282845, -6716792, 14377403, 5599564,
--14559939, -202400, -11140608, -2849174, 19067508, 8752070, 2746632, 8143258, 11467026, 5927592,
--15445776, 7900056, 12810814, 4365298, -10570988, 4298189, 1176821, 2159295, -8284455, 12660490,
--3545496, -3100967, 15229417, 16145319, 2338073, 4558571, 17554606, 984084, 8639864, -6227166,
--242129, 10087804, 5820755, -4547297, 5179194, 9097278, -2535641, 16106, 11611444, 2351495,
-4909685, -3513820, -5891622, -1831267, 3198677, 1633698, 2626373, 2695092, -1968169, -1888175,
--1576253, 834834, 3437585, 4161823, -2899103, -920734, 7210713, 999117, 9687836, -1821603,
-2593087, -1392106, 1186485, 4322348, 2618856, 286689, -130460, -4198868, -2961380, -2158758,
--4479114, 5595269, 5106716, -8550206, -396211, -10910291, -25550224, 8809515, -10152766, 2801929,
-949188, 17910014, -12312061, -10954851, -4544076, -5024575, -6555731, 13228499, -11689827, -16595754,
-5010080, -30994094, 964757, -5850283, -13043816, 16648904, -1006633, -996969, 7074348, -6613713,
-5334887, -1682554, -18432926, -20200842, -132607, 4262218, 11909407, 5718212, -1274532, -2126546,
--11558831, -5505611, 11760157, -18261664, 25288230, 14982457, 3451543, 18654654, -12358232, -5314485,
--11304891, -11630235, -4948876, 8534637, 23895588, 237834, -12205760, -2042257, 1255204, -1298691,
--1176821, -7528541, 6518150, 5934034, 16149077, -254477, 18248242, 9395778, 5091147, -406948,
-3977677, -27052388, 14401025, -3394635, -15749645, 11375221, 98247, 14959371, 6725919, -25050396,
-19604916, 15284178, -13023951, 21228950, 8262980, 15882789, 6388764, -2116345, -755914, -577673,
--2833605, -5441187, -1567126, 2435247, -5403606, -8316668, 210453, -5384279, -9754944, -5793374,
--7270306, 4816269, -4413079, 5901285, 1687922, 6025302, 2934000, -510027, -3006477, 1161252,
-712965, -293132, 976031, -1581622, -3949223, 2150705, -216896, 2595771, 2774549, 297427,
-2372970, 1229434, 3975529, 3482145, -5788542, -3355443, -9680319, -7333120, -47755740, -3896072,
-28542742, -5433134, 992137, 24598352, -5611912, 79994, 3178276, 6407018, -7311645, 6391985,
--2416993, -8492224, 8145943, 9213779, -27844810, 3093987, -24763708, -890132, -12756590, -14290430,
--2936147, -4446365, -13518946, 6633577, 2413235, 8423505, 11937862, -17206712, 21531744, 1260573,
--19845434, 1427003, -13649943, -7192997, -14692546, -13741211, -5673115, 13952738, -12042015, 6532646,
-14511621, -8820252, -15130633, -14334453, -20517058, -22536230, -12932147, -6576132, 1915019, -3598109,
-6327024, 4002910, -13050258, -1193464, 15064061, 8322036, -21807160, 8408472, -1487669, -6351720,
--20189568, 13528073, -7123740, 18757196, 24199994, 401579, 23028004, -12795781, 13437342, -10120554,
-14436996, 17907330, 1766842, -24103356, -541703, -32810866, 10748693, 6825777, 13138842, 5909338,
--12566001, -11331734, -2684, -7676717, 7578470, -8286066, -61203, -734439, -7792682, -6507413,
-5725729, -3374771, -8837969, -1098975, 3054796, 6520297, 3860639, 14418742, -1280437, 997506,
--4118337, 10042170, -1205275, -2466922, 9273371, -736050, 1608465, 1906429, 12421582, -2194728,
--4678293, 1020592, 8669928, 7694434, -7713762, -1017907, 5829881, -9498857, 5462662, -1735704,
-6922951, 150861, -7575786, -22575958, 18204218, -43256764, -2794950, -3952981, -3853660, 4215511,
--25177636, 1924682, -5150203, -1960116, 11150272, 4648765, 13008919, -10074920, 9131637, -4729833,
--22411140, -8778376, -16519518, -9968619, 10473815, -19213000, 2278480, -7031399, -14918032, -2480881,
-14072460, -19111530, -18772228, 7705708, 10855530, -498753, -9025337, 10496900, 10695005, 13541495,
-11295227, 4907000, 15560130, 18875844, -10362145, 2917357, -9175124, 23646480, -2198487, -16196859,
-19347218, 8707509, 4423280, -9242770, -12694313, 2978560, 7171522, 7598334, -973347, -10178536,
-7476465, -11869142, 20938, -11716134, 36048196, 5674726, -10790032, 29931090, -3995930, 9190693,
--8086887, 15051713, 21961242, -13817984, 20957830, 22655952, 29171418, 22711788, 1750199, 16870632,
--13575318, -2583960, 2789581, -7299834, 12651900, 598074, -1236414, -1294933, -4200478, 6356015,
-2798171, 17894982, -6287296, 6605660, -4364224, 100932, 2938295, 5260798, -7985955, 2760053,
-7041599, -3281355, -8925479, -1676111, -14049912, 4662724, 3755949, 3641059, -4065724, 2202245,
-6636262, 3970697, -2226404, 6789270, 2563022, -4520990, -2793876, -1495722, 10657961, 14487462,
-7207492, 3288871, 2067490, 4902705, 8088497, -5869610, -2901787, 3824132, -1495186, 705985,
-3396782, 44707924, 11780558, -7710540, -6438156, 10326175, 3099356, 4356171, -944893, -17978734,
-15176804, -40944460, 4631049, 8897025, -1645509, -7548942, -15502684, -7277285, 2043331, 12037183,
-18706194, -11051488, -23617488, -19315004, -2560874, 623844, -13852343, 28754270, -13282723, -8898098,
-12077985, -4140885, 2312303, -2674154, 24917790, 4042638, -24645060, 9741523, 3313567, 17082696,
--5963562, 1769527, -10095858, 8440148, 3947075, 21558052, -5110474, 9678172, 10434623, -13178570,
--14264123, 934692, 13307956, -25577604, -29979408, -8964670, -12218108, -1722282, -4211753, 2903935,
-6995428, -6206228, 1192390, -34900904, -29406568, 23416698, 25132538, -30243550, -23015120, -29111826,
--15033996, -12110734, 15190762, -15937550, -27828166, 724239, 1355062, -17214228, -3500398, 24270860,
--3532611, 1257352, 7976291, -346819, 1530619, -1171452, -8494372, -10799158, -447213, -3134253,
-7137699, -1225139, -553514, -7844221, 4002373, -12082280, -170188, 3568581, 4086125, 5669894,
-6631967, 1118302, 3797288, -2761127, 712428, -6196564, 2309619, 521839, -6807523, 6973953,
-7141994, -11181947, 758062, 8003672, 6753299, 12420509, -2534031, -14635638, 4096862, 4660040,
--7130720, 4525285, -7952132, -3855270, -1209570, -2621541, -6766184, 2374043, -24939264, -3034931,
--6041409, 7509751, -11818139, -3206193, -38778184, 34339336, 22052510, -3717294, 47071232, -4613869,
--25831008, -2369748, 10558103, -15950435, -21071110, -4415764, -14388140, -665720, 3990025, -21625160,
-31738198, 1069984, 3399467, -19950124, -5771899, 2163053, -5724655, 5103495, 7211787, 26112328,
-4654671, -1323924, 21071110, 17413944, -6190659, 10274099, -13348221, 3767760, 11774653, 11481521,
-29485488, -29169808, 17906256, 54130548, 365609, 8893804, 18488760, 2124398, 3651796, 8751533,
-6707665, -18080738, -21590800, -7831873, 17301738, 5174362, -22437982, -12130598, -1019518, -10756209,
-19880330, 1833414, 15343234, -34166464, -21211232, 9967545, 23393076, 14359149, 9396315, 32494648,
-18931678, -13644574, 22332220, -16863652, -3486977, -2423972, 12528420, -2651069, -14024679, 12131135,
-5219996, 1160178, -16080358, 11094974, -311922, 215285, -7219303, 9350144, -7703561, -6159520,
--5927592, 4456029, -6185290, -11735461, 3853660, 823023, -169114, -6388227, -1332514, -7999914,
--6942278, -6398965, -4132296, -2470680, -3106872, -2436857, 1027571, 226560, -15260556, 10179072,
-3900367, -4792647, -11326366, -15976205, -506269, -8704288, -5985037, 5767068, -4336307, 9893457,
-4807679, -3492882, 1596654, 9252433, -4294431, -1545115, -4582193, 7795903, 1704028, 3235721,
--8036958, 15736760, -44826572, 674310, -28991, -1732482, -5452461, 20777442, 1932198, -12411919,
--22352084, 22603876, -20075214, 236760, 14943265, 11532524, -15738371, -4573067, -25497610, -407485,
-7593502, 8684424, 10638634, 2445447, -16537772, -21184390, 17391396, 8572218, 8763344, 3067681,
-8908836, 2310693, 12852690, -22829362, -37933152, 10271414, -5566278, -8424041, 21458730, -4034585,
--11154567, 18497888, 17919140, 14420890, -1181116, -9903121, -16227997, -4554276, -21523154, 50678468,
--4179540, 18043158, 4108673, -17259326, 14069776, -6804839, -16072841, 15602006, 12806519, -28385438,
-19720880, -3326452, 27292370, -27788976, -20562692, 27342836, -980326, -22759568, 23047332, -8749922,
-39257612, -16954920, -13289166, -23967528, 15143518, 2415919, -19064286, 7301445, -24823838, -18595598,
-1791538, 15826954, -14176613, -9137006, -28219546, -26084948, 30324080, -3860639, 13300977, 20789252,
-28780038, -246424, -2743947, -2609193, 7715909, 11103564, 2302103, 4879620, 17785460, 7326141,
-9874130, 5362267, 4583267, -3857954, -1472100, 10436234, 8427263, 13801341, -6562710, 8951249,
-10060961, -15942382, 4128537, 3475702, -8285529, -4758287, 148713, 3468723, -6699075, 10738492,
-790274, -3032784, -3016678, 9035537, 534187, 2499671, 1041530, 2194728, 2328409, -9161165,
--4146254, 6160057, -5499706, -12939126, 33475512, -7656316, 22681722, -35447440, -6193343, -844498,
--42237244, -9315247, 6155762, 20748988, -10366440, -9931038, 959925, -3275986, 29715268, -2837363,
--14875619, 31460636, -3857954, -1628330, 5987722, -12571906, 27250494, 1801739, -5494337, 13037910,
-11222750, -14830522, -5025112, -6870874, 21244518, -42309724, -654446, -8184060, -14867029, 7278359,
--15113990, 24680492, -6382322, -30465814, -3080565, 46389940, -28023588, 20356534, -31249646, -8970576,
-31307628, 22864796, -16729971, 7980586, -20422570, -26917096, 5859409, -11795054, 11882564, 3476239,
--1764158, 4673998, -39398808, -15369004, -20019380, -28798830, 13557064, -10870562, -7907035, -15916612,
--27941446, -23505820, 18647138, -3580392, 57854820, 10240276, 5481452, 20735028, 36448168, 4882841,
--26022134, 31981400, 24259586, -20217484, 5555540, -5010616, -20114406, -15829639, -13533979, -1412507,
--12336757, 4868883, 8675834, 3133716, -9566503, 17123498, 2827162, 8005819, -2132451, -2781528,
-8223252, 5101885, -7929047, -7118372, -6823630, 7975218, 3908957, 9602473, 10171556, 590558,
--5137318, 7777112, -4102231, 16448114, 7908109, -19271518, -3630321, -14150843, 1964411, -4478577,
--6722161, 20562156, -857920, -6088653, 5440113, 6622303, -7166153, -1251983, -9943386, 4778688,
-7607461, -1163936, -2967286, 9713605, 22195854, -13040594, -17223892, 19311246, -30534534, -3309809,
--6471979, 2032593, 21121038, -13726715, 23465016, 10398116, 5162551, 7325067, -38888780, 26517128,
-4685273, -26946624, 10427107, -28598040, 4704063, 38954816, -5018670, -22666154, -24600498, 10656888,
-17369384, 14444512, 7356742, -25285546, -17696876, -7664906, -4949950, 33309082, -21138218, -12317966,
-49032956, -27118960, -2306398, 19755238, -99858, 20797306, -3191698, -16343961, -11300059, -29896730,
-15204721, 21664888, -32328756, 48302276, 15827491, -36018668, -33239826, -31299038, -37956236, -30332132,
-1408749, 15321222, 2803540, -25239912, -9797357, 17219060, -613643, -15733539, 17401596, -34057480,
-2032056, -7677254, -31831076, -29361470, 4978404, -11559368, 22222160, -40800040, -5657546, -14323716,
--30165166, 2250026, 48206712, 12592844, -21529598, 10582263, -26474178, 10877005, -10832981, 1115618,
-1315334, 13869523, -1596117, 4859756, 17099876, 355409, -9669045, -4221953, 13688061, 9946071,
-6240588, 3543348, -27249956, -2600603, 1937030, 15354508, 7485055, -13910325, -376347, 1759863,
-23593866, 1467805, 7506529, -7187628, -4772246, 3632469, 7634841, -841814, -7094749, -13176960,
-1858110, -4919348, -9291088, 4649839, -6506876, -6461242, 9091372, -7264937, -10698227, -14583561,
--13064217, -2308008, 3747896, 136902, -11365020, 23485954, -58794344, -54376972, -47129748, -30462592,
-12326556, -12874164, 60627220, 16004659, -6460705, -13909252, -7647190, 17150878, -39416524, 46153180,
-61091076, 24266028, -3668439, 48269528, -15299210, 29185376, 55529632, -10148471, 3090766, 10380399,
-73896520, -18750216, -4626754, 43879532, 16692927, 14094472, -12064563, -45038636, 3150896, -35699768,
-17073568, -44231720, -51726440, -638340, -2913062, -36166844, -1861868, -17599702, -36998460, -29633126,
--48290464, -2321430, 49409304, -15764141, -9392020, -45519136, -24320252, -16776679, -15548855, 15380278,
--11084774, 82144472, -19377282, -1157494, -29926258, 61991412, 51029044, -36051956, 41518376, -14514842,
--60149408, -10787884, -5698348, 12658879, -13906567, -13694503, -7468412, -24445880, 7179038, 30210264,
--35611720, -5096516, 10466835, 6251862, -41362684, 26986890, 19204946, 62299036, -26380762, 17095580,
-26506390, -1557463, 7477538, -797790, 9366250, -6897718, 20527796, 8585103, 16726213, 13999446,
-1637456, 14422500, 5000416, -5335423, 15697032, -853625, 3133716, 1716913, 11188927, 7876433,
--10514617, -8660802, -13493714, 21721798, -13923747, 3321084, 14013405, 5703717, 24837260, 20786032,
-36672580, 24671902, 21223580, 1553168, 14303852, -18670760, 18236968, 13101261, -3263638, -17913234,
--33101850, -13095892, 10963441, -18771692, -6029061, -13547401, -32282584, -28696288, -12540231, -21267068,
--11651173, -18241800, -22384832, -24683714, -6502044, -6825777, -9855339, -17978734, -18128520, 24444270,
-104953432, 11767674, -65037616, -16661252, -22679574, 4643934, 33114198, 58265528, 17264158, -49568216,
--425739, 33724084, 7929584, 421444, -991601, 8582418, -4156992, -6273874, 41044320, 25095494,
-23182086, -34687228, -21759914, 23175106, 9645423, 13594108, -11350525, 4088809, 45713484, 851477,
-38860864, 19906100, 21485038, 37201932, 6041409, -20019380, 5225365, -22887344, 6340983, 15684684,
-4669703, 61005180, -19757924, -39534100, -37337760, 47114180, 22441204, 25057912, 17859010, -27133992,
--33286534, -20758650, -492311, 10232223, -6746857, 16629576, 31976568, -2180770, 23379118, 20604032,
--31012348, -6279779, 9720048, -14847165, -12721693, -15572478, -51592756, -8804683, 23312008, 2042257,
-46339476, 30493194, -21446920, 16227460, 944893, -15087683, -12125766, -25182466, -55802364, -30015916,
-3002719, 1165547, -11812234, -3214246, -5180805, 18264348, 19568944, 9977209, -2733210, 1599339,
-15002321, -6864432, 9672266, -25213068, -11409581, -3072512, 14328548, -3242700, 6062883, 9237938,
-9476308, 1493575, 25068650, -19237696, -17025788, -17425220, 13370233, -11149198, -17823040, -17786534,
-13514651, -5600101, -12831752, -6542846, 10294500, 2949569, 14779519, -23283554, -15073725, -2231773,
--990527, 5294621, 11579769, -4631586, -8906688, 16627429, -7861938, -9318468, -8329552, 16182363,
--3675418, -7420630, 4983236, -156229, -8071318, 1010928, -10945724, -6163815, -4802847, 316217,
--3374771, 3669513, -2793339, 2523830, -1095217, 3383897, -6021544, 2586644, -2631741, 3051038,
--4184909, 3944391, -6660421, -5881421, -25411174, 2840584, 82349016, 21170968, 34595960, -17229262,
--75185016, -38147900, -55374476, -18682034, 37109056, 85262080, 37982008, 9449465, -40638444, -38254200,
-26800596, 42398844, 20957830, 51498804, -2276870, -33743948, -49428096, -24045374, -7713762, 38254736,
-4591320, 22102976, 19614042, 3311957, 51043540, 35850092, -4056060, -4917738, -47267188, -11503533,
--1119376, 957241, 26897232, 48240000, 29415694, 23155242, 45187352, 26154740, -47141024, -37813964,
--11926050, -29640106, 31307090, 21340618, 46377592, 36216776, 41010496, 12163884, 7165079, -33779380,
--35443680, -33171106, 11596949, 16896402, -191663, -4501663, 73222216, 18569828, -5143224, -6923488,
-50109384, -53500796, 11167452, -101871792, -22874458, 25500294, -35729832, 33272038, 18735722, 528281,
-73136312, 34744676, -41660108, -82677048, -39875012, -37442988, -20441360, -13904957, -10781442, 36168456,
-22868016, 48785996, 5771899, -35888748, -24831354, -37659884, -35161824, -34843996, 15308337, 3282429,
-15139223, 20804284, -9903121, 19241990, 10084046, -13412646, -1667521, -14860587, -4883915, -32129040,
--34109020, -12729209, -14870251, 587337, -31959926, 16979080, -2374580, 5905580, 8857296, -21290690,
--44185012, -39924944, -2216740, 8752606, 9065602, 26242250, 6464463, -13187697, -24899000, 8244727,
-5826660, -118897576, -72671920, -39620536, 35030292, 10004589, 162220912, 173107584, 105195024, 191960336,
-156860800, 166039136, 114993456, 140487840, 113949240, 2132988, -54354420, -77442016, -74491912, -155588416,
--186796720, -195092976, -136268032, -107092328, -42184096, 7495255, -55185496, 33758980, -69548408, -25094958,
--4786204, -21454436, 16460462, -63753420, 87706456, 15042049, 79955112, 51446192, 29886530, 20960514,
-44235480, 28907814, 45368276, 104502456, 99227704, 79223360, 96973384, 122803312, 111686328, 105432320,
-193216080, 67902360, 135947520, 177297328, 121739240, 161067184, 85433344, 114815752, 89635432, 107793480,
-116473608, 43298104, 75413184, 57360900, 70583496, 68472520, 18655728, -13179644, -74035576, -27205934,
--98775656, -86102816, -146102976, -165154384, -166577088, -351179616, -297622976, -319242240, -317061472, -369621120,
--374219968, -230485664, -268580960, -199622032, -236978576, -179799680, -170652480, -148185504, -149100320, -85328112,
--37919728, -54152560, -55202676, -44676788, 8507256, 71534288, 37153616, 148728272, 127667904, 187929520,
-192691568, 178250800, 222058944, 206208896, 238320224, 186738736, 228009072, 242057920, 270083648, 236674704,
-141070352, 141555680, 140898016, 143583440, 132002600, 93261992, 86850144, 36521716, 25468620, -2702071,
-4138738, 18002356, -48973900, -71785544, -78185048, -47844324, -42722576, -80002896, -93439160, -108674480,
--79120280, -100603704, -93316752, -78420200, -84495432, -85924040, -86137176, -22252226, -20294794, -10461467,
--19361176, 11321534, -2672007, -1993402, -18178986, -6362994, 6412386, 11666205, 4030290, 16151225,
-11121818, 19476602, 642098, 3317325, -2473364, 8277476, -2481954, 4155918, -3249143, 3853123,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+-4174171, -6163278, 2082522, -3011846, -6083821, -3896609, 2767570, -7686381, -4258997, -9400610,
+3266860, 4199405, 5347235, 2915209, -3289945, 7120519, -4875325, 1437203, 149250, -1025960,
+-5151814, -2640331, -5666136, 219580, -2408403, 3170760, 2100776, -2705830, -863825, -620086,
+-5200669, -219580, -1155883, 2308545, -92342, 4701379, -1673964, 5949067, -2576981, 73014,
+958315, -4350265, 3022046, -1337882, -1668595, 486942, -1175747, 2273112, -9109626, 4215511,
+5487895, 760746, 3119757, 1662689, -4031364, -573378, -4374961, 5931350, -1574642, -3770981,
+3605088, -5532992, 245887, 2059974, -6214281, 675384, -1447941, -2442763, 2155537, 389231,
+586263, -3024194, -1861332, -10088341, -1197759, 2073396, -1568737, 390842, 1290101, 5232344,
+4606353, 168041, 1570884, 541166, -780610, -845572, -1255741, -816044, -338229, -1125818,
+-827318, -146029, 1069447, 539555, 754841, -1654636, 98784, -159988, -329639, -216896,
+477815, -331786, 163209, -856309, -481573, -776852, 81068, -736587, 1043140, -14274324,
+-8556112, 1568200, -4616016, 865973, -4762582, -8206609, -5439576, 9281424, 5425081, -1457068,
+6311992, 1466195, 1562294, 1750736, -3036542, -846645, 5133560, -4137664, 2339684, 3718368,
+-3979287, -6334003, 2910914, -5180268, 590558, 2944737, 7602092, -1724966, -3641596, -3215320,
+1198296, 4111894, -5587753, -60666, 4628901, 1802276, 503585, -318901, -413391, 5976447,
+-209917, 5473936, 3625489, -1406602, 3612604, -1278290, -307627, -573915, -9998147, 3454228,
+5682242, -3290482, -1847910, 1367410, 1561221, 1595044, 905164, -557809, -1188632, 325881,
+-2499134, 6846178, -3054796, 784905, 3746822, 2964601, -2430952, 2695629, 878321, 1751810,
+3784940, 3308199, -4953708, 5140002, 5732171, -1948841, 119722, -372052, 3752191, -4575751,
+-2351495, 992137, 676994, 165356, 271120, -980326, -1509144, 909996, -700080, -399432,
+292058, 1300838, -943282, -235149, 56908, -1796370, 638876, -1067299, -1071594, -865973,
+699006, 92342, -485331, -1074279, 284542, -5602785, 7177427, 4774930, 11129871, -1809255,
+1154809, 3468186, -5476620, -1081258, 2120103, -2199560, -7422777, -394600, 750546, 4994510,
+-6004901, -14516989, -11801496, -7199439, 2754685, 6963216, -7014756, 3959423, -3464428, 5388037,
+4108673, 3663607, 6363531, 3608846, -5077188, -4605279, 819802, 3464965, -316754, 327491,
+8917963, -36507, 1507534, 4499515, 4658966, 814433, 77309, 11123428, -834834, -4136054,
+-1312649, 2549063, 3175055, -2123325, 5901285, 1196685, 3138547, -4241280, -3845606, -1431835,
+-2565169, 1468879, -2049236, 6517613, -7562901, -6669548, 8036421, -829466, -409096, -9402220,
+2857227, -4551055, 5011690, -3903052, -10509248, -462783, 5293547, -4452808, 6862821, -4160750,
+3117610, 6496138, -1914482, 2724083, 6444062, -416612, -4902169, 413391, 3103114, 1486059,
+-2419677, 4502200, 209917, 2376191, 802085, 650151, 1609002, 311922, -773094, -45634,
+139586, 687732, -1912334, -923955, -1046361, 1724429, 106300, 1756105, 1727651, -1708323,
+312996, 439160, -1090385, -738198, -460635, 321049, -1003949, 351650, 17353278, 4138201,
+4598836, 2032056, -4012036, 8388608, -3986804, -2322504, 10583336, -758062, 8504572, -860604,
+-9800578, 3495030, -3346853, 10814728, 5638219, -710817, -9679783, -6705518, 8878771, 10609643,
+-12370043, 6222871, 4913980, 3757560, -839666, 1238561, 996432, -896574, 12184822, -515396,
+-2126546, -3329137, -4131222, -5189931, -1757715, -238908, -7074348, -2467996, 1803886, -4866735,
+239444, 321049, 7277822, -2703682, 195421, 3439732, 255014, 7027640, 3121904, 7305203,
+3560528, 2251100, -7718593, 845572, -5727876, -5287105, 1241246, 7448010, -322123, 6401649,
+-2700461, -4776004, -1149978, 341450, 1841467, 4406100, -2051921, -4832, -2422362, 2476049,
+1640141, -6233608, 1188632, 1334661, 801548, -1731409, 6527277, -663572, -1312113, 734439,
+3047279, 1382443, -2183991, -666257, -902480, -1546725, 1258425, -1855426, 3064459, -1837709,
+-396748, 404264, -1491427, -392453, 1691680, -1998770, -490700, -2154463, 819802, 936840,
+1728188, -2356863, 446677, -950798, 1178969, -790274, -2876554, -894427, 4908611, 3436511,
+3948686, 11185169, 5856188, -4855461, -4336843, -12039867, -777389, -266825, -6420439, 2443837,
+9667971, 1173063, -7606387, 7071664, 6724308, -697395, 2692945, 6811818, 1621350, -6181532,
+-945967, 14430016, 7105487, 1497333, -9506373, -3400004, 8691940, 2993055, -1285269, 4895189,
+4381941, 4584341, -24696, 8961986, -68183, -1139240, 2269890, -4438849, -5814312, -284542,
+1000727, 3339337, 1843615, -5435281, 5546951, 9720048, 4999879, -254477, 7226820, -8196408,
+4699768, -4877472, 5162551, -1357210, -5888400, -286152, -7676181, -12582644, -4578972, -4990215,
+-593779, -37044, -6574521, 1296006, -2005750, 3843996, 2546916, 4549981, -700080, 1843078,
+-6327561, 1120987, 1030255, 8871255, -3394635, -257161, -3047279, 1891933, 7986492, 4114579,
+-4595615, -7369090, 2365453, -2932389, -985695, 3874061, -514859, 1320166, 935229, -4374961,
+241592, -3330747, 987306, -3161633, -2116345, -1131724, -99858, -397821, 616328, -2011118,
+-176094, -654446, -1593433, -1341104, 529355, -322123, -805843, 256087, 797790, 2487323,
+-825171, 1472637, -1016834, -2424509, 1872606, -2655364, 2639258, -200253, -1694365, -249645,
+-11778948, -7809861, 16695612, -3662533, -3646964, 968515, -571231, 17875118, -5214627, -9660455,
+249645, -9529996, 2387465, 7582765, 8176544, 2571612, -16586627, 13637595, -10727755, 5698885,
+-7329362, -5589900, -4096862, 6805913, 7340636, -10991895, 883690, 4790499, -3395172, 2193118,
+3238405, -3977140, 521839, -9053254, -6066105, -13969918, 8282845, -1959042, 14090714, -6563247,
+3068754, 9395241, -2335389, -2796561, -4148402, 10769630, 7879118, -13232257, 3787088, -7485591,
+-2499134, -2909304, -7416872, 4459787, 2379412, 11647414, 8211978, -14636175, -2386391, -6287832,
+8561480, 2973728, 747324, -8540542, 1290638, -899796, 7196755, -1202054, 911070, -9821516,
+-213138, 6971806, -6419903, 1078574, -2018635, -1917703, -5186710, 1044751, -673773, 12360916,
+5461051, 5653251, -2253784, -1381369, -2138894, -3367791, -1797981, 2757906, -3774740, -1203665,
+-3702799, 2806224, 2363843, -2018098, -1128503, 2609730, -3486977, 1733556, 538482, -938450,
+-1103807, 938450, -91268, -315680, -664646, 2283312, -3365644, 450435, 308164, 1710471,
+1851131, 1851668, -1707250, 510027, -1204202, 2473364, 578747, 1813550, 4061429, -4477504,
+297427, -9448391, -1192927, -10904385, 1695975, -2729452, 6250251, -438624, 5300527, -7470559,
+-14081050, 2986613, 9452149, 1236951, -1155883, 7382512, 4953708, -11505681, -200253, -4338454,
+14548128, -649077, 1679332, 1142461, 131533, -457951, -5243618, 11540040, -999654, -16364899,
+-3091840, 9912785, -6409165, 1650341, -281857, 1321776, -2070711, 1575179, -3033321, 3906273,
+-6299644, 5905580, 8267275, -6505802, -1683090, -3853660, -11420318, 4555350, -8116952, 7034083,
+-7138773, -12302397, -3389266, 7299834, -2313377, -4400194, 4853313, 6749004, 3833258, 7397008,
+12636331, 10195715, -692027, 1976759, 1692754, -6808060, 1260036, -7118909, -7783018, 4216048,
+-5946919, 1911261, -389768, 4444218, 4487167, -5890548, 6788196, -1881733, -2843805, -1272921,
+4759361, -896574, -4480725, -3038153, -6327561, 7166153, -3651259, -958315, 1189169, -312996,
+-2710661, -2281165, 431644, 934692, 261993, -1272384, 1604707, 1202591, -1467268, 111669,
+1010928, 635118, -918049, -39192, -1213865, 432181, -1994476, -1800128, 1032940, 534187,
+2326799, 2595771, 159451, 1779190, -42413, -16176457, -13372381, 7764227, 14508936, -77309,
+-745177, 2673080, -6817187, -3430605, -16536698, -8936216, -4606353, -230318, -11996381, 17243220,
+3554086, 9562745, -10925323, -13245679, -9793062, -3934190, 2751464, -15025943, -6577743, 6846178,
+-2848100, -18260054, -6048925, 2371359, 311922, 11199664, 3913252, -3622805, -8500814, 10649908,
+-6104759, -705448, 8209293, 2314451, -8681203, -4598836, -558883, -14795089, 3832185, 11369315,
+-4855461, -6391985, 1797444, -7522635, -2622078, 1408212, -4618164, -3700114, 4010426, -5622649,
+-11608760, 5737540, -6562710, -8822400, -11897059, -6078453, 1334124, -4866735, 2136209, 14739254,
+8497056, -1858647, 14246943, 14273250, -6063420, 1940788, 4122095, -7474317, -4674535, -15771120,
+1765768, -5082557, -12565464, -172336, 6842957, 11788611, 7431904, 3433826, 1472637, -10723460,
+-1186485, -2473364, 2955474, -4075387, -311385, 219580, 4295, 2544768, 658204, -994822,
+2456185, -974958, -3206193, 2689187, -2094333, -3042984, 624918, 1092532, 1180042, 223875,
+3449396, -348429, 2269353, 1218160, 420907, 652298, 153008, -2560338, 748398, -3514894,
+989453, -5608691, -1218697, -250182, -3516505, -4392678, -396748, -4341138, -627602, -923955,
+-10186052, 26036092, -971200, 15943992, -7992398, -22892712, 6580964, 1925219, -845035, -10753524,
+-991601, -7096360, 18153216, 13214004, 11900281, 8619999, -14131516, -122943, 2006824, 12559021,
+-21482890, -2483028, -5215701, -6333466, 3292093, -7135015, 2822331, 4758824, 3623879, 3795141,
+5049808, -1537061, -2062121, -10514080, -2437394, -1639067, 10345502, -40265, -9358734, -2254321,
+11252814, -1343251, 6571837, 8329552, -6008123, -3630321, -13815836, -8104604, 27215598, 7113540,
+12145094, 6454799, 1634235, 981937, -17149268, 10161356, 1673964, 2955474, 8847096, 9544491,
+14981920, -17213156, -7031399, -9569187, -1142998, 2344515, -2207076, -4851166, -2757369, -14440754,
+-18041546, -11792906, -16904992, -2238215, -11027865, -19031536, -7968775, 6138582, 10466298, -3991098,
+-16185584, -610422, -2393371, 3816079, -4407174, 1014149, 9398462, 399432, -627065, -609349,
+1247151, 1614371, -2701535, -2509872, -6471442, -7345468, 3955665, -2034741, 3545496, 3131031,
+-1134945, 2125472, 2932926, 5237176, 3786551, -2309619, 1210107, 6681896, 1344325, -6798933,
+-5553393, -3080565, -1364726, 492311, -2334852, 3864397, 4330401, -1045825, 6509023, 836982,
+-1756642, -1399623, 1546188, 35039952, 7927436, -5056250, -7277285, 1125818, -11251741, -21974664,
+16168404, 70330, 10402948, -7872675, 7523172, 17985712, -1788317, 2004139, -4539781, 15652471,
+13171591, 5109938, -21226266, 1529008, 3109556, 13103945, 19068044, -5641977, -3919695, -2533494,
+5101348, 6802155, 5648956, -9662603, 4392678, -11137387, 8491150, 11345693, -5450314, -11267310,
+7081864, -12259984, -11223286, -489626, 3228205, 15929497, 1899986, -2208150, 13562433, -2544768,
+12177843, 22530324, 11275900, 230318, -14353781, -1391033, -8282845, -6716792, 14377403, 5599564,
+-14559939, -202400, -11140608, -2849174, 19067508, 8752070, 2746632, 8143258, 11467026, 5927592,
+-15445776, 7900056, 12810814, 4365298, -10570988, 4298189, 1176821, 2159295, -8284455, 12660490,
+-3545496, -3100967, 15229417, 16145319, 2338073, 4558571, 17554606, 984084, 8639864, -6227166,
+-242129, 10087804, 5820755, -4547297, 5179194, 9097278, -2535641, 16106, 11611444, 2351495,
+4909685, -3513820, -5891622, -1831267, 3198677, 1633698, 2626373, 2695092, -1968169, -1888175,
+-1576253, 834834, 3437585, 4161823, -2899103, -920734, 7210713, 999117, 9687836, -1821603,
+2593087, -1392106, 1186485, 4322348, 2618856, 286689, -130460, -4198868, -2961380, -2158758,
+-4479114, 5595269, 5106716, -8550206, -396211, -10910291, -25550224, 8809515, -10152766, 2801929,
+949188, 17910014, -12312061, -10954851, -4544076, -5024575, -6555731, 13228499, -11689827, -16595754,
+5010080, -30994094, 964757, -5850283, -13043816, 16648904, -1006633, -996969, 7074348, -6613713,
+5334887, -1682554, -18432926, -20200842, -132607, 4262218, 11909407, 5718212, -1274532, -2126546,
+-11558831, -5505611, 11760157, -18261664, 25288230, 14982457, 3451543, 18654654, -12358232, -5314485,
+-11304891, -11630235, -4948876, 8534637, 23895588, 237834, -12205760, -2042257, 1255204, -1298691,
+-1176821, -7528541, 6518150, 5934034, 16149077, -254477, 18248242, 9395778, 5091147, -406948,
+3977677, -27052388, 14401025, -3394635, -15749645, 11375221, 98247, 14959371, 6725919, -25050396,
+19604916, 15284178, -13023951, 21228950, 8262980, 15882789, 6388764, -2116345, -755914, -577673,
+-2833605, -5441187, -1567126, 2435247, -5403606, -8316668, 210453, -5384279, -9754944, -5793374,
+-7270306, 4816269, -4413079, 5901285, 1687922, 6025302, 2934000, -510027, -3006477, 1161252,
+712965, -293132, 976031, -1581622, -3949223, 2150705, -216896, 2595771, 2774549, 297427,
+2372970, 1229434, 3975529, 3482145, -5788542, -3355443, -9680319, -7333120, -47755740, -3896072,
+28542742, -5433134, 992137, 24598352, -5611912, 79994, 3178276, 6407018, -7311645, 6391985,
+-2416993, -8492224, 8145943, 9213779, -27844810, 3093987, -24763708, -890132, -12756590, -14290430,
+-2936147, -4446365, -13518946, 6633577, 2413235, 8423505, 11937862, -17206712, 21531744, 1260573,
+-19845434, 1427003, -13649943, -7192997, -14692546, -13741211, -5673115, 13952738, -12042015, 6532646,
+14511621, -8820252, -15130633, -14334453, -20517058, -22536230, -12932147, -6576132, 1915019, -3598109,
+6327024, 4002910, -13050258, -1193464, 15064061, 8322036, -21807160, 8408472, -1487669, -6351720,
+-20189568, 13528073, -7123740, 18757196, 24199994, 401579, 23028004, -12795781, 13437342, -10120554,
+14436996, 17907330, 1766842, -24103356, -541703, -32810866, 10748693, 6825777, 13138842, 5909338,
+-12566001, -11331734, -2684, -7676717, 7578470, -8286066, -61203, -734439, -7792682, -6507413,
+5725729, -3374771, -8837969, -1098975, 3054796, 6520297, 3860639, 14418742, -1280437, 997506,
+-4118337, 10042170, -1205275, -2466922, 9273371, -736050, 1608465, 1906429, 12421582, -2194728,
+-4678293, 1020592, 8669928, 7694434, -7713762, -1017907, 5829881, -9498857, 5462662, -1735704,
+6922951, 150861, -7575786, -22575958, 18204218, -43256764, -2794950, -3952981, -3853660, 4215511,
+-25177636, 1924682, -5150203, -1960116, 11150272, 4648765, 13008919, -10074920, 9131637, -4729833,
+-22411140, -8778376, -16519518, -9968619, 10473815, -19213000, 2278480, -7031399, -14918032, -2480881,
+14072460, -19111530, -18772228, 7705708, 10855530, -498753, -9025337, 10496900, 10695005, 13541495,
+11295227, 4907000, 15560130, 18875844, -10362145, 2917357, -9175124, 23646480, -2198487, -16196859,
+19347218, 8707509, 4423280, -9242770, -12694313, 2978560, 7171522, 7598334, -973347, -10178536,
+7476465, -11869142, 20938, -11716134, 36048196, 5674726, -10790032, 29931090, -3995930, 9190693,
+-8086887, 15051713, 21961242, -13817984, 20957830, 22655952, 29171418, 22711788, 1750199, 16870632,
+-13575318, -2583960, 2789581, -7299834, 12651900, 598074, -1236414, -1294933, -4200478, 6356015,
+2798171, 17894982, -6287296, 6605660, -4364224, 100932, 2938295, 5260798, -7985955, 2760053,
+7041599, -3281355, -8925479, -1676111, -14049912, 4662724, 3755949, 3641059, -4065724, 2202245,
+6636262, 3970697, -2226404, 6789270, 2563022, -4520990, -2793876, -1495722, 10657961, 14487462,
+7207492, 3288871, 2067490, 4902705, 8088497, -5869610, -2901787, 3824132, -1495186, 705985,
+3396782, 44707924, 11780558, -7710540, -6438156, 10326175, 3099356, 4356171, -944893, -17978734,
+15176804, -40944460, 4631049, 8897025, -1645509, -7548942, -15502684, -7277285, 2043331, 12037183,
+18706194, -11051488, -23617488, -19315004, -2560874, 623844, -13852343, 28754270, -13282723, -8898098,
+12077985, -4140885, 2312303, -2674154, 24917790, 4042638, -24645060, 9741523, 3313567, 17082696,
+-5963562, 1769527, -10095858, 8440148, 3947075, 21558052, -5110474, 9678172, 10434623, -13178570,
+-14264123, 934692, 13307956, -25577604, -29979408, -8964670, -12218108, -1722282, -4211753, 2903935,
+6995428, -6206228, 1192390, -34900904, -29406568, 23416698, 25132538, -30243550, -23015120, -29111826,
+-15033996, -12110734, 15190762, -15937550, -27828166, 724239, 1355062, -17214228, -3500398, 24270860,
+-3532611, 1257352, 7976291, -346819, 1530619, -1171452, -8494372, -10799158, -447213, -3134253,
+7137699, -1225139, -553514, -7844221, 4002373, -12082280, -170188, 3568581, 4086125, 5669894,
+6631967, 1118302, 3797288, -2761127, 712428, -6196564, 2309619, 521839, -6807523, 6973953,
+7141994, -11181947, 758062, 8003672, 6753299, 12420509, -2534031, -14635638, 4096862, 4660040,
+-7130720, 4525285, -7952132, -3855270, -1209570, -2621541, -6766184, 2374043, -24939264, -3034931,
+-6041409, 7509751, -11818139, -3206193, -38778184, 34339336, 22052510, -3717294, 47071232, -4613869,
+-25831008, -2369748, 10558103, -15950435, -21071110, -4415764, -14388140, -665720, 3990025, -21625160,
+31738198, 1069984, 3399467, -19950124, -5771899, 2163053, -5724655, 5103495, 7211787, 26112328,
+4654671, -1323924, 21071110, 17413944, -6190659, 10274099, -13348221, 3767760, 11774653, 11481521,
+29485488, -29169808, 17906256, 54130548, 365609, 8893804, 18488760, 2124398, 3651796, 8751533,
+6707665, -18080738, -21590800, -7831873, 17301738, 5174362, -22437982, -12130598, -1019518, -10756209,
+19880330, 1833414, 15343234, -34166464, -21211232, 9967545, 23393076, 14359149, 9396315, 32494648,
+18931678, -13644574, 22332220, -16863652, -3486977, -2423972, 12528420, -2651069, -14024679, 12131135,
+5219996, 1160178, -16080358, 11094974, -311922, 215285, -7219303, 9350144, -7703561, -6159520,
+-5927592, 4456029, -6185290, -11735461, 3853660, 823023, -169114, -6388227, -1332514, -7999914,
+-6942278, -6398965, -4132296, -2470680, -3106872, -2436857, 1027571, 226560, -15260556, 10179072,
+3900367, -4792647, -11326366, -15976205, -506269, -8704288, -5985037, 5767068, -4336307, 9893457,
+4807679, -3492882, 1596654, 9252433, -4294431, -1545115, -4582193, 7795903, 1704028, 3235721,
+-8036958, 15736760, -44826572, 674310, -28991, -1732482, -5452461, 20777442, 1932198, -12411919,
+-22352084, 22603876, -20075214, 236760, 14943265, 11532524, -15738371, -4573067, -25497610, -407485,
+7593502, 8684424, 10638634, 2445447, -16537772, -21184390, 17391396, 8572218, 8763344, 3067681,
+8908836, 2310693, 12852690, -22829362, -37933152, 10271414, -5566278, -8424041, 21458730, -4034585,
+-11154567, 18497888, 17919140, 14420890, -1181116, -9903121, -16227997, -4554276, -21523154, 50678468,
+-4179540, 18043158, 4108673, -17259326, 14069776, -6804839, -16072841, 15602006, 12806519, -28385438,
+19720880, -3326452, 27292370, -27788976, -20562692, 27342836, -980326, -22759568, 23047332, -8749922,
+39257612, -16954920, -13289166, -23967528, 15143518, 2415919, -19064286, 7301445, -24823838, -18595598,
+1791538, 15826954, -14176613, -9137006, -28219546, -26084948, 30324080, -3860639, 13300977, 20789252,
+28780038, -246424, -2743947, -2609193, 7715909, 11103564, 2302103, 4879620, 17785460, 7326141,
+9874130, 5362267, 4583267, -3857954, -1472100, 10436234, 8427263, 13801341, -6562710, 8951249,
+10060961, -15942382, 4128537, 3475702, -8285529, -4758287, 148713, 3468723, -6699075, 10738492,
+790274, -3032784, -3016678, 9035537, 534187, 2499671, 1041530, 2194728, 2328409, -9161165,
+-4146254, 6160057, -5499706, -12939126, 33475512, -7656316, 22681722, -35447440, -6193343, -844498,
+-42237244, -9315247, 6155762, 20748988, -10366440, -9931038, 959925, -3275986, 29715268, -2837363,
+-14875619, 31460636, -3857954, -1628330, 5987722, -12571906, 27250494, 1801739, -5494337, 13037910,
+11222750, -14830522, -5025112, -6870874, 21244518, -42309724, -654446, -8184060, -14867029, 7278359,
+-15113990, 24680492, -6382322, -30465814, -3080565, 46389940, -28023588, 20356534, -31249646, -8970576,
+31307628, 22864796, -16729971, 7980586, -20422570, -26917096, 5859409, -11795054, 11882564, 3476239,
+-1764158, 4673998, -39398808, -15369004, -20019380, -28798830, 13557064, -10870562, -7907035, -15916612,
+-27941446, -23505820, 18647138, -3580392, 57854820, 10240276, 5481452, 20735028, 36448168, 4882841,
+-26022134, 31981400, 24259586, -20217484, 5555540, -5010616, -20114406, -15829639, -13533979, -1412507,
+-12336757, 4868883, 8675834, 3133716, -9566503, 17123498, 2827162, 8005819, -2132451, -2781528,
+8223252, 5101885, -7929047, -7118372, -6823630, 7975218, 3908957, 9602473, 10171556, 590558,
+-5137318, 7777112, -4102231, 16448114, 7908109, -19271518, -3630321, -14150843, 1964411, -4478577,
+-6722161, 20562156, -857920, -6088653, 5440113, 6622303, -7166153, -1251983, -9943386, 4778688,
+7607461, -1163936, -2967286, 9713605, 22195854, -13040594, -17223892, 19311246, -30534534, -3309809,
+-6471979, 2032593, 21121038, -13726715, 23465016, 10398116, 5162551, 7325067, -38888780, 26517128,
+4685273, -26946624, 10427107, -28598040, 4704063, 38954816, -5018670, -22666154, -24600498, 10656888,
+17369384, 14444512, 7356742, -25285546, -17696876, -7664906, -4949950, 33309082, -21138218, -12317966,
+49032956, -27118960, -2306398, 19755238, -99858, 20797306, -3191698, -16343961, -11300059, -29896730,
+15204721, 21664888, -32328756, 48302276, 15827491, -36018668, -33239826, -31299038, -37956236, -30332132,
+1408749, 15321222, 2803540, -25239912, -9797357, 17219060, -613643, -15733539, 17401596, -34057480,
+2032056, -7677254, -31831076, -29361470, 4978404, -11559368, 22222160, -40800040, -5657546, -14323716,
+-30165166, 2250026, 48206712, 12592844, -21529598, 10582263, -26474178, 10877005, -10832981, 1115618,
+1315334, 13869523, -1596117, 4859756, 17099876, 355409, -9669045, -4221953, 13688061, 9946071,
+6240588, 3543348, -27249956, -2600603, 1937030, 15354508, 7485055, -13910325, -376347, 1759863,
+23593866, 1467805, 7506529, -7187628, -4772246, 3632469, 7634841, -841814, -7094749, -13176960,
+1858110, -4919348, -9291088, 4649839, -6506876, -6461242, 9091372, -7264937, -10698227, -14583561,
+-13064217, -2308008, 3747896, 136902, -11365020, 23485954, -58794344, -54376972, -47129748, -30462592,
+12326556, -12874164, 60627220, 16004659, -6460705, -13909252, -7647190, 17150878, -39416524, 46153180,
+61091076, 24266028, -3668439, 48269528, -15299210, 29185376, 55529632, -10148471, 3090766, 10380399,
+73896520, -18750216, -4626754, 43879532, 16692927, 14094472, -12064563, -45038636, 3150896, -35699768,
+17073568, -44231720, -51726440, -638340, -2913062, -36166844, -1861868, -17599702, -36998460, -29633126,
+-48290464, -2321430, 49409304, -15764141, -9392020, -45519136, -24320252, -16776679, -15548855, 15380278,
+-11084774, 82144472, -19377282, -1157494, -29926258, 61991412, 51029044, -36051956, 41518376, -14514842,
+-60149408, -10787884, -5698348, 12658879, -13906567, -13694503, -7468412, -24445880, 7179038, 30210264,
+-35611720, -5096516, 10466835, 6251862, -41362684, 26986890, 19204946, 62299036, -26380762, 17095580,
+26506390, -1557463, 7477538, -797790, 9366250, -6897718, 20527796, 8585103, 16726213, 13999446,
+1637456, 14422500, 5000416, -5335423, 15697032, -853625, 3133716, 1716913, 11188927, 7876433,
+-10514617, -8660802, -13493714, 21721798, -13923747, 3321084, 14013405, 5703717, 24837260, 20786032,
+36672580, 24671902, 21223580, 1553168, 14303852, -18670760, 18236968, 13101261, -3263638, -17913234,
+-33101850, -13095892, 10963441, -18771692, -6029061, -13547401, -32282584, -28696288, -12540231, -21267068,
+-11651173, -18241800, -22384832, -24683714, -6502044, -6825777, -9855339, -17978734, -18128520, 24444270,
+104953432, 11767674, -65037616, -16661252, -22679574, 4643934, 33114198, 58265528, 17264158, -49568216,
+-425739, 33724084, 7929584, 421444, -991601, 8582418, -4156992, -6273874, 41044320, 25095494,
+23182086, -34687228, -21759914, 23175106, 9645423, 13594108, -11350525, 4088809, 45713484, 851477,
+38860864, 19906100, 21485038, 37201932, 6041409, -20019380, 5225365, -22887344, 6340983, 15684684,
+4669703, 61005180, -19757924, -39534100, -37337760, 47114180, 22441204, 25057912, 17859010, -27133992,
+-33286534, -20758650, -492311, 10232223, -6746857, 16629576, 31976568, -2180770, 23379118, 20604032,
+-31012348, -6279779, 9720048, -14847165, -12721693, -15572478, -51592756, -8804683, 23312008, 2042257,
+46339476, 30493194, -21446920, 16227460, 944893, -15087683, -12125766, -25182466, -55802364, -30015916,
+3002719, 1165547, -11812234, -3214246, -5180805, 18264348, 19568944, 9977209, -2733210, 1599339,
+15002321, -6864432, 9672266, -25213068, -11409581, -3072512, 14328548, -3242700, 6062883, 9237938,
+9476308, 1493575, 25068650, -19237696, -17025788, -17425220, 13370233, -11149198, -17823040, -17786534,
+13514651, -5600101, -12831752, -6542846, 10294500, 2949569, 14779519, -23283554, -15073725, -2231773,
+-990527, 5294621, 11579769, -4631586, -8906688, 16627429, -7861938, -9318468, -8329552, 16182363,
+-3675418, -7420630, 4983236, -156229, -8071318, 1010928, -10945724, -6163815, -4802847, 316217,
+-3374771, 3669513, -2793339, 2523830, -1095217, 3383897, -6021544, 2586644, -2631741, 3051038,
+-4184909, 3944391, -6660421, -5881421, -25411174, 2840584, 82349016, 21170968, 34595960, -17229262,
+-75185016, -38147900, -55374476, -18682034, 37109056, 85262080, 37982008, 9449465, -40638444, -38254200,
+26800596, 42398844, 20957830, 51498804, -2276870, -33743948, -49428096, -24045374, -7713762, 38254736,
+4591320, 22102976, 19614042, 3311957, 51043540, 35850092, -4056060, -4917738, -47267188, -11503533,
+-1119376, 957241, 26897232, 48240000, 29415694, 23155242, 45187352, 26154740, -47141024, -37813964,
+-11926050, -29640106, 31307090, 21340618, 46377592, 36216776, 41010496, 12163884, 7165079, -33779380,
+-35443680, -33171106, 11596949, 16896402, -191663, -4501663, 73222216, 18569828, -5143224, -6923488,
+50109384, -53500796, 11167452, -101871792, -22874458, 25500294, -35729832, 33272038, 18735722, 528281,
+73136312, 34744676, -41660108, -82677048, -39875012, -37442988, -20441360, -13904957, -10781442, 36168456,
+22868016, 48785996, 5771899, -35888748, -24831354, -37659884, -35161824, -34843996, 15308337, 3282429,
+15139223, 20804284, -9903121, 19241990, 10084046, -13412646, -1667521, -14860587, -4883915, -32129040,
+-34109020, -12729209, -14870251, 587337, -31959926, 16979080, -2374580, 5905580, 8857296, -21290690,
+-44185012, -39924944, -2216740, 8752606, 9065602, 26242250, 6464463, -13187697, -24899000, 8244727,
+5826660, -118897576, -72671920, -39620536, 35030292, 10004589, 162220912, 173107584, 105195024, 191960336,
+156860800, 166039136, 114993456, 140487840, 113949240, 2132988, -54354420, -77442016, -74491912, -155588416,
+-186796720, -195092976, -136268032, -107092328, -42184096, 7495255, -55185496, 33758980, -69548408, -25094958,
+-4786204, -21454436, 16460462, -63753420, 87706456, 15042049, 79955112, 51446192, 29886530, 20960514,
+44235480, 28907814, 45368276, 104502456, 99227704, 79223360, 96973384, 122803312, 111686328, 105432320,
+193216080, 67902360, 135947520, 177297328, 121739240, 161067184, 85433344, 114815752, 89635432, 107793480,
+116473608, 43298104, 75413184, 57360900, 70583496, 68472520, 18655728, -13179644, -74035576, -27205934,
+-98775656, -86102816, -146102976, -165154384, -166577088, -351179616, -297622976, -319242240, -317061472, -369621120,
+-374219968, -230485664, -268580960, -199622032, -236978576, -179799680, -170652480, -148185504, -149100320, -85328112,
+-37919728, -54152560, -55202676, -44676788, 8507256, 71534288, 37153616, 148728272, 127667904, 187929520,
+192691568, 178250800, 222058944, 206208896, 238320224, 186738736, 228009072, 242057920, 270083648, 236674704,
+141070352, 141555680, 140898016, 143583440, 132002600, 93261992, 86850144, 36521716, 25468620, -2702071,
+4138738, 18002356, -48973900, -71785544, -78185048, -47844324, -42722576, -80002896, -93439160, -108674480,
+-79120280, -100603704, -93316752, -78420200, -84495432, -85924040, -86137176, -22252226, -20294794, -10461467,
+-19361176, 11321534, -2672007, -1993402, -18178986, -6362994, 6412386, 11666205, 4030290, 16151225,
+11121818, 19476602, 642098, 3317325, -2473364, 8277476, -2481954, 4155918, -3249143, 3853123,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
5507222,
-95026, -2029909, -478889, -4906464, -3393561, 2198487, 179852, -3085397, 3838627, 2594697,
--850940, 245350, -538482, 3112778, -4320200, 1626719, 3208878, 2856690, -6210523, -4330401,
--3093987, 4172024, 991064, 1369558, -1742146, 4449049, 1650341, -1090922, 100395, -1254131,
-853625, 1672890, -1003412, -1266479, -3747359, 3979287, 6593312, 791348, 4181151, -769873,
-827318, 1516660, 1807644, -5006858, 334471, -5231270, -1221918, -735513, 1629403, -2636036,
--106837, 1153199, 506806, -3049427, 99321, 351114, 2478733, -3243237, -4096325, -545461,
-5507222, 8872866, -4295, 1454920, 593779, -1899986, -5353140, -1356673, 3695283, -1701881,
-3680787, 1434519, 3748433, -206158, 1443646, 1333587, -3206193, -4307316, -476205, 1623498,
-2449205, 1195612, 1082332, 736050, 808528, -1480153, -2374580, -1606855, -1303523, -620086,
-20938, -891206, -144955, 781684, 1246614, 1115618, -201863, 71941, 729071, -25233,
--956167, 2522220, -5564130, -1262720, -5277441, 3051038, 341450, -2432562, 11248519, -4396973,
--8061654, 613643, 3732327, -681826, -6067178, -1729261, -2637647, -994822, -2878165, -948114,
-4170950, -294742, -2724083, 4784594, 701690, 4647692, -1239098, -1145146, 1786706, 117575,
-2081449, -875100, 4386236, 7167227, -1978369, -4825933, -3535295, 2953864, -11274, -11047193,
--1051730, -4405026, -1641214, 5401995, -3776887, -2872260, 3725884, -2442226, -535797, 4953708,
-1707786, -3914326, 1749125, -2820720, -6525666, 2081449, 2556579, -4956929, -2869038, -1435593,
--2084670, -49392, 2120640, 3379066, 5119064, 5724118, -1370095, 583579, -2263448, 2467459,
-1570347, -1275068, 2394981, 3676492, -3517041, -1794760, 590558, 68719, 1414118, 4224101,
--536334, -1133871, 3828427, 560493, -2660195, -1665374, -204548, -1633161, 1169842, -679142,
--1472100, 599685, -1669669, -1315334, 825171, -1677185, -1136556, 46708, 1108638, -2075006,
-236223, -505732, -725313, -1001264, -96100, -1619203, -462783, -1550483, -9055939, -4599373,
-2782065, 4012036, 1562831, 4352413, -3724274, 4555350, 5587753, -1570347, 6183679, -843961,
-4554276, -2165737, 137439, -1942399, 5824513, 2274722, -239444, 5206574, -2775623, -2201708,
-3806952, -9043591, -1578401, 495532, -1928977, -8059506, -4927938, 3345243, -3162707, -2100776,
-111132, 6307697, -1519882, -4413079, -353261, 1624035, 3561065, -541166, -5724118, -3685619,
--1057636, -2929168, 944893, -4977330, 2465848, -4683125, -6890738, 221191, 2407866, 2800856,
--2209224, -1581085, -4525285, 5845988, 3373160, 816581, 52613, -162135, -1991791, -1063004,
-1969779, 2496987, 8812736, -992674, 2212982, 580357, -272194, -4317516, -3289408, 5979668,
--2578591, 588947, 1476395, 866510, -947040, 4519916, 231391, 165893, -4912369, 4740034,
-2649995, -1831267, -1099512, -530965, -1433445, 655519, 3408594, -46708, 1348083, 1035087,
--489626, 792958, 1756105, -184147, -8053, 543313, 812286, 707596, 998580, 1826972,
-673236, -1341104, 1394254, 651224, -998043, -773631, -171262, 208843, 2193118, 2699387,
-2410551, 5767068, -3825742, -5709086, -4613332, 2891050, 6372658, -1191317, 4880157, -4350802,
--5291937, 4364761, -2206540, 445066, 1624035, 5471789, 2026688, 8692477, -3797288, -4645007,
-2024540, -2576444, -2430952, 4924180, -7699803, -4750771, 765041, -1493575, 3498788, -2617783,
-959388, 6180458, -5765457, 4296041, -3481071, 2781528, -3261491, -930934, -530428, 6405944,
-1202054, 223875, -4696547, 227096, -5587216, 2091112, 1375463, -3734474, -92342, -1547799,
-9669582, 1299228, 617402, -8396124, -4923107, -7081328, 5527623, -3608846, -399432, 2913062,
-12337830, 8709657, -3483219, -7592429, -3161633, -6591701, 6970732, -1337882, -1925756, -3050501,
--2023467, -571768, -3183108, -2110440, -526134, -2583423, 1861868, -1807108, 2609730, -9595494,
-662499, -791348, -3023120, -1421634, -3209951, -644782, -5024575, 412317, -2073932, -168041,
-3074123, -966905, -1060320, -2150705, -2374043, -670552, 705985, -133681, -181999, -855772,
--344671, -1012539, -136902, 246961, 624918, -716723, -817654, -1140851, -1007707, -872952,
--1531156, -4867272, 3497714, -5036386, -8943733, 9124121, 4140885, -9587978, 9588514, -1545115,
--548682, -13470091, 8027294, 5336497, -10875931, 3232500, -1783485, 4118337, 967978, 4747013,
-3063922, 1206349, -5049271, 466004, 1881196, -6702297, -2836289, -7907572, -1336809, -4918275,
--2610266, 891206, -6167573, -2285996, -9097278, 3441880, 927713, 780610, 824097, -3927748,
--7915625, -2484639, 2816425, -1291711, -663036, 8308078, -12305618, 5177046, 6324340, -918049,
-421981, -2403571, -949188, -4001299, -6065568, -4158602, -4773320, -3214783, 3087545, 1688459,
-2752000, 4156992, -964757, -2222109, 5964636, 11337103, 8027831, -174483, -9626632, 2649458,
--1453310, 1416266, 10255845, -70330, 10331007, 9190693, -1233729, -3087008, -2443837, 716186,
-916439, 3423089, 10475425, 2781528, 443992, -1079111, -6448357, 764504, 2026688, -2199023,
--290447, 324807, -55835, 1197759, 938450, 732292, -784368, 1258425, 1188632, 1124208,
-1316408, -3514894, -533113, -2527052, 1031866, -1975685, 858457, -568546, -875636, -2114198,
-428423, 519691, -3043521, -985695, 748935, 14532022, 3717294, -2581275, -703301, 4471061,
--1526324, 14077292, -1494112, -2161979, 17838072, 112206, 9019968, -3352759, 248571, -777389,
-1468879, -2281165, 1239098, -278636, -509491, -9678172, -925565, -2305861, -1731946, -4032974,
-6195491, 2898029, 3686693, -5428839, -601832, -8579734, -3434900, 1612223, -698469, -5215701,
--1607392, 2867965, 6473053, 3918084, -2052994, -7976828, -280247, 2271501, -1340567, 4226785,
-2807835, 5730023, 7897908, -2568391, -52613, -8518531, -10356777, 9774272, 5246840, -353261,
--435939, -323733, -3778498, -4141422, -82678, 7824357, 4520453, 1420560, 9545565, -7318088,
-2144263, -6002217, -4633196, 4107599, 4217658, 3475166, 14378477, -518617, -6500433, 1129576,
--6372658, 2886218, 1675037, 5252745, -2838974, 83752, 645319, -4830228, -865973, 3380676,
--508417, 876710, -2101850, -1069447, -318901, 2341831, -1240172, 1479616, -2229625, 210453,
--2882460, 922881, -1533303, -985158, 455803, 1455994, -1786170, 1929514, 1227824, 2354716,
-139050, 1398012, -606664, 855772, 421981, 865973, -900333, -13422, -843424, -114354,
-417686, 1221918, -7977902, -10713259, 4159676, -10012643, 3221, 11145440, -11661910, 4268124,
-5235565, -3129421, -14394046, 189515, 8420820, -9314173, 5792837, -652835, -4127464, -12077985,
--338766, -8714489, 1544578, -4425427, -6788733, -8477729, 3486440, -1203665, -494458, 8056285,
--4874251, 6796249, -5160403, -2067490, 10417980, 3568044, -5554467, 4274566, 2517925, -4821101,
-2544768, 2618320, -1844689, -2059974, 420907, -2324651, -2741800, 1704028, 1911797, 14172855,
--13340705, 2156611, 857383, -4785131, 9601399, 5459441, -3287261, -10349261, 927176, -1050120,
--3117073, -6532646, -7643431, 9331890, 6059662, 772020, -926102, 4970351, 2530810, -2262374,
-3985193, 2856153, -2581812, 9928891, -3680250, 6073084, -4059281, 3020436, 3130494, 2236604,
--293132, -5528160, 5288716, -4304631, -4470524, -3075734, 1546725, -11811, 663572, -5243618,
-2856690, 2201171, -3309809, 339839, -121333, -1660005, 321586, -1100585, 2544231, -733366,
-397821, 2119030, -952946, -1613297, 1418950, -1838783, 1494649, -331786, -9664, -2116882,
--935766, -74088, -2298881, 2276870, 1302986, 512712, 1524713, -491774, 1042603, 4728222,
--10803990, 7928510, -4522064, -1981591, -6202470, -4449049, 3775276, -3547106, 3087545, 12111271,
-4141959, 6659884, -15439334, -10204305, -5503464, -3681861, 1668058, -60130, 2659659, -12945031,
-6931541, 2900177, 1728724, 12370580, 205085, -6996502, 11599633, 4575214, -5181878, 2379949,
--6659347, 6107444, 2870649, 8136279, -6971806, -4938676, 2054605, -7036230, 8879845, -8139500,
--147103, 7902740, 7268159, -15031312, -430034, 741419, 1744831, 2492692, 16423955, 3798362,
-1022739, -5023501, -4158065, -8877161, -4814122, 12148852, 289910, -14494441, 215285, 3360275,
--8238284, -9059160, 1072668, -5874979, 2406792, 13313325, 6527814, 5604396, -5465346, -14221710,
-1142461, -2432562, 6524056, -1277216, -11917997, -1447404, 3103651, 3283503, 3212099, -1004486,
-10082436, 1905355, -6421513, 8323110, -619549, 4981089, -171262, -1242319, -4335770, 6150393,
-4225711, 2405182, -3148748, -1228361, -831613, -2076617, 1163399, -13422, -2677375, 1330366,
-805306, -1503239, -1993939, -829466, -1508070, -220117, 1865626, -1913408, 959388, 2352032,
-2812667, -725313, 1197222, -1500017, -19041738, -5662915, 5376226, 14719927, 2092186, 7642895,
-26109644, 4358318, 4450660, -4019553, -12525198, 7116224, -6076842, 6558952, -1580011, 17297444,
-12586402, -6643778, -14149233, -11225434, 8528731, -7469485, 10456098, 4620848, 3403762, -3591667,
--1383516, 12455942, -2458332, 10995653, 10977936, 5698885, 7699266, -8516920, 8338142, 4520990,
--4476967, 12174622, -5359583, 11063299, 826244, 1272384, -16203301, 9788230, 889058, -3020436,
-7999377, -11265699, -4483946, 6791954, 5526549, -10377178, 1672890, -6628209, -3828963, 10331544,
-1381369, 3137474, -1092532, -11839614, 7963406, 7591892, 514859, 6008659, 2680597, -5228049,
--5524939, -417149, 6327024, -10717017, -390305, 721018, 464393, -69793, 4704063, 6213207,
-12693239, 7157563, 419833, -17805860, -5866389, -6645388, -598074, 1354525, -5011690, -10539850,
--3331284, -4729296, 2789581, 446140, -3013457, 1167694, -3089692, 4954782, -1767379, -2067490,
--2914135, 93416, 1421634, -6320045, 3991098, -4050691, 1660005, -1011465, -2345589, 152471,
--3915400, 1307818, -3531537, -2533494, -502511, -1998770, -1877975, 2226941, 3762928, 2296734,
-3623342, 4755603, -973347, 745177, 23540716, 6939594, 3105261, -8698919, -21263846, 15403900,
-4763656, -14039711, 4180077, -1479079, 3591667, 3031710, -10200010, -21719112, -17062294, 5800890,
-13326210, -2596845, 13993540, -6443525, 10916196, 13395466, 18065706, -3934727, 13348758, -11806865,
-4514548, -6415071, 1601486, 7261179, -316754, -3796214, 3248606, 9105868, -6453189, -11966853,
--12175159, 25556666, 44023, -1206886, -11504607, 11888469, 3844533, -23458574, -13625784, 5346698,
--3310883, -4095788, 9188009, 3181497, 22767622, 12645457, -806917, -13156559, -12983686, -7296613,
--5336497, -14934138, 13879187, -10188736, 10984379, 9516037, -9499394, -12173548, -11838004, -17206712,
-4214974, -207769, -6208375, -7740605, -12677133, -4460324, -12485470, 2713883, 1519345, -4167729,
-1710471, 10324565, -26134340, -10068477, -21325050, 10858751, 7514046, -9071508, -3078418, 4472135,
--4014184, -43487, 5068062, -3869229, -8530342, -862752, -2450279, -2603287, -95563, -1020592,
--3619047, 233002, 767725, 4652524, -6286759, 1762010, 3470871, -297963, -2595234, -3942243,
--1163399, -522375, 908386, -1297080, -331786, -2351495, 1216550, -884226, -4008815, 7256884,
-754304, 2261837, -12658879, -24401856, -5420249, -6332393, 1352915, -5662915, 1061394, 2580202,
--2621004, 10487236, -13511430, -4091493, -12822625, -620086, -6380711, 14863808, 16616155, 13282723,
--18524194, 13149042, -6686727, 9989020, -3827353, 7377680, -6146098, -7912404, 2858838, -10223633,
-6586869, 7937100, -979789, 4769025, -9372156, -1175747, 15876347, -12618077, 606664, -3742527,
--5173825, -10173167, -566399, 15683610, 20667382, -13037910, 6249178, -1636919, -12538083, -12822625,
--13771813, -6305012, 26161720, 15792595, -4889821, 8396124, -5552856, 7270843, -14314589, 8403104,
--431107, -7835631, 19913616, 10253161, 4065724, 6496138, 5698885, 18628884, 2469606, -15844671,
-6437619, 12049531, 9454834, -27642946, 16859358, -11751567, -10430328, -5190468, 1714766, -10869488,
-11928198, 26433914, -4603131, 3750043, 13523241, 2261837, -2220498, 3180423, 1376537, 7678328,
-6931004, 4133369, 12684112, 6465537, -3541738, 8592619, 5359583, -3862786, -7732552, 4310000,
--1078574, 4668093, -2224793, 1359357, 3827353, 1457605, -1115081, -1007170, 1721208, 5887327,
-1283122, -1460289, 1299765, 4505421, -2027761, 180926, 7677791, 2907156, -2068027, 4144107,
-1302986, 1051193, 3144453, -151934, 2588255, -1282585, -4932233, -4532801, 3793530, 16977468,
-11176579, 46139224, 12991202, -7795903, 3042448, 7739531, 269509, 15349676, 11525008, 10623602,
--13657459, -22973244, 23023710, -13027173, 2261837, 7906498, 25258166, 10067940, -15163919, 13725105,
--13707388, -2892124, -18877456, -24937116, -2704756, 6676527, 6793565, 4964982, 6431177, -2017024,
--17006460, -6364605, 5572720, 5724118, -8967892, 18919330, 12113418, -11418171, 6370510, 9394704,
-3780645, 528818, -10412611, -1351304, -7280507, -4391604, 1152125, 11750494, 29443612, -8023536,
-2745558, 4278861, 11024644, -10561325, 37299108, -3269544, 3673808, 3060164, -16831440, -16619913,
--26676578, -11411191, 14701673, -5179731, 7422777, 5874979, 25679072, 4044249, 4655745, 1302449,
-20245938, 9697499, -8388071, 18475876, -16815870, 2653216, 17125646, 21967684, 20311974, 7938174,
--11506754, -18894634, -8092256, -6076305, -13721347, -7715372, -7792145, -2226941, -11519639, 2866354,
--3944928, -1948841, -10043244, -1239098, -6254546, 9902584, 1051193, 2122251, -8939438, -1783485,
--12286828, 799401, 5273683, -450435, 9007620, 5620502, 27380, 3664144, -1861868, -5606006,
--3255585, -2550137, -10541460, 915902, 2105608, 2454574, 3141769, -5270462, 7437810, 8005282,
-3548180, -6314139, -4217658, -2149631, 1799054, 4394826, 2401961, -4252018, -2174864, -4858145,
--19223736, 10827613, 5136244, 13291313, -3578245, -29396904, 2333778, -19725712, -17494476, 5167920,
-4169876, 8166881, -5120138, 5867999, -1051193, -10082973, 16002511, -2618856, -5317170, -6452115,
--11253351, -9673877, 5815386, -12184285, 2954938, -7814156, -5352603, -3403225, 15704548, -3137474,
-16858820, 10492068, -4434017, 5543192, 5829345, 11924440, -8283382, -11369315, 1695438, 6998113,
-9199283, 15761993, -17463874, -17002702, 7260642, 5582384, 19516868, -9670656, -1395864, 9644349,
-57445, 2673617, -3605088, 12733504, 16048145, 7329362, -2040646, 10043781, 33658584, -7466801,
--9822053, 12476880, -1381906, 19640886, 4726612, 9157944, 11080479, -3610994, 7756174, 22736484,
--6208912, -27338540, 19226958, 5611375, -9006546, 2619393, -41653668, 27780386, -277025, 17222818,
--10938745, 8986145, 1269700, -16607565, -15830176, -2178085, 3072512, -12272869, 65498, 1885491,
--2254858, -4082903, -2557653, -13423920, -2230162, -8058433, 115427, -4213363, -1217623, -4825933,
-8078297, -5994164, -4576288, -8660802, -4187593, -9882183, -1823214, 2216203, -5499169, -621697,
--4503810, -4912906, -5321465, -325344, -4405563, -3282429, 1589675, -1413581, 4298726, -3063922,
--6313065, -6908992, 45097, 1198833, -4349728, -886911, -1957968, 2122788, -9286256, -17807472,
--879395, 27736362, 13615046, -35723392, 5468567, -6445672, 2980707, 5841693, -1865626, -18416282,
-2440615, -2849711, 15864535, 31029528, -5266167, 9992778, 20310900, -912681, -5884642, -5247377,
-7947300, 30990336, -781684, -2144799, 25328496, -10363219, 6714645, 71941, -580357, -6640557,
-9426379, -28428926, 725850, 9013526, 20617454, 22106734, -18347564, 784368, 19805168, -1189169,
-37005440, -13469554, -18368502, 2521683, 26844620, 4793721, -20875688, -9690520, 6003291, -42413,
-11613592, -30155502, 3557844, 1399623, -6442988, -21857088, -19547470, 5211406, -6025302, -1291711,
-970126, -22743462, -24043226, 5153424, 3637837, -24104430, -8294656, -15638513, 13974213, -38141992,
--14564234, 12628278, -23298050, 12793634, -6357089, -9235253, 12580496, -3823595, 18947786, 18152142,
-3985730, 11296301, -5162014, 2359548, -13554917, 14662481, -10525891, 8759586, -14191646, 10520522,
-648003, 4736275, -1280437, 148713, -8173860, 9735080, -10696079, 1923072, 1166621, 5513128,
--11727408, 6152004, -4769025, -3188476, 3645354, -2398202, -5519570, 7945153, 3279208, 8486855,
-3676492, -781147, -3983045, -3923990, -1087164, 1659468, -5575942, 2052458, -4071092, 2058363,
--11215770, -5761162, -4597226, 5840619, 6630356, -3590056, 1491964, -1568737, -9321153, 20170778,
-24159, 11156178, -21056614, -1587527, -19929186, 20900384, 9290014, 27347668, 19311246, -9713069,
-3728569, 21600464, 11138998, 10991895, 7093139, -18364744, -5206037, 9016210, 1500554, 10650445,
--23360864, -17381732, 10635413, 35049080, 4830765, -11604465, 22207128, 6300180, 13902272, 3650185,
-2768107, -19798726, -20092394, 342524, 395674, -34660924, 2863670, -7134478, -1721208, 10945724,
--13458280, 8268886, 27276264, 2840047, -44303660, -31919660, -5139465, -9838696, -10971494, -351114,
-8137890, 7009924, -10817412, 12273943, 11718281, 10544682, -6802155, 9072582, -4946192, -11566347,
--2669322, 10132902, -33050848, -7584912, -14889578, -17289390, -6811282, 4635344, -8732205, -934692,
-36527088, 20714628, -13952201, 97711, 474057, -6314139, -6436009, 3176665, 24521578, 8913668,
-3770981, -7612293, -5439039, -12718472, -14562087, -15622407, -3506304, 1974074, 4910222, -5489505,
-4395362, -1325534, -3489661, -1377611, -4107599, -13721884, -3340948, -151398, -3389803, -11872900,
-1575179, -4316442, 12988518, -6551973, 4451197, -1339493, 5409512, -88047, -10368051, 868120,
-12613245, 1893544, 11355357, -3128347, 5855651, -3628174, 3750043, -796180, -7668664, -3462281,
--737124, -1405528, -1443109, -71404, 7482370, 14288282, -19891604, -5077725, -8443369, 5253819,
-41523744, 6526203, -20464982, 5366562, 18330920, -3980898, 17126182, 21787832, -11292006, 5116917,
-11001022, 7477538, 468688, -3260954, -6773701, 3210488, 12930536, 6630356, 12075837, -18174154,
--27954332, -3018288, 12449500, 10945187, 8934606, -3224447, -25788058, 8258685, 5703180, 38562900,
-40577776, 9602473, -30213484, 21805012, -11513197, -30909270, -7226283, -36572184, -27841052, -12327630,
--13419088, -28369870, 4927938, -11457899, -32447404, -29721710, 8568997, 19233400, -3187403, -25096030,
-7439420, 679142, 8010114, 15735150, 15365246, -19425600, 25016038, 17154100, 2179696, 6874632,
-17406428, -947577, 45532024, -32506996, -15527917, -1126355, -37047852, 30367566, 2215666, 38182796,
-11797201, 8514773, -1935957, 7536594, 16196322, 599685, -15083388, -279173, -8052527, 6027450,
-5833640, 10894185, -4585952, -13991930, -93952, 12934831, 6135898, -8311836, -4141959, 6788196,
--9299678, -73014, 200253, 11882027, 4660040, -6519761, -2825015, -7402913, -11944304, -10364830,
--573915, 2245194, -5921686, -4363687, 1389422, -5980742, 9357123, 4554813, -112206, 5616207,
-18898392, -7196755, -3597035, 2127620, 5075041, -10196789, 11076721, -3732864, -341987, 1890859,
-8283382, 13939316, -20240570, 5311264, -40421012, -10954314, -2504503, -9948755, 44377212, 13982803,
--11787538, -27884002, -14134201, -11480984, -17661442, -12967043, 6787659, -40705552, -8760660, 29867740,
--3534221, -3362960, -31095026, 29655138, 14704357, 660888, -11791296, 12633646, 6274411, -7092065,
-13543106, -21024938, -5572720, -10743324, 6030671, -4918275, -13237626, 15024869, -11290932, 6260452,
-438087, -20429012, -12710956, -3198140, -25550760, -25103546, -33590940, -8685498, 15413564, -11294153,
--6150393, 19369766, -23638426, -19452980, 20959978, -184147, -1207960, 18855444, 282394, -16164646,
--9269613, 6352257, 13656385, -20881058, -6546067, 25373594, 10982231, 24482924, 12709345, -5034239,
-12915504, -1005022, -33172716, 10405632, -25092272, 18175228, 3194382, 6652905, -10552198, -28722594,
-6056441, -4303021, -24893630, -10006200, 11196443, -12664248, 541166, 3904125, 8159364, -8134131,
-459562, 1187022, -2124935, 5178657, -3711926, 2890513, 10241886, -1911797, 3526168, 2661269,
--6600828, 2066416, 4929549, 2768643, -4922570, 6703370, 4693863, -516470, -6901476, -14190572,
-2945811, -11234024, 9137006, -11469710, 7538742, 9346923, 475131, 518617, 304406, 5302137,
-863288, -4902169, 11060078, 8794482, -4332549, -6929930, -11546483, 30285962, 10573673, 1117765,
-3697967, -7909719, 12008192, 18662706, 47278464, 41293964, 3570729, -18179522, 8410083, 23943906,
-6843494, 18540836, 13372381, 8978629, -14013405, -17995376, -21626770, -1507534, 8034810, 15232102,
-30713848, 16253767, 19697794, 11454141, 18262738, 9215389, 17592186, -11748883, 3316789, 33205466,
--892816, 25545928, 6771016, 20659866, -32779728, -5331128, -9662603, -9658845, 7645042, 12767327,
-23741506, 38408280, 32172526, -11404212, 5713380, -42652248, 10361072, 9821516, 37580428, -29875256,
-23767812, -7756711, -20943334, 16049219, 4952634, 13394392, 23541252, -7659538, -30149060, 15604690,
--19382650, -26578868, -12633646, 35560720, -30868466, -43815644, -22111566, -7260106, 23110682, -2412698,
--15756624, -30240864, -22830972, 14461155, -2065879, -565862, 19588272, -21336860, 6101001, 21908628,
-8533563, 14666776, 21220360, -14371497, -7241315, -12146168, 16230145, 3603478, 8356933, 5915781,
--14605036, 18138184, 4482872, 2874407, -7154879, -26519812, -25333864, 2524904, -12057047, -5004174,
--11436424, -9946607, -4365835, 4672925, -151934, -11186242, 14283987, 11970611, -1611150, -12698071,
-2081449, 7646653, -9074192, -4111358, -5211406, 105764, 6172942, -2850785, -6272800, -5078799,
-4340602, 3631395, 6963216, 8684961, -4553739, 4962298, 5374078, 29707752, -9371082, -32829120,
-2303713, -13711683, -46932720, -23738284, 61550640, 8608188, -27799176, -30521648, 3434900, 544924,
-12710419, 15979963, -21530672, -14294725, -34346852, 7996692, -12463458, -8244727, 52476448, 11270531,
--7266011, -54169740, -3506304, -28924458, 28660316, 35413080, 3704946, 27551678, -32466194, -12768938,
--20516522, -4842576, 53586160, 66748624, 10649908, -17814988, -23848880, -48189532, 648003, 6236830,
-58254252, 32518808, -8527658, -95784752, -49629420, 8249559, -9208410, 84136800, 28187870, -40377524,
--16813186, -72086192, -22827214, 2542084, 47140488, 48652852, 54608360, 2605972, 12931073, -5740224,
-4707821, 67189928, -24802900, 49356152, -11960410, -50673096, -15181099, -53717156, -17264158, 70350488,
-31978716, 50233400, -16654273, 39395052, -44109316, -7026030, 10481331, 21001316, 41777684, -14097156,
--912144, 2639794, -3962644, 6460168, 11143293, -11950747, 1816771, -12566537, -22738630, 10226317,
-18471044, 10305237, -2400887, -13648869, -30422328, -29955250, -15804406, 10142028, 27996208, 15780784,
-21655762, -29446832, -38612292, -29778618, 3344169, 33823940, 37554656, 28855738, -17244294, -73536816,
--47265580, 1433982, 37015100, 79915920, 30961346, 6571300, -36389648, -47936128, -16660715, -15253576,
-41878616, 46286324, 17299592, -2743410, -40172440, -30128122, 9175124, 13839995, 34061240, 16557099,
--17607218, -12319577, -21082384, -10031970, 9893994, 9047885, -42673720, 47327856, 79994, -12333535,
--73531984, -19794430, -19857244, -33175938, 71185328, 762894, 31891742, -48657148, 27015882, 22687090,
--21895744, 14247480, -4211216, 12736726, -11274, 36422396, 12858058, -35328792, 21334176, 17614734,
--125628, 24596740, -18190260, -9327058, 30848602, 21643950, 20540144, 10279467, 17868674, -53243636,
-46468324, -26714160, -17028472, 10190884, -37363532, 54575612, -15540802, 5504538, 39363912, 1418950,
--6029597, 21474836, 21863532, 38676716, -9465571, -35785132, -36576480, 4131222, -13237089, 17001628,
--22143778, -10671383, -15008763, 11014444, -68702832, 1200443, 50918448, 14187351, 20697984, -1837172,
--5666136, 13513578, -18181670, -20659866, 12731357, 7177427, -22406308, -24761560, 94551024, -10151155,
--30826590, 8679592, 44281648, -1154809, -35003448, 14464913, -6626061, -13152264, 28478318, 36318780,
--26598732, -43331388, 9740449, 10521059, -10088341, -25891136, 1218160, 13160317, -4068945, -4154307,
--1796907, -4415764, 6888054, 7795366, -8993662, 1037772, 3818226, 2001455, -5440650, 2049773,
--375273, -11969537, 8580808, 3749507, 16675747, 8359617, -6437082, 6887517, -3389803, 9914395,
--782221, -2523830, 13587129, -3347927, 9285719, -2698313, -10821170, -893353, 12223477, -3416647,
-13924821, -13224204, 17503066, 4168803, -12706661, 5348308, 207232, 6502044, -2196339, -5051419,
--1344862, 13749801, -36681168, 13063680, 57882200, 91163904, -40308268, 29716342, -60186988, -17737142,
--36666136, -4995584, 56018720, 59456308, 47245712, -1477469, -37729676, -22809498, 20542292, 1552094,
-10303627, 31079994, -570694, 15476378, -39549668, -10077604, -22877144, -27851790, 15291157, 12749074,
-862752, 27875948, -23661512, -837519, 6276558, -33347736, -921271, 2350958, -21088290, -7948374,
-7907572, -14076755, 31412318, -10264435, 47582868, 35996120, -23460186, -6575058, -32610612, -37262600,
--48400524, 15486041, 22308598, 64698852, 49334680, 23060216, 31351650, 6012954, -35638564, -23551990,
--19966766, -24257976, -5161477, 13584445, -1313723, -16669305, 4335770, -16819092, 10569915, 24103356,
-4692252, -25144886, 19643032, -12057047, -12808666, -25164750, 13012140, 11156714, 5700496, 3081639,
-57028040, 43589088, 35642860, 6047851, -8293045, -48324824, -10136123, -5061082, 47498580, 27214524,
-12364137, 14347338, 41133440, -6578816, -16415902, -22254910, -18644990, -8791261, -4198331, 3717831,
-470836, 261993, 21325050, -2521683, -12791486, -7861401, -4416300, 405338, 10522670, 18998250,
-8295730, -2470680, 11745125, -19793356, 7657390, 18059264, 7340099, 35661112, -14717779, 151398,
-6039798, -15005005, 3818226, -23820426, -1304596, 8193724, 202400, 9552007, -6873559, -98972152,
--57332444, -33006824, 56899728, 26718454, 151434640, 142380848, 147048400, 148809872, 159362080, 112170048,
-58497456, 84954456, 50984484, -25337086, -47205448, -72698224, -141491248, -127397856, -132189968, -95741264,
--97126392, -71905808, -59697360, -31661962, 3192235, -55934968, -28683940, -11565273, -8892193, -30245696,
-7758322, 37929928, 42469172, 15897285, 50184544, 64004140, 15795279, 12648679, 12600360, 62896576,
-65410204, 82695304, 92433600, 81021872, 91796336, 139584288, 56501904, 109003584, 148580640, 95664488,
-112772960, 88794152, 44378288, 53079892, 58562416, 52206940, 70757976, 69860328, 43251932, 8553964,
-21483426, 41210212, -2618856, 4862977, -19811074, -22673132, -70164200, -31477278, -121568512, -152609312,
--122353952, -139229424, -189642128, -182987616, -108608448, -204403936, -185615072, -169261984, -191619968, -161540704,
--123368640, -154789552, -114045880, -31465468, -75756240, -93522376, -37067716, -36899136, -30486214, -33470680,
--14964740, 9385577, 19228032, 37520836, 48399988, 55624120, 62513248, 64763812, 91183232, 56041272,
-107426792, 120423904, 57272316, 111874768, 106249976, 67575408, 81439024, 118371448, 80400176, 133591736,
-100753488, 126689184, 88607320, 80711024, 83516712, 78212432, 61304216, 70387536, 61072824, 48525076,
-36436356, 35748624, 28918552, 12790949, -8905078, -6702297, -5021891, -41681048, -68319504, -65333968,
--67308576, -73023568, -67900208, -75548472, -54877336, -56453052, -46395312, -33914672, -26711476, -30027726,
--29898342, -22257058, -15744813, -16895328, -22944790, -11113765, -5379447, -12097849, -19443854, -9938017,
--6550362, -8323110, -9280351, 1234803, 3693672, 5188321, 603980, 1806571, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+95026, -2029909, -478889, -4906464, -3393561, 2198487, 179852, -3085397, 3838627, 2594697,
+-850940, 245350, -538482, 3112778, -4320200, 1626719, 3208878, 2856690, -6210523, -4330401,
+-3093987, 4172024, 991064, 1369558, -1742146, 4449049, 1650341, -1090922, 100395, -1254131,
+853625, 1672890, -1003412, -1266479, -3747359, 3979287, 6593312, 791348, 4181151, -769873,
+827318, 1516660, 1807644, -5006858, 334471, -5231270, -1221918, -735513, 1629403, -2636036,
+-106837, 1153199, 506806, -3049427, 99321, 351114, 2478733, -3243237, -4096325, -545461,
+5507222, 8872866, -4295, 1454920, 593779, -1899986, -5353140, -1356673, 3695283, -1701881,
+3680787, 1434519, 3748433, -206158, 1443646, 1333587, -3206193, -4307316, -476205, 1623498,
+2449205, 1195612, 1082332, 736050, 808528, -1480153, -2374580, -1606855, -1303523, -620086,
+20938, -891206, -144955, 781684, 1246614, 1115618, -201863, 71941, 729071, -25233,
+-956167, 2522220, -5564130, -1262720, -5277441, 3051038, 341450, -2432562, 11248519, -4396973,
+-8061654, 613643, 3732327, -681826, -6067178, -1729261, -2637647, -994822, -2878165, -948114,
+4170950, -294742, -2724083, 4784594, 701690, 4647692, -1239098, -1145146, 1786706, 117575,
+2081449, -875100, 4386236, 7167227, -1978369, -4825933, -3535295, 2953864, -11274, -11047193,
+-1051730, -4405026, -1641214, 5401995, -3776887, -2872260, 3725884, -2442226, -535797, 4953708,
+1707786, -3914326, 1749125, -2820720, -6525666, 2081449, 2556579, -4956929, -2869038, -1435593,
+-2084670, -49392, 2120640, 3379066, 5119064, 5724118, -1370095, 583579, -2263448, 2467459,
+1570347, -1275068, 2394981, 3676492, -3517041, -1794760, 590558, 68719, 1414118, 4224101,
+-536334, -1133871, 3828427, 560493, -2660195, -1665374, -204548, -1633161, 1169842, -679142,
+-1472100, 599685, -1669669, -1315334, 825171, -1677185, -1136556, 46708, 1108638, -2075006,
+236223, -505732, -725313, -1001264, -96100, -1619203, -462783, -1550483, -9055939, -4599373,
+2782065, 4012036, 1562831, 4352413, -3724274, 4555350, 5587753, -1570347, 6183679, -843961,
+4554276, -2165737, 137439, -1942399, 5824513, 2274722, -239444, 5206574, -2775623, -2201708,
+3806952, -9043591, -1578401, 495532, -1928977, -8059506, -4927938, 3345243, -3162707, -2100776,
+111132, 6307697, -1519882, -4413079, -353261, 1624035, 3561065, -541166, -5724118, -3685619,
+-1057636, -2929168, 944893, -4977330, 2465848, -4683125, -6890738, 221191, 2407866, 2800856,
+-2209224, -1581085, -4525285, 5845988, 3373160, 816581, 52613, -162135, -1991791, -1063004,
+1969779, 2496987, 8812736, -992674, 2212982, 580357, -272194, -4317516, -3289408, 5979668,
+-2578591, 588947, 1476395, 866510, -947040, 4519916, 231391, 165893, -4912369, 4740034,
+2649995, -1831267, -1099512, -530965, -1433445, 655519, 3408594, -46708, 1348083, 1035087,
+-489626, 792958, 1756105, -184147, -8053, 543313, 812286, 707596, 998580, 1826972,
+673236, -1341104, 1394254, 651224, -998043, -773631, -171262, 208843, 2193118, 2699387,
+2410551, 5767068, -3825742, -5709086, -4613332, 2891050, 6372658, -1191317, 4880157, -4350802,
+-5291937, 4364761, -2206540, 445066, 1624035, 5471789, 2026688, 8692477, -3797288, -4645007,
+2024540, -2576444, -2430952, 4924180, -7699803, -4750771, 765041, -1493575, 3498788, -2617783,
+959388, 6180458, -5765457, 4296041, -3481071, 2781528, -3261491, -930934, -530428, 6405944,
+1202054, 223875, -4696547, 227096, -5587216, 2091112, 1375463, -3734474, -92342, -1547799,
+9669582, 1299228, 617402, -8396124, -4923107, -7081328, 5527623, -3608846, -399432, 2913062,
+12337830, 8709657, -3483219, -7592429, -3161633, -6591701, 6970732, -1337882, -1925756, -3050501,
+-2023467, -571768, -3183108, -2110440, -526134, -2583423, 1861868, -1807108, 2609730, -9595494,
+662499, -791348, -3023120, -1421634, -3209951, -644782, -5024575, 412317, -2073932, -168041,
+3074123, -966905, -1060320, -2150705, -2374043, -670552, 705985, -133681, -181999, -855772,
+-344671, -1012539, -136902, 246961, 624918, -716723, -817654, -1140851, -1007707, -872952,
+-1531156, -4867272, 3497714, -5036386, -8943733, 9124121, 4140885, -9587978, 9588514, -1545115,
+-548682, -13470091, 8027294, 5336497, -10875931, 3232500, -1783485, 4118337, 967978, 4747013,
+3063922, 1206349, -5049271, 466004, 1881196, -6702297, -2836289, -7907572, -1336809, -4918275,
+-2610266, 891206, -6167573, -2285996, -9097278, 3441880, 927713, 780610, 824097, -3927748,
+-7915625, -2484639, 2816425, -1291711, -663036, 8308078, -12305618, 5177046, 6324340, -918049,
+421981, -2403571, -949188, -4001299, -6065568, -4158602, -4773320, -3214783, 3087545, 1688459,
+2752000, 4156992, -964757, -2222109, 5964636, 11337103, 8027831, -174483, -9626632, 2649458,
+-1453310, 1416266, 10255845, -70330, 10331007, 9190693, -1233729, -3087008, -2443837, 716186,
+916439, 3423089, 10475425, 2781528, 443992, -1079111, -6448357, 764504, 2026688, -2199023,
+-290447, 324807, -55835, 1197759, 938450, 732292, -784368, 1258425, 1188632, 1124208,
+1316408, -3514894, -533113, -2527052, 1031866, -1975685, 858457, -568546, -875636, -2114198,
+428423, 519691, -3043521, -985695, 748935, 14532022, 3717294, -2581275, -703301, 4471061,
+-1526324, 14077292, -1494112, -2161979, 17838072, 112206, 9019968, -3352759, 248571, -777389,
+1468879, -2281165, 1239098, -278636, -509491, -9678172, -925565, -2305861, -1731946, -4032974,
+6195491, 2898029, 3686693, -5428839, -601832, -8579734, -3434900, 1612223, -698469, -5215701,
+-1607392, 2867965, 6473053, 3918084, -2052994, -7976828, -280247, 2271501, -1340567, 4226785,
+2807835, 5730023, 7897908, -2568391, -52613, -8518531, -10356777, 9774272, 5246840, -353261,
+-435939, -323733, -3778498, -4141422, -82678, 7824357, 4520453, 1420560, 9545565, -7318088,
+2144263, -6002217, -4633196, 4107599, 4217658, 3475166, 14378477, -518617, -6500433, 1129576,
+-6372658, 2886218, 1675037, 5252745, -2838974, 83752, 645319, -4830228, -865973, 3380676,
+-508417, 876710, -2101850, -1069447, -318901, 2341831, -1240172, 1479616, -2229625, 210453,
+-2882460, 922881, -1533303, -985158, 455803, 1455994, -1786170, 1929514, 1227824, 2354716,
+139050, 1398012, -606664, 855772, 421981, 865973, -900333, -13422, -843424, -114354,
+417686, 1221918, -7977902, -10713259, 4159676, -10012643, 3221, 11145440, -11661910, 4268124,
+5235565, -3129421, -14394046, 189515, 8420820, -9314173, 5792837, -652835, -4127464, -12077985,
+-338766, -8714489, 1544578, -4425427, -6788733, -8477729, 3486440, -1203665, -494458, 8056285,
+-4874251, 6796249, -5160403, -2067490, 10417980, 3568044, -5554467, 4274566, 2517925, -4821101,
+2544768, 2618320, -1844689, -2059974, 420907, -2324651, -2741800, 1704028, 1911797, 14172855,
+-13340705, 2156611, 857383, -4785131, 9601399, 5459441, -3287261, -10349261, 927176, -1050120,
+-3117073, -6532646, -7643431, 9331890, 6059662, 772020, -926102, 4970351, 2530810, -2262374,
+3985193, 2856153, -2581812, 9928891, -3680250, 6073084, -4059281, 3020436, 3130494, 2236604,
+-293132, -5528160, 5288716, -4304631, -4470524, -3075734, 1546725, -11811, 663572, -5243618,
+2856690, 2201171, -3309809, 339839, -121333, -1660005, 321586, -1100585, 2544231, -733366,
+397821, 2119030, -952946, -1613297, 1418950, -1838783, 1494649, -331786, -9664, -2116882,
+-935766, -74088, -2298881, 2276870, 1302986, 512712, 1524713, -491774, 1042603, 4728222,
+-10803990, 7928510, -4522064, -1981591, -6202470, -4449049, 3775276, -3547106, 3087545, 12111271,
+4141959, 6659884, -15439334, -10204305, -5503464, -3681861, 1668058, -60130, 2659659, -12945031,
+6931541, 2900177, 1728724, 12370580, 205085, -6996502, 11599633, 4575214, -5181878, 2379949,
+-6659347, 6107444, 2870649, 8136279, -6971806, -4938676, 2054605, -7036230, 8879845, -8139500,
+-147103, 7902740, 7268159, -15031312, -430034, 741419, 1744831, 2492692, 16423955, 3798362,
+1022739, -5023501, -4158065, -8877161, -4814122, 12148852, 289910, -14494441, 215285, 3360275,
+-8238284, -9059160, 1072668, -5874979, 2406792, 13313325, 6527814, 5604396, -5465346, -14221710,
+1142461, -2432562, 6524056, -1277216, -11917997, -1447404, 3103651, 3283503, 3212099, -1004486,
+10082436, 1905355, -6421513, 8323110, -619549, 4981089, -171262, -1242319, -4335770, 6150393,
+4225711, 2405182, -3148748, -1228361, -831613, -2076617, 1163399, -13422, -2677375, 1330366,
+805306, -1503239, -1993939, -829466, -1508070, -220117, 1865626, -1913408, 959388, 2352032,
+2812667, -725313, 1197222, -1500017, -19041738, -5662915, 5376226, 14719927, 2092186, 7642895,
+26109644, 4358318, 4450660, -4019553, -12525198, 7116224, -6076842, 6558952, -1580011, 17297444,
+12586402, -6643778, -14149233, -11225434, 8528731, -7469485, 10456098, 4620848, 3403762, -3591667,
+-1383516, 12455942, -2458332, 10995653, 10977936, 5698885, 7699266, -8516920, 8338142, 4520990,
+-4476967, 12174622, -5359583, 11063299, 826244, 1272384, -16203301, 9788230, 889058, -3020436,
+7999377, -11265699, -4483946, 6791954, 5526549, -10377178, 1672890, -6628209, -3828963, 10331544,
+1381369, 3137474, -1092532, -11839614, 7963406, 7591892, 514859, 6008659, 2680597, -5228049,
+-5524939, -417149, 6327024, -10717017, -390305, 721018, 464393, -69793, 4704063, 6213207,
+12693239, 7157563, 419833, -17805860, -5866389, -6645388, -598074, 1354525, -5011690, -10539850,
+-3331284, -4729296, 2789581, 446140, -3013457, 1167694, -3089692, 4954782, -1767379, -2067490,
+-2914135, 93416, 1421634, -6320045, 3991098, -4050691, 1660005, -1011465, -2345589, 152471,
+-3915400, 1307818, -3531537, -2533494, -502511, -1998770, -1877975, 2226941, 3762928, 2296734,
+3623342, 4755603, -973347, 745177, 23540716, 6939594, 3105261, -8698919, -21263846, 15403900,
+4763656, -14039711, 4180077, -1479079, 3591667, 3031710, -10200010, -21719112, -17062294, 5800890,
+13326210, -2596845, 13993540, -6443525, 10916196, 13395466, 18065706, -3934727, 13348758, -11806865,
+4514548, -6415071, 1601486, 7261179, -316754, -3796214, 3248606, 9105868, -6453189, -11966853,
+-12175159, 25556666, 44023, -1206886, -11504607, 11888469, 3844533, -23458574, -13625784, 5346698,
+-3310883, -4095788, 9188009, 3181497, 22767622, 12645457, -806917, -13156559, -12983686, -7296613,
+-5336497, -14934138, 13879187, -10188736, 10984379, 9516037, -9499394, -12173548, -11838004, -17206712,
+4214974, -207769, -6208375, -7740605, -12677133, -4460324, -12485470, 2713883, 1519345, -4167729,
+1710471, 10324565, -26134340, -10068477, -21325050, 10858751, 7514046, -9071508, -3078418, 4472135,
+-4014184, -43487, 5068062, -3869229, -8530342, -862752, -2450279, -2603287, -95563, -1020592,
+-3619047, 233002, 767725, 4652524, -6286759, 1762010, 3470871, -297963, -2595234, -3942243,
+-1163399, -522375, 908386, -1297080, -331786, -2351495, 1216550, -884226, -4008815, 7256884,
+754304, 2261837, -12658879, -24401856, -5420249, -6332393, 1352915, -5662915, 1061394, 2580202,
+-2621004, 10487236, -13511430, -4091493, -12822625, -620086, -6380711, 14863808, 16616155, 13282723,
+-18524194, 13149042, -6686727, 9989020, -3827353, 7377680, -6146098, -7912404, 2858838, -10223633,
+6586869, 7937100, -979789, 4769025, -9372156, -1175747, 15876347, -12618077, 606664, -3742527,
+-5173825, -10173167, -566399, 15683610, 20667382, -13037910, 6249178, -1636919, -12538083, -12822625,
+-13771813, -6305012, 26161720, 15792595, -4889821, 8396124, -5552856, 7270843, -14314589, 8403104,
+-431107, -7835631, 19913616, 10253161, 4065724, 6496138, 5698885, 18628884, 2469606, -15844671,
+6437619, 12049531, 9454834, -27642946, 16859358, -11751567, -10430328, -5190468, 1714766, -10869488,
+11928198, 26433914, -4603131, 3750043, 13523241, 2261837, -2220498, 3180423, 1376537, 7678328,
+6931004, 4133369, 12684112, 6465537, -3541738, 8592619, 5359583, -3862786, -7732552, 4310000,
+-1078574, 4668093, -2224793, 1359357, 3827353, 1457605, -1115081, -1007170, 1721208, 5887327,
+1283122, -1460289, 1299765, 4505421, -2027761, 180926, 7677791, 2907156, -2068027, 4144107,
+1302986, 1051193, 3144453, -151934, 2588255, -1282585, -4932233, -4532801, 3793530, 16977468,
+11176579, 46139224, 12991202, -7795903, 3042448, 7739531, 269509, 15349676, 11525008, 10623602,
+-13657459, -22973244, 23023710, -13027173, 2261837, 7906498, 25258166, 10067940, -15163919, 13725105,
+-13707388, -2892124, -18877456, -24937116, -2704756, 6676527, 6793565, 4964982, 6431177, -2017024,
+-17006460, -6364605, 5572720, 5724118, -8967892, 18919330, 12113418, -11418171, 6370510, 9394704,
+3780645, 528818, -10412611, -1351304, -7280507, -4391604, 1152125, 11750494, 29443612, -8023536,
+2745558, 4278861, 11024644, -10561325, 37299108, -3269544, 3673808, 3060164, -16831440, -16619913,
+-26676578, -11411191, 14701673, -5179731, 7422777, 5874979, 25679072, 4044249, 4655745, 1302449,
+20245938, 9697499, -8388071, 18475876, -16815870, 2653216, 17125646, 21967684, 20311974, 7938174,
+-11506754, -18894634, -8092256, -6076305, -13721347, -7715372, -7792145, -2226941, -11519639, 2866354,
+-3944928, -1948841, -10043244, -1239098, -6254546, 9902584, 1051193, 2122251, -8939438, -1783485,
+-12286828, 799401, 5273683, -450435, 9007620, 5620502, 27380, 3664144, -1861868, -5606006,
+-3255585, -2550137, -10541460, 915902, 2105608, 2454574, 3141769, -5270462, 7437810, 8005282,
+3548180, -6314139, -4217658, -2149631, 1799054, 4394826, 2401961, -4252018, -2174864, -4858145,
+-19223736, 10827613, 5136244, 13291313, -3578245, -29396904, 2333778, -19725712, -17494476, 5167920,
+4169876, 8166881, -5120138, 5867999, -1051193, -10082973, 16002511, -2618856, -5317170, -6452115,
+-11253351, -9673877, 5815386, -12184285, 2954938, -7814156, -5352603, -3403225, 15704548, -3137474,
+16858820, 10492068, -4434017, 5543192, 5829345, 11924440, -8283382, -11369315, 1695438, 6998113,
+9199283, 15761993, -17463874, -17002702, 7260642, 5582384, 19516868, -9670656, -1395864, 9644349,
+57445, 2673617, -3605088, 12733504, 16048145, 7329362, -2040646, 10043781, 33658584, -7466801,
+-9822053, 12476880, -1381906, 19640886, 4726612, 9157944, 11080479, -3610994, 7756174, 22736484,
+-6208912, -27338540, 19226958, 5611375, -9006546, 2619393, -41653668, 27780386, -277025, 17222818,
+-10938745, 8986145, 1269700, -16607565, -15830176, -2178085, 3072512, -12272869, 65498, 1885491,
+-2254858, -4082903, -2557653, -13423920, -2230162, -8058433, 115427, -4213363, -1217623, -4825933,
+8078297, -5994164, -4576288, -8660802, -4187593, -9882183, -1823214, 2216203, -5499169, -621697,
+-4503810, -4912906, -5321465, -325344, -4405563, -3282429, 1589675, -1413581, 4298726, -3063922,
+-6313065, -6908992, 45097, 1198833, -4349728, -886911, -1957968, 2122788, -9286256, -17807472,
+-879395, 27736362, 13615046, -35723392, 5468567, -6445672, 2980707, 5841693, -1865626, -18416282,
+2440615, -2849711, 15864535, 31029528, -5266167, 9992778, 20310900, -912681, -5884642, -5247377,
+7947300, 30990336, -781684, -2144799, 25328496, -10363219, 6714645, 71941, -580357, -6640557,
+9426379, -28428926, 725850, 9013526, 20617454, 22106734, -18347564, 784368, 19805168, -1189169,
+37005440, -13469554, -18368502, 2521683, 26844620, 4793721, -20875688, -9690520, 6003291, -42413,
+11613592, -30155502, 3557844, 1399623, -6442988, -21857088, -19547470, 5211406, -6025302, -1291711,
+970126, -22743462, -24043226, 5153424, 3637837, -24104430, -8294656, -15638513, 13974213, -38141992,
+-14564234, 12628278, -23298050, 12793634, -6357089, -9235253, 12580496, -3823595, 18947786, 18152142,
+3985730, 11296301, -5162014, 2359548, -13554917, 14662481, -10525891, 8759586, -14191646, 10520522,
+648003, 4736275, -1280437, 148713, -8173860, 9735080, -10696079, 1923072, 1166621, 5513128,
+-11727408, 6152004, -4769025, -3188476, 3645354, -2398202, -5519570, 7945153, 3279208, 8486855,
+3676492, -781147, -3983045, -3923990, -1087164, 1659468, -5575942, 2052458, -4071092, 2058363,
+-11215770, -5761162, -4597226, 5840619, 6630356, -3590056, 1491964, -1568737, -9321153, 20170778,
+24159, 11156178, -21056614, -1587527, -19929186, 20900384, 9290014, 27347668, 19311246, -9713069,
+3728569, 21600464, 11138998, 10991895, 7093139, -18364744, -5206037, 9016210, 1500554, 10650445,
+-23360864, -17381732, 10635413, 35049080, 4830765, -11604465, 22207128, 6300180, 13902272, 3650185,
+2768107, -19798726, -20092394, 342524, 395674, -34660924, 2863670, -7134478, -1721208, 10945724,
+-13458280, 8268886, 27276264, 2840047, -44303660, -31919660, -5139465, -9838696, -10971494, -351114,
+8137890, 7009924, -10817412, 12273943, 11718281, 10544682, -6802155, 9072582, -4946192, -11566347,
+-2669322, 10132902, -33050848, -7584912, -14889578, -17289390, -6811282, 4635344, -8732205, -934692,
+36527088, 20714628, -13952201, 97711, 474057, -6314139, -6436009, 3176665, 24521578, 8913668,
+3770981, -7612293, -5439039, -12718472, -14562087, -15622407, -3506304, 1974074, 4910222, -5489505,
+4395362, -1325534, -3489661, -1377611, -4107599, -13721884, -3340948, -151398, -3389803, -11872900,
+1575179, -4316442, 12988518, -6551973, 4451197, -1339493, 5409512, -88047, -10368051, 868120,
+12613245, 1893544, 11355357, -3128347, 5855651, -3628174, 3750043, -796180, -7668664, -3462281,
+-737124, -1405528, -1443109, -71404, 7482370, 14288282, -19891604, -5077725, -8443369, 5253819,
+41523744, 6526203, -20464982, 5366562, 18330920, -3980898, 17126182, 21787832, -11292006, 5116917,
+11001022, 7477538, 468688, -3260954, -6773701, 3210488, 12930536, 6630356, 12075837, -18174154,
+-27954332, -3018288, 12449500, 10945187, 8934606, -3224447, -25788058, 8258685, 5703180, 38562900,
+40577776, 9602473, -30213484, 21805012, -11513197, -30909270, -7226283, -36572184, -27841052, -12327630,
+-13419088, -28369870, 4927938, -11457899, -32447404, -29721710, 8568997, 19233400, -3187403, -25096030,
+7439420, 679142, 8010114, 15735150, 15365246, -19425600, 25016038, 17154100, 2179696, 6874632,
+17406428, -947577, 45532024, -32506996, -15527917, -1126355, -37047852, 30367566, 2215666, 38182796,
+11797201, 8514773, -1935957, 7536594, 16196322, 599685, -15083388, -279173, -8052527, 6027450,
+5833640, 10894185, -4585952, -13991930, -93952, 12934831, 6135898, -8311836, -4141959, 6788196,
+-9299678, -73014, 200253, 11882027, 4660040, -6519761, -2825015, -7402913, -11944304, -10364830,
+-573915, 2245194, -5921686, -4363687, 1389422, -5980742, 9357123, 4554813, -112206, 5616207,
+18898392, -7196755, -3597035, 2127620, 5075041, -10196789, 11076721, -3732864, -341987, 1890859,
+8283382, 13939316, -20240570, 5311264, -40421012, -10954314, -2504503, -9948755, 44377212, 13982803,
+-11787538, -27884002, -14134201, -11480984, -17661442, -12967043, 6787659, -40705552, -8760660, 29867740,
+-3534221, -3362960, -31095026, 29655138, 14704357, 660888, -11791296, 12633646, 6274411, -7092065,
+13543106, -21024938, -5572720, -10743324, 6030671, -4918275, -13237626, 15024869, -11290932, 6260452,
+438087, -20429012, -12710956, -3198140, -25550760, -25103546, -33590940, -8685498, 15413564, -11294153,
+-6150393, 19369766, -23638426, -19452980, 20959978, -184147, -1207960, 18855444, 282394, -16164646,
+-9269613, 6352257, 13656385, -20881058, -6546067, 25373594, 10982231, 24482924, 12709345, -5034239,
+12915504, -1005022, -33172716, 10405632, -25092272, 18175228, 3194382, 6652905, -10552198, -28722594,
+6056441, -4303021, -24893630, -10006200, 11196443, -12664248, 541166, 3904125, 8159364, -8134131,
+459562, 1187022, -2124935, 5178657, -3711926, 2890513, 10241886, -1911797, 3526168, 2661269,
+-6600828, 2066416, 4929549, 2768643, -4922570, 6703370, 4693863, -516470, -6901476, -14190572,
+2945811, -11234024, 9137006, -11469710, 7538742, 9346923, 475131, 518617, 304406, 5302137,
+863288, -4902169, 11060078, 8794482, -4332549, -6929930, -11546483, 30285962, 10573673, 1117765,
+3697967, -7909719, 12008192, 18662706, 47278464, 41293964, 3570729, -18179522, 8410083, 23943906,
+6843494, 18540836, 13372381, 8978629, -14013405, -17995376, -21626770, -1507534, 8034810, 15232102,
+30713848, 16253767, 19697794, 11454141, 18262738, 9215389, 17592186, -11748883, 3316789, 33205466,
+-892816, 25545928, 6771016, 20659866, -32779728, -5331128, -9662603, -9658845, 7645042, 12767327,
+23741506, 38408280, 32172526, -11404212, 5713380, -42652248, 10361072, 9821516, 37580428, -29875256,
+23767812, -7756711, -20943334, 16049219, 4952634, 13394392, 23541252, -7659538, -30149060, 15604690,
+-19382650, -26578868, -12633646, 35560720, -30868466, -43815644, -22111566, -7260106, 23110682, -2412698,
+-15756624, -30240864, -22830972, 14461155, -2065879, -565862, 19588272, -21336860, 6101001, 21908628,
+8533563, 14666776, 21220360, -14371497, -7241315, -12146168, 16230145, 3603478, 8356933, 5915781,
+-14605036, 18138184, 4482872, 2874407, -7154879, -26519812, -25333864, 2524904, -12057047, -5004174,
+-11436424, -9946607, -4365835, 4672925, -151934, -11186242, 14283987, 11970611, -1611150, -12698071,
+2081449, 7646653, -9074192, -4111358, -5211406, 105764, 6172942, -2850785, -6272800, -5078799,
+4340602, 3631395, 6963216, 8684961, -4553739, 4962298, 5374078, 29707752, -9371082, -32829120,
+2303713, -13711683, -46932720, -23738284, 61550640, 8608188, -27799176, -30521648, 3434900, 544924,
+12710419, 15979963, -21530672, -14294725, -34346852, 7996692, -12463458, -8244727, 52476448, 11270531,
+-7266011, -54169740, -3506304, -28924458, 28660316, 35413080, 3704946, 27551678, -32466194, -12768938,
+-20516522, -4842576, 53586160, 66748624, 10649908, -17814988, -23848880, -48189532, 648003, 6236830,
+58254252, 32518808, -8527658, -95784752, -49629420, 8249559, -9208410, 84136800, 28187870, -40377524,
+-16813186, -72086192, -22827214, 2542084, 47140488, 48652852, 54608360, 2605972, 12931073, -5740224,
+4707821, 67189928, -24802900, 49356152, -11960410, -50673096, -15181099, -53717156, -17264158, 70350488,
+31978716, 50233400, -16654273, 39395052, -44109316, -7026030, 10481331, 21001316, 41777684, -14097156,
+-912144, 2639794, -3962644, 6460168, 11143293, -11950747, 1816771, -12566537, -22738630, 10226317,
+18471044, 10305237, -2400887, -13648869, -30422328, -29955250, -15804406, 10142028, 27996208, 15780784,
+21655762, -29446832, -38612292, -29778618, 3344169, 33823940, 37554656, 28855738, -17244294, -73536816,
+-47265580, 1433982, 37015100, 79915920, 30961346, 6571300, -36389648, -47936128, -16660715, -15253576,
+41878616, 46286324, 17299592, -2743410, -40172440, -30128122, 9175124, 13839995, 34061240, 16557099,
+-17607218, -12319577, -21082384, -10031970, 9893994, 9047885, -42673720, 47327856, 79994, -12333535,
+-73531984, -19794430, -19857244, -33175938, 71185328, 762894, 31891742, -48657148, 27015882, 22687090,
+-21895744, 14247480, -4211216, 12736726, -11274, 36422396, 12858058, -35328792, 21334176, 17614734,
+-125628, 24596740, -18190260, -9327058, 30848602, 21643950, 20540144, 10279467, 17868674, -53243636,
+46468324, -26714160, -17028472, 10190884, -37363532, 54575612, -15540802, 5504538, 39363912, 1418950,
+-6029597, 21474836, 21863532, 38676716, -9465571, -35785132, -36576480, 4131222, -13237089, 17001628,
+-22143778, -10671383, -15008763, 11014444, -68702832, 1200443, 50918448, 14187351, 20697984, -1837172,
+-5666136, 13513578, -18181670, -20659866, 12731357, 7177427, -22406308, -24761560, 94551024, -10151155,
+-30826590, 8679592, 44281648, -1154809, -35003448, 14464913, -6626061, -13152264, 28478318, 36318780,
+-26598732, -43331388, 9740449, 10521059, -10088341, -25891136, 1218160, 13160317, -4068945, -4154307,
+-1796907, -4415764, 6888054, 7795366, -8993662, 1037772, 3818226, 2001455, -5440650, 2049773,
+-375273, -11969537, 8580808, 3749507, 16675747, 8359617, -6437082, 6887517, -3389803, 9914395,
+-782221, -2523830, 13587129, -3347927, 9285719, -2698313, -10821170, -893353, 12223477, -3416647,
+13924821, -13224204, 17503066, 4168803, -12706661, 5348308, 207232, 6502044, -2196339, -5051419,
+-1344862, 13749801, -36681168, 13063680, 57882200, 91163904, -40308268, 29716342, -60186988, -17737142,
+-36666136, -4995584, 56018720, 59456308, 47245712, -1477469, -37729676, -22809498, 20542292, 1552094,
+10303627, 31079994, -570694, 15476378, -39549668, -10077604, -22877144, -27851790, 15291157, 12749074,
+862752, 27875948, -23661512, -837519, 6276558, -33347736, -921271, 2350958, -21088290, -7948374,
+7907572, -14076755, 31412318, -10264435, 47582868, 35996120, -23460186, -6575058, -32610612, -37262600,
+-48400524, 15486041, 22308598, 64698852, 49334680, 23060216, 31351650, 6012954, -35638564, -23551990,
+-19966766, -24257976, -5161477, 13584445, -1313723, -16669305, 4335770, -16819092, 10569915, 24103356,
+4692252, -25144886, 19643032, -12057047, -12808666, -25164750, 13012140, 11156714, 5700496, 3081639,
+57028040, 43589088, 35642860, 6047851, -8293045, -48324824, -10136123, -5061082, 47498580, 27214524,
+12364137, 14347338, 41133440, -6578816, -16415902, -22254910, -18644990, -8791261, -4198331, 3717831,
+470836, 261993, 21325050, -2521683, -12791486, -7861401, -4416300, 405338, 10522670, 18998250,
+8295730, -2470680, 11745125, -19793356, 7657390, 18059264, 7340099, 35661112, -14717779, 151398,
+6039798, -15005005, 3818226, -23820426, -1304596, 8193724, 202400, 9552007, -6873559, -98972152,
+-57332444, -33006824, 56899728, 26718454, 151434640, 142380848, 147048400, 148809872, 159362080, 112170048,
+58497456, 84954456, 50984484, -25337086, -47205448, -72698224, -141491248, -127397856, -132189968, -95741264,
+-97126392, -71905808, -59697360, -31661962, 3192235, -55934968, -28683940, -11565273, -8892193, -30245696,
+7758322, 37929928, 42469172, 15897285, 50184544, 64004140, 15795279, 12648679, 12600360, 62896576,
+65410204, 82695304, 92433600, 81021872, 91796336, 139584288, 56501904, 109003584, 148580640, 95664488,
+112772960, 88794152, 44378288, 53079892, 58562416, 52206940, 70757976, 69860328, 43251932, 8553964,
+21483426, 41210212, -2618856, 4862977, -19811074, -22673132, -70164200, -31477278, -121568512, -152609312,
+-122353952, -139229424, -189642128, -182987616, -108608448, -204403936, -185615072, -169261984, -191619968, -161540704,
+-123368640, -154789552, -114045880, -31465468, -75756240, -93522376, -37067716, -36899136, -30486214, -33470680,
+-14964740, 9385577, 19228032, 37520836, 48399988, 55624120, 62513248, 64763812, 91183232, 56041272,
+107426792, 120423904, 57272316, 111874768, 106249976, 67575408, 81439024, 118371448, 80400176, 133591736,
+100753488, 126689184, 88607320, 80711024, 83516712, 78212432, 61304216, 70387536, 61072824, 48525076,
+36436356, 35748624, 28918552, 12790949, -8905078, -6702297, -5021891, -41681048, -68319504, -65333968,
+-67308576, -73023568, -67900208, -75548472, -54877336, -56453052, -46395312, -33914672, -26711476, -30027726,
+-29898342, -22257058, -15744813, -16895328, -22944790, -11113765, -5379447, -12097849, -19443854, -9938017,
+-6550362, -8323110, -9280351, 1234803, 3693672, 5188321, 603980, 1806571, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
10777147,
-565325, -710817, -370978, -846109, -5516886, -5599027, 5360656, 1287417, -3201898, -4889821,
--2353642, -3695283, -6370510, 8149701, 987843, 2952253, 4065187, 11740830, -299574, 1874753,
--2827699, -1044214, -2174864, -7653632, 1708860, -2341831, 756988, 5318780, -2099702, -523449,
-1158567, 562104, -1263794, 248034, -7070053, 1466195, -169651, -2538863, 2211908, 1013075,
--4758824, 7509751, 263604, 1077500, 6990060, -2716567, -3019362, -6895033, -3491809, 4756140,
-298500, 5069672, -2485712, -5641440, 2451890, -5259188, -2351495, -10147397, 4169340, 3542274,
-2161979, 3045669, 6957847, 1796907, -3055869, 3746285, 5778879, -3791383, 2860985, -32212,
--1220845, -1973001, -1557999, 3882114, -789200, 4308926, -2186138, 1720671, -1349694, 1554241,
-3149285, -1726040, 1147293, -1198296, 2544768, 2047626, 1743220, -897111, 603443, 46171,
--1419487, 685047, 2486249, 415001, 842887, -1496259, 976568, -828929, 578210, -1155883,
-246961, 1439351, -4263292, 1148904, -2638721, -5406827, -526670, -6386617, -7740605, -4894652,
--3707094, -8543764, 345745, -3088082, -1716376, 2624225, 9100499, 829466, -2160369, -1046898,
-1464584, -180926, 3781182, 6455336, -544924, 7248831, -833761, -477815, -867583, 4127464,
--5459441, 847182, 662499, -1343788, -310848, -3264175, -5425618, 7451769, -2536178, -557809,
--1328756, 3286187, -3546032, -3055332, 1299228, 1102733, 5207648, -3575024, 4289062, -2509335,
--4294431, -341450, -1774358, 1162326, 2336999, -96637, 3032784, 1439888, 2210835, -2877628,
--3377455, -5599564, -4112431, 521302, 6681896, 840203, 5427228, 1404991, -2794413, 3728032,
-1772211, -4035659, 7071127, 1175210, -6658810, 1731409, 3018288, 594853, 2004676, 1728188,
--4717485, 1716376, 1652489, 1159641, -271120, 3469260, 1168231, -892279, -1139240, -27917,
-1389422, -43487, 1886564, -62814, 91805, 1084479, -450972, -1038845, -666257, 184147,
--921271, -988379, 1214402, -119185, 1165547, 1020592, -284005, -105227, -7925826, -7044283,
-1493575, 792421, 5896990, -4567161, 6066105, -3098282, -1376000, -9556302, -635118, 608812,
--3299609, -598611, 5092221, 4796405, 7220914, -1804423, -1134945, 4485557, 2093797, 4023311,
--9865003, 9699647, -2131915, -180389, 1511292, -1237488, -110595, -921807, -708133, 5994164,
--212601, 7884486, -1402307, -3304441, -6638946, 715112, -3027415, -2676302, 4524748, 3469797,
-4732517, 100395, 551903, -7090991, -5110474, -136902, 6361921, 2152316, -864362, 2080375,
--2708514, 6755447, -405338, -5951751, -7515656, -2733210, 8337069, 6265821, 6430103, 2943663,
-204548, -7072738, -3171833, -1051730, -4138738, 4261145, -774168, -2022393, 3659849, -10044855,
-2955474, -1336272, 2339684, -823023, -2889439, 4495757, 1690607, -4779225, -5060009, 2518462,
--1334661, 2944200, 783832, -2180770, 1529008, 1863479, -104690, 701690, -15569, 191663,
--858457, -38655, -1403381, -8053, -1224066, 1960653, 1071058, -1527935, 744640, -406411,
-515933, 512175, 682363, -1140314, -983548, 336618, 729071, -2079301, 1998770, -2255932,
--4347044, -718333, -3367791, 1539746, 5449240, 2134062, 191663, -2223183, -12671227, -8353712,
--275415, 3665755, 4435091, 253403, 893890, -1790465, 4396973, 1946694, 3522410, -5526013,
-5233955, 3003793, -5957120, 2228014, 5456756, -302795, 1762010, 885837, 4947803, -3852586,
-2935073, -506269, -671626, -4738960, 285615, 5064840, -3237332, -2345589, -4439386, 5945309,
--585726, 1154273, -4670240, -13304735, -3882651, 1950452, 1222455, 4910758, -3543885, -2189360,
--2022930, -892816, -4280472, 129923, -3865471, 8712341, 3061238, 7106561, -7205882, -1422171,
--2992519, 6658810, -2034204, -1232119, -5551245, 3438658, -120796, -3711389, 5666673, 1753957,
-686658, 6502581, 1386201, -5708549, -804233, 687195, -1557999, -1929514, 34897, -4849018,
-9607305, 3958349, 1390496, 5988258, 2593087, 2364380, 4395362, -1264331, 3718368, -2139968,
-634581, 381178, 216359, -1116155, 665720, 284542, -360777, -654446, -629750, 457951,
--499290, 38655, 3181497, 330712, -100932, -57982, -49929, -434329, 2523293, 650151,
-3537443, -2817499, 2245194, 212601, -1456531, 6012954, 4573604, -463320, -8202314, -10941966,
--8458938, 3131568, 2147, -4726075, -1237488, 554588, -1080721, 12313671, 2121177, -8896488,
--2370822, -2659122, 442382, -4187593, 6958921, -5204964, -6828461, 6375879, -2687039, 1750736,
-1686848, -2916283, -8038568, 1070521, -4287451, -3781719, -3941169, -490700, 6245420, -864899,
--1425392, 9240085, 1687385, 1414655, -11931956, -1331440, 6349573, 7443179, -4126927, 2018635,
-1008244, -11766600, -1585380, -723165, -1211181, 2961380, 120796, -6602976, 846645, -5281199,
-5046587, -1800128, 6498823, 1294396, -7490423, 3306588, 14011794, -5455682, 105764, -10463077,
-2514167, 8785356, -15782931, 2240362, -1142461, -1377074, 3896072, -2556579, -4139275, 7384123,
-7047505, -6127845, -768799, 4617090, -2088965, 1077500, 2153926, 1355062, 418222, -1801739,
-3913252, -121870, 2546379, 90731, 3491272, 2381023, 2188823, -206695, 724239, 3904125,
-386010, -828929, 1340030, 1198833, 426276, 3237869, -1850594, 1012539, 478352, -751082,
-192737, 1150514, 773631, 368293, -357556, 10545755, 1312113, 4729296, 7472706, -9213779,
--2827699, -7031399, 3537443, 4080219, 8115341, 15709380, 2473364, -11980811, -1119913, -3011846,
--1242856, -5181341, 19327, -579821, 5938866, 4727686, 1721208, -424665, 237834, -1845225,
--1370632, 6804302, -2219424, -911607, 5085242, -638876, 2996277, -507880, 6472516, -4941897,
--9785009, 12170864, -717260, 2889439, -9159555, 674847, -2786897, 13503914, 2127620, 6112812,
--1278827, 5420786, 3648038, -12222403, -1926830, -6863358, -5900748, 823560, 8613020, 1080721,
--1730872, 13370233, -1416802, -7556458, -5770289, -3954054, 6562173, 20201378, -41876, 5605469,
-1449015, -6439767, -1414118, 110595, 5994164, 9183177, 844498, 7380902, 6585259, -12097312,
-400506, -2161979, -308164, 6061273, -2705830, 1574642, 2862596, -933082, -6212134, -4313221,
--9073655, 2170032, 3616899, -457951, 1396401, 1334124, 1102733, -111669, -2817499, 595390,
-1336809, -161061, 1238024, -1473711, 2416993, -210453, 1214402, -670552, -434865, -1170379,
-307090, -629750, 425202, 1995549, 3209414, 2651069, 402116, 690953, 1966021, 1089848,
-61740, 1107028, -3595961, -15602006, 3535832, -1578937, 5350456, 3427384, 14518600, 2919504,
--2752000, 3476776, 11107859, 12294881, 5073967, 8657580, 8855686, -6877854, -5345624, -11141682,
--12038793, 1308354, 5182952, -10187126, -7247758, -562104, -11782706, -9769977, 4940823, 1574642,
--5240934, -3494493, -7734699, 6403260, 4674535, 10535555, 20037634, -2236604, -5697811, -2153926,
--9894531, -130460, -7713225, -8533563, 10260140, 1158031, 1399086, -13215614, 13617731, 2695092,
--8506183, -2742337, 7001871, 456340, 1504312, -246424, 1125281, 3974992, -6519761, 7614440,
-151934, -5370857, -1512902, -9192841, 1410897, -9438191, -8380018, 7211787, 7444789, -7509751,
--11927661, 3016678, -5761162, -876173, -3193845, 3989488, -3428995, 5269925, 1673964, 6383395,
--1469416, 4763119, 2445447, -10707890, -3758633, 2610803, 1387274, 173409, -5303748, -3001645,
--1598265, 3514894, -2059974, -1792612, 139586, 2811593, 2184528, -141734, -168577, -3084324,
--1665374, 570157, -738198, -328028, 2500208, 255551, -187905, -2270964, 2157684, 675384,
--832687, -454730, -1526324, -306016, -1687922, 2272038, -574989, 1036698, -671089, -5950141,
--6492917, 7844758, -2418604, -1865090, 4541391, -6562173, -6891812, 7908109, 10597295, 156229,
--647466, 3563212, -9122511, 15533823, -9554155, 1101122, 7441568, -3567507, 6942278, 8364986,
-2761664, -8844411, 9496173, -1446330, 3564823, -6941741, -1299228, -13173202, 4515085, -7838316,
-3003256, -13557064, 7932805, -9918153, -6914361, 5629092, 7830263, 2609730, 857383, 300648,
--8515846, -7917236, -5054640, 20558398, 11280195, -3259880, -19086834, -2710661, 5343476, 11081016,
--6300717, 886911, -13201656, -4544613, -1656247, 3415573, 1904281, -2968359, -267362, 5774584,
--6553583, -365609, -7466801, 4042638, 4829154, 14220100, 6005438, -6909529, 2899103, -3844533,
--10779831, -1352915, 6178311, 890669, 17669496, -10124312, -4980015, 2747705, -9261023, 4723391,
-1441498, -1725503, 8959302, 2243584, 3937948, 88047, 292058, -1381906, 4413079, 6648610,
-1566053, -1886028, 4827007, -2508261, 1494112, -4545686, -1559610, 18790, -6048925, -74625,
--2371896, -1037235, -2367064, -3873524, -1835025, 1373316, 1493038, 1085016, -1296543, -157303,
-2632278, -4362613, 431644, 417149, -13570486, -1995012, 2784750, 8011188, 3901978, 10459319,
-1907502, -12502650, 7962870, -10576894, -11319386, 316754, -1024887, 8618389, 10716480, 9855339,
-14375256, 3517041, -14821395, 16237661, 8883603, -6554120, 12497818, -1608465, 1533840, -10947872,
--3779034, -3151432, -4844186, 10478646, -17576080, -3969087, -8249559, -7847979, 1469416, 8490077,
--3997541, -10140955, -10750303, -14012331, -14158360, -7192460, -2392297, 6127845, -11108933, -14416058,
--8506720, -3622805, -7059316, -4721243, 12593381, -7055021, 1205812, 6684580, -11381126, -6763500,
--7662222, 12394739, -5257577, 8077760, 17764522, -1710471, 4006131, 1747515, -5410048, -7113540,
--4846871, 8394514, -1222992, 9609452, 603443, 7258495, 1714229, -12169253, 15118285, -6496138,
--1899449, -12928388, 7967701, 16992502, 2893734, -2309082, 4532264, 1982127, -10844256, -5055714,
-667331, -2554969, -1145146, -4667556, -4559645, -740345, 833224, 694174, 7915625, -897648,
-1025423, -3894462, 3021510, 339302, 5953899, 2591476, 2698313, 1137093, -692027, -2538863,
--2133525, -3531537, -752693, -2656437, 1797981, 926102, -41339, -1846836, -1559073, -1349694,
--525597, 632434, -620086, 3264712, 25151866, 15858093, 11541114, -8339753, -18103824, -4887136,
-11023570, -17148730, -9342628, 330712, 13471165, 9654013, 7827578, -9936407, 7499013, -2677375,
-7496866, -1966021, 19477140, 11673721, -960462, -17914308, -1842541, 13576392, 11553999, 478889,
-23611046, 10676752, -4741107, -11274, 1634235, -2794413, -6589017, -9094593, -1425392, -25530896,
-7237557, -8759586, 1218160, -900869, 6671695, 9496710, 244276, 2526515, -11388643, 8116952,
--4136054, 16902306, 390842, 2413235, -41176924, -1771674, 10990821, 5671505, 11689827, -4008278,
--11527692, 6405944, 2239289, -9446244, 8995809, 1823214, -9052180, 132607, 390842, 3158949,
--3324842, -15074798, -15101105, -620086, -5431523, 5064304, 5326833, 2240362, 5669357, -18458158,
--6325950, 951335, 4095788, 4457639, -7348689, 5798743, 1354525, -2641405, 1953136, 5231270,
--3476239, 703301, -1121523, 2164127, -3536906, -5531918, -1867237, 6581501, -4975183, 702227,
--3717831, 2637110, -1538135, 2334852, 3792993, -456340, -3773666, 3089155, -638876, -4412542,
--2815888, 1587527, 2040110, 243739, -1784022, 879395, -360240, 2723546, -1286880, 5278515,
--1805497, -338766, -17376900, -27957016, 4509179, 9677098, 10051834, 234613, 23232014, -16529719,
-5446556, 3175592, -4715337, -14674293, -6182606, -8348880, 9849971, -4332012, -9039296, -14936286,
--1385127, -5524939, -2858301, -11268384, 5998459, -715112, -5276904, 6056441, 7714298, 9128953,
--11872363, 21665426, 1310502, -3126736, -13320841, -12525735, -2552821, -1655173, -12993887, -13547401,
--10397579, 8717173, -6026376, 14463302, 4626217, 24142012, 8279623, 9154723, -3110630, 12936978,
--2264522, 3099893, 18344880, -5612986, 6648610, -22091164, -28115392, 6105296, -1340030, -17862232,
-1100585, 416075, -24268712, 6801081, -7158100, -4825933, -9486509, 9125195, -8864812, 475668,
--991064, 4383551, 10201, -13307419, 7777649, -1945620, 3088618, -16776679, -23128936, -20609938,
-1129576, -4911832, -23419382, -4959077, 22472342, 11819213, 5201743, 4257387, -10406706, 313533,
--2399813, 975494, -3435974, -2799782, -134218, -285078, 882616, -62277, -7270306, -1775969,
-1901060, -1392106, 3484829, 5705327, 4792647, -81068, -818191, -2521683, 7605314, 4359392,
-5002563, 4150549, 3061775, -592706, -2911988, -2636036, 5932961, -4625143, 3535832, 4973572,
-1946157, 2441152, 398895, 1452773, -4019553, 342524, -1163399, -3464428, 1655173, 4502200,
-17013440, 22207666, -609885, 5915244, 14047227, 11515344, -1154273, -28256590, 19372986, -1897839,
-5290863, -5753109, 9942312, -688269, -12208981, 3455301, 22258132, 3417183, -14577656, 12876312,
-9211094, 6034966, -10961830, 11849815, 8789651, 1059246, 14148159, -5618354, 3795141, 22789634,
-16604344, 692027, 5258114, 11207180, -21488258, -4309463, -1371168, -3334505, -18830748, 4853850,
-5690295, 1117765, -14606110, -193810, -25002078, 1371705, -17870286, -3498251, 9190156, -7589207,
--10824928, -8662412, 5292474, 4399121, -9991168, 3986804, -3618510, 12357158, -6432788, -7212324,
-6405944, 11547020, -1131724, 5045513, 4429185, -27272506, -653372, -1990717, -13942001, 1463510,
-17747342, 5434208, -5013838, -2178622, 12960601, 9126269, 5649493, -3660386, 20578798, 215285,
--17133162, 2302103, 20594368, 10698227, 10449119, 6193343, 1111860, -5087926, -5848135, 3718905,
-3339337, 4894652, 7726646, -1924145, 6099391, 3716221, 595390, -1059783, -640487, 2727841,
--2798171, -1088237, -2775086, -79994, -1316408, 3003256, -6227703, 1049046, 2109366, 649614,
-4734665, -8426189, -3519189, 1399623, 1598802, -867583, 4845260, -1814624, -1625645, -2360622,
-545998, 3094524, 3670587, -4711043, 680215, 2130304, -4300336, -2760053, -2381023, 10858214,
--24999930, 10623602, -25888990, -30714922, -19870130, 1301912, -16953846, 16509317, -5198521, -20650202,
--718870, -5247377, 2784213, 3854196, -4838281, -2660732, 13602698, -4061429, 5177046, -7419019,
--7413651, 21684216, -7320235, -2482491, -671089, 4947803, 13340705, -27210228, -1862405, 14588393,
-14052596, 13207024, 1721208, -4919348, 27983860, 9512279, 8803609, 10951093, 4952634, -3930432,
-173409, 16513612, 5310190, -11636677, 6145562, 30393872, -16061567, 21014202, 7673496, -32036698,
-7738994, 21563420, -2359011, 9717900, -139050, -24270324, 12265890, 30292942, 1695975, 20613696,
--12475806, 18243410, 15049565, -448824, -2733210, 16751983, 8845485, -21932250, 21966610, -5388574,
--5021354, 13378823, -6460168, -7856032, -9805410, 3475702, 1141388, 3710852, -921807, -4400194,
-16507707, -14699526, 2546379, -3001645, -4816269, -12002823, -11434277, 6792491, -865436, -7376607,
--10200010, -8520678, -14532022, -10282152, -565862, -7103876, -4271345, -1016834, -7528541, 3219078,
--6624987, -6803228, -1839320, 1730872, 2432025, -3401077, -414464, -10677289, 4288525, -11201812,
-8606578, -2839510, -696322, -4888747, -2665564, -511101, 12885439, 6487011, -1297080, 3105798,
-8879308, 4852240, -4823249, -2263985, 3504157, -4363687, 7255811, 1659468, -2751464, -9733470,
--17276506, 41490456, 20529406, -48380660, -19943680, 5135171, -8019778, 13976897, 16455093, 17657148,
-20198158, -12408697, 38267084, -5759015, 966905, -12525198, 14421426, 19216758, -13847511, -15796353,
--3321620, -9097278, 1703491, 7664369, 1187022, -9943923, -3753802, 15758772, -1251446, 7963406,
-1928440, 18963354, 28427852, 10781979, -13657996, -32020054, -2677912, -5435818, 3614752, -7410966,
-10574746, 17748416, 1617055, -6579353, -14616847, 35007204, 30626874, -4062502, 14962592, -8333311,
--11172821, -33723008, 18655728, -15736223, -3610994, -1009317, -10524280, 5906654, 20729122, 3166465,
--9123047, 9830106, -4212289, -13922136, 21197274, 4300336, -29335164, 37610492, -25462176, -13650480,
-14563160, 14927159, 12528956, 211527, -31333934, -2699387, 2771865, -1823214, -10283225, 6072010,
--5368709, 2219424, 3911642, -13015362, 15054934, 10473815, 5058398, 2019708, -6152004, -4570919,
--287763, 5305895, 479426, 4092567, -2443837, -10081899, 3063386, -14777372, -4672388, 4699768,
--4357245, 8082055, -6839199, -1012539, -5810554, 6439767, 570157, 7920457, 9215389, 6330782,
-272730, -6976101, 5067525, 8566849, -1691680, -1002338, -9176734, -4050691, 10659035, -3643743,
-7198902, -625455, -4006668, 3777424, 3577708, -220117, -6046240, 11009612, -13350369, 1488743,
-19088446, 5660767, -25897580, -20773146, -4972499, 32402308, 3388729, -15560667, -41794328, -11627013,
--1897302, 9924059, 28767690, 22038550, -3075734, 273267, 18925774, 15400679, 718870, 4223027,
--56398288, -35560180, -17326972, -27866284, 2423435, -15544024, 24958592, -5713380, -1955821, -121870,
--10050760, -11476689, 18085034, 11269457, 6401649, -2557116, -8611409, -7713225, 9009768, -20211042,
--7572564, 3575560, -7006703, -9842991, 8429947, -29213294, -40877352, 9722195, 12773233, 15865072,
--23870354, -12692702, 13218299, 5018670, -39848708, -34999152, 2127083, -16938278, -17521320, 6517613,
--32193464, 16337519, -12453258, 13426605, 12884365, -7986492, -18144626, -41929080, -14698989, -12596602,
-23536420, -20343112, -13267691, 7176354, 24059870, 14025216, 134755, -8189429, -2694555, 7198902,
--7215008, 24314346, -15066208, -11809013, -5706938, -2113124, 6685117, -17911624, 10549513, 8086887,
--7503308, -12542378, 2917894, -726923, 12212203, -15664819, -20432770, -5183489, 3233574, -11303817,
--1701881, -13669270, 591632, 3334505, -6150930, 9537512, -2569464, -6759205, 2962454, -4568772,
-2782602, -3892851, -14200236, -624381, 1042603, 13556527, 10633265, -6525129, 48855, -730681,
--8017094, -10256919, 4974646, -2605972, 16578574, 22886270, -3692061, -30660160, 13882408, -4548907,
--12843026, -26422102, 7880728, 11391327, -39294120, 14899778, 13943611, 35492536, 3193308, -8806294,
-2186675, -43276092, -12596602, -5193153, 561567, 8008504, -14820322, 26643830, 10639171, 32916092,
--6595996, 28962576, 18548890, 11494406, 26331370, 13402982, 17376900, 22443352, 979789, -29222958,
--27638114, 5697811, 31644246, 22919556, -42161008, -1154809, -7140920, -5870147, -4425427, -29152628,
-7481833, -20750598, 18728204, -13863081, 42258720, -11057930, -60625612, -6389301, -20892332, 12115566,
-9003325, 17330194, 39346196, 8854075, -5344013, 21606906, -12717398, 44028248, 7401840, 29479044,
-13830868, 2748779, -11143293, -10016937, 72156528, 499827, -49803904, -9943386, 39811124, -23718956,
-5226439, -10902238, 17481590, 36625332, 21109228, -42098196, -2716567, -41441604, 5776731, -5648956,
--24572044, -2823404, -6636798, -10808822, -51540, -21182242, -23331872, 8162049, 8832600, -1073742,
--26111790, 18964428, -23133230, -35760436, -15251429, 9017821, -8870181, -15883863, -20550344, 3874061,
-8719320, -18568218, -14231374, 7015292, -8236137, -14959908, 12331388, 9922448, -863288, -1781875,
-733366, -3338263, -6132140, -6456410, 2426657, -13791677, 8188355, -4853850, 3129421, -17563196,
-19862614, 8601746, -41219340, -15463493, -46809236, 7136088, 41261212, -30403000, -28509992, 27263378,
-12817793, -46663208, -44222056, 14179298, 2340757, 6492917, 15054934, -1842004, -13276818, -6750615,
-28258738, -20231444, 34893924, 5688148, -8170639, 7460358, 20160040, -66035, -6035503, -37338836,
--16387448, 4151623, -20010790, 17273284, 25791816, 1869385, 4271345, -26709864, 31865436, -11181410,
--14242112, 25995826, -9982041, 63888, -18635326, -1882806, -13100187, -45913736, 15767899, -5132486,
-34142304, 43797392, -636192, -7803956, -27747636, -8760123, -7719667, 41678900, -39604432, -27948962,
--65650724, 1553168, -27175868, 7553237, 22786948, -12267500, -3419868, 44805100, 28895466, 20443508,
-3535832, 2065342, 34000036, -36841692, -1599339, 10486700, -4348655, 20357608, 9764608, 86453400,
-13671955, -23593330, -1321776, -16160351, -42596412, -16866336, 1589675, 7254737, -8201777, -8815957,
--8061654, -30419642, -380641, -2487860, -16158204, 4329864, 10854456, -26075820, 1714229, -17685064,
-6940131, -1188632, -6142877, -3491809, 1520418, 15397995, 8981313, 712428, 17038672, -10439455,
--2198487, -4952634, 16037945, 10751914, 7636989, 16508244, 7682086, -11731703, -5632313, -1896228,
-8182450, -14766098, -3795677, 511101, -16674137, -5153424, 3046743, 39967356, -29358786, 10187126,
--10080288, -14249628, -13894756, 60410864, -8102993, 29662118, -23952496, 41220948, -14300094, 619012,
-22200686, 23814520, 56834764, 2729989, 9287867, 8366060, -24148990, 29367376, 9083856, -17220672,
-28592672, -11921219, 36013300, 27555974, -8522289, 23985244, 1105417, 22402550, 4494147, 37963752,
--23156316, 18978386, -38318088, -9519258, 12867722, 41161356, -1799591, 3412352, 17701170, -33823,
--13842680, -49345952, -30565672, 8572218, -21226802, -814433, 15631533, -42968464, 26382910, -1753957,
-31374200, -14782204, -29316374, -4968741, 81069656, 18556406, -73726872, 13147969, 18796388, 4758824,
-80268640, -4679904, -59086400, 61500712, -20658256, -3779034, 67184024, -7036767, 44205952, 7305203,
--39879844, 1889249, 68692096, -55832964, 29460792, -34133716, -38674568, 28916404, 17336636, -35212828,
--12924093, -21783538, -11882564, -12636331, 6479495, -21457656, -4380867, 8898098, -22167400, -15715822,
-11656004, -25834766, -6252399, 9485972, 3726421, -5734855, 19696720, -8184597, -6503118, -9164923,
--17583596, 8910983, -11285027, -12857521, -2964064, 2612414, 26276610, 448824, 7557532, -21226266,
-2385854, 28039158, -4991289, -2930242, -2004139, 1730335, 2128693, 19714436, -10024454, -11496017,
--5719286, -18080202, -21735218, 6255083, -10706280, 4831302, 7155416, -2831457, -59272160, -4502737,
-9341017, -22149684, -6276558, -62209380, 39604968, 60552060, -26386132, 8626442, -45832668, -134351408,
--25496536, 6305012, 68467144, 57360900, -55874304, -49930068, -50170048, -41327784, -28981366, 35647692,
--5895380, 78442208, 53333292, -15690052, -64530272, -161987920, -104619496, 7413651, 180211456, 137005696,
-25395604, -70498664, -176747024, -181269088, -12873091, 105720080, 163697312, 179224160, 18813568, -57812944,
--72967736, -97120488, -87207704, 5997922, 60911228, 112878184, 78005736, 62162672, -80438296, -98913096,
--115971096, -139978352, 16073915, 168083008, 165907600, 33821256, -59391880, -157364912, -206188496, -69681016,
-16271484, 76959912, 188817504, 69573640, -120796, -103770704, -84727896, -35640712, 43162812, 73891688,
-129699960, 34027952, 67864776, -5279052, -86502248, -71621800, 4298726, 83715888, 91382408, -41357852,
--79054240, -97001840, -24165634, 16066399, 23223426, 15007153, -48373680, -41856068, -17251810, 31224412,
-122943, 667867, 7054484, 25016574, 20189568, 15680389, -8432631, -58986008, -39224864, 4601521,
-30595736, 56680684, 27466852, -15790984, -37396280, -49383532, -30944702, -19737522, -25875568, 56848188,
-59322088, 65154116, 54059680, -24903294, -103533944, -87678000, -47266116, 40143984, 131068984, 127107408,
-7181186, -80014704, -125314800, -112710680, -7301982, 62820876, 59038620, 28792388, 25959320, 1650341,
--33602212, -40205724, -50968376, -7521562, 47725676, 58698780, -15966541, 28918014, 22234508, -50995756,
-556735, 26229366, -21069498, 28992102, -1177358, -5317170, -2079838, 5842766, 22042310, -8664023,
-25974888, 17655536, 10581726, 11747272, 8925479, -2257005, -14860050, 24277302, -318901, 14809584,
--8828305, 13185013, -4528506, -1902134, 8979703, -12024835, -12657805, 1853278, -5434208, 19648938,
-19447076, -17819820, 8906688, -10619844, 12240120, 242666, 8045011, 3038153, 10436771, -12695386,
-8816494, -14608794, -6305012, -2041720, -1619203, 11767674, -22232898, -4416300, -9158481, -19836844,
--1723893, -7810398, 4771172, 18854370, -5638755, -26197690, 4243428, 16218333, 31729608, -1415192,
-2827162, -17111150, -12948253, 14730664, 1374926, -5624797, 479426, 25844966, 11486890, 8135742,
-14006962, 23812372, -26989574, 10754061, -4582730, -40346924, -4668093, 31160524, -5753646, 27719182,
--1212255, 17201344, -20373714, 12578349, -13850733, -4159139, 27357868, -7894150, 2544768, 536334,
--95026, 9953587, -19327, -4132832, -2304250, -796180, -1913408, 4961224, 7856569, 11409044,
-1311576, -9845139, -4406100, -12717398, 4774930, -13185013, 7102266, 5351530, -4054986, 7299297,
-2342905, -13675176, 213675, -76236, 4335233, -23445690, 8156143, 5124970, 2024540, -702764,
--6482180, 7585986, -11853573, 11857868, -962610, -1513976, 3175055, -5789079, 10041097, -11388106,
-3120294, 5666673, -18602578, 47546360, 81918984, 7001334, -53594748, 17987324, -4036196, 66428648,
-31203474, 65299072, -6147172, -31010200, -8445516, 14497662, 27434640, 21486648, -12107513, 2127083,
-11644193, 8481487, 25916370, -18101676, 4362076, -24417962, -3969624, 375810, 6269579, 12771085,
-2782602, -10392747, 19841676, -1796907, -17564806, 23981486, -4110821, -8528194, 6340983, -3521873,
-18622978, 29777008, 711891, 7809325, -10021769, -6200859, 17184702, 12502113, 14227616, 2869575,
--9052717, -18654654, -19214074, -20816096, 16675747, 18391586, 17963700, 26867168, 28713466, 12473122,
-1501628, -25042880, 15365782, -2641405, -22793928, 28186260, -2081985, 18554258, 9683004, -28148678,
-7787850, -8326868, 6015102, 19123342, 3551938, -23519778, -16756278, -13851270, -24720758, 15097884,
--1529545, 26015690, -278636, 4284767, 506806, -13981729, -9044127, 4971962, -21210160, 6448894,
--230854, -4076998, 7630547, -11741904, 7159174, 4694400, -964757, -9938554, 13069585, -3272765,
-11591580, -19562502, -14445049, -8491150, -7606924, 9283035, -3913252, -2398739, -2508261, -9782862,
--5340255, -6004901, 5369, 18176838, 2413235, -4599910, -304406, -10551661, 7688529, -5866926,
--1044751, -4017405, 8615704, -741419, 1133871, -1828046, -6256157, -4242891, -28952374, -64612416,
-4344360, 89608584, 118366616, 101700528, 70055208, -2914672, 4304094, -51729660, -61686468, -103484552,
--78303160, -83074328, -26999776, 7085086, 27022860, 45565844, 112878720, 94036160, 63225140, 20563230,
--10024991, -40764072, -30468498, -42386496, -54056460, -29969208, -30943628, -37946036, -17762374, -24944634,
-5234492, 17736604, 14780593, 48179332, 44348220, 39479340, 25711284, 29920352, 18719078, 35820564,
-8548596, 31002684, 1305133, -8011188, -54050016, -23408646, -65131568, -75568872, -84667224, -66250944,
--49894100, -17588428, 12695923, 48693656, 51729124, 40917080, 83977888, 68207840, 72732584, 67517424,
-62844500, 25343528, 40615360, -16246788, -40565428, -42363948, -100017440, -99781216, -96569120, -102589048,
--84755272, -28858960, -14339822, 22893786, 57223460, 62527744, 76206680, 91983704, 81889992, 63985884,
-57964880, 42847668, 15886010, -1489280, -34487512, -50524384, -51147692, -58143656, -48959404, -54687820,
--57213260, -48105780, -37660420, -18705656, 2109903, 24988656, 47800840, 44987100, 44140988, 52310016,
-57549876, 44773960, 44595720, 20092930, -21121038, -15204184, -37029596, -46794204, -39329552, -32074278,
--22808960, -28344636, -20791400, 2631204, 5814849, 10131291, 25145960, 22437982, 13969381, 3660923,
-9356586, 9878962, 2691334, 12460237, -7876433, -8296803, -7046968, 4810900, -1621350, 408022,
--920197, -1432909, -9473087, -6236293, -2992519, 9042517, -363462, 4274030, 986232, -4624069,
--6285148, -2857227, -4555350, 1460826, -666794, 1704565, 460635, 2238752, -2809982, 2257542,
--2128693, 613643, 453656, 4232691, -520765, 2398739, -1600412, 1698660, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+565325, -710817, -370978, -846109, -5516886, -5599027, 5360656, 1287417, -3201898, -4889821,
+-2353642, -3695283, -6370510, 8149701, 987843, 2952253, 4065187, 11740830, -299574, 1874753,
+-2827699, -1044214, -2174864, -7653632, 1708860, -2341831, 756988, 5318780, -2099702, -523449,
+1158567, 562104, -1263794, 248034, -7070053, 1466195, -169651, -2538863, 2211908, 1013075,
+-4758824, 7509751, 263604, 1077500, 6990060, -2716567, -3019362, -6895033, -3491809, 4756140,
+298500, 5069672, -2485712, -5641440, 2451890, -5259188, -2351495, -10147397, 4169340, 3542274,
+2161979, 3045669, 6957847, 1796907, -3055869, 3746285, 5778879, -3791383, 2860985, -32212,
+-1220845, -1973001, -1557999, 3882114, -789200, 4308926, -2186138, 1720671, -1349694, 1554241,
+3149285, -1726040, 1147293, -1198296, 2544768, 2047626, 1743220, -897111, 603443, 46171,
+-1419487, 685047, 2486249, 415001, 842887, -1496259, 976568, -828929, 578210, -1155883,
+246961, 1439351, -4263292, 1148904, -2638721, -5406827, -526670, -6386617, -7740605, -4894652,
+-3707094, -8543764, 345745, -3088082, -1716376, 2624225, 9100499, 829466, -2160369, -1046898,
+1464584, -180926, 3781182, 6455336, -544924, 7248831, -833761, -477815, -867583, 4127464,
+-5459441, 847182, 662499, -1343788, -310848, -3264175, -5425618, 7451769, -2536178, -557809,
+-1328756, 3286187, -3546032, -3055332, 1299228, 1102733, 5207648, -3575024, 4289062, -2509335,
+-4294431, -341450, -1774358, 1162326, 2336999, -96637, 3032784, 1439888, 2210835, -2877628,
+-3377455, -5599564, -4112431, 521302, 6681896, 840203, 5427228, 1404991, -2794413, 3728032,
+1772211, -4035659, 7071127, 1175210, -6658810, 1731409, 3018288, 594853, 2004676, 1728188,
+-4717485, 1716376, 1652489, 1159641, -271120, 3469260, 1168231, -892279, -1139240, -27917,
+1389422, -43487, 1886564, -62814, 91805, 1084479, -450972, -1038845, -666257, 184147,
+-921271, -988379, 1214402, -119185, 1165547, 1020592, -284005, -105227, -7925826, -7044283,
+1493575, 792421, 5896990, -4567161, 6066105, -3098282, -1376000, -9556302, -635118, 608812,
+-3299609, -598611, 5092221, 4796405, 7220914, -1804423, -1134945, 4485557, 2093797, 4023311,
+-9865003, 9699647, -2131915, -180389, 1511292, -1237488, -110595, -921807, -708133, 5994164,
+-212601, 7884486, -1402307, -3304441, -6638946, 715112, -3027415, -2676302, 4524748, 3469797,
+4732517, 100395, 551903, -7090991, -5110474, -136902, 6361921, 2152316, -864362, 2080375,
+-2708514, 6755447, -405338, -5951751, -7515656, -2733210, 8337069, 6265821, 6430103, 2943663,
+204548, -7072738, -3171833, -1051730, -4138738, 4261145, -774168, -2022393, 3659849, -10044855,
+2955474, -1336272, 2339684, -823023, -2889439, 4495757, 1690607, -4779225, -5060009, 2518462,
+-1334661, 2944200, 783832, -2180770, 1529008, 1863479, -104690, 701690, -15569, 191663,
+-858457, -38655, -1403381, -8053, -1224066, 1960653, 1071058, -1527935, 744640, -406411,
+515933, 512175, 682363, -1140314, -983548, 336618, 729071, -2079301, 1998770, -2255932,
+-4347044, -718333, -3367791, 1539746, 5449240, 2134062, 191663, -2223183, -12671227, -8353712,
+-275415, 3665755, 4435091, 253403, 893890, -1790465, 4396973, 1946694, 3522410, -5526013,
+5233955, 3003793, -5957120, 2228014, 5456756, -302795, 1762010, 885837, 4947803, -3852586,
+2935073, -506269, -671626, -4738960, 285615, 5064840, -3237332, -2345589, -4439386, 5945309,
+-585726, 1154273, -4670240, -13304735, -3882651, 1950452, 1222455, 4910758, -3543885, -2189360,
+-2022930, -892816, -4280472, 129923, -3865471, 8712341, 3061238, 7106561, -7205882, -1422171,
+-2992519, 6658810, -2034204, -1232119, -5551245, 3438658, -120796, -3711389, 5666673, 1753957,
+686658, 6502581, 1386201, -5708549, -804233, 687195, -1557999, -1929514, 34897, -4849018,
+9607305, 3958349, 1390496, 5988258, 2593087, 2364380, 4395362, -1264331, 3718368, -2139968,
+634581, 381178, 216359, -1116155, 665720, 284542, -360777, -654446, -629750, 457951,
+-499290, 38655, 3181497, 330712, -100932, -57982, -49929, -434329, 2523293, 650151,
+3537443, -2817499, 2245194, 212601, -1456531, 6012954, 4573604, -463320, -8202314, -10941966,
+-8458938, 3131568, 2147, -4726075, -1237488, 554588, -1080721, 12313671, 2121177, -8896488,
+-2370822, -2659122, 442382, -4187593, 6958921, -5204964, -6828461, 6375879, -2687039, 1750736,
+1686848, -2916283, -8038568, 1070521, -4287451, -3781719, -3941169, -490700, 6245420, -864899,
+-1425392, 9240085, 1687385, 1414655, -11931956, -1331440, 6349573, 7443179, -4126927, 2018635,
+1008244, -11766600, -1585380, -723165, -1211181, 2961380, 120796, -6602976, 846645, -5281199,
+5046587, -1800128, 6498823, 1294396, -7490423, 3306588, 14011794, -5455682, 105764, -10463077,
+2514167, 8785356, -15782931, 2240362, -1142461, -1377074, 3896072, -2556579, -4139275, 7384123,
+7047505, -6127845, -768799, 4617090, -2088965, 1077500, 2153926, 1355062, 418222, -1801739,
+3913252, -121870, 2546379, 90731, 3491272, 2381023, 2188823, -206695, 724239, 3904125,
+386010, -828929, 1340030, 1198833, 426276, 3237869, -1850594, 1012539, 478352, -751082,
+192737, 1150514, 773631, 368293, -357556, 10545755, 1312113, 4729296, 7472706, -9213779,
+-2827699, -7031399, 3537443, 4080219, 8115341, 15709380, 2473364, -11980811, -1119913, -3011846,
+-1242856, -5181341, 19327, -579821, 5938866, 4727686, 1721208, -424665, 237834, -1845225,
+-1370632, 6804302, -2219424, -911607, 5085242, -638876, 2996277, -507880, 6472516, -4941897,
+-9785009, 12170864, -717260, 2889439, -9159555, 674847, -2786897, 13503914, 2127620, 6112812,
+-1278827, 5420786, 3648038, -12222403, -1926830, -6863358, -5900748, 823560, 8613020, 1080721,
+-1730872, 13370233, -1416802, -7556458, -5770289, -3954054, 6562173, 20201378, -41876, 5605469,
+1449015, -6439767, -1414118, 110595, 5994164, 9183177, 844498, 7380902, 6585259, -12097312,
+400506, -2161979, -308164, 6061273, -2705830, 1574642, 2862596, -933082, -6212134, -4313221,
+-9073655, 2170032, 3616899, -457951, 1396401, 1334124, 1102733, -111669, -2817499, 595390,
+1336809, -161061, 1238024, -1473711, 2416993, -210453, 1214402, -670552, -434865, -1170379,
+307090, -629750, 425202, 1995549, 3209414, 2651069, 402116, 690953, 1966021, 1089848,
+61740, 1107028, -3595961, -15602006, 3535832, -1578937, 5350456, 3427384, 14518600, 2919504,
+-2752000, 3476776, 11107859, 12294881, 5073967, 8657580, 8855686, -6877854, -5345624, -11141682,
+-12038793, 1308354, 5182952, -10187126, -7247758, -562104, -11782706, -9769977, 4940823, 1574642,
+-5240934, -3494493, -7734699, 6403260, 4674535, 10535555, 20037634, -2236604, -5697811, -2153926,
+-9894531, -130460, -7713225, -8533563, 10260140, 1158031, 1399086, -13215614, 13617731, 2695092,
+-8506183, -2742337, 7001871, 456340, 1504312, -246424, 1125281, 3974992, -6519761, 7614440,
+151934, -5370857, -1512902, -9192841, 1410897, -9438191, -8380018, 7211787, 7444789, -7509751,
+-11927661, 3016678, -5761162, -876173, -3193845, 3989488, -3428995, 5269925, 1673964, 6383395,
+-1469416, 4763119, 2445447, -10707890, -3758633, 2610803, 1387274, 173409, -5303748, -3001645,
+-1598265, 3514894, -2059974, -1792612, 139586, 2811593, 2184528, -141734, -168577, -3084324,
+-1665374, 570157, -738198, -328028, 2500208, 255551, -187905, -2270964, 2157684, 675384,
+-832687, -454730, -1526324, -306016, -1687922, 2272038, -574989, 1036698, -671089, -5950141,
+-6492917, 7844758, -2418604, -1865090, 4541391, -6562173, -6891812, 7908109, 10597295, 156229,
+-647466, 3563212, -9122511, 15533823, -9554155, 1101122, 7441568, -3567507, 6942278, 8364986,
+2761664, -8844411, 9496173, -1446330, 3564823, -6941741, -1299228, -13173202, 4515085, -7838316,
+3003256, -13557064, 7932805, -9918153, -6914361, 5629092, 7830263, 2609730, 857383, 300648,
+-8515846, -7917236, -5054640, 20558398, 11280195, -3259880, -19086834, -2710661, 5343476, 11081016,
+-6300717, 886911, -13201656, -4544613, -1656247, 3415573, 1904281, -2968359, -267362, 5774584,
+-6553583, -365609, -7466801, 4042638, 4829154, 14220100, 6005438, -6909529, 2899103, -3844533,
+-10779831, -1352915, 6178311, 890669, 17669496, -10124312, -4980015, 2747705, -9261023, 4723391,
+1441498, -1725503, 8959302, 2243584, 3937948, 88047, 292058, -1381906, 4413079, 6648610,
+1566053, -1886028, 4827007, -2508261, 1494112, -4545686, -1559610, 18790, -6048925, -74625,
+-2371896, -1037235, -2367064, -3873524, -1835025, 1373316, 1493038, 1085016, -1296543, -157303,
+2632278, -4362613, 431644, 417149, -13570486, -1995012, 2784750, 8011188, 3901978, 10459319,
+1907502, -12502650, 7962870, -10576894, -11319386, 316754, -1024887, 8618389, 10716480, 9855339,
+14375256, 3517041, -14821395, 16237661, 8883603, -6554120, 12497818, -1608465, 1533840, -10947872,
+-3779034, -3151432, -4844186, 10478646, -17576080, -3969087, -8249559, -7847979, 1469416, 8490077,
+-3997541, -10140955, -10750303, -14012331, -14158360, -7192460, -2392297, 6127845, -11108933, -14416058,
+-8506720, -3622805, -7059316, -4721243, 12593381, -7055021, 1205812, 6684580, -11381126, -6763500,
+-7662222, 12394739, -5257577, 8077760, 17764522, -1710471, 4006131, 1747515, -5410048, -7113540,
+-4846871, 8394514, -1222992, 9609452, 603443, 7258495, 1714229, -12169253, 15118285, -6496138,
+-1899449, -12928388, 7967701, 16992502, 2893734, -2309082, 4532264, 1982127, -10844256, -5055714,
+667331, -2554969, -1145146, -4667556, -4559645, -740345, 833224, 694174, 7915625, -897648,
+1025423, -3894462, 3021510, 339302, 5953899, 2591476, 2698313, 1137093, -692027, -2538863,
+-2133525, -3531537, -752693, -2656437, 1797981, 926102, -41339, -1846836, -1559073, -1349694,
+-525597, 632434, -620086, 3264712, 25151866, 15858093, 11541114, -8339753, -18103824, -4887136,
+11023570, -17148730, -9342628, 330712, 13471165, 9654013, 7827578, -9936407, 7499013, -2677375,
+7496866, -1966021, 19477140, 11673721, -960462, -17914308, -1842541, 13576392, 11553999, 478889,
+23611046, 10676752, -4741107, -11274, 1634235, -2794413, -6589017, -9094593, -1425392, -25530896,
+7237557, -8759586, 1218160, -900869, 6671695, 9496710, 244276, 2526515, -11388643, 8116952,
+-4136054, 16902306, 390842, 2413235, -41176924, -1771674, 10990821, 5671505, 11689827, -4008278,
+-11527692, 6405944, 2239289, -9446244, 8995809, 1823214, -9052180, 132607, 390842, 3158949,
+-3324842, -15074798, -15101105, -620086, -5431523, 5064304, 5326833, 2240362, 5669357, -18458158,
+-6325950, 951335, 4095788, 4457639, -7348689, 5798743, 1354525, -2641405, 1953136, 5231270,
+-3476239, 703301, -1121523, 2164127, -3536906, -5531918, -1867237, 6581501, -4975183, 702227,
+-3717831, 2637110, -1538135, 2334852, 3792993, -456340, -3773666, 3089155, -638876, -4412542,
+-2815888, 1587527, 2040110, 243739, -1784022, 879395, -360240, 2723546, -1286880, 5278515,
+-1805497, -338766, -17376900, -27957016, 4509179, 9677098, 10051834, 234613, 23232014, -16529719,
+5446556, 3175592, -4715337, -14674293, -6182606, -8348880, 9849971, -4332012, -9039296, -14936286,
+-1385127, -5524939, -2858301, -11268384, 5998459, -715112, -5276904, 6056441, 7714298, 9128953,
+-11872363, 21665426, 1310502, -3126736, -13320841, -12525735, -2552821, -1655173, -12993887, -13547401,
+-10397579, 8717173, -6026376, 14463302, 4626217, 24142012, 8279623, 9154723, -3110630, 12936978,
+-2264522, 3099893, 18344880, -5612986, 6648610, -22091164, -28115392, 6105296, -1340030, -17862232,
+1100585, 416075, -24268712, 6801081, -7158100, -4825933, -9486509, 9125195, -8864812, 475668,
+-991064, 4383551, 10201, -13307419, 7777649, -1945620, 3088618, -16776679, -23128936, -20609938,
+1129576, -4911832, -23419382, -4959077, 22472342, 11819213, 5201743, 4257387, -10406706, 313533,
+-2399813, 975494, -3435974, -2799782, -134218, -285078, 882616, -62277, -7270306, -1775969,
+1901060, -1392106, 3484829, 5705327, 4792647, -81068, -818191, -2521683, 7605314, 4359392,
+5002563, 4150549, 3061775, -592706, -2911988, -2636036, 5932961, -4625143, 3535832, 4973572,
+1946157, 2441152, 398895, 1452773, -4019553, 342524, -1163399, -3464428, 1655173, 4502200,
+17013440, 22207666, -609885, 5915244, 14047227, 11515344, -1154273, -28256590, 19372986, -1897839,
+5290863, -5753109, 9942312, -688269, -12208981, 3455301, 22258132, 3417183, -14577656, 12876312,
+9211094, 6034966, -10961830, 11849815, 8789651, 1059246, 14148159, -5618354, 3795141, 22789634,
+16604344, 692027, 5258114, 11207180, -21488258, -4309463, -1371168, -3334505, -18830748, 4853850,
+5690295, 1117765, -14606110, -193810, -25002078, 1371705, -17870286, -3498251, 9190156, -7589207,
+-10824928, -8662412, 5292474, 4399121, -9991168, 3986804, -3618510, 12357158, -6432788, -7212324,
+6405944, 11547020, -1131724, 5045513, 4429185, -27272506, -653372, -1990717, -13942001, 1463510,
+17747342, 5434208, -5013838, -2178622, 12960601, 9126269, 5649493, -3660386, 20578798, 215285,
+-17133162, 2302103, 20594368, 10698227, 10449119, 6193343, 1111860, -5087926, -5848135, 3718905,
+3339337, 4894652, 7726646, -1924145, 6099391, 3716221, 595390, -1059783, -640487, 2727841,
+-2798171, -1088237, -2775086, -79994, -1316408, 3003256, -6227703, 1049046, 2109366, 649614,
+4734665, -8426189, -3519189, 1399623, 1598802, -867583, 4845260, -1814624, -1625645, -2360622,
+545998, 3094524, 3670587, -4711043, 680215, 2130304, -4300336, -2760053, -2381023, 10858214,
+-24999930, 10623602, -25888990, -30714922, -19870130, 1301912, -16953846, 16509317, -5198521, -20650202,
+-718870, -5247377, 2784213, 3854196, -4838281, -2660732, 13602698, -4061429, 5177046, -7419019,
+-7413651, 21684216, -7320235, -2482491, -671089, 4947803, 13340705, -27210228, -1862405, 14588393,
+14052596, 13207024, 1721208, -4919348, 27983860, 9512279, 8803609, 10951093, 4952634, -3930432,
+173409, 16513612, 5310190, -11636677, 6145562, 30393872, -16061567, 21014202, 7673496, -32036698,
+7738994, 21563420, -2359011, 9717900, -139050, -24270324, 12265890, 30292942, 1695975, 20613696,
+-12475806, 18243410, 15049565, -448824, -2733210, 16751983, 8845485, -21932250, 21966610, -5388574,
+-5021354, 13378823, -6460168, -7856032, -9805410, 3475702, 1141388, 3710852, -921807, -4400194,
+16507707, -14699526, 2546379, -3001645, -4816269, -12002823, -11434277, 6792491, -865436, -7376607,
+-10200010, -8520678, -14532022, -10282152, -565862, -7103876, -4271345, -1016834, -7528541, 3219078,
+-6624987, -6803228, -1839320, 1730872, 2432025, -3401077, -414464, -10677289, 4288525, -11201812,
+8606578, -2839510, -696322, -4888747, -2665564, -511101, 12885439, 6487011, -1297080, 3105798,
+8879308, 4852240, -4823249, -2263985, 3504157, -4363687, 7255811, 1659468, -2751464, -9733470,
+-17276506, 41490456, 20529406, -48380660, -19943680, 5135171, -8019778, 13976897, 16455093, 17657148,
+20198158, -12408697, 38267084, -5759015, 966905, -12525198, 14421426, 19216758, -13847511, -15796353,
+-3321620, -9097278, 1703491, 7664369, 1187022, -9943923, -3753802, 15758772, -1251446, 7963406,
+1928440, 18963354, 28427852, 10781979, -13657996, -32020054, -2677912, -5435818, 3614752, -7410966,
+10574746, 17748416, 1617055, -6579353, -14616847, 35007204, 30626874, -4062502, 14962592, -8333311,
+-11172821, -33723008, 18655728, -15736223, -3610994, -1009317, -10524280, 5906654, 20729122, 3166465,
+-9123047, 9830106, -4212289, -13922136, 21197274, 4300336, -29335164, 37610492, -25462176, -13650480,
+14563160, 14927159, 12528956, 211527, -31333934, -2699387, 2771865, -1823214, -10283225, 6072010,
+-5368709, 2219424, 3911642, -13015362, 15054934, 10473815, 5058398, 2019708, -6152004, -4570919,
+-287763, 5305895, 479426, 4092567, -2443837, -10081899, 3063386, -14777372, -4672388, 4699768,
+-4357245, 8082055, -6839199, -1012539, -5810554, 6439767, 570157, 7920457, 9215389, 6330782,
+272730, -6976101, 5067525, 8566849, -1691680, -1002338, -9176734, -4050691, 10659035, -3643743,
+7198902, -625455, -4006668, 3777424, 3577708, -220117, -6046240, 11009612, -13350369, 1488743,
+19088446, 5660767, -25897580, -20773146, -4972499, 32402308, 3388729, -15560667, -41794328, -11627013,
+-1897302, 9924059, 28767690, 22038550, -3075734, 273267, 18925774, 15400679, 718870, 4223027,
+-56398288, -35560180, -17326972, -27866284, 2423435, -15544024, 24958592, -5713380, -1955821, -121870,
+-10050760, -11476689, 18085034, 11269457, 6401649, -2557116, -8611409, -7713225, 9009768, -20211042,
+-7572564, 3575560, -7006703, -9842991, 8429947, -29213294, -40877352, 9722195, 12773233, 15865072,
+-23870354, -12692702, 13218299, 5018670, -39848708, -34999152, 2127083, -16938278, -17521320, 6517613,
+-32193464, 16337519, -12453258, 13426605, 12884365, -7986492, -18144626, -41929080, -14698989, -12596602,
+23536420, -20343112, -13267691, 7176354, 24059870, 14025216, 134755, -8189429, -2694555, 7198902,
+-7215008, 24314346, -15066208, -11809013, -5706938, -2113124, 6685117, -17911624, 10549513, 8086887,
+-7503308, -12542378, 2917894, -726923, 12212203, -15664819, -20432770, -5183489, 3233574, -11303817,
+-1701881, -13669270, 591632, 3334505, -6150930, 9537512, -2569464, -6759205, 2962454, -4568772,
+2782602, -3892851, -14200236, -624381, 1042603, 13556527, 10633265, -6525129, 48855, -730681,
+-8017094, -10256919, 4974646, -2605972, 16578574, 22886270, -3692061, -30660160, 13882408, -4548907,
+-12843026, -26422102, 7880728, 11391327, -39294120, 14899778, 13943611, 35492536, 3193308, -8806294,
+2186675, -43276092, -12596602, -5193153, 561567, 8008504, -14820322, 26643830, 10639171, 32916092,
+-6595996, 28962576, 18548890, 11494406, 26331370, 13402982, 17376900, 22443352, 979789, -29222958,
+-27638114, 5697811, 31644246, 22919556, -42161008, -1154809, -7140920, -5870147, -4425427, -29152628,
+7481833, -20750598, 18728204, -13863081, 42258720, -11057930, -60625612, -6389301, -20892332, 12115566,
+9003325, 17330194, 39346196, 8854075, -5344013, 21606906, -12717398, 44028248, 7401840, 29479044,
+13830868, 2748779, -11143293, -10016937, 72156528, 499827, -49803904, -9943386, 39811124, -23718956,
+5226439, -10902238, 17481590, 36625332, 21109228, -42098196, -2716567, -41441604, 5776731, -5648956,
+-24572044, -2823404, -6636798, -10808822, -51540, -21182242, -23331872, 8162049, 8832600, -1073742,
+-26111790, 18964428, -23133230, -35760436, -15251429, 9017821, -8870181, -15883863, -20550344, 3874061,
+8719320, -18568218, -14231374, 7015292, -8236137, -14959908, 12331388, 9922448, -863288, -1781875,
+733366, -3338263, -6132140, -6456410, 2426657, -13791677, 8188355, -4853850, 3129421, -17563196,
+19862614, 8601746, -41219340, -15463493, -46809236, 7136088, 41261212, -30403000, -28509992, 27263378,
+12817793, -46663208, -44222056, 14179298, 2340757, 6492917, 15054934, -1842004, -13276818, -6750615,
+28258738, -20231444, 34893924, 5688148, -8170639, 7460358, 20160040, -66035, -6035503, -37338836,
+-16387448, 4151623, -20010790, 17273284, 25791816, 1869385, 4271345, -26709864, 31865436, -11181410,
+-14242112, 25995826, -9982041, 63888, -18635326, -1882806, -13100187, -45913736, 15767899, -5132486,
+34142304, 43797392, -636192, -7803956, -27747636, -8760123, -7719667, 41678900, -39604432, -27948962,
+-65650724, 1553168, -27175868, 7553237, 22786948, -12267500, -3419868, 44805100, 28895466, 20443508,
+3535832, 2065342, 34000036, -36841692, -1599339, 10486700, -4348655, 20357608, 9764608, 86453400,
+13671955, -23593330, -1321776, -16160351, -42596412, -16866336, 1589675, 7254737, -8201777, -8815957,
+-8061654, -30419642, -380641, -2487860, -16158204, 4329864, 10854456, -26075820, 1714229, -17685064,
+6940131, -1188632, -6142877, -3491809, 1520418, 15397995, 8981313, 712428, 17038672, -10439455,
+-2198487, -4952634, 16037945, 10751914, 7636989, 16508244, 7682086, -11731703, -5632313, -1896228,
+8182450, -14766098, -3795677, 511101, -16674137, -5153424, 3046743, 39967356, -29358786, 10187126,
+-10080288, -14249628, -13894756, 60410864, -8102993, 29662118, -23952496, 41220948, -14300094, 619012,
+22200686, 23814520, 56834764, 2729989, 9287867, 8366060, -24148990, 29367376, 9083856, -17220672,
+28592672, -11921219, 36013300, 27555974, -8522289, 23985244, 1105417, 22402550, 4494147, 37963752,
+-23156316, 18978386, -38318088, -9519258, 12867722, 41161356, -1799591, 3412352, 17701170, -33823,
+-13842680, -49345952, -30565672, 8572218, -21226802, -814433, 15631533, -42968464, 26382910, -1753957,
+31374200, -14782204, -29316374, -4968741, 81069656, 18556406, -73726872, 13147969, 18796388, 4758824,
+80268640, -4679904, -59086400, 61500712, -20658256, -3779034, 67184024, -7036767, 44205952, 7305203,
+-39879844, 1889249, 68692096, -55832964, 29460792, -34133716, -38674568, 28916404, 17336636, -35212828,
+-12924093, -21783538, -11882564, -12636331, 6479495, -21457656, -4380867, 8898098, -22167400, -15715822,
+11656004, -25834766, -6252399, 9485972, 3726421, -5734855, 19696720, -8184597, -6503118, -9164923,
+-17583596, 8910983, -11285027, -12857521, -2964064, 2612414, 26276610, 448824, 7557532, -21226266,
+2385854, 28039158, -4991289, -2930242, -2004139, 1730335, 2128693, 19714436, -10024454, -11496017,
+-5719286, -18080202, -21735218, 6255083, -10706280, 4831302, 7155416, -2831457, -59272160, -4502737,
+9341017, -22149684, -6276558, -62209380, 39604968, 60552060, -26386132, 8626442, -45832668, -134351408,
+-25496536, 6305012, 68467144, 57360900, -55874304, -49930068, -50170048, -41327784, -28981366, 35647692,
+-5895380, 78442208, 53333292, -15690052, -64530272, -161987920, -104619496, 7413651, 180211456, 137005696,
+25395604, -70498664, -176747024, -181269088, -12873091, 105720080, 163697312, 179224160, 18813568, -57812944,
+-72967736, -97120488, -87207704, 5997922, 60911228, 112878184, 78005736, 62162672, -80438296, -98913096,
+-115971096, -139978352, 16073915, 168083008, 165907600, 33821256, -59391880, -157364912, -206188496, -69681016,
+16271484, 76959912, 188817504, 69573640, -120796, -103770704, -84727896, -35640712, 43162812, 73891688,
+129699960, 34027952, 67864776, -5279052, -86502248, -71621800, 4298726, 83715888, 91382408, -41357852,
+-79054240, -97001840, -24165634, 16066399, 23223426, 15007153, -48373680, -41856068, -17251810, 31224412,
+122943, 667867, 7054484, 25016574, 20189568, 15680389, -8432631, -58986008, -39224864, 4601521,
+30595736, 56680684, 27466852, -15790984, -37396280, -49383532, -30944702, -19737522, -25875568, 56848188,
+59322088, 65154116, 54059680, -24903294, -103533944, -87678000, -47266116, 40143984, 131068984, 127107408,
+7181186, -80014704, -125314800, -112710680, -7301982, 62820876, 59038620, 28792388, 25959320, 1650341,
+-33602212, -40205724, -50968376, -7521562, 47725676, 58698780, -15966541, 28918014, 22234508, -50995756,
+556735, 26229366, -21069498, 28992102, -1177358, -5317170, -2079838, 5842766, 22042310, -8664023,
+25974888, 17655536, 10581726, 11747272, 8925479, -2257005, -14860050, 24277302, -318901, 14809584,
+-8828305, 13185013, -4528506, -1902134, 8979703, -12024835, -12657805, 1853278, -5434208, 19648938,
+19447076, -17819820, 8906688, -10619844, 12240120, 242666, 8045011, 3038153, 10436771, -12695386,
+8816494, -14608794, -6305012, -2041720, -1619203, 11767674, -22232898, -4416300, -9158481, -19836844,
+-1723893, -7810398, 4771172, 18854370, -5638755, -26197690, 4243428, 16218333, 31729608, -1415192,
+2827162, -17111150, -12948253, 14730664, 1374926, -5624797, 479426, 25844966, 11486890, 8135742,
+14006962, 23812372, -26989574, 10754061, -4582730, -40346924, -4668093, 31160524, -5753646, 27719182,
+-1212255, 17201344, -20373714, 12578349, -13850733, -4159139, 27357868, -7894150, 2544768, 536334,
+-95026, 9953587, -19327, -4132832, -2304250, -796180, -1913408, 4961224, 7856569, 11409044,
+1311576, -9845139, -4406100, -12717398, 4774930, -13185013, 7102266, 5351530, -4054986, 7299297,
+2342905, -13675176, 213675, -76236, 4335233, -23445690, 8156143, 5124970, 2024540, -702764,
+-6482180, 7585986, -11853573, 11857868, -962610, -1513976, 3175055, -5789079, 10041097, -11388106,
+3120294, 5666673, -18602578, 47546360, 81918984, 7001334, -53594748, 17987324, -4036196, 66428648,
+31203474, 65299072, -6147172, -31010200, -8445516, 14497662, 27434640, 21486648, -12107513, 2127083,
+11644193, 8481487, 25916370, -18101676, 4362076, -24417962, -3969624, 375810, 6269579, 12771085,
+2782602, -10392747, 19841676, -1796907, -17564806, 23981486, -4110821, -8528194, 6340983, -3521873,
+18622978, 29777008, 711891, 7809325, -10021769, -6200859, 17184702, 12502113, 14227616, 2869575,
+-9052717, -18654654, -19214074, -20816096, 16675747, 18391586, 17963700, 26867168, 28713466, 12473122,
+1501628, -25042880, 15365782, -2641405, -22793928, 28186260, -2081985, 18554258, 9683004, -28148678,
+7787850, -8326868, 6015102, 19123342, 3551938, -23519778, -16756278, -13851270, -24720758, 15097884,
+-1529545, 26015690, -278636, 4284767, 506806, -13981729, -9044127, 4971962, -21210160, 6448894,
+-230854, -4076998, 7630547, -11741904, 7159174, 4694400, -964757, -9938554, 13069585, -3272765,
+11591580, -19562502, -14445049, -8491150, -7606924, 9283035, -3913252, -2398739, -2508261, -9782862,
+-5340255, -6004901, 5369, 18176838, 2413235, -4599910, -304406, -10551661, 7688529, -5866926,
+-1044751, -4017405, 8615704, -741419, 1133871, -1828046, -6256157, -4242891, -28952374, -64612416,
+4344360, 89608584, 118366616, 101700528, 70055208, -2914672, 4304094, -51729660, -61686468, -103484552,
+-78303160, -83074328, -26999776, 7085086, 27022860, 45565844, 112878720, 94036160, 63225140, 20563230,
+-10024991, -40764072, -30468498, -42386496, -54056460, -29969208, -30943628, -37946036, -17762374, -24944634,
+5234492, 17736604, 14780593, 48179332, 44348220, 39479340, 25711284, 29920352, 18719078, 35820564,
+8548596, 31002684, 1305133, -8011188, -54050016, -23408646, -65131568, -75568872, -84667224, -66250944,
+-49894100, -17588428, 12695923, 48693656, 51729124, 40917080, 83977888, 68207840, 72732584, 67517424,
+62844500, 25343528, 40615360, -16246788, -40565428, -42363948, -100017440, -99781216, -96569120, -102589048,
+-84755272, -28858960, -14339822, 22893786, 57223460, 62527744, 76206680, 91983704, 81889992, 63985884,
+57964880, 42847668, 15886010, -1489280, -34487512, -50524384, -51147692, -58143656, -48959404, -54687820,
+-57213260, -48105780, -37660420, -18705656, 2109903, 24988656, 47800840, 44987100, 44140988, 52310016,
+57549876, 44773960, 44595720, 20092930, -21121038, -15204184, -37029596, -46794204, -39329552, -32074278,
+-22808960, -28344636, -20791400, 2631204, 5814849, 10131291, 25145960, 22437982, 13969381, 3660923,
+9356586, 9878962, 2691334, 12460237, -7876433, -8296803, -7046968, 4810900, -1621350, 408022,
+-920197, -1432909, -9473087, -6236293, -2992519, 9042517, -363462, 4274030, 986232, -4624069,
+-6285148, -2857227, -4555350, 1460826, -666794, 1704565, 460635, 2238752, -2809982, 2257542,
+-2128693, 613643, 453656, 4232691, -520765, 2398739, -1600412, 1698660, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
{
{
10392210,
-5522254, -621697, 3624953, 906775, 827318, -11378442, -4951561, -5636071, 4433480, -609885,
--3697430, 4030827, 4161287, 273267, 3995393, -1669132, -137439, -234613, -2466922, -1284195,
--5468567, 2826089, -8085276, 3376381, -4217658, 3442416, 6427956, 2934537, -1225139, -1817845,
-4749697, -766115, 219580, 4495757, -4817343, -140660, -1630477, -2774012, 588947, -674847,
-994822, 4607963, 7593502, -2413235, 135828, 6307160, 478352, 1658931, -2324114, -3534758,
--520765, 1059783, -5959267, -1564442, 3112778, 404801, 1123671, 1848983, -856309, -1862405,
--1762547, -2088965, 2303713, 1887638, -1099512, -3414499, -4198868, 2074469, 36507, -3484829,
-3675955, -803159, -245350, 560493, 1037235, -1738925, 2198487, -2341294, -792421, 2876554,
--1988033, 1146219, -3364570, -2572686, -1239635, -833224, -216359, 454730, -1357747, -1698660,
--171799, -967441, 378494, -358630, -309238, -463320, 358093, 99858, -357019, -693637,
--419833, -258235, -65498, -375810, -242129, -530428, 484794, -777389, -482647, -3735011,
--1026497, 29528, -3537979, -3579318, -2147484, 8588861, -6032819, -2480344, -4212826, -7670812,
-2864743, 1315334, 298500, 6585259, 6234682, 6248104, 2017561, -1168768, 966368, 4709969,
--2014877, 2031520, 2379412, -5556614, 7911867, 1534914, 2460480, 5851356, -2251100, -5838471,
-393526, 3965329, -2795487, -1268089, -3726958, 3946538, -102542, -402116, -6477348, -280784,
--788127, 3987877, 2035815, -3551938, 7084012, 2614561, 1473174, 2481954, -1156957, 3972308,
--1548873, 195958, -4946192, -5907191, 4734128, 3708168, 6558952, 640487, 1768453, -5080947,
--7865696, -3861176, -2361158, -2291365, -3635153, -3130494, 1619740, -911070, 2384781, -2952790,
--1132798, 1296006, 1466195, -887985, 4000762, 1215476, -3007551, 6041409, -2371359, 1858110,
-7621957, 1625645, 1044214, -2364380, 104690, -2596308, -3103114, -500364, 1752884, -35970,
-223875, 94489, -842350, -270046, 74625, -762357, 1786170, 1145146, -670552, -165356,
-49929, 468688, 251792, -1188632, -643171, -286689, 130460, 528818, -554588, -855235,
-733903, -440234, 562641, -306553, -474594, -594853, -7397545, -6890738, 4037806, 923418,
-5655935, -8740795, -1234803, -3472481, 938450, 10416906, 5942624, -9100499, 3445101, 869731,
--3796751, -4218195, -5163625, -8378408, 299037, 1012002, -3108483, 1497333, -1791538, 328565,
-2529199, 1962263, 5405753, -4719632, 8511015, -5179731, 4942971, 3930432, -3186866, 2304250,
-413391, 3547106, -1415192, 1859184, 3246459, 1095217, 506269, -1288490, 2530810, 771484,
--1128503, 6067178, -7913477, 557809, -4792647, 9545565, 3368865, -8307004, 3237332, 10912438,
--10240276, -4869956, 1237488, -826781, -3880503, 3263638, -1356673, 7271917, -6100464, -593242,
--2014340, -408559, -365072, 7027640, -6501507, -2147484, -700080, -6708202, 3629784, 2815351,
-7256347, 2964064, 6179384, 5575942, 922344, -2234457, 1755031, -185220, -766652, -1662689,
--151398, -2552284, -1016834, -568546, -3579855, 2290291, 199179, -2493229, -415001, -2019708,
-197569, -78383, 1389422, -474594, -802085, 179852, -1145146, -31675, 1200980, 447213,
--251792, -802085, 3296388, -5092758, 646929, -3200288, 3375308, 1202591, -5126044, 14813342,
--9423695, 2960843, 16047072, -11346767, 5281199, -311385, 5247913, -1407676, -9698573, -2138357,
-8009041, 7163469, 1985886, -83752, 4054986, 1973001, 146566, 3340948, 3372086, -2800319,
-4296578, -1207423, 6772090, -5470715, -8420820, 1783485, -7351374, 2523830, 137976, -2116345,
--2353105, -3370476, -5003100, 958315, 1763621, 165356, 1272384, 1444183, -3084860, -6468221,
-5076115, 1124745, 832687, -328028, 7459285, 1489817, 3123515, 7870528, -4842039, 1898912,
-315143, 2367601, 5519033, 4314832, -7193534, -6312528, -1625108, -3610994, -828929, 247497,
--3098282, 1636383, -5752572, 273267, -5535139, 2728378, 2709588, -3211562, -4210679, 461709,
-2310156, 423054, -4866735, 680752, -2786360, 2087891, 1733556, 775242, -913217, -1369021,
-967441, -144418, -523986, -34360, -1255204, -1057636, -3339874, -828929, 3043521, 1330903,
--873489, -605590, 2124935, -732292, 638340, -942208, 38118, -236760, 113817, -1210107,
--803696, -461709, -345745, -436476, -503585, 101469, -332323, -763967, -627065, 402653,
-4677220, -1999844, 4235375, -798864, 2111513, -2433636, 289910, -1598265, 1406602, -769336,
--9246528, 7022272, 4505958, 11582453, -7600482, 4742718, -9403294, -1615982, 5735929, 6206765,
--6599754, 1888175, -7645579, 564788, -8964670, 2935610, -6715718, -8334384, -7456600, 3742527,
--6024766, 259309, -7065758, 916976, 1037772, -1066763, -5172751, 3245922, 4540318, 2703145,
-2114198, -5530308, 3007014, -5799817, -1833951, 3555696, 114890, -806380, -1561758, -226560,
-3678103, -4279398, -8246337, -1745904, 2537789, -1745367, -6114423, -6185290, -8768713, 2093260,
--2529199, -8213051, 5869610, -5265630, -5160403, 9916543, -3586298, -1962800, 811212, -1802276,
--3236258, 796180, -5443871, -2702608, -4580046, -3617436, -1503239, 2949569, 7511361, 375273,
-4514548, 370441, 3368865, 2333778, 6068252, -450972, -136365, 615791, 2243584, -1245004,
-259846, -605054, 4437775, -185220, 2143726, 307627, 855235, -772557, 992137, -2736968,
-2974802, 54224, 59056, -2241973, -564788, -3023657, 1427540, -1555315, 1022739, -424665,
-3001109, -1482838, 594316, -2636036, -2096481, -218506, -911607, 704912, 7662222, -11038066,
-1987496, 9656160, -3582003, 10575283, 2946348, 666794, -3067144, -7385733, -4858682, 12589623,
--6763500, -59056, -2337536, 983548, 7577933, 6807523, -4125853, 9834401, 9819906, -4629975,
--2421288, 5980742, -5053566, -4424353, -317291, -6795712, -153008, -2006287, 876710, 11798812,
-4028143, 636192, -5408975, -15696495, -1912871, 8818105, 2164664, -5883569, 4512400, 7167764,
-6263136, 7573101, -12403329, 2506114, 602906, -6156299, 3337190, -5541045, 3946001, -3126736,
-4894115, 11000485, 14541149, 9177271, 4217121, -6033356, -1664837, -7201050, -7568806, -1594507,
-8526047, 2096481, 134218, 2006287, -8345659, 2167348, 1038308, -76773, -4224101, 2259690,
-4567161, -4829154, -9100499, 20725364, 2677912, -3713536, 1278827, 2230162, 9443559, -1902671,
-2598455, 3218541, 4687420, -3262028, -1599339, -3521873, 1672353, -976031, 1844152, 1718524,
--1223529, -1928440, 3514894, 467615, 929324, -671089, 2124398, -3646964, -2601140, -1755568,
--646929, 4050691, 1491964, 2707977, 2066953, 2122788, 150324, 470299, -901943, -2555506,
-2498597, 601832, 1056562, -1781338, -5709622, -1603633, -3503083, -1331977, 2653753, -3595425,
-16345572, -1606318, 4605279, 11740830, 1534377, -1739462, -7679402, 4325569, -4147865, -5170604,
--15518254, -6922414, 3117073, -805843, -3007014, -11180874, 3907883, 6199249, -8824010, -4583267,
--2374580, -9203578, 3673271, 686121, -4889284, -3980361, -1687922, -12443057, -4451734, 6219650,
-10365904, -7819525, -9823664, -2812667, -579821, -7936563, -6560563, 2538863, 4364224, -8696772,
-17497696, 131533, 7113003, -3935264, 6683506, -4480188, 2010582, -12372727, -2621004, 5124433,
--12430172, 3467112, -2812667, -6271726, -14114336, -251256, 7825968, 178778, -14887430, -2181844,
-2702071, 6056441, 10912975, -3946538, 4881231, 12824772, 4252555, 1634772, -5806259, -1022202,
--3624953, 839129, -4319664, 1072668, -8154533, -993748, 6239514, 1872606, 1209570, -3456912,
--6323266, 3601867, -1171989, 3715684, -1349157, 570694, -824097, -1727651, -1684701, 2451353,
-912144, -369904, -837519, 179315, -2458869, 1253057, -2510945, -3029563, -1975685, 1211718,
-147103, 120259, -2370285, 1968169, -299037, -1114007, -3349001, -942745, 208843, 554051,
-1357210, 3671123, 1127966, 940061, 1791001, 4835060, -1583769, -4825933, 5883032, 1079111,
--9099962, -14207215, -11664057, -14704894, 12655658, -7672959, -1937567, 4207458, -13989245, -5749888,
--9747428, -4282083, -3149822, 6350646, -12265353, -6480032, 3840238, 4878546, 6993818, -69256,
-181999, -2140504, -78920, -2830384, 1692754, -9647570, -5268851, -8479876, 5855651, 2975876,
-4522601, 5977521, -11837467, -809601, -1329292, 10755672, -4087735, 3412889, 5776731, -2157684,
-6189048, -4055523, 6907381, 9814000, -3882651, -637266, 8327942, -7135015, 11538967, -4931696,
--18510236, 2903935, 9494025, -3615289, 1039382, -284542, 7269769, 9222905, -9383967, -4031364,
-2117956, 6359773, -11027329, -8295193, -6719477, 13318694, -375273, -15211164, -3366718, -6313065,
-5149129, 712965, 3874597, -5696201, 9361955, 425202, 1629940, 2741263, -8771397, -2942053,
-591632, -1067836, -2252174, -2511482, 2382096, -2391760, -2410551, 1866163, 2723009, 1448478,
--5175973, -440234, -2097018, -1475321, 2067490, 1906966, 4244502, -571768, -2169495, 1665374,
--4863514, -549219, -92342, -3119757, 375810, 314069, -1243393, 615254, -5520644, -978179,
--708133, 633508, 648003, 2311766, -340913, 2593624, 1415729, 1344325, 125628, -8558796,
--3464428, 5878737, 2176475, 8422431, 2888903, 4120484, -16540993, -6481643, 6454262, -4357781,
--3120831, -5510980, 1694365, 8617852, 2260764, 2053531, -11082089, -3747896, -2022930, 4108136,
-9731322, -11819750, 5572183, -9635222, -2562485, -8863739, 1137093, 1227824, -452045, 3702262,
--8276402, -2384781, -7756174, -3189550, 139050, -358630, -9740449, 5581847, 6250788, -2330020,
-7417946, 14590541, 1494649, 11052025, 14175003, 1114544, 456877, 3418794, -2982318, 4698158,
-959388, -3104725, -4780299, 17806398, -1854352, 10405095, 4599910, -5251672, -6096169, -4244502,
-4973572, -4069482, 6464463, 15683610, 7947300, -2085744, 249645, -13155485, -9067213, -8026757,
-12341589, 19376208, -8511015, -78383, -7875360, -1301912, 11845520, -3752191, -726386, -18698140,
--2507187, -3411278, -1989644, 7089381, 496069, 1467805, 2154463, -3758633, 2968896, 1578401,
-2644626, -2247879, 3836480, -1858647, -435402, -4745402, -1129576, 4111358, -1529545, -134218,
--817654, 3946001, -1016834, -2881923, 1663226, 1745367, 995896, 1370632, 1446867, -1568737,
-387621, 2779381, 4824322, 4175782, 2703682, 1454383, 285078, 351114, -3033321, -290447,
-1896765, -1871532, 1998234, -700617, 685584, 2609193, -1150514, 11188927, 31024160, 13522168,
--4216584, -1076963, -5763846, 14298483, -14324790, -8140574, -21900576, -252329, 10799158, 13434658,
-2419677, -5334350, -13129715, -9608379, 9675488, -1966558, 15367393, -46171, -4935991, 7250979,
-2642479, -134218, -3821984, 10029286, -1865626, 8663486, -138513, -4727686, 18906446, -4525822,
-7668127, 18582176, 6534256, -789200, -9085466, -1716376, -14798310, -17340930, 3773129, 11096585,
--2666101, 1549946, -18923090, -7201587, 10959146, 5931350, -4905927, 3615289, -5615670, -2732136,
--8631274, -14511621, 872952, -3433290, -10244034, -16748762, -14438606, -4712653, -13263396, 6088653,
--5940477, 2089502, 1712618, -116501, 315680, -2163053, -2974265, 8569533, 17062832, -11521787,
-2081449, -4853313, 6168110, -6440841, -256624, -4656819, -2098092, 15682536, 11409044, 2551748,
--1770063, 137976, -6424198, 2198487, 6393596, -1239635, -5556614, -3195993, 5535676, -6732361,
-611496, 2837363, 2683281, -2383707, -2143726, 2375117, 3016141, -2336462, 3592740, 2051921,
-2979634, -345745, 3934727, -447213, 2488397, 1196148, 1463510, 875636, -870268, 4598836,
--4552129, -707059, 991064, -1400159, -1158031, -2176475, 2059974, 149250, -3925063, -1511292,
-2561948, -2858301, -12782360, -14460081, 3753802, 5553393, 17353816, -14662481, 4687957, 4510790,
--24423332, -1123134, 182536, -20402706, -11110007, -7208029, 5222144, -1619203, 1249299, -5746666,
-8617315, 13543642, 7148436, -1907502, -20707112, -9010305, -11247982, 4225174, 1293322, -9074729,
--682900, 7158100, -6010807, 12354473, -11093364, -311385, -6456947, -20699594, 3558917, -8800925,
--9921911, 7734163, 11467563, -12821551, 4992363, 15171972, -4926328, 6658810, 5219996, -3534221,
-2085744, -16804060, 25485262, 10043244, 6051072, 24338506, -29659970, -2207076, -4088272, 3167002,
-12130598, 12599287, 4850092, 6017786, 15569256, -1467268, -10554345, -18343806, 7124277, -6928856,
-699543, 4981625, -3658775, 7518877, 19937776, -12281996, 9296994, -5948530, -5701032, 15079630,
-1147830, 4710506, 14619532, 12072079, -5304822, -6099928, -12861280, -3237869, 63888, 6714108,
-7032472, 25233, 1667521, 1020055, -257698, 1411971, 1616518, 551903, 3969087, -1975148,
-592706, 2867428, 1582159, 843424, -1787780, 3855807, 2499671, 595927, -2197413, -3064459,
--7295539, 4365298, -300111, -647466, 2197413, -3484292, -430570, 2449742, 3333968, 5054640,
-2823941, 1405528, 1377611, -31675, 3642669, 15959562, 18682034, 4722854, 11509439, -7474854,
-5399311, 5340792, -30771830, 8739185, 9921374, 2146410, -9830106, -179852, -19006304, 22367652,
-13410499, -6964290, -7545184, -11044508, -5829881, 16203838, -16381005, -9309878, -2484102, -2670933,
--3555159, 2413235, -10855530, -10982768, -6535867, -8442832, -2327872, -10999411, -1551020, -7356742,
--24317568, -15431281, -6017249, -3780645, 3380139, 4139812, -146566, 796716, 7031399, 3473555,
-3599183, 17192218, 3571802, 5872831, 10672457, 23066122, 19641422, 1135482, -7761006, -14969572,
-13733695, -3269544, 37093484, 7594576, 16639777, -1702955, 2135673, -14618995, -563178, 12982612,
-7462506, 9872519, -11106785, -7239168, -14278619, -27031988, 15714212, -23839216, -2888366, 31737660,
-2151242, 12801150, 6081674, 9454297, 332323, -16924318, 16644609, -140660, -14932528, -13265543,
-551903, 5371931, 11223286, 3146064, -13077102, 845572, -2540473, 2823941, -5103495, -4149475,
-2401424, 2280628, -3994857, 564788, -1234266, -206158, -5280663, -1795833, -1624035, 2668249,
--1338956, -3106335, 4396973, -2469606, -957778, -7415261, -7951595, 206695, 296890, -3133716,
--2001455, 2829310, 2088965, -3181497, -5271536, -134755, 3604015, -22033720, 6556268, 8189966,
--14646375, -11459510, 302258, 8992588, 21531744, -1176821, -16472810, -16777216, -806917, -9528922,
-2871186, 2961917, -18401788, -16016470, -30109868, -8997420, -8685498, -20628728, -13856101, -219043,
--9489730, -6086506, -5344550, -1763621, -20244328, -10982231, -12422119, -6267431, 6318971, -17360258,
-1348083, 14296872, 17174500, -4101694, 4736812, 9709847, -16886200, 9488656, -7285875, 14977088,
--7242926, 1289564, -7810398, -1796370, 29952028, -6231461, 11301133, -21941378, -3574487, -98784,
--20698522, 19277424, 777926, -7175280, 13931800, -5775121, 3608310, 27377196, -10862509, -15115064,
-10382010, -2948495, -30819612, 12457553, -40867152, -22031034, 16432545, 12728136, 2653216, 8591008,
-71941, -297427, -30827664, -16663399, -7245073, 2743410, -17514876, 4238596, 2451890, 7156490,
--11432666, 605590, 8864812, 6645925, 5103495, 510564, 4202089, -10125385, -6416681, -6860674,
--1884954, -1477469, -882079, 8021389, -4153770, 4168803, 8099772, -4069482, 2506114, -6524056,
--4898410, -392990, 2087354, -5873368, 2537789, -7340636, 6358162, -2646237, -1277753, 181462,
-5703717, -1894618, 2277943, -5189394, 4565550, 3362960, 10537165, 2383170, 8653822, -8647380,
--2870112, -10269804, -5290863, -5088463, 41455024, 22702124, 32212, -21343304, 10965052, -22256520,
--18108118, 3293703, 18411988, 36403068, -5731634, 18405546, -6585259, 13065827, 22059488, 12342125,
-14096620, 7565585, -4139812, -18056042, -18693846, -5653251, -17667884, -5193153, -3253975, -3973382,
-14105209, -2404108, -36287104, 2130304, 8735963, 8380555, 21681532, -2238752, -43305080, 24617678,
--19390704, 6338835, -4259534, 14565845, 21189222, -23602456, -1676648, -11793443, -20605106, 14898705,
--10261751, -25345676, 9919764, 14803679, 24335822, 6452115, -3828963, 2664490, 19916838, -16052440,
-31457414, -9900436, -8808978, -2834679, 19154480, -19963008, 1802813, 2435783, -55599964, -8240969,
-17162690, -8000987, 2845953, 7714835, 3995393, -2728378, 4482335, 19055160, 22721450, -18025978,
-6460168, -13205951, -2294586, 22526030, -523986, -2348273, 788127, -1526861, -11724724, 3213173,
-734976, -6823630, -17345762, 227096, -4182225, 5282810, -8039105, -7474317, -9449465, 7959112,
-1787780, 4876936, 3871913, 325344, 2843268, -3839164, -7978439, 12108050, -1274532, -5879810,
--243739, -4241280, -2710661, -4896263, 561030, 1484448, -773631, 3349001, 8764418, -341987,
--2211371, -3615289, 738734, -4494147, -2608656, 5037997, -3929895, -3227668, -4796405, -11689827,
--6605660, 1611150, 7490960, -6149320, -1620813, 23759222, 15761456, -44174276, -25113748, 30255360,
-35066260, -18848464, -6386617, -49708340, -27475442, 7159711, -2254858, 6610492, -26422638, -16558173,
--18108656, 26825292, 39862128, -1940788, 10762114, -6491306, -3491272, -508954, 9155797, 17271138,
-4204773, -6154688, -3304977, -4059818, -23810762, -13509283, -24207510, -3224984, 7485055, -10183904,
-14939507, -11068668, -4140885, 23173496, -11233487, 13019656, 9057012, -4259534, -22323630, -16172699,
--13307419, 4012573, 41748692, 7336878, 22450868, 26443040, 20712480, 15316390, 13727252, -23044110,
-557272, -3783866, 30906048, 14667850, 18079128, 32246078, -15833397, -21718576, 7973070, 27270358,
--46231028, -850940, 3696356, 21490406, -37384468, -56369300, -10014790, 15775952, 3955128, 6372121,
-17681306, 1113470, -12483859, -18513994, 629750, 2525978, 3675418, 17046726, 25308632, 11949136,
-1895154, 75162, -257161, 2072322, 2562485, -6398428, 9350144, 1152125, -8513162, -15032922,
-1881196, -6413997, 3245385, 1628866, -1334661, 943282, -6201933, 6460168, -3319473, 4334696,
--6669011, -4336307, -11913702, -11782706, 580894, 6192806, -5259725, 12406013, 354872, 3690988,
--3721052, 13260175, 1130650, 6075231, -6542846, -3592203, -2071785, -8256538, -1600412, 8939438,
--15462419, 11917997, -596464, -11344619, -20089710, 7569880, -9793062, -19589882, 14097156, 27195196,
-8301635, -10292352, 16095390, 27361626, 10059887, 5752035, 1898912, -2889439, 12796318, -22608708,
-1321776, -32577326, 17467096, -26257282, -2249489, 14390825, 7828115, -14896020, 3157338, -17259326,
-35744864, 4825933, 11580306, 18846854, 39439076, -16088411, 12796318, -18672908, 6804302, 14410689,
-31707596, 7711077, -6462852, 32742146, 4380867, -2047089, -18720152, 1480153, 20369956, -6652368,
-19581292, -23859618, 37152540, 38789996, -46324980, -949725, -2922725, 10384157, -7890929, -5810554,
-19931870, -16546362, -49412524, 863288, 43948788, -34395172, 17418240, -7738994, -4385699, -20841328,
-48520244, -2856690, 8043937, 4738960, -32610076, 42531988, 3323231, 37859064, -74320648, 7368554,
--6967511, -22133040, -5995775, 13345000, -17284560, 11923366, -15574625, -10101763, -20505784, 26207890,
--9925669, 2060511, -21864604, 1236414, -16052977, -5199595, 7510824, -10808822, 5219996, 979253,
--14808510, 13704167, -6047314, 2209761, -6309844, 12466679, -9116605, 2202245, 891206, -3102577,
-16174847, -9028021, -11249593, -6249715, -12612171, -17340394, -8805757, 1996623, 1151588, -12404402,
--7154879, -8236137, -12230456, -9430138, 4307852, 3156801, -322659, 31423592, 3623879, -23854786,
-2324651, -48631376, -11252814, 2573222, -9577777, -38744364, -4443144, -25395604, -6479495, 23511188,
-5282273, 30788474, 12581570, 11690364, 7039452, -10356777, 24448028, -12377022, -411243, 11735461,
-5184563, -14969035, 12046846, 5113696, 28954522, 12102144, -5416491, 17726940, -14194330, 23897198,
-7969312, -26008174, -27096948, 14028437, 17266842, 7389491, 2630668, -12566001, -17427904, 5389647,
--17155174, -25451440, -8080981, -4191351, -23746874, -8613020, 8559333, -15958488, -26758184, 7614977,
-9582609, 1063541, -3504157, -1409286, -4762582, 9658845, 44889924, 9344775, -1739999, -1575179,
--16224776, -25622702, -11704860, 37314140, 39652212, 20608864, 3513283, 36392868, 17147120, -8051453,
--50709068, -38298760, -31942208, -60081760, -35391604, 8677445, 48642116, -21529598, 16255914, -24089934,
-7627862, -1827509, 16510391, -7698729, -3147137, -21474836, -12730820, -5105106, -19609746, 24811490,
--4160213, -12663711, -6416145, 2726767, -14281840, 10199474, 7051263, 16135655, 3339874, 4707284,
--16000364, -18096844, -2454574, -13309030, -8860518, -15546171, -23046258, 1415729, -6273337, 1647120,
-1299228, 17631378, 17052094, -6250788, -3804804, -7474317, 16457778, 11368242, 6960532, 2846490,
--3774203, 9842454, -13647795, -5070746, -2519535, -14995878, -29844118, 15709380, -903017, -9256728,
--4327180, 11241540, 20809654, -8856759, 26845156, -30748208, 24797530, -3078955, 33138358, -21462488,
-19086298, -31688268, 27536110, -25590488, -10979547, 38607996, 8742406, 31031676, 44069048, 4640176,
--3712999, -18345416, -1623498, 28175522, 6924024, -9837623, -31235686, 2772938, 5998996, 14811732,
-8836358, 12355010, 7494718, -18010946, -29070486, -12142946, 27879706, 10874857, 89247808, -28248536,
--24012088, 29298120, 45759120, 9785009, -907312, 12234214, 2916820, 14903537, -13605383, 5497558,
-21339008, 23886998, 15714212, 69562904, -8913131, -8756901, -4610648, 36002028, 21299816, -17926120,
-18656802, -164819, 6026913, -14702747, 31681290, -31439698, 2128156, 49242872, -36148592, 105441448,
--48360260, 50614044, 46093052, -45030584, -41500660, 47106128, 1951526, -26674968, -11483132, 26190710,
--71077416, 11497091, -8406862, -45336064, 29875256, -35396972, 2793876, 3105798, -14466524, -34901976,
-9557913, -2261837, -1618666, 7305203, -7329362, -11155104, 6315213, 15366319, -5650567, 2806224,
-11512123, -10246718, 16031502, 12949863, -25584046, 4266513, -14373108, 7132867, -1023276, 2709051,
--13089987, 6082211, 3422015, 591095, -6563247, 20447802, 4465692, -23622, 18881214, -12627741,
--12181064, 2760590, 8159364, 2802466, 9092983, 5477157, -26304528, -12828530, 6803765, -14626511,
-22668838, -8334921, 17365626, 23416698, -54388244, -22512608, 32749126, -69270304, -43543988, -28705950,
-48386564, 104359656, 28368796, -81051400, -18752364, -82812336, -43826920, 68365144, 40215928, 64305324,
-34746824, -47802988, -76973864, -57917096, -14361834, 35061964, 38951060, 24137180, 12911745, -19762218,
--84104048, -100249368, -22148610, 77622944, 137204880, 93750544, -17912162, -64039572, -92938264, -68208912,
--55897924, 536871, 21867826, 75608064, 79867064, -42942692, -27513024, -100368016, -94087704, -33239826,
-8920647, 97843112, 143433648, 64282776, -42763916, -150174064, -112003624, -81438488, 39250632, 86288040,
-53218404, 34382824, 28488518, -89395448, -16840566, -50761680, 18729278, -6604586, 52916680, 84186728,
-66115116, -77612744, -157918432, -117950000, 12825309, 92641368, -2596845, 128265976, 4997195, -32371168,
--38754028, -27695560, 46171, 92826592, 79344152, 15161771, -32029718, -10801843, -6158446, 48981416,
-53142704, 6958921, 2012729, -7789460, -1727651, -9720048, -13347685, -8048232, -5052492, 19104552,
-28598576, 24233816, -35183836, -38967164, -15545097, -15812459, -15970299, 36617280, 29138668, 38483444,
-10830297, -15658377, -28761248, -54448376, -35383552, 23714126, 48309256, 74257304, 50142668, 4832912,
--113850992, -99198712, -34306588, 41661720, 63581084, 86042688, 64103460, -4369593, -64869576, -94489280,
--92136176, -16065862, 99686192, 104180336, 52334712, -24212878, -69352984, -47449724, -32668058, 3652870,
--18343268, 36658084, 11662447, -30030412, -27979028, -99858, -45192184, -5798743, 6902013, 5000953,
--3766686, 943819, -15080704, -2094333, -1615982, 7636989, -5088463, 20720532, -5377299, -4220342,
--5665599, -6762963, 13211856, 3533684, -6116571, 20057498, 1454383, -36208184, -17809082, 9718974,
-17793512, -6199249, 2317672, 24473260, -438624, 3164317, -20016158, -9221295, 6383395, -4594542,
--4318053, -2887292, 16492674, 5701569, -6226092, -19527068, -7526930, -1345399, -17450988, 1473174,
--19955492, -13680008, -9200357, -18097382, 28196998, -5268851, -12523051, 11640435, -32749, -27776090,
--1451162, 27304718, 22485228, -13013751, 17446158, 2683818, 16651588, -18631568, -26987964, 10184441,
-12127377, 10320270, 9292699, -10477573, 10240813, -20478404, 13871134, -27852862, -24160264, 17733920,
--14071923, 12028056, 16976932, 992137, -12853763, 3950833, 4910222, -1331440, -913217, -680752,
-11112691, -9436043, 7269769, -9853192, 12998719, -11491185, -5982353, 4486094, -3740917, -654446,
-5227512, 977642, 3542811, 9652939, -7752416, -4944044, 5823976, 3157875, 11465952, -9443559,
-3294240, -1365800, -6926709, -7369627, 3058017, 1559073, -6849399, -10676752, 3155190, -129386,
--1799591, 6377490, -9803263, 11251741, 3605625, -10240276, -10946261, 8999567, -15444166, 10402411,
--1590749, 7114077, -632971, 2251100, 13797582, -22073984, 44296684, 67837400, -8949101, -24950538,
--21620866, 62552976, 28133110, 60542932, 32499480, 199179, -28156732, -6153078, 15327128, 28496572,
-13487808, -13035763, -3334505, 13675176, 19892142, 2587718, 4388920, -13870597, 2452426, -6640020,
-9009768, 10327786, 26342108, 22887880, -12205223, 2087891, -13688598, 3648575, 11959336, 18133888,
-1224603, -8468602, -144418, -15389405, 12819941, -3466039, 5218922, 12183748, 132070, 16193637,
--8045011, -4307316, -3893388, -16443282, -10045929, -25135222, -4910758, -28676960, 1831804, -9796284,
-23547158, 3626026, 6833293, -22149684, 9259413, 265751, -10052371, 16422344, -8956081, -4475356,
-3896072, 10896332, -1460289, -5806796, 36522792, 12045236, 8316131, 13886703, -10104984, -379568,
--3487514, 19290308, 26477400, 25719874, -15460809, -16596291, -2464238, -6533719, 6511708, 17372068,
-17740362, 904628, 9855339, -1091995, -2941516, 5982890, 11231876, -977642, 8777839, -7410429,
-1414118, 246961, 2918430, -2467996, 9841918, 5963025, -1290101, -2698313, 2815351, 1898376,
-10707353, 734976, -6713034, -6908992, -4284767, 3206193, 3473555, 7137162, -8770860, 1311576,
--2596845, 5763846, -4447439, 8083666, -2964601, 3103651, -4753455, -3578245, 2235531, -6794639,
--257698, 7823820, 1622424, -3014530, 407485, -25323128, -54880020, -7439420, 72568840, 111815176,
-93918584, 74171400, -4971962, 8696772, -54465556, -61829812, -100730944, -58034136, -63427540, -20010790,
-8018704, 43852688, 31273268, 95498600, 83205864, 27451284, 5848672, -14845554, -32417340, -51346872,
--18752900, -52631604, -13973139, -25620016, -16510928, -12295418, 2820183, 884226, 17891760, 25799332,
-39293044, 42504608, 51103132, 44050796, -5253819, 4270271, -492848, 8262980, -25221122, 10198400,
--26960584, -67563592, -33109902, -50574312, -84902376, -24919400, -7330973, -34438660, 11716134, 26110716,
-59379532, 69900056, 103255848, 65157340, 53180284, 52785148, 32907502, -10234907, 5427765, -52074332,
--44785772, -75412112, -89569392, -103521600, -75307960, -58087824, -5986111, -2818036, 8280697, 30244086,
-51274392, 92231736, 91291680, 90814400, 72895792, 31228708, 47057808, 7371775, -23517094, -35527432,
--83923128, -76384920, -67572720, -58339616, -46645492, -28248000, -17079474, -5851893, 4276714, 28294170,
-33622076, 44224204, 36689220, 52422224, 47517908, 31071940, 35840428, 24063628, -6462315, -19399294,
--22342420, -53430468, -46277736, -41712184, -31204012, -17013976, -563714, -2029909, 13735305, 21064668,
-16441672, 19546934, 12535936, 3952444, -333397, 5696737, 1409823, -6507413, 7129646, 8545911,
-682363, 4620848, -1197759, -1849520, 878858, 3223910, -33286, -7184944, -9549323, -9382356,
--10842108, -7331509, -2103460, -2444373, 3313031, 1362578, 1064078, 3798362, 4400194, 3513820,
-4752382, 7309498, 6298570, 3618510, 4395362, 1596654, -1280437, -325881, -1672353, -2568391,
--923418, -1391033, -412854, -525597, 149787, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+5522254, -621697, 3624953, 906775, 827318, -11378442, -4951561, -5636071, 4433480, -609885,
+-3697430, 4030827, 4161287, 273267, 3995393, -1669132, -137439, -234613, -2466922, -1284195,
+-5468567, 2826089, -8085276, 3376381, -4217658, 3442416, 6427956, 2934537, -1225139, -1817845,
+4749697, -766115, 219580, 4495757, -4817343, -140660, -1630477, -2774012, 588947, -674847,
+994822, 4607963, 7593502, -2413235, 135828, 6307160, 478352, 1658931, -2324114, -3534758,
+-520765, 1059783, -5959267, -1564442, 3112778, 404801, 1123671, 1848983, -856309, -1862405,
+-1762547, -2088965, 2303713, 1887638, -1099512, -3414499, -4198868, 2074469, 36507, -3484829,
+3675955, -803159, -245350, 560493, 1037235, -1738925, 2198487, -2341294, -792421, 2876554,
+-1988033, 1146219, -3364570, -2572686, -1239635, -833224, -216359, 454730, -1357747, -1698660,
+-171799, -967441, 378494, -358630, -309238, -463320, 358093, 99858, -357019, -693637,
+-419833, -258235, -65498, -375810, -242129, -530428, 484794, -777389, -482647, -3735011,
+-1026497, 29528, -3537979, -3579318, -2147484, 8588861, -6032819, -2480344, -4212826, -7670812,
+2864743, 1315334, 298500, 6585259, 6234682, 6248104, 2017561, -1168768, 966368, 4709969,
+-2014877, 2031520, 2379412, -5556614, 7911867, 1534914, 2460480, 5851356, -2251100, -5838471,
+393526, 3965329, -2795487, -1268089, -3726958, 3946538, -102542, -402116, -6477348, -280784,
+-788127, 3987877, 2035815, -3551938, 7084012, 2614561, 1473174, 2481954, -1156957, 3972308,
+-1548873, 195958, -4946192, -5907191, 4734128, 3708168, 6558952, 640487, 1768453, -5080947,
+-7865696, -3861176, -2361158, -2291365, -3635153, -3130494, 1619740, -911070, 2384781, -2952790,
+-1132798, 1296006, 1466195, -887985, 4000762, 1215476, -3007551, 6041409, -2371359, 1858110,
+7621957, 1625645, 1044214, -2364380, 104690, -2596308, -3103114, -500364, 1752884, -35970,
+223875, 94489, -842350, -270046, 74625, -762357, 1786170, 1145146, -670552, -165356,
+49929, 468688, 251792, -1188632, -643171, -286689, 130460, 528818, -554588, -855235,
+733903, -440234, 562641, -306553, -474594, -594853, -7397545, -6890738, 4037806, 923418,
+5655935, -8740795, -1234803, -3472481, 938450, 10416906, 5942624, -9100499, 3445101, 869731,
+-3796751, -4218195, -5163625, -8378408, 299037, 1012002, -3108483, 1497333, -1791538, 328565,
+2529199, 1962263, 5405753, -4719632, 8511015, -5179731, 4942971, 3930432, -3186866, 2304250,
+413391, 3547106, -1415192, 1859184, 3246459, 1095217, 506269, -1288490, 2530810, 771484,
+-1128503, 6067178, -7913477, 557809, -4792647, 9545565, 3368865, -8307004, 3237332, 10912438,
+-10240276, -4869956, 1237488, -826781, -3880503, 3263638, -1356673, 7271917, -6100464, -593242,
+-2014340, -408559, -365072, 7027640, -6501507, -2147484, -700080, -6708202, 3629784, 2815351,
+7256347, 2964064, 6179384, 5575942, 922344, -2234457, 1755031, -185220, -766652, -1662689,
+-151398, -2552284, -1016834, -568546, -3579855, 2290291, 199179, -2493229, -415001, -2019708,
+197569, -78383, 1389422, -474594, -802085, 179852, -1145146, -31675, 1200980, 447213,
+-251792, -802085, 3296388, -5092758, 646929, -3200288, 3375308, 1202591, -5126044, 14813342,
+-9423695, 2960843, 16047072, -11346767, 5281199, -311385, 5247913, -1407676, -9698573, -2138357,
+8009041, 7163469, 1985886, -83752, 4054986, 1973001, 146566, 3340948, 3372086, -2800319,
+4296578, -1207423, 6772090, -5470715, -8420820, 1783485, -7351374, 2523830, 137976, -2116345,
+-2353105, -3370476, -5003100, 958315, 1763621, 165356, 1272384, 1444183, -3084860, -6468221,
+5076115, 1124745, 832687, -328028, 7459285, 1489817, 3123515, 7870528, -4842039, 1898912,
+315143, 2367601, 5519033, 4314832, -7193534, -6312528, -1625108, -3610994, -828929, 247497,
+-3098282, 1636383, -5752572, 273267, -5535139, 2728378, 2709588, -3211562, -4210679, 461709,
+2310156, 423054, -4866735, 680752, -2786360, 2087891, 1733556, 775242, -913217, -1369021,
+967441, -144418, -523986, -34360, -1255204, -1057636, -3339874, -828929, 3043521, 1330903,
+-873489, -605590, 2124935, -732292, 638340, -942208, 38118, -236760, 113817, -1210107,
+-803696, -461709, -345745, -436476, -503585, 101469, -332323, -763967, -627065, 402653,
+4677220, -1999844, 4235375, -798864, 2111513, -2433636, 289910, -1598265, 1406602, -769336,
+-9246528, 7022272, 4505958, 11582453, -7600482, 4742718, -9403294, -1615982, 5735929, 6206765,
+-6599754, 1888175, -7645579, 564788, -8964670, 2935610, -6715718, -8334384, -7456600, 3742527,
+-6024766, 259309, -7065758, 916976, 1037772, -1066763, -5172751, 3245922, 4540318, 2703145,
+2114198, -5530308, 3007014, -5799817, -1833951, 3555696, 114890, -806380, -1561758, -226560,
+3678103, -4279398, -8246337, -1745904, 2537789, -1745367, -6114423, -6185290, -8768713, 2093260,
+-2529199, -8213051, 5869610, -5265630, -5160403, 9916543, -3586298, -1962800, 811212, -1802276,
+-3236258, 796180, -5443871, -2702608, -4580046, -3617436, -1503239, 2949569, 7511361, 375273,
+4514548, 370441, 3368865, 2333778, 6068252, -450972, -136365, 615791, 2243584, -1245004,
+259846, -605054, 4437775, -185220, 2143726, 307627, 855235, -772557, 992137, -2736968,
+2974802, 54224, 59056, -2241973, -564788, -3023657, 1427540, -1555315, 1022739, -424665,
+3001109, -1482838, 594316, -2636036, -2096481, -218506, -911607, 704912, 7662222, -11038066,
+1987496, 9656160, -3582003, 10575283, 2946348, 666794, -3067144, -7385733, -4858682, 12589623,
+-6763500, -59056, -2337536, 983548, 7577933, 6807523, -4125853, 9834401, 9819906, -4629975,
+-2421288, 5980742, -5053566, -4424353, -317291, -6795712, -153008, -2006287, 876710, 11798812,
+4028143, 636192, -5408975, -15696495, -1912871, 8818105, 2164664, -5883569, 4512400, 7167764,
+6263136, 7573101, -12403329, 2506114, 602906, -6156299, 3337190, -5541045, 3946001, -3126736,
+4894115, 11000485, 14541149, 9177271, 4217121, -6033356, -1664837, -7201050, -7568806, -1594507,
+8526047, 2096481, 134218, 2006287, -8345659, 2167348, 1038308, -76773, -4224101, 2259690,
+4567161, -4829154, -9100499, 20725364, 2677912, -3713536, 1278827, 2230162, 9443559, -1902671,
+2598455, 3218541, 4687420, -3262028, -1599339, -3521873, 1672353, -976031, 1844152, 1718524,
+-1223529, -1928440, 3514894, 467615, 929324, -671089, 2124398, -3646964, -2601140, -1755568,
+-646929, 4050691, 1491964, 2707977, 2066953, 2122788, 150324, 470299, -901943, -2555506,
+2498597, 601832, 1056562, -1781338, -5709622, -1603633, -3503083, -1331977, 2653753, -3595425,
+16345572, -1606318, 4605279, 11740830, 1534377, -1739462, -7679402, 4325569, -4147865, -5170604,
+-15518254, -6922414, 3117073, -805843, -3007014, -11180874, 3907883, 6199249, -8824010, -4583267,
+-2374580, -9203578, 3673271, 686121, -4889284, -3980361, -1687922, -12443057, -4451734, 6219650,
+10365904, -7819525, -9823664, -2812667, -579821, -7936563, -6560563, 2538863, 4364224, -8696772,
+17497696, 131533, 7113003, -3935264, 6683506, -4480188, 2010582, -12372727, -2621004, 5124433,
+-12430172, 3467112, -2812667, -6271726, -14114336, -251256, 7825968, 178778, -14887430, -2181844,
+2702071, 6056441, 10912975, -3946538, 4881231, 12824772, 4252555, 1634772, -5806259, -1022202,
+-3624953, 839129, -4319664, 1072668, -8154533, -993748, 6239514, 1872606, 1209570, -3456912,
+-6323266, 3601867, -1171989, 3715684, -1349157, 570694, -824097, -1727651, -1684701, 2451353,
+912144, -369904, -837519, 179315, -2458869, 1253057, -2510945, -3029563, -1975685, 1211718,
+147103, 120259, -2370285, 1968169, -299037, -1114007, -3349001, -942745, 208843, 554051,
+1357210, 3671123, 1127966, 940061, 1791001, 4835060, -1583769, -4825933, 5883032, 1079111,
+-9099962, -14207215, -11664057, -14704894, 12655658, -7672959, -1937567, 4207458, -13989245, -5749888,
+-9747428, -4282083, -3149822, 6350646, -12265353, -6480032, 3840238, 4878546, 6993818, -69256,
+181999, -2140504, -78920, -2830384, 1692754, -9647570, -5268851, -8479876, 5855651, 2975876,
+4522601, 5977521, -11837467, -809601, -1329292, 10755672, -4087735, 3412889, 5776731, -2157684,
+6189048, -4055523, 6907381, 9814000, -3882651, -637266, 8327942, -7135015, 11538967, -4931696,
+-18510236, 2903935, 9494025, -3615289, 1039382, -284542, 7269769, 9222905, -9383967, -4031364,
+2117956, 6359773, -11027329, -8295193, -6719477, 13318694, -375273, -15211164, -3366718, -6313065,
+5149129, 712965, 3874597, -5696201, 9361955, 425202, 1629940, 2741263, -8771397, -2942053,
+591632, -1067836, -2252174, -2511482, 2382096, -2391760, -2410551, 1866163, 2723009, 1448478,
+-5175973, -440234, -2097018, -1475321, 2067490, 1906966, 4244502, -571768, -2169495, 1665374,
+-4863514, -549219, -92342, -3119757, 375810, 314069, -1243393, 615254, -5520644, -978179,
+-708133, 633508, 648003, 2311766, -340913, 2593624, 1415729, 1344325, 125628, -8558796,
+-3464428, 5878737, 2176475, 8422431, 2888903, 4120484, -16540993, -6481643, 6454262, -4357781,
+-3120831, -5510980, 1694365, 8617852, 2260764, 2053531, -11082089, -3747896, -2022930, 4108136,
+9731322, -11819750, 5572183, -9635222, -2562485, -8863739, 1137093, 1227824, -452045, 3702262,
+-8276402, -2384781, -7756174, -3189550, 139050, -358630, -9740449, 5581847, 6250788, -2330020,
+7417946, 14590541, 1494649, 11052025, 14175003, 1114544, 456877, 3418794, -2982318, 4698158,
+959388, -3104725, -4780299, 17806398, -1854352, 10405095, 4599910, -5251672, -6096169, -4244502,
+4973572, -4069482, 6464463, 15683610, 7947300, -2085744, 249645, -13155485, -9067213, -8026757,
+12341589, 19376208, -8511015, -78383, -7875360, -1301912, 11845520, -3752191, -726386, -18698140,
+-2507187, -3411278, -1989644, 7089381, 496069, 1467805, 2154463, -3758633, 2968896, 1578401,
+2644626, -2247879, 3836480, -1858647, -435402, -4745402, -1129576, 4111358, -1529545, -134218,
+-817654, 3946001, -1016834, -2881923, 1663226, 1745367, 995896, 1370632, 1446867, -1568737,
+387621, 2779381, 4824322, 4175782, 2703682, 1454383, 285078, 351114, -3033321, -290447,
+1896765, -1871532, 1998234, -700617, 685584, 2609193, -1150514, 11188927, 31024160, 13522168,
+-4216584, -1076963, -5763846, 14298483, -14324790, -8140574, -21900576, -252329, 10799158, 13434658,
+2419677, -5334350, -13129715, -9608379, 9675488, -1966558, 15367393, -46171, -4935991, 7250979,
+2642479, -134218, -3821984, 10029286, -1865626, 8663486, -138513, -4727686, 18906446, -4525822,
+7668127, 18582176, 6534256, -789200, -9085466, -1716376, -14798310, -17340930, 3773129, 11096585,
+-2666101, 1549946, -18923090, -7201587, 10959146, 5931350, -4905927, 3615289, -5615670, -2732136,
+-8631274, -14511621, 872952, -3433290, -10244034, -16748762, -14438606, -4712653, -13263396, 6088653,
+-5940477, 2089502, 1712618, -116501, 315680, -2163053, -2974265, 8569533, 17062832, -11521787,
+2081449, -4853313, 6168110, -6440841, -256624, -4656819, -2098092, 15682536, 11409044, 2551748,
+-1770063, 137976, -6424198, 2198487, 6393596, -1239635, -5556614, -3195993, 5535676, -6732361,
+611496, 2837363, 2683281, -2383707, -2143726, 2375117, 3016141, -2336462, 3592740, 2051921,
+2979634, -345745, 3934727, -447213, 2488397, 1196148, 1463510, 875636, -870268, 4598836,
+-4552129, -707059, 991064, -1400159, -1158031, -2176475, 2059974, 149250, -3925063, -1511292,
+2561948, -2858301, -12782360, -14460081, 3753802, 5553393, 17353816, -14662481, 4687957, 4510790,
+-24423332, -1123134, 182536, -20402706, -11110007, -7208029, 5222144, -1619203, 1249299, -5746666,
+8617315, 13543642, 7148436, -1907502, -20707112, -9010305, -11247982, 4225174, 1293322, -9074729,
+-682900, 7158100, -6010807, 12354473, -11093364, -311385, -6456947, -20699594, 3558917, -8800925,
+-9921911, 7734163, 11467563, -12821551, 4992363, 15171972, -4926328, 6658810, 5219996, -3534221,
+2085744, -16804060, 25485262, 10043244, 6051072, 24338506, -29659970, -2207076, -4088272, 3167002,
+12130598, 12599287, 4850092, 6017786, 15569256, -1467268, -10554345, -18343806, 7124277, -6928856,
+699543, 4981625, -3658775, 7518877, 19937776, -12281996, 9296994, -5948530, -5701032, 15079630,
+1147830, 4710506, 14619532, 12072079, -5304822, -6099928, -12861280, -3237869, 63888, 6714108,
+7032472, 25233, 1667521, 1020055, -257698, 1411971, 1616518, 551903, 3969087, -1975148,
+592706, 2867428, 1582159, 843424, -1787780, 3855807, 2499671, 595927, -2197413, -3064459,
+-7295539, 4365298, -300111, -647466, 2197413, -3484292, -430570, 2449742, 3333968, 5054640,
+2823941, 1405528, 1377611, -31675, 3642669, 15959562, 18682034, 4722854, 11509439, -7474854,
+5399311, 5340792, -30771830, 8739185, 9921374, 2146410, -9830106, -179852, -19006304, 22367652,
+13410499, -6964290, -7545184, -11044508, -5829881, 16203838, -16381005, -9309878, -2484102, -2670933,
+-3555159, 2413235, -10855530, -10982768, -6535867, -8442832, -2327872, -10999411, -1551020, -7356742,
+-24317568, -15431281, -6017249, -3780645, 3380139, 4139812, -146566, 796716, 7031399, 3473555,
+3599183, 17192218, 3571802, 5872831, 10672457, 23066122, 19641422, 1135482, -7761006, -14969572,
+13733695, -3269544, 37093484, 7594576, 16639777, -1702955, 2135673, -14618995, -563178, 12982612,
+7462506, 9872519, -11106785, -7239168, -14278619, -27031988, 15714212, -23839216, -2888366, 31737660,
+2151242, 12801150, 6081674, 9454297, 332323, -16924318, 16644609, -140660, -14932528, -13265543,
+551903, 5371931, 11223286, 3146064, -13077102, 845572, -2540473, 2823941, -5103495, -4149475,
+2401424, 2280628, -3994857, 564788, -1234266, -206158, -5280663, -1795833, -1624035, 2668249,
+-1338956, -3106335, 4396973, -2469606, -957778, -7415261, -7951595, 206695, 296890, -3133716,
+-2001455, 2829310, 2088965, -3181497, -5271536, -134755, 3604015, -22033720, 6556268, 8189966,
+-14646375, -11459510, 302258, 8992588, 21531744, -1176821, -16472810, -16777216, -806917, -9528922,
+2871186, 2961917, -18401788, -16016470, -30109868, -8997420, -8685498, -20628728, -13856101, -219043,
+-9489730, -6086506, -5344550, -1763621, -20244328, -10982231, -12422119, -6267431, 6318971, -17360258,
+1348083, 14296872, 17174500, -4101694, 4736812, 9709847, -16886200, 9488656, -7285875, 14977088,
+-7242926, 1289564, -7810398, -1796370, 29952028, -6231461, 11301133, -21941378, -3574487, -98784,
+-20698522, 19277424, 777926, -7175280, 13931800, -5775121, 3608310, 27377196, -10862509, -15115064,
+10382010, -2948495, -30819612, 12457553, -40867152, -22031034, 16432545, 12728136, 2653216, 8591008,
+71941, -297427, -30827664, -16663399, -7245073, 2743410, -17514876, 4238596, 2451890, 7156490,
+-11432666, 605590, 8864812, 6645925, 5103495, 510564, 4202089, -10125385, -6416681, -6860674,
+-1884954, -1477469, -882079, 8021389, -4153770, 4168803, 8099772, -4069482, 2506114, -6524056,
+-4898410, -392990, 2087354, -5873368, 2537789, -7340636, 6358162, -2646237, -1277753, 181462,
+5703717, -1894618, 2277943, -5189394, 4565550, 3362960, 10537165, 2383170, 8653822, -8647380,
+-2870112, -10269804, -5290863, -5088463, 41455024, 22702124, 32212, -21343304, 10965052, -22256520,
+-18108118, 3293703, 18411988, 36403068, -5731634, 18405546, -6585259, 13065827, 22059488, 12342125,
+14096620, 7565585, -4139812, -18056042, -18693846, -5653251, -17667884, -5193153, -3253975, -3973382,
+14105209, -2404108, -36287104, 2130304, 8735963, 8380555, 21681532, -2238752, -43305080, 24617678,
+-19390704, 6338835, -4259534, 14565845, 21189222, -23602456, -1676648, -11793443, -20605106, 14898705,
+-10261751, -25345676, 9919764, 14803679, 24335822, 6452115, -3828963, 2664490, 19916838, -16052440,
+31457414, -9900436, -8808978, -2834679, 19154480, -19963008, 1802813, 2435783, -55599964, -8240969,
+17162690, -8000987, 2845953, 7714835, 3995393, -2728378, 4482335, 19055160, 22721450, -18025978,
+6460168, -13205951, -2294586, 22526030, -523986, -2348273, 788127, -1526861, -11724724, 3213173,
+734976, -6823630, -17345762, 227096, -4182225, 5282810, -8039105, -7474317, -9449465, 7959112,
+1787780, 4876936, 3871913, 325344, 2843268, -3839164, -7978439, 12108050, -1274532, -5879810,
+-243739, -4241280, -2710661, -4896263, 561030, 1484448, -773631, 3349001, 8764418, -341987,
+-2211371, -3615289, 738734, -4494147, -2608656, 5037997, -3929895, -3227668, -4796405, -11689827,
+-6605660, 1611150, 7490960, -6149320, -1620813, 23759222, 15761456, -44174276, -25113748, 30255360,
+35066260, -18848464, -6386617, -49708340, -27475442, 7159711, -2254858, 6610492, -26422638, -16558173,
+-18108656, 26825292, 39862128, -1940788, 10762114, -6491306, -3491272, -508954, 9155797, 17271138,
+4204773, -6154688, -3304977, -4059818, -23810762, -13509283, -24207510, -3224984, 7485055, -10183904,
+14939507, -11068668, -4140885, 23173496, -11233487, 13019656, 9057012, -4259534, -22323630, -16172699,
+-13307419, 4012573, 41748692, 7336878, 22450868, 26443040, 20712480, 15316390, 13727252, -23044110,
+557272, -3783866, 30906048, 14667850, 18079128, 32246078, -15833397, -21718576, 7973070, 27270358,
+-46231028, -850940, 3696356, 21490406, -37384468, -56369300, -10014790, 15775952, 3955128, 6372121,
+17681306, 1113470, -12483859, -18513994, 629750, 2525978, 3675418, 17046726, 25308632, 11949136,
+1895154, 75162, -257161, 2072322, 2562485, -6398428, 9350144, 1152125, -8513162, -15032922,
+1881196, -6413997, 3245385, 1628866, -1334661, 943282, -6201933, 6460168, -3319473, 4334696,
+-6669011, -4336307, -11913702, -11782706, 580894, 6192806, -5259725, 12406013, 354872, 3690988,
+-3721052, 13260175, 1130650, 6075231, -6542846, -3592203, -2071785, -8256538, -1600412, 8939438,
+-15462419, 11917997, -596464, -11344619, -20089710, 7569880, -9793062, -19589882, 14097156, 27195196,
+8301635, -10292352, 16095390, 27361626, 10059887, 5752035, 1898912, -2889439, 12796318, -22608708,
+1321776, -32577326, 17467096, -26257282, -2249489, 14390825, 7828115, -14896020, 3157338, -17259326,
+35744864, 4825933, 11580306, 18846854, 39439076, -16088411, 12796318, -18672908, 6804302, 14410689,
+31707596, 7711077, -6462852, 32742146, 4380867, -2047089, -18720152, 1480153, 20369956, -6652368,
+19581292, -23859618, 37152540, 38789996, -46324980, -949725, -2922725, 10384157, -7890929, -5810554,
+19931870, -16546362, -49412524, 863288, 43948788, -34395172, 17418240, -7738994, -4385699, -20841328,
+48520244, -2856690, 8043937, 4738960, -32610076, 42531988, 3323231, 37859064, -74320648, 7368554,
+-6967511, -22133040, -5995775, 13345000, -17284560, 11923366, -15574625, -10101763, -20505784, 26207890,
+-9925669, 2060511, -21864604, 1236414, -16052977, -5199595, 7510824, -10808822, 5219996, 979253,
+-14808510, 13704167, -6047314, 2209761, -6309844, 12466679, -9116605, 2202245, 891206, -3102577,
+16174847, -9028021, -11249593, -6249715, -12612171, -17340394, -8805757, 1996623, 1151588, -12404402,
+-7154879, -8236137, -12230456, -9430138, 4307852, 3156801, -322659, 31423592, 3623879, -23854786,
+2324651, -48631376, -11252814, 2573222, -9577777, -38744364, -4443144, -25395604, -6479495, 23511188,
+5282273, 30788474, 12581570, 11690364, 7039452, -10356777, 24448028, -12377022, -411243, 11735461,
+5184563, -14969035, 12046846, 5113696, 28954522, 12102144, -5416491, 17726940, -14194330, 23897198,
+7969312, -26008174, -27096948, 14028437, 17266842, 7389491, 2630668, -12566001, -17427904, 5389647,
+-17155174, -25451440, -8080981, -4191351, -23746874, -8613020, 8559333, -15958488, -26758184, 7614977,
+9582609, 1063541, -3504157, -1409286, -4762582, 9658845, 44889924, 9344775, -1739999, -1575179,
+-16224776, -25622702, -11704860, 37314140, 39652212, 20608864, 3513283, 36392868, 17147120, -8051453,
+-50709068, -38298760, -31942208, -60081760, -35391604, 8677445, 48642116, -21529598, 16255914, -24089934,
+7627862, -1827509, 16510391, -7698729, -3147137, -21474836, -12730820, -5105106, -19609746, 24811490,
+-4160213, -12663711, -6416145, 2726767, -14281840, 10199474, 7051263, 16135655, 3339874, 4707284,
+-16000364, -18096844, -2454574, -13309030, -8860518, -15546171, -23046258, 1415729, -6273337, 1647120,
+1299228, 17631378, 17052094, -6250788, -3804804, -7474317, 16457778, 11368242, 6960532, 2846490,
+-3774203, 9842454, -13647795, -5070746, -2519535, -14995878, -29844118, 15709380, -903017, -9256728,
+-4327180, 11241540, 20809654, -8856759, 26845156, -30748208, 24797530, -3078955, 33138358, -21462488,
+19086298, -31688268, 27536110, -25590488, -10979547, 38607996, 8742406, 31031676, 44069048, 4640176,
+-3712999, -18345416, -1623498, 28175522, 6924024, -9837623, -31235686, 2772938, 5998996, 14811732,
+8836358, 12355010, 7494718, -18010946, -29070486, -12142946, 27879706, 10874857, 89247808, -28248536,
+-24012088, 29298120, 45759120, 9785009, -907312, 12234214, 2916820, 14903537, -13605383, 5497558,
+21339008, 23886998, 15714212, 69562904, -8913131, -8756901, -4610648, 36002028, 21299816, -17926120,
+18656802, -164819, 6026913, -14702747, 31681290, -31439698, 2128156, 49242872, -36148592, 105441448,
+-48360260, 50614044, 46093052, -45030584, -41500660, 47106128, 1951526, -26674968, -11483132, 26190710,
+-71077416, 11497091, -8406862, -45336064, 29875256, -35396972, 2793876, 3105798, -14466524, -34901976,
+9557913, -2261837, -1618666, 7305203, -7329362, -11155104, 6315213, 15366319, -5650567, 2806224,
+11512123, -10246718, 16031502, 12949863, -25584046, 4266513, -14373108, 7132867, -1023276, 2709051,
+-13089987, 6082211, 3422015, 591095, -6563247, 20447802, 4465692, -23622, 18881214, -12627741,
+-12181064, 2760590, 8159364, 2802466, 9092983, 5477157, -26304528, -12828530, 6803765, -14626511,
+22668838, -8334921, 17365626, 23416698, -54388244, -22512608, 32749126, -69270304, -43543988, -28705950,
+48386564, 104359656, 28368796, -81051400, -18752364, -82812336, -43826920, 68365144, 40215928, 64305324,
+34746824, -47802988, -76973864, -57917096, -14361834, 35061964, 38951060, 24137180, 12911745, -19762218,
+-84104048, -100249368, -22148610, 77622944, 137204880, 93750544, -17912162, -64039572, -92938264, -68208912,
+-55897924, 536871, 21867826, 75608064, 79867064, -42942692, -27513024, -100368016, -94087704, -33239826,
+8920647, 97843112, 143433648, 64282776, -42763916, -150174064, -112003624, -81438488, 39250632, 86288040,
+53218404, 34382824, 28488518, -89395448, -16840566, -50761680, 18729278, -6604586, 52916680, 84186728,
+66115116, -77612744, -157918432, -117950000, 12825309, 92641368, -2596845, 128265976, 4997195, -32371168,
+-38754028, -27695560, 46171, 92826592, 79344152, 15161771, -32029718, -10801843, -6158446, 48981416,
+53142704, 6958921, 2012729, -7789460, -1727651, -9720048, -13347685, -8048232, -5052492, 19104552,
+28598576, 24233816, -35183836, -38967164, -15545097, -15812459, -15970299, 36617280, 29138668, 38483444,
+10830297, -15658377, -28761248, -54448376, -35383552, 23714126, 48309256, 74257304, 50142668, 4832912,
+-113850992, -99198712, -34306588, 41661720, 63581084, 86042688, 64103460, -4369593, -64869576, -94489280,
+-92136176, -16065862, 99686192, 104180336, 52334712, -24212878, -69352984, -47449724, -32668058, 3652870,
+-18343268, 36658084, 11662447, -30030412, -27979028, -99858, -45192184, -5798743, 6902013, 5000953,
+-3766686, 943819, -15080704, -2094333, -1615982, 7636989, -5088463, 20720532, -5377299, -4220342,
+-5665599, -6762963, 13211856, 3533684, -6116571, 20057498, 1454383, -36208184, -17809082, 9718974,
+17793512, -6199249, 2317672, 24473260, -438624, 3164317, -20016158, -9221295, 6383395, -4594542,
+-4318053, -2887292, 16492674, 5701569, -6226092, -19527068, -7526930, -1345399, -17450988, 1473174,
+-19955492, -13680008, -9200357, -18097382, 28196998, -5268851, -12523051, 11640435, -32749, -27776090,
+-1451162, 27304718, 22485228, -13013751, 17446158, 2683818, 16651588, -18631568, -26987964, 10184441,
+12127377, 10320270, 9292699, -10477573, 10240813, -20478404, 13871134, -27852862, -24160264, 17733920,
+-14071923, 12028056, 16976932, 992137, -12853763, 3950833, 4910222, -1331440, -913217, -680752,
+11112691, -9436043, 7269769, -9853192, 12998719, -11491185, -5982353, 4486094, -3740917, -654446,
+5227512, 977642, 3542811, 9652939, -7752416, -4944044, 5823976, 3157875, 11465952, -9443559,
+3294240, -1365800, -6926709, -7369627, 3058017, 1559073, -6849399, -10676752, 3155190, -129386,
+-1799591, 6377490, -9803263, 11251741, 3605625, -10240276, -10946261, 8999567, -15444166, 10402411,
+-1590749, 7114077, -632971, 2251100, 13797582, -22073984, 44296684, 67837400, -8949101, -24950538,
+-21620866, 62552976, 28133110, 60542932, 32499480, 199179, -28156732, -6153078, 15327128, 28496572,
+13487808, -13035763, -3334505, 13675176, 19892142, 2587718, 4388920, -13870597, 2452426, -6640020,
+9009768, 10327786, 26342108, 22887880, -12205223, 2087891, -13688598, 3648575, 11959336, 18133888,
+1224603, -8468602, -144418, -15389405, 12819941, -3466039, 5218922, 12183748, 132070, 16193637,
+-8045011, -4307316, -3893388, -16443282, -10045929, -25135222, -4910758, -28676960, 1831804, -9796284,
+23547158, 3626026, 6833293, -22149684, 9259413, 265751, -10052371, 16422344, -8956081, -4475356,
+3896072, 10896332, -1460289, -5806796, 36522792, 12045236, 8316131, 13886703, -10104984, -379568,
+-3487514, 19290308, 26477400, 25719874, -15460809, -16596291, -2464238, -6533719, 6511708, 17372068,
+17740362, 904628, 9855339, -1091995, -2941516, 5982890, 11231876, -977642, 8777839, -7410429,
+1414118, 246961, 2918430, -2467996, 9841918, 5963025, -1290101, -2698313, 2815351, 1898376,
+10707353, 734976, -6713034, -6908992, -4284767, 3206193, 3473555, 7137162, -8770860, 1311576,
+-2596845, 5763846, -4447439, 8083666, -2964601, 3103651, -4753455, -3578245, 2235531, -6794639,
+-257698, 7823820, 1622424, -3014530, 407485, -25323128, -54880020, -7439420, 72568840, 111815176,
+93918584, 74171400, -4971962, 8696772, -54465556, -61829812, -100730944, -58034136, -63427540, -20010790,
+8018704, 43852688, 31273268, 95498600, 83205864, 27451284, 5848672, -14845554, -32417340, -51346872,
+-18752900, -52631604, -13973139, -25620016, -16510928, -12295418, 2820183, 884226, 17891760, 25799332,
+39293044, 42504608, 51103132, 44050796, -5253819, 4270271, -492848, 8262980, -25221122, 10198400,
+-26960584, -67563592, -33109902, -50574312, -84902376, -24919400, -7330973, -34438660, 11716134, 26110716,
+59379532, 69900056, 103255848, 65157340, 53180284, 52785148, 32907502, -10234907, 5427765, -52074332,
+-44785772, -75412112, -89569392, -103521600, -75307960, -58087824, -5986111, -2818036, 8280697, 30244086,
+51274392, 92231736, 91291680, 90814400, 72895792, 31228708, 47057808, 7371775, -23517094, -35527432,
+-83923128, -76384920, -67572720, -58339616, -46645492, -28248000, -17079474, -5851893, 4276714, 28294170,
+33622076, 44224204, 36689220, 52422224, 47517908, 31071940, 35840428, 24063628, -6462315, -19399294,
+-22342420, -53430468, -46277736, -41712184, -31204012, -17013976, -563714, -2029909, 13735305, 21064668,
+16441672, 19546934, 12535936, 3952444, -333397, 5696737, 1409823, -6507413, 7129646, 8545911,
+682363, 4620848, -1197759, -1849520, 878858, 3223910, -33286, -7184944, -9549323, -9382356,
+-10842108, -7331509, -2103460, -2444373, 3313031, 1362578, 1064078, 3798362, 4400194, 3513820,
+4752382, 7309498, 6298570, 3618510, 4395362, 1596654, -1280437, -325881, -1672353, -2568391,
+-923418, -1391033, -412854, -525597, 149787, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
{
7398618,
-2813204, -3714073, -630286, 2575907, -455267, 2740726, -6771016, -4831838, -1181653, -5706938,
-2391760, -1274532, -627602, -3857418, -1717450, 3578782, 3580929, -1407676, -1089311, -2382633,
--5472325, 6096706, 3630858, 150861, 643171, -341450, 178778, 4908074, -2490544, 894964,
--7861401, -6454262, -1612760, 576063, -5478231, -1026497, 1949378, 462246, 99858, -2760590,
--2114735, 5132486, -2380486, -2204392, -721555, -737124, 2267206, -1200443, -3367254, -130997,
-2955474, -4220879, 183073, -4520990, 317828, -3315178, 5005785, -299037, -5273146, -782221,
--511638, 613107, -7530689, -927176, 627065, -5051956, 2318209, 91268, -5801964, 2622078,
-3568044, -3114925, -3554086, -6396280, 3340411, 1908039, 5917928, 2898566, -879931, 1127966,
--821413, 1771137, 1881733, 4059281, 1039382, -1803349, -63351, 453119, -133681, 2307471,
-604517, -831076, -1134408, 1107565, 907312, 1720671, 873489, 650688, 1046898, 920734,
-391916, 558346, -111132, -332860, 373125, 215822, 443992, -279710, 523986, -54224,
--5474473, 2469606, -6828998, -1914482, -948651, -3466039, 3300682, 7637526, -3120294, -1031866,
-369367, -3177202, 2207613, -490700, -2563559, -4384088, -2313914, 6886980, 6673306, 3731253,
-7750806, 4542465, 2473901, 7275138, -4518843, 1589675, 3128347, -159451, 1268626, -2181307,
-1409823, -10103374, 228170, -602906, 3656091, -2300492, -1268626, -721018, 2804614, -3210488,
--501437, 891206, 1979980, 1896228, -522375, -3442416, 663572, 1181653, 2486249, 1848447,
-2889439, -3237332, -1896228, -606664, -5696737, -693100, 1534377, 4894115, 5500780, -768262,
-3041374, 2235531, -391379, 2020245, 2445447, 3528316, -1402307, -63351, -2637110, 443992,
--2269353, 1560147, -3369402, -3216931, 1941862, -34360, -6310381, -607738, -4720169, -1300301,
--652298, -813896, -6272263, 594316, 2243047, -1868311, -1773822, 1075352, 817118, 446140,
--1224066, -3392487, -151934, -1490891, 1308354, 38655, 113280, -385473, -1375463, -1559073,
--1733556, 119185, -736587, 757525, -1076963, 431107, 289373, -1008244, 3221, -1121523,
--378494, 62277, 31675, -996969, -215285, -170188, -6911676, -6536404, 2436320, -779000,
-5430450, 5437966, 459562, 115427, 10492068, -2851322, -238908, 8788040, 374736, -5109938,
--7445326, 5390721, -2171643, 13422, -4607963, 1410360, -3288334, 3652870, 16378321, -5999533,
--4799626, -5927592, -6377490, 1142461, -5199058, -12923557, -315143, 1266479, 41339, -5156108,
--1069447, 4161823, -5258114, -3136400, 7660074, 2488934, -1938641, -1854352, 4935991, -2474975,
-3536369, 3190624, -6974490, -4664872, -4125853, 4534949, -3533148, -2141041, -1916092, -2360085,
--357019, -4745402, 48318, -1458678, 1173600, -689342, -10219875, 4705674, -5710696, 4473209,
-853088, -8447664, 1716913, 5576478, 1742683, 9313637, -3948149, 467615, 1103270, 2142652,
-3359201, -3740380, 1408749, 1184337, -5430450, 7405598, 545461, -1111323, 3174518, -1126355,
-1427540, -1419487, -2834142, -256087, -1822140, 2390149, -630286, 404264, 2914672, 944893,
-1112397, -710280, 1586990, 216896, -423591, 979253, 2118493, -1597191, 139050, -1682554,
-1009317, -595390, 3058554, -4300873, 2004139, 2246268, -2377801, 1107028, -1190243, -9346923,
-2860985, 8866960, 7308424, 8319352, 1417876, -1732482, -7130183, -3670050, -3367254, -2624762,
-7308424, 10249403, 702764, -636729, 7237557, -11733851, 199179, -887985, -244813, -3778498,
--3999688, 4365298, 5270999, 242129, -1213865, 2191507, -5770289, -4268124, 4354560, -4711579,
-9117679, 8373039, 1347546, 5185636, 4275103, 951335, -3790846, 1377074, -246961, -6389838,
-6229850, -478889, 2888903, 5182415, -6117644, -2278480, -7261179, -1552094, 1602023, 6849399,
--6998649, -2680597, 5022965, -987843, -4496294, 7507066, -6237367, -12916577, 2137820, -7239704,
--3323768, 3618510, -3195456, 708133, 721555, -3090766, 5494874, -4997732, -5817533, -6842957,
--821413, -2922188, 402116, 1922535, -4289599, 1202054, 1158567, 394600, -2073932, 1203128,
-848256, 2979634, 379031, -849330, -2042794, -1196685, -938987, -436476, -759672, -1150514,
-318901, 647466, 782221, 345745, -443992, -903554, -450972, 1523640, -1527398, -1452236,
--512712, 41339, -192200, 1185948, 1248225, 1305133, -818191, 513785, 207232, 566936,
-2841121, -1412507, 181999, -11762842, 2518998, 11068131, 907312, 1724429, 3380676, 10368051,
-1440425, -9990094, 11094437, 4859219, 4020626, 6736120, 5871757, 40802, -2050310, 6354404,
-4887673, 1658931, -4551592, 5527086, 2629594, 8185134, 9579925, 3631932, -2328946, 216359,
--41339, 3980898, 12155831, 7204808, -6700149, 11737609, 501437, -1444720, 1583232, -8654359,
-9651865, -1279900, 207232, -1147830, 2487323, -1297617, 5002027, -6977711, 9862319, 8382703,
--276489, -1561758, -5426691, -10408853, -3534758, 4135517, -2385318, -3901978, 5562520, 6486475,
--4350802, -3905199, -13313862, -4627828, -1611150, -646393, -14901926, 7614440, 878321, -8894340,
--7272990, 2458869, -3427384, 913754, -2166274, 485331, -3889630, -861141, -3464428, 2541547,
-5034776, -1403917, 3841848, 457414, -1534377, 4477504, 1602560, 233002, 3729105, -418222,
--1635309, -2308008, -2567854, -2717641, -2546379, -3178276, -2285460, 175020, -1241246, -2981244,
--1432909, 314606, -592706, -1100049, 687732, 1228361, 632434, -1351841, -1903207, -2405182,
-307627, -2280091, 2167348, -1245004, -1276142, -1228361, 91805, -871342, 5510980, -6960532,
--55835, 71941, 258235, 11242614, 6184753, -97711, 14018773, 6475200, 12658342, 3018825,
-4289062, 13502840, -5328981, -8999567, -5679021, 12625593, 3105798, -7122667, 9648644, -2635499,
--5602785, 8607651, 20452634, -5272609, 1051193, 3264712, 3933653, -5313412, 703838, 11249056,
-1238561, 13832479, -2978560, 14854144, 10544682, 3559454, 8847633, 5580237, -5247377, 3694746,
--1315871, -1321776, 1463510, 1009854, -914291, 3919695, 2764348, 9598178, 6519761, -8021925,
-2855617, 3614215, -5865852, 354335, -13913010, -18104898, 7311108, -4637491, -11766600, -2537789,
--6302328, 7799661, 1782411, -3675955, -8859444, 6997039, -6388227, 4269198, -7176354, 1067299,
--2840047, 10972031, 2128693, -4281546, 4310000, -9354439, 8608188, 1389422, -7955890, 368830,
--740345, -2308008, -872415, 1147830, 2474438, -2339684, 4021163, -869194, -1444720, -1781338,
--1285269, -3463891, -179852, -1229971, -3255048, -1240172, 1313186, -2081985, 2254858, 332323,
--1086627, 571768, -2122251, -413927, -1446867, -192200, 44560, 107911, 1218697, 1344325,
-1615982, 71941, 879931, -70867, -7922604, 1064078, 321049, 2102387, -4827007, 5466420,
-6038724, -651224, -4014721, -13911399, -11913702, -9175661, 4292283, 1243930, 2233920, -11404212,
-7247221, 5103495, 9015136, -9776419, 9297530, 7135552, -5594732, -4655745, -2815351, 9450002,
-6540699, -4150549, 959388, 14297946, 7268159, 3695283, 8308614, 5698348, 2254321, -4725538,
-1098438, 665183, -1985886, -5245766, 12724914, 5937256, -11786464, 7996692, 7975755, 7920457,
-6233072, 1682554, -7333120, 236223, -948651, 11083700, 1505386, 4962835, 10088878, -1787243,
--10938208, 2454574, 5947993, 11201275, -14872935, -8392366, 4127464, 176094, 1417876, -8813273,
--2139968, -8545374, -1146756, 4093104, -2773475, -4662187, -5649493, 2439005, -1365263, -2820183,
--6995428, 285078, -9381282, -148176, -865973, -4750771, -5264020, 6082748, -2032593, -1480690,
--2959233, -5779952, 2108829, 2829847, 1992865, 2222109, 1644973, -3179350, -1689533, -947040,
--734439, -2986076, -5604396, -2481417, -87510, -1890323, -111669, -3002182, 321586, -1614908,
--1098975, -2173254, -2417530, -1268089, 2536178, -1758789, -803159, 404264, 1063004, 686658,
--1144609, 1914482, 2885144, 2882460, -724776, 5284958, 686658, -9248138, 9418863, 6054294,
--2816962, 3745748, 5673652, -6251325, -2115808, 24105504, -789737, 9405978, 6573985, -20106890,
--10696616, -1123671, -848793, -225486, 11422466, 2575370, -5562520, 11818139, 7251516, -1465658,
--1941325, 3781182, -1924145, -4159139, -8966818, -10610180, 5876589, -2314451, -5007932, -503048,
--16554415, -3060164, 1091459, 9152575, -10938208, -3143916, 1415192, 755914, 2384781, 837519,
-11672647, -13580150, -4529580, 3051038, -443455, -8002598, -1695438, 10617159, 9104794, 7903277,
--2171643, -13518410, -6183679, 4934918, -1544041, 9131100, -532039, -142808, -6755984, -4150549,
-7943542, -9679246, 6652905, 5239860, -7006166, -3436511, -1629403, 1167157, -7543037, 3717831,
-2612414, -3656628, -1154809, -10241886, 3730716, 8013872, 11384348, 1053341, 3061775, 5451924,
-1673964, -8934606, 6178848, -2095944, 1027034, 89121, -2879776, -3037616, -1654099, 4250944,
-758599, 3564823, -368830, 642098, -4985920, -1635309, -2283849, 3848828, -364535, -1555315,
-2633889, -1851131, 2069101, -1151051, 357556, -4060355, 991601, -888521, -835371, -2576444,
-974958, -343597, -2309082, -4196720, -930934, 502511, -1692754, 1810329, -419833, -18180596,
--1197759, 2569464, 12206834, 1600412, -567473, 7492571, -5442798, 16170552, -16139413, -1471026,
--3506841, 2764348, -847719, -1242319, 4068408, -2954401, -5526549, -3578782, -3290482, -9576703,
--1585917, 6928319, -1634235, -4216048, 10147934, -87510, 12218645, -11936251, -6935299, 15265388,
--1601486, -854162, 850940, -9494025, -1163936, -11870216, 3447248, -14262513, -410706, 10726681,
--3526705, 7333657, 9503689, 5623186, 7474317, -9621800, 9616969, 1146756, -25310242, -4173635,
-3636227, -1990181, -2851322, -10758356, 8505109, -9157944, -1853278, -10395431, -9862319, -15130633,
-13530221, 174483, 15776489, -7794829, 11884711, 15880642, -10414222, 12956306, -15870441, -13090523,
--14368276, -4904853, -10131828, 3325379, 4738423, -470299, -1892470, 4295, -11365557, 976031,
-104153, 6640557, 2570001, 2656437, 4640712, 2728378, -2485712, -4832, -4634807, -2656437,
-106300, 1984275, 67109, 2231773, -1530082, 2392834, -705985, 1315334, -7039989, 531502,
-2676302, 2148021, 3904662, -2115808, -3106335, -4014184, -99321, -241592, -3290482, -3471407,
-374199, -467078, 606127, 137439, -1041530, 1984275, 5607617, -1252520, -1299228, -590021,
--1517197, 5153961, 215285, 729608, -1724966, 3114388, -3245922, 11993696, 20028506, 2945811,
--5415954, -10795400, 6681359, 18581640, 106300, 5370857, 886374, 7451769, 5025649, 5732708,
-10017474, -12103755, -1040993, -4459787, 15827491, 11863773, -657667, 18370648, 9598178, 1700807,
--17302812, -8478802, -13214541, -6011344, 1249299, 5012764, -4796405, 763967, 18533320, -3420405,
--72478, 1022202, 19043884, -11623255, -4800163, -4691715, -1969779, -11372000, 13087302, 955093,
-8746164, -13656922, 1775432, -1423245, -8272107, -3179350, -15247671, 4823785, 188979, 3260954,
--1960653, -849330, -17687750, -5908802, 6769942, 11247982, -3345780, 2993592, 23278186, -1450625,
-1251446, 4361540, 10435697, -9841381, 2168422, 11912629, -7131793, 8676908, 2420214, 9039832,
--12039867, -6008659, 1512902, 2794950, 5938866, 6905771, 6445672, -4436165, 1791001, 4098473,
-7820599, 12406550, 5616207, -5819144, -2843268, -4570919, 1884954, 2653753, 5273683, 4935455,
-2847027, 5210332, -5680094, -1081258, -5791227, 4926865, -6619082, 6626598, 4633733, -4909685,
-2808372, -573378, -3126199, 760209, 884763, -1753420, 1393180, 8210904, -363998, 4295,
--5146982, 2596845, -333934, -147640, -4683662, 4702989, -4000225, 1476395, 1912334, 3726421,
--521839, -1767379, -10999948, -16581795, 4552129, -1715303, -16881906, 4677220, 1620813, 15308337,
-13403519, -12427488, -15064598, 3427921, -11517492, -5960878, 405338, 22770842, 256624, -2822867,
--20361366, -10101226, -1819456, -15075335, -23065584, 15842524, -5993090, -7202124, -1382980, 17176112,
--5414343, 1933272, -3488587, -3375844, -10000294, -5243618, 1616518, -23967528, -15505906, -4381941,
--8819715, -8077760, -2858301, -9368934, 8121783, 3799972, 2573222, -5690295, 4088809, -34624952,
-32208496, 18988050, -3309809, -4342749, 18103824, 1151588, -10894185, -15399605, -2005213, -5366562,
--6471979, -9242770, -9533754, 11924977, 11041824, -4961761, 24297166, -13474386, -11141682, -9973988,
-32749, 8002061, -28521804, 8476118, -9035001, 14947023, -16170015, 7137162, -1485522, -5415954,
-11130945, -20936354, 19710142, 1171989, -277025, -4396436, 570157, -239981, -9972914, 2005213,
--2764348, 5252208, 6631967, -6043019, 3032247, 4286378, 9312563, 382252, -3040837, -473520,
--832150, -3656628, 2730526, -1400696, -2230699, 2428267, -3695819, -1129040, 906775, 2727841,
-3200288, -7396471, -5692979, -4888210, 848256, 3095061, 4832, 2057826, 1742146, 5035313,
-2610266, -3996467, 3762928, 794032, 16538845, 1338956, 38529076, 12519830, -760746, 1628866,
--14881525, -19330038, 24067386, -7153268, 2741800, 31899796, -8306467, -1573569, -6818798, 24867324,
-4799089, -10327249, 14707579, -5379984, 21840982, 11426224, 5444408, 3198140, -2415382, -8396661,
--2724083, -2306398, -23408646, -5920613, -3773666, 12909061, -7254200, 2400887, 4300873, -16813186,
--24991878, -934692, 21563958, -1484985, 19153944, -3364033, -26796300, -10417980, 1206349, 6024229,
-4831302, -21835076, 168577, -6285685, 15806017, -16216723, 19984482, 29532732, 19161460, -6071473,
-3554622, 11883638, -4280472, 23127862, 26796300, 23600308, 7701950, 25882546, -914291, -10501732,
-3321084, -13615046, -17154636, 9290551, -7383049, 21140366, 10915123, 5566278, -7318088, -26153130,
--23701778, 16550656, -10518912, -21174188, 14054207, 28098750, 16879222, -9087077, 13391171, 8195872,
--2977486, -6713571, 7924752, -10069014, -3096135, -1133871, -6956237, 853625, -1549410, 5735929,
-3447248, -1406065, -9246528, 5060009, 4594005, 3152506, -2057289, 237297, -8654896, 630286,
--164283, 2165201, 1935957, 159451, 5028870, -1846836, 6987375, 7923141, 1977833, 6422050,
-500901, -5196374, -12269648, 2691334, 195958, 2556579, -8739185, -19440632, 11376831, 14249628,
--226560, 6978785, 4683125, 6906845, 5720897, 2640868, -1551557, 3381213, -4082903, 7413114,
--13218836, -36822904, -14781130, 20212652, 1165547, -5989869, -12335146, -48855, 16984448, 21711060,
-4622459, -13285944, -2347737, 17376364, -20996484, 2033130, -2616172, 15556372, 17717276, -14171245,
-26881126, 5252208, 1070521, 38012072, 186831, -11866995, 13296145, -6294275, 1896228, -8061654,
-2820720, 25285010, 2910377, 32197760, 13566191, -28009630, -30719754, -6656126, 7989713, 17226576,
--23819888, -8364986, -3442953, 28999082, 26505316, -22632868, -875100, -13785771, 8751533, -4716411,
-30305290, 457414, -6654515, 19951734, -4038880, -23456428, -11859478, -3790309, 24443196, -21597780,
-13128641, 38024420, 17992154, 25543782, -6802155, 10424959, -6852084, -15698642, -15131707, 8032663,
--10749766, -658204, -3843996, 6997576, -150861, 15489800, -3435974, -7026567, -2491618, -3019362,
-3823595, -2374043, 5970542, -10502806, 7847442, -6919729, -3157875, 2257542, -2741263, -3217468,
-4976257, -4563403, -1717987, -1297080, -3787088, -12921409, -7282654, -1177358, -1467805, -3754875,
--5036386, -1109175, 3937948, -2175938, 2349347, -1911261, -48855, 3045132, -9907416, 1202591,
--1323924, -7447474, -17706540, 13146895, 19843822, 16188805, -28328530, -13806709, 18223010, 54374284,
-3524558, 11644730, -15629386, 4714801, -564251, -2777233, -14659797, 4283156, -5008469, 25975962,
-21001854, -27604292, -11901891, 28723668, 14928769, 10177999, 3313031, 15414638, 18474802, 5581310,
-11147588, 9820443, -12970264, 1717987, -12693776, -6036040, 3821984, -2775623, 2462627, -11403675,
--9755481, 7524783, -1789391, 10465225, 8708583, -25547540, 19199040, 3548180, 15517717, -17320530,
-10096931, 15140833, -11615739, -19748260, -19352586, -21846888, -21328270, -18146236, 6762426, 31751620,
-8811125, 9626632, 15506979, 832150, 80531, -12704513, 21788906, -27391154, -54125716, 18441516,
--12057584, 2142652, -45846628, 11192685, 15124727, 2291902, 9683541, 7556995, -6382859, -12055973,
--17862768, 5582384, 4575214, -14222784, 10740103, -5556077, -23147190, -13154948, 270583, -4474282,
-3052648, 1358820, 7583302, 3033858, 1840930, -702227, 6148246, -3668439, -6978785, -13674102,
--7472170, -8926553, -2421825, -5041755, 5560909, 7340099, 6284611, -10956462, -269509, -4762045,
-690416, 5903433, 2501282, -9721658, -16885128, -1766305, 1374926, 1189169, -5597953, -2913062,
--5875516, -1598802, -7871065, -9251360, 6471442, -9050570, 4286378, 1190243, -3856344, -2076617,
-6243809, -5339718, 2815351, -6425808, 12955232, 9335111, 12373801, -17663590, -9186935, -2483028,
-11310796, -23572928, 39220032, 18641232, -3214246, 21401286, 12845710, 20395190, -10735808, -13726179,
--13350369, 24702504, 8761196, 4461934, 22265648, -19505058, -63164472, -4206921, 4205310, 7514046,
--35561256, 27550068, 20020990, -38170448, -29395830, 941672, 15718507, 1335735, 8924405, 20235738,
--5377836, 12564927, -18450106, -21112448, -16843252, -21932250, -34155192, 9514963, 3531000, -22924924,
-30259118, 11765526, -7399692, -7213935, -17869212, -13380434, -31133144, -16909286, 11068668, 27624156,
--10525354, 2771328, 11363410, -24500640, 17680232, 23939074, 3529390, -6134824, 20459614, 5603322,
-2304787, -14666240, -17151952, -1257889, 30589830, -9407052, -28225452, -496069, -35967128, -37468220,
--39023000, -18714246, -20589000, -13150653, 16783122, -2357937, 15087683, -3118683, -4981625, -14121852,
--3795677, -4162897, 8103530, -6207839, -9025337, -1788317, -3542274, 1322313, -13158706, 2486249,
--6066642, -5273683, 6960532, -6310381, -2102387, 2272038, -4685810, 10243497, -6499896, 1526861,
-16632798, 2032056, 9716827, -3725884, -5842766, 16851304, 2524904, -8943196, 325881, 159451,
-1309428, 2381023, -4785668, 10519449, 638876, -810138, -5092221, -5299990, -13875429, -23840290,
--12567074, -12778065, 15522012, 30690226, 11274289, -13899051, -29560112, 31750546, 17027934, -15205795,
--8256538, -8075076, 1763621, 7540352, -9771051, 16550656, 15305116, 949725, -10292889, -9657771,
--9183177, -1079111, 5959267, -4523138, -10158135, -24086714, 7467338, 21381420, -12200928, 18919868,
-591632, 12738873, -10528575, 14154065, 40736156, -15138686, 17794050, 35489316, 6168110, -6068252,
--9789841, 10383083, 797253, 18179522, -13775571, 48664128, -14984604, -32457068, 7524783, -14716705,
-38448548, 12723841, -11969000, 2341294, -23126252, -31649078, 39046084, 4596152, -10449119, 38668664,
--19907174, 5161477, -11220602, 22471806, -28434294, -31832686, -22764938, 7237020, 13805636, 25717190,
-10983842, 27173184, 42429980, -5071820, 8588861, -5450851, 5419712, -1207423, 1775432, -30998926,
-1231582, -42861088, -14289356, -8331700, 7686381, -1306744, 9491341, -3260417, -12789339, -13367549,
--3021510, -8786966, -9838159, -16993574, 71404, -1640141, 13100187, 5711770, -10484015, 9805410,
-4594005, 8121247, 10595684, -13542569, 3916473, -5526013, -2513630, 13915157, -4498978, 7023882,
-9374303, -5369783, -14806363, -7420093, 5553393, -24347632, -7553774, 745714, -3357591, -5348845,
-11200201, -11392938, -12699681, 9190693, 15025943, -6623914, 12574591, 29877940, -4532264, 991601,
-35536024, 4003447, -19628000, -22526566, -20145008, 36733780, -24728274, 14656576, 17016660, -11629698,
-3352222, -19990926, -4752918, 16481937, -14785425, 11943767, -5097053, -25145422, -55720220, -4811437,
-49689012, 21070036, 4876399, -9701794, -15259482, -2533494, -19949050, 6592775, -28023050, 33472828,
-2208150, 4249334, 2476049, -10977936, -33741264, -12559021, 26640608, -21705154, -5879274, -14934138,
-11766600, -10619307, 36964636, -5727876, 7432978, -13288092, -34977140, 7981123, -26759256, -5687074,
--2563559, -48351668, -41267120, -38490424, 12656732, -6849399, -21226802, -13350906, -13655849, -12075301,
--18961744, -12327093, -3463891, -43352864, 11997991, 5214091, 15904801, -9352291, 37757596, -3638374,
-7130720, -12834436, -5415417, 20799452, -40695888, 17546552, 26377542, -26908506, -17811230, 1986422,
-4131759, -6863895, -13260175, -20995948, -1468342, 830539, -13012140, 11280195, -9633075, -16652662,
--9534827, -6959995, 10626823, 41339, 228170, -46708, 7908109, -20578262, -6120329, -2177549,
--4191351, -1109175, 236760, -24732032, 678605, -7779260, -6727530, -1816234, -11340861, 3418794,
--3296924, 2597918, 356482, -1842541, -2891587, -5918465, -1125818, -4799626, -1291175, 3838090,
--5774584, -8848706, 193810, -1879048, -2137820, -5409512, -10257993, -6585259, -2696166, -959388,
--7306276, -8523899, 15101642, 9137006, 18274012, -6885370, -37983616, 10957535, 547071, 63074280,
-64555504, 7809861, 638340, 15210090, 7630547, 16247861, 27861990, 10386305, 28930900, 43713640,
--10875931, 5745056, -35893580, -5079336, 4712653, -4630512, -10671383, -21758842, -18297098, 10155450,
-10094247, -47696148, 34062848, 9213779, 48064980, -2913062, -9487583, 15726023, -3299609, 50594176,
-12910135, -2574833, 9759239, 10023380, -13534516, -30871152, -24184424, -12126303, 37795712, 520765,
-41540924, 5119064, 40614820, -11687143, -55794308, -20871394, -16171089, 28922310, 3556770, -27109834,
--39269960, -27438398, -5438503, 33962992, -29502668, -25703232, -16914654, 30313880, -14892262, -8810052,
--39094940, -38916160, 12319577, 6593849, 52465172, 13494250, -5510443, -14170708, 16480863, 17037062,
-56013352, 1029718, -18096844, -24230594, -1519882, -2484102, 1318018, 8719320, 8097624, -13026636,
--2909304, 4235912, 11705396, -12509629, -10132365, 15741055, 23200876, 10779831, 7122667, 9018358,
--9742596, -4151086, -6127308, -1267552, -1287953, 5097053, 85899, 30245160, 6361921, -1289027,
--9226127, -15870441, 15187541, 24546274, -8871255, 406411, 972273, 3073049, 14066018, 6128382,
-10452340, 10663867, 2725157, 8301098, 2735894, -521839, 2747169, -7472706, -2521146, 1833951,
--4502737, 3000035, 834297, 38602092, 14665166, -18761490, 36384280, -2258616, -71459128, -21762600,
-45081052, 50075560, -35225176, -35275104, -35851164, 20013474, 30675194, 61288648, 18563386, 7913477,
--34941168, -3547106, -2142115, 13787382, 30690226, 22279070, 1821066, -37072012, -72007272, -19088982,
--36420248, 54196580, 57408680, 100153272, -29974576, -96321624, -20967494, -33091650, 74884904, 25467008,
-75950592, 19563576, -25353192, -73385960, -49598820, 2676302, 9162239, 82287280, 33450816, -2855080,
--67693520, -118132536, -30859340, 2531883, 54611584, 124311384, 27124866, 37490768, -80071072, -122729224,
-5336497, 28198070, 97774392, 57475252, 41108204, -22666154, -79050480, -64680060, -586800, 18269718,
--1653562, 49363132, -40691592, -38103340, -9395778, -87188376, 13684303, 4220879, 23860154, -17491254,
--35190816, -18927920, -14832670, -39857832, 9250823, 11718818, -12674448, -1951526, -37356016, 5402532,
-10960757, 12402255, 17563196, 5640366, -19050328, 6805913, -5920076, -3223373, 2971581, 30514668,
-5404680, -855772, -7584912, -23023172, -4338991, -9116068, 9148817, -4061965, 10135049, 6593312,
--20958366, -47856672, -23409720, -35104916, 29070486, 29211146, 34749508, 19983410, -44502840, -40161704,
--62154084, -14856829, 50918984, 56259240, 54912768, 2928631, -59928752, -44844292, -34774740, -459025,
-90200216, 62625456, 25804700, -47888884, -55661164, -41700912, 21055540, 21694954, 31549756, 16687022,
--40980968, 54459648, -1176821, 7904351, -22922240, -51873004, 30904974, -52236464, 55338508, 7938174,
-4949950, 11547020, -33254322, 32855426, 3244848, 22789634, -31886374, 11112691, 288300, 39460012,
--15760919, 9568113, 26436598, -30236032, -17331266, 2706903, -27411556, 44295072, -9966472, -18569292,
-40039832, 45774688, -12285217, -34279744, -8369818, -30247844, -5507759, 18283676, -2859911, -37618008,
-4498978, 19845434, -13111998, 22414360, -18752900, 8483097, 24357834, -10032507, 16071231, -42824044,
--42765528, 43270184, 24326158, 66935456, -2711198, -17383344, 57126288, -32897838, -28928752, 19666656,
-19335406, 32005560, -29309930, -14392972, 8774618, -6622840, 32405528, -26225070, -79995376, 20433844,
-44885092, 198642, -37009732, 6621229, 22899692, -9356586, -9599252, -30296162, -9541270, -25084220,
-24934432, 5625871, -17315698, -5140002, 29758218, -21465710, -7372312, -19445464, -2120103, 13947369,
--20779588, 10721312, 31092878, 11436424, -318364, -9274982, -1622961, -11913166, -14329622, 22974854,
--9671729, 10188736, -3175055, -12416214, 15569, 2090039, 2326799, 8078297, 10429791, -18347564,
--5348845, 8441758, 7560216, 17296908, -2259153, -15844134, 6171331, -18377628, 8650601, -16787416,
--9089761, -167504, -3445101, -11410117, 25222196, -11448772, 5239323, 10506027, 2426120, 8137890,
-16754131, -773094, -2921652, 352187, -1607392, -21079700, -13284871, 81321448, 22005264, 22775138,
--68911680, -16933446, -54024784, -45222784, 40838696, 43418900, 85287848, 39750460, -11553999, -16203838,
--10047539, 27310086, 18688476, 923418, 41450192, 8454643, -16617228, -19274740, -15882252, 30211874,
-537, 26470420, 12175695, 16123307, 3930969, -6199249, 3040300, 184684, 3921842, -6441377,
--1726577, 8913131, 7199439, 56337624, 45061188, 37189584, -3230352, 10423886, -22807350, -3418794,
--14185203, -25347824, -26795764, 8446053, 14618995, 21635360, 26090316, 21866216, -13463112, -34010772,
-52285320, -36996312, -16338056, -9218074, 17958332, 2678986, 25611964, 27006754, 23386634, -31127776,
--11247446, 4600984, -12330851, -50409496, 33964600, -11593190, -9107478, 19479288, 39417064, 44989244,
-32638530, 32206350, 27600534, -29097866, 3864397, -7241852, -9100499, 17056388, 13354127, 18152680,
-8719857, -7904888, -14619532, -20953534, -22922778, -45823008, -18379776, 7046431, -2600066, 28324236,
--15569, -12572980, -4249870, -18112414, 6997039, 2361158, -1322313, -25233, 11963095, 26539140,
--3195456, 1519882, 14541149, 1259499, 206695, -5070746, -1683090, -6060736, -5986648, 1770600,
--12498892, 5774047, 7218767, -9040369, -13606456, 3961571, 2796024, -4775467, 13439490, 18158048,
--2401424, 2889976, -5794985, -17967996, -7601019, 3164854, -104804720, -52287468, -71967544, 51963200,
-11526618, 148824912, 153889216, 153271808, 175218560, 172485344, 123980136, 77103792, 96706024, 42728484,
-9036611, -81594712, -70970040, -178185840, -155754848, -139895136, -82375328, -104020888, -79207784, -6532109,
--25288768, -10247255, -12466143, 610959, -164283, 4695473, 20350092, 21786222, 20860656, 61398704,
-63075888, 66788352, 47769164, 133620192, 34977676, 56150792, 93598608, 104272144, 38807176, 104938400,
-126357400, 99567008, 86523192, 87900264, 9714679, 52613888, 106351984, 105009264, 67740760, 88117696,
-77115064, -1087164, -28503550, -20133732, -52526376, -64896420, -8314520, -72931768, -111143016, -86681032,
--103520520, -153177856, -70061120, -103588168, -114740592, -162576864, -132140040, -149934080, -171213504, -114138752,
--193598336, -229101072, -229861280, -125153200, -155537952, -196093168, -38527468, -87366616, -40964324, -22058416,
-64251636, 28524488, 94267552, 49984292, 89045944, 84693536, 55737940, 43862352, 69034616, 127794064,
-130100464, 130478424, 133336720, 138471888, 168346608, 150315264, 124852016, 153456496, 173228384, 138369888,
-104129872, 124190056, 104545944, 67436352, 85270672, 57565448, 28636158, 12200928, 26324392, 7577933,
--10816875, -7602629, -13939316, -33470144, -50770272, -50589884, -55022288, -47156592, -58822260, -92619360,
--83197272, -95718712, -107834816, -125735704, -125299232, -103914048, -104274824, -85602992, -54360328, -61403000,
--41811508, -29585882, 2995740, -794569, 15032, 4616553, 18418968, 21089900, 6938520, 16508781,
-26843008, 21064130, 9148280, 10420128, 19699404, 11069741, 4416300, 7269769, 10666551, 8989367,
-5246840, 4539244, 3424163, 1444720, 352724, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, },
+2813204, -3714073, -630286, 2575907, -455267, 2740726, -6771016, -4831838, -1181653, -5706938,
+2391760, -1274532, -627602, -3857418, -1717450, 3578782, 3580929, -1407676, -1089311, -2382633,
+-5472325, 6096706, 3630858, 150861, 643171, -341450, 178778, 4908074, -2490544, 894964,
+-7861401, -6454262, -1612760, 576063, -5478231, -1026497, 1949378, 462246, 99858, -2760590,
+-2114735, 5132486, -2380486, -2204392, -721555, -737124, 2267206, -1200443, -3367254, -130997,
+2955474, -4220879, 183073, -4520990, 317828, -3315178, 5005785, -299037, -5273146, -782221,
+-511638, 613107, -7530689, -927176, 627065, -5051956, 2318209, 91268, -5801964, 2622078,
+3568044, -3114925, -3554086, -6396280, 3340411, 1908039, 5917928, 2898566, -879931, 1127966,
+-821413, 1771137, 1881733, 4059281, 1039382, -1803349, -63351, 453119, -133681, 2307471,
+604517, -831076, -1134408, 1107565, 907312, 1720671, 873489, 650688, 1046898, 920734,
+391916, 558346, -111132, -332860, 373125, 215822, 443992, -279710, 523986, -54224,
+-5474473, 2469606, -6828998, -1914482, -948651, -3466039, 3300682, 7637526, -3120294, -1031866,
+369367, -3177202, 2207613, -490700, -2563559, -4384088, -2313914, 6886980, 6673306, 3731253,
+7750806, 4542465, 2473901, 7275138, -4518843, 1589675, 3128347, -159451, 1268626, -2181307,
+1409823, -10103374, 228170, -602906, 3656091, -2300492, -1268626, -721018, 2804614, -3210488,
+-501437, 891206, 1979980, 1896228, -522375, -3442416, 663572, 1181653, 2486249, 1848447,
+2889439, -3237332, -1896228, -606664, -5696737, -693100, 1534377, 4894115, 5500780, -768262,
+3041374, 2235531, -391379, 2020245, 2445447, 3528316, -1402307, -63351, -2637110, 443992,
+-2269353, 1560147, -3369402, -3216931, 1941862, -34360, -6310381, -607738, -4720169, -1300301,
+-652298, -813896, -6272263, 594316, 2243047, -1868311, -1773822, 1075352, 817118, 446140,
+-1224066, -3392487, -151934, -1490891, 1308354, 38655, 113280, -385473, -1375463, -1559073,
+-1733556, 119185, -736587, 757525, -1076963, 431107, 289373, -1008244, 3221, -1121523,
+-378494, 62277, 31675, -996969, -215285, -170188, -6911676, -6536404, 2436320, -779000,
+5430450, 5437966, 459562, 115427, 10492068, -2851322, -238908, 8788040, 374736, -5109938,
+-7445326, 5390721, -2171643, 13422, -4607963, 1410360, -3288334, 3652870, 16378321, -5999533,
+-4799626, -5927592, -6377490, 1142461, -5199058, -12923557, -315143, 1266479, 41339, -5156108,
+-1069447, 4161823, -5258114, -3136400, 7660074, 2488934, -1938641, -1854352, 4935991, -2474975,
+3536369, 3190624, -6974490, -4664872, -4125853, 4534949, -3533148, -2141041, -1916092, -2360085,
+-357019, -4745402, 48318, -1458678, 1173600, -689342, -10219875, 4705674, -5710696, 4473209,
+853088, -8447664, 1716913, 5576478, 1742683, 9313637, -3948149, 467615, 1103270, 2142652,
+3359201, -3740380, 1408749, 1184337, -5430450, 7405598, 545461, -1111323, 3174518, -1126355,
+1427540, -1419487, -2834142, -256087, -1822140, 2390149, -630286, 404264, 2914672, 944893,
+1112397, -710280, 1586990, 216896, -423591, 979253, 2118493, -1597191, 139050, -1682554,
+1009317, -595390, 3058554, -4300873, 2004139, 2246268, -2377801, 1107028, -1190243, -9346923,
+2860985, 8866960, 7308424, 8319352, 1417876, -1732482, -7130183, -3670050, -3367254, -2624762,
+7308424, 10249403, 702764, -636729, 7237557, -11733851, 199179, -887985, -244813, -3778498,
+-3999688, 4365298, 5270999, 242129, -1213865, 2191507, -5770289, -4268124, 4354560, -4711579,
+9117679, 8373039, 1347546, 5185636, 4275103, 951335, -3790846, 1377074, -246961, -6389838,
+6229850, -478889, 2888903, 5182415, -6117644, -2278480, -7261179, -1552094, 1602023, 6849399,
+-6998649, -2680597, 5022965, -987843, -4496294, 7507066, -6237367, -12916577, 2137820, -7239704,
+-3323768, 3618510, -3195456, 708133, 721555, -3090766, 5494874, -4997732, -5817533, -6842957,
+-821413, -2922188, 402116, 1922535, -4289599, 1202054, 1158567, 394600, -2073932, 1203128,
+848256, 2979634, 379031, -849330, -2042794, -1196685, -938987, -436476, -759672, -1150514,
+318901, 647466, 782221, 345745, -443992, -903554, -450972, 1523640, -1527398, -1452236,
+-512712, 41339, -192200, 1185948, 1248225, 1305133, -818191, 513785, 207232, 566936,
+2841121, -1412507, 181999, -11762842, 2518998, 11068131, 907312, 1724429, 3380676, 10368051,
+1440425, -9990094, 11094437, 4859219, 4020626, 6736120, 5871757, 40802, -2050310, 6354404,
+4887673, 1658931, -4551592, 5527086, 2629594, 8185134, 9579925, 3631932, -2328946, 216359,
+-41339, 3980898, 12155831, 7204808, -6700149, 11737609, 501437, -1444720, 1583232, -8654359,
+9651865, -1279900, 207232, -1147830, 2487323, -1297617, 5002027, -6977711, 9862319, 8382703,
+-276489, -1561758, -5426691, -10408853, -3534758, 4135517, -2385318, -3901978, 5562520, 6486475,
+-4350802, -3905199, -13313862, -4627828, -1611150, -646393, -14901926, 7614440, 878321, -8894340,
+-7272990, 2458869, -3427384, 913754, -2166274, 485331, -3889630, -861141, -3464428, 2541547,
+5034776, -1403917, 3841848, 457414, -1534377, 4477504, 1602560, 233002, 3729105, -418222,
+-1635309, -2308008, -2567854, -2717641, -2546379, -3178276, -2285460, 175020, -1241246, -2981244,
+-1432909, 314606, -592706, -1100049, 687732, 1228361, 632434, -1351841, -1903207, -2405182,
+307627, -2280091, 2167348, -1245004, -1276142, -1228361, 91805, -871342, 5510980, -6960532,
+-55835, 71941, 258235, 11242614, 6184753, -97711, 14018773, 6475200, 12658342, 3018825,
+4289062, 13502840, -5328981, -8999567, -5679021, 12625593, 3105798, -7122667, 9648644, -2635499,
+-5602785, 8607651, 20452634, -5272609, 1051193, 3264712, 3933653, -5313412, 703838, 11249056,
+1238561, 13832479, -2978560, 14854144, 10544682, 3559454, 8847633, 5580237, -5247377, 3694746,
+-1315871, -1321776, 1463510, 1009854, -914291, 3919695, 2764348, 9598178, 6519761, -8021925,
+2855617, 3614215, -5865852, 354335, -13913010, -18104898, 7311108, -4637491, -11766600, -2537789,
+-6302328, 7799661, 1782411, -3675955, -8859444, 6997039, -6388227, 4269198, -7176354, 1067299,
+-2840047, 10972031, 2128693, -4281546, 4310000, -9354439, 8608188, 1389422, -7955890, 368830,
+-740345, -2308008, -872415, 1147830, 2474438, -2339684, 4021163, -869194, -1444720, -1781338,
+-1285269, -3463891, -179852, -1229971, -3255048, -1240172, 1313186, -2081985, 2254858, 332323,
+-1086627, 571768, -2122251, -413927, -1446867, -192200, 44560, 107911, 1218697, 1344325,
+1615982, 71941, 879931, -70867, -7922604, 1064078, 321049, 2102387, -4827007, 5466420,
+6038724, -651224, -4014721, -13911399, -11913702, -9175661, 4292283, 1243930, 2233920, -11404212,
+7247221, 5103495, 9015136, -9776419, 9297530, 7135552, -5594732, -4655745, -2815351, 9450002,
+6540699, -4150549, 959388, 14297946, 7268159, 3695283, 8308614, 5698348, 2254321, -4725538,
+1098438, 665183, -1985886, -5245766, 12724914, 5937256, -11786464, 7996692, 7975755, 7920457,
+6233072, 1682554, -7333120, 236223, -948651, 11083700, 1505386, 4962835, 10088878, -1787243,
+-10938208, 2454574, 5947993, 11201275, -14872935, -8392366, 4127464, 176094, 1417876, -8813273,
+-2139968, -8545374, -1146756, 4093104, -2773475, -4662187, -5649493, 2439005, -1365263, -2820183,
+-6995428, 285078, -9381282, -148176, -865973, -4750771, -5264020, 6082748, -2032593, -1480690,
+-2959233, -5779952, 2108829, 2829847, 1992865, 2222109, 1644973, -3179350, -1689533, -947040,
+-734439, -2986076, -5604396, -2481417, -87510, -1890323, -111669, -3002182, 321586, -1614908,
+-1098975, -2173254, -2417530, -1268089, 2536178, -1758789, -803159, 404264, 1063004, 686658,
+-1144609, 1914482, 2885144, 2882460, -724776, 5284958, 686658, -9248138, 9418863, 6054294,
+-2816962, 3745748, 5673652, -6251325, -2115808, 24105504, -789737, 9405978, 6573985, -20106890,
+-10696616, -1123671, -848793, -225486, 11422466, 2575370, -5562520, 11818139, 7251516, -1465658,
+-1941325, 3781182, -1924145, -4159139, -8966818, -10610180, 5876589, -2314451, -5007932, -503048,
+-16554415, -3060164, 1091459, 9152575, -10938208, -3143916, 1415192, 755914, 2384781, 837519,
+11672647, -13580150, -4529580, 3051038, -443455, -8002598, -1695438, 10617159, 9104794, 7903277,
+-2171643, -13518410, -6183679, 4934918, -1544041, 9131100, -532039, -142808, -6755984, -4150549,
+7943542, -9679246, 6652905, 5239860, -7006166, -3436511, -1629403, 1167157, -7543037, 3717831,
+2612414, -3656628, -1154809, -10241886, 3730716, 8013872, 11384348, 1053341, 3061775, 5451924,
+1673964, -8934606, 6178848, -2095944, 1027034, 89121, -2879776, -3037616, -1654099, 4250944,
+758599, 3564823, -368830, 642098, -4985920, -1635309, -2283849, 3848828, -364535, -1555315,
+2633889, -1851131, 2069101, -1151051, 357556, -4060355, 991601, -888521, -835371, -2576444,
+974958, -343597, -2309082, -4196720, -930934, 502511, -1692754, 1810329, -419833, -18180596,
+-1197759, 2569464, 12206834, 1600412, -567473, 7492571, -5442798, 16170552, -16139413, -1471026,
+-3506841, 2764348, -847719, -1242319, 4068408, -2954401, -5526549, -3578782, -3290482, -9576703,
+-1585917, 6928319, -1634235, -4216048, 10147934, -87510, 12218645, -11936251, -6935299, 15265388,
+-1601486, -854162, 850940, -9494025, -1163936, -11870216, 3447248, -14262513, -410706, 10726681,
+-3526705, 7333657, 9503689, 5623186, 7474317, -9621800, 9616969, 1146756, -25310242, -4173635,
+3636227, -1990181, -2851322, -10758356, 8505109, -9157944, -1853278, -10395431, -9862319, -15130633,
+13530221, 174483, 15776489, -7794829, 11884711, 15880642, -10414222, 12956306, -15870441, -13090523,
+-14368276, -4904853, -10131828, 3325379, 4738423, -470299, -1892470, 4295, -11365557, 976031,
+104153, 6640557, 2570001, 2656437, 4640712, 2728378, -2485712, -4832, -4634807, -2656437,
+106300, 1984275, 67109, 2231773, -1530082, 2392834, -705985, 1315334, -7039989, 531502,
+2676302, 2148021, 3904662, -2115808, -3106335, -4014184, -99321, -241592, -3290482, -3471407,
+374199, -467078, 606127, 137439, -1041530, 1984275, 5607617, -1252520, -1299228, -590021,
+-1517197, 5153961, 215285, 729608, -1724966, 3114388, -3245922, 11993696, 20028506, 2945811,
+-5415954, -10795400, 6681359, 18581640, 106300, 5370857, 886374, 7451769, 5025649, 5732708,
+10017474, -12103755, -1040993, -4459787, 15827491, 11863773, -657667, 18370648, 9598178, 1700807,
+-17302812, -8478802, -13214541, -6011344, 1249299, 5012764, -4796405, 763967, 18533320, -3420405,
+-72478, 1022202, 19043884, -11623255, -4800163, -4691715, -1969779, -11372000, 13087302, 955093,
+8746164, -13656922, 1775432, -1423245, -8272107, -3179350, -15247671, 4823785, 188979, 3260954,
+-1960653, -849330, -17687750, -5908802, 6769942, 11247982, -3345780, 2993592, 23278186, -1450625,
+1251446, 4361540, 10435697, -9841381, 2168422, 11912629, -7131793, 8676908, 2420214, 9039832,
+-12039867, -6008659, 1512902, 2794950, 5938866, 6905771, 6445672, -4436165, 1791001, 4098473,
+7820599, 12406550, 5616207, -5819144, -2843268, -4570919, 1884954, 2653753, 5273683, 4935455,
+2847027, 5210332, -5680094, -1081258, -5791227, 4926865, -6619082, 6626598, 4633733, -4909685,
+2808372, -573378, -3126199, 760209, 884763, -1753420, 1393180, 8210904, -363998, 4295,
+-5146982, 2596845, -333934, -147640, -4683662, 4702989, -4000225, 1476395, 1912334, 3726421,
+-521839, -1767379, -10999948, -16581795, 4552129, -1715303, -16881906, 4677220, 1620813, 15308337,
+13403519, -12427488, -15064598, 3427921, -11517492, -5960878, 405338, 22770842, 256624, -2822867,
+-20361366, -10101226, -1819456, -15075335, -23065584, 15842524, -5993090, -7202124, -1382980, 17176112,
+-5414343, 1933272, -3488587, -3375844, -10000294, -5243618, 1616518, -23967528, -15505906, -4381941,
+-8819715, -8077760, -2858301, -9368934, 8121783, 3799972, 2573222, -5690295, 4088809, -34624952,
+32208496, 18988050, -3309809, -4342749, 18103824, 1151588, -10894185, -15399605, -2005213, -5366562,
+-6471979, -9242770, -9533754, 11924977, 11041824, -4961761, 24297166, -13474386, -11141682, -9973988,
+32749, 8002061, -28521804, 8476118, -9035001, 14947023, -16170015, 7137162, -1485522, -5415954,
+11130945, -20936354, 19710142, 1171989, -277025, -4396436, 570157, -239981, -9972914, 2005213,
+-2764348, 5252208, 6631967, -6043019, 3032247, 4286378, 9312563, 382252, -3040837, -473520,
+-832150, -3656628, 2730526, -1400696, -2230699, 2428267, -3695819, -1129040, 906775, 2727841,
+3200288, -7396471, -5692979, -4888210, 848256, 3095061, 4832, 2057826, 1742146, 5035313,
+2610266, -3996467, 3762928, 794032, 16538845, 1338956, 38529076, 12519830, -760746, 1628866,
+-14881525, -19330038, 24067386, -7153268, 2741800, 31899796, -8306467, -1573569, -6818798, 24867324,
+4799089, -10327249, 14707579, -5379984, 21840982, 11426224, 5444408, 3198140, -2415382, -8396661,
+-2724083, -2306398, -23408646, -5920613, -3773666, 12909061, -7254200, 2400887, 4300873, -16813186,
+-24991878, -934692, 21563958, -1484985, 19153944, -3364033, -26796300, -10417980, 1206349, 6024229,
+4831302, -21835076, 168577, -6285685, 15806017, -16216723, 19984482, 29532732, 19161460, -6071473,
+3554622, 11883638, -4280472, 23127862, 26796300, 23600308, 7701950, 25882546, -914291, -10501732,
+3321084, -13615046, -17154636, 9290551, -7383049, 21140366, 10915123, 5566278, -7318088, -26153130,
+-23701778, 16550656, -10518912, -21174188, 14054207, 28098750, 16879222, -9087077, 13391171, 8195872,
+-2977486, -6713571, 7924752, -10069014, -3096135, -1133871, -6956237, 853625, -1549410, 5735929,
+3447248, -1406065, -9246528, 5060009, 4594005, 3152506, -2057289, 237297, -8654896, 630286,
+-164283, 2165201, 1935957, 159451, 5028870, -1846836, 6987375, 7923141, 1977833, 6422050,
+500901, -5196374, -12269648, 2691334, 195958, 2556579, -8739185, -19440632, 11376831, 14249628,
+-226560, 6978785, 4683125, 6906845, 5720897, 2640868, -1551557, 3381213, -4082903, 7413114,
+-13218836, -36822904, -14781130, 20212652, 1165547, -5989869, -12335146, -48855, 16984448, 21711060,
+4622459, -13285944, -2347737, 17376364, -20996484, 2033130, -2616172, 15556372, 17717276, -14171245,
+26881126, 5252208, 1070521, 38012072, 186831, -11866995, 13296145, -6294275, 1896228, -8061654,
+2820720, 25285010, 2910377, 32197760, 13566191, -28009630, -30719754, -6656126, 7989713, 17226576,
+-23819888, -8364986, -3442953, 28999082, 26505316, -22632868, -875100, -13785771, 8751533, -4716411,
+30305290, 457414, -6654515, 19951734, -4038880, -23456428, -11859478, -3790309, 24443196, -21597780,
+13128641, 38024420, 17992154, 25543782, -6802155, 10424959, -6852084, -15698642, -15131707, 8032663,
+-10749766, -658204, -3843996, 6997576, -150861, 15489800, -3435974, -7026567, -2491618, -3019362,
+3823595, -2374043, 5970542, -10502806, 7847442, -6919729, -3157875, 2257542, -2741263, -3217468,
+4976257, -4563403, -1717987, -1297080, -3787088, -12921409, -7282654, -1177358, -1467805, -3754875,
+-5036386, -1109175, 3937948, -2175938, 2349347, -1911261, -48855, 3045132, -9907416, 1202591,
+-1323924, -7447474, -17706540, 13146895, 19843822, 16188805, -28328530, -13806709, 18223010, 54374284,
+3524558, 11644730, -15629386, 4714801, -564251, -2777233, -14659797, 4283156, -5008469, 25975962,
+21001854, -27604292, -11901891, 28723668, 14928769, 10177999, 3313031, 15414638, 18474802, 5581310,
+11147588, 9820443, -12970264, 1717987, -12693776, -6036040, 3821984, -2775623, 2462627, -11403675,
+-9755481, 7524783, -1789391, 10465225, 8708583, -25547540, 19199040, 3548180, 15517717, -17320530,
+10096931, 15140833, -11615739, -19748260, -19352586, -21846888, -21328270, -18146236, 6762426, 31751620,
+8811125, 9626632, 15506979, 832150, 80531, -12704513, 21788906, -27391154, -54125716, 18441516,
+-12057584, 2142652, -45846628, 11192685, 15124727, 2291902, 9683541, 7556995, -6382859, -12055973,
+-17862768, 5582384, 4575214, -14222784, 10740103, -5556077, -23147190, -13154948, 270583, -4474282,
+3052648, 1358820, 7583302, 3033858, 1840930, -702227, 6148246, -3668439, -6978785, -13674102,
+-7472170, -8926553, -2421825, -5041755, 5560909, 7340099, 6284611, -10956462, -269509, -4762045,
+690416, 5903433, 2501282, -9721658, -16885128, -1766305, 1374926, 1189169, -5597953, -2913062,
+-5875516, -1598802, -7871065, -9251360, 6471442, -9050570, 4286378, 1190243, -3856344, -2076617,
+6243809, -5339718, 2815351, -6425808, 12955232, 9335111, 12373801, -17663590, -9186935, -2483028,
+11310796, -23572928, 39220032, 18641232, -3214246, 21401286, 12845710, 20395190, -10735808, -13726179,
+-13350369, 24702504, 8761196, 4461934, 22265648, -19505058, -63164472, -4206921, 4205310, 7514046,
+-35561256, 27550068, 20020990, -38170448, -29395830, 941672, 15718507, 1335735, 8924405, 20235738,
+-5377836, 12564927, -18450106, -21112448, -16843252, -21932250, -34155192, 9514963, 3531000, -22924924,
+30259118, 11765526, -7399692, -7213935, -17869212, -13380434, -31133144, -16909286, 11068668, 27624156,
+-10525354, 2771328, 11363410, -24500640, 17680232, 23939074, 3529390, -6134824, 20459614, 5603322,
+2304787, -14666240, -17151952, -1257889, 30589830, -9407052, -28225452, -496069, -35967128, -37468220,
+-39023000, -18714246, -20589000, -13150653, 16783122, -2357937, 15087683, -3118683, -4981625, -14121852,
+-3795677, -4162897, 8103530, -6207839, -9025337, -1788317, -3542274, 1322313, -13158706, 2486249,
+-6066642, -5273683, 6960532, -6310381, -2102387, 2272038, -4685810, 10243497, -6499896, 1526861,
+16632798, 2032056, 9716827, -3725884, -5842766, 16851304, 2524904, -8943196, 325881, 159451,
+1309428, 2381023, -4785668, 10519449, 638876, -810138, -5092221, -5299990, -13875429, -23840290,
+-12567074, -12778065, 15522012, 30690226, 11274289, -13899051, -29560112, 31750546, 17027934, -15205795,
+-8256538, -8075076, 1763621, 7540352, -9771051, 16550656, 15305116, 949725, -10292889, -9657771,
+-9183177, -1079111, 5959267, -4523138, -10158135, -24086714, 7467338, 21381420, -12200928, 18919868,
+591632, 12738873, -10528575, 14154065, 40736156, -15138686, 17794050, 35489316, 6168110, -6068252,
+-9789841, 10383083, 797253, 18179522, -13775571, 48664128, -14984604, -32457068, 7524783, -14716705,
+38448548, 12723841, -11969000, 2341294, -23126252, -31649078, 39046084, 4596152, -10449119, 38668664,
+-19907174, 5161477, -11220602, 22471806, -28434294, -31832686, -22764938, 7237020, 13805636, 25717190,
+10983842, 27173184, 42429980, -5071820, 8588861, -5450851, 5419712, -1207423, 1775432, -30998926,
+1231582, -42861088, -14289356, -8331700, 7686381, -1306744, 9491341, -3260417, -12789339, -13367549,
+-3021510, -8786966, -9838159, -16993574, 71404, -1640141, 13100187, 5711770, -10484015, 9805410,
+4594005, 8121247, 10595684, -13542569, 3916473, -5526013, -2513630, 13915157, -4498978, 7023882,
+9374303, -5369783, -14806363, -7420093, 5553393, -24347632, -7553774, 745714, -3357591, -5348845,
+11200201, -11392938, -12699681, 9190693, 15025943, -6623914, 12574591, 29877940, -4532264, 991601,
+35536024, 4003447, -19628000, -22526566, -20145008, 36733780, -24728274, 14656576, 17016660, -11629698,
+3352222, -19990926, -4752918, 16481937, -14785425, 11943767, -5097053, -25145422, -55720220, -4811437,
+49689012, 21070036, 4876399, -9701794, -15259482, -2533494, -19949050, 6592775, -28023050, 33472828,
+2208150, 4249334, 2476049, -10977936, -33741264, -12559021, 26640608, -21705154, -5879274, -14934138,
+11766600, -10619307, 36964636, -5727876, 7432978, -13288092, -34977140, 7981123, -26759256, -5687074,
+-2563559, -48351668, -41267120, -38490424, 12656732, -6849399, -21226802, -13350906, -13655849, -12075301,
+-18961744, -12327093, -3463891, -43352864, 11997991, 5214091, 15904801, -9352291, 37757596, -3638374,
+7130720, -12834436, -5415417, 20799452, -40695888, 17546552, 26377542, -26908506, -17811230, 1986422,
+4131759, -6863895, -13260175, -20995948, -1468342, 830539, -13012140, 11280195, -9633075, -16652662,
+-9534827, -6959995, 10626823, 41339, 228170, -46708, 7908109, -20578262, -6120329, -2177549,
+-4191351, -1109175, 236760, -24732032, 678605, -7779260, -6727530, -1816234, -11340861, 3418794,
+-3296924, 2597918, 356482, -1842541, -2891587, -5918465, -1125818, -4799626, -1291175, 3838090,
+-5774584, -8848706, 193810, -1879048, -2137820, -5409512, -10257993, -6585259, -2696166, -959388,
+-7306276, -8523899, 15101642, 9137006, 18274012, -6885370, -37983616, 10957535, 547071, 63074280,
+64555504, 7809861, 638340, 15210090, 7630547, 16247861, 27861990, 10386305, 28930900, 43713640,
+-10875931, 5745056, -35893580, -5079336, 4712653, -4630512, -10671383, -21758842, -18297098, 10155450,
+10094247, -47696148, 34062848, 9213779, 48064980, -2913062, -9487583, 15726023, -3299609, 50594176,
+12910135, -2574833, 9759239, 10023380, -13534516, -30871152, -24184424, -12126303, 37795712, 520765,
+41540924, 5119064, 40614820, -11687143, -55794308, -20871394, -16171089, 28922310, 3556770, -27109834,
+-39269960, -27438398, -5438503, 33962992, -29502668, -25703232, -16914654, 30313880, -14892262, -8810052,
+-39094940, -38916160, 12319577, 6593849, 52465172, 13494250, -5510443, -14170708, 16480863, 17037062,
+56013352, 1029718, -18096844, -24230594, -1519882, -2484102, 1318018, 8719320, 8097624, -13026636,
+-2909304, 4235912, 11705396, -12509629, -10132365, 15741055, 23200876, 10779831, 7122667, 9018358,
+-9742596, -4151086, -6127308, -1267552, -1287953, 5097053, 85899, 30245160, 6361921, -1289027,
+-9226127, -15870441, 15187541, 24546274, -8871255, 406411, 972273, 3073049, 14066018, 6128382,
+10452340, 10663867, 2725157, 8301098, 2735894, -521839, 2747169, -7472706, -2521146, 1833951,
+-4502737, 3000035, 834297, 38602092, 14665166, -18761490, 36384280, -2258616, -71459128, -21762600,
+45081052, 50075560, -35225176, -35275104, -35851164, 20013474, 30675194, 61288648, 18563386, 7913477,
+-34941168, -3547106, -2142115, 13787382, 30690226, 22279070, 1821066, -37072012, -72007272, -19088982,
+-36420248, 54196580, 57408680, 100153272, -29974576, -96321624, -20967494, -33091650, 74884904, 25467008,
+75950592, 19563576, -25353192, -73385960, -49598820, 2676302, 9162239, 82287280, 33450816, -2855080,
+-67693520, -118132536, -30859340, 2531883, 54611584, 124311384, 27124866, 37490768, -80071072, -122729224,
+5336497, 28198070, 97774392, 57475252, 41108204, -22666154, -79050480, -64680060, -586800, 18269718,
+-1653562, 49363132, -40691592, -38103340, -9395778, -87188376, 13684303, 4220879, 23860154, -17491254,
+-35190816, -18927920, -14832670, -39857832, 9250823, 11718818, -12674448, -1951526, -37356016, 5402532,
+10960757, 12402255, 17563196, 5640366, -19050328, 6805913, -5920076, -3223373, 2971581, 30514668,
+5404680, -855772, -7584912, -23023172, -4338991, -9116068, 9148817, -4061965, 10135049, 6593312,
+-20958366, -47856672, -23409720, -35104916, 29070486, 29211146, 34749508, 19983410, -44502840, -40161704,
+-62154084, -14856829, 50918984, 56259240, 54912768, 2928631, -59928752, -44844292, -34774740, -459025,
+90200216, 62625456, 25804700, -47888884, -55661164, -41700912, 21055540, 21694954, 31549756, 16687022,
+-40980968, 54459648, -1176821, 7904351, -22922240, -51873004, 30904974, -52236464, 55338508, 7938174,
+4949950, 11547020, -33254322, 32855426, 3244848, 22789634, -31886374, 11112691, 288300, 39460012,
+-15760919, 9568113, 26436598, -30236032, -17331266, 2706903, -27411556, 44295072, -9966472, -18569292,
+40039832, 45774688, -12285217, -34279744, -8369818, -30247844, -5507759, 18283676, -2859911, -37618008,
+4498978, 19845434, -13111998, 22414360, -18752900, 8483097, 24357834, -10032507, 16071231, -42824044,
+-42765528, 43270184, 24326158, 66935456, -2711198, -17383344, 57126288, -32897838, -28928752, 19666656,
+19335406, 32005560, -29309930, -14392972, 8774618, -6622840, 32405528, -26225070, -79995376, 20433844,
+44885092, 198642, -37009732, 6621229, 22899692, -9356586, -9599252, -30296162, -9541270, -25084220,
+24934432, 5625871, -17315698, -5140002, 29758218, -21465710, -7372312, -19445464, -2120103, 13947369,
+-20779588, 10721312, 31092878, 11436424, -318364, -9274982, -1622961, -11913166, -14329622, 22974854,
+-9671729, 10188736, -3175055, -12416214, 15569, 2090039, 2326799, 8078297, 10429791, -18347564,
+-5348845, 8441758, 7560216, 17296908, -2259153, -15844134, 6171331, -18377628, 8650601, -16787416,
+-9089761, -167504, -3445101, -11410117, 25222196, -11448772, 5239323, 10506027, 2426120, 8137890,
+16754131, -773094, -2921652, 352187, -1607392, -21079700, -13284871, 81321448, 22005264, 22775138,
+-68911680, -16933446, -54024784, -45222784, 40838696, 43418900, 85287848, 39750460, -11553999, -16203838,
+-10047539, 27310086, 18688476, 923418, 41450192, 8454643, -16617228, -19274740, -15882252, 30211874,
+537, 26470420, 12175695, 16123307, 3930969, -6199249, 3040300, 184684, 3921842, -6441377,
+-1726577, 8913131, 7199439, 56337624, 45061188, 37189584, -3230352, 10423886, -22807350, -3418794,
+-14185203, -25347824, -26795764, 8446053, 14618995, 21635360, 26090316, 21866216, -13463112, -34010772,
+52285320, -36996312, -16338056, -9218074, 17958332, 2678986, 25611964, 27006754, 23386634, -31127776,
+-11247446, 4600984, -12330851, -50409496, 33964600, -11593190, -9107478, 19479288, 39417064, 44989244,
+32638530, 32206350, 27600534, -29097866, 3864397, -7241852, -9100499, 17056388, 13354127, 18152680,
+8719857, -7904888, -14619532, -20953534, -22922778, -45823008, -18379776, 7046431, -2600066, 28324236,
+-15569, -12572980, -4249870, -18112414, 6997039, 2361158, -1322313, -25233, 11963095, 26539140,
+-3195456, 1519882, 14541149, 1259499, 206695, -5070746, -1683090, -6060736, -5986648, 1770600,
+-12498892, 5774047, 7218767, -9040369, -13606456, 3961571, 2796024, -4775467, 13439490, 18158048,
+-2401424, 2889976, -5794985, -17967996, -7601019, 3164854, -104804720, -52287468, -71967544, 51963200,
+11526618, 148824912, 153889216, 153271808, 175218560, 172485344, 123980136, 77103792, 96706024, 42728484,
+9036611, -81594712, -70970040, -178185840, -155754848, -139895136, -82375328, -104020888, -79207784, -6532109,
+-25288768, -10247255, -12466143, 610959, -164283, 4695473, 20350092, 21786222, 20860656, 61398704,
+63075888, 66788352, 47769164, 133620192, 34977676, 56150792, 93598608, 104272144, 38807176, 104938400,
+126357400, 99567008, 86523192, 87900264, 9714679, 52613888, 106351984, 105009264, 67740760, 88117696,
+77115064, -1087164, -28503550, -20133732, -52526376, -64896420, -8314520, -72931768, -111143016, -86681032,
+-103520520, -153177856, -70061120, -103588168, -114740592, -162576864, -132140040, -149934080, -171213504, -114138752,
+-193598336, -229101072, -229861280, -125153200, -155537952, -196093168, -38527468, -87366616, -40964324, -22058416,
+64251636, 28524488, 94267552, 49984292, 89045944, 84693536, 55737940, 43862352, 69034616, 127794064,
+130100464, 130478424, 133336720, 138471888, 168346608, 150315264, 124852016, 153456496, 173228384, 138369888,
+104129872, 124190056, 104545944, 67436352, 85270672, 57565448, 28636158, 12200928, 26324392, 7577933,
+-10816875, -7602629, -13939316, -33470144, -50770272, -50589884, -55022288, -47156592, -58822260, -92619360,
+-83197272, -95718712, -107834816, -125735704, -125299232, -103914048, -104274824, -85602992, -54360328, -61403000,
+-41811508, -29585882, 2995740, -794569, 15032, 4616553, 18418968, 21089900, 6938520, 16508781,
+26843008, 21064130, 9148280, 10420128, 19699404, 11069741, 4416300, 7269769, 10666551, 8989367,
+5246840, 4539244, 3424163, 1444720, 352724, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, },
},
};
-const Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][1774] ={
+const Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774] ={
{
{
5815386,
-1455994, -2240362, 100932, -1137093, 1463510, 5843840, -490700, -3820374, -5774584, 630286,
--4339528, -1251983, -1309965, 1000727, 3101503, -4463008, -2168959, -1370632, 244276, -2636036,
--4633733, -1809792, -3896609, -2077154, 841814, -190052, -1798518, -345208, -493921, 500901,
--4146791, -1033477, 1678259, 3571265, 1837172, -529355, -505196, 171799, -3932043, -2672544,
-870805, 260919, 1046898, -1050120, 864899, -852551, 1567126, -818728, 2932389, 2979634,
--273804, -67109, 2286533, 889595, -158914, 220654, -4801237, -3017752, -729071, 1796907,
--1975148, -4236985, -2667175, -2019172, -2979634, 1803349, -5478231, 1680406, 5598490, -2954938,
--1404991, -2715493, 3122441, -1240172, -3447248, 913217, -4941897, 4958003, -1909113, -63888,
-4645544, -2752000, 1786706, -420907, 616328, -3272765, -6712497, -1464047, 2591476, -1807644,
-1569274, 2216740, 1942936, -1569811, 1095217, -4239133, -771484, 921271, 1699733, -258235,
--98784, 389768, 1019518, -3588445, -2868501, 1076963, 2401961, -1335735, 2518998, 4634807,
--6406481, 761820, -3049964, -2241436, 1464584, -963683, 3983582, -1395328, 3597035, 1690607,
-628676, -440234, 1953673, -79457, -329639, -2204929, 5829345, -4211216, -1141924, 1807644,
-2317135, -329102, -1862942, 869194, -2062121, 1985886, 531502, 551903, 63888, -1039919,
--594316, 2697776, -7567733, 1501091, -855772, -4786204, -613643, 3422552, 1972464, 1978369,
--3203509, 2334315, -9340480, 6575058, -3736085, 1165010, 910533, -175020, -2306398, -542777,
--5420249, -6655589, 1323924, -1591822, 1567663, 1584843, 5257040, -5009543, 283468, 3449933,
-3328600, -4142496, -4392141, -2514703, -3867081, -74625, -1559073, -3098819, -2480881, -383863,
--6739341, -6452115, -1682554, 801011, -956704, 93952, -1136556, 962073, -3745212, 3424163,
--1775969, 1761474, -903017, 1112397, -3469260, 588947, 1668595, 2089502, 654446, 25233,
-454193, -1562294, -2983392, 4632659, 3393561, 1120450, -2406792, 5829345, 3792993, -2347200,
-3518652, -887985, -3705483, -1369558, -1709934, -3446711, 1239635, 1450088, 384400, -2881386,
-3810173, -3746822, 1896765, 2922725, -1532767, -616865, -6481106, -3740380, -6877317, 200253,
-7478612, 3416647, -2929705, 1264868, 934155, 11962558, -3585224, 3423089, 5779952, -1132261,
-5247913, 2166811, 3544422, -4735739, -1833951, -5545340, -2653753, 3759707, -198105, -2622615,
-536334, -3869766, -409633, -2520072, 3446175, -1526324, -610959, -1366337, 1762010, 876710,
--97174, -406948, 1404991, -5799280, -4669703, 2072859, 367220, -504659, -3149285, 7039989,
-1808181, -824634, 2097555, 2839510, -214748, 1450088, 420370, -3355980, 2872796, -4006131,
--3369402, 3779034, -4663261, 3884261, 1386201, -3193845, 5352066, 3189013, 1827509, -1422171,
-4764193, 1336809, -1123134, -1351304, 1109175, 758062, -1408749, -5905580, -1451162, -998043,
-1201517, -3354906, 4038880, -1420024, 2953327, -3744138, 12374338, -10511932, -9244380, -3066607,
-9443559, -1466195, -5321465, 6428493, -4500589, 2970507, -370978, -7262790, -4985384, 5894843,
--4029216, 2860448, -4197794, 3857954, -1898376, -1219234, -578747, -4048007, 1954747, 2771865,
--4074850, 863288, -2127620, 713501, 1693828, -675921, 2481417, 689879, 2014340, 3269007,
--4411469, -3253438, 3797288, 122407, 2932926, 2878165, -2818572, -4136591, -1697049, 647466,
-5291400, -5837398, 2332167, -6504191, -7924752, -1883880, -4541391, -774168, -5361193, -10161356,
--5388574, 4715874, 4408784, 2873870, -3356517, 9750650, -2944200, 1686848, -5301601, -5004174,
-1439888, 84826, -350577, -6291054, -1898376, -233539, -1034550, -1082332, -3091840, -2585570,
-1214402, -682900, -1133871, 16124381, -5162551, 7605314, -1914482, 10193031, -1878511, -1435056,
-1771137, 2165737, -1643899, -11446088, 1195075, -972273, -3037616, -22549, -517007, 4285304,
--1294396, 10033580, -1284195, 1297617, -696858, 5774047, -1096827, 2131915, -4621385, 42413,
--3188476, -3075197, -976031, -714575, -2147, 3833258, -6385543, -1610613, 2080912, -455267,
-4297652, 1294933, -1204738, -2601677, -2997350, -2764348, -5917391, 2521683, 2309619, 2525441,
--10255308, -1100585, 6943352, 4408784, -1820529, 117575, -3352759, -6465000, -7602629, 7832947,
--2546379, -4384088, -3064459, 4569309, 2823404, 1001801, 3166465, 2172717, 3000572, -924492,
--7703024, -1591822, -3815005, -2698313, 4642860, 4633733, -1371705, 7234873, 7857643, -24428700,
-12734578, 4349192, -1551020, -1519882, -377420, -4106526, -7119982, -1908039, 2829310, 9692667,
-6388764, -9713069, -2195265, -5966784, 3339874, -933082, -12918725, -4151623, 7255274, 4274566,
-2212445, 6039261, 3534758, -1130650, -1222455, 1454920, -5152350, -3278134, 707596, 5206574,
--2771328, -5238787, -7281580, -3944928, 3082176, 10710575, 417686, -2422899, 2019172, -2767570,
--8628052, 154619, -6180995, -5064840, -5779416, 2942053, -641024, -8228084, 1156420, 2487860,
-2758443, -8859981, -4927938, -3581466, -2332704, -1363652, -3331284, -1946157, -4214974, -8597451,
--1120450, -7362111, -8451422, -5581310, -1558536, 1016297, -4984310, -7720204, 2194192, 5464272,
--177704, -1474248, -443992, 3861176, -5959804, 4266513, -10272488, 3375844, -5246840, -1225676,
-966368, 2536178, -725850, 4724464, -177167, -1449552, -14203994, 6019397, -2863670, -3398930,
-4727149, -8520678, -11340861, 4055523, -4124242, -5682779, -1867237, 9513889, 6083821, -4175782,
--2359011, 4130685, -1570884, -1042066, 1178969, 3988414, 8189429, 4737886, 6612102, -1626719,
--415001, -444529, -4554813, 508954, -1963337, 10713796, -8756901, -5699959, -4646618, -4989679,
-2699924, 828392, 4057134, -1413581, -5728950, -8447664, -2191507, -10359998, -13271449, -3500935,
-440234, 9485972, 2158221, -9117679, -1973538, 6801618, -3126199, 1580548, 2533494, 3263638,
--5935645, -10434623, -3820374, -6015639, 15242839, 186831, -4425964, 1502702, 2903398, -3316789,
-2341294, 117038, 8715026, 2856153, -527207, 6051072, -929324, -7220914, -1166621, -528818,
-7458211, -3978214, -751619, -2112050, 1410360, -2151242, 700080, 2451890, 3690451, 5016522,
-3518652, 1631014, 13007308, 5068599, 4492536, -494995, -9692131, 696858, -7999377, 2579128,
--5291937, 1406065, 412854, 3239479, 16045461, 4443681, -1995012, 5616207, -3962107, 4775467,
--2258616, 8128763, -3940096, -77309, -5585605, 3685619, 6782827, -7324530, 15313706, -3670050,
-1738925, -2331630, -3245385, 1499481, -3653407, -12686260, 2951716, -3254512, 182536, -7882876,
-2800319, -2862059, -11937862, -5986648, -2498060, -11584601, 7739531, 16404628, 21383032, -19204946,
--13064754, -8198556, 2504503, 4645007, -3965329, 2648384, -4486094, 1752347, 11400454, 8051453,
--12760885, 20572894, 1232119, 12402255, 4996658, -3201361, -3386045, 11567421, -5510980, 7631620,
-9129490, -201327, -5083631, 1214939, 9401147, 5749888, 5200669, 4749697, -12885, 2292976,
-3649649, 11851962, 8446053, -4925791, -4257923, 35970, -1808718, -277025, -5030481, -2885144,
-6193880, 10601053, 3153043, 15517180, -3386045, 16888348, 1384590, 8478802, 18178986, 13412646,
-4612258, 4593468, 8537321, -707596, -6491306, 996432, 8031052, -3242164, -7579007, 1379758,
--767189, 17126182, 13372381, 965294, 18581102, -454730, 10164577, 6337224, 8084202, 227633,
--5925445, 9420474, -1371168, 10867878, 6706592, 21545704, -11141145, -382252, -22719840, 6534256,
--11348914, 419833, 9997610, -1948305, 3317325, -12981539, -9463424, 4895726, -7592429, 4598836,
--4480188, 1406065, 12342125, -1970316, -11155641, 3157875, -4516158, 11697343, -11900818, -8489003,
-5283347, 5621576, 8842264, 288300, -489089, 5456756, -2966749, -8397198, 5578089, -3505767,
--6241125, 1898912, 6955163, -4896263, 12714177, 4826470, 34360, 1452236, 6505802, 2447058,
--20405926, 8354785, -1595580, -2433099, -3037616, 10892574, 666794, 11593190, 1124208, 754841,
-1964411, -3438658, -583042, 5432597, -5979668, 1242319, 19790136, 1305133, 14795625, 694174,
--1998234, -1946157, -8526047, -20003810, -13300440, 6020471, 10001368, -4346507, 16072841, 5918465,
--9507984, -6722161, 15022185, 9261023, 10558640, 2334852, -2513630, -239981, 1331440, -8548596,
-228707, -4151086, 6726993, 13425531, 5674189, 5107253, 15273977, 12926778, 10930692, 1309428,
-4633196, 1690070, -1434519, -1889249, 3253438, -229781, -7713762, 2797634, 9339406, 814433,
--1542967, 3526168, -20147692, 7916162, -7492034, 6135898, 8013872, 7347616, -7016366, 5175436,
-68719, 745177, 13338021, 10029822, 1002875, 5801964, 4491999, -763967, -6235219, 2661806,
-6959995, 1049583, 9753871, 3592203, 8907762, 16760573, 1708323, 7326141, 7661685, 9427453,
-531502, -4489315, 14566918, -4342749, 11940009, -12049531, -9780177, 15942382, 172336, 5915244,
-9778030, 14045617, 17878876, 8109972, 3327526, -7265474, 4766877, -682363, -14012868, 13866839,
-9190693, -11300059, 597537, 1914482, -13960791, 6484864, 14217415, 8896488, 2310156, -35291748,
--22091702, 6622840, 7020661, 13841606, 23310398, -7024956, -4065187, -8071854, -7329899, -9451612,
--9855876, 200253, 3519189, 2399276, 14660871, 27917, 14398341, -1392643, 4795331, 6110665,
-4980015, 10210748, 7562901, -182536, 9411884, -884226, -1324461, -6332393, 6334540, -1700807,
--14475114, -13241921, 7634841, -2685428, 16954384, 9271224, 10873247, 3100967, -21581136, 4176856,
-13429826, -3114388, 3863860, -4375498, 2627983, 15843597, -630286, 13050258, 23680840, 112743,
--8963060, -1524713, 246961, -16204912, 20135344, 8210904, -2651069, -2583423, 14614163, 5378373,
--17629768, -15945066, 5723044, -7874823, 8508867, 4432943, 2743947, -8699456, -12484396, -2310693,
-3249143, 737661, 13630616, -19542102, 2581812, -1220845, 24898462, -29229936, -8048769, -14150307,
--424665, 4856535, 955630, 19918984, -20178830, 9824201, -2605972, 4134980, -2292976, 11039140,
--5801964, -9865003, -673236, -2718714, 7824357, -413927, 5344013, 11703249, -2220498, -8364986,
--983011, 13144747, -7424388, 3324305, 3071439, 767189, -1002875, 13078175, -314069, -3035468,
--21233782, 7165079, -5123359, -13231184, -11587285, -2826089, -12861816, -7374459, -11143293, 5691906,
--13179644, 13666049, -12077985, 8612483, -6146635, 16525424, -15463493, -8721468, -2157684, 9758703,
-4064113, 489626, -6230387, -12401181, 1526861, 5465883, 18551574, 10079215, 4240744, -9978820,
-6486475, -8769786, -10217727, 9699110, -9900436, 5428839, 12154757, 10510859, -2364380, -3162707,
--8329016, 14904073, 1592359, 11919608, 17426830, 23727010, -22931368, 18688476, 13334263, 1664300,
-9887015, 31188978, -7437810, -7606924, 3886946, 9935333, 13529684, 5191542, -10743324, 14375792,
--3882651, 27681064, 297963, -3326452, 9601399, 8058970, 7902740, 776852, 25952876, -19695646,
-6023692, 678068, 7805030, -7606924, -16346109, 9642202, 7693897, 8051453, -5150203, -3566970,
-21760452, 8857833, 27099096, 3415573, -8876624, -37044, 6635725, -1287953, 28013388, -2447058,
-15568720, -1675037, 25137906, 9862319, 7241852, -5000416, -780610, 14365055, 782221, 15291157,
-11332271, 13584445, -16542067, 3529390, 12340515, 15298137, 10975252, 9032853, 19515258, 24637544,
--18552648, -1647657, 35944044, -8357470, -10785737, 23809152, 30368104, 447213, -2609730, -18178450,
-11432129, 23976654, 15569, 8515846, -17878876, 19846508, -8425115, -4458176, -15545634, -9335648,
-35792648, 2102923, -23075786, -9182640, 482110, 1795296, -2030983, 28438590, 13620415, -498216,
--10025527, 764504, 8120710, -1435593, 36638756, 9478993, 16689169, 7359964, -6980396, -18117246,
-5745593, 1845762, 4146791, -13468481, -678605, -8341900, 12951474, 2333241, 2913062, 14778982,
--10336376, -5856725, 3384434, 3031710, 4621385, -14660871, -12617003, -26860726, -14518600, 4032974,
--15925202, 5134097, -11281805, -4335770, 22903450, 10020696, -9645423, 9842991, 3556233, 3357054,
-22231288, 30065, 26787712, 13652090, -9627706, -27029840, 6990060, 9477382, 19083614, -4373888,
--20215338, -2391760, 9272298, 7687992, -1566053, -7640210, 15752329, -18369576, -1542967, 26866094,
--6353867, 7685307, 2331094, 3244311, -26084948, 20879984, -2668785, -20788178, -12563853, 10420664,
--3665755, 5079336, -762357, -8757975, -6985228, 3425773, -7021735, -1717450, -1075889, -29879014,
--8501888, -20092930, 3621194, 6873559, -986769, -8933532, 2679523, -4354023, 10758893, -26394184,
-850940, 4437238, 14070850, -11551851, 13005698, -11367705, 7876433, 2282775, 9814537, -17220672,
-4128001, -8563091, -19385872, 11777874, -15967078, -29672856, 3064459, -2817499, 22001506, -11301133,
-1838783, 10716480, 13982266, 17536352, 280247, -6009733, -12767327, 361851, 6505265, 11571716,
--25095494, 25890600, -2410014, -17439178, -15524696, -23212688, 6637872, 5666673, 5884105, 4134980,
-20292646, -8492224, 19376208, -23054310, -1165547, 11023034, -5890011, -24896314, -4858145, -35883916,
-15782394, -39550208, 21883932, -27699854, -24239722, 5467494, 18855980, 13714904, -14253386, 12783970,
-24001888, 3273839, 2704756, 4701379, 1226750, -15962246, 16936666, -31369904, -19753628, 454730,
--2884608, -3192771, -5020280, -8790724, 3017215, 26445724, 6173479, 2530810, 1604170, -14408542,
-15122580, -4298189, -28900298, -5718212, -376347, -857920, -20067698, -14995878, 13734232, -6340983,
-24264418, 3068754, -925029, -22195318, -12182675, 5813775, 2334852, -7434589, 20695300, -19045496,
--11286100, -2818036, -2147484, 18165564, 790811, 21437792, -842887, -22149146, 4024384, -19586662,
-11856257, -5718749, 16476568, 28665686, -50982336, 12237972, 6263136, 2739652, 18357764, -5946382,
-2934000, 39476656, 33937220, -11823508, -15308337, -2493766, -28572806, 14081587, -3064459, 4229469,
-605054, -15412490, 39538932, -19393924, -73793984, -12382928, 13010530, -50520088, -9749039, 13399761,
--42633992, 3858491, 25505664, -20854750, 25467008, -27646168, 21717502, 26621282, -19522236, 5811628,
--3884798, -1372779, -8955007, -13321378, -3282429, 15531675, -12502650, -20939040, -11446088, -17296370,
--2720862, -14060649, -3031173, 4128001, -3888556, 14966887, -16172162, -20855288, 13848048, -21969294,
--30165166, -39776764, -13967234, -3255048, 6405944, 18460844, -9559523, 6890738, 8978092, -9395778,
--3989488, 31801548, -23458574, -3549254, 22866942, 4533875, 17882634, -7505992, 6169184, 23088134,
-12898324, -4646081, -3658775, -19620484, 6164889, 22186190, -25219512, -11884711, -8573828, 36042292,
-24260660, -34878892, -7301982, 31105226, -9793599, -19226422, -13973139, -19251118, -11831024, 31525596,
-18679886, -2377801, 13727252, -3237869, 16793322, -10704132, -6721624, 35169340, -15236396, 6614787,
--10874857, -3427384, -1238024, 9928354, 27485644, 11362873, -20227686, -5185636, -1944547, -2418604,
-14846628, 2672007, 27373438, -7854959, 3632469, -2338073, 6945499, -23319524, 12903155, -21421150,
-13364328, -441845, 20252918, -4961761, 14448807, -6702834, 3150359, 10204842, -11614665, 10586021,
-19896972, 28651726, -17144972, 29382946, 9266929, 34724812, -12568148, 7447474, -4415227, -2992519,
--9918690, -1105417, -14973867, -53919556, -39025148, -9308805, -5517959, 9340480, -1683627, 14415521,
-14084272, -28534152, -10628433, -10430328, 26574036, -40381820, 36454072, -11653857, -11957726, 8833674,
-16506633, -31753766, -7066295, -189515, 5322002, 949188, -1773285, 14847702, -10339060, 1303523,
-7256884, 8375186, 12038256, 10069014, 2637110, -17667348, -4394826, 22505092, -23463944, -19847044,
-22983444, 7580081, 15928423, 25623774, 39618388, -9799505, -26906896, 33826088, -14957760, -6354404,
-34760244, 10731513, -14258755, -37918120, -25812754, -4253092, -14951318, 17117592, 34173444, 17648558,
--13296145, 35851704, 11020349, -13559749, 8807904, 40107480, 10502806, 7488813, -9772124, -32769526,
--44790604, -34909496, -3743064, 25995826, 6779606, 16383690, 60844116, 30455614, -38375532, -25087440,
-15298674, -51392504, -24726126, 44559212, 14910516, -56735444, -48324288, -21364242, -36389648, -33055678,
--17236778, -54029076, 39786968, 17926656, 13775571, 16906066, -4630512, 20441896, 16841640, 23738284,
--2960306, 32017908, -17915382, 24697672, -7226820, -16065862, -4457103, -27361626, 4138738, -8958765,
-11349988, -5629092, -10182831, 29620242, -30967788, 22457310, -110059, -12077985, -4636954, 14241575,
-14861661, 12029667, 27229556, 23250806, -14431627, -1127966, -12864501, 13960254, -11355357, 11418171,
-13400298, 8061117, 7779797, 7044820, -6910066, 31501974, -2177012, 11145440, 3395709, 16003048,
-7865696, -32088238, 2614561, -17984638, 5594195, 18331458, -2644089, -11605539, -13391171, 35745404,
--34253976, -24177982, 50784768, -17817672, 12967580, 9184251, 15957414, -3152506, 7978976, -30367030,
-1617055, 40157944, -19539416, -7102802, 28102508, 6546067, -26805428, 12505334, -37677600, -137980112,
--148366960, -10197863, -87148648, 67864240, 258684272, 109803520, 154139936, 195629856, -80527416, -58699856,
--26026428, -185362736, -130713568, -46006080, -202247328, -91289528, -22140556, -85962160, 14756434, 180355344,
-164109632, 177214112, 232043120, 137261792, -17148194, 47930760, -57269092, -215591248, -118496536, -89798640,
--178929408, -125079648, 2631741, -139810320, -48264160, 24486146, -138337680, -74164424, 96845072, 33843268,
-105463992, 266627808, 217437552, 173556944, 318101920, 228274832, -7155416, 28579786, -63073744, -292923744,
--278069056, -288776416, -444851776, -304239904, -187310496, -185640304, 514322, 139642816, 160726800, 223222880,
-343002528, 314833440, 268950848, 262911056, 153861296, 52892524, 12884365, -14259291, -112143208, -200613088,
--239049824, -256209824, -335403136, -255880736, -100100120, 29174102, 28749974, 0, 0, 0,
-0, 0, 0, },
+1455994, -2240362, 100932, -1137093, 1463510, 5843840, -490700, -3820374, -5774584, 630286,
+-4339528, -1251983, -1309965, 1000727, 3101503, -4463008, -2168959, -1370632, 244276, -2636036,
+-4633733, -1809792, -3896609, -2077154, 841814, -190052, -1798518, -345208, -493921, 500901,
+-4146791, -1033477, 1678259, 3571265, 1837172, -529355, -505196, 171799, -3932043, -2672544,
+870805, 260919, 1046898, -1050120, 864899, -852551, 1567126, -818728, 2932389, 2979634,
+-273804, -67109, 2286533, 889595, -158914, 220654, -4801237, -3017752, -729071, 1796907,
+-1975148, -4236985, -2667175, -2019172, -2979634, 1803349, -5478231, 1680406, 5598490, -2954938,
+-1404991, -2715493, 3122441, -1240172, -3447248, 913217, -4941897, 4958003, -1909113, -63888,
+4645544, -2752000, 1786706, -420907, 616328, -3272765, -6712497, -1464047, 2591476, -1807644,
+1569274, 2216740, 1942936, -1569811, 1095217, -4239133, -771484, 921271, 1699733, -258235,
+-98784, 389768, 1019518, -3588445, -2868501, 1076963, 2401961, -1335735, 2518998, 4634807,
+-6406481, 761820, -3049964, -2241436, 1464584, -963683, 3983582, -1395328, 3597035, 1690607,
+628676, -440234, 1953673, -79457, -329639, -2204929, 5829345, -4211216, -1141924, 1807644,
+2317135, -329102, -1862942, 869194, -2062121, 1985886, 531502, 551903, 63888, -1039919,
+-594316, 2697776, -7567733, 1501091, -855772, -4786204, -613643, 3422552, 1972464, 1978369,
+-3203509, 2334315, -9340480, 6575058, -3736085, 1165010, 910533, -175020, -2306398, -542777,
+-5420249, -6655589, 1323924, -1591822, 1567663, 1584843, 5257040, -5009543, 283468, 3449933,
+3328600, -4142496, -4392141, -2514703, -3867081, -74625, -1559073, -3098819, -2480881, -383863,
+-6739341, -6452115, -1682554, 801011, -956704, 93952, -1136556, 962073, -3745212, 3424163,
+-1775969, 1761474, -903017, 1112397, -3469260, 588947, 1668595, 2089502, 654446, 25233,
+454193, -1562294, -2983392, 4632659, 3393561, 1120450, -2406792, 5829345, 3792993, -2347200,
+3518652, -887985, -3705483, -1369558, -1709934, -3446711, 1239635, 1450088, 384400, -2881386,
+3810173, -3746822, 1896765, 2922725, -1532767, -616865, -6481106, -3740380, -6877317, 200253,
+7478612, 3416647, -2929705, 1264868, 934155, 11962558, -3585224, 3423089, 5779952, -1132261,
+5247913, 2166811, 3544422, -4735739, -1833951, -5545340, -2653753, 3759707, -198105, -2622615,
+536334, -3869766, -409633, -2520072, 3446175, -1526324, -610959, -1366337, 1762010, 876710,
+-97174, -406948, 1404991, -5799280, -4669703, 2072859, 367220, -504659, -3149285, 7039989,
+1808181, -824634, 2097555, 2839510, -214748, 1450088, 420370, -3355980, 2872796, -4006131,
+-3369402, 3779034, -4663261, 3884261, 1386201, -3193845, 5352066, 3189013, 1827509, -1422171,
+4764193, 1336809, -1123134, -1351304, 1109175, 758062, -1408749, -5905580, -1451162, -998043,
+1201517, -3354906, 4038880, -1420024, 2953327, -3744138, 12374338, -10511932, -9244380, -3066607,
+9443559, -1466195, -5321465, 6428493, -4500589, 2970507, -370978, -7262790, -4985384, 5894843,
+-4029216, 2860448, -4197794, 3857954, -1898376, -1219234, -578747, -4048007, 1954747, 2771865,
+-4074850, 863288, -2127620, 713501, 1693828, -675921, 2481417, 689879, 2014340, 3269007,
+-4411469, -3253438, 3797288, 122407, 2932926, 2878165, -2818572, -4136591, -1697049, 647466,
+5291400, -5837398, 2332167, -6504191, -7924752, -1883880, -4541391, -774168, -5361193, -10161356,
+-5388574, 4715874, 4408784, 2873870, -3356517, 9750650, -2944200, 1686848, -5301601, -5004174,
+1439888, 84826, -350577, -6291054, -1898376, -233539, -1034550, -1082332, -3091840, -2585570,
+1214402, -682900, -1133871, 16124381, -5162551, 7605314, -1914482, 10193031, -1878511, -1435056,
+1771137, 2165737, -1643899, -11446088, 1195075, -972273, -3037616, -22549, -517007, 4285304,
+-1294396, 10033580, -1284195, 1297617, -696858, 5774047, -1096827, 2131915, -4621385, 42413,
+-3188476, -3075197, -976031, -714575, -2147, 3833258, -6385543, -1610613, 2080912, -455267,
+4297652, 1294933, -1204738, -2601677, -2997350, -2764348, -5917391, 2521683, 2309619, 2525441,
+-10255308, -1100585, 6943352, 4408784, -1820529, 117575, -3352759, -6465000, -7602629, 7832947,
+-2546379, -4384088, -3064459, 4569309, 2823404, 1001801, 3166465, 2172717, 3000572, -924492,
+-7703024, -1591822, -3815005, -2698313, 4642860, 4633733, -1371705, 7234873, 7857643, -24428700,
+12734578, 4349192, -1551020, -1519882, -377420, -4106526, -7119982, -1908039, 2829310, 9692667,
+6388764, -9713069, -2195265, -5966784, 3339874, -933082, -12918725, -4151623, 7255274, 4274566,
+2212445, 6039261, 3534758, -1130650, -1222455, 1454920, -5152350, -3278134, 707596, 5206574,
+-2771328, -5238787, -7281580, -3944928, 3082176, 10710575, 417686, -2422899, 2019172, -2767570,
+-8628052, 154619, -6180995, -5064840, -5779416, 2942053, -641024, -8228084, 1156420, 2487860,
+2758443, -8859981, -4927938, -3581466, -2332704, -1363652, -3331284, -1946157, -4214974, -8597451,
+-1120450, -7362111, -8451422, -5581310, -1558536, 1016297, -4984310, -7720204, 2194192, 5464272,
+-177704, -1474248, -443992, 3861176, -5959804, 4266513, -10272488, 3375844, -5246840, -1225676,
+966368, 2536178, -725850, 4724464, -177167, -1449552, -14203994, 6019397, -2863670, -3398930,
+4727149, -8520678, -11340861, 4055523, -4124242, -5682779, -1867237, 9513889, 6083821, -4175782,
+-2359011, 4130685, -1570884, -1042066, 1178969, 3988414, 8189429, 4737886, 6612102, -1626719,
+-415001, -444529, -4554813, 508954, -1963337, 10713796, -8756901, -5699959, -4646618, -4989679,
+2699924, 828392, 4057134, -1413581, -5728950, -8447664, -2191507, -10359998, -13271449, -3500935,
+440234, 9485972, 2158221, -9117679, -1973538, 6801618, -3126199, 1580548, 2533494, 3263638,
+-5935645, -10434623, -3820374, -6015639, 15242839, 186831, -4425964, 1502702, 2903398, -3316789,
+2341294, 117038, 8715026, 2856153, -527207, 6051072, -929324, -7220914, -1166621, -528818,
+7458211, -3978214, -751619, -2112050, 1410360, -2151242, 700080, 2451890, 3690451, 5016522,
+3518652, 1631014, 13007308, 5068599, 4492536, -494995, -9692131, 696858, -7999377, 2579128,
+-5291937, 1406065, 412854, 3239479, 16045461, 4443681, -1995012, 5616207, -3962107, 4775467,
+-2258616, 8128763, -3940096, -77309, -5585605, 3685619, 6782827, -7324530, 15313706, -3670050,
+1738925, -2331630, -3245385, 1499481, -3653407, -12686260, 2951716, -3254512, 182536, -7882876,
+2800319, -2862059, -11937862, -5986648, -2498060, -11584601, 7739531, 16404628, 21383032, -19204946,
+-13064754, -8198556, 2504503, 4645007, -3965329, 2648384, -4486094, 1752347, 11400454, 8051453,
+-12760885, 20572894, 1232119, 12402255, 4996658, -3201361, -3386045, 11567421, -5510980, 7631620,
+9129490, -201327, -5083631, 1214939, 9401147, 5749888, 5200669, 4749697, -12885, 2292976,
+3649649, 11851962, 8446053, -4925791, -4257923, 35970, -1808718, -277025, -5030481, -2885144,
+6193880, 10601053, 3153043, 15517180, -3386045, 16888348, 1384590, 8478802, 18178986, 13412646,
+4612258, 4593468, 8537321, -707596, -6491306, 996432, 8031052, -3242164, -7579007, 1379758,
+-767189, 17126182, 13372381, 965294, 18581102, -454730, 10164577, 6337224, 8084202, 227633,
+-5925445, 9420474, -1371168, 10867878, 6706592, 21545704, -11141145, -382252, -22719840, 6534256,
+-11348914, 419833, 9997610, -1948305, 3317325, -12981539, -9463424, 4895726, -7592429, 4598836,
+-4480188, 1406065, 12342125, -1970316, -11155641, 3157875, -4516158, 11697343, -11900818, -8489003,
+5283347, 5621576, 8842264, 288300, -489089, 5456756, -2966749, -8397198, 5578089, -3505767,
+-6241125, 1898912, 6955163, -4896263, 12714177, 4826470, 34360, 1452236, 6505802, 2447058,
+-20405926, 8354785, -1595580, -2433099, -3037616, 10892574, 666794, 11593190, 1124208, 754841,
+1964411, -3438658, -583042, 5432597, -5979668, 1242319, 19790136, 1305133, 14795625, 694174,
+-1998234, -1946157, -8526047, -20003810, -13300440, 6020471, 10001368, -4346507, 16072841, 5918465,
+-9507984, -6722161, 15022185, 9261023, 10558640, 2334852, -2513630, -239981, 1331440, -8548596,
+228707, -4151086, 6726993, 13425531, 5674189, 5107253, 15273977, 12926778, 10930692, 1309428,
+4633196, 1690070, -1434519, -1889249, 3253438, -229781, -7713762, 2797634, 9339406, 814433,
+-1542967, 3526168, -20147692, 7916162, -7492034, 6135898, 8013872, 7347616, -7016366, 5175436,
+68719, 745177, 13338021, 10029822, 1002875, 5801964, 4491999, -763967, -6235219, 2661806,
+6959995, 1049583, 9753871, 3592203, 8907762, 16760573, 1708323, 7326141, 7661685, 9427453,
+531502, -4489315, 14566918, -4342749, 11940009, -12049531, -9780177, 15942382, 172336, 5915244,
+9778030, 14045617, 17878876, 8109972, 3327526, -7265474, 4766877, -682363, -14012868, 13866839,
+9190693, -11300059, 597537, 1914482, -13960791, 6484864, 14217415, 8896488, 2310156, -35291748,
+-22091702, 6622840, 7020661, 13841606, 23310398, -7024956, -4065187, -8071854, -7329899, -9451612,
+-9855876, 200253, 3519189, 2399276, 14660871, 27917, 14398341, -1392643, 4795331, 6110665,
+4980015, 10210748, 7562901, -182536, 9411884, -884226, -1324461, -6332393, 6334540, -1700807,
+-14475114, -13241921, 7634841, -2685428, 16954384, 9271224, 10873247, 3100967, -21581136, 4176856,
+13429826, -3114388, 3863860, -4375498, 2627983, 15843597, -630286, 13050258, 23680840, 112743,
+-8963060, -1524713, 246961, -16204912, 20135344, 8210904, -2651069, -2583423, 14614163, 5378373,
+-17629768, -15945066, 5723044, -7874823, 8508867, 4432943, 2743947, -8699456, -12484396, -2310693,
+3249143, 737661, 13630616, -19542102, 2581812, -1220845, 24898462, -29229936, -8048769, -14150307,
+-424665, 4856535, 955630, 19918984, -20178830, 9824201, -2605972, 4134980, -2292976, 11039140,
+-5801964, -9865003, -673236, -2718714, 7824357, -413927, 5344013, 11703249, -2220498, -8364986,
+-983011, 13144747, -7424388, 3324305, 3071439, 767189, -1002875, 13078175, -314069, -3035468,
+-21233782, 7165079, -5123359, -13231184, -11587285, -2826089, -12861816, -7374459, -11143293, 5691906,
+-13179644, 13666049, -12077985, 8612483, -6146635, 16525424, -15463493, -8721468, -2157684, 9758703,
+4064113, 489626, -6230387, -12401181, 1526861, 5465883, 18551574, 10079215, 4240744, -9978820,
+6486475, -8769786, -10217727, 9699110, -9900436, 5428839, 12154757, 10510859, -2364380, -3162707,
+-8329016, 14904073, 1592359, 11919608, 17426830, 23727010, -22931368, 18688476, 13334263, 1664300,
+9887015, 31188978, -7437810, -7606924, 3886946, 9935333, 13529684, 5191542, -10743324, 14375792,
+-3882651, 27681064, 297963, -3326452, 9601399, 8058970, 7902740, 776852, 25952876, -19695646,
+6023692, 678068, 7805030, -7606924, -16346109, 9642202, 7693897, 8051453, -5150203, -3566970,
+21760452, 8857833, 27099096, 3415573, -8876624, -37044, 6635725, -1287953, 28013388, -2447058,
+15568720, -1675037, 25137906, 9862319, 7241852, -5000416, -780610, 14365055, 782221, 15291157,
+11332271, 13584445, -16542067, 3529390, 12340515, 15298137, 10975252, 9032853, 19515258, 24637544,
+-18552648, -1647657, 35944044, -8357470, -10785737, 23809152, 30368104, 447213, -2609730, -18178450,
+11432129, 23976654, 15569, 8515846, -17878876, 19846508, -8425115, -4458176, -15545634, -9335648,
+35792648, 2102923, -23075786, -9182640, 482110, 1795296, -2030983, 28438590, 13620415, -498216,
+-10025527, 764504, 8120710, -1435593, 36638756, 9478993, 16689169, 7359964, -6980396, -18117246,
+5745593, 1845762, 4146791, -13468481, -678605, -8341900, 12951474, 2333241, 2913062, 14778982,
+-10336376, -5856725, 3384434, 3031710, 4621385, -14660871, -12617003, -26860726, -14518600, 4032974,
+-15925202, 5134097, -11281805, -4335770, 22903450, 10020696, -9645423, 9842991, 3556233, 3357054,
+22231288, 30065, 26787712, 13652090, -9627706, -27029840, 6990060, 9477382, 19083614, -4373888,
+-20215338, -2391760, 9272298, 7687992, -1566053, -7640210, 15752329, -18369576, -1542967, 26866094,
+-6353867, 7685307, 2331094, 3244311, -26084948, 20879984, -2668785, -20788178, -12563853, 10420664,
+-3665755, 5079336, -762357, -8757975, -6985228, 3425773, -7021735, -1717450, -1075889, -29879014,
+-8501888, -20092930, 3621194, 6873559, -986769, -8933532, 2679523, -4354023, 10758893, -26394184,
+850940, 4437238, 14070850, -11551851, 13005698, -11367705, 7876433, 2282775, 9814537, -17220672,
+4128001, -8563091, -19385872, 11777874, -15967078, -29672856, 3064459, -2817499, 22001506, -11301133,
+1838783, 10716480, 13982266, 17536352, 280247, -6009733, -12767327, 361851, 6505265, 11571716,
+-25095494, 25890600, -2410014, -17439178, -15524696, -23212688, 6637872, 5666673, 5884105, 4134980,
+20292646, -8492224, 19376208, -23054310, -1165547, 11023034, -5890011, -24896314, -4858145, -35883916,
+15782394, -39550208, 21883932, -27699854, -24239722, 5467494, 18855980, 13714904, -14253386, 12783970,
+24001888, 3273839, 2704756, 4701379, 1226750, -15962246, 16936666, -31369904, -19753628, 454730,
+-2884608, -3192771, -5020280, -8790724, 3017215, 26445724, 6173479, 2530810, 1604170, -14408542,
+15122580, -4298189, -28900298, -5718212, -376347, -857920, -20067698, -14995878, 13734232, -6340983,
+24264418, 3068754, -925029, -22195318, -12182675, 5813775, 2334852, -7434589, 20695300, -19045496,
+-11286100, -2818036, -2147484, 18165564, 790811, 21437792, -842887, -22149146, 4024384, -19586662,
+11856257, -5718749, 16476568, 28665686, -50982336, 12237972, 6263136, 2739652, 18357764, -5946382,
+2934000, 39476656, 33937220, -11823508, -15308337, -2493766, -28572806, 14081587, -3064459, 4229469,
+605054, -15412490, 39538932, -19393924, -73793984, -12382928, 13010530, -50520088, -9749039, 13399761,
+-42633992, 3858491, 25505664, -20854750, 25467008, -27646168, 21717502, 26621282, -19522236, 5811628,
+-3884798, -1372779, -8955007, -13321378, -3282429, 15531675, -12502650, -20939040, -11446088, -17296370,
+-2720862, -14060649, -3031173, 4128001, -3888556, 14966887, -16172162, -20855288, 13848048, -21969294,
+-30165166, -39776764, -13967234, -3255048, 6405944, 18460844, -9559523, 6890738, 8978092, -9395778,
+-3989488, 31801548, -23458574, -3549254, 22866942, 4533875, 17882634, -7505992, 6169184, 23088134,
+12898324, -4646081, -3658775, -19620484, 6164889, 22186190, -25219512, -11884711, -8573828, 36042292,
+24260660, -34878892, -7301982, 31105226, -9793599, -19226422, -13973139, -19251118, -11831024, 31525596,
+18679886, -2377801, 13727252, -3237869, 16793322, -10704132, -6721624, 35169340, -15236396, 6614787,
+-10874857, -3427384, -1238024, 9928354, 27485644, 11362873, -20227686, -5185636, -1944547, -2418604,
+14846628, 2672007, 27373438, -7854959, 3632469, -2338073, 6945499, -23319524, 12903155, -21421150,
+13364328, -441845, 20252918, -4961761, 14448807, -6702834, 3150359, 10204842, -11614665, 10586021,
+19896972, 28651726, -17144972, 29382946, 9266929, 34724812, -12568148, 7447474, -4415227, -2992519,
+-9918690, -1105417, -14973867, -53919556, -39025148, -9308805, -5517959, 9340480, -1683627, 14415521,
+14084272, -28534152, -10628433, -10430328, 26574036, -40381820, 36454072, -11653857, -11957726, 8833674,
+16506633, -31753766, -7066295, -189515, 5322002, 949188, -1773285, 14847702, -10339060, 1303523,
+7256884, 8375186, 12038256, 10069014, 2637110, -17667348, -4394826, 22505092, -23463944, -19847044,
+22983444, 7580081, 15928423, 25623774, 39618388, -9799505, -26906896, 33826088, -14957760, -6354404,
+34760244, 10731513, -14258755, -37918120, -25812754, -4253092, -14951318, 17117592, 34173444, 17648558,
+-13296145, 35851704, 11020349, -13559749, 8807904, 40107480, 10502806, 7488813, -9772124, -32769526,
+-44790604, -34909496, -3743064, 25995826, 6779606, 16383690, 60844116, 30455614, -38375532, -25087440,
+15298674, -51392504, -24726126, 44559212, 14910516, -56735444, -48324288, -21364242, -36389648, -33055678,
+-17236778, -54029076, 39786968, 17926656, 13775571, 16906066, -4630512, 20441896, 16841640, 23738284,
+-2960306, 32017908, -17915382, 24697672, -7226820, -16065862, -4457103, -27361626, 4138738, -8958765,
+11349988, -5629092, -10182831, 29620242, -30967788, 22457310, -110059, -12077985, -4636954, 14241575,
+14861661, 12029667, 27229556, 23250806, -14431627, -1127966, -12864501, 13960254, -11355357, 11418171,
+13400298, 8061117, 7779797, 7044820, -6910066, 31501974, -2177012, 11145440, 3395709, 16003048,
+7865696, -32088238, 2614561, -17984638, 5594195, 18331458, -2644089, -11605539, -13391171, 35745404,
+-34253976, -24177982, 50784768, -17817672, 12967580, 9184251, 15957414, -3152506, 7978976, -30367030,
+1617055, 40157944, -19539416, -7102802, 28102508, 6546067, -26805428, 12505334, -37677600, -137980112,
+-148366960, -10197863, -87148648, 67864240, 258684272, 109803520, 154139936, 195629856, -80527416, -58699856,
+-26026428, -185362736, -130713568, -46006080, -202247328, -91289528, -22140556, -85962160, 14756434, 180355344,
+164109632, 177214112, 232043120, 137261792, -17148194, 47930760, -57269092, -215591248, -118496536, -89798640,
+-178929408, -125079648, 2631741, -139810320, -48264160, 24486146, -138337680, -74164424, 96845072, 33843268,
+105463992, 266627808, 217437552, 173556944, 318101920, 228274832, -7155416, 28579786, -63073744, -292923744,
+-278069056, -288776416, -444851776, -304239904, -187310496, -185640304, 514322, 139642816, 160726800, 223222880,
+343002528, 314833440, 268950848, 262911056, 153861296, 52892524, 12884365, -14259291, -112143208, -200613088,
+-239049824, -256209824, -335403136, -255880736, -100100120, 29174102, 28749974, 0, 0, 0,
+0, 0, 0, },
{
8801462,
-1883343, -196495, -1462973, -2813204, -2139431, 2573222, 3369939, 1700270, 2755222, 520228,
--1939715, -264141, 151398, -2012192, -2039573, -3981435, 5708549, -2593624, 4967130, -3507378,
--4341138, 590021, 6983080, -468688, 2850248, -793495, 1972464, 2929168, 2231236, 3717294,
-2377801, -6961605, 403727, -3833795, 1169305, -1810329, -858993, -1358820, 253403, -590558,
--1314797, 52076, -687732, 3553549, 1048509, 379031, 2974265, 2844879, 546535, -1574642,
--1372242, -1493575, 1649804, -103079, 222801, -2730526, 7178501, 3269544, 1732482, -1275605,
--1525787, 3157875, 827318, -269509, 975494, -1576790, 907312, -2250026, 74088, 1873680,
--3071439, -2076617, -1116155, 148176, 403190, 1709934, -7948374, 3591667, -9015673, 1557463,
-460635, 381178, -6212670, -2307471, 1474248, -1489817, 1777580, 2974265, 1707250, -245350,
-2284386, -6976101, -26844, -424128, -361314, 3588445, 5501316, -6128382, -1537061, -3775276,
--1379221, 1978906, 3709778, 488016, 769336, -1613834, -2148021, -1723893, -1411434, -2854543,
-1283122, -2872260, -2056216, 2993055, -2870112, 2116882, 163209, -6862284, -2493766, -3829500,
--1099512, 2758980, -2203318, -690416, -2170569, -2122251, -1627793, 2715493, 4051228, 707596,
-2160369, 1814624, -2469069, -4345433, 2097018, 1852742, -1140314, -3717831, -3279208, 2772402,
-367220, 2095944, 801011, -5626944, -2056216, -2022930, 2958696, 1415729, -5865852, 1745904,
--3164317, -505732, -10730439, 7495255, -4997732, 955630, -447750, -1778653, 5821292, -4675609,
--2989834, 209917, 6150930, -1974611, -60666, -428423, 5148055, -2736431, -7503308, -1538672,
--3710315, -5260261, 510564, -250182, 1216550, 3330210, 5513665, 3410741, 833224, 8107825,
-3430605, 433255, 6010270, 6098854, -119722, -3044595, 592706, 2774012, 2474438, 99858,
--757525, -4467840, -3665755, -1859721, 4952634, 2012729, 8246337, 4556961, 85899, 2741263,
-3637837, 1184337, -4398047, 5378910, -1605244, 2862596, 293132, 1772748, -5273683, -823023,
--1293859, 2151242, -1192390, -2090575, 6663642, -319975, -3892314, 1897302, -2757369, 2933463,
--1188632, 4659503, 4754529, 4507568, 2428267, -3955665, 3458523, -165893, 3766686, 2091112,
-2367064, 19864, -2226941, 2187749, 810138, 579821, 1006096, -8803609, 2734821, -5660767,
-843424, 1657321, 1814087, -2678449, 4544076, 584652, -1768990, -948114, 5323612, 3703336,
--2396592, -3178813, -2521683, 1909113, 3773129, -2488934, -2564096, 558883, -9877351, -219580,
--4231080, -1861868, -4204236, -5689758, -694711, 4766340, 1357747, -4692789, -1196148, 4031901,
-1286343, -2986613, 4831302, -2359011, -6730751, -2274185, 3795677, -1949378, 4495757, 8266202,
-6946573, 656056, -61740, 2103997, -1008244, -5378373, 103616, 1559073, -3556770, 2688113,
--7102266, -1451162, 528818, -3442416, -2245194, 2707977, 6368363, -5337034, -4981625, 2726231,
-3362423, 5428302, 2097018, -3860102, 4960151, 3913789, 14904073, -5622649, -2410014, -825707,
-10777147, -938987, 8178692, -5739687, 7219840, -6908992, -6053757, 1605244, 3477313, -4029753,
--908386, 2241973, -433255, 2885681, -4173098, 5061082, 1891396, -5178120, -99321, 2245731,
-1758252, 1066226, 10122701, 8109972, 6344204, 117038, 4145717, 497142, 1253594, 3118683,
--9175661, -1300301, 5711770, 3783329, 4443144, 8590, -1580548, 2153926, -312996, 11420318,
--1668595, 2017024, 1169842, 662499, -3321084, 6891812, -757525, 7161321, -3884261, -3963718,
-2909304, -2602213, -9441412, -4221953, 1850594, -775242, -6797860, 2005213, -67109, 8897025,
-656056, 909459, -2818036, 3360275, 3063922, -516470, -716723, 7948374, 5420249, 5954436,
--3954591, -4792110, -4576825, 10654203, -8818105, -441308, -9205726, -6151467, -3699041, 7571491,
-4402879, -11134703, -15051176, -5988258, 5084168, 3462818, -2387465, 4815732, -100395, -1559073,
-437550, -8125005, 2222109, -1343788, 527744, 2147484, 411780, -364535, 3177202, 2536178,
--5297842, -5543729, 5825050, -2248952, -2993592, 3235184, -10250476, 2022393, 2060511, -9796284,
-3358128, 9270687, 5834713, 6209449, 1332514, 3205119, 9192841, 1239098, 1745367, -11083163,
-5583995, 7434052, 6535330, 692564, 6652905, -8120710, 7462506, -2844879, -7348689, -12071006,
--32212, -7952669, -5757941, -3243774, -6834904, -18136574, 907849, 70867, -391916, 1804423,
-8773008, 2237678, 3736085, 1210107, -5828808, -280247, 3403762, 1128503, 2962991, -23587960,
-11426760, 1363652, -9243843, 2090575, -1132798, -2814277, -1992328, -5287642, 2640868, -2770791,
-411243, 3258807, 2983392, 10043781, -4243965, -9833328, 5149129, -12436078, -5447093, 1891933,
-1557463, 1287953, 3852586, 4827543, 4121021, -204011, 5498632, 253940, -2376191, 7373922,
-4502200, -2390686, 4316979, -7852274, 14496588, 445066, 2589865, -1478543, -12690555, -2280091,
--4801774, -4503810, 1826972, 10366977, 178778, 338766, -1461900, -2987150, -6884296, 2048163,
--1214939, 3652870, -8628589, 2788508, 4479651, 1911261, -6385006, -2337536, 1633698, 729608,
-5120675, 922881, 17815524, -5158793, -7507066, -8693014, -2467996, 114890, 6582575, -8632347,
--737661, -3690451, 4545149, -12437152, 601832, -2719788, -3322694, 10277320, -3720516, -2855617,
-1973538, 2794413, -8853001, -8965207, -8189966, -7761006, -12426414, 7295002, -7390565, 1788317,
-2658585, 10661719, -2107218, -2991445, 8356396, 1623498, 1533840, -10524280, -6914898, 4594005,
-1898912, 3565360, 5701569, -11087458, -137976, 4146254, 9942849, -527207, 717796, -1967095,
--233539, -7409356, -1554778, -2616172, -13191455, -1500017, 3740917, -7909183, 2971581, -8573292,
--252866, -6091338, -1349694, -2251100, 542240, 9937481, -3228205, -391916, 5188858, -3541738,
-2981244, -9237401, -15606837, -8979166, -4816269, -2786360, 1535451, 9700184, -4942434, 2131378,
-2445984, -8077760, 2472291, -6389301, -2010045, 3092377, 10515154, -2285996, -449361, 2723009,
--30602, -10191421, 10588705, 11098195, -3041911, 1269163, 11639361, -11297911, -10002442, 8950175,
--1796370, 1440962, 8184060, -1310502, -1865090, 8131984, -14308684, 6467147, -355409, 2713346,
-7418483, 7570954, -7866770, 1786170, -10921028, 3690451, -3060164, -972810, -7493644, -171799,
--10878615, 1313186, -9380209, 7030862, -3067144, 1512365, 12474196, 5849209, 5781563, -9457518,
-2140504, 11467563, -2297808, -15754477, 8943196, -1725503, 1935957, -2916820, -7034083, 10786273,
-4174708, 8835285, 2531883, 1484448, -6711424, -8966281, 3703336, 4562329, 5005248, 6387153,
-14521821, -199179, -10594074, -6854231, 8872329, -926639, -9088688, -2158221, -275415, -2225330,
--11676942, 562104, 1795296, 3381213, -4308926, 7288560, -635655, 1068373, 8588324, 8034810,
--10187126, 11531450, -2817499, 12206297, -10300405, 8983998, 834297, -1162326, 15266461, -8260296,
-754304, -8025147, -2499671, 23332410, 11192148, 4796405, 3244311, 6491306, -3917547, -234076,
--20047834, 3491272, -981937, -8808441, 9390946, 6949794, -442382, 1491964, -11637214, 9922448,
--5506685, 10550050, 6914898, 5535676, -8378408, -1659468, -7061463, 10122701, 2257005, -3968550,
-18192408, 8546448, -2178085, 758599, -15276662, 2375117, 601832, 11852499, -5508296, -15619722,
--2743947, -4453344, -3081639, -21981642, -10940355, -23390392, -11895986, -8451422, 2681670, -5971615,
-10927471, 1260573, -12561706, 7492034, -8390755, 11830487, -10546292, -8537858, 6244346, 10697153,
-10526965, 329639, -9549860, -7174206, 5122822, -15169824, -17877264, -12092480, -2405719, -963683,
--3003256, 3329674, 5397164, 3565897, -806917, 1577327, -6246493, 2840584, -11851425, -16088411,
--358093, 11064909, 1207960, -4864588, 8558259, 4866198, 8239358, 14648523, 1090385, -5457293,
--10712722, -8552354, 3546032, -9700184, -7195681, 1595044, -8099235, -16394427, -9606231, -1591822,
--2860448, 2935073, -4595615, 7945690, 1419487, 2550137, 10879152, -2678449, 250182, 2022393,
--10807748, 10537702, 599685, -11253351, -18433462, 3549254, 168041, -13267691, 11732777, 7697119,
--13037373, 3023657, 9482214, 5312338, 1289564, 8234526, -5990943, -4717485, -1214402, -6165963,
--10208600, 12787728, -14677514, -2659122, 2732673, -234076, 18907520, -20478940, 2547989, -4450123,
--3968550, 3050501, -1646046, 2463701, -4757213, -11759620, 9257265, -20785494, -14919106, 10040560,
--1072131, -18988588, 8858370, -11361262, 20248086, 3559991, -27966680, -4093104, 1927367, -7530152,
-1501091, 4166118, 9168145, 7716983, -16470126, -1308354, 938450, -3911642, -15133317, -2865280,
--3571265, -5618891, -4990215, -817654, 541703, 11810623, 13066364, -4816806, 6792491, 5731097,
-5653788, 12964896, -357556, 3062312, -16142635, -5941551, 4975720, -3652333, 7012071, 18054432,
-2214056, -16824460, -36824512, -603980, -11722576, 9804873, -7398081, -4174708, -7676181, -20055350,
-7980586, 25799868, 969052, 6503118, -21145198, 3948686, -2935610, -9494025, 1730335, 9921911,
-4564477, 8125005, -9552544, 13238700, 6906308, -14565308, -23190140, -118648, -16962436, -39697844,
--25130390, 17860622, 14298483, 23447838, -262530, 9220758, 2095407, 7401840, -522375, 4788889,
--10665478, -12466143, -8023536, -11134703, -7508677, -7895224, 9251896, 22701050, 4597763, -27461484,
--6916508, 4981089, -7714298, 6911676, -16182363, -1076963, -973884, 1144609, 7218767, 6083821,
-583579, -1613834, -4048544, 6736120, 11921755, -9652939, -16103443, 10703595, 4293894, 13955959,
-5526013, 20136418, -14309220, -4286378, 11835856, 19302120, 15533823, 10233296, 3773129, -3397319,
-372052, -1684701, -841814, 7241315, -25487410, 13981192, -2956548, 4440996, -2705830, 19567872,
--6832756, 759136, -5304822, 12947179, 8731132, -19661824, 13638669, -16393353, -2338610, -7445863,
--10431402, 9924596, 60130, -25675852, -3426847, -143345, 22280680, -24150602, -248034, -13606993,
--38875896, -4353486, -14135274, -30666604, 6525666, 66035, -5660767, 2203855, 16991428, -824097,
--17201880, 6276558, 1096290, -5411122, -3830037, -2903935, 1300301, 19385334, -3875134, -489626,
-9140764, 6638946, -2303176, 9480067, 8963060, -3899294, -3534758, -7513509, 11171747, -2371896,
--17832168, 2971581, -665720, 6467684, 24634858, -15912317, -25161530, -16110959, -6896644, 3686156,
-9251896, 4677757, 19006304, 9247601, -12179990, -7376070, -16837882, 15300821, 10193031, 1730335,
-4101694, -10094247, 1986422, -10712185, 19450296, 18053896, 2356863, -8546985, -3540127, 1626719,
-18067854, 33313914, 22035866, -3488050, -5932961, 47782, 12462384, 4094715, 11966316, 12914967,
--10797548, -1349157, -21802328, -14087493, 8704288, 10142565, -17408040, -501974, -8182987, 16160351,
--14177687, 4843113, 3119757, 29945048, -15707232, -3331284, -16205985, -2093260, -15988016, -13087302,
--9022116, 7356205, -17329120, -12002823, -18993956, -3462818, -1400696, -4498442, -7641821, -21227876,
-7751342, -14446123, 8313983, -15232102, 22821308, 5153961, 11182484, -2148558, -18172544, 12607876,
-7908646, -4729296, 12397960, 16906066, -6311455, -19419694, -9729175, 30800284, -10517301, 1154809,
-2516314, -2744484, 8106751, 20804822, 5106716, 10149008, -4182225, 15608985, 2022393, 12843563,
-5056250, 5982353, 1556926, 3580392, 24703578, 9512816, 56512644, -30579630, 23255638, 32778116,
--5852967, 3747896, 17541184, -7857106, -1067299, 28723130, 12241194, 113280, 15738908, -82141,
-29037738, 32646046, -871878, 23256712, 22988812, -2528662, 9546639, -25665114, -9070434, 20626580,
-557809, 20395190, 28451474, 23710366, -6563247, 15167677, -26779658, -40115532, -18464064, -15533286,
-7712151, -751619, 8323110, 10162966, 21790516, 17568026, 4490925, -19362250, -4211753, 18075370,
-4021700, -9735080, 9975062, 25271050, -5014911, 8528194, -23208930, 9690520, -18847928, -4813048,
--12856985, -22049826, 10982768, 1349694, 4051765, 26035018, -16678432, -15862388, 6779069, 27171036,
--24004036, -14003741, 5952288, -6521371, 35265976, 28773596, -29964376, -9520869, -24458766, 1951526,
-19981798, -9802726, -19681150, -6120329, -2214056, 7181186, -23200340, 6586333, 34968548, 5262946,
--30212410, -36642512, 27807766, -34165392, -36450852, -12618077, 4695473, -8589935, 4379793, 1587527,
--37418828, -22740778, -28578712, 4802847, 12928388, 2904472, 20892868, 18038326, 27038966, 6532109,
-29741038, 11582990, 18640158, -12501576, -5540508, -12602508, -25795036, -20031728, -38995080, -24939264,
--8644159, -24604794, 3454764, -3650722, -1874753, 6101001, 6134824, 481573, 16995722, -7553237,
--16137266, 18669686, 1004486, -31889596, -13316546, -6326487, -35377644, -29528438, -26217018, -1039382,
-11699491, -158914, -13775034, -5287105, 14061186, 5159867, 34141768, 2539400, -46352896, -19443854,
--7937100, 3180423, 7462506, -9724343, -11824582, 12495134, -24945170, -9677098, -19604916, 10299332,
--39129300, -30706332, -31328566, -32706712, 3276523, -21937082, -9004399, -34676492, 16458852, 37723772,
-2510409, 17250736, -13398687, -9883257, 25905096, 10404558, 26076358, -43882756, 18227842, 32416266,
--3899294, 37442988, -20746840, -57641144, -30587146, -504659, -6640557, 6305012, -21559662, 19891068,
-27047020, -25190520, 21205328, -13689135, -18118320, -39900248, -17621178, -22757422, -16532940, -18066780,
-16727287, 3158412, -37410240, -45509472, 33260764, 8490613, 10867341, -10059350, 1104344, -11664057,
--1437740, 11472931, 14194330, 15541339, 36998460, 2348273, -30001420, 38989712, -6153615, -8487929,
--19807316, 17398376, -33463700, -19283866, 15122580, -14430016, -26860188, -28489054, -29424820, -3620121,
-585189, 5136244, -11381126, 35229468, 24511916, 18254, -19517406, -24411520, -35344360, 11059004,
-2391223, -2512556, -7721815, 49095236, -2127620, -8439074, 13621489, 14622216, -36165772, 27870042,
-18311594, 54825256, 24395952, 1727114, -17644800, 26397406, 140123, 2294586, -11869142, 24082956,
--26867168, 20435992, 19921668, 20669530, 10492068, -7117298, 27622008, 34089156, -6182606, 14239427,
--20210506, 34245384, 15263777, 11609297, -20891258, -47169480, 10251550, -14335527, -9987410, -19069118,
--23361938, 14766634, 7464653, -11677479, 3634079, 1203128, -11846057, -57884348, -2626373, -12310450,
--4919885, -948114, 41869488, 27759984, -12517682, 10361072, -25759066, 2788508, 21298206, -31005368,
--27288612, -23784456, 38212860, -26986354, 9006010, 29141890, -38611220, -37782292, 35667020, 26466126,
-30249454, 37476276, 15805480, -50180788, 12792560, 13221520, -2498060, 78604344, -6289443, -14182519,
--34020436, -33870112, 18698676, -32354526, 21883932, 1163936, 25046638, -7883950, 13600551, 41763724,
-4947266, -32806570, 50597400, 13395466, -1646583, 36403068, 18945638, 29713658, 12208445, -40563280,
--7574175, -14282377, 21451214, 50349900, -29329794, 9292162, -13181255, 23161148, 26774290, -31685584,
-29309394, -25211458, -22107808, 13430363, 24465744, 2230699, 9323837, 18909130, -24931212, 24808804,
-3681324, 29976188, -3264175, -6480569, 11259257, 43746928, -17268990, 35506496, -14776835, 7938174,
-10936597, 35377644, -81604, -1364726, 13816373, 52719648, 5407901, -39852464, -1287953, -48213156,
-31376884, 653909, 82158432, 17585206, -21324512, -6800544, 19834158, -17570174, 30296700, 52240224,
-38001872, 531502, 17479980, 22108344, -234613, -25222196, -900869, -6915434, -81031000, 50061064,
-41704668, 32771674, 11785390, -40563820, 32202592, -18741090, 32720134, -28560458, 5573257, 16143708,
--14481019, 2996277, 6586333, -7140920, -15214385, -28748364, 45683956, -9172976, -8442295, -14081587,
--2103460, -5189931, 15086073, -29313152, -8399882, -17899276, 6862284, -17956184, 18657874, 1081258,
-9734007, -19832012, -38165616, 3110630, -27856622, -27990838, 13484587, -21111374, -18871012, 38565584,
--13590887, -20221780, 2908230, -20784420, 10581726, 15608448, -3996467, -16593069, -5247913, 12319577,
-9415105, -6547141, -734439, 34533148, -5789616, -18357228, -25618944, -1793149, -11200201, -36684928,
-36315024, 14530948, -44270376, 29351806, -1842541, -16530792, 85505280, 50136764, 39565240, 22942642,
-12405476, -18194556, 3776350, 11351062, 10992969, 5586142, 38842612, 9705552, -8486855, -18103824,
--68838128, -38284800, 66773856, 9198209, 22436910, 12569759, -15531675, 13040058, 19417010, 5396627,
--1045288, -15187541, -1938641, 5248450, -6587943, -4923107, 3644280, 8137353, 20080582, -12570832,
-8972187, 1493038, 16227460, -4708358, 3957276, 5737003, -16660715, 14986752, 3263102, 4210142,
-6095633, 5941551, -10177462, 12530030, -8625368, 3062849, 12386149, -5588290, 12178380, -4224637,
-15101105, 11491722, 7395397, -16889422, 14114873, 10448582, 9026948, 22260278, -19799800, -1339493,
-938450, -3984119, 7549479, -10370199, -16145319, 12283606, 14643154, 7102266, -424128, 3175055,
--599148, 7263864, -4778151, 3056406, -11528766, 11865921, -18596134, 18937048, 11943767, -6340446,
-1195075, 7719667, 2094870, 6803228, 1759863, 552977, 1149441, 12639552, -52721796, -122738352,
--19666118, 71656696, 65118684, 160322544, 83769576, -43326556, -13273060, -89010512, -150811872, -10590852,
--68512784, -9746355, 109944720, 46716896, 84972168, 130108520, -15077483, -19344532, -66100084, -112850800,
--89385248, -6057515, -33487324, -13050795, 93700080, 29335164, 61030948, 110219064, 18326626, -818191,
-11682311, -67638752, -101563088, 17085380, -104933568, -69267088, 23667418, -11036455, 17445620, 134941968,
-15909096, 51410760, 110976584, -22559852, 3867618, 24100136, -106128640, -89481888, -30991410, -121936272,
--46433964, 14818174, 23050016, 82888040, 118359632, 83191904, 59947544, 50856172, -18800146, -71845136,
--57461292, -88676576, -91294896, -40419400, -22210886, -261456, 78885664, 91531120, 30698278, 71353368,
-23435490, -23566486, 18785650, -49638012, -52439404, -7990787, -8610336, 0, 0, 0,
-0, 0, 0, },
+1883343, -196495, -1462973, -2813204, -2139431, 2573222, 3369939, 1700270, 2755222, 520228,
+-1939715, -264141, 151398, -2012192, -2039573, -3981435, 5708549, -2593624, 4967130, -3507378,
+-4341138, 590021, 6983080, -468688, 2850248, -793495, 1972464, 2929168, 2231236, 3717294,
+2377801, -6961605, 403727, -3833795, 1169305, -1810329, -858993, -1358820, 253403, -590558,
+-1314797, 52076, -687732, 3553549, 1048509, 379031, 2974265, 2844879, 546535, -1574642,
+-1372242, -1493575, 1649804, -103079, 222801, -2730526, 7178501, 3269544, 1732482, -1275605,
+-1525787, 3157875, 827318, -269509, 975494, -1576790, 907312, -2250026, 74088, 1873680,
+-3071439, -2076617, -1116155, 148176, 403190, 1709934, -7948374, 3591667, -9015673, 1557463,
+460635, 381178, -6212670, -2307471, 1474248, -1489817, 1777580, 2974265, 1707250, -245350,
+2284386, -6976101, -26844, -424128, -361314, 3588445, 5501316, -6128382, -1537061, -3775276,
+-1379221, 1978906, 3709778, 488016, 769336, -1613834, -2148021, -1723893, -1411434, -2854543,
+1283122, -2872260, -2056216, 2993055, -2870112, 2116882, 163209, -6862284, -2493766, -3829500,
+-1099512, 2758980, -2203318, -690416, -2170569, -2122251, -1627793, 2715493, 4051228, 707596,
+2160369, 1814624, -2469069, -4345433, 2097018, 1852742, -1140314, -3717831, -3279208, 2772402,
+367220, 2095944, 801011, -5626944, -2056216, -2022930, 2958696, 1415729, -5865852, 1745904,
+-3164317, -505732, -10730439, 7495255, -4997732, 955630, -447750, -1778653, 5821292, -4675609,
+-2989834, 209917, 6150930, -1974611, -60666, -428423, 5148055, -2736431, -7503308, -1538672,
+-3710315, -5260261, 510564, -250182, 1216550, 3330210, 5513665, 3410741, 833224, 8107825,
+3430605, 433255, 6010270, 6098854, -119722, -3044595, 592706, 2774012, 2474438, 99858,
+-757525, -4467840, -3665755, -1859721, 4952634, 2012729, 8246337, 4556961, 85899, 2741263,
+3637837, 1184337, -4398047, 5378910, -1605244, 2862596, 293132, 1772748, -5273683, -823023,
+-1293859, 2151242, -1192390, -2090575, 6663642, -319975, -3892314, 1897302, -2757369, 2933463,
+-1188632, 4659503, 4754529, 4507568, 2428267, -3955665, 3458523, -165893, 3766686, 2091112,
+2367064, 19864, -2226941, 2187749, 810138, 579821, 1006096, -8803609, 2734821, -5660767,
+843424, 1657321, 1814087, -2678449, 4544076, 584652, -1768990, -948114, 5323612, 3703336,
+-2396592, -3178813, -2521683, 1909113, 3773129, -2488934, -2564096, 558883, -9877351, -219580,
+-4231080, -1861868, -4204236, -5689758, -694711, 4766340, 1357747, -4692789, -1196148, 4031901,
+1286343, -2986613, 4831302, -2359011, -6730751, -2274185, 3795677, -1949378, 4495757, 8266202,
+6946573, 656056, -61740, 2103997, -1008244, -5378373, 103616, 1559073, -3556770, 2688113,
+-7102266, -1451162, 528818, -3442416, -2245194, 2707977, 6368363, -5337034, -4981625, 2726231,
+3362423, 5428302, 2097018, -3860102, 4960151, 3913789, 14904073, -5622649, -2410014, -825707,
+10777147, -938987, 8178692, -5739687, 7219840, -6908992, -6053757, 1605244, 3477313, -4029753,
+-908386, 2241973, -433255, 2885681, -4173098, 5061082, 1891396, -5178120, -99321, 2245731,
+1758252, 1066226, 10122701, 8109972, 6344204, 117038, 4145717, 497142, 1253594, 3118683,
+-9175661, -1300301, 5711770, 3783329, 4443144, 8590, -1580548, 2153926, -312996, 11420318,
+-1668595, 2017024, 1169842, 662499, -3321084, 6891812, -757525, 7161321, -3884261, -3963718,
+2909304, -2602213, -9441412, -4221953, 1850594, -775242, -6797860, 2005213, -67109, 8897025,
+656056, 909459, -2818036, 3360275, 3063922, -516470, -716723, 7948374, 5420249, 5954436,
+-3954591, -4792110, -4576825, 10654203, -8818105, -441308, -9205726, -6151467, -3699041, 7571491,
+4402879, -11134703, -15051176, -5988258, 5084168, 3462818, -2387465, 4815732, -100395, -1559073,
+437550, -8125005, 2222109, -1343788, 527744, 2147484, 411780, -364535, 3177202, 2536178,
+-5297842, -5543729, 5825050, -2248952, -2993592, 3235184, -10250476, 2022393, 2060511, -9796284,
+3358128, 9270687, 5834713, 6209449, 1332514, 3205119, 9192841, 1239098, 1745367, -11083163,
+5583995, 7434052, 6535330, 692564, 6652905, -8120710, 7462506, -2844879, -7348689, -12071006,
+-32212, -7952669, -5757941, -3243774, -6834904, -18136574, 907849, 70867, -391916, 1804423,
+8773008, 2237678, 3736085, 1210107, -5828808, -280247, 3403762, 1128503, 2962991, -23587960,
+11426760, 1363652, -9243843, 2090575, -1132798, -2814277, -1992328, -5287642, 2640868, -2770791,
+411243, 3258807, 2983392, 10043781, -4243965, -9833328, 5149129, -12436078, -5447093, 1891933,
+1557463, 1287953, 3852586, 4827543, 4121021, -204011, 5498632, 253940, -2376191, 7373922,
+4502200, -2390686, 4316979, -7852274, 14496588, 445066, 2589865, -1478543, -12690555, -2280091,
+-4801774, -4503810, 1826972, 10366977, 178778, 338766, -1461900, -2987150, -6884296, 2048163,
+-1214939, 3652870, -8628589, 2788508, 4479651, 1911261, -6385006, -2337536, 1633698, 729608,
+5120675, 922881, 17815524, -5158793, -7507066, -8693014, -2467996, 114890, 6582575, -8632347,
+-737661, -3690451, 4545149, -12437152, 601832, -2719788, -3322694, 10277320, -3720516, -2855617,
+1973538, 2794413, -8853001, -8965207, -8189966, -7761006, -12426414, 7295002, -7390565, 1788317,
+2658585, 10661719, -2107218, -2991445, 8356396, 1623498, 1533840, -10524280, -6914898, 4594005,
+1898912, 3565360, 5701569, -11087458, -137976, 4146254, 9942849, -527207, 717796, -1967095,
+-233539, -7409356, -1554778, -2616172, -13191455, -1500017, 3740917, -7909183, 2971581, -8573292,
+-252866, -6091338, -1349694, -2251100, 542240, 9937481, -3228205, -391916, 5188858, -3541738,
+2981244, -9237401, -15606837, -8979166, -4816269, -2786360, 1535451, 9700184, -4942434, 2131378,
+2445984, -8077760, 2472291, -6389301, -2010045, 3092377, 10515154, -2285996, -449361, 2723009,
+-30602, -10191421, 10588705, 11098195, -3041911, 1269163, 11639361, -11297911, -10002442, 8950175,
+-1796370, 1440962, 8184060, -1310502, -1865090, 8131984, -14308684, 6467147, -355409, 2713346,
+7418483, 7570954, -7866770, 1786170, -10921028, 3690451, -3060164, -972810, -7493644, -171799,
+-10878615, 1313186, -9380209, 7030862, -3067144, 1512365, 12474196, 5849209, 5781563, -9457518,
+2140504, 11467563, -2297808, -15754477, 8943196, -1725503, 1935957, -2916820, -7034083, 10786273,
+4174708, 8835285, 2531883, 1484448, -6711424, -8966281, 3703336, 4562329, 5005248, 6387153,
+14521821, -199179, -10594074, -6854231, 8872329, -926639, -9088688, -2158221, -275415, -2225330,
+-11676942, 562104, 1795296, 3381213, -4308926, 7288560, -635655, 1068373, 8588324, 8034810,
+-10187126, 11531450, -2817499, 12206297, -10300405, 8983998, 834297, -1162326, 15266461, -8260296,
+754304, -8025147, -2499671, 23332410, 11192148, 4796405, 3244311, 6491306, -3917547, -234076,
+-20047834, 3491272, -981937, -8808441, 9390946, 6949794, -442382, 1491964, -11637214, 9922448,
+-5506685, 10550050, 6914898, 5535676, -8378408, -1659468, -7061463, 10122701, 2257005, -3968550,
+18192408, 8546448, -2178085, 758599, -15276662, 2375117, 601832, 11852499, -5508296, -15619722,
+-2743947, -4453344, -3081639, -21981642, -10940355, -23390392, -11895986, -8451422, 2681670, -5971615,
+10927471, 1260573, -12561706, 7492034, -8390755, 11830487, -10546292, -8537858, 6244346, 10697153,
+10526965, 329639, -9549860, -7174206, 5122822, -15169824, -17877264, -12092480, -2405719, -963683,
+-3003256, 3329674, 5397164, 3565897, -806917, 1577327, -6246493, 2840584, -11851425, -16088411,
+-358093, 11064909, 1207960, -4864588, 8558259, 4866198, 8239358, 14648523, 1090385, -5457293,
+-10712722, -8552354, 3546032, -9700184, -7195681, 1595044, -8099235, -16394427, -9606231, -1591822,
+-2860448, 2935073, -4595615, 7945690, 1419487, 2550137, 10879152, -2678449, 250182, 2022393,
+-10807748, 10537702, 599685, -11253351, -18433462, 3549254, 168041, -13267691, 11732777, 7697119,
+-13037373, 3023657, 9482214, 5312338, 1289564, 8234526, -5990943, -4717485, -1214402, -6165963,
+-10208600, 12787728, -14677514, -2659122, 2732673, -234076, 18907520, -20478940, 2547989, -4450123,
+-3968550, 3050501, -1646046, 2463701, -4757213, -11759620, 9257265, -20785494, -14919106, 10040560,
+-1072131, -18988588, 8858370, -11361262, 20248086, 3559991, -27966680, -4093104, 1927367, -7530152,
+1501091, 4166118, 9168145, 7716983, -16470126, -1308354, 938450, -3911642, -15133317, -2865280,
+-3571265, -5618891, -4990215, -817654, 541703, 11810623, 13066364, -4816806, 6792491, 5731097,
+5653788, 12964896, -357556, 3062312, -16142635, -5941551, 4975720, -3652333, 7012071, 18054432,
+2214056, -16824460, -36824512, -603980, -11722576, 9804873, -7398081, -4174708, -7676181, -20055350,
+7980586, 25799868, 969052, 6503118, -21145198, 3948686, -2935610, -9494025, 1730335, 9921911,
+4564477, 8125005, -9552544, 13238700, 6906308, -14565308, -23190140, -118648, -16962436, -39697844,
+-25130390, 17860622, 14298483, 23447838, -262530, 9220758, 2095407, 7401840, -522375, 4788889,
+-10665478, -12466143, -8023536, -11134703, -7508677, -7895224, 9251896, 22701050, 4597763, -27461484,
+-6916508, 4981089, -7714298, 6911676, -16182363, -1076963, -973884, 1144609, 7218767, 6083821,
+583579, -1613834, -4048544, 6736120, 11921755, -9652939, -16103443, 10703595, 4293894, 13955959,
+5526013, 20136418, -14309220, -4286378, 11835856, 19302120, 15533823, 10233296, 3773129, -3397319,
+372052, -1684701, -841814, 7241315, -25487410, 13981192, -2956548, 4440996, -2705830, 19567872,
+-6832756, 759136, -5304822, 12947179, 8731132, -19661824, 13638669, -16393353, -2338610, -7445863,
+-10431402, 9924596, 60130, -25675852, -3426847, -143345, 22280680, -24150602, -248034, -13606993,
+-38875896, -4353486, -14135274, -30666604, 6525666, 66035, -5660767, 2203855, 16991428, -824097,
+-17201880, 6276558, 1096290, -5411122, -3830037, -2903935, 1300301, 19385334, -3875134, -489626,
+9140764, 6638946, -2303176, 9480067, 8963060, -3899294, -3534758, -7513509, 11171747, -2371896,
+-17832168, 2971581, -665720, 6467684, 24634858, -15912317, -25161530, -16110959, -6896644, 3686156,
+9251896, 4677757, 19006304, 9247601, -12179990, -7376070, -16837882, 15300821, 10193031, 1730335,
+4101694, -10094247, 1986422, -10712185, 19450296, 18053896, 2356863, -8546985, -3540127, 1626719,
+18067854, 33313914, 22035866, -3488050, -5932961, 47782, 12462384, 4094715, 11966316, 12914967,
+-10797548, -1349157, -21802328, -14087493, 8704288, 10142565, -17408040, -501974, -8182987, 16160351,
+-14177687, 4843113, 3119757, 29945048, -15707232, -3331284, -16205985, -2093260, -15988016, -13087302,
+-9022116, 7356205, -17329120, -12002823, -18993956, -3462818, -1400696, -4498442, -7641821, -21227876,
+7751342, -14446123, 8313983, -15232102, 22821308, 5153961, 11182484, -2148558, -18172544, 12607876,
+7908646, -4729296, 12397960, 16906066, -6311455, -19419694, -9729175, 30800284, -10517301, 1154809,
+2516314, -2744484, 8106751, 20804822, 5106716, 10149008, -4182225, 15608985, 2022393, 12843563,
+5056250, 5982353, 1556926, 3580392, 24703578, 9512816, 56512644, -30579630, 23255638, 32778116,
+-5852967, 3747896, 17541184, -7857106, -1067299, 28723130, 12241194, 113280, 15738908, -82141,
+29037738, 32646046, -871878, 23256712, 22988812, -2528662, 9546639, -25665114, -9070434, 20626580,
+557809, 20395190, 28451474, 23710366, -6563247, 15167677, -26779658, -40115532, -18464064, -15533286,
+7712151, -751619, 8323110, 10162966, 21790516, 17568026, 4490925, -19362250, -4211753, 18075370,
+4021700, -9735080, 9975062, 25271050, -5014911, 8528194, -23208930, 9690520, -18847928, -4813048,
+-12856985, -22049826, 10982768, 1349694, 4051765, 26035018, -16678432, -15862388, 6779069, 27171036,
+-24004036, -14003741, 5952288, -6521371, 35265976, 28773596, -29964376, -9520869, -24458766, 1951526,
+19981798, -9802726, -19681150, -6120329, -2214056, 7181186, -23200340, 6586333, 34968548, 5262946,
+-30212410, -36642512, 27807766, -34165392, -36450852, -12618077, 4695473, -8589935, 4379793, 1587527,
+-37418828, -22740778, -28578712, 4802847, 12928388, 2904472, 20892868, 18038326, 27038966, 6532109,
+29741038, 11582990, 18640158, -12501576, -5540508, -12602508, -25795036, -20031728, -38995080, -24939264,
+-8644159, -24604794, 3454764, -3650722, -1874753, 6101001, 6134824, 481573, 16995722, -7553237,
+-16137266, 18669686, 1004486, -31889596, -13316546, -6326487, -35377644, -29528438, -26217018, -1039382,
+11699491, -158914, -13775034, -5287105, 14061186, 5159867, 34141768, 2539400, -46352896, -19443854,
+-7937100, 3180423, 7462506, -9724343, -11824582, 12495134, -24945170, -9677098, -19604916, 10299332,
+-39129300, -30706332, -31328566, -32706712, 3276523, -21937082, -9004399, -34676492, 16458852, 37723772,
+2510409, 17250736, -13398687, -9883257, 25905096, 10404558, 26076358, -43882756, 18227842, 32416266,
+-3899294, 37442988, -20746840, -57641144, -30587146, -504659, -6640557, 6305012, -21559662, 19891068,
+27047020, -25190520, 21205328, -13689135, -18118320, -39900248, -17621178, -22757422, -16532940, -18066780,
+16727287, 3158412, -37410240, -45509472, 33260764, 8490613, 10867341, -10059350, 1104344, -11664057,
+-1437740, 11472931, 14194330, 15541339, 36998460, 2348273, -30001420, 38989712, -6153615, -8487929,
+-19807316, 17398376, -33463700, -19283866, 15122580, -14430016, -26860188, -28489054, -29424820, -3620121,
+585189, 5136244, -11381126, 35229468, 24511916, 18254, -19517406, -24411520, -35344360, 11059004,
+2391223, -2512556, -7721815, 49095236, -2127620, -8439074, 13621489, 14622216, -36165772, 27870042,
+18311594, 54825256, 24395952, 1727114, -17644800, 26397406, 140123, 2294586, -11869142, 24082956,
+-26867168, 20435992, 19921668, 20669530, 10492068, -7117298, 27622008, 34089156, -6182606, 14239427,
+-20210506, 34245384, 15263777, 11609297, -20891258, -47169480, 10251550, -14335527, -9987410, -19069118,
+-23361938, 14766634, 7464653, -11677479, 3634079, 1203128, -11846057, -57884348, -2626373, -12310450,
+-4919885, -948114, 41869488, 27759984, -12517682, 10361072, -25759066, 2788508, 21298206, -31005368,
+-27288612, -23784456, 38212860, -26986354, 9006010, 29141890, -38611220, -37782292, 35667020, 26466126,
+30249454, 37476276, 15805480, -50180788, 12792560, 13221520, -2498060, 78604344, -6289443, -14182519,
+-34020436, -33870112, 18698676, -32354526, 21883932, 1163936, 25046638, -7883950, 13600551, 41763724,
+4947266, -32806570, 50597400, 13395466, -1646583, 36403068, 18945638, 29713658, 12208445, -40563280,
+-7574175, -14282377, 21451214, 50349900, -29329794, 9292162, -13181255, 23161148, 26774290, -31685584,
+29309394, -25211458, -22107808, 13430363, 24465744, 2230699, 9323837, 18909130, -24931212, 24808804,
+3681324, 29976188, -3264175, -6480569, 11259257, 43746928, -17268990, 35506496, -14776835, 7938174,
+10936597, 35377644, -81604, -1364726, 13816373, 52719648, 5407901, -39852464, -1287953, -48213156,
+31376884, 653909, 82158432, 17585206, -21324512, -6800544, 19834158, -17570174, 30296700, 52240224,
+38001872, 531502, 17479980, 22108344, -234613, -25222196, -900869, -6915434, -81031000, 50061064,
+41704668, 32771674, 11785390, -40563820, 32202592, -18741090, 32720134, -28560458, 5573257, 16143708,
+-14481019, 2996277, 6586333, -7140920, -15214385, -28748364, 45683956, -9172976, -8442295, -14081587,
+-2103460, -5189931, 15086073, -29313152, -8399882, -17899276, 6862284, -17956184, 18657874, 1081258,
+9734007, -19832012, -38165616, 3110630, -27856622, -27990838, 13484587, -21111374, -18871012, 38565584,
+-13590887, -20221780, 2908230, -20784420, 10581726, 15608448, -3996467, -16593069, -5247913, 12319577,
+9415105, -6547141, -734439, 34533148, -5789616, -18357228, -25618944, -1793149, -11200201, -36684928,
+36315024, 14530948, -44270376, 29351806, -1842541, -16530792, 85505280, 50136764, 39565240, 22942642,
+12405476, -18194556, 3776350, 11351062, 10992969, 5586142, 38842612, 9705552, -8486855, -18103824,
+-68838128, -38284800, 66773856, 9198209, 22436910, 12569759, -15531675, 13040058, 19417010, 5396627,
+-1045288, -15187541, -1938641, 5248450, -6587943, -4923107, 3644280, 8137353, 20080582, -12570832,
+8972187, 1493038, 16227460, -4708358, 3957276, 5737003, -16660715, 14986752, 3263102, 4210142,
+6095633, 5941551, -10177462, 12530030, -8625368, 3062849, 12386149, -5588290, 12178380, -4224637,
+15101105, 11491722, 7395397, -16889422, 14114873, 10448582, 9026948, 22260278, -19799800, -1339493,
+938450, -3984119, 7549479, -10370199, -16145319, 12283606, 14643154, 7102266, -424128, 3175055,
+-599148, 7263864, -4778151, 3056406, -11528766, 11865921, -18596134, 18937048, 11943767, -6340446,
+1195075, 7719667, 2094870, 6803228, 1759863, 552977, 1149441, 12639552, -52721796, -122738352,
+-19666118, 71656696, 65118684, 160322544, 83769576, -43326556, -13273060, -89010512, -150811872, -10590852,
+-68512784, -9746355, 109944720, 46716896, 84972168, 130108520, -15077483, -19344532, -66100084, -112850800,
+-89385248, -6057515, -33487324, -13050795, 93700080, 29335164, 61030948, 110219064, 18326626, -818191,
+11682311, -67638752, -101563088, 17085380, -104933568, -69267088, 23667418, -11036455, 17445620, 134941968,
+15909096, 51410760, 110976584, -22559852, 3867618, 24100136, -106128640, -89481888, -30991410, -121936272,
+-46433964, 14818174, 23050016, 82888040, 118359632, 83191904, 59947544, 50856172, -18800146, -71845136,
+-57461292, -88676576, -91294896, -40419400, -22210886, -261456, 78885664, 91531120, 30698278, 71353368,
+23435490, -23566486, 18785650, -49638012, -52439404, -7990787, -8610336, 0, 0, 0,
+0, 0, 0, },
},
{
{
7561827,
-1618666, -2086280, -746787, -6973417, -3740917, 1630477, -356482, -369367, 6088116, 5115306,
-1120987, -1479616, -1249299, -3369402, 3058017, 338766, -2038499, -1047972, -1949915, -907312,
--500901, -4602595, -4224101, 3770981, 3504693, 1509681, -4344897, -2013266, -1016297, 1904281,
--1606855, -2148558, -381715, 188442, 901406, 2044404, 410706, 2925410, -3751654, -3474629,
--4669703, -3411815, -1887101, 437550, -613107, -647466, -1973538, 718333, -550293, 396748,
-3310346, 2478196, -1255204, -2485712, -1812476, 970663, 764504, 326418, -275952, 6504728,
-3992172, 630823, -1284732, 319975, -3777961, 233539, -250182, 1034013, -593779, -2095944,
-3583613, -4563403, 215822, 440234, -448824, -4526359, 4527433, 1053878, -2632815, -1228361,
--5730023, -1608465, 4591857, -2592550, -1927904, 1347009, -849330, -278636, 180926, -1602023,
--1324461, 5603322, 2654827, -794032, 158377, -947577, -1825898, 686658, 1913408, 3040300,
--928250, 1102196, 1319629, -5147519, -1680406, -108448, -1137093, 2997887, 143881, -1161789,
-2646237, -2225867, 797253, 4225174, -2548526, 172336, 426812, 3180423, -1423245, 4424353,
--6585796, -2452426, 2626909, -1385127, -5618354, 274878, 912681, 1693291, 1674500, -712965,
--2542084, 71404, -2334315, -1584306, 417149, 2550137, 2252174, -3784940, 2949569, -4139812,
-3285113, 17180, 2826625, -1417339, -2887829, -1375463, 1741609, -676994, -935766, -955093,
-2390686, -3439195, -15290084, 5016522, -5557151, -2218888, -4547834, -4678293, 2660195, -1566589,
--3939022, -2129230, 5374615, 7964480, -4351339, -1635846, -374736, -5757941, -5382131, 389768,
--527744, 3492882, 1203128, 2596308, -2279017, -1460289, -2957085, 820876, 5177046, 2214056,
-1033477, -3340948, 2552821, 738198, 1580548, -2190433, 235149, 736050, 1204202, -2968896,
--2101313, 779537, -4006668, -4181151, 1844152, 3124052, -3475166, -1810329, -1292248, 226560,
-3221762, 2504503, 1183800, 448824, 8220568, 3161633, -2461016, 3134789, 2369211, -2285996,
-3965866, -1458141, -821949, -48855, -1516124, 3384434, -1743757, 870805, 2257005, 1624571,
--2805151, 1174674, 838592, 594853, -733366, -1524177, -216359, 4741107, 894964, 2075543,
-11718818, 4722317, -727460, 611496, 2749316, 1478006, -703838, -4943508, 245887, 4546223,
--4493610, -426276, -8506183, 2340220, 3581466, 319975, -1962800, 6366216, 4497905, -3958886,
-2040110, 325881, -3463891, 5691906, 3173981, -275415, 2348810, 5428839, -1568737, -1012539,
-444529, 122943, 216359, 1373853, 6645925, 1413044, 1069447, -10507101, -468151, 576063,
-1360968, -4702989, 1206349, -3775276, -2871723, -3998615, -2573759, 117575, 1334124, -2407866,
-2605435, -5997922, -3389803, -281320, 31139, 2042257, -2325188, -482110, -2091112, 1404991,
-3420942, -1917703, 481036, -1657857, -183610, 5172215, 4139275, -1571958, 3889093, -1778117,
--3066070, -4014184, -172336, -453119, 18713710, -7641284, 1861332, -322123, -3035468, 3266323,
-5501853, -2994129, 5890548, 44560, 6260989, 1985349, 2444373, -2194728, 3709241, 1643899,
-3791919, -6874632, 4239670, -3920768, 1709934, -3234647, 4909685, -882616, 4946729, -2327336,
-2066416, -1400159, -5906, 159451, -64425, 2159832, 9892920, 787590, 3195993, -2254858,
--3980898, 561567, 512175, 566936, 1881733, -2661806, 6673306, -2147, 5679021, 763967,
--1781875, -2445447, -7337952, 4264903, 3059091, -3229816, 938450, 3581466, 2221572, -8657580,
-6028524, 173409, 4487704, -4971962, -5240397, -2327336, -5038534, -480499, 7406134, 2006287,
--1698660, 1091459, 4705674, -468151, -1916092, -617402, -2055679, 3634616, -3393024, 885837,
--1075352, 4844186, -11213623, 2333241, -3497714, -10256382, -7873212, 4244502, 4765266, 6212134,
--2994666, -1573569, 4334696, 2050310, 6446746, 2083059, -624918, 656593, 4155381, 7918846,
--1930051, 2304250, 6979, 6407555, 1585917, -404801, -1170379, -4913443, -7320772, 59056,
--939524, 2211908, -283468, 1722819, 1450088, 419833, 631897, 1443646, -2379412, 242129,
-3711926, 5491116, -2529736, 606664, -2197950, -3237869, 4777078, -3571802, -8533026, -3502546,
--2016487, 4134443, 587337, 4564477, 4489315, -2322504, 452582, -3708704, -222801, -1641214,
-5729487, -6925098, 122407, 2215130, -6898791, -8243116, 495532, 2425583, 5562520, -3691525,
--8185134, 4412542, -7472170, 9227737, 5803038, 1502165, 4613869, 186294, -1809792, -25173878,
-4872104, 1001801, -12775380, -16048145, -2804077, -12446815, 9645960, 2585034, -7616588, 208306,
--3688303, 853088, -5287105, 395674, -556735, -186294, 6716255, -2739652, -1901060, -3153580,
--2843805, -6826314, -4691178, 6378564, -3004330, 3951370, -3956739, 1583232, -164283, 3555696,
--4121021, 2644089, -4138738, 1472637, -1755568, -2617246, 2114198, -6361384, 2089502, -3330210,
--1405528, -4664335, 10543071, 4974109, 9209484, -4212826, 3722126, 3064459, -2163590, 1545115,
--4773856, 4639102, 10123238, 8114267, -6010807, -1626719, 2155537, -4215511, -3069291, -7301982,
--13875429, -4613332, 6684580, 2549063, -3641059, 1479616, 426276, -3524558, -6747394, -6225555,
-4340602, 1005559, -10281615, 1839320, 712965, 1120450, -9660455, -3973919, -2429878, 7460358,
--1833951, 1832877, -7484518, -7860864, 524523, 2372433, -4508642, -2597918, -4215511, 9090298,
-2145336, -2975876, -6430640, -6458557, -6191732, -1730872, 3230889, 9102109, 3125663, 5149666,
--3882651, 9675488, 5713380, 1787243, 312996, 9934796, -5593121, 940061, 3364570, 6710350,
--10654740, -5558225, 4978941, 1883343, -1262184, 11303817, -4710506, 3163780, 7094749, 2072859,
-1412507, 4933307, 2301029, 2412698, 2823404, 999654, 3219078, -263604, 4614943, -1111323,
-10897943, -7827041, 9030169, 6795175, -5719823, 6712497, 1596654, 5667210, 6241125, -13139916,
-8590, -720481, -3533684, 1853278, -3129421, 3354906, -1048509, 8008504, -419296, 1034013,
-3986804, 2057289, 13139916, -3268470, -1861332, -3013993, 9392557, 5029407, 1129576, 3708704,
--6117644, 14014478, 4711579, -897648, 5345624, 6880538, -11167989, -548682, 2788508, 1537061,
-96637, 9778030, -4486630, -5567888, 13249974, 2229088, -835371, -1055488, 6963753, 788127,
--908922, -1017370, -3107409, 3710315, -1898912, 4866198, 3291556, -7973607, -7778186, 1308354,
-15586973, 155693, 3231426, -9216463, 4785668, 6749004, -3906810, 5121212, 5914707, -9288404,
--5879810, -776315, -12392591, -6128919, -7384123, 2685428, -2510409, -2219424, -1335735, 9325985,
--11964705, 5927055, 2627983, -3202972, 7339026, -3929358, 718333, -9228274, -199179, 7042673,
-5480915, 12561706, -13538811, -2065879, -15029701, -1614908, -282394, -1399086, 1862942, 9161165,
--9638980, 635655, -5794448, 17329120, -6899865, -3816079, 15040975, 11441256, 2346663, -20249160,
--4734128, 9793062, 1045288, -656593, -2655901, -1285269, -1335198, 1777043, 3450469, 3249680,
-3023120, 18575734, -3551401, -2293513, 261456, 2735894, -5193689, 3563749, 2167885, -316217,
--5756330, -3389803, 6798933, 7424388, 13551159, 3792456, -5297842, 3759170, 10737, 3811247,
-417686, 7806103, -6016176, -8795556, -9351218, 6630356, -2588792, 1726577, 2564096, -2951716,
--562641, 16292958, 5444945, -12894029, 9502615, 3522410, 15994995, -7835094, -7959648, 5172215,
-8473970, 6527814, 3086471, -875636, 163209, 4776004, -5699959, -786516, -484258, 7618735,
--5862094, 14638859, -1859184, 1047435, -9335648, -5848135, -12484396, -10629507, -4317516, 3514357,
-3590056, 18570902, 17982492, -2382633, 1168231, 561567, -175020, -447750, -4100083, -12505871,
--9738301, -5087926, 4015258, -3640522, -11011759, -3234647, 1689533, -993748, -16711718, -5004174,
-3277597, -1858110, 1199370, 955630, 4566087, 7042136, 810138, -5376762, 4955319, 5393405,
-3532074, -348429, 6811282, -14473503, 4448513, -12824235, 15490873, -11341398, 3970697, -12012487,
--2338073, -13396540, -7403987, -8355322, -9345312, 6141267, -8254391, -1533303, 2444910, -84289,
--4544076, -2995740, -1698660, -12974559, 129923, 954020, 6193343, -20223390, 231391, -345745,
-9284646, 11657078, -7917772, -4449586, 334471, 9185324, -16833588, 11353209, -7406671, -4189741,
-1294933, -15042049, 2277943, -10454487, -25972204, -10862509, -5549635, 3589519, 6068252, -9085466,
--3862249, -11229192, -9902047, 4005057, -8777303, 7461969, 2681670, 5109938, -1688996, -9054328,
-13615583, 4798016, 7334194, -11120207, 3671123, 957778, -15554224, 8289824, 4871567, -387084,
--10777684, -4851703, 4378183, 4348655, -858457, 857920, 6621766, -8063801, -5821292, 7510287,
--17545478, -17751100, -22555020, -5972152, 6516003, -20354924, -16646219, -10842108, -200253, 5858336,
-1709934, 853088, -151934, -6711424, -8167417, -19374598, 9176734, 1544041, 21675090, -6481643,
-186294, -14906758, -16726750, 818728, 10229538, -570157, -10626823, 5469641, 2491081, 13666586,
-1246077, 428423, -7485055, -2943126, 6231461, -16471736, -27733678, -9644886, -6885907, -23087060,
--17648558, -7806640, 12925167, -523986, 21775484, 4803921, -1429150, -11360188, 4656282, 22622666,
--22640920, -20047834, -6498823, -2747705, -14110041, 14397804, 4301410, 8163659, 9121437, -13669807,
--1475858, 6618545, -8888435, 17903034, 443455, 4720706, -4798016, 5129802, -11129871, -5471252,
--3761855, 7409356, 3128884, 11403675, -16937204, 2600603, -105764, -11538430, 13819057, -7095286,
--20253456, 5215701, 7215545, 2742874, -6142877, -141197, -8560407, 2776160, 6709813, 4379256,
--14038637, 6931541, -3413425, -13758391, -9384504, -17187386, 55298, -1178969, -925029, 4299799,
-11080479, 16336982, 11395622, -4046396, -11090679, 5651103, -3422015, 584652, -8971650, 17460116,
-11272679, 537, 21613886, -11873437, 5832566, 16989280, 8714489, -20347944, 2677375, 348429,
--12851616, 1999307, -28695214, -24756192, -5895917, -90731, 1122597, -492311, -10187126, -219043,
--2896419, 9345312, 1811403, -430034, 1730335, -21576306, 7502771, 4214437, 12037720, 5170604,
-5184026, 14339285, 7000260, 2224793, 35376572, 7761006, 13544716, 18993420, 763430, 13452374,
-3185255, -7180112, 8450348, 801548, 3955665, -7022272, 316754, -4486094, 2752000, -4468914,
-9680856, 1401770, -6536940, -7552163, 689342, -20833812, 11798812, 8454106, -1560684, -1701881,
-4250407, -5390184, -5274220, -6702834, -9058086, 7149510, -7482370, 11680164, 12405476, 13282186,
-12807592, -3077881, -22462142, 463856, 7304129, 21374442, -6929930, -823560, 7550553, 14596983,
-18445810, -3862249, 3992172, 18296560, 23477364, -15819975, -16567836, -22237730, 21878564, -1250372,
--7409356, 8191577, 8053601, 20476794, 17342542, 2010045, 18928458, 26304528, 8331700, -11957189,
-13291313, -10999948, -5523328, -1522029, -7171522, -9089225, 6420439, -4117800, -3747359, -11170136,
-28841780, 4398584, -13399224, 944356, -681826, 13300977, 14396194, 6099391, -7232188, 14120242,
--2185602, 9076340, -23810224, 2267206, 11943767, -9883793, 5115843, -10823854, -8067023, 26993332,
-12386149, 8798241, -213138, -22142168, -3955128, 7620346, 6677601, 4672388, -3713536, 19301584,
--11089069, 11138461, -4173635, 7679402, 9415105, 15472083, 21734146, -21926344, 1590749, 12632036,
-8036421, 17362942, 18522584, -21965536, 2854006, -5594732, -8576513, -227633, -8148090, 5378910,
-17432198, 34793532, 1430224, -16668231, 4629975, -11143293, 7121593, -9673340, -10524280, 31636730,
--24113558, 39731668, 24199994, -5812702, 7876433, 19248432, 2644626, -29851096, 11609833, -24142548,
-5613523, 2277943, -12144557, 649077, -1814624, 17470854, -8859981, -697395, -876710, -5081483,
-36364952, -1894618, -5737003, 4941360, 12069395, -12224014, -26599270, 21043730, -3610457, -1302449,
-23382876, -13621489, -4174171, -16254304, 4097399, -11237782, 13019656, 12714714, 24828670, -6822556,
-6646462, 17271138, -24321326, 3389266, -15676094, -23560580, -31218506, -15650324, -33748244, -36825048,
--5775658, 3019362, -18181670, -18286898, 11083163, -631897, -11330661, -19653770, 13920526, -10073846,
-2887829, 19439558, -36078264, -9011378, -8042327, 16811038, 38653632, 1810329, -10536092, 10860899,
--5412733, -16538845, -24306294, -18519362, 19733228, -16807280, 7743289, 18775450, 7792682, 11922829,
--23223962, 32455458, 20244328, 17523466, -13627931, 23136988, -3016141, 15157476, 9772124, 3044595,
-8012799, 10992969, 6466610, -4281546, -6365679, -5701569, 1834488, -16298327, -19214610, 9989557,
-4043175, 5562520, -15964393, 3624416, 4015258, 10903311, 16433619, 25143276, -15285789, 3241627,
-35876936, 7206419, 3107946, 2798708, -8429947, 1894618, 35567160, 9735080, 22650046, 5821292,
--26351772, -11527692, -19548006, 51921324, 20329154, -21652004, -14114336, -19548006, 1720134, -13396003,
--30251602, 5052492, -23347442, 30703648, -3887482, -28841242, 33724084, 26395796, 2516314, -10481331,
-3589519, -19653770, 21769042, -25654376, 9453223, -4006668, 24412594, -52680460, -36208720, 20001662,
-9419937, 6826851, 17084844, -18429704, -23560044, -13435731, -19446002, 10083509, -20809654, 5250061,
-13291313, 21589190, 467078, 17949742, 10658498, 2286533, -6181532, -20395190, -13993540, 10572599,
--24086714, 11327439, 2713883, 19509888, 15498926, -8542153, -29826938, -20316270, -1780264, -2455648,
--7813083, 19406272, -35910760, -3817152, 1430224, -38784092, -500901, -5733782, -2720862, 2916820,
-22448184, -22682796, -58875412, 20942260, 24678346, 13168907, 46857556, -39365524, -4192425, 24369108,
-20465520, -25284472, -10177462, -8031589, 37507412, 5675263, 36011152, -51874080, 8757975, -61641908,
--34314640, -36467492, 43143484, 11381663, -24443732, 22612466, 5265093, -24522116, 26060788, -33004140,
-18403934, 45081052, 16787954, -16028281, -10353019, 6267968, -11237782, -13363254, -1387811, 20946018,
--3405909, 3906273, -22000434, -4628901, 31005368, -22477712, 17293148, 40066676, 20384452, -1800665,
--7326141, -13318694, -25314000, -19019726, 22495428, -12770012, 21153788, 14766634, 7543037, 761820,
-8544837, -6644315, -32182726, -11595338, 23844048, 18214420, 19922742, -20978768, 36177584, -9528385,
-14416595, -26728656, 24713242, 41128068, -7754027, -15233175, -904628, 1056025, -8584029, 8579197,
-18843096, -34607236, 23070416, 21146272, -4591857, 24575266, 14079440, 10249939, -15192910, 2669322,
-23287312, -48164300, -41529648, -18274012, 12016245, -22508312, -63534916, 26371100, 18426484, -8842264,
--10205916, 179315, -3206730, -21945136, -58888296, -2376191, -1149441, 21820044, 28942174, 588411,
--32752884, 43236900, -12222403, -30290256, 27023398, -4417911, -16508781, 20859582, 5535139, -4460861,
-17585744, -24297704, 22884660, -8300561, 687732, -7144678, -6105296, -33867964, 13267154, -13012140,
-5210869, -13672492, -1231582, -10244571, 9539659, -6083821, 36342404, 6253473, 23716810, -9499394,
-5807333, 14847702, -6579890, 10161893, -2256469, 17927730, -1120987, -6449967, 28584618, -26103738,
-14120242, 19283330, -11818139, 21832392, -13926968, -1058173, 11154030, -9280351, 25855704, 22826140,
-4508642, 38326140, -24457154, -55904904, -9717900, -34971236, -23033910, 79471928, -2592013, 23533736,
--4365835, -35304632, -1569811, 32258962, 47074988, 27271968, 47252156, -28194312, -9041980, -14494978,
--29418916, 14117021, 25186226, -25196426, 31679142, -18055506, 4887136, 647466, 3818226, -23130010,
--3109556, -20826834, -17288854, 844498, -6484864, -15474230, -5953362, 12776454, -13371844, 11870216,
--6046777, 34283504, -14949707, 10905459, 2530810, -7330973, -26307212, -8826158, 20913270, 4737349,
--6193343, 27859306, -19320374, -18859202, -2244121, 26747446, -22766012, -2012192, 5042292, 8232379,
--25406880, 9149891, 9479530, -7832947, -26580478, 1983201, -20522428, 10483478, 5292474, 9727564,
--40855876, -15928960, 24145770, 65531000, -28259274, -1995549, 5721434, -8625368, -17352204, 1920924,
-53852448, 14709189, -4702453, -2014340, -13277355, -361314, -9905268, 23835994, 2042794, -9590125,
--13058311, 4814122, 10789495, -16441672, 18015240, 10768020, 19731616, 8785356, 24208046, -39771936,
-54405424, 8107288, 12904766, 13585518, -11740293, -13606456, 1178969, -4809290, 8300561, 18407692,
--24201066, 8943733, -4591320, 7184944, 6695854, 4940286, 14808510, 11822971, -9960029, 10712185,
-9298604, -7844221, -14211510, 5301601, -4639639, -11536282, 7997766, 6840809, -421444, -7251516,
-844498, -5057324, -2238752, 1392106, 3810173, 6492917, -10494753, -796180, 9493488, -3097745,
-8578660, 2416456, 6352794, 12581033, 4044786, -10984379, 1836099, 12096239, -5737540, 404801,
-5976984, -17924510, -577136, -3625489, -17092896, 25527674, -5652177, 135291, 15046881, 3704409,
--10359461, 5596343, -9892383, -714575, 8569533, -8256001, -3053185, 19728396, -18737332, 3947075,
-2107755, 8807367, -8213588, 8681740, -2601677, 10290205, -3661997, 12674985, -53131968, -108212240,
--13854491, 67985040, 52344912, 150028032, 72284296, -34963720, -30429844, -71128416, -124426280, -15766288,
--48140676, -15018427, 88115016, 56022480, 60028612, 114415784, -3816615, -25409026, -42969000, -113292112,
--62266824, -20202990, -20795694, 3040300, 51791936, 39788576, 42639900, 79759152, 47040628, -29529510,
-42902428, -44923212, -104092288, 13175886, -69734160, -97704064, 38394324, -8592619, -17680232, 119651344,
-39683888, 31613644, 103768560, -11369315, -19867982, 31153008, -68764576, -86369104, -22625350, -74026448,
--65298536, 13583371, 14863271, 29368986, 90790776, 79415552, 49054968, 56803088, 11821361, -45678588,
--47828756, -60763588, -81847048, -39247412, -19972134, -28785944, 26220776, 79008072, 53544820, 50583976,
-44249436, -30819612, 2747705, 6346351, -50838456, -14061723, -7513509, 0, 0, 0,
-0, 0, 0, },
+1618666, -2086280, -746787, -6973417, -3740917, 1630477, -356482, -369367, 6088116, 5115306,
+1120987, -1479616, -1249299, -3369402, 3058017, 338766, -2038499, -1047972, -1949915, -907312,
+-500901, -4602595, -4224101, 3770981, 3504693, 1509681, -4344897, -2013266, -1016297, 1904281,
+-1606855, -2148558, -381715, 188442, 901406, 2044404, 410706, 2925410, -3751654, -3474629,
+-4669703, -3411815, -1887101, 437550, -613107, -647466, -1973538, 718333, -550293, 396748,
+3310346, 2478196, -1255204, -2485712, -1812476, 970663, 764504, 326418, -275952, 6504728,
+3992172, 630823, -1284732, 319975, -3777961, 233539, -250182, 1034013, -593779, -2095944,
+3583613, -4563403, 215822, 440234, -448824, -4526359, 4527433, 1053878, -2632815, -1228361,
+-5730023, -1608465, 4591857, -2592550, -1927904, 1347009, -849330, -278636, 180926, -1602023,
+-1324461, 5603322, 2654827, -794032, 158377, -947577, -1825898, 686658, 1913408, 3040300,
+-928250, 1102196, 1319629, -5147519, -1680406, -108448, -1137093, 2997887, 143881, -1161789,
+2646237, -2225867, 797253, 4225174, -2548526, 172336, 426812, 3180423, -1423245, 4424353,
+-6585796, -2452426, 2626909, -1385127, -5618354, 274878, 912681, 1693291, 1674500, -712965,
+-2542084, 71404, -2334315, -1584306, 417149, 2550137, 2252174, -3784940, 2949569, -4139812,
+3285113, 17180, 2826625, -1417339, -2887829, -1375463, 1741609, -676994, -935766, -955093,
+2390686, -3439195, -15290084, 5016522, -5557151, -2218888, -4547834, -4678293, 2660195, -1566589,
+-3939022, -2129230, 5374615, 7964480, -4351339, -1635846, -374736, -5757941, -5382131, 389768,
+-527744, 3492882, 1203128, 2596308, -2279017, -1460289, -2957085, 820876, 5177046, 2214056,
+1033477, -3340948, 2552821, 738198, 1580548, -2190433, 235149, 736050, 1204202, -2968896,
+-2101313, 779537, -4006668, -4181151, 1844152, 3124052, -3475166, -1810329, -1292248, 226560,
+3221762, 2504503, 1183800, 448824, 8220568, 3161633, -2461016, 3134789, 2369211, -2285996,
+3965866, -1458141, -821949, -48855, -1516124, 3384434, -1743757, 870805, 2257005, 1624571,
+-2805151, 1174674, 838592, 594853, -733366, -1524177, -216359, 4741107, 894964, 2075543,
+11718818, 4722317, -727460, 611496, 2749316, 1478006, -703838, -4943508, 245887, 4546223,
+-4493610, -426276, -8506183, 2340220, 3581466, 319975, -1962800, 6366216, 4497905, -3958886,
+2040110, 325881, -3463891, 5691906, 3173981, -275415, 2348810, 5428839, -1568737, -1012539,
+444529, 122943, 216359, 1373853, 6645925, 1413044, 1069447, -10507101, -468151, 576063,
+1360968, -4702989, 1206349, -3775276, -2871723, -3998615, -2573759, 117575, 1334124, -2407866,
+2605435, -5997922, -3389803, -281320, 31139, 2042257, -2325188, -482110, -2091112, 1404991,
+3420942, -1917703, 481036, -1657857, -183610, 5172215, 4139275, -1571958, 3889093, -1778117,
+-3066070, -4014184, -172336, -453119, 18713710, -7641284, 1861332, -322123, -3035468, 3266323,
+5501853, -2994129, 5890548, 44560, 6260989, 1985349, 2444373, -2194728, 3709241, 1643899,
+3791919, -6874632, 4239670, -3920768, 1709934, -3234647, 4909685, -882616, 4946729, -2327336,
+2066416, -1400159, -5906, 159451, -64425, 2159832, 9892920, 787590, 3195993, -2254858,
+-3980898, 561567, 512175, 566936, 1881733, -2661806, 6673306, -2147, 5679021, 763967,
+-1781875, -2445447, -7337952, 4264903, 3059091, -3229816, 938450, 3581466, 2221572, -8657580,
+6028524, 173409, 4487704, -4971962, -5240397, -2327336, -5038534, -480499, 7406134, 2006287,
+-1698660, 1091459, 4705674, -468151, -1916092, -617402, -2055679, 3634616, -3393024, 885837,
+-1075352, 4844186, -11213623, 2333241, -3497714, -10256382, -7873212, 4244502, 4765266, 6212134,
+-2994666, -1573569, 4334696, 2050310, 6446746, 2083059, -624918, 656593, 4155381, 7918846,
+-1930051, 2304250, 6979, 6407555, 1585917, -404801, -1170379, -4913443, -7320772, 59056,
+-939524, 2211908, -283468, 1722819, 1450088, 419833, 631897, 1443646, -2379412, 242129,
+3711926, 5491116, -2529736, 606664, -2197950, -3237869, 4777078, -3571802, -8533026, -3502546,
+-2016487, 4134443, 587337, 4564477, 4489315, -2322504, 452582, -3708704, -222801, -1641214,
+5729487, -6925098, 122407, 2215130, -6898791, -8243116, 495532, 2425583, 5562520, -3691525,
+-8185134, 4412542, -7472170, 9227737, 5803038, 1502165, 4613869, 186294, -1809792, -25173878,
+4872104, 1001801, -12775380, -16048145, -2804077, -12446815, 9645960, 2585034, -7616588, 208306,
+-3688303, 853088, -5287105, 395674, -556735, -186294, 6716255, -2739652, -1901060, -3153580,
+-2843805, -6826314, -4691178, 6378564, -3004330, 3951370, -3956739, 1583232, -164283, 3555696,
+-4121021, 2644089, -4138738, 1472637, -1755568, -2617246, 2114198, -6361384, 2089502, -3330210,
+-1405528, -4664335, 10543071, 4974109, 9209484, -4212826, 3722126, 3064459, -2163590, 1545115,
+-4773856, 4639102, 10123238, 8114267, -6010807, -1626719, 2155537, -4215511, -3069291, -7301982,
+-13875429, -4613332, 6684580, 2549063, -3641059, 1479616, 426276, -3524558, -6747394, -6225555,
+4340602, 1005559, -10281615, 1839320, 712965, 1120450, -9660455, -3973919, -2429878, 7460358,
+-1833951, 1832877, -7484518, -7860864, 524523, 2372433, -4508642, -2597918, -4215511, 9090298,
+2145336, -2975876, -6430640, -6458557, -6191732, -1730872, 3230889, 9102109, 3125663, 5149666,
+-3882651, 9675488, 5713380, 1787243, 312996, 9934796, -5593121, 940061, 3364570, 6710350,
+-10654740, -5558225, 4978941, 1883343, -1262184, 11303817, -4710506, 3163780, 7094749, 2072859,
+1412507, 4933307, 2301029, 2412698, 2823404, 999654, 3219078, -263604, 4614943, -1111323,
+10897943, -7827041, 9030169, 6795175, -5719823, 6712497, 1596654, 5667210, 6241125, -13139916,
+8590, -720481, -3533684, 1853278, -3129421, 3354906, -1048509, 8008504, -419296, 1034013,
+3986804, 2057289, 13139916, -3268470, -1861332, -3013993, 9392557, 5029407, 1129576, 3708704,
+-6117644, 14014478, 4711579, -897648, 5345624, 6880538, -11167989, -548682, 2788508, 1537061,
+96637, 9778030, -4486630, -5567888, 13249974, 2229088, -835371, -1055488, 6963753, 788127,
+-908922, -1017370, -3107409, 3710315, -1898912, 4866198, 3291556, -7973607, -7778186, 1308354,
+15586973, 155693, 3231426, -9216463, 4785668, 6749004, -3906810, 5121212, 5914707, -9288404,
+-5879810, -776315, -12392591, -6128919, -7384123, 2685428, -2510409, -2219424, -1335735, 9325985,
+-11964705, 5927055, 2627983, -3202972, 7339026, -3929358, 718333, -9228274, -199179, 7042673,
+5480915, 12561706, -13538811, -2065879, -15029701, -1614908, -282394, -1399086, 1862942, 9161165,
+-9638980, 635655, -5794448, 17329120, -6899865, -3816079, 15040975, 11441256, 2346663, -20249160,
+-4734128, 9793062, 1045288, -656593, -2655901, -1285269, -1335198, 1777043, 3450469, 3249680,
+3023120, 18575734, -3551401, -2293513, 261456, 2735894, -5193689, 3563749, 2167885, -316217,
+-5756330, -3389803, 6798933, 7424388, 13551159, 3792456, -5297842, 3759170, 10737, 3811247,
+417686, 7806103, -6016176, -8795556, -9351218, 6630356, -2588792, 1726577, 2564096, -2951716,
+-562641, 16292958, 5444945, -12894029, 9502615, 3522410, 15994995, -7835094, -7959648, 5172215,
+8473970, 6527814, 3086471, -875636, 163209, 4776004, -5699959, -786516, -484258, 7618735,
+-5862094, 14638859, -1859184, 1047435, -9335648, -5848135, -12484396, -10629507, -4317516, 3514357,
+3590056, 18570902, 17982492, -2382633, 1168231, 561567, -175020, -447750, -4100083, -12505871,
+-9738301, -5087926, 4015258, -3640522, -11011759, -3234647, 1689533, -993748, -16711718, -5004174,
+3277597, -1858110, 1199370, 955630, 4566087, 7042136, 810138, -5376762, 4955319, 5393405,
+3532074, -348429, 6811282, -14473503, 4448513, -12824235, 15490873, -11341398, 3970697, -12012487,
+-2338073, -13396540, -7403987, -8355322, -9345312, 6141267, -8254391, -1533303, 2444910, -84289,
+-4544076, -2995740, -1698660, -12974559, 129923, 954020, 6193343, -20223390, 231391, -345745,
+9284646, 11657078, -7917772, -4449586, 334471, 9185324, -16833588, 11353209, -7406671, -4189741,
+1294933, -15042049, 2277943, -10454487, -25972204, -10862509, -5549635, 3589519, 6068252, -9085466,
+-3862249, -11229192, -9902047, 4005057, -8777303, 7461969, 2681670, 5109938, -1688996, -9054328,
+13615583, 4798016, 7334194, -11120207, 3671123, 957778, -15554224, 8289824, 4871567, -387084,
+-10777684, -4851703, 4378183, 4348655, -858457, 857920, 6621766, -8063801, -5821292, 7510287,
+-17545478, -17751100, -22555020, -5972152, 6516003, -20354924, -16646219, -10842108, -200253, 5858336,
+1709934, 853088, -151934, -6711424, -8167417, -19374598, 9176734, 1544041, 21675090, -6481643,
+186294, -14906758, -16726750, 818728, 10229538, -570157, -10626823, 5469641, 2491081, 13666586,
+1246077, 428423, -7485055, -2943126, 6231461, -16471736, -27733678, -9644886, -6885907, -23087060,
+-17648558, -7806640, 12925167, -523986, 21775484, 4803921, -1429150, -11360188, 4656282, 22622666,
+-22640920, -20047834, -6498823, -2747705, -14110041, 14397804, 4301410, 8163659, 9121437, -13669807,
+-1475858, 6618545, -8888435, 17903034, 443455, 4720706, -4798016, 5129802, -11129871, -5471252,
+-3761855, 7409356, 3128884, 11403675, -16937204, 2600603, -105764, -11538430, 13819057, -7095286,
+-20253456, 5215701, 7215545, 2742874, -6142877, -141197, -8560407, 2776160, 6709813, 4379256,
+-14038637, 6931541, -3413425, -13758391, -9384504, -17187386, 55298, -1178969, -925029, 4299799,
+11080479, 16336982, 11395622, -4046396, -11090679, 5651103, -3422015, 584652, -8971650, 17460116,
+11272679, 537, 21613886, -11873437, 5832566, 16989280, 8714489, -20347944, 2677375, 348429,
+-12851616, 1999307, -28695214, -24756192, -5895917, -90731, 1122597, -492311, -10187126, -219043,
+-2896419, 9345312, 1811403, -430034, 1730335, -21576306, 7502771, 4214437, 12037720, 5170604,
+5184026, 14339285, 7000260, 2224793, 35376572, 7761006, 13544716, 18993420, 763430, 13452374,
+3185255, -7180112, 8450348, 801548, 3955665, -7022272, 316754, -4486094, 2752000, -4468914,
+9680856, 1401770, -6536940, -7552163, 689342, -20833812, 11798812, 8454106, -1560684, -1701881,
+4250407, -5390184, -5274220, -6702834, -9058086, 7149510, -7482370, 11680164, 12405476, 13282186,
+12807592, -3077881, -22462142, 463856, 7304129, 21374442, -6929930, -823560, 7550553, 14596983,
+18445810, -3862249, 3992172, 18296560, 23477364, -15819975, -16567836, -22237730, 21878564, -1250372,
+-7409356, 8191577, 8053601, 20476794, 17342542, 2010045, 18928458, 26304528, 8331700, -11957189,
+13291313, -10999948, -5523328, -1522029, -7171522, -9089225, 6420439, -4117800, -3747359, -11170136,
+28841780, 4398584, -13399224, 944356, -681826, 13300977, 14396194, 6099391, -7232188, 14120242,
+-2185602, 9076340, -23810224, 2267206, 11943767, -9883793, 5115843, -10823854, -8067023, 26993332,
+12386149, 8798241, -213138, -22142168, -3955128, 7620346, 6677601, 4672388, -3713536, 19301584,
+-11089069, 11138461, -4173635, 7679402, 9415105, 15472083, 21734146, -21926344, 1590749, 12632036,
+8036421, 17362942, 18522584, -21965536, 2854006, -5594732, -8576513, -227633, -8148090, 5378910,
+17432198, 34793532, 1430224, -16668231, 4629975, -11143293, 7121593, -9673340, -10524280, 31636730,
+-24113558, 39731668, 24199994, -5812702, 7876433, 19248432, 2644626, -29851096, 11609833, -24142548,
+5613523, 2277943, -12144557, 649077, -1814624, 17470854, -8859981, -697395, -876710, -5081483,
+36364952, -1894618, -5737003, 4941360, 12069395, -12224014, -26599270, 21043730, -3610457, -1302449,
+23382876, -13621489, -4174171, -16254304, 4097399, -11237782, 13019656, 12714714, 24828670, -6822556,
+6646462, 17271138, -24321326, 3389266, -15676094, -23560580, -31218506, -15650324, -33748244, -36825048,
+-5775658, 3019362, -18181670, -18286898, 11083163, -631897, -11330661, -19653770, 13920526, -10073846,
+2887829, 19439558, -36078264, -9011378, -8042327, 16811038, 38653632, 1810329, -10536092, 10860899,
+-5412733, -16538845, -24306294, -18519362, 19733228, -16807280, 7743289, 18775450, 7792682, 11922829,
+-23223962, 32455458, 20244328, 17523466, -13627931, 23136988, -3016141, 15157476, 9772124, 3044595,
+8012799, 10992969, 6466610, -4281546, -6365679, -5701569, 1834488, -16298327, -19214610, 9989557,
+4043175, 5562520, -15964393, 3624416, 4015258, 10903311, 16433619, 25143276, -15285789, 3241627,
+35876936, 7206419, 3107946, 2798708, -8429947, 1894618, 35567160, 9735080, 22650046, 5821292,
+-26351772, -11527692, -19548006, 51921324, 20329154, -21652004, -14114336, -19548006, 1720134, -13396003,
+-30251602, 5052492, -23347442, 30703648, -3887482, -28841242, 33724084, 26395796, 2516314, -10481331,
+3589519, -19653770, 21769042, -25654376, 9453223, -4006668, 24412594, -52680460, -36208720, 20001662,
+9419937, 6826851, 17084844, -18429704, -23560044, -13435731, -19446002, 10083509, -20809654, 5250061,
+13291313, 21589190, 467078, 17949742, 10658498, 2286533, -6181532, -20395190, -13993540, 10572599,
+-24086714, 11327439, 2713883, 19509888, 15498926, -8542153, -29826938, -20316270, -1780264, -2455648,
+-7813083, 19406272, -35910760, -3817152, 1430224, -38784092, -500901, -5733782, -2720862, 2916820,
+22448184, -22682796, -58875412, 20942260, 24678346, 13168907, 46857556, -39365524, -4192425, 24369108,
+20465520, -25284472, -10177462, -8031589, 37507412, 5675263, 36011152, -51874080, 8757975, -61641908,
+-34314640, -36467492, 43143484, 11381663, -24443732, 22612466, 5265093, -24522116, 26060788, -33004140,
+18403934, 45081052, 16787954, -16028281, -10353019, 6267968, -11237782, -13363254, -1387811, 20946018,
+-3405909, 3906273, -22000434, -4628901, 31005368, -22477712, 17293148, 40066676, 20384452, -1800665,
+-7326141, -13318694, -25314000, -19019726, 22495428, -12770012, 21153788, 14766634, 7543037, 761820,
+8544837, -6644315, -32182726, -11595338, 23844048, 18214420, 19922742, -20978768, 36177584, -9528385,
+14416595, -26728656, 24713242, 41128068, -7754027, -15233175, -904628, 1056025, -8584029, 8579197,
+18843096, -34607236, 23070416, 21146272, -4591857, 24575266, 14079440, 10249939, -15192910, 2669322,
+23287312, -48164300, -41529648, -18274012, 12016245, -22508312, -63534916, 26371100, 18426484, -8842264,
+-10205916, 179315, -3206730, -21945136, -58888296, -2376191, -1149441, 21820044, 28942174, 588411,
+-32752884, 43236900, -12222403, -30290256, 27023398, -4417911, -16508781, 20859582, 5535139, -4460861,
+17585744, -24297704, 22884660, -8300561, 687732, -7144678, -6105296, -33867964, 13267154, -13012140,
+5210869, -13672492, -1231582, -10244571, 9539659, -6083821, 36342404, 6253473, 23716810, -9499394,
+5807333, 14847702, -6579890, 10161893, -2256469, 17927730, -1120987, -6449967, 28584618, -26103738,
+14120242, 19283330, -11818139, 21832392, -13926968, -1058173, 11154030, -9280351, 25855704, 22826140,
+4508642, 38326140, -24457154, -55904904, -9717900, -34971236, -23033910, 79471928, -2592013, 23533736,
+-4365835, -35304632, -1569811, 32258962, 47074988, 27271968, 47252156, -28194312, -9041980, -14494978,
+-29418916, 14117021, 25186226, -25196426, 31679142, -18055506, 4887136, 647466, 3818226, -23130010,
+-3109556, -20826834, -17288854, 844498, -6484864, -15474230, -5953362, 12776454, -13371844, 11870216,
+-6046777, 34283504, -14949707, 10905459, 2530810, -7330973, -26307212, -8826158, 20913270, 4737349,
+-6193343, 27859306, -19320374, -18859202, -2244121, 26747446, -22766012, -2012192, 5042292, 8232379,
+-25406880, 9149891, 9479530, -7832947, -26580478, 1983201, -20522428, 10483478, 5292474, 9727564,
+-40855876, -15928960, 24145770, 65531000, -28259274, -1995549, 5721434, -8625368, -17352204, 1920924,
+53852448, 14709189, -4702453, -2014340, -13277355, -361314, -9905268, 23835994, 2042794, -9590125,
+-13058311, 4814122, 10789495, -16441672, 18015240, 10768020, 19731616, 8785356, 24208046, -39771936,
+54405424, 8107288, 12904766, 13585518, -11740293, -13606456, 1178969, -4809290, 8300561, 18407692,
+-24201066, 8943733, -4591320, 7184944, 6695854, 4940286, 14808510, 11822971, -9960029, 10712185,
+9298604, -7844221, -14211510, 5301601, -4639639, -11536282, 7997766, 6840809, -421444, -7251516,
+844498, -5057324, -2238752, 1392106, 3810173, 6492917, -10494753, -796180, 9493488, -3097745,
+8578660, 2416456, 6352794, 12581033, 4044786, -10984379, 1836099, 12096239, -5737540, 404801,
+5976984, -17924510, -577136, -3625489, -17092896, 25527674, -5652177, 135291, 15046881, 3704409,
+-10359461, 5596343, -9892383, -714575, 8569533, -8256001, -3053185, 19728396, -18737332, 3947075,
+2107755, 8807367, -8213588, 8681740, -2601677, 10290205, -3661997, 12674985, -53131968, -108212240,
+-13854491, 67985040, 52344912, 150028032, 72284296, -34963720, -30429844, -71128416, -124426280, -15766288,
+-48140676, -15018427, 88115016, 56022480, 60028612, 114415784, -3816615, -25409026, -42969000, -113292112,
+-62266824, -20202990, -20795694, 3040300, 51791936, 39788576, 42639900, 79759152, 47040628, -29529510,
+42902428, -44923212, -104092288, 13175886, -69734160, -97704064, 38394324, -8592619, -17680232, 119651344,
+39683888, 31613644, 103768560, -11369315, -19867982, 31153008, -68764576, -86369104, -22625350, -74026448,
+-65298536, 13583371, 14863271, 29368986, 90790776, 79415552, 49054968, 56803088, 11821361, -45678588,
+-47828756, -60763588, -81847048, -39247412, -19972134, -28785944, 26220776, 79008072, 53544820, 50583976,
+44249436, -30819612, 2747705, 6346351, -50838456, -14061723, -7513509, 0, 0, 0,
+0, 0, 0, },
{
5649493,
-661962, -4917201, -1250372, -1280437, -550293, -1284195, 2446521, 5765994, 878858, 4686346,
-1743757, -1127429, -2554969, 2191507, -775778, 4634270, 3273302, -1581622, -2910914, -3406983,
-1711545, -1139777, 398358, -2471217, -1035624, -631360, 1984275, -2419140, 1961726, -776852,
--2707977, 3482145, 3521336, 576063, 1317481, 699543, -690416, -2273112, -7385197, 2042794,
--2382633, 2250026, -2359011, -2858838, 2126546, -2518998, 1229434, 1348620, -5202279, 216359,
-781147, 1294396, -2047089, 2754685, -2732673, -1758789, -915902, -1242856, 1814624, -301721,
-876710, 1561221, 2297271, -404801, -2460480, -2486786, 162135, -5215164, -2262374, -481573,
-4718022, 1422708, 1893544, 1471563, 2643016, -1112933, 2631741, 4597226, -3535832, -3068217,
--4711043, 4155918, 2042794, 307627, 6177237, -683974, -135828, -1968169, -1600949, 1291711,
--1725503, -3311420, 1770063, 464930, 5149129, 7052873, -1911261, -4251481, -5217312, -390305,
--3008625, -2909304, -2009508, -464393, -4168803, 3888019, -1532230, -1623498, -2778844, -2076617,
-696858, 4371740, -525597, -1359894, 1280437, -4447439, 3213173, -2806761, -9860708, 4773320,
-3162707, 5308043, 5530844, 972810, 2878702, -3020973, 759672, 4138738, 257698, -161598,
--1097364, -682363, 2197413, -2198487, -1576253, -35433, 2076080, -1953673, -2331094, -3453691,
-4088809, 1460826, 401043, -1261110, -4330938, -435939, 2967286, 1578401, -829466, -1297617,
-2745558, -1151051, -14701136, 7648800, -734976, 202937, 2653753, 3738769, -5483063, -712965,
--992674, 3104188, 1177895, -3368328, 10437844, -1141388, -656593, 4625143, 3807489, 1222992,
-2639794, 8501351, -4229469, 239981, -2159832, 824634, -2632815, 181999, 258772, 925565,
--4742181, 372052, -1144609, -1818919, -210990, 2935610, -1648731, 2724083, 4019016, -6995428,
-927176, -2874944, -779000, -4332549, 2122788, -2597382, -448824, -1496259, -4362076, 1593433,
--2934000, 1909650, 1070521, -2230699, -3187940, 13959, 2911988, 2115808, 5309117, 2363843,
--2347737, -6675453, -487479, 1026497, 8213588, -2711198, -1328756, -257698, -1704565, -4502737,
--2178622, -4238059, -709207, 3059091, -1001801, 3621194, 2133525, 1560684, 1803886, -2474438,
-11052025, 5917391, -1407139, -3996467, 6468221, -6846715, -864899, 4306779, -2627983, -1815161,
--2753074, 7401840, -2161442, 2506114, 929324, 2479807, 10012643, -9402757, 3232500, 5186173,
--2898029, -8678518, -4346507, -297427, 911070, -957778, -1276142, 4089346, 5836861, -131533,
--3525631, 615254, -4558034, 1790465, -2721399, 2063732, 6231461, 2473901, -5499706, 175020,
-751082, 9099425, 2039573, 4724464, -851477, 2286533, 1957431, -10253161, 605054, 5370857,
-2774012, 5970005, -4508642, -2695629, -4469451, 1710471, 3680250, -639413, 1611150, 654983,
--1926293, 1333051, -1271310, 2087354, 2236067, 47782, 3296388, 959925, 398358, 1591822,
-7204808, 1635309, 4384625, 4638565, 22447646, -5383742, -1750736, -3020436, 4835060, 3363496,
-7830799, 3337190, -817654, 3963181, 126165, 4396973, 1839320, 5976984, 386547, 5080947,
-6384469, -6415071, 1468879, 2142115, 1374390, 1461900, 1749125, -3642132, 210990, -4248260,
--461709, 241592, -7681549, -4939750, 2161979, 388158, -99858, 3566434, 3240553, -1168231,
--6644315, 2479807, 6263136, 4483409, 5835787, -1082869, 3194382, 6132677, -9353902, 3466576,
-4223564, -4187593, 5893232, -3581466, -826781, 1073205, 1155883, -2638184, 2741800, -313533,
--1116155, -2744484, -2755759, 3812320, 3167539, 2035278, 3073586, 5605469, 2545842, 7590281,
--1748589, -7269769, 7281044, 1890859, 3304977, 2277407, -1858647, 2762738, 728534, 1277753,
-4260071, 9385040, -11660299, 7050726, 1185948, 7218767, 1392643, -4774393, 1045825, 5435281,
--7412040, -1974611, 462246, -8448201, -1905892, -6620155, -4062502, -4974646, -5193689, 1540283,
--7891466, -5265630, -6334003, -2106145, 5579163, 1531693, -7534983, -3428458, -7854959, -2491081,
-1438277, 10311143, -9015136, 2970507, -2433636, -3887482, -6738804, -370441, 962610, 6314139,
-3547106, 165893, -6069863, -11071352, -248571, 2269353, 8042863, 2046015, 2554969, -6810208,
-2167348, 4250944, 402653, -72478, -3168612, -4078608, -993211, 2032593, 654983, -3025805,
-237297, -7602092, -709207, -6607807, 3812857, -2261837, 3900904, -6596533, -4102768, -8709657,
--206695, -6098854, -1194538, 577673, -6053757, -4538707, 2715493, 2735357, -4769561, -27430346,
-4311611, 3038689, -7995082, -1832340, -142271, 205622, -1627256, -2684892, -2143189, -8180302,
-6125697, -3984119, 727460, -6808597, -2548526, 9757629, 8723615, -5653788, -3552475, 264141,
--319975, -4630512, -5555540, -3823058, 464930, 422517, -18790, -545461, 2094870, -6653978,
-1888712, 253940, -11971684, -1380832, -3729642, 5422396, 7649874, 1276679, -1603097, 431644,
--7122667, -8575976, 4402342, 8617852, 9283035, -2488934, 1497333, 5637682, 5486821, -2875481,
-5040144, 8711267, -608275, 7354595, 5897527, -7115150, 2117956, 531502, 7525320, -4649302,
--5318244, 4592394, 5659157, -1701344, 310311, -8412230, 5798206, -4677757, 6165426, -10530723,
-1040993, 2530810, 5027259, 296890, -4336307, -8930311, -10832444, 3515968, -9597104, 11605539,
-11164231, 103616, -15663746, 6142877, 651224, -3131568, 10430865, -209917, -9416179, -1237488,
-11365557, -14788109, 248034, -3899830, -11673184, -3457449, 3758, -2529199, -6073621, 3105261,
--5062693, 3675418, -4338991, -8050916, 3948686, -868120, 5761162, -11857331, 4534949, 8806294,
--3841312, 448287, 8971650, 13075491, -3733400, -3041911, -11446625, 345208, -9469866, -1079111,
--6638946, -3221, 747861, 5075041, 2436320, 4603131, -3715684, 564788, 2916820, -937914,
-12210055, -8556649, -4182225, 15880105, 16193637, -3598646, -1147293, -10630044, -5343476, 120796,
--2937221, -7191386, 9779104, 2611877, -2622615, 14022531, 2783676, -7394860, -156229, -13743358,
--6533182, -7968238, 13070122, -3550864, -193810, 8971650, -2198487, 5270462, -2961917, -11546483,
--768262, -70867, -2375654, -6887517, -7595113, 3848828, -6012954, 10509785, -3264712, -7820062,
-6575058, 13200045, -3301756, 3599720, -3568581, 7553774, 190052, -16353625, 5793911, 8828305,
-927713, -2877628, -9383430, 7704635, 5325760, 4878546, 1081258, 2983929, 10620917, -7700877,
-1374390, 1813013, -5823439, -11661910, 10910291, 5738613, 20254528, -1347009, 8976482, -3310346,
--6269579, 707596, -915902, -687195, -1727651, -7012608, 14576045, -137439, 1212255, 1535451,
--1943473, 11360725, 1591285, 9360881, 4239670, 985695, 10736881, -5815386, -11924977, -3244848,
-2228551, 537408, -4980552, 4670777, -3659849, -18155364, 1220845, 1617592, -9954124, 11162620,
--17095580, 3428995, 8421894, 12290049, -11819213, -1237488, 8891656, 6377490, 7662222, 1810329,
-15593953, 3347390, 6767795, -1316944, 1407676, 6782290, 3925063, 7747584, 1081795, -9396852,
--14034343, 8292508, 4243965, -2184528, 2219424, 4930623, -13101798, 726386, -8081518, 4625680,
-38118, 9536975, -2354716, 4611185, -1556926, 2947421, 1723356, 270046, 5524939, 7366406,
-2903398, 4558571, -10162429, 5104569, -1379758, -17884780, -11855720, 3896609, -13081397, -183073,
-11718281, -7410966, 22788022, 8866423, -3997541, 12940200, 1057636, -3081639, -8509404, -7984881,
--11893301, -941135, 7721815, -7805030, -616328, 9170829, 4153770, 5783174, 16828756, 3408594,
-11193759, 1674500, 2667712, -15646566, 5601174, 3483219, -9258339, -329639, 5708012, -125091,
-3974992, -9458055, 7230578, -607201, 2027761, 6799470, -12831215, -8759586, 2181307, -183610,
-6836514, 14387067, -1490891, 3587908, 15289547, -5740224, -10662256, -597537, 11125576, -2447058,
--13261785, 1055488, 4582193, -2554969, -4335233, -950262, 16491064, -3184718, 14136348, 10907606,
-12849468, 728534, 734439, 7690676, 2215666, -2677375, 2319819, -10437844, 7435662, 13164075,
-7820599, 1099512, 6868190, -5829881, 5122822, -5688148, 7694434, -7531225, -473520, -695248,
--1248225, 23329188, -4234838, -1469953, -2831457, 3063386, 5606543, 12107513, 13157095, -8007430,
-2337536, 13662291, -9029632, -10242960, 4578435, -4852776, 4577362, 26015690, -14399415, 760209,
-350577, -8509404, -1814087, -9332964, -14591078, -11262478, -15183783, -5968931, 1377611, 11711302,
-8530342, 2994666, 12244415, 3582003, 7344394, 6879464, -3748433, 10722923, 11456825, 8179229,
--16304770, -9082245, -9608916, 3340948, -6755447, 318901, 4138201, -4743792, -11662984, 7179575,
--5760625, 2499134, 1978906, 11406359, -12421582, 18552112, -18848464, 18968186, -526670, 9511742,
--9724343, 3346853, -21062520, -11434277, -10531797, 9081708, 3617436, 13174275, -1880122, 15032,
--7260106, -16388521, 10136660, -8891119, -5316633, 7961259, 18015240, 18226768, 7783555, -1030255,
--12957379, 7398081, -19542102, -1231582, -11458436, 6311992, 19444390, -19166828, 6231461, 9349607,
--12996571, -857383, -2989834, 7133941, -8939438, -11251741, 1498407, -4706748, -16996796, -14662481,
--16968342, -5482526, 9286793, -13189308, 7067369, -17746804, -4035122, -7394860, -6967511, -14240501,
--2250026, -5878200, -9078487, 5516886, -10006737, 8724152, 927713, 6635725, -12901545, -22896470,
--2962454, 3711926, -10377715, -7580081, 2443837, 2071248, -11977053, -5913096, 14163728, 6686727,
--3240016, 7650411, 20824686, 49929, 1540820, 1545651, -2954401, -1056025, 1948841, 2283312,
--18281528, -6811818, -22072374, -7169374, -20707112, -9700721, -369904, 22009560, 9076877, -11699491,
--14618995, 7925289, 16281147, 10823318, -9574019, 13266080, -6860674, -1373316, -25659208, -7395397,
--4891968, -3152506, -18272938, -26332982, 6386617, -46708, -21360482, 5058935, 27655294, 4296041,
-758599, -18272402, -4772783, 938987, 292058, -18730352, 12074227, -18465138, -3807489, 4240207,
--8869644, 20973400, -17463338, -18152680, -14599131, 20226074, 9164923, -12097312, -10630581, -7403450,
--2151779, -6726993, -6508486, 672699, 7758859, 19837918, -2087891, 8212515, 7669738, 6857452,
--13289166, -17294760, -11871826, 13630616, -2196876, 16632798, 5978058, -2465311, -23163296, -19742354,
--1641751, 912681, -13244069, -9203578, -5993627, -7265474, -30353608, -7469485, -7049115, -11924977,
--4926328, -8138963, -13583371, 8997420, 19801946, 9680856, 1168231, 10281078, 15112916, -6278706,
-5313949, 2452963, 2227478, -1906429, -2806224, 8710194, 5022965, 15443092, -2910914, 8053,
-7194607, 31586264, 882616, 15721191, 23930484, -4278325, -17892296, -1008780, 21613886, -418759,
--13877039, -19387482, -14272176, 20463372, 15347529, -30067456, 11651709, 14211510, -3930432, 10749766,
-31708670, 4045859, 8332237, -8941048, 8618926, -9542880, -5439039, -4359392, 3877819, 9294309,
-12502650, -2147, 6154152, -1727651, -135828, -4263829, 9686225, 29935386, -7536594, -7615514,
-11935714, 8717710, 2799245, -19114752, 15178951, -14928233, 11260331, 13386339, 3155190, 4547297,
--1546188, 21072184, 16676284, 1714766, 11868068, -6271189, 14497662, 3651259, 16156593, 22243636,
-1575716, 6812892, -615791, -6049462, 1610076, 10605885, 12365748, -18156438, -9737228, 6258841,
-23818814, -8749922, 16696148, 11232950, 5328981, -21292300, 5492727, 5379984, -24601572, 18064632,
--12301860, -16285979, -31422518, 10622528, 24793772, -7137699, -15175193, 6852084, 28440736, 18253612,
-7455527, 21554294, 15493558, -5696201, -42977592, 4807142, 20947630, 10009421, 4219269, -18839338,
--563178, -13022341, 2518462, -1332514, 3017752, 6359236, 8386461, 3782793, -23757612, 13420162,
--3845606, 4091493, 16941498, 6833293, 2597382, -6218039, 21098490, -660888, 20927766, -26222386,
--8562017, 8575439, -16214575, -13079786, 35970, -3245922, -12961674, 1658394, 18192408, -361314,
-244813, -9772124, -22034792, -13027173, -7114077, 9046275, -3484829, 2411087, -11538967, -10794327,
--6785512, 17117592, -12814035, 10075456, 5047661, 5905043, 388158, -16723529, -26134340, -1451162,
-14850923, -19859928, 8183524, -17001628, 9251360, -17904644, -2788508, -17643188, 23928874, -23029078,
--16152298, 6645388, 2102923, 12294344, 7648263, -5876052, -4972499, 7158637, -35811436, -4606890,
-11433203, 3208341, -8112657, -12432320, 1755031, -11791296, -591632, -18504330, 18400714, -6584185,
-11733851, -24221468, -13479218, 38655, 30941482, -24295556, -1569811, -18894098, -14878304, -4169340,
-19628538, -3860102, 9060234, 9468792, -9470940, -20999706, 31038118, 13812078, -16736414, 3956739,
-2907693, 8980777, -16230681, 15778099, -630823, -31173410, 4096862, 6987375, 8959302, -25700548,
--5516886, 3970697, 24022826, 5079336, 13784698, -33298344, -19758460, 11118060, 942208, 22886270,
--4949950, -3015604, 2747705, 12017855, 11439645, 4704063, -42013908, 12949326, -3755949, 10676752,
-24401320, -6489696, -553514, -25526602, 10179072, 12657805, -12017318, -7534447, 25885232, 38136088,
-12220793, 6192806, -7803419, -31644246, -20854750, -7474854, -773094, -18214956, 13661217, -37307696,
-1345935, -23070416, 11297375, -8825621, -25598006, -2655364, -7217693, -9286256, -29088202, -21328270,
-5553393, 22179212, -15595026, 27483496, -24186572, -16021839, 4678830, -2711735, 12252468, -8280697,
--8691403, -11900281, -3616363, -39505648, -11650636, 789737, -2073932, -6853694, -15770583, 11983496,
--13981729, 20618528, -6808060, -2876018, -15136538, -13897440, -26222922, -11505681, 9310952, 3760781,
--1803349, 1557463, -9535364, -7150584, -12200928, -10155450, 5141613, 7682623, 3511673, -22490596,
-25698400, 3583077, -11210402, 20781736, 14763950, 24820080, -4596152, 14681272, -33538862, -17748952,
--31607738, 32980516, -10158135, -21795348, -21348134, -45093400, -18815714, 33240900, -1534914, -14906758,
-7975218, 39975408, 51306068, -5216238, -23150410, -5790153, -8883603, -23505820, 9761924, 265751,
--16958678, 48888004, 16933446, -12094628, -34322696, -3501472, 8110509, 8531416, 9898826, 23094040,
--6877854, -12160663, 10997801, -43294880, -28639378, -11720966, -3111167, 4016868, -22863722, -21457656,
-21988622, 16874390, -13445932, -26531086, 16451872, -186294, 29020020, -24286430, -5365488, -8766028,
--1401770, -19396072, -27707908, 22571664, -17139604, -11685532, -21133386, -5577552, 14140106, 12327093,
--8442832, 976031, 2593087, 16709570, 27099096, 18934900, -34444564, -17561048, -20396262, -6102612,
-11886322, 3331284, -23570244, -34959960, 28814398, 849330, -28289338, -47790636, 23449984, -6961605,
-12355010, 11056320, 11768210, 1340567, 7939784, -17758616, -9484898, 4880157, 18388902, 22695144,
--27498528, -23041426, 66575216, -5064840, -6174016, -9669045, -20603494, -2006824, 24234890, 38694436,
--17361868, -10417443, -3555696, -17210470, -3998615, -9584220, 15636902, -15524159, 17858474, 8613020,
--5611912, -21754546, -1212791, -8791261, 33493228, -17879412, -10737, 354335, -2846490, 15271830,
--9061844, -929860, 7366406, -4196720, -31791884, 16824460, -14207215, -16697222, -3375844, -17811766,
--9995463, -32654100, 32244466, 1899986, -20447802, -38268696, 23223962, -22334366, -21625160, 875100,
--16654809, 8474507, 15078020, 44776644, -11723650, 18045306, -2858838, -20422032, -17208324, -4271882,
-67260264, -57307212, -3272765, 62278100, -54654532, -19481434, 32498406, -2608119, -24012626, 61428232,
--27926414, -8799314, 32470490, -38736848, 37004364, -4942434, -21082384, 20439750, 7950522, -2398739,
-5228049, 3800509, -3110093, 8212515, -6503654, -8791261, -3333968, -12631499, -10304163, -24769614,
--8713952, 23570780, 22315576, -31069256, 12064563, 18393198, 15641197, -4292820, -30602716, -1610076,
--14477261, -36048736, 24887188, 61125976, -32974612, -2383707, 43885440, -10710575, -13744432, 35905388,
-27074936, 14064407, -12444668, -26361972, 10801843, -9842454, -16012175, 64085744, 47651052, -36160404,
--26116086, 35416836, -59885264, -19991462, -15644955, -8875550, 44969920, 30479772, 20822538, 22611392,
--70308616, -23236846, 71208408, 42119672, 10552735, -16117939, 26330298, -21817360, -46394236, -30084636,
-27100170, -14926622, -336618, 31337692, 55737400, -1968169, -23890756, 9678172, 27738510, -60724932,
-27099634, 878858, -5710159, 31989990, -4772246, -23130010, 12492986, 11455752, 31281320, 17993766,
--16042777, 1487132, 5315022, 21641804, 5446019, -23619636, -367220, -777926, 5506148, -21918292,
--24009404, 36230196, -12268037, -36610840, 19719806, 33689724, -18034030, -5683853, 2732673, 23313620,
--26477400, -34844532, 10304163, 30663920, -5944235, -12095702, -6859600, -6605660, 13597330, 6281927,
-8340827, 76328008, 4716411, -8895951, 1564979, 3163780, 41350336, 2110977, -13995151, 10050760,
--31409632, -17850420, 8764418, 1101659, 35554812, 28849296, -17583060, -4217121, -16628503, 1951526,
-12955769, 4433480, 4227859, 13951128, -8781061, -35633196, 9623411, 26826366, -11825119, 24178518,
--34562140, 18680960, 9935870, -26993332, 4298189, 4563403, -11828877, 19072876, -41609108, -132249024,
--156103808, -15899432, -108874200, 39936216, 258542528, 138103056, 209625536, 220959968, -26219164, -66328792,
-17098264, -164495104, -200507856, -63406604, -220512752, -177529248, 42584064, -128276176, -36294084, 249559072,
-89212376, 175844016, 305456992, 180872880, 79977656, 60243360, 19978040, -138905152, -172205632, -58226872,
--234518096, -234904640, 28994788, -176140368, -144628736, 84031032, -148201072, -152600192, 112219976, 44402984,
--22305912, 266836656, 250093792, 158907888, 339659968, 319740448, 108533824, 126389616, 98557152, -163208224,
--163197488, -206366736, -406961024, -480461888, -345406112, -344069824, -253527088, 8209830, 23448374, 167160672,
-289638112, 356904256, 325891904, 378216416, 325039360, 193135552, 131750272, 47417512, -57416732, -134692864,
--192677600, -159542464, -232629392, -248321056, -149541104, -71778568, -35441532, 0, 0, 0,
-0, 0, 0, },
+661962, -4917201, -1250372, -1280437, -550293, -1284195, 2446521, 5765994, 878858, 4686346,
+1743757, -1127429, -2554969, 2191507, -775778, 4634270, 3273302, -1581622, -2910914, -3406983,
+1711545, -1139777, 398358, -2471217, -1035624, -631360, 1984275, -2419140, 1961726, -776852,
+-2707977, 3482145, 3521336, 576063, 1317481, 699543, -690416, -2273112, -7385197, 2042794,
+-2382633, 2250026, -2359011, -2858838, 2126546, -2518998, 1229434, 1348620, -5202279, 216359,
+781147, 1294396, -2047089, 2754685, -2732673, -1758789, -915902, -1242856, 1814624, -301721,
+876710, 1561221, 2297271, -404801, -2460480, -2486786, 162135, -5215164, -2262374, -481573,
+4718022, 1422708, 1893544, 1471563, 2643016, -1112933, 2631741, 4597226, -3535832, -3068217,
+-4711043, 4155918, 2042794, 307627, 6177237, -683974, -135828, -1968169, -1600949, 1291711,
+-1725503, -3311420, 1770063, 464930, 5149129, 7052873, -1911261, -4251481, -5217312, -390305,
+-3008625, -2909304, -2009508, -464393, -4168803, 3888019, -1532230, -1623498, -2778844, -2076617,
+696858, 4371740, -525597, -1359894, 1280437, -4447439, 3213173, -2806761, -9860708, 4773320,
+3162707, 5308043, 5530844, 972810, 2878702, -3020973, 759672, 4138738, 257698, -161598,
+-1097364, -682363, 2197413, -2198487, -1576253, -35433, 2076080, -1953673, -2331094, -3453691,
+4088809, 1460826, 401043, -1261110, -4330938, -435939, 2967286, 1578401, -829466, -1297617,
+2745558, -1151051, -14701136, 7648800, -734976, 202937, 2653753, 3738769, -5483063, -712965,
+-992674, 3104188, 1177895, -3368328, 10437844, -1141388, -656593, 4625143, 3807489, 1222992,
+2639794, 8501351, -4229469, 239981, -2159832, 824634, -2632815, 181999, 258772, 925565,
+-4742181, 372052, -1144609, -1818919, -210990, 2935610, -1648731, 2724083, 4019016, -6995428,
+927176, -2874944, -779000, -4332549, 2122788, -2597382, -448824, -1496259, -4362076, 1593433,
+-2934000, 1909650, 1070521, -2230699, -3187940, 13959, 2911988, 2115808, 5309117, 2363843,
+-2347737, -6675453, -487479, 1026497, 8213588, -2711198, -1328756, -257698, -1704565, -4502737,
+-2178622, -4238059, -709207, 3059091, -1001801, 3621194, 2133525, 1560684, 1803886, -2474438,
+11052025, 5917391, -1407139, -3996467, 6468221, -6846715, -864899, 4306779, -2627983, -1815161,
+-2753074, 7401840, -2161442, 2506114, 929324, 2479807, 10012643, -9402757, 3232500, 5186173,
+-2898029, -8678518, -4346507, -297427, 911070, -957778, -1276142, 4089346, 5836861, -131533,
+-3525631, 615254, -4558034, 1790465, -2721399, 2063732, 6231461, 2473901, -5499706, 175020,
+751082, 9099425, 2039573, 4724464, -851477, 2286533, 1957431, -10253161, 605054, 5370857,
+2774012, 5970005, -4508642, -2695629, -4469451, 1710471, 3680250, -639413, 1611150, 654983,
+-1926293, 1333051, -1271310, 2087354, 2236067, 47782, 3296388, 959925, 398358, 1591822,
+7204808, 1635309, 4384625, 4638565, 22447646, -5383742, -1750736, -3020436, 4835060, 3363496,
+7830799, 3337190, -817654, 3963181, 126165, 4396973, 1839320, 5976984, 386547, 5080947,
+6384469, -6415071, 1468879, 2142115, 1374390, 1461900, 1749125, -3642132, 210990, -4248260,
+-461709, 241592, -7681549, -4939750, 2161979, 388158, -99858, 3566434, 3240553, -1168231,
+-6644315, 2479807, 6263136, 4483409, 5835787, -1082869, 3194382, 6132677, -9353902, 3466576,
+4223564, -4187593, 5893232, -3581466, -826781, 1073205, 1155883, -2638184, 2741800, -313533,
+-1116155, -2744484, -2755759, 3812320, 3167539, 2035278, 3073586, 5605469, 2545842, 7590281,
+-1748589, -7269769, 7281044, 1890859, 3304977, 2277407, -1858647, 2762738, 728534, 1277753,
+4260071, 9385040, -11660299, 7050726, 1185948, 7218767, 1392643, -4774393, 1045825, 5435281,
+-7412040, -1974611, 462246, -8448201, -1905892, -6620155, -4062502, -4974646, -5193689, 1540283,
+-7891466, -5265630, -6334003, -2106145, 5579163, 1531693, -7534983, -3428458, -7854959, -2491081,
+1438277, 10311143, -9015136, 2970507, -2433636, -3887482, -6738804, -370441, 962610, 6314139,
+3547106, 165893, -6069863, -11071352, -248571, 2269353, 8042863, 2046015, 2554969, -6810208,
+2167348, 4250944, 402653, -72478, -3168612, -4078608, -993211, 2032593, 654983, -3025805,
+237297, -7602092, -709207, -6607807, 3812857, -2261837, 3900904, -6596533, -4102768, -8709657,
+-206695, -6098854, -1194538, 577673, -6053757, -4538707, 2715493, 2735357, -4769561, -27430346,
+4311611, 3038689, -7995082, -1832340, -142271, 205622, -1627256, -2684892, -2143189, -8180302,
+6125697, -3984119, 727460, -6808597, -2548526, 9757629, 8723615, -5653788, -3552475, 264141,
+-319975, -4630512, -5555540, -3823058, 464930, 422517, -18790, -545461, 2094870, -6653978,
+1888712, 253940, -11971684, -1380832, -3729642, 5422396, 7649874, 1276679, -1603097, 431644,
+-7122667, -8575976, 4402342, 8617852, 9283035, -2488934, 1497333, 5637682, 5486821, -2875481,
+5040144, 8711267, -608275, 7354595, 5897527, -7115150, 2117956, 531502, 7525320, -4649302,
+-5318244, 4592394, 5659157, -1701344, 310311, -8412230, 5798206, -4677757, 6165426, -10530723,
+1040993, 2530810, 5027259, 296890, -4336307, -8930311, -10832444, 3515968, -9597104, 11605539,
+11164231, 103616, -15663746, 6142877, 651224, -3131568, 10430865, -209917, -9416179, -1237488,
+11365557, -14788109, 248034, -3899830, -11673184, -3457449, 3758, -2529199, -6073621, 3105261,
+-5062693, 3675418, -4338991, -8050916, 3948686, -868120, 5761162, -11857331, 4534949, 8806294,
+-3841312, 448287, 8971650, 13075491, -3733400, -3041911, -11446625, 345208, -9469866, -1079111,
+-6638946, -3221, 747861, 5075041, 2436320, 4603131, -3715684, 564788, 2916820, -937914,
+12210055, -8556649, -4182225, 15880105, 16193637, -3598646, -1147293, -10630044, -5343476, 120796,
+-2937221, -7191386, 9779104, 2611877, -2622615, 14022531, 2783676, -7394860, -156229, -13743358,
+-6533182, -7968238, 13070122, -3550864, -193810, 8971650, -2198487, 5270462, -2961917, -11546483,
+-768262, -70867, -2375654, -6887517, -7595113, 3848828, -6012954, 10509785, -3264712, -7820062,
+6575058, 13200045, -3301756, 3599720, -3568581, 7553774, 190052, -16353625, 5793911, 8828305,
+927713, -2877628, -9383430, 7704635, 5325760, 4878546, 1081258, 2983929, 10620917, -7700877,
+1374390, 1813013, -5823439, -11661910, 10910291, 5738613, 20254528, -1347009, 8976482, -3310346,
+-6269579, 707596, -915902, -687195, -1727651, -7012608, 14576045, -137439, 1212255, 1535451,
+-1943473, 11360725, 1591285, 9360881, 4239670, 985695, 10736881, -5815386, -11924977, -3244848,
+2228551, 537408, -4980552, 4670777, -3659849, -18155364, 1220845, 1617592, -9954124, 11162620,
+-17095580, 3428995, 8421894, 12290049, -11819213, -1237488, 8891656, 6377490, 7662222, 1810329,
+15593953, 3347390, 6767795, -1316944, 1407676, 6782290, 3925063, 7747584, 1081795, -9396852,
+-14034343, 8292508, 4243965, -2184528, 2219424, 4930623, -13101798, 726386, -8081518, 4625680,
+38118, 9536975, -2354716, 4611185, -1556926, 2947421, 1723356, 270046, 5524939, 7366406,
+2903398, 4558571, -10162429, 5104569, -1379758, -17884780, -11855720, 3896609, -13081397, -183073,
+11718281, -7410966, 22788022, 8866423, -3997541, 12940200, 1057636, -3081639, -8509404, -7984881,
+-11893301, -941135, 7721815, -7805030, -616328, 9170829, 4153770, 5783174, 16828756, 3408594,
+11193759, 1674500, 2667712, -15646566, 5601174, 3483219, -9258339, -329639, 5708012, -125091,
+3974992, -9458055, 7230578, -607201, 2027761, 6799470, -12831215, -8759586, 2181307, -183610,
+6836514, 14387067, -1490891, 3587908, 15289547, -5740224, -10662256, -597537, 11125576, -2447058,
+-13261785, 1055488, 4582193, -2554969, -4335233, -950262, 16491064, -3184718, 14136348, 10907606,
+12849468, 728534, 734439, 7690676, 2215666, -2677375, 2319819, -10437844, 7435662, 13164075,
+7820599, 1099512, 6868190, -5829881, 5122822, -5688148, 7694434, -7531225, -473520, -695248,
+-1248225, 23329188, -4234838, -1469953, -2831457, 3063386, 5606543, 12107513, 13157095, -8007430,
+2337536, 13662291, -9029632, -10242960, 4578435, -4852776, 4577362, 26015690, -14399415, 760209,
+350577, -8509404, -1814087, -9332964, -14591078, -11262478, -15183783, -5968931, 1377611, 11711302,
+8530342, 2994666, 12244415, 3582003, 7344394, 6879464, -3748433, 10722923, 11456825, 8179229,
+-16304770, -9082245, -9608916, 3340948, -6755447, 318901, 4138201, -4743792, -11662984, 7179575,
+-5760625, 2499134, 1978906, 11406359, -12421582, 18552112, -18848464, 18968186, -526670, 9511742,
+-9724343, 3346853, -21062520, -11434277, -10531797, 9081708, 3617436, 13174275, -1880122, 15032,
+-7260106, -16388521, 10136660, -8891119, -5316633, 7961259, 18015240, 18226768, 7783555, -1030255,
+-12957379, 7398081, -19542102, -1231582, -11458436, 6311992, 19444390, -19166828, 6231461, 9349607,
+-12996571, -857383, -2989834, 7133941, -8939438, -11251741, 1498407, -4706748, -16996796, -14662481,
+-16968342, -5482526, 9286793, -13189308, 7067369, -17746804, -4035122, -7394860, -6967511, -14240501,
+-2250026, -5878200, -9078487, 5516886, -10006737, 8724152, 927713, 6635725, -12901545, -22896470,
+-2962454, 3711926, -10377715, -7580081, 2443837, 2071248, -11977053, -5913096, 14163728, 6686727,
+-3240016, 7650411, 20824686, 49929, 1540820, 1545651, -2954401, -1056025, 1948841, 2283312,
+-18281528, -6811818, -22072374, -7169374, -20707112, -9700721, -369904, 22009560, 9076877, -11699491,
+-14618995, 7925289, 16281147, 10823318, -9574019, 13266080, -6860674, -1373316, -25659208, -7395397,
+-4891968, -3152506, -18272938, -26332982, 6386617, -46708, -21360482, 5058935, 27655294, 4296041,
+758599, -18272402, -4772783, 938987, 292058, -18730352, 12074227, -18465138, -3807489, 4240207,
+-8869644, 20973400, -17463338, -18152680, -14599131, 20226074, 9164923, -12097312, -10630581, -7403450,
+-2151779, -6726993, -6508486, 672699, 7758859, 19837918, -2087891, 8212515, 7669738, 6857452,
+-13289166, -17294760, -11871826, 13630616, -2196876, 16632798, 5978058, -2465311, -23163296, -19742354,
+-1641751, 912681, -13244069, -9203578, -5993627, -7265474, -30353608, -7469485, -7049115, -11924977,
+-4926328, -8138963, -13583371, 8997420, 19801946, 9680856, 1168231, 10281078, 15112916, -6278706,
+5313949, 2452963, 2227478, -1906429, -2806224, 8710194, 5022965, 15443092, -2910914, 8053,
+7194607, 31586264, 882616, 15721191, 23930484, -4278325, -17892296, -1008780, 21613886, -418759,
+-13877039, -19387482, -14272176, 20463372, 15347529, -30067456, 11651709, 14211510, -3930432, 10749766,
+31708670, 4045859, 8332237, -8941048, 8618926, -9542880, -5439039, -4359392, 3877819, 9294309,
+12502650, -2147, 6154152, -1727651, -135828, -4263829, 9686225, 29935386, -7536594, -7615514,
+11935714, 8717710, 2799245, -19114752, 15178951, -14928233, 11260331, 13386339, 3155190, 4547297,
+-1546188, 21072184, 16676284, 1714766, 11868068, -6271189, 14497662, 3651259, 16156593, 22243636,
+1575716, 6812892, -615791, -6049462, 1610076, 10605885, 12365748, -18156438, -9737228, 6258841,
+23818814, -8749922, 16696148, 11232950, 5328981, -21292300, 5492727, 5379984, -24601572, 18064632,
+-12301860, -16285979, -31422518, 10622528, 24793772, -7137699, -15175193, 6852084, 28440736, 18253612,
+7455527, 21554294, 15493558, -5696201, -42977592, 4807142, 20947630, 10009421, 4219269, -18839338,
+-563178, -13022341, 2518462, -1332514, 3017752, 6359236, 8386461, 3782793, -23757612, 13420162,
+-3845606, 4091493, 16941498, 6833293, 2597382, -6218039, 21098490, -660888, 20927766, -26222386,
+-8562017, 8575439, -16214575, -13079786, 35970, -3245922, -12961674, 1658394, 18192408, -361314,
+244813, -9772124, -22034792, -13027173, -7114077, 9046275, -3484829, 2411087, -11538967, -10794327,
+-6785512, 17117592, -12814035, 10075456, 5047661, 5905043, 388158, -16723529, -26134340, -1451162,
+14850923, -19859928, 8183524, -17001628, 9251360, -17904644, -2788508, -17643188, 23928874, -23029078,
+-16152298, 6645388, 2102923, 12294344, 7648263, -5876052, -4972499, 7158637, -35811436, -4606890,
+11433203, 3208341, -8112657, -12432320, 1755031, -11791296, -591632, -18504330, 18400714, -6584185,
+11733851, -24221468, -13479218, 38655, 30941482, -24295556, -1569811, -18894098, -14878304, -4169340,
+19628538, -3860102, 9060234, 9468792, -9470940, -20999706, 31038118, 13812078, -16736414, 3956739,
+2907693, 8980777, -16230681, 15778099, -630823, -31173410, 4096862, 6987375, 8959302, -25700548,
+-5516886, 3970697, 24022826, 5079336, 13784698, -33298344, -19758460, 11118060, 942208, 22886270,
+-4949950, -3015604, 2747705, 12017855, 11439645, 4704063, -42013908, 12949326, -3755949, 10676752,
+24401320, -6489696, -553514, -25526602, 10179072, 12657805, -12017318, -7534447, 25885232, 38136088,
+12220793, 6192806, -7803419, -31644246, -20854750, -7474854, -773094, -18214956, 13661217, -37307696,
+1345935, -23070416, 11297375, -8825621, -25598006, -2655364, -7217693, -9286256, -29088202, -21328270,
+5553393, 22179212, -15595026, 27483496, -24186572, -16021839, 4678830, -2711735, 12252468, -8280697,
+-8691403, -11900281, -3616363, -39505648, -11650636, 789737, -2073932, -6853694, -15770583, 11983496,
+-13981729, 20618528, -6808060, -2876018, -15136538, -13897440, -26222922, -11505681, 9310952, 3760781,
+-1803349, 1557463, -9535364, -7150584, -12200928, -10155450, 5141613, 7682623, 3511673, -22490596,
+25698400, 3583077, -11210402, 20781736, 14763950, 24820080, -4596152, 14681272, -33538862, -17748952,
+-31607738, 32980516, -10158135, -21795348, -21348134, -45093400, -18815714, 33240900, -1534914, -14906758,
+7975218, 39975408, 51306068, -5216238, -23150410, -5790153, -8883603, -23505820, 9761924, 265751,
+-16958678, 48888004, 16933446, -12094628, -34322696, -3501472, 8110509, 8531416, 9898826, 23094040,
+-6877854, -12160663, 10997801, -43294880, -28639378, -11720966, -3111167, 4016868, -22863722, -21457656,
+21988622, 16874390, -13445932, -26531086, 16451872, -186294, 29020020, -24286430, -5365488, -8766028,
+-1401770, -19396072, -27707908, 22571664, -17139604, -11685532, -21133386, -5577552, 14140106, 12327093,
+-8442832, 976031, 2593087, 16709570, 27099096, 18934900, -34444564, -17561048, -20396262, -6102612,
+11886322, 3331284, -23570244, -34959960, 28814398, 849330, -28289338, -47790636, 23449984, -6961605,
+12355010, 11056320, 11768210, 1340567, 7939784, -17758616, -9484898, 4880157, 18388902, 22695144,
+-27498528, -23041426, 66575216, -5064840, -6174016, -9669045, -20603494, -2006824, 24234890, 38694436,
+-17361868, -10417443, -3555696, -17210470, -3998615, -9584220, 15636902, -15524159, 17858474, 8613020,
+-5611912, -21754546, -1212791, -8791261, 33493228, -17879412, -10737, 354335, -2846490, 15271830,
+-9061844, -929860, 7366406, -4196720, -31791884, 16824460, -14207215, -16697222, -3375844, -17811766,
+-9995463, -32654100, 32244466, 1899986, -20447802, -38268696, 23223962, -22334366, -21625160, 875100,
+-16654809, 8474507, 15078020, 44776644, -11723650, 18045306, -2858838, -20422032, -17208324, -4271882,
+67260264, -57307212, -3272765, 62278100, -54654532, -19481434, 32498406, -2608119, -24012626, 61428232,
+-27926414, -8799314, 32470490, -38736848, 37004364, -4942434, -21082384, 20439750, 7950522, -2398739,
+5228049, 3800509, -3110093, 8212515, -6503654, -8791261, -3333968, -12631499, -10304163, -24769614,
+-8713952, 23570780, 22315576, -31069256, 12064563, 18393198, 15641197, -4292820, -30602716, -1610076,
+-14477261, -36048736, 24887188, 61125976, -32974612, -2383707, 43885440, -10710575, -13744432, 35905388,
+27074936, 14064407, -12444668, -26361972, 10801843, -9842454, -16012175, 64085744, 47651052, -36160404,
+-26116086, 35416836, -59885264, -19991462, -15644955, -8875550, 44969920, 30479772, 20822538, 22611392,
+-70308616, -23236846, 71208408, 42119672, 10552735, -16117939, 26330298, -21817360, -46394236, -30084636,
+27100170, -14926622, -336618, 31337692, 55737400, -1968169, -23890756, 9678172, 27738510, -60724932,
+27099634, 878858, -5710159, 31989990, -4772246, -23130010, 12492986, 11455752, 31281320, 17993766,
+-16042777, 1487132, 5315022, 21641804, 5446019, -23619636, -367220, -777926, 5506148, -21918292,
+-24009404, 36230196, -12268037, -36610840, 19719806, 33689724, -18034030, -5683853, 2732673, 23313620,
+-26477400, -34844532, 10304163, 30663920, -5944235, -12095702, -6859600, -6605660, 13597330, 6281927,
+8340827, 76328008, 4716411, -8895951, 1564979, 3163780, 41350336, 2110977, -13995151, 10050760,
+-31409632, -17850420, 8764418, 1101659, 35554812, 28849296, -17583060, -4217121, -16628503, 1951526,
+12955769, 4433480, 4227859, 13951128, -8781061, -35633196, 9623411, 26826366, -11825119, 24178518,
+-34562140, 18680960, 9935870, -26993332, 4298189, 4563403, -11828877, 19072876, -41609108, -132249024,
+-156103808, -15899432, -108874200, 39936216, 258542528, 138103056, 209625536, 220959968, -26219164, -66328792,
+17098264, -164495104, -200507856, -63406604, -220512752, -177529248, 42584064, -128276176, -36294084, 249559072,
+89212376, 175844016, 305456992, 180872880, 79977656, 60243360, 19978040, -138905152, -172205632, -58226872,
+-234518096, -234904640, 28994788, -176140368, -144628736, 84031032, -148201072, -152600192, 112219976, 44402984,
+-22305912, 266836656, 250093792, 158907888, 339659968, 319740448, 108533824, 126389616, 98557152, -163208224,
+-163197488, -206366736, -406961024, -480461888, -345406112, -344069824, -253527088, 8209830, 23448374, 167160672,
+289638112, 356904256, 325891904, 378216416, 325039360, 193135552, 131750272, 47417512, -57416732, -134692864,
+-192677600, -159542464, -232629392, -248321056, -149541104, -71778568, -35441532, 0, 0, 0,
+0, 0, 0, },
},
{
{
-207769,
-2129230, 2378338, 6924561, -845035, 1109712, 818191, -422517, 3914863, 2948495, -5400922,
--3054796, -4917201, -2898566, -550830, -3492345, 56371, 377957, 250182, -486942, -312459,
--4798016, -762894, 1109175, 1853278, -2304787, 2971581, 912144, -2384244, -1576790, 545461,
-2966749, -988379, -1027571, -1480153, -3993783, 802085, -5181878, -431644, -2572149, -2367064,
--1709397, 1088774, -1753420, -2943126, -2068027, -301721, -1503239, -4112431, -1752347, -1159104,
--1043140, -3055332, 427886, -1483374, 3561602, 711354, -4119411, -2372433, 5035849, -1497870,
-1408212, -2736431, 1346472, 2304250, 2122251, -3716757, 1923072, 2672544, 1945620, -186831,
--2221572, -1426466, -2022393, 1388348, -625992, 1056562, -9175124, -10882910, 5218922, 67109,
-8002598, 2720862, 3404835, 2065342, 3117610, -373662, -333934, -2141041, -5625334, -3409667,
-1220308, -565862, -1209570, -944356, 2666101, 1928440, -171799, 2277943, -2623151, -6467147,
-1763084, -1758252, 498216, -3469260, 2273648, -2908230, -1466195, -1364189, 4228932, -1396938,
--222801, -2204929, -675384, -5349919, 1512365, -1225139, 2527588, -2757906, 162135, -1519882,
--4145717, 855235, -543850, -1503239, 1636919, 2849711, -816581, -2461016, -5972689, 71404,
--3598109, 1136556, -61740, -2742337, -205085, -1475858, -925029, -4744328, 2622615, -4289599,
-1965484, -2049773, -2591476, -2734284, -4584878, 1826972, 128312, 539555, 2581275, -3627637,
--4775467, 2138357, -15545097, 0, -1905355, 4300336, 266288, 1751273, -1105417, 2211908,
-601832, 1949915, -1610613, 10295037, -1991791, -1286880, -4134443, 1597191, -5031018, -1555852,
-632434, -2428804, 211527, 3848291, 2388539, 1535451, 2773475, 3733400, -4129074, -1568737,
-198105, 2407329, -3860639, 4155918, -3171833, -1653026, 3561602, -518080, 1078574, -2487323,
-3339337, 3227668, 3721589, -5082557, -1207423, 5670431, 312459, -761283, -848793, 6167573,
-4393215, 4786204, 526670, -1030792, -944893, -266288, 360777, 758062, 2336999, -5823439,
-12348, -2680060, -2902324, -394063, 1618666, -2993055, 1475858, -2271501, -143881, -876173,
-702227, 2115808, 2738579, -969052, 253403, -1190780, -3687766, -844498, 5527623, 6513318,
--4220342, 752693, -3573950, 5986111, 1245004, -2208150, -3219078, -2815351, -450435, 928787,
-1716376, 7911330, -4410395, -531502, -1643899, 3224984, -8437463, -804233, 5675263, 55835,
-4799089, 2253784, 3886946, 4070555, 1861868, -532576, -3857954, 1561758, -941135, 745714,
-6620692, 1858647, 5712844, -2651606, -1304060, 673773, -7209103, 1130113, 5757941, -1358283,
-739271, -4355634, 3732327, 214748, 1794760, -5182952, 3479997, -3366718, -1793149, -3514894,
--4246649, 2961380, 1178969, -1090922, -2003065, -1791001, -1275068, -666257, 2924336, -2073932,
--4198868, -6573448, 6988449, 5587753, 761283, -6452115, 2707440, -2669322, 3432216, -1425392,
-1270774, -3233574, -1790465, -4048544, -1263794, 2767570, 26732414, -9929428, 11976516, -9518184,
-816581, 2838437, 2811056, -7860864, -2667175, -2645700, -13152800, -80531, 695785, -4751308,
--767189, -70330, 9403831, 1722819, -6560563, 4771172, 5228049, 1145683, 9532143, -7114077,
--2596845, -3817152, 2010045, 7604240, -558346, 444529, 2836289, -1407676, 3406446, 1494649,
-8718247, -1369558, 3411278, -5774584, 5205501, -4067871, 5811091, -177704, -6103149, -996432,
-8780524, -480499, 5933498, 3470871, 5703180, 395674, -4553739, -3812857, 68183, -2881923,
-4669167, 2956011, -4684736, 461172, -3672197, 5999533, -1730335, 4745402, 5893232, 775778,
-6069863, -588411, -3033858, -1367410, -3859028, -252866, 7962333, -5571110, -5273683, -2634426,
-2152316, -2723546, -22313428, 2387465, -6603512, -4740034, -7236483, -8768713, 3393024, 7741142,
--1218697, 2976949, 1191853, 3947612, 866510, 237834, 2376191, -4828080, 11023570, -632434,
--6477348, 7202660, -2255395, 3023657, -7293928, -4575751, -5177046, 2168422, 1320166, 5622112,
-142271, -3588982, 565325, -3211025, -3491809, -3903052, -1361505, -5410585, -2736431, 4929012,
--4664872, -386547, -3652870, -5735929, -2549600, 655519, 1802276, 3550864, -2876554, -2675228,
-3548180, 571231, 1327145, 897648, 2192581, 3297461, -5449777, -1862942, -566399, -7657927,
-2003602, -570157, 4443144, -4494684, -3436511, -4195110, 687732, 4716411, 3613678, 8340290,
-5531918, -5133560, 1999307, -2292439, 3800509, 2547453, -5811091, -28714004, 7418483, -8818642,
--7410966, -5429913, 587874, -1837172, 16330539, 1283122, 3624953, -2223183, -308701, -7221988,
-6437619, 1627256, -1370632, 1005559, 8513699, -4820027, -1923609, 1687922, 228170, 4097936,
--4278861, -2117956, 4511327, 1429687, 4120484, 165356, -5203353, -3521336, 2295660, -850940,
--2044941, -3384434, -2151242, -591095, 8003672, 1729261, -1957968, -229781, 184147, -2972654,
-5628555, 4225711, -1900523, -6815040, 1137093, -3824132, 5311264, 4029753, -4980552, 1283122,
--6317360, -5690832, -5065914, -6249715, -2488397, 726923, -3966939, -283468, -4337917, -3832722,
-6116034, 3585224, -6193343, -8319889, 288300, 5710696, -5590974, -4590247, 4879083, 3294240,
-5625871, -15015743, -1568737, 2431488, 7168301, -1492501, -3900367, 1627793, 10570451, -13507672,
-3012920, -2792803, -2600066, -6110665, 3527242, -10825465, -7121056, 3650185, -5743982, 3358665,
-15226196, -2756832, 6083285, -7252053, 7288560, -1956895, 2087891, -6497212, 2898029, 1817845,
--3593277, 1511292, -825707, -3336116, -348966, 4212826, 6477348, -5166309, -8376797, -6524056,
--6183143, 804233, 4715874, 12857521, -273267, 8675297, 8899172, -8352638, 6332393, -12296491,
--4635344, 842887, -5609764, -5049271, 3311957, -11878806, -2471217, 8409546, -3691525, -3029563,
-1003949, -3543348, 3315178, -3503620, 5759015, 7670812, -2153389, 2487323, 261456, -7475391,
-618475, -4767414, -3433290, -5835250, 3400004, 2873333, -5888937, 1001264, 3106872, 35542464,
--1558536, -13825500, -1609002, -438087, 1476395, 4640712, 1945083, -1430761, -1335198, -6849399,
--3229279, 4154844, 8744017, -6873559, -4368519, 5989869, 547071, -1853278, 2379412, -333397,
--8146479, -8114804, 11408507, -816044, -694711, -1650341, 5852967, -198105, 615254, 3977140,
--6243809, 6871411, 2712809, 1347546, 2468533, 6878390, -15955267, -6828461, -3961034, 14918569,
-1766305, 1384053, -4656819, -4673462, 4199941, -363998, 4864051, -1509681, -10401337, 1388885,
-945430, -1235340, 4589173, 2516851, 926639, 8413841, 19313932, -1266479, -2208150, 7825431,
-1663226, -2049236, 4441533, 15663746, -2593624, 3202972, 4537096, 4709969, 2744484, 4278861,
-2999498, 3644280, -6125697, 6131066, 8011188, -2915746, 6999186, 7818451, -10280541, -3066070,
--8758512, 8397735, 15787226, -7750806, -1968169, -8868034, -3993783, -10700911, 7370164, -6561637,
--2833068, -763967, -132607, -4291209, -5412733, 9462887, -8868571, -3245922, 755377, 6455873,
-6697465, -9997073, -3179350, 3807489, -8829379, 4854387, -7066832, -2774012, 2227478, 207232,
--4007205, -1017370, 1750736, 11161546, 1068910, 2554432, -315680, -9466645, 10070625, -5037460,
--8139500, 6318434, -5912023, -6199786, 7832410, -3604015, 671089, -1694365, 709743, 10908680,
--2250026, 2565169, -9842991, -573378, 10530186, 2637647, 10412074, 9507447, -3535295, -2157684,
--13131863, 2187212, -2635499, 8649527, 9739375, -5610301, 2011118, -18250926, -5636071, 6489696,
--6970732, 9936407, 6554657, -7991861, 2947421, -7468948, -663572, -10144713, 17063368, -4840428,
-1328219, -5206574, -15220827, 9002788, 3303367, -11382737, 7318625, -5070209, -3607236, 4126390,
-16201154, -7880728, 15665356, -210453, -10626823, 544387, 3845070, -9469329, 10788421, -5454609,
-8060580, 17041894, 1922535, -7861938, -1946157, -845035, 4173098, -6688875, -3389266, -862752,
-8669928, -2945274, -3042984, -11074573, -47245, -13106630, -2077154, 14905147, -2979634, 8490077,
-1181653, 2268817, -19110456, 268972, -12064563, 10048613, 17920752, 5379984, 4860829, 1065152,
-3119220, -10222022, 4129611, 5412733, -3962107, -1311039, -3393561, -2607582, 8577050, 136902,
-10341208, 29250338, 11601780, 2914135, -8968429, -9295383, -4631586, 5975910, -7492034, -4449586,
-29820494, -17353278, -1225139, -9020505, -16296180, -21516176, 4976257, -7442105, 5319854, -20413980,
-3092377, 6185290, 5539434, -9048422, -18748606, -14991583, -12645457, -670015, -7661148, -13962402,
--9773735, -5425618, -11453604, -8316131, 1061394, 12714714, -1084479, 1092532, -1209033, -12765717,
-6623914, -1927367, 1444183, -3503083, -8587250, 5872831, -10522670, -14591078, 11643656, -14250701,
-1989107, -952946, -19449760, -12057047, 6720550, -1153736, 8431558, -6815040, -20551418, -876710,
-133144, 6669548, 7428146, 17894982, -11309186, -39182988, -13902809, -13827110, 8191577, -25728464,
--8833137, -4819490, -23254026, -8241506, -617402, -4893042, -4442607, 4581657, -6213207, -845572,
--5681168, 5296769, -13160317, 5131949, 11555610, -12300786, -17294760, 7419019, 9229348, -2547453,
--2919504, -8489003, -9225590, 22854594, 8769249, -20735028, 7874286, -11188927, -463320, -10168335,
--20941724, 6562710, -10560251, -4522064, 1629940, 797790, -4727149, -18136574, -10519449, 9080098,
--10352482, -221191, -9018358, -15147276, -4985384, 16925392, 3689377, 3017752, -13697724, -4954245,
--1938641, -1962800, 7114077, 7332583, 10725607, 11713986, -4526896, 6530498, 3627637, -6979322,
-5552856, -11652783, -8558796, -8853538, 5228586, -10226854, 2063732, -15285789, -11490111, -7099581,
-17311940, 11789148, 13677323, 12639015, -10032507, 15892990, 2638721, 7032472, 24696598, -5167383,
--1741072, 3043521, -8236674, 3769371, -2281702, -14751065, 4893579, 10508174, -10067403, -10691247,
-2306398, 10951093, -5041218, -8860518, -20164872, 22266722, -18059800, 23069344, 12751221, 8551280,
-4647155, 8830990, 9633075, 8866423, 24823838, -9210557, 1400159, -2078227, -4727686, -1163936,
-2741800, -2745558, 4461934, -2045478, 7491497, 6194417, -1814624, -4789963, -25516400, -9381282,
--18624588, -1283658, 9192304, 9237938, 2662343, 4473746, 6812892, 5508296, 6581501, 17500918,
-26382374, 17498234, 3171297, -3930432, -5654862, -8238821, 8902393, 9006546, 10219875, -8548596,
--6801081, -10488310, -2171106, 12450036, -431644, 15014669, -10083509, 7707319, 4445291, 13339095,
--30034170, -21813066, -9299678, -12625593, -12806519, 2759517, -5706401, 17566416, 4657355, -21640192,
--2609193, 32263258, -12252468, 9167608, -6157373, 12302397, -7639136, -5838471, -862752, -14925548,
--7694971, 11576547, 4799626, 8429947, 22657026, 1550483, 14985141, 22151830, 15215459, -10634339,
--23426362, -1187022, -11013370, 24349780, 6649146, 18939732, -3248606, -10766946, -4312684, -11706470,
-3968013, -9092446, 545998, -10077067, 4536023, -7458211, -3499862, -15938087, -15957414, -1888712,
--22640384, 11757473, 7800198, -6955163, 10770704, -5718212, 3843459, 12283606, -14545980, -18626200,
-2678449, -4294431, 30166240, 12790949, -34357592, -9372692, -10198937, -17653926, -19065896, -37921340,
-5998996, -13702556, -4203699, 5242545, 686121, 7634305, -2203855, -4550518, -29310468, 3357591,
--13754096, 3528316, 15960098, 3615826, 10399726, -16849156, -23488102, 4860293, 13065827, 9880035,
-4239133, 9624485, 13442711, 19195820, 17467632, 40411884, 26544508, 37056440, 2005213, -7800735,
--25876642, -7872138, 3805341, 5545877, -6529961, -20009178, -7585986, 32011464, 12881681, -4807679,
-9396315, -1055488, -12416214, -3790309, -8303783, 21747030, -2261300, 988916, 8935143, 325881,
-10197863, -407485, 14665703, -14363981, 16971026, 3281892, -8882529, -5248450, -9791989, 15629386,
--22771916, -24082418, 14296872, 24618752, 380105, 16909824, 22813256, -26889716, 8000451, 5160403,
--2356863, -522375, 3015067, -10272488, 17575544, -11550241, -9982041, 7202124, -139050, -2315524,
--5459977, -5861557, 1467268, -17904644, -6548752, 13814762, -18710488, -4357781, -13181255, 51540,
-33508262, -11446088, 529892, 8923868, -1731946, -8610873, -24067386, 20780662, 7484518, -45023068,
-7757248, 9016747, -18375480, -43844636, 38738456, 23026394, 12186433, 8513699, 19065360, -44261784,
-17963700, 20193326, 8574365, -28413894, 15556372, 28346784, 13068512, 31262530, 11311333, 312996,
--1427540, -1230508, -5550709, 13070659, 22155588, 21008296, 7224672, -6857989, -11345156, 2312303,
--10370199, -12215961, 12176232, 8152922, 2067490, -12318503, -11877732, -3034395, -10400263, 4571993,
-25301652, -5173288, -8744553, 8006893, 4179003, 6876243, 8448738, -2784213, -5766531, 19739670,
-13020730, 5739150, 8402567, -2794413, -21306796, 3492345, 12783970, 343061, -16253767, 18820010,
-4226248, 26585848, -191126, 23439784, 1312649, -10829760, -4353486, 3249680, 34479460, -8033200,
-10829223, 4770098, 14468134, 3712462, -3342022, -8158827, 6584185, 41151156, -5718212, -5542119,
--27847494, 31870804, 143881, 28300076, 1284732, 2560874, -24501714, -7009924, -10718091, 19890530,
-5432060, 9235253, 5605469, -18509162, 2430415, 2319819, -16411607, -23426362, -24256902, 9193914,
--8726837, 23374286, 1753957, -6302328, -5412196, 5730023, -8306467, 2341831, 7014219, -8579734,
-5714991, 8523363, 2959769, 3114925, 17403208, 29632054, -5284958, 751082, 14717779, 12793097,
-17546552, -11784853, -4746476, 6232535, -16906066, 2726231, 1720134, -21715354, 29575682, -355409,
-15006079, 13896367, 9133248, -16218333, 1774895, 15939161, -11946988, 27498528, 7315940, -8498667,
-21841520, 17572322, 11471858, -35582732, -7515119, 8392366, -12618614, 2994129, -20613696, -4229469,
--31238370, -8213051, -5055177, -8382166, -34825204, -4414690, -9382356, 37820408, 18111340, 16165720,
-12542915, -5589900, 8589398, 19696184, 19024020, 9568650, -18556406, -21756156, 12586939, -1174137,
-9645423, -2269353, 22216256, -12970264, -1155346, -3066070, 19609746, -11111617, 32894618, 40212168,
-40741524, 4567161, -5270999, 8487929, -3126736, 11691975, 249108, 1990717, -9478993, -28932510,
--8496519, -27608050, 18966038, 18323942, -16531866, -11526082, -16593069, -6376416, -843424, 42908872,
-2277943, -18509698, -20512764, 890669, 30195768, 15817828, -55268712, -9413495, -8371965, 9697499,
-23099944, -22582938, -6204617, -12605192, 8068096, -31694174, 18339510, -3613678, 704912, 11304891,
-2772938, -14742475, 34609384, -1715303, 16966732, 37078988, 74048456, 44902272, -557809, 25115358,
-37250788, 47551732, 50864224, 12671227, 27404038, 10897943, -5196911, -14398341, 20973400, -21842594,
-41923712, -2866354, -5033702, 2497524, 33960844, -19430968, -1347009, 718333, 2880313, 13060996,
--5669894, 18074832, 8338679, -1662152, 6506876, 3289408, 15744276, -38491496, -9743133, 37044,
-7104950, -2752000, -26040924, 24925842, 1738388, 4297652, 11770895, -17965848, -5387500, -43039332,
-14977088, -9489730, 11862163, 32789928, -5245229, 7350837, -461709, 15823196, -22429392, -34661996,
-34678104, -2566243, 6729677, 5413807, 35171488, 22617834, 31266826, -511101, -31295280, 21123722,
-14857902, -8835821, -7612293, 19857782, 1648731, 25055766, 48322140, 32212792, 11722576, 1731409,
-37968584, -7631620, 16725140, 24136106, -9872519, 27827630, 26933740, 8189429, -11311333, -13280576,
--16461536, -2871186, -1857573, -55399172, 12306155, -9322227, -2541010, 42928736, 18095234, -13602698,
--10924249, -211527, -28372554, -34132640, 2332167, 348966, -19805168, 20484846, 1827509, -19545860,
-11764989, 37260452, -5696201, -21083458, 12629351, -12250857, -14522895, 7293392, 29225104, -9359807,
-3493419, 8752070, -10241350, -21839908, -15707232, 30346628, 9400073, -28599650, 23957864, 10600516,
--21233782, -9649718, 40066676, -12502113, -32934346, -15271293, 53544820, -53066468, -26470420, 33317136,
--15970836, -16139413, -53092240, 41636488, -34591128, 13315472, 104153, -4600447, -59955060, -15509127,
-48132088, 33295660, -41248328, -8823473, -18971944, -5971079, 6105296, 13074417, 10922639, -66486092,
-35508104, 31317828, 28064926, 2888903, 13547937, -31603980, -32279900, 59446104, 22142704, -45158896,
-8211978, 57163868, 18069464, 6461779, 1851668, 4643934, 24647206, 33743412, -7360500, 6630893,
-8881992, -5331665, 20360830, -10184441, -2622078, -7591892, 15670725, 11926587, -6116571, 11013907,
--14971719, -11878269, 15606301, -9439801, 17118130, -10811506, -4882304, 179315, 9398462, -55835,
-7010461, 3331821, 17372606, -11810623, -2392297, 869194, -6809134, 17262548, 14521821, -11361262,
--4208531, -6737193, 3854733, -14797773, 8326331, 5402532, 7628399, -5502927, -4703526, 19670414,
--22861038, -3249680, 9576166, -5473936, -4216048, 10674604, -28123982, 7535520, -10237055, 2469069,
--10030896, 25077240, -7984344, -9614821, 9881109, -4596689, -15949361, 31830540, -848793, 4256313,
--6781217, -10576894, -13658533, 17329120, -16597364, -5357435, 14087493, -43122008, -120503360, -99128384,
-51227684, 14159433, 118231856, 211882544, 30799748, 66290136, 23603530, -170343232, -54419384, -115794464,
--139828032, 3170760, 21411486, -58730456, 83249888, 109271488, 60945584, 174712288, 100379288, -23290534,
--42439108, -82122992, -159248256, -125839320, -37679748, -112284944, -16345572, 95580736, 15283641, 21722334,
-144758656, 73570640, 45144400, 151080304, 22599582, -42555608, 58552216, -80128520, -158189008, -66517232,
--133572944, -166848736, -3173981, -35321812, -44481904, 110115448, 121291488, 77071040, 183387056, 147987392,
-69406672, 62867048, 36066452, -123453464, -113726440, -143680080, -189709248, -152004256, -64444912, -44166760,
-3559991, 108737832, 132098696, 138666784, 132798240, 123593592, 26701812, 3552475, -19709604, -91211144,
--99941744, -53811108, -97657896, -22536768, 11902965, 1081258, 0, 0, 0, 0,
-0, 0, 0, },
+2129230, 2378338, 6924561, -845035, 1109712, 818191, -422517, 3914863, 2948495, -5400922,
+-3054796, -4917201, -2898566, -550830, -3492345, 56371, 377957, 250182, -486942, -312459,
+-4798016, -762894, 1109175, 1853278, -2304787, 2971581, 912144, -2384244, -1576790, 545461,
+2966749, -988379, -1027571, -1480153, -3993783, 802085, -5181878, -431644, -2572149, -2367064,
+-1709397, 1088774, -1753420, -2943126, -2068027, -301721, -1503239, -4112431, -1752347, -1159104,
+-1043140, -3055332, 427886, -1483374, 3561602, 711354, -4119411, -2372433, 5035849, -1497870,
+1408212, -2736431, 1346472, 2304250, 2122251, -3716757, 1923072, 2672544, 1945620, -186831,
+-2221572, -1426466, -2022393, 1388348, -625992, 1056562, -9175124, -10882910, 5218922, 67109,
+8002598, 2720862, 3404835, 2065342, 3117610, -373662, -333934, -2141041, -5625334, -3409667,
+1220308, -565862, -1209570, -944356, 2666101, 1928440, -171799, 2277943, -2623151, -6467147,
+1763084, -1758252, 498216, -3469260, 2273648, -2908230, -1466195, -1364189, 4228932, -1396938,
+-222801, -2204929, -675384, -5349919, 1512365, -1225139, 2527588, -2757906, 162135, -1519882,
+-4145717, 855235, -543850, -1503239, 1636919, 2849711, -816581, -2461016, -5972689, 71404,
+-3598109, 1136556, -61740, -2742337, -205085, -1475858, -925029, -4744328, 2622615, -4289599,
+1965484, -2049773, -2591476, -2734284, -4584878, 1826972, 128312, 539555, 2581275, -3627637,
+-4775467, 2138357, -15545097, 0, -1905355, 4300336, 266288, 1751273, -1105417, 2211908,
+601832, 1949915, -1610613, 10295037, -1991791, -1286880, -4134443, 1597191, -5031018, -1555852,
+632434, -2428804, 211527, 3848291, 2388539, 1535451, 2773475, 3733400, -4129074, -1568737,
+198105, 2407329, -3860639, 4155918, -3171833, -1653026, 3561602, -518080, 1078574, -2487323,
+3339337, 3227668, 3721589, -5082557, -1207423, 5670431, 312459, -761283, -848793, 6167573,
+4393215, 4786204, 526670, -1030792, -944893, -266288, 360777, 758062, 2336999, -5823439,
+12348, -2680060, -2902324, -394063, 1618666, -2993055, 1475858, -2271501, -143881, -876173,
+702227, 2115808, 2738579, -969052, 253403, -1190780, -3687766, -844498, 5527623, 6513318,
+-4220342, 752693, -3573950, 5986111, 1245004, -2208150, -3219078, -2815351, -450435, 928787,
+1716376, 7911330, -4410395, -531502, -1643899, 3224984, -8437463, -804233, 5675263, 55835,
+4799089, 2253784, 3886946, 4070555, 1861868, -532576, -3857954, 1561758, -941135, 745714,
+6620692, 1858647, 5712844, -2651606, -1304060, 673773, -7209103, 1130113, 5757941, -1358283,
+739271, -4355634, 3732327, 214748, 1794760, -5182952, 3479997, -3366718, -1793149, -3514894,
+-4246649, 2961380, 1178969, -1090922, -2003065, -1791001, -1275068, -666257, 2924336, -2073932,
+-4198868, -6573448, 6988449, 5587753, 761283, -6452115, 2707440, -2669322, 3432216, -1425392,
+1270774, -3233574, -1790465, -4048544, -1263794, 2767570, 26732414, -9929428, 11976516, -9518184,
+816581, 2838437, 2811056, -7860864, -2667175, -2645700, -13152800, -80531, 695785, -4751308,
+-767189, -70330, 9403831, 1722819, -6560563, 4771172, 5228049, 1145683, 9532143, -7114077,
+-2596845, -3817152, 2010045, 7604240, -558346, 444529, 2836289, -1407676, 3406446, 1494649,
+8718247, -1369558, 3411278, -5774584, 5205501, -4067871, 5811091, -177704, -6103149, -996432,
+8780524, -480499, 5933498, 3470871, 5703180, 395674, -4553739, -3812857, 68183, -2881923,
+4669167, 2956011, -4684736, 461172, -3672197, 5999533, -1730335, 4745402, 5893232, 775778,
+6069863, -588411, -3033858, -1367410, -3859028, -252866, 7962333, -5571110, -5273683, -2634426,
+2152316, -2723546, -22313428, 2387465, -6603512, -4740034, -7236483, -8768713, 3393024, 7741142,
+-1218697, 2976949, 1191853, 3947612, 866510, 237834, 2376191, -4828080, 11023570, -632434,
+-6477348, 7202660, -2255395, 3023657, -7293928, -4575751, -5177046, 2168422, 1320166, 5622112,
+142271, -3588982, 565325, -3211025, -3491809, -3903052, -1361505, -5410585, -2736431, 4929012,
+-4664872, -386547, -3652870, -5735929, -2549600, 655519, 1802276, 3550864, -2876554, -2675228,
+3548180, 571231, 1327145, 897648, 2192581, 3297461, -5449777, -1862942, -566399, -7657927,
+2003602, -570157, 4443144, -4494684, -3436511, -4195110, 687732, 4716411, 3613678, 8340290,
+5531918, -5133560, 1999307, -2292439, 3800509, 2547453, -5811091, -28714004, 7418483, -8818642,
+-7410966, -5429913, 587874, -1837172, 16330539, 1283122, 3624953, -2223183, -308701, -7221988,
+6437619, 1627256, -1370632, 1005559, 8513699, -4820027, -1923609, 1687922, 228170, 4097936,
+-4278861, -2117956, 4511327, 1429687, 4120484, 165356, -5203353, -3521336, 2295660, -850940,
+-2044941, -3384434, -2151242, -591095, 8003672, 1729261, -1957968, -229781, 184147, -2972654,
+5628555, 4225711, -1900523, -6815040, 1137093, -3824132, 5311264, 4029753, -4980552, 1283122,
+-6317360, -5690832, -5065914, -6249715, -2488397, 726923, -3966939, -283468, -4337917, -3832722,
+6116034, 3585224, -6193343, -8319889, 288300, 5710696, -5590974, -4590247, 4879083, 3294240,
+5625871, -15015743, -1568737, 2431488, 7168301, -1492501, -3900367, 1627793, 10570451, -13507672,
+3012920, -2792803, -2600066, -6110665, 3527242, -10825465, -7121056, 3650185, -5743982, 3358665,
+15226196, -2756832, 6083285, -7252053, 7288560, -1956895, 2087891, -6497212, 2898029, 1817845,
+-3593277, 1511292, -825707, -3336116, -348966, 4212826, 6477348, -5166309, -8376797, -6524056,
+-6183143, 804233, 4715874, 12857521, -273267, 8675297, 8899172, -8352638, 6332393, -12296491,
+-4635344, 842887, -5609764, -5049271, 3311957, -11878806, -2471217, 8409546, -3691525, -3029563,
+1003949, -3543348, 3315178, -3503620, 5759015, 7670812, -2153389, 2487323, 261456, -7475391,
+618475, -4767414, -3433290, -5835250, 3400004, 2873333, -5888937, 1001264, 3106872, 35542464,
+-1558536, -13825500, -1609002, -438087, 1476395, 4640712, 1945083, -1430761, -1335198, -6849399,
+-3229279, 4154844, 8744017, -6873559, -4368519, 5989869, 547071, -1853278, 2379412, -333397,
+-8146479, -8114804, 11408507, -816044, -694711, -1650341, 5852967, -198105, 615254, 3977140,
+-6243809, 6871411, 2712809, 1347546, 2468533, 6878390, -15955267, -6828461, -3961034, 14918569,
+1766305, 1384053, -4656819, -4673462, 4199941, -363998, 4864051, -1509681, -10401337, 1388885,
+945430, -1235340, 4589173, 2516851, 926639, 8413841, 19313932, -1266479, -2208150, 7825431,
+1663226, -2049236, 4441533, 15663746, -2593624, 3202972, 4537096, 4709969, 2744484, 4278861,
+2999498, 3644280, -6125697, 6131066, 8011188, -2915746, 6999186, 7818451, -10280541, -3066070,
+-8758512, 8397735, 15787226, -7750806, -1968169, -8868034, -3993783, -10700911, 7370164, -6561637,
+-2833068, -763967, -132607, -4291209, -5412733, 9462887, -8868571, -3245922, 755377, 6455873,
+6697465, -9997073, -3179350, 3807489, -8829379, 4854387, -7066832, -2774012, 2227478, 207232,
+-4007205, -1017370, 1750736, 11161546, 1068910, 2554432, -315680, -9466645, 10070625, -5037460,
+-8139500, 6318434, -5912023, -6199786, 7832410, -3604015, 671089, -1694365, 709743, 10908680,
+-2250026, 2565169, -9842991, -573378, 10530186, 2637647, 10412074, 9507447, -3535295, -2157684,
+-13131863, 2187212, -2635499, 8649527, 9739375, -5610301, 2011118, -18250926, -5636071, 6489696,
+-6970732, 9936407, 6554657, -7991861, 2947421, -7468948, -663572, -10144713, 17063368, -4840428,
+1328219, -5206574, -15220827, 9002788, 3303367, -11382737, 7318625, -5070209, -3607236, 4126390,
+16201154, -7880728, 15665356, -210453, -10626823, 544387, 3845070, -9469329, 10788421, -5454609,
+8060580, 17041894, 1922535, -7861938, -1946157, -845035, 4173098, -6688875, -3389266, -862752,
+8669928, -2945274, -3042984, -11074573, -47245, -13106630, -2077154, 14905147, -2979634, 8490077,
+1181653, 2268817, -19110456, 268972, -12064563, 10048613, 17920752, 5379984, 4860829, 1065152,
+3119220, -10222022, 4129611, 5412733, -3962107, -1311039, -3393561, -2607582, 8577050, 136902,
+10341208, 29250338, 11601780, 2914135, -8968429, -9295383, -4631586, 5975910, -7492034, -4449586,
+29820494, -17353278, -1225139, -9020505, -16296180, -21516176, 4976257, -7442105, 5319854, -20413980,
+3092377, 6185290, 5539434, -9048422, -18748606, -14991583, -12645457, -670015, -7661148, -13962402,
+-9773735, -5425618, -11453604, -8316131, 1061394, 12714714, -1084479, 1092532, -1209033, -12765717,
+6623914, -1927367, 1444183, -3503083, -8587250, 5872831, -10522670, -14591078, 11643656, -14250701,
+1989107, -952946, -19449760, -12057047, 6720550, -1153736, 8431558, -6815040, -20551418, -876710,
+133144, 6669548, 7428146, 17894982, -11309186, -39182988, -13902809, -13827110, 8191577, -25728464,
+-8833137, -4819490, -23254026, -8241506, -617402, -4893042, -4442607, 4581657, -6213207, -845572,
+-5681168, 5296769, -13160317, 5131949, 11555610, -12300786, -17294760, 7419019, 9229348, -2547453,
+-2919504, -8489003, -9225590, 22854594, 8769249, -20735028, 7874286, -11188927, -463320, -10168335,
+-20941724, 6562710, -10560251, -4522064, 1629940, 797790, -4727149, -18136574, -10519449, 9080098,
+-10352482, -221191, -9018358, -15147276, -4985384, 16925392, 3689377, 3017752, -13697724, -4954245,
+-1938641, -1962800, 7114077, 7332583, 10725607, 11713986, -4526896, 6530498, 3627637, -6979322,
+5552856, -11652783, -8558796, -8853538, 5228586, -10226854, 2063732, -15285789, -11490111, -7099581,
+17311940, 11789148, 13677323, 12639015, -10032507, 15892990, 2638721, 7032472, 24696598, -5167383,
+-1741072, 3043521, -8236674, 3769371, -2281702, -14751065, 4893579, 10508174, -10067403, -10691247,
+2306398, 10951093, -5041218, -8860518, -20164872, 22266722, -18059800, 23069344, 12751221, 8551280,
+4647155, 8830990, 9633075, 8866423, 24823838, -9210557, 1400159, -2078227, -4727686, -1163936,
+2741800, -2745558, 4461934, -2045478, 7491497, 6194417, -1814624, -4789963, -25516400, -9381282,
+-18624588, -1283658, 9192304, 9237938, 2662343, 4473746, 6812892, 5508296, 6581501, 17500918,
+26382374, 17498234, 3171297, -3930432, -5654862, -8238821, 8902393, 9006546, 10219875, -8548596,
+-6801081, -10488310, -2171106, 12450036, -431644, 15014669, -10083509, 7707319, 4445291, 13339095,
+-30034170, -21813066, -9299678, -12625593, -12806519, 2759517, -5706401, 17566416, 4657355, -21640192,
+-2609193, 32263258, -12252468, 9167608, -6157373, 12302397, -7639136, -5838471, -862752, -14925548,
+-7694971, 11576547, 4799626, 8429947, 22657026, 1550483, 14985141, 22151830, 15215459, -10634339,
+-23426362, -1187022, -11013370, 24349780, 6649146, 18939732, -3248606, -10766946, -4312684, -11706470,
+3968013, -9092446, 545998, -10077067, 4536023, -7458211, -3499862, -15938087, -15957414, -1888712,
+-22640384, 11757473, 7800198, -6955163, 10770704, -5718212, 3843459, 12283606, -14545980, -18626200,
+2678449, -4294431, 30166240, 12790949, -34357592, -9372692, -10198937, -17653926, -19065896, -37921340,
+5998996, -13702556, -4203699, 5242545, 686121, 7634305, -2203855, -4550518, -29310468, 3357591,
+-13754096, 3528316, 15960098, 3615826, 10399726, -16849156, -23488102, 4860293, 13065827, 9880035,
+4239133, 9624485, 13442711, 19195820, 17467632, 40411884, 26544508, 37056440, 2005213, -7800735,
+-25876642, -7872138, 3805341, 5545877, -6529961, -20009178, -7585986, 32011464, 12881681, -4807679,
+9396315, -1055488, -12416214, -3790309, -8303783, 21747030, -2261300, 988916, 8935143, 325881,
+10197863, -407485, 14665703, -14363981, 16971026, 3281892, -8882529, -5248450, -9791989, 15629386,
+-22771916, -24082418, 14296872, 24618752, 380105, 16909824, 22813256, -26889716, 8000451, 5160403,
+-2356863, -522375, 3015067, -10272488, 17575544, -11550241, -9982041, 7202124, -139050, -2315524,
+-5459977, -5861557, 1467268, -17904644, -6548752, 13814762, -18710488, -4357781, -13181255, 51540,
+33508262, -11446088, 529892, 8923868, -1731946, -8610873, -24067386, 20780662, 7484518, -45023068,
+7757248, 9016747, -18375480, -43844636, 38738456, 23026394, 12186433, 8513699, 19065360, -44261784,
+17963700, 20193326, 8574365, -28413894, 15556372, 28346784, 13068512, 31262530, 11311333, 312996,
+-1427540, -1230508, -5550709, 13070659, 22155588, 21008296, 7224672, -6857989, -11345156, 2312303,
+-10370199, -12215961, 12176232, 8152922, 2067490, -12318503, -11877732, -3034395, -10400263, 4571993,
+25301652, -5173288, -8744553, 8006893, 4179003, 6876243, 8448738, -2784213, -5766531, 19739670,
+13020730, 5739150, 8402567, -2794413, -21306796, 3492345, 12783970, 343061, -16253767, 18820010,
+4226248, 26585848, -191126, 23439784, 1312649, -10829760, -4353486, 3249680, 34479460, -8033200,
+10829223, 4770098, 14468134, 3712462, -3342022, -8158827, 6584185, 41151156, -5718212, -5542119,
+-27847494, 31870804, 143881, 28300076, 1284732, 2560874, -24501714, -7009924, -10718091, 19890530,
+5432060, 9235253, 5605469, -18509162, 2430415, 2319819, -16411607, -23426362, -24256902, 9193914,
+-8726837, 23374286, 1753957, -6302328, -5412196, 5730023, -8306467, 2341831, 7014219, -8579734,
+5714991, 8523363, 2959769, 3114925, 17403208, 29632054, -5284958, 751082, 14717779, 12793097,
+17546552, -11784853, -4746476, 6232535, -16906066, 2726231, 1720134, -21715354, 29575682, -355409,
+15006079, 13896367, 9133248, -16218333, 1774895, 15939161, -11946988, 27498528, 7315940, -8498667,
+21841520, 17572322, 11471858, -35582732, -7515119, 8392366, -12618614, 2994129, -20613696, -4229469,
+-31238370, -8213051, -5055177, -8382166, -34825204, -4414690, -9382356, 37820408, 18111340, 16165720,
+12542915, -5589900, 8589398, 19696184, 19024020, 9568650, -18556406, -21756156, 12586939, -1174137,
+9645423, -2269353, 22216256, -12970264, -1155346, -3066070, 19609746, -11111617, 32894618, 40212168,
+40741524, 4567161, -5270999, 8487929, -3126736, 11691975, 249108, 1990717, -9478993, -28932510,
+-8496519, -27608050, 18966038, 18323942, -16531866, -11526082, -16593069, -6376416, -843424, 42908872,
+2277943, -18509698, -20512764, 890669, 30195768, 15817828, -55268712, -9413495, -8371965, 9697499,
+23099944, -22582938, -6204617, -12605192, 8068096, -31694174, 18339510, -3613678, 704912, 11304891,
+2772938, -14742475, 34609384, -1715303, 16966732, 37078988, 74048456, 44902272, -557809, 25115358,
+37250788, 47551732, 50864224, 12671227, 27404038, 10897943, -5196911, -14398341, 20973400, -21842594,
+41923712, -2866354, -5033702, 2497524, 33960844, -19430968, -1347009, 718333, 2880313, 13060996,
+-5669894, 18074832, 8338679, -1662152, 6506876, 3289408, 15744276, -38491496, -9743133, 37044,
+7104950, -2752000, -26040924, 24925842, 1738388, 4297652, 11770895, -17965848, -5387500, -43039332,
+14977088, -9489730, 11862163, 32789928, -5245229, 7350837, -461709, 15823196, -22429392, -34661996,
+34678104, -2566243, 6729677, 5413807, 35171488, 22617834, 31266826, -511101, -31295280, 21123722,
+14857902, -8835821, -7612293, 19857782, 1648731, 25055766, 48322140, 32212792, 11722576, 1731409,
+37968584, -7631620, 16725140, 24136106, -9872519, 27827630, 26933740, 8189429, -11311333, -13280576,
+-16461536, -2871186, -1857573, -55399172, 12306155, -9322227, -2541010, 42928736, 18095234, -13602698,
+-10924249, -211527, -28372554, -34132640, 2332167, 348966, -19805168, 20484846, 1827509, -19545860,
+11764989, 37260452, -5696201, -21083458, 12629351, -12250857, -14522895, 7293392, 29225104, -9359807,
+3493419, 8752070, -10241350, -21839908, -15707232, 30346628, 9400073, -28599650, 23957864, 10600516,
+-21233782, -9649718, 40066676, -12502113, -32934346, -15271293, 53544820, -53066468, -26470420, 33317136,
+-15970836, -16139413, -53092240, 41636488, -34591128, 13315472, 104153, -4600447, -59955060, -15509127,
+48132088, 33295660, -41248328, -8823473, -18971944, -5971079, 6105296, 13074417, 10922639, -66486092,
+35508104, 31317828, 28064926, 2888903, 13547937, -31603980, -32279900, 59446104, 22142704, -45158896,
+8211978, 57163868, 18069464, 6461779, 1851668, 4643934, 24647206, 33743412, -7360500, 6630893,
+8881992, -5331665, 20360830, -10184441, -2622078, -7591892, 15670725, 11926587, -6116571, 11013907,
+-14971719, -11878269, 15606301, -9439801, 17118130, -10811506, -4882304, 179315, 9398462, -55835,
+7010461, 3331821, 17372606, -11810623, -2392297, 869194, -6809134, 17262548, 14521821, -11361262,
+-4208531, -6737193, 3854733, -14797773, 8326331, 5402532, 7628399, -5502927, -4703526, 19670414,
+-22861038, -3249680, 9576166, -5473936, -4216048, 10674604, -28123982, 7535520, -10237055, 2469069,
+-10030896, 25077240, -7984344, -9614821, 9881109, -4596689, -15949361, 31830540, -848793, 4256313,
+-6781217, -10576894, -13658533, 17329120, -16597364, -5357435, 14087493, -43122008, -120503360, -99128384,
+51227684, 14159433, 118231856, 211882544, 30799748, 66290136, 23603530, -170343232, -54419384, -115794464,
+-139828032, 3170760, 21411486, -58730456, 83249888, 109271488, 60945584, 174712288, 100379288, -23290534,
+-42439108, -82122992, -159248256, -125839320, -37679748, -112284944, -16345572, 95580736, 15283641, 21722334,
+144758656, 73570640, 45144400, 151080304, 22599582, -42555608, 58552216, -80128520, -158189008, -66517232,
+-133572944, -166848736, -3173981, -35321812, -44481904, 110115448, 121291488, 77071040, 183387056, 147987392,
+69406672, 62867048, 36066452, -123453464, -113726440, -143680080, -189709248, -152004256, -64444912, -44166760,
+3559991, 108737832, 132098696, 138666784, 132798240, 123593592, 26701812, 3552475, -19709604, -91211144,
+-99941744, -53811108, -97657896, -22536768, 11902965, 1081258, 0, 0, 0, 0,
+0, 0, 0, },
{
-713501,
-1232656, 3558381, 4639639, 60666, -2546379, 3241627, 1820529, 3834869, 4727686, -1896765,
--543850, -3818226, 2133525, 667331, -1609002, -4565014, 1530082, 2323577, 3124589, 180389,
--4326643, -2462627, 2504503, -2974265, 2615635, -644245, 876173, 1027034, 984084, -4387846,
-1372779, 1608465, -3016141, -5083094, -4860829, 263604, 388158, 1000191, -291521, 37581,
--1410360, 2350958, -417149, 2052458, -3111704, -389768, 3265786, 6025302, 472446, -126702,
-781684, 3526705, 2279017, -4315369, 1129576, 2113661, 1340567, 10737, 2299955, 2078227,
-1320166, 1343788, 825171, -1111323, -2521146, 3261491, 1413044, -2014877, -386547, -1651415,
-2185065, -43487, -1498944, 1830193, 1222455, 899259, -10684268, -12977781, 6375879, -2462627,
-5558762, -2923262, -3002719, -5858336, 1235340, 1121523, -381715, -3221, -772020, -4497368,
--641024, -2609730, -3027952, -2833605, -240518, 244813, -357019, -579284, 2043868, -687195,
--6805376, 4066797, 1914482, -2344515, 516470, -136902, -81068, 866510, 4127464, -2452963,
-94489, -7612830, 3600793, 683437, 1533840, 2553895, 4071092, -2422899, -1975685, -906238,
--3973382, 259846, -752156, 3241090, -1949915, -260919, -2027225, -2136746, 3802120, -3038689,
--1656247, 353798, -2939368, 2266669, -312996, -1294396, 2253784, 4530654, 59056, -173409,
--870268, 3886409, -4095788, 51003, -857383, 2052458, -1218697, -1736777, 3925600, -49392,
-560493, -1182190, -15477452, 2473364, 1681480, 5240934, -2238215, 1490354, 6124624, -2563559,
-1582159, -3937411, -5692979, 1890859, -3914863, -4474282, -4464082, 1154809, 1532230, -7558606,
-4230543, 2728378, -1381369, -2871723, 1611150, -837519, -1807108, 369367, 2333778, 1644973,
-3799972, 582505, -1314797, 3857954, -2151242, 8621073, 1860258, 5237713, 1967632, 4568235,
-1995012, 3085397, 1650341, 193274, 55835, 6457484, 1000727, -1277753, 309238, 3303904,
-2470680, 163746, -436476, -1594507, 600222, 7894687, 2183454, 3517041, -4079682, -2266669,
--4300873, -2872796, -4187593, 2756295, 1729261, -2842195, -2019172, 1525250, -2117956, 1722819,
--1120987, -922344, -3021510, -5020280, 1749125, -7973070, -1385664, -2021856, 8812736, 12074227,
--3468186, 3373160, -5732171, -140660, 534723, 15375983, -1371168, -3845606, -6366752, 324807,
-4551592, 7165079, -1385127, -9006010, -2445447, -3327526, -2308545, 3291019, -471910, 6011344,
-856846, -3131031, -7213398, 2399813, -481573, 1898376, -676457, 1012539, 3862249, 1509681,
--9110163, 1300838, 6244883, 3132642, 981937, 1617055, -1250372, 4343286, -5264020, -357556,
-4822712, -2959233, 277562, 7585986, -3131568, -163209, -2209224, 4742181, -4476967, -3363496,
-2543158, -4773856, -2105071, 6656663, 4161287, -5579163, -1746978, -670552, -1026497, -2435783,
-2509335, -2063732, 2845953, 121333, 857920, 1227287, 5425081, -383863, 7322919, 3621194,
--4508105, -2283849, -1812476, 4027606, 1824287, -49929, 28144920, -10735271, 5516886, -8257612,
--1074816, 34897, -825171, -4495220, 2085207, 3017752, 554588, -3339337, -6816113, -498216,
-3780645, 2602213, -3129421, -5206574, -635655, 4177930, 7863012, -4627291, -822486, -3558917,
--7322919, 530965, -3799436, 1886564, -2872796, 5246840, -9910637, 6265284, -659278, -6036577,
-1174674, 2149094, -910533, -3333432, -37044, 7285339, -510027, 955630, -1292248, 2601140,
-1116155, -2091649, -3060164, -6536940, 3822521, -1624035, -2041720, 2062658, -163209, -10807748,
-7841000, -11620571, -6693170, -8352101, 1533840, -1332514, 4604205, -3034931, 2377265, -5257040,
-2157147, -1751810, -2099702, -5845988, 3129958, 3110093, 6288369, -2270964, -665720, 856309,
--1959579, -371515, -22382686, 2310156, 243739, -1868848, -3454228, 3958349, -3045132, 2653216,
--818728, 12348, 3599183, 4771709, -2928631, 3535295, -1049583, -1845762, -6328098, -233539,
--8542690, -6152541, 7409356, 2752537, -2965138, -966905, -957778, 5282273, 2645163, -2565169,
-4626754, 3252364, 1741609, 1747515, 1888712, 3718368, 2963528, 3180960, 8205535, 7645579,
-3085397, 964757, -5368709, 5917391, -7906498, 1666447, -2357400, 6407555, -4946192, -5989869,
-10309532, -2303713, -5920076, -4883378, 7566659, 4986457, -24696, 4206384, 5361193, 2787434,
-8850854, -374736, -1859721, 5411122, 2757369, 490163, -277562, -4609574, 2344515, 3186866,
-6856916, 3236795, 3988414, -2626909, -4527970, -7818451, -2563559, -30273614, 7591892, -6803228,
--9833864, -9754408, 5376226, -7359964, 4708358, -9138617, 4391067, 3626026, 2126009, -9611063,
-5885179, -585726, 3419331, -8058970, 3852586, 8472360, 6490770, -251256, -3564823, 752693,
--2283849, -10180146, -2298344, -5170604, 1877438, -6614787, 4892505, 4572530, -2342368, -782758,
-6870337, -2144263, 4568772, -4502737, -6557342, 2668249, -396748, 2767570, 8556112, 4754529,
--599685, -16043313, -7646116, -2794950, 1888712, -3044595, 8246337, -14077829, 4010963, 1100585,
--346819, 3455301, -1930588, 5733782, -14209362, -7345468, 5276368, -14930917, -2750927, 5712844,
-2247879, -4026532, -9480603, 2529736, 6038187, 3430068, -1650341, -10967736, -730144, -1124208,
--840203, -13679471, 1863479, 2704756, 11337103, -10011569, 12341052, 3786014, -641561, -2428804,
--974958, 1515587, -8465917, -1268626, 3121368, -2461016, -4851166, -957778, 8601209, -8131984,
--1575179, 9054328, 325881, -2934537, 3313567, -3693135, 6604049, 3282429, 195421, 3680250,
--3397856, -5245766, -142271, 992674, 5002027, -9565429, -5196374, -3883724, -2862596, -2392834,
--2802466, 2153389, 768262, 1500017, -7289097, -7084012, -5888400, 935229, -9431211, -4625143,
-6111202, -3160559, 1588064, 1431298, 132070, 3280281, 3782793, 4185983, 4259534, 6680822,
--636729, 7208566, 12348, 4209605, -67109, -2829310, 268435, -5173825, 4544076, -6147709,
-7688529, -6861211, 670552, -6902550, 1801739, -6589017, -7117298, 6898791, 11481521, 39616240,
-1055488, -10672994, 2364916, -5531381, 16155519, -1970316, 4975720, 1712618, 1355062, -13103408,
--6404870, 8153459, 7272454, -10208064, -1281511, 238371, 10205916, 5280126, 4269198, 9965398,
-2103997, 1177358, 8791798, -2295660, -11797738, 2396592, 10145250, 6184216, -2954938, 745177,
-7278896, 4596689, 2469069, 199179, -6311455, 3946538, -6915434, 1307281, -13604309, 4296041,
-5085778, -605054, -5876052, 9618042, 5476084, -1329292, 7771207, 3802120, -5214627, 11436961,
-1919850, -3309272, 3289408, 11713986, 2517388, 262530, -8514236, -4882304, 2129230, 4335233,
-13573170, -3644817, -4160750, 1651952, 7864085, -3941706, -4552129, 42413, 10266046, 7147900,
--1222455, -6595459, 776315, 8530879, -2079838, 16925930, 8275328, 4159676, -14418205, -1947768,
--7571491, 13447006, -5801427, 6011344, 664109, 8254927, 2853469, 826781, -1321239, 3091840,
--4603668, -6369974, -17041356, -12579959, 3375844, 10385768, 13852343, -5747203, -7749732, -6631967,
-2559801, -3802657, -1429150, -959388, 1251446, 1848983, 8969502, -5506685, 180926, 2053531,
-3987877, -5002563, -4233764, -8033737, -6009196, -5678484, -9986336, -23622320, -1073205, -3387656,
--10851772, 2008434, -1967632, -12890271, 3401077, -10948409, 1882269, -1496259, -1771137, 5274757,
-6144488, -356482, -11407970, 2950643, -7533910, -7364795, 9092983, 9017284, 9135932, -3376381,
-592169, 1311039, -6273337, 794569, -3626563, 15923591, -3816079, -1589675, -2821794, -47245,
--11008538, -12022687, 4591320, -15224585, 5720897, 1897302, 16225313, -10836739, -6038187, -3601867,
-8739185, -8234526, -7758322, 7109245, 4962298, -8359617, -8213588, -8271570, -18188112, 11993696,
-11538967, 11924977, -4944044, 3695283, 12168716, -17395154, 290984, 11206107, 10801843, 4620311,
-280247, -5698348, 1484448, -2848637, -14596983, 1693291, 4469451, 1974074, 10311680, -8977019,
-1364189, -16589311, -1622961, 2949032, -8494908, 3168612, 3264175, 6980933, 9469866, 12074764,
--1966558, -5252745, -14384919, -11107322, 5279052, 21598316, -6139119, -1385127, -9407589, -5886790,
--7252589, 4196720, 5749351, -2294050, 1664300, -16784196, -1095754, 10181757, -7573638, -8376260,
-7747584, -3858491, 10923176, 1213865, -5264020, -309775, -8433168, -5105106, 81068, -9881646,
-21577916, -11212549, -5960878, -826781, -1114544, -15979963, 614717, -11870216, 7908646, -21968758,
--3536369, -7288023, 6973953, -7813620, -7864085, -18651432, 11908334, -7900056, 4657892, -6268505,
-3278134, 9326521, -7468412, -12373264, -4431333, 7791071, 16589848, 5056787, 6701760, 430570,
--17546016, -9587441, -9659381, -5171678, 2559801, 15091978, 6248641, 8600672, 8028368, -2824478,
--4075924, -5683316, -14784351, 303869, -10471130, 15009837, -7582228, 10170483, 1776506, -6106907,
-3052111, -4259534, -5399311, -9004936, 12164421, 2745558, 20917564, 4089883, -23775328, -6428493,
-6765111, 5326297, 2686502, -2055142, 1300838, 23423142, 11298985, -4974109, 1701344, -7490423,
-16528645, -1748052, -1918240, 5626944, -17147656, -7981660, -13616120, 7778723, 17666274, -1989107,
--1006633, -644245, 16402480, 4922033, 3754875, 2610266, 1732482, 2596845, -6789270, 986769,
--20847234, 2721936, -10169946, 8373576, 20839182, -2978023, 1294396, -16871168, 21978422, 10536629,
-9196062, -3009698, -12466679, 1227824, -4419522, 11031623, 7834021, -10346576, 282394, 5704791,
-3944391, -8063801, -7208566, 32312112, -7821673, -5919002, 6586333, -8531416, -6329171, 10111427,
-9849434, 162135, 3601330, 3450469, -12913356, -6501507, -862752, 4065187, 10692321, 2504503,
-2247879, -14448807, -1722819, 3994320, -19831474, 4066260, -5838471, -2139968, -4056060, 5557151,
--6300717, -10675678, -11860015, -17934710, 1582696, -7265474, -4284230, 11487427, -4875325, 3936338,
--21514564, 617938, 15771120, -10256919, -10306311, 24613384, -14685030, 3886409, -9386114, 29026462,
-6163278, 5426691, -9257265, -10876468, 1052804, 8366060, -8888972, -14059039, -8429410, -20478404,
--8040179, -11964168, -41876, -27536110, 1915019, 15146202, 9205189, 12422656, -8581882, 3380676,
-13274133, -1340030, 9615358, 3807489, 15002321, -7304129, 12505871, 10232223, 7096897, 16576426,
--9157944, 10012643, -5017059, -5462662, -3874061, 3961571, -31620086, -9714679, -19660212, 23154168,
--14341970, -15716359, -3469797, 13322452, 357556, -5244692, 17890150, -5809480, -5647345, -12345347,
--31919660, 2239826, 3027952, 14070313, -13318157, 861141, -8056285, -9879499, 17246442, -2462627,
-8773008, -17498234, -17805860, -10088341, 14650670, -151934, -8436926, -8146479, 548145, -12429635,
--640487, 15389942, 1523640, -5348845, 7641284, -13464722, 25177098, 15659988, -752693, -12288438,
--13937706, 5064304, -3977677, -1693291, -1335198, 23024246, -12181064, -34360, -8680666, 8190503,
--15266461, -13838385, -27022324, 5666136, -11394548, -15244450, -2506114, -25476136, -13020193, 6661495,
-4618701, -3838627, 12308303, 826244, 15061377, -7361037, -22555558, -3681324, -16744467, -3403225,
--5592048, -21242908, 1918777, 16687559, -48766132, 5747203, -732829, 11576547, -3252901, -15220290,
--29340532, 11052025, -4413079, 10322954, 5397700, -3728569, 15621333, -20897700, 27936614, -7497939,
-15101642, 33553896, 12429635, 23822572, 8321499, 6109054, -4451734, 12367358, -5878200, -13306882,
--18930606, -11583527, -1763084, 9822053, -2447595, 41070624, 33576980, 30345018, -6126771, 758599,
--24574192, 19525996, 23966454, 8654896, 23159000, 9730248, 8253854, 8654359, -3416110, 3868155,
-6800544, -4993973, -23730768, -13964549, -367757, -15341086, -18279380, -43342124, 10201084, 8442832,
-11994233, -7624641, -2546379, -5031554, 768262, -12948253, 44560, -9646497, 12643847, 11060078,
--5900212, -7654706, -22891638, 40126804, -11878269, 8679055, 326418, 3479997, 6576669, -15233712,
-19843822, -8868571, 6947647, 5393942, -14376866, -14024679, -2590402, -265751, 9240085, 42453604,
--3346317, 7248294, 1429150, 13596793, 8874476, 10435160, -7399155, -1023276, 3389803, -18823768,
-3745748, -15924665, -27828166, 10721849, 121870, 3357591, -21136608, -46938624, 19027778, 22792318,
-11884175, -25841208, -23998666, -47596828, 38950520, 6023692, 6659347, -16041166, -11658689, -50603304,
-13594645, 35717484, 10714333, -32140314, -16273094, 4915590, -12737799, -8133058, 14416058, -16844862,
-8930311, 8021389, 6499360, -18715856, 6255620, 5477694, -9016210, -17524540, -10358387, -6889665,
--4827007, -16724603, -14578193, -8056285, -17361332, 13178033, -6706055, -22180822, -7937637, 13226889,
--3143379, -15460272, -8735963, -8015483, -410169, -12321187, -7631083, -20259898, -19345070, 7801808,
--7105487, 24631638, 16048682, 1268626, 14547054, -22172768, 13767518, -21110302, 17071422, -3452080,
-8585640, -9775882, 30604864, -8347269, 17020418, -5194763, 25148644, 9302899, 5930276, -27404576,
-28223304, 21281562, 9706626, 8581882, -20646444, -6754373, 8263517, 9386651, -3826279, -6298570,
--30620970, 30246770, -1010391, 15669114, -15841450, -3632469, -2194192, -1972464, -1894618, 18583786,
-2838437, -11363410, 13329968, 4119411, 10302553, 16080894, 16396038, 2962991, -9626632, 51760800,
--11115912, 40321152, 2798708, 4512937, -19033684, -7197292, 6149857, 20685636, 11725261, -3745212,
-17741436, 5344013, -18168786, 5760088, 5767604, 23739894, 1964948, 15144055, -13015898, 2323577,
-17359720, 9557376, 15036681, 34576096, 28752658, -1647120, 16383690, 389231, 28399934, -17896592,
-20057498, 9345849, 2290291, 17706540, -4721243, 42010684, -3432216, 21660594, -10871636, -10118943,
-4245575, 44746580, 17413408, -36246840, 38470024, 2158221, 16178605, -26481158, 14268418, 6416681,
--54393612, 27832462, 49884436, 20417738, -13502303, -8763344, 15642808, 42370388, 10035191, 11850889,
-7774428, -8734353, -4330938, -15661061, 20325396, 3478387, 13525926, -10449119, 27028230, -8996346,
-12565464, 4702453, 5551245, 4518306, 2257542, -27659590, -16523813, 822486, 2356327, 20007568,
-15700790, -22320408, 2048163, -11922292, -11895449, 6511171, 1005022, -7028714, 9062381, 38224672,
--25263534, -1003949, 56544320, -33761664, 3426847, 21470542, -11205570, -7290707, 11031623, 20023138,
--21418466, 11353209, -38213396, -2716030, 54508504, 3796214, 14594836, -4451197, 29118268, 32015760,
--9788767, 1038845, -15899969, 5156645, -12277164, -25388088, -19193136, -30552250, -25807384, 37820944,
-12312061, 12554726, 45458472, -31952410, -22764400, 8109972, 14875619, -11324755, 5186710, -12378096,
-22287660, 17451526, 3881577, 19770808, 61022360, 6657736, -6986838, -15814070, 14712410, -3089155,
-32337882, -27515172, 8199093, -1100049, -8118562, -7333120, -3091840, 10560788, 6950331, 7481296,
--463856, 18486612, 4127464, -21977884, -16994112, -1532230, -9532143, -12229919, 4105452, 15462419,
--926102, -2324651, -19897510, 11329050, -2228014, 22494354, -6157373, -40399000, 6246493, -11278584,
--5035313, 1061931, -32343788, -16649978, -27588722, 1535451, -827318, -7067369, -36879272, -14493904,
--2012729, 21003464, 23420994, 2827699, 3074660, 11815992, 3868155, -25154550, 24466282, 32407138,
--12083354, 5836324, -12060805, 6765647, 1506460, 24974698, -25103546, -18325552, -59506772, -20638928,
-17296908, 25746718, 19535122, 16916802, -12971338, -4198331, 14558329, 12192875, 29236380, 12205760,
-14436996, 16616692, 6793028, -48041892, 21561272, -13609141, 2771865, 35948340, 30102352, -10468983,
--4006668, 19092204, -10333691, -10624138, -8977555, 3606162, -2566243, -90731, 4951561, -2580739,
-17947594, 42275364, -16571594, -30767536, 32763622, -23492934, -6038187, 1656247, 40660456, 4559645,
--11485279, 13291850, 11746736, -40291624, -11743514, 8532489, -1096290, -18191334, -1002338, 9620727,
--61027728, -26622892, 30878130, -28425168, -33389076, -18854370, 25208774, -30206504, -50285476, 53121228,
--14765561, -29538638, -1694365, 22344568, -19411642, -31595390, -852014, 18343268, -1868311, -41035728,
-10129143, 2535105, -20069308, 49692236, 43031276, 413927, -18513456, -30275224, 52041044, 11858942,
-7892003, 23300734, -15159087, -45977624, 20185272, 45679124, 26869852, -12450573, 3253975, -49767932,
-6580427, 48853104, 27060442, 7685307, 386010, -7677254, 13442711, -15894600, 40757628, -2055142,
-11609297, 15659451, -12662637, 1506997, -702764, -14176076, 972273, 6715182, 23341000, 888521,
--12788802, 7845832, 19005768, -2004676, 29514478, -21125870, 5699422, 7374996, 8521215, 25623238,
--12394202, 3137474, 197032, -31212602, 5715528, -9555228, -16418049, 8489003, -5507222, 26257282,
-19427748, -12294881, -27624156, 14681272, 4052302, 6755984, 17412872, 36078800, -4656282, 8258149,
--12884365, 21134998, 15837155, 16058883, -15252503, 24080808, -6372658, -9052717, -18556406, -771484,
--6237903, 30931818, -20397336, 2698313, 9429064, -5682779, -11326903, 42908332, 762357, 11212549,
--759136, 6574521, 435939, 13864691, 4226785, -321586, 15974057, -45090716, -125306744, -119127896,
-50711752, 4373351, 113089712, 240564336, 52023864, 96584152, 51048908, -179543056, -80914496, -120932856,
--177569520, -12421045, 20023674, -84041232, 73319920, 125690608, 76395656, 216861488, 132497056, 739808,
--21040508, -77377592, -192943360, -155971200, -67986648, -147741504, -44455596, 83851720, 24038396, 20968568,
-198094624, 76493904, 47467440, 183994256, 7677791, -9571871, 83896816, -42530912, -153009280, -73740832,
--152907808, -221903248, -25665114, -100833488, -83349208, 70953400, 136555808, 63708860, 242152944, 193902736,
-111284752, 147360864, 48788144, -71893992, -112257560, -147853168, -238436720, -189816080, -128677224, -108103792,
--34723200, 83632144, 124881544, 141281344, 187714768, 160256512, 74254080, 29701310, 41678900, -59262496,
--94543504, -61268244, -134350864, -72863048, -1661616, -9522479, 0, 0, 0, 0,
-0, 0, 0, },
+1232656, 3558381, 4639639, 60666, -2546379, 3241627, 1820529, 3834869, 4727686, -1896765,
+-543850, -3818226, 2133525, 667331, -1609002, -4565014, 1530082, 2323577, 3124589, 180389,
+-4326643, -2462627, 2504503, -2974265, 2615635, -644245, 876173, 1027034, 984084, -4387846,
+1372779, 1608465, -3016141, -5083094, -4860829, 263604, 388158, 1000191, -291521, 37581,
+-1410360, 2350958, -417149, 2052458, -3111704, -389768, 3265786, 6025302, 472446, -126702,
+781684, 3526705, 2279017, -4315369, 1129576, 2113661, 1340567, 10737, 2299955, 2078227,
+1320166, 1343788, 825171, -1111323, -2521146, 3261491, 1413044, -2014877, -386547, -1651415,
+2185065, -43487, -1498944, 1830193, 1222455, 899259, -10684268, -12977781, 6375879, -2462627,
+5558762, -2923262, -3002719, -5858336, 1235340, 1121523, -381715, -3221, -772020, -4497368,
+-641024, -2609730, -3027952, -2833605, -240518, 244813, -357019, -579284, 2043868, -687195,
+-6805376, 4066797, 1914482, -2344515, 516470, -136902, -81068, 866510, 4127464, -2452963,
+94489, -7612830, 3600793, 683437, 1533840, 2553895, 4071092, -2422899, -1975685, -906238,
+-3973382, 259846, -752156, 3241090, -1949915, -260919, -2027225, -2136746, 3802120, -3038689,
+-1656247, 353798, -2939368, 2266669, -312996, -1294396, 2253784, 4530654, 59056, -173409,
+-870268, 3886409, -4095788, 51003, -857383, 2052458, -1218697, -1736777, 3925600, -49392,
+560493, -1182190, -15477452, 2473364, 1681480, 5240934, -2238215, 1490354, 6124624, -2563559,
+1582159, -3937411, -5692979, 1890859, -3914863, -4474282, -4464082, 1154809, 1532230, -7558606,
+4230543, 2728378, -1381369, -2871723, 1611150, -837519, -1807108, 369367, 2333778, 1644973,
+3799972, 582505, -1314797, 3857954, -2151242, 8621073, 1860258, 5237713, 1967632, 4568235,
+1995012, 3085397, 1650341, 193274, 55835, 6457484, 1000727, -1277753, 309238, 3303904,
+2470680, 163746, -436476, -1594507, 600222, 7894687, 2183454, 3517041, -4079682, -2266669,
+-4300873, -2872796, -4187593, 2756295, 1729261, -2842195, -2019172, 1525250, -2117956, 1722819,
+-1120987, -922344, -3021510, -5020280, 1749125, -7973070, -1385664, -2021856, 8812736, 12074227,
+-3468186, 3373160, -5732171, -140660, 534723, 15375983, -1371168, -3845606, -6366752, 324807,
+4551592, 7165079, -1385127, -9006010, -2445447, -3327526, -2308545, 3291019, -471910, 6011344,
+856846, -3131031, -7213398, 2399813, -481573, 1898376, -676457, 1012539, 3862249, 1509681,
+-9110163, 1300838, 6244883, 3132642, 981937, 1617055, -1250372, 4343286, -5264020, -357556,
+4822712, -2959233, 277562, 7585986, -3131568, -163209, -2209224, 4742181, -4476967, -3363496,
+2543158, -4773856, -2105071, 6656663, 4161287, -5579163, -1746978, -670552, -1026497, -2435783,
+2509335, -2063732, 2845953, 121333, 857920, 1227287, 5425081, -383863, 7322919, 3621194,
+-4508105, -2283849, -1812476, 4027606, 1824287, -49929, 28144920, -10735271, 5516886, -8257612,
+-1074816, 34897, -825171, -4495220, 2085207, 3017752, 554588, -3339337, -6816113, -498216,
+3780645, 2602213, -3129421, -5206574, -635655, 4177930, 7863012, -4627291, -822486, -3558917,
+-7322919, 530965, -3799436, 1886564, -2872796, 5246840, -9910637, 6265284, -659278, -6036577,
+1174674, 2149094, -910533, -3333432, -37044, 7285339, -510027, 955630, -1292248, 2601140,
+1116155, -2091649, -3060164, -6536940, 3822521, -1624035, -2041720, 2062658, -163209, -10807748,
+7841000, -11620571, -6693170, -8352101, 1533840, -1332514, 4604205, -3034931, 2377265, -5257040,
+2157147, -1751810, -2099702, -5845988, 3129958, 3110093, 6288369, -2270964, -665720, 856309,
+-1959579, -371515, -22382686, 2310156, 243739, -1868848, -3454228, 3958349, -3045132, 2653216,
+-818728, 12348, 3599183, 4771709, -2928631, 3535295, -1049583, -1845762, -6328098, -233539,
+-8542690, -6152541, 7409356, 2752537, -2965138, -966905, -957778, 5282273, 2645163, -2565169,
+4626754, 3252364, 1741609, 1747515, 1888712, 3718368, 2963528, 3180960, 8205535, 7645579,
+3085397, 964757, -5368709, 5917391, -7906498, 1666447, -2357400, 6407555, -4946192, -5989869,
+10309532, -2303713, -5920076, -4883378, 7566659, 4986457, -24696, 4206384, 5361193, 2787434,
+8850854, -374736, -1859721, 5411122, 2757369, 490163, -277562, -4609574, 2344515, 3186866,
+6856916, 3236795, 3988414, -2626909, -4527970, -7818451, -2563559, -30273614, 7591892, -6803228,
+-9833864, -9754408, 5376226, -7359964, 4708358, -9138617, 4391067, 3626026, 2126009, -9611063,
+5885179, -585726, 3419331, -8058970, 3852586, 8472360, 6490770, -251256, -3564823, 752693,
+-2283849, -10180146, -2298344, -5170604, 1877438, -6614787, 4892505, 4572530, -2342368, -782758,
+6870337, -2144263, 4568772, -4502737, -6557342, 2668249, -396748, 2767570, 8556112, 4754529,
+-599685, -16043313, -7646116, -2794950, 1888712, -3044595, 8246337, -14077829, 4010963, 1100585,
+-346819, 3455301, -1930588, 5733782, -14209362, -7345468, 5276368, -14930917, -2750927, 5712844,
+2247879, -4026532, -9480603, 2529736, 6038187, 3430068, -1650341, -10967736, -730144, -1124208,
+-840203, -13679471, 1863479, 2704756, 11337103, -10011569, 12341052, 3786014, -641561, -2428804,
+-974958, 1515587, -8465917, -1268626, 3121368, -2461016, -4851166, -957778, 8601209, -8131984,
+-1575179, 9054328, 325881, -2934537, 3313567, -3693135, 6604049, 3282429, 195421, 3680250,
+-3397856, -5245766, -142271, 992674, 5002027, -9565429, -5196374, -3883724, -2862596, -2392834,
+-2802466, 2153389, 768262, 1500017, -7289097, -7084012, -5888400, 935229, -9431211, -4625143,
+6111202, -3160559, 1588064, 1431298, 132070, 3280281, 3782793, 4185983, 4259534, 6680822,
+-636729, 7208566, 12348, 4209605, -67109, -2829310, 268435, -5173825, 4544076, -6147709,
+7688529, -6861211, 670552, -6902550, 1801739, -6589017, -7117298, 6898791, 11481521, 39616240,
+1055488, -10672994, 2364916, -5531381, 16155519, -1970316, 4975720, 1712618, 1355062, -13103408,
+-6404870, 8153459, 7272454, -10208064, -1281511, 238371, 10205916, 5280126, 4269198, 9965398,
+2103997, 1177358, 8791798, -2295660, -11797738, 2396592, 10145250, 6184216, -2954938, 745177,
+7278896, 4596689, 2469069, 199179, -6311455, 3946538, -6915434, 1307281, -13604309, 4296041,
+5085778, -605054, -5876052, 9618042, 5476084, -1329292, 7771207, 3802120, -5214627, 11436961,
+1919850, -3309272, 3289408, 11713986, 2517388, 262530, -8514236, -4882304, 2129230, 4335233,
+13573170, -3644817, -4160750, 1651952, 7864085, -3941706, -4552129, 42413, 10266046, 7147900,
+-1222455, -6595459, 776315, 8530879, -2079838, 16925930, 8275328, 4159676, -14418205, -1947768,
+-7571491, 13447006, -5801427, 6011344, 664109, 8254927, 2853469, 826781, -1321239, 3091840,
+-4603668, -6369974, -17041356, -12579959, 3375844, 10385768, 13852343, -5747203, -7749732, -6631967,
+2559801, -3802657, -1429150, -959388, 1251446, 1848983, 8969502, -5506685, 180926, 2053531,
+3987877, -5002563, -4233764, -8033737, -6009196, -5678484, -9986336, -23622320, -1073205, -3387656,
+-10851772, 2008434, -1967632, -12890271, 3401077, -10948409, 1882269, -1496259, -1771137, 5274757,
+6144488, -356482, -11407970, 2950643, -7533910, -7364795, 9092983, 9017284, 9135932, -3376381,
+592169, 1311039, -6273337, 794569, -3626563, 15923591, -3816079, -1589675, -2821794, -47245,
+-11008538, -12022687, 4591320, -15224585, 5720897, 1897302, 16225313, -10836739, -6038187, -3601867,
+8739185, -8234526, -7758322, 7109245, 4962298, -8359617, -8213588, -8271570, -18188112, 11993696,
+11538967, 11924977, -4944044, 3695283, 12168716, -17395154, 290984, 11206107, 10801843, 4620311,
+280247, -5698348, 1484448, -2848637, -14596983, 1693291, 4469451, 1974074, 10311680, -8977019,
+1364189, -16589311, -1622961, 2949032, -8494908, 3168612, 3264175, 6980933, 9469866, 12074764,
+-1966558, -5252745, -14384919, -11107322, 5279052, 21598316, -6139119, -1385127, -9407589, -5886790,
+-7252589, 4196720, 5749351, -2294050, 1664300, -16784196, -1095754, 10181757, -7573638, -8376260,
+7747584, -3858491, 10923176, 1213865, -5264020, -309775, -8433168, -5105106, 81068, -9881646,
+21577916, -11212549, -5960878, -826781, -1114544, -15979963, 614717, -11870216, 7908646, -21968758,
+-3536369, -7288023, 6973953, -7813620, -7864085, -18651432, 11908334, -7900056, 4657892, -6268505,
+3278134, 9326521, -7468412, -12373264, -4431333, 7791071, 16589848, 5056787, 6701760, 430570,
+-17546016, -9587441, -9659381, -5171678, 2559801, 15091978, 6248641, 8600672, 8028368, -2824478,
+-4075924, -5683316, -14784351, 303869, -10471130, 15009837, -7582228, 10170483, 1776506, -6106907,
+3052111, -4259534, -5399311, -9004936, 12164421, 2745558, 20917564, 4089883, -23775328, -6428493,
+6765111, 5326297, 2686502, -2055142, 1300838, 23423142, 11298985, -4974109, 1701344, -7490423,
+16528645, -1748052, -1918240, 5626944, -17147656, -7981660, -13616120, 7778723, 17666274, -1989107,
+-1006633, -644245, 16402480, 4922033, 3754875, 2610266, 1732482, 2596845, -6789270, 986769,
+-20847234, 2721936, -10169946, 8373576, 20839182, -2978023, 1294396, -16871168, 21978422, 10536629,
+9196062, -3009698, -12466679, 1227824, -4419522, 11031623, 7834021, -10346576, 282394, 5704791,
+3944391, -8063801, -7208566, 32312112, -7821673, -5919002, 6586333, -8531416, -6329171, 10111427,
+9849434, 162135, 3601330, 3450469, -12913356, -6501507, -862752, 4065187, 10692321, 2504503,
+2247879, -14448807, -1722819, 3994320, -19831474, 4066260, -5838471, -2139968, -4056060, 5557151,
+-6300717, -10675678, -11860015, -17934710, 1582696, -7265474, -4284230, 11487427, -4875325, 3936338,
+-21514564, 617938, 15771120, -10256919, -10306311, 24613384, -14685030, 3886409, -9386114, 29026462,
+6163278, 5426691, -9257265, -10876468, 1052804, 8366060, -8888972, -14059039, -8429410, -20478404,
+-8040179, -11964168, -41876, -27536110, 1915019, 15146202, 9205189, 12422656, -8581882, 3380676,
+13274133, -1340030, 9615358, 3807489, 15002321, -7304129, 12505871, 10232223, 7096897, 16576426,
+-9157944, 10012643, -5017059, -5462662, -3874061, 3961571, -31620086, -9714679, -19660212, 23154168,
+-14341970, -15716359, -3469797, 13322452, 357556, -5244692, 17890150, -5809480, -5647345, -12345347,
+-31919660, 2239826, 3027952, 14070313, -13318157, 861141, -8056285, -9879499, 17246442, -2462627,
+8773008, -17498234, -17805860, -10088341, 14650670, -151934, -8436926, -8146479, 548145, -12429635,
+-640487, 15389942, 1523640, -5348845, 7641284, -13464722, 25177098, 15659988, -752693, -12288438,
+-13937706, 5064304, -3977677, -1693291, -1335198, 23024246, -12181064, -34360, -8680666, 8190503,
+-15266461, -13838385, -27022324, 5666136, -11394548, -15244450, -2506114, -25476136, -13020193, 6661495,
+4618701, -3838627, 12308303, 826244, 15061377, -7361037, -22555558, -3681324, -16744467, -3403225,
+-5592048, -21242908, 1918777, 16687559, -48766132, 5747203, -732829, 11576547, -3252901, -15220290,
+-29340532, 11052025, -4413079, 10322954, 5397700, -3728569, 15621333, -20897700, 27936614, -7497939,
+15101642, 33553896, 12429635, 23822572, 8321499, 6109054, -4451734, 12367358, -5878200, -13306882,
+-18930606, -11583527, -1763084, 9822053, -2447595, 41070624, 33576980, 30345018, -6126771, 758599,
+-24574192, 19525996, 23966454, 8654896, 23159000, 9730248, 8253854, 8654359, -3416110, 3868155,
+6800544, -4993973, -23730768, -13964549, -367757, -15341086, -18279380, -43342124, 10201084, 8442832,
+11994233, -7624641, -2546379, -5031554, 768262, -12948253, 44560, -9646497, 12643847, 11060078,
+-5900212, -7654706, -22891638, 40126804, -11878269, 8679055, 326418, 3479997, 6576669, -15233712,
+19843822, -8868571, 6947647, 5393942, -14376866, -14024679, -2590402, -265751, 9240085, 42453604,
+-3346317, 7248294, 1429150, 13596793, 8874476, 10435160, -7399155, -1023276, 3389803, -18823768,
+3745748, -15924665, -27828166, 10721849, 121870, 3357591, -21136608, -46938624, 19027778, 22792318,
+11884175, -25841208, -23998666, -47596828, 38950520, 6023692, 6659347, -16041166, -11658689, -50603304,
+13594645, 35717484, 10714333, -32140314, -16273094, 4915590, -12737799, -8133058, 14416058, -16844862,
+8930311, 8021389, 6499360, -18715856, 6255620, 5477694, -9016210, -17524540, -10358387, -6889665,
+-4827007, -16724603, -14578193, -8056285, -17361332, 13178033, -6706055, -22180822, -7937637, 13226889,
+-3143379, -15460272, -8735963, -8015483, -410169, -12321187, -7631083, -20259898, -19345070, 7801808,
+-7105487, 24631638, 16048682, 1268626, 14547054, -22172768, 13767518, -21110302, 17071422, -3452080,
+8585640, -9775882, 30604864, -8347269, 17020418, -5194763, 25148644, 9302899, 5930276, -27404576,
+28223304, 21281562, 9706626, 8581882, -20646444, -6754373, 8263517, 9386651, -3826279, -6298570,
+-30620970, 30246770, -1010391, 15669114, -15841450, -3632469, -2194192, -1972464, -1894618, 18583786,
+2838437, -11363410, 13329968, 4119411, 10302553, 16080894, 16396038, 2962991, -9626632, 51760800,
+-11115912, 40321152, 2798708, 4512937, -19033684, -7197292, 6149857, 20685636, 11725261, -3745212,
+17741436, 5344013, -18168786, 5760088, 5767604, 23739894, 1964948, 15144055, -13015898, 2323577,
+17359720, 9557376, 15036681, 34576096, 28752658, -1647120, 16383690, 389231, 28399934, -17896592,
+20057498, 9345849, 2290291, 17706540, -4721243, 42010684, -3432216, 21660594, -10871636, -10118943,
+4245575, 44746580, 17413408, -36246840, 38470024, 2158221, 16178605, -26481158, 14268418, 6416681,
+-54393612, 27832462, 49884436, 20417738, -13502303, -8763344, 15642808, 42370388, 10035191, 11850889,
+7774428, -8734353, -4330938, -15661061, 20325396, 3478387, 13525926, -10449119, 27028230, -8996346,
+12565464, 4702453, 5551245, 4518306, 2257542, -27659590, -16523813, 822486, 2356327, 20007568,
+15700790, -22320408, 2048163, -11922292, -11895449, 6511171, 1005022, -7028714, 9062381, 38224672,
+-25263534, -1003949, 56544320, -33761664, 3426847, 21470542, -11205570, -7290707, 11031623, 20023138,
+-21418466, 11353209, -38213396, -2716030, 54508504, 3796214, 14594836, -4451197, 29118268, 32015760,
+-9788767, 1038845, -15899969, 5156645, -12277164, -25388088, -19193136, -30552250, -25807384, 37820944,
+12312061, 12554726, 45458472, -31952410, -22764400, 8109972, 14875619, -11324755, 5186710, -12378096,
+22287660, 17451526, 3881577, 19770808, 61022360, 6657736, -6986838, -15814070, 14712410, -3089155,
+32337882, -27515172, 8199093, -1100049, -8118562, -7333120, -3091840, 10560788, 6950331, 7481296,
+-463856, 18486612, 4127464, -21977884, -16994112, -1532230, -9532143, -12229919, 4105452, 15462419,
+-926102, -2324651, -19897510, 11329050, -2228014, 22494354, -6157373, -40399000, 6246493, -11278584,
+-5035313, 1061931, -32343788, -16649978, -27588722, 1535451, -827318, -7067369, -36879272, -14493904,
+-2012729, 21003464, 23420994, 2827699, 3074660, 11815992, 3868155, -25154550, 24466282, 32407138,
+-12083354, 5836324, -12060805, 6765647, 1506460, 24974698, -25103546, -18325552, -59506772, -20638928,
+17296908, 25746718, 19535122, 16916802, -12971338, -4198331, 14558329, 12192875, 29236380, 12205760,
+14436996, 16616692, 6793028, -48041892, 21561272, -13609141, 2771865, 35948340, 30102352, -10468983,
+-4006668, 19092204, -10333691, -10624138, -8977555, 3606162, -2566243, -90731, 4951561, -2580739,
+17947594, 42275364, -16571594, -30767536, 32763622, -23492934, -6038187, 1656247, 40660456, 4559645,
+-11485279, 13291850, 11746736, -40291624, -11743514, 8532489, -1096290, -18191334, -1002338, 9620727,
+-61027728, -26622892, 30878130, -28425168, -33389076, -18854370, 25208774, -30206504, -50285476, 53121228,
+-14765561, -29538638, -1694365, 22344568, -19411642, -31595390, -852014, 18343268, -1868311, -41035728,
+10129143, 2535105, -20069308, 49692236, 43031276, 413927, -18513456, -30275224, 52041044, 11858942,
+7892003, 23300734, -15159087, -45977624, 20185272, 45679124, 26869852, -12450573, 3253975, -49767932,
+6580427, 48853104, 27060442, 7685307, 386010, -7677254, 13442711, -15894600, 40757628, -2055142,
+11609297, 15659451, -12662637, 1506997, -702764, -14176076, 972273, 6715182, 23341000, 888521,
+-12788802, 7845832, 19005768, -2004676, 29514478, -21125870, 5699422, 7374996, 8521215, 25623238,
+-12394202, 3137474, 197032, -31212602, 5715528, -9555228, -16418049, 8489003, -5507222, 26257282,
+19427748, -12294881, -27624156, 14681272, 4052302, 6755984, 17412872, 36078800, -4656282, 8258149,
+-12884365, 21134998, 15837155, 16058883, -15252503, 24080808, -6372658, -9052717, -18556406, -771484,
+-6237903, 30931818, -20397336, 2698313, 9429064, -5682779, -11326903, 42908332, 762357, 11212549,
+-759136, 6574521, 435939, 13864691, 4226785, -321586, 15974057, -45090716, -125306744, -119127896,
+50711752, 4373351, 113089712, 240564336, 52023864, 96584152, 51048908, -179543056, -80914496, -120932856,
+-177569520, -12421045, 20023674, -84041232, 73319920, 125690608, 76395656, 216861488, 132497056, 739808,
+-21040508, -77377592, -192943360, -155971200, -67986648, -147741504, -44455596, 83851720, 24038396, 20968568,
+198094624, 76493904, 47467440, 183994256, 7677791, -9571871, 83896816, -42530912, -153009280, -73740832,
+-152907808, -221903248, -25665114, -100833488, -83349208, 70953400, 136555808, 63708860, 242152944, 193902736,
+111284752, 147360864, 48788144, -71893992, -112257560, -147853168, -238436720, -189816080, -128677224, -108103792,
+-34723200, 83632144, 124881544, 141281344, 187714768, 160256512, 74254080, 29701310, 41678900, -59262496,
+-94543504, -61268244, -134350864, -72863048, -1661616, -9522479, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
-1440962,
-20401, 2159295, -4076998, -1202054, -2580739, -3591130, -315143, 4429185, 767725, -2393908,
--2267206, 6123013, -2767033, 584652, -1990717, -2043331, -3163780, -776852, 7668664, 504122,
--382252, 1437203, 1978369, 652298, -2481417, 4250407, 131533, -148713, -1906429, 536334,
--1441498, 634581, 2820183, 207769, -115964, -159988, -200253, -666794, -3753802, 876710,
-3172370, -945967, -1850594, 2961380, -3440269, -263604, -1462436, 2172180, -5546414, 2048163,
--421444, 833761, -1253594, -1153736, -153008, -1565516, 224949, 1675574, 1235340, -340913,
-1093606, 4946729, -3124589, -2483028, 253403, -1171989, -2353105, 652835, -2532957, 1389422,
--3048890, 315143, -1552631, -2566780, -373125, -4971425, -1869921, 1250909, -870268, -2827699,
--147640, 6809671, -3394098, 868657, -1399086, 10737, -2518462, 4932233, -2459943, -2585034,
--2974802, 5866389, -3383897, -799401, -1576790, 1725503, 2705830, 3483219, -4725538, 98784,
-4597226, 2131915, 813896, -133681, -539555, 2182380, 4677757, 1249299, -5947456, -2946885,
--3192235, 5350456, -516470, 4120484, -2486786, 1991791, 5226975, -2388002, -3923453, 1557463,
--1468879, -95026, -3519189, -1243393, -2636036, 1184337, -4781373, -1378148, -1240172, 53150,
-6424734, -1887638, -1005022, 2147, -1734630, -420907, -662499, 4171487, 1955821, 2682744,
--3435437, 2775623, 2490007, -1940788, 951872, 1919314, -1873680, -1903207, 2556043, -3585761,
-2644089, -440771, -54224, -217433, -3240553, 3271691, 322659, -1527935, -2230162, -674310,
--1165010, -81604, -2741800, -2144799, 1454920, -512712, -1088774, -4769561, -756988, 4259534,
--2988760, -827318, 3226594, -1986422, -3559454, -2775623, 2190433, -79457, -383863, -775242,
--3403762, 1031866, -1532230, -893353, 3777424, -2197950, -5181341, -1643362, 267899, 1438277,
-1343251, 333934, -3923453, -1014686, -4771172, -4449049, -1158567, 4431333, -767725, -9097278,
--375273, 2908767, 2667175, -1972464, 1820529, 1811939, 248571, 2549063, -4753992, -3549791,
--350040, 1277216, 350577, 870805, -363462, 1132261, 1342714, 1731409, -41876, 1010928,
-1399086, -1048509, 2247879, -606664, -4185446, -4003447, -1699733, -500364, 4276714, 2470680,
-6319508, 584652, -1058173, -581431, 4509179, -1007170, 2484102, -3806952, -283468, 81604,
-2425583, 1785096, 4043175, 2949032, -1883880, -3739843, -3095061, 2403571, -1254131, 3213173,
-2002529, 613107, -86973, 2714956, 1862405, -1597191, 2156611, -4014721, -497679, -3700651,
--3279208, -4494684, 1460826, 2937758, -425739, 3998078, -2848100, 3728032, -6977175, 2964601,
-1256278, 5471252, 1576253, 2141578, 2851858, 152471, -1760937, 2231236, 4571993, 1839857,
-2219424, -431644, -71941, -6133750, -431644, 1347546, 1225139, -613107, 3408057, 6804839,
--2208687, -4291209, 3026341, 1057099, -3390877, 334471, -1661079, -2913062, 222265, 5069135,
-896574, 2124398, 373125, 3518652, 3393561, -3028489, 5112085, -1646046, -3162707, -4765266,
-1280437, -6344204, -253403, 784368, 1942936, -4009889, 2823404, 41339, 758599, 1830193,
-1231582, 1562294, -5384279, -273267, -1075889, -3530463, 2310156, 1163399, 1029182, 3207267,
-11158325, -715112, 773094, 1652489, 2924873, 1161252, -8766565, 1956895, -1259499, -945430,
-5168993, 231928, 2704219, 3639448, -4173098, -2390149, -1005559, -4218732, -8943733, 522375,
--3180960, -468688, -492848, -100932, -1813550, -4425964, 1624571, -4228932, -1013612, 1070521,
--4440996, 5088463, 2120640, 1523103, -1603097, -258235, -340376, 1110249, -1075352, 2688650,
--3438658, 1452236, 6568079, 5132486, -1125281, 2705830, -1667521, 1280974, -3615289, 175557,
-7297687, -9322227, 366146, -5753646, 2901251, 4190278, 5124970, -835371, -4917738, 86436,
-5049808, 1040993, 947040, -3859565, -534187, -6727530, 8857296, -520765, -6859600, 7350300,
-1831804, 2137820, -504659, -2730526, -895501, -3590593, -3501472, 2667175, 3859028, -864362,
-3639448, -3097745, -1910724, -83752, 5087389, 4749697, -1384053, -2825015, 3952981, 2435783,
-344671, 3257733, 772020, -4081293, 4134443, 2469069, -346819, -1518271, 1114007, -4423280,
-11332808, -757525, -448824, 8289287, -816044, -5386963, -2861522, -835371, 2011118, -5635534,
-3627637, 836982, 61740, -5203353, -4196183, -8999567, -847719, 3626563, 1910724, 4414153,
--2826089, -2494839, 10100152, -3569655, 1523103, -2423435, -4486094, -9607842, 62277, -3948686,
--4475356, 1566589, -5406827, 309775, 4001836, 2229088, 8188892, -13206488, 8761733, -1283122,
-3941706, -2423972, -1715839, -6886443, 6449431, 5636071, 1591285, -6117107, -134218, -3493419,
--216896, 6601902, 4739497, 1098438, 6411313, 8590, 547071, 697932, 18254, -4245575,
-9490804, -849867, 331786, 10820633, -6684580, 2634426, -3049964, -643171, 3662533, -1420560,
--5198521, 10385231, 8347269, -262530, 2908767, 4354560, 11475616, -1442572, -1705102, -6073084,
-1384053, 2099702, -6083821, -6885907, -5672578, 7158100, 531502, -3047816, 5345087, 3412889,
-472983, -1866163, 2051384, -4095251, -524523, -4500589, -437550, 3667902, -7262790, 1388348,
--980863, -6117644, 4146791, -2192581, 1226750, -1936493, -987306, 1247688, 7147363, 7568269,
-1093069, -6958384, -1121523, -6628209, 2467996, 16542067, 3952444, 11376831, 4084514, -120259,
--11045582, -2944200, 1597728, 10222559, -4838818, -2612951, -4239670, 699006, 8254927, -6505802,
-3940633, 6976101, 1425929, 2340757, -4986994, 8668855, -2143726, 11383811, -324807, -4000225,
--11263015, 930934, -187905, 12725451, -4212826, -1542967, 8102993, -434865, 843961, -3241627,
--8912057, 366146, 4678830, -6797860, -5203890, 652298, -10693395, 4996658, 5383205, -2488397,
--1072131, 2115808, 5425081, -1377074, -4094178, -1106491, 8065412, -2177549, -1942399, -4470524,
-10431402, 9896142, -82141, -3675955, 723165, -2456185, 1600412, 2674691, -2408403, 3568044,
--6753836, 1582696, 366683, -7248294, 7678865, 5865852, 616865, -4764730, -5338645, -2257542,
--10778757, 12870406, 9762998, -1918240, 3740380, 1278290, -1896765, 9777493, -576063, -4370666,
-14491757, -15370614, 4205310, 6777459, 156766, -6231461, 7023882, 1146219, 10065256, -3723200,
--837519, 2704756, 4159676, 737124, -1117228, 14390288, 6413460, -6495601, -9655623, 6926172,
--9656160, -2838437, -11149735, -1453846, 17303886, 6988449, 8495982, 56371, -8796093, -1525250,
--4166118, -2001992, 13015898, -2042257, -13797582, -1211181, 3022583, -9045738, -1220308, 5638219,
-4803384, -6176700, -2878165, 5954972, 8413841, -2626909, 8748312, -170725, 2381023, 2771865,
-950798, 2813204, 5304285, 4235375, 4978941, -3505230, -10022843, -12599287, 6366752, -699006,
-5944235, -11599096, 4286378, 3425773, 1810329, -7557532, -6317897, -8054675, 6452115, 3418794,
--5740761, -5708012, 8088497, 2716030, -549756, -4779762, -8002061, -3180423, 3383897, -5055714,
-711891, -9586904, -2624762, 1269163, 3426847, 6487011, -923418, 4193499, 5637682, -5496485,
--13395466, 9445170, 542240, -1992328, 8971113, -1210644, 482647, -5801964, 7917236, -4802311,
--6163278, -2293513, 6540699, 9859097, 8309688, 2717641, 1835562, -16882442, 7981123, -830539,
-3507378, -5684389, -845572, -6375342, -1990181, -1378148, -8431558, -4164508, -3204046, -4531728,
-9548249, -2634426, 12356084, -1096290, -46708, 7771207, 9207873, 14659260, 10692321, 264141,
--3479461, 56371, 1538672, -5838471, 3715147, -3512210, -4891968, -18486612, 3705483, -12822088,
--7797513, 11507291, 8887361, -21061982, -19327352, 323196, 7810935, -5142687, 4706748, -7164006,
--1067836, -12356621, -3440806, -11183558, -1068910, -3286724, 63351, 3868155, 3144453, 6462852,
--1112397, -6073084, 4751308, -7180112, -3015604, 1917703, 188442, 3223373, 6946036, -1439888,
-680752, 1380832, -3127810, -1025960, -10720775, -12717935, -12248173, -233002, -12303471, 3833258,
-1450625, -5018670, -5770826, -2638184, -2121714, -1238561, -7299297, -11592654, -690953, 17957796,
-9977746, -2697776, -10791642, -11300596, 12587475, -11836393, -3736622, -2156074, -7632157, -5979668,
--7700877, -9343701, -12618077, -17545478, -2012729, -2730526, -1819992, 6070400, 6496138, 1728724,
-6161668, -3299072, 1609539, -14516453, 2133525, 7900593, 8609262, 7941395, 3654480, 15291157,
--5430986, -10543608, -2363306, 2234994, -1705639, 5057861, 10457172, 20365124, 13156559, 7635915,
-9897752, -7492034, -14260902, -4845260, -10525354, 12817793, 3446711, -2452426, -8392903, 14485851,
-12910135, -4376035, -263604, 95026, -6743636, -6039261, -10459319, 3435437, 4547297, 6454262,
--9806484, 1057636, 3757560, -4716411, -9459129, 365609, 6754373, 7911867, 2160369, -20003274,
--6300180, -9869835, 4993437, 11944304, 915365, -11258183, 3637837, -10882910, 7010997, -2682207,
-2001992, -7757785, 17246442, 12687870, -2865817, -3824132, -8136279, -723702, 14174466, 2873870,
-17206176, 15216532, 14177687, 7428683, 4151623, -10251013, -3981972, -13513578, 17565880, -8533563,
--1107028, 8607114, 14026289, -11905649, -14690936, -12569222, 16707423, -5025112, 11651173, 1153199,
-1609002, 25912612, -1509144, 3102040, -9417790, -15699716, 5739687, -1254667, 6101538, 4261145,
-180926, -8446590, 4316442, 4898410, 3294777, -7909719, 7691750, 5684389, 19598472, -7017440,
-2901787, 11076721, 11739756, 1654099, 11870216, -1293859, 2173254, 10325101, 9456444, 3322694,
--2110440, -13174812, -9074729, 9760850, 1692754, -2020245, -892279, 3445638, 21441550, 105764,
--4689568, 11196443, -2611340, 10664941, 4471598, 29335700, -3196530, 443992, 2308545, 5520644,
-12037720, -496069, -675384, 7610145, -10428181, 12109123, 22564684, 7230041, -1106491, 12377022,
--970126, 755377, 25729538, -11637751, 8521215, 10087268, 592169, 1417339, 1874753, 3898757,
--14902463, -4975183, 8707509, -5628555, -8177081, -7518877, -7546258, 193274, 8803609, -2253784,
--22228066, -1031329, -17075180, 5261872, 6199786, -951335, 2523293, -8262980, -1687922, 7515656,
--21267068, 4060892, -5225365, 10264435, 7188702, 3939559, 170725, -9413495, -19233400, -2252174,
--16893180, 8706972, -565325, -6220724, 16350404, 7473780, -7487202, -6800007, -4233764, -4045322,
--5444408, -10669773, 976031, 1099512, 23966454, -2415919, -18311594, -1649804, 11348914, -809601,
--9776956, 3966402, -14405857, 7314330, -6518150, 4152697, -8728984, 1692217, -14790794, 34782256,
-567473, 23279260, -3342022, -9298604, 5675800, -10670846, -9092446, 11588896, 12689481, -14874009,
--33315524, 27598386, -12037720, -11470784, -5828271, -1981591, -15940771, -5762236, -4994510, -13699335,
--24059334, -6032819, 149250, -12800613, 5954972, -5543729, 10350871, -9250286, -4083440, -13120051,
-30760018, 26162256, -6174553, 5779416, 17736068, -19022410, 18919868, -8046085, -8329016, 6895033,
-2211371, 3265786, -3165391, -4184909, 194347, 6234145, 5019743, -8403640, 9291088, -9041443,
--15491410, 11027329, 9264781, -12509629, -16035797, -17980880, -3056943, -2877628, 4641249, -11667816,
--15221901, -7393786, 24319178, 8851391, 7973070, -10392747, 9089225, 13271986, -10642929, 24598352,
-4031364, -8395050, -11904039, 6859063, -10091026, -20409148, 4541391, 206695, -73551, 11876121,
-10031433, -8562554, 1157494, -25985626, -3920768, -9709847, 21413096, 2317672, 2386928, -11496554,
-9536975, -19882478, -4589173, -11622182, 14543296, 15302432, 13872207, 9293772, -175020, 12647068,
-11525545, 1808181, -2233383, 5005248, -1074, -13164075, -1578401, 4778151, -10198400, 14356465,
--15170898, 11944304, 13201119, -4006668, -2990371, 5381594, 17627620, 12973486, -15938087, -3733937,
--4263292, -1545115, 3987877, -7728257, -7778186, 16983374, 442382, 24503326, -16214038, -15751256,
-12516608, -8678518, 4520453, -10172630, 8358007, 9074729, 6295349, -4384088, -14252849, 879931,
-4740034, -12432320, -21787832, -1378148, 1970316, -13538274, 23505282, -3431679, -6710350, 30443266,
-29387776, 2034741, -4173635, -2105608, -6395207, 5960341, -15591805, 13197361, 1711545, -9860171,
-17211544, 1104344, 3167539, -7014756, -10029286, -25979720, 4348655, -11266236, -5459977, -26071526,
--60029684, 19758998, 18711562, -6955163, 3970161, -14663555, 25521232, 16216186, -14886357, 3888556,
-3243237, 90731, -6844568, -5024038, -31085900, 12753369, 14951318, -3802120, -274878, -2016487,
-9973988, -8018704, 19275276, 5498095, -23496156, -13459891, 29228326, 19066434, -19495930, -4825396,
--7108171, -12077985, 1561221, -5011690, 3925600, 38008848, 10161893, 39835284, 22647900, 25555056,
-23287850, 45921252, -3337190, -4624606, 10751377, -3605625, -39115876, 31106838, -13960791, 17683454,
--25992068, -20754356, -38667592, 7233799, -3914863, -13245679, 8932458, -18408230, -375810, -26146688,
--26171920, 6749541, 14470819, -21371220, -6134824, -15028627, -20782274, -23209466, -17024176, 11560978,
--10799695, -29199336, 39106752, 23843510, 38533908, -8257612, -22469658, -57770532, 24003498, 28791850,
--14060649, -6550899, -2175938, 32684164, 387621, 6400575, 6366216, -8615704, 5959804, 14803142,
--3802657, -15750719, 3051574, 27637578, -15745887, -10227391, 5546951, -4784594, 20596516, -6158446,
-8906152, -11813308, -13864154, -14018773, 13253195, -5080947, 11680700, 13538274, -4440460, 983011,
--631897, -12736189, 3178276, -11663521, 11886322, 29947734, 50054084, -1649804, -2228551, -22564148,
-10826539, 15549392, -1326071, 17562122, 25851946, 10080825, 14296872, -24618752, -14997489, 18230526,
-49793168, -10581726, -30842160, 6263673, -11017665, -1925219, 12565464, -1188632, -14907295, -8013872,
--8475581, -36115308, -16087874, -1433982, 3804267, 10300942, -4303557, -15112916, -10598369, 1326608,
--9477919, -15312095, 6870874, 18088254, 5978595, 9475772, 3666828, 27303108, -8676371, -3429532,
--10807748, 6345814, -6748468, 6028524, 30907122, 6154688, -32935420, -7968775, -9682467, -28035936,
-17744658, 8504572, -3367254, 4058744, 1632088, -12509629, -238908, -772557, -12652974, -3615289,
-26924076, 39929776, 18630494, -13681081, -22056268, 10554882, 18039400, 2265059, 14405320, -9857487,
--7141994, 15231565, 4591857, 543313, -33498060, -43141872, -1522566, -25029996, -14882062, 9571871,
-36316096, 8420283, 1728188, -9960029, -12657805, -17580912, -16086800, 3741990, 10972568, -3041911,
--18059264, -28148142, 11645267, 1879585, -16081431, -25855704, -18173080, -28372018, -53609244, -30754114,
--4416837, -4295504, 65461744, -5238250, -1524177, 40843528, 5704254, 7010997, 24382530, -5043902,
--15404437, 20564304, -28987272, 7413651, 4706748, -12592307, -40674416, 27802398, 8334384, -2559801,
--41174776, 11045045, 6518150, -21740588, 3763465, 19177566, 11876658, 5623186, -18555332, -3754875,
--6835441, 3348464, -6889128, 1786170, -14321032, -20764020, 23001160, -15712064, 34877280, -21347062,
--19216220, -13066364, -24194624, 2222109, -279173, 36545340, -26818312, -28394566, 14892262, 9495636,
--23378580, -31245888, -3267396, -17536352, 20542828, 4488241, -25753160, 17041894, -4219806, -39711268,
-26425324, -17561048, 17314086, -29416232, -7080254, -489089, -12321724, -4721780, 3560528, 37970196,
--10027138, -2940979, -10750303, 11396159, -17814450, 14723148, 29095182, -757525, 29043642, 24459302,
--4276177, 48936856, -4109210, 7759932, -3929895, 16563005, 40672804, 349503, 27348742, -54434416,
-1473174, -61190936, -20896626, -10887205, 17852568, 55363204, 46967616, 16916802, 27481348, -18855980,
--15981573, 2091649, -4741644, 12329240, 3482682, -13286481, 18140332, 26999238, 22327924, 16515760,
-13859323, -1145146, 1914482, -10093710, 25470230, 11509975, -5721434, -16854526, 4662187, 9995463,
--3613141, 33478196, 34978212, -21470542, -16113107, -46708, 26935350, 16486232, 3565897, 2541010,
--7567196, -13426068, 5945309, 41786812, -18329846, -22115860, -24102282, 21310018, 7963943, -13865228,
--21135534, -33009508, -39093868, 2980707, 6861747, 5589900, -9865540, -4095251, -12062953, 6070937,
--31962072, -50990924, -24343338, -5053566, -10685879, -21085606, 22201222, 39454108, -12293270, 19144816,
-42146516, 27191438, 6037114, -34978752, -2248952, -33930780, 27925878, -3202435, 24041080, 14690936,
-869194, 16029355, -6576669, -1475858, 13877576, 16892644, 2892124, 366683, -208306, -14841796,
--9481140, 4313221, -20730196, 833761, -7575249, 772557, -17517560, 3300682, 1350767, -16010027,
-13932874, 6015639, 9549323, -20182588, -5148055, 4078072, -703301, 1698660, 12081743, 2804614,
-3652333, -2139431, -4151623, -3001109, -1298691, 7747584, -3042448, -12859132, 10940892, -17760226,
--5246840, -5994701, 2534568, -8632347, -10013179, 13779329, -1354525, -13579076, 8754754, -19000398,
-15681999, 4833986, 1102196, 15806553, 17912698, 2457258, 5366025, -13179644, 17366700, -8381629,
--11299522, -1118839, 2824478, 31963146, -14192719, -24057722, 20518670, -8238284, 20342576, -4262755,
-1098975, -9961640, 9313637, 14603963, -9563818, -91423208, -172334496, -62763432, -135378976, -154059408,
-35110820, -7331509, 48903036, 194666704, 211407424, 148510848, 212960592, 174477680, 56670484, 59675888,
-43840340, -120837296, -124071944, -70152920, -120445376, -130364072, -44746044, -39942660, -109801912, -83541944,
--14896557, -50335408, -60606820, -16726750, -46683072, -81887848, -46926276, 12902619, -33386392, -41407780,
-45697380, -9824201, -45521284, 38705708, 73985104, -19010062, 17943836, 114594560, 15403363, -38654704,
-76701136, 66092568, -66883380, 37200324, 85140208, -27284854, 9844065, 146701056, 113302848, 56461104,
-208277456, 230522176, 119902600, 212926224, 276783808, 173523120, 166246368, 227798624, 150298624, 96195992,
-109529720, 59180892, -51406464, -110622792, -147495088, -263307808, -314878560, -359921472, -394814336, -381344256,
--317797504, -149840128, -94480152, },
+20401, 2159295, -4076998, -1202054, -2580739, -3591130, -315143, 4429185, 767725, -2393908,
+-2267206, 6123013, -2767033, 584652, -1990717, -2043331, -3163780, -776852, 7668664, 504122,
+-382252, 1437203, 1978369, 652298, -2481417, 4250407, 131533, -148713, -1906429, 536334,
+-1441498, 634581, 2820183, 207769, -115964, -159988, -200253, -666794, -3753802, 876710,
+3172370, -945967, -1850594, 2961380, -3440269, -263604, -1462436, 2172180, -5546414, 2048163,
+-421444, 833761, -1253594, -1153736, -153008, -1565516, 224949, 1675574, 1235340, -340913,
+1093606, 4946729, -3124589, -2483028, 253403, -1171989, -2353105, 652835, -2532957, 1389422,
+-3048890, 315143, -1552631, -2566780, -373125, -4971425, -1869921, 1250909, -870268, -2827699,
+-147640, 6809671, -3394098, 868657, -1399086, 10737, -2518462, 4932233, -2459943, -2585034,
+-2974802, 5866389, -3383897, -799401, -1576790, 1725503, 2705830, 3483219, -4725538, 98784,
+4597226, 2131915, 813896, -133681, -539555, 2182380, 4677757, 1249299, -5947456, -2946885,
+-3192235, 5350456, -516470, 4120484, -2486786, 1991791, 5226975, -2388002, -3923453, 1557463,
+-1468879, -95026, -3519189, -1243393, -2636036, 1184337, -4781373, -1378148, -1240172, 53150,
+6424734, -1887638, -1005022, 2147, -1734630, -420907, -662499, 4171487, 1955821, 2682744,
+-3435437, 2775623, 2490007, -1940788, 951872, 1919314, -1873680, -1903207, 2556043, -3585761,
+2644089, -440771, -54224, -217433, -3240553, 3271691, 322659, -1527935, -2230162, -674310,
+-1165010, -81604, -2741800, -2144799, 1454920, -512712, -1088774, -4769561, -756988, 4259534,
+-2988760, -827318, 3226594, -1986422, -3559454, -2775623, 2190433, -79457, -383863, -775242,
+-3403762, 1031866, -1532230, -893353, 3777424, -2197950, -5181341, -1643362, 267899, 1438277,
+1343251, 333934, -3923453, -1014686, -4771172, -4449049, -1158567, 4431333, -767725, -9097278,
+-375273, 2908767, 2667175, -1972464, 1820529, 1811939, 248571, 2549063, -4753992, -3549791,
+-350040, 1277216, 350577, 870805, -363462, 1132261, 1342714, 1731409, -41876, 1010928,
+1399086, -1048509, 2247879, -606664, -4185446, -4003447, -1699733, -500364, 4276714, 2470680,
+6319508, 584652, -1058173, -581431, 4509179, -1007170, 2484102, -3806952, -283468, 81604,
+2425583, 1785096, 4043175, 2949032, -1883880, -3739843, -3095061, 2403571, -1254131, 3213173,
+2002529, 613107, -86973, 2714956, 1862405, -1597191, 2156611, -4014721, -497679, -3700651,
+-3279208, -4494684, 1460826, 2937758, -425739, 3998078, -2848100, 3728032, -6977175, 2964601,
+1256278, 5471252, 1576253, 2141578, 2851858, 152471, -1760937, 2231236, 4571993, 1839857,
+2219424, -431644, -71941, -6133750, -431644, 1347546, 1225139, -613107, 3408057, 6804839,
+-2208687, -4291209, 3026341, 1057099, -3390877, 334471, -1661079, -2913062, 222265, 5069135,
+896574, 2124398, 373125, 3518652, 3393561, -3028489, 5112085, -1646046, -3162707, -4765266,
+1280437, -6344204, -253403, 784368, 1942936, -4009889, 2823404, 41339, 758599, 1830193,
+1231582, 1562294, -5384279, -273267, -1075889, -3530463, 2310156, 1163399, 1029182, 3207267,
+11158325, -715112, 773094, 1652489, 2924873, 1161252, -8766565, 1956895, -1259499, -945430,
+5168993, 231928, 2704219, 3639448, -4173098, -2390149, -1005559, -4218732, -8943733, 522375,
+-3180960, -468688, -492848, -100932, -1813550, -4425964, 1624571, -4228932, -1013612, 1070521,
+-4440996, 5088463, 2120640, 1523103, -1603097, -258235, -340376, 1110249, -1075352, 2688650,
+-3438658, 1452236, 6568079, 5132486, -1125281, 2705830, -1667521, 1280974, -3615289, 175557,
+7297687, -9322227, 366146, -5753646, 2901251, 4190278, 5124970, -835371, -4917738, 86436,
+5049808, 1040993, 947040, -3859565, -534187, -6727530, 8857296, -520765, -6859600, 7350300,
+1831804, 2137820, -504659, -2730526, -895501, -3590593, -3501472, 2667175, 3859028, -864362,
+3639448, -3097745, -1910724, -83752, 5087389, 4749697, -1384053, -2825015, 3952981, 2435783,
+344671, 3257733, 772020, -4081293, 4134443, 2469069, -346819, -1518271, 1114007, -4423280,
+11332808, -757525, -448824, 8289287, -816044, -5386963, -2861522, -835371, 2011118, -5635534,
+3627637, 836982, 61740, -5203353, -4196183, -8999567, -847719, 3626563, 1910724, 4414153,
+-2826089, -2494839, 10100152, -3569655, 1523103, -2423435, -4486094, -9607842, 62277, -3948686,
+-4475356, 1566589, -5406827, 309775, 4001836, 2229088, 8188892, -13206488, 8761733, -1283122,
+3941706, -2423972, -1715839, -6886443, 6449431, 5636071, 1591285, -6117107, -134218, -3493419,
+-216896, 6601902, 4739497, 1098438, 6411313, 8590, 547071, 697932, 18254, -4245575,
+9490804, -849867, 331786, 10820633, -6684580, 2634426, -3049964, -643171, 3662533, -1420560,
+-5198521, 10385231, 8347269, -262530, 2908767, 4354560, 11475616, -1442572, -1705102, -6073084,
+1384053, 2099702, -6083821, -6885907, -5672578, 7158100, 531502, -3047816, 5345087, 3412889,
+472983, -1866163, 2051384, -4095251, -524523, -4500589, -437550, 3667902, -7262790, 1388348,
+-980863, -6117644, 4146791, -2192581, 1226750, -1936493, -987306, 1247688, 7147363, 7568269,
+1093069, -6958384, -1121523, -6628209, 2467996, 16542067, 3952444, 11376831, 4084514, -120259,
+-11045582, -2944200, 1597728, 10222559, -4838818, -2612951, -4239670, 699006, 8254927, -6505802,
+3940633, 6976101, 1425929, 2340757, -4986994, 8668855, -2143726, 11383811, -324807, -4000225,
+-11263015, 930934, -187905, 12725451, -4212826, -1542967, 8102993, -434865, 843961, -3241627,
+-8912057, 366146, 4678830, -6797860, -5203890, 652298, -10693395, 4996658, 5383205, -2488397,
+-1072131, 2115808, 5425081, -1377074, -4094178, -1106491, 8065412, -2177549, -1942399, -4470524,
+10431402, 9896142, -82141, -3675955, 723165, -2456185, 1600412, 2674691, -2408403, 3568044,
+-6753836, 1582696, 366683, -7248294, 7678865, 5865852, 616865, -4764730, -5338645, -2257542,
+-10778757, 12870406, 9762998, -1918240, 3740380, 1278290, -1896765, 9777493, -576063, -4370666,
+14491757, -15370614, 4205310, 6777459, 156766, -6231461, 7023882, 1146219, 10065256, -3723200,
+-837519, 2704756, 4159676, 737124, -1117228, 14390288, 6413460, -6495601, -9655623, 6926172,
+-9656160, -2838437, -11149735, -1453846, 17303886, 6988449, 8495982, 56371, -8796093, -1525250,
+-4166118, -2001992, 13015898, -2042257, -13797582, -1211181, 3022583, -9045738, -1220308, 5638219,
+4803384, -6176700, -2878165, 5954972, 8413841, -2626909, 8748312, -170725, 2381023, 2771865,
+950798, 2813204, 5304285, 4235375, 4978941, -3505230, -10022843, -12599287, 6366752, -699006,
+5944235, -11599096, 4286378, 3425773, 1810329, -7557532, -6317897, -8054675, 6452115, 3418794,
+-5740761, -5708012, 8088497, 2716030, -549756, -4779762, -8002061, -3180423, 3383897, -5055714,
+711891, -9586904, -2624762, 1269163, 3426847, 6487011, -923418, 4193499, 5637682, -5496485,
+-13395466, 9445170, 542240, -1992328, 8971113, -1210644, 482647, -5801964, 7917236, -4802311,
+-6163278, -2293513, 6540699, 9859097, 8309688, 2717641, 1835562, -16882442, 7981123, -830539,
+3507378, -5684389, -845572, -6375342, -1990181, -1378148, -8431558, -4164508, -3204046, -4531728,
+9548249, -2634426, 12356084, -1096290, -46708, 7771207, 9207873, 14659260, 10692321, 264141,
+-3479461, 56371, 1538672, -5838471, 3715147, -3512210, -4891968, -18486612, 3705483, -12822088,
+-7797513, 11507291, 8887361, -21061982, -19327352, 323196, 7810935, -5142687, 4706748, -7164006,
+-1067836, -12356621, -3440806, -11183558, -1068910, -3286724, 63351, 3868155, 3144453, 6462852,
+-1112397, -6073084, 4751308, -7180112, -3015604, 1917703, 188442, 3223373, 6946036, -1439888,
+680752, 1380832, -3127810, -1025960, -10720775, -12717935, -12248173, -233002, -12303471, 3833258,
+1450625, -5018670, -5770826, -2638184, -2121714, -1238561, -7299297, -11592654, -690953, 17957796,
+9977746, -2697776, -10791642, -11300596, 12587475, -11836393, -3736622, -2156074, -7632157, -5979668,
+-7700877, -9343701, -12618077, -17545478, -2012729, -2730526, -1819992, 6070400, 6496138, 1728724,
+6161668, -3299072, 1609539, -14516453, 2133525, 7900593, 8609262, 7941395, 3654480, 15291157,
+-5430986, -10543608, -2363306, 2234994, -1705639, 5057861, 10457172, 20365124, 13156559, 7635915,
+9897752, -7492034, -14260902, -4845260, -10525354, 12817793, 3446711, -2452426, -8392903, 14485851,
+12910135, -4376035, -263604, 95026, -6743636, -6039261, -10459319, 3435437, 4547297, 6454262,
+-9806484, 1057636, 3757560, -4716411, -9459129, 365609, 6754373, 7911867, 2160369, -20003274,
+-6300180, -9869835, 4993437, 11944304, 915365, -11258183, 3637837, -10882910, 7010997, -2682207,
+2001992, -7757785, 17246442, 12687870, -2865817, -3824132, -8136279, -723702, 14174466, 2873870,
+17206176, 15216532, 14177687, 7428683, 4151623, -10251013, -3981972, -13513578, 17565880, -8533563,
+-1107028, 8607114, 14026289, -11905649, -14690936, -12569222, 16707423, -5025112, 11651173, 1153199,
+1609002, 25912612, -1509144, 3102040, -9417790, -15699716, 5739687, -1254667, 6101538, 4261145,
+180926, -8446590, 4316442, 4898410, 3294777, -7909719, 7691750, 5684389, 19598472, -7017440,
+2901787, 11076721, 11739756, 1654099, 11870216, -1293859, 2173254, 10325101, 9456444, 3322694,
+-2110440, -13174812, -9074729, 9760850, 1692754, -2020245, -892279, 3445638, 21441550, 105764,
+-4689568, 11196443, -2611340, 10664941, 4471598, 29335700, -3196530, 443992, 2308545, 5520644,
+12037720, -496069, -675384, 7610145, -10428181, 12109123, 22564684, 7230041, -1106491, 12377022,
+-970126, 755377, 25729538, -11637751, 8521215, 10087268, 592169, 1417339, 1874753, 3898757,
+-14902463, -4975183, 8707509, -5628555, -8177081, -7518877, -7546258, 193274, 8803609, -2253784,
+-22228066, -1031329, -17075180, 5261872, 6199786, -951335, 2523293, -8262980, -1687922, 7515656,
+-21267068, 4060892, -5225365, 10264435, 7188702, 3939559, 170725, -9413495, -19233400, -2252174,
+-16893180, 8706972, -565325, -6220724, 16350404, 7473780, -7487202, -6800007, -4233764, -4045322,
+-5444408, -10669773, 976031, 1099512, 23966454, -2415919, -18311594, -1649804, 11348914, -809601,
+-9776956, 3966402, -14405857, 7314330, -6518150, 4152697, -8728984, 1692217, -14790794, 34782256,
+567473, 23279260, -3342022, -9298604, 5675800, -10670846, -9092446, 11588896, 12689481, -14874009,
+-33315524, 27598386, -12037720, -11470784, -5828271, -1981591, -15940771, -5762236, -4994510, -13699335,
+-24059334, -6032819, 149250, -12800613, 5954972, -5543729, 10350871, -9250286, -4083440, -13120051,
+30760018, 26162256, -6174553, 5779416, 17736068, -19022410, 18919868, -8046085, -8329016, 6895033,
+2211371, 3265786, -3165391, -4184909, 194347, 6234145, 5019743, -8403640, 9291088, -9041443,
+-15491410, 11027329, 9264781, -12509629, -16035797, -17980880, -3056943, -2877628, 4641249, -11667816,
+-15221901, -7393786, 24319178, 8851391, 7973070, -10392747, 9089225, 13271986, -10642929, 24598352,
+4031364, -8395050, -11904039, 6859063, -10091026, -20409148, 4541391, 206695, -73551, 11876121,
+10031433, -8562554, 1157494, -25985626, -3920768, -9709847, 21413096, 2317672, 2386928, -11496554,
+9536975, -19882478, -4589173, -11622182, 14543296, 15302432, 13872207, 9293772, -175020, 12647068,
+11525545, 1808181, -2233383, 5005248, -1074, -13164075, -1578401, 4778151, -10198400, 14356465,
+-15170898, 11944304, 13201119, -4006668, -2990371, 5381594, 17627620, 12973486, -15938087, -3733937,
+-4263292, -1545115, 3987877, -7728257, -7778186, 16983374, 442382, 24503326, -16214038, -15751256,
+12516608, -8678518, 4520453, -10172630, 8358007, 9074729, 6295349, -4384088, -14252849, 879931,
+4740034, -12432320, -21787832, -1378148, 1970316, -13538274, 23505282, -3431679, -6710350, 30443266,
+29387776, 2034741, -4173635, -2105608, -6395207, 5960341, -15591805, 13197361, 1711545, -9860171,
+17211544, 1104344, 3167539, -7014756, -10029286, -25979720, 4348655, -11266236, -5459977, -26071526,
+-60029684, 19758998, 18711562, -6955163, 3970161, -14663555, 25521232, 16216186, -14886357, 3888556,
+3243237, 90731, -6844568, -5024038, -31085900, 12753369, 14951318, -3802120, -274878, -2016487,
+9973988, -8018704, 19275276, 5498095, -23496156, -13459891, 29228326, 19066434, -19495930, -4825396,
+-7108171, -12077985, 1561221, -5011690, 3925600, 38008848, 10161893, 39835284, 22647900, 25555056,
+23287850, 45921252, -3337190, -4624606, 10751377, -3605625, -39115876, 31106838, -13960791, 17683454,
+-25992068, -20754356, -38667592, 7233799, -3914863, -13245679, 8932458, -18408230, -375810, -26146688,
+-26171920, 6749541, 14470819, -21371220, -6134824, -15028627, -20782274, -23209466, -17024176, 11560978,
+-10799695, -29199336, 39106752, 23843510, 38533908, -8257612, -22469658, -57770532, 24003498, 28791850,
+-14060649, -6550899, -2175938, 32684164, 387621, 6400575, 6366216, -8615704, 5959804, 14803142,
+-3802657, -15750719, 3051574, 27637578, -15745887, -10227391, 5546951, -4784594, 20596516, -6158446,
+8906152, -11813308, -13864154, -14018773, 13253195, -5080947, 11680700, 13538274, -4440460, 983011,
+-631897, -12736189, 3178276, -11663521, 11886322, 29947734, 50054084, -1649804, -2228551, -22564148,
+10826539, 15549392, -1326071, 17562122, 25851946, 10080825, 14296872, -24618752, -14997489, 18230526,
+49793168, -10581726, -30842160, 6263673, -11017665, -1925219, 12565464, -1188632, -14907295, -8013872,
+-8475581, -36115308, -16087874, -1433982, 3804267, 10300942, -4303557, -15112916, -10598369, 1326608,
+-9477919, -15312095, 6870874, 18088254, 5978595, 9475772, 3666828, 27303108, -8676371, -3429532,
+-10807748, 6345814, -6748468, 6028524, 30907122, 6154688, -32935420, -7968775, -9682467, -28035936,
+17744658, 8504572, -3367254, 4058744, 1632088, -12509629, -238908, -772557, -12652974, -3615289,
+26924076, 39929776, 18630494, -13681081, -22056268, 10554882, 18039400, 2265059, 14405320, -9857487,
+-7141994, 15231565, 4591857, 543313, -33498060, -43141872, -1522566, -25029996, -14882062, 9571871,
+36316096, 8420283, 1728188, -9960029, -12657805, -17580912, -16086800, 3741990, 10972568, -3041911,
+-18059264, -28148142, 11645267, 1879585, -16081431, -25855704, -18173080, -28372018, -53609244, -30754114,
+-4416837, -4295504, 65461744, -5238250, -1524177, 40843528, 5704254, 7010997, 24382530, -5043902,
+-15404437, 20564304, -28987272, 7413651, 4706748, -12592307, -40674416, 27802398, 8334384, -2559801,
+-41174776, 11045045, 6518150, -21740588, 3763465, 19177566, 11876658, 5623186, -18555332, -3754875,
+-6835441, 3348464, -6889128, 1786170, -14321032, -20764020, 23001160, -15712064, 34877280, -21347062,
+-19216220, -13066364, -24194624, 2222109, -279173, 36545340, -26818312, -28394566, 14892262, 9495636,
+-23378580, -31245888, -3267396, -17536352, 20542828, 4488241, -25753160, 17041894, -4219806, -39711268,
+26425324, -17561048, 17314086, -29416232, -7080254, -489089, -12321724, -4721780, 3560528, 37970196,
+-10027138, -2940979, -10750303, 11396159, -17814450, 14723148, 29095182, -757525, 29043642, 24459302,
+-4276177, 48936856, -4109210, 7759932, -3929895, 16563005, 40672804, 349503, 27348742, -54434416,
+1473174, -61190936, -20896626, -10887205, 17852568, 55363204, 46967616, 16916802, 27481348, -18855980,
+-15981573, 2091649, -4741644, 12329240, 3482682, -13286481, 18140332, 26999238, 22327924, 16515760,
+13859323, -1145146, 1914482, -10093710, 25470230, 11509975, -5721434, -16854526, 4662187, 9995463,
+-3613141, 33478196, 34978212, -21470542, -16113107, -46708, 26935350, 16486232, 3565897, 2541010,
+-7567196, -13426068, 5945309, 41786812, -18329846, -22115860, -24102282, 21310018, 7963943, -13865228,
+-21135534, -33009508, -39093868, 2980707, 6861747, 5589900, -9865540, -4095251, -12062953, 6070937,
+-31962072, -50990924, -24343338, -5053566, -10685879, -21085606, 22201222, 39454108, -12293270, 19144816,
+42146516, 27191438, 6037114, -34978752, -2248952, -33930780, 27925878, -3202435, 24041080, 14690936,
+869194, 16029355, -6576669, -1475858, 13877576, 16892644, 2892124, 366683, -208306, -14841796,
+-9481140, 4313221, -20730196, 833761, -7575249, 772557, -17517560, 3300682, 1350767, -16010027,
+13932874, 6015639, 9549323, -20182588, -5148055, 4078072, -703301, 1698660, 12081743, 2804614,
+3652333, -2139431, -4151623, -3001109, -1298691, 7747584, -3042448, -12859132, 10940892, -17760226,
+-5246840, -5994701, 2534568, -8632347, -10013179, 13779329, -1354525, -13579076, 8754754, -19000398,
+15681999, 4833986, 1102196, 15806553, 17912698, 2457258, 5366025, -13179644, 17366700, -8381629,
+-11299522, -1118839, 2824478, 31963146, -14192719, -24057722, 20518670, -8238284, 20342576, -4262755,
+1098975, -9961640, 9313637, 14603963, -9563818, -91423208, -172334496, -62763432, -135378976, -154059408,
+35110820, -7331509, 48903036, 194666704, 211407424, 148510848, 212960592, 174477680, 56670484, 59675888,
+43840340, -120837296, -124071944, -70152920, -120445376, -130364072, -44746044, -39942660, -109801912, -83541944,
+-14896557, -50335408, -60606820, -16726750, -46683072, -81887848, -46926276, 12902619, -33386392, -41407780,
+45697380, -9824201, -45521284, 38705708, 73985104, -19010062, 17943836, 114594560, 15403363, -38654704,
+76701136, 66092568, -66883380, 37200324, 85140208, -27284854, 9844065, 146701056, 113302848, 56461104,
+208277456, 230522176, 119902600, 212926224, 276783808, 173523120, 166246368, 227798624, 150298624, 96195992,
+109529720, 59180892, -51406464, -110622792, -147495088, -263307808, -314878560, -359921472, -394814336, -381344256,
+-317797504, -149840128, -94480152, },
{
976031,
-1103807, 2146947, 2560874, 2877091, 2073932, 436476, -99321, -2056753, 2018635, -3248606,
--2457795, 1020592, 904628, -3114925, 5828808, -1801739, 1736241, -1864553, -1691680, 1253594,
--514859, -1008780, -564251, 361314, -1848983, -861141, -3647501, 2195802, 1664300, -2878702,
--1264868, -1255204, -3185792, 1018444, 560493, -125628, 726923, 1198833, 242129, 1040993,
-3312494, -4687957, 895501, -739271, 3169686, 2712272, -2182917, 6245956, -3831648, -4067871,
-1019518, 2785823, 1735704, -712428, -912144, -646393, 904091, 1036698, -353798, -2431488,
--2031520, -1283122, -3136937, 408022, 1988570, 609349, -724776, -475131, 3759707, 1663226,
-1451699, 2830920, 1035624, 1073205, 1397475, -4356171, 3650722, 3905736, -1825898, 3918621,
--2334315, -499827, 5216238, -2112587, 2493766, 1522029, -5734318, -2583960, 4349728, -1671279,
--798864, 2733210, 1828582, 1950452, 548145, 6668474, 1166621, -1700807, 1523640, -2291902,
-4156992, -1178969, -2235531, -978179, -5356898, -1819456, -3936338, 1308891, -32212, 1462973,
--1553704, 2264522, 1106491, -244813, 732292, 363998, 563714, 729608, -2807298, 7117835,
-1096290, -2597918, 5322538, -1273995, -4502737, -4999342, 4922570, -978716, -332323, 3210488,
-422517, -852551, 2583960, -286689, 1529008, 402116, 1930588, -986769, 2102387, -932008,
-2491081, 3463891, 1998234, -2082522, -2001455, -1058173, 1073205, -2208150, 1718524, -1061394,
-2148558, -16643, 4582730, 914291, 1056562, 3847754, 65498, 2780991, 1334124, -296890,
-312459, -2977486, 1417876, 255014, 4712653, 1676111, 1558536, 224412, 1406602, 5162014,
--4842039, 2762738, 745714, -3198140, -1418950, -1979443, -632434, -1837172, 1321239, 5952825,
-3758633, 4446365, 3542811, 6065031, 4429722, -5497022, -9963250, -1262184, 478889, -2433636,
-5266167, -226023, 7880728, -3681324, -3683471, 3387119, 187905, 272730, 3115462, -5763846,
-1471563, -4133369, 5439576, 3192771, -34897, 8257612, 347355, -816044, -1054415, -1481764,
--2091649, 3889093, 2046015, -2050847, -723165, -5801427, -2614025, -802085, 5940477, 4081293,
-607201, 2992519, -61740, 3183108, -237297, 1261647, -3822521, 3396246, 8018704, 2186675,
-136902, 21475, 2100776, 1928977, 271120, 1060857, 1648194, -371515, -391916, 2110440,
-9116068, 2870112, 7066295, -4382478, -3580392, -1626182, -4585415, -5384279, -2255932, 3520263,
--6526740, -1156957, -952409, -10213432, 1789928, -10320270, -3544422, -1626182, 2177549, -262530,
-1886028, -2260227, -307627, -7081864, 2281702, -2560338, -3995393, 392990, 1692217, -645319,
-281320, 2559801, 4918275, -8998493, 2142652, 229781, -2786360, -3124052, -796180, 814970,
--1403381, -5597416, -1481764, 1010391, 2443837, -779000, 6173479, 132607, -16643, 2184528,
--4464082, 5640366, 1591822, 3138547, 1223529, 2522757, -1089311, -1122597, 1282585, 501974,
--1490891, -2411087, -2338073, 4915590, 5369783, -173946, 5922223, 373125, -783832, 730681,
-483721, -1093069, -71941, -4131222, -2378338, 3707094, 4329864, -5077188, -1235340, 2131915,
--3417183, -9722195, 2398202, 3623342, 4205310, -2214593, -2614025, -3448322, 5277441, 6084895,
-999654, 2419677, -4799626, -3820374, 4454418, 1734093, -3616363, 6287832, -6324340, 1078037,
-538482, 5900748, 2089502, -1259499, 885837, -1993402, 3140695, -7610145, -2350958, -10981158,
--4903242, 5619965, -566936, 8596377, -1277216, -7106561, 4402342, 1031866, -3055332, -305480,
-197569, -2863133, 1730872, 5149666, 5585605, 175020, 2543695, -260382, 6318971, -3357054,
-2544231, -653372, -477278, 140123, 1815161, -807991, 7597261, 569083, -234076, -1893007,
-6259915, -7926899, -884226, -5293547, -5506148, 2305861, 1360968, 12144557, 867047, 4626754,
--9683541, -2127620, 2441152, -4910758, 3658775, 1244467, 1090385, 3152506, 3609383, 8056285,
-3726421, -983548, 2721936, -3637837, 1386738, 3402688, 37044, 906775, 3715147, 4729296,
-11052561, 2367064, -1352378, -7133941, -56908, 5866926, -8490613, 1224603, -386547, 3007014,
--4126927, -4909685, 9611063, -5718212, 2189897, -119185, -5595269, 13772350, 3752728, 7341710,
-4083977, 8002598, -1155883, -2663954, 5210332, -4304094, 4070019, -3384434, 2342368, 5579700,
-3229279, -2164664, -125091, 2948495, -4439923, -3294240, 566399, -376347, 8295193, -4243428,
--7177427, -1014149, 4476967, 6765111, -3811784, -7213398, -962610, -3491809, 3252901, -13280039,
-7000260, 1808181, -3222299, 3584150, -10897406, -9177808, 824634, -4714264, 9691594, 8529805,
-9138617, -6672769, 3366181, -227096, 9116605, 295816, 6359773, 2294050, -3115462, -8857296,
--7980586, 2072322, -10533407, -537945, -2704756, -5364951, -7123204, -4409858, -217433, 7848516,
--243203, 2816962, -11988864, -6944962, -1511292, -7749732, 249645, 6949794, -8213588, 2878702,
--352187, -3129958, -991064, -2117956, 7850664, 3932580, 3791919, -2360085, -2707440, 10734734,
--3611531, -3461744, -9431748, 6294275, -13288629, 1365800, -4526359, 1617055, 4404489, -3565897,
--7201587, -4728759, 237297, 9044127, -5001490, -1464047, -6399502, -5363341, 2782065, 2872260,
-7151121, -9145059, -542777, 2067490, 1105417, -12633109, 2629594, 555125, 1404991, -17154636,
-14218489, -228170, -965294, -814433, -6043556, 1236414, -471373, 4819490, -5328444, 5476620,
-1015223, -4183298, -7094749, -8455717, 3300682, 266825, -1417876, 119722, -5353140, 4568235,
-2968359, 8795019, 4697084, 3251827, 4290673, -1567126, -5874442, -4154844, -510564, -3007014,
-3144990, -4804458, -7643968, -7745974, -432181, -10466298, 3764539, 5078799, -7001334, 5985037,
--8287677, 3490198, -11807402, 1283658, -2971581, 644782, -3888556, -280247, -11126113, -1772211,
--4534412, -6447820, -2808372, -5001490, 467615, -4456029, -3760244, -6361384, 1660542, -6008659,
--1699196, 10193031, -2980171, 667867, 1895154, -1695975, -11418707, -10777684, -3117073, -6785512,
-792958, 4662724, 3144453, -10423886, -490700, 1737851, -9777493, -11007464, 5779416, -10791642,
-1870995, 7102266, -5426691, -12360379, -5523328, 277562, 7878581, -3299609, 14078366, -968515,
--1421097, -8246337, -6192806, -923418, 2573759, 881005, -3306588, -2399813, -1034013, -2982855,
--6533182, 5190468, -5500243, -2978023, 4958540, 1759326, -9127342, -9050570, -8967892, 7551626,
--8398272, -8304320, 13400298, -8489003, 5594195, -944893, 3179350, -12260521, 5137855, 1048509,
--2685428, -261993, -3129958, 4446365, 2261300, 12255152, -3736622, -1791538, 4823249, 11934104,
-2309082, 2845416, -6300180, -2988760, -10362682, -1359894, -1226750, 607738, 5790690, -1367410,
-2556579, 12854300, -2986613, 556198, -2547453, 936303, -13152800, -12253005, 5003637, -957241,
-5944235, -1023276, -2663417, -3799436, 5025649, 3067681, -2962991, 2232309, 5114233, -2835752,
--17869212, -7825431, -3595961, -2074469, 7819525, -14021994, -10334765, 8446590, 5184026, 21406118,
-5943698, 4859756, 5791227, 2629594, -3978750, 333397, -4188667, 6754373, 173409, 6820408,
-70330, -291521, -9584220, 4801774, -6555194, 4879620, -1142998, 5123896, 1898376, 6910603,
--11099806, 1191317, -7765838, 9029095, 356482, -9226663, 11872900, 8862128, 5510443, -5551782,
--18659486, 5234492, -2270964, -2343979, 8722005, -924492, 3845070, 8675297, -2294050, -11094437,
--506806, 4935455, 2753611, -2983929, -1780801, -8110509, 2363843, 1111323, 926639, -1219771,
-159451, 6931004, -5650030, 2931852, -2962991, 4899484, -4757750, -19732154, 4403415, 5201206,
-20626580, -3935801, -2960843, 9944460, 12927315, -20250234, -11442867, 11582990, -5546951, 717260,
-4904853, -12768401, -28432684, -10930155, 16608639, 13330505, 11262478, -2983392, 6431714, -2995740,
-5939403, -5625334, 2259153, -14127758, 3805878, -4747013, 7676717, 7591892, 492848, -6466610,
-6994891, 4642323, 11899207, -825707, -7038915, -3221762, -18200460, -9014599, 4696547, -834297,
--12155294, 8768176, 11617887, -15842524, 15847356, -1086090, -1620813, 10304700, 2115272, 9773735,
--1177895, 3780645, -3542274, -1450625, 4700305, 19237696, -6874095, 12430709, -1153736, 1611150,
-4264903, 10924786, -9967008, 1658931, 14762339, 5126044, -7706782, 4686346, 4960151, 2098092,
-10259066, 9404368, -1133335, -13254806, -3548180, 13314399, 8334921, 10011032, -6844031, -3468723,
--1322850, -1548873, 14166413, 1755031, -15157476, -6721624, -4858145, 9452686, 1530619, 1986422,
-7748121, 17678086, -26574036, 17346300, -3840238, -3118146, -7182796, 5171141, 4917738, 10231686,
-1137093, 9770514, -1483374, -2544768, 2522220, -1553704, 4450123, 9047349, 508954, -556198,
-11191611, -8611409, -2237678, 3040837, -1668595, 10571525, -12926778, 1341640, -11196980, 1962263,
--11868068, -1276142, -455803, 6426882, 14205067, -8404714, -5737003, -8676908, -1486596, -12822625,
--9666361, -8199630, 4814122, 11496017, -1032940, 22255446, -14916958, 20078436, -14931454, -2196876,
-4464082, 5544803, 17482128, 12434467, -15990700, 9331353, -7671349, -17027934, -858457, -12211129,
--7330973, 1112397, 17885854, -1812476, 8666170, 16729971, -11635066, 6978248, -19419694, 13922673,
--11404212, -4855998, 21435108, 8199093, 23002234, -7887171, 1465658, -8436926, 7585986, 29198798,
-8458401, 10822781, -12737799, -1292785, 2005213, 12114492, 10766409, 19222126, -13168370, -3600256,
--14446123, -11922292, 2302639, 2549600, 10640245, -7650411, 7843147, -19903952, 14724222, 11689827,
-6143414, -2101850, -1224066, 2936147, 7673496, 3674882, 3101503, 1487132, 15858093, 14093935,
-6696928, 2777770, -9707163, -9148280, 31334470, 2856153, 5053029, 18532248, 8709657, -2885681,
--2243047, 12571906, 22902914, -13662828, -5266704, -15549929, -15183246, 23389856, 10636487, 2620467,
--3084324, 9639517, 16954920, 13224741, 16982838, 8070781, -6343667, 568546, -905701, 6248104,
--14203994, -10743324, -4272419, -13335337, 14527190, -1979443, -3864934, -12754979, -2164127, -11920682,
--28686086, 4579509, -3572339, -9438728, 6445672, -15608448, -916976, -8748312, -22907208, -5732708,
--9893457, -11366094, 18417894, -5428839, -6504728, -3879429, -279710, -5220533, -6302865, -1632088,
-5040681, 14897631, 11927661, -1085553, -634045, -26702886, 1894081, 2860985, 11011759, -6733435,
--5035849, 38748660, -6374805, -20092394, -18313740, 15569793, -10482405, 3882114, -21708912, 4650913,
--5668283, -12822625, -9675488, -26263188, 4719096, 6243809, 18685256, 4212289, -9004399, 13021267,
-2449742, 12087649, 15622407, 41336376, 12266963, 1431835, -15810848, -20386600, -4283693, -182536,
--1865090, -19729470, 7500624, 15076409, 3588445, -5522791, -17055852, -7242389, -2492155, 5554467,
--6139119, 10507101, -5172751, -6795175, 20061256, 10640781, 22782654, 590558, -6460705, -8621073,
-24125906, -20290500, -7597797, 28384366, -16821240, 5980205, 5914707, 7670275, 1718524, 16170015,
--4851166, 14616847, -5323075, 3565897, 3433826, -6800544, 10568304, -15440944, -11079405, -9811853,
--4737349, -13611825, -26125212, -4158065, -7817914, 4792647, -6731825, -34068756, 9657771, 22527104,
--1262184, -3896609, 34147676, -41518376, -9162239, 24437828, -5790690, 19205484, -13458280, -7399692,
-6354941, -39362840, 13066901, -12659416, 20205136, 16014322, -21444234, 43655120, 6294275, 3649649,
--2108292, 18251464, -30564062, 14300094, -1298154, -2857227, 8438537, -17430588, 28413894, 28423556,
--46390480, 9864466, 9279814, 2321430, 26962194, -10606422, -32422708, -32560148, 3700651, 5167383,
--13709536, 9764071, -17616882, 6995428, -7398081, 18271328, 23206246, 1721745, 22498650, 20475182,
--9721658, 726923, -12730820, -2473364, -2119030, 8525510, -210990, -1127966, -1155883, -21415244,
--32732482, -12618077, 18905910, 14709726, -13326747, -15711527, 11026792, 10945187, -20783884, 12177843,
--13373991, -1673964, 18401788, 24773372, 1535451, -12956843, 10476499, 2915209, 16213502, 3688303,
-13811004, 13874355, -2058363, -47423420, 7094749, 2484639, 21312164, -5914707, 21767432, 21166672,
--11512660, -64521148, -6963216, 4097399, -5948530, 41086196, 43632036, 30560840, 43493524, -8990977,
-21760988, -14436459, 30107184, 21431886, -29839286, 43540232, -39639864, -33030446, -30161408, -24848534,
--48029544, 11589432, 19429896, -1436130, 26249766, 10771241, -29796336, -6645925, 7914551, 8838506,
-9878962, -5100811, 15747498, 2403034, -7917236, -3083250, 6509023, 21664888, 28147068, 21378736,
-33499134, -29685204, -7118909, -6845641, -30084636, -6407555, 6924024, 2767570, 5034239, -11412265,
--12676596, 17209934, 37633576, -15890842, 20225000, -10997801, 6490233, -10040560, -238371, -26898306,
--8508867, -386547, -37164352, -21525840, -36290328, -30906048, 23177254, 51532092, 41997800, 2501819,
--562641, 1502165, -7019587, -15858630, -58846956, -18882824, -6601902, 6529961, 4811974, -19843286,
--12750147, 9674414, 29155848, 17920214, 11057930, 19659676, 32549410, 14172318, -27572616, 25807384,
--15298674, -6001680, 20260972, 44328356, 10619844, 55238648, -21123186, -34502548, 21144660, -3439732,
--20921860, 9935870, 22405234, 19468550, -40354976, -34770980, 8471286, -16176457, 3903589, 19607062,
--10905996, -7903277, 32240708, 8803609, -4775467, -10327249, -9483825, 12209518, -7586523, -1397475,
--1250909, -13168370, -5419175, -21930104, -29613800, 10547366, 15649787, -18391050, 13165685, 9375914,
--6763500, -12684649, 1585917, 23323820, 12922483, 4366908, -23596550, -25692494, -13076565, 7253663,
-28543278, -21463562, -12008729, -9572408, 16804596, 47095928, 11820287, -45329620, -10746545, -4948876,
-22852448, 1007170, 11489038, -5441724, -11571179, -9541270, -26680874, 24782498, 24689620, 11032160,
-26050050, -7640747, 16367583, -7167227, -20804284, -20520816, -24646670, 5339718, -45193256, 46868832,
--4808753, -15064598, -28314572, 31556198, 22803056, 6562710, 1676111, 13005698, 11414949, -27292906,
--37852620, 8179229, 23229330, 34841312, -3370476, -12080132, -27548458, -17577690, 12481175, -3975529,
--24088860, -44742820, -44883480, 5150203, -16091632, 19566798, -51208360, -19248432, 5471252, 3251827,
-5242008, -18631032, 3064459, -4904853, -12788802, -5426691, -26192858, 16867948, 21402358, 15123117,
--34004868, -19801410, -4774930, 6363531, 10974715, 12290586, 8779450, -7314330, -6377490, -8053064,
-17150878, 55479704, 33216204, -35156992, -34973380, -23642184, -43859668, 41914584, 20009178, -18845242,
--45552424, -43709884, 39484708, 22473416, 880468, 29104310, -40723808, -9264244, -3195456, -14816027,
--2110977, -19317690, -41648836, 2286533, -33273648, 29356102, 29090888, -21547850, -10274636, -9168145,
--12032351, 23686744, -37677064, 33557116, 49495740, 53464288, -59426780, 11253888, -1311039, -4955856,
-25993678, -10678362, -17164836, 17680232, 9638443, 36510444, -3000035, -28846610, 1628330, -13200582,
-22333830, -33237142, -10906533, -15705622, -21218212, 30109868, -21226266, -3359738, 21809844, 11847667,
--6352794, -11887396, -29994978, 3661997, 41959148, 24502788, -640487, 11717208, -8065949, 32905892,
--21313776, 14893873, -11192685, 20167556, 35737348, -8277476, -21092048, 10394895, -29205240, 49876920,
-7289633, -27576374, -7808251, -42644192, 6740951, 59192164, -9512279, -36099736, -23240604, 35964984,
-12380780, -20103668, 382252, 8724152, 21936008, 49866180, -40036076, 17827872, 42462196, -6597070,
--48194364, -47374564, -27380416, 83682608, -60834992, 22150756, -60921964, -22340272, 21578452, -56521232,
-9662603, -50788524, 22124450, 23774254, 47029892, 20772610, 10588168, 12231530, -14998026, -36259724,
--25417080, -23840290, 9842454, 5792837, -6464463, 21528524, 33017562, -14986215, -21275658, 23097798,
-3768297, -30881888, -7457137, 13941464, -25820270, -4507568, 5229660, 12956306, 6498286, 18338436,
-30985504, 5581310, -20462298, -2262374, 5600638, -15838766, -7575786, 14770393, -11634530, -20034948,
-27519466, -6633040, -7449621, -11001022, -11536819, 18329846, 4086125, 4344360, 23621784, -11337103,
--19249506, -838056, 1213865, -7646653, 5583995, -1008244, -7262790, -861141, -24174224, 5633387,
-3989488, -3585224, 12073153, 9039296, 3835406, 6193880, -24883966, 29377040, -11242614, -9805410,
-8602819, -25726854, 8969502, -19304804, 4638565, -25692494, 42807404, -1687385, 24432458, -21230024,
-3155727, -3414499, 8020315, 7373385, 13283260, -6015102, 9880572, -5323612, 5626407, -382252,
-4527433, 10780905, -869194, 16415365, -5978595, 12556337, 999117, 98247, -4118874, 8276939,
--5755256, 7548942, -3743064, 1126355, -3062849, 4444755, -2457258, 9674414, -2523293, -5624260,
-14704357, -9282498, 7800198, 6793028, 2455111, 7732015, -8633421, -5388037, 6818261, 6972880,
--3723737, -31139, 7208566, 191663, -9731322, 5185636, -4920422, 5949067, 6908455, 4150549,
-2357400, 3178276, -10636487, 6181532, 2896419, -2149631, 3726421, -3879966, 2192581, -1301375,
--799938, -67646, 3269007, 8511551, -10464688, 10337986, -2522757, -1793686, 4008278, -4977867,
-1751810, 6673843, -1817308, 10722923, -35477504, -111029200, -16143171, 54188528, 28155658, 131448008,
-24639154, 28388124, 17997524, -35213364, -49570364, -35344360, -63605244, -54742580, -30872762, -12642236,
-36810556, 99817728, 79352208, 68219648, 38998840, -30584462, -49636400, -36647884, -68507416, -65093452,
--19681150, -9077413, -14899242, 25327960, 39834212, 26189100, 48518100, 37283000, 11733851, 34287796,
-7329899, -5072893, 3514357, -20641612, -53967876, -46189152, -38873212, -55089400, -22679574, 16072304,
-11462731, 35243964, 40349608, 34869764, 36253284, 36542656, 23630910, 22622130, 2943663, -20382304,
--37493452, -25983478, -35247184, -47312284, -22750442, -21736830, -17103634, 6636262, 18506478, 17113834,
-34025268, 41733660, 20869782, 29452738, 25858388, -6898255, 3727495, 11418707, -13035226, -13003013,
--19846508, -18107046, -9757629, },
+1103807, 2146947, 2560874, 2877091, 2073932, 436476, -99321, -2056753, 2018635, -3248606,
+-2457795, 1020592, 904628, -3114925, 5828808, -1801739, 1736241, -1864553, -1691680, 1253594,
+-514859, -1008780, -564251, 361314, -1848983, -861141, -3647501, 2195802, 1664300, -2878702,
+-1264868, -1255204, -3185792, 1018444, 560493, -125628, 726923, 1198833, 242129, 1040993,
+3312494, -4687957, 895501, -739271, 3169686, 2712272, -2182917, 6245956, -3831648, -4067871,
+1019518, 2785823, 1735704, -712428, -912144, -646393, 904091, 1036698, -353798, -2431488,
+-2031520, -1283122, -3136937, 408022, 1988570, 609349, -724776, -475131, 3759707, 1663226,
+1451699, 2830920, 1035624, 1073205, 1397475, -4356171, 3650722, 3905736, -1825898, 3918621,
+-2334315, -499827, 5216238, -2112587, 2493766, 1522029, -5734318, -2583960, 4349728, -1671279,
+-798864, 2733210, 1828582, 1950452, 548145, 6668474, 1166621, -1700807, 1523640, -2291902,
+4156992, -1178969, -2235531, -978179, -5356898, -1819456, -3936338, 1308891, -32212, 1462973,
+-1553704, 2264522, 1106491, -244813, 732292, 363998, 563714, 729608, -2807298, 7117835,
+1096290, -2597918, 5322538, -1273995, -4502737, -4999342, 4922570, -978716, -332323, 3210488,
+422517, -852551, 2583960, -286689, 1529008, 402116, 1930588, -986769, 2102387, -932008,
+2491081, 3463891, 1998234, -2082522, -2001455, -1058173, 1073205, -2208150, 1718524, -1061394,
+2148558, -16643, 4582730, 914291, 1056562, 3847754, 65498, 2780991, 1334124, -296890,
+312459, -2977486, 1417876, 255014, 4712653, 1676111, 1558536, 224412, 1406602, 5162014,
+-4842039, 2762738, 745714, -3198140, -1418950, -1979443, -632434, -1837172, 1321239, 5952825,
+3758633, 4446365, 3542811, 6065031, 4429722, -5497022, -9963250, -1262184, 478889, -2433636,
+5266167, -226023, 7880728, -3681324, -3683471, 3387119, 187905, 272730, 3115462, -5763846,
+1471563, -4133369, 5439576, 3192771, -34897, 8257612, 347355, -816044, -1054415, -1481764,
+-2091649, 3889093, 2046015, -2050847, -723165, -5801427, -2614025, -802085, 5940477, 4081293,
+607201, 2992519, -61740, 3183108, -237297, 1261647, -3822521, 3396246, 8018704, 2186675,
+136902, 21475, 2100776, 1928977, 271120, 1060857, 1648194, -371515, -391916, 2110440,
+9116068, 2870112, 7066295, -4382478, -3580392, -1626182, -4585415, -5384279, -2255932, 3520263,
+-6526740, -1156957, -952409, -10213432, 1789928, -10320270, -3544422, -1626182, 2177549, -262530,
+1886028, -2260227, -307627, -7081864, 2281702, -2560338, -3995393, 392990, 1692217, -645319,
+281320, 2559801, 4918275, -8998493, 2142652, 229781, -2786360, -3124052, -796180, 814970,
+-1403381, -5597416, -1481764, 1010391, 2443837, -779000, 6173479, 132607, -16643, 2184528,
+-4464082, 5640366, 1591822, 3138547, 1223529, 2522757, -1089311, -1122597, 1282585, 501974,
+-1490891, -2411087, -2338073, 4915590, 5369783, -173946, 5922223, 373125, -783832, 730681,
+483721, -1093069, -71941, -4131222, -2378338, 3707094, 4329864, -5077188, -1235340, 2131915,
+-3417183, -9722195, 2398202, 3623342, 4205310, -2214593, -2614025, -3448322, 5277441, 6084895,
+999654, 2419677, -4799626, -3820374, 4454418, 1734093, -3616363, 6287832, -6324340, 1078037,
+538482, 5900748, 2089502, -1259499, 885837, -1993402, 3140695, -7610145, -2350958, -10981158,
+-4903242, 5619965, -566936, 8596377, -1277216, -7106561, 4402342, 1031866, -3055332, -305480,
+197569, -2863133, 1730872, 5149666, 5585605, 175020, 2543695, -260382, 6318971, -3357054,
+2544231, -653372, -477278, 140123, 1815161, -807991, 7597261, 569083, -234076, -1893007,
+6259915, -7926899, -884226, -5293547, -5506148, 2305861, 1360968, 12144557, 867047, 4626754,
+-9683541, -2127620, 2441152, -4910758, 3658775, 1244467, 1090385, 3152506, 3609383, 8056285,
+3726421, -983548, 2721936, -3637837, 1386738, 3402688, 37044, 906775, 3715147, 4729296,
+11052561, 2367064, -1352378, -7133941, -56908, 5866926, -8490613, 1224603, -386547, 3007014,
+-4126927, -4909685, 9611063, -5718212, 2189897, -119185, -5595269, 13772350, 3752728, 7341710,
+4083977, 8002598, -1155883, -2663954, 5210332, -4304094, 4070019, -3384434, 2342368, 5579700,
+3229279, -2164664, -125091, 2948495, -4439923, -3294240, 566399, -376347, 8295193, -4243428,
+-7177427, -1014149, 4476967, 6765111, -3811784, -7213398, -962610, -3491809, 3252901, -13280039,
+7000260, 1808181, -3222299, 3584150, -10897406, -9177808, 824634, -4714264, 9691594, 8529805,
+9138617, -6672769, 3366181, -227096, 9116605, 295816, 6359773, 2294050, -3115462, -8857296,
+-7980586, 2072322, -10533407, -537945, -2704756, -5364951, -7123204, -4409858, -217433, 7848516,
+-243203, 2816962, -11988864, -6944962, -1511292, -7749732, 249645, 6949794, -8213588, 2878702,
+-352187, -3129958, -991064, -2117956, 7850664, 3932580, 3791919, -2360085, -2707440, 10734734,
+-3611531, -3461744, -9431748, 6294275, -13288629, 1365800, -4526359, 1617055, 4404489, -3565897,
+-7201587, -4728759, 237297, 9044127, -5001490, -1464047, -6399502, -5363341, 2782065, 2872260,
+7151121, -9145059, -542777, 2067490, 1105417, -12633109, 2629594, 555125, 1404991, -17154636,
+14218489, -228170, -965294, -814433, -6043556, 1236414, -471373, 4819490, -5328444, 5476620,
+1015223, -4183298, -7094749, -8455717, 3300682, 266825, -1417876, 119722, -5353140, 4568235,
+2968359, 8795019, 4697084, 3251827, 4290673, -1567126, -5874442, -4154844, -510564, -3007014,
+3144990, -4804458, -7643968, -7745974, -432181, -10466298, 3764539, 5078799, -7001334, 5985037,
+-8287677, 3490198, -11807402, 1283658, -2971581, 644782, -3888556, -280247, -11126113, -1772211,
+-4534412, -6447820, -2808372, -5001490, 467615, -4456029, -3760244, -6361384, 1660542, -6008659,
+-1699196, 10193031, -2980171, 667867, 1895154, -1695975, -11418707, -10777684, -3117073, -6785512,
+792958, 4662724, 3144453, -10423886, -490700, 1737851, -9777493, -11007464, 5779416, -10791642,
+1870995, 7102266, -5426691, -12360379, -5523328, 277562, 7878581, -3299609, 14078366, -968515,
+-1421097, -8246337, -6192806, -923418, 2573759, 881005, -3306588, -2399813, -1034013, -2982855,
+-6533182, 5190468, -5500243, -2978023, 4958540, 1759326, -9127342, -9050570, -8967892, 7551626,
+-8398272, -8304320, 13400298, -8489003, 5594195, -944893, 3179350, -12260521, 5137855, 1048509,
+-2685428, -261993, -3129958, 4446365, 2261300, 12255152, -3736622, -1791538, 4823249, 11934104,
+2309082, 2845416, -6300180, -2988760, -10362682, -1359894, -1226750, 607738, 5790690, -1367410,
+2556579, 12854300, -2986613, 556198, -2547453, 936303, -13152800, -12253005, 5003637, -957241,
+5944235, -1023276, -2663417, -3799436, 5025649, 3067681, -2962991, 2232309, 5114233, -2835752,
+-17869212, -7825431, -3595961, -2074469, 7819525, -14021994, -10334765, 8446590, 5184026, 21406118,
+5943698, 4859756, 5791227, 2629594, -3978750, 333397, -4188667, 6754373, 173409, 6820408,
+70330, -291521, -9584220, 4801774, -6555194, 4879620, -1142998, 5123896, 1898376, 6910603,
+-11099806, 1191317, -7765838, 9029095, 356482, -9226663, 11872900, 8862128, 5510443, -5551782,
+-18659486, 5234492, -2270964, -2343979, 8722005, -924492, 3845070, 8675297, -2294050, -11094437,
+-506806, 4935455, 2753611, -2983929, -1780801, -8110509, 2363843, 1111323, 926639, -1219771,
+159451, 6931004, -5650030, 2931852, -2962991, 4899484, -4757750, -19732154, 4403415, 5201206,
+20626580, -3935801, -2960843, 9944460, 12927315, -20250234, -11442867, 11582990, -5546951, 717260,
+4904853, -12768401, -28432684, -10930155, 16608639, 13330505, 11262478, -2983392, 6431714, -2995740,
+5939403, -5625334, 2259153, -14127758, 3805878, -4747013, 7676717, 7591892, 492848, -6466610,
+6994891, 4642323, 11899207, -825707, -7038915, -3221762, -18200460, -9014599, 4696547, -834297,
+-12155294, 8768176, 11617887, -15842524, 15847356, -1086090, -1620813, 10304700, 2115272, 9773735,
+-1177895, 3780645, -3542274, -1450625, 4700305, 19237696, -6874095, 12430709, -1153736, 1611150,
+4264903, 10924786, -9967008, 1658931, 14762339, 5126044, -7706782, 4686346, 4960151, 2098092,
+10259066, 9404368, -1133335, -13254806, -3548180, 13314399, 8334921, 10011032, -6844031, -3468723,
+-1322850, -1548873, 14166413, 1755031, -15157476, -6721624, -4858145, 9452686, 1530619, 1986422,
+7748121, 17678086, -26574036, 17346300, -3840238, -3118146, -7182796, 5171141, 4917738, 10231686,
+1137093, 9770514, -1483374, -2544768, 2522220, -1553704, 4450123, 9047349, 508954, -556198,
+11191611, -8611409, -2237678, 3040837, -1668595, 10571525, -12926778, 1341640, -11196980, 1962263,
+-11868068, -1276142, -455803, 6426882, 14205067, -8404714, -5737003, -8676908, -1486596, -12822625,
+-9666361, -8199630, 4814122, 11496017, -1032940, 22255446, -14916958, 20078436, -14931454, -2196876,
+4464082, 5544803, 17482128, 12434467, -15990700, 9331353, -7671349, -17027934, -858457, -12211129,
+-7330973, 1112397, 17885854, -1812476, 8666170, 16729971, -11635066, 6978248, -19419694, 13922673,
+-11404212, -4855998, 21435108, 8199093, 23002234, -7887171, 1465658, -8436926, 7585986, 29198798,
+8458401, 10822781, -12737799, -1292785, 2005213, 12114492, 10766409, 19222126, -13168370, -3600256,
+-14446123, -11922292, 2302639, 2549600, 10640245, -7650411, 7843147, -19903952, 14724222, 11689827,
+6143414, -2101850, -1224066, 2936147, 7673496, 3674882, 3101503, 1487132, 15858093, 14093935,
+6696928, 2777770, -9707163, -9148280, 31334470, 2856153, 5053029, 18532248, 8709657, -2885681,
+-2243047, 12571906, 22902914, -13662828, -5266704, -15549929, -15183246, 23389856, 10636487, 2620467,
+-3084324, 9639517, 16954920, 13224741, 16982838, 8070781, -6343667, 568546, -905701, 6248104,
+-14203994, -10743324, -4272419, -13335337, 14527190, -1979443, -3864934, -12754979, -2164127, -11920682,
+-28686086, 4579509, -3572339, -9438728, 6445672, -15608448, -916976, -8748312, -22907208, -5732708,
+-9893457, -11366094, 18417894, -5428839, -6504728, -3879429, -279710, -5220533, -6302865, -1632088,
+5040681, 14897631, 11927661, -1085553, -634045, -26702886, 1894081, 2860985, 11011759, -6733435,
+-5035849, 38748660, -6374805, -20092394, -18313740, 15569793, -10482405, 3882114, -21708912, 4650913,
+-5668283, -12822625, -9675488, -26263188, 4719096, 6243809, 18685256, 4212289, -9004399, 13021267,
+2449742, 12087649, 15622407, 41336376, 12266963, 1431835, -15810848, -20386600, -4283693, -182536,
+-1865090, -19729470, 7500624, 15076409, 3588445, -5522791, -17055852, -7242389, -2492155, 5554467,
+-6139119, 10507101, -5172751, -6795175, 20061256, 10640781, 22782654, 590558, -6460705, -8621073,
+24125906, -20290500, -7597797, 28384366, -16821240, 5980205, 5914707, 7670275, 1718524, 16170015,
+-4851166, 14616847, -5323075, 3565897, 3433826, -6800544, 10568304, -15440944, -11079405, -9811853,
+-4737349, -13611825, -26125212, -4158065, -7817914, 4792647, -6731825, -34068756, 9657771, 22527104,
+-1262184, -3896609, 34147676, -41518376, -9162239, 24437828, -5790690, 19205484, -13458280, -7399692,
+6354941, -39362840, 13066901, -12659416, 20205136, 16014322, -21444234, 43655120, 6294275, 3649649,
+-2108292, 18251464, -30564062, 14300094, -1298154, -2857227, 8438537, -17430588, 28413894, 28423556,
+-46390480, 9864466, 9279814, 2321430, 26962194, -10606422, -32422708, -32560148, 3700651, 5167383,
+-13709536, 9764071, -17616882, 6995428, -7398081, 18271328, 23206246, 1721745, 22498650, 20475182,
+-9721658, 726923, -12730820, -2473364, -2119030, 8525510, -210990, -1127966, -1155883, -21415244,
+-32732482, -12618077, 18905910, 14709726, -13326747, -15711527, 11026792, 10945187, -20783884, 12177843,
+-13373991, -1673964, 18401788, 24773372, 1535451, -12956843, 10476499, 2915209, 16213502, 3688303,
+13811004, 13874355, -2058363, -47423420, 7094749, 2484639, 21312164, -5914707, 21767432, 21166672,
+-11512660, -64521148, -6963216, 4097399, -5948530, 41086196, 43632036, 30560840, 43493524, -8990977,
+21760988, -14436459, 30107184, 21431886, -29839286, 43540232, -39639864, -33030446, -30161408, -24848534,
+-48029544, 11589432, 19429896, -1436130, 26249766, 10771241, -29796336, -6645925, 7914551, 8838506,
+9878962, -5100811, 15747498, 2403034, -7917236, -3083250, 6509023, 21664888, 28147068, 21378736,
+33499134, -29685204, -7118909, -6845641, -30084636, -6407555, 6924024, 2767570, 5034239, -11412265,
+-12676596, 17209934, 37633576, -15890842, 20225000, -10997801, 6490233, -10040560, -238371, -26898306,
+-8508867, -386547, -37164352, -21525840, -36290328, -30906048, 23177254, 51532092, 41997800, 2501819,
+-562641, 1502165, -7019587, -15858630, -58846956, -18882824, -6601902, 6529961, 4811974, -19843286,
+-12750147, 9674414, 29155848, 17920214, 11057930, 19659676, 32549410, 14172318, -27572616, 25807384,
+-15298674, -6001680, 20260972, 44328356, 10619844, 55238648, -21123186, -34502548, 21144660, -3439732,
+-20921860, 9935870, 22405234, 19468550, -40354976, -34770980, 8471286, -16176457, 3903589, 19607062,
+-10905996, -7903277, 32240708, 8803609, -4775467, -10327249, -9483825, 12209518, -7586523, -1397475,
+-1250909, -13168370, -5419175, -21930104, -29613800, 10547366, 15649787, -18391050, 13165685, 9375914,
+-6763500, -12684649, 1585917, 23323820, 12922483, 4366908, -23596550, -25692494, -13076565, 7253663,
+28543278, -21463562, -12008729, -9572408, 16804596, 47095928, 11820287, -45329620, -10746545, -4948876,
+22852448, 1007170, 11489038, -5441724, -11571179, -9541270, -26680874, 24782498, 24689620, 11032160,
+26050050, -7640747, 16367583, -7167227, -20804284, -20520816, -24646670, 5339718, -45193256, 46868832,
+-4808753, -15064598, -28314572, 31556198, 22803056, 6562710, 1676111, 13005698, 11414949, -27292906,
+-37852620, 8179229, 23229330, 34841312, -3370476, -12080132, -27548458, -17577690, 12481175, -3975529,
+-24088860, -44742820, -44883480, 5150203, -16091632, 19566798, -51208360, -19248432, 5471252, 3251827,
+5242008, -18631032, 3064459, -4904853, -12788802, -5426691, -26192858, 16867948, 21402358, 15123117,
+-34004868, -19801410, -4774930, 6363531, 10974715, 12290586, 8779450, -7314330, -6377490, -8053064,
+17150878, 55479704, 33216204, -35156992, -34973380, -23642184, -43859668, 41914584, 20009178, -18845242,
+-45552424, -43709884, 39484708, 22473416, 880468, 29104310, -40723808, -9264244, -3195456, -14816027,
+-2110977, -19317690, -41648836, 2286533, -33273648, 29356102, 29090888, -21547850, -10274636, -9168145,
+-12032351, 23686744, -37677064, 33557116, 49495740, 53464288, -59426780, 11253888, -1311039, -4955856,
+25993678, -10678362, -17164836, 17680232, 9638443, 36510444, -3000035, -28846610, 1628330, -13200582,
+22333830, -33237142, -10906533, -15705622, -21218212, 30109868, -21226266, -3359738, 21809844, 11847667,
+-6352794, -11887396, -29994978, 3661997, 41959148, 24502788, -640487, 11717208, -8065949, 32905892,
+-21313776, 14893873, -11192685, 20167556, 35737348, -8277476, -21092048, 10394895, -29205240, 49876920,
+7289633, -27576374, -7808251, -42644192, 6740951, 59192164, -9512279, -36099736, -23240604, 35964984,
+12380780, -20103668, 382252, 8724152, 21936008, 49866180, -40036076, 17827872, 42462196, -6597070,
+-48194364, -47374564, -27380416, 83682608, -60834992, 22150756, -60921964, -22340272, 21578452, -56521232,
+9662603, -50788524, 22124450, 23774254, 47029892, 20772610, 10588168, 12231530, -14998026, -36259724,
+-25417080, -23840290, 9842454, 5792837, -6464463, 21528524, 33017562, -14986215, -21275658, 23097798,
+3768297, -30881888, -7457137, 13941464, -25820270, -4507568, 5229660, 12956306, 6498286, 18338436,
+30985504, 5581310, -20462298, -2262374, 5600638, -15838766, -7575786, 14770393, -11634530, -20034948,
+27519466, -6633040, -7449621, -11001022, -11536819, 18329846, 4086125, 4344360, 23621784, -11337103,
+-19249506, -838056, 1213865, -7646653, 5583995, -1008244, -7262790, -861141, -24174224, 5633387,
+3989488, -3585224, 12073153, 9039296, 3835406, 6193880, -24883966, 29377040, -11242614, -9805410,
+8602819, -25726854, 8969502, -19304804, 4638565, -25692494, 42807404, -1687385, 24432458, -21230024,
+3155727, -3414499, 8020315, 7373385, 13283260, -6015102, 9880572, -5323612, 5626407, -382252,
+4527433, 10780905, -869194, 16415365, -5978595, 12556337, 999117, 98247, -4118874, 8276939,
+-5755256, 7548942, -3743064, 1126355, -3062849, 4444755, -2457258, 9674414, -2523293, -5624260,
+14704357, -9282498, 7800198, 6793028, 2455111, 7732015, -8633421, -5388037, 6818261, 6972880,
+-3723737, -31139, 7208566, 191663, -9731322, 5185636, -4920422, 5949067, 6908455, 4150549,
+2357400, 3178276, -10636487, 6181532, 2896419, -2149631, 3726421, -3879966, 2192581, -1301375,
+-799938, -67646, 3269007, 8511551, -10464688, 10337986, -2522757, -1793686, 4008278, -4977867,
+1751810, 6673843, -1817308, 10722923, -35477504, -111029200, -16143171, 54188528, 28155658, 131448008,
+24639154, 28388124, 17997524, -35213364, -49570364, -35344360, -63605244, -54742580, -30872762, -12642236,
+36810556, 99817728, 79352208, 68219648, 38998840, -30584462, -49636400, -36647884, -68507416, -65093452,
+-19681150, -9077413, -14899242, 25327960, 39834212, 26189100, 48518100, 37283000, 11733851, 34287796,
+7329899, -5072893, 3514357, -20641612, -53967876, -46189152, -38873212, -55089400, -22679574, 16072304,
+11462731, 35243964, 40349608, 34869764, 36253284, 36542656, 23630910, 22622130, 2943663, -20382304,
+-37493452, -25983478, -35247184, -47312284, -22750442, -21736830, -17103634, 6636262, 18506478, 17113834,
+34025268, 41733660, 20869782, 29452738, 25858388, -6898255, 3727495, 11418707, -13035226, -13003013,
+-19846508, -18107046, -9757629, },
},
{
{
1566589,
-2699924, 383326, 1531693, 3398393, -1061931, 3617436, 936840, 667331, -4192425, -1037235,
--4155381, -501437, 4171487, 3026878, -299037, 1903207, -598074, 1583232, -520765, 1980517,
-1675574, 2143189, 5126581, 2151779, -3779571, -343061, -4280472, 2205466, 1586990, -646929,
-434329, 476205, -927713, -1342177, 2562485, -1171452, 828392, 2291365, -2279554, 3849901,
--901943, -1611, 1830730, -824634, 601832, 433792, 1934883, 3019899, 59056, 462246,
--1103807, -146029, 181999, -1702418, -1613297, 1910724, 5183489, -474594, -2897492, -2598992,
-1632088, 2559801, 2950643, 1667521, 4212289, 246424, 3053722, -2422362, -1606855, 1927367,
--621160, 2571612, -158377, -846109, 1377074, -3542811, 2703145, 1701881, -3491272, -608812,
-4500052, 1336809, 1127966, 2476049, -561030, 679142, -1139777, -4684199, -1814087, -233539,
--1003949, 1343788, -1418413, -459562, -3935264, -12348, 719944, -2812130, -572304, -3549791,
--1218697, -1141924, -4240207, -1983738, 1407676, 1846299, 4845797, 2818572, 6179921, -691490,
--949725, 869194, -2063195, 5299453, 368293, 2483565, 4283156, 703838, -1653562, 1688996,
--2198487, -3047816, -693100, -1345935, -1599875, -5597953, -1730335, -27380, 932545, 1598802,
-530965, 2761127, -3078418, 2426657, 49929, 554588, 1831804, -2256469, -4832375, -2180770,
-2160369, 2998961, 2395518, 133681, 2436857, 1744831, 3281355, 1589675, 1429687, -2101850,
-146029, -129386, -2658048, 2359548, -4042638, -2514703, 6279779, -1114544, 5540508, -2961380,
-456340, 2704756, 1147293, 107911, -3872987, -5438503, -5687611, 527207, 48855, -1657321,
-663036, -5023501, 9764608, 1044751, -5583995, 1391033, -2973728, -3195993, 2840584, 4116726,
--165356, 878321, 1892470, -362925, -84826, 3225521, -1908039, -857383, 86436, 5926518,
--230854, -748398, -2374580, -3578245, 1724429, -913754, -3746822, -1676648, -4489852, 551366,
--4088272, 60130, -3131568, -1014686, -2775623, -5506685, -2394981, -357019, 5028870, 758062,
--1660542, 2829310, 4572530, 730681, -6646462, 3002182, -219043, 1248762, 1899986, -1443646,
-3844533, -1961190, -3946538, -3699041, -7096897, 789200, -2737505, -2171106, -3601330, -5191005,
-8047158, -2310693, -7765301, 352187, 2326262, 19327, 2120640, 1718524, -6211060, 1918777,
--1643899, -446677, -17717, -1290638, 4284767, -1603097, -3226057, -452582, 3359738, 2099165,
-1067836, 1951526, 8526047, 2143189, -3321084, 3801583, -3995930, 1045825, -3291019, 8113730,
-971736, -2869575, -1954210, -2873333, -1277216, 5332739, -4739497, -3863860, -1488743, 4393752,
-2237678, -4370666, 804233, 794569, -2866891, -31139, -9443022, 2853469, -2512556, -1872069,
--6174553, 8530879, 12885, -4667019, -4051765, -4579509, -180926, -1095754, -66035, -161061,
--5788006, 6739341, -4501663, -3687766, 2056753, 609349, 1986959, -2053531, -1182727, -4357781,
--474057, 778463, -6339372, -4210679, -739271, 7188165, 214212, 1552631, -5963025, 1829119,
-3404835, 2496987, -266825, -2980707, 7716446, 1350767, -1564979, 3719442, 3005403, -3606162,
-4711043, -3174518, 7784628, 1123671, 6941204, -744103, 1190243, -2717104, -7945153, 876173,
-113280, 294205, -1418413, 1650878, 4114042, -1020592, -4119948, -2658048, -5839008, -1566053,
--2914672, -3021510, 453119, 2021319, 3049964, -3677029, 2498597, -2448668, -3184182, -381178,
-2544231, 533113, 544387, -5733782, -5689221, -1018444, -1782411, -4182761, 9053791, 4304094,
--735513, 1807644, 3528316, -9244380, -4875862, 6251862, -3668976, 5861020, 1103270, -1197759,
--6471979, -4587025, 7125351, 3915937, 6681896, -7381438, -883153, -5166309, -858993, 1668595,
--3288871, 437550, 714575, -12092480, 667867, -1532767, 3302830, -7307350, 2366527, -2448131,
-12268574, -3223910, -6325950, -2297808, -5303748, 1685775, 4566624, -1423782, 8580271, 904091,
--2507187, 2091649, 1062468, 2259153, -3014530, -504659, 3205656, 5056250, 2008434, -971200,
-2431488, -4454418, -1380295, 6354404, 4538707, 7457137, 5287105, -86973, -3754875, -7875897,
-5485210, -824097, -5749888, 3040837, -1501628, -8819178, 256624, -7341710, -560493, 6735046,
--1107028, -4913980, -2259690, 6442988, -5499706, -8986682, 9223979, -1659468, -2195802, 2233383,
-1208496, 1176284, 2257005, 2312840, 1276679, -6560026, -2473364, 5282810, -624918, -1828046,
-1644436, 9030706, -4383014, -4681515, -2110440, 3936875, 2016487, -7468412, -3278671, -10549513,
--150324, 2915209, 10304700, 10642929, -3329674, 5335423, -6722161, 2307471, 4573604, 6859063,
--1901060, 10252087, -1837172, 8704825, -4642860, 7302518, -3559454, -11974369, -2654827, 3068217,
--4075924, 4707821, -2527588, -2833605, 1381906, -13138842, -4187056, -218506, -2215130, -741956,
--6299107, -2153926, -2197413, 2144799, 13529684, 7796977, -7744900, 4318053, 10835129, 2705293,
--3696356, 2715493, -2762201, -3172907, 7820599, 5415417, -5309117, -701153, 5597416, 11557757,
--3638374, 6290517, 17206712, 7379291, -7820599, 3191698, 2064806, -9551470, 1501628, -7903277,
-3594351, -8621610, -1957968, 317291, 4129074, -5665599, -1493038, -2858838, -5047124, 6482717,
-5704254, -467078, -3714073, 770410, 4417911, -2561948, -11000485, 2237141, -8887898, 1153736,
--3114388, 10929618, -5923834, 1340567, 2682744, 875636, 3797825, -1870458, 11966853, 732829,
--8184597, -1697049, -6103149, -1154809, -2159832, -5686537, -7128572, -1973538, -4682051, -2296197,
-7565585, 2707977, -6866042, 2385318, -8148627, -1686312, 5495411, -10961293, -9761387, 5236639,
-4842576, 2464774, -564788, -6711424, 2356863, -3387119, -6413460, -3009698, 109522, 1811939,
-10017474, -4172561, -1366873, 413391, 4574677, 2393908, -3731253, -4686883, -8376797, -2605435,
--1970853, -4605816, -5393942, 3273302, 6736656, -104690, -4440460, 7510824, 1429150, -3791919,
-957778, -1158031, -884763, -2662343, -1278290, 4840965, -3563212, -6005438, -2776696, 2692945,
--3177202, 5653788, 10692321, -7812546, -208843, 7341710, -3402151, -5061082, 6690486, -10347650,
--608275, 2088965, -1343251, -3749507, -4606890, -2045478, 1811939, -376347, 5005248, 2728915,
--1706713, -3782793, -2957085, 8488466, 269509, -9862319, 4643397, -6136972, -6344204, 4106526,
-7181722, 7699803, 5521181, 118648, 3681324, 2902324, 3453154, -2981244, -322659, -2638184,
--7445326, 3424163, -2066953, -12885, -1811403, 1114007, -1428614, 8462696, 14701136, 2914135,
--2859911, 433792, -10967736, 10867341, -7595113, -4188130, -7346542, -8013872, 14162118, 1403381,
--8473970, -2273112, 9596031, 5872294, -8064875, -4916664, 10988674, 1765232, 642098, 15789910,
--7686918, 5138392, -5966247, -13506598, 6250251, 8656507, 469225, -6111202, 4640712, 6040872,
-11522860, 10525891, -827318, 8920110, 3786014, 9105331, 8768176, -15612206, 5120138, -5304285,
--6991670, -5181341, -1843615, -10087268, -2442763, 2006287, -8716636, -17419314, 3486440, -1566053,
--15777562, -11639898, -10482405, -5986111, 125091, -3248069, 3222836, -2389613, 5677947, 11551851,
--7253663, 3692061, -3118683, -5817533, -4413616, 367220, -1614908, -853088, 8423505, -727460,
-8489540, 11231339, 3001109, 4628901, 7205882, -1369558, 1078574, -11813308, 10218801, -9705015,
--3776350, -3347390, 448824, -2957622, -9417790, -8232379, -17731772, 15205795, -18115636, -17439178,
-2332704, 15947214, 5236102, -2533494, -4700305, 7084549, -8864276, 8947491, -3386045, 704375,
-297963, -6784975, 5846524, -8007430, -6767258, 1772748, 7544110, 9722195, 9692667, 10550050,
-24237574, 11155641, 14012868, -6280853, 22447646, -12139188, 974421, 5339718, 259309, -7818988,
-3107409, -1801739, -18473728, 7633768, -4406100, 2534031, -1438277, -5711233, 327491, 6129992,
--7291781, -3400540, -887448, 4980015, -11190537, 7838852, 3023120, -9943923, -555125, 4879083,
--9276592, 4172561, -11187853, 5890011, -747324, -3073586, -223875, -6830609, 9812390, 12002286,
--10628970, -5519570, 5086315, -3175592, 3180960, 3431679, 869194, 1071594, 13218299, -2581812,
--8658117, 8846559, -263604, -6142877, -5750425, -10121090, 2098629, 3739843, 5394479, 6002217,
--5136244, -7680476, 4545686, 3125126, 16073915, 2444910, -2496987, 1039919, 338229, -4416837,
--3503083, -12709882, -14299020, 24309514, 17018272, 21742736, 1562831, -13707388, 5071820, 11407970,
-8216273, -3401614, -8566849, -2453500, -3018288, -4135517, -7338489, -2917357, -6126234, 16201690,
-2790118, 2752537, 342524, 1023813, 1933809, -5875516, 10882910, 6083821, -405874, 3932043,
--1285806, 11014981, 2255932, -935229, -17708688, -1302986, 1364726, 1722819, -3122978, 2245194,
--8262980, 14553497, 12036109, 11361262, 10175314, -7857643, -10588705, 8245801, 2788508, 3984656,
--488016, -12693239, -8895414, 611496, -6896107, -56371, -5769752, -2763275, 7740068, 2206003,
--5231807, 1695438, -13788993, 145492, -23505820, -12337830, -22243636, 18852222, 17373142, 18019536,
-22393422, 10214506, -3894999, -10871099, -3373160, -1940252, 2604898, 14784351, -8440148, -11391327,
-10280541, 13333189, -6369437, 12400107, 1826972, -5033702, 5015985, -17570712, -5423470, 5194763,
--5579163, -10683194, -20445118, 10292352, -8753143, 2600066, 13343390, 3430605, 15542950, 12109660,
-6780680, 2815888, -9114457, -2396592, -4759898, 1145146, 8654359, 4823785, 1801202, 7712688,
-21081310, -732829, -17906792, -7477538, 2901251, 4716948, -1023813, 886911, 1695438, -7170985,
-467615, -16360067, 3787624, -17102560, -6440304, -13082470, 6717866, -6192806, -11217918, 17776332,
-4789963, 2120640, -7704098, -9472550, 2560338, 4929012, 1510218, 6520297, -8736500, 20277614,
--23330262, 7242926, -9700721, -12854300, -7893076, 13749801, 3754875, -11519639, 9472014, -8447127,
-26030186, 308164, -2809982, -8651138, 1082332, 24345486, 25051470, 23629836, 4998268, -6396280,
--4016868, -15299747, 12328704, 321586, 7208029, -4605816, 2273648, -5617281, -4356708, -8858370,
-4698694, -9220758, 15013595, -39399884, -11533598, 250182, -11985643, 8430484, -12320651, 2489471,
--4810900, 12353400, 2120640, 11892228, 778463, -2837363, -279710, 4339528, -13882945, -9929964,
--10823318, -1539209, 13324062, -26497264, 9084393, 23008676, 2723009, -16959216, -780610, -14286135,
--13798119, 9455371, -1917703, -11673721, 6347425, 951872, -4487167, -6605123, 3617973, 9552007,
-5652714, -13564044, -10062035, 7715372, 11479911, -9570261, -12812424, 6159520, 12836584, -15974057,
--829466, -14297409, -19819126, 23038742, -4260071, 3350075, -4858682, 13969381, -4068945, 2717641,
--8647380, 10086731, -6092948, -1946157, -20402706, -10338523, -5896453, -17535814, -24515136, -5845988,
--9239548, 20058572, 4919348, 30583388, 4226785, -10800232, 2659659, 4530117, -27868970, -69256,
-21466246, 13073880, -16918414, 514859, 9911711, -22696754, -5013838, -12164421, 7329899, -9876277,
-4260608, -185220, -5833640, -483721, -1730872, -8429410, 5498095, -15997143, -7315940, -7831873,
--19741280, -5473936, -4134443, -1427540, -494458, -6645925, -7491497, 31074088, 8023536, -14545444,
--25136832, -10252087, 419833, 21874806, -7742753, -4991289, -15314780, -5486821, -11449309, 17460652,
--18014166, 15299747, 19732690, -24381992, 12308839, 3325915, -11944304, -10736881, 2738579, 7837242,
--51364052, -9071508, -3122441, -9548786, 9506373, -9813463, -39820252, -18052284, -13959717, -6905234,
-5454609, 32274532, -1041530, -37574520, -21149492, -23206246, -4493073, -12771622, -700617, -18963892,
-31144956, 18799072, -3567507, 24851754, 488553, 26814554, 6107444, -15052787, -21199958, -12858595,
--17187922, -7177964, 3776887, 11861626, -4111358, 4195646, -14337675, 2871186, -20533702, -1284732,
--1611150, 7487202, -8039642, 32840394, 3641596, -154082, 20826296, -7558606, -15732465, -8091719,
-12496744, -136365, -9239548, 4523138, -781147, 28410134, 6072547, 1172526, -11354820, -15362561,
--42533060, 3980898, -33973728, 18198314, 56129852, -39190504, -9543417, 10858214, -7877507, -5381057,
--12293807, 11482595, -12616466, -37208376, -11388643, -36865316, -9140227, 1505386, -25518548, -510027,
--36265092, 18716930, -4244502, -18692234, 55031416, 8337606, 23633058, -12176232, -66677756, -7355132,
--17381196, -18975702, 23667418, 18690624, -23667418, -18788872, 45025752, -5593658, 14296872, 1909113,
--2838974, -5680631, -5408438, -15204721, -628676, 4821638, 7679402, 5071283, 15793132, -13201119,
--779000, -12874701, -7887171, 4617627, 22601192, 14409615, 19902342, 17855790, -4572530, 6195491,
-10493142, -389231, -19170050, -3820374, 25439092, -5050882, -37471980, -16719771, 3593814, -31774168,
--14024679, -32552094, -22541062, -20500416, 29245506, 19893752, -6897181, 19910394, 7385197, 28256052,
-18848464, 8798241, -50861540, -11695196, 1889786, -44781476, -32789390, -12898861, -8937290, -52386788,
-10935524, 28271086, 38316476, 45683956, -15627775, -30528090, -323733, -30780420, -22414360, -42522324,
--46538120, -33319820, -27537720, 31556736, -18921478, -48002164, 20943872, 3990025, -32111860, 33107218,
-17287244, 11308112, -5706938, -28562070, -5909875, 2501819, 31078384, 40662068, 4010426, 12170327,
-4270271, 2833605, -81068, 6894497, -14566918, 56599080, 14999636, -16336445, -16150688, -6376416,
-4253092, 28493886, -11164231, -2457795, 1869921, 15226196, -11175505, 8795019, 2821794, -1400696,
--43484932, -12588012, 16510928, 25184078, 10330470, -3407520, -11106249, -28308666, -1259499, 6586333,
--5089000, 2224256, -5764920, -17605608, 21547850, -2749853, 9064528, -18897320, -2212445, 54663124,
-6111202, -4033511, 8326331, 8769786, 7143068, 28537910, -7602092, -10069551, 21998286, -211527,
-13882945, 9473087, 19342922, -4454418, -17739826, 12330851, -7396471, 4205310, 75893144, 75022344,
-31416612, 16039555, 32433446, 664109, -42848204, -14467597, 4421132, 1435056, -13404056, 24828132,
-10405632, 6952479, -13747117, 29712046, -6120329, -3641596, -13232794, 13683229, 8043937, -30734786,
--42200740, -15311022, 2415919, -2468533, -11276974, -39831528, -7464653, 7742753, -1097901, -16670379,
--8777839, -15480673, -17394080, 3251827, 6114960, -27592480, -29084444, -13935021, -35133368, 3239479,
-23622320, -29433410, 22578644, -17875118, -18343268, -32603096, -41390064, -48071960, -43801688, -26484916,
--3744138, 9188009, 3312494, 8964670, -24814174, -53564148, -22272090, -51920248, -83198888, -37067180,
-60530048, 102837624, 60830696, -34172372, -25126096, -105145096, -91063504, 53070228, 7310571, 71790376,
-79722112, 77495168, 25962004, -43654584, -45555644, -57359288, -56828860, -15223512, -4490389, 6665789,
--25883084, 33961380, 15939161, 30010010, -69111928, 14395120, 8439074, -22118008, 14555107, -16860430,
--8465917, -5871221, -10433549, 28195386, 53560928, -16985522, 10306311, -8820252, 12444131, 26257282,
--8923868, -6354404, -15450071, 6567542, -9917079, -31268436, 21479132, 35456564, -5143760, -20721606,
--17918604, -40269076, -10864657, 27972048, 19883014, 8777839, -42803108, -26308286, -18621368, 36333276,
-32935420, 27289686, -83308408, -57068304, -6505802, 39777840, 88476864, -1127429, -105567072, -40386652,
-4064650, 34331284, -2292976, 18259516, 15571404, -47584480, -19414326, -13998909, -26765162, 858457,
--50975356, 7262253, 21984864, -63672892, -38771744, -19998978, -6215355, 69831336, 1835025, -106290240,
-13180181, 16836272, 20555176, 45490148, 27966142, 23477902, -56667260, 7907035, -41712724, 7496866,
-34891240, 31112206, 9835475, -20131048, 3633542, -11893301, -3424700, -14729053, -11502459, 7841537,
-1495186, -21401822, -3110630, 11574937, -3077881, 1636383, 3352222, -13390634, -14468671, 124017,
-8207146, 1746441, -22928146, 2444910, 10321343, 4221416, 1586454, 23780160, -3647501, -5325760,
-7076496, 9713069, -16840030, -16304770, 11471321, 3536906, -14694157, 10056666, 2339147, 5560909,
--10899553, 5087389, 8717173, 2719788, -14901926, 19301046, -4119411, -18150532, -1507534, 17404818,
-2584497, -10976863, 9392020, 6125697, -20759188, 9865540, -1931662, 21157008, -19905026, 4441533,
-9294846, -26103200, -2913062, 16355235, -4844723, 12985297, -9917616, -13906030, -3516505, -14002130,
-11109470, -27322972, 46426448, 7099581, 21332028, -17185238, 8528731, -3211562, 6148246, 5667210,
--7037841, 3746822, 9000641, -4151623, 18869402, 1512365, 1202591, 6910066, 6576132, 28454,
--4052302, 8513699, -611496, -4658429, -511638, 8568460, -7864622, 2555506, 4413079, -10001368,
-14027900, -1905355, -5897527, 21422224, -7922604, -11361799, 10052908, 6050535, -5134634, 9772661,
-7723962, -1654636, -2352032, -758062, 3237332, 6011344, 3554086, 843961, -3032247, 11523397,
--10798622, 11099806, 2108829, -318901, 3350611, 4169876, 3803194, 1418413, -9593883, 3803194,
-9160628, -5193153, 430570, 1014149, 7062537, 355409, -2142115, 11029476, -4668630, 6404870,
--9966472, -2809982, 10405095, -8578660, 10001368, -1716376, 6728067, 10613938, -37866580, -120941984,
--6208912, 65025268, 29184840, 138629200, 11800960, 29175712, 1199907, -40593348, -50971600, -34666292,
--62102004, -43610560, -27310086, 820339, 47453484, 93237832, 68794104, 59644748, 19547470, -32721208,
--47693464, -43154756, -50528144, -56356412, -22650584, -10997264, -4786741, 27149026, 36492188, 27165132,
-50979652, 32555316, 12344273, 33831456, 984084, -15103252, -9592273, -30913564, -62561568, -38471096,
--36509908, -37791416, 2233383, 17144436, 12367358, 45823008, 38167228, 25755308, 37575596, 39251708,
-11606075, 11541114, -3787088, -34405908, -46904264, -36512052, -46960636, -34056408, -11204496, -8611946,
-3595425, 25649544, 21011516, 18137646, 37420440, 30168388, 23301272, 37890740, 11773042, -7218230,
-449361, -14010720, -29520384, -16951700, -28831042, -18379238, -7886634, 0, 0, 0,
-0, 0, 0, },
+2699924, 383326, 1531693, 3398393, -1061931, 3617436, 936840, 667331, -4192425, -1037235,
+-4155381, -501437, 4171487, 3026878, -299037, 1903207, -598074, 1583232, -520765, 1980517,
+1675574, 2143189, 5126581, 2151779, -3779571, -343061, -4280472, 2205466, 1586990, -646929,
+434329, 476205, -927713, -1342177, 2562485, -1171452, 828392, 2291365, -2279554, 3849901,
+-901943, -1611, 1830730, -824634, 601832, 433792, 1934883, 3019899, 59056, 462246,
+-1103807, -146029, 181999, -1702418, -1613297, 1910724, 5183489, -474594, -2897492, -2598992,
+1632088, 2559801, 2950643, 1667521, 4212289, 246424, 3053722, -2422362, -1606855, 1927367,
+-621160, 2571612, -158377, -846109, 1377074, -3542811, 2703145, 1701881, -3491272, -608812,
+4500052, 1336809, 1127966, 2476049, -561030, 679142, -1139777, -4684199, -1814087, -233539,
+-1003949, 1343788, -1418413, -459562, -3935264, -12348, 719944, -2812130, -572304, -3549791,
+-1218697, -1141924, -4240207, -1983738, 1407676, 1846299, 4845797, 2818572, 6179921, -691490,
+-949725, 869194, -2063195, 5299453, 368293, 2483565, 4283156, 703838, -1653562, 1688996,
+-2198487, -3047816, -693100, -1345935, -1599875, -5597953, -1730335, -27380, 932545, 1598802,
+530965, 2761127, -3078418, 2426657, 49929, 554588, 1831804, -2256469, -4832375, -2180770,
+2160369, 2998961, 2395518, 133681, 2436857, 1744831, 3281355, 1589675, 1429687, -2101850,
+146029, -129386, -2658048, 2359548, -4042638, -2514703, 6279779, -1114544, 5540508, -2961380,
+456340, 2704756, 1147293, 107911, -3872987, -5438503, -5687611, 527207, 48855, -1657321,
+663036, -5023501, 9764608, 1044751, -5583995, 1391033, -2973728, -3195993, 2840584, 4116726,
+-165356, 878321, 1892470, -362925, -84826, 3225521, -1908039, -857383, 86436, 5926518,
+-230854, -748398, -2374580, -3578245, 1724429, -913754, -3746822, -1676648, -4489852, 551366,
+-4088272, 60130, -3131568, -1014686, -2775623, -5506685, -2394981, -357019, 5028870, 758062,
+-1660542, 2829310, 4572530, 730681, -6646462, 3002182, -219043, 1248762, 1899986, -1443646,
+3844533, -1961190, -3946538, -3699041, -7096897, 789200, -2737505, -2171106, -3601330, -5191005,
+8047158, -2310693, -7765301, 352187, 2326262, 19327, 2120640, 1718524, -6211060, 1918777,
+-1643899, -446677, -17717, -1290638, 4284767, -1603097, -3226057, -452582, 3359738, 2099165,
+1067836, 1951526, 8526047, 2143189, -3321084, 3801583, -3995930, 1045825, -3291019, 8113730,
+971736, -2869575, -1954210, -2873333, -1277216, 5332739, -4739497, -3863860, -1488743, 4393752,
+2237678, -4370666, 804233, 794569, -2866891, -31139, -9443022, 2853469, -2512556, -1872069,
+-6174553, 8530879, 12885, -4667019, -4051765, -4579509, -180926, -1095754, -66035, -161061,
+-5788006, 6739341, -4501663, -3687766, 2056753, 609349, 1986959, -2053531, -1182727, -4357781,
+-474057, 778463, -6339372, -4210679, -739271, 7188165, 214212, 1552631, -5963025, 1829119,
+3404835, 2496987, -266825, -2980707, 7716446, 1350767, -1564979, 3719442, 3005403, -3606162,
+4711043, -3174518, 7784628, 1123671, 6941204, -744103, 1190243, -2717104, -7945153, 876173,
+113280, 294205, -1418413, 1650878, 4114042, -1020592, -4119948, -2658048, -5839008, -1566053,
+-2914672, -3021510, 453119, 2021319, 3049964, -3677029, 2498597, -2448668, -3184182, -381178,
+2544231, 533113, 544387, -5733782, -5689221, -1018444, -1782411, -4182761, 9053791, 4304094,
+-735513, 1807644, 3528316, -9244380, -4875862, 6251862, -3668976, 5861020, 1103270, -1197759,
+-6471979, -4587025, 7125351, 3915937, 6681896, -7381438, -883153, -5166309, -858993, 1668595,
+-3288871, 437550, 714575, -12092480, 667867, -1532767, 3302830, -7307350, 2366527, -2448131,
+12268574, -3223910, -6325950, -2297808, -5303748, 1685775, 4566624, -1423782, 8580271, 904091,
+-2507187, 2091649, 1062468, 2259153, -3014530, -504659, 3205656, 5056250, 2008434, -971200,
+2431488, -4454418, -1380295, 6354404, 4538707, 7457137, 5287105, -86973, -3754875, -7875897,
+5485210, -824097, -5749888, 3040837, -1501628, -8819178, 256624, -7341710, -560493, 6735046,
+-1107028, -4913980, -2259690, 6442988, -5499706, -8986682, 9223979, -1659468, -2195802, 2233383,
+1208496, 1176284, 2257005, 2312840, 1276679, -6560026, -2473364, 5282810, -624918, -1828046,
+1644436, 9030706, -4383014, -4681515, -2110440, 3936875, 2016487, -7468412, -3278671, -10549513,
+-150324, 2915209, 10304700, 10642929, -3329674, 5335423, -6722161, 2307471, 4573604, 6859063,
+-1901060, 10252087, -1837172, 8704825, -4642860, 7302518, -3559454, -11974369, -2654827, 3068217,
+-4075924, 4707821, -2527588, -2833605, 1381906, -13138842, -4187056, -218506, -2215130, -741956,
+-6299107, -2153926, -2197413, 2144799, 13529684, 7796977, -7744900, 4318053, 10835129, 2705293,
+-3696356, 2715493, -2762201, -3172907, 7820599, 5415417, -5309117, -701153, 5597416, 11557757,
+-3638374, 6290517, 17206712, 7379291, -7820599, 3191698, 2064806, -9551470, 1501628, -7903277,
+3594351, -8621610, -1957968, 317291, 4129074, -5665599, -1493038, -2858838, -5047124, 6482717,
+5704254, -467078, -3714073, 770410, 4417911, -2561948, -11000485, 2237141, -8887898, 1153736,
+-3114388, 10929618, -5923834, 1340567, 2682744, 875636, 3797825, -1870458, 11966853, 732829,
+-8184597, -1697049, -6103149, -1154809, -2159832, -5686537, -7128572, -1973538, -4682051, -2296197,
+7565585, 2707977, -6866042, 2385318, -8148627, -1686312, 5495411, -10961293, -9761387, 5236639,
+4842576, 2464774, -564788, -6711424, 2356863, -3387119, -6413460, -3009698, 109522, 1811939,
+10017474, -4172561, -1366873, 413391, 4574677, 2393908, -3731253, -4686883, -8376797, -2605435,
+-1970853, -4605816, -5393942, 3273302, 6736656, -104690, -4440460, 7510824, 1429150, -3791919,
+957778, -1158031, -884763, -2662343, -1278290, 4840965, -3563212, -6005438, -2776696, 2692945,
+-3177202, 5653788, 10692321, -7812546, -208843, 7341710, -3402151, -5061082, 6690486, -10347650,
+-608275, 2088965, -1343251, -3749507, -4606890, -2045478, 1811939, -376347, 5005248, 2728915,
+-1706713, -3782793, -2957085, 8488466, 269509, -9862319, 4643397, -6136972, -6344204, 4106526,
+7181722, 7699803, 5521181, 118648, 3681324, 2902324, 3453154, -2981244, -322659, -2638184,
+-7445326, 3424163, -2066953, -12885, -1811403, 1114007, -1428614, 8462696, 14701136, 2914135,
+-2859911, 433792, -10967736, 10867341, -7595113, -4188130, -7346542, -8013872, 14162118, 1403381,
+-8473970, -2273112, 9596031, 5872294, -8064875, -4916664, 10988674, 1765232, 642098, 15789910,
+-7686918, 5138392, -5966247, -13506598, 6250251, 8656507, 469225, -6111202, 4640712, 6040872,
+11522860, 10525891, -827318, 8920110, 3786014, 9105331, 8768176, -15612206, 5120138, -5304285,
+-6991670, -5181341, -1843615, -10087268, -2442763, 2006287, -8716636, -17419314, 3486440, -1566053,
+-15777562, -11639898, -10482405, -5986111, 125091, -3248069, 3222836, -2389613, 5677947, 11551851,
+-7253663, 3692061, -3118683, -5817533, -4413616, 367220, -1614908, -853088, 8423505, -727460,
+8489540, 11231339, 3001109, 4628901, 7205882, -1369558, 1078574, -11813308, 10218801, -9705015,
+-3776350, -3347390, 448824, -2957622, -9417790, -8232379, -17731772, 15205795, -18115636, -17439178,
+2332704, 15947214, 5236102, -2533494, -4700305, 7084549, -8864276, 8947491, -3386045, 704375,
+297963, -6784975, 5846524, -8007430, -6767258, 1772748, 7544110, 9722195, 9692667, 10550050,
+24237574, 11155641, 14012868, -6280853, 22447646, -12139188, 974421, 5339718, 259309, -7818988,
+3107409, -1801739, -18473728, 7633768, -4406100, 2534031, -1438277, -5711233, 327491, 6129992,
+-7291781, -3400540, -887448, 4980015, -11190537, 7838852, 3023120, -9943923, -555125, 4879083,
+-9276592, 4172561, -11187853, 5890011, -747324, -3073586, -223875, -6830609, 9812390, 12002286,
+-10628970, -5519570, 5086315, -3175592, 3180960, 3431679, 869194, 1071594, 13218299, -2581812,
+-8658117, 8846559, -263604, -6142877, -5750425, -10121090, 2098629, 3739843, 5394479, 6002217,
+-5136244, -7680476, 4545686, 3125126, 16073915, 2444910, -2496987, 1039919, 338229, -4416837,
+-3503083, -12709882, -14299020, 24309514, 17018272, 21742736, 1562831, -13707388, 5071820, 11407970,
+8216273, -3401614, -8566849, -2453500, -3018288, -4135517, -7338489, -2917357, -6126234, 16201690,
+2790118, 2752537, 342524, 1023813, 1933809, -5875516, 10882910, 6083821, -405874, 3932043,
+-1285806, 11014981, 2255932, -935229, -17708688, -1302986, 1364726, 1722819, -3122978, 2245194,
+-8262980, 14553497, 12036109, 11361262, 10175314, -7857643, -10588705, 8245801, 2788508, 3984656,
+-488016, -12693239, -8895414, 611496, -6896107, -56371, -5769752, -2763275, 7740068, 2206003,
+-5231807, 1695438, -13788993, 145492, -23505820, -12337830, -22243636, 18852222, 17373142, 18019536,
+22393422, 10214506, -3894999, -10871099, -3373160, -1940252, 2604898, 14784351, -8440148, -11391327,
+10280541, 13333189, -6369437, 12400107, 1826972, -5033702, 5015985, -17570712, -5423470, 5194763,
+-5579163, -10683194, -20445118, 10292352, -8753143, 2600066, 13343390, 3430605, 15542950, 12109660,
+6780680, 2815888, -9114457, -2396592, -4759898, 1145146, 8654359, 4823785, 1801202, 7712688,
+21081310, -732829, -17906792, -7477538, 2901251, 4716948, -1023813, 886911, 1695438, -7170985,
+467615, -16360067, 3787624, -17102560, -6440304, -13082470, 6717866, -6192806, -11217918, 17776332,
+4789963, 2120640, -7704098, -9472550, 2560338, 4929012, 1510218, 6520297, -8736500, 20277614,
+-23330262, 7242926, -9700721, -12854300, -7893076, 13749801, 3754875, -11519639, 9472014, -8447127,
+26030186, 308164, -2809982, -8651138, 1082332, 24345486, 25051470, 23629836, 4998268, -6396280,
+-4016868, -15299747, 12328704, 321586, 7208029, -4605816, 2273648, -5617281, -4356708, -8858370,
+4698694, -9220758, 15013595, -39399884, -11533598, 250182, -11985643, 8430484, -12320651, 2489471,
+-4810900, 12353400, 2120640, 11892228, 778463, -2837363, -279710, 4339528, -13882945, -9929964,
+-10823318, -1539209, 13324062, -26497264, 9084393, 23008676, 2723009, -16959216, -780610, -14286135,
+-13798119, 9455371, -1917703, -11673721, 6347425, 951872, -4487167, -6605123, 3617973, 9552007,
+5652714, -13564044, -10062035, 7715372, 11479911, -9570261, -12812424, 6159520, 12836584, -15974057,
+-829466, -14297409, -19819126, 23038742, -4260071, 3350075, -4858682, 13969381, -4068945, 2717641,
+-8647380, 10086731, -6092948, -1946157, -20402706, -10338523, -5896453, -17535814, -24515136, -5845988,
+-9239548, 20058572, 4919348, 30583388, 4226785, -10800232, 2659659, 4530117, -27868970, -69256,
+21466246, 13073880, -16918414, 514859, 9911711, -22696754, -5013838, -12164421, 7329899, -9876277,
+4260608, -185220, -5833640, -483721, -1730872, -8429410, 5498095, -15997143, -7315940, -7831873,
+-19741280, -5473936, -4134443, -1427540, -494458, -6645925, -7491497, 31074088, 8023536, -14545444,
+-25136832, -10252087, 419833, 21874806, -7742753, -4991289, -15314780, -5486821, -11449309, 17460652,
+-18014166, 15299747, 19732690, -24381992, 12308839, 3325915, -11944304, -10736881, 2738579, 7837242,
+-51364052, -9071508, -3122441, -9548786, 9506373, -9813463, -39820252, -18052284, -13959717, -6905234,
+5454609, 32274532, -1041530, -37574520, -21149492, -23206246, -4493073, -12771622, -700617, -18963892,
+31144956, 18799072, -3567507, 24851754, 488553, 26814554, 6107444, -15052787, -21199958, -12858595,
+-17187922, -7177964, 3776887, 11861626, -4111358, 4195646, -14337675, 2871186, -20533702, -1284732,
+-1611150, 7487202, -8039642, 32840394, 3641596, -154082, 20826296, -7558606, -15732465, -8091719,
+12496744, -136365, -9239548, 4523138, -781147, 28410134, 6072547, 1172526, -11354820, -15362561,
+-42533060, 3980898, -33973728, 18198314, 56129852, -39190504, -9543417, 10858214, -7877507, -5381057,
+-12293807, 11482595, -12616466, -37208376, -11388643, -36865316, -9140227, 1505386, -25518548, -510027,
+-36265092, 18716930, -4244502, -18692234, 55031416, 8337606, 23633058, -12176232, -66677756, -7355132,
+-17381196, -18975702, 23667418, 18690624, -23667418, -18788872, 45025752, -5593658, 14296872, 1909113,
+-2838974, -5680631, -5408438, -15204721, -628676, 4821638, 7679402, 5071283, 15793132, -13201119,
+-779000, -12874701, -7887171, 4617627, 22601192, 14409615, 19902342, 17855790, -4572530, 6195491,
+10493142, -389231, -19170050, -3820374, 25439092, -5050882, -37471980, -16719771, 3593814, -31774168,
+-14024679, -32552094, -22541062, -20500416, 29245506, 19893752, -6897181, 19910394, 7385197, 28256052,
+18848464, 8798241, -50861540, -11695196, 1889786, -44781476, -32789390, -12898861, -8937290, -52386788,
+10935524, 28271086, 38316476, 45683956, -15627775, -30528090, -323733, -30780420, -22414360, -42522324,
+-46538120, -33319820, -27537720, 31556736, -18921478, -48002164, 20943872, 3990025, -32111860, 33107218,
+17287244, 11308112, -5706938, -28562070, -5909875, 2501819, 31078384, 40662068, 4010426, 12170327,
+4270271, 2833605, -81068, 6894497, -14566918, 56599080, 14999636, -16336445, -16150688, -6376416,
+4253092, 28493886, -11164231, -2457795, 1869921, 15226196, -11175505, 8795019, 2821794, -1400696,
+-43484932, -12588012, 16510928, 25184078, 10330470, -3407520, -11106249, -28308666, -1259499, 6586333,
+-5089000, 2224256, -5764920, -17605608, 21547850, -2749853, 9064528, -18897320, -2212445, 54663124,
+6111202, -4033511, 8326331, 8769786, 7143068, 28537910, -7602092, -10069551, 21998286, -211527,
+13882945, 9473087, 19342922, -4454418, -17739826, 12330851, -7396471, 4205310, 75893144, 75022344,
+31416612, 16039555, 32433446, 664109, -42848204, -14467597, 4421132, 1435056, -13404056, 24828132,
+10405632, 6952479, -13747117, 29712046, -6120329, -3641596, -13232794, 13683229, 8043937, -30734786,
+-42200740, -15311022, 2415919, -2468533, -11276974, -39831528, -7464653, 7742753, -1097901, -16670379,
+-8777839, -15480673, -17394080, 3251827, 6114960, -27592480, -29084444, -13935021, -35133368, 3239479,
+23622320, -29433410, 22578644, -17875118, -18343268, -32603096, -41390064, -48071960, -43801688, -26484916,
+-3744138, 9188009, 3312494, 8964670, -24814174, -53564148, -22272090, -51920248, -83198888, -37067180,
+60530048, 102837624, 60830696, -34172372, -25126096, -105145096, -91063504, 53070228, 7310571, 71790376,
+79722112, 77495168, 25962004, -43654584, -45555644, -57359288, -56828860, -15223512, -4490389, 6665789,
+-25883084, 33961380, 15939161, 30010010, -69111928, 14395120, 8439074, -22118008, 14555107, -16860430,
+-8465917, -5871221, -10433549, 28195386, 53560928, -16985522, 10306311, -8820252, 12444131, 26257282,
+-8923868, -6354404, -15450071, 6567542, -9917079, -31268436, 21479132, 35456564, -5143760, -20721606,
+-17918604, -40269076, -10864657, 27972048, 19883014, 8777839, -42803108, -26308286, -18621368, 36333276,
+32935420, 27289686, -83308408, -57068304, -6505802, 39777840, 88476864, -1127429, -105567072, -40386652,
+4064650, 34331284, -2292976, 18259516, 15571404, -47584480, -19414326, -13998909, -26765162, 858457,
+-50975356, 7262253, 21984864, -63672892, -38771744, -19998978, -6215355, 69831336, 1835025, -106290240,
+13180181, 16836272, 20555176, 45490148, 27966142, 23477902, -56667260, 7907035, -41712724, 7496866,
+34891240, 31112206, 9835475, -20131048, 3633542, -11893301, -3424700, -14729053, -11502459, 7841537,
+1495186, -21401822, -3110630, 11574937, -3077881, 1636383, 3352222, -13390634, -14468671, 124017,
+8207146, 1746441, -22928146, 2444910, 10321343, 4221416, 1586454, 23780160, -3647501, -5325760,
+7076496, 9713069, -16840030, -16304770, 11471321, 3536906, -14694157, 10056666, 2339147, 5560909,
+-10899553, 5087389, 8717173, 2719788, -14901926, 19301046, -4119411, -18150532, -1507534, 17404818,
+2584497, -10976863, 9392020, 6125697, -20759188, 9865540, -1931662, 21157008, -19905026, 4441533,
+9294846, -26103200, -2913062, 16355235, -4844723, 12985297, -9917616, -13906030, -3516505, -14002130,
+11109470, -27322972, 46426448, 7099581, 21332028, -17185238, 8528731, -3211562, 6148246, 5667210,
+-7037841, 3746822, 9000641, -4151623, 18869402, 1512365, 1202591, 6910066, 6576132, 28454,
+-4052302, 8513699, -611496, -4658429, -511638, 8568460, -7864622, 2555506, 4413079, -10001368,
+14027900, -1905355, -5897527, 21422224, -7922604, -11361799, 10052908, 6050535, -5134634, 9772661,
+7723962, -1654636, -2352032, -758062, 3237332, 6011344, 3554086, 843961, -3032247, 11523397,
+-10798622, 11099806, 2108829, -318901, 3350611, 4169876, 3803194, 1418413, -9593883, 3803194,
+9160628, -5193153, 430570, 1014149, 7062537, 355409, -2142115, 11029476, -4668630, 6404870,
+-9966472, -2809982, 10405095, -8578660, 10001368, -1716376, 6728067, 10613938, -37866580, -120941984,
+-6208912, 65025268, 29184840, 138629200, 11800960, 29175712, 1199907, -40593348, -50971600, -34666292,
+-62102004, -43610560, -27310086, 820339, 47453484, 93237832, 68794104, 59644748, 19547470, -32721208,
+-47693464, -43154756, -50528144, -56356412, -22650584, -10997264, -4786741, 27149026, 36492188, 27165132,
+50979652, 32555316, 12344273, 33831456, 984084, -15103252, -9592273, -30913564, -62561568, -38471096,
+-36509908, -37791416, 2233383, 17144436, 12367358, 45823008, 38167228, 25755308, 37575596, 39251708,
+11606075, 11541114, -3787088, -34405908, -46904264, -36512052, -46960636, -34056408, -11204496, -8611946,
+3595425, 25649544, 21011516, 18137646, 37420440, 30168388, 23301272, 37890740, 11773042, -7218230,
+449361, -14010720, -29520384, -16951700, -28831042, -18379238, -7886634, 0, 0, 0,
+0, 0, 0, },
{
-522912,
--292058, -565325, 4009352, 2597918, 440771, -1506997, 2077154, 3594888, -1101659, 3978214,
--2531346, -810675, 2589865, 882616, -4480725, 1421097, 2778844, -6218576, -113280, 5133023,
--3015067, -4310000, 4304631, -3466576, 875636, -2539936, 370978, 334471, 381178, -228170,
--3140158, 4502737, -2037425, -1030792, -2770254, -2889976, 176631, -618475, -2095944, -3569118,
--2871723, 5473399, -601295, 2137283, 1509144, -349503, 4178466, 1117228, 2911988, -325881,
--2171106, 2853469, -4024384, -2179159, 36507, -428960, 409096, 973884, 3021510, -1032403,
--602369, -1225139, 843424, -418222, -747324, 1876901, -62814, 2343979, -440234, -1940788,
--1645509, -7516, 475131, -737124, 981937, -2665027, 764504, 3340411, -183073, 392453,
--4699231, -2312303, 811749, 6468758, -4001836, 1433445, -6507949, 6890738, 551903, 2593087,
--674847, 1182190, -1167694, -2222109, -5640903, 2543158, -5654325, -2582349, -3141232, 3384971,
-2712809, 1367947, 2823941, 5230734, 450435, -4521527, 3171297, 621160, -97711, 2627446,
--799401, -1555315, -6659347, 1233193, -1815697, 1620276, 2982318, -3541738, -1330903, 3496640,
-1191853, 547608, -3313031, 8869107, 5398774, 1015223, 4368519, 3634616, 3520263, -7787313,
-661962, -586263, -1937030, 2151779, 1501628, -1066763, -1297617, -200790, -2182380, 2596308,
--685047, 4904316, 59593, -884763, -1948841, -3714610, -466004, 3523484, 171799, 1216550,
-4008815, 1739999, 527744, 1751273, 494995, 2195265, 7337952, -3376918, 2528662, -1867237,
--3012383, -1158031, -2050847, 4071092, -3141769, -5915244, -1429150, 1723356, -4923643, -2911451,
-5803575, 9965398, -1543504, 3894462, -3258270, -3410204, -44023, 1178432, -319438, 42950,
-3761855, -6085969, 2147484, -309775, -1191853, -5101885, 572304, 279173, 3076270, 1045825,
--3995393, 5586679, -4198868, 5227512, -449361, 1089311, 2178622, -419833, -2408940, 4137127,
-1097901, 5472325, 933619, -4471598, 8586713, 6917582, -2206540, -486405, -1486059, -5666136,
--3027952, -750009, -853625, 2598992, -3064996, 495532, 2501819, 255014, 115427, -119185,
--323196, -2941516, 5385889, 442382, 229781, -1329292, -99321, -4422743, -3206193, -7954817,
-8840116, -2449742, -1516124, 6191196, -3015067, 2983392, 14289356, -2199023, 12885, -6063957,
--4971962, -7449084, 3639448, -3333968, 1560147, 3425773, -4842576, -4212826, -3192771, -125628,
-1023813, -5896453, -2564632, 1937567, 1616518, -2609730, -1316408, 2882460, -3868155, 86436,
--2139431, -1073205, -2826625, 1588601, -2630668, 451508, 1518271, -1357747, 5748277, -198105,
--1279900, -5033702, 102005, 6152004, 467078, 1768453, -6504728, -9110163, -3596498, -7904888,
--7029251, -643708, -3301756, -731218, -8442295, 6339909, -7860327, 607738, 4560719, -5043902,
--8215199, -5962489, -2142652, 4636954, 3998615, 6367826, -4603131, -4024921, -3442953, -2915209,
-4297115, 787053, -2790118, -1589675, 1473174, 8005819, 810675, -3233574, 424665, -2669859,
--631897, 5621576, 9372156, -3203509, -3345243, -8519605, 1024350, 2178622, 4798016, -3179350,
-5172215, 882616, 7997229, -6415608, 956704, -12159589, -1434519, 1545115, -3082713, -2656974,
--1178969, 4614406, -3796214, -6311992, 1715839, -9302899, -2170569, -4387309, 1963337, -845035,
-3069291, 594853, -7318625, -7577933, 83752, 4345970, 7559143, -1301375, -3265249, 6688338,
--7241852, -3597035, 3289408, 3352759, 4951024, -4544076, 41339, 2310693, -3204046, -660888,
-2870112, -4006131, 5613523, -2058363, -1195075, -5648419, -5214091, 2993592, -118112, 702764,
--954020, -3109556, 3496640, -1629403, 4400731, 767189, -5822902, -5148592, 2374043, -1852742,
-1401770, -6833293, 5281199, -12599823, 3514894, -5215164, 5294084, 5945846, -5680631, -11009075,
-2115808, -1088237, 7772817, -3925600, 11034308, -3998615, 7486128, -8181913, -2650532, 4010963,
-5719286, 1859721, 519154, -4874251, -127238, -3755412, -4615479, 3270618, -3843996, 2119030,
-1615982, 2515777, -1908576, 5265630, -295279, 4577362, -313533, -7701950, -694174, -2225867,
-1481227, 8396124, 1190243, -353798, 281857, -2931852, 3505767, -2753074, 4992363, 4914517,
-2435247, 2075006, 8900783, -1712618, -648003, -6204081, 5470178, 4350265, 1742146, 1309428,
-1777043, 584116, 3343095, 5168457, 4323959, 2089502, 2884071, -1080184, 7603166, 2343979,
--78383, -4851703, 3883724, -1430224, 10936060, 5295158, 2933463, -4505421, 310848, -16558710,
--8857296, 3651259, -2989834, 7030325, 7065221, 10445360, 4537096, 4361540, 2842732, -12047383,
--2410551, -1484985, 1445793, -1029182, 4173098, 2900177, -4353486, -3592203, 3524558, 6136972,
-7920457, 6646999, 8954470, -4560182, -4283156, -6105296, 7013145, -3716221, 5876052, -1294933,
-146566, -5759015, -3051574, -3282966, 5406290, 6140193, 1539746, 6118718, 9212168, -3482145,
-2693481, 10225243, -4663261, 3273839, 3985730, 303332, 8232379, 9774272, 8048232, 17002164,
-3731253, -2606508, -2612951, -3147674, 390305, 2767570, 5790153, -1242856, -1069447, -2159295,
--3965866, 1525787, 3130494, 3971771, -10031433, -2018098, 3398930, 6454262, 5666673, -9904731,
--6034966, 806917, 2451890, 6264210, 4179540, 8259759, -945430, 1797444, 7052337, 10355703,
-5839545, -11111617, 118648, -11821897, -8429410, -4971962, -931471, -7146826, 8814884, 3439732,
-5232344, -14701673, -1029182, 9978820, 4993973, -4139275, -6244346, -3578782, 3821447, -11145440,
--655519, -7053410, 11230266, -1185411, -3287261, 1506460, -412317, -1598265, 1963874, -2622078,
-5188858, 4071629, 7462506, -171799, 344671, 11972758, -3703336, 8171712, -1306744, -906238,
-20323248, 2909840, -2243047, -4089346, -15823733, 2207613, -16218333, -2135673, 16944720, -4175245,
--3371549, -11147051, -3528316, 1149978, -6410239, 4211753, -664646, -7789997, 9174587, 4263292,
-2990908, 3625489, -6378564, 8286066, -10895795, 4661114, 4412542, 2303713, -1063541, -1924145,
--2460480, 1271847, 6999186, -13029320, 6131066, -4367445, -6409165, -6097243, 5446556, 6853694,
-4149475, 11623792, 8675297, 2032593, 3752728, -8485245, 2152852, 4326643, 9102109, 2037962,
--3833258, 3537979, 4444218, -7577396, 1516660, -7783555, 6698539, 6114960, 7795903, -6894497,
-4776541, 8296803, -3243237, 2383170, 10928007, -537, -6189048, -4890357, 2711198, -1433982,
--6299107, -2425583, 476741, 1856500, 3961571, -4285304, 7723962, 4778151, -1343788, 9190156,
--760209, 3654480, 12007118, -12137041, 23222888, -10278930, 3469797, 7150047, -2075543, -1043140,
-3202435, 15724949, -554588, -1945620, -187905, -3500398, 7787850, 8609262, -2480344, 3745212,
-3191161, 2850785, 5303748, 6707665, 586263, 7187091, 1408212, -6274411, 7902740, 10320270,
-6445672, -10333154, 20680268, -6099391, 4137664, -14644765, 6210523, -12906377, 10504953, 1401770,
--2606508, -7144678, 9926206, 1650341, 6407018, 6747394, 3488050, -10785200, 5902359, -6378564,
--1046898, 5408438, 5652177, 1656784, -1905355, -10784663, 1715303, 10686416, 1297080, 7062000,
-7587060, -11264089, 6549825, -5524402, -5746130, 9021579, 9635759, 5371394, 5452998, 1906966,
-5217849, -11602854, -5305359, -3415573, 392453, 13228499, 6178311, 5500243, -925565, 6056441,
--278636, 14529337, 5201743, 5775121, 2143189, -363462, -20884816, 8156680, 4905927, -1513439,
--1505386, -15167140, 123480, -5550172, 3721589, 13965623, -2243047, -7377143, 15927886, -325881,
-9169755, -4878546, 520228, -9349070, -260382, -3968013, 3854733, -533113, 12984760, -11951820,
-1319092, 4398047, 5701032, -20455856, 12930536, 3205656, -14514842, -9602473, 7450695, 17258790,
--6552510, -3798899, -12566001, 24897388, 9642202, 975494, 4001836, -14017700, -8894340, -1225139,
-895501, 12528420, 2663954, 9470940, 11266773, -1250372, 534187, 7196218, -2266669, -9329743,
--8289824, -2925947, 11205033, -7022272, 14224932, -7592429, 20960514, 8388608, 16899086, -5633387,
-2668785, 12554726, -10682121, 5216775, 6105296, 4581120, -6112276, 5990406, 1744831, 967978,
-6207302, 11535745, 10935524, -12593918, -2530273, 4063039, -10703059, -8615168, -2718714, -23989540,
-6096169, -12984223, -6590091, -129923, -2374043, 5065914, 14618458, 6244346, 6559489, -10711112,
--122407, -15686831, -23258858, 12936441, -9334575, 10648298, 3637837, 5272609, 6400038, -15550466,
--28476170, 2771328, 4383551, 16404628, -15717433, -17257716, 15323370, -5798206, 7096897, -3068754,
-3826816, 2623151, 4212826, -7734163, 4080756, -918049, -2259690, 10202695, 3958886, -1202054,
--12715788, -1535451, -135291, -2151779, -381715, -6773701, -16941498, -7399155, 12847321, -5133023,
-6455336, -9498857, 7452842, 3959423, 108448, -4659503, -21069498, 12025908, 11671037, 14951318,
--10044855, -4104378, 20217484, 17918066, 8394514, 4058207, 11525008, 4421132, 10376641, -5175436,
-9039296, -16570521, -850404, 4982699, -4173098, 20337744, 985695, 11257109, -6345278, -10478110,
-23350664, -91268, 9360881, -2774012, 486942, -26982596, -2013803, 6190122, -12296491, -15942382,
--5006322, -4123706, -26949310, -25283398, -7031399, -376883, 18107046, 14681809, 14465450, -6291054,
--2969970, -4235375, 15472083, 6419903, -7293928, -1651952, -5928666, 11142219, 8422968, -7139310,
--9957345, -9040906, -18161806, 6911140, -104153, 78920, 3236258, -3037079, 6059125, 24314346,
--14678588, 7063611, 857920, -9900973, -6077379, -11673184, 3660386, -5376226, -6316287, 12461848,
-931471, -4587562, 12275017, -2058900, -6356552, 4214437, 8769249, -5450314, 9467719, 17960480,
-16881368, -12206297, -841277, 4205847, 9211631, -15335181, -3847754, -4295504, 18246632, 8018167,
--2723009, -11498164, -13452374, -11263015, 16436303, 14363981, -27714888, -22236120, -17710834, -11469710,
-3626026, -9863929, 6387153, 3762928, 2738579, 21510270, 16865800, 10372883, 1294396, -14557792,
--7795903, -2478196, 5464809, 8811125, -13049721, 3045669, 340376, -11006927, -5569499, 8485245,
--6899865, 6718940, 2461016, 7952132, -10606959, -197032, -23049478, 3230889, -29030758, 11578695,
-10950019, -11155104, 12414603, 15480673, -214748, 4360466, -19043348, 10761577, 341987, -7649337,
-9169218, -2365990, -666794, -177704, 369367, 19182934, -3055332, 7516, 22576496, -178778,
--11846594, -30983894, -26586384, 28491740, 16576963, 7121056, 5978595, -11728482, -25178708, -11585674,
-2468533, -8994198, 17301202, -777389, 959925, 20446728, -5804649, -6001143, -6360310, -12433393,
--23629300, -16863652, 46551540, -23444078, -13401372, 14220100, -27962922, -17790828, 13520020, 24373402,
-1933272, -6425271, 2197950, 5615133, -20404316, -15137612, -10683194, -18685256, -2013803, 17059074,
--1625645, 3251827, 8187819, 5360656, -15150497, -7468412, -12592307, -6849399, 15268072, -5092758,
--2105071, -2452426, 9089761, 9167071, 27846420, 4204773, 20380156, -1509144, 6588480, -11620571,
--8975408, 7168838, -14871861, -16311749, 59056, 4772783, -8707509, 6308770, -10127533, 2670933,
--25856776, 13884019, 7386270, 11312407, 889595, -10559177, -21810918, -7821673, -2496450, 17264694,
--13969381, -8128763, 4221953, 39807904, -11776263, 40480068, -25726318, 9647033, -10020696, 17657684,
--7965554, 30688616, -30010010, 44045428, -5251135, 8930848, 17940078, -32943472, 27866284, -35154308,
-22024056, -57171920, 28965260, -29384018, 23427436, -38238632, 29894046, 1304060, 13910325, -17215302,
--15572478, 18901078, 32309428, -26106422, 40856952, -1967632, 315143, -1165010, 7347079, -11660299,
--8562017, -17661442, -3754338, 989453, 313533, 319975, 16189342, 3146064, 17709224, 17517560,
--10644540, 6716792, 36637144, 12329777, 7996692, 5894843, -31419296, 2042257, -4966593, -3526168,
--28843926, -5695127, 16761110, 5137318, 5619428, 8807367, 21151640, 5935108, -6487548, -1735167,
--1830730, 8336532, -14409078, -8418673, 21692806, 13930726, 10004053, 17241610, 12246026, -6938520,
--3930432, -24743306, -11360188, 10583336, 7657390, 19313394, -14171781, -6491306, -5408438, 14230837,
-7412577, 12763032, 4247723, -9724343, -10340671, 31477278, -11025181, -30480310, 5204964, 21867290,
-12645994, -898722, -6175626, 1525250, -869194, -686658, 8924405, -11874511, -63551020, 18248242,
--7231651, -3557307, 16325171, -10371809, 17491254, -1793149, -27153856, -4604205, 3348464, 10199474,
-13072807, 3315715, -19008452, 19898046, -6945499, -1379221, -11383811, -5066451, 11184632, -1730872,
-10074920, 16053514, -2865280, -19969988, 5294084, 22572738, -19923280, 7913477, 18118856, -2878165,
--12862353, -25343528, -16392816, 18279918, 47162500, -14038101, -17536352, 52315388, -2461553, -7338489,
-38486128, 21989696, 19638202, 15189689, 7208029, -10925323, 20115480, 17835388, 13320304, 5724655,
--33372970, 21585432, 20231980, -36401996, -19859392, -13089987, -8951249, -10059887, 41043244, 19795504,
--21364778, 21174188, -6985765, -21337398, 10761577, 10700374, -7781407, -9145596, -31597000, 3553549,
-7638063, 24029268, 14090714, 1838246, -17193828, -69881800, 21294448, 39254928, -24582246, -5161477,
--19182934, 40428528, 26991722, 17049946, -3495030, -14191109, 2615098, 16305843, 7275138, -7044283,
--1904281, 22341884, -1857573, -8198019, -30341260, -14143327, 24778204, 14726369, -16419123, 12818330,
--12068858, -3577171, 6986301, 7192997, -7576859, 4686883, -26910118, 7617125, 34720516, -4388383,
--7703561, -34718904, -21800718, 17037062, -28408524, -14790794, 5291400, 7139847, -9577240, 22992570,
-20390894, -22032646, 7029788, 12539694, 34367792, 32905892, -6653978, 10888279, -2480881, 37607272,
-14510547, 15367393, 33539400, -15637439, -25274808, -11665131, -31983010, 25219512, 9215389, 12440373,
-3611531, 42681776, -31345208, -6285148, 14442901, -9677635, 15910706, -474057, -2389076, 10248329,
--28508920, 17644262, 29002840, 25465934, 26246008, 33292976, -16879222, 26502632, -47598976, -20095616,
-20100984, 5757404, 37395744, 17697950, 32137092, -11996917, 5624260, -25252798, 19615116, 31023622,
-28675350, 3990025, 20817706, -45906220, -29042032, 30503932, 10213969, -28172838, -13468481, 4798552,
-44989784, 14543296, -15830176, -21035676, 6203544, -5323612, 28433220, 29866128, -972810, -3535832,
-7606387, -7029251, 36346696, 10996190, -6177237, 8028368, -14345728, -8630200, -75011600, -25123948,
-15878494, -10982231, -9339943, 700617, -11640435, -12842489, 37680820, 24740622, -15359340, 33345052,
-69337416, 14893336, 50244676, 7795903, 12488154, 36211944, 26062398, -17352204, -18072686, -35865660,
--19745576, -448287, -32948304, 16356309, 462783, -32020054, -18836116, -18626200, 1216013, 32364190,
--1497333, 27800786, -14949171, 8833137, -55649892, 18138184, -6966974, 31508416, -5608691, -32337346,
-36251136, -10937671, 6976638, 21731460, 16368657, 33721936, -3182571, 6949257, -4396973, 38211252,
--6060736, 9042517, 26678726, -26697516, 26306674, -4973572, 16674137, 26312580, -4953171, 7732552,
-5507759, 4860829, -6276021, 13119514, 11828877, -1764695, -12681428, -94489, -15039902, -2831457,
--1741609, 16052977, -5539434, -23541790, -15881715, 30254824, 29226178, -23631446, -20748988, 35794796,
-40145596, -12186433, -2549600, 30850750, 2417530, 17326434, 21634288, -44014288, -12637404, -124017,
-46803868, 7328288, -1997697, -41554884, 10125385, 20964272, 12753905, 5124433, 13248900, 8426726,
-7350300, 61419108, -822486, 8718247, 33249490, 32693828, -56260852, -4246112, -47610248, -44300976,
-10797011, 8791798, 7843684, 600759, 41590316, 23246510, 53629648, 58236000, -6547141, -29553670,
-6107444, -8525510, -5371931, 12029667, 5738613, -5477157, -26993870, -30421790, 32214940, 13972602,
--3484829, 4008815, 5426691, 1986959, 6162205, -4048007, -7388955, -44851268, 1298691, 23991688,
--6983617, -34940096, -10640245, 26439282, -50921668, -19010062, 33027224, 18265422, 39390756, -2601677,
-3463354, -37348500, -35451196, -47167332, 39076688, 52550000, -70683888, -37448892, -2872260, 34379604,
--27426050, -6659347, 66566088, 24510842, 17712446, 41104984, 32869922, 45201308, -15953119, 44762688,
--5862631, -39945880, -53173844, -15823196, 22535156, -46552076, -6692096, 5758478, -7087233, -19094350,
-11799349, -41660644, 31770410, -2887292, 9583683, 12192875, 11785390, 220654, -14175003, 22494892,
-5484673, 21709986, -4908611, -46568720, -4420595, 13238700, -15466714, -17146046, -10613938, -15812996,
-18689550, -5008469, -16714939, -1083942, 17365090, -23781770, 16333761, -8340290, 8582418, -23420994,
--6033356, 9310415, -2231773, -2269353, 2638721, 12955769, -2555506, -2223719, -16517907, 8011725,
--4716411, 2527588, 4780299, 1632625, 11803644, -17728552, -13756780, 18440978, 15674483, -22218940,
-10290742, -17949206, 20375324, -17325362, 7487739, 5349382, -14988362, 32530082, 2814277, -36083092,
-16295643, 4485557, -28355910, 15848429, -10693932, 16936130, -24713242, 12760885, -26203596, 12242804,
-17681306, -15879568, 8820252, -16553878, -111132, 2373506, 1103270, 7594039, -22601192, -124107912,
--213919440, -79428440, -168589808, -166905648, 70738112, 4860829, 103264432, 249003952, 223143952, 180752096,
-223514928, 132008504, 19923816, 33092186, -45854680, -187386736, -185332672, -141735536, -180371440, -127469264,
--36002028, -89917288, -119440360, -58614492, -25385942, -67730560, -38420628, -12904766, -39664560, -61377232,
--1182190, 31345746, -26019448, 48134772, 77632072, -9063455, 6043019, 109237128, 48708152, -10100152,
-102061848, 81604912, -31990528, 33381560, 95217280, -11922292, -1014686, 139039360, 70638792, 24177444,
-171037952, 189527248, 89452896, 179970400, 226323840, 54425824, 25365004, 89392232, -42613056, -117115168,
--68761352, -149234544, -261180176, -259831568, -292604832, -389377440, -388820704, -370920896, -374593632, -330299616,
--272114080, -205460496, -105280920, 922881, 173103824, 205873344, 138525040, 0, 0, 0,
-0, 0, 0, },
+-292058, -565325, 4009352, 2597918, 440771, -1506997, 2077154, 3594888, -1101659, 3978214,
+-2531346, -810675, 2589865, 882616, -4480725, 1421097, 2778844, -6218576, -113280, 5133023,
+-3015067, -4310000, 4304631, -3466576, 875636, -2539936, 370978, 334471, 381178, -228170,
+-3140158, 4502737, -2037425, -1030792, -2770254, -2889976, 176631, -618475, -2095944, -3569118,
+-2871723, 5473399, -601295, 2137283, 1509144, -349503, 4178466, 1117228, 2911988, -325881,
+-2171106, 2853469, -4024384, -2179159, 36507, -428960, 409096, 973884, 3021510, -1032403,
+-602369, -1225139, 843424, -418222, -747324, 1876901, -62814, 2343979, -440234, -1940788,
+-1645509, -7516, 475131, -737124, 981937, -2665027, 764504, 3340411, -183073, 392453,
+-4699231, -2312303, 811749, 6468758, -4001836, 1433445, -6507949, 6890738, 551903, 2593087,
+-674847, 1182190, -1167694, -2222109, -5640903, 2543158, -5654325, -2582349, -3141232, 3384971,
+2712809, 1367947, 2823941, 5230734, 450435, -4521527, 3171297, 621160, -97711, 2627446,
+-799401, -1555315, -6659347, 1233193, -1815697, 1620276, 2982318, -3541738, -1330903, 3496640,
+1191853, 547608, -3313031, 8869107, 5398774, 1015223, 4368519, 3634616, 3520263, -7787313,
+661962, -586263, -1937030, 2151779, 1501628, -1066763, -1297617, -200790, -2182380, 2596308,
+-685047, 4904316, 59593, -884763, -1948841, -3714610, -466004, 3523484, 171799, 1216550,
+4008815, 1739999, 527744, 1751273, 494995, 2195265, 7337952, -3376918, 2528662, -1867237,
+-3012383, -1158031, -2050847, 4071092, -3141769, -5915244, -1429150, 1723356, -4923643, -2911451,
+5803575, 9965398, -1543504, 3894462, -3258270, -3410204, -44023, 1178432, -319438, 42950,
+3761855, -6085969, 2147484, -309775, -1191853, -5101885, 572304, 279173, 3076270, 1045825,
+-3995393, 5586679, -4198868, 5227512, -449361, 1089311, 2178622, -419833, -2408940, 4137127,
+1097901, 5472325, 933619, -4471598, 8586713, 6917582, -2206540, -486405, -1486059, -5666136,
+-3027952, -750009, -853625, 2598992, -3064996, 495532, 2501819, 255014, 115427, -119185,
+-323196, -2941516, 5385889, 442382, 229781, -1329292, -99321, -4422743, -3206193, -7954817,
+8840116, -2449742, -1516124, 6191196, -3015067, 2983392, 14289356, -2199023, 12885, -6063957,
+-4971962, -7449084, 3639448, -3333968, 1560147, 3425773, -4842576, -4212826, -3192771, -125628,
+1023813, -5896453, -2564632, 1937567, 1616518, -2609730, -1316408, 2882460, -3868155, 86436,
+-2139431, -1073205, -2826625, 1588601, -2630668, 451508, 1518271, -1357747, 5748277, -198105,
+-1279900, -5033702, 102005, 6152004, 467078, 1768453, -6504728, -9110163, -3596498, -7904888,
+-7029251, -643708, -3301756, -731218, -8442295, 6339909, -7860327, 607738, 4560719, -5043902,
+-8215199, -5962489, -2142652, 4636954, 3998615, 6367826, -4603131, -4024921, -3442953, -2915209,
+4297115, 787053, -2790118, -1589675, 1473174, 8005819, 810675, -3233574, 424665, -2669859,
+-631897, 5621576, 9372156, -3203509, -3345243, -8519605, 1024350, 2178622, 4798016, -3179350,
+5172215, 882616, 7997229, -6415608, 956704, -12159589, -1434519, 1545115, -3082713, -2656974,
+-1178969, 4614406, -3796214, -6311992, 1715839, -9302899, -2170569, -4387309, 1963337, -845035,
+3069291, 594853, -7318625, -7577933, 83752, 4345970, 7559143, -1301375, -3265249, 6688338,
+-7241852, -3597035, 3289408, 3352759, 4951024, -4544076, 41339, 2310693, -3204046, -660888,
+2870112, -4006131, 5613523, -2058363, -1195075, -5648419, -5214091, 2993592, -118112, 702764,
+-954020, -3109556, 3496640, -1629403, 4400731, 767189, -5822902, -5148592, 2374043, -1852742,
+1401770, -6833293, 5281199, -12599823, 3514894, -5215164, 5294084, 5945846, -5680631, -11009075,
+2115808, -1088237, 7772817, -3925600, 11034308, -3998615, 7486128, -8181913, -2650532, 4010963,
+5719286, 1859721, 519154, -4874251, -127238, -3755412, -4615479, 3270618, -3843996, 2119030,
+1615982, 2515777, -1908576, 5265630, -295279, 4577362, -313533, -7701950, -694174, -2225867,
+1481227, 8396124, 1190243, -353798, 281857, -2931852, 3505767, -2753074, 4992363, 4914517,
+2435247, 2075006, 8900783, -1712618, -648003, -6204081, 5470178, 4350265, 1742146, 1309428,
+1777043, 584116, 3343095, 5168457, 4323959, 2089502, 2884071, -1080184, 7603166, 2343979,
+-78383, -4851703, 3883724, -1430224, 10936060, 5295158, 2933463, -4505421, 310848, -16558710,
+-8857296, 3651259, -2989834, 7030325, 7065221, 10445360, 4537096, 4361540, 2842732, -12047383,
+-2410551, -1484985, 1445793, -1029182, 4173098, 2900177, -4353486, -3592203, 3524558, 6136972,
+7920457, 6646999, 8954470, -4560182, -4283156, -6105296, 7013145, -3716221, 5876052, -1294933,
+146566, -5759015, -3051574, -3282966, 5406290, 6140193, 1539746, 6118718, 9212168, -3482145,
+2693481, 10225243, -4663261, 3273839, 3985730, 303332, 8232379, 9774272, 8048232, 17002164,
+3731253, -2606508, -2612951, -3147674, 390305, 2767570, 5790153, -1242856, -1069447, -2159295,
+-3965866, 1525787, 3130494, 3971771, -10031433, -2018098, 3398930, 6454262, 5666673, -9904731,
+-6034966, 806917, 2451890, 6264210, 4179540, 8259759, -945430, 1797444, 7052337, 10355703,
+5839545, -11111617, 118648, -11821897, -8429410, -4971962, -931471, -7146826, 8814884, 3439732,
+5232344, -14701673, -1029182, 9978820, 4993973, -4139275, -6244346, -3578782, 3821447, -11145440,
+-655519, -7053410, 11230266, -1185411, -3287261, 1506460, -412317, -1598265, 1963874, -2622078,
+5188858, 4071629, 7462506, -171799, 344671, 11972758, -3703336, 8171712, -1306744, -906238,
+20323248, 2909840, -2243047, -4089346, -15823733, 2207613, -16218333, -2135673, 16944720, -4175245,
+-3371549, -11147051, -3528316, 1149978, -6410239, 4211753, -664646, -7789997, 9174587, 4263292,
+2990908, 3625489, -6378564, 8286066, -10895795, 4661114, 4412542, 2303713, -1063541, -1924145,
+-2460480, 1271847, 6999186, -13029320, 6131066, -4367445, -6409165, -6097243, 5446556, 6853694,
+4149475, 11623792, 8675297, 2032593, 3752728, -8485245, 2152852, 4326643, 9102109, 2037962,
+-3833258, 3537979, 4444218, -7577396, 1516660, -7783555, 6698539, 6114960, 7795903, -6894497,
+4776541, 8296803, -3243237, 2383170, 10928007, -537, -6189048, -4890357, 2711198, -1433982,
+-6299107, -2425583, 476741, 1856500, 3961571, -4285304, 7723962, 4778151, -1343788, 9190156,
+-760209, 3654480, 12007118, -12137041, 23222888, -10278930, 3469797, 7150047, -2075543, -1043140,
+3202435, 15724949, -554588, -1945620, -187905, -3500398, 7787850, 8609262, -2480344, 3745212,
+3191161, 2850785, 5303748, 6707665, 586263, 7187091, 1408212, -6274411, 7902740, 10320270,
+6445672, -10333154, 20680268, -6099391, 4137664, -14644765, 6210523, -12906377, 10504953, 1401770,
+-2606508, -7144678, 9926206, 1650341, 6407018, 6747394, 3488050, -10785200, 5902359, -6378564,
+-1046898, 5408438, 5652177, 1656784, -1905355, -10784663, 1715303, 10686416, 1297080, 7062000,
+7587060, -11264089, 6549825, -5524402, -5746130, 9021579, 9635759, 5371394, 5452998, 1906966,
+5217849, -11602854, -5305359, -3415573, 392453, 13228499, 6178311, 5500243, -925565, 6056441,
+-278636, 14529337, 5201743, 5775121, 2143189, -363462, -20884816, 8156680, 4905927, -1513439,
+-1505386, -15167140, 123480, -5550172, 3721589, 13965623, -2243047, -7377143, 15927886, -325881,
+9169755, -4878546, 520228, -9349070, -260382, -3968013, 3854733, -533113, 12984760, -11951820,
+1319092, 4398047, 5701032, -20455856, 12930536, 3205656, -14514842, -9602473, 7450695, 17258790,
+-6552510, -3798899, -12566001, 24897388, 9642202, 975494, 4001836, -14017700, -8894340, -1225139,
+895501, 12528420, 2663954, 9470940, 11266773, -1250372, 534187, 7196218, -2266669, -9329743,
+-8289824, -2925947, 11205033, -7022272, 14224932, -7592429, 20960514, 8388608, 16899086, -5633387,
+2668785, 12554726, -10682121, 5216775, 6105296, 4581120, -6112276, 5990406, 1744831, 967978,
+6207302, 11535745, 10935524, -12593918, -2530273, 4063039, -10703059, -8615168, -2718714, -23989540,
+6096169, -12984223, -6590091, -129923, -2374043, 5065914, 14618458, 6244346, 6559489, -10711112,
+-122407, -15686831, -23258858, 12936441, -9334575, 10648298, 3637837, 5272609, 6400038, -15550466,
+-28476170, 2771328, 4383551, 16404628, -15717433, -17257716, 15323370, -5798206, 7096897, -3068754,
+3826816, 2623151, 4212826, -7734163, 4080756, -918049, -2259690, 10202695, 3958886, -1202054,
+-12715788, -1535451, -135291, -2151779, -381715, -6773701, -16941498, -7399155, 12847321, -5133023,
+6455336, -9498857, 7452842, 3959423, 108448, -4659503, -21069498, 12025908, 11671037, 14951318,
+-10044855, -4104378, 20217484, 17918066, 8394514, 4058207, 11525008, 4421132, 10376641, -5175436,
+9039296, -16570521, -850404, 4982699, -4173098, 20337744, 985695, 11257109, -6345278, -10478110,
+23350664, -91268, 9360881, -2774012, 486942, -26982596, -2013803, 6190122, -12296491, -15942382,
+-5006322, -4123706, -26949310, -25283398, -7031399, -376883, 18107046, 14681809, 14465450, -6291054,
+-2969970, -4235375, 15472083, 6419903, -7293928, -1651952, -5928666, 11142219, 8422968, -7139310,
+-9957345, -9040906, -18161806, 6911140, -104153, 78920, 3236258, -3037079, 6059125, 24314346,
+-14678588, 7063611, 857920, -9900973, -6077379, -11673184, 3660386, -5376226, -6316287, 12461848,
+931471, -4587562, 12275017, -2058900, -6356552, 4214437, 8769249, -5450314, 9467719, 17960480,
+16881368, -12206297, -841277, 4205847, 9211631, -15335181, -3847754, -4295504, 18246632, 8018167,
+-2723009, -11498164, -13452374, -11263015, 16436303, 14363981, -27714888, -22236120, -17710834, -11469710,
+3626026, -9863929, 6387153, 3762928, 2738579, 21510270, 16865800, 10372883, 1294396, -14557792,
+-7795903, -2478196, 5464809, 8811125, -13049721, 3045669, 340376, -11006927, -5569499, 8485245,
+-6899865, 6718940, 2461016, 7952132, -10606959, -197032, -23049478, 3230889, -29030758, 11578695,
+10950019, -11155104, 12414603, 15480673, -214748, 4360466, -19043348, 10761577, 341987, -7649337,
+9169218, -2365990, -666794, -177704, 369367, 19182934, -3055332, 7516, 22576496, -178778,
+-11846594, -30983894, -26586384, 28491740, 16576963, 7121056, 5978595, -11728482, -25178708, -11585674,
+2468533, -8994198, 17301202, -777389, 959925, 20446728, -5804649, -6001143, -6360310, -12433393,
+-23629300, -16863652, 46551540, -23444078, -13401372, 14220100, -27962922, -17790828, 13520020, 24373402,
+1933272, -6425271, 2197950, 5615133, -20404316, -15137612, -10683194, -18685256, -2013803, 17059074,
+-1625645, 3251827, 8187819, 5360656, -15150497, -7468412, -12592307, -6849399, 15268072, -5092758,
+-2105071, -2452426, 9089761, 9167071, 27846420, 4204773, 20380156, -1509144, 6588480, -11620571,
+-8975408, 7168838, -14871861, -16311749, 59056, 4772783, -8707509, 6308770, -10127533, 2670933,
+-25856776, 13884019, 7386270, 11312407, 889595, -10559177, -21810918, -7821673, -2496450, 17264694,
+-13969381, -8128763, 4221953, 39807904, -11776263, 40480068, -25726318, 9647033, -10020696, 17657684,
+-7965554, 30688616, -30010010, 44045428, -5251135, 8930848, 17940078, -32943472, 27866284, -35154308,
+22024056, -57171920, 28965260, -29384018, 23427436, -38238632, 29894046, 1304060, 13910325, -17215302,
+-15572478, 18901078, 32309428, -26106422, 40856952, -1967632, 315143, -1165010, 7347079, -11660299,
+-8562017, -17661442, -3754338, 989453, 313533, 319975, 16189342, 3146064, 17709224, 17517560,
+-10644540, 6716792, 36637144, 12329777, 7996692, 5894843, -31419296, 2042257, -4966593, -3526168,
+-28843926, -5695127, 16761110, 5137318, 5619428, 8807367, 21151640, 5935108, -6487548, -1735167,
+-1830730, 8336532, -14409078, -8418673, 21692806, 13930726, 10004053, 17241610, 12246026, -6938520,
+-3930432, -24743306, -11360188, 10583336, 7657390, 19313394, -14171781, -6491306, -5408438, 14230837,
+7412577, 12763032, 4247723, -9724343, -10340671, 31477278, -11025181, -30480310, 5204964, 21867290,
+12645994, -898722, -6175626, 1525250, -869194, -686658, 8924405, -11874511, -63551020, 18248242,
+-7231651, -3557307, 16325171, -10371809, 17491254, -1793149, -27153856, -4604205, 3348464, 10199474,
+13072807, 3315715, -19008452, 19898046, -6945499, -1379221, -11383811, -5066451, 11184632, -1730872,
+10074920, 16053514, -2865280, -19969988, 5294084, 22572738, -19923280, 7913477, 18118856, -2878165,
+-12862353, -25343528, -16392816, 18279918, 47162500, -14038101, -17536352, 52315388, -2461553, -7338489,
+38486128, 21989696, 19638202, 15189689, 7208029, -10925323, 20115480, 17835388, 13320304, 5724655,
+-33372970, 21585432, 20231980, -36401996, -19859392, -13089987, -8951249, -10059887, 41043244, 19795504,
+-21364778, 21174188, -6985765, -21337398, 10761577, 10700374, -7781407, -9145596, -31597000, 3553549,
+7638063, 24029268, 14090714, 1838246, -17193828, -69881800, 21294448, 39254928, -24582246, -5161477,
+-19182934, 40428528, 26991722, 17049946, -3495030, -14191109, 2615098, 16305843, 7275138, -7044283,
+-1904281, 22341884, -1857573, -8198019, -30341260, -14143327, 24778204, 14726369, -16419123, 12818330,
+-12068858, -3577171, 6986301, 7192997, -7576859, 4686883, -26910118, 7617125, 34720516, -4388383,
+-7703561, -34718904, -21800718, 17037062, -28408524, -14790794, 5291400, 7139847, -9577240, 22992570,
+20390894, -22032646, 7029788, 12539694, 34367792, 32905892, -6653978, 10888279, -2480881, 37607272,
+14510547, 15367393, 33539400, -15637439, -25274808, -11665131, -31983010, 25219512, 9215389, 12440373,
+3611531, 42681776, -31345208, -6285148, 14442901, -9677635, 15910706, -474057, -2389076, 10248329,
+-28508920, 17644262, 29002840, 25465934, 26246008, 33292976, -16879222, 26502632, -47598976, -20095616,
+20100984, 5757404, 37395744, 17697950, 32137092, -11996917, 5624260, -25252798, 19615116, 31023622,
+28675350, 3990025, 20817706, -45906220, -29042032, 30503932, 10213969, -28172838, -13468481, 4798552,
+44989784, 14543296, -15830176, -21035676, 6203544, -5323612, 28433220, 29866128, -972810, -3535832,
+7606387, -7029251, 36346696, 10996190, -6177237, 8028368, -14345728, -8630200, -75011600, -25123948,
+15878494, -10982231, -9339943, 700617, -11640435, -12842489, 37680820, 24740622, -15359340, 33345052,
+69337416, 14893336, 50244676, 7795903, 12488154, 36211944, 26062398, -17352204, -18072686, -35865660,
+-19745576, -448287, -32948304, 16356309, 462783, -32020054, -18836116, -18626200, 1216013, 32364190,
+-1497333, 27800786, -14949171, 8833137, -55649892, 18138184, -6966974, 31508416, -5608691, -32337346,
+36251136, -10937671, 6976638, 21731460, 16368657, 33721936, -3182571, 6949257, -4396973, 38211252,
+-6060736, 9042517, 26678726, -26697516, 26306674, -4973572, 16674137, 26312580, -4953171, 7732552,
+5507759, 4860829, -6276021, 13119514, 11828877, -1764695, -12681428, -94489, -15039902, -2831457,
+-1741609, 16052977, -5539434, -23541790, -15881715, 30254824, 29226178, -23631446, -20748988, 35794796,
+40145596, -12186433, -2549600, 30850750, 2417530, 17326434, 21634288, -44014288, -12637404, -124017,
+46803868, 7328288, -1997697, -41554884, 10125385, 20964272, 12753905, 5124433, 13248900, 8426726,
+7350300, 61419108, -822486, 8718247, 33249490, 32693828, -56260852, -4246112, -47610248, -44300976,
+10797011, 8791798, 7843684, 600759, 41590316, 23246510, 53629648, 58236000, -6547141, -29553670,
+6107444, -8525510, -5371931, 12029667, 5738613, -5477157, -26993870, -30421790, 32214940, 13972602,
+-3484829, 4008815, 5426691, 1986959, 6162205, -4048007, -7388955, -44851268, 1298691, 23991688,
+-6983617, -34940096, -10640245, 26439282, -50921668, -19010062, 33027224, 18265422, 39390756, -2601677,
+3463354, -37348500, -35451196, -47167332, 39076688, 52550000, -70683888, -37448892, -2872260, 34379604,
+-27426050, -6659347, 66566088, 24510842, 17712446, 41104984, 32869922, 45201308, -15953119, 44762688,
+-5862631, -39945880, -53173844, -15823196, 22535156, -46552076, -6692096, 5758478, -7087233, -19094350,
+11799349, -41660644, 31770410, -2887292, 9583683, 12192875, 11785390, 220654, -14175003, 22494892,
+5484673, 21709986, -4908611, -46568720, -4420595, 13238700, -15466714, -17146046, -10613938, -15812996,
+18689550, -5008469, -16714939, -1083942, 17365090, -23781770, 16333761, -8340290, 8582418, -23420994,
+-6033356, 9310415, -2231773, -2269353, 2638721, 12955769, -2555506, -2223719, -16517907, 8011725,
+-4716411, 2527588, 4780299, 1632625, 11803644, -17728552, -13756780, 18440978, 15674483, -22218940,
+10290742, -17949206, 20375324, -17325362, 7487739, 5349382, -14988362, 32530082, 2814277, -36083092,
+16295643, 4485557, -28355910, 15848429, -10693932, 16936130, -24713242, 12760885, -26203596, 12242804,
+17681306, -15879568, 8820252, -16553878, -111132, 2373506, 1103270, 7594039, -22601192, -124107912,
+-213919440, -79428440, -168589808, -166905648, 70738112, 4860829, 103264432, 249003952, 223143952, 180752096,
+223514928, 132008504, 19923816, 33092186, -45854680, -187386736, -185332672, -141735536, -180371440, -127469264,
+-36002028, -89917288, -119440360, -58614492, -25385942, -67730560, -38420628, -12904766, -39664560, -61377232,
+-1182190, 31345746, -26019448, 48134772, 77632072, -9063455, 6043019, 109237128, 48708152, -10100152,
+102061848, 81604912, -31990528, 33381560, 95217280, -11922292, -1014686, 139039360, 70638792, 24177444,
+171037952, 189527248, 89452896, 179970400, 226323840, 54425824, 25365004, 89392232, -42613056, -117115168,
+-68761352, -149234544, -261180176, -259831568, -292604832, -389377440, -388820704, -370920896, -374593632, -330299616,
+-272114080, -205460496, -105280920, 922881, 173103824, 205873344, 138525040, 0, 0, 0,
+0, 0, 0, },
},
{
{
7273527,
--3756486, 1766305, -492311, 683437, -1034013, 3728032, 5650567, -2708514, 1975148, -641024,
-1970316, -2550674, -298500, 1482838, -3415036, -3418257, 1109175, 1793686, -4001836, 1832877,
--2221035, -3002182, 195958, -1574106, -2990371, -3769371, -674310, 3165391, -683437, 1203665,
-2091649, 1171452, 1504312, 1778117, 1533303, 3668439, -5411122, 1407676, -3522947, 1968706,
-3813931, 230318, -816044, -3289408, 1298691, -556198, 578210, 1159641, 636192, -1294933,
--2845416, -2114735, -3673808, 779000, 3758, 449898, 1728724, 2381559, 707059, 4234301,
-242129, -2643016, 2880849, -812823, -537408, -900869, -3913252, 3384971, 1664300, 2967823,
--3499325, -5673115, -1708323, 2509335, 1876364, -2925947, -8451959, 966368, 5605469, 1938641,
-3659849, -5272073, -2886218, 274878, -920734, 1458678, 4436701, -10589779, -60130, 3535295,
-2110977, 3263638, -3067144, -4250407, 4653060, -30602, 1300301, 2945811, 3846680, 1469953,
-802622, 3512210, -513249, -1050120, -2992519, 1669132, -848793, -424128, -1562294, 2052458,
-5042829, 89121, -1068373, 2450279, -3256122, -4765803, -2700461, -903554, -3168612, 363998,
--760209, 2117419, -1998234, 653909, -3972308, -284005, -3280818, -55298, -1537061, -1171452,
-1578937, -1753420, -264141, 2775623, -1482301, 3294777, 3745748, 412317, 5082557, -2513630,
--305480, 2637110, -1048509, 1842541, 2181844, 1458141, -2949569, 1276679, 974958, 1101659,
--205622, -2037962, 13946833, -4137127, 1202591, -3228742, -409633, -1437740, 1464584, 942745,
-4673998, 1334124, 682363, 1721208, -1335735, -9896678, -9494562, -3064459, 1076426, 2705293,
--2538863, 382252, -3206730, -1231045, -25233, 1503775, -4318053, -4653597, -1516124, -435939,
-2242510, 651224, -1203665, -3400004, 378494, -1939178, -107911, 2128693, -3503620, 1437203,
-2721936, -2437394, -6271189, -1728724, 1980517, -508417, 1560147, -443992, 1313186, -430034,
-1458141, 182536, -5903970, 963146, 2050310, -1043677, 1293859, 114354, -614180, -1272921,
--244813, -3484292, -616865, -1071594, -4545149, -869731, -499290, 3567507, -4092030, 5967857,
-6703907, 5436355, -2929705, -1345399, -1864553, 2485712, -1716913, -1867774, 717796, -13207024,
-12885, -1949915, 1016834, -355409, -6793028, -1212255, -1358820, 2261300, 3443490, -4502737,
-3778498, -1061931, 2631741, 2663954, -1293859, 5658083, 428960, 366146, -870805, 1085553,
--1284732, 1148904, -1454383, 336618, -3527779, 522375, 4083977, 137439, 1774895, 4345433,
--4037806, -4210142, 1915019, -1828046, 3462281, -3245922, -925565, -6951942, -5379984, -4586488,
-2181844, 785442, 2639258, -2405182, -1724966, -351114, 4583267, -4744865, 2164127, 1063004,
-498753, 2714419, -1585380, -2042257, -2825552, 2046015, 1121523, -4126927, -4648765, -5345087,
-16106, -934155, 2018098, 30065, -847182, 826781, 983548, 2827699, -6438693, 1174137,
-4095251, 6026913, 6130529, 5196911, -448287, -3111704, -7060926, 5536750, -3408057, 6462315,
-8199630, 5380521, 631897, 2935610, 1224603, 6846715, -2629057, -2643016, 2474975, -216359,
-3231426, 5437966, -6022618, 2865280, 6775848, 3578245, 286152, 675384, 1459215, -2085744,
-683437, -1927904, -2978023, -233539, 6469295, -1415192, 3401077, -1246614, -2764885, 7616588,
--5246303, 5363878, 5790690, 1756105, 3948686, -3672734, -459025, -985695, -640487, 3981972,
-1734093, -3983045, 1549410, 336618, 1684164, -219580, 2506114, 2473364, 6518687, -5149666,
-3689914, 3132642, 213138, 3138011, 1461900, 4420595, 4139812, 3016141, -1072131, 3767223,
-5838471, 877247, 3813931, -1044214, 6818798, 7180649, 7645579, -710817, -3600793, 2819109,
-532576, 3830037, 3271155, 10885058, -999654, -3437585, 10386305, -4145717, 4692252, -2559264,
--9855339, 1684164, -2780455, 213138, 11964168, -4717485, -5519033, 319975, 6365679, -10200547,
--3588982, 7362648, -2492155, 2241436, 3738232, -2903935, 3435974, -2338073, -3269007, 442382,
--750546, -1502702, -1039919, 3895535, -3098819, 7850127, 2326262, -179315, -4383551, -1774358,
-5328981, -6151467, 1570884, 1546188, -524523, -8478265, 5869073, 946503, 1765232, 162672,
--658741, 3542811, -1981591, 5016522, 3714610, -2875481, -9224516, 3607236, 3178813, -1034550,
--2165201, 1497333, 6933688, 5460514, -19864, 2761127, -5021354, 3053722, -232465, -3235184,
-3341485, 3541738, -2538326, 3289945, 1920387, -3957276, -533650, 1670205, -1899449, 6131066,
-4050154, 3677566, 10673531, 1795833, -2146410, -12639552, 4481799, 7874286, 4878009, 3355980,
--669478, 4233227, 14674293, -1272921, 7013682, 1105417, 4114042, 1867237, 693637, 3323231,
--759136, -5612986, -1268626, -4048544, -745177, -5901285, 2733210, 670015, 7903277, 1952063,
--3044058, 2962454, -628139, -1328756, 5221070, 2222646, 4012036, 2600066, -1634235, -7818988,
-950798, 5372467, 105764, -1066763, 2614025, -3864397, -1432909, -7216082, -9176734, 5545877,
-5996848, 4907000, -909459, -994822, 527744, 437013, 3300146, 124554, 3577171, 3418794,
-383863, 3524021, -2186138, 1449552, -911070, 2405719, 2604898, 9770514, 561567, 8164196,
--2212445, -6795175, -85362, -175557, -2225867, 6908992, 360777, 4758287, -11557220, -345208,
-11887396, 16284905, -6685654, 1843615, 2659122, -5639829, -3208878, 637803, -4617090, -4920959,
-11483669, 1570884, -7438347, -1234266, -4808216, -2848100, 7530152, -2378875, -3146064, 6656663,
-4294968, 6715182, -2730526, 1314260, 6786585, 197569, -3807489, 1708323, -396211, 708133,
--8199630, -5849746, 2706903, -741956, 2206540, -7883950, 3846680, 2651606, 2036888, -13807246,
--7731478, -3658239, -1449552, 1711545, -5690295, -4227322, 1611150, 10172093, 7166690, 3409667,
--1546725, -1457605, -3630858, 2674691, -813359, -8092256, -5553930, -1120450, 243203, 10486700,
-6437619, -5914170, -5652177, 7000260, 1930051, -5199595, 485331, 6036040, 3034395, -711354,
--8351564, 8531953, -2938831, 4633733, 2043868, 2436320, -2947421, 5022428, -5953362, 7236483,
--442919, -1695438, 3940633, -6889128, 2625299, 4075924, 978716, 2913062, 3551401, -1706713,
-8036421, -3471944, -13166222, -7736847, -1554778, 743029, -2627446, -5490579, -6041409, -4015795,
-13339632, -3418794, -827318, 2124935, -2517925, 1800128, 10987063, -4947803, 5330055, -3120831,
--6706592, 6448357, 4705137, 3110093, 9882720, 469225, 4779762, -164819, 1391033, -114354,
--2926483, 2397129, -482110, 7271380, 1660005, -4533875, -966905, -1095754, -44560, -7550016,
-3459596, -7425999, 2203318, 10754598, -6451041, -12674448, 3398393, 2181844, 6387153, -2234994,
-343597, 6541235, -3223910, 3485903, 5140002, 1837172, -1909113, 6714645, 2476049, 8625905,
--10002442, 24328842, -5224828, 11145977, 1373316, 4883378, 3604015, 335007, -13074954, 11825656,
--16393353, 5823976, 4347044, 15496779, -6744710, 7216082, -10328323, 7377143, -3135326, -11034845,
--5193689, 3135326, 3227668, 4629975, 2413772, 6470905, 4217121, 9584756, -2568927, -7019051,
--6487548, 3091303, 158377, -3222299, 6338835, 3146064, -1038308, 4129611, 7766912, -204548,
-2145873, -630286, 3913252, 2710124, -9529459, -3696356, -12552042, -2396055, -2035815, 242129,
-6190659, 5967857, 883153, -2947958, -18790, -1341104, -2990908, 2275796, 17847200, 2201171,
--433792, 6285685, -510564, 7129646, -2919504, 725313, -4419522, 18572512, 3984656, -6689949,
--8734890, -4947803, 321586, 297963, -11883101, 1261110, 2308008, 1001801, 12365748, 935229,
-10252624, 6194954, 10036265, 3306588, -10555956, 10041097, -6845641, 17463338, -11588896, -3444027,
--15955267, -3390877, -1940252, 6915434, -7596724, 10188199, 7946763, -5020280, 246424, 11676405,
-16128139, -5281199, 33823, -2174327, 4760435, 64425, -2361695, 2384244, 4057134, -7858180,
-5433671, 1133335, 6270116, 2605972, 479426, -13400835, -2763275, 15593953, -2497524, 5238787,
-11259794, 3476776, -1650878, -4132296, -6273337, -3256122, -284005, -5079873, -3962644, 9064528,
-7384660, 2656437, 12821551, 9241696, -4025995, -1353452, 674310, 3233574, -5574868, -11038066,
-12935905, 6337224, -4597763, 13157632, 11949136, 15302432, 4565014, 2197950, -8018704, 179315,
--10734197, -6633040, -7694434, -16207059, 13504451, 589484, 2282775, -2279554, 904628, -1977833,
--21032992, 2194728, -440771, -3954591, -1796907, -10438381, 11476689, 11812234, 13190381, -22045530,
-6779069, 4291209, 270046, 21300890, 8551817, -10938745, -1545115, 21016886, 2201708, 3549254,
-4018479, -6495065, 3217468, 4121558, 12851079, 6428493, -10453414, -16882980, 5902896, 3639985,
--8762807, -1885491, 392990, -10536629, 726923, 12109660, 4847408, 6609955, 9636833, 15991774,
-1037772, 14006425, 2309082, -6201933, -1412507, -9055939, -5089000, 3018288, 4230543, 3126199,
-6550899, -10958609, -5407364, 17637284, -2190433, -4821101, -11190000, 7737384, 6906845, 1590212,
-2185065, -1502165, 3797825, -9650792, 11643656, -8699993, -9689446, -9177271, -6898255, 13562970,
-244276, -5158256, 19280646, 22716082, -6007049, 6292664, -1830730, -6801081, 1149978, -15418933,
--9638980, -773631, -3271155, 30560302, -13990856, 3844533, -19682224, -2930242, 11669963, -5054103,
--11066520, -11421392, -4394826, 4652524, 5811091, -787590, -1229971, -12797929, 2749853, 8946954,
-4243428, 5497022, 1349694, 2024540, -7762080, -2406792, 4693326, 1887101, -337155, 631360,
--9342091, 4092567, -9829033, -1438814, -620623, 2870649, -10908680, -950798, 4749160, 7701950,
--12415677, -6115497, 20831666, -7984881, -17258790, 14319421, -14161044, -4061429, -6582575, -2181307,
--11062762, -6969658, -2830384, -10224707, -15757161, 24675660, 12653511, 11249056, 6563784, -8970039,
--4664872, -5830955, 5667210, -10809359, 6633040, -5323075, 1385664, -1897839, 31182536, -15318001,
-13023415, -29631516, 6951942, -19169512, -4370666, 9259949, -1863479, 5609228, 9699647, 7593502,
--13488345, 8427800, 954557, 5994164, -3670050, 8672076, 7897371, -2864206, 874563, 4853850,
-5500243, -10124849, -4168266, -14349486, -2674154, 10948945, -698469, -6536940, 196495, 3481071,
--204011, -5796059, -10627897, 1535988, -7533373, 5296232, -7184944, 21945136, -3215857, -13328357,
--15103252, 2257542, -8792335, 6288906, -16829292, -13212930, -17091286, 2767570, -14620606, -4129074,
--20503100, 12921946, 1683627, 8388071, 4576825, -21816286, 424665, -2813741, -9007083, -12636331,
--4381941, -10931229, -13720810, -7948374, 4642860, 7169374, 10893111, -8118025, 639413, 3856881,
--18398566, 6375342, -12400107, -26419954, -7409356, 30431454, 26906360, 15344308, -12572443, 13595182,
-20161650, -12716861, 17820894, -13700409, 16451335, 4314832, -879395, 5857799, -164283, 9071508,
--12655658, -3085934, -5646809, 7082938, -12041478, -10313290, 17170742, -1018981, -3505767, 2267206,
--16486769, 311385, 26564372, 15191836, 2989834, 480499, 5597953, 25896506, 10632192, 1175747,
-4106526, -6131603, -3150896, -5129265, 10595684, -4705674, 6969658, 2292976, 12613782, -14310294,
--650688, 99321, 16643, -3240016, 6771016, 12708808, -3212099, -2109903, 11151346, 2599529,
-846645, 27834072, 3497177, 1800128, -12882754, 6918656, -9851044, 13977434, -15093589, -10667625,
-931471, -10214506, -14322105, -17657148, 4248260, -3559454, 9203041, 972810, 4636417, -21522618,
-21570400, -35108672, 13651017, 14286135, -25199646, -3225521, -21712134, -7633231, -19581292, -9218074,
-20692078, -8071318, -2384244, -15821049, -3753802, 2770791, -23234700, -1567663, 13469017, -28351616,
-162135, -19571092, -11062225, -298500, 1160178, -13181792, -10937671, -11149198, -3923990, -9674414,
--1496259, 4141959, -3649649, 6363531, -14439143, -9255655, 17068200, -9083319, 8786966, -11374684,
-9163313, 8650601, 573915, 1836099, 8428336, -197032, 12428025, 16415365, -4296041, 1875827,
-24245090, 848793, 11891691, -1581085, -11258720, -20664698, 2149094, 13187697, -23307176, -425202,
--14274861, -7559143, -29969208, 11572789, 17420388, -5772973, 7540889, -5548561, 18838264, 21684754,
--3689914, -23689966, -23969138, 29687888, -26732414, 7064148, 1132261, 6497749, 37493992, 42267312,
--2321967, -31483184, 31470300, -34423628, 5013838, 14972256, 3753802, -3425773, -15906948, 18319110,
--7991324, -6132677, -16236050, -9134322, -5042292, -19975356, -11170673, -8709120, -5086315, -2940979,
-14103599, 214748, 12168716, 533650, -5334887, -17349520, -19594178, -4442070, -812286, 248034,
--3084860, -6761889, -8575439, 9896678, 22310208, -11628087, 7550016, -7012608, -8077223, 9571335,
--8951786, -13433047, 31283468, -2780991, 2598455, 2287070, -17967458, -3102577, -4069482, 9752797,
--23187454, -9231495, 23643258, 4777078, -10743324, 14047764, 23935852, -12921409, -17861696, 10030359,
--15307263, 1375463, -28137404, 10049150, 22386980, -1081258, 11114838, 8478802, 2854543, 28176060,
-6862821, 1413581, 13268765, 615254, -51831128, -36516348, 14307073, -15867220, -14953466, -44219372,
--13195750, 8592619, 2973728, -9274982, -24824910, -1020592, 11666742, -1615445, 1068910, 11988864,
-21990232, -20323248, 50825032, -13979045, -17645336, -5954972, -3456375, -537408, -20906290, -318901,
--4133906, 10062572, -7415261, 14558865, -6900402, -13907104, 4835060, 5493263, -12202002, 11888469,
--39669928, -570694, -3637301, 14724759, 18400714, -14616847, 17135308, -7719667, 4562866, -9409200,
--3292629, -6198712, 13642427, -2942053, 18116708, 27904402, -25678536, -8201777, 13183939, -18207976,
-9874667, -20585778, -11074036, -10961293, -11724724, -21158082, -10523207, 7638600, 7087770, 13429826,
-19187766, 12375411, -24283746, 823560, 3765613, 3122441, 3843459, 12010339, -9385040, 5934571,
--11864847, -36053568, 25066502, -45804216, 30103962, -5673652, -21222508, -18194018, -20287814, -14026826,
--11315091, -186294, 21679384, -2996277, -20596516, 19349364, 27673012, -45639396, -13247827, 2003065,
--5057324, -8038568, -3620121, -7260106, -9321690, -14016089, 15093589, -6855842, -13805636, -22238804,
--22521198, 19705310, 3920232, -4830765, -3798362, -1004486, -6169721, -6663642, 3026341, -19641422,
-8586713, 20217484, 14244259, 8894340, 18638548, 22593138, -15187541, 4060892, -21165598, 20134270,
--13760001, -4406637, -1840930, -31678606, 8232916, 24415816, 2534568, -11297375, -10266046, 32243930,
--15159087, -15127949, 7441031, -34559456, -5809480, -17480516, -1136019, -33659120, 11967389, 5244692,
-11779485, -53813792, -47462072, 7801808, -16821776, -9199820, 5233955, 41652056, -52712132, 58042188,
-18653580, 252329, 6871948, -38226284, 10620380, 21065204, -4784594, 49703508, -11225434, 22678502,
--14391362, 54520316, 517544, -5000416, -17615272, -5282273, 10130754, -3238942, 23780160, 18556944,
--3030636, 3457449, -18045842, 9905268, 23685670, 23368918, -20580410, 11766063, -1897839, 24821152,
--3434363, 16856672, -10974715, -8741869, -28162638, 4150549, -16756278, -26947162, 44121124, -16182363,
--639413, -5747203, -6828461, 7700877, 6532109, 16724066, -3688303, 24574730, 5371394, 42855184,
-18945638, 47259672, 41634340, -1422171, 29073170, 21990770, -3086471, 25551834, 34964792, -10658498,
--27287000, 20685100, 15526307, 28709708, 17276506, 1046898, 4046933, -29217052, 1421634, -4750234,
--7139847, 51606716, 2075543, 18502182, 17965312, -37463924, 74563320, -9068823, -7329899, -3758097,
-54459112, -31962072, 27726698, -35070020, 34974992, 7898982, -5850819, 1875827, 20797842, -7576859,
-19430432, -7632694, 599685, 38704096, 12299713, -8579734, 588411, 10479183, 8105677, -35432944,
-10441065, -12195560, -2638721, -18124762, 19274202, 18836116, 3398930, 9545565, 32063542, -9261560,
--49435612, 13152800, 33364380, -11501922, -32327682, 9956808, 24032490, 9170829, 566399, -38176892,
--18373334, -22090090, 22431540, 10146323, 23089208, -46190764, 3554622, -7483981, -51921324, -12324409,
-8244190, 25017648, 33578592, -16326781, 62272732, 13238700, 1688459, -11528766, -24222542, -16088411,
-12397960, -27533962, 59062244, -17681306, 3477850, 35187592, -21274584, 21521008, -20163260, -12465069,
-51504176, -17483738, -43212204, 24842090, 15902116, 24866250, -9806484, -6869800, 10059887, 244813,
-2877091, 1117228, 4896263, 1379221, -6824703, 32221918, -7496866, -21807696, 9277666, -310311,
--19493246, 7052873, 4399121, 13514115, -9070434, -14365055, 15672873, -12353400, -1886564, -3409130,
-12801150, -21974664, 7445326, -13457743, 11127187, -19262392, 6772090, -6138045, 3138547, 43698608,
--29986924, 6155762, 9210020, -26226680, 9398999, 12925167, -20182052, -3522410, -7959112, 36575940,
-2647311, -40878960, 24484534, -32877974, 5694053, 18148384, -16556025, 20693152, -24518894, -19001472,
-26866632, -3745748, 11148661, -39985608, 7205882, 9882720, -2626373, -5202279, -765578, 17835926,
-262530, -53099216, 32746978, -1871532, 12699145, -12367358, -15867757, 55006720, 2809982, 18293876,
--9295920, -109274704, -229992816, -93104152, -173680432, -211110528, 71850504, -3059091, 73774120, 286434048,
-249981056, 141203488, 274163328, 151832992, 15359877, 93270048, 56729000, -106656920, -75816912, -23904178,
--117736328, -142184352, -48491256, -73019272, -112675248, -29928406, -6787122, -143178096, -98934032, -16718160,
--87383792, -112985560, -33870112, -56360708, -122130080, -24956444, 11028402, -69390032, -52749716, 49488760,
--19320910, -74051144, 14484777, 46786152, -36357972, 28368258, 105465608, -16425029, -28170690, 104006392,
-56266220, -26467200, 174636592, 236275808, 148412064, 249600416, 374640864, 287713952, 275608064, 400419264,
-349428352, 257099424, 317266560, 287695168, 187473712, 165366448, 95411624, -21500606, -111418968, -210987584,
--297894624, -359043168, -444289664, -476471872, -485214272, -545162880, -419987136, -176518320, -128365832, 0,
-0, 0, 0, },
+-3756486, 1766305, -492311, 683437, -1034013, 3728032, 5650567, -2708514, 1975148, -641024,
+1970316, -2550674, -298500, 1482838, -3415036, -3418257, 1109175, 1793686, -4001836, 1832877,
+-2221035, -3002182, 195958, -1574106, -2990371, -3769371, -674310, 3165391, -683437, 1203665,
+2091649, 1171452, 1504312, 1778117, 1533303, 3668439, -5411122, 1407676, -3522947, 1968706,
+3813931, 230318, -816044, -3289408, 1298691, -556198, 578210, 1159641, 636192, -1294933,
+-2845416, -2114735, -3673808, 779000, 3758, 449898, 1728724, 2381559, 707059, 4234301,
+242129, -2643016, 2880849, -812823, -537408, -900869, -3913252, 3384971, 1664300, 2967823,
+-3499325, -5673115, -1708323, 2509335, 1876364, -2925947, -8451959, 966368, 5605469, 1938641,
+3659849, -5272073, -2886218, 274878, -920734, 1458678, 4436701, -10589779, -60130, 3535295,
+2110977, 3263638, -3067144, -4250407, 4653060, -30602, 1300301, 2945811, 3846680, 1469953,
+802622, 3512210, -513249, -1050120, -2992519, 1669132, -848793, -424128, -1562294, 2052458,
+5042829, 89121, -1068373, 2450279, -3256122, -4765803, -2700461, -903554, -3168612, 363998,
+-760209, 2117419, -1998234, 653909, -3972308, -284005, -3280818, -55298, -1537061, -1171452,
+1578937, -1753420, -264141, 2775623, -1482301, 3294777, 3745748, 412317, 5082557, -2513630,
+-305480, 2637110, -1048509, 1842541, 2181844, 1458141, -2949569, 1276679, 974958, 1101659,
+-205622, -2037962, 13946833, -4137127, 1202591, -3228742, -409633, -1437740, 1464584, 942745,
+4673998, 1334124, 682363, 1721208, -1335735, -9896678, -9494562, -3064459, 1076426, 2705293,
+-2538863, 382252, -3206730, -1231045, -25233, 1503775, -4318053, -4653597, -1516124, -435939,
+2242510, 651224, -1203665, -3400004, 378494, -1939178, -107911, 2128693, -3503620, 1437203,
+2721936, -2437394, -6271189, -1728724, 1980517, -508417, 1560147, -443992, 1313186, -430034,
+1458141, 182536, -5903970, 963146, 2050310, -1043677, 1293859, 114354, -614180, -1272921,
+-244813, -3484292, -616865, -1071594, -4545149, -869731, -499290, 3567507, -4092030, 5967857,
+6703907, 5436355, -2929705, -1345399, -1864553, 2485712, -1716913, -1867774, 717796, -13207024,
+12885, -1949915, 1016834, -355409, -6793028, -1212255, -1358820, 2261300, 3443490, -4502737,
+3778498, -1061931, 2631741, 2663954, -1293859, 5658083, 428960, 366146, -870805, 1085553,
+-1284732, 1148904, -1454383, 336618, -3527779, 522375, 4083977, 137439, 1774895, 4345433,
+-4037806, -4210142, 1915019, -1828046, 3462281, -3245922, -925565, -6951942, -5379984, -4586488,
+2181844, 785442, 2639258, -2405182, -1724966, -351114, 4583267, -4744865, 2164127, 1063004,
+498753, 2714419, -1585380, -2042257, -2825552, 2046015, 1121523, -4126927, -4648765, -5345087,
+16106, -934155, 2018098, 30065, -847182, 826781, 983548, 2827699, -6438693, 1174137,
+4095251, 6026913, 6130529, 5196911, -448287, -3111704, -7060926, 5536750, -3408057, 6462315,
+8199630, 5380521, 631897, 2935610, 1224603, 6846715, -2629057, -2643016, 2474975, -216359,
+3231426, 5437966, -6022618, 2865280, 6775848, 3578245, 286152, 675384, 1459215, -2085744,
+683437, -1927904, -2978023, -233539, 6469295, -1415192, 3401077, -1246614, -2764885, 7616588,
+-5246303, 5363878, 5790690, 1756105, 3948686, -3672734, -459025, -985695, -640487, 3981972,
+1734093, -3983045, 1549410, 336618, 1684164, -219580, 2506114, 2473364, 6518687, -5149666,
+3689914, 3132642, 213138, 3138011, 1461900, 4420595, 4139812, 3016141, -1072131, 3767223,
+5838471, 877247, 3813931, -1044214, 6818798, 7180649, 7645579, -710817, -3600793, 2819109,
+532576, 3830037, 3271155, 10885058, -999654, -3437585, 10386305, -4145717, 4692252, -2559264,
+-9855339, 1684164, -2780455, 213138, 11964168, -4717485, -5519033, 319975, 6365679, -10200547,
+-3588982, 7362648, -2492155, 2241436, 3738232, -2903935, 3435974, -2338073, -3269007, 442382,
+-750546, -1502702, -1039919, 3895535, -3098819, 7850127, 2326262, -179315, -4383551, -1774358,
+5328981, -6151467, 1570884, 1546188, -524523, -8478265, 5869073, 946503, 1765232, 162672,
+-658741, 3542811, -1981591, 5016522, 3714610, -2875481, -9224516, 3607236, 3178813, -1034550,
+-2165201, 1497333, 6933688, 5460514, -19864, 2761127, -5021354, 3053722, -232465, -3235184,
+3341485, 3541738, -2538326, 3289945, 1920387, -3957276, -533650, 1670205, -1899449, 6131066,
+4050154, 3677566, 10673531, 1795833, -2146410, -12639552, 4481799, 7874286, 4878009, 3355980,
+-669478, 4233227, 14674293, -1272921, 7013682, 1105417, 4114042, 1867237, 693637, 3323231,
+-759136, -5612986, -1268626, -4048544, -745177, -5901285, 2733210, 670015, 7903277, 1952063,
+-3044058, 2962454, -628139, -1328756, 5221070, 2222646, 4012036, 2600066, -1634235, -7818988,
+950798, 5372467, 105764, -1066763, 2614025, -3864397, -1432909, -7216082, -9176734, 5545877,
+5996848, 4907000, -909459, -994822, 527744, 437013, 3300146, 124554, 3577171, 3418794,
+383863, 3524021, -2186138, 1449552, -911070, 2405719, 2604898, 9770514, 561567, 8164196,
+-2212445, -6795175, -85362, -175557, -2225867, 6908992, 360777, 4758287, -11557220, -345208,
+11887396, 16284905, -6685654, 1843615, 2659122, -5639829, -3208878, 637803, -4617090, -4920959,
+11483669, 1570884, -7438347, -1234266, -4808216, -2848100, 7530152, -2378875, -3146064, 6656663,
+4294968, 6715182, -2730526, 1314260, 6786585, 197569, -3807489, 1708323, -396211, 708133,
+-8199630, -5849746, 2706903, -741956, 2206540, -7883950, 3846680, 2651606, 2036888, -13807246,
+-7731478, -3658239, -1449552, 1711545, -5690295, -4227322, 1611150, 10172093, 7166690, 3409667,
+-1546725, -1457605, -3630858, 2674691, -813359, -8092256, -5553930, -1120450, 243203, 10486700,
+6437619, -5914170, -5652177, 7000260, 1930051, -5199595, 485331, 6036040, 3034395, -711354,
+-8351564, 8531953, -2938831, 4633733, 2043868, 2436320, -2947421, 5022428, -5953362, 7236483,
+-442919, -1695438, 3940633, -6889128, 2625299, 4075924, 978716, 2913062, 3551401, -1706713,
+8036421, -3471944, -13166222, -7736847, -1554778, 743029, -2627446, -5490579, -6041409, -4015795,
+13339632, -3418794, -827318, 2124935, -2517925, 1800128, 10987063, -4947803, 5330055, -3120831,
+-6706592, 6448357, 4705137, 3110093, 9882720, 469225, 4779762, -164819, 1391033, -114354,
+-2926483, 2397129, -482110, 7271380, 1660005, -4533875, -966905, -1095754, -44560, -7550016,
+3459596, -7425999, 2203318, 10754598, -6451041, -12674448, 3398393, 2181844, 6387153, -2234994,
+343597, 6541235, -3223910, 3485903, 5140002, 1837172, -1909113, 6714645, 2476049, 8625905,
+-10002442, 24328842, -5224828, 11145977, 1373316, 4883378, 3604015, 335007, -13074954, 11825656,
+-16393353, 5823976, 4347044, 15496779, -6744710, 7216082, -10328323, 7377143, -3135326, -11034845,
+-5193689, 3135326, 3227668, 4629975, 2413772, 6470905, 4217121, 9584756, -2568927, -7019051,
+-6487548, 3091303, 158377, -3222299, 6338835, 3146064, -1038308, 4129611, 7766912, -204548,
+2145873, -630286, 3913252, 2710124, -9529459, -3696356, -12552042, -2396055, -2035815, 242129,
+6190659, 5967857, 883153, -2947958, -18790, -1341104, -2990908, 2275796, 17847200, 2201171,
+-433792, 6285685, -510564, 7129646, -2919504, 725313, -4419522, 18572512, 3984656, -6689949,
+-8734890, -4947803, 321586, 297963, -11883101, 1261110, 2308008, 1001801, 12365748, 935229,
+10252624, 6194954, 10036265, 3306588, -10555956, 10041097, -6845641, 17463338, -11588896, -3444027,
+-15955267, -3390877, -1940252, 6915434, -7596724, 10188199, 7946763, -5020280, 246424, 11676405,
+16128139, -5281199, 33823, -2174327, 4760435, 64425, -2361695, 2384244, 4057134, -7858180,
+5433671, 1133335, 6270116, 2605972, 479426, -13400835, -2763275, 15593953, -2497524, 5238787,
+11259794, 3476776, -1650878, -4132296, -6273337, -3256122, -284005, -5079873, -3962644, 9064528,
+7384660, 2656437, 12821551, 9241696, -4025995, -1353452, 674310, 3233574, -5574868, -11038066,
+12935905, 6337224, -4597763, 13157632, 11949136, 15302432, 4565014, 2197950, -8018704, 179315,
+-10734197, -6633040, -7694434, -16207059, 13504451, 589484, 2282775, -2279554, 904628, -1977833,
+-21032992, 2194728, -440771, -3954591, -1796907, -10438381, 11476689, 11812234, 13190381, -22045530,
+6779069, 4291209, 270046, 21300890, 8551817, -10938745, -1545115, 21016886, 2201708, 3549254,
+4018479, -6495065, 3217468, 4121558, 12851079, 6428493, -10453414, -16882980, 5902896, 3639985,
+-8762807, -1885491, 392990, -10536629, 726923, 12109660, 4847408, 6609955, 9636833, 15991774,
+1037772, 14006425, 2309082, -6201933, -1412507, -9055939, -5089000, 3018288, 4230543, 3126199,
+6550899, -10958609, -5407364, 17637284, -2190433, -4821101, -11190000, 7737384, 6906845, 1590212,
+2185065, -1502165, 3797825, -9650792, 11643656, -8699993, -9689446, -9177271, -6898255, 13562970,
+244276, -5158256, 19280646, 22716082, -6007049, 6292664, -1830730, -6801081, 1149978, -15418933,
+-9638980, -773631, -3271155, 30560302, -13990856, 3844533, -19682224, -2930242, 11669963, -5054103,
+-11066520, -11421392, -4394826, 4652524, 5811091, -787590, -1229971, -12797929, 2749853, 8946954,
+4243428, 5497022, 1349694, 2024540, -7762080, -2406792, 4693326, 1887101, -337155, 631360,
+-9342091, 4092567, -9829033, -1438814, -620623, 2870649, -10908680, -950798, 4749160, 7701950,
+-12415677, -6115497, 20831666, -7984881, -17258790, 14319421, -14161044, -4061429, -6582575, -2181307,
+-11062762, -6969658, -2830384, -10224707, -15757161, 24675660, 12653511, 11249056, 6563784, -8970039,
+-4664872, -5830955, 5667210, -10809359, 6633040, -5323075, 1385664, -1897839, 31182536, -15318001,
+13023415, -29631516, 6951942, -19169512, -4370666, 9259949, -1863479, 5609228, 9699647, 7593502,
+-13488345, 8427800, 954557, 5994164, -3670050, 8672076, 7897371, -2864206, 874563, 4853850,
+5500243, -10124849, -4168266, -14349486, -2674154, 10948945, -698469, -6536940, 196495, 3481071,
+-204011, -5796059, -10627897, 1535988, -7533373, 5296232, -7184944, 21945136, -3215857, -13328357,
+-15103252, 2257542, -8792335, 6288906, -16829292, -13212930, -17091286, 2767570, -14620606, -4129074,
+-20503100, 12921946, 1683627, 8388071, 4576825, -21816286, 424665, -2813741, -9007083, -12636331,
+-4381941, -10931229, -13720810, -7948374, 4642860, 7169374, 10893111, -8118025, 639413, 3856881,
+-18398566, 6375342, -12400107, -26419954, -7409356, 30431454, 26906360, 15344308, -12572443, 13595182,
+20161650, -12716861, 17820894, -13700409, 16451335, 4314832, -879395, 5857799, -164283, 9071508,
+-12655658, -3085934, -5646809, 7082938, -12041478, -10313290, 17170742, -1018981, -3505767, 2267206,
+-16486769, 311385, 26564372, 15191836, 2989834, 480499, 5597953, 25896506, 10632192, 1175747,
+4106526, -6131603, -3150896, -5129265, 10595684, -4705674, 6969658, 2292976, 12613782, -14310294,
+-650688, 99321, 16643, -3240016, 6771016, 12708808, -3212099, -2109903, 11151346, 2599529,
+846645, 27834072, 3497177, 1800128, -12882754, 6918656, -9851044, 13977434, -15093589, -10667625,
+931471, -10214506, -14322105, -17657148, 4248260, -3559454, 9203041, 972810, 4636417, -21522618,
+21570400, -35108672, 13651017, 14286135, -25199646, -3225521, -21712134, -7633231, -19581292, -9218074,
+20692078, -8071318, -2384244, -15821049, -3753802, 2770791, -23234700, -1567663, 13469017, -28351616,
+162135, -19571092, -11062225, -298500, 1160178, -13181792, -10937671, -11149198, -3923990, -9674414,
+-1496259, 4141959, -3649649, 6363531, -14439143, -9255655, 17068200, -9083319, 8786966, -11374684,
+9163313, 8650601, 573915, 1836099, 8428336, -197032, 12428025, 16415365, -4296041, 1875827,
+24245090, 848793, 11891691, -1581085, -11258720, -20664698, 2149094, 13187697, -23307176, -425202,
+-14274861, -7559143, -29969208, 11572789, 17420388, -5772973, 7540889, -5548561, 18838264, 21684754,
+-3689914, -23689966, -23969138, 29687888, -26732414, 7064148, 1132261, 6497749, 37493992, 42267312,
+-2321967, -31483184, 31470300, -34423628, 5013838, 14972256, 3753802, -3425773, -15906948, 18319110,
+-7991324, -6132677, -16236050, -9134322, -5042292, -19975356, -11170673, -8709120, -5086315, -2940979,
+14103599, 214748, 12168716, 533650, -5334887, -17349520, -19594178, -4442070, -812286, 248034,
+-3084860, -6761889, -8575439, 9896678, 22310208, -11628087, 7550016, -7012608, -8077223, 9571335,
+-8951786, -13433047, 31283468, -2780991, 2598455, 2287070, -17967458, -3102577, -4069482, 9752797,
+-23187454, -9231495, 23643258, 4777078, -10743324, 14047764, 23935852, -12921409, -17861696, 10030359,
+-15307263, 1375463, -28137404, 10049150, 22386980, -1081258, 11114838, 8478802, 2854543, 28176060,
+6862821, 1413581, 13268765, 615254, -51831128, -36516348, 14307073, -15867220, -14953466, -44219372,
+-13195750, 8592619, 2973728, -9274982, -24824910, -1020592, 11666742, -1615445, 1068910, 11988864,
+21990232, -20323248, 50825032, -13979045, -17645336, -5954972, -3456375, -537408, -20906290, -318901,
+-4133906, 10062572, -7415261, 14558865, -6900402, -13907104, 4835060, 5493263, -12202002, 11888469,
+-39669928, -570694, -3637301, 14724759, 18400714, -14616847, 17135308, -7719667, 4562866, -9409200,
+-3292629, -6198712, 13642427, -2942053, 18116708, 27904402, -25678536, -8201777, 13183939, -18207976,
+9874667, -20585778, -11074036, -10961293, -11724724, -21158082, -10523207, 7638600, 7087770, 13429826,
+19187766, 12375411, -24283746, 823560, 3765613, 3122441, 3843459, 12010339, -9385040, 5934571,
+-11864847, -36053568, 25066502, -45804216, 30103962, -5673652, -21222508, -18194018, -20287814, -14026826,
+-11315091, -186294, 21679384, -2996277, -20596516, 19349364, 27673012, -45639396, -13247827, 2003065,
+-5057324, -8038568, -3620121, -7260106, -9321690, -14016089, 15093589, -6855842, -13805636, -22238804,
+-22521198, 19705310, 3920232, -4830765, -3798362, -1004486, -6169721, -6663642, 3026341, -19641422,
+8586713, 20217484, 14244259, 8894340, 18638548, 22593138, -15187541, 4060892, -21165598, 20134270,
+-13760001, -4406637, -1840930, -31678606, 8232916, 24415816, 2534568, -11297375, -10266046, 32243930,
+-15159087, -15127949, 7441031, -34559456, -5809480, -17480516, -1136019, -33659120, 11967389, 5244692,
+11779485, -53813792, -47462072, 7801808, -16821776, -9199820, 5233955, 41652056, -52712132, 58042188,
+18653580, 252329, 6871948, -38226284, 10620380, 21065204, -4784594, 49703508, -11225434, 22678502,
+-14391362, 54520316, 517544, -5000416, -17615272, -5282273, 10130754, -3238942, 23780160, 18556944,
+-3030636, 3457449, -18045842, 9905268, 23685670, 23368918, -20580410, 11766063, -1897839, 24821152,
+-3434363, 16856672, -10974715, -8741869, -28162638, 4150549, -16756278, -26947162, 44121124, -16182363,
+-639413, -5747203, -6828461, 7700877, 6532109, 16724066, -3688303, 24574730, 5371394, 42855184,
+18945638, 47259672, 41634340, -1422171, 29073170, 21990770, -3086471, 25551834, 34964792, -10658498,
+-27287000, 20685100, 15526307, 28709708, 17276506, 1046898, 4046933, -29217052, 1421634, -4750234,
+-7139847, 51606716, 2075543, 18502182, 17965312, -37463924, 74563320, -9068823, -7329899, -3758097,
+54459112, -31962072, 27726698, -35070020, 34974992, 7898982, -5850819, 1875827, 20797842, -7576859,
+19430432, -7632694, 599685, 38704096, 12299713, -8579734, 588411, 10479183, 8105677, -35432944,
+10441065, -12195560, -2638721, -18124762, 19274202, 18836116, 3398930, 9545565, 32063542, -9261560,
+-49435612, 13152800, 33364380, -11501922, -32327682, 9956808, 24032490, 9170829, 566399, -38176892,
+-18373334, -22090090, 22431540, 10146323, 23089208, -46190764, 3554622, -7483981, -51921324, -12324409,
+8244190, 25017648, 33578592, -16326781, 62272732, 13238700, 1688459, -11528766, -24222542, -16088411,
+12397960, -27533962, 59062244, -17681306, 3477850, 35187592, -21274584, 21521008, -20163260, -12465069,
+51504176, -17483738, -43212204, 24842090, 15902116, 24866250, -9806484, -6869800, 10059887, 244813,
+2877091, 1117228, 4896263, 1379221, -6824703, 32221918, -7496866, -21807696, 9277666, -310311,
+-19493246, 7052873, 4399121, 13514115, -9070434, -14365055, 15672873, -12353400, -1886564, -3409130,
+12801150, -21974664, 7445326, -13457743, 11127187, -19262392, 6772090, -6138045, 3138547, 43698608,
+-29986924, 6155762, 9210020, -26226680, 9398999, 12925167, -20182052, -3522410, -7959112, 36575940,
+2647311, -40878960, 24484534, -32877974, 5694053, 18148384, -16556025, 20693152, -24518894, -19001472,
+26866632, -3745748, 11148661, -39985608, 7205882, 9882720, -2626373, -5202279, -765578, 17835926,
+262530, -53099216, 32746978, -1871532, 12699145, -12367358, -15867757, 55006720, 2809982, 18293876,
+-9295920, -109274704, -229992816, -93104152, -173680432, -211110528, 71850504, -3059091, 73774120, 286434048,
+249981056, 141203488, 274163328, 151832992, 15359877, 93270048, 56729000, -106656920, -75816912, -23904178,
+-117736328, -142184352, -48491256, -73019272, -112675248, -29928406, -6787122, -143178096, -98934032, -16718160,
+-87383792, -112985560, -33870112, -56360708, -122130080, -24956444, 11028402, -69390032, -52749716, 49488760,
+-19320910, -74051144, 14484777, 46786152, -36357972, 28368258, 105465608, -16425029, -28170690, 104006392,
+56266220, -26467200, 174636592, 236275808, 148412064, 249600416, 374640864, 287713952, 275608064, 400419264,
+349428352, 257099424, 317266560, 287695168, 187473712, 165366448, 95411624, -21500606, -111418968, -210987584,
+-297894624, -359043168, -444289664, -476471872, -485214272, -545162880, -419987136, -176518320, -128365832, 0,
+0, 0, 0, },
{
8273718,
--2595771, 1931662, 1451162, -2772402, 3333968, 2580739, -845035, 4555887, -33286, 1936493,
--6468221, 2427730, 2448668, -3367791, 6817187, 846645, 3335579, -469225, -832150, 406411,
-4708895, 5187247, -5184026, -1624035, -2317135, 3388192, -1610613, -1233729, 746251, -2787434,
--4301410, 2321967, -4068945, 2324114, 2290291, 2280628, -90194, 1279900, -45634, 3339337,
--1170379, 514859, -3358665, -835371, -6404333, -3007014, 807454, 2289755, -277562, 3205119,
--303332, 1631014, -3988951, 1114007, 1969243, 2333778, 587874, -1815161, 158914, -874563,
-1504849, 1756642, 754304, -155156, -1414655, -818728, 3273839, -850940, 1464047, 2817499,
-1774895, -1525250, 3287798, 69793, 1025960, -1014686, -7168301, 204548, 5684389, 3911642,
-3922916, 2477659, 1548336, -2237678, 68183, -2544768, 6071473, 3741454, 1439888, 898722,
-854699, -55298, -1954747, 3015604, 4161287, 4056597, 2435783, -3036005, -4459250, -4807679,
--4634807, -442919, 2362769, -4689568, 3911105, -902480, 6864969, -1096290, 4344360, 119185,
--5773510, 1706713, -783295, 4707821, 272730, -460635, -2385854, -3834332, 304406, 2312840,
--5079873, -6771016, 4753992, -3867081, -3721052, -3337727, 2658048, -2593624, 1103807, -1068910,
--385473, -3881577, -1267015, -2569464, -4067334, 1533303, 3091303, -930934, -4457639, -607201,
--921271, -1932198, -3832722, 36507, -3097208, -3284576, -613107, 706522, 970663, -695785,
-763967, 4295, 13517336, -4686883, -3054259, -4177930, -2852932, 336618, -8988830, 1543504,
--4438312, -8818105, -1845225, 7589207, -5400922, 1490354, -594316, 2552821, 3878356, 4102768,
-6671158, -1409286, -3731790, 1692754, 1660542, -3035468, -372052, -2051921, -1265405, 812823,
--3397319, -2173790, -425202, -4377109, -5047124, 2615635, 4057134, -2362232, -5802501, -1045288,
--1282048, 821413, 4871567, 299574, -1860795, -335544, 6498823, 774168, -3776350, -3787624,
-1786706, 1181116, 5235029, 2860985, -181462, -4895726, 433792, -324807, 4350802, -4518306,
--1320166, 2408403, 5050882, -1425392, 637803, -3743064, -1846836, 2180770, 372588, 389231,
-1564442, -1532230, 2025614, 401579, 2427194, 1177895, 1090922, 8232916, 2658585, -9942849,
--2370285, -4713190, 4488241, 1108638, 63888, 3186866, -1961190, -7689602, -4084514, 5051956,
--328028, 5207111, -441308, -2997350, 5753646, 2151779, 12674448, -2425583, 5468567, 778463,
--6059125, 1482838, -5158793, 3272228, 1101122, 1271310, -5515275, 2697776, -1022739, -1950989,
-2156074, 8639864, 3139621, -76773, -7042136, 6003291, -1363652, -1611, 4168803, -6356552,
--1287417, 4331475, -2699387, -2291365, -7260106, -7835631, -721555, 4683125, 2643552, -3172907,
--235686, 3027415, 3693135, 1479616, -969052, -1566589, -7036767, 3144453, 8297877, 3784940,
--2696166, -1304060, 2422362, 3936875, -631897, -1422708, 648540, -5827734, -1481764, -4204773,
--2390686, -724776, -3149822, 5934571, 4565014, -2663954, -7636452, 8121247, -7358353, 7399155,
--263067, -6248104, -14470819, -5816997, -4289062, 1946694, 7296613, 5667210, -1990717, -1339493,
--1927367, -4287451, -1365263, -4793721, 1394791, 1504849, 2654290, 4518843, 2610803, 8817568,
--150324, 1632625, -3348464, -927176, -2322504, 3125126, 829466, -4371740, -6227703, 68183,
--4515621, 366683, 3955665, -7033546, 4673462, -11711839, -3328600, -8731132, 1316944, -697395,
-4295, -3521873, -4658429, 1435056, 3960497, 2769717, 959388, -7035157, 1983738, -4903779,
--1915555, -1512365, -9470403, -3802120, 2719251, 3488587, -399432, -6585796, 1046361, 2330020,
--1301375, -1395328, 736050, 5520644, 1993939, -1349694, -1815697, 917512, -13364328, 903554,
-3357054, 3118683, 8958765, 9590662, -2385854, 185757, 6331319, -3193845, -3007551, 9477919,
--7153268, -16910896, -11126113, -6492380, 10210211, 4417374, 1416802, -9751723, 10405632, -4402342,
-2909304, -2602213, 4072703, 5107253, -434865, 230318, -121870, -1584843, -5418101, -4228396,
--1366337, 682900, 4672925, 2800319, 7320235, 3652333, -3291019, -1586990, 6491306, -4594005,
-7973607, -6307160, 1635309, 3686693, 2176475, -5078799, 6985765, -536871, 7502771, 10224707,
-1396401, -3854733, -4058744, 4424353, -5015985, -10050760, -2829847, 2326262, -6774774, 3928285,
-2804077, -1992328, -4339528, -1550483, -1847910, 2162516, -1109175, -5559835, -2552821, 10144713,
-7584376, 4508642, -12319040, -11424076, -6917045, 11390253, 4972499, -609885, 640487, -4931160,
-1258425, 4396436, 6654515, -782221, 2319282, -11482595, -4146254, 1429687, 3391951, -14142254,
--1929514, 5541582, -4553739, -9330280, 5166846, -10787884, -8051990, -4502200, 494995, -4151623,
--2988224, -707059, 7318088, -6940667, 1293859, -2448131, -3159485, -5894306, -1956895, -8435316,
--2838437, -593242, 1108102, -5998459, -1629403, -3910031, 73014, -2160369, -2949569, 1145683,
-5920613, 1285806, -3768834, 2837363, -5316633, -1530082, 1403917, -2166811, 2707977, -1344862,
--828929, -22712860, 1009854, -8061654, 3306588, 2957085, 4454418, -12608950, -13093745, 1436130,
--86436, 2690797, -464930, 6474663, -3295851, 3433290, 3899830, -2340220, 9859097, -3452617,
--7613904, -1580548, -6572374, -266825, -12381854, 129923, 3819300, 8800388, -17391934, 4819490,
-844498, 5002563, 7130720, 1432372, -6715718, -14742475, 1123134, -5849746, 11371463, -4422206,
-2371359, 1023276, 2440615, 8754754, -3766150, -39192, -3971234, -1999844, 2209761, -1910724,
-7978976, 6227166, 1660005, -1432909, 41339, 5645735, -638340, 2881923, -227633, -4121021,
-3788161, -822486, -3455301, 5066451, 7865159, 361314, 2953864, 913754, -5535676, -2958159,
-9514963, -4332012, 4402879, 7491497, -9710384, 7124814, 3273302, 3830037, -4538170, 7324530,
-1591285, -744103, 8379481, 788663, -592169, -3652333, -2891587, 491237, -4459250, -8915815,
--3157875, 10163503, 6498823, 8476655, -1758789, -7780870, 2455111, 10704669, -3087008, -6520297,
--1843078, -4364761, -3263638, 1611, -8160438, -2297808, -13252658, -3759707, -7631083, -9002251,
--8553964, -2912525, 11818139, 12887586, 17648558, 4089883, -6569153, -3940633, 14617384, 122407,
--3278134, 11292543, -1066226, 666257, -17272748, 8035884, 4451197, -11401528, 16131360, -2050847,
-7280507, -1762010, 3830574, 7325604, 66035, 12806519, 4879620, 3769371, -1429687, -4285841,
-1232656, 7832410, -2039036, 2457258, 3581466, 10309532, -485331, -2882460, 6503118, -7488813,
--4854387, 3642132, 11124502, -4785131, -6055904, -1728724, 9127342, 238371, 1203128, -3296388,
--1691143, 3436511, 4719632, 547608, -4133906, -12637941, 1326071, 3829500, 11914776, 3572876,
--1219234, 9327058, 16369731, -3460670, 5523328, 3831648, 6554120, -1536525, -6218576, 2997350,
--14797773, 21623550, -10346039, 5213017, -431107, -6927782, 16539919, 4221416, 2349884, -16695612,
-4775467, -6396817, -7464117, 2341831, -7284265, 9110699, 5552856, -992137, 2041720, -3717294,
--1593433, -5731097, -3704946, -6968048, -11246372, -2325725, -7788387, -1635846, 4669703, -2715493,
--4071629, 9697499, 6008659, 9748502, -7253126, -249645, -1250372, -7640210, 337155, -3752191,
--20304458, 2459943, 620623, -2495913, 7379291, -37581, 8113193, 7400766, 2703145, 13130789,
-11245835, -10073846, -2737505, 916439, -159988, 4728759, 1722819, 11414412, -1999844, 17736068,
-228170, -8920110, -7780870, 2318746, 3299609, 4519380, 12491912, 4343286, 3361886, 12662100,
-15622407, 1847373, -8980240, -7669738, -337155, -1943473, -1361505, 16207059, 13205951, 1444720,
-9046275, -8927090, 4657892, 1232119, -248571, 6158446, 13922673, -3224447, -781147, 12908524,
--15967615, -8636642, -6726993, -18277770, 4130685, -5432597, -2210835, 2797098, -12391518, 14609331,
-11039677, 15497316, 7138236, -8716636, 1319092, 1191317, 11615202, -1453846, 85362, 195421,
--6487548, 1207960, -3624416, 6919193, -6897718, -2086817, -2012192, -2457795, -8139500, 4809290,
--12149926, -1142461, -384936, 8766565, 5223754, 1924682, 678605, -1301375, 1490891, 1087164,
-7186554, 2553358, 2540473, 43487, -19120658, -8024073, 3017752, 9478993, 10621454, -14114336,
-11243688, 4611185, -5132486, 3200825, 4472135, -1738925, 16333224, 2381023, 4482335, -867583,
--18861886, -3827890, -6599754, 2095944, 18852222, 2544231, 7288560, -12229919, -11138998, 5545340,
-9509058, 643708, -4128001, 18089328, 5290326, -454193, -5728950, 3529926, -2018098, -2579665,
--1270774, -3716757, 288837, -6705518, -15352361, 4363687, 933619, 4005594, 879931, 7719130,
-1910724, -9320079, -18571976, -5906, 753230, -1911261, -16329466, -8136279, -2962454, 3960497,
--4031364, 1326608, -14359686, 245887, -3671123, -323196, 784905, 3423089, -2078227, -13333726,
--12504260, -7788387, 4415764, 3352759, -3758097, -3013457, -21343304, -12051141, -988379, -20522964,
-18082350, -19359566, -5795522, -12582644, 19468550, 6252936, -14581414, 6978248, -2095944, 7518341,
--12410845, -3934727, 185220, 8270497, -11618423, -4294431, -3912715, -11179800, 1148904, 8171712,
-62814, -2117419, 16080358, 36358508, -6022081, -12695923, -11906723, -10695542, -14806900, 1217086,
--24514062, -1292785, -19158238, -9521942, 4671851, 10306848, 5624797, -9335648, -2044941, 9711995,
--1656247, 11368242, -8378945, -8752606, -7553237, 4694936, -5273146, -6975564, 1136019, -8138426,
--7863548, 7211250, 19229642, 6256694, 7738994, 2452426, -12677133, -4188130, -10441602, -10489921,
--2279017, -3094524, -8377871, -13566728, -25096030, -3796214, -9640054, 1572495, -5313412, 7472706,
-7595650, 3116536, 7984344, 4483946, -1777580, 15209016, 23390928, 3944928, -29263760, 3850438,
--5977521, -18646064, 1398549, 6005438, 3082176, -1520955, 6796786, -2861522, -14602889, -1756105,
-5242008, -16392280, -8437463, -15894063, -25093346, 14771466, 617938, -856846, 26884884, -21044802,
-23127862, -2617246, -3574487, -12731357, -5216775, -12636331, -10997264, 12152610, -12102144, 6020471,
-27761594, 10078678, -5065914, -13424457, -11683922, 12226161, -11306501, -18138184, -8182450, 1313186,
-732292, -20615844, 442382, -6583648, 9477382, -6827388, -1356136, 1873143, 28934120, -7718056,
--10742787, 14122389, -12794708, 17059074, -11484206, 12373801, 844498, -9701794, -9839770, 15826418,
--22449258, 15559593, -10567767, 1185948, -6623377, 8280697, -8951249, -4190278, -2071785, -6970195,
-28735478, -9330280, 18874770, 7558606, 7405598, -741956, 5554467, 12765717, 12465069, -4843113,
--17389248, -734439, 9293772, 4057134, -5717675, -19462108, 20500416, -6535330, -20952998, -6350109,
--15785615, 4963372, 2663417, -31549220, -13641890, 18881214, -4089883, -8140574, 21984326, 1851668,
--11879880, 8172249, 11827803, 10012643, 1302986, -19502910, -8250096, 2668249, 2532420, 9785546,
-6342056, 11075110, -10134512, -8016020, 3493419, -2923262, 8977555, -18333604, -3380139, -19807852,
--6646462, 3295314, -3023120, -2698850, 20593294, 4119948, -15845208, -2588792, 901943, -16078747,
--2497524, 547608, 9167608, 23834922, -8904004, 7819525, -13804025, 1800665, -8286066, -10392747,
-9412421, 20824148, -17085916, 1394254, 18324478, -8684424, -2168959, -7255274, 11814918, 2740726,
--15717970, -409096, -5826123, -5172751, -2044941, -7719130, 10796474, -27188216, 5109938, 2011118,
--11978127, 14838575, 22457310, 16073378, 43353400, 13094282, -12107513, -15927349, -13743358, -7311645,
-19598472, -53734336, -4365835, 26951994, -41360000, -4142496, 5371931, -42715060, 15752866, 2522757,
-30021284, -5644124, 9118216, 7096360, -37799472, -31848794, -13755707, -5333276, -20083268, -24360518,
--13883482, 17641042, 11816529, 9650255, -1046898, -343061, 4010963, -1407139, -28153510, -12350715,
--35486092, -13322452, 16065325, 2696703, 10036802, 38735772, 8329016, 12791486, -3182571, 5324686,
-34071976, 24474872, 5069135, 14912663, 13928042, 33296198, 27308476, -43201464, 22151294, -5714991,
-21000242, 20677046, 7160248, 40111772, 35706748, -25316684, 16001438, -4425964, 14956687, -36455144,
--373662, -1207423, -2505577, -12276090, 16366510, 16551730, -25588342, -13220983, -17203492, 981400,
--22906672, -29774324, 14598594, 25603910, 5660230, 23516556, -19508816, -16047608, 24192478, 43322800,
--5545340, -58223112, -18435610, 6421513, -4304631, -9252433, -12616466, 707596, -33306398, -19567334,
--27633282, -3910031, -7936026, 9914395, -19697256, -5046050, 5531918, 10031970, -74625, 11126650,
-20409148, 4999879, 29368986, -17973364, 7164006, 2092723, 27999428, 8291435, -5374615, -27062052,
-18758270, -3736085, 25520158, -20196010, -16902844, -14937896, -8573292, -24559160, -3512747, -3054259,
--24330990, 14950781, 27790586, -11792906, 4146254, -34285112, 34673808, -9045738, -18845242, 17852032,
-13852880, -18411988, 1806034, -10461467, 4532264, -6811282, 43350180, 1247688, -3764002, -7550016,
-76472968, 5449777, -10540387, 36725728, 26072598, -23349590, 21264384, -28882582, -19768660, -29365228,
-25589416, -16546898, 9281424, -17470316, -79812304, 4688494, 49704044, -31556736, -21400748, 39766028,
--30598958, -2843805, -9408663, 38145216, -68088120, 36592584, 21239688, -19830400, 5976984, 35741644,
-25125558, -13717052, 13925895, 5838471, -11274289, 16352551, -1434519, 9574019, 14782741, -7631620,
-2747169, -2575370, 6469295, -10568304, -8920110, -1480153, 12494060, -40634684, -20817170, 18928458,
--5604933, -27230092, -32298154, 4537096, 37601364, -17675402, -25930866, 18194556, 27732604, -7194607,
-6080063, -5988795, 25730076, -15515569, 39170640, -6366752, -1141388, 21202106, -756451, 4145717,
--29913374, 44094280, -24537686, -29246580, 20164872, -30959198, -11118060, 3919158, 13673565, 40430676,
--15999827, 24646670, -6497749, 12137041, -71725416, -55576876, -11108933, -22818088, 9442486, -8220568,
--28844464, -14833206, 16718697, -35268124, 29520920, -30371862, -37665788, 17396766, -19605988, -13846975,
-17547626, -17590576, 14175003, -14319958, 5086852, 37127308, -38141456, -4882841, -8260296, 30944166,
-1583769, 838592, -34565360, -31955630, -13550622, -10933376, -7665443, -11815992, 2764885, -496606,
--6392522, 2712272, 3915937, 1226213, 2260764, -8278550, 12207908, -12248710, 11469710, -30253750,
--2482491, -24895778, -33088428, -19515258, 35622460, -19005768, -21009906, -14902463, 5188858, -9868761,
-13529147, 23434952, -30779884, 21913460, 76773, -38904888, -22852984, 74364136, 35057672, -59796684,
--15623480, 34827352, -23602456, -23036058, 9556839, -20174536, -45554572, 26752278, 7093139, -56418692,
-15808164, 25257628, -39423504, -24079198, 23270670, -13219909, 49299244, 69224672, -25769804, 77299744,
--4572530, -19575388, -14631880, -24543054, -663572, 13931263, 46388332, 2667712, 15393700, -10302553,
--37060736, 1780264, 3080565, 26506928, 6549825, -28266254, 56116432, -22290344, 11951283, 25324738,
--25252260, -21144660, -36774584, -16127602, 25827786, 30535070, 38766912, -13160317, -87936768, 20630876,
-49086108, 60865056, 53932980, -215822, -23539642, -31385474, 13171591, 31204548, -17243220, -9934259,
--77296528, -48467096, 45354316, 72424960, 17375828, -1719061, -14830522, -31347892, -4625143, 20137492,
--25046638, 11004780, -980863, 45574436, 1162862, 17685064, -85895584, -11518565, 4518306, 54460184,
-46052788, -1582159, -22860500, -7961796, 69280504, 28643136, -71961104, -95806224, -31981938, 17599702,
-152848224, 14198088, -18853296, 19127100, 7221451, -12622372, 31053150, -36381056, 791885, -14755897,
-7996692, -22572738, 20631412, 5643050, -12320114, -22716618, -11513197, -4399121, 6128919, -30897994,
-6641630, -15152108, -6361921, -24159192, -11871826, 19549080, -21110838, -7252589, -3386045, 9612674,
-5887327, -7931194, 10473815, -17540646, -2030983, 367757, 8828842, -11381126, 16101296, 12749610,
--13466333, -14513768, -6378564, 24164560, -17940078, 7880728, 16940962, 4342749, -18099530, -6181532,
-6586869, -10361609, 7168301, 1327145, 2974802, -15363098, 2394444, -12320114, -1566589, 12793634,
-14189498, 12662637, -9913858, 12200391, 278099, -13215077, -3322694, 1044214, 15666430, -3452617,
-2211371, 16083579, -4624606, -17676474, 25289304, -9154186, 14285061, 13673565, 1257889, 6251325,
--11555073, -8796630, -28560996, 55121612, 5561983, 3552475, -21407728, 13210246, -1218697, 14859513,
-11560978, 17284560, 2515240, 4787278, -8744553, 3220152, 16048145, -1014149, 9111773, -858457,
-3400540, 3860102, 6969122, -6058052, 12379706, -7481833, 1843615, -857383, 4734128, -635655,
-3147137, 9224516, 10522670, -4313221, 5124433, 2244121, -1303523, -3828427, 13796509, -3651259,
-3638374, -3373697, 7679939, 238908, -5235565, 13236552, -7092602, -2554432, 4441533, -5890011,
--2667712, -1705639, 1595044, -2173254, 1309428, -1109712, -2229625, 4514548, -7190849, 5337571,
-4778688, -2828773, 6793028, -4223564, 7870528, -3448322, 2639258, 1151051, -2487323, 6245956,
-1573032, 574989, -330176, 8217346, -8399882, 10279467, -5480379, 104690, 5028870, 10259603,
--49938660, -124109520, 19110994, 94195072, 87552368, 151929632, -38958576, -40933724, -103700376, -141643184,
--29268592, 50913616, 54628764, 102832256, 55902220, 4169876, -26845156, -72219336, -51225000, -9104257,
--8065949, 25362318, 23738822, 13461501, 8740795, 6614787, -3820910, -17991082, -1386738, 20107964,
-151934, 3970697, -1162326, -15654082, -11708081, -26396870, -25491168, 11218991, 10723996, 23310398,
-36058396, 26603028, 13247827, 4388383, -38781944, -27874874, -21170968, -21701396, -23657216, 4565550,
-15283641, 25951804, 33807300, 27448062, 6231461, -3692061, -22148072, -23193360, -13343390, -6988986,
-2418067, 3384971, 7813083, 320512, -6987912, 2171106, -11278047, 5841693, 10340671, 1020055,
-20393042, 24049670, 8260296, -3959960, -24847460, -32131724, -8114804, -99858, -733366, 0,
-0, 0, 0, },
+-2595771, 1931662, 1451162, -2772402, 3333968, 2580739, -845035, 4555887, -33286, 1936493,
+-6468221, 2427730, 2448668, -3367791, 6817187, 846645, 3335579, -469225, -832150, 406411,
+4708895, 5187247, -5184026, -1624035, -2317135, 3388192, -1610613, -1233729, 746251, -2787434,
+-4301410, 2321967, -4068945, 2324114, 2290291, 2280628, -90194, 1279900, -45634, 3339337,
+-1170379, 514859, -3358665, -835371, -6404333, -3007014, 807454, 2289755, -277562, 3205119,
+-303332, 1631014, -3988951, 1114007, 1969243, 2333778, 587874, -1815161, 158914, -874563,
+1504849, 1756642, 754304, -155156, -1414655, -818728, 3273839, -850940, 1464047, 2817499,
+1774895, -1525250, 3287798, 69793, 1025960, -1014686, -7168301, 204548, 5684389, 3911642,
+3922916, 2477659, 1548336, -2237678, 68183, -2544768, 6071473, 3741454, 1439888, 898722,
+854699, -55298, -1954747, 3015604, 4161287, 4056597, 2435783, -3036005, -4459250, -4807679,
+-4634807, -442919, 2362769, -4689568, 3911105, -902480, 6864969, -1096290, 4344360, 119185,
+-5773510, 1706713, -783295, 4707821, 272730, -460635, -2385854, -3834332, 304406, 2312840,
+-5079873, -6771016, 4753992, -3867081, -3721052, -3337727, 2658048, -2593624, 1103807, -1068910,
+-385473, -3881577, -1267015, -2569464, -4067334, 1533303, 3091303, -930934, -4457639, -607201,
+-921271, -1932198, -3832722, 36507, -3097208, -3284576, -613107, 706522, 970663, -695785,
+763967, 4295, 13517336, -4686883, -3054259, -4177930, -2852932, 336618, -8988830, 1543504,
+-4438312, -8818105, -1845225, 7589207, -5400922, 1490354, -594316, 2552821, 3878356, 4102768,
+6671158, -1409286, -3731790, 1692754, 1660542, -3035468, -372052, -2051921, -1265405, 812823,
+-3397319, -2173790, -425202, -4377109, -5047124, 2615635, 4057134, -2362232, -5802501, -1045288,
+-1282048, 821413, 4871567, 299574, -1860795, -335544, 6498823, 774168, -3776350, -3787624,
+1786706, 1181116, 5235029, 2860985, -181462, -4895726, 433792, -324807, 4350802, -4518306,
+-1320166, 2408403, 5050882, -1425392, 637803, -3743064, -1846836, 2180770, 372588, 389231,
+1564442, -1532230, 2025614, 401579, 2427194, 1177895, 1090922, 8232916, 2658585, -9942849,
+-2370285, -4713190, 4488241, 1108638, 63888, 3186866, -1961190, -7689602, -4084514, 5051956,
+-328028, 5207111, -441308, -2997350, 5753646, 2151779, 12674448, -2425583, 5468567, 778463,
+-6059125, 1482838, -5158793, 3272228, 1101122, 1271310, -5515275, 2697776, -1022739, -1950989,
+2156074, 8639864, 3139621, -76773, -7042136, 6003291, -1363652, -1611, 4168803, -6356552,
+-1287417, 4331475, -2699387, -2291365, -7260106, -7835631, -721555, 4683125, 2643552, -3172907,
+-235686, 3027415, 3693135, 1479616, -969052, -1566589, -7036767, 3144453, 8297877, 3784940,
+-2696166, -1304060, 2422362, 3936875, -631897, -1422708, 648540, -5827734, -1481764, -4204773,
+-2390686, -724776, -3149822, 5934571, 4565014, -2663954, -7636452, 8121247, -7358353, 7399155,
+-263067, -6248104, -14470819, -5816997, -4289062, 1946694, 7296613, 5667210, -1990717, -1339493,
+-1927367, -4287451, -1365263, -4793721, 1394791, 1504849, 2654290, 4518843, 2610803, 8817568,
+-150324, 1632625, -3348464, -927176, -2322504, 3125126, 829466, -4371740, -6227703, 68183,
+-4515621, 366683, 3955665, -7033546, 4673462, -11711839, -3328600, -8731132, 1316944, -697395,
+4295, -3521873, -4658429, 1435056, 3960497, 2769717, 959388, -7035157, 1983738, -4903779,
+-1915555, -1512365, -9470403, -3802120, 2719251, 3488587, -399432, -6585796, 1046361, 2330020,
+-1301375, -1395328, 736050, 5520644, 1993939, -1349694, -1815697, 917512, -13364328, 903554,
+3357054, 3118683, 8958765, 9590662, -2385854, 185757, 6331319, -3193845, -3007551, 9477919,
+-7153268, -16910896, -11126113, -6492380, 10210211, 4417374, 1416802, -9751723, 10405632, -4402342,
+2909304, -2602213, 4072703, 5107253, -434865, 230318, -121870, -1584843, -5418101, -4228396,
+-1366337, 682900, 4672925, 2800319, 7320235, 3652333, -3291019, -1586990, 6491306, -4594005,
+7973607, -6307160, 1635309, 3686693, 2176475, -5078799, 6985765, -536871, 7502771, 10224707,
+1396401, -3854733, -4058744, 4424353, -5015985, -10050760, -2829847, 2326262, -6774774, 3928285,
+2804077, -1992328, -4339528, -1550483, -1847910, 2162516, -1109175, -5559835, -2552821, 10144713,
+7584376, 4508642, -12319040, -11424076, -6917045, 11390253, 4972499, -609885, 640487, -4931160,
+1258425, 4396436, 6654515, -782221, 2319282, -11482595, -4146254, 1429687, 3391951, -14142254,
+-1929514, 5541582, -4553739, -9330280, 5166846, -10787884, -8051990, -4502200, 494995, -4151623,
+-2988224, -707059, 7318088, -6940667, 1293859, -2448131, -3159485, -5894306, -1956895, -8435316,
+-2838437, -593242, 1108102, -5998459, -1629403, -3910031, 73014, -2160369, -2949569, 1145683,
+5920613, 1285806, -3768834, 2837363, -5316633, -1530082, 1403917, -2166811, 2707977, -1344862,
+-828929, -22712860, 1009854, -8061654, 3306588, 2957085, 4454418, -12608950, -13093745, 1436130,
+-86436, 2690797, -464930, 6474663, -3295851, 3433290, 3899830, -2340220, 9859097, -3452617,
+-7613904, -1580548, -6572374, -266825, -12381854, 129923, 3819300, 8800388, -17391934, 4819490,
+844498, 5002563, 7130720, 1432372, -6715718, -14742475, 1123134, -5849746, 11371463, -4422206,
+2371359, 1023276, 2440615, 8754754, -3766150, -39192, -3971234, -1999844, 2209761, -1910724,
+7978976, 6227166, 1660005, -1432909, 41339, 5645735, -638340, 2881923, -227633, -4121021,
+3788161, -822486, -3455301, 5066451, 7865159, 361314, 2953864, 913754, -5535676, -2958159,
+9514963, -4332012, 4402879, 7491497, -9710384, 7124814, 3273302, 3830037, -4538170, 7324530,
+1591285, -744103, 8379481, 788663, -592169, -3652333, -2891587, 491237, -4459250, -8915815,
+-3157875, 10163503, 6498823, 8476655, -1758789, -7780870, 2455111, 10704669, -3087008, -6520297,
+-1843078, -4364761, -3263638, 1611, -8160438, -2297808, -13252658, -3759707, -7631083, -9002251,
+-8553964, -2912525, 11818139, 12887586, 17648558, 4089883, -6569153, -3940633, 14617384, 122407,
+-3278134, 11292543, -1066226, 666257, -17272748, 8035884, 4451197, -11401528, 16131360, -2050847,
+7280507, -1762010, 3830574, 7325604, 66035, 12806519, 4879620, 3769371, -1429687, -4285841,
+1232656, 7832410, -2039036, 2457258, 3581466, 10309532, -485331, -2882460, 6503118, -7488813,
+-4854387, 3642132, 11124502, -4785131, -6055904, -1728724, 9127342, 238371, 1203128, -3296388,
+-1691143, 3436511, 4719632, 547608, -4133906, -12637941, 1326071, 3829500, 11914776, 3572876,
+-1219234, 9327058, 16369731, -3460670, 5523328, 3831648, 6554120, -1536525, -6218576, 2997350,
+-14797773, 21623550, -10346039, 5213017, -431107, -6927782, 16539919, 4221416, 2349884, -16695612,
+4775467, -6396817, -7464117, 2341831, -7284265, 9110699, 5552856, -992137, 2041720, -3717294,
+-1593433, -5731097, -3704946, -6968048, -11246372, -2325725, -7788387, -1635846, 4669703, -2715493,
+-4071629, 9697499, 6008659, 9748502, -7253126, -249645, -1250372, -7640210, 337155, -3752191,
+-20304458, 2459943, 620623, -2495913, 7379291, -37581, 8113193, 7400766, 2703145, 13130789,
+11245835, -10073846, -2737505, 916439, -159988, 4728759, 1722819, 11414412, -1999844, 17736068,
+228170, -8920110, -7780870, 2318746, 3299609, 4519380, 12491912, 4343286, 3361886, 12662100,
+15622407, 1847373, -8980240, -7669738, -337155, -1943473, -1361505, 16207059, 13205951, 1444720,
+9046275, -8927090, 4657892, 1232119, -248571, 6158446, 13922673, -3224447, -781147, 12908524,
+-15967615, -8636642, -6726993, -18277770, 4130685, -5432597, -2210835, 2797098, -12391518, 14609331,
+11039677, 15497316, 7138236, -8716636, 1319092, 1191317, 11615202, -1453846, 85362, 195421,
+-6487548, 1207960, -3624416, 6919193, -6897718, -2086817, -2012192, -2457795, -8139500, 4809290,
+-12149926, -1142461, -384936, 8766565, 5223754, 1924682, 678605, -1301375, 1490891, 1087164,
+7186554, 2553358, 2540473, 43487, -19120658, -8024073, 3017752, 9478993, 10621454, -14114336,
+11243688, 4611185, -5132486, 3200825, 4472135, -1738925, 16333224, 2381023, 4482335, -867583,
+-18861886, -3827890, -6599754, 2095944, 18852222, 2544231, 7288560, -12229919, -11138998, 5545340,
+9509058, 643708, -4128001, 18089328, 5290326, -454193, -5728950, 3529926, -2018098, -2579665,
+-1270774, -3716757, 288837, -6705518, -15352361, 4363687, 933619, 4005594, 879931, 7719130,
+1910724, -9320079, -18571976, -5906, 753230, -1911261, -16329466, -8136279, -2962454, 3960497,
+-4031364, 1326608, -14359686, 245887, -3671123, -323196, 784905, 3423089, -2078227, -13333726,
+-12504260, -7788387, 4415764, 3352759, -3758097, -3013457, -21343304, -12051141, -988379, -20522964,
+18082350, -19359566, -5795522, -12582644, 19468550, 6252936, -14581414, 6978248, -2095944, 7518341,
+-12410845, -3934727, 185220, 8270497, -11618423, -4294431, -3912715, -11179800, 1148904, 8171712,
+62814, -2117419, 16080358, 36358508, -6022081, -12695923, -11906723, -10695542, -14806900, 1217086,
+-24514062, -1292785, -19158238, -9521942, 4671851, 10306848, 5624797, -9335648, -2044941, 9711995,
+-1656247, 11368242, -8378945, -8752606, -7553237, 4694936, -5273146, -6975564, 1136019, -8138426,
+-7863548, 7211250, 19229642, 6256694, 7738994, 2452426, -12677133, -4188130, -10441602, -10489921,
+-2279017, -3094524, -8377871, -13566728, -25096030, -3796214, -9640054, 1572495, -5313412, 7472706,
+7595650, 3116536, 7984344, 4483946, -1777580, 15209016, 23390928, 3944928, -29263760, 3850438,
+-5977521, -18646064, 1398549, 6005438, 3082176, -1520955, 6796786, -2861522, -14602889, -1756105,
+5242008, -16392280, -8437463, -15894063, -25093346, 14771466, 617938, -856846, 26884884, -21044802,
+23127862, -2617246, -3574487, -12731357, -5216775, -12636331, -10997264, 12152610, -12102144, 6020471,
+27761594, 10078678, -5065914, -13424457, -11683922, 12226161, -11306501, -18138184, -8182450, 1313186,
+732292, -20615844, 442382, -6583648, 9477382, -6827388, -1356136, 1873143, 28934120, -7718056,
+-10742787, 14122389, -12794708, 17059074, -11484206, 12373801, 844498, -9701794, -9839770, 15826418,
+-22449258, 15559593, -10567767, 1185948, -6623377, 8280697, -8951249, -4190278, -2071785, -6970195,
+28735478, -9330280, 18874770, 7558606, 7405598, -741956, 5554467, 12765717, 12465069, -4843113,
+-17389248, -734439, 9293772, 4057134, -5717675, -19462108, 20500416, -6535330, -20952998, -6350109,
+-15785615, 4963372, 2663417, -31549220, -13641890, 18881214, -4089883, -8140574, 21984326, 1851668,
+-11879880, 8172249, 11827803, 10012643, 1302986, -19502910, -8250096, 2668249, 2532420, 9785546,
+6342056, 11075110, -10134512, -8016020, 3493419, -2923262, 8977555, -18333604, -3380139, -19807852,
+-6646462, 3295314, -3023120, -2698850, 20593294, 4119948, -15845208, -2588792, 901943, -16078747,
+-2497524, 547608, 9167608, 23834922, -8904004, 7819525, -13804025, 1800665, -8286066, -10392747,
+9412421, 20824148, -17085916, 1394254, 18324478, -8684424, -2168959, -7255274, 11814918, 2740726,
+-15717970, -409096, -5826123, -5172751, -2044941, -7719130, 10796474, -27188216, 5109938, 2011118,
+-11978127, 14838575, 22457310, 16073378, 43353400, 13094282, -12107513, -15927349, -13743358, -7311645,
+19598472, -53734336, -4365835, 26951994, -41360000, -4142496, 5371931, -42715060, 15752866, 2522757,
+30021284, -5644124, 9118216, 7096360, -37799472, -31848794, -13755707, -5333276, -20083268, -24360518,
+-13883482, 17641042, 11816529, 9650255, -1046898, -343061, 4010963, -1407139, -28153510, -12350715,
+-35486092, -13322452, 16065325, 2696703, 10036802, 38735772, 8329016, 12791486, -3182571, 5324686,
+34071976, 24474872, 5069135, 14912663, 13928042, 33296198, 27308476, -43201464, 22151294, -5714991,
+21000242, 20677046, 7160248, 40111772, 35706748, -25316684, 16001438, -4425964, 14956687, -36455144,
+-373662, -1207423, -2505577, -12276090, 16366510, 16551730, -25588342, -13220983, -17203492, 981400,
+-22906672, -29774324, 14598594, 25603910, 5660230, 23516556, -19508816, -16047608, 24192478, 43322800,
+-5545340, -58223112, -18435610, 6421513, -4304631, -9252433, -12616466, 707596, -33306398, -19567334,
+-27633282, -3910031, -7936026, 9914395, -19697256, -5046050, 5531918, 10031970, -74625, 11126650,
+20409148, 4999879, 29368986, -17973364, 7164006, 2092723, 27999428, 8291435, -5374615, -27062052,
+18758270, -3736085, 25520158, -20196010, -16902844, -14937896, -8573292, -24559160, -3512747, -3054259,
+-24330990, 14950781, 27790586, -11792906, 4146254, -34285112, 34673808, -9045738, -18845242, 17852032,
+13852880, -18411988, 1806034, -10461467, 4532264, -6811282, 43350180, 1247688, -3764002, -7550016,
+76472968, 5449777, -10540387, 36725728, 26072598, -23349590, 21264384, -28882582, -19768660, -29365228,
+25589416, -16546898, 9281424, -17470316, -79812304, 4688494, 49704044, -31556736, -21400748, 39766028,
+-30598958, -2843805, -9408663, 38145216, -68088120, 36592584, 21239688, -19830400, 5976984, 35741644,
+25125558, -13717052, 13925895, 5838471, -11274289, 16352551, -1434519, 9574019, 14782741, -7631620,
+2747169, -2575370, 6469295, -10568304, -8920110, -1480153, 12494060, -40634684, -20817170, 18928458,
+-5604933, -27230092, -32298154, 4537096, 37601364, -17675402, -25930866, 18194556, 27732604, -7194607,
+6080063, -5988795, 25730076, -15515569, 39170640, -6366752, -1141388, 21202106, -756451, 4145717,
+-29913374, 44094280, -24537686, -29246580, 20164872, -30959198, -11118060, 3919158, 13673565, 40430676,
+-15999827, 24646670, -6497749, 12137041, -71725416, -55576876, -11108933, -22818088, 9442486, -8220568,
+-28844464, -14833206, 16718697, -35268124, 29520920, -30371862, -37665788, 17396766, -19605988, -13846975,
+17547626, -17590576, 14175003, -14319958, 5086852, 37127308, -38141456, -4882841, -8260296, 30944166,
+1583769, 838592, -34565360, -31955630, -13550622, -10933376, -7665443, -11815992, 2764885, -496606,
+-6392522, 2712272, 3915937, 1226213, 2260764, -8278550, 12207908, -12248710, 11469710, -30253750,
+-2482491, -24895778, -33088428, -19515258, 35622460, -19005768, -21009906, -14902463, 5188858, -9868761,
+13529147, 23434952, -30779884, 21913460, 76773, -38904888, -22852984, 74364136, 35057672, -59796684,
+-15623480, 34827352, -23602456, -23036058, 9556839, -20174536, -45554572, 26752278, 7093139, -56418692,
+15808164, 25257628, -39423504, -24079198, 23270670, -13219909, 49299244, 69224672, -25769804, 77299744,
+-4572530, -19575388, -14631880, -24543054, -663572, 13931263, 46388332, 2667712, 15393700, -10302553,
+-37060736, 1780264, 3080565, 26506928, 6549825, -28266254, 56116432, -22290344, 11951283, 25324738,
+-25252260, -21144660, -36774584, -16127602, 25827786, 30535070, 38766912, -13160317, -87936768, 20630876,
+49086108, 60865056, 53932980, -215822, -23539642, -31385474, 13171591, 31204548, -17243220, -9934259,
+-77296528, -48467096, 45354316, 72424960, 17375828, -1719061, -14830522, -31347892, -4625143, 20137492,
+-25046638, 11004780, -980863, 45574436, 1162862, 17685064, -85895584, -11518565, 4518306, 54460184,
+46052788, -1582159, -22860500, -7961796, 69280504, 28643136, -71961104, -95806224, -31981938, 17599702,
+152848224, 14198088, -18853296, 19127100, 7221451, -12622372, 31053150, -36381056, 791885, -14755897,
+7996692, -22572738, 20631412, 5643050, -12320114, -22716618, -11513197, -4399121, 6128919, -30897994,
+6641630, -15152108, -6361921, -24159192, -11871826, 19549080, -21110838, -7252589, -3386045, 9612674,
+5887327, -7931194, 10473815, -17540646, -2030983, 367757, 8828842, -11381126, 16101296, 12749610,
+-13466333, -14513768, -6378564, 24164560, -17940078, 7880728, 16940962, 4342749, -18099530, -6181532,
+6586869, -10361609, 7168301, 1327145, 2974802, -15363098, 2394444, -12320114, -1566589, 12793634,
+14189498, 12662637, -9913858, 12200391, 278099, -13215077, -3322694, 1044214, 15666430, -3452617,
+2211371, 16083579, -4624606, -17676474, 25289304, -9154186, 14285061, 13673565, 1257889, 6251325,
+-11555073, -8796630, -28560996, 55121612, 5561983, 3552475, -21407728, 13210246, -1218697, 14859513,
+11560978, 17284560, 2515240, 4787278, -8744553, 3220152, 16048145, -1014149, 9111773, -858457,
+3400540, 3860102, 6969122, -6058052, 12379706, -7481833, 1843615, -857383, 4734128, -635655,
+3147137, 9224516, 10522670, -4313221, 5124433, 2244121, -1303523, -3828427, 13796509, -3651259,
+3638374, -3373697, 7679939, 238908, -5235565, 13236552, -7092602, -2554432, 4441533, -5890011,
+-2667712, -1705639, 1595044, -2173254, 1309428, -1109712, -2229625, 4514548, -7190849, 5337571,
+4778688, -2828773, 6793028, -4223564, 7870528, -3448322, 2639258, 1151051, -2487323, 6245956,
+1573032, 574989, -330176, 8217346, -8399882, 10279467, -5480379, 104690, 5028870, 10259603,
+-49938660, -124109520, 19110994, 94195072, 87552368, 151929632, -38958576, -40933724, -103700376, -141643184,
+-29268592, 50913616, 54628764, 102832256, 55902220, 4169876, -26845156, -72219336, -51225000, -9104257,
+-8065949, 25362318, 23738822, 13461501, 8740795, 6614787, -3820910, -17991082, -1386738, 20107964,
+151934, 3970697, -1162326, -15654082, -11708081, -26396870, -25491168, 11218991, 10723996, 23310398,
+36058396, 26603028, 13247827, 4388383, -38781944, -27874874, -21170968, -21701396, -23657216, 4565550,
+15283641, 25951804, 33807300, 27448062, 6231461, -3692061, -22148072, -23193360, -13343390, -6988986,
+2418067, 3384971, 7813083, 320512, -6987912, 2171106, -11278047, 5841693, 10340671, 1020055,
+20393042, 24049670, 8260296, -3959960, -24847460, -32131724, -8114804, -99858, -733366, 0,
+0, 0, 0, },
},
{
{
7204808,
--112206, 2781528, 3014530, 1069447, 1095217, 1584306, 2418604, 4501663, 2129230, -317828,
--1715839, 302258, -2369211, -2297808, 426812, -415538, 963146, -445066, -933619, -2509872,
-3289408, 670015, -118648, -4460861, 390305, 3133179, 4474282, -2950643, -650151, -817118,
-2281165, -329102, -152471, 1020055, 359167, -621697, 1668058, -1816771, 807991, -4531191,
--3287798, 1495186, 1793149, 6454799, -2423435, -2421825, -1366873, 2668785, -2049773, -3800509,
--2625836, -4480725, 494458, -2971581, 2694018, 3472481, 849867, 1490891, -2051384, 1344862,
--309775, -5009006, 5896990, 3970161, 2848100, 1022739, -1912334, -848256, 2512019, -1515050,
-765578, 284542, 177167, -436476, -1467805, -4156992, -5884105, -124554, 1229434, 925565,
-4115116, 505196, -562104, -2726767, 6068252, 3742527, 144418, -791348, 6024766, 2028835,
--2000381, -5366562, 3344706, -1568200, 2582886, -5105643, 265751, -1241782, -3834332, -1048509,
--1962263, -725850, 222801, 3221, -2816962, -1707786, -505732, -546535, -1780264, 1817308,
--247497, -1841467, 3187403, -5433134, -2648384, 2584497, -3333968, 446677, -2100776, -2976412,
-1944547, 1844152, -1680943, 2046552, 3839164, 2224256, -2123861, -2362769, 337692, 796716,
--2494839, 2631741, 4230006, -3653407, -1283658, 2177549, 1484448, -822486, -1247151, -1734093,
-2259153, 810138, -2997887, 3355980, 1426466, -2538326, -2185602, 3593814, -2806224, -3047279,
--6527277, -4979478, 2285460, 7984881, -558883, -1377611, -3003793, 5187784, -2471754, -79457,
--3871913, -4116189, -5260798, -2346663, 4438849, -4197794, -1478543, -1331977, 1647120, -873489,
--5892159, 3387656, 1681480, 12014097, -1041530, 5752035, -940061, -44023, -376347, 862215,
--2328946, 4821638, -1045288, -651761, -2602750, -229244, -835908, 7351911, 1458678, -423591,
--6480569, -375810, -1131724, 2310156, -4069482, -843424, 1278827, 1284195, -1027034, -363462,
--2480344, -623307, -3010235, -1037772, 6235756, -1401233, 2063195, 3821984, -695248, -2880849,
--4225174, 1592359, 1147830, 1804960, 2830384, 3731253, 2763275, 2090575, -1090385, -562104,
--1284732, -5459441, -1357747, 119722, 3063922, 3373160, -1449552, 838592, -10471667, -2663954,
--354872, -2349884, -1682554, 3474629, -7407208, -6216965, -3716221, -2509872, 872415, 8017094,
--1931662, -149250, 816581, -5973226, -1694902, -5006322, -922881, 8512088, -835371, -4319127,
--2901787, -5906, 1590749, 1619203, -2594697, -11043435, -5407901, -1565516, -4394826, 292058,
-25233, 4338454, -3032247, 3848828, 787590, -2104534, -6030671, -4978941, 6610492, -5672041,
-3555159, 1031329, -3764539, -1398012, -3378529, -2345589, 3026878, -6053220, 2949032, 1036698,
--258772, 998580, 263067, -598611, -20938, -3036005, -4336307, 330712, -1422171, -3041911,
--1390496, -4710506, 5419175, 3893925, 832150, 4664872, 419833, -1783485, 5534602, -2784213,
--1966558, -1656784, 4214974, -3796751, -6864432, 8580808, 9738838, 2712272, 2688650, -2701535,
-4601521, 2313914, -5536213, 1818382, 3747896, -6696928, -5765994, 5962489, -5029407, -712428,
--3188476, 5998459, 1449015, -656593, -2042257, -23085, -3706020, 3608846, -1760937, 2187212,
--752693, -24159, 4069482, 1528472, 742493, -1506460, 4008815, 2408403, 1347009, -339302,
-4158602, -324270, 953483, -2505040, 5040681, 1051193, 2167885, 3479461, -9367861, -3165928,
--1621350, -3490735, -3063386, 932545, 5680094, -2370822, -1115618, -2998424, -983011, 1102196,
-2716030, -6694781, -29528, 2248416, 659278, -598611, 3292629, 1799591, -5780489, -1821603,
--889058, 3760244, -3593814, 5342940, 6411850, 2982318, 1792075, -2840584, 494995, 374199,
-10348187, -2325725, -493384, 3561602, 2187212, 1549410, 3264712, 9150428, -2988760, -1214939,
--9487583, -163209, -8200703, -10316511, 14496, 3902515, -13219372, 4024384, 3870839, 1961190,
--4252555, -3441343, -4607963, -1969779, -95563, -81604, 3751117, 5054640, -1086090, -5682779,
--3577708, 3644817, -6070400, -3210488, -5185636, 678068, -8167417, 3526705, 267362, -901943,
-904628, -629213, -2142652, -375273, 4677757, -6197101, 6679211, -5737003, -982474, 897111,
--3906273, -3304977, 2389076, 938987, -1489280, -3144453, 4880694, 1750736, -4034048, -7786776,
-472446, 1227287, 3909494, -668404, -2285460, -144418, 1879048, -2291902, 9795747, -4000225,
--2075543, -7917772, -5262946, 10783589, 4173635, -3410204, -1358820, -1163399, 2556579, 6507949,
--9584756, -5798743, 6031208, -5178657, -5533529, -5987185, -7141994, 4491462, -2115808, -541703,
--1968706, -80531, -7915625, -1821603, 2997887, 3429532, 417149, -4265440, -6188511, -5072357,
--6510097, 937377, 6787659, 691490, 1888712, 2206540, 1957431, -4516695, 3998615, 2522220,
--3649649, -2804077, -10289668, 1282048, 1720671, -7930120, -1087164, 2170032, -1926293, 765578,
--1176821, -8448738, 6556268, -7865696, 5579163, 189515, 2570538, -8796093, -5340792, -7867307,
--6612102, 1058710, -2668785, -2807835, -3934190, -42950, 3390340, -7175280, -592706, 2138357,
--2783139, -7923141, -5467494, -1535451, 1083406, 4090956, 1293322, -6332930, 6700686, -1920387,
--1786170, 7441031, -9164923, -2641942, 14674830, -12155831, -6152004, -7948911, 6607271, 2749853,
--3760781, 3303367, 486942, 8870181, 1100585, 507880, -7552700, 6157910, 9917616, 10172093,
-8744553, -4139812, -56371, 1635309, -4537633, -3183645, 2042257, 952409, -6787122, -3315715,
--2434173, 4003447, 177704, -5318244, -1832877, 2189360, 5293547, 878858, -745714, 388695,
--3123515, 199716, 635655, 918586, -7646653, 5302674, 6845641, 1515050, 4028143, 3808026,
--5901822, 10217190, 10012106, 1951526, -5047661, 3847217, -1006096, -8861591, -1093606, -2580739,
-1165010, 884226, 1206886, -5210332, -3483219, -11050414, -7937100, 496069, 7432441, -4833986,
-4235912, 1160178, -1550483, -8831527, 1263794, 5935645, -1134945, 5447629, 12472048, 3576097,
--278636, -13079249, 1865090, -4615479, -17659294, -13497472, 3926137, 552977, -2672007, 3647501,
-9160092, -964757, 5675800, 5040681, 3150896, -971200, -4241817, 4263292, -3537443, 900869,
--2964064, 5856725, 10444824, -8539469, -2083596, 971200, 4122095, 1382443, -2277943, -1211181,
--2816425, 159451, -3600793, 5682779, 1695975, -5875516, 7554848, -6600291, -1687922, 9025874,
-8149701, 6822556, -6721087, -4362076, -5947993, 8019241, 10888816, 286152, -1508070, 8599598,
--11375758, 1926830, 3874597, -705448, -9420474, 9543417, 3877282, 5083631, 9243306, 929324,
--11436424, 3681324, 5771363, -2625836, -104153, 8895951, -7864622, -7659001, -6172405, 1368484,
-11740830, 6368363, -599685, 12899934, -15493021, -5612449, 1128503, 8115878, -14280229, 14985678,
-6248641, -79994, -1228898, 1518808, 2790118, 8253317, -1253057, 1166084, -2294586, -1552094,
-4746476, 2607045, 5465346, 2588792, 3255048, -9648644, -3884798, 16973710, 1919314, 5251672,
-7232725, 2925947, -5436355, -10193031, 3475702, -4081830, 598074, 3981972, -5024575, -5847061,
-7667054, 9069360, -4395362, -2961380, 6969122, -8069707, 3818226, -6147709, 3043521, -5943698,
-9171366, 1535451, -1072131, 3451006, 15634218, 4549444, 6110665, -1490354, 871342, 2902324,
-11528229, -744103, 16476568, 730681, 7832410, -48855, 14835891, 5477157, 11048266, 8619999,
--1916092, -4749697, -1421097, -5460514, -6376953, 8904004, -1927367, -3180960, 1112933, 371515,
--4783520, -1852742, 831076, 4374424, -16106, 16619376, -4907537, -607738, -21442088, -1221381,
-10838350, -6373195, 9379672, -13880797, 1570884, 823023, -744103, -18274012, -1141924, -30107184,
-1066763, -3828963, -12690555, -2745558, 1360968, -7089918, 842887, 6849399, 883153, -7405598,
-1007170, -2753611, 6321118, -7952132, 207232, 8779987, 1937567, 66572, -1593433, 6524056,
--4836133, 537, -169114, 4790499, 958851, -10783052, -5409512, -7869454, 8173323, -19543712,
-8993662, 6546604, 6364605, 2648384, 1398012, -9129490, 5862094, -13096966, -2801393, -3569118,
--2410014, -1599875, 908386, 2781528, -9131100, -4815732, 15946677, 5374078, -5440650, -7932268,
-2064269, -4106526, 5224828, -4610648, -431644, -6588480, 14927696, 5657009, -3983045, -817654,
--5860483, -163746, 11052025, 11154567, 6585796, 5876052, -5074504, 6503118, 10771241, -7629473,
--16106, -20104206, 11890080, 8088497, -2607045, 4845797, -1014149, 1757715, 7532836, -4415764,
-11623255, -10090489, 1301912, 12840342, 5906654, 870268, 10168872, -3405909, 4861366, 2651069,
-5621039, 8748848, -4782983, -1014149, 16425029, 8040179, 26307, 2212982, -10492605, 14754823,
--12046310, -823023, 13341242, 3958886, 14340896, -8820252, 2652679, -663572, -2982318, 1749125,
--13021267, -9582072, 13127568, -6484864, -2264522, -4482872, -13849122, 9942312, -2903398, -2619930,
--5859946, 5970542, 15031849, -11778948, -1831267, 9451612, -10252087, -5091147, 9292699, 11783780,
--19648938, -5878200, -1148367, 8074539, 329102, 9459129, -1703491, 10324028, 22167936, 4070555,
--13470091, -4991826, 4184909, -29671244, 725850, -114890, -4791036, -1748589, 13398150, -22498112,
-4712653, 10038949, -8310225, 8847633, 17002164, 3896609, -15967615, 3922379, -4102768, -665720,
--15628312, -5081483, 14077292, -1995549, 12914967, -3835943, -4609574, 1693828, -11032160, -6624987,
--7937637, -6328098, -4333085, 10122164, -11700565, 1412507, 20482700, 13303124, 4658429, -21320218,
-3521873, 13101261, 5797132, 249108, -7306813, -9612674, -22065932, -15941845, 3332895, -8217346,
--7398618, -1090385, 9708774, 6038187, -6415071, -418222, 13795435, -5937256, -1938104, -163746,
-18142478, -140123, -429497, 8167417, 3365107, -21092048, 6296422, 4910222, 651224, -17679696,
-7956427, 8913131, -6301254, -5398237, -6444062, 23307714, 1445257, -4518843, -137439, 10375030,
--4744865, 2955474, -2295123, 2542621, 8975945, -15881715, 17105780, 19245748, 5599564, 8195335,
--6268505, 10937671, 25425132, 891743, -2660732, -4581657, 10958072, -3754338, -5866926, -2093260,
-4038343, -12533788, 5820755, -11055246, 12883828, 2859375, 12972412, -8027831, 11843372, 3401614,
-15427523, 2439542, 3429532, -5541582, 9688372, 2241973, -2780455, 13492640, -5104032, -9915469,
-19516868, 15178414, 5888937, 14296336, 21314848, 25301652, -7789997, -8377871, -8878771, 2800856,
--11621645, 13415867, -1599875, -1791001, -19598472, 3976066, 22400402, 22069690, -857920, -3765076,
--15638513, -657667, 14753213, -8621073, -9395778, 7161321, 1089311, -9547175, 2527588, -3046206,
--31339302, -22196390, 10095321, 3317325, -16943110, 645319, 5959267, -15472083, -10194105, -7221988,
-16181826, 6779069, 4418985, -6444599, -5335960, -5306432, -11887933, -15283641, -26422638, 12253005,
-10126996, -6269042, 27384712, 12824772, 26235808, 17933636, 566399, -9645423, 6065568, 2514703,
-11256036, 13482976, 14605036, -3103651, -4020090, 5930813, -8404714, -2460480, -7568806, -12627741,
--20730196, -6450504, 18523120, -5674726, -9211631, -11968463, 6568079, 11254962, 6658273, 60130,
-10337449, 22043382, -14924474, -6895570, -11808476, -8271034, -23296440, -6040335, 4172561, -10642929,
--9183714, -25906706, -37340444, 3303367, -25065430, -37917580, -28335510, -11971684, 22811646, 7727183,
-13450227, 10420664, -26060250, -11148661, 1091459, 11742977, 2432025, -58782532, -10126459, 17395154,
--20685636, 6897718, -8684424, -32466732, -10762651, 32293322, 41192496, -23629300, -193274, -8970576,
--35380868, -28691456, -26844620, -28949690, -15702400, -19383188, -2393908, 4551592, -5697811, 5665599,
-5632313, -12730283, -3948686, -16972638, 5688684, -25923886, -22842784, 3779034, 3001645, -8201777,
--8856759, 17606682, -6412386, 25026774, 5142687, 23044648, -17442936, 9068287, 6266894, 28183038,
-15288473, 8718784, 2181844, 2714956, -4204773, 6928856, 11676942, -11581379, -14123463, 18973018,
--3506304, -28286654, -50997368, -62699008, -44290776, 5106716, -644245, -58655832, 17779554, 7332583,
-13578539, -21587580, 1890859, 4254165, 1957431, 26559540, 28943248, 56655988, 19008452, -33475512,
--40960568, -25614648, -10871636, -5327370, 31766652, -9302899, -61653720, -18134426, 49786188, -7658464,
-10725607, 6459631, 8926016, 16891570, 13987635, 4288525, -10381473, -4466766, 2115272, -11659762,
--2886218, 17681844, -16866874, -10664941, -16877074, -4802311, 2593087, 1284195, 4165582, 7786776,
--12807056, 10376104, 27387396, -1372779, -16197395, 584652, -10602127, -4517232, 16294569, -18131742,
-1947231, 4548907, 20019916, 28038620, -18318572, -11399917, 11340861, 651224, 3343632, 2473364,
--11975979, -32054952, -5287642, -15369540, 28714004, -54707684, -35020628, -15380815, -5404680, 14812268,
-3797825, -19715510, -2593624, -22529788, -22975390, -8983461, -16332687, 2760053, 14925011, 64623688,
-12985834, -9461276, -40586368, -33590404, 11337103, 519691, -38021196, 24607478, 20038706, -23132694,
--74254080, 8606578, 9416179, -4109747, -3031710, -7264401, -22758494, 6530498, -6534256, 35327180,
--40123048, -9394704, 36915244, -3383897, -28401008, -4803921, 20856362, 26397942, 14991583, -6546067,
-17772574, -16627429, 11229192, -7629473, -7518341, -14551349, 19512036, 13460964, -16777216, -8021389,
--4630512, 20810190, -4714801, 955630, -16973174, 13589813, 6950331, -17846662, 27004606, -31675,
--29830696, 22373558, -32254668, -16743393, 23396834, -58061516, -39458940, 29514478, -23032836, 21544630,
--39556112, 6704444, 9432822, -21086678, -3194919, -2872796, -41288056, -9933186, 33911452, 39131984,
--50754164, -16629040, 8971650, -38284800, 42135776, 46309412, 747324, -69804496, -42710764, 71041984,
--46331424, -9471477, 49183280, -36859408, -83799104, -19746112, -10308458, -39837432, -37553584, -932545,
--47378320, -13984414, -20122458, -19001472, -14273250, 30843770, -3306588, -9846749, -12911745, 6040872,
--16521665, -39528196, 30778272, 9649181, 26636850, 8296266, 27571542, -10879689, -16662862, 6070937,
--28336046, 22232898, -25603374, -5479305, 17432198, -19659676, -3761318, -11932493, -30949534, 4745939,
--23220740, -17073568, -20156282, -15283641, -8884677, -20991116, 4329864, 23400056, -15112379, -5528697,
-3609920, 21619254, -9008157, 7768522, -21194590, 35997732, 12121471, 15592879, 10801843, 34637836,
--946503, -39997956, 10060424, 15105937, -9970230, 420907, 22597434, -27394912, -26382910, -31738734,
-29728154, 9398462, -38343856, 16963510, -24541444, -3422015, -35264904, 18900540, 29030220, 8841190,
--38408820, 28485834, 35479116, 66463008, -15730855, 33053532, 6616934, -15467251, -29387776, -17082158,
-38776040, -12458626, 7397545, 15124190, -3650722, 35686884, -4978941, 28033788, 29393682, -35623532,
-18690088, -9228274, 1127966, 13252122, 11148661, -1093606, 6075768, 10739566, 35940288, 36798208,
-28566902, -20607790, -6802692, -48661444, -1209033, 11615739, 22267258, 5171141, -40094056, 17766132,
--23972896, 31391916, -28039158, -19689740, 2263448, -23577760, -3854733, -13576928, 48371532, -26250304,
--12738336, -50415400, -16307454, -26419418, 71393632, 43459700, -15000173, -47925928, -51549808, -30478162,
-35352948, 46446312, 23240068, 7007239, -62186296, -28488518, 19750408, 17598092, 1856500, 22650584,
--14041859, -40368936, 17459042, -68720016, 72318656, -6886980, -53119080, 112036904, 7449084, 2794413,
--28978144, 20222316, -41081900, 26015154, -16655346, 42458972, -18571438, -1648731, 24453396, 4565014,
-2574833, -10580652, -8916889, 1362578, -15629386, 18030272, -1544041, 19115826, -14253386, -14373645,
-5539434, 949188, -14413910, 9648107, -1272921, 8427263, -3962644, -3903589, 8562017, -7393786,
-89121, 5997922, -2325725, -3498788, 30663920, -1981591, -9206799, -5306432, 15040439, -1274532,
--15396921, 8638253, 18429168, 3498251, 1406602, -10428181, 4723391, -8499203, 9132711, 21097954,
--6359773, 9508521, -6742025, -2660732, -7408282, -4496294, 7092602, 6444062, -10799158, 6948720,
-4009352, -2250026, -10431402, 1290638, 6757594, -10270341, 15916612, 9829033, -19437412, 3928285,
--16994648, -25865366, 20564304, -11812234, 25107306, -23795192, 52173652, 10334228, 13291850, -5957120,
-5348308, -908922, 10407243, 3665755, 22619446, 2089502, -11266236, 7808251, -7116761, 3954591,
-5170604, -9522479, 1213328, 2990908, -10212895, 10490994, 3246459, -3926137, 14071387, -4235375,
-5996848, -3550864, 3213709, 3082176, 1955821, -1152125, -3207804, -1300838, 2626373, 849867,
--1459752, -5986648, 5633387, -3856881, 3215320, 4773320, -3639448, 1444183, -3330747, 1685775,
--5749351, -10195179, 11891154, -5443334, -1980517, 5158256, 3053722, -1414118, 2179159, 9946607,
--9505299, 4978941, -2959233, 8660802, -7770133, 5434744, 3524558, -1129040, 3035468, 611496,
-1294933, 4402879, -4298189, 3483755, 4128537, -1196685, 1000191, 7425999, 730144, 2587718,
--5856725, 11105175, 9595494, -45953464, -113883744, 24428700, 94386736, 63797980, 133190696, -43737800,
--37487548, -76841256, -122850560, -12215961, 38009924, 50306952, 65538516, 33083060, 3400004, -10813654,
--28681792, -40606768, -6401649, -10872710, 3726421, 9281424, -760209, 2323041, 4616016, 2171643,
-15763067, 19079318, 11543798, -2165737, 1884417, -14078903, -29942902, -31509490, -15815680, -20636244,
-16694001, 31496068, 32983738, 36703716, 19690278, -5812702, -14844481, -26782880, -28825674, -19608674,
--11524471, -1114007, 6757594, 13990856, 14387604, 12676059, 10297721, -1607392, 2433636, -2910914,
-961536, -2086817, -1940252, -512712, -10555956, -10171556, -8129836, -15466714, -452045, -2456185,
-1549946, 27749784, 35264364, 12904766, 11763379, -8578660, -19718732, -11546483, -22576496, -11243151,
-2200634, -286152, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-112206, 2781528, 3014530, 1069447, 1095217, 1584306, 2418604, 4501663, 2129230, -317828,
+-1715839, 302258, -2369211, -2297808, 426812, -415538, 963146, -445066, -933619, -2509872,
+3289408, 670015, -118648, -4460861, 390305, 3133179, 4474282, -2950643, -650151, -817118,
+2281165, -329102, -152471, 1020055, 359167, -621697, 1668058, -1816771, 807991, -4531191,
+-3287798, 1495186, 1793149, 6454799, -2423435, -2421825, -1366873, 2668785, -2049773, -3800509,
+-2625836, -4480725, 494458, -2971581, 2694018, 3472481, 849867, 1490891, -2051384, 1344862,
+-309775, -5009006, 5896990, 3970161, 2848100, 1022739, -1912334, -848256, 2512019, -1515050,
+765578, 284542, 177167, -436476, -1467805, -4156992, -5884105, -124554, 1229434, 925565,
+4115116, 505196, -562104, -2726767, 6068252, 3742527, 144418, -791348, 6024766, 2028835,
+-2000381, -5366562, 3344706, -1568200, 2582886, -5105643, 265751, -1241782, -3834332, -1048509,
+-1962263, -725850, 222801, 3221, -2816962, -1707786, -505732, -546535, -1780264, 1817308,
+-247497, -1841467, 3187403, -5433134, -2648384, 2584497, -3333968, 446677, -2100776, -2976412,
+1944547, 1844152, -1680943, 2046552, 3839164, 2224256, -2123861, -2362769, 337692, 796716,
+-2494839, 2631741, 4230006, -3653407, -1283658, 2177549, 1484448, -822486, -1247151, -1734093,
+2259153, 810138, -2997887, 3355980, 1426466, -2538326, -2185602, 3593814, -2806224, -3047279,
+-6527277, -4979478, 2285460, 7984881, -558883, -1377611, -3003793, 5187784, -2471754, -79457,
+-3871913, -4116189, -5260798, -2346663, 4438849, -4197794, -1478543, -1331977, 1647120, -873489,
+-5892159, 3387656, 1681480, 12014097, -1041530, 5752035, -940061, -44023, -376347, 862215,
+-2328946, 4821638, -1045288, -651761, -2602750, -229244, -835908, 7351911, 1458678, -423591,
+-6480569, -375810, -1131724, 2310156, -4069482, -843424, 1278827, 1284195, -1027034, -363462,
+-2480344, -623307, -3010235, -1037772, 6235756, -1401233, 2063195, 3821984, -695248, -2880849,
+-4225174, 1592359, 1147830, 1804960, 2830384, 3731253, 2763275, 2090575, -1090385, -562104,
+-1284732, -5459441, -1357747, 119722, 3063922, 3373160, -1449552, 838592, -10471667, -2663954,
+-354872, -2349884, -1682554, 3474629, -7407208, -6216965, -3716221, -2509872, 872415, 8017094,
+-1931662, -149250, 816581, -5973226, -1694902, -5006322, -922881, 8512088, -835371, -4319127,
+-2901787, -5906, 1590749, 1619203, -2594697, -11043435, -5407901, -1565516, -4394826, 292058,
+25233, 4338454, -3032247, 3848828, 787590, -2104534, -6030671, -4978941, 6610492, -5672041,
+3555159, 1031329, -3764539, -1398012, -3378529, -2345589, 3026878, -6053220, 2949032, 1036698,
+-258772, 998580, 263067, -598611, -20938, -3036005, -4336307, 330712, -1422171, -3041911,
+-1390496, -4710506, 5419175, 3893925, 832150, 4664872, 419833, -1783485, 5534602, -2784213,
+-1966558, -1656784, 4214974, -3796751, -6864432, 8580808, 9738838, 2712272, 2688650, -2701535,
+4601521, 2313914, -5536213, 1818382, 3747896, -6696928, -5765994, 5962489, -5029407, -712428,
+-3188476, 5998459, 1449015, -656593, -2042257, -23085, -3706020, 3608846, -1760937, 2187212,
+-752693, -24159, 4069482, 1528472, 742493, -1506460, 4008815, 2408403, 1347009, -339302,
+4158602, -324270, 953483, -2505040, 5040681, 1051193, 2167885, 3479461, -9367861, -3165928,
+-1621350, -3490735, -3063386, 932545, 5680094, -2370822, -1115618, -2998424, -983011, 1102196,
+2716030, -6694781, -29528, 2248416, 659278, -598611, 3292629, 1799591, -5780489, -1821603,
+-889058, 3760244, -3593814, 5342940, 6411850, 2982318, 1792075, -2840584, 494995, 374199,
+10348187, -2325725, -493384, 3561602, 2187212, 1549410, 3264712, 9150428, -2988760, -1214939,
+-9487583, -163209, -8200703, -10316511, 14496, 3902515, -13219372, 4024384, 3870839, 1961190,
+-4252555, -3441343, -4607963, -1969779, -95563, -81604, 3751117, 5054640, -1086090, -5682779,
+-3577708, 3644817, -6070400, -3210488, -5185636, 678068, -8167417, 3526705, 267362, -901943,
+904628, -629213, -2142652, -375273, 4677757, -6197101, 6679211, -5737003, -982474, 897111,
+-3906273, -3304977, 2389076, 938987, -1489280, -3144453, 4880694, 1750736, -4034048, -7786776,
+472446, 1227287, 3909494, -668404, -2285460, -144418, 1879048, -2291902, 9795747, -4000225,
+-2075543, -7917772, -5262946, 10783589, 4173635, -3410204, -1358820, -1163399, 2556579, 6507949,
+-9584756, -5798743, 6031208, -5178657, -5533529, -5987185, -7141994, 4491462, -2115808, -541703,
+-1968706, -80531, -7915625, -1821603, 2997887, 3429532, 417149, -4265440, -6188511, -5072357,
+-6510097, 937377, 6787659, 691490, 1888712, 2206540, 1957431, -4516695, 3998615, 2522220,
+-3649649, -2804077, -10289668, 1282048, 1720671, -7930120, -1087164, 2170032, -1926293, 765578,
+-1176821, -8448738, 6556268, -7865696, 5579163, 189515, 2570538, -8796093, -5340792, -7867307,
+-6612102, 1058710, -2668785, -2807835, -3934190, -42950, 3390340, -7175280, -592706, 2138357,
+-2783139, -7923141, -5467494, -1535451, 1083406, 4090956, 1293322, -6332930, 6700686, -1920387,
+-1786170, 7441031, -9164923, -2641942, 14674830, -12155831, -6152004, -7948911, 6607271, 2749853,
+-3760781, 3303367, 486942, 8870181, 1100585, 507880, -7552700, 6157910, 9917616, 10172093,
+8744553, -4139812, -56371, 1635309, -4537633, -3183645, 2042257, 952409, -6787122, -3315715,
+-2434173, 4003447, 177704, -5318244, -1832877, 2189360, 5293547, 878858, -745714, 388695,
+-3123515, 199716, 635655, 918586, -7646653, 5302674, 6845641, 1515050, 4028143, 3808026,
+-5901822, 10217190, 10012106, 1951526, -5047661, 3847217, -1006096, -8861591, -1093606, -2580739,
+1165010, 884226, 1206886, -5210332, -3483219, -11050414, -7937100, 496069, 7432441, -4833986,
+4235912, 1160178, -1550483, -8831527, 1263794, 5935645, -1134945, 5447629, 12472048, 3576097,
+-278636, -13079249, 1865090, -4615479, -17659294, -13497472, 3926137, 552977, -2672007, 3647501,
+9160092, -964757, 5675800, 5040681, 3150896, -971200, -4241817, 4263292, -3537443, 900869,
+-2964064, 5856725, 10444824, -8539469, -2083596, 971200, 4122095, 1382443, -2277943, -1211181,
+-2816425, 159451, -3600793, 5682779, 1695975, -5875516, 7554848, -6600291, -1687922, 9025874,
+8149701, 6822556, -6721087, -4362076, -5947993, 8019241, 10888816, 286152, -1508070, 8599598,
+-11375758, 1926830, 3874597, -705448, -9420474, 9543417, 3877282, 5083631, 9243306, 929324,
+-11436424, 3681324, 5771363, -2625836, -104153, 8895951, -7864622, -7659001, -6172405, 1368484,
+11740830, 6368363, -599685, 12899934, -15493021, -5612449, 1128503, 8115878, -14280229, 14985678,
+6248641, -79994, -1228898, 1518808, 2790118, 8253317, -1253057, 1166084, -2294586, -1552094,
+4746476, 2607045, 5465346, 2588792, 3255048, -9648644, -3884798, 16973710, 1919314, 5251672,
+7232725, 2925947, -5436355, -10193031, 3475702, -4081830, 598074, 3981972, -5024575, -5847061,
+7667054, 9069360, -4395362, -2961380, 6969122, -8069707, 3818226, -6147709, 3043521, -5943698,
+9171366, 1535451, -1072131, 3451006, 15634218, 4549444, 6110665, -1490354, 871342, 2902324,
+11528229, -744103, 16476568, 730681, 7832410, -48855, 14835891, 5477157, 11048266, 8619999,
+-1916092, -4749697, -1421097, -5460514, -6376953, 8904004, -1927367, -3180960, 1112933, 371515,
+-4783520, -1852742, 831076, 4374424, -16106, 16619376, -4907537, -607738, -21442088, -1221381,
+10838350, -6373195, 9379672, -13880797, 1570884, 823023, -744103, -18274012, -1141924, -30107184,
+1066763, -3828963, -12690555, -2745558, 1360968, -7089918, 842887, 6849399, 883153, -7405598,
+1007170, -2753611, 6321118, -7952132, 207232, 8779987, 1937567, 66572, -1593433, 6524056,
+-4836133, 537, -169114, 4790499, 958851, -10783052, -5409512, -7869454, 8173323, -19543712,
+8993662, 6546604, 6364605, 2648384, 1398012, -9129490, 5862094, -13096966, -2801393, -3569118,
+-2410014, -1599875, 908386, 2781528, -9131100, -4815732, 15946677, 5374078, -5440650, -7932268,
+2064269, -4106526, 5224828, -4610648, -431644, -6588480, 14927696, 5657009, -3983045, -817654,
+-5860483, -163746, 11052025, 11154567, 6585796, 5876052, -5074504, 6503118, 10771241, -7629473,
+-16106, -20104206, 11890080, 8088497, -2607045, 4845797, -1014149, 1757715, 7532836, -4415764,
+11623255, -10090489, 1301912, 12840342, 5906654, 870268, 10168872, -3405909, 4861366, 2651069,
+5621039, 8748848, -4782983, -1014149, 16425029, 8040179, 26307, 2212982, -10492605, 14754823,
+-12046310, -823023, 13341242, 3958886, 14340896, -8820252, 2652679, -663572, -2982318, 1749125,
+-13021267, -9582072, 13127568, -6484864, -2264522, -4482872, -13849122, 9942312, -2903398, -2619930,
+-5859946, 5970542, 15031849, -11778948, -1831267, 9451612, -10252087, -5091147, 9292699, 11783780,
+-19648938, -5878200, -1148367, 8074539, 329102, 9459129, -1703491, 10324028, 22167936, 4070555,
+-13470091, -4991826, 4184909, -29671244, 725850, -114890, -4791036, -1748589, 13398150, -22498112,
+4712653, 10038949, -8310225, 8847633, 17002164, 3896609, -15967615, 3922379, -4102768, -665720,
+-15628312, -5081483, 14077292, -1995549, 12914967, -3835943, -4609574, 1693828, -11032160, -6624987,
+-7937637, -6328098, -4333085, 10122164, -11700565, 1412507, 20482700, 13303124, 4658429, -21320218,
+3521873, 13101261, 5797132, 249108, -7306813, -9612674, -22065932, -15941845, 3332895, -8217346,
+-7398618, -1090385, 9708774, 6038187, -6415071, -418222, 13795435, -5937256, -1938104, -163746,
+18142478, -140123, -429497, 8167417, 3365107, -21092048, 6296422, 4910222, 651224, -17679696,
+7956427, 8913131, -6301254, -5398237, -6444062, 23307714, 1445257, -4518843, -137439, 10375030,
+-4744865, 2955474, -2295123, 2542621, 8975945, -15881715, 17105780, 19245748, 5599564, 8195335,
+-6268505, 10937671, 25425132, 891743, -2660732, -4581657, 10958072, -3754338, -5866926, -2093260,
+4038343, -12533788, 5820755, -11055246, 12883828, 2859375, 12972412, -8027831, 11843372, 3401614,
+15427523, 2439542, 3429532, -5541582, 9688372, 2241973, -2780455, 13492640, -5104032, -9915469,
+19516868, 15178414, 5888937, 14296336, 21314848, 25301652, -7789997, -8377871, -8878771, 2800856,
+-11621645, 13415867, -1599875, -1791001, -19598472, 3976066, 22400402, 22069690, -857920, -3765076,
+-15638513, -657667, 14753213, -8621073, -9395778, 7161321, 1089311, -9547175, 2527588, -3046206,
+-31339302, -22196390, 10095321, 3317325, -16943110, 645319, 5959267, -15472083, -10194105, -7221988,
+16181826, 6779069, 4418985, -6444599, -5335960, -5306432, -11887933, -15283641, -26422638, 12253005,
+10126996, -6269042, 27384712, 12824772, 26235808, 17933636, 566399, -9645423, 6065568, 2514703,
+11256036, 13482976, 14605036, -3103651, -4020090, 5930813, -8404714, -2460480, -7568806, -12627741,
+-20730196, -6450504, 18523120, -5674726, -9211631, -11968463, 6568079, 11254962, 6658273, 60130,
+10337449, 22043382, -14924474, -6895570, -11808476, -8271034, -23296440, -6040335, 4172561, -10642929,
+-9183714, -25906706, -37340444, 3303367, -25065430, -37917580, -28335510, -11971684, 22811646, 7727183,
+13450227, 10420664, -26060250, -11148661, 1091459, 11742977, 2432025, -58782532, -10126459, 17395154,
+-20685636, 6897718, -8684424, -32466732, -10762651, 32293322, 41192496, -23629300, -193274, -8970576,
+-35380868, -28691456, -26844620, -28949690, -15702400, -19383188, -2393908, 4551592, -5697811, 5665599,
+5632313, -12730283, -3948686, -16972638, 5688684, -25923886, -22842784, 3779034, 3001645, -8201777,
+-8856759, 17606682, -6412386, 25026774, 5142687, 23044648, -17442936, 9068287, 6266894, 28183038,
+15288473, 8718784, 2181844, 2714956, -4204773, 6928856, 11676942, -11581379, -14123463, 18973018,
+-3506304, -28286654, -50997368, -62699008, -44290776, 5106716, -644245, -58655832, 17779554, 7332583,
+13578539, -21587580, 1890859, 4254165, 1957431, 26559540, 28943248, 56655988, 19008452, -33475512,
+-40960568, -25614648, -10871636, -5327370, 31766652, -9302899, -61653720, -18134426, 49786188, -7658464,
+10725607, 6459631, 8926016, 16891570, 13987635, 4288525, -10381473, -4466766, 2115272, -11659762,
+-2886218, 17681844, -16866874, -10664941, -16877074, -4802311, 2593087, 1284195, 4165582, 7786776,
+-12807056, 10376104, 27387396, -1372779, -16197395, 584652, -10602127, -4517232, 16294569, -18131742,
+1947231, 4548907, 20019916, 28038620, -18318572, -11399917, 11340861, 651224, 3343632, 2473364,
+-11975979, -32054952, -5287642, -15369540, 28714004, -54707684, -35020628, -15380815, -5404680, 14812268,
+3797825, -19715510, -2593624, -22529788, -22975390, -8983461, -16332687, 2760053, 14925011, 64623688,
+12985834, -9461276, -40586368, -33590404, 11337103, 519691, -38021196, 24607478, 20038706, -23132694,
+-74254080, 8606578, 9416179, -4109747, -3031710, -7264401, -22758494, 6530498, -6534256, 35327180,
+-40123048, -9394704, 36915244, -3383897, -28401008, -4803921, 20856362, 26397942, 14991583, -6546067,
+17772574, -16627429, 11229192, -7629473, -7518341, -14551349, 19512036, 13460964, -16777216, -8021389,
+-4630512, 20810190, -4714801, 955630, -16973174, 13589813, 6950331, -17846662, 27004606, -31675,
+-29830696, 22373558, -32254668, -16743393, 23396834, -58061516, -39458940, 29514478, -23032836, 21544630,
+-39556112, 6704444, 9432822, -21086678, -3194919, -2872796, -41288056, -9933186, 33911452, 39131984,
+-50754164, -16629040, 8971650, -38284800, 42135776, 46309412, 747324, -69804496, -42710764, 71041984,
+-46331424, -9471477, 49183280, -36859408, -83799104, -19746112, -10308458, -39837432, -37553584, -932545,
+-47378320, -13984414, -20122458, -19001472, -14273250, 30843770, -3306588, -9846749, -12911745, 6040872,
+-16521665, -39528196, 30778272, 9649181, 26636850, 8296266, 27571542, -10879689, -16662862, 6070937,
+-28336046, 22232898, -25603374, -5479305, 17432198, -19659676, -3761318, -11932493, -30949534, 4745939,
+-23220740, -17073568, -20156282, -15283641, -8884677, -20991116, 4329864, 23400056, -15112379, -5528697,
+3609920, 21619254, -9008157, 7768522, -21194590, 35997732, 12121471, 15592879, 10801843, 34637836,
+-946503, -39997956, 10060424, 15105937, -9970230, 420907, 22597434, -27394912, -26382910, -31738734,
+29728154, 9398462, -38343856, 16963510, -24541444, -3422015, -35264904, 18900540, 29030220, 8841190,
+-38408820, 28485834, 35479116, 66463008, -15730855, 33053532, 6616934, -15467251, -29387776, -17082158,
+38776040, -12458626, 7397545, 15124190, -3650722, 35686884, -4978941, 28033788, 29393682, -35623532,
+18690088, -9228274, 1127966, 13252122, 11148661, -1093606, 6075768, 10739566, 35940288, 36798208,
+28566902, -20607790, -6802692, -48661444, -1209033, 11615739, 22267258, 5171141, -40094056, 17766132,
+-23972896, 31391916, -28039158, -19689740, 2263448, -23577760, -3854733, -13576928, 48371532, -26250304,
+-12738336, -50415400, -16307454, -26419418, 71393632, 43459700, -15000173, -47925928, -51549808, -30478162,
+35352948, 46446312, 23240068, 7007239, -62186296, -28488518, 19750408, 17598092, 1856500, 22650584,
+-14041859, -40368936, 17459042, -68720016, 72318656, -6886980, -53119080, 112036904, 7449084, 2794413,
+-28978144, 20222316, -41081900, 26015154, -16655346, 42458972, -18571438, -1648731, 24453396, 4565014,
+2574833, -10580652, -8916889, 1362578, -15629386, 18030272, -1544041, 19115826, -14253386, -14373645,
+5539434, 949188, -14413910, 9648107, -1272921, 8427263, -3962644, -3903589, 8562017, -7393786,
+89121, 5997922, -2325725, -3498788, 30663920, -1981591, -9206799, -5306432, 15040439, -1274532,
+-15396921, 8638253, 18429168, 3498251, 1406602, -10428181, 4723391, -8499203, 9132711, 21097954,
+-6359773, 9508521, -6742025, -2660732, -7408282, -4496294, 7092602, 6444062, -10799158, 6948720,
+4009352, -2250026, -10431402, 1290638, 6757594, -10270341, 15916612, 9829033, -19437412, 3928285,
+-16994648, -25865366, 20564304, -11812234, 25107306, -23795192, 52173652, 10334228, 13291850, -5957120,
+5348308, -908922, 10407243, 3665755, 22619446, 2089502, -11266236, 7808251, -7116761, 3954591,
+5170604, -9522479, 1213328, 2990908, -10212895, 10490994, 3246459, -3926137, 14071387, -4235375,
+5996848, -3550864, 3213709, 3082176, 1955821, -1152125, -3207804, -1300838, 2626373, 849867,
+-1459752, -5986648, 5633387, -3856881, 3215320, 4773320, -3639448, 1444183, -3330747, 1685775,
+-5749351, -10195179, 11891154, -5443334, -1980517, 5158256, 3053722, -1414118, 2179159, 9946607,
+-9505299, 4978941, -2959233, 8660802, -7770133, 5434744, 3524558, -1129040, 3035468, 611496,
+1294933, 4402879, -4298189, 3483755, 4128537, -1196685, 1000191, 7425999, 730144, 2587718,
+-5856725, 11105175, 9595494, -45953464, -113883744, 24428700, 94386736, 63797980, 133190696, -43737800,
+-37487548, -76841256, -122850560, -12215961, 38009924, 50306952, 65538516, 33083060, 3400004, -10813654,
+-28681792, -40606768, -6401649, -10872710, 3726421, 9281424, -760209, 2323041, 4616016, 2171643,
+15763067, 19079318, 11543798, -2165737, 1884417, -14078903, -29942902, -31509490, -15815680, -20636244,
+16694001, 31496068, 32983738, 36703716, 19690278, -5812702, -14844481, -26782880, -28825674, -19608674,
+-11524471, -1114007, 6757594, 13990856, 14387604, 12676059, 10297721, -1607392, 2433636, -2910914,
+961536, -2086817, -1940252, -512712, -10555956, -10171556, -8129836, -15466714, -452045, -2456185,
+1549946, 27749784, 35264364, 12904766, 11763379, -8578660, -19718732, -11546483, -22576496, -11243151,
+2200634, -286152, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
{
6260452,
-49392, 8157217, 379568, -2594160, -643708, 55835, 751619, 3802657, -1575716, 1945083,
--3844533, 1293859, -403727, 2646774, -1793149, 3823595, 978179, -1950452, 274878, -3888556,
-4334696, -404264, -886911, -2147, 639413, 909996, 661425, 3200288, -5628555, 420907,
-3550327, 702764, -279710, -625455, -325344, -130460, -465467, -5762236, -478352, 1702955,
--2002529, 1939715, -4516158, 22549, 2531883, -2654827, 5084705, 4920959, 3670050, 3128347,
-4027069, 497679, 2022393, -1910187, -810138, -3316252, -1329829, -183610, -2893197, -971736,
--4112968, 578747, -3486977, -4562329, 864899, -3337727, 2522757, 367757, -3713536, 2554969,
-1621887, -4126390, 1232656, 89121, 4827543, 1418950, -6394133, 849867, 2075543, 2015950,
-10150618, 2787971, 2167885, -2957085, 417149, -5089536, 1232656, 4756677, -2363306, 270583,
--968515, -2478196, -4041564, 3189550, -6779069, -3382287, -3391414, 3742527, 4063576, 2185602,
-988379, 2985002, 2436857, 4894652, -1661079, 1756105, 3025268, 704375, 1007707, -3456375,
--1503239, -1401770, -1312113, 3344169, -6243272, 1126355, -2155000, 6641630, 169114, -1093069,
--1633698, -2610803, -890669, -2724083, -8244727, -2509335, -1609539, -1224603, -1846299, 969052,
--1544041, -266288, -532039, 3020436, 1289027, -234076, 1838246, -1467268, 3529926, -2160369,
--3862786, 3886946, 3860102, -1489280, -3736622, 568009, 1951526, 1767916, 1647120, -1461900,
--169651, 1793686, 1486059, 9223979, -1644436, -805306, 1050120, 2597918, -6679748, 4274566,
--7941932, -286689, -3811784, -493921, -2499134, -527207, -561567, 4103841, -3330747, 4439923,
--4483946, -4881231, 2163590, 6747394, -7794829, -2094870, -3740917, 144418, -1919314, 2214593,
-2873333, 1518271, 2924873, -4467840, 220654, 6504728, 2569464, 918049, -4597763, -6538014,
--3946538, 1127966, -3348464, -1806571, 1347009, 4430259, -3840775, -3709778, 1598802, -2675765,
-4998805, 1789391, -467078, 3629247, 3358665, 137439, 5607080, 2903398, 1779727, 1632088,
-3683471, 5912560, -3755412, 1273995, 1604707, -3855270, 379568, 3482682, -1263794, 8516383,
--2558727, -1968169, -1734630, 3319473, 4202089, -5095979, -2239289, 1787243, -11702175, -1845762,
--2565706, -2036888, -998580, -1379221, 6308770, 7538742, -1656784, 6162741, 2377801, -3312494,
-1637993, -5050882, 947040, 1142998, -6829535, -956167, 1108102, 1262184, 4791036, -854699,
-4163971, -2707440, -5240397, -5507222, -1564442, -2758980, -4197794, 4427038, -1692754, -790274,
--749472, 965831, 2390149, -6692633, 32212, 988379, -3195993, 8080444, 623307, -1941325,
--1755031, 8616778, -634045, 1121523, 5046050, 176094, 3062849, 1226213, 237297, 4744865,
--89121, -3313031, 4173635, 2268817, 2637647, 3826816, 1161789, -3171297, 2092723, 3096135,
-2907693, 4650913, -166967, -4518843, -3748433, 5390721, 7450695, -7297687, 1056025, -2189360,
--1713692, 1167694, 2313377, 2127620, -8694088, 9193914, 8508867, 6413997, -4538707, 5010080,
-9051107, -2313914, 7059316, 2653216, 1015223, -1127429, 7781407, 3687230, -1895691, -5637682,
-3195993, -2343442, -3075197, 3163780, 3677029, 1635309, -5659693, 897648, 4927938, -2451353,
-1610613, -10982768, 1487132, -886911, 5188858, 1291711, -2384244, -3310883, 6655589, -5826660,
-351114, -4704600, 421444, -1439351, 3643743, -784905, -1379221, -5762773, -1540283, -1012539,
-6992744, 361851, -6730751, -236760, -556198, 2244657, 3214783, -2908767, -213675, -3713536,
-3723737, -865436, 4529043, -2583960, 6847789, 3551938, -8210904, 8357470, -1570884, -5769215,
-567473, 7636452, 1072131, 1177895, -6742025, -398358, -3095061, -3324842, -4173098, 331249,
-9855339, -3541738, -7328288, -486942, -10934987, -123480, -9413495, -3345243, 6277632, -6746320,
--7437273, 2079838, 489626, 542240, -1835562, -2513630, -5420786, 3470334, -10493142, -3306588,
-925029, 6308770, 249645, 6400575, 2187749, 14206141, 5355288, -276489, 493384, 6695854,
--1771137, -2175401, -1427003, 994822, -4665408, -2384781, -7768522, -679142, -3656628, -2249489,
-9215926, -6979, 5698348, -2518462, 2216740, -768799, 3317325, -1358283, 3067681, -3422015,
--4191888, -856309, 917512, -4258997, -4250944, 105227, 1836099, 4085051, -879395, -2341294,
--1157494, 3797825, 6760816, 5906, -5119601, -7308961, -250719, 1374390, 328565, 8761733,
--6325950, -1083406, 3664681, -2563022, -5597416, 5082557, 1992865, 1185411, 630286, 8918500,
--6827388, -1385127, 581968, -525060, -237297, -5625334, -4316442, -603443, 3758633, 1363652,
-1524713, 1578401, 3955128, -801011, 3623342, 2917894, -9231495, -3553012, -10835666, 2829310,
--3786551, 5481989, -3475702, -4792110, -3467649, 2856153, -7187628, -6012418, 8489540, -4584878,
-9205726, -2142115, 2829310, -3196530, -6059662, 6798933, -5116380, -5832566, -475668, -3157338,
--6759205, -5267778, -8541616, 395674, 5730560, 3253438, -3204046, 9686762, 3722663, -3490198,
--4268661, -6915971, 540629, -2547453, -4612795, -2386391, -1767379, -3353296, 2181844, 7806103,
--68183, 612033, -4759361, 2574833, 3163244, -4406637, -2937758, 2006287, 10220412, 3933653,
--1196148, -977105, -253940, -9035537, 13316009, -1905892, 501974, -1587527, 8857833, 8404714,
-3261491, -12656732, -1649804, -15483894, 10008884, 4495757, 814970, 17002164, 8364986, -958851,
--6835441, 7292318, -2597918, 2173254, 2883534, 1554778, 5987722, -4329327, 9831717, 3993246,
-1490354, -2330020, -4108673, 6738267, 5890011, -556735, 4046933, -7414724, 2091649, -10059350,
-4908611, 1041530, 5990943, -8188355, 2426120, -2380486, 2549600, 10255845, 8971113, 821413,
-3063922, -5682242, 8686571, 643708, 17745732, 18458158, -1717450, -4413079, -4230543, -3514357,
--9769977, -2543158, -12963822, 1200980, -432181, -399432, -2069101, 5147519, 8804146, 12989592,
-12496744, 9369471, -14175540, -10353556, 251792, 987306, 16317654, -10821707, 8970039, -434865,
--3186866, -4583804, 9241696, 2007897, -6717329, -3726421, 17328582, 16976932, 19101868, -1864016,
--700080, -3244848, 3313031, 9283035, 10827613, 3078418, -4458713, -9192304, -18464602, 5470178,
--10849624, -2477123, -946503, -2455648, 1447404, -639413, -3211562, -506269, -10572599, -4383551,
-882079, -2117419, -11812771, -5220533, 1296543, 8617852, -2197413, 92879, -9307194, -3413425,
-428423, 6170795, -3567507, 3704946, -10386305, -3210488, 2862596, 3833258, -2556043, 14155138,
--2557116, -2106682, -7079180, -2777233, 6253473, 1649268, -184684, 7166153, 10915123, 11764452,
--1612760, -6504191, -6336688, -366683, 2035278, 2333778, -4258460, 3337190, 5858336, 3684008,
-4992900, 11360725, 9027484, 4452808, 303869, 1431835, -10864120, -4221953, -18210662, 21363704,
--1195075, 2646237, 11422466, -367220, -4786204, 47782, -21985400, -13610751, -6700686, 2835215,
--4796942, 1858110, -10593000, 6339909, -4081293, -687732, 12622372, -13479218, -9159018, 11755862,
--4466766, -18720688, 687732, -11783243, 1706713, -1551557, 6178311, 2289218, 2809446, 738734,
--2803540, 7399155, -1520418, 9680856, 5692443, -4352413, -6843494, -6506876, 2169495, -3563749,
-2177012, 1278827, 5421860, 1035624, -12109660, -89121, 3190624, -4741107, -223338, -8703214,
--2477659, -158377, -231928, 17205638, -3932580, 11919608, 14592688, -5232344, 7407745, -3600793,
--1323387, -9713605, 4519916, 11834246, 8171176, 638876, 2539400, 6533182, -1692754, 4877472,
--4059281, -6026376, -8141111, 482110, 13915157, 20851530, 2864743, 5068062, -5181878, -2690260,
-14071387, -9591199, -2406256, -18712636, 17148730, 8940511, 1002338, -6440841, -17782238, 1646583,
--4936528, 2027225, -19932944, 6896107, 10074920, -11520176, -3046206, 1611687, 878321, 3709778,
-10916196, 13776108, -318364, -106300, 2217277, 458488, -8799851, -9673340, -6784975, -12721693,
--6669548, 10736344, 4561792, -4083977, -5832029, -3580929, -22767622, 4795868, 4805532, -10455024,
-16481937, 579284, 12114492, -4610648, 7608535, -2750927, -11689290, 967978, 9404905, -5613523,
-4784057, 6481106, 17276506, 4992363, 4789426, 17337172, 8931384, 6547141, -25089052, 4941897,
-2501819, 4624606, -815507, -9842454, 15940234, -12976170, 8240969, 10372883, -17675402, -3414499,
-18864570, -18540836, 948114, 691490, -11790222, -17394618, -8098161, -7694434, -23102092, 14468134,
-1621350, 15496242, 164283, 1602560, -8499203, -4751845, 7140920, -1321776, 7406134, -8840653,
--3367254, 743566, -4452808, -7366943, 8966818, -10653666, 10827076, -4779762, 2986613, -3221762,
--8686034, -7803419, 2583960, -3285113, -901406, 5266167, 22425634, 947040, -3805341, -8569533,
-2502892, 18037788, -4300873, -3796751, -11784317, -4507032, 699543, -11074036, -4660040, -15490336,
-8590471, -18803904, -33558728, -4175782, 117038, 14806363, -17066590, 14175003, 8764955, -8441221,
--16217797, -3233037, 1471563, 3633006, -517544, 8612483, -7427072, -3228742, -33387466, -5207111,
-32042604, 2313914, -6900402, -5417565, -18656802, 11901891, -7059853, 16885664, 15234249, -2999498,
--4242891, 54761, -20777442, 16050293, -12621298, -10135586, -7565048, 6936909, 3641059, 14996952,
-3051574, -5976984, -7290707, -7539815, 8381092, -2009508, -3427384, 13848585, 15236933, 6166500,
--7923678, 12886513, 19815368, -5572183, -2629594, 17416092, 5507222, 4665408, -8982924, 1460826,
-16577500, -20878910, 16825534, -1860258, 3524021, 10729365, 12589623, 1410360, 7027104, -9024263,
--7125888, 7306276, 22680112, 7202124, 6682432, 9552544, -9153112, 3782256, 10971494, 6982543,
--162672, 9116605, 6345278, -11159936, 12008729, -10837276, 4526359, 10599442, -8032663, 9026411,
--10116795, -3265249, 4197257, 1923072, 9811316, -3489124, 8905615, -3700651, 3513820, 3586298,
-766115, -4262218, -5886790, 24777130, -14712947, 15366856, -5829881, -15343234, -19984482, -5575405,
--2208687, 11639361, -17663590, -2781528, -2295123, 9228274, 17059074, 14445049, 8639327, 1487132,
--4765266, -2522757, -2130304, 12385075, 9644349, -2135136, 1185948, -2396592, 7423314, -18651970,
-10854993, 6572374, 8372502, 3387119, 1534377, 16760036, -6971269, -13431436, -483184, -4056060,
-363998, -18713172, -11290395, -507343, 15475841, -10206990, -4116189, 3400540, -1353989, 1285806,
-15109158, 7271380, -3222836, 2370285, 6955163, 6182606, 17629768, -4265440, 7570417, 10668699,
-4126927, -1584843, 2093797, -18538152, 7630010, -2026688, -77309, -2669322, -12075301, -12661564,
-1988570, -4552666, -21225192, 7831336, -18156438, -9000641, -3853660, -21241298, -16200617, 10368588,
--25184078, -27985470, 18312666, 16521665, 6270116, 17803714, 29224032, 8990977, -9637370, 10055592,
--3166465, -6984691, 13991930, 1871532, -10388989, 8005819, 10415833, 3055332, 4426501, 1607392,
-2612951, 26656714, 644245, 6387690, 3618510, 16845936, 2177012, 26401164, 1133335, -10432476,
-21722334, 4981625, -7748121, -2412698, 12144557, -1482301, 1151588, 9214315, -14179298, 16231218,
--1882269, -22029424, -4938139, 2897492, -21257940, -1907502, -878321, 10598369, 11190000, 17664126,
--10406169, 3148211, 4348118, 4054449, 8988830, -10428717, -10515154, 6832756, 1523103, 13403519,
-12535936, 3551938, 29306710, -4367445, -2044404, -18577344, 30152282, 4858145, 21839372, 11580306,
--28265716, 3937411, 6034966, 18087718, -6254010, 6262063, 16757352, -36595804, 21087216, 21545704,
--9791989, 4890357, 2563022, 5638755, -357556, 17169668, -13241921, -2969970, -14195941, -310311,
--8299488, 1060857, 3035468, -20010252, 8282845, 21488258, -15547245, -14310831, -15256798, 28709708,
--13313325, -7063611, 1890323, -9822590, -30609158, 5301601, 20777978, -29596082, -14339822, 10399190,
-15014132, 4502737, -5471252, 7095286, -11528229, -4676146, -1580548, 15013058, -21276732, -15714748,
-10297184, 18876382, 6121402, -22619446, -8666707, 1091995, -2311229, -3429532, 10762651, -2929705,
-16852914, -14078366, -4617090, 785442, -18390514, 11651709, -21225728, -12554726, 4748623, -7682086,
-17579838, 29032906, 14715095, -16874926, 8024073, -3688840, -7220914, -10928544, -5732171, -18617610,
-14576582, 15217606, 6123013, 20490216, 34523484, -801011, -27090506, 5072357, -32219770, 4871567,
-13843753, 6205154, 1366873, 18484466, 13538274, -1416266, -3450469, -26756036, -14663555, -184147,
--12809740, 34897148, -7028177, -8624294, -15876883, 1323924, 12775917, 8745090, -1058710, 6263136,
-9813463, -16335908, 4796405, 29831770, 10179609, -21498458, -15336254, 9270150, -10952703, -2029909,
-6777459, -5252208, -17894444, -4743255, 1420024, 28373090, -6971806, 5812702, -8435853, -24064702,
-3353833, 28791850, -8693014, -18264886, 4324495, -11422466, 6343667, -6783901, -8088497, 19622632,
--6139119, -2882997, 8854075, -17971754, 5168993, 20892868, -10079215, 1394254, -13895830, 37264212,
--8364449, 4250407, 10471130, -8785892, -4145180, -9787157, 2757906, -10563472, -12625593, -9796820,
--57626648, -19915764, -635118, 18972482, -9319005, -28627568, -10531797, -3830574, 14641007, 4130685,
--3471407, -13940390, 15579457, 27371290, -11829414, 20796232, 5508833, -38144680, 14785425, 18532248,
--5961952, -15257871, -2550674, 24196772, 25754772, -1677185, -18855444, 1766305, -1818919, -2067490,
--15658914, 4381404, 7683160, -25021406, 17921288, 15335718, -17581448, 3732864, -19774566, 7532299,
-49536004, -43551504, 45817636, 20968030, 2388002, 28201292, 14150307, -28072444, 17420388, -21023864,
--4489852, 23735064, 1393180, 7046431, -11661373, -20500416, 63652488, -14570140, 1177358, 25275346,
--11818139, 5160403, 2135136, 15697032, 35910760, 34178812, 32300838, 2245731, -453119, -4911295,
-1803349, -8362838, 2631741, 27770722, -6749004, -8085276, 15330886, -3433826, -42374684, 19969988,
--30683246, 44292388, 5571647, -37482716, 8969502, 927713, 18232136, 9043591, -8863202, 33017024,
-8230231, 2314987, 21927956, -16585016, -23745264, 1514513, 12856448, 44392244, -5884105, 906775,
--4333085, 32273994, 3644280, -24111946, -14561013, 5632313, -2580202, 14865956, -24103894, 12648679,
-4112431, 8223252, -2035815, -8401493, 5641440, 10892037, 200253, 30407294, -47022912, 5371394,
--16547435, -9008157, -6026913, -33055142, -50016504, -50343460, -37643240, 5549635, 198642, -28406376,
--248034, -3727495, 3226594, -16785806, -48242684, 49512920, -872415, -4881767, 9669045, -44841608,
--3230889, -9246528, 8898635, 16559783, 64865816, 51219632, -5124433, 2696166, -932545, 16392816,
-20871394, 16013786, -11276974, 59825672, -55239720, 10600516, -9881109, 3167002, 24712168, -16342351,
-6879464, 1925219, -59853592, 2549063, -5879810, 4016331, 7972533, -26069914, -9175124, -43844100,
--10630044, -1046898, 3427921, -15837692, -11811697, -18366890, -7170448, 20689932, 5245229, 40549324,
-10638097, -11920682, -12875775, 25522306, -25756382, 47630652, -34978212, 12035572, -27981176, 2201708,
-28924994, -48771500, 48715128, 10162429, 6715182, -32780802, -5666136, -4599910, 1304596, 18719078,
-17943300, 23154706, -38601556, 1367410, -14276471, -11079405, -13888314, -18820010, -13343927, 3722663,
-24550034, -21240224, 8297877, -41517300, -13296145, 15294915, 15268609, 6782827, -49335216, -22836342,
--16284369, -20500952, -19611894, 8385387, -15037754, 35208532, 10089415, 23722714, -7073275, 25072946,
--47991428, 72500656, -55070072, -5950677, -33396592, 6362994, 304943, -20076288, -28696824, 32975686,
-21721798, 10344966, -14946486, 14585709, 3959423, 31249108, -25304336, -16236587, 18742700, 32566590,
--42087996, 16878684, -2231236, 19880330, -15720117, 6002217, -19194208, 4065187, -35270272, 11612518,
-35902168, -843961, -3843996, 46244448, 6906308, -20621212, -45876692, 38826504, -21427054, 17886928,
--17697412, 46444164, 18831820, -4252018, 3269007, -25615184, 2012192, 12343736, -14412837, 13835163,
--57087096, 22891102, 48354888, 40553080, -23716272, -21109228, -24800214, 27009438, -258235, -6268505,
--459025, 66842040, -34389268, -12510703, 22067542, -19027778, -61940408, 27824408, 9234717, -38381976,
-18993420, 44681080, 30317100, -5679021, -23199802, -47500728, 24456618, -3321084, 5922760, -17755932,
-14388677, -233002, 7596187, 1961190, 2077690, -10298795, 6808597, 24881820, -33091650, 27365920,
--5450851, -17597554, 5024038, -12111271, 6823630, -12381317, -10536092, 7802345, -26601416, -3080029,
-33673080, -50131396, 13247290, 1977296, -9114457, -15658914, -18889266, -12114492, 35304632, -30092688,
--5108327, 11365020, -31097174, 7380902, 15709917, 10833518, 4777078, 4991289, -17983028, 13219909,
--45427868, 447750, 37960532, -16422344, -5382668, -8836895, -12023224, -365609, -32552630, 16681116,
-11541114, -25975426, 23270670, 6925098, -30872224, 12408697, -7013145, 21823266, 17452600, -27181774,
-8264591, 31229244, -30321396, 16936130, -22070764, 17263622, 17223356, -27784680, 15125264, 326954,
--15935402, 26377004, 7494718, -24980604, -122997664, -251165936, -108801720, -172081088, -228745120, 65336116,
-13429289, 54343148, 302281952, 249196144, 159163440, 257382896, 170131168, 6822019, 30957050, 18137110,
--160544272, -109034728, -79650704, -181531632, -184757680, -62083752, -62337692, -120524296, -46225124, -37615860,
--141715664, -124048320, -49999324, -74748000, -134336384, -43758736, -34285652, -108287400, -24822226, 51373176,
--42058468, -36701032, 83191904, 45777908, -52475372, 72443752, 128463008, 3049427, 67160944, 160996320,
-73006928, 32131188, 175762416, 125666448, 91253560, 216750896, 297444192, 233663408, 273540576, 357499648,
-231496048, 149834224, 199367008, 127576632, -40175124, -10940355, -91579976, -223825248, -315535136, -336593888,
--450576416, -509102880, -538365568, -513171296, -487514752, -472316480, -378379104, -252343280, -194695696, 20937428,
-161597072, 105515000, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+49392, 8157217, 379568, -2594160, -643708, 55835, 751619, 3802657, -1575716, 1945083,
+-3844533, 1293859, -403727, 2646774, -1793149, 3823595, 978179, -1950452, 274878, -3888556,
+4334696, -404264, -886911, -2147, 639413, 909996, 661425, 3200288, -5628555, 420907,
+3550327, 702764, -279710, -625455, -325344, -130460, -465467, -5762236, -478352, 1702955,
+-2002529, 1939715, -4516158, 22549, 2531883, -2654827, 5084705, 4920959, 3670050, 3128347,
+4027069, 497679, 2022393, -1910187, -810138, -3316252, -1329829, -183610, -2893197, -971736,
+-4112968, 578747, -3486977, -4562329, 864899, -3337727, 2522757, 367757, -3713536, 2554969,
+1621887, -4126390, 1232656, 89121, 4827543, 1418950, -6394133, 849867, 2075543, 2015950,
+10150618, 2787971, 2167885, -2957085, 417149, -5089536, 1232656, 4756677, -2363306, 270583,
+-968515, -2478196, -4041564, 3189550, -6779069, -3382287, -3391414, 3742527, 4063576, 2185602,
+988379, 2985002, 2436857, 4894652, -1661079, 1756105, 3025268, 704375, 1007707, -3456375,
+-1503239, -1401770, -1312113, 3344169, -6243272, 1126355, -2155000, 6641630, 169114, -1093069,
+-1633698, -2610803, -890669, -2724083, -8244727, -2509335, -1609539, -1224603, -1846299, 969052,
+-1544041, -266288, -532039, 3020436, 1289027, -234076, 1838246, -1467268, 3529926, -2160369,
+-3862786, 3886946, 3860102, -1489280, -3736622, 568009, 1951526, 1767916, 1647120, -1461900,
+-169651, 1793686, 1486059, 9223979, -1644436, -805306, 1050120, 2597918, -6679748, 4274566,
+-7941932, -286689, -3811784, -493921, -2499134, -527207, -561567, 4103841, -3330747, 4439923,
+-4483946, -4881231, 2163590, 6747394, -7794829, -2094870, -3740917, 144418, -1919314, 2214593,
+2873333, 1518271, 2924873, -4467840, 220654, 6504728, 2569464, 918049, -4597763, -6538014,
+-3946538, 1127966, -3348464, -1806571, 1347009, 4430259, -3840775, -3709778, 1598802, -2675765,
+4998805, 1789391, -467078, 3629247, 3358665, 137439, 5607080, 2903398, 1779727, 1632088,
+3683471, 5912560, -3755412, 1273995, 1604707, -3855270, 379568, 3482682, -1263794, 8516383,
+-2558727, -1968169, -1734630, 3319473, 4202089, -5095979, -2239289, 1787243, -11702175, -1845762,
+-2565706, -2036888, -998580, -1379221, 6308770, 7538742, -1656784, 6162741, 2377801, -3312494,
+1637993, -5050882, 947040, 1142998, -6829535, -956167, 1108102, 1262184, 4791036, -854699,
+4163971, -2707440, -5240397, -5507222, -1564442, -2758980, -4197794, 4427038, -1692754, -790274,
+-749472, 965831, 2390149, -6692633, 32212, 988379, -3195993, 8080444, 623307, -1941325,
+-1755031, 8616778, -634045, 1121523, 5046050, 176094, 3062849, 1226213, 237297, 4744865,
+-89121, -3313031, 4173635, 2268817, 2637647, 3826816, 1161789, -3171297, 2092723, 3096135,
+2907693, 4650913, -166967, -4518843, -3748433, 5390721, 7450695, -7297687, 1056025, -2189360,
+-1713692, 1167694, 2313377, 2127620, -8694088, 9193914, 8508867, 6413997, -4538707, 5010080,
+9051107, -2313914, 7059316, 2653216, 1015223, -1127429, 7781407, 3687230, -1895691, -5637682,
+3195993, -2343442, -3075197, 3163780, 3677029, 1635309, -5659693, 897648, 4927938, -2451353,
+1610613, -10982768, 1487132, -886911, 5188858, 1291711, -2384244, -3310883, 6655589, -5826660,
+351114, -4704600, 421444, -1439351, 3643743, -784905, -1379221, -5762773, -1540283, -1012539,
+6992744, 361851, -6730751, -236760, -556198, 2244657, 3214783, -2908767, -213675, -3713536,
+3723737, -865436, 4529043, -2583960, 6847789, 3551938, -8210904, 8357470, -1570884, -5769215,
+567473, 7636452, 1072131, 1177895, -6742025, -398358, -3095061, -3324842, -4173098, 331249,
+9855339, -3541738, -7328288, -486942, -10934987, -123480, -9413495, -3345243, 6277632, -6746320,
+-7437273, 2079838, 489626, 542240, -1835562, -2513630, -5420786, 3470334, -10493142, -3306588,
+925029, 6308770, 249645, 6400575, 2187749, 14206141, 5355288, -276489, 493384, 6695854,
+-1771137, -2175401, -1427003, 994822, -4665408, -2384781, -7768522, -679142, -3656628, -2249489,
+9215926, -6979, 5698348, -2518462, 2216740, -768799, 3317325, -1358283, 3067681, -3422015,
+-4191888, -856309, 917512, -4258997, -4250944, 105227, 1836099, 4085051, -879395, -2341294,
+-1157494, 3797825, 6760816, 5906, -5119601, -7308961, -250719, 1374390, 328565, 8761733,
+-6325950, -1083406, 3664681, -2563022, -5597416, 5082557, 1992865, 1185411, 630286, 8918500,
+-6827388, -1385127, 581968, -525060, -237297, -5625334, -4316442, -603443, 3758633, 1363652,
+1524713, 1578401, 3955128, -801011, 3623342, 2917894, -9231495, -3553012, -10835666, 2829310,
+-3786551, 5481989, -3475702, -4792110, -3467649, 2856153, -7187628, -6012418, 8489540, -4584878,
+9205726, -2142115, 2829310, -3196530, -6059662, 6798933, -5116380, -5832566, -475668, -3157338,
+-6759205, -5267778, -8541616, 395674, 5730560, 3253438, -3204046, 9686762, 3722663, -3490198,
+-4268661, -6915971, 540629, -2547453, -4612795, -2386391, -1767379, -3353296, 2181844, 7806103,
+-68183, 612033, -4759361, 2574833, 3163244, -4406637, -2937758, 2006287, 10220412, 3933653,
+-1196148, -977105, -253940, -9035537, 13316009, -1905892, 501974, -1587527, 8857833, 8404714,
+3261491, -12656732, -1649804, -15483894, 10008884, 4495757, 814970, 17002164, 8364986, -958851,
+-6835441, 7292318, -2597918, 2173254, 2883534, 1554778, 5987722, -4329327, 9831717, 3993246,
+1490354, -2330020, -4108673, 6738267, 5890011, -556735, 4046933, -7414724, 2091649, -10059350,
+4908611, 1041530, 5990943, -8188355, 2426120, -2380486, 2549600, 10255845, 8971113, 821413,
+3063922, -5682242, 8686571, 643708, 17745732, 18458158, -1717450, -4413079, -4230543, -3514357,
+-9769977, -2543158, -12963822, 1200980, -432181, -399432, -2069101, 5147519, 8804146, 12989592,
+12496744, 9369471, -14175540, -10353556, 251792, 987306, 16317654, -10821707, 8970039, -434865,
+-3186866, -4583804, 9241696, 2007897, -6717329, -3726421, 17328582, 16976932, 19101868, -1864016,
+-700080, -3244848, 3313031, 9283035, 10827613, 3078418, -4458713, -9192304, -18464602, 5470178,
+-10849624, -2477123, -946503, -2455648, 1447404, -639413, -3211562, -506269, -10572599, -4383551,
+882079, -2117419, -11812771, -5220533, 1296543, 8617852, -2197413, 92879, -9307194, -3413425,
+428423, 6170795, -3567507, 3704946, -10386305, -3210488, 2862596, 3833258, -2556043, 14155138,
+-2557116, -2106682, -7079180, -2777233, 6253473, 1649268, -184684, 7166153, 10915123, 11764452,
+-1612760, -6504191, -6336688, -366683, 2035278, 2333778, -4258460, 3337190, 5858336, 3684008,
+4992900, 11360725, 9027484, 4452808, 303869, 1431835, -10864120, -4221953, -18210662, 21363704,
+-1195075, 2646237, 11422466, -367220, -4786204, 47782, -21985400, -13610751, -6700686, 2835215,
+-4796942, 1858110, -10593000, 6339909, -4081293, -687732, 12622372, -13479218, -9159018, 11755862,
+-4466766, -18720688, 687732, -11783243, 1706713, -1551557, 6178311, 2289218, 2809446, 738734,
+-2803540, 7399155, -1520418, 9680856, 5692443, -4352413, -6843494, -6506876, 2169495, -3563749,
+2177012, 1278827, 5421860, 1035624, -12109660, -89121, 3190624, -4741107, -223338, -8703214,
+-2477659, -158377, -231928, 17205638, -3932580, 11919608, 14592688, -5232344, 7407745, -3600793,
+-1323387, -9713605, 4519916, 11834246, 8171176, 638876, 2539400, 6533182, -1692754, 4877472,
+-4059281, -6026376, -8141111, 482110, 13915157, 20851530, 2864743, 5068062, -5181878, -2690260,
+14071387, -9591199, -2406256, -18712636, 17148730, 8940511, 1002338, -6440841, -17782238, 1646583,
+-4936528, 2027225, -19932944, 6896107, 10074920, -11520176, -3046206, 1611687, 878321, 3709778,
+10916196, 13776108, -318364, -106300, 2217277, 458488, -8799851, -9673340, -6784975, -12721693,
+-6669548, 10736344, 4561792, -4083977, -5832029, -3580929, -22767622, 4795868, 4805532, -10455024,
+16481937, 579284, 12114492, -4610648, 7608535, -2750927, -11689290, 967978, 9404905, -5613523,
+4784057, 6481106, 17276506, 4992363, 4789426, 17337172, 8931384, 6547141, -25089052, 4941897,
+2501819, 4624606, -815507, -9842454, 15940234, -12976170, 8240969, 10372883, -17675402, -3414499,
+18864570, -18540836, 948114, 691490, -11790222, -17394618, -8098161, -7694434, -23102092, 14468134,
+1621350, 15496242, 164283, 1602560, -8499203, -4751845, 7140920, -1321776, 7406134, -8840653,
+-3367254, 743566, -4452808, -7366943, 8966818, -10653666, 10827076, -4779762, 2986613, -3221762,
+-8686034, -7803419, 2583960, -3285113, -901406, 5266167, 22425634, 947040, -3805341, -8569533,
+2502892, 18037788, -4300873, -3796751, -11784317, -4507032, 699543, -11074036, -4660040, -15490336,
+8590471, -18803904, -33558728, -4175782, 117038, 14806363, -17066590, 14175003, 8764955, -8441221,
+-16217797, -3233037, 1471563, 3633006, -517544, 8612483, -7427072, -3228742, -33387466, -5207111,
+32042604, 2313914, -6900402, -5417565, -18656802, 11901891, -7059853, 16885664, 15234249, -2999498,
+-4242891, 54761, -20777442, 16050293, -12621298, -10135586, -7565048, 6936909, 3641059, 14996952,
+3051574, -5976984, -7290707, -7539815, 8381092, -2009508, -3427384, 13848585, 15236933, 6166500,
+-7923678, 12886513, 19815368, -5572183, -2629594, 17416092, 5507222, 4665408, -8982924, 1460826,
+16577500, -20878910, 16825534, -1860258, 3524021, 10729365, 12589623, 1410360, 7027104, -9024263,
+-7125888, 7306276, 22680112, 7202124, 6682432, 9552544, -9153112, 3782256, 10971494, 6982543,
+-162672, 9116605, 6345278, -11159936, 12008729, -10837276, 4526359, 10599442, -8032663, 9026411,
+-10116795, -3265249, 4197257, 1923072, 9811316, -3489124, 8905615, -3700651, 3513820, 3586298,
+766115, -4262218, -5886790, 24777130, -14712947, 15366856, -5829881, -15343234, -19984482, -5575405,
+-2208687, 11639361, -17663590, -2781528, -2295123, 9228274, 17059074, 14445049, 8639327, 1487132,
+-4765266, -2522757, -2130304, 12385075, 9644349, -2135136, 1185948, -2396592, 7423314, -18651970,
+10854993, 6572374, 8372502, 3387119, 1534377, 16760036, -6971269, -13431436, -483184, -4056060,
+363998, -18713172, -11290395, -507343, 15475841, -10206990, -4116189, 3400540, -1353989, 1285806,
+15109158, 7271380, -3222836, 2370285, 6955163, 6182606, 17629768, -4265440, 7570417, 10668699,
+4126927, -1584843, 2093797, -18538152, 7630010, -2026688, -77309, -2669322, -12075301, -12661564,
+1988570, -4552666, -21225192, 7831336, -18156438, -9000641, -3853660, -21241298, -16200617, 10368588,
+-25184078, -27985470, 18312666, 16521665, 6270116, 17803714, 29224032, 8990977, -9637370, 10055592,
+-3166465, -6984691, 13991930, 1871532, -10388989, 8005819, 10415833, 3055332, 4426501, 1607392,
+2612951, 26656714, 644245, 6387690, 3618510, 16845936, 2177012, 26401164, 1133335, -10432476,
+21722334, 4981625, -7748121, -2412698, 12144557, -1482301, 1151588, 9214315, -14179298, 16231218,
+-1882269, -22029424, -4938139, 2897492, -21257940, -1907502, -878321, 10598369, 11190000, 17664126,
+-10406169, 3148211, 4348118, 4054449, 8988830, -10428717, -10515154, 6832756, 1523103, 13403519,
+12535936, 3551938, 29306710, -4367445, -2044404, -18577344, 30152282, 4858145, 21839372, 11580306,
+-28265716, 3937411, 6034966, 18087718, -6254010, 6262063, 16757352, -36595804, 21087216, 21545704,
+-9791989, 4890357, 2563022, 5638755, -357556, 17169668, -13241921, -2969970, -14195941, -310311,
+-8299488, 1060857, 3035468, -20010252, 8282845, 21488258, -15547245, -14310831, -15256798, 28709708,
+-13313325, -7063611, 1890323, -9822590, -30609158, 5301601, 20777978, -29596082, -14339822, 10399190,
+15014132, 4502737, -5471252, 7095286, -11528229, -4676146, -1580548, 15013058, -21276732, -15714748,
+10297184, 18876382, 6121402, -22619446, -8666707, 1091995, -2311229, -3429532, 10762651, -2929705,
+16852914, -14078366, -4617090, 785442, -18390514, 11651709, -21225728, -12554726, 4748623, -7682086,
+17579838, 29032906, 14715095, -16874926, 8024073, -3688840, -7220914, -10928544, -5732171, -18617610,
+14576582, 15217606, 6123013, 20490216, 34523484, -801011, -27090506, 5072357, -32219770, 4871567,
+13843753, 6205154, 1366873, 18484466, 13538274, -1416266, -3450469, -26756036, -14663555, -184147,
+-12809740, 34897148, -7028177, -8624294, -15876883, 1323924, 12775917, 8745090, -1058710, 6263136,
+9813463, -16335908, 4796405, 29831770, 10179609, -21498458, -15336254, 9270150, -10952703, -2029909,
+6777459, -5252208, -17894444, -4743255, 1420024, 28373090, -6971806, 5812702, -8435853, -24064702,
+3353833, 28791850, -8693014, -18264886, 4324495, -11422466, 6343667, -6783901, -8088497, 19622632,
+-6139119, -2882997, 8854075, -17971754, 5168993, 20892868, -10079215, 1394254, -13895830, 37264212,
+-8364449, 4250407, 10471130, -8785892, -4145180, -9787157, 2757906, -10563472, -12625593, -9796820,
+-57626648, -19915764, -635118, 18972482, -9319005, -28627568, -10531797, -3830574, 14641007, 4130685,
+-3471407, -13940390, 15579457, 27371290, -11829414, 20796232, 5508833, -38144680, 14785425, 18532248,
+-5961952, -15257871, -2550674, 24196772, 25754772, -1677185, -18855444, 1766305, -1818919, -2067490,
+-15658914, 4381404, 7683160, -25021406, 17921288, 15335718, -17581448, 3732864, -19774566, 7532299,
+49536004, -43551504, 45817636, 20968030, 2388002, 28201292, 14150307, -28072444, 17420388, -21023864,
+-4489852, 23735064, 1393180, 7046431, -11661373, -20500416, 63652488, -14570140, 1177358, 25275346,
+-11818139, 5160403, 2135136, 15697032, 35910760, 34178812, 32300838, 2245731, -453119, -4911295,
+1803349, -8362838, 2631741, 27770722, -6749004, -8085276, 15330886, -3433826, -42374684, 19969988,
+-30683246, 44292388, 5571647, -37482716, 8969502, 927713, 18232136, 9043591, -8863202, 33017024,
+8230231, 2314987, 21927956, -16585016, -23745264, 1514513, 12856448, 44392244, -5884105, 906775,
+-4333085, 32273994, 3644280, -24111946, -14561013, 5632313, -2580202, 14865956, -24103894, 12648679,
+4112431, 8223252, -2035815, -8401493, 5641440, 10892037, 200253, 30407294, -47022912, 5371394,
+-16547435, -9008157, -6026913, -33055142, -50016504, -50343460, -37643240, 5549635, 198642, -28406376,
+-248034, -3727495, 3226594, -16785806, -48242684, 49512920, -872415, -4881767, 9669045, -44841608,
+-3230889, -9246528, 8898635, 16559783, 64865816, 51219632, -5124433, 2696166, -932545, 16392816,
+20871394, 16013786, -11276974, 59825672, -55239720, 10600516, -9881109, 3167002, 24712168, -16342351,
+6879464, 1925219, -59853592, 2549063, -5879810, 4016331, 7972533, -26069914, -9175124, -43844100,
+-10630044, -1046898, 3427921, -15837692, -11811697, -18366890, -7170448, 20689932, 5245229, 40549324,
+10638097, -11920682, -12875775, 25522306, -25756382, 47630652, -34978212, 12035572, -27981176, 2201708,
+28924994, -48771500, 48715128, 10162429, 6715182, -32780802, -5666136, -4599910, 1304596, 18719078,
+17943300, 23154706, -38601556, 1367410, -14276471, -11079405, -13888314, -18820010, -13343927, 3722663,
+24550034, -21240224, 8297877, -41517300, -13296145, 15294915, 15268609, 6782827, -49335216, -22836342,
+-16284369, -20500952, -19611894, 8385387, -15037754, 35208532, 10089415, 23722714, -7073275, 25072946,
+-47991428, 72500656, -55070072, -5950677, -33396592, 6362994, 304943, -20076288, -28696824, 32975686,
+21721798, 10344966, -14946486, 14585709, 3959423, 31249108, -25304336, -16236587, 18742700, 32566590,
+-42087996, 16878684, -2231236, 19880330, -15720117, 6002217, -19194208, 4065187, -35270272, 11612518,
+35902168, -843961, -3843996, 46244448, 6906308, -20621212, -45876692, 38826504, -21427054, 17886928,
+-17697412, 46444164, 18831820, -4252018, 3269007, -25615184, 2012192, 12343736, -14412837, 13835163,
+-57087096, 22891102, 48354888, 40553080, -23716272, -21109228, -24800214, 27009438, -258235, -6268505,
+-459025, 66842040, -34389268, -12510703, 22067542, -19027778, -61940408, 27824408, 9234717, -38381976,
+18993420, 44681080, 30317100, -5679021, -23199802, -47500728, 24456618, -3321084, 5922760, -17755932,
+14388677, -233002, 7596187, 1961190, 2077690, -10298795, 6808597, 24881820, -33091650, 27365920,
+-5450851, -17597554, 5024038, -12111271, 6823630, -12381317, -10536092, 7802345, -26601416, -3080029,
+33673080, -50131396, 13247290, 1977296, -9114457, -15658914, -18889266, -12114492, 35304632, -30092688,
+-5108327, 11365020, -31097174, 7380902, 15709917, 10833518, 4777078, 4991289, -17983028, 13219909,
+-45427868, 447750, 37960532, -16422344, -5382668, -8836895, -12023224, -365609, -32552630, 16681116,
+11541114, -25975426, 23270670, 6925098, -30872224, 12408697, -7013145, 21823266, 17452600, -27181774,
+8264591, 31229244, -30321396, 16936130, -22070764, 17263622, 17223356, -27784680, 15125264, 326954,
+-15935402, 26377004, 7494718, -24980604, -122997664, -251165936, -108801720, -172081088, -228745120, 65336116,
+13429289, 54343148, 302281952, 249196144, 159163440, 257382896, 170131168, 6822019, 30957050, 18137110,
+-160544272, -109034728, -79650704, -181531632, -184757680, -62083752, -62337692, -120524296, -46225124, -37615860,
+-141715664, -124048320, -49999324, -74748000, -134336384, -43758736, -34285652, -108287400, -24822226, 51373176,
+-42058468, -36701032, 83191904, 45777908, -52475372, 72443752, 128463008, 3049427, 67160944, 160996320,
+73006928, 32131188, 175762416, 125666448, 91253560, 216750896, 297444192, 233663408, 273540576, 357499648,
+231496048, 149834224, 199367008, 127576632, -40175124, -10940355, -91579976, -223825248, -315535136, -336593888,
+-450576416, -509102880, -538365568, -513171296, -487514752, -472316480, -378379104, -252343280, -194695696, 20937428,
+161597072, 105515000, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
11677479,
--721555, -141734, 1270774, -1389959, -1471563, -1053341, 2721399, -7006703, 2644089, -1918777,
-4832, 372052, -279173, -894964, 426276, 1571958, 2938295, -1367947, 3275450, -2646237,
--2936147, -2094333, 1474784, -2743947, -1764158, 2119030, 412854, -886374, 2610266, -599148,
-3758, 1705639, 921807, -1284732, -1789928, -1931662, -2195802, -4995584, 1326071, -1185411,
--395137, 7590818, 661962, -1540283, 4350802, -1591822, 75162, -1959579, -3619584, 4491999,
--1444183, -741419, 51003, -3106335, 995896, -136365, 2281165, -457414, 2287070, 889595,
--629213, 2748779, -356482, 1005559, 1341104, -80531, -6255083, -71941, -914291, -2363306,
-1582696, -525597, -1345935, -744640, -3873524, 2535641, 3999152, -1262720, 3567507, -455267,
-3760244, 1938641, -685584, -1325534, 3809636, 412317, 854699, -4099546, -554051, -205622,
--67646, 5834176, 2925410, -117575, -4184372, -3042448, -1729798, 612033, 24696, 1326608,
-2762738, 883690, 1097901, -4269198, -543850, -4156992, 295816, -2269890, 2895882, 2830920,
--977105, -2222109, 3022583, 674847, -959925, -3861176, -404264, -2464774, 828929, 2428804,
--3841312, -1907502, -537408, -1531156, 10253161, 2425046, 5971615, 427349, 2041183, -53687,
--2804614, -2738042, -3335579, 1593433, -2733747, 1994476, 177167, 2426120, 2668785, 6116571,
-1977296, -648003, -224412, -3862249, 6098317, 5329518, 1020592, 1445793, 1575716, 1413044,
-13799730, -3500935, -3128884, -1321776, -2978023, 462246, -6865505, 344134, 1107565, 168041,
-4299263, 352187, -1162862, -4155918, 2323577, -5788006, -5097053, 1602560, -2615635, -1278290,
--1093606, 798327, 3535295, 5060009, 122407, -936303, 5900212, 2101313, -642635, 105227,
--2816425, -36507, 6478958, -105764, -3460670, -2651606, -1051193, 2203318, -3467112, -3957812,
--4290673, -3316252, 2741263, -3118146, 791885, -3764539, 921271, 4410395, -102005, 3124052,
--1762010, -2567854, -1676648, 2169495, -583042, 3387119, 4519916, 718333, -2006824, -2582349,
--655519, -367220, -331249, 190589, -5000953, -412854, -2705293, -2163053, 1423245, 556198,
-580357, 1759863, -6134287, -2735357, 1100049, -738734, 2367601, -10449655, -5397700, -2619930,
--7298760, -2833068, -7028714, 1458678, -1064615, -4540854, -5193153, -1162326, -4335770, -552977,
-2692408, -697932, -6343667, -2623151, -419833, -2736968, -2402497, 1241246, 4990752, 6607807,
--1653026, -2326262, 3442416, 4065724, -1927904, -1481227, -1424319, -3614215, 438624, 1039382,
--3401077, -2572686, -1205275, 2298881, 5479842, -23622, -2574833, -410169, -3586835, -1528472,
--5382668, -2676838, -2701535, -8034810, -1376000, -3861176, -2975339, -8772471, 4629438, -4033511,
--3815542, 1112933, -1106491, -974421, 507343, -7327214, -2405719, -2849711, -1154273, -4364224,
--1157494, -2223183, 1232119, 2106682, -2887292, -1498407, -3953518, 928250, -1123671, -872415,
--614717, -5223217, -748398, -4232154, -18380312, -1363115, -8993125, 8270497, -4613332, 14806363,
--9281961, 9350144, -8198019, -449898, 45097, -6398428, 5191005, 213675, -2204392, 1526324,
--1893007, -837519, -6052146, -63888, -4499515, 3731253, 1557463, 4559645, -2430952, 6804302,
-6436009, -6036040, 1971927, -5153424, 5716602, -30602, -3464428, 222801, -198642, -304406,
-4321811, 459562, -5538361, 2298344, 4632659, -434865, 5419175, -2504503, 4510790, -6310381,
--2677375, 3810173, -3063386, 791348, 5883032, -5163088, 8485782, 2890513, -7359964, 1626719,
--7044820, 2416993, 4814659, 2519535, 4687957, 5492190, 2622615, -1129040, 206695, -57445,
-2581275, 3725884, -682363, 7423851, 2382096, 4852776, 3884798, 897648, 1433982, 11991549,
--150861, -3548180, -1331440, -4781909, -5653788, 8689793, -1943473, -1530082, 7975218, -868657,
--1788317, 3382824, 6164352, 1576790, 2961380, -406411, -7151658, -2088965, 5028333, -8174397,
--8041790, -3197066, 1527935, -5845451, -3547106, -151398, -969589, 5223217, -2301029, -1475321,
-5608154, 7776575, -7156490, 1543504, -1838783, 2652142, 630823, -3388729, -843424, 3051574,
-4969277, -1683090, -7408819, -1942399, -797790, -2231236, -3771518, 199716, -610959, 986232,
--1144609, 664109, 6630893, -5361730, 512712, -4179003, -3221762, -5619428, -1703491, -3418794,
--7362111, -663036, 392453, -3240553, -647466, -3422015, 2720862, 3070365, -607738, 582505,
--2632278, -1194538, 8783208, -1584306, -3485903, -11769284, 16247861, 18202608, 3806415, -6064494,
-4478577, 7417946, 7466264, 4369056, 5749888, 2774549, 9141301, -491774, -620623, -3162707,
-5910949, -2821257, -7205882, -10180146, 1675037, -4692252, -3892314, 4099010, -639950, -2448131,
-9360344, -284005, 11518565, 464930, -3877282, -2642479, 4363687, 2906619, -1679332, -8412230,
-13105019, 7607998, 577673, 7145752, 4589710, 4747550, -3619584, 5311801, 3078418, 1294933,
--1000727, -1974611, -5032628, -7579007, 2748242, 4049617, -5578089, 2692945, 5816460, 8099772,
-2624225, 7322383, 3842922, 6250251, -8367133, 2815351, 1358820, 1933272, 758062, -494995,
-4306779, 3516505, 3848828, 4893579, -1125281, 2339147, 1828582, 6895033, 8905615, -4520453,
--4910758, 14810658, 4880157, 6683506, -5022965, 2361695, -12853763, 953483, -9189083, 7437810,
-5178120, -3781182, 6407555, 3660923, -6082748, -1392643, 9680856, -108448, 6794639, -1570347,
-1685238, 7602629, -8826158, -545461, 1937030, 2871723, 1057099, 3133716, 842887, 9145059,
--3706020, -2460480, -2236604, 6929393, 1366873, -3089692, 4654134, 11585674, -7483981, 1510755,
-2100239, -614717, 5210332, -2248416, 9368397, 3015604, 2837363, -7135552, -73014, -1855426,
-4734128, 3105261, 5087389, -4900558, -2503429, 4217658, -7861938, -4789963, 2747705, 9305584,
-6451041, 8239358, -8057359, -2775086, -8148090, -2277943, 3755949, -666794, -7488276, 1287417,
--4063576, 179315, -8039642, -10948409, -3060164, -7453379, 2560338, -17775260, -16087337, -11763379,
-2750390, 2772938, 12191265, -6334003, 11551315, -5650567, -20725902, -2470143, -2492155, -8463233,
--13621489, -5441724, -898185, -8715562, -678068, -13038447, 297963, -13712220, 6846715, -3990562,
-4830765, -3273839, -819802, -4770635, -5276368, 7293928, 996432, -3081102, 8536248, 271120,
-899796, 2373506, 7822746, 6602439, 5061082, -625455, -10469520, -1809255, 4228396, 665720,
-5551245, -3702262, 2187749, -15362561, 4094178, 7990250, -11538967, 5692443, 1778117, 9587978,
-7471633, -837519, -3213709, -1079647, 6604049, 2652679, -9735080, -8396124, -13273596, -7055558,
--9022116, -2785823, -11038603, -3099893, -3903589, 10066330, -5349382, 4574140, -3028489, -2380486,
--3670050, -8304856, -4064650, -21606370, 18331994, -3872450, 11227045, 6995428, 539555, -13909252,
-12724377, 2662343, -107374, 8515310, 6192269, -5085778, 796716, 13795972, 5098663, -4609037,
-9881646, -3789235, -3100967, -1560147, 3741990, 1240172, -804233, 2421825, 4692252, 4675609,
-4371203, -8098698, 6583648, -6493991, 11363410, -5276368, 11304891, 4704063, 1784559, -8964134,
--9707163, -2097018, -2726767, 13644037, 4217121, 11228655, 4855461, -7262253, 1079647, -471910,
-4937065, 1798518, 4431870, 511638, -5148055, -1790465, 6942815, 17211544, 11911555, 3021510,
-4575751, 703838, -1435593, 9855339, 7420093, -868120, 10579041, 15932181, 20146080, 2602213,
--10293426, -11055246, 5523865, 4908611, 386547, 6056441, 1198833, -1299228, 1158567, 14964740,
-10210211, -15610596, 12621298, 5057861, -10782515, 24293946, 3372086, -12752832, 2573222, 6618545,
-310848, 4732517, 17248052, -17030620, 10617159, -6990596, 9358197, -3885335, 1673964, -15758772,
-2226941, -1843078, 5826660, -6121402, 408559, 1064615, -322123, -9283572, 8280160, 806917,
--1484985, 4028679, -2311766, 3972308, -2764885, 12284680, 9162776, 12161200, 11556683, -2073396,
-3586298, 5186710, -170725, -6511171, 7879655, -10336376, 2369748, 10035191, -6867653, 5255966,
--12218108, 3490198, -1923072, -2845953, -1973001, 699543, 2444910, 3174518, 10810433, -8067559,
--1596117, 7623567, 15705622, -15425375, 2445447, -4127464, 3618510, -3301756, 23135378, -15969225,
-3539590, -9400073, -6910603, 1046898, 71404, -244276, -24182814, 10991358, -15600395, -3695819,
-20865488, -6901476, -927713, 10958609, 2185065, 6577743, -16449188, 14812805, 486405, 660888,
--4560719, -10072235, -1838246, -1963874, -10795400, -6677601, 10865194, -4099010, 1655173, -6068789,
--25586730, 8005819, 593779, -8211441, 4232154, 9229348, -1468879, 600759, -2527588, 1969779,
-5997385, 1623498, 9977209, 6767258, 1053878, 8769249, -8055748, -7796977, -11066520, 3477850,
-5389647, 1291175, -17220672, 4232691, -14831059, 20038170, -5567352, 6826851, 16754667, -7349226,
-10346576, 2320356, 11296838, 4422206, -6681896, -18398566, -13780403, -10484552, -2338073, -10977936,
--3133716, -9643812, -7103339, 17638894, 2675765, -8105677, -8231305, 3249143, 5087389, -1949378,
-651224, -33215666, 10614475, 1520955, 6424198, -21045340, -25613038, 14247480, -12948790, -15002858,
--4789963, 8630737, 18702436, -13596256, 325881, 8420283, -3492345, -4870493, 4294431, 2391223,
-13903346, 4010426, -14741938, -1429150, -7818451, -1399086, -9036611, -11938398, 1005559, 10050223,
--1494649, 3927748, -9817221, 1669669, 10200547, 7401303, 590558, -206695, 6114423, 5356361,
-3422552, 8826158, -13297756, 12642236, 9237401, 2188286, -11124502, -490700, 7311645, -9540733,
-8600672, -7896298, 9825275, -4231080, 13039521, -23153632, 22239340, 3850438, 20906828, -221191,
--5414343, -3221762, 6986838, -1285269, -19009526, -1196685, -2222109, -20825760, 4946192, 11198053,
--18909668, 12552579, -16873316, 2410014, 4754529, 594316, -21175262, -12306692, -11578695, -857383,
--1846299, -11474005, -11162083, 17796734, 3873524, 11831561, 11479911, 3473555, -8238821, 2241436,
-29795262, -19907710, 5221607, -3222299, -10712185, 994285, 4298189, 5085242, 200790, 401043,
--5464809, -8181376, -12905840, -6372658, 10328859, -8075613, -12979928, 7956964, -4452271, 3235184,
--1452773, 6237903, -5364414, 12814035, -4231080, 1633161, -6979, 1592896, 11809013, 4185446,
--5109401, 6401649, -4671314, 9692667, -5475010, 4099546, -13345000, -9692131, -7082938, 2551211,
--6624450, -11643119, 5081483, 8898098, 2638721, -6162741, 4071092, 6273874, 7002944, 18983218,
-26031260, 35505420, -3754875, 5631239, 8344585, 4937065, 4456566, 5559299, -7727183, 13857175,
--2640331, 18059800, 21776022, 16192564, 5461051, 8754754, 1198833, 30881352, 5191542, -7800198,
-448287, 36171140, 29051696, -11610907, -5035313, -13971529, 9128416, 4948876, 17956722, -2225867,
--6946573, -2546379, -10703595, 3416647, 950262, 17279728, -5638755, 7039452, -21573084, 13105019,
--1291175, 9537512, 301185, 8765491, 1700807, -11491722, -6123550, -9677098, -7852274, 10181220,
-22138408, 10670309, -2343979, -5588290, -75699, -612033, 5633924, 8647917, -13828184, 1030255,
--4767414, -3324842, -15112379, -10320270, -24575266, 1900523, -1271310, 10364293, -7461432, 17322676,
--12124156, -3649112, 31336618, 32937568, -21895206, 6593849, 17752174, -8666707, -5478768, 11260331,
--4049081, -11166915, 34404300, -6583648, -54148800, 20017768, -1700270, -25064892, 19788524, 25018184,
--9495099, 18440978, 18037788, -6605660, -1843078, 15366319, -16749299, 6757594, -14143864, -7499013,
-1608465, 5268851, 10915123, 4754529, -10384157, -2768107, 7881802, -11034845, 9205726, -6036040,
--13627931, 10466298, 5161477, 4650913, -3987877, -4344360, -5302674, -1768990, 8960376, -21219822,
-9243306, -1605781, 16027207, -11764989, -649614, -14354318, 5055177, -22613002, 1723356, -311922,
--9113921, -7724499, 2838974, -15691663, -25418690, 13736916, -1929514, 3183645, -15205795, 7647190,
--2852932, 8297877, 9942312, 3742527, -10768020, 7140383, -5331128, -3729105, -19523310, 1286880,
--13934485, -16501801, -22087944, -10514617, 3367791, 4510253, -22651120, -12751758, 1246077, -9705552,
--30201674, -25706454, -24466282, -6810208, -14353244, 11384885, 19112068, 3300682, -17313550, -23021562,
--23261542, -4231617, 587337, 10867878, -14171781, 28211492, 31251792, -5813238, 21561272, -4367982,
--6393059, -6500970, 21082384, -15756088, -2371359, -6831683, 32607392, 2451890, 12956843, 5340255,
--1269163, 16726750, 10337986, 13901199, 5701032, -761820, -3693135, 13315472, -249108, -10718628,
-16647830, 748935, 14837501, -13398150, 12008729, 4712116, -12869870, -10317048, 28928752, 18587008,
-333397, 10720238, 10114648, -16130287, -9175124, 6675453, 6437619, 12971875, 3664144, 3585761,
-6902550, 15566572, 8297877, 4660577, -12264279, 41225780, 29470992, 3966402, -15708843, 9857487,
--3603478, 5832029, -1584843, 9426379, -3300146, 2126546, 24976308, -14679124, -4655745, -19996294,
-8651675, -4908074, -718333, 19710678, 8929237, 3234110, 4566087, -6803228, -12749610, 12780212,
--8927626, -20243254, 55493124, -60555280, -6344204, -31446140, 40416180, 11589969, 7716983, -14502494,
-4413079, -11639361, 36219996, -5287105, -1626182, 4664872, -1126892, -12852153, 5928666, 9154723,
-11344619, -22890028, -12024298, -11224897, 5477694, -6103149, -5927055, 419833, 289910, 16966732,
--7632694, 2031520, 12367895, -201327, -15378130, 3303904, 12950400, -155156, -24543054, 20025286,
-2629057, 1749662, 327491, -9092446, 8572755, -44700408, -31914828, -2994666, -11244761, 3635690,
-3808562, -20053202, 34251828, -11863773, 47063716, -4975720, -16200617, 17707076, 2850785, 16009491,
-21824340, 8594230, -22183506, -4445828, 25089052, 59854128, 1918240, -13146895, 24126442, 3761855,
-28344636, 6179921, 38237556, -8643085, -2405719, -129923, 7118372, 1540283, 79226040, 23972896,
-8027831, -3417183, -9417790, -12415140, 25333864, 23032298, -28423020, 15426986, 11653320, 1829119,
--9125732, -15710990, -38454452, -15200963, 11272679, 2805151, -12892418, 21601538, -8165807, 8022462,
-8331163, -6727530, -6112812, 22475564, -166967, -10356240, 14027363, -14300630, 28326920, -15706159,
--9509594, -3064459, 10514080, 4493610, 28601260, -10672994, -18534932, -7945690, 6856379, 267362,
-14818711, 2494302, 366146, -8359617, 11654394, 53294640, 22386980, -22721988, 16544214, -13072807,
--18096844, 11221676, -2013803, 1386738, -2646237, 7052337, -16352551, -25303262, -60999808, -18822158,
-18965502, -11382737, -22731652, 4919885, -7584912, 4402879, -27114128, -25826712, -14067092, 2918430,
-3751117, 20696374, -3451006, -13291313, -32837172, -11796128, 18494666, -13482976, 49625124, 41770704,
-19971598, -10469520, -16445430, 30064234, 25892748, -32210108, -5921686, -19453518, 29080686, -4064113,
--39419208, -16776679, 15080704, 25859462, -45700064, 19369766, -31413928, 12635794, -18249316, -4203699,
-23092428, -6828998, 4128537, 14974940, 30499636, -18818400, -32020592, 7991861, -1904818, 4212826,
-31186294, 8327405, 23411330, -28267864, -4742181, 9855876, -25213606, 42668888, -4399657, 25764436,
--3053722, -5417565, 21114596, 21150030, -11543798, 46786688, -10573136, -19825570, 22582402, 40139152,
-2374043, 7434589, 1932198, 17695266, -18883360, 14099841, 60180544, 27671938, -2391760, 26073136,
-31795106, -24723980, -75068512, 4616016, 43123620, 48872968, 11725798, -7392176, -24698210, 21677774,
-51570748, 14193256, 4184372, 32744294, -68387152, 50054624, 9512279, -32097902, -674310, 27369142,
--20165408, -548682, 14891188, -21407728, 715112, -19418084, -12366821, 17521856, -17225504, -10794327,
--35137128, 13277355, 32467268, 7762617, -15768972, -27067958, -4813585, 17412872, 9628780, -23447300,
--1238024, 24380382, -4076998, -44023, -9488656, -8278013, 60950956, -31428424, -7991861, -8834211,
-9922448, 26515518, -30698278, -19130322, 40157408, -6935299, -2815888, -50624244, -40164388, 14456860,
-27127550, 12501039, -49555332, 31539018, -806917, -10110890, 7305740, -38057704, -9505836, -7311645,
--17121888, 29061360, -24302536, -16772921, -26004416, -18548890, -34328600, 7395934, -53971096, -18925236,
-7989176, -31182000, 8714489, 11236708, 9208410, -4934918, -6504191, -25176024, 34280820, -12871480,
-3645354, -38524784, 23554138, -552440, 30428232, -6062883, 31442918, 4151623, -3987877, 14282914,
-36416492, 17715666, 9299141, 7575786, 4585952, 14651207, -18433462, -1139240, -13881871, -14065481,
-22235046, 14340896, 8370892, -6019397, -5869073, -2201708, 23153632, 4068408, -10687489, -16433619,
--1128503, -3472481, 17223892, 3242700, 14295262, 28272160, -8203388, -69504920, 4068408, 57638996,
-5356361, -41126460, -6059662, 16810502, 11940009, 23128398, 19588272, -892279, -14060112, -12754979,
-16914118, -10000831, 1011465, 7106561, -73883640, -11721503, -15156940, 12501039, 55979528, -74088,
-3236258, -12273406, 2408940, 12848395, 22393422, 13622026, -15965467, -6348499, -37314676, -994822,
-22119082, -9550934, -7529615, 10129143, 21772262, 21088826, -9261560, 5425618, -16581258, -129274224,
--230552768, -101205000, -160648416, -182510880, 90360744, 22304838, 81888384, 274791456, 174985552, 138440224,
-214620048, 100026568, -6750615, 76334992, 8448738, -105668544, -78368656, -87021408, -181626112, -150184800,
--72756208, -135877728, -148222000, -69413112, -96462280, -152519664, -85368920, -2920041, -100809328, -93402656,
-4201552, -30700964, -92856120, 75932336, 45098232, -79912696, 53222696, 87503520, 2485712, 44757856,
-189183648, 83421152, 48255568, 225193184, 154351456, 84588848, 222359584, 302291616, 183049888, 270444960,
-353622912, 250164672, 162716448, 218194000, 110683992, -124140664, -84353160, -160112624, -363330080, -363053600,
--367307200, -550160640, -542817856, -543141568, -565110336, -530449920, -514880672, -400015008, -316757600, -230056160,
--81302656, 63319628, 121521264, 280087168, 421957440, 299317888, 219650000, 0, 0, 0,
-0, 0, 0, },
+-721555, -141734, 1270774, -1389959, -1471563, -1053341, 2721399, -7006703, 2644089, -1918777,
+4832, 372052, -279173, -894964, 426276, 1571958, 2938295, -1367947, 3275450, -2646237,
+-2936147, -2094333, 1474784, -2743947, -1764158, 2119030, 412854, -886374, 2610266, -599148,
+3758, 1705639, 921807, -1284732, -1789928, -1931662, -2195802, -4995584, 1326071, -1185411,
+-395137, 7590818, 661962, -1540283, 4350802, -1591822, 75162, -1959579, -3619584, 4491999,
+-1444183, -741419, 51003, -3106335, 995896, -136365, 2281165, -457414, 2287070, 889595,
+-629213, 2748779, -356482, 1005559, 1341104, -80531, -6255083, -71941, -914291, -2363306,
+1582696, -525597, -1345935, -744640, -3873524, 2535641, 3999152, -1262720, 3567507, -455267,
+3760244, 1938641, -685584, -1325534, 3809636, 412317, 854699, -4099546, -554051, -205622,
+-67646, 5834176, 2925410, -117575, -4184372, -3042448, -1729798, 612033, 24696, 1326608,
+2762738, 883690, 1097901, -4269198, -543850, -4156992, 295816, -2269890, 2895882, 2830920,
+-977105, -2222109, 3022583, 674847, -959925, -3861176, -404264, -2464774, 828929, 2428804,
+-3841312, -1907502, -537408, -1531156, 10253161, 2425046, 5971615, 427349, 2041183, -53687,
+-2804614, -2738042, -3335579, 1593433, -2733747, 1994476, 177167, 2426120, 2668785, 6116571,
+1977296, -648003, -224412, -3862249, 6098317, 5329518, 1020592, 1445793, 1575716, 1413044,
+13799730, -3500935, -3128884, -1321776, -2978023, 462246, -6865505, 344134, 1107565, 168041,
+4299263, 352187, -1162862, -4155918, 2323577, -5788006, -5097053, 1602560, -2615635, -1278290,
+-1093606, 798327, 3535295, 5060009, 122407, -936303, 5900212, 2101313, -642635, 105227,
+-2816425, -36507, 6478958, -105764, -3460670, -2651606, -1051193, 2203318, -3467112, -3957812,
+-4290673, -3316252, 2741263, -3118146, 791885, -3764539, 921271, 4410395, -102005, 3124052,
+-1762010, -2567854, -1676648, 2169495, -583042, 3387119, 4519916, 718333, -2006824, -2582349,
+-655519, -367220, -331249, 190589, -5000953, -412854, -2705293, -2163053, 1423245, 556198,
+580357, 1759863, -6134287, -2735357, 1100049, -738734, 2367601, -10449655, -5397700, -2619930,
+-7298760, -2833068, -7028714, 1458678, -1064615, -4540854, -5193153, -1162326, -4335770, -552977,
+2692408, -697932, -6343667, -2623151, -419833, -2736968, -2402497, 1241246, 4990752, 6607807,
+-1653026, -2326262, 3442416, 4065724, -1927904, -1481227, -1424319, -3614215, 438624, 1039382,
+-3401077, -2572686, -1205275, 2298881, 5479842, -23622, -2574833, -410169, -3586835, -1528472,
+-5382668, -2676838, -2701535, -8034810, -1376000, -3861176, -2975339, -8772471, 4629438, -4033511,
+-3815542, 1112933, -1106491, -974421, 507343, -7327214, -2405719, -2849711, -1154273, -4364224,
+-1157494, -2223183, 1232119, 2106682, -2887292, -1498407, -3953518, 928250, -1123671, -872415,
+-614717, -5223217, -748398, -4232154, -18380312, -1363115, -8993125, 8270497, -4613332, 14806363,
+-9281961, 9350144, -8198019, -449898, 45097, -6398428, 5191005, 213675, -2204392, 1526324,
+-1893007, -837519, -6052146, -63888, -4499515, 3731253, 1557463, 4559645, -2430952, 6804302,
+6436009, -6036040, 1971927, -5153424, 5716602, -30602, -3464428, 222801, -198642, -304406,
+4321811, 459562, -5538361, 2298344, 4632659, -434865, 5419175, -2504503, 4510790, -6310381,
+-2677375, 3810173, -3063386, 791348, 5883032, -5163088, 8485782, 2890513, -7359964, 1626719,
+-7044820, 2416993, 4814659, 2519535, 4687957, 5492190, 2622615, -1129040, 206695, -57445,
+2581275, 3725884, -682363, 7423851, 2382096, 4852776, 3884798, 897648, 1433982, 11991549,
+-150861, -3548180, -1331440, -4781909, -5653788, 8689793, -1943473, -1530082, 7975218, -868657,
+-1788317, 3382824, 6164352, 1576790, 2961380, -406411, -7151658, -2088965, 5028333, -8174397,
+-8041790, -3197066, 1527935, -5845451, -3547106, -151398, -969589, 5223217, -2301029, -1475321,
+5608154, 7776575, -7156490, 1543504, -1838783, 2652142, 630823, -3388729, -843424, 3051574,
+4969277, -1683090, -7408819, -1942399, -797790, -2231236, -3771518, 199716, -610959, 986232,
+-1144609, 664109, 6630893, -5361730, 512712, -4179003, -3221762, -5619428, -1703491, -3418794,
+-7362111, -663036, 392453, -3240553, -647466, -3422015, 2720862, 3070365, -607738, 582505,
+-2632278, -1194538, 8783208, -1584306, -3485903, -11769284, 16247861, 18202608, 3806415, -6064494,
+4478577, 7417946, 7466264, 4369056, 5749888, 2774549, 9141301, -491774, -620623, -3162707,
+5910949, -2821257, -7205882, -10180146, 1675037, -4692252, -3892314, 4099010, -639950, -2448131,
+9360344, -284005, 11518565, 464930, -3877282, -2642479, 4363687, 2906619, -1679332, -8412230,
+13105019, 7607998, 577673, 7145752, 4589710, 4747550, -3619584, 5311801, 3078418, 1294933,
+-1000727, -1974611, -5032628, -7579007, 2748242, 4049617, -5578089, 2692945, 5816460, 8099772,
+2624225, 7322383, 3842922, 6250251, -8367133, 2815351, 1358820, 1933272, 758062, -494995,
+4306779, 3516505, 3848828, 4893579, -1125281, 2339147, 1828582, 6895033, 8905615, -4520453,
+-4910758, 14810658, 4880157, 6683506, -5022965, 2361695, -12853763, 953483, -9189083, 7437810,
+5178120, -3781182, 6407555, 3660923, -6082748, -1392643, 9680856, -108448, 6794639, -1570347,
+1685238, 7602629, -8826158, -545461, 1937030, 2871723, 1057099, 3133716, 842887, 9145059,
+-3706020, -2460480, -2236604, 6929393, 1366873, -3089692, 4654134, 11585674, -7483981, 1510755,
+2100239, -614717, 5210332, -2248416, 9368397, 3015604, 2837363, -7135552, -73014, -1855426,
+4734128, 3105261, 5087389, -4900558, -2503429, 4217658, -7861938, -4789963, 2747705, 9305584,
+6451041, 8239358, -8057359, -2775086, -8148090, -2277943, 3755949, -666794, -7488276, 1287417,
+-4063576, 179315, -8039642, -10948409, -3060164, -7453379, 2560338, -17775260, -16087337, -11763379,
+2750390, 2772938, 12191265, -6334003, 11551315, -5650567, -20725902, -2470143, -2492155, -8463233,
+-13621489, -5441724, -898185, -8715562, -678068, -13038447, 297963, -13712220, 6846715, -3990562,
+4830765, -3273839, -819802, -4770635, -5276368, 7293928, 996432, -3081102, 8536248, 271120,
+899796, 2373506, 7822746, 6602439, 5061082, -625455, -10469520, -1809255, 4228396, 665720,
+5551245, -3702262, 2187749, -15362561, 4094178, 7990250, -11538967, 5692443, 1778117, 9587978,
+7471633, -837519, -3213709, -1079647, 6604049, 2652679, -9735080, -8396124, -13273596, -7055558,
+-9022116, -2785823, -11038603, -3099893, -3903589, 10066330, -5349382, 4574140, -3028489, -2380486,
+-3670050, -8304856, -4064650, -21606370, 18331994, -3872450, 11227045, 6995428, 539555, -13909252,
+12724377, 2662343, -107374, 8515310, 6192269, -5085778, 796716, 13795972, 5098663, -4609037,
+9881646, -3789235, -3100967, -1560147, 3741990, 1240172, -804233, 2421825, 4692252, 4675609,
+4371203, -8098698, 6583648, -6493991, 11363410, -5276368, 11304891, 4704063, 1784559, -8964134,
+-9707163, -2097018, -2726767, 13644037, 4217121, 11228655, 4855461, -7262253, 1079647, -471910,
+4937065, 1798518, 4431870, 511638, -5148055, -1790465, 6942815, 17211544, 11911555, 3021510,
+4575751, 703838, -1435593, 9855339, 7420093, -868120, 10579041, 15932181, 20146080, 2602213,
+-10293426, -11055246, 5523865, 4908611, 386547, 6056441, 1198833, -1299228, 1158567, 14964740,
+10210211, -15610596, 12621298, 5057861, -10782515, 24293946, 3372086, -12752832, 2573222, 6618545,
+310848, 4732517, 17248052, -17030620, 10617159, -6990596, 9358197, -3885335, 1673964, -15758772,
+2226941, -1843078, 5826660, -6121402, 408559, 1064615, -322123, -9283572, 8280160, 806917,
+-1484985, 4028679, -2311766, 3972308, -2764885, 12284680, 9162776, 12161200, 11556683, -2073396,
+3586298, 5186710, -170725, -6511171, 7879655, -10336376, 2369748, 10035191, -6867653, 5255966,
+-12218108, 3490198, -1923072, -2845953, -1973001, 699543, 2444910, 3174518, 10810433, -8067559,
+-1596117, 7623567, 15705622, -15425375, 2445447, -4127464, 3618510, -3301756, 23135378, -15969225,
+3539590, -9400073, -6910603, 1046898, 71404, -244276, -24182814, 10991358, -15600395, -3695819,
+20865488, -6901476, -927713, 10958609, 2185065, 6577743, -16449188, 14812805, 486405, 660888,
+-4560719, -10072235, -1838246, -1963874, -10795400, -6677601, 10865194, -4099010, 1655173, -6068789,
+-25586730, 8005819, 593779, -8211441, 4232154, 9229348, -1468879, 600759, -2527588, 1969779,
+5997385, 1623498, 9977209, 6767258, 1053878, 8769249, -8055748, -7796977, -11066520, 3477850,
+5389647, 1291175, -17220672, 4232691, -14831059, 20038170, -5567352, 6826851, 16754667, -7349226,
+10346576, 2320356, 11296838, 4422206, -6681896, -18398566, -13780403, -10484552, -2338073, -10977936,
+-3133716, -9643812, -7103339, 17638894, 2675765, -8105677, -8231305, 3249143, 5087389, -1949378,
+651224, -33215666, 10614475, 1520955, 6424198, -21045340, -25613038, 14247480, -12948790, -15002858,
+-4789963, 8630737, 18702436, -13596256, 325881, 8420283, -3492345, -4870493, 4294431, 2391223,
+13903346, 4010426, -14741938, -1429150, -7818451, -1399086, -9036611, -11938398, 1005559, 10050223,
+-1494649, 3927748, -9817221, 1669669, 10200547, 7401303, 590558, -206695, 6114423, 5356361,
+3422552, 8826158, -13297756, 12642236, 9237401, 2188286, -11124502, -490700, 7311645, -9540733,
+8600672, -7896298, 9825275, -4231080, 13039521, -23153632, 22239340, 3850438, 20906828, -221191,
+-5414343, -3221762, 6986838, -1285269, -19009526, -1196685, -2222109, -20825760, 4946192, 11198053,
+-18909668, 12552579, -16873316, 2410014, 4754529, 594316, -21175262, -12306692, -11578695, -857383,
+-1846299, -11474005, -11162083, 17796734, 3873524, 11831561, 11479911, 3473555, -8238821, 2241436,
+29795262, -19907710, 5221607, -3222299, -10712185, 994285, 4298189, 5085242, 200790, 401043,
+-5464809, -8181376, -12905840, -6372658, 10328859, -8075613, -12979928, 7956964, -4452271, 3235184,
+-1452773, 6237903, -5364414, 12814035, -4231080, 1633161, -6979, 1592896, 11809013, 4185446,
+-5109401, 6401649, -4671314, 9692667, -5475010, 4099546, -13345000, -9692131, -7082938, 2551211,
+-6624450, -11643119, 5081483, 8898098, 2638721, -6162741, 4071092, 6273874, 7002944, 18983218,
+26031260, 35505420, -3754875, 5631239, 8344585, 4937065, 4456566, 5559299, -7727183, 13857175,
+-2640331, 18059800, 21776022, 16192564, 5461051, 8754754, 1198833, 30881352, 5191542, -7800198,
+448287, 36171140, 29051696, -11610907, -5035313, -13971529, 9128416, 4948876, 17956722, -2225867,
+-6946573, -2546379, -10703595, 3416647, 950262, 17279728, -5638755, 7039452, -21573084, 13105019,
+-1291175, 9537512, 301185, 8765491, 1700807, -11491722, -6123550, -9677098, -7852274, 10181220,
+22138408, 10670309, -2343979, -5588290, -75699, -612033, 5633924, 8647917, -13828184, 1030255,
+-4767414, -3324842, -15112379, -10320270, -24575266, 1900523, -1271310, 10364293, -7461432, 17322676,
+-12124156, -3649112, 31336618, 32937568, -21895206, 6593849, 17752174, -8666707, -5478768, 11260331,
+-4049081, -11166915, 34404300, -6583648, -54148800, 20017768, -1700270, -25064892, 19788524, 25018184,
+-9495099, 18440978, 18037788, -6605660, -1843078, 15366319, -16749299, 6757594, -14143864, -7499013,
+1608465, 5268851, 10915123, 4754529, -10384157, -2768107, 7881802, -11034845, 9205726, -6036040,
+-13627931, 10466298, 5161477, 4650913, -3987877, -4344360, -5302674, -1768990, 8960376, -21219822,
+9243306, -1605781, 16027207, -11764989, -649614, -14354318, 5055177, -22613002, 1723356, -311922,
+-9113921, -7724499, 2838974, -15691663, -25418690, 13736916, -1929514, 3183645, -15205795, 7647190,
+-2852932, 8297877, 9942312, 3742527, -10768020, 7140383, -5331128, -3729105, -19523310, 1286880,
+-13934485, -16501801, -22087944, -10514617, 3367791, 4510253, -22651120, -12751758, 1246077, -9705552,
+-30201674, -25706454, -24466282, -6810208, -14353244, 11384885, 19112068, 3300682, -17313550, -23021562,
+-23261542, -4231617, 587337, 10867878, -14171781, 28211492, 31251792, -5813238, 21561272, -4367982,
+-6393059, -6500970, 21082384, -15756088, -2371359, -6831683, 32607392, 2451890, 12956843, 5340255,
+-1269163, 16726750, 10337986, 13901199, 5701032, -761820, -3693135, 13315472, -249108, -10718628,
+16647830, 748935, 14837501, -13398150, 12008729, 4712116, -12869870, -10317048, 28928752, 18587008,
+333397, 10720238, 10114648, -16130287, -9175124, 6675453, 6437619, 12971875, 3664144, 3585761,
+6902550, 15566572, 8297877, 4660577, -12264279, 41225780, 29470992, 3966402, -15708843, 9857487,
+-3603478, 5832029, -1584843, 9426379, -3300146, 2126546, 24976308, -14679124, -4655745, -19996294,
+8651675, -4908074, -718333, 19710678, 8929237, 3234110, 4566087, -6803228, -12749610, 12780212,
+-8927626, -20243254, 55493124, -60555280, -6344204, -31446140, 40416180, 11589969, 7716983, -14502494,
+4413079, -11639361, 36219996, -5287105, -1626182, 4664872, -1126892, -12852153, 5928666, 9154723,
+11344619, -22890028, -12024298, -11224897, 5477694, -6103149, -5927055, 419833, 289910, 16966732,
+-7632694, 2031520, 12367895, -201327, -15378130, 3303904, 12950400, -155156, -24543054, 20025286,
+2629057, 1749662, 327491, -9092446, 8572755, -44700408, -31914828, -2994666, -11244761, 3635690,
+3808562, -20053202, 34251828, -11863773, 47063716, -4975720, -16200617, 17707076, 2850785, 16009491,
+21824340, 8594230, -22183506, -4445828, 25089052, 59854128, 1918240, -13146895, 24126442, 3761855,
+28344636, 6179921, 38237556, -8643085, -2405719, -129923, 7118372, 1540283, 79226040, 23972896,
+8027831, -3417183, -9417790, -12415140, 25333864, 23032298, -28423020, 15426986, 11653320, 1829119,
+-9125732, -15710990, -38454452, -15200963, 11272679, 2805151, -12892418, 21601538, -8165807, 8022462,
+8331163, -6727530, -6112812, 22475564, -166967, -10356240, 14027363, -14300630, 28326920, -15706159,
+-9509594, -3064459, 10514080, 4493610, 28601260, -10672994, -18534932, -7945690, 6856379, 267362,
+14818711, 2494302, 366146, -8359617, 11654394, 53294640, 22386980, -22721988, 16544214, -13072807,
+-18096844, 11221676, -2013803, 1386738, -2646237, 7052337, -16352551, -25303262, -60999808, -18822158,
+18965502, -11382737, -22731652, 4919885, -7584912, 4402879, -27114128, -25826712, -14067092, 2918430,
+3751117, 20696374, -3451006, -13291313, -32837172, -11796128, 18494666, -13482976, 49625124, 41770704,
+19971598, -10469520, -16445430, 30064234, 25892748, -32210108, -5921686, -19453518, 29080686, -4064113,
+-39419208, -16776679, 15080704, 25859462, -45700064, 19369766, -31413928, 12635794, -18249316, -4203699,
+23092428, -6828998, 4128537, 14974940, 30499636, -18818400, -32020592, 7991861, -1904818, 4212826,
+31186294, 8327405, 23411330, -28267864, -4742181, 9855876, -25213606, 42668888, -4399657, 25764436,
+-3053722, -5417565, 21114596, 21150030, -11543798, 46786688, -10573136, -19825570, 22582402, 40139152,
+2374043, 7434589, 1932198, 17695266, -18883360, 14099841, 60180544, 27671938, -2391760, 26073136,
+31795106, -24723980, -75068512, 4616016, 43123620, 48872968, 11725798, -7392176, -24698210, 21677774,
+51570748, 14193256, 4184372, 32744294, -68387152, 50054624, 9512279, -32097902, -674310, 27369142,
+-20165408, -548682, 14891188, -21407728, 715112, -19418084, -12366821, 17521856, -17225504, -10794327,
+-35137128, 13277355, 32467268, 7762617, -15768972, -27067958, -4813585, 17412872, 9628780, -23447300,
+-1238024, 24380382, -4076998, -44023, -9488656, -8278013, 60950956, -31428424, -7991861, -8834211,
+9922448, 26515518, -30698278, -19130322, 40157408, -6935299, -2815888, -50624244, -40164388, 14456860,
+27127550, 12501039, -49555332, 31539018, -806917, -10110890, 7305740, -38057704, -9505836, -7311645,
+-17121888, 29061360, -24302536, -16772921, -26004416, -18548890, -34328600, 7395934, -53971096, -18925236,
+7989176, -31182000, 8714489, 11236708, 9208410, -4934918, -6504191, -25176024, 34280820, -12871480,
+3645354, -38524784, 23554138, -552440, 30428232, -6062883, 31442918, 4151623, -3987877, 14282914,
+36416492, 17715666, 9299141, 7575786, 4585952, 14651207, -18433462, -1139240, -13881871, -14065481,
+22235046, 14340896, 8370892, -6019397, -5869073, -2201708, 23153632, 4068408, -10687489, -16433619,
+-1128503, -3472481, 17223892, 3242700, 14295262, 28272160, -8203388, -69504920, 4068408, 57638996,
+5356361, -41126460, -6059662, 16810502, 11940009, 23128398, 19588272, -892279, -14060112, -12754979,
+16914118, -10000831, 1011465, 7106561, -73883640, -11721503, -15156940, 12501039, 55979528, -74088,
+3236258, -12273406, 2408940, 12848395, 22393422, 13622026, -15965467, -6348499, -37314676, -994822,
+22119082, -9550934, -7529615, 10129143, 21772262, 21088826, -9261560, 5425618, -16581258, -129274224,
+-230552768, -101205000, -160648416, -182510880, 90360744, 22304838, 81888384, 274791456, 174985552, 138440224,
+214620048, 100026568, -6750615, 76334992, 8448738, -105668544, -78368656, -87021408, -181626112, -150184800,
+-72756208, -135877728, -148222000, -69413112, -96462280, -152519664, -85368920, -2920041, -100809328, -93402656,
+4201552, -30700964, -92856120, 75932336, 45098232, -79912696, 53222696, 87503520, 2485712, 44757856,
+189183648, 83421152, 48255568, 225193184, 154351456, 84588848, 222359584, 302291616, 183049888, 270444960,
+353622912, 250164672, 162716448, 218194000, 110683992, -124140664, -84353160, -160112624, -363330080, -363053600,
+-367307200, -550160640, -542817856, -543141568, -565110336, -530449920, -514880672, -400015008, -316757600, -230056160,
+-81302656, 63319628, 121521264, 280087168, 421957440, 299317888, 219650000, 0, 0, 0,
+0, 0, 0, },
{
12633646,
-1332514, 2347737, 4104378, -5537287, -1505923, -3160022, -670552, -1440425, -3429532, -386010,
--508417, -3372086, 4203699, -2761664, -1741072, -284542, -1544578, 3635690, -1651415, -2587718,
-1075889, 1333587, 3838627, -387621, 816044, -2459406, -484258, 279710, 1143535, 260382,
--103079, 3945464, -2310156, 889058, 238908, -2445447, -5657546, -2268280, 1213328, 1976222,
-2039036, -5528160, 4306242, -2130304, -2319819, 2320893, 932545, -4861903, 1867774, -4975183,
--1459752, 2103997, -3885872, -1548336, 3351685, -1257352, -2206540, -2840584, -5541045, 4292283,
-1531156, -1764695, -1698123, -3736622, -4242891, -4867272, -1057636, -3209951, -52076, -222801,
--271120, 305480, -307627, -3107409, -7095286, -796716, 6358699, -5968931, 2101850, -9950365,
--36507, -3712999, 3800509, -3482682, 766115, -2423972, -4217121, -1240172, -510564, 2777233,
-3604551, -3727495, -6260989, 3018825, 994822, 2043331, 1258425, 2331630, -3658775, -2898566,
-549219, -908386, 3122978, 2075006, -2804614, -829466, 2371359, 4285304, 2724083, -222265,
--3620658, 1648194, -666794, -2168422, 2452963, 801011, -3311957, -3026341, -2255932, 1525787,
--3231963, -2033667, 2667175, 714038, -112743, -3687230, 1225676, -3230889, -7430294, 369367,
--2520609, -5175973, 2220498, -1764695, -1342714, -2065342, 140123, 3208341, 2248416, 756988,
-1722819, 2249489, -5530844, 2364380, -2153389, -2753074, -1161789, 1183800, 421444, 3149822,
-14850923, -1255741, 2726767, 3262565, -1512365, 1530082, 5927592, -4626217, -800475, 1675037,
--2275259, -471910, 4369056, -1427003, -952409, -328565, 1715839, -861141, 2128693, -1502165,
--1404454, -702227, -3326989, -5798206, -1036161, -1890859, -718870, 3343632, -6040872, 7446400,
-108448, 76236, 326418, 1357747, -107374, -2943126, 533113, 2246268, 5742908, 214212,
-50466, -933082, -1809255, 3686693, 1891396, -1452236, 2187749, -3827890, 759672, 1110786,
--2705830, -9828496, -2911451, -334471, -425202, -557809, -698469, -1337346, -535260, -1950989,
-2571075, 7075959, 4266513, 211527, 203474, -296353, 2745558, -1573569, -6283537, -333934,
--3115462, 2033130, -3528316, 2058363, -9019968, -262530, -487479, -12950937, -12485470, -4618164,
--1744831, -1670205, 132070, 3320547, 881005, 2724620, -5803038, 3064459, 3806952, 3703873,
-4297652, -3093987, 1013612, 9983115, -5972689, -68719, -4223027, -6138582, -641024, -294205,
-5561983, -2488934, 682900, -4537633, 3119220, 2043331, 2470680, -10362145, 1729261, -1754494,
--3588445, -818728, 52076, -7631083, -4956393, -4176856, -251256, 6717866, 2362769, 2359548,
-3232500, -2716030, 1940252, -2408403, 5672041, 8804683, -715649, -562104, 2526515, 838056,
-2301029, 5071283, -2188286, 5249524, -712965, 117038, 3012920, 4326643, -1482301, -5541582,
--5339718, 2389613, -721555, -671626, -2382633, 3000035, -4528506, 2028298, 3238942, 6041409,
--3512210, 5796059, 3122978, 1990717, -14343043, 6150930, -6445136, 11455752, -10744934, 8373039,
-4240744, -4476430, -5603322, -3121904, 2144799, 1950452, -3049427, 6754910, -2487323, -6495601,
--1371168, 6994354, 4754529, -7101192, 1083942, -894964, -7477538, -3078955, -4828080, -1114544,
--5737003, -1503775, -2422362, -7821136, -2843805, 3997541, 5657546, -1075352, -6764574, -1324461,
-4711043, -1421097, 117575, 375273, 60130, -6616934, -244813, -729071, -1740536, -231391,
-1132798, -4687420, 2685428, -5011153, -157840, 89121, 60130, 3940633, 32212, -1604170,
-1501628, 2818572, 6230387, 3077344, 1377611, -1577327, -3946538, -3391951, -1584306, -3686156,
--2942053, 2738579, 4037806, -2579128, -5151277, -2925947, 1496796, 1556389, -4905390, 17923436,
-7387344, -730681, 4389457, -2363843, 10223633, 4596152, 18073760, 792421, -16671989, 4846334,
-10770704, -5689221, 2220498, 7611756, -5082557, 5515812, -4049081, -472446, -5089000, -4721780,
--1263794, 1958505, -182536, 2881923, -1968169, 8096014, -4150012, 2672544, 1770600, 5468030,
--8658117, -4155381, -3192771, -506269, -2833068, 1423782, 5871757, 4517232, 9109626, -685047,
--295279, -4378719, -1287417, 6146098, -5040681, 5199595, -4694936, -1465658, 8379481, 12272869,
-8659728, 2150705, -5777268, 5006322, 3533148, -2521146, 7097434, -3690451, 1676648, 1865090,
--11993159, 726923, -11346767, -3829500, 2221035, -2161979, -5218922, -3769908, 1352378, 9120900,
-2398739, -2084133, -3663070, -2237141, 1246614, 2705293, 11054172, 22185116, -9373229, -6897181,
--1736777, -2362769, 7844221, -7090991, -13152264, -4390531, 1103807, -3028489, 3993783, 2052994,
-6802692, 3034395, -2506650, 9812927, 9105868, -3865471, 792958, -5893769, -911070, 617938,
--3665755, -450435, 6810745, 9888625, 504659, 1882806, 4061429, 2836826, 1653026, 978179,
--3526168, -6560563, 893890, -9571871, 453119, 2631204, -3068754, 4259534, -2425583, -5104032,
--345745, 5726802, 2439542, -1987496, 16267189, 372052, 5295158, -9203578, -2080375, 7067369,
--3032247, -6663105, 4263829, -7866770, -7436199, 2232309, 9251360, -6963753, -4159139, -1631551,
-455803, -2770254, -3306588, 13084081, 7351374, -355945, 823560, -4959077, -3990025, -1323924,
-4037269, 8571144, -15732465, -2232846, -11847130, -6809134, -10741713, -2838974, -1754494, -1733556,
--4203163, 4604742, -15078020, 7552163, -5218922, 4433480, 1884954, 6101001, 238371, 2447595,
--6139656, -2700998, 2687576, -6149320, -4463545, 7208029, 1926830, 3184718, 2856153, -897648,
-1882806, 10798085, -4014721, 907849, -5021891, 8654359, -5399311, -19696720, 5972689, 2930778,
-8151848, 4303557, 11267310, -7804493, -3104188, 6701223, -2909840, -6693170, -3154654, 3419331,
--9555765, 9247601, -379568, 6118181, -8066486, -3658775, -2951716, -8831527, -1803886, -7045894,
--3178813, 608275, 9992778, 7941932, -925565, -12394739, -7010997, -2364380, 9719511, 7958038,
-5852967, 5358509, -3463354, -14231374, -3690451, -317828, 3140695, -21105470, -25367150, -14604499,
-9495636, 188979, -5266167, -5862094, -8555575, -1453846, 2018635, -14405320, -1983738, 8105140,
--5993090, -4388920, 9059160, 1964411, -7093676, 1862942, -6891275, 13852880, -5349382, -4013110,
-3980898, -8083666, -5402532, -4972499, 1743757, -5777268, -2658585, 1861332, 1033477, -17503602,
-6863895, 6844568, -5606543, 12591770, 4316442, 724776, 11853573, 6666863, 1504849, 1253057,
-12859132, -1857573, -3082713, -1408212, 7592966, 4199941, -13116293, 4313758, 3070902, -545461,
--7377680, -20343112, 7960722, -1731409, -5742372, -12883291, -7906498, 7293392, -2513093, -3980898,
--9227737, -16495896, 687732, -2497524, -9590125, -3804267, -16362215, -2532420, -4576825, -2824478,
--1898912, 5829345, 10361609, -21072720, 17119740, 1070521, 8778913, -1424855, -649077, 1747515,
-9450539, 1092532, -1136019, -12612708, 4573604, -1210107, -9874667, 2794413, -6462852, -4736812,
-18324478, 5459441, 5616744, -3695819, 6525129, 8211978, 7608535, -4150012, 6622303, 3793530,
--7807177, 5370320, -7609072, -2234994, 4685810, 2654290, -903017, -3764539, -4056597, 12624519,
--3704409, -4907000, -3599720, 2967823, 2465311, -5327370, -10041634, -187905, -10777147, -688269,
--9756018, -3003793, -2515240, 2494302, -5126044, -7584912, 10115722, -3609383, -11782706, 8067023,
-11897059, -5148055, -4286378, 7015829, 4104378, 13002477, 7424925, 2152852, -571231, -11489574,
-2519535, 12990129, 9074729, -7388955, 8569533, 11078331, -7309498, -17315698, -6791417, -15087146,
-4434017, -33394444, 16539919, 4936528, -1217086, 23119272, -970663, 11873437, -9798431, -2037962,
-2178622, 486405, 13400835, 8614094, -17284560, 11369315, 1226213, 6954626, -15523086, -300111,
-9599789, -15311022, 19957102, 5607617, 198105, -6682432, 1580011, 8764955, -13605383, 1580548,
-4000762, 2758443, -8221641, -2932389, 8607651, 4887136, -447213, 1464047, -5248450, -9491878,
-4466229, -16222091, -234076, 23759222, 23449984, -7175817, 3310883, -847719, 7049652, 16689706,
-1868311, 8027294, 3112241, -8617315, -160524, -1621350, -24474872, -11287711, 15977815, 653909,
-5299453, -6158446, -981400, 5293547, 8060580, -986232, 19849192, -156766, 15660525, 1262720,
-3885335, 1115081, -8983998, -13539884, 16300475, 1772748, -6173479, 11644193, -24252606, 10215043,
-15849503, -1821066, 4967130, 7290170, -3398393, -2073932, 9932649, -3303367, 14887430, -13523778,
-7928510, 18223546, -18844170, 1050120, -8756901, 11594801, 5174899, 9650792, -9334038, -7360500,
-287763, 24475408, 681826, 12483859, -5036923, 945430, -1261110, -1965484, -10353019, -241592,
--2608119, 5098663, -4392141, -6839199, -5450314, -318901, -1628330, 11062225, 2299418, -5969468,
--5077725, -5509370, -1626182, -2611877, 18295486, 799401, 9392557, 609349, -3885872, -3947075,
-15278809, 11032160, -3878892, -14108968, 8312909, 5309117, -30491584, 1619203, 17821966, 16777216,
-4356708, 13246216, -18239652, 30209190, 3086471, 5455146, 6477885, 14110041, -638340, -13577465,
--3306588, -15958488, 18637474, -7713225, 9160092, -18491444, -14874009, 12814572, 10667625, 26596048,
--9783399, -7273527, -5118528, 4890894, -11738682, -1509681, 4068408, -915365, 14003741, 9188546,
--11957189, 977642, 2934537, 8284455, -13596256, 13784698, -711354, 6128919, -2827699, -6248641,
--14295799, 4942971, -2924336, -5703180, 2216203, -8311836, -8798241, -1662689, 3726421, 16940962,
--25503516, -14794015, -14060649, -14772003, -4935991, 17696876, -10933376, -63351, 16367047, -2037425,
--8424578, -14267881, -4745402, -5776194, -31384400, -23081154, -7507066, 6129455, -3753802, 6209986,
--7658464, -3934727, 13646722, 9867687, -16229071, -6673306, -18089866, -5411659, 405874, 8450348,
--4112431, 3668439, -15707769, -9570261, -11819213, 2185602, 1299228, 3857418, -15034533, 3892314,
-17846662, 9912785, -13196824, 2417530, -1511829, 30107184, 3231963, 14433238, -12656195, -8690866,
--3148748, -14375256, -9083319, -13905493, -6436009, -9085466, 16353088, 3923990, 4099010, 16679505,
--487479, -1199370, 7594576, 14944876, 23727546, 17098802, -3613141, -6754910, -27416386, 7212861,
-8526047, 2981244, -17128330, 19342922, 7799124, 11170673, -3318936, 638340, 11116986, 24150602,
-23890218, 13302051, 2771865, 25042344, 510027, -8284992, 8139500, 14851997, 12415677, 22302692,
-11934640, -296890, 2491618, -14795089, 5702106, -35730908, -6344204, -4545686, 7262790, 26175142,
-14856829, 2764348, 19250044, -15817291, -13783624, 1262184, -34578780, -9792525, 410169, 4528506,
-6648610, 6708739, -3432753, 12237972, 147640, 4574677, 25263534, -20795694, -11012833, -10520522,
--22996866, -7028177, 4505958, 17940616, 32600412, -12652974, 803696, 5717675, -5718749, 30372934,
-5509906, -14358076, 26444114, -4984310, -8660265, 19257022, -16928076, -9503152, 1262720, 2145873,
-2436857, 12836584, 6662568, 10538776, -3005940, 5869073, 15093052, 1511292, 10280004, 2500745,
-384936, 17283486, -21766894, -7230578, -7425999, 15181099, -11157788, -2155537, -6629282, 15100568,
--6213744, 32701344, 23190140, -20926692, 10479720, -25274808, 3550327, 10331007, 4858682, 6578280,
--33553358, -5488432, -32397476, 5279589, 2339684, 4985920, -5412196, -4696547, 14992120, -26547730,
-9137543, -10750840, -52679384, -18223010, -17565880, 10035191, -8109435, 9502078, 25618406, 29578366,
-15230491, 16564615, 13021804, 6135898, -21429740, 24367496, -1233729, 9028558, -40540196, -18375480,
--13487271, 8523899, -30695058, 12186433, -17972828, 27758910, -30496416, -39002600, -7687455, -4889821,
-32220308, 16120086, 14898168, -7169911, 4635344, -18470506, -14524506, 4467303, 7585449, -24052890,
--22116934, -15388331, -995359, 13421773, 10143102, -16625818, -20939576, -11926050, -11871826, -29040958,
--16086800, 14123463, -7108708, 697395, -2858838, 10614475, 16733729, -3153580, -43466144, 19830938,
-38885560, 14905684, 635655, -44033616, -9208947, 20568062, -4006131, 51221244, -3699041, -39555576,
-8443369, -5857799, 5208722, 2093260, -6141803, 11858942, 15563351, -41778220, -9174587, 3304441,
-17563196, -7021198, -19145890, 20267414, 4846334, -13748190, -39363376, -48870284, -21741124, -3010772,
-7992398, 38835096, 61212948, 24683714, 2781528, 74553120, 68386616, -29767882, 35132832, 31135292,
--9640054, -5965173, -17219060, -9494562, -20130512, -14183593, 56532508, -3660923, 32597192, -122943,
-823560, -67646, -23433878, 4898410, 3843996, -50178640, 6542846, 11576011, -27033598, -5909338,
--8966818, -3990025, 6427956, -1887638, 564251, 21507048, 7898982, -11016054, 5741835, 34557308,
--457414, 15767362, -1927904, 12836584, -20342038, -23489714, -14147085, -42878804, 10229538, 4589710,
--20189030, -51981452, -35143032, -48564268, 33962992, -25218974, 4107063, 8738111, 6545530, 6790880,
-36112084, -36119064, -1444183, -20111722, 38103340, -89159224, 16441672, 7312182, 26527866, 26561688,
--2176475, -7590818, -16292422, -3129421, -29004988, 20080582, 49082888, -2922725, 6314139, 33849712,
--23132156, -21792128, 33530810, -59344636, 45911052, -22762790, -14958297, -8376260, 6920266, -15120432,
--11007464, 22434224, -2942590, -39681740, 17771500, 301721, 10642392, -6673843, 40999220, -27970438,
-4480725, 18653042, -7525857, 14853608, -21974126, 5041218, -18415746, -8004746, 26917634, 6036040,
-12825846, -10371272, 26230440, -3504693, -7166690, 11846594, -10430328, -8489003, -3861713, -4503810,
--19877646, -28310814, -5031554, 20796232, 4108673, -6525129, -27572616, 4634807, -20873004, 1842541,
-14154065, -21038898, -1816234, 21827024, 22787486, 17178796, -26045218, -10524817, 25760676, 10965588,
-4283693, 21364778, -95249488, -18698676, -5862631, -40796284, 10095321, 17645874, 3272765, 13963476,
-27880780, -6278706, -14401025, 12369506, -11563663, 2427194, 31143344, 168577, 66728224, -9290014,
--19255950, 1758789, -8058433, 32530082, 5779416, -3735011, 31248034, 31205622, 10157598, 11435350,
-17285632, -40706628, -22231288, 31771484, -4749697, -33714420, -16672526, -15996069, 22282828, 10732050,
--12031814, -48342540, 14589467, 5968394, 6275484, 6245956, -5563594, 3232500, -35074312, 29912836,
-22137872, 9945534, -17331804, -16759499, 346819, 13937706, -2946885, 14477798, 7754564, -39205000,
--15829639, 3744675, -36603860, -24696, 8104067, -35297116, -45301704, -9004936, 15250892, -29633126,
--54905788, -27513024, -13119514, 33524368, -20350628, 37986300, -6368363, -1614371, 20097762, -1473711,
--60268592, -8507256, 5985037, 24670292, -52204792, -83146272, 10457172, -11485279, -43425876, 20185810,
-21221970, -11664057, 11894912, 32464584, -30597884, 6584185, 34684008, 15504295, 77468328, -27990838,
--29451128, -10270341, 1821066, 73888472, -6681359, 61789548, -37895572, -12758737, 27836220, -41231688,
--11623255, -38555920, 10027675, 46145128, -55581172, -17987860, -1921461, 21362630, 2626909, 10145786,
-19384798, -468688, -34080028, -30631706, 4872104, 28075664, 68379640, -10613401, 20859046, -14820858,
-35385700, 5119064, 6975564, -4905390, -35265976, 5485210, 38765300, -1782948, 1218697, -8817031,
--30246234, 48791364, 20228760, 34207268, 42968464, 2905009, 5836324, 29557964, -59546500, 27027156,
--28185722, 80160192, -3242164, 13011067, 15181636, -15882789, -17875118, 13747117, -27421218, 54026932,
--23063438, -27918898, -30291330, 57149908, 22454626, 36957120, 103616, 37818796, 37060200, -19238770,
-2490544, -13561896, 10941966, 6487548, -55586004, 37833832, -39520140, 4619774, -18200460, 14448270,
--1508607, 20642686, -3302293, -18340584, 31208306, -11235098, -4226785, 4444755, -12901008, -11726871,
-36119064, -8885750, -4701916, -4650376, -1576790, 16004659, -12264279, 3369939, -8856223, 7680476,
--7651484, -6703370, -18852758, 27562952, -16951700, 8690866, 5015448, 18833432, -21401822, 4180077,
--8395050, 21382494, 3525631, 956167, 18186502, 4379256, -28346784, -5177583, -4233227, 7150584,
-13511430, 9672803, -25572236, 10311143, -19067508, 13073344, -10444287, 1926830, -5551245, 12822625,
--4431333, 2898566, -28480466, 5818607, 15457050, -14722074, 14571750, 651224, 6104759, 7206419,
--10741713, 19319836, 9198746, -2109366, -5400385, 9268003, -5496485, 18591302, -15675557, -2433099,
--14768245, -23328114, 46493020, 3688840, 5657546, -18888192, -13980119, -29866128, 19661824, -8528731,
--6283001, -13095892, -737124, -11696270, -1664837, -1722282, 4975720, 5626407, -1155883, -1581622,
--8676908, 7657927, 7098507, -7192460, 3045132, -16073915, 6073084, 2889976, -3037616, -2661269,
--5559299, 4862440, 849867, -11497091, -3303367, -3505767, -9652402, 15203110, 1342714, -10017474,
-1229434, -4037806, 13132936, -4834523, -6551436, 2421288, -8284992, 15475841, 163746, -8829379,
-2187212, -3699578, 7359964, -10041097, -2258616, 3090229, -3894999, 6714645, -4230006, 1833414,
-2797634, -9058623, 913217, 8704288, -13877039, -1025423, 3739306, -12679280, 22483616, -21028160,
-10012106, 3730179, -12458090, 23684598, -16716013, 4035122, 2153389, 10735808, -50200652, -115650584,
-30124364, 106738528, 90195384, 121121296, -59973848, -77625088, -116703928, -119228296, 7996156, 88647592,
-97827544, 107252312, 35510788, -23493472, -85400592, -141167520, -77484432, 35767952, 55377696, 93963680,
-71091912, 19382114, -12856448, -29807610, -70875016, -45867028, -43787728, -8065949, 37002752, 57000660,
-29815662, 38035692, 19042274, -21526912, -3582003, -45959372, -64139432, -10979010, -15140297, 11234024,
-60054916, 34714072, 29691646, 8822400, -22819698, -23263154, -20272246, -33094870, -8902393, 1478006,
-13968844, 17339320, 28616830, 8258685, -1225139, -14507326, -27043798, -2225867, 9494025, 10016401,
-16771310, -4188667, -13572634, -6306086, -13514115, -10366440, 2985002, 7934952, 21983790, 18887118,
-18289044, 1978906, -7678328, -32321240, -22062174, -2129767, -1344325, 0, 0, 0,
-0, 0, 0, },
+1332514, 2347737, 4104378, -5537287, -1505923, -3160022, -670552, -1440425, -3429532, -386010,
+-508417, -3372086, 4203699, -2761664, -1741072, -284542, -1544578, 3635690, -1651415, -2587718,
+1075889, 1333587, 3838627, -387621, 816044, -2459406, -484258, 279710, 1143535, 260382,
+-103079, 3945464, -2310156, 889058, 238908, -2445447, -5657546, -2268280, 1213328, 1976222,
+2039036, -5528160, 4306242, -2130304, -2319819, 2320893, 932545, -4861903, 1867774, -4975183,
+-1459752, 2103997, -3885872, -1548336, 3351685, -1257352, -2206540, -2840584, -5541045, 4292283,
+1531156, -1764695, -1698123, -3736622, -4242891, -4867272, -1057636, -3209951, -52076, -222801,
+-271120, 305480, -307627, -3107409, -7095286, -796716, 6358699, -5968931, 2101850, -9950365,
+-36507, -3712999, 3800509, -3482682, 766115, -2423972, -4217121, -1240172, -510564, 2777233,
+3604551, -3727495, -6260989, 3018825, 994822, 2043331, 1258425, 2331630, -3658775, -2898566,
+549219, -908386, 3122978, 2075006, -2804614, -829466, 2371359, 4285304, 2724083, -222265,
+-3620658, 1648194, -666794, -2168422, 2452963, 801011, -3311957, -3026341, -2255932, 1525787,
+-3231963, -2033667, 2667175, 714038, -112743, -3687230, 1225676, -3230889, -7430294, 369367,
+-2520609, -5175973, 2220498, -1764695, -1342714, -2065342, 140123, 3208341, 2248416, 756988,
+1722819, 2249489, -5530844, 2364380, -2153389, -2753074, -1161789, 1183800, 421444, 3149822,
+14850923, -1255741, 2726767, 3262565, -1512365, 1530082, 5927592, -4626217, -800475, 1675037,
+-2275259, -471910, 4369056, -1427003, -952409, -328565, 1715839, -861141, 2128693, -1502165,
+-1404454, -702227, -3326989, -5798206, -1036161, -1890859, -718870, 3343632, -6040872, 7446400,
+108448, 76236, 326418, 1357747, -107374, -2943126, 533113, 2246268, 5742908, 214212,
+50466, -933082, -1809255, 3686693, 1891396, -1452236, 2187749, -3827890, 759672, 1110786,
+-2705830, -9828496, -2911451, -334471, -425202, -557809, -698469, -1337346, -535260, -1950989,
+2571075, 7075959, 4266513, 211527, 203474, -296353, 2745558, -1573569, -6283537, -333934,
+-3115462, 2033130, -3528316, 2058363, -9019968, -262530, -487479, -12950937, -12485470, -4618164,
+-1744831, -1670205, 132070, 3320547, 881005, 2724620, -5803038, 3064459, 3806952, 3703873,
+4297652, -3093987, 1013612, 9983115, -5972689, -68719, -4223027, -6138582, -641024, -294205,
+5561983, -2488934, 682900, -4537633, 3119220, 2043331, 2470680, -10362145, 1729261, -1754494,
+-3588445, -818728, 52076, -7631083, -4956393, -4176856, -251256, 6717866, 2362769, 2359548,
+3232500, -2716030, 1940252, -2408403, 5672041, 8804683, -715649, -562104, 2526515, 838056,
+2301029, 5071283, -2188286, 5249524, -712965, 117038, 3012920, 4326643, -1482301, -5541582,
+-5339718, 2389613, -721555, -671626, -2382633, 3000035, -4528506, 2028298, 3238942, 6041409,
+-3512210, 5796059, 3122978, 1990717, -14343043, 6150930, -6445136, 11455752, -10744934, 8373039,
+4240744, -4476430, -5603322, -3121904, 2144799, 1950452, -3049427, 6754910, -2487323, -6495601,
+-1371168, 6994354, 4754529, -7101192, 1083942, -894964, -7477538, -3078955, -4828080, -1114544,
+-5737003, -1503775, -2422362, -7821136, -2843805, 3997541, 5657546, -1075352, -6764574, -1324461,
+4711043, -1421097, 117575, 375273, 60130, -6616934, -244813, -729071, -1740536, -231391,
+1132798, -4687420, 2685428, -5011153, -157840, 89121, 60130, 3940633, 32212, -1604170,
+1501628, 2818572, 6230387, 3077344, 1377611, -1577327, -3946538, -3391951, -1584306, -3686156,
+-2942053, 2738579, 4037806, -2579128, -5151277, -2925947, 1496796, 1556389, -4905390, 17923436,
+7387344, -730681, 4389457, -2363843, 10223633, 4596152, 18073760, 792421, -16671989, 4846334,
+10770704, -5689221, 2220498, 7611756, -5082557, 5515812, -4049081, -472446, -5089000, -4721780,
+-1263794, 1958505, -182536, 2881923, -1968169, 8096014, -4150012, 2672544, 1770600, 5468030,
+-8658117, -4155381, -3192771, -506269, -2833068, 1423782, 5871757, 4517232, 9109626, -685047,
+-295279, -4378719, -1287417, 6146098, -5040681, 5199595, -4694936, -1465658, 8379481, 12272869,
+8659728, 2150705, -5777268, 5006322, 3533148, -2521146, 7097434, -3690451, 1676648, 1865090,
+-11993159, 726923, -11346767, -3829500, 2221035, -2161979, -5218922, -3769908, 1352378, 9120900,
+2398739, -2084133, -3663070, -2237141, 1246614, 2705293, 11054172, 22185116, -9373229, -6897181,
+-1736777, -2362769, 7844221, -7090991, -13152264, -4390531, 1103807, -3028489, 3993783, 2052994,
+6802692, 3034395, -2506650, 9812927, 9105868, -3865471, 792958, -5893769, -911070, 617938,
+-3665755, -450435, 6810745, 9888625, 504659, 1882806, 4061429, 2836826, 1653026, 978179,
+-3526168, -6560563, 893890, -9571871, 453119, 2631204, -3068754, 4259534, -2425583, -5104032,
+-345745, 5726802, 2439542, -1987496, 16267189, 372052, 5295158, -9203578, -2080375, 7067369,
+-3032247, -6663105, 4263829, -7866770, -7436199, 2232309, 9251360, -6963753, -4159139, -1631551,
+455803, -2770254, -3306588, 13084081, 7351374, -355945, 823560, -4959077, -3990025, -1323924,
+4037269, 8571144, -15732465, -2232846, -11847130, -6809134, -10741713, -2838974, -1754494, -1733556,
+-4203163, 4604742, -15078020, 7552163, -5218922, 4433480, 1884954, 6101001, 238371, 2447595,
+-6139656, -2700998, 2687576, -6149320, -4463545, 7208029, 1926830, 3184718, 2856153, -897648,
+1882806, 10798085, -4014721, 907849, -5021891, 8654359, -5399311, -19696720, 5972689, 2930778,
+8151848, 4303557, 11267310, -7804493, -3104188, 6701223, -2909840, -6693170, -3154654, 3419331,
+-9555765, 9247601, -379568, 6118181, -8066486, -3658775, -2951716, -8831527, -1803886, -7045894,
+-3178813, 608275, 9992778, 7941932, -925565, -12394739, -7010997, -2364380, 9719511, 7958038,
+5852967, 5358509, -3463354, -14231374, -3690451, -317828, 3140695, -21105470, -25367150, -14604499,
+9495636, 188979, -5266167, -5862094, -8555575, -1453846, 2018635, -14405320, -1983738, 8105140,
+-5993090, -4388920, 9059160, 1964411, -7093676, 1862942, -6891275, 13852880, -5349382, -4013110,
+3980898, -8083666, -5402532, -4972499, 1743757, -5777268, -2658585, 1861332, 1033477, -17503602,
+6863895, 6844568, -5606543, 12591770, 4316442, 724776, 11853573, 6666863, 1504849, 1253057,
+12859132, -1857573, -3082713, -1408212, 7592966, 4199941, -13116293, 4313758, 3070902, -545461,
+-7377680, -20343112, 7960722, -1731409, -5742372, -12883291, -7906498, 7293392, -2513093, -3980898,
+-9227737, -16495896, 687732, -2497524, -9590125, -3804267, -16362215, -2532420, -4576825, -2824478,
+-1898912, 5829345, 10361609, -21072720, 17119740, 1070521, 8778913, -1424855, -649077, 1747515,
+9450539, 1092532, -1136019, -12612708, 4573604, -1210107, -9874667, 2794413, -6462852, -4736812,
+18324478, 5459441, 5616744, -3695819, 6525129, 8211978, 7608535, -4150012, 6622303, 3793530,
+-7807177, 5370320, -7609072, -2234994, 4685810, 2654290, -903017, -3764539, -4056597, 12624519,
+-3704409, -4907000, -3599720, 2967823, 2465311, -5327370, -10041634, -187905, -10777147, -688269,
+-9756018, -3003793, -2515240, 2494302, -5126044, -7584912, 10115722, -3609383, -11782706, 8067023,
+11897059, -5148055, -4286378, 7015829, 4104378, 13002477, 7424925, 2152852, -571231, -11489574,
+2519535, 12990129, 9074729, -7388955, 8569533, 11078331, -7309498, -17315698, -6791417, -15087146,
+4434017, -33394444, 16539919, 4936528, -1217086, 23119272, -970663, 11873437, -9798431, -2037962,
+2178622, 486405, 13400835, 8614094, -17284560, 11369315, 1226213, 6954626, -15523086, -300111,
+9599789, -15311022, 19957102, 5607617, 198105, -6682432, 1580011, 8764955, -13605383, 1580548,
+4000762, 2758443, -8221641, -2932389, 8607651, 4887136, -447213, 1464047, -5248450, -9491878,
+4466229, -16222091, -234076, 23759222, 23449984, -7175817, 3310883, -847719, 7049652, 16689706,
+1868311, 8027294, 3112241, -8617315, -160524, -1621350, -24474872, -11287711, 15977815, 653909,
+5299453, -6158446, -981400, 5293547, 8060580, -986232, 19849192, -156766, 15660525, 1262720,
+3885335, 1115081, -8983998, -13539884, 16300475, 1772748, -6173479, 11644193, -24252606, 10215043,
+15849503, -1821066, 4967130, 7290170, -3398393, -2073932, 9932649, -3303367, 14887430, -13523778,
+7928510, 18223546, -18844170, 1050120, -8756901, 11594801, 5174899, 9650792, -9334038, -7360500,
+287763, 24475408, 681826, 12483859, -5036923, 945430, -1261110, -1965484, -10353019, -241592,
+-2608119, 5098663, -4392141, -6839199, -5450314, -318901, -1628330, 11062225, 2299418, -5969468,
+-5077725, -5509370, -1626182, -2611877, 18295486, 799401, 9392557, 609349, -3885872, -3947075,
+15278809, 11032160, -3878892, -14108968, 8312909, 5309117, -30491584, 1619203, 17821966, 16777216,
+4356708, 13246216, -18239652, 30209190, 3086471, 5455146, 6477885, 14110041, -638340, -13577465,
+-3306588, -15958488, 18637474, -7713225, 9160092, -18491444, -14874009, 12814572, 10667625, 26596048,
+-9783399, -7273527, -5118528, 4890894, -11738682, -1509681, 4068408, -915365, 14003741, 9188546,
+-11957189, 977642, 2934537, 8284455, -13596256, 13784698, -711354, 6128919, -2827699, -6248641,
+-14295799, 4942971, -2924336, -5703180, 2216203, -8311836, -8798241, -1662689, 3726421, 16940962,
+-25503516, -14794015, -14060649, -14772003, -4935991, 17696876, -10933376, -63351, 16367047, -2037425,
+-8424578, -14267881, -4745402, -5776194, -31384400, -23081154, -7507066, 6129455, -3753802, 6209986,
+-7658464, -3934727, 13646722, 9867687, -16229071, -6673306, -18089866, -5411659, 405874, 8450348,
+-4112431, 3668439, -15707769, -9570261, -11819213, 2185602, 1299228, 3857418, -15034533, 3892314,
+17846662, 9912785, -13196824, 2417530, -1511829, 30107184, 3231963, 14433238, -12656195, -8690866,
+-3148748, -14375256, -9083319, -13905493, -6436009, -9085466, 16353088, 3923990, 4099010, 16679505,
+-487479, -1199370, 7594576, 14944876, 23727546, 17098802, -3613141, -6754910, -27416386, 7212861,
+8526047, 2981244, -17128330, 19342922, 7799124, 11170673, -3318936, 638340, 11116986, 24150602,
+23890218, 13302051, 2771865, 25042344, 510027, -8284992, 8139500, 14851997, 12415677, 22302692,
+11934640, -296890, 2491618, -14795089, 5702106, -35730908, -6344204, -4545686, 7262790, 26175142,
+14856829, 2764348, 19250044, -15817291, -13783624, 1262184, -34578780, -9792525, 410169, 4528506,
+6648610, 6708739, -3432753, 12237972, 147640, 4574677, 25263534, -20795694, -11012833, -10520522,
+-22996866, -7028177, 4505958, 17940616, 32600412, -12652974, 803696, 5717675, -5718749, 30372934,
+5509906, -14358076, 26444114, -4984310, -8660265, 19257022, -16928076, -9503152, 1262720, 2145873,
+2436857, 12836584, 6662568, 10538776, -3005940, 5869073, 15093052, 1511292, 10280004, 2500745,
+384936, 17283486, -21766894, -7230578, -7425999, 15181099, -11157788, -2155537, -6629282, 15100568,
+-6213744, 32701344, 23190140, -20926692, 10479720, -25274808, 3550327, 10331007, 4858682, 6578280,
+-33553358, -5488432, -32397476, 5279589, 2339684, 4985920, -5412196, -4696547, 14992120, -26547730,
+9137543, -10750840, -52679384, -18223010, -17565880, 10035191, -8109435, 9502078, 25618406, 29578366,
+15230491, 16564615, 13021804, 6135898, -21429740, 24367496, -1233729, 9028558, -40540196, -18375480,
+-13487271, 8523899, -30695058, 12186433, -17972828, 27758910, -30496416, -39002600, -7687455, -4889821,
+32220308, 16120086, 14898168, -7169911, 4635344, -18470506, -14524506, 4467303, 7585449, -24052890,
+-22116934, -15388331, -995359, 13421773, 10143102, -16625818, -20939576, -11926050, -11871826, -29040958,
+-16086800, 14123463, -7108708, 697395, -2858838, 10614475, 16733729, -3153580, -43466144, 19830938,
+38885560, 14905684, 635655, -44033616, -9208947, 20568062, -4006131, 51221244, -3699041, -39555576,
+8443369, -5857799, 5208722, 2093260, -6141803, 11858942, 15563351, -41778220, -9174587, 3304441,
+17563196, -7021198, -19145890, 20267414, 4846334, -13748190, -39363376, -48870284, -21741124, -3010772,
+7992398, 38835096, 61212948, 24683714, 2781528, 74553120, 68386616, -29767882, 35132832, 31135292,
+-9640054, -5965173, -17219060, -9494562, -20130512, -14183593, 56532508, -3660923, 32597192, -122943,
+823560, -67646, -23433878, 4898410, 3843996, -50178640, 6542846, 11576011, -27033598, -5909338,
+-8966818, -3990025, 6427956, -1887638, 564251, 21507048, 7898982, -11016054, 5741835, 34557308,
+-457414, 15767362, -1927904, 12836584, -20342038, -23489714, -14147085, -42878804, 10229538, 4589710,
+-20189030, -51981452, -35143032, -48564268, 33962992, -25218974, 4107063, 8738111, 6545530, 6790880,
+36112084, -36119064, -1444183, -20111722, 38103340, -89159224, 16441672, 7312182, 26527866, 26561688,
+-2176475, -7590818, -16292422, -3129421, -29004988, 20080582, 49082888, -2922725, 6314139, 33849712,
+-23132156, -21792128, 33530810, -59344636, 45911052, -22762790, -14958297, -8376260, 6920266, -15120432,
+-11007464, 22434224, -2942590, -39681740, 17771500, 301721, 10642392, -6673843, 40999220, -27970438,
+4480725, 18653042, -7525857, 14853608, -21974126, 5041218, -18415746, -8004746, 26917634, 6036040,
+12825846, -10371272, 26230440, -3504693, -7166690, 11846594, -10430328, -8489003, -3861713, -4503810,
+-19877646, -28310814, -5031554, 20796232, 4108673, -6525129, -27572616, 4634807, -20873004, 1842541,
+14154065, -21038898, -1816234, 21827024, 22787486, 17178796, -26045218, -10524817, 25760676, 10965588,
+4283693, 21364778, -95249488, -18698676, -5862631, -40796284, 10095321, 17645874, 3272765, 13963476,
+27880780, -6278706, -14401025, 12369506, -11563663, 2427194, 31143344, 168577, 66728224, -9290014,
+-19255950, 1758789, -8058433, 32530082, 5779416, -3735011, 31248034, 31205622, 10157598, 11435350,
+17285632, -40706628, -22231288, 31771484, -4749697, -33714420, -16672526, -15996069, 22282828, 10732050,
+-12031814, -48342540, 14589467, 5968394, 6275484, 6245956, -5563594, 3232500, -35074312, 29912836,
+22137872, 9945534, -17331804, -16759499, 346819, 13937706, -2946885, 14477798, 7754564, -39205000,
+-15829639, 3744675, -36603860, -24696, 8104067, -35297116, -45301704, -9004936, 15250892, -29633126,
+-54905788, -27513024, -13119514, 33524368, -20350628, 37986300, -6368363, -1614371, 20097762, -1473711,
+-60268592, -8507256, 5985037, 24670292, -52204792, -83146272, 10457172, -11485279, -43425876, 20185810,
+21221970, -11664057, 11894912, 32464584, -30597884, 6584185, 34684008, 15504295, 77468328, -27990838,
+-29451128, -10270341, 1821066, 73888472, -6681359, 61789548, -37895572, -12758737, 27836220, -41231688,
+-11623255, -38555920, 10027675, 46145128, -55581172, -17987860, -1921461, 21362630, 2626909, 10145786,
+19384798, -468688, -34080028, -30631706, 4872104, 28075664, 68379640, -10613401, 20859046, -14820858,
+35385700, 5119064, 6975564, -4905390, -35265976, 5485210, 38765300, -1782948, 1218697, -8817031,
+-30246234, 48791364, 20228760, 34207268, 42968464, 2905009, 5836324, 29557964, -59546500, 27027156,
+-28185722, 80160192, -3242164, 13011067, 15181636, -15882789, -17875118, 13747117, -27421218, 54026932,
+-23063438, -27918898, -30291330, 57149908, 22454626, 36957120, 103616, 37818796, 37060200, -19238770,
+2490544, -13561896, 10941966, 6487548, -55586004, 37833832, -39520140, 4619774, -18200460, 14448270,
+-1508607, 20642686, -3302293, -18340584, 31208306, -11235098, -4226785, 4444755, -12901008, -11726871,
+36119064, -8885750, -4701916, -4650376, -1576790, 16004659, -12264279, 3369939, -8856223, 7680476,
+-7651484, -6703370, -18852758, 27562952, -16951700, 8690866, 5015448, 18833432, -21401822, 4180077,
+-8395050, 21382494, 3525631, 956167, 18186502, 4379256, -28346784, -5177583, -4233227, 7150584,
+13511430, 9672803, -25572236, 10311143, -19067508, 13073344, -10444287, 1926830, -5551245, 12822625,
+-4431333, 2898566, -28480466, 5818607, 15457050, -14722074, 14571750, 651224, 6104759, 7206419,
+-10741713, 19319836, 9198746, -2109366, -5400385, 9268003, -5496485, 18591302, -15675557, -2433099,
+-14768245, -23328114, 46493020, 3688840, 5657546, -18888192, -13980119, -29866128, 19661824, -8528731,
+-6283001, -13095892, -737124, -11696270, -1664837, -1722282, 4975720, 5626407, -1155883, -1581622,
+-8676908, 7657927, 7098507, -7192460, 3045132, -16073915, 6073084, 2889976, -3037616, -2661269,
+-5559299, 4862440, 849867, -11497091, -3303367, -3505767, -9652402, 15203110, 1342714, -10017474,
+1229434, -4037806, 13132936, -4834523, -6551436, 2421288, -8284992, 15475841, 163746, -8829379,
+2187212, -3699578, 7359964, -10041097, -2258616, 3090229, -3894999, 6714645, -4230006, 1833414,
+2797634, -9058623, 913217, 8704288, -13877039, -1025423, 3739306, -12679280, 22483616, -21028160,
+10012106, 3730179, -12458090, 23684598, -16716013, 4035122, 2153389, 10735808, -50200652, -115650584,
+30124364, 106738528, 90195384, 121121296, -59973848, -77625088, -116703928, -119228296, 7996156, 88647592,
+97827544, 107252312, 35510788, -23493472, -85400592, -141167520, -77484432, 35767952, 55377696, 93963680,
+71091912, 19382114, -12856448, -29807610, -70875016, -45867028, -43787728, -8065949, 37002752, 57000660,
+29815662, 38035692, 19042274, -21526912, -3582003, -45959372, -64139432, -10979010, -15140297, 11234024,
+60054916, 34714072, 29691646, 8822400, -22819698, -23263154, -20272246, -33094870, -8902393, 1478006,
+13968844, 17339320, 28616830, 8258685, -1225139, -14507326, -27043798, -2225867, 9494025, 10016401,
+16771310, -4188667, -13572634, -6306086, -13514115, -10366440, 2985002, 7934952, 21983790, 18887118,
+18289044, 1978906, -7678328, -32321240, -22062174, -2129767, -1344325, 0, 0, 0,
+0, 0, 0, },
},
{
{
10871099,
-4711579, 5091684, 39192, -2043331, -4964446, -1811403, -3577171, -3725884, 773094, -3032784,
--1884954, -511101, 3035468, -222801, 1024887, -3275450, -1678795, -3889093, -6316823, 3422015,
-2469606, -2666638, 1373853, -1632625, -334471, 3979824, -2336462, -464393, -3007014, -1876364,
-1577327, 2162516, 3046206, 2671470, -4293894, 592169, 2261300, 68183, 3236258, 416075,
-1008244, -3397856, -1817308, 586263, -960999, 813896, 270046, -2039573, 3583613, 2485176,
--4343286, -184684, -236760, 1103807, 3747896, 1523103, -4109747, 595927, 1422171, -3065533,
-1148904, 1420560, -567473, 1628330, -434329, -827855, -345208, -2459406, -520765, -998580,
--1880122, -345208, 35433, -302258, -652298, -1038845, -5580237, -4926865, 6039798, -1286343,
-4816269, 1370632, 7182259, -1729261, -3767760, -2620467, 4377646, 73014, -1635309, -478889,
-4958003, -1380295, 878321, 1695438, -3375308, -2605972, -1115081, 862215, -3498251, 824634,
-687195, -4090420, -1327682, -2473901, 324807, -1826972, 631360, 6503118, 3358128, -1991791,
-304406, -3193308, 2389613, -914828, 3881577, -8136279, -883690, 1165547, -2863133, 431644,
-3914863, 2893734, -3614215, -2774549, -2897492, -637803, -2287070, -1273995, -3510599, 1245004,
--277562, -4207458, -2079301, -1773822, -157303, 714575, -835908, -566399, 1830193, 542240,
--1852205, 840203, 4454418, -2434710, -472983, -4917738, -1672890, -638340, 2055679, -2327336,
-630286, 328028, 299574, 7813620, -2538326, 2734821, 6574521, -4822712, -5488968, -556735,
--1168231, 224412, 3477313, 2085207, -7744363, 1553168, -4332012, -6018860, -145492, 2627983,
-2768643, -1750736, -9664, -359704, 3698504, -392990, 3085397, -998043, 582505, 950798,
-1113470, -3670050, 1934883, 3437048, -1203665, 4293357, -1939178, -79994, -4687957, 3864397,
-1130113, -940061, -3582003, -3421478, -1478006, -917512, 2158221, -32749, 1895691, 2030446,
--3152506, 2517925, -4318590, 2044941, 2895882, 5457830, 5087926, -3741454, 2311229, 181999,
--864362, 3411278, -2008434, -2203318, -1778653, 2902324, 1437740, 3652333, -2873333, 5260798,
--1289027, 332860, 1659468, 1383516, 3000035, -1460826, 4159676, 5626407, 8862665, 4472135,
--9212705, -9908490, 1138703, -788127, 2361158, 2236604, 6550362, 3005403, 3118146, 1633161,
--3228205, 1289564, 8255464, -5476620, -656593, 321586, 6606197, 4072166, 875100, 3027415,
--586263, 2363306, 2995740, 6905771, 3697967, 3924526, 1968706, 1744831, 3223373, 1315871,
--4859219, 3034931, 3802657, -1270237, 2720325, 3898757, -1458678, 1326071, 4544613, 1887101,
--1306744, 1847373, 4610648, -79457, -258235, -770947, 1093069, 4682051, -1573032, -2340757,
-1033477, -1351841, 2086817, 3041374, -3664681, 951335, -2509872, 421444, 990527, 4049617,
-2695629, -7677254, -479426, 4209605, -2541010, -2979634, -127775, 986232, 3271155, 96637,
--9240622, -3223910, 1880122, -1773285, 2956548, -339839, -17015050, 2141041, 1515050, 7624641,
--525597, 5909875, 2913599, 1352378, -10073846, -190589, -382789, -7840463, 987306, 5509370,
-845035, -309238, -965294, -3244848, -3743064, 1362578, 1999844, -466004, 1245004, 1561221,
-6596533, 592706, 2769180, 3009698, -3874597, 584116, -1130113, -1186485, -748398, 2333241,
--687195, -1914482, -3053185, -1842541, 569083, -5082557, -3790309, 1858110, -4214974, 1067299,
--6722161, -7851200, -2298881, 9241696, -2859911, -775242, 5207648, 1644973, 26307, 5735392,
--1245541, 423054, -1173063, 1493038, 3402151, -1774358, -6422587, 3520263, -3956739, -6942815,
--3143379, -2204392, -543850, 2040646, 6597607, -405874, -698469, -3346853, -963146, 3560528,
--2812667, -3106872, 3905199, 15028627, 556198, -838592, -5610301, -3192771, 7958038, -3122441,
-6225555, 5380521, -5962489, -902480, 4682051, -3289945, -1568200, -1491427, -2124935, 1079647,
-1717450, 374736, 2945274, -1218697, 512175, 1187559, -1150514, -2728915, -2892661, -3229279,
-326954, 4006131, 1757715, -3177202, 371515, 1659468, 7496866, -2071785, 6720013, -5921686,
-2813741, 4938676, -3090229, -1781338, -6101538, 3075197, 20401, -4170950, 4384625, -5202816,
-6123550, -144418, 8634495, 2158221, 1037235, 2272575, 3670050, 2117419, -2633352, 4446902,
--645856, -4242354, -6880001, -1642825, 3154654, -3229816, -2093797, 3067681, -3711926, 8070781,
--7162395, 363998, 5269388, -3779034, -1304596, -7242389, -96100, -2365990, -1017907, -1217623,
-7192460, 12750684, -3760244, -5596880, 1443646, -2306934, 3506304, 11596412, 56371, -2718714,
-3678640, 1957968, 3433290, 2041183, -6341519, 185757, -5658620, 3094524, 2727841, 1605244,
-10633265, -573915, 7928510, -278636, -195958, 2338073, -65498, 8264054, 1106491, 5166309,
--1937567, 7023346, -3204583, 3692061, 14111115, -2420214, -3552475, 9820980, 2102923, 6345278,
--146566, -6327561, 1941325, -3723737, 4278861, -7619272, -977642, -4056060, 4224101, -832687,
-892279, 7464653, -3703336, -7961259, 2199560, -926102, -321049, 5964099, 1260573, 578210,
--2753611, -5423470, -5305895, -2179696, -4346507, -3780108, 4732517, -2787971, -271120, -2210835,
-767189, -574452, 4429722, 1884954, -4211753, -7595650, 17916992, -8825621, 6529424, 624918,
-3405909, -3848291, -2950106, -1538135, 4180614, 5307506, 1407676, -2292439, -4737349, 3069828,
-5208722, -540092, 1880122, -2181844, 5641977, 2377265, -9580998, -2839510, 3550327, -150861,
--3872450, 235149, 4869419, -2876554, 1882806, -6012418, 4117800, 8623757, -3034395, 9102646,
-641024, -1105954, 6104223, 227633, 792421, 5691369, -10896332, 2182380, 3760244, 5287105,
-3586835, 4250407, -4690641, -3389266, 182536, 2328409, -5101885, 2354716, 5681168, 5331665,
-2142652, 15139760, -4202626, -1230508, -6197638, -2210298, -3914326, -5424007, 7927436, 3793530,
-7772280, -452045, -11258720, 7559143, -3636227, 4531728, 3915400, 2483028, 2646774, -8315594,
-11716671, 3533148, -21971442, -18640694, -17271138, 2702071, 2390149, 432718, -235149, -2093260,
--2244657, -486942, -3764002, -6839736, -5103495, -11278584, -5573794, -5941551, 5191005, -8873402,
--4537633, -5412733, 317828, -809601, -3095061, 1427003, -1728724, -9164923, -1214402, 6698002,
--76236, -8267275, -7589207, 1963337, -3716221, 5484137, 3388192, -7855495, 5778342, 9979357,
--10223096, -10211822, -6119255, 2542621, 7489349, -7037304, -7524246, 2380486, -4853850, -217970,
--2018098, -1686848, -11127723, 992674, 4753455, -3986267, 2164127, -5842766, -7156490, -6743099,
--4210142, -10961293, 15788837, -4599910, -2570538, 2010045, 402116, 2637647, 809601, 4295504,
-837519, 3536906, 8907225, -14886894, 7727183, -4540854, -4721243, -1845762, -20683488, 15814606,
-4207994, 3403225, -3798362, 15437723, -2392297, 7215008, 47245, 6461242, -9142375, 3519189,
-3730179, 1255741, -4413079, 13627394, -3594351, 4007205, 3345780, 14104136, -9478456, -877247,
-4196720, -2763812, -6862284, 3984119, -6419903, 1402844, 2101850, -8185671, 3330210, 264677,
-714038, 15353971, 10197326, -1755568, -6081674, -5507222, 3909494, -1338419, -9033390, 2148021,
--386547, 2212445, 7589744, 9873056, -6696391, 6476811, 4102768, -5421860, 3973382, 1997160,
--6843494, -4826470, -4028143, 6648610, -7432441, -7813620, -17869748, -14622216, 4555350, -3639448,
--1839320, -8341900, -13526999, 4239670, 2092186, -1867237, 8144869, 4392141, 9697499, 3161633,
-3411278, -2524367, 2935073, 6583648, -5362804, 5995775, -24565066, 23534810, 17033304, -6360310,
--5288716, 6652905, 489626, 975494, 11470247, 8213588, 762357, -1222992, 4888747, -2165201,
--1146756, 3510062, -4490925, 6605660, 4716411, -4770635, 7160784, -330712, 2275796, -99858,
--10537165, -229244, 8498130, 8691403, 3749507, 3939022, 4949950, -4753992, -5988258, 3176665,
-5503464, 162672, -1987496, -5291400, 2879239, -1296006, 7616588, 8694624, -382789, 9964324,
--4438312, 11059004, 6374805, 13251585, 1519345, 2224793, -3111704, -4939750, -377420, 10230612,
-16818018, 1297617, 12996034, -5009006, -11130945, 1876901, 5195837, -10059887, 11547020, -3301756,
-4631586, -22538914, -8908836, 63351, -4499515, 4589173, 8626442, 15968152, 4568235, 281857,
--6193880, -12885439, 7154342, -8702141, 17670032, -6138582, 2993592, 13488882, 13883482, 79994,
--6433861, -2934000, -2957622, 2007360, -8612483, -6539625, 8990440, 3088618, 6121402, 7371775,
-8391292, -2228551, 5777805, -715112, 6727530, 25169582, 6617471, -10457708, 12211129, 14079977,
-1515587, -967441, 1636383, -5213554, -7863012, -3413962, 14142790, 10076530, 8261907, 12456479,
-3237869, -667867, -4185983, -12955769, 7577933, 8828305, 5156108, -913754, -768799, -3538516,
-2988760, 13006772, 9012452, -11836930, 9816148, -9707700, 12870406, 4066260, 5506148, 6883759,
--861678, -4660040, -775778, 6507949, 21629456, -1401233, 11457899, -2561948, -7920457, 12990129,
-11178726, 4840965, 3768297, 12528420, 5150203, 3801046, 861141, 8639327, -4141422, 8762270,
-11209865, -12562779, 8712878, 5021891, -2862059, 859530, 6084358, -5246840, -10955925, 16843252,
-3881577, 3237869, 3406446, 9978820, 3189550, -10053982, 11025181, -14429480, -16502875, 1445257,
-2357400, -9356586, -2692408, -27596238, -19108310, -14775224, -4567698, -15217606, -7023882, 5577015,
--13139916, 9351754, 9203041, -11241003, 14733885, 7397545, -2304787, -1673964, -6875706, 56371,
--12655658, 28643136, 9012989, 4188130, -13867376, 3165928, -3860639, 18802294, -3236795, -922344,
--16864190, 16675211, 1820529, 6204617, 6262599, 9438191, 6393059, -4494147, 6487011, -9212705,
-9448928, -3886946, 5921686, -14507326, 31786516, 3761318, -13469017, 6684580, 9941239, 5772973,
-11461120, 7420630, -12974559, -21304648, 7340636, -2004676, -1105954, 14334453, -1367410, -1210107,
-2368675, 12939126, -2010582, 7982734, -4714801, -5796595, -7650948, -10044318, 20368346, 11089606,
-8100845, -5007932, -16525960, -20607790, 11551315, 8225936, -6547141, 6203007, -4075924, 1559073,
-20328080, 9418863, -4267050, 11385958, -2311229, 6411850, -5193689, 7537131, -12952011, -19763828,
--6865505, -8233453, -339302, 25409026, -18569828, 12520367, 7864085, 6036577, -3083787, 10649908,
-5602785, -17969606, -22865870, -7546258, -9667435, 28493350, 21284248, -5558225, -10783052, 69793,
--11063299, -1554241, 21488796, 19590420, 12070469, -15187004, 5167383, -11603391, 21726092, 10657424,
--311385, 1257889, 8647380, -10571525, 4704063, 19031000, 11821361, -14217952, 19884088, -4958540,
-11633456, -17007534, -6172405, 30506616, 14593762, 17872970, 5023501, -24029806, 8506720, -19385334,
-14086419, 37856916, 14143864, 23976654, -9561134, 7356742, 11818139, -521839, 3804804, -8964670,
-3470871, 15188078, 1844152, -3359738, -12100533, 7793218, 6598681, -12953621, 8201777, -4625143,
-11520713, 15171972, 16895864, 19284404, 3201361, -14173392, 5310190, 9314710, 1245004, 26041998,
-3721052, -29093034, -16972638, 8753680, -5914707, -34435436, 2916820, 15163919, 7201050, 1877438,
--1354525, 18633178, -12495670, -17552458, -1445793, -6102612, -15260556, -682900, 3514894, -9841918,
--12569759, -8881455, 3302293, 2458332, -18842558, 6771016, -5991480, 5616207, 28281822, -2966212,
--4933844, 17973902, 1278290, 15353971, -8559870, 10927471, 7288560, -11236171, -3642669, 24768540,
-2874407, -34876744, -15984258, 20980916, -31217432, 17109540, -29557964, 1957968, -5034239, -42616276,
--5928666, 18577344, 38478612, 11950747, -5996311, 9008694, -15243376, -5417028, -34221764, -2306934,
--23344220, -3735548, -5361730, -16326244, -17191144, -6023692, 9393630, -15702937, 10237591, 18984830,
--20279762, 6839199, 6177237, 3027952, -21545166, -3648038, -480499, -22680648, 5561446, 28002650,
--2397666, -41591928, 14363444, -25261924, -63774896, 17563732, -26500486, -33029372, 1529008, -15300284,
-4328254, 10914586, -6469832, 16428787, -14197014, 14327474, -11757473, -28715078, -62814, 20092930,
-19257560, -37199784, 5146982, -4650376, -27860380, -7582228, -7255811, 47645684, 23318452, 27828704,
-11977590, 11887933, 28394566, 42065448, -11802033, -21050708, -8188355, 54160076, 58725624, -36939404,
--15489263, 25288230, -13654775, 9220758, -18207440, 3370476, -18639622, -33964600, 42631308, 4722854,
-12479027, 9602473, 2812667, 4045322, 46708, 7161321, 9691594, -33024004, -26968636, -24365350,
--22478786, -17777944, -11192148, -10173167, -17845052, -11345156, -15247671, 14273250, 11271605, 4316442,
--8782671, 1370632, -33972116, -18540836, 8138426, -31994286, -3577708, 12661564, 25201258, 1820529,
-4351876, -13096966, -20010252, -24902220, 17855252, -4519380, 17753784, -66216584, 3648575, -9520869,
-7126962, 37166500, 4668630, 4469451, 4400194, -13577465, -13103408, -1721745, -2332704, -38096896,
-8197482, -15254113, 33012192, 173409, -34430604, -50066972, -28617368, -7737921, -32061930, -34342020,
--18248242, 23234700, -4818417, -8994198, -14936286, 64441688, -34896608, 25589952, 45885820, -19471772,
-7682086, 37452652, -43634184, 3819300, 6318434, 23990076, -49221400, 4999879, 4556424, 18869938,
--20913806, 2655364, 10074383, -27197344, 5392869, 315680, -4628901, 19007914, -4052302, -1695438,
-7697655, -994285, -4315906, 19039054, -14302241, 7561827, -5563057, 7374459, -9049496, -1891396,
--11220065, 3747896, 2690260, 35101156, 10772315, 19164680, -2889976, 4479651, 23450522, 3353296,
--8651138, 17603460, 9673877, -5646809, -30429306, 32995012, -30404610, 10398116, 14395120, 24912958,
--30085710, 38092064, 50903416, -21319144, -52492552, 76946488, 24116242, -26492432, 15290620, -24385750,
--41890428, -10728291, -8433705, -31832686, 33646772, -46858632, 16428250, 44674104, -26287884, -56195352,
-59880972, -14544370, 35530652, -22362284, -17701708, -36091684, -16199543, 22408454, 17646410, -9218074,
--11480984, 12174622, 29671244, -11892764, 22584548, 26640072, -17757542, -2167885, 16756815, -3659312,
-717260, -4824859, 2206540, -26256746, 8139500, -5510443, 1745367, 6815576, -4510790, 5870147,
--10201621, -22012244, -9687299, -38602628, 5775658, 208843, -4882841, 7489349, 4650376, -2291902,
--7912404, 15865609, 25697326, -25783762, 38978976, -4113505, 6083821, 5648956, 34607236, 15527917,
-25618944, -30738008, -6578280, -5710696, 44857176, -40793600, -12846247, 20003810, -343597, -47143172,
-4347044, -9707163, -6890202, 21570936, 24806658, 1729261, -16473347, 38257420, -14766634, 63839856,
-2206003, -28962576, 1466195, -4123169, -31549756, 65850440, 15600932, -4965519, -54742044, 15275588,
-20387672, 12794171, 49112416, -8256538, 12026982, -3643206, -23578296, 13329431, -14561013, -8011725,
-11157788, 22375706, -21407728, 25617870, 4185983, -472983, 51948704, -9531069, -4204773, 38611756,
--22779970, 34154116, 15951509, -7308961, 14902463, 14694157, 32838246, 33030982, 11083163, -25872346,
-56894896, -54916524, 3621194, 50799800, -25307558, 11520713, -4101157, -6220724, -56426208, 39895952,
-12514461, 17792976, 20704964, -11996381, -26854284, -21786758, -15400142, 2755222, 57892936, 285078,
-46060840, -14652281, -30783642, 1567126, 15384036, -27885076, 47719236, 17658222, 25248502, 43453796,
-32146756, -47973176, 21944062, -68647000, -79207248, 561030, 75374528, 42701100, 11471858, -51566452,
--170944528, -34881040, 63880124, 60076392, 101814888, -9392557, 7224672, -43581032, 36612984, -27366994,
--4781909, -17678086, 16962974, -19844360, -932545, -1971927, -5518496, 4242891, 18626200, -19638202,
-8564702, 1754494, -4763656, 500901, 13027173, -16497506, -4804995, -2178085, 27224188, -27516244,
-7106561, -11861626, 17907866, -19951734, -6098854, 7351911, -4280472, 4272956, -13511967, -1876364,
-11482595, -3129421, 4163971, 4282620, 2032056, 15410880, -14253386, 9910100, 10204842, 13890998,
--2408403, -30120606, 3365107, 4366371, 11924977, 12207371, -2894271, 3874597, -5879810, -13139916,
--3120831, 7331509, -3424700, 19677392, -16063715, -3988951, -31278636, 10203769, 2307471, -3559991,
-5721434, 7278359, -1619740, -14181445, 3546032, 17060146, -4576825, -151934, 3992172, -3416647,
-8390219, -2328946, -24713778, 60436632, 16589848, 15042586, -7813083, -19157164, -18405008, 5411659,
-11872363, 1984275, -517007, 69793, -8631811, -1471026, 4413079, -2206003, 2006287, -817118,
--8635032, -336618, 4562866, 7006166, -5944235, 1808181, 4613332, -8678518, 14638322, -8650064,
--7434052, -7486128, 2189360, 4327180, 6918119, -7203197, 9569724, -13357348, 9153112, 8055748,
--5687074, -513785, -182536, -1451162, 7204808, -7391102, 2443300, -2299955, -9416716, 13813689,
--7391102, -170188, -5395553, -1688996, 9861245, -12402792, 5388574, 3546569, -5138392, 4670777,
--10326175, 3172370, 4776541, -7837242, 550830, 4329327, -6942815, 7423314, -9706626, 2872260,
-10782515, -15102179, 4816269, -5751498, 1529008, 5965710, -4029216, -2348810, 8896488, -46728708,
--109448648, 30798674, 106858784, 73448776, 116210544, -64918432, -69098504, -94162864, -108986408, 2201171,
-83832392, 86625736, 90436440, 17648558, -30079266, -59530396, -85397912, -72388992, 5481989, 55999932,
-66432944, 59776816, 14186277, -16683264, -10487236, -46905876, -52469468, -22199612, -1574106, 20000588,
-43970800, 21426518, 15854872, 21975738, -11183558, -26363046, -4444755, -42072424, -19828254, 343597,
-6512244, 31857384, 37083820, 3189550, -5785858, -3609383, -27617176, -7552700, -525597, -5822365,
-9373766, 18295486, -4056597, -1555852, -7349226, -11577084, 2234994, 1053878, -1366337, 20688320,
-13952738, 5138929, -611496, -19605988, -28362354, -22376780, 1596654, 21132850, 18128520, 23909546,
-3385508, 1022202, 5804112, -28398860, -15374372, -7304666, 374736, 1276679, 0, 0,
-0, 0, 0, },
+4711579, 5091684, 39192, -2043331, -4964446, -1811403, -3577171, -3725884, 773094, -3032784,
+-1884954, -511101, 3035468, -222801, 1024887, -3275450, -1678795, -3889093, -6316823, 3422015,
+2469606, -2666638, 1373853, -1632625, -334471, 3979824, -2336462, -464393, -3007014, -1876364,
+1577327, 2162516, 3046206, 2671470, -4293894, 592169, 2261300, 68183, 3236258, 416075,
+1008244, -3397856, -1817308, 586263, -960999, 813896, 270046, -2039573, 3583613, 2485176,
+-4343286, -184684, -236760, 1103807, 3747896, 1523103, -4109747, 595927, 1422171, -3065533,
+1148904, 1420560, -567473, 1628330, -434329, -827855, -345208, -2459406, -520765, -998580,
+-1880122, -345208, 35433, -302258, -652298, -1038845, -5580237, -4926865, 6039798, -1286343,
+4816269, 1370632, 7182259, -1729261, -3767760, -2620467, 4377646, 73014, -1635309, -478889,
+4958003, -1380295, 878321, 1695438, -3375308, -2605972, -1115081, 862215, -3498251, 824634,
+687195, -4090420, -1327682, -2473901, 324807, -1826972, 631360, 6503118, 3358128, -1991791,
+304406, -3193308, 2389613, -914828, 3881577, -8136279, -883690, 1165547, -2863133, 431644,
+3914863, 2893734, -3614215, -2774549, -2897492, -637803, -2287070, -1273995, -3510599, 1245004,
+-277562, -4207458, -2079301, -1773822, -157303, 714575, -835908, -566399, 1830193, 542240,
+-1852205, 840203, 4454418, -2434710, -472983, -4917738, -1672890, -638340, 2055679, -2327336,
+630286, 328028, 299574, 7813620, -2538326, 2734821, 6574521, -4822712, -5488968, -556735,
+-1168231, 224412, 3477313, 2085207, -7744363, 1553168, -4332012, -6018860, -145492, 2627983,
+2768643, -1750736, -9664, -359704, 3698504, -392990, 3085397, -998043, 582505, 950798,
+1113470, -3670050, 1934883, 3437048, -1203665, 4293357, -1939178, -79994, -4687957, 3864397,
+1130113, -940061, -3582003, -3421478, -1478006, -917512, 2158221, -32749, 1895691, 2030446,
+-3152506, 2517925, -4318590, 2044941, 2895882, 5457830, 5087926, -3741454, 2311229, 181999,
+-864362, 3411278, -2008434, -2203318, -1778653, 2902324, 1437740, 3652333, -2873333, 5260798,
+-1289027, 332860, 1659468, 1383516, 3000035, -1460826, 4159676, 5626407, 8862665, 4472135,
+-9212705, -9908490, 1138703, -788127, 2361158, 2236604, 6550362, 3005403, 3118146, 1633161,
+-3228205, 1289564, 8255464, -5476620, -656593, 321586, 6606197, 4072166, 875100, 3027415,
+-586263, 2363306, 2995740, 6905771, 3697967, 3924526, 1968706, 1744831, 3223373, 1315871,
+-4859219, 3034931, 3802657, -1270237, 2720325, 3898757, -1458678, 1326071, 4544613, 1887101,
+-1306744, 1847373, 4610648, -79457, -258235, -770947, 1093069, 4682051, -1573032, -2340757,
+1033477, -1351841, 2086817, 3041374, -3664681, 951335, -2509872, 421444, 990527, 4049617,
+2695629, -7677254, -479426, 4209605, -2541010, -2979634, -127775, 986232, 3271155, 96637,
+-9240622, -3223910, 1880122, -1773285, 2956548, -339839, -17015050, 2141041, 1515050, 7624641,
+-525597, 5909875, 2913599, 1352378, -10073846, -190589, -382789, -7840463, 987306, 5509370,
+845035, -309238, -965294, -3244848, -3743064, 1362578, 1999844, -466004, 1245004, 1561221,
+6596533, 592706, 2769180, 3009698, -3874597, 584116, -1130113, -1186485, -748398, 2333241,
+-687195, -1914482, -3053185, -1842541, 569083, -5082557, -3790309, 1858110, -4214974, 1067299,
+-6722161, -7851200, -2298881, 9241696, -2859911, -775242, 5207648, 1644973, 26307, 5735392,
+-1245541, 423054, -1173063, 1493038, 3402151, -1774358, -6422587, 3520263, -3956739, -6942815,
+-3143379, -2204392, -543850, 2040646, 6597607, -405874, -698469, -3346853, -963146, 3560528,
+-2812667, -3106872, 3905199, 15028627, 556198, -838592, -5610301, -3192771, 7958038, -3122441,
+6225555, 5380521, -5962489, -902480, 4682051, -3289945, -1568200, -1491427, -2124935, 1079647,
+1717450, 374736, 2945274, -1218697, 512175, 1187559, -1150514, -2728915, -2892661, -3229279,
+326954, 4006131, 1757715, -3177202, 371515, 1659468, 7496866, -2071785, 6720013, -5921686,
+2813741, 4938676, -3090229, -1781338, -6101538, 3075197, 20401, -4170950, 4384625, -5202816,
+6123550, -144418, 8634495, 2158221, 1037235, 2272575, 3670050, 2117419, -2633352, 4446902,
+-645856, -4242354, -6880001, -1642825, 3154654, -3229816, -2093797, 3067681, -3711926, 8070781,
+-7162395, 363998, 5269388, -3779034, -1304596, -7242389, -96100, -2365990, -1017907, -1217623,
+7192460, 12750684, -3760244, -5596880, 1443646, -2306934, 3506304, 11596412, 56371, -2718714,
+3678640, 1957968, 3433290, 2041183, -6341519, 185757, -5658620, 3094524, 2727841, 1605244,
+10633265, -573915, 7928510, -278636, -195958, 2338073, -65498, 8264054, 1106491, 5166309,
+-1937567, 7023346, -3204583, 3692061, 14111115, -2420214, -3552475, 9820980, 2102923, 6345278,
+-146566, -6327561, 1941325, -3723737, 4278861, -7619272, -977642, -4056060, 4224101, -832687,
+892279, 7464653, -3703336, -7961259, 2199560, -926102, -321049, 5964099, 1260573, 578210,
+-2753611, -5423470, -5305895, -2179696, -4346507, -3780108, 4732517, -2787971, -271120, -2210835,
+767189, -574452, 4429722, 1884954, -4211753, -7595650, 17916992, -8825621, 6529424, 624918,
+3405909, -3848291, -2950106, -1538135, 4180614, 5307506, 1407676, -2292439, -4737349, 3069828,
+5208722, -540092, 1880122, -2181844, 5641977, 2377265, -9580998, -2839510, 3550327, -150861,
+-3872450, 235149, 4869419, -2876554, 1882806, -6012418, 4117800, 8623757, -3034395, 9102646,
+641024, -1105954, 6104223, 227633, 792421, 5691369, -10896332, 2182380, 3760244, 5287105,
+3586835, 4250407, -4690641, -3389266, 182536, 2328409, -5101885, 2354716, 5681168, 5331665,
+2142652, 15139760, -4202626, -1230508, -6197638, -2210298, -3914326, -5424007, 7927436, 3793530,
+7772280, -452045, -11258720, 7559143, -3636227, 4531728, 3915400, 2483028, 2646774, -8315594,
+11716671, 3533148, -21971442, -18640694, -17271138, 2702071, 2390149, 432718, -235149, -2093260,
+-2244657, -486942, -3764002, -6839736, -5103495, -11278584, -5573794, -5941551, 5191005, -8873402,
+-4537633, -5412733, 317828, -809601, -3095061, 1427003, -1728724, -9164923, -1214402, 6698002,
+-76236, -8267275, -7589207, 1963337, -3716221, 5484137, 3388192, -7855495, 5778342, 9979357,
+-10223096, -10211822, -6119255, 2542621, 7489349, -7037304, -7524246, 2380486, -4853850, -217970,
+-2018098, -1686848, -11127723, 992674, 4753455, -3986267, 2164127, -5842766, -7156490, -6743099,
+-4210142, -10961293, 15788837, -4599910, -2570538, 2010045, 402116, 2637647, 809601, 4295504,
+837519, 3536906, 8907225, -14886894, 7727183, -4540854, -4721243, -1845762, -20683488, 15814606,
+4207994, 3403225, -3798362, 15437723, -2392297, 7215008, 47245, 6461242, -9142375, 3519189,
+3730179, 1255741, -4413079, 13627394, -3594351, 4007205, 3345780, 14104136, -9478456, -877247,
+4196720, -2763812, -6862284, 3984119, -6419903, 1402844, 2101850, -8185671, 3330210, 264677,
+714038, 15353971, 10197326, -1755568, -6081674, -5507222, 3909494, -1338419, -9033390, 2148021,
+-386547, 2212445, 7589744, 9873056, -6696391, 6476811, 4102768, -5421860, 3973382, 1997160,
+-6843494, -4826470, -4028143, 6648610, -7432441, -7813620, -17869748, -14622216, 4555350, -3639448,
+-1839320, -8341900, -13526999, 4239670, 2092186, -1867237, 8144869, 4392141, 9697499, 3161633,
+3411278, -2524367, 2935073, 6583648, -5362804, 5995775, -24565066, 23534810, 17033304, -6360310,
+-5288716, 6652905, 489626, 975494, 11470247, 8213588, 762357, -1222992, 4888747, -2165201,
+-1146756, 3510062, -4490925, 6605660, 4716411, -4770635, 7160784, -330712, 2275796, -99858,
+-10537165, -229244, 8498130, 8691403, 3749507, 3939022, 4949950, -4753992, -5988258, 3176665,
+5503464, 162672, -1987496, -5291400, 2879239, -1296006, 7616588, 8694624, -382789, 9964324,
+-4438312, 11059004, 6374805, 13251585, 1519345, 2224793, -3111704, -4939750, -377420, 10230612,
+16818018, 1297617, 12996034, -5009006, -11130945, 1876901, 5195837, -10059887, 11547020, -3301756,
+4631586, -22538914, -8908836, 63351, -4499515, 4589173, 8626442, 15968152, 4568235, 281857,
+-6193880, -12885439, 7154342, -8702141, 17670032, -6138582, 2993592, 13488882, 13883482, 79994,
+-6433861, -2934000, -2957622, 2007360, -8612483, -6539625, 8990440, 3088618, 6121402, 7371775,
+8391292, -2228551, 5777805, -715112, 6727530, 25169582, 6617471, -10457708, 12211129, 14079977,
+1515587, -967441, 1636383, -5213554, -7863012, -3413962, 14142790, 10076530, 8261907, 12456479,
+3237869, -667867, -4185983, -12955769, 7577933, 8828305, 5156108, -913754, -768799, -3538516,
+2988760, 13006772, 9012452, -11836930, 9816148, -9707700, 12870406, 4066260, 5506148, 6883759,
+-861678, -4660040, -775778, 6507949, 21629456, -1401233, 11457899, -2561948, -7920457, 12990129,
+11178726, 4840965, 3768297, 12528420, 5150203, 3801046, 861141, 8639327, -4141422, 8762270,
+11209865, -12562779, 8712878, 5021891, -2862059, 859530, 6084358, -5246840, -10955925, 16843252,
+3881577, 3237869, 3406446, 9978820, 3189550, -10053982, 11025181, -14429480, -16502875, 1445257,
+2357400, -9356586, -2692408, -27596238, -19108310, -14775224, -4567698, -15217606, -7023882, 5577015,
+-13139916, 9351754, 9203041, -11241003, 14733885, 7397545, -2304787, -1673964, -6875706, 56371,
+-12655658, 28643136, 9012989, 4188130, -13867376, 3165928, -3860639, 18802294, -3236795, -922344,
+-16864190, 16675211, 1820529, 6204617, 6262599, 9438191, 6393059, -4494147, 6487011, -9212705,
+9448928, -3886946, 5921686, -14507326, 31786516, 3761318, -13469017, 6684580, 9941239, 5772973,
+11461120, 7420630, -12974559, -21304648, 7340636, -2004676, -1105954, 14334453, -1367410, -1210107,
+2368675, 12939126, -2010582, 7982734, -4714801, -5796595, -7650948, -10044318, 20368346, 11089606,
+8100845, -5007932, -16525960, -20607790, 11551315, 8225936, -6547141, 6203007, -4075924, 1559073,
+20328080, 9418863, -4267050, 11385958, -2311229, 6411850, -5193689, 7537131, -12952011, -19763828,
+-6865505, -8233453, -339302, 25409026, -18569828, 12520367, 7864085, 6036577, -3083787, 10649908,
+5602785, -17969606, -22865870, -7546258, -9667435, 28493350, 21284248, -5558225, -10783052, 69793,
+-11063299, -1554241, 21488796, 19590420, 12070469, -15187004, 5167383, -11603391, 21726092, 10657424,
+-311385, 1257889, 8647380, -10571525, 4704063, 19031000, 11821361, -14217952, 19884088, -4958540,
+11633456, -17007534, -6172405, 30506616, 14593762, 17872970, 5023501, -24029806, 8506720, -19385334,
+14086419, 37856916, 14143864, 23976654, -9561134, 7356742, 11818139, -521839, 3804804, -8964670,
+3470871, 15188078, 1844152, -3359738, -12100533, 7793218, 6598681, -12953621, 8201777, -4625143,
+11520713, 15171972, 16895864, 19284404, 3201361, -14173392, 5310190, 9314710, 1245004, 26041998,
+3721052, -29093034, -16972638, 8753680, -5914707, -34435436, 2916820, 15163919, 7201050, 1877438,
+-1354525, 18633178, -12495670, -17552458, -1445793, -6102612, -15260556, -682900, 3514894, -9841918,
+-12569759, -8881455, 3302293, 2458332, -18842558, 6771016, -5991480, 5616207, 28281822, -2966212,
+-4933844, 17973902, 1278290, 15353971, -8559870, 10927471, 7288560, -11236171, -3642669, 24768540,
+2874407, -34876744, -15984258, 20980916, -31217432, 17109540, -29557964, 1957968, -5034239, -42616276,
+-5928666, 18577344, 38478612, 11950747, -5996311, 9008694, -15243376, -5417028, -34221764, -2306934,
+-23344220, -3735548, -5361730, -16326244, -17191144, -6023692, 9393630, -15702937, 10237591, 18984830,
+-20279762, 6839199, 6177237, 3027952, -21545166, -3648038, -480499, -22680648, 5561446, 28002650,
+-2397666, -41591928, 14363444, -25261924, -63774896, 17563732, -26500486, -33029372, 1529008, -15300284,
+4328254, 10914586, -6469832, 16428787, -14197014, 14327474, -11757473, -28715078, -62814, 20092930,
+19257560, -37199784, 5146982, -4650376, -27860380, -7582228, -7255811, 47645684, 23318452, 27828704,
+11977590, 11887933, 28394566, 42065448, -11802033, -21050708, -8188355, 54160076, 58725624, -36939404,
+-15489263, 25288230, -13654775, 9220758, -18207440, 3370476, -18639622, -33964600, 42631308, 4722854,
+12479027, 9602473, 2812667, 4045322, 46708, 7161321, 9691594, -33024004, -26968636, -24365350,
+-22478786, -17777944, -11192148, -10173167, -17845052, -11345156, -15247671, 14273250, 11271605, 4316442,
+-8782671, 1370632, -33972116, -18540836, 8138426, -31994286, -3577708, 12661564, 25201258, 1820529,
+4351876, -13096966, -20010252, -24902220, 17855252, -4519380, 17753784, -66216584, 3648575, -9520869,
+7126962, 37166500, 4668630, 4469451, 4400194, -13577465, -13103408, -1721745, -2332704, -38096896,
+8197482, -15254113, 33012192, 173409, -34430604, -50066972, -28617368, -7737921, -32061930, -34342020,
+-18248242, 23234700, -4818417, -8994198, -14936286, 64441688, -34896608, 25589952, 45885820, -19471772,
+7682086, 37452652, -43634184, 3819300, 6318434, 23990076, -49221400, 4999879, 4556424, 18869938,
+-20913806, 2655364, 10074383, -27197344, 5392869, 315680, -4628901, 19007914, -4052302, -1695438,
+7697655, -994285, -4315906, 19039054, -14302241, 7561827, -5563057, 7374459, -9049496, -1891396,
+-11220065, 3747896, 2690260, 35101156, 10772315, 19164680, -2889976, 4479651, 23450522, 3353296,
+-8651138, 17603460, 9673877, -5646809, -30429306, 32995012, -30404610, 10398116, 14395120, 24912958,
+-30085710, 38092064, 50903416, -21319144, -52492552, 76946488, 24116242, -26492432, 15290620, -24385750,
+-41890428, -10728291, -8433705, -31832686, 33646772, -46858632, 16428250, 44674104, -26287884, -56195352,
+59880972, -14544370, 35530652, -22362284, -17701708, -36091684, -16199543, 22408454, 17646410, -9218074,
+-11480984, 12174622, 29671244, -11892764, 22584548, 26640072, -17757542, -2167885, 16756815, -3659312,
+717260, -4824859, 2206540, -26256746, 8139500, -5510443, 1745367, 6815576, -4510790, 5870147,
+-10201621, -22012244, -9687299, -38602628, 5775658, 208843, -4882841, 7489349, 4650376, -2291902,
+-7912404, 15865609, 25697326, -25783762, 38978976, -4113505, 6083821, 5648956, 34607236, 15527917,
+25618944, -30738008, -6578280, -5710696, 44857176, -40793600, -12846247, 20003810, -343597, -47143172,
+4347044, -9707163, -6890202, 21570936, 24806658, 1729261, -16473347, 38257420, -14766634, 63839856,
+2206003, -28962576, 1466195, -4123169, -31549756, 65850440, 15600932, -4965519, -54742044, 15275588,
+20387672, 12794171, 49112416, -8256538, 12026982, -3643206, -23578296, 13329431, -14561013, -8011725,
+11157788, 22375706, -21407728, 25617870, 4185983, -472983, 51948704, -9531069, -4204773, 38611756,
+-22779970, 34154116, 15951509, -7308961, 14902463, 14694157, 32838246, 33030982, 11083163, -25872346,
+56894896, -54916524, 3621194, 50799800, -25307558, 11520713, -4101157, -6220724, -56426208, 39895952,
+12514461, 17792976, 20704964, -11996381, -26854284, -21786758, -15400142, 2755222, 57892936, 285078,
+46060840, -14652281, -30783642, 1567126, 15384036, -27885076, 47719236, 17658222, 25248502, 43453796,
+32146756, -47973176, 21944062, -68647000, -79207248, 561030, 75374528, 42701100, 11471858, -51566452,
+-170944528, -34881040, 63880124, 60076392, 101814888, -9392557, 7224672, -43581032, 36612984, -27366994,
+-4781909, -17678086, 16962974, -19844360, -932545, -1971927, -5518496, 4242891, 18626200, -19638202,
+8564702, 1754494, -4763656, 500901, 13027173, -16497506, -4804995, -2178085, 27224188, -27516244,
+7106561, -11861626, 17907866, -19951734, -6098854, 7351911, -4280472, 4272956, -13511967, -1876364,
+11482595, -3129421, 4163971, 4282620, 2032056, 15410880, -14253386, 9910100, 10204842, 13890998,
+-2408403, -30120606, 3365107, 4366371, 11924977, 12207371, -2894271, 3874597, -5879810, -13139916,
+-3120831, 7331509, -3424700, 19677392, -16063715, -3988951, -31278636, 10203769, 2307471, -3559991,
+5721434, 7278359, -1619740, -14181445, 3546032, 17060146, -4576825, -151934, 3992172, -3416647,
+8390219, -2328946, -24713778, 60436632, 16589848, 15042586, -7813083, -19157164, -18405008, 5411659,
+11872363, 1984275, -517007, 69793, -8631811, -1471026, 4413079, -2206003, 2006287, -817118,
+-8635032, -336618, 4562866, 7006166, -5944235, 1808181, 4613332, -8678518, 14638322, -8650064,
+-7434052, -7486128, 2189360, 4327180, 6918119, -7203197, 9569724, -13357348, 9153112, 8055748,
+-5687074, -513785, -182536, -1451162, 7204808, -7391102, 2443300, -2299955, -9416716, 13813689,
+-7391102, -170188, -5395553, -1688996, 9861245, -12402792, 5388574, 3546569, -5138392, 4670777,
+-10326175, 3172370, 4776541, -7837242, 550830, 4329327, -6942815, 7423314, -9706626, 2872260,
+10782515, -15102179, 4816269, -5751498, 1529008, 5965710, -4029216, -2348810, 8896488, -46728708,
+-109448648, 30798674, 106858784, 73448776, 116210544, -64918432, -69098504, -94162864, -108986408, 2201171,
+83832392, 86625736, 90436440, 17648558, -30079266, -59530396, -85397912, -72388992, 5481989, 55999932,
+66432944, 59776816, 14186277, -16683264, -10487236, -46905876, -52469468, -22199612, -1574106, 20000588,
+43970800, 21426518, 15854872, 21975738, -11183558, -26363046, -4444755, -42072424, -19828254, 343597,
+6512244, 31857384, 37083820, 3189550, -5785858, -3609383, -27617176, -7552700, -525597, -5822365,
+9373766, 18295486, -4056597, -1555852, -7349226, -11577084, 2234994, 1053878, -1366337, 20688320,
+13952738, 5138929, -611496, -19605988, -28362354, -22376780, 1596654, 21132850, 18128520, 23909546,
+3385508, 1022202, 5804112, -28398860, -15374372, -7304666, 374736, 1276679, 0, 0,
+0, 0, 0, },
{
10924786,
-6826851, 2576981, -311922, 5572183, 409096, 82141, -1086090, 2179159, 4372277, 619012,
--2878702, 3926674, 2895882, -1643899, 409096, 923955, -2917357, -1707250, 1961190, 632971,
-3770445, -2250563, 2246805, -3097208, -137439, 827855, -3096135, 965831, -1439888, 2833068,
--3769908, 5240397, -729071, -2787434, -5018133, 1829656, 4124779, -1475858, 904091, -2236604,
-1057099, 2969433, -147640, -1038845, -1052267, -1012002, 2515777, -2498060, -2246268, 671626,
-1196685, 1803886, 217970, -1911261, 5364951, 634581, 682363, 3292629, -1029718, 1573032,
--31139, -943282, -509491, -445603, 1829656, 3636764, -610422, 921271, 622233, 4495220,
--869731, -1659468, -938450, -1498407, -2046552, -388158, -4283156, -2802466, 1347546, -1003412,
--1276142, -2016487, 633508, 4391067, -1258425, 151398, 542240, 7432978, -38655, 1538135,
--2897492, -1939178, -644245, -1813550, -2010582, -1825898, -1247688, -1722819, -2388539, 2254858,
-3562675, -1735704, 622233, 315680, -3841312, 292058, 5369, -2605972, 5360656, -2499134,
-3088082, 1342177, -716186, -2816425, -2700998, 2925410, -1318018, -797790, -4069482, -828392,
--292058, -1722282, 5652714, -962073, -251256, 2585570, -304406, -4355634, -2275259, -3793530,
--2633889, 6638409, -1666984, 7364795, 90194, 46171, -1150514, 1178432, 432718, -3808026,
--4317516, 3659849, 533113, 2648921, -118112, 3048353, 1785633, -3546032, 208843, 1910187,
-2459943, 588411, 2073932, 9867687, -512175, -925565, -2226404, -5027796, -6255083, -5706401,
-903554, 5531381, 2095944, 7305203, 2673080, -2975876, 1098438, -8185134, -6885907, 3543348,
--2260764, 4895726, -192737, -3512747, -1619203, 9494025, 2313914, 4143570, 66035, 3223373,
--1137630, -917512, 2080375, -1057636, -3802657, -81068, 1727114, -257161, 2147, 6107444,
-3891777, -6127845, 389768, -3814468, 6923488, 4151623, 523449, -2174327, -2195802, 3267396,
-1956895, 5172215, -4387309, 8093329, 9946071, -2499134, 9694278, 153008, 5190468, 3236795,
--1519345, 1782948, 7804493, -758062, -4898947, 4491462, 1620813, 30602, -395674, -843961,
-497142, 4438849, -2699924, 1562294, 1279900, 2204929, -3658775, 3866008, 788663, -1063004,
--8578123, -6753299, 1810866, -3918084, 2390149, -4835597, -6806987, -6274947, 590021, -4736812,
-3884261, 2833605, -6083285, -1396938, 2098092, 360777, 2637647, -1904818, 2733210, 3527779,
--5449777, 1473174, 1410360, -4323422, 2142652, 256087, -5194226, 3467112, 3197603, -1901060,
-3516505, 393526, 2807298, 2677375, 858993, -1988033, -787053, -6010807, -2105071, -3055869,
-2747169, 3118146, 934692, -9532680, 1440425, 3833795, -2487860, 6484864, -5775121, -7292318,
-168577, -2247342, 1907502, -5238250, 8942122, -609349, -3527242, 795643, -295816, 5194763,
--725313, -3226594, -639950, -2239289, -3315178, -3778498, 1248762, -6730751, 198105, 46171,
-1430761, 4147865, 913754, 2803003, 4241280, -3783329, -20647518, -995896, -3097745, 13405130,
--345208, 169651, 2354716, -2649458, 6448357, 1057099, -8223252, -4777614, -9532143, 873489,
--1255741, -3767223, -3202972, -3979287, -2702071, 10227928, -5660767, -3223910, -3470871, -9089761,
--969052, -2800319, 2240899, 3383897, -1961190, -823023, 1838783, -3335579, -1295470, -1874753,
--3616363, 2552284, 6160594, -1614371, -1702418, 4519380, -7642895, 3757560, -6215892, -12214350,
--7780870, -12181601, -2293513, -7326678, -4903242, 309238, 3960497, 1394254, 2675228, -2587718,
-3366718, -5749351, -1633698, 3147137, -559956, 4717485, -2920041, 744103, -4536023, -4067871,
-2426120, -8011725, 1315871, 4058744, -7293392, -499827, -2345589, -4419522, -5014911, -5415417,
--1988570, -3425773, 28454, 12932147, 204548, -6997039, -6754910, -2196876, -4909685, -1760937,
--3679176, 1160178, 692564, -5451924, -3259880, -5993627, 11809013, 5209259, 1125281, -428960,
-6405407, -9263708, -131533, 66035, -6004901, -7723962, 7165079, 445066, 5100811, -7715372,
--3537979, -2464238, 2756832, 67109, 3387119, -5168993, 1618666, 2661269, -6063420, -5356361,
--5295158, 1685238, -1806571, -1154809, 4969277, -1000191, 453119, 604517, -1118302, -5187784,
--3619584, -89121, -8744017, -5020817, -4681515, 3033858, 1491427, 4117263, -1015223, 2224256,
--270046, -115427, 3824669, -2291365, 6790344, 1856500, 1921461, 27380, -2495913, 3804804,
-1968169, 6637872, -1844152, 2116345, 3204046, -563714, -53687, -5586142, 3385508, -3192235,
-14835354, 14030584, 10398653, -3890167, 3628174, 5129265, 2885681, 2776160, -5600638, -4910758,
--7244536, 5916855, -6818798, -1075352, -5044439, 7941932, -9415642, -7075422, -3702262, -1742146,
--5330055, -7815230, 1836099, 126165, 120259, -9415642, -5366562, 2120640, 1585380, 2329483,
--2817499, -3899830, -55835, 2486786, 3163244, -2837363, 2983929, -5115843, -1655710, -12142946,
-3981435, 1175747, -2432025, -2505577, -9162239, -4254165, 695248, -2370822, -12732431, 6404333,
-2303176, -248034, -3780645, -2809982, -5684389, 1375463, -2347737, 3342022, -1300838, -1960653,
--7558606, -1528472, -1298691, -4009352, 7044820, -5698348, -598074, 4482335, -2696703, -6055367,
--4275640, 5245229, 6473590, 3914326, -1875290, 267899, 18212272, 6053220, -2749316, -2219424,
-6349036, -12447352, -2397129, 9915469, 4949950, -7073275, -220117, -4834523, 1869921, 7591892,
-18843632, 6131066, 14665703, -5331128, -1151051, -14446123, 4808216, -4304094, 3980361, -6404870,
--382252, 470299, -2284386, 5002563, -2354179, 2309619, 6280853, -5003637, 2807835, 7925289,
--2253247, 2537789, -40265, 3076270, 4377109, 4369593, -24357834, 8698919, -2863670, -11579769,
--2046552, 6745246, 2065879, -9007620, 4678830, 6707665, -14385456, 915902, -4118337, 8178692,
-1837709, 6703370, -1796370, -5275294, -10160282, 338229, -6203544, 18686328, 3365107, -3423626,
-6159520, 476741, 5924371, -15268609, -2204392, 1951526, 4332012, 730144, -7371775, -1482301,
-1998770, 6279242, -21910776, -24011014, -8354249, -2060511, 235149, 4855998, -10370735, 3004867,
-11784853, -7081864, 6177774, 8093329, -5986111, -27917, -3019899, 9941776, 13953275, -6991133,
--8197482, 6908455, 479426, -7009924, 3012383, -101469, 1568200, 1807108, -3841848, -2867965,
--15336791, -1001801, -4536559, -575526, -658741, 10053445, 2841658, -18699750, 96637, 8660802,
--10312216, 2410551, 10645076, -2644626, 3606162, -43487, -3068217, -7289633, 13741748, 11465952,
--9157944, 4382478, -3548180, -773094, 4117800, -3426847, 3414499, -5874442, -863288, 11427297,
--3586298, 2100239, 5332202, -4456566, -9936944, -884226, 3084860, 1202054, -4905390, 27917,
-2366527, 3515968, 8382166, 4528506, 9259949, 3999152, 1637456, 3001109, -22655416, 26811870,
--788663, 17511656, 2005750, -9004399, -2193118, -4904316, -6111739, -152471, 1188632, 12877923,
--1199370, 9083319, -7669738, 303332, 2792803, 2676302, 1676111, 11301133, 11238319, 4604205,
-2397129, -564788, -1328756, 164819, -1032403, -16797080, -5271536, 8874476, 5948530, -1176284,
-1607928, -7528541, 4922033, -9404905, 2939368, 17002164, 2465848, 4322885, -12778065, 8009041,
-6969122, 2549600, -8361228, -3128884, -3546032, 1576790, -7461432, 9140764, 10773925, 6972880,
--277562, 16056198, 5982353, 23110146, 9255655, -5053566, 19051402, 1325534, -6271726, 14330695,
--1761474, 5364951, 8795556, -5147519, -4983773, 13369159, 13428215, 8850317, -10929081, 5072357,
--537408, -4098473, -9859097, 7228967, 9886478, 6553583, -11737072, 17482128, -3988951, -10198400,
-4522601, 8017094, -6411313, -2948495, -14486925, 7166153, -4733054, -1141924, -13169980, -5494874,
--3838090, -1724429, -5393405, 3999152, -1869921, -2810519, 4318590, 5305895, 9232032, 8680666,
--2431488, -2281165, -10285373, 5091147, 1313723, 8080444, 3173981, 2596845, -1426466, 3575024,
--5924371, -5440650, 4545149, 2266132, 4626754, -13300440, 5903433, 9605157, 1269700, -11668352,
--11404749, -9405978, -28004798, 4666482, -1971390, 14723148, -5504538, 12307766, 5292474, 1288490,
-16780438, 2793339, -158914, 11408507, 5707475, -14479408, -5708012, 2217277, -2988224, -8058970,
--3317325, 19633906, 10751377, -8705899, 855235, -4792110, -497142, 3009698, 15548318, 234076,
--2014877, 17043504, 8029978, -11319923, -2308008, -2469069, -868120, -59593, 32775432, 6046240,
-12416214, -4881231, 10919417, 21492016, -17047262, 27690192, 16572668, -6326487, 885300, 2501819,
--9021042, -15302432, 1737314, -8479339, -13837311, -5548024, 1884954, 973347, -1185948, -5524402,
--507880, -5330055, 127238, -6293201, 23085, 6055367, -10810970, 7311108, 10095858, -6342056,
--6400038, 6070400, 4236449, 520228, 29291676, 3747359, 19675246, -12555263, -878321, -15443629,
--11842835, 4298726, -11899744, -15524696, -10881300, -11397233, -2429878, -1903207, -13927505, -13914083,
-20542292, 4858145, 1532230, -963146, 10685879, 7717520, 12772696, 783832, 11977590, -4471061,
-2602213, -19925964, 17925582, 11579232, 712965, -9071508, -2393908, 14218489, -7774965, -6616397,
-16054588, -16109885, -12579422, -4182225, -10282152, -2873333, -18853296, 2457795, -12129525, 6784438,
--195421, 1325534, 8638253, 1366337, 5701032, 8169028, 7849590, 6058052, 11543261, -27917,
-7415261, 6278169, -10756746, 14681272, 2638184, 5904507, -10135049, 11060615, 4372277, 7252053,
-900869, 1486596, -3013457, -13444858, 1611687, 4870493, 6433861, 6745783, 445603, -16076599,
--10414759, 8388608, 4160750, 427349, -6851547, 5145908, -6636798, -16284905, 19493246, 10750840,
-7856032, -10189273, -5513128, -12827994, -34740380, -3269544, -6259915, 1925756, -9436043, -10785200,
--16387448, 2147, 2830384, 15824270, -16620450, 3013457, -1882806, 5374615, -15293305, -19331648,
--12448963, 6170795, -493384, -25748866, 16405164, 17445084, -7150047, 15059766, 5773510, -21473762,
--3049427, 30845382, -3304441, -18577344, -2192044, -694174, -16292422, 13251048, 3343632, -7393786,
-13773960, 9886478, 31421444, 19272592, 1247151, 3607773, 29635812, -6023692, 8029978, -10383083,
--16298327, -3610994, -10879689, 4090956, -210990, 7351911, -281857, -504659, -4318590, 24382530,
-1640678, -16293495, -13736379, -1543504, -3227131, 1107028, 7864085, 22585622, 13672492, 6249715,
--12269111, 18087182, 29846802, -4263292, 13671418, 14620069, 35800164, 8914205, 6928319, 13000866,
-15251429, 10751914, -12216498, -9296457, 8120710, -19236622, -13309567, -12887586, 14575508, 15937550,
-8696235, -343061, 10433549, 26377004, -13671418, 22183506, 17384418, 2270964, 17292076, -10133438,
--2823404, 6198175, 20744156, 36719824, 4234301, -3556233, 4209068, -1763621, -5631776, 1254667,
-4211216, -8761733, -11440719, 4148939, -5707475, -3268470, 9778030, -394600, 18770080, -9565429,
-18440442, 8809515, 2333241, -10404558, 3982509, 17811230, 5801964, -9140227, 4193499, -2259153,
-1200980, 10354092, -13797582, -7849053, 16976932, 146029, -3207804, 13845364, 137976, 4712653,
-4070019, -13782013, -23654532, -5548561, 9468255, 15353971, 4392141, -12514461, 16752520, -5631776,
-32968706, -16678969, 22582938, -13123809, 8852464, 17765596, -25972740, -28812788, 1090385, -8726300,
-8605504, 8121783, 2698313, -5060545, -15153181, 10202158, -853625, 18854370, 10666551, 17381196,
-6827388, 9514426, -2626909, 12883828, 7318625, -9920838, 4572530, -1271847, -28319940, 22484154,
-29471528, -8048769, -2510409, 9529996, 39416524, -194884, -25409564, -10981695, 3586835, 3289408,
--8931384, 6436546, -6814503, 11266773, -21747030, -287226, 11415486, -9900436, -10532870, 403190,
--21515638, -7605314, -7899519, -33546916, -28478318, -17131550, 10525891, 12545599, -3779034, -24297704,
-1237488, -607738, -2156074, 3157338, -12847858, 26036628, -9210020, 2051921, 29061360, -28105730,
-11454678, 3037616, -10706280, 9591736, -8631274, -23097260, -1005559, 17190070, -9844602, -15089294,
-6274411, 992137, 16275242, -1406065, -29061896, 643708, -17882096, 25496000, -11519102, 2505577,
-4882304, 1640678, -5748277, -19196894, 5368172, 16783658, 3249680, 17340930, -30133490, -17049946,
--7095286, -2033667, 209917, -23445152, 16226923, -5410048, -20845086, 31319976, 1197222, -52970904,
-21649856, -7108708, 4511863, 5606006, 7535520, 13210246, 5180805, -9509594, -1879585, 13247827,
-9367861, -10496363, -62277, -8342437, -3813931, -26121992, -2774012, 12557948, 16209207, 3461744,
--5578626, 17222282, -17172352, 19603842, -10676752, -6523519, 3063922, -6293738, 6003291, -15937550,
--20451560, -24007794, -6789270, 12022150, -3899294, -200253, 15362561, 3658239, 3459059, -856846,
-1462973, -5451924, 1209033, 15103252, 10661183, 15916612, 15067819, 15916612, 12395276, -10470593,
--5048734, 3342558, 218506, -19755238, 14092861, -4286914, -16525960, 21571474, 1222992, 2636036,
-935229, -9306120, -1045288, 8220568, 15458661, 10035191, 2247879, 5494337, -20904680, -4845797,
--5947456, 11025181, 6238440, -6113349, -8010651, 72411536, -71111240, -3572339, -77308336, -11978127,
--29384556, -3590593, 18898392, -9596568, -21366926, 33728916, -9082782, -5883032, 1173063, 10398116,
--1135482, 28044526, 18649822, 11138461, -16449725, 1123671, -11170673, -11458973, -7537131, 459562,
--3367254, -3044058, -9156333, -2012729, 15720654, 1995549, 10509785, 10348187, -539555, 13801341,
-20244866, 1223529, -3719979, -10214506, -12013024, 5180805, 5899138, -10052371, 17398376, -22020298,
--21997748, 2828773, -7255274, 12466143, -20205136, 9387725, -39434780, -20925080, -31307628, -2190433,
--14876693, -744103, -8548596, -11296301, -9218074, -22549, 4223027, -30379378, 5300527, -5600101,
-5587753, 1682554, -12250857, -23751706, 20419348, -13118978, 485331, 18792092, 2291365, -424128,
-14294725, -5675263, 60202020, 31048856, 15763604, -12590160, -5862631, -29003378, 8204998, 26203596,
--3369939, -4182761, 41622528, -5535139, -7586523, 21602612, 30774514, 6797323, 31322122, -5802501,
-5617281, 19463182, 21229486, 33363842, 26726508, 393526, -10314364, 11258720, 12570832, 12651900,
-14539538, 25422986, 12502113, 31857920, -10807748, 973884, 9590662, 9942312, 26198764, 16589848,
-27950574, -17908940, -5632850, 12676059, -20741470, 18911278, 17779554, 18443664, 7374996, -19614578,
--7650948, 42318848, 10479183, 29099478, 22585622, 26621818, -5353677, 34708168, 51199768, 19510426,
-3947612, 37936908, 24197308, -12218645, -9650792, -15809775, -15375983, 16969416, 16013786, 3287261,
--17054242, 2105608, -16027207, 1265942, -9424769, 10783052, -36165772, -1588601, -4840428, -19029390,
-8815957, -22909356, 38852276, 55040544, 32122060, -14947023, -30783104, -12004970, 27368606, -8967355,
--22879290, 40585292, -28777354, 23802708, 14008036, -33624764, -13419625, -4547834, -53633940, 927713,
-6380174, -27230092, 53238804, -19586662, 49520972, -38339024, 5840619, 795643, 36404144, 51323784,
--3880503, 16225850, 25562572, -31178242, 20257750, -41652056, -10289131, 73251208, -3543348, -23026394,
--3320010, -44542568, 2625836, -15786689, 48005388, 15274514, 22848152, -10044855, -11519639, -26462904,
--20739324, 2297271, 4022774, -3250217, 32436666, -11213623, 7049115, -36407900, -15826418, 17670032,
--47478716, -23521926, -13583908, -21320218, 46250892, -1819992, 49758268, 29524678, 16168941, 12641699,
--10846403, -32729262, 21230560, -43116640, -24174224, 32753420, 35794796, -58097484, 62792960, -1045825,
-5231270, -19436874, 50746112, 12372190, 32800666, 12821551, -20892332, 7834021, 18336290, -30206504,
-21858700, 1002875, 14576045, -40490804, -2965138, 10735808, 38075420, -15127949, -31057982, -687732,
-37799472, 20572356, -14285061, -31752694, -1538672, 27923194, 3578245, 2644089, 7512972, 20535850,
-49838264, -69575784, -11731703, 7604777, 38953204, 9586367, -21565030, -4435091, 14598594, 36687072,
--4001299, 2635499, -67946384, 20456392, 9992778, 19355806, -49619756, 44281648, 36516348, 15054397,
--23051626, -1195075, -25559888, 19426674, 30708480, 14563697, 13513041, -1548873, 22529250, -33949568,
-31465468, -8450885, -14289356, 40936408, 29545616, 3963718, -15771120, -30055644, 19159312, 28877212,
--75369696, -1035087, -50801948, 27045410, 6389838, 17796196, 21051246, 30077656, 11542725, 10765336,
--12181601, 16326781, 4099010, 35484484, -2518998, -8407398, 27936614, 22128208, -3136400, 3517578,
--10051834, 2143189, 9716290, -797253, -5514201, 17023102, -10821170, 3459059, 21767432, -2499671,
-13067438, -18953154, -3068754, 4811974, -7439957, -1276679, 3554622, 17069274, -2669859, -22876070,
-2101313, 52113524, 11442330, -24781424, 9162239, -25252260, -17823040, -11848204, -2825015, 34312492,
--2442226, -22835268, 52503292, -53099216, 10443213, 59602872, 6979322, 42807940, -29615410, -54086524,
-19327352, 5016522, 46345920, 5618891, -24733642, 24495272, -4866198, -1102733, -10034654, 2090039,
--15080167, 12267500, 3116536, 17034378, -18460844, -10870562, -5263483, 28085864, 11039677, -21225728,
--117632176, -255214480, -108173584, -158138544, -226404368, 104097120, 20326470, 55109800, 294330880, 224537136,
-125950456, 240619104, 176296064, 20933134, 50495392, 40572944, -130976104, -113184200, -61652108, -193517808,
--186158912, -77745352, -101275328, -137444320, -64509336, -56203944, -140421264, -118189448, -20431160, -71780712,
--115947472, -46265388, 21941378, -86136640, 11537893, 102900976, -19838990, -26097832, 142307296, 112828792,
--16371342, 169779520, 196864656, 75127568, 184477440, 264907136, 152902976, 133325448, 318408480, 254056448,
-187261648, 226001712, 300491488, 103623064, 34864396, 123229592, -110948672, -299609408, -220846688, -329764896,
--533160608, -474892928, -505987936, -583672128, -597064320, -511007168, -447137248, -443189088, -312575904, -131227360,
--87682296, 1000191, 168455056, 310556736, 328255776, 392185824, 330019392, 215854848, 0, 0,
-0, 0, 0, },
+6826851, 2576981, -311922, 5572183, 409096, 82141, -1086090, 2179159, 4372277, 619012,
+-2878702, 3926674, 2895882, -1643899, 409096, 923955, -2917357, -1707250, 1961190, 632971,
+3770445, -2250563, 2246805, -3097208, -137439, 827855, -3096135, 965831, -1439888, 2833068,
+-3769908, 5240397, -729071, -2787434, -5018133, 1829656, 4124779, -1475858, 904091, -2236604,
+1057099, 2969433, -147640, -1038845, -1052267, -1012002, 2515777, -2498060, -2246268, 671626,
+1196685, 1803886, 217970, -1911261, 5364951, 634581, 682363, 3292629, -1029718, 1573032,
+-31139, -943282, -509491, -445603, 1829656, 3636764, -610422, 921271, 622233, 4495220,
+-869731, -1659468, -938450, -1498407, -2046552, -388158, -4283156, -2802466, 1347546, -1003412,
+-1276142, -2016487, 633508, 4391067, -1258425, 151398, 542240, 7432978, -38655, 1538135,
+-2897492, -1939178, -644245, -1813550, -2010582, -1825898, -1247688, -1722819, -2388539, 2254858,
+3562675, -1735704, 622233, 315680, -3841312, 292058, 5369, -2605972, 5360656, -2499134,
+3088082, 1342177, -716186, -2816425, -2700998, 2925410, -1318018, -797790, -4069482, -828392,
+-292058, -1722282, 5652714, -962073, -251256, 2585570, -304406, -4355634, -2275259, -3793530,
+-2633889, 6638409, -1666984, 7364795, 90194, 46171, -1150514, 1178432, 432718, -3808026,
+-4317516, 3659849, 533113, 2648921, -118112, 3048353, 1785633, -3546032, 208843, 1910187,
+2459943, 588411, 2073932, 9867687, -512175, -925565, -2226404, -5027796, -6255083, -5706401,
+903554, 5531381, 2095944, 7305203, 2673080, -2975876, 1098438, -8185134, -6885907, 3543348,
+-2260764, 4895726, -192737, -3512747, -1619203, 9494025, 2313914, 4143570, 66035, 3223373,
+-1137630, -917512, 2080375, -1057636, -3802657, -81068, 1727114, -257161, 2147, 6107444,
+3891777, -6127845, 389768, -3814468, 6923488, 4151623, 523449, -2174327, -2195802, 3267396,
+1956895, 5172215, -4387309, 8093329, 9946071, -2499134, 9694278, 153008, 5190468, 3236795,
+-1519345, 1782948, 7804493, -758062, -4898947, 4491462, 1620813, 30602, -395674, -843961,
+497142, 4438849, -2699924, 1562294, 1279900, 2204929, -3658775, 3866008, 788663, -1063004,
+-8578123, -6753299, 1810866, -3918084, 2390149, -4835597, -6806987, -6274947, 590021, -4736812,
+3884261, 2833605, -6083285, -1396938, 2098092, 360777, 2637647, -1904818, 2733210, 3527779,
+-5449777, 1473174, 1410360, -4323422, 2142652, 256087, -5194226, 3467112, 3197603, -1901060,
+3516505, 393526, 2807298, 2677375, 858993, -1988033, -787053, -6010807, -2105071, -3055869,
+2747169, 3118146, 934692, -9532680, 1440425, 3833795, -2487860, 6484864, -5775121, -7292318,
+168577, -2247342, 1907502, -5238250, 8942122, -609349, -3527242, 795643, -295816, 5194763,
+-725313, -3226594, -639950, -2239289, -3315178, -3778498, 1248762, -6730751, 198105, 46171,
+1430761, 4147865, 913754, 2803003, 4241280, -3783329, -20647518, -995896, -3097745, 13405130,
+-345208, 169651, 2354716, -2649458, 6448357, 1057099, -8223252, -4777614, -9532143, 873489,
+-1255741, -3767223, -3202972, -3979287, -2702071, 10227928, -5660767, -3223910, -3470871, -9089761,
+-969052, -2800319, 2240899, 3383897, -1961190, -823023, 1838783, -3335579, -1295470, -1874753,
+-3616363, 2552284, 6160594, -1614371, -1702418, 4519380, -7642895, 3757560, -6215892, -12214350,
+-7780870, -12181601, -2293513, -7326678, -4903242, 309238, 3960497, 1394254, 2675228, -2587718,
+3366718, -5749351, -1633698, 3147137, -559956, 4717485, -2920041, 744103, -4536023, -4067871,
+2426120, -8011725, 1315871, 4058744, -7293392, -499827, -2345589, -4419522, -5014911, -5415417,
+-1988570, -3425773, 28454, 12932147, 204548, -6997039, -6754910, -2196876, -4909685, -1760937,
+-3679176, 1160178, 692564, -5451924, -3259880, -5993627, 11809013, 5209259, 1125281, -428960,
+6405407, -9263708, -131533, 66035, -6004901, -7723962, 7165079, 445066, 5100811, -7715372,
+-3537979, -2464238, 2756832, 67109, 3387119, -5168993, 1618666, 2661269, -6063420, -5356361,
+-5295158, 1685238, -1806571, -1154809, 4969277, -1000191, 453119, 604517, -1118302, -5187784,
+-3619584, -89121, -8744017, -5020817, -4681515, 3033858, 1491427, 4117263, -1015223, 2224256,
+-270046, -115427, 3824669, -2291365, 6790344, 1856500, 1921461, 27380, -2495913, 3804804,
+1968169, 6637872, -1844152, 2116345, 3204046, -563714, -53687, -5586142, 3385508, -3192235,
+14835354, 14030584, 10398653, -3890167, 3628174, 5129265, 2885681, 2776160, -5600638, -4910758,
+-7244536, 5916855, -6818798, -1075352, -5044439, 7941932, -9415642, -7075422, -3702262, -1742146,
+-5330055, -7815230, 1836099, 126165, 120259, -9415642, -5366562, 2120640, 1585380, 2329483,
+-2817499, -3899830, -55835, 2486786, 3163244, -2837363, 2983929, -5115843, -1655710, -12142946,
+3981435, 1175747, -2432025, -2505577, -9162239, -4254165, 695248, -2370822, -12732431, 6404333,
+2303176, -248034, -3780645, -2809982, -5684389, 1375463, -2347737, 3342022, -1300838, -1960653,
+-7558606, -1528472, -1298691, -4009352, 7044820, -5698348, -598074, 4482335, -2696703, -6055367,
+-4275640, 5245229, 6473590, 3914326, -1875290, 267899, 18212272, 6053220, -2749316, -2219424,
+6349036, -12447352, -2397129, 9915469, 4949950, -7073275, -220117, -4834523, 1869921, 7591892,
+18843632, 6131066, 14665703, -5331128, -1151051, -14446123, 4808216, -4304094, 3980361, -6404870,
+-382252, 470299, -2284386, 5002563, -2354179, 2309619, 6280853, -5003637, 2807835, 7925289,
+-2253247, 2537789, -40265, 3076270, 4377109, 4369593, -24357834, 8698919, -2863670, -11579769,
+-2046552, 6745246, 2065879, -9007620, 4678830, 6707665, -14385456, 915902, -4118337, 8178692,
+1837709, 6703370, -1796370, -5275294, -10160282, 338229, -6203544, 18686328, 3365107, -3423626,
+6159520, 476741, 5924371, -15268609, -2204392, 1951526, 4332012, 730144, -7371775, -1482301,
+1998770, 6279242, -21910776, -24011014, -8354249, -2060511, 235149, 4855998, -10370735, 3004867,
+11784853, -7081864, 6177774, 8093329, -5986111, -27917, -3019899, 9941776, 13953275, -6991133,
+-8197482, 6908455, 479426, -7009924, 3012383, -101469, 1568200, 1807108, -3841848, -2867965,
+-15336791, -1001801, -4536559, -575526, -658741, 10053445, 2841658, -18699750, 96637, 8660802,
+-10312216, 2410551, 10645076, -2644626, 3606162, -43487, -3068217, -7289633, 13741748, 11465952,
+-9157944, 4382478, -3548180, -773094, 4117800, -3426847, 3414499, -5874442, -863288, 11427297,
+-3586298, 2100239, 5332202, -4456566, -9936944, -884226, 3084860, 1202054, -4905390, 27917,
+2366527, 3515968, 8382166, 4528506, 9259949, 3999152, 1637456, 3001109, -22655416, 26811870,
+-788663, 17511656, 2005750, -9004399, -2193118, -4904316, -6111739, -152471, 1188632, 12877923,
+-1199370, 9083319, -7669738, 303332, 2792803, 2676302, 1676111, 11301133, 11238319, 4604205,
+2397129, -564788, -1328756, 164819, -1032403, -16797080, -5271536, 8874476, 5948530, -1176284,
+1607928, -7528541, 4922033, -9404905, 2939368, 17002164, 2465848, 4322885, -12778065, 8009041,
+6969122, 2549600, -8361228, -3128884, -3546032, 1576790, -7461432, 9140764, 10773925, 6972880,
+-277562, 16056198, 5982353, 23110146, 9255655, -5053566, 19051402, 1325534, -6271726, 14330695,
+-1761474, 5364951, 8795556, -5147519, -4983773, 13369159, 13428215, 8850317, -10929081, 5072357,
+-537408, -4098473, -9859097, 7228967, 9886478, 6553583, -11737072, 17482128, -3988951, -10198400,
+4522601, 8017094, -6411313, -2948495, -14486925, 7166153, -4733054, -1141924, -13169980, -5494874,
+-3838090, -1724429, -5393405, 3999152, -1869921, -2810519, 4318590, 5305895, 9232032, 8680666,
+-2431488, -2281165, -10285373, 5091147, 1313723, 8080444, 3173981, 2596845, -1426466, 3575024,
+-5924371, -5440650, 4545149, 2266132, 4626754, -13300440, 5903433, 9605157, 1269700, -11668352,
+-11404749, -9405978, -28004798, 4666482, -1971390, 14723148, -5504538, 12307766, 5292474, 1288490,
+16780438, 2793339, -158914, 11408507, 5707475, -14479408, -5708012, 2217277, -2988224, -8058970,
+-3317325, 19633906, 10751377, -8705899, 855235, -4792110, -497142, 3009698, 15548318, 234076,
+-2014877, 17043504, 8029978, -11319923, -2308008, -2469069, -868120, -59593, 32775432, 6046240,
+12416214, -4881231, 10919417, 21492016, -17047262, 27690192, 16572668, -6326487, 885300, 2501819,
+-9021042, -15302432, 1737314, -8479339, -13837311, -5548024, 1884954, 973347, -1185948, -5524402,
+-507880, -5330055, 127238, -6293201, 23085, 6055367, -10810970, 7311108, 10095858, -6342056,
+-6400038, 6070400, 4236449, 520228, 29291676, 3747359, 19675246, -12555263, -878321, -15443629,
+-11842835, 4298726, -11899744, -15524696, -10881300, -11397233, -2429878, -1903207, -13927505, -13914083,
+20542292, 4858145, 1532230, -963146, 10685879, 7717520, 12772696, 783832, 11977590, -4471061,
+2602213, -19925964, 17925582, 11579232, 712965, -9071508, -2393908, 14218489, -7774965, -6616397,
+16054588, -16109885, -12579422, -4182225, -10282152, -2873333, -18853296, 2457795, -12129525, 6784438,
+-195421, 1325534, 8638253, 1366337, 5701032, 8169028, 7849590, 6058052, 11543261, -27917,
+7415261, 6278169, -10756746, 14681272, 2638184, 5904507, -10135049, 11060615, 4372277, 7252053,
+900869, 1486596, -3013457, -13444858, 1611687, 4870493, 6433861, 6745783, 445603, -16076599,
+-10414759, 8388608, 4160750, 427349, -6851547, 5145908, -6636798, -16284905, 19493246, 10750840,
+7856032, -10189273, -5513128, -12827994, -34740380, -3269544, -6259915, 1925756, -9436043, -10785200,
+-16387448, 2147, 2830384, 15824270, -16620450, 3013457, -1882806, 5374615, -15293305, -19331648,
+-12448963, 6170795, -493384, -25748866, 16405164, 17445084, -7150047, 15059766, 5773510, -21473762,
+-3049427, 30845382, -3304441, -18577344, -2192044, -694174, -16292422, 13251048, 3343632, -7393786,
+13773960, 9886478, 31421444, 19272592, 1247151, 3607773, 29635812, -6023692, 8029978, -10383083,
+-16298327, -3610994, -10879689, 4090956, -210990, 7351911, -281857, -504659, -4318590, 24382530,
+1640678, -16293495, -13736379, -1543504, -3227131, 1107028, 7864085, 22585622, 13672492, 6249715,
+-12269111, 18087182, 29846802, -4263292, 13671418, 14620069, 35800164, 8914205, 6928319, 13000866,
+15251429, 10751914, -12216498, -9296457, 8120710, -19236622, -13309567, -12887586, 14575508, 15937550,
+8696235, -343061, 10433549, 26377004, -13671418, 22183506, 17384418, 2270964, 17292076, -10133438,
+-2823404, 6198175, 20744156, 36719824, 4234301, -3556233, 4209068, -1763621, -5631776, 1254667,
+4211216, -8761733, -11440719, 4148939, -5707475, -3268470, 9778030, -394600, 18770080, -9565429,
+18440442, 8809515, 2333241, -10404558, 3982509, 17811230, 5801964, -9140227, 4193499, -2259153,
+1200980, 10354092, -13797582, -7849053, 16976932, 146029, -3207804, 13845364, 137976, 4712653,
+4070019, -13782013, -23654532, -5548561, 9468255, 15353971, 4392141, -12514461, 16752520, -5631776,
+32968706, -16678969, 22582938, -13123809, 8852464, 17765596, -25972740, -28812788, 1090385, -8726300,
+8605504, 8121783, 2698313, -5060545, -15153181, 10202158, -853625, 18854370, 10666551, 17381196,
+6827388, 9514426, -2626909, 12883828, 7318625, -9920838, 4572530, -1271847, -28319940, 22484154,
+29471528, -8048769, -2510409, 9529996, 39416524, -194884, -25409564, -10981695, 3586835, 3289408,
+-8931384, 6436546, -6814503, 11266773, -21747030, -287226, 11415486, -9900436, -10532870, 403190,
+-21515638, -7605314, -7899519, -33546916, -28478318, -17131550, 10525891, 12545599, -3779034, -24297704,
+1237488, -607738, -2156074, 3157338, -12847858, 26036628, -9210020, 2051921, 29061360, -28105730,
+11454678, 3037616, -10706280, 9591736, -8631274, -23097260, -1005559, 17190070, -9844602, -15089294,
+6274411, 992137, 16275242, -1406065, -29061896, 643708, -17882096, 25496000, -11519102, 2505577,
+4882304, 1640678, -5748277, -19196894, 5368172, 16783658, 3249680, 17340930, -30133490, -17049946,
+-7095286, -2033667, 209917, -23445152, 16226923, -5410048, -20845086, 31319976, 1197222, -52970904,
+21649856, -7108708, 4511863, 5606006, 7535520, 13210246, 5180805, -9509594, -1879585, 13247827,
+9367861, -10496363, -62277, -8342437, -3813931, -26121992, -2774012, 12557948, 16209207, 3461744,
+-5578626, 17222282, -17172352, 19603842, -10676752, -6523519, 3063922, -6293738, 6003291, -15937550,
+-20451560, -24007794, -6789270, 12022150, -3899294, -200253, 15362561, 3658239, 3459059, -856846,
+1462973, -5451924, 1209033, 15103252, 10661183, 15916612, 15067819, 15916612, 12395276, -10470593,
+-5048734, 3342558, 218506, -19755238, 14092861, -4286914, -16525960, 21571474, 1222992, 2636036,
+935229, -9306120, -1045288, 8220568, 15458661, 10035191, 2247879, 5494337, -20904680, -4845797,
+-5947456, 11025181, 6238440, -6113349, -8010651, 72411536, -71111240, -3572339, -77308336, -11978127,
+-29384556, -3590593, 18898392, -9596568, -21366926, 33728916, -9082782, -5883032, 1173063, 10398116,
+-1135482, 28044526, 18649822, 11138461, -16449725, 1123671, -11170673, -11458973, -7537131, 459562,
+-3367254, -3044058, -9156333, -2012729, 15720654, 1995549, 10509785, 10348187, -539555, 13801341,
+20244866, 1223529, -3719979, -10214506, -12013024, 5180805, 5899138, -10052371, 17398376, -22020298,
+-21997748, 2828773, -7255274, 12466143, -20205136, 9387725, -39434780, -20925080, -31307628, -2190433,
+-14876693, -744103, -8548596, -11296301, -9218074, -22549, 4223027, -30379378, 5300527, -5600101,
+5587753, 1682554, -12250857, -23751706, 20419348, -13118978, 485331, 18792092, 2291365, -424128,
+14294725, -5675263, 60202020, 31048856, 15763604, -12590160, -5862631, -29003378, 8204998, 26203596,
+-3369939, -4182761, 41622528, -5535139, -7586523, 21602612, 30774514, 6797323, 31322122, -5802501,
+5617281, 19463182, 21229486, 33363842, 26726508, 393526, -10314364, 11258720, 12570832, 12651900,
+14539538, 25422986, 12502113, 31857920, -10807748, 973884, 9590662, 9942312, 26198764, 16589848,
+27950574, -17908940, -5632850, 12676059, -20741470, 18911278, 17779554, 18443664, 7374996, -19614578,
+-7650948, 42318848, 10479183, 29099478, 22585622, 26621818, -5353677, 34708168, 51199768, 19510426,
+3947612, 37936908, 24197308, -12218645, -9650792, -15809775, -15375983, 16969416, 16013786, 3287261,
+-17054242, 2105608, -16027207, 1265942, -9424769, 10783052, -36165772, -1588601, -4840428, -19029390,
+8815957, -22909356, 38852276, 55040544, 32122060, -14947023, -30783104, -12004970, 27368606, -8967355,
+-22879290, 40585292, -28777354, 23802708, 14008036, -33624764, -13419625, -4547834, -53633940, 927713,
+6380174, -27230092, 53238804, -19586662, 49520972, -38339024, 5840619, 795643, 36404144, 51323784,
+-3880503, 16225850, 25562572, -31178242, 20257750, -41652056, -10289131, 73251208, -3543348, -23026394,
+-3320010, -44542568, 2625836, -15786689, 48005388, 15274514, 22848152, -10044855, -11519639, -26462904,
+-20739324, 2297271, 4022774, -3250217, 32436666, -11213623, 7049115, -36407900, -15826418, 17670032,
+-47478716, -23521926, -13583908, -21320218, 46250892, -1819992, 49758268, 29524678, 16168941, 12641699,
+-10846403, -32729262, 21230560, -43116640, -24174224, 32753420, 35794796, -58097484, 62792960, -1045825,
+5231270, -19436874, 50746112, 12372190, 32800666, 12821551, -20892332, 7834021, 18336290, -30206504,
+21858700, 1002875, 14576045, -40490804, -2965138, 10735808, 38075420, -15127949, -31057982, -687732,
+37799472, 20572356, -14285061, -31752694, -1538672, 27923194, 3578245, 2644089, 7512972, 20535850,
+49838264, -69575784, -11731703, 7604777, 38953204, 9586367, -21565030, -4435091, 14598594, 36687072,
+-4001299, 2635499, -67946384, 20456392, 9992778, 19355806, -49619756, 44281648, 36516348, 15054397,
+-23051626, -1195075, -25559888, 19426674, 30708480, 14563697, 13513041, -1548873, 22529250, -33949568,
+31465468, -8450885, -14289356, 40936408, 29545616, 3963718, -15771120, -30055644, 19159312, 28877212,
+-75369696, -1035087, -50801948, 27045410, 6389838, 17796196, 21051246, 30077656, 11542725, 10765336,
+-12181601, 16326781, 4099010, 35484484, -2518998, -8407398, 27936614, 22128208, -3136400, 3517578,
+-10051834, 2143189, 9716290, -797253, -5514201, 17023102, -10821170, 3459059, 21767432, -2499671,
+13067438, -18953154, -3068754, 4811974, -7439957, -1276679, 3554622, 17069274, -2669859, -22876070,
+2101313, 52113524, 11442330, -24781424, 9162239, -25252260, -17823040, -11848204, -2825015, 34312492,
+-2442226, -22835268, 52503292, -53099216, 10443213, 59602872, 6979322, 42807940, -29615410, -54086524,
+19327352, 5016522, 46345920, 5618891, -24733642, 24495272, -4866198, -1102733, -10034654, 2090039,
+-15080167, 12267500, 3116536, 17034378, -18460844, -10870562, -5263483, 28085864, 11039677, -21225728,
+-117632176, -255214480, -108173584, -158138544, -226404368, 104097120, 20326470, 55109800, 294330880, 224537136,
+125950456, 240619104, 176296064, 20933134, 50495392, 40572944, -130976104, -113184200, -61652108, -193517808,
+-186158912, -77745352, -101275328, -137444320, -64509336, -56203944, -140421264, -118189448, -20431160, -71780712,
+-115947472, -46265388, 21941378, -86136640, 11537893, 102900976, -19838990, -26097832, 142307296, 112828792,
+-16371342, 169779520, 196864656, 75127568, 184477440, 264907136, 152902976, 133325448, 318408480, 254056448,
+187261648, 226001712, 300491488, 103623064, 34864396, 123229592, -110948672, -299609408, -220846688, -329764896,
+-533160608, -474892928, -505987936, -583672128, -597064320, -511007168, -447137248, -443189088, -312575904, -131227360,
+-87682296, 1000191, 168455056, 310556736, 328255776, 392185824, 330019392, 215854848, 0, 0,
+0, 0, 0, },
},
{
{
-132070,
--67109, 317828, -6643241, 1188632, -184147, 210990, -4071092, 1222455, -7295002, -3908957,
-1842004, -1560684, 2344515, 3863860, -2347737, 2735894, -3688303, -402116, 3347927, -998580,
-2068564, -5641440, 687732, -12885, 1688459, -1324997, 1964948, -2812130, -1526861, 1977296,
--4854387, 1438277, 1396401, -1577864, -2652679, 7001334, -1620276, 1882269, -2807298, -977105,
-943819, -5814312, -3759707, -3112241, -2216203, -2803003, -2863670, -52613, 143881, -2734284,
-956704, 194884, 2765959, -2286533, -1091459, -261993, 1220308, -1404454, -3934190, 4258997,
-3278671, 1841467, -1231045, 1731409, 383326, 2673617, -3260954, -6189048, -5268315, 694711,
--3234110, 2296197, 5021354, 1111323, 3317325, -8733816, 4890894, -6681896, 613643, -2925947,
--1042066, 2370285, -4221416, -7497939, -2062121, 462783, -4395899, -2580202, 3366718, -2263448,
-1452236, -9335648, -986232, 6070400, 3110093, -10420128, -3743601, -2835215, -2937758, 3336116,
--1709934, -5485210, -3576097, -3955128, -4111894, 6649683, 1898912, 4242891, -3048890, 5615133,
-4983773, 3600793, -2289755, -4969277, -4051765, 302258, 735513, 7698729, 2525978, 1392106,
--3913789, 761283, 91805, 811749, 2840584, 1755568, -5546414, -4568772, -2583423, 2786897,
-400506, -1053341, -5927055, -1779190, 1945083, 2519535, -2565169, -900333, -164283, 2681670,
--886911, -3023657, -311922, 401579, -4194036, 8180302, 156229, -5648419, -415538, -1014149,
--5553930, -5021891, 5897527, 5401995, -4195646, 3282429, 431644, 1726040, -14009110, 5534602,
--1978906, -9579388, -12451647, 401579, 9225053, 607201, 6032819, 272194, -11233487, -3877819,
-1459215, 4021700, -1850057, -935766, -4630512, 667331, -704912, 8067023, 4257923, 1730335,
-1619740, 2200097, 2975339, 7340099, 4632659, -6473053, -353261, 1502702, 1770600, -7713225,
-2716567, -2308008, -4655208, -1403917, 18790, 5236639, 1588064, -2986613, 5578089, 8267812,
--1512902, -3216394, 2270427, -667331, 4816806, 4553739, 3909494, -5659157, -3944928, 3876745,
--1382980, -1527935, -3952444, 308164, -6008659, 3591130, 3744138, 4246649, 1510755, 4918275,
--5229660, -3879429, 7710540, -106300, 3178276, 7823820, 7046968, 498753, 2638184, -6185290,
--5288716, 2813204, -1577864, -2339684, -2968359, -2752000, 2022930, -7121593, -4179540, -8763344,
--10558640, -2034741, 8474507, 5468030, -3671123, -1078037, -1384590, -2114198, -7671349, 5293547,
--2071785, -2015413, 274341, 3434363, -1890859, 227633, -469762, 5021891, -4934381, 5041755,
-2569464, 6064494, -2324651, 4679904, 1870995, -2999498, 4031901, -2961917, 2206540, 4496294,
--3700651, 4730370, -3131568, -2345589, -1013075, -1450625, 2101850, -1422171, -3952981, 1436667,
--3490735, 674847, 74625, 481573, 6828461, 1398012, -2057826, 47245, -3384434, -4107063,
-1665911, -968515, 6372121, 7047505, 2287070, -1904818, -1706176, -2147, -3476239, -3151969,
-2698313, 5574868, 13794361, -5727339, 5705864, -6919729, -5794448, 97711, -1541893, -1421097,
-2005750, -2877628, 6030134, 5848135, 5061619, -1429150, -538482, -2525978, -6216965, 1044751,
--3684008, -650151, 818728, -2068564, 3737159, 1414655, -296353, -10400800, -4218732, -6538014,
-397821, -4262218, -6465537, -2857764, -3494493, -4003983, 6768332, -5224291, 4831302, 447213,
--1677722, 2647311, 2440615, -4678830, -1079111, 142271, 5319854, -439697, -6721624, -8786966,
--8939974, 2439542, -3087545, 250719, -439697, 1380295, 3417183, 5162551, -3199214, -1815697,
-2039573, 1814624, 1041530, 6469295, -3164317, 4025995, -6899328, 14497125, 2290291, -1468879,
-3389266, 1450088, 3434363, -3947612, 104690, 1142998, 599148, -882616, -5621039, -6550362,
-1132798, 1404991, 601295, -898185, -3862249, 2552821, 2065879, -5897527, 7269232, -8712878,
-11099806, -909996, 3801046, 1779190, -80531, -1015223, 2393908, 10428717, 11651173, -2043331,
-2207613, -1225139, -1503775, 1688459, 2572149, 8056285, -878321, 2552284, -3875671, 4487704,
-1076426, 6382322, 3125663, 5986648, -8301098, 3699578, 3164854, -2494302, 7516, 6479495,
-116501, 642635, 2007897, 3994320, -1232119, -408559, 12276090, 5944772, 1138703, 1240709,
--2505577, 5666136, -7343857, -10698764, -13067438, -700617, 6890202, -117575, 3423089, 9387188,
-3651259, -1582696, -3320547, 5007395, -1034550, 11987791, 5279589, 1764695, 1541893, -6584722,
-1220308, 4810364, -2719788, -7599945, 1056562, 1917703, -15349139, 2314451, -609885, 11551315,
--7598871, 5418638, -16301012, 7270306, -1010391, -7978439, -8876624, -5979668, 5619965, 4583267,
-13393319, 2352568, 4842039, 12929999, -1562831, -8259222, 1908576, -6201933, 2248416, 10691247,
-2426120, -2108292, -626528, -1207423, 3505767, 4593468, -260919, 3320547, 5719286, -2474975,
-2197413, -5293547, 97174, -6801081, -619012, 1818919, -3019899, 6389301, 4390531, 5581310,
-10071698, 1445793, 12072616, 9654550, 4845260, -5092758, 13775034, 6576132, 2925410, 12480638,
--642635, 1222455, 1602023, 4830228, -1748589, -2335389, -7227893, -6575058, -5532992, 1203665,
--4174708, 11329587, -5298379, 5467494, 7206955, -2175938, 1312113, -1394254, -549219, -8244727,
--9960029, 7266548, 146566, 13385266, 551366, 188979, -1183800, -2589329, 2458332, 568546,
--6743099, -8723079, -11752641, -6199786, -12290049, -7876433, -4116726, -9170829, -5682242, -4021700,
--4638565, -12402792, 8630200, 5297842, 463320, 4450123, 2219424, -3469260, 15552077, 912681,
--5120138, -2825015, -10213432, -4518843, 11675869, 520765, -9363029, -9639517, 1663763, -9754408,
-3400004, 3378529, -7266011, 273267, 2696166, 517007, 11623792, 3362423, -4764730, 1134945,
--5759551, 5697274, 1251446, 2542084, -13304735, 9543954, -4223027, 4022237, 872952, 1932198,
-2861522, 476205, -3363496, -156766, -4673462, 221191, -10089415, 212064, -10865730, 15803869,
--1675574, 10288057, -6152541, -2779918, -304943, -6651831, -2654827, 7176891, 1811939, 1619203,
--6932077, -122407, 4966056, -13259101, -66572, -5802501, -4604205, 9187472, -15214922, -14471355,
-3703336, 18958522, 467615, 1653026, 1457068, -3090229, 10460930, 9969693, 5876052, 2676838,
--2740189, -15754477, 9232569, -157840, -12411919, -4268124, 2928631, -898722, 155693, 984084,
--2936684, -12562779, -621160, 172872, -2161979, -5470178, 3765076, 10255845, -13616657, 8133058,
--5035313, -3008625, 930397, 6314676, 22407918, -14898705, -3497714, 891206, -1284195, -3200288,
-891206, -6131066, 2087891, -5644124, 15496779, 4558034, 3058017, 3454764, -3038153, -1730872,
-8322573, -2207076, 3751654, -7778186, 12002823, -638340, -8066486, 15129559, -10202158, 6047851,
-2461553, 1924145, 12298639, -7011534, 5471252, -3636764, 248034, 16313896, 1293322, 4261682,
-4859756, -2720325, -9353902, -7352984, 1161252, 16304770, 9281424, 2004676, -14535243, 2095944,
--7968238, 39192, 16369731, 15677168, 7988103, 10590316, -9497783, -19832548, -10298258, -14301704,
-8003672, -164819, -2321430, -80531, -10706280, -3237869, 3453691, -2062658, -3986804, -4029753,
-11689827, -784368, 3287261, -3325915, 7733089, 1563368, -4204773, -9238475, -6878927, 20874614,
--702764, -4784057, 6900939, -12013560, 3984656, -6904160, -20635170, -4752382, -2439005, 6252936,
-2727841, 5478768, 2098629, 8184060, 677531, 484258, 4982162, -20517596, -2776160, -5595269,
--957241, 1859721, 12286291, 12814572, 5302674, -3547643, -8210367, -11913702, -3108483, -7103339,
-2445447, -3620658, -2542084, -7740068, -23117124, -14952392, -3076270, -5145371, 12565464, 8753680,
--1464047, 21232170, -20467130, -4436165, -7388955, 22636088, 11185705, -6842420, 8732205, 3555159,
--8068096, 15759309, -16318728, 8800388, -7190312, 1752884, 2447595, -5211943, 15413564, -9972914,
-9720585, -3908957, -21112448, -3192771, 15876347, -8789651, -14169634, 615791, -1140314, -21826486,
--3422015, 9330280, 4544613, 12264279, 9509058, -2109366, 22206592, -4718022, -5736466, -10121627,
--8908299, -9078487, 6797323, 8380018, -5914707, -7377143, 3583613, -6350646, 10045929, -2087891,
-6010807, -3264712, -4342749, -3897146, 1183264, -12222403, 4819490, 9432285, -584116, 4268124,
-7151121, 6769942, 13521094, -8017094, 5916855, 9319005, 1416266, -19118510, 18173618, -9428527,
--25674240, 1376537, 20451024, 25772488, 5835250, -7765838, -5523865, 3796751, -3115999, -2585034,
-12033425, 12220793, -4087198, 11848741, -12090333, -316754, 10924249, -3373160, 12965969, 6842420,
--322123, -14701673, 7454453, -2378875, -2497524, 2223719, 134218, -290447, 23390392, -9392557,
-12615930, 20357608, 14485314, 8391292, 1651415, -10956462, 13917842, -5428839, 13354127, -5114233,
-4233227, -11484743, -1010391, -10718628, -6592775, 3613141, -9950365, -1405528, -2383707, 1378148,
-11972221, -10183904, -8665097, -1792075, -4163434, -351650, -8429410, -11123428, -14710800, 4037269,
-15047418, 1611687, -6006512, 4092567, 5141613, 13243532, -8748312, -3211025, -781684, 3425773,
-10911901, 4522064, 5937256, -2174864, 2213519, 13330505, -45433776, -21731460, 14798310, -37137508,
--25844428, -1897839, -15331960, -10562398, 10965588, 12632573, 3646964, -2600603, 4358318, 36603320,
--4826470, 5666136, 13861470, 15937550, -17125108, -8937290, -8290361, 13382044, 14502494, 7242389,
-2381023, 13688598, -4445828, -7180649, 9394704, 18602040, 962073, 5866389, 18750754, 13901735,
-11115375, -8808441, 3220152, 5575942, -451508, -542240, 11859478, -4261682, -627602, -1485522,
-7760469, 54224, -13888314, -9258339, 2233383, -18525268, 13351980, -4353486, 30061012, 892816,
-16266115, 2970507, -1217623, -10232760, -959925, 3489661, -13396540, -7122667, -15556908, -2441689,
-7269232, 9903121, -4995584, -25255482, 8552354, -4726612, 8154533, -9784472, -10512469, 6522445,
--15413027, -13569412, 25604984, 18931142, -7735236, -20578798, 9709310, -10455561, 5259725, 330712,
--9920301, 20114942, -25444460, -460098, -30840550, 1388348, 26094074, 36219996, 17500918, -5483600,
-17128330, -613643, -1598265, 2413235, -2092186, 9404905, -368830, -15998753, 1706176, -22479858,
-8900783, -6481106, -4393215, 16222628, 476741, -17090748, -19086298, 5342403, 3593277, -9171366,
--7388418, 15673409, -20667382, 672699, -3406983, 8428336, -4802847, -3838090, -16224239, -6464463,
--6529961, -2314451, 13593035, -13813689, 6533182, -810138, -1258425, 2976949, 6758131, -23889144,
--1154273, 4549444, -572841, 10481868, -6080600, -9714142, -3051574, -26524644, -10107132, -10624138,
-3123515, 13666049, 20933134, -6553047, 17160004, -21048024, 41865192, 5370320, -460098, 24080272,
--7657927, 22936736, 1318018, -16354699, -344671, -2465848, 10655814, 7017977, -9958955, 11541651,
-241592, -25756918, -28020366, -2681133, -8413304, 7004555, -1163399, -9905268, -25241522, -22058416,
-12080669, -18771154, -4158602, 1184337, 5998459, 1397475, 18092012, 1503239, -9047885, 12068321,
--1532230, 1751273, 11232950, -14716705, -879395, 3162170, -14906758, 9065065, 12561706, 5396627,
-11196980, 5747203, 17291538, 4634270, 12629888, -17632988, -5348308, -2881386, -23432268, -220117,
--2388539, 9759776, -1402844, 11181947, -1694365, -13847511, -9109626, -899259, -21582748, 9330816,
-852014, -4520990, 13026636, 7731478, 10892574, 10562398, 3688303, -1864553, 9599789, -30275224,
-9337259, 2793339, 13604309, -6525129, -20588462, 11162083, -3233574, 18130130, -29671782, 15650861,
-14513231, 53097608, 40128416, 5420249, 11637214, 3349001, 30836254, 823023, 15014132, -14035953,
-36524940, -14502494, 33125472, -1532767, 21164526, -2513630, 14940044, -14907831, 3588445, 7390565,
--8130373, -2738579, -4364224, -3513283, 9886478, 140660, -8517994, -11849815, -17718350, -22659174,
--10836202, -3929895, 136365, 6943352, -18992882, 7882876, -10457708, -16306380, -3364033, -11985643,
-5365488, -3100967, -24729348, -6135361, -12589086, -15175730, -15668041, 13881871, 18932216, -40033928,
-8953396, 3126736, 11086384, 3483755, -5072357, 23498840, 13421236, 11986180, -33305860, -15517717,
--558346, 7428683, 27343372, 143881, -3903589, 279173, 23054310, 19643032, -20134806, 20778514,
-1238561, 2878165, -4403415, 9927817, -29248190, -16459925, 12683038, -7663833, 10803990, 17869212,
--24232206, 5043902, -14666240, 35345432, -23962696, 19148038, 17469780, -9271224, -36713916, -22137872,
--4230006, -11150809, -2978023, -17847200, -27291832, -35618164, -21283710, -24357296, 7720204, -21115132,
-6017786, 361851, -4197257, -3916473, -17813376, -6830072, -18257906, 2814814, 12487617, 17044040,
--1695975, -7322383, -18732500, -5977521, -414464, -11940009, 738734, -15727096, -11027329, -4037806,
--15714748, 8632347, -14151917, -37569152, -869194, -3300682, -13908178, 12830678, 9579388, 14867029,
-4318053, 11117523, 25055766, 2089502, -29606284, -8856759, 10391673, -8786966, -25129316, 9655623,
-15378667, 2791729, -2791192, -34230352, 24568824, -5405753, 19373524, -23371064, 19414862, 49353468,
--8498130, -10142028, -43192340, 15142981, -56737056, 38054484, 13967771, -9494562, 40711460, -3631932,
--19969988, 35874788, -13186623, -1788317, 8128763, 12593918, 33600068, 1415192, -2033130, 23314156,
-10568304, 19537806, 24654722, 17692580, 2388539, 12299176, 2742874, -1410360, -12297028, 8174934,
-13404056, 2765959, 120259, -14478872, 7698729, -13645648, 16893180, 15295452, 3706020, 18085570,
--10460930, 11692512, 20322174, 11641509, -24977382, -28732258, 33972656, -4022774, 21685826, 31003222,
-1902671, -1000191, -2150705, 5135171, 19651086, 16260209, 3057480, 13154948, 1260036, -18173618,
--19463182, -32454384, 1833951, -14413910, 1749662, 15231565, 17623324, -31200254, 3786551, 8329016,
--23897198, 916439, 36330592, -19089520, -16325708, 14028974, -19340774, -1767379, -6295885, 3587908,
--20526186, 3860102, -23678154, 46930032, 11120744, -26003342, 9130564, -6526740, -23116050, -27274116,
--27530204, 7340636, -1823751, 23172422, 34884260, 16309065, 8098161, -4986457, 11284490, 405874,
--44956496, 18788334, 45786500, -31012886, -32245004, -28239946, -39309152, 27345520, -38707320, 16441672,
--173409, -5594732, -667867, -13255343, -15224585, 18165564, -39795556, 39638252, 22813792, 4515085,
--26329224, -20451024, -17585744, 2746095, 6329171, -17655000, -2767033, -13277355, 27415850, 11730629,
--5517423, -1753957, 10953240, 1664837, 12539694, -23703388, -9619653, -3081102, -4687957, -22083648,
--15645492, 11749957, -41147936, -24591908, 2126546, 46432356, 21641266, -14954002, -2302103, -36203352,
-15784542, 54769424, -192737, -10688026, -11108933, -21068962, -903554, -23097260, -16187732, -45213656,
-8735427, -33585572, -49640696, 10440529, 26043072, 5611375, 6351183, -21654688, -26662620, -7744900,
--39068096, -19834696, 9154186, -33048162, 49580564, 8741332, -13172128, 9758166, -24918864, -48814988,
--16758962, -37596532, 5068599, 9569187, -14095009, -27065274, -13846975, -17123498, 13350906, -20154134,
--7576859, -3579318, 20967494, -16703128, -3417183, -8397198, 4976257, 7915625, 1141924, -7536594,
-21786758, 28018756, 18183818, -15957414, -12586402, -43831216, -24148454, -10792179, 11053098, 70928704,
--12512850, -78383, 31844498, -3766686, 13533442, -17134236, -17051558, -14437533, 15247134, -41115720,
-461172, -5702643, -250182, 35093104, -15039365, 53563612, 5289789, 41341744, -50523848, -13259101,
-16151761, 3177202, -19063212, -3236795, -44744968, 20428476, 31712964, -24036248, -19988240, -7132867,
--21917218, -26053272, 6071473, 7062000, 19061602, 401043, 16523813, 30400316, 31343598, 20928838,
-6504728, -24027658, 1392643, 11870216, 15316390, 24640764, -747324, -13335337, -19904490, -7488276,
-24282672, -10773389, 8833137, 21705154, 969052, 42994232, 3737695, -27999966, 22590992, 23272818,
-5434208, 9844065, 20467666, 3162707, 350577, -25730612, 53264572, -58814744, -44633836, -50235012,
--18248242, 9938554, -31141734, 14658723, 30786862, -10128607, 1178432, 28382218, 7074885, -31751620,
--13115220, -24734180, -5873905, 1196685, -971200, 27216670, 24676734, -7050726, -9871445, 16684337,
-39027296, 6403260, 31242666, -30294552, 27001386, -14551886, 5833640, -6892886, -24943560, -12400107,
--24815784, -50064824, -50411640, -36417028, 7634841, 94085552, 23852100, -12761422, -28281822, -67652712,
--95346128, 21769042, 39628052, 47690244, -9896678, 4363150, -27904940, -48425756, 14117558, 9125732,
-15917686, 2593624, -40766756, -12152610, 10042170, -7864622, -1549946, -7357279, 53265648, 47115792,
-31561568, -2463701, -22784264, -38340636, -25622702, -22733262, 36397164, -5512591, 26647050, 12572980,
-12507482, -15767362, -88356608, -60245508, 30112016, -47227996, -16289737, 102720048, 70194800, 53469660,
--39887360, 29692720, -27605366, 2915209, 2092723, 15765214, 43337292, 77292232, -29123636, -1595580,
--50206556, -39405252, -66468912, 8545911, -2676302, -70208216, -17100950, 47716548, 17294222, 33906084,
-43679280, 80481248, -57353920, -32587528, 4408784, -45462764, 18736258, -42266236, -129439576, -120819040,
--71211632, -77146736, -22548042, 115772992, 56724708, 119227216, 105480640, 167622912, 118631832, 101180840,
-12719009, -50583440, -108174120, -171073920, -145617648, -147006528, -78655880, -40407052, -12624519, -3526168,
--113817, 24652576, 35100084, 94291176, 56014964, 112112608, 72047000, 95407328, 32202592, 92010008,
-29635274, 18871012, 18968186, -10587631, -31060130, -70377872, -79441864, -145251504, -99919192, -182777168,
--144417200, -220810176, -131583840, -106485664, -27976880, 54411868, 28213104, 395674, 56031068, 121660856,
-166094976, 216791152, 261487280, 221213904, 162636448, 201089824, 167722224, 90364504, 40964860, -15470472,
--72275712, -168841600, -195497792, -265582528, -336538080, -394280160, -350017280, -314129600, -216494272, -153952560,
-55143084, 144438672, 201697040, 252096320, 160200128, 106504992, 0, 0, 0, 0,
-0, 0, 0, },
+-67109, 317828, -6643241, 1188632, -184147, 210990, -4071092, 1222455, -7295002, -3908957,
+1842004, -1560684, 2344515, 3863860, -2347737, 2735894, -3688303, -402116, 3347927, -998580,
+2068564, -5641440, 687732, -12885, 1688459, -1324997, 1964948, -2812130, -1526861, 1977296,
+-4854387, 1438277, 1396401, -1577864, -2652679, 7001334, -1620276, 1882269, -2807298, -977105,
+943819, -5814312, -3759707, -3112241, -2216203, -2803003, -2863670, -52613, 143881, -2734284,
+956704, 194884, 2765959, -2286533, -1091459, -261993, 1220308, -1404454, -3934190, 4258997,
+3278671, 1841467, -1231045, 1731409, 383326, 2673617, -3260954, -6189048, -5268315, 694711,
+-3234110, 2296197, 5021354, 1111323, 3317325, -8733816, 4890894, -6681896, 613643, -2925947,
+-1042066, 2370285, -4221416, -7497939, -2062121, 462783, -4395899, -2580202, 3366718, -2263448,
+1452236, -9335648, -986232, 6070400, 3110093, -10420128, -3743601, -2835215, -2937758, 3336116,
+-1709934, -5485210, -3576097, -3955128, -4111894, 6649683, 1898912, 4242891, -3048890, 5615133,
+4983773, 3600793, -2289755, -4969277, -4051765, 302258, 735513, 7698729, 2525978, 1392106,
+-3913789, 761283, 91805, 811749, 2840584, 1755568, -5546414, -4568772, -2583423, 2786897,
+400506, -1053341, -5927055, -1779190, 1945083, 2519535, -2565169, -900333, -164283, 2681670,
+-886911, -3023657, -311922, 401579, -4194036, 8180302, 156229, -5648419, -415538, -1014149,
+-5553930, -5021891, 5897527, 5401995, -4195646, 3282429, 431644, 1726040, -14009110, 5534602,
+-1978906, -9579388, -12451647, 401579, 9225053, 607201, 6032819, 272194, -11233487, -3877819,
+1459215, 4021700, -1850057, -935766, -4630512, 667331, -704912, 8067023, 4257923, 1730335,
+1619740, 2200097, 2975339, 7340099, 4632659, -6473053, -353261, 1502702, 1770600, -7713225,
+2716567, -2308008, -4655208, -1403917, 18790, 5236639, 1588064, -2986613, 5578089, 8267812,
+-1512902, -3216394, 2270427, -667331, 4816806, 4553739, 3909494, -5659157, -3944928, 3876745,
+-1382980, -1527935, -3952444, 308164, -6008659, 3591130, 3744138, 4246649, 1510755, 4918275,
+-5229660, -3879429, 7710540, -106300, 3178276, 7823820, 7046968, 498753, 2638184, -6185290,
+-5288716, 2813204, -1577864, -2339684, -2968359, -2752000, 2022930, -7121593, -4179540, -8763344,
+-10558640, -2034741, 8474507, 5468030, -3671123, -1078037, -1384590, -2114198, -7671349, 5293547,
+-2071785, -2015413, 274341, 3434363, -1890859, 227633, -469762, 5021891, -4934381, 5041755,
+2569464, 6064494, -2324651, 4679904, 1870995, -2999498, 4031901, -2961917, 2206540, 4496294,
+-3700651, 4730370, -3131568, -2345589, -1013075, -1450625, 2101850, -1422171, -3952981, 1436667,
+-3490735, 674847, 74625, 481573, 6828461, 1398012, -2057826, 47245, -3384434, -4107063,
+1665911, -968515, 6372121, 7047505, 2287070, -1904818, -1706176, -2147, -3476239, -3151969,
+2698313, 5574868, 13794361, -5727339, 5705864, -6919729, -5794448, 97711, -1541893, -1421097,
+2005750, -2877628, 6030134, 5848135, 5061619, -1429150, -538482, -2525978, -6216965, 1044751,
+-3684008, -650151, 818728, -2068564, 3737159, 1414655, -296353, -10400800, -4218732, -6538014,
+397821, -4262218, -6465537, -2857764, -3494493, -4003983, 6768332, -5224291, 4831302, 447213,
+-1677722, 2647311, 2440615, -4678830, -1079111, 142271, 5319854, -439697, -6721624, -8786966,
+-8939974, 2439542, -3087545, 250719, -439697, 1380295, 3417183, 5162551, -3199214, -1815697,
+2039573, 1814624, 1041530, 6469295, -3164317, 4025995, -6899328, 14497125, 2290291, -1468879,
+3389266, 1450088, 3434363, -3947612, 104690, 1142998, 599148, -882616, -5621039, -6550362,
+1132798, 1404991, 601295, -898185, -3862249, 2552821, 2065879, -5897527, 7269232, -8712878,
+11099806, -909996, 3801046, 1779190, -80531, -1015223, 2393908, 10428717, 11651173, -2043331,
+2207613, -1225139, -1503775, 1688459, 2572149, 8056285, -878321, 2552284, -3875671, 4487704,
+1076426, 6382322, 3125663, 5986648, -8301098, 3699578, 3164854, -2494302, 7516, 6479495,
+116501, 642635, 2007897, 3994320, -1232119, -408559, 12276090, 5944772, 1138703, 1240709,
+-2505577, 5666136, -7343857, -10698764, -13067438, -700617, 6890202, -117575, 3423089, 9387188,
+3651259, -1582696, -3320547, 5007395, -1034550, 11987791, 5279589, 1764695, 1541893, -6584722,
+1220308, 4810364, -2719788, -7599945, 1056562, 1917703, -15349139, 2314451, -609885, 11551315,
+-7598871, 5418638, -16301012, 7270306, -1010391, -7978439, -8876624, -5979668, 5619965, 4583267,
+13393319, 2352568, 4842039, 12929999, -1562831, -8259222, 1908576, -6201933, 2248416, 10691247,
+2426120, -2108292, -626528, -1207423, 3505767, 4593468, -260919, 3320547, 5719286, -2474975,
+2197413, -5293547, 97174, -6801081, -619012, 1818919, -3019899, 6389301, 4390531, 5581310,
+10071698, 1445793, 12072616, 9654550, 4845260, -5092758, 13775034, 6576132, 2925410, 12480638,
+-642635, 1222455, 1602023, 4830228, -1748589, -2335389, -7227893, -6575058, -5532992, 1203665,
+-4174708, 11329587, -5298379, 5467494, 7206955, -2175938, 1312113, -1394254, -549219, -8244727,
+-9960029, 7266548, 146566, 13385266, 551366, 188979, -1183800, -2589329, 2458332, 568546,
+-6743099, -8723079, -11752641, -6199786, -12290049, -7876433, -4116726, -9170829, -5682242, -4021700,
+-4638565, -12402792, 8630200, 5297842, 463320, 4450123, 2219424, -3469260, 15552077, 912681,
+-5120138, -2825015, -10213432, -4518843, 11675869, 520765, -9363029, -9639517, 1663763, -9754408,
+3400004, 3378529, -7266011, 273267, 2696166, 517007, 11623792, 3362423, -4764730, 1134945,
+-5759551, 5697274, 1251446, 2542084, -13304735, 9543954, -4223027, 4022237, 872952, 1932198,
+2861522, 476205, -3363496, -156766, -4673462, 221191, -10089415, 212064, -10865730, 15803869,
+-1675574, 10288057, -6152541, -2779918, -304943, -6651831, -2654827, 7176891, 1811939, 1619203,
+-6932077, -122407, 4966056, -13259101, -66572, -5802501, -4604205, 9187472, -15214922, -14471355,
+3703336, 18958522, 467615, 1653026, 1457068, -3090229, 10460930, 9969693, 5876052, 2676838,
+-2740189, -15754477, 9232569, -157840, -12411919, -4268124, 2928631, -898722, 155693, 984084,
+-2936684, -12562779, -621160, 172872, -2161979, -5470178, 3765076, 10255845, -13616657, 8133058,
+-5035313, -3008625, 930397, 6314676, 22407918, -14898705, -3497714, 891206, -1284195, -3200288,
+891206, -6131066, 2087891, -5644124, 15496779, 4558034, 3058017, 3454764, -3038153, -1730872,
+8322573, -2207076, 3751654, -7778186, 12002823, -638340, -8066486, 15129559, -10202158, 6047851,
+2461553, 1924145, 12298639, -7011534, 5471252, -3636764, 248034, 16313896, 1293322, 4261682,
+4859756, -2720325, -9353902, -7352984, 1161252, 16304770, 9281424, 2004676, -14535243, 2095944,
+-7968238, 39192, 16369731, 15677168, 7988103, 10590316, -9497783, -19832548, -10298258, -14301704,
+8003672, -164819, -2321430, -80531, -10706280, -3237869, 3453691, -2062658, -3986804, -4029753,
+11689827, -784368, 3287261, -3325915, 7733089, 1563368, -4204773, -9238475, -6878927, 20874614,
+-702764, -4784057, 6900939, -12013560, 3984656, -6904160, -20635170, -4752382, -2439005, 6252936,
+2727841, 5478768, 2098629, 8184060, 677531, 484258, 4982162, -20517596, -2776160, -5595269,
+-957241, 1859721, 12286291, 12814572, 5302674, -3547643, -8210367, -11913702, -3108483, -7103339,
+2445447, -3620658, -2542084, -7740068, -23117124, -14952392, -3076270, -5145371, 12565464, 8753680,
+-1464047, 21232170, -20467130, -4436165, -7388955, 22636088, 11185705, -6842420, 8732205, 3555159,
+-8068096, 15759309, -16318728, 8800388, -7190312, 1752884, 2447595, -5211943, 15413564, -9972914,
+9720585, -3908957, -21112448, -3192771, 15876347, -8789651, -14169634, 615791, -1140314, -21826486,
+-3422015, 9330280, 4544613, 12264279, 9509058, -2109366, 22206592, -4718022, -5736466, -10121627,
+-8908299, -9078487, 6797323, 8380018, -5914707, -7377143, 3583613, -6350646, 10045929, -2087891,
+6010807, -3264712, -4342749, -3897146, 1183264, -12222403, 4819490, 9432285, -584116, 4268124,
+7151121, 6769942, 13521094, -8017094, 5916855, 9319005, 1416266, -19118510, 18173618, -9428527,
+-25674240, 1376537, 20451024, 25772488, 5835250, -7765838, -5523865, 3796751, -3115999, -2585034,
+12033425, 12220793, -4087198, 11848741, -12090333, -316754, 10924249, -3373160, 12965969, 6842420,
+-322123, -14701673, 7454453, -2378875, -2497524, 2223719, 134218, -290447, 23390392, -9392557,
+12615930, 20357608, 14485314, 8391292, 1651415, -10956462, 13917842, -5428839, 13354127, -5114233,
+4233227, -11484743, -1010391, -10718628, -6592775, 3613141, -9950365, -1405528, -2383707, 1378148,
+11972221, -10183904, -8665097, -1792075, -4163434, -351650, -8429410, -11123428, -14710800, 4037269,
+15047418, 1611687, -6006512, 4092567, 5141613, 13243532, -8748312, -3211025, -781684, 3425773,
+10911901, 4522064, 5937256, -2174864, 2213519, 13330505, -45433776, -21731460, 14798310, -37137508,
+-25844428, -1897839, -15331960, -10562398, 10965588, 12632573, 3646964, -2600603, 4358318, 36603320,
+-4826470, 5666136, 13861470, 15937550, -17125108, -8937290, -8290361, 13382044, 14502494, 7242389,
+2381023, 13688598, -4445828, -7180649, 9394704, 18602040, 962073, 5866389, 18750754, 13901735,
+11115375, -8808441, 3220152, 5575942, -451508, -542240, 11859478, -4261682, -627602, -1485522,
+7760469, 54224, -13888314, -9258339, 2233383, -18525268, 13351980, -4353486, 30061012, 892816,
+16266115, 2970507, -1217623, -10232760, -959925, 3489661, -13396540, -7122667, -15556908, -2441689,
+7269232, 9903121, -4995584, -25255482, 8552354, -4726612, 8154533, -9784472, -10512469, 6522445,
+-15413027, -13569412, 25604984, 18931142, -7735236, -20578798, 9709310, -10455561, 5259725, 330712,
+-9920301, 20114942, -25444460, -460098, -30840550, 1388348, 26094074, 36219996, 17500918, -5483600,
+17128330, -613643, -1598265, 2413235, -2092186, 9404905, -368830, -15998753, 1706176, -22479858,
+8900783, -6481106, -4393215, 16222628, 476741, -17090748, -19086298, 5342403, 3593277, -9171366,
+-7388418, 15673409, -20667382, 672699, -3406983, 8428336, -4802847, -3838090, -16224239, -6464463,
+-6529961, -2314451, 13593035, -13813689, 6533182, -810138, -1258425, 2976949, 6758131, -23889144,
+-1154273, 4549444, -572841, 10481868, -6080600, -9714142, -3051574, -26524644, -10107132, -10624138,
+3123515, 13666049, 20933134, -6553047, 17160004, -21048024, 41865192, 5370320, -460098, 24080272,
+-7657927, 22936736, 1318018, -16354699, -344671, -2465848, 10655814, 7017977, -9958955, 11541651,
+241592, -25756918, -28020366, -2681133, -8413304, 7004555, -1163399, -9905268, -25241522, -22058416,
+12080669, -18771154, -4158602, 1184337, 5998459, 1397475, 18092012, 1503239, -9047885, 12068321,
+-1532230, 1751273, 11232950, -14716705, -879395, 3162170, -14906758, 9065065, 12561706, 5396627,
+11196980, 5747203, 17291538, 4634270, 12629888, -17632988, -5348308, -2881386, -23432268, -220117,
+-2388539, 9759776, -1402844, 11181947, -1694365, -13847511, -9109626, -899259, -21582748, 9330816,
+852014, -4520990, 13026636, 7731478, 10892574, 10562398, 3688303, -1864553, 9599789, -30275224,
+9337259, 2793339, 13604309, -6525129, -20588462, 11162083, -3233574, 18130130, -29671782, 15650861,
+14513231, 53097608, 40128416, 5420249, 11637214, 3349001, 30836254, 823023, 15014132, -14035953,
+36524940, -14502494, 33125472, -1532767, 21164526, -2513630, 14940044, -14907831, 3588445, 7390565,
+-8130373, -2738579, -4364224, -3513283, 9886478, 140660, -8517994, -11849815, -17718350, -22659174,
+-10836202, -3929895, 136365, 6943352, -18992882, 7882876, -10457708, -16306380, -3364033, -11985643,
+5365488, -3100967, -24729348, -6135361, -12589086, -15175730, -15668041, 13881871, 18932216, -40033928,
+8953396, 3126736, 11086384, 3483755, -5072357, 23498840, 13421236, 11986180, -33305860, -15517717,
+-558346, 7428683, 27343372, 143881, -3903589, 279173, 23054310, 19643032, -20134806, 20778514,
+1238561, 2878165, -4403415, 9927817, -29248190, -16459925, 12683038, -7663833, 10803990, 17869212,
+-24232206, 5043902, -14666240, 35345432, -23962696, 19148038, 17469780, -9271224, -36713916, -22137872,
+-4230006, -11150809, -2978023, -17847200, -27291832, -35618164, -21283710, -24357296, 7720204, -21115132,
+6017786, 361851, -4197257, -3916473, -17813376, -6830072, -18257906, 2814814, 12487617, 17044040,
+-1695975, -7322383, -18732500, -5977521, -414464, -11940009, 738734, -15727096, -11027329, -4037806,
+-15714748, 8632347, -14151917, -37569152, -869194, -3300682, -13908178, 12830678, 9579388, 14867029,
+4318053, 11117523, 25055766, 2089502, -29606284, -8856759, 10391673, -8786966, -25129316, 9655623,
+15378667, 2791729, -2791192, -34230352, 24568824, -5405753, 19373524, -23371064, 19414862, 49353468,
+-8498130, -10142028, -43192340, 15142981, -56737056, 38054484, 13967771, -9494562, 40711460, -3631932,
+-19969988, 35874788, -13186623, -1788317, 8128763, 12593918, 33600068, 1415192, -2033130, 23314156,
+10568304, 19537806, 24654722, 17692580, 2388539, 12299176, 2742874, -1410360, -12297028, 8174934,
+13404056, 2765959, 120259, -14478872, 7698729, -13645648, 16893180, 15295452, 3706020, 18085570,
+-10460930, 11692512, 20322174, 11641509, -24977382, -28732258, 33972656, -4022774, 21685826, 31003222,
+1902671, -1000191, -2150705, 5135171, 19651086, 16260209, 3057480, 13154948, 1260036, -18173618,
+-19463182, -32454384, 1833951, -14413910, 1749662, 15231565, 17623324, -31200254, 3786551, 8329016,
+-23897198, 916439, 36330592, -19089520, -16325708, 14028974, -19340774, -1767379, -6295885, 3587908,
+-20526186, 3860102, -23678154, 46930032, 11120744, -26003342, 9130564, -6526740, -23116050, -27274116,
+-27530204, 7340636, -1823751, 23172422, 34884260, 16309065, 8098161, -4986457, 11284490, 405874,
+-44956496, 18788334, 45786500, -31012886, -32245004, -28239946, -39309152, 27345520, -38707320, 16441672,
+-173409, -5594732, -667867, -13255343, -15224585, 18165564, -39795556, 39638252, 22813792, 4515085,
+-26329224, -20451024, -17585744, 2746095, 6329171, -17655000, -2767033, -13277355, 27415850, 11730629,
+-5517423, -1753957, 10953240, 1664837, 12539694, -23703388, -9619653, -3081102, -4687957, -22083648,
+-15645492, 11749957, -41147936, -24591908, 2126546, 46432356, 21641266, -14954002, -2302103, -36203352,
+15784542, 54769424, -192737, -10688026, -11108933, -21068962, -903554, -23097260, -16187732, -45213656,
+8735427, -33585572, -49640696, 10440529, 26043072, 5611375, 6351183, -21654688, -26662620, -7744900,
+-39068096, -19834696, 9154186, -33048162, 49580564, 8741332, -13172128, 9758166, -24918864, -48814988,
+-16758962, -37596532, 5068599, 9569187, -14095009, -27065274, -13846975, -17123498, 13350906, -20154134,
+-7576859, -3579318, 20967494, -16703128, -3417183, -8397198, 4976257, 7915625, 1141924, -7536594,
+21786758, 28018756, 18183818, -15957414, -12586402, -43831216, -24148454, -10792179, 11053098, 70928704,
+-12512850, -78383, 31844498, -3766686, 13533442, -17134236, -17051558, -14437533, 15247134, -41115720,
+461172, -5702643, -250182, 35093104, -15039365, 53563612, 5289789, 41341744, -50523848, -13259101,
+16151761, 3177202, -19063212, -3236795, -44744968, 20428476, 31712964, -24036248, -19988240, -7132867,
+-21917218, -26053272, 6071473, 7062000, 19061602, 401043, 16523813, 30400316, 31343598, 20928838,
+6504728, -24027658, 1392643, 11870216, 15316390, 24640764, -747324, -13335337, -19904490, -7488276,
+24282672, -10773389, 8833137, 21705154, 969052, 42994232, 3737695, -27999966, 22590992, 23272818,
+5434208, 9844065, 20467666, 3162707, 350577, -25730612, 53264572, -58814744, -44633836, -50235012,
+-18248242, 9938554, -31141734, 14658723, 30786862, -10128607, 1178432, 28382218, 7074885, -31751620,
+-13115220, -24734180, -5873905, 1196685, -971200, 27216670, 24676734, -7050726, -9871445, 16684337,
+39027296, 6403260, 31242666, -30294552, 27001386, -14551886, 5833640, -6892886, -24943560, -12400107,
+-24815784, -50064824, -50411640, -36417028, 7634841, 94085552, 23852100, -12761422, -28281822, -67652712,
+-95346128, 21769042, 39628052, 47690244, -9896678, 4363150, -27904940, -48425756, 14117558, 9125732,
+15917686, 2593624, -40766756, -12152610, 10042170, -7864622, -1549946, -7357279, 53265648, 47115792,
+31561568, -2463701, -22784264, -38340636, -25622702, -22733262, 36397164, -5512591, 26647050, 12572980,
+12507482, -15767362, -88356608, -60245508, 30112016, -47227996, -16289737, 102720048, 70194800, 53469660,
+-39887360, 29692720, -27605366, 2915209, 2092723, 15765214, 43337292, 77292232, -29123636, -1595580,
+-50206556, -39405252, -66468912, 8545911, -2676302, -70208216, -17100950, 47716548, 17294222, 33906084,
+43679280, 80481248, -57353920, -32587528, 4408784, -45462764, 18736258, -42266236, -129439576, -120819040,
+-71211632, -77146736, -22548042, 115772992, 56724708, 119227216, 105480640, 167622912, 118631832, 101180840,
+12719009, -50583440, -108174120, -171073920, -145617648, -147006528, -78655880, -40407052, -12624519, -3526168,
+-113817, 24652576, 35100084, 94291176, 56014964, 112112608, 72047000, 95407328, 32202592, 92010008,
+29635274, 18871012, 18968186, -10587631, -31060130, -70377872, -79441864, -145251504, -99919192, -182777168,
+-144417200, -220810176, -131583840, -106485664, -27976880, 54411868, 28213104, 395674, 56031068, 121660856,
+166094976, 216791152, 261487280, 221213904, 162636448, 201089824, 167722224, 90364504, 40964860, -15470472,
+-72275712, -168841600, -195497792, -265582528, -336538080, -394280160, -350017280, -314129600, -216494272, -153952560,
+55143084, 144438672, 201697040, 252096320, 160200128, 106504992, 0, 0, 0, 0,
+0, 0, 0, },
{
4442070,
--1763621, 2601677, -6839736, -655519, -2604361, 3244848, 589484, -2800856, 4190278, -3695819,
--930934, 3333968, -1308891, 1451162, -5663452, -995359, -713501, -5924908, 752156, 81068,
--200253, 1653562, -2985002, 703301, -1089311, -380105, 6172405, -674310, -4259534, -2035278,
-409633, 1458141, -4109747, 1070521, -3109020, -68719, -1196148, -1873680, 3390340, 3307125,
--2367064, 4380867, 4456029, -5549635, -933082, -586263, -5206037, -2241436, -3605088, -4102768,
-912144, 989453, -512712, 469225, 1952063, 2110440, -1163399, 671089, 1888712, 5239860,
-3013457, 2350421, -2647847, 233002, -1479616, 3271155, -3713536, -2676838, 2877091, -1714229,
-3119220, -3618510, -1782411, -1217623, -2197950, -12145094, 4277788, -6987912, 3518115, -4013110,
--8071318, -13798119, 2222646, 246961, 3249143, 2863670, -1135482, -1152125, 843961, 8098698,
--6042482, -10588705, 3272765, -4459250, -7192460, -9664, -1238561, 4197257, 1346472, 2962991,
--3343095, -898185, -2261837, 6912750, -2115808, -2944200, -2703145, -1336272, -1899986, -2910377,
--2695629, -1810866, 1185411, 522375, 712965, 175557, 1621887, 2928094, 1307281, -2695629,
--8137353, -107911, -5720360, 787053, -579821, -2510945, 3344706, 260919, -176631, -7861401,
--3427384, 1122060, -814433, 2852395, 11811, 2581275, -2477123, 1182190, -1169305, 5086315,
--1889786, 2837363, -4506495, -3996467, -5609228, 721018, -1381369, -1007707, 27917, -1096290,
--8615168, -1817845, -1160715, -2482491, -1127429, -2987150, 2816425, -1222455, -1016297, -313533,
-49929, -248034, -2071248, 7518877, 4888747, 7856569, -3712462, 7813620, -4671314, -3384434,
-3092377, 8651138, -169114, -5419712, -7807177, -5748277, -1047972, 6118181, 2493766, 1982664,
-2817499, -2880849, 4301947, 397284, 3234110, -1699196, -7074885, 1786706, -4868346, -3548180,
--3387656, -995359, -8980240, -597000, 521302, -3972845, 8571144, -1797444, -2629057, -3602404,
-32212, 730144, -3503620, -86436, -4315906, -1891933, 268435, -2057826, 6246493, -39192,
--1471563, 3180423, 2371359, 5406290, 2467459, 6545530, 1890859, 5310190, -6078453, 1414118,
-5340255, -1944010, -4175782, -6402186, 337155, -589484, 9738838, -4378183, -3364570, 1005022,
--2136209, -1576253, 4896263, -3754875, 4714264, 2187212, 127775, 2430415, -3118146, -2955474,
--5488968, -5898601, 7842074, 3738232, 2770254, 4224101, -2719788, -1784559, -1998770, 9921911,
--3809636, 10857140, -353798, -2707440, -2595234, -5680631, -6153615, -7425999, -459562, -1834488,
-1350767, 7269769, -620623, -3334505, -10080288, 401579, 7985418, 11796128, -5532992, 3084860,
-2135673, -2934000, -2692945, 3118146, 11082626, -2599529, 1697049, -897648, -1690607, -984621,
-5257577, 7762617, -5930813, -3105798, 2272575, 10161356, 1545115, 7215545, -6015639, -5359583,
--504659, -836982, 1792075, 1589675, -450435, 680215, 638340, -2603287, 681289, 3255048,
-1724429, -2112050, 15670725, -11256572, -2711735, -4844723, 958851, 3963718, 7374459, -7947837,
-4962298, -2287607, -8400956, -13400835, -2983392, -5858873, 632971, -1539746, -5847061, -3121904,
-2754148, 2947958, 9945534, 5398774, 4905927, 245350, 1309428, -5607617, -3914863, 7941932,
-5986648, 3983045, 1658394, 3649112, 514322, -272194, -7218230, -10046465, 6169721, -2913599,
--6902550, -3448322, -4476967, 3150896, -3993783, 7932268, 1534377, -5118528, -2709588, -4013647,
--3563212, 3666828, 5666673, -911607, 3671123, -3411815, -3792993, -404801, 360777, -3655554,
--1728724, 4294431, -452582, -2490007, -2891587, 2040110, 2319282, -986769, 2873333, -204548,
--3184182, 7459285, -1976222, -33286, -559956, -11128797, 2619930, 1434519, 2905546, -10460393,
-3233574, 537408, -2796561, -5540508, 2922188, -5277441, -614180, 10267119, 15355045, 7764227,
-8638253, -199179, -3704409, 6580427, 5960878, 2742337, 3390340, 7764227, -639413, 5756867,
-5635534, 8038032, 7765838, -5585068, 5357435, 17180, 2178085, -5179194, 2161442, -347892,
-5464809, -1539209, -946503, -3545496, 4112968, -5717139, -4485557, 883690, 5738613, 3256659,
--2673617, -1257889, -475668, -1714766, 3682935, -6974490, 7282117, 339302, 8943733, -11578695,
-1385664, -10397579, -2839510, -3076270, 3507378, -781684, -1859721, 2695092, 1502165, 3220152,
-5284421, 7930657, -279710, -5845988, 2017561, 10530186, 2838437, -2766496, 33823, 6482180,
--2505577, 3891777, -2349347, -11174431, 7175280, 5856188, -16491064, 173409, -3750043, 1409823,
--9298604, 1028645, 1382980, 12076911, -9871445, 44560, -13201656, 2902861, -8043400, -1988570,
-317291, -4334159, 3603478, 1618129, -7014756, 80531, -292058, 6280316, -4328254, 10146860,
--329639, -8853001, -4719632, 10812580, -1267552, 4321274, 2648921, -1799054, 6234145, -7175280,
--7041062, -5278515, 474594, -6860674, 7021735, -4009889, 4392678, -6632503, -380105, -8057359,
-4992363, 738198, 6029061, 5712844, -5726265, 10718628, 8749922, 8642011, 1324997, 9076340,
-7027104, -7613367, 6163278, 3195456, 169651, -7057705, 2816962, -5995238, 5513128, -2541547,
--5299990, -519154, 8392903, 3249143, -10928544, 9889162, -1499481, -3428995, -6694244, 10041097,
-7636452, -7522635, 5492727, 23822572, 4419522, -490700, -7612830, -14704357, 4318053, -1791001,
--21775484, 19941534, -8990440, -13668733, 3443490, -462246, 3094524, -472446, 4252555, 6063957,
-552440, 82141, -10877005, -501974, -587874, 13839458, -1949915, 794032, 5435818, -1902671,
--1135482, -5000416, 11962021, -8128226, 8798777, -1581622, -6309844, 1744831, -7106024, -3428995,
--11874511, 2663954, 6298570, -2887292, -5608154, -4430259, 8141648, -11173894, -2119566, -5252745,
-498216, -1163399, 2204392, -9600863, 10572062, -13285944, -8704288, 4292283, 2447595, 35970,
-4510253, -6589017, -9445707, 1877438, -1882806, 151934, 6048925, -5508833, 5654862, 3890167,
-12538620, -2405182, 2922725, -57982, 1631551, 16701517, 3063922, 16745004, -1469953, -4104378,
--17732846, -2819109, -4076461, -14479408, -24554864, 6832219, 11839614, -9329206, -4833449, 6497212,
--3203509, 14393509, -2290291, -8500814, -5388574, -22848690, 6904697, 2011118, -2689723, -16188269,
-3044595, -9218610, -2974802, -8145406, -4606890, 10670309, -11397769, 4143033, -16553878, 9681930,
-1294933, -251256, -5312338, 753230, -2827699, -9291088, -17457432, 2812130, -767725, 3156264,
-6175626, -4458176, -2178622, -11124502, -6387153, -3257733, 3646427, 2701535, 6979322, 12272332,
-8909373, 4736812, 6525666, 1961190, 6795712, 6754373, -8003135, 7801271, 7963943, -2153926,
-10988137, -1526324, 13015898, -6579890, -16916266, -2709588, 8231305, 10700374, 10649908, -2486786,
--23612120, -2160369, -3571265, 964757, -3718905, -4843113, -955093, 22950694, -5051419, -5491116,
-7635915, 12381854, -914828, 5788542, 14264660, 10384157, -23541252, -21523154, 108985, -2006824,
-3084324, -9569187, -17230872, 4154307, 13626321, 9169755, -10073309, 16262894, 12914430, 12367895,
--20745766, 5948530, 10619844, 681826, 1447404, 9325448, 20995410, -3957276, -9929428, 6583111,
-4552666, -2733210, 11186779, 17278654, 2895882, 17900886, 7425999, -13132936, 1148904, 14886894,
--1967095, -5848672, 7207492, 1425392, 2456185, 15634755, 9433896, 5459441, 1318018, -17702782,
--18807124, -1303523, 2295123, 4999342, -6279779, -554051, -5421323, 1854889, 1513439, -6570226,
-1755031, -3911642, -1983201, -5497558, -361851, 11755325, -7885560, -16064788, -3876745, -13501767,
-1552094, -4297115, -2267206, -695248, -39738112, -25316148, -8667781, 5553930, -3790309, -10968810,
-263067, -10721849, 25366076, -12263742, 15739445, 25078850, 12871480, 11649025, -11853573, 7986492,
--6648610, -13674102, 9170292, 11091753, 6738804, 16443282, -1444720, -2325188, -9450539, -9470403,
--8485782, -12513924, -12431246, -8830453, 2535641, 91805, -1734630, -8398272, -5465346, -12190191,
-2819646, -10726144, -10153840, -5208722, 2801393, -1488743, -7444789, -17119202, 122407, -6091338,
-3898757, -19949050, -16124918, 14740865, -4315906, -4622459, -9373229, -6102075, 10249939, 2421288,
--4459250, 5127117, -3801583, 5377836, 3479461, 6334540, -7745974, -10933913, -25631828, 4295,
--24976308, -3205656, -21529598, -4463545, 15978352, -3985730, 940061, -14641007, 26851598, 958851,
--18617072, -15786152, 17067126, 13370233, -11693585, -11450920, 22754736, 14442901, 1399086, -12859669,
-2198487, -5253282, 11155104, -7916162, 1903744, -3233037, -1749125, 23148800, -2549063, -6076842,
-4974109, 4047470, 7600482, 7200513, 1539746, -8977019, 7636989, 3515431, 8657580, 17761838,
-8948027, -25579752, -6474663, -4227859, -18705120, 7474854, -2519535, 259309, -10009958, 9032853,
--3325915, 1533303, -13252658, 9340480, -10609106, 620086, 12339978, -2211908, 12976170, -9820980,
-15954193, -19710678, 10573136, -361314, -5937256, 24463596, 7676181, -5966784, -14017163, 5677947,
--2141041, 1116155, -1379221, 8111046, 14539538, 17235704, -10955925, 6883759, -4063039, 14863271,
-6354941, 384936, -1731946, 7408282, 0, -9709310, -38216620, -24671902, 20824148, -14958297,
--14086956, 8177081, 18220862, -29573534, -4836133, 7364795, 2025077, -15287936, -23242216, 44109316,
--18814642, 6267968, -21416318, 12174085, -7434589, 20841866, 18234284, 2216740, 3244848, -23935852,
--27380, 11927661, -9869835, -14064944, 11511049, 3733937, 12399034, 10378252, -2115808, 4669703,
--2802466, -1002338, 18260590, -15014669, -9256191, 15317464, -707059, -11130945, 15452219, 201863,
--3555696, -9811316, -4793184, 6497212, -8381092, -146029, 5304822, -9604084, -10891500, -6074695,
-7687992, -21722334, 10605885, -35433, 21320754, -19187230, 6488085, -14259828, 5421860, -8016557,
--12081206, 20774756, -11044508, -3278671, -10775536, 10004053, -12292196, 8853538, -4393752, 16214575,
-14330158, 411243, -22090628, 18528488, 8612483, -22514756, 6648610, 22591528, -2818572, -747861,
-10036802, -7805566, 15643882, 14012868, -20364050, -12866648, -4364224, 9507984, 17974976, 2457258,
-9200357, 20246476, 15065672, -23132156, -3141769, 34393560, 7963406, -3299072, -4933844, -7616588,
--11143293, 2118493, 7879118, 8620536, 8192650, -7371775, -15875810, 2967286, -8647380, 7158637,
-23562728, -7647190, -25311852, 28091770, -9681393, -17402134, 22869628, -5594195, -7967701, -26782880,
--5488968, 9063455, 4066260, -7037841, -11705396, 8214662, 27917, -13471702, 9031242, -4171487,
-22050362, -18985902, 1241246, -5417028, 25288768, 6782290, -39045012, 9349070, -17212618, -9342091,
--15086073, 13266080, 52155936, 16267189, 1022739, 8507256, 13100724, -24617678, -12135967, -11542725,
--18232674, 1578937, -8247411, -28573344, -12178917, 1953136, -11628624, -35951024, 31143344, -5980742,
-14012331, 2668249, -16531329, -28345174, -27383638, 30680562, 18612240, 7067906, -10871099, -20463372,
--15428059, -24298778, -6329708, 9136469, -3866008, 2054068, 3802120, -3922379, -12702903, -12044162,
--20792474, -7333120, -4076998, 10282689, 6997039, 11306501, -5662915, -9135932, -4002373, 14768245,
-1955284, 13106630, -43409236, -10022843, -199716, 9686762, -13958644, -399969, -16143171, 12750684,
-10852845, 2356327, 53270480, 1118839, 16506633, 22294102, 739808, 7430831, 102005, -3490198,
--6680822, 11480448, 16000901, 21720186, -774168, -3533148, 1141924, 14529337, 12363063, 1074279,
-9939628, 9618042, 6571300, -1989107, 20607790, -4970888, 26693758, -25281252, -12634183, 21793200,
--2239826, 2401424, 6841346, -26256208, 2659122, 5497022, 18969796, 28177670, -21203180, 6543920,
--12821014, 20524574, 18712098, 3703336, 34556768, 11842835, 14647986, -10531797, -467615, -19587198,
-34516504, -17679696, 6628209, 21750252, -3352759, -11477226, 11668352, -1445793, 6618008, 23235774,
-2009508, -5357435, -557809, 5593658, 751082, -11360725, 10972031, 282931, -2228551, 38570952,
--27062052, 28315646, 18726058, 34954056, 15041512, -22179212, 19709604, 1834488, 18405546, 45512156,
--30404610, -11747809, -2720862, 2251100, 31316754, -16413754, 2898566, -17770428, 2817499, 35044248,
--2514167, 36250596, 11137387, 7099581, 17145510, -20432234, -2407866, 16229608, 22844932, -34877820,
--416612, -30194694, 14122926, -16363825, -755914, 4440996, -6881612, -22272090, 5163625, -38339564,
--34005404, -265214, -481573, -21741124, 16094316, 4249334, -6741488, -20164872, 25494388, -6814503,
-38422240, -6369437, 7385197, 13684840, -20392504, -6959458, 4822712, -23430120, -14146012, -20522428,
-15937013, -16505022, -5684389, -5688148, 13550622, -13919989, -24266028, -32246078, -2379949, 26207354,
-96637, -14908368, -7763691, -18765786, -7784628, -60130, 9436580, -21034066, -4004520, -4691715,
--16586627, -20605106, -788127, 3349538, 11435887, 4502737, 20904680, 6311992, 26814018, -11958263,
-21744346, -5983963, -20575578, -4733591, 36468568, -16534550, 15382962, -12055436, 26014080, -14789183,
-7136625, 18174154, -3640522, -7195144, 654446, -10043781, 22671522, -23445690, -12475806, 25720412,
--7735773, -21833466, -34378528, 40499932, -11716671, 34652868, -5603322, 28063316, 3650722, -7166153,
--16910360, -11762305, -964220, 1587527, 21196200, -6336688, 9664, 6801081, -16369194, 30090004,
-12419972, 2196876, -22193170, 17452600, 10292889, -17928804, 20330228, 2696166, -1144609, 5753109,
-1252520, 25488484, -3717294, -29693794, 35138740, -16103443, -707059, 25692494, -8848170, -4401805,
--12642236, 39948028, -15284178, -3845070, -22122840, -3775813, 5302137, 35782448, -13901199, 7495255,
-13598403, 21642878, -2842732, -21174188, 26794154, 15524159, 22387518, -8634495, -1703491, 3366718,
-24794310, -11119133, -22082574, -27466852, 18627274, -18985366, 8863202, 22039624, 23752242, -13019120,
--270046, 29313152, -40489732, -335007, 12022687, 16415365, 4967130, -15828565, 7624641, 14169097,
--7047505, -8139500, -49744848, 17650704, 10366440, 45369888, 39897024, -5322002, -13919989, -45749456,
-1963337, 15947214, -19176492, 15573551, 27698244, 26780732, -11570105, 32133334, 28985124, 1779190,
--16449725, -17918066, 29598768, 25142738, -34495568, -47568372, 64411088, 3678103, -3826279, 8722542,
-5415417, 23982560, 24205362, -9134859, -7337415, 33503430, 16505022, -5669894, -21360482, 13638669,
-3380676, 2013266, 12556874, 1852742, -307090, -13094818, 8172249, -3845070, -15507516, 29904784,
--46731928, 33140504, 28199682, -44969920, -2400887, 22839562, 6506339, 25997438, -5415954, 3439732,
-24651502, -3495030, 12913356, -22629646, -34454228, 98229664, -39808980, -57671748, -11855720, 108995536,
-48041892, -48391396, -10208064, 17453136, 13739600, -3260954, 5078799, -21767968, -14567455, 22674206,
-40689984, 940598, 68997040, -33596844, -14368276, 39323108, -207769, -4291209, -23516556, -44348220,
-32974612, -23985244, -26381300, 16472273, -29049548, 11476689, -27682674, -29810832, -7093139, 4454418,
-1599875, -8255464, 31341986, 6862284, 18164490, 8339753, -1843078, -958315, -17670032, -33818036,
-7921531, 30942556, -28834262, 21265994, -29351270, -4024384, -3935264, -42753716, 27157616, -15483894,
-9076340, -155693, -14696304, -160524, -32532766, 30150670, -24210730, 9694278, -37431712, -21786222,
--48317308, 17022566, -23803246, -24321862, -21791590, -9997610, -2152852, 49192408, 15426449, 24754580,
--8609799, -21960704, -30651034, 8977019, 360777, -47995184, -24179592, -85119808, -41544680, -30404610,
--4114579, -35276176, -28342490, -12128451, -50575388, 11518029, 17185238, -43621300, 23469312, 4661650,
--13267691, 2541010, -13025562, -1192390, 8513699, 12773770, 21306260, -25968446, 1554778, 30412664,
--4424890, -14030584, 25957708, -11490111, 653909, -15544024, -7852274, -31461710, 6932614, 1465658,
-16594143, -11867532, -274341, 23406498, -12381317, 1343788, 21416854, -44537736, 1032940, -51033876,
--18667002, -33681672, 25763362, 11308112, -4350265, 13276818, -12686797, 14477798, 32920924, 11384885,
-52384644, -28727426, -38147900, 34628712, 5750961, -21494164, -25661356, -6600828, 16845936, -16812112,
--4509179, -13924284, -25878788, 16092706, 11700028, -28991030, -23645406, 31950262, -5626407, 14265734,
--11708618, 20253456, 549219, 33840584, -23523536, -5762773, -941672, 14271103, -17768816, -19808390,
--33610268, -68267432, -33965676, -12776454, 30289720, 39353712, -74512848, 13173738, -29392072, -40307196,
--7985955, 47108812, 30302604, 25795574, -15786689, -17814450, -21217138, 23867134, 17050484, 36695128,
-5146445, -47156056, -18161806, 35827008, -5063767, 10655277, 32313724, -15047418, -21659520, -34455840,
--34266324, 408559, 23065048, 49016852, 36618356, 24154896, 10288057, -49778136, -52737904, 18782428,
--36223216, 8842801, 47403556, 18820010, 3703336, -23498840, -41911364, -7113003, -17741436, 14406931,
-11656541, 8118562, 29978334, -4428112, -5089536, 7880191, 21951040, 34743600, 36472864, 12302397,
-32568200, 10880226, 12138651, -6876243, -35048008, -13889387, -14788646, -29164976, 22798224, 20768852,
-16071768, 15403363, -6103686, -35037268, 6367826, 10772315, 22659174, -58883464, -119946624, -61222612,
-13183402, 48826260, 116933704, 114446384, 48501992, 49521508, 35940824, 3310883, -56119652, -96050504,
--145488800, -42412264, -60047936, -9261560, 61351996, 108294376, 91242288, 80778672, 45124000, 457414,
--26587458, -36093832, -6642704, -63561220, -50235548, -47605956, -30758946, -24950538, -10870025, -883690,
-23743116, 54107460, 55613920, 54740968, 40393092, 52207476, 28286654, 30449708, -8179229, -746787,
--22662932, -61596812, -89894736, -108844672, -52094732, -20172388, 18412524, -1558536, 12882754, 26862336,
-34716756, 72668160, 83598320, 110351128, 70810592, 8066486, 32920924, -15590194, -59322088, -52022792,
--104138464, -122025392, -90854664, -56443924, -23813984, -19519016, 44277356, 48636208, 137714912, 110370456,
-80819472, 74236896, 30403000, -27915676, -35465156, -21523692, 0, 0, 0, 0,
-0, 0, 0, },
+-1763621, 2601677, -6839736, -655519, -2604361, 3244848, 589484, -2800856, 4190278, -3695819,
+-930934, 3333968, -1308891, 1451162, -5663452, -995359, -713501, -5924908, 752156, 81068,
+-200253, 1653562, -2985002, 703301, -1089311, -380105, 6172405, -674310, -4259534, -2035278,
+409633, 1458141, -4109747, 1070521, -3109020, -68719, -1196148, -1873680, 3390340, 3307125,
+-2367064, 4380867, 4456029, -5549635, -933082, -586263, -5206037, -2241436, -3605088, -4102768,
+912144, 989453, -512712, 469225, 1952063, 2110440, -1163399, 671089, 1888712, 5239860,
+3013457, 2350421, -2647847, 233002, -1479616, 3271155, -3713536, -2676838, 2877091, -1714229,
+3119220, -3618510, -1782411, -1217623, -2197950, -12145094, 4277788, -6987912, 3518115, -4013110,
+-8071318, -13798119, 2222646, 246961, 3249143, 2863670, -1135482, -1152125, 843961, 8098698,
+-6042482, -10588705, 3272765, -4459250, -7192460, -9664, -1238561, 4197257, 1346472, 2962991,
+-3343095, -898185, -2261837, 6912750, -2115808, -2944200, -2703145, -1336272, -1899986, -2910377,
+-2695629, -1810866, 1185411, 522375, 712965, 175557, 1621887, 2928094, 1307281, -2695629,
+-8137353, -107911, -5720360, 787053, -579821, -2510945, 3344706, 260919, -176631, -7861401,
+-3427384, 1122060, -814433, 2852395, 11811, 2581275, -2477123, 1182190, -1169305, 5086315,
+-1889786, 2837363, -4506495, -3996467, -5609228, 721018, -1381369, -1007707, 27917, -1096290,
+-8615168, -1817845, -1160715, -2482491, -1127429, -2987150, 2816425, -1222455, -1016297, -313533,
+49929, -248034, -2071248, 7518877, 4888747, 7856569, -3712462, 7813620, -4671314, -3384434,
+3092377, 8651138, -169114, -5419712, -7807177, -5748277, -1047972, 6118181, 2493766, 1982664,
+2817499, -2880849, 4301947, 397284, 3234110, -1699196, -7074885, 1786706, -4868346, -3548180,
+-3387656, -995359, -8980240, -597000, 521302, -3972845, 8571144, -1797444, -2629057, -3602404,
+32212, 730144, -3503620, -86436, -4315906, -1891933, 268435, -2057826, 6246493, -39192,
+-1471563, 3180423, 2371359, 5406290, 2467459, 6545530, 1890859, 5310190, -6078453, 1414118,
+5340255, -1944010, -4175782, -6402186, 337155, -589484, 9738838, -4378183, -3364570, 1005022,
+-2136209, -1576253, 4896263, -3754875, 4714264, 2187212, 127775, 2430415, -3118146, -2955474,
+-5488968, -5898601, 7842074, 3738232, 2770254, 4224101, -2719788, -1784559, -1998770, 9921911,
+-3809636, 10857140, -353798, -2707440, -2595234, -5680631, -6153615, -7425999, -459562, -1834488,
+1350767, 7269769, -620623, -3334505, -10080288, 401579, 7985418, 11796128, -5532992, 3084860,
+2135673, -2934000, -2692945, 3118146, 11082626, -2599529, 1697049, -897648, -1690607, -984621,
+5257577, 7762617, -5930813, -3105798, 2272575, 10161356, 1545115, 7215545, -6015639, -5359583,
+-504659, -836982, 1792075, 1589675, -450435, 680215, 638340, -2603287, 681289, 3255048,
+1724429, -2112050, 15670725, -11256572, -2711735, -4844723, 958851, 3963718, 7374459, -7947837,
+4962298, -2287607, -8400956, -13400835, -2983392, -5858873, 632971, -1539746, -5847061, -3121904,
+2754148, 2947958, 9945534, 5398774, 4905927, 245350, 1309428, -5607617, -3914863, 7941932,
+5986648, 3983045, 1658394, 3649112, 514322, -272194, -7218230, -10046465, 6169721, -2913599,
+-6902550, -3448322, -4476967, 3150896, -3993783, 7932268, 1534377, -5118528, -2709588, -4013647,
+-3563212, 3666828, 5666673, -911607, 3671123, -3411815, -3792993, -404801, 360777, -3655554,
+-1728724, 4294431, -452582, -2490007, -2891587, 2040110, 2319282, -986769, 2873333, -204548,
+-3184182, 7459285, -1976222, -33286, -559956, -11128797, 2619930, 1434519, 2905546, -10460393,
+3233574, 537408, -2796561, -5540508, 2922188, -5277441, -614180, 10267119, 15355045, 7764227,
+8638253, -199179, -3704409, 6580427, 5960878, 2742337, 3390340, 7764227, -639413, 5756867,
+5635534, 8038032, 7765838, -5585068, 5357435, 17180, 2178085, -5179194, 2161442, -347892,
+5464809, -1539209, -946503, -3545496, 4112968, -5717139, -4485557, 883690, 5738613, 3256659,
+-2673617, -1257889, -475668, -1714766, 3682935, -6974490, 7282117, 339302, 8943733, -11578695,
+1385664, -10397579, -2839510, -3076270, 3507378, -781684, -1859721, 2695092, 1502165, 3220152,
+5284421, 7930657, -279710, -5845988, 2017561, 10530186, 2838437, -2766496, 33823, 6482180,
+-2505577, 3891777, -2349347, -11174431, 7175280, 5856188, -16491064, 173409, -3750043, 1409823,
+-9298604, 1028645, 1382980, 12076911, -9871445, 44560, -13201656, 2902861, -8043400, -1988570,
+317291, -4334159, 3603478, 1618129, -7014756, 80531, -292058, 6280316, -4328254, 10146860,
+-329639, -8853001, -4719632, 10812580, -1267552, 4321274, 2648921, -1799054, 6234145, -7175280,
+-7041062, -5278515, 474594, -6860674, 7021735, -4009889, 4392678, -6632503, -380105, -8057359,
+4992363, 738198, 6029061, 5712844, -5726265, 10718628, 8749922, 8642011, 1324997, 9076340,
+7027104, -7613367, 6163278, 3195456, 169651, -7057705, 2816962, -5995238, 5513128, -2541547,
+-5299990, -519154, 8392903, 3249143, -10928544, 9889162, -1499481, -3428995, -6694244, 10041097,
+7636452, -7522635, 5492727, 23822572, 4419522, -490700, -7612830, -14704357, 4318053, -1791001,
+-21775484, 19941534, -8990440, -13668733, 3443490, -462246, 3094524, -472446, 4252555, 6063957,
+552440, 82141, -10877005, -501974, -587874, 13839458, -1949915, 794032, 5435818, -1902671,
+-1135482, -5000416, 11962021, -8128226, 8798777, -1581622, -6309844, 1744831, -7106024, -3428995,
+-11874511, 2663954, 6298570, -2887292, -5608154, -4430259, 8141648, -11173894, -2119566, -5252745,
+498216, -1163399, 2204392, -9600863, 10572062, -13285944, -8704288, 4292283, 2447595, 35970,
+4510253, -6589017, -9445707, 1877438, -1882806, 151934, 6048925, -5508833, 5654862, 3890167,
+12538620, -2405182, 2922725, -57982, 1631551, 16701517, 3063922, 16745004, -1469953, -4104378,
+-17732846, -2819109, -4076461, -14479408, -24554864, 6832219, 11839614, -9329206, -4833449, 6497212,
+-3203509, 14393509, -2290291, -8500814, -5388574, -22848690, 6904697, 2011118, -2689723, -16188269,
+3044595, -9218610, -2974802, -8145406, -4606890, 10670309, -11397769, 4143033, -16553878, 9681930,
+1294933, -251256, -5312338, 753230, -2827699, -9291088, -17457432, 2812130, -767725, 3156264,
+6175626, -4458176, -2178622, -11124502, -6387153, -3257733, 3646427, 2701535, 6979322, 12272332,
+8909373, 4736812, 6525666, 1961190, 6795712, 6754373, -8003135, 7801271, 7963943, -2153926,
+10988137, -1526324, 13015898, -6579890, -16916266, -2709588, 8231305, 10700374, 10649908, -2486786,
+-23612120, -2160369, -3571265, 964757, -3718905, -4843113, -955093, 22950694, -5051419, -5491116,
+7635915, 12381854, -914828, 5788542, 14264660, 10384157, -23541252, -21523154, 108985, -2006824,
+3084324, -9569187, -17230872, 4154307, 13626321, 9169755, -10073309, 16262894, 12914430, 12367895,
+-20745766, 5948530, 10619844, 681826, 1447404, 9325448, 20995410, -3957276, -9929428, 6583111,
+4552666, -2733210, 11186779, 17278654, 2895882, 17900886, 7425999, -13132936, 1148904, 14886894,
+-1967095, -5848672, 7207492, 1425392, 2456185, 15634755, 9433896, 5459441, 1318018, -17702782,
+-18807124, -1303523, 2295123, 4999342, -6279779, -554051, -5421323, 1854889, 1513439, -6570226,
+1755031, -3911642, -1983201, -5497558, -361851, 11755325, -7885560, -16064788, -3876745, -13501767,
+1552094, -4297115, -2267206, -695248, -39738112, -25316148, -8667781, 5553930, -3790309, -10968810,
+263067, -10721849, 25366076, -12263742, 15739445, 25078850, 12871480, 11649025, -11853573, 7986492,
+-6648610, -13674102, 9170292, 11091753, 6738804, 16443282, -1444720, -2325188, -9450539, -9470403,
+-8485782, -12513924, -12431246, -8830453, 2535641, 91805, -1734630, -8398272, -5465346, -12190191,
+2819646, -10726144, -10153840, -5208722, 2801393, -1488743, -7444789, -17119202, 122407, -6091338,
+3898757, -19949050, -16124918, 14740865, -4315906, -4622459, -9373229, -6102075, 10249939, 2421288,
+-4459250, 5127117, -3801583, 5377836, 3479461, 6334540, -7745974, -10933913, -25631828, 4295,
+-24976308, -3205656, -21529598, -4463545, 15978352, -3985730, 940061, -14641007, 26851598, 958851,
+-18617072, -15786152, 17067126, 13370233, -11693585, -11450920, 22754736, 14442901, 1399086, -12859669,
+2198487, -5253282, 11155104, -7916162, 1903744, -3233037, -1749125, 23148800, -2549063, -6076842,
+4974109, 4047470, 7600482, 7200513, 1539746, -8977019, 7636989, 3515431, 8657580, 17761838,
+8948027, -25579752, -6474663, -4227859, -18705120, 7474854, -2519535, 259309, -10009958, 9032853,
+-3325915, 1533303, -13252658, 9340480, -10609106, 620086, 12339978, -2211908, 12976170, -9820980,
+15954193, -19710678, 10573136, -361314, -5937256, 24463596, 7676181, -5966784, -14017163, 5677947,
+-2141041, 1116155, -1379221, 8111046, 14539538, 17235704, -10955925, 6883759, -4063039, 14863271,
+6354941, 384936, -1731946, 7408282, 0, -9709310, -38216620, -24671902, 20824148, -14958297,
+-14086956, 8177081, 18220862, -29573534, -4836133, 7364795, 2025077, -15287936, -23242216, 44109316,
+-18814642, 6267968, -21416318, 12174085, -7434589, 20841866, 18234284, 2216740, 3244848, -23935852,
+-27380, 11927661, -9869835, -14064944, 11511049, 3733937, 12399034, 10378252, -2115808, 4669703,
+-2802466, -1002338, 18260590, -15014669, -9256191, 15317464, -707059, -11130945, 15452219, 201863,
+-3555696, -9811316, -4793184, 6497212, -8381092, -146029, 5304822, -9604084, -10891500, -6074695,
+7687992, -21722334, 10605885, -35433, 21320754, -19187230, 6488085, -14259828, 5421860, -8016557,
+-12081206, 20774756, -11044508, -3278671, -10775536, 10004053, -12292196, 8853538, -4393752, 16214575,
+14330158, 411243, -22090628, 18528488, 8612483, -22514756, 6648610, 22591528, -2818572, -747861,
+10036802, -7805566, 15643882, 14012868, -20364050, -12866648, -4364224, 9507984, 17974976, 2457258,
+9200357, 20246476, 15065672, -23132156, -3141769, 34393560, 7963406, -3299072, -4933844, -7616588,
+-11143293, 2118493, 7879118, 8620536, 8192650, -7371775, -15875810, 2967286, -8647380, 7158637,
+23562728, -7647190, -25311852, 28091770, -9681393, -17402134, 22869628, -5594195, -7967701, -26782880,
+-5488968, 9063455, 4066260, -7037841, -11705396, 8214662, 27917, -13471702, 9031242, -4171487,
+22050362, -18985902, 1241246, -5417028, 25288768, 6782290, -39045012, 9349070, -17212618, -9342091,
+-15086073, 13266080, 52155936, 16267189, 1022739, 8507256, 13100724, -24617678, -12135967, -11542725,
+-18232674, 1578937, -8247411, -28573344, -12178917, 1953136, -11628624, -35951024, 31143344, -5980742,
+14012331, 2668249, -16531329, -28345174, -27383638, 30680562, 18612240, 7067906, -10871099, -20463372,
+-15428059, -24298778, -6329708, 9136469, -3866008, 2054068, 3802120, -3922379, -12702903, -12044162,
+-20792474, -7333120, -4076998, 10282689, 6997039, 11306501, -5662915, -9135932, -4002373, 14768245,
+1955284, 13106630, -43409236, -10022843, -199716, 9686762, -13958644, -399969, -16143171, 12750684,
+10852845, 2356327, 53270480, 1118839, 16506633, 22294102, 739808, 7430831, 102005, -3490198,
+-6680822, 11480448, 16000901, 21720186, -774168, -3533148, 1141924, 14529337, 12363063, 1074279,
+9939628, 9618042, 6571300, -1989107, 20607790, -4970888, 26693758, -25281252, -12634183, 21793200,
+-2239826, 2401424, 6841346, -26256208, 2659122, 5497022, 18969796, 28177670, -21203180, 6543920,
+-12821014, 20524574, 18712098, 3703336, 34556768, 11842835, 14647986, -10531797, -467615, -19587198,
+34516504, -17679696, 6628209, 21750252, -3352759, -11477226, 11668352, -1445793, 6618008, 23235774,
+2009508, -5357435, -557809, 5593658, 751082, -11360725, 10972031, 282931, -2228551, 38570952,
+-27062052, 28315646, 18726058, 34954056, 15041512, -22179212, 19709604, 1834488, 18405546, 45512156,
+-30404610, -11747809, -2720862, 2251100, 31316754, -16413754, 2898566, -17770428, 2817499, 35044248,
+-2514167, 36250596, 11137387, 7099581, 17145510, -20432234, -2407866, 16229608, 22844932, -34877820,
+-416612, -30194694, 14122926, -16363825, -755914, 4440996, -6881612, -22272090, 5163625, -38339564,
+-34005404, -265214, -481573, -21741124, 16094316, 4249334, -6741488, -20164872, 25494388, -6814503,
+38422240, -6369437, 7385197, 13684840, -20392504, -6959458, 4822712, -23430120, -14146012, -20522428,
+15937013, -16505022, -5684389, -5688148, 13550622, -13919989, -24266028, -32246078, -2379949, 26207354,
+96637, -14908368, -7763691, -18765786, -7784628, -60130, 9436580, -21034066, -4004520, -4691715,
+-16586627, -20605106, -788127, 3349538, 11435887, 4502737, 20904680, 6311992, 26814018, -11958263,
+21744346, -5983963, -20575578, -4733591, 36468568, -16534550, 15382962, -12055436, 26014080, -14789183,
+7136625, 18174154, -3640522, -7195144, 654446, -10043781, 22671522, -23445690, -12475806, 25720412,
+-7735773, -21833466, -34378528, 40499932, -11716671, 34652868, -5603322, 28063316, 3650722, -7166153,
+-16910360, -11762305, -964220, 1587527, 21196200, -6336688, 9664, 6801081, -16369194, 30090004,
+12419972, 2196876, -22193170, 17452600, 10292889, -17928804, 20330228, 2696166, -1144609, 5753109,
+1252520, 25488484, -3717294, -29693794, 35138740, -16103443, -707059, 25692494, -8848170, -4401805,
+-12642236, 39948028, -15284178, -3845070, -22122840, -3775813, 5302137, 35782448, -13901199, 7495255,
+13598403, 21642878, -2842732, -21174188, 26794154, 15524159, 22387518, -8634495, -1703491, 3366718,
+24794310, -11119133, -22082574, -27466852, 18627274, -18985366, 8863202, 22039624, 23752242, -13019120,
+-270046, 29313152, -40489732, -335007, 12022687, 16415365, 4967130, -15828565, 7624641, 14169097,
+-7047505, -8139500, -49744848, 17650704, 10366440, 45369888, 39897024, -5322002, -13919989, -45749456,
+1963337, 15947214, -19176492, 15573551, 27698244, 26780732, -11570105, 32133334, 28985124, 1779190,
+-16449725, -17918066, 29598768, 25142738, -34495568, -47568372, 64411088, 3678103, -3826279, 8722542,
+5415417, 23982560, 24205362, -9134859, -7337415, 33503430, 16505022, -5669894, -21360482, 13638669,
+3380676, 2013266, 12556874, 1852742, -307090, -13094818, 8172249, -3845070, -15507516, 29904784,
+-46731928, 33140504, 28199682, -44969920, -2400887, 22839562, 6506339, 25997438, -5415954, 3439732,
+24651502, -3495030, 12913356, -22629646, -34454228, 98229664, -39808980, -57671748, -11855720, 108995536,
+48041892, -48391396, -10208064, 17453136, 13739600, -3260954, 5078799, -21767968, -14567455, 22674206,
+40689984, 940598, 68997040, -33596844, -14368276, 39323108, -207769, -4291209, -23516556, -44348220,
+32974612, -23985244, -26381300, 16472273, -29049548, 11476689, -27682674, -29810832, -7093139, 4454418,
+1599875, -8255464, 31341986, 6862284, 18164490, 8339753, -1843078, -958315, -17670032, -33818036,
+7921531, 30942556, -28834262, 21265994, -29351270, -4024384, -3935264, -42753716, 27157616, -15483894,
+9076340, -155693, -14696304, -160524, -32532766, 30150670, -24210730, 9694278, -37431712, -21786222,
+-48317308, 17022566, -23803246, -24321862, -21791590, -9997610, -2152852, 49192408, 15426449, 24754580,
+-8609799, -21960704, -30651034, 8977019, 360777, -47995184, -24179592, -85119808, -41544680, -30404610,
+-4114579, -35276176, -28342490, -12128451, -50575388, 11518029, 17185238, -43621300, 23469312, 4661650,
+-13267691, 2541010, -13025562, -1192390, 8513699, 12773770, 21306260, -25968446, 1554778, 30412664,
+-4424890, -14030584, 25957708, -11490111, 653909, -15544024, -7852274, -31461710, 6932614, 1465658,
+16594143, -11867532, -274341, 23406498, -12381317, 1343788, 21416854, -44537736, 1032940, -51033876,
+-18667002, -33681672, 25763362, 11308112, -4350265, 13276818, -12686797, 14477798, 32920924, 11384885,
+52384644, -28727426, -38147900, 34628712, 5750961, -21494164, -25661356, -6600828, 16845936, -16812112,
+-4509179, -13924284, -25878788, 16092706, 11700028, -28991030, -23645406, 31950262, -5626407, 14265734,
+-11708618, 20253456, 549219, 33840584, -23523536, -5762773, -941672, 14271103, -17768816, -19808390,
+-33610268, -68267432, -33965676, -12776454, 30289720, 39353712, -74512848, 13173738, -29392072, -40307196,
+-7985955, 47108812, 30302604, 25795574, -15786689, -17814450, -21217138, 23867134, 17050484, 36695128,
+5146445, -47156056, -18161806, 35827008, -5063767, 10655277, 32313724, -15047418, -21659520, -34455840,
+-34266324, 408559, 23065048, 49016852, 36618356, 24154896, 10288057, -49778136, -52737904, 18782428,
+-36223216, 8842801, 47403556, 18820010, 3703336, -23498840, -41911364, -7113003, -17741436, 14406931,
+11656541, 8118562, 29978334, -4428112, -5089536, 7880191, 21951040, 34743600, 36472864, 12302397,
+32568200, 10880226, 12138651, -6876243, -35048008, -13889387, -14788646, -29164976, 22798224, 20768852,
+16071768, 15403363, -6103686, -35037268, 6367826, 10772315, 22659174, -58883464, -119946624, -61222612,
+13183402, 48826260, 116933704, 114446384, 48501992, 49521508, 35940824, 3310883, -56119652, -96050504,
+-145488800, -42412264, -60047936, -9261560, 61351996, 108294376, 91242288, 80778672, 45124000, 457414,
+-26587458, -36093832, -6642704, -63561220, -50235548, -47605956, -30758946, -24950538, -10870025, -883690,
+23743116, 54107460, 55613920, 54740968, 40393092, 52207476, 28286654, 30449708, -8179229, -746787,
+-22662932, -61596812, -89894736, -108844672, -52094732, -20172388, 18412524, -1558536, 12882754, 26862336,
+34716756, 72668160, 83598320, 110351128, 70810592, 8066486, 32920924, -15590194, -59322088, -52022792,
+-104138464, -122025392, -90854664, -56443924, -23813984, -19519016, 44277356, 48636208, 137714912, 110370456,
+80819472, 74236896, 30403000, -27915676, -35465156, -21523692, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
9789841,
--1864016, 2947421, -306553, 3818763, 4725538, 3293166, 5990406, -3674882, 6475200, -2181307,
-875636, -6014028, 281320, -6265821, 1365263, 1100049, 522375, 174483, 2330020, -3340948,
--3968013, 3262028, -300111, 2494839, 1482838, -551366, -2729989, 521839, 4961761, 3034931,
-1607928, 1927367, 1483911, 545998, 1794760, -394063, 240518, -393526, 5630166, -1161252,
-2926483, -2091112, 2488934, 6615860, -1755031, 6193343, 947577, -2611877, 1844689, 2766496,
--891743, -1075352, 175020, 4693326, -1481764, 1498407, -869731, 2983929, 1248762, 4070019,
--1354525, -280784, 1573569, -1611687, -3324305, 630823, -1086627, -423054, -1306744, 2673617,
-426276, 1686848, -788127, 3610457, 1846299, -4569845, -7105487, -5182952, 1995012, -814970,
--12140262, -6931541, -526134, 1693291, -3725884, 1229971, -4490925, 826781, -3235721, 8457864,
--6913287, -3111704, -3018288, 5356898, 3788161, 8596377, 2335389, 1721745, -3911642, 4005057,
-583042, 1017370, -415001, 3186329, 4577899, 233002, 4570919, 4151086, -1979443, 2268280,
--2431488, -2942053, 426812, -2431488, 1563368, -3749507, -6425271, 1632625, 2480344, -1768453,
-1975148, -3277060, 3113851, 3868155, -6749004, 1193464, -194884, 2441152, 2428267, 194347,
--6616934, -2224256, -2770254, 2085744, 170725, 500364, -1921998, 1073742, -3210488, -28991,
-4124779, 2224256, 610422, -2153926, 1649804, -5806259, -2698850, -4330401, 1250372, 468151,
-274341, -13818520, -255014, 932545, 387621, 2494302, -4759361, 3826816, 2222646, -2398739,
--8167417, 5690295, 5812165, -1125281, 4865661, 3586298, -4450660, 9401147, 2091112, -3955128,
-5116917, 565862, 4791573, 891206, -7838316, 3259880, -1347546, -2746632, -2940442, -2210835,
-5414343, 4290673, 498216, 4482335, 1708323, -3788161, -4809290, -217433, -994822, 2383170,
-1625108, -3669513, 1104344, 2289218, 2097018, -3186329, -2714419, -4299263, -1427003, -870268,
-1090385, -842887, 6300180, 2902861, -767189, -2812130, 1332514, 2848100, 1509681, 6900939,
--904628, 3641596, -190589, -1832877, -3795677, 3173981, -687732, -1488743, 4096862, -801548,
-1532230, -443992, -541703, -3992172, 1241782, -758599, 5433671, 6923488, -1174137, -2627983,
--4140885, -9513353, -5695664, -2055679, 6832219, 898722, 1264331, 4209605, 1113470, 1830193,
--10000831, -9133785, -5863704, -1500017, -64961, 4263292, -3027952, 3349001, -1748589, -6111739,
-1883880, -849330, -4262218, -9127, 5866389, 8665633, 3847754, -3865471, 2253784, 355945,
-6140193, 60666, -4996658, -70867, -2945811, 6203544, 2596845, 2976949, 6097243, -937377,
-375273, 8422431, 7157026, -117575, -117575, 738198, -546535, 2388539, 513785, -5830955,
--8108899, -2604361, -1120450, 270583, -2763812, -8657043, -1063541, 2772402, -4984310, -2040646,
--3295851, -2334852, 810138, 1562294, 2800856, -5746666, -5134634, 5349919, -2197413, -434329,
-809064, 434329, 2928094, -4901632, 12635794, -5000416, -3981972, -731755, 112206, -4879083,
--62277, -3449933, 6026376, -1617055, -7683697, -10677289, -2813741, -7115687, 9643812, 667331,
-6815040, 5699959, -9341554, -649077, 3779034, 2673617, 4812511, 779537, -694711, -976568,
-2204392, -3204583, 3428995, 1804423, -3396782, 1890859, 48855, 2229088, 5197448, -3017752,
-2002529, -498753, 2924336, 2440615, -1189706, 3421478, -1123671, 2949032, -2495376, 2668785,
--7595650, -3367254, -2845953, 1915019, 6358699, -4951561, -3259880, -1957431, 273804, -2381023,
--2992519, -1733019, 2493229, 1905355, 3612068, -1465121, 1996623, -2430952, -2466385, -442919,
--1544041, 2371359, -187368, -4114042, 2041720, -2450279, -4008278, -1512365, -2538326, 1838783,
--2742337, 1909113, 3089692, -1550483, 4817343, -8179765, 3308199, -4989679, -5470715, 7422777,
-2619393, -9302362, 708670, -194884, 2496450, -6768332, -4400731, -824634, -5507222, -9880572,
--9545565, -6409165, -9526237, 3732327, -1195612, 1145683, 4811437, -8435316, 5157719, -2580739,
-2296734, 1382980, -1052804, 562641, -1401770, -1460826, -5543192, -3481071, 6736120, -2863133,
--6002754, -5627481, -735513, -2702608, 1950989, -5408438, -8093329, 876173, 7108171, -1454920,
-4225174, -2885681, 2207613, -4300873, 2775086, 840203, -5593121, 7515656, 1204202, -2088428,
-1647120, 6831683, 6518687, 3051574, -908922, -8638253, -1549410, -7334194, 1787243, -2115272,
-993748, 455803, 1797981, -7000260, -52613, -1541356, 3178813, 4478041, -9588514, -9213779,
--6179921, -10092636, -11841225, -11330124, 3996467, 4395362, -7472706, -2415919, -6814503, -10807211,
-4922033, -3272228, -9409736, 2449205, -1146219, -149250, 361851, 2406256, 452582, -927713,
-1752347, 2455111, -5625334, -5514738, -1843615, -6592238, -943819, -6988986, -11534672, -1501091,
-6158446, -8607651, -6624987, 3690988, -4714801, -136365, 1194538, -4750234, -3813931, -4127464,
--12366821, -5790153, 2057826, -4044786, -4424890, -8134668, 2852932, 6025839, -2902324, 9646497,
--6189048, -3342558, -534187, -3139084, -9194988, -1264868, 1501628, -936303, -2332167, -8244727,
--1760937, 6844031, 3249143, 1576790, 3335042, 2154463, -2551748, 13700946, -5138392, -6152004,
--6036577, -6934225, 1567663, 7526930, 16297790, 11161009, -212601, 10201621, -539555, 1688459,
-2217277, -5227512, 9404905, 300648, 8348880, 7867307, -5858873, 10147397, 516470, -7446400,
--12170864, 11599633, 5941551, 11509975, -9138617, 6650220, 3958349, -10409390, -9950902, -6065568,
--2507724, 11031623, -9993852, 9296457, -431644, -1010928, 7143068, 6292127, 9056475, 3137474,
--4179540, 4151623, 8568997, -4933844, 8581345, 12167105, 5750425, 7333120, 3644817, 1981054,
-2659659, 174483, -6078990, 2299955, 1279900, 302795, 6236293, -4180614, 3986804, 3515968,
--975494, 10423886, -5598490, -4096862, -1726577, 8913668, -972810, 7278896, 4582730, 4780299,
-5376762, 497142, -12262132, -2441689, -9635759, -6100464, 14470282, 6711424, -5043902, -507343,
--14057965, 8912057, 8549669, 25281788, 1002875, 2214056, -1260036, -3434363, -1647120, 8576513,
-7783555, 6819871, 9812927, 4021700, 15495705, 4579509, -6158446, 1526324, 13496398, 5382668,
-1349157, 2146947, -6976638, -9949829, 6380174, -4916664, -9826885, -20691004, -366146, 8303246,
--673236, 4918812, -7225746, -3749507, -2728915, 1603097, -2321430, -6164889, -3083787, -16650514,
--4409858, -14125611, 1146756, -7423314, 5647882, -8086887, 3047816, -7775502, -2763275, -454730,
-191663, 1240172, 1544578, -10329933, 4972499, -1544578, 2268280, -5406827, 127238, 8257075,
-3323768, 11397769, 6409702, -3539053, -647466, -2437394, -1112933, -2801929, -3553012, -350040,
-4812511, 2797634, 3648575, 1912334, -16167331, 10358387, 27681064, 10270341, -4088272, 13901735,
--8370892, 9832791, 6700149, -12359305, 3197603, -15665893, 795643, -5023501, -10881837, 6526740,
-676457, 5102421, 7129646, 8711804, 13728863, 5988258, -463320, -2965675, -8542690, -15796353,
-6252399, 6827388, 2254858, -5213554, 9276592, 1608465, 9776956, 5983963, -16454020, -5971615,
-2788508, -12009265, 1152662, -426812, -1854889, 4143033, 3275986, -2467459, 13027710, -6747394,
-1029182, 7487202, -5620502, 5295695, -2141041, -7095823, 5641440, 428960, -411780, 7697119,
-5345087, 769873, -3147674, 15416248, 1272921, 8904004, 1467805, -4114042, -4526359, -11953431,
--4163971, 5775658, 360240, 5027796, -691490, -9141838, 4653060, 3834869, -13462038, 4785131,
-8238821, -3202435, -27837830, -8932458, 29995514, 8675834, 5144834, -3969087, -381715, -4052839,
-6431177, -9055402, 13313325, 7907035, 6438156, 6750615, -4210142, 87510, -177704, 4702989,
-9040906, -12530030, -7438884, -3611531, 10262287, 4174171, 5850819, 6565395, -1075889, -8776766,
-3351148, 1353989, 18316962, 14845018, 3979287, 11440719, 816581, -4539244, 2447058, -813359,
--2285996, 7652021, 8725226, 7753490, 17624936, 9172976, 6986301, 8427800, -7815767, -12206297,
--6003828, 6718403, -11011222, -4648765, 10790568, 12331925, 6292664, -4296578, 10118406, -3064459,
-1034550, 3412352, 5717139, -1946694, -6496675, 4740034, -5930276, -16704202, 494458, 7112466,
--10124849, 2765422, -2224793, -788663, -2391760, -3629784, 13734232, 1529545, 6779606, 14075682,
-22425098, -34235184, -5238787, 1489280, -707059, -4581120, -8845485, 8682813, -11215770, -17728014,
--2149094, 16171089, -2786897, -10396505, 2740726, -14321032, -7798050, -86973, 8462159, -15013595,
-1278827, 15012521, 15787763, -263604, 5418101, 13353590, -8293582, -13269838, -17785460, 966905,
--17707614, -4490389, 7174206, 6153615, -15646029, -15399068, -9019968, 5475547, -4226248, -3565897,
--4148939, 13093745, -20786568, -6951942, 3207804, -12095165, -3838090, -905701, -13022341, -369367,
-5484137, -1725503, 17302812, -2215130, -6736120, 355409, -593779, -6786049, 3638911, 7222525,
--7372848, 10741713, -5403606, -23796266, 1724966, -10260677, -3959423, -2310693, -1334661, -31500900,
--3579318, 11191074, 13600551, 4996658, 20577726, 12120398, -1787780, -32168232, 9126269, -5924371,
-11128260, -10261214, 32749, 16921634, -5491116, 24007256, 5677410, 4637491, -10132365, 4536559,
-12070469, -7337952, -1292248, 15472620, 10197863, 11620571, 1866163, -17993766, 11623792, -11661373,
--847719, -7084549, 2017561, -9037148, 5434744, -2472291, 5310727, 4639102, 8840653, 8500814,
-9921374, -11662984, 3010772, 18025440, 4184372, -3557844, -3376918, -9483288, -7108708, -377957,
-969589, 2915209, 15670725, 914828, 8777303, 7770133, -285615, -4412542, -3451543, 13411572,
--16014322, -4139275, -14149770, -12532178, -3081102, -613643, -23958938, 5506148, -7394860, 13957570,
--2891050, -303869, 10418517, 1054415, 24920474, 19362250, 29589640, 9918153, 1138166, -4804995,
--3313567, -6249715, -8935143, 13275744, -3216394, -2234457, 30227980, -5570573, -6044630, 33627448,
-11811, 19396610, 14350559, 1709397, 8250632, -3821984, 6560563, 6369974, 4086662, 5305359,
-15711527, -9865540, 18836116, -9454297, 108985, 4474282, -2073932, -12626667, -11516955, 388695,
--18956376, -5419175, -20751134, -668404, -12173011, -8582955, -6494528, -5195837, 3534758, -16133508,
-20118164, 4006668, -12447889, -8629126, -237297, -1499481, -2769180, 6133750, 3082713, 20486458,
-2601677, 906238, -9541270, 2821257, 4405026, 523986, -10188199, -3256659, 12585865, 14697378,
--367220, -9770514, 5058935, -589484, 17801028, 21073258, -7020124, -3042448, -2988760, 4364224,
--6749541, 10266582, -23224498, 619549, 29392072, -22103512, -11228118, -1165547, -3198677, 2415919,
--16920024, -9085466, -2333241, 13786308, 16502875, 11463805, -9907953, -25944824, 45978700, 11891154,
--28284508, -28309204, -3962644, 7378754, 19766514, -24566676, -4084514, 5097590, -40802, -3159485,
-26458610, 6048925, -15044197, 8638253, 1376000, -287763, 14053133, -2061584, 7802345, -16587164,
--5503464, 30401390, 11322071, 24074366, 7701950, 21813066, 3972308, -7373922, 15239618, 14151917,
-21660594, 11034308, -24011552, -8705362, 5430450, 12999255, -9548249, 4177930, -9206799, -15169288,
-1735167, -1315871, -9231495, 7784628, 10269267, 9315247, 6542846, 6553047, -4525822, 16731045,
--52076, -15565498, -11630235, 15131707, 7952132, -24707874, 11038603, 5112085, 8170102, -21409338,
--15050639, 15016279, 22067006, 13430363, -4471061, 11529840, 21931176, 8823473, 23131084, 4371740,
-10983842, 8269960, 38117836, 51502564, 4686346, 10755135, -31692026, -9749576, 20336670, -15981573,
-39298412, -7152731, 6837588, 10888816, 23353348, 13012140, -4589710, -15884937, -18369038, -5870147,
--2335925, -23601920, -10562935, -9143449, 16273094, -8540542, 5455146, -15031312, 2929705, -5693516,
--21607980, 23730768, 17121350, 19151796, 9208947, -11172284, -10184441, -25901338, 1428614, -23343148,
--6212670, -1779190, 4081830, 12281996, 10506027, -7492571, -4446365, 10143639, 23106388, 6035503,
-9451612, 16192027, -19569482, 14576045, -10695005, -10849624, -19796042, -9218074, 10429254, 7825968,
-2203318, 23970212, -4523675, -9447317, 4367445, 5718749, 33757908, -11894375, 13349832, 11720966,
-31660352, -7801808, 4412005, -14493904, -4347044, -19238232, 14842870, -27574764, 979253, -22238804,
-4073240, 9236327, 3126736, -13379360, 44891000, -3360275, -6396817, 3925600, -26050588, 1304060,
--17718888, 430570, 4536559, -5372467, -951335, 10488310, -9815611, 255014, 13297219, 970663,
-3067144, -22277458, 2412698, -2010582, -1798518, -5742908, -27890980, -15416248, 6342056, 2114735,
-11734924, -31947040, 2998424, -29739964, 14531485, -20321638, -32807644, 16239271, 29276108, 5015448,
-14124537, -22432078, 21553220, -5595269, 2741263, -13799193, 17831630, 7305740, 18523658, 5900748,
-22587234, -21092048, 3400540, 1095754, -4221953, -16681653, -14207752, -15614890, 17149804, -4572530,
-23552526, -14610942, -12058658, 3615826, 2799782, -11038603, 6558952, -53259740, 6030671, -17324824,
-48413944, -9654013, -25128780, 9352828, -1867237, -25047176, -4661650, 3629247, -15258408, 36426692,
-4782983, 3070902, 16284905, -21218212, -32391570, -20156282, 44565116, -4071092, -10040560, 29272886,
-16312286, -14677514, -14583561, -8440148, 35223564, 4510790, -9196062, -14462229, -7231115, -28392956,
-18322330, -3759170, 7129646, 17425220, -6844031, -29404956, -4041027, 36719824, -2105608, -9826885,
-17440788, -8702141, 21762600, 14071387, -2408940, -28087476, -14545980, -4348118, -26001732, -15534897,
--15203647, 1398549, -4023848, 20896090, -15491410, -5816997, -618475, 54651312, 18695992, -10186589,
-10666551, 5828808, -3777424, 27360016, 13135084, -11391864, 3901978, 21880174, 25203942, -16586090,
--11462731, -38712152, -29777546, -979253, -4214437, -4119411, -58133992, 22054120, -11239929, 33332168,
-33819108, -17126182, 16775605, -30355756, -46455440, 2787971, -32216550, 6069326, -2691334, 27758910,
--17847736, 20297478, 17528298, 27876486, -38317552, 6062883, -22840100, -20624970, 3993246, -27103928,
--17034378, 27998354, -6045704, 11776800, 32220844, -4207458, 11719892, -23313082, 4569309, -25858388,
-27469000, -21058224, -13573707, -14975477, 30511448, 25128780, -14698452, 33652680, 22713934, -4450660,
-33166274, 543313, -31118648, -6775848, -1870458, -23321672, 7912404, -51982528, 7669201, -11207717,
--23874650, -18341658, 26803818, -11615202, 53118008, 40682468, -53755272, 3352759, 1502165, 6294275,
-29391534, -40465572, -27284854, 34830036, -21218750, -26896696, -31493384, 8230231, 81992536, -6060199,
--17694728, -16972638, 7233799, 28412282, -30907122, 15931644, -52130164, -7668664, -20045150, -17603998,
-28193240, -35678832, -55521044, 32863480, 49682572, 12096775, -9059160, -44558676, 3542811, 17645336,
-18038862, -7369627, -17360258, 2356863, -3828427, -5754720, 6328635, -6504191, -14344117, -29212756,
-4420058, -17564268, 5118528, -15755014, -32596654, 20777978, 16119549, 25525528, 1803349, 27588722,
-16428787, 4132832, -7912941, -14139569, -21880710, -16458852, -8050916, 6453725, 17150878, -10728828,
--3787624, -38180112, 37249716, 42179800, 25218974, -21753472, 24427626, -29679298, 1557463, 6523519,
--62179852, 4954782, 8941048, 30073898, -35570384, 49158048, 22827214, -36159868, -16223702, 14163728,
--1440962, -27154930, -25900800, -36109400, -38504920, -5172751, -49177912, -6669011, 17754322, -23162222,
--21577916, 20136418, 20426328, 4051228, -19499152, -66521528, -9871445, 12862353, 7810398, 28667832,
--734976, 16610786, -4431333, -552440, -8454643, 1108102, 17488034, 1892470, 632971, 16937204,
--4639639, -4264903, -22523346, -2219424, -3679713, -2666638, 3799972, 13468481, 18561238, -3816079,
--38118, 14439143, -3338263, -28310814, -1954747, -25158844, 3631395, 3218541, -32743756, 23557896,
--45100376, 9899900, 12468827, -20008642, -1320166, 58289684, -16466368, 19506130, -12221329, 10184978,
--43658344, 4428112, 25878788, -1020055, 22419192, -5530308, 2660732, -1863479, 28745142, -18721762,
--21294984, 24480776, -22442814, -29431800, 638876, -46790984, 31940062, 23889682, -6993818, 7487202,
-8075076, -4494684, -25497610, -74591232, -35720708, -12721693, 22726820, 52801792, -50736984, 9583146,
--15559593, -51158428, -8215736, 43624520, 10848551, 35720168, -32413044, 8044474, -12016245, 951872,
-20599736, 2462090, 10644003, -8288750, -64826088, 17639968, 1925756, -28229210, 26532698, 19948512,
--20420422, 18351322, 1163399, -21932250, 5169530, -14011794, 38614440, 3679713, 14941654, -428423,
--41996728, -33891588, -12184822, -25417080, 25406342, 36992552, 38085624, 30415884, -12087112, 3246459,
--33237678, -5989332, -4378719, -14641544, -18056580, 1608465, 1954210, -45197552, -14058502, -18317498,
--2353105, 18705120, -22837952, -6012418, 6490233, -903554, 21563420, -26024818, -2161979, -29253560,
--16116865, -21652004, 10449655, 7279433, 21481278, -2794413, -3708704, -25053082, -10319733, 20130512,
--29841970, -120640800, -63213864, 14271639, 52133388, 115727896, 88446264, 50498076, 17467632, 26938572,
--7336341, -46941844, -92414808, -122707752, -30617212, -34617436, 2576981, 61747136, 86816320, 59153512,
-77815144, 19196894, 16952236, -7561827, -38495792, -42719892, -35253092, -36458904, -46524160, -36095444,
--15691126, -797253, -209380, 31784368, 39398808, 76432168, 35572528, 13379897, 30887258, 49488760,
-15350213, 10948409, -38395932, -50771884, -86069000, -37834368, -45210436, -30672508, -19592030, -13209709,
-6142340, 12723841, 35863512, 76292576, 59180356, 67311264, 47605956, 61343944, 43209520, -33127082,
--33443836, -79582520, -64638720, -43979928, -105840344, -78230680, -51138564, 6545530, 61172144, 62970128,
-68470368, 91634200, 72222024, 42875584, 42804716, -396748, -32700270, -33023466, -18997714, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-1864016, 2947421, -306553, 3818763, 4725538, 3293166, 5990406, -3674882, 6475200, -2181307,
+875636, -6014028, 281320, -6265821, 1365263, 1100049, 522375, 174483, 2330020, -3340948,
+-3968013, 3262028, -300111, 2494839, 1482838, -551366, -2729989, 521839, 4961761, 3034931,
+1607928, 1927367, 1483911, 545998, 1794760, -394063, 240518, -393526, 5630166, -1161252,
+2926483, -2091112, 2488934, 6615860, -1755031, 6193343, 947577, -2611877, 1844689, 2766496,
+-891743, -1075352, 175020, 4693326, -1481764, 1498407, -869731, 2983929, 1248762, 4070019,
+-1354525, -280784, 1573569, -1611687, -3324305, 630823, -1086627, -423054, -1306744, 2673617,
+426276, 1686848, -788127, 3610457, 1846299, -4569845, -7105487, -5182952, 1995012, -814970,
+-12140262, -6931541, -526134, 1693291, -3725884, 1229971, -4490925, 826781, -3235721, 8457864,
+-6913287, -3111704, -3018288, 5356898, 3788161, 8596377, 2335389, 1721745, -3911642, 4005057,
+583042, 1017370, -415001, 3186329, 4577899, 233002, 4570919, 4151086, -1979443, 2268280,
+-2431488, -2942053, 426812, -2431488, 1563368, -3749507, -6425271, 1632625, 2480344, -1768453,
+1975148, -3277060, 3113851, 3868155, -6749004, 1193464, -194884, 2441152, 2428267, 194347,
+-6616934, -2224256, -2770254, 2085744, 170725, 500364, -1921998, 1073742, -3210488, -28991,
+4124779, 2224256, 610422, -2153926, 1649804, -5806259, -2698850, -4330401, 1250372, 468151,
+274341, -13818520, -255014, 932545, 387621, 2494302, -4759361, 3826816, 2222646, -2398739,
+-8167417, 5690295, 5812165, -1125281, 4865661, 3586298, -4450660, 9401147, 2091112, -3955128,
+5116917, 565862, 4791573, 891206, -7838316, 3259880, -1347546, -2746632, -2940442, -2210835,
+5414343, 4290673, 498216, 4482335, 1708323, -3788161, -4809290, -217433, -994822, 2383170,
+1625108, -3669513, 1104344, 2289218, 2097018, -3186329, -2714419, -4299263, -1427003, -870268,
+1090385, -842887, 6300180, 2902861, -767189, -2812130, 1332514, 2848100, 1509681, 6900939,
+-904628, 3641596, -190589, -1832877, -3795677, 3173981, -687732, -1488743, 4096862, -801548,
+1532230, -443992, -541703, -3992172, 1241782, -758599, 5433671, 6923488, -1174137, -2627983,
+-4140885, -9513353, -5695664, -2055679, 6832219, 898722, 1264331, 4209605, 1113470, 1830193,
+-10000831, -9133785, -5863704, -1500017, -64961, 4263292, -3027952, 3349001, -1748589, -6111739,
+1883880, -849330, -4262218, -9127, 5866389, 8665633, 3847754, -3865471, 2253784, 355945,
+6140193, 60666, -4996658, -70867, -2945811, 6203544, 2596845, 2976949, 6097243, -937377,
+375273, 8422431, 7157026, -117575, -117575, 738198, -546535, 2388539, 513785, -5830955,
+-8108899, -2604361, -1120450, 270583, -2763812, -8657043, -1063541, 2772402, -4984310, -2040646,
+-3295851, -2334852, 810138, 1562294, 2800856, -5746666, -5134634, 5349919, -2197413, -434329,
+809064, 434329, 2928094, -4901632, 12635794, -5000416, -3981972, -731755, 112206, -4879083,
+-62277, -3449933, 6026376, -1617055, -7683697, -10677289, -2813741, -7115687, 9643812, 667331,
+6815040, 5699959, -9341554, -649077, 3779034, 2673617, 4812511, 779537, -694711, -976568,
+2204392, -3204583, 3428995, 1804423, -3396782, 1890859, 48855, 2229088, 5197448, -3017752,
+2002529, -498753, 2924336, 2440615, -1189706, 3421478, -1123671, 2949032, -2495376, 2668785,
+-7595650, -3367254, -2845953, 1915019, 6358699, -4951561, -3259880, -1957431, 273804, -2381023,
+-2992519, -1733019, 2493229, 1905355, 3612068, -1465121, 1996623, -2430952, -2466385, -442919,
+-1544041, 2371359, -187368, -4114042, 2041720, -2450279, -4008278, -1512365, -2538326, 1838783,
+-2742337, 1909113, 3089692, -1550483, 4817343, -8179765, 3308199, -4989679, -5470715, 7422777,
+2619393, -9302362, 708670, -194884, 2496450, -6768332, -4400731, -824634, -5507222, -9880572,
+-9545565, -6409165, -9526237, 3732327, -1195612, 1145683, 4811437, -8435316, 5157719, -2580739,
+2296734, 1382980, -1052804, 562641, -1401770, -1460826, -5543192, -3481071, 6736120, -2863133,
+-6002754, -5627481, -735513, -2702608, 1950989, -5408438, -8093329, 876173, 7108171, -1454920,
+4225174, -2885681, 2207613, -4300873, 2775086, 840203, -5593121, 7515656, 1204202, -2088428,
+1647120, 6831683, 6518687, 3051574, -908922, -8638253, -1549410, -7334194, 1787243, -2115272,
+993748, 455803, 1797981, -7000260, -52613, -1541356, 3178813, 4478041, -9588514, -9213779,
+-6179921, -10092636, -11841225, -11330124, 3996467, 4395362, -7472706, -2415919, -6814503, -10807211,
+4922033, -3272228, -9409736, 2449205, -1146219, -149250, 361851, 2406256, 452582, -927713,
+1752347, 2455111, -5625334, -5514738, -1843615, -6592238, -943819, -6988986, -11534672, -1501091,
+6158446, -8607651, -6624987, 3690988, -4714801, -136365, 1194538, -4750234, -3813931, -4127464,
+-12366821, -5790153, 2057826, -4044786, -4424890, -8134668, 2852932, 6025839, -2902324, 9646497,
+-6189048, -3342558, -534187, -3139084, -9194988, -1264868, 1501628, -936303, -2332167, -8244727,
+-1760937, 6844031, 3249143, 1576790, 3335042, 2154463, -2551748, 13700946, -5138392, -6152004,
+-6036577, -6934225, 1567663, 7526930, 16297790, 11161009, -212601, 10201621, -539555, 1688459,
+2217277, -5227512, 9404905, 300648, 8348880, 7867307, -5858873, 10147397, 516470, -7446400,
+-12170864, 11599633, 5941551, 11509975, -9138617, 6650220, 3958349, -10409390, -9950902, -6065568,
+-2507724, 11031623, -9993852, 9296457, -431644, -1010928, 7143068, 6292127, 9056475, 3137474,
+-4179540, 4151623, 8568997, -4933844, 8581345, 12167105, 5750425, 7333120, 3644817, 1981054,
+2659659, 174483, -6078990, 2299955, 1279900, 302795, 6236293, -4180614, 3986804, 3515968,
+-975494, 10423886, -5598490, -4096862, -1726577, 8913668, -972810, 7278896, 4582730, 4780299,
+5376762, 497142, -12262132, -2441689, -9635759, -6100464, 14470282, 6711424, -5043902, -507343,
+-14057965, 8912057, 8549669, 25281788, 1002875, 2214056, -1260036, -3434363, -1647120, 8576513,
+7783555, 6819871, 9812927, 4021700, 15495705, 4579509, -6158446, 1526324, 13496398, 5382668,
+1349157, 2146947, -6976638, -9949829, 6380174, -4916664, -9826885, -20691004, -366146, 8303246,
+-673236, 4918812, -7225746, -3749507, -2728915, 1603097, -2321430, -6164889, -3083787, -16650514,
+-4409858, -14125611, 1146756, -7423314, 5647882, -8086887, 3047816, -7775502, -2763275, -454730,
+191663, 1240172, 1544578, -10329933, 4972499, -1544578, 2268280, -5406827, 127238, 8257075,
+3323768, 11397769, 6409702, -3539053, -647466, -2437394, -1112933, -2801929, -3553012, -350040,
+4812511, 2797634, 3648575, 1912334, -16167331, 10358387, 27681064, 10270341, -4088272, 13901735,
+-8370892, 9832791, 6700149, -12359305, 3197603, -15665893, 795643, -5023501, -10881837, 6526740,
+676457, 5102421, 7129646, 8711804, 13728863, 5988258, -463320, -2965675, -8542690, -15796353,
+6252399, 6827388, 2254858, -5213554, 9276592, 1608465, 9776956, 5983963, -16454020, -5971615,
+2788508, -12009265, 1152662, -426812, -1854889, 4143033, 3275986, -2467459, 13027710, -6747394,
+1029182, 7487202, -5620502, 5295695, -2141041, -7095823, 5641440, 428960, -411780, 7697119,
+5345087, 769873, -3147674, 15416248, 1272921, 8904004, 1467805, -4114042, -4526359, -11953431,
+-4163971, 5775658, 360240, 5027796, -691490, -9141838, 4653060, 3834869, -13462038, 4785131,
+8238821, -3202435, -27837830, -8932458, 29995514, 8675834, 5144834, -3969087, -381715, -4052839,
+6431177, -9055402, 13313325, 7907035, 6438156, 6750615, -4210142, 87510, -177704, 4702989,
+9040906, -12530030, -7438884, -3611531, 10262287, 4174171, 5850819, 6565395, -1075889, -8776766,
+3351148, 1353989, 18316962, 14845018, 3979287, 11440719, 816581, -4539244, 2447058, -813359,
+-2285996, 7652021, 8725226, 7753490, 17624936, 9172976, 6986301, 8427800, -7815767, -12206297,
+-6003828, 6718403, -11011222, -4648765, 10790568, 12331925, 6292664, -4296578, 10118406, -3064459,
+1034550, 3412352, 5717139, -1946694, -6496675, 4740034, -5930276, -16704202, 494458, 7112466,
+-10124849, 2765422, -2224793, -788663, -2391760, -3629784, 13734232, 1529545, 6779606, 14075682,
+22425098, -34235184, -5238787, 1489280, -707059, -4581120, -8845485, 8682813, -11215770, -17728014,
+-2149094, 16171089, -2786897, -10396505, 2740726, -14321032, -7798050, -86973, 8462159, -15013595,
+1278827, 15012521, 15787763, -263604, 5418101, 13353590, -8293582, -13269838, -17785460, 966905,
+-17707614, -4490389, 7174206, 6153615, -15646029, -15399068, -9019968, 5475547, -4226248, -3565897,
+-4148939, 13093745, -20786568, -6951942, 3207804, -12095165, -3838090, -905701, -13022341, -369367,
+5484137, -1725503, 17302812, -2215130, -6736120, 355409, -593779, -6786049, 3638911, 7222525,
+-7372848, 10741713, -5403606, -23796266, 1724966, -10260677, -3959423, -2310693, -1334661, -31500900,
+-3579318, 11191074, 13600551, 4996658, 20577726, 12120398, -1787780, -32168232, 9126269, -5924371,
+11128260, -10261214, 32749, 16921634, -5491116, 24007256, 5677410, 4637491, -10132365, 4536559,
+12070469, -7337952, -1292248, 15472620, 10197863, 11620571, 1866163, -17993766, 11623792, -11661373,
+-847719, -7084549, 2017561, -9037148, 5434744, -2472291, 5310727, 4639102, 8840653, 8500814,
+9921374, -11662984, 3010772, 18025440, 4184372, -3557844, -3376918, -9483288, -7108708, -377957,
+969589, 2915209, 15670725, 914828, 8777303, 7770133, -285615, -4412542, -3451543, 13411572,
+-16014322, -4139275, -14149770, -12532178, -3081102, -613643, -23958938, 5506148, -7394860, 13957570,
+-2891050, -303869, 10418517, 1054415, 24920474, 19362250, 29589640, 9918153, 1138166, -4804995,
+-3313567, -6249715, -8935143, 13275744, -3216394, -2234457, 30227980, -5570573, -6044630, 33627448,
+11811, 19396610, 14350559, 1709397, 8250632, -3821984, 6560563, 6369974, 4086662, 5305359,
+15711527, -9865540, 18836116, -9454297, 108985, 4474282, -2073932, -12626667, -11516955, 388695,
+-18956376, -5419175, -20751134, -668404, -12173011, -8582955, -6494528, -5195837, 3534758, -16133508,
+20118164, 4006668, -12447889, -8629126, -237297, -1499481, -2769180, 6133750, 3082713, 20486458,
+2601677, 906238, -9541270, 2821257, 4405026, 523986, -10188199, -3256659, 12585865, 14697378,
+-367220, -9770514, 5058935, -589484, 17801028, 21073258, -7020124, -3042448, -2988760, 4364224,
+-6749541, 10266582, -23224498, 619549, 29392072, -22103512, -11228118, -1165547, -3198677, 2415919,
+-16920024, -9085466, -2333241, 13786308, 16502875, 11463805, -9907953, -25944824, 45978700, 11891154,
+-28284508, -28309204, -3962644, 7378754, 19766514, -24566676, -4084514, 5097590, -40802, -3159485,
+26458610, 6048925, -15044197, 8638253, 1376000, -287763, 14053133, -2061584, 7802345, -16587164,
+-5503464, 30401390, 11322071, 24074366, 7701950, 21813066, 3972308, -7373922, 15239618, 14151917,
+21660594, 11034308, -24011552, -8705362, 5430450, 12999255, -9548249, 4177930, -9206799, -15169288,
+1735167, -1315871, -9231495, 7784628, 10269267, 9315247, 6542846, 6553047, -4525822, 16731045,
+-52076, -15565498, -11630235, 15131707, 7952132, -24707874, 11038603, 5112085, 8170102, -21409338,
+-15050639, 15016279, 22067006, 13430363, -4471061, 11529840, 21931176, 8823473, 23131084, 4371740,
+10983842, 8269960, 38117836, 51502564, 4686346, 10755135, -31692026, -9749576, 20336670, -15981573,
+39298412, -7152731, 6837588, 10888816, 23353348, 13012140, -4589710, -15884937, -18369038, -5870147,
+-2335925, -23601920, -10562935, -9143449, 16273094, -8540542, 5455146, -15031312, 2929705, -5693516,
+-21607980, 23730768, 17121350, 19151796, 9208947, -11172284, -10184441, -25901338, 1428614, -23343148,
+-6212670, -1779190, 4081830, 12281996, 10506027, -7492571, -4446365, 10143639, 23106388, 6035503,
+9451612, 16192027, -19569482, 14576045, -10695005, -10849624, -19796042, -9218074, 10429254, 7825968,
+2203318, 23970212, -4523675, -9447317, 4367445, 5718749, 33757908, -11894375, 13349832, 11720966,
+31660352, -7801808, 4412005, -14493904, -4347044, -19238232, 14842870, -27574764, 979253, -22238804,
+4073240, 9236327, 3126736, -13379360, 44891000, -3360275, -6396817, 3925600, -26050588, 1304060,
+-17718888, 430570, 4536559, -5372467, -951335, 10488310, -9815611, 255014, 13297219, 970663,
+3067144, -22277458, 2412698, -2010582, -1798518, -5742908, -27890980, -15416248, 6342056, 2114735,
+11734924, -31947040, 2998424, -29739964, 14531485, -20321638, -32807644, 16239271, 29276108, 5015448,
+14124537, -22432078, 21553220, -5595269, 2741263, -13799193, 17831630, 7305740, 18523658, 5900748,
+22587234, -21092048, 3400540, 1095754, -4221953, -16681653, -14207752, -15614890, 17149804, -4572530,
+23552526, -14610942, -12058658, 3615826, 2799782, -11038603, 6558952, -53259740, 6030671, -17324824,
+48413944, -9654013, -25128780, 9352828, -1867237, -25047176, -4661650, 3629247, -15258408, 36426692,
+4782983, 3070902, 16284905, -21218212, -32391570, -20156282, 44565116, -4071092, -10040560, 29272886,
+16312286, -14677514, -14583561, -8440148, 35223564, 4510790, -9196062, -14462229, -7231115, -28392956,
+18322330, -3759170, 7129646, 17425220, -6844031, -29404956, -4041027, 36719824, -2105608, -9826885,
+17440788, -8702141, 21762600, 14071387, -2408940, -28087476, -14545980, -4348118, -26001732, -15534897,
+-15203647, 1398549, -4023848, 20896090, -15491410, -5816997, -618475, 54651312, 18695992, -10186589,
+10666551, 5828808, -3777424, 27360016, 13135084, -11391864, 3901978, 21880174, 25203942, -16586090,
+-11462731, -38712152, -29777546, -979253, -4214437, -4119411, -58133992, 22054120, -11239929, 33332168,
+33819108, -17126182, 16775605, -30355756, -46455440, 2787971, -32216550, 6069326, -2691334, 27758910,
+-17847736, 20297478, 17528298, 27876486, -38317552, 6062883, -22840100, -20624970, 3993246, -27103928,
+-17034378, 27998354, -6045704, 11776800, 32220844, -4207458, 11719892, -23313082, 4569309, -25858388,
+27469000, -21058224, -13573707, -14975477, 30511448, 25128780, -14698452, 33652680, 22713934, -4450660,
+33166274, 543313, -31118648, -6775848, -1870458, -23321672, 7912404, -51982528, 7669201, -11207717,
+-23874650, -18341658, 26803818, -11615202, 53118008, 40682468, -53755272, 3352759, 1502165, 6294275,
+29391534, -40465572, -27284854, 34830036, -21218750, -26896696, -31493384, 8230231, 81992536, -6060199,
+-17694728, -16972638, 7233799, 28412282, -30907122, 15931644, -52130164, -7668664, -20045150, -17603998,
+28193240, -35678832, -55521044, 32863480, 49682572, 12096775, -9059160, -44558676, 3542811, 17645336,
+18038862, -7369627, -17360258, 2356863, -3828427, -5754720, 6328635, -6504191, -14344117, -29212756,
+4420058, -17564268, 5118528, -15755014, -32596654, 20777978, 16119549, 25525528, 1803349, 27588722,
+16428787, 4132832, -7912941, -14139569, -21880710, -16458852, -8050916, 6453725, 17150878, -10728828,
+-3787624, -38180112, 37249716, 42179800, 25218974, -21753472, 24427626, -29679298, 1557463, 6523519,
+-62179852, 4954782, 8941048, 30073898, -35570384, 49158048, 22827214, -36159868, -16223702, 14163728,
+-1440962, -27154930, -25900800, -36109400, -38504920, -5172751, -49177912, -6669011, 17754322, -23162222,
+-21577916, 20136418, 20426328, 4051228, -19499152, -66521528, -9871445, 12862353, 7810398, 28667832,
+-734976, 16610786, -4431333, -552440, -8454643, 1108102, 17488034, 1892470, 632971, 16937204,
+-4639639, -4264903, -22523346, -2219424, -3679713, -2666638, 3799972, 13468481, 18561238, -3816079,
+-38118, 14439143, -3338263, -28310814, -1954747, -25158844, 3631395, 3218541, -32743756, 23557896,
+-45100376, 9899900, 12468827, -20008642, -1320166, 58289684, -16466368, 19506130, -12221329, 10184978,
+-43658344, 4428112, 25878788, -1020055, 22419192, -5530308, 2660732, -1863479, 28745142, -18721762,
+-21294984, 24480776, -22442814, -29431800, 638876, -46790984, 31940062, 23889682, -6993818, 7487202,
+8075076, -4494684, -25497610, -74591232, -35720708, -12721693, 22726820, 52801792, -50736984, 9583146,
+-15559593, -51158428, -8215736, 43624520, 10848551, 35720168, -32413044, 8044474, -12016245, 951872,
+20599736, 2462090, 10644003, -8288750, -64826088, 17639968, 1925756, -28229210, 26532698, 19948512,
+-20420422, 18351322, 1163399, -21932250, 5169530, -14011794, 38614440, 3679713, 14941654, -428423,
+-41996728, -33891588, -12184822, -25417080, 25406342, 36992552, 38085624, 30415884, -12087112, 3246459,
+-33237678, -5989332, -4378719, -14641544, -18056580, 1608465, 1954210, -45197552, -14058502, -18317498,
+-2353105, 18705120, -22837952, -6012418, 6490233, -903554, 21563420, -26024818, -2161979, -29253560,
+-16116865, -21652004, 10449655, 7279433, 21481278, -2794413, -3708704, -25053082, -10319733, 20130512,
+-29841970, -120640800, -63213864, 14271639, 52133388, 115727896, 88446264, 50498076, 17467632, 26938572,
+-7336341, -46941844, -92414808, -122707752, -30617212, -34617436, 2576981, 61747136, 86816320, 59153512,
+77815144, 19196894, 16952236, -7561827, -38495792, -42719892, -35253092, -36458904, -46524160, -36095444,
+-15691126, -797253, -209380, 31784368, 39398808, 76432168, 35572528, 13379897, 30887258, 49488760,
+15350213, 10948409, -38395932, -50771884, -86069000, -37834368, -45210436, -30672508, -19592030, -13209709,
+6142340, 12723841, 35863512, 76292576, 59180356, 67311264, 47605956, 61343944, 43209520, -33127082,
+-33443836, -79582520, -64638720, -43979928, -105840344, -78230680, -51138564, 6545530, 61172144, 62970128,
+68470368, 91634200, 72222024, 42875584, 42804716, -396748, -32700270, -33023466, -18997714, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
{
8451959,
--1050656, 4005057, -1381906, -127775, 7632694, -4049081, -380105, 2151242, -797790, 2536178,
-2909304, -6616397, 2668785, 2490544, 1421634, -319438, -2156074, 4530117, -5764920, -4878546,
--1060857, 125628, 2349347, -4952098, -3628174, -526670, -3215320, 5291400, 282394, -2252174,
-4214974, -3853660, 467615, -863288, -2269890, -351114, 3287798, 3337190, 1994476, 5168457,
-4294431, -389768, 1335198, -2173254, 5496485, 3415573, -2423972, 563178, 770947, 543313,
--3294240, 2905546, 1016834, -513249, 5833640, -3114925, -3484829, -482110, 1784022, 363998,
--705985, -2178085, -1389422, 1809792, -1567663, -386547, -1182727, 1895691, -774705, 4364761,
-2157684, -2896419, -1624571, 2457795, -2684355, -1497333, -2153389, -4194036, 2537789, 4019553,
-7099581, 1950452, -4884989, -8747775, 1969779, -4063039, 412317, 2805688, 1138166, 7159711,
--5819681, -1408212, -732829, -426276, -4983236, 3151969, 1389959, 687732, 209917, -2430952,
--1822677, -1751810, -498753, 281857, 1270237, -1828046, 2793339, 6403796, -118648, 2862059,
--4430259, -2592550, -5316633, -2579665, 5836861, 303332, -1075352, 1049046, 6192269, 684510,
-3167539, -743029, -2752000, -869731, 3588982, -2962454, 5573794, 3388192, 6274947, 3065533,
-517007, -1855426, -3948686, -2231773, -3409130, -514859, -2442763, 1059783, 382789, -1352915,
-1067299, -1148904, 2379949, -489626, -412317, 3190624, -94489, -110595, 659814, -2837900,
-1650341, -12275553, -2781528, 5029407, 882079, 6856916, 3661460, -5656472, 1491964, -131533,
-2252174, -2033130, -9417790, 5428839, 3339874, 6220724, 7799661, 6694244, 2362232, 75162,
--9587978, -1006633, 4423280, -4395899, -3781182, -10044855, -653909, -1698123, -1137630, -2573759,
-1212791, -6007586, 2757369, -1073742, 2564096, 719944, -3988951, 3078418, 2629594, 6925635,
--767189, -5599027, -2830384, 2984466, 1263794, -1425392, 345208, 2186675, 351650, -4103305,
-31139, 822486, -357019, 222265, -2484102, -1162862, -3326989, -741956, 4316442, 1467268,
--1322313, 1760400, -415001, -256087, 789737, -4925791, -275952, -280247, 2936684, 5255966,
--1321239, -565325, -3110630, -2667712, 1753957, 6010270, -4706211, -855235, 445603, -411780,
--1437740, 1032940, -1431298, 6769942, 2534031, 2275796, -2288681, 160524, 627602, 631897,
--11664594, -6321118, -536334, -2917894, -3614215, -197032, -3041911, -11877732, 7065758, 1609539,
-3198677, -1263794, 2435783, -3150359, 153545, 412854, 6117107, -2185602, -1278827, -1032940,
--1022202, -987306, -418222, 6614787, -1264868, -105227, -3751654, -215822, -1796907, 2150705,
-1117228, -6416145, 5007932, -6491306, -87510, 5702106, -774705, 223338, 479426, -117575,
--3929358, -2809446, 6595459, 3805341, -8042863, -4301410, 1349157, -4721780, -3380676, 3513283,
--5754720, 1187022, 1494649, 3398930, 7050726, 5413270, 3351685, 2581275, -4668093, -4852240,
--4183835, 1473711, 6044093, 2384781, 8946954, -2146410, -2235531, -2638721, 2557653, -2959769,
-4405026, -8425652, -1030255, 6290517, 3337727, -6336688, 4762582, 7734699, 7349226, 4658966,
-959388, -279710, -4691715, -6136972, 2683281, -586800, 6240051, -482110, 3769371, -3839701,
--2462627, -2063732, 706522, 1955284, -246424, -7512435, 1691143, 2587181, 2001992, 3220152,
-2105608, -4089346, -9898289, -3248069, 1603633, 1911797, 615254, -454193, 2054068, -4140349,
-93416, -7499013, 3662533, -7738458, -1850594, -3300682, -4878009, 3666828, 1843615, 1533840,
--4206384, -2190433, -1064078, -4479114, 678605, -415001, 2654290, -1942399, -3433290, -2892124,
--8534100, 2782065, 1405528, 3776350, 6047314, 7145215, 3297998, -2857227, -3630858, -2007360,
-4552666, 4534412, 4194573, -631897, 2991445, -8531953, 1096290, -4032438, 534723, 1363652,
--5331128, 2057826, 15927349, 1814624, -1316944, -8835821, 12838194, 56371, 5441187, 719944,
--181462, -6844568, 6817187, 1816771, -3635690, 970663, 595390, -2675765, 2808909, 7189776,
--1977296, 7641284, -2145873, 3325379, -31139, 5076115, 4510790, 5058398, 145492, -2594697,
-3974992, -2736431, 3513820, -865973, 3543348, 3468723, 3310346, -296353, -886911, 1414655,
--2684355, -3898757, -10197326, 6874095, -6550899, 4808216, 712965, 2120103, -1076963, -12121471,
--2528662, -3134789, -5843303, 1015223, 3883724, -7672422, -2321430, 3814468, 858457, 5873905,
-9985262, 76236, -2349884, -1908039, -9756555, 3675955, 2516851, -1219234, -4633196, -5568962,
--663036, 2785286, -1874753, -2760053, -4093104, 1017370, 7065758, 3090229, 1000191, -16507170,
--7645042, -2420751, 3218004, -2093260, 5408438, 18541374, 5682779, -6998113, 941135, -8254391,
--2753611, 5548561, -6582575, -1780264, 8215199, 1871532, -2201171, 1045288, 4601521, -2974802,
-2178085, 2336999, 2343442, -4777614, 2020245, -2312303, -2742874, -6992744, -2754148, -4148939,
--7710540, 3191161, 190589, -667867, 7639136, 5475010, 1920387, 6031745, -6979, -7991861,
-6565932, -907849, -5384279, -4397510, -7793755, 183073, 9400610, 462783, -4092030, 3800509,
--6921877, -4574140, 3715684, -5869610, -7386270, -4189204, -2180233, 3973919, -6387153, -2373506,
--2731599, 8142721, 1757179, -3579318, 5452998, 3866008, -10851235, 9821516, -4022237, 670015,
--4861903, 8362838, -1437203, -6085432, -19165754, -2807835, 9640054, 2152852, -14972793, 6448357,
--194347, -3323231, -4916127, -4143570, -1627793, -9100499, -1641751, 6793028, 9105868, 10692858,
-6546604, 9715753, -3420405, 7576859, 3693672, -15954193, -476205, 3716221, 5448703, 2349347,
--5467494, -56371, -1195075, 5140002, -9415642, -3744675, 6915971, -2685428, 3886946, 1656247,
--6242198, -7333657, -3564823, -10797011, -2922188, -3620658, 4314295, 1097901, -5923834, -1843615,
--12713103, -3715147, 5369783, -4252555, -12497818, -722628, 7401303, -15935939, 4705674, 1946694,
-5178657, -7955353, -3044595, -7675644, 930934, -2953864, -7409356, -3148211, -882616, 3207267,
--11293617, 3095061, 9923522, 12612708, 9561134, 9700184, 4088272, -5977521, 7006703, 11660299,
--16084116, 8756901, 8888435, -17399450, -4107599, 4776004, 19784230, -1107565, -629213, -4195646,
--4774393, 24132348, 12403329, 3666292, 3609920, 12676059, 428960, -1533840, -3935801, 2173790,
--9998147, -9327595, -1494112, 3298535, 7879655, 3546032, 2373506, -3351685, 1465658, -7567733,
-4063576, -11361799, 12219182, -1018981, -4824322, -6441377, -6746857, -11500312, 2943663, -11137924,
--2867965, 8001524, -821413, -3698504, -2706366, -1642288, -8634495, -6590091, -3247532, -3998615,
--1030255, 3692598, 3245922, 689879, 1843078, -8511015, 16184511, 8535174, 1707786, -1082332,
-21042118, -2384244, -1640141, -4872641, -8039105, -2890513, 21776558, 7364795, 4509179, 10518375,
--12122545, -7321309, 6726456, 7198365, 16112033, 2256469, 4387846, -11032697, -775778, 5312875,
--14499810, -4711043, 5604933, -4875862, 28991, 3848291, 10455561, -3678640, 3983045, 2097018,
-2162516, 8988830, 7713225, 9586367, -7794292, -5158793, 10268193, -13349295, -4617090, -4474282,
--1107028, -3665755, -8712878, 8186745, -533113, -9229885, 185757, -3682398, -9801115, -11962021,
--6883759, -7202660, 13765907, -4553739, -3872450, -8405251, -1001801, -4322348, 1846836, 16479790,
--3448322, -5513128, 2458332, -1083942, 9176198, -11203422, 18369576, 3643206, -18497350, -13269301,
-4301947, -12315819, -298500, -13200045, -482110, 2571075, -2263448, 13807246, 16957068, -8705362,
-1364189, -3905736, -17972290, 8464307, 40892920, -5654862, 764504, -16159814, -6083285, 12994960,
--486942, 23966992, 14901389, 13842143, 1325534, 10960757, -17379048, 18161806, 10033044, 2024003,
-3473555, -9572945, 5958731, 1067836, 18548890, 10868952, 12795244, -2949032, 2418067, 4247723,
--10295037, -8112657, -2943126, 6557878, 21483964, -4321274, -5451387, -5586142, -2470680, 3904125,
--11425150, -2422899, 559956, -5547487, -12132209, -1541356, -15749645, -4913980, 11607686, -10603201,
--3712999, -975494, 2513630, -17981418, -10101226, -1094143, -394063, -2234994, 13909788, 6881612,
-2549063, 8923868, 14392972, -6155225, -1342177, -8916352, 6764574, -6585796, 9126806, 9956808,
-11922829, 19704774, 7303592, -11287174, 213138, 32093606, 12188580, 19475530, 10287520, 20185810,
-22172768, -22948010, 5315559, 16283295, 9824738, -6668474, -12236362, -10801306, 23211078, 1512902,
-8652748, 11831024, -7102266, 3002719, 5035313, -14792404, -15279346, 11843909, 4149475, -22681186,
--5138929, 28200756, 13791677, -664646, -16399796, 4744328, 4357781, 16821776, 5848135, -9246528,
-11541651, 1273995, -4706748, -2457795, -3324305, -14489072, -6287832, 1206349, 2550137, -17229798,
--17365626, -11398306, -4794257, -20397336, 11785927, -2318209, -13426605, 1444183, 681826, -7215008,
--1272384, 2819646, 323196, 2945811, 5553393, 6265821, -7125888, -10730976, 12575127, 22536230,
-11650636, 4691715, 18444200, -5475547, 10443213, 21259552, 15316390, -460098, 3595425, -10480257,
--13404593, 10415296, -12586939, 1658931, -4197794, -1895691, -4649839, -21268142, 5929739, -10270341,
--4752382, -7945690, -1364726, 18147310, 17976048, -36458368, 11241540, 11529303, -11344619, -18562312,
--24189256, 4232691, -7125351, 4444218, -8458938, -6662031, -3947075, 22521734, 5688148, -1988570,
--408559, -3615289, -6758131, 5682242, 3735548, -124017, 9033390, 1950452, -1916629, 3209951,
-8205535, 23262080, 2340220, 2859375, -11494406, -4924717, -5433134, -5787469, -687195, -1930588,
-7733089, 11145977, 561567, 12880607, -2945274, -2149094, -2581812, -1399623, -22490060, 25483114,
-738734, 1855426, -1770600, -6548752, 6876780, -1665374, 10481331, 680752, -9687836, 2789581,
-11186242, -7647726, 10467372, 2650532, -15173583, -2428267, -2822331, -27984934, -8971650, 7703024,
-8301635, -10651519, -6985228, 17437030, 4248260, 4590783, -14682346, 8998493, -6522445, 8508330,
--8665633, 11293080, -12411919, -10430865, 16063715, 937914, 3323231, -11413339, -23871428, -3415573,
-5624260, 523986, 8753680, -9419400, 233539, -1400696, -18067316, -13594108, 4619774, -20579336,
--13626321, 4780299, -929324, -21507048, -3883724, -11438572, 11824582, 6251325, 1318018, -6167036,
--13597866, -28297928, 8459475, -13548474, 13677860, -6014565, -5881958, -4119411, -8086887, 2390149,
-2864206, -23156854, -10424422, 19272592, 17464410, -20918638, 23771570, -680215, 17251274, -6419366,
--5337034, -4459250, -8152385, 7175817, -8046085, -22422950, -11568494, 21100638, -6272800, -7649874,
--2279554, 4160213, 3767223, 8360154, -28190018, 3748970, 17729624, 9107478, 12858058, 9977746,
--9597104, -16441672, -13732621, -8100309, -15912317, -888521, 7692287, 17566954, -2911451, -859530,
--29270202, 17590038, 22109954, -3520800, -11745662, -12174622, -7307350, 32969242, -19888920, -140123,
--2127620, 8838506, -1211181, 37966976, 1220308, -20799990, -5134634, -19777250, 26030724, 22235046,
--17656610, 20906828, 5662915, 16807280, 6757058, -31873490, 10426033, 16886200, -21505438, -6212670,
--24432458, -12581033, 1437740, -23098334, -19010062, -651224, -15240691, -303332, 6298033, -5757941,
--15010911, 12903692, 12557948, -25987774, -18966038, 10865730, 5531918, 7028177, 14197551, 17304424,
--5206037, -9165460, 694174, -5791227, 1025960, -1545115, -7202124, 4018479, -34339336, 13113609,
-19523310, -17299592, -12883828, 13928042, -8058970, 9393093, 21336860, 38994544, 60745868, 3099356,
--22794466, -29632590, -6031745, 2560338, -6174016, 30230128, 22857280, 16339129, 26286810, 19640348,
-15934866, 2375117, 13049184, -14072460, 22879290, 26559004, 2819109, 27588186, -9682467, 3581466,
-7146289, -22963042, -15353971, -4323959, -13480829, -15631533, -1516124, 28389734, 634581, -3675418,
-4328254, 7279433, -2690797, -34914328, -4066260, 11108396, -4476430, -9582609, 5377299, 15715285,
-25884694, 7812009, 13579613, 19380504, 22611930, -28460064, -20162188, 13574781, -8055748, 40103184,
--3314641, 34762928, -25971668, 17557826, 27453430, 2892124, 4893579, 18051748, -28616830, -11525545,
-1158567, 18671296, 798864, 21272436, 8010651, 9459665, 19674172, 9458055, -2409477, -5590437,
-42235636, 13817984, 14554034, 30732102, -2724620, 6260452, 13064754, 19662360, -22706956, -18105434,
--8092792, -19811610, -3972845, -26506928, 12929999, 20733954, 14711337, 20607790, -14659260, -7982197,
-15426986, 12321724, -9486509, 20953534, 11962021, -5000953, -26590680, 14223321, 14913200, -13249974,
--2801393, 7437273, 2835752, -20915416, 23072028, 6338835, 24792698, 14001593, 9078487, -14050449,
-10954851, -7478075, 38156488, -30973694, 2223719, 11830487, -7096360, -19996294, 11475616, 12492986,
--3788698, 12291123, -13369159, 32006096, -16301012, 8416525, 5440650, -20369420, -10414759, -28129888,
-10275709, 8144869, -22622130, 19390166, 14870787, -14604499, 10088341, -1765232, 30564062, 10329396,
--18207440, -12315282, -13548474, 9660992, -8450348, 7858180, -4532264, -36711232, 17929878, -31152472,
-34447784, 41177464, -1061931, 8111583, -31522912, 810138, -6211597, 4440996, 20010790, 20517058,
--4682051, 11184095, 16815334, 3629247, 7677254, 5683316, 7592966, -2983929, 24030342, -2059974,
-6286222, -11658689, 26914412, 6756521, -1347009, 316217, 24337970, 10082973, 12067247, 26895086,
--4637491, -14694157, 32668594, -32347010, -13384192, -4601521, 8556112, 23443006, 6291590, -7881802,
--8249022, -14943802, 806917, -1677185, 7606924, 36912560, 35777076, 23319524, 32403380, -1487669,
-48206712, -14312979, 14326400, -9714142, 2354716, 16297790, -5976447, 3321620, -12820477, -16533477,
-1640678, -9648107, 10990821, -13589277, 24669218, -15272904, -26581016, -9090835, -5506685, 600759,
-35863512, -16127065, -2071248, 10774462, 9165997, -1466731, -14870251, 56870736, 79799952, 23205708,
-61911416, -15641734, -45500884, -32698660, -22987738, 8834211, 10288594, -16600049, -25008520, 18555870,
-26280368, 14107894, 26243324, 19163608, 3987340, 6322192, 2929168, -3563749, -19315542, 5743982,
--22642530, 12808666, -1023276, -22470732, 22143778, 11625940, 10016401, 37681360, 23613194, -14151917,
--8854075, -17184164, -18235358, -23813446, -9354976, -2068027, -17672180, -8162586, 33703144, 49585396,
-37790344, 2076617, 25468620, 24894168, 42184096, 16276315, -23925652, -41263900, -24479166, -27828704,
-13157632, 7897371, -52451752, -39490612, -10151155, 17193290, 45667312, -39780524, -2535641, -35471060,
--5162014, 32793686, -22349936, 8513699, -31977106, -11441256, -10814728, 18580028, -30768072, -2827162,
--6183679, -23607288, -45337136, 4906464, 24258512, -21239150, 37920268, -15906948, 14666776, -5639829,
--45257144, -23310934, -2863670, -26685168, -60890824, -17318918, 20971788, 32964948, -17052094, -26159036,
--54469312, -16335371, 15053860, -11021960, -16377784, -26999238, 5496485, -6315750, -5383205, -5267778,
-9965935, 21346524, -17691508, 16488916, 13278428, -17103634, -49970332, 3905199, 2973728, 12598213,
-4884452, 32061394, 2174864, -48663592, -781147, -53537304, -1395864, 18804978, 21263846, -3908420,
-1720671, 25265682, -14360223, -9076340, -18197776, 16666084, 10265509, -7081864, 17659832, -5220533,
-6402186, 9899363, 29651380, 5332739, -13194140, -32343788, -13838921, 19164144, 12700218, 28839632,
-36204428, 70160976, 30447560, 19836306, -20942260, 3683471, -43650828, -13222057, 30419106, -14867029,
--12541841, -3118146, -9807021, -34893924, -38969312, -56822416, -18020610, 292595, -4454955, 37504728,
-10207527, 48947056, 29990146, 15338939, -6883759, -17726404, -3445101, 68624984, 4145180, 20021526,
-10993506, -8220568, 33928632, -13816910, 27357332, -29587492, -3108483, -21172042, 25728464, -35945656,
--7808788, 11657615, 11335492, 12257300, -31978716, 23266374, -36581312, 8058970, -17991082, -11521250,
-36134096, 2908230, 2256469, 13308493, -13886166, 83215, 9367861, -43257836, 1094680, 11260867,
--6518150, 29652992, -12815646, -4296041, 47886200, -16738024, -39893268, 1691143, -15042586, 5028870,
--2957085, -20401, -31891206, 19564650, -5020280, -40658844, 26588532, -50195820, 11048803, -6836514,
--19999516, -23545010, -19953344, -67781560, -69590816, -59609316, -30511984, 119918712, 36913632, -16234976,
--16755741, -61025580, -127769912, -15463493, 33113660, 41325640, 17326434, -20732880, -15533823, -38619808,
--42073500, 29683056, -30547418, 75022344, 56337088, -90324232, 27922656, 10347650, -19498614, 5549635,
-63082332, 7756711, 43291124, 86062552, -19818052, -73271072, 2629057, -13713294, -67652712, -19745576,
-31675920, -4460324, 39187820, 62776316, 5165772, -57321708, -109691856, -95320896, -84256520, -10429254,
-80771152, 21488258, 21316996, 10518375, -22342420, -111145704, -68651832, -36815924, -13439490, 4904316,
-24737938, 22167400, 30989800, 29719564, 39586712, -49110268, -16549046, -40630392, -2661806, -44309032,
-27115740, 24116778, 54941760, 57648124, 30118996, -904628, -13580150, -11682848, -68886440, 15736223,
--16117939, -128925792, -143614048, -99853696, -102725416, -32651952, 99187440, 64714420, 107572288, 121130424,
-187188640, 122314760, 126241440, 79387640, -14328011, -103234904, -174217296, -203526160, -178469856, -141460656,
--105233680, -30314952, -12814572, -20751672, -2947421, 35744328, 61795452, 90229208, 76147088, 108240696,
-102761928, 136818336, 122899952, 30600032, 79841296, -25115896, 15991237, 11803107, -3085397, -17910550,
--135643120, -158732320, -203862768, -235060336, -216877600, -121230280, -111196168, -89771792, -114315384, -127633008,
--34331820, 25818122, 69330976, 109303696, 156022208, 192342592, 243605184, 328796928, 314514016, 242500288,
-191211408, 164025872, 80542984, 138817632, -62445068, -111236968, -275958624, -305650816, -389216928, -362261696,
--340122208, -306928576, -307014464, -165308992, -104239928, -2929705, 216135632, 169441824, 112524920, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-1050656, 4005057, -1381906, -127775, 7632694, -4049081, -380105, 2151242, -797790, 2536178,
+2909304, -6616397, 2668785, 2490544, 1421634, -319438, -2156074, 4530117, -5764920, -4878546,
+-1060857, 125628, 2349347, -4952098, -3628174, -526670, -3215320, 5291400, 282394, -2252174,
+4214974, -3853660, 467615, -863288, -2269890, -351114, 3287798, 3337190, 1994476, 5168457,
+4294431, -389768, 1335198, -2173254, 5496485, 3415573, -2423972, 563178, 770947, 543313,
+-3294240, 2905546, 1016834, -513249, 5833640, -3114925, -3484829, -482110, 1784022, 363998,
+-705985, -2178085, -1389422, 1809792, -1567663, -386547, -1182727, 1895691, -774705, 4364761,
+2157684, -2896419, -1624571, 2457795, -2684355, -1497333, -2153389, -4194036, 2537789, 4019553,
+7099581, 1950452, -4884989, -8747775, 1969779, -4063039, 412317, 2805688, 1138166, 7159711,
+-5819681, -1408212, -732829, -426276, -4983236, 3151969, 1389959, 687732, 209917, -2430952,
+-1822677, -1751810, -498753, 281857, 1270237, -1828046, 2793339, 6403796, -118648, 2862059,
+-4430259, -2592550, -5316633, -2579665, 5836861, 303332, -1075352, 1049046, 6192269, 684510,
+3167539, -743029, -2752000, -869731, 3588982, -2962454, 5573794, 3388192, 6274947, 3065533,
+517007, -1855426, -3948686, -2231773, -3409130, -514859, -2442763, 1059783, 382789, -1352915,
+1067299, -1148904, 2379949, -489626, -412317, 3190624, -94489, -110595, 659814, -2837900,
+1650341, -12275553, -2781528, 5029407, 882079, 6856916, 3661460, -5656472, 1491964, -131533,
+2252174, -2033130, -9417790, 5428839, 3339874, 6220724, 7799661, 6694244, 2362232, 75162,
+-9587978, -1006633, 4423280, -4395899, -3781182, -10044855, -653909, -1698123, -1137630, -2573759,
+1212791, -6007586, 2757369, -1073742, 2564096, 719944, -3988951, 3078418, 2629594, 6925635,
+-767189, -5599027, -2830384, 2984466, 1263794, -1425392, 345208, 2186675, 351650, -4103305,
+31139, 822486, -357019, 222265, -2484102, -1162862, -3326989, -741956, 4316442, 1467268,
+-1322313, 1760400, -415001, -256087, 789737, -4925791, -275952, -280247, 2936684, 5255966,
+-1321239, -565325, -3110630, -2667712, 1753957, 6010270, -4706211, -855235, 445603, -411780,
+-1437740, 1032940, -1431298, 6769942, 2534031, 2275796, -2288681, 160524, 627602, 631897,
+-11664594, -6321118, -536334, -2917894, -3614215, -197032, -3041911, -11877732, 7065758, 1609539,
+3198677, -1263794, 2435783, -3150359, 153545, 412854, 6117107, -2185602, -1278827, -1032940,
+-1022202, -987306, -418222, 6614787, -1264868, -105227, -3751654, -215822, -1796907, 2150705,
+1117228, -6416145, 5007932, -6491306, -87510, 5702106, -774705, 223338, 479426, -117575,
+-3929358, -2809446, 6595459, 3805341, -8042863, -4301410, 1349157, -4721780, -3380676, 3513283,
+-5754720, 1187022, 1494649, 3398930, 7050726, 5413270, 3351685, 2581275, -4668093, -4852240,
+-4183835, 1473711, 6044093, 2384781, 8946954, -2146410, -2235531, -2638721, 2557653, -2959769,
+4405026, -8425652, -1030255, 6290517, 3337727, -6336688, 4762582, 7734699, 7349226, 4658966,
+959388, -279710, -4691715, -6136972, 2683281, -586800, 6240051, -482110, 3769371, -3839701,
+-2462627, -2063732, 706522, 1955284, -246424, -7512435, 1691143, 2587181, 2001992, 3220152,
+2105608, -4089346, -9898289, -3248069, 1603633, 1911797, 615254, -454193, 2054068, -4140349,
+93416, -7499013, 3662533, -7738458, -1850594, -3300682, -4878009, 3666828, 1843615, 1533840,
+-4206384, -2190433, -1064078, -4479114, 678605, -415001, 2654290, -1942399, -3433290, -2892124,
+-8534100, 2782065, 1405528, 3776350, 6047314, 7145215, 3297998, -2857227, -3630858, -2007360,
+4552666, 4534412, 4194573, -631897, 2991445, -8531953, 1096290, -4032438, 534723, 1363652,
+-5331128, 2057826, 15927349, 1814624, -1316944, -8835821, 12838194, 56371, 5441187, 719944,
+-181462, -6844568, 6817187, 1816771, -3635690, 970663, 595390, -2675765, 2808909, 7189776,
+-1977296, 7641284, -2145873, 3325379, -31139, 5076115, 4510790, 5058398, 145492, -2594697,
+3974992, -2736431, 3513820, -865973, 3543348, 3468723, 3310346, -296353, -886911, 1414655,
+-2684355, -3898757, -10197326, 6874095, -6550899, 4808216, 712965, 2120103, -1076963, -12121471,
+-2528662, -3134789, -5843303, 1015223, 3883724, -7672422, -2321430, 3814468, 858457, 5873905,
+9985262, 76236, -2349884, -1908039, -9756555, 3675955, 2516851, -1219234, -4633196, -5568962,
+-663036, 2785286, -1874753, -2760053, -4093104, 1017370, 7065758, 3090229, 1000191, -16507170,
+-7645042, -2420751, 3218004, -2093260, 5408438, 18541374, 5682779, -6998113, 941135, -8254391,
+-2753611, 5548561, -6582575, -1780264, 8215199, 1871532, -2201171, 1045288, 4601521, -2974802,
+2178085, 2336999, 2343442, -4777614, 2020245, -2312303, -2742874, -6992744, -2754148, -4148939,
+-7710540, 3191161, 190589, -667867, 7639136, 5475010, 1920387, 6031745, -6979, -7991861,
+6565932, -907849, -5384279, -4397510, -7793755, 183073, 9400610, 462783, -4092030, 3800509,
+-6921877, -4574140, 3715684, -5869610, -7386270, -4189204, -2180233, 3973919, -6387153, -2373506,
+-2731599, 8142721, 1757179, -3579318, 5452998, 3866008, -10851235, 9821516, -4022237, 670015,
+-4861903, 8362838, -1437203, -6085432, -19165754, -2807835, 9640054, 2152852, -14972793, 6448357,
+-194347, -3323231, -4916127, -4143570, -1627793, -9100499, -1641751, 6793028, 9105868, 10692858,
+6546604, 9715753, -3420405, 7576859, 3693672, -15954193, -476205, 3716221, 5448703, 2349347,
+-5467494, -56371, -1195075, 5140002, -9415642, -3744675, 6915971, -2685428, 3886946, 1656247,
+-6242198, -7333657, -3564823, -10797011, -2922188, -3620658, 4314295, 1097901, -5923834, -1843615,
+-12713103, -3715147, 5369783, -4252555, -12497818, -722628, 7401303, -15935939, 4705674, 1946694,
+5178657, -7955353, -3044595, -7675644, 930934, -2953864, -7409356, -3148211, -882616, 3207267,
+-11293617, 3095061, 9923522, 12612708, 9561134, 9700184, 4088272, -5977521, 7006703, 11660299,
+-16084116, 8756901, 8888435, -17399450, -4107599, 4776004, 19784230, -1107565, -629213, -4195646,
+-4774393, 24132348, 12403329, 3666292, 3609920, 12676059, 428960, -1533840, -3935801, 2173790,
+-9998147, -9327595, -1494112, 3298535, 7879655, 3546032, 2373506, -3351685, 1465658, -7567733,
+4063576, -11361799, 12219182, -1018981, -4824322, -6441377, -6746857, -11500312, 2943663, -11137924,
+-2867965, 8001524, -821413, -3698504, -2706366, -1642288, -8634495, -6590091, -3247532, -3998615,
+-1030255, 3692598, 3245922, 689879, 1843078, -8511015, 16184511, 8535174, 1707786, -1082332,
+21042118, -2384244, -1640141, -4872641, -8039105, -2890513, 21776558, 7364795, 4509179, 10518375,
+-12122545, -7321309, 6726456, 7198365, 16112033, 2256469, 4387846, -11032697, -775778, 5312875,
+-14499810, -4711043, 5604933, -4875862, 28991, 3848291, 10455561, -3678640, 3983045, 2097018,
+2162516, 8988830, 7713225, 9586367, -7794292, -5158793, 10268193, -13349295, -4617090, -4474282,
+-1107028, -3665755, -8712878, 8186745, -533113, -9229885, 185757, -3682398, -9801115, -11962021,
+-6883759, -7202660, 13765907, -4553739, -3872450, -8405251, -1001801, -4322348, 1846836, 16479790,
+-3448322, -5513128, 2458332, -1083942, 9176198, -11203422, 18369576, 3643206, -18497350, -13269301,
+4301947, -12315819, -298500, -13200045, -482110, 2571075, -2263448, 13807246, 16957068, -8705362,
+1364189, -3905736, -17972290, 8464307, 40892920, -5654862, 764504, -16159814, -6083285, 12994960,
+-486942, 23966992, 14901389, 13842143, 1325534, 10960757, -17379048, 18161806, 10033044, 2024003,
+3473555, -9572945, 5958731, 1067836, 18548890, 10868952, 12795244, -2949032, 2418067, 4247723,
+-10295037, -8112657, -2943126, 6557878, 21483964, -4321274, -5451387, -5586142, -2470680, 3904125,
+-11425150, -2422899, 559956, -5547487, -12132209, -1541356, -15749645, -4913980, 11607686, -10603201,
+-3712999, -975494, 2513630, -17981418, -10101226, -1094143, -394063, -2234994, 13909788, 6881612,
+2549063, 8923868, 14392972, -6155225, -1342177, -8916352, 6764574, -6585796, 9126806, 9956808,
+11922829, 19704774, 7303592, -11287174, 213138, 32093606, 12188580, 19475530, 10287520, 20185810,
+22172768, -22948010, 5315559, 16283295, 9824738, -6668474, -12236362, -10801306, 23211078, 1512902,
+8652748, 11831024, -7102266, 3002719, 5035313, -14792404, -15279346, 11843909, 4149475, -22681186,
+-5138929, 28200756, 13791677, -664646, -16399796, 4744328, 4357781, 16821776, 5848135, -9246528,
+11541651, 1273995, -4706748, -2457795, -3324305, -14489072, -6287832, 1206349, 2550137, -17229798,
+-17365626, -11398306, -4794257, -20397336, 11785927, -2318209, -13426605, 1444183, 681826, -7215008,
+-1272384, 2819646, 323196, 2945811, 5553393, 6265821, -7125888, -10730976, 12575127, 22536230,
+11650636, 4691715, 18444200, -5475547, 10443213, 21259552, 15316390, -460098, 3595425, -10480257,
+-13404593, 10415296, -12586939, 1658931, -4197794, -1895691, -4649839, -21268142, 5929739, -10270341,
+-4752382, -7945690, -1364726, 18147310, 17976048, -36458368, 11241540, 11529303, -11344619, -18562312,
+-24189256, 4232691, -7125351, 4444218, -8458938, -6662031, -3947075, 22521734, 5688148, -1988570,
+-408559, -3615289, -6758131, 5682242, 3735548, -124017, 9033390, 1950452, -1916629, 3209951,
+8205535, 23262080, 2340220, 2859375, -11494406, -4924717, -5433134, -5787469, -687195, -1930588,
+7733089, 11145977, 561567, 12880607, -2945274, -2149094, -2581812, -1399623, -22490060, 25483114,
+738734, 1855426, -1770600, -6548752, 6876780, -1665374, 10481331, 680752, -9687836, 2789581,
+11186242, -7647726, 10467372, 2650532, -15173583, -2428267, -2822331, -27984934, -8971650, 7703024,
+8301635, -10651519, -6985228, 17437030, 4248260, 4590783, -14682346, 8998493, -6522445, 8508330,
+-8665633, 11293080, -12411919, -10430865, 16063715, 937914, 3323231, -11413339, -23871428, -3415573,
+5624260, 523986, 8753680, -9419400, 233539, -1400696, -18067316, -13594108, 4619774, -20579336,
+-13626321, 4780299, -929324, -21507048, -3883724, -11438572, 11824582, 6251325, 1318018, -6167036,
+-13597866, -28297928, 8459475, -13548474, 13677860, -6014565, -5881958, -4119411, -8086887, 2390149,
+2864206, -23156854, -10424422, 19272592, 17464410, -20918638, 23771570, -680215, 17251274, -6419366,
+-5337034, -4459250, -8152385, 7175817, -8046085, -22422950, -11568494, 21100638, -6272800, -7649874,
+-2279554, 4160213, 3767223, 8360154, -28190018, 3748970, 17729624, 9107478, 12858058, 9977746,
+-9597104, -16441672, -13732621, -8100309, -15912317, -888521, 7692287, 17566954, -2911451, -859530,
+-29270202, 17590038, 22109954, -3520800, -11745662, -12174622, -7307350, 32969242, -19888920, -140123,
+-2127620, 8838506, -1211181, 37966976, 1220308, -20799990, -5134634, -19777250, 26030724, 22235046,
+-17656610, 20906828, 5662915, 16807280, 6757058, -31873490, 10426033, 16886200, -21505438, -6212670,
+-24432458, -12581033, 1437740, -23098334, -19010062, -651224, -15240691, -303332, 6298033, -5757941,
+-15010911, 12903692, 12557948, -25987774, -18966038, 10865730, 5531918, 7028177, 14197551, 17304424,
+-5206037, -9165460, 694174, -5791227, 1025960, -1545115, -7202124, 4018479, -34339336, 13113609,
+19523310, -17299592, -12883828, 13928042, -8058970, 9393093, 21336860, 38994544, 60745868, 3099356,
+-22794466, -29632590, -6031745, 2560338, -6174016, 30230128, 22857280, 16339129, 26286810, 19640348,
+15934866, 2375117, 13049184, -14072460, 22879290, 26559004, 2819109, 27588186, -9682467, 3581466,
+7146289, -22963042, -15353971, -4323959, -13480829, -15631533, -1516124, 28389734, 634581, -3675418,
+4328254, 7279433, -2690797, -34914328, -4066260, 11108396, -4476430, -9582609, 5377299, 15715285,
+25884694, 7812009, 13579613, 19380504, 22611930, -28460064, -20162188, 13574781, -8055748, 40103184,
+-3314641, 34762928, -25971668, 17557826, 27453430, 2892124, 4893579, 18051748, -28616830, -11525545,
+1158567, 18671296, 798864, 21272436, 8010651, 9459665, 19674172, 9458055, -2409477, -5590437,
+42235636, 13817984, 14554034, 30732102, -2724620, 6260452, 13064754, 19662360, -22706956, -18105434,
+-8092792, -19811610, -3972845, -26506928, 12929999, 20733954, 14711337, 20607790, -14659260, -7982197,
+15426986, 12321724, -9486509, 20953534, 11962021, -5000953, -26590680, 14223321, 14913200, -13249974,
+-2801393, 7437273, 2835752, -20915416, 23072028, 6338835, 24792698, 14001593, 9078487, -14050449,
+10954851, -7478075, 38156488, -30973694, 2223719, 11830487, -7096360, -19996294, 11475616, 12492986,
+-3788698, 12291123, -13369159, 32006096, -16301012, 8416525, 5440650, -20369420, -10414759, -28129888,
+10275709, 8144869, -22622130, 19390166, 14870787, -14604499, 10088341, -1765232, 30564062, 10329396,
+-18207440, -12315282, -13548474, 9660992, -8450348, 7858180, -4532264, -36711232, 17929878, -31152472,
+34447784, 41177464, -1061931, 8111583, -31522912, 810138, -6211597, 4440996, 20010790, 20517058,
+-4682051, 11184095, 16815334, 3629247, 7677254, 5683316, 7592966, -2983929, 24030342, -2059974,
+6286222, -11658689, 26914412, 6756521, -1347009, 316217, 24337970, 10082973, 12067247, 26895086,
+-4637491, -14694157, 32668594, -32347010, -13384192, -4601521, 8556112, 23443006, 6291590, -7881802,
+-8249022, -14943802, 806917, -1677185, 7606924, 36912560, 35777076, 23319524, 32403380, -1487669,
+48206712, -14312979, 14326400, -9714142, 2354716, 16297790, -5976447, 3321620, -12820477, -16533477,
+1640678, -9648107, 10990821, -13589277, 24669218, -15272904, -26581016, -9090835, -5506685, 600759,
+35863512, -16127065, -2071248, 10774462, 9165997, -1466731, -14870251, 56870736, 79799952, 23205708,
+61911416, -15641734, -45500884, -32698660, -22987738, 8834211, 10288594, -16600049, -25008520, 18555870,
+26280368, 14107894, 26243324, 19163608, 3987340, 6322192, 2929168, -3563749, -19315542, 5743982,
+-22642530, 12808666, -1023276, -22470732, 22143778, 11625940, 10016401, 37681360, 23613194, -14151917,
+-8854075, -17184164, -18235358, -23813446, -9354976, -2068027, -17672180, -8162586, 33703144, 49585396,
+37790344, 2076617, 25468620, 24894168, 42184096, 16276315, -23925652, -41263900, -24479166, -27828704,
+13157632, 7897371, -52451752, -39490612, -10151155, 17193290, 45667312, -39780524, -2535641, -35471060,
+-5162014, 32793686, -22349936, 8513699, -31977106, -11441256, -10814728, 18580028, -30768072, -2827162,
+-6183679, -23607288, -45337136, 4906464, 24258512, -21239150, 37920268, -15906948, 14666776, -5639829,
+-45257144, -23310934, -2863670, -26685168, -60890824, -17318918, 20971788, 32964948, -17052094, -26159036,
+-54469312, -16335371, 15053860, -11021960, -16377784, -26999238, 5496485, -6315750, -5383205, -5267778,
+9965935, 21346524, -17691508, 16488916, 13278428, -17103634, -49970332, 3905199, 2973728, 12598213,
+4884452, 32061394, 2174864, -48663592, -781147, -53537304, -1395864, 18804978, 21263846, -3908420,
+1720671, 25265682, -14360223, -9076340, -18197776, 16666084, 10265509, -7081864, 17659832, -5220533,
+6402186, 9899363, 29651380, 5332739, -13194140, -32343788, -13838921, 19164144, 12700218, 28839632,
+36204428, 70160976, 30447560, 19836306, -20942260, 3683471, -43650828, -13222057, 30419106, -14867029,
+-12541841, -3118146, -9807021, -34893924, -38969312, -56822416, -18020610, 292595, -4454955, 37504728,
+10207527, 48947056, 29990146, 15338939, -6883759, -17726404, -3445101, 68624984, 4145180, 20021526,
+10993506, -8220568, 33928632, -13816910, 27357332, -29587492, -3108483, -21172042, 25728464, -35945656,
+-7808788, 11657615, 11335492, 12257300, -31978716, 23266374, -36581312, 8058970, -17991082, -11521250,
+36134096, 2908230, 2256469, 13308493, -13886166, 83215, 9367861, -43257836, 1094680, 11260867,
+-6518150, 29652992, -12815646, -4296041, 47886200, -16738024, -39893268, 1691143, -15042586, 5028870,
+-2957085, -20401, -31891206, 19564650, -5020280, -40658844, 26588532, -50195820, 11048803, -6836514,
+-19999516, -23545010, -19953344, -67781560, -69590816, -59609316, -30511984, 119918712, 36913632, -16234976,
+-16755741, -61025580, -127769912, -15463493, 33113660, 41325640, 17326434, -20732880, -15533823, -38619808,
+-42073500, 29683056, -30547418, 75022344, 56337088, -90324232, 27922656, 10347650, -19498614, 5549635,
+63082332, 7756711, 43291124, 86062552, -19818052, -73271072, 2629057, -13713294, -67652712, -19745576,
+31675920, -4460324, 39187820, 62776316, 5165772, -57321708, -109691856, -95320896, -84256520, -10429254,
+80771152, 21488258, 21316996, 10518375, -22342420, -111145704, -68651832, -36815924, -13439490, 4904316,
+24737938, 22167400, 30989800, 29719564, 39586712, -49110268, -16549046, -40630392, -2661806, -44309032,
+27115740, 24116778, 54941760, 57648124, 30118996, -904628, -13580150, -11682848, -68886440, 15736223,
+-16117939, -128925792, -143614048, -99853696, -102725416, -32651952, 99187440, 64714420, 107572288, 121130424,
+187188640, 122314760, 126241440, 79387640, -14328011, -103234904, -174217296, -203526160, -178469856, -141460656,
+-105233680, -30314952, -12814572, -20751672, -2947421, 35744328, 61795452, 90229208, 76147088, 108240696,
+102761928, 136818336, 122899952, 30600032, 79841296, -25115896, 15991237, 11803107, -3085397, -17910550,
+-135643120, -158732320, -203862768, -235060336, -216877600, -121230280, -111196168, -89771792, -114315384, -127633008,
+-34331820, 25818122, 69330976, 109303696, 156022208, 192342592, 243605184, 328796928, 314514016, 242500288,
+191211408, 164025872, 80542984, 138817632, -62445068, -111236968, -275958624, -305650816, -389216928, -362261696,
+-340122208, -306928576, -307014464, -165308992, -104239928, -2929705, 216135632, 169441824, 112524920, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
-6926172,
-11555073, -3087008, 1925219, -3746822, 1478543, -8167954, 453119, -2434710, 2946885, -4432406,
--3198677, -853088, 3000572, -613107, -497142, -1694365, -2312840, -5465883, -1149978, -4561792,
--2443300, -3861176, 1732482, -814970, 300648, 1947768, 1156420, -2690797, 1243393, -944893,
--223875, -1005022, -857383, -2404645, 176094, -4378719, 5513128, -1662689, -1314797, -850404,
-348966, -37044, 655519, -5102421, 378494, 2211908, 176094, 957778, -111669, 1155346,
-4165045, -1309965, 2567317, 2994666, -4387846, -1378685, -1044214, 4114042, -770410, 1263794,
-4692252, 31675, -1297080, 1014149, 1377074, 1369558, 401579, 2407866, 30065, -733903,
-1975685, -2028835, 630286, -108448, -3620121, 13587129, 1753957, -5662378, 2247879, -3496640,
-1206349, -2197950, -1301375, -3015604, 2529199, 4195646, 1381906, 1464047, -7058779, 1660542,
-361314, 2496987, 3016141, 1755031, 4423280, -656056, -2107218, 670015, 5242008, 258235,
--3597572, -159451, 4499515, 2541547, 698469, 266825, 1439888, 115964, 567473, 1048509,
-107374, -1299228, 64425, 258235, 1919850, -2276870, -5622112, 4548907, 4576288, 3996467,
-3793530, 28991, 2186138, 3591130, -3304441, -596464, 164819, -4536023, 1330903, 542777,
-4551592, 632971, 2670933, 252866, 5662915, 2908767, -513249, 3947612, 2572686, -1083942,
--4116726, 1229971, 1442035, -1056025, 629213, -2418067, -350040, 2311229, 1873680, 1918777,
-4709432, 11413876, -7476465, 2639258, 6470905, 1573569, 4592394, 5521181, -4842039, 1116155,
--344671, 2192044, -6158983, -4904853, -812823, 4945655, 6727530, -2465311, -2064806, 3234110,
--5237176, -7111929, -1191853, -8376260, 3027415, 2860448, 906775, -5183489, -5187247, 1954747,
--2952790, 779000, 0, 5618354, 6034429, 5359046, -692564, 3773129, -5633924, 2586644,
--3243774, -255014, 496069, 4599373, -4704063, -4287451, 235149, 6036577, 2670396, 2403571,
--3397319, 2099165, 1705639, -1676111, -7225209, -1117765, -2286533, -3176128, -2697240, 3535295,
--2874407, -885300, 1053341, 2273648, 5645198, -1879048, 173409, -3833795, -1646046, 1089848,
--5275294, -32212, 1860795, 4240744, -886911, -2325725, -1169305, -4734665, -4351339, -7599945,
--2158221, 890669, -2585034, -4025995, -2381023, -7583302, -4414690, 7270306, -652835, -3751117,
-3702799, -6484864, -1745367, -7999914, -1928977, -6386617, -3485366, 6682969, 29528, -1820529,
--8308614, -5356361, -2137283, -3804804, 1009854, -4636954, 77846, 2240362, 8111046, 3740380,
-2832531, 3249680, 6503118, -6159520, -401579, -2141041, -4763656, 1402844, -1239098, -2157684,
--4969277, 1978369, 4542465, 63351, -3872450, -2725694, 12145631, -413391, -3917010, -5471789,
--7813620, -10461467, -1576253, -5675263, 864362, -1534914, 2450816, -23085, 1010391, -5145908,
-344134, 157840, 5690832, 1415729, -4871567, -412854, -1774895, -2062121, -1470489, 1362578,
-2801929, 2262374, -3474629, -17268990, 7063074, -2947421, 3074123, -7039452, -2752000, -5468030,
--5017596, 537408, -1481764, -3348464, 9023189, 2499134, -686121, -5185100, -1569811, 2706366,
--6040335, -3053722, -5749888, -3051038, 8612483, 1052804, 5779952, -309775, 59056, -1187559,
-1717450, 1814087, -4393752, 308164, 1456531, 2798171, 9316858, -4549981, -5480915, -830539,
-10290205, 3488050, 10943040, 1248762, 1095217, -1619203, 5452461, -624381, 7992934, -488016,
--825171, -1096290, -3191698, 3690451, 1115618, -2476049, 2394444, 3327526, 5586142, -2807835,
--171262, -612033, 4996658, -1614371, -703838, -1448478, -1120450, 1574106, -1457605, 971736,
-983548, -787053, 1387274, -7691213, 979789, 5633924, 2081985, 7351911, 849867, 889058,
-2204929, -3906810, -2015413, -255551, -8791261, -1617592, -89657, -4468377, -15423764, -3877819,
--3457449, -6827388, -1462973, -1889786, 9388262, -3495030, 7062000, 3202435, 5050882, -9990094,
--4565014, -10093173, -9364102, -190052, 1579474, 5584531, -2931852, -4515085, -2812130, -6885370,
-1289027, 2868501, 3366718, 1979980, -2171106, 2317135, -4607963, 302258, -8199630, 2734284,
--2209224, 926639, 1653562, 2837900, 3095598, -3257196, 5369, 7641284, -4300336, 3617973,
-3867618, -426276, 2277943, 3681324, -1684164, 1355599, 3695283, 54224, 6592238, -3644817,
--4704600, -2376191, 2108829, -147640, -8948564, -4621385, -9900973, -10807748, -1882269, 2820720,
--8778913, 3847754, -1464584, -145492, -3031173, 3027952, -5224291, -524523, 4747013, -14382772,
--854699, 4218732, 2621004, -7735773, -1073205, -5002563, 1085553, 1225676, 890132, -8453033,
--11150809, -7740605, 1165547, -6241661, 6454799, 1835025, -10718091, 7413114, 6621229, 5057324,
-4671851, -5541045, 8557722, 2004676, -138513, -3648575, 2855617, 4883915, -4799626, -7270843,
-2533494, -2940442, -8669928, -1473711, -8357470, -3368328, 15079093, -4365835, -6784438, -8761733,
-480499, 1015223, 6027987, 2021319, -5490042, 4647155, -592169, -4735202, -5681705, -6507949,
-9379135, 3744138, 5957120, -4858682, -5949067, 2296734, 1638530, -6695317, -161598, -4293357,
-6189048, -1635846, 737661, -7859790, 4938676, 3457986, -3939022, -3175055, -2318209, 7914014,
-411243, 898185, -2101313, 5722507, -5661304, -7341173, -56371, 2162516, -1639604, -5806796,
--8771934, -6955163, 7554848, 1138166, 9197672, 10964515, 10617159, 1865626, 14474577, 3711389,
--1335198, 6878927, 5262946, 13447543, 2130841, 7863012, -10143639, 17382806, 12788265, 6381248,
--4964446, -3801046, 6382859, 1735704, 4632659, -2226941, 7564511, -1886564, -1718524, 6937446,
-5566815, -6431177, 4719632, -1492501, 7341173, 8102456, -15123654, -2509335, 9574556, 3148211,
-5272609, 4343286, 9459665, -4209605, 3860639, 466541, -7750806, -3546569, -126702, 1912334,
--11462194, -715112, 7347616, -5517423, 12275553, 9403831, -3695819, 90194, 2319819, 4755603,
-7081328, -2658585, -2430952, 11623792, -2930242, -312459, 4744328, -26307, 6301791, 4745402,
-1386738, 1766842, 30563524, -14653892, 3023657, 13133473, -327491, 1341640, 17048336, 18678812,
-2943126, -430570, 4563940, 83215, 4833986, 6055367, -5683853, -1026497, 11294153, 10241886,
--3532074, -7452305, -8241506, -8363912, -4278325, 8814347, -5221070, 4457103, 1188095, -9896678,
-25770, -6205691, -117038, 4233227, 5559299, -13093208, -5927592, -10177999, -2769180, 18292266,
-3211025, -368293, 2261300, -352724, 1583769, 6288906, 3707631, 9810779, 279173, 7677254,
-4549981, -4652524, 4530117, -7732015, 1009854, -7736310, -8746701, 5017059, -9687836, 5866389,
-670015, 6840809, 5054103, 5406827, -4741644, 8131447, -8603356, 1485522, -3431142, 274878,
-12931073, 2257542, 7095286, 7820599, 95563, -282394, 6207302, -7898445, 6050535, -18308372,
-2735894, 3687230, -12524662, 4799089, -613643, 11927124, -3831111, -7028177, 4810900, -16178068,
--5823976, 12409771, 5270462, -8662949, -19620484, 7817378, -3106872, 3952444, -12651900, -16958678,
--11405823, 13249437, 757525, 6942815, -1722819, -8239358, -11377368, 4363150, -3280281, -10446434,
--11536819, -67646, -10315438, -8600135, -4488778, -2907693, -11114302, 5122286, 6999723, 8826158,
--4922033, 7707856, -7231651, 12755516, -2755222, -1809255, 10344429, 4301410, -2746095, -8212515,
--3657702, 8961986, 2257005, -8774081, 3544422, 9497246, 10165114, 3042448, -12448426, -15161771,
--1181116, 1192390, 952946, -11475079, 3121368, 9247065, 3385508, -6484864, -17313550, 2690797,
--7250979, -19492710, 1095754, -1900523, -9004936, 9513353, -22628572, 13070659, 9945534, 10982768,
-1003412, 11636140, 612033, -8642548, -9790378, 651224, 9291625, -7581154, 1702418, -15549392,
-9558987, 9997610, -5994701, -3831648, 1926830, 10995116, 8049306, -6889128, -5975374, 7243999,
--10191957, 2521146, -13730474, -853625, -4391067, -18578954, -18764712, 2687039, 10100689, 4016331,
--16064788, -9320616, 11519102, -14154065, -5907191, 9680319, -3260417, 12314208, -5052492, -10240276,
-3115999, -14472966, 15152108, -2674154, 2396055, -8317741, -4032438, -1714766, -14892799, -10008884,
-839666, -3519726, 1126892, -5910949, -15772731, 1664300, -13115756, 4413079, -3555159, 7872675,
--15761993, 5496485, 2267743, -5934034, 11076184, -3132642, -8394514, -17030620, -2691334, 1117228,
--13206488, 6073084, -10030896, -3287798, 6784975, -7310571, 1986422, 8201777, 12173011, -3629784,
-965831, -4751845, -17255568, -3854196, -4064113, 7058242, -15246597, -267899, -9018358, 8958765,
--10845866, -14265197, 8831527, 4140349, 5540508, 19258096, -3768834, -5677410, 4884989, -12516072,
--15096273, 1126355, 17939004, 5604396, 9779641, -7421704, -9771587, -14747307, 2272038, 18887656,
--9143449, 9921911, 1548336, 14756434, -23155780, -6993281, -1131187, 2803540, 11995307, 6366752,
--17882096, -4381941, -8746701, -389768, -20511154, -2760590, -7940321, 1741609, -11234024, -252329,
-1503775, -28228136, 2371896, -8447127, 826244, -10737955, -1570347, 7776575, 2650532, -3060164,
--4591320, -14231374, 14310294, 15675557, 4002910, 4839892, -13715441, 21385180, 7199976, 10886131,
-27707908, 10084583, 19139984, -17585206, 4740570, 19441706, -5145908, -6394670, 3257733, -11308112,
-9552544, 2682744, -13101261, -17554068, -725850, 15600932, 244276, -868120, 10615549, -14532559,
--3118146, -11922292, 7565048, -20563230, 1049046, -4180077, 8310225, -21531744, -14316200, -9285182,
-7143605, 7226820, 5629092, -6879464, 6088116, -5095442, 7271917, -4177930, -1078574, -1393717,
--5270462, 4221416, 10512469, 5783711, 10597295, -794032, -8508867, 1308354, -8448201, 24904368,
--5364414, -24700356, -6686191, 6537477, 22335440, -21604222, -7798587, -1700807, 14754286, 491237,
--29188060, -4192425, 15016279, 28228672, 2141578, 19342922, 29984240, -3030636, 10382010, 12576738,
--2719788, 23295902, -2292439, 28082106, 5662378, -10225243, -24865714, 11411728, 13829258, -23790360,
--23114440, 6081137, -5385889, 682363, -9179956, 21511880, -9658845, -6260452, 7536594, 5328981,
-261456, -9943386, -7152731, -12090333, 4916664, -791348, -5710696, -1061394, 14450417, 21426518,
--23169202, -1605244, -22582938, -2545305, -5717675, 22393422, -9337796, -9227200, -4184372, 13566191,
-4763656, 3635153, 5980742, 5333813, -3814468, 115427, -2669859, 3503620, -2384244, 20927766,
--5159867, 5438503, 15211700, -7889318, -16643535, 3638911, 6241661, -6141267, -6060199, -1561758,
-4025995, 10572599, -14024142, 19458886, 29403882, 19250580, -7374996, -11686069, -25857850, -34372088,
--11768210, -57445, -5218922, -1569811, -2758980, 8538932, 651761, -12726525, 8643085, -4927938,
-908922, 14365055, 24283746, -11950747, 23438174, 10708427, 13462575, 20063402, 30829812, -11428371,
-16096464, -31133144, -3573413, -13796509, -30596274, 12811351, 7612830, 9717364, 4427575, 12556337,
-4032974, -21922586, 19019188, 33390150, -4654671, -5008469, 8395587, 3600793, -6614250, -29174640,
-2711735, 419833, -2385318, 715649, 10329933, -20764020, 4862440, 6307160, -4036733, -11839077,
--5626944, -13230110, 14106283, -29948270, -4082367, -19144816, 11125576, 4705674, 11282879, -3521336,
-3308199, -7405598, 18855980, 5916855, 15546171, -13493714, 15297063, 10737, -14278082, 30593052,
--4636954, 4070019, 20812338, -19241990, 23303418, 14076218, -17497696, 7989713, -6382322, 10512469,
--24334210, 18671834, 3148748, 6972343, -1693291, 6632503, -19476066, 14012868, 23620710, -41516228,
-4712653, 18628346, -10965052, -13261785, -220654, -12698071, -5632850, -33837364, -28792388, -3860102,
--16410533, -19844896, -14165339, 9000104, -4872104, -9998147, -15972447, 15113453, 1294396, -24441586,
--3570729, -47782, -11366094, -3591130, 10290205, 7235946, -1382443, 158914, 825707, -6098317,
-5612986, 11513197, -3903052, -2685965, 18003966, -33007360, -4953708, 9338333, 35692252, -14562623,
--8670465, -13123273, -17389248, 7820062, 37915436, 6959995, 23709830, 4794257, -3231963, -1948305,
--2165201, -18041010, 4590783, 4085051, -14018773, 3256659, 29920890, -4736275, -8252780, 4903242,
--9681930, -2394981, 26630944, 38114612, 11213086, 22907208, 27445378, -9315247, -9923522, 3119220,
--7486665, 1677722, -24715390, 56371, -18659486, 6697465, 6497212, 12980465, 27364310, 30877056,
--11955578, 69464120, -9202504, 1912334, -12500502, 8475044, -5126581, 8374113, 18035104, 5375689,
--16291885, -8646843, -17042968, 64425, -11496017, -21081310, 3121368, 14269492, -2116882, 4411469,
-6826851, 8523899, 88584, -5813775, -7878044, 4480725, 135828, -10310606, 4369593, 30102352,
-21166672, 12324946, -25065430, 18484466, 14271639, -6260989, -7591892, -7325604, -10007274, -3952444,
-8219494, -17861696, 1764695, 2660195, 10937134, 28719910, 5419175, 6254010, 1443109, -3015604,
--5884105, 12657269, -7661685, 28972238, 8922258, -2423435, 12165495, 2704756, -19758460, -13579613,
-15665893, 19010062, 6206228, -4494684, 11496554, 13531831, 17852568, 37344740, 2335389, -10946798,
--21522082, -13383118, 6208912, 803159, 7063611, 11259794, -10695005, 49486612, -7305740, 2143189,
-5528697, -3687766, -637803, 12445741, -9141838, -10824928, -5651103, 16048682, 14348412, -38160248,
-7435662, 6604049, 15703474, -9706089, -15008763, -14294725, 11014444, 9971303, -15325517, -8338679,
--6234145, 25810070, 13044353, 7322383, -4877472, -26547192, 7671349, 6805376, 13868986, -3203509,
-7445863, -7295539, 2756832, -23055384, 9788230, 9554692, 532039, -5660767, -14304925, -28721520,
-18904836, -12075301, 9861245, 9881109, 16785270, 2307471, -17217450, 29169808, 6084358, -28613608,
--12830141, 16953310, 4528506, 22157200, 9986336, 3384971, -19740744, -10493142, 12048994, -36010616,
-38907572, -28108414, 2481954, 21572010, -5029944, 43401720, 8135742, 5166846, -14798310, 47212964,
-7035694, 13622563, -8250632, 15217069, 38650948, 11399917, 23492398, 30487826, -3499862, 35269196,
--30929670, -12486007, -12946105, -11700565, 1918240, 3938485, -4553202, -14917495, -26877368, 21606370,
-20383378, 7333657, 18213882, -35442608, -30851286, 7494181, 11679627, -17585744, -23644332, 11563663,
--8869107, -33219424, -13450227, -8147553, 13270375, -30742840, 13713294, 8438000, 10444824, -15603616,
--2838437, -15470472, -7823283, -40246528, -11273752, 16079284, -62151396, -21384642, -4310000, -3691525,
-88047, -38537132, -10981158, -56860000, -6503118, 8374650, -17457968, -19457276, -8973797, 13963476,
--7432978, -22089554, -24267102, -59310276, -22098680, 24131274, -26942866, -40755480, 30311732, -12563853,
--44670344, 10502806, 37302864, -23283554, -10836739, 2204392, -29396904, 32452772, 48059612, 66020088,
--9165997, -1157494, -24437290, -24850144, -43113420, 19512036, -6346888, 65737160, -12517682, -27492622,
--37902012, 2850248, 13492640, -13956496, 13635984, 42991548, -15453292, -7183333, -28252294, -13179644,
-30269318, 33449206, -31871878, -9267466, 18705120, -7081328, 9210557, -9914395, 43466680, 33484102,
-72958072, 23133768, 33297270, -14165876, 24443732, 47925392, 17542258, -3377455, 13208098, -2010045,
-33427730, 15946677, 47878148, 12337830, -43997644, 15563888, 20074140, 37279244, -18967112, -18979460,
-24437290, 22921166, -8904004, 37136972, -10805064, 14448270, -39362300, 25224342, -7093676, 13052406,
-17827336, 31810138, 32015224, -25022480, -21045340, -9910637, 38322384, 33093796, -10138270, -22541598,
--34566972, -7676181, 29779692, 25742960, 21635360, -13237089, -50087908, 6408628, 83737904, 51058572,
--8514236, -115997936, -14163728, -9398462, 12111271, -10867341, 5101348, 15001247, -1654099, 7957501,
--22910966, 19094350, 22776748, 39276404, -23550916, -30913028, 37668472, 57490820, 16877610, -21814676,
--29430726, -4398584, 11280732, 5662915, 11833709, 2800319, 15278809, 7468412, 39084204, -8838506,
--45939508, -18709952, 19172198, 8434242, -13629005, -18888730, 6323266, 25898652, 44754096, 40543956,
-2780991, 3372623, 19189378, -11854110, -38731480, 15728170, -22655952, 53879828, 59901908, 1788317,
-19869592, 10990284, 15357729, -21671868, 785979, 56353192, -15525233, 3758097, -67561984, -6205154,
-13125957, 20274930, 20974472, 18711562, -12288975, -7271380, 38828652, 52158084, -1570347, 2469606,
-13111461, 4646081, -7066832, -54323284, -22900766, 41609108, 46235860, 43539696, 59810640, 9229885,
--26749056, -81123344, -61284352, -12734578, 16325708, 49241264, 54520316, 24581708, 707596, -28367186,
--23695872, -11941083, 16750372, 45530412, 26433914, -8060043, 1338419, -5785321, -26306138, -37554120,
--29393682, 3294777, 43219184, 30411052, 65164856, 40149356, 41886668, 56749404, -17513266, -43679280,
--46839840, -64775088, -76448808, -31821412, -9192304, 19408958, 41786812, 57178364, 56466472, 42364484,
-28944322, 54318452, -11577621, -41014252, -1919850, -13878650, 15210090, 12781823, 69310032, 55484000,
--22808424, 5228586, -16065862, -52650932, -13994077, 5593658, -28284508, 35767412, -17621714, 6088116,
-3363496, -14231374, 37114424, 41347112, 41303628, 16900160, -21365852, -65760244, 28614682, 8571144,
--113195472, -119373784, -124563176, -127673808, -170967616, -12829604, -43992276, -5721434, 22600654, 87104088,
-97692792, 101225936, 138636720, 189878352, 181632560, 179155440, 144543904, 106608608, 78473344, 28202366,
--78244104, -33931316, -44117368, -24447490, -95349888, -10570988, -36575940, -39815956, -78340200, -58018028,
--60381872, -53123912, -57105884, -102511744, -91585880, -51014548, -47166792, -58877024, -85312544, -8396661,
--74589624, -142775456, -123586608, -106487808, -56058452, -71206264, -11475616, -148966112, -66236984, -64295124,
--30500710, -19963008, -78677896, 5680631, -79725864, -8126078, 10333691, 37372656, 67646, 37189584,
-51870320, 86833504, 88219168, 126453504, 76083200, 198264288, 116953032, 228322608, 145057696, 222231264,
-251893392, 303824928, 234061760, 232163376, 243998704, 160720368, 68846712, 44360568, 0, 0,
-0, 0, 0, },
+11555073, -3087008, 1925219, -3746822, 1478543, -8167954, 453119, -2434710, 2946885, -4432406,
+-3198677, -853088, 3000572, -613107, -497142, -1694365, -2312840, -5465883, -1149978, -4561792,
+-2443300, -3861176, 1732482, -814970, 300648, 1947768, 1156420, -2690797, 1243393, -944893,
+-223875, -1005022, -857383, -2404645, 176094, -4378719, 5513128, -1662689, -1314797, -850404,
+348966, -37044, 655519, -5102421, 378494, 2211908, 176094, 957778, -111669, 1155346,
+4165045, -1309965, 2567317, 2994666, -4387846, -1378685, -1044214, 4114042, -770410, 1263794,
+4692252, 31675, -1297080, 1014149, 1377074, 1369558, 401579, 2407866, 30065, -733903,
+1975685, -2028835, 630286, -108448, -3620121, 13587129, 1753957, -5662378, 2247879, -3496640,
+1206349, -2197950, -1301375, -3015604, 2529199, 4195646, 1381906, 1464047, -7058779, 1660542,
+361314, 2496987, 3016141, 1755031, 4423280, -656056, -2107218, 670015, 5242008, 258235,
+-3597572, -159451, 4499515, 2541547, 698469, 266825, 1439888, 115964, 567473, 1048509,
+107374, -1299228, 64425, 258235, 1919850, -2276870, -5622112, 4548907, 4576288, 3996467,
+3793530, 28991, 2186138, 3591130, -3304441, -596464, 164819, -4536023, 1330903, 542777,
+4551592, 632971, 2670933, 252866, 5662915, 2908767, -513249, 3947612, 2572686, -1083942,
+-4116726, 1229971, 1442035, -1056025, 629213, -2418067, -350040, 2311229, 1873680, 1918777,
+4709432, 11413876, -7476465, 2639258, 6470905, 1573569, 4592394, 5521181, -4842039, 1116155,
+-344671, 2192044, -6158983, -4904853, -812823, 4945655, 6727530, -2465311, -2064806, 3234110,
+-5237176, -7111929, -1191853, -8376260, 3027415, 2860448, 906775, -5183489, -5187247, 1954747,
+-2952790, 779000, 0, 5618354, 6034429, 5359046, -692564, 3773129, -5633924, 2586644,
+-3243774, -255014, 496069, 4599373, -4704063, -4287451, 235149, 6036577, 2670396, 2403571,
+-3397319, 2099165, 1705639, -1676111, -7225209, -1117765, -2286533, -3176128, -2697240, 3535295,
+-2874407, -885300, 1053341, 2273648, 5645198, -1879048, 173409, -3833795, -1646046, 1089848,
+-5275294, -32212, 1860795, 4240744, -886911, -2325725, -1169305, -4734665, -4351339, -7599945,
+-2158221, 890669, -2585034, -4025995, -2381023, -7583302, -4414690, 7270306, -652835, -3751117,
+3702799, -6484864, -1745367, -7999914, -1928977, -6386617, -3485366, 6682969, 29528, -1820529,
+-8308614, -5356361, -2137283, -3804804, 1009854, -4636954, 77846, 2240362, 8111046, 3740380,
+2832531, 3249680, 6503118, -6159520, -401579, -2141041, -4763656, 1402844, -1239098, -2157684,
+-4969277, 1978369, 4542465, 63351, -3872450, -2725694, 12145631, -413391, -3917010, -5471789,
+-7813620, -10461467, -1576253, -5675263, 864362, -1534914, 2450816, -23085, 1010391, -5145908,
+344134, 157840, 5690832, 1415729, -4871567, -412854, -1774895, -2062121, -1470489, 1362578,
+2801929, 2262374, -3474629, -17268990, 7063074, -2947421, 3074123, -7039452, -2752000, -5468030,
+-5017596, 537408, -1481764, -3348464, 9023189, 2499134, -686121, -5185100, -1569811, 2706366,
+-6040335, -3053722, -5749888, -3051038, 8612483, 1052804, 5779952, -309775, 59056, -1187559,
+1717450, 1814087, -4393752, 308164, 1456531, 2798171, 9316858, -4549981, -5480915, -830539,
+10290205, 3488050, 10943040, 1248762, 1095217, -1619203, 5452461, -624381, 7992934, -488016,
+-825171, -1096290, -3191698, 3690451, 1115618, -2476049, 2394444, 3327526, 5586142, -2807835,
+-171262, -612033, 4996658, -1614371, -703838, -1448478, -1120450, 1574106, -1457605, 971736,
+983548, -787053, 1387274, -7691213, 979789, 5633924, 2081985, 7351911, 849867, 889058,
+2204929, -3906810, -2015413, -255551, -8791261, -1617592, -89657, -4468377, -15423764, -3877819,
+-3457449, -6827388, -1462973, -1889786, 9388262, -3495030, 7062000, 3202435, 5050882, -9990094,
+-4565014, -10093173, -9364102, -190052, 1579474, 5584531, -2931852, -4515085, -2812130, -6885370,
+1289027, 2868501, 3366718, 1979980, -2171106, 2317135, -4607963, 302258, -8199630, 2734284,
+-2209224, 926639, 1653562, 2837900, 3095598, -3257196, 5369, 7641284, -4300336, 3617973,
+3867618, -426276, 2277943, 3681324, -1684164, 1355599, 3695283, 54224, 6592238, -3644817,
+-4704600, -2376191, 2108829, -147640, -8948564, -4621385, -9900973, -10807748, -1882269, 2820720,
+-8778913, 3847754, -1464584, -145492, -3031173, 3027952, -5224291, -524523, 4747013, -14382772,
+-854699, 4218732, 2621004, -7735773, -1073205, -5002563, 1085553, 1225676, 890132, -8453033,
+-11150809, -7740605, 1165547, -6241661, 6454799, 1835025, -10718091, 7413114, 6621229, 5057324,
+4671851, -5541045, 8557722, 2004676, -138513, -3648575, 2855617, 4883915, -4799626, -7270843,
+2533494, -2940442, -8669928, -1473711, -8357470, -3368328, 15079093, -4365835, -6784438, -8761733,
+480499, 1015223, 6027987, 2021319, -5490042, 4647155, -592169, -4735202, -5681705, -6507949,
+9379135, 3744138, 5957120, -4858682, -5949067, 2296734, 1638530, -6695317, -161598, -4293357,
+6189048, -1635846, 737661, -7859790, 4938676, 3457986, -3939022, -3175055, -2318209, 7914014,
+411243, 898185, -2101313, 5722507, -5661304, -7341173, -56371, 2162516, -1639604, -5806796,
+-8771934, -6955163, 7554848, 1138166, 9197672, 10964515, 10617159, 1865626, 14474577, 3711389,
+-1335198, 6878927, 5262946, 13447543, 2130841, 7863012, -10143639, 17382806, 12788265, 6381248,
+-4964446, -3801046, 6382859, 1735704, 4632659, -2226941, 7564511, -1886564, -1718524, 6937446,
+5566815, -6431177, 4719632, -1492501, 7341173, 8102456, -15123654, -2509335, 9574556, 3148211,
+5272609, 4343286, 9459665, -4209605, 3860639, 466541, -7750806, -3546569, -126702, 1912334,
+-11462194, -715112, 7347616, -5517423, 12275553, 9403831, -3695819, 90194, 2319819, 4755603,
+7081328, -2658585, -2430952, 11623792, -2930242, -312459, 4744328, -26307, 6301791, 4745402,
+1386738, 1766842, 30563524, -14653892, 3023657, 13133473, -327491, 1341640, 17048336, 18678812,
+2943126, -430570, 4563940, 83215, 4833986, 6055367, -5683853, -1026497, 11294153, 10241886,
+-3532074, -7452305, -8241506, -8363912, -4278325, 8814347, -5221070, 4457103, 1188095, -9896678,
+25770, -6205691, -117038, 4233227, 5559299, -13093208, -5927592, -10177999, -2769180, 18292266,
+3211025, -368293, 2261300, -352724, 1583769, 6288906, 3707631, 9810779, 279173, 7677254,
+4549981, -4652524, 4530117, -7732015, 1009854, -7736310, -8746701, 5017059, -9687836, 5866389,
+670015, 6840809, 5054103, 5406827, -4741644, 8131447, -8603356, 1485522, -3431142, 274878,
+12931073, 2257542, 7095286, 7820599, 95563, -282394, 6207302, -7898445, 6050535, -18308372,
+2735894, 3687230, -12524662, 4799089, -613643, 11927124, -3831111, -7028177, 4810900, -16178068,
+-5823976, 12409771, 5270462, -8662949, -19620484, 7817378, -3106872, 3952444, -12651900, -16958678,
+-11405823, 13249437, 757525, 6942815, -1722819, -8239358, -11377368, 4363150, -3280281, -10446434,
+-11536819, -67646, -10315438, -8600135, -4488778, -2907693, -11114302, 5122286, 6999723, 8826158,
+-4922033, 7707856, -7231651, 12755516, -2755222, -1809255, 10344429, 4301410, -2746095, -8212515,
+-3657702, 8961986, 2257005, -8774081, 3544422, 9497246, 10165114, 3042448, -12448426, -15161771,
+-1181116, 1192390, 952946, -11475079, 3121368, 9247065, 3385508, -6484864, -17313550, 2690797,
+-7250979, -19492710, 1095754, -1900523, -9004936, 9513353, -22628572, 13070659, 9945534, 10982768,
+1003412, 11636140, 612033, -8642548, -9790378, 651224, 9291625, -7581154, 1702418, -15549392,
+9558987, 9997610, -5994701, -3831648, 1926830, 10995116, 8049306, -6889128, -5975374, 7243999,
+-10191957, 2521146, -13730474, -853625, -4391067, -18578954, -18764712, 2687039, 10100689, 4016331,
+-16064788, -9320616, 11519102, -14154065, -5907191, 9680319, -3260417, 12314208, -5052492, -10240276,
+3115999, -14472966, 15152108, -2674154, 2396055, -8317741, -4032438, -1714766, -14892799, -10008884,
+839666, -3519726, 1126892, -5910949, -15772731, 1664300, -13115756, 4413079, -3555159, 7872675,
+-15761993, 5496485, 2267743, -5934034, 11076184, -3132642, -8394514, -17030620, -2691334, 1117228,
+-13206488, 6073084, -10030896, -3287798, 6784975, -7310571, 1986422, 8201777, 12173011, -3629784,
+965831, -4751845, -17255568, -3854196, -4064113, 7058242, -15246597, -267899, -9018358, 8958765,
+-10845866, -14265197, 8831527, 4140349, 5540508, 19258096, -3768834, -5677410, 4884989, -12516072,
+-15096273, 1126355, 17939004, 5604396, 9779641, -7421704, -9771587, -14747307, 2272038, 18887656,
+-9143449, 9921911, 1548336, 14756434, -23155780, -6993281, -1131187, 2803540, 11995307, 6366752,
+-17882096, -4381941, -8746701, -389768, -20511154, -2760590, -7940321, 1741609, -11234024, -252329,
+1503775, -28228136, 2371896, -8447127, 826244, -10737955, -1570347, 7776575, 2650532, -3060164,
+-4591320, -14231374, 14310294, 15675557, 4002910, 4839892, -13715441, 21385180, 7199976, 10886131,
+27707908, 10084583, 19139984, -17585206, 4740570, 19441706, -5145908, -6394670, 3257733, -11308112,
+9552544, 2682744, -13101261, -17554068, -725850, 15600932, 244276, -868120, 10615549, -14532559,
+-3118146, -11922292, 7565048, -20563230, 1049046, -4180077, 8310225, -21531744, -14316200, -9285182,
+7143605, 7226820, 5629092, -6879464, 6088116, -5095442, 7271917, -4177930, -1078574, -1393717,
+-5270462, 4221416, 10512469, 5783711, 10597295, -794032, -8508867, 1308354, -8448201, 24904368,
+-5364414, -24700356, -6686191, 6537477, 22335440, -21604222, -7798587, -1700807, 14754286, 491237,
+-29188060, -4192425, 15016279, 28228672, 2141578, 19342922, 29984240, -3030636, 10382010, 12576738,
+-2719788, 23295902, -2292439, 28082106, 5662378, -10225243, -24865714, 11411728, 13829258, -23790360,
+-23114440, 6081137, -5385889, 682363, -9179956, 21511880, -9658845, -6260452, 7536594, 5328981,
+261456, -9943386, -7152731, -12090333, 4916664, -791348, -5710696, -1061394, 14450417, 21426518,
+-23169202, -1605244, -22582938, -2545305, -5717675, 22393422, -9337796, -9227200, -4184372, 13566191,
+4763656, 3635153, 5980742, 5333813, -3814468, 115427, -2669859, 3503620, -2384244, 20927766,
+-5159867, 5438503, 15211700, -7889318, -16643535, 3638911, 6241661, -6141267, -6060199, -1561758,
+4025995, 10572599, -14024142, 19458886, 29403882, 19250580, -7374996, -11686069, -25857850, -34372088,
+-11768210, -57445, -5218922, -1569811, -2758980, 8538932, 651761, -12726525, 8643085, -4927938,
+908922, 14365055, 24283746, -11950747, 23438174, 10708427, 13462575, 20063402, 30829812, -11428371,
+16096464, -31133144, -3573413, -13796509, -30596274, 12811351, 7612830, 9717364, 4427575, 12556337,
+4032974, -21922586, 19019188, 33390150, -4654671, -5008469, 8395587, 3600793, -6614250, -29174640,
+2711735, 419833, -2385318, 715649, 10329933, -20764020, 4862440, 6307160, -4036733, -11839077,
+-5626944, -13230110, 14106283, -29948270, -4082367, -19144816, 11125576, 4705674, 11282879, -3521336,
+3308199, -7405598, 18855980, 5916855, 15546171, -13493714, 15297063, 10737, -14278082, 30593052,
+-4636954, 4070019, 20812338, -19241990, 23303418, 14076218, -17497696, 7989713, -6382322, 10512469,
+-24334210, 18671834, 3148748, 6972343, -1693291, 6632503, -19476066, 14012868, 23620710, -41516228,
+4712653, 18628346, -10965052, -13261785, -220654, -12698071, -5632850, -33837364, -28792388, -3860102,
+-16410533, -19844896, -14165339, 9000104, -4872104, -9998147, -15972447, 15113453, 1294396, -24441586,
+-3570729, -47782, -11366094, -3591130, 10290205, 7235946, -1382443, 158914, 825707, -6098317,
+5612986, 11513197, -3903052, -2685965, 18003966, -33007360, -4953708, 9338333, 35692252, -14562623,
+-8670465, -13123273, -17389248, 7820062, 37915436, 6959995, 23709830, 4794257, -3231963, -1948305,
+-2165201, -18041010, 4590783, 4085051, -14018773, 3256659, 29920890, -4736275, -8252780, 4903242,
+-9681930, -2394981, 26630944, 38114612, 11213086, 22907208, 27445378, -9315247, -9923522, 3119220,
+-7486665, 1677722, -24715390, 56371, -18659486, 6697465, 6497212, 12980465, 27364310, 30877056,
+-11955578, 69464120, -9202504, 1912334, -12500502, 8475044, -5126581, 8374113, 18035104, 5375689,
+-16291885, -8646843, -17042968, 64425, -11496017, -21081310, 3121368, 14269492, -2116882, 4411469,
+6826851, 8523899, 88584, -5813775, -7878044, 4480725, 135828, -10310606, 4369593, 30102352,
+21166672, 12324946, -25065430, 18484466, 14271639, -6260989, -7591892, -7325604, -10007274, -3952444,
+8219494, -17861696, 1764695, 2660195, 10937134, 28719910, 5419175, 6254010, 1443109, -3015604,
+-5884105, 12657269, -7661685, 28972238, 8922258, -2423435, 12165495, 2704756, -19758460, -13579613,
+15665893, 19010062, 6206228, -4494684, 11496554, 13531831, 17852568, 37344740, 2335389, -10946798,
+-21522082, -13383118, 6208912, 803159, 7063611, 11259794, -10695005, 49486612, -7305740, 2143189,
+5528697, -3687766, -637803, 12445741, -9141838, -10824928, -5651103, 16048682, 14348412, -38160248,
+7435662, 6604049, 15703474, -9706089, -15008763, -14294725, 11014444, 9971303, -15325517, -8338679,
+-6234145, 25810070, 13044353, 7322383, -4877472, -26547192, 7671349, 6805376, 13868986, -3203509,
+7445863, -7295539, 2756832, -23055384, 9788230, 9554692, 532039, -5660767, -14304925, -28721520,
+18904836, -12075301, 9861245, 9881109, 16785270, 2307471, -17217450, 29169808, 6084358, -28613608,
+-12830141, 16953310, 4528506, 22157200, 9986336, 3384971, -19740744, -10493142, 12048994, -36010616,
+38907572, -28108414, 2481954, 21572010, -5029944, 43401720, 8135742, 5166846, -14798310, 47212964,
+7035694, 13622563, -8250632, 15217069, 38650948, 11399917, 23492398, 30487826, -3499862, 35269196,
+-30929670, -12486007, -12946105, -11700565, 1918240, 3938485, -4553202, -14917495, -26877368, 21606370,
+20383378, 7333657, 18213882, -35442608, -30851286, 7494181, 11679627, -17585744, -23644332, 11563663,
+-8869107, -33219424, -13450227, -8147553, 13270375, -30742840, 13713294, 8438000, 10444824, -15603616,
+-2838437, -15470472, -7823283, -40246528, -11273752, 16079284, -62151396, -21384642, -4310000, -3691525,
+88047, -38537132, -10981158, -56860000, -6503118, 8374650, -17457968, -19457276, -8973797, 13963476,
+-7432978, -22089554, -24267102, -59310276, -22098680, 24131274, -26942866, -40755480, 30311732, -12563853,
+-44670344, 10502806, 37302864, -23283554, -10836739, 2204392, -29396904, 32452772, 48059612, 66020088,
+-9165997, -1157494, -24437290, -24850144, -43113420, 19512036, -6346888, 65737160, -12517682, -27492622,
+-37902012, 2850248, 13492640, -13956496, 13635984, 42991548, -15453292, -7183333, -28252294, -13179644,
+30269318, 33449206, -31871878, -9267466, 18705120, -7081328, 9210557, -9914395, 43466680, 33484102,
+72958072, 23133768, 33297270, -14165876, 24443732, 47925392, 17542258, -3377455, 13208098, -2010045,
+33427730, 15946677, 47878148, 12337830, -43997644, 15563888, 20074140, 37279244, -18967112, -18979460,
+24437290, 22921166, -8904004, 37136972, -10805064, 14448270, -39362300, 25224342, -7093676, 13052406,
+17827336, 31810138, 32015224, -25022480, -21045340, -9910637, 38322384, 33093796, -10138270, -22541598,
+-34566972, -7676181, 29779692, 25742960, 21635360, -13237089, -50087908, 6408628, 83737904, 51058572,
+-8514236, -115997936, -14163728, -9398462, 12111271, -10867341, 5101348, 15001247, -1654099, 7957501,
+-22910966, 19094350, 22776748, 39276404, -23550916, -30913028, 37668472, 57490820, 16877610, -21814676,
+-29430726, -4398584, 11280732, 5662915, 11833709, 2800319, 15278809, 7468412, 39084204, -8838506,
+-45939508, -18709952, 19172198, 8434242, -13629005, -18888730, 6323266, 25898652, 44754096, 40543956,
+2780991, 3372623, 19189378, -11854110, -38731480, 15728170, -22655952, 53879828, 59901908, 1788317,
+19869592, 10990284, 15357729, -21671868, 785979, 56353192, -15525233, 3758097, -67561984, -6205154,
+13125957, 20274930, 20974472, 18711562, -12288975, -7271380, 38828652, 52158084, -1570347, 2469606,
+13111461, 4646081, -7066832, -54323284, -22900766, 41609108, 46235860, 43539696, 59810640, 9229885,
+-26749056, -81123344, -61284352, -12734578, 16325708, 49241264, 54520316, 24581708, 707596, -28367186,
+-23695872, -11941083, 16750372, 45530412, 26433914, -8060043, 1338419, -5785321, -26306138, -37554120,
+-29393682, 3294777, 43219184, 30411052, 65164856, 40149356, 41886668, 56749404, -17513266, -43679280,
+-46839840, -64775088, -76448808, -31821412, -9192304, 19408958, 41786812, 57178364, 56466472, 42364484,
+28944322, 54318452, -11577621, -41014252, -1919850, -13878650, 15210090, 12781823, 69310032, 55484000,
+-22808424, 5228586, -16065862, -52650932, -13994077, 5593658, -28284508, 35767412, -17621714, 6088116,
+3363496, -14231374, 37114424, 41347112, 41303628, 16900160, -21365852, -65760244, 28614682, 8571144,
+-113195472, -119373784, -124563176, -127673808, -170967616, -12829604, -43992276, -5721434, 22600654, 87104088,
+97692792, 101225936, 138636720, 189878352, 181632560, 179155440, 144543904, 106608608, 78473344, 28202366,
+-78244104, -33931316, -44117368, -24447490, -95349888, -10570988, -36575940, -39815956, -78340200, -58018028,
+-60381872, -53123912, -57105884, -102511744, -91585880, -51014548, -47166792, -58877024, -85312544, -8396661,
+-74589624, -142775456, -123586608, -106487808, -56058452, -71206264, -11475616, -148966112, -66236984, -64295124,
+-30500710, -19963008, -78677896, 5680631, -79725864, -8126078, 10333691, 37372656, 67646, 37189584,
+51870320, 86833504, 88219168, 126453504, 76083200, 198264288, 116953032, 228322608, 145057696, 222231264,
+251893392, 303824928, 234061760, 232163376, 243998704, 160720368, 68846712, 44360568, 0, 0,
+0, 0, 0, },
{
-9471477,
-10372883, -6034966, 430034, -5037460, 2355253, 1140314, 1713155, -5577015, -3837553, 120796,
--3586298, -407485, 2319282, -438087, -1240709, -635118, 2598455, -1077500, -1749662, 7144141,
--17180, -5595269, -2598455, 2393371, 570157, 2228014, -4943508, 539555, -5198521, 784905,
-4361540, -545461, 2752537, 2852932, 2631204, -2928094, -1270774, -1711008, 943819, -739808,
-1838246, -4839892, -2312840, -2051921, 247497, -1221381, 2700998, 3520800, 5583995, -2215130,
--3022046, -1438814, 1378685, 3658775, 4175782, 3382824, -759136, -4900021, 6252936, -4102768,
-2231236, -4314832, 3594888, -2860448, 2152852, -2602213, 195421, -2763812, -1953136, -203474,
--1003412, 2152316, 1381369, -365072, -4466766, 17122960, 2335925, -5506148, 2735357, 3099893,
-1123671, -6992207, 3316252, 5121749, -5334350, -1525250, -6555731, -1358283, -2741800, -2328946,
--879931, 471910, -156229, 782221, 2458332, -2844879, 1393180, -6682969, 2410014, 4292820,
-958315, -1666984, -5441724, 3724811, -2353105, 5952288, 5036386, -83215, -2246805, 4884452,
-5602248, 4593468, 4568772, 1264331, -3388729, 1232656, 4325032, -1631551, -3542811, 3403762,
-5202279, -2086280, 2749316, -5668283, -413927, -4941360, 3569655, -6628745, -1770063, -1064615,
-2414309, 3623342, 2494302, 41339, -3527779, 699006, -4905390, -3024731, 1028645, -311385,
--2887292, 1996086, 1851131, 828929, 3351148, -2340220, 1610076, -3209951, -1157494, -812286,
-2650532, 9663676, -9846749, 316754, 120796, -2534568, -2990908, -3186329, 963683, -5575405,
--5494337, 712965, 2595771, -259309, 3086471, 2385318, -3040300, 1175747, -10788421, -2686502,
--2445447, -2558190, -3430068, -3794067, -9510131, -7414724, 968515, 2157684, -548682, 5066988,
-4060892, 1665911, -1861332, -1080721, 4765803, -1912871, 560493, -758599, -5077188, 1629403,
--1721208, -3494493, -1359357, 4066260, 9933186, -3857418, 1082869, 2368138, -1872069, 3080029,
-1373316, -3539053, 2000918, -8290898, -3841848, 36507, 3337190, 5174362, -3238942, -1542967,
--394063, -11989401, 1998234, 6114960, 286689, 841814, 3320547, -1995012, 5202279, 7055021,
--984084, 1974074, 4162360, 4021163, 666257, 220117, -2148558, -2725157, -2707440, -8527121,
-1809792, 164819, -8244727, 1097901, 4418448, 6544457, 1592896, -4964446, 11217918, -1676111,
--2355790, 5174362, -3414499, -3369939, 428960, -4305705, 4939213, 4884989, -2158221, -7802345,
--3882651, 3621194, -5023501, 10608569, 9201967, -7628399, -9214852, 135828, 1596654, -8862665,
--672699, 3379603, 2325725, -4450123, -2572149, 9733470, -1159641, 6626061, -783295, -2452426,
--2416456, -5360119, 788127, -974421, 5262409, -4837207, 1136019, -1468342, 889058, -2978023,
--465467, 4233764, 3483755, -5980742, 8713952, 400506, -166967, -492311, -944893, 2018098,
--1364726, -8319352, -1285806, -4628364, 6702834, 2379412, -38655, 7882339, -4948876, 4973572,
-5217312, -346282, -4622996, -20413442, 4439923, 887985, 14200772, -972273, 5581310, -7939784,
-1457605, -5995775, -1603633, -3032247, -1133335, 2461553, -1779190, 2288144, 4629975, 3526705,
-13446469, 9259413, -6442988, 2958159, -571768, 2348273, 1370095, -1919850, -13837311, 3267933,
--949188, -303869, 4896263, -979789, -4058207, -2805151, -916976, -4387846, -2551211, -11025181,
--2838974, 120259, -4136054, -846109, 4191351, 6277632, -2404108, 7796440, -6286759, 1147830,
-2374043, 880468, -2207076, -4351339, 2588792, -1213865, 1432909, -3273302, -4843113, 667867,
-2144263, -4629975, 3804804, -3212099, 9669045, 10626286, -3802120, 3786014, 3573413, -703838,
--2011655, -1583769, -13839458, 5378373, 4612258, 51540, -3034395, -5609764, -315680, -2077154,
--6645925, -4148402, -6430640, 6775848, 3930969, -390305, 7793218, -3900367, 7006166, -7511898,
--7227893, 3792456, -11636140, -3984656, 3135863, 7380902, 9545028, -1438814, 7161321, -41339,
-6824166, 2672544, 1232119, -890669, 508954, 6869800, -3034395, -488016, 1348083, 792958,
--6430103, -599148, -3432216, 13789529, -6361921, -6350646, -1476395, 6621229, 6550899, 5755256,
-7504382, -1047972, 1463510, -1405528, -3569655, 3036542, -236760, -458488, -4108673, 10887742,
-6644315, -3040837, 2102923, 3397319, -5546414, 1447941, 4196183, -787590, 8033737, -2959233,
--994285, -8409009, -3242164, -7104950, 351114, 10455561, -3994857, 3155727, 1742683, 635655,
--2789045, -661425, 71941, -2224256, 4872104, -4828617, -2319282, -580894, -2021856, -18861886,
-14011257, 1658394, -6828461, -16625282, -1496796, 640487, -9783936, -680215, 4809290, 4176856,
-532039, -2648384, 3835943, 12268574, 12366285, -4986457, -5580773, -12985834, 2799782, -2128156,
-13009456, -4974646, -136365, -2743410, 4985384, -1160715, -13037373, 4619774, -477815, -7510824,
-146566, 1544578, -933082, -1009854, -5281736, -7210713, 4720169, 1479616, 6129992, -4854924,
-10225780, 5162551, -1953673, -8556649, -1644436, 3635153, 10002442, 3481608, -5451924, -2107755,
-4718559, 3420942, -2735894, -918049, 4968204, 4466766, 5238250, 10315975, 11052025, 5900212,
-5948530, 7311645, -3795677, 1613834, -7092602, 7911867, 1270237, 4387846, -5040681, -7237557,
-1937030, -9428527, -3642132, -3699041, 7433515, -6904160, -455803, 12776454, 7836705, 10794327,
-2014877, -11913166, -3959423, 12545063, -3680787, -8027294, -8360691, -8233453, -8707509, 4714264,
-4790499, 3058554, 2797634, 2891050, 12069395, -1544578, 5211406, -10452877, -11758010, 7797513,
--464393, -6435472, 410169, -16355772, -5375152, -5537287, 1955284, -613643, -1554778, -11515344,
--7562364, 1236951, 7875360, 12845173, -5159330, -5084705, 6810208, -8872866, -689342, -477278,
-2903398, 5614059, 4537633, 8911520, -4855998, 12932683, 6037114, -13989245, 6913287, -7769059,
--9359807, -7701950, -11315628, 10183904, 2279017, -11919608, 1241246, 2584497, 957778, 1979443,
--2380486, 8539469, -5126044, 6634114, -10721312, 8112120, -5717675, -4497905, 368293, 3984656,
--1597728, 6534793, 27433030, -23126252, 11931956, 12407087, -9924596, -1105954, 16757889, 6604049,
-10956462, 3856881, -2643016, 24764244, -100932, -3643743, 838056, 913754, 12353400, 18832894,
-7686381, 708133, 1236951, 3534758, 7064685, 746787, 4166118, -11747809, 6846715, 10641318,
--1161252, 4836133, 902480, 2659122, -7202660, -5488968, 1371705, 564251, 12030203, 6332393,
-5525476, -3828427, -4813048, -4892505, 7343321, 10152766, 1039382, -2121714, 19123878, 10276246,
-13115756, -5652714, -12539694, -1682554, -13161390, -8420820, -3232500, -4987531, 248571, 11562589,
--2268280, 1380295, -7561827, -8271570, 11739219, 504659, 6143414, 6368900, -4248260, 11311870,
-3994320, 2143189, -2075543, -5461588, 9593883, -947577, -12224014, 9831717, 9619653, -18932752,
-1954210, 5766531, -9439264, 7224672, -16064788, 3194919, 4536023, -2503966, -6501507, -8463233,
--9583146, -16292958, 1802276, 17505750, -6120329, 8167954, 4644471, 12848932, 6947110, -5615133,
--11635603, 5340255, -3026341, -4691715, -12015708, -2411624, -1686312, -5409512, -5167383, -3424163,
--8417062, -11709155, 12797392, -2004139, -7450695, 9287867, 3564823, -9588514, 1354525, -1489817,
-5781026, -12547747, 3364033, 3087008, -17128866, 4788889, 5747740, -9883793, 2695092, -391379,
--2619930, 5247377, 781147, -2381023, 977642, 3064996, 11862700, 7926899, 12125230, 6781754,
-4516695, -4581120, 17969606, -6116034, -8703751, 17813914, 1670205, 9894531, 2935073, -5953362,
--17766132, -19246822, -3759170, -1775432, -6325413, -6454799, -32050120, 14019847, 25552372, 731755,
--16228534, 5767604, -3891240, -2193118, 3277060, 1434519, 5771899, -9222369, -155693, 22726282,
-17267916, 14879914, -18605262, -1925219, 3222299, 7974681, -9489193, -10620380, -3481608, 1807108,
-7220914, 2898566, -23615878, -26815628, 6872485, -2101313, 13326210, 13502303, -10620380, 10940355,
-8750459, 11756399, -1985349, -9105868, -9201967, 4900021, -9685151, -4653060, -1114544, -1754494,
-6695317, 15191836, 8212515, -5982890, -5050882, -9688909, -3237332, -769336, 3342022, -3308199,
--4087198, 6582038, 3966939, -14163728, -1351841, -1156420, 13877039, -9320079, -9860171, -18238578,
--6794102, 935229, -118648, 6518687, -3046743, 41876, -8546448, -13144747, -11042361, -12420509,
--6737193, 2051921, -20866024, 4255776, 3914863, 3409667, 5444945, 16080894, 1655710, 14041322,
--1490891, 18096308, 9101573, 14251775, 8737037, 4570382, -6483790, -81604, -3967476, 10015864,
-3021510, 8898635, -7635915, -695248, 14778446, -17244294, -9841918, 14730664, -23510114, -9673877,
-1914482, -3723200, -11599096, 24678346, -4159139, 17337172, 6688875, -13453985, -2141041, -4462471,
--17323750, -21566104, 18008262, 853088, -6583111, 5515275, 275952, -1882806, 6476274, 3735548,
--2436320, -7073811, 1447404, 18289582, 14241575, -10547366, 4503810, 2356863, 13197898, -4617627,
-8819715, -17738214, -5027259, 14914274, 4038343, -2590939, 15302432, -3027415, 10527502, -19304268,
--25350508, -6533182, -194347, -14851460, 18173080, 16472273, 18356690, -5099200, -7515656, -1816234,
-21561272, 15500537, 24295556, -21627308, -16276852, -37030672, 15905875, -4136054, -31674846, -6146635,
-2948495, 4648229, -11875585, 12867185, 10814728, 1216013, -212601, 2005750, -5316633, -11016054,
-2345052, -6265821, -10396505, -136902, 23881092, 742493, -3744138, -19176492, 7975755, 15138686,
--7956427, -23139674, -4329327, 7792145, 2624225, -4918812, 4888747, 1636919, 8157754, -2354179,
-13548474, 20957292, 7744900, -13972602, 15603616, 7087233, -18086644, -19049254, 20425790, 9948218,
--8306467, -9333501, -739808, -16918950, 12028593, 16170015, -722628, 820876, 3722663, -2193655,
-17374754, 5848672, 4164508, -7527467, 2353105, 5829881, 21362094, -5472862, 7707319, -17241610,
--20244328, 17037062, -3706020, -1870995, 270046, 16214575, -2189360, -4095788, -5692443, -7866770,
--25631828, -2669859, -16967268, -33857764, -34838092, -15426986, -26729192, -12482786, -4786741, 4074313,
-14078366, 15693810, 1123671, -9468255, 17041356, -9580461, 8131447, -33472290, -3757560, -23170812,
--15635828, 14596446, 10194105, 9757092, 2957622, 21297132, -2720862, -2047626, -16314433, -6163815,
--3672197, -11453604, -11353746, -27666568, -11077794, -3677029, -4811974, -17394618, 14303852, 5164162,
-8359617, -8069170, -3268470, -41665476, -12230456, -12023224, 9054865, 20229296, -13343927, -2744484,
--24262270, -2497524, 11864847, -4699768, -8462159, 4556961, 17194364, 29209536, 5898064, 98784,
--2091649, -8942659, -12481712, 7112466, -8427800, 26281442, 4771709, 10705206, 54830088, -12165495,
--10501195, -15246597, -21267068, -27149026, 16419660, 26682484, -14769856, 1464584, 6438156, -8300025,
--1582696, -18742164, 161598, -10193568, 28794534, 717796, -4804995, 23412940, -5258651, 7337952,
--25538412, 14254460, 4486094, 18354542, -7771744, 13873818, 23538032, 25627532, 14335527, 23189602,
-11844446, -2761127, 22112102, -9725417, -14009110, -3773666, 9035537, 15584289, -35154844, -1587527,
--22658100, 19010062, 8444979, 391916, 6442451, 26297548, 1249299, 23565412, 9830106, 35252556,
-3192235, -3059091, 15130096, 5838471, -17506824, 4630512, -2049236, -22670448, 16470126, -13336410,
--23041962, -46112916, 3531000, -4947803, 27466852, -14552960, 36769216, 13020193, -854699, -4847408,
-14140643, 15991774, -27359478, -10781979, -20351166, 7710540, -9468255, 21002926, 5703717, 7008313,
-6076842, 19133006, -10639171, -12115029, -11815455, 18393198, 10268193, 23555212, 7595113, 70351568,
--19131932, 1509681, 1966558, 33316062, 14811732, 15995532, -19618874, 10334228, -6790880, 1627256,
--8200703, 3151969, 24881820, -5151814, 9022116, 45923400, 15794742, -19455128, -22141630, 3662533,
-31083216, 16156056, 7364259, -10522670, 26801670, 5036386, -1831804, -26675506, 10307385, -3628174,
-13791677, -24212342, -13188771, 1961726, -4268661, 3904662, -21103858, -213138, -11984569, 7129646,
-22843858, 16967806, 7706245, -31413390, 2661269, 3559991, -26247618, -25296820, -14437533, -13728326,
--11341398, 22963580, 7962870, -494458, 17714592, 23710366, 9337796, 20447802, 3744675, 13418015,
-93765040, -20885352, 18491444, 9992778, -12009265, 2960843, -55941948, 1926293, 16113644, 39275864,
--14397267, 1842004, -21961778, -15088757, 8378408, 18818936, -17774722, 27072252, 12687333, -28976534,
-22077742, -9992778, -13296145, 1621887, -16618839, 7470022, -6105833, 27639726, -11768210, 1955284,
-15944529, -44387412, 9185861, 17928268, -11975443, 14937896, -26361972, 31995896, 5473399, 8301635,
--52007224, 52458732, 23338852, 19595788, 3380676, -27413702, 30692374, 1831267, -11789148, 53874996,
--7708930, -18200998, -9329206, 9973451, 16780438, 17761300, 5924908, -4319127, -56777320, -2410551,
-17037598, 5255966, 23948200, -26449482, 34261492, 7956427, 13094282, -26610544, -6822556, 10168872,
-43056512, -11625403, 11809549, -23586350, 28082106, 20379620, 26586384, -3121904, 12918188, 10908143,
--30015916, -23292682, 18027052, 21156472, 6707129, -2270964, -43421584, 44522168, -6564858, -7441031,
--13902272, -2049773, -33802468, -64847028, 25747792, 22254910, -608275, -11043972, -25198036, -1586990,
--6207302, -11617350, 28973850, -57370564, -23527830, -28740848, -7211250, -42776800, -1935957, -3573950,
-659278, -4253628, -7022809, 10984379, 1870458, -16705275, -4041564, 3334505, -25528212, -10974178,
--5839008, 6101001, 23894514, -6800007, 45499808, -18102750, -709207, 22659710, -16620450, 16430397,
-5090610, -24522116, -41407244, -5601174, 14094472, 45736032, 20397336, -25046638, -9968619, -82390896,
--26383984, 131533, 22060026, 55037320, 1126892, -43994424, 6830609, 36099736, -5956046, 6472516,
-34455300, 41089952, 77020576, -67956048, -9062918, 24137716, 27579596, -9376450, -19865834, -21920440,
--25816512, 10727755, -26642220, 5619428, -11205570, -63369560, 13478681, -11314554, 17800492, -17901424,
--18636936, 805843, -27059368, 3977140, -27304718, -1001264, -5471789, -10813654, 11850352, -20160576,
--26683022, -23895050, -31202938, -5395553, -4281009, 33253784, 6419903, -24728274, -37419904, 4570919,
--1837172, 8504035, -8191040, 20221242, -25066502, -9563282, -34781720, -21503828, -10883447, 1181653,
--15454366, 35143568, -13552232, -29711510, 7924752, 36629628, 24938728, 11150809, -27190364, -16251083,
--4187056, 33589864, 61527552, 143345, 10696079, -11255499, -63657856, -12562779, 3656628, 24509768,
-50652160, -27820650, -38046432, 22620520, 7486665, -10519449, -1057099, -17432736, 9092446, -49641768,
--9497783, 6085432, 8599061, -27817966, 31307628, -46654084, -64932928, -48282412, 37720012, 11806328,
--66121020, -11429445, -45447196, 20867098, 4359929, -91208464, 6803765, -27835146, -58712204, -45823544,
--67041756, 42214696, -19956566, -52966072, -23201414, 17627620, -30953292, -27098022, -20521890, -12380780,
--22647362, -23095112, -42230804, -30943092, -58233852, -33106144, -29007672, -9585830, -26679800, -5319317,
--11711302, -360777, 3740380, 8374113, 18220326, -15857019, 15541876, 2234994, 32307280, 13870597,
-21010980, 19852412, -53500260, -13927505, 46983720, -6907381, -25191594, -30379914, -20435454, 18791556,
-74991736, -3806952, 2046015, -47298864, -45957760, -9249749, 13865228, 44384728, 1042066, 40696964,
-18932216, -45959372, 90575488, 3372086, 72052368, 2108292, -11125039, 38044820, -41412612, -59501404,
--32273994, -134386848, -74958992, -23296440, 70308616, -23045720, -56486872, 66381940, 63308892, -39460548,
--51641612, 268435, 56703768, -5566278, -3271155, -17005924, 49470508, -4789963, -13324062, -440234,
-13503914, 26254062, 446677, -18191334, -22027276, 31520228, 1904281, -12094628, -33107218, 19687056,
-9753871, -2536178, -26322244, 9352291, 10444287, 10528039, -16999480, -8368744, 2094333, 26695370,
--8274255, 10624675, -38021196, -8664023, -958315, 26166552, -52723408, -7386807, 3833795, 39088496,
--19137838, 7792682, -27750858, 5730560, 9447317, -15900506, -15409269, 206158, 4347581, 13808320,
--13572634, 3398393, -47938816, 27632208, -9758166, 45973328, -28936268, 22245784, -20556250, 23156854,
-1203128, 16719234, 8655970, -30039538, 34978752, 11025181, 18788334, -33425582, 7111392, -6153078,
-2836289, -19522236, -43176768, -57362508, 41519448, 27471684, -32780802, -46661060, -22940494, 21315386,
-11115912, 28415504, 30642982, 5828808, -15698105, -4741107, 10618233, -10812580, -1024887, 6151467,
-1593433, 17019344, 11905649, 4996121, -15671262, -813896, -9758166, 9762998, -16405701, -14340896,
-11669963, -4011500, -6757594, -6766721, -11440719, -15773267, 1054951, 12380780, 11425150, 9397388,
--3804267, -13079786, -11223823, -8072391, 13689671, 18461380, -8865886, -13455059, -5786932, 15242302,
-7945153, 20494510, -14835891, -5972152, 8143258, -4310537, 600222, -2629594, 7320772, 4026532,
-5907191, 829466, -14161581, 5397164, 2579128, -976031, 10899016, -6138582, -2786897, 1418413,
--1966558, 943282, -3963718, 18085034, 4921496, -1845225, 18312130, 16797618, 20016696, -47216188,
--124995896, -45676440, 22888418, 65663608, 138170176, 92634392, 24114094, 35385160, -18035104, -55633784,
--92765928, -80581104, -64062660, -18117246, 2836826, 45294188, 49767396, 105676056, 51412908, 34162168,
--2306934, -21926882, -50308564, -25785910, -40627168, -46699180, -28766080, -23808614, -1519882, 13699335,
-39643084, 24889336, 28523952, 26255136, 26216480, 39634496, 3614215, 27663884, -4788889, -11509975,
--32737852, -18971408, -48945984, -71640592, -63031868, 1467268, -10607495, 20594368, 34093988, 19435264,
-52497924, 46621868, 66292820, 38622492, 44930728, 3205656, 2160906, -34361884, -57990112, -66472136,
--81380504, -52074868, -66624068, -4115116, -628139, 33633352, 33014340, 82209432, 62353260, 92045448,
-35477504, 45042932, 16193100, 3987877, -55673512, -70020312, -29356102, -19980188, 0, 0,
-0, 0, 0, },
+10372883, -6034966, 430034, -5037460, 2355253, 1140314, 1713155, -5577015, -3837553, 120796,
+-3586298, -407485, 2319282, -438087, -1240709, -635118, 2598455, -1077500, -1749662, 7144141,
+-17180, -5595269, -2598455, 2393371, 570157, 2228014, -4943508, 539555, -5198521, 784905,
+4361540, -545461, 2752537, 2852932, 2631204, -2928094, -1270774, -1711008, 943819, -739808,
+1838246, -4839892, -2312840, -2051921, 247497, -1221381, 2700998, 3520800, 5583995, -2215130,
+-3022046, -1438814, 1378685, 3658775, 4175782, 3382824, -759136, -4900021, 6252936, -4102768,
+2231236, -4314832, 3594888, -2860448, 2152852, -2602213, 195421, -2763812, -1953136, -203474,
+-1003412, 2152316, 1381369, -365072, -4466766, 17122960, 2335925, -5506148, 2735357, 3099893,
+1123671, -6992207, 3316252, 5121749, -5334350, -1525250, -6555731, -1358283, -2741800, -2328946,
+-879931, 471910, -156229, 782221, 2458332, -2844879, 1393180, -6682969, 2410014, 4292820,
+958315, -1666984, -5441724, 3724811, -2353105, 5952288, 5036386, -83215, -2246805, 4884452,
+5602248, 4593468, 4568772, 1264331, -3388729, 1232656, 4325032, -1631551, -3542811, 3403762,
+5202279, -2086280, 2749316, -5668283, -413927, -4941360, 3569655, -6628745, -1770063, -1064615,
+2414309, 3623342, 2494302, 41339, -3527779, 699006, -4905390, -3024731, 1028645, -311385,
+-2887292, 1996086, 1851131, 828929, 3351148, -2340220, 1610076, -3209951, -1157494, -812286,
+2650532, 9663676, -9846749, 316754, 120796, -2534568, -2990908, -3186329, 963683, -5575405,
+-5494337, 712965, 2595771, -259309, 3086471, 2385318, -3040300, 1175747, -10788421, -2686502,
+-2445447, -2558190, -3430068, -3794067, -9510131, -7414724, 968515, 2157684, -548682, 5066988,
+4060892, 1665911, -1861332, -1080721, 4765803, -1912871, 560493, -758599, -5077188, 1629403,
+-1721208, -3494493, -1359357, 4066260, 9933186, -3857418, 1082869, 2368138, -1872069, 3080029,
+1373316, -3539053, 2000918, -8290898, -3841848, 36507, 3337190, 5174362, -3238942, -1542967,
+-394063, -11989401, 1998234, 6114960, 286689, 841814, 3320547, -1995012, 5202279, 7055021,
+-984084, 1974074, 4162360, 4021163, 666257, 220117, -2148558, -2725157, -2707440, -8527121,
+1809792, 164819, -8244727, 1097901, 4418448, 6544457, 1592896, -4964446, 11217918, -1676111,
+-2355790, 5174362, -3414499, -3369939, 428960, -4305705, 4939213, 4884989, -2158221, -7802345,
+-3882651, 3621194, -5023501, 10608569, 9201967, -7628399, -9214852, 135828, 1596654, -8862665,
+-672699, 3379603, 2325725, -4450123, -2572149, 9733470, -1159641, 6626061, -783295, -2452426,
+-2416456, -5360119, 788127, -974421, 5262409, -4837207, 1136019, -1468342, 889058, -2978023,
+-465467, 4233764, 3483755, -5980742, 8713952, 400506, -166967, -492311, -944893, 2018098,
+-1364726, -8319352, -1285806, -4628364, 6702834, 2379412, -38655, 7882339, -4948876, 4973572,
+5217312, -346282, -4622996, -20413442, 4439923, 887985, 14200772, -972273, 5581310, -7939784,
+1457605, -5995775, -1603633, -3032247, -1133335, 2461553, -1779190, 2288144, 4629975, 3526705,
+13446469, 9259413, -6442988, 2958159, -571768, 2348273, 1370095, -1919850, -13837311, 3267933,
+-949188, -303869, 4896263, -979789, -4058207, -2805151, -916976, -4387846, -2551211, -11025181,
+-2838974, 120259, -4136054, -846109, 4191351, 6277632, -2404108, 7796440, -6286759, 1147830,
+2374043, 880468, -2207076, -4351339, 2588792, -1213865, 1432909, -3273302, -4843113, 667867,
+2144263, -4629975, 3804804, -3212099, 9669045, 10626286, -3802120, 3786014, 3573413, -703838,
+-2011655, -1583769, -13839458, 5378373, 4612258, 51540, -3034395, -5609764, -315680, -2077154,
+-6645925, -4148402, -6430640, 6775848, 3930969, -390305, 7793218, -3900367, 7006166, -7511898,
+-7227893, 3792456, -11636140, -3984656, 3135863, 7380902, 9545028, -1438814, 7161321, -41339,
+6824166, 2672544, 1232119, -890669, 508954, 6869800, -3034395, -488016, 1348083, 792958,
+-6430103, -599148, -3432216, 13789529, -6361921, -6350646, -1476395, 6621229, 6550899, 5755256,
+7504382, -1047972, 1463510, -1405528, -3569655, 3036542, -236760, -458488, -4108673, 10887742,
+6644315, -3040837, 2102923, 3397319, -5546414, 1447941, 4196183, -787590, 8033737, -2959233,
+-994285, -8409009, -3242164, -7104950, 351114, 10455561, -3994857, 3155727, 1742683, 635655,
+-2789045, -661425, 71941, -2224256, 4872104, -4828617, -2319282, -580894, -2021856, -18861886,
+14011257, 1658394, -6828461, -16625282, -1496796, 640487, -9783936, -680215, 4809290, 4176856,
+532039, -2648384, 3835943, 12268574, 12366285, -4986457, -5580773, -12985834, 2799782, -2128156,
+13009456, -4974646, -136365, -2743410, 4985384, -1160715, -13037373, 4619774, -477815, -7510824,
+146566, 1544578, -933082, -1009854, -5281736, -7210713, 4720169, 1479616, 6129992, -4854924,
+10225780, 5162551, -1953673, -8556649, -1644436, 3635153, 10002442, 3481608, -5451924, -2107755,
+4718559, 3420942, -2735894, -918049, 4968204, 4466766, 5238250, 10315975, 11052025, 5900212,
+5948530, 7311645, -3795677, 1613834, -7092602, 7911867, 1270237, 4387846, -5040681, -7237557,
+1937030, -9428527, -3642132, -3699041, 7433515, -6904160, -455803, 12776454, 7836705, 10794327,
+2014877, -11913166, -3959423, 12545063, -3680787, -8027294, -8360691, -8233453, -8707509, 4714264,
+4790499, 3058554, 2797634, 2891050, 12069395, -1544578, 5211406, -10452877, -11758010, 7797513,
+-464393, -6435472, 410169, -16355772, -5375152, -5537287, 1955284, -613643, -1554778, -11515344,
+-7562364, 1236951, 7875360, 12845173, -5159330, -5084705, 6810208, -8872866, -689342, -477278,
+2903398, 5614059, 4537633, 8911520, -4855998, 12932683, 6037114, -13989245, 6913287, -7769059,
+-9359807, -7701950, -11315628, 10183904, 2279017, -11919608, 1241246, 2584497, 957778, 1979443,
+-2380486, 8539469, -5126044, 6634114, -10721312, 8112120, -5717675, -4497905, 368293, 3984656,
+-1597728, 6534793, 27433030, -23126252, 11931956, 12407087, -9924596, -1105954, 16757889, 6604049,
+10956462, 3856881, -2643016, 24764244, -100932, -3643743, 838056, 913754, 12353400, 18832894,
+7686381, 708133, 1236951, 3534758, 7064685, 746787, 4166118, -11747809, 6846715, 10641318,
+-1161252, 4836133, 902480, 2659122, -7202660, -5488968, 1371705, 564251, 12030203, 6332393,
+5525476, -3828427, -4813048, -4892505, 7343321, 10152766, 1039382, -2121714, 19123878, 10276246,
+13115756, -5652714, -12539694, -1682554, -13161390, -8420820, -3232500, -4987531, 248571, 11562589,
+-2268280, 1380295, -7561827, -8271570, 11739219, 504659, 6143414, 6368900, -4248260, 11311870,
+3994320, 2143189, -2075543, -5461588, 9593883, -947577, -12224014, 9831717, 9619653, -18932752,
+1954210, 5766531, -9439264, 7224672, -16064788, 3194919, 4536023, -2503966, -6501507, -8463233,
+-9583146, -16292958, 1802276, 17505750, -6120329, 8167954, 4644471, 12848932, 6947110, -5615133,
+-11635603, 5340255, -3026341, -4691715, -12015708, -2411624, -1686312, -5409512, -5167383, -3424163,
+-8417062, -11709155, 12797392, -2004139, -7450695, 9287867, 3564823, -9588514, 1354525, -1489817,
+5781026, -12547747, 3364033, 3087008, -17128866, 4788889, 5747740, -9883793, 2695092, -391379,
+-2619930, 5247377, 781147, -2381023, 977642, 3064996, 11862700, 7926899, 12125230, 6781754,
+4516695, -4581120, 17969606, -6116034, -8703751, 17813914, 1670205, 9894531, 2935073, -5953362,
+-17766132, -19246822, -3759170, -1775432, -6325413, -6454799, -32050120, 14019847, 25552372, 731755,
+-16228534, 5767604, -3891240, -2193118, 3277060, 1434519, 5771899, -9222369, -155693, 22726282,
+17267916, 14879914, -18605262, -1925219, 3222299, 7974681, -9489193, -10620380, -3481608, 1807108,
+7220914, 2898566, -23615878, -26815628, 6872485, -2101313, 13326210, 13502303, -10620380, 10940355,
+8750459, 11756399, -1985349, -9105868, -9201967, 4900021, -9685151, -4653060, -1114544, -1754494,
+6695317, 15191836, 8212515, -5982890, -5050882, -9688909, -3237332, -769336, 3342022, -3308199,
+-4087198, 6582038, 3966939, -14163728, -1351841, -1156420, 13877039, -9320079, -9860171, -18238578,
+-6794102, 935229, -118648, 6518687, -3046743, 41876, -8546448, -13144747, -11042361, -12420509,
+-6737193, 2051921, -20866024, 4255776, 3914863, 3409667, 5444945, 16080894, 1655710, 14041322,
+-1490891, 18096308, 9101573, 14251775, 8737037, 4570382, -6483790, -81604, -3967476, 10015864,
+3021510, 8898635, -7635915, -695248, 14778446, -17244294, -9841918, 14730664, -23510114, -9673877,
+1914482, -3723200, -11599096, 24678346, -4159139, 17337172, 6688875, -13453985, -2141041, -4462471,
+-17323750, -21566104, 18008262, 853088, -6583111, 5515275, 275952, -1882806, 6476274, 3735548,
+-2436320, -7073811, 1447404, 18289582, 14241575, -10547366, 4503810, 2356863, 13197898, -4617627,
+8819715, -17738214, -5027259, 14914274, 4038343, -2590939, 15302432, -3027415, 10527502, -19304268,
+-25350508, -6533182, -194347, -14851460, 18173080, 16472273, 18356690, -5099200, -7515656, -1816234,
+21561272, 15500537, 24295556, -21627308, -16276852, -37030672, 15905875, -4136054, -31674846, -6146635,
+2948495, 4648229, -11875585, 12867185, 10814728, 1216013, -212601, 2005750, -5316633, -11016054,
+2345052, -6265821, -10396505, -136902, 23881092, 742493, -3744138, -19176492, 7975755, 15138686,
+-7956427, -23139674, -4329327, 7792145, 2624225, -4918812, 4888747, 1636919, 8157754, -2354179,
+13548474, 20957292, 7744900, -13972602, 15603616, 7087233, -18086644, -19049254, 20425790, 9948218,
+-8306467, -9333501, -739808, -16918950, 12028593, 16170015, -722628, 820876, 3722663, -2193655,
+17374754, 5848672, 4164508, -7527467, 2353105, 5829881, 21362094, -5472862, 7707319, -17241610,
+-20244328, 17037062, -3706020, -1870995, 270046, 16214575, -2189360, -4095788, -5692443, -7866770,
+-25631828, -2669859, -16967268, -33857764, -34838092, -15426986, -26729192, -12482786, -4786741, 4074313,
+14078366, 15693810, 1123671, -9468255, 17041356, -9580461, 8131447, -33472290, -3757560, -23170812,
+-15635828, 14596446, 10194105, 9757092, 2957622, 21297132, -2720862, -2047626, -16314433, -6163815,
+-3672197, -11453604, -11353746, -27666568, -11077794, -3677029, -4811974, -17394618, 14303852, 5164162,
+8359617, -8069170, -3268470, -41665476, -12230456, -12023224, 9054865, 20229296, -13343927, -2744484,
+-24262270, -2497524, 11864847, -4699768, -8462159, 4556961, 17194364, 29209536, 5898064, 98784,
+-2091649, -8942659, -12481712, 7112466, -8427800, 26281442, 4771709, 10705206, 54830088, -12165495,
+-10501195, -15246597, -21267068, -27149026, 16419660, 26682484, -14769856, 1464584, 6438156, -8300025,
+-1582696, -18742164, 161598, -10193568, 28794534, 717796, -4804995, 23412940, -5258651, 7337952,
+-25538412, 14254460, 4486094, 18354542, -7771744, 13873818, 23538032, 25627532, 14335527, 23189602,
+11844446, -2761127, 22112102, -9725417, -14009110, -3773666, 9035537, 15584289, -35154844, -1587527,
+-22658100, 19010062, 8444979, 391916, 6442451, 26297548, 1249299, 23565412, 9830106, 35252556,
+3192235, -3059091, 15130096, 5838471, -17506824, 4630512, -2049236, -22670448, 16470126, -13336410,
+-23041962, -46112916, 3531000, -4947803, 27466852, -14552960, 36769216, 13020193, -854699, -4847408,
+14140643, 15991774, -27359478, -10781979, -20351166, 7710540, -9468255, 21002926, 5703717, 7008313,
+6076842, 19133006, -10639171, -12115029, -11815455, 18393198, 10268193, 23555212, 7595113, 70351568,
+-19131932, 1509681, 1966558, 33316062, 14811732, 15995532, -19618874, 10334228, -6790880, 1627256,
+-8200703, 3151969, 24881820, -5151814, 9022116, 45923400, 15794742, -19455128, -22141630, 3662533,
+31083216, 16156056, 7364259, -10522670, 26801670, 5036386, -1831804, -26675506, 10307385, -3628174,
+13791677, -24212342, -13188771, 1961726, -4268661, 3904662, -21103858, -213138, -11984569, 7129646,
+22843858, 16967806, 7706245, -31413390, 2661269, 3559991, -26247618, -25296820, -14437533, -13728326,
+-11341398, 22963580, 7962870, -494458, 17714592, 23710366, 9337796, 20447802, 3744675, 13418015,
+93765040, -20885352, 18491444, 9992778, -12009265, 2960843, -55941948, 1926293, 16113644, 39275864,
+-14397267, 1842004, -21961778, -15088757, 8378408, 18818936, -17774722, 27072252, 12687333, -28976534,
+22077742, -9992778, -13296145, 1621887, -16618839, 7470022, -6105833, 27639726, -11768210, 1955284,
+15944529, -44387412, 9185861, 17928268, -11975443, 14937896, -26361972, 31995896, 5473399, 8301635,
+-52007224, 52458732, 23338852, 19595788, 3380676, -27413702, 30692374, 1831267, -11789148, 53874996,
+-7708930, -18200998, -9329206, 9973451, 16780438, 17761300, 5924908, -4319127, -56777320, -2410551,
+17037598, 5255966, 23948200, -26449482, 34261492, 7956427, 13094282, -26610544, -6822556, 10168872,
+43056512, -11625403, 11809549, -23586350, 28082106, 20379620, 26586384, -3121904, 12918188, 10908143,
+-30015916, -23292682, 18027052, 21156472, 6707129, -2270964, -43421584, 44522168, -6564858, -7441031,
+-13902272, -2049773, -33802468, -64847028, 25747792, 22254910, -608275, -11043972, -25198036, -1586990,
+-6207302, -11617350, 28973850, -57370564, -23527830, -28740848, -7211250, -42776800, -1935957, -3573950,
+659278, -4253628, -7022809, 10984379, 1870458, -16705275, -4041564, 3334505, -25528212, -10974178,
+-5839008, 6101001, 23894514, -6800007, 45499808, -18102750, -709207, 22659710, -16620450, 16430397,
+5090610, -24522116, -41407244, -5601174, 14094472, 45736032, 20397336, -25046638, -9968619, -82390896,
+-26383984, 131533, 22060026, 55037320, 1126892, -43994424, 6830609, 36099736, -5956046, 6472516,
+34455300, 41089952, 77020576, -67956048, -9062918, 24137716, 27579596, -9376450, -19865834, -21920440,
+-25816512, 10727755, -26642220, 5619428, -11205570, -63369560, 13478681, -11314554, 17800492, -17901424,
+-18636936, 805843, -27059368, 3977140, -27304718, -1001264, -5471789, -10813654, 11850352, -20160576,
+-26683022, -23895050, -31202938, -5395553, -4281009, 33253784, 6419903, -24728274, -37419904, 4570919,
+-1837172, 8504035, -8191040, 20221242, -25066502, -9563282, -34781720, -21503828, -10883447, 1181653,
+-15454366, 35143568, -13552232, -29711510, 7924752, 36629628, 24938728, 11150809, -27190364, -16251083,
+-4187056, 33589864, 61527552, 143345, 10696079, -11255499, -63657856, -12562779, 3656628, 24509768,
+50652160, -27820650, -38046432, 22620520, 7486665, -10519449, -1057099, -17432736, 9092446, -49641768,
+-9497783, 6085432, 8599061, -27817966, 31307628, -46654084, -64932928, -48282412, 37720012, 11806328,
+-66121020, -11429445, -45447196, 20867098, 4359929, -91208464, 6803765, -27835146, -58712204, -45823544,
+-67041756, 42214696, -19956566, -52966072, -23201414, 17627620, -30953292, -27098022, -20521890, -12380780,
+-22647362, -23095112, -42230804, -30943092, -58233852, -33106144, -29007672, -9585830, -26679800, -5319317,
+-11711302, -360777, 3740380, 8374113, 18220326, -15857019, 15541876, 2234994, 32307280, 13870597,
+21010980, 19852412, -53500260, -13927505, 46983720, -6907381, -25191594, -30379914, -20435454, 18791556,
+74991736, -3806952, 2046015, -47298864, -45957760, -9249749, 13865228, 44384728, 1042066, 40696964,
+18932216, -45959372, 90575488, 3372086, 72052368, 2108292, -11125039, 38044820, -41412612, -59501404,
+-32273994, -134386848, -74958992, -23296440, 70308616, -23045720, -56486872, 66381940, 63308892, -39460548,
+-51641612, 268435, 56703768, -5566278, -3271155, -17005924, 49470508, -4789963, -13324062, -440234,
+13503914, 26254062, 446677, -18191334, -22027276, 31520228, 1904281, -12094628, -33107218, 19687056,
+9753871, -2536178, -26322244, 9352291, 10444287, 10528039, -16999480, -8368744, 2094333, 26695370,
+-8274255, 10624675, -38021196, -8664023, -958315, 26166552, -52723408, -7386807, 3833795, 39088496,
+-19137838, 7792682, -27750858, 5730560, 9447317, -15900506, -15409269, 206158, 4347581, 13808320,
+-13572634, 3398393, -47938816, 27632208, -9758166, 45973328, -28936268, 22245784, -20556250, 23156854,
+1203128, 16719234, 8655970, -30039538, 34978752, 11025181, 18788334, -33425582, 7111392, -6153078,
+2836289, -19522236, -43176768, -57362508, 41519448, 27471684, -32780802, -46661060, -22940494, 21315386,
+11115912, 28415504, 30642982, 5828808, -15698105, -4741107, 10618233, -10812580, -1024887, 6151467,
+1593433, 17019344, 11905649, 4996121, -15671262, -813896, -9758166, 9762998, -16405701, -14340896,
+11669963, -4011500, -6757594, -6766721, -11440719, -15773267, 1054951, 12380780, 11425150, 9397388,
+-3804267, -13079786, -11223823, -8072391, 13689671, 18461380, -8865886, -13455059, -5786932, 15242302,
+7945153, 20494510, -14835891, -5972152, 8143258, -4310537, 600222, -2629594, 7320772, 4026532,
+5907191, 829466, -14161581, 5397164, 2579128, -976031, 10899016, -6138582, -2786897, 1418413,
+-1966558, 943282, -3963718, 18085034, 4921496, -1845225, 18312130, 16797618, 20016696, -47216188,
+-124995896, -45676440, 22888418, 65663608, 138170176, 92634392, 24114094, 35385160, -18035104, -55633784,
+-92765928, -80581104, -64062660, -18117246, 2836826, 45294188, 49767396, 105676056, 51412908, 34162168,
+-2306934, -21926882, -50308564, -25785910, -40627168, -46699180, -28766080, -23808614, -1519882, 13699335,
+39643084, 24889336, 28523952, 26255136, 26216480, 39634496, 3614215, 27663884, -4788889, -11509975,
+-32737852, -18971408, -48945984, -71640592, -63031868, 1467268, -10607495, 20594368, 34093988, 19435264,
+52497924, 46621868, 66292820, 38622492, 44930728, 3205656, 2160906, -34361884, -57990112, -66472136,
+-81380504, -52074868, -66624068, -4115116, -628139, 33633352, 33014340, 82209432, 62353260, 92045448,
+35477504, 45042932, 16193100, 3987877, -55673512, -70020312, -29356102, -19980188, 0, 0,
+0, 0, 0, },
},
{
{
-6253473,
-6058052, -4815732, 7134478, -1403381, -4489315, 1406602, 3631395, -1666447, 892816, 3344706,
--4984847, -3398930, -931471, -3041374, 9645960, -3819837, 9485435, 2748242, 3217468, -1248225,
--2049236, -3347927, -4402342, 122943, 4133369, 345208, 535260, -2499671, 2736968, 3787088,
-324270, -2057826, -4986457, 3352759, -925565, 3842922, -1635846, 697395, 1720134, -2787434,
-17717, -4901095, 6687264, -70867, 988916, -612570, -5857262, -1512365, -1727114, 472446,
-944893, 3424163, 1539209, -2306934, -3564823, 1728188, -2137283, -1110786, 4239133, -2357937,
-3000572, -4167729, 2270427, -4828080, 2415919, -3235184, -1720671, 4893579, 2246268, 2660195,
--718870, 383326, 1079111, 1206349, 1720134, 7618198, 784905, -2103460, -2191507, 1294933,
--3721589, -94489, -7224672, 5126044, 6533182, 4533875, 6432251, -7781944, 613107, 1721745,
--2769180, -2174327, -1894081, -9114457, -1529008, 5332202, -9278740, -7597261, 4389457, 3915937,
--5956583, -2143189, 3953518, 439160, 4808216, 1985349, 5011690, -3211562, 974421, 615791,
--1305670, 2246268, 1855426, 3307125, 1454383, -1586990, 360777, 3696356, -984621, -1821603,
--595927, -4686346, -10063645, 5905043, 2976949, -3280281, 4502737, -1899449, 564251, -285615,
-2143726, -2808372, -602369, 5827734, -5524939, -2416993, 2072322, 802622, -737124, -466004,
-2774012, 93416, 2500208, -4239670, 4297652, 1845762, -4963372, 3878356, 714575, 1176284,
--136902, -1998770, 12009802, -6819871, 2157684, -7545721, 975494, 1828046, -7596187, -9637370,
-2486249, -10462003, 2386391, -2694555, -652298, -6400575, -857383, -7194070, -3639985, 72478,
--7573101, 8180839, 2954938, -12658879, 1300301, -658204, -2201171, -5395553, 2836289, 6630356,
-241592, -444529, 6302328, -3592740, 202400, -2272038, 4230006, -4759361, 1547262, 5825050,
--4884989, 5100811, 1935420, 5514738, -302258, 1288490, -648540, -2260764, 7357279, -8842264,
-2258616, -3882114, -1487132, -1102733, -2996814, -2332167, -6827925, -4388920, -821949, 4689568,
--79457, 1814087, 6806450, -61203, -5215701, -619549, 636192, 1868848, -2240362, 143881,
--4937065, 278636, -1564442, 2021319, 3697430, 4476967, 2585034, -1975685, -1489280, -3120831,
--10141492, -360777, -6209986, -2125472, -1218160, -7198365, -1199370, -1861868, 3205119, 7871602,
-7912404, 730144, -3733937, 3024194, -8149701, -1366873, -3270618, 2519535, -12022687, 3924526,
-1750199, -662499, -3632469, -5307506, -2563559, -4417374, -3843996, 1976222, -1027034, -4738960,
--1553704, 692027, 7456063, -517007, -8000451, 390842, 3118146, -311385, -2668785, 433792,
-2706903, -8650064, -870268, -3874597, 5724655, 3412352, 806380, -7999377, 692027, 2816962,
-4605279, 4295504, -5298916, -2588255, 77846, -1771137, -1746441, 4013647, -2706366, 2407329,
-607201, -3411815, -802085, -4620311, 5405753, 1949378, -5335423, -3754875, 1003412, 2841121,
--4059281, -5290863, -563714, 503048, -2933463, -16972638, 5300527, 4741107, 8003135, -2236067,
-4961761, -14634564, -4138201, 4445291, 364535, -7279970, -2054068, -2479807, -12911209, -5236102,
-1092532, -656056, -9274445, 5602785, 7838852, -8321499, 6055904, -10871636, -3910031, -1005559,
-3492882, -82141, -4632122, 2957622, 1231582, -725313, 4581657, -2331630, -3381213, -950798,
--2050847, -3169149, 4480725, -3608846, 1061931, 3626563, -1018981, -2753611, -5618354, -551366,
--4102768, -1047435, -4730907, -1064078, 9495636, 351114, 5638755, -5308580, 4669703, -1369558,
--8372502, -4511327, 4085588, -2663954, -4446902, 3216931, -5173288, 4321274, 690416, -1104880,
-4830228, 5142687, 1678795, -4689568, -6277632, 173946, 7397545, 2254858, 785442, -3532074,
-840740, -9888088, -9447854, -6535330, 173409, -2315524, 2614561, -3970697, -893353, -241592,
--3460133, -1829119, 1249299, -3388192, 9105868, -7424388, 3719442, -2572686, -1612760, -5509906,
--2216740, -1486596, 6366752, -5829345, -292595, 580357, -8120173, -5214627, -5856725, -4991826,
--9276056, -3690451, 2013266, 4809827, 2586644, -7455527, -10348724, -2874407, -712965, -5581310,
--135291, -4051765, -5899675, -12394739, -6850473, -8928700, 3639985, -2908230, 2752000, -5470178,
--12355010, -6793028, -516470, -3104188, -4794257, -2487323, -5550709, 5230734, -579284, 2711735,
-3560528, 390842, -1353989, -4714801, -1007707, 4308926, -2088965, -4575751, -6476811, 7614440,
--8260833, -10545218, -8198556, -4735739, -6757058, 5386426, 8421357, -8386998, 2489471, -18321256,
-5899675, -1174674, 3488050, 10245108, 4216048, -2417530, 3688840, -7556995, 4995584, 5579163,
--9765145, -2126546, -4775467, 5679021, 5282273, 7683160, 9300752, -11656541, -5596343, 1845762,
-10383083, -3877819, 5068062, -11218991, -2901251, -4037269, -1879585, -6891275, 2165201, -11188927,
-8140574, -2384244, -1400696, 5309117, 243739, 984084, 6517076, -158377, 5472325, 2889439,
--709207, -2297808, 38118, -8145943, -4933307, -7521562, 313533, 14147622, 4200478, 2274185,
-490163, -2661806, 754304, 8090645, -951335, 2006824, -15932181, 14749455, -2740726, -3666828,
-1986422, 8544301, 4633733, -2690797, -4543539, 15433965, -1854352, -1613297, 6836514, -5872831,
-1654636, 381178, -1802276, 649077, 5502390, 240518, -750546, 8281771, 4795331, 9175661,
--3241627, -1847910, 5455146, -7948911, 7726646, 8686034, -3880503, -466541, -12898861, 864362,
-4926328, 3919158, -2433099, -8799851, -17910550, 503048, -2716567, -8483634, 2428267, 6025839,
--7529078, -3206193, -8238284, 4551055, 933082, -1133335, -2433099, -3611531, 9799505, 11030550,
-4710506, 5312875, -1942399, -5366025, 15697032, 3870839, -2076080, -8849243, 7109245, 333397,
-9287330, -730144, 11366631, 5423470, 8144869, 6392522, 3869229, 8383240, 11127723, -352187,
-2602750, -3432216, 586263, 5609764, 3126736, 2957622, -8507793, -3610457, -1137630, -8339753,
--6847789, -5417565, 5279052, 8505646, 12706124, 14734959, 4572530, 666257, 13667123, -5754183,
-14341433, -13157095, -6080063, -1560147, 5616744, -12278238, 8119099, -12085501, 6264747, 223338,
-6628209, 10471667, -3999688, 9595494, 10359998, 9973988, -5455146, 8465917, -8647380, -6715718,
--945430, -5113696, 51003, -4345433, 8135742, -5600638, 1881733, -5515812, -10161893, -4443681,
--2061047, 12771622, -10317048, 10145250, 4389994, -14045617, 16616692, 4461398, 1912334, 12014634,
-2120640, 932545, -6531035, 389231, -3635153, 13680545, 5624260, 9734007, -3595961, -1727114,
-6404333, 11512660, -11528766, 11929809, 2085207, -1342714, -2159832, -10328323, 5223217, -4568235,
-2196876, 1066763, -9860171, 3938485, 8337069, -6928856, 5308580, 4149475, 11731166, 1972464,
--653372, 7873749, 10488847, 1693291, -5245229, 7820599, -6054294, -11440182, -8185134, 12367358,
--15910169, 3956202, -8465917, 9387725, -10093173, 15363098, 5367636, 1416266, -13361106, 6738267,
-11374684, 2900177, -6832756, -4580046, -3877819, 10408853, 5797669, -14810658, 2164127, -10524280,
--474057, 1045288, -8767639, 11487964, 11812234, -5470715, 2703145, 7752416, -9526237, -1660542,
--2809446, -8215736, 17237852, -6407555, -3607236, -8810052, -14116484, -2512019, 511638, -5206574,
-2399813, -12134893, 1340030, 557809, -2058900, 9086003, -1605781, -7613367, 4182761, -338766,
--5043366, 4332549, 20673826, -4418985, 5322002, 703838, -13163001, -2656974, 12882218, 5070209,
-12872554, -1729261, 7841537, -10204305, 5285494, 3730179, 2537252, -8822400, 8959302, 2072322,
--19636054, 1034013, -1373316, 13603235, -24564528, 28616830, 3724274, 11533061, -20078972, 11571179,
-14947560, -16377247, 6789270, 8690866, 6824166, -10447508, 1823751, 2297808, -3254512, 6710350,
-13434658, -10079751, -8302172, -2804077, 11450920, 9932112, 13914620, -274878, 6111202, -9693741,
--2233383, -2243584, 2613488, 6720550, 17672716, 10650445, 6681359, 3649112, -170188, 8612483,
--2651606, -14458471, -2476586, 4714264, 5133560, -8318278, -6169184, -10388452, 2472291, -504122,
-4167729, -6694781, 13003013, 12670154, -10280541, 25719874, 1555315, -1993939, 245350, -4947803,
--754304, -1292785, -9875740, 499290, 417686, 7063074, -20968568, 5552856, -7179038, 15826954,
-19133542, 8412230, 8199630, 3782256, 1699733, 17152488, -2652679, -12371653, 11396159, -5804112,
-4251481, 9862856, 1576790, -7562901, 6280316, 9560597, 8314520, 5034239, 10002979, -13050258,
--8369818, 929860, -11714523, -3328600, -2250563, 2006287, -3251827, -7910793, -9578851, -6119792,
-4272956, 7255811, -13974213, 2318209, -1705102, -963146, -16748225, -15428059, -2820720, -12119324,
-5202279, -13747653, 639413, 6351183, 9899900, -9612137, 11818139, 2364380, -1330366, -3354370,
-17649094, -5682242, -981937, -15027017, -8101919, 10874857, -934692, 3621731, -13763223, -15852724,
--4105989, -9317932, -1440962, -192200, -5480915, -7989713, 4340065, -7502771, 726386, -10657961,
--5078799, -1196685, -15817828, 502511, 10839961, 1010391, 5875516, 10471130, 20091858, -20081120,
-3890704, -12814572, -10964515, -7457137, -8268349, -6564858, -5031554, 18670222, 19026168, 20208894,
-22310208, -18080738, 437013, 11595875, 9017821, -10953240, -20032264, -3154117, -3653407, -16057809,
--9522479, 27770184, 1496796, 1003949, 9993852, -2218351, 3854196, -4948339, -12120398, 6497749,
-5555004, -16442209, -22623740, -18023294, -14193256, -13914083, 548682, 2660195, 5844914, -9648107,
-7711614, 888521, -4850629, -10189810, -950262, -661425, -14603426, -12125230, 977105, -3740917,
-1289564, -9709310, 6234682, 853625, -8567923, -18401250, -7348152, -7115150, -23315766, -8550206,
-1548336, 9807558, -1658931, 11828340, -2914672, -2649995, -19931870, -5709622, 7055558, 1968706,
--32971390, 7541426, 2246268, -10891500, -6068252, -11415486, -11232413, -2594697, -136365, -12716324,
--4004520, 3674345, 8657043, 10965052, -12084427, 7827041, -6871948, 22452478, -19452444, -11975979,
--4087198, -36578624, -19244138, -164819, -23461796, 18015240, -8393977, -7581154, 1840394, 41344964,
-19720880, 1263257, 8231842, -1928440, -11387032, -1098975, -17482664, -12416750, 5592585, 6032282,
-7080254, -11901354, 14930917, 9410273, 16917876, -17526688, 2414845, 25715042, 1961726, 1129576,
-4598836, -24506546, 5788542, -6119255, 3526705, -9798431, -23768350, -1309965, 8802535, 11555610,
-2345589, -3502009, 1034013, -933082, 7002944, -17399450, -26252450, 4704063, -10094247, 15374909,
--6925098, -6199786, 19015430, 4620848, 7616588, 1727114, -17826798, -6767258, -3087545, 9202504,
-25093346, 20312510, -7267622, -23104240, -1813013, -2581812, 7161858, -14207215, -19448686, -9972377,
-6919729, -17236778, -40375912, 17186312, 14303852, -4936528, -26298622, -4891431, -9425843, -9955734,
-13255880, 16139950, -377957, 5281736, -30027726, 12190728, -37868728, -8658117, -2213519, 9010305,
-20826834, 32444720, 14143864, -16789028, 5408438, 23082764, 4124242, 7939784, 13065827, -17022030,
--5826123, -1538672, 6845641, -11544872, -5656472, -2504503, -8389682, -5959267, 14601278, 14492293,
-4721780, 2611877, 23846196, -2644626, 11928735, -23734526, 18314278, 6492917, -21449604, 4095251,
-8966281, -19797652, -1131187, -19242528, 8800388, 10893648, 11304354, -12139188, 676457, 16426639,
--9837623, 2527588, 222265, 25988848, -11602854, 20024212, 11224897, -18846854, 21891986, -12743705,
-15359877, 20080582, -12999255, 13754096, -9944997, -11871826, -21068962, -14080513, -15017890, 12852153,
-8156680, -31462782, -14137422, -14760729, 30162482, 2288144, 12147241, -3259880, 42176040, 7858180,
--25857850, 3414499, 31344134, -9681930, 8044474, -3533148, 3958886, -16101832, -22278532, 38897908,
-28020366, -8859981, 21807160, 9451076, 27954332, 31684510, -7552700, -5763309, 28219008, 21124796,
-3457449, -7145752, -12137578, -12687870, 13698261, 25099788, 12372190, -3003793, 17147120, -7084012,
-16307454, -5483063, 23220740, 40422620, 30895848, -30629560, 15618112, -4207994, -11984032, 773094,
-12062416, 11892764, 72401872, -6098854, 84289, -10564009, -11936788, 14953466, 26500486, -5362267,
-20199768, 17663054, -1818919, 1404991, -13647795, 14884746, 11976516, 38625716, 38468412, 47416976,
-18901614, -11742441, -10960220, -21525840, 18715856, -31882616, 17228188, -21940840, 14886357, 12424804,
--12621298, 3308736, 7092602, -6474663, 21662742, 4629438, -53408992, 11666205, 6012418, -39469676,
-1372242, -7019587, 632434, 14062260, -2947421, -36380520, -7532299, -11711302, -3200825, 25451440,
-29487634, -17595408, -5717139, -14745696, 6185827, -27725624, -55184424, -19238770, -17760764, 2872796,
--734976, 24524264, -38434052, 17631914, -10339597, -3892851, 13191992, 7293392, 23546084, 6069326,
-7723962, 27613956, -33459942, 39291972, 28579786, 16495359, 26520350, -10869488, 8368207, -26744762,
--8229158, -13205414, 21042118, -20792474, 1938641, -45203992, -60176788, 38477000, -5443871, 25074020,
--21220896, 16848082, -15588047, 4214974, -11193222, -36439040, -16980690, -24077586, -17640504, 14275934,
-48468168, 20526186, -56511032, -10274099, 1743220, -15333033, 2083059, 1538672, -34004328, 15358266,
-15345381, 28545426, -16442745, 9381282, -18651432, -21421686, 7093139, 38433516, 63362580, -5791764,
--6026376, -383863, -3168612, -30764314, 43789876, 20078972, 22463216, 16856136, -14957760, 13969918,
--27459336, -38811472, -8201240, 25768730, 16143171, -15152108, -10415296, -3805878, 20468204, -1069447,
-14362908, 13921063, 24508158, 6719477, -18722836, -18013092, 13056164, -20070920, -15454903, 5531381,
-26887032, 24439438, -32973000, -26221850, 13430900, 16267726, 54747948, -16013249, -33763812, -35169340,
-24662240, -23703388, 22965190, 25994752, 55841016, 121526096, -31206696, -19656992, -50348292, -78626352,
--27602682, -42040212, 86436, 46792060, -12347494, 21650394, 33735356, 18753974, -20907900, -54916524,
--83727704, 29606820, -14806900, 15127412, -27528056, 2385854, -25283398, -65756488, 13700409, -28843926,
-24068996, 1514513, 12451647, 10509785, -60266444, -43505336, -22592602, -15198816, -15710990, -26150446,
--9592273, -41857140, -27306328, 16473884, -27861452, 46328200, -38533372, 1209033, 7864622, -6418829,
-2095944, -4680978, 9467719, -13940390, -14410152, -4761508, 6533719, -4221416, 18726058, -22487912,
-2231236, 27841052, 7562364, 1785633, 13320841, -918049, -14749991, -10839961, 22519050, 2616172,
--41598368, -20414516, -34240016, -17574470, 39760124, 36211408, -43170328, -7720204, -48824652, -14449881,
--6548752, 7257958, 20335596, -41379324, 22243636, -35871568, -8704288, -25613574, 45033804, -13758391,
-30277908, 27936614, 66721244, -37214280, 23837606, 172872, 20784958, 4807142, 11185705, -41130756,
--49798536, 34864932, 8507793, -53399864, -21517250, -31614180, 5564667, -4438312, -73642048, -31173410,
--16733193, -37208912, -22157736, -73832096, -62259308, -8004209, 31291522, -38837240, -22323092, -2274722,
--33272574, -4378183, 162135, -31219580, -6383932, 11250667, 4690641, -42684460, -23721642, -22573812,
--12011950, -12435004, -2044941, -28309204, 29709362, 21808234, 41194104, 60369524, 51335596, 16694538,
-54040352, 24940338, 11487964, -18703508, 20263656, 23084376, 16933446, -1707250, -15775415, -3910568,
-14715095, 27275726, 119731344, 20318416, 25781614, 21658984, 49550500, 22981834, 43449500, 81487344,
--36497020, -71404368, 9871445, 52487720, 86417424, 42343544, -74897248, 14042932, -19487878, 112687592,
-78547432, 100952136, 86836720, -74532712, -55001352, 66044784, 70883600, -18937048, -55786792, 89573688,
-72593000, -62817656, 14298483, -1698123, 10470057, -2783139, -5715528, 22643604, -22617834, 22012244,
--8519605, -544387, 9678172, 6544994, 8904541, -885837, -12190728, -9321690, 15469935, -12867185,
--373662, 12791486, -6347425, -9145596, -9705015, -21536576, -18873696, 13451838, -5869073, 4026532,
--11130945, 944356, -25351044, -6608881, 9282498, 15626165, -9121974, 1880122, 14038637, 17070348,
--2385318, 13671955, -10534481, 48139068, -16283832, 15008226, 4878546, 7359427, -6753836, 10766409,
--2534031, 33203856, -2900714, 8307004, -21970368, 30029338, -14070313, -4357245, -1457068, 1702418,
--6255083, 16639240, -19080392, 15430207, -17000018, 24053428, -24304146, 31507880, -18596134, -14911053,
--9798431, -8932995, 6635725, -22195854, -45638324, -50194208, 42279660, 10522133, -13364864, -67944232,
--27434640, 37520296, 7487202, 27041114, 30194156, -11184632, -19298898, 692564, 7011534, 5383205,
-4853850, -12183748, -8983998, -6852621, -139050, 18130668, 9738301, -1076963, 3966402, -5462662,
--9007620, -5833103, -4773856, 166967, 5290863, -4319127, 6876243, 7196755, -24968256, -11175505,
--11084774, 13174812, 9180493, -923418, -11621108, -15722802, 13619878, 2972117, 9148817, 12717398,
--23041426, -15331423, 4262218, 18641232, 9463424, -26142392, -16062641, -21167210, -10022843, 5707475,
-5007395, -8495982, 9882720, -3593814, -8916889, 4584341, 9138080, -5978058, 2506114, 485868,
--7724499, 185220, -2301029, -17433272, -18066780, 421444, -19082002, -12827994, 2241973, 10336376,
-3527779, 17151952, -44362716, -120027160, -45952392, 26822070, 57088168, 135442336, 79306568, 21346524,
-27883464, -23881628, -44532368, -96532072, -65457448, -50038516, -16882442, 19446538, 52324512, 40898288,
-50758460, 49436148, 33005214, -11555610, -39882528, -34117608, -35578436, -28183038, -41150620, 12298639,
--26302380, 1790465, 18034030, 34688304, 18826452, 32500018, 42087996, 818728, 11967389, 1003949,
--1513439, -23876796, -4045859, -21191906, -42526620, -65543348, -37519224, -19815906, 4373351, 5296232,
-38133404, 54597088, 51195472, 62503048, 8067023, 41247792, 15169288, -3067681, -39173324, -36709084,
--51768852, -65841848, -46416248, -50662896, -33625300, 1422708, 15202574, 38641284, 59321552, 90254976,
-70397736, 66618164, 34821984, -9830643, -11987791, -29533806, -70190504, -47001976, -64996812, -17580374,
--9045738, 0, 0, },
+6058052, -4815732, 7134478, -1403381, -4489315, 1406602, 3631395, -1666447, 892816, 3344706,
+-4984847, -3398930, -931471, -3041374, 9645960, -3819837, 9485435, 2748242, 3217468, -1248225,
+-2049236, -3347927, -4402342, 122943, 4133369, 345208, 535260, -2499671, 2736968, 3787088,
+324270, -2057826, -4986457, 3352759, -925565, 3842922, -1635846, 697395, 1720134, -2787434,
+17717, -4901095, 6687264, -70867, 988916, -612570, -5857262, -1512365, -1727114, 472446,
+944893, 3424163, 1539209, -2306934, -3564823, 1728188, -2137283, -1110786, 4239133, -2357937,
+3000572, -4167729, 2270427, -4828080, 2415919, -3235184, -1720671, 4893579, 2246268, 2660195,
+-718870, 383326, 1079111, 1206349, 1720134, 7618198, 784905, -2103460, -2191507, 1294933,
+-3721589, -94489, -7224672, 5126044, 6533182, 4533875, 6432251, -7781944, 613107, 1721745,
+-2769180, -2174327, -1894081, -9114457, -1529008, 5332202, -9278740, -7597261, 4389457, 3915937,
+-5956583, -2143189, 3953518, 439160, 4808216, 1985349, 5011690, -3211562, 974421, 615791,
+-1305670, 2246268, 1855426, 3307125, 1454383, -1586990, 360777, 3696356, -984621, -1821603,
+-595927, -4686346, -10063645, 5905043, 2976949, -3280281, 4502737, -1899449, 564251, -285615,
+2143726, -2808372, -602369, 5827734, -5524939, -2416993, 2072322, 802622, -737124, -466004,
+2774012, 93416, 2500208, -4239670, 4297652, 1845762, -4963372, 3878356, 714575, 1176284,
+-136902, -1998770, 12009802, -6819871, 2157684, -7545721, 975494, 1828046, -7596187, -9637370,
+2486249, -10462003, 2386391, -2694555, -652298, -6400575, -857383, -7194070, -3639985, 72478,
+-7573101, 8180839, 2954938, -12658879, 1300301, -658204, -2201171, -5395553, 2836289, 6630356,
+241592, -444529, 6302328, -3592740, 202400, -2272038, 4230006, -4759361, 1547262, 5825050,
+-4884989, 5100811, 1935420, 5514738, -302258, 1288490, -648540, -2260764, 7357279, -8842264,
+2258616, -3882114, -1487132, -1102733, -2996814, -2332167, -6827925, -4388920, -821949, 4689568,
+-79457, 1814087, 6806450, -61203, -5215701, -619549, 636192, 1868848, -2240362, 143881,
+-4937065, 278636, -1564442, 2021319, 3697430, 4476967, 2585034, -1975685, -1489280, -3120831,
+-10141492, -360777, -6209986, -2125472, -1218160, -7198365, -1199370, -1861868, 3205119, 7871602,
+7912404, 730144, -3733937, 3024194, -8149701, -1366873, -3270618, 2519535, -12022687, 3924526,
+1750199, -662499, -3632469, -5307506, -2563559, -4417374, -3843996, 1976222, -1027034, -4738960,
+-1553704, 692027, 7456063, -517007, -8000451, 390842, 3118146, -311385, -2668785, 433792,
+2706903, -8650064, -870268, -3874597, 5724655, 3412352, 806380, -7999377, 692027, 2816962,
+4605279, 4295504, -5298916, -2588255, 77846, -1771137, -1746441, 4013647, -2706366, 2407329,
+607201, -3411815, -802085, -4620311, 5405753, 1949378, -5335423, -3754875, 1003412, 2841121,
+-4059281, -5290863, -563714, 503048, -2933463, -16972638, 5300527, 4741107, 8003135, -2236067,
+4961761, -14634564, -4138201, 4445291, 364535, -7279970, -2054068, -2479807, -12911209, -5236102,
+1092532, -656056, -9274445, 5602785, 7838852, -8321499, 6055904, -10871636, -3910031, -1005559,
+3492882, -82141, -4632122, 2957622, 1231582, -725313, 4581657, -2331630, -3381213, -950798,
+-2050847, -3169149, 4480725, -3608846, 1061931, 3626563, -1018981, -2753611, -5618354, -551366,
+-4102768, -1047435, -4730907, -1064078, 9495636, 351114, 5638755, -5308580, 4669703, -1369558,
+-8372502, -4511327, 4085588, -2663954, -4446902, 3216931, -5173288, 4321274, 690416, -1104880,
+4830228, 5142687, 1678795, -4689568, -6277632, 173946, 7397545, 2254858, 785442, -3532074,
+840740, -9888088, -9447854, -6535330, 173409, -2315524, 2614561, -3970697, -893353, -241592,
+-3460133, -1829119, 1249299, -3388192, 9105868, -7424388, 3719442, -2572686, -1612760, -5509906,
+-2216740, -1486596, 6366752, -5829345, -292595, 580357, -8120173, -5214627, -5856725, -4991826,
+-9276056, -3690451, 2013266, 4809827, 2586644, -7455527, -10348724, -2874407, -712965, -5581310,
+-135291, -4051765, -5899675, -12394739, -6850473, -8928700, 3639985, -2908230, 2752000, -5470178,
+-12355010, -6793028, -516470, -3104188, -4794257, -2487323, -5550709, 5230734, -579284, 2711735,
+3560528, 390842, -1353989, -4714801, -1007707, 4308926, -2088965, -4575751, -6476811, 7614440,
+-8260833, -10545218, -8198556, -4735739, -6757058, 5386426, 8421357, -8386998, 2489471, -18321256,
+5899675, -1174674, 3488050, 10245108, 4216048, -2417530, 3688840, -7556995, 4995584, 5579163,
+-9765145, -2126546, -4775467, 5679021, 5282273, 7683160, 9300752, -11656541, -5596343, 1845762,
+10383083, -3877819, 5068062, -11218991, -2901251, -4037269, -1879585, -6891275, 2165201, -11188927,
+8140574, -2384244, -1400696, 5309117, 243739, 984084, 6517076, -158377, 5472325, 2889439,
+-709207, -2297808, 38118, -8145943, -4933307, -7521562, 313533, 14147622, 4200478, 2274185,
+490163, -2661806, 754304, 8090645, -951335, 2006824, -15932181, 14749455, -2740726, -3666828,
+1986422, 8544301, 4633733, -2690797, -4543539, 15433965, -1854352, -1613297, 6836514, -5872831,
+1654636, 381178, -1802276, 649077, 5502390, 240518, -750546, 8281771, 4795331, 9175661,
+-3241627, -1847910, 5455146, -7948911, 7726646, 8686034, -3880503, -466541, -12898861, 864362,
+4926328, 3919158, -2433099, -8799851, -17910550, 503048, -2716567, -8483634, 2428267, 6025839,
+-7529078, -3206193, -8238284, 4551055, 933082, -1133335, -2433099, -3611531, 9799505, 11030550,
+4710506, 5312875, -1942399, -5366025, 15697032, 3870839, -2076080, -8849243, 7109245, 333397,
+9287330, -730144, 11366631, 5423470, 8144869, 6392522, 3869229, 8383240, 11127723, -352187,
+2602750, -3432216, 586263, 5609764, 3126736, 2957622, -8507793, -3610457, -1137630, -8339753,
+-6847789, -5417565, 5279052, 8505646, 12706124, 14734959, 4572530, 666257, 13667123, -5754183,
+14341433, -13157095, -6080063, -1560147, 5616744, -12278238, 8119099, -12085501, 6264747, 223338,
+6628209, 10471667, -3999688, 9595494, 10359998, 9973988, -5455146, 8465917, -8647380, -6715718,
+-945430, -5113696, 51003, -4345433, 8135742, -5600638, 1881733, -5515812, -10161893, -4443681,
+-2061047, 12771622, -10317048, 10145250, 4389994, -14045617, 16616692, 4461398, 1912334, 12014634,
+2120640, 932545, -6531035, 389231, -3635153, 13680545, 5624260, 9734007, -3595961, -1727114,
+6404333, 11512660, -11528766, 11929809, 2085207, -1342714, -2159832, -10328323, 5223217, -4568235,
+2196876, 1066763, -9860171, 3938485, 8337069, -6928856, 5308580, 4149475, 11731166, 1972464,
+-653372, 7873749, 10488847, 1693291, -5245229, 7820599, -6054294, -11440182, -8185134, 12367358,
+-15910169, 3956202, -8465917, 9387725, -10093173, 15363098, 5367636, 1416266, -13361106, 6738267,
+11374684, 2900177, -6832756, -4580046, -3877819, 10408853, 5797669, -14810658, 2164127, -10524280,
+-474057, 1045288, -8767639, 11487964, 11812234, -5470715, 2703145, 7752416, -9526237, -1660542,
+-2809446, -8215736, 17237852, -6407555, -3607236, -8810052, -14116484, -2512019, 511638, -5206574,
+2399813, -12134893, 1340030, 557809, -2058900, 9086003, -1605781, -7613367, 4182761, -338766,
+-5043366, 4332549, 20673826, -4418985, 5322002, 703838, -13163001, -2656974, 12882218, 5070209,
+12872554, -1729261, 7841537, -10204305, 5285494, 3730179, 2537252, -8822400, 8959302, 2072322,
+-19636054, 1034013, -1373316, 13603235, -24564528, 28616830, 3724274, 11533061, -20078972, 11571179,
+14947560, -16377247, 6789270, 8690866, 6824166, -10447508, 1823751, 2297808, -3254512, 6710350,
+13434658, -10079751, -8302172, -2804077, 11450920, 9932112, 13914620, -274878, 6111202, -9693741,
+-2233383, -2243584, 2613488, 6720550, 17672716, 10650445, 6681359, 3649112, -170188, 8612483,
+-2651606, -14458471, -2476586, 4714264, 5133560, -8318278, -6169184, -10388452, 2472291, -504122,
+4167729, -6694781, 13003013, 12670154, -10280541, 25719874, 1555315, -1993939, 245350, -4947803,
+-754304, -1292785, -9875740, 499290, 417686, 7063074, -20968568, 5552856, -7179038, 15826954,
+19133542, 8412230, 8199630, 3782256, 1699733, 17152488, -2652679, -12371653, 11396159, -5804112,
+4251481, 9862856, 1576790, -7562901, 6280316, 9560597, 8314520, 5034239, 10002979, -13050258,
+-8369818, 929860, -11714523, -3328600, -2250563, 2006287, -3251827, -7910793, -9578851, -6119792,
+4272956, 7255811, -13974213, 2318209, -1705102, -963146, -16748225, -15428059, -2820720, -12119324,
+5202279, -13747653, 639413, 6351183, 9899900, -9612137, 11818139, 2364380, -1330366, -3354370,
+17649094, -5682242, -981937, -15027017, -8101919, 10874857, -934692, 3621731, -13763223, -15852724,
+-4105989, -9317932, -1440962, -192200, -5480915, -7989713, 4340065, -7502771, 726386, -10657961,
+-5078799, -1196685, -15817828, 502511, 10839961, 1010391, 5875516, 10471130, 20091858, -20081120,
+3890704, -12814572, -10964515, -7457137, -8268349, -6564858, -5031554, 18670222, 19026168, 20208894,
+22310208, -18080738, 437013, 11595875, 9017821, -10953240, -20032264, -3154117, -3653407, -16057809,
+-9522479, 27770184, 1496796, 1003949, 9993852, -2218351, 3854196, -4948339, -12120398, 6497749,
+5555004, -16442209, -22623740, -18023294, -14193256, -13914083, 548682, 2660195, 5844914, -9648107,
+7711614, 888521, -4850629, -10189810, -950262, -661425, -14603426, -12125230, 977105, -3740917,
+1289564, -9709310, 6234682, 853625, -8567923, -18401250, -7348152, -7115150, -23315766, -8550206,
+1548336, 9807558, -1658931, 11828340, -2914672, -2649995, -19931870, -5709622, 7055558, 1968706,
+-32971390, 7541426, 2246268, -10891500, -6068252, -11415486, -11232413, -2594697, -136365, -12716324,
+-4004520, 3674345, 8657043, 10965052, -12084427, 7827041, -6871948, 22452478, -19452444, -11975979,
+-4087198, -36578624, -19244138, -164819, -23461796, 18015240, -8393977, -7581154, 1840394, 41344964,
+19720880, 1263257, 8231842, -1928440, -11387032, -1098975, -17482664, -12416750, 5592585, 6032282,
+7080254, -11901354, 14930917, 9410273, 16917876, -17526688, 2414845, 25715042, 1961726, 1129576,
+4598836, -24506546, 5788542, -6119255, 3526705, -9798431, -23768350, -1309965, 8802535, 11555610,
+2345589, -3502009, 1034013, -933082, 7002944, -17399450, -26252450, 4704063, -10094247, 15374909,
+-6925098, -6199786, 19015430, 4620848, 7616588, 1727114, -17826798, -6767258, -3087545, 9202504,
+25093346, 20312510, -7267622, -23104240, -1813013, -2581812, 7161858, -14207215, -19448686, -9972377,
+6919729, -17236778, -40375912, 17186312, 14303852, -4936528, -26298622, -4891431, -9425843, -9955734,
+13255880, 16139950, -377957, 5281736, -30027726, 12190728, -37868728, -8658117, -2213519, 9010305,
+20826834, 32444720, 14143864, -16789028, 5408438, 23082764, 4124242, 7939784, 13065827, -17022030,
+-5826123, -1538672, 6845641, -11544872, -5656472, -2504503, -8389682, -5959267, 14601278, 14492293,
+4721780, 2611877, 23846196, -2644626, 11928735, -23734526, 18314278, 6492917, -21449604, 4095251,
+8966281, -19797652, -1131187, -19242528, 8800388, 10893648, 11304354, -12139188, 676457, 16426639,
+-9837623, 2527588, 222265, 25988848, -11602854, 20024212, 11224897, -18846854, 21891986, -12743705,
+15359877, 20080582, -12999255, 13754096, -9944997, -11871826, -21068962, -14080513, -15017890, 12852153,
+8156680, -31462782, -14137422, -14760729, 30162482, 2288144, 12147241, -3259880, 42176040, 7858180,
+-25857850, 3414499, 31344134, -9681930, 8044474, -3533148, 3958886, -16101832, -22278532, 38897908,
+28020366, -8859981, 21807160, 9451076, 27954332, 31684510, -7552700, -5763309, 28219008, 21124796,
+3457449, -7145752, -12137578, -12687870, 13698261, 25099788, 12372190, -3003793, 17147120, -7084012,
+16307454, -5483063, 23220740, 40422620, 30895848, -30629560, 15618112, -4207994, -11984032, 773094,
+12062416, 11892764, 72401872, -6098854, 84289, -10564009, -11936788, 14953466, 26500486, -5362267,
+20199768, 17663054, -1818919, 1404991, -13647795, 14884746, 11976516, 38625716, 38468412, 47416976,
+18901614, -11742441, -10960220, -21525840, 18715856, -31882616, 17228188, -21940840, 14886357, 12424804,
+-12621298, 3308736, 7092602, -6474663, 21662742, 4629438, -53408992, 11666205, 6012418, -39469676,
+1372242, -7019587, 632434, 14062260, -2947421, -36380520, -7532299, -11711302, -3200825, 25451440,
+29487634, -17595408, -5717139, -14745696, 6185827, -27725624, -55184424, -19238770, -17760764, 2872796,
+-734976, 24524264, -38434052, 17631914, -10339597, -3892851, 13191992, 7293392, 23546084, 6069326,
+7723962, 27613956, -33459942, 39291972, 28579786, 16495359, 26520350, -10869488, 8368207, -26744762,
+-8229158, -13205414, 21042118, -20792474, 1938641, -45203992, -60176788, 38477000, -5443871, 25074020,
+-21220896, 16848082, -15588047, 4214974, -11193222, -36439040, -16980690, -24077586, -17640504, 14275934,
+48468168, 20526186, -56511032, -10274099, 1743220, -15333033, 2083059, 1538672, -34004328, 15358266,
+15345381, 28545426, -16442745, 9381282, -18651432, -21421686, 7093139, 38433516, 63362580, -5791764,
+-6026376, -383863, -3168612, -30764314, 43789876, 20078972, 22463216, 16856136, -14957760, 13969918,
+-27459336, -38811472, -8201240, 25768730, 16143171, -15152108, -10415296, -3805878, 20468204, -1069447,
+14362908, 13921063, 24508158, 6719477, -18722836, -18013092, 13056164, -20070920, -15454903, 5531381,
+26887032, 24439438, -32973000, -26221850, 13430900, 16267726, 54747948, -16013249, -33763812, -35169340,
+24662240, -23703388, 22965190, 25994752, 55841016, 121526096, -31206696, -19656992, -50348292, -78626352,
+-27602682, -42040212, 86436, 46792060, -12347494, 21650394, 33735356, 18753974, -20907900, -54916524,
+-83727704, 29606820, -14806900, 15127412, -27528056, 2385854, -25283398, -65756488, 13700409, -28843926,
+24068996, 1514513, 12451647, 10509785, -60266444, -43505336, -22592602, -15198816, -15710990, -26150446,
+-9592273, -41857140, -27306328, 16473884, -27861452, 46328200, -38533372, 1209033, 7864622, -6418829,
+2095944, -4680978, 9467719, -13940390, -14410152, -4761508, 6533719, -4221416, 18726058, -22487912,
+2231236, 27841052, 7562364, 1785633, 13320841, -918049, -14749991, -10839961, 22519050, 2616172,
+-41598368, -20414516, -34240016, -17574470, 39760124, 36211408, -43170328, -7720204, -48824652, -14449881,
+-6548752, 7257958, 20335596, -41379324, 22243636, -35871568, -8704288, -25613574, 45033804, -13758391,
+30277908, 27936614, 66721244, -37214280, 23837606, 172872, 20784958, 4807142, 11185705, -41130756,
+-49798536, 34864932, 8507793, -53399864, -21517250, -31614180, 5564667, -4438312, -73642048, -31173410,
+-16733193, -37208912, -22157736, -73832096, -62259308, -8004209, 31291522, -38837240, -22323092, -2274722,
+-33272574, -4378183, 162135, -31219580, -6383932, 11250667, 4690641, -42684460, -23721642, -22573812,
+-12011950, -12435004, -2044941, -28309204, 29709362, 21808234, 41194104, 60369524, 51335596, 16694538,
+54040352, 24940338, 11487964, -18703508, 20263656, 23084376, 16933446, -1707250, -15775415, -3910568,
+14715095, 27275726, 119731344, 20318416, 25781614, 21658984, 49550500, 22981834, 43449500, 81487344,
+-36497020, -71404368, 9871445, 52487720, 86417424, 42343544, -74897248, 14042932, -19487878, 112687592,
+78547432, 100952136, 86836720, -74532712, -55001352, 66044784, 70883600, -18937048, -55786792, 89573688,
+72593000, -62817656, 14298483, -1698123, 10470057, -2783139, -5715528, 22643604, -22617834, 22012244,
+-8519605, -544387, 9678172, 6544994, 8904541, -885837, -12190728, -9321690, 15469935, -12867185,
+-373662, 12791486, -6347425, -9145596, -9705015, -21536576, -18873696, 13451838, -5869073, 4026532,
+-11130945, 944356, -25351044, -6608881, 9282498, 15626165, -9121974, 1880122, 14038637, 17070348,
+-2385318, 13671955, -10534481, 48139068, -16283832, 15008226, 4878546, 7359427, -6753836, 10766409,
+-2534031, 33203856, -2900714, 8307004, -21970368, 30029338, -14070313, -4357245, -1457068, 1702418,
+-6255083, 16639240, -19080392, 15430207, -17000018, 24053428, -24304146, 31507880, -18596134, -14911053,
+-9798431, -8932995, 6635725, -22195854, -45638324, -50194208, 42279660, 10522133, -13364864, -67944232,
+-27434640, 37520296, 7487202, 27041114, 30194156, -11184632, -19298898, 692564, 7011534, 5383205,
+4853850, -12183748, -8983998, -6852621, -139050, 18130668, 9738301, -1076963, 3966402, -5462662,
+-9007620, -5833103, -4773856, 166967, 5290863, -4319127, 6876243, 7196755, -24968256, -11175505,
+-11084774, 13174812, 9180493, -923418, -11621108, -15722802, 13619878, 2972117, 9148817, 12717398,
+-23041426, -15331423, 4262218, 18641232, 9463424, -26142392, -16062641, -21167210, -10022843, 5707475,
+5007395, -8495982, 9882720, -3593814, -8916889, 4584341, 9138080, -5978058, 2506114, 485868,
+-7724499, 185220, -2301029, -17433272, -18066780, 421444, -19082002, -12827994, 2241973, 10336376,
+3527779, 17151952, -44362716, -120027160, -45952392, 26822070, 57088168, 135442336, 79306568, 21346524,
+27883464, -23881628, -44532368, -96532072, -65457448, -50038516, -16882442, 19446538, 52324512, 40898288,
+50758460, 49436148, 33005214, -11555610, -39882528, -34117608, -35578436, -28183038, -41150620, 12298639,
+-26302380, 1790465, 18034030, 34688304, 18826452, 32500018, 42087996, 818728, 11967389, 1003949,
+-1513439, -23876796, -4045859, -21191906, -42526620, -65543348, -37519224, -19815906, 4373351, 5296232,
+38133404, 54597088, 51195472, 62503048, 8067023, 41247792, 15169288, -3067681, -39173324, -36709084,
+-51768852, -65841848, -46416248, -50662896, -33625300, 1422708, 15202574, 38641284, 59321552, 90254976,
+70397736, 66618164, 34821984, -9830643, -11987791, -29533806, -70190504, -47001976, -64996812, -17580374,
+-9045738, 0, 0, },
{
-6189585,
-5708549, -5827734, 4446902, -2529736, 1142461, -8290898, 4577899, 1128503, -279173, -1499481,
-3481071, -4316442, -924492, -1751810, 3629784, -9207336, -2603287, -5244692, -2419677, 1912871,
-1406602, 4478041, -7128035, 2143726, 754304, 408559, -2933463, -799938, -3810710, -486942,
--5206574, 1706713, -5771363, -512175, -4916664, -3936875, 806917, -4359392, -5549098, -6791417,
-1804960, -791348, -1369021, 2682744, 1993402, -2641405, 55835, 7233799, -3696356, -2362232,
--5546414, -1621350, 3125126, 1724966, 1770600, -2612414, 2251100, -3163244, 360240, -3856881,
--432718, 253403, -4028679, -1493038, 584116, -585726, -4527970, -8455717, -3602941, -3030636,
--1060857, -237297, -1986959, -2407866, -574989, 8009041, 5094905, 83215, 188442, 6310381,
-1492501, -3209414, 2062121, 4198331, -2253784, -3537979, -12737799, 654446, -4372277, 8416525,
--4318053, 4223027, 3259880, -433792, 2597382, 4676683, 1107565, 1111860, -2476586, -2741263,
--2334315, -3453691, 2845953, 1861868, -1858110, 2798708, -2117956, -2727841, -3567507, -1536525,
--2880313, 305480, -217970, -400506, 5499706, -3240553, 4434017, -1597728, -1505923, 3288334,
--2284923, 1118302, -2302103, 3612604, -1382980, -9716290, 2556043, 502511, 812286, 5129265,
-2143189, 536334, -1571421, -3073049, 7971996, -4265440, 2782065, 1930588, -4027069, 3778498,
-1013075, -3891777, 2664490, -4008815, -408559, -180389, 3025805, 882616, 3149285, -1238024,
--9478456, -1779190, 15497853, -7443715, 990527, -324270, -308164, 3628174, -2621541, -10895795,
--10021232, 4916127, -3070902, -811212, 2742337, 693100, 2711198, 2988760, -4691178, 2743410,
-1957968, -3302830, 4171487, 6176700, -3791383, -1171989, 461172, -6401649, -2787434, 783295,
-7967165, -1132798, -267899, -6374805, 4022237, 129923, -5650030, -2363843, 2214056, -755914,
-1325534, -4911832, 78383, 477278, -1847373, 5524939, 1581085, 1349157, 5432597, -398358,
-6999723, -2124398, -8339216, 3623879, 3632469, -2866354, -1032940, -887448, 1373316, 558883,
-2726231, -1783485, 1944010, -4489315, 181999, 3293703, -4051228, -292595, 3118683, 1097901,
--1803349, 1837172, -1158031, 828392, 5115843, 2000381, -5203890, 7905424, 3719979, -3568581,
--8815420, -930934, 1110786, 10026601, -3619584, 8611409, 2276870, -155693, 680752, 7715372,
--1604707, -1944010, -2032593, 5473936, 11021960, 2972117, -7315403, -10030896, -14276471, 2020782,
--3595425, -5949067, -3149822, -9294309, 145492, -4246112, 906775, 4649839, 4967667, -5244692,
--4600984, -3289945, 821413, -7865696, -647466, 2615098, -3386045, -1187022, 1083406, 3355980,
--4237522, 1308354, 10830297, -299574, -236223, -3752728, 4690641, -1814624, 694174, 3508988,
-4697621, 6656663, -697395, 1122597, -1596654, 83752, -726386, 1040993, 10563472, -11084774,
-694711, 2401961, 6477348, -2265595, -2462627, -407485, -2244121, 8402567, -3831111, -10287520,
--18790, -2746095, -3628174, 3215320, -9535364, -16432545, 6243809, -5088463, 6999186, -6145562,
--484258, 4863514, -9467182, -1567663, 2994129, -2527588, 13996225, -5766531, -1677722, -5498632,
--4569845, 7217693, 8038032, 3146601, -9275519, -11234561, 10544145, 1822140, -10500658, 4026532,
-484258, 5082020, -3045669, 4852776, -6240051, 3160559, 10333154, 4298726, 4486630, 2394981,
-286152, -2532420, 2247342, 872415, -6869264, 192737, -2097555, -5051956, -4998268, -1864016,
-4169340, -7278896, 1136019, -5239323, -409096, -722628, 2573759, 4463008, 9397925, 3367791,
-107911, 4084514, -4769025, -7150584, 56908, 1828046, 959925, 8935679, -1773285, -901943,
--2555506, -1042066, 1542430, 4507032, -808528, 2081985, -3920768, 7495255, -1267015, -1952063,
--664109, -8627516, -2298881, -5733245, -918586, 10581726, 6635188, 4514011, -1202591, -10030896,
-977642, -6733972, -10593000, -3783866, 6991670, -6168110, -9433896, 1971927, 410706, -4917201,
-601295, 4755066, 1052804, -12494597, -3794067, 7180112, 8575976, 4041564, -10386305, -4059281,
-4191888, -2138894, -2530273, 209917, 2976949, 92879, 860604, 9822590, -361851, 5753109,
-4434017, -552977, -5016522, -598611, -3123515, 5630702, -3901978, -6356015, -389768, 9089225,
-129923, 9009768, 4730907, 366683, 5745593, -1621887, 12825846, 465467, 6113886, 6842420,
-232465, -6842420, -1423245, -8092256, 3280818, -6039261, -3488050, -5675800, -3766686, -3195993,
-1846299, -104153, 3021510, -1170916, -4934381, -4825933, 500364, 5342940, 9993852, -14965814,
--2756832, 12495134, -6210523, 2257005, -9649718, 4216048, 17633526, -2430952, 957241, -801011,
--12410845, 940598, -751082, 18617610, -5848672, -995896, 8227547, -5240934, 11649562, -7909183,
--1093606, -11916924, 13434121, 66572, -5163625, 42413, 4991826, -6345278, 9392020, -1134408,
-8346195, -217433, 4439923, -13076565, -8165807, -6203007, -1781875, 7587597, -11531987, 6047314,
-5010080, 1412507, -4650376, -7286412, 16291885, 2947421, -1599339, 5975374, -5439576, 3101503,
--7301982, -7729331, -2809446, -5307506, 17683990, 4849018, -3107409, -5523865, -6246493, 5076115,
-4933844, 1232119, -5636071, -1183800, -1933272, 6957847, 1303523, 5514201, -13267691, 7123204,
--274341, -117575, -244813, 2091112, -3854196, -311385, -1649804, 5861557, 2653753, 4745939,
-1081795, -416612, -2447595, -8488466, -2953327, -5649493, 2688650, -790811, 11576011, -10612864,
--13496935, -3799436, 3587908, -4578972, -3626026, 9727027, 1581085, -6189585, -7001871, -7299297,
-10727218, -6193343, 7093139, -4206384, 7804493, -8829379, 1334661, 12153684, 3867618, -17917530,
-3500935, -200790, -2714419, -2144799, 1283122, -2684355, 1183264, -3454228, 885300, -1341104,
--8255464, 7110319, 7450158, -3039226, 8304320, -8206072, -1823214, -2867428, -4108136, 8988293,
--7517267, -13124346, -7474854, 1560684, -10640245, -10208064, -5251672, -4012573, -7022809, -1417339,
-7723962, 7793755, 772557, 8405251, 2379949, 165356, 6583111, -8866960, -1833414, -1488206,
-19488414, -9390409, -9020505, 6370510, 15882789, 3193845, 14328011, 8207146, 13035763, 5818070,
--2209761, -5716602, 4801774, -9494025, -7100118, 10824391, 9180493, 22500260, -359704, 3202972,
--8075613, 8731669, 4151086, -9918690, -2131378, 12749074, 200253, -13931800, -5399848, -7851200,
--2423972, 7828652, 7423851, -5283884, -2305324, 9736691, -9154186, 4326643, 8476118, 9781788,
--4944044, 8405251, -3271155, -12775917, 4798016, 11636140, -2819646, 3307125, 3169686, -4046933,
-1750736, 3402688, -3303904, 1185948, 9805410, -5712307, -2600066, 8579734, -1520418, -1946157,
--14125611, -5333813, -8375186, -14610942, -9298604, 6953552, -4314295, -6446209, 12873091, 12116103,
--2707977, 13008919, 5837398, 8356933, -1978906, -7428146, 5977521, -9786083, -10461467, 14105209,
--2373506, 32260036, -13316546, -6302328, -751619, 7827578, -4509179, -4461398, -13309030, -15467251,
-6955163, 1257889, 21259552, 6798397, -2164127, -2524904, 14126684, 14305462, -11902428, 8531416,
--11368778, 2858838, -4892505, -6010807, -3485366, 2260764, -1846299, 7311108, 3754338, 8185134,
--1046361, -4209068, -7873749, -1752884, 9142912, 569083, -12186970, -1804423, 2929705, -5494337,
-9596031, 7817378, 1639604, 2477659, -26636314, -10565083, 9194451, -1048509, 14799384, 3693135,
-16669305, -2404645, -9262097, 8402567, -5291400, 5484673, 839666, 23772644, 19942606, 1584843,
-5355824, -4256850, 7594039, 7479686, 8671002, 8734890, 15538118, -1804960, 2035278, -8116952,
--6539088, 2536178, -8998493, -22841172, -28036472, 22135188, -637266, 2531883, -7772280, 12427488,
--26629870, -17035450, -5390721, -6797860, -656056, -23820962, 4661114, 548682, -652298, -10829760,
--11103564, 4598300, 15204184, 2454037, -20302848, -4287451, -16619376, 13259101, 8483634, 805843,
--7342784, -3316252, -3731253, 11005854, -1505923, -11274, -2293513, -14476187, 7707856, 10567230,
--6083285, -3007014, 8121783, -15693274, -11542188, -17313014, -5834713, 4828080, -11085847, -4955319,
--265214, -17821430, 5842766, 11799886, 20271708, 3446175, -1632088, 1857037, -12724377, -9604621,
-15775952, -316754, -5243082, -2751464, -22737556, -11598559, 5382668, -3863323, -1773285, -598611,
-16475495, -1252520, -13138842, 2798708, 13116830, 1642288, -4858145, 2232309, 3840775, -2914135,
--6191732, 3593814, 15702937, 14514305, 5795522, 23993834, -9487583, -3905736, 4573604, -5122286,
--959925, 8486319, 25559888, -3032784, 5834176, 823023, -721018, 586800, 28084792, -12209518,
-14951855, 888521, -17109002, 6987912, -16969416, -9771051, 11039677, -8250632, 8038568, 1517734,
-1762547, 13381507, 10577431, -13523241, -15884400, -11315091, -3411278, 6007586, 5603322, 3071975,
-4096862, -18717468, 3870839, -9406515, -24409910, 18562848, -4142496, 17580912, 18100602, 2471754,
-7301982, -7694434, -10360535, -18284212, 5456219, 19848654, 4132832, -6288369, 2030446, -2244657,
-3782793, -8835821, -7714835, -8725226, 2942590, 770410, -2318746, 13928042, 11809549, 8701067,
-18459770, 4464082, -16469052, 26023744, -15284715, -2057289, -2369748, -297963, 22138408, 24900610,
-6554120, -43995496, 2588792, 13716515, -13888850, 10060424, 18959060, 1909650, 5848672, 12397423,
-9693204, 4435628, 17126718, 4727149, -1291711, 31453120, 12256226, 5056250, 14083735, -8943196,
-17060146, -10180146, -40265, -149787, -2781528, -15523622, 6527277, -10637023, 22588306, -761820,
--3318936, 33003602, 5187247, 5851893, 11526082, 2413772, 7039452, -5909875, -12932683, -331786,
-10296110, -15159624, 19997368, 18486612, 13638669, 4628901, 8503498, -10029822, -10845329, -17362406,
--7313256, -8728984, -8664560, 5840082, -857920, -16900160, -7162395, 17557290, 690953, -13630616,
-9533217, 681826, -9334575, -22972170, 2650532, -35570384, 22513144, -10981158, 20454782, 2709051,
-6037651, 2488397, -7384660, 11767137, 30517890, 11869142, 8711804, 23960012, -34206732, 12717935,
--20222854, 16234976, -8841727, -14772540, -4504884, -16937204, -7280507, -4288525, 5489505, 6847252,
--5136781, 22877144, -1461900, -4750771, -3491809, -22046068, -2665027, -631360, -18231062, 5027259,
--15559593, -20045150, -6466074, 10871636, -32154272, -22461068, -14658723, 875636, -22533546, -19813222,
--15505906, -8530879, -6300180, -3731253, -15151571, 15398531, 2813741, -2372433, -11218455, -12421582,
-22031034, -19847580, -12839805, 4959614, 6086506, 7080791, -10752987, -16172162, -6114960, -3626563,
-7631620, -11808476, -3886409, -5259188, -12554189, -23219666, -27697170, 26240640, -28604482, -2279554,
-3111704, -5737540, -4267050, -26897770, 11586211, -6780680, -26059714, -998043, -4211216, 25782152,
-8640400, 18530636, -30390114, 34283504, 5124970, 3055332, -6364068, 17147656, -107374, 28512140,
--8214125, 19372450, 10446971, -29175712, 12141336, 4097936, 13342316, -2969970, -7845832, -12062416,
--4401805, 13272523, 30565672, 2511482, -4669167, -20241644, 7186554, -21870510, -3476239, 20375324,
--19325206, -881005, 1227287, -4272956, -7356205, -9172976, 33982856, -8425115, -8470212, -5249524,
-7637526, 10258529, 4194573, -672699, -7038915, -1404991, 5005785, 19334332, -4857608, 28176596,
-17202418, 7295539, -7255274, 24203752, 29194504, -4132832, -7959112, -3359201, -9762998, 984621,
--9720585, 12739410, 4706748, 19120658, 16057809, -28489054, -29964914, 32742684, 25543782, 1398549,
--5883032, -17019344, -20566450, -10896332, 18257906, -22382686, -22568980, -6995428, -9146133, -31875636,
-14430016, -13521094, -5011153, -3581466, 2103460, -448287, -19852950, -55756192, 26537530, -27295590,
-9814537, 38193532, 5044976, -17326972, 10361609, 12704513, -6622303, -13335873, -3505230, -27941984,
-7988103, -29007672, -17977122, 10332081, 234613, 3918621, -26292716, -6109591, -19236622, -16496969,
--23517630, -8841190, 6816650, -14418205, -14578193, 12306155, 917512, -2091649, 3309272, -26974542,
--2507187, -21208548, 16404628, 3764539, -50362248, 11436424, 25627532, -6704981, 14943265, 12250857,
-8125005, 6123013, 24480776, 18747532, -86436, -19252728, -4622459, 18898930, 12263742, -17999672,
-494458, -20870320, -6984691, 15569, 13634911, 17678086, -35505420, -29130078, -15896748, 1385664,
--10682121, -5529771, 32423782, 3544959, 7670812, 23548232, -11014444, 5651640, 19289234, 18664854,
--29474750, 7497403, -5435818, -6976638, -5938329, 21599390, 12103755, -13935558, -7334194, 16704738,
--26927298, 2615635, 11499775, 16706886, -2069637, 4467303, -31568546, 855772, -13240847, 11959873,
-5381594, 19195820, -27539330, -13635984, -2816962, 4499515, -1075352, 6568616, 3505767, 16680579,
-31180926, -17908940, -22810572, 7299834, -23804856, -6579353, 12160126, -17530982, -16301012, 2367601,
-12640626, 16335908, 12632036, -6048925, 139050, -31390842, -20008642, 29483876, -18092012, 39498128,
--14562623, 8717173, 7534447, 543850, -26472568, 36435280, -14584098, -2522220, -4341138, 14747307,
-28937342, -26255136, -13199508, 32687386, -21234318, 819265, -6449967, 7375533, 39430484, 1083942,
-91268, -21912386, 31288836, -8286603, 10663867, 7905961, 1970853, 18016850, -19694036, 6047314,
-16967806, 16915728, 37611028, -23201414, 34547644, -5501316, -22177064, -21393232, 5873905, 14907295,
--9715753, -3954591, -15268609, -5698348, 29177324, -19787988, -1780264, 24067922, -7453379, 14695231,
--9256728, -3641596, 24779814, -31139, 1261110, 24767466, 16517370, 6776922, -3011309, 21147882,
-27426050, -27029302, 25730076, -23702314, 12929462, -16750909, 3516505, 22536230, 7027104, -47170552,
-21191906, 15105400, -522912, 25996900, -38871600, -5895380, 25680684, 23900956, 3191698, 36748276,
--19204946, 2314987, -5140002, -3329674, 14263586, 8474507, 25385942, 24351390, -17299592, 17291538,
--31431644, -6260452, 1304060, 2081985, -3611531, -687732, -48980880, -21124260, -38271380, -18468896,
-25765508, -8110509, -4491462, 16559246, -11991012, 11466489, 29496224, -16365436, 11338714, 14542759,
--21375516, 2684892, -26279294, 9916006, -2893197, -14012868, 20646982, 556198, 32253056, -2043868,
--24358370, 40909028, -7509214, 4018479, 5495948, -38533372, 11401528, 33013802, 11610907, -14490146,
--25393458, 2509872, 5907728, 28181428, 18000744, -9370545, -5785858, -22214644, -93952, 31847720,
--43866112, 13008919, 30072824, -27611808, 9654013, 2583960, 10122164, 31745178, 10232223, 12034498,
--6441377, -31833760, 32021666, -6469295, -17253420, 67826120, 32955284, 16887274, 2281702, 939524,
--32911798, -27048094, -12789876, 19292456, -1587527, -19548544, -14147622, 24298240, -16531329, 16258062,
-8765491, -13889387, 17441862, 6918656, -28275918, -15431817, -17001628, 2150168, 16235513, -36690832,
-11680700, 41966664, 69909720, -11537356, -2172717, -57137024, -19027242, -42008540, -27848568, 39034812,
-2985002, 10624675, -32145146, 10513006, -28171228, -64019172, 9628243, 30736934, -2214593, 3944928,
-33463164, -43943956, 50485728, 24907590, 16052977, -24915106, 34132640, 64856692, -12435004, 19965156,
-49844708, 41522672, 74056512, 15826954, 26985280, 19840602, 18537078, 62957780, -15735686, -7687455,
-24012626, 13623099, -6059662, 34505768, 2954938, 7086159, -19672024, -56622700, 3192235, 37366216,
-6813429, 22520124, -39517996, 2250563, -52832928, -192737, -56757456, 3691525, 42324756, -5508296,
--15644955, -55813636, 74512312, 12802761, 6990060, 74778064, 1503775, -17702244, -9910637, 3271691,
-18346490, -4945655, 4308389, -7099044, -34540664, 21650930, 16773458, -19714436, -70648456, 5870147,
-101004744, 16697759, -17743046, -16714939, -42546484, -27023934, 3744138, 63936492, 13265543, -38787848,
--530428, 19127636, 6485938, 3582540, -1595044, 13065291, -26917634, -8672076, 17513802, 36484672,
-36936720, -30128658, -9955197, 4847945, 7147900, 11046656, -34790844, 5985574, 8696235, -7452842,
-29497298, 2114735, 33656976, 49103824, 25019796, 12093554, 23030688, -24068996, 26806502, -18954764,
-38778184, 66123704, 23735600, -31896574, -26855894, 31365610, 13377749, 56795572, 43671764, 15033459,
--7248831, -9569724, 4648229, 5455682, -15853261, 23757074, 21552682, 6210523, 52170432, 36295160,
--1289027, 26695370, 29963302, 15234249, 30054034, 3949223, -43125768, -2972654, -7610682, -8048232,
-56817048, 26955752, 12765717, -3056943, -17034378, -72025528, -17470854, 36042828, 18516678, 81993608,
-2257005, -15111842, -40312028, -77270760, -83981104, -16562468, 32985348, 36553928, 23181012, -44372916,
--56673168, -3569655, -8781061, 18498424, 54831164, 25610354, -7357279, -37557340, -48256104, -32630478,
--37044, -32139240, 9211631, -27598386, -13632226, 34053720, 29554744, 23917062, 9132174, -43095164,
--12605729, -41541996, -30374008, -19408958, 20334522, -8727374, 21731460, 52776020, 58409944, -29980482,
-5328444, -49459768, -31852552, -26536456, -5380521, 2640331, 33280628, 31222264, 49670224, 30175904,
-11542188, -31909996, -24899536, -12560095, 14865419, -49233748, 1383516, 40904196, 37197100, -18855980,
-50847044, 37692632, 24301462, 38758320, -96273840, 10248866, -30537218, -42780560, 9419937, -30746060,
--15760919, 37589016, 15997143, -105924632, -122119344, -132191576, -133933720, -186293664, 1904818, -57659936,
--9482751, 40709848, 80600432, 108095736, 110452064, 212178896, 225792336, 186988912, 141905712, 150296480,
-143065360, 64088428, -6324340, -75322456, -76608256, -123379376, -31955630, -60589104, -43015172, 8506720,
--104301672, -19936702, -92111480, -14891725, -107905688, -99478960, -40687300, -80014704, 1505923, -34174516,
--32833414, -57033944, -35903244, -92840552, -64632816, -27576912, -27099096, -44121124, -25638270, 6895033,
--37329708, 25552372, 74017320, -42673184, 85280872, 56556668, 110681848, 114527984, 96151968, 121487984,
-98255432, 165320272, 158137472, 130129456, 166019280, 146389136, 215013584, 216574256, 245936272, 194102992,
-197500320, 222690832, 184506432, 232209024, 144846704, 237232512, 146835808, 4883915, -65832720, -116003848,
--93619016, 0, 0, },
+5708549, -5827734, 4446902, -2529736, 1142461, -8290898, 4577899, 1128503, -279173, -1499481,
+3481071, -4316442, -924492, -1751810, 3629784, -9207336, -2603287, -5244692, -2419677, 1912871,
+1406602, 4478041, -7128035, 2143726, 754304, 408559, -2933463, -799938, -3810710, -486942,
+-5206574, 1706713, -5771363, -512175, -4916664, -3936875, 806917, -4359392, -5549098, -6791417,
+1804960, -791348, -1369021, 2682744, 1993402, -2641405, 55835, 7233799, -3696356, -2362232,
+-5546414, -1621350, 3125126, 1724966, 1770600, -2612414, 2251100, -3163244, 360240, -3856881,
+-432718, 253403, -4028679, -1493038, 584116, -585726, -4527970, -8455717, -3602941, -3030636,
+-1060857, -237297, -1986959, -2407866, -574989, 8009041, 5094905, 83215, 188442, 6310381,
+1492501, -3209414, 2062121, 4198331, -2253784, -3537979, -12737799, 654446, -4372277, 8416525,
+-4318053, 4223027, 3259880, -433792, 2597382, 4676683, 1107565, 1111860, -2476586, -2741263,
+-2334315, -3453691, 2845953, 1861868, -1858110, 2798708, -2117956, -2727841, -3567507, -1536525,
+-2880313, 305480, -217970, -400506, 5499706, -3240553, 4434017, -1597728, -1505923, 3288334,
+-2284923, 1118302, -2302103, 3612604, -1382980, -9716290, 2556043, 502511, 812286, 5129265,
+2143189, 536334, -1571421, -3073049, 7971996, -4265440, 2782065, 1930588, -4027069, 3778498,
+1013075, -3891777, 2664490, -4008815, -408559, -180389, 3025805, 882616, 3149285, -1238024,
+-9478456, -1779190, 15497853, -7443715, 990527, -324270, -308164, 3628174, -2621541, -10895795,
+-10021232, 4916127, -3070902, -811212, 2742337, 693100, 2711198, 2988760, -4691178, 2743410,
+1957968, -3302830, 4171487, 6176700, -3791383, -1171989, 461172, -6401649, -2787434, 783295,
+7967165, -1132798, -267899, -6374805, 4022237, 129923, -5650030, -2363843, 2214056, -755914,
+1325534, -4911832, 78383, 477278, -1847373, 5524939, 1581085, 1349157, 5432597, -398358,
+6999723, -2124398, -8339216, 3623879, 3632469, -2866354, -1032940, -887448, 1373316, 558883,
+2726231, -1783485, 1944010, -4489315, 181999, 3293703, -4051228, -292595, 3118683, 1097901,
+-1803349, 1837172, -1158031, 828392, 5115843, 2000381, -5203890, 7905424, 3719979, -3568581,
+-8815420, -930934, 1110786, 10026601, -3619584, 8611409, 2276870, -155693, 680752, 7715372,
+-1604707, -1944010, -2032593, 5473936, 11021960, 2972117, -7315403, -10030896, -14276471, 2020782,
+-3595425, -5949067, -3149822, -9294309, 145492, -4246112, 906775, 4649839, 4967667, -5244692,
+-4600984, -3289945, 821413, -7865696, -647466, 2615098, -3386045, -1187022, 1083406, 3355980,
+-4237522, 1308354, 10830297, -299574, -236223, -3752728, 4690641, -1814624, 694174, 3508988,
+4697621, 6656663, -697395, 1122597, -1596654, 83752, -726386, 1040993, 10563472, -11084774,
+694711, 2401961, 6477348, -2265595, -2462627, -407485, -2244121, 8402567, -3831111, -10287520,
+-18790, -2746095, -3628174, 3215320, -9535364, -16432545, 6243809, -5088463, 6999186, -6145562,
+-484258, 4863514, -9467182, -1567663, 2994129, -2527588, 13996225, -5766531, -1677722, -5498632,
+-4569845, 7217693, 8038032, 3146601, -9275519, -11234561, 10544145, 1822140, -10500658, 4026532,
+484258, 5082020, -3045669, 4852776, -6240051, 3160559, 10333154, 4298726, 4486630, 2394981,
+286152, -2532420, 2247342, 872415, -6869264, 192737, -2097555, -5051956, -4998268, -1864016,
+4169340, -7278896, 1136019, -5239323, -409096, -722628, 2573759, 4463008, 9397925, 3367791,
+107911, 4084514, -4769025, -7150584, 56908, 1828046, 959925, 8935679, -1773285, -901943,
+-2555506, -1042066, 1542430, 4507032, -808528, 2081985, -3920768, 7495255, -1267015, -1952063,
+-664109, -8627516, -2298881, -5733245, -918586, 10581726, 6635188, 4514011, -1202591, -10030896,
+977642, -6733972, -10593000, -3783866, 6991670, -6168110, -9433896, 1971927, 410706, -4917201,
+601295, 4755066, 1052804, -12494597, -3794067, 7180112, 8575976, 4041564, -10386305, -4059281,
+4191888, -2138894, -2530273, 209917, 2976949, 92879, 860604, 9822590, -361851, 5753109,
+4434017, -552977, -5016522, -598611, -3123515, 5630702, -3901978, -6356015, -389768, 9089225,
+129923, 9009768, 4730907, 366683, 5745593, -1621887, 12825846, 465467, 6113886, 6842420,
+232465, -6842420, -1423245, -8092256, 3280818, -6039261, -3488050, -5675800, -3766686, -3195993,
+1846299, -104153, 3021510, -1170916, -4934381, -4825933, 500364, 5342940, 9993852, -14965814,
+-2756832, 12495134, -6210523, 2257005, -9649718, 4216048, 17633526, -2430952, 957241, -801011,
+-12410845, 940598, -751082, 18617610, -5848672, -995896, 8227547, -5240934, 11649562, -7909183,
+-1093606, -11916924, 13434121, 66572, -5163625, 42413, 4991826, -6345278, 9392020, -1134408,
+8346195, -217433, 4439923, -13076565, -8165807, -6203007, -1781875, 7587597, -11531987, 6047314,
+5010080, 1412507, -4650376, -7286412, 16291885, 2947421, -1599339, 5975374, -5439576, 3101503,
+-7301982, -7729331, -2809446, -5307506, 17683990, 4849018, -3107409, -5523865, -6246493, 5076115,
+4933844, 1232119, -5636071, -1183800, -1933272, 6957847, 1303523, 5514201, -13267691, 7123204,
+-274341, -117575, -244813, 2091112, -3854196, -311385, -1649804, 5861557, 2653753, 4745939,
+1081795, -416612, -2447595, -8488466, -2953327, -5649493, 2688650, -790811, 11576011, -10612864,
+-13496935, -3799436, 3587908, -4578972, -3626026, 9727027, 1581085, -6189585, -7001871, -7299297,
+10727218, -6193343, 7093139, -4206384, 7804493, -8829379, 1334661, 12153684, 3867618, -17917530,
+3500935, -200790, -2714419, -2144799, 1283122, -2684355, 1183264, -3454228, 885300, -1341104,
+-8255464, 7110319, 7450158, -3039226, 8304320, -8206072, -1823214, -2867428, -4108136, 8988293,
+-7517267, -13124346, -7474854, 1560684, -10640245, -10208064, -5251672, -4012573, -7022809, -1417339,
+7723962, 7793755, 772557, 8405251, 2379949, 165356, 6583111, -8866960, -1833414, -1488206,
+19488414, -9390409, -9020505, 6370510, 15882789, 3193845, 14328011, 8207146, 13035763, 5818070,
+-2209761, -5716602, 4801774, -9494025, -7100118, 10824391, 9180493, 22500260, -359704, 3202972,
+-8075613, 8731669, 4151086, -9918690, -2131378, 12749074, 200253, -13931800, -5399848, -7851200,
+-2423972, 7828652, 7423851, -5283884, -2305324, 9736691, -9154186, 4326643, 8476118, 9781788,
+-4944044, 8405251, -3271155, -12775917, 4798016, 11636140, -2819646, 3307125, 3169686, -4046933,
+1750736, 3402688, -3303904, 1185948, 9805410, -5712307, -2600066, 8579734, -1520418, -1946157,
+-14125611, -5333813, -8375186, -14610942, -9298604, 6953552, -4314295, -6446209, 12873091, 12116103,
+-2707977, 13008919, 5837398, 8356933, -1978906, -7428146, 5977521, -9786083, -10461467, 14105209,
+-2373506, 32260036, -13316546, -6302328, -751619, 7827578, -4509179, -4461398, -13309030, -15467251,
+6955163, 1257889, 21259552, 6798397, -2164127, -2524904, 14126684, 14305462, -11902428, 8531416,
+-11368778, 2858838, -4892505, -6010807, -3485366, 2260764, -1846299, 7311108, 3754338, 8185134,
+-1046361, -4209068, -7873749, -1752884, 9142912, 569083, -12186970, -1804423, 2929705, -5494337,
+9596031, 7817378, 1639604, 2477659, -26636314, -10565083, 9194451, -1048509, 14799384, 3693135,
+16669305, -2404645, -9262097, 8402567, -5291400, 5484673, 839666, 23772644, 19942606, 1584843,
+5355824, -4256850, 7594039, 7479686, 8671002, 8734890, 15538118, -1804960, 2035278, -8116952,
+-6539088, 2536178, -8998493, -22841172, -28036472, 22135188, -637266, 2531883, -7772280, 12427488,
+-26629870, -17035450, -5390721, -6797860, -656056, -23820962, 4661114, 548682, -652298, -10829760,
+-11103564, 4598300, 15204184, 2454037, -20302848, -4287451, -16619376, 13259101, 8483634, 805843,
+-7342784, -3316252, -3731253, 11005854, -1505923, -11274, -2293513, -14476187, 7707856, 10567230,
+-6083285, -3007014, 8121783, -15693274, -11542188, -17313014, -5834713, 4828080, -11085847, -4955319,
+-265214, -17821430, 5842766, 11799886, 20271708, 3446175, -1632088, 1857037, -12724377, -9604621,
+15775952, -316754, -5243082, -2751464, -22737556, -11598559, 5382668, -3863323, -1773285, -598611,
+16475495, -1252520, -13138842, 2798708, 13116830, 1642288, -4858145, 2232309, 3840775, -2914135,
+-6191732, 3593814, 15702937, 14514305, 5795522, 23993834, -9487583, -3905736, 4573604, -5122286,
+-959925, 8486319, 25559888, -3032784, 5834176, 823023, -721018, 586800, 28084792, -12209518,
+14951855, 888521, -17109002, 6987912, -16969416, -9771051, 11039677, -8250632, 8038568, 1517734,
+1762547, 13381507, 10577431, -13523241, -15884400, -11315091, -3411278, 6007586, 5603322, 3071975,
+4096862, -18717468, 3870839, -9406515, -24409910, 18562848, -4142496, 17580912, 18100602, 2471754,
+7301982, -7694434, -10360535, -18284212, 5456219, 19848654, 4132832, -6288369, 2030446, -2244657,
+3782793, -8835821, -7714835, -8725226, 2942590, 770410, -2318746, 13928042, 11809549, 8701067,
+18459770, 4464082, -16469052, 26023744, -15284715, -2057289, -2369748, -297963, 22138408, 24900610,
+6554120, -43995496, 2588792, 13716515, -13888850, 10060424, 18959060, 1909650, 5848672, 12397423,
+9693204, 4435628, 17126718, 4727149, -1291711, 31453120, 12256226, 5056250, 14083735, -8943196,
+17060146, -10180146, -40265, -149787, -2781528, -15523622, 6527277, -10637023, 22588306, -761820,
+-3318936, 33003602, 5187247, 5851893, 11526082, 2413772, 7039452, -5909875, -12932683, -331786,
+10296110, -15159624, 19997368, 18486612, 13638669, 4628901, 8503498, -10029822, -10845329, -17362406,
+-7313256, -8728984, -8664560, 5840082, -857920, -16900160, -7162395, 17557290, 690953, -13630616,
+9533217, 681826, -9334575, -22972170, 2650532, -35570384, 22513144, -10981158, 20454782, 2709051,
+6037651, 2488397, -7384660, 11767137, 30517890, 11869142, 8711804, 23960012, -34206732, 12717935,
+-20222854, 16234976, -8841727, -14772540, -4504884, -16937204, -7280507, -4288525, 5489505, 6847252,
+-5136781, 22877144, -1461900, -4750771, -3491809, -22046068, -2665027, -631360, -18231062, 5027259,
+-15559593, -20045150, -6466074, 10871636, -32154272, -22461068, -14658723, 875636, -22533546, -19813222,
+-15505906, -8530879, -6300180, -3731253, -15151571, 15398531, 2813741, -2372433, -11218455, -12421582,
+22031034, -19847580, -12839805, 4959614, 6086506, 7080791, -10752987, -16172162, -6114960, -3626563,
+7631620, -11808476, -3886409, -5259188, -12554189, -23219666, -27697170, 26240640, -28604482, -2279554,
+3111704, -5737540, -4267050, -26897770, 11586211, -6780680, -26059714, -998043, -4211216, 25782152,
+8640400, 18530636, -30390114, 34283504, 5124970, 3055332, -6364068, 17147656, -107374, 28512140,
+-8214125, 19372450, 10446971, -29175712, 12141336, 4097936, 13342316, -2969970, -7845832, -12062416,
+-4401805, 13272523, 30565672, 2511482, -4669167, -20241644, 7186554, -21870510, -3476239, 20375324,
+-19325206, -881005, 1227287, -4272956, -7356205, -9172976, 33982856, -8425115, -8470212, -5249524,
+7637526, 10258529, 4194573, -672699, -7038915, -1404991, 5005785, 19334332, -4857608, 28176596,
+17202418, 7295539, -7255274, 24203752, 29194504, -4132832, -7959112, -3359201, -9762998, 984621,
+-9720585, 12739410, 4706748, 19120658, 16057809, -28489054, -29964914, 32742684, 25543782, 1398549,
+-5883032, -17019344, -20566450, -10896332, 18257906, -22382686, -22568980, -6995428, -9146133, -31875636,
+14430016, -13521094, -5011153, -3581466, 2103460, -448287, -19852950, -55756192, 26537530, -27295590,
+9814537, 38193532, 5044976, -17326972, 10361609, 12704513, -6622303, -13335873, -3505230, -27941984,
+7988103, -29007672, -17977122, 10332081, 234613, 3918621, -26292716, -6109591, -19236622, -16496969,
+-23517630, -8841190, 6816650, -14418205, -14578193, 12306155, 917512, -2091649, 3309272, -26974542,
+-2507187, -21208548, 16404628, 3764539, -50362248, 11436424, 25627532, -6704981, 14943265, 12250857,
+8125005, 6123013, 24480776, 18747532, -86436, -19252728, -4622459, 18898930, 12263742, -17999672,
+494458, -20870320, -6984691, 15569, 13634911, 17678086, -35505420, -29130078, -15896748, 1385664,
+-10682121, -5529771, 32423782, 3544959, 7670812, 23548232, -11014444, 5651640, 19289234, 18664854,
+-29474750, 7497403, -5435818, -6976638, -5938329, 21599390, 12103755, -13935558, -7334194, 16704738,
+-26927298, 2615635, 11499775, 16706886, -2069637, 4467303, -31568546, 855772, -13240847, 11959873,
+5381594, 19195820, -27539330, -13635984, -2816962, 4499515, -1075352, 6568616, 3505767, 16680579,
+31180926, -17908940, -22810572, 7299834, -23804856, -6579353, 12160126, -17530982, -16301012, 2367601,
+12640626, 16335908, 12632036, -6048925, 139050, -31390842, -20008642, 29483876, -18092012, 39498128,
+-14562623, 8717173, 7534447, 543850, -26472568, 36435280, -14584098, -2522220, -4341138, 14747307,
+28937342, -26255136, -13199508, 32687386, -21234318, 819265, -6449967, 7375533, 39430484, 1083942,
+91268, -21912386, 31288836, -8286603, 10663867, 7905961, 1970853, 18016850, -19694036, 6047314,
+16967806, 16915728, 37611028, -23201414, 34547644, -5501316, -22177064, -21393232, 5873905, 14907295,
+-9715753, -3954591, -15268609, -5698348, 29177324, -19787988, -1780264, 24067922, -7453379, 14695231,
+-9256728, -3641596, 24779814, -31139, 1261110, 24767466, 16517370, 6776922, -3011309, 21147882,
+27426050, -27029302, 25730076, -23702314, 12929462, -16750909, 3516505, 22536230, 7027104, -47170552,
+21191906, 15105400, -522912, 25996900, -38871600, -5895380, 25680684, 23900956, 3191698, 36748276,
+-19204946, 2314987, -5140002, -3329674, 14263586, 8474507, 25385942, 24351390, -17299592, 17291538,
+-31431644, -6260452, 1304060, 2081985, -3611531, -687732, -48980880, -21124260, -38271380, -18468896,
+25765508, -8110509, -4491462, 16559246, -11991012, 11466489, 29496224, -16365436, 11338714, 14542759,
+-21375516, 2684892, -26279294, 9916006, -2893197, -14012868, 20646982, 556198, 32253056, -2043868,
+-24358370, 40909028, -7509214, 4018479, 5495948, -38533372, 11401528, 33013802, 11610907, -14490146,
+-25393458, 2509872, 5907728, 28181428, 18000744, -9370545, -5785858, -22214644, -93952, 31847720,
+-43866112, 13008919, 30072824, -27611808, 9654013, 2583960, 10122164, 31745178, 10232223, 12034498,
+-6441377, -31833760, 32021666, -6469295, -17253420, 67826120, 32955284, 16887274, 2281702, 939524,
+-32911798, -27048094, -12789876, 19292456, -1587527, -19548544, -14147622, 24298240, -16531329, 16258062,
+8765491, -13889387, 17441862, 6918656, -28275918, -15431817, -17001628, 2150168, 16235513, -36690832,
+11680700, 41966664, 69909720, -11537356, -2172717, -57137024, -19027242, -42008540, -27848568, 39034812,
+2985002, 10624675, -32145146, 10513006, -28171228, -64019172, 9628243, 30736934, -2214593, 3944928,
+33463164, -43943956, 50485728, 24907590, 16052977, -24915106, 34132640, 64856692, -12435004, 19965156,
+49844708, 41522672, 74056512, 15826954, 26985280, 19840602, 18537078, 62957780, -15735686, -7687455,
+24012626, 13623099, -6059662, 34505768, 2954938, 7086159, -19672024, -56622700, 3192235, 37366216,
+6813429, 22520124, -39517996, 2250563, -52832928, -192737, -56757456, 3691525, 42324756, -5508296,
+-15644955, -55813636, 74512312, 12802761, 6990060, 74778064, 1503775, -17702244, -9910637, 3271691,
+18346490, -4945655, 4308389, -7099044, -34540664, 21650930, 16773458, -19714436, -70648456, 5870147,
+101004744, 16697759, -17743046, -16714939, -42546484, -27023934, 3744138, 63936492, 13265543, -38787848,
+-530428, 19127636, 6485938, 3582540, -1595044, 13065291, -26917634, -8672076, 17513802, 36484672,
+36936720, -30128658, -9955197, 4847945, 7147900, 11046656, -34790844, 5985574, 8696235, -7452842,
+29497298, 2114735, 33656976, 49103824, 25019796, 12093554, 23030688, -24068996, 26806502, -18954764,
+38778184, 66123704, 23735600, -31896574, -26855894, 31365610, 13377749, 56795572, 43671764, 15033459,
+-7248831, -9569724, 4648229, 5455682, -15853261, 23757074, 21552682, 6210523, 52170432, 36295160,
+-1289027, 26695370, 29963302, 15234249, 30054034, 3949223, -43125768, -2972654, -7610682, -8048232,
+56817048, 26955752, 12765717, -3056943, -17034378, -72025528, -17470854, 36042828, 18516678, 81993608,
+2257005, -15111842, -40312028, -77270760, -83981104, -16562468, 32985348, 36553928, 23181012, -44372916,
+-56673168, -3569655, -8781061, 18498424, 54831164, 25610354, -7357279, -37557340, -48256104, -32630478,
+-37044, -32139240, 9211631, -27598386, -13632226, 34053720, 29554744, 23917062, 9132174, -43095164,
+-12605729, -41541996, -30374008, -19408958, 20334522, -8727374, 21731460, 52776020, 58409944, -29980482,
+5328444, -49459768, -31852552, -26536456, -5380521, 2640331, 33280628, 31222264, 49670224, 30175904,
+11542188, -31909996, -24899536, -12560095, 14865419, -49233748, 1383516, 40904196, 37197100, -18855980,
+50847044, 37692632, 24301462, 38758320, -96273840, 10248866, -30537218, -42780560, 9419937, -30746060,
+-15760919, 37589016, 15997143, -105924632, -122119344, -132191576, -133933720, -186293664, 1904818, -57659936,
+-9482751, 40709848, 80600432, 108095736, 110452064, 212178896, 225792336, 186988912, 141905712, 150296480,
+143065360, 64088428, -6324340, -75322456, -76608256, -123379376, -31955630, -60589104, -43015172, 8506720,
+-104301672, -19936702, -92111480, -14891725, -107905688, -99478960, -40687300, -80014704, 1505923, -34174516,
+-32833414, -57033944, -35903244, -92840552, -64632816, -27576912, -27099096, -44121124, -25638270, 6895033,
+-37329708, 25552372, 74017320, -42673184, 85280872, 56556668, 110681848, 114527984, 96151968, 121487984,
+98255432, 165320272, 158137472, 130129456, 166019280, 146389136, 215013584, 216574256, 245936272, 194102992,
+197500320, 222690832, 184506432, 232209024, 144846704, 237232512, 146835808, 4883915, -65832720, -116003848,
+-93619016, 0, 0, },
},
{
{
-3456375,
--2316598, -3061238, -3729642, -3496640, 3483755, -8136279, 923418, -1453310, -2848637, 7288560,
--2356863, -2164127, 4657892, 719407, -3473018, 1116155, -1416266, 1225676, 949188, -588411,
-3830037, -1297617, -4027069, -345208, 1193464, 1972464, 2501819, 62814, 1534914, -1029718,
-5698348, 3857418, -4274030, -2419677, -2046552, 1655710, -3001109, -3505230, 4099546, -1772748,
--69256, -380641, 1111323, 3718368, 3384434, -1574642, -996969, 2645163, 1229434, 806917,
-283468, 2208687, -3189013, -2115808, 200790, 1901060, -2298344, 1586990, -4053912, -265751,
-2793339, 2028298, -1389959, 2391223, 278099, 3365644, 1217086, -1560147, 4572530, 6152004,
-2249489, -1038845, -477815, -2959233, 5129265, -333397, 2035815, 711891, -4708895, -3576634,
-1081258, -3235721, -4732517, 2507187, -661962, 560493, -2763812, 1818919, 74625, -4219269,
--298500, 4589710, 3723737, -3068754, -5286031, -4849555, 584116, -1221918, -1033477, -4150012,
-4258460, -1300301, 1123134, -1970853, -1218160, -542777, 1550483, -1332514, -2404645, -8955544,
-2891050, -818728, 2742874, 1537061, 1093606, -383863, 5770826, 944893, 1072131, 657130,
--3105798, -2087891, -379031, 260919, -3107946, -886911, 1071058, -593779, -2942590, -1682554,
-3758, 2586644, -4453881, -6103686, -7419019, 2379949, 4083977, 202400, 3353833, 2306934,
-366146, -6961605, -310311, -2038499, -2513630, -209917, 164819, 2367601, -918049, 3085934,
-4058744, -1040456, -147103, -6015639, 5197448, -6876243, 2528662, 11365557, -2551748, -4337917,
-547071, 5895917, 529892, -1772748, -935229, -1783485, -1193464, -5448703, -2207613, 2583423,
--4386772, -2508798, 124554, -301185, 4599373, -2943663, 758599, -1175210, 905701, -657667,
--2885144, 5171141, 8758512, 2199023, -639950, -1717450, 9483825, 399969, -4162360, 223338,
--7316477, -16643, 3600256, -5546951, -846645, 1144072, -4547834, -1358283, 4914517, 689342,
--697932, 4860293, -3408594, -5167383, 2753074, 1907502, -3748433, -1799054, -4002373, -4522064,
--5003637, -2694555, -2923799, 3921842, 2651069, 765578, -242129, -2726767, 2420214, -585726,
--1925756, 3341485, 3699041, 5826123, -8546448, -5646272, -2054068, -1257352, 261993, 1080721,
--8155606, 5630702, -2596845, 1832877, 1132261, 1868848, 3517578, -32749, -1211181, -2710124,
-5814849, -465467, 3765613, 7225209, -1607392, 6146098, 5199595, -4538170, 2994129, 3080565,
-3252364, -8005819, -842887, 492848, -2567854, -5025112, 28454, 5904507, -1432909, -2495376,
--2032593, 1828046, 5399848, 2727304, -2844879, -8590, -2358474, 274878, -794032, -2670396,
-5029407, -6529961, -5509370, -4935991, 1473174, -633508, -256087, -6065568, -6568079, 1666984,
--223875, 464930, -733366, -234613, -4944581, -2740726, -5407364, 1181653, 4411469, -1247688,
-3881577, 950798, 3409667, -7493644, -173409, 1421097, -2843268, -737661, 678605, -2716567,
-922344, -379568, 5217849, 8192113, 702227, -2824478, -6595459, 3319473, 2206003, 2098629,
-8642548, -5311264, 377957, 1248225, -1353989, -2545842, 1425929, 754304, 5267778, 11469173,
--824097, 2170032, 4863514, -1814624, 4350802, 7534983, -4951024, 35970, -1756105, 120796,
-3398930, -5467494, 6283537, 1598802, 196495, 3469797, -416612, 4716948, -2325725, -809601,
--1164473, 7278359, 3377992, 4715337, -772020, 3922379, -6779069, 8132521, -3008625, 3326989,
--7166153, 3118683, 5259725, 9851044, 3552475, 1999844, -6355478, -2241436, 1724966, -4626217,
--5767068, -1190243, 11319923, 13346611, 2424509, 3229279, -3906273, -1582159, 7202660, 1482301,
-3011309, -477815, 1981054, 1819992, 5907728, 504659, 1027571, 8167954, -6251862, -7376070,
-12388833, -2749316, -1620276, 8279087, 5029944, 981400, -13547401, 15367930, -2445984, -1470489,
--1282585, -383326, 877784, 1368484, 4955856, 7435126, 4871030, -530965, 8098698, 5451924,
-2780991, 2607045, -2619393, 4089883, -5370857, 5027259, -603980, 2431488, -4512400, -6356552,
-1139777, -288300, 2790655, 4785668, -1807644, -5997385, -3617973, 2287607, -7703024, 5824513,
-1852742, -11975979, 5990406, 1617055, 3542274, 1595580, 2244121, 2963528, -236760, -2727841,
--2812667, -7763691, -6051609, -2589865, -4091493, 25233, 872952, -5273683, -8578660, -199179,
-6268505, 11275900, -17717, -5366025, 1688996, -9075803, 1416266, 877247, -3269544, 10642929,
--13427142, 7191386, -2430952, -4665945, -3673271, -4454418, -6301791, 12630962, -15704548, 3919695,
-3991635, 5371394, 7909183, 1457068, 2309619, 3106335, 2255395, 1805497, 2780991, 7015829,
-1385664, -3558381, 147103, -457951, -4730370, -4212826, 2415382, 4779762, 5073967, 881005,
-3662533, -8046085, -804233, 106300, -296890, -7602629, -4530654, -2584497, 5282273, 4836133,
-84826, -8323110, 216896, -4386772, -3149285, -1421097, -2127083, 5657546, 7511361, 2507724,
-7814156, -11899744, -8317204, 4364224, 2703145, 737124, 1839320, 1137630, -3710852, -7310035,
--5037997, 4451197, -3148211, 6633577, 6439767, -1776506, 6156836, -8724152, -4158602, -2017024,
--2638721, 1366873, 17391934, -1532230, 5517423, -1379758, 14082124, -2492155, 555125, 6040872,
--13064217, 9287330, 4782446, -7267085, 8446590, 9462350, 3272765, -14088566, 8994198, 590021,
--1191853, 7444789, 7968238, -228170, -2157147, 448824, -5398774, 5416491, -2887829, -5053029,
--10975789, 2834679, -11944841, 3489124, -2825552, -1100049, 3617973, -9586904, -3915400, 8453569,
--587874, -3546032, 5134634, 617938, -4175782, 4003447, 1462436, 671089, -1727651, 3146601,
--5882495, -296353, -8644695, 8629663, 8385387, -9944997, 6991133, -6971806, -2678449, 7521562,
-10048076, -294742, -4868883, 3463891, -540092, 1921998, -12085501, -9096204, 1997697, 2294586,
--2559264, -1879585, 3222299, 311385, -4251481, 5912023, -4914517, 2616709, 3775276, 163746,
-5895917, -4629975, 3947075, 1779190, -4967667, 9867150, -3250217, 4858682, -9768903, -586263,
--2516851, -8832600, 393526, 6440841, 11314018, 14823006, -8296266, -106300, -10362145, -648003,
--6576132, 6070937, -6155762, -12164421, 861141, -7740605, -677531, 10355166, -5990943, -5878737,
-11006391, 500901, 1934883, -977105, -6389301, 2908767, 2383707, 13377213, -9060770, 6659347,
--7680476, 2119566, 2601677, -7418483, -4655208, 12882218, 3499862, -9206799, -2401961, -3220689,
--7538205, -80531, 12448963, 6903623, 8669391, 2237141, 3480534, -11062225, -1617055, 14706505,
-1165010, -8654896, 4818417, 5090073, -6549289, -5382668, -3137474, -14443438, -2240899, 4794257,
-7382512, 13433584, -3155727, -6643778, -1873680, -3901441, 10936597, -3319473, 5551245, -22728430,
--15906948, -10473815, 383863, -19170050, 1974611, 12899397, 3747896, 13303661, -8333847, -4263292,
--2310693, -8099235, -3522947, -11770358, 18739480, 10361072, 6994354, -17288854, -3984119, -6105833,
--11533598, 2911451, -1934346, 2674691, -14142790, -1729798, -2011655, -10394895, 4745402, 757525,
-8952322, 3099893, -9023726, 12045773, -6946573, 4376035, 1853815, -976568, 9328132, 8600672,
-1504849, -13196824, 14104673, -8507793, 9841918, 3976603, -6504728, -7141457, 11107859, 799938,
--2387465, 2144799, -11200738, -4677757, 4837207, -1909650, 9593346, -7261716, -10766409, 2818572,
-1558536, -857383, 9376450, 3330210, 842350, -8081518, 6301791, 1635846, -7485591, -2305861,
--2421288, -5013838, -4650376, -4619238, 1335735, -13412109, 19075024, 8190503, 21737366, -9079561,
--11030550, 20793010, 1089311, -1596654, 4839355, 2068027, 12260521, 16358457, 2424509, -14181445,
--23218594, 3847754, -6178311, 1988570, 973884, -9640591, -364535, 13401372, 10763188, 8826158,
-16772921, -3153043, 14226542, -9250823, 12600360, 4672388, 9781788, -5845988, 17072496, 10344429,
-12475806, -19014894, -10737, 18451716, 10210748, 3847217, -4222490, 27451820, 11302206, -9920838,
--6563247, 7148973, -10365904, -399432, -5097053, 1974611, 22298934, 24190330, 16831440, 6863895,
--199179, 9437654, -8328479, -1453310, 9069360, -9524627, 23131084, 15343234, 10810433, 5030481,
--2034741, -10921565, 12778601, 782221, 10582799, -5367636, 2441152, -7953743, -7920457, -413927,
-683437, -9491878, 22990424, -1362578, -11428908, -5132486, -8986682, -326954, -14392435, 3745212,
--12427488, 7033009, 1478543, -3257733, -9827422, -11502996, -17714056, -18118320, -5559299, 15948824,
--1340567, -10159745, 4090420, -9657234, 7371775, -8200167, 14630269, -14990510, 3366718, -10539850,
--11248519, -1745904, 1677185, -2911988, 6788196, -21560198, 8612483, 2485712, -5487895, -1107028,
--1662689, -10394358, -17586818, -18144090, 13202729, 7153268, -7477538, 12172474, 189515, -4221416,
--13874892, -28134184, -23867670, 14162655, -4270808, 1092532, -2944737, -497142, -1430224, -18577344,
-7410966, -22030498, -12240657, 2171106, -591095, -3705483, -2864206, -1719061, 24142548, -5851356,
--7202124, -4757213, 25679072, -2553895, -8802535, 18024904, -10524817, -5110474, -6893960, -4039417,
--34293704, -25977036, -14979235, 29360396, -1800665, -5270999, -3907347, -2671470, -10053982, 10165114,
-7853348, 26216480, -24770688, -5129802, 7298223, -18288508, -7419019, -6708202, 30360586, -818191,
-6826314, 15198279, 1190780, 14607184, -16394427, -20731270, -13815299, -4137664, -3653944, 2029372,
-9376450, -874026, -17311402, -12232604, -1044214, -9562208, -19382650, 16740709, -3017752, -10011569,
--261993, 5083631, 5319854, 2776160, -8809515, 1318018, -17990008, -8261370, -26616450, 12022150,
-7913477, -3572339, -8411693, 9363029, -13289166, -3810173, 28528784, -3442953, 24173150, 10418517,
-6438693, -6762963, -30500174, -13062069, -5911486, -16768626, -12312597, -8156143, 13562433, -6513318,
-230854, -12406550, 25848724, -9207873, 10539313, 8121783, -17507360, 19730006, 1251446, -7897908,
-12957916, 8374650, 38915624, 3442416, 2492692, 15176804, -14532022, -9247065, -1223529, 5264556,
-8031052, -2206540, 17648558, -7283728, 4234301, 16958142, 8662412, 7764764, 7495792, -8459475,
-4112431, 2065879, -3226594, 4668630, -5784784, -11508902, -5224291, 3599720, -11682311, 20321638,
-780073, 4358855, -357556, 14864345, 15896748, 66572, -8093329, 1792612, -1144072, 19073950,
-23021562, -12010339, -8079371, -4592931, 7378754, 18524730, -11716671, 7725036, 1581622, 6438693,
--5005785, -6383932, 5277978, 13645111, 4185983, -9110163, 13783087, 37355480, -8516383, 10158671,
--95563, 6720550, 15515569, 8067023, 17950816, 17539036, -581431, 24799678, 38716444, 7209640,
--9721122, 41508712, 3848291, 39932460, 424128, 8360154, -21597780, -6005975, 37648072, 7457137,
--15073188, 6356015, -10995116, 6030671, 8591008, -1608465, -17381732, -5891622, -26792006, 13102335,
-11579232, -9747965, 12448963, 17767742, 5279052, -3291556, -14758581, 4929549, 28625958, -11665668,
-18006650, 16346646, 4463008, 12526809, 12754442, 1492501, 15439334, 9827959, -23203560, -2672007,
--7984344, 26850524, 19527068, -17249126, 13511430, -1261110, 16138340, 44071196, -1588601, -6571837,
-6903623, 39670464, 18650358, -1720134, 7720204, 7697655, 25315074, 20450486, -10652056, 24394878,
-13959717, 22622666, -12493523, 2879239, 7712688, 5181341, 17086454, 20732344, -9589588, -10027675,
-19860466, 8500277, -1409823, -5209796, 4403952, 24982214, -41136124, 11710228, -10998338, -10558640,
--8827232, -8426189, 6084895, 7978976, 8300561, -9947144, -12093017, -31148176, 1489817, -17239998,
-28618978, 3805341, -7421704, -3904662, 17127256, 5312338, 27799712, 11642046, -7323993, 1583232,
-5760088, 13137768, 20799990, -22966264, -20489678, -3751654, 35017944, -10324565, 4234301, 10616085,
-15140833, 19322520, 26447334, 23758148, 1652489, -4872104, 24593520, 2617246, -16413754, 9183177,
--15308874, 11414949, 2099702, -12426414, 11446625, 47841640, 25543244, -15805480, -13310641, -870268,
--13839995, -12067784, -12031814, 8979703, -7284802, -10081899, 1465658, 13903883, 6680285, 5277978,
-17352742, 5974300, -5698348, 20573430, 15136538, -13034689, 8174934, -14813879, -13958107, -12956306,
--1654636, -32869384, -11834782, 25156160, 15643882, -6278706, -11911555, 11500312, 9446244, -15358266,
--6065031, -34460672, -1930051, 30441118, 1252520, -20680268, 4380867, 1966021, -13631689, 20633560,
-12267500, -6930467, 6495065, 9902584, 13041131, 7750806, 3003256, -7718593, 5662915, 8031589,
-19706920, 29146184, -6806450, -17850420, -9046275, 6444599, 6773164, 24229522, -7909183, -16987670,
--13167833, -13342853, 28937880, 52461416, 19600620, 3776350, 57253524, 4617090, 24340654, 14577656,
--3694209, -10492068, 11071889, -14625974, -9540196, 12794708, 1916092, -32456530, -33914136, -7283728,
-15921981, -16751446, -21652540, -11008001, -15603079, -12271795, 13374528, -7914014, -24417962, 13682692,
-2821257, -5464809, 8089571, -3530463, 15397995, 55414204, -29703994, 29650844, -33577516, -17144436,
--8048769, -3298535, 26949310, 1219234, 29003378, 18789408, 17006996, 24739012, -27954332, 11316165,
--29292750, -807991, 39336532, 34949224, 15205795, 901406, 7201050, 4746476, -10668162, 9353365,
-11680700, -48654464, 3496104, 7521562, 15395310, -17643188, -27078696, 20527796, 10081362, 5429376,
--11275900, 24265492, -2854006, 18907520, 16022912, -1612223, 2892124, -5199595, 19420232, -11006927,
-6298033, 11551851, -458488, 24307904, 14512158, -1208496, 12919262, 14195404, -195421, -10803453,
--36217312, -6709276, 4449049, -21723944, 2622078, 17366700, -32884954, -14852534, 5618891, -14435385,
--1846299, 17492328, 1477469, -12660490, -15847356, 6977175, 7441568, -34120832, -10939282, -3282966,
-368830, 20565378, 10482405, 1505386, 36917392, -5874442, -1734093, -293668, -22560390, -8826695,
--34178276, -29754460, 6045704, -15102716, -4344897, -22849762, -28470264, -30100742, -19504520, 22181896,
-30292404, 1190780, -23885386, 2320893, 1744831, 695785, 11915313, 19318762, 19600084, 807991,
--11647951, -30141544, -16804060, -26362510, -5046587, 399432, 2941516, 3018288, 4457103, 7591355,
-10241886, 18172006, -27442694, 12571369, 5671505, 6399502, 15874736, 26884884, 30783104, -17160542,
-14157286, -23796804, -6671695, -21614422, -1311576, -8417062, 50705848, 17701170, 36761700, 1471026,
--18460306, -8373576, 23842438, 24775518, -13822279, 45829984, -18471580, 2603824, 2819109, 7646116,
-17675402, 50760608, -2857764, 11972758, 29174102, 5790690, -22033182, 13431973, 52799108, -10776073,
--12529493, -32547800, -2878702, 16942036, 10662793, -2404108, -26386132, -4393215, -5581310, 9771051,
-46251964, -2764885, -555661, 19390704, 3554086, -64617248, -20458540, 45242112, 14928769, -13778255,
--25827248, -3991098, -17125108, 23124104, 12023224, 4009352, -13738527, -30823906, 6366216, -52799644,
--6536940, 25198036, 34853660, -4459250, -29778618, -20646444, -61366492, 17574470, -10675678, 23589572,
-18147848, -17841832, -12646531, -54817740, -40793064, 20865488, 58081916, 22745610, 27688044, -19705310,
--34260416, -33453500, -13613973, 48899276, 66678292, 34257196, -76775224, -28624346, -58678380, -31933618,
-73803104, 17566954, 16854526, -10005126, -69876968, -58034672, -57175680, -10993506, 6571837, 36375688,
--12461311, 27666568, -54666880, 34691524, 15476378, 4151623, 72258528, 4392141, -4133906, -3676492,
--92309048, -30176440, -1595580, 2339684, -29548838, 51047832, 20735028, 22397718, -67610840, 11309186,
--93420904, -22014392, -2359011, 11111617, 3113851, -60325500, 29535954, -17999134, -12764106, -12763032,
--14715632, -16071231, -20408610, 36639292, -13311714, -34612068, 8129300, -10971494, 1599875, 16870632,
--39677980, -14903000, -4822175, 14042396, -978716, 40650792, -6220724, -25627532, 52991308, -48587892,
-24786794, -45130980, -17275970, 19931870, -38392712, 1245541, 22769232, -14740865, -6114960, -3908957,
-29999810, 49349176, 26014616, -18178986, -10355703, -9012452, -267362, 15197742, -10314901, -11034308,
-6065568, 4315906, -95627984, -4496831, -7554848, 12646531, 6978785, 27917, -4574140, 25667262,
--33967824, -7632694, -8434779, 19921668, -79947056, -9904195, 59010704, -16047072, -36714992, 1995549,
-24655796, -13925358, -24046986, -68793032, -56909392, 46551004, 39276940, 2157147, 42053100, -49677204,
--4786204, -94290640, -34936876, -18044768, 42790224, 39238284, 22932442, -38854960, -14959908, -3171833,
--19942606, 7300908, 14032732, 19618336, 25914758, -22870164, 13519483, -41441604, -27637040, -7668127,
--10832981, -209917, 24187108, -32865090, 24958054, -13400298, -19971062, -8113193, 155693, -40783936,
--3317862, -36965172, -15891916, -14906758, -36673116, 46129560, 19069654, 9877351, 8954470, -9810779,
--50496468, -71667968, -44097504, -42315092, 25757456, 6347425, 27947890, 42312408, 32498944, -11684459,
-5793374, -24562918, -21486648, -22264574, 14950244, -23394686, -3752728, -22050898, -26039850, -13796509,
-25132538, -20888574, -8754754, 4268124, -5605469, -29144574, -37287296, -15729244, 31261994, -6642167,
--91781840, -127464432, -119808112, -113805360, -137735840, -16505559, -32066762, 33761128, 49643916, 138522896,
-92348776, 118535728, 161130528, 175563760, 123045448, 153419984, 91435024, 46099496, 2529199, -20140176,
--28879896, -54481124, -52150028, -76576584, -27040040, -23901494, -70369816, -52030844, -48015052, -57438208,
--95891048, -64557116, -46489264, -37724844, -72099080, -5319317, -16132971, -27713814, -69819528, -66328792,
--51490216, -45528800, -29301340, -10335839, -42168524, 18414672, 32423782, -34920232, 49780820, 63210644,
-63860796, 107268952, 90803128, 67314488, 77254648, 73461120, 76421960, 109945792, 127446712, 120297736,
-85701776, 128239136, 130627672, 129950680, 136406544, 148163488, 134858752, 134708432, 186687200, 82171312,
-86702504, 76345728, 70924944, -44443784, -7704635, -34548180, -97089880, -62141196, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-2316598, -3061238, -3729642, -3496640, 3483755, -8136279, 923418, -1453310, -2848637, 7288560,
+-2356863, -2164127, 4657892, 719407, -3473018, 1116155, -1416266, 1225676, 949188, -588411,
+3830037, -1297617, -4027069, -345208, 1193464, 1972464, 2501819, 62814, 1534914, -1029718,
+5698348, 3857418, -4274030, -2419677, -2046552, 1655710, -3001109, -3505230, 4099546, -1772748,
+-69256, -380641, 1111323, 3718368, 3384434, -1574642, -996969, 2645163, 1229434, 806917,
+283468, 2208687, -3189013, -2115808, 200790, 1901060, -2298344, 1586990, -4053912, -265751,
+2793339, 2028298, -1389959, 2391223, 278099, 3365644, 1217086, -1560147, 4572530, 6152004,
+2249489, -1038845, -477815, -2959233, 5129265, -333397, 2035815, 711891, -4708895, -3576634,
+1081258, -3235721, -4732517, 2507187, -661962, 560493, -2763812, 1818919, 74625, -4219269,
+-298500, 4589710, 3723737, -3068754, -5286031, -4849555, 584116, -1221918, -1033477, -4150012,
+4258460, -1300301, 1123134, -1970853, -1218160, -542777, 1550483, -1332514, -2404645, -8955544,
+2891050, -818728, 2742874, 1537061, 1093606, -383863, 5770826, 944893, 1072131, 657130,
+-3105798, -2087891, -379031, 260919, -3107946, -886911, 1071058, -593779, -2942590, -1682554,
+3758, 2586644, -4453881, -6103686, -7419019, 2379949, 4083977, 202400, 3353833, 2306934,
+366146, -6961605, -310311, -2038499, -2513630, -209917, 164819, 2367601, -918049, 3085934,
+4058744, -1040456, -147103, -6015639, 5197448, -6876243, 2528662, 11365557, -2551748, -4337917,
+547071, 5895917, 529892, -1772748, -935229, -1783485, -1193464, -5448703, -2207613, 2583423,
+-4386772, -2508798, 124554, -301185, 4599373, -2943663, 758599, -1175210, 905701, -657667,
+-2885144, 5171141, 8758512, 2199023, -639950, -1717450, 9483825, 399969, -4162360, 223338,
+-7316477, -16643, 3600256, -5546951, -846645, 1144072, -4547834, -1358283, 4914517, 689342,
+-697932, 4860293, -3408594, -5167383, 2753074, 1907502, -3748433, -1799054, -4002373, -4522064,
+-5003637, -2694555, -2923799, 3921842, 2651069, 765578, -242129, -2726767, 2420214, -585726,
+-1925756, 3341485, 3699041, 5826123, -8546448, -5646272, -2054068, -1257352, 261993, 1080721,
+-8155606, 5630702, -2596845, 1832877, 1132261, 1868848, 3517578, -32749, -1211181, -2710124,
+5814849, -465467, 3765613, 7225209, -1607392, 6146098, 5199595, -4538170, 2994129, 3080565,
+3252364, -8005819, -842887, 492848, -2567854, -5025112, 28454, 5904507, -1432909, -2495376,
+-2032593, 1828046, 5399848, 2727304, -2844879, -8590, -2358474, 274878, -794032, -2670396,
+5029407, -6529961, -5509370, -4935991, 1473174, -633508, -256087, -6065568, -6568079, 1666984,
+-223875, 464930, -733366, -234613, -4944581, -2740726, -5407364, 1181653, 4411469, -1247688,
+3881577, 950798, 3409667, -7493644, -173409, 1421097, -2843268, -737661, 678605, -2716567,
+922344, -379568, 5217849, 8192113, 702227, -2824478, -6595459, 3319473, 2206003, 2098629,
+8642548, -5311264, 377957, 1248225, -1353989, -2545842, 1425929, 754304, 5267778, 11469173,
+-824097, 2170032, 4863514, -1814624, 4350802, 7534983, -4951024, 35970, -1756105, 120796,
+3398930, -5467494, 6283537, 1598802, 196495, 3469797, -416612, 4716948, -2325725, -809601,
+-1164473, 7278359, 3377992, 4715337, -772020, 3922379, -6779069, 8132521, -3008625, 3326989,
+-7166153, 3118683, 5259725, 9851044, 3552475, 1999844, -6355478, -2241436, 1724966, -4626217,
+-5767068, -1190243, 11319923, 13346611, 2424509, 3229279, -3906273, -1582159, 7202660, 1482301,
+3011309, -477815, 1981054, 1819992, 5907728, 504659, 1027571, 8167954, -6251862, -7376070,
+12388833, -2749316, -1620276, 8279087, 5029944, 981400, -13547401, 15367930, -2445984, -1470489,
+-1282585, -383326, 877784, 1368484, 4955856, 7435126, 4871030, -530965, 8098698, 5451924,
+2780991, 2607045, -2619393, 4089883, -5370857, 5027259, -603980, 2431488, -4512400, -6356552,
+1139777, -288300, 2790655, 4785668, -1807644, -5997385, -3617973, 2287607, -7703024, 5824513,
+1852742, -11975979, 5990406, 1617055, 3542274, 1595580, 2244121, 2963528, -236760, -2727841,
+-2812667, -7763691, -6051609, -2589865, -4091493, 25233, 872952, -5273683, -8578660, -199179,
+6268505, 11275900, -17717, -5366025, 1688996, -9075803, 1416266, 877247, -3269544, 10642929,
+-13427142, 7191386, -2430952, -4665945, -3673271, -4454418, -6301791, 12630962, -15704548, 3919695,
+3991635, 5371394, 7909183, 1457068, 2309619, 3106335, 2255395, 1805497, 2780991, 7015829,
+1385664, -3558381, 147103, -457951, -4730370, -4212826, 2415382, 4779762, 5073967, 881005,
+3662533, -8046085, -804233, 106300, -296890, -7602629, -4530654, -2584497, 5282273, 4836133,
+84826, -8323110, 216896, -4386772, -3149285, -1421097, -2127083, 5657546, 7511361, 2507724,
+7814156, -11899744, -8317204, 4364224, 2703145, 737124, 1839320, 1137630, -3710852, -7310035,
+-5037997, 4451197, -3148211, 6633577, 6439767, -1776506, 6156836, -8724152, -4158602, -2017024,
+-2638721, 1366873, 17391934, -1532230, 5517423, -1379758, 14082124, -2492155, 555125, 6040872,
+-13064217, 9287330, 4782446, -7267085, 8446590, 9462350, 3272765, -14088566, 8994198, 590021,
+-1191853, 7444789, 7968238, -228170, -2157147, 448824, -5398774, 5416491, -2887829, -5053029,
+-10975789, 2834679, -11944841, 3489124, -2825552, -1100049, 3617973, -9586904, -3915400, 8453569,
+-587874, -3546032, 5134634, 617938, -4175782, 4003447, 1462436, 671089, -1727651, 3146601,
+-5882495, -296353, -8644695, 8629663, 8385387, -9944997, 6991133, -6971806, -2678449, 7521562,
+10048076, -294742, -4868883, 3463891, -540092, 1921998, -12085501, -9096204, 1997697, 2294586,
+-2559264, -1879585, 3222299, 311385, -4251481, 5912023, -4914517, 2616709, 3775276, 163746,
+5895917, -4629975, 3947075, 1779190, -4967667, 9867150, -3250217, 4858682, -9768903, -586263,
+-2516851, -8832600, 393526, 6440841, 11314018, 14823006, -8296266, -106300, -10362145, -648003,
+-6576132, 6070937, -6155762, -12164421, 861141, -7740605, -677531, 10355166, -5990943, -5878737,
+11006391, 500901, 1934883, -977105, -6389301, 2908767, 2383707, 13377213, -9060770, 6659347,
+-7680476, 2119566, 2601677, -7418483, -4655208, 12882218, 3499862, -9206799, -2401961, -3220689,
+-7538205, -80531, 12448963, 6903623, 8669391, 2237141, 3480534, -11062225, -1617055, 14706505,
+1165010, -8654896, 4818417, 5090073, -6549289, -5382668, -3137474, -14443438, -2240899, 4794257,
+7382512, 13433584, -3155727, -6643778, -1873680, -3901441, 10936597, -3319473, 5551245, -22728430,
+-15906948, -10473815, 383863, -19170050, 1974611, 12899397, 3747896, 13303661, -8333847, -4263292,
+-2310693, -8099235, -3522947, -11770358, 18739480, 10361072, 6994354, -17288854, -3984119, -6105833,
+-11533598, 2911451, -1934346, 2674691, -14142790, -1729798, -2011655, -10394895, 4745402, 757525,
+8952322, 3099893, -9023726, 12045773, -6946573, 4376035, 1853815, -976568, 9328132, 8600672,
+1504849, -13196824, 14104673, -8507793, 9841918, 3976603, -6504728, -7141457, 11107859, 799938,
+-2387465, 2144799, -11200738, -4677757, 4837207, -1909650, 9593346, -7261716, -10766409, 2818572,
+1558536, -857383, 9376450, 3330210, 842350, -8081518, 6301791, 1635846, -7485591, -2305861,
+-2421288, -5013838, -4650376, -4619238, 1335735, -13412109, 19075024, 8190503, 21737366, -9079561,
+-11030550, 20793010, 1089311, -1596654, 4839355, 2068027, 12260521, 16358457, 2424509, -14181445,
+-23218594, 3847754, -6178311, 1988570, 973884, -9640591, -364535, 13401372, 10763188, 8826158,
+16772921, -3153043, 14226542, -9250823, 12600360, 4672388, 9781788, -5845988, 17072496, 10344429,
+12475806, -19014894, -10737, 18451716, 10210748, 3847217, -4222490, 27451820, 11302206, -9920838,
+-6563247, 7148973, -10365904, -399432, -5097053, 1974611, 22298934, 24190330, 16831440, 6863895,
+-199179, 9437654, -8328479, -1453310, 9069360, -9524627, 23131084, 15343234, 10810433, 5030481,
+-2034741, -10921565, 12778601, 782221, 10582799, -5367636, 2441152, -7953743, -7920457, -413927,
+683437, -9491878, 22990424, -1362578, -11428908, -5132486, -8986682, -326954, -14392435, 3745212,
+-12427488, 7033009, 1478543, -3257733, -9827422, -11502996, -17714056, -18118320, -5559299, 15948824,
+-1340567, -10159745, 4090420, -9657234, 7371775, -8200167, 14630269, -14990510, 3366718, -10539850,
+-11248519, -1745904, 1677185, -2911988, 6788196, -21560198, 8612483, 2485712, -5487895, -1107028,
+-1662689, -10394358, -17586818, -18144090, 13202729, 7153268, -7477538, 12172474, 189515, -4221416,
+-13874892, -28134184, -23867670, 14162655, -4270808, 1092532, -2944737, -497142, -1430224, -18577344,
+7410966, -22030498, -12240657, 2171106, -591095, -3705483, -2864206, -1719061, 24142548, -5851356,
+-7202124, -4757213, 25679072, -2553895, -8802535, 18024904, -10524817, -5110474, -6893960, -4039417,
+-34293704, -25977036, -14979235, 29360396, -1800665, -5270999, -3907347, -2671470, -10053982, 10165114,
+7853348, 26216480, -24770688, -5129802, 7298223, -18288508, -7419019, -6708202, 30360586, -818191,
+6826314, 15198279, 1190780, 14607184, -16394427, -20731270, -13815299, -4137664, -3653944, 2029372,
+9376450, -874026, -17311402, -12232604, -1044214, -9562208, -19382650, 16740709, -3017752, -10011569,
+-261993, 5083631, 5319854, 2776160, -8809515, 1318018, -17990008, -8261370, -26616450, 12022150,
+7913477, -3572339, -8411693, 9363029, -13289166, -3810173, 28528784, -3442953, 24173150, 10418517,
+6438693, -6762963, -30500174, -13062069, -5911486, -16768626, -12312597, -8156143, 13562433, -6513318,
+230854, -12406550, 25848724, -9207873, 10539313, 8121783, -17507360, 19730006, 1251446, -7897908,
+12957916, 8374650, 38915624, 3442416, 2492692, 15176804, -14532022, -9247065, -1223529, 5264556,
+8031052, -2206540, 17648558, -7283728, 4234301, 16958142, 8662412, 7764764, 7495792, -8459475,
+4112431, 2065879, -3226594, 4668630, -5784784, -11508902, -5224291, 3599720, -11682311, 20321638,
+780073, 4358855, -357556, 14864345, 15896748, 66572, -8093329, 1792612, -1144072, 19073950,
+23021562, -12010339, -8079371, -4592931, 7378754, 18524730, -11716671, 7725036, 1581622, 6438693,
+-5005785, -6383932, 5277978, 13645111, 4185983, -9110163, 13783087, 37355480, -8516383, 10158671,
+-95563, 6720550, 15515569, 8067023, 17950816, 17539036, -581431, 24799678, 38716444, 7209640,
+-9721122, 41508712, 3848291, 39932460, 424128, 8360154, -21597780, -6005975, 37648072, 7457137,
+-15073188, 6356015, -10995116, 6030671, 8591008, -1608465, -17381732, -5891622, -26792006, 13102335,
+11579232, -9747965, 12448963, 17767742, 5279052, -3291556, -14758581, 4929549, 28625958, -11665668,
+18006650, 16346646, 4463008, 12526809, 12754442, 1492501, 15439334, 9827959, -23203560, -2672007,
+-7984344, 26850524, 19527068, -17249126, 13511430, -1261110, 16138340, 44071196, -1588601, -6571837,
+6903623, 39670464, 18650358, -1720134, 7720204, 7697655, 25315074, 20450486, -10652056, 24394878,
+13959717, 22622666, -12493523, 2879239, 7712688, 5181341, 17086454, 20732344, -9589588, -10027675,
+19860466, 8500277, -1409823, -5209796, 4403952, 24982214, -41136124, 11710228, -10998338, -10558640,
+-8827232, -8426189, 6084895, 7978976, 8300561, -9947144, -12093017, -31148176, 1489817, -17239998,
+28618978, 3805341, -7421704, -3904662, 17127256, 5312338, 27799712, 11642046, -7323993, 1583232,
+5760088, 13137768, 20799990, -22966264, -20489678, -3751654, 35017944, -10324565, 4234301, 10616085,
+15140833, 19322520, 26447334, 23758148, 1652489, -4872104, 24593520, 2617246, -16413754, 9183177,
+-15308874, 11414949, 2099702, -12426414, 11446625, 47841640, 25543244, -15805480, -13310641, -870268,
+-13839995, -12067784, -12031814, 8979703, -7284802, -10081899, 1465658, 13903883, 6680285, 5277978,
+17352742, 5974300, -5698348, 20573430, 15136538, -13034689, 8174934, -14813879, -13958107, -12956306,
+-1654636, -32869384, -11834782, 25156160, 15643882, -6278706, -11911555, 11500312, 9446244, -15358266,
+-6065031, -34460672, -1930051, 30441118, 1252520, -20680268, 4380867, 1966021, -13631689, 20633560,
+12267500, -6930467, 6495065, 9902584, 13041131, 7750806, 3003256, -7718593, 5662915, 8031589,
+19706920, 29146184, -6806450, -17850420, -9046275, 6444599, 6773164, 24229522, -7909183, -16987670,
+-13167833, -13342853, 28937880, 52461416, 19600620, 3776350, 57253524, 4617090, 24340654, 14577656,
+-3694209, -10492068, 11071889, -14625974, -9540196, 12794708, 1916092, -32456530, -33914136, -7283728,
+15921981, -16751446, -21652540, -11008001, -15603079, -12271795, 13374528, -7914014, -24417962, 13682692,
+2821257, -5464809, 8089571, -3530463, 15397995, 55414204, -29703994, 29650844, -33577516, -17144436,
+-8048769, -3298535, 26949310, 1219234, 29003378, 18789408, 17006996, 24739012, -27954332, 11316165,
+-29292750, -807991, 39336532, 34949224, 15205795, 901406, 7201050, 4746476, -10668162, 9353365,
+11680700, -48654464, 3496104, 7521562, 15395310, -17643188, -27078696, 20527796, 10081362, 5429376,
+-11275900, 24265492, -2854006, 18907520, 16022912, -1612223, 2892124, -5199595, 19420232, -11006927,
+6298033, 11551851, -458488, 24307904, 14512158, -1208496, 12919262, 14195404, -195421, -10803453,
+-36217312, -6709276, 4449049, -21723944, 2622078, 17366700, -32884954, -14852534, 5618891, -14435385,
+-1846299, 17492328, 1477469, -12660490, -15847356, 6977175, 7441568, -34120832, -10939282, -3282966,
+368830, 20565378, 10482405, 1505386, 36917392, -5874442, -1734093, -293668, -22560390, -8826695,
+-34178276, -29754460, 6045704, -15102716, -4344897, -22849762, -28470264, -30100742, -19504520, 22181896,
+30292404, 1190780, -23885386, 2320893, 1744831, 695785, 11915313, 19318762, 19600084, 807991,
+-11647951, -30141544, -16804060, -26362510, -5046587, 399432, 2941516, 3018288, 4457103, 7591355,
+10241886, 18172006, -27442694, 12571369, 5671505, 6399502, 15874736, 26884884, 30783104, -17160542,
+14157286, -23796804, -6671695, -21614422, -1311576, -8417062, 50705848, 17701170, 36761700, 1471026,
+-18460306, -8373576, 23842438, 24775518, -13822279, 45829984, -18471580, 2603824, 2819109, 7646116,
+17675402, 50760608, -2857764, 11972758, 29174102, 5790690, -22033182, 13431973, 52799108, -10776073,
+-12529493, -32547800, -2878702, 16942036, 10662793, -2404108, -26386132, -4393215, -5581310, 9771051,
+46251964, -2764885, -555661, 19390704, 3554086, -64617248, -20458540, 45242112, 14928769, -13778255,
+-25827248, -3991098, -17125108, 23124104, 12023224, 4009352, -13738527, -30823906, 6366216, -52799644,
+-6536940, 25198036, 34853660, -4459250, -29778618, -20646444, -61366492, 17574470, -10675678, 23589572,
+18147848, -17841832, -12646531, -54817740, -40793064, 20865488, 58081916, 22745610, 27688044, -19705310,
+-34260416, -33453500, -13613973, 48899276, 66678292, 34257196, -76775224, -28624346, -58678380, -31933618,
+73803104, 17566954, 16854526, -10005126, -69876968, -58034672, -57175680, -10993506, 6571837, 36375688,
+-12461311, 27666568, -54666880, 34691524, 15476378, 4151623, 72258528, 4392141, -4133906, -3676492,
+-92309048, -30176440, -1595580, 2339684, -29548838, 51047832, 20735028, 22397718, -67610840, 11309186,
+-93420904, -22014392, -2359011, 11111617, 3113851, -60325500, 29535954, -17999134, -12764106, -12763032,
+-14715632, -16071231, -20408610, 36639292, -13311714, -34612068, 8129300, -10971494, 1599875, 16870632,
+-39677980, -14903000, -4822175, 14042396, -978716, 40650792, -6220724, -25627532, 52991308, -48587892,
+24786794, -45130980, -17275970, 19931870, -38392712, 1245541, 22769232, -14740865, -6114960, -3908957,
+29999810, 49349176, 26014616, -18178986, -10355703, -9012452, -267362, 15197742, -10314901, -11034308,
+6065568, 4315906, -95627984, -4496831, -7554848, 12646531, 6978785, 27917, -4574140, 25667262,
+-33967824, -7632694, -8434779, 19921668, -79947056, -9904195, 59010704, -16047072, -36714992, 1995549,
+24655796, -13925358, -24046986, -68793032, -56909392, 46551004, 39276940, 2157147, 42053100, -49677204,
+-4786204, -94290640, -34936876, -18044768, 42790224, 39238284, 22932442, -38854960, -14959908, -3171833,
+-19942606, 7300908, 14032732, 19618336, 25914758, -22870164, 13519483, -41441604, -27637040, -7668127,
+-10832981, -209917, 24187108, -32865090, 24958054, -13400298, -19971062, -8113193, 155693, -40783936,
+-3317862, -36965172, -15891916, -14906758, -36673116, 46129560, 19069654, 9877351, 8954470, -9810779,
+-50496468, -71667968, -44097504, -42315092, 25757456, 6347425, 27947890, 42312408, 32498944, -11684459,
+5793374, -24562918, -21486648, -22264574, 14950244, -23394686, -3752728, -22050898, -26039850, -13796509,
+25132538, -20888574, -8754754, 4268124, -5605469, -29144574, -37287296, -15729244, 31261994, -6642167,
+-91781840, -127464432, -119808112, -113805360, -137735840, -16505559, -32066762, 33761128, 49643916, 138522896,
+92348776, 118535728, 161130528, 175563760, 123045448, 153419984, 91435024, 46099496, 2529199, -20140176,
+-28879896, -54481124, -52150028, -76576584, -27040040, -23901494, -70369816, -52030844, -48015052, -57438208,
+-95891048, -64557116, -46489264, -37724844, -72099080, -5319317, -16132971, -27713814, -69819528, -66328792,
+-51490216, -45528800, -29301340, -10335839, -42168524, 18414672, 32423782, -34920232, 49780820, 63210644,
+63860796, 107268952, 90803128, 67314488, 77254648, 73461120, 76421960, 109945792, 127446712, 120297736,
+85701776, 128239136, 130627672, 129950680, 136406544, 148163488, 134858752, 134708432, 186687200, 82171312,
+86702504, 76345728, 70924944, -44443784, -7704635, -34548180, -97089880, -62141196, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
{
1824824,
-1520418, 1184874, 2761664, -888521, 255551, -1235877, -4140885, -7766375, 1602560, -2968896,
--4188130, -5618354, 1364189, 1056025, 4163971, 1150514, 4949950, -716723, -7343321, 2747169,
--3877282, -484258, 1573032, -3115999, -4798552, 642635, -3138547, -478352, -1585917, 2860985,
-2870112, 916976, -6844568, -1481227, -2626373, 5280126, 1101659, 1585380, 6161668, 2937758,
-2764885, -98247, 1667521, 9698573, 4763656, -1661616, 461709, -4668630, 3338263, -275952,
-527207, -5748814, -761820, -3052111, -3914326, -1592359, 4333085, 3333432, 49929, 18790,
--3757023, -3528853, -1305133, -3597035, -7394323, 3778498, -3084324, -670015, -6961068, -1855963,
-4182225, 2106145, -312459, -6386617, 7894150, -692027, 3128347, 1542967, 3696356, -6840809,
--3745748, 4275640, 2008971, -20401, -3860102, 706522, -10600516, -6822556, -467078, -4088272,
--4663261, 1817308, 8100845, 1326071, 6141267, -1494649, 6065568, -3731253, -3404835, -450435,
--5689758, 1072131, 2654290, -2044941, -253940, 1422171, 141197, 2495913, -421981, -5980742,
-2010045, -3707094, -2915209, 1671816, -3803194, -5563594, 5408975, -5830418, 5140002, 4940286,
-3107409, -239444, -6988449, -3953518, 635655, -1249836, 8683350, -5344550, 2008434, -628139,
-1028645, -6592238, -11283953, -1865626, -3482682, -3597572, -1012002, 4858682, -1153199, -4845260,
-4283156, 2094870, -2354179, 3959960, -825707, 1460826, -5213554, 61203, -1300838, 4174708,
-4161823, 500901, 7590281, -188979, 3212099, 4038880, -165356, -3855807, 275952, -5434744,
--6959458, -2688113, -7916162, -8134131, -2744484, 5201743, -2016487, -1916092, -4317516, -1141388,
--7454453, 3502009, -2183454, 1733556, 4263829, 1418950, -1677185, 2953327, 2730526, -3641059,
-2346126, 267362, 525060, 2620467, -6529424, -2813204, 4386236, -2953864, -352187, -1894081,
-4882304, -6482180, -676994, -5432597, 3354906, -357556, -536334, 4837744, -2245194, -2370285,
--1821603, -4578435, 189515, -2084133, -494995, 282931, 2968896, 3133179, 935766, -1411434,
--5492190, -8803072, -2835215, -622770, -2270427, 4710506, -1988033, -2732673, 3714073, -2467459,
--3795141, 8274792, -1778117, 9217537, -5408975, -2396055, -3841848, 3608846, 909459, -105227,
-6709813, 1851131, 2148021, -9038222, 1978906, -4045859, -4820027, -6271726, 140123, 564251,
-8070244, -6062883, 3200825, -2342905, 9913321, -3143916, -2973728, 7238094, -2403571, 2736431,
-1264331, -89121, 1359357, -4241280, 968515, 601832, 2166811, 9488120, 3380676, 1251446,
--3676492, 3594351, -6864432, -1538672, -1153736, 4305168, 3505230, 5941551, 3797288, -3660923,
--5870684, -2170569, 4816806, -77846, 2587181, -466541, -488553, 9773735, 2359011, -152471,
--10861435, -4348655, 461172, 4442607, 6077916, 8946417, 4827007, -1331440, 1664837, -1313186,
--2644626, 6743636, -3568044, 6996502, 487479, -4578972, 2243584, -1722819, 5128728, 1082332,
-4656819, -1166084, -808528, -1779727, -5502390, 156766, 3930969, 3862249, 7340099, 3296388,
--9636833, -8129836, -6977175, 207232, -1163936, 423591, -3779571, -2460480, -556198, 2826089,
-5369, -6285148, 6728603, -1067836, -6139119, 1149441, 1537598, -253940, -513249, 2550137,
-3627637, -2352568, 5506148, 120796, 3280281, -7522099, 5369246, 1702955, 3162707, -5239860,
--403190, 3531000, 3341485, 7862475, -116501, -11303817, -2837900, -5522791, 2823404, 1590749,
--221191, -3185255, 1109175, -4784594, -1330366, -8534637, -4573604, -527207, 4960687, 4898410,
--3350075, -3456375, -2852395, 5018670, -1356136, -946503, -7465190, 4496294, -7303055, -3051038,
-287226, -1995549, -1433982, 8020852, -678068, 2021856, -3103651, 3893925, -3503083, -211527,
-5468567, 10100689, 6942278, 1311039, -8273181, -6286759, 1976759, -1614371, -5370857, -1931662,
--6861747, -3104188, 13226352, 1312649, -1611150, -2739652, -172872, -3366181, -2336462, 8818642,
--9585830, -1363115, 754841, -2270427, 2189360, 5222680, -2690797, -3364033, 1218160, -4124779,
--3927748, -9024800, -3405909, 2076080, -7996156, -1599339, 3724811, 5608691, 1938641, -12583717,
--3866544, 2165737, 6034966, -5130339, 10530723, -1561758, -5581310, -3349538, -2469606, -4553202,
-5653788, -4682051, -1314797, -6081137, -4658966, -2455111, -4736275, 5789616, -2421825, -12673912,
-4540854, 7907035, -57982, 2636036, -15142444, 11350525, 32212, -10101763, 812286, -6798397,
--11470784, 2103460, -8544837, 8320426, 1837172, -3714610, -6965900, -11937862, -5391795, -8755828,
-2513093, 15734076, 2386928, -4592931, -607201, -2614025, -2842195, -7673496, -5136244, -7890929,
-1678259, -971200, 1297617, -3030100, 900333, -8323647, -881542, 1394791, -5715528, -2399813,
-345745, -3354370, 446140, -3122978, 11587822, -14987288, -2918967, 753230, 3594351, -1933272,
--6303938, -9363566, -6655589, 4357781, -1593433, 4880157, -4851166, 13370233, 1493575, -3112778,
--450972, -8636105, -10801843, -5729487, 3660386, -9380745, -861141, 10089952, -614717, -5395016,
--10307922, -17277042, 365072, 8270497, -2745021, 9574556, -1264868, -3432753, -6624450, -5768678,
-537408, 3797825, -3673808, 14464913, 3752728, -4095251, 9564892, -4073777, -10856067, -2917894,
--8076686, -4187593, -3442416, 11668889, -2798171, -3827890, -4774393, 7510287, 6832756, 5965173,
-16504486, 17186312, 8081518, 10689637, -3869766, -4911832, 7242926, 10531797, -4411469, 4629975,
-3409130, -9137543, -8481487, 5094905, -1096290, -132607, -8453569, -10990284, -2428804, -8923868,
-10242423, 18751828, 4072166, 7361574, 2355253, -2279554, 6913824, -12920872, -3231963, 2581275,
-7359964, -4330401, -10166188, 15031312, 178241, -4777078, -3492882, 6076305, -1648731, 5388574,
--3579855, 8529805, -523449, -407485, 10943577, 3144453, 5151814, 1720134, -1447941, 7797513,
--12039867, -5142687, 4742718, 13571023, -8252243, -1248225, -1564442, -2225330, -5603322, -1536525,
--2747705, -4131222, 7078106, -6485401, -2378338, 6419366, -4590783, 2916283, 4880694, -8924405,
--9563282, 3044058, 7722888, -2296197, 7066832, -4721780, -1982664, 13306882, -14571213, 9183714,
--3995393, 377957, 613107, 16383690, -3368865, 3463891, 5333276, 9161702, 5401458, 8067023,
--1083406, -950798, 2746632, 1556389, 1501091, -7463580, 12291660, -15799574, -3343095, -3917547,
-9210020, -1481764, 11179263, -162672, 1241782, -18829136, -5055177, 12052215, 20087562, 188442,
--9654013, -7930657, 8379481, 6959995, 5156645, 5090610, -8234526, -3451543, -4668630, 3017752,
-593779, -4745402, 3301756, 3140695, -2178085, -2171643, -11319923, -2541010, -3987877, 17076790,
-1775432, 3673271, 6519224, 1065689, -12751221, 1200443, -7750269, 6883759, 6176700, -12823162,
--5436355, -5325760, 1472637, -1496796, 17062294, -3050501, -197569, 10546829, -10948945, -8155606,
--10320806, -10741713, -3247532, -1170916, 3622268, 18318036, -2601140, -11818139, 18949396, -485868,
-4677220, 12722230, 8464307, 11815455, -4184909, 9157944, -7334194, 12398497, 10666551, -3968550,
-5118528, -6162741, -5860483, 4149475, 14208289, 5962489, 5043902, 1280437, -5783174, -9237401,
--9479530, 497142, 9427990, -6954626, -8286603, -9867687, -4413079, -18680960, -5193689, 2459406,
--14093935, 5344013, -139050, -6939057, -16411607, -11257646, -1092532, -21368000, 5237713, 3423626,
--1612760, 4548371, 2492155, -3145527, -11811697, -7632157, -2452426, -7992398, 4957466, -8392903,
-15475304, -12787191, -863288, 5855114, -1379221, -24619290, 8904541, 11547020, 20116016, 166967,
--14646912, 4418448, 7286949, -15083925, -15808164, -9703405, -267899, 8790187, -326954, -5958194,
--226023, -5164698, -3592203, -9572408, 16581795, 13221520, 4914517, -19903416, -6020471, 3610457,
--1121523, -4139812, 25642028, 9772124, 8053064, 7939784, 12148315, 9538585, 2190433, 9982578,
--701690, -15465640, 8541079, -15905875, 4913443, -15726023, 13578002, -3790309, 16396038, -8505109,
-3863860, -6761889, 5779952, 10219875, 25020332, 5907191, -32306208, -1100585, -4727149, 7511898,
-13718126, -2185602, -6565395, 10981695, -2197950, -4342749, 13380434, 1626719, -1093606, 1493575,
-5367099, 11882564, 8122320, -8601209, -7773354, -5041218, -10463077, 3259343, -1869385, 11939472,
-6746320, -13820668, 27065810, -10198400, -17981418, -5683853, 7059316, -4398047, 13003013, 18853832,
--7553237, 17300666, 11087458, 8732742, -2862596, -2005750, -3499325, 16793322, 3019899, 2090575,
--9783936, 4314832, -5150203, -347892, -16153909, 10972568, -14845018, 144955, -10514617, 17516488,
--9040369, 463320, 17086454, 13169443, 8689793, -988379, -7026567, 8069707, -460635, -1495722,
--22239878, -6491306, -13552769, -10765336, -8719320, -3952444, 11120207, 7197829, 6316287, 18254,
-16445967, -8949101, 17383344, 15613817, 16326244, 29322278, -11901354, -8986145, 12336757, 2279554,
--12065637, 17539036, -6568616, -8828305, 4938139, -2529199, -7074885, -5504001, 6573448, -10832444,
-3462818, -7072201, 14882062, -7841537, -1466731, 3534758, 9600863, 14392435, -2989297, -15273977,
--26382910, -22468584, -2219424, 3331284, -15754477, -485331, 66572, 22317186, -16521665, -18589692,
-4415764, -8457327, -1296006, -13850733, 10888279, -14040248, -18694918, -11566347, 18783502, -14740328,
--12538620, -3594351, 6807523, -7008313, -15791521, 3492882, -7231651, -878858, 5149666, -19965156,
--2866354, 9605157, 15473157, -3481071, 24397562, 10455561, -4450123, 281857, 10241350, -5692443,
--12074227, 1173600, 12437152, 764504, 5119064, -455803, -13120051, 3226057, -26874684, 1584306,
--344134, -3883724, -16595754, -14107894, -162135, -6736120, -12037720, -7366406, -10106595, 9161702,
--18560702, -9889162, -6820945, 6884296, -11883638, 20109036, -5281736, -17228188, -3822521, -10157061,
--29635274, -7892003, -928250, -326418, -20716238, -8477729, -7882876, 19789598, 17717276, 5728413,
-35702988, -5942624, -11842299, -10393821, -4730907, -18313204, 26036628, -14666776, -5227512, -11718281,
--6066642, -5097053, 3347927, -17260936, 577673, 1022739, -2220498, 5976984, -18832894, -3962107,
-13296145, -12068858, 897648, -15851651, 16287590, 1091459, -28533616, -13835700, -5094905, 461172,
-8033200, -16287590, -9728101, 13114683, -2045478, 9464497, 7558606, 8752070, -10516227, 2473364,
-12567611, 6047851, -23807540, 16670379, 10822244, -11309723, 36100812, 897648, -26363046, 8844411,
-7904888, 1118839, 18999862, -4167729, -32854890, 10998874, 4120484, 11660299, 10893648, -12760885,
-22744000, 10980621, 6483790, -3297998, 34564824, -320512, -481573, 26774290, -5429913, 13756780,
-17640504, 9451076, 1044751, -1650878, 7088307, 7321846, -24896314, -24438900, 50813220, 16531866,
--31361314, -15678241, -14254996, -28727426, -1908039, -15067282, 21315386, -11712913, 354872, 26474178,
-821413, 4557497, -19092204, 24418500, 18323942, -130460, -5574331, -1707786, -14768782, 1321776,
-2194192, 3250217, -20387136, -2835215, -903017, -6049462, -4304094, -14079440, 13807783, 26920318,
-32443110, -2444373, -12697534, -5257040, -6331856, -4328790, -19390704, 6885907, 8041790, 7252589,
--20209968, -27249420, 29998200, 11385421, 16957604, 21731460, 20551956, -8555575, -13452374, 19698868,
--19476602, 10282152, -14489609, -11155104, -6272800, 23439784, -7351374, 4982699, 8289824, -3932580,
--18469434, 39102456, -23213224, 2769180, 28237800, -25021942, -11503533, 3446711, 10008348, 29384018,
-13582297, -7990787, 8674760, 34136936, 20734492, -2611877, -21169894, 2692408, 34974992, 27952184,
-6201396, -26929982, -10139881, -23193360, -1372242, 18910742, 23217520, -1255204, 9052180, 27557048,
-29247116, 45231376, 45468672, -22127134, 10154376, -23933706, -4077535, -19337016, -6778532, 15924665,
--3190624, 7170985, 6386080, -13663365, -10012643, 11779485, 12991202, 16873316, 11975979, -257161,
-12315282, 18553722, -9515500, 9513889, 10904922, 3445101, 10620917, 35167728, -26210038, -22439594,
--5069135, 21745956, 20681878, -12192875, -220117, 33248952, 26726508, -18791018, -12710419, 11363410,
--23194434, 6284074, -11346767, -21011516, 6362994, -24743306, 24978992, 8973797, 27626840, -12325482,
--17123498, -32477468, -7648263, 9535901, -28765544, -25009058, -15302432, 13777718, 34321620, -1678259,
--10063645, 22281216, 4875862, -700617, -31871878, 28905666, -13622563, -30050812, -10070625, 2694018,
-35649840, 4025995, 25617870, 10928007, -29700772, -5832566, -26300232, 4973036, -26234734, -18307298,
--11145440, 2086817, 5769752, -19744502, 20322174, -5699422, 12402792, 13980119, 13166759, 25279640,
-44696116, 27023398, -8396124, -21029770, -674847, 47847548, 29312614, -15035607, 23423142, -8032663,
-28584082, -13182865, 2804614, -9592809, -5243618, -550830, -8005282, 71606232, -13408888, -18364744,
--22497038, -30515206, -12166569, -23229330, -1067836, 28452548, -10819023, 9280351, -9009231, -12643310,
-24908126, -5587216, 41952704, 9103720, 33695628, -39382704, 17250736, 73246912, 26783416, -38262252,
-24941948, 23925116, 2971044, -1137630, 46691128, 20536922, 3131031, -3903589, -55861956, 22562536,
-31298500, -26632556, -19949050, 39119100, 24775518, -35696548, -37620156, -1218697, -22944790, 6503118,
-1118839, 6077916, -35486092, 6161668, -8746164, -19063212, 27200028, -4602058, -7201587, 7347616,
-22438520, 19636590, 12912282, -31008590, -1676111, -16486232, -32574642, 8385387, 6264210, 15982110,
--8710194, -16806208, 36416492, -30521112, 9946607, 10728291, 8597988, 5570573, -7177964, 20132660,
--23620172, -39457328, -8569533, -44804024, 34442952, 19864224, 33718716, -5723581, 4612795, -32008244,
-27834072, 35560180, 11135240, -19020800, -45635640, -12529493, -59428924, -1695438, -13415330, -40771588,
--35591320, 12903155, -740345, 22147536, -21588116, 26565446, 19302120, -30754650, 3064459, -4585415,
--32618130, 16088947, 12438762, -14606647, 6680285, -6857452, -49778136, -12071006, 13616120, -4489315,
-6607271, -26844620, 37928856, -47130824, 4768488, -34068756, 25651156, 28927678, 9763534, 24526410,
-3346317, -21767968, 40860708, -16929150, 4953708, 2464238, -22378928, 39947492, 3286724, 11842835,
-8930848, 13920526, 6880538, 30625802, 34100968, 13551159, 39705364, -31811750, -2225330, 2410014,
-50525460, -7100655, 40291088, 24945170, 55196236, 13541495, -12331925, -14684493, 21912386, -38122668,
-38778184, -20262582, -13952738, -3188476, 7607998, 32925220, -7219303, -49566072, -15286325, 90366648,
-5772973, -50050864, 12626667, -31302796, 9672266, 90272160, -24722368, -17465484, 57370564, -57008176,
-29979408, 22697828, 16248398, 65965328, 30629022, -31223876, 43523588, 21523692, 29282014, 55790552,
-27815282, -26820460, 35735740, 10628970, 32261646, -9368397, -59547576, 60508572, 52727704, 32217086,
-99485400, -9417253, -83253112, -43278236, -39203388, 87951264, 64958696, 15454903, -5414880, -16342351,
--58088896, -27947890, -18657874, -33780992, 89950040, 72468984, 101441760, 1549410, -115429392, -180585120,
--87567944, 100036232, 135862704, 137968848, 56164212, -115144312, -210333136, -129701032, -64778308, 96728032,
-165792720, 93353264, 51570748, 13089450, -74022688, -100818992, -74407624, -6302865, 58762132, 117176912,
-141568560, 24322936, 28272696, -112610288, -184599840, -99661496, 93188440, 154194160, 147858544, 90866472,
--53012244, -181281984, -115792856, -152224912, 1564979, 101556648, 111921480, 54525684, -43077448, -95905008,
--83486112, -66998268, 19372450, -13599477, -33390150, 36410584, 4372277, -55133960, 5967320, -15054934,
--22742388, 15350750, -17658222, -7562901, -29977798, 759672, -12059731, -22553948, 7694971, -3339337,
-6286222, 2629594, 17028472, -18531710, -6921340, 4598836, 996969, 7528541, -8511015, 17322676,
--13768591, 11702712, 4938139, -6624450, -14441828, -6523519, -26191248, 26692684, -3510599, 254477,
--5812702, -7175817, 441845, -1406602, -384400, 10011569, 5191542, -852551, 14203994, -13783087,
-3535832, -13069585, 12552579, 8031589, -11758010, 6986838, -14134201, -14627048, -13101798, -22323630,
--4002373, 16539382, -16899622, -30075508, -22522808, 1962800, 16248935, 725313, 11324218, -28036472,
--10231686, -2408403, -5792301, -26592826, -10924786, 3082176, -1079647, -6409702, 21068426, 20542828,
--23868208, -29835528, -48579300, -75934488, 2131378, 61623652, -24423868, -38719132, -41452876, -39085812,
-7386807, 7476465, 70993664, -10878078, -10985989, -32384054, 2860985, 9220758, 21840446, -24439974,
-11396696, -17890150, 27302570, 8507256, 8408472, 2948495, -18269180, -9920838, -12204686, -4168266,
-9320079, -10929618, -10140418, 19407346, -18960670, -11660299, 15457050, -15949361, -6650757, -13737990,
--22763326, 7347616, 13346611, 2270964, 12497818, -20876762, -6238440, -967978, 10863046, 14371497,
-17201344, 906775, -2990908, -31236224, -32806034, -12125230, -11398843, -7358890, 13427142, 19495930,
-27020714, 2615098, -14006962, 27685896, -21320218, -9645960, 11437498, -9575093, 35989680, 1003949,
--7184407, 5176510, -14397267, 9304510, 25143812, 18997714, -7453916, 4184909, 18347026, -49836652,
--114763136, -88017304, -11290932, 36240936, 96627640, 81349368, 77650864, 79280264, 51926156, 21086142,
--30303678, -52849572, -99597072, -73795592, -72449120, -72326712, -45391360, 41511396, 56517476, 83517248,
-63934884, 53245784, 16811038, 35077536, -9375914, -10752987, -12608950, -21235928, -38408280, -31829466,
--63881196, -24158118, -50954956, -25035902, -12898324, 15032922, 2167885, 22079354, 4326106, 31450434,
-22988276, 38330972, 51550880, 64124400, 40779104, 26913338, 45450956, 2476586, -16720308, -58385784,
--68112816, -93472984, -83266528, -77978352, -30285426, -51379084, -27139898, 2455648, 13401372, 32191316,
-61901752, 66176856, 74020000, 112215688, 63218160, 86481312, 60106992, 14897094, -7863012, -32706176,
--87242064, -93488016, -88557392, -94190240, -63826972, -19724100, -1180042, 2333778, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+1520418, 1184874, 2761664, -888521, 255551, -1235877, -4140885, -7766375, 1602560, -2968896,
+-4188130, -5618354, 1364189, 1056025, 4163971, 1150514, 4949950, -716723, -7343321, 2747169,
+-3877282, -484258, 1573032, -3115999, -4798552, 642635, -3138547, -478352, -1585917, 2860985,
+2870112, 916976, -6844568, -1481227, -2626373, 5280126, 1101659, 1585380, 6161668, 2937758,
+2764885, -98247, 1667521, 9698573, 4763656, -1661616, 461709, -4668630, 3338263, -275952,
+527207, -5748814, -761820, -3052111, -3914326, -1592359, 4333085, 3333432, 49929, 18790,
+-3757023, -3528853, -1305133, -3597035, -7394323, 3778498, -3084324, -670015, -6961068, -1855963,
+4182225, 2106145, -312459, -6386617, 7894150, -692027, 3128347, 1542967, 3696356, -6840809,
+-3745748, 4275640, 2008971, -20401, -3860102, 706522, -10600516, -6822556, -467078, -4088272,
+-4663261, 1817308, 8100845, 1326071, 6141267, -1494649, 6065568, -3731253, -3404835, -450435,
+-5689758, 1072131, 2654290, -2044941, -253940, 1422171, 141197, 2495913, -421981, -5980742,
+2010045, -3707094, -2915209, 1671816, -3803194, -5563594, 5408975, -5830418, 5140002, 4940286,
+3107409, -239444, -6988449, -3953518, 635655, -1249836, 8683350, -5344550, 2008434, -628139,
+1028645, -6592238, -11283953, -1865626, -3482682, -3597572, -1012002, 4858682, -1153199, -4845260,
+4283156, 2094870, -2354179, 3959960, -825707, 1460826, -5213554, 61203, -1300838, 4174708,
+4161823, 500901, 7590281, -188979, 3212099, 4038880, -165356, -3855807, 275952, -5434744,
+-6959458, -2688113, -7916162, -8134131, -2744484, 5201743, -2016487, -1916092, -4317516, -1141388,
+-7454453, 3502009, -2183454, 1733556, 4263829, 1418950, -1677185, 2953327, 2730526, -3641059,
+2346126, 267362, 525060, 2620467, -6529424, -2813204, 4386236, -2953864, -352187, -1894081,
+4882304, -6482180, -676994, -5432597, 3354906, -357556, -536334, 4837744, -2245194, -2370285,
+-1821603, -4578435, 189515, -2084133, -494995, 282931, 2968896, 3133179, 935766, -1411434,
+-5492190, -8803072, -2835215, -622770, -2270427, 4710506, -1988033, -2732673, 3714073, -2467459,
+-3795141, 8274792, -1778117, 9217537, -5408975, -2396055, -3841848, 3608846, 909459, -105227,
+6709813, 1851131, 2148021, -9038222, 1978906, -4045859, -4820027, -6271726, 140123, 564251,
+8070244, -6062883, 3200825, -2342905, 9913321, -3143916, -2973728, 7238094, -2403571, 2736431,
+1264331, -89121, 1359357, -4241280, 968515, 601832, 2166811, 9488120, 3380676, 1251446,
+-3676492, 3594351, -6864432, -1538672, -1153736, 4305168, 3505230, 5941551, 3797288, -3660923,
+-5870684, -2170569, 4816806, -77846, 2587181, -466541, -488553, 9773735, 2359011, -152471,
+-10861435, -4348655, 461172, 4442607, 6077916, 8946417, 4827007, -1331440, 1664837, -1313186,
+-2644626, 6743636, -3568044, 6996502, 487479, -4578972, 2243584, -1722819, 5128728, 1082332,
+4656819, -1166084, -808528, -1779727, -5502390, 156766, 3930969, 3862249, 7340099, 3296388,
+-9636833, -8129836, -6977175, 207232, -1163936, 423591, -3779571, -2460480, -556198, 2826089,
+5369, -6285148, 6728603, -1067836, -6139119, 1149441, 1537598, -253940, -513249, 2550137,
+3627637, -2352568, 5506148, 120796, 3280281, -7522099, 5369246, 1702955, 3162707, -5239860,
+-403190, 3531000, 3341485, 7862475, -116501, -11303817, -2837900, -5522791, 2823404, 1590749,
+-221191, -3185255, 1109175, -4784594, -1330366, -8534637, -4573604, -527207, 4960687, 4898410,
+-3350075, -3456375, -2852395, 5018670, -1356136, -946503, -7465190, 4496294, -7303055, -3051038,
+287226, -1995549, -1433982, 8020852, -678068, 2021856, -3103651, 3893925, -3503083, -211527,
+5468567, 10100689, 6942278, 1311039, -8273181, -6286759, 1976759, -1614371, -5370857, -1931662,
+-6861747, -3104188, 13226352, 1312649, -1611150, -2739652, -172872, -3366181, -2336462, 8818642,
+-9585830, -1363115, 754841, -2270427, 2189360, 5222680, -2690797, -3364033, 1218160, -4124779,
+-3927748, -9024800, -3405909, 2076080, -7996156, -1599339, 3724811, 5608691, 1938641, -12583717,
+-3866544, 2165737, 6034966, -5130339, 10530723, -1561758, -5581310, -3349538, -2469606, -4553202,
+5653788, -4682051, -1314797, -6081137, -4658966, -2455111, -4736275, 5789616, -2421825, -12673912,
+4540854, 7907035, -57982, 2636036, -15142444, 11350525, 32212, -10101763, 812286, -6798397,
+-11470784, 2103460, -8544837, 8320426, 1837172, -3714610, -6965900, -11937862, -5391795, -8755828,
+2513093, 15734076, 2386928, -4592931, -607201, -2614025, -2842195, -7673496, -5136244, -7890929,
+1678259, -971200, 1297617, -3030100, 900333, -8323647, -881542, 1394791, -5715528, -2399813,
+345745, -3354370, 446140, -3122978, 11587822, -14987288, -2918967, 753230, 3594351, -1933272,
+-6303938, -9363566, -6655589, 4357781, -1593433, 4880157, -4851166, 13370233, 1493575, -3112778,
+-450972, -8636105, -10801843, -5729487, 3660386, -9380745, -861141, 10089952, -614717, -5395016,
+-10307922, -17277042, 365072, 8270497, -2745021, 9574556, -1264868, -3432753, -6624450, -5768678,
+537408, 3797825, -3673808, 14464913, 3752728, -4095251, 9564892, -4073777, -10856067, -2917894,
+-8076686, -4187593, -3442416, 11668889, -2798171, -3827890, -4774393, 7510287, 6832756, 5965173,
+16504486, 17186312, 8081518, 10689637, -3869766, -4911832, 7242926, 10531797, -4411469, 4629975,
+3409130, -9137543, -8481487, 5094905, -1096290, -132607, -8453569, -10990284, -2428804, -8923868,
+10242423, 18751828, 4072166, 7361574, 2355253, -2279554, 6913824, -12920872, -3231963, 2581275,
+7359964, -4330401, -10166188, 15031312, 178241, -4777078, -3492882, 6076305, -1648731, 5388574,
+-3579855, 8529805, -523449, -407485, 10943577, 3144453, 5151814, 1720134, -1447941, 7797513,
+-12039867, -5142687, 4742718, 13571023, -8252243, -1248225, -1564442, -2225330, -5603322, -1536525,
+-2747705, -4131222, 7078106, -6485401, -2378338, 6419366, -4590783, 2916283, 4880694, -8924405,
+-9563282, 3044058, 7722888, -2296197, 7066832, -4721780, -1982664, 13306882, -14571213, 9183714,
+-3995393, 377957, 613107, 16383690, -3368865, 3463891, 5333276, 9161702, 5401458, 8067023,
+-1083406, -950798, 2746632, 1556389, 1501091, -7463580, 12291660, -15799574, -3343095, -3917547,
+9210020, -1481764, 11179263, -162672, 1241782, -18829136, -5055177, 12052215, 20087562, 188442,
+-9654013, -7930657, 8379481, 6959995, 5156645, 5090610, -8234526, -3451543, -4668630, 3017752,
+593779, -4745402, 3301756, 3140695, -2178085, -2171643, -11319923, -2541010, -3987877, 17076790,
+1775432, 3673271, 6519224, 1065689, -12751221, 1200443, -7750269, 6883759, 6176700, -12823162,
+-5436355, -5325760, 1472637, -1496796, 17062294, -3050501, -197569, 10546829, -10948945, -8155606,
+-10320806, -10741713, -3247532, -1170916, 3622268, 18318036, -2601140, -11818139, 18949396, -485868,
+4677220, 12722230, 8464307, 11815455, -4184909, 9157944, -7334194, 12398497, 10666551, -3968550,
+5118528, -6162741, -5860483, 4149475, 14208289, 5962489, 5043902, 1280437, -5783174, -9237401,
+-9479530, 497142, 9427990, -6954626, -8286603, -9867687, -4413079, -18680960, -5193689, 2459406,
+-14093935, 5344013, -139050, -6939057, -16411607, -11257646, -1092532, -21368000, 5237713, 3423626,
+-1612760, 4548371, 2492155, -3145527, -11811697, -7632157, -2452426, -7992398, 4957466, -8392903,
+15475304, -12787191, -863288, 5855114, -1379221, -24619290, 8904541, 11547020, 20116016, 166967,
+-14646912, 4418448, 7286949, -15083925, -15808164, -9703405, -267899, 8790187, -326954, -5958194,
+-226023, -5164698, -3592203, -9572408, 16581795, 13221520, 4914517, -19903416, -6020471, 3610457,
+-1121523, -4139812, 25642028, 9772124, 8053064, 7939784, 12148315, 9538585, 2190433, 9982578,
+-701690, -15465640, 8541079, -15905875, 4913443, -15726023, 13578002, -3790309, 16396038, -8505109,
+3863860, -6761889, 5779952, 10219875, 25020332, 5907191, -32306208, -1100585, -4727149, 7511898,
+13718126, -2185602, -6565395, 10981695, -2197950, -4342749, 13380434, 1626719, -1093606, 1493575,
+5367099, 11882564, 8122320, -8601209, -7773354, -5041218, -10463077, 3259343, -1869385, 11939472,
+6746320, -13820668, 27065810, -10198400, -17981418, -5683853, 7059316, -4398047, 13003013, 18853832,
+-7553237, 17300666, 11087458, 8732742, -2862596, -2005750, -3499325, 16793322, 3019899, 2090575,
+-9783936, 4314832, -5150203, -347892, -16153909, 10972568, -14845018, 144955, -10514617, 17516488,
+-9040369, 463320, 17086454, 13169443, 8689793, -988379, -7026567, 8069707, -460635, -1495722,
+-22239878, -6491306, -13552769, -10765336, -8719320, -3952444, 11120207, 7197829, 6316287, 18254,
+16445967, -8949101, 17383344, 15613817, 16326244, 29322278, -11901354, -8986145, 12336757, 2279554,
+-12065637, 17539036, -6568616, -8828305, 4938139, -2529199, -7074885, -5504001, 6573448, -10832444,
+3462818, -7072201, 14882062, -7841537, -1466731, 3534758, 9600863, 14392435, -2989297, -15273977,
+-26382910, -22468584, -2219424, 3331284, -15754477, -485331, 66572, 22317186, -16521665, -18589692,
+4415764, -8457327, -1296006, -13850733, 10888279, -14040248, -18694918, -11566347, 18783502, -14740328,
+-12538620, -3594351, 6807523, -7008313, -15791521, 3492882, -7231651, -878858, 5149666, -19965156,
+-2866354, 9605157, 15473157, -3481071, 24397562, 10455561, -4450123, 281857, 10241350, -5692443,
+-12074227, 1173600, 12437152, 764504, 5119064, -455803, -13120051, 3226057, -26874684, 1584306,
+-344134, -3883724, -16595754, -14107894, -162135, -6736120, -12037720, -7366406, -10106595, 9161702,
+-18560702, -9889162, -6820945, 6884296, -11883638, 20109036, -5281736, -17228188, -3822521, -10157061,
+-29635274, -7892003, -928250, -326418, -20716238, -8477729, -7882876, 19789598, 17717276, 5728413,
+35702988, -5942624, -11842299, -10393821, -4730907, -18313204, 26036628, -14666776, -5227512, -11718281,
+-6066642, -5097053, 3347927, -17260936, 577673, 1022739, -2220498, 5976984, -18832894, -3962107,
+13296145, -12068858, 897648, -15851651, 16287590, 1091459, -28533616, -13835700, -5094905, 461172,
+8033200, -16287590, -9728101, 13114683, -2045478, 9464497, 7558606, 8752070, -10516227, 2473364,
+12567611, 6047851, -23807540, 16670379, 10822244, -11309723, 36100812, 897648, -26363046, 8844411,
+7904888, 1118839, 18999862, -4167729, -32854890, 10998874, 4120484, 11660299, 10893648, -12760885,
+22744000, 10980621, 6483790, -3297998, 34564824, -320512, -481573, 26774290, -5429913, 13756780,
+17640504, 9451076, 1044751, -1650878, 7088307, 7321846, -24896314, -24438900, 50813220, 16531866,
+-31361314, -15678241, -14254996, -28727426, -1908039, -15067282, 21315386, -11712913, 354872, 26474178,
+821413, 4557497, -19092204, 24418500, 18323942, -130460, -5574331, -1707786, -14768782, 1321776,
+2194192, 3250217, -20387136, -2835215, -903017, -6049462, -4304094, -14079440, 13807783, 26920318,
+32443110, -2444373, -12697534, -5257040, -6331856, -4328790, -19390704, 6885907, 8041790, 7252589,
+-20209968, -27249420, 29998200, 11385421, 16957604, 21731460, 20551956, -8555575, -13452374, 19698868,
+-19476602, 10282152, -14489609, -11155104, -6272800, 23439784, -7351374, 4982699, 8289824, -3932580,
+-18469434, 39102456, -23213224, 2769180, 28237800, -25021942, -11503533, 3446711, 10008348, 29384018,
+13582297, -7990787, 8674760, 34136936, 20734492, -2611877, -21169894, 2692408, 34974992, 27952184,
+6201396, -26929982, -10139881, -23193360, -1372242, 18910742, 23217520, -1255204, 9052180, 27557048,
+29247116, 45231376, 45468672, -22127134, 10154376, -23933706, -4077535, -19337016, -6778532, 15924665,
+-3190624, 7170985, 6386080, -13663365, -10012643, 11779485, 12991202, 16873316, 11975979, -257161,
+12315282, 18553722, -9515500, 9513889, 10904922, 3445101, 10620917, 35167728, -26210038, -22439594,
+-5069135, 21745956, 20681878, -12192875, -220117, 33248952, 26726508, -18791018, -12710419, 11363410,
+-23194434, 6284074, -11346767, -21011516, 6362994, -24743306, 24978992, 8973797, 27626840, -12325482,
+-17123498, -32477468, -7648263, 9535901, -28765544, -25009058, -15302432, 13777718, 34321620, -1678259,
+-10063645, 22281216, 4875862, -700617, -31871878, 28905666, -13622563, -30050812, -10070625, 2694018,
+35649840, 4025995, 25617870, 10928007, -29700772, -5832566, -26300232, 4973036, -26234734, -18307298,
+-11145440, 2086817, 5769752, -19744502, 20322174, -5699422, 12402792, 13980119, 13166759, 25279640,
+44696116, 27023398, -8396124, -21029770, -674847, 47847548, 29312614, -15035607, 23423142, -8032663,
+28584082, -13182865, 2804614, -9592809, -5243618, -550830, -8005282, 71606232, -13408888, -18364744,
+-22497038, -30515206, -12166569, -23229330, -1067836, 28452548, -10819023, 9280351, -9009231, -12643310,
+24908126, -5587216, 41952704, 9103720, 33695628, -39382704, 17250736, 73246912, 26783416, -38262252,
+24941948, 23925116, 2971044, -1137630, 46691128, 20536922, 3131031, -3903589, -55861956, 22562536,
+31298500, -26632556, -19949050, 39119100, 24775518, -35696548, -37620156, -1218697, -22944790, 6503118,
+1118839, 6077916, -35486092, 6161668, -8746164, -19063212, 27200028, -4602058, -7201587, 7347616,
+22438520, 19636590, 12912282, -31008590, -1676111, -16486232, -32574642, 8385387, 6264210, 15982110,
+-8710194, -16806208, 36416492, -30521112, 9946607, 10728291, 8597988, 5570573, -7177964, 20132660,
+-23620172, -39457328, -8569533, -44804024, 34442952, 19864224, 33718716, -5723581, 4612795, -32008244,
+27834072, 35560180, 11135240, -19020800, -45635640, -12529493, -59428924, -1695438, -13415330, -40771588,
+-35591320, 12903155, -740345, 22147536, -21588116, 26565446, 19302120, -30754650, 3064459, -4585415,
+-32618130, 16088947, 12438762, -14606647, 6680285, -6857452, -49778136, -12071006, 13616120, -4489315,
+6607271, -26844620, 37928856, -47130824, 4768488, -34068756, 25651156, 28927678, 9763534, 24526410,
+3346317, -21767968, 40860708, -16929150, 4953708, 2464238, -22378928, 39947492, 3286724, 11842835,
+8930848, 13920526, 6880538, 30625802, 34100968, 13551159, 39705364, -31811750, -2225330, 2410014,
+50525460, -7100655, 40291088, 24945170, 55196236, 13541495, -12331925, -14684493, 21912386, -38122668,
+38778184, -20262582, -13952738, -3188476, 7607998, 32925220, -7219303, -49566072, -15286325, 90366648,
+5772973, -50050864, 12626667, -31302796, 9672266, 90272160, -24722368, -17465484, 57370564, -57008176,
+29979408, 22697828, 16248398, 65965328, 30629022, -31223876, 43523588, 21523692, 29282014, 55790552,
+27815282, -26820460, 35735740, 10628970, 32261646, -9368397, -59547576, 60508572, 52727704, 32217086,
+99485400, -9417253, -83253112, -43278236, -39203388, 87951264, 64958696, 15454903, -5414880, -16342351,
+-58088896, -27947890, -18657874, -33780992, 89950040, 72468984, 101441760, 1549410, -115429392, -180585120,
+-87567944, 100036232, 135862704, 137968848, 56164212, -115144312, -210333136, -129701032, -64778308, 96728032,
+165792720, 93353264, 51570748, 13089450, -74022688, -100818992, -74407624, -6302865, 58762132, 117176912,
+141568560, 24322936, 28272696, -112610288, -184599840, -99661496, 93188440, 154194160, 147858544, 90866472,
+-53012244, -181281984, -115792856, -152224912, 1564979, 101556648, 111921480, 54525684, -43077448, -95905008,
+-83486112, -66998268, 19372450, -13599477, -33390150, 36410584, 4372277, -55133960, 5967320, -15054934,
+-22742388, 15350750, -17658222, -7562901, -29977798, 759672, -12059731, -22553948, 7694971, -3339337,
+6286222, 2629594, 17028472, -18531710, -6921340, 4598836, 996969, 7528541, -8511015, 17322676,
+-13768591, 11702712, 4938139, -6624450, -14441828, -6523519, -26191248, 26692684, -3510599, 254477,
+-5812702, -7175817, 441845, -1406602, -384400, 10011569, 5191542, -852551, 14203994, -13783087,
+3535832, -13069585, 12552579, 8031589, -11758010, 6986838, -14134201, -14627048, -13101798, -22323630,
+-4002373, 16539382, -16899622, -30075508, -22522808, 1962800, 16248935, 725313, 11324218, -28036472,
+-10231686, -2408403, -5792301, -26592826, -10924786, 3082176, -1079647, -6409702, 21068426, 20542828,
+-23868208, -29835528, -48579300, -75934488, 2131378, 61623652, -24423868, -38719132, -41452876, -39085812,
+7386807, 7476465, 70993664, -10878078, -10985989, -32384054, 2860985, 9220758, 21840446, -24439974,
+11396696, -17890150, 27302570, 8507256, 8408472, 2948495, -18269180, -9920838, -12204686, -4168266,
+9320079, -10929618, -10140418, 19407346, -18960670, -11660299, 15457050, -15949361, -6650757, -13737990,
+-22763326, 7347616, 13346611, 2270964, 12497818, -20876762, -6238440, -967978, 10863046, 14371497,
+17201344, 906775, -2990908, -31236224, -32806034, -12125230, -11398843, -7358890, 13427142, 19495930,
+27020714, 2615098, -14006962, 27685896, -21320218, -9645960, 11437498, -9575093, 35989680, 1003949,
+-7184407, 5176510, -14397267, 9304510, 25143812, 18997714, -7453916, 4184909, 18347026, -49836652,
+-114763136, -88017304, -11290932, 36240936, 96627640, 81349368, 77650864, 79280264, 51926156, 21086142,
+-30303678, -52849572, -99597072, -73795592, -72449120, -72326712, -45391360, 41511396, 56517476, 83517248,
+63934884, 53245784, 16811038, 35077536, -9375914, -10752987, -12608950, -21235928, -38408280, -31829466,
+-63881196, -24158118, -50954956, -25035902, -12898324, 15032922, 2167885, 22079354, 4326106, 31450434,
+22988276, 38330972, 51550880, 64124400, 40779104, 26913338, 45450956, 2476586, -16720308, -58385784,
+-68112816, -93472984, -83266528, -77978352, -30285426, -51379084, -27139898, 2455648, 13401372, 32191316,
+61901752, 66176856, 74020000, 112215688, 63218160, 86481312, 60106992, 14897094, -7863012, -32706176,
+-87242064, -93488016, -88557392, -94190240, -63826972, -19724100, -1180042, 2333778, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
2484102,
--669478, 1698123, 1275068, 2346663, -433255, -1897839, 3670050, -516470, -5807333, -1687385,
--6451041, 4508105, 867583, -973347, 906775, -1239098, 862752, -5407364, 4455492, -544387,
-1574106, -5060545, -1840394, -1856500, -7013145, -2695629, -594316, -89121, -454193, 2633889,
--999117, -2592013, -2026151, -5426691, -499290, -5418101, -318364, 1212255, 1358283, -1422708,
-129923, -987306, -183610, -1873680, -1769527, 1171452, -1134408, -1350230, 2147484, 7158100,
-343597, 3140158, 5743982, -535797, -1183264, 5374078, -2950106, -405874, -1194001, 248034,
-2247342, 962610, -2411087, -2822331, 3053722, 1730335, 3431142, -2044941, -1890323, -2705830,
--1158567, -1047972, -1282585, -1843078, 635118, -9339943, 7177964, 325881, 3278671, 3257196,
-9297530, 4361003, -3482145, -4381404, -6109054, 4323422, -5350456, -3890167, 828392, 1309965,
-533650, 5447629, -1831804, 5090073, -1355599, 4566087, -4396973, 1986422, -1971390, -4677220,
--380105, -8895951, 1275605, 2144799, 3907347, -3271155, -112743, 3425237, -2609730, 3849901,
-3591667, -2235531, 2557116, -2985002, -1443646, -2221035, -3257733, -4088809, 3535832, 5291937,
--4085588, 2314451, 4206384, 3415036, 5165235, 591632, -891206, 2986613, 2218351, -5647882,
--325344, 547071, 234613, 1656784, 3478924, 684510, 1172526, -2073932, -1365263, 2384781,
-3430605, 1800128, -2059974, -3560528, 3521873, -3293703, -1158031, 1688459, -817654, -653909,
-1379758, -361851, 3693672, -1944010, 2706366, 269509, -223338, -7493108, 1208496, 6408091,
--3922916, 2658048, -7969312, -8046621, -2658048, -6538014, -5725192, -839666, 1180579, 4530117,
-714038, -2143726, 1016297, 3096135, -3969087, 5525476, -3727495, -3990562, 4648229, -2278480,
-5355288, 6855305, 936840, -4871567, 3431679, 2295660, 1370632, -2449742, -1821603, 2918430,
-2381559, 547071, -5564667, -1537598, -5140539, 4707284, -4640176, -2943663, 3405909, 245887,
-2956548, 940061, 1133335, 5145908, 852551, 5768678, -7293392, -3623879, -1680406, 3750043,
-5123359, 5993090, 7968238, 1032403, -2237678, -569083, -1027571, -23622, -5111011, -2006287,
--2168422, -322659, 911607, -3810710, -2317135, -442919, -1539209, -2516314, 4241280, 8414378,
--6449431, -2496450, -1367947, 5126581, 4617627, -4903779, -554588, -8999030, -2057289, 10640781,
-3937948, -4452808, 7611219, 2399276, 2856153, 666257, -2706903, -8594766, 1023813, -3938485,
--2528662, -1670742, -5276368, -1950452, -4109210, 2666638, -1920924, -2461553, 4723391, -9240085,
-8279623, -3078955, 1083942, -2976949, 2510945, -461172, -944893, -346282, 3465502, 56908,
-2153389, -3377992, 6182069, -5005248, 7217693, 1442572, -823560, -4212289, -4903779, 9834938,
-1620813, -9434969, 9445707, 8882529, -4968741, -1890859, 2740189, -3777424, -763430, -2357400,
-2186138, 5653788, -3550327, 1243393, -2663954, -2438468, 902480, 7690676, -7094749, 4297652,
--7280507, -5560909, -5198521, -806917, 350577, 348966, 1670742, 3245385, -2456721, 1199370,
--5644124, 7028177, -8260833, 1184874, 10377715, -16456704, 12907450, 5642514, -3720516, 4619774,
-531502, 11319386, -206695, -7850127, -5165772, 4355097, 4971962, 1997697, 1201517, 5287105,
-2258079, 1563905, 6980933, 3307662, 2673080, 5192079, 4089883, 15783468, -3143379, 4814659,
-763967, -1616518, 4871567, 3250217, 2523830, 2739116, -1429687, -3295851, 1309428, 839129,
-1265942, 3011309, 5632850, -3803194, -3852049, 2989297, -70867, -1033477, -1821066, 6945499,
--3200288, 9659381, 5330055, 1260573, 3299609, 1620276, 3681861, 12055973, 10714870, 1605781,
-1921998, 3046743, -777926, 5089536, 648540, 4687957, 2869038, 1171452, 1918777, -3832185,
-6835978, 4434554, -795106, 2536178, -723165, 5191005, 394600, 5954436, -1874216, 5338108,
--3501472, 10768557, -7699266, -2551211, -3567507, 11124502, 6257768, 4376572, 6977711, -5676336,
--1071058, 10349261, 5755793, 5128728, 4930086, 3071975, 3413962, -599148, 9570798, -433255,
--4271882, -2669859, 3388729, -2980707, 2221572, -8341900, 3350611, -1083942, 192200, -8964670,
-4146254, -1385127, 9009768, -769873, 2818036, 3207804, -3866008, -188442, 4034048, 1353989,
-2720325, -1216550, 4886599, 7955353, 754304, -4061965, 1736241, 5928666, 3382824, 1643362,
--3605088, -5945846, 5619428, -6675453, -3541201, 5530844, -10579578, -1100585, 6111202, -3390340,
-1058173, 1607928, -852551, 346819, 2381023, -3089692, 215285, -5889474, -3869766, -5168993,
--3598109, 2274185, -19508816, 2783676, -6535330, -4003447, 3777961, 2768643, 1739999, 307090,
--14506789, -1992328, 3749507, -8000987, -2554969, -10748693, -5812702, 1772748, -1825898, -9926743,
-9196062, 5421860, -3626026, 562641, 7088844, -5481452, 1435056, -3901441, -6033356, -4156992,
--10397042, -4114042, 6684043, 2990371, 8716636, -5219459, -16044924, -7100655, 3063922, -5384279,
--10715407, -2139968, -2597382, 8702677, 3935801, -11089606, 6380174, -7965017, -1215476, -5858873,
--6021544, -5388574, -12579959, -7363722, 61203, 7220377, 10620917, 6988449, 1294396, 4237522,
--6084895, -9049496, -6286759, 5281199, -3582540, 5757404, -2733210, -5732708, -1231582, 416075,
--3678103, -6259915, -652835, 4908611, -16480326, -9588514, 12553653, 7547868, 86436, 3983045,
--4692789, 3974455, -6527277, -134755, 12042015, -5199595, 11375758, 11669426, 14147622, 3870839,
-5781563, 12412455, 9597104, 7336878, -9130564, 1643362, 3111704, 8500277, -1432909, -6447820,
-9081708, 9543954, -2448668, 6533182, -2901251, -2652142, 5780489, 5434208, -611496, 6366752,
-575526, -8971650, -7572028, 8813273, 11981885, -348429, -4129611, 3135326, 359704, -5069135,
--10711648, 6227166, -10150081, -4248797, 7658464, 2327336, 6745783, 1006096, 10832444, 2258616,
-11883101, -13214541, 12521977, -1670742, -665183, 4643397, 6490233, -4521527, -11812234, -2390686,
-10334228, -1131724, -12692165, -6335077, -7936026, 3087008, 4088272, -9683541, 5007932, 7421167,
-10689637, 4731444, 2889976, 3564286, 11861089, 1345935, 4852776, 14115947, 15264314, 4387846,
-3719442, -11630235, -5915781, 12378096, -9509594, 12647605, 3498251, -300111, -2699387, -4762582,
--7572564, 1099512, 5591511, -14137959, -6388764, -6181532, 2971581, 2488934, 2939368, 122407,
-2262374, -823560, 4090956, 3067681, -3760244, -6841883, -12065100, 1760400, -6550362, 10455561,
-363462, -6387153, -7609072, -2699387, 4961224, -9819906, 5828808, -3572876, 1882269, -549219,
--6763500, 6199249, 8367670, -6255083, 7030325, 1526861, -606664, 19693498, -5149666, -13652090,
-2414309, 4363150, -3356517, 500364, -5794985, 13100724, 7879118, -2018635, -3059091, 9055939,
-9161165, -2676838, -8133595, -6529961, 18836116, -2545305, -2997887, -8465381, 4498442, -11009612,
--3452080, -3794067, 408559, 4002910, 9918690, 8591545, -14968498, -153545, 1243393, -1958505,
--4788889, -10485089, -1481227, 2873870, 5481452, 4328790, -9629317, -2104534, -12083354, 10388452,
-24696, -1597191, 4786741, -5702106, -1399086, -12913893, 1628330, -7929047, 4656282, -1509681,
--2524367, -4738423, -8671539, -8553427, -1398012, -10429254, -16527034, -3567507, -7776575, -16042777,
--1705102, -1931125, -8905615, 4922570, 8039642, -1686312, 3598109, -1719598, -1790465, 1633161,
-2062121, -13205951, -4132296, 6148246, -6469295, 14224395, 2270964, 3214246, -10086731, -914291,
--4779225, -10728291, -1454920, 12963285, 6060736, 9548249, 5510443, -5715528, -11509975, -18769008,
-11541651, 10588168, -1447404, 4433480, -12719546, -27453968, -7132330, 21216064, 6849936, 8457327,
--5977521, 8549669, 14663018, 779537, -2904472, -25358560, -6222334, -1493575, 13966697, 3725347,
-5360119, -19068582, -5452461, -7283728, -4875325, 11355357, -6998113, -2587181, 1598265, 3037079,
--6356015, -2890513, 2572686, -5541045, 11017128, -13152800, 936840, 8170639, -11480448, 8739722,
-14895483, 17593796, 8111583, 8453569, 11255499, -8363375, -15273977, 5583995, 5910949, 9450539,
-7250979, -17022030, -5281199, 8440148, 4530654, 2845953, 9929964, 1995549, 11647951, -4914517,
--3197603, 6591164, 5880884, 1531156, -11335492, -6192269, -12139188, -13706314, -1360968, -14987288,
-175557, -8994198, 11811, -8295193, -5106179, -19295140, 12253542, 2579128, -3322157, -4225174,
--2710661, 1493038, 16714402, -8579734, -7372312, -6583648, 11429982, 14556181, -9603010, 23539106,
-4742181, -10517301, 11949136, 3154654, -10191957, -12009802, -9674414, -1099512, -5302674, -3813931,
--15793132, 5892159, 6258304, 21163452, 2699387, -4030290, -9917079, -10536629, 2381023, -1571421,
--13794361, 2041720, -5221070, 278099, 10348187, -8509404, 13751412, -12582644, -10386842, -1078037,
--16080358, -19485730, 2997887, -2579665, -22123914, 1132261, 190052, -10884521, 5464272, -5493263,
-2763275, -15294915, -24312736, 15567109, -14844481, 24336358, 13573170, -18083422, -2162516, -18318036,
--4686346, -2671470, 7628936, -6848862, 11597485, 13923210, 13901199, -10178536, -7597797, 927713,
--11528766, -1415729, -3286724, -16065862, 10322954, 7048578, -7274064, 13069049, -16226386, -13933948,
--10488310, 7738994, 9219684, 10200547, 16793858, -5449777, 30487826, -341987, -15089294, 7396471,
-15240155, 4687420, 8207146, -5926518, -16230681, 25712358, 14309757, 10958072, 5257577, -7948911,
-8449811, 21594022, -7290170, 5240397, 156229, 5184026, 3946538, 15675557, -3933653, 5900212,
--4908611, 5395553, -1087164, 110059, 9543417, 2901787, -18107582, -11382737, -16957604, -10816338,
--8859444, -3502009, -12924630, -6389301, -6204617, -10325101, -7681549, 6240588, -11684995, -2889976,
--9010841, 23505282, 11574400, 20695300, -17237852, -214748, -15721191, -1871532, 18231600, 11471321,
-21443162, 11786464, 13414793, -12060805, 6649683, 8145406, 19996830, 22032646, 6462852, 20374788,
--14837501, -4680441, 12409771, -37403260, 2119566, 17664664, 11545946, -11294690, 22542136, 13430363,
--950262, -5433134, -2628520, 13571023, 33221036, 17783848, 4936528, 1503775, 11040750, -2538326,
-26854820, 15180562, 16843252, 772020, -8306467, 5734855, 2188286, -14111652, -3319473, -838056,
--3180960, -3998615, 5577552, 2981244, -11479374, -5561983, -20413442, -2108292, -6257768, -26467736,
--11760157, 772020, 10003516, -13663902, 17110612, -4784594, -4002910, -2409477, -4118337, 12269648,
--8324721, 8516383, -27146878, 8225399, 11768747, 8929774, 17963164, -18080738, 15311558, -16292422,
--12196633, 13079249, -8156680, -2743410, 10832981, -18584860, 15584826, 25350508, -1209033, -4307852,
-32072668, -7741142, 5194763, 17822504, -41137732, -21180632, -744103, 95026, 2351495, 8061117,
-14353244, 8967355, -21549462, -5966784, -31390842, -18896782, 23164906, 22983980, 2518998, -5468030,
-19562502, -31549220, -16845398, -34146064, 14995341, 4072703, 1609539, 6532646, -15405511, 7764764,
-10910291, 14043469, 24107114, 24523190, 20842940, -967978, 4836670, 125091, -8840653, -2022393,
--7341173, -4060355, 28765006, -6863895, -26064010, -6847252, -5185636, 2125472, 41399728, -15124727,
--14511084, 13671418, -22033182, 7429757, -24463060, 32017370, 9421548, -1226750, 8595840, -12815109,
--15459198, 21772800, -26591216, -21910238, -18996640, 4939750, 8465381, 9616969, -17558900, 17926656,
--5270999, 853088, 28826746, -2520072, -4351876, 7719130, 23415088, -15532749, 38540888, 617938,
--43161736, -6234145, -989453, -15695421, -3392487, -1365263, -3027415, -13857175, -8345659, 17492864,
-8007967, -6314676, -1478543, 44339632, 27329414, -31111132, -24633784, 36193688, 34637300, 22630182,
-25628070, -37520836, -6199249, -8470212, 13191992, 6484327, -13564044, -27020176, -42226508, 15732465,
-14492293, 6097243, 15007689, -3497714, 433792, -8004209, 11614665, 18187576, 16668231, 6317897,
-21274046, 8634495, 684510, -4836133, -24457692, 1270237, -8625905, -6747394, 12372190, -26467200,
-5550709, 4001836, -10674604, 14805289, 13982803, 8309151, -16596827, -15376520, -45103064, -9296457,
-3578245, -12418361, 6048388, 13302051, 13580150, 30167850, 16786342, -8659728, -4679367, -14570677,
-26542362, -6062347, 43328704, 36456756, 13378286, -17177184, 47956532, 23987392, -12608413, 7022809,
-27282706, 55225764, -14609331, -33152316, -12372190, 7245610, -2193118, 18779208, 7837242, -9129490,
-10143639, 922344, -7731478, 17211008, 6162205, -5242545, -16037408, 14207752, -27340152, -24675660,
--9091909, 20437066, -11289858, -13607530, -205085, 23549306, 2275259, 24365886, -8013335, 29280402,
-3026878, 16223165, -10206990, -5482526, 8585640, -27943058, -8552354, 12286828, -5683316, -2556579,
--24020142, -20721070, 9668508, -11995307, -10409390, 19793894, 24149528, -1963337, 15528991, -27692876,
-841814, -6109054, 37241660, -13790066, 11589969, 25591562, 21065204, 8784282, -16987132, 12319040,
-5593121, 9323300, 10675141, -35030828, 67766528, 25137906, -8174934, 6744173, 5524402, 22641456,
--7925289, 18447958, 37724308, 1553168, -53472880, 25216290, 13695040, -13142063, 19138374, 86973,
--15933255, -20787104, 45022532, -19213536, 46641196, -20296942, -8302709, 47775604, 5717675, 25935696,
-13239237, -26289494, 1649268, 15581068, -4686346, -22907744, -4379793, -49945100, -13973139, -18632106,
--10768020, 10851235, -1469416, 17809618, -8771934, 1866163, 17385490, -15595563, 1650878, 9825275,
--1013075, -17137456, -71404, -11828877, 34391952, -6197638, 19902342, 3051038, -405338, 35109748,
-25363930, -15788300, -18342732, 8684961, 15890842, 19077708, 23431194, -783295, 8189966, 21927418,
--1333051, -9426379, 6864432, 277562, -19912542, -1020592, 12908524, -20111722, -26350162, -3209414,
--1698660, -3636227, -8894877, -10410464, -31310848, -1082869, 30666066, 8231305, 17122960, 8679592,
--3961571, -42021960, -29311542, 6034966, 26676042, 6226092, 14101451, 50219440, 56551296, 42986716,
--1324461, 18129594, -11250667, -41430328, -12513924, -28809030, 11126650, -16311212, 11366631, -5713917,
--19774030, -4362076, 2051384, 13386876, -7128035, 8079907, -30145838, 32791538, -65553012, -4138738,
--14818711, -11181410, 11136850, 41466836, 8269423, 16846472, -31307628, 10322954, 14287746, 29533268,
--11873974, -18569292, -13003550, -4262755, 912681, 2544231, 18008262, 14915348, -7609072, -45600740,
--21350282, -36384816, 6452652, 73555608, -47777752, -16087874, -5836861, 44174276, -11787538, 20905216,
--11216844, 23425826, -6032282, -7796977, -23500988, 17160542, -27540940, 31323196, 50310712, 10770704,
--7458748, -4416837, 41884520, 15625091, 1028645, 26492968, 8315594, 13099650, -6593312, 52376588,
--72422272, 59130424, -43932148, 27502824, 53038552, -35573604, 85165440, 64849712, -22929756, -483184,
-52582212, 10427644, -1819456, 49515604, 47280612, -40470940, 39404716, 36080948, -33980708, -51576116,
--75854488, 17479980, 114150032, 46601468, 357556, 23259396, -108829104, -45330696, -3646427, 16282758,
-82269024, 79885320, 14143327, -31326418, -60071024, -35826468, 4464082, 25467008, 39623220, 62625992,
-38553236, -51353852, -119683560, -98488968, -9075266, 108454368, 119198224, 74342128, 23548768, -25802552,
--47702056, -73814920, -40949292, -45182520, 88082800, 71890240, 46770048, 39872864, -60738352, -87229176,
--99286760, -90647432, 35748088, 120885072, 151079232, 49818400, -44083544, -107556720, -126545304, -35707820,
-22132504, 12317966, 81728392, 30499636, -28472948, -18853296, -59732256, -14364518, -68441912, 29630442,
-85649168, 155424128, -7383586, -84310208, -179678352, -7825968, -60879552, 709207, -10483478, 51368884,
-29966524, -4529043, 10808285, 5589363, -36745056, -3774740, -3145527, 4064650, 944893, 3024731,
--13609141, -5235029, -5191005, -3227131, -6372121, 22072374, -8183524, 9603010, -16834124, -1443646,
-6428493, -537408, -5424007, 38103340, 4785131, -21122112, -25380572, 5560372, 4700842, -14271639,
-3482682, 19392314, 9247065, 18308372, -18980534, 5998996, -1376000, 4792647, -13673565, 2987150,
-13449153, 20824686, 4206921, -4646081, 4942434, 2966212, -5792837, 14537391, -21561810, 5400385,
--34487512, -9536975, 12334609, -10332081, -14865419, 19091130, -13183402, -29874182, -25834766, 22508850,
--4685810, -2826625, 2615635, 12326019, 24374476, -15803869, -25809532, 2990908, -6576132, 20608326,
--4078608, 13589277, -1009854, 2337536, -30821222, -33906620, -79672720, 22098144, 21817896, -2318746,
--67296768, -43715252, -7096360, -11606075, 43687332, 29312078, 13646722, -30123290, -12941810, -8461086,
-27052388, 2416993, -8724152, -17913772, 10622528, 4461398, 13054553, -1350767, -6455336, -7647726,
--16724603, -8502962, -10436234, 26067768, 13419088, 2628520, 3191698, -17989470, -1731946, 1682554,
-23490250, -2168959, 10531797, -9402220, -7068443, 4609037, -10780368, 6318971, 2141041, 6868190,
-22931904, -2263985, 20044612, -403190, 12621835, -10382547, 169114, -15159624, -20343650, -20562692,
--18363132, 6059662, 2438468, 1881733, -26664230, 13395466, -23241142, -1854352, 682363, -13266080,
--15824807, -6873022, -63888, -25426206, -18562848, 19097036, -8240432, 18857590, 2741800, 16105590,
--39820252, -96227672, -92380448, -15345381, 25716654, 89699320, 77120968, 72816336, 78090560, 42960948,
-8966818, -41781980, -42320460, -85619096, -67212480, -58720792, -38221988, -47107200, 61097520, 50477676,
-66293892, 38030860, 53811108, -3291019, 12722230, -10189273, -23733990, -13634374, -28012850, -31404264,
--32165546, -30837866, -37244344, -26830660, -23001698, -3396782, 3440269, 48476224, 39378408, 20952462,
-21359410, 31758062, 28112172, 13780939, 68213744, 8424578, -1277216, 12552042, -28508382, -81340240,
--25330106, -65220688, -71667432, -73731704, -54124104, -46457052, 95563, 38241852, 36912024, 47859896,
-84735944, 62863824, 74178384, 75566728, 45872936, 52449068, 15830176, -16471736, -60059748, -74523048,
--88713088, -53304304, -78396040, -59574956, -71856952, -28498718, 16186658, 28952912, 19346680, 0,
-0, 0, 0, },
+-669478, 1698123, 1275068, 2346663, -433255, -1897839, 3670050, -516470, -5807333, -1687385,
+-6451041, 4508105, 867583, -973347, 906775, -1239098, 862752, -5407364, 4455492, -544387,
+1574106, -5060545, -1840394, -1856500, -7013145, -2695629, -594316, -89121, -454193, 2633889,
+-999117, -2592013, -2026151, -5426691, -499290, -5418101, -318364, 1212255, 1358283, -1422708,
+129923, -987306, -183610, -1873680, -1769527, 1171452, -1134408, -1350230, 2147484, 7158100,
+343597, 3140158, 5743982, -535797, -1183264, 5374078, -2950106, -405874, -1194001, 248034,
+2247342, 962610, -2411087, -2822331, 3053722, 1730335, 3431142, -2044941, -1890323, -2705830,
+-1158567, -1047972, -1282585, -1843078, 635118, -9339943, 7177964, 325881, 3278671, 3257196,
+9297530, 4361003, -3482145, -4381404, -6109054, 4323422, -5350456, -3890167, 828392, 1309965,
+533650, 5447629, -1831804, 5090073, -1355599, 4566087, -4396973, 1986422, -1971390, -4677220,
+-380105, -8895951, 1275605, 2144799, 3907347, -3271155, -112743, 3425237, -2609730, 3849901,
+3591667, -2235531, 2557116, -2985002, -1443646, -2221035, -3257733, -4088809, 3535832, 5291937,
+-4085588, 2314451, 4206384, 3415036, 5165235, 591632, -891206, 2986613, 2218351, -5647882,
+-325344, 547071, 234613, 1656784, 3478924, 684510, 1172526, -2073932, -1365263, 2384781,
+3430605, 1800128, -2059974, -3560528, 3521873, -3293703, -1158031, 1688459, -817654, -653909,
+1379758, -361851, 3693672, -1944010, 2706366, 269509, -223338, -7493108, 1208496, 6408091,
+-3922916, 2658048, -7969312, -8046621, -2658048, -6538014, -5725192, -839666, 1180579, 4530117,
+714038, -2143726, 1016297, 3096135, -3969087, 5525476, -3727495, -3990562, 4648229, -2278480,
+5355288, 6855305, 936840, -4871567, 3431679, 2295660, 1370632, -2449742, -1821603, 2918430,
+2381559, 547071, -5564667, -1537598, -5140539, 4707284, -4640176, -2943663, 3405909, 245887,
+2956548, 940061, 1133335, 5145908, 852551, 5768678, -7293392, -3623879, -1680406, 3750043,
+5123359, 5993090, 7968238, 1032403, -2237678, -569083, -1027571, -23622, -5111011, -2006287,
+-2168422, -322659, 911607, -3810710, -2317135, -442919, -1539209, -2516314, 4241280, 8414378,
+-6449431, -2496450, -1367947, 5126581, 4617627, -4903779, -554588, -8999030, -2057289, 10640781,
+3937948, -4452808, 7611219, 2399276, 2856153, 666257, -2706903, -8594766, 1023813, -3938485,
+-2528662, -1670742, -5276368, -1950452, -4109210, 2666638, -1920924, -2461553, 4723391, -9240085,
+8279623, -3078955, 1083942, -2976949, 2510945, -461172, -944893, -346282, 3465502, 56908,
+2153389, -3377992, 6182069, -5005248, 7217693, 1442572, -823560, -4212289, -4903779, 9834938,
+1620813, -9434969, 9445707, 8882529, -4968741, -1890859, 2740189, -3777424, -763430, -2357400,
+2186138, 5653788, -3550327, 1243393, -2663954, -2438468, 902480, 7690676, -7094749, 4297652,
+-7280507, -5560909, -5198521, -806917, 350577, 348966, 1670742, 3245385, -2456721, 1199370,
+-5644124, 7028177, -8260833, 1184874, 10377715, -16456704, 12907450, 5642514, -3720516, 4619774,
+531502, 11319386, -206695, -7850127, -5165772, 4355097, 4971962, 1997697, 1201517, 5287105,
+2258079, 1563905, 6980933, 3307662, 2673080, 5192079, 4089883, 15783468, -3143379, 4814659,
+763967, -1616518, 4871567, 3250217, 2523830, 2739116, -1429687, -3295851, 1309428, 839129,
+1265942, 3011309, 5632850, -3803194, -3852049, 2989297, -70867, -1033477, -1821066, 6945499,
+-3200288, 9659381, 5330055, 1260573, 3299609, 1620276, 3681861, 12055973, 10714870, 1605781,
+1921998, 3046743, -777926, 5089536, 648540, 4687957, 2869038, 1171452, 1918777, -3832185,
+6835978, 4434554, -795106, 2536178, -723165, 5191005, 394600, 5954436, -1874216, 5338108,
+-3501472, 10768557, -7699266, -2551211, -3567507, 11124502, 6257768, 4376572, 6977711, -5676336,
+-1071058, 10349261, 5755793, 5128728, 4930086, 3071975, 3413962, -599148, 9570798, -433255,
+-4271882, -2669859, 3388729, -2980707, 2221572, -8341900, 3350611, -1083942, 192200, -8964670,
+4146254, -1385127, 9009768, -769873, 2818036, 3207804, -3866008, -188442, 4034048, 1353989,
+2720325, -1216550, 4886599, 7955353, 754304, -4061965, 1736241, 5928666, 3382824, 1643362,
+-3605088, -5945846, 5619428, -6675453, -3541201, 5530844, -10579578, -1100585, 6111202, -3390340,
+1058173, 1607928, -852551, 346819, 2381023, -3089692, 215285, -5889474, -3869766, -5168993,
+-3598109, 2274185, -19508816, 2783676, -6535330, -4003447, 3777961, 2768643, 1739999, 307090,
+-14506789, -1992328, 3749507, -8000987, -2554969, -10748693, -5812702, 1772748, -1825898, -9926743,
+9196062, 5421860, -3626026, 562641, 7088844, -5481452, 1435056, -3901441, -6033356, -4156992,
+-10397042, -4114042, 6684043, 2990371, 8716636, -5219459, -16044924, -7100655, 3063922, -5384279,
+-10715407, -2139968, -2597382, 8702677, 3935801, -11089606, 6380174, -7965017, -1215476, -5858873,
+-6021544, -5388574, -12579959, -7363722, 61203, 7220377, 10620917, 6988449, 1294396, 4237522,
+-6084895, -9049496, -6286759, 5281199, -3582540, 5757404, -2733210, -5732708, -1231582, 416075,
+-3678103, -6259915, -652835, 4908611, -16480326, -9588514, 12553653, 7547868, 86436, 3983045,
+-4692789, 3974455, -6527277, -134755, 12042015, -5199595, 11375758, 11669426, 14147622, 3870839,
+5781563, 12412455, 9597104, 7336878, -9130564, 1643362, 3111704, 8500277, -1432909, -6447820,
+9081708, 9543954, -2448668, 6533182, -2901251, -2652142, 5780489, 5434208, -611496, 6366752,
+575526, -8971650, -7572028, 8813273, 11981885, -348429, -4129611, 3135326, 359704, -5069135,
+-10711648, 6227166, -10150081, -4248797, 7658464, 2327336, 6745783, 1006096, 10832444, 2258616,
+11883101, -13214541, 12521977, -1670742, -665183, 4643397, 6490233, -4521527, -11812234, -2390686,
+10334228, -1131724, -12692165, -6335077, -7936026, 3087008, 4088272, -9683541, 5007932, 7421167,
+10689637, 4731444, 2889976, 3564286, 11861089, 1345935, 4852776, 14115947, 15264314, 4387846,
+3719442, -11630235, -5915781, 12378096, -9509594, 12647605, 3498251, -300111, -2699387, -4762582,
+-7572564, 1099512, 5591511, -14137959, -6388764, -6181532, 2971581, 2488934, 2939368, 122407,
+2262374, -823560, 4090956, 3067681, -3760244, -6841883, -12065100, 1760400, -6550362, 10455561,
+363462, -6387153, -7609072, -2699387, 4961224, -9819906, 5828808, -3572876, 1882269, -549219,
+-6763500, 6199249, 8367670, -6255083, 7030325, 1526861, -606664, 19693498, -5149666, -13652090,
+2414309, 4363150, -3356517, 500364, -5794985, 13100724, 7879118, -2018635, -3059091, 9055939,
+9161165, -2676838, -8133595, -6529961, 18836116, -2545305, -2997887, -8465381, 4498442, -11009612,
+-3452080, -3794067, 408559, 4002910, 9918690, 8591545, -14968498, -153545, 1243393, -1958505,
+-4788889, -10485089, -1481227, 2873870, 5481452, 4328790, -9629317, -2104534, -12083354, 10388452,
+24696, -1597191, 4786741, -5702106, -1399086, -12913893, 1628330, -7929047, 4656282, -1509681,
+-2524367, -4738423, -8671539, -8553427, -1398012, -10429254, -16527034, -3567507, -7776575, -16042777,
+-1705102, -1931125, -8905615, 4922570, 8039642, -1686312, 3598109, -1719598, -1790465, 1633161,
+2062121, -13205951, -4132296, 6148246, -6469295, 14224395, 2270964, 3214246, -10086731, -914291,
+-4779225, -10728291, -1454920, 12963285, 6060736, 9548249, 5510443, -5715528, -11509975, -18769008,
+11541651, 10588168, -1447404, 4433480, -12719546, -27453968, -7132330, 21216064, 6849936, 8457327,
+-5977521, 8549669, 14663018, 779537, -2904472, -25358560, -6222334, -1493575, 13966697, 3725347,
+5360119, -19068582, -5452461, -7283728, -4875325, 11355357, -6998113, -2587181, 1598265, 3037079,
+-6356015, -2890513, 2572686, -5541045, 11017128, -13152800, 936840, 8170639, -11480448, 8739722,
+14895483, 17593796, 8111583, 8453569, 11255499, -8363375, -15273977, 5583995, 5910949, 9450539,
+7250979, -17022030, -5281199, 8440148, 4530654, 2845953, 9929964, 1995549, 11647951, -4914517,
+-3197603, 6591164, 5880884, 1531156, -11335492, -6192269, -12139188, -13706314, -1360968, -14987288,
+175557, -8994198, 11811, -8295193, -5106179, -19295140, 12253542, 2579128, -3322157, -4225174,
+-2710661, 1493038, 16714402, -8579734, -7372312, -6583648, 11429982, 14556181, -9603010, 23539106,
+4742181, -10517301, 11949136, 3154654, -10191957, -12009802, -9674414, -1099512, -5302674, -3813931,
+-15793132, 5892159, 6258304, 21163452, 2699387, -4030290, -9917079, -10536629, 2381023, -1571421,
+-13794361, 2041720, -5221070, 278099, 10348187, -8509404, 13751412, -12582644, -10386842, -1078037,
+-16080358, -19485730, 2997887, -2579665, -22123914, 1132261, 190052, -10884521, 5464272, -5493263,
+2763275, -15294915, -24312736, 15567109, -14844481, 24336358, 13573170, -18083422, -2162516, -18318036,
+-4686346, -2671470, 7628936, -6848862, 11597485, 13923210, 13901199, -10178536, -7597797, 927713,
+-11528766, -1415729, -3286724, -16065862, 10322954, 7048578, -7274064, 13069049, -16226386, -13933948,
+-10488310, 7738994, 9219684, 10200547, 16793858, -5449777, 30487826, -341987, -15089294, 7396471,
+15240155, 4687420, 8207146, -5926518, -16230681, 25712358, 14309757, 10958072, 5257577, -7948911,
+8449811, 21594022, -7290170, 5240397, 156229, 5184026, 3946538, 15675557, -3933653, 5900212,
+-4908611, 5395553, -1087164, 110059, 9543417, 2901787, -18107582, -11382737, -16957604, -10816338,
+-8859444, -3502009, -12924630, -6389301, -6204617, -10325101, -7681549, 6240588, -11684995, -2889976,
+-9010841, 23505282, 11574400, 20695300, -17237852, -214748, -15721191, -1871532, 18231600, 11471321,
+21443162, 11786464, 13414793, -12060805, 6649683, 8145406, 19996830, 22032646, 6462852, 20374788,
+-14837501, -4680441, 12409771, -37403260, 2119566, 17664664, 11545946, -11294690, 22542136, 13430363,
+-950262, -5433134, -2628520, 13571023, 33221036, 17783848, 4936528, 1503775, 11040750, -2538326,
+26854820, 15180562, 16843252, 772020, -8306467, 5734855, 2188286, -14111652, -3319473, -838056,
+-3180960, -3998615, 5577552, 2981244, -11479374, -5561983, -20413442, -2108292, -6257768, -26467736,
+-11760157, 772020, 10003516, -13663902, 17110612, -4784594, -4002910, -2409477, -4118337, 12269648,
+-8324721, 8516383, -27146878, 8225399, 11768747, 8929774, 17963164, -18080738, 15311558, -16292422,
+-12196633, 13079249, -8156680, -2743410, 10832981, -18584860, 15584826, 25350508, -1209033, -4307852,
+32072668, -7741142, 5194763, 17822504, -41137732, -21180632, -744103, 95026, 2351495, 8061117,
+14353244, 8967355, -21549462, -5966784, -31390842, -18896782, 23164906, 22983980, 2518998, -5468030,
+19562502, -31549220, -16845398, -34146064, 14995341, 4072703, 1609539, 6532646, -15405511, 7764764,
+10910291, 14043469, 24107114, 24523190, 20842940, -967978, 4836670, 125091, -8840653, -2022393,
+-7341173, -4060355, 28765006, -6863895, -26064010, -6847252, -5185636, 2125472, 41399728, -15124727,
+-14511084, 13671418, -22033182, 7429757, -24463060, 32017370, 9421548, -1226750, 8595840, -12815109,
+-15459198, 21772800, -26591216, -21910238, -18996640, 4939750, 8465381, 9616969, -17558900, 17926656,
+-5270999, 853088, 28826746, -2520072, -4351876, 7719130, 23415088, -15532749, 38540888, 617938,
+-43161736, -6234145, -989453, -15695421, -3392487, -1365263, -3027415, -13857175, -8345659, 17492864,
+8007967, -6314676, -1478543, 44339632, 27329414, -31111132, -24633784, 36193688, 34637300, 22630182,
+25628070, -37520836, -6199249, -8470212, 13191992, 6484327, -13564044, -27020176, -42226508, 15732465,
+14492293, 6097243, 15007689, -3497714, 433792, -8004209, 11614665, 18187576, 16668231, 6317897,
+21274046, 8634495, 684510, -4836133, -24457692, 1270237, -8625905, -6747394, 12372190, -26467200,
+5550709, 4001836, -10674604, 14805289, 13982803, 8309151, -16596827, -15376520, -45103064, -9296457,
+3578245, -12418361, 6048388, 13302051, 13580150, 30167850, 16786342, -8659728, -4679367, -14570677,
+26542362, -6062347, 43328704, 36456756, 13378286, -17177184, 47956532, 23987392, -12608413, 7022809,
+27282706, 55225764, -14609331, -33152316, -12372190, 7245610, -2193118, 18779208, 7837242, -9129490,
+10143639, 922344, -7731478, 17211008, 6162205, -5242545, -16037408, 14207752, -27340152, -24675660,
+-9091909, 20437066, -11289858, -13607530, -205085, 23549306, 2275259, 24365886, -8013335, 29280402,
+3026878, 16223165, -10206990, -5482526, 8585640, -27943058, -8552354, 12286828, -5683316, -2556579,
+-24020142, -20721070, 9668508, -11995307, -10409390, 19793894, 24149528, -1963337, 15528991, -27692876,
+841814, -6109054, 37241660, -13790066, 11589969, 25591562, 21065204, 8784282, -16987132, 12319040,
+5593121, 9323300, 10675141, -35030828, 67766528, 25137906, -8174934, 6744173, 5524402, 22641456,
+-7925289, 18447958, 37724308, 1553168, -53472880, 25216290, 13695040, -13142063, 19138374, 86973,
+-15933255, -20787104, 45022532, -19213536, 46641196, -20296942, -8302709, 47775604, 5717675, 25935696,
+13239237, -26289494, 1649268, 15581068, -4686346, -22907744, -4379793, -49945100, -13973139, -18632106,
+-10768020, 10851235, -1469416, 17809618, -8771934, 1866163, 17385490, -15595563, 1650878, 9825275,
+-1013075, -17137456, -71404, -11828877, 34391952, -6197638, 19902342, 3051038, -405338, 35109748,
+25363930, -15788300, -18342732, 8684961, 15890842, 19077708, 23431194, -783295, 8189966, 21927418,
+-1333051, -9426379, 6864432, 277562, -19912542, -1020592, 12908524, -20111722, -26350162, -3209414,
+-1698660, -3636227, -8894877, -10410464, -31310848, -1082869, 30666066, 8231305, 17122960, 8679592,
+-3961571, -42021960, -29311542, 6034966, 26676042, 6226092, 14101451, 50219440, 56551296, 42986716,
+-1324461, 18129594, -11250667, -41430328, -12513924, -28809030, 11126650, -16311212, 11366631, -5713917,
+-19774030, -4362076, 2051384, 13386876, -7128035, 8079907, -30145838, 32791538, -65553012, -4138738,
+-14818711, -11181410, 11136850, 41466836, 8269423, 16846472, -31307628, 10322954, 14287746, 29533268,
+-11873974, -18569292, -13003550, -4262755, 912681, 2544231, 18008262, 14915348, -7609072, -45600740,
+-21350282, -36384816, 6452652, 73555608, -47777752, -16087874, -5836861, 44174276, -11787538, 20905216,
+-11216844, 23425826, -6032282, -7796977, -23500988, 17160542, -27540940, 31323196, 50310712, 10770704,
+-7458748, -4416837, 41884520, 15625091, 1028645, 26492968, 8315594, 13099650, -6593312, 52376588,
+-72422272, 59130424, -43932148, 27502824, 53038552, -35573604, 85165440, 64849712, -22929756, -483184,
+52582212, 10427644, -1819456, 49515604, 47280612, -40470940, 39404716, 36080948, -33980708, -51576116,
+-75854488, 17479980, 114150032, 46601468, 357556, 23259396, -108829104, -45330696, -3646427, 16282758,
+82269024, 79885320, 14143327, -31326418, -60071024, -35826468, 4464082, 25467008, 39623220, 62625992,
+38553236, -51353852, -119683560, -98488968, -9075266, 108454368, 119198224, 74342128, 23548768, -25802552,
+-47702056, -73814920, -40949292, -45182520, 88082800, 71890240, 46770048, 39872864, -60738352, -87229176,
+-99286760, -90647432, 35748088, 120885072, 151079232, 49818400, -44083544, -107556720, -126545304, -35707820,
+22132504, 12317966, 81728392, 30499636, -28472948, -18853296, -59732256, -14364518, -68441912, 29630442,
+85649168, 155424128, -7383586, -84310208, -179678352, -7825968, -60879552, 709207, -10483478, 51368884,
+29966524, -4529043, 10808285, 5589363, -36745056, -3774740, -3145527, 4064650, 944893, 3024731,
+-13609141, -5235029, -5191005, -3227131, -6372121, 22072374, -8183524, 9603010, -16834124, -1443646,
+6428493, -537408, -5424007, 38103340, 4785131, -21122112, -25380572, 5560372, 4700842, -14271639,
+3482682, 19392314, 9247065, 18308372, -18980534, 5998996, -1376000, 4792647, -13673565, 2987150,
+13449153, 20824686, 4206921, -4646081, 4942434, 2966212, -5792837, 14537391, -21561810, 5400385,
+-34487512, -9536975, 12334609, -10332081, -14865419, 19091130, -13183402, -29874182, -25834766, 22508850,
+-4685810, -2826625, 2615635, 12326019, 24374476, -15803869, -25809532, 2990908, -6576132, 20608326,
+-4078608, 13589277, -1009854, 2337536, -30821222, -33906620, -79672720, 22098144, 21817896, -2318746,
+-67296768, -43715252, -7096360, -11606075, 43687332, 29312078, 13646722, -30123290, -12941810, -8461086,
+27052388, 2416993, -8724152, -17913772, 10622528, 4461398, 13054553, -1350767, -6455336, -7647726,
+-16724603, -8502962, -10436234, 26067768, 13419088, 2628520, 3191698, -17989470, -1731946, 1682554,
+23490250, -2168959, 10531797, -9402220, -7068443, 4609037, -10780368, 6318971, 2141041, 6868190,
+22931904, -2263985, 20044612, -403190, 12621835, -10382547, 169114, -15159624, -20343650, -20562692,
+-18363132, 6059662, 2438468, 1881733, -26664230, 13395466, -23241142, -1854352, 682363, -13266080,
+-15824807, -6873022, -63888, -25426206, -18562848, 19097036, -8240432, 18857590, 2741800, 16105590,
+-39820252, -96227672, -92380448, -15345381, 25716654, 89699320, 77120968, 72816336, 78090560, 42960948,
+8966818, -41781980, -42320460, -85619096, -67212480, -58720792, -38221988, -47107200, 61097520, 50477676,
+66293892, 38030860, 53811108, -3291019, 12722230, -10189273, -23733990, -13634374, -28012850, -31404264,
+-32165546, -30837866, -37244344, -26830660, -23001698, -3396782, 3440269, 48476224, 39378408, 20952462,
+21359410, 31758062, 28112172, 13780939, 68213744, 8424578, -1277216, 12552042, -28508382, -81340240,
+-25330106, -65220688, -71667432, -73731704, -54124104, -46457052, 95563, 38241852, 36912024, 47859896,
+84735944, 62863824, 74178384, 75566728, 45872936, 52449068, 15830176, -16471736, -60059748, -74523048,
+-88713088, -53304304, -78396040, -59574956, -71856952, -28498718, 16186658, 28952912, 19346680, 0,
+0, 0, 0, },
{
-945967,
--1034550, -2892124, -6316287, 275415, -507880, -4354560, 922344, -187905, -1166084, -1078574,
-4333085, 4241280, 1076426, 6105296, -4664872, 4355634, 2791192, -4049617, 3409130, -7570417,
--1985886, -12191265, -1796907, 2594697, -2512556, 1838246, 1763084, 657667, -362925, -1176284,
--2354179, -614717, 2034204, 2259690, 260382, 2935073, -1170916, -2332167, 2440615, 2957622,
-1954210, -4855461, -4516158, -3167539, -2853469, -3075734, 3448322, 2338610, -2646774, -4559645,
--7634841, -834834, -2736431, 1909650, 3505230, 1001264, -1701344, 129386, 3291019, -2840584,
-3651259, 152471, -479426, -9095667, -1916092, -3704946, -955630, 4604742, -626528, -2391760,
--380105, 3975529, -2802466, 251256, 332860, -4474819, 7359964, 2530810, -1413581, 1825898,
-2321967, 4395899, 7366943, -3622268, 2402497, -3092913, -2431488, 1440962, -52613, 569620,
--5318244, -2599529, 1778117, 3651796, -567473, 3070365, -5701569, -5039071, 3066070, 1962800,
-785979, 2240899, -2000381, 3986267, 4431870, 4335233, 6201396, -3529390, -2962454, 180389,
-714575, -6068252, -465467, -566399, 1569274, 549219, -3855270, -972273, 5044976, -2785286,
-919123, -3189013, 1421097, 1540283, 941135, -4730907, 3696893, 297963, 769873, -695248,
--1620276, -1995012, -3272228, 6742562, -1269700, -1310502, -1588601, 2957085, 649077, -6493991,
-1591822, -3007551, -4434017, 2525978, -2724083, -7039989, 2817499, 941672, 406411, -6460168,
--7568269, -2878165, 4576288, 744640, 605590, 4093641, -5539434, 1191317, -4582193, -5873905,
-1995012, 5941551, -3299072, 2936147, -2422362, -1067299, 1394254, 504122, -2588255, -8192650,
--8105140, 363462, -1867774, 135291, 4616016, 909459, 5597953, 7432441, -3556770, 6445136,
-1033477, 6535867, 656593, 7715372, 1215476, -4009352, -896038, 616328, 3686156, -736587,
--864899, 932545, 2865817, -2941516, 80531, -786516, 2571612, 2973191, 430570, -2678986,
-77309, -354335, 1926830, 3095598, 5556077, -1692217, 3709778, -1403381, -4291746, -3966939,
--2470143, 2710124, 3118146, -1447404, 4865661, 234613, 1966558, 301185, 5856725, 3712999,
-4398047, 1663763, 2711198, 1444183, 2511482, 4421669, -771484, -461709, 5981279, 6169184,
--6897718, -4758824, -3941706, -5662915, 1414655, 1984812, -4572530, 668941, 8573292, -6774237,
-4224637, 7275675, 7286949, -5000953, -1514513, 3373697, 481573, 788663, -3609920, 1477469,
--11687143, 8617315, 13896367, 2101850, 4548371, -2698850, -387621, 7076496, -4126390, -9475772,
--1685238, -301185, -198642, -7758859, 378494, 1359357, -8843875, -4554813, 3886409, 883690,
--3228205, -1303523, 2883534, -4750771, 8878771, 2279017, 307627, -6320045, -668941, 2541010,
--2048699, -390305, -2139431, -719407, -926102, -5252208, 234613, -5124970, 6709813, -7200513,
--4372814, -2168959, -7831336, 4495757, -4211216, -11652246, -2000381, -5509906, 1329292, 4132296,
--5095442, -286689, -3520800, 2584497, 221728, -4445828, 177704, 1679869, -4780836, 3515431,
-148176, -721555, 4143570, -3371013, -12477954, -2233920, -476741, 5844377, 8226473, 7261716,
-3690451, -2505040, -538482, -7641821, -6354941, 2542621, 9321690, -2344515, 9545565, 6081674,
--5342403, 3271691, -529355, 3404299, -6002754, -4082367, 1401233, 4782446, -222265, 2921652,
-4184372, -7003481, -1074279, -3143916, -9408663, 6242735, 1345935, 2360085, 4621385, 7897371,
-3091840, 494458, 6476811, -1303523, -2714419, 6363531, -2891587, 10667625, 5282810, 4283693,
-636729, -2979097, -3277060, 5229660, 7474854, -5208722, 1710471, 6733972, -749472, 2172717,
-15315317, -4532801, -1326608, 2825015, -6977175, -390842, 1815697, -3434900, 4105452, -2530273,
-2696703, 7291244, -2187749, -134755, 1269700, -2810519, -17898740, -1023813, 4832, -3189013,
--5296769, -1374926, 10188736, -6465000, -10059350, 4420595, -3886946, 2011118, 2185602, 7124277,
--4178466, -809064, 1602560, 6688338, -2574833, -3448859, -925565, -2873333, 4781373, 8875013,
-4414690, 691490, -447213, -4107063, -62277, 13662828, 2496987, -950798, 15228880, -216896,
-11358041, -2677912, 245887, 8311836, 2442226, 2630131, 2826625, 2096481, 4272956, 3221226,
--7067906, 14092325, 8120173, 11746199, 7335804, 5687611, -7270306, 4121021, 3666292, 1506460,
--4523675, 13317083, 7356742, 12175695, 1835025, -1123671, -2941516, 9365176, -4253092, -7221988,
-9637370, 4463008, -5885179, -1701344, -41339, -923418, 239444, 693100, 284005, -831076,
--4472672, -484794, -11839077, -4545686, -13269301, -8990440, 1127429, -8500277, -6728603, 1038308,
--1411434, 9223979, -5870147, 10208064, 12315282, 1518808, -10297721, -7021198, 11049340, -5283347,
--2940442, 6457484, -7986492, -13958107, 5758478, 12641699, -6308770, 3484829, -214212, 5723581,
--14883672, 3333968, -5990943, 3977140, 277562, -5851356, 10343892, 5153961, 4334159, 14246943,
-6379100, 3296924, 7752953, 2025614, 2441689, 4420595, 1207423, 1122597, 2010045, 2399276,
-15596637, 9383967, -201327, 13760538, 8087424, 10325638, 15037217, -7192997, -6739878, 13981192,
--4911832, 143345, -8213588, -2665027, 4437775, 7816841, -6385543, 67109, 1634235, -870268,
-3260954, -5473399, -1672353, -6335614, 13812615, -3255585, 6743636, 4571456, -4837207, 1583769,
-730144, 1566589, -6951405, 9089761, 5306432, 12341589, 2428267, -1669669, -13881871, -7446937,
--5174899, 3546032, -7186554, -12069932, -3309272, 3069828, 1392643, -13489419, 10980084, 807991,
--764504, -11507828, -6542309, 2658048, 1469416, -12796318, -3906810, 4592394, 571231, 1212255,
-6585796, 7546795, 4511327, -2065879, 3898220, 1085016, -4521527, -9547712, 16295106, -4210142,
--7871602, 9664, 4067871, 5090073, 12178917, 1817845, -199179, -4765266, -125091, 6516539,
--854162, 8173323, 16114180, 1083406, -3537443, 185757, 13824426, 17032766, -8756365, 2044404,
-2284923, 8964134, 4766877, 1170916, 2614561, -7472706, 3926674, 3835406, 3925063, -3750580,
--570694, 2481954, 3758097, -4016331, 6907918, -5196374, -9822053, 7665443, -312996, -2021319,
-3258270, 6591164, -16814796, 1556389, 13849659, -1059783, 24486146, 11919071, -6746857, -4887136,
--1674500, -6440304, -2494839, 11154567, -3526705, -3038689, 11301133, 9153649, 3471944, 5442798,
-10619844, 7078643, 8111046, -5037460, -3121368, 9950902, -1223529, 9047349, 710817, -9831180,
--5937256, 3220689, 8801462, -10736881, 1393717, -5530844, 3840775, -6384469, 10224707, 9903121,
--8499740, -551903, 3467649, 132607, -11715597, -5172215, 2956011, 8726837, 14481019, 5078262,
--9241159, -1785096, -1560147, -732829, 9517111, 1829119, 7853885, -9855876, 5667210, 1211718,
--7116224, 10250476, 5272073, -715112, -953483, 2362769, 942208, -7507603, 11593190, -13121662,
--1660542, -3821984, 14499810, -5706401, 12025908, -3040837, 11250130, 15165530, -5998459, 5181878,
--3250217, 8902393, -2706366, 7519951, 6193343, 6023155, -805843, 6313602, -2451353, -6616934,
--3064996, 8722542, -9058623, 2142652, 358630, 7860327, 14968498, -12682502, 839666, 13750875,
-38118, 12640626, 1977833, 5951751, -1317481, -303869, 3544959, -17717276, 2120640, 291521,
--7047505, 5625871, 3292629, 14142790, 6914898, -555661, 25652230, 7121056, -13176960, 4347044,
-1480690, 9695352, -5601174, 2541547, 7643431, 1447404, 4682051, -458488, -14548665, -14083735,
-68183, -4139275, 12027519, -19405736, 26108032, 840740, 14419816, 17716204, 3732327, -3302830,
--3798899, -6605660, -11205570, 557809, 1542967, -24159728, -1645509, 8287677, 1437740, -9062381,
--22397718, 12348, 2673080, -3932580, -824097, -6621229, 3615826, -5521718, 11727945, 4070019,
--6744710, -8657043, -14609868, 11034845, -4527433, 714575, 14615774, 19767586, 12304008, -1897302,
-1278290, -13653701, -5552319, -5534602, 3929358, -19356880, 5338645, 5188321, 1425392, -9997073,
-9863392, 14718316, -2018098, -348966, 2120640, -8683887, -8662949, 5135707, 4029216, 11106785,
--11831024, 13271986, -6523519, 7278896, -10848551, -9078487, -3919158, -363998, -717796, 4817880,
--1778653, -19972672, -14212584, -4227859, 1324997, -19974282, 1143535, 9931038, -4340602, -2208150,
-4079145, 8580808, -16404628, 9266929, -1745367, -2202245, 1504849, 7888245, 10961293, -9349607,
--2552284, -4121558, 21521008, 301721, -4635881, 16683800, -3917010, -7110319, -2039573, -1789928,
-20756504, 23750632, -3341485, 4862440, 5895380, -3309809, -11609833, 5357435, 22085258, 16757889,
-14326400, -5543192, 6081674, 11710765, -15772731, -11851962, 13349295, -7209640, -7842074, -810675,
-16736951, -2851322, 15381888, 723702, 13771276, -8706972, 19008988, 5542656, -6245956, -10158135,
-3240553, -14244259, 1380832, -16848620, -5931887, -6274947, 9129490, -9813463, 15230491, -19428284,
--33320356, 20218558, 8843875, -4439923, -227096, 22327924, 10240276, 1407139, -6426345, 4511327,
--3146601, -119185, -15311558, -15358266, 8218957, -5381057, 4211216, 27904940, -8117488, 5840619,
--19247896, 21704618, -8243116, -9591199, -5763846, -2426120, 7800735, -16699907, 13581760, -24655796,
--18303004, -17758616, 24958592, 886911, 10767483, 6408628, -21815750, -19120120, 12991202, -34151432,
-10107669, 10182831, -2068564, -13578002, -12370580, 21318608, -11303280, -1489280, -3418257, -11027865,
-16376710, 5166846, 14847702, 8528731, 10318122, -3204583, 16678432, -1516124, -10522670, -12677133,
--2659659, 7136088, -9330280, 12770548, 8502962, -9643812, -34289944, -2918967, -2498597, -870805,
-25520696, 554588, -19299436, -11705396, -11615202, 10307385, -7128572, -16427176, -17806934, -11415486,
--8360691, -40840844, 1566053, 5055714, 14045080, -21360482, 7672959, -17666812, -13655312, -5000416,
-17889612, 4277788, 16745541, 29791504, 10004589, 6709813, 20621212, -15416248, -688269, -7521562,
--6924024, 15185394, 16068010, 22276384, 13053479, 13198435, -9430138, -21248276, 7656853, 1136019,
-971200, 2308545, 4566087, 6301254, 11350525, 4735202, 9767829, 6127308, 11311333, 27259084,
-2223719, -32001264, -10925323, 10050760, 1686312, -5406827, -20203526, -12611098, 5887864, 19082540,
-8121783, -15076946, 10290205, 8742943, -17540646, -1890859, -22007950, 20045686, -8376260, -10453950,
-18302466, -14641007, 5955509, 37101000, -2761664, 7585449, 11812234, 1816771, 6548752, -18764712,
-6458020, 5632313, 4794794, 48416092, 32874754, -1363115, -14679124, -8537321, 16111496, 19161996,
--17011828, -8018704, -23318988, 42036456, 12601971, 7153268, -4616553, -1606318, -6978248, -2007360,
-30437896, -4527433, 9816685, 31792958, 7087770, -4320737, -18524194, 4738960, 11447162, -37451040,
-12979928, 11705396, 30207042, -5838471, -27050778, -3822521, 18787798, 10542534, -30301532, -40023728,
-4712653, 27239220, 11107859, 16651588, -9337259, 12855911, 2268280, 347355, -14427332, -5210869,
--22530862, 33621540, 11395622, -27347130, -18619220, 12177843, 1417876, 6674379, -8058433, 16699370,
-9917079, 11451993, 22129818, 19386946, 4123169, 18931142, -9942312, 10786810, 33286, 13123273,
-6189048, -3406983, -7960722, 8949101, -11868068, 31119186, -8406325, -6231461, 6439767, 15186467,
-15317464, -10756209, 26977764, 26388816, 15485505, 6038724, 2105071, -9107478, -20560008, -35373888,
--5928129, 11798275, -1102733, 14512694, 16067473, 17002702, 5578626, 9088151, 57081188, -29306172,
--13434658, 4782446, 9824201, -2507724, -47048144, 9460739, -9830106, 5577552, 3140695, 18915572,
--5295158, -9130027, 3176128, 14959371, 14666240, -8393977, -11439645, 3160559, -11021960, -34579320,
-35290136, -10534481, 9685688, 3153580, 29504814, 23658290, 14588393, -14374182, -2750927, 20279224,
-10406169, 23890756, 63588600, -4108673, -25742960, -6729677, 18614388, -3016678, -30394410, 45394584,
-22990960, -16246788, -25631828, -3277597, 4880694, -8152922, 17324824, 15134391, 16924856, 33742872,
-4798016, 9304510, 5111548, -13520020, -32709934, 18226230, -22678502, -16629040, 23765128, 12594455,
-12764643, 6818798, 3697967, -2097555, -32849520, -28522878, -1217623, 15709917, -22579716, 18540836,
--11282342, -24406152, 4959077, 18894634, -6402723, 2180233, 17202418, 17798344, 17210470, -1096290,
--16694001, 8438000, 44137768, 1451699, 13475460, 21461952, -9206262, -22352620, 18043158, 14874545,
-381715, -11799349, -17552994, -30882426, 5491116, 19156628, 25970594, -21990770, -23691576, 29122026,
-12890271, -944356, -3073586, -11791833, 5350993, -5356898, -12726525, 13543106, 15968688, 11492796,
-832150, -2040646, -9329206, 2290291, 6497212, 4487167, -10561861, -35747548, 7703024, -7790534,
--11243688, 2471217, -5103495, 3525095, -36487896, 17324288, 12670154, -25373594, 17617418, 24710020,
-19596326, -4766340, 2764348, -2534568, 12489765, -2234994, -786516, 65187940, -20104206, 6202470,
--18089328, -9112847, 35478040, 14284524, 11458973, 24320252, -30658550, -23374286, 35427576, -21906480,
-17411260, 24444806, 819265, 7653632, 7225209, 43139188, -15887084, -13985487, -40177272, -6045167,
--19000398, 15326591, -27344446, 43139724, 16375637, 23687282, -9824201, 27180700, -14879914, 14624901,
-45820320, 23016730, 17682918, -24770688, 7686381, 25735980, -20985210, 36207648, 13347148, 19601156,
-17641578, -10486163, 18249852, 15730318, 6957847, 35846332, 27348742, -1589675, -60026464, -6673843,
-28638306, 27543626, 28390270, 7067906, 16052440, 1733556, 8305930, -1677722, -18300856, 39071856,
--580894, 37208912, 17050484, 26889180, -36908264, 25492778, 12969191, 11534135, -9445707, 8889509,
--6649146, 8435853, 37392524, 14791867, 48671108, 2319282, 10901164, 28160490, -5573257, 44263932,
-22028888, 3574487, -29419990, -18857590, 16222091, 1306744, -4971425, 267899, -5142150, 2609193,
--21635898, 13252658, -23069344, -35424352, -12973486, -3634616, -11583527, -10989748, 28755880, -6369437,
-26512834, -29101624, 29703456, -1606855, -9347459, -27965606, -26849452, -11314018, -12250857, 20015622,
--34908420, -42974368, -46939160, -56132000, 23536958, 26354994, -2794413, -5204964, -1423782, -13876502,
-1916092, 6191196, -12989592, 37009732, 34104724, 22567906, 23970212, -23939074, 14083735, 744640,
-17008070, -7786776, -11049340, -35003448, 29341606, -31634044, -39414916, -10314901, -9589051, 40239012,
--23985244, 5160403, -22778896, -6135898, 37347424, 7054484, 10559177, 19217832, 34066068, 2109903,
--5931350, -43940736, -10053982, -3507378, -3244311, 24124832, 10888816, 81883016, 2010045, -2309082,
--29235306, -1877975, 30333744, 30203820, -4878009, -13857712, -42600708, 10735271, 23344758, -12282533,
--31659814, -11442330, 23045720, -6346888, 16468515, -56693032, -34514356, -44128640, -13878650, 23242752,
-9969693, -4099010, -13769128, -5874442, 42324220, 3927211, 2782065, 73017128, 9503689, -49471580,
--37504728, 52015812, 46313168, 5463736, -32229434, -40432824, -22260816, 11318849, 45070848, 40715752,
-27894202, -12736189, 7460895, -12793634, 16349330, 35109748, 52262772, 57259432, -4402342, -26212186,
--43553652, -65808024, 1662152, 39537320, 151162992, -16508244, -5609764, -68970736, -27442156, 9021042,
-19459960, 91528976, 66160212, 42449848, -42776800, -22517976, -41776072, 315143, 76350560, 71518720,
-85745800, -20171850, -80246096, -57047904, -81090592, 23670102, 78267728, 69878048, 125590752, -56281788,
--69981120, -60265908, -8722542, 57330836, 74590160, 104458976, 47715476, -19024558, -38241852, 11597485,
--1800665, 30933428, 82536920, -16434692, 51304460, -17312476, -46792596, -5764920, -35693324, 48163228,
--10327786, 56705916, -51021528, 969052, -21781390, -53517440, 40293772, -28040768, 37439228, -28754270,
--10081362, -2539936, 19899658, 4161287, -19419694, -11112691, 384936, 28964186, -25745644, 33171644,
-25418690, -18584860, 5689758, -23329188, -21447456, 38417944, -36762236, -19987704, 27599996, 58779848,
-1393717, 7238631, -3553012, -26967026, -5295695, 23260470, -6339372, -40441412, 7729331, -9849434,
--4392141, 10477573, -33478196, 16542067, 2348810, 10717017, 30184494, -64276332, -43574592, -17297444,
-1376000, 62172872, -31229244, 20969640, 53570592, -30310122, -13287555, -4544613, 30676268, 36902360,
--18475876, 8177618, -4546760, 12079059, 65865472, -27304718, -66442608, 10181757, 35908612, 2891587,
--33784748, 16934520, 13060459, 15062987, -10817412, -8177618, -75790064, -26295938, 27710056, 39275328,
-31945966, -39401492, 8098161, -104110544, -69021736, -58972048, -12336757, 43967044, 26890790, -5356361,
--25677462, -30594126, 9836012, -19954418, -5262946, 32909114, 6260452, -1483911, -39346196, -20369956,
--7263327, -20065014, 7274601, -6110665, 15704548, -8189429, -3900904, -9440338, -4888747, -7689065,
--24177444, -18501108, -38058244, -27218818, 13655849, 30518964, 32650342, 17341468, 27911918, -7801271,
-23117662, -9258876, -16416976, -45675904, -5720360, -26501558, 14173392, 4164508, 49884436, -46491412,
-11210938, 27553826, -21123722, -25950730, -17999134, -13518410, -15797963, 1274532, 33516852, 22097070,
--15421080, -3978750, 22022982, -34401616, -41392212, 12144020, -47971564, -33922188, -36197984, 30782030,
--1711545, -78597904, -120146344, -148846384, -116412408, -176777632, -25374130, -59462212, 27621472, 46845208,
-140762192, 86220928, 145448528, 149030000, 199630624, 148996704, 149768736, 113708720, 11104101, -22142704,
--49377092, -25877714, -108869368, -70201240, -56553444, -55512988, -57426396, -54674932, -55624660, -57633092,
--67127656, -45543832, -79168592, -60451664, -55098524, -18348638, -66133908, -13232257, 30783104, -44066900,
--21145734, 22911504, 15624554, -36007396, 40927816, 56508348, 63897304, 90801512, 86407760, 1923609,
-52009368, 89183384, 116437640, 98599568, 181735632, 177670448, 150125216, 129126048, 153055984, 83625160,
-120544696, 155788128, 111449568, 79443472, 119329224, 45448808, 34274912, 80129056, 65934192, 56032144,
-325881, 42689292, -37689412, -5543729, 2031520, -71586904, -172790832, -139353968, -97657896, 0,
-0, 0, 0, },
+-1034550, -2892124, -6316287, 275415, -507880, -4354560, 922344, -187905, -1166084, -1078574,
+4333085, 4241280, 1076426, 6105296, -4664872, 4355634, 2791192, -4049617, 3409130, -7570417,
+-1985886, -12191265, -1796907, 2594697, -2512556, 1838246, 1763084, 657667, -362925, -1176284,
+-2354179, -614717, 2034204, 2259690, 260382, 2935073, -1170916, -2332167, 2440615, 2957622,
+1954210, -4855461, -4516158, -3167539, -2853469, -3075734, 3448322, 2338610, -2646774, -4559645,
+-7634841, -834834, -2736431, 1909650, 3505230, 1001264, -1701344, 129386, 3291019, -2840584,
+3651259, 152471, -479426, -9095667, -1916092, -3704946, -955630, 4604742, -626528, -2391760,
+-380105, 3975529, -2802466, 251256, 332860, -4474819, 7359964, 2530810, -1413581, 1825898,
+2321967, 4395899, 7366943, -3622268, 2402497, -3092913, -2431488, 1440962, -52613, 569620,
+-5318244, -2599529, 1778117, 3651796, -567473, 3070365, -5701569, -5039071, 3066070, 1962800,
+785979, 2240899, -2000381, 3986267, 4431870, 4335233, 6201396, -3529390, -2962454, 180389,
+714575, -6068252, -465467, -566399, 1569274, 549219, -3855270, -972273, 5044976, -2785286,
+919123, -3189013, 1421097, 1540283, 941135, -4730907, 3696893, 297963, 769873, -695248,
+-1620276, -1995012, -3272228, 6742562, -1269700, -1310502, -1588601, 2957085, 649077, -6493991,
+1591822, -3007551, -4434017, 2525978, -2724083, -7039989, 2817499, 941672, 406411, -6460168,
+-7568269, -2878165, 4576288, 744640, 605590, 4093641, -5539434, 1191317, -4582193, -5873905,
+1995012, 5941551, -3299072, 2936147, -2422362, -1067299, 1394254, 504122, -2588255, -8192650,
+-8105140, 363462, -1867774, 135291, 4616016, 909459, 5597953, 7432441, -3556770, 6445136,
+1033477, 6535867, 656593, 7715372, 1215476, -4009352, -896038, 616328, 3686156, -736587,
+-864899, 932545, 2865817, -2941516, 80531, -786516, 2571612, 2973191, 430570, -2678986,
+77309, -354335, 1926830, 3095598, 5556077, -1692217, 3709778, -1403381, -4291746, -3966939,
+-2470143, 2710124, 3118146, -1447404, 4865661, 234613, 1966558, 301185, 5856725, 3712999,
+4398047, 1663763, 2711198, 1444183, 2511482, 4421669, -771484, -461709, 5981279, 6169184,
+-6897718, -4758824, -3941706, -5662915, 1414655, 1984812, -4572530, 668941, 8573292, -6774237,
+4224637, 7275675, 7286949, -5000953, -1514513, 3373697, 481573, 788663, -3609920, 1477469,
+-11687143, 8617315, 13896367, 2101850, 4548371, -2698850, -387621, 7076496, -4126390, -9475772,
+-1685238, -301185, -198642, -7758859, 378494, 1359357, -8843875, -4554813, 3886409, 883690,
+-3228205, -1303523, 2883534, -4750771, 8878771, 2279017, 307627, -6320045, -668941, 2541010,
+-2048699, -390305, -2139431, -719407, -926102, -5252208, 234613, -5124970, 6709813, -7200513,
+-4372814, -2168959, -7831336, 4495757, -4211216, -11652246, -2000381, -5509906, 1329292, 4132296,
+-5095442, -286689, -3520800, 2584497, 221728, -4445828, 177704, 1679869, -4780836, 3515431,
+148176, -721555, 4143570, -3371013, -12477954, -2233920, -476741, 5844377, 8226473, 7261716,
+3690451, -2505040, -538482, -7641821, -6354941, 2542621, 9321690, -2344515, 9545565, 6081674,
+-5342403, 3271691, -529355, 3404299, -6002754, -4082367, 1401233, 4782446, -222265, 2921652,
+4184372, -7003481, -1074279, -3143916, -9408663, 6242735, 1345935, 2360085, 4621385, 7897371,
+3091840, 494458, 6476811, -1303523, -2714419, 6363531, -2891587, 10667625, 5282810, 4283693,
+636729, -2979097, -3277060, 5229660, 7474854, -5208722, 1710471, 6733972, -749472, 2172717,
+15315317, -4532801, -1326608, 2825015, -6977175, -390842, 1815697, -3434900, 4105452, -2530273,
+2696703, 7291244, -2187749, -134755, 1269700, -2810519, -17898740, -1023813, 4832, -3189013,
+-5296769, -1374926, 10188736, -6465000, -10059350, 4420595, -3886946, 2011118, 2185602, 7124277,
+-4178466, -809064, 1602560, 6688338, -2574833, -3448859, -925565, -2873333, 4781373, 8875013,
+4414690, 691490, -447213, -4107063, -62277, 13662828, 2496987, -950798, 15228880, -216896,
+11358041, -2677912, 245887, 8311836, 2442226, 2630131, 2826625, 2096481, 4272956, 3221226,
+-7067906, 14092325, 8120173, 11746199, 7335804, 5687611, -7270306, 4121021, 3666292, 1506460,
+-4523675, 13317083, 7356742, 12175695, 1835025, -1123671, -2941516, 9365176, -4253092, -7221988,
+9637370, 4463008, -5885179, -1701344, -41339, -923418, 239444, 693100, 284005, -831076,
+-4472672, -484794, -11839077, -4545686, -13269301, -8990440, 1127429, -8500277, -6728603, 1038308,
+-1411434, 9223979, -5870147, 10208064, 12315282, 1518808, -10297721, -7021198, 11049340, -5283347,
+-2940442, 6457484, -7986492, -13958107, 5758478, 12641699, -6308770, 3484829, -214212, 5723581,
+-14883672, 3333968, -5990943, 3977140, 277562, -5851356, 10343892, 5153961, 4334159, 14246943,
+6379100, 3296924, 7752953, 2025614, 2441689, 4420595, 1207423, 1122597, 2010045, 2399276,
+15596637, 9383967, -201327, 13760538, 8087424, 10325638, 15037217, -7192997, -6739878, 13981192,
+-4911832, 143345, -8213588, -2665027, 4437775, 7816841, -6385543, 67109, 1634235, -870268,
+3260954, -5473399, -1672353, -6335614, 13812615, -3255585, 6743636, 4571456, -4837207, 1583769,
+730144, 1566589, -6951405, 9089761, 5306432, 12341589, 2428267, -1669669, -13881871, -7446937,
+-5174899, 3546032, -7186554, -12069932, -3309272, 3069828, 1392643, -13489419, 10980084, 807991,
+-764504, -11507828, -6542309, 2658048, 1469416, -12796318, -3906810, 4592394, 571231, 1212255,
+6585796, 7546795, 4511327, -2065879, 3898220, 1085016, -4521527, -9547712, 16295106, -4210142,
+-7871602, 9664, 4067871, 5090073, 12178917, 1817845, -199179, -4765266, -125091, 6516539,
+-854162, 8173323, 16114180, 1083406, -3537443, 185757, 13824426, 17032766, -8756365, 2044404,
+2284923, 8964134, 4766877, 1170916, 2614561, -7472706, 3926674, 3835406, 3925063, -3750580,
+-570694, 2481954, 3758097, -4016331, 6907918, -5196374, -9822053, 7665443, -312996, -2021319,
+3258270, 6591164, -16814796, 1556389, 13849659, -1059783, 24486146, 11919071, -6746857, -4887136,
+-1674500, -6440304, -2494839, 11154567, -3526705, -3038689, 11301133, 9153649, 3471944, 5442798,
+10619844, 7078643, 8111046, -5037460, -3121368, 9950902, -1223529, 9047349, 710817, -9831180,
+-5937256, 3220689, 8801462, -10736881, 1393717, -5530844, 3840775, -6384469, 10224707, 9903121,
+-8499740, -551903, 3467649, 132607, -11715597, -5172215, 2956011, 8726837, 14481019, 5078262,
+-9241159, -1785096, -1560147, -732829, 9517111, 1829119, 7853885, -9855876, 5667210, 1211718,
+-7116224, 10250476, 5272073, -715112, -953483, 2362769, 942208, -7507603, 11593190, -13121662,
+-1660542, -3821984, 14499810, -5706401, 12025908, -3040837, 11250130, 15165530, -5998459, 5181878,
+-3250217, 8902393, -2706366, 7519951, 6193343, 6023155, -805843, 6313602, -2451353, -6616934,
+-3064996, 8722542, -9058623, 2142652, 358630, 7860327, 14968498, -12682502, 839666, 13750875,
+38118, 12640626, 1977833, 5951751, -1317481, -303869, 3544959, -17717276, 2120640, 291521,
+-7047505, 5625871, 3292629, 14142790, 6914898, -555661, 25652230, 7121056, -13176960, 4347044,
+1480690, 9695352, -5601174, 2541547, 7643431, 1447404, 4682051, -458488, -14548665, -14083735,
+68183, -4139275, 12027519, -19405736, 26108032, 840740, 14419816, 17716204, 3732327, -3302830,
+-3798899, -6605660, -11205570, 557809, 1542967, -24159728, -1645509, 8287677, 1437740, -9062381,
+-22397718, 12348, 2673080, -3932580, -824097, -6621229, 3615826, -5521718, 11727945, 4070019,
+-6744710, -8657043, -14609868, 11034845, -4527433, 714575, 14615774, 19767586, 12304008, -1897302,
+1278290, -13653701, -5552319, -5534602, 3929358, -19356880, 5338645, 5188321, 1425392, -9997073,
+9863392, 14718316, -2018098, -348966, 2120640, -8683887, -8662949, 5135707, 4029216, 11106785,
+-11831024, 13271986, -6523519, 7278896, -10848551, -9078487, -3919158, -363998, -717796, 4817880,
+-1778653, -19972672, -14212584, -4227859, 1324997, -19974282, 1143535, 9931038, -4340602, -2208150,
+4079145, 8580808, -16404628, 9266929, -1745367, -2202245, 1504849, 7888245, 10961293, -9349607,
+-2552284, -4121558, 21521008, 301721, -4635881, 16683800, -3917010, -7110319, -2039573, -1789928,
+20756504, 23750632, -3341485, 4862440, 5895380, -3309809, -11609833, 5357435, 22085258, 16757889,
+14326400, -5543192, 6081674, 11710765, -15772731, -11851962, 13349295, -7209640, -7842074, -810675,
+16736951, -2851322, 15381888, 723702, 13771276, -8706972, 19008988, 5542656, -6245956, -10158135,
+3240553, -14244259, 1380832, -16848620, -5931887, -6274947, 9129490, -9813463, 15230491, -19428284,
+-33320356, 20218558, 8843875, -4439923, -227096, 22327924, 10240276, 1407139, -6426345, 4511327,
+-3146601, -119185, -15311558, -15358266, 8218957, -5381057, 4211216, 27904940, -8117488, 5840619,
+-19247896, 21704618, -8243116, -9591199, -5763846, -2426120, 7800735, -16699907, 13581760, -24655796,
+-18303004, -17758616, 24958592, 886911, 10767483, 6408628, -21815750, -19120120, 12991202, -34151432,
+10107669, 10182831, -2068564, -13578002, -12370580, 21318608, -11303280, -1489280, -3418257, -11027865,
+16376710, 5166846, 14847702, 8528731, 10318122, -3204583, 16678432, -1516124, -10522670, -12677133,
+-2659659, 7136088, -9330280, 12770548, 8502962, -9643812, -34289944, -2918967, -2498597, -870805,
+25520696, 554588, -19299436, -11705396, -11615202, 10307385, -7128572, -16427176, -17806934, -11415486,
+-8360691, -40840844, 1566053, 5055714, 14045080, -21360482, 7672959, -17666812, -13655312, -5000416,
+17889612, 4277788, 16745541, 29791504, 10004589, 6709813, 20621212, -15416248, -688269, -7521562,
+-6924024, 15185394, 16068010, 22276384, 13053479, 13198435, -9430138, -21248276, 7656853, 1136019,
+971200, 2308545, 4566087, 6301254, 11350525, 4735202, 9767829, 6127308, 11311333, 27259084,
+2223719, -32001264, -10925323, 10050760, 1686312, -5406827, -20203526, -12611098, 5887864, 19082540,
+8121783, -15076946, 10290205, 8742943, -17540646, -1890859, -22007950, 20045686, -8376260, -10453950,
+18302466, -14641007, 5955509, 37101000, -2761664, 7585449, 11812234, 1816771, 6548752, -18764712,
+6458020, 5632313, 4794794, 48416092, 32874754, -1363115, -14679124, -8537321, 16111496, 19161996,
+-17011828, -8018704, -23318988, 42036456, 12601971, 7153268, -4616553, -1606318, -6978248, -2007360,
+30437896, -4527433, 9816685, 31792958, 7087770, -4320737, -18524194, 4738960, 11447162, -37451040,
+12979928, 11705396, 30207042, -5838471, -27050778, -3822521, 18787798, 10542534, -30301532, -40023728,
+4712653, 27239220, 11107859, 16651588, -9337259, 12855911, 2268280, 347355, -14427332, -5210869,
+-22530862, 33621540, 11395622, -27347130, -18619220, 12177843, 1417876, 6674379, -8058433, 16699370,
+9917079, 11451993, 22129818, 19386946, 4123169, 18931142, -9942312, 10786810, 33286, 13123273,
+6189048, -3406983, -7960722, 8949101, -11868068, 31119186, -8406325, -6231461, 6439767, 15186467,
+15317464, -10756209, 26977764, 26388816, 15485505, 6038724, 2105071, -9107478, -20560008, -35373888,
+-5928129, 11798275, -1102733, 14512694, 16067473, 17002702, 5578626, 9088151, 57081188, -29306172,
+-13434658, 4782446, 9824201, -2507724, -47048144, 9460739, -9830106, 5577552, 3140695, 18915572,
+-5295158, -9130027, 3176128, 14959371, 14666240, -8393977, -11439645, 3160559, -11021960, -34579320,
+35290136, -10534481, 9685688, 3153580, 29504814, 23658290, 14588393, -14374182, -2750927, 20279224,
+10406169, 23890756, 63588600, -4108673, -25742960, -6729677, 18614388, -3016678, -30394410, 45394584,
+22990960, -16246788, -25631828, -3277597, 4880694, -8152922, 17324824, 15134391, 16924856, 33742872,
+4798016, 9304510, 5111548, -13520020, -32709934, 18226230, -22678502, -16629040, 23765128, 12594455,
+12764643, 6818798, 3697967, -2097555, -32849520, -28522878, -1217623, 15709917, -22579716, 18540836,
+-11282342, -24406152, 4959077, 18894634, -6402723, 2180233, 17202418, 17798344, 17210470, -1096290,
+-16694001, 8438000, 44137768, 1451699, 13475460, 21461952, -9206262, -22352620, 18043158, 14874545,
+381715, -11799349, -17552994, -30882426, 5491116, 19156628, 25970594, -21990770, -23691576, 29122026,
+12890271, -944356, -3073586, -11791833, 5350993, -5356898, -12726525, 13543106, 15968688, 11492796,
+832150, -2040646, -9329206, 2290291, 6497212, 4487167, -10561861, -35747548, 7703024, -7790534,
+-11243688, 2471217, -5103495, 3525095, -36487896, 17324288, 12670154, -25373594, 17617418, 24710020,
+19596326, -4766340, 2764348, -2534568, 12489765, -2234994, -786516, 65187940, -20104206, 6202470,
+-18089328, -9112847, 35478040, 14284524, 11458973, 24320252, -30658550, -23374286, 35427576, -21906480,
+17411260, 24444806, 819265, 7653632, 7225209, 43139188, -15887084, -13985487, -40177272, -6045167,
+-19000398, 15326591, -27344446, 43139724, 16375637, 23687282, -9824201, 27180700, -14879914, 14624901,
+45820320, 23016730, 17682918, -24770688, 7686381, 25735980, -20985210, 36207648, 13347148, 19601156,
+17641578, -10486163, 18249852, 15730318, 6957847, 35846332, 27348742, -1589675, -60026464, -6673843,
+28638306, 27543626, 28390270, 7067906, 16052440, 1733556, 8305930, -1677722, -18300856, 39071856,
+-580894, 37208912, 17050484, 26889180, -36908264, 25492778, 12969191, 11534135, -9445707, 8889509,
+-6649146, 8435853, 37392524, 14791867, 48671108, 2319282, 10901164, 28160490, -5573257, 44263932,
+22028888, 3574487, -29419990, -18857590, 16222091, 1306744, -4971425, 267899, -5142150, 2609193,
+-21635898, 13252658, -23069344, -35424352, -12973486, -3634616, -11583527, -10989748, 28755880, -6369437,
+26512834, -29101624, 29703456, -1606855, -9347459, -27965606, -26849452, -11314018, -12250857, 20015622,
+-34908420, -42974368, -46939160, -56132000, 23536958, 26354994, -2794413, -5204964, -1423782, -13876502,
+1916092, 6191196, -12989592, 37009732, 34104724, 22567906, 23970212, -23939074, 14083735, 744640,
+17008070, -7786776, -11049340, -35003448, 29341606, -31634044, -39414916, -10314901, -9589051, 40239012,
+-23985244, 5160403, -22778896, -6135898, 37347424, 7054484, 10559177, 19217832, 34066068, 2109903,
+-5931350, -43940736, -10053982, -3507378, -3244311, 24124832, 10888816, 81883016, 2010045, -2309082,
+-29235306, -1877975, 30333744, 30203820, -4878009, -13857712, -42600708, 10735271, 23344758, -12282533,
+-31659814, -11442330, 23045720, -6346888, 16468515, -56693032, -34514356, -44128640, -13878650, 23242752,
+9969693, -4099010, -13769128, -5874442, 42324220, 3927211, 2782065, 73017128, 9503689, -49471580,
+-37504728, 52015812, 46313168, 5463736, -32229434, -40432824, -22260816, 11318849, 45070848, 40715752,
+27894202, -12736189, 7460895, -12793634, 16349330, 35109748, 52262772, 57259432, -4402342, -26212186,
+-43553652, -65808024, 1662152, 39537320, 151162992, -16508244, -5609764, -68970736, -27442156, 9021042,
+19459960, 91528976, 66160212, 42449848, -42776800, -22517976, -41776072, 315143, 76350560, 71518720,
+85745800, -20171850, -80246096, -57047904, -81090592, 23670102, 78267728, 69878048, 125590752, -56281788,
+-69981120, -60265908, -8722542, 57330836, 74590160, 104458976, 47715476, -19024558, -38241852, 11597485,
+-1800665, 30933428, 82536920, -16434692, 51304460, -17312476, -46792596, -5764920, -35693324, 48163228,
+-10327786, 56705916, -51021528, 969052, -21781390, -53517440, 40293772, -28040768, 37439228, -28754270,
+-10081362, -2539936, 19899658, 4161287, -19419694, -11112691, 384936, 28964186, -25745644, 33171644,
+25418690, -18584860, 5689758, -23329188, -21447456, 38417944, -36762236, -19987704, 27599996, 58779848,
+1393717, 7238631, -3553012, -26967026, -5295695, 23260470, -6339372, -40441412, 7729331, -9849434,
+-4392141, 10477573, -33478196, 16542067, 2348810, 10717017, 30184494, -64276332, -43574592, -17297444,
+1376000, 62172872, -31229244, 20969640, 53570592, -30310122, -13287555, -4544613, 30676268, 36902360,
+-18475876, 8177618, -4546760, 12079059, 65865472, -27304718, -66442608, 10181757, 35908612, 2891587,
+-33784748, 16934520, 13060459, 15062987, -10817412, -8177618, -75790064, -26295938, 27710056, 39275328,
+31945966, -39401492, 8098161, -104110544, -69021736, -58972048, -12336757, 43967044, 26890790, -5356361,
+-25677462, -30594126, 9836012, -19954418, -5262946, 32909114, 6260452, -1483911, -39346196, -20369956,
+-7263327, -20065014, 7274601, -6110665, 15704548, -8189429, -3900904, -9440338, -4888747, -7689065,
+-24177444, -18501108, -38058244, -27218818, 13655849, 30518964, 32650342, 17341468, 27911918, -7801271,
+23117662, -9258876, -16416976, -45675904, -5720360, -26501558, 14173392, 4164508, 49884436, -46491412,
+11210938, 27553826, -21123722, -25950730, -17999134, -13518410, -15797963, 1274532, 33516852, 22097070,
+-15421080, -3978750, 22022982, -34401616, -41392212, 12144020, -47971564, -33922188, -36197984, 30782030,
+-1711545, -78597904, -120146344, -148846384, -116412408, -176777632, -25374130, -59462212, 27621472, 46845208,
+140762192, 86220928, 145448528, 149030000, 199630624, 148996704, 149768736, 113708720, 11104101, -22142704,
+-49377092, -25877714, -108869368, -70201240, -56553444, -55512988, -57426396, -54674932, -55624660, -57633092,
+-67127656, -45543832, -79168592, -60451664, -55098524, -18348638, -66133908, -13232257, 30783104, -44066900,
+-21145734, 22911504, 15624554, -36007396, 40927816, 56508348, 63897304, 90801512, 86407760, 1923609,
+52009368, 89183384, 116437640, 98599568, 181735632, 177670448, 150125216, 129126048, 153055984, 83625160,
+120544696, 155788128, 111449568, 79443472, 119329224, 45448808, 34274912, 80129056, 65934192, 56032144,
+325881, 42689292, -37689412, -5543729, 2031520, -71586904, -172790832, -139353968, -97657896, 0,
+0, 0, 0, },
},
};
-const Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][1774] ={
+const Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774] ={
{
{
-2848100,
--4996121, -2501819, 178778, -1384590, 3234110, -3849365, -6403260, -5370320, 883690, 0,
--1796907, 2643016, -185757, 2986076, -4163434, -3251290, 912144, -12885, -562641, -3524558,
-877247, 576063, 872415, 3602941, 2280091, -505732, 1189706, 1094680, 1391569, -843961,
-188979, 4723927, 2952253, 1245541, -2436320, -1349157, -585726, -1560147, -1996086, 3809099,
-1480690, 1563368, -492311, 772020, 365072, 855772, 782758, 405338, 2534031, -2726767,
--1814087, -331249, -390842, -3704409, -1619203, -4740570, -2827162, 858457, 1508070, -1408212,
--3979824, -1078037, 1160178, -315680, 2673617, 134755, -540092, 7708393, -3829500, -2741800,
--691490, 1606318, 1019518, -4606353, 1345399, -206158, 5018670, 2812667, -3750043, 5525476,
--3332895, -854699, -143881, -1605244, -2269353, -3904662, 759136, 6459631, 412317, 1331977,
-2425046, 855772, -2447058, -477815, -1549946, -1117228, 3553012, 1251446, 261993, -1079111,
-461709, 54761, -1678259, -2145336, 3428458, 3036542, 280247, -568009, 4009889, -5709086,
--2456185, 2738042, -2706903, 5315559, 266288, 3817152, 203474, 635655, 2066416, -1820529,
--1118302, 153545, -330176, -1367410, -1553168, 2479807, -396748, -5230197, 4833986, -483184,
-573378, -4372814, 1885491, -1795833, 1498407, 394063, -489089, -1471563, -523449, -2397129,
-2392297, -4905927, -971736, 4092567, -3421478, 1729798, 5208185, 2059437, 54224, -2459943,
--324807, 1869385, 10871099, 2074469, -1596654, 3390340, -1724429, -1323924, -1829119, -674310,
--4189741, 5841693, 3265786, 2533494, 2603287, 2587718, -2797098, -3616363, 4780836, -1044751,
--3912178, -7224672, 1059246, -2145336, 2136746, 33286, -751082, -1636383, 2128693, -2702608,
--1505386, 3539053, 6623914, 1728188, 2918430, 541703, 3235184, -760746, 3444564, 2228551,
-215822, 1960653, -23085, 518617, -26307, 4871567, 826244, 1209033, -1354525, 629213,
--597537, -809064, 3764539, 4479651, -1928440, -1833414, 641024, 4088272, -7202660, -526134,
--2195265, -5286031, -2419677, 513249, -2542084, 2053531, 1447941, -88047, -3537443, 1180579,
--1125818, -3282429, 3308736, -5625871, -3074123, -6050535, -3468186, -1366337, -70867, 2916283,
-1844152, -7045894, -235686, 598611, 5129265, -1815161, -7864085, 6265821, -7407745, 25233,
--3007551, -3094524, -7875360, -5893232, -2822331, -2480344, 3818763, 761283, -5038534, 377420,
--2499134, -354872, 228707, 1846299, 883690, -2782602, 818191, 177167, 1772211, -2091649,
--725850, -917512, -2254858, -4514548, 5995775, 2149631, 1206349, -1193464, 5186710, 3650185,
--4194573, 862215, 920734, -1341104, -2232846, 154619, -4323959, 609885, -412854, -4420058,
-5374078, -416612, 149787, 5567888, -4743255, 4250944, 2325188, -1267552, -3339874, 555125,
-31139, -4753455, -2828236, -622770, -860067, -2561948, -5035849, -502511, 1946694, 1827509,
--884763, 1515050, 1598265, -2189360, 121870, -4880157, -12334609, -11577084, 4437775, 7732552,
-4580583, -10443750, 7369627, -2514703, -1052267, 668404, -4959614, -3683471, 8679055, -133681,
--145492, 648003, -351650, 2842195, -4530117, 2617783, -2484102, 2332167, 3849365, -2729989,
--915365, 2262911, -876173, 4118337, -1528472, 1733019, 129923, -530965, 101469, -3694746,
--5245229, 4573604, 329639, -1044751, -262530, -4819490, -6132140, -328565, -232465, 2844342,
--5766531, -4799626, -1373853, -9808095, 3307125, -987843, 1510755, -987843, -2787971, 1196148,
-11780558, 6528887, 3016678, -4004520, 4250407, -404264, -6957847, -362925, -7290707, 5181341,
-4832, 199179, -4600984, -478352, 2889439, 826244, -298500, -176631, -797790, 3355980,
-1412507, -370978, 947040, -17770428, -1202591, -4377109, -475131, -3080029, -9860171, -556735,
--2545842, -4251481, -9232032, -1281511, 6804839, -4774930, 4527433, -893890, 6323266, -2206540,
-5166309, -1764158, -4818954, -1439888, 683437, -2281165, -4317516, -3686156, -4241817, 51003,
--3857954, 1374926, 621697, 321586, 2043331, -3086471, -3890167, 5759551, -386010, 1670205,
-204011, -4621385, -2758980, -3267396, 296890, -2346126, 4198331, 4110821, 816581, -5606006,
--1704028, 10313290, 2691871, -4333622, -3343095, -2164664, -3700114, -1956895, 8165270, 4983236,
--5734855, 3686156, 4851703, 7150047, -1712081, 3024194, -341987, 278636, -2757906, -5569499,
--985695, 4637491, 504122, 8754217, 5968394, 920734, 1976222, 7722351, -5567352, 22699440,
-15058692, -4584341, -975494, 133144, -752156, -2520072, 3007014, 7788923, 6369437, 3432216,
--12031277, -5241471, 1336272, 703838, 4836670, -8922258, 1588601, 12090870, 7915625, -1412507,
-2658048, -1099512, -4344360, -5629092, 37581, -4817343, -3063386, 1314260, 3452080, -3576634,
--6811818, -3191161, 776315, 5837398, 7964480, -1722282, -9177808, -2016487, -3543885, -9002251,
--950262, -456340, -4679367, 1253057, 1915019, 4933844, -7896834, 2777770, 3302293, 562104,
--7710540, -5616207, 1860258, -8053, 1243930, -1131187, -1356673, -630823, -4671851, 1538672,
-1319629, -3233574, 4156455, 5370857, 7152195, 1358820, -381715, 6925098, 11244224, 1209033,
-404801, 1166621, 5692443, -450435, 2150168, 9822590, 11489574, 656056, 2062658, 3273839,
-5308580, -1867237, 3213709, -2733747, -2421825, -9453760, 3449396, 7028714, -6535330, 5401995,
--2993055, -8278550, 8447127, 5603322, -2099702, 5648419, 9954660, 7612293, -5932961, -2756295,
-4736812, 1915555, -1746978, 4296578, 3163780, 5654325, -234613, -2185602, -5262409, -8116415,
--877784, -6726456, 228707, -2104534, 3213173, -5359583, -13239774, 2862596, -3786014, 5879274,
-787053, 496069, -4179540, -7408282, -6936372, -609349, -1366873, -5651640, 7129109, 10097468,
-9811853, 4138738, -8369281, -854162, 9210557, 722628, -2570538, 4363150, -2181307, -2904472,
--10419054, 4780299, 1821066, 13230110, 5399848, -10057740, 2124398, 2689187, -2065879, -1182190,
-2226941, -3447785, -4018479, -5763309, -2011118, -1219771, -10918881, 862215, 918586, 5607617,
--2378875, -4226248, 1502702, 889058, 2098092, 388158, 5325760, 2600603, 3544422, 966368,
--864899, 3689914, 1562294, -10113574, -3650185, -14584098, 223338, -2510945, 1257352, 2881386,
--270046, 7337415, 1326608, 10363756, 754304, -11829414, -258235, -4640176, -2510409, -376883,
--2339147, -437013, -10099079, 2247879, -5162551, 11660836, -12528420, 6766184, -3199751, -10085120,
--2536178, -7075422, -2197950, -2105608, -11541114, 3172370, 2607582, -1958505, -2555506, -691490,
-3035468, -8654896, -645319, 8020852, 558346, 11143293, 17347372, 7436736, -17783312, -22417582,
-9469866, 4554276, 15053324, -3777961, 6059125, 1287417, 5311801, 10627360, 9529996, -20206748,
-15076409, 2937758, -2776160, -134755, -9284646, -7365332, 7860327, -1930051, -2634963, 8435853,
--6149857, -6341519, 341450, 8428336, 3467112, -2359011, 245350, -4377109, -614180, 965831,
-4410932, 538482, -10349261, -9962177, 2377265, -992137, 2556043, -617402, 4229469, 8468602,
-15058155, 232465, 9385577, -1790465, 2732136, 6926172, -6109054, 12776991, -1628330, -7008850,
--10594074, -1429687, -8756901, -10571525, -2953327, 5871757, -3309272, -7984881, 4526359, 7000797,
-9893457, 13385266, -10056129, 4789426, -2666101, -8470749, 3723200, -9514426, -1742146, -16101832,
-7060926, -3957812, 2740726, -1828046, 2899103, -17098802, -18242874, -9661529, -4160213, 11914776,
--9768903, 21319144, -6725382, 4137127, -1695975, -2069101, 16455630, 1712618, 5772436, 5233955,
-1102733, 10719701, 675921, -13293461, 6046777, 2726767, 5743445, 81604, -11075110, 15562814,
-7327214, 6816650, -2103997, -3782256, 1211718, -361851, -8927626, 6052146, 3022583, -3856344,
-5267778, 10168872, -447213, 4279935, 8705362, -9514963, 1758789, -2725694, 3521873, -18533858,
-5183489, 9990631, -3934190, 3189550, 8588324, 5686537, -550830, 3788698, -10341208, 3200288,
--6375879, 1148904, 2091649, 2241436, -5106179, 19158238, -4025458, -2790655, -5026186, -15390478,
--7253663, -9164386, -12157442, -1511829, 15119895, 18086108, -2466922, 6045167, 6195491, -13886703,
--5493263, 12450036, 8934606, -5164698, -4944581, -13743358, -5585605, -4886062, -7923141, -7603166,
-1040456, -13785771, 4165582, -1719598, -5218922, 3245385, 1116155, -7311108, -10422812, -11561515,
--4318590, -11287711, -4378719, -4607963, 481573, -10706280, 2711198, 4463545, 843961, -12177306,
-4156455, -15086073, 5060009, 8464307, 657130, 13156559, 838592, -3823595, -1926293, 8931921,
--2688650, 12278238, 4846334, -4071092, -3624953, 2300492, -5629629, -3169149, 1059783, 11703249,
-245350, 6302865, 4120484, 1289027, 8764955, -3351685, -6672232, 3570192, -4538707, -2148021,
--13659607, 8476118, -4246112, -3918621, -2058363, -15562277, 19979114, 5340255, -1313723, 8716099,
-3723200, 4469987, -7381975, -12252468, -13320841, -6531035, 1937030, -14158360, 6701760, 10969883,
--15014669, -5654325, 7460895, -7374459, 5550172, 17980344, 2372970, -4125316, -3109020, 12329240,
-28142236, 31091268, 8449811, 19586662, -13623099, -12261058, -3755949, -1148904, 376883, 5056787,
-8965744, 18202608, 4998805, 16910896, 1073205, 5677410, 1689533, -3646964, 6647536, 620086,
-2224793, 2065342, -8917426, -194884, -5110474, -8068633, -6248104, 975494, 184147, -10961293,
--5563594, 15713675, 10013179, 8580271, 11893301, -6947110, -613643, -20754356, 310311, 19426674,
--4315369, -2818572, 1538135, -1107028, 13834090, -260382, -3112241, 12101607, -14052059, -20739324,
--9418326, 2861522, -12335683, 9549860, 11356430, -16095927, -7157563, 1119376, -1026497, -23470922,
--16305306, 8875550, 2645163, -760746, 7110855, -9558987, -7362648, -13921063, 2719788, 6154152,
-275415, 2512019, -11202348, -14900315, 12257300, -19990388, -28567974, -19876572, 13652090, -2530810,
-25141128, -5823976, 20630876, -16503949, 125628, 7961796, -2057289, 1321776, 2084670, -896574,
--13071733, 4877472, 4388920, 5986111, 5936719, -3463891, 10041097, -9030706, -7387881, -4962835,
-14277008, -7633231, -3124052, 1789391, -704375, -7131257, 6140193, -8000987, -10521059, -18559090,
-1331440, 4020090, -13363791, -5501853, 5821828, -2063195, 2913062, 1613297, 14635101, 1647120,
-10905459, 5677947, 54761, 9732396, 1626719, 3824132, -17522392, 18303540, 5789616, 14531485,
--8819178, 4447439, -9608916, 15133854, 10414222, 18332532, 2355790, -3622805, -13091060, 226560,
-1853278, -9699647, 14992120, 3658239, 2110977, 17799418, 3528853, -3551938, -6580427, 938450,
-10126996, 13180181, -3392487, 12432857, 13180718, -30792232, -1169842, 15824807, -9942312, -3508452,
-12048994, -12826383, -25581898, 5109401, 4756140, 4003983, -2990371, -15300284, 4289599, 4405026,
-1612760, 8587787, -26961120, 12710419, -5850283, 6699612, -15080167, 12903155, -19194746, -12436615,
-8323110, -4949950, -1627793, -14780593, 12540231, 15863462, 715112, 2066953, -6361384, 23709294,
-6632503, 6763500, -3352222, -19768660, -3409130, 11622718, -1049046, 17197586, 1174137, -5516886,
-5115306, -596464, 11613055, -19379430, -1218697, -14685567, 17831630, -5492727, 6874095, 253940,
-789737, -17357574, -4913980, 16710107, 6603512, 2260764, -3199751, 1348620, 3707094, -22294638,
--22280680, 26563836, -9516574, -26776974, 13250511, 14222784, -20338818, -28078886, -18256296, -18128520,
-13223131, -18006650, -8124468, -18753974, -366146, 2415382, -22310208, 2608656, -10243497, 31649614,
-3032247, -30647812, -5462125, 13194676, 10088878, 5883032, 16221018, 13867913, -19931870, -6490233,
--6856916, 18941342, -5623186, 22312892, 1381369, -14453639, -9302899, -21804476, -22462142, 488553,
-4237522, -4811974, -10849087, -6118718, 3092913, 2949032, 9701257, -12496207, 7446937, -14514305,
--14650133, 2435783, -1918240, -4983236, -15322833, -16618839, -6147709, -5507759, 24468428, 1613834,
-9264244, 12438762, 1174137, 28449864, 13247290, -9866077, 3058017, 14668387, -4230006, 18736794,
--3382287, 2456721, 2834142, -25214680, -24581708, 4347581, 19701552, 1162326, -4287451, -27362700,
-3139621, 11437498, 7293392, -7210177, -6942815, -1321776, -12800613, -14295799, 28685550, -9826885,
--8713415, -2804077, -6115497, -19950660, 1820529, 11505144, -30465276, -1903744, 9729175, 8827232,
--9411347, 5874979, -16780438, 46708, -3209951, 4355634, -14834280, 8821863, -26308286, 3200288,
-2337536, 14410689, 16443282, 6013491, -8774618, 10217190, -1731409, 11569031, -12407624, 835908,
-18254148, 11690364, -5974300, 1278827, 2244121, -5083631, 9895068, -4551055, -7674570, -12167105,
-9649718, -20827370, 14875082, 1504312, -18593988, 18058726, 20992190, 16091632, 8734890, -10710575,
-25169582, 1138166, 12395276, -15538655, -9241696, -15004468, 7190312, 3456912, 11430519, -20488068,
-5450851, 11912629, -31876710, -599685, -7198902, 20442970, 19888920, 9058086, 3342022, 12414066,
--5589900, -3727495, 3338800, 23400056, 5471252, 11658689, -33908228, 15472083, -18842558, 25490094,
--2291365, 9638980, 19915226, -21674016, 38063072, 26607860, 20701742, -9828496, 5759015, 25343528,
--6267431, -8934606, -5823976, -2002529, -19371914, 4515085, -10225780, -24452322, 23172422, 6869800,
-6482717, 2108292, 5479305, 8093329, 24335284, 4237522, -14972793, -2177549, -15557445, 2171106,
-2355790, -28515898, -1093069, 13980655, 1158031, -3035468, -8354785, 28165858, 6073621, 11302206,
-6474663, -17032766, -11278584, -9925669, 18200998, 9388262, -3647501, 9614284, -1634772, -21451214,
-19333796, 754841, 22162568, 750009, 2267743, -1383516, -29446296, 2048163, 794032, 1120987,
-18348638, -9592809, 28904056, -46422692, -7585986, 29587492, -12862890, 7067369, -14155138, -27970438,
-16349330, 7134478, -36538360, -41454488, -4886599, -18967650, 1505386, 12940736, -18207440, 5775658,
--27207544, 12054899, -15611669, -70148624, -5947456, 43929464, -20074678, -7371775, 41961832, -9597641,
-801548, 52607980, -14053670, 12017855, 3213709, -7141994, 40205724, -33340758, -6133750, -556198,
--7779260, -6475737, -8817568, -570694, 11675869, -7465727, -24924768, 425739, -1672353, 6874632,
-6127308, 1574642, 16524350, -715112, 6267431, -5190468, -25192668, 15709380, -5395016, -23538032,
--1832877, 13242458, 38428148, 20586852, 31700616, 360240, 5368172, 16127602, 547071, -2543158,
-28861644, -2306398, -16488379, 37307696, 2481954, 5947456, -4264366, -6216965, 16676284, -959925,
--18311594, -15302968, -9598715, -3970161, 24596740, -23474144, -9517648, 470299, 25756382, 17813914,
--38075420, -21041044, 32217086, -7220377, -28094992, -1857037, 2311766, 9216463, 34011848, 27172648,
--15972983, 3774740, -2285460, -1275068, 1440425, -20118700, 29779692, -9822053, -16610786, 5053566,
--11414412, 14453102, 3183108, 21189222, -5176510, -22925462, -17602386, 15731928, -6430640, 20927766,
--4154844, 13074954, -12832825, -12799539, -5113696, 237834, -16550120, 3175592, 2881386, -1027034,
-19947976, -1521492, 7963943, -13817447, 10896869, -21040508, 23137526, -20272782, 14579803, 5145908,
-19812148, -30982820, 3071439, 1291175, -6908992, -22697828, -34303904, -7282654, -28925530, -13129715,
--22676890, -12761422, -43210592, -15305116, 22923852, 24921010, 16585553, 13963476, -12348, 15167140,
--29883308, -9097278, 7401840, 17032766, -52539260, 15430207, 8004209, -27465242, 10625212, 10314901,
--20295332, -15320148, 23207318, 2938831, 12171400, -6339372, 15152108, -4990215, -2901787, 12185896,
-5438503, 3925600, -191663, -8394514, -14798847, -8811662, 21621940, -8014946, -19979114, 32608466,
-19532974, 2374580, 14173392, 4196720, -17807472, -50371376, 19593104, -1968169, -28072444, 22408454,
--3479997, -36868000, -31875100, -16342887, 22727894, 9220221, 23507966, 30882426, 7910793, -25770878,
-6452115, 8607114, -33909840, -5734318, 16344498, -10631118, -37089728, -27255326, -44952740, -27954332,
--8524436, 26341034, 36610300, 18096844, -5404680, 26120918, -9848360, -67065916, -55911884, 10466835,
--30339648, -32535988, 40442484, 4556961, -65672196, -48361332, 9644349, 754841, 2230699, 19838990,
-41181756, 48706540, 48919140, -15892453, 17626546, -20444044, 12964896, -35433, 7921531, -24161338,
-2857764, -20703890, -16892106, -404801, -40331892, 479426, -16528645, 4104378, 13284871, -791885,
-15245523, -20776904, 32014150, -15642808, 659278, 20963736, -18841484, 7523172, 16666621, 18632642,
-4032974, 6586333, 6026913, -29929480, -15167140, -4956929, 5800354, 4481262, -2972117, 19647328,
--4868883, -286689, -2231773, -8500814, 8545374, 4010426, -21890912, 7061463, -17227114, 5373004,
--43676060, -1939715, 636192, 225486, 20361366, -7080254, -14667850, -6914361, 18971944, 518080,
--41866804, 62067108, -3295314, -10931766, 15515569, -1714766, -6829535, -10346039, -9958419, -11736535,
-44418552, -14491220, -22058952, 23231478, 4313758, -29830696, -5899675, -37685116, -59234040, -54272816,
-120955944, 102823128, 113995952, 262840192, 66394824, -65113852, 18334142, -209863376, -225466992, -55032488,
--142878000, -108393704, 63241244, -34746284, 10564009, 166465952, 79409648, 123025040, 234027392, 157464768,
-37460704, 33223182, -74300784, -217947584, -169887968, -128355632, -260513920, -105530568, 1046898, -47619376,
--25778930, 126701536, 28554554, 14376329, 154111472, 16492138, 31809064, 223884832, 160408432, 101797704,
-207801248, 102584224, -45685032, -8369281, -76588928, -340910880, -301647360, -242662960, -377166304, -286881280,
--109767552, -140354704, 18412524, 246475296, 215295968, 305671744, 384367360, 285343136, 215829088, 212392576,
-107342504, -56225952, -99315752, -199178576, -282984672, -275589248, -247752512, -277487648, -290987808, -237598128,
--154757328, -120460944, -16268799, 156988032, 192766192, 123452392, 10576894, 0, 0, 0,
-0, 0, 0, },
+-4996121, -2501819, 178778, -1384590, 3234110, -3849365, -6403260, -5370320, 883690, 0,
+-1796907, 2643016, -185757, 2986076, -4163434, -3251290, 912144, -12885, -562641, -3524558,
+877247, 576063, 872415, 3602941, 2280091, -505732, 1189706, 1094680, 1391569, -843961,
+188979, 4723927, 2952253, 1245541, -2436320, -1349157, -585726, -1560147, -1996086, 3809099,
+1480690, 1563368, -492311, 772020, 365072, 855772, 782758, 405338, 2534031, -2726767,
+-1814087, -331249, -390842, -3704409, -1619203, -4740570, -2827162, 858457, 1508070, -1408212,
+-3979824, -1078037, 1160178, -315680, 2673617, 134755, -540092, 7708393, -3829500, -2741800,
+-691490, 1606318, 1019518, -4606353, 1345399, -206158, 5018670, 2812667, -3750043, 5525476,
+-3332895, -854699, -143881, -1605244, -2269353, -3904662, 759136, 6459631, 412317, 1331977,
+2425046, 855772, -2447058, -477815, -1549946, -1117228, 3553012, 1251446, 261993, -1079111,
+461709, 54761, -1678259, -2145336, 3428458, 3036542, 280247, -568009, 4009889, -5709086,
+-2456185, 2738042, -2706903, 5315559, 266288, 3817152, 203474, 635655, 2066416, -1820529,
+-1118302, 153545, -330176, -1367410, -1553168, 2479807, -396748, -5230197, 4833986, -483184,
+573378, -4372814, 1885491, -1795833, 1498407, 394063, -489089, -1471563, -523449, -2397129,
+2392297, -4905927, -971736, 4092567, -3421478, 1729798, 5208185, 2059437, 54224, -2459943,
+-324807, 1869385, 10871099, 2074469, -1596654, 3390340, -1724429, -1323924, -1829119, -674310,
+-4189741, 5841693, 3265786, 2533494, 2603287, 2587718, -2797098, -3616363, 4780836, -1044751,
+-3912178, -7224672, 1059246, -2145336, 2136746, 33286, -751082, -1636383, 2128693, -2702608,
+-1505386, 3539053, 6623914, 1728188, 2918430, 541703, 3235184, -760746, 3444564, 2228551,
+215822, 1960653, -23085, 518617, -26307, 4871567, 826244, 1209033, -1354525, 629213,
+-597537, -809064, 3764539, 4479651, -1928440, -1833414, 641024, 4088272, -7202660, -526134,
+-2195265, -5286031, -2419677, 513249, -2542084, 2053531, 1447941, -88047, -3537443, 1180579,
+-1125818, -3282429, 3308736, -5625871, -3074123, -6050535, -3468186, -1366337, -70867, 2916283,
+1844152, -7045894, -235686, 598611, 5129265, -1815161, -7864085, 6265821, -7407745, 25233,
+-3007551, -3094524, -7875360, -5893232, -2822331, -2480344, 3818763, 761283, -5038534, 377420,
+-2499134, -354872, 228707, 1846299, 883690, -2782602, 818191, 177167, 1772211, -2091649,
+-725850, -917512, -2254858, -4514548, 5995775, 2149631, 1206349, -1193464, 5186710, 3650185,
+-4194573, 862215, 920734, -1341104, -2232846, 154619, -4323959, 609885, -412854, -4420058,
+5374078, -416612, 149787, 5567888, -4743255, 4250944, 2325188, -1267552, -3339874, 555125,
+31139, -4753455, -2828236, -622770, -860067, -2561948, -5035849, -502511, 1946694, 1827509,
+-884763, 1515050, 1598265, -2189360, 121870, -4880157, -12334609, -11577084, 4437775, 7732552,
+4580583, -10443750, 7369627, -2514703, -1052267, 668404, -4959614, -3683471, 8679055, -133681,
+-145492, 648003, -351650, 2842195, -4530117, 2617783, -2484102, 2332167, 3849365, -2729989,
+-915365, 2262911, -876173, 4118337, -1528472, 1733019, 129923, -530965, 101469, -3694746,
+-5245229, 4573604, 329639, -1044751, -262530, -4819490, -6132140, -328565, -232465, 2844342,
+-5766531, -4799626, -1373853, -9808095, 3307125, -987843, 1510755, -987843, -2787971, 1196148,
+11780558, 6528887, 3016678, -4004520, 4250407, -404264, -6957847, -362925, -7290707, 5181341,
+4832, 199179, -4600984, -478352, 2889439, 826244, -298500, -176631, -797790, 3355980,
+1412507, -370978, 947040, -17770428, -1202591, -4377109, -475131, -3080029, -9860171, -556735,
+-2545842, -4251481, -9232032, -1281511, 6804839, -4774930, 4527433, -893890, 6323266, -2206540,
+5166309, -1764158, -4818954, -1439888, 683437, -2281165, -4317516, -3686156, -4241817, 51003,
+-3857954, 1374926, 621697, 321586, 2043331, -3086471, -3890167, 5759551, -386010, 1670205,
+204011, -4621385, -2758980, -3267396, 296890, -2346126, 4198331, 4110821, 816581, -5606006,
+-1704028, 10313290, 2691871, -4333622, -3343095, -2164664, -3700114, -1956895, 8165270, 4983236,
+-5734855, 3686156, 4851703, 7150047, -1712081, 3024194, -341987, 278636, -2757906, -5569499,
+-985695, 4637491, 504122, 8754217, 5968394, 920734, 1976222, 7722351, -5567352, 22699440,
+15058692, -4584341, -975494, 133144, -752156, -2520072, 3007014, 7788923, 6369437, 3432216,
+-12031277, -5241471, 1336272, 703838, 4836670, -8922258, 1588601, 12090870, 7915625, -1412507,
+2658048, -1099512, -4344360, -5629092, 37581, -4817343, -3063386, 1314260, 3452080, -3576634,
+-6811818, -3191161, 776315, 5837398, 7964480, -1722282, -9177808, -2016487, -3543885, -9002251,
+-950262, -456340, -4679367, 1253057, 1915019, 4933844, -7896834, 2777770, 3302293, 562104,
+-7710540, -5616207, 1860258, -8053, 1243930, -1131187, -1356673, -630823, -4671851, 1538672,
+1319629, -3233574, 4156455, 5370857, 7152195, 1358820, -381715, 6925098, 11244224, 1209033,
+404801, 1166621, 5692443, -450435, 2150168, 9822590, 11489574, 656056, 2062658, 3273839,
+5308580, -1867237, 3213709, -2733747, -2421825, -9453760, 3449396, 7028714, -6535330, 5401995,
+-2993055, -8278550, 8447127, 5603322, -2099702, 5648419, 9954660, 7612293, -5932961, -2756295,
+4736812, 1915555, -1746978, 4296578, 3163780, 5654325, -234613, -2185602, -5262409, -8116415,
+-877784, -6726456, 228707, -2104534, 3213173, -5359583, -13239774, 2862596, -3786014, 5879274,
+787053, 496069, -4179540, -7408282, -6936372, -609349, -1366873, -5651640, 7129109, 10097468,
+9811853, 4138738, -8369281, -854162, 9210557, 722628, -2570538, 4363150, -2181307, -2904472,
+-10419054, 4780299, 1821066, 13230110, 5399848, -10057740, 2124398, 2689187, -2065879, -1182190,
+2226941, -3447785, -4018479, -5763309, -2011118, -1219771, -10918881, 862215, 918586, 5607617,
+-2378875, -4226248, 1502702, 889058, 2098092, 388158, 5325760, 2600603, 3544422, 966368,
+-864899, 3689914, 1562294, -10113574, -3650185, -14584098, 223338, -2510945, 1257352, 2881386,
+-270046, 7337415, 1326608, 10363756, 754304, -11829414, -258235, -4640176, -2510409, -376883,
+-2339147, -437013, -10099079, 2247879, -5162551, 11660836, -12528420, 6766184, -3199751, -10085120,
+-2536178, -7075422, -2197950, -2105608, -11541114, 3172370, 2607582, -1958505, -2555506, -691490,
+3035468, -8654896, -645319, 8020852, 558346, 11143293, 17347372, 7436736, -17783312, -22417582,
+9469866, 4554276, 15053324, -3777961, 6059125, 1287417, 5311801, 10627360, 9529996, -20206748,
+15076409, 2937758, -2776160, -134755, -9284646, -7365332, 7860327, -1930051, -2634963, 8435853,
+-6149857, -6341519, 341450, 8428336, 3467112, -2359011, 245350, -4377109, -614180, 965831,
+4410932, 538482, -10349261, -9962177, 2377265, -992137, 2556043, -617402, 4229469, 8468602,
+15058155, 232465, 9385577, -1790465, 2732136, 6926172, -6109054, 12776991, -1628330, -7008850,
+-10594074, -1429687, -8756901, -10571525, -2953327, 5871757, -3309272, -7984881, 4526359, 7000797,
+9893457, 13385266, -10056129, 4789426, -2666101, -8470749, 3723200, -9514426, -1742146, -16101832,
+7060926, -3957812, 2740726, -1828046, 2899103, -17098802, -18242874, -9661529, -4160213, 11914776,
+-9768903, 21319144, -6725382, 4137127, -1695975, -2069101, 16455630, 1712618, 5772436, 5233955,
+1102733, 10719701, 675921, -13293461, 6046777, 2726767, 5743445, 81604, -11075110, 15562814,
+7327214, 6816650, -2103997, -3782256, 1211718, -361851, -8927626, 6052146, 3022583, -3856344,
+5267778, 10168872, -447213, 4279935, 8705362, -9514963, 1758789, -2725694, 3521873, -18533858,
+5183489, 9990631, -3934190, 3189550, 8588324, 5686537, -550830, 3788698, -10341208, 3200288,
+-6375879, 1148904, 2091649, 2241436, -5106179, 19158238, -4025458, -2790655, -5026186, -15390478,
+-7253663, -9164386, -12157442, -1511829, 15119895, 18086108, -2466922, 6045167, 6195491, -13886703,
+-5493263, 12450036, 8934606, -5164698, -4944581, -13743358, -5585605, -4886062, -7923141, -7603166,
+1040456, -13785771, 4165582, -1719598, -5218922, 3245385, 1116155, -7311108, -10422812, -11561515,
+-4318590, -11287711, -4378719, -4607963, 481573, -10706280, 2711198, 4463545, 843961, -12177306,
+4156455, -15086073, 5060009, 8464307, 657130, 13156559, 838592, -3823595, -1926293, 8931921,
+-2688650, 12278238, 4846334, -4071092, -3624953, 2300492, -5629629, -3169149, 1059783, 11703249,
+245350, 6302865, 4120484, 1289027, 8764955, -3351685, -6672232, 3570192, -4538707, -2148021,
+-13659607, 8476118, -4246112, -3918621, -2058363, -15562277, 19979114, 5340255, -1313723, 8716099,
+3723200, 4469987, -7381975, -12252468, -13320841, -6531035, 1937030, -14158360, 6701760, 10969883,
+-15014669, -5654325, 7460895, -7374459, 5550172, 17980344, 2372970, -4125316, -3109020, 12329240,
+28142236, 31091268, 8449811, 19586662, -13623099, -12261058, -3755949, -1148904, 376883, 5056787,
+8965744, 18202608, 4998805, 16910896, 1073205, 5677410, 1689533, -3646964, 6647536, 620086,
+2224793, 2065342, -8917426, -194884, -5110474, -8068633, -6248104, 975494, 184147, -10961293,
+-5563594, 15713675, 10013179, 8580271, 11893301, -6947110, -613643, -20754356, 310311, 19426674,
+-4315369, -2818572, 1538135, -1107028, 13834090, -260382, -3112241, 12101607, -14052059, -20739324,
+-9418326, 2861522, -12335683, 9549860, 11356430, -16095927, -7157563, 1119376, -1026497, -23470922,
+-16305306, 8875550, 2645163, -760746, 7110855, -9558987, -7362648, -13921063, 2719788, 6154152,
+275415, 2512019, -11202348, -14900315, 12257300, -19990388, -28567974, -19876572, 13652090, -2530810,
+25141128, -5823976, 20630876, -16503949, 125628, 7961796, -2057289, 1321776, 2084670, -896574,
+-13071733, 4877472, 4388920, 5986111, 5936719, -3463891, 10041097, -9030706, -7387881, -4962835,
+14277008, -7633231, -3124052, 1789391, -704375, -7131257, 6140193, -8000987, -10521059, -18559090,
+1331440, 4020090, -13363791, -5501853, 5821828, -2063195, 2913062, 1613297, 14635101, 1647120,
+10905459, 5677947, 54761, 9732396, 1626719, 3824132, -17522392, 18303540, 5789616, 14531485,
+-8819178, 4447439, -9608916, 15133854, 10414222, 18332532, 2355790, -3622805, -13091060, 226560,
+1853278, -9699647, 14992120, 3658239, 2110977, 17799418, 3528853, -3551938, -6580427, 938450,
+10126996, 13180181, -3392487, 12432857, 13180718, -30792232, -1169842, 15824807, -9942312, -3508452,
+12048994, -12826383, -25581898, 5109401, 4756140, 4003983, -2990371, -15300284, 4289599, 4405026,
+1612760, 8587787, -26961120, 12710419, -5850283, 6699612, -15080167, 12903155, -19194746, -12436615,
+8323110, -4949950, -1627793, -14780593, 12540231, 15863462, 715112, 2066953, -6361384, 23709294,
+6632503, 6763500, -3352222, -19768660, -3409130, 11622718, -1049046, 17197586, 1174137, -5516886,
+5115306, -596464, 11613055, -19379430, -1218697, -14685567, 17831630, -5492727, 6874095, 253940,
+789737, -17357574, -4913980, 16710107, 6603512, 2260764, -3199751, 1348620, 3707094, -22294638,
+-22280680, 26563836, -9516574, -26776974, 13250511, 14222784, -20338818, -28078886, -18256296, -18128520,
+13223131, -18006650, -8124468, -18753974, -366146, 2415382, -22310208, 2608656, -10243497, 31649614,
+3032247, -30647812, -5462125, 13194676, 10088878, 5883032, 16221018, 13867913, -19931870, -6490233,
+-6856916, 18941342, -5623186, 22312892, 1381369, -14453639, -9302899, -21804476, -22462142, 488553,
+4237522, -4811974, -10849087, -6118718, 3092913, 2949032, 9701257, -12496207, 7446937, -14514305,
+-14650133, 2435783, -1918240, -4983236, -15322833, -16618839, -6147709, -5507759, 24468428, 1613834,
+9264244, 12438762, 1174137, 28449864, 13247290, -9866077, 3058017, 14668387, -4230006, 18736794,
+-3382287, 2456721, 2834142, -25214680, -24581708, 4347581, 19701552, 1162326, -4287451, -27362700,
+3139621, 11437498, 7293392, -7210177, -6942815, -1321776, -12800613, -14295799, 28685550, -9826885,
+-8713415, -2804077, -6115497, -19950660, 1820529, 11505144, -30465276, -1903744, 9729175, 8827232,
+-9411347, 5874979, -16780438, 46708, -3209951, 4355634, -14834280, 8821863, -26308286, 3200288,
+2337536, 14410689, 16443282, 6013491, -8774618, 10217190, -1731409, 11569031, -12407624, 835908,
+18254148, 11690364, -5974300, 1278827, 2244121, -5083631, 9895068, -4551055, -7674570, -12167105,
+9649718, -20827370, 14875082, 1504312, -18593988, 18058726, 20992190, 16091632, 8734890, -10710575,
+25169582, 1138166, 12395276, -15538655, -9241696, -15004468, 7190312, 3456912, 11430519, -20488068,
+5450851, 11912629, -31876710, -599685, -7198902, 20442970, 19888920, 9058086, 3342022, 12414066,
+-5589900, -3727495, 3338800, 23400056, 5471252, 11658689, -33908228, 15472083, -18842558, 25490094,
+-2291365, 9638980, 19915226, -21674016, 38063072, 26607860, 20701742, -9828496, 5759015, 25343528,
+-6267431, -8934606, -5823976, -2002529, -19371914, 4515085, -10225780, -24452322, 23172422, 6869800,
+6482717, 2108292, 5479305, 8093329, 24335284, 4237522, -14972793, -2177549, -15557445, 2171106,
+2355790, -28515898, -1093069, 13980655, 1158031, -3035468, -8354785, 28165858, 6073621, 11302206,
+6474663, -17032766, -11278584, -9925669, 18200998, 9388262, -3647501, 9614284, -1634772, -21451214,
+19333796, 754841, 22162568, 750009, 2267743, -1383516, -29446296, 2048163, 794032, 1120987,
+18348638, -9592809, 28904056, -46422692, -7585986, 29587492, -12862890, 7067369, -14155138, -27970438,
+16349330, 7134478, -36538360, -41454488, -4886599, -18967650, 1505386, 12940736, -18207440, 5775658,
+-27207544, 12054899, -15611669, -70148624, -5947456, 43929464, -20074678, -7371775, 41961832, -9597641,
+801548, 52607980, -14053670, 12017855, 3213709, -7141994, 40205724, -33340758, -6133750, -556198,
+-7779260, -6475737, -8817568, -570694, 11675869, -7465727, -24924768, 425739, -1672353, 6874632,
+6127308, 1574642, 16524350, -715112, 6267431, -5190468, -25192668, 15709380, -5395016, -23538032,
+-1832877, 13242458, 38428148, 20586852, 31700616, 360240, 5368172, 16127602, 547071, -2543158,
+28861644, -2306398, -16488379, 37307696, 2481954, 5947456, -4264366, -6216965, 16676284, -959925,
+-18311594, -15302968, -9598715, -3970161, 24596740, -23474144, -9517648, 470299, 25756382, 17813914,
+-38075420, -21041044, 32217086, -7220377, -28094992, -1857037, 2311766, 9216463, 34011848, 27172648,
+-15972983, 3774740, -2285460, -1275068, 1440425, -20118700, 29779692, -9822053, -16610786, 5053566,
+-11414412, 14453102, 3183108, 21189222, -5176510, -22925462, -17602386, 15731928, -6430640, 20927766,
+-4154844, 13074954, -12832825, -12799539, -5113696, 237834, -16550120, 3175592, 2881386, -1027034,
+19947976, -1521492, 7963943, -13817447, 10896869, -21040508, 23137526, -20272782, 14579803, 5145908,
+19812148, -30982820, 3071439, 1291175, -6908992, -22697828, -34303904, -7282654, -28925530, -13129715,
+-22676890, -12761422, -43210592, -15305116, 22923852, 24921010, 16585553, 13963476, -12348, 15167140,
+-29883308, -9097278, 7401840, 17032766, -52539260, 15430207, 8004209, -27465242, 10625212, 10314901,
+-20295332, -15320148, 23207318, 2938831, 12171400, -6339372, 15152108, -4990215, -2901787, 12185896,
+5438503, 3925600, -191663, -8394514, -14798847, -8811662, 21621940, -8014946, -19979114, 32608466,
+19532974, 2374580, 14173392, 4196720, -17807472, -50371376, 19593104, -1968169, -28072444, 22408454,
+-3479997, -36868000, -31875100, -16342887, 22727894, 9220221, 23507966, 30882426, 7910793, -25770878,
+6452115, 8607114, -33909840, -5734318, 16344498, -10631118, -37089728, -27255326, -44952740, -27954332,
+-8524436, 26341034, 36610300, 18096844, -5404680, 26120918, -9848360, -67065916, -55911884, 10466835,
+-30339648, -32535988, 40442484, 4556961, -65672196, -48361332, 9644349, 754841, 2230699, 19838990,
+41181756, 48706540, 48919140, -15892453, 17626546, -20444044, 12964896, -35433, 7921531, -24161338,
+2857764, -20703890, -16892106, -404801, -40331892, 479426, -16528645, 4104378, 13284871, -791885,
+15245523, -20776904, 32014150, -15642808, 659278, 20963736, -18841484, 7523172, 16666621, 18632642,
+4032974, 6586333, 6026913, -29929480, -15167140, -4956929, 5800354, 4481262, -2972117, 19647328,
+-4868883, -286689, -2231773, -8500814, 8545374, 4010426, -21890912, 7061463, -17227114, 5373004,
+-43676060, -1939715, 636192, 225486, 20361366, -7080254, -14667850, -6914361, 18971944, 518080,
+-41866804, 62067108, -3295314, -10931766, 15515569, -1714766, -6829535, -10346039, -9958419, -11736535,
+44418552, -14491220, -22058952, 23231478, 4313758, -29830696, -5899675, -37685116, -59234040, -54272816,
+120955944, 102823128, 113995952, 262840192, 66394824, -65113852, 18334142, -209863376, -225466992, -55032488,
+-142878000, -108393704, 63241244, -34746284, 10564009, 166465952, 79409648, 123025040, 234027392, 157464768,
+37460704, 33223182, -74300784, -217947584, -169887968, -128355632, -260513920, -105530568, 1046898, -47619376,
+-25778930, 126701536, 28554554, 14376329, 154111472, 16492138, 31809064, 223884832, 160408432, 101797704,
+207801248, 102584224, -45685032, -8369281, -76588928, -340910880, -301647360, -242662960, -377166304, -286881280,
+-109767552, -140354704, 18412524, 246475296, 215295968, 305671744, 384367360, 285343136, 215829088, 212392576,
+107342504, -56225952, -99315752, -199178576, -282984672, -275589248, -247752512, -277487648, -290987808, -237598128,
+-154757328, -120460944, -16268799, 156988032, 192766192, 123452392, 10576894, 0, 0, 0,
+0, 0, 0, },
{
-3461744,
--7253126, -2795487, -4082367, 81068, 1404454, 4320737, -2083059, 347892, -3197603, -2488397,
--3400540, 1675037, -3912178, 884763, -3293703, 6473053, -366146, 511101, -306016, -4567161,
-2915209, 6880001, 111669, -1712081, 355409, -1312649, 2218351, -814433, -1169842, -1206886,
--8152922, -2587718, 659278, -1212791, 2113124, -2427730, 1825361, -496606, 2205466, -1386201,
-2369211, 446140, 3339874, 1639067, -1064078, 1348620, 854162, -1751810, -3197066, -1368484,
--555125, 1919850, 805306, 178778, -592169, 3748970, 4085588, -4485020, -1616518, -4090956,
-2371896, -314069, -2329483, -1136556, -1515050, -1649268, -221728, -2482491, 2707977, -3387119,
--1540283, 298500, 1855426, 684510, 1488206, -570157, 9018894, -1265405, 789737, 6932614,
--833761, -429497, -1981591, 7559680, 508417, 3614215, 2319282, 2136746, -3117073, 1464584,
--4859219, -665720, 3833795, 631897, 2252710, 3433290, -6029597, -4377109, 1454920, -458488,
-4497905, 2570538, -232465, -2662880, -1574642, -3260417, -505196, -595927, -484258, 663036,
-1144609, -2881923, 4463545, -1240172, -747861, 1324461, -5791227, -1546188, 2419677, 647466,
-5589363, -260919, -496606, 856846, 293132, 2098092, 3816079, 4715337, -403727, -795106,
--38118, -3161096, -3780645, 1702418, 3095061, -2603824, -2360085, -1818382, 3957276, 2082522,
--777389, 264141, -5114233, -1818382, 2294050, 1662152, 3347390, -5746666, 911070, 1434519,
--1366337, 3074123, 11439645, 3419868, -2871186, 6155225, -3083787, 6402723, -2247342, -2589865,
-2956548, 6011881, -358630, -2619930, 1367947, 1455994, -406411, -7980586, 1764158, 2662880,
-503048, 5396627, 6767795, 3976066, 6668474, 4899484, 4013647, -835371, 4479651, 2498597,
--3619047, 1592359, 2013803, -4213900, -5824513, -585189, 2153389, 388158, -2154463, -2460480,
--2774549, -1025960, 3011846, 6497212, 5173825, 2297808, 3970697, -6165426, 368830, -1323924,
-34897, -7113540, 2748779, -372052, -1757179, 60130, -2006824, -3328063, -2554969, 2974802,
-679142, 2371896, -2640868, 5455682, 1408212, -5509906, 2563022, 1126892, 1802276, 3605625,
-1185411, 6294812, -1630477, 1009317, -6591701, 1634772, 1065689, 383863, 639950, 877784,
--2656437, -2072859, -1066226, 2462090, -4285304, 1462973, -8174397, 1775969, 1191317, -618475,
-5332739, 657130, -922344, 807454, 2685428, -4526359, 394600, 1783485, 2789045, -6563247,
--3774740, -2283849, 2224256, 1341640, -2450816, -6628209, 1388348, -6589017, -717796, 3060701,
--1574106, 2411624, -1488206, 4980552, 6604586, 3978750, -3866544, 1007707, 4933307, 3574487,
--3529926, 3067144, 513249, -5022965, 1596117, 7764764, 3172370, 2857764, 7953743, 1129040,
--3428458, -5912023, -573378, -3126736, -4548907, -1578937, 4238596, -3850438, 1204202, -2088428,
--2704219, 5801427, -993748, 1429150, 3911642, 6345278, -2859375, -4606353, 6389838, 5905043,
-2942590, 1200443, -4434017, 1750736, 4708895, -3824132, -15714212, -5590437, -2506114, 8666707,
--3334505, -1144609, -5129802, -4120484, -805843, -11096585, 6238977, 2250026, -379031, -3981435,
-6159520, -1562831, 3112241, -2319819, 1960116, 4165045, -4970351, 738734, 5446019, 3313567,
-2195265, 6078453, 5229123, -3026878, -4163434, -4951024, -60130, -6579353, 1673427, -8764955,
--1685238, 6970195, 3566434, -1979443, -632971, -6479495, 3178276, -2564096, 6101538, -3093450,
--6051072, -882616, -2413235, -4660040, 2104534, -736050, -3062849, -2837363, -10737418, 1964411,
--3074123, -7590818, -1929514, 5518496, 2807835, -3621731, 3735011, 5046050, 4606353, 2238752,
--5226975, -236760, -835371, 4618164, -3455838, -685047, 2587181, 2978023, -5433671, -6253473,
--12175695, -1049046, -6029597, -13441100, -5570036, -2296734, -4160750, 4755066, 5900748, 5827734,
--11477226, -8333847, 3121368, 13943074, 8027294, 121333, 1826972, 4060892, -5104569, 3400540,
--4742181, 3445101, 4769025, 876173, 3800509, 1344862, -411243, 2156611, 1078037, -3593277,
--4822175, 6587943, 2497524, -4628364, 4514011, -2480344, -602906, 11238856, -5439039, 6402186,
-12338904, 5174362, -823560, 567473, -4599910, 5908265, -6050535, -3171833, -10094784, 1961726,
-7624104, -119185, -7158100, -2450816, -10105521, -5026723, -1922535, -14206141, -7814156, -1343788,
-1480690, -6181532, 3150896, -1584843, -4930623, 5420786, 15805480, 1556389, 8096550, 5564130,
-4815732, -4858145, 2227478, -8323647, 1087164, 2723546, 2149094, -2858301, 376347, 20920248,
-13687524, -7587060, 3000035, 6527277, -2543158, 3602941, -1057099, 6057515, 3455301, 1722282,
-6037114, 2945274, 3113851, -2129230, -13940927, 6460705, -2170569, -3571802, 11345693, 6524592,
-4075387, 4765266, 4036196, 2462090, -1942399, 1273458, 676994, -4013110, 3156801, 4413616,
--7788387, 1134408, -4968204, 3421478, 4641249, -12934294, -1074, -15324443, 455803, 1418413,
-1459215, 3609920, 10351408, -1712081, -5080947, -3066070, -2646774, -4417374, 3099893, 2631204,
-1153199, -2190970, -1663763, 9315784, -3119757, -2558190, -5242545, 8163659, -1191317, 6735046,
--3337727, 7210177, -7464653, -16655883, -4630512, 258772, 3328600, 4612795, -5285494, -4822175,
-2260764, 589484, -2419140, -4996121, 10095858, -4515085, 9780714, -3651259, -6744710, -168041,
-894427, -9296457, -7530152, -2224793, 2401961, -1286343, 12073690, 7459822, 151934, 11796665,
-4039417, 3523484, -10198400, 9496173, -1943473, -2266669, -8638790, -3730716, 7307350, 7488276,
--2309619, 4988068, -10361609, -1358283, 6620155, 5203890, -4006668, -7155416, -4263829, -4404489,
--5781026, -4583804, 893890, -7539815, -951335, 10519449, -5267241, 1243930, -617402, -2384244,
-3866008, -1649268, 6629282, 26307, 9442486, -2467996, -6300180, 3500935, -5016522, -4763656,
--5009006, -13717052, 1404454, 5670431, 7994545, 5874979, 10581189, -1116155, -4248797, 6183143,
--7707319, 1750736, 1153199, -1172526, 7009387, 6455336, -1493038, -8332237, 2030983, -4372814,
--7152731, -7597797, 2285996, -11780558, -7352447, 1567663, -7179038, -17571784, 13259101, 1074,
--1167694, 2015950, 794569, -11514270, 7991861, -12014097, 827318, 5945846, -1889249, 2367064,
-1721745, -12940200, -4727149, -5586142, -1489280, 3045669, -4616553, -2435783, -795643, -446140,
-958851, 5885179, 2716567, 12271258, -4582730, 16720308, -1398549, 794569, -10958072, -1235340,
-7708393, -1222992, -16718160, 7011534, 7407745, -4536559, 3802120, -5784784, 11164767, 6685654,
--573378, -298500, -7574712, -4297115, -8266202, 7884486, 7155953, 3636227, 591095, 3760244,
--6717866, -16618839, -6473590, 6331856, 2349347, -12239046, 53687, 1846836, 1457068, -5709622,
-4064113, 9258876, 4347581, 427349, 3348464, 6270653, -3750580, 8901857, -148176, -18527416,
-9816148, -2275259, 3407520, -5287642, -3376381, 8199093, -9503689, 9178345, -5891085, -10421738,
-4481799, -5502390, 22410066, 3630321, -8342974, -10830297, -2377801, -13496935, -6709276, -14562623,
--1283658, 10096931, -7433515, 6301791, 9540196, -9052180, -418222, -10606959, 5592585, 2307471,
--873489, 6529424, -7221988, -9521942, -8682276, 708670, 1303523, 8268886, -12247636, 8462159,
-1078037, -17180406, -10087804, -13857175, -6324876, 5392869, -5318244, -4583804, -27203250, -495532,
--6491306, -2391223, -17724794, -5910412, -2962991, 1322850, 13160317, 12645457, 9950365, 6119255,
-12597139, -14500346, 10407243, 1446330, 4374424, 3616899, -11201812, 15800648, 9002788, 6016713,
--7983808, -9882720, -7715909, 8644695, 364535, -1005559, 7307350, 13036299, 14505178, 5672578,
-10198937, 7928510, 5022965, -2814814, 1244467, -4105452, 501974, -1546725, -8492224, 10827613,
-17654464, 6771553, -4624606, 7639136, 7611756, -508417, 4785131, -8455717, -15751256, -10788421,
--7088307, 4396436, -1775969, -8517457, 6361384, -3062849, -7289097, -298500, 13033615, 6291590,
-9693741, 3143379, 7174206, 7610682, -1643362, 6958384, -2636036, -8362838, 3596498, -9648107,
-3682398, 3597572, -13775571, -9206799, 5863704, 14284524, -7322383, 9928891, 14197551, -11708618,
-648540, 12718472, 1561758, -4723927, -889595, -6569153, -11271605, 187368, -3265249, -5902896,
-8121783, 603443, -12868259, 17160542, -6661495, 14157823, -15819975, -10267119, 8245264, -8717173,
-5776194, -4632122, -1686312, 1163936, -12829604, 8497593, -6050535, -12095702, 17661980, 10380399,
--14010183, 10094247, 7438884, 3254512, 14668924, -31301722, 1306744, 13980119, 3495567, 1960116,
-12938589, 1307818, 6568616, -17824652, -3638911, 5786395, -933082, -8580808, 2419677, 8172249,
-2371359, 4224637, 8613020, 8905615, 11826729, 10995116, -5430450, -3584150, 8757975, -5631239,
-5667746, -10910291, -7790534, -14143327, -8307004, 8727910, 1190780, -2822331, 10407243, -13816373,
--21226802, -30902826, 7889855, 11417634, 6549289, 7194070, -9491341, 5537824, -6488085, 12414603,
-29436096, -4416837, -9143985, -13281649, -6997039, 12426951, -10905459, 7371775, 8679592, 2506114,
--3554622, -8559870, -6289443, 5159330, -26021596, -19267224, -2484639, 4508642, -12589086, 2682207,
-48217988, 26272852, 17768816, -5040681, -4240744, -1247151, -3454228, -5559835, -6790880, -9566503,
--14688251, -2684, -506269, 3044058, 7222525, 11993159, 19743428, -3266323, -24424406, -10470057,
-21959094, -4058744, 8548596, -3502546, 144955, 13538811, 5435281, 10094247, 6854768, -1203665,
--182536, -968515, 7653632, 8430484, -3146064, -14854681, 18825378, 12394202, 9764608, 2632815,
-5142150, -8311299, -13596256, 18347564, 11026792, 4073240, -8624294, -10799158, -13655849, -9476308,
--2260227, -9638443, 4989679, -18758270, 2582886, 12125230, -8473970, 3587908, 795643, 835908,
--20382304, 6053757, -8891119, 13610214, -32899450, 4318053, -8961986, -12377559, 2059437, -8110509,
-5780489, 4788352, -22626962, -1400696, 12586939, 813359, -29348048, -14916958, 2062658, -25587804,
-5800354, 18772228, -9067750, 22798760, 26514980, 3511673, 13209172, 16538308, 7281044, -15604153,
-10201084, 12661027, -681289, 3311957, 8771934, 7962870, 18719614, 3361886, -7285339, 12149926,
-4256313, -1694365, 237834, 8211441, -11001559, -4780299, -4664335, 6893960, 3463891, -15280420,
-4567161, 13133473, 350577, 15795279, -14723685, -27619860, 2251100, 12724914, 18927920, 17763984,
-9094593, 8567923, 6726993, -18652506, -5454609, -512175, 14294725, 22735410, -7634841, 5144297,
--8114267, 5636608, 3741990, 14009110, 21361556, -7785165, -9026411, -1447404, 11883638, 15312095,
-21203716, 966368, -22103512, -20765094, -2928094, 3281892, 772557, -9158481, 1203665, -24954296,
--14977625, -14218489, -13561896, 8924942, 12704513, -27642410, 2850785, -5721970, 15404437, -8242042,
--784905, 4462471, 11859478, -15394773, -25141128, -4552666, -9469866, 674310, -10949482, 6825240,
-7436199, 715112, -13118441, 8741869, 1661079, 23289998, -2851858, 12861280, -9801652, 24143622,
-7854422, 15201500, 11040750, 16610249, 25025700, -5460514, 10435160, -16324634, 18877992, 17663590,
-882079, 6129455, 18656264, -10465762, -9265855, -1090385, 36348844, 6408628, -8135205, 18117246,
-3964255, 14165876, 20875152, 6547678, 623307, 2875481, 5010080, 13766444, -2238215, 14790257,
--7006166, 14592688, -4820027, 31292058, -1666447, 27284316, -20331302, -23575612, 38542500, -27572616,
--12498892, 3541201, -5835250, -15781857, 20346870, 831076, -18097918, -7385197, -6090264, -29693794,
-5254893, -24707874, -13632226, 2655901, -28371480, -19357418, -19260244, -23113904, 27395986, -2588255,
-2392297, 5699422, -6079526, -35038880, -23264228, -26274462, -47917876, 1404454, 6922414, 19085224,
-13729937, 5108864, 11862163, 5039071, 3492345, -17954574, -21721798, -15630997, 18855444, -4782983,
--12335146, -8009041, 18386218, -23736136, -12654584, -24392730, -9880572, -4712116, -19934016, 4753455,
--16481937, 15567109, 13738527, -6073621, 13487271, -15983184, -25553982, 7949985, 15628312, -17045652,
--29584272, 18781356, -1721745, 12381854, 13812615, -46935940, -30427158, -4103305, -7122667, 23189602,
--16336982, -23465016, -5527086, 4893579, 759672, -8430484, -10819023, 30542586, -19648938, -37345816,
--42740292, 20929376, -9686762, -43407088, 11859478, 3286187, -7861401, -4075387, 2863670, -25913686,
--12169790, 13683229, 19053548, 42781632, 5324686, 22796612, 9000641, 11431592, -11184632, -2237678,
--9846749, -22163104, -28712930, -37116032, -15621333, -33437394, -15319075, -17280264, -8662412, 18773838,
-2420751, 12854837, 19366544, 358630, 12307229, 4480725, -1571421, -322659, -5237713, -28639916,
-7975755, -3583613, -35033512, -20185272, 6816650, -21010444, -10755672, 7304666, 20702280, 28210956,
-6978785, -6442451, 853625, 18524730, 7043747, 3288334, -3892851, -57513908, -14881525, 11482058,
-10767483, 4517232, -5924371, -20504710, 9317395, -18664854, -16942036, -5238787, -820876, -11657615,
--34752728, 13619878, -8611946, 34632468, 9325448, 9291088, 9225053, 23314156, 56604984, -4525285,
--4307852, -9814000, -21225192, 29459718, -2090039, 3503620, -32498406, -14009646, 42769820, -29367912,
--5268851, -25762824, -67157184, -12178380, 23302346, 15165530, 5396090, 2651606, -1740536, 36397164,
--39843336, -2470680, -10093710, -30414274, -21757230, -6007586, 9827959, 4458176, 11210938, 22517440,
-18077518, -20307142, -16260209, 47241420, 42472932, -5899675, 6487011, -8123931, 14955076, -2886755,
-30704184, 7854422, 17050484, 1586454, 3809099, -54334020, 22874996, -5063230, -28222766, -18007724,
-4351876, -10942503, -28190554, 25445534, -3728032, -24096914, -3173981, -29528, 26364656, 25017648,
-22544820, 4969814, 26132192, 23431730, -19284940, -25638270, -13312251, -7378217, 26728118, 30806190,
-6522445, 8167417, 33819108, 15131170, -31024696, 17287244, 8638253, -14576582, 1690607, 50896972,
-28792924, -18375480, -27845884, -43876312, 8343511, -7981123, -14577656, -17414482, 9413495, -10341744,
--5541582, 29758218, -9511205, -1051193, -23281944, 2474438, 14245333, -31453656, -20601884, -18549426,
--9773735, 12329777, -43568684, -23382338, -62718332, 11561515, -898722, -15138149, -7201050, -8476655,
-13125420, 20810190, -22363358, 1621887, -7901129, -6696391, -39129836, 9416179, 29843580, 8783208,
-22589380, 29326036, 25451440, -33272038, -10441065, -9370008, -15952045, 29765734, -29291140, -15916612,
-1197759, 42861088, 9665824, -13532905, 42391864, -22477174, -21865678, 51480016, 48547088, 5984500,
-12809740, -12225624, -44884556, -12457553, 46723876, -20536386, 42601780, -13099650, -64262912, -15097884,
--29098940, 37459096, 2270427, 10918881, 33862060, -946503, 28398860, 12467216, 22647362, 2259690,
--42067056, 25129316, 27910308, -33795488, 18442590, 453656, -12785581, -14040785, -49936512, -21181704,
-17169132, 3893388, 45312980, -35787280, -20883204, 9390409, -5193153, 30070140, -40714680, 951335,
-4082367, -33360622, 34261492, 19791210, 10466298, -15068893, 23529442, -26751740, 15447924, 13043816,
-7349226, -848256, -15371151, 7609072, 31405874, -15209553, -5727876, 7335268, -24143622, 26188564,
-1310502, 7825431, -33101850, 19383188, 4857608, 7484518, -78101296, 12142946, -21819508, 38103340,
-30969936, 33666640, 17103096, -62514860, -10573136, 15076946, 2044941, 5597416, 45717780, -5405753,
--26371100, -31278100, 2041720, -35057672, -31018254, -27220966, 14171781, -52203716, 37973416, 71612136,
--18625126, -9939091, -56607132, -16937204, -49818400, 12492449, -21022254, -16729434, 17043504, -13977971,
--16551730, 12861280, -22219476, -2854543, -25527674, 37637336, 2188823, -29903172, -6913824, -708133,
--1350230, 7724499, -17532056, -14539538, 5811091, 6537477, 6118718, 2515240, 16355235, -18457622,
--5036386, -40751724, 16207059, 2423435, -10492605, 27258010, 17164836, -12930536, 45221172, 8447664,
--25851408, 19503446, 5170604, 12291660, 30409442, -3852586, -5461588, 3357591, 25353728, 12301323,
-2146947, -3508452, 27015344, -3300682, -27885612, -6104759, 7065758, 22356916, -8714489, 39236136,
-45935748, -28957744, 24749212, 49088792, -11856257, 75017512, 44282724, -19457812, -15672873, -28876138,
--30750892, -18427020, 11524471, -5608154, -4388383, -668941, -3732864, -52153252, -19607062, -50984484,
-12059194, 67464808, 16966732, -23203560, 2021319, -30672508, -4745939, 11765526, -13651554, -15915001,
--19202262, -6255620, 6582575, -3286724, -6538551, 9331353, 4350802, 12372190, -12396886, -6554120,
-8049306, -2151779, 1033477, -16399796, 11294153, -19332184, 9286256, 7721815, -4828617, 134755,
-308164, -10715407, 1555852, 3514894, -9810779, 18134426, -9535901, 5295695, -289373, 1813013,
-8215736, -7118372, -13390634, -2608119, 19285476, -13214541, 9281424, -25309168, -16212428, 6527814,
--6091338, 1090922, -2069101, -14504105, 16767552, 15273441, 962073, -10053445, -850940, -5355288,
-3257196, -7037304, -521302, -6571837, 6207839, -238371, 1481227, 23889682, -18442590, 903554,
-3132105, 4028143, -4008278, 3568581, -8610336, 4117800, -7173669, -31237298, -48108464, 33758980,
-150781264, 67173288, 68679752, 325881, -141077872, -100767984, -53613004, -109789568, 52883932, 66735200,
-33494840, 143756320, 63494648, -5431523, 46614892, -91746408, -118776784, -66561256, -83453896, -17039746,
-63085552, 66214436, 26592826, 110709224, 53745612, -6866579, 52058224, -47881368, -84322560, -47101832,
--63642288, -97799624, 35474820, -61203, -36228588, 106965624, 63090384, 36785860, 107843944, 27092654,
--56047176, 54349588, -79554608, -88912264, -19219442, -93557808, -96620120, 38710540, -16697222, 23999204,
-119894552, 83562880, 85245976, 82080584, 9014063, -44677324, -53461068, -87240984, -116417240, -59766080,
--33745560, -23053774, 43366820, 69708392, 63908576, 92433064, 82012400, -11800960, -15156403, -13768591,
--85184232, -23875186, -41391136, -57782880, 14991583, 15187004, -727460, 0, 0, 0,
-0, 0, 0, },
+-7253126, -2795487, -4082367, 81068, 1404454, 4320737, -2083059, 347892, -3197603, -2488397,
+-3400540, 1675037, -3912178, 884763, -3293703, 6473053, -366146, 511101, -306016, -4567161,
+2915209, 6880001, 111669, -1712081, 355409, -1312649, 2218351, -814433, -1169842, -1206886,
+-8152922, -2587718, 659278, -1212791, 2113124, -2427730, 1825361, -496606, 2205466, -1386201,
+2369211, 446140, 3339874, 1639067, -1064078, 1348620, 854162, -1751810, -3197066, -1368484,
+-555125, 1919850, 805306, 178778, -592169, 3748970, 4085588, -4485020, -1616518, -4090956,
+2371896, -314069, -2329483, -1136556, -1515050, -1649268, -221728, -2482491, 2707977, -3387119,
+-1540283, 298500, 1855426, 684510, 1488206, -570157, 9018894, -1265405, 789737, 6932614,
+-833761, -429497, -1981591, 7559680, 508417, 3614215, 2319282, 2136746, -3117073, 1464584,
+-4859219, -665720, 3833795, 631897, 2252710, 3433290, -6029597, -4377109, 1454920, -458488,
+4497905, 2570538, -232465, -2662880, -1574642, -3260417, -505196, -595927, -484258, 663036,
+1144609, -2881923, 4463545, -1240172, -747861, 1324461, -5791227, -1546188, 2419677, 647466,
+5589363, -260919, -496606, 856846, 293132, 2098092, 3816079, 4715337, -403727, -795106,
+-38118, -3161096, -3780645, 1702418, 3095061, -2603824, -2360085, -1818382, 3957276, 2082522,
+-777389, 264141, -5114233, -1818382, 2294050, 1662152, 3347390, -5746666, 911070, 1434519,
+-1366337, 3074123, 11439645, 3419868, -2871186, 6155225, -3083787, 6402723, -2247342, -2589865,
+2956548, 6011881, -358630, -2619930, 1367947, 1455994, -406411, -7980586, 1764158, 2662880,
+503048, 5396627, 6767795, 3976066, 6668474, 4899484, 4013647, -835371, 4479651, 2498597,
+-3619047, 1592359, 2013803, -4213900, -5824513, -585189, 2153389, 388158, -2154463, -2460480,
+-2774549, -1025960, 3011846, 6497212, 5173825, 2297808, 3970697, -6165426, 368830, -1323924,
+34897, -7113540, 2748779, -372052, -1757179, 60130, -2006824, -3328063, -2554969, 2974802,
+679142, 2371896, -2640868, 5455682, 1408212, -5509906, 2563022, 1126892, 1802276, 3605625,
+1185411, 6294812, -1630477, 1009317, -6591701, 1634772, 1065689, 383863, 639950, 877784,
+-2656437, -2072859, -1066226, 2462090, -4285304, 1462973, -8174397, 1775969, 1191317, -618475,
+5332739, 657130, -922344, 807454, 2685428, -4526359, 394600, 1783485, 2789045, -6563247,
+-3774740, -2283849, 2224256, 1341640, -2450816, -6628209, 1388348, -6589017, -717796, 3060701,
+-1574106, 2411624, -1488206, 4980552, 6604586, 3978750, -3866544, 1007707, 4933307, 3574487,
+-3529926, 3067144, 513249, -5022965, 1596117, 7764764, 3172370, 2857764, 7953743, 1129040,
+-3428458, -5912023, -573378, -3126736, -4548907, -1578937, 4238596, -3850438, 1204202, -2088428,
+-2704219, 5801427, -993748, 1429150, 3911642, 6345278, -2859375, -4606353, 6389838, 5905043,
+2942590, 1200443, -4434017, 1750736, 4708895, -3824132, -15714212, -5590437, -2506114, 8666707,
+-3334505, -1144609, -5129802, -4120484, -805843, -11096585, 6238977, 2250026, -379031, -3981435,
+6159520, -1562831, 3112241, -2319819, 1960116, 4165045, -4970351, 738734, 5446019, 3313567,
+2195265, 6078453, 5229123, -3026878, -4163434, -4951024, -60130, -6579353, 1673427, -8764955,
+-1685238, 6970195, 3566434, -1979443, -632971, -6479495, 3178276, -2564096, 6101538, -3093450,
+-6051072, -882616, -2413235, -4660040, 2104534, -736050, -3062849, -2837363, -10737418, 1964411,
+-3074123, -7590818, -1929514, 5518496, 2807835, -3621731, 3735011, 5046050, 4606353, 2238752,
+-5226975, -236760, -835371, 4618164, -3455838, -685047, 2587181, 2978023, -5433671, -6253473,
+-12175695, -1049046, -6029597, -13441100, -5570036, -2296734, -4160750, 4755066, 5900748, 5827734,
+-11477226, -8333847, 3121368, 13943074, 8027294, 121333, 1826972, 4060892, -5104569, 3400540,
+-4742181, 3445101, 4769025, 876173, 3800509, 1344862, -411243, 2156611, 1078037, -3593277,
+-4822175, 6587943, 2497524, -4628364, 4514011, -2480344, -602906, 11238856, -5439039, 6402186,
+12338904, 5174362, -823560, 567473, -4599910, 5908265, -6050535, -3171833, -10094784, 1961726,
+7624104, -119185, -7158100, -2450816, -10105521, -5026723, -1922535, -14206141, -7814156, -1343788,
+1480690, -6181532, 3150896, -1584843, -4930623, 5420786, 15805480, 1556389, 8096550, 5564130,
+4815732, -4858145, 2227478, -8323647, 1087164, 2723546, 2149094, -2858301, 376347, 20920248,
+13687524, -7587060, 3000035, 6527277, -2543158, 3602941, -1057099, 6057515, 3455301, 1722282,
+6037114, 2945274, 3113851, -2129230, -13940927, 6460705, -2170569, -3571802, 11345693, 6524592,
+4075387, 4765266, 4036196, 2462090, -1942399, 1273458, 676994, -4013110, 3156801, 4413616,
+-7788387, 1134408, -4968204, 3421478, 4641249, -12934294, -1074, -15324443, 455803, 1418413,
+1459215, 3609920, 10351408, -1712081, -5080947, -3066070, -2646774, -4417374, 3099893, 2631204,
+1153199, -2190970, -1663763, 9315784, -3119757, -2558190, -5242545, 8163659, -1191317, 6735046,
+-3337727, 7210177, -7464653, -16655883, -4630512, 258772, 3328600, 4612795, -5285494, -4822175,
+2260764, 589484, -2419140, -4996121, 10095858, -4515085, 9780714, -3651259, -6744710, -168041,
+894427, -9296457, -7530152, -2224793, 2401961, -1286343, 12073690, 7459822, 151934, 11796665,
+4039417, 3523484, -10198400, 9496173, -1943473, -2266669, -8638790, -3730716, 7307350, 7488276,
+-2309619, 4988068, -10361609, -1358283, 6620155, 5203890, -4006668, -7155416, -4263829, -4404489,
+-5781026, -4583804, 893890, -7539815, -951335, 10519449, -5267241, 1243930, -617402, -2384244,
+3866008, -1649268, 6629282, 26307, 9442486, -2467996, -6300180, 3500935, -5016522, -4763656,
+-5009006, -13717052, 1404454, 5670431, 7994545, 5874979, 10581189, -1116155, -4248797, 6183143,
+-7707319, 1750736, 1153199, -1172526, 7009387, 6455336, -1493038, -8332237, 2030983, -4372814,
+-7152731, -7597797, 2285996, -11780558, -7352447, 1567663, -7179038, -17571784, 13259101, 1074,
+-1167694, 2015950, 794569, -11514270, 7991861, -12014097, 827318, 5945846, -1889249, 2367064,
+1721745, -12940200, -4727149, -5586142, -1489280, 3045669, -4616553, -2435783, -795643, -446140,
+958851, 5885179, 2716567, 12271258, -4582730, 16720308, -1398549, 794569, -10958072, -1235340,
+7708393, -1222992, -16718160, 7011534, 7407745, -4536559, 3802120, -5784784, 11164767, 6685654,
+-573378, -298500, -7574712, -4297115, -8266202, 7884486, 7155953, 3636227, 591095, 3760244,
+-6717866, -16618839, -6473590, 6331856, 2349347, -12239046, 53687, 1846836, 1457068, -5709622,
+4064113, 9258876, 4347581, 427349, 3348464, 6270653, -3750580, 8901857, -148176, -18527416,
+9816148, -2275259, 3407520, -5287642, -3376381, 8199093, -9503689, 9178345, -5891085, -10421738,
+4481799, -5502390, 22410066, 3630321, -8342974, -10830297, -2377801, -13496935, -6709276, -14562623,
+-1283658, 10096931, -7433515, 6301791, 9540196, -9052180, -418222, -10606959, 5592585, 2307471,
+-873489, 6529424, -7221988, -9521942, -8682276, 708670, 1303523, 8268886, -12247636, 8462159,
+1078037, -17180406, -10087804, -13857175, -6324876, 5392869, -5318244, -4583804, -27203250, -495532,
+-6491306, -2391223, -17724794, -5910412, -2962991, 1322850, 13160317, 12645457, 9950365, 6119255,
+12597139, -14500346, 10407243, 1446330, 4374424, 3616899, -11201812, 15800648, 9002788, 6016713,
+-7983808, -9882720, -7715909, 8644695, 364535, -1005559, 7307350, 13036299, 14505178, 5672578,
+10198937, 7928510, 5022965, -2814814, 1244467, -4105452, 501974, -1546725, -8492224, 10827613,
+17654464, 6771553, -4624606, 7639136, 7611756, -508417, 4785131, -8455717, -15751256, -10788421,
+-7088307, 4396436, -1775969, -8517457, 6361384, -3062849, -7289097, -298500, 13033615, 6291590,
+9693741, 3143379, 7174206, 7610682, -1643362, 6958384, -2636036, -8362838, 3596498, -9648107,
+3682398, 3597572, -13775571, -9206799, 5863704, 14284524, -7322383, 9928891, 14197551, -11708618,
+648540, 12718472, 1561758, -4723927, -889595, -6569153, -11271605, 187368, -3265249, -5902896,
+8121783, 603443, -12868259, 17160542, -6661495, 14157823, -15819975, -10267119, 8245264, -8717173,
+5776194, -4632122, -1686312, 1163936, -12829604, 8497593, -6050535, -12095702, 17661980, 10380399,
+-14010183, 10094247, 7438884, 3254512, 14668924, -31301722, 1306744, 13980119, 3495567, 1960116,
+12938589, 1307818, 6568616, -17824652, -3638911, 5786395, -933082, -8580808, 2419677, 8172249,
+2371359, 4224637, 8613020, 8905615, 11826729, 10995116, -5430450, -3584150, 8757975, -5631239,
+5667746, -10910291, -7790534, -14143327, -8307004, 8727910, 1190780, -2822331, 10407243, -13816373,
+-21226802, -30902826, 7889855, 11417634, 6549289, 7194070, -9491341, 5537824, -6488085, 12414603,
+29436096, -4416837, -9143985, -13281649, -6997039, 12426951, -10905459, 7371775, 8679592, 2506114,
+-3554622, -8559870, -6289443, 5159330, -26021596, -19267224, -2484639, 4508642, -12589086, 2682207,
+48217988, 26272852, 17768816, -5040681, -4240744, -1247151, -3454228, -5559835, -6790880, -9566503,
+-14688251, -2684, -506269, 3044058, 7222525, 11993159, 19743428, -3266323, -24424406, -10470057,
+21959094, -4058744, 8548596, -3502546, 144955, 13538811, 5435281, 10094247, 6854768, -1203665,
+-182536, -968515, 7653632, 8430484, -3146064, -14854681, 18825378, 12394202, 9764608, 2632815,
+5142150, -8311299, -13596256, 18347564, 11026792, 4073240, -8624294, -10799158, -13655849, -9476308,
+-2260227, -9638443, 4989679, -18758270, 2582886, 12125230, -8473970, 3587908, 795643, 835908,
+-20382304, 6053757, -8891119, 13610214, -32899450, 4318053, -8961986, -12377559, 2059437, -8110509,
+5780489, 4788352, -22626962, -1400696, 12586939, 813359, -29348048, -14916958, 2062658, -25587804,
+5800354, 18772228, -9067750, 22798760, 26514980, 3511673, 13209172, 16538308, 7281044, -15604153,
+10201084, 12661027, -681289, 3311957, 8771934, 7962870, 18719614, 3361886, -7285339, 12149926,
+4256313, -1694365, 237834, 8211441, -11001559, -4780299, -4664335, 6893960, 3463891, -15280420,
+4567161, 13133473, 350577, 15795279, -14723685, -27619860, 2251100, 12724914, 18927920, 17763984,
+9094593, 8567923, 6726993, -18652506, -5454609, -512175, 14294725, 22735410, -7634841, 5144297,
+-8114267, 5636608, 3741990, 14009110, 21361556, -7785165, -9026411, -1447404, 11883638, 15312095,
+21203716, 966368, -22103512, -20765094, -2928094, 3281892, 772557, -9158481, 1203665, -24954296,
+-14977625, -14218489, -13561896, 8924942, 12704513, -27642410, 2850785, -5721970, 15404437, -8242042,
+-784905, 4462471, 11859478, -15394773, -25141128, -4552666, -9469866, 674310, -10949482, 6825240,
+7436199, 715112, -13118441, 8741869, 1661079, 23289998, -2851858, 12861280, -9801652, 24143622,
+7854422, 15201500, 11040750, 16610249, 25025700, -5460514, 10435160, -16324634, 18877992, 17663590,
+882079, 6129455, 18656264, -10465762, -9265855, -1090385, 36348844, 6408628, -8135205, 18117246,
+3964255, 14165876, 20875152, 6547678, 623307, 2875481, 5010080, 13766444, -2238215, 14790257,
+-7006166, 14592688, -4820027, 31292058, -1666447, 27284316, -20331302, -23575612, 38542500, -27572616,
+-12498892, 3541201, -5835250, -15781857, 20346870, 831076, -18097918, -7385197, -6090264, -29693794,
+5254893, -24707874, -13632226, 2655901, -28371480, -19357418, -19260244, -23113904, 27395986, -2588255,
+2392297, 5699422, -6079526, -35038880, -23264228, -26274462, -47917876, 1404454, 6922414, 19085224,
+13729937, 5108864, 11862163, 5039071, 3492345, -17954574, -21721798, -15630997, 18855444, -4782983,
+-12335146, -8009041, 18386218, -23736136, -12654584, -24392730, -9880572, -4712116, -19934016, 4753455,
+-16481937, 15567109, 13738527, -6073621, 13487271, -15983184, -25553982, 7949985, 15628312, -17045652,
+-29584272, 18781356, -1721745, 12381854, 13812615, -46935940, -30427158, -4103305, -7122667, 23189602,
+-16336982, -23465016, -5527086, 4893579, 759672, -8430484, -10819023, 30542586, -19648938, -37345816,
+-42740292, 20929376, -9686762, -43407088, 11859478, 3286187, -7861401, -4075387, 2863670, -25913686,
+-12169790, 13683229, 19053548, 42781632, 5324686, 22796612, 9000641, 11431592, -11184632, -2237678,
+-9846749, -22163104, -28712930, -37116032, -15621333, -33437394, -15319075, -17280264, -8662412, 18773838,
+2420751, 12854837, 19366544, 358630, 12307229, 4480725, -1571421, -322659, -5237713, -28639916,
+7975755, -3583613, -35033512, -20185272, 6816650, -21010444, -10755672, 7304666, 20702280, 28210956,
+6978785, -6442451, 853625, 18524730, 7043747, 3288334, -3892851, -57513908, -14881525, 11482058,
+10767483, 4517232, -5924371, -20504710, 9317395, -18664854, -16942036, -5238787, -820876, -11657615,
+-34752728, 13619878, -8611946, 34632468, 9325448, 9291088, 9225053, 23314156, 56604984, -4525285,
+-4307852, -9814000, -21225192, 29459718, -2090039, 3503620, -32498406, -14009646, 42769820, -29367912,
+-5268851, -25762824, -67157184, -12178380, 23302346, 15165530, 5396090, 2651606, -1740536, 36397164,
+-39843336, -2470680, -10093710, -30414274, -21757230, -6007586, 9827959, 4458176, 11210938, 22517440,
+18077518, -20307142, -16260209, 47241420, 42472932, -5899675, 6487011, -8123931, 14955076, -2886755,
+30704184, 7854422, 17050484, 1586454, 3809099, -54334020, 22874996, -5063230, -28222766, -18007724,
+4351876, -10942503, -28190554, 25445534, -3728032, -24096914, -3173981, -29528, 26364656, 25017648,
+22544820, 4969814, 26132192, 23431730, -19284940, -25638270, -13312251, -7378217, 26728118, 30806190,
+6522445, 8167417, 33819108, 15131170, -31024696, 17287244, 8638253, -14576582, 1690607, 50896972,
+28792924, -18375480, -27845884, -43876312, 8343511, -7981123, -14577656, -17414482, 9413495, -10341744,
+-5541582, 29758218, -9511205, -1051193, -23281944, 2474438, 14245333, -31453656, -20601884, -18549426,
+-9773735, 12329777, -43568684, -23382338, -62718332, 11561515, -898722, -15138149, -7201050, -8476655,
+13125420, 20810190, -22363358, 1621887, -7901129, -6696391, -39129836, 9416179, 29843580, 8783208,
+22589380, 29326036, 25451440, -33272038, -10441065, -9370008, -15952045, 29765734, -29291140, -15916612,
+1197759, 42861088, 9665824, -13532905, 42391864, -22477174, -21865678, 51480016, 48547088, 5984500,
+12809740, -12225624, -44884556, -12457553, 46723876, -20536386, 42601780, -13099650, -64262912, -15097884,
+-29098940, 37459096, 2270427, 10918881, 33862060, -946503, 28398860, 12467216, 22647362, 2259690,
+-42067056, 25129316, 27910308, -33795488, 18442590, 453656, -12785581, -14040785, -49936512, -21181704,
+17169132, 3893388, 45312980, -35787280, -20883204, 9390409, -5193153, 30070140, -40714680, 951335,
+4082367, -33360622, 34261492, 19791210, 10466298, -15068893, 23529442, -26751740, 15447924, 13043816,
+7349226, -848256, -15371151, 7609072, 31405874, -15209553, -5727876, 7335268, -24143622, 26188564,
+1310502, 7825431, -33101850, 19383188, 4857608, 7484518, -78101296, 12142946, -21819508, 38103340,
+30969936, 33666640, 17103096, -62514860, -10573136, 15076946, 2044941, 5597416, 45717780, -5405753,
+-26371100, -31278100, 2041720, -35057672, -31018254, -27220966, 14171781, -52203716, 37973416, 71612136,
+-18625126, -9939091, -56607132, -16937204, -49818400, 12492449, -21022254, -16729434, 17043504, -13977971,
+-16551730, 12861280, -22219476, -2854543, -25527674, 37637336, 2188823, -29903172, -6913824, -708133,
+-1350230, 7724499, -17532056, -14539538, 5811091, 6537477, 6118718, 2515240, 16355235, -18457622,
+-5036386, -40751724, 16207059, 2423435, -10492605, 27258010, 17164836, -12930536, 45221172, 8447664,
+-25851408, 19503446, 5170604, 12291660, 30409442, -3852586, -5461588, 3357591, 25353728, 12301323,
+2146947, -3508452, 27015344, -3300682, -27885612, -6104759, 7065758, 22356916, -8714489, 39236136,
+45935748, -28957744, 24749212, 49088792, -11856257, 75017512, 44282724, -19457812, -15672873, -28876138,
+-30750892, -18427020, 11524471, -5608154, -4388383, -668941, -3732864, -52153252, -19607062, -50984484,
+12059194, 67464808, 16966732, -23203560, 2021319, -30672508, -4745939, 11765526, -13651554, -15915001,
+-19202262, -6255620, 6582575, -3286724, -6538551, 9331353, 4350802, 12372190, -12396886, -6554120,
+8049306, -2151779, 1033477, -16399796, 11294153, -19332184, 9286256, 7721815, -4828617, 134755,
+308164, -10715407, 1555852, 3514894, -9810779, 18134426, -9535901, 5295695, -289373, 1813013,
+8215736, -7118372, -13390634, -2608119, 19285476, -13214541, 9281424, -25309168, -16212428, 6527814,
+-6091338, 1090922, -2069101, -14504105, 16767552, 15273441, 962073, -10053445, -850940, -5355288,
+3257196, -7037304, -521302, -6571837, 6207839, -238371, 1481227, 23889682, -18442590, 903554,
+3132105, 4028143, -4008278, 3568581, -8610336, 4117800, -7173669, -31237298, -48108464, 33758980,
+150781264, 67173288, 68679752, 325881, -141077872, -100767984, -53613004, -109789568, 52883932, 66735200,
+33494840, 143756320, 63494648, -5431523, 46614892, -91746408, -118776784, -66561256, -83453896, -17039746,
+63085552, 66214436, 26592826, 110709224, 53745612, -6866579, 52058224, -47881368, -84322560, -47101832,
+-63642288, -97799624, 35474820, -61203, -36228588, 106965624, 63090384, 36785860, 107843944, 27092654,
+-56047176, 54349588, -79554608, -88912264, -19219442, -93557808, -96620120, 38710540, -16697222, 23999204,
+119894552, 83562880, 85245976, 82080584, 9014063, -44677324, -53461068, -87240984, -116417240, -59766080,
+-33745560, -23053774, 43366820, 69708392, 63908576, 92433064, 82012400, -11800960, -15156403, -13768591,
+-85184232, -23875186, -41391136, -57782880, 14991583, 15187004, -727460, 0, 0, 0,
+0, 0, 0, },
},
{
{
-3161633,
--7335268, -2953327, -4199405, -2286533, 5206574, 2805151, 404264, 4345970, 2943126, -3470334,
--4744328, -2906082, -2251637, 567473, 1776506, -4748623, -664109, -1881733, -74625, -561030,
--1050120, -2517925, 5964636, 3493419, -426812, -4907537, -1965484, 1066226, 2006824, -151934,
--1964411, 882616, 1709934, 592169, 1597728, -1355599, -231391, -3757560, -4873178, -1030792,
--461172, 2405719, 2901251, 2079838, 576599, 698469, 1660542, 2501282, 708133, 3333432,
-1329829, -2103997, -2516851, -22549, 2368675, 2256469, 957778, 520228, 3595425, 2430952,
--4287988, -3681324, -2237678, -2025614, -1838246, 2463164, -1668595, 1176284, -4060892, 2962454,
--2884071, -2058363, 2066416, -1300301, -1811403, 4696547, 2877628, -4475893, -886374, -1729798,
--31675, 6410776, 481036, -2916283, 3547106, 576599, 455803, 1021665, 825707, -71404,
-5014375, 2637110, -3223910, -1417339, -281857, -1306744, 1476932, 1955284, 1506997, -1569811,
--2026151, 667867, -4181688, -2098629, 3309809, 125091, 2683818, 1162326, -1991254, 1415192,
-124017, -2014340, 4607963, -3195993, -1322850, 392990, 1649268, -2253784, -445066, -3161633,
--5768678, 5284421, -1000727, -3273839, 425202, 4822712, 109522, 1717987, -2401424, -1713692,
--924492, 1289564, -1869385, 3758097, 758062, 3344706, -5159867, 1916629, -1239098, 536871,
-2390686, -1293322, -430570, -4332012, 202937, 1628330, 678605, -1655710, 48855, 1180042,
--699543, -2048699, 13666586, 4842576, -1209033, 3849365, 72478, 6918119, 4154844, -837519,
-3376918, 6223408, 7867307, -4597763, -4735202, 2079838, -1983201, -1424855, 5589363, 4734665,
-4273493, 3257733, 467078, -60130, -2119566, 2300492, 1395328, 7398618, 608275, -34360,
--3347390, 1640141, 2000381, -287763, -1124208, -1009854, 1839320, -157840, -1308354, -2531346,
-2688650, -812286, -1095754, 4158065, 5559299, -1326608, -842887, 3444564, 2803540, 5376226,
-3086471, 1594507, 384936, 4612795, 2360622, -5958194, -153545, 2063732, -3696893, 284542,
-408559, -4168803, 2051921, -1904281, 3097745, -469762, -756451, 2024540, 366683, -2729989,
--483721, 1998770, -825707, -374199, -1133871, 768799, 3197066, 1176284, -3799436, 4766340,
--370441, -9005473, -4190278, -1750199, -1949378, -4904853, -4503273, -2831457, 4875862, -5367099,
--2508261, -2552284, 975494, 8132521, -1229971, -653372, 1981054, 4650913, -7134478, -1169842,
-1440425, -3153043, 2499671, 3973919, -4410395, -280247, 545998, -2563559, -6488622, 1115618,
--2748242, 867047, -2535641, 3690451, -4496294, -4177393, -10297721, -2776160, 3487514, -583042,
--3983045, -1950989, -546535, -4138201, 151398, -707059, 2772402, 2231236, -1132798, 117038,
--1127966, -4368519, 5233955, 915365, 3499325, -1331440, -95026, 924492, 1435056, 4110821,
--1457068, -1005022, 1065152, -124017, 4325032, 2400350, -4089346, -1543504, -1199907, -6149857,
--959925, -557809, 3345780, -2309619, -19718732, -6285685, -1656784, -1679332, -1557463, 7571491,
--6950331, 3324842, -1535988, 1487132, -1899449, -1699733, -5558762, 874026, -1942936, 375273,
--8112120, 115427, -702227, -1523103, 13959, 1508070, 1404454, -818728, -402653, -3339874,
-1189706, -2683281, 1922535, -27380, 1674500, 5131412, -1158031, -5916318, -2325725, -6920266,
-1162862, 1241246, -412317, 1197759, -2190970, 2321967, 1421634, -3048890, 505196, -8288750,
--1521492, -5531381, 3300146, 5525476, -4569845, -340376, 1855963, 889595, -7633768, 1377611,
-4376572, -3740380, -1497333, -8967892, 3395709, -1220845, 4077535, 6800544, 4171487, -5267241,
-1505923, 1411971, 672162, -5822902, 1931662, -2354179, 4372814, -1366873, 171262, 2172180,
-1802276, -11871290, 964220, 2579128, -4780299, -158914, 11596412, 9694278, 4663261, -956167,
--2567854, 6346888, 3346317, 2292439, 1862405, -4427575, 1246614, 847719, 5232881, -4997195,
--2865280, -644245, 298500, -717796, -6622303, -3825205, -4788352, -4777614, 2433636, 3848828,
-1794760, 1923609, -325344, 1890323, -1225676, -278636, -59593, -1483374, -999654, 3117073,
-1648731, -3818226, -5189931, -34360, -5217312, 3234647, -1944547, -7567733, 437013, 4478577,
-5204964, 4406100, -344134, 4195646, -6288906, -1384590, -3167539, 58519, -257698, 3026341,
--2665027, -4726612, 5596880, -5252745, -3583613, 4469451, 8276402, 2749853, 794569, -8335995,
-8520141, 1868311, 5344013, 11244761, -4107063, 2183454, -1401770, -2419140, 1991254, 18580028,
-13009993, -4619774, -6859063, 10324028, 6650220, 10858751, 15843597, -7998840, 5446556, 2680597,
-4546223, 2095944, 2696703, 6597070, 1553168, 6731288, 130997, -4286378, 1706713, -1384053,
-2160369, -802622, 12230456, 2075543, 2597918, 1657857, 357019, 4298726, 1695438, 226023,
--943282, 3059091, -2546916, 5867999, -4774393, 7066832, -3540127, 4250944, 2059974, 2573222,
-1884954, 10378788, 7767985, 434329, -2473901, -5733245, 5947993, -6978248, 1480690, -3101503,
-2777770, 6447283, 505196, -11035382, -9177271, 818191, -5840619, -6095633, -3790846, -7017440,
-2107755, 11861089, 5628018, -4528506, -132070, 1260036, -3580929, -3655017, -1068373, 5752572,
-5999533, -7070590, 2659122, 7543573, 702764, 2435783, 7866233, 1857573, 11526618, -732829,
--426276, -3609383, -3445638, 4284767, 8670465, -2282775, 2105608, 973347, 9430138, 4349192,
--4762582, -3819300, 390842, 2385318, 8567923, 8992588, 12913893, 2756295, 3437585, -1931662,
-5146982, 6474127, -2566780, -2626909, 4530117, -3226594, -5216238, 5135171, 1255741, -5415954,
--7308961, 11291469, 5303211, 65498, 6799470, 1795296, -4989679, 10770704, -2524904, 774705,
--341450, 3148748, -3831648, 3158949, -3818226, 3098282, -3528853, 3663070, -2866891, 4815732,
--3585761, -3136400, 9664750, -11494943, 766115, 1986959, -4002373, 1380832, -13342853, -6053757,
-6711424, -4777078, 4297652, -796716, 3108483, 1848447, 2867428, 2132451, -5353677, 4048007,
--2427194, 354872, -9480603, -8393440, 85899, 3463354, 6843494, -7961796, 2367601, -7170448,
-5925981, 4322885, -9571335, -2141578, 1142998, -11487427, -6356015, 6767258, -799938, -637803,
-1726040, -864899, -11796665, 10711648, 780610, -7853348, -3670587, 1283658, -927176, -7563438,
--2153926, -4422206, 1285269, -547071, -2309082, 2190433, -10261751, -4767414, 2693481, 13276818,
--2231773, -8119636, -5589900, -4619774, 9167608, -9989557, -1970853, -909459, -10472741, -13253195,
-3149822, -9274982, -1505386, 1073742, 6764037, 3543885, 440771, 1171989, 8036421, -3878892,
--2746632, 11766600, -8343511, 5908265, -3069291, -3503083, -1586990, -2003065, 12524662, -329102,
-4498442, -14101451, -10365367, -644782, -2842195, 13582297, -811749, 8082592, 1983201, -15834471,
-1401770, -1444720, 10787347, 1393717, -11700565, 13944148, 4323422, -7971460, -17900350, -7264937,
-17449916, 1021129, -2343979, -2785823, 1699196, 740345, 5310727, 3037079, 5701032, -1086090,
-10266582, -5172215, -12317429, 705985, 471910, -2713883, -536334, 4783520, -3227131, -1656784,
--1152125, 9992778, 7500624, 4158065, -804770, -13065291, -338766, -442919, -636729, -1948841,
--297427, -5548024, -10935524, -1412507, 7380365, 7565048, -2821257, 8120710, -2610803, 3705483,
-8477729, 8557185, -18221398, 6587406, 6418829, 3109020, -4546223, -15460809, 9490267, 6145025,
-2912525, -5174362, -3362960, -5881421, 3330747, -6529424, -1597728, 788127, 6145025, -3266860,
-2872796, 2691334, -12185896, -469225, -8614631, 14236206, 1522029, 9586904, 12512313, 12082817,
-9881646, 11829951, -15036681, -10452877, -4981625, -5400385, -7048578, -6062883, -12033961, -4616553,
-1119376, 6910066, 269509, -7512972, -65498, 6884833, 612033, -6567005, -2617783, 16231218,
-1851131, 5789079, 2142652, 6402723, 1608465, 1724966, -10096394, 5207111, 555661, 1834488,
--10622528, 3175592, -16414291, -573378, -5115843, 3524558, -1414655, -12684112, -212064, -12640089,
-2265595, -10618770, 9168681, -5812702, 14368276, -195421, -279173, 6577206, 1511292, -2945274,
--2187749, 2243584, -5018133, 2692408, 8706436, 3820374, -6788733, -4174171, 18734110, 718333,
-14829448, -14784888, -3342558, -2240362, 10532334, -13004087, 1123671, 5126581, -12961674, 7805030,
--8696235, 1612223, -4848481, -15177878, 2091649, 15122043, 10950556, 12361990, -4336843, -3037079,
-2766496, -2041183, 14821395, 5125507, 6870337, 12789876, -1289564, 4782446, -9055402, 12684649,
-5935108, -3245922, -8232379, -7324530, 8060580, -14851997, 5267778, 8352101, -6680822, -8401493,
--5248450, 7715372, 2385854, -3226057, -6008659, -165893, -9726490, -13975824, 1818382, -13466870,
--20251308, -2851322, 20401, 19370302, -9315784, -7239704, 8014409, 14056891, 13764833, 7188165,
--1771674, 2735357, -7223062, 410169, -7568269, 15527381, 13384192, 8465381, -1721745, -17637284,
--1211718, -15301895, 14558865, 11047730, 6369974, -13123273, 8483097, 4108136, 5420786, -3846143,
--11421392, -9156870, -9463960, 548145, -12732431, -23264764, 2681133, 10616085, 6621766, 6963216,
-13364328, 26006026, 12822088, 8518531, 9630927, -17493402, -1719598, -6934225, 22160420, -22444426,
--19582366, 5038534, 14791330, -1217623, 17892834, 14576582, 191126, 5114233, -9250286, -8150774,
-17078400, -7156490, 12037720, 3139621, -6221260, -4524211, -2215666, -4319664, -6513318, 5517423,
-7681012, 4859756, 1519882, -9104257, -9766756, 13239237, -12700218, 10107669, 2029372, -17585744,
-9570261, 15463493, 736050, -5012764, -964220, 697932, 2028835, 10410464, 544387, -8826158,
--2299418, 8829379, -15874199, 3622805, -1647657, 13409962, 15879031, 9356049, 12748537, 14715095,
-12188580, 3641059, -8373576, -11272679, 6849936, 7212324, 1090922, 6333466, 10453950, 23067732,
--11004780, 14794552, -6377490, -5056787, 18456012, 2838437, -17373680, -3697967, 10934450, -13339632,
-943819, -8566312, -13584445, 20077362, 18129594, 14223858, 7534447, 3371013, 6364605, 14639396,
-8930848, 15028091, -5120675, 12523588, -9140227, 15266461, 21714280, 12797929, 11187853, 4954245,
-11550241, 10560251, -2573759, 21420612, 5939940, -13547937, 6961605, -13704704, -8423505, -3106335,
--19960324, -13422, -3637301, -5980205, -9269613, -5594195, -2065879, -994822, -1190243, 558883,
-1748052, -12225088, -6943352, 2140504, -5337034, 4624606, 21384106, -10592463, 185220, -2231773,
-1811403, -10033044, 6359773, -4947803, 16950088, 3120831, 10646687, 14557792, 3798899, -1159104,
--8390755, -21819508, 4304631, 16088411, 13268765, -3002182, -12770012, 12416750, 3154117, 7919383,
--16343424, -11881490, -9074729, 9100499, -30776662, -19549080, -9411884, 22051436, 15925739, -11758010,
-13655312, 12496744, 10518375, 10471667, -10300942, 1214402, 5965173, -10066330, -30902290, -5461051,
--8536248, -18767934, 1779727, -6263673, -4769025, 6015102, 3553549, -3994320, 1035087, 14731201,
-15651398, -28271086, 6948184, 1702418, 13383118, 4748623, 936840, -17492864, 5664525, -4283156,
--4661114, -11936788, -8782671, 23125714, -10038949, -126702, 3088618, -5752572, 25671020, 12286291,
--10806138, -6516539, -19284404, -2566780, 19436874, 5830955, 6311455, -5929203, 12203076, -2454037,
--4251481, 10882910, -5478768, 17857400, -3222299, 13335337, -25720412, -8898635, 16534013, 3883187,
--1060320, 4350265, -27930710, -14081050, 6595996, -12079596, 7317551, 589484, 7589744, 16123307,
-6878927, -14683956, -37129456, -4573604, -3336116, -5482526, 7182259, -16660178, 31416076, -6828998,
-2622615, 31893354, -37829000, -5409512, -6375342, -5077188, -43516072, 1143535, -5662915, -10022843,
-16457778, -16750909, 3626563, 1556389, 8509941, -2798708, -15055471, 9768366, -9451612, 21867826,
--2736431, -27813134, -671626, -2324114, -12040941, -28037546, 13225278, 12076911, -20973936, 16703665,
--18837190, -17152488, -8329552, 246424, 2934000, 1469953, 14184666, -3987877, -10916733, -30561914,
-7271380, -40785008, -19451906, -15089831, -30010010, -20240570, -7624104, -3588982, -13278428, 20768852,
-24613920, 3428458, -5388037, 23785528, 13154948, -4641786, -3995393, 16642998, 15453829, -7948374,
-26433376, -21963926, -7907572, 25246354, 15867757, 36624260, -14024679, -12659416, 8124468, -1542430,
--14170171, -7099044, 3636764, 29962228, 17075180, -2691871, 40534828, -4560182, 16713328, -18973554,
-23739894, 22409528, -1877438, -17683990, 2059437, 6663642, -9779104, 10794327, -14334453, 25770,
--4223564, -4486630, -16264504, -11777337, -7219840, -656593, -5020280, -12609487, 19675246, 13670881,
-3984656, -4935991, 3729105, 19086298, 9226127, 14199162, 9108015, -9584220, -15181636, 32410360,
--3566434, -16691317, -6600291, -6728603, -3460670, 23788214, 1735704, -16876538, -5965173, -43149924,
--9980967, -4177393, 28092844, 19815906, -52536040, -21914534, -11918534, 977642, 3899830, -20026896,
-17068736, 9890773, 15156940, 28458454, -33530272, 36100812, 26454314, -9327058, -21649856, 3389266,
--3819300, 10773389, 33036888, 27666032, 4153770, 10132902, -21547850, -35031364, 50321448, 24568286,
-2592013, 2791192, -10939819, -29943438, 10615549, -2833605, 25512106, 5071283, 9630390, 27065274,
-15555298, -949725, -2708514, 4005057, -16634945, -14583025, -17709224, -10757819, 16825534, -5335423,
-1265405, 19933480, -3354370, 8233453, -28631326, -26838714, -17369384, 14007499, 6311992, -1987496,
-7085086, -10256919, -25705916, 31600758, -30863634, 13124883, 15045807, 10369125, 5473399, 18478024,
--12492986, -33245194, 23848342, 65190624, -11400454, 30668750, -38415260, -22633404, 24438364, 12251931,
--35529580, -12052215, -2465848, 29275034, -7120519, -5520107, -48229260, -33741264, -10359998, -38345468,
-31141734, 29596082, 51863340, -47317656, 20812338, 3183645, -22970558, -3358665, 1447941, -50529216,
-9861245, -9354439, -45156212, -24776592, -1451699, -6233608, -15486578, 5945309, 13859859, 2013266,
--16336445, -276489, -15680926, 41557028, -13133473, 1453846, 30586610, -1239635, -32440962, -21701932,
--22337588, -9167071, -12134893, 34681324, 3026341, 6123013, 16527571, -8896488, -10054518, -5280126,
--10237055, -20398410, -5405753, 39633420, 12144557, 9743670, -26545046, 10022306, 1545651, -18156438,
--2657511, -8920647, 42039140, -33282776, -29522532, -9903121, 4823249, -9718974, 818728, 11753178,
--22614614, -5711770, 35555348, -28836410, 4632122, -7127498, -18111340, -30698816, -23986856, 1169305,
--43329776, -51895552, 11858942, 10480257, 7887171, -46581604, 35353488, 43069396, -15156940, -13159243,
-2355790, -2623151, -10067940, -25223806, 17350594, 63840392, 10054518, 11325829, -14048301, -37539624,
-10532870, 14566918, -55275692, 30331060, 1523103, -15837155, 5554467, 20230370, -28412282, 17715130,
--26344792, 7219303, -1245541, -13365938, -7136625, -3558917, -19261318, 14139569, 12651363, -450972,
-7161321, 998580, 11276437, 14351096, 14145475, 20534776, 17928268, -10590852, 3198677, -21942452,
-24029268, -17914846, 6288369, -3196530, 5350993, 1495186, -16226386, 15663746, -7907572, -15833397,
-34724812, -26819386, 8868034, -7371775, -12838194, 14291504, -2794950, 4665408, 22033182, -25035902,
-1884954, -30763240, -61070140, -830002, 20706574, -6624987, 80684720, 17109540, -30014306, 9728638,
--42213088, 16156593, 32410896, 37893424, -11107859, -5897527, -46525772, -53790708, -2515240, -32605782,
-11079405, 533650, -39602820, 8212515, -2949569, -22984518, 10292352, -14906221, -10191421, -18545132,
-9392020, -20202452, 25837450, -2705830, 9492951, -5928666, 34720516, -9415105, 19002010, -259309,
-22668300, -6311992, -11680700, 7509214, -13213467, -13714367, 1682017, 26027502, 16484621, -17598628,
-18650358, -13174812, -20548734, 5813775, 27493696, -10582799, -11612518, 14959908, 6340446, -13712757,
-1196148, 19025094, -8263517, -18029736, 9480067, 7738458, 11147051, 21454436, 3954591, -12640626,
--4780299, 46956876, 48483200, -13326210, -41337448, 31454730, -14344654, 9099425, 3591667, 52966072,
-6308770, -26939108, -11021960, -6197101, 307090, 8621073, 11362336, 17644262, -21872120, 7145752,
-2791192, 31231392, -9831717, 22362820, 20313584, 13921600, 7151121, 8413841, 11427297, 56317760,
-22507240, -24211268, 5237713, -25316684, -15006616, -919123, 8678518, -3286187, 19543712, -23296440,
--1532230, 10483478, -1586990, 10886668, -2211908, 4462471, 1559610, -16347719, -6210523, 5588290,
--16949552, -15249281, 612033, 5284421, -12273406, 9361955, 7198365, -3698504, -8904541, -107911,
-992674, -1617592, 6061810, 3032784, 4600447, -5826123, -3830574, 14062797, -803696, 2080912,
-5301064, -2610803, 5934571, -4924180, -12894566, -6185290, 11517492, -8164733, -8181376, 2560338,
--10745471, -8675834, 14097156, -13032005, 22819698, 7361037, -11701638, 12725451, 473520, -15261629,
-278636, -533650, -4473209, 11278047, -1764695, -7216082, 18665390, -8633958, -6573985, 14584635,
-1277216, 401043, -1929514, 9380209, -3249143, 8346195, -7959648, -32926830, -41022308, 34704948,
-137272528, 54618564, 62631360, 1524713, -129765992, -94425392, -50347216, -75105560, 33362770, 65935800,
-26276610, 116046256, 64647848, -3649112, 26484916, -57628260, -118294672, -46253040, -82354928, -12353400,
-55996172, 48419312, 42556684, 72631656, 43742632, 12935368, 19131932, -4610111, -84348864, -36246840,
--30776662, -114919368, 20836496, 15944529, -51993800, 84121232, 81843824, -2007360, 103717552, 52125332,
--49085572, 33216740, -48802640, -99426880, -8575439, -59695212, -88379688, 16418049, 8770323, -4301947,
-81210312, 79878336, 46509128, 71253504, 42074572, -26255672, -31397284, -53624276, -94420024, -68037112,
--33630132, -29681982, 16244103, 54370528, 35650376, 59759100, 87377888, 35992900, -11992086, -8795556,
--61041148, -46013596, 4843113, -49038324, -18105972, 18257906, -3688303, 0, 0, 0,
-0, 0, 0, },
+-7335268, -2953327, -4199405, -2286533, 5206574, 2805151, 404264, 4345970, 2943126, -3470334,
+-4744328, -2906082, -2251637, 567473, 1776506, -4748623, -664109, -1881733, -74625, -561030,
+-1050120, -2517925, 5964636, 3493419, -426812, -4907537, -1965484, 1066226, 2006824, -151934,
+-1964411, 882616, 1709934, 592169, 1597728, -1355599, -231391, -3757560, -4873178, -1030792,
+-461172, 2405719, 2901251, 2079838, 576599, 698469, 1660542, 2501282, 708133, 3333432,
+1329829, -2103997, -2516851, -22549, 2368675, 2256469, 957778, 520228, 3595425, 2430952,
+-4287988, -3681324, -2237678, -2025614, -1838246, 2463164, -1668595, 1176284, -4060892, 2962454,
+-2884071, -2058363, 2066416, -1300301, -1811403, 4696547, 2877628, -4475893, -886374, -1729798,
+-31675, 6410776, 481036, -2916283, 3547106, 576599, 455803, 1021665, 825707, -71404,
+5014375, 2637110, -3223910, -1417339, -281857, -1306744, 1476932, 1955284, 1506997, -1569811,
+-2026151, 667867, -4181688, -2098629, 3309809, 125091, 2683818, 1162326, -1991254, 1415192,
+124017, -2014340, 4607963, -3195993, -1322850, 392990, 1649268, -2253784, -445066, -3161633,
+-5768678, 5284421, -1000727, -3273839, 425202, 4822712, 109522, 1717987, -2401424, -1713692,
+-924492, 1289564, -1869385, 3758097, 758062, 3344706, -5159867, 1916629, -1239098, 536871,
+2390686, -1293322, -430570, -4332012, 202937, 1628330, 678605, -1655710, 48855, 1180042,
+-699543, -2048699, 13666586, 4842576, -1209033, 3849365, 72478, 6918119, 4154844, -837519,
+3376918, 6223408, 7867307, -4597763, -4735202, 2079838, -1983201, -1424855, 5589363, 4734665,
+4273493, 3257733, 467078, -60130, -2119566, 2300492, 1395328, 7398618, 608275, -34360,
+-3347390, 1640141, 2000381, -287763, -1124208, -1009854, 1839320, -157840, -1308354, -2531346,
+2688650, -812286, -1095754, 4158065, 5559299, -1326608, -842887, 3444564, 2803540, 5376226,
+3086471, 1594507, 384936, 4612795, 2360622, -5958194, -153545, 2063732, -3696893, 284542,
+408559, -4168803, 2051921, -1904281, 3097745, -469762, -756451, 2024540, 366683, -2729989,
+-483721, 1998770, -825707, -374199, -1133871, 768799, 3197066, 1176284, -3799436, 4766340,
+-370441, -9005473, -4190278, -1750199, -1949378, -4904853, -4503273, -2831457, 4875862, -5367099,
+-2508261, -2552284, 975494, 8132521, -1229971, -653372, 1981054, 4650913, -7134478, -1169842,
+1440425, -3153043, 2499671, 3973919, -4410395, -280247, 545998, -2563559, -6488622, 1115618,
+-2748242, 867047, -2535641, 3690451, -4496294, -4177393, -10297721, -2776160, 3487514, -583042,
+-3983045, -1950989, -546535, -4138201, 151398, -707059, 2772402, 2231236, -1132798, 117038,
+-1127966, -4368519, 5233955, 915365, 3499325, -1331440, -95026, 924492, 1435056, 4110821,
+-1457068, -1005022, 1065152, -124017, 4325032, 2400350, -4089346, -1543504, -1199907, -6149857,
+-959925, -557809, 3345780, -2309619, -19718732, -6285685, -1656784, -1679332, -1557463, 7571491,
+-6950331, 3324842, -1535988, 1487132, -1899449, -1699733, -5558762, 874026, -1942936, 375273,
+-8112120, 115427, -702227, -1523103, 13959, 1508070, 1404454, -818728, -402653, -3339874,
+1189706, -2683281, 1922535, -27380, 1674500, 5131412, -1158031, -5916318, -2325725, -6920266,
+1162862, 1241246, -412317, 1197759, -2190970, 2321967, 1421634, -3048890, 505196, -8288750,
+-1521492, -5531381, 3300146, 5525476, -4569845, -340376, 1855963, 889595, -7633768, 1377611,
+4376572, -3740380, -1497333, -8967892, 3395709, -1220845, 4077535, 6800544, 4171487, -5267241,
+1505923, 1411971, 672162, -5822902, 1931662, -2354179, 4372814, -1366873, 171262, 2172180,
+1802276, -11871290, 964220, 2579128, -4780299, -158914, 11596412, 9694278, 4663261, -956167,
+-2567854, 6346888, 3346317, 2292439, 1862405, -4427575, 1246614, 847719, 5232881, -4997195,
+-2865280, -644245, 298500, -717796, -6622303, -3825205, -4788352, -4777614, 2433636, 3848828,
+1794760, 1923609, -325344, 1890323, -1225676, -278636, -59593, -1483374, -999654, 3117073,
+1648731, -3818226, -5189931, -34360, -5217312, 3234647, -1944547, -7567733, 437013, 4478577,
+5204964, 4406100, -344134, 4195646, -6288906, -1384590, -3167539, 58519, -257698, 3026341,
+-2665027, -4726612, 5596880, -5252745, -3583613, 4469451, 8276402, 2749853, 794569, -8335995,
+8520141, 1868311, 5344013, 11244761, -4107063, 2183454, -1401770, -2419140, 1991254, 18580028,
+13009993, -4619774, -6859063, 10324028, 6650220, 10858751, 15843597, -7998840, 5446556, 2680597,
+4546223, 2095944, 2696703, 6597070, 1553168, 6731288, 130997, -4286378, 1706713, -1384053,
+2160369, -802622, 12230456, 2075543, 2597918, 1657857, 357019, 4298726, 1695438, 226023,
+-943282, 3059091, -2546916, 5867999, -4774393, 7066832, -3540127, 4250944, 2059974, 2573222,
+1884954, 10378788, 7767985, 434329, -2473901, -5733245, 5947993, -6978248, 1480690, -3101503,
+2777770, 6447283, 505196, -11035382, -9177271, 818191, -5840619, -6095633, -3790846, -7017440,
+2107755, 11861089, 5628018, -4528506, -132070, 1260036, -3580929, -3655017, -1068373, 5752572,
+5999533, -7070590, 2659122, 7543573, 702764, 2435783, 7866233, 1857573, 11526618, -732829,
+-426276, -3609383, -3445638, 4284767, 8670465, -2282775, 2105608, 973347, 9430138, 4349192,
+-4762582, -3819300, 390842, 2385318, 8567923, 8992588, 12913893, 2756295, 3437585, -1931662,
+5146982, 6474127, -2566780, -2626909, 4530117, -3226594, -5216238, 5135171, 1255741, -5415954,
+-7308961, 11291469, 5303211, 65498, 6799470, 1795296, -4989679, 10770704, -2524904, 774705,
+-341450, 3148748, -3831648, 3158949, -3818226, 3098282, -3528853, 3663070, -2866891, 4815732,
+-3585761, -3136400, 9664750, -11494943, 766115, 1986959, -4002373, 1380832, -13342853, -6053757,
+6711424, -4777078, 4297652, -796716, 3108483, 1848447, 2867428, 2132451, -5353677, 4048007,
+-2427194, 354872, -9480603, -8393440, 85899, 3463354, 6843494, -7961796, 2367601, -7170448,
+5925981, 4322885, -9571335, -2141578, 1142998, -11487427, -6356015, 6767258, -799938, -637803,
+1726040, -864899, -11796665, 10711648, 780610, -7853348, -3670587, 1283658, -927176, -7563438,
+-2153926, -4422206, 1285269, -547071, -2309082, 2190433, -10261751, -4767414, 2693481, 13276818,
+-2231773, -8119636, -5589900, -4619774, 9167608, -9989557, -1970853, -909459, -10472741, -13253195,
+3149822, -9274982, -1505386, 1073742, 6764037, 3543885, 440771, 1171989, 8036421, -3878892,
+-2746632, 11766600, -8343511, 5908265, -3069291, -3503083, -1586990, -2003065, 12524662, -329102,
+4498442, -14101451, -10365367, -644782, -2842195, 13582297, -811749, 8082592, 1983201, -15834471,
+1401770, -1444720, 10787347, 1393717, -11700565, 13944148, 4323422, -7971460, -17900350, -7264937,
+17449916, 1021129, -2343979, -2785823, 1699196, 740345, 5310727, 3037079, 5701032, -1086090,
+10266582, -5172215, -12317429, 705985, 471910, -2713883, -536334, 4783520, -3227131, -1656784,
+-1152125, 9992778, 7500624, 4158065, -804770, -13065291, -338766, -442919, -636729, -1948841,
+-297427, -5548024, -10935524, -1412507, 7380365, 7565048, -2821257, 8120710, -2610803, 3705483,
+8477729, 8557185, -18221398, 6587406, 6418829, 3109020, -4546223, -15460809, 9490267, 6145025,
+2912525, -5174362, -3362960, -5881421, 3330747, -6529424, -1597728, 788127, 6145025, -3266860,
+2872796, 2691334, -12185896, -469225, -8614631, 14236206, 1522029, 9586904, 12512313, 12082817,
+9881646, 11829951, -15036681, -10452877, -4981625, -5400385, -7048578, -6062883, -12033961, -4616553,
+1119376, 6910066, 269509, -7512972, -65498, 6884833, 612033, -6567005, -2617783, 16231218,
+1851131, 5789079, 2142652, 6402723, 1608465, 1724966, -10096394, 5207111, 555661, 1834488,
+-10622528, 3175592, -16414291, -573378, -5115843, 3524558, -1414655, -12684112, -212064, -12640089,
+2265595, -10618770, 9168681, -5812702, 14368276, -195421, -279173, 6577206, 1511292, -2945274,
+-2187749, 2243584, -5018133, 2692408, 8706436, 3820374, -6788733, -4174171, 18734110, 718333,
+14829448, -14784888, -3342558, -2240362, 10532334, -13004087, 1123671, 5126581, -12961674, 7805030,
+-8696235, 1612223, -4848481, -15177878, 2091649, 15122043, 10950556, 12361990, -4336843, -3037079,
+2766496, -2041183, 14821395, 5125507, 6870337, 12789876, -1289564, 4782446, -9055402, 12684649,
+5935108, -3245922, -8232379, -7324530, 8060580, -14851997, 5267778, 8352101, -6680822, -8401493,
+-5248450, 7715372, 2385854, -3226057, -6008659, -165893, -9726490, -13975824, 1818382, -13466870,
+-20251308, -2851322, 20401, 19370302, -9315784, -7239704, 8014409, 14056891, 13764833, 7188165,
+-1771674, 2735357, -7223062, 410169, -7568269, 15527381, 13384192, 8465381, -1721745, -17637284,
+-1211718, -15301895, 14558865, 11047730, 6369974, -13123273, 8483097, 4108136, 5420786, -3846143,
+-11421392, -9156870, -9463960, 548145, -12732431, -23264764, 2681133, 10616085, 6621766, 6963216,
+13364328, 26006026, 12822088, 8518531, 9630927, -17493402, -1719598, -6934225, 22160420, -22444426,
+-19582366, 5038534, 14791330, -1217623, 17892834, 14576582, 191126, 5114233, -9250286, -8150774,
+17078400, -7156490, 12037720, 3139621, -6221260, -4524211, -2215666, -4319664, -6513318, 5517423,
+7681012, 4859756, 1519882, -9104257, -9766756, 13239237, -12700218, 10107669, 2029372, -17585744,
+9570261, 15463493, 736050, -5012764, -964220, 697932, 2028835, 10410464, 544387, -8826158,
+-2299418, 8829379, -15874199, 3622805, -1647657, 13409962, 15879031, 9356049, 12748537, 14715095,
+12188580, 3641059, -8373576, -11272679, 6849936, 7212324, 1090922, 6333466, 10453950, 23067732,
+-11004780, 14794552, -6377490, -5056787, 18456012, 2838437, -17373680, -3697967, 10934450, -13339632,
+943819, -8566312, -13584445, 20077362, 18129594, 14223858, 7534447, 3371013, 6364605, 14639396,
+8930848, 15028091, -5120675, 12523588, -9140227, 15266461, 21714280, 12797929, 11187853, 4954245,
+11550241, 10560251, -2573759, 21420612, 5939940, -13547937, 6961605, -13704704, -8423505, -3106335,
+-19960324, -13422, -3637301, -5980205, -9269613, -5594195, -2065879, -994822, -1190243, 558883,
+1748052, -12225088, -6943352, 2140504, -5337034, 4624606, 21384106, -10592463, 185220, -2231773,
+1811403, -10033044, 6359773, -4947803, 16950088, 3120831, 10646687, 14557792, 3798899, -1159104,
+-8390755, -21819508, 4304631, 16088411, 13268765, -3002182, -12770012, 12416750, 3154117, 7919383,
+-16343424, -11881490, -9074729, 9100499, -30776662, -19549080, -9411884, 22051436, 15925739, -11758010,
+13655312, 12496744, 10518375, 10471667, -10300942, 1214402, 5965173, -10066330, -30902290, -5461051,
+-8536248, -18767934, 1779727, -6263673, -4769025, 6015102, 3553549, -3994320, 1035087, 14731201,
+15651398, -28271086, 6948184, 1702418, 13383118, 4748623, 936840, -17492864, 5664525, -4283156,
+-4661114, -11936788, -8782671, 23125714, -10038949, -126702, 3088618, -5752572, 25671020, 12286291,
+-10806138, -6516539, -19284404, -2566780, 19436874, 5830955, 6311455, -5929203, 12203076, -2454037,
+-4251481, 10882910, -5478768, 17857400, -3222299, 13335337, -25720412, -8898635, 16534013, 3883187,
+-1060320, 4350265, -27930710, -14081050, 6595996, -12079596, 7317551, 589484, 7589744, 16123307,
+6878927, -14683956, -37129456, -4573604, -3336116, -5482526, 7182259, -16660178, 31416076, -6828998,
+2622615, 31893354, -37829000, -5409512, -6375342, -5077188, -43516072, 1143535, -5662915, -10022843,
+16457778, -16750909, 3626563, 1556389, 8509941, -2798708, -15055471, 9768366, -9451612, 21867826,
+-2736431, -27813134, -671626, -2324114, -12040941, -28037546, 13225278, 12076911, -20973936, 16703665,
+-18837190, -17152488, -8329552, 246424, 2934000, 1469953, 14184666, -3987877, -10916733, -30561914,
+7271380, -40785008, -19451906, -15089831, -30010010, -20240570, -7624104, -3588982, -13278428, 20768852,
+24613920, 3428458, -5388037, 23785528, 13154948, -4641786, -3995393, 16642998, 15453829, -7948374,
+26433376, -21963926, -7907572, 25246354, 15867757, 36624260, -14024679, -12659416, 8124468, -1542430,
+-14170171, -7099044, 3636764, 29962228, 17075180, -2691871, 40534828, -4560182, 16713328, -18973554,
+23739894, 22409528, -1877438, -17683990, 2059437, 6663642, -9779104, 10794327, -14334453, 25770,
+-4223564, -4486630, -16264504, -11777337, -7219840, -656593, -5020280, -12609487, 19675246, 13670881,
+3984656, -4935991, 3729105, 19086298, 9226127, 14199162, 9108015, -9584220, -15181636, 32410360,
+-3566434, -16691317, -6600291, -6728603, -3460670, 23788214, 1735704, -16876538, -5965173, -43149924,
+-9980967, -4177393, 28092844, 19815906, -52536040, -21914534, -11918534, 977642, 3899830, -20026896,
+17068736, 9890773, 15156940, 28458454, -33530272, 36100812, 26454314, -9327058, -21649856, 3389266,
+-3819300, 10773389, 33036888, 27666032, 4153770, 10132902, -21547850, -35031364, 50321448, 24568286,
+2592013, 2791192, -10939819, -29943438, 10615549, -2833605, 25512106, 5071283, 9630390, 27065274,
+15555298, -949725, -2708514, 4005057, -16634945, -14583025, -17709224, -10757819, 16825534, -5335423,
+1265405, 19933480, -3354370, 8233453, -28631326, -26838714, -17369384, 14007499, 6311992, -1987496,
+7085086, -10256919, -25705916, 31600758, -30863634, 13124883, 15045807, 10369125, 5473399, 18478024,
+-12492986, -33245194, 23848342, 65190624, -11400454, 30668750, -38415260, -22633404, 24438364, 12251931,
+-35529580, -12052215, -2465848, 29275034, -7120519, -5520107, -48229260, -33741264, -10359998, -38345468,
+31141734, 29596082, 51863340, -47317656, 20812338, 3183645, -22970558, -3358665, 1447941, -50529216,
+9861245, -9354439, -45156212, -24776592, -1451699, -6233608, -15486578, 5945309, 13859859, 2013266,
+-16336445, -276489, -15680926, 41557028, -13133473, 1453846, 30586610, -1239635, -32440962, -21701932,
+-22337588, -9167071, -12134893, 34681324, 3026341, 6123013, 16527571, -8896488, -10054518, -5280126,
+-10237055, -20398410, -5405753, 39633420, 12144557, 9743670, -26545046, 10022306, 1545651, -18156438,
+-2657511, -8920647, 42039140, -33282776, -29522532, -9903121, 4823249, -9718974, 818728, 11753178,
+-22614614, -5711770, 35555348, -28836410, 4632122, -7127498, -18111340, -30698816, -23986856, 1169305,
+-43329776, -51895552, 11858942, 10480257, 7887171, -46581604, 35353488, 43069396, -15156940, -13159243,
+2355790, -2623151, -10067940, -25223806, 17350594, 63840392, 10054518, 11325829, -14048301, -37539624,
+10532870, 14566918, -55275692, 30331060, 1523103, -15837155, 5554467, 20230370, -28412282, 17715130,
+-26344792, 7219303, -1245541, -13365938, -7136625, -3558917, -19261318, 14139569, 12651363, -450972,
+7161321, 998580, 11276437, 14351096, 14145475, 20534776, 17928268, -10590852, 3198677, -21942452,
+24029268, -17914846, 6288369, -3196530, 5350993, 1495186, -16226386, 15663746, -7907572, -15833397,
+34724812, -26819386, 8868034, -7371775, -12838194, 14291504, -2794950, 4665408, 22033182, -25035902,
+1884954, -30763240, -61070140, -830002, 20706574, -6624987, 80684720, 17109540, -30014306, 9728638,
+-42213088, 16156593, 32410896, 37893424, -11107859, -5897527, -46525772, -53790708, -2515240, -32605782,
+11079405, 533650, -39602820, 8212515, -2949569, -22984518, 10292352, -14906221, -10191421, -18545132,
+9392020, -20202452, 25837450, -2705830, 9492951, -5928666, 34720516, -9415105, 19002010, -259309,
+22668300, -6311992, -11680700, 7509214, -13213467, -13714367, 1682017, 26027502, 16484621, -17598628,
+18650358, -13174812, -20548734, 5813775, 27493696, -10582799, -11612518, 14959908, 6340446, -13712757,
+1196148, 19025094, -8263517, -18029736, 9480067, 7738458, 11147051, 21454436, 3954591, -12640626,
+-4780299, 46956876, 48483200, -13326210, -41337448, 31454730, -14344654, 9099425, 3591667, 52966072,
+6308770, -26939108, -11021960, -6197101, 307090, 8621073, 11362336, 17644262, -21872120, 7145752,
+2791192, 31231392, -9831717, 22362820, 20313584, 13921600, 7151121, 8413841, 11427297, 56317760,
+22507240, -24211268, 5237713, -25316684, -15006616, -919123, 8678518, -3286187, 19543712, -23296440,
+-1532230, 10483478, -1586990, 10886668, -2211908, 4462471, 1559610, -16347719, -6210523, 5588290,
+-16949552, -15249281, 612033, 5284421, -12273406, 9361955, 7198365, -3698504, -8904541, -107911,
+992674, -1617592, 6061810, 3032784, 4600447, -5826123, -3830574, 14062797, -803696, 2080912,
+5301064, -2610803, 5934571, -4924180, -12894566, -6185290, 11517492, -8164733, -8181376, 2560338,
+-10745471, -8675834, 14097156, -13032005, 22819698, 7361037, -11701638, 12725451, 473520, -15261629,
+278636, -533650, -4473209, 11278047, -1764695, -7216082, 18665390, -8633958, -6573985, 14584635,
+1277216, 401043, -1929514, 9380209, -3249143, 8346195, -7959648, -32926830, -41022308, 34704948,
+137272528, 54618564, 62631360, 1524713, -129765992, -94425392, -50347216, -75105560, 33362770, 65935800,
+26276610, 116046256, 64647848, -3649112, 26484916, -57628260, -118294672, -46253040, -82354928, -12353400,
+55996172, 48419312, 42556684, 72631656, 43742632, 12935368, 19131932, -4610111, -84348864, -36246840,
+-30776662, -114919368, 20836496, 15944529, -51993800, 84121232, 81843824, -2007360, 103717552, 52125332,
+-49085572, 33216740, -48802640, -99426880, -8575439, -59695212, -88379688, 16418049, 8770323, -4301947,
+81210312, 79878336, 46509128, 71253504, 42074572, -26255672, -31397284, -53624276, -94420024, -68037112,
+-33630132, -29681982, 16244103, 54370528, 35650376, 59759100, 87377888, 35992900, -11992086, -8795556,
+-61041148, -46013596, 4843113, -49038324, -18105972, 18257906, -3688303, 0, 0, 0,
+0, 0, 0, },
{
-2585034,
--6458557, -1875290, 1891396, 347892, 2050847, 1841467, 5793911, -1076426, -266288, -651224,
--4194573, -3362423, 790274, 675921, -274341, 2022930, -6150930, -3652333, -3535832, 2113661,
--63888, -900869, -1084479, -1076963, 969052, 1435056, -373662, -797790, 2165737, -3448859,
-3494493, 2368675, -1294396, -2873870, -571231, -4226248, -1808718, -5934034, 2421825, 2223719,
--376347, 1289564, -3872987, 3503620, -75162, -586800, 2807298, -3904125, 124017, 3304977,
-843961, -905701, 246961, 469225, -3580392, 2785823, -629750, 3441880, 378494, 892816,
-668941, 1102733, -2083059, -2416993, -2416993, 1851131, -1467805, 354335, 4126390, 5426155,
-3099356, -549756, 1268089, -24159, 74625, 490700, 3484829, -4723927, -3761318, -701690,
-3730716, 5383742, -2515777, 3121904, -1714229, -4576825, -1198833, -2582886, 1528472, -678068,
--2146410, 1947768, 3083250, 623307, 3718368, -6801081, -7243999, -4742181, 717260, -82141,
--1206349, 285078, 2262374, -797253, 3041374, 2409477, -3143379, 1137093, -199179, 3811784,
-3624953, 1272921, -3770981, 2415382, -2230162, 1183800, 2540473, -6177774, 6693170, 9674951,
-1321776, 4328254, -3553549, -830539, -3331284, -1864553, 3074123, -1126892, -3442416, -1048509,
--2145873, 1553168, -2087891, -2088965, 257698, 1636919, -1709934, -2168422, -792958, 3296388,
-3214246, -2832531, -865436, -3332895, 850404, 3885335, 1321239, -1782948, -1713155, 1229434,
--90731, -3167002, 14972256, 6973953, -576599, 3205119, 2803003, -3544959, -1820529, 4228932,
-1843615, 4598836, -3349001, 6659884, 2427730, -6445136, 5116917, 340913, -165893, -3368328,
-3732864, -6968585, -6085969, -1223529, -2193655, -1096827, -2202245, 888521, -1353989, -2850785,
--2159295, 2526515, -2714956, 1790465, 1038308, 768262, -2990908, 4225711, -8704825, -1436130,
--87510, -1427003, -1127966, 841814, 1578937, -2680060, 2172717, -3263638, 3185792, 1130113,
-668941, 3440806, -2380486, -440234, 1312113, 5334887, 1253594, 2326262, -1232656, -4356171,
--6337224, 1333051, 3390877, 4662187, -1862942, -6830609, 1018444, -2630668, -1995012, -1334661,
-1926293, 565862, 6864969, 248034, 2289755, 1962263, -1087164, -858993, -2025614, 8096550,
-1890323, -6829535, -7741142, 2138894, -2339684, -6404870, 7326141, -3555159, -1151588, -962610,
-5768141, 1243393, -3257196, 4059818, -3045132, 6119255, -8310225, -5472325, 6760816, -6901476,
--6943889, -2750927, 5807870, 2581275, 2841658, -583579, 5232881, 3191161, -404264, -6653978,
-1963337, -1770600, 2577517, 2258616, 1998770, 5985574, 1741609, -5646272, 714038, 4159676,
-6102612, 2137820, -3023657, -608812, -4544076, 2205466, -8219494, -155156, 9403831, 676457,
-1264331, -4490925, -5497022, 1100585, 1599875, 6946036, -1101659, 815507, 1103270, -742493,
-1125281, 2503429, 880468, 5015985, -746251, 3447785, 1072131, 1177358, 1268626, 5899675,
-1060857, -400506, 2057289, -805306, -18246632, -12525735, -2293513, 1672353, 3395172, -26307,
-386547, -7439420, -14496, -1867237, -751619, -150861, -1357210, -1115081, -4792110, 2444910,
--10583336, -4318053, 1488743, -2483028, -2869575, -2186675, -5767604, -3430605, -2070174, -3213709,
-1955821, -5088463, -2100239, 5840082, 4537633, 221728, 3520800, 1957968, -1337882, -4207458,
-3064996, 8873402, 1708860, 1000727, -2844879, -3292629, 3388729, -7822209, -3345780, 8479876,
--7031399, 2301566, -1037772, -3991098, 2673617, 553514, -1273458, 505196, 2261837, -2687576,
-1021665, -488553, 6333466, 4762045, 1807644, 1371705, 3480534, -9127, 248571, -1634235,
--9477919, 5499706, 4805532, -2660732, 1586990, -4175245, 726923, 1108638, -945967, 2062658,
--858457, -15761993, 2145873, 4093104, -1354525, -1097901, -9254581, -3339337, 2088965, -7655243,
--7983271, 1848983, -7618198, -3448859, -558346, -4100620, 2090575, -3181497, 5054103, -2609730,
--2276870, 1970853, 3406983, 7283728, 3995930, -7607461, -834834, -353798, 3453154, 6019934,
-9435506, -4169340, -4298726, 5309654, -5812702, 1442035, 1112397, 8509941, 2615635, 4820564,
--6637335, -2576444, -8903467, 6846178, 6563247, 8198556, -574452, -1601486, -5846524, -1012002,
-4968741, -2403571, -3923990, -3106872, -4681515, 1001801, 558346, 1345399, -6230387, -14496,
--6103149, -255014, -1255741, 2357937, 1615982, -1709934, -2937221, -7173133, -741956, -548145,
-4168803, -2743947, 7177964, -4141959, 820339, 3537443, 6702834, -4945118, 587874, 19498614,
-17476222, -1027034, 912144, 8463233, 1612223, 3928821, -2265059, 4450660, -3361349, 8537321,
-3460670, -416612, 2218351, 191126, 11733314, 7224672, -7057705, -6637872, 2791729, 753767,
--2008434, -2065879, 1811939, 4987531, 4409858, 2025614, 949188, 2410014, -1532230, -616865,
-6611566, -7341173, 3113315, 7872675, 6615324, 10870562, -768799, -2212982, -645856, 224949,
--3284039, 11840688, 11642583, 7579007, -3431142, -1631014, 5132486, 3406983, -3134789, 255014,
-6782290, -2940442, -2728915, 3592740, -11701102, -1923609, 942208, 1231045, -3795141, -8375186,
-3446175, 4827007, -6157910, -2908767, -6748468, 2058900, 628676, -1969243, -1416266, -6528351,
-10109279, -3080565, 1155883, -10566693, -3020973, -4539781, 13015362, -418222, 8183524, 11404749,
--6089190, -13865765, 469225, 10673531, -8330626, 7507603, -2346126, -10036802, -4794257, 10207527,
--10071698, -8727374, 6233608, -10106058, 3219078, 4853313, 3811247, -2864206, 5966247, 1731946,
-973884, 3941169, -6660421, 8804683, 4147328, 3803194, -2024540, -1023276, 16234440, -5808407,
-801011, 4219269, 8046085, -11320460, -9498320, -8711267, 83752, 537945, -836982, 5119601,
-1357747, 9213242, 3477313, 5330055, -1175747, 570694, -4927938, 8169028, -4105452, 8035347,
--4832912, -7326141, 11893838, 9705015, -14469208, -12710419, -8577050, -6698002, 4009352, 364535,
--3309272, 6105833, 6662031, -9004399, 4525822, -1170916, -17747878, -6213744, -9274982, -8463770,
-2338610, -3327526, -7707319, -10177999, 6001143, -5742372, -4672925, -3469260, -12403329, -1016297,
-5147519, -3025268, -1004486, -4176856, 9728101, 1800665, 6094559, 5118528, -8337606, 8530879,
-12113955, -3546569, -5346698, 1583232, -2439542, 5600101, -15618649, 6118718, 12983686, -1521492,
--4642323, -3543348, 5472862, 12129525, -3126736, 3237332, -5616744, 8377334, -10133438, -3536369,
-1586990, -1313723, -7946763, 14242648, 9553618, 7617662, -3468186, -10365367, -1655710, -14818711,
-2228014, -906238, -857383, -137976, -2655901, 8300561, 6483253, -10282689, 5405217, -6114423,
-8180839, -681289, -2221572, -630823, -9640054, -1690607, -8872866, -18441516, -1415192, 2128693,
-833761, -7182796, -920197, -2211908, -14528264, -28991, 11184632, -8032126, 2303176, -19401442,
-1384053, 11298448, 6203544, -8832063, -7142531, 14181445, 3324305, 3202972, -2733747, 3692598,
--76236, -9445707, -2392297, -9914932, 4798016, -5883569, -806380, -9645423, -10625749, -14372571,
-9154186, 6164352, -4496294, -5071820, 4202089, -13174275, -1051193, 1085553, 3374234, 5918465,
-3031710, 471373, -4386236, 2032593, -3995930, 3606699, -3808026, 2423435, 1476395, -4081293,
--5185636, -10267119, -6567005, 2750927, -17419850, -4708358, 10056666, 5301601, -1784022, 23268522,
--2969433, 10844256, 11014981, -16749299, 1542430, -2128693, -13768591, -7349763, -7321309, 337692,
-2234994, 16064251, -1953136, 1581085, 11526082, 8046621, -1128503, 10748156, -4258460, -4092567,
--6222334, -9822590, -12746926, -5740224, 9500468, -15567646, 1675037, 12779138, -1743757, 3760781,
--5921686, 3316789, 6191732, -3923990, 5396090, -7881802, -7477538, 11875048, 7385197, 7508677,
-10521596, -505196, -7436736, 10225243, -8654896, -12994424, 888521, 11355894, -967441, -10618233,
-2137283, 13461501, -1238561, 3416110, 2120640, 19069118, 2026688, 3792993, 10413685, -1578937,
--4128537, -9664750, 2177549, -1628866, -8070781, -33286, -4366908, 3257733, 14121316, -170725,
--6989523, -2649458, -6381785, -4204773, -123480, -3380676, 2843268, -10089415, 11654931, -5823439,
-18973018, -4732517, -11778411, 517544, 1859721, 6113886, 3986267, 3215857, -11949673, -10982768,
-9200357, -11432129, -14138495, 4260071, 4683662, -3814468, 18578954, -14096620, -17261474, 6585796,
--11142219, 140123, 767189, -10328859, 5690832, 611496, 14078903, 14861124, 21342766, 9789841,
-4455492, 2974802, 6958384, -7287486, 8045548, -12923557, 6152004, -1289564, -1245541, -24776592,
--9744207, -4102768, 8236137, -1106491, 1832877, 2626373, 2009508, -12709882, 12825846, -565325,
-5041218, 358093, 11899744, -13206488, 8778376, -6541235, -689342, 9797894, -11646341, -5124433,
--12692165, -4983236, -14123463, 12301860, 8593693, 16559783, -1401770, 3817689, -15832323, 3323768,
--16449725, 15163919, 3569118, -2639794, 13662291, 14633490, 6641630, -8986145, -14176076, -19137300,
--1965484, -6904697, -10807748, 10079751, -4235912, 23727546, -19332722, -6720013, 11880953, -14565845,
--7783555, 2968359, -2240362, -2474975, -16765942, 5754720, -1654636, -8212515, 502511, 4224101,
-3391951, 21974126, -4850629, 2799245, -976568, -7719130, 10189273, -4060355, 3868692, 773094,
-14461155, -4961761, 16813186, -201327, 8399345, 6874632, -1260036, -5951214, -16237661, 7159174,
-16935592, 295279, -142271, 11127723, 9911711, -1377611, 1752884, 19472308, 12510166, -4372277,
-4238059, 12500502, -3526705, -15469935, 129923, -11486353, -1938104, -7623030, 326954, -21210696,
--6400575, -8347806, -35433, 3255048, 3850438, 18708878, 21355114, 10417980, -15626702, -10058813,
-11687680, 16002511, 2998424, -16998944, -3293703, -5077188, -17180406, -11790759, -13283797, 13639742,
--6638946, 434865, -16515760, 20673288, 15348603, -3809099, 5451387, 35112432, -3520800, -10087804,
--16303159, -3745748, 7381438, 4203163, -9384504, 5432060, -10714870, -14980309, 19808926, -11994233,
-14670535, -10394895, -18372260, 1980517, 20577188, 15092515, -17131550, -9567040, 2608119, 4350802,
-6244346, -103616, 13376139, 8872329, 17977122, -5774584, -4264903, 507343, -4757213, -17172890,
--14597520, -3044058, 18106508, 5192079, 458488, 1860795, -18894098, -19107236, -16744467, 9351218,
-8256001, -5709622, -5600101, 3030636, 1201517, -9573482, 2132988, 21488796, 2565169, 13955422,
-11476153, 10256382, 20736102, 32466194, 9287330, 1892470, 3561602, 13668733, -7401840, -2058363,
-7387881, -1378148, 3563212, -1419487, 12611098, 6261526, 8718247, -1111860, -4351876, 8411157,
-17231408, 324270, -15422154, 11121818, -23692650, -24975234, -9736691, 15685757, -9438191, -24478630,
--16585553, -4565550, 9290551, 8373576, -37216964, 1978369, 19024020, -3496104, -4286378, 22972170,
--12128451, -12668543, -15996069, -5303211, -5235565, -10701985, 3474629, 5386963, 9150965, 6404333,
--4847408, -3908957, -1459215, -4373888, 1941325, 4561256, 19124952, -7743289, -23735600, 13238163,
-609885, -390842, -19589882, 9327595, 4489852, -1705102, 23554674, -6156836, 3153580, -1686848,
-10814191, 12669617, -12678207, -821413, -6744710, -346282, 7690139, -4516695, 11381663, -15790984,
--12753905, -8029978, -13639206, -1886028, 2355790, 2953864, -19356880, -12715788, 10868415, 17235704,
--6628209, -8439074, 9929428, -17894444, -15627775, -15575162, 19434190, -29581050, 11353209, -766652,
--16419123, -4845260, 16772384, 39581344, -3512210, -9830106, 14463302, 30458298, 12284680, -6190659,
-6954626, -3959960, -19252728, -35203164, -222265, 36652716, -4421132, -4479651, -23649700, -3649649,
-30602, 908386, 10123238, -580357, 8711267, -1236951, 1318555, -19819664, 4314295, 14710263,
--9364639, 18660022, -6849936, -3010772, -16332687, 9837623, -7246147, -7610682, -19099182, -30058328,
-16241419, -15577846, -11802033, 3195456, 4715337, -7869991, 3218004, 14243185, -2910377, -17081084,
--7632694, -21380348, -512712, 3791919, 15470472, 961536, -2048699, -5187247, -6133214, 2852932,
-16103980, 469225, -6746857, 14138495, -13218836, -259846, -24248312, -9720048, -2907156, 30628486,
--18228378, 4656819, -4196720, 2231773, -1145146, -5746666, 3483219, 11078331, 7141457, -26317412,
-29945048, 5707475, 13507672, 922344, -5527623, -10596221, 4126927, -16934520, -9346923, 35213364,
--3969624, 2659122, -18031884, 16273631, -9114457, 11903502, -9200357, 21151640, 2627446, 1887638,
--9936407, -8834211, 13001940, 27496918, -11067594, -17245904, 8506183, -6976638, 18859202, 22855132,
-11959336, -3789235, 14875619, -9833328, -8300025, 19139984, 27353572, -30302068, 3033858, 4146254,
-5662915, -10478646, -112206, 11766063, -29700772, 8759586, 18319646, 6308233, -12862353, -4093641,
-22373022, 17434882, 6560026, -10625749, -12720083, -26629870, 38073812, 6356552, 19907710, -3234110,
--7284265, 3735011, 11892764, -126165, 105764, -30988190, 5445482, 28212566, -4398584, 26973468,
--15775415, -8053064, -10754061, 5734855, 26710402, -8938364, 60666, 22562000, 29461328, -10377715,
--20074678, -19907174, -15415174, 14716705, 9834401, 25524454, -8157217, 18617072, -10197863, -3315178,
-16174847, -79457, 22258668, -27198418, 16646756, 3614752, 6986301, -10691247, 7652558, 21065204,
-39374112, -8831527, 9400610, -168577, -27462020, 24800752, 1615982, 9913321, -5757404, -12115566,
--5556077, -680215, -11293080, -6167573, 33089502, 2703145, 12077448, -9443022, 23090282, 437013,
-10612864, 5248987, -15279883, -2721936, -9907953, 550830, 3132105, 28851442, 13256417, 1497870,
-2061584, -714038, -3749507, 4989679, 1421634, 18209588, 13084081, 7672959, -10042707, 12788265,
-24536074, -24272470, 21257940, 4117263, 5196374, -24289650, -13505525, -30570504, -26900454, -4278861,
-14994268, 14812805, -44913548, 718870, -21072184, 11590506, 41873784, 23535348, -27887222, 17934710,
-10799158, 14457397, -36700496, -55248848, -15037754, -5845451, -14263050, 3512210, 18274548, -19215684,
-27827094, 10775536, -41375568, -30951144, -6809671, 22735946, 279173, 2253784, -4800700, -12576201,
--40068288, 1990181, -33745020, -27173184, 12976707, 11052025, 9252433, -4325569, -13392782, 30278446,
-17462800, -12419435, -26404386, 20067160, 9521406, 4926328, -12658342, -30096984, 11086384, -14017700,
-4118337, -25639882, 31003758, 966905, -12979391, 3229816, 7540889, 26053272, 15863462, -6527277,
--1598802, 9159018, 8718247, 10038412, -6112812, -40514964, -32034014, 6434935, -4473746, 23678692,
--4553739, -10263898, -28502476, 33105608, 12972949, -23303956, -23507430, 33901788, 32530082, -531502,
-24288576, -3321620, 2020782, -9827422, -4198868, -18304614, 2832531, 19803020, 1638530, -13492103,
--35641248, 56035900, 1127966, -42862164, -3543348, -15785615, 7013682, 21673478, 19157164, -23725400,
--38793220, 6850473, -18718004, 6147172, -4044786, 17253420, -5866389, 2704219, 9791989, -15455440,
--19589882, 2317135, 4761508, 17091822, -691490, -26614302, 17381196, -14716705, 13588740, -12751221,
--9197136, -1177895, -4595078, -28622736, 5099200, 8376797, -28297928, 12127914, -11336566, 5907728,
--9686225, 27322972, 20665236, -26918708, -14834817, 18926848, 22919556, -27539868, 36388572, 2725694,
-29205240, 21873194, 34520800, -10458245, -15299747, 8216810, -29498372, 4807679, 3148748, 51327544,
--16346646, -47485160, 80240728, -37783900, -30023968, 47024524, 20352776, -26765162, 44542568, 5479842,
--37595996, 46370616, -49913424, 6663642, 15328201, -37949796, 17521856, 9678709, -12918725, -4051228,
--371515, -9525164, -2737505, -5706401, -16494822, 168577, -8075613, -2156611, -3819300, 7864622,
-30303678, 24786794, -22828288, -2888366, 31884226, -5872294, -5597416, -32639604, 4068945, 10231149,
--4935455, 27128624, 66309464, -22588306, -27435178, 46538120, -2764348, -25763362, 29683056, 18824842,
--14809584, -23240604, -27711666, 8046621, 15494095, -13084618, 44672492, 28267864, -54752244, -53608708,
-31328028, -25626996, -31817118, 41114648, 7218230, 55225228, 27397596, -7712151, -7033009, -41456636,
--31019328, 90947544, 25956098, -21017960, -44009992, -192200, -17602386, -41439456, -5652177, 44704168,
-20365124, -1675574, 38866768, 30794916, -10233833, -46171972, 6851547, 21074868, -9993315, 50954420,
-40550932, -10078678, 28529320, 4103841, -23940148, 15752866, 24228448, 9509058, 9910100, -31955094,
--7729868, 4979478, 5683853, -3744138, -29742648, -9213779, 9353902, -5842766, -4070019, -23139136,
-36301600, 5870147, -31831076, 18664318, 42777336, -21372294, -14239964, 7682623, 13377749, -12837120,
--28692530, 24999930, 38743288, -1832340, -16814260, 6573448, 10119480, 19591494, 24341728, 3155727,
-45258216, 478352, -53036940, 1970316, -7136088, 18505940, -6772090, -40597640, -2575907, -16520055,
--19297824, 27184458, 11805254, 16360604, 16611860, -35912904, -21529598, -4579509, -2333241, 17487496,
--1429150, -5421860, -1066763, -10487773, -28169616, 5184026, 37535868, -17719962, 818728, -12783433,
--15054397, 31217970, -38269232, 4234838, 8467528, -4952634, -5947456, -42703788, -62617400, -54405424,
-109587704, 105618616, 104272680, 296885856, 104493872, -12071542, 18526342, -205066976, -250946880, -83988624,
--141394624, -194431024, 23682986, -11024644, -33920040, 213627376, 129088464, 54110144, 332514208, 157201712,
-27422292, 151690192, -38000796, -182571536, -176092048, -166758016, -231985680, -226070976, -55116240, -82383376,
--134922096, 153457040, 68694784, -57151520, 220734480, 70602816, -29147258, 250920048, 227108208, 51107964,
-235593984, 240281408, -12815646, 57870388, 23681376, -235844176, -274841408, -204495744, -385568864, -364145568,
--221490928, -293008576, -222867456, 20933670, 173680432, 199085696, 430848576, 392473568, 343708512, 372108992,
-271181024, 135495488, 35293356, -37142876, -221325040, -263687904, -284140000, -317551616, -304279104, -259293088,
--173356160, -126398200, -124485872, 23753854, 81166288, 74898328, 19959786, 0, 0, 0,
-0, 0, 0, },
+-6458557, -1875290, 1891396, 347892, 2050847, 1841467, 5793911, -1076426, -266288, -651224,
+-4194573, -3362423, 790274, 675921, -274341, 2022930, -6150930, -3652333, -3535832, 2113661,
+-63888, -900869, -1084479, -1076963, 969052, 1435056, -373662, -797790, 2165737, -3448859,
+3494493, 2368675, -1294396, -2873870, -571231, -4226248, -1808718, -5934034, 2421825, 2223719,
+-376347, 1289564, -3872987, 3503620, -75162, -586800, 2807298, -3904125, 124017, 3304977,
+843961, -905701, 246961, 469225, -3580392, 2785823, -629750, 3441880, 378494, 892816,
+668941, 1102733, -2083059, -2416993, -2416993, 1851131, -1467805, 354335, 4126390, 5426155,
+3099356, -549756, 1268089, -24159, 74625, 490700, 3484829, -4723927, -3761318, -701690,
+3730716, 5383742, -2515777, 3121904, -1714229, -4576825, -1198833, -2582886, 1528472, -678068,
+-2146410, 1947768, 3083250, 623307, 3718368, -6801081, -7243999, -4742181, 717260, -82141,
+-1206349, 285078, 2262374, -797253, 3041374, 2409477, -3143379, 1137093, -199179, 3811784,
+3624953, 1272921, -3770981, 2415382, -2230162, 1183800, 2540473, -6177774, 6693170, 9674951,
+1321776, 4328254, -3553549, -830539, -3331284, -1864553, 3074123, -1126892, -3442416, -1048509,
+-2145873, 1553168, -2087891, -2088965, 257698, 1636919, -1709934, -2168422, -792958, 3296388,
+3214246, -2832531, -865436, -3332895, 850404, 3885335, 1321239, -1782948, -1713155, 1229434,
+-90731, -3167002, 14972256, 6973953, -576599, 3205119, 2803003, -3544959, -1820529, 4228932,
+1843615, 4598836, -3349001, 6659884, 2427730, -6445136, 5116917, 340913, -165893, -3368328,
+3732864, -6968585, -6085969, -1223529, -2193655, -1096827, -2202245, 888521, -1353989, -2850785,
+-2159295, 2526515, -2714956, 1790465, 1038308, 768262, -2990908, 4225711, -8704825, -1436130,
+-87510, -1427003, -1127966, 841814, 1578937, -2680060, 2172717, -3263638, 3185792, 1130113,
+668941, 3440806, -2380486, -440234, 1312113, 5334887, 1253594, 2326262, -1232656, -4356171,
+-6337224, 1333051, 3390877, 4662187, -1862942, -6830609, 1018444, -2630668, -1995012, -1334661,
+1926293, 565862, 6864969, 248034, 2289755, 1962263, -1087164, -858993, -2025614, 8096550,
+1890323, -6829535, -7741142, 2138894, -2339684, -6404870, 7326141, -3555159, -1151588, -962610,
+5768141, 1243393, -3257196, 4059818, -3045132, 6119255, -8310225, -5472325, 6760816, -6901476,
+-6943889, -2750927, 5807870, 2581275, 2841658, -583579, 5232881, 3191161, -404264, -6653978,
+1963337, -1770600, 2577517, 2258616, 1998770, 5985574, 1741609, -5646272, 714038, 4159676,
+6102612, 2137820, -3023657, -608812, -4544076, 2205466, -8219494, -155156, 9403831, 676457,
+1264331, -4490925, -5497022, 1100585, 1599875, 6946036, -1101659, 815507, 1103270, -742493,
+1125281, 2503429, 880468, 5015985, -746251, 3447785, 1072131, 1177358, 1268626, 5899675,
+1060857, -400506, 2057289, -805306, -18246632, -12525735, -2293513, 1672353, 3395172, -26307,
+386547, -7439420, -14496, -1867237, -751619, -150861, -1357210, -1115081, -4792110, 2444910,
+-10583336, -4318053, 1488743, -2483028, -2869575, -2186675, -5767604, -3430605, -2070174, -3213709,
+1955821, -5088463, -2100239, 5840082, 4537633, 221728, 3520800, 1957968, -1337882, -4207458,
+3064996, 8873402, 1708860, 1000727, -2844879, -3292629, 3388729, -7822209, -3345780, 8479876,
+-7031399, 2301566, -1037772, -3991098, 2673617, 553514, -1273458, 505196, 2261837, -2687576,
+1021665, -488553, 6333466, 4762045, 1807644, 1371705, 3480534, -9127, 248571, -1634235,
+-9477919, 5499706, 4805532, -2660732, 1586990, -4175245, 726923, 1108638, -945967, 2062658,
+-858457, -15761993, 2145873, 4093104, -1354525, -1097901, -9254581, -3339337, 2088965, -7655243,
+-7983271, 1848983, -7618198, -3448859, -558346, -4100620, 2090575, -3181497, 5054103, -2609730,
+-2276870, 1970853, 3406983, 7283728, 3995930, -7607461, -834834, -353798, 3453154, 6019934,
+9435506, -4169340, -4298726, 5309654, -5812702, 1442035, 1112397, 8509941, 2615635, 4820564,
+-6637335, -2576444, -8903467, 6846178, 6563247, 8198556, -574452, -1601486, -5846524, -1012002,
+4968741, -2403571, -3923990, -3106872, -4681515, 1001801, 558346, 1345399, -6230387, -14496,
+-6103149, -255014, -1255741, 2357937, 1615982, -1709934, -2937221, -7173133, -741956, -548145,
+4168803, -2743947, 7177964, -4141959, 820339, 3537443, 6702834, -4945118, 587874, 19498614,
+17476222, -1027034, 912144, 8463233, 1612223, 3928821, -2265059, 4450660, -3361349, 8537321,
+3460670, -416612, 2218351, 191126, 11733314, 7224672, -7057705, -6637872, 2791729, 753767,
+-2008434, -2065879, 1811939, 4987531, 4409858, 2025614, 949188, 2410014, -1532230, -616865,
+6611566, -7341173, 3113315, 7872675, 6615324, 10870562, -768799, -2212982, -645856, 224949,
+-3284039, 11840688, 11642583, 7579007, -3431142, -1631014, 5132486, 3406983, -3134789, 255014,
+6782290, -2940442, -2728915, 3592740, -11701102, -1923609, 942208, 1231045, -3795141, -8375186,
+3446175, 4827007, -6157910, -2908767, -6748468, 2058900, 628676, -1969243, -1416266, -6528351,
+10109279, -3080565, 1155883, -10566693, -3020973, -4539781, 13015362, -418222, 8183524, 11404749,
+-6089190, -13865765, 469225, 10673531, -8330626, 7507603, -2346126, -10036802, -4794257, 10207527,
+-10071698, -8727374, 6233608, -10106058, 3219078, 4853313, 3811247, -2864206, 5966247, 1731946,
+973884, 3941169, -6660421, 8804683, 4147328, 3803194, -2024540, -1023276, 16234440, -5808407,
+801011, 4219269, 8046085, -11320460, -9498320, -8711267, 83752, 537945, -836982, 5119601,
+1357747, 9213242, 3477313, 5330055, -1175747, 570694, -4927938, 8169028, -4105452, 8035347,
+-4832912, -7326141, 11893838, 9705015, -14469208, -12710419, -8577050, -6698002, 4009352, 364535,
+-3309272, 6105833, 6662031, -9004399, 4525822, -1170916, -17747878, -6213744, -9274982, -8463770,
+2338610, -3327526, -7707319, -10177999, 6001143, -5742372, -4672925, -3469260, -12403329, -1016297,
+5147519, -3025268, -1004486, -4176856, 9728101, 1800665, 6094559, 5118528, -8337606, 8530879,
+12113955, -3546569, -5346698, 1583232, -2439542, 5600101, -15618649, 6118718, 12983686, -1521492,
+-4642323, -3543348, 5472862, 12129525, -3126736, 3237332, -5616744, 8377334, -10133438, -3536369,
+1586990, -1313723, -7946763, 14242648, 9553618, 7617662, -3468186, -10365367, -1655710, -14818711,
+2228014, -906238, -857383, -137976, -2655901, 8300561, 6483253, -10282689, 5405217, -6114423,
+8180839, -681289, -2221572, -630823, -9640054, -1690607, -8872866, -18441516, -1415192, 2128693,
+833761, -7182796, -920197, -2211908, -14528264, -28991, 11184632, -8032126, 2303176, -19401442,
+1384053, 11298448, 6203544, -8832063, -7142531, 14181445, 3324305, 3202972, -2733747, 3692598,
+-76236, -9445707, -2392297, -9914932, 4798016, -5883569, -806380, -9645423, -10625749, -14372571,
+9154186, 6164352, -4496294, -5071820, 4202089, -13174275, -1051193, 1085553, 3374234, 5918465,
+3031710, 471373, -4386236, 2032593, -3995930, 3606699, -3808026, 2423435, 1476395, -4081293,
+-5185636, -10267119, -6567005, 2750927, -17419850, -4708358, 10056666, 5301601, -1784022, 23268522,
+-2969433, 10844256, 11014981, -16749299, 1542430, -2128693, -13768591, -7349763, -7321309, 337692,
+2234994, 16064251, -1953136, 1581085, 11526082, 8046621, -1128503, 10748156, -4258460, -4092567,
+-6222334, -9822590, -12746926, -5740224, 9500468, -15567646, 1675037, 12779138, -1743757, 3760781,
+-5921686, 3316789, 6191732, -3923990, 5396090, -7881802, -7477538, 11875048, 7385197, 7508677,
+10521596, -505196, -7436736, 10225243, -8654896, -12994424, 888521, 11355894, -967441, -10618233,
+2137283, 13461501, -1238561, 3416110, 2120640, 19069118, 2026688, 3792993, 10413685, -1578937,
+-4128537, -9664750, 2177549, -1628866, -8070781, -33286, -4366908, 3257733, 14121316, -170725,
+-6989523, -2649458, -6381785, -4204773, -123480, -3380676, 2843268, -10089415, 11654931, -5823439,
+18973018, -4732517, -11778411, 517544, 1859721, 6113886, 3986267, 3215857, -11949673, -10982768,
+9200357, -11432129, -14138495, 4260071, 4683662, -3814468, 18578954, -14096620, -17261474, 6585796,
+-11142219, 140123, 767189, -10328859, 5690832, 611496, 14078903, 14861124, 21342766, 9789841,
+4455492, 2974802, 6958384, -7287486, 8045548, -12923557, 6152004, -1289564, -1245541, -24776592,
+-9744207, -4102768, 8236137, -1106491, 1832877, 2626373, 2009508, -12709882, 12825846, -565325,
+5041218, 358093, 11899744, -13206488, 8778376, -6541235, -689342, 9797894, -11646341, -5124433,
+-12692165, -4983236, -14123463, 12301860, 8593693, 16559783, -1401770, 3817689, -15832323, 3323768,
+-16449725, 15163919, 3569118, -2639794, 13662291, 14633490, 6641630, -8986145, -14176076, -19137300,
+-1965484, -6904697, -10807748, 10079751, -4235912, 23727546, -19332722, -6720013, 11880953, -14565845,
+-7783555, 2968359, -2240362, -2474975, -16765942, 5754720, -1654636, -8212515, 502511, 4224101,
+3391951, 21974126, -4850629, 2799245, -976568, -7719130, 10189273, -4060355, 3868692, 773094,
+14461155, -4961761, 16813186, -201327, 8399345, 6874632, -1260036, -5951214, -16237661, 7159174,
+16935592, 295279, -142271, 11127723, 9911711, -1377611, 1752884, 19472308, 12510166, -4372277,
+4238059, 12500502, -3526705, -15469935, 129923, -11486353, -1938104, -7623030, 326954, -21210696,
+-6400575, -8347806, -35433, 3255048, 3850438, 18708878, 21355114, 10417980, -15626702, -10058813,
+11687680, 16002511, 2998424, -16998944, -3293703, -5077188, -17180406, -11790759, -13283797, 13639742,
+-6638946, 434865, -16515760, 20673288, 15348603, -3809099, 5451387, 35112432, -3520800, -10087804,
+-16303159, -3745748, 7381438, 4203163, -9384504, 5432060, -10714870, -14980309, 19808926, -11994233,
+14670535, -10394895, -18372260, 1980517, 20577188, 15092515, -17131550, -9567040, 2608119, 4350802,
+6244346, -103616, 13376139, 8872329, 17977122, -5774584, -4264903, 507343, -4757213, -17172890,
+-14597520, -3044058, 18106508, 5192079, 458488, 1860795, -18894098, -19107236, -16744467, 9351218,
+8256001, -5709622, -5600101, 3030636, 1201517, -9573482, 2132988, 21488796, 2565169, 13955422,
+11476153, 10256382, 20736102, 32466194, 9287330, 1892470, 3561602, 13668733, -7401840, -2058363,
+7387881, -1378148, 3563212, -1419487, 12611098, 6261526, 8718247, -1111860, -4351876, 8411157,
+17231408, 324270, -15422154, 11121818, -23692650, -24975234, -9736691, 15685757, -9438191, -24478630,
+-16585553, -4565550, 9290551, 8373576, -37216964, 1978369, 19024020, -3496104, -4286378, 22972170,
+-12128451, -12668543, -15996069, -5303211, -5235565, -10701985, 3474629, 5386963, 9150965, 6404333,
+-4847408, -3908957, -1459215, -4373888, 1941325, 4561256, 19124952, -7743289, -23735600, 13238163,
+609885, -390842, -19589882, 9327595, 4489852, -1705102, 23554674, -6156836, 3153580, -1686848,
+10814191, 12669617, -12678207, -821413, -6744710, -346282, 7690139, -4516695, 11381663, -15790984,
+-12753905, -8029978, -13639206, -1886028, 2355790, 2953864, -19356880, -12715788, 10868415, 17235704,
+-6628209, -8439074, 9929428, -17894444, -15627775, -15575162, 19434190, -29581050, 11353209, -766652,
+-16419123, -4845260, 16772384, 39581344, -3512210, -9830106, 14463302, 30458298, 12284680, -6190659,
+6954626, -3959960, -19252728, -35203164, -222265, 36652716, -4421132, -4479651, -23649700, -3649649,
+30602, 908386, 10123238, -580357, 8711267, -1236951, 1318555, -19819664, 4314295, 14710263,
+-9364639, 18660022, -6849936, -3010772, -16332687, 9837623, -7246147, -7610682, -19099182, -30058328,
+16241419, -15577846, -11802033, 3195456, 4715337, -7869991, 3218004, 14243185, -2910377, -17081084,
+-7632694, -21380348, -512712, 3791919, 15470472, 961536, -2048699, -5187247, -6133214, 2852932,
+16103980, 469225, -6746857, 14138495, -13218836, -259846, -24248312, -9720048, -2907156, 30628486,
+-18228378, 4656819, -4196720, 2231773, -1145146, -5746666, 3483219, 11078331, 7141457, -26317412,
+29945048, 5707475, 13507672, 922344, -5527623, -10596221, 4126927, -16934520, -9346923, 35213364,
+-3969624, 2659122, -18031884, 16273631, -9114457, 11903502, -9200357, 21151640, 2627446, 1887638,
+-9936407, -8834211, 13001940, 27496918, -11067594, -17245904, 8506183, -6976638, 18859202, 22855132,
+11959336, -3789235, 14875619, -9833328, -8300025, 19139984, 27353572, -30302068, 3033858, 4146254,
+5662915, -10478646, -112206, 11766063, -29700772, 8759586, 18319646, 6308233, -12862353, -4093641,
+22373022, 17434882, 6560026, -10625749, -12720083, -26629870, 38073812, 6356552, 19907710, -3234110,
+-7284265, 3735011, 11892764, -126165, 105764, -30988190, 5445482, 28212566, -4398584, 26973468,
+-15775415, -8053064, -10754061, 5734855, 26710402, -8938364, 60666, 22562000, 29461328, -10377715,
+-20074678, -19907174, -15415174, 14716705, 9834401, 25524454, -8157217, 18617072, -10197863, -3315178,
+16174847, -79457, 22258668, -27198418, 16646756, 3614752, 6986301, -10691247, 7652558, 21065204,
+39374112, -8831527, 9400610, -168577, -27462020, 24800752, 1615982, 9913321, -5757404, -12115566,
+-5556077, -680215, -11293080, -6167573, 33089502, 2703145, 12077448, -9443022, 23090282, 437013,
+10612864, 5248987, -15279883, -2721936, -9907953, 550830, 3132105, 28851442, 13256417, 1497870,
+2061584, -714038, -3749507, 4989679, 1421634, 18209588, 13084081, 7672959, -10042707, 12788265,
+24536074, -24272470, 21257940, 4117263, 5196374, -24289650, -13505525, -30570504, -26900454, -4278861,
+14994268, 14812805, -44913548, 718870, -21072184, 11590506, 41873784, 23535348, -27887222, 17934710,
+10799158, 14457397, -36700496, -55248848, -15037754, -5845451, -14263050, 3512210, 18274548, -19215684,
+27827094, 10775536, -41375568, -30951144, -6809671, 22735946, 279173, 2253784, -4800700, -12576201,
+-40068288, 1990181, -33745020, -27173184, 12976707, 11052025, 9252433, -4325569, -13392782, 30278446,
+17462800, -12419435, -26404386, 20067160, 9521406, 4926328, -12658342, -30096984, 11086384, -14017700,
+4118337, -25639882, 31003758, 966905, -12979391, 3229816, 7540889, 26053272, 15863462, -6527277,
+-1598802, 9159018, 8718247, 10038412, -6112812, -40514964, -32034014, 6434935, -4473746, 23678692,
+-4553739, -10263898, -28502476, 33105608, 12972949, -23303956, -23507430, 33901788, 32530082, -531502,
+24288576, -3321620, 2020782, -9827422, -4198868, -18304614, 2832531, 19803020, 1638530, -13492103,
+-35641248, 56035900, 1127966, -42862164, -3543348, -15785615, 7013682, 21673478, 19157164, -23725400,
+-38793220, 6850473, -18718004, 6147172, -4044786, 17253420, -5866389, 2704219, 9791989, -15455440,
+-19589882, 2317135, 4761508, 17091822, -691490, -26614302, 17381196, -14716705, 13588740, -12751221,
+-9197136, -1177895, -4595078, -28622736, 5099200, 8376797, -28297928, 12127914, -11336566, 5907728,
+-9686225, 27322972, 20665236, -26918708, -14834817, 18926848, 22919556, -27539868, 36388572, 2725694,
+29205240, 21873194, 34520800, -10458245, -15299747, 8216810, -29498372, 4807679, 3148748, 51327544,
+-16346646, -47485160, 80240728, -37783900, -30023968, 47024524, 20352776, -26765162, 44542568, 5479842,
+-37595996, 46370616, -49913424, 6663642, 15328201, -37949796, 17521856, 9678709, -12918725, -4051228,
+-371515, -9525164, -2737505, -5706401, -16494822, 168577, -8075613, -2156611, -3819300, 7864622,
+30303678, 24786794, -22828288, -2888366, 31884226, -5872294, -5597416, -32639604, 4068945, 10231149,
+-4935455, 27128624, 66309464, -22588306, -27435178, 46538120, -2764348, -25763362, 29683056, 18824842,
+-14809584, -23240604, -27711666, 8046621, 15494095, -13084618, 44672492, 28267864, -54752244, -53608708,
+31328028, -25626996, -31817118, 41114648, 7218230, 55225228, 27397596, -7712151, -7033009, -41456636,
+-31019328, 90947544, 25956098, -21017960, -44009992, -192200, -17602386, -41439456, -5652177, 44704168,
+20365124, -1675574, 38866768, 30794916, -10233833, -46171972, 6851547, 21074868, -9993315, 50954420,
+40550932, -10078678, 28529320, 4103841, -23940148, 15752866, 24228448, 9509058, 9910100, -31955094,
+-7729868, 4979478, 5683853, -3744138, -29742648, -9213779, 9353902, -5842766, -4070019, -23139136,
+36301600, 5870147, -31831076, 18664318, 42777336, -21372294, -14239964, 7682623, 13377749, -12837120,
+-28692530, 24999930, 38743288, -1832340, -16814260, 6573448, 10119480, 19591494, 24341728, 3155727,
+45258216, 478352, -53036940, 1970316, -7136088, 18505940, -6772090, -40597640, -2575907, -16520055,
+-19297824, 27184458, 11805254, 16360604, 16611860, -35912904, -21529598, -4579509, -2333241, 17487496,
+-1429150, -5421860, -1066763, -10487773, -28169616, 5184026, 37535868, -17719962, 818728, -12783433,
+-15054397, 31217970, -38269232, 4234838, 8467528, -4952634, -5947456, -42703788, -62617400, -54405424,
+109587704, 105618616, 104272680, 296885856, 104493872, -12071542, 18526342, -205066976, -250946880, -83988624,
+-141394624, -194431024, 23682986, -11024644, -33920040, 213627376, 129088464, 54110144, 332514208, 157201712,
+27422292, 151690192, -38000796, -182571536, -176092048, -166758016, -231985680, -226070976, -55116240, -82383376,
+-134922096, 153457040, 68694784, -57151520, 220734480, 70602816, -29147258, 250920048, 227108208, 51107964,
+235593984, 240281408, -12815646, 57870388, 23681376, -235844176, -274841408, -204495744, -385568864, -364145568,
+-221490928, -293008576, -222867456, 20933670, 173680432, 199085696, 430848576, 392473568, 343708512, 372108992,
+271181024, 135495488, 35293356, -37142876, -221325040, -263687904, -284140000, -317551616, -304279104, -259293088,
+-173356160, -126398200, -124485872, 23753854, 81166288, 74898328, 19959786, 0, 0, 0,
+0, 0, 0, },
},
{
{
2406792,
-241592, 2704756, -2811056, -4813585, -194884, -3294777, -300111, -868120, -7608535, -6163815,
--1093069, -2480881, 3034395, -1336809, 1396938, 1696512, 656056, -1179505, -44023, -2864743,
-172336, 3119220, 1845762, -1472100, 82141, 1650878, -4111894, -1278290, 312996, 1671279,
--1730335, -3926137, -1023813, -3874597, 589484, -1642825, -1633161, 1837709, -2043331, 1550483,
-819802, 1028645, -3154654, 973884, 186294, 1679869, -2723009, 1590212, 1247688, 2509335,
--673773, 3206193, 1557463, 3257196, 1826435, -2621541, -1370632, 6327024, 753767, -858993,
-441845, -52076, 3707094, 119722, -2083596, -1013075, 4282083, -1893544, -914828, -4538170,
--466004, -1688459, 1822140, -378494, -469762, -1940788, -3853660, 13997835, 7126962, 6266358,
-3201361, -1299228, -634581, -1255741, -3083250, -3836480, -3036542, -3928821, -1942399, 4026532,
-1099512, -64425, -235149, 2678449, 947040, -1482301, -1977833, -1182727, -7457137, 3103651,
-496606, 181999, -1752884, 1041530, -147103, -1890859, 756988, 2733210, -301721, -3200288,
--1138166, -1337882, -1841467, 484258, 2849711, -747861, 417149, -3699578, 2075006, -4592394,
-2609730, 712428, -194347, 85899, 2565169, -3528853, -3054259, -4831302, 872415, 907849,
--200790, 2805688, -3467112, 669478, -900869, 96100, -2710124, 1940788, 326418, -1605244,
-2405719, -4778688, 1547799, -2601140, 4171487, 2243584, 71941, 393526, -1866700, -5873368,
-3508988, -1176284, 12961138, 6540162, 8377871, 2611877, 2688650, -250182, 3131568, 606664,
-2757369, -1956895, 5606543, -1227824, -6921877, -1574106, -102542, 626528, -2360622, 5385352,
-45097, 2265059, 4713727, 2689187, -180389, 260919, 943282, -4247186, -3224447, 2068027,
-1918777, -1369021, 235686, 2486249, -4716948, 6598681, -884763, 1213865, -1239098, 2631741,
-3022583, 451508, -3663607, -3204046, 6616934, 447750, -2242510, 7516, 3708168, 3220689,
--2281702, -2445984, -6290517, -1567126, -2726231, 566399, -2488934, 860604, -6126771, -2073396,
-425739, -2059437, 1032403, 2713883, -1457068, 198105, 839666, -1121523, 2032593, 221728,
-2620467, 457414, -1299765, -2910377, 79994, -3634616, 1032940, 848256, 2986613, -9110699,
--2680597, -2234994, 1746978, 1549946, -5896453, -2942590, -1012002, 1248762, 3433826, 804233,
-4635881, -3882651, -5102421, 1314797, 375810, -1174137, -3432753, 11545946, -417149, 2902861,
-900869, 134755, -66572, -2049773, -4276177, -3753265, -899796, 2763275, -2298881, 5914170,
--1884417, -830002, -4847408, -6273337, -311922, -4102231, -1925219, 7923678, -4271882, -1525250,
--4139275, 1302449, 421444, -1880122, -4355097, -1184337, 258235, -5515275, 835371, -3133179,
-4379256, 2374580, -2158758, -1646046, -1085553, 877784, 13959, 2879239, -1459215, -2614025,
--1971927, 6995428, 7012608, -2840047, -6234145, 307627, 2291365, -850940, 2202245, -3437585,
-836445, -4017942, 2555506, -1015760, 7474854, 1490891, -29103772, -4935455, -8248485, -9767829,
-2771865, -3431679, -8130910, -7092602, 1357210, -6990060, 1169842, 9950902, -2313377, 4162897,
-3509525, 8360691, 2436857, -6146635, 1584306, 9101573, -4115653, 4432943, -6629819, -6445136,
-2282775, 2468533, 7543573, 228707, -4235375, 4037806, -2754685, 3047816, -118648, 4398584,
--3642132, -2751464, -4086125, -164819, 1075352, -1936493, 3641059, -7929584, 1292248, 7515656,
-1993939, -2454574, 3313031, -4232691, -1673964, -9992778, -2526515, -616328, 1888175, -147640,
-5604396, -8132521, 1163399, -1428614, 4357245, 1712618, -1053341, 5131949, -4387309, -1126892,
--3386582, -8023536, -2585570, -2328946, -1486596, 4929549, -4333085, -8951786, 1153199, 1567663,
-225486, -14581414, 8320963, 9363029, -502511, 5251672, 2397129, 11059541, 14716169, 1882269,
-1931662, 4212826, 1834488, 2436857, -2084133, 2900714, -2418067, 3853660, 4509179, -12616466,
-6540162, -1399623, -2326262, -3919158, -5092758, 2037425, 3594351, 5711233, 1134408, 947040,
--7342247, 288837, -2128156, -2494839, -1067299, 943282, 450972, -607738, 7264937, -425202,
--2365990, 2336999, -2771328, 3650722, 4934918, 5405753, 2895345, 532576, -2981244, 6035503,
-2012729, 745714, 723165, 722091, 537945, -3621194, -4865124, 4427038, -4508642, 4231617,
-4106526, 2798171, -460098, -3389803, 3172907, 3730716, 8790724, 3817152, 3532611, 1870995,
--7962333, -2703145, 1517197, -1508070, 4250944, -7394323, 1329829, 26977226, 8202314, 1942399,
-5334887, 13452911, 5490042, 16231218, 4032438, -3660386, -1131724, -1435593, -1522029, 4349192,
-7013682, -3320547, 1526324, 4790499, -1786706, -6853694, 5400922, -721018, 2573759, -2393371,
--3387656, 5448703, 1299228, -600222, -1571958, -6263673, -3052111, 3245385, 833761, -2221035,
--1090922, 834297, 2310693, 6104223, 1945620, -5825587, -1333587, 263604, -1822140, 1950452,
-2914135, -5874442, -6993818, -514859, 1708323, -850404, 5337571, -10035191, -2151779, -4614406,
--5632850, -726923, -484794, 1351841, 5258651, -166430, 740882, 1604170, -920734, 6974490,
-4459250, -5929203, -5167920, 3773666, 8521752, -854162, -4079145, 8351564, 4417374, 1831267,
--3790846, 12896713, 6802155, 11567958, -3678103, -287226, -2694018, 11640435, -12043625, -2160369,
-3499862, -2783676, -2129767, 3607773, -1075889, -4247723, 10866804, 5525476, 1517197, 17386564,
--4580583, -1651415, -3489124, -339839, 3227131, -5093295, -318364, -2891587, 7075422, -6271726,
-1792612, -128849, -1555852, 76236, 4248260, 2167348, -5178120, -10026601, 454193, 1347009,
-8046085, 8562554, 9352828, 193810, -5061619, 5911486, -15749645, -3313031, -6075231, -9998684,
-6671158, -2882997, -2839510, 4280472, -1683627, -3539590, 14057428, -697932, -3980898, 3933116,
-482110, 2717104, 2805688, 776315, 8495445, -6175089, -3065533, -723702, -7239168, -1403381,
-1323387, -3349001, 2374580, 2417530, 8662949, -5479305, 2573759, 4647692, 2928631, -20774220,
--30985504, -5324686, 1643899, -615254, 970663, -1523103, -6115497, -3572339, -4843650, -1388885,
-5186173, 5986111, -5333813, -8106751, 7050726, 1404991, -4278325, 344671, -574452, -4929549,
--3960497, 11469710, 6012954, -6150393, 3316789, 1322313, 5097053, -5944772, 6856379, -6604586,
-4781373, 3049964, -1195075, -3031173, 3175055, -12317429, -5929203, 7696582, 12470438, 6904160,
--8323647, 329102, -5824513, 8280160, 1938104, 2270964, 841277, -6526740, 3526168, 10152229,
-1402307, 7743826, 5615133, 3686693, 6051072, 12473659, -3086471, -12007118, 6271189, 348966,
--2593087, 969052, 10895795, -3944391, -7009924, 4009352, -1602023, -811212, -2429878, -1176284,
--2950106, -5240397, -2535641, 7611219, -9346923, -5521181, 1473711, -12061342, -7698192, 1911261,
-2001455, 15828565, -13857175, -9654550, -5310190, -2758443, -1663226, 5028333, 5040144, -7510824,
-7632694, -1893007, 3479461, -5454072, 11336566, -2340757, -4236985, 7162395, 5282810, 4102768,
--7687992, -7384123, 9558450, -5164698, 2800856, 2183991, -3503083, 7976291, 2425583, -166430,
-1744294, 5811628, 7582765, 2202245, -6910603, 1426466, -9839770, 5644124, 2398202, -11041824,
-7558069, 1642288, -5847061, 9820443, 2957085, -2845416, 5570036, -1040993, 10729365, -2646774,
--3078955, -2451890, -1810866, 14222247, 2602213, 161598, 3411278, -12098923, -8083129, -8209830,
-239444, 7634841, 241055, 9524627, -13144211, -4873178, -8883603, -6911676, 16400869, -1342177,
-4441533, 5415417, -16287053, 5187247, -7072738, 4079682, -4984847, 13196287, 2069101, -8982387,
-1312649, -9156333, 7439420, 14582488, -12409771, 8289287, 2895345, -187905, 5838471, 15545097,
--5978058, 165893, 4604205, -16594143, 893353, 7824357, -4750234, 5667210, 5878737, -2860985,
-14985141, -7300371, -13689671, -5648419, 1578937, 580894, -2843268, -5651640, 4056597, 4030290,
--35970, -9357660, -2286533, -2189897, 6381248, -3954054, 25233470, -2922188, 3602941, -900869,
--1078037, -11985106, 1261647, 9364102, 7364795, 24915106, -2626909, -2091649, -5070209, -670015,
--6893423, -214748, 9927817, -4939750, -960462, 2116345, 2400887, 10044855, 7981660, 2574833,
-19155018, -3266323, -17568026, -17348446, -12382928, -2268280, 5623186, -1533303, -4858682, 28867012,
--20871394, -15592879, -5219996, -9838696, -11572253, 13992467, 5403069, 2824478, -4657892, -2776696,
-16601122, -4931696, -7440494, -20274394, -3282966, -569620, 9157944, 3425237, -4529043, 1119913,
-7920994, 3629247, 4753992, 12763032, 15743739, 4290673, -6602976, 3936875, -10344429, 6409165,
-4866198, -3811247, -325344, -7918309, 2361158, -187368, -15400142, 13862544, -2064269, -7121056,
-7998303, -14077292, -4009889, 14374182, 7591892, -787053, -418222, -19438486, 5562520, 9806484,
-4894652, 2742874, -2193118, -14673219, -41999948, -4113505, 6990060, 10529649, -2457258, -12950937,
-18622978, -10399726, 7556458, 14091788, 10786273, 1088774, 13248363, 376883, 3248606, 1745904,
-6758668, 209380, 18790, 17608292, -10226317, -6015639, 13573707, 14431627, -4387309, -6215355,
--2134062, -3346317, 14933601, 10991895, -28192702, -2224256, 1433445, -12079596, 4302484, -17980344,
-13455596, 4231617, -3008625, 8568460, 3073586, -3168612, -7098507, -3825205, 19345606, 1582159,
--946503, 5225365, -3511673, 8837432, 22950694, 10433549, -4239670, -3431142, -4253092, 14501957,
-4127464, 14668387, 8878234, 7689602, 3270081, -5323612, -7397008, 6936909, -14805289, 3127273,
--8185134, -5550709, -206158, 10424959, 699006, 1462973, 2844342, -2398739, 15659988, 21756694,
-23571318, 504122, 10471130, -13752485, 5021354, 8868034, -7050726, 12811351, -10256382, -19177028,
-2255932, -9886478, -1813550, 1260036, -10606422, 2860985, 14253923, -8572755, -8278550, 7094749,
-13786845, -1040456, -3228742, -16646219, 30662846, 2398739, 7636989, 24213416, -9248675, 2854543,
--5003100, 6691559, -7332046, 7280507, -17221746, -19437412, -1097364, -11345693, -1399623, -688269,
--1843615, -2946885, 748935, -5098126, 4427575, -15375446, -6854231, -20885352, -1635846, 5289252,
-9637907, 23399518, 12160126, 4382478, 2330020, 7011534, 4473746, 4290136, 8644159, 10145250,
--3754338, -19039590, -19972672, -12811351, -8615168, 2347737, 5762773, -6708202, -12074227, -19315004,
--231928, -7117298, 17171816, -7608535, 3645890, -13269301, -7533910, -1973538, -6608881, -26035018,
--28608240, 7990250, 1715839, 1142998, 12952011, 8492224, 10071161, 9564355, -18563922, -3331284,
-30698278, -5580773, -13881334, 5093295, -9003325, 3603478, -22107808, 8318278, -11836393, 4241280,
-18926848, 13588203, 2282775, 14455786, -2360085, -6582575, 8609799, -11890617, -21855478, -33794412,
-3199751, 194884, 13272523, 8881992, -12016782, -6890202, -32139240, -2739116, -14770393, 2963528,
--7253126, -4227859, -5894843, -3019362, -2177549, -11924977, -4730907, -13814762, 10850161, -3314641,
-9330280, 22608170, -11970611, 5985574, -1578401, -6531572, 6333466, -13241921, -20876762, 9374303,
-5306969, 9287867, 6657200, -45287744, -19839528, 5010080, -14461155, -2204392, -12306692, 17593796,
-22717692, -2141041, 25081536, 2394444, 11581379, -4424890, -472983, -15066208, 9125195, 16594143,
-4248797, 28408524, 1093069, 2615098, -8335995, -14703821, 18076980, 26206280, 10241350, 3490198,
-3287261, 8395050, 1510218, -470299, -25477210, -17845590, -8159901, -32974612, -40134320, -30504468,
--13312788, 8759586, 151934, -7572564, -14404783, -411780, 27173184, 12660490, -23004918, -4301947,
--4437775, -16996260, -2552284, 766652, 11660299, 7839389, -17077326, 12088722, -9483825, 4861366,
--8814347, 2312840, -13010530, -5477694, 6993281, -24659018, -4263829, -9603547, 8289824, -6512244,
--21998822, 25779468, 25672630, -165356, -9920838, 13798119, -33929168, -11253888, 10488310, -12060268,
--7000797, -1437203, -10812580, 1626182, -2620467, -23535348, 10051834, -3529926, -6885370, -8480413,
--5931350, -2092723, -6200322, -10421201, 19071266, -9798431, -9044664, 8274792, -373125, 30400316,
--6499360, -20309826, 10679436, -11173357, -9207336, -16343424, 9554692, 17774722, -39045012, 956167,
-29328184, -8668318, -26057030, 51675436, 36187784, -275415, -10143102, 8573292, -31092878, 964757,
-37918120, -6273337, -13627931, 1116155, 43044700, -5699959, 9215926, -8694624, -19901268, -15310485,
--4291746, -6677601, 7720741, 11676942, 343597, -15704011, -23095650, -20381768, -3633006, -3957812,
--11565273, 11307038, 8372502, -8471286, -11422466, -11487964, 6679211, 3174518, 8262980, 22484154,
--320512, -17651778, 12382928, 5843303, 4062502, 2246268, -526134, -7950522, 15860240, 9226663,
--6601902, -6600828, -5266704, -19916838, 5611375, 16571594, 4480725, -13507135, 17018808, 13911399,
-6896644, 3263638, -9310952, 6152541, -30274688, 6174016, -2217814, 28311350, -10038412, -11586748,
-5130876, -5166309, -1285806, -17495012, -4539244, -3275986, 24288040, -14925548, -35012572, -13083007,
-48520784, 2118493, 7902203, -7930657, -16156593, -21281026, -7281044, 6303402, 14100378, 12058658,
--10488847, 201327, -21665426, -7580081, 7537668, -17810156, -9883257, -6541235, 26112864, 14069239,
-14288282, 14048301, -15427523, 3205656, 5327907, 6646462, -1684701, 18206904, -4136591, 8315057,
-13509283, 5816997, 3549791, 12213813, 15669651, -8778913, -19102404, 13229573, -2403034, 790811,
--20247012, -17676474, 3792456, -8383240, -7696045, 17149804, -17289390, 22461068, 13204877, -8431558,
-10566693, -11382737, -13506598, -14042932, 21212844, -14101451, 5895380, 8348880, -26651346, 4166118,
-1480690, -18082886, -36258652, -28675350, 20475182, -20692616, -2857227, -17951890, -7785702, -11463805,
--4959077, 13897440, 1109175, -9687836, 9076340, 26416196, 26193394, 25622164, -9109089, 223875,
--20653424, -936303, 4440460, 3653944, -17999672, -20136954, -30166240, 21217676, 3236795, 7102802,
--4038880, 11191611, -7378754, -8578660, 7646116, 16331076, 5134097, 10767483, 34858492, -4831838,
--18816788, -42890616, -4634270, -16440061, -6611029, -9989020, -18328772, -13734232, -28107340, -3049427,
-1341640, 10946798, 32822676, -25150792, -7930120, -3541201, 12214887, 11753178, 32830730, 5077188,
--32700808, -7012608, 9595494, 28526100, 9725417, -41104984, -14323716, 39802000, 6312528, 39868572,
--19544786, 3009698, 6142877, 25134686, 1178432, 23267986, 35306240, 6930467, 30721902, 21623012,
-8604430, 40373228, 36217848, 13792214, 54392004, 42121820, 29000692, -35771172, 2875481, 21097954,
-15159087, 5941014, -22724136, -26813480, -11196980, 9338870, -29704530, 31659814, -14780593, 21501680,
-7524246, -22612466, 1739462, 17690434, -11664057, -23628762, 15312095, -4671851, 12870406, -6299644,
-1969243, 8451422, -17712446, 613643, -8733816, 2211908, -27783070, -17945984, 23825794, 3820374,
-8735963, -17356500, 19291382, 21333102, -15424301, 14645838, -21684216, -1495722, -12700755, 17658222,
-34876744, 2345052, 42652248, -8057896, -3244848, 5203890, 3406983, 171799, -25752624, 46275052,
-27132920, -54761, 22725746, 21805548, 23715198, -5858336, -1222992, -40235792, 19221052, 24143622,
--6118181, -3872450, 27079768, 18112414, 14301167, 37737192, 5747740, -13806709, -20830592, 10058813,
--6097243, -21560736, 21665426, -25713970, 2498060, 9557913, -18938658, -29949880, -19534048, -7334194,
-5667746, 21638046, -34846144, 18933290, 34573948, -2678449, 39526584, 9286793, -30623116, -22164716,
--601295, -13444858, -17873506, 18852222, 26477400, -4500052, 19011136, 20847772, -16232292, 14053133,
-29496224, -3865471, -35321812, 12418898, 850404, -9615358, 12178917, 25873420, -7082938, -16433619,
-8793946, -14621142, -14257681, -3442953, 26600880, 18760418, -33212446, 8795019, 16910360, -25963614,
--13172128, 26029650, -5850819, -43827992, -3383897, 32311038, -9444096, -62300112, 64623152, -20391430,
--5299990, -33503966, 42460048, 10566156, -11990475, 26792542, -15338402, -15687368, -5541582, 72640248,
-27240294, -34441344, -25836376, 25993678, -4538170, 39085276, 3018825, 28465432, -41175316, 31482648,
-62420908, 2182917, -3776350, -14314052, -7494181, -28122908, 60033444, 32836098, -28589986, 26800596,
-62093416, 11717208, -23668492, -5935108, -5616207, 10613938, 9558450, -19541028, -27285390, 7122130,
--23051626, 4415764, -14254460, -16898012, -3375844, 2617783, 8155069, -18796388, -7263327, -7567196,
--22898082, 19224810, -7037841, 1073205, -3195993, -15607911, 6359236, 4185446, 766115, -3483219,
-395137, -702227, -8913131, -19767050, 8607114, -9862856, 8717710, 5891622, -19446002, -15978889,
--1630477, -2352032, -2075543, -4269735, 16152835, -11105712, 1770600, -20864952, 17918604, -20421496,
--10717554, 10191421, 362925, -16316044, 13072270, -21930104, 1709934, 6746320, -572841, 2559264,
-10539850, 5195300, -22716082, 11709155, 1573569, -13420162, 19432580, 7978439, -21513492, -2011655,
--17022030, -1926293, 7458211, 5865852, -20632486, 25733834, -36866388, -46635292, -16768089, 139707776,
-112267224, 73978664, 135693584, -54192824, -128086128, -41507100, -207131776, -81186160, 5935645, -49030272,
-95090040, 129360120, 21248276, 82027432, 141749488, 2546379, 39017092, -9804337, -166732784, -138470288,
--104308112, -104123968, -51167556, 78373488, 42266772, 60453812, 173771152, 73049344, 10492068, 103397040,
-48080548, -60544544, 19915226, -50980724, -169347872, -41613400, -88771072, -175013472, -29521994, 2915746,
--43189116, 116514944, 135098192, 52311092, 158905744, 160296240, 29229400, 60841432, 26987964, -103806672,
--115757424, -108985872, -194230768, -172377968, -66453344, -81277424, 15010911, 100990784, 139574624, 114286392,
-178541792, 131085088, 69427608, 6489696, -25514790, -108342696, -130485400, -98752032, -115805744, -99387688,
--9206799, -13757317, 16040092, 73951824, 14881525, 7090991, 0, 0, 0, 0,
-0, 0, 0, },
+241592, 2704756, -2811056, -4813585, -194884, -3294777, -300111, -868120, -7608535, -6163815,
+-1093069, -2480881, 3034395, -1336809, 1396938, 1696512, 656056, -1179505, -44023, -2864743,
+172336, 3119220, 1845762, -1472100, 82141, 1650878, -4111894, -1278290, 312996, 1671279,
+-1730335, -3926137, -1023813, -3874597, 589484, -1642825, -1633161, 1837709, -2043331, 1550483,
+819802, 1028645, -3154654, 973884, 186294, 1679869, -2723009, 1590212, 1247688, 2509335,
+-673773, 3206193, 1557463, 3257196, 1826435, -2621541, -1370632, 6327024, 753767, -858993,
+441845, -52076, 3707094, 119722, -2083596, -1013075, 4282083, -1893544, -914828, -4538170,
+-466004, -1688459, 1822140, -378494, -469762, -1940788, -3853660, 13997835, 7126962, 6266358,
+3201361, -1299228, -634581, -1255741, -3083250, -3836480, -3036542, -3928821, -1942399, 4026532,
+1099512, -64425, -235149, 2678449, 947040, -1482301, -1977833, -1182727, -7457137, 3103651,
+496606, 181999, -1752884, 1041530, -147103, -1890859, 756988, 2733210, -301721, -3200288,
+-1138166, -1337882, -1841467, 484258, 2849711, -747861, 417149, -3699578, 2075006, -4592394,
+2609730, 712428, -194347, 85899, 2565169, -3528853, -3054259, -4831302, 872415, 907849,
+-200790, 2805688, -3467112, 669478, -900869, 96100, -2710124, 1940788, 326418, -1605244,
+2405719, -4778688, 1547799, -2601140, 4171487, 2243584, 71941, 393526, -1866700, -5873368,
+3508988, -1176284, 12961138, 6540162, 8377871, 2611877, 2688650, -250182, 3131568, 606664,
+2757369, -1956895, 5606543, -1227824, -6921877, -1574106, -102542, 626528, -2360622, 5385352,
+45097, 2265059, 4713727, 2689187, -180389, 260919, 943282, -4247186, -3224447, 2068027,
+1918777, -1369021, 235686, 2486249, -4716948, 6598681, -884763, 1213865, -1239098, 2631741,
+3022583, 451508, -3663607, -3204046, 6616934, 447750, -2242510, 7516, 3708168, 3220689,
+-2281702, -2445984, -6290517, -1567126, -2726231, 566399, -2488934, 860604, -6126771, -2073396,
+425739, -2059437, 1032403, 2713883, -1457068, 198105, 839666, -1121523, 2032593, 221728,
+2620467, 457414, -1299765, -2910377, 79994, -3634616, 1032940, 848256, 2986613, -9110699,
+-2680597, -2234994, 1746978, 1549946, -5896453, -2942590, -1012002, 1248762, 3433826, 804233,
+4635881, -3882651, -5102421, 1314797, 375810, -1174137, -3432753, 11545946, -417149, 2902861,
+900869, 134755, -66572, -2049773, -4276177, -3753265, -899796, 2763275, -2298881, 5914170,
+-1884417, -830002, -4847408, -6273337, -311922, -4102231, -1925219, 7923678, -4271882, -1525250,
+-4139275, 1302449, 421444, -1880122, -4355097, -1184337, 258235, -5515275, 835371, -3133179,
+4379256, 2374580, -2158758, -1646046, -1085553, 877784, 13959, 2879239, -1459215, -2614025,
+-1971927, 6995428, 7012608, -2840047, -6234145, 307627, 2291365, -850940, 2202245, -3437585,
+836445, -4017942, 2555506, -1015760, 7474854, 1490891, -29103772, -4935455, -8248485, -9767829,
+2771865, -3431679, -8130910, -7092602, 1357210, -6990060, 1169842, 9950902, -2313377, 4162897,
+3509525, 8360691, 2436857, -6146635, 1584306, 9101573, -4115653, 4432943, -6629819, -6445136,
+2282775, 2468533, 7543573, 228707, -4235375, 4037806, -2754685, 3047816, -118648, 4398584,
+-3642132, -2751464, -4086125, -164819, 1075352, -1936493, 3641059, -7929584, 1292248, 7515656,
+1993939, -2454574, 3313031, -4232691, -1673964, -9992778, -2526515, -616328, 1888175, -147640,
+5604396, -8132521, 1163399, -1428614, 4357245, 1712618, -1053341, 5131949, -4387309, -1126892,
+-3386582, -8023536, -2585570, -2328946, -1486596, 4929549, -4333085, -8951786, 1153199, 1567663,
+225486, -14581414, 8320963, 9363029, -502511, 5251672, 2397129, 11059541, 14716169, 1882269,
+1931662, 4212826, 1834488, 2436857, -2084133, 2900714, -2418067, 3853660, 4509179, -12616466,
+6540162, -1399623, -2326262, -3919158, -5092758, 2037425, 3594351, 5711233, 1134408, 947040,
+-7342247, 288837, -2128156, -2494839, -1067299, 943282, 450972, -607738, 7264937, -425202,
+-2365990, 2336999, -2771328, 3650722, 4934918, 5405753, 2895345, 532576, -2981244, 6035503,
+2012729, 745714, 723165, 722091, 537945, -3621194, -4865124, 4427038, -4508642, 4231617,
+4106526, 2798171, -460098, -3389803, 3172907, 3730716, 8790724, 3817152, 3532611, 1870995,
+-7962333, -2703145, 1517197, -1508070, 4250944, -7394323, 1329829, 26977226, 8202314, 1942399,
+5334887, 13452911, 5490042, 16231218, 4032438, -3660386, -1131724, -1435593, -1522029, 4349192,
+7013682, -3320547, 1526324, 4790499, -1786706, -6853694, 5400922, -721018, 2573759, -2393371,
+-3387656, 5448703, 1299228, -600222, -1571958, -6263673, -3052111, 3245385, 833761, -2221035,
+-1090922, 834297, 2310693, 6104223, 1945620, -5825587, -1333587, 263604, -1822140, 1950452,
+2914135, -5874442, -6993818, -514859, 1708323, -850404, 5337571, -10035191, -2151779, -4614406,
+-5632850, -726923, -484794, 1351841, 5258651, -166430, 740882, 1604170, -920734, 6974490,
+4459250, -5929203, -5167920, 3773666, 8521752, -854162, -4079145, 8351564, 4417374, 1831267,
+-3790846, 12896713, 6802155, 11567958, -3678103, -287226, -2694018, 11640435, -12043625, -2160369,
+3499862, -2783676, -2129767, 3607773, -1075889, -4247723, 10866804, 5525476, 1517197, 17386564,
+-4580583, -1651415, -3489124, -339839, 3227131, -5093295, -318364, -2891587, 7075422, -6271726,
+1792612, -128849, -1555852, 76236, 4248260, 2167348, -5178120, -10026601, 454193, 1347009,
+8046085, 8562554, 9352828, 193810, -5061619, 5911486, -15749645, -3313031, -6075231, -9998684,
+6671158, -2882997, -2839510, 4280472, -1683627, -3539590, 14057428, -697932, -3980898, 3933116,
+482110, 2717104, 2805688, 776315, 8495445, -6175089, -3065533, -723702, -7239168, -1403381,
+1323387, -3349001, 2374580, 2417530, 8662949, -5479305, 2573759, 4647692, 2928631, -20774220,
+-30985504, -5324686, 1643899, -615254, 970663, -1523103, -6115497, -3572339, -4843650, -1388885,
+5186173, 5986111, -5333813, -8106751, 7050726, 1404991, -4278325, 344671, -574452, -4929549,
+-3960497, 11469710, 6012954, -6150393, 3316789, 1322313, 5097053, -5944772, 6856379, -6604586,
+4781373, 3049964, -1195075, -3031173, 3175055, -12317429, -5929203, 7696582, 12470438, 6904160,
+-8323647, 329102, -5824513, 8280160, 1938104, 2270964, 841277, -6526740, 3526168, 10152229,
+1402307, 7743826, 5615133, 3686693, 6051072, 12473659, -3086471, -12007118, 6271189, 348966,
+-2593087, 969052, 10895795, -3944391, -7009924, 4009352, -1602023, -811212, -2429878, -1176284,
+-2950106, -5240397, -2535641, 7611219, -9346923, -5521181, 1473711, -12061342, -7698192, 1911261,
+2001455, 15828565, -13857175, -9654550, -5310190, -2758443, -1663226, 5028333, 5040144, -7510824,
+7632694, -1893007, 3479461, -5454072, 11336566, -2340757, -4236985, 7162395, 5282810, 4102768,
+-7687992, -7384123, 9558450, -5164698, 2800856, 2183991, -3503083, 7976291, 2425583, -166430,
+1744294, 5811628, 7582765, 2202245, -6910603, 1426466, -9839770, 5644124, 2398202, -11041824,
+7558069, 1642288, -5847061, 9820443, 2957085, -2845416, 5570036, -1040993, 10729365, -2646774,
+-3078955, -2451890, -1810866, 14222247, 2602213, 161598, 3411278, -12098923, -8083129, -8209830,
+239444, 7634841, 241055, 9524627, -13144211, -4873178, -8883603, -6911676, 16400869, -1342177,
+4441533, 5415417, -16287053, 5187247, -7072738, 4079682, -4984847, 13196287, 2069101, -8982387,
+1312649, -9156333, 7439420, 14582488, -12409771, 8289287, 2895345, -187905, 5838471, 15545097,
+-5978058, 165893, 4604205, -16594143, 893353, 7824357, -4750234, 5667210, 5878737, -2860985,
+14985141, -7300371, -13689671, -5648419, 1578937, 580894, -2843268, -5651640, 4056597, 4030290,
+-35970, -9357660, -2286533, -2189897, 6381248, -3954054, 25233470, -2922188, 3602941, -900869,
+-1078037, -11985106, 1261647, 9364102, 7364795, 24915106, -2626909, -2091649, -5070209, -670015,
+-6893423, -214748, 9927817, -4939750, -960462, 2116345, 2400887, 10044855, 7981660, 2574833,
+19155018, -3266323, -17568026, -17348446, -12382928, -2268280, 5623186, -1533303, -4858682, 28867012,
+-20871394, -15592879, -5219996, -9838696, -11572253, 13992467, 5403069, 2824478, -4657892, -2776696,
+16601122, -4931696, -7440494, -20274394, -3282966, -569620, 9157944, 3425237, -4529043, 1119913,
+7920994, 3629247, 4753992, 12763032, 15743739, 4290673, -6602976, 3936875, -10344429, 6409165,
+4866198, -3811247, -325344, -7918309, 2361158, -187368, -15400142, 13862544, -2064269, -7121056,
+7998303, -14077292, -4009889, 14374182, 7591892, -787053, -418222, -19438486, 5562520, 9806484,
+4894652, 2742874, -2193118, -14673219, -41999948, -4113505, 6990060, 10529649, -2457258, -12950937,
+18622978, -10399726, 7556458, 14091788, 10786273, 1088774, 13248363, 376883, 3248606, 1745904,
+6758668, 209380, 18790, 17608292, -10226317, -6015639, 13573707, 14431627, -4387309, -6215355,
+-2134062, -3346317, 14933601, 10991895, -28192702, -2224256, 1433445, -12079596, 4302484, -17980344,
+13455596, 4231617, -3008625, 8568460, 3073586, -3168612, -7098507, -3825205, 19345606, 1582159,
+-946503, 5225365, -3511673, 8837432, 22950694, 10433549, -4239670, -3431142, -4253092, 14501957,
+4127464, 14668387, 8878234, 7689602, 3270081, -5323612, -7397008, 6936909, -14805289, 3127273,
+-8185134, -5550709, -206158, 10424959, 699006, 1462973, 2844342, -2398739, 15659988, 21756694,
+23571318, 504122, 10471130, -13752485, 5021354, 8868034, -7050726, 12811351, -10256382, -19177028,
+2255932, -9886478, -1813550, 1260036, -10606422, 2860985, 14253923, -8572755, -8278550, 7094749,
+13786845, -1040456, -3228742, -16646219, 30662846, 2398739, 7636989, 24213416, -9248675, 2854543,
+-5003100, 6691559, -7332046, 7280507, -17221746, -19437412, -1097364, -11345693, -1399623, -688269,
+-1843615, -2946885, 748935, -5098126, 4427575, -15375446, -6854231, -20885352, -1635846, 5289252,
+9637907, 23399518, 12160126, 4382478, 2330020, 7011534, 4473746, 4290136, 8644159, 10145250,
+-3754338, -19039590, -19972672, -12811351, -8615168, 2347737, 5762773, -6708202, -12074227, -19315004,
+-231928, -7117298, 17171816, -7608535, 3645890, -13269301, -7533910, -1973538, -6608881, -26035018,
+-28608240, 7990250, 1715839, 1142998, 12952011, 8492224, 10071161, 9564355, -18563922, -3331284,
+30698278, -5580773, -13881334, 5093295, -9003325, 3603478, -22107808, 8318278, -11836393, 4241280,
+18926848, 13588203, 2282775, 14455786, -2360085, -6582575, 8609799, -11890617, -21855478, -33794412,
+3199751, 194884, 13272523, 8881992, -12016782, -6890202, -32139240, -2739116, -14770393, 2963528,
+-7253126, -4227859, -5894843, -3019362, -2177549, -11924977, -4730907, -13814762, 10850161, -3314641,
+9330280, 22608170, -11970611, 5985574, -1578401, -6531572, 6333466, -13241921, -20876762, 9374303,
+5306969, 9287867, 6657200, -45287744, -19839528, 5010080, -14461155, -2204392, -12306692, 17593796,
+22717692, -2141041, 25081536, 2394444, 11581379, -4424890, -472983, -15066208, 9125195, 16594143,
+4248797, 28408524, 1093069, 2615098, -8335995, -14703821, 18076980, 26206280, 10241350, 3490198,
+3287261, 8395050, 1510218, -470299, -25477210, -17845590, -8159901, -32974612, -40134320, -30504468,
+-13312788, 8759586, 151934, -7572564, -14404783, -411780, 27173184, 12660490, -23004918, -4301947,
+-4437775, -16996260, -2552284, 766652, 11660299, 7839389, -17077326, 12088722, -9483825, 4861366,
+-8814347, 2312840, -13010530, -5477694, 6993281, -24659018, -4263829, -9603547, 8289824, -6512244,
+-21998822, 25779468, 25672630, -165356, -9920838, 13798119, -33929168, -11253888, 10488310, -12060268,
+-7000797, -1437203, -10812580, 1626182, -2620467, -23535348, 10051834, -3529926, -6885370, -8480413,
+-5931350, -2092723, -6200322, -10421201, 19071266, -9798431, -9044664, 8274792, -373125, 30400316,
+-6499360, -20309826, 10679436, -11173357, -9207336, -16343424, 9554692, 17774722, -39045012, 956167,
+29328184, -8668318, -26057030, 51675436, 36187784, -275415, -10143102, 8573292, -31092878, 964757,
+37918120, -6273337, -13627931, 1116155, 43044700, -5699959, 9215926, -8694624, -19901268, -15310485,
+-4291746, -6677601, 7720741, 11676942, 343597, -15704011, -23095650, -20381768, -3633006, -3957812,
+-11565273, 11307038, 8372502, -8471286, -11422466, -11487964, 6679211, 3174518, 8262980, 22484154,
+-320512, -17651778, 12382928, 5843303, 4062502, 2246268, -526134, -7950522, 15860240, 9226663,
+-6601902, -6600828, -5266704, -19916838, 5611375, 16571594, 4480725, -13507135, 17018808, 13911399,
+6896644, 3263638, -9310952, 6152541, -30274688, 6174016, -2217814, 28311350, -10038412, -11586748,
+5130876, -5166309, -1285806, -17495012, -4539244, -3275986, 24288040, -14925548, -35012572, -13083007,
+48520784, 2118493, 7902203, -7930657, -16156593, -21281026, -7281044, 6303402, 14100378, 12058658,
+-10488847, 201327, -21665426, -7580081, 7537668, -17810156, -9883257, -6541235, 26112864, 14069239,
+14288282, 14048301, -15427523, 3205656, 5327907, 6646462, -1684701, 18206904, -4136591, 8315057,
+13509283, 5816997, 3549791, 12213813, 15669651, -8778913, -19102404, 13229573, -2403034, 790811,
+-20247012, -17676474, 3792456, -8383240, -7696045, 17149804, -17289390, 22461068, 13204877, -8431558,
+10566693, -11382737, -13506598, -14042932, 21212844, -14101451, 5895380, 8348880, -26651346, 4166118,
+1480690, -18082886, -36258652, -28675350, 20475182, -20692616, -2857227, -17951890, -7785702, -11463805,
+-4959077, 13897440, 1109175, -9687836, 9076340, 26416196, 26193394, 25622164, -9109089, 223875,
+-20653424, -936303, 4440460, 3653944, -17999672, -20136954, -30166240, 21217676, 3236795, 7102802,
+-4038880, 11191611, -7378754, -8578660, 7646116, 16331076, 5134097, 10767483, 34858492, -4831838,
+-18816788, -42890616, -4634270, -16440061, -6611029, -9989020, -18328772, -13734232, -28107340, -3049427,
+1341640, 10946798, 32822676, -25150792, -7930120, -3541201, 12214887, 11753178, 32830730, 5077188,
+-32700808, -7012608, 9595494, 28526100, 9725417, -41104984, -14323716, 39802000, 6312528, 39868572,
+-19544786, 3009698, 6142877, 25134686, 1178432, 23267986, 35306240, 6930467, 30721902, 21623012,
+8604430, 40373228, 36217848, 13792214, 54392004, 42121820, 29000692, -35771172, 2875481, 21097954,
+15159087, 5941014, -22724136, -26813480, -11196980, 9338870, -29704530, 31659814, -14780593, 21501680,
+7524246, -22612466, 1739462, 17690434, -11664057, -23628762, 15312095, -4671851, 12870406, -6299644,
+1969243, 8451422, -17712446, 613643, -8733816, 2211908, -27783070, -17945984, 23825794, 3820374,
+8735963, -17356500, 19291382, 21333102, -15424301, 14645838, -21684216, -1495722, -12700755, 17658222,
+34876744, 2345052, 42652248, -8057896, -3244848, 5203890, 3406983, 171799, -25752624, 46275052,
+27132920, -54761, 22725746, 21805548, 23715198, -5858336, -1222992, -40235792, 19221052, 24143622,
+-6118181, -3872450, 27079768, 18112414, 14301167, 37737192, 5747740, -13806709, -20830592, 10058813,
+-6097243, -21560736, 21665426, -25713970, 2498060, 9557913, -18938658, -29949880, -19534048, -7334194,
+5667746, 21638046, -34846144, 18933290, 34573948, -2678449, 39526584, 9286793, -30623116, -22164716,
+-601295, -13444858, -17873506, 18852222, 26477400, -4500052, 19011136, 20847772, -16232292, 14053133,
+29496224, -3865471, -35321812, 12418898, 850404, -9615358, 12178917, 25873420, -7082938, -16433619,
+8793946, -14621142, -14257681, -3442953, 26600880, 18760418, -33212446, 8795019, 16910360, -25963614,
+-13172128, 26029650, -5850819, -43827992, -3383897, 32311038, -9444096, -62300112, 64623152, -20391430,
+-5299990, -33503966, 42460048, 10566156, -11990475, 26792542, -15338402, -15687368, -5541582, 72640248,
+27240294, -34441344, -25836376, 25993678, -4538170, 39085276, 3018825, 28465432, -41175316, 31482648,
+62420908, 2182917, -3776350, -14314052, -7494181, -28122908, 60033444, 32836098, -28589986, 26800596,
+62093416, 11717208, -23668492, -5935108, -5616207, 10613938, 9558450, -19541028, -27285390, 7122130,
+-23051626, 4415764, -14254460, -16898012, -3375844, 2617783, 8155069, -18796388, -7263327, -7567196,
+-22898082, 19224810, -7037841, 1073205, -3195993, -15607911, 6359236, 4185446, 766115, -3483219,
+395137, -702227, -8913131, -19767050, 8607114, -9862856, 8717710, 5891622, -19446002, -15978889,
+-1630477, -2352032, -2075543, -4269735, 16152835, -11105712, 1770600, -20864952, 17918604, -20421496,
+-10717554, 10191421, 362925, -16316044, 13072270, -21930104, 1709934, 6746320, -572841, 2559264,
+10539850, 5195300, -22716082, 11709155, 1573569, -13420162, 19432580, 7978439, -21513492, -2011655,
+-17022030, -1926293, 7458211, 5865852, -20632486, 25733834, -36866388, -46635292, -16768089, 139707776,
+112267224, 73978664, 135693584, -54192824, -128086128, -41507100, -207131776, -81186160, 5935645, -49030272,
+95090040, 129360120, 21248276, 82027432, 141749488, 2546379, 39017092, -9804337, -166732784, -138470288,
+-104308112, -104123968, -51167556, 78373488, 42266772, 60453812, 173771152, 73049344, 10492068, 103397040,
+48080548, -60544544, 19915226, -50980724, -169347872, -41613400, -88771072, -175013472, -29521994, 2915746,
+-43189116, 116514944, 135098192, 52311092, 158905744, 160296240, 29229400, 60841432, 26987964, -103806672,
+-115757424, -108985872, -194230768, -172377968, -66453344, -81277424, 15010911, 100990784, 139574624, 114286392,
+178541792, 131085088, 69427608, 6489696, -25514790, -108342696, -130485400, -98752032, -115805744, -99387688,
+-9206799, -13757317, 16040092, 73951824, 14881525, 7090991, 0, 0, 0, 0,
+0, 0, 0, },
{
1680943,
-1800128, 2106682, -2403034, -3902515, 656593, 2688113, -1779727, 1821603, -6285685, -3461744,
--3566970, 304406, 941672, -2608656, -3248069, 1381369, 3463891, 161598, -1697049, -4660577,
--2656974, 3657702, -747861, 173409, 1690070, -1887101, 1130650, -1387274, -2617783, -1802813,
-3553549, -4591320, -2381559, -2007897, 4698694, 3243237, 2784750, 326954, 1528472, -195958,
-3016141, 1087701, 1097901, -15569, -159988, 5154498, 4013110, -13959, -3427384, 1087164,
-609885, 1602560, -4969814, -184147, 3262028, 259846, -592706, 366146, 1138166, -1207423,
--795106, -1487669, -1818382, -2593624, 1584843, 1868848, -3755949, -791348, -399432, 1054415,
-1325534, -2320893, 1490891, 1031329, -670015, -1116155, -4995584, 15668041, 6101001, 3752191,
-1309965, -3411278, 107911, 2941516, 5743445, -1074, 613107, 251792, -2019708, 471373,
-1985886, -472446, 1939178, 2819109, 3924526, 1538672, 1641214, 1950452, 1859184, -3648575,
-3656628, 6685117, -3168612, 1831804, 1107565, 1796370, 390305, 3915937, -2575370, -1031329,
--2316598, 2216203, 6753836, -1233729, 3292093, -192737, -1490891, -5641977, 2097018, -2973191,
-2574833, 1190780, 2870649, -420907, -1700807, 798864, -1170916, 3747896, 504122, -3149285,
-3909494, -952946, 3047816, 2257542, -129923, 2167348, 4391604, -1325534, -1561221, -1329292,
-2165737, -1870995, -2409477, 2682207, -13422, 1797444, -2993592, 4313221, 173409, -1203128,
--635118, -378494, 12114492, 9703942, 4696010, 814970, -1931125, 5669894, -3376381, -3381213,
--929860, -5991480, 3557844, 357019, -2661806, 1552631, 3410741, 6196027, -2960306, 3617973,
-7773354, -2153389, -85899, 1916092, 3969087, -934692, 4334696, 3272228, 4385162, 1142998,
-3310883, -3426847, 5888937, -626528, 5674189, 2985002, -802622, 816581, -1129576, -45634,
--2275259, -908922, -2775086, -1836635, 1857573, -467078, -5827734, -1192390, 412854, -86436,
--3342022, -3189550, -1849520, -1348083, 4212826, -1715303, -5063767, -6433861, -7355132, -2424509,
--3374234, -230854, 855235, 3458523, -4925254, -2121177, 267899, -492311, -2391760, 477278,
--5240397, -533113, -6157373, 2988760, -3577708, -1678259, 3497714, -744640, 6345278, -13913547,
--3912715, -6981470, -1464047, 133144, 7594576, -3626026, -12739947, -4299799, -467078, 4933307,
-1348083, -4535486, -11084237, -2676302, 2847027, -1088237, 6006512, 380105, 2544231, -470836,
--5010616, -5142150, 3023120, 4022774, 292595, 1400159, -358093, 2514703, 382252, -6356015,
-172872, 9291088, 1054415, -2131378, -1026497, -2288144, 373125, -1954210, -4168803, 6267968,
--2104534, -2408403, 5352603, -2767033, -5152350, 366683, -193274, 300111, -7356742, 5925445,
--2456721, -3221, 5073967, 4986994, -7916699, -1809792, 1174674, 1973001, -1002875, 4292283,
-796180, 2175938, 2506650, 516470, 1880122, 3564823, 270583, 52613, 2700998, -8719320,
--2597918, 144418, 3618510, 2294050, -2040646, -579284, -27736362, -11266236, -5412196, -8171176,
-2722473, -2985002, -2456185, -579284, 3748433, -3457986, -3611531, -5815386, 1320166, 4721780,
-1313186, -4083977, -4536559, 1129040, 4352413, 3561602, -5193689, -8225399, 777926, -7718056,
-4124242, -368830, 2926483, -537945, 2824478, -3255585, -1064615, 7398081, -9220758, 3951907,
-2339147, 674847, -3178813, 1684701, 4760971, 830539, -5574868, 737124, -3490735, 2363306,
--7668664, -743029, -6939594, 4973572, -456340, -1884954, -1889786, 2490544, -11744051, 4942434,
--3311957, -7726646, 2972117, 5200132, 6628209, 3245922, 1487132, -1098438, 863825, -1262184,
-4294968, -3112778, 1265942, 2565169, 8222715, 504122, 204011, -6713034, 3748433, -3818226,
-611496, -16157667, 8047695, 12164958, 2682207, 737124, 7176891, 2092186, 2393908, 3542811,
-807991, 3724274, 4267587, -3422552, -284542, 326954, -3590056, -2623688, 267899, 1721208,
--1975148, 12719546, 7193534, -2068027, 1265942, 3922916, 5513665, 5723044, -2107218, 3987877,
-5201743, 118112, 1788854, 1247688, 3141232, 1857573, 1614371, 2600603, 3017215, -5704791,
--3894462, -8709657, 1366873, -3145527, -3848828, 4336307, -792421, 2709051, -10173704, 11669426,
--352187, -5631239, -516470, 9264781, 7272990, -1504312, 806380, 4498978, -1548873, 1950452,
--2805151, -7289097, 1524177, 741419, -5180268, -2246268, -5042829, 1148904, 2968896, 1460826,
--1907502, -4932233, -6776385, -9050570, -5460514, -2240362, 2168959, 29351806, 7729331, 2203318,
--1138166, 17690970, 2015413, 8409009, 1667521, 5589363, 9131637, 3244311, -5187247, 5418638,
-6241125, 977105, -553514, 1319629, 11483132, 761820, -4061965, -7092602, -2178622, -274878,
--8160438, 1276679, 2265059, 4532801, 1839320, 3163244, 8735963, -2877628, -1549410, 5329518,
--997506, -2536715, -610422, -8079371, 4974646, 3199214, 20938, 4928475, -2717104, -7138773,
--15188078, -5706401, 5371394, 5906654, 13959, 4060892, -4425427, -4869419, 12032888, -7354595,
-5348845, -6531572, 1109712, -9406515, -9723806, 9990631, -4145180, -4101157, 14078903, 663036,
--1794760, -7150047, 5043366, 7761006, 216896, -4966056, -8590471, -1888712, 5919539, -2575370,
-1840930, 14487998, 5409512, 11935714, -7130183, 2059437, 7373922, -9841918, -2760053, -4094715,
-1449015, -5173825, -2433636, 6915971, -1751810, -1784022, -38655, 8761196, -2863133, -4648765,
-10275709, 1185948, -6427956, 2521146, -1020055, 1169842, 4201552, -6007586, -788663, -4611721,
--7057168, 528281, 708670, 1046361, -6925098, -8148627, 3531000, -1063541, 3456912, -703838,
-4791573, 860604, 353798, -5342940, -4242354, 941135, 5346161, 1935420, -823560, 13659607,
-3919158, 2017561, 6979322, 1979443, 5355288, 4452271, 3783329, 1562831, 3060701, -2414845,
--455267, 698469, -5288179, 1214402, -8912057, 2272575, -5638219, 4641786, -2826089, 2420214,
--457414, -4939750, 2388539, -1458678, 5864778, -4509179, 14237280, 11058467, 4726612, -18144626,
--35951024, -1149441, -7472170, 6557342, -2161979, -9463960, -1272384, -7576323, -9111236, -7128035,
-11346230, 6478422, -8066486, -4023848, 8581345, 5594195, 7636452, -4963909, 4850629, -4333085,
--5131412, -992137, -2379412, -14529874, 3871913, 9148280, 3468186, -8384850, -2287070, 2176475,
-2070711, -7376607, -1997697, -10830297, 2316598, -4777614, -717260, -3310883, 1988570, 12977244,
--1524177, -1539209, 5946382, 9738838, -5623186, 3251827, 3190087, -6720013, 3849901, 4657892,
--9086003, 2323577, 5538361, -382252, -9569724, -4864051, -6260989, 9584756, 3048890, 9477919,
--5185100, -8371428, 1988033, 6129992, -2373506, -5432597, 4190814, 8310762, 5915244, -6127308,
--4673998, 354872, 11985106, -401579, 6453189, 4974646, 3437585, -18808198, 547071, -104690,
-11053635, 1919850, -3653407, 5572720, -2464774, 2062121, -9359807, -3576634, -5757941, -4159139,
--11997454, -5443871, -6985228, 16482474, 10341208, 9744744, -11803107, -11242077, -4591857, 5083631,
--151398, -939524, 751619, 2699924, -454730, 4155918, -6759205, -6985228, 233002, -2629057,
--8457327, -9762998, -6757594, -6069863, -3517041, -4493073, -10857677, 4112968, 13917305, -3991098,
-6644852, 7714298, -6205154, 6498286, 5011690, 671626, 12642773, -1772748, 10590852, 2652679,
-1472637, -11074573, 4024384, 3513283, -2516314, 12968654, 11476153, 765578, -4287988, -8710731,
-4072166, -8691940, 2702071, -1921461, 8251169, -1963874, -13032541, -1250372, -5577552, -4497905,
--10477573, 8070244, -17010218, 7952669, 4929012, 7571491, -8224326, -13152264, 3433290, 4622459,
-156766, -11009612, 10492068, 3678103, -6412386, -9634685, 4050154, -3974455, 17115982, 21066278,
-2502355, -2774012, -8201777, 12185359, -13814225, -4238596, 15855946, 4590783, -3722663, -8348880,
--8703751, -4103305, -246424, -10324565, 1906429, 12066174, -2007360, 4855461, -9003862, -7215545,
--3160022, -5875516, 16246251, -5643587, 6998649, 6718403, 6272263, 2317135, 2806224, -11119670,
--12214350, -10670309, -3037616, 8922795, 18810346, -7272990, -14525579, -2703682, -6988986, 4112431,
-2455111, 11310796, -7133941, 401043, -9277129, -1117765, 14941654, -1431298, -9007083, 11647414,
-3057480, 2356863, 5228049, -11873437, 1264868, -3667365, 466004, 6132677, 12186970, 26848378,
--11698417, -9079024, -2841658, 5695664, -15726560, 6323803, -4283693, 7962870, -7088844, -3160559,
-9669582, 7256884, 2691334, -4847408, -1829656, 13357348, 13035763, -2673080, 11374147, -3270618,
-16750909, -7810935, -4192425, 3067681, 17549236, 12916577, 4192962, -9386114, -726923, -19505594,
--3023120, 3117073, 8930848, 10548977, 18494130, 4932770, -408559, -825171, -7195144, -12122545,
--945430, -10497437, 7583839, 2493766, 11766063, 6689412, -4108673, 11843909, -14030584, 6440304,
--3175592, 1152662, -2485176, 15090904, 8700530, 4454955, 2621004, -26896696, -4342749, 16311749,
-8100845, 1273458, -498216, 1139240, 12997108, 5884642, -20419348, -6219650, -7765301, 2499134,
-695248, -19614042, 1269163, -17985176, -11570642, 328565, 9396315, 19220516, -5109938, -7394323,
-727997, 7610145, 3827890, -11279121, -1103270, -9089761, -907849, -12480638, -1811939, -10694469,
-86973, 11620571, 452582, 25330106, -10976863, -4777078, -9414031, 10488847, 16216186, -13109314,
--4973572, -20478404, 3386045, 85362, 5137855, 5368172, -12160663, -6633040, 8507256, -3145527,
--3149822, -11032160, 22150220, -2782602, -24976846, 7106024, -7063074, -6976638, 8092792, 7085623,
--7734163, -7493644, -3078418, -13806709, -9211631, 4967130, 2361695, 5173825, -5116380, -9888088,
--12671764, -11541651, 8865886, -17079474, -683437, 4529043, -6381785, 813359, -1189706, -1975685,
--14954539, -2135673, -6840273, 9256191, 9920838, -1543504, 16050293, -341450, -1722282, -4507568,
--2800319, 26380762, 228170, -12431783, 31034896, -8164196, -2496450, 2490007, 13336410, 9181566,
--19821274, -8433168, -18831820, 3890704, 1260036, -6172942, -20766166, 565862, -9620727, 4033511,
-4745939, 10239739, 663036, 7354058, 36323612, 7522635, 9142912, -6045704, -1916629, 15437186,
--1296543, 857383, 4265977, 634045, -2259690, -8677445, 14638859, -15908559, 6485938, -23456428,
--6976638, -11227581, -14190035, -12684112, -19864, -25636122, -8566312, 2939368, 14375792, 7750806,
--24737402, 13458817, 9273908, 9636833, -15749108, 10934450, -7435126, -18609020, -6210523, -18545668,
-8639327, 20715164, 5293011, -2764885, -14096620, 10565083, -15020038, 21556440, -4286914, -3242700,
--13610214, -15597174, 2037425, 16518444, 5641440, -12989055, -4903242, 1953136, -2217814, 5028870,
-16827682, 3206193, -10894185, 4935455, -3220689, 5073967, 18425410, -26065620, -11934104, -20965346,
-11795591, -4228932, 1928440, -6934225, 14961519, -14891188, -15158550, -6857452, -3673808, -10747619,
--18757732, -9006010, 3265786, 12134356, -17315698, 11203959, -6685117, 1281511, 21854404, 16865262,
--583042, 8846559, 3954591, -3610457, -3027415, -30141006, 3786551, -3148748, 2549063, 5748277,
--2806224, 709743, 29879014, -27369142, 2044941, 32767380, 3727495, 8959302, -13507135, -3648575,
-16530255, 30058866, 809601, 26638998, -11223823, 24082418, -9368397, 17785996, 17242146, -4647155,
-34398392, -6051072, -2649995, -10687489, -17300666, -17147120, -9242233, -10390063, -26328686, -11760157,
--7202124, 8771934, 6605123, 587874, -15923054, -13939316, -10917807, -39524436, -27138824, -20107964,
--1370632, 25968982, -16791712, -2704219, -12782360, -19817516, -15398531, -20230906, -19982872, -8630200,
--23687282, -26925150, -22385370, 6034429, -15266461, -8769249, -19176492, 18393198, 31501438, 2214593,
--2951716, -11349451, 3146601, -2386928, -199716, -2940979, 10350334, 1591285, 21689048, -18830748,
-2229088, -16090558, 32646584, 7390565, -18166102, 14287746, -12845173, 11511586, -17460652, 10110353,
-2162516, -11316702, 10315975, -17628156, -5118528, 4898947, 18093086, 7099044, 31645320, -7551090,
--19484120, 1265942, -5188321, 1704028, -12779138, -12222940, -20927766, 1914482, -22333830, -5452998,
--3232500, -20936354, 13530221, 15698105, -9762461, -2460480, -29527900, 31987306, 40177808, 4300873,
--17894444, 1845762, -30837328, 56963616, 22438520, -5389647, -16736414, -5515275, -17822504, 19149648,
-50599548, 398895, -32560684, -15875273, 18628346, 6001680, -6015102, 23110682, -4030827, 2269890,
-14228690, -2167885, -13193603, -5220533, 11801496, -15159624, -12562242, -6077916, 5211943, -52613,
--1977296, -6825777, 11113228, 319438, 16193637, 11601244, -15685221, 7147363, 19768124, 9984725,
--14482630, 4958003, 3657165, 12184822, 769873, 3700651, 3930432, 4522064, 27604292, 24890410,
-16340203, 34031172, -16824460, 17119202, -20368346, 12347494, 82678, 11203959, 15429670, 4003983,
-4178466, 17514876, 8738111, -5776731, 11799349, -801011, 15699179, -17467096, -9579388, 619549,
-37512244, -26829586, 2022930, -33449742, -4791036, 3285650, 11285027, -16055661, -6033892, -12608413,
-47953848, 4274030, 3259343, -10256919, -6957847, 8378945, 7215008, 4843650, 18499498, 8242042,
--7914551, 10357851, 19832012, -259309, 21788370, -1539209, 10635413, -21544630, 40269076, -5321465,
--4552666, 7435662, -30198452, -7075959, -14387604, 22214108, 12064563, 12968117, -13856101, 6060199,
-5520644, -17966386, 5690832, 17176112, 14261439, 5783711, -4125853, 3046206, -8494908, 31694712,
-5286568, 15030238, 11979738, 17771500, -26381300, -798327, -7328825, 6517613, -9159555, -10378788,
-23505282, -19835232, 17565880, -11894375, 18510236, -2078227, -16968342, 229781, -26032870, 19029390,
-17069274, 21254182, -55068460, 18762564, 11758547, -14694694, -10014790, -13191992, 30808338, -38322384,
-26703960, 62344672, 2749316, -23543936, -9909563, 22362820, 33370286, 13058848, -10438381, 5744519,
--25005836, 1578401, -14023605, 22371410, 4465692, 4276177, -11431592, 8516383, -1241246, -12545599,
-7413114, -12838731, -3344706, -11277510, -19412178, -15320685, 19020800, 10956998, 13173738, 8946417,
--24016384, -10337986, 8062191, -10487773, 18502182, 8495445, 3755412, 6866579, 29485488, -10624675,
--24538758, 49424872, -19914152, -31779000, 35094716, -18286898, -6318434, 4502200, 19448686, -22111566,
--3161096, -751082, -9785546, 65031172, 2416993, -13868449, -1227287, -2207613, 19982872, -36049272,
--22079354, -17056388, -10042707, -4076998, -25283398, -3030100, 884226, 7489886, 46467252, 40261560,
--13120588, 30362198, -29037738, -32491964, 21750788, 23868208, -4982699, 4229469, 8114267, 15350750,
-28202902, -2982318, 7524246, 28013388, -18195628, 2653753, -19704236, 21345988, 127238, 13173738,
--13441100, -20140176, 18897856, -19905562, 6206765, -4293894, 17817134, 496069, 3918621, -10320806,
-3437048, -7129109, -26337276, -20304458, 8918500, -1068373, -602906, 4923643, 19771346, -8163122,
--5859409, -15824807, 7305203, 6797860, -1816771, -2471217, -43969728, 2864743, 12738336, -14928233,
-11359652, -23568634, -4208531, 2616709, 15786152, 20437066, 2858301, -8134668, 6743099, 36089536,
-31128312, 31547608, -630286, -1459215, 7314866, 5036386, -12972412, 10501195, 39398272, -25732222,
--7662759, -6226092, 1483374, 3263638, 6587943, -18364206, -29102162, -9529996, 332323, 64684356,
-34295312, 23694260, 175020, -2692408, -12106976, 30214558, 8730595, 20812338, -68183, -4630512,
--3305514, -7863012, -41568840, 22873922, 22012782, -2222646, 35498440, 14404247, -22405770, -24223078,
-11136850, -10574209, -19860466, 297427, 3161096, 8325794, -4122095, 11190000, -1942936, 10541997,
-15909096, -14711337, -54099408, 28609850, -7205882, -18345952, 13728326, 18546742, 1857037, -38135552,
--3678103, -2542621, -36967320, -24867324, 21330418, -6852084, -14264660, -14165339, 9905268, -38196756,
--25071872, 49150532, -2952253, -30163556, 12764643, 26226680, 13079249, -42296300, 60400124, 22808424,
--34896072, 19166292, 28165858, 3215857, -23074174, 24520506, 30156040, 16321949, -21036212, 20407000,
-41720776, 1124208, 42201812, 48963164, -24869472, -16949014, -16652125, 46262704, 32168232, -21422224,
-13737990, -13214541, -27692338, 25232396, 61399780, 8210904, -15160698, -14227079, 36017596, 35713728,
-54715200, 23503134, -24098524, -7458748, -20358144, 12938589, -10388452, 16383690, 9149891, -24473260,
-12089259, -24937116, -9695352, 1367410, -10494216, 2651606, 12715788, 11856257, -127775, -19546934,
-3819300, 17967996, -7180649, 3784403, -8376260, -22981296, 23764590, -13320841, 16204912, -23638964,
--15588047, -2094870, -21381958, -4637491, 20081656, -18864034, 26737782, 3343095, 21658446, 10465762,
--11992086, -28481002, 23911156, 17025250, 9487583, 8095477, 24672976, -17069810, -10406706, -9055402,
-7151658, 11498701, -3315178, -21783000, -1898912, -1206886, -24849070, -7367480, 2973728, 8750996,
-18139258, 79457, -17688822, 24943560, -5120675, -1372779, 26343718, 15507516, -22845468, 9901510,
--14052596, 11326903, -7173669, 13047574, -18346490, 11290932, -40273908, -49613852, -25073482, 143142128,
-127679712, 75634376, 169090720, -36952824, -125483376, -45567456, -237379616, -126051384, -1654636, -62863288,
-85979880, 154910880, 22672596, 90475632, 179632720, 28707562, 63127428, 4611721, -183081568, -154903904,
--134901168, -150751200, -89887224, 72630584, 31986768, 72675680, 193899520, 114930640, 30708480, 141813920,
-65990560, -89602144, 48207788, -65915936, -167860208, -22597434, -103662256, -193171520, -85969136, -21845814,
--100008848, 109806744, 120618248, 54820964, 191907728, 214351088, 82310360, 104717208, 101109432, -115246320,
--73480448, -146827744, -225312912, -209976656, -133017288, -136410848, -38623032, 83235928, 111571440, 146126592,
-210413664, 185558160, 109989280, 76401024, 13536126, -92983360, -128986456, -99586336, -123028264, -157394976,
--51923472, -65560528, -23392002, 70367672, 34575560, 912681, 0, 0, 0, 0,
-0, 0, 0, },
+1800128, 2106682, -2403034, -3902515, 656593, 2688113, -1779727, 1821603, -6285685, -3461744,
+-3566970, 304406, 941672, -2608656, -3248069, 1381369, 3463891, 161598, -1697049, -4660577,
+-2656974, 3657702, -747861, 173409, 1690070, -1887101, 1130650, -1387274, -2617783, -1802813,
+3553549, -4591320, -2381559, -2007897, 4698694, 3243237, 2784750, 326954, 1528472, -195958,
+3016141, 1087701, 1097901, -15569, -159988, 5154498, 4013110, -13959, -3427384, 1087164,
+609885, 1602560, -4969814, -184147, 3262028, 259846, -592706, 366146, 1138166, -1207423,
+-795106, -1487669, -1818382, -2593624, 1584843, 1868848, -3755949, -791348, -399432, 1054415,
+1325534, -2320893, 1490891, 1031329, -670015, -1116155, -4995584, 15668041, 6101001, 3752191,
+1309965, -3411278, 107911, 2941516, 5743445, -1074, 613107, 251792, -2019708, 471373,
+1985886, -472446, 1939178, 2819109, 3924526, 1538672, 1641214, 1950452, 1859184, -3648575,
+3656628, 6685117, -3168612, 1831804, 1107565, 1796370, 390305, 3915937, -2575370, -1031329,
+-2316598, 2216203, 6753836, -1233729, 3292093, -192737, -1490891, -5641977, 2097018, -2973191,
+2574833, 1190780, 2870649, -420907, -1700807, 798864, -1170916, 3747896, 504122, -3149285,
+3909494, -952946, 3047816, 2257542, -129923, 2167348, 4391604, -1325534, -1561221, -1329292,
+2165737, -1870995, -2409477, 2682207, -13422, 1797444, -2993592, 4313221, 173409, -1203128,
+-635118, -378494, 12114492, 9703942, 4696010, 814970, -1931125, 5669894, -3376381, -3381213,
+-929860, -5991480, 3557844, 357019, -2661806, 1552631, 3410741, 6196027, -2960306, 3617973,
+7773354, -2153389, -85899, 1916092, 3969087, -934692, 4334696, 3272228, 4385162, 1142998,
+3310883, -3426847, 5888937, -626528, 5674189, 2985002, -802622, 816581, -1129576, -45634,
+-2275259, -908922, -2775086, -1836635, 1857573, -467078, -5827734, -1192390, 412854, -86436,
+-3342022, -3189550, -1849520, -1348083, 4212826, -1715303, -5063767, -6433861, -7355132, -2424509,
+-3374234, -230854, 855235, 3458523, -4925254, -2121177, 267899, -492311, -2391760, 477278,
+-5240397, -533113, -6157373, 2988760, -3577708, -1678259, 3497714, -744640, 6345278, -13913547,
+-3912715, -6981470, -1464047, 133144, 7594576, -3626026, -12739947, -4299799, -467078, 4933307,
+1348083, -4535486, -11084237, -2676302, 2847027, -1088237, 6006512, 380105, 2544231, -470836,
+-5010616, -5142150, 3023120, 4022774, 292595, 1400159, -358093, 2514703, 382252, -6356015,
+172872, 9291088, 1054415, -2131378, -1026497, -2288144, 373125, -1954210, -4168803, 6267968,
+-2104534, -2408403, 5352603, -2767033, -5152350, 366683, -193274, 300111, -7356742, 5925445,
+-2456721, -3221, 5073967, 4986994, -7916699, -1809792, 1174674, 1973001, -1002875, 4292283,
+796180, 2175938, 2506650, 516470, 1880122, 3564823, 270583, 52613, 2700998, -8719320,
+-2597918, 144418, 3618510, 2294050, -2040646, -579284, -27736362, -11266236, -5412196, -8171176,
+2722473, -2985002, -2456185, -579284, 3748433, -3457986, -3611531, -5815386, 1320166, 4721780,
+1313186, -4083977, -4536559, 1129040, 4352413, 3561602, -5193689, -8225399, 777926, -7718056,
+4124242, -368830, 2926483, -537945, 2824478, -3255585, -1064615, 7398081, -9220758, 3951907,
+2339147, 674847, -3178813, 1684701, 4760971, 830539, -5574868, 737124, -3490735, 2363306,
+-7668664, -743029, -6939594, 4973572, -456340, -1884954, -1889786, 2490544, -11744051, 4942434,
+-3311957, -7726646, 2972117, 5200132, 6628209, 3245922, 1487132, -1098438, 863825, -1262184,
+4294968, -3112778, 1265942, 2565169, 8222715, 504122, 204011, -6713034, 3748433, -3818226,
+611496, -16157667, 8047695, 12164958, 2682207, 737124, 7176891, 2092186, 2393908, 3542811,
+807991, 3724274, 4267587, -3422552, -284542, 326954, -3590056, -2623688, 267899, 1721208,
+-1975148, 12719546, 7193534, -2068027, 1265942, 3922916, 5513665, 5723044, -2107218, 3987877,
+5201743, 118112, 1788854, 1247688, 3141232, 1857573, 1614371, 2600603, 3017215, -5704791,
+-3894462, -8709657, 1366873, -3145527, -3848828, 4336307, -792421, 2709051, -10173704, 11669426,
+-352187, -5631239, -516470, 9264781, 7272990, -1504312, 806380, 4498978, -1548873, 1950452,
+-2805151, -7289097, 1524177, 741419, -5180268, -2246268, -5042829, 1148904, 2968896, 1460826,
+-1907502, -4932233, -6776385, -9050570, -5460514, -2240362, 2168959, 29351806, 7729331, 2203318,
+-1138166, 17690970, 2015413, 8409009, 1667521, 5589363, 9131637, 3244311, -5187247, 5418638,
+6241125, 977105, -553514, 1319629, 11483132, 761820, -4061965, -7092602, -2178622, -274878,
+-8160438, 1276679, 2265059, 4532801, 1839320, 3163244, 8735963, -2877628, -1549410, 5329518,
+-997506, -2536715, -610422, -8079371, 4974646, 3199214, 20938, 4928475, -2717104, -7138773,
+-15188078, -5706401, 5371394, 5906654, 13959, 4060892, -4425427, -4869419, 12032888, -7354595,
+5348845, -6531572, 1109712, -9406515, -9723806, 9990631, -4145180, -4101157, 14078903, 663036,
+-1794760, -7150047, 5043366, 7761006, 216896, -4966056, -8590471, -1888712, 5919539, -2575370,
+1840930, 14487998, 5409512, 11935714, -7130183, 2059437, 7373922, -9841918, -2760053, -4094715,
+1449015, -5173825, -2433636, 6915971, -1751810, -1784022, -38655, 8761196, -2863133, -4648765,
+10275709, 1185948, -6427956, 2521146, -1020055, 1169842, 4201552, -6007586, -788663, -4611721,
+-7057168, 528281, 708670, 1046361, -6925098, -8148627, 3531000, -1063541, 3456912, -703838,
+4791573, 860604, 353798, -5342940, -4242354, 941135, 5346161, 1935420, -823560, 13659607,
+3919158, 2017561, 6979322, 1979443, 5355288, 4452271, 3783329, 1562831, 3060701, -2414845,
+-455267, 698469, -5288179, 1214402, -8912057, 2272575, -5638219, 4641786, -2826089, 2420214,
+-457414, -4939750, 2388539, -1458678, 5864778, -4509179, 14237280, 11058467, 4726612, -18144626,
+-35951024, -1149441, -7472170, 6557342, -2161979, -9463960, -1272384, -7576323, -9111236, -7128035,
+11346230, 6478422, -8066486, -4023848, 8581345, 5594195, 7636452, -4963909, 4850629, -4333085,
+-5131412, -992137, -2379412, -14529874, 3871913, 9148280, 3468186, -8384850, -2287070, 2176475,
+2070711, -7376607, -1997697, -10830297, 2316598, -4777614, -717260, -3310883, 1988570, 12977244,
+-1524177, -1539209, 5946382, 9738838, -5623186, 3251827, 3190087, -6720013, 3849901, 4657892,
+-9086003, 2323577, 5538361, -382252, -9569724, -4864051, -6260989, 9584756, 3048890, 9477919,
+-5185100, -8371428, 1988033, 6129992, -2373506, -5432597, 4190814, 8310762, 5915244, -6127308,
+-4673998, 354872, 11985106, -401579, 6453189, 4974646, 3437585, -18808198, 547071, -104690,
+11053635, 1919850, -3653407, 5572720, -2464774, 2062121, -9359807, -3576634, -5757941, -4159139,
+-11997454, -5443871, -6985228, 16482474, 10341208, 9744744, -11803107, -11242077, -4591857, 5083631,
+-151398, -939524, 751619, 2699924, -454730, 4155918, -6759205, -6985228, 233002, -2629057,
+-8457327, -9762998, -6757594, -6069863, -3517041, -4493073, -10857677, 4112968, 13917305, -3991098,
+6644852, 7714298, -6205154, 6498286, 5011690, 671626, 12642773, -1772748, 10590852, 2652679,
+1472637, -11074573, 4024384, 3513283, -2516314, 12968654, 11476153, 765578, -4287988, -8710731,
+4072166, -8691940, 2702071, -1921461, 8251169, -1963874, -13032541, -1250372, -5577552, -4497905,
+-10477573, 8070244, -17010218, 7952669, 4929012, 7571491, -8224326, -13152264, 3433290, 4622459,
+156766, -11009612, 10492068, 3678103, -6412386, -9634685, 4050154, -3974455, 17115982, 21066278,
+2502355, -2774012, -8201777, 12185359, -13814225, -4238596, 15855946, 4590783, -3722663, -8348880,
+-8703751, -4103305, -246424, -10324565, 1906429, 12066174, -2007360, 4855461, -9003862, -7215545,
+-3160022, -5875516, 16246251, -5643587, 6998649, 6718403, 6272263, 2317135, 2806224, -11119670,
+-12214350, -10670309, -3037616, 8922795, 18810346, -7272990, -14525579, -2703682, -6988986, 4112431,
+2455111, 11310796, -7133941, 401043, -9277129, -1117765, 14941654, -1431298, -9007083, 11647414,
+3057480, 2356863, 5228049, -11873437, 1264868, -3667365, 466004, 6132677, 12186970, 26848378,
+-11698417, -9079024, -2841658, 5695664, -15726560, 6323803, -4283693, 7962870, -7088844, -3160559,
+9669582, 7256884, 2691334, -4847408, -1829656, 13357348, 13035763, -2673080, 11374147, -3270618,
+16750909, -7810935, -4192425, 3067681, 17549236, 12916577, 4192962, -9386114, -726923, -19505594,
+-3023120, 3117073, 8930848, 10548977, 18494130, 4932770, -408559, -825171, -7195144, -12122545,
+-945430, -10497437, 7583839, 2493766, 11766063, 6689412, -4108673, 11843909, -14030584, 6440304,
+-3175592, 1152662, -2485176, 15090904, 8700530, 4454955, 2621004, -26896696, -4342749, 16311749,
+8100845, 1273458, -498216, 1139240, 12997108, 5884642, -20419348, -6219650, -7765301, 2499134,
+695248, -19614042, 1269163, -17985176, -11570642, 328565, 9396315, 19220516, -5109938, -7394323,
+727997, 7610145, 3827890, -11279121, -1103270, -9089761, -907849, -12480638, -1811939, -10694469,
+86973, 11620571, 452582, 25330106, -10976863, -4777078, -9414031, 10488847, 16216186, -13109314,
+-4973572, -20478404, 3386045, 85362, 5137855, 5368172, -12160663, -6633040, 8507256, -3145527,
+-3149822, -11032160, 22150220, -2782602, -24976846, 7106024, -7063074, -6976638, 8092792, 7085623,
+-7734163, -7493644, -3078418, -13806709, -9211631, 4967130, 2361695, 5173825, -5116380, -9888088,
+-12671764, -11541651, 8865886, -17079474, -683437, 4529043, -6381785, 813359, -1189706, -1975685,
+-14954539, -2135673, -6840273, 9256191, 9920838, -1543504, 16050293, -341450, -1722282, -4507568,
+-2800319, 26380762, 228170, -12431783, 31034896, -8164196, -2496450, 2490007, 13336410, 9181566,
+-19821274, -8433168, -18831820, 3890704, 1260036, -6172942, -20766166, 565862, -9620727, 4033511,
+4745939, 10239739, 663036, 7354058, 36323612, 7522635, 9142912, -6045704, -1916629, 15437186,
+-1296543, 857383, 4265977, 634045, -2259690, -8677445, 14638859, -15908559, 6485938, -23456428,
+-6976638, -11227581, -14190035, -12684112, -19864, -25636122, -8566312, 2939368, 14375792, 7750806,
+-24737402, 13458817, 9273908, 9636833, -15749108, 10934450, -7435126, -18609020, -6210523, -18545668,
+8639327, 20715164, 5293011, -2764885, -14096620, 10565083, -15020038, 21556440, -4286914, -3242700,
+-13610214, -15597174, 2037425, 16518444, 5641440, -12989055, -4903242, 1953136, -2217814, 5028870,
+16827682, 3206193, -10894185, 4935455, -3220689, 5073967, 18425410, -26065620, -11934104, -20965346,
+11795591, -4228932, 1928440, -6934225, 14961519, -14891188, -15158550, -6857452, -3673808, -10747619,
+-18757732, -9006010, 3265786, 12134356, -17315698, 11203959, -6685117, 1281511, 21854404, 16865262,
+-583042, 8846559, 3954591, -3610457, -3027415, -30141006, 3786551, -3148748, 2549063, 5748277,
+-2806224, 709743, 29879014, -27369142, 2044941, 32767380, 3727495, 8959302, -13507135, -3648575,
+16530255, 30058866, 809601, 26638998, -11223823, 24082418, -9368397, 17785996, 17242146, -4647155,
+34398392, -6051072, -2649995, -10687489, -17300666, -17147120, -9242233, -10390063, -26328686, -11760157,
+-7202124, 8771934, 6605123, 587874, -15923054, -13939316, -10917807, -39524436, -27138824, -20107964,
+-1370632, 25968982, -16791712, -2704219, -12782360, -19817516, -15398531, -20230906, -19982872, -8630200,
+-23687282, -26925150, -22385370, 6034429, -15266461, -8769249, -19176492, 18393198, 31501438, 2214593,
+-2951716, -11349451, 3146601, -2386928, -199716, -2940979, 10350334, 1591285, 21689048, -18830748,
+2229088, -16090558, 32646584, 7390565, -18166102, 14287746, -12845173, 11511586, -17460652, 10110353,
+2162516, -11316702, 10315975, -17628156, -5118528, 4898947, 18093086, 7099044, 31645320, -7551090,
+-19484120, 1265942, -5188321, 1704028, -12779138, -12222940, -20927766, 1914482, -22333830, -5452998,
+-3232500, -20936354, 13530221, 15698105, -9762461, -2460480, -29527900, 31987306, 40177808, 4300873,
+-17894444, 1845762, -30837328, 56963616, 22438520, -5389647, -16736414, -5515275, -17822504, 19149648,
+50599548, 398895, -32560684, -15875273, 18628346, 6001680, -6015102, 23110682, -4030827, 2269890,
+14228690, -2167885, -13193603, -5220533, 11801496, -15159624, -12562242, -6077916, 5211943, -52613,
+-1977296, -6825777, 11113228, 319438, 16193637, 11601244, -15685221, 7147363, 19768124, 9984725,
+-14482630, 4958003, 3657165, 12184822, 769873, 3700651, 3930432, 4522064, 27604292, 24890410,
+16340203, 34031172, -16824460, 17119202, -20368346, 12347494, 82678, 11203959, 15429670, 4003983,
+4178466, 17514876, 8738111, -5776731, 11799349, -801011, 15699179, -17467096, -9579388, 619549,
+37512244, -26829586, 2022930, -33449742, -4791036, 3285650, 11285027, -16055661, -6033892, -12608413,
+47953848, 4274030, 3259343, -10256919, -6957847, 8378945, 7215008, 4843650, 18499498, 8242042,
+-7914551, 10357851, 19832012, -259309, 21788370, -1539209, 10635413, -21544630, 40269076, -5321465,
+-4552666, 7435662, -30198452, -7075959, -14387604, 22214108, 12064563, 12968117, -13856101, 6060199,
+5520644, -17966386, 5690832, 17176112, 14261439, 5783711, -4125853, 3046206, -8494908, 31694712,
+5286568, 15030238, 11979738, 17771500, -26381300, -798327, -7328825, 6517613, -9159555, -10378788,
+23505282, -19835232, 17565880, -11894375, 18510236, -2078227, -16968342, 229781, -26032870, 19029390,
+17069274, 21254182, -55068460, 18762564, 11758547, -14694694, -10014790, -13191992, 30808338, -38322384,
+26703960, 62344672, 2749316, -23543936, -9909563, 22362820, 33370286, 13058848, -10438381, 5744519,
+-25005836, 1578401, -14023605, 22371410, 4465692, 4276177, -11431592, 8516383, -1241246, -12545599,
+7413114, -12838731, -3344706, -11277510, -19412178, -15320685, 19020800, 10956998, 13173738, 8946417,
+-24016384, -10337986, 8062191, -10487773, 18502182, 8495445, 3755412, 6866579, 29485488, -10624675,
+-24538758, 49424872, -19914152, -31779000, 35094716, -18286898, -6318434, 4502200, 19448686, -22111566,
+-3161096, -751082, -9785546, 65031172, 2416993, -13868449, -1227287, -2207613, 19982872, -36049272,
+-22079354, -17056388, -10042707, -4076998, -25283398, -3030100, 884226, 7489886, 46467252, 40261560,
+-13120588, 30362198, -29037738, -32491964, 21750788, 23868208, -4982699, 4229469, 8114267, 15350750,
+28202902, -2982318, 7524246, 28013388, -18195628, 2653753, -19704236, 21345988, 127238, 13173738,
+-13441100, -20140176, 18897856, -19905562, 6206765, -4293894, 17817134, 496069, 3918621, -10320806,
+3437048, -7129109, -26337276, -20304458, 8918500, -1068373, -602906, 4923643, 19771346, -8163122,
+-5859409, -15824807, 7305203, 6797860, -1816771, -2471217, -43969728, 2864743, 12738336, -14928233,
+11359652, -23568634, -4208531, 2616709, 15786152, 20437066, 2858301, -8134668, 6743099, 36089536,
+31128312, 31547608, -630286, -1459215, 7314866, 5036386, -12972412, 10501195, 39398272, -25732222,
+-7662759, -6226092, 1483374, 3263638, 6587943, -18364206, -29102162, -9529996, 332323, 64684356,
+34295312, 23694260, 175020, -2692408, -12106976, 30214558, 8730595, 20812338, -68183, -4630512,
+-3305514, -7863012, -41568840, 22873922, 22012782, -2222646, 35498440, 14404247, -22405770, -24223078,
+11136850, -10574209, -19860466, 297427, 3161096, 8325794, -4122095, 11190000, -1942936, 10541997,
+15909096, -14711337, -54099408, 28609850, -7205882, -18345952, 13728326, 18546742, 1857037, -38135552,
+-3678103, -2542621, -36967320, -24867324, 21330418, -6852084, -14264660, -14165339, 9905268, -38196756,
+-25071872, 49150532, -2952253, -30163556, 12764643, 26226680, 13079249, -42296300, 60400124, 22808424,
+-34896072, 19166292, 28165858, 3215857, -23074174, 24520506, 30156040, 16321949, -21036212, 20407000,
+41720776, 1124208, 42201812, 48963164, -24869472, -16949014, -16652125, 46262704, 32168232, -21422224,
+13737990, -13214541, -27692338, 25232396, 61399780, 8210904, -15160698, -14227079, 36017596, 35713728,
+54715200, 23503134, -24098524, -7458748, -20358144, 12938589, -10388452, 16383690, 9149891, -24473260,
+12089259, -24937116, -9695352, 1367410, -10494216, 2651606, 12715788, 11856257, -127775, -19546934,
+3819300, 17967996, -7180649, 3784403, -8376260, -22981296, 23764590, -13320841, 16204912, -23638964,
+-15588047, -2094870, -21381958, -4637491, 20081656, -18864034, 26737782, 3343095, 21658446, 10465762,
+-11992086, -28481002, 23911156, 17025250, 9487583, 8095477, 24672976, -17069810, -10406706, -9055402,
+7151658, 11498701, -3315178, -21783000, -1898912, -1206886, -24849070, -7367480, 2973728, 8750996,
+18139258, 79457, -17688822, 24943560, -5120675, -1372779, 26343718, 15507516, -22845468, 9901510,
+-14052596, 11326903, -7173669, 13047574, -18346490, 11290932, -40273908, -49613852, -25073482, 143142128,
+127679712, 75634376, 169090720, -36952824, -125483376, -45567456, -237379616, -126051384, -1654636, -62863288,
+85979880, 154910880, 22672596, 90475632, 179632720, 28707562, 63127428, 4611721, -183081568, -154903904,
+-134901168, -150751200, -89887224, 72630584, 31986768, 72675680, 193899520, 114930640, 30708480, 141813920,
+65990560, -89602144, 48207788, -65915936, -167860208, -22597434, -103662256, -193171520, -85969136, -21845814,
+-100008848, 109806744, 120618248, 54820964, 191907728, 214351088, 82310360, 104717208, 101109432, -115246320,
+-73480448, -146827744, -225312912, -209976656, -133017288, -136410848, -38623032, 83235928, 111571440, 146126592,
+210413664, 185558160, 109989280, 76401024, 13536126, -92983360, -128986456, -99586336, -123028264, -157394976,
+-51923472, -65560528, -23392002, 70367672, 34575560, 912681, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
-1262720,
-3423089, -3764539, -789200, 187905, 287763, 1505923, 6287832, 466004, -1490891, -2266669,
-5662378, -581968, -2845953, 1067836, -1983738, 1464047, 1147293, 7502234, 1944010, -4078608,
-1737851, -219043, 696858, -3625489, 2316061, 321586, -2681670, -1586990, -287226, 311385,
--328028, 2369748, -647466, -2257542, -559956, -1553168, -294742, -2757369, 1013075, 2907156,
--439160, -4005594, 2462090, -2452963, -1492501, 119722, 1152662, -2056753, -595927, 3727495,
--1959579, 1065689, -2463701, 1803349, -843424, 1256815, 1658394, 1033477, -967978, -541166,
-1920924, -3010772, -5550709, 1184874, -707596, -1753420, 499827, -304406, -346282, 375273,
--2020245, 2206540, -2871186, 2329483, 1005022, -533113, 6467684, -676994, 1977296, -1190243,
-8632347, -3391951, -813896, -312459, 1090385, -1526861, 3969624, -685047, -2633889, -472446,
-5422933, 402116, -2699924, 2534031, 1896228, 3559454, 1488743, -2694555, -1752884, 6042482,
-877247, -1526861, -1152125, -1209033, 1227287, 1306744, -733366, -7649874, -1875290, 401579,
-5348845, 1929514, -605590, 17717, -3003793, 4265440, -4253628, -5682779, 803159, 111669,
--1878511, -1257889, -1533840, 889595, 594853, 583042, -1930051, 5092221, 235686, 6804839,
--991601, -3089692, 1567663, -237834, 1065152, 1690607, 3507378, 2456721, -736587, -1671816,
--1422171, 4548371, -4261682, 398895, 325881, -511638, -3556233, 3675955, -1600949, 852014,
-3360812, -864362, 1090385, -2479807, 2146410, 1403381, -3081639, -1589138, -318364, 336081,
--245350, -389768, -1611687, 2766496, 427886, -1124745, -1688996, -38118, 5516886, -747861,
--2747705, 3634079, -1511292, -3357054, -457951, 2907156, 2033130, -1832340, 385473, -2299955,
-1224603, 1335198, -1240172, 2887292, -922344, -5186173, 822486, 2692945, 2364916, 350577,
--537945, -3772055, -1428614, -508954, -1815697, 3380139, 4599373, 2199023, -6692096, 2174327,
-7473243, 3134789, -572841, -92342, 3320547, -1794223, 935229, -3287798, -3155190, 2901251,
-3106335, 1542967, 635655, 508417, 392990, 1487669, -537, -414464, -1483911, 675384,
--2639258, -579821, -1387274, -4829691, -2791192, 750546, 1173063, 4379793, -234613, 1766305,
--2786897, -4351339, -2589329, 2262911, -1856500, -2049773, -2018098, -2884608, 2820720, 330176,
-2099165, -932545, 692027, -5857799, -3628711, -2695092, 3837553, 673773, 942745, 2005213,
--1941862, -1074279, -344671, 650688, -4283156, -868120, -2847563, -3250753, 314069, -2863133,
-2050310, 1810329, 7813620, -1903207, 4041564, -2584497, 1751810, -1760937, 541703, 6748468,
-1219234, 2950106, -3038153, 2095944, -2717104, -1301375, -295816, 4336843, -1957968, -1016297,
--3648038, -1923609, -4333622, -493921, 4387846, 1137630, 463856, 877784, 4032438, -3666828,
--6575595, 1745904, 2253784, -4167192, -193274, 847182, -972273, 2081985, 5345624, 1488206,
--1285269, 650151, -1915019, 2641942, -7033546, 1314797, -2575907, -4878546, -3830037, 2225330,
--1189706, -61740, 4828617, 1835025, -879931, 608275, 4076461, -1835025, 2960843, -1258962,
-754304, -4340065, -982474, 3220152, -1216550, 3958886, 4065724, 1563905, 2489471, 5735929,
--1498944, -7692287, 1589138, -3336653, 46171, -9461276, 60666, 3240016, -2132451, 3740380,
-302258, -3321084, 1036698, -7087233, -4840965, -1621887, -1994476, -5863704, 2820720, 3462281,
--30065, 3227131, 6979, 965294, -2182380, 2927020, 1896765, -1009854, 6374269, -1141388,
-5214627, 4781909, -536334, -678605, -262530, 1570347, 1947768, 763967, 2201708, 861141,
-534187, 7325067, 2464238, -3250753, -1825361, -162672, -2144263, 847719, -1692217, 6802155,
--12954158, -86436, 105764, 3233574, 5895380, 1896228, -2742337, -4902169, -606127, 6109054,
--1017907, -1297617, -4443681, -215822, -1745367, 4503273, 5657546, -9505299, 6321655, 3819837,
--3373160, -859530, -4731980, -62814, -1281511, 25770, 3445101, 6165426, -2126546, 1359894,
--1407676, -2223183, 2559801, 4234301, 3157338, -2790118, -4192962, 3026878, 2422899, -1676648,
--528281, 472983, -5442798, 2017561, 2044404, -2362232, -3512210, 1420560, -2573759, 5043902,
-2605435, -9015673, 4471061, -3888556, -9464497, -2907693, -307090, 1939715, -3586298, -221191,
-2673080, -4382478, -3757023, -4497905, -787053, 1126355, 10012106, 1496796, 2502355, -1962263,
--4073240, 6480569, -968515, -7322383, 1576790, -7272454, 2348810, 8139500, 2195802, 1762010,
-3578782, 5127117, -1119376, 12534325, -1804423, 8971650, -10553808, 3649112, 6210523, -2229625,
-896038, -2966749, -244276, 4846334, 8862128, -2478733, -4326106, -1269700, 4167729, 896038,
-9030706, 4263829, -893353, 1315334, 16643, -4162360, 924492, -904091, -1199907, 3951370,
-5255430, -8086350, 9498857, -7103339, -3755949, 1635846, -2752537, 4767414, 273804, -2669859,
-6791417, 9335648, -6741488, -1200443, -482647, 2926483, -6342056, -10742250, -4807142, -3248069,
-3424163, -7432441, -4051765, -818191, 8050380, 4930623, -5079873, 3917010, 2412161, -2890513,
--4042638, -652835, -2284923, -3121368, 831613, -2065879, 6387153, -4355097, -220117, 4925254,
--3043521, 5273683, 7448547, 1440962, 1667521, -732292, 4575751, 4103305, 5021891, -4818954,
--6864969, -3379066, 4342212, 436476, 18578418, -1197759, -646393, -4298189, -8663486, -12228309,
--2930242, 4346507, 6425271, -3882114, -8151311, 1271847, -92879, 8240969, -2836826, -3035468,
-9723806, -5135171, 494995, -7365332, 4737886, -1271310, -97711, -1432372, -11731703, -7013682,
-493921, 6709813, 4188667, 801548, -12129525, 8267275, -4958003, -4668630, -5277978, -6576669,
--1158031, 6840273, -5399311, -5554467, 3974455, -1595580, 2270427, 12362526, -5284421, 602369,
-582505, 5462662, -3557844, -2894808, -1636383, 8027294, -1671279, -3635153, -624918, 6380174,
-7874286, -7243999, -8557185, -2499671, -1027034, -2410014, 2260227, -5546951, -1500017, -4874251,
--8234526, 2033130, -5908802, 4977867, 6558952, -4875862, -5426691, -4986457, 2809982, -695248,
-9416716, 15791521, -8751533, 375810, -135291, -1336272, 1735704, 4408247, -12894566, 11578158,
--9006546, -4815732, 12145631, -2986613, -5410585, 3694209, 4670240, 15569, -376347, -9429064,
-6022081, -1575716, 2295660, -6347962, 7885560, -984621, -12319577, -13809394, 4857071, -2797098,
--6619082, 3087545, -207232, 20566450, 3898220, -4204773, -5823439, -12741020, -3949759, 1962800,
--2555506, 9168681, -1568200, -14874009, -892816, 9330280, -3788161, 692027, 9101036, 5100811,
--4240744, -1645509, 7563975, 8404714, -3505767, 860067, 2094870, -5543192, 2865817, -3327526,
-364535, -152471, -993211, -4494147, -7454453, -12199318, -6097243, 4604205, -10558640, 3904662,
--11411191, 286152, 4379256, -2033130, -8496519, -4236449, -1599875, 7597797, 6329171, -4777078,
--4613869, 8115341, 3619584, -4946192, -5000953, -4186519, -378494, 7846905, -1188095, 577136,
--276489, -244813, 10444824, 4948876, 7057705, -623844, -323733, 3406983, -5133560, -9078487,
-7489349, 11632382, -7772280, 9986873, -2780991, -1144072, -4347581, 5097590, 507880, -5767604,
-3637301, 9463424, 7671886, 3366718, -6990596, -3023657, -14347875, 2349347, 7765838, -4725538,
--975494, -5791764, 1698123, -3442416, 5834176, -3582540, 2071785, 6772090, 4028143, 12761422,
-6821482, 4406100, 8294119, -6641093, 12352326, 4012036, 7562901, -2097555, -8261907, -12479564,
--2359011, -1500554, -3338800, -2061584, 4718559, 6181532, -12972412, 9562745, 3051038, -1786706,
-13657996, 10870025, -17858474, -11682848, 10867878, 19191524, -2030983, 2910914, -1909650, -2327336,
--2209761, -723165, 4510790, 2929705, 11196980, 2884071, 10681047, 3149285, 4427038, -1480690,
--6635725, 2684355, 446140, -5096516, 8010114, 852551, 2926483, 1945620, -2233920, -7877507,
-510027, -8942659, -3537443, -10352482, -7447474, -4234838, 8053601, 1151588, 3636227, 10492068,
--5235565, -987843, 551903, 3690451, 416612, 139586, -3742527, 7710003, 16456167, 8177081,
--14612016, -9938017, -11091753, 11791296, -2784750, -11184095, 5410585, -6321118, -1793686, -1921461,
--1973538, -940061, -932545, 10412611, 15848429, 6561100, 13274670, 9694278, 2946885, 2319819,
-1363115, -3595961, -7472170, 2327336, 16882442, 3628711, 5738077, -5163625, 4117800, -8108362,
--15259482, 718333, 7706245, 2772402, 6142877, 9418863, 9666898, 988379, -11097659, -8807367,
--14604499, -21832392, -610422, -2258616, 9629854, 7740068, -8540006, -4218732, 5598490, 12079059,
--14713484, -8948027, -2929705, -7522635, -5543729, -2520609, 4422206, 9503152, 348429, -5017596,
--6774774, 9608379, -7295539, -2589865, -188442, 13340705, -839666, 1545115, -20076824, -1029182,
-5068062, 10865730, 13660143, 3404835, -12761422, 6638409, 550830, 6611566, 8836358, 1937030,
-4685810, 10257456, 17534204, -10815265, -3881040, -486942, 5920613, 18632106, 8463233, 6561637,
-11156178, -2983392, -4799089, -10379862, -12259447, -7649337, 1256815, 9167608, 22024056, 9402220,
-4622996, 13077102, -15334644, -10162429, -2064806, 22385906, 8461622, 1071058, 11469710, -6839736,
-17412872, -3620658, -15941845, -2454574, -15829102, 13191992, 7220377, 5552856, 4612258, 918586,
--5253282, 6748468, 8817031, 5240934, -3416647, 8824547, 10643466, 10451266, -1435056, -7726646,
-14536317, 4223027, -1091995, -1697586, 1597191, -8818642, 9405978, -985695, -2797098, -11410117,
--6801618, -6691559, 17083232, 7036767, 85899, 3204046, 8806294, 13734769, 6448894, -15512348,
-14978162, -738734, 8657043, 4776541, 13183939, -1919314, -17293686, 6574521, -784368, 8352101,
--3053185, -5820755, 6456410, -1451699, 4395362, 23131084, -2610803, -8583492, 77309, 4383014,
--10564009, 19163608, -7865159, -8808978, 15257334, -6677064, 5049808, -4895726, 3313031, -13067975,
--4492536, 9088151, 170188, -12769475, 2080912, -3628174, 8717710, 3820374, 3645354, -22235582,
-5513128, 1735704, 7435126, 16469052, -918049, -632434, -476741, -6374269, 13640816, -13365938,
-2981244, 10537165, 4523138, 9802189, -5728950, -5788542, -10055055, -13884019, 4117263, 3576097,
-6907381, 17359184, -8023536, 15068893, 5530308, -12035035, -9596031, 1073205, -606127, 1995012,
--2220498, 8120173, 9702331, 12264279, 2443837, -26492968, 4636954, 9586904, 5934034, -16983912,
-8731132, -8050916, 7199439, 2523830, 2588255, -1098438, 4642860, -805843, 20976084, 12794171,
--13343927, 2792266, -32600950, 6483790, -11776263, -7487739, 5177583, 7514046, -18291728, -28106802,
-15104863, 12817256, -31768800, 11309723, -11186779, -4410932, -5063230, 9949292, -7394323, -887448,
-2560874, 27043262, -2879776, 19245212, 5910949, 14236206, 1888175, 3338263, 5865852, 25992068,
-27987618, -15030775, -11874511, 14408005, -18712636, -1058710, 6205154, -20647518, 12034498, 466541,
--665720, -4679904, -5066451, 1214402, 3002719, 2501819, -11122892, -1089311, -2037425, -17013976,
-8959839, 9767829, -16755741, -14412300, -5552856, 8220568, 10153303, 7517267, -41339, -4952098,
-9221295, 26717918, 16090558, -6996502, -2729452, -5342403, 19937238, -16750909, 7974681, 2399813,
--22712324, -11512660, -74625, 1449552, -19064822, 11962021, 10039486, 2059437, 4882841, 7497939,
--17921288, -4540318, -14645838, -1708323, 10949482, 13849122, 11331197, -13292924, -4338454, -4004520,
-1676648, -15228880, -2709051, 13099650, 19842212, -1208496, 1121523, -12216498, 862215, -359167,
--9044127, -14622753, -3019899, -6670084, -11273215, -7925826, 12377559, -10450729, 8930848, -3019362,
--2709051, 17763984, -12336220, -6604049, 2521146, 7275138, 869731, -23072028, -14454712, 2841121,
--3908420, 3951370, -3413962, -7123204, 14667850, 3348464, -1435593, -5920613, -33597920, 20248624,
--6202470, -205622, -2997350, 1431835, 9440338, -5423470, -9268539, -15470472, -1612223, 7021735,
--9772661, -12248710, 4967667, 19745576, -3461207, 18357764, 13325673, -13289703, 24472724, 16315507,
--16322486, -25012278, -7304129, -10901701, 1254667, -7949985, -2020245, 11955578, -21002926, 10176925,
--3432216, -11905649, -13133473, -13329968, -15835544, 3015604, 9737765, -9113921, 13774497, -21311628,
-38707856, 54278188, -5173288, 6528887, 3558381, 13065827, 26426396, -25273736, 362388, 4242354,
-556735, -9200894, 1414655, -11346767, 13285944, 32242320, -6786585, 541703, 1898376, 9645960,
-950262, 3626563, 12505871, -25142202, -1808181, 24282672, 25209310, -29616484, -6183143, 3999688,
-4198868, 8505646, 22205518, 5967320, 44731548, 7154342, 13859859, 6280853, -6929930, -9585293,
--436476, -31681826, -44973676, -15628849, -14504641, -47359532, 7500087, -1534914, -26063472, -13248363,
--43748000, -5284958, -5816997, 29441464, -29074244, 17760764, -19726248, -2223183, -12793097, -11040750,
-12264279, 26242250, -20153598, -8507793, -1143535, -6912750, -1263794, 10537702, 22804666, 22191560,
--14796162, 45493904, 33444910, 3285113, -13824426, -37855840, -19684372, 35824860, 58922120, -13659070,
--3309809, 10782515, 26206816, 9184251, -15693274, 9895068, -13458817, 3660386, 8061117, -2934000,
--18067316, 5572720, 18533858, -4478577, -27363236, 21359946, -6561100, 17466558, -6757058, -4065724,
--7046431, -10735271, -832687, 19349364, 10299332, 3344706, 15076946, -7199976, -6584185, 6060736,
--8737574, 10871099, 5779952, 16543677, 27627914, 24765318, -18265422, -32935956, -12609487, -1980517,
-25289304, -9819369, 4000762, 10496900, -10883984, -15174656, -25029996, -24981140, 19004694, 21045340,
--17543868, -60219200, 4173098, -4249334, -9125195, 4651987, -6949257, -24206972, -12315819, -5728950,
--17939542, -7262790, 24337432, 9617506, 13275744, -5894843, -10184441, -5539971, 11969000, 2328946,
--570157, 12302934, 28611462, -13484050, -984084, -11278584, 6400038, -15663746, -23666344, -6087043,
--3323231, 3782256, -7577933, 18070002, -10437844, -39084740, -20016696, 12514998, -17303886, 20540682,
-19787452, -9176198, -2124398, 1985886, -10915123, -723702, 7013682, -2459406, 4181151, 26169772,
-23279796, -6808060, -34921844, -27925878, 2840584, 18094160, -13523778, -7023346, -16021839, -22491670,
-2866354, -6985228, -24451248, -28506772, -39572220, 15368467, 6536940, -44560, 24348170, 30382598,
--199179, -24398098, -16703128, -19940460, -9569187, -7724499, 8338142, 11099269, -9533754, -18299782,
--19652160, 10089952, 11336029, -21765284, -18037788, -9005473, -1570884, -13157095, 9587978, 49737868,
-32963338, 58313844, 22773528, -32480154, 40607304, -2398202, -14122389, 1392106, -10690174, -37579892,
-35343284, -20056424, 2274185, 10436234, -4496294, -26190710, 26489748, 25367150, -14608794, -20021526,
-2711735, 35108136, -18425410, 10028212, 22452478, 6907918, -8483634, -16734803, -11031087, 7804493,
--2679523, 5949604, -9831717, 6561637, -21763136, 31856846, -3067681, 7156490, -1480153, -40148280,
-12546136, -11125576, 20753282, 12446278, 22188338, -8671002, -38620884, 27752468, 12628278, -13221520,
--23960012, 19852950, 10849624, 21099026, 21602074, -18778670, 8833137, 22227530, -32498406, 29883308,
-15134928, -1149978, 9966472, -17237314, 38122128, -4518843, 25341918, 10794327, 44382044, -3453691,
--6859063, 5689758, 18742164, 11240466, 13535589, 43462920, 4007205, 9935870, 27554900, -18155900,
-19930258, 644782, -26437134, 8912594, -5789079, 30200062, -17816598, -25981330, -64806760, 3463891,
--7856032, 1933272, 50342924, 41280540, 59604484, 31345746, -15716896, -12196097, -24538758, -32937030,
-11689290, 2812667, 8757975, 10381473, -9439264, 14893336, 25515864, 4598836, -6641093, -8661875,
--17808546, -12015171, -10689100, 4894115, 8264591, -25875030, -15072651, -3627637, 17520782, -7886097,
-11370926, 13783087, -36439040, -36206036, 7100655, 10395968, 8308078, -27354646, -12263205, -24581708,
--11563663, -11305428, 23937464, -31144418, -42900816, -16353625, 8928163, 7244536, -32971390, -26891864,
--20646444, -16063178, 18443126, 25268904, 1596654, -8767639, -10072772, -6038724, -5115843, -11634530,
--36467492, 12011950, 28388660, 25102474, 8482560, 34350612, 47327856, -4216584, -5336497, 35645008,
--8007967, -21698174, -48695804, -16089484, 5800354, 42026792, 15570867, 2866891, 16187732, -18237504,
-1797444, -9585293, -12535399, 7332583, 3798362, -11565273, -17614198, -11069204, -16276315, -14365592,
-6337224, -11198590, -4417374, 7482370, -4464082, 1299765, -5030481, 20683488, -15691126, 16869020,
-7227893, 1454920, -15078556, -7410966, 13788993, 4683662, 746251, 9717900, -731755, -4746476,
--5435818, -6049999, -3218541, 1399086, 1154809, 1625108, -17487496, 9343164, -6489696, -7905961,
-7992934, 3942243, 3979287, -4114042, 14796162, 10764262, -14731738, 14118094, -235149, 9364639,
-21806622, -4811974, 12844637, 9565429, -7606387, -7736310, -10692858, 446140, 4973036, -21870510,
-11713450, 2393908, 19810000, -7322383, -33550674, 22582938, 6023692, -210990, 6268505, -17301738,
-3111704, -5026723, 12183748, -21638582, -62672700, -92422864, 18921478, 72844792, 2386928, 199162464,
-182884544, 126001456, 216108800, 166652240, 21722334, 3207267, -23616414, -159597232, -163501344, -123996240,
--213903328, -198955776, -58145268, -67002028, -68470904, 14900852, 38499012, -34309808, -12937515, 62480500,
-38591892, -3599720, 45242648, 31309774, 161061, 37966976, 91492464, 59929828, 18900540, 94227824,
-68444600, 3332358, 79732848, 109726216, 23727010, 9508521, 111003968, 28484224, -48183092, 54516020,
-84262960, -48387100, 16464757, 119560080, 7308961, 16437914, 144024752, 112632296, 4876936, 88148832,
-117664384, -47656420, -30982820, 29654064, -106659072, -173859200, -119858576, -191541584, -282103104, -259459504,
--289848000, -367075296, -387062464, -342896224, -361456384, -340003584, -254369968, -200921792, -96309808, 2296197,
-124596464, 138281840, 31000000, },
+3423089, -3764539, -789200, 187905, 287763, 1505923, 6287832, 466004, -1490891, -2266669,
+5662378, -581968, -2845953, 1067836, -1983738, 1464047, 1147293, 7502234, 1944010, -4078608,
+1737851, -219043, 696858, -3625489, 2316061, 321586, -2681670, -1586990, -287226, 311385,
+-328028, 2369748, -647466, -2257542, -559956, -1553168, -294742, -2757369, 1013075, 2907156,
+-439160, -4005594, 2462090, -2452963, -1492501, 119722, 1152662, -2056753, -595927, 3727495,
+-1959579, 1065689, -2463701, 1803349, -843424, 1256815, 1658394, 1033477, -967978, -541166,
+1920924, -3010772, -5550709, 1184874, -707596, -1753420, 499827, -304406, -346282, 375273,
+-2020245, 2206540, -2871186, 2329483, 1005022, -533113, 6467684, -676994, 1977296, -1190243,
+8632347, -3391951, -813896, -312459, 1090385, -1526861, 3969624, -685047, -2633889, -472446,
+5422933, 402116, -2699924, 2534031, 1896228, 3559454, 1488743, -2694555, -1752884, 6042482,
+877247, -1526861, -1152125, -1209033, 1227287, 1306744, -733366, -7649874, -1875290, 401579,
+5348845, 1929514, -605590, 17717, -3003793, 4265440, -4253628, -5682779, 803159, 111669,
+-1878511, -1257889, -1533840, 889595, 594853, 583042, -1930051, 5092221, 235686, 6804839,
+-991601, -3089692, 1567663, -237834, 1065152, 1690607, 3507378, 2456721, -736587, -1671816,
+-1422171, 4548371, -4261682, 398895, 325881, -511638, -3556233, 3675955, -1600949, 852014,
+3360812, -864362, 1090385, -2479807, 2146410, 1403381, -3081639, -1589138, -318364, 336081,
+-245350, -389768, -1611687, 2766496, 427886, -1124745, -1688996, -38118, 5516886, -747861,
+-2747705, 3634079, -1511292, -3357054, -457951, 2907156, 2033130, -1832340, 385473, -2299955,
+1224603, 1335198, -1240172, 2887292, -922344, -5186173, 822486, 2692945, 2364916, 350577,
+-537945, -3772055, -1428614, -508954, -1815697, 3380139, 4599373, 2199023, -6692096, 2174327,
+7473243, 3134789, -572841, -92342, 3320547, -1794223, 935229, -3287798, -3155190, 2901251,
+3106335, 1542967, 635655, 508417, 392990, 1487669, -537, -414464, -1483911, 675384,
+-2639258, -579821, -1387274, -4829691, -2791192, 750546, 1173063, 4379793, -234613, 1766305,
+-2786897, -4351339, -2589329, 2262911, -1856500, -2049773, -2018098, -2884608, 2820720, 330176,
+2099165, -932545, 692027, -5857799, -3628711, -2695092, 3837553, 673773, 942745, 2005213,
+-1941862, -1074279, -344671, 650688, -4283156, -868120, -2847563, -3250753, 314069, -2863133,
+2050310, 1810329, 7813620, -1903207, 4041564, -2584497, 1751810, -1760937, 541703, 6748468,
+1219234, 2950106, -3038153, 2095944, -2717104, -1301375, -295816, 4336843, -1957968, -1016297,
+-3648038, -1923609, -4333622, -493921, 4387846, 1137630, 463856, 877784, 4032438, -3666828,
+-6575595, 1745904, 2253784, -4167192, -193274, 847182, -972273, 2081985, 5345624, 1488206,
+-1285269, 650151, -1915019, 2641942, -7033546, 1314797, -2575907, -4878546, -3830037, 2225330,
+-1189706, -61740, 4828617, 1835025, -879931, 608275, 4076461, -1835025, 2960843, -1258962,
+754304, -4340065, -982474, 3220152, -1216550, 3958886, 4065724, 1563905, 2489471, 5735929,
+-1498944, -7692287, 1589138, -3336653, 46171, -9461276, 60666, 3240016, -2132451, 3740380,
+302258, -3321084, 1036698, -7087233, -4840965, -1621887, -1994476, -5863704, 2820720, 3462281,
+-30065, 3227131, 6979, 965294, -2182380, 2927020, 1896765, -1009854, 6374269, -1141388,
+5214627, 4781909, -536334, -678605, -262530, 1570347, 1947768, 763967, 2201708, 861141,
+534187, 7325067, 2464238, -3250753, -1825361, -162672, -2144263, 847719, -1692217, 6802155,
+-12954158, -86436, 105764, 3233574, 5895380, 1896228, -2742337, -4902169, -606127, 6109054,
+-1017907, -1297617, -4443681, -215822, -1745367, 4503273, 5657546, -9505299, 6321655, 3819837,
+-3373160, -859530, -4731980, -62814, -1281511, 25770, 3445101, 6165426, -2126546, 1359894,
+-1407676, -2223183, 2559801, 4234301, 3157338, -2790118, -4192962, 3026878, 2422899, -1676648,
+-528281, 472983, -5442798, 2017561, 2044404, -2362232, -3512210, 1420560, -2573759, 5043902,
+2605435, -9015673, 4471061, -3888556, -9464497, -2907693, -307090, 1939715, -3586298, -221191,
+2673080, -4382478, -3757023, -4497905, -787053, 1126355, 10012106, 1496796, 2502355, -1962263,
+-4073240, 6480569, -968515, -7322383, 1576790, -7272454, 2348810, 8139500, 2195802, 1762010,
+3578782, 5127117, -1119376, 12534325, -1804423, 8971650, -10553808, 3649112, 6210523, -2229625,
+896038, -2966749, -244276, 4846334, 8862128, -2478733, -4326106, -1269700, 4167729, 896038,
+9030706, 4263829, -893353, 1315334, 16643, -4162360, 924492, -904091, -1199907, 3951370,
+5255430, -8086350, 9498857, -7103339, -3755949, 1635846, -2752537, 4767414, 273804, -2669859,
+6791417, 9335648, -6741488, -1200443, -482647, 2926483, -6342056, -10742250, -4807142, -3248069,
+3424163, -7432441, -4051765, -818191, 8050380, 4930623, -5079873, 3917010, 2412161, -2890513,
+-4042638, -652835, -2284923, -3121368, 831613, -2065879, 6387153, -4355097, -220117, 4925254,
+-3043521, 5273683, 7448547, 1440962, 1667521, -732292, 4575751, 4103305, 5021891, -4818954,
+-6864969, -3379066, 4342212, 436476, 18578418, -1197759, -646393, -4298189, -8663486, -12228309,
+-2930242, 4346507, 6425271, -3882114, -8151311, 1271847, -92879, 8240969, -2836826, -3035468,
+9723806, -5135171, 494995, -7365332, 4737886, -1271310, -97711, -1432372, -11731703, -7013682,
+493921, 6709813, 4188667, 801548, -12129525, 8267275, -4958003, -4668630, -5277978, -6576669,
+-1158031, 6840273, -5399311, -5554467, 3974455, -1595580, 2270427, 12362526, -5284421, 602369,
+582505, 5462662, -3557844, -2894808, -1636383, 8027294, -1671279, -3635153, -624918, 6380174,
+7874286, -7243999, -8557185, -2499671, -1027034, -2410014, 2260227, -5546951, -1500017, -4874251,
+-8234526, 2033130, -5908802, 4977867, 6558952, -4875862, -5426691, -4986457, 2809982, -695248,
+9416716, 15791521, -8751533, 375810, -135291, -1336272, 1735704, 4408247, -12894566, 11578158,
+-9006546, -4815732, 12145631, -2986613, -5410585, 3694209, 4670240, 15569, -376347, -9429064,
+6022081, -1575716, 2295660, -6347962, 7885560, -984621, -12319577, -13809394, 4857071, -2797098,
+-6619082, 3087545, -207232, 20566450, 3898220, -4204773, -5823439, -12741020, -3949759, 1962800,
+-2555506, 9168681, -1568200, -14874009, -892816, 9330280, -3788161, 692027, 9101036, 5100811,
+-4240744, -1645509, 7563975, 8404714, -3505767, 860067, 2094870, -5543192, 2865817, -3327526,
+364535, -152471, -993211, -4494147, -7454453, -12199318, -6097243, 4604205, -10558640, 3904662,
+-11411191, 286152, 4379256, -2033130, -8496519, -4236449, -1599875, 7597797, 6329171, -4777078,
+-4613869, 8115341, 3619584, -4946192, -5000953, -4186519, -378494, 7846905, -1188095, 577136,
+-276489, -244813, 10444824, 4948876, 7057705, -623844, -323733, 3406983, -5133560, -9078487,
+7489349, 11632382, -7772280, 9986873, -2780991, -1144072, -4347581, 5097590, 507880, -5767604,
+3637301, 9463424, 7671886, 3366718, -6990596, -3023657, -14347875, 2349347, 7765838, -4725538,
+-975494, -5791764, 1698123, -3442416, 5834176, -3582540, 2071785, 6772090, 4028143, 12761422,
+6821482, 4406100, 8294119, -6641093, 12352326, 4012036, 7562901, -2097555, -8261907, -12479564,
+-2359011, -1500554, -3338800, -2061584, 4718559, 6181532, -12972412, 9562745, 3051038, -1786706,
+13657996, 10870025, -17858474, -11682848, 10867878, 19191524, -2030983, 2910914, -1909650, -2327336,
+-2209761, -723165, 4510790, 2929705, 11196980, 2884071, 10681047, 3149285, 4427038, -1480690,
+-6635725, 2684355, 446140, -5096516, 8010114, 852551, 2926483, 1945620, -2233920, -7877507,
+510027, -8942659, -3537443, -10352482, -7447474, -4234838, 8053601, 1151588, 3636227, 10492068,
+-5235565, -987843, 551903, 3690451, 416612, 139586, -3742527, 7710003, 16456167, 8177081,
+-14612016, -9938017, -11091753, 11791296, -2784750, -11184095, 5410585, -6321118, -1793686, -1921461,
+-1973538, -940061, -932545, 10412611, 15848429, 6561100, 13274670, 9694278, 2946885, 2319819,
+1363115, -3595961, -7472170, 2327336, 16882442, 3628711, 5738077, -5163625, 4117800, -8108362,
+-15259482, 718333, 7706245, 2772402, 6142877, 9418863, 9666898, 988379, -11097659, -8807367,
+-14604499, -21832392, -610422, -2258616, 9629854, 7740068, -8540006, -4218732, 5598490, 12079059,
+-14713484, -8948027, -2929705, -7522635, -5543729, -2520609, 4422206, 9503152, 348429, -5017596,
+-6774774, 9608379, -7295539, -2589865, -188442, 13340705, -839666, 1545115, -20076824, -1029182,
+5068062, 10865730, 13660143, 3404835, -12761422, 6638409, 550830, 6611566, 8836358, 1937030,
+4685810, 10257456, 17534204, -10815265, -3881040, -486942, 5920613, 18632106, 8463233, 6561637,
+11156178, -2983392, -4799089, -10379862, -12259447, -7649337, 1256815, 9167608, 22024056, 9402220,
+4622996, 13077102, -15334644, -10162429, -2064806, 22385906, 8461622, 1071058, 11469710, -6839736,
+17412872, -3620658, -15941845, -2454574, -15829102, 13191992, 7220377, 5552856, 4612258, 918586,
+-5253282, 6748468, 8817031, 5240934, -3416647, 8824547, 10643466, 10451266, -1435056, -7726646,
+14536317, 4223027, -1091995, -1697586, 1597191, -8818642, 9405978, -985695, -2797098, -11410117,
+-6801618, -6691559, 17083232, 7036767, 85899, 3204046, 8806294, 13734769, 6448894, -15512348,
+14978162, -738734, 8657043, 4776541, 13183939, -1919314, -17293686, 6574521, -784368, 8352101,
+-3053185, -5820755, 6456410, -1451699, 4395362, 23131084, -2610803, -8583492, 77309, 4383014,
+-10564009, 19163608, -7865159, -8808978, 15257334, -6677064, 5049808, -4895726, 3313031, -13067975,
+-4492536, 9088151, 170188, -12769475, 2080912, -3628174, 8717710, 3820374, 3645354, -22235582,
+5513128, 1735704, 7435126, 16469052, -918049, -632434, -476741, -6374269, 13640816, -13365938,
+2981244, 10537165, 4523138, 9802189, -5728950, -5788542, -10055055, -13884019, 4117263, 3576097,
+6907381, 17359184, -8023536, 15068893, 5530308, -12035035, -9596031, 1073205, -606127, 1995012,
+-2220498, 8120173, 9702331, 12264279, 2443837, -26492968, 4636954, 9586904, 5934034, -16983912,
+8731132, -8050916, 7199439, 2523830, 2588255, -1098438, 4642860, -805843, 20976084, 12794171,
+-13343927, 2792266, -32600950, 6483790, -11776263, -7487739, 5177583, 7514046, -18291728, -28106802,
+15104863, 12817256, -31768800, 11309723, -11186779, -4410932, -5063230, 9949292, -7394323, -887448,
+2560874, 27043262, -2879776, 19245212, 5910949, 14236206, 1888175, 3338263, 5865852, 25992068,
+27987618, -15030775, -11874511, 14408005, -18712636, -1058710, 6205154, -20647518, 12034498, 466541,
+-665720, -4679904, -5066451, 1214402, 3002719, 2501819, -11122892, -1089311, -2037425, -17013976,
+8959839, 9767829, -16755741, -14412300, -5552856, 8220568, 10153303, 7517267, -41339, -4952098,
+9221295, 26717918, 16090558, -6996502, -2729452, -5342403, 19937238, -16750909, 7974681, 2399813,
+-22712324, -11512660, -74625, 1449552, -19064822, 11962021, 10039486, 2059437, 4882841, 7497939,
+-17921288, -4540318, -14645838, -1708323, 10949482, 13849122, 11331197, -13292924, -4338454, -4004520,
+1676648, -15228880, -2709051, 13099650, 19842212, -1208496, 1121523, -12216498, 862215, -359167,
+-9044127, -14622753, -3019899, -6670084, -11273215, -7925826, 12377559, -10450729, 8930848, -3019362,
+-2709051, 17763984, -12336220, -6604049, 2521146, 7275138, 869731, -23072028, -14454712, 2841121,
+-3908420, 3951370, -3413962, -7123204, 14667850, 3348464, -1435593, -5920613, -33597920, 20248624,
+-6202470, -205622, -2997350, 1431835, 9440338, -5423470, -9268539, -15470472, -1612223, 7021735,
+-9772661, -12248710, 4967667, 19745576, -3461207, 18357764, 13325673, -13289703, 24472724, 16315507,
+-16322486, -25012278, -7304129, -10901701, 1254667, -7949985, -2020245, 11955578, -21002926, 10176925,
+-3432216, -11905649, -13133473, -13329968, -15835544, 3015604, 9737765, -9113921, 13774497, -21311628,
+38707856, 54278188, -5173288, 6528887, 3558381, 13065827, 26426396, -25273736, 362388, 4242354,
+556735, -9200894, 1414655, -11346767, 13285944, 32242320, -6786585, 541703, 1898376, 9645960,
+950262, 3626563, 12505871, -25142202, -1808181, 24282672, 25209310, -29616484, -6183143, 3999688,
+4198868, 8505646, 22205518, 5967320, 44731548, 7154342, 13859859, 6280853, -6929930, -9585293,
+-436476, -31681826, -44973676, -15628849, -14504641, -47359532, 7500087, -1534914, -26063472, -13248363,
+-43748000, -5284958, -5816997, 29441464, -29074244, 17760764, -19726248, -2223183, -12793097, -11040750,
+12264279, 26242250, -20153598, -8507793, -1143535, -6912750, -1263794, 10537702, 22804666, 22191560,
+-14796162, 45493904, 33444910, 3285113, -13824426, -37855840, -19684372, 35824860, 58922120, -13659070,
+-3309809, 10782515, 26206816, 9184251, -15693274, 9895068, -13458817, 3660386, 8061117, -2934000,
+-18067316, 5572720, 18533858, -4478577, -27363236, 21359946, -6561100, 17466558, -6757058, -4065724,
+-7046431, -10735271, -832687, 19349364, 10299332, 3344706, 15076946, -7199976, -6584185, 6060736,
+-8737574, 10871099, 5779952, 16543677, 27627914, 24765318, -18265422, -32935956, -12609487, -1980517,
+25289304, -9819369, 4000762, 10496900, -10883984, -15174656, -25029996, -24981140, 19004694, 21045340,
+-17543868, -60219200, 4173098, -4249334, -9125195, 4651987, -6949257, -24206972, -12315819, -5728950,
+-17939542, -7262790, 24337432, 9617506, 13275744, -5894843, -10184441, -5539971, 11969000, 2328946,
+-570157, 12302934, 28611462, -13484050, -984084, -11278584, 6400038, -15663746, -23666344, -6087043,
+-3323231, 3782256, -7577933, 18070002, -10437844, -39084740, -20016696, 12514998, -17303886, 20540682,
+19787452, -9176198, -2124398, 1985886, -10915123, -723702, 7013682, -2459406, 4181151, 26169772,
+23279796, -6808060, -34921844, -27925878, 2840584, 18094160, -13523778, -7023346, -16021839, -22491670,
+2866354, -6985228, -24451248, -28506772, -39572220, 15368467, 6536940, -44560, 24348170, 30382598,
+-199179, -24398098, -16703128, -19940460, -9569187, -7724499, 8338142, 11099269, -9533754, -18299782,
+-19652160, 10089952, 11336029, -21765284, -18037788, -9005473, -1570884, -13157095, 9587978, 49737868,
+32963338, 58313844, 22773528, -32480154, 40607304, -2398202, -14122389, 1392106, -10690174, -37579892,
+35343284, -20056424, 2274185, 10436234, -4496294, -26190710, 26489748, 25367150, -14608794, -20021526,
+2711735, 35108136, -18425410, 10028212, 22452478, 6907918, -8483634, -16734803, -11031087, 7804493,
+-2679523, 5949604, -9831717, 6561637, -21763136, 31856846, -3067681, 7156490, -1480153, -40148280,
+12546136, -11125576, 20753282, 12446278, 22188338, -8671002, -38620884, 27752468, 12628278, -13221520,
+-23960012, 19852950, 10849624, 21099026, 21602074, -18778670, 8833137, 22227530, -32498406, 29883308,
+15134928, -1149978, 9966472, -17237314, 38122128, -4518843, 25341918, 10794327, 44382044, -3453691,
+-6859063, 5689758, 18742164, 11240466, 13535589, 43462920, 4007205, 9935870, 27554900, -18155900,
+19930258, 644782, -26437134, 8912594, -5789079, 30200062, -17816598, -25981330, -64806760, 3463891,
+-7856032, 1933272, 50342924, 41280540, 59604484, 31345746, -15716896, -12196097, -24538758, -32937030,
+11689290, 2812667, 8757975, 10381473, -9439264, 14893336, 25515864, 4598836, -6641093, -8661875,
+-17808546, -12015171, -10689100, 4894115, 8264591, -25875030, -15072651, -3627637, 17520782, -7886097,
+11370926, 13783087, -36439040, -36206036, 7100655, 10395968, 8308078, -27354646, -12263205, -24581708,
+-11563663, -11305428, 23937464, -31144418, -42900816, -16353625, 8928163, 7244536, -32971390, -26891864,
+-20646444, -16063178, 18443126, 25268904, 1596654, -8767639, -10072772, -6038724, -5115843, -11634530,
+-36467492, 12011950, 28388660, 25102474, 8482560, 34350612, 47327856, -4216584, -5336497, 35645008,
+-8007967, -21698174, -48695804, -16089484, 5800354, 42026792, 15570867, 2866891, 16187732, -18237504,
+1797444, -9585293, -12535399, 7332583, 3798362, -11565273, -17614198, -11069204, -16276315, -14365592,
+6337224, -11198590, -4417374, 7482370, -4464082, 1299765, -5030481, 20683488, -15691126, 16869020,
+7227893, 1454920, -15078556, -7410966, 13788993, 4683662, 746251, 9717900, -731755, -4746476,
+-5435818, -6049999, -3218541, 1399086, 1154809, 1625108, -17487496, 9343164, -6489696, -7905961,
+7992934, 3942243, 3979287, -4114042, 14796162, 10764262, -14731738, 14118094, -235149, 9364639,
+21806622, -4811974, 12844637, 9565429, -7606387, -7736310, -10692858, 446140, 4973036, -21870510,
+11713450, 2393908, 19810000, -7322383, -33550674, 22582938, 6023692, -210990, 6268505, -17301738,
+3111704, -5026723, 12183748, -21638582, -62672700, -92422864, 18921478, 72844792, 2386928, 199162464,
+182884544, 126001456, 216108800, 166652240, 21722334, 3207267, -23616414, -159597232, -163501344, -123996240,
+-213903328, -198955776, -58145268, -67002028, -68470904, 14900852, 38499012, -34309808, -12937515, 62480500,
+38591892, -3599720, 45242648, 31309774, 161061, 37966976, 91492464, 59929828, 18900540, 94227824,
+68444600, 3332358, 79732848, 109726216, 23727010, 9508521, 111003968, 28484224, -48183092, 54516020,
+84262960, -48387100, 16464757, 119560080, 7308961, 16437914, 144024752, 112632296, 4876936, 88148832,
+117664384, -47656420, -30982820, 29654064, -106659072, -173859200, -119858576, -191541584, -282103104, -259459504,
+-289848000, -367075296, -387062464, -342896224, -361456384, -340003584, -254369968, -200921792, -96309808, 2296197,
+124596464, 138281840, 31000000, },
{
708670,
--98247, 1244467, -1082332, -430034, -3767760, -1692217, -4007741, 399432, -2260764, -2665564,
-1319092, 2340220, -2917357, 2914672, 334471, -3683471, 585726, -4206921, 2381023, -1177358,
--685584, -1367410, 955093, -1877438, -248571, -1218160, 1555852, 3164317, -2915209, -1376000,
-1154809, -636192, 2127083, 3264712, 136902, 1548873, 1027034, 963683, -427886, 2384244,
--3133716, -1216013, 3446711, 112206, 4090956, -4457639, 2360622, -1635846, -6176700, 3228742,
-2874944, 956167, -2195802, -1484448, -483721, 660888, 482647, -1101659, -2155000, -1287953,
-911607, 146566, 1883880, 4257387, 996969, 333934, 271657, 3554086, 2046552, -762894,
-976568, -527744, -1680406, -346819, -2671470, 3749507, 5184026, -3048353, 213675, 165893,
--3712462, 4962835, -1979443, -1942399, 1421634, -5123896, -2294050, 5488968, 1250372, -2239826,
-3906273, 1206886, 839666, -805843, 1908576, -34897, -6562173, -315680, -2430952, -297427,
--135291, -6291590, 106300, -4046396, 229781, 630823, 2818572, 3352222, 1119913, 827855,
-629750, 2893734, -1574106, 983548, 201327, 445603, 623307, -882616, 2610803, 3863323,
--7427609, 3444564, -1926293, -4498442, -2841658, 5692443, 2890513, -1955821, 3272228, 913754,
--2019708, 1977833, 73551, -45097, 331249, 339302, -743566, -17717, 456340, -404264,
-2490544, -1618666, -3406446, -3447248, 12348, 977105, -181462, -27380, 1905355, -991064,
-3327526, 2783139, 184684, -2187749, 1367410, -1167694, -1778117, 457951, -3728569, -419296,
--2794950, 1003949, 1731409, 1702418, 1323924, -2870112, -209380, -2370822, 2572149, -4925254,
--2815888, 2541547, -5435818, -574452, -355945, 1428614, 1198833, 2716030, 5650030, 2648921,
--694174, 28991, -2008434, -1524177, -9953587, -9124658, -599148, 6845104, -1670205, 5480379,
-493921, 1609002, -1665911, -7654706, 4013110, 1283122, -2295660, 1964948, -4062502, -766115,
-2345589, 1089848, 7264401, -4893042, 4420595, -2202245, -5666136, -2571612, -1522029, -1488743,
-2048163, 1779727, -4566624, -1971390, -2593624, -899796, 4450123, 4809827, 5093295, -3661997,
-615254, -2280091, -367757, -1926293, -2644089, -3046206, -3708168, 3723200, -3531000, -4523138,
--3958349, 126702, -1582159, -1247151, -3141769, 681826, -3508988, -247497, -1465121, 5335423,
--3468723, -3763465, -8432631, -10899553, -2677375, -4864588, -4510253, -1077500, 2210835, -2780991,
--6584722, 4036196, -9530532, 2828236, -1642825, -1729261, 6079526, 4294431, 2215130, 815507,
--1111860, -1013612, -2362232, 950262, 4103305, -3395172, 3886946, 3594351, 999117, 484258,
-1581085, 2730526, -6228777, -2741263, 5815386, -4631586, 320512, -171799, 3531537, -538482,
--1434519, 584116, 6033892, 3271691, 2057289, 1851131, 3333968, -5515275, 4095251, -4540854,
-3787088, 2375654, -1207423, -956704, -1897839, -2626373, -3986267, -452582, -1288490, -3439732,
--3524558, -2371359, -2073396, 1954210, -5541582, -369904, -2477123, -5534602, -2233920, -1219234,
--3464428, -1482301, -3177739, -1565516, 2919504, 3377992, -5755793, -3645354, 2197950, -1432372,
--6308233, 4112431, 8034273, 1391569, -1597191, -3889630, 1103807, 3517578, 7295539, -3837017,
--1248225, -4774930, -3376918, 3640522, 4163971, -5749351, 3477850, -2020245, -3243237, 5273683,
-246424, 2747169, -7330973, 239444, -4601521, 811749, -5777268, -4097936, -708670, -1719598,
-12907450, 3689914, 3565360, 2135673, -9098351, 4915053, 3963181, -2430415, 79994, 3726421,
--256087, 3939559, 5348308, 4571993, -2542084, -73551, -1250909, 2181844, -1991254, -3016678,
-2045478, -2914672, 1525787, 933082, 517007, 2215130, 1604170, -6445672, -263604, -1972464,
--7820599, -4345433, 3191161, -3405372, 9162239, 4050154, 8973797, -115427, -4380867, -4648765,
--6288369, 9607842, -2335389, 4408784, 4906464, 1048509, 3461744, 3165928, 3066607, 1257352,
--6303402, -313533, -2419140, -896038, 4365298, -337692, -358093, 3083250, 1941862, 3195456,
--2714956, -9908490, -5916855, -3706557, 7384660, -6560563, -1970316, 4582730, -467078, 925029,
--5528160, 9754408, 567473, -3663607, 7669201, -4581657, 11857868, 6218576, -2630131, 1486596,
--3332358, -2175401, -10856604, 3993246, -4933844, -626528, -406411, -2229088, 4675609, -1654099,
--4756677, -4452271, 1058710, -4034585, -4705137, 2882997, 338229, 3609383, -1940252, -9649718,
-3246995, 4670240, 5259188, -4897874, -6532646, 1420560, 8472360, 8120173, -7502234, 3847217,
-8996883, -6460168, 1561221, -3548180, -7558069, 10959146, 3730179, 10187126, 8910983, 1526861,
--7672959, -4339528, 3485903, -325881, 1248225, -7814693, 476205, -14007499, -6310381, -10910291,
-6416681, -6160594, -623307, 2121714, -2234457, -2776696, 2919504, 3419331, 9336185, -1311576,
--2625836, -7451769, -6867653, 6265821, 854699, 2157147, 11186779, -3551401, -443455, 6192269,
--3337727, 2826625, 1579474, 6155762, 5018670, -3976603, -1217086, -8057896, 7625715, -5567888,
--7824894, -7066832, 3674345, -2763812, -4495220, 7887171, -3285113, 8143795, -5976447, -4276177,
--1908039, 5136781, 6284074, -987306, -8656507, 2275796, -5923834, 9459129, 1044214, 5201743,
--9200894, -4408247, 1026497, 4321811, -12020003, 3937411, 3999688, 2075006, -9035537, 6730751,
-12062416, -11897596, 4652524, -7494181, 4890894, 170725, 4405026, -3871913, -26307, 2225867,
--7598334, -4377109, -3170223, 5666136, 6677601, -2668249, 3214246, -2141578, 4945655, 5558225,
-2514167, 1263257, -6107981, -2938295, -7674570, -9220758, -5947993, -67646, -2835752, -1067836,
--3573950, -9246528, -2905009, 1033477, 747324, -1253594, 12899934, -11244224, 3784403, -6007049,
--1622424, -4066260, -3442416, 4664872, -3459596, -451508, -4188130, -3562139, -5079873, 5667746,
--6362994, 4440460, -1740536, 4391604, -866510, -252866, -987306, 4109210, 2544768, -1339493,
-10696616, -809601, -6237367, 1624035, -5736466, -7647190, -8220031, 5765994, 1875827, 4890894,
-5822902, 2534031, -12418361, -1597728, 2253247, -3571265, -9656160, 11135776, -185757, -131533,
-10515154, -3343095, -9658845, 3049427, 7283728, 12137041, -235686, 4808753, 1680406, -11727945,
--2698850, -6360847, 6277632, 2694018, 3563212, -4727149, -170188, -1012539, 1620276, -4315906,
-5900212, 937914, -3892851, 6031208, 1533303, -7860864, -5550709, 1199907, 8553964, 6614787,
--9322763, 18957448, -336081, -124017, 5988795, -1254667, -1911797, -643708, 13157632, -6715182,
-6846178, -1949915, 9328669, 2185065, 8442832, -3353833, -5406827, 3926137, 7346542, -3645890,
--6689949, -8387535, -6354941, -3497177, -660351, 7164006, 986769, 6256157, 64961, -2218351,
-7257421, -5561446, -9843528, -2704756, -5927055, -6075231, -11137387, 9708237, -3824132, -780073,
--720481, -7309498, -605590, 663036, 5280126, -7704098, 281320, -1114544, -3368328, -16101296,
--2082522, 7723962, 5778879, 7909183, 775242, -8623221, 22846004, 9740986, 15489263, 1702955,
--6990060, -2663954, -2372433, -9690520, -772557, -3767760, 4734128, 83752, 336081, -3073049,
--4348655, -8202314, 2596308, 856309, 214212, 4294431, -551903, 1838783, -1032403, -7145752,
--5785858, 4353486, -204548, 10448045, -13438416, 10559177, 6223408, -4672925, -9811853, -14930917,
-2864206, 11718818, -6327024, 11323144, -1222455, -593242, 2262911, -3455301, -13612362, 1441498,
-5834713, 2600066, -6207839, -1748589, -4119948, 2607045, 5833640, -759136, 970126, -1452773,
-5392332, -3620121, -3051038, 2767570, -4636417, 2419140, -17631378, 12599287, 11647414, 13438953,
--4194036, -12183748, 4416837, 4776004, -17883170, -16501801, 16125992, 1687385, -7566122, 5988795,
--11059004, -12861280, 2075006, 33432026, 15789910, 6214818, -8805757, 173946, -2943126, 303869,
--3497177, -1801739, -3899294, 1279363, 9877888, 1981591, 12118250, -4537096, -3485903, 2281702,
-8631811, -1414655, -726386, -17309792, -258772, -9648644, -9664, 13782013, 10222559, -3333968,
-10040560, 19093278, -8332774, 5744519, 16255914, -11101954, 17192218, -992137, 7550553, -3484829,
-1531156, -1761474, 3193308, 4333085, 17324288, -5691906, -982474, 4881231, -6424734, 5507759,
-3846680, -3598646, -5932424, 16972100, 631360, -7857106, -944893, 11070815, -1825361, 7939247,
-2920041, 1167157, -765578, -2966749, 21974126, 3593814, 3345780, -11590506, -6266894, 259309,
-2769180, 4076461, 5297842, -21837762, 1230508, 1033477, 15795816, 2156611, 4201552, -1813013,
-14379551, -23447300, 943819, 11491185, -13538274, 3092913, 2916820, 10791105, 2401424, 826781,
--3582540, -6442, -11626476, 3633006, -2769180, 1717987, 3386045, -2405719, -8804683, 2894271,
--6928856, -12706124, 7084549, -7361574, 4691178, -11982959, -7196755, -1640141, -3507378, 2340757,
--4857071, 12257837, -107911, 11658689, -12761422, -11248519, -3482682, -285078, -267362, -4230543,
-10792716, 8402567, 22564148, -4153770, 14317810, -9039832, -1745904, 3826279, -17628156, 19090056,
--1052267, 11623792, -1202054, -17859548, -11368242, 6460168, -24521042, 11032160, 645856, 4133369,
-11300596, 16819092, 6144488, -7242389, 16420197, -17493938, -1538672, -5474473, 2430415, 13700946,
--12206297, 31065498, 4461934, 7630010, -8836358, -12650289, 4719632, 52613, 26878980, -3833258,
--8757975, -15152645, -9765682, 7390028, 5199595, 4347581, -1422171, -14850386, -22468048, 1798518,
--13313862, 18531174, 2973728, 15091978, -8652748, 6407018, -5356361, 7929584, 22274774, -3390877,
--1599875, -3039763, 6365679, 7442642, 4452808, 1868311, 3023657, 9698036, 9266929, -4514011,
--6552510, -6295349, -6522445, 25138980, 10714333, -14040248, 12177306, -2793876, -10816875, -7959648,
-5463199, 9661529, -15759846, -21388400, 3670587, -9090835, 30250528, 15933255, -3663070, -2269890,
-7492034, 14344117, 4671851, -459562, -2863670, -16449188, -3174518, -1645509, -77846, -7042136,
--14914274, 9035537, -5769752, 13091060, 4205310, -11764989, -6699612, -5393405, 1513439, -16272020,
-10505490, 17598092, -8007430, 11390253, -3815005, -3428995, 6683506, -11100343, 6238440, 14465450,
-2323577, 24152748, 9830106, -8599061, 8469139, 5247913, 7252053, 1452236, 10976863, 11834782,
-15171972, 7301445, -8005819, -6776922, -11822434, 34897, 24266028, 1560147, 9341554, -15249818,
-32114008, -9011378, -28073516, -11511049, 19614042, 2662343, -4684199, -1949378, -3321620, 16828218,
--13460428, 10142565, -4225174, 20923470, 28606630, 16645683, 12741020, -9921911, 15312632, 11403675,
-8186208, 12696460, 15139760, -2738579, -32628866, -18602040, -24472724, 6496675, 5224291, 6974490,
--7922604, 10770167, 23797876, 2269353, 44560, -7190312, 4655745, 10895795, 13314399, 4477504,
-6368363, 9932112, -7813083, 23434952, 9558987, 4312684, -6559489, -18451716, -7138236, 9639517,
--799938, -26043608, 34870840, -12468290, -6627672, 10400800, 686658, -3755949, 2666101, -7032472,
--8002598, -2078764, -18743774, 4363150, -20163260, 251792, -15971373, -18420040, -3535295, -4169876,
--3887482, -13567265, 5882495, 13853954, 3860102, 10526965, -18782428, 18227842, 33855080, 3160022,
--13569412, 20784958, -17335024, -27816356, 45704356, -5053566, 3213709, -3556233, -20490752, 15388331,
--18593450, 7622493, 27866822, -978179, 38292856, -30386894, 28827284, 7948374, -19054622, -10468446,
-3583077, -18823768, -9075803, 19663970, -19804094, 12445741, -13055627, 6346888, 22041236, -47997332,
--18661632, 19218904, -8685498, 4738960, -13246753, -40254044, -10234370, 12993350, 31172336, -9996536,
-15860240, 301185, 7626252, 15917149, 10641855, 27661736, -6907918, 1072668, 7920994, -24704652,
--15516106, -7429757, -7633231, 5571110, 762894, 2001992, -12461848, -2200634, -16596291, -13879187,
-7039989, 34236796, 20159502, -9086003, -10537702, 16287053, 20055886, -11730093, 5660230, 15011984,
--5456756, 32750736, 11704860, 4753992, -24749750, 15548318, 3803731, 12229383, -1976222, 3088082,
--3526168, -5557688, -39233988, 10460393, 28322088, 13492640, 4443681, -950798, 14704894, -22672058,
--40651864, 2812130, 55834036, 12887586, 44503376, 40916544, 1464584, 3038689, -25365540, -24315420,
--1567663, -21239688, 28469190, -61469572, 12214350, -24635932, -47207060, 7317551, 22635014, -9421548,
-28264106, 52303576, 292058, 15100568, 8206072, -25790204, -8647917, 27987618, 7457674, 12994424,
--7728794, 8978092, 3592740, -8325794, -550293, 15143518, 13801877, 19235548, -8912594, -963146,
--40735080, -36050880, 4205310, -21779780, -137439, 21341156, 3915400, 3732327, -7836705, -3082176,
-11922292, 32739998, -23674934, -11625940, -3885335, -20645370, -2523830, -19805704, -7538742, -21077552,
-19092204, -25826176, -3140695, 6593312, 12382391, 49675056, 63054416, 18335216, -17726940, -32284196,
--3922916, -21425444, -10075456, -34291556, 4514011, 37096168, 24895778, 23215908, 1601486, 7435662,
-34929896, 37328096, 24657944, 597000, 15220827, 8890045, 7056632, -38064684, 11548630, 8180839,
--10368051, 29055454, 33100776, 331786, -955093, -9408126, -11338177, 30794378, 23897198, -16358457,
-16544214, 22568980, 3798362, -30873836, -34351148, 31966368, 12400107, 6488622, 27207544, -607738,
--10236518, 26799522, 8505109, -22455162, -9649181, -8928163, 10585484, -653372, -11579232, 3658239,
--12923557, -2691871, -5190468, -8144332, 20244328, 34240016, -10923176, 6037114, 17954038, -9691594,
--5941014, 5486284, 21478058, 5064304, -14287746, -21114060, -22398792, 11235098, 14652818, 30773440,
--13952738, -16030429, 12709882, 17656074, 31505196, -2469069, -54268524, -13589277, 19492172, 16219944,
-9652402, -12640089, 1244467, -24095840, 5099200, -11497091, 25026238, 31287764, -8053064, -1251983,
--17298518, -23115514, -5770826, -44772348, -5937793, -23816668, 21985400, -19446002, 23317914, 22502408,
--44629004, -4961224, -13735842, -11806865, -16166257, -26917096, -6082748, -15073725, -27232778, -41276248,
-19988778, 21008832, 12394739, -27738510, -37534792, -29019484, -16495359, 6345814, -1501628, -36802500,
--22032108, -25398290, 34950296, 10479720, 14983530, -11664057, -20532628, 44157096, 10585484, 13320841,
--9090835, 1970316, 12656732, -9876277, 9898289, -4061429, 20687784, 29350732, 628676, -25183004,
--20276540, 23000624, 15587510, 19998442, 5224828, 4283693, -11648488, -5732171, 2560338, 13582834,
-30652108, -1339493, -59901372, -55728276, -208843, -14478335, 34340948, 34824668, -41064720, -28207198,
--17876728, 48646948, 43343200, -25210922, 6079526, -32630478, -31304406, 17405892, -14819248, -806917,
--5354751, -22716082, 15177878, 15392089, 12736189, 50146428, -36352068, -9808095, -2134599, 11946452,
-45974940, -29348048, 27399206, 34248068, 16211891, -68102072, -32190780, 27567784, -22893786, 17476758,
--8529805, -26146150, 15649250, 9376987, 2275259, -9487583, -50839528, -799401, -4851703, 3909494,
--10179072, -30798136, 22424024, -17558364, 40705016, -821949, -7288023, 25372520, 12562242, -17175038,
--5414343, -12000139, 20102058, 41160284, 24771224, -27248346, 3503083, -16824998, 15351824, -14005888,
--11057930, 7372848, -5215164, 24536612, -22206592, -39060044, 7474317, -11028939, 12473122, 21593484,
--58884000, -4598300, -14410689, 6877317, 56958244, -11428908, -48462264, -6626598, 34525096, 23938000,
--28382218, -2351495, 19512036, 5656472, 24953224, -38619272, -28532004, 33155536, -33268280, -61436824,
--25690884, -2363306, 71584760, -14144401, -46699180, 27497454, -52123188, 96954592, -65148212, 17975512,
--662499, 21985400, 54570780, 16953846, 7826504, -30975304, -12322798, -30965640, -36223216, -12690018,
-7518341, 20447802, 27974732, -3561065, 16392280, 19014894, -16675747, -34886408, 18509162, 6059125,
--27693412, -10004589, 26817238, -9550397, -2734821, 23784992, 13848585, 10272488, 3591130, 13273596,
--13037373, -32517198, -13727252, 8536784, -12943421, -8137353, 11839614, 186294, -22402012, 22851910,
-5153961, -21481278, 2734821, -5682779, 20230906, 10570988, -8144332, 8792335, -12475269, -28737090,
-3693135, 6069863, -2647847, -716723, 5782637, -13061532, 3674882, -11348377, 6039798, 19066434,
--2438468, 7746511, 8847633, -8804146, 11811, -20258824, 5927055, 9929964, -35408248, 18605262,
--22531936, 4983236, -30602, -2695629, 9792525, 52880176, -1740536, -1939715, -14533632, -14657113,
-11131481, -800475, 9673340, 15032, -4960151, -7154879, 3830574, -9949829, 10196789, -9370008,
-14754823, -11852499, 8711267, -10042170, -1944547, -1704565, -8969502, -7164006, 2375117, -4259534,
--2626909, -147640, -6651294, 853625, -1071594, 2160906, -1317481, 4009889, -13612362, 12661564,
--4438312, -4183298, 9963787, -7733626, 864362, -9644349, -8092792, 6164889, 5782100, -6749541,
--4010426, 2774549, -61203, -11739219, 3402688, 2150168, 377420, 7840463, -2483028, -3218004,
--2787971, -7925289, -1796907, 8607651, -8596914, 2496450, -3970161, -896038, 955093, -2487860,
-2343442, 340913, 6240051, -8239358, -462783, 5982353, -10901701, 7037841, -4984310, 938987,
-4662724, -545998, -5709086, -24478092, -42501924, 16049756, 134322416, 34163244, 73883640, -2470680,
--72785200, -23049478, -71622336, -60389388, -21911850, -14198625, -5364951, 40834940, 53819700, 72138808,
-90137944, 39562016, -23548768, -41426572, -89251568, -83993992, -34807488, -27720256, -19171124, 37035504,
-49444736, 30291330, 45829984, 55897388, 18417894, 15738908, 10048613, -28110560, -13481902, -19953882,
--45024680, -24102282, -33504504, -48665200, -27053998, 6747394, 5067525, 28192166, 66602056, 46371688,
-37863356, 37757056, 11269457, 3476776, -3898757, -18456548, -27495844, -33911988, -49654116, -43030204,
--24505472, -6794102, -16672526, 14811195, 25896506, 22907208, 37986300, 43193948, 27386858, 25731150,
-24462524, -2268280, -10924786, -4161823, -33043868, -26174604, -5361193, -24996172, -26481694, -13142600,
--12840342, 2990908, 864899, },
+-98247, 1244467, -1082332, -430034, -3767760, -1692217, -4007741, 399432, -2260764, -2665564,
+1319092, 2340220, -2917357, 2914672, 334471, -3683471, 585726, -4206921, 2381023, -1177358,
+-685584, -1367410, 955093, -1877438, -248571, -1218160, 1555852, 3164317, -2915209, -1376000,
+1154809, -636192, 2127083, 3264712, 136902, 1548873, 1027034, 963683, -427886, 2384244,
+-3133716, -1216013, 3446711, 112206, 4090956, -4457639, 2360622, -1635846, -6176700, 3228742,
+2874944, 956167, -2195802, -1484448, -483721, 660888, 482647, -1101659, -2155000, -1287953,
+911607, 146566, 1883880, 4257387, 996969, 333934, 271657, 3554086, 2046552, -762894,
+976568, -527744, -1680406, -346819, -2671470, 3749507, 5184026, -3048353, 213675, 165893,
+-3712462, 4962835, -1979443, -1942399, 1421634, -5123896, -2294050, 5488968, 1250372, -2239826,
+3906273, 1206886, 839666, -805843, 1908576, -34897, -6562173, -315680, -2430952, -297427,
+-135291, -6291590, 106300, -4046396, 229781, 630823, 2818572, 3352222, 1119913, 827855,
+629750, 2893734, -1574106, 983548, 201327, 445603, 623307, -882616, 2610803, 3863323,
+-7427609, 3444564, -1926293, -4498442, -2841658, 5692443, 2890513, -1955821, 3272228, 913754,
+-2019708, 1977833, 73551, -45097, 331249, 339302, -743566, -17717, 456340, -404264,
+2490544, -1618666, -3406446, -3447248, 12348, 977105, -181462, -27380, 1905355, -991064,
+3327526, 2783139, 184684, -2187749, 1367410, -1167694, -1778117, 457951, -3728569, -419296,
+-2794950, 1003949, 1731409, 1702418, 1323924, -2870112, -209380, -2370822, 2572149, -4925254,
+-2815888, 2541547, -5435818, -574452, -355945, 1428614, 1198833, 2716030, 5650030, 2648921,
+-694174, 28991, -2008434, -1524177, -9953587, -9124658, -599148, 6845104, -1670205, 5480379,
+493921, 1609002, -1665911, -7654706, 4013110, 1283122, -2295660, 1964948, -4062502, -766115,
+2345589, 1089848, 7264401, -4893042, 4420595, -2202245, -5666136, -2571612, -1522029, -1488743,
+2048163, 1779727, -4566624, -1971390, -2593624, -899796, 4450123, 4809827, 5093295, -3661997,
+615254, -2280091, -367757, -1926293, -2644089, -3046206, -3708168, 3723200, -3531000, -4523138,
+-3958349, 126702, -1582159, -1247151, -3141769, 681826, -3508988, -247497, -1465121, 5335423,
+-3468723, -3763465, -8432631, -10899553, -2677375, -4864588, -4510253, -1077500, 2210835, -2780991,
+-6584722, 4036196, -9530532, 2828236, -1642825, -1729261, 6079526, 4294431, 2215130, 815507,
+-1111860, -1013612, -2362232, 950262, 4103305, -3395172, 3886946, 3594351, 999117, 484258,
+1581085, 2730526, -6228777, -2741263, 5815386, -4631586, 320512, -171799, 3531537, -538482,
+-1434519, 584116, 6033892, 3271691, 2057289, 1851131, 3333968, -5515275, 4095251, -4540854,
+3787088, 2375654, -1207423, -956704, -1897839, -2626373, -3986267, -452582, -1288490, -3439732,
+-3524558, -2371359, -2073396, 1954210, -5541582, -369904, -2477123, -5534602, -2233920, -1219234,
+-3464428, -1482301, -3177739, -1565516, 2919504, 3377992, -5755793, -3645354, 2197950, -1432372,
+-6308233, 4112431, 8034273, 1391569, -1597191, -3889630, 1103807, 3517578, 7295539, -3837017,
+-1248225, -4774930, -3376918, 3640522, 4163971, -5749351, 3477850, -2020245, -3243237, 5273683,
+246424, 2747169, -7330973, 239444, -4601521, 811749, -5777268, -4097936, -708670, -1719598,
+12907450, 3689914, 3565360, 2135673, -9098351, 4915053, 3963181, -2430415, 79994, 3726421,
+-256087, 3939559, 5348308, 4571993, -2542084, -73551, -1250909, 2181844, -1991254, -3016678,
+2045478, -2914672, 1525787, 933082, 517007, 2215130, 1604170, -6445672, -263604, -1972464,
+-7820599, -4345433, 3191161, -3405372, 9162239, 4050154, 8973797, -115427, -4380867, -4648765,
+-6288369, 9607842, -2335389, 4408784, 4906464, 1048509, 3461744, 3165928, 3066607, 1257352,
+-6303402, -313533, -2419140, -896038, 4365298, -337692, -358093, 3083250, 1941862, 3195456,
+-2714956, -9908490, -5916855, -3706557, 7384660, -6560563, -1970316, 4582730, -467078, 925029,
+-5528160, 9754408, 567473, -3663607, 7669201, -4581657, 11857868, 6218576, -2630131, 1486596,
+-3332358, -2175401, -10856604, 3993246, -4933844, -626528, -406411, -2229088, 4675609, -1654099,
+-4756677, -4452271, 1058710, -4034585, -4705137, 2882997, 338229, 3609383, -1940252, -9649718,
+3246995, 4670240, 5259188, -4897874, -6532646, 1420560, 8472360, 8120173, -7502234, 3847217,
+8996883, -6460168, 1561221, -3548180, -7558069, 10959146, 3730179, 10187126, 8910983, 1526861,
+-7672959, -4339528, 3485903, -325881, 1248225, -7814693, 476205, -14007499, -6310381, -10910291,
+6416681, -6160594, -623307, 2121714, -2234457, -2776696, 2919504, 3419331, 9336185, -1311576,
+-2625836, -7451769, -6867653, 6265821, 854699, 2157147, 11186779, -3551401, -443455, 6192269,
+-3337727, 2826625, 1579474, 6155762, 5018670, -3976603, -1217086, -8057896, 7625715, -5567888,
+-7824894, -7066832, 3674345, -2763812, -4495220, 7887171, -3285113, 8143795, -5976447, -4276177,
+-1908039, 5136781, 6284074, -987306, -8656507, 2275796, -5923834, 9459129, 1044214, 5201743,
+-9200894, -4408247, 1026497, 4321811, -12020003, 3937411, 3999688, 2075006, -9035537, 6730751,
+12062416, -11897596, 4652524, -7494181, 4890894, 170725, 4405026, -3871913, -26307, 2225867,
+-7598334, -4377109, -3170223, 5666136, 6677601, -2668249, 3214246, -2141578, 4945655, 5558225,
+2514167, 1263257, -6107981, -2938295, -7674570, -9220758, -5947993, -67646, -2835752, -1067836,
+-3573950, -9246528, -2905009, 1033477, 747324, -1253594, 12899934, -11244224, 3784403, -6007049,
+-1622424, -4066260, -3442416, 4664872, -3459596, -451508, -4188130, -3562139, -5079873, 5667746,
+-6362994, 4440460, -1740536, 4391604, -866510, -252866, -987306, 4109210, 2544768, -1339493,
+10696616, -809601, -6237367, 1624035, -5736466, -7647190, -8220031, 5765994, 1875827, 4890894,
+5822902, 2534031, -12418361, -1597728, 2253247, -3571265, -9656160, 11135776, -185757, -131533,
+10515154, -3343095, -9658845, 3049427, 7283728, 12137041, -235686, 4808753, 1680406, -11727945,
+-2698850, -6360847, 6277632, 2694018, 3563212, -4727149, -170188, -1012539, 1620276, -4315906,
+5900212, 937914, -3892851, 6031208, 1533303, -7860864, -5550709, 1199907, 8553964, 6614787,
+-9322763, 18957448, -336081, -124017, 5988795, -1254667, -1911797, -643708, 13157632, -6715182,
+6846178, -1949915, 9328669, 2185065, 8442832, -3353833, -5406827, 3926137, 7346542, -3645890,
+-6689949, -8387535, -6354941, -3497177, -660351, 7164006, 986769, 6256157, 64961, -2218351,
+7257421, -5561446, -9843528, -2704756, -5927055, -6075231, -11137387, 9708237, -3824132, -780073,
+-720481, -7309498, -605590, 663036, 5280126, -7704098, 281320, -1114544, -3368328, -16101296,
+-2082522, 7723962, 5778879, 7909183, 775242, -8623221, 22846004, 9740986, 15489263, 1702955,
+-6990060, -2663954, -2372433, -9690520, -772557, -3767760, 4734128, 83752, 336081, -3073049,
+-4348655, -8202314, 2596308, 856309, 214212, 4294431, -551903, 1838783, -1032403, -7145752,
+-5785858, 4353486, -204548, 10448045, -13438416, 10559177, 6223408, -4672925, -9811853, -14930917,
+2864206, 11718818, -6327024, 11323144, -1222455, -593242, 2262911, -3455301, -13612362, 1441498,
+5834713, 2600066, -6207839, -1748589, -4119948, 2607045, 5833640, -759136, 970126, -1452773,
+5392332, -3620121, -3051038, 2767570, -4636417, 2419140, -17631378, 12599287, 11647414, 13438953,
+-4194036, -12183748, 4416837, 4776004, -17883170, -16501801, 16125992, 1687385, -7566122, 5988795,
+-11059004, -12861280, 2075006, 33432026, 15789910, 6214818, -8805757, 173946, -2943126, 303869,
+-3497177, -1801739, -3899294, 1279363, 9877888, 1981591, 12118250, -4537096, -3485903, 2281702,
+8631811, -1414655, -726386, -17309792, -258772, -9648644, -9664, 13782013, 10222559, -3333968,
+10040560, 19093278, -8332774, 5744519, 16255914, -11101954, 17192218, -992137, 7550553, -3484829,
+1531156, -1761474, 3193308, 4333085, 17324288, -5691906, -982474, 4881231, -6424734, 5507759,
+3846680, -3598646, -5932424, 16972100, 631360, -7857106, -944893, 11070815, -1825361, 7939247,
+2920041, 1167157, -765578, -2966749, 21974126, 3593814, 3345780, -11590506, -6266894, 259309,
+2769180, 4076461, 5297842, -21837762, 1230508, 1033477, 15795816, 2156611, 4201552, -1813013,
+14379551, -23447300, 943819, 11491185, -13538274, 3092913, 2916820, 10791105, 2401424, 826781,
+-3582540, -6442, -11626476, 3633006, -2769180, 1717987, 3386045, -2405719, -8804683, 2894271,
+-6928856, -12706124, 7084549, -7361574, 4691178, -11982959, -7196755, -1640141, -3507378, 2340757,
+-4857071, 12257837, -107911, 11658689, -12761422, -11248519, -3482682, -285078, -267362, -4230543,
+10792716, 8402567, 22564148, -4153770, 14317810, -9039832, -1745904, 3826279, -17628156, 19090056,
+-1052267, 11623792, -1202054, -17859548, -11368242, 6460168, -24521042, 11032160, 645856, 4133369,
+11300596, 16819092, 6144488, -7242389, 16420197, -17493938, -1538672, -5474473, 2430415, 13700946,
+-12206297, 31065498, 4461934, 7630010, -8836358, -12650289, 4719632, 52613, 26878980, -3833258,
+-8757975, -15152645, -9765682, 7390028, 5199595, 4347581, -1422171, -14850386, -22468048, 1798518,
+-13313862, 18531174, 2973728, 15091978, -8652748, 6407018, -5356361, 7929584, 22274774, -3390877,
+-1599875, -3039763, 6365679, 7442642, 4452808, 1868311, 3023657, 9698036, 9266929, -4514011,
+-6552510, -6295349, -6522445, 25138980, 10714333, -14040248, 12177306, -2793876, -10816875, -7959648,
+5463199, 9661529, -15759846, -21388400, 3670587, -9090835, 30250528, 15933255, -3663070, -2269890,
+7492034, 14344117, 4671851, -459562, -2863670, -16449188, -3174518, -1645509, -77846, -7042136,
+-14914274, 9035537, -5769752, 13091060, 4205310, -11764989, -6699612, -5393405, 1513439, -16272020,
+10505490, 17598092, -8007430, 11390253, -3815005, -3428995, 6683506, -11100343, 6238440, 14465450,
+2323577, 24152748, 9830106, -8599061, 8469139, 5247913, 7252053, 1452236, 10976863, 11834782,
+15171972, 7301445, -8005819, -6776922, -11822434, 34897, 24266028, 1560147, 9341554, -15249818,
+32114008, -9011378, -28073516, -11511049, 19614042, 2662343, -4684199, -1949378, -3321620, 16828218,
+-13460428, 10142565, -4225174, 20923470, 28606630, 16645683, 12741020, -9921911, 15312632, 11403675,
+8186208, 12696460, 15139760, -2738579, -32628866, -18602040, -24472724, 6496675, 5224291, 6974490,
+-7922604, 10770167, 23797876, 2269353, 44560, -7190312, 4655745, 10895795, 13314399, 4477504,
+6368363, 9932112, -7813083, 23434952, 9558987, 4312684, -6559489, -18451716, -7138236, 9639517,
+-799938, -26043608, 34870840, -12468290, -6627672, 10400800, 686658, -3755949, 2666101, -7032472,
+-8002598, -2078764, -18743774, 4363150, -20163260, 251792, -15971373, -18420040, -3535295, -4169876,
+-3887482, -13567265, 5882495, 13853954, 3860102, 10526965, -18782428, 18227842, 33855080, 3160022,
+-13569412, 20784958, -17335024, -27816356, 45704356, -5053566, 3213709, -3556233, -20490752, 15388331,
+-18593450, 7622493, 27866822, -978179, 38292856, -30386894, 28827284, 7948374, -19054622, -10468446,
+3583077, -18823768, -9075803, 19663970, -19804094, 12445741, -13055627, 6346888, 22041236, -47997332,
+-18661632, 19218904, -8685498, 4738960, -13246753, -40254044, -10234370, 12993350, 31172336, -9996536,
+15860240, 301185, 7626252, 15917149, 10641855, 27661736, -6907918, 1072668, 7920994, -24704652,
+-15516106, -7429757, -7633231, 5571110, 762894, 2001992, -12461848, -2200634, -16596291, -13879187,
+7039989, 34236796, 20159502, -9086003, -10537702, 16287053, 20055886, -11730093, 5660230, 15011984,
+-5456756, 32750736, 11704860, 4753992, -24749750, 15548318, 3803731, 12229383, -1976222, 3088082,
+-3526168, -5557688, -39233988, 10460393, 28322088, 13492640, 4443681, -950798, 14704894, -22672058,
+-40651864, 2812130, 55834036, 12887586, 44503376, 40916544, 1464584, 3038689, -25365540, -24315420,
+-1567663, -21239688, 28469190, -61469572, 12214350, -24635932, -47207060, 7317551, 22635014, -9421548,
+28264106, 52303576, 292058, 15100568, 8206072, -25790204, -8647917, 27987618, 7457674, 12994424,
+-7728794, 8978092, 3592740, -8325794, -550293, 15143518, 13801877, 19235548, -8912594, -963146,
+-40735080, -36050880, 4205310, -21779780, -137439, 21341156, 3915400, 3732327, -7836705, -3082176,
+11922292, 32739998, -23674934, -11625940, -3885335, -20645370, -2523830, -19805704, -7538742, -21077552,
+19092204, -25826176, -3140695, 6593312, 12382391, 49675056, 63054416, 18335216, -17726940, -32284196,
+-3922916, -21425444, -10075456, -34291556, 4514011, 37096168, 24895778, 23215908, 1601486, 7435662,
+34929896, 37328096, 24657944, 597000, 15220827, 8890045, 7056632, -38064684, 11548630, 8180839,
+-10368051, 29055454, 33100776, 331786, -955093, -9408126, -11338177, 30794378, 23897198, -16358457,
+16544214, 22568980, 3798362, -30873836, -34351148, 31966368, 12400107, 6488622, 27207544, -607738,
+-10236518, 26799522, 8505109, -22455162, -9649181, -8928163, 10585484, -653372, -11579232, 3658239,
+-12923557, -2691871, -5190468, -8144332, 20244328, 34240016, -10923176, 6037114, 17954038, -9691594,
+-5941014, 5486284, 21478058, 5064304, -14287746, -21114060, -22398792, 11235098, 14652818, 30773440,
+-13952738, -16030429, 12709882, 17656074, 31505196, -2469069, -54268524, -13589277, 19492172, 16219944,
+9652402, -12640089, 1244467, -24095840, 5099200, -11497091, 25026238, 31287764, -8053064, -1251983,
+-17298518, -23115514, -5770826, -44772348, -5937793, -23816668, 21985400, -19446002, 23317914, 22502408,
+-44629004, -4961224, -13735842, -11806865, -16166257, -26917096, -6082748, -15073725, -27232778, -41276248,
+19988778, 21008832, 12394739, -27738510, -37534792, -29019484, -16495359, 6345814, -1501628, -36802500,
+-22032108, -25398290, 34950296, 10479720, 14983530, -11664057, -20532628, 44157096, 10585484, 13320841,
+-9090835, 1970316, 12656732, -9876277, 9898289, -4061429, 20687784, 29350732, 628676, -25183004,
+-20276540, 23000624, 15587510, 19998442, 5224828, 4283693, -11648488, -5732171, 2560338, 13582834,
+30652108, -1339493, -59901372, -55728276, -208843, -14478335, 34340948, 34824668, -41064720, -28207198,
+-17876728, 48646948, 43343200, -25210922, 6079526, -32630478, -31304406, 17405892, -14819248, -806917,
+-5354751, -22716082, 15177878, 15392089, 12736189, 50146428, -36352068, -9808095, -2134599, 11946452,
+45974940, -29348048, 27399206, 34248068, 16211891, -68102072, -32190780, 27567784, -22893786, 17476758,
+-8529805, -26146150, 15649250, 9376987, 2275259, -9487583, -50839528, -799401, -4851703, 3909494,
+-10179072, -30798136, 22424024, -17558364, 40705016, -821949, -7288023, 25372520, 12562242, -17175038,
+-5414343, -12000139, 20102058, 41160284, 24771224, -27248346, 3503083, -16824998, 15351824, -14005888,
+-11057930, 7372848, -5215164, 24536612, -22206592, -39060044, 7474317, -11028939, 12473122, 21593484,
+-58884000, -4598300, -14410689, 6877317, 56958244, -11428908, -48462264, -6626598, 34525096, 23938000,
+-28382218, -2351495, 19512036, 5656472, 24953224, -38619272, -28532004, 33155536, -33268280, -61436824,
+-25690884, -2363306, 71584760, -14144401, -46699180, 27497454, -52123188, 96954592, -65148212, 17975512,
+-662499, 21985400, 54570780, 16953846, 7826504, -30975304, -12322798, -30965640, -36223216, -12690018,
+7518341, 20447802, 27974732, -3561065, 16392280, 19014894, -16675747, -34886408, 18509162, 6059125,
+-27693412, -10004589, 26817238, -9550397, -2734821, 23784992, 13848585, 10272488, 3591130, 13273596,
+-13037373, -32517198, -13727252, 8536784, -12943421, -8137353, 11839614, 186294, -22402012, 22851910,
+5153961, -21481278, 2734821, -5682779, 20230906, 10570988, -8144332, 8792335, -12475269, -28737090,
+3693135, 6069863, -2647847, -716723, 5782637, -13061532, 3674882, -11348377, 6039798, 19066434,
+-2438468, 7746511, 8847633, -8804146, 11811, -20258824, 5927055, 9929964, -35408248, 18605262,
+-22531936, 4983236, -30602, -2695629, 9792525, 52880176, -1740536, -1939715, -14533632, -14657113,
+11131481, -800475, 9673340, 15032, -4960151, -7154879, 3830574, -9949829, 10196789, -9370008,
+14754823, -11852499, 8711267, -10042170, -1944547, -1704565, -8969502, -7164006, 2375117, -4259534,
+-2626909, -147640, -6651294, 853625, -1071594, 2160906, -1317481, 4009889, -13612362, 12661564,
+-4438312, -4183298, 9963787, -7733626, 864362, -9644349, -8092792, 6164889, 5782100, -6749541,
+-4010426, 2774549, -61203, -11739219, 3402688, 2150168, 377420, 7840463, -2483028, -3218004,
+-2787971, -7925289, -1796907, 8607651, -8596914, 2496450, -3970161, -896038, 955093, -2487860,
+2343442, 340913, 6240051, -8239358, -462783, 5982353, -10901701, 7037841, -4984310, 938987,
+4662724, -545998, -5709086, -24478092, -42501924, 16049756, 134322416, 34163244, 73883640, -2470680,
+-72785200, -23049478, -71622336, -60389388, -21911850, -14198625, -5364951, 40834940, 53819700, 72138808,
+90137944, 39562016, -23548768, -41426572, -89251568, -83993992, -34807488, -27720256, -19171124, 37035504,
+49444736, 30291330, 45829984, 55897388, 18417894, 15738908, 10048613, -28110560, -13481902, -19953882,
+-45024680, -24102282, -33504504, -48665200, -27053998, 6747394, 5067525, 28192166, 66602056, 46371688,
+37863356, 37757056, 11269457, 3476776, -3898757, -18456548, -27495844, -33911988, -49654116, -43030204,
+-24505472, -6794102, -16672526, 14811195, 25896506, 22907208, 37986300, 43193948, 27386858, 25731150,
+24462524, -2268280, -10924786, -4161823, -33043868, -26174604, -5361193, -24996172, -26481694, -13142600,
+-12840342, 2990908, 864899, },
},
{
{
-576599,
-426276, -2568927, 2670933, -3614215, 389768, -1221918, -2304250, -4488778, -1504312, -48318,
-806380, 5398774, 2911988, -2048699, 37044, -506806, -76773, 327491, 152471, 1750199,
--247497, 1137093, -858457, -6593312, -2307471, -1106491, 323733, 3984656, -2474438, 271657,
--373662, -129386, -1427003, 2348273, 466004, -1072131, 2851858, -2022930, 1081795, 1283658,
--2902861, 2544768, -1269700, 164283, 659278, 910533, 1276679, -1180042, -2157684, -705985,
--1498944, 1106491, -1358283, 297963, 1719061, 4559645, -1600412, -3562675, -1049583, 3362423,
-3476239, 2158758, -106837, 1025423, -1277216, -1781875, -1467805, -4255239, 2999498, -606664,
-752156, 80531, -2029909, 737661, 863288, 3195993, 3035468, -2722473, -571768, 4541928,
-1391033, -2224793, 407485, -2465848, -2342368, -1739999, -4069482, -1302449, 2369211, -108448,
-1283122, -585189, -1199370, -1017907, -549219, 3452617, -2185602, 302258, -210990, 241055,
-2610266, 7516, 1780264, 5945846, 4508642, 4684736, 2327336, 1140851, -787053, -5305895,
-2176475, -1915019, 3427921, 1334661, -1871532, 1738925, -2445984, -4578972, -1471563, -1701344,
--4460324, 301721, -561030, -519691, -2088428, 400506, 4631586, 2174864, 3155727, 74625,
-1953673, -1683627, -100932, 2553895, -1957968, 1758789, -2421288, -2499134, 350040, 5602248,
-3700651, 2250026, -920197, 1077500, 770947, 493921, -735513, -1899986, -2858838, -2107218,
-578747, -1760937, 2013266, 1010391, -3445638, 8136816, -172336, 465467, -865436, -4341138,
-3179350, -2284923, -2164127, -5063230, -3884798, -1674500, 3096672, 4430796, -933082, 2594697,
--1062468, 4801237, 5011153, -10143102, 1803886, -25233, -1034013, 3330747, 5309654, -1738925,
--840203, 18790, -394600, -2656437, 2037425, -2683818, -2117419, -317828, 2602750, -1635846,
--5759015, -2642479, -3951907, 319975, 234613, -5170067, -714038, -2343442, 917512, -306553,
--896038, 1069984, -1824287, 1529008, -2855617, 2456185, 3700651, 5745056, 2284386, -2814814,
-1930051, 2263448, -1153199, -6982006, 201863, 3236258, -2964064, 1728724, -4188130, -363998,
--2803540, -7191923, -2428267, -3968550, 1355599, 2103460, -2711735, 603980, -1399086, 6582038,
-1921461, -9176198, 3313567, 4554276, 1787780, -893353, 2450279, -5811628, 884763, 2416456,
--1201517, 2330020, -316754, 2860985, 787590, -3970697, 2484102, 3395172, 3538516, -1138166,
-1719061, 1771137, 1373316, -10408316, 1493038, -4509179, -1248225, -1592896, 2442763, 970126,
--8347269, -3165391, -1844152, -1741072, 3440806, -3274913, -5841693, 1292785, 2742874, 1535988,
--5820755, -2908230, 1884954, -5678484, -435939, -6260989, 898722, 2812130, -3122441, -1129576,
-3479461, 4253628, -10362682, -955630, -2891587, 2939368, 1262184, 313533, 868120, -3125126,
-2603287, 2061584, -8079371, 5946382, -874563, 1278827, -4155381, -1971390, -3529926, -706522,
-838056, -3515968, -4534949, 3643206, -1478543, -4601521, -3852586, -3643206, -1915555, 6542309,
--2126009, 682900, -5265630, 5601711, 637266, -4202626, -794569, 3143379, -6806450, 2152852,
--1830730, 1347546, 1393180, -3474092, -2036351, -8637716, -2000918, -9698036, 1485522, 1884417,
--750009, -1533303, -596464, 1178432, -3428995, -6988986, -2857764, -2732136, -762357, 2218888,
--1270237, 3754338, 2068564, 2813741, -3884798, -499827, 89657, -3760781, 1272384, 2480344,
-35970, -2018635, -3777961, -4068408, 2874407, 3526705, 208843, 7258495, 6332393, -5710696,
--1024350, -295279, -5343476, -6850473, 10251550, -490163, 667331, 2754685, -5857799, -2419677,
--3624953, 9375914, 3104188, 112206, -7253126, -6585259, 1395328, -2997887, 5698348, -3098819,
-813359, 772557, -11395622, 5709622, 3225521, 5823439, -3121368, 3198677, 3330747, 5987185,
-1416266, -11353746, 2842732, 508954, 4523138, 8273718, 438087, 3607236, 3144990, -6784975,
-2397666, 657130, 949188, -1822140, -939524, 4256850, 2807298, 205622, -4158602, -13959,
--1980517, -2117419, 6819871, 3189550, -278099, -867047, -8224863, -7013145, -8079907, 2203855,
-2192044, -8326868, 600759, 628139, -8301635, 587337, 1286343, -1040456, 9549323, -1101122,
--4692252, -1098438, 5480915, -364535, -8509941, 9339943, 4780299, -5773510, 4486630, 1013612,
-847182, -22549, 495532, -2138894, -4301410, -3878892, 7347616, -304943, -2210298, -128312,
-5244155, -4668093, -8787503, 621697, 1854352, 2030446, -7778186, -3353833, 2665564, 3497177,
-13082470, 3983582, 10480794, -11529303, 381715, -5655398, 122943, 3924526, 4379793, -5884642,
-2545305, -3374771, -3113315, -4063039, -6793565, -906775, -15923591, -67109, 5186710, -613643,
--1132798, 1833951, -8377871, 3022046, -7990787, -2412698, 8127152, 1752884, 2772402, 292595,
-2357400, 7074885, 6259915, 12253542, 6262063, -9082245, -816044, 10344429, -1483911, -7379828,
--1190780, 1063004, -3476776, 6973953, 5027259, -5774584, -1780264, 6696928, 6937983, -2371359,
--4517232, 11220602, -4647692, -14835891, -10191957, 3421478, -15141370, -175557, -4611721, 197032,
--1522029, -4086662, 5487358, 1726040, -1654636, -4814122, 4075924, -2857764, 7683697, 5514738,
--2581812, -5276904, 547071, 1992328, 1015223, -12938589, 6176700, -1252520, 3337727, 4118874,
-7020661, 1412507, -6019934, 8128763, -3018825, 3519726, -3651259, 2893197, -519691, -15262166,
--3090766, -2782065, -1755031, 816044, -3614215, -2717104, 2006824, 3066070, 1119376, 7887171,
-3720516, -8137353, -630286, -263604, -4496831, 9071508, -5681705, -5723581, 9764608, 10063108,
--1404991, -461172, -6596533, 1976759, 1256278, -3744675, 1554778, 6043556, 3782256, 7328288,
--2138357, -6502581, 3540664, 454730, 1593970, -7711077, -4044786, -4748623, 1382980, 3624953,
-1159104, 562104, 7036767, 8331700, 890132, -4845797, 4582193, 3505230, -6826851, 185220,
-475668, -1459752, 37044, -943819, 4516158, -1455994, -5105106, 1146219, 5825587, 1988570,
-2260227, 5105106, -10878615, -6905771, 4679367, -2847563, -10142028, 5048734, -5184563, -4986457,
-6962679, -2268280, -1963337, -1894081, 1987496, 4740570, 2837363, 2449205, 3005940, -4355634,
--2215130, -1076963, 6300180, 2902324, -10365904, 3177739, 3569655, -4655208, 10250476, 8975945,
-5189394, 167504, -3376918, -2533494, 788663, -3291556, -3487514, -6322192, 1140851, -7186554,
-5344550, 1810329, 301721, 971200, 2927020, 2197950, 5690295, 8401493, -3006477, -13608067,
--2137283, -9288404, 3377455, 1194001, -12023224, 4371740, -4942971, 15304042, 5270462, -9693204,
--170725, 9763534, 5235029, -7982734, -4645007, 10268193, 5964636, -7008313, 8793409, -7155953,
--9574019, 1656247, -14560476, 8997956, 9350681, -1887638, -8943196, -1195075, -210453, 2853469,
-46171, -8825084, -6372658, 93952, -10411538, -89657, -24570434, -7879655, -2787434, -13593035,
--4677757, -2965138, -5873905, -4716948, 3228205, -6651294, -12305618, 3104188, 7726646, -12761958,
--3487514, 3681861, 6293738, 10645076, 6897181, 6176163, 6971806, 2309619, 12376485, -7630547,
--3224447, 2383170, -6219650, 2079838, 3440269, 6233072, 762357, 10351945, 2130304, 2324114,
-7227893, -3557844, -6426882, -215285, -9797357, -6518150, -11300059, -827855, -683437, -15031312,
-5097590, -7038378, 2797634, -14260365, 1439351, -10920491, 15392089, 308701, -14179298, 16205448,
-20204600, 5201743, -7148973, -5677410, 5009543, -2432562, -993748, 5324686, -10102837, 5539971,
--10417443, 4345970, -4303021, -7037841, 2274722, 6872485, 1439888, 6320045, -3398930, 10088878,
--7736310, -7915625, -19512036, -4769561, -9922985, -24624122, 6496675, -14338748, -8093329, -11621645,
-3515968, -22201760, 6274411, 1457068, -3770445, -812286, -5854041, -2543695, 5688684, -7770670,
--4862440, -26844, 4456566, -6829535, -39192, 7171522, -11527692, -3081639, 7486665, -6963753,
-83752, -235686, -1398549, 9849971, -8362302, 5733782, -3517578, 7963406, 9234180, -9144522,
--11291469, 10786810, -645856, 2130304, 3456375, 715649, -1964948, 5955509, -2791192, -13961328,
-4172561, 2508261, -11236171, -1605244, -3607236, 6841346, 9328669, 4007741, 2141578, -3703336,
--7715372, 8322573, 6070937, 7408819, 258772, -12438225, -1979980, -2112050, -4316979, -3192235,
--120259, -5569499, 29155312, 17494476, 741419, -8950175, -22771380, -2285460, 10030896, -4449049,
--9411884, -16320339, -1339493, -3149822, 193274, -5275294, 5043366, 398358, 14282914, 6296422,
--6477348, 79457, -2966212, 1632088, -3362423, 3562675, 8754754, -10094784, 1743220, -5854578,
-3925063, -3997541, -8049843, -14578730, -1503775, 9274445, 2643552, -1284195, 2950643, -499290,
-8041790, 13735305, -4788889, -2327336, -15371688, -15771657, 4364761, 3133716, -7116761, -5301064,
--13798119, -8654896, 5299990, -1014149, -56371, 1477469, -1104880, 7050726, 3564823, -10407780,
-513785, -9379672, -789200, -4625680, -3005940, 11824582, 22711788, 37944964, 1797444, 12919798,
--10561325, -13121662, -19078244, 100932, 1329292, 5330592, 6788733, -679679, 387621, 10646687,
-18181134, -9078487, 191126, 3296924, -14543296, -31675, -9337796, -9365713, 13994614, -4245575,
--3330747, -7613367, 16042777, 13802414, 133681, 22785876, 2716030, 6997576, 5181341, -6573448,
--7374996, -12123082, -6176163, 2627446, 223338, 10117332, 906775, -1292785, -1775432, 7101729,
--10416906, -25845502, -8919573, 7409893, 2449742, -2270964, -7584912, 298500, -12299176, -2010045,
--11210938, -926639, -1377074, -8074539, 7621420, 3639985, 14444512, -12055973, 22356916, 5887327,
--4383551, -8023536, -4118874, 3431679, 12825309, -4046933, 7275138, -11456825, 9070434, -10382547,
--11839614, 11497627, -16906066, 10976326, 8870181, 17846662, -18449032, 13931800, -2231773, 12599287,
-4081830, -18310520, -4270808, -3051038, 4175245, 1416266, -12616466, -16619376, -34434364, -10403485,
--20273856, 5743445, -1049046, -6732361, -10108742, -9365176, -8718247, -9168145, -9249212, 1091459,
--7568806, -1199370, -16290811, -24635396, 30208116, -9313637, 16297253, -2994129, 4090956, 5397164,
-8706436, 6010807, -1715303, -329102, -13279502, -2787434, -3298535, -8628589, -13932337, 5564667,
--1746978, 19637128, -13658533, 577136, 26663694, -6243809, -22559852, -6953552, 648003, -9853192,
-15475304, 7519414, -8904541, 6696391, 8164733, -4864588, -476741, 4622996, 10188736, 20401,
--10709501, -9739375, 12202002, 9504763, -7032472, -13777718, 8690866, 11229729, -9971840, -12183748,
-8458938, -15539192, 30642982, 7696582, -3367254, 2401424, 6657200, 3065533, -6860137, 2113661,
-126165, 12905303, 8207683, -12880070, -53150, 4782446, 3566970, -8479339, 20260434, 14336064,
-29196114, 16144245, 10749766, 4156455, -25876104, -2235531, 3269544, -15278272, -4284230, 28854128,
-1948305, -17043504, -16910896, 14802068, -23213762, -6208375, 641024, 5824513, 2234994, -4699231,
-7004018, -10699300, -474594, -2493229, -6999186, -1871532, -5056250, -15414101, 7310035, -13460428,
-6992744, 6216429, 8198019, 1008780, 5173825, -6052146, 23422604, 2555506, -26431766, -23288386,
-1236951, 9335648, 18743238, -7315940, -16360604, -7729331, -3060701, 1253057, 10434623, 1480690,
--10274636, 25467546, -33842196, -6595459, 4784057, -23910082, -13244069, -7295002, 1691680, -38124816,
--19223200, 24809878, -12027519, 6167036, -10893648, -31060666, -13940390, 13400298, -7182259, 3243237,
-16533477, -8024610, -45746232, -13909788, 4266513, 11550241, 14556181, 10052908, 13443785, 19614578,
-39966280, -23671176, 17675402, -7271917, 910533, -7358353, -29895120, -25263534, -2871723, -3147674,
-8375723, 10621454, 17780628, -6822019, 1088774, -10067940, 1702418, -3245922, 1483911, 14904073,
-10575820, 3784403, 14491220, 13387950, -24932286, 11393474, -13763760, -21455510, -4079145, 10838350,
-5400922, -15119359, 6161131, -270583, 11300059, -2806761, -24019068, -20461762, -19561966, -23311472,
-4733054, 15697032, -1323924, 62054760, -39847632, -33643552, 21417392, -7752953, -10648298, -6489159,
--1202054, -1515587, -36814312, 1852742, -307090, 3020436, 32759864, -4577362, 13476534, 8974334,
-17579302, 46477452, -14698452, 59146532, 21228950, -6231998, 9808095, -28056336, 10145250, 45107356,
-1197222, 47066936, 24713778, -2812130, -18265422, 53070764, 7853885, -8909910, 6749541, -12069395,
--3678640, -1810866, -3384434, 6696928, 14672682, 10308458, 1815161, 6800007, -10797548, -10308458,
-3062312, -3153043, 17273822, 18901078, 11863237, -4871567, 1008780, -22999550, -14625437, -4273493,
--15989090, -24866786, -15030775, 11857331, -14679661, -43841952, -20533164, 13428752, -17986786, -12460774,
-347355, -3163780, 20338280, 30427158, 39557184, -21008296, 10999411, -159988, 949725, -8400419,
--26758720, -52402360, -35065724, 18550500, -35558036, -18063558, 9101036, 18278844, -13524315, 20663624,
-57148836, 12825309, 10575283, -42776264, -59151900, -11598022, -18915036, -29830696, -9649181, -24235426,
-17899276, 13205414, 51779052, 25865904, -11722576, 24396488, 47579112, -25194278, 35998268, 29405494,
--5056787, -7177427, -16615081, 5255430, 32154272, 24382530, 37792492, -16223702, -7772280, -7410429,
--2586644, -9854266, 9761924, -12156368, 27781460, 12315819, -46068356, -19357418, 281320, 7403987,
-19753628, -8935679, -17405892, 5734855, 5427765, -6763500, -8523363, 5819144, -12950400, -19303194,
--8921721, 44029320, 18135500, 8131984, -21690122, -6244883, -18302466, 11804718, 21390010, 8039642,
-1864016, 13442174, -6809134, 28731720, 16319265, 2832531, 9904195, 263604, 55562380, 12676596,
--22348326, 10377178, 10546829, 7035694, 13629542, 2430952, -20830054, 28222230, 7429757, 6529961,
-12206834, 6987912, 2117419, -13962939, 21378200, 24100136, 14084272, 64521148, 47339668, -20717312,
--43521440, -935229, -10394895, -54476828, -8824010, 15217069, 14098767, -11544335, 17974438, 7242926,
--9670119, -19787452, 2855080, -4051228, -32921462, -8946417, -12922483, 3193308, -44731548, -32636920,
--7696582, 21842594, -4861903, -5732708, -27967754, 1224066, 20045150, 1720134, -17558364, -8244727,
--5540508, -8108899, 3231963, 7921531, -24245628, -23918136, 1436667, -347355, 2838974, 40794672,
--27140436, -2116345, -4088272, -38883948, -14437533, -28360206, -7151658, -2036888, 25125022, 31717796,
-35631048, 11355357, 3696356, -14223321, -36456220, 1702418, 10742250, -11310796, 44191456, 110583056,
-102877888, 15821586, -70785360, -61818000, -27450210, -38696044, 126820184, 80814640, 47431472, 66143032,
--4040491, -34181496, -95428264, -58631136, -25756918, -4387846, 34372088, 73114304, 25682294, -25102474,
-29321204, 9737765, -2684, -48770964, -20568598, 49227304, -34428996, 16020765, -3740917, -7026567,
-10297721, 8564702, 20556250, 41918880, -26620744, -27071178, 3925600, -15255724, 20140712, -28508382,
--20802138, -16903380, -1876901, -2335389, -22662394, 11365020, 32461362, -25901338, -36451388, -20673288,
--11971684, -4016331, 44799192, 5876589, -6209449, -45856292, -17390860, 7320235, 36561444, 20733418,
--12446278, -67496488, -55412596, 50172196, 46555836, 52693880, -28476706, -114543560, -28658170, 54802172,
-38034084, 8849780, -19499152, 9488656, -53403624, -26198764, 9536438, -12082280, 7726110, -6976101,
--5096516, 51020992, -44231720, -18067316, 33169496, 33375654, 53492208, 26979910, -91865592, 26121454,
-79257712, 18686866, 33982856, 9258339, -35785668, -59232968, 7531225, 9465571, 6493454, 56499756,
-10609643, -5279052, -35764728, -7241315, -2699387, -9567040, 532576, -7916162, 15588584, 5888400,
--9941239, -2825552, 23676544, -899259, -441308, 1456531, -4886599, -10757819, 13612362, 10362682,
-9380745, -15219753, 8266202, 20402706, 9114994, -2161979, 14487462, -3431142, -15649250, 3409667,
-4801774, -14057428, -13677860, 13371844, 14467597, -14556718, 9330280, 7642895, 386010, -5796595,
-559956, 10060424, -195421, -12837657, 6639483, 6689412, -22204980, 5107790, 16813186, 4858145,
--14513231, 1771137, 10310606, -19349902, 5012764, 8566312, 3464965, -5093831, -18516678, 21256330,
--23694798, -1793149, 21147882, 917512, -5201743, 1510755, -22756348, 10972031, -3159485, 15024869,
-17451526, 53689776, 4897337, -6723235, -17824652, -12109123, 6505265, -8153996, 7152195, -10828686,
--634581, 8428336, -4597763, 3918621, 4170413, -15010911, 4374424, -4959614, -2988760, -12361990,
-3745212, -3531000, -7475391, -3652333, 6241661, -5392332, -5011153, 7582765, -8114804, 4272419,
-7549479, -14940581, 15086609, -3703336, -17242146, 9380745, 9654013, -8148627, 3230889, 5396090,
--7042673, -6572374, 448287, 1092532, 5209796, -2305324, -476205, -7272990, 7233799, -5654325,
--1418413, 8681740, -9822053, 3144453, -1382443, 219043, -4345433, -6432788, -2187749, 11806328,
--7385197, -2780991, 2429341, 2712272, 913754, -6757594, 5953899, -2874944, -5417028, 104153,
--10419054, 16517370, -6411313, 3555696, 4487167, -3083787, 6919729, -26126822, -44335872, 20601348,
-150156896, 23738284, 74683576, -17060684, -77306192, -27226334, -75361640, -48557288, -16295106, -7597261,
-2863133, 44980120, 52636972, 74658880, 72835128, 23971824, -29779692, -46453828, -87045568, -65540128,
--35509716, -12960601, -9552007, 27240294, 44008384, 35148940, 46401216, 46256260, 16094853, 15375983,
-4838818, -32872070, -13176960, -28191092, -50521700, -29530048, -29841432, -42591580, -9965935, 20694226,
-14528801, 44529684, 56864292, 30540438, 37598144, 29419990, -4888210, -755377, -3547106, -30524870,
--39058968, -33587180, -52185464, -43242268, -16342887, -2112050, 5301601, 36046048, 31852014, 32013076,
-38854420, 30122216, 9268539, 19175956, 9355513, -11183021, -6426882, -20983600, -45847164, -26555246,
--26025354, -34526168, -16361141, -7961796, -8920647, 12223477, 751619, 0, 0, 0,
-0, 0, 0, },
+426276, -2568927, 2670933, -3614215, 389768, -1221918, -2304250, -4488778, -1504312, -48318,
+806380, 5398774, 2911988, -2048699, 37044, -506806, -76773, 327491, 152471, 1750199,
+-247497, 1137093, -858457, -6593312, -2307471, -1106491, 323733, 3984656, -2474438, 271657,
+-373662, -129386, -1427003, 2348273, 466004, -1072131, 2851858, -2022930, 1081795, 1283658,
+-2902861, 2544768, -1269700, 164283, 659278, 910533, 1276679, -1180042, -2157684, -705985,
+-1498944, 1106491, -1358283, 297963, 1719061, 4559645, -1600412, -3562675, -1049583, 3362423,
+3476239, 2158758, -106837, 1025423, -1277216, -1781875, -1467805, -4255239, 2999498, -606664,
+752156, 80531, -2029909, 737661, 863288, 3195993, 3035468, -2722473, -571768, 4541928,
+1391033, -2224793, 407485, -2465848, -2342368, -1739999, -4069482, -1302449, 2369211, -108448,
+1283122, -585189, -1199370, -1017907, -549219, 3452617, -2185602, 302258, -210990, 241055,
+2610266, 7516, 1780264, 5945846, 4508642, 4684736, 2327336, 1140851, -787053, -5305895,
+2176475, -1915019, 3427921, 1334661, -1871532, 1738925, -2445984, -4578972, -1471563, -1701344,
+-4460324, 301721, -561030, -519691, -2088428, 400506, 4631586, 2174864, 3155727, 74625,
+1953673, -1683627, -100932, 2553895, -1957968, 1758789, -2421288, -2499134, 350040, 5602248,
+3700651, 2250026, -920197, 1077500, 770947, 493921, -735513, -1899986, -2858838, -2107218,
+578747, -1760937, 2013266, 1010391, -3445638, 8136816, -172336, 465467, -865436, -4341138,
+3179350, -2284923, -2164127, -5063230, -3884798, -1674500, 3096672, 4430796, -933082, 2594697,
+-1062468, 4801237, 5011153, -10143102, 1803886, -25233, -1034013, 3330747, 5309654, -1738925,
+-840203, 18790, -394600, -2656437, 2037425, -2683818, -2117419, -317828, 2602750, -1635846,
+-5759015, -2642479, -3951907, 319975, 234613, -5170067, -714038, -2343442, 917512, -306553,
+-896038, 1069984, -1824287, 1529008, -2855617, 2456185, 3700651, 5745056, 2284386, -2814814,
+1930051, 2263448, -1153199, -6982006, 201863, 3236258, -2964064, 1728724, -4188130, -363998,
+-2803540, -7191923, -2428267, -3968550, 1355599, 2103460, -2711735, 603980, -1399086, 6582038,
+1921461, -9176198, 3313567, 4554276, 1787780, -893353, 2450279, -5811628, 884763, 2416456,
+-1201517, 2330020, -316754, 2860985, 787590, -3970697, 2484102, 3395172, 3538516, -1138166,
+1719061, 1771137, 1373316, -10408316, 1493038, -4509179, -1248225, -1592896, 2442763, 970126,
+-8347269, -3165391, -1844152, -1741072, 3440806, -3274913, -5841693, 1292785, 2742874, 1535988,
+-5820755, -2908230, 1884954, -5678484, -435939, -6260989, 898722, 2812130, -3122441, -1129576,
+3479461, 4253628, -10362682, -955630, -2891587, 2939368, 1262184, 313533, 868120, -3125126,
+2603287, 2061584, -8079371, 5946382, -874563, 1278827, -4155381, -1971390, -3529926, -706522,
+838056, -3515968, -4534949, 3643206, -1478543, -4601521, -3852586, -3643206, -1915555, 6542309,
+-2126009, 682900, -5265630, 5601711, 637266, -4202626, -794569, 3143379, -6806450, 2152852,
+-1830730, 1347546, 1393180, -3474092, -2036351, -8637716, -2000918, -9698036, 1485522, 1884417,
+-750009, -1533303, -596464, 1178432, -3428995, -6988986, -2857764, -2732136, -762357, 2218888,
+-1270237, 3754338, 2068564, 2813741, -3884798, -499827, 89657, -3760781, 1272384, 2480344,
+35970, -2018635, -3777961, -4068408, 2874407, 3526705, 208843, 7258495, 6332393, -5710696,
+-1024350, -295279, -5343476, -6850473, 10251550, -490163, 667331, 2754685, -5857799, -2419677,
+-3624953, 9375914, 3104188, 112206, -7253126, -6585259, 1395328, -2997887, 5698348, -3098819,
+813359, 772557, -11395622, 5709622, 3225521, 5823439, -3121368, 3198677, 3330747, 5987185,
+1416266, -11353746, 2842732, 508954, 4523138, 8273718, 438087, 3607236, 3144990, -6784975,
+2397666, 657130, 949188, -1822140, -939524, 4256850, 2807298, 205622, -4158602, -13959,
+-1980517, -2117419, 6819871, 3189550, -278099, -867047, -8224863, -7013145, -8079907, 2203855,
+2192044, -8326868, 600759, 628139, -8301635, 587337, 1286343, -1040456, 9549323, -1101122,
+-4692252, -1098438, 5480915, -364535, -8509941, 9339943, 4780299, -5773510, 4486630, 1013612,
+847182, -22549, 495532, -2138894, -4301410, -3878892, 7347616, -304943, -2210298, -128312,
+5244155, -4668093, -8787503, 621697, 1854352, 2030446, -7778186, -3353833, 2665564, 3497177,
+13082470, 3983582, 10480794, -11529303, 381715, -5655398, 122943, 3924526, 4379793, -5884642,
+2545305, -3374771, -3113315, -4063039, -6793565, -906775, -15923591, -67109, 5186710, -613643,
+-1132798, 1833951, -8377871, 3022046, -7990787, -2412698, 8127152, 1752884, 2772402, 292595,
+2357400, 7074885, 6259915, 12253542, 6262063, -9082245, -816044, 10344429, -1483911, -7379828,
+-1190780, 1063004, -3476776, 6973953, 5027259, -5774584, -1780264, 6696928, 6937983, -2371359,
+-4517232, 11220602, -4647692, -14835891, -10191957, 3421478, -15141370, -175557, -4611721, 197032,
+-1522029, -4086662, 5487358, 1726040, -1654636, -4814122, 4075924, -2857764, 7683697, 5514738,
+-2581812, -5276904, 547071, 1992328, 1015223, -12938589, 6176700, -1252520, 3337727, 4118874,
+7020661, 1412507, -6019934, 8128763, -3018825, 3519726, -3651259, 2893197, -519691, -15262166,
+-3090766, -2782065, -1755031, 816044, -3614215, -2717104, 2006824, 3066070, 1119376, 7887171,
+3720516, -8137353, -630286, -263604, -4496831, 9071508, -5681705, -5723581, 9764608, 10063108,
+-1404991, -461172, -6596533, 1976759, 1256278, -3744675, 1554778, 6043556, 3782256, 7328288,
+-2138357, -6502581, 3540664, 454730, 1593970, -7711077, -4044786, -4748623, 1382980, 3624953,
+1159104, 562104, 7036767, 8331700, 890132, -4845797, 4582193, 3505230, -6826851, 185220,
+475668, -1459752, 37044, -943819, 4516158, -1455994, -5105106, 1146219, 5825587, 1988570,
+2260227, 5105106, -10878615, -6905771, 4679367, -2847563, -10142028, 5048734, -5184563, -4986457,
+6962679, -2268280, -1963337, -1894081, 1987496, 4740570, 2837363, 2449205, 3005940, -4355634,
+-2215130, -1076963, 6300180, 2902324, -10365904, 3177739, 3569655, -4655208, 10250476, 8975945,
+5189394, 167504, -3376918, -2533494, 788663, -3291556, -3487514, -6322192, 1140851, -7186554,
+5344550, 1810329, 301721, 971200, 2927020, 2197950, 5690295, 8401493, -3006477, -13608067,
+-2137283, -9288404, 3377455, 1194001, -12023224, 4371740, -4942971, 15304042, 5270462, -9693204,
+-170725, 9763534, 5235029, -7982734, -4645007, 10268193, 5964636, -7008313, 8793409, -7155953,
+-9574019, 1656247, -14560476, 8997956, 9350681, -1887638, -8943196, -1195075, -210453, 2853469,
+46171, -8825084, -6372658, 93952, -10411538, -89657, -24570434, -7879655, -2787434, -13593035,
+-4677757, -2965138, -5873905, -4716948, 3228205, -6651294, -12305618, 3104188, 7726646, -12761958,
+-3487514, 3681861, 6293738, 10645076, 6897181, 6176163, 6971806, 2309619, 12376485, -7630547,
+-3224447, 2383170, -6219650, 2079838, 3440269, 6233072, 762357, 10351945, 2130304, 2324114,
+7227893, -3557844, -6426882, -215285, -9797357, -6518150, -11300059, -827855, -683437, -15031312,
+5097590, -7038378, 2797634, -14260365, 1439351, -10920491, 15392089, 308701, -14179298, 16205448,
+20204600, 5201743, -7148973, -5677410, 5009543, -2432562, -993748, 5324686, -10102837, 5539971,
+-10417443, 4345970, -4303021, -7037841, 2274722, 6872485, 1439888, 6320045, -3398930, 10088878,
+-7736310, -7915625, -19512036, -4769561, -9922985, -24624122, 6496675, -14338748, -8093329, -11621645,
+3515968, -22201760, 6274411, 1457068, -3770445, -812286, -5854041, -2543695, 5688684, -7770670,
+-4862440, -26844, 4456566, -6829535, -39192, 7171522, -11527692, -3081639, 7486665, -6963753,
+83752, -235686, -1398549, 9849971, -8362302, 5733782, -3517578, 7963406, 9234180, -9144522,
+-11291469, 10786810, -645856, 2130304, 3456375, 715649, -1964948, 5955509, -2791192, -13961328,
+4172561, 2508261, -11236171, -1605244, -3607236, 6841346, 9328669, 4007741, 2141578, -3703336,
+-7715372, 8322573, 6070937, 7408819, 258772, -12438225, -1979980, -2112050, -4316979, -3192235,
+-120259, -5569499, 29155312, 17494476, 741419, -8950175, -22771380, -2285460, 10030896, -4449049,
+-9411884, -16320339, -1339493, -3149822, 193274, -5275294, 5043366, 398358, 14282914, 6296422,
+-6477348, 79457, -2966212, 1632088, -3362423, 3562675, 8754754, -10094784, 1743220, -5854578,
+3925063, -3997541, -8049843, -14578730, -1503775, 9274445, 2643552, -1284195, 2950643, -499290,
+8041790, 13735305, -4788889, -2327336, -15371688, -15771657, 4364761, 3133716, -7116761, -5301064,
+-13798119, -8654896, 5299990, -1014149, -56371, 1477469, -1104880, 7050726, 3564823, -10407780,
+513785, -9379672, -789200, -4625680, -3005940, 11824582, 22711788, 37944964, 1797444, 12919798,
+-10561325, -13121662, -19078244, 100932, 1329292, 5330592, 6788733, -679679, 387621, 10646687,
+18181134, -9078487, 191126, 3296924, -14543296, -31675, -9337796, -9365713, 13994614, -4245575,
+-3330747, -7613367, 16042777, 13802414, 133681, 22785876, 2716030, 6997576, 5181341, -6573448,
+-7374996, -12123082, -6176163, 2627446, 223338, 10117332, 906775, -1292785, -1775432, 7101729,
+-10416906, -25845502, -8919573, 7409893, 2449742, -2270964, -7584912, 298500, -12299176, -2010045,
+-11210938, -926639, -1377074, -8074539, 7621420, 3639985, 14444512, -12055973, 22356916, 5887327,
+-4383551, -8023536, -4118874, 3431679, 12825309, -4046933, 7275138, -11456825, 9070434, -10382547,
+-11839614, 11497627, -16906066, 10976326, 8870181, 17846662, -18449032, 13931800, -2231773, 12599287,
+4081830, -18310520, -4270808, -3051038, 4175245, 1416266, -12616466, -16619376, -34434364, -10403485,
+-20273856, 5743445, -1049046, -6732361, -10108742, -9365176, -8718247, -9168145, -9249212, 1091459,
+-7568806, -1199370, -16290811, -24635396, 30208116, -9313637, 16297253, -2994129, 4090956, 5397164,
+8706436, 6010807, -1715303, -329102, -13279502, -2787434, -3298535, -8628589, -13932337, 5564667,
+-1746978, 19637128, -13658533, 577136, 26663694, -6243809, -22559852, -6953552, 648003, -9853192,
+15475304, 7519414, -8904541, 6696391, 8164733, -4864588, -476741, 4622996, 10188736, 20401,
+-10709501, -9739375, 12202002, 9504763, -7032472, -13777718, 8690866, 11229729, -9971840, -12183748,
+8458938, -15539192, 30642982, 7696582, -3367254, 2401424, 6657200, 3065533, -6860137, 2113661,
+126165, 12905303, 8207683, -12880070, -53150, 4782446, 3566970, -8479339, 20260434, 14336064,
+29196114, 16144245, 10749766, 4156455, -25876104, -2235531, 3269544, -15278272, -4284230, 28854128,
+1948305, -17043504, -16910896, 14802068, -23213762, -6208375, 641024, 5824513, 2234994, -4699231,
+7004018, -10699300, -474594, -2493229, -6999186, -1871532, -5056250, -15414101, 7310035, -13460428,
+6992744, 6216429, 8198019, 1008780, 5173825, -6052146, 23422604, 2555506, -26431766, -23288386,
+1236951, 9335648, 18743238, -7315940, -16360604, -7729331, -3060701, 1253057, 10434623, 1480690,
+-10274636, 25467546, -33842196, -6595459, 4784057, -23910082, -13244069, -7295002, 1691680, -38124816,
+-19223200, 24809878, -12027519, 6167036, -10893648, -31060666, -13940390, 13400298, -7182259, 3243237,
+16533477, -8024610, -45746232, -13909788, 4266513, 11550241, 14556181, 10052908, 13443785, 19614578,
+39966280, -23671176, 17675402, -7271917, 910533, -7358353, -29895120, -25263534, -2871723, -3147674,
+8375723, 10621454, 17780628, -6822019, 1088774, -10067940, 1702418, -3245922, 1483911, 14904073,
+10575820, 3784403, 14491220, 13387950, -24932286, 11393474, -13763760, -21455510, -4079145, 10838350,
+5400922, -15119359, 6161131, -270583, 11300059, -2806761, -24019068, -20461762, -19561966, -23311472,
+4733054, 15697032, -1323924, 62054760, -39847632, -33643552, 21417392, -7752953, -10648298, -6489159,
+-1202054, -1515587, -36814312, 1852742, -307090, 3020436, 32759864, -4577362, 13476534, 8974334,
+17579302, 46477452, -14698452, 59146532, 21228950, -6231998, 9808095, -28056336, 10145250, 45107356,
+1197222, 47066936, 24713778, -2812130, -18265422, 53070764, 7853885, -8909910, 6749541, -12069395,
+-3678640, -1810866, -3384434, 6696928, 14672682, 10308458, 1815161, 6800007, -10797548, -10308458,
+3062312, -3153043, 17273822, 18901078, 11863237, -4871567, 1008780, -22999550, -14625437, -4273493,
+-15989090, -24866786, -15030775, 11857331, -14679661, -43841952, -20533164, 13428752, -17986786, -12460774,
+347355, -3163780, 20338280, 30427158, 39557184, -21008296, 10999411, -159988, 949725, -8400419,
+-26758720, -52402360, -35065724, 18550500, -35558036, -18063558, 9101036, 18278844, -13524315, 20663624,
+57148836, 12825309, 10575283, -42776264, -59151900, -11598022, -18915036, -29830696, -9649181, -24235426,
+17899276, 13205414, 51779052, 25865904, -11722576, 24396488, 47579112, -25194278, 35998268, 29405494,
+-5056787, -7177427, -16615081, 5255430, 32154272, 24382530, 37792492, -16223702, -7772280, -7410429,
+-2586644, -9854266, 9761924, -12156368, 27781460, 12315819, -46068356, -19357418, 281320, 7403987,
+19753628, -8935679, -17405892, 5734855, 5427765, -6763500, -8523363, 5819144, -12950400, -19303194,
+-8921721, 44029320, 18135500, 8131984, -21690122, -6244883, -18302466, 11804718, 21390010, 8039642,
+1864016, 13442174, -6809134, 28731720, 16319265, 2832531, 9904195, 263604, 55562380, 12676596,
+-22348326, 10377178, 10546829, 7035694, 13629542, 2430952, -20830054, 28222230, 7429757, 6529961,
+12206834, 6987912, 2117419, -13962939, 21378200, 24100136, 14084272, 64521148, 47339668, -20717312,
+-43521440, -935229, -10394895, -54476828, -8824010, 15217069, 14098767, -11544335, 17974438, 7242926,
+-9670119, -19787452, 2855080, -4051228, -32921462, -8946417, -12922483, 3193308, -44731548, -32636920,
+-7696582, 21842594, -4861903, -5732708, -27967754, 1224066, 20045150, 1720134, -17558364, -8244727,
+-5540508, -8108899, 3231963, 7921531, -24245628, -23918136, 1436667, -347355, 2838974, 40794672,
+-27140436, -2116345, -4088272, -38883948, -14437533, -28360206, -7151658, -2036888, 25125022, 31717796,
+35631048, 11355357, 3696356, -14223321, -36456220, 1702418, 10742250, -11310796, 44191456, 110583056,
+102877888, 15821586, -70785360, -61818000, -27450210, -38696044, 126820184, 80814640, 47431472, 66143032,
+-4040491, -34181496, -95428264, -58631136, -25756918, -4387846, 34372088, 73114304, 25682294, -25102474,
+29321204, 9737765, -2684, -48770964, -20568598, 49227304, -34428996, 16020765, -3740917, -7026567,
+10297721, 8564702, 20556250, 41918880, -26620744, -27071178, 3925600, -15255724, 20140712, -28508382,
+-20802138, -16903380, -1876901, -2335389, -22662394, 11365020, 32461362, -25901338, -36451388, -20673288,
+-11971684, -4016331, 44799192, 5876589, -6209449, -45856292, -17390860, 7320235, 36561444, 20733418,
+-12446278, -67496488, -55412596, 50172196, 46555836, 52693880, -28476706, -114543560, -28658170, 54802172,
+38034084, 8849780, -19499152, 9488656, -53403624, -26198764, 9536438, -12082280, 7726110, -6976101,
+-5096516, 51020992, -44231720, -18067316, 33169496, 33375654, 53492208, 26979910, -91865592, 26121454,
+79257712, 18686866, 33982856, 9258339, -35785668, -59232968, 7531225, 9465571, 6493454, 56499756,
+10609643, -5279052, -35764728, -7241315, -2699387, -9567040, 532576, -7916162, 15588584, 5888400,
+-9941239, -2825552, 23676544, -899259, -441308, 1456531, -4886599, -10757819, 13612362, 10362682,
+9380745, -15219753, 8266202, 20402706, 9114994, -2161979, 14487462, -3431142, -15649250, 3409667,
+4801774, -14057428, -13677860, 13371844, 14467597, -14556718, 9330280, 7642895, 386010, -5796595,
+559956, 10060424, -195421, -12837657, 6639483, 6689412, -22204980, 5107790, 16813186, 4858145,
+-14513231, 1771137, 10310606, -19349902, 5012764, 8566312, 3464965, -5093831, -18516678, 21256330,
+-23694798, -1793149, 21147882, 917512, -5201743, 1510755, -22756348, 10972031, -3159485, 15024869,
+17451526, 53689776, 4897337, -6723235, -17824652, -12109123, 6505265, -8153996, 7152195, -10828686,
+-634581, 8428336, -4597763, 3918621, 4170413, -15010911, 4374424, -4959614, -2988760, -12361990,
+3745212, -3531000, -7475391, -3652333, 6241661, -5392332, -5011153, 7582765, -8114804, 4272419,
+7549479, -14940581, 15086609, -3703336, -17242146, 9380745, 9654013, -8148627, 3230889, 5396090,
+-7042673, -6572374, 448287, 1092532, 5209796, -2305324, -476205, -7272990, 7233799, -5654325,
+-1418413, 8681740, -9822053, 3144453, -1382443, 219043, -4345433, -6432788, -2187749, 11806328,
+-7385197, -2780991, 2429341, 2712272, 913754, -6757594, 5953899, -2874944, -5417028, 104153,
+-10419054, 16517370, -6411313, 3555696, 4487167, -3083787, 6919729, -26126822, -44335872, 20601348,
+150156896, 23738284, 74683576, -17060684, -77306192, -27226334, -75361640, -48557288, -16295106, -7597261,
+2863133, 44980120, 52636972, 74658880, 72835128, 23971824, -29779692, -46453828, -87045568, -65540128,
+-35509716, -12960601, -9552007, 27240294, 44008384, 35148940, 46401216, 46256260, 16094853, 15375983,
+4838818, -32872070, -13176960, -28191092, -50521700, -29530048, -29841432, -42591580, -9965935, 20694226,
+14528801, 44529684, 56864292, 30540438, 37598144, 29419990, -4888210, -755377, -3547106, -30524870,
+-39058968, -33587180, -52185464, -43242268, -16342887, -2112050, 5301601, 36046048, 31852014, 32013076,
+38854420, 30122216, 9268539, 19175956, 9355513, -11183021, -6426882, -20983600, -45847164, -26555246,
+-26025354, -34526168, -16361141, -7961796, -8920647, 12223477, 751619, 0, 0, 0,
+0, 0, 0, },
{
598611,
-333934, 2591476, 2121714, -2348273, -1621887, -504122, 3191698, -3264712, -204011, -1760937,
--4113505, 2080912, -803159, -3930969, -1672890, 3838090, -5396627, -1599339, 4961761, -1509681,
--6172405, 4240207, -550293, -2192044, 1329829, -1729798, 3087008, -1814087, 1402307, -3595425,
-3181497, -461172, -3484292, -361314, -1637456, 1931125, 1603633, -786516, 234076, 488016,
-6812355, 3144453, -887448, 3452080, -1697049, 2784750, 452045, -1193464, -816044, -4350265,
-1185411, -1661616, -3380676, 3061775, 515396, 1702955, 727997, 2112587, -1243930, -1906966,
--3758, 391379, 1242856, -1053341, 2158758, 209380, 346282, -200253, -2683818, -278636,
-1002875, 1946694, 506806, 1073742, 3257733, -1122597, 6152541, -3447785, 1016297, -5133560,
-1427003, 601832, 7850127, -4687420, 2147, -2454574, 3928821, 4049081, -2579128, -463320,
--2216740, -1239635, -2588792, -3184182, 2361695, 802622, -2107218, 4418985, 3992172, 6861747,
--206158, 2617783, 1356136, -83215, -6174016, 1637456, 2571612, -2404645, 1546725, -1763621,
--2088428, -3354906, 1765768, 4394826, 460098, 5122822, -2064806, -399432, 5146445, 2719251,
-432718, -29528, 4894652, 7354595, -5419712, 1251446, -1851668, -814433, -8442295, -2981244,
-3463354, -2609730, 2416993, 1114007, -1196148, -2046015, 1255741, -704912, 2707977, 1418413,
-1306207, 1316408, -4312147, 96637, -2010045, 2585034, 4619774, 2936684, -469225, 4467840,
-271657, 1075889, 187905, 717796, -953483, 3576097, -4402879, -4807142, 278636, -6439767,
-1265942, -2093260, 3185255, -1795833, -4927938, 475668, 5037460, -850404, 275952, 6771016,
-8739722, -3822521, -3852586, -1224066, -6307160, 2643552, 697932, 1500554, -2143189, 3325379,
--4356171, -916439, 3179350, -2619930, -798327, 363998, 5683853, 250182, 4148939, -5414880,
-5338108, -681289, 882079, 3257196, -2779918, 2694555, -1187559, -1472100, 2562485, 3069291,
--401043, 1693828, -6891812, 4111358, 4277788, -7610145, -6412923, -2015950, -5288179, -1699196,
-2238215, 1167694, 2149631, -89657, -1641751, 4364761, -1357747, -82678, -1647120, 796716,
--2582349, 3576097, 1165010, -3395709, -1459752, -1672890, -1506460, -2182380, 4170950, 11210938,
-1996623, -3994320, 5013838, 756451, -3629784, 10229001, -6945499, -9654013, -5862094, -5826123,
--2149094, 2956011, 3387119, -3300146, 4940286, -6359236, -3685082, -723702, 1934883, 1647657,
--2157684, -2483565, 5513665, 1134408, -609885, -3183645, 4044249, -3106872, -962073, 4832,
--610959, -444529, 1404454, 886374, -1151588, 3557844, -1963874, 2158221, -446677, -5844914,
--2589329, -2356863, 5871221, -3470871, -4504884, -7605850, -9179419, -1669132, 86973, -3589519,
-6323266, 834297, 3202972, -2785823, 5384815, 2388002, -3802120, 9260486, -4700305, -4632659,
-236760, 5753646, 8078834, 5969468, 1464047, -3119757, -7357816, 2563559, -724776, 6531572,
-1974611, -2041720, -1029718, 3271691, 1751273, -1172526, -10104984, 1241246, -3427921, 2028835,
-1084479, 7131257, -9335648, -5965173, -6757058, 3391414, 3540664, 4148939, -4725001, 1308354,
--1153199, 197569, -7574712, -7219303, -4615479, -5380521, 8346732, -3700114, -628139, -629213,
-3056406, -1768990, -8104067, 3048890, -3037616, -1614371, 4205847, 2404645, 4774393, -246424,
-2684892, -6451041, -2157684, 4733591, 9067750, 4585415, -116501, -7304129, 5043902, -2768643,
--5555540, 7391102, 2613488, 2116345, -4708895, -3534758, 2958159, -2495913, -2552821, 3519726,
--3156264, 734439, 368293, -6353867, -1049046, -4501663, 5978058, 2138357, -733366, 98784,
--2652142, 2509335, 584652, -1146756, 980326, -7838852, -3604551, 2470680, 1605781, -2611340,
--1188095, -6390375, -15860777, 5310727, 800475, 3974992, 4274566, -3051038, -11190537, 8689793,
-3697430, 8559870, -1523640, 4576288, -37044, -2979097, -147103, -7833484, 9768903, 2310693,
-1007170, -4883378, -2764348, -3264712, 3011846, -4326106, 7554311, 457951, 2701535, 4276177,
-2448131, -328028, 2576444, 2447595, -1537598, 2093260, -8038568, 2320893, 3998615, 4034048,
-7669201, 2765959, -4670240, 2682207, -2190433, 5251135, 1308354, 3886946, 6002217, 1152662,
--845035, 4660040, -2618856, -4559108, -1315334, 3341485, 8322573, -1588064, 1040993, 415538,
-1535451, 1821603, 3934727, 1408212, -1330903, -64425, -1969243, 2326262, 1548873, -4639102,
--3347927, 2057826, 3914863, 3062849, 6272263, -7311645, -2424509, -5419175, 8507793, 4360466,
-15653008, 8999030, 7214472, 11618423, 2611340, 2515777, -7232725, 265751, -13157095, -1797981,
-4462471, 4036196, 1879585, 3470871, 3132105, -2221572, -2234457, 7853885, 6231461, 6211060,
--780610, 1360431, -9451612, -7310035, -3322157, 6357626, 1539746, -591095, 2813741, -4686346,
-192737, -2102923, 6041945, 5631239, 10846940, -439697, 3919158, 4183835, -2066953, -5141076,
-10213969, -5374078, -1639604, 5485210, -19864, 3459059, 7317014, -1628866, 2589329, -6496675,
--15836081, -7825968, -5390721, -1231582, 526134, 275415, -4212826, -7459822, -1923072, -5051419,
-1691143, 883690, 599685, -8390219, -4436701, 7277822, 2014340, 848793, -10572599, -8181376,
-5613523, 2463164, 3462818, -5317707, -242129, -1155883, -7872138, 5893232, -3350611, -568546,
--20921860, -5271536, -7562901, -5447629, 1133335, 6731825, -1121523, 8987756, 5172215, -809601,
--8842801, -4034585, 13834627, 2009508, -7848516, -6190659, -2411087, 6104759, -4689031, -175557,
-4641249, 6670084, 8072928, -8805220, 6024229, 538482, 1891933, 2208150, 3423089, 2520072,
-8084202, -12885, 2629594, -7082938, 9843528, -5037460, -2014340, 1401770, -7723425, 9648644,
--1324461, -19452980, -6136972, -15648713, 1168231, -402653, -4457103, 20802138, -3461207, -10536092,
--3325915, -2692945, 9819906, -1444183, 4766877, 5544803, -3781719, 7112466, 10060961, -5105106,
-3882651, -8856223, 4369056, -3157875, -2485712, 10252087, -3807489, -851477, -4758824, 523986,
--459562, 9727027, -13538811, 2786897, 2670933, -4153234, 1733019, 10252087, 10799695, 4151623,
-3825205, 5311264, -8463770, -1327145, -9028021, -45097, 5690295, 3782793, -1930051, -6942278,
--2335925, 4968204, -9337259, 494458, -690416, 4482335, 8841727, 1036161, -4795868, -3432753,
-9469866, -5877126, -2954938, 5688684, -3405909, -10970420, -4069482, 2806224, 1890859, -4215511,
-1044214, 6122476, 4024921, 5929739, -669478, 4560182, 8050380, -3223910, 4001299, 3815005,
--5534066, 12328167, -11526082, 7244536, 2974802, -15563888, 15233712, -9454297, 2092723, -1297080,
-12095165, -4677757, -8798241, -1301375, -120796, 2796561, 9110163, -7334194, -751619, 1268626,
-52613, -650151, 2075543, -5572183, -1980517, -3473018, -10244571, -7334731, -10450192, 8245801,
--24276766, 13211856, -9476308, -6936909, -11691975, 1117228, -1110786, 1894081, 8920110, -7406134,
--2407866, 6645925, 6621229, -2228551, 2825015, -3470871, -10838350, -1228361, 3264712, -5908265,
-9527311, 1403381, -591632, -5504538, -4821101, 1140314, 14493904, 506269, -1438814, 3768834,
--11543798, -2130841, 4987531, -8212515, 12344810, 7472706, 193810, -3564823, -3297998, -4466229,
--7372848, -9837623, 9046275, 752156, 15560667, 1519882, -14496, -6453725, 2022930, -2350958,
-4158065, 107911, -8484171, -6938520, -8618389, -15611132, -1276142, 14668387, -12517145, -227633,
--13091060, 2971044, 5145908, 4127464, 11356967, -126165, -13212930, 11637214, 487479, -5605469,
--4176856, -10753524, -2292976, -7048578, 7716446, 10859825, -4169876, 9689983, -9464497, -4548371,
-6107981, 2363306, -12665859, 1107028, 15769509, -18212808, 787053, 8955544, 20508468, -8595840,
--5598490, -1978906, 15813533, 16123307, -17029008, -489089, -13150653, -5858336, 8071318, 8709657,
-10726144, 6547678, -2483565, 8034810, -9878962, -4888210, -1254131, -1197759, -14163728, 1500017,
--605590, 18620294, -3124589, 9307731, 1899986, 5618891, 12007118, -7188702, -3597572, -17884244,
-12209518, -15740518, -3117073, 3898220, -2436320, -9007620, -2592550, 2832531, -6838662, 2000918,
--1346472, -1205812, -20648056, -14249091, 732292, -10290205, -14586246, 2803003, -13513578, 4370129,
-8306467, -7611756, 14461692, 3265249, 9133785, 10363756, 2203855, -7305740, -9452686, -10736344,
-5082020, -10249403, 25836376, 10216117, 4825933, 12696460, -4575214, 2373506, -13070659, -17767742,
-11407970, 21990770, 7113540, -472446, -21630530, 26304528, 4334159, 2921652, 4316442, 628676,
-5324149, 1163399, -3306051, -522375, 7262790, -4491999, 9005473, 1268089, -6105833, -9603547,
--1949915, 8086887, -1722282, 2395518, -3209414, -3753802, 773631, 23561654, 4524211, 3090766,
-3909494, 1644436, 15044197, -5724655, 4856535, -9654550, 17846662, 23408646, 6997039, -1773822,
--7644505, 24460912, 12557411, -55835, -8713952, 3204046, -4815195, -1338956, -10030896, -4609574,
--6298033, -10602127, 17507898, -5403069, 13276818, 2024003, -8109972, -659278, -18737868, 18613852,
-118112, -9664213, -5523328, -12103218, -12632573, -8033200, 24063092, -5737540, -2419677, 6013491,
-7747048, -5880884, -5759015, 23381266, 23390928, 28359132, 17415556, 5361730, -7150047, -7921531,
-4412005, 7958038, 10293426, -15627239, -368293, -2226404, 7706245, 5603859, -10531260, -13492640,
--28991, -5416491, 12430172, 14128295, -26844, 7231115, 2509335, 2552284, 16825534, -10888816,
--13764833, 10184978, -18023294, 920734, -5661304, 9228274, 4874251, -504122, 11361799, 9892920,
--9877351, 11270531, -288300, -5935108, 2547989, 12233141, -5384815, 4715874, 9309342, 3465502,
--21293910, -13036836, 1585917, 80531, -14717242, -10779831, 4125853, 5601711, 5080410, -20564840,
--14248554, -14774687, -1909113, 6957310, 11261404, -32268626, -23687818, 2042794, 3408057, 15811385,
-4663798, 4248260, 10894721, -4297652, -5771899, -7749195, -9547175, -20014548, -18446884, -16110959,
-6554120, -2516314, 9342628, -17700634, -2292976, 306553, -6089727, -8540006, 14532022, -5842230,
-3386045, -692027, 1531693, -14495515, -4596689, -12457016, 2163053, 1124745, 3688840, 32700808,
--12336757, 8713952, 14539001, -7516193, -6095096, -10453414, -1432909, 15073725, -15200426, 10418517,
--428960, -3020436, 2066416, 1214402, 9111773, 597537, -16132971, 12483322, -9803263, -24376624,
--18825378, -10052371, 33225330, 27361626, -14348949, -4564477, -19935628, -17416092, -6095633, 19951734,
-1240709, 13756780, 7990787, -9526774, 11338177, -7198365, -20675436, -1723893, -12194486, -2444910,
--6115497, 42726336, 1295470, -34493956, 28506772, -10211285, -6751689, 29259464, 29496762, 2602213,
--10764262, 10919954, 4944044, -16592532, -10773389, 5386963, 3703336, 9425843, 28558848, 5225365,
--1051730, 6994891, 1184874, -11769821, -7707856, 6692633, 1139777, 23786066, 5208185, -1256278,
-8156143, 12858058, 12441983, 14003204, 348966, -9491878, -3099356, -21935472, -3434363, -24798068,
-13487271, -15028091, -6346888, 239981, 19742890, -11564199, 10751914, -8080444, 6295885, -10178536,
-12360916, 19649476, 756451, -3988951, -11098732, -15005542, 7837779, 9825811, 24072218, -3234110,
-536871, 11013907, 38876432, -9139690, 5144297, -6311455, -22919556, 15592879, -4076461, 11113228,
--2362769, 2825015, -14383845, 36779416, -56223808, 40604084, -64483564, 27335856, -34121368, 10275172,
--27372900, 9421011, 14668387, -3677566, 9619653, -5782100, 41744396, -26366268, 22759032, 13652090,
-11617887, 44087304, -30496416, 12618077, 8557185, -26951456, -293668, -5512591, -7114077, -13955959,
--252866, 1335735, 18178450, 6370510, 9770514, 13080323, 11294153, 213675, 15297600, -17169668,
--1871532, 20326470, 2879776, -28247464, -5843303, -36905580, -6236293, 6308233, -6154152, -8666170,
--915365, 32803886, 9021042, 2458869, 4750771, 8186745, -1719061, -18889266, -4985920, -2106682,
-4322348, -4347581, -7960722, 23824720, 13701483, -4892505, -212601, -5073430, -20570746, -17617418,
--11911018, -10665478, 25076166, 5864778, 9967008, -14398341, -12908524, 4611185, 11001559, 9108552,
--2773475, -2767033, -14944339, -10726144, 15755551, 678605, -37891276, 13886703, 23394686, 6794639,
--15110769, -10861435, -5956583, 2253247, -8484171, 4482335, -13548474, -36303212, 31753766, 39429412,
--3988414, 28790240, 846645, 4754529, 12083354, -24648818, 8859981, 19017578, 18080202, 8157754,
-5462662, -17645874, 13084081, 8314520, -11159399, 6385543, -2314451, 22178138, 5868536, 6096706,
-12721693, -4548371, -14762339, 4857071, 27564564, -9256191, -5318780, 25526064, -9060770, -10483478,
--8940511, 9243843, 32189170, 45215804, -2546379, -28172838, 43952548, 15771657, -28429462, 33324114,
-12873091, -7307350, -7885560, -11423539, -19724638, -337692, 11276437, -16552804, -10660109, -35873716,
--4156992, 22264574, -43545064, -23199802, 8121247, 8099772, 10035191, 27940910, 25338160, -38588672,
-2005750, 2484102, -26023206, 8778376, 15652471, -13433047, -7425462, -11294153, 11639361, 31664646,
-14372034, 16024523, -14433774, 7022809, -20315196, 23511188, 80269720, -25956634, 1286880, 5633387,
-36590436, 31432718, -9820980, -14306536, -19458886, 421444, 15903727, -923418, -9596031, -10965588,
-15084999, -8225936, -18615462, -17642652, -2751464, 28951300, 21304112, -23608362, 2347737, 127775,
--9350681, 11270531, 5099200, -8565775, -1893544, -6769942, -2248952, 37177772, -13023951, -25017648,
--16456167, -14277008, 34015604, 774705, -6688338, 30331060, 21937620, 8228621, 16532940, 29873646,
--17138530, 4576288, 30234422, 17017734, 23394150, -25267292, -5947993, -905701, 11879343, 10108742,
--22665080, 2375654, -30127048, -47166792, -1130650, -12368969, 23374822, 24579024, -4927938, -1764158,
-6497749, -17012902, -44194676, 30995168, -20523502, 4905390, -6814503, -15404974, -7186017, -17878338,
--33541548, 3739843, 2144263, -12475269, -3684545, -39131984, -22318260, -18218178, -45932528, 53255984,
--1043677, 28094454, -6188511, 1484985, -31878322, -17454748, -16301012, 3836480, 25469156, -1012539,
--25862682, -19439022, -37080064, -41525892, 36177584, 13379360, -32003412, -9877351, 16510391, 29990682,
-4712116, -36742908, -21887690, 7511898, 10973641, 9409200, 22261352, -22742388, -21070572, -3108483,
--6945499, 3286187, 7280507, -44174276, -7268159, -30742302, -18853832, -41087804, -14602889, 56812752,
-10897943, 1989107, 15105937, 14213121, 5749351, 42211476, 34714072, -10888816, 12840878, 56906708,
--13234942, -13247290, -11780558, -42369316, 319438, -23286776, -50450296, -55343876, -26556856, -28752658,
-15515569, -21682068, 4852776, 10827613, -33975876, -13740137, 4628901, 2218888, 36537288, -24303610,
-8310762, -27909234, -7650948, -30287036, 5165772, 34113316, 658204, 20675436, -42107324, 37250252,
-14399952, -8913668, 31984084, 3242164, 15460809, -13137768, -12670154, -1218697, 11033771, 6228240,
--28687698, 27088896, -31935230, 3301219, 11309723, -12254079, 21808770, -21736292, -9949829, -3036005,
--5463199, -11300596, -264141, 3859565, -13445395, -18973018, -3748970, -3777961, -2239826, 10638634,
-8407935, 4064650, -19865834, 5487358, 29613262, 35538172, -23923504, -13721347, 33247878, 41470592,
--22544820, -15957951, 20539608, 7147900, -17076254, 16491601, -44070660, -9500468, 22645216, 37618544,
-8509404, -23609436, -17351132, 5552856, 49460308, 3710852, 11376295, 999654, 20195474, -3517041,
-39698384, -1546188, -29679834, 20793548, -13015362, -55158656, -17581986, 11382200, -21012590, 57985280,
-39339216, 28754270, 12507482, 39686036, 24951612, 10670309, 16398722, -42877732, -61819612, -6592238,
--1301912, -13687524, 6138045, -1122597, -17550310, -17921824, -17934172, 32810866, 25134148, -19906636,
--4696010, -1276142, -7361037, -5954436, -13215614, -14643691, -24889336, -2638184, 38573100, -11212012,
--24473798, -9001715, 36061084, -16013249, -19468550, 60620244, 18943490, 11669963, -16333761, -30572650,
--24613920, -31587874, 6968048, 29300266, 72264432, -63541892, -29804388, 40105868, 50939384, 11043435,
--5286031, 69914552, 30463130, -19718732, 19480362, -6070937, -2025077, -45418744, -26156888, -14737643,
--79807472, -31077846, -15052787, 43346420, -25285546, -11390253, 28026810, -496606, -7639673, 8931921,
-17315698, 48987324, 18403934, -4422206, 13099113, -2808372, -4247723, -18476412, 9032853, 7215545,
--14015552, -7292318, -51833812, -2434173, 21793200, -5351530, -21427592, 9203578, -4563940, 23145042,
-5013301, -11686606, 146029, 24795384, -13967771, 3715684, 9408663, -7971996, 118648, -13921600,
-28082106, -2002529, 4481262, 104153, 13765370, -6413997, -4850629, -9017821, 5924908, 10072772,
--4176319, 12028593, -4956393, 7271380, -12590160, -10613401, 16234976, 19891604, -25713970, 853088,
-518617, 2080375, 8761196, -16842714, 25806310, -23003844, 20915416, 2471754, -34697432, -2297808,
-28255516, -36320928, 17908940, -193274, 5483063, -8959302, -4443681, 6979859, -9351218, 36604396,
--25979720, 3967476, -5798206, -3197066, 10928007, 1034550, -2403571, -26561152, -74454328, -106802416,
-34812856, 92843232, 19430432, 259243152, 213183392, 142831824, 243473648, 125044216, -11820287, -34357592,
--100785168, -228516960, -189453696, -184973504, -255336880, -190651456, -59875604, -46215460, -12696460, 80392664,
-33774548, -18269180, 47793324, 83300352, 36570572, 33973728, 74265888, 39944268, 28499792, 64966212,
-107842336, 38015292, 58076012, 98965176, 6721087, -5583458, 84869624, 43930536, -52042656, 32123672,
-45501956, -80090936, -35751844, 52691732, -32268626, -61215096, 71354440, 27569396, -77579992, 26468272,
-41736880, -110550312, -105817792, -60903172, -235776528, -305454848, -203463344, -276229760, -359028672, -262171776,
--269178496, -339558496, -278824448, -208691920, -225337072, -156797984, -43481712, 8761733, 81913080, 168436800,
-219100240, 279131520, 305690528, 325236928, 256278016, 71095664, 3454764, 0, 0, 0,
-0, 0, 0, },
+333934, 2591476, 2121714, -2348273, -1621887, -504122, 3191698, -3264712, -204011, -1760937,
+-4113505, 2080912, -803159, -3930969, -1672890, 3838090, -5396627, -1599339, 4961761, -1509681,
+-6172405, 4240207, -550293, -2192044, 1329829, -1729798, 3087008, -1814087, 1402307, -3595425,
+3181497, -461172, -3484292, -361314, -1637456, 1931125, 1603633, -786516, 234076, 488016,
+6812355, 3144453, -887448, 3452080, -1697049, 2784750, 452045, -1193464, -816044, -4350265,
+1185411, -1661616, -3380676, 3061775, 515396, 1702955, 727997, 2112587, -1243930, -1906966,
+-3758, 391379, 1242856, -1053341, 2158758, 209380, 346282, -200253, -2683818, -278636,
+1002875, 1946694, 506806, 1073742, 3257733, -1122597, 6152541, -3447785, 1016297, -5133560,
+1427003, 601832, 7850127, -4687420, 2147, -2454574, 3928821, 4049081, -2579128, -463320,
+-2216740, -1239635, -2588792, -3184182, 2361695, 802622, -2107218, 4418985, 3992172, 6861747,
+-206158, 2617783, 1356136, -83215, -6174016, 1637456, 2571612, -2404645, 1546725, -1763621,
+-2088428, -3354906, 1765768, 4394826, 460098, 5122822, -2064806, -399432, 5146445, 2719251,
+432718, -29528, 4894652, 7354595, -5419712, 1251446, -1851668, -814433, -8442295, -2981244,
+3463354, -2609730, 2416993, 1114007, -1196148, -2046015, 1255741, -704912, 2707977, 1418413,
+1306207, 1316408, -4312147, 96637, -2010045, 2585034, 4619774, 2936684, -469225, 4467840,
+271657, 1075889, 187905, 717796, -953483, 3576097, -4402879, -4807142, 278636, -6439767,
+1265942, -2093260, 3185255, -1795833, -4927938, 475668, 5037460, -850404, 275952, 6771016,
+8739722, -3822521, -3852586, -1224066, -6307160, 2643552, 697932, 1500554, -2143189, 3325379,
+-4356171, -916439, 3179350, -2619930, -798327, 363998, 5683853, 250182, 4148939, -5414880,
+5338108, -681289, 882079, 3257196, -2779918, 2694555, -1187559, -1472100, 2562485, 3069291,
+-401043, 1693828, -6891812, 4111358, 4277788, -7610145, -6412923, -2015950, -5288179, -1699196,
+2238215, 1167694, 2149631, -89657, -1641751, 4364761, -1357747, -82678, -1647120, 796716,
+-2582349, 3576097, 1165010, -3395709, -1459752, -1672890, -1506460, -2182380, 4170950, 11210938,
+1996623, -3994320, 5013838, 756451, -3629784, 10229001, -6945499, -9654013, -5862094, -5826123,
+-2149094, 2956011, 3387119, -3300146, 4940286, -6359236, -3685082, -723702, 1934883, 1647657,
+-2157684, -2483565, 5513665, 1134408, -609885, -3183645, 4044249, -3106872, -962073, 4832,
+-610959, -444529, 1404454, 886374, -1151588, 3557844, -1963874, 2158221, -446677, -5844914,
+-2589329, -2356863, 5871221, -3470871, -4504884, -7605850, -9179419, -1669132, 86973, -3589519,
+6323266, 834297, 3202972, -2785823, 5384815, 2388002, -3802120, 9260486, -4700305, -4632659,
+236760, 5753646, 8078834, 5969468, 1464047, -3119757, -7357816, 2563559, -724776, 6531572,
+1974611, -2041720, -1029718, 3271691, 1751273, -1172526, -10104984, 1241246, -3427921, 2028835,
+1084479, 7131257, -9335648, -5965173, -6757058, 3391414, 3540664, 4148939, -4725001, 1308354,
+-1153199, 197569, -7574712, -7219303, -4615479, -5380521, 8346732, -3700114, -628139, -629213,
+3056406, -1768990, -8104067, 3048890, -3037616, -1614371, 4205847, 2404645, 4774393, -246424,
+2684892, -6451041, -2157684, 4733591, 9067750, 4585415, -116501, -7304129, 5043902, -2768643,
+-5555540, 7391102, 2613488, 2116345, -4708895, -3534758, 2958159, -2495913, -2552821, 3519726,
+-3156264, 734439, 368293, -6353867, -1049046, -4501663, 5978058, 2138357, -733366, 98784,
+-2652142, 2509335, 584652, -1146756, 980326, -7838852, -3604551, 2470680, 1605781, -2611340,
+-1188095, -6390375, -15860777, 5310727, 800475, 3974992, 4274566, -3051038, -11190537, 8689793,
+3697430, 8559870, -1523640, 4576288, -37044, -2979097, -147103, -7833484, 9768903, 2310693,
+1007170, -4883378, -2764348, -3264712, 3011846, -4326106, 7554311, 457951, 2701535, 4276177,
+2448131, -328028, 2576444, 2447595, -1537598, 2093260, -8038568, 2320893, 3998615, 4034048,
+7669201, 2765959, -4670240, 2682207, -2190433, 5251135, 1308354, 3886946, 6002217, 1152662,
+-845035, 4660040, -2618856, -4559108, -1315334, 3341485, 8322573, -1588064, 1040993, 415538,
+1535451, 1821603, 3934727, 1408212, -1330903, -64425, -1969243, 2326262, 1548873, -4639102,
+-3347927, 2057826, 3914863, 3062849, 6272263, -7311645, -2424509, -5419175, 8507793, 4360466,
+15653008, 8999030, 7214472, 11618423, 2611340, 2515777, -7232725, 265751, -13157095, -1797981,
+4462471, 4036196, 1879585, 3470871, 3132105, -2221572, -2234457, 7853885, 6231461, 6211060,
+-780610, 1360431, -9451612, -7310035, -3322157, 6357626, 1539746, -591095, 2813741, -4686346,
+192737, -2102923, 6041945, 5631239, 10846940, -439697, 3919158, 4183835, -2066953, -5141076,
+10213969, -5374078, -1639604, 5485210, -19864, 3459059, 7317014, -1628866, 2589329, -6496675,
+-15836081, -7825968, -5390721, -1231582, 526134, 275415, -4212826, -7459822, -1923072, -5051419,
+1691143, 883690, 599685, -8390219, -4436701, 7277822, 2014340, 848793, -10572599, -8181376,
+5613523, 2463164, 3462818, -5317707, -242129, -1155883, -7872138, 5893232, -3350611, -568546,
+-20921860, -5271536, -7562901, -5447629, 1133335, 6731825, -1121523, 8987756, 5172215, -809601,
+-8842801, -4034585, 13834627, 2009508, -7848516, -6190659, -2411087, 6104759, -4689031, -175557,
+4641249, 6670084, 8072928, -8805220, 6024229, 538482, 1891933, 2208150, 3423089, 2520072,
+8084202, -12885, 2629594, -7082938, 9843528, -5037460, -2014340, 1401770, -7723425, 9648644,
+-1324461, -19452980, -6136972, -15648713, 1168231, -402653, -4457103, 20802138, -3461207, -10536092,
+-3325915, -2692945, 9819906, -1444183, 4766877, 5544803, -3781719, 7112466, 10060961, -5105106,
+3882651, -8856223, 4369056, -3157875, -2485712, 10252087, -3807489, -851477, -4758824, 523986,
+-459562, 9727027, -13538811, 2786897, 2670933, -4153234, 1733019, 10252087, 10799695, 4151623,
+3825205, 5311264, -8463770, -1327145, -9028021, -45097, 5690295, 3782793, -1930051, -6942278,
+-2335925, 4968204, -9337259, 494458, -690416, 4482335, 8841727, 1036161, -4795868, -3432753,
+9469866, -5877126, -2954938, 5688684, -3405909, -10970420, -4069482, 2806224, 1890859, -4215511,
+1044214, 6122476, 4024921, 5929739, -669478, 4560182, 8050380, -3223910, 4001299, 3815005,
+-5534066, 12328167, -11526082, 7244536, 2974802, -15563888, 15233712, -9454297, 2092723, -1297080,
+12095165, -4677757, -8798241, -1301375, -120796, 2796561, 9110163, -7334194, -751619, 1268626,
+52613, -650151, 2075543, -5572183, -1980517, -3473018, -10244571, -7334731, -10450192, 8245801,
+-24276766, 13211856, -9476308, -6936909, -11691975, 1117228, -1110786, 1894081, 8920110, -7406134,
+-2407866, 6645925, 6621229, -2228551, 2825015, -3470871, -10838350, -1228361, 3264712, -5908265,
+9527311, 1403381, -591632, -5504538, -4821101, 1140314, 14493904, 506269, -1438814, 3768834,
+-11543798, -2130841, 4987531, -8212515, 12344810, 7472706, 193810, -3564823, -3297998, -4466229,
+-7372848, -9837623, 9046275, 752156, 15560667, 1519882, -14496, -6453725, 2022930, -2350958,
+4158065, 107911, -8484171, -6938520, -8618389, -15611132, -1276142, 14668387, -12517145, -227633,
+-13091060, 2971044, 5145908, 4127464, 11356967, -126165, -13212930, 11637214, 487479, -5605469,
+-4176856, -10753524, -2292976, -7048578, 7716446, 10859825, -4169876, 9689983, -9464497, -4548371,
+6107981, 2363306, -12665859, 1107028, 15769509, -18212808, 787053, 8955544, 20508468, -8595840,
+-5598490, -1978906, 15813533, 16123307, -17029008, -489089, -13150653, -5858336, 8071318, 8709657,
+10726144, 6547678, -2483565, 8034810, -9878962, -4888210, -1254131, -1197759, -14163728, 1500017,
+-605590, 18620294, -3124589, 9307731, 1899986, 5618891, 12007118, -7188702, -3597572, -17884244,
+12209518, -15740518, -3117073, 3898220, -2436320, -9007620, -2592550, 2832531, -6838662, 2000918,
+-1346472, -1205812, -20648056, -14249091, 732292, -10290205, -14586246, 2803003, -13513578, 4370129,
+8306467, -7611756, 14461692, 3265249, 9133785, 10363756, 2203855, -7305740, -9452686, -10736344,
+5082020, -10249403, 25836376, 10216117, 4825933, 12696460, -4575214, 2373506, -13070659, -17767742,
+11407970, 21990770, 7113540, -472446, -21630530, 26304528, 4334159, 2921652, 4316442, 628676,
+5324149, 1163399, -3306051, -522375, 7262790, -4491999, 9005473, 1268089, -6105833, -9603547,
+-1949915, 8086887, -1722282, 2395518, -3209414, -3753802, 773631, 23561654, 4524211, 3090766,
+3909494, 1644436, 15044197, -5724655, 4856535, -9654550, 17846662, 23408646, 6997039, -1773822,
+-7644505, 24460912, 12557411, -55835, -8713952, 3204046, -4815195, -1338956, -10030896, -4609574,
+-6298033, -10602127, 17507898, -5403069, 13276818, 2024003, -8109972, -659278, -18737868, 18613852,
+118112, -9664213, -5523328, -12103218, -12632573, -8033200, 24063092, -5737540, -2419677, 6013491,
+7747048, -5880884, -5759015, 23381266, 23390928, 28359132, 17415556, 5361730, -7150047, -7921531,
+4412005, 7958038, 10293426, -15627239, -368293, -2226404, 7706245, 5603859, -10531260, -13492640,
+-28991, -5416491, 12430172, 14128295, -26844, 7231115, 2509335, 2552284, 16825534, -10888816,
+-13764833, 10184978, -18023294, 920734, -5661304, 9228274, 4874251, -504122, 11361799, 9892920,
+-9877351, 11270531, -288300, -5935108, 2547989, 12233141, -5384815, 4715874, 9309342, 3465502,
+-21293910, -13036836, 1585917, 80531, -14717242, -10779831, 4125853, 5601711, 5080410, -20564840,
+-14248554, -14774687, -1909113, 6957310, 11261404, -32268626, -23687818, 2042794, 3408057, 15811385,
+4663798, 4248260, 10894721, -4297652, -5771899, -7749195, -9547175, -20014548, -18446884, -16110959,
+6554120, -2516314, 9342628, -17700634, -2292976, 306553, -6089727, -8540006, 14532022, -5842230,
+3386045, -692027, 1531693, -14495515, -4596689, -12457016, 2163053, 1124745, 3688840, 32700808,
+-12336757, 8713952, 14539001, -7516193, -6095096, -10453414, -1432909, 15073725, -15200426, 10418517,
+-428960, -3020436, 2066416, 1214402, 9111773, 597537, -16132971, 12483322, -9803263, -24376624,
+-18825378, -10052371, 33225330, 27361626, -14348949, -4564477, -19935628, -17416092, -6095633, 19951734,
+1240709, 13756780, 7990787, -9526774, 11338177, -7198365, -20675436, -1723893, -12194486, -2444910,
+-6115497, 42726336, 1295470, -34493956, 28506772, -10211285, -6751689, 29259464, 29496762, 2602213,
+-10764262, 10919954, 4944044, -16592532, -10773389, 5386963, 3703336, 9425843, 28558848, 5225365,
+-1051730, 6994891, 1184874, -11769821, -7707856, 6692633, 1139777, 23786066, 5208185, -1256278,
+8156143, 12858058, 12441983, 14003204, 348966, -9491878, -3099356, -21935472, -3434363, -24798068,
+13487271, -15028091, -6346888, 239981, 19742890, -11564199, 10751914, -8080444, 6295885, -10178536,
+12360916, 19649476, 756451, -3988951, -11098732, -15005542, 7837779, 9825811, 24072218, -3234110,
+536871, 11013907, 38876432, -9139690, 5144297, -6311455, -22919556, 15592879, -4076461, 11113228,
+-2362769, 2825015, -14383845, 36779416, -56223808, 40604084, -64483564, 27335856, -34121368, 10275172,
+-27372900, 9421011, 14668387, -3677566, 9619653, -5782100, 41744396, -26366268, 22759032, 13652090,
+11617887, 44087304, -30496416, 12618077, 8557185, -26951456, -293668, -5512591, -7114077, -13955959,
+-252866, 1335735, 18178450, 6370510, 9770514, 13080323, 11294153, 213675, 15297600, -17169668,
+-1871532, 20326470, 2879776, -28247464, -5843303, -36905580, -6236293, 6308233, -6154152, -8666170,
+-915365, 32803886, 9021042, 2458869, 4750771, 8186745, -1719061, -18889266, -4985920, -2106682,
+4322348, -4347581, -7960722, 23824720, 13701483, -4892505, -212601, -5073430, -20570746, -17617418,
+-11911018, -10665478, 25076166, 5864778, 9967008, -14398341, -12908524, 4611185, 11001559, 9108552,
+-2773475, -2767033, -14944339, -10726144, 15755551, 678605, -37891276, 13886703, 23394686, 6794639,
+-15110769, -10861435, -5956583, 2253247, -8484171, 4482335, -13548474, -36303212, 31753766, 39429412,
+-3988414, 28790240, 846645, 4754529, 12083354, -24648818, 8859981, 19017578, 18080202, 8157754,
+5462662, -17645874, 13084081, 8314520, -11159399, 6385543, -2314451, 22178138, 5868536, 6096706,
+12721693, -4548371, -14762339, 4857071, 27564564, -9256191, -5318780, 25526064, -9060770, -10483478,
+-8940511, 9243843, 32189170, 45215804, -2546379, -28172838, 43952548, 15771657, -28429462, 33324114,
+12873091, -7307350, -7885560, -11423539, -19724638, -337692, 11276437, -16552804, -10660109, -35873716,
+-4156992, 22264574, -43545064, -23199802, 8121247, 8099772, 10035191, 27940910, 25338160, -38588672,
+2005750, 2484102, -26023206, 8778376, 15652471, -13433047, -7425462, -11294153, 11639361, 31664646,
+14372034, 16024523, -14433774, 7022809, -20315196, 23511188, 80269720, -25956634, 1286880, 5633387,
+36590436, 31432718, -9820980, -14306536, -19458886, 421444, 15903727, -923418, -9596031, -10965588,
+15084999, -8225936, -18615462, -17642652, -2751464, 28951300, 21304112, -23608362, 2347737, 127775,
+-9350681, 11270531, 5099200, -8565775, -1893544, -6769942, -2248952, 37177772, -13023951, -25017648,
+-16456167, -14277008, 34015604, 774705, -6688338, 30331060, 21937620, 8228621, 16532940, 29873646,
+-17138530, 4576288, 30234422, 17017734, 23394150, -25267292, -5947993, -905701, 11879343, 10108742,
+-22665080, 2375654, -30127048, -47166792, -1130650, -12368969, 23374822, 24579024, -4927938, -1764158,
+6497749, -17012902, -44194676, 30995168, -20523502, 4905390, -6814503, -15404974, -7186017, -17878338,
+-33541548, 3739843, 2144263, -12475269, -3684545, -39131984, -22318260, -18218178, -45932528, 53255984,
+-1043677, 28094454, -6188511, 1484985, -31878322, -17454748, -16301012, 3836480, 25469156, -1012539,
+-25862682, -19439022, -37080064, -41525892, 36177584, 13379360, -32003412, -9877351, 16510391, 29990682,
+4712116, -36742908, -21887690, 7511898, 10973641, 9409200, 22261352, -22742388, -21070572, -3108483,
+-6945499, 3286187, 7280507, -44174276, -7268159, -30742302, -18853832, -41087804, -14602889, 56812752,
+10897943, 1989107, 15105937, 14213121, 5749351, 42211476, 34714072, -10888816, 12840878, 56906708,
+-13234942, -13247290, -11780558, -42369316, 319438, -23286776, -50450296, -55343876, -26556856, -28752658,
+15515569, -21682068, 4852776, 10827613, -33975876, -13740137, 4628901, 2218888, 36537288, -24303610,
+8310762, -27909234, -7650948, -30287036, 5165772, 34113316, 658204, 20675436, -42107324, 37250252,
+14399952, -8913668, 31984084, 3242164, 15460809, -13137768, -12670154, -1218697, 11033771, 6228240,
+-28687698, 27088896, -31935230, 3301219, 11309723, -12254079, 21808770, -21736292, -9949829, -3036005,
+-5463199, -11300596, -264141, 3859565, -13445395, -18973018, -3748970, -3777961, -2239826, 10638634,
+8407935, 4064650, -19865834, 5487358, 29613262, 35538172, -23923504, -13721347, 33247878, 41470592,
+-22544820, -15957951, 20539608, 7147900, -17076254, 16491601, -44070660, -9500468, 22645216, 37618544,
+8509404, -23609436, -17351132, 5552856, 49460308, 3710852, 11376295, 999654, 20195474, -3517041,
+39698384, -1546188, -29679834, 20793548, -13015362, -55158656, -17581986, 11382200, -21012590, 57985280,
+39339216, 28754270, 12507482, 39686036, 24951612, 10670309, 16398722, -42877732, -61819612, -6592238,
+-1301912, -13687524, 6138045, -1122597, -17550310, -17921824, -17934172, 32810866, 25134148, -19906636,
+-4696010, -1276142, -7361037, -5954436, -13215614, -14643691, -24889336, -2638184, 38573100, -11212012,
+-24473798, -9001715, 36061084, -16013249, -19468550, 60620244, 18943490, 11669963, -16333761, -30572650,
+-24613920, -31587874, 6968048, 29300266, 72264432, -63541892, -29804388, 40105868, 50939384, 11043435,
+-5286031, 69914552, 30463130, -19718732, 19480362, -6070937, -2025077, -45418744, -26156888, -14737643,
+-79807472, -31077846, -15052787, 43346420, -25285546, -11390253, 28026810, -496606, -7639673, 8931921,
+17315698, 48987324, 18403934, -4422206, 13099113, -2808372, -4247723, -18476412, 9032853, 7215545,
+-14015552, -7292318, -51833812, -2434173, 21793200, -5351530, -21427592, 9203578, -4563940, 23145042,
+5013301, -11686606, 146029, 24795384, -13967771, 3715684, 9408663, -7971996, 118648, -13921600,
+28082106, -2002529, 4481262, 104153, 13765370, -6413997, -4850629, -9017821, 5924908, 10072772,
+-4176319, 12028593, -4956393, 7271380, -12590160, -10613401, 16234976, 19891604, -25713970, 853088,
+518617, 2080375, 8761196, -16842714, 25806310, -23003844, 20915416, 2471754, -34697432, -2297808,
+28255516, -36320928, 17908940, -193274, 5483063, -8959302, -4443681, 6979859, -9351218, 36604396,
+-25979720, 3967476, -5798206, -3197066, 10928007, 1034550, -2403571, -26561152, -74454328, -106802416,
+34812856, 92843232, 19430432, 259243152, 213183392, 142831824, 243473648, 125044216, -11820287, -34357592,
+-100785168, -228516960, -189453696, -184973504, -255336880, -190651456, -59875604, -46215460, -12696460, 80392664,
+33774548, -18269180, 47793324, 83300352, 36570572, 33973728, 74265888, 39944268, 28499792, 64966212,
+107842336, 38015292, 58076012, 98965176, 6721087, -5583458, 84869624, 43930536, -52042656, 32123672,
+45501956, -80090936, -35751844, 52691732, -32268626, -61215096, 71354440, 27569396, -77579992, 26468272,
+41736880, -110550312, -105817792, -60903172, -235776528, -305454848, -203463344, -276229760, -359028672, -262171776,
+-269178496, -339558496, -278824448, -208691920, -225337072, -156797984, -43481712, 8761733, 81913080, 168436800,
+219100240, 279131520, 305690528, 325236928, 256278016, 71095664, 3454764, 0, 0, 0,
+0, 0, 0, },
},
{
{
-7415261,
--2544231, 572304, -1530619, 395137, 130997, 4044786, -5265630, -2714419, -483721, -2277943,
--1417339, -3992709, 1948841, -3980898, -2339684, 606127, 3228205, -4040491, 19327, 298500,
--3243774, 1285269, 609349, -1534377, 301721, 1772748, 5829881, 1129576, 762357, 2332704,
-973884, -288837, 1200443, -1358283, 1248225, -5062693, -1829656, 1426466, -1128503, 5373004,
--2825015, -1618666, -3403762, 1119913, 1017907, -626528, 878858, -942208, -1641751, -2905009,
--328565, -419296, 2385318, 3314104, 906775, 2357937, 1724966, 119722, 419296, 12348,
--5108327, 1069447, -49929, -3014530, 214748, -2730526, 2490544, 2663417, -1436667, -2617783,
--6153615, 1680943, 3428995, 3181497, -2975339, -286689, 4031364, 9729712, 142271, 423591,
--4658966, -3685619, 2778307, 1738925, 232465, 3989488, -6000606, -2003065, 9670656, 689342,
-1867237, -2518462, -3293166, 4589710, 3790846, -1563368, 3731253, 196495, 591632, -3657165,
-1310502, -3323768, -2646774, -3260417, 1104880, 181999, -1096827, -319975, 1112397, 2938831,
--1398012, -5208185, 70867, -3690451, -4821638, -1189169, 2144799, -662499, 1911797, 1309428,
-1750736, -668404, -696858, -806917, -798327, 1726577, -77309, 3448322, -469762, 4253092,
-665183, 1069447, 3907347, 1548336, 984084, 5245229, -2088965, 1860258, -1788854, -3395172,
-3277060, -970126, -12348, 1467268, -624381, -2702071, -940061, 2472828, -1409286, 300648,
--2909840, 1835025, -12709882, -6642704, -2950106, -2794950, 11274, 537, 968515, 146566,
--694174, -5253282, -2348273, -5384279, -8358007, -7035157, 3964792, 4831302, 4941360, -1982664,
--571231, -598074, -1089311, 1770063, 767725, -1826972, -3787624, 2687576, 2340220, 3367791,
-898722, -1198833, -2075006, 919123, 1633161, -440234, 3470334, -1740536, -98784, 3318936,
--2583960, -4150549, 321586, 5610838, 1295470, 1197759, 784905, -7516, 715649, -933619,
-996432, -4533875, 716723, 4587562, -1079647, 10737, 443455, -1642825, -906775, -700617,
--777926, -1298154, 2818036, -2720862, 2762201, 2325188, 5186173, -408022, 2897492, 6621229,
--1270237, -5398237, -6068252, -302795, -852014, 343597, -5197984, 1583232, -3626026, 8703751,
-7128572, 2822331, 3726958, -2456721, 1767916, 5973226, 3155190, 6444062, -2410551, 2509872,
-3936338, -338229, 5003100, -2654827, 3189013, 403190, -2934537, -936840, -420370, -344134,
--712965, 210990, -1387811, 335007, -969052, 5876052, -1217086, -486405, 156229, -2874944,
--7491497, 4205847, -1642288, 1526861, -2865817, -3038689, -3075197, -2318746, 2177012, 5622112,
-4750771, 1757715, -136365, -1407676, 2032593, 3989488, -720481, -1534377, 5357435, -2452963,
-2681133, -2740726, -1788317, -1407676, 2150168, 1858647, -3372623, -2674691, 358093, 3679713,
-5287642, 2524904, 4202089, -740345, 3980361, 1226750, 4196183, -2389076, 1935420, 8547522,
-4546223, 3451006, -380641, -2834142, -5375152, 2699387, 10271414, 1360431, 3810710, 7292318,
-278099, -4264903, -1650341, -1302986, 462783, -2675228, -7037304, 2894271, 450972, 165893,
-3246995, -4768488, -1970316, 7591355, -1586454, -2792266, -4189204, 228707, -3922916, -613643,
--1086090, -1162326, 887985, 6226092, 171799, -1769527, 2181307, -4686346, 6921877, -648003,
--1021129, 8334384, -4217121, 607738, -5040144, -2290291, 998580, 521839, 2687039, 2853469,
--4348655, 1781875, 2699387, 2020782, 1141924, 2695629, 2403034, 3798899, -2372433, -1247151,
-7224135, -2211371, 3314641, 1109175, 2767570, 2197950, 447750, -1585917, 737124, 5179731,
--1532230, 413391, -157303, 1846299, 5459441, -1372779, -3465502, -8707509, 2425046, 856309,
-1328219, 1675037, -861678, -3620121, -11673184, 6289980, -4360466, -5423470, -495532, -10871099,
-1739462, 4354560, -2061584, 9308268, -4036196, -9460202, 1684164, 4690105, -4345970, -6453725,
-11621645, 25770, -1518271, 3959423, -3519726, -775242, 488016, -5252208, 2778844, 177167,
-972273, -444529, 5017059, -634581, 2467996, 3695283, -6512244, -1964948, -4015258, 6806450,
--3753802, -920734, 3732864, -711891, -4161823, 3499862, 7500087, -3330747, 3241090, -3459059,
-4647692, -2102387, 2061047, 1472637, -3756486, -7559680, 3921842, 7071127, -1411434, -981400,
-2667712, 5281736, 3300682, -4829154, -1547262, -4110821, -1375463, 2895882, -4527433, 2508261,
-3086471, -3133716, -1098438, 2065879, -5192079, -1685238, 2685965, -1329829, 1669669, -228170,
--4409321, 5577015, -6124087, -6065031, -10414759, 4418985, 11044508, 1713155, -1947231, -907849,
--1817308, 9653476, -5710696, -5181341, -1184874, -5708012, -1714229, -6197638, -2642479, -4313758,
--8649527, -2341831, -1837172, -186294, -863288, 2398202, 5311801, 2005213, 2690797, -7860864,
-1114544, 42413, -2382633, 2969970, 1621350, -2136209, -887985, -5491116, -6177237, -689342,
-7182259, -1803886, -3439195, -500364, -2161979, -4637491, 271120, -4833449, 10729365, 9223979,
-2503429, -2347737, -2253247, 1324997, 1806571, 2246268, 1964948, -178778, 4158065, -3216394,
-1979980, -2722473, 354872, 565325, 2462627, 2208150, 5213017, -1393180, -2757906, -1918240,
--11150809, 1348083, 2687576, 44560, 4475356, 3372086, -3083250, -10333154, 1308891, 11414949,
-9912785, -10684805, -10584947, 3060164, -8512625, -3852049, 721018, -128312, -3740917, 8771397,
-3246459, -11306501, -1401770, 1139240, -560493, 7946227, 2336999, -5014375, 7446937, 3390340,
-580894, -3789235, -4971962, 3830037, -3358128, -7504919, -1918240, -583579, -4026532, -4291746,
--6892886, 7292318, 2684, 1474248, -4927401, 578210, 4360466, -3349001, -8564702, -7708393,
-8094940, 2410551, 7608535, -806380, 1816234, 6463389, 11640972, 4420595, -2049773, -5702106,
--3198677, -2582886, 1301912, 1175210, -5397700, -1439888, 6495601, 5528160, 9012452, 5042829,
--7255811, -5796595, 7305203, 4796942, -4853850, 632434, 7461432, 1234266, -1250909, -5764920,
-6127845, 5804112, -2366527, 9787157, 1843078, -4452808, 1800665, -1687385, -827318, 5362267,
--8920110, 5378373, -5819681, 1043677, 4791036, -74625, -2310693, 1755568, -6080063, 245887,
--4709969, -13942538, -4166655, 5914170, 3923990, 2168959, -3281892, 2872260, 1392106, 14925011,
-2680597, -5004711, 5668820, 1136556, 1314260, 9957345, -2714956, -2726231, 3590056, -6912750,
-8550743, 7835631, -26307, 4479114, -1468879, -4170950, -387084, -5254893, 629750, -5128728,
-2243047, 73014, 1717987, 772020, -8814884, -1673427, -942745, 708133, -4314295, 2200097,
-2250026, -1474784, 12164958, -4908611, -10306311, 6643778, 10700374, 2733210, 2996277, -4175782,
-9250286, -2565706, 1829656, 4570382, 1496259, -3395172, 4552129, 2624225, 677531, 907849,
-30595200, -8519068, 403727, -3244311, -1708860, -6935299, 96100, -17957258, 9511742, -6538014,
--172872, 10179609, 5382131, -6949794, -7031399, -2845416, -5952288, 5581847, -14389214, 2648921,
-6455873, 8370892, 2028835, 2469606, 729071, 1344862, -1540283, -4643934, -13035226, -1988033,
-2150705, 6207839, -4385699, 6002754, 2813741, -2402497, -357556, 4689031, -4344360, -4527970,
--2097018, -3423089, 59056, -11797738, -4961761, -2706366, 311385, 9599789, 2792266, 9188009,
-3820910, -208306, -4895189, 919123, 1371168, 1629403, 3983045, 12912282, 2405182, -11504070,
-4053912, -4283693, 758062, -4068945, -3798899, -1906429, 6157910, 3609383, -19449222, -7327751,
--4518843, 4548371, 1131724, -3876208, -333934, 12375948, -1323387, 6920266, -4279935, -5509370,
-4221953, -9885941, 973347, -22564148, 5786395, -7637526, 2557653, -7920457, -15976741, -2886218,
--3413962, 11258183, 5324149, 3827890, 8053, 15067819, -11186779, 2484102, 4784057, 11570642,
--13320304, -8169565, -2312303, 799938, -512712, -4226248, -867583, 3791919, -6983080, 1191317,
-4779225, -1161252, 1003412, -6275484, -6425271, -4535486, 18842558, -133681, -4079682, 6875169,
--4028143, -9569187, -7203197, -5316633, -939524, 2985539, 1069984, 356482, 10618233, 9080098,
--1318555, 3059091, 2618320, -12101607, -7772280, -788127, -617938, -3372623, -7762080, 9631464,
-12248710, -10101763, 6704444, 5771363, -1726577, -9696962, -15015743, -15023796, -11284490, -7060390,
--13162464, 714038, -10989748, 5738613, -9239012, -7461969, -5433671, -5794448, -2027761, -13368086,
-455267, 14982993, -5355288, 7990787, -3251290, 14962055, 12368432, 5378373, -15461345, -3714073,
-20362440, -5064304, 15067282, 2622078, -14675903, -7122667, 17047798, 642098, -11651709, 561030,
--9947681, -1044214, 3375308, 1739999, -2075006, -16754667, -15301895, 4574140, 10891500, -9367861,
--966368, 4721243, -840203, 2145873, 18159658, 3863323, 2550674, 2119566, 5924908, -7509214,
--5849746, -3527779, -19378356, -5859946, -7359427, -4254702, 4937065, 4189204, -1374390, -1052267,
--7788923, -10594074, 14873472, -2203855, -13451838, -5048197, 2448668, 11380053, -8276939, -1050120,
--8812736, 71941, -10524280, -2147, -2616172, -18020072, 1324461, -3826279, 13482976, 821413,
--11831024, -8499203, 6842957, -24721832, -12948253, -8374113, -13857712, -7099044, -5811091, -13943074,
-14622216, -4111894, 22184042, -11133629, -17180942, -3107946, -11628087, 19489488, -6919729, -9994926,
--5000953, 5362804, 9517111, 8616778, -2349884, -2074469, -4750234, 2323041, 15573551, -223875,
-1161789, -4918812, -2384244, -8121783, -3117610, 3918084, 2326799, -6658273, -104690, -9952513,
-1585917, -2789045, -3536906, 4438849, 1425392, -4456029, -2448131, 9028558, 2696703, -6877317,
--10113574, 16221555, -1413044, -24839944, 12428025, -2355253, -11481521, 5579700, -2372970, 1711008,
--3341485, 9405978, 2436857, 1614908, 23203560, 24770150, -9600326, 3595425, -19274740, -2637647,
--4896263, 9125732, -4401268, 3179350, 5443871, -2714419, 11394548, 29878476, -22391276, -7296076,
--14149233, -9578314, 11425150, -13073344, 27553826, -3386582, 8440148, 1346472, 6698539, -17296908,
-3131568, 4265977, -1289027, -2815888, -1549946, 4786204, -10575820, -6659884, -1586454, -3287798,
--13105019, -11869679, -3242700, -5696201, 15506443, -4474282, -7640210, -5788542, 5157182, -8499203,
--3675418, -14416058, 6231998, -5832029, 5424007, -5472862, 6951942, -4306242, -24451248, -12860743,
-3110093, -2524367, -1954210, -8193187, -14849313, -1561221, 5735929, 3455301, -3881577, 3879429,
-6687801, 21902186, -10522670, 9832791, -26472568, 568009, 2888903, -4190278, -8335995, 3958349,
--92342, -186831, 4597763, 16591459, 11004780, 7542500, -6318971, -7890929, 7300371, -13416404,
-700617, 5854041, -9103183, 11152419, 36368172, 24252070, -5849209, -16602196, -9750113, 20675972,
--24680492, 515396, -5562520, -7126962, 11403675, -19606526, 3447248, -10434086, 717260, -13884556,
--9109089, 700617, 1657321, -289910, -11624866, 19291382, 5067525, -9795747, 4650376, -3453154,
-2783139, 29177860, 10497437, -9152038, -6322192, 674847, 10351408, 1734093, -21341692, -6285685,
--14410689, -5937256, -6158446, 6810208, -3069828, -2882997, 974958, -1522029, -9847286, -13503377,
-9466108, -5574331, 3423089, -1336809, 12346420, -9793599, -5268851, 2108829, 5890548, -12721156,
-14639396, -9113384, -18257370, -18931678, -5211406, -5944235, -6571837, -4794794, -26410290, 9092446,
--11786464, -4886599, -9572945, 14692546, 6464463, 6663105, 1483911, -3105261, -12019466, -5328981,
--34716756, -4629975, 23584202, -28909962, -11126113, -1023813, -8509941, 10020159, -5716602, 31960462,
--3028489, -7409893, -5145371, -1828046, 9661529, -6840809, -6060736, 25943214, -19164144, -2803540,
-6289443, -4744328, 16636556, 8817031, -1036161, -2581275, 7101729, 8848170, 10282689, 7817914,
-17513266, 4992900, 7545184, 3951370, -5654325, 28600724, 3666292, 4815732, 7348152, 3684008,
-21028160, -2199560, 5114769, 6550362, 5976447, 2696166, 13763223, -9021042, -6831146, 13034689,
--2767570, -14841259, -3849901, -25350508, -8613557, -5642514, 22810572, -22914188, -3213709, -116501,
--1175210, -2406792, 13184476, 36151276, -7033546, 3325379, 3736085, 4143570, 17283486, -21090436,
--20385526, -20144470, 31420906, -328028, -12040941, 25333864, -9906342, 19982872, 2648384, -21640730,
--60681444, 11574937, -13982266, -24483462, 27406724, -16666621, -7410966, -24107652, 6879464, -5335423,
--22042310, -8099772, -12745852, 5721970, -11732240, -42950, 5750961, 9632538, 6097780, 16772384,
-3623342, -756988, -914291, -15284178, -10347113, -11055246, 9368934, 12406550, 6993281, 4025995,
-582505, 4434017, 11183558, 23211078, -10272488, -6845104, 5192079, -11381663, 12494060, 1927367,
--9346386, 23664732, 9940702, -20929912, 9185324, -20146618, 3490735, 3218004, 11535745, -6094022,
--5366562, 30277908, 13276281, -13747653, 9416179, 15787226, -11180874, -27346056, 16452946, -2657511,
-1345935, 1700270, 8324184, 41140956, -1920924, 4653597, 10153303, -761283, 12030203, 4827543,
--19279034, 3616363, -8520678, -18818400, -22079890, 47099148, 9820443, -2866891, -5877126, 10735808,
-42164232, 19591494, 4824322, -1100585, 13953812, 35525284, 8536784, 12310987, 10755672, 25336012,
--16575889, 16428787, 6956237, -48410724, 14033269, -6804302, 14032195, -15057082, 11047193, 7594576,
-14690399, -107911, 6005438, 2359011, -14153528, 6844031, 13226889, -11472395, 6427419, -11155104,
--7128035, 34696356, 3091840, 30699352, -22374632, 9496173, -1616518, -4506495, -1202054, -2792803,
-4249334, 11144366, 7271917, -1008780, 17010754, -28196998, -27012660, 18976240, -15652471, -4085051,
--4158602, -18358300, 8474507, -5036386, 4470524, 2522757, 29073708, 14141717, 14960445, 5528697,
-3453691, -27513560, -7013682, 12821014, -1035087, -295816, -760209, -9568113, -24014772, 11507291,
--41874856, 35594004, -14653892, 6460705, 24101746, -34725884, -281320, -3476239, 8877161, 12192875,
-15350750, 24887724, 4861903, -16966732, 9580998, 26508538, -37975564, -23263690, 26371100, 702227,
-296353, 579284, 2695092, -1358283, -199716, 12538620, 8559333, -19192598, 1611150, -5922760,
-32583770, 18709952, -6166500, 1183800, 4262218, 3218004, 170725, 10884521, 1544578, 8153459,
-33188286, 3681324, 3811247, -5838471, 8775155, -32118840, -13179107, -14048838, -1058710, 2350421,
--27208618, 9831180, -24104968, 7209640, 25703232, -6653441, -22444962, -13392782, 9847286, -5667210,
--46160696, 11495480, -32013076, -8394514, -3424163, -279173, -12269648, 1910724, 17440252, -14942191,
--29496762, -47967268, 38487200, 9437117, -1792075, 8078834, 50638740, -54569708, 21360482, 29607358,
--36139464, -9531606, -19988240, -9099962, 50324132, -21893058, 35391068, -15852187, -6049462, -7976291,
-10857140, 5794985, -45622752, -7169911, -12877386, 20443508, -81604, 9301289, 14425721, -20499878,
--5073967, -12643310, 6774774, 19389630, 10281078, -26832272, -5873368, 6861747, 2801393, -513249,
--14171781, -4213900, -26265336, -3375844, -4440996, 24602646, -21599928, 52223580, 10318659, -13583908,
-21578452, 2113661, 28293098, 17258790, 26803818, 8134668, 24404542, 21982180, 23847806, 27451284,
-3051038, 26599806, -33287608, -4268124, 5840082, -20033338, -4683662, 14671608, -26124138, -35569308,
-13708462, 24973624, -361314, 6481106, -26921928, -6159520, -22790708, -419833, 23259932, 1824287,
-44633300, 19233400, -12421582, 33441690, -70490616, 64120640, -13011603, -23814520, -17310328, 43887588,
--32727114, -7393786, -7938174, -2175401, 26569742, -29068876, -417149, 9101036, -6130529, -5335960,
-2768107, -17162152, 24082956, -375810, -33656976, -10648298, -6486475, 613107, -37029596, -1926830,
-6932077, -9381819, 2629594, 9142912, 26557930, -11613055, -3743601, 3593814, -13799193, -52099028,
-6844031, 38511900, -17935246, -32688996, 4717485, 30745524, -12460237, -11274826, -39195336, -8443369,
-3629247, 28210418, 16709033, 2111513, -28665148, -19807852, 27896350, -31614718, 13662291, 47527572,
-31159988, 36387500, -15107011, 20351702, 17719424, -44947908, -12098386, -25204478, -1803349, 22936736,
-2888366, 24815784, 26516592, -45336600, 52168284, -32009318, 5029944, -1331440, -15858630, 41517300,
-5531381, -25339770, 44077100, 29745870, 5428839, -9146670, -21507048, 12263205, -829466, -2867428,
--483184, -1593970, 1046898, -9417790, 11833172, -1044214, -37555732, 8856223, 4436701, -14128295,
-1503775, 15856482, -4606353, 337692, -26840862, 19522774, -8880919, -3757023, -1762547, 10809896,
--14036490, -1283122, 4511863, -250719, 4285841, -7856032, 21748104, -11490111, 37507412, -23037668,
--22706418, 21853330, -24033564, 714575, 20005958, -17994840, -6533719, 9464497, 12975096, 14975477,
--54176716, 17181480, 825171, -13139379, 36586680, -18057116, 3618510, -163746, -28350006, 38013680,
--217970, -1873143, -18423800, -3738232, 33414846, -7350837, 797253, 1427540, 11297911, 5634460,
--36529232, 19917374, 37652904, -17117592, 17510582, -25291988, 50496468, 5413270, -33929704, -24130736,
--80461920, -121709176, 7871065, 105049528, 1190780, 274979360, 248930400, 148951616, 287339232, 188441152,
--32073206, 10234907, -37939056, -227597296, -129892160, -100756712, -222752032, -183257664, -55137716, -108183784,
--124351648, -11412802, 5605469, -53501332, 9527311, 45276472, -62039192, -52889836, 78230680, 14404783,
--21863532, 53906136, 72769632, -2510409, 74513384, 128199944, 43918724, 33065342, 130185824, 87116968,
-7488276, 94655176, 140815328, 59967408, 69956968, 160880880, 58329412, 18434536, 152754800, 150445184,
-43019468, 181774288, 259935184, 93846112, 103291280, 179526416, 50458348, -65550864, 4243965, -67559832,
--229549888, -218926288, -234149264, -371325152, -401654080, -428382176, -506228480, -528294400, -517024416, -501871232,
--443181568, -395437632, -323578528, -207575232, -141330192, -7804493, 207479136, 179362672, 35194572, 0,
-0, 0, 0, },
+-2544231, 572304, -1530619, 395137, 130997, 4044786, -5265630, -2714419, -483721, -2277943,
+-1417339, -3992709, 1948841, -3980898, -2339684, 606127, 3228205, -4040491, 19327, 298500,
+-3243774, 1285269, 609349, -1534377, 301721, 1772748, 5829881, 1129576, 762357, 2332704,
+973884, -288837, 1200443, -1358283, 1248225, -5062693, -1829656, 1426466, -1128503, 5373004,
+-2825015, -1618666, -3403762, 1119913, 1017907, -626528, 878858, -942208, -1641751, -2905009,
+-328565, -419296, 2385318, 3314104, 906775, 2357937, 1724966, 119722, 419296, 12348,
+-5108327, 1069447, -49929, -3014530, 214748, -2730526, 2490544, 2663417, -1436667, -2617783,
+-6153615, 1680943, 3428995, 3181497, -2975339, -286689, 4031364, 9729712, 142271, 423591,
+-4658966, -3685619, 2778307, 1738925, 232465, 3989488, -6000606, -2003065, 9670656, 689342,
+1867237, -2518462, -3293166, 4589710, 3790846, -1563368, 3731253, 196495, 591632, -3657165,
+1310502, -3323768, -2646774, -3260417, 1104880, 181999, -1096827, -319975, 1112397, 2938831,
+-1398012, -5208185, 70867, -3690451, -4821638, -1189169, 2144799, -662499, 1911797, 1309428,
+1750736, -668404, -696858, -806917, -798327, 1726577, -77309, 3448322, -469762, 4253092,
+665183, 1069447, 3907347, 1548336, 984084, 5245229, -2088965, 1860258, -1788854, -3395172,
+3277060, -970126, -12348, 1467268, -624381, -2702071, -940061, 2472828, -1409286, 300648,
+-2909840, 1835025, -12709882, -6642704, -2950106, -2794950, 11274, 537, 968515, 146566,
+-694174, -5253282, -2348273, -5384279, -8358007, -7035157, 3964792, 4831302, 4941360, -1982664,
+-571231, -598074, -1089311, 1770063, 767725, -1826972, -3787624, 2687576, 2340220, 3367791,
+898722, -1198833, -2075006, 919123, 1633161, -440234, 3470334, -1740536, -98784, 3318936,
+-2583960, -4150549, 321586, 5610838, 1295470, 1197759, 784905, -7516, 715649, -933619,
+996432, -4533875, 716723, 4587562, -1079647, 10737, 443455, -1642825, -906775, -700617,
+-777926, -1298154, 2818036, -2720862, 2762201, 2325188, 5186173, -408022, 2897492, 6621229,
+-1270237, -5398237, -6068252, -302795, -852014, 343597, -5197984, 1583232, -3626026, 8703751,
+7128572, 2822331, 3726958, -2456721, 1767916, 5973226, 3155190, 6444062, -2410551, 2509872,
+3936338, -338229, 5003100, -2654827, 3189013, 403190, -2934537, -936840, -420370, -344134,
+-712965, 210990, -1387811, 335007, -969052, 5876052, -1217086, -486405, 156229, -2874944,
+-7491497, 4205847, -1642288, 1526861, -2865817, -3038689, -3075197, -2318746, 2177012, 5622112,
+4750771, 1757715, -136365, -1407676, 2032593, 3989488, -720481, -1534377, 5357435, -2452963,
+2681133, -2740726, -1788317, -1407676, 2150168, 1858647, -3372623, -2674691, 358093, 3679713,
+5287642, 2524904, 4202089, -740345, 3980361, 1226750, 4196183, -2389076, 1935420, 8547522,
+4546223, 3451006, -380641, -2834142, -5375152, 2699387, 10271414, 1360431, 3810710, 7292318,
+278099, -4264903, -1650341, -1302986, 462783, -2675228, -7037304, 2894271, 450972, 165893,
+3246995, -4768488, -1970316, 7591355, -1586454, -2792266, -4189204, 228707, -3922916, -613643,
+-1086090, -1162326, 887985, 6226092, 171799, -1769527, 2181307, -4686346, 6921877, -648003,
+-1021129, 8334384, -4217121, 607738, -5040144, -2290291, 998580, 521839, 2687039, 2853469,
+-4348655, 1781875, 2699387, 2020782, 1141924, 2695629, 2403034, 3798899, -2372433, -1247151,
+7224135, -2211371, 3314641, 1109175, 2767570, 2197950, 447750, -1585917, 737124, 5179731,
+-1532230, 413391, -157303, 1846299, 5459441, -1372779, -3465502, -8707509, 2425046, 856309,
+1328219, 1675037, -861678, -3620121, -11673184, 6289980, -4360466, -5423470, -495532, -10871099,
+1739462, 4354560, -2061584, 9308268, -4036196, -9460202, 1684164, 4690105, -4345970, -6453725,
+11621645, 25770, -1518271, 3959423, -3519726, -775242, 488016, -5252208, 2778844, 177167,
+972273, -444529, 5017059, -634581, 2467996, 3695283, -6512244, -1964948, -4015258, 6806450,
+-3753802, -920734, 3732864, -711891, -4161823, 3499862, 7500087, -3330747, 3241090, -3459059,
+4647692, -2102387, 2061047, 1472637, -3756486, -7559680, 3921842, 7071127, -1411434, -981400,
+2667712, 5281736, 3300682, -4829154, -1547262, -4110821, -1375463, 2895882, -4527433, 2508261,
+3086471, -3133716, -1098438, 2065879, -5192079, -1685238, 2685965, -1329829, 1669669, -228170,
+-4409321, 5577015, -6124087, -6065031, -10414759, 4418985, 11044508, 1713155, -1947231, -907849,
+-1817308, 9653476, -5710696, -5181341, -1184874, -5708012, -1714229, -6197638, -2642479, -4313758,
+-8649527, -2341831, -1837172, -186294, -863288, 2398202, 5311801, 2005213, 2690797, -7860864,
+1114544, 42413, -2382633, 2969970, 1621350, -2136209, -887985, -5491116, -6177237, -689342,
+7182259, -1803886, -3439195, -500364, -2161979, -4637491, 271120, -4833449, 10729365, 9223979,
+2503429, -2347737, -2253247, 1324997, 1806571, 2246268, 1964948, -178778, 4158065, -3216394,
+1979980, -2722473, 354872, 565325, 2462627, 2208150, 5213017, -1393180, -2757906, -1918240,
+-11150809, 1348083, 2687576, 44560, 4475356, 3372086, -3083250, -10333154, 1308891, 11414949,
+9912785, -10684805, -10584947, 3060164, -8512625, -3852049, 721018, -128312, -3740917, 8771397,
+3246459, -11306501, -1401770, 1139240, -560493, 7946227, 2336999, -5014375, 7446937, 3390340,
+580894, -3789235, -4971962, 3830037, -3358128, -7504919, -1918240, -583579, -4026532, -4291746,
+-6892886, 7292318, 2684, 1474248, -4927401, 578210, 4360466, -3349001, -8564702, -7708393,
+8094940, 2410551, 7608535, -806380, 1816234, 6463389, 11640972, 4420595, -2049773, -5702106,
+-3198677, -2582886, 1301912, 1175210, -5397700, -1439888, 6495601, 5528160, 9012452, 5042829,
+-7255811, -5796595, 7305203, 4796942, -4853850, 632434, 7461432, 1234266, -1250909, -5764920,
+6127845, 5804112, -2366527, 9787157, 1843078, -4452808, 1800665, -1687385, -827318, 5362267,
+-8920110, 5378373, -5819681, 1043677, 4791036, -74625, -2310693, 1755568, -6080063, 245887,
+-4709969, -13942538, -4166655, 5914170, 3923990, 2168959, -3281892, 2872260, 1392106, 14925011,
+2680597, -5004711, 5668820, 1136556, 1314260, 9957345, -2714956, -2726231, 3590056, -6912750,
+8550743, 7835631, -26307, 4479114, -1468879, -4170950, -387084, -5254893, 629750, -5128728,
+2243047, 73014, 1717987, 772020, -8814884, -1673427, -942745, 708133, -4314295, 2200097,
+2250026, -1474784, 12164958, -4908611, -10306311, 6643778, 10700374, 2733210, 2996277, -4175782,
+9250286, -2565706, 1829656, 4570382, 1496259, -3395172, 4552129, 2624225, 677531, 907849,
+30595200, -8519068, 403727, -3244311, -1708860, -6935299, 96100, -17957258, 9511742, -6538014,
+-172872, 10179609, 5382131, -6949794, -7031399, -2845416, -5952288, 5581847, -14389214, 2648921,
+6455873, 8370892, 2028835, 2469606, 729071, 1344862, -1540283, -4643934, -13035226, -1988033,
+2150705, 6207839, -4385699, 6002754, 2813741, -2402497, -357556, 4689031, -4344360, -4527970,
+-2097018, -3423089, 59056, -11797738, -4961761, -2706366, 311385, 9599789, 2792266, 9188009,
+3820910, -208306, -4895189, 919123, 1371168, 1629403, 3983045, 12912282, 2405182, -11504070,
+4053912, -4283693, 758062, -4068945, -3798899, -1906429, 6157910, 3609383, -19449222, -7327751,
+-4518843, 4548371, 1131724, -3876208, -333934, 12375948, -1323387, 6920266, -4279935, -5509370,
+4221953, -9885941, 973347, -22564148, 5786395, -7637526, 2557653, -7920457, -15976741, -2886218,
+-3413962, 11258183, 5324149, 3827890, 8053, 15067819, -11186779, 2484102, 4784057, 11570642,
+-13320304, -8169565, -2312303, 799938, -512712, -4226248, -867583, 3791919, -6983080, 1191317,
+4779225, -1161252, 1003412, -6275484, -6425271, -4535486, 18842558, -133681, -4079682, 6875169,
+-4028143, -9569187, -7203197, -5316633, -939524, 2985539, 1069984, 356482, 10618233, 9080098,
+-1318555, 3059091, 2618320, -12101607, -7772280, -788127, -617938, -3372623, -7762080, 9631464,
+12248710, -10101763, 6704444, 5771363, -1726577, -9696962, -15015743, -15023796, -11284490, -7060390,
+-13162464, 714038, -10989748, 5738613, -9239012, -7461969, -5433671, -5794448, -2027761, -13368086,
+455267, 14982993, -5355288, 7990787, -3251290, 14962055, 12368432, 5378373, -15461345, -3714073,
+20362440, -5064304, 15067282, 2622078, -14675903, -7122667, 17047798, 642098, -11651709, 561030,
+-9947681, -1044214, 3375308, 1739999, -2075006, -16754667, -15301895, 4574140, 10891500, -9367861,
+-966368, 4721243, -840203, 2145873, 18159658, 3863323, 2550674, 2119566, 5924908, -7509214,
+-5849746, -3527779, -19378356, -5859946, -7359427, -4254702, 4937065, 4189204, -1374390, -1052267,
+-7788923, -10594074, 14873472, -2203855, -13451838, -5048197, 2448668, 11380053, -8276939, -1050120,
+-8812736, 71941, -10524280, -2147, -2616172, -18020072, 1324461, -3826279, 13482976, 821413,
+-11831024, -8499203, 6842957, -24721832, -12948253, -8374113, -13857712, -7099044, -5811091, -13943074,
+14622216, -4111894, 22184042, -11133629, -17180942, -3107946, -11628087, 19489488, -6919729, -9994926,
+-5000953, 5362804, 9517111, 8616778, -2349884, -2074469, -4750234, 2323041, 15573551, -223875,
+1161789, -4918812, -2384244, -8121783, -3117610, 3918084, 2326799, -6658273, -104690, -9952513,
+1585917, -2789045, -3536906, 4438849, 1425392, -4456029, -2448131, 9028558, 2696703, -6877317,
+-10113574, 16221555, -1413044, -24839944, 12428025, -2355253, -11481521, 5579700, -2372970, 1711008,
+-3341485, 9405978, 2436857, 1614908, 23203560, 24770150, -9600326, 3595425, -19274740, -2637647,
+-4896263, 9125732, -4401268, 3179350, 5443871, -2714419, 11394548, 29878476, -22391276, -7296076,
+-14149233, -9578314, 11425150, -13073344, 27553826, -3386582, 8440148, 1346472, 6698539, -17296908,
+3131568, 4265977, -1289027, -2815888, -1549946, 4786204, -10575820, -6659884, -1586454, -3287798,
+-13105019, -11869679, -3242700, -5696201, 15506443, -4474282, -7640210, -5788542, 5157182, -8499203,
+-3675418, -14416058, 6231998, -5832029, 5424007, -5472862, 6951942, -4306242, -24451248, -12860743,
+3110093, -2524367, -1954210, -8193187, -14849313, -1561221, 5735929, 3455301, -3881577, 3879429,
+6687801, 21902186, -10522670, 9832791, -26472568, 568009, 2888903, -4190278, -8335995, 3958349,
+-92342, -186831, 4597763, 16591459, 11004780, 7542500, -6318971, -7890929, 7300371, -13416404,
+700617, 5854041, -9103183, 11152419, 36368172, 24252070, -5849209, -16602196, -9750113, 20675972,
+-24680492, 515396, -5562520, -7126962, 11403675, -19606526, 3447248, -10434086, 717260, -13884556,
+-9109089, 700617, 1657321, -289910, -11624866, 19291382, 5067525, -9795747, 4650376, -3453154,
+2783139, 29177860, 10497437, -9152038, -6322192, 674847, 10351408, 1734093, -21341692, -6285685,
+-14410689, -5937256, -6158446, 6810208, -3069828, -2882997, 974958, -1522029, -9847286, -13503377,
+9466108, -5574331, 3423089, -1336809, 12346420, -9793599, -5268851, 2108829, 5890548, -12721156,
+14639396, -9113384, -18257370, -18931678, -5211406, -5944235, -6571837, -4794794, -26410290, 9092446,
+-11786464, -4886599, -9572945, 14692546, 6464463, 6663105, 1483911, -3105261, -12019466, -5328981,
+-34716756, -4629975, 23584202, -28909962, -11126113, -1023813, -8509941, 10020159, -5716602, 31960462,
+-3028489, -7409893, -5145371, -1828046, 9661529, -6840809, -6060736, 25943214, -19164144, -2803540,
+6289443, -4744328, 16636556, 8817031, -1036161, -2581275, 7101729, 8848170, 10282689, 7817914,
+17513266, 4992900, 7545184, 3951370, -5654325, 28600724, 3666292, 4815732, 7348152, 3684008,
+21028160, -2199560, 5114769, 6550362, 5976447, 2696166, 13763223, -9021042, -6831146, 13034689,
+-2767570, -14841259, -3849901, -25350508, -8613557, -5642514, 22810572, -22914188, -3213709, -116501,
+-1175210, -2406792, 13184476, 36151276, -7033546, 3325379, 3736085, 4143570, 17283486, -21090436,
+-20385526, -20144470, 31420906, -328028, -12040941, 25333864, -9906342, 19982872, 2648384, -21640730,
+-60681444, 11574937, -13982266, -24483462, 27406724, -16666621, -7410966, -24107652, 6879464, -5335423,
+-22042310, -8099772, -12745852, 5721970, -11732240, -42950, 5750961, 9632538, 6097780, 16772384,
+3623342, -756988, -914291, -15284178, -10347113, -11055246, 9368934, 12406550, 6993281, 4025995,
+582505, 4434017, 11183558, 23211078, -10272488, -6845104, 5192079, -11381663, 12494060, 1927367,
+-9346386, 23664732, 9940702, -20929912, 9185324, -20146618, 3490735, 3218004, 11535745, -6094022,
+-5366562, 30277908, 13276281, -13747653, 9416179, 15787226, -11180874, -27346056, 16452946, -2657511,
+1345935, 1700270, 8324184, 41140956, -1920924, 4653597, 10153303, -761283, 12030203, 4827543,
+-19279034, 3616363, -8520678, -18818400, -22079890, 47099148, 9820443, -2866891, -5877126, 10735808,
+42164232, 19591494, 4824322, -1100585, 13953812, 35525284, 8536784, 12310987, 10755672, 25336012,
+-16575889, 16428787, 6956237, -48410724, 14033269, -6804302, 14032195, -15057082, 11047193, 7594576,
+14690399, -107911, 6005438, 2359011, -14153528, 6844031, 13226889, -11472395, 6427419, -11155104,
+-7128035, 34696356, 3091840, 30699352, -22374632, 9496173, -1616518, -4506495, -1202054, -2792803,
+4249334, 11144366, 7271917, -1008780, 17010754, -28196998, -27012660, 18976240, -15652471, -4085051,
+-4158602, -18358300, 8474507, -5036386, 4470524, 2522757, 29073708, 14141717, 14960445, 5528697,
+3453691, -27513560, -7013682, 12821014, -1035087, -295816, -760209, -9568113, -24014772, 11507291,
+-41874856, 35594004, -14653892, 6460705, 24101746, -34725884, -281320, -3476239, 8877161, 12192875,
+15350750, 24887724, 4861903, -16966732, 9580998, 26508538, -37975564, -23263690, 26371100, 702227,
+296353, 579284, 2695092, -1358283, -199716, 12538620, 8559333, -19192598, 1611150, -5922760,
+32583770, 18709952, -6166500, 1183800, 4262218, 3218004, 170725, 10884521, 1544578, 8153459,
+33188286, 3681324, 3811247, -5838471, 8775155, -32118840, -13179107, -14048838, -1058710, 2350421,
+-27208618, 9831180, -24104968, 7209640, 25703232, -6653441, -22444962, -13392782, 9847286, -5667210,
+-46160696, 11495480, -32013076, -8394514, -3424163, -279173, -12269648, 1910724, 17440252, -14942191,
+-29496762, -47967268, 38487200, 9437117, -1792075, 8078834, 50638740, -54569708, 21360482, 29607358,
+-36139464, -9531606, -19988240, -9099962, 50324132, -21893058, 35391068, -15852187, -6049462, -7976291,
+10857140, 5794985, -45622752, -7169911, -12877386, 20443508, -81604, 9301289, 14425721, -20499878,
+-5073967, -12643310, 6774774, 19389630, 10281078, -26832272, -5873368, 6861747, 2801393, -513249,
+-14171781, -4213900, -26265336, -3375844, -4440996, 24602646, -21599928, 52223580, 10318659, -13583908,
+21578452, 2113661, 28293098, 17258790, 26803818, 8134668, 24404542, 21982180, 23847806, 27451284,
+3051038, 26599806, -33287608, -4268124, 5840082, -20033338, -4683662, 14671608, -26124138, -35569308,
+13708462, 24973624, -361314, 6481106, -26921928, -6159520, -22790708, -419833, 23259932, 1824287,
+44633300, 19233400, -12421582, 33441690, -70490616, 64120640, -13011603, -23814520, -17310328, 43887588,
+-32727114, -7393786, -7938174, -2175401, 26569742, -29068876, -417149, 9101036, -6130529, -5335960,
+2768107, -17162152, 24082956, -375810, -33656976, -10648298, -6486475, 613107, -37029596, -1926830,
+6932077, -9381819, 2629594, 9142912, 26557930, -11613055, -3743601, 3593814, -13799193, -52099028,
+6844031, 38511900, -17935246, -32688996, 4717485, 30745524, -12460237, -11274826, -39195336, -8443369,
+3629247, 28210418, 16709033, 2111513, -28665148, -19807852, 27896350, -31614718, 13662291, 47527572,
+31159988, 36387500, -15107011, 20351702, 17719424, -44947908, -12098386, -25204478, -1803349, 22936736,
+2888366, 24815784, 26516592, -45336600, 52168284, -32009318, 5029944, -1331440, -15858630, 41517300,
+5531381, -25339770, 44077100, 29745870, 5428839, -9146670, -21507048, 12263205, -829466, -2867428,
+-483184, -1593970, 1046898, -9417790, 11833172, -1044214, -37555732, 8856223, 4436701, -14128295,
+1503775, 15856482, -4606353, 337692, -26840862, 19522774, -8880919, -3757023, -1762547, 10809896,
+-14036490, -1283122, 4511863, -250719, 4285841, -7856032, 21748104, -11490111, 37507412, -23037668,
+-22706418, 21853330, -24033564, 714575, 20005958, -17994840, -6533719, 9464497, 12975096, 14975477,
+-54176716, 17181480, 825171, -13139379, 36586680, -18057116, 3618510, -163746, -28350006, 38013680,
+-217970, -1873143, -18423800, -3738232, 33414846, -7350837, 797253, 1427540, 11297911, 5634460,
+-36529232, 19917374, 37652904, -17117592, 17510582, -25291988, 50496468, 5413270, -33929704, -24130736,
+-80461920, -121709176, 7871065, 105049528, 1190780, 274979360, 248930400, 148951616, 287339232, 188441152,
+-32073206, 10234907, -37939056, -227597296, -129892160, -100756712, -222752032, -183257664, -55137716, -108183784,
+-124351648, -11412802, 5605469, -53501332, 9527311, 45276472, -62039192, -52889836, 78230680, 14404783,
+-21863532, 53906136, 72769632, -2510409, 74513384, 128199944, 43918724, 33065342, 130185824, 87116968,
+7488276, 94655176, 140815328, 59967408, 69956968, 160880880, 58329412, 18434536, 152754800, 150445184,
+43019468, 181774288, 259935184, 93846112, 103291280, 179526416, 50458348, -65550864, 4243965, -67559832,
+-229549888, -218926288, -234149264, -371325152, -401654080, -428382176, -506228480, -528294400, -517024416, -501871232,
+-443181568, -395437632, -323578528, -207575232, -141330192, -7804493, 207479136, 179362672, 35194572, 0,
+0, 0, 0, },
{
-7441568,
--3151432, 441845, -2930778, -376883, 3689377, -4294431, 1852205, -1865626, -1881196, -3999152,
--1311039, 6078453, -4331475, 3453691, 1873143, -3306588, -148176, -4864588, 1398012, -404264,
-2983929, -8735963, -3820910, -1162326, 1890323, -725850, -3172370, -10201, -863825, -3992709,
-3882114, -7516, 1139240, 4190278, 224412, -1038845, -682363, -801548, 386547, -1806034,
--2829847, -2325725, -2204392, -1247151, -1381906, 5653788, 3712462, 1368484, 1187559, 1036698,
--1246077, -381178, -1191317, 5369783, -718333, 1422708, -3681861, 1379221, -339302, 2182917,
-1082869, 758062, -1595044, 268972, -986232, 4189204, 20401, 476741, 1946694, 1056025,
--2605972, 1250372, 544387, -1300301, -175557, 61203, 3103651, 9375377, 2301566, 1213865,
--2005750, -963146, -4553202, -378494, -1047435, 3354906, 3287798, -3340948, -2121177, -2093797,
--1660542, -2437394, 393526, 2622078, -2090575, -2595771, -7725036, -5989332, -4116726, -399432,
-559956, 5565741, -3045132, 2652679, 1900523, 1258962, 475668, -4524211, 1230508, -9406515,
-1243393, 61203, 553514, -857920, -5549635, -2815351, -4771172, 62814, 424665, -3197066,
--7479149, 4965519, -264677, -4694400, 76773, 2697240, 737124, -1800128, 1165547, -2805151,
--1007707, -2670933, 1913408, -2833068, 3645354, 2588255, -512175, -5367636, 316754, 373125,
--406948, -2188823, 1309965, 550293, -1137630, 2371359, 2971044, 1684701, 166967, -354872,
-881005, -3081639, -10150081, -11382737, -815507, -4498442, 3469797, -5577552, 1392106, 2581275,
--3815005, 3110093, 11382737, 637803, -1061394, 6242198, 832687, 6265284, 82141, 2854543,
--4499515, -5953362, -337692, 2243047, -4149475, -1345399, -436476, -1184337, 1114544, -1235877,
--2200634, 2040646, -1046361, -893890, 4459250, 6352257, -2007897, -3467649, 1254667, 5069135,
-1923072, 6503118, 259309, -970663, -181999, 5786932, 362925, -4242891, -2306398, 4517232,
-3319473, 3490735, 965831, -2363843, -4722854, 835908, 2224793, 2648384, -1009317, -2596845,
-5119064, 3289945, -824097, -3014530, 204011, -2169495, 5366562, 1421634, 1039382, 1452773,
-681826, 808528, 3388729, 214212, 3454764, -1107028, 5493800, -32749, -4663798, 6007049,
-4163971, 6323803, 6525129, -1543504, 3255048, -1377074, -3742527, -318901, 9677635, 4276714,
-2138357, 3481608, -4076461, 6947647, 2937758, 4664335, -1398012, -7653632, 3198140, -11957726,
-2400350, -3032784, 2377265, 1917703, -259309, -4096325, 960462, 2722473, -1640678, 2555506,
-6038724, -404264, -5078262, -6835441, 1030255, 3102577, -6365679, 3549254, -5987722, -3841312,
-4264366, -2471217, -5074504, -2411087, -3598646, 5586142, 7559680, 4353486, -2803540, 73014,
-4002373, 2472291, -416075, -3071975, -1554778, -2689723, 2820183, 9466645, -160524, -5065377,
--4125316, 2231236, 672162, -1869921, -5677410, -58519, -4880157, -1834488, 651761, -779537,
-3698504, 743029, 4691178, 5570573, -4841502, -1762010, 13325673, -3549254, 1248225, 1948841,
--8884140, -7483981, 128312, 8770860, 6597070, 10591389, 3406446, -2964601, -4632659, 792421,
--2702608, 2091112, 911070, 3573950, 6459094, 2089502, 4727686, -142808, 2749853, -2923799,
--6242735, -3220689, -4816269, 42950, -1450625, 1401770, -7602629, -3748970, -1158567, 2721936,
--3853660, 7680476, -8879845, 1823751, -5669894, -4489852, 2325188, 2165737, 7231115, -881542,
-1653026, -2183991, 4972499, 5451924, 1273458, -1252520, -5881958, -843961, 1637993, -4365835,
-3989488, -4800163, 1686848, 7751342, 6183679, 28454, -2930242, 1160178, 7374996, -1035624,
-1429687, 1166621, 5834176, 31139, -2342368, -3973919, 2034741, -5940477, 1246614, 12558484,
-1803886, 6146098, -1505923, -5070746, -8145406, 4016331, -5749351, -6321118, 1465121, -3157875,
--19420232, 1718524, 3238405, 17782776, 6028524, 1152662, -7944079, 7311108, 3459059, -3431142,
-4140885, -849330, 6747931, -4105989, -1799591, -1488743, -1509681, -2864206, -945967, 4483946,
-4286914, 6867653, 2741263, 3296924, 163746, -4708895, -4702453, 6511708, -3401077, 1347009,
--357019, -4818954, 6988449, -1245004, -2674691, 1063541, 5158256, -3370476, 7705708, -9542880,
--7563438, -9667971, 2577517, -5473399, -7941395, -1952600, 7928510, -3300682, 2566780, 4511327,
--3025805, -4343823, 625992, 709743, 2849711, 498216, -2095407, -214748, 10191421, 4292283,
--3691525, -12279848, -9561134, 3859028, 12186970, 10210211, -7163469, 669478, -4236985, 2711735,
--3429532, 5726265, -9710384, -1726577, -12060805, -3621194, 1836635, 4146254, -11013370, -2840047,
-7579544, -1014149, -11048266, 5615133, -3547106, -6445672, 3440269, 5662915, 1276142, 1066763,
-1949378, 7416872, -3659849, -3320010, 1903207, -3940633, -2007360, -97711, -534723, 40802,
-5949604, 2891050, -846645, -770410, 3391414, 1236414, 4183298, -647466, 4726075, 4926328,
-1861332, -5986648, 584652, -1112933, -4305705, 5143224, -3389266, 1943473, -4069482, -1750199,
--13873281, 850404, 10616622, 562104, 11275363, -2586107, -3068217, -12481712, 13627931, 6169184,
-7507066, 808528, 6001143, -614717, -708133, 4924717, -3951370, 1372779, -856846, -14155675,
-2132988, -3904125, 2428804, -2878702, 1814087, 11451457, 1825898, -15932718, -117038, 11295764,
--2160906, 6532109, -7052873, -5523328, -13017509, 7290170, 4391604, 8529268, 4576825, -4758287,
-7923678, -2263448, 7604240, -5089536, -3943854, 186831, -1172526, 5865315, 1741609, 4895189,
-6305012, -3858491, -2552284, -2415382, 4311074, -1132261, -2039573, 464393, -4823785, 2400887,
-2331094, -3102040, 4372814, 6546067, -2277407, -3428458, -354872, -5493800, -2041720, 7586523,
-1554241, -5185100, 10077067, -10839424, 2159832, 5361193, -1921461, -3755412, -277562, 4225711,
--7543573, 3757560, -2758980, -7182796, -4665945, -4445828, 671089, -2242510, -3879429, 1629940,
-12439299, 6295349, -1075889, -4378719, -10963978, 912681, 6969658, -4097936, -12141336, -73014,
--1370632, 65498, 2291365, 4653597, 5291937, -2390149, 1445257, 7538742, 635118, 8858907,
-9852118, 21573084, 14925011, 8981313, -2139968, -11540040, -3832185, 10453950, 4722317, -11129334,
-8454106, -1970853, -5307506, -6808060, 1210644, 18711026, -12486007, 13538274, 5498095, -2909840,
-4668093, -3640522, 9918690, -3688303, 5353140, 1065689, -6483790, -4650376, -6303938, 326954,
-5798206, -1510218, -3432216, 3679713, 730681, -993211, -12391518, 3979287, -6813966, -5205501,
-3783866, 8537321, -5871757, -8670465, 616328, 7774965, 927176, -4799089, -1577864, -2718714,
-3750043, 2835752, -2600603, -4419522, -6878927, 4857071, 11842299, 7524246, 3940096, -6184216,
-3747359, 7872675, -7953206, -10061498, 2053531, -8120710, -4159676, -16533477, 54224, -11076184,
-23852638, 382252, -9118216, 10302553, -11263552, 13086228, 1240172, -8187819, -13623636, -3470334,
-6946036, -11089606, 9915469, -1668595, 6460705, 7366943, -6227166, -2770791, -3668976, -5204964,
--1791538, -4860829, 996432, -5913633, 6276558, 3767223, 5304285, 10282152, 5533529, -1590212,
-12547210, 6249178, 2495913, -6645388, -6998113, 3686693, -5302674, 1270774, 4124242, -8222178,
-7281044, 18820546, 1664837, 13411035, 6561100, 6531572, 9779104, 641561, 5297306, 5448166,
--11921219, -8118562, 8637179, 719944, 8167954, 1598802, 8564702, -1122060, 3242700, 2327872,
--17172890, -846645, 4731444, 12008729, 2857764, 10630581, 1292785, -1941862, 3604551, 5131412,
--9539659, -15911780, -8507793, 2997350, 4224101, 1354525, 11479911, 4630512, -11056856, -1415729,
--9792525, -5228586, 4753455, -5589900, 2754148, 3083250, -5675263, -15651398, 5362267, -15507516,
--16889958, 3369402, -8051990, 7266011, 11429982, -3197603, 13262859, -3486977, 13117904, 16779364,
-550830, 616328, -16809966, -3677566, 2434173, 2571075, -1462973, -11828340, 1373853, -10078678,
-1822677, -3010772, 3237332, -4119948, -5798206, 1051730, -514859, -3941169, 4712653, -3758,
--1987496, 11996381, 5284421, 8899172, -5192616, 1295470, -4249334, 3121904, -373125, 4447439,
--877247, -4122632, -3973919, -11431055, -5665599, 17251810, 8016020, 11274289, -12716324, 2375117,
-10969346, -9070434, 1035087, 6043019, -2558190, 6039798, 1986959, -12457553, -2001455, -18910204,
--1163936, 6649146, 4809827, 11294690, -10687489, -10626823, -10106595, -16142098, 11140608, 6250788,
-1469416, -11093364, 9961640, -740882, -12705050, -11469173, -3288334, -3383361, -7983271, -4043712,
--4555350, -4983773, -2681133, -12964359, 6544994, 6371584, -211527, -1939715, -1813550, -5339181,
--14094472, -16672526, 883153, 5982353, -3784940, -10654740, -5085778, 6473053, 5837398, -617402,
--2668785, -5200132, -3863323, 8327942, -4398584, 5499706, -4140349, -944356, -15387257, -4623533,
--854699, 10664404, 3669513, -4087735, -8457864, -7530152, -11984569, 18592914, -8762807, 17503066,
-2902861, -9813463, 13066901, 10632192, 21922586, -22799298, 9304510, 1471026, 3545496, -6367289,
--5175973, 6800007, 5805722, -4390531, -8567386, 7639673, -4087735, 7672959, 12035035, 3554086,
--4313221, 5134634, 16377247, -27824408, -31216896, -18587544, -3885335, -12794708, 7521562, -10439455,
-423591, 6029061, -1547799, 20644298, 13757317, 5638755, -6663642, -4003447, 13302051, -1896228,
-1380295, -5330592, -13392245, 452582, 4249870, 3764002, -7771207, 6460705, -9127, -476741,
-11033234, 16747688, 258235, -10217727, -5466957, -19894826, -8774618, -4983773, -7038378, 1101122,
-2515777, -7169911, -3964792, -10129143, 9984188, 13328894, 9959492, 12407087, 8616241, 16178605,
-845035, 5492190, 2674691, -3061775, 5041218, 9465571, -10916196, -33726768, -9059160, 10781979,
--18645526, 8411693, 9593883, 3417720, -6657200, 176631, -5593121, -14254996, -5130876, 7746511,
--12271258, -10336913, 1658394, -8942659, 20166482, 20157356, -9888088, 26321170, -21997748, -1437203,
-4895189, -23023710, -5499706, -10313827, 4311611, -7748658, 20096152, 1418413, 759672, 22793928,
--352724, -22199612, -15948824, -11449309, 9167071, -2322504, -19487878, 4145180, 6708739, 9648644,
--11183021, 5055714, 11376831, 7872138, 8262980, -3665218, 13409425, 12202002, 5551782, -31032212,
-22841172, -11919071, 9446781, -3416110, -2040110, 4451197, -12148315, -8841727, 15103252, -7728257,
--733903, 11337103, -13075491, 11379516, -3800509, 10433549, -14477798, 19407346, -8099235, 30775052,
--3020436, 486405, 9539122, -8739185, -4022237, -5587753, 3955128, -3396246, -14858439, -22237194,
--4181151, 9901510, -4567161, -9495636, -19121194, 7316477, 3980898, -30916248, 1675574, -2488397,
-6700149, 11124502, -6556805, 9706626, 32529546, 14999636, -8860518, 21027086, 7991324, -14802605,
-6167573, 13271986, -1399623, -5674726, -18700824, -6160057, 12796318, 6959995, 6494528, 2628520,
--2739116, -8744553, -17617956, 8844411, -5496485, 3912178, -13347148, -8632884, 424128, -3187403,
-18864570, 4412005, 3666828, 12780212, 7438347, -22048752, -1652489, 6528887, -3121904, -734976,
-18685256, 4669167, 21574158, -13334800, -6774237, -4712653, -6880001, 6776385, -7187628, 14199699,
-16460999, -8337606, -14265734, 23885386, -12134356, -6954626, -2045478, 5816997, 4933307, -16086800,
--3126736, 7063611, -5574331, 9336185, -4190814, 13939853, -7118372, 1044214, 26473642, -3467112,
-19265076, 27076548, 5754720, 10965052, -5509370, -41586556, -22146998, -11431055, 1833951, 9121437,
--41660644, -9674951, 42950208, -16385837, -18851686, 38363184, -24832964, 21674552, 28387586, 11498701,
-3562139, -21726092, 7941395, -38219840, -19314468, 8440148, 19443316, 2284386, 4094715, 14522358,
-38218228, 26168698, 7628399, 1393717, -632971, 4230006, 2580202, -15147276, -333397, 9446244,
-11433203, 51533700, 28420336, 19717658, 36574868, 15013058, -6153078, 10936597, -1554241, 35453344,
-12052215, -3285650, -6912750, 14539538, -3304441, 16707960, -54400056, 1794223, 17238924, -1669132,
-21029770, -8944806, 4592931, 11143293, -51034948, -19971598, -5371931, -16775069, -22175990, -25227028,
-20946556, -15939697, 2603287, -5801964, 20633022, -38773892, -12666395, -6986301, 8915278, -2276870,
--6766184, 24824910, 43823160, -3958349, 9276056, -15131170, -5906654, 20311438, 21919902, -20780126,
--63768452, -14108431, 29155312, 3923453, -5214627, -7537668, 4187056, -11459510, -9951976, 12161737,
-12988518, 27576374, 13059385, 15598784, -4597763, 37436008, 9380745, 22810572, -1367947, 34285652,
--11755862, 21432960, -21113522, -2361695, 4839892, 14516453, -4460324, -15420006, -28571196, 14512158,
-4613332, 790811, -12545599, -30489436, 730681, 374736, -934155, 5588826, 20376936, -273267,
-15357729, 42526080, -16502338, 1443109, -12253005, 20317880, 23280334, -26181584, 24563992, 21209622,
--14503568, 2695629, 9060770, 13365401, 11877195, 30815854, 14589467, -16388521, 5999533, 40527312,
-18447422, -55876988, 19765440, 4219269, -38981660, -17696340, -8305393, -37248104, 9035001, 12190191,
-29326036, -21314848, 48659296, -40586904, 32833414, 71673880, 4448513, -39407936, 61197380, -13613973,
--1290638, 9020505, 34489660, -19859392, 1038845, 70104600, -35151088, 16829292, 23025320, 22762790,
--31565862, -2979097, 4947803, -15059766, 1999844, 7402913, -13297219, 12510166, -22112102, -5973226,
--9349607, -1542967, -13677323, -11169062, -5048734, 6782290, -24273008, -21747030, 31723166, 5974837,
--21619254, -5356898, 18304614, 47301012, -5382668, -23054310, 23324894, 36265632, -11981885, -2700461,
--606664, 13120051, -1564442, 21475, 14700599, -40074192, 25552908, -23124640, -1792075, -32770064,
-16124381, -2570001, -51392504, 24153822, -6176700, -18922552, 30082488, 3908957, 29417842, -27571006,
--14153528, -11085847, -29520920, -39539468, -56872348, 44641352, 13276281, 32871532, 24970402, -83752,
--10754598, 37688876, -14851997, 10384694, 9831180, -41316512, 36961952, 11461120, -9540733, 29808146,
-3339337, 813359, 15870441, -14777372, 40249748, -33127082, -16393353, 13368086, 14209899, 5299990,
--29020558, -19479824, -32442036, 16667694, 4820564, 15042049, 427349, 16221018, 7560216, 4288525,
-1024887, 13479218, -6607807, 6579353, -14844481, 9427453, -13755707, -2048163, -18262738, -15047418,
-823560, -18404472, 7654169, 36828272, 9252970, -31412854, 15114527, 9432285, 20477330, -1794223,
-34106336, -31998580, 4191888, 11136850, -28893856, -9331890, 57003880, 29557428, -76669464, -35256848,
-39788576, -14163192, -36908264, 10934987, -4644471, -31384936, 19311784, 30791158, -48245904, 5095442,
-40036076, -32911260, -27360016, 28703804, 2029909, -32854352, 30849140, -69800736, -7910793, -10036802,
--83419000, -11615202, -27593018, 10768020, 11195906, 26757646, -13313325, -28577638, -14538464, -42497092,
-3462281, 19223200, 6802692, 10208600, -39127152, 25448754, 989453, -40853728, 29526826, -44125956,
--21850646, -14577656, 10300942, 37351720, 37129992, -27917, -11410117, -73156712, 30346092, 80700288,
-25748866, 5144297, -44965624, -58880780, -28029494, -1785096, 30113090, -35483408, -25733834, -36483600,
--15186467, 75958104, 75535592, -9836549, -38338488, -27137750, -18890876, -4316442, 36863168, -14645302,
-9350681, 12310450, 23716810, -2929705, -20007568, -41130216, -22166864, 73904040, 27264452, 50901268,
--44797044, -18495740, -22120692, 52425444, -1631551, -71095664, -76762336, 47587700, 68295352, 126617784,
-17081084, -93201864, 9834938, -9425843, -35230008, 29841970, -31285078, -8602283, 2618320, 6777459,
--4783520, 5907191, 14090177, -22632330, -16755204, -1966021, 6129992, 11953431, -13928579, 549219,
-12975096, -10671920, 8573828, -6341519, 36974300, -2172717, -4119411, 18829136, 12490302, 16522739,
--7978976, 9911174, -2476586, -2244121, 16251083, 8910983, 3709241, 2683281, 21470004, -20742544,
--4524748, 165893, 28529320, -2327872, -4993973, 23518704, -5310190, -13013214, -9860708, 19086298,
--3861176, 7174206, 6769406, 1132798, -6279779, 1665374, 9332427, 730144, 24911884, 9585830,
-7864085, -12604655, -459562, 6715718, -15903190, 3676492, 7534983, 15002321, 1289564, -4733591,
-10946261, -596464, -18748606, 19237696, 7697655, -8392903, 19242528, -16128676, -914828, -13819057,
--7582765, 6757594, 57184804, 4913980, -21501680, -17287780, 2589865, 13297756, -1049046, 12174622,
--4759898, -2856690, -16172699, -3175055, -11385958, 18078054, -11314018, -558346, -7212324, -2952253,
--4305705, 2305861, -11974369, 2180770, -5252745, -7929584, 2280628, -935766, 521302, -1854352,
-4020090, 2405719, -9982041, -5926518, -112206, -6271189, -5909875, 5315022, -1674500, -9650792,
-607738, -5170604, 4250944, -14449881, 7410429, -6027450, -11317239, 3884798, -5179731, -5406290,
-1545651, 358093, 736587, -2020782, 2551211, -4096862, 5106716, -2669322, 621697, 8756901,
--5886253, 3236258, -1450625, -438087, 2415382, -6434935, 6420976, -6804839, 6439767, -1123671,
--61740, -4282620, 6183679, -6677064, 831076, 2535105, -8554501, 8676908, -4320737, -27081380,
--45240500, 47907676, 163869648, 32117228, 48748416, -100729328, -141508432, -58276264, -74418360, 57521424,
-131404528, 76488000, 50305880, 5655398, -73475616, -63890860, -65136936, -25817048, 35844188, 31711354,
-32593970, 30465276, -1734093, -4335770, -8388071, -9878962, -16035260, -1569274, 19426674, -1308354,
--12519293, -4124242, -17751100, -9069360, -3764539, -3761855, 31585190, 30579630, 16981226, 19563576,
-118648, -22992570, -24749750, -43387224, -30072288, 4407174, 2649995, 9312563, 24894168, 37159520,
-21117818, 18869938, -1850594, -20535312, -30039538, -24758876, -22081500, 3252901, 6372121, 13687524,
-8145943, 6349573, 112743, -7495255, 1671816, 758062, 1774358, 18221398, -3234110, 7907035,
-6639483, -13961865, -27626304, -27039504, -26032334, 5912023, 14761803, 5912560, 384936, 0,
-0, 0, 0, },
+-3151432, 441845, -2930778, -376883, 3689377, -4294431, 1852205, -1865626, -1881196, -3999152,
+-1311039, 6078453, -4331475, 3453691, 1873143, -3306588, -148176, -4864588, 1398012, -404264,
+2983929, -8735963, -3820910, -1162326, 1890323, -725850, -3172370, -10201, -863825, -3992709,
+3882114, -7516, 1139240, 4190278, 224412, -1038845, -682363, -801548, 386547, -1806034,
+-2829847, -2325725, -2204392, -1247151, -1381906, 5653788, 3712462, 1368484, 1187559, 1036698,
+-1246077, -381178, -1191317, 5369783, -718333, 1422708, -3681861, 1379221, -339302, 2182917,
+1082869, 758062, -1595044, 268972, -986232, 4189204, 20401, 476741, 1946694, 1056025,
+-2605972, 1250372, 544387, -1300301, -175557, 61203, 3103651, 9375377, 2301566, 1213865,
+-2005750, -963146, -4553202, -378494, -1047435, 3354906, 3287798, -3340948, -2121177, -2093797,
+-1660542, -2437394, 393526, 2622078, -2090575, -2595771, -7725036, -5989332, -4116726, -399432,
+559956, 5565741, -3045132, 2652679, 1900523, 1258962, 475668, -4524211, 1230508, -9406515,
+1243393, 61203, 553514, -857920, -5549635, -2815351, -4771172, 62814, 424665, -3197066,
+-7479149, 4965519, -264677, -4694400, 76773, 2697240, 737124, -1800128, 1165547, -2805151,
+-1007707, -2670933, 1913408, -2833068, 3645354, 2588255, -512175, -5367636, 316754, 373125,
+-406948, -2188823, 1309965, 550293, -1137630, 2371359, 2971044, 1684701, 166967, -354872,
+881005, -3081639, -10150081, -11382737, -815507, -4498442, 3469797, -5577552, 1392106, 2581275,
+-3815005, 3110093, 11382737, 637803, -1061394, 6242198, 832687, 6265284, 82141, 2854543,
+-4499515, -5953362, -337692, 2243047, -4149475, -1345399, -436476, -1184337, 1114544, -1235877,
+-2200634, 2040646, -1046361, -893890, 4459250, 6352257, -2007897, -3467649, 1254667, 5069135,
+1923072, 6503118, 259309, -970663, -181999, 5786932, 362925, -4242891, -2306398, 4517232,
+3319473, 3490735, 965831, -2363843, -4722854, 835908, 2224793, 2648384, -1009317, -2596845,
+5119064, 3289945, -824097, -3014530, 204011, -2169495, 5366562, 1421634, 1039382, 1452773,
+681826, 808528, 3388729, 214212, 3454764, -1107028, 5493800, -32749, -4663798, 6007049,
+4163971, 6323803, 6525129, -1543504, 3255048, -1377074, -3742527, -318901, 9677635, 4276714,
+2138357, 3481608, -4076461, 6947647, 2937758, 4664335, -1398012, -7653632, 3198140, -11957726,
+2400350, -3032784, 2377265, 1917703, -259309, -4096325, 960462, 2722473, -1640678, 2555506,
+6038724, -404264, -5078262, -6835441, 1030255, 3102577, -6365679, 3549254, -5987722, -3841312,
+4264366, -2471217, -5074504, -2411087, -3598646, 5586142, 7559680, 4353486, -2803540, 73014,
+4002373, 2472291, -416075, -3071975, -1554778, -2689723, 2820183, 9466645, -160524, -5065377,
+-4125316, 2231236, 672162, -1869921, -5677410, -58519, -4880157, -1834488, 651761, -779537,
+3698504, 743029, 4691178, 5570573, -4841502, -1762010, 13325673, -3549254, 1248225, 1948841,
+-8884140, -7483981, 128312, 8770860, 6597070, 10591389, 3406446, -2964601, -4632659, 792421,
+-2702608, 2091112, 911070, 3573950, 6459094, 2089502, 4727686, -142808, 2749853, -2923799,
+-6242735, -3220689, -4816269, 42950, -1450625, 1401770, -7602629, -3748970, -1158567, 2721936,
+-3853660, 7680476, -8879845, 1823751, -5669894, -4489852, 2325188, 2165737, 7231115, -881542,
+1653026, -2183991, 4972499, 5451924, 1273458, -1252520, -5881958, -843961, 1637993, -4365835,
+3989488, -4800163, 1686848, 7751342, 6183679, 28454, -2930242, 1160178, 7374996, -1035624,
+1429687, 1166621, 5834176, 31139, -2342368, -3973919, 2034741, -5940477, 1246614, 12558484,
+1803886, 6146098, -1505923, -5070746, -8145406, 4016331, -5749351, -6321118, 1465121, -3157875,
+-19420232, 1718524, 3238405, 17782776, 6028524, 1152662, -7944079, 7311108, 3459059, -3431142,
+4140885, -849330, 6747931, -4105989, -1799591, -1488743, -1509681, -2864206, -945967, 4483946,
+4286914, 6867653, 2741263, 3296924, 163746, -4708895, -4702453, 6511708, -3401077, 1347009,
+-357019, -4818954, 6988449, -1245004, -2674691, 1063541, 5158256, -3370476, 7705708, -9542880,
+-7563438, -9667971, 2577517, -5473399, -7941395, -1952600, 7928510, -3300682, 2566780, 4511327,
+-3025805, -4343823, 625992, 709743, 2849711, 498216, -2095407, -214748, 10191421, 4292283,
+-3691525, -12279848, -9561134, 3859028, 12186970, 10210211, -7163469, 669478, -4236985, 2711735,
+-3429532, 5726265, -9710384, -1726577, -12060805, -3621194, 1836635, 4146254, -11013370, -2840047,
+7579544, -1014149, -11048266, 5615133, -3547106, -6445672, 3440269, 5662915, 1276142, 1066763,
+1949378, 7416872, -3659849, -3320010, 1903207, -3940633, -2007360, -97711, -534723, 40802,
+5949604, 2891050, -846645, -770410, 3391414, 1236414, 4183298, -647466, 4726075, 4926328,
+1861332, -5986648, 584652, -1112933, -4305705, 5143224, -3389266, 1943473, -4069482, -1750199,
+-13873281, 850404, 10616622, 562104, 11275363, -2586107, -3068217, -12481712, 13627931, 6169184,
+7507066, 808528, 6001143, -614717, -708133, 4924717, -3951370, 1372779, -856846, -14155675,
+2132988, -3904125, 2428804, -2878702, 1814087, 11451457, 1825898, -15932718, -117038, 11295764,
+-2160906, 6532109, -7052873, -5523328, -13017509, 7290170, 4391604, 8529268, 4576825, -4758287,
+7923678, -2263448, 7604240, -5089536, -3943854, 186831, -1172526, 5865315, 1741609, 4895189,
+6305012, -3858491, -2552284, -2415382, 4311074, -1132261, -2039573, 464393, -4823785, 2400887,
+2331094, -3102040, 4372814, 6546067, -2277407, -3428458, -354872, -5493800, -2041720, 7586523,
+1554241, -5185100, 10077067, -10839424, 2159832, 5361193, -1921461, -3755412, -277562, 4225711,
+-7543573, 3757560, -2758980, -7182796, -4665945, -4445828, 671089, -2242510, -3879429, 1629940,
+12439299, 6295349, -1075889, -4378719, -10963978, 912681, 6969658, -4097936, -12141336, -73014,
+-1370632, 65498, 2291365, 4653597, 5291937, -2390149, 1445257, 7538742, 635118, 8858907,
+9852118, 21573084, 14925011, 8981313, -2139968, -11540040, -3832185, 10453950, 4722317, -11129334,
+8454106, -1970853, -5307506, -6808060, 1210644, 18711026, -12486007, 13538274, 5498095, -2909840,
+4668093, -3640522, 9918690, -3688303, 5353140, 1065689, -6483790, -4650376, -6303938, 326954,
+5798206, -1510218, -3432216, 3679713, 730681, -993211, -12391518, 3979287, -6813966, -5205501,
+3783866, 8537321, -5871757, -8670465, 616328, 7774965, 927176, -4799089, -1577864, -2718714,
+3750043, 2835752, -2600603, -4419522, -6878927, 4857071, 11842299, 7524246, 3940096, -6184216,
+3747359, 7872675, -7953206, -10061498, 2053531, -8120710, -4159676, -16533477, 54224, -11076184,
+23852638, 382252, -9118216, 10302553, -11263552, 13086228, 1240172, -8187819, -13623636, -3470334,
+6946036, -11089606, 9915469, -1668595, 6460705, 7366943, -6227166, -2770791, -3668976, -5204964,
+-1791538, -4860829, 996432, -5913633, 6276558, 3767223, 5304285, 10282152, 5533529, -1590212,
+12547210, 6249178, 2495913, -6645388, -6998113, 3686693, -5302674, 1270774, 4124242, -8222178,
+7281044, 18820546, 1664837, 13411035, 6561100, 6531572, 9779104, 641561, 5297306, 5448166,
+-11921219, -8118562, 8637179, 719944, 8167954, 1598802, 8564702, -1122060, 3242700, 2327872,
+-17172890, -846645, 4731444, 12008729, 2857764, 10630581, 1292785, -1941862, 3604551, 5131412,
+-9539659, -15911780, -8507793, 2997350, 4224101, 1354525, 11479911, 4630512, -11056856, -1415729,
+-9792525, -5228586, 4753455, -5589900, 2754148, 3083250, -5675263, -15651398, 5362267, -15507516,
+-16889958, 3369402, -8051990, 7266011, 11429982, -3197603, 13262859, -3486977, 13117904, 16779364,
+550830, 616328, -16809966, -3677566, 2434173, 2571075, -1462973, -11828340, 1373853, -10078678,
+1822677, -3010772, 3237332, -4119948, -5798206, 1051730, -514859, -3941169, 4712653, -3758,
+-1987496, 11996381, 5284421, 8899172, -5192616, 1295470, -4249334, 3121904, -373125, 4447439,
+-877247, -4122632, -3973919, -11431055, -5665599, 17251810, 8016020, 11274289, -12716324, 2375117,
+10969346, -9070434, 1035087, 6043019, -2558190, 6039798, 1986959, -12457553, -2001455, -18910204,
+-1163936, 6649146, 4809827, 11294690, -10687489, -10626823, -10106595, -16142098, 11140608, 6250788,
+1469416, -11093364, 9961640, -740882, -12705050, -11469173, -3288334, -3383361, -7983271, -4043712,
+-4555350, -4983773, -2681133, -12964359, 6544994, 6371584, -211527, -1939715, -1813550, -5339181,
+-14094472, -16672526, 883153, 5982353, -3784940, -10654740, -5085778, 6473053, 5837398, -617402,
+-2668785, -5200132, -3863323, 8327942, -4398584, 5499706, -4140349, -944356, -15387257, -4623533,
+-854699, 10664404, 3669513, -4087735, -8457864, -7530152, -11984569, 18592914, -8762807, 17503066,
+2902861, -9813463, 13066901, 10632192, 21922586, -22799298, 9304510, 1471026, 3545496, -6367289,
+-5175973, 6800007, 5805722, -4390531, -8567386, 7639673, -4087735, 7672959, 12035035, 3554086,
+-4313221, 5134634, 16377247, -27824408, -31216896, -18587544, -3885335, -12794708, 7521562, -10439455,
+423591, 6029061, -1547799, 20644298, 13757317, 5638755, -6663642, -4003447, 13302051, -1896228,
+1380295, -5330592, -13392245, 452582, 4249870, 3764002, -7771207, 6460705, -9127, -476741,
+11033234, 16747688, 258235, -10217727, -5466957, -19894826, -8774618, -4983773, -7038378, 1101122,
+2515777, -7169911, -3964792, -10129143, 9984188, 13328894, 9959492, 12407087, 8616241, 16178605,
+845035, 5492190, 2674691, -3061775, 5041218, 9465571, -10916196, -33726768, -9059160, 10781979,
+-18645526, 8411693, 9593883, 3417720, -6657200, 176631, -5593121, -14254996, -5130876, 7746511,
+-12271258, -10336913, 1658394, -8942659, 20166482, 20157356, -9888088, 26321170, -21997748, -1437203,
+4895189, -23023710, -5499706, -10313827, 4311611, -7748658, 20096152, 1418413, 759672, 22793928,
+-352724, -22199612, -15948824, -11449309, 9167071, -2322504, -19487878, 4145180, 6708739, 9648644,
+-11183021, 5055714, 11376831, 7872138, 8262980, -3665218, 13409425, 12202002, 5551782, -31032212,
+22841172, -11919071, 9446781, -3416110, -2040110, 4451197, -12148315, -8841727, 15103252, -7728257,
+-733903, 11337103, -13075491, 11379516, -3800509, 10433549, -14477798, 19407346, -8099235, 30775052,
+-3020436, 486405, 9539122, -8739185, -4022237, -5587753, 3955128, -3396246, -14858439, -22237194,
+-4181151, 9901510, -4567161, -9495636, -19121194, 7316477, 3980898, -30916248, 1675574, -2488397,
+6700149, 11124502, -6556805, 9706626, 32529546, 14999636, -8860518, 21027086, 7991324, -14802605,
+6167573, 13271986, -1399623, -5674726, -18700824, -6160057, 12796318, 6959995, 6494528, 2628520,
+-2739116, -8744553, -17617956, 8844411, -5496485, 3912178, -13347148, -8632884, 424128, -3187403,
+18864570, 4412005, 3666828, 12780212, 7438347, -22048752, -1652489, 6528887, -3121904, -734976,
+18685256, 4669167, 21574158, -13334800, -6774237, -4712653, -6880001, 6776385, -7187628, 14199699,
+16460999, -8337606, -14265734, 23885386, -12134356, -6954626, -2045478, 5816997, 4933307, -16086800,
+-3126736, 7063611, -5574331, 9336185, -4190814, 13939853, -7118372, 1044214, 26473642, -3467112,
+19265076, 27076548, 5754720, 10965052, -5509370, -41586556, -22146998, -11431055, 1833951, 9121437,
+-41660644, -9674951, 42950208, -16385837, -18851686, 38363184, -24832964, 21674552, 28387586, 11498701,
+3562139, -21726092, 7941395, -38219840, -19314468, 8440148, 19443316, 2284386, 4094715, 14522358,
+38218228, 26168698, 7628399, 1393717, -632971, 4230006, 2580202, -15147276, -333397, 9446244,
+11433203, 51533700, 28420336, 19717658, 36574868, 15013058, -6153078, 10936597, -1554241, 35453344,
+12052215, -3285650, -6912750, 14539538, -3304441, 16707960, -54400056, 1794223, 17238924, -1669132,
+21029770, -8944806, 4592931, 11143293, -51034948, -19971598, -5371931, -16775069, -22175990, -25227028,
+20946556, -15939697, 2603287, -5801964, 20633022, -38773892, -12666395, -6986301, 8915278, -2276870,
+-6766184, 24824910, 43823160, -3958349, 9276056, -15131170, -5906654, 20311438, 21919902, -20780126,
+-63768452, -14108431, 29155312, 3923453, -5214627, -7537668, 4187056, -11459510, -9951976, 12161737,
+12988518, 27576374, 13059385, 15598784, -4597763, 37436008, 9380745, 22810572, -1367947, 34285652,
+-11755862, 21432960, -21113522, -2361695, 4839892, 14516453, -4460324, -15420006, -28571196, 14512158,
+4613332, 790811, -12545599, -30489436, 730681, 374736, -934155, 5588826, 20376936, -273267,
+15357729, 42526080, -16502338, 1443109, -12253005, 20317880, 23280334, -26181584, 24563992, 21209622,
+-14503568, 2695629, 9060770, 13365401, 11877195, 30815854, 14589467, -16388521, 5999533, 40527312,
+18447422, -55876988, 19765440, 4219269, -38981660, -17696340, -8305393, -37248104, 9035001, 12190191,
+29326036, -21314848, 48659296, -40586904, 32833414, 71673880, 4448513, -39407936, 61197380, -13613973,
+-1290638, 9020505, 34489660, -19859392, 1038845, 70104600, -35151088, 16829292, 23025320, 22762790,
+-31565862, -2979097, 4947803, -15059766, 1999844, 7402913, -13297219, 12510166, -22112102, -5973226,
+-9349607, -1542967, -13677323, -11169062, -5048734, 6782290, -24273008, -21747030, 31723166, 5974837,
+-21619254, -5356898, 18304614, 47301012, -5382668, -23054310, 23324894, 36265632, -11981885, -2700461,
+-606664, 13120051, -1564442, 21475, 14700599, -40074192, 25552908, -23124640, -1792075, -32770064,
+16124381, -2570001, -51392504, 24153822, -6176700, -18922552, 30082488, 3908957, 29417842, -27571006,
+-14153528, -11085847, -29520920, -39539468, -56872348, 44641352, 13276281, 32871532, 24970402, -83752,
+-10754598, 37688876, -14851997, 10384694, 9831180, -41316512, 36961952, 11461120, -9540733, 29808146,
+3339337, 813359, 15870441, -14777372, 40249748, -33127082, -16393353, 13368086, 14209899, 5299990,
+-29020558, -19479824, -32442036, 16667694, 4820564, 15042049, 427349, 16221018, 7560216, 4288525,
+1024887, 13479218, -6607807, 6579353, -14844481, 9427453, -13755707, -2048163, -18262738, -15047418,
+823560, -18404472, 7654169, 36828272, 9252970, -31412854, 15114527, 9432285, 20477330, -1794223,
+34106336, -31998580, 4191888, 11136850, -28893856, -9331890, 57003880, 29557428, -76669464, -35256848,
+39788576, -14163192, -36908264, 10934987, -4644471, -31384936, 19311784, 30791158, -48245904, 5095442,
+40036076, -32911260, -27360016, 28703804, 2029909, -32854352, 30849140, -69800736, -7910793, -10036802,
+-83419000, -11615202, -27593018, 10768020, 11195906, 26757646, -13313325, -28577638, -14538464, -42497092,
+3462281, 19223200, 6802692, 10208600, -39127152, 25448754, 989453, -40853728, 29526826, -44125956,
+-21850646, -14577656, 10300942, 37351720, 37129992, -27917, -11410117, -73156712, 30346092, 80700288,
+25748866, 5144297, -44965624, -58880780, -28029494, -1785096, 30113090, -35483408, -25733834, -36483600,
+-15186467, 75958104, 75535592, -9836549, -38338488, -27137750, -18890876, -4316442, 36863168, -14645302,
+9350681, 12310450, 23716810, -2929705, -20007568, -41130216, -22166864, 73904040, 27264452, 50901268,
+-44797044, -18495740, -22120692, 52425444, -1631551, -71095664, -76762336, 47587700, 68295352, 126617784,
+17081084, -93201864, 9834938, -9425843, -35230008, 29841970, -31285078, -8602283, 2618320, 6777459,
+-4783520, 5907191, 14090177, -22632330, -16755204, -1966021, 6129992, 11953431, -13928579, 549219,
+12975096, -10671920, 8573828, -6341519, 36974300, -2172717, -4119411, 18829136, 12490302, 16522739,
+-7978976, 9911174, -2476586, -2244121, 16251083, 8910983, 3709241, 2683281, 21470004, -20742544,
+-4524748, 165893, 28529320, -2327872, -4993973, 23518704, -5310190, -13013214, -9860708, 19086298,
+-3861176, 7174206, 6769406, 1132798, -6279779, 1665374, 9332427, 730144, 24911884, 9585830,
+7864085, -12604655, -459562, 6715718, -15903190, 3676492, 7534983, 15002321, 1289564, -4733591,
+10946261, -596464, -18748606, 19237696, 7697655, -8392903, 19242528, -16128676, -914828, -13819057,
+-7582765, 6757594, 57184804, 4913980, -21501680, -17287780, 2589865, 13297756, -1049046, 12174622,
+-4759898, -2856690, -16172699, -3175055, -11385958, 18078054, -11314018, -558346, -7212324, -2952253,
+-4305705, 2305861, -11974369, 2180770, -5252745, -7929584, 2280628, -935766, 521302, -1854352,
+4020090, 2405719, -9982041, -5926518, -112206, -6271189, -5909875, 5315022, -1674500, -9650792,
+607738, -5170604, 4250944, -14449881, 7410429, -6027450, -11317239, 3884798, -5179731, -5406290,
+1545651, 358093, 736587, -2020782, 2551211, -4096862, 5106716, -2669322, 621697, 8756901,
+-5886253, 3236258, -1450625, -438087, 2415382, -6434935, 6420976, -6804839, 6439767, -1123671,
+-61740, -4282620, 6183679, -6677064, 831076, 2535105, -8554501, 8676908, -4320737, -27081380,
+-45240500, 47907676, 163869648, 32117228, 48748416, -100729328, -141508432, -58276264, -74418360, 57521424,
+131404528, 76488000, 50305880, 5655398, -73475616, -63890860, -65136936, -25817048, 35844188, 31711354,
+32593970, 30465276, -1734093, -4335770, -8388071, -9878962, -16035260, -1569274, 19426674, -1308354,
+-12519293, -4124242, -17751100, -9069360, -3764539, -3761855, 31585190, 30579630, 16981226, 19563576,
+118648, -22992570, -24749750, -43387224, -30072288, 4407174, 2649995, 9312563, 24894168, 37159520,
+21117818, 18869938, -1850594, -20535312, -30039538, -24758876, -22081500, 3252901, 6372121, 13687524,
+8145943, 6349573, 112743, -7495255, 1671816, 758062, 1774358, 18221398, -3234110, 7907035,
+6639483, -13961865, -27626304, -27039504, -26032334, 5912023, 14761803, 5912560, 384936, 0,
+0, 0, 0, },
},
{
{
-4326643,
--3154117, 690416, -2771328, -1715839, -1253594, -353261, -445066, -1789391, -5367636, -3997541,
--2841658, -1395864, -3881040, 1618666, -900333, 638876, -1604707, -575526, -2429341, 2540473,
-501437, -1779727, -3200288, 312996, 3591667, 1978906, -3655017, -3510062, 656056, 300111,
-410706, -2443837, 530428, -883690, -1581085, -469225, -1490354, -2250563, -1051730, -3828963,
-4952098, 1385664, 3439195, -3332895, -5646809, -444529, 726386, -625992, -5243618, 306016,
--1304060, 3092913, 2091112, 2322504, 5333276, -921807, -187905, -1628330, -805306, 1934883,
--3631395, 4267050, 5105106, -2404645, -1676111, -4257387, -2229088, 862752, -1294933, -2566780,
-281857, -2709588, -1395864, -3434363, -2870112, -3156801, 2104534, 6383395, 455267, 4291209,
--1053878, -557272, -2368675, 4565014, 2754685, -2595771, -3593814, 2321967, -995359, -5324149,
--6333466, 1521492, 193810, -2057289, -2243584, -4147865, 2546916, -4888747, 1125818, -448824,
-974958, 441308, 906775, -2180233, -479963, 906775, 1250909, -474057, 1558536, 1295470,
--2371359, 1677722, -1518271, -4172561, 5760088, -1117765, 53687, 1449552, -979789, 3319473,
-3961034, -874026, 1317481, 3191698, -13422, -3326452, -2867965, 874563, 1680943, -984084,
-749472, 3918084, -3788698, -3038689, 2822331, 659814, -1718524, -2029372, -572841, 795643,
-1913945, -3847754, 1330366, 1078574, -3729105, -3206730, 2043868, -1678259, -4968741, -1581085,
--1531693, 6293738, 5272609, -7813620, -3304441, -5403606, 3563212, -2643552, -3582540, -2507724,
--3205119, -689879, 1262184, 5833640, 1074279, -3175055, 5019743, 158914, 5174899, -4943508,
-7981123, 3643206, 8653822, -1568200, -2853469, -615254, -4653597, -424128, -264141, -1731409,
-1680406, 142271, -3675418, -923418, 64961, 1151588, 3805878, 852551, -5527086, -4676146,
--1687922, 3151432, 295816, 158377, -2754685, 4678830, -36507, 353798, -1921461, 611496,
--1121523, 2472291, -696322, 7813083, 166967, -994822, 3055332, -1931125, -3397319, -1408749,
-2748242, 4747550, 893890, 2933463, 826781, 549219, -2350421, -2343979, -3833795, -93416,
--3972308, 1116692, 3489661, 3685082, 2665564, -1132261, -1646046, 3390877, 5618354, 5676873,
-3284576, -192200, 4967130, -2788508, -3900904, 3762391, 4293894, 5023501, 7869991, 523986,
--4753992, 2641942, -4531728, -524523, 1714229, 909996, 8726837, 460098, -6774774, -542240,
-1366337, 2675765, -370978, -2581812, -7486128, -1736777, 6577743, 1984275, 4362613, 4718022,
-4246112, 886374, -613107, 4145180, -5549635, -460098, -3744138, 10015864, -463320, -22012,
-4683662, -4149475, -512175, 1275068, -491774, 5798743, -865973, 1488743, 5968931, -1532230,
-1926293, 83215, -206158, -484794, -695785, -2151242, 2623151, 2942053, -747324, 2899103,
-1322313, 6196027, 7777649, -979789, 2148558, 659814, -3783866, 3150359, -839129, -3960497,
-1482838, 2962454, 1202591, -1854889, 8439611, 8529268, -3437585, -4677757, -4333085, -2755759,
-2028298, -9052717, -1018444, 1399086, -4516695, -8006893, 7776039, -1582696, -2103997, 1386201,
-3525095, 3362423, -4140885, -1484448, -271120, -323196, 1794223, 2893734, -1631551, 3531000,
--2658585, 5352066, -721555, 319975, -2773475, 2873333, 935229, -696858, -2757369, 1367947,
--1598265, -2246268, -2041720, 558883, 1655173, -4871567, 357556, -9274445, -5473399, 3441880,
--1468879, 1188095, 2033667, 6223945, -2035278, -3048890, -262530, 241592, 2550137, 2529199,
--2921115, -1244467, 6773164, 270046, 1012539, 572841, 3007551, -5701569, 177167, 2825552,
-5280126, 1031329, 2270964, 7927973, -1973001, -917512, -4336307, -164819, 1371705, 2499671,
--5361193, -8586713, 3718905, -2863133, 235686, -4471061, 3467649, -9917616, -7998840, -9365176,
--3059627, -2071248, -6411313, 3188476, 8904004, -6637872, 1411971, 10271414, -2365990, -2967823,
--4749160, 706522, 1611, 4461398, 1529545, 3158949, 2339684, -3544422, -6592775, -3312494,
-3951907, -2416993, -4038880, 834297, 1664300, 1103807, 828392, 8844411, -4287988, 4711579,
--2379412, 2247342, -2661806, 7291781, -5638219, 2823941, -500901, -4737349, 4125853, -1937030,
--1532230, 4198868, 2331094, -692564, -2046552, 3757560, 1941862, -4540854, -5107253, 3083250,
-5481989, 2749316, 38655, -2829847, 186294, 3115999, -1632625, 3827890, -1115618, -9230958,
-170725, -4361540, 12349642, 3801046, -7107097, -4466766, -994822, 39728, 3587372, -7589744,
--8516920, 7243463, -1286343, -7580618, 938450, -2243584, 7712151, 3274913, -1563905, 961536,
--61203, -1528472, -1022202, 8144332, 1968169, 9127, -5583458, -3143916, -1106491, 2528662,
-4023311, 11057930, 529355, -130460, -127238, 259309, -4866735, -314606, 2298881, -6878390,
--4275103, -4671314, -347355, 7844758, -6713571, 550293, 3995930, 1029182, -3088082, 2851858,
--8465917, 6322192, -1427540, -712965, 3878356, -5077188, -5028333, -8647380, 1702418, -3379066,
-7473780, 1758252, 172872, 548682, 2234457, 4939750, -2650532, -2249489, 6023155, -2269890,
--3609383, -1202591, 5961415, 5054640, 5456756, 1827509, -4012036, 2284386, 4811437, -7547868,
-7352984, -6482180, -4917201, 4703526, -16230145, -10058277, 2429878, 5478231, 10462003, -6215892,
-5444408, 1475321, 5756330, 81068, -3223910, -3326989, 3420942, 11625403, 591095, -584116,
--11065446, -8559870, -292058, -6183679, -4220342, 788127, 1010391, -6345814, -2355253, 2045478,
-3636227, 2523830, -4690105, 396211, 4723927, 4514011, 543313, -3731253, 464393, -2123325,
-927713, 1824824, 2027761, -2779381, 3727495, 10188199, -1258425, -321049, 1645509, -5045513,
-2334315, 8278550, -7988103, -8755828, -4946729, 1155346, -12048994, 687732, 165893, 2042794,
--36507, 207232, -5756330, -2660732, -3754338, -135291, 8002061, 12259447, 312459, 1119376,
-5833103, -2119566, -914291, 2983929, 13554917, 1940252, 5071820, 9587978, 2117419, -6078453,
-3155727, 8653822, 4621385, -7028177, -818728, 16684874, 13802951, 3542274, 8133595, 11191611,
-2207613, 382789, 6519224, -2622615, -402653, -5803575, 4714801, 121870, -222265, 2904472,
-2283849, 9368397, -7900593, -6188511, 6240051, 1963337, 2582349, -4685810, 460098, -1241782,
-2961917, 667331, 4352950, 5400385, -5368172, 4682588, 2856153, -4931160, 13810467, 3178813,
-2252710, -10434623, -4119411, -186294, 8731132, 9392557, -1462973, -8796630, 5639829, -7525320,
--3195456, 8078297, -848793, -5050882, 6440841, 9800042, -2961917, 3923453, -4312147, -11553462,
--682363, 9039832, -4486094, -3200825, 4434554, -4844723, -10016937, 3520800, 5213554, 12642773,
-4858145, -6893960, 2395518, -8128226, -12927852, 12965969, 3749507, 6914361, 17204566, 10358387,
--6838125, -2385854, 175020, 2555506, 2834142, -1428077, -6078453, 1235340, -3999152, 6639483,
-732829, 2361695, -1751273, -1354525, -6297496, -3947612, 14994805, 4479114, -8211441, 3886946,
--7988639, -6334540, -12817256, 5593121, 870805, -29528, 3852586, -598611, -5404680, 9922448,
-6513318, -2437394, -9473624, 10040560, -6245956, 2525978, 529355, 3192235, 2842732, 6356552,
-8351564, -1877975, 5039608, 11768210, 2448131, -3821447, -2437931, -2178622, 2848637, 7874286,
--1132261, 3187940, 1720134, -7277822, 1427003, -1775969, 4750234, -10887205, 1087164, -18145700,
--9701794, -10056666, -1149441, -9893994, 8268349, -2308545, -6691559, -1967095, 813359, -6367826,
--1025423, 287226, 2768643, -3136937, -6251325, -11173894, -14638859, -6475200, -9843528, 25006910,
--12280385, 5895917, -11623255, -2961380, 884763, -1556389, -17191680, -88584, -8344585, 851477,
-19536732, -6119255, 7994545, 11164767, 3600256, 4661114, 11591043, 3757560, -5021354, 3583613,
-4310000, 5215164, 1756642, -2328946, 13518410, 670015, -1517197, -2208150, 3365107, -1083406,
--5255430, 4793721, -2212982, 3443490, -13901735, 608812, -3038689, 12215961, -5252208, 3936338,
-17830556, -1613297, -70867, -4507568, -8013872, -506806, -1705102, -7831873, 9238475, -2224256,
-6568079, 582505, 6170795, -4061965, -1206349, 14371497, 6653978, -11628624, -6441914, 2765422,
-3002719, 1358820, 2594160, -3752728, 3599183, 4853850, 11578695, -16179142, 343597, -7379291,
-2543695, -1324461, -2458869, -3385508, -8622684, -6808060, -8344048, 9065065, -16994648, -4346507,
--10800232, 5708012, 16747151, -8782134, 103616, 1062468, -3751117, 7206419, -5901285, 3262565,
--2078764, -6451578, 14958834, 1392106, -5329518, 862215, -2562485, -6117107, 5034776, -4518843,
-4721780, -9007620, -4784057, 7238094, 4537633, -15478525, -3154117, -13057237, 3880503, -1561221,
--13475460, 16935592, -4716411, 468151, -12446278, -12653511, 628139, -11308112, -1719061, -9635222,
--9061307, 11457899, 1082332, -12737799, 4412542, -11278047, 10844256, 4887673, -5278515, 1405528,
-3526168, 12454868, -8777303, -11444477, 12766253, -7727720, -4884989, 7796440, 9770514, -16513612,
--8438000, 11355894, 7868380, 5233955, -442919, 2578591, -12103218, 8652748, -13242995, -21009370,
--17374216, 7925826, -20733954, -796180, 15263777, -1188095, 846645, 11317776, -7670275, -6132140,
-24391656, -9612674, 5483063, 9539122, -2040110, -22228604, -2165737, 2488934, -5935645, -2981244,
--5523328, 20979304, -124554, 332860, -1358820, -14950244, 2414309, -8585103, -4694400, 994285,
-2163590, 4499515, 11762842, 2721936, -3488050, 23862302, 2139968, -5899675, -22184042, -3201361,
-15612743, -3508988, -10397579, -13476534, -12218108, -10170483, -6756521, 16865262, 6183679, 854162,
-9008157, 14025216, 7474854, -3261491, -2924336, 14445049, -3340411, -4729296, 3795141, 10929618,
-1121523, -11824582, 2155537, -1520418, -17721572, -1709934, 13149042, -7250442, -8499203, -2458869,
-17751100, -15231565, -3744138, -8268886, 17121888, 1996086, -15733539, -312459, 4436165, -288300,
--7272990, 7013145, -5422396, 14099304, -10801306, 9791989, 20568062, -5294084, -5681168, -4559645,
--4459787, 18852758, -13853417, -14728517, -11626476, 4562329, -6111202, -9334038, -4561792, 7035157,
--9388799, 5543192, 1149441, 7670275, 10726144, 1745367, -1423245, -1640678, 10597832, -2298344,
-3737159, -12577812, -122407, -4177930, 10371272, -13372918, 11390790, -4299263, -7103339, 11943767,
-19883552, -10644540, 5705864, -1947231, 4097936, -29259464, -23527830, -13792751, 2166811, -8547522,
-4039417, 1518808, -10937671, -8188892, 1101659, 24293408, 5749888, -14247480, -21955872, -11135776,
--7992398, 15062450, -9901510, -13938243, 3642669, 3557307, -13123809, -589484, 6979, -6690486,
-3687766, 29661582, 19683836, -5338108, 2111513, 19082002, -7501698, 408559, 8396124, 20635708,
-12343736, -3939022, -4605816, -7545184, 1912334, -4318590, 330712, 173409, 22000970, 36049272,
--2180233, 24732032, 15795279, 2836826, 3836480, -18342194, -17900886, -2470680, 4539781, -1749125,
-4156455, -7169911, -13539884, -22945862, -2206003, -14959371, -12531104, -8623221, -13002477, -9631464,
--898722, 20281910, -1109712, -16395501, -1828046, 3915400, 14924474, -5457293, -4532264, -10056129,
-6357626, -28986734, -26221312, -12890271, -13514651, -14256607, -9141301, 8417062, -12421045, -16519518,
--14411226, -24387362, 11060615, 5939403, -22366042, 10285910, 20010790, 41363220, 21642340, -656593,
-6095633, -24311126, -11458436, 13065827, 9459129, -5301064, -31964220, -1854889, 48485348, -2574833,
-637266, 13422847, -19305878, 11177116, 33972116, 33469606, -34047280, -30477624, -1280437, -33168958,
--14213657, 864899, 2612951, 13334800, 17381732, 17397302, 27838904, 7745437, 10101226, 12461311,
--6371584, -1287417, 1722282, 4630512, 7143605, -14920716, 33605436, 15795279, 14855755, -2353642,
-34097744, 5105106, 19903952, 9567040, 5105106, -7765301, -7102266, 18796388, 5316633, 9041443,
--20870856, -9689446, -17734994, -8805220, -13396540, 461709, -24982214, -24708946, -3274913, -9234180,
--49364744, -34934192, -33880848, 9576703, 32806034, 45302780, -26644904, 31357556, 46268072, 8627516,
-2239826, -2631741, 31333398, 2999498, 28265716, 13440563, 12499429, -19236622, -67281200, -51207820,
--12307766, 439160, -4864051, 25325274, -6584185, -42319924, -5140002, 70458936, 11323681, -11801496,
-16489990, -4583804, 10218264, -4431870, -8960376, -21728776, -10066866, -1428614, -5340792, -9898826,
-14824616, -13809394, -17504140, -128849, 901943, 15446313, 4845260, 4893042, 4468914, -5055714,
--1638530, 22501870, -12882754, -25026774, -7032472, 3027952, -10633802, 18756122, -11395085, -5393942,
-13173202, 4912369, 9391483, -26089242, -32200980, 10546292, -8016020, -9720048, -15161771, -15427523,
--35465156, 485868, -5360656, 11382200, -23744726, -43924632, 30438970, 9299141, 28332288, 3569118,
--12955232, -9361955, 5029944, -16751446, 22550188, 4879083, 27507654, 21176336, 42267312, -5215164,
--48172352, -35322884, -23926726, 23900420, 20608864, -21805012, 14681272, 35783520, -29113972, -37147172,
-38476464, 50758996, 9535901, 1687385, 11984032, -8504035, 22972706, 11868605, 23964844, -5437966,
--24239184, 54287312, 806917, -21383568, 3013457, 36457828, 17474612, 6555731, -23132694, 1808718,
--12209518, -9966472, 4067334, -18291192, 1837172, 3943854, 21466246, -30790620, -4804458, -4383551,
-18127446, -7579544, -10839424, -11344619, 74625, 10586021, -23153094, 907849, 6300717, -48536888,
-6698002, -13727789, -33573224, 21347598, -24831354, -44394392, 57607324, -1203128, 3292629, -5279052,
--16112033, 34055332, -24730422, -2983929, 4985920, -16496433, -1546188, 43365748, 22407382, -39240968,
--42306500, 40975600, -20188494, 23848880, 39177080, -35700304, -61954368, -42264624, 70080984, -3630858,
--56396680, 51933132, -38074348, -68276024, -2396592, 63445256, -3219615, -22526566, 35526896, -5509906,
-9244380, 26124138, 15031312, 20288888, 42145440, 21230560, -13131326, 9047349, 8676908, 16513076,
--18349174, 44710608, 38029252, 7647726, 11647414, -7821136, -2360085, -41515152, 17667348, -20941186,
-13147432, 300111, -18409304, 25705916, -11817066, -15509664, 7012071, -22750978, 14053133, 2870112,
--7227893, 9069360, 7796977, 17680770, 13266617, 17325898, 42591044, -2120103, 2299418, 16653736,
-27777700, -558346, 5389647, 2620467, 21061446, 30845918, -12001749, 9489730, -4100083, -1807108,
--54524072, 7072738, 19050328, -9245454, -15656230, 14729053, -24609626, -28483686, -326954, 21984864,
-34861176, -44802416, 15355045, 2180770, -4919348, 5591511, 15406048, 47440060, -3367254, -21990770,
-5087389, 44297756, 23466090, -44339096, -34619048, -549219, -53385368, -18246094, -19746650, 41193568,
--1171452, -15111842, 18953690, -9590662, 10546829, 2799782, -20286204, 24452860, -54895588, -5096516,
-3483219, -13625247, 10314901, 2590402, -10530723, -1819456, 1855963, 14002667, 1109712, -15982110,
--53061636, -38778184, -29298656, -14596446, 33495376, -6548215, 1703491, -53291956, 4519380, -3563749,
--6665253, 1847373, -51037632, 27837830, -24375014, 12898324, -9474698, 35360464, -18331994, -33914136,
--15410343, -121333, 26622892, 46716360, 50116900, -60153700, -43282532, -30612380, 22339736, 49780280,
-61731564, -10239202, -13091060, -52564496, -17331266, 47299936, 31339840, -229781, 3078418, -714038,
--40962712, 30363808, -4472672, 29457034, 75491568, -77176808, 102184792, 27326192, -40305048, -44378288,
-36662376, -21905406, 22435836, 12211666, 14058502, 8639327, -28771986, 31398896, -4904316, -10879689,
--10492605, -12091407, 9280887, -6226092, 13321378, 8339216, -2032593, -2995203, -24093156, 14127758,
-5410048, -5850819, 5078799, 12856985, -3808026, 7421167, -12332999, 14601815, -5539434, 2128156,
-5624797, 6382322, -6558415, 22365506, -1033477, -20435992, -1536525, 9874130, 4574140, -15556372,
-7584376, 18785650, -3584687, -8661338, -8854075, -900333, 5019743, -1926293, 21657910, -14285061,
--5597953, -4877472, -10875394, -622233, -3257733, 8247948, 5874442, -8688719, -1168768, 8605504,
--8509404, -4275640, -2254321, 13609678, -7793218, 5880347, 9715216, -20775830, -7378754, 6484327,
--20199768, 32344862, 11212549, 9054865, 19843822, 51882132, 6342056, -17064442, -13917305, -9760313,
--1340030, -1247151, 780610, -982474, -2332704, -28693066, 300111, -5355824, -7051800, 4152160,
--11755325, -4721243, 4992363, -7493108, 1966558, 9533217, -12513924, 8209830, -4810900, -5960878,
--1316408, -5946919, 2758980, -5465346, -3474092, -6522445, -1642825, 483184, -416612, -3653944,
--4670777, 1967095, 2085207, -4449049, 6663642, -7822209, -977642, -2697776, -1300838, -882079,
--6951405, 9972377, 5457830, -8498667, 11065983, -352187, 2205466, -4267050, 10618233, -9947681,
-621160, 1823214, 2669322, -850404, -2985002, 9050033, -5537824, 2230699, 246424, -555125,
-2401424, -2357937, -660888, 5738613, -2426657, -733903, 4980552, -549219, -2274185, -3150896,
-2643016, 4165045, -24603184, -41523208, 46290084, 153218656, 16207059, 34741992, -83122112, -128543000,
--31609348, -67428304, 52617108, 106619344, 57036628, 35136052, -7486665, -42201812, -40380744, -31390306,
--28053652, 9586904, 18800682, 9947144, 20191178, 1969779, 2073932, 7128572, 2723009, 8169565,
-7520488, -5912023, -19109384, -15168214, -16792248, -24001888, -11845520, 12440373, 17423608, 30782568,
-44944148, 15393163, 6885907, -15526307, -34828964, -34896072, -23405424, -17328046, 3810710, 12332462,
-19291382, 19312858, 17380122, 10596221, 1717450, -2227478, -10838887, -8668318, -4594005, -6570763,
--1852205, -7347616, -1513439, -8580271, -7058242, 1584306, -341987, 8527121, 16221555, 8198556,
-23975044, 19763292, -10112500, -22558778, -20933670, -33113660, -8793409, -9854266, -1106491, 13064217,
-7633768, -1311576, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-3154117, 690416, -2771328, -1715839, -1253594, -353261, -445066, -1789391, -5367636, -3997541,
+-2841658, -1395864, -3881040, 1618666, -900333, 638876, -1604707, -575526, -2429341, 2540473,
+501437, -1779727, -3200288, 312996, 3591667, 1978906, -3655017, -3510062, 656056, 300111,
+410706, -2443837, 530428, -883690, -1581085, -469225, -1490354, -2250563, -1051730, -3828963,
+4952098, 1385664, 3439195, -3332895, -5646809, -444529, 726386, -625992, -5243618, 306016,
+-1304060, 3092913, 2091112, 2322504, 5333276, -921807, -187905, -1628330, -805306, 1934883,
+-3631395, 4267050, 5105106, -2404645, -1676111, -4257387, -2229088, 862752, -1294933, -2566780,
+281857, -2709588, -1395864, -3434363, -2870112, -3156801, 2104534, 6383395, 455267, 4291209,
+-1053878, -557272, -2368675, 4565014, 2754685, -2595771, -3593814, 2321967, -995359, -5324149,
+-6333466, 1521492, 193810, -2057289, -2243584, -4147865, 2546916, -4888747, 1125818, -448824,
+974958, 441308, 906775, -2180233, -479963, 906775, 1250909, -474057, 1558536, 1295470,
+-2371359, 1677722, -1518271, -4172561, 5760088, -1117765, 53687, 1449552, -979789, 3319473,
+3961034, -874026, 1317481, 3191698, -13422, -3326452, -2867965, 874563, 1680943, -984084,
+749472, 3918084, -3788698, -3038689, 2822331, 659814, -1718524, -2029372, -572841, 795643,
+1913945, -3847754, 1330366, 1078574, -3729105, -3206730, 2043868, -1678259, -4968741, -1581085,
+-1531693, 6293738, 5272609, -7813620, -3304441, -5403606, 3563212, -2643552, -3582540, -2507724,
+-3205119, -689879, 1262184, 5833640, 1074279, -3175055, 5019743, 158914, 5174899, -4943508,
+7981123, 3643206, 8653822, -1568200, -2853469, -615254, -4653597, -424128, -264141, -1731409,
+1680406, 142271, -3675418, -923418, 64961, 1151588, 3805878, 852551, -5527086, -4676146,
+-1687922, 3151432, 295816, 158377, -2754685, 4678830, -36507, 353798, -1921461, 611496,
+-1121523, 2472291, -696322, 7813083, 166967, -994822, 3055332, -1931125, -3397319, -1408749,
+2748242, 4747550, 893890, 2933463, 826781, 549219, -2350421, -2343979, -3833795, -93416,
+-3972308, 1116692, 3489661, 3685082, 2665564, -1132261, -1646046, 3390877, 5618354, 5676873,
+3284576, -192200, 4967130, -2788508, -3900904, 3762391, 4293894, 5023501, 7869991, 523986,
+-4753992, 2641942, -4531728, -524523, 1714229, 909996, 8726837, 460098, -6774774, -542240,
+1366337, 2675765, -370978, -2581812, -7486128, -1736777, 6577743, 1984275, 4362613, 4718022,
+4246112, 886374, -613107, 4145180, -5549635, -460098, -3744138, 10015864, -463320, -22012,
+4683662, -4149475, -512175, 1275068, -491774, 5798743, -865973, 1488743, 5968931, -1532230,
+1926293, 83215, -206158, -484794, -695785, -2151242, 2623151, 2942053, -747324, 2899103,
+1322313, 6196027, 7777649, -979789, 2148558, 659814, -3783866, 3150359, -839129, -3960497,
+1482838, 2962454, 1202591, -1854889, 8439611, 8529268, -3437585, -4677757, -4333085, -2755759,
+2028298, -9052717, -1018444, 1399086, -4516695, -8006893, 7776039, -1582696, -2103997, 1386201,
+3525095, 3362423, -4140885, -1484448, -271120, -323196, 1794223, 2893734, -1631551, 3531000,
+-2658585, 5352066, -721555, 319975, -2773475, 2873333, 935229, -696858, -2757369, 1367947,
+-1598265, -2246268, -2041720, 558883, 1655173, -4871567, 357556, -9274445, -5473399, 3441880,
+-1468879, 1188095, 2033667, 6223945, -2035278, -3048890, -262530, 241592, 2550137, 2529199,
+-2921115, -1244467, 6773164, 270046, 1012539, 572841, 3007551, -5701569, 177167, 2825552,
+5280126, 1031329, 2270964, 7927973, -1973001, -917512, -4336307, -164819, 1371705, 2499671,
+-5361193, -8586713, 3718905, -2863133, 235686, -4471061, 3467649, -9917616, -7998840, -9365176,
+-3059627, -2071248, -6411313, 3188476, 8904004, -6637872, 1411971, 10271414, -2365990, -2967823,
+-4749160, 706522, 1611, 4461398, 1529545, 3158949, 2339684, -3544422, -6592775, -3312494,
+3951907, -2416993, -4038880, 834297, 1664300, 1103807, 828392, 8844411, -4287988, 4711579,
+-2379412, 2247342, -2661806, 7291781, -5638219, 2823941, -500901, -4737349, 4125853, -1937030,
+-1532230, 4198868, 2331094, -692564, -2046552, 3757560, 1941862, -4540854, -5107253, 3083250,
+5481989, 2749316, 38655, -2829847, 186294, 3115999, -1632625, 3827890, -1115618, -9230958,
+170725, -4361540, 12349642, 3801046, -7107097, -4466766, -994822, 39728, 3587372, -7589744,
+-8516920, 7243463, -1286343, -7580618, 938450, -2243584, 7712151, 3274913, -1563905, 961536,
+-61203, -1528472, -1022202, 8144332, 1968169, 9127, -5583458, -3143916, -1106491, 2528662,
+4023311, 11057930, 529355, -130460, -127238, 259309, -4866735, -314606, 2298881, -6878390,
+-4275103, -4671314, -347355, 7844758, -6713571, 550293, 3995930, 1029182, -3088082, 2851858,
+-8465917, 6322192, -1427540, -712965, 3878356, -5077188, -5028333, -8647380, 1702418, -3379066,
+7473780, 1758252, 172872, 548682, 2234457, 4939750, -2650532, -2249489, 6023155, -2269890,
+-3609383, -1202591, 5961415, 5054640, 5456756, 1827509, -4012036, 2284386, 4811437, -7547868,
+7352984, -6482180, -4917201, 4703526, -16230145, -10058277, 2429878, 5478231, 10462003, -6215892,
+5444408, 1475321, 5756330, 81068, -3223910, -3326989, 3420942, 11625403, 591095, -584116,
+-11065446, -8559870, -292058, -6183679, -4220342, 788127, 1010391, -6345814, -2355253, 2045478,
+3636227, 2523830, -4690105, 396211, 4723927, 4514011, 543313, -3731253, 464393, -2123325,
+927713, 1824824, 2027761, -2779381, 3727495, 10188199, -1258425, -321049, 1645509, -5045513,
+2334315, 8278550, -7988103, -8755828, -4946729, 1155346, -12048994, 687732, 165893, 2042794,
+-36507, 207232, -5756330, -2660732, -3754338, -135291, 8002061, 12259447, 312459, 1119376,
+5833103, -2119566, -914291, 2983929, 13554917, 1940252, 5071820, 9587978, 2117419, -6078453,
+3155727, 8653822, 4621385, -7028177, -818728, 16684874, 13802951, 3542274, 8133595, 11191611,
+2207613, 382789, 6519224, -2622615, -402653, -5803575, 4714801, 121870, -222265, 2904472,
+2283849, 9368397, -7900593, -6188511, 6240051, 1963337, 2582349, -4685810, 460098, -1241782,
+2961917, 667331, 4352950, 5400385, -5368172, 4682588, 2856153, -4931160, 13810467, 3178813,
+2252710, -10434623, -4119411, -186294, 8731132, 9392557, -1462973, -8796630, 5639829, -7525320,
+-3195456, 8078297, -848793, -5050882, 6440841, 9800042, -2961917, 3923453, -4312147, -11553462,
+-682363, 9039832, -4486094, -3200825, 4434554, -4844723, -10016937, 3520800, 5213554, 12642773,
+4858145, -6893960, 2395518, -8128226, -12927852, 12965969, 3749507, 6914361, 17204566, 10358387,
+-6838125, -2385854, 175020, 2555506, 2834142, -1428077, -6078453, 1235340, -3999152, 6639483,
+732829, 2361695, -1751273, -1354525, -6297496, -3947612, 14994805, 4479114, -8211441, 3886946,
+-7988639, -6334540, -12817256, 5593121, 870805, -29528, 3852586, -598611, -5404680, 9922448,
+6513318, -2437394, -9473624, 10040560, -6245956, 2525978, 529355, 3192235, 2842732, 6356552,
+8351564, -1877975, 5039608, 11768210, 2448131, -3821447, -2437931, -2178622, 2848637, 7874286,
+-1132261, 3187940, 1720134, -7277822, 1427003, -1775969, 4750234, -10887205, 1087164, -18145700,
+-9701794, -10056666, -1149441, -9893994, 8268349, -2308545, -6691559, -1967095, 813359, -6367826,
+-1025423, 287226, 2768643, -3136937, -6251325, -11173894, -14638859, -6475200, -9843528, 25006910,
+-12280385, 5895917, -11623255, -2961380, 884763, -1556389, -17191680, -88584, -8344585, 851477,
+19536732, -6119255, 7994545, 11164767, 3600256, 4661114, 11591043, 3757560, -5021354, 3583613,
+4310000, 5215164, 1756642, -2328946, 13518410, 670015, -1517197, -2208150, 3365107, -1083406,
+-5255430, 4793721, -2212982, 3443490, -13901735, 608812, -3038689, 12215961, -5252208, 3936338,
+17830556, -1613297, -70867, -4507568, -8013872, -506806, -1705102, -7831873, 9238475, -2224256,
+6568079, 582505, 6170795, -4061965, -1206349, 14371497, 6653978, -11628624, -6441914, 2765422,
+3002719, 1358820, 2594160, -3752728, 3599183, 4853850, 11578695, -16179142, 343597, -7379291,
+2543695, -1324461, -2458869, -3385508, -8622684, -6808060, -8344048, 9065065, -16994648, -4346507,
+-10800232, 5708012, 16747151, -8782134, 103616, 1062468, -3751117, 7206419, -5901285, 3262565,
+-2078764, -6451578, 14958834, 1392106, -5329518, 862215, -2562485, -6117107, 5034776, -4518843,
+4721780, -9007620, -4784057, 7238094, 4537633, -15478525, -3154117, -13057237, 3880503, -1561221,
+-13475460, 16935592, -4716411, 468151, -12446278, -12653511, 628139, -11308112, -1719061, -9635222,
+-9061307, 11457899, 1082332, -12737799, 4412542, -11278047, 10844256, 4887673, -5278515, 1405528,
+3526168, 12454868, -8777303, -11444477, 12766253, -7727720, -4884989, 7796440, 9770514, -16513612,
+-8438000, 11355894, 7868380, 5233955, -442919, 2578591, -12103218, 8652748, -13242995, -21009370,
+-17374216, 7925826, -20733954, -796180, 15263777, -1188095, 846645, 11317776, -7670275, -6132140,
+24391656, -9612674, 5483063, 9539122, -2040110, -22228604, -2165737, 2488934, -5935645, -2981244,
+-5523328, 20979304, -124554, 332860, -1358820, -14950244, 2414309, -8585103, -4694400, 994285,
+2163590, 4499515, 11762842, 2721936, -3488050, 23862302, 2139968, -5899675, -22184042, -3201361,
+15612743, -3508988, -10397579, -13476534, -12218108, -10170483, -6756521, 16865262, 6183679, 854162,
+9008157, 14025216, 7474854, -3261491, -2924336, 14445049, -3340411, -4729296, 3795141, 10929618,
+1121523, -11824582, 2155537, -1520418, -17721572, -1709934, 13149042, -7250442, -8499203, -2458869,
+17751100, -15231565, -3744138, -8268886, 17121888, 1996086, -15733539, -312459, 4436165, -288300,
+-7272990, 7013145, -5422396, 14099304, -10801306, 9791989, 20568062, -5294084, -5681168, -4559645,
+-4459787, 18852758, -13853417, -14728517, -11626476, 4562329, -6111202, -9334038, -4561792, 7035157,
+-9388799, 5543192, 1149441, 7670275, 10726144, 1745367, -1423245, -1640678, 10597832, -2298344,
+3737159, -12577812, -122407, -4177930, 10371272, -13372918, 11390790, -4299263, -7103339, 11943767,
+19883552, -10644540, 5705864, -1947231, 4097936, -29259464, -23527830, -13792751, 2166811, -8547522,
+4039417, 1518808, -10937671, -8188892, 1101659, 24293408, 5749888, -14247480, -21955872, -11135776,
+-7992398, 15062450, -9901510, -13938243, 3642669, 3557307, -13123809, -589484, 6979, -6690486,
+3687766, 29661582, 19683836, -5338108, 2111513, 19082002, -7501698, 408559, 8396124, 20635708,
+12343736, -3939022, -4605816, -7545184, 1912334, -4318590, 330712, 173409, 22000970, 36049272,
+-2180233, 24732032, 15795279, 2836826, 3836480, -18342194, -17900886, -2470680, 4539781, -1749125,
+4156455, -7169911, -13539884, -22945862, -2206003, -14959371, -12531104, -8623221, -13002477, -9631464,
+-898722, 20281910, -1109712, -16395501, -1828046, 3915400, 14924474, -5457293, -4532264, -10056129,
+6357626, -28986734, -26221312, -12890271, -13514651, -14256607, -9141301, 8417062, -12421045, -16519518,
+-14411226, -24387362, 11060615, 5939403, -22366042, 10285910, 20010790, 41363220, 21642340, -656593,
+6095633, -24311126, -11458436, 13065827, 9459129, -5301064, -31964220, -1854889, 48485348, -2574833,
+637266, 13422847, -19305878, 11177116, 33972116, 33469606, -34047280, -30477624, -1280437, -33168958,
+-14213657, 864899, 2612951, 13334800, 17381732, 17397302, 27838904, 7745437, 10101226, 12461311,
+-6371584, -1287417, 1722282, 4630512, 7143605, -14920716, 33605436, 15795279, 14855755, -2353642,
+34097744, 5105106, 19903952, 9567040, 5105106, -7765301, -7102266, 18796388, 5316633, 9041443,
+-20870856, -9689446, -17734994, -8805220, -13396540, 461709, -24982214, -24708946, -3274913, -9234180,
+-49364744, -34934192, -33880848, 9576703, 32806034, 45302780, -26644904, 31357556, 46268072, 8627516,
+2239826, -2631741, 31333398, 2999498, 28265716, 13440563, 12499429, -19236622, -67281200, -51207820,
+-12307766, 439160, -4864051, 25325274, -6584185, -42319924, -5140002, 70458936, 11323681, -11801496,
+16489990, -4583804, 10218264, -4431870, -8960376, -21728776, -10066866, -1428614, -5340792, -9898826,
+14824616, -13809394, -17504140, -128849, 901943, 15446313, 4845260, 4893042, 4468914, -5055714,
+-1638530, 22501870, -12882754, -25026774, -7032472, 3027952, -10633802, 18756122, -11395085, -5393942,
+13173202, 4912369, 9391483, -26089242, -32200980, 10546292, -8016020, -9720048, -15161771, -15427523,
+-35465156, 485868, -5360656, 11382200, -23744726, -43924632, 30438970, 9299141, 28332288, 3569118,
+-12955232, -9361955, 5029944, -16751446, 22550188, 4879083, 27507654, 21176336, 42267312, -5215164,
+-48172352, -35322884, -23926726, 23900420, 20608864, -21805012, 14681272, 35783520, -29113972, -37147172,
+38476464, 50758996, 9535901, 1687385, 11984032, -8504035, 22972706, 11868605, 23964844, -5437966,
+-24239184, 54287312, 806917, -21383568, 3013457, 36457828, 17474612, 6555731, -23132694, 1808718,
+-12209518, -9966472, 4067334, -18291192, 1837172, 3943854, 21466246, -30790620, -4804458, -4383551,
+18127446, -7579544, -10839424, -11344619, 74625, 10586021, -23153094, 907849, 6300717, -48536888,
+6698002, -13727789, -33573224, 21347598, -24831354, -44394392, 57607324, -1203128, 3292629, -5279052,
+-16112033, 34055332, -24730422, -2983929, 4985920, -16496433, -1546188, 43365748, 22407382, -39240968,
+-42306500, 40975600, -20188494, 23848880, 39177080, -35700304, -61954368, -42264624, 70080984, -3630858,
+-56396680, 51933132, -38074348, -68276024, -2396592, 63445256, -3219615, -22526566, 35526896, -5509906,
+9244380, 26124138, 15031312, 20288888, 42145440, 21230560, -13131326, 9047349, 8676908, 16513076,
+-18349174, 44710608, 38029252, 7647726, 11647414, -7821136, -2360085, -41515152, 17667348, -20941186,
+13147432, 300111, -18409304, 25705916, -11817066, -15509664, 7012071, -22750978, 14053133, 2870112,
+-7227893, 9069360, 7796977, 17680770, 13266617, 17325898, 42591044, -2120103, 2299418, 16653736,
+27777700, -558346, 5389647, 2620467, 21061446, 30845918, -12001749, 9489730, -4100083, -1807108,
+-54524072, 7072738, 19050328, -9245454, -15656230, 14729053, -24609626, -28483686, -326954, 21984864,
+34861176, -44802416, 15355045, 2180770, -4919348, 5591511, 15406048, 47440060, -3367254, -21990770,
+5087389, 44297756, 23466090, -44339096, -34619048, -549219, -53385368, -18246094, -19746650, 41193568,
+-1171452, -15111842, 18953690, -9590662, 10546829, 2799782, -20286204, 24452860, -54895588, -5096516,
+3483219, -13625247, 10314901, 2590402, -10530723, -1819456, 1855963, 14002667, 1109712, -15982110,
+-53061636, -38778184, -29298656, -14596446, 33495376, -6548215, 1703491, -53291956, 4519380, -3563749,
+-6665253, 1847373, -51037632, 27837830, -24375014, 12898324, -9474698, 35360464, -18331994, -33914136,
+-15410343, -121333, 26622892, 46716360, 50116900, -60153700, -43282532, -30612380, 22339736, 49780280,
+61731564, -10239202, -13091060, -52564496, -17331266, 47299936, 31339840, -229781, 3078418, -714038,
+-40962712, 30363808, -4472672, 29457034, 75491568, -77176808, 102184792, 27326192, -40305048, -44378288,
+36662376, -21905406, 22435836, 12211666, 14058502, 8639327, -28771986, 31398896, -4904316, -10879689,
+-10492605, -12091407, 9280887, -6226092, 13321378, 8339216, -2032593, -2995203, -24093156, 14127758,
+5410048, -5850819, 5078799, 12856985, -3808026, 7421167, -12332999, 14601815, -5539434, 2128156,
+5624797, 6382322, -6558415, 22365506, -1033477, -20435992, -1536525, 9874130, 4574140, -15556372,
+7584376, 18785650, -3584687, -8661338, -8854075, -900333, 5019743, -1926293, 21657910, -14285061,
+-5597953, -4877472, -10875394, -622233, -3257733, 8247948, 5874442, -8688719, -1168768, 8605504,
+-8509404, -4275640, -2254321, 13609678, -7793218, 5880347, 9715216, -20775830, -7378754, 6484327,
+-20199768, 32344862, 11212549, 9054865, 19843822, 51882132, 6342056, -17064442, -13917305, -9760313,
+-1340030, -1247151, 780610, -982474, -2332704, -28693066, 300111, -5355824, -7051800, 4152160,
+-11755325, -4721243, 4992363, -7493108, 1966558, 9533217, -12513924, 8209830, -4810900, -5960878,
+-1316408, -5946919, 2758980, -5465346, -3474092, -6522445, -1642825, 483184, -416612, -3653944,
+-4670777, 1967095, 2085207, -4449049, 6663642, -7822209, -977642, -2697776, -1300838, -882079,
+-6951405, 9972377, 5457830, -8498667, 11065983, -352187, 2205466, -4267050, 10618233, -9947681,
+621160, 1823214, 2669322, -850404, -2985002, 9050033, -5537824, 2230699, 246424, -555125,
+2401424, -2357937, -660888, 5738613, -2426657, -733903, 4980552, -549219, -2274185, -3150896,
+2643016, 4165045, -24603184, -41523208, 46290084, 153218656, 16207059, 34741992, -83122112, -128543000,
+-31609348, -67428304, 52617108, 106619344, 57036628, 35136052, -7486665, -42201812, -40380744, -31390306,
+-28053652, 9586904, 18800682, 9947144, 20191178, 1969779, 2073932, 7128572, 2723009, 8169565,
+7520488, -5912023, -19109384, -15168214, -16792248, -24001888, -11845520, 12440373, 17423608, 30782568,
+44944148, 15393163, 6885907, -15526307, -34828964, -34896072, -23405424, -17328046, 3810710, 12332462,
+19291382, 19312858, 17380122, 10596221, 1717450, -2227478, -10838887, -8668318, -4594005, -6570763,
+-1852205, -7347616, -1513439, -8580271, -7058242, 1584306, -341987, 8527121, 16221555, 8198556,
+23975044, 19763292, -10112500, -22558778, -20933670, -33113660, -8793409, -9854266, -1106491, 13064217,
+7633768, -1311576, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
{
-6125697,
-1522566, -2790655, -7104950, -2758980, 654983, -1326071, 2278480, -3286187, -1293859, -2513630,
--1180042, 1643362, -267899, -94489, -1381369, 2288144, -5952825, 584116, -3075197, 2193655,
-1506997, -3591667, 671089, -427886, 933619, -1331977, 1057099, -3933116, -2491081, 5079336,
--1430761, -1890859, -2262911, -654446, -1429687, -512175, -3594351, -411243, 4619774, -987843,
-863825, -95026, -1367947, 6444599, -1275605, 3697967, 4507032, -292595, -1640141, -1067836,
--3859028, -3624416, -3997004, -4694936, -2481954, -3256659, 890669, -3137474, -907849, -1837709,
--270046, 820876, -3737159, 3806415, 811749, 1660542, 3340948, -3020973, 1801202, 3497177,
--3479997, 736050, 2767570, 1246077, 1465658, -6023155, 3957276, 6521908, 1672353, 5761162,
-65498, -5881958, -4111358, -4276714, -706522, -2928631, 6893960, -5156645, -1357210, -2327336,
--870268, -4131759, 3954591, -2426657, -1964411, 3387119, 5529771, 6334003, 923418, -428423,
-1261647, 357556, 837519, -2832531, -3129421, 1525787, -2845416, -2769180, -3802120, -3911105,
-1134408, -2583423, 3411815, -4320200, -662499, 1935957, 1745904, 1626719, -6813429, -1188632,
--3819837, -629750, -1657857, -4087198, -180389, 4921496, 1389959, 2399813, 2145336, 2668249,
-220654, 3341485, 1966021, 3726421, -2236067, 2491081, -1365800, 1723893, 35970, -3415036,
-3830037, 4537633, -2623151, -3037079, 1117765, 4161823, 742493, 1105417, -1688459, -282931,
-1895691, 1427003, -159451, -10110890, -2695092, -4542465, 3326452, -9475235, 2054068, -4157528,
--2243047, 1382980, 158914, 1098438, 1392643, 1108102, 4097399, -1796907, 403190, -378494,
--5048734, 3740380, 6155225, -4990752, -4751308, 3632469, 896038, 4475893, 1377611, 5998996,
--853088, 2054068, -3178276, -909996, 6043556, 536871, -3985730, -4831302, -5302674, 279173,
-4344360, 2277407, -54224, 5034239, 3938485, 219580, -4092567, 6426882, 1597728, 4974646,
-4960151, -799401, 3150359, 3831111, -482110, 2298881, 2545842, -2389613, 482647, -678605,
-2416456, -5495948, -3607236, 1901060, -3490198, -1232656, 4759898, -1833951, 2600066, -1014149,
--7555921, 1380832, -71404, 4065187, -6229313, -3222836, 2770791, 802622, 6448357, 6669011,
-3034931, 4918812, 3965866, 6685117, 7766375, -2916820, -743566, 2533494, -7595650, -308701,
--2443837, -1513976, 3608846, -4517232, -427349, 5640366, 1149978, 3603478, -1698660, -1353452,
--1806571, -7256347, -1072131, 460635, 3935801, -1189169, 6694244, 2566243, -1010391, 2607045,
-1493038, 3360812, -2307471, -524523, 7816841, -1037772, 7398618, 3396782, -3029563, 758062,
-6545530, 3325915, -4046396, 5827197, -1423782, 403190, 484258, -1160715, 1307818, 666794,
--5064304, 3384434, 2666638, -421444, 415001, -1134945, -4518306, 54224, 2927020, -484794,
--287763, -3128884, -6696928, -2312840, 2928094, 5983427, -8555038, -4609574, 2079838, -3696893,
-2771328, 100395, 571768, -4893579, 9466645, 9973988, -1957431, -4238059, -4541391, 9563818,
--8287677, 189515, -1314797, -3922379, -5230734, 1840394, -1404991, -7220377, -8698919, 299574,
--613107, -4599373, 1697586, 2394444, -3171833, -4871567, -4478041, 6361384, -6853157, -855772,
--8017094, 73551, 4522601, 1510755, 803159, -4533338, -4313758, 3942243, -3023657, -4626217,
-599148, -1685238, 2847563, 56371, 1158567, -4600984, -1692217, -1290101, 4424890, 3045132,
-3069828, -9097814, 1428614, 2568391, 2057289, 2603824, -2638184, -1618666, 273267, 1900523,
-3535295, -561567, 2288144, -2561948, 6918119, -12679817, 4330938, 474057, -6995428, -159451,
-7256347, -2113661, -3853123, -6653441, -2745558, 773631, -2495376, 296353, 2212445, 4319664,
--4505958, -14098767, 2543158, -6406481, 1378685, 1222455, -851477, 10073846, 522912, -6373732,
-8538932, 4176319, 2912525, -1239635, 1746441, -2558727, 6689949, -1061931, 736587, 10177462,
-9851044, 4287451, 4496294, 4414690, 4890357, 3350075, -9790378, -2979097, -164283, -2492155,
--8338142, -836445, -1999307, -2110977, -4493073, 3758, -1340030, 7245610, -2324651, 12637941,
--106837, 1168231, -2354179, -1694902, 62814, -231391, -1036698, -2051384, -1502702, -5989869,
-1461363, 1173063, -768262, -2993055, 4254702, 3379066, 3683471, -1080721, -2724620, 323733,
-3207267, 3791383, -2855080, -7703024, -4125853, 1236414, 6667400, -491237, 5455682, -3824669,
--6307697, 5357435, -2179159, -4333085, 3089155, 4386772, -5557151, -3619584, 5279052, -6244883,
--6650757, 3143916, -1852205, -663036, -3461207, -2123861, 3519189, 4794794, 2622078, -1217086,
-813359, -672699, -1058173, -4746476, 1633698, -12639552, -3574487, -4097399, 3528316, 4196720,
-425202, 2024003, -7747048, 2013803, 1267015, 1997160, -6980396, 13167833, -537945, 2330557,
-1807644, -6438156, 1054415, -9175661, 5852430, -2092186, -7483444, 1340030, 641561, -3979824,
-477278, 617402, 6029597, 10505490, 4716411, -2411624, 3549791, 4148939, -9904195, -3948686,
--4487704, 2476586, 2379949, -1988033, 1686848, 3118683, 2333778, 4086125, 8505109, -238908,
--2956548, -1342177, -168041, 6030134, -4495757, -595390, 3328063, 8142721, 427349, -6762426,
--5179194, -1584843, -6038187, -2279017, -12999792, -3563212, -4802311, 5565741, 211527, -2671470,
--16678432, -2188823, -2199023, 6951405, 16593606, -4728222, 11175505, 1957431, -9710384, -9939091,
-1823214, 2604898, -5587216, 6339909, -4381404, 5132486, -6096169, 3104725, 2290828, -5815923,
--4820027, -3689914, 2143189, 6592238, -8245801, 441845, -8662412, -359704, -3143916, 2308008,
-6729677, 834297, -2531346, -2318746, 7306813, 148713, 11007464, 3461207, -3686156, -3691525,
--2724083, 1724966, 7108171, 63888, 11550778, -19586124, -14131516, -11595338, -2226404, -9849971,
-1205275, -3557307, 4184909, 9234717, 2272038, 3973382, 6490233, 9778567, 5698348, 1726040,
--5660767, -16108275, -16236587, 9558450, 1838246, 12068858, -6899865, -5712307, 7117298, -11788075,
-3459596, 8360154, 2915746, -5741835, -685047, 15454366, 12154221, -663036, -11468100, -17971754,
--2626909, -5981279, 6089727, -5033165, -5973226, -20422570, -9502078, -18240726, 6392522, -112206,
--5094905, 5493800, -1185411, 612570, 826244, -5519033, -2147, -6415071, -1763084, 4693863,
-2586644, -6556805, 1999307, 7687992, 11170136, -1282585, -2185065, -3409130, 116501, 6567005,
-8081518, -756451, 719407, -1381906, -2057289, 10763725, 6920266, 773631, 7150584, 2704219,
--10040560, 2248416, -1535988, 12697534, 4194573, 1988033, 5309117, 8378408, 1577864, -6567005,
--12589623, -2358474, 1862942, 6803765, 2629057, 754841, 1837709, 9810242, 1397475, 3350075,
-3648575, 2736968, -6867653, -6842420, -6810745, -6980396, -7097434, 9822590, 26246008, 5699959,
--8055211, 4629438, -4687420, -15602006, -3132642, -15315853, -8347269, 7807714, 10516227, 3973382,
-2166274, 790274, 1943473, 9863392, -7085623, 13990319, -9130027, -9415642, 11253888, 4862977,
--18187040, 7800735, 4627291, 5602248, 11964705, 5737540, 8889509, -790811, 4806606, -3044058,
-7572564, 1786706, 1590749, 4852240, -10290742, -5775121, -3197603, 6312528, 2791192, 2087891,
-5144834, 1237488, 1764158, -9559523, -8053, 9705552, -1916629, 901406, 1131724, 940061,
-11833172, 4245575, 15949361, 3326452, -2500745, 14909442, -13423920, -2164127, -2355253, -5745056,
--1515050, 2696703, 14833206, 901943, -3653407, -6511171, 2628520, -6875706, -3286187, -4738960,
--9124121, -2187212, 1124208, 11897596, -2909304, -10002442, -13974750, -5817533, -13748727, 9718437,
--11644730, -9556839, -6619619, 5935645, 16963510, -17187922, -5318244, -19299436, 5953362, 2049773,
-2348273, -5948530, 2057826, 20525112, -10437844, -2422899, 8593156, 4883378, 4789426, 6845104,
-5559835, -7517267, -11099269, -2773475, -5861020, -9437117, -10182294, -419296, -1874216, 2066953,
-14601815, 8220031, -7154879, -4843650, -188442, -4666482, 4115116, 25876642, -8279623, 17848274,
-6529961, 2450816, -454193, -3670050, 3909494, -10843719, 5668283, 13683229, 1449015, 1565516,
-12395276, 6714108, 5375689, -10507637, 9091372, -6626598, -7626788, -24296630, -6269042, 14266271,
--7459822, 2919504, -15174119, 10663867, -4747550, -7770133, 11973295, -17934172, -10146323, 16694538,
--10631655, -15522549, 1539746, -10394895, -8083666, -884226, 11839077, -5513665, 20955682, 19891068,
-3661460, 6496675, -11659762, 1602560, -9487583, 14976551, -3190624, 4543002, -7300371, -4386772,
-2276333, 2180770, -7031399, 11523397, -3460670, 2592550, 3969624, -7237020, 2544768, -9283572,
--232465, 5588826, 6176700, 353798, 8249022, 10983305, -1103270, -19963544, -3701188, -5746130,
-14134201, -11955578, -15468862, -10555956, -7560753, 2369211, -8920647, -6456947, -4664872, -934155,
-2306398, -29248728, 18319646, 14926622, 20928302, -6369437, 3043521, 14714558, -14025216, -12145631,
-2113661, 9881109, 5734855, -972810, 2483028, -6746320, -9293235, -10522133, -3714610, 40351756,
-2820183, -20587388, -4181151, -10416369, 7362111, 7919383, -13329968, -6106370, -10813117, -22126060,
-2230162, -18522046, 9053254, 2587718, -14084272, 7929584, 10041634, 12933220, 4410395, 4963909,
--14549202, -543850, -2377265, 13911936, 7250979, 435939, 13917305, 14555644, -1029718, -7183333,
-2458332, 18040474, -11005854, -9443022, 10200010, 5054640, -11135240, -2696166, -10198400, 20761336,
--16751983, 4948339, 12048994, -6624987, 11201275, 3741990, -3963181, -5266704, -4299263, -8304856,
-12824235, 15843061, 4386236, -11793443, 2568927, -13009456, -3667902, 8929774, -180926, -6250788,
--3300682, 2599529, -16018081, 967978, -122943, -9684078, 15622407, -13014825, 1053341, -2496987,
--7920994, 11359115, 1457605, 6983080, -2588255, -87510, 2189897, -5296232, 8105140, -4541928,
-2543158, -4068408, 20269562, 9120900, 20282984, -558883, -13234405, -7516193, 9788767, 12549894,
-16070157, -787053, -2286533, 19541028, 10276246, 21851720, 4000762, 597537, -10019622, -5989869,
--5484137, 4783520, 4488241, 11124502, -13267691, -474057, -7459822, 6230924, -11379516, 3246459,
-14880988, -3593814, 639950, -8755828, 2998961, -8829379, -23767276, 1809255, -2800319, 97174,
--10080288, -4094715, 10660646, 17026324, -979789, -8531953, 11841762, 3348464, 3584150, 11068668,
-5396627, -8749385, -2402497, 6398965, -280247, 5613523, -8223789, -10128607, 3616363, -9716827,
--13763223, -8932458, -15822660, -6008123, 6280316, -15440944, -1227287, -17512730, -5967857, -2839510,
-6357089, -20757040, 8140037, -1889249, -10443213, 9698036, -4881231, -594853, 22812182, 21646636,
-67646, 32029718, 36687612, 1996086, 11781632, 11346767, -1489817, -26268556, -614180, -909996,
--9897215, 7619272, 7045357, -14164802, 7999914, 10284836, 1865090, -3571802, 5699422, -3390340,
-18951006, -2903398, -8449274, 450972, 4575214, -1403917, -868120, 46171, -29386704, 9008694,
--239444, -20142322, -8054138, 4022237, -1412507, -13533979, 5440113, -16034724, -879931, 2171106,
--25894358, -4181151, 12124693, -7928510, 2023467, 17382806, 11120207, 13471702, 4911295, -6539088,
--11408507, 13463112, -5501316, 7878044, -10609643, -5402532, 9751723, 15101105, 3507378, 17951890,
--9955734, 15647103, -10852309, -14331232, -8898098, 15579994, 17643726, -13569412, 9876277, -38866232,
--713501, 12066711, 7198902, -6148246, -11143293, 6325413, -27980638, 1129576, 36884644, -25266218,
--1272384, -3113851, 2913599, -10609643, 5586679, -16317118, -14665703, -6186901, -3277060, 2769717,
--2940442, 7143068, -10744934, -634581, 24078124, -19938312, -15691126, -5074504, 21195664, 1793686,
--24283746, 9735617, -8378945, -11846594, 3519189, 33725692, -18544596, -11933030, 25755308, 17294760,
-2611340, -11263552, 1701881, -4834523, -6828461, 6053757, 7501161, -5236102, -19002010, 24668144,
-13125420, 3849365, -26220238, -5182952, 9574556, 8451959, -2279554, 13373991, -1175210, 3918084,
--5085778, -17385490, 11926587, -12649752, 8296803, 2764885, -13091597, 26370562, 5576478, 18808198,
-21133386, 2785286, -27960238, -6297496, 2042257, -12234751, -3976603, 820339, 1343788, 12855374,
-26875758, -6376953, 10804527, 1929514, -10687489, -51171852, 2997887, -13054016, 1387811, 26224534,
-2075006, -4578435, 4311611, 1399623, -17909476, -18500572, -17424682, -15943992, 20875688, -3859028,
-24992414, 2654827, -24385214, -442919, 2246805, 20948166, 3647501, -2923799, -4484483, 6265821,
--13316009, -4554276, 22327388, -4241280, -29912836, -22152904, 13073880, -2542084, -6531572, 7170448,
--2512556, -14821395, 4192425, 9312026, 20075214, -3745748, -17373142, 606127, -21805548, 8612483,
-23881628, -3520263, -30135102, 9727564, -697395, 2021319, 6831683, -9041980, 17992692, 1695438,
--12670154, 9913321, -6978248, -3860639, 25924960, -13168907, -4716948, -4208531, 16335908, 6753299,
--29040958, 14711874, -23306104, -5716602, -12384001, 2563559, -7151658, -8141111, -1053341, -25713432,
-5702643, 41075456, 27654220, 11902965, -20044076, 14993194, 20161650, 28477780, 14606110, 2989834,
-1685775, 17711908, 31964758, -7450158, -3103114, 17344152, -34287796, 12393128, 32009318, -6811818,
--10032507, 7798587, 25082072, 19247360, -12212203, -22654342, -431107, 11005854, -2873870, 2480881,
-1315871, 26039850, -13996762, 16628503, 26427470, -10328859, -1995012, 17784922, -1566053, 62743568,
--25192668, 11226508, 44246216, -24843164, 9394167, 2842195, -33552284, -1090922, 7905961, -15360414,
-35580044, 2638184, -3155190, 2746632, -12584254, 46911780, 14594836, -37324876, 37963216, -14907831,
-3221226, 11363947, 15421617, 24322400, 13801341, -6126771, -21232170, -31126164, -9518721, -12204150,
-238908, -9258876, 22233972, -11812234, -18814642, 1631014, 10715943, -48797272, 28614682, 863288,
-17478906, 27666568, -45935748, 10206990, 24340116, 5020280, 18289044, -18244484, 20095616, 5352066,
--17693654, -86973, -10959146, -34314640, 19157164, 10250476, 31586264, -17503602, -22221088, -8261907,
-7832947, -5022965, -37956236, -19285476, 12411919, -3134789, 6347962, -16499117, -4438849, 12592307,
--10242423, -5621039, -15810311, -4025458, 6642167, -18366354, 2594697, -39908836, -32048510, 10038949,
--33339684, 2921115, -34884800, -24981678, -16407312, 16814796, 34089692, 41060424, -8825084, 18372260,
-23124104, 11000485, 10610180, -15552613, 46654620, 46933792, -30438970, 32265404, -23587424, 16689169,
-34128348, 32022740, 39517456, 46418396, 33950104, -34428456, -23260470, 1737314, 3800509, 16239271,
--4610111, -3490198, 60345364, -44334800, -21859236, 23060216, -13649943, 21966610, -17213692, -20235738,
-6954089, -47012176, -1800128, 30455076, -7260642, 15266998, -26356066, -7327751, -10304163, 217433,
-33398740, 9166534, 7509214, -6868190, 18332532, 4882841, 45467060, 10131828, 26527328, 789737,
--20760798, -20766704, 26362510, -14074608, 12114492, -1547262, -34257732, 23228256, -30583388, 57577256,
--44236552, 25331180, 23754928, -26875758, -21573084, -17397302, 21399674, -3485903, 22354768, -2226404,
-2456721, -42424612, -22275312, 7179038, -20500416, 4196183, -12842489, 9302362, 5894306, 28238336,
--19361712, -9337796, -8914741, -18462990, 40830108, 4184909, 2603287, -43128988, -14220100, 16572131,
-10650982, 8293582, 34331284, 17308718, 29721174, 29836064, -4155381, 6698002, -19644644, -89491552,
-61929672, -38069516, -28145994, 1551020, 11978127, 17095580, 1990181, -13595719, 47938276, 25670482,
-5850819, -23598698, 15032922, 45097, 17198122, -22492206, -17220134, 13392782, 35450124, -41024452,
-573915, 14484240, 3273839, -9405442, -7427072, -4357245, 406948, -1191853, 8136279, 47038480,
-1583232, -19852412, 29544006, -6238977, -31476204, -37631428, 35223564, 13091597, -6784438, 14796162,
-6752763, 31750546, -43421584, -3241627, -23100482, -4796942, 21686900, -16256988, 7056632, -18880140,
-7404524, 64909840, 2303713, -34901440, -43495672, -978179, 16555488, 20715164, -19474456, 5695127,
-27536646, -11113228, -63534916, 36134096, -24685324, -31863826, 10457172, 59134720, -44241384, 31227634,
-33861524, 16607565, -40893996, -25109990, -25437480, 51672752, 17278116, 3221762, -3608846, 7997229,
-14785425, -4887673, 6989523, -8102456, 97174, -6463926, 24530168, -27608050, -2916820, 16075526,
--37834368, 12011413, -9128953, 2573222, -4313758, -10929081, 6916508, -3242700, -15349676, 41302552,
--31648540, -9259413, 29655676, -19269908, -2794413, -6310918, 6599754, 28889560, 2369211, -28868622,
-39182988, -21474836, 14018236, 24001350, 10941429, -9461813, 2245731, -21840446, 5338645, -13371307,
--10137733, 51993264, -12069395, -21231098, 6926172, -10099079, 12550968, -8477192, 13785771, 33367600,
--18370648, 10853919, 25922812, -30522186, 14087493, 16242493, 7814156, 20446192, -23128936, -6266358,
-36461052, -24799678, -4852776, 10495289, -9212168, 34827352, -32868310, 6730751, 14233522, -14040785,
-15199889, 15695958, -30044906, -78913584, -125615984, 10678362, 116809152, 8474507, 266435616, 275957568,
-134877008, 288296992, 189871376, -43626132, -9072045, -68091872, -239189408, -209839216, -133089760, -244179088,
--193873216, -60613800, -124914832, -105086576, 26050050, 50784232, -37904160, 6602976, 42063836, -50005768,
--34875672, 63314796, 53419192, -3963181, 60163364, 112608672, 27622546, 76939504, 155897648, 67514736,
-26968636, 137478144, 110531520, -73551, 73077792, 161175632, 15161771, 22280142, 123206504, 40891848,
--39371428, 79200272, 71367864, -34455840, 57970248, 82851528, -31707060, -110922896, -70146480, -222823984,
--349264608, -315122816, -336399008, -494227808, -451002176, -426023712, -512009504, -500549984, -423244864, -389259328,
--360098112, -237003280, -135062224, -14229764, 46017892, 153234768, 263588592, 284531904, 321910496, 359044768,
-146011168, 19289234, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+1522566, -2790655, -7104950, -2758980, 654983, -1326071, 2278480, -3286187, -1293859, -2513630,
+-1180042, 1643362, -267899, -94489, -1381369, 2288144, -5952825, 584116, -3075197, 2193655,
+1506997, -3591667, 671089, -427886, 933619, -1331977, 1057099, -3933116, -2491081, 5079336,
+-1430761, -1890859, -2262911, -654446, -1429687, -512175, -3594351, -411243, 4619774, -987843,
+863825, -95026, -1367947, 6444599, -1275605, 3697967, 4507032, -292595, -1640141, -1067836,
+-3859028, -3624416, -3997004, -4694936, -2481954, -3256659, 890669, -3137474, -907849, -1837709,
+-270046, 820876, -3737159, 3806415, 811749, 1660542, 3340948, -3020973, 1801202, 3497177,
+-3479997, 736050, 2767570, 1246077, 1465658, -6023155, 3957276, 6521908, 1672353, 5761162,
+65498, -5881958, -4111358, -4276714, -706522, -2928631, 6893960, -5156645, -1357210, -2327336,
+-870268, -4131759, 3954591, -2426657, -1964411, 3387119, 5529771, 6334003, 923418, -428423,
+1261647, 357556, 837519, -2832531, -3129421, 1525787, -2845416, -2769180, -3802120, -3911105,
+1134408, -2583423, 3411815, -4320200, -662499, 1935957, 1745904, 1626719, -6813429, -1188632,
+-3819837, -629750, -1657857, -4087198, -180389, 4921496, 1389959, 2399813, 2145336, 2668249,
+220654, 3341485, 1966021, 3726421, -2236067, 2491081, -1365800, 1723893, 35970, -3415036,
+3830037, 4537633, -2623151, -3037079, 1117765, 4161823, 742493, 1105417, -1688459, -282931,
+1895691, 1427003, -159451, -10110890, -2695092, -4542465, 3326452, -9475235, 2054068, -4157528,
+-2243047, 1382980, 158914, 1098438, 1392643, 1108102, 4097399, -1796907, 403190, -378494,
+-5048734, 3740380, 6155225, -4990752, -4751308, 3632469, 896038, 4475893, 1377611, 5998996,
+-853088, 2054068, -3178276, -909996, 6043556, 536871, -3985730, -4831302, -5302674, 279173,
+4344360, 2277407, -54224, 5034239, 3938485, 219580, -4092567, 6426882, 1597728, 4974646,
+4960151, -799401, 3150359, 3831111, -482110, 2298881, 2545842, -2389613, 482647, -678605,
+2416456, -5495948, -3607236, 1901060, -3490198, -1232656, 4759898, -1833951, 2600066, -1014149,
+-7555921, 1380832, -71404, 4065187, -6229313, -3222836, 2770791, 802622, 6448357, 6669011,
+3034931, 4918812, 3965866, 6685117, 7766375, -2916820, -743566, 2533494, -7595650, -308701,
+-2443837, -1513976, 3608846, -4517232, -427349, 5640366, 1149978, 3603478, -1698660, -1353452,
+-1806571, -7256347, -1072131, 460635, 3935801, -1189169, 6694244, 2566243, -1010391, 2607045,
+1493038, 3360812, -2307471, -524523, 7816841, -1037772, 7398618, 3396782, -3029563, 758062,
+6545530, 3325915, -4046396, 5827197, -1423782, 403190, 484258, -1160715, 1307818, 666794,
+-5064304, 3384434, 2666638, -421444, 415001, -1134945, -4518306, 54224, 2927020, -484794,
+-287763, -3128884, -6696928, -2312840, 2928094, 5983427, -8555038, -4609574, 2079838, -3696893,
+2771328, 100395, 571768, -4893579, 9466645, 9973988, -1957431, -4238059, -4541391, 9563818,
+-8287677, 189515, -1314797, -3922379, -5230734, 1840394, -1404991, -7220377, -8698919, 299574,
+-613107, -4599373, 1697586, 2394444, -3171833, -4871567, -4478041, 6361384, -6853157, -855772,
+-8017094, 73551, 4522601, 1510755, 803159, -4533338, -4313758, 3942243, -3023657, -4626217,
+599148, -1685238, 2847563, 56371, 1158567, -4600984, -1692217, -1290101, 4424890, 3045132,
+3069828, -9097814, 1428614, 2568391, 2057289, 2603824, -2638184, -1618666, 273267, 1900523,
+3535295, -561567, 2288144, -2561948, 6918119, -12679817, 4330938, 474057, -6995428, -159451,
+7256347, -2113661, -3853123, -6653441, -2745558, 773631, -2495376, 296353, 2212445, 4319664,
+-4505958, -14098767, 2543158, -6406481, 1378685, 1222455, -851477, 10073846, 522912, -6373732,
+8538932, 4176319, 2912525, -1239635, 1746441, -2558727, 6689949, -1061931, 736587, 10177462,
+9851044, 4287451, 4496294, 4414690, 4890357, 3350075, -9790378, -2979097, -164283, -2492155,
+-8338142, -836445, -1999307, -2110977, -4493073, 3758, -1340030, 7245610, -2324651, 12637941,
+-106837, 1168231, -2354179, -1694902, 62814, -231391, -1036698, -2051384, -1502702, -5989869,
+1461363, 1173063, -768262, -2993055, 4254702, 3379066, 3683471, -1080721, -2724620, 323733,
+3207267, 3791383, -2855080, -7703024, -4125853, 1236414, 6667400, -491237, 5455682, -3824669,
+-6307697, 5357435, -2179159, -4333085, 3089155, 4386772, -5557151, -3619584, 5279052, -6244883,
+-6650757, 3143916, -1852205, -663036, -3461207, -2123861, 3519189, 4794794, 2622078, -1217086,
+813359, -672699, -1058173, -4746476, 1633698, -12639552, -3574487, -4097399, 3528316, 4196720,
+425202, 2024003, -7747048, 2013803, 1267015, 1997160, -6980396, 13167833, -537945, 2330557,
+1807644, -6438156, 1054415, -9175661, 5852430, -2092186, -7483444, 1340030, 641561, -3979824,
+477278, 617402, 6029597, 10505490, 4716411, -2411624, 3549791, 4148939, -9904195, -3948686,
+-4487704, 2476586, 2379949, -1988033, 1686848, 3118683, 2333778, 4086125, 8505109, -238908,
+-2956548, -1342177, -168041, 6030134, -4495757, -595390, 3328063, 8142721, 427349, -6762426,
+-5179194, -1584843, -6038187, -2279017, -12999792, -3563212, -4802311, 5565741, 211527, -2671470,
+-16678432, -2188823, -2199023, 6951405, 16593606, -4728222, 11175505, 1957431, -9710384, -9939091,
+1823214, 2604898, -5587216, 6339909, -4381404, 5132486, -6096169, 3104725, 2290828, -5815923,
+-4820027, -3689914, 2143189, 6592238, -8245801, 441845, -8662412, -359704, -3143916, 2308008,
+6729677, 834297, -2531346, -2318746, 7306813, 148713, 11007464, 3461207, -3686156, -3691525,
+-2724083, 1724966, 7108171, 63888, 11550778, -19586124, -14131516, -11595338, -2226404, -9849971,
+1205275, -3557307, 4184909, 9234717, 2272038, 3973382, 6490233, 9778567, 5698348, 1726040,
+-5660767, -16108275, -16236587, 9558450, 1838246, 12068858, -6899865, -5712307, 7117298, -11788075,
+3459596, 8360154, 2915746, -5741835, -685047, 15454366, 12154221, -663036, -11468100, -17971754,
+-2626909, -5981279, 6089727, -5033165, -5973226, -20422570, -9502078, -18240726, 6392522, -112206,
+-5094905, 5493800, -1185411, 612570, 826244, -5519033, -2147, -6415071, -1763084, 4693863,
+2586644, -6556805, 1999307, 7687992, 11170136, -1282585, -2185065, -3409130, 116501, 6567005,
+8081518, -756451, 719407, -1381906, -2057289, 10763725, 6920266, 773631, 7150584, 2704219,
+-10040560, 2248416, -1535988, 12697534, 4194573, 1988033, 5309117, 8378408, 1577864, -6567005,
+-12589623, -2358474, 1862942, 6803765, 2629057, 754841, 1837709, 9810242, 1397475, 3350075,
+3648575, 2736968, -6867653, -6842420, -6810745, -6980396, -7097434, 9822590, 26246008, 5699959,
+-8055211, 4629438, -4687420, -15602006, -3132642, -15315853, -8347269, 7807714, 10516227, 3973382,
+2166274, 790274, 1943473, 9863392, -7085623, 13990319, -9130027, -9415642, 11253888, 4862977,
+-18187040, 7800735, 4627291, 5602248, 11964705, 5737540, 8889509, -790811, 4806606, -3044058,
+7572564, 1786706, 1590749, 4852240, -10290742, -5775121, -3197603, 6312528, 2791192, 2087891,
+5144834, 1237488, 1764158, -9559523, -8053, 9705552, -1916629, 901406, 1131724, 940061,
+11833172, 4245575, 15949361, 3326452, -2500745, 14909442, -13423920, -2164127, -2355253, -5745056,
+-1515050, 2696703, 14833206, 901943, -3653407, -6511171, 2628520, -6875706, -3286187, -4738960,
+-9124121, -2187212, 1124208, 11897596, -2909304, -10002442, -13974750, -5817533, -13748727, 9718437,
+-11644730, -9556839, -6619619, 5935645, 16963510, -17187922, -5318244, -19299436, 5953362, 2049773,
+2348273, -5948530, 2057826, 20525112, -10437844, -2422899, 8593156, 4883378, 4789426, 6845104,
+5559835, -7517267, -11099269, -2773475, -5861020, -9437117, -10182294, -419296, -1874216, 2066953,
+14601815, 8220031, -7154879, -4843650, -188442, -4666482, 4115116, 25876642, -8279623, 17848274,
+6529961, 2450816, -454193, -3670050, 3909494, -10843719, 5668283, 13683229, 1449015, 1565516,
+12395276, 6714108, 5375689, -10507637, 9091372, -6626598, -7626788, -24296630, -6269042, 14266271,
+-7459822, 2919504, -15174119, 10663867, -4747550, -7770133, 11973295, -17934172, -10146323, 16694538,
+-10631655, -15522549, 1539746, -10394895, -8083666, -884226, 11839077, -5513665, 20955682, 19891068,
+3661460, 6496675, -11659762, 1602560, -9487583, 14976551, -3190624, 4543002, -7300371, -4386772,
+2276333, 2180770, -7031399, 11523397, -3460670, 2592550, 3969624, -7237020, 2544768, -9283572,
+-232465, 5588826, 6176700, 353798, 8249022, 10983305, -1103270, -19963544, -3701188, -5746130,
+14134201, -11955578, -15468862, -10555956, -7560753, 2369211, -8920647, -6456947, -4664872, -934155,
+2306398, -29248728, 18319646, 14926622, 20928302, -6369437, 3043521, 14714558, -14025216, -12145631,
+2113661, 9881109, 5734855, -972810, 2483028, -6746320, -9293235, -10522133, -3714610, 40351756,
+2820183, -20587388, -4181151, -10416369, 7362111, 7919383, -13329968, -6106370, -10813117, -22126060,
+2230162, -18522046, 9053254, 2587718, -14084272, 7929584, 10041634, 12933220, 4410395, 4963909,
+-14549202, -543850, -2377265, 13911936, 7250979, 435939, 13917305, 14555644, -1029718, -7183333,
+2458332, 18040474, -11005854, -9443022, 10200010, 5054640, -11135240, -2696166, -10198400, 20761336,
+-16751983, 4948339, 12048994, -6624987, 11201275, 3741990, -3963181, -5266704, -4299263, -8304856,
+12824235, 15843061, 4386236, -11793443, 2568927, -13009456, -3667902, 8929774, -180926, -6250788,
+-3300682, 2599529, -16018081, 967978, -122943, -9684078, 15622407, -13014825, 1053341, -2496987,
+-7920994, 11359115, 1457605, 6983080, -2588255, -87510, 2189897, -5296232, 8105140, -4541928,
+2543158, -4068408, 20269562, 9120900, 20282984, -558883, -13234405, -7516193, 9788767, 12549894,
+16070157, -787053, -2286533, 19541028, 10276246, 21851720, 4000762, 597537, -10019622, -5989869,
+-5484137, 4783520, 4488241, 11124502, -13267691, -474057, -7459822, 6230924, -11379516, 3246459,
+14880988, -3593814, 639950, -8755828, 2998961, -8829379, -23767276, 1809255, -2800319, 97174,
+-10080288, -4094715, 10660646, 17026324, -979789, -8531953, 11841762, 3348464, 3584150, 11068668,
+5396627, -8749385, -2402497, 6398965, -280247, 5613523, -8223789, -10128607, 3616363, -9716827,
+-13763223, -8932458, -15822660, -6008123, 6280316, -15440944, -1227287, -17512730, -5967857, -2839510,
+6357089, -20757040, 8140037, -1889249, -10443213, 9698036, -4881231, -594853, 22812182, 21646636,
+67646, 32029718, 36687612, 1996086, 11781632, 11346767, -1489817, -26268556, -614180, -909996,
+-9897215, 7619272, 7045357, -14164802, 7999914, 10284836, 1865090, -3571802, 5699422, -3390340,
+18951006, -2903398, -8449274, 450972, 4575214, -1403917, -868120, 46171, -29386704, 9008694,
+-239444, -20142322, -8054138, 4022237, -1412507, -13533979, 5440113, -16034724, -879931, 2171106,
+-25894358, -4181151, 12124693, -7928510, 2023467, 17382806, 11120207, 13471702, 4911295, -6539088,
+-11408507, 13463112, -5501316, 7878044, -10609643, -5402532, 9751723, 15101105, 3507378, 17951890,
+-9955734, 15647103, -10852309, -14331232, -8898098, 15579994, 17643726, -13569412, 9876277, -38866232,
+-713501, 12066711, 7198902, -6148246, -11143293, 6325413, -27980638, 1129576, 36884644, -25266218,
+-1272384, -3113851, 2913599, -10609643, 5586679, -16317118, -14665703, -6186901, -3277060, 2769717,
+-2940442, 7143068, -10744934, -634581, 24078124, -19938312, -15691126, -5074504, 21195664, 1793686,
+-24283746, 9735617, -8378945, -11846594, 3519189, 33725692, -18544596, -11933030, 25755308, 17294760,
+2611340, -11263552, 1701881, -4834523, -6828461, 6053757, 7501161, -5236102, -19002010, 24668144,
+13125420, 3849365, -26220238, -5182952, 9574556, 8451959, -2279554, 13373991, -1175210, 3918084,
+-5085778, -17385490, 11926587, -12649752, 8296803, 2764885, -13091597, 26370562, 5576478, 18808198,
+21133386, 2785286, -27960238, -6297496, 2042257, -12234751, -3976603, 820339, 1343788, 12855374,
+26875758, -6376953, 10804527, 1929514, -10687489, -51171852, 2997887, -13054016, 1387811, 26224534,
+2075006, -4578435, 4311611, 1399623, -17909476, -18500572, -17424682, -15943992, 20875688, -3859028,
+24992414, 2654827, -24385214, -442919, 2246805, 20948166, 3647501, -2923799, -4484483, 6265821,
+-13316009, -4554276, 22327388, -4241280, -29912836, -22152904, 13073880, -2542084, -6531572, 7170448,
+-2512556, -14821395, 4192425, 9312026, 20075214, -3745748, -17373142, 606127, -21805548, 8612483,
+23881628, -3520263, -30135102, 9727564, -697395, 2021319, 6831683, -9041980, 17992692, 1695438,
+-12670154, 9913321, -6978248, -3860639, 25924960, -13168907, -4716948, -4208531, 16335908, 6753299,
+-29040958, 14711874, -23306104, -5716602, -12384001, 2563559, -7151658, -8141111, -1053341, -25713432,
+5702643, 41075456, 27654220, 11902965, -20044076, 14993194, 20161650, 28477780, 14606110, 2989834,
+1685775, 17711908, 31964758, -7450158, -3103114, 17344152, -34287796, 12393128, 32009318, -6811818,
+-10032507, 7798587, 25082072, 19247360, -12212203, -22654342, -431107, 11005854, -2873870, 2480881,
+1315871, 26039850, -13996762, 16628503, 26427470, -10328859, -1995012, 17784922, -1566053, 62743568,
+-25192668, 11226508, 44246216, -24843164, 9394167, 2842195, -33552284, -1090922, 7905961, -15360414,
+35580044, 2638184, -3155190, 2746632, -12584254, 46911780, 14594836, -37324876, 37963216, -14907831,
+3221226, 11363947, 15421617, 24322400, 13801341, -6126771, -21232170, -31126164, -9518721, -12204150,
+238908, -9258876, 22233972, -11812234, -18814642, 1631014, 10715943, -48797272, 28614682, 863288,
+17478906, 27666568, -45935748, 10206990, 24340116, 5020280, 18289044, -18244484, 20095616, 5352066,
+-17693654, -86973, -10959146, -34314640, 19157164, 10250476, 31586264, -17503602, -22221088, -8261907,
+7832947, -5022965, -37956236, -19285476, 12411919, -3134789, 6347962, -16499117, -4438849, 12592307,
+-10242423, -5621039, -15810311, -4025458, 6642167, -18366354, 2594697, -39908836, -32048510, 10038949,
+-33339684, 2921115, -34884800, -24981678, -16407312, 16814796, 34089692, 41060424, -8825084, 18372260,
+23124104, 11000485, 10610180, -15552613, 46654620, 46933792, -30438970, 32265404, -23587424, 16689169,
+34128348, 32022740, 39517456, 46418396, 33950104, -34428456, -23260470, 1737314, 3800509, 16239271,
+-4610111, -3490198, 60345364, -44334800, -21859236, 23060216, -13649943, 21966610, -17213692, -20235738,
+6954089, -47012176, -1800128, 30455076, -7260642, 15266998, -26356066, -7327751, -10304163, 217433,
+33398740, 9166534, 7509214, -6868190, 18332532, 4882841, 45467060, 10131828, 26527328, 789737,
+-20760798, -20766704, 26362510, -14074608, 12114492, -1547262, -34257732, 23228256, -30583388, 57577256,
+-44236552, 25331180, 23754928, -26875758, -21573084, -17397302, 21399674, -3485903, 22354768, -2226404,
+2456721, -42424612, -22275312, 7179038, -20500416, 4196183, -12842489, 9302362, 5894306, 28238336,
+-19361712, -9337796, -8914741, -18462990, 40830108, 4184909, 2603287, -43128988, -14220100, 16572131,
+10650982, 8293582, 34331284, 17308718, 29721174, 29836064, -4155381, 6698002, -19644644, -89491552,
+61929672, -38069516, -28145994, 1551020, 11978127, 17095580, 1990181, -13595719, 47938276, 25670482,
+5850819, -23598698, 15032922, 45097, 17198122, -22492206, -17220134, 13392782, 35450124, -41024452,
+573915, 14484240, 3273839, -9405442, -7427072, -4357245, 406948, -1191853, 8136279, 47038480,
+1583232, -19852412, 29544006, -6238977, -31476204, -37631428, 35223564, 13091597, -6784438, 14796162,
+6752763, 31750546, -43421584, -3241627, -23100482, -4796942, 21686900, -16256988, 7056632, -18880140,
+7404524, 64909840, 2303713, -34901440, -43495672, -978179, 16555488, 20715164, -19474456, 5695127,
+27536646, -11113228, -63534916, 36134096, -24685324, -31863826, 10457172, 59134720, -44241384, 31227634,
+33861524, 16607565, -40893996, -25109990, -25437480, 51672752, 17278116, 3221762, -3608846, 7997229,
+14785425, -4887673, 6989523, -8102456, 97174, -6463926, 24530168, -27608050, -2916820, 16075526,
+-37834368, 12011413, -9128953, 2573222, -4313758, -10929081, 6916508, -3242700, -15349676, 41302552,
+-31648540, -9259413, 29655676, -19269908, -2794413, -6310918, 6599754, 28889560, 2369211, -28868622,
+39182988, -21474836, 14018236, 24001350, 10941429, -9461813, 2245731, -21840446, 5338645, -13371307,
+-10137733, 51993264, -12069395, -21231098, 6926172, -10099079, 12550968, -8477192, 13785771, 33367600,
+-18370648, 10853919, 25922812, -30522186, 14087493, 16242493, 7814156, 20446192, -23128936, -6266358,
+36461052, -24799678, -4852776, 10495289, -9212168, 34827352, -32868310, 6730751, 14233522, -14040785,
+15199889, 15695958, -30044906, -78913584, -125615984, 10678362, 116809152, 8474507, 266435616, 275957568,
+134877008, 288296992, 189871376, -43626132, -9072045, -68091872, -239189408, -209839216, -133089760, -244179088,
+-193873216, -60613800, -124914832, -105086576, 26050050, 50784232, -37904160, 6602976, 42063836, -50005768,
+-34875672, 63314796, 53419192, -3963181, 60163364, 112608672, 27622546, 76939504, 155897648, 67514736,
+26968636, 137478144, 110531520, -73551, 73077792, 161175632, 15161771, 22280142, 123206504, 40891848,
+-39371428, 79200272, 71367864, -34455840, 57970248, 82851528, -31707060, -110922896, -70146480, -222823984,
+-349264608, -315122816, -336399008, -494227808, -451002176, -426023712, -512009504, -500549984, -423244864, -389259328,
+-360098112, -237003280, -135062224, -14229764, 46017892, 153234768, 263588592, 284531904, 321910496, 359044768,
+146011168, 19289234, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
-6075768,
--9342091, 178241, -5176510, -1161252, -3584150, 2933463, -5563594, 260919, 2194728, -1876901,
-1732482, -447750, -497679, 755377, 812823, 1699196, -2633889, -605054, -1763621, -4587562,
--3758, 1382443, 388695, -1945083, 3505230, 1270774, -1101122, 1235877, 311922, -1985886,
-1167694, -658204, -2212445, -2467996, -1138166, -475668, -1144609, 2312840, 4354023, -381715,
-6562173, 1059783, -4931160, 1795296, -817654, -3785477, 483721, -3598109, 4072703, 906238,
--3160022, 1583232, -1826972, 1346472, 2078764, 997506, 951872, -717796, 1852742, -3002182,
-1622961, -1305133, -1239098, -824097, -1472100, -5317707, -967441, 2918430, -1786170, 2085744,
-1026497, -1455457, 526670, -4295, 1669132, 6414534, -3165928, 1748589, -614717, 339839,
-360240, -2633889, -2897492, 1913945, -472446, -2393908, -2960843, -1883880, 2755222, -288300,
-3676492, 749472, -4461934, -4704600, -3240553, 1377074, 1270237, 2448131, -249645, 2805151,
--2011655, -375810, -4795868, -733903, -779537, 1045288, 2001455, 1893544, 3796751, -1772748,
--2268280, 2012729, 1290101, -2325725, -2232309, 168577, 1896228, 871878, 4256850, -1470489,
--1048509, 4652524, 1647657, 8664560, 3914326, -2323041, 202937, -5190468, 406411, -5921150,
--64425, -2142115, 4523138, 559956, 2628520, 3179887, 2082522, 3066070, 2423972, 570694,
--4517769, -391916, -1925219, 3668976, 5787469, -3366181, -1704565, -1318555, -1012002, -2474975,
--10022306, -10944114, -754304, -3221762, 520228, -2468533, -538482, 5906117, -980863, 3116536,
--1395864, -3023657, -3914863, 606127, -741956, -4913980, 5595269, 1521492, 456877, 2801929,
-2877628, 4406100, 3272228, -443455, -3317325, 3013993, 796716, -4705674, -1959042, -2204392,
--1315334, 3925600, -1350767, -7105487, -2315524, -949188, 1486059, -2317672, -4497368, -10201,
--420907, 5096516, 792421, -202937, 1925756, -282394, 7089381, -1386738, 641024, -1731409,
--2835752, -161598, 3013457, 1212255, 786516, 2713883, -2698850, -4563403, -3220689, -795643,
-488553, -1185948, 15032, -3459059, -865436, 1579474, -1217086, 3299609, 1598802, -332323,
-392990, -3360812, -3063922, 5215164, 792421, 2091649, 808528, 1320166, 7189776, -595390,
-3768297, 1891396, 4955856, 5641977, -1183264, 235149, 3763465, 3315178, 2524904, 6452652,
-1487669, -2485176, 404801, 5585605, 2172717, 2465848, 5193689, 6535867, 4607426, -1899449,
--4636417, 2952790, 2311229, -3092913, -4500052, -142808, -2622615, 804233, 1756642, -2080912,
--2262374, 1843078, 1796370, 3595425, -2734284, -6004901, -2808909, -2890513, -3735548, -1797444,
--4274030, 1980517, -5842230, 1910724, 395137, 743029, -2674154, 4888210, 4067871, -4533875,
-4688494, 1145683, -881005, 887985, -3689914, -1859184, 3099893, 397821, 1155883, 45634,
-3694746, 731755, 4600447, -3322157, -606127, -1309965, 1549410, 1749662, -1511292, 690416,
--2992519, -66035, 1236414, -173946, 18912352, 621697, 16696148, 1844152, 10409927, -1866163,
--2321430, 3444564, -8557722, 9338333, -5486284, 6423661, 3941706, -2763275, 2146947, 246961,
--110059, -1010391, 2029372, 3995393, 3909494, 7657927, 1313723, 2785823, -709743, 8926553,
--10100689, 744640, -1166084, 2834679, 3681324, -4570919, 1526324, 2819109, 763430, 3895535,
-1407139, -3395709, 1458141, 8072391, -1822677, 2847563, -1679332, -625992, -763967, -4859756,
-7945153, 428960, 416612, 6805913, -1268089, 1053878, 7355669, -10778757, 2736968, 374199,
-3024731, 9787694, 2378338, 2827162, 2830384, -381715, -2913062, -1114544, 1918777, 1474784,
-4626217, -1139777, 3772592, 2545305, -1634235, 1487669, -3445638, -1471563, 307090, -7634305,
--9627706, -3671123, -1547262, -3463354, 7492571, 3349538, -6206765, 6867653, -1082869, -4856535,
-1337346, 3032784, -2896419, -4440460, -4218732, -8516383, -4490389, 3776350, -5604933, -8658117,
-2292976, 3587372, 529892, -3155190, 6357626, 856846, 5858336, -335007, -1582159, 3490735,
-5528160, -8108899, -4084514, 2248416, -2037962, 2019172, -5545340, -369904, 1208496, 1941862,
--4780836, -8264054, -2572686, 2414309, -1652489, -1047972, 241055, 2661806, -1088237, 1465658,
--3066607, 4771172, -6585796, -4742181, -1946157, -4654134, -1693291, -1296543, 1516660, -3443490,
-2224256, 5139465, -796180, 1144609, 1046361, 2410014, 4716411, -2032056, -1359357, -1067299,
--2502355, 5199595, -2542084, -9267466, -6197638, -3659849, -2429878, -8141111, -19667192, -1571958,
-1149441, 462246, -6496675, -2528125, -7337415, -1568737, -8611946, -9385040, -7715909, -1453310,
--5153961, -10590316, -6957847, 2580739, 3247532, -2676838, 6443525, 3976603, -2531346, 8448738,
-1637993, 1040993, 1217086, -10686416, -479426, 2241436, 4107599, -3069291, -3133716, 7021198,
-12795244, -9163850, 3426847, -2372433, -512712, -7995619, -750009, 385473, -4308926, -4978404,
--3957276, -4145180, -2448131, 3299072, 9468792, -3856344, 3592740, 6931541, 5836324, -1364726,
-738198, -1462973, -1729261, -8068096, -4185446, 5563594, -3002182, 1729261, -2843805, 3163780,
-1482301, -256624, -147103, -3333432, -3142306, 1496259, -984621, 2521683, -10028749, -10164577,
--860067, -11668352, -2790655, -14130442, -3668976, -9882183, -1632088, 2376191, 2229088, 11630235,
--7373385, 2947421, 2636573, -5622112, -3120294, 9458592, 581968, -2170032, 763967, -6951405,
-6367826, -9032853, -3493419, 4711043, 2288681, -510027, 1281511, -1393717, 2777770, -3566970,
--7464653, 978716, 3133716, 3322694, -6020471, 2083596, 6111739, -6092948, -8657580, 7174206,
--5989332, 4864051, -4381404, 2943663, -435939, -5415417, -7978439, -4233764, 1859184, 215822,
-2652679, -3507915, -4153234, -9330280, 4935991, -6537477, -3416647, 4365835, 8581345, -609349,
--1960653, -12381854, -10286447, -2872796, -3711926, 5359046, -1424319, -7067369, -1212255, 869731,
--4139275, -597000, -8869644, 6397354, 2645700, 7859790, 9822590, 7447474, 3477313, 21099564,
-9785546, 13745506, -4491999, -286689, -554051, -20345260, 734439, 9083319, -4435091, -1399623,
-329639, 13147432, -2590402, 7679939, -1948305, 7348152, 3525095, 9024800, 12044162, 1733019,
-7875897, -2470143, 6736120, -879931, 12865575, 7194607, -743566, 7673496, 5601174, -2197950,
-5301601, 3566970, 4479651, -3977677, -3815005, -10793790, -1291175, 7651484, 818191, 952409,
--3196530, -4078072, -3936875, -3615289, 18066780, -12165495, 4020090, 5631776, 2428804, 1527935,
--8072391, -9715216, -3352759, -1556389, -1390496, -16776142, -9253507, -8700530, -654983, -546535,
-3809099, -700080, 3169149, 5752572, 9322763, 1837709, -4215511, 3524021, -8364449, 1905355,
--6843494, 2195802, 1767916, 31304942, 4084514, 4133906, 4268661, -2610266, -12266427, 8135742,
-9927817, -5767068, 4755066, 3571802, -7036230, -1657321, 8347806, 3810173, -12919798, 2935610,
--2927557, -7538205, 672699, 3499862, 1941325, -636192, 614717, 5419175, -958851, 2856153,
--9783399, 3823595, -174483, 3760244, 3358128, -2378875, 8574902, -10804527, -3500935, -10659572,
-9921911, 3846143, 15576236, 6840273, 979789, 2782602, -10771778, -431644, 4509179, 3455301,
-4672925, 495532, 3173981, -3400004, 4473746, 10214506, 15214922, 5871221, -5277441, -3740380,
--297963, -2961917, 6410776, 6975027, -3765076, 4097936, 9057012, 2335925, -9674951, -21486648,
--9403294, 4306242, 10558640, -3991098, 3966402, -707596, -864362, 66572, 10806675, 1787243,
--18634252, 4922033, 10263361, -11453067, 7744363, 10473815, -26931056, 5050882, 2161442, 5143760,
--9436043, 14775761, -21042656, -1184337, -601832, -2800319, -1280974, -7414724, -7342784, -2379412,
-8872866, -214212, 1205275, -5232881, 6543383, -1910724, -1724429, 3133179, 10736344, -7524246,
-8027294, -2357937, 5274757, 1042066, 7612830, 9002788, -1312649, 1531693, -12068321, -7711614,
--1664837, -6132677, -10884521, 89121, -3287261, -8985608, 12527883, -11992622, -2502355, -6351183,
--4718022, 6506339, -7789997, 3612604, -1996086, 6630356, -3118683, 7339026, -10492068, -4843113,
-2658048, 9056475, -17616346, -8792335, 1888175, -1828046, -2134599, 5514201, -8524973, -21263846,
-5388574, -19191524, 9774809, -8809515, 1392643, -21087216, -4997732, -14766098, -5933498, 17934172,
-1037235, -15351824, 14415521, -6952479, 1188095, -16019691, 2648921, 5867462, -13607530, -3743601,
--12145094, -467078, 997506, -4563403, -3230352, 11659226, 2052458, -8607114, 2239289, -17968532,
-10711648, 16226386, -5222680, 6482717, 12014097, -1395864, -2252174, 921807, 1601486, 6377490,
-1343788, 1016297, 3799972, -10411001, -549219, -11906723, -11349451, -5400922, 4991826, 6114423,
--202937, -14303315, 2830384, 2751464, 6831146, 13634911, -14676977, 20834886, -17841832, -162672,
--3437048, -4146791, -8505109, -17820894, -22332220, -9929964, -2323041, 4475893, -1415192, -443455,
-3666292, -1670205, 16304233, 5865315, -15799037, -4371740, 308701, 8370892, -10414759, -1517197,
--21489868, 1786170, 19727322, -17648020, -9777493, -18418968, 22106196, 10111427, -11531987, 15123117,
-14194330, 21296596, -8154533, -6723772, 14729590, -1767379, -3483755, 5770289, 6282464, 3171297,
-2754148, -20245938, -2681670, 539555, -310311, 1624571, -2828773, 9270150, 16551730, 2212982,
-673236, 200790, 319975, 16191490, 3671660, -606127, -3929895, 4524748, 2966749, -1950452,
-1292248, -8438537, -2384244, 14176613, -14064944, -6048388, -12205760, 15797963, -14505178, 7563438,
--6257231, 5058398, -3578245, 4205847, -11775727, 3177739, 16397648, -10529112, 326418, -28935732,
--1883880, -9771587, 224412, -26896696, -1807644, -597000, -9114457, -5114233, 21935472, -23302346,
-3417720, -5553393, -9658308, 7628399, -8830453, -17580912, -13911399, 3482682, 344671, 6261526,
--9908490, -5090610, 18262738, 7361037, -3149822, 4818417, -10111964, -9243306, -8800388, 19224274,
--17068200, -19683836, 9258339, -18228914, 6537477, 1615445, 4683125, -7618198, -2554432, -9437654,
--4881231, -7036230, 3403225, 10497974, 6104223, -14353781, 17490180, 3264175, 5855651, 2769180,
-8240432, -676994, 7919383, 3257196, -4048007, 6562710, 1597728, 8335458, 4511863, -10311143,
-4401268, -1986422, 3021510, -876173, -4615479, -2041720, -8444443, 9300215, 7971460, 10296647,
--1799591, 17489106, 18541910, 9412958, 2297271, 10529112, 19272592, 11732777, 21061446, 15891379,
-15701864, -14510010, -17118666, 6098854, -3477850, -1764158, 1357747, -5473936, 7170448, 8665097,
-3462818, 19817516, -3596498, -6310381, -8470749, -3075197, 2215130, 1550483, -34396244, -6533719,
-15755551, 10117869, -33344516, -25227028, -7363722, -628676, 11521787, -4920959, -366683, -27112518,
-4242354, -14314052, 10498511, -2192581, 13776108, -11627550, -2349884, -13736916, 2854006, 10849087,
--4760971, 3051574, -7211250, 430570, -17573932, -5156645, -309238, 1194001, 14018773, 17402670,
-1201517, -16117939, -10691784, -5222680, 2268280, -4247186, 5743982, -18424336, -5083094, -2469069,
--4133369, -10268193, -1761474, -4640176, 13246216, 18417894, 12994424, 4727149, 8217883, 7928510,
--8080444, 30808338, 19192062, -23611046, -20052128, 22868016, -16868484, -9585830, 4184372, 3150359,
--16353625, 17346836, 1805497, -50656456, 14527727, 33483028, -21709986, 23633594, 30532386, -8340827,
--2452963, 17949742, -18044232, -9745281, 6781217, -6375342, -11219528, -9796284, -7401840, 11761231,
-6059662, 7932268, -2581812, -10199474, -9482751, 10843719, -8990440, -162672, 2180770, -14762339,
-9095130, 8689793, -7115687, -4505958, -12902082, 810675, -8363375, 10808822, -17790292, 1716913,
-5432597, -483184, -9032316, -17035450, -4984310, -7221451, -2787434, -13150116, 17263084, -17651778,
-1992865, -6255083, 3441343, -25183004, 24994562, 5195837, 1374390, -10305237, 4696010, 4418448,
--168041, 2499134, -6031208, -19983946, -4865661, -8643622, -14294725, -17234094, -7689602, -4383551,
--18634790, -6636262, -2354179, 11710228, 3857954, -15679852, -15191299, 8125005, -5239860, -19963544,
--10209674, 4497905, 14458471, 15700790, 14620606, 25664040, -6738267, -18254684, -18526878, -1668595,
-10219875, 19745038, 8841727, 4060892, 11322608, 33716032, -29795262, 27917, -12349642, -14450417,
--9965935, 15950972, -8993125, -7999377, 6961605, 20322174, 11467563, -13562970, 8690329, -14258755,
-10536629, 1648731, -2379412, -6337224, -12019466, -8106214, 1312649, 3183108, -18591840, 12538083,
-1315871, -483184, -7379828, -6473053, 12260521, -16281684, -1322850, 20221780, 21881784, -18802294,
--1786170, -2723546, -13397614, -15503758, 17971754, 5484137, 11311870, -2273648, 1096290, -238908,
-11324218, -3159485, 363998, -13007308, 20414516, 18620294, -25360172, -29344290, -6673306, 1804960,
--10234907, 2479807, -7587060, 3809099, -15624554, 18008262, -20026358, -16141024, -6440304, 4329327,
-14057428, -5850819, 20380156, 3443490, -6736656, -5643587, -4641249, -11595338, 13194676, 9904195,
--43181064, 64617784, -43963284, -12861816, 13261248, 34318936, 30277908, -11954505, -10216653, 622233,
-3034931, 17106318, 8168491, -25545928, 8709657, -6496138, -7101192, 1149978, 11395085, -1364726,
--16740172, -17278116, 9993315, 5733245, 12770548, -7361574, 15469398, 2056753, 17900350, -2879239,
--3995930, 10923176, 140123, -14093398, 3882651, 13868986, 1010928, -18289044, 10195179, 18835580,
--16690243, 6140730, -18025440, 6710350, -23204634, -17420924, 29312614, 24554328, 13894219, 32315870,
--4534412, 38796976, 16743393, 14306536, 23379654, -37172940, 32459752, 9342628, 14373645, 13000329,
-5467494, -18688476, 5029407, 32578400, 40527312, -1543504, -41133976, 20206210, 3466039, 7901129,
-804770, -235149, -7175280, -34134252, 8753143, -7212861, 9308268, 44449152, -2460480, -50982872,
--27057220, -29655138, -12506945, 1142461, 16259672, -43317968, -10745471, 7834557, -21448530, -22837952,
--22451942, -22794466, -4667019, 27036820, 12573517, -9467182, 11705933, 6051072, -12838194, 14393509,
--15993384, -2443300, 5437966, 9837086, -30923764, 16009491, -15666967, 9521406, -6804302, -23216982,
-5800890, 8419210, 2816962, 4889284, -10949482, -33337000, 450972, 7996156, 6511708, 1263794,
-3308199, -13304735, -1149441, -299574, 30114700, -3880503, -52171504, -22215718, -6584185, -41612864,
-8635569, -12108050, -11907260, -19623706, -10247792, -29753922, -31080530, -35974648, -4762045, 39521216,
-4218732, -23758148, 10198937, 1046898, -3768834, -13137231, -20332912, 8722542, 15205795, 12686260,
-6364068, -6675990, -30057792, -19474456, -17070348, 27817966, -2426657, 22140020, 30735860, -26014080,
--30455076, -34019364, 9812927, 10791642, -44329432, -27077622, 2101850, 521302, 14936286, -53655952,
-6943352, 11490648, 38022808, -43089796, 6410239, 6252399, -3833258, 22690312, -11947525, 40290552,
--682900, 2964601, 13986024, 15276125, -13772886, -33693480, 21055004, 22749368, 7246684, 28955058,
-7681549, -4342212, -9010841, -25575456, 40830644, -17884244, 38918308, 13913547, -341450, 10280004,
--13003550, 19252728, 22247394, -14261439, 17383880, 6853694, -35457640, 27414240, 31702764, -4224637,
--16188805, 3058554, 2729452, 554051, -2936147, 52184928, 3358665, -31544388, -12433393, 5086315,
--39020852, -59122372, 13951128, 71422088, 22967874, -6615860, -38202660, -13657459, 2507724, 46917148,
--19808390, -26489748, -41519448, -71721656, 20309290, 35698156, -47370804, -3361886, 25371446, -10449655,
--21774948, 19520626, -21064130, -10325638, 692564, -14503568, 23715198, -7598871, -12127914, -3634616,
-12070469, 45105208, -7873749, -19906636, -23848880, 8791261, 20274930, 13217225, -21233782, -2727841,
-23170274, 1064078, -19381576, 6436546, -17431662, 41440528, -19698330, -44324064, 14275398, -7312719,
-20139102, -29738890, -30521112, 29541322, -3536906, -38244000, -21489868, -36624260, 46103252, 22604950,
-11565810, -50107236, 7668664, 20163798, -36115308, 1541356, -26265336, -19677392, 18361522, -17723720,
-21273510, -14958834, -31417148, -8040179, -8517457, -5927055, 9535901, 1902671, -19716048, 56809532,
--7808788, 23540716, 26539676, 13052942, -7781407, 1943473, -12261595, 27130772, 11224360, -19014358,
-14564234, 51314660, 11997454, 21539260, -716723, 4281009, 9538049, -20320564, 9631464, 17121888,
-1397475, -23195508, -10539313, -17520782, -5461051, -23241142, -20046760, 1448478, -15731391, 23667418,
-9279277, -7008313, -16793322, -9852655, -4705137, 12193949, -2916283, -22036940, -15978889, 3149285,
-5690832, 10732050, 5744519, -5806259, 6754910, -19370302, -54101556, 1099512, 68300720, -3182571,
--47596292, -9145059, 33116882, 7676181, 6379100, -2124935, -20039780, -27633282, -14660334, 4780836,
--510564, -25664040, 10107132, -50371376, -7734163, 44238164, 14408542, 57252452, -6727530, -24390582,
--6061810, -6474663, 16508244, 2051921, 300648, -33328410, -15448997, -16744467, -1722819, 35463008,
--4805532, -10821170, 11962558, 12930536, 1439351, -22488986, -33509334, -23281944, -78017008, -120094800,
-26946624, 105764640, 31889058, 259835856, 243976160, 107178224, 251017216, 104265160, -49821084, -4488778,
--80820544, -213458256, -119199304, -114530136, -220008096, -161750608, -96014528, -141422528, -97886600, 12578349,
--15737297, -51120848, 42545408, 39113192, -9622874, 41739564, 128942968, 48041892, 15103252, 121942712,
-107189496, 27801860, 129026720, 160507760, -14295262, 88605712, 160070752, 50862612, 53750440, 161863360,
-89143656, -32202592, 120459872, 78304232, -58421220, 33590404, 88803816, -72533944, -111872624, -44733696,
--211876640, -339239072, -330434912, -365603712, -568404032, -497740544, -417713472, -533232544, -463905312, -313789760,
--366493312, -292750336, -115445496, -72475424, 52023328, 138012336, 261211856, 364685664, 398688384, 468327008,
-507501920, 453715520, 408530848, 400821376, 171415904, -13131326, -2270427, 0, 0, 0,
-0, 0, 0, },
+-9342091, 178241, -5176510, -1161252, -3584150, 2933463, -5563594, 260919, 2194728, -1876901,
+1732482, -447750, -497679, 755377, 812823, 1699196, -2633889, -605054, -1763621, -4587562,
+-3758, 1382443, 388695, -1945083, 3505230, 1270774, -1101122, 1235877, 311922, -1985886,
+1167694, -658204, -2212445, -2467996, -1138166, -475668, -1144609, 2312840, 4354023, -381715,
+6562173, 1059783, -4931160, 1795296, -817654, -3785477, 483721, -3598109, 4072703, 906238,
+-3160022, 1583232, -1826972, 1346472, 2078764, 997506, 951872, -717796, 1852742, -3002182,
+1622961, -1305133, -1239098, -824097, -1472100, -5317707, -967441, 2918430, -1786170, 2085744,
+1026497, -1455457, 526670, -4295, 1669132, 6414534, -3165928, 1748589, -614717, 339839,
+360240, -2633889, -2897492, 1913945, -472446, -2393908, -2960843, -1883880, 2755222, -288300,
+3676492, 749472, -4461934, -4704600, -3240553, 1377074, 1270237, 2448131, -249645, 2805151,
+-2011655, -375810, -4795868, -733903, -779537, 1045288, 2001455, 1893544, 3796751, -1772748,
+-2268280, 2012729, 1290101, -2325725, -2232309, 168577, 1896228, 871878, 4256850, -1470489,
+-1048509, 4652524, 1647657, 8664560, 3914326, -2323041, 202937, -5190468, 406411, -5921150,
+-64425, -2142115, 4523138, 559956, 2628520, 3179887, 2082522, 3066070, 2423972, 570694,
+-4517769, -391916, -1925219, 3668976, 5787469, -3366181, -1704565, -1318555, -1012002, -2474975,
+-10022306, -10944114, -754304, -3221762, 520228, -2468533, -538482, 5906117, -980863, 3116536,
+-1395864, -3023657, -3914863, 606127, -741956, -4913980, 5595269, 1521492, 456877, 2801929,
+2877628, 4406100, 3272228, -443455, -3317325, 3013993, 796716, -4705674, -1959042, -2204392,
+-1315334, 3925600, -1350767, -7105487, -2315524, -949188, 1486059, -2317672, -4497368, -10201,
+-420907, 5096516, 792421, -202937, 1925756, -282394, 7089381, -1386738, 641024, -1731409,
+-2835752, -161598, 3013457, 1212255, 786516, 2713883, -2698850, -4563403, -3220689, -795643,
+488553, -1185948, 15032, -3459059, -865436, 1579474, -1217086, 3299609, 1598802, -332323,
+392990, -3360812, -3063922, 5215164, 792421, 2091649, 808528, 1320166, 7189776, -595390,
+3768297, 1891396, 4955856, 5641977, -1183264, 235149, 3763465, 3315178, 2524904, 6452652,
+1487669, -2485176, 404801, 5585605, 2172717, 2465848, 5193689, 6535867, 4607426, -1899449,
+-4636417, 2952790, 2311229, -3092913, -4500052, -142808, -2622615, 804233, 1756642, -2080912,
+-2262374, 1843078, 1796370, 3595425, -2734284, -6004901, -2808909, -2890513, -3735548, -1797444,
+-4274030, 1980517, -5842230, 1910724, 395137, 743029, -2674154, 4888210, 4067871, -4533875,
+4688494, 1145683, -881005, 887985, -3689914, -1859184, 3099893, 397821, 1155883, 45634,
+3694746, 731755, 4600447, -3322157, -606127, -1309965, 1549410, 1749662, -1511292, 690416,
+-2992519, -66035, 1236414, -173946, 18912352, 621697, 16696148, 1844152, 10409927, -1866163,
+-2321430, 3444564, -8557722, 9338333, -5486284, 6423661, 3941706, -2763275, 2146947, 246961,
+-110059, -1010391, 2029372, 3995393, 3909494, 7657927, 1313723, 2785823, -709743, 8926553,
+-10100689, 744640, -1166084, 2834679, 3681324, -4570919, 1526324, 2819109, 763430, 3895535,
+1407139, -3395709, 1458141, 8072391, -1822677, 2847563, -1679332, -625992, -763967, -4859756,
+7945153, 428960, 416612, 6805913, -1268089, 1053878, 7355669, -10778757, 2736968, 374199,
+3024731, 9787694, 2378338, 2827162, 2830384, -381715, -2913062, -1114544, 1918777, 1474784,
+4626217, -1139777, 3772592, 2545305, -1634235, 1487669, -3445638, -1471563, 307090, -7634305,
+-9627706, -3671123, -1547262, -3463354, 7492571, 3349538, -6206765, 6867653, -1082869, -4856535,
+1337346, 3032784, -2896419, -4440460, -4218732, -8516383, -4490389, 3776350, -5604933, -8658117,
+2292976, 3587372, 529892, -3155190, 6357626, 856846, 5858336, -335007, -1582159, 3490735,
+5528160, -8108899, -4084514, 2248416, -2037962, 2019172, -5545340, -369904, 1208496, 1941862,
+-4780836, -8264054, -2572686, 2414309, -1652489, -1047972, 241055, 2661806, -1088237, 1465658,
+-3066607, 4771172, -6585796, -4742181, -1946157, -4654134, -1693291, -1296543, 1516660, -3443490,
+2224256, 5139465, -796180, 1144609, 1046361, 2410014, 4716411, -2032056, -1359357, -1067299,
+-2502355, 5199595, -2542084, -9267466, -6197638, -3659849, -2429878, -8141111, -19667192, -1571958,
+1149441, 462246, -6496675, -2528125, -7337415, -1568737, -8611946, -9385040, -7715909, -1453310,
+-5153961, -10590316, -6957847, 2580739, 3247532, -2676838, 6443525, 3976603, -2531346, 8448738,
+1637993, 1040993, 1217086, -10686416, -479426, 2241436, 4107599, -3069291, -3133716, 7021198,
+12795244, -9163850, 3426847, -2372433, -512712, -7995619, -750009, 385473, -4308926, -4978404,
+-3957276, -4145180, -2448131, 3299072, 9468792, -3856344, 3592740, 6931541, 5836324, -1364726,
+738198, -1462973, -1729261, -8068096, -4185446, 5563594, -3002182, 1729261, -2843805, 3163780,
+1482301, -256624, -147103, -3333432, -3142306, 1496259, -984621, 2521683, -10028749, -10164577,
+-860067, -11668352, -2790655, -14130442, -3668976, -9882183, -1632088, 2376191, 2229088, 11630235,
+-7373385, 2947421, 2636573, -5622112, -3120294, 9458592, 581968, -2170032, 763967, -6951405,
+6367826, -9032853, -3493419, 4711043, 2288681, -510027, 1281511, -1393717, 2777770, -3566970,
+-7464653, 978716, 3133716, 3322694, -6020471, 2083596, 6111739, -6092948, -8657580, 7174206,
+-5989332, 4864051, -4381404, 2943663, -435939, -5415417, -7978439, -4233764, 1859184, 215822,
+2652679, -3507915, -4153234, -9330280, 4935991, -6537477, -3416647, 4365835, 8581345, -609349,
+-1960653, -12381854, -10286447, -2872796, -3711926, 5359046, -1424319, -7067369, -1212255, 869731,
+-4139275, -597000, -8869644, 6397354, 2645700, 7859790, 9822590, 7447474, 3477313, 21099564,
+9785546, 13745506, -4491999, -286689, -554051, -20345260, 734439, 9083319, -4435091, -1399623,
+329639, 13147432, -2590402, 7679939, -1948305, 7348152, 3525095, 9024800, 12044162, 1733019,
+7875897, -2470143, 6736120, -879931, 12865575, 7194607, -743566, 7673496, 5601174, -2197950,
+5301601, 3566970, 4479651, -3977677, -3815005, -10793790, -1291175, 7651484, 818191, 952409,
+-3196530, -4078072, -3936875, -3615289, 18066780, -12165495, 4020090, 5631776, 2428804, 1527935,
+-8072391, -9715216, -3352759, -1556389, -1390496, -16776142, -9253507, -8700530, -654983, -546535,
+3809099, -700080, 3169149, 5752572, 9322763, 1837709, -4215511, 3524021, -8364449, 1905355,
+-6843494, 2195802, 1767916, 31304942, 4084514, 4133906, 4268661, -2610266, -12266427, 8135742,
+9927817, -5767068, 4755066, 3571802, -7036230, -1657321, 8347806, 3810173, -12919798, 2935610,
+-2927557, -7538205, 672699, 3499862, 1941325, -636192, 614717, 5419175, -958851, 2856153,
+-9783399, 3823595, -174483, 3760244, 3358128, -2378875, 8574902, -10804527, -3500935, -10659572,
+9921911, 3846143, 15576236, 6840273, 979789, 2782602, -10771778, -431644, 4509179, 3455301,
+4672925, 495532, 3173981, -3400004, 4473746, 10214506, 15214922, 5871221, -5277441, -3740380,
+-297963, -2961917, 6410776, 6975027, -3765076, 4097936, 9057012, 2335925, -9674951, -21486648,
+-9403294, 4306242, 10558640, -3991098, 3966402, -707596, -864362, 66572, 10806675, 1787243,
+-18634252, 4922033, 10263361, -11453067, 7744363, 10473815, -26931056, 5050882, 2161442, 5143760,
+-9436043, 14775761, -21042656, -1184337, -601832, -2800319, -1280974, -7414724, -7342784, -2379412,
+8872866, -214212, 1205275, -5232881, 6543383, -1910724, -1724429, 3133179, 10736344, -7524246,
+8027294, -2357937, 5274757, 1042066, 7612830, 9002788, -1312649, 1531693, -12068321, -7711614,
+-1664837, -6132677, -10884521, 89121, -3287261, -8985608, 12527883, -11992622, -2502355, -6351183,
+-4718022, 6506339, -7789997, 3612604, -1996086, 6630356, -3118683, 7339026, -10492068, -4843113,
+2658048, 9056475, -17616346, -8792335, 1888175, -1828046, -2134599, 5514201, -8524973, -21263846,
+5388574, -19191524, 9774809, -8809515, 1392643, -21087216, -4997732, -14766098, -5933498, 17934172,
+1037235, -15351824, 14415521, -6952479, 1188095, -16019691, 2648921, 5867462, -13607530, -3743601,
+-12145094, -467078, 997506, -4563403, -3230352, 11659226, 2052458, -8607114, 2239289, -17968532,
+10711648, 16226386, -5222680, 6482717, 12014097, -1395864, -2252174, 921807, 1601486, 6377490,
+1343788, 1016297, 3799972, -10411001, -549219, -11906723, -11349451, -5400922, 4991826, 6114423,
+-202937, -14303315, 2830384, 2751464, 6831146, 13634911, -14676977, 20834886, -17841832, -162672,
+-3437048, -4146791, -8505109, -17820894, -22332220, -9929964, -2323041, 4475893, -1415192, -443455,
+3666292, -1670205, 16304233, 5865315, -15799037, -4371740, 308701, 8370892, -10414759, -1517197,
+-21489868, 1786170, 19727322, -17648020, -9777493, -18418968, 22106196, 10111427, -11531987, 15123117,
+14194330, 21296596, -8154533, -6723772, 14729590, -1767379, -3483755, 5770289, 6282464, 3171297,
+2754148, -20245938, -2681670, 539555, -310311, 1624571, -2828773, 9270150, 16551730, 2212982,
+673236, 200790, 319975, 16191490, 3671660, -606127, -3929895, 4524748, 2966749, -1950452,
+1292248, -8438537, -2384244, 14176613, -14064944, -6048388, -12205760, 15797963, -14505178, 7563438,
+-6257231, 5058398, -3578245, 4205847, -11775727, 3177739, 16397648, -10529112, 326418, -28935732,
+-1883880, -9771587, 224412, -26896696, -1807644, -597000, -9114457, -5114233, 21935472, -23302346,
+3417720, -5553393, -9658308, 7628399, -8830453, -17580912, -13911399, 3482682, 344671, 6261526,
+-9908490, -5090610, 18262738, 7361037, -3149822, 4818417, -10111964, -9243306, -8800388, 19224274,
+-17068200, -19683836, 9258339, -18228914, 6537477, 1615445, 4683125, -7618198, -2554432, -9437654,
+-4881231, -7036230, 3403225, 10497974, 6104223, -14353781, 17490180, 3264175, 5855651, 2769180,
+8240432, -676994, 7919383, 3257196, -4048007, 6562710, 1597728, 8335458, 4511863, -10311143,
+4401268, -1986422, 3021510, -876173, -4615479, -2041720, -8444443, 9300215, 7971460, 10296647,
+-1799591, 17489106, 18541910, 9412958, 2297271, 10529112, 19272592, 11732777, 21061446, 15891379,
+15701864, -14510010, -17118666, 6098854, -3477850, -1764158, 1357747, -5473936, 7170448, 8665097,
+3462818, 19817516, -3596498, -6310381, -8470749, -3075197, 2215130, 1550483, -34396244, -6533719,
+15755551, 10117869, -33344516, -25227028, -7363722, -628676, 11521787, -4920959, -366683, -27112518,
+4242354, -14314052, 10498511, -2192581, 13776108, -11627550, -2349884, -13736916, 2854006, 10849087,
+-4760971, 3051574, -7211250, 430570, -17573932, -5156645, -309238, 1194001, 14018773, 17402670,
+1201517, -16117939, -10691784, -5222680, 2268280, -4247186, 5743982, -18424336, -5083094, -2469069,
+-4133369, -10268193, -1761474, -4640176, 13246216, 18417894, 12994424, 4727149, 8217883, 7928510,
+-8080444, 30808338, 19192062, -23611046, -20052128, 22868016, -16868484, -9585830, 4184372, 3150359,
+-16353625, 17346836, 1805497, -50656456, 14527727, 33483028, -21709986, 23633594, 30532386, -8340827,
+-2452963, 17949742, -18044232, -9745281, 6781217, -6375342, -11219528, -9796284, -7401840, 11761231,
+6059662, 7932268, -2581812, -10199474, -9482751, 10843719, -8990440, -162672, 2180770, -14762339,
+9095130, 8689793, -7115687, -4505958, -12902082, 810675, -8363375, 10808822, -17790292, 1716913,
+5432597, -483184, -9032316, -17035450, -4984310, -7221451, -2787434, -13150116, 17263084, -17651778,
+1992865, -6255083, 3441343, -25183004, 24994562, 5195837, 1374390, -10305237, 4696010, 4418448,
+-168041, 2499134, -6031208, -19983946, -4865661, -8643622, -14294725, -17234094, -7689602, -4383551,
+-18634790, -6636262, -2354179, 11710228, 3857954, -15679852, -15191299, 8125005, -5239860, -19963544,
+-10209674, 4497905, 14458471, 15700790, 14620606, 25664040, -6738267, -18254684, -18526878, -1668595,
+10219875, 19745038, 8841727, 4060892, 11322608, 33716032, -29795262, 27917, -12349642, -14450417,
+-9965935, 15950972, -8993125, -7999377, 6961605, 20322174, 11467563, -13562970, 8690329, -14258755,
+10536629, 1648731, -2379412, -6337224, -12019466, -8106214, 1312649, 3183108, -18591840, 12538083,
+1315871, -483184, -7379828, -6473053, 12260521, -16281684, -1322850, 20221780, 21881784, -18802294,
+-1786170, -2723546, -13397614, -15503758, 17971754, 5484137, 11311870, -2273648, 1096290, -238908,
+11324218, -3159485, 363998, -13007308, 20414516, 18620294, -25360172, -29344290, -6673306, 1804960,
+-10234907, 2479807, -7587060, 3809099, -15624554, 18008262, -20026358, -16141024, -6440304, 4329327,
+14057428, -5850819, 20380156, 3443490, -6736656, -5643587, -4641249, -11595338, 13194676, 9904195,
+-43181064, 64617784, -43963284, -12861816, 13261248, 34318936, 30277908, -11954505, -10216653, 622233,
+3034931, 17106318, 8168491, -25545928, 8709657, -6496138, -7101192, 1149978, 11395085, -1364726,
+-16740172, -17278116, 9993315, 5733245, 12770548, -7361574, 15469398, 2056753, 17900350, -2879239,
+-3995930, 10923176, 140123, -14093398, 3882651, 13868986, 1010928, -18289044, 10195179, 18835580,
+-16690243, 6140730, -18025440, 6710350, -23204634, -17420924, 29312614, 24554328, 13894219, 32315870,
+-4534412, 38796976, 16743393, 14306536, 23379654, -37172940, 32459752, 9342628, 14373645, 13000329,
+5467494, -18688476, 5029407, 32578400, 40527312, -1543504, -41133976, 20206210, 3466039, 7901129,
+804770, -235149, -7175280, -34134252, 8753143, -7212861, 9308268, 44449152, -2460480, -50982872,
+-27057220, -29655138, -12506945, 1142461, 16259672, -43317968, -10745471, 7834557, -21448530, -22837952,
+-22451942, -22794466, -4667019, 27036820, 12573517, -9467182, 11705933, 6051072, -12838194, 14393509,
+-15993384, -2443300, 5437966, 9837086, -30923764, 16009491, -15666967, 9521406, -6804302, -23216982,
+5800890, 8419210, 2816962, 4889284, -10949482, -33337000, 450972, 7996156, 6511708, 1263794,
+3308199, -13304735, -1149441, -299574, 30114700, -3880503, -52171504, -22215718, -6584185, -41612864,
+8635569, -12108050, -11907260, -19623706, -10247792, -29753922, -31080530, -35974648, -4762045, 39521216,
+4218732, -23758148, 10198937, 1046898, -3768834, -13137231, -20332912, 8722542, 15205795, 12686260,
+6364068, -6675990, -30057792, -19474456, -17070348, 27817966, -2426657, 22140020, 30735860, -26014080,
+-30455076, -34019364, 9812927, 10791642, -44329432, -27077622, 2101850, 521302, 14936286, -53655952,
+6943352, 11490648, 38022808, -43089796, 6410239, 6252399, -3833258, 22690312, -11947525, 40290552,
+-682900, 2964601, 13986024, 15276125, -13772886, -33693480, 21055004, 22749368, 7246684, 28955058,
+7681549, -4342212, -9010841, -25575456, 40830644, -17884244, 38918308, 13913547, -341450, 10280004,
+-13003550, 19252728, 22247394, -14261439, 17383880, 6853694, -35457640, 27414240, 31702764, -4224637,
+-16188805, 3058554, 2729452, 554051, -2936147, 52184928, 3358665, -31544388, -12433393, 5086315,
+-39020852, -59122372, 13951128, 71422088, 22967874, -6615860, -38202660, -13657459, 2507724, 46917148,
+-19808390, -26489748, -41519448, -71721656, 20309290, 35698156, -47370804, -3361886, 25371446, -10449655,
+-21774948, 19520626, -21064130, -10325638, 692564, -14503568, 23715198, -7598871, -12127914, -3634616,
+12070469, 45105208, -7873749, -19906636, -23848880, 8791261, 20274930, 13217225, -21233782, -2727841,
+23170274, 1064078, -19381576, 6436546, -17431662, 41440528, -19698330, -44324064, 14275398, -7312719,
+20139102, -29738890, -30521112, 29541322, -3536906, -38244000, -21489868, -36624260, 46103252, 22604950,
+11565810, -50107236, 7668664, 20163798, -36115308, 1541356, -26265336, -19677392, 18361522, -17723720,
+21273510, -14958834, -31417148, -8040179, -8517457, -5927055, 9535901, 1902671, -19716048, 56809532,
+-7808788, 23540716, 26539676, 13052942, -7781407, 1943473, -12261595, 27130772, 11224360, -19014358,
+14564234, 51314660, 11997454, 21539260, -716723, 4281009, 9538049, -20320564, 9631464, 17121888,
+1397475, -23195508, -10539313, -17520782, -5461051, -23241142, -20046760, 1448478, -15731391, 23667418,
+9279277, -7008313, -16793322, -9852655, -4705137, 12193949, -2916283, -22036940, -15978889, 3149285,
+5690832, 10732050, 5744519, -5806259, 6754910, -19370302, -54101556, 1099512, 68300720, -3182571,
+-47596292, -9145059, 33116882, 7676181, 6379100, -2124935, -20039780, -27633282, -14660334, 4780836,
+-510564, -25664040, 10107132, -50371376, -7734163, 44238164, 14408542, 57252452, -6727530, -24390582,
+-6061810, -6474663, 16508244, 2051921, 300648, -33328410, -15448997, -16744467, -1722819, 35463008,
+-4805532, -10821170, 11962558, 12930536, 1439351, -22488986, -33509334, -23281944, -78017008, -120094800,
+26946624, 105764640, 31889058, 259835856, 243976160, 107178224, 251017216, 104265160, -49821084, -4488778,
+-80820544, -213458256, -119199304, -114530136, -220008096, -161750608, -96014528, -141422528, -97886600, 12578349,
+-15737297, -51120848, 42545408, 39113192, -9622874, 41739564, 128942968, 48041892, 15103252, 121942712,
+107189496, 27801860, 129026720, 160507760, -14295262, 88605712, 160070752, 50862612, 53750440, 161863360,
+89143656, -32202592, 120459872, 78304232, -58421220, 33590404, 88803816, -72533944, -111872624, -44733696,
+-211876640, -339239072, -330434912, -365603712, -568404032, -497740544, -417713472, -533232544, -463905312, -313789760,
+-366493312, -292750336, -115445496, -72475424, 52023328, 138012336, 261211856, 364685664, 398688384, 468327008,
+507501920, 453715520, 408530848, 400821376, 171415904, -13131326, -2270427, 0, 0, 0,
+0, 0, 0, },
{
-5747740,
--9216463, -690953, -9408663, -5207648, -1798518, -1622424, -255014, -2236604, -419833, 2037425,
--2442763, 2855617, 351114, -3832185, 2399276, -658741, 2564632, 381178, -3635690, 2573759,
-1425392, 2024003, -1553704, -2319819, -1667521, -1928977, 1527398, -316217, 425202, -2103460,
-1513976, -2552284, -3497714, 191126, -4347581, -3234110, -1664837, 4675609, 579821, 1805497,
--5655398, 832150, 969052, -4862977, 1753420, 386010, -5078799, -925565, -374199, -3939022,
-4518306, -2825015, -1625108, 2663417, -187368, -4773856, -477278, -3299609, 3722126, 3245922,
--4551592, -2374043, -3041374, -2056753, -1284732, 1970853, 1727651, 1132261, 3125663, -27917,
-1241246, -458488, -1240172, -1636383, -746787, 11343009, -5726802, 626528, -3499325, -70867,
-4510253, 2416456, 2749853, -2404108, 3452080, -3615289, 3898220, 2225867, 4738423, 2259690,
--1166084, -5435281, 5792837, 4310000, 1294933, 864362, 323196, -2226404, -2965138, 3262565,
-1662689, 2179696, 2739652, -2895882, -488553, 2943663, 3062312, -298500, -2745021, -4582730,
--253940, 1007707, -3126199, 1189169, 475668, -4129611, -2586107, -209380, 1864016, 158377,
--2371359, 4072166, 432718, -1240709, -3251290, -557809, 26307, -5457293, 2231773, 3561065,
--2266669, 4530117, 3300146, -505732, 2661806, 1846836, 5531918, 1912871, 730681, -870268,
-1837709, -4708358, 216359, 2291365, -2757906, 2595234, 2710661, 3393561, 1677185, 4340065,
--10730976, -7254200, -1204202, -4619774, -4230543, 2151242, -6180995, -5668283, 1516124, -2491618,
--2520072, 2558190, -2063195, -3978750, -612033, -175020, -1329292, -1748589, -1279900, -4588636,
--465467, -3273839, -2636573, 0, 4045322, -810138, 5921686, -3045669, 3483219, 4334696,
--4913980, 1770063, -1387274, 1036161, -3540664, 1775969, 1967632, 3363496, -1870458, -3856344,
--1589138, -2066953, 1058173, 1648194, -5032091, -500901, -3531000, -2554432, 670552, -3845070,
--6556268, -1088774, 5949604, 1462436, 1908039, 424665, 1151051, 929860, 1993402, 2527052,
-6648610, 591095, -3417183, -3928821, -1209570, -1846836, -897111, -8027294, 1250372, -541166,
-2100776, -1059783, 167504, -1922535, -1605781, 7887708, 678068, 573915, 8603893, 9923522,
-7634841, 5673115, 8027831, 3263102, 3492345, -721018, 2287070, 8458401, 910533, 2591476,
--3127810, -2073932, 6484864, -4321811, -7903277, 2419140, -6598681, 5735392, 1365263, 6880538,
--2160906, -398895, -1666447, 2286533, 2768643, -57982, -6711960, -1348083, 5804112, -3796751,
-2636036, 1578937, -1267015, -1605781, 6454262, 4898947, 11234024, 4546223, 973884, 2753074,
--898722, 759672, 3577171, 2189360, 9595494, -3990025, -2662343, 770410, 2521683, -1385664,
-4492536, -4013110, 936303, -128849, -3096135, 1150514, 1051193, -4129074, -5729487, -3404299,
-4734128, 2472828, 150861, -103616, 3637301, 581431, 1334661, 6423661, 3200825, -978179,
--685047, 5966247, -4286378, 1465658, 18814642, -460635, 9277129, -1794223, -1315334, 9682467,
--9501005, -3473555, -641024, 4702989, 3474629, -2212445, 1971390, 749472, -8611946, 2037962,
-4750771, 3966939, -9672803, -3608846, 1184337, -7181722, -1846836, 345745, 389231, 755914,
--1006633, 4255776, -3088618, 3335042, 7377680, 7092065, -2069101, -4419522, -699006, 8000987,
--426276, -686658, 101469, 556735, -4243965, 468688, 3494493, 245887, 845572, 3033858,
--2180233, 1938104, 1308354, -1213328, 5794448, 249108, 4599910, 575526, -1555315, 1661079,
-3055332, 2290828, -167504, -4908611, -4169340, -5850819, -2492155, -609349, -78383, -1074816,
-3945464, 3029026, -2783676, -5825587, -26307, 2280091, 3061775, -3772592, -1029182, -5024575,
--13927505, -3649112, -4704063, 887985, 2343979, -2385318, -2765959, -26305064, 557272, 8441221,
--6103149, -9845676, 7407208, -11136850, -1643362, -4978941, -5810017, -3630858, -3627637, 408559,
-4523675, -800475, 2550674, -2821257, 3432753, -2552284, -3918621, 1792075, -1422708, -6243272,
--7956964, 3892851, 462246, 3853660, 1244467, 8554501, 1285806, 3025805, -3984119, -6965900,
--1954747, -3398393, 7151121, -3172907, 284005, 1966558, -3399467, 10013716, 6641093, 306016,
--7750806, -9787694, -3274376, 3520263, -8883603, -3221, -4262755, -8315594, 908922, -13133473,
--2851322, -1125281, -4872641, 9349070, -444529, -1044214, -36507, 6071473, 7313793, 2652142,
--7108171, -1764695, -1723356, 4567698, 1920924, 2982318, 5953362, -15421617, -21805012, 2320893,
--4704063, 4544613, -5847061, -11409581, 633508, 9730248, 2431488, 5819144, 5324686, 3452080,
-2829847, -3939559, 3082176, 6340446, -10166724, -5321465, -3129421, -2747169, 4243428, -1250909,
-1714229, 6599218, 6470905, -2850248, -5550709, 1018444, -2930242, -2913599, -5357972, -4377646,
--8365523, 1739999, -2863670, -442382, 8220031, -1929514, 1926293, 1688459, -5151814, 4325569,
-5093295, 6121402, -5242008, 9880035, -1203128, -7893076, -5862094, -8603893, 8142721, -3291556,
--8218420, 2240362, -823560, -6570226, 7083475, 8359080, -2481954, -7798587, 6027450, 1252520,
-4874251, -1143535, 12459163, 6410239, -6242198, -4023311, -2559801, -3367791, 4683125, 4606353,
-7752416, -20522964, -208843, -3575560, 1174137, 144955, 7613367, 5911486, 7888245, -1137630,
-10830834, -4960687, 7292855, 9360881, 1473174, 9327058, 1752884, 2543158, -2799782, -778463,
--4088809, 7418483, -690416, -674847, 9984188, 6329171, -156766, 2902324, -1130650, -201863,
-6386617, -3665755, -6856916, 128312, -1195612, 3510062, -18905910, 11320997, 11773579, 4889284,
-2037962, 439160, -6241661, -12298639, 7864622, -4891968, -5995238, -3673808, 6995428, -5082020,
-4158602, 4705674, -4811974, -2829847, -11145440, 5020280, -7424388, 4215511, 210990, 3774740,
-6001143, 10463614, 3904662, -4751845, -12057047, -1982664, 6324340, 11485279, 7840463, -1738925,
--3164317, -7397008, -13321915, -1351304, 7131257, 3710315, 806917, 1886028, 8020852, 26946624,
-14877230, -1440425, 2698313, 2267743, 6082748, 10550050, -1388885, 1943473, 18202608, 1679332,
--709743, 10739566, 7688529, -7735773, 4550518, 885300, 7325604, 4791573, -12554726, 9336185,
--5815923, -1081258, 1068910, 7227356, 1317481, 1748589, 5656472, 6241661, -6299107, 6403260,
-19925964, -3859565, 9006010, 8995272, -5097053, 6962679, 1796370, -5196911, -5376226, 3151969,
--4846871, -12866111, -1824287, -1027571, 1038845, -16393353, -4157528, 4403952, -10373420, -7300908,
--16924318, 4944581, 7272454, -11919608, -4447976, -6075231, 11573863, -343061, -7354595, -5479305,
--8182450, 3142306, 9474161, -7887171, 3239479, -3822521, 4149475, 10537165, 4006131, 8075613,
-8251169, 10420128, 743566, 27285928, 8026220, 582505, -1024887, -4586488, 751619, 4649839,
--2803540, -6999186, -8953933, 147640, 7371775, -9050033, 4734665, 4993437, -1826435, 18203146,
-7201587, -5267241, -2652679, -2008971, 7299834, -3384434, -5719286, -7505992, 4861903, -15669114,
-1069984, -4873178, -4966056, 4181151, 1593433, -6162205, -2885144, -5956046, 8026757, -3142842,
--11410654, -2123325, 775242, 201327, -6420976, -10426033, 1401770, -2533494, -848256, 2573222,
--1602023, 8361765, 2327336, 4667556, -5386426, 12474733, 4262755, -7436736, 9167608, 15939161,
--4453344, -5001490, 8926553, 7022272, 3597572, 3870303, -10112500, -3775813, -11018202, 2207613,
-10590316, 3575024, -13157095, -3968013, 3944928, -14443438, -20863340, -3514894, -440234, 3440806,
--21502754, 10066330, 28809566, -11890080, 20256676, -4633733, -4226248, -6381248, -10285373, 7651484,
-426276, 5206574, 5355288, -18916646, 396748, 8712878, -7489886, -4099546, -11712376, 20963736,
--12935368, 10322417, 9966472, -12552042, -4962835, -4402879, 9018894, -10040023, -3870839, 10161893,
--1552094, -2747705, -4727686, 12409771, 2436320, -2019708, -4850629, 324807, -9182640, 10244571,
--930934, 4719096, 25842282, 17157858, -14395120, -10386842, 4341675, -1301375, 11031623, -5843303,
--8261370, -3027415, -15649250, -6142877, -1501628, -12258374, -6612102, 27367532, 6963216, 166967,
--865973, -220117, 8543227, 9715753, -1488743, 9617506, 1344325, -5077188, 1657321, -14384919,
--408559, -13249437, -6523519, 8505109, 12790413, -17325362, 8056285, -22578644, 3608846, 21577916,
--5881421, -5059472, 4310537, -6213207, -5638219, 6393059, -1041530, -774705, -483184, -13972065,
-24255828, -25540560, -2688113, -113817, 8745627, 5863704, 177704, -9346386, -7215008, 3658239,
-19008988, -983011, -8492224, -5165772, -13601625, -306553, -7979513, -5694053, -2780455, 4919348,
--410706, 1330903, -9107478, 2568391, 2713883, 6621229, 5027796, 6692096, -12278238, 869731,
--2319282, 9037148, 2343979, 17500382, 3910568, -2926483, 1842004, -8076686, 363998, 8263517,
-9865540, -13210783, -10489921, 67646, 15541876, -22122302, 6870874, 28108950, 15648176, -5890011,
-3484292, -13069585, 7249905, 14750528, -21388938, 6660421, -9503689, -1428077, -28963112, 2006824,
--10795400, 14024142, 3285650, -12258910, -5893232, -17709224, 27798102, 7722888, 14687178, -16546362,
--17951352, -3612604, 5104032, -5326297, -2181844, 8972187, 2779381, 2611340, 8385924, -20489678,
--1992328, 4832, 5352066, -14340896, 2044941, 2119566, -9607842, -5685463, -13319230, -10424959,
-79994, 4040491, -10778220, 519154, -4828080, -10005663, 3871913, -333397, 7831336, -21758304,
--22327924, 4321274, -1882269, 8075076, 18797462, 1749125, -11820287, 16428787, -8396124, -16139413,
--12206834, -5564130, 1263794, -17121350, -6582575, 16075526, 22200686, 9035001, 6083285, 4265440,
--2790118, 13838921, 7802345, -17018272, -9352291, -306553, 1331977, 15195057, 9647570, 2103460,
--2819646, -2330020, -8122857, 9937481, 7602092, 17539036, 3555696, 4641249, 1617592, 31219580,
-3040300, 6793028, 18395344, 1382980, 22909892, -660351, -10797548, -11467026, -21861384, 4124242,
--9314173, -445603, 1701881, 7967701, 11225971, 19381040, 19779398, -2873333, 17617956, -1097364,
--1607392, 6933151, 14880988, 6749541, 4159139, -23483270, -12184822, -19029926, 9826348, 19650012,
-3825742, -8041253, 13609678, 19741280, -2493766, 3362423, -4376035, 16681116, 13994614, 12082817,
--6684043, -11914239, -1673964, -2787434, -27063662, 5200132, 4122632, 2874944, -6539625, -3191161,
--30067456, -10354629, -27186606, -4387846, -20159502, -10288594, 20702816, 5794448, 21853868, 1888175,
--16430934, -7916162, -17031692, -33855080, 5907728, -20742008, -5000953, 20726976, 9800578, 8421894,
-3208341, -3423089, 292595, 4376572, -12701829, 12210592, -22698902, -25687126, 1953673, -3718368,
-10753524, 21897354, 18920404, 20548734, -11850889, -20419886, 15728170, -9213242, 16262357, 5030481,
--26252450, 6750615, 4836670, -29345900, 15820512, -13258564, -13778792, 8266739, 8935679, 1647657,
-10613401, 1067836, 484794, -6636798, -4048544, 6793565, -4154844, -9779641, 617938, -18644990,
-6804839, -23769422, -14775761, 1347009, 9507984, -2812667, -10094247, 4282620, 7458211, 6212134,
-321586, 20107964, -44900124, -9472550, -12414603, -14111115, 19244674, -14828375, -2336999, -35196720,
--10320270, -3287798, 1636919, 25181394, -6082748, 4268124, -14842870, 13572097, -18425946, -10195715,
-9033390, -40210556, 5699959, 24351390, 28671054, 24461450, 13616120, 35325568, 17606682, 2690260,
--8541079, -4640712, -12998719, -23419382, -3071975, 9302899, -38356744, -38178500, -180389, 6684043,
-26735634, -8483097, 12261058, 11643119, 5786932, 6516539, -42193760, 33496986, 17915382, 41439992,
-14949171, -1400159, -15387794, -9290551, -9665824, -14460081, 10531260, 8249559, -15184320, -16722455,
-9026411, 12803834, 21419002, 6512781, -13350369, -19385334, 4216584, 3917010, 1393180, 2958159,
-38144140, 13491566, 7344394, 13168907, 13871671, 16164646, 467615, -23492934, 17155174, 53871236,
--5265630, -14050449, -32151052, -6156299, 43091944, 5856725, 18006650, 6839736, -58945204, 13187697,
-10998338, 2279554, 6505802, -3029563, 1386738, 13303124, -31351650, -11914776, 27707370, 11508365,
-4447976, -22388590, 18024904, 8209830, -20634096, -21386252, -14567455, 23979340, 46189688, 44575856,
-47611860, 50037980, 3842922, -17688822, 19793356, 38005628, -77828568, -28494960, 6878390, -46692200,
--41366976, -19015430, -24838870, 2113124, -18103824, 48990544, -4579509, -18471580, -6436546, -38956428,
--9852118, -31610960, -12099460, 4520453, -38966092, -7521025, 31439160, -26625040, -6698539, 7958038,
-561030, 11901891, 3407520, -898185, 12183748, 3285650, -18985366, -4686346, 18284750, -9891310,
--23809152, -9116605, -29020020, -15741592, -51390356, 3978750, -34746284, 16013786, 7150584, -14212047,
--45185740, 3039226, -4051765, 55432996, 23411866, -265751, 31679678, 11975443, 1235340, 23597088,
--28518582, -15517717, 3251290, 20577726, -23341000, -16467978, 83362096, -9560597, 43829604, -34971772,
-1277216, -25567404, 19338628, -10339060, 29473140, 41802916, 2893734, -32982128, 28332826, -34684008,
--30291868, 62000000, -35809828, 23271744, 19589882, -31148176, 17022566, 10460393, 6463389, -4800163,
-23849954, 13451301, -31171262, 22849226, 25164750, 5981816, 4079145, 16481400, -586800, -29518236,
-39723616, -21552146, 8942659, -15660525, -3921305, 6335614, -7424388, 33867428, 7403450, -2835215,
--7641284, -170725, 6600828, -31451508, 10790568, -15452219, -11192148, -6163815, 393526, -14358076,
--7156490, 5900212, 34972844, 2435783, -6436546, -19681150, 10009421, 8352638, 2015950, 29091960,
--5339718, -156229, 32979444, 12765717, 3315715, -27565636, -14328548, 22978076, 12938052, -25112136,
-3088082, -61221536, -29738890, 62624380, -10781442, 36352068, 44729936, 17221208, 11048266, 25086904,
--3125126, -15158550, 18344342, 13691819, 6467147, 40351216, 27632746, 37771016, -13725105, -55264956,
-6891275, -4113505, 17012366, 9008694, -22792318, 13087302, 8916352, -19648938, -27826556, -13704704,
--44405132, -38689604, 25351044, -3815542, -45897096, -10285373, 1071594, 16894790, 10159745, -23347442,
--31725850, 5557688, 35956392, -16079821, 11693585, -23746874, 5841693, -27142046, 15830713, 23346906,
--18395882, -27998892, -24991878, -628676, 8190503, -10396505, -12698071, -8164196, -43256228, -30989262,
-13557601, -25528212, -10120554, 13057237, -27905476, -34934192, 9902584, 22910966, -7259569, -42554536,
-15531139, 21058224, 52649856, 3499862, 9892920, 14631880, -30129196, 12896713, -13387413, -46270756,
--13643500, 34288336, 938450, -21187610, -69268696, 43906912, 43431784, -10176925, 33298344, 53128208,
--5667210, 8993125, 28766080, -13380434, -11127723, 21986474, -4459250, 12113418, -25556130, -83468928,
-23110682, -10064719, 62672164, -21772800, -12862890, -25306484, -70189968, 32065152, -40542880, -24548422,
-2115272, -420907, 55632712, -39471288, -26502096, 35786204, 22418656, 18564460, -5808944, 17763448,
--11669426, -18217640, -15564425, 42158864, 36264020, 54885924, -16357920, -20622822, 2143189, -3637837,
-21391084, -33064268, 8340290, -34713000, 19865834, 34238944, 13031468, -27940372, 20505784, -24568286,
-57176752, 28655484, 9324374, 7812009, -7154342, -43404940, 26225070, -58955404, 13932874, 11492259,
-30565672, 23501524, -49664856, 15994995, -30664992, -18592914, 15612743, -4475893, 20795694, 12898324,
--45214732, 19816980, 44682692, 57576184, -14993194, 17411798, -21946746, 40405440, -56023552, -2826625,
--11329050, 17613124, 19671488, -62097176, 43461848, -2959769, -4911295, 18555870, 9877351, 21511344,
-2005213, 12113418, -26068840, 24883430, 2792266, -20236812, 12593918, -6139119, -3580929, 24434068,
-9080635, -30081414, 15439871, -12531104, 24437828, -16945256, 3704409, -7048578, 9558450, -6536940,
-2553358, -11315091, 28468654, 543850, -2588792, 12895639, 7183870, -12699681, -6921340, 10792179,
-7023346, 13269838, -14885820, 7662222, -3275986, -28708098, -6511708, 12167642, 8017094, 9034464,
-3645354, -25208236, 543850, 2351495, -1274532, 10872173, -10117332, 10640781, 363998, 7201587,
--11721503, -1954210, -7125888, 38582764, -16983374, 11799886, 7131793, -1684164, 6163815, -7814693,
-5270999, 12191802, -15927349, -6799470, 864899, -633508, -2373506, -3015604, -22502408, 8468065,
--8503498, 51747376, -3650185, -16884054, -25515864, -11738682, -14293651, 18701362, 10946798, -13785234,
-1203665, 1495186, 6201933, 721555, 13074954, 4367982, 10303627, -3649649, -329102, -3215320,
-4842576, 10977400, -10296110, -212601, -5087389, 210990, 13571560, -7846369, 1330366, -3635690,
-5344013, 2592013, -7441031, -2925947, 7969312, -2624762, 12993350, 9077413, -13599477, 4171487,
-2848100, 6939057, 2973191, -13018583, 8640400, -2592550, 8393440, 6565932, -15378667, 4009352,
--23085, 3254512, -1786170, -6922414, 10836739, -2877091, 4864051, 71941, -3381750, 4872104,
--6631967, -1090922, 8989367, -6421513, -7638063, 15039365, -9940702, 14049375, -1620813, -11545946,
-23323284, -21560736, 18578954, -6538551, -11405823, 12179990, -11252277, -25596394, -43371116, 54744192,
-157598464, 24665460, 15432354, -115311280, -142109200, -45834816, -27808840, 95988224, 146946944, 75275208,
-22033720, -49680960, -106072272, -97159680, -81017040, 6127308, 121730648, 101404712, 58438400, 19487878,
--51940652, -67829880, -53519588, -52158084, -18191334, 24225764, 33848636, 69494184, 50077172, 11759084,
--16885664, -10355166, -56188908, -27720792, -28387586, -38909184, 22931904, 42764988, 24982752, 62437552,
-16689706, -15399068, -24188718, -42293616, -33091112, -5680631, -10286984, 12308839, 25930328, 22628036,
-16449188, 10697153, -5866926, -23577222, -16412681, -19754702, 5929203, 21559126, 7081328, 4702989,
--9989557, -20806970, -4127464, -974421, -771484, 15134928, 13889387, 15029164, 5647345, -6951942,
--18339510, -26736172, -26924076, -17573932, 15055471, 7797513, 2724083, 0, 0, 0,
-0, 0, 0, },
+-9216463, -690953, -9408663, -5207648, -1798518, -1622424, -255014, -2236604, -419833, 2037425,
+-2442763, 2855617, 351114, -3832185, 2399276, -658741, 2564632, 381178, -3635690, 2573759,
+1425392, 2024003, -1553704, -2319819, -1667521, -1928977, 1527398, -316217, 425202, -2103460,
+1513976, -2552284, -3497714, 191126, -4347581, -3234110, -1664837, 4675609, 579821, 1805497,
+-5655398, 832150, 969052, -4862977, 1753420, 386010, -5078799, -925565, -374199, -3939022,
+4518306, -2825015, -1625108, 2663417, -187368, -4773856, -477278, -3299609, 3722126, 3245922,
+-4551592, -2374043, -3041374, -2056753, -1284732, 1970853, 1727651, 1132261, 3125663, -27917,
+1241246, -458488, -1240172, -1636383, -746787, 11343009, -5726802, 626528, -3499325, -70867,
+4510253, 2416456, 2749853, -2404108, 3452080, -3615289, 3898220, 2225867, 4738423, 2259690,
+-1166084, -5435281, 5792837, 4310000, 1294933, 864362, 323196, -2226404, -2965138, 3262565,
+1662689, 2179696, 2739652, -2895882, -488553, 2943663, 3062312, -298500, -2745021, -4582730,
+-253940, 1007707, -3126199, 1189169, 475668, -4129611, -2586107, -209380, 1864016, 158377,
+-2371359, 4072166, 432718, -1240709, -3251290, -557809, 26307, -5457293, 2231773, 3561065,
+-2266669, 4530117, 3300146, -505732, 2661806, 1846836, 5531918, 1912871, 730681, -870268,
+1837709, -4708358, 216359, 2291365, -2757906, 2595234, 2710661, 3393561, 1677185, 4340065,
+-10730976, -7254200, -1204202, -4619774, -4230543, 2151242, -6180995, -5668283, 1516124, -2491618,
+-2520072, 2558190, -2063195, -3978750, -612033, -175020, -1329292, -1748589, -1279900, -4588636,
+-465467, -3273839, -2636573, 0, 4045322, -810138, 5921686, -3045669, 3483219, 4334696,
+-4913980, 1770063, -1387274, 1036161, -3540664, 1775969, 1967632, 3363496, -1870458, -3856344,
+-1589138, -2066953, 1058173, 1648194, -5032091, -500901, -3531000, -2554432, 670552, -3845070,
+-6556268, -1088774, 5949604, 1462436, 1908039, 424665, 1151051, 929860, 1993402, 2527052,
+6648610, 591095, -3417183, -3928821, -1209570, -1846836, -897111, -8027294, 1250372, -541166,
+2100776, -1059783, 167504, -1922535, -1605781, 7887708, 678068, 573915, 8603893, 9923522,
+7634841, 5673115, 8027831, 3263102, 3492345, -721018, 2287070, 8458401, 910533, 2591476,
+-3127810, -2073932, 6484864, -4321811, -7903277, 2419140, -6598681, 5735392, 1365263, 6880538,
+-2160906, -398895, -1666447, 2286533, 2768643, -57982, -6711960, -1348083, 5804112, -3796751,
+2636036, 1578937, -1267015, -1605781, 6454262, 4898947, 11234024, 4546223, 973884, 2753074,
+-898722, 759672, 3577171, 2189360, 9595494, -3990025, -2662343, 770410, 2521683, -1385664,
+4492536, -4013110, 936303, -128849, -3096135, 1150514, 1051193, -4129074, -5729487, -3404299,
+4734128, 2472828, 150861, -103616, 3637301, 581431, 1334661, 6423661, 3200825, -978179,
+-685047, 5966247, -4286378, 1465658, 18814642, -460635, 9277129, -1794223, -1315334, 9682467,
+-9501005, -3473555, -641024, 4702989, 3474629, -2212445, 1971390, 749472, -8611946, 2037962,
+4750771, 3966939, -9672803, -3608846, 1184337, -7181722, -1846836, 345745, 389231, 755914,
+-1006633, 4255776, -3088618, 3335042, 7377680, 7092065, -2069101, -4419522, -699006, 8000987,
+-426276, -686658, 101469, 556735, -4243965, 468688, 3494493, 245887, 845572, 3033858,
+-2180233, 1938104, 1308354, -1213328, 5794448, 249108, 4599910, 575526, -1555315, 1661079,
+3055332, 2290828, -167504, -4908611, -4169340, -5850819, -2492155, -609349, -78383, -1074816,
+3945464, 3029026, -2783676, -5825587, -26307, 2280091, 3061775, -3772592, -1029182, -5024575,
+-13927505, -3649112, -4704063, 887985, 2343979, -2385318, -2765959, -26305064, 557272, 8441221,
+-6103149, -9845676, 7407208, -11136850, -1643362, -4978941, -5810017, -3630858, -3627637, 408559,
+4523675, -800475, 2550674, -2821257, 3432753, -2552284, -3918621, 1792075, -1422708, -6243272,
+-7956964, 3892851, 462246, 3853660, 1244467, 8554501, 1285806, 3025805, -3984119, -6965900,
+-1954747, -3398393, 7151121, -3172907, 284005, 1966558, -3399467, 10013716, 6641093, 306016,
+-7750806, -9787694, -3274376, 3520263, -8883603, -3221, -4262755, -8315594, 908922, -13133473,
+-2851322, -1125281, -4872641, 9349070, -444529, -1044214, -36507, 6071473, 7313793, 2652142,
+-7108171, -1764695, -1723356, 4567698, 1920924, 2982318, 5953362, -15421617, -21805012, 2320893,
+-4704063, 4544613, -5847061, -11409581, 633508, 9730248, 2431488, 5819144, 5324686, 3452080,
+2829847, -3939559, 3082176, 6340446, -10166724, -5321465, -3129421, -2747169, 4243428, -1250909,
+1714229, 6599218, 6470905, -2850248, -5550709, 1018444, -2930242, -2913599, -5357972, -4377646,
+-8365523, 1739999, -2863670, -442382, 8220031, -1929514, 1926293, 1688459, -5151814, 4325569,
+5093295, 6121402, -5242008, 9880035, -1203128, -7893076, -5862094, -8603893, 8142721, -3291556,
+-8218420, 2240362, -823560, -6570226, 7083475, 8359080, -2481954, -7798587, 6027450, 1252520,
+4874251, -1143535, 12459163, 6410239, -6242198, -4023311, -2559801, -3367791, 4683125, 4606353,
+7752416, -20522964, -208843, -3575560, 1174137, 144955, 7613367, 5911486, 7888245, -1137630,
+10830834, -4960687, 7292855, 9360881, 1473174, 9327058, 1752884, 2543158, -2799782, -778463,
+-4088809, 7418483, -690416, -674847, 9984188, 6329171, -156766, 2902324, -1130650, -201863,
+6386617, -3665755, -6856916, 128312, -1195612, 3510062, -18905910, 11320997, 11773579, 4889284,
+2037962, 439160, -6241661, -12298639, 7864622, -4891968, -5995238, -3673808, 6995428, -5082020,
+4158602, 4705674, -4811974, -2829847, -11145440, 5020280, -7424388, 4215511, 210990, 3774740,
+6001143, 10463614, 3904662, -4751845, -12057047, -1982664, 6324340, 11485279, 7840463, -1738925,
+-3164317, -7397008, -13321915, -1351304, 7131257, 3710315, 806917, 1886028, 8020852, 26946624,
+14877230, -1440425, 2698313, 2267743, 6082748, 10550050, -1388885, 1943473, 18202608, 1679332,
+-709743, 10739566, 7688529, -7735773, 4550518, 885300, 7325604, 4791573, -12554726, 9336185,
+-5815923, -1081258, 1068910, 7227356, 1317481, 1748589, 5656472, 6241661, -6299107, 6403260,
+19925964, -3859565, 9006010, 8995272, -5097053, 6962679, 1796370, -5196911, -5376226, 3151969,
+-4846871, -12866111, -1824287, -1027571, 1038845, -16393353, -4157528, 4403952, -10373420, -7300908,
+-16924318, 4944581, 7272454, -11919608, -4447976, -6075231, 11573863, -343061, -7354595, -5479305,
+-8182450, 3142306, 9474161, -7887171, 3239479, -3822521, 4149475, 10537165, 4006131, 8075613,
+8251169, 10420128, 743566, 27285928, 8026220, 582505, -1024887, -4586488, 751619, 4649839,
+-2803540, -6999186, -8953933, 147640, 7371775, -9050033, 4734665, 4993437, -1826435, 18203146,
+7201587, -5267241, -2652679, -2008971, 7299834, -3384434, -5719286, -7505992, 4861903, -15669114,
+1069984, -4873178, -4966056, 4181151, 1593433, -6162205, -2885144, -5956046, 8026757, -3142842,
+-11410654, -2123325, 775242, 201327, -6420976, -10426033, 1401770, -2533494, -848256, 2573222,
+-1602023, 8361765, 2327336, 4667556, -5386426, 12474733, 4262755, -7436736, 9167608, 15939161,
+-4453344, -5001490, 8926553, 7022272, 3597572, 3870303, -10112500, -3775813, -11018202, 2207613,
+10590316, 3575024, -13157095, -3968013, 3944928, -14443438, -20863340, -3514894, -440234, 3440806,
+-21502754, 10066330, 28809566, -11890080, 20256676, -4633733, -4226248, -6381248, -10285373, 7651484,
+426276, 5206574, 5355288, -18916646, 396748, 8712878, -7489886, -4099546, -11712376, 20963736,
+-12935368, 10322417, 9966472, -12552042, -4962835, -4402879, 9018894, -10040023, -3870839, 10161893,
+-1552094, -2747705, -4727686, 12409771, 2436320, -2019708, -4850629, 324807, -9182640, 10244571,
+-930934, 4719096, 25842282, 17157858, -14395120, -10386842, 4341675, -1301375, 11031623, -5843303,
+-8261370, -3027415, -15649250, -6142877, -1501628, -12258374, -6612102, 27367532, 6963216, 166967,
+-865973, -220117, 8543227, 9715753, -1488743, 9617506, 1344325, -5077188, 1657321, -14384919,
+-408559, -13249437, -6523519, 8505109, 12790413, -17325362, 8056285, -22578644, 3608846, 21577916,
+-5881421, -5059472, 4310537, -6213207, -5638219, 6393059, -1041530, -774705, -483184, -13972065,
+24255828, -25540560, -2688113, -113817, 8745627, 5863704, 177704, -9346386, -7215008, 3658239,
+19008988, -983011, -8492224, -5165772, -13601625, -306553, -7979513, -5694053, -2780455, 4919348,
+-410706, 1330903, -9107478, 2568391, 2713883, 6621229, 5027796, 6692096, -12278238, 869731,
+-2319282, 9037148, 2343979, 17500382, 3910568, -2926483, 1842004, -8076686, 363998, 8263517,
+9865540, -13210783, -10489921, 67646, 15541876, -22122302, 6870874, 28108950, 15648176, -5890011,
+3484292, -13069585, 7249905, 14750528, -21388938, 6660421, -9503689, -1428077, -28963112, 2006824,
+-10795400, 14024142, 3285650, -12258910, -5893232, -17709224, 27798102, 7722888, 14687178, -16546362,
+-17951352, -3612604, 5104032, -5326297, -2181844, 8972187, 2779381, 2611340, 8385924, -20489678,
+-1992328, 4832, 5352066, -14340896, 2044941, 2119566, -9607842, -5685463, -13319230, -10424959,
+79994, 4040491, -10778220, 519154, -4828080, -10005663, 3871913, -333397, 7831336, -21758304,
+-22327924, 4321274, -1882269, 8075076, 18797462, 1749125, -11820287, 16428787, -8396124, -16139413,
+-12206834, -5564130, 1263794, -17121350, -6582575, 16075526, 22200686, 9035001, 6083285, 4265440,
+-2790118, 13838921, 7802345, -17018272, -9352291, -306553, 1331977, 15195057, 9647570, 2103460,
+-2819646, -2330020, -8122857, 9937481, 7602092, 17539036, 3555696, 4641249, 1617592, 31219580,
+3040300, 6793028, 18395344, 1382980, 22909892, -660351, -10797548, -11467026, -21861384, 4124242,
+-9314173, -445603, 1701881, 7967701, 11225971, 19381040, 19779398, -2873333, 17617956, -1097364,
+-1607392, 6933151, 14880988, 6749541, 4159139, -23483270, -12184822, -19029926, 9826348, 19650012,
+3825742, -8041253, 13609678, 19741280, -2493766, 3362423, -4376035, 16681116, 13994614, 12082817,
+-6684043, -11914239, -1673964, -2787434, -27063662, 5200132, 4122632, 2874944, -6539625, -3191161,
+-30067456, -10354629, -27186606, -4387846, -20159502, -10288594, 20702816, 5794448, 21853868, 1888175,
+-16430934, -7916162, -17031692, -33855080, 5907728, -20742008, -5000953, 20726976, 9800578, 8421894,
+3208341, -3423089, 292595, 4376572, -12701829, 12210592, -22698902, -25687126, 1953673, -3718368,
+10753524, 21897354, 18920404, 20548734, -11850889, -20419886, 15728170, -9213242, 16262357, 5030481,
+-26252450, 6750615, 4836670, -29345900, 15820512, -13258564, -13778792, 8266739, 8935679, 1647657,
+10613401, 1067836, 484794, -6636798, -4048544, 6793565, -4154844, -9779641, 617938, -18644990,
+6804839, -23769422, -14775761, 1347009, 9507984, -2812667, -10094247, 4282620, 7458211, 6212134,
+321586, 20107964, -44900124, -9472550, -12414603, -14111115, 19244674, -14828375, -2336999, -35196720,
+-10320270, -3287798, 1636919, 25181394, -6082748, 4268124, -14842870, 13572097, -18425946, -10195715,
+9033390, -40210556, 5699959, 24351390, 28671054, 24461450, 13616120, 35325568, 17606682, 2690260,
+-8541079, -4640712, -12998719, -23419382, -3071975, 9302899, -38356744, -38178500, -180389, 6684043,
+26735634, -8483097, 12261058, 11643119, 5786932, 6516539, -42193760, 33496986, 17915382, 41439992,
+14949171, -1400159, -15387794, -9290551, -9665824, -14460081, 10531260, 8249559, -15184320, -16722455,
+9026411, 12803834, 21419002, 6512781, -13350369, -19385334, 4216584, 3917010, 1393180, 2958159,
+38144140, 13491566, 7344394, 13168907, 13871671, 16164646, 467615, -23492934, 17155174, 53871236,
+-5265630, -14050449, -32151052, -6156299, 43091944, 5856725, 18006650, 6839736, -58945204, 13187697,
+10998338, 2279554, 6505802, -3029563, 1386738, 13303124, -31351650, -11914776, 27707370, 11508365,
+4447976, -22388590, 18024904, 8209830, -20634096, -21386252, -14567455, 23979340, 46189688, 44575856,
+47611860, 50037980, 3842922, -17688822, 19793356, 38005628, -77828568, -28494960, 6878390, -46692200,
+-41366976, -19015430, -24838870, 2113124, -18103824, 48990544, -4579509, -18471580, -6436546, -38956428,
+-9852118, -31610960, -12099460, 4520453, -38966092, -7521025, 31439160, -26625040, -6698539, 7958038,
+561030, 11901891, 3407520, -898185, 12183748, 3285650, -18985366, -4686346, 18284750, -9891310,
+-23809152, -9116605, -29020020, -15741592, -51390356, 3978750, -34746284, 16013786, 7150584, -14212047,
+-45185740, 3039226, -4051765, 55432996, 23411866, -265751, 31679678, 11975443, 1235340, 23597088,
+-28518582, -15517717, 3251290, 20577726, -23341000, -16467978, 83362096, -9560597, 43829604, -34971772,
+1277216, -25567404, 19338628, -10339060, 29473140, 41802916, 2893734, -32982128, 28332826, -34684008,
+-30291868, 62000000, -35809828, 23271744, 19589882, -31148176, 17022566, 10460393, 6463389, -4800163,
+23849954, 13451301, -31171262, 22849226, 25164750, 5981816, 4079145, 16481400, -586800, -29518236,
+39723616, -21552146, 8942659, -15660525, -3921305, 6335614, -7424388, 33867428, 7403450, -2835215,
+-7641284, -170725, 6600828, -31451508, 10790568, -15452219, -11192148, -6163815, 393526, -14358076,
+-7156490, 5900212, 34972844, 2435783, -6436546, -19681150, 10009421, 8352638, 2015950, 29091960,
+-5339718, -156229, 32979444, 12765717, 3315715, -27565636, -14328548, 22978076, 12938052, -25112136,
+3088082, -61221536, -29738890, 62624380, -10781442, 36352068, 44729936, 17221208, 11048266, 25086904,
+-3125126, -15158550, 18344342, 13691819, 6467147, 40351216, 27632746, 37771016, -13725105, -55264956,
+6891275, -4113505, 17012366, 9008694, -22792318, 13087302, 8916352, -19648938, -27826556, -13704704,
+-44405132, -38689604, 25351044, -3815542, -45897096, -10285373, 1071594, 16894790, 10159745, -23347442,
+-31725850, 5557688, 35956392, -16079821, 11693585, -23746874, 5841693, -27142046, 15830713, 23346906,
+-18395882, -27998892, -24991878, -628676, 8190503, -10396505, -12698071, -8164196, -43256228, -30989262,
+13557601, -25528212, -10120554, 13057237, -27905476, -34934192, 9902584, 22910966, -7259569, -42554536,
+15531139, 21058224, 52649856, 3499862, 9892920, 14631880, -30129196, 12896713, -13387413, -46270756,
+-13643500, 34288336, 938450, -21187610, -69268696, 43906912, 43431784, -10176925, 33298344, 53128208,
+-5667210, 8993125, 28766080, -13380434, -11127723, 21986474, -4459250, 12113418, -25556130, -83468928,
+23110682, -10064719, 62672164, -21772800, -12862890, -25306484, -70189968, 32065152, -40542880, -24548422,
+2115272, -420907, 55632712, -39471288, -26502096, 35786204, 22418656, 18564460, -5808944, 17763448,
+-11669426, -18217640, -15564425, 42158864, 36264020, 54885924, -16357920, -20622822, 2143189, -3637837,
+21391084, -33064268, 8340290, -34713000, 19865834, 34238944, 13031468, -27940372, 20505784, -24568286,
+57176752, 28655484, 9324374, 7812009, -7154342, -43404940, 26225070, -58955404, 13932874, 11492259,
+30565672, 23501524, -49664856, 15994995, -30664992, -18592914, 15612743, -4475893, 20795694, 12898324,
+-45214732, 19816980, 44682692, 57576184, -14993194, 17411798, -21946746, 40405440, -56023552, -2826625,
+-11329050, 17613124, 19671488, -62097176, 43461848, -2959769, -4911295, 18555870, 9877351, 21511344,
+2005213, 12113418, -26068840, 24883430, 2792266, -20236812, 12593918, -6139119, -3580929, 24434068,
+9080635, -30081414, 15439871, -12531104, 24437828, -16945256, 3704409, -7048578, 9558450, -6536940,
+2553358, -11315091, 28468654, 543850, -2588792, 12895639, 7183870, -12699681, -6921340, 10792179,
+7023346, 13269838, -14885820, 7662222, -3275986, -28708098, -6511708, 12167642, 8017094, 9034464,
+3645354, -25208236, 543850, 2351495, -1274532, 10872173, -10117332, 10640781, 363998, 7201587,
+-11721503, -1954210, -7125888, 38582764, -16983374, 11799886, 7131793, -1684164, 6163815, -7814693,
+5270999, 12191802, -15927349, -6799470, 864899, -633508, -2373506, -3015604, -22502408, 8468065,
+-8503498, 51747376, -3650185, -16884054, -25515864, -11738682, -14293651, 18701362, 10946798, -13785234,
+1203665, 1495186, 6201933, 721555, 13074954, 4367982, 10303627, -3649649, -329102, -3215320,
+4842576, 10977400, -10296110, -212601, -5087389, 210990, 13571560, -7846369, 1330366, -3635690,
+5344013, 2592013, -7441031, -2925947, 7969312, -2624762, 12993350, 9077413, -13599477, 4171487,
+2848100, 6939057, 2973191, -13018583, 8640400, -2592550, 8393440, 6565932, -15378667, 4009352,
+-23085, 3254512, -1786170, -6922414, 10836739, -2877091, 4864051, 71941, -3381750, 4872104,
+-6631967, -1090922, 8989367, -6421513, -7638063, 15039365, -9940702, 14049375, -1620813, -11545946,
+23323284, -21560736, 18578954, -6538551, -11405823, 12179990, -11252277, -25596394, -43371116, 54744192,
+157598464, 24665460, 15432354, -115311280, -142109200, -45834816, -27808840, 95988224, 146946944, 75275208,
+22033720, -49680960, -106072272, -97159680, -81017040, 6127308, 121730648, 101404712, 58438400, 19487878,
+-51940652, -67829880, -53519588, -52158084, -18191334, 24225764, 33848636, 69494184, 50077172, 11759084,
+-16885664, -10355166, -56188908, -27720792, -28387586, -38909184, 22931904, 42764988, 24982752, 62437552,
+16689706, -15399068, -24188718, -42293616, -33091112, -5680631, -10286984, 12308839, 25930328, 22628036,
+16449188, 10697153, -5866926, -23577222, -16412681, -19754702, 5929203, 21559126, 7081328, 4702989,
+-9989557, -20806970, -4127464, -974421, -771484, 15134928, 13889387, 15029164, 5647345, -6951942,
+-18339510, -26736172, -26924076, -17573932, 15055471, 7797513, 2724083, 0, 0, 0,
+0, 0, 0, },
},
{
{
-4990215,
--5331128, -6693170, -8210367, -6183143, -3707631, -540629, -3342558, 2524367, -566399, -781147,
-1321776, 2819109, -49392, -1805497, -1963874, -3180960, 483184, -2907693, 5175973, 5660230,
--2302103, 202937, 1690607, -1453310, 4345433, -1626719, -1887101, 208306, -387621, 3879429,
-3149822, 1447404, 773631, -3640522, -1656247, 4308389, -1210107, 1197759, -868657, -2005213,
--2586107, -2677375, 2293513, 4832, 453119, 921271, -1221381, 1274532, 2755759, -5076115,
--1198833, 2038499, 479963, 2065342, -276489, -4689031, -1698123, 2646774, -2906082, -284005,
-2043331, -1753420, -463320, -839666, -2774549, -756451, -2180233, -988916, 217970, -1457068,
-162135, 409633, -343061, -1260573, -881005, -2870112, -2877628, 10940355, 1263257, 2972654,
-1030792, 1570884, -2653753, -6599754, -1296006, 3500398, 1224066, -3266860, -484258, 2674154,
--716186, -3939022, 1158567, -4542465, -2845416, -146029, 1214939, -1299228, -1062468, 2803540,
--3954591, -107374, 455267, 1876364, 1457068, 1421097, 4736812, 2136746, -5996848, -1544041,
--2756832, 721555, -210990, -485331, -3804267, -4920422, 6402723, -3029026, 1514513, 1832877,
-1549946, -6190122, -3562139, -1666984, 598074, -545998, -274878, -635118, 946503, 2261837,
--3301756, -93416, 1620813, 1908576, 2283849, 777389, -68183, 2200634, 700617, -1127966,
--424665, 3619047, -2927557, -3100967, -1743220, -1352915, 3041911, 1705639, 580357, -1415192,
-2889976, -1620276, 1374926, -6254010, -3696356, 2615635, -6028524, -8622684, 1730872, 719944,
-1125818, 1244467, 1282048, -7395934, -1129040, 2148021, -4601521, 4933307, 4879083, 4124242,
--1562294, 401043, 1217623, 3177202, 830539, -67646, 739271, -2091649, 2113124, -716723,
--643171, -941135, 6216965, -3549254, 2254321, -2203855, -1808181, -1960653, 1781875, 3425237,
--3364570, -1651952, -1730335, 2557653, 2490007, 3832722, 2722473, 646393, 3461207, -2588255,
-2183991, 922881, 1098438, 6977711, 1873143, 3569655, -5274220, -1262184, 2602213, -2521146,
-2970507, -915902, -1688996, 1040456, 4456029, 3090766, 2301566, -609349, 1304060, 3460133,
--3139084, 5318780, -55298, 4507568, -900333, 3888556, 4782983, 3988414, -644245, -4189741,
--1416266, 10172093, 7781407, 5880347, 5397700, 5501316, 2719251, -718333, 159451, -2402497,
--348966, 7328825, -3018288, -3669513, 5532992, 3632469, 5334350, -3770981, 1828582, -1581085,
-1445793, 1994476, 3455301, 213138, -1977296, -1949915, -2630668, -1298154, -1498407, -5624260,
--321586, 4290136, -3191698, -854162, 2016487, -3012383, -2165201, 2324114, -1032403, -3833258,
--1568200, 1809792, -2706903, -4194036, -1432372, -1414118, 1712618, -3000035, -5332202, 163209,
--549219, -1045288, 2057289, -4940823, -1875290, -165356, -1539746, 2330557, -228707, 854162,
--7984344, -2823941, 5219996, -2158758, -4177393, 1088774, 1293859, 996969, -1247151, -7012608,
--2549600, 7161858, 989990, 2386391, 2033130, -1459752, 14823543, 9083319, 8623221, 141734,
-874563, 674847, -3514357, -7855495, -2949032, 5902896, -4463545, 2662343, 8011188, 626528,
--2528662, -1021665, -1615982, -869731, 3238942, 4578972, 164819, 1333051, 1875290, 2975339,
-175020, -4236985, 1290101, -6812892, -2057826, -884226, -1904281, -1259499, 825171, -1650878,
--3587908, -2803003, -1312649, 267362, -1563905, -4141959, 4853850, -1861868, 310848, -1296543,
--3260417, 3994857, 11125039, 2671470, -3955128, 6590628, 1440425, -2059974, 1933809, -1164473,
--4397510, 2684, -1905892, 1657857, -3842922, -6467684, 132070, 1074816, -7972533, 2350958,
-1471026, 4399657, 2320893, 5821292, -2144799, -3854733, -2498060, -1142998, 2591476, -934155,
--5288716, 3535832, -2581275, -7846905, -11822971, -3927748, -5806259, 8398809, -1751810, -1292785,
-3447785, -8207146, -5400922, 4538707, -3649649, -3832722, 10201, -577673, 1056562, 2893734,
--1119913, 1171989, -1873680, -1811939, 53687, -1639604, -3291556, -592706, -551903, 3361349,
-3888556, 2945811, -4129611, 1707786, 1658394, 5740224, -2855617, -542777, -1882269, -4954782,
-6780680, -6590091, -2880313, -2784213, 1743220, 5107253, -4874788, 5281736, -426276, 2658585,
-4901095, 356482, 3819837, -7163469, 1669132, -2990371, 532039, -7609072, 317291, -2962991,
--6205691, -5445482, 564251, 4136054, 427349, -4059818, 5544266, -2524904, 3282429, -1175210,
--6455873, 8435853, -5618354, -2114198, -3120831, 1180042, 3944391, 1073742, 3664681, 5302137,
-3307662, -8586176, -12099460, 1313186, 1090922, 637266, 7915088, -2582886, -8457864, 863825,
-1078037, -2289755, -402116, -7540889, -1388885, 905164, 1214939, 8374650, -1365800, 7504382,
--1709397, -1965484, 745177, -7492571, 3310883, -2834679, 4679367, -1276142, -1787780, -2791192,
--1215476, 252329, -5438503, 9648107, -6539625, -10877005, 3411278, 486405, -7457674, -2267743,
--14461692, 238908, -5025112, -86436, -5462125, -4610111, 1005022, 500364, 2745021, -4654134,
-3932580, -5253282, -9861245, 1171989, 3063386, -3104188, 3593814, -1782948, -5310727, -5002563,
--6499896, -3314104, -379031, 1023813, -1663763, 6211060, 434329, -2129230, 1010928, 185220,
-1839857, 722628, 1355599, -6437082, -4915590, 652835, -18813030, -4701916, 737661, -4776004,
--3509525, -5974300, 1549410, 2140504, 4282620, -3191698, -4001299, -4493073, 2279554, 5106716,
--2501819, -2106145, -1266479, -712428, 2422899, -10409927, -2559801, 6003828, 1962800, -2981244,
-1156957, 5344013, -476205, -1231582, 1877975, -213675, 12912819, -5409512, 3196530, 1172526,
--5367636, 1931125, 1264868, -6005438, 4409858, -8588861, -792421, 7935489, 1765232, -28454,
--1568737, -5778342, -5106179, 1606318, 3400004, -2014877, 1691680, 6678674, 3252901, -2394981,
-4030290, -5411659, -13339095, -1466731, -5816997, 4057670, -3699041, 9873056, 4845260, -68719,
--1484985, -11958263, 3979287, 5136781, -3694746, 7988639, -5750961, 2771328, -9670656, 5061082,
-3718368, -10644003, 5093831, 7533910, 18694918, 19143206, 4263292, 5426691, 377420, 2340220,
-478352, 1588064, -4949413, 1934346, -2990908, 3817152, 4344897, 9530532, 1775432, -2596845,
-6513318, 3968550, 7772817, -231928, 4883915, 2114198, -2201171, 1705639, 11418171, 1114007,
--4780836, -3340948, 8438000, 4431870, 4076461, 7006703, -5949604, 1534377, 9273908, -10064182,
--11051488, 2782602, 5874979, 8722005, -4236985, -8120173, 5730560, 1132798, -994822, 2596308,
--1611150, -1947768, -237834, 12576738, -5170067, 1602560, -3557307, -3357591, -1905892, 5838471,
--1280437, 14560476, 7261716, -9120363, 8471823, 373662, 3653407, 224949, 1362042, 332860,
--3583077, 3346853, -13391171, -5622649, 4829154, -15519864, 3212636, -13726179, 29292750, 6223408,
-3804804, -7894150, 12090870, -3364570, -1518271, -2457795, -220117, -7502771, -1587527, 4992363,
-10737, -5921150, 7665980, -1077500, -5407901, 2248952, 1758789, -7888781, -13445395, 6209986,
--6102612, -6358699, 515933, 999654, -4732517, 7565048, -7502234, 3223373, 5406290, -55835,
-8305393, 3990562, -12644384, -11149198, -6169721, 1896228, 1291711, -8555038, 2560338, 4652524,
-902480, 4262755, 3331284, -8886824, -5957120, 4104915, -12153684, -2844342, -1212255, -10373957,
--7167764, -2704219, 1401233, -4647155, -13575855, -4646081, -7703024, 16008417, 6099928, 245350,
-1031329, -2414309, 10649908, 15539192, 581968, 11039140, 5823439, 4511327, 668941, -3406983,
--2212982, -2537252, 5664525, -6381248, -1294396, -20643224, 13948443, 22348326, -16741246, -9987410,
-4641249, 4017405, -3359738, 7358890, 2048163, -6230924, -7579007, -130460, -2388002, -5421323,
-2866354, -2467996, 441308, 6228777, -8224863, 1803349, 1218697, -4881231, 821413, -7779797,
-1655173, 11587285, 6008123, -1076426, -3556770, -861141, -6418829, -6909529, 3610457, 5920076,
--1658394, -3121904, -2102387, 3591130, 6009196, 2899103, 10853382, -5604396, 4611185, -2633352,
-1298691, 6765111, -2118493, -1963337, -12370580, -1798518, -9494562, 5074504, 3692061, 12756590,
--10451803, -3824669, -10078141, -17046188, -2483028, 7349763, -11442330, 2813204, -828929, -8488466,
--9684078, -12695386, 17921288, 863288, 10992969, 7790534, 9598178, -3678640, -10384694, -8366597,
--9060234, 4129074, -15713675, 11249056, -1028108, -6443525, 10439992, 3149822, -9249212, -14282377,
--4889284, -307627, 790274, 338229, -4439386, 15505369, 7096360, 4478577, 4210142, 4689031,
--4239670, 926102, 3737695, 2057826, 14825690, 1241246, -20549272, 2384781, 9466108, -8108362,
--11237245, -2711735, -5774047, -3993783, 1705639, 14821395, 9706626, -1655173, 416075, -4634807,
--12331925, -4536023, -10024454, 7654706, 11417634, 76236, -5013301, -2179159, -1535988, 4837207,
-7662759, 7157026, -15563888, 3221762, 1566589, 1520418, 12524662, -6614787, 5782637, -5998459,
--3284576, 1364189, 8694624, 13719736, -912681, -8527121, 4134980, -15488189, 13964012, 7107634,
--85362, -6143951, 4994510, -3221762, -6020471, -6003828, -5024575, -5984500, -2711198, 8748848,
--14868103, -2923262, 7984344, -10258529, -2150168, -97711, -2493766, -12104292, 12066174, 6695854,
--10077067, -520765, -4884452, -2279554, -20946556, -1740536, -10106058, -21460878, 3827890, 4565014,
--11236171, -7384660, -13066364, -12647068, 10726681, 7727720, 11341935, 1566053, 24889872, 2361158,
-12519293, 19768660, -3164854, 6867116, 18157512, -11717208, 4891968, -6563247, 12160126, -2899640,
-24646670, 12939663, -9043591, -10778220, 945430, 7285875, 9638980, 4248260, -10380936, -732829,
-7394860, 20543366, -9103720, 14311905, -5821828, 9386651, -16135118, 7548942, -9356049, 7648263,
--306016, 3814468, -4061429, 13777718, 15031312, -27780386, 7509214, 8607651, 2663417, -2783139,
-1769527, -18369038, -1283122, 15064598, 15735686, -3291019, 16389058, -655519, -3513283, 1517197,
-9219684, -3233037, -4226248, -1663226, -11722039, 2210298, -3337190, 18771692, 12198244, -8464307,
--9251896, -17166448, -6320581, 13113609, 23053236, -10023917, 7233262, 1974074, 3194919, 12956843,
-9146133, -17462800, 3802120, -5887864, -3383361, -6855305, -3750580, -7234873, -16976932, 3647501,
-11940009, 5085778, 27511414, -5906654, -3297461, 19553912, -6383932, -293132, -3675955, 5786932,
--20110648, -12437688, 7814693, 16357920, 23233088, 27846420, -19035832, -9280887, -225486, 10040023,
-1611, 31634582, 9475235, 5724118, -22621056, 2873870, 1362042, 12765180, 16276852, -9750113,
--2208687, 6162741, -3174518, 1595044, 18918258, 7838316, -14560476, 6167036, 11390790, -6849399,
-22504554, 4734128, 30258582, 15921444, -9280351, -1566589, -29944512, 3337727, 6602976, 3110093,
-42059540, -4347581, -4301947, -17823578, -17395692, 7832410, -14410689, -7045894, -10004589, -4902169,
-9675488, -5851893, -13330505, -9457518, -71941, 11965242, -14941117, 4302484, 5253819, 2574833,
-14513768, -615254, 179852, -14606110, -23292682, -7951058, 9145059, -11053098, 1921998, -9074192,
--39904540, -19670950, 10570988, 2086817, -23339926, 4697621, 29906932, -154082, -1915555, -10816338,
-5654862, -12056510, -25094420, 1918240, 2465311, -7965017, 3394635, 10352482, -3456375, -6477885,
-5182952, 9746891, 14228153, -7573638, 10300405, 16372415, 4846334, 27459336, 1356673, -14793478,
-17296908, 2571612, 1270774, -2014340, -6084895, 13289703, -14703821, 736587, 15426449, -21738440,
--24663312, -27788976, 38511360, -21059298, 4329864, -516470, -13374528, 20635708, -24381456, 10802916,
-40894532, 26363584, 5010616, -33306934, -2899103, -21793200, -12375411, -19871740, -3000572, 6343667,
--4772246, 16581795, -8853001, 3168612, 6774237, 22928146, 1917166, 3556770, 25927106, -17452062,
--3827353, 12403866, -6579890, -13475460, -10606959, 14073534, -13375065, 6105296, 21769042, -6129455,
--43492448, -2234994, 8880919, -51203528, 29399588, 24267102, -21304112, 32231046, 19810536, 14526653,
-31207770, 973347, 14994805, 2215666, -139050, 12188043, -23341000, 21270288, 26136486, 22233972,
--25262460, -4156455, 28606092, -14914811, 21875342, 23204098, 50041736, 32680406, -1822677, 4406100,
--11030013, 7820062, 4486630, -28810640, -50102404, -9320616, 23591182, 30049202, -58759448, -53081500,
-22717156, -15126875, -17430052, -6858526, -21002926, 7280507, -33662344, 41531260, 14784351, -17390860,
--1275068, -17090212, -13708462, -13884556, -16670379, -10442676, -40805412, -36056788, -7847979, -8582418,
-994822, 2815351, 5546414, -3168075, 3626563, 5888400, 16137266, 18699214, -8985072, -10839961,
--13281649, -10889353, -24254754, 32241782, -13703093, 6852621, 22810572, 22033182, -11025718, -11611981,
--20941724, -13983877, -17729088, 23825794, 216896, 1141924, -34463892, -13483513, 43096240, -6862821,
-39734352, -11264625, -19283866, -12970801, -21620866, -21683142, -7192460, -3224447, -29637422, -1629940,
-7665443, -5207111, 4554276, -63539748, -29475286, -21729850, 24715926, -13489419, -2703145, 3544959,
-39042864, 4756677, -19370840, -32320166, 65497716, -22164178, -11268920, 36399312, -22439594, -37750616,
-35245040, -50286012, -12506408, 10074383, 10014790, -35475892, -11715597, 27843736, 1845762, -7131793,
--17346300, 21602074, -21082920, 188442, 19758460, -7322919, 18291192, -1148904, -6478422, 4317516,
-5663988, -11099806, 17504140, -9856413, -1778117, 3565360, 1435056, -129923, -1211718, 3608310,
-11764989, 15145128, 25052008, 10428717, -7861938, -3638911, -13017509, 12748000, -3159485, -22209812,
-6761889, -721555, -10423886, -29939680, 22273700, 859530, -11800960, 32353452, 3575024, -10775536,
--4310537, 48367776, -44113608, -49609556, 31527208, 46513960, -84973784, 207769, -30677878, -29133300,
--11729019, 31490164, -23427972, 41839960, -5440113, -548682, 55707336, -14940044, -44533444, 53691924,
-52155936, 39657044, -19358492, -22463752, -8167954, 7718593, 37164352, 30606474, -11577621, -1319629,
-10625212, 33271502, -11906723, 81604, 17904644, -22844932, -22641456, 18898392, -12640626, -6433861,
--11723650, 1111860, -18435610, 3481608, 10468983, -5029944, 7814693, -5822365, -6304475, -2768107,
--24917790, 5931350, -10799158, 17015050, 29844118, 4289062, 14295799, 15500537, 32749, 8645232,
-8574365, 35818416, -24414742, 18932216, 12882754, -13699335, 10187126, 14301704, 2420751, -11477763,
--30996242, -26583700, 8917963, 14746233, -12481712, -46430208, 40079024, -9423695, -23196582, -8042327,
-40334036, -14313515, 44208100, 5616744, 14169634, -36399312, 39229156, -11545409, 16826072, 2357937,
--59235652, -9335648, 10591389, -25224342, 36361728, 17562658, -53324704, -38901668, -26764626, 9829570,
--11012296, 12731894, -19931332, -36089536, -478352, -38360500, 10133975, -2701535, -7584376, 13888314,
-21056078, -13034152, 2569464, 24605330, -19122806, 33092186, -4778688, -34547108, 29953638, -13707925,
--6931541, 28020366, -35089344, 10112500, 219043, 13580150, -5789616, -11719355, -53255448, 13183939,
--22130892, -52119428, 64043868, -42191076, -18242874, -7477538, -14814416, -31525596, 18189724, 45540612,
--27566710, 13653164, -39901320, -21303038, -22723598, 21315386, 3625489, 59519120, -9957882, -3520800,
--17265232, -48843440, 209917, 25843356, -18359374, 21976274, 24906516, -19256486, 2390686, -16115254,
--73817600, -37196028, -22397718, -76101992, 50333796, 67680096, 31452046, -63795832, -52476984, -115839560,
-17899276, 144502560, 66134980, 30247844, -35484484, -116993296, -54767276, 39440148, -6903623, -9912248,
-2044404, 17182016, 1383516, -4549444, 14528801, 3580392, 5528697, 20447802, -12598750, -1218160,
-12202002, -4965519, -999654, 12487617, -11563126, -4136591, 4844723, 20234664, -13065827, -11097122,
-12964896, -1663226, 7729868, -22227530, 28734404, -7718056, 10380936, -7177964, 4603668, 13964012,
-7681012, -4690641, 14028974, -6104223, 14172318, -11517492, 275952, 12361990, -2064806, -6841346,
--26284662, 1546725, 22217866, 962610, 10998874, -15122580, -3286724, -9598715, -7569880, -4911832,
-16447577, -6970195, 10507101, -13489419, -13170517, -7681549, 4707284, 26385058, -9372692, 11033771,
-2292439, 961536, -12084427, 5459977, 16301012, -1505386, -11131481, 7494718, -6212670, 3379603,
--1795833, -8837432, 53140020, 10554882, -28481538, -20227686, -31456340, -9970767, 6053220, 16711718,
--5218922, -6746320, -5816460, -5598490, -5299453, 7642895, -3875134, -1060320, -1680406, -5527086,
--1318555, 8400956, 1206886, -2419140, -8382166, 9640054, -12483322, 7351374, -4451734, -12251394,
-62814, 5596880, 6299107, 4926865, -7228430, 1621350, -2305324, -3960497, 14784351, -13143137,
--2377801, -530965, -884226, 1386201, -2172180, -7723425, 6532109, -12242267, 11708081, -1714766,
--8159901, 2824478, -4185983, 10374494, -6025302, -3686693, 11266773, -10066866, 3556233, -4832912,
--1037772, 8571681, -6066105, -2475512, 7792682, -5331128, 2122788, 746787, -6152004, 15171435,
--13174275, -1194538, 6007049, -3443490, 9913858, -4461398, -1873680, 2568927, -25028386, -37926708,
-49657876, 154407296, 13345537, 13313862, -105246560, -133411888, -27664422, -28378996, 78596288, 133451616,
-68653976, 13033615, -48258788, -94241784, -66320736, -47653200, -2390149, 64908768, 95189360, 51213192,
-11841225, -33551748, -59223840, -33403034, -31887448, -30128122, 18946712, 38529076, 38234336, 38246148,
-9280887, -16930762, -6825777, -25614112, -39679592, -4668630, -11832098, -8294119, 35833448, 20410222,
-29925184, 17847200, -13601625, -32990718, -7904888, -21576842, -3331284, 14478335, 4483409, 7630010,
-16112570, -8629126, -11594264, -3093450, -6877317, 6053757, 10305774, 44023, 12725988, 7088844,
--13775571, -13667660, -21046950, -18468360, 454193, 20640540, 32067836, 14737643, 3565897, -8627516,
--22477712, -5037460, -25556130, -16676821, 10130754, 5693516, 8642548, -1285269, 0, 0,
-0, 0, 0, },
+-5331128, -6693170, -8210367, -6183143, -3707631, -540629, -3342558, 2524367, -566399, -781147,
+1321776, 2819109, -49392, -1805497, -1963874, -3180960, 483184, -2907693, 5175973, 5660230,
+-2302103, 202937, 1690607, -1453310, 4345433, -1626719, -1887101, 208306, -387621, 3879429,
+3149822, 1447404, 773631, -3640522, -1656247, 4308389, -1210107, 1197759, -868657, -2005213,
+-2586107, -2677375, 2293513, 4832, 453119, 921271, -1221381, 1274532, 2755759, -5076115,
+-1198833, 2038499, 479963, 2065342, -276489, -4689031, -1698123, 2646774, -2906082, -284005,
+2043331, -1753420, -463320, -839666, -2774549, -756451, -2180233, -988916, 217970, -1457068,
+162135, 409633, -343061, -1260573, -881005, -2870112, -2877628, 10940355, 1263257, 2972654,
+1030792, 1570884, -2653753, -6599754, -1296006, 3500398, 1224066, -3266860, -484258, 2674154,
+-716186, -3939022, 1158567, -4542465, -2845416, -146029, 1214939, -1299228, -1062468, 2803540,
+-3954591, -107374, 455267, 1876364, 1457068, 1421097, 4736812, 2136746, -5996848, -1544041,
+-2756832, 721555, -210990, -485331, -3804267, -4920422, 6402723, -3029026, 1514513, 1832877,
+1549946, -6190122, -3562139, -1666984, 598074, -545998, -274878, -635118, 946503, 2261837,
+-3301756, -93416, 1620813, 1908576, 2283849, 777389, -68183, 2200634, 700617, -1127966,
+-424665, 3619047, -2927557, -3100967, -1743220, -1352915, 3041911, 1705639, 580357, -1415192,
+2889976, -1620276, 1374926, -6254010, -3696356, 2615635, -6028524, -8622684, 1730872, 719944,
+1125818, 1244467, 1282048, -7395934, -1129040, 2148021, -4601521, 4933307, 4879083, 4124242,
+-1562294, 401043, 1217623, 3177202, 830539, -67646, 739271, -2091649, 2113124, -716723,
+-643171, -941135, 6216965, -3549254, 2254321, -2203855, -1808181, -1960653, 1781875, 3425237,
+-3364570, -1651952, -1730335, 2557653, 2490007, 3832722, 2722473, 646393, 3461207, -2588255,
+2183991, 922881, 1098438, 6977711, 1873143, 3569655, -5274220, -1262184, 2602213, -2521146,
+2970507, -915902, -1688996, 1040456, 4456029, 3090766, 2301566, -609349, 1304060, 3460133,
+-3139084, 5318780, -55298, 4507568, -900333, 3888556, 4782983, 3988414, -644245, -4189741,
+-1416266, 10172093, 7781407, 5880347, 5397700, 5501316, 2719251, -718333, 159451, -2402497,
+-348966, 7328825, -3018288, -3669513, 5532992, 3632469, 5334350, -3770981, 1828582, -1581085,
+1445793, 1994476, 3455301, 213138, -1977296, -1949915, -2630668, -1298154, -1498407, -5624260,
+-321586, 4290136, -3191698, -854162, 2016487, -3012383, -2165201, 2324114, -1032403, -3833258,
+-1568200, 1809792, -2706903, -4194036, -1432372, -1414118, 1712618, -3000035, -5332202, 163209,
+-549219, -1045288, 2057289, -4940823, -1875290, -165356, -1539746, 2330557, -228707, 854162,
+-7984344, -2823941, 5219996, -2158758, -4177393, 1088774, 1293859, 996969, -1247151, -7012608,
+-2549600, 7161858, 989990, 2386391, 2033130, -1459752, 14823543, 9083319, 8623221, 141734,
+874563, 674847, -3514357, -7855495, -2949032, 5902896, -4463545, 2662343, 8011188, 626528,
+-2528662, -1021665, -1615982, -869731, 3238942, 4578972, 164819, 1333051, 1875290, 2975339,
+175020, -4236985, 1290101, -6812892, -2057826, -884226, -1904281, -1259499, 825171, -1650878,
+-3587908, -2803003, -1312649, 267362, -1563905, -4141959, 4853850, -1861868, 310848, -1296543,
+-3260417, 3994857, 11125039, 2671470, -3955128, 6590628, 1440425, -2059974, 1933809, -1164473,
+-4397510, 2684, -1905892, 1657857, -3842922, -6467684, 132070, 1074816, -7972533, 2350958,
+1471026, 4399657, 2320893, 5821292, -2144799, -3854733, -2498060, -1142998, 2591476, -934155,
+-5288716, 3535832, -2581275, -7846905, -11822971, -3927748, -5806259, 8398809, -1751810, -1292785,
+3447785, -8207146, -5400922, 4538707, -3649649, -3832722, 10201, -577673, 1056562, 2893734,
+-1119913, 1171989, -1873680, -1811939, 53687, -1639604, -3291556, -592706, -551903, 3361349,
+3888556, 2945811, -4129611, 1707786, 1658394, 5740224, -2855617, -542777, -1882269, -4954782,
+6780680, -6590091, -2880313, -2784213, 1743220, 5107253, -4874788, 5281736, -426276, 2658585,
+4901095, 356482, 3819837, -7163469, 1669132, -2990371, 532039, -7609072, 317291, -2962991,
+-6205691, -5445482, 564251, 4136054, 427349, -4059818, 5544266, -2524904, 3282429, -1175210,
+-6455873, 8435853, -5618354, -2114198, -3120831, 1180042, 3944391, 1073742, 3664681, 5302137,
+3307662, -8586176, -12099460, 1313186, 1090922, 637266, 7915088, -2582886, -8457864, 863825,
+1078037, -2289755, -402116, -7540889, -1388885, 905164, 1214939, 8374650, -1365800, 7504382,
+-1709397, -1965484, 745177, -7492571, 3310883, -2834679, 4679367, -1276142, -1787780, -2791192,
+-1215476, 252329, -5438503, 9648107, -6539625, -10877005, 3411278, 486405, -7457674, -2267743,
+-14461692, 238908, -5025112, -86436, -5462125, -4610111, 1005022, 500364, 2745021, -4654134,
+3932580, -5253282, -9861245, 1171989, 3063386, -3104188, 3593814, -1782948, -5310727, -5002563,
+-6499896, -3314104, -379031, 1023813, -1663763, 6211060, 434329, -2129230, 1010928, 185220,
+1839857, 722628, 1355599, -6437082, -4915590, 652835, -18813030, -4701916, 737661, -4776004,
+-3509525, -5974300, 1549410, 2140504, 4282620, -3191698, -4001299, -4493073, 2279554, 5106716,
+-2501819, -2106145, -1266479, -712428, 2422899, -10409927, -2559801, 6003828, 1962800, -2981244,
+1156957, 5344013, -476205, -1231582, 1877975, -213675, 12912819, -5409512, 3196530, 1172526,
+-5367636, 1931125, 1264868, -6005438, 4409858, -8588861, -792421, 7935489, 1765232, -28454,
+-1568737, -5778342, -5106179, 1606318, 3400004, -2014877, 1691680, 6678674, 3252901, -2394981,
+4030290, -5411659, -13339095, -1466731, -5816997, 4057670, -3699041, 9873056, 4845260, -68719,
+-1484985, -11958263, 3979287, 5136781, -3694746, 7988639, -5750961, 2771328, -9670656, 5061082,
+3718368, -10644003, 5093831, 7533910, 18694918, 19143206, 4263292, 5426691, 377420, 2340220,
+478352, 1588064, -4949413, 1934346, -2990908, 3817152, 4344897, 9530532, 1775432, -2596845,
+6513318, 3968550, 7772817, -231928, 4883915, 2114198, -2201171, 1705639, 11418171, 1114007,
+-4780836, -3340948, 8438000, 4431870, 4076461, 7006703, -5949604, 1534377, 9273908, -10064182,
+-11051488, 2782602, 5874979, 8722005, -4236985, -8120173, 5730560, 1132798, -994822, 2596308,
+-1611150, -1947768, -237834, 12576738, -5170067, 1602560, -3557307, -3357591, -1905892, 5838471,
+-1280437, 14560476, 7261716, -9120363, 8471823, 373662, 3653407, 224949, 1362042, 332860,
+-3583077, 3346853, -13391171, -5622649, 4829154, -15519864, 3212636, -13726179, 29292750, 6223408,
+3804804, -7894150, 12090870, -3364570, -1518271, -2457795, -220117, -7502771, -1587527, 4992363,
+10737, -5921150, 7665980, -1077500, -5407901, 2248952, 1758789, -7888781, -13445395, 6209986,
+-6102612, -6358699, 515933, 999654, -4732517, 7565048, -7502234, 3223373, 5406290, -55835,
+8305393, 3990562, -12644384, -11149198, -6169721, 1896228, 1291711, -8555038, 2560338, 4652524,
+902480, 4262755, 3331284, -8886824, -5957120, 4104915, -12153684, -2844342, -1212255, -10373957,
+-7167764, -2704219, 1401233, -4647155, -13575855, -4646081, -7703024, 16008417, 6099928, 245350,
+1031329, -2414309, 10649908, 15539192, 581968, 11039140, 5823439, 4511327, 668941, -3406983,
+-2212982, -2537252, 5664525, -6381248, -1294396, -20643224, 13948443, 22348326, -16741246, -9987410,
+4641249, 4017405, -3359738, 7358890, 2048163, -6230924, -7579007, -130460, -2388002, -5421323,
+2866354, -2467996, 441308, 6228777, -8224863, 1803349, 1218697, -4881231, 821413, -7779797,
+1655173, 11587285, 6008123, -1076426, -3556770, -861141, -6418829, -6909529, 3610457, 5920076,
+-1658394, -3121904, -2102387, 3591130, 6009196, 2899103, 10853382, -5604396, 4611185, -2633352,
+1298691, 6765111, -2118493, -1963337, -12370580, -1798518, -9494562, 5074504, 3692061, 12756590,
+-10451803, -3824669, -10078141, -17046188, -2483028, 7349763, -11442330, 2813204, -828929, -8488466,
+-9684078, -12695386, 17921288, 863288, 10992969, 7790534, 9598178, -3678640, -10384694, -8366597,
+-9060234, 4129074, -15713675, 11249056, -1028108, -6443525, 10439992, 3149822, -9249212, -14282377,
+-4889284, -307627, 790274, 338229, -4439386, 15505369, 7096360, 4478577, 4210142, 4689031,
+-4239670, 926102, 3737695, 2057826, 14825690, 1241246, -20549272, 2384781, 9466108, -8108362,
+-11237245, -2711735, -5774047, -3993783, 1705639, 14821395, 9706626, -1655173, 416075, -4634807,
+-12331925, -4536023, -10024454, 7654706, 11417634, 76236, -5013301, -2179159, -1535988, 4837207,
+7662759, 7157026, -15563888, 3221762, 1566589, 1520418, 12524662, -6614787, 5782637, -5998459,
+-3284576, 1364189, 8694624, 13719736, -912681, -8527121, 4134980, -15488189, 13964012, 7107634,
+-85362, -6143951, 4994510, -3221762, -6020471, -6003828, -5024575, -5984500, -2711198, 8748848,
+-14868103, -2923262, 7984344, -10258529, -2150168, -97711, -2493766, -12104292, 12066174, 6695854,
+-10077067, -520765, -4884452, -2279554, -20946556, -1740536, -10106058, -21460878, 3827890, 4565014,
+-11236171, -7384660, -13066364, -12647068, 10726681, 7727720, 11341935, 1566053, 24889872, 2361158,
+12519293, 19768660, -3164854, 6867116, 18157512, -11717208, 4891968, -6563247, 12160126, -2899640,
+24646670, 12939663, -9043591, -10778220, 945430, 7285875, 9638980, 4248260, -10380936, -732829,
+7394860, 20543366, -9103720, 14311905, -5821828, 9386651, -16135118, 7548942, -9356049, 7648263,
+-306016, 3814468, -4061429, 13777718, 15031312, -27780386, 7509214, 8607651, 2663417, -2783139,
+1769527, -18369038, -1283122, 15064598, 15735686, -3291019, 16389058, -655519, -3513283, 1517197,
+9219684, -3233037, -4226248, -1663226, -11722039, 2210298, -3337190, 18771692, 12198244, -8464307,
+-9251896, -17166448, -6320581, 13113609, 23053236, -10023917, 7233262, 1974074, 3194919, 12956843,
+9146133, -17462800, 3802120, -5887864, -3383361, -6855305, -3750580, -7234873, -16976932, 3647501,
+11940009, 5085778, 27511414, -5906654, -3297461, 19553912, -6383932, -293132, -3675955, 5786932,
+-20110648, -12437688, 7814693, 16357920, 23233088, 27846420, -19035832, -9280887, -225486, 10040023,
+1611, 31634582, 9475235, 5724118, -22621056, 2873870, 1362042, 12765180, 16276852, -9750113,
+-2208687, 6162741, -3174518, 1595044, 18918258, 7838316, -14560476, 6167036, 11390790, -6849399,
+22504554, 4734128, 30258582, 15921444, -9280351, -1566589, -29944512, 3337727, 6602976, 3110093,
+42059540, -4347581, -4301947, -17823578, -17395692, 7832410, -14410689, -7045894, -10004589, -4902169,
+9675488, -5851893, -13330505, -9457518, -71941, 11965242, -14941117, 4302484, 5253819, 2574833,
+14513768, -615254, 179852, -14606110, -23292682, -7951058, 9145059, -11053098, 1921998, -9074192,
+-39904540, -19670950, 10570988, 2086817, -23339926, 4697621, 29906932, -154082, -1915555, -10816338,
+5654862, -12056510, -25094420, 1918240, 2465311, -7965017, 3394635, 10352482, -3456375, -6477885,
+5182952, 9746891, 14228153, -7573638, 10300405, 16372415, 4846334, 27459336, 1356673, -14793478,
+17296908, 2571612, 1270774, -2014340, -6084895, 13289703, -14703821, 736587, 15426449, -21738440,
+-24663312, -27788976, 38511360, -21059298, 4329864, -516470, -13374528, 20635708, -24381456, 10802916,
+40894532, 26363584, 5010616, -33306934, -2899103, -21793200, -12375411, -19871740, -3000572, 6343667,
+-4772246, 16581795, -8853001, 3168612, 6774237, 22928146, 1917166, 3556770, 25927106, -17452062,
+-3827353, 12403866, -6579890, -13475460, -10606959, 14073534, -13375065, 6105296, 21769042, -6129455,
+-43492448, -2234994, 8880919, -51203528, 29399588, 24267102, -21304112, 32231046, 19810536, 14526653,
+31207770, 973347, 14994805, 2215666, -139050, 12188043, -23341000, 21270288, 26136486, 22233972,
+-25262460, -4156455, 28606092, -14914811, 21875342, 23204098, 50041736, 32680406, -1822677, 4406100,
+-11030013, 7820062, 4486630, -28810640, -50102404, -9320616, 23591182, 30049202, -58759448, -53081500,
+22717156, -15126875, -17430052, -6858526, -21002926, 7280507, -33662344, 41531260, 14784351, -17390860,
+-1275068, -17090212, -13708462, -13884556, -16670379, -10442676, -40805412, -36056788, -7847979, -8582418,
+994822, 2815351, 5546414, -3168075, 3626563, 5888400, 16137266, 18699214, -8985072, -10839961,
+-13281649, -10889353, -24254754, 32241782, -13703093, 6852621, 22810572, 22033182, -11025718, -11611981,
+-20941724, -13983877, -17729088, 23825794, 216896, 1141924, -34463892, -13483513, 43096240, -6862821,
+39734352, -11264625, -19283866, -12970801, -21620866, -21683142, -7192460, -3224447, -29637422, -1629940,
+7665443, -5207111, 4554276, -63539748, -29475286, -21729850, 24715926, -13489419, -2703145, 3544959,
+39042864, 4756677, -19370840, -32320166, 65497716, -22164178, -11268920, 36399312, -22439594, -37750616,
+35245040, -50286012, -12506408, 10074383, 10014790, -35475892, -11715597, 27843736, 1845762, -7131793,
+-17346300, 21602074, -21082920, 188442, 19758460, -7322919, 18291192, -1148904, -6478422, 4317516,
+5663988, -11099806, 17504140, -9856413, -1778117, 3565360, 1435056, -129923, -1211718, 3608310,
+11764989, 15145128, 25052008, 10428717, -7861938, -3638911, -13017509, 12748000, -3159485, -22209812,
+6761889, -721555, -10423886, -29939680, 22273700, 859530, -11800960, 32353452, 3575024, -10775536,
+-4310537, 48367776, -44113608, -49609556, 31527208, 46513960, -84973784, 207769, -30677878, -29133300,
+-11729019, 31490164, -23427972, 41839960, -5440113, -548682, 55707336, -14940044, -44533444, 53691924,
+52155936, 39657044, -19358492, -22463752, -8167954, 7718593, 37164352, 30606474, -11577621, -1319629,
+10625212, 33271502, -11906723, 81604, 17904644, -22844932, -22641456, 18898392, -12640626, -6433861,
+-11723650, 1111860, -18435610, 3481608, 10468983, -5029944, 7814693, -5822365, -6304475, -2768107,
+-24917790, 5931350, -10799158, 17015050, 29844118, 4289062, 14295799, 15500537, 32749, 8645232,
+8574365, 35818416, -24414742, 18932216, 12882754, -13699335, 10187126, 14301704, 2420751, -11477763,
+-30996242, -26583700, 8917963, 14746233, -12481712, -46430208, 40079024, -9423695, -23196582, -8042327,
+40334036, -14313515, 44208100, 5616744, 14169634, -36399312, 39229156, -11545409, 16826072, 2357937,
+-59235652, -9335648, 10591389, -25224342, 36361728, 17562658, -53324704, -38901668, -26764626, 9829570,
+-11012296, 12731894, -19931332, -36089536, -478352, -38360500, 10133975, -2701535, -7584376, 13888314,
+21056078, -13034152, 2569464, 24605330, -19122806, 33092186, -4778688, -34547108, 29953638, -13707925,
+-6931541, 28020366, -35089344, 10112500, 219043, 13580150, -5789616, -11719355, -53255448, 13183939,
+-22130892, -52119428, 64043868, -42191076, -18242874, -7477538, -14814416, -31525596, 18189724, 45540612,
+-27566710, 13653164, -39901320, -21303038, -22723598, 21315386, 3625489, 59519120, -9957882, -3520800,
+-17265232, -48843440, 209917, 25843356, -18359374, 21976274, 24906516, -19256486, 2390686, -16115254,
+-73817600, -37196028, -22397718, -76101992, 50333796, 67680096, 31452046, -63795832, -52476984, -115839560,
+17899276, 144502560, 66134980, 30247844, -35484484, -116993296, -54767276, 39440148, -6903623, -9912248,
+2044404, 17182016, 1383516, -4549444, 14528801, 3580392, 5528697, 20447802, -12598750, -1218160,
+12202002, -4965519, -999654, 12487617, -11563126, -4136591, 4844723, 20234664, -13065827, -11097122,
+12964896, -1663226, 7729868, -22227530, 28734404, -7718056, 10380936, -7177964, 4603668, 13964012,
+7681012, -4690641, 14028974, -6104223, 14172318, -11517492, 275952, 12361990, -2064806, -6841346,
+-26284662, 1546725, 22217866, 962610, 10998874, -15122580, -3286724, -9598715, -7569880, -4911832,
+16447577, -6970195, 10507101, -13489419, -13170517, -7681549, 4707284, 26385058, -9372692, 11033771,
+2292439, 961536, -12084427, 5459977, 16301012, -1505386, -11131481, 7494718, -6212670, 3379603,
+-1795833, -8837432, 53140020, 10554882, -28481538, -20227686, -31456340, -9970767, 6053220, 16711718,
+-5218922, -6746320, -5816460, -5598490, -5299453, 7642895, -3875134, -1060320, -1680406, -5527086,
+-1318555, 8400956, 1206886, -2419140, -8382166, 9640054, -12483322, 7351374, -4451734, -12251394,
+62814, 5596880, 6299107, 4926865, -7228430, 1621350, -2305324, -3960497, 14784351, -13143137,
+-2377801, -530965, -884226, 1386201, -2172180, -7723425, 6532109, -12242267, 11708081, -1714766,
+-8159901, 2824478, -4185983, 10374494, -6025302, -3686693, 11266773, -10066866, 3556233, -4832912,
+-1037772, 8571681, -6066105, -2475512, 7792682, -5331128, 2122788, 746787, -6152004, 15171435,
+-13174275, -1194538, 6007049, -3443490, 9913858, -4461398, -1873680, 2568927, -25028386, -37926708,
+49657876, 154407296, 13345537, 13313862, -105246560, -133411888, -27664422, -28378996, 78596288, 133451616,
+68653976, 13033615, -48258788, -94241784, -66320736, -47653200, -2390149, 64908768, 95189360, 51213192,
+11841225, -33551748, -59223840, -33403034, -31887448, -30128122, 18946712, 38529076, 38234336, 38246148,
+9280887, -16930762, -6825777, -25614112, -39679592, -4668630, -11832098, -8294119, 35833448, 20410222,
+29925184, 17847200, -13601625, -32990718, -7904888, -21576842, -3331284, 14478335, 4483409, 7630010,
+16112570, -8629126, -11594264, -3093450, -6877317, 6053757, 10305774, 44023, 12725988, 7088844,
+-13775571, -13667660, -21046950, -18468360, 454193, 20640540, 32067836, 14737643, 3565897, -8627516,
+-22477712, -5037460, -25556130, -16676821, 10130754, 5693516, 8642548, -1285269, 0, 0,
+0, 0, 0, },
{
-4021700,
--5322538, -7656853, -865436, -2963528, -5371931, -2615098, -1255741, 1214402, -2573222, -5400922,
--438624, 1519882, -5378910, -2807298, -1046361, -3007014, -3120831, 2367064, -342524, 525597,
--2747169, -2796024, -708670, -4345433, 3001109, -4391604, 1318555, -1085016, 1723893, -2087354,
-514322, 1439351, -5981816, -1072668, 682363, 6537477, -2992519, -553514, -1056025, -11811,
-2509335, -905164, -2785286, -406948, -920734, 1993939, -784905, -2341831, 2424509, 2251100,
-1175210, 525060, -1649268, 2951716, 2145336, -3511673, 2212982, -2488397, -1145146, -416612,
--1997697, -639950, 352187, 758062, 2488934, -2017024, -1631551, -352724, 409096, -1770600,
--5507759, -970663, -2046552, -1000191, -767725, 1010391, 1248225, 3432216, 2682744, -891743,
-2056753, 978179, 5915244, -1031329, -152471, 745714, 4330401, -853088, -4507568, -2094870,
--4327180, 1060320, -1537598, -355409, -543313, 1054951, 420907, 890669, 2511482, 4626754,
--2049773, -1117765, 920197, -2157147, -302795, 3622268, -1959042, 4475893, 452045, -1564442,
-2945274, -3995930, -1044751, -2767570, 3929358, -69256, -1474248, -1017370, 26307, 3727495,
-122943, 4482335, 1664300, -3546032, 2900714, -1494649, -2750390, -2109903, 2968896, -513249,
-9561671, 1152662, 2350421, 1899986, -4562866, 237297, -754841, 1368484, -2655901, -1496259,
-4882304, 4367982, 214212, 2013803, -651761, 2923262, -4378183, 875100, 2786897, 2547989,
--142808, 550293, 1317481, -7219303, -6740951, -3997541, -3865471, -3122978, 1140851, 4766877,
-9338333, 1950989, 2336462, 126702, -6833830, -2669322, -2593624, -5896453, 9334038, 2667712,
-3658775, 2756832, -2163590, 1135482, 8943196, 3783329, -2195802, 16106, -2259153, 387084,
--4242891, 2716030, -1381906, -1657857, 294205, 5013838, 446140, 1901597, 2945274, 4393215,
--7502771, 344134, 1836099, 4590247, 6605123, -3437585, -804770, -1516660, 5500780, 3297998,
-3527779, -290984, 1605781, 11422466, -7074348, 1735167, 593242, -4348655, 1932735, -6196564,
--954020, 2055679, -1498944, -9490804, 2679523, 1093069, -2778307, -2309082, -582505, -1035087,
-3186329, -2660195, -1571958, 1471563, -332323, -2528662, -432181, 3039226, -4473209, 927176,
--1577864, 9697499, 1118839, 3308736, -176631, -2940442, 445603, 6720550, 3805341, 4233227,
-7450695, -3479997, 287226, 6728603, 2452963, 2786360, 601832, 560493, 4310000, -4032974,
--907312, 4905390, -3370476, 1719598, 3148748, -2552284, 2354716, 6666863, -3154654, 2246268,
-711891, -73014, 238908, -1809792, -4635881, -1837709, -3869766, -786516, 1799054, 2981244,
-3659849, -1016297, -5887327, -934692, 8845485, -3637301, 1851131, -1971390, -9133785, 4968741,
-1410360, 3577708, -624381, 4124779, 4459787, -8263517, 3138011, -200253, 2924336, -1025423,
--5528697, -712428, -839666, -1464047, -1136556, 3049427, -162672, 231391, 6907918, 935229,
-5370320, -236760, 148713, 720481, -3696356, -5084168, 16073378, 9373229, 13708999, 4729833,
--6036040, 3155727, -2855080, 574989, 1076426, -11720966, -3460670, -3115462, 2767570, 4820564,
--2241436, -138513, 1242319, 500364, 8169565, -826781, -9279277, 3006477, -5528160, 4052302,
-4142496, 3684008, 4875325, -1206349, -2231773, 2186138, -2003065, -2040646, 1079647, -1365263,
-2710124, 4537633, -2426120, -6878927, 1729798, -6705518, -4807142, -878858, -14424111, 83215,
--2886218, 5383742, 4642860, 2428267, 7938710, 8468602, 3195993, 1788317, -1246077, 278099,
--168041, -4045859, 7275675, -1240709, 2055679, -2724083, -3779034, -1318018, -5331128, 3762928,
--2932389, -1954210, 6918656, -6796786, -2942590, 1328756, -4012036, -1252520, -1387274, 2362232,
-1888175, 1780801, 3642132, -6749004, -13741211, -5650567, -936840, 1483374, -1214939, 3779034,
--387084, 6438693, -5725729, 3148211, -983548, 12306155, 5970542, -3373697, -4925254, 2412161,
--7249905, -4759898, 3618510, -3331821, -4075924, 8337069, 4319664, -1084479, -3497714, -6135898,
-4395899, 2331630, 3446711, -817118, -747324, -4009352, 5886253, -7413114, -2279017, -891206,
-5528160, 3149822, 326418, 4791573, 1363115, -3077344, 1791001, -3064459, -1888712, -3582540,
-4505958, -3330747, 657130, 4436165, 8222178, 7080254, 3916473, 2158758, 321049, 3783866,
--888521, 5687074, -195958, 3445101, 3983582, -3066070, 1299228, -3293703, 4068408, 2172717,
-2186138, -1397475, -3985730, 3297461, -4284230, -1015223, -4488241, 2033130, 1735167, -712965,
--1879048, -6794102, -13875966, -11436424, 827318, -9795210, -4636954, -13819594, -7164543, -8483097,
-3433290, -4605816, -5811091, -2185602, 438087, -3679176, -13171591, 3400540, -2239289, 1163399,
--5903433, 5818070, 2330020, -46171, -5240934, -2570538, 6906308, 4441533, 410169, -1212791,
--4451197, 2637110, 1585917, 2731062, -5347771, -729608, -4320737, -4210142, -4221416, 212601,
-8928700, -7430831, 280784, -7100655, 832150, 2918967, 4132832, -7495792, 7403987, 8520678,
--2750927, -2400887, -1372779, -667331, 2980171, 3221226, 1075889, 2066953, -4081830, -1207960,
--1357747, 7187091, -2107755, 7970386, 89121, -3027415, 7047505, -1186485, -3587908, 900333,
-7761543, 7767985, 16643, -3271691, -3662533, 2135673, -11063299, -10514617, -12678743, 3902515,
--10315975, -3945464, 9430138, 4964982, -11177116, -488553, -142271, 5048734, 6895570, 12453258,
--3554086, -4141422, -12254079, -14483703, -8958765, -2717104, 5749351, -5728950, 2631741, -8240432,
-8561480, -6121939, 6821482, -3038689, 725850, 2097555, -1695975, -6034429, 9679783, -8345122,
--715112, -4335770, 932008, -5092221, 937377, -21275658, 51003, 10271951, -13117904, 3180423,
-8442295, 3398393, -6993818, -487479, 10209674, -12731894, -383863, 5570573, 4748087, 5249524,
--2239289, -1628866, -8779450, -3921305, 3045132, 5973226, 8708583, 11365020, -16833050, 6460705,
--5420786, 1411434, -12069932, -4508105, 8950175, 2484102, 667867, -6235219, -744103, 6164889,
-3528853, 2566780, 1200443, 12942347, 21376590, 12017318, 13906567, 2212445, 4886599, 18901078,
--668941, 649077, 12801150, -6209449, -47782, 3794604, 6342593, 10719165, -8725763, -12233677,
-6720013, 3875671, -7237020, 1639604, 4321274, -2637647, 2450816, -6524592, -1576253, -7634305,
-2310156, 8575976, 2553358, 7534983, 5649493, 6163815, -14736033, 918049, 16998406, -1872069,
--373662, 16076599, -2163053, -381178, 2292976, -1901597, -527744, 9015673, 13774497, -13360033,
--2267206, 2959233, -4217658, 6684580, -2199023, 926639, 977105, -2636573, 12156905, -1198833,
--4441533, 4965519, -4588099, -7144678, 2653216, 8809515, 3197603, -335544, 1779190, 8619999,
-4294431, 7916162, 2359548, 1854889, 224949, -5768141, -1016834, -3892851, 36006320, 5239323,
--962610, 14496, -17552994, -4834523, 1517197, -3789235, 7522099, 3653407, 12297028, -1287417,
--98247, -2370285, -5357435, 8666170, 1479079, 3534221, 4607963, 6889128, -6199249, -5804649,
--7191386, -4577362, -4124779, -1379758, -9833864, -1493038, 15850577, 7925826, -3003793, -599685,
--1837172, 1816234, 5657546, -2231773, 22711250, -3401077, -544924, -9722195, 4196720, 10468983,
--1596654, -6955163, -862752, 4446365, 7722351, 3944928, 10816875, 16630113, 5357972, 393526,
-9648107, 8500277, 3091840, 6783364, -19639812, 5459977, 760209, -16673063, 6706592, 539555,
--7303055, 5963562, -7746511, -6733435, 9614284, 8491687, -3836480, -14292041, -6733435, 5106716,
--8655433, -304406, 4111358, 16976932, -2643016, -18473728, 11382737, -1491964, -13090523, 253940,
-10566156, -12103755, -3395172, -9597641, 6205691, 3017215, -4475893, -3614215, -2236067, 7721815,
-4648229, 3797288, 6562710, 7153805, 34897, 8478265, 8143795, 4493073, 4255239, -8012799,
--4926328, -5290863, 4958540, 8114267, 2029372, 3169149, -4747013, -2132988, -3093450, -1313186,
--8048769, 7931194, 1126892, 1477469, -8535711, -1368484, 12443057, -8185671, -10271951, -14055817,
-4931696, -10240276, 16167868, 20242180, 12857521, 8884677, 483184, 16140487, -8094403, 12983686,
--1678795, -7065221, 529355, 2028835, -17959942, -6592238, 6818798, 2481954, -2839510, 4234838,
-15406585, 11901891, -16747151, -2668249, 577136, 1386738, 6254010, 9408663, 1642825, -11490111,
-9084393, -4578972, -15275588, 793495, 2619393, 9265318, 3007551, 24927990, 4943508, -11401528,
--2575370, -9716827, 17124572, -21623012, -981400, 13648332, -30602178, -13188771, -9722195, -11763915,
--19970524, 1227824, -2728378, -9701794, -193810, 9145059, 2207076, 577673, -5182952, 1721208,
--1088774, 1709934, 1026497, 840740, 9089761, -2676838, 552977, 15673946, -9528922, -2850248,
-3926137, 13404056, -6295349, 19444928, -4961224, -8855686, -16090558, -23169202, -5357972, -17428440,
-9375914, -5787469, -11296838, 996432, 3313031, 8526047, 9140227, 2545305, -232465, 27801860,
-17183090, -2531883, 4217658, 9035537, 8780524, 4008815, -2344515, -1292785, -3559991, -7381438,
--4559108, 3585761, 23860690, -16231218, -2227478, -9440338, 17440788, -12125230, -13049721, 7622493,
--6276558, -22441204, 10657424, -6254546, 8326331, -6036577, 10660646, 8413304, 8694088, 15871515,
-1583232, 13493177, 4278325, 3864934, 7832410, 3531537, 1417339, 1102196, -1395864, -7778723,
-6267968, -16282758, 6211597, 2148021, -5923297, -8627516, -1410897, 6811282, -8676371, -2791192,
--12414066, -4023311, -15035607, 1140851, 6209986, 105764, -3178813, -8502425, -16614544, -10830297,
-10345502, 4105989, -6506876, -8597451, -3765613, -621160, -16526497, 12588549, 9647570, -14612552,
--16051367, -23314694, -5491116, -27939300, 5443871, 10660646, 3535832, -1982127, -5846524, -3205656,
-8980777, 11113765, 10714870, -9233106, -9700721, 8194798, -6876780, -5080947, -19615116, 6029597,
-9728101, 13612899, -7461969, 20824148, 27094802, -11523934, 872952, 5582384, -19298362, -5177583,
-27329414, -398895, -26606786, 1810866, 10205916, -1929514, 11362873, 21875342, -7860327, 19675246,
-12968654, 16637093, 6681359, -14818711, -12826383, 10510859, -11444477, -21853868, -4228932, -25733834,
-7251516, -2743947, 10617696, 6449967, 7293392, 1731946, 969589, -336081, 14526653, 5098126,
--22083112, -3819837, 10204305, 14546517, 10825465, 18270254, 19583978, 12641162, -4118874, -3249680,
-5971615, 34094524, -12205760, 1661079, 9962177, 12838731, -3025805, -20349018, -1347009, -5789079,
--8868034, -22407382, -20527260, 5567888, -10059350, -10852309, 9376450, 17587892, 26296474, -534187,
-2437394, -1311576, 21541408, -13033078, -1658931, 19388556, -17620640, 808528, -11848204, -14276471,
-8198556, 5497022, 11125576, -13237089, -32697050, -6543920, -12020540, -9512279, -7508140, 2428267,
--11825119, -8253854, 2094333, 8033200, -7775502, 17772574, -2768107, 12226161, -6633577, 295279,
-8754217, -12890271, -9623411, -3746822, 13522705, -2516851, -16840030, -5027259, 1449015, -6729677,
-5645198, -9674951, -11671037, 16553878, 3563212, -11355894, 6527814, -501974, -10696616, 43487,
--17103096, -12877923, 1765768, 25169046, 8753143, 8526047, -20384452, 15919833, -2735357, 12430172,
--7789997, -12497281, 5504538, -23891292, 19707994, -32700270, -22458920, 8792872, 17410186, 2422362,
-21030308, -8735427, 4594542, -14436996, 19539954, 7669201, 14118094, 8099772, 2153926, -3925600,
--6823630, -9194451, -5394479, 438087, -20118164, -9387188, -1168231, -23768350, -2788508, 5523328,
--24133422, -22043382, 1902671, 9360881, -11575474, -50193136, -10873783, -124554, 6206228, -16927002,
-1069984, -9419937, -2410014, -13520557, -15608985, 13480292, -15219753, -18087718, -3571265, -12692165,
--14458471, 4723391, -20787642, -6790880, 11595875, 27802934, 21930104, -1241246, -14427869, 4631049,
-19612968, -1170379, 12778601, -4144644, 16252156, 9260486, -18272402, 27469538, -22031572, -11580842,
-17853106, -21057688, 5318244, -5212480, -16475495, 1311039, 22542672, -5451924, -14868103, 8189966,
-10465762, -1011465, 3647501, -34586836, 6986838, 608275, 15832860, 7388418, -16151761, 13786308,
--9284109, -2331630, -15209553, 6168110, 18294950, -5335960, -5563057, -21693342, -30513596, 14872398,
--4006668, 11606075, -17888538, 10473815, 6993818, -20547660, 17673790, 20352240, -52646636, 20673826,
-24728274, -5301601, 16811038, 1144609, 8092256, -2834679, -11847130, -5479842, 9634685, 3924526,
--16115791, -8279087, -2653753, -5592048, -5078262, -221191, 30481920, 7767985, 5754183, -18256832,
-12397423, -12588012, -1072131, 3876208, -22751516, 11455215, -9241159, 2560338, -9976135, -14068165,
--862752, 11775190, 28142774, 12072079, 1766842, 19710142, 6410239, -672699, 1689533, 2005213,
-3829500, 4552129, 18646600, 10332618, 4708358, 4918275, -3897683, -4549444, -21004538, -14810121,
-926102, -628139, -13510357, 3498788, 13336947, -20659330, 20294258, 7487739, -9465571, 1057099,
--7320772, 242129, 11605539, 7901666, 2665027, -13007308, -4826470, -18454400, -8310225, 8438537,
-5504538, 10401337, -11784853, -45381700, 70447664, -69694432, -31921808, -15772194, -5095442, 41091024,
-11675869, 45956152, 11065983, -9227737, 35689568, 15725486, -12634720, 17003238, 14867029, 8624294,
-13856101, 13929116, -12876849, -19985020, -14758581, 2291365, -13640816, 6866042, 3529390, 8886824,
--2002529, 6089727, 1454920, 22354232, 4664335, 1950989, 6220724, -5442261, -1051193, 7702487,
--14879914, -20335060, -14448807, -11983496, 1148904, 5599564, -15035070, -2698850, -9445707, -35225712,
-16537772, -6781754, 7834557, -18846316, -7301982, -17558364, -24372866, 8095477, 4944044, 21846352,
--2262911, 19073412, -9803800, 15742666, 495532, 22755810, -18448496, 13545253, 15971373, 8443369,
-8367670, -679142, -9354439, 26068304, 16213502, -4008278, 30702036, 5394479, 150324, 10875931,
-13377749, 43274480, 3704409, -25851408, -38186556, -20047296, -15858093, 5414880, 31782222, -170188,
--13169980, 28717226, 2595234, -22377854, 20891794, 22878754, -3712462, 214748, -1734630, -19531900,
-22982370, 2056753, 13314399, -6267968, -17415018, -30525406, 6380174, 5016522, 5565204, -3310883,
-10643466, -9241696, 672699, -18850612, -24293408, 10257456, -2285460, 9539122, -2687576, -7676181,
--21772800, -33563020, 19158776, -17848274, 9186935, 19027778, -63351, -6919729, -16182900, -10171019,
-41890428, 11741904, -615791, 7961796, -4105452, -13581223, -4103841, 26669600, -21502216, -35074312,
--12093017, -8622147, -52475912, -38177428, -21349746, -19209242, 6994354, 4269735, -17601312, -30960272,
--13256417, -11581916, -11531987, -3931506, -7104950, -15049029, -21485574, 23079544, -20298016, 30895310,
--4732517, 29511258, 40647032, -6437619, -46569792, -42653856, -10645613, 22382686, 1722819, -33162516,
-25939992, -4556961, -23716272, 29146184, -53305912, -9598715, -807454, -7858180, -9053254, 64742872,
--27562416, 60770568, -3917010, 13916768, -5332739, -22005802, 37120864, 11541114, 38682624, -25626460,
--27492086, 10100152, -43799540, -11425150, -7603166, -28458454, 61672508, -3935801, -65174520, 512712,
--29282550, 9920838, 15525770, 27417460, 20747914, -24012626, -16167331, -38197292, -11713450, -16867948,
-17071422, 12787191, -1961726, 13259101, -7591355, -26606786, -10995653, -31287226, 34478924, -23793046,
--16559783, 31950798, 8473970, 52927956, 26489748, 6354941, 29154238, -34139084, -10762114, -35035660,
--32727114, -2782602, -402653, -41871636, 54322748, -2647311, -84989888, 44071196, 9744207, -17892834,
--14095009, 27417998, 14566382, -15905875, -4742718, -39370892, -16942572, 17445620, -34700116, 1862942,
-5936182, -9948755, -23205708, -15065672, 30709554, 13074417, -6428493, -43776992, 14850386, 28713466,
-15952582, -33655900, -23132694, 967978, 37287296, 4213900, -9250823, 6832756, 1028108, 20134270,
--50117436, -42155104, 53289268, 9406515, 22187802, -49677204, 10894721, -1032403, 37091336, -32088238,
--6590091, -49555868, 17625472, 38278896, 8393440, -21013664, 14366129, 55094228, -24168854, -23545010,
--20255602, 9629854, 1891396, 49004504, -14352170, 6009196, -25664578, 10932839, -28173374, 2026151,
-17157858, -31283468, 32324998, 13733695, -24879134, -33117956, -23793046, 3170760, 31901406, -54020488,
--15207405, 63221920, 56377352, 28223304, 13442174, 12547210, 14028974, -9262097, -8183524, -19209242,
-3024194, 5760625, 5610301, -1405528, -31464394, 15134928, 7036230, -22591528, -18224620, -9895068,
--10321880, 8152922, -7493108, -9625022, 3578782, -890669, -16233903, 21822192, -14842333, -5110474,
--15434502, -14794552, 11565810, -6252936, -1209570, 5611912, 7910793, -1631551, -20753818, 5390184,
-34904664, 7504382, -52148420, -3037079, -10497974, -16136729, 12265353, 12458626, 28609314, 13793287,
--33582888, 38242388, -8199093, -25358024, 79478904, -14968498, -5550709, -24906516, -61112016, 29586956,
-32817846, 11647414, 13140989, -51866024, 16690780, -2586644, -11678016, -7567196, 3374234, -2969433,
-9596031, 12581570, 3491809, -5006858, -13918378, 19609746, 21568252, 32215476, -30353608, -77912856,
--127658240, 8096550, 131210712, 9712532, 277941824, 277607904, 101380552, 278103424, 162358896, -51828444,
--6031745, -30348776, -215721712, -182449680, -126938296, -227640240, -214977072, -66859220, -137009456, -123141008,
-22080964, 29525216, -33563020, 33033668, 55111408, -8930311, -1786706, 111039936, 73708080, 20485920,
-81730008, 155786512, 70354784, 80175768, 197344624, 69063072, 27357868, 164954128, 161349568, -6845641,
-98422936, 179189792, -12230993, 32870458, 101640400, -22295712, -109273096, 27588722, -36014376, -202095392,
--187093072, -177784800, -321783232, -470911488, -332511552, -460994400, -602850752, -437514912, -357588224, -479588928,
--315460512, -173039408, -165894192, -64977488, 95526512, 223822016, 260847328, 355200768, 503006176, 482404288,
-452136032, 502134304, 496818208, 363852448, 247115776, 142944560, -27574764, -27306328, 0, 0,
-0, 0, 0, },
+-5322538, -7656853, -865436, -2963528, -5371931, -2615098, -1255741, 1214402, -2573222, -5400922,
+-438624, 1519882, -5378910, -2807298, -1046361, -3007014, -3120831, 2367064, -342524, 525597,
+-2747169, -2796024, -708670, -4345433, 3001109, -4391604, 1318555, -1085016, 1723893, -2087354,
+514322, 1439351, -5981816, -1072668, 682363, 6537477, -2992519, -553514, -1056025, -11811,
+2509335, -905164, -2785286, -406948, -920734, 1993939, -784905, -2341831, 2424509, 2251100,
+1175210, 525060, -1649268, 2951716, 2145336, -3511673, 2212982, -2488397, -1145146, -416612,
+-1997697, -639950, 352187, 758062, 2488934, -2017024, -1631551, -352724, 409096, -1770600,
+-5507759, -970663, -2046552, -1000191, -767725, 1010391, 1248225, 3432216, 2682744, -891743,
+2056753, 978179, 5915244, -1031329, -152471, 745714, 4330401, -853088, -4507568, -2094870,
+-4327180, 1060320, -1537598, -355409, -543313, 1054951, 420907, 890669, 2511482, 4626754,
+-2049773, -1117765, 920197, -2157147, -302795, 3622268, -1959042, 4475893, 452045, -1564442,
+2945274, -3995930, -1044751, -2767570, 3929358, -69256, -1474248, -1017370, 26307, 3727495,
+122943, 4482335, 1664300, -3546032, 2900714, -1494649, -2750390, -2109903, 2968896, -513249,
+9561671, 1152662, 2350421, 1899986, -4562866, 237297, -754841, 1368484, -2655901, -1496259,
+4882304, 4367982, 214212, 2013803, -651761, 2923262, -4378183, 875100, 2786897, 2547989,
+-142808, 550293, 1317481, -7219303, -6740951, -3997541, -3865471, -3122978, 1140851, 4766877,
+9338333, 1950989, 2336462, 126702, -6833830, -2669322, -2593624, -5896453, 9334038, 2667712,
+3658775, 2756832, -2163590, 1135482, 8943196, 3783329, -2195802, 16106, -2259153, 387084,
+-4242891, 2716030, -1381906, -1657857, 294205, 5013838, 446140, 1901597, 2945274, 4393215,
+-7502771, 344134, 1836099, 4590247, 6605123, -3437585, -804770, -1516660, 5500780, 3297998,
+3527779, -290984, 1605781, 11422466, -7074348, 1735167, 593242, -4348655, 1932735, -6196564,
+-954020, 2055679, -1498944, -9490804, 2679523, 1093069, -2778307, -2309082, -582505, -1035087,
+3186329, -2660195, -1571958, 1471563, -332323, -2528662, -432181, 3039226, -4473209, 927176,
+-1577864, 9697499, 1118839, 3308736, -176631, -2940442, 445603, 6720550, 3805341, 4233227,
+7450695, -3479997, 287226, 6728603, 2452963, 2786360, 601832, 560493, 4310000, -4032974,
+-907312, 4905390, -3370476, 1719598, 3148748, -2552284, 2354716, 6666863, -3154654, 2246268,
+711891, -73014, 238908, -1809792, -4635881, -1837709, -3869766, -786516, 1799054, 2981244,
+3659849, -1016297, -5887327, -934692, 8845485, -3637301, 1851131, -1971390, -9133785, 4968741,
+1410360, 3577708, -624381, 4124779, 4459787, -8263517, 3138011, -200253, 2924336, -1025423,
+-5528697, -712428, -839666, -1464047, -1136556, 3049427, -162672, 231391, 6907918, 935229,
+5370320, -236760, 148713, 720481, -3696356, -5084168, 16073378, 9373229, 13708999, 4729833,
+-6036040, 3155727, -2855080, 574989, 1076426, -11720966, -3460670, -3115462, 2767570, 4820564,
+-2241436, -138513, 1242319, 500364, 8169565, -826781, -9279277, 3006477, -5528160, 4052302,
+4142496, 3684008, 4875325, -1206349, -2231773, 2186138, -2003065, -2040646, 1079647, -1365263,
+2710124, 4537633, -2426120, -6878927, 1729798, -6705518, -4807142, -878858, -14424111, 83215,
+-2886218, 5383742, 4642860, 2428267, 7938710, 8468602, 3195993, 1788317, -1246077, 278099,
+-168041, -4045859, 7275675, -1240709, 2055679, -2724083, -3779034, -1318018, -5331128, 3762928,
+-2932389, -1954210, 6918656, -6796786, -2942590, 1328756, -4012036, -1252520, -1387274, 2362232,
+1888175, 1780801, 3642132, -6749004, -13741211, -5650567, -936840, 1483374, -1214939, 3779034,
+-387084, 6438693, -5725729, 3148211, -983548, 12306155, 5970542, -3373697, -4925254, 2412161,
+-7249905, -4759898, 3618510, -3331821, -4075924, 8337069, 4319664, -1084479, -3497714, -6135898,
+4395899, 2331630, 3446711, -817118, -747324, -4009352, 5886253, -7413114, -2279017, -891206,
+5528160, 3149822, 326418, 4791573, 1363115, -3077344, 1791001, -3064459, -1888712, -3582540,
+4505958, -3330747, 657130, 4436165, 8222178, 7080254, 3916473, 2158758, 321049, 3783866,
+-888521, 5687074, -195958, 3445101, 3983582, -3066070, 1299228, -3293703, 4068408, 2172717,
+2186138, -1397475, -3985730, 3297461, -4284230, -1015223, -4488241, 2033130, 1735167, -712965,
+-1879048, -6794102, -13875966, -11436424, 827318, -9795210, -4636954, -13819594, -7164543, -8483097,
+3433290, -4605816, -5811091, -2185602, 438087, -3679176, -13171591, 3400540, -2239289, 1163399,
+-5903433, 5818070, 2330020, -46171, -5240934, -2570538, 6906308, 4441533, 410169, -1212791,
+-4451197, 2637110, 1585917, 2731062, -5347771, -729608, -4320737, -4210142, -4221416, 212601,
+8928700, -7430831, 280784, -7100655, 832150, 2918967, 4132832, -7495792, 7403987, 8520678,
+-2750927, -2400887, -1372779, -667331, 2980171, 3221226, 1075889, 2066953, -4081830, -1207960,
+-1357747, 7187091, -2107755, 7970386, 89121, -3027415, 7047505, -1186485, -3587908, 900333,
+7761543, 7767985, 16643, -3271691, -3662533, 2135673, -11063299, -10514617, -12678743, 3902515,
+-10315975, -3945464, 9430138, 4964982, -11177116, -488553, -142271, 5048734, 6895570, 12453258,
+-3554086, -4141422, -12254079, -14483703, -8958765, -2717104, 5749351, -5728950, 2631741, -8240432,
+8561480, -6121939, 6821482, -3038689, 725850, 2097555, -1695975, -6034429, 9679783, -8345122,
+-715112, -4335770, 932008, -5092221, 937377, -21275658, 51003, 10271951, -13117904, 3180423,
+8442295, 3398393, -6993818, -487479, 10209674, -12731894, -383863, 5570573, 4748087, 5249524,
+-2239289, -1628866, -8779450, -3921305, 3045132, 5973226, 8708583, 11365020, -16833050, 6460705,
+-5420786, 1411434, -12069932, -4508105, 8950175, 2484102, 667867, -6235219, -744103, 6164889,
+3528853, 2566780, 1200443, 12942347, 21376590, 12017318, 13906567, 2212445, 4886599, 18901078,
+-668941, 649077, 12801150, -6209449, -47782, 3794604, 6342593, 10719165, -8725763, -12233677,
+6720013, 3875671, -7237020, 1639604, 4321274, -2637647, 2450816, -6524592, -1576253, -7634305,
+2310156, 8575976, 2553358, 7534983, 5649493, 6163815, -14736033, 918049, 16998406, -1872069,
+-373662, 16076599, -2163053, -381178, 2292976, -1901597, -527744, 9015673, 13774497, -13360033,
+-2267206, 2959233, -4217658, 6684580, -2199023, 926639, 977105, -2636573, 12156905, -1198833,
+-4441533, 4965519, -4588099, -7144678, 2653216, 8809515, 3197603, -335544, 1779190, 8619999,
+4294431, 7916162, 2359548, 1854889, 224949, -5768141, -1016834, -3892851, 36006320, 5239323,
+-962610, 14496, -17552994, -4834523, 1517197, -3789235, 7522099, 3653407, 12297028, -1287417,
+-98247, -2370285, -5357435, 8666170, 1479079, 3534221, 4607963, 6889128, -6199249, -5804649,
+-7191386, -4577362, -4124779, -1379758, -9833864, -1493038, 15850577, 7925826, -3003793, -599685,
+-1837172, 1816234, 5657546, -2231773, 22711250, -3401077, -544924, -9722195, 4196720, 10468983,
+-1596654, -6955163, -862752, 4446365, 7722351, 3944928, 10816875, 16630113, 5357972, 393526,
+9648107, 8500277, 3091840, 6783364, -19639812, 5459977, 760209, -16673063, 6706592, 539555,
+-7303055, 5963562, -7746511, -6733435, 9614284, 8491687, -3836480, -14292041, -6733435, 5106716,
+-8655433, -304406, 4111358, 16976932, -2643016, -18473728, 11382737, -1491964, -13090523, 253940,
+10566156, -12103755, -3395172, -9597641, 6205691, 3017215, -4475893, -3614215, -2236067, 7721815,
+4648229, 3797288, 6562710, 7153805, 34897, 8478265, 8143795, 4493073, 4255239, -8012799,
+-4926328, -5290863, 4958540, 8114267, 2029372, 3169149, -4747013, -2132988, -3093450, -1313186,
+-8048769, 7931194, 1126892, 1477469, -8535711, -1368484, 12443057, -8185671, -10271951, -14055817,
+4931696, -10240276, 16167868, 20242180, 12857521, 8884677, 483184, 16140487, -8094403, 12983686,
+-1678795, -7065221, 529355, 2028835, -17959942, -6592238, 6818798, 2481954, -2839510, 4234838,
+15406585, 11901891, -16747151, -2668249, 577136, 1386738, 6254010, 9408663, 1642825, -11490111,
+9084393, -4578972, -15275588, 793495, 2619393, 9265318, 3007551, 24927990, 4943508, -11401528,
+-2575370, -9716827, 17124572, -21623012, -981400, 13648332, -30602178, -13188771, -9722195, -11763915,
+-19970524, 1227824, -2728378, -9701794, -193810, 9145059, 2207076, 577673, -5182952, 1721208,
+-1088774, 1709934, 1026497, 840740, 9089761, -2676838, 552977, 15673946, -9528922, -2850248,
+3926137, 13404056, -6295349, 19444928, -4961224, -8855686, -16090558, -23169202, -5357972, -17428440,
+9375914, -5787469, -11296838, 996432, 3313031, 8526047, 9140227, 2545305, -232465, 27801860,
+17183090, -2531883, 4217658, 9035537, 8780524, 4008815, -2344515, -1292785, -3559991, -7381438,
+-4559108, 3585761, 23860690, -16231218, -2227478, -9440338, 17440788, -12125230, -13049721, 7622493,
+-6276558, -22441204, 10657424, -6254546, 8326331, -6036577, 10660646, 8413304, 8694088, 15871515,
+1583232, 13493177, 4278325, 3864934, 7832410, 3531537, 1417339, 1102196, -1395864, -7778723,
+6267968, -16282758, 6211597, 2148021, -5923297, -8627516, -1410897, 6811282, -8676371, -2791192,
+-12414066, -4023311, -15035607, 1140851, 6209986, 105764, -3178813, -8502425, -16614544, -10830297,
+10345502, 4105989, -6506876, -8597451, -3765613, -621160, -16526497, 12588549, 9647570, -14612552,
+-16051367, -23314694, -5491116, -27939300, 5443871, 10660646, 3535832, -1982127, -5846524, -3205656,
+8980777, 11113765, 10714870, -9233106, -9700721, 8194798, -6876780, -5080947, -19615116, 6029597,
+9728101, 13612899, -7461969, 20824148, 27094802, -11523934, 872952, 5582384, -19298362, -5177583,
+27329414, -398895, -26606786, 1810866, 10205916, -1929514, 11362873, 21875342, -7860327, 19675246,
+12968654, 16637093, 6681359, -14818711, -12826383, 10510859, -11444477, -21853868, -4228932, -25733834,
+7251516, -2743947, 10617696, 6449967, 7293392, 1731946, 969589, -336081, 14526653, 5098126,
+-22083112, -3819837, 10204305, 14546517, 10825465, 18270254, 19583978, 12641162, -4118874, -3249680,
+5971615, 34094524, -12205760, 1661079, 9962177, 12838731, -3025805, -20349018, -1347009, -5789079,
+-8868034, -22407382, -20527260, 5567888, -10059350, -10852309, 9376450, 17587892, 26296474, -534187,
+2437394, -1311576, 21541408, -13033078, -1658931, 19388556, -17620640, 808528, -11848204, -14276471,
+8198556, 5497022, 11125576, -13237089, -32697050, -6543920, -12020540, -9512279, -7508140, 2428267,
+-11825119, -8253854, 2094333, 8033200, -7775502, 17772574, -2768107, 12226161, -6633577, 295279,
+8754217, -12890271, -9623411, -3746822, 13522705, -2516851, -16840030, -5027259, 1449015, -6729677,
+5645198, -9674951, -11671037, 16553878, 3563212, -11355894, 6527814, -501974, -10696616, 43487,
+-17103096, -12877923, 1765768, 25169046, 8753143, 8526047, -20384452, 15919833, -2735357, 12430172,
+-7789997, -12497281, 5504538, -23891292, 19707994, -32700270, -22458920, 8792872, 17410186, 2422362,
+21030308, -8735427, 4594542, -14436996, 19539954, 7669201, 14118094, 8099772, 2153926, -3925600,
+-6823630, -9194451, -5394479, 438087, -20118164, -9387188, -1168231, -23768350, -2788508, 5523328,
+-24133422, -22043382, 1902671, 9360881, -11575474, -50193136, -10873783, -124554, 6206228, -16927002,
+1069984, -9419937, -2410014, -13520557, -15608985, 13480292, -15219753, -18087718, -3571265, -12692165,
+-14458471, 4723391, -20787642, -6790880, 11595875, 27802934, 21930104, -1241246, -14427869, 4631049,
+19612968, -1170379, 12778601, -4144644, 16252156, 9260486, -18272402, 27469538, -22031572, -11580842,
+17853106, -21057688, 5318244, -5212480, -16475495, 1311039, 22542672, -5451924, -14868103, 8189966,
+10465762, -1011465, 3647501, -34586836, 6986838, 608275, 15832860, 7388418, -16151761, 13786308,
+-9284109, -2331630, -15209553, 6168110, 18294950, -5335960, -5563057, -21693342, -30513596, 14872398,
+-4006668, 11606075, -17888538, 10473815, 6993818, -20547660, 17673790, 20352240, -52646636, 20673826,
+24728274, -5301601, 16811038, 1144609, 8092256, -2834679, -11847130, -5479842, 9634685, 3924526,
+-16115791, -8279087, -2653753, -5592048, -5078262, -221191, 30481920, 7767985, 5754183, -18256832,
+12397423, -12588012, -1072131, 3876208, -22751516, 11455215, -9241159, 2560338, -9976135, -14068165,
+-862752, 11775190, 28142774, 12072079, 1766842, 19710142, 6410239, -672699, 1689533, 2005213,
+3829500, 4552129, 18646600, 10332618, 4708358, 4918275, -3897683, -4549444, -21004538, -14810121,
+926102, -628139, -13510357, 3498788, 13336947, -20659330, 20294258, 7487739, -9465571, 1057099,
+-7320772, 242129, 11605539, 7901666, 2665027, -13007308, -4826470, -18454400, -8310225, 8438537,
+5504538, 10401337, -11784853, -45381700, 70447664, -69694432, -31921808, -15772194, -5095442, 41091024,
+11675869, 45956152, 11065983, -9227737, 35689568, 15725486, -12634720, 17003238, 14867029, 8624294,
+13856101, 13929116, -12876849, -19985020, -14758581, 2291365, -13640816, 6866042, 3529390, 8886824,
+-2002529, 6089727, 1454920, 22354232, 4664335, 1950989, 6220724, -5442261, -1051193, 7702487,
+-14879914, -20335060, -14448807, -11983496, 1148904, 5599564, -15035070, -2698850, -9445707, -35225712,
+16537772, -6781754, 7834557, -18846316, -7301982, -17558364, -24372866, 8095477, 4944044, 21846352,
+-2262911, 19073412, -9803800, 15742666, 495532, 22755810, -18448496, 13545253, 15971373, 8443369,
+8367670, -679142, -9354439, 26068304, 16213502, -4008278, 30702036, 5394479, 150324, 10875931,
+13377749, 43274480, 3704409, -25851408, -38186556, -20047296, -15858093, 5414880, 31782222, -170188,
+-13169980, 28717226, 2595234, -22377854, 20891794, 22878754, -3712462, 214748, -1734630, -19531900,
+22982370, 2056753, 13314399, -6267968, -17415018, -30525406, 6380174, 5016522, 5565204, -3310883,
+10643466, -9241696, 672699, -18850612, -24293408, 10257456, -2285460, 9539122, -2687576, -7676181,
+-21772800, -33563020, 19158776, -17848274, 9186935, 19027778, -63351, -6919729, -16182900, -10171019,
+41890428, 11741904, -615791, 7961796, -4105452, -13581223, -4103841, 26669600, -21502216, -35074312,
+-12093017, -8622147, -52475912, -38177428, -21349746, -19209242, 6994354, 4269735, -17601312, -30960272,
+-13256417, -11581916, -11531987, -3931506, -7104950, -15049029, -21485574, 23079544, -20298016, 30895310,
+-4732517, 29511258, 40647032, -6437619, -46569792, -42653856, -10645613, 22382686, 1722819, -33162516,
+25939992, -4556961, -23716272, 29146184, -53305912, -9598715, -807454, -7858180, -9053254, 64742872,
+-27562416, 60770568, -3917010, 13916768, -5332739, -22005802, 37120864, 11541114, 38682624, -25626460,
+-27492086, 10100152, -43799540, -11425150, -7603166, -28458454, 61672508, -3935801, -65174520, 512712,
+-29282550, 9920838, 15525770, 27417460, 20747914, -24012626, -16167331, -38197292, -11713450, -16867948,
+17071422, 12787191, -1961726, 13259101, -7591355, -26606786, -10995653, -31287226, 34478924, -23793046,
+-16559783, 31950798, 8473970, 52927956, 26489748, 6354941, 29154238, -34139084, -10762114, -35035660,
+-32727114, -2782602, -402653, -41871636, 54322748, -2647311, -84989888, 44071196, 9744207, -17892834,
+-14095009, 27417998, 14566382, -15905875, -4742718, -39370892, -16942572, 17445620, -34700116, 1862942,
+5936182, -9948755, -23205708, -15065672, 30709554, 13074417, -6428493, -43776992, 14850386, 28713466,
+15952582, -33655900, -23132694, 967978, 37287296, 4213900, -9250823, 6832756, 1028108, 20134270,
+-50117436, -42155104, 53289268, 9406515, 22187802, -49677204, 10894721, -1032403, 37091336, -32088238,
+-6590091, -49555868, 17625472, 38278896, 8393440, -21013664, 14366129, 55094228, -24168854, -23545010,
+-20255602, 9629854, 1891396, 49004504, -14352170, 6009196, -25664578, 10932839, -28173374, 2026151,
+17157858, -31283468, 32324998, 13733695, -24879134, -33117956, -23793046, 3170760, 31901406, -54020488,
+-15207405, 63221920, 56377352, 28223304, 13442174, 12547210, 14028974, -9262097, -8183524, -19209242,
+3024194, 5760625, 5610301, -1405528, -31464394, 15134928, 7036230, -22591528, -18224620, -9895068,
+-10321880, 8152922, -7493108, -9625022, 3578782, -890669, -16233903, 21822192, -14842333, -5110474,
+-15434502, -14794552, 11565810, -6252936, -1209570, 5611912, 7910793, -1631551, -20753818, 5390184,
+34904664, 7504382, -52148420, -3037079, -10497974, -16136729, 12265353, 12458626, 28609314, 13793287,
+-33582888, 38242388, -8199093, -25358024, 79478904, -14968498, -5550709, -24906516, -61112016, 29586956,
+32817846, 11647414, 13140989, -51866024, 16690780, -2586644, -11678016, -7567196, 3374234, -2969433,
+9596031, 12581570, 3491809, -5006858, -13918378, 19609746, 21568252, 32215476, -30353608, -77912856,
+-127658240, 8096550, 131210712, 9712532, 277941824, 277607904, 101380552, 278103424, 162358896, -51828444,
+-6031745, -30348776, -215721712, -182449680, -126938296, -227640240, -214977072, -66859220, -137009456, -123141008,
+22080964, 29525216, -33563020, 33033668, 55111408, -8930311, -1786706, 111039936, 73708080, 20485920,
+81730008, 155786512, 70354784, 80175768, 197344624, 69063072, 27357868, 164954128, 161349568, -6845641,
+98422936, 179189792, -12230993, 32870458, 101640400, -22295712, -109273096, 27588722, -36014376, -202095392,
+-187093072, -177784800, -321783232, -470911488, -332511552, -460994400, -602850752, -437514912, -357588224, -479588928,
+-315460512, -173039408, -165894192, -64977488, 95526512, 223822016, 260847328, 355200768, 503006176, 482404288,
+452136032, 502134304, 496818208, 363852448, 247115776, 142944560, -27574764, -27306328, 0, 0,
+0, 0, 0, },
},
{
{
-2313914,
-1927904, -5349382, 1587527, 2429341, 27917, -2440078, 324807, -826781, -2805688, 7335268,
-2345589, 2139431, 4487167, -2088428, -465467, 420370, -3085397, 5737003, -2183454, 597000,
--3279745, -700617, 3382824, 29528, 252329, -1219771, 466541, -4053912, 4246649, -3253975,
-951335, 2710124, -577136, -2592013, 4911832, -60130, -4220879, -510564, -4885526, 2048699,
--5196911, -2491081, 529355, 1159641, 803159, 1119913, 2338610, 3609383, -427886, 2384781,
-2505040, 1815697, -67646, -2026151, 2518998, 688269, 1548336, -2685428, 4915590, 3955128,
--386010, -2535105, -408022, -200790, -955093, -2917357, -5924371, -979789, 3772055, 3449933,
-1532767, 7355669, -1255741, 218506, -2921652, 10228465, -406411, -570694, 3279208, -1360968,
-3738232, -2011655, -4784057, 1644436, 4806069, 665720, -754304, 6337761, 203474, 210453,
--2198487, -1272921, 9928354, 1322313, -6787659, -5063230, 6982543, -711354, 7235946, 434865,
--1433982, -766115, 5441187, 1002875, 11478837, 4993437, 3106335, -716186, 2485176, 5122822,
--1371168, -3995930, -4984310, -1045825, 4303557, 3677029, 5767604, 1533840, -3411278, -3543885,
--1557463, 2327336, -932008, 1217086, -825707, -5374078, -4207994, 1455994, 3639448, 2199023,
--2090039, -2319819, -358630, 5538897, 2673080, -803696, -1528472, 2457795, 1510755, 934155,
--3214246, 1245541, 2398202, -591095, 3794604, 4661114, -9068287, 2843268, 1196148, 5211943,
-2711198, 4661650, 9530532, -7705172, 1611150, -1548873, -49929, -9943923, 860067, 6283001,
--9163313, -1674500, 5870684, 16172699, 2144263, 92342, 994822, -9801652, -459562, 7584912,
-6415071, 392453, -335544, 824634, 3313567, 5975374, 5946919, 6780680, -3040837, 1647120,
--505732, 2762738, 607201, 1869385, -10248329, -2538326, 1495186, 1079647, -5697274, 76236,
-3757560, -4204773, 3461207, 3525095, 5952825, 3091303, -2347737, 3284576, 6678674, -3469260,
--6096169, 2337536, 1389422, 1497333, 3178813, -2365453, -4897874, -6975027, 5928129, -734976,
--1343788, -2007897, 2648384, 302258, 3905736, 7991324, 1629403, 967978, -288837, -1329829,
--5767068, 9746891, 2413235, -434865, 4883915, 102542, -4664872, -4219806, -5072357, -7426536,
-4184909, -195421, -3423089, -1498944, -1714766, 1482838, -2837900, -5144297, 1212791, -3388192,
-8660802, 11308112, 9097814, -6376953, -184147, -540092, 2470143, -3602404, 7138773, 4310537,
--967441, 3293703, 5418101, 290984, 1340030, 1728188, 5256503, -652835, 1971390, 6095096,
-659814, -233539, -2712809, 4332012, -6782290, 2572686, -944356, -1574106, 4529580, -4558571,
--557272, -35433, -5917928, 2258079, -1210107, 2532957, -217970, -2763275, 1758252, 1661079,
--357556, 5021354, -432718, 5818070, -162135, -4270808, -1879048, -25770, -2855617, 5127654,
-2683818, 4347581, 5090073, -2602750, -5414880, -3728569, -284005, -1324997, -1494649, 3877282,
-4817343, -1307818, -15266461, -3415036, -4859756, -8027294, 2633352, 2287070, -1128503, 3946538,
--682363, 3352759, 4373888, -1848983, -5445482, -6520834, -2702608, -6064494, 323733, 826244,
--2867965, 3661997, -3204583, 2027761, -1556926, -3402688, -9581535, -3525095, 664109, 1615982,
-2295660, -3362960, 2318209, 3918084, 1068910, 8719320, 1949915, -85362, 6457484, -4563403,
-3645890, 766652, -2433099, -3046743, 4085588, 711891, 1149441, -9998147, -2079301, -3212099,
-9966472, 4502200, 3445638, 4271882, 4446365, 3841312, 4948339, -2597382, -1355062, 3326989,
-4839355, -530428, 5683853, -3039763, 1025960, -1118839, 4748087, 7728257, -12091944, 3291556,
--3243237, 605590, -5912023, -2587181, 548145, -1340030, -2795487, -4186519, -2434173, 5993090,
-3534758, 2236604, -1202591, 587874, 565325, 7729331, -6124087, 7759396, -1082332, 4286914,
-7773354, -4778151, 6012418, -3662533, 3061775, 1327682, 9161165, 4220879, -5175973, -8288750,
-1880659, -6168110, 5167920, -1128503, 6750078, -4878546, -855772, -3862786, 2309619, 1703491,
-1913408, -301721, -747324, -7154879, -3256122, 6286222, -4851166, -744103, 3920232, 435402,
--3799436, 1494649, 322659, -573915, -3295314, 6913287, 2095407, -9130564, -4275103, -7296613,
--1352378, -6397354, -11633456, -2289755, 5043366, 14682883, 3099893, 1580548, 6706592, 245350,
--5320928, -4162360, 3709778, 1950452, 2470680, 4647692, -10215043, -1928440, -9436043, -1434519,
-2434710, -3015067, -8865886, 1632088, 3300682, -979253, 16563541, 3809636, 12031814, -5682779,
--645856, -4063039, -780610, 12572443, -10650982, 3549254, 1376537, 16507707, 8982924, 10941429,
-2174864, -2782602, 5362804, -3656091, -13561896, 2585034, 966905, 1592896, 11020349, 1020592,
--6165426, -559956, 488553, 3446175, 3957812, -302795, -1203128, 4453881, -4956393, -1381369,
--2396055, -1271310, 1567126, 267899, 9774272, 1455994, 7729331, 8730595, 2632815, 7725573,
--318901, 2644626, 4878009, -4859219, -7215008, 1091459, 7769059, -11839077, 3825742, -9027484,
--8362838, -5075041, -2142115, -7882339, -7613904, -8067023, -4031364, -1799054, 5802501, 430034,
-6892349, 1333587, -5324686, 8784819, -8613020, -2939368, -3513820, -3170223, -4585415, -5623186,
-8742943, 7454453, -3863860, -8243116, -9578314, -4633196, -6139656, -2310156, -2924336, -10045392,
--9237401, -6641630, -1795296, -39192, -2039573, 7964480, 32212, 4380867, 4945655, 7190312,
-305480, 13515188, 15484431, 200790, 3934190, 4191888, -2756295, 7620883, 3049427, -14083735,
--1306207, -4548371, 6979, 11777337, 3633006, -11185705, -3979287, 5667210, 4250407, 1179505,
-14013941, -5733245, 5072357, 6544457, 5674726, 4332549, 6741488, -12719546, 3773666, -4712116,
-6731288, 701153, 2245194, -9471477, 6083821, 5639829, -2487860, 5462662, -2122251, 1786706,
--1430224, -4793184, -68183, -2949032, 1729261, -3732864, 3456912, 1903207, 10933913, 9760850,
--4866198, 3658239, -12529493, 9343164, -5235565, 5801964, 6994891, 9839233, -3170223, 9879499,
-806917, 8540542, -7601019, -2024540, 6860674, -3659849, 11730629, -3752191, -8215736, 15517180,
-21168284, 4675609, -8280160, 5815386, -4333085, 8658117, 5117991, -1908039, -8762270, -5800354,
--14945949, 3919158, 6507413, -13281113, -1471026, 7690139, 2130841, -665183, 447750, -1649268,
--7035694, 1719061, 9068823, 334471, 2103997, 3190087, 12812961, -8349954, -10201, 9123584,
--8140574, 12263205, 911070, 17248052, -14098767, -13037373, 7468948, 571231, -1363652, 3640522,
--789200, 4727686, 3401614, 9519795, 9659918, -7693897, 1932735, -5085242, -2379949, 5605469,
--34897, -3140695, -514859, 67109, 9477919, -16687022, 13525926, -4219806, -4445291, 8935143,
--6148246, 6986301, -8461622, -6327561, 172872, -8610336, 199716, -10551124, -7898982, -3605625,
--7409893, -11509975, -2325188, 4032438, 14067629, 2150705, -8392366, -15789910, -3214783, 4713727,
--2691334, 16659104, 5330592, -6110128, -11854647, -15034533, -28119150, -2484102, -3082176, 10586558,
-7996692, -5975910, 744640, -4685273, -2429341, 9883257, -265751, 285078, -1238024, 11212012,
-1934346, -3732864, -586800, -732292, 3084324, -10777147, -3320547, -4460861, 16496969, 3478387,
--17430052, 4080219, -9073118, -5514738, 2503966, -16652662, 4970888, 11156178, 10273025, 7514582,
-1888175, 2654827, -615791, 1056025, -10308458, 2977486, -16093779, -3877282, 9018894, 2437931,
-9225053, 8221641, 7473243, -6405944, -11992086, -11681237, -8215199, 962610, 2897492, 3443490,
-5036923, -1495722, 3051038, 7043210, 8249559, 14565845, 16900160, 12199318, 20891794, -9771587,
-14858439, -12711493, -9933186, 10985453, 14081050, 16587164, -17076254, -96637, 4360466, -12676596,
-6058588, -5569499, -8926016, 10251013, -13264470, 14471355, -13630079, 13558138, -9756555, -3613141,
--815507, -17908404, -2395518, 19771346, -4952098, -14107894, 3131031, 9188009, -10177999, 5115843,
-21494164, 11502996, 4465156, 9466108, -11150272, 7560753, -6625524, -19450834, -5727339, -5078799,
-1635846, 8836895, 11112154, -4820564, -8309151, 7779260, 299037, 5954972, 3980361, -3165391,
-1355062, -7736847, 1496796, 2466922, 246961, 2545842, 17965312, -2170569, 2173254, 5038534,
-1539209, 2181844, -8376797, -9747428, 7457137, -11582453, -15022185, -16481937, -13032541, -21954800,
-8137353, 27404576, 14153528, -5703717, -21055540, -7965017, 1891933, 2541010, -3666292, 10121090,
-7675644, -8298414, -3512747, -1512902, -13719736, 19364934, -8472360, 6602439, -1087164, -5133560,
--16807280, 5236639, 4199405, -2629057, 2700461, 7323993, -2230162, 18921478, -3719979, -3427921,
-16804060, -2280091, -10963441, -10861972, -19396610, 2268817, -3781719, -6728067, -3688303, -15221901,
--5463736, -14301167, 2183454, -12666395, 11687143, -7412577, 516470, 2827162, 2119030, 5721434,
--5050345, -15530602, 7271380, -2396055, 4511863, -4058744, -678605, -346819, 15181099, 20598664,
-6685654, -7687992, 8286066, 6722698, 9405442, -4727149, -6289443, 9511205, 6060736, 12888123,
-4255776, 1688459, 1195612, 1282048, 13578539, 9124658, 9250823, 40359272, 2323041, -12416214,
-35951024, 16276852, 16638166, 28865402, 31317290, 7312182, 10886131, 6261526, 33935612, 388695,
--10120017, 12774843, 4392141, -14030048, -12921946, 11217381, 13561896, 22086332, -864362, 360240,
-1762010, 1854352, -12444668, 14288282, 12377559, 3424700, -9296994, 15171435, -3490735, -2297271,
--20447802, -6245956, -76236, -2861522, -9985799, 6112812, -9138080, -7692824, -4625680, 1595044,
--5735392, -11712376, -12252468, 13230647, -8839043, 14134737, 8899172, 11270531, 5996848, -14936823,
-1410897, -23008140, -7652021, -13422310, 6721087, -16660178, -5614596, -4690105, 2679523, 13172128,
-4355097, -4606353, -21438866, 7349763, 11622182, -3077881, 3554622, -15078556, 13918378, -1960116,
--5121749, 25368224, 14274861, -12942347, -22985592, 6880001, 7272454, -7452842, 15408195, -16991428,
-18455474, -13368623, -7356742, 5598490, 4492536, 46665356, 18622978, 6777996, -28981902, -1028108,
--6646999, -15766288, -4200478, -5919539, -4821101, -1983738, -24023900, -715112, -8880382, 55835,
-12194486, -13161390, 15732465, -5288179, -16661252, -15433428, 12560095, 9102646, -3419331, -8630737,
-15944529, -8631811, -7502234, 11972221, 86973, 3515431, -12130598, -667867, -6922414, 15427523,
--1859721, 22237730, -7877507, 3141232, 7334194, -875100, 1455994, 6630893, -13857175, -2542621,
-19152870, 1291175, 5805185, -362925, -14182519, 6233608, -9588514, 5187784, 17099338, 20860120,
-23898272, 24034636, -4020626, 8534637, 1113470, 13192529, 30607010, -31338228, 26423176, -12563853,
-4053376, -10557566, -25418690, -4130148, 4324495, 1028108, 5124970, -17686676, -3167539, -3068754,
--26825828, -19544248, 9727027, 11567421, 4349728, 8204462, -14064407, -5841156, -10168335, 29334090,
-6187974, 1540820, 20739324, 13090523, 10085120, 10474888, 7730405, -14300094, 10158135, 5217849,
--5347771, 9366250, -8331163, -6662568, 14209899, -5609228, 8672076, 20633560, -64425, 4721780,
--1119913, 2259153, -5082557, -10551124, -15428596, -22692996, 8900783, -19007914, 6692096, 9006010,
-9230422, 1308354, -317828, -1503239, -16461536, -5948530, 6840273, -3867618, 7032472, 21356188,
--7221451, 16858284, 5681705, 3606699, -2197950, -3246459, -15802258, 1796907, -20998096, -3984119,
-18942416, -7868380, 1196148, -30304216, 13761612, -1106491, 2117419, -17052630, -22750442, 7493644,
-6690486, 20426328, -48381196, -11911018, -28729036, 9700721, -25796110, -8652748, -29234768, 7833484,
--15232102, -11693048, -2473364, -24834574, -9007620, -26605712, -13415330, -30805116, 6681359, -28496034,
--11242614, -14790257, -8267812, -7802882, -6624450, -27191974, -15528991, -20677046, -10589779, -5945309,
-11796128, -1664300, 8815420, -16904992, -2719788, 1016297, -19486804, 3812857, -1333587, 1691143,
-5145908, -19731616, -1089311, 7315940, -2421825, 8235063, 16426639, 29740502, -24692304, 1511292,
-33046016, 133681, 16206522, -11635603, 20447802, 3659312, -4943508, -27606440, -16259136, 22634478,
-13977434, 22022444, 666794, -15906411, 5477694, 7542500, 15668041, -30601642, -142271, 4615479,
--16976932, -7085086, -7793755, -12657805, -24834574, 30673046, -2499671, -13788456, 20585778, -34854732,
--406948, -7024419, 14946486, -7822209, -21533892, 18504330, -37751152, -32660542, -26951456, 15071577,
--8192650, 555125, -14865419, -14154065, -16452946, 8697846, 7500087, 25809532, 11941083, 4867272,
-23965918, -6961068, 8362302, -9305584, 7095286, 3877282, 13955959, 22937272, 11641509, -5498632,
--15072114, -9222369, -3687766, 12522514, -5166846, 2965138, -375810, -6824703, 11544335, -1587527,
-9236864, 6773701, -21110302, 15632607, 29159606, 3804804, 24109798, 23596550, 9776956, 7120519,
--1413581, 11918534, -9674951, -30612380, -11334419, 20749524, -1668595, -12064026, 9222369, 29847876,
--9382893, 1058173, -25058986, 20806970, 17013976, -2863133, 3075197, -11589432, 47078212, -33382096,
--32917166, -27088358, 54212688, -10677826, 29489782, 55289116, -19894826, 27375584, 9758703, -32120450,
-29264296, 6372121, -16376173, 24457692, 8099235, 23097798, -1774895, -16310675, 15479599, 7619272,
--1492501, 7141457, -6744173, -17302812, -12956843, -7336878, -18093086, -10439992, -4701379, 14537391,
--12946105, -4969814, -17846662, 5327907, -185220, 4509716, 20748988, -11442330, 3789235, -10452340,
--8615168, 14796699, -11861089, -20916490, -31091806, 35944044, 13399761, -6353331, 21682606, -19412178,
--20574504, -9323837, -3671123, 5599564, -1682017, -17814988, -16636019, -13407277, -36424008, -19210314,
--20657182, 8996346, 9298067, 1459215, 17558364, 6275484, -23256174, -15208479, 23993298, -20469814,
--160524, 26402774, -7157026, -37753300, 23364622, -11864310, -2373506, 5253819, 11489038, -26694296,
-15863462, -7268696, 27055072, 19271518, -44149580, -5122286, 4278325, -26288422, -4720706, -4012036,
-31952410, 23672786, 21209086, 27230630, -1408212, -18574122, -15018964, -14747844, 292058, -41544680,
-4590247, 36004172, -33054068, -58693948, 5559835, -21869974, 43001748, -153008, 980863, 29234232,
--13793824, 6059662, -1796370, -7871602, 24850680, -7292318, 12355547, 42496016, -31733366, -17930952,
--28952912, 14088566, 1949378, 28315108, -16730508, 11013370, 1133871, 25677462, 14915885, -12989592,
--8768713, 9444633, -4979478, -1583769, -18558016, -18563386, 9307731, -4600984, -5421323, -10919417,
-23493472, -9636833, -9283035, 38567196, 42443940, 26359288, -35186520, -4195110, -10280541, 12773770,
-53962504, -7888245, -37510632, -4091493, -12279311, 20345796, -26291106, 4413079, -21705154, 19960324,
-10555956, -20139638, 34532612, 53805740, 831613, -2030446, -18957986, -18033494, 2370822, 3481608,
--9759239, 48615808, -5143224, 36332740, 28010702, -36012228, -1996623, -11878806, -39759048, 10086731,
-8098161, 21492554, 35438312, -871342, -11368242, 12173011, 12184822, 28821378, 10954851, 2782065,
-22501870, 24944096, 7429757, -5604396, 20477330, 9715216, 24802900, 5616207, 6274947, 16282758,
-26263188, -4590783, -23113904, -25241522, -9570798, -8817031, 41902776, 23651312, 65386044, -3211562,
--35166120, 29533268, -11715060, -11681774, -11696270, -22897008, 1693828, 12580496, -2229088, -12948253,
-45654964, -9723806, 54105312, -15633144, 28113782, 2268280, -11640435, -31101468, -46022184, 40011916,
--6589554, -9184251, -15374372, -19359566, 12869333, 48737140, -28584618, -19813222, 4925254, 8100845,
--4704600, 34265248, 28258738, 26786100, 10255845, 12814572, 24167780, 13538811, -7467875, -14637785,
--30242476, -5830418, 18102750, 5100811, 4671314, -12368432, -28534152, -9343164, -3160022, 29381872,
-1400696, -4280472, 23810224, -4286378, 7306813, 4234838, -49823768, 12428562, 14727443, -9453223,
--20726438, 3592203, -27660664, -15091978, -42899208, 12812424, -35655208, -73074040, 9428527, -1362042,
-52153788, -2069637, 18359374, 41997800, -5955509, -11129871, 19723564, -470299, -35931696, -12884902,
-5750425, 6245420, 28068148, 11557220, 25042344, 21374978, -14332306, -10707353, 10982768, 31703838,
--12333535, -5335423, -28040768, -18008262, 7480760, -36093296, 10383620, -39857296, 5872294, -6429566,
--1507534, -10030359, 38351912, 42099808, 96431144, 11988864, -54987928, -40258340, -30709554, -34140160,
-67239320, 91193432, 30016990, -8159364, -29277718, 1489817, -35302484, 38456600, 35094716, 11117523,
-4347581, -22048752, -4148402, 42241004, 8817031, 17227114, 13179644, 44286480, 35887136, -13808857,
--33681672, -42709692, -30181808, -3920232, 10842108, 39828844, 22413824, -7839926, 20066624, -29545616,
--11567421, -66926328, -12090870, 66615480, 49649820, -9946071, 132584032, 42461656, 2179159, -73252280,
--14423574, -5982890, -19284940, 19113678, 8257612, 16222628, 25811680, -59788092, -67262944, -32276142,
--46461884, -6054830, 11664594, 54431732, -35976792, 19859392, 80760952, 42142756, 10230612, 23256174,
-11975443, -52157544, -91135448, 41270876, -29368450, 13917842, -20547660, -89156008, -21260624, 49079128,
-94605784, 82932600, 199940928, 104043432, 70535176, 61588220, 27681602, -12429635, -102235256, -128500592,
--190778160, -146803056, -150321712, -58489940, -839666, 54990612, 104316704, 85269056, 88462904, 59854128,
-82899848, 63895692, 91799560, 41895260, 32471026, 13560822, -27154394, -40804872, -60283088, -38337952,
--127493960, -56521768, -121146528, -89165128, -138427328, -84695144, -129466424, -49622440, -66748624, -25806848,
-4447439, 57425860, 160950672, 151998352, 216138864, 143258096, 96016144, 125458680, 174772960, 151669792,
-126644088, 84594752, 2708514, -101126616, -99828464, -123179128, -223651840, -247721360, -268104208, -269902176,
--294455456, -258973648, -220291024, -199029328, -135946992, -8399882, 111380848, 205813216, 279080544, 348654720,
-387223520, 247036848, 212924608, 56009596, -22849762, -17192754, 0, 0, 0, 0,
-0, 0, 0, },
+1927904, -5349382, 1587527, 2429341, 27917, -2440078, 324807, -826781, -2805688, 7335268,
+2345589, 2139431, 4487167, -2088428, -465467, 420370, -3085397, 5737003, -2183454, 597000,
+-3279745, -700617, 3382824, 29528, 252329, -1219771, 466541, -4053912, 4246649, -3253975,
+951335, 2710124, -577136, -2592013, 4911832, -60130, -4220879, -510564, -4885526, 2048699,
+-5196911, -2491081, 529355, 1159641, 803159, 1119913, 2338610, 3609383, -427886, 2384781,
+2505040, 1815697, -67646, -2026151, 2518998, 688269, 1548336, -2685428, 4915590, 3955128,
+-386010, -2535105, -408022, -200790, -955093, -2917357, -5924371, -979789, 3772055, 3449933,
+1532767, 7355669, -1255741, 218506, -2921652, 10228465, -406411, -570694, 3279208, -1360968,
+3738232, -2011655, -4784057, 1644436, 4806069, 665720, -754304, 6337761, 203474, 210453,
+-2198487, -1272921, 9928354, 1322313, -6787659, -5063230, 6982543, -711354, 7235946, 434865,
+-1433982, -766115, 5441187, 1002875, 11478837, 4993437, 3106335, -716186, 2485176, 5122822,
+-1371168, -3995930, -4984310, -1045825, 4303557, 3677029, 5767604, 1533840, -3411278, -3543885,
+-1557463, 2327336, -932008, 1217086, -825707, -5374078, -4207994, 1455994, 3639448, 2199023,
+-2090039, -2319819, -358630, 5538897, 2673080, -803696, -1528472, 2457795, 1510755, 934155,
+-3214246, 1245541, 2398202, -591095, 3794604, 4661114, -9068287, 2843268, 1196148, 5211943,
+2711198, 4661650, 9530532, -7705172, 1611150, -1548873, -49929, -9943923, 860067, 6283001,
+-9163313, -1674500, 5870684, 16172699, 2144263, 92342, 994822, -9801652, -459562, 7584912,
+6415071, 392453, -335544, 824634, 3313567, 5975374, 5946919, 6780680, -3040837, 1647120,
+-505732, 2762738, 607201, 1869385, -10248329, -2538326, 1495186, 1079647, -5697274, 76236,
+3757560, -4204773, 3461207, 3525095, 5952825, 3091303, -2347737, 3284576, 6678674, -3469260,
+-6096169, 2337536, 1389422, 1497333, 3178813, -2365453, -4897874, -6975027, 5928129, -734976,
+-1343788, -2007897, 2648384, 302258, 3905736, 7991324, 1629403, 967978, -288837, -1329829,
+-5767068, 9746891, 2413235, -434865, 4883915, 102542, -4664872, -4219806, -5072357, -7426536,
+4184909, -195421, -3423089, -1498944, -1714766, 1482838, -2837900, -5144297, 1212791, -3388192,
+8660802, 11308112, 9097814, -6376953, -184147, -540092, 2470143, -3602404, 7138773, 4310537,
+-967441, 3293703, 5418101, 290984, 1340030, 1728188, 5256503, -652835, 1971390, 6095096,
+659814, -233539, -2712809, 4332012, -6782290, 2572686, -944356, -1574106, 4529580, -4558571,
+-557272, -35433, -5917928, 2258079, -1210107, 2532957, -217970, -2763275, 1758252, 1661079,
+-357556, 5021354, -432718, 5818070, -162135, -4270808, -1879048, -25770, -2855617, 5127654,
+2683818, 4347581, 5090073, -2602750, -5414880, -3728569, -284005, -1324997, -1494649, 3877282,
+4817343, -1307818, -15266461, -3415036, -4859756, -8027294, 2633352, 2287070, -1128503, 3946538,
+-682363, 3352759, 4373888, -1848983, -5445482, -6520834, -2702608, -6064494, 323733, 826244,
+-2867965, 3661997, -3204583, 2027761, -1556926, -3402688, -9581535, -3525095, 664109, 1615982,
+2295660, -3362960, 2318209, 3918084, 1068910, 8719320, 1949915, -85362, 6457484, -4563403,
+3645890, 766652, -2433099, -3046743, 4085588, 711891, 1149441, -9998147, -2079301, -3212099,
+9966472, 4502200, 3445638, 4271882, 4446365, 3841312, 4948339, -2597382, -1355062, 3326989,
+4839355, -530428, 5683853, -3039763, 1025960, -1118839, 4748087, 7728257, -12091944, 3291556,
+-3243237, 605590, -5912023, -2587181, 548145, -1340030, -2795487, -4186519, -2434173, 5993090,
+3534758, 2236604, -1202591, 587874, 565325, 7729331, -6124087, 7759396, -1082332, 4286914,
+7773354, -4778151, 6012418, -3662533, 3061775, 1327682, 9161165, 4220879, -5175973, -8288750,
+1880659, -6168110, 5167920, -1128503, 6750078, -4878546, -855772, -3862786, 2309619, 1703491,
+1913408, -301721, -747324, -7154879, -3256122, 6286222, -4851166, -744103, 3920232, 435402,
+-3799436, 1494649, 322659, -573915, -3295314, 6913287, 2095407, -9130564, -4275103, -7296613,
+-1352378, -6397354, -11633456, -2289755, 5043366, 14682883, 3099893, 1580548, 6706592, 245350,
+-5320928, -4162360, 3709778, 1950452, 2470680, 4647692, -10215043, -1928440, -9436043, -1434519,
+2434710, -3015067, -8865886, 1632088, 3300682, -979253, 16563541, 3809636, 12031814, -5682779,
+-645856, -4063039, -780610, 12572443, -10650982, 3549254, 1376537, 16507707, 8982924, 10941429,
+2174864, -2782602, 5362804, -3656091, -13561896, 2585034, 966905, 1592896, 11020349, 1020592,
+-6165426, -559956, 488553, 3446175, 3957812, -302795, -1203128, 4453881, -4956393, -1381369,
+-2396055, -1271310, 1567126, 267899, 9774272, 1455994, 7729331, 8730595, 2632815, 7725573,
+-318901, 2644626, 4878009, -4859219, -7215008, 1091459, 7769059, -11839077, 3825742, -9027484,
+-8362838, -5075041, -2142115, -7882339, -7613904, -8067023, -4031364, -1799054, 5802501, 430034,
+6892349, 1333587, -5324686, 8784819, -8613020, -2939368, -3513820, -3170223, -4585415, -5623186,
+8742943, 7454453, -3863860, -8243116, -9578314, -4633196, -6139656, -2310156, -2924336, -10045392,
+-9237401, -6641630, -1795296, -39192, -2039573, 7964480, 32212, 4380867, 4945655, 7190312,
+305480, 13515188, 15484431, 200790, 3934190, 4191888, -2756295, 7620883, 3049427, -14083735,
+-1306207, -4548371, 6979, 11777337, 3633006, -11185705, -3979287, 5667210, 4250407, 1179505,
+14013941, -5733245, 5072357, 6544457, 5674726, 4332549, 6741488, -12719546, 3773666, -4712116,
+6731288, 701153, 2245194, -9471477, 6083821, 5639829, -2487860, 5462662, -2122251, 1786706,
+-1430224, -4793184, -68183, -2949032, 1729261, -3732864, 3456912, 1903207, 10933913, 9760850,
+-4866198, 3658239, -12529493, 9343164, -5235565, 5801964, 6994891, 9839233, -3170223, 9879499,
+806917, 8540542, -7601019, -2024540, 6860674, -3659849, 11730629, -3752191, -8215736, 15517180,
+21168284, 4675609, -8280160, 5815386, -4333085, 8658117, 5117991, -1908039, -8762270, -5800354,
+-14945949, 3919158, 6507413, -13281113, -1471026, 7690139, 2130841, -665183, 447750, -1649268,
+-7035694, 1719061, 9068823, 334471, 2103997, 3190087, 12812961, -8349954, -10201, 9123584,
+-8140574, 12263205, 911070, 17248052, -14098767, -13037373, 7468948, 571231, -1363652, 3640522,
+-789200, 4727686, 3401614, 9519795, 9659918, -7693897, 1932735, -5085242, -2379949, 5605469,
+-34897, -3140695, -514859, 67109, 9477919, -16687022, 13525926, -4219806, -4445291, 8935143,
+-6148246, 6986301, -8461622, -6327561, 172872, -8610336, 199716, -10551124, -7898982, -3605625,
+-7409893, -11509975, -2325188, 4032438, 14067629, 2150705, -8392366, -15789910, -3214783, 4713727,
+-2691334, 16659104, 5330592, -6110128, -11854647, -15034533, -28119150, -2484102, -3082176, 10586558,
+7996692, -5975910, 744640, -4685273, -2429341, 9883257, -265751, 285078, -1238024, 11212012,
+1934346, -3732864, -586800, -732292, 3084324, -10777147, -3320547, -4460861, 16496969, 3478387,
+-17430052, 4080219, -9073118, -5514738, 2503966, -16652662, 4970888, 11156178, 10273025, 7514582,
+1888175, 2654827, -615791, 1056025, -10308458, 2977486, -16093779, -3877282, 9018894, 2437931,
+9225053, 8221641, 7473243, -6405944, -11992086, -11681237, -8215199, 962610, 2897492, 3443490,
+5036923, -1495722, 3051038, 7043210, 8249559, 14565845, 16900160, 12199318, 20891794, -9771587,
+14858439, -12711493, -9933186, 10985453, 14081050, 16587164, -17076254, -96637, 4360466, -12676596,
+6058588, -5569499, -8926016, 10251013, -13264470, 14471355, -13630079, 13558138, -9756555, -3613141,
+-815507, -17908404, -2395518, 19771346, -4952098, -14107894, 3131031, 9188009, -10177999, 5115843,
+21494164, 11502996, 4465156, 9466108, -11150272, 7560753, -6625524, -19450834, -5727339, -5078799,
+1635846, 8836895, 11112154, -4820564, -8309151, 7779260, 299037, 5954972, 3980361, -3165391,
+1355062, -7736847, 1496796, 2466922, 246961, 2545842, 17965312, -2170569, 2173254, 5038534,
+1539209, 2181844, -8376797, -9747428, 7457137, -11582453, -15022185, -16481937, -13032541, -21954800,
+8137353, 27404576, 14153528, -5703717, -21055540, -7965017, 1891933, 2541010, -3666292, 10121090,
+7675644, -8298414, -3512747, -1512902, -13719736, 19364934, -8472360, 6602439, -1087164, -5133560,
+-16807280, 5236639, 4199405, -2629057, 2700461, 7323993, -2230162, 18921478, -3719979, -3427921,
+16804060, -2280091, -10963441, -10861972, -19396610, 2268817, -3781719, -6728067, -3688303, -15221901,
+-5463736, -14301167, 2183454, -12666395, 11687143, -7412577, 516470, 2827162, 2119030, 5721434,
+-5050345, -15530602, 7271380, -2396055, 4511863, -4058744, -678605, -346819, 15181099, 20598664,
+6685654, -7687992, 8286066, 6722698, 9405442, -4727149, -6289443, 9511205, 6060736, 12888123,
+4255776, 1688459, 1195612, 1282048, 13578539, 9124658, 9250823, 40359272, 2323041, -12416214,
+35951024, 16276852, 16638166, 28865402, 31317290, 7312182, 10886131, 6261526, 33935612, 388695,
+-10120017, 12774843, 4392141, -14030048, -12921946, 11217381, 13561896, 22086332, -864362, 360240,
+1762010, 1854352, -12444668, 14288282, 12377559, 3424700, -9296994, 15171435, -3490735, -2297271,
+-20447802, -6245956, -76236, -2861522, -9985799, 6112812, -9138080, -7692824, -4625680, 1595044,
+-5735392, -11712376, -12252468, 13230647, -8839043, 14134737, 8899172, 11270531, 5996848, -14936823,
+1410897, -23008140, -7652021, -13422310, 6721087, -16660178, -5614596, -4690105, 2679523, 13172128,
+4355097, -4606353, -21438866, 7349763, 11622182, -3077881, 3554622, -15078556, 13918378, -1960116,
+-5121749, 25368224, 14274861, -12942347, -22985592, 6880001, 7272454, -7452842, 15408195, -16991428,
+18455474, -13368623, -7356742, 5598490, 4492536, 46665356, 18622978, 6777996, -28981902, -1028108,
+-6646999, -15766288, -4200478, -5919539, -4821101, -1983738, -24023900, -715112, -8880382, 55835,
+12194486, -13161390, 15732465, -5288179, -16661252, -15433428, 12560095, 9102646, -3419331, -8630737,
+15944529, -8631811, -7502234, 11972221, 86973, 3515431, -12130598, -667867, -6922414, 15427523,
+-1859721, 22237730, -7877507, 3141232, 7334194, -875100, 1455994, 6630893, -13857175, -2542621,
+19152870, 1291175, 5805185, -362925, -14182519, 6233608, -9588514, 5187784, 17099338, 20860120,
+23898272, 24034636, -4020626, 8534637, 1113470, 13192529, 30607010, -31338228, 26423176, -12563853,
+4053376, -10557566, -25418690, -4130148, 4324495, 1028108, 5124970, -17686676, -3167539, -3068754,
+-26825828, -19544248, 9727027, 11567421, 4349728, 8204462, -14064407, -5841156, -10168335, 29334090,
+6187974, 1540820, 20739324, 13090523, 10085120, 10474888, 7730405, -14300094, 10158135, 5217849,
+-5347771, 9366250, -8331163, -6662568, 14209899, -5609228, 8672076, 20633560, -64425, 4721780,
+-1119913, 2259153, -5082557, -10551124, -15428596, -22692996, 8900783, -19007914, 6692096, 9006010,
+9230422, 1308354, -317828, -1503239, -16461536, -5948530, 6840273, -3867618, 7032472, 21356188,
+-7221451, 16858284, 5681705, 3606699, -2197950, -3246459, -15802258, 1796907, -20998096, -3984119,
+18942416, -7868380, 1196148, -30304216, 13761612, -1106491, 2117419, -17052630, -22750442, 7493644,
+6690486, 20426328, -48381196, -11911018, -28729036, 9700721, -25796110, -8652748, -29234768, 7833484,
+-15232102, -11693048, -2473364, -24834574, -9007620, -26605712, -13415330, -30805116, 6681359, -28496034,
+-11242614, -14790257, -8267812, -7802882, -6624450, -27191974, -15528991, -20677046, -10589779, -5945309,
+11796128, -1664300, 8815420, -16904992, -2719788, 1016297, -19486804, 3812857, -1333587, 1691143,
+5145908, -19731616, -1089311, 7315940, -2421825, 8235063, 16426639, 29740502, -24692304, 1511292,
+33046016, 133681, 16206522, -11635603, 20447802, 3659312, -4943508, -27606440, -16259136, 22634478,
+13977434, 22022444, 666794, -15906411, 5477694, 7542500, 15668041, -30601642, -142271, 4615479,
+-16976932, -7085086, -7793755, -12657805, -24834574, 30673046, -2499671, -13788456, 20585778, -34854732,
+-406948, -7024419, 14946486, -7822209, -21533892, 18504330, -37751152, -32660542, -26951456, 15071577,
+-8192650, 555125, -14865419, -14154065, -16452946, 8697846, 7500087, 25809532, 11941083, 4867272,
+23965918, -6961068, 8362302, -9305584, 7095286, 3877282, 13955959, 22937272, 11641509, -5498632,
+-15072114, -9222369, -3687766, 12522514, -5166846, 2965138, -375810, -6824703, 11544335, -1587527,
+9236864, 6773701, -21110302, 15632607, 29159606, 3804804, 24109798, 23596550, 9776956, 7120519,
+-1413581, 11918534, -9674951, -30612380, -11334419, 20749524, -1668595, -12064026, 9222369, 29847876,
+-9382893, 1058173, -25058986, 20806970, 17013976, -2863133, 3075197, -11589432, 47078212, -33382096,
+-32917166, -27088358, 54212688, -10677826, 29489782, 55289116, -19894826, 27375584, 9758703, -32120450,
+29264296, 6372121, -16376173, 24457692, 8099235, 23097798, -1774895, -16310675, 15479599, 7619272,
+-1492501, 7141457, -6744173, -17302812, -12956843, -7336878, -18093086, -10439992, -4701379, 14537391,
+-12946105, -4969814, -17846662, 5327907, -185220, 4509716, 20748988, -11442330, 3789235, -10452340,
+-8615168, 14796699, -11861089, -20916490, -31091806, 35944044, 13399761, -6353331, 21682606, -19412178,
+-20574504, -9323837, -3671123, 5599564, -1682017, -17814988, -16636019, -13407277, -36424008, -19210314,
+-20657182, 8996346, 9298067, 1459215, 17558364, 6275484, -23256174, -15208479, 23993298, -20469814,
+-160524, 26402774, -7157026, -37753300, 23364622, -11864310, -2373506, 5253819, 11489038, -26694296,
+15863462, -7268696, 27055072, 19271518, -44149580, -5122286, 4278325, -26288422, -4720706, -4012036,
+31952410, 23672786, 21209086, 27230630, -1408212, -18574122, -15018964, -14747844, 292058, -41544680,
+4590247, 36004172, -33054068, -58693948, 5559835, -21869974, 43001748, -153008, 980863, 29234232,
+-13793824, 6059662, -1796370, -7871602, 24850680, -7292318, 12355547, 42496016, -31733366, -17930952,
+-28952912, 14088566, 1949378, 28315108, -16730508, 11013370, 1133871, 25677462, 14915885, -12989592,
+-8768713, 9444633, -4979478, -1583769, -18558016, -18563386, 9307731, -4600984, -5421323, -10919417,
+23493472, -9636833, -9283035, 38567196, 42443940, 26359288, -35186520, -4195110, -10280541, 12773770,
+53962504, -7888245, -37510632, -4091493, -12279311, 20345796, -26291106, 4413079, -21705154, 19960324,
+10555956, -20139638, 34532612, 53805740, 831613, -2030446, -18957986, -18033494, 2370822, 3481608,
+-9759239, 48615808, -5143224, 36332740, 28010702, -36012228, -1996623, -11878806, -39759048, 10086731,
+8098161, 21492554, 35438312, -871342, -11368242, 12173011, 12184822, 28821378, 10954851, 2782065,
+22501870, 24944096, 7429757, -5604396, 20477330, 9715216, 24802900, 5616207, 6274947, 16282758,
+26263188, -4590783, -23113904, -25241522, -9570798, -8817031, 41902776, 23651312, 65386044, -3211562,
+-35166120, 29533268, -11715060, -11681774, -11696270, -22897008, 1693828, 12580496, -2229088, -12948253,
+45654964, -9723806, 54105312, -15633144, 28113782, 2268280, -11640435, -31101468, -46022184, 40011916,
+-6589554, -9184251, -15374372, -19359566, 12869333, 48737140, -28584618, -19813222, 4925254, 8100845,
+-4704600, 34265248, 28258738, 26786100, 10255845, 12814572, 24167780, 13538811, -7467875, -14637785,
+-30242476, -5830418, 18102750, 5100811, 4671314, -12368432, -28534152, -9343164, -3160022, 29381872,
+1400696, -4280472, 23810224, -4286378, 7306813, 4234838, -49823768, 12428562, 14727443, -9453223,
+-20726438, 3592203, -27660664, -15091978, -42899208, 12812424, -35655208, -73074040, 9428527, -1362042,
+52153788, -2069637, 18359374, 41997800, -5955509, -11129871, 19723564, -470299, -35931696, -12884902,
+5750425, 6245420, 28068148, 11557220, 25042344, 21374978, -14332306, -10707353, 10982768, 31703838,
+-12333535, -5335423, -28040768, -18008262, 7480760, -36093296, 10383620, -39857296, 5872294, -6429566,
+-1507534, -10030359, 38351912, 42099808, 96431144, 11988864, -54987928, -40258340, -30709554, -34140160,
+67239320, 91193432, 30016990, -8159364, -29277718, 1489817, -35302484, 38456600, 35094716, 11117523,
+4347581, -22048752, -4148402, 42241004, 8817031, 17227114, 13179644, 44286480, 35887136, -13808857,
+-33681672, -42709692, -30181808, -3920232, 10842108, 39828844, 22413824, -7839926, 20066624, -29545616,
+-11567421, -66926328, -12090870, 66615480, 49649820, -9946071, 132584032, 42461656, 2179159, -73252280,
+-14423574, -5982890, -19284940, 19113678, 8257612, 16222628, 25811680, -59788092, -67262944, -32276142,
+-46461884, -6054830, 11664594, 54431732, -35976792, 19859392, 80760952, 42142756, 10230612, 23256174,
+11975443, -52157544, -91135448, 41270876, -29368450, 13917842, -20547660, -89156008, -21260624, 49079128,
+94605784, 82932600, 199940928, 104043432, 70535176, 61588220, 27681602, -12429635, -102235256, -128500592,
+-190778160, -146803056, -150321712, -58489940, -839666, 54990612, 104316704, 85269056, 88462904, 59854128,
+82899848, 63895692, 91799560, 41895260, 32471026, 13560822, -27154394, -40804872, -60283088, -38337952,
+-127493960, -56521768, -121146528, -89165128, -138427328, -84695144, -129466424, -49622440, -66748624, -25806848,
+4447439, 57425860, 160950672, 151998352, 216138864, 143258096, 96016144, 125458680, 174772960, 151669792,
+126644088, 84594752, 2708514, -101126616, -99828464, -123179128, -223651840, -247721360, -268104208, -269902176,
+-294455456, -258973648, -220291024, -199029328, -135946992, -8399882, 111380848, 205813216, 279080544, 348654720,
+387223520, 247036848, 212924608, 56009596, -22849762, -17192754, 0, 0, 0, 0,
+0, 0, 0, },
{
-6327561,
-328028, -5092221, -1712081, 2312840, 1407676, 3224447, -4187593, 2341831, -546535, -3929895,
-4642860, -2215130, -960999, -3183645, -2645700, 3153580, -3089155, 1725503, 4360466, -419296,
-2439542, -1421097, 79994, 2024003, -584116, 4193499, -173946, -6439230, -145492, 1058173,
-2829310, -2903935, 465467, 929324, -569083, 2788508, -506806, 3889630, 3453154, -2181844,
--229244, 3512747, -7078106, -4002373, 1541893, -3591667, -805843, 1478543, -16643, 4281546,
-4736275, 1091995, 2000918, 2433636, 2530273, -747324, 705985, 2312840, 3107946, 442382,
--2132451, -4013647, -2622615, -83752, -431107, -329639, -5526549, 5031018, -1579474, 712965,
--1739462, -3380139, 1675037, -679679, 1908576, 12936978, 565325, 2183454, 1793149, -5264556,
--2747705, 7159174, 12437152, 2004139, 6609418, -2703682, 1221381, -357556, 5581847, -4473209,
--10208064, 4088272, 4704600, -5950677, 6812355, 3353296, 6203007, 1949378, 1420024, -2775086,
--954020, 285615, 4093641, 332323, -6381785, 228707, -608812, 1309428, -983548, 1065689,
-1394254, 3690988, 2596845, 833761, 1040993, 307627, 1697586, -2005213, -3288871, -7038915,
-1184874, 1459215, 391916, 5262946, -2074469, 4071092, 950798, -1735704, -3499862, -2211371,
-7255274, 1519882, 3935264, 613643, 1391569, -1516660, -16643, 421444, 1857573, -722091,
--3101503, -1578401, -6141803, 581968, 757525, 4909148, -2013803, 3758097, -1148904, 2475512,
-4661114, 4758287, 1983201, 2024003, 2399813, 3192235, 4398584, -1839857, 4570919, 186831,
-4894652, -964757, 8811125, 3170760, 2833068, -5951751, -969589, -1244467, -8032663, 4464619,
-3537443, -2365453, -10481331, -4588099, -1662152, 5191542, 6855305, 4521527, -2876018, 1619740,
--4538707, 345745, 300648, -3487514, -1882269, -9251896, 701690, -1045825, -3994320, 537945,
-484258, -1144072, -345208, 9109089, -2196876, 7441031, 1399086, -5533529, 407485, 668404,
-4117263, -1731946, 1187559, 1086627, 355945, 5709622, 2007897, 5853504, 4320737, -2856153,
-5367099, 2641405, 3990562, 438624, 1460289, -1277753, -2225867, -4687420, -5484673, 6099928,
--5606006, -4685273, -4405026, 2741263, 3393561, 940598, -8111583, -7507066, 1603097, 168577,
--1649268, 4529043, -611496, -766115, 4662187, -5134097, 991601, -4479114, -2931852, -1604170,
-31675, 7668127, 8669391, -4015258, 3386045, -6237367, -615791, -2429878, 8422431, -2475512,
--494995, 903554, -11901354, -2047626, -5885716, -1915019, -1473711, 4446902, 5865315, 2428804,
-7933342, -999117, -3635690, -3654480, 4575214, 11947525, 8324721, -4635344, -5455682, 5985037,
--5368172, 1035624, 1889249, 9789304, -3611531, -4802847, 1051193, -2975876, 1855963, 2500208,
-6200322, -6798397, -4427038, 3992709, 7494181, -693637, -3496104, -4434017, -10623602, 4008278,
--27380, 3130494, 491774, 223338, -1667521, 1867237, -2697240, 1557463, 2331094, 2116882,
--3663070, 2427730, -19679004, -6484327, -1038845, 3355980, 2259690, 4895726, -9396852, -2815351,
--423591, -9746891, -6961068, 2450279, 5900212, 3462818, 6511171, -827318, 3742527, 8669928,
-7651484, 7192997, 4148939, -2760053, -2196339, -4439923, -1963337, -4457639, 9257265, 4318053,
--1409286, -4078072, -2487323, -4160750, -6081137, -6547141, -8245801, 5012764, 3584687, -9131637,
-2180233, -441845, 6349573, 1009317, 3138547, 4150549, -8639327, -1296006, -290447, 1209570,
-4578972, 6976638, -2730526, -915902, -1989107, -5356361, 1720671, 1206349, -526670, -1351304,
-5289789, 449898, -2833068, -783832, 2549600, 3583077, -1276679, 135828, 958315, -4391067,
-3610457, 75699, -7033009, 1393180, -8607651, 2162516, 6528351, -989990, -413391, 10589779,
-4296578, 1618129, -2469606, 7757785, 3323768, 4303021, 12857521, 13467407, 776315, -2403034,
--4580583, -7603703, 2997350, 5222680, -2513630, -724239, 1060320, -1465658, -4062502, 4959614,
--4701379, 2205466, -14137422, -2240899, -3189550, -3661997, -6802692, -1637993, -571768, -34360,
--3296388, -5372467, -3742527, 432181, -2338073, -5687611, 3725347, 4628901, 812286, -4690105,
--4669703, 1738388, -3476776, 4356171, -5146982, 3483755, 1808718, -213675, -7492571, -7567733,
-2265059, -5529771, 9296457, 1396938, 7924215, -3965329, 8006356, 1251983, 5421323, 1413581,
-5218922, -4361540, -5142150, -370978, 10325101, -1214402, -5448166, -3726958, 5186173, -3070365,
--2419140, 417149, -8655970, 6105296, 10442139, -1925756, 15885473, 2833605, 8893804, -3696356,
-6758131, 4417911, 10320270, -7703024, -4882841, -2018098, 957778, 6743636, -2939368, 10411001,
--410169, 5778342, 5662378, -3325915, 2564096, 5862631, 6118718, 1145146, 1984812, 5315559,
--11235098, 1588064, 9418863, 6723772, -5877126, 7546258, -8861054, 5327907, -7761006, -4442070,
--1721208, 8218957, -1309428, 8623221, 2421288, 1618666, 884763, -605054, 3983582, 4940823,
-12091407, 1530619, 10506564, -5235029, 7815767, 9373229, 182536, -2021319, -2987150, 3454764,
--13295608, -1423245, 1890859, -5441187, -7647190, -722091, 46171, -1358283, 4206921, -8674760,
-4882841, 3501472, 6005975, -13499082, 5254356, 3039763, -7159711, -1023276, 5064304, 9812927,
--11694122, -1181116, 1443109, -13885092, -16828756, -13618804, -12135967, -485868, 8724152, -17914308,
-12826383, 8164733, -19925964, 12579422, 5490579, 4277788, 2134599, 1906429, 4694936, -3179350,
--3104725, -6610492, -17180, 7680476, 6693707, 3785477, -11217918, 7807177, -7948374, 235686,
--6951405, 8978092, -4506495, -3673808, 3082176, -13388487, 1610076, -4398047, -3730179, -1370632,
-1263794, 13281649, -5908265, -1936493, -4686346, 10145250, -5746130, -3179350, 3483219, 3151432,
-3246459, 3702799, -3725884, 5013301, 1711545, -10826002, 15657303, 6239514, 3002719, 1823751,
-527207, -6779069, 9329206, 7580081, 3763465, 10081899, 1845225, 4699231, 10679436, 5468567,
-3140695, -6146098, 9259413, -2823404, 16828756, -795106, 2243047, -3066070, -13536663, 3409130,
-10298258, 6261526, -710280, -6648610, 16617228, 25274272, -2991445, -4067334, 12852690, 2525441,
-4496831, 2785823, -18169322, 1510755, -11624329, 9048959, 14042932, -4152697, -6257231, 1658931,
-9009231, -5794985, 10802916, -4719632, 20530480, -6536404, 4227322, -1638530, 5793374, 13726179,
--5131412, 730144, -974421, 3453691, -5048734, -3309809, 8475581, 16900160, 1751810, 12143483,
--4515621, 971200, -2166274, 3468723, 9709310, 13217225, 11240466, 9527848, 11102490, 5917928,
--1734093, 686658, -1248762, -760209, 2398202, -8133595, -1789391, 10210211, -9732933, 2766496,
--4144644, -3913252, -4940823, -21927418, 2544768, 9660992, 7304666, -4155918, -9490267, -25490094,
--3549254, 7588671, -1709397, 1359357, -7055558, 2308545, -6011344, -18287970, -13481365, 1248762,
-8891119, -8530879, -4612795, 468151, -3671123, -27062588, -22246320, 9415642, 9812927, 1149441,
-1989644, -10241350, 15853261, 17949206, 12049531, -10051834, 9561671, 11615202, -1215476, -15898895,
--6258841, 20764556, -5624797, 1634235, 1998770, 11455215, -8871255, -17571784, 4434554, 7364795,
--3462818, 4541928, 11819750, -5849209, -3486977, -978179, -23082228, -7384123, 9002788, -5005785,
--15133854, 2415382, 404801, -5488968, 4016331, -1979980, -14249091, -13291850, -21736830, -18466748,
-4425427, 7439957, 1685238, -5882495, -6574521, -324807, -4149475, 4299263, -9813463, -180926,
--2741263, -3719979, -2512019, -1604170, 5493263, -5618891, -20367272, 2506650, -1658394, 4501126,
-7593502, -602369, 6045167, 3766686, 8648990, 27763206, 24663850, 19247896, -2103997, 18795850,
-6049999, 26235808, 11058467, -644782, 31998044, -6809134, -1819992, -20594368, -5557688, -583579,
--14610942, 8444443, 12672301, -4398047, -424665, -11839077, -20183126, -11999065, -15481746, -4700305,
--9501541, -3178813, -1804960, 8810589, 1921461, -2231236, -8631274, -3187403, -5937256, 2538863,
--280247, -8526584, 3765613, 4990215, 1566053, -6721087, -8864812, 2299418, 6979322, -1564979,
--978716, -15094126, 25438554, 3875134, -5764920, -1251446, 1485522, 10648298, 8624831, -10422812,
-4605816, -4444755, 186294, -2273648, -3553012, -15590194, -14487462, -18558016, 1512365, -1401233,
--5055177, 10594074, -4919885, 31108448, -4535486, -2335389, -9276056, -4049617, -18336290, -22716082,
--14801531, 19356344, 12747463, -10896332, -14115947, 20687784, 10266046, -10715407, -17963700, -1269700,
-1486059, 3309272, 1020592, -8208756, 8819178, -5729487, 18541910, -1574642, -15255724, 4776541,
-3794604, 1424855, 246961, -4581657, -10335302, 1084479, 6824166, -3335042, 4911832, -8122320,
--27292370, -19488950, 12182675, -14784888, 12007655, 5573794, 354335, -3758097, 6581501, 4270808,
--3231963, -1959042, 2477659, 9800578, -8311299, 23966454, -6703370, 9371082, -7778186, 3940633,
--2982855, -6598144, 20199232, -14560476, 22082574, 1334661, -12602508, -15274514, 7889318, 5463199,
-1855426, 3441343, 8388608, 8824010, 7530689, -15417859, -6438156, 3215320, -666794, 7395934,
--14481556, -3721052, -5132486, 296890, -17075716, -2323041, 4007205, 40796284, 14227616, -9645960,
-21664352, 19297824, -9731859, -13438953, 32347546, -3282429, 7492571, -19319836, 46877420, 1207960,
--12498355, 6330782, 2815351, 22131430, 889058, 28063316, -19942070, 66572, -21826486, 1361505,
-16208670, 382789, -13171591, 19057306, 10879152, 5392332, 5185636, -7080254, -6017786, 1480153,
--9163313, 12430709, -10798622, -15338939, 13850733, 4827543, -16984448, 9312563, 1676648, -12897787,
--6615860, -4391604, 7217156, -1605244, -7148973, 9288941, -10800232, -4505958, -3367791, 15687368,
--9767293, 7660611, 12523051, 5732171, -6617471, -14374182, 9750650, -12156368, 17370996, -20835424,
-28533078, -7705172, -3562139, -3200825, 13120051, 100932, 4860293, 8973797, 4626754, 12597676,
--11027865, -17936858, -723165, -1926293, -24815784, -2918967, 22411676, -6456410, -14223858, 6367826,
--6765647, -1082332, 10062572, -24375550, -14567992, 9599252, 12430172, 17316234, -1402307, -3125663,
-6735583, -1540283, -24428164, -16474958, 28286654, -2049773, -25185152, -14383845, -10276783, -8149701,
-2078764, 8489540, 202400, -4065187, -12723841, -18956912, 2287607, 2634426, -960999, 15680926,
--10945724, -29802242, 11797738, 8886824, -35264904, 20940650, -6016713, -17547626, -14921790, -1229971,
-19455128, 4832912, -7029251, -7121056, 5196911, 10520522, -15220290, 11329587, 1258962, 8362838,
--6968585, -15229954, 12917651, 108985, 14506252, -47195248, 5225902, 7364795, -7853885, 13204877,
-14295262, 45007500, 197032, -29568702, -14898168, -7611756, -30237644, -28066000, -197569, -15211700,
--1046361, -181462, -19841138, 2504503, 13489419, 10541460, -17524540, 31769336, 23471996, -11259794,
-14349486, -27193048, -5078262, -9667435, 42415488, 25836912, -9130564, -16735877, -18646600, -5180268,
-1902671, 6776385, 28739774, 5055714, 5565204, 5141076, 1603097, -10129143, 1969243, -2678986,
-13733695, 16418586, 22905060, 13362180, 10242960, -3161096, -3143379, 2482491, 20918638, 2116345,
-4526896, -21370684, -9300752, 33176474, 14969572, 9170292, 1353452, 19365470, 12117176, 42063300,
--1221918, 43359844, 4434554, -15153718, 15779710, -13421773, -7592429, -3012920, -6719477, -1018981,
-9914932, 16248398, 4872104, -5509906, -17618492, 4469987, 3750043, 10900090, -12947716, 1890323,
--4058207, -154082, -16345035, 7062000, -13345000, -5508296, -18343268, -36530844, 5495948, -10959146,
--16591459, 5065377, -19014894, -19327, 23218056, 7293928, 19837918, -22779970, -10373420, 11310260,
-2496987, 32847910, -16399796, 19731616, -7148436, -9696962, -24096914, -9234180, -12795244, 16618839,
-4160213, -21415244, 27580132, -13727789, -12694313, 3015067, 11029476, -7545184, 19279034, -8685498,
--12596065, -6260989, 6768332, -1782948, -3045132, 2593624, 19343996, -12123082, 34955664, -12699681,
-202937, 32494112, -5709622, 6317897, -42684996, 2687039, 8509404, -8993125, 19932944, -33971580,
--41771780, 17066590, -6696391, 24507084, -16683800, -15604690, 2842195, -4402342, 37202468, -3284039,
--620623, 9262634, -32549410, 3190624, -32845226, -12245489, 3175055, 9624485, -41142564, -17264694,
--3805341, -105227, 15307263, -15712064, 23671712, -5352603, -24773908, 19900730, -17306570, -6937446,
-18650358, 37733436, -9669582, 30621506, 12971338, 6701760, -13471702, 34048352, 7087770, 14996952,
-3031173, -22597970, 9067213, -22709640, -19490562, 11344619, -19437948, -6231998, -3501472, 19374598,
-3164854, -8887361, 8172786, 7588134, -3064459, -21780316, -3416647, 13464186, 38367480, 6657200,
--19732690, 370441, -2865817, 6940667, 12386686, 16835734, -7258495, -1598802, 13211856, 743029,
-329102, 22741314, 23351200, 24580098, 10067403, 20270098, 3854196, 11238319, -9864466, -4168266,
-3601867, -23220740, 2098092, 32947230, -4080219, -10188736, 7711614, -3039226, 9615895, -23622856,
-27764280, -20125680, -8141648, -7513509, 755377, 463320, 2441152, -33514704, 36749352, -11370389,
--15515569, -7590818, 62282396, -2867965, 11825656, 320512, -7305203, 2643016, -29999272, -11589432,
--9770514, 12234751, 7318088, 15179488, 863288, -14453639, 15337865, -12127377, 17811230, 14591078,
--15757161, -15149960, 1189706, 23661512, -23994372, 10720238, 10027675, -12318503, 5234492, -723165,
-7452842, -23622, -34604552, 20059644, 11047730, -27561342, 33871184, -17235704, -5015448, -10251550,
-27247810, -4432943, -24285892, 1065689, -216359, 24154360, 22854594, 2709051, -18597208, 27434104,
--4762582, 5848135, -33806760, 27467390, 10205379, 2865280, -19575388, -13150653, -2484639, 10497974,
--15788837, -26016764, -12101070, 23190140, 13038447, -1613834, 34812320, 3811784, -6109054, -23523536,
-30657476, -26776974, -9778567, 34158412, 9426916, 7138236, -12927315, 9147207, 28258738, -24062018,
--415538, -27060442, 25303800, 42703248, 18052822, 24876450, -37304476, -30878130, -26459146, 3798899,
-43694848, -6903623, 15557982, 30561914, 13599477, -14639933, -107374, 22763864, -28503014, -21417392,
--20724290, 23855858, 14519137, -27181774, -41645612, 56744572, 32993402, -37625524, 16809428, -2876018,
-15330886, 3511136, -12847858, -25474524, 23980950, 1205275, -21169356, -28356984, 6828998, 9082782,
--8570070, 2873870, -3710315, -12805445, -7468948, -5651640, 13165685, -24236500, 28398860, -17626008,
-194884, 48589500, -45340360, -8110509, 41072236, 5809480, 8916352, -3346317, -14055280, 16211354,
--5821292, -15286862, 1424855, -38783016, 70520144, -3400540, -80019000, 33764884, 76601280, 50141596,
--97656280, -23369454, 16311749, 12184285, -17753248, -14671071, -19428822, 3991635, 20086488, 45191108,
--18843632, 14192719, -23961086, -65156264, 34958348, -17110076, -35025460, -25373594, -35890356, 16182900,
-11996917, -49540300, 30999464, -18093624, -1371705, -1896765, -25078850, 17770964, 18760418, 15362024,
--2011655, 20464982, 10995653, -15001247, 605054, -29330332, -10709501, -26309896, -17898740, -3126199,
-38859252, -35262756, -8151848, -9292699, -30962956, 15227270, -34908420, 15057618, 13638132, -25271588,
-16372415, -39252244, 8761733, -34600256, 18736258, -14812268, -18986976, -20498268, -28329068, -10200010,
-10500658, 19271518, -29212220, 14046154, 6739341, 23781234, 30451854, 15611132, -32037772, -17429514,
--57311508, -18067316, -20234128, 12572980, -67374080, -17264158, -43149924, -9307731, 29434484, 27074400,
-13265543, -222265, 38205880, -12263742, 9589588, 55236500, -31762894, 19235548, 28322624, -14345728,
-4567698, 7741679, -1024350, 25615184, 3595961, 17917530, -23663660, -5923297, 24580634, 1426466,
--32910186, 20404316, -11890617, -13670881, -11297375, -5740761, -10989211, 11024644, 20591684, 6788733,
--1234266, -11986717, 18081812, -7477001, -23779624, 18857054, -41521596, -13137768, -7065758, -11719355,
-26624502, 24978456, 50453516, -16393353, 22566832, -2860448, 11082626, 29849486, -685047, 1404991,
--19694572, -68973416, 34690452, 4498978, -30932354, -23996520, 4606353, 15784005, -1861332, -20628192,
-10950019, -20991116, 26562226, 12912282, -10389526, -24552180, 46982112, 4132832, 2755759, -4945655,
-6387690, 2968359, 1528472, -15401216, -34102576, 10099616, -6833293, -9446244, -33934000, -963683,
--4100083, 3590593, 63458680, 32945620, 63858648, -58932320, 4749697, 31221728, -12338367, 35510252,
-67403608, 37586868, 1785096, -17870286, -19209242, 3908957, 29000692, 31854698, 6772627, 319438,
--47154984, -9241696, 45759656, 15665356, -13242458, 25884158, -22051972, -29916594, -8704288, -1615982,
-35292820, 46996068, 41474888, 16269873, -16603807, -24528022, -46652472, -45594836, 39692476, 17223892,
-2898029, 62310848, 3359738, -18532248, -25722560, -25313464, 12116640, 26862872, 20636244, 41018012,
-2464238, 29630442, -2346126, -4836133, 14352707, 27456116, 19320910, 17589502, -15918759, -5456219,
--12691628, -27064736, -22546430, -39639864, -14006425, 11023570, -7266548, 29330868, 34155728, -426276,
--645319, -14345728, -26794154, 4911295, 32120986, -3092913, -33655364, -66329864, 26410290, 107707576,
-110029008, 92739616, 67689760, -41527500, -46842524, -51114404, -67476624, -104013904, -83249888, -72686416,
-34508988, 78488376, 58959700, 126156072, 98103496, 51077900, -17822504, -33501818, -83646632, -65566972,
--64366528, -12811887, -38958036, -31912680, 10910291, 18424336, 36941552, 36579700, 50474456, 49579492,
-64301568, 37616936, 17699560, -8065949, -8913131, -26461294, -40011916, -49213344, -59800976, -39023000,
--73751568, -48973364, -35681516, 39662948, 74382928, 79483736, 56294672, 38640212, 60119340, 46114528,
-58054000, 45729052, 18486076, -17628156, -92651568, -64991444, -65392488, -104228656, -63103808, -54507428,
--51727512, 25232932, 62867584, 96071976, 81349368, 113052664, 103615552, 101507792, 76465984, -26111254,
--20229296, -60276644, -79548160, -68961072, -11515344, -6640020, 0, 0, 0, 0,
-0, 0, 0, },
+328028, -5092221, -1712081, 2312840, 1407676, 3224447, -4187593, 2341831, -546535, -3929895,
+4642860, -2215130, -960999, -3183645, -2645700, 3153580, -3089155, 1725503, 4360466, -419296,
+2439542, -1421097, 79994, 2024003, -584116, 4193499, -173946, -6439230, -145492, 1058173,
+2829310, -2903935, 465467, 929324, -569083, 2788508, -506806, 3889630, 3453154, -2181844,
+-229244, 3512747, -7078106, -4002373, 1541893, -3591667, -805843, 1478543, -16643, 4281546,
+4736275, 1091995, 2000918, 2433636, 2530273, -747324, 705985, 2312840, 3107946, 442382,
+-2132451, -4013647, -2622615, -83752, -431107, -329639, -5526549, 5031018, -1579474, 712965,
+-1739462, -3380139, 1675037, -679679, 1908576, 12936978, 565325, 2183454, 1793149, -5264556,
+-2747705, 7159174, 12437152, 2004139, 6609418, -2703682, 1221381, -357556, 5581847, -4473209,
+-10208064, 4088272, 4704600, -5950677, 6812355, 3353296, 6203007, 1949378, 1420024, -2775086,
+-954020, 285615, 4093641, 332323, -6381785, 228707, -608812, 1309428, -983548, 1065689,
+1394254, 3690988, 2596845, 833761, 1040993, 307627, 1697586, -2005213, -3288871, -7038915,
+1184874, 1459215, 391916, 5262946, -2074469, 4071092, 950798, -1735704, -3499862, -2211371,
+7255274, 1519882, 3935264, 613643, 1391569, -1516660, -16643, 421444, 1857573, -722091,
+-3101503, -1578401, -6141803, 581968, 757525, 4909148, -2013803, 3758097, -1148904, 2475512,
+4661114, 4758287, 1983201, 2024003, 2399813, 3192235, 4398584, -1839857, 4570919, 186831,
+4894652, -964757, 8811125, 3170760, 2833068, -5951751, -969589, -1244467, -8032663, 4464619,
+3537443, -2365453, -10481331, -4588099, -1662152, 5191542, 6855305, 4521527, -2876018, 1619740,
+-4538707, 345745, 300648, -3487514, -1882269, -9251896, 701690, -1045825, -3994320, 537945,
+484258, -1144072, -345208, 9109089, -2196876, 7441031, 1399086, -5533529, 407485, 668404,
+4117263, -1731946, 1187559, 1086627, 355945, 5709622, 2007897, 5853504, 4320737, -2856153,
+5367099, 2641405, 3990562, 438624, 1460289, -1277753, -2225867, -4687420, -5484673, 6099928,
+-5606006, -4685273, -4405026, 2741263, 3393561, 940598, -8111583, -7507066, 1603097, 168577,
+-1649268, 4529043, -611496, -766115, 4662187, -5134097, 991601, -4479114, -2931852, -1604170,
+31675, 7668127, 8669391, -4015258, 3386045, -6237367, -615791, -2429878, 8422431, -2475512,
+-494995, 903554, -11901354, -2047626, -5885716, -1915019, -1473711, 4446902, 5865315, 2428804,
+7933342, -999117, -3635690, -3654480, 4575214, 11947525, 8324721, -4635344, -5455682, 5985037,
+-5368172, 1035624, 1889249, 9789304, -3611531, -4802847, 1051193, -2975876, 1855963, 2500208,
+6200322, -6798397, -4427038, 3992709, 7494181, -693637, -3496104, -4434017, -10623602, 4008278,
+-27380, 3130494, 491774, 223338, -1667521, 1867237, -2697240, 1557463, 2331094, 2116882,
+-3663070, 2427730, -19679004, -6484327, -1038845, 3355980, 2259690, 4895726, -9396852, -2815351,
+-423591, -9746891, -6961068, 2450279, 5900212, 3462818, 6511171, -827318, 3742527, 8669928,
+7651484, 7192997, 4148939, -2760053, -2196339, -4439923, -1963337, -4457639, 9257265, 4318053,
+-1409286, -4078072, -2487323, -4160750, -6081137, -6547141, -8245801, 5012764, 3584687, -9131637,
+2180233, -441845, 6349573, 1009317, 3138547, 4150549, -8639327, -1296006, -290447, 1209570,
+4578972, 6976638, -2730526, -915902, -1989107, -5356361, 1720671, 1206349, -526670, -1351304,
+5289789, 449898, -2833068, -783832, 2549600, 3583077, -1276679, 135828, 958315, -4391067,
+3610457, 75699, -7033009, 1393180, -8607651, 2162516, 6528351, -989990, -413391, 10589779,
+4296578, 1618129, -2469606, 7757785, 3323768, 4303021, 12857521, 13467407, 776315, -2403034,
+-4580583, -7603703, 2997350, 5222680, -2513630, -724239, 1060320, -1465658, -4062502, 4959614,
+-4701379, 2205466, -14137422, -2240899, -3189550, -3661997, -6802692, -1637993, -571768, -34360,
+-3296388, -5372467, -3742527, 432181, -2338073, -5687611, 3725347, 4628901, 812286, -4690105,
+-4669703, 1738388, -3476776, 4356171, -5146982, 3483755, 1808718, -213675, -7492571, -7567733,
+2265059, -5529771, 9296457, 1396938, 7924215, -3965329, 8006356, 1251983, 5421323, 1413581,
+5218922, -4361540, -5142150, -370978, 10325101, -1214402, -5448166, -3726958, 5186173, -3070365,
+-2419140, 417149, -8655970, 6105296, 10442139, -1925756, 15885473, 2833605, 8893804, -3696356,
+6758131, 4417911, 10320270, -7703024, -4882841, -2018098, 957778, 6743636, -2939368, 10411001,
+-410169, 5778342, 5662378, -3325915, 2564096, 5862631, 6118718, 1145146, 1984812, 5315559,
+-11235098, 1588064, 9418863, 6723772, -5877126, 7546258, -8861054, 5327907, -7761006, -4442070,
+-1721208, 8218957, -1309428, 8623221, 2421288, 1618666, 884763, -605054, 3983582, 4940823,
+12091407, 1530619, 10506564, -5235029, 7815767, 9373229, 182536, -2021319, -2987150, 3454764,
+-13295608, -1423245, 1890859, -5441187, -7647190, -722091, 46171, -1358283, 4206921, -8674760,
+4882841, 3501472, 6005975, -13499082, 5254356, 3039763, -7159711, -1023276, 5064304, 9812927,
+-11694122, -1181116, 1443109, -13885092, -16828756, -13618804, -12135967, -485868, 8724152, -17914308,
+12826383, 8164733, -19925964, 12579422, 5490579, 4277788, 2134599, 1906429, 4694936, -3179350,
+-3104725, -6610492, -17180, 7680476, 6693707, 3785477, -11217918, 7807177, -7948374, 235686,
+-6951405, 8978092, -4506495, -3673808, 3082176, -13388487, 1610076, -4398047, -3730179, -1370632,
+1263794, 13281649, -5908265, -1936493, -4686346, 10145250, -5746130, -3179350, 3483219, 3151432,
+3246459, 3702799, -3725884, 5013301, 1711545, -10826002, 15657303, 6239514, 3002719, 1823751,
+527207, -6779069, 9329206, 7580081, 3763465, 10081899, 1845225, 4699231, 10679436, 5468567,
+3140695, -6146098, 9259413, -2823404, 16828756, -795106, 2243047, -3066070, -13536663, 3409130,
+10298258, 6261526, -710280, -6648610, 16617228, 25274272, -2991445, -4067334, 12852690, 2525441,
+4496831, 2785823, -18169322, 1510755, -11624329, 9048959, 14042932, -4152697, -6257231, 1658931,
+9009231, -5794985, 10802916, -4719632, 20530480, -6536404, 4227322, -1638530, 5793374, 13726179,
+-5131412, 730144, -974421, 3453691, -5048734, -3309809, 8475581, 16900160, 1751810, 12143483,
+-4515621, 971200, -2166274, 3468723, 9709310, 13217225, 11240466, 9527848, 11102490, 5917928,
+-1734093, 686658, -1248762, -760209, 2398202, -8133595, -1789391, 10210211, -9732933, 2766496,
+-4144644, -3913252, -4940823, -21927418, 2544768, 9660992, 7304666, -4155918, -9490267, -25490094,
+-3549254, 7588671, -1709397, 1359357, -7055558, 2308545, -6011344, -18287970, -13481365, 1248762,
+8891119, -8530879, -4612795, 468151, -3671123, -27062588, -22246320, 9415642, 9812927, 1149441,
+1989644, -10241350, 15853261, 17949206, 12049531, -10051834, 9561671, 11615202, -1215476, -15898895,
+-6258841, 20764556, -5624797, 1634235, 1998770, 11455215, -8871255, -17571784, 4434554, 7364795,
+-3462818, 4541928, 11819750, -5849209, -3486977, -978179, -23082228, -7384123, 9002788, -5005785,
+-15133854, 2415382, 404801, -5488968, 4016331, -1979980, -14249091, -13291850, -21736830, -18466748,
+4425427, 7439957, 1685238, -5882495, -6574521, -324807, -4149475, 4299263, -9813463, -180926,
+-2741263, -3719979, -2512019, -1604170, 5493263, -5618891, -20367272, 2506650, -1658394, 4501126,
+7593502, -602369, 6045167, 3766686, 8648990, 27763206, 24663850, 19247896, -2103997, 18795850,
+6049999, 26235808, 11058467, -644782, 31998044, -6809134, -1819992, -20594368, -5557688, -583579,
+-14610942, 8444443, 12672301, -4398047, -424665, -11839077, -20183126, -11999065, -15481746, -4700305,
+-9501541, -3178813, -1804960, 8810589, 1921461, -2231236, -8631274, -3187403, -5937256, 2538863,
+-280247, -8526584, 3765613, 4990215, 1566053, -6721087, -8864812, 2299418, 6979322, -1564979,
+-978716, -15094126, 25438554, 3875134, -5764920, -1251446, 1485522, 10648298, 8624831, -10422812,
+4605816, -4444755, 186294, -2273648, -3553012, -15590194, -14487462, -18558016, 1512365, -1401233,
+-5055177, 10594074, -4919885, 31108448, -4535486, -2335389, -9276056, -4049617, -18336290, -22716082,
+-14801531, 19356344, 12747463, -10896332, -14115947, 20687784, 10266046, -10715407, -17963700, -1269700,
+1486059, 3309272, 1020592, -8208756, 8819178, -5729487, 18541910, -1574642, -15255724, 4776541,
+3794604, 1424855, 246961, -4581657, -10335302, 1084479, 6824166, -3335042, 4911832, -8122320,
+-27292370, -19488950, 12182675, -14784888, 12007655, 5573794, 354335, -3758097, 6581501, 4270808,
+-3231963, -1959042, 2477659, 9800578, -8311299, 23966454, -6703370, 9371082, -7778186, 3940633,
+-2982855, -6598144, 20199232, -14560476, 22082574, 1334661, -12602508, -15274514, 7889318, 5463199,
+1855426, 3441343, 8388608, 8824010, 7530689, -15417859, -6438156, 3215320, -666794, 7395934,
+-14481556, -3721052, -5132486, 296890, -17075716, -2323041, 4007205, 40796284, 14227616, -9645960,
+21664352, 19297824, -9731859, -13438953, 32347546, -3282429, 7492571, -19319836, 46877420, 1207960,
+-12498355, 6330782, 2815351, 22131430, 889058, 28063316, -19942070, 66572, -21826486, 1361505,
+16208670, 382789, -13171591, 19057306, 10879152, 5392332, 5185636, -7080254, -6017786, 1480153,
+-9163313, 12430709, -10798622, -15338939, 13850733, 4827543, -16984448, 9312563, 1676648, -12897787,
+-6615860, -4391604, 7217156, -1605244, -7148973, 9288941, -10800232, -4505958, -3367791, 15687368,
+-9767293, 7660611, 12523051, 5732171, -6617471, -14374182, 9750650, -12156368, 17370996, -20835424,
+28533078, -7705172, -3562139, -3200825, 13120051, 100932, 4860293, 8973797, 4626754, 12597676,
+-11027865, -17936858, -723165, -1926293, -24815784, -2918967, 22411676, -6456410, -14223858, 6367826,
+-6765647, -1082332, 10062572, -24375550, -14567992, 9599252, 12430172, 17316234, -1402307, -3125663,
+6735583, -1540283, -24428164, -16474958, 28286654, -2049773, -25185152, -14383845, -10276783, -8149701,
+2078764, 8489540, 202400, -4065187, -12723841, -18956912, 2287607, 2634426, -960999, 15680926,
+-10945724, -29802242, 11797738, 8886824, -35264904, 20940650, -6016713, -17547626, -14921790, -1229971,
+19455128, 4832912, -7029251, -7121056, 5196911, 10520522, -15220290, 11329587, 1258962, 8362838,
+-6968585, -15229954, 12917651, 108985, 14506252, -47195248, 5225902, 7364795, -7853885, 13204877,
+14295262, 45007500, 197032, -29568702, -14898168, -7611756, -30237644, -28066000, -197569, -15211700,
+-1046361, -181462, -19841138, 2504503, 13489419, 10541460, -17524540, 31769336, 23471996, -11259794,
+14349486, -27193048, -5078262, -9667435, 42415488, 25836912, -9130564, -16735877, -18646600, -5180268,
+1902671, 6776385, 28739774, 5055714, 5565204, 5141076, 1603097, -10129143, 1969243, -2678986,
+13733695, 16418586, 22905060, 13362180, 10242960, -3161096, -3143379, 2482491, 20918638, 2116345,
+4526896, -21370684, -9300752, 33176474, 14969572, 9170292, 1353452, 19365470, 12117176, 42063300,
+-1221918, 43359844, 4434554, -15153718, 15779710, -13421773, -7592429, -3012920, -6719477, -1018981,
+9914932, 16248398, 4872104, -5509906, -17618492, 4469987, 3750043, 10900090, -12947716, 1890323,
+-4058207, -154082, -16345035, 7062000, -13345000, -5508296, -18343268, -36530844, 5495948, -10959146,
+-16591459, 5065377, -19014894, -19327, 23218056, 7293928, 19837918, -22779970, -10373420, 11310260,
+2496987, 32847910, -16399796, 19731616, -7148436, -9696962, -24096914, -9234180, -12795244, 16618839,
+4160213, -21415244, 27580132, -13727789, -12694313, 3015067, 11029476, -7545184, 19279034, -8685498,
+-12596065, -6260989, 6768332, -1782948, -3045132, 2593624, 19343996, -12123082, 34955664, -12699681,
+202937, 32494112, -5709622, 6317897, -42684996, 2687039, 8509404, -8993125, 19932944, -33971580,
+-41771780, 17066590, -6696391, 24507084, -16683800, -15604690, 2842195, -4402342, 37202468, -3284039,
+-620623, 9262634, -32549410, 3190624, -32845226, -12245489, 3175055, 9624485, -41142564, -17264694,
+-3805341, -105227, 15307263, -15712064, 23671712, -5352603, -24773908, 19900730, -17306570, -6937446,
+18650358, 37733436, -9669582, 30621506, 12971338, 6701760, -13471702, 34048352, 7087770, 14996952,
+3031173, -22597970, 9067213, -22709640, -19490562, 11344619, -19437948, -6231998, -3501472, 19374598,
+3164854, -8887361, 8172786, 7588134, -3064459, -21780316, -3416647, 13464186, 38367480, 6657200,
+-19732690, 370441, -2865817, 6940667, 12386686, 16835734, -7258495, -1598802, 13211856, 743029,
+329102, 22741314, 23351200, 24580098, 10067403, 20270098, 3854196, 11238319, -9864466, -4168266,
+3601867, -23220740, 2098092, 32947230, -4080219, -10188736, 7711614, -3039226, 9615895, -23622856,
+27764280, -20125680, -8141648, -7513509, 755377, 463320, 2441152, -33514704, 36749352, -11370389,
+-15515569, -7590818, 62282396, -2867965, 11825656, 320512, -7305203, 2643016, -29999272, -11589432,
+-9770514, 12234751, 7318088, 15179488, 863288, -14453639, 15337865, -12127377, 17811230, 14591078,
+-15757161, -15149960, 1189706, 23661512, -23994372, 10720238, 10027675, -12318503, 5234492, -723165,
+7452842, -23622, -34604552, 20059644, 11047730, -27561342, 33871184, -17235704, -5015448, -10251550,
+27247810, -4432943, -24285892, 1065689, -216359, 24154360, 22854594, 2709051, -18597208, 27434104,
+-4762582, 5848135, -33806760, 27467390, 10205379, 2865280, -19575388, -13150653, -2484639, 10497974,
+-15788837, -26016764, -12101070, 23190140, 13038447, -1613834, 34812320, 3811784, -6109054, -23523536,
+30657476, -26776974, -9778567, 34158412, 9426916, 7138236, -12927315, 9147207, 28258738, -24062018,
+-415538, -27060442, 25303800, 42703248, 18052822, 24876450, -37304476, -30878130, -26459146, 3798899,
+43694848, -6903623, 15557982, 30561914, 13599477, -14639933, -107374, 22763864, -28503014, -21417392,
+-20724290, 23855858, 14519137, -27181774, -41645612, 56744572, 32993402, -37625524, 16809428, -2876018,
+15330886, 3511136, -12847858, -25474524, 23980950, 1205275, -21169356, -28356984, 6828998, 9082782,
+-8570070, 2873870, -3710315, -12805445, -7468948, -5651640, 13165685, -24236500, 28398860, -17626008,
+194884, 48589500, -45340360, -8110509, 41072236, 5809480, 8916352, -3346317, -14055280, 16211354,
+-5821292, -15286862, 1424855, -38783016, 70520144, -3400540, -80019000, 33764884, 76601280, 50141596,
+-97656280, -23369454, 16311749, 12184285, -17753248, -14671071, -19428822, 3991635, 20086488, 45191108,
+-18843632, 14192719, -23961086, -65156264, 34958348, -17110076, -35025460, -25373594, -35890356, 16182900,
+11996917, -49540300, 30999464, -18093624, -1371705, -1896765, -25078850, 17770964, 18760418, 15362024,
+-2011655, 20464982, 10995653, -15001247, 605054, -29330332, -10709501, -26309896, -17898740, -3126199,
+38859252, -35262756, -8151848, -9292699, -30962956, 15227270, -34908420, 15057618, 13638132, -25271588,
+16372415, -39252244, 8761733, -34600256, 18736258, -14812268, -18986976, -20498268, -28329068, -10200010,
+10500658, 19271518, -29212220, 14046154, 6739341, 23781234, 30451854, 15611132, -32037772, -17429514,
+-57311508, -18067316, -20234128, 12572980, -67374080, -17264158, -43149924, -9307731, 29434484, 27074400,
+13265543, -222265, 38205880, -12263742, 9589588, 55236500, -31762894, 19235548, 28322624, -14345728,
+4567698, 7741679, -1024350, 25615184, 3595961, 17917530, -23663660, -5923297, 24580634, 1426466,
+-32910186, 20404316, -11890617, -13670881, -11297375, -5740761, -10989211, 11024644, 20591684, 6788733,
+-1234266, -11986717, 18081812, -7477001, -23779624, 18857054, -41521596, -13137768, -7065758, -11719355,
+26624502, 24978456, 50453516, -16393353, 22566832, -2860448, 11082626, 29849486, -685047, 1404991,
+-19694572, -68973416, 34690452, 4498978, -30932354, -23996520, 4606353, 15784005, -1861332, -20628192,
+10950019, -20991116, 26562226, 12912282, -10389526, -24552180, 46982112, 4132832, 2755759, -4945655,
+6387690, 2968359, 1528472, -15401216, -34102576, 10099616, -6833293, -9446244, -33934000, -963683,
+-4100083, 3590593, 63458680, 32945620, 63858648, -58932320, 4749697, 31221728, -12338367, 35510252,
+67403608, 37586868, 1785096, -17870286, -19209242, 3908957, 29000692, 31854698, 6772627, 319438,
+-47154984, -9241696, 45759656, 15665356, -13242458, 25884158, -22051972, -29916594, -8704288, -1615982,
+35292820, 46996068, 41474888, 16269873, -16603807, -24528022, -46652472, -45594836, 39692476, 17223892,
+2898029, 62310848, 3359738, -18532248, -25722560, -25313464, 12116640, 26862872, 20636244, 41018012,
+2464238, 29630442, -2346126, -4836133, 14352707, 27456116, 19320910, 17589502, -15918759, -5456219,
+-12691628, -27064736, -22546430, -39639864, -14006425, 11023570, -7266548, 29330868, 34155728, -426276,
+-645319, -14345728, -26794154, 4911295, 32120986, -3092913, -33655364, -66329864, 26410290, 107707576,
+110029008, 92739616, 67689760, -41527500, -46842524, -51114404, -67476624, -104013904, -83249888, -72686416,
+34508988, 78488376, 58959700, 126156072, 98103496, 51077900, -17822504, -33501818, -83646632, -65566972,
+-64366528, -12811887, -38958036, -31912680, 10910291, 18424336, 36941552, 36579700, 50474456, 49579492,
+64301568, 37616936, 17699560, -8065949, -8913131, -26461294, -40011916, -49213344, -59800976, -39023000,
+-73751568, -48973364, -35681516, 39662948, 74382928, 79483736, 56294672, 38640212, 60119340, 46114528,
+58054000, 45729052, 18486076, -17628156, -92651568, -64991444, -65392488, -104228656, -63103808, -54507428,
+-51727512, 25232932, 62867584, 96071976, 81349368, 113052664, 103615552, 101507792, 76465984, -26111254,
+-20229296, -60276644, -79548160, -68961072, -11515344, -6640020, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
-6346351,
--4986994, 1199907, -2861522, 4595615, -4682051, 1912871, -8588324, -650688, -3399467, -5342403,
--4507032, -2642479, -223338, -1012002, 5650567, -1739462, 1135482, -736050, -292595, -4706748,
-5520107, 1690070, 1017370, 1465121, -1102733, -1225139, 1391033, 5286568, 2262374, -1039919,
--404264, -153545, -1214939, 110595, -889058, -490163, 70867, 2984466, 355945, -2333241,
-1708860, -2499671, 7295539, -4435091, 544924, -76236, -5440650, -831613, 2388539, -3060701,
--1372242, -998043, 3630858, -1977296, -1393180, -223338, 417686, 781147, -537945, -1773822,
--4234838, 797253, -2205466, -3162707, 755914, 1193464, -232465, 857383, 2074469, 2114735,
--301721, 788127, 358093, 2738579, -3060164, -3017752, 3038689, 3194919, 6111739, -8471286,
-1552094, 6108517, 10254771, -830002, 5626944, 61203, 5075041, 1619740, 7965554, 141197,
--3046206, 5906654, 7613904, 7854959, 4099546, 1524177, -3433826, -2118493, 384400, 4155918,
--2324114, 2094333, 104153, 4682051, -2493229, 181462, 713501, -4922033, -3421478, -1233193,
--5844914, 1610613, -1933809, 258772, -1140851, -4236985, 3132642, 5722507, -1529545, 743029,
-83215, -555661, 5325760, -6663105, -450435, 3199214, 336081, 1237488, -2121177, -5456756,
--1932198, 2571075, 2190433, 3283503, -1003412, 439160, -454730, 1517197, -1491964, 6407555,
--362925, -157840, -4524748, 932008, -3438121, -1762010, 1730335, 3077344, 5479305, 784368,
-5145371, 6923488, 11277510, 1492501, 5629092, -2043331, 3358128, 4340065, -1302449, -3484292,
-5940477, 10184441, -1954210, 1139777, 3984656, -4859219, 3084860, 4365835, -8844411, 2528662,
-928250, -1970853, 64425, -9229885, 445066, 2639258, -4334159, 864899, 231928, 5992553,
-4321274, -2165737, -548682, -493384, -6219650, -4163971, 788663, 2635499, 670552, 2927557,
--4064113, 734439, 2192044, 545461, -3743601, -2699387, -733903, 1481227, 3250217, 3380139,
-2288681, 3935264, 3832722, -3961571, -1117228, 365609, 5404680, -581431, 3932043, -2236067,
--2383170, -528281, -4522601, -1881733, 1171989, 3079492, -3800509, 4308926, -869731, -753230,
--515396, -1105417, -1727114, 1396938, 3426847, 1868848, 5583995, -5913096, -1457605, -1082332,
--3233574, 1156420, 6731288, 9020505, 5553930, -2530810, 4161287, -2629594, -1427540, -8106751,
--6085969, 2630131, 6238440, 5694590, 6355478, 1155883, 526670, 3595961, -4895189, 4896263,
-4338991, 157840, 3753802, 8920110, 6414534, 1513976, -6382322, -41876, 2400887, 1182727,
-1276142, -7441568, 1916092, 1082869, 5012227, 5073967, -1480153, 3166465, -2398202, -3131031,
-4067871, 1938104, -6699612, -6789807, -2661806, -3936875, -2530810, -3188476, -7763691, -7490423,
--448824, 2312303, 161598, -1057636, -5153961, 410169, 6589017, -2101850, -1785096, 2076080,
-224949, 4274030, 2567317, 2010045, -2702071, -4023848, 7135552, 2765959, -2407329, 4139275,
--216896, 3162170, -2510409, 301185, -12742094, -7514046, -2340757, 2410551, -5245229, 1597728,
--1426466, 3665218, -877247, -7142531, -5662915, 4935991, 4059818, 10213432, 9040906, -1372779,
-6548752, -9822590, -1573569, 7633768, 2327872, 1770600, -976568, -3208341, -1462973, 1056562,
--839129, -297427, 3904662, -4814659, 1119376, 1751273, -66035, 3041374, -3255048, -2711198,
-1809792, -2108292, 2784750, -5379984, 966368, -3230889, -1190780, -3598646, -2605435, -4087735,
--5967320, 3722663, 70330, 6344741, -5807870, -5072357, 94489, 1220308, -544387, -1211718,
-590558, 3828963, 2022930, 834297, -2388002, -2501282, -1174137, -4715874, 1047435, -1198833,
-901943, -183610, -4682588, -370441, 110059, -5311264, 813896, -869194, 1563368, -607201,
--4278861, 4320737, -6703907, 2657511, -7512972, -1450088, 515933, -5773510, 5456219, 3932043,
--11234024, -1279363, 2041183, -1183264, -4846871, -6803765, 1498407, -3497177, -5426691, -2882460,
-3406446, 2765959, 8178155, 10331007, -798327, 9210557, -5636071, 3520263, 4193499, -1004486,
-4130685, -2483028, 195958, -794032, -1822677, -1190780, -2054068, 7613367, -330176, -6020471,
--1282585, 3703873, 2539936, 2914672, 733903, -2938831, 5817533, 11400991, 839129, 943282,
-798327, -1099512, 1961726, -1020055, 6768332, -5323075, 6484864, 4157528, -3899830, 1821066,
-4284230, 2584497, -4683125, -5486821, -10188736, -1932198, -796180, 1089848, 4205310, -1173063,
-2831457, -1034550, -2500208, -2812130, 5632850, -1108638, 5978595, -7617125, -142808, 3257196,
-1059246, 386547, 3758097, 11959336, 13535589, -3384971, -635655, 3111704, -2422362, 9146133,
-8402030, -5336497, 8215199, 6897181, 2222646, 4053912, 3105261, 1918240, -1157494, 743566,
-731218, -4625143, -6226092, 1611687, -2073932, 7516, 530965, -5050882, 4676146, 10419591,
--828929, -6180458, 9613747, 1258425, -230854, 3991635, -2341831, -3041911, 893353, -3827890,
-919660, 10322417, 3811247, -119185, 3054259, 5569499, 13939853, -2460480, 5609228, -1340030,
--7073275, 4075387, -370441, -2225330, 2095407, 8831527, 1489280, 1453310, -974958, 3436511,
-12052752, 5636608, 697395, 1140314, 2442226, -3908957, 5606543, -1889786, -13864691, 1380295,
--2497524, 7552700, 7891466, 3840775, 204548, -15011984, -2362232, -6016176, -8428336, -1457605,
--6180458, 885300, 4201552, -6714108, 7006166, -15603079, 1715303, -4175245, -9235790, -10975252,
-11529303, 6683506, 197032, -9647570, -7306276, 4481262, -13933411, -8696235, 2597382, 3482145,
-12996034, -1114007, 562641, 10700911, -6543383, 10524280, 2826089, 4269735, -2483565, -5294084,
--1252520, 8875013, -4989142, 1351841, 9774809, -3117610, -3594888, -4346507, -6682969, -4654671,
--4524748, -7694434, -1568737, 3146601, -3406983, 2470143, -3285113, -3639448, 5245766, -6825240,
-3962107, -5718749, -8551817, 984621, 5978058, 1010391, -2581275, 3169686, -5952825, -2139968,
--8122320, -12776454, -6994354, 2384244, -4812511, 15657303, 5155035, -10125922, -6393059, -947577,
-17137456, 10777147, 11797738, -3620658, -16230681, -1559610, -8211441, 1859184, 3858491, 8593693,
--3947075, 3623342, -6558415, 894427, -5762773, -15551003, -8050380, 5588290, -5386963, -12379169,
--11203959, -10856604, -16357383, 1794223, -5610301, -12857521, -11151346, 1723893, 16107201, -2394981,
--2483565, -5592048, -9487583, 1727651, -3675955, 791348, -11885785, 503048, -12391518, 1486059,
--864362, 6478958, 5378910, 5348845, 3033858, -740882, 4804458, -3345780, 9307731, 2314451,
-4774393, 2520609, -2872260, 3002719, 9359271, -1468342, 5274220, -1573032, 14635101, 1611150,
-5557688, 450435, -8055211, -6493991, 370978, -3150359, 1956358, -2377265, 4888747, 4009889,
-5674726, -2889976, 3294240, -11549704, 6123550, 15605764, -8165270, -23688356, -3905736, -8258149,
--12440910, 6733435, -23758686, -3056943, -8417062, -4569845, 6928856, -7525320, 10133438, 8739185,
-1462436, 7897908, 784368, 4220342, -6100464, -10851772, -11938935, -6637335, -10919954, 8728447,
-11420318, -354872, -5793911, 3400004, 3416647, -3998615, 1007170, -18649822, -9761387, 8936216,
--4591857, 453119, 8810052, -601295, 5551782, 4777078, -2193655, 5450851, 213138, -9764071,
-11463805, -7563438, 854162, 927713, -5823976, 4440460, 7023882, -3564823, 8001524, 1249299,
--170188, -6527814, 9054328, 418759, -6466074, -1794223, -13407277, -5287105, -7367480, -378494,
-10255845, 3478387, -169651, 970663, -8182450, 2979097, 7932268, -7960722, 1722282, 15421080,
--4177393, 3532611, 4045859, 41747620, 9862856, -5964099, -7975755, -1242856, -2172180, 7069516,
--1146219, 5925981, 12502650, -5209796, 1155346, -8288750, -4852240, 2189360, -719407, 5807870,
--11224360, -7260642, 6206228, 11541651, 8468065, -666794, 3469260, -3189013, -6442451, 4881767,
-9968619, 9466645, 12451110, -9947681, -1554241, -5788542, -11275900, -1721208, 1422171, -2819109,
-6360847, 7147363, 835371, 3469260, -1278290, -12914430, -6049462, -17208324, -16419123, -5131949,
-6813966, -2572686, -6656663, 14561550, 6594386, -557272, -12512850, -547608, -3001109, -9642202,
-1400159, -4290136, -4964982, -13280039, -270046, -4672925, -13280576, 420370, 13121662, -7086159,
--1671816, 4946729, -4152160, 3577171, -3650185, 10805601, 519691, -6247030, -8180302, 9937481,
--33889976, -18615998, 17251274, -4185446, 654983, -8776229, 7235410, -2774012, -13408351, 6582038,
-17394080, 2669859, -16210817, 4780836, -3960497, -3241627, 9755481, 11028402, -2015950, -1859721,
-21973052, 5344013, -3842385, -13575855, 5527623, -19610820, -16990354, -14824080, 5480379, -2610266,
--2269890, 13187697, 4502737, -12954695, -11683922, 3058017, 12105365, 4560182, -2173254, 886911,
-7807714, -6026376, -14648523, 18267032, -6092948, 1986959, 6547678, 1215476, 1717450, 18723374,
--492311, 11929809, -300111, -12481712, 950798, 2673617, -3475702, 2365990, 7581154, -6360847,
--2860985, 2116345, -25693032, 6488622, 4038343, -217433, 4867272, 4554276, -10295573, 4312684,
-32744830, 14649597, 7086159, 2774549, 6881075, -24525874, -22889492, 16239271, 16368657, 5945846,
-8828305, -5699959, 26435524, -2621541, 9817221, 7567733, -12828530, -4520453, -6136972, 16203301,
--9692131, -2298881, 9454297, 8884677, -9505836, -1857037, -26759794, 5570573, -3273302, -7103339,
-1954747, 1376000, 1634235, 3102040, 8639327, 1053878, 9508521, 1867774, 4507568, -1812476,
--8752070, -8338142, 16831976, -5330055, -12560095, -9636833, -4899484, -4942971, 7239168, 5387500,
-5563057, 8358007, 2151242, -8516920, 5275831, -14394583, -5041755, -12448426, 9149354, -15183246,
--11522324, -2490007, -5355824, 5755256, 10924249, -7612293, 10370735, 17834314, 8565775, 17260400,
--6508486, 22857280, 2354179, 19599546, 10904385, 3557844, -9250823, -23316840, -15980500, -11979201,
--6832756, -5530308, 12598750, 6252399, -6980933, 20912732, 2502892, -20610474, 25748866, 1627793,
--10776073, 8959302, -20900922, -4101694, -13253195, -4248260, -2226404, -4167192, -9427453, 2636036,
--18028126, -7067906, -6402723, -24557012, 3133716, -17804786, -12491376, -19961398, 4159676, -15049029,
--4392141, -4965519, 316217, 7630547, -5970005, 10741713, 701690, 14252849, -3157338, 12424267,
-15684147, -18545668, -143345, 5134097, 11539503, 598611, 13841069, 4772783, 13340168, -73014,
--10007274, -6120866, -885300, 8828842, -1899449, -3634079, -806917, 16199006, 10040560, -3380139,
--13062606, 4820564, 7153268, 5604396, 13996225, -18262200, -14034879, -3332895, 1170379, -4561256,
--66572, -4552666, -12061342, 34022584, -16681116, -17788144, 13706851, 9434969, 3146601, -4910222,
--5065914, 16158204, 12816182, 19209242, -5989332, -5346698, -26461830, 30945240, 14993731, -42274288,
--21770116, 12966506, 19252190, 18304614, -11378979, -10181220, 23333484, 4969814, 5892159, 15315317,
-13412109, -23515482, 7820599, 9366787, -975494, 10542534, 2878702, -3337727, 3066607, -7890392,
-39443368, 9754944, 5888937, -1412507, -3886409, -2943663, -20981452, 3853660, 7390565, -5502390,
--6191196, -35802848, -15911243, 7071664, 7252053, -11992622, -10266582, -1971390, -15715285, 6605123,
-7486128, -2851322, 8330626, 13562433, 2049236, -1175747, -3054796, -7959648, -932008, 714038,
--24522116, -4090420, 7869454, 15227807, -26409218, 5443871, 12195023, -3256122, -11020886, -13343390,
-23995446, 19304268, 136902, -15931644, -19663970, 12828530, -9541270, 3790309, -8006356, -6330245,
-807454, 8846022, 16480326, -30587146, -40808632, -27692338, -36535676, 31869194, -21294448, 13101798,
--3862249, -24973624, 4241817, -6437619, -9747965, -32542968, -30532386, -22106196, -8897025, 1666447,
--17767742, -4573604, 4366371, 14721000, 881542, -8335458, -199179, -8942659, 13419088, -16639240,
-23507966, 20966956, -5089536, -5970542, -28315646, -15865609, -17281338, 2603287, 3619047, -4034585,
-22836878, 7104413, 18497350, 4233227, -2318746, -7889855, 16655346, 12146704, 5167920, -16261283,
-8938364, -27890444, -3241627, -2434710, -18948322, -2512556, 205622, 22385906, 14417131, 1049583,
-10082973, 267899, -21427054, 11658689, 3113851, 18727668, -9996536, -19640348, 12607340, -35637492,
--39814348, -4414690, -25113210, 939524, -18324478, 16623671, -12901008, -2084670, 4049617, 5801964,
-21471078, 6337761, -8768713, 21838834, 7662759, -38911328, 6980396, -23605140, -954557, 3728569,
--2524367, 18247168, -4915590, 2791729, 5469641, 1023813, -11582990, 18534394, -10408853, -1692217,
--21732534, -653909, 4499515, -4180614, -7192997, -10919954, -11019812, 28440200, 1861868, 14427332,
--25189446, 2301566, 370978, 8272107, 16144245, -18410914, 32309966, 44924820, -1393717, 3800509,
--15214922, 6704444, 11266773, -9362492, 2927557, 8022999, 18311594, -1103270, 1662152, -5974300,
--14777909, -23541790, 12319040, -17710298, -6813966, -11655467, 5446019, 15354508, 14279156, -2779381,
-5428302, -31059592, 20688858, -3029563, 4194573, -7036767, 19591494, 50554448, 14779519, 36686000,
-12051678, -38812544, 15731391, 10415296, -12582107, 2310156, 25128244, 782758, 24056112, 20766704,
--24504936, 13277355, -24520506, -17074642, -2123861, 49393736, 15515032, -22840100, 21424370, 13268765,
--27179090, -12490302, -1665374, 27437324, 4319127, -25908316, -14131516, -1235877, -6779606, 15010911,
-22504554, -8531953, 19815368, -13117367, -16911434, -1081795, 40611064, 3255048, -23018878, 12684112,
--901406, -2843268, 11501922, -26892938, -22577032, -22180822, 16026670, -14736570, 5295158, 6146635,
-24349780, 11345693, 25025700, 2024003, -892816, 19624242, 37372120, 21461952, -36617816, 115427,
-3739306, -6874632, 7244536, 9586367, -28293634, -4849018, 5696737, 4473209, -33868500, -32265404,
--18213346, -19040126, 32853278, -19777788, 14944876, -39052528, 28445032, 30814780, 9168145, 33614024,
--34308200, -17420388, -8866423, -50425064, 28802050, 2492692, 18078054, 22656490, 23097260, 1443109,
--41876, 22565222, -2923262, -27362700, -27434640, 16818018, -31062814, 30843234, -8133595, 6630356,
-31561030, 27586574, -13120588, 42113228, -23613194, 2640868, -24551644, 4051765, -7755101, 16595754,
-6638946, -18061948, 17235704, 24667608, 37262064, -20843476, 8871255, 22332220, -29332480, 1574106,
--11016591, -43916576, -17671106, 12058658, -22846542, 8975408, -18869938, -75162, 31297964, -13602698,
-14280229, 34846144, 26277146, 9885404, 47508244, -70057896, -11203422, 24725052, -338229, 15074798,
--19274202, -36748812, 49643380, 1339493, -19822348, 12712566, 33946348, 76958296, 33686504, -13520557,
-7113540, 4147328, 35897336, -31341986, -4522601, -14147622, -21046414, 31604516, -13215077, 41010496,
--5447093, -28774670, 45725296, 69963408, -11294690, -20164334, -34556232, 9521942, 34743600, 8835821,
--9213242, -20924544, 3804267, 7091528, -6600291, 7369090, -4831302, -9327058, -12972949, 12294881,
-13283797, 721555, 18510236, -17535278, 39679592, 33109902, 16259136, 493384, 724239, 7942469,
--23650774, -17043504, -23013508, -8974334, -7648800, 15501611, 9761387, 24777666, -12763032, -247497,
--11581379, 28068148, 47805672, -9107478, -34161096, -17838610, -3478924, -40431212, 31491774, -55781960,
-14661408, 28398860, 23214298, -21980568, 3428995, 30120068, -62393528, -23604066, 9411884, -969589,
--32905356, -19937238, -6537477, -5373004, 41301480, -24927454, 6980933, 40164388, 549219, -12699681,
-32326608, 24263344, -7496329, -20528870, -32758252, 6790880, 62460100, 14533096, 31698470, -2179696,
-2156074, -1890323, -8097087, 665183, 2215130, 15957951, 4363150, -11589969, 9810242, -10055055,
--12512313, -12672838, -380641, 13356275, 2024540, 10825465, 10132365, 9488120, -9623948, -14944876,
-4206921, -10122164, -27915140, -7293928, 5367099, -8705899, 30901752, -31945430, 25810606, -7643431,
--652298, 40248676, -7060390, -217433, 50580220, -7009387, -21891448, 4725538, -18928458, -3083787,
--17966922, 58399744, -17281874, 14959908, -14893873, -4962298, -9037685, 10852309, -15681999, -33686504,
-14183056, -2382633, -40432824, 22306986, -11774653, 23970212, 47292960, -21715354, -2315524, 1363652,
--8814347, -18965502, -13968307, -5369, 65717832, 33326262, 68917048, -38683160, -10108742, 22677964,
--21693880, 16357920, 70796096, 16674137, 10072772, -18898930, -17866528, 20124606, -11006927, 28507308,
--5010616, -6837051, -8667244, -41091024, 9462350, 48704392, -26302916, 29279328, 25439092, -17023640,
--5471252, 19945828, -33099166, 15754477, -2856153, 24028194, 7736310, -20993264, -7201050, -41672456,
--21712670, 18516140, 13744432, 31102006, 48962092, 4475356, -34360, -43967044, -27194122, -26688390,
--22117470, 10230075, -18571438, -6156299, -5104032, 11679627, -34038688, -6628745, 15811922, 7369090,
-25810070, -5175973, -14405320, 25300578, -6418292, 14702747, -22441204, -14558329, -5037997, -9174050,
-11218991, 17125646, 25494388, 4976257, -273804, -22541062, -8339753, -14068165, 19857782, -19222664,
--66339528, 652835, 109888352, 96932040, 93436480, 38037840, -37827924, -55237576, -52443700, -49043156,
--86917792, -63958504, -60028072, 46699180, 74549896, 58791124, 96621728, 78341280, 18374406, -4389994,
--32380296, -66948876, -37866580, -70261904, -36079872, -23874650, 2181307, -9813463, 19338090, 29451664,
-52729852, 31583578, 55368572, 40319544, 44469016, 3055869, -32788318, -16072304, 3425237, -38233260,
--48099876, -65521872, -62034896, -45586248, -3949223, 32195612, 15228880, 46865072, 35624068, 53540524,
-50093276, 52087216, 62687732, 32930052, -1418413, -8622684, -35610648, -30640296, -101640400, -82641080,
--63600412, -50838992, 10344429, -20689932, 6112812, 74770552, 93920200, 125083944, 82671680, 50870668,
-38315404, 13654238, -38030324, -33484102, -53408456, -67266168, -40710920, -8149701, 1158567, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-4986994, 1199907, -2861522, 4595615, -4682051, 1912871, -8588324, -650688, -3399467, -5342403,
+-4507032, -2642479, -223338, -1012002, 5650567, -1739462, 1135482, -736050, -292595, -4706748,
+5520107, 1690070, 1017370, 1465121, -1102733, -1225139, 1391033, 5286568, 2262374, -1039919,
+-404264, -153545, -1214939, 110595, -889058, -490163, 70867, 2984466, 355945, -2333241,
+1708860, -2499671, 7295539, -4435091, 544924, -76236, -5440650, -831613, 2388539, -3060701,
+-1372242, -998043, 3630858, -1977296, -1393180, -223338, 417686, 781147, -537945, -1773822,
+-4234838, 797253, -2205466, -3162707, 755914, 1193464, -232465, 857383, 2074469, 2114735,
+-301721, 788127, 358093, 2738579, -3060164, -3017752, 3038689, 3194919, 6111739, -8471286,
+1552094, 6108517, 10254771, -830002, 5626944, 61203, 5075041, 1619740, 7965554, 141197,
+-3046206, 5906654, 7613904, 7854959, 4099546, 1524177, -3433826, -2118493, 384400, 4155918,
+-2324114, 2094333, 104153, 4682051, -2493229, 181462, 713501, -4922033, -3421478, -1233193,
+-5844914, 1610613, -1933809, 258772, -1140851, -4236985, 3132642, 5722507, -1529545, 743029,
+83215, -555661, 5325760, -6663105, -450435, 3199214, 336081, 1237488, -2121177, -5456756,
+-1932198, 2571075, 2190433, 3283503, -1003412, 439160, -454730, 1517197, -1491964, 6407555,
+-362925, -157840, -4524748, 932008, -3438121, -1762010, 1730335, 3077344, 5479305, 784368,
+5145371, 6923488, 11277510, 1492501, 5629092, -2043331, 3358128, 4340065, -1302449, -3484292,
+5940477, 10184441, -1954210, 1139777, 3984656, -4859219, 3084860, 4365835, -8844411, 2528662,
+928250, -1970853, 64425, -9229885, 445066, 2639258, -4334159, 864899, 231928, 5992553,
+4321274, -2165737, -548682, -493384, -6219650, -4163971, 788663, 2635499, 670552, 2927557,
+-4064113, 734439, 2192044, 545461, -3743601, -2699387, -733903, 1481227, 3250217, 3380139,
+2288681, 3935264, 3832722, -3961571, -1117228, 365609, 5404680, -581431, 3932043, -2236067,
+-2383170, -528281, -4522601, -1881733, 1171989, 3079492, -3800509, 4308926, -869731, -753230,
+-515396, -1105417, -1727114, 1396938, 3426847, 1868848, 5583995, -5913096, -1457605, -1082332,
+-3233574, 1156420, 6731288, 9020505, 5553930, -2530810, 4161287, -2629594, -1427540, -8106751,
+-6085969, 2630131, 6238440, 5694590, 6355478, 1155883, 526670, 3595961, -4895189, 4896263,
+4338991, 157840, 3753802, 8920110, 6414534, 1513976, -6382322, -41876, 2400887, 1182727,
+1276142, -7441568, 1916092, 1082869, 5012227, 5073967, -1480153, 3166465, -2398202, -3131031,
+4067871, 1938104, -6699612, -6789807, -2661806, -3936875, -2530810, -3188476, -7763691, -7490423,
+-448824, 2312303, 161598, -1057636, -5153961, 410169, 6589017, -2101850, -1785096, 2076080,
+224949, 4274030, 2567317, 2010045, -2702071, -4023848, 7135552, 2765959, -2407329, 4139275,
+-216896, 3162170, -2510409, 301185, -12742094, -7514046, -2340757, 2410551, -5245229, 1597728,
+-1426466, 3665218, -877247, -7142531, -5662915, 4935991, 4059818, 10213432, 9040906, -1372779,
+6548752, -9822590, -1573569, 7633768, 2327872, 1770600, -976568, -3208341, -1462973, 1056562,
+-839129, -297427, 3904662, -4814659, 1119376, 1751273, -66035, 3041374, -3255048, -2711198,
+1809792, -2108292, 2784750, -5379984, 966368, -3230889, -1190780, -3598646, -2605435, -4087735,
+-5967320, 3722663, 70330, 6344741, -5807870, -5072357, 94489, 1220308, -544387, -1211718,
+590558, 3828963, 2022930, 834297, -2388002, -2501282, -1174137, -4715874, 1047435, -1198833,
+901943, -183610, -4682588, -370441, 110059, -5311264, 813896, -869194, 1563368, -607201,
+-4278861, 4320737, -6703907, 2657511, -7512972, -1450088, 515933, -5773510, 5456219, 3932043,
+-11234024, -1279363, 2041183, -1183264, -4846871, -6803765, 1498407, -3497177, -5426691, -2882460,
+3406446, 2765959, 8178155, 10331007, -798327, 9210557, -5636071, 3520263, 4193499, -1004486,
+4130685, -2483028, 195958, -794032, -1822677, -1190780, -2054068, 7613367, -330176, -6020471,
+-1282585, 3703873, 2539936, 2914672, 733903, -2938831, 5817533, 11400991, 839129, 943282,
+798327, -1099512, 1961726, -1020055, 6768332, -5323075, 6484864, 4157528, -3899830, 1821066,
+4284230, 2584497, -4683125, -5486821, -10188736, -1932198, -796180, 1089848, 4205310, -1173063,
+2831457, -1034550, -2500208, -2812130, 5632850, -1108638, 5978595, -7617125, -142808, 3257196,
+1059246, 386547, 3758097, 11959336, 13535589, -3384971, -635655, 3111704, -2422362, 9146133,
+8402030, -5336497, 8215199, 6897181, 2222646, 4053912, 3105261, 1918240, -1157494, 743566,
+731218, -4625143, -6226092, 1611687, -2073932, 7516, 530965, -5050882, 4676146, 10419591,
+-828929, -6180458, 9613747, 1258425, -230854, 3991635, -2341831, -3041911, 893353, -3827890,
+919660, 10322417, 3811247, -119185, 3054259, 5569499, 13939853, -2460480, 5609228, -1340030,
+-7073275, 4075387, -370441, -2225330, 2095407, 8831527, 1489280, 1453310, -974958, 3436511,
+12052752, 5636608, 697395, 1140314, 2442226, -3908957, 5606543, -1889786, -13864691, 1380295,
+-2497524, 7552700, 7891466, 3840775, 204548, -15011984, -2362232, -6016176, -8428336, -1457605,
+-6180458, 885300, 4201552, -6714108, 7006166, -15603079, 1715303, -4175245, -9235790, -10975252,
+11529303, 6683506, 197032, -9647570, -7306276, 4481262, -13933411, -8696235, 2597382, 3482145,
+12996034, -1114007, 562641, 10700911, -6543383, 10524280, 2826089, 4269735, -2483565, -5294084,
+-1252520, 8875013, -4989142, 1351841, 9774809, -3117610, -3594888, -4346507, -6682969, -4654671,
+-4524748, -7694434, -1568737, 3146601, -3406983, 2470143, -3285113, -3639448, 5245766, -6825240,
+3962107, -5718749, -8551817, 984621, 5978058, 1010391, -2581275, 3169686, -5952825, -2139968,
+-8122320, -12776454, -6994354, 2384244, -4812511, 15657303, 5155035, -10125922, -6393059, -947577,
+17137456, 10777147, 11797738, -3620658, -16230681, -1559610, -8211441, 1859184, 3858491, 8593693,
+-3947075, 3623342, -6558415, 894427, -5762773, -15551003, -8050380, 5588290, -5386963, -12379169,
+-11203959, -10856604, -16357383, 1794223, -5610301, -12857521, -11151346, 1723893, 16107201, -2394981,
+-2483565, -5592048, -9487583, 1727651, -3675955, 791348, -11885785, 503048, -12391518, 1486059,
+-864362, 6478958, 5378910, 5348845, 3033858, -740882, 4804458, -3345780, 9307731, 2314451,
+4774393, 2520609, -2872260, 3002719, 9359271, -1468342, 5274220, -1573032, 14635101, 1611150,
+5557688, 450435, -8055211, -6493991, 370978, -3150359, 1956358, -2377265, 4888747, 4009889,
+5674726, -2889976, 3294240, -11549704, 6123550, 15605764, -8165270, -23688356, -3905736, -8258149,
+-12440910, 6733435, -23758686, -3056943, -8417062, -4569845, 6928856, -7525320, 10133438, 8739185,
+1462436, 7897908, 784368, 4220342, -6100464, -10851772, -11938935, -6637335, -10919954, 8728447,
+11420318, -354872, -5793911, 3400004, 3416647, -3998615, 1007170, -18649822, -9761387, 8936216,
+-4591857, 453119, 8810052, -601295, 5551782, 4777078, -2193655, 5450851, 213138, -9764071,
+11463805, -7563438, 854162, 927713, -5823976, 4440460, 7023882, -3564823, 8001524, 1249299,
+-170188, -6527814, 9054328, 418759, -6466074, -1794223, -13407277, -5287105, -7367480, -378494,
+10255845, 3478387, -169651, 970663, -8182450, 2979097, 7932268, -7960722, 1722282, 15421080,
+-4177393, 3532611, 4045859, 41747620, 9862856, -5964099, -7975755, -1242856, -2172180, 7069516,
+-1146219, 5925981, 12502650, -5209796, 1155346, -8288750, -4852240, 2189360, -719407, 5807870,
+-11224360, -7260642, 6206228, 11541651, 8468065, -666794, 3469260, -3189013, -6442451, 4881767,
+9968619, 9466645, 12451110, -9947681, -1554241, -5788542, -11275900, -1721208, 1422171, -2819109,
+6360847, 7147363, 835371, 3469260, -1278290, -12914430, -6049462, -17208324, -16419123, -5131949,
+6813966, -2572686, -6656663, 14561550, 6594386, -557272, -12512850, -547608, -3001109, -9642202,
+1400159, -4290136, -4964982, -13280039, -270046, -4672925, -13280576, 420370, 13121662, -7086159,
+-1671816, 4946729, -4152160, 3577171, -3650185, 10805601, 519691, -6247030, -8180302, 9937481,
+-33889976, -18615998, 17251274, -4185446, 654983, -8776229, 7235410, -2774012, -13408351, 6582038,
+17394080, 2669859, -16210817, 4780836, -3960497, -3241627, 9755481, 11028402, -2015950, -1859721,
+21973052, 5344013, -3842385, -13575855, 5527623, -19610820, -16990354, -14824080, 5480379, -2610266,
+-2269890, 13187697, 4502737, -12954695, -11683922, 3058017, 12105365, 4560182, -2173254, 886911,
+7807714, -6026376, -14648523, 18267032, -6092948, 1986959, 6547678, 1215476, 1717450, 18723374,
+-492311, 11929809, -300111, -12481712, 950798, 2673617, -3475702, 2365990, 7581154, -6360847,
+-2860985, 2116345, -25693032, 6488622, 4038343, -217433, 4867272, 4554276, -10295573, 4312684,
+32744830, 14649597, 7086159, 2774549, 6881075, -24525874, -22889492, 16239271, 16368657, 5945846,
+8828305, -5699959, 26435524, -2621541, 9817221, 7567733, -12828530, -4520453, -6136972, 16203301,
+-9692131, -2298881, 9454297, 8884677, -9505836, -1857037, -26759794, 5570573, -3273302, -7103339,
+1954747, 1376000, 1634235, 3102040, 8639327, 1053878, 9508521, 1867774, 4507568, -1812476,
+-8752070, -8338142, 16831976, -5330055, -12560095, -9636833, -4899484, -4942971, 7239168, 5387500,
+5563057, 8358007, 2151242, -8516920, 5275831, -14394583, -5041755, -12448426, 9149354, -15183246,
+-11522324, -2490007, -5355824, 5755256, 10924249, -7612293, 10370735, 17834314, 8565775, 17260400,
+-6508486, 22857280, 2354179, 19599546, 10904385, 3557844, -9250823, -23316840, -15980500, -11979201,
+-6832756, -5530308, 12598750, 6252399, -6980933, 20912732, 2502892, -20610474, 25748866, 1627793,
+-10776073, 8959302, -20900922, -4101694, -13253195, -4248260, -2226404, -4167192, -9427453, 2636036,
+-18028126, -7067906, -6402723, -24557012, 3133716, -17804786, -12491376, -19961398, 4159676, -15049029,
+-4392141, -4965519, 316217, 7630547, -5970005, 10741713, 701690, 14252849, -3157338, 12424267,
+15684147, -18545668, -143345, 5134097, 11539503, 598611, 13841069, 4772783, 13340168, -73014,
+-10007274, -6120866, -885300, 8828842, -1899449, -3634079, -806917, 16199006, 10040560, -3380139,
+-13062606, 4820564, 7153268, 5604396, 13996225, -18262200, -14034879, -3332895, 1170379, -4561256,
+-66572, -4552666, -12061342, 34022584, -16681116, -17788144, 13706851, 9434969, 3146601, -4910222,
+-5065914, 16158204, 12816182, 19209242, -5989332, -5346698, -26461830, 30945240, 14993731, -42274288,
+-21770116, 12966506, 19252190, 18304614, -11378979, -10181220, 23333484, 4969814, 5892159, 15315317,
+13412109, -23515482, 7820599, 9366787, -975494, 10542534, 2878702, -3337727, 3066607, -7890392,
+39443368, 9754944, 5888937, -1412507, -3886409, -2943663, -20981452, 3853660, 7390565, -5502390,
+-6191196, -35802848, -15911243, 7071664, 7252053, -11992622, -10266582, -1971390, -15715285, 6605123,
+7486128, -2851322, 8330626, 13562433, 2049236, -1175747, -3054796, -7959648, -932008, 714038,
+-24522116, -4090420, 7869454, 15227807, -26409218, 5443871, 12195023, -3256122, -11020886, -13343390,
+23995446, 19304268, 136902, -15931644, -19663970, 12828530, -9541270, 3790309, -8006356, -6330245,
+807454, 8846022, 16480326, -30587146, -40808632, -27692338, -36535676, 31869194, -21294448, 13101798,
+-3862249, -24973624, 4241817, -6437619, -9747965, -32542968, -30532386, -22106196, -8897025, 1666447,
+-17767742, -4573604, 4366371, 14721000, 881542, -8335458, -199179, -8942659, 13419088, -16639240,
+23507966, 20966956, -5089536, -5970542, -28315646, -15865609, -17281338, 2603287, 3619047, -4034585,
+22836878, 7104413, 18497350, 4233227, -2318746, -7889855, 16655346, 12146704, 5167920, -16261283,
+8938364, -27890444, -3241627, -2434710, -18948322, -2512556, 205622, 22385906, 14417131, 1049583,
+10082973, 267899, -21427054, 11658689, 3113851, 18727668, -9996536, -19640348, 12607340, -35637492,
+-39814348, -4414690, -25113210, 939524, -18324478, 16623671, -12901008, -2084670, 4049617, 5801964,
+21471078, 6337761, -8768713, 21838834, 7662759, -38911328, 6980396, -23605140, -954557, 3728569,
+-2524367, 18247168, -4915590, 2791729, 5469641, 1023813, -11582990, 18534394, -10408853, -1692217,
+-21732534, -653909, 4499515, -4180614, -7192997, -10919954, -11019812, 28440200, 1861868, 14427332,
+-25189446, 2301566, 370978, 8272107, 16144245, -18410914, 32309966, 44924820, -1393717, 3800509,
+-15214922, 6704444, 11266773, -9362492, 2927557, 8022999, 18311594, -1103270, 1662152, -5974300,
+-14777909, -23541790, 12319040, -17710298, -6813966, -11655467, 5446019, 15354508, 14279156, -2779381,
+5428302, -31059592, 20688858, -3029563, 4194573, -7036767, 19591494, 50554448, 14779519, 36686000,
+12051678, -38812544, 15731391, 10415296, -12582107, 2310156, 25128244, 782758, 24056112, 20766704,
+-24504936, 13277355, -24520506, -17074642, -2123861, 49393736, 15515032, -22840100, 21424370, 13268765,
+-27179090, -12490302, -1665374, 27437324, 4319127, -25908316, -14131516, -1235877, -6779606, 15010911,
+22504554, -8531953, 19815368, -13117367, -16911434, -1081795, 40611064, 3255048, -23018878, 12684112,
+-901406, -2843268, 11501922, -26892938, -22577032, -22180822, 16026670, -14736570, 5295158, 6146635,
+24349780, 11345693, 25025700, 2024003, -892816, 19624242, 37372120, 21461952, -36617816, 115427,
+3739306, -6874632, 7244536, 9586367, -28293634, -4849018, 5696737, 4473209, -33868500, -32265404,
+-18213346, -19040126, 32853278, -19777788, 14944876, -39052528, 28445032, 30814780, 9168145, 33614024,
+-34308200, -17420388, -8866423, -50425064, 28802050, 2492692, 18078054, 22656490, 23097260, 1443109,
+-41876, 22565222, -2923262, -27362700, -27434640, 16818018, -31062814, 30843234, -8133595, 6630356,
+31561030, 27586574, -13120588, 42113228, -23613194, 2640868, -24551644, 4051765, -7755101, 16595754,
+6638946, -18061948, 17235704, 24667608, 37262064, -20843476, 8871255, 22332220, -29332480, 1574106,
+-11016591, -43916576, -17671106, 12058658, -22846542, 8975408, -18869938, -75162, 31297964, -13602698,
+14280229, 34846144, 26277146, 9885404, 47508244, -70057896, -11203422, 24725052, -338229, 15074798,
+-19274202, -36748812, 49643380, 1339493, -19822348, 12712566, 33946348, 76958296, 33686504, -13520557,
+7113540, 4147328, 35897336, -31341986, -4522601, -14147622, -21046414, 31604516, -13215077, 41010496,
+-5447093, -28774670, 45725296, 69963408, -11294690, -20164334, -34556232, 9521942, 34743600, 8835821,
+-9213242, -20924544, 3804267, 7091528, -6600291, 7369090, -4831302, -9327058, -12972949, 12294881,
+13283797, 721555, 18510236, -17535278, 39679592, 33109902, 16259136, 493384, 724239, 7942469,
+-23650774, -17043504, -23013508, -8974334, -7648800, 15501611, 9761387, 24777666, -12763032, -247497,
+-11581379, 28068148, 47805672, -9107478, -34161096, -17838610, -3478924, -40431212, 31491774, -55781960,
+14661408, 28398860, 23214298, -21980568, 3428995, 30120068, -62393528, -23604066, 9411884, -969589,
+-32905356, -19937238, -6537477, -5373004, 41301480, -24927454, 6980933, 40164388, 549219, -12699681,
+32326608, 24263344, -7496329, -20528870, -32758252, 6790880, 62460100, 14533096, 31698470, -2179696,
+2156074, -1890323, -8097087, 665183, 2215130, 15957951, 4363150, -11589969, 9810242, -10055055,
+-12512313, -12672838, -380641, 13356275, 2024540, 10825465, 10132365, 9488120, -9623948, -14944876,
+4206921, -10122164, -27915140, -7293928, 5367099, -8705899, 30901752, -31945430, 25810606, -7643431,
+-652298, 40248676, -7060390, -217433, 50580220, -7009387, -21891448, 4725538, -18928458, -3083787,
+-17966922, 58399744, -17281874, 14959908, -14893873, -4962298, -9037685, 10852309, -15681999, -33686504,
+14183056, -2382633, -40432824, 22306986, -11774653, 23970212, 47292960, -21715354, -2315524, 1363652,
+-8814347, -18965502, -13968307, -5369, 65717832, 33326262, 68917048, -38683160, -10108742, 22677964,
+-21693880, 16357920, 70796096, 16674137, 10072772, -18898930, -17866528, 20124606, -11006927, 28507308,
+-5010616, -6837051, -8667244, -41091024, 9462350, 48704392, -26302916, 29279328, 25439092, -17023640,
+-5471252, 19945828, -33099166, 15754477, -2856153, 24028194, 7736310, -20993264, -7201050, -41672456,
+-21712670, 18516140, 13744432, 31102006, 48962092, 4475356, -34360, -43967044, -27194122, -26688390,
+-22117470, 10230075, -18571438, -6156299, -5104032, 11679627, -34038688, -6628745, 15811922, 7369090,
+25810070, -5175973, -14405320, 25300578, -6418292, 14702747, -22441204, -14558329, -5037997, -9174050,
+11218991, 17125646, 25494388, 4976257, -273804, -22541062, -8339753, -14068165, 19857782, -19222664,
+-66339528, 652835, 109888352, 96932040, 93436480, 38037840, -37827924, -55237576, -52443700, -49043156,
+-86917792, -63958504, -60028072, 46699180, 74549896, 58791124, 96621728, 78341280, 18374406, -4389994,
+-32380296, -66948876, -37866580, -70261904, -36079872, -23874650, 2181307, -9813463, 19338090, 29451664,
+52729852, 31583578, 55368572, 40319544, 44469016, 3055869, -32788318, -16072304, 3425237, -38233260,
+-48099876, -65521872, -62034896, -45586248, -3949223, 32195612, 15228880, 46865072, 35624068, 53540524,
+50093276, 52087216, 62687732, 32930052, -1418413, -8622684, -35610648, -30640296, -101640400, -82641080,
+-63600412, -50838992, 10344429, -20689932, 6112812, 74770552, 93920200, 125083944, 82671680, 50870668,
+38315404, 13654238, -38030324, -33484102, -53408456, -67266168, -40710920, -8149701, 1158567, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
{
-5803575,
--3656628, -530965, -5476084, 4852240, -4402342, -5283884, 2318746, -1553168, -1198296, 1406065,
--6242198, -1283658, 4512937, -3128884, -1114007, -4889284, 1396401, -3642669, -6628745, 2744484,
-1201517, 2328409, -2642479, -3220689, 3591130, 1022202, 4066260, 4225174, -4557497, 4128001,
--1251446, -1247688, 2871723, -680215, 2598992, 4476430, 4192425, 804770, 1748052, 1620813,
--3750043, -1819456, -1436130, 700080, 3224984, -6259378, -1509681, -338766, -448824, -2866354,
-462783, 2571612, -3308736, 2246268, -2618856, -6324876, 1282048, 1240172, 780073, -2477659,
--766652, -1642825, 2947421, -777389, -151934, 130997, 2049773, 665183, 1256815, 1723356,
--4498442, -2363843, 2320356, -540629, -1096290, 1130650, -1292785, 4477504, 4966056, 2718714,
--1960653, -7510287, -6949794, 2547989, 3948149, -1427540, 7396471, -1396401, 4405026, -5229660,
--4670240, 2071248, 165356, -1323924, 1944547, 4858145, -2109366, 715112, -2763812, -225486,
-245350, 2022393, 1826972, 2523830, 403727, 1525250, 5492727, -2065342, -2572686, -2718714,
--4977330, 1491964, -1042066, 9170292, 1779190, -622233, 728534, 5592048, -494995, -1136019,
--1389959, -3169686, -570694, 4323422, -624918, 1840394, 4330401, -1267015, -270583, -6825777,
--4017942, -6212134, -1182190, -1734630, 988916, 446677, 974958, 2359548, -1435056, 1207960,
-157303, 691490, 1060320, -2147484, 2291902, -566399, -2481954, -113280, -2469606, -506806,
-499827, 5185100, 12045773, 4832912, 2807298, 3416647, -7167227, -782221, 3010772, -910533,
-1141924, -6435472, 6318971, 8691940, 1429687, 3910568, -1880659, -5010616, -7903814, -8535711,
--5771899, 6855305, -6488622, -4032438, -5502390, 1792612, 4454418, 903017, 544387, 2576444,
--325881, 1645509, 5500243, -733903, 4559645, -4363687, 4152160, 2989834, 2611340, -2275259,
--7284265, -1484448, 4046396, 2493766, -2095944, -190052, 1343788, -252866, -3563749, -675921,
-2859911, -956704, 235686, -1660542, -475131, 273804, 887985, 5153424, 2027761, -2540473,
-335007, 494995, -1837172, 1009317, -2631204, -204011, 4008815, 1447941, 4505958, -3185792,
--2974802, -1547799, -877784, 2553358, 5090610, -2758443, -3988414, 4845260, 733366, -1968169,
-2202781, -466541, 3538516, 1500017, -3993783, -3764002, -4282083, -680215, -3501472, -7350837,
--7009387, 7195144, -181999, 1497333, -81604, 4368519, -6529961, 9628243, 8543227, 410706,
-420370, -25233, 215285, -996432, 3315715, 2565706, 166430, -5549098, 2332704, -1763084,
-2590939, -828929, 5801427, -1433445, -3467649, -1619203, -981937, 2089502, -102542, 3534221,
--5884642, 3040837, 941672, -3330210, 9075803, -1564442, -1389959, -311922, -226023, -2542621,
--865973, 4744328, 3908957, -8730058, -4139812, 4195110, 1158567, -2233383, 7363185, 73551,
-1569811, 7127498, 2929168, 5522254, 1522566, -2494839, -3104188, -6094559, -5698885, 430034,
-2879239, 6673843, 204548, -3558917, -9801115, -3401077, -4774930, 4456029, -3265249, 2896956,
--3530463, -1446330, 8288750, 4065187, -5523865, 2520072, 7904888, 1165547, -2789581, -5557151,
--6693707, -4577899, -6730214, 4459250, 1001264, 2452426, -1301912, -3044058, -3219078, -5922760,
-296353, -191663, 1395328, -1453846, -5391258, 74088, 5739150, -1290101, 59056, -2883534,
--5737540, -8504035, -734976, 6085432, 2218888, 612570, -2877091, 747861, -4600447, -1546725,
--3459059, 396211, 788663, -5290326, 5924908, -3386582, 7539278, 2785286, 731218, -3489661,
--1775969, 1857037, -408022, 1744831, 4068408, 726923, 1634235, -4576825, 2676302, -2362232,
-6958384, 8446590, 3971234, 5626944, 2718178, -1015223, -5990406, -4006668, 462783, 4374961,
-4110284, 3312494, -7938710, 1073742, -8487392, -2684, 1258425, 820339, 3774203, 415538,
-566936, 14981920, -1913945, -6570763, -7161321, 7540889, 4989679, -5633924, 1326608, -6287832,
--2752537, 241592, 7104413, -8835285, 2536178, -316217, 1362042, -646929, 9024263, -4665945,
-2503429, -1391569, -2463701, 1408212, -500364, 2749853, -2847027, -2551748, -7755101, 1231582,
--2629594, -1627256, 523986, -2694555, 2174327, -4308926, -2678449, -7601555, -338229, -6747931,
--2975339, -8031589, 5852967, 1233729, -2612414, 5275831, -6259915, -17717, -11803107, -616865,
-3821984, -313533, 3222836, 7395397, -2852395, -1053878, 8962523, 3882114, 3228205, 5609764,
--3339874, -8628052, -1418413, -5240934, 3079492, 8316668, -2464238, 2044404, -1004486, 4144644,
-4841502, 1642288, -2815351, 1975148, 1308354, 8994735, -1330366, -2060511, -12218108, -3580929,
-9268539, 8885750, 5832029, 4436165, 13162464, 673773, -15654082, -4166118, -2593087, -3952444,
-8373576, -1488206, -3033858, 9574556, 1523640, -4199941, -1401770, 3700651, -3473555, -1567663,
-1168231, -1457605, -5491653, -2700461, -294205, -5514738, -2464774, -2465848, 3630858, -2741263,
-7036230, 6624450, 598074, 6271189, 4523675, -3277597, -1103270, -2583423, -10296110, 791885,
-1988570, -10074383, -1520955, -3155727, 3329674, 8419747, 1191853, -9460739, 1146756, -3984119,
--6245956, 4329864, -1628330, -7072738, 2685428, 1759326, 6855842, -1392106, -1163936, 4271345,
-5888400, 5630702, -7317551, 3376381, 6119255, -15912317, 6524056, -1629403, -3821447, -3184718,
-2580739, -1423245, -9695889, -10043781, 1045288, 15884937, 4153770, -11432666, 2382096, 9434969,
--6970732, 1261110, -1938104, 5623723, -281857, 5179194, 13571023, 10074920, 6018860, -243739,
--1422171, -6414534, -7138236, 2688113, -18217104, -2886218, 8176007, 881005, -1234803, -8666170,
--3401614, -469762, -746251, -4292820, -9242770, 9797357, -3823595, -2344515, -2007360, -8406862,
--9665824, -503585, -4951561, 402116, 3939559, 3100430, 3241627, -7637526, -2412161, -3940096,
--2825015, 11426224, -1804960, -5804649, -212064, 14667850, -8698919, 2024003, 10474888, -234076,
--3266323, -6267431, 2631204, -91268, 7205882, -5144297, 5907728, 4578435, 9561134, 4087735,
-8986682, 13479218, 7854422, 1596117, -3068754, -4704063, -11218991, -2927557, 7034620, -14696304,
--6351183, 13889924, -19089520, -3147674, 10349261, 13527536, -1562831, -13034689, 1648194, -4813048,
-17613124, 8177081, -12414066, -7585986, -2059974, -7256884, -15562814, -7408819, -6994891, -5276368,
--12621835, 6567542, 2061584, 7997766, -4888747, -1998234, -11099806, -818191, -9641128, 1298154,
--6443525, 1709934, 3215857, -14377403, -4925254, -5279589, -3991635, 3479997, 3053185, -4373888,
-14407468, -622233, -3848828, -2399276, 1346472, -3081639, -1236951, 5706401, 4560182, 6351183,
-7926899, 7861938, 587874, 5269925, -2412698, 11627013, 12088722, -5734855, -3157338, 7781407,
--223875, -17916456, 785442, -8796093, 5487358, 6552510, -9701257, -12756590, -5564130, -12342125,
--16493211, 11525545, 1641751, 6241661, -8913131, -10219338, -12989055, -9569187, 4602595, -10448582,
--8500277, 11711839, -2601140, 86973, 3401077, 6475200, -4963909, -4604742, 2464774, -3791919,
-2359548, -1127429, -5565741, -12036646, -17581448, 5438503, -12498355, -12409234, 1083942, -3668976,
--371515, -7233799, 3486977, 2881386, -14237280, -888521, -2759517, -6334540, -7701950, 4057134,
-1471563, 14090714, 2234457, -8864812, -25233, 730144, 6554120, 1884954, 13530758, -1790465,
--13671955, 5376762, -2491618, 5689221, -7951058, 1108638, 5351530, -25840134, -11354820, 8065949,
--197032, -3520263, 4446902, -2137283, 16457778, -1447941, 10692321, 7807177, -12109660, -15772194,
-1700270, -17156784, 8447664, 35293892, -8784819, -23424752, -2218888, -10122164, 25456272, 2198487,
-14242112, 7980049, -4495757, -11027865, -5089000, -12015171, -3164317, 17519708, -19132468, 1162326,
--15579994, 4620848, 1376000, 8039642, 1867774, -7064148, -12541305, -14303315, -2586107, -13991930,
--11160473, 2381559, 3584150, 11331197, -9835475, -20409684, -4130685, -6662568, 2822331, -9204652,
--6336151, 3739843, -4887136, -7600482, -163209, 1715839, -3827890, 21323438, -3709778, -2449742,
-5702106, 6317897, -5493800, -1545115, 15778099, 13812078, 9029632, 17164300, 13266080, 1307818,
-6068252, 10461467, -5837398, -4836670, 2869575, 8187819, 11740293, 6174016, 22807350, 4388920,
-15866146, -1812476, -6731825, -2748779, 32493576, 8554501, -1653562, 204548, -8054138, 7945153,
--32078036, -10136660, 14144938, -2385318, -17014512, -13458817, -6258841, 18013092, 7621420, -12148852,
-6162205, -16594143, -8629126, -860604, -13040594, -14769856, 12212203, 8716099, -15606301, -3747359,
-29555280, 8465381, -14937359, -17478906, -921807, 11421392, 471373, 3047816, -22767622, 683437,
--3687766, -14131516, -10271951, -4903242, -13645111, -4521527, 2313377, 1832877, -14360760, -11703249,
-365072, 9590125, -1537061, 12400107, 17086990, -11545409, 10055055, 10048076, 2239826, 3943854,
-12467753, 5814849, 7106561, 7241852, 6219650, -1054415, -3219078, 17440252, 23192286, 5733782,
--7434589, 4718559, -5309117, -7655779, 13945222, -5909338, -15246597, -19148574, -9311489, -22530862,
-10000831, -7907035, -6689949, 821949, -6182069, -5840619, -13857712, 11811160, 6624987, -1781338,
-7406134, 5979668, 16098611, 12895102, -26991722, -8614094, 29325500, -23140746, -7245610, -13936632,
-20779052, 9624485, 9373229, 4308926, 2719788, 8658654, 22023518, 10861435, -10278394, -9664,
-319438, -449898, 8432631, 10145250, 753767, 6066105, 5163625, -4988068, 6443525, 4320737,
-13326210, -6510097, -13870060, -11307575, -9490804, 2763275, -1767379, 5405217, 5365488, 6145562,
-11521250, -5251135, 1857573, -5303748, -10272488, -3775813, 199716, -10897943, 13139379, 17002702,
--19353660, 6316287, -13766981, 10444287, -3178813, 4056060, -2594697, -10212358, -3802657, 11692512,
--10644540, -2886218, 418222, -18900540, -9093520, 3810173, -16791174, -1189169, 20531554, 11322608,
--5164698, -5746666, 18488224, -1487132, -4372814, -15388868, 592706, 1459752, -4227322, -348429,
--7248294, 2671470, -22239340, 20143934, -4213363, -7209103, -14147085, -15887084, -1793149, 19168976,
--3665755, 5229123, -12089259, -7001871, -3520800, -11730093, -14197014, 12627741, -8125005, -6613713,
-11099806, 10827613, -15833934, 5218922, 5636071, 13266617, 10879689, -4323959, -10146323, -6495601,
--15448997, 16384226, 10667625, 5221607, 11582453, -12655658, 8112657, -2149094, 7400766, 8182450,
--8406325, -1049046, 26797374, 22312356, -17552994, 6419366, 13736379, -11329587, 2997887, -25900264,
-7244536, -14295262, 10996727, -8573292, -9106404, -6855842, 29968134, 1024887, -9099425, 1918240,
-9968082, 497142, 5944235, -17256642, -1788854, 26123064, -445066, -11985643, 3824669, -23267448,
--12328704, -12588549, 10405095, -4748087, 15997679, 11433740, 20653424, -9778030, -2038499, -16068010,
-13363791, 27444842, -9404368, -19976966, 869194, -3282429, 31223338, -6987912, -13946833, 13355201,
-5569499, 6162741, 10948945, 5138929, -42047192, 1124745, -4048007, 16888348, 27292906, -26080116,
--293668, 9073118, -14367202, -1674500, -38383584, -7416872, 17389248, -29470454, -19697256, -8394514,
--13435731, 13064217, -8945880, -9904195, 14664629, 5883569, 4264366, 17722108, 116501, -4851166,
-10151692, 18549426, -19008452, -11842299, 24269250, 18964428, 4045322, 9272834, 4050691, -10845329,
--19305878, 951872, -2188286, -2503429, 2778307, -9272298, 4516695, -13175349, 2717104, 34563748,
--18949396, -11382200, 14443438, 7273527, -10528575, 9738838, 8687645, 14333916, -33011118, -60811904,
--28083718, -4130148, 20758114, 1635309, 22910430, 21318070, -6328098, 3643206, -5093831, -11340861,
--18950470, -10812580, -13632763, -7694434, 21862994, -27904402, -4753992, -23170274, -29017872, -4714801,
--29270738, -23273354, 3107409, -5737003, -3179887, 5860483, 26087632, 2341294, -18514530, 1644436,
--1991254, -5029944, -24093156, -940598, 29321204, 3387119, -208306, 12513387, 22855132, 15982647,
-4243428, -8341900, 8165807, -6818261, -20382842, -36965708, 36366024, -3547643, 30332132, -1445257,
-664109, -9643275, -17124034, 32912872, -17794586, -13307956, -1362042, -21669720, -21593484, 19549080,
-13225278, 8578123, -2432562, 10964515, -16340740, 8180302, -13632763, -16175921, -21209622, -13128104,
--14487462, -24497420, 763430, -23478438, -25084220, -5429376, -10918344, -29670170, -38674032, 3475166,
--14017163, 6294275, -1869385, 13852343, 34409668, 663036, 4445291, -17986250, -17165374, 14079440,
-9422085, -13313325, 1042066, 8821326, -21634824, -18427020, -250719, 27645094, -23696408, -716186,
-1554241, 12160126, -20109036, 20909512, 12483322, 5171678, 373662, -10199474, -23511188, -1304596,
--4918812, 7784092, -12345883, -33507724, 27650462, -20614770, -7812546, -2432562, 27054536, -20972862,
-10056129, -17424682, 10991358, -7008313, -23217520, 10413685, -29834454, -7875897, -7999377, 9584756,
-25902410, -15688979, 10043244, 24284818, -19691888, 2140504, 6798933, 4690641, 8106214, -38547332,
--10634339, -7863548, 13724031, 902480, 41339, 4079682, -7185481, 43082280, 4962835, 17955648,
-50522236, -23775328, -12522514, -19956566, -6658810, 22666690, 2192581, 28032178, 8344048, -1324997,
--9822053, 21164526, -12550968, 4636417, -8075076, 8640400, -13253195, 16156056, -7007239, -3963718,
--8338679, 12441983, 9655086, -13922136, -2191507, 13168907, 5152350, -8908299, 2099702, -11417634,
--36257576, 16308528, -18382460, -28802588, 19244138, 7997229, 20768314, -1692217, -17247514, -6878390,
--3409130, 11389180, 16681116, 16866874, 29571924, 27656368, -10273562, 4068408, -27022860, 620623,
--19029926, -37374268, -1506997, -30360586, 12313671, -24118388, -13710072, -15769509, -20430622, 2842195,
--2683818, 2562485, -3899830, -2216740, 1148904, -39129836, 9757092, 6953015, 12724914, 20188494,
-231928, -30486214, 22319334, 868657, -3978750, -2512019, 29769492, 59585156, -33403572, -24571508,
--46601468, -90577104, -24192478, -8392366, 19024558, 13610751, -9470403, -16539382, 23539642, 31821950,
-1079111, -349503, -1429687, -23117662, -15916612, -16099148, -14854681, -24569898, -2036351, -5445482,
--4814659, 18581640, -25818660, 20257750, 16308528, -4708358, 7494181, -151934, -44686452, -29642254,
--18931678, -14763950, -9133785, 4176856, 14508400, 6104223, 6820945, 42061688, 35489852, 9176734,
--30119532, -13925358, -3472481, -13811004, -28833190, -65632468, -58004608, -24569360, -8503498, 3084324,
-11802033, -45594836, -29258390, 23978802, 24594056, 33235530, -33436858, -36679020, 8435316, -22492744,
-50539416, -27677306, -7495792, -16496433, -13804025, 7107097, 9933722, -8293045, -29669098, 404801,
--13615583, -12524125, 12363063, 53153980, -16699907, 16012712, 779537, -26053272, 5305359, -50921132,
--9556302, 8870181, 2494302, -30393336, 18483928, 48425756, 36724116, -17321604, -29912300, -15203110,
-5046050, 50887848, 8609262, -555661, 1717987, 22464290, 26593364, 4595078, 20695300, 13545253,
-31009128, -10444824, 4908074, 16739635, -15633144, -28305982, 16263967, 41075456, 10961293, 18713710,
-3612068, 10553272, -56303800, 8329016, -617402, 10616085, 58464704, 20364050, 9385040, -8283382,
-27192512, -8559870, -10153303, 6132677, 17641578, 30433602, -8899172, 17635672, 5713380, 2454037,
-15141907, 13403519, 1527398, -25886304, -11613592, 1127966, 45031660, 24915642, 25054154, 19745576,
-22967874, -11592117, -50761680, -44945224, -70713416, -21256330, -8351564, 44354128, -1460826, -21378736,
-5463736, -4517232, -16694538, -14308684, 2799782, 23070416, 64542620, 28205050, 57219164, 29119342,
-25539486, 23404350, -16730508, -14896557, -16022375, 6381248, 46843596, 14254996, -38887708, 16036334,
--41846940, 20179366, -26532698, -6489696, -23314156, -25963614, -1200443, 2346126, -399969, -32313724,
-40840844, -9244917, 15267535, -40677100, 10489384, -10225243, -12419972, 19568944, -17097728, 40127344,
-4570382, -17329120, 1782948, -13362180, -17265232, 10418517, -28362890, -7208566, 34548716, -8928700,
-13757317, -3223373, -26096758, 26466662, -15785615, -59334972, 6330782, 2792803, -1227824, 4731980,
--9113921, -13025562, -4535486, 24335284, -51226076, 27426050, -13459891, -8931921, 30668214, -21935472,
-6972343, 11493332, -13496935, -24347096, 39770324, 36761700, 128776544, 51788180, -70142720, -33197412,
--34403760, -54185844, 37479496, 115402552, 46211700, 21575232, -29185376, -8422968, -2156611, -1854889,
-55318640, 37524592, 23953032, 83022256, -100484520, 5859409, 51978232, -13411035, 10343892, 54073640,
-9152038, -16522202, 29076392, -56161528, -111363672, -11580306, 10274636, -44060996, -5539434, 58196268,
-9291625, 2220498, 21788370, -48257180, -96312496, -88715232, -40597640, 27235462, 55764244, 123947384,
-30518426, -17978196, -16954384, -36145372, -76421960, -25119654, 53653804, 52858164, 56593172, 53866408,
-33928096, 26425324, 6751689, 9460739, -50305340, -33566244, 4933844, 9059160, 22192096, 25149718,
-71698576, 13328894, 39876624, -36370856, -32727650, -60985852, -16951162, -54403812, -16287053, -9627169,
--90664616, -58418536, 33867964, 84439592, 101242040, 207237536, 128063576, 84079352, 76562624, 56633976,
--10780905, -94139240, -100144680, -196562944, -206199776, -198443600, -125714232, -47724604, 41446972, 69995616,
-122264832, 117187648, 83266528, 79310328, 105388832, 98122824, 89919976, 52925272, 37356552, 29645474,
--7927436, -13412109, -124673776, -93057984, -112559816, -138038640, -60423212, -135530912, -108811920, -196178000,
--170617040, -125825896, -85171352, -22049288, 88831736, 106549008, 90035936, 93985696, 88064544, 168997296,
-225793952, 197736544, 197746192, 170182176, 165380400, 116562192, 117955912, 10516764, -106514112, -206546592,
--197441792, -289185504, -244233856, -349138432, -410943552, -371445952, -354515712, -228542192, -170124736, -12810814,
-24292336, 106535056, 175329152, 290591584, 231230304, 347713024, 200316736, 32184338, -2443837, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-3656628, -530965, -5476084, 4852240, -4402342, -5283884, 2318746, -1553168, -1198296, 1406065,
+-6242198, -1283658, 4512937, -3128884, -1114007, -4889284, 1396401, -3642669, -6628745, 2744484,
+1201517, 2328409, -2642479, -3220689, 3591130, 1022202, 4066260, 4225174, -4557497, 4128001,
+-1251446, -1247688, 2871723, -680215, 2598992, 4476430, 4192425, 804770, 1748052, 1620813,
+-3750043, -1819456, -1436130, 700080, 3224984, -6259378, -1509681, -338766, -448824, -2866354,
+462783, 2571612, -3308736, 2246268, -2618856, -6324876, 1282048, 1240172, 780073, -2477659,
+-766652, -1642825, 2947421, -777389, -151934, 130997, 2049773, 665183, 1256815, 1723356,
+-4498442, -2363843, 2320356, -540629, -1096290, 1130650, -1292785, 4477504, 4966056, 2718714,
+-1960653, -7510287, -6949794, 2547989, 3948149, -1427540, 7396471, -1396401, 4405026, -5229660,
+-4670240, 2071248, 165356, -1323924, 1944547, 4858145, -2109366, 715112, -2763812, -225486,
+245350, 2022393, 1826972, 2523830, 403727, 1525250, 5492727, -2065342, -2572686, -2718714,
+-4977330, 1491964, -1042066, 9170292, 1779190, -622233, 728534, 5592048, -494995, -1136019,
+-1389959, -3169686, -570694, 4323422, -624918, 1840394, 4330401, -1267015, -270583, -6825777,
+-4017942, -6212134, -1182190, -1734630, 988916, 446677, 974958, 2359548, -1435056, 1207960,
+157303, 691490, 1060320, -2147484, 2291902, -566399, -2481954, -113280, -2469606, -506806,
+499827, 5185100, 12045773, 4832912, 2807298, 3416647, -7167227, -782221, 3010772, -910533,
+1141924, -6435472, 6318971, 8691940, 1429687, 3910568, -1880659, -5010616, -7903814, -8535711,
+-5771899, 6855305, -6488622, -4032438, -5502390, 1792612, 4454418, 903017, 544387, 2576444,
+-325881, 1645509, 5500243, -733903, 4559645, -4363687, 4152160, 2989834, 2611340, -2275259,
+-7284265, -1484448, 4046396, 2493766, -2095944, -190052, 1343788, -252866, -3563749, -675921,
+2859911, -956704, 235686, -1660542, -475131, 273804, 887985, 5153424, 2027761, -2540473,
+335007, 494995, -1837172, 1009317, -2631204, -204011, 4008815, 1447941, 4505958, -3185792,
+-2974802, -1547799, -877784, 2553358, 5090610, -2758443, -3988414, 4845260, 733366, -1968169,
+2202781, -466541, 3538516, 1500017, -3993783, -3764002, -4282083, -680215, -3501472, -7350837,
+-7009387, 7195144, -181999, 1497333, -81604, 4368519, -6529961, 9628243, 8543227, 410706,
+420370, -25233, 215285, -996432, 3315715, 2565706, 166430, -5549098, 2332704, -1763084,
+2590939, -828929, 5801427, -1433445, -3467649, -1619203, -981937, 2089502, -102542, 3534221,
+-5884642, 3040837, 941672, -3330210, 9075803, -1564442, -1389959, -311922, -226023, -2542621,
+-865973, 4744328, 3908957, -8730058, -4139812, 4195110, 1158567, -2233383, 7363185, 73551,
+1569811, 7127498, 2929168, 5522254, 1522566, -2494839, -3104188, -6094559, -5698885, 430034,
+2879239, 6673843, 204548, -3558917, -9801115, -3401077, -4774930, 4456029, -3265249, 2896956,
+-3530463, -1446330, 8288750, 4065187, -5523865, 2520072, 7904888, 1165547, -2789581, -5557151,
+-6693707, -4577899, -6730214, 4459250, 1001264, 2452426, -1301912, -3044058, -3219078, -5922760,
+296353, -191663, 1395328, -1453846, -5391258, 74088, 5739150, -1290101, 59056, -2883534,
+-5737540, -8504035, -734976, 6085432, 2218888, 612570, -2877091, 747861, -4600447, -1546725,
+-3459059, 396211, 788663, -5290326, 5924908, -3386582, 7539278, 2785286, 731218, -3489661,
+-1775969, 1857037, -408022, 1744831, 4068408, 726923, 1634235, -4576825, 2676302, -2362232,
+6958384, 8446590, 3971234, 5626944, 2718178, -1015223, -5990406, -4006668, 462783, 4374961,
+4110284, 3312494, -7938710, 1073742, -8487392, -2684, 1258425, 820339, 3774203, 415538,
+566936, 14981920, -1913945, -6570763, -7161321, 7540889, 4989679, -5633924, 1326608, -6287832,
+-2752537, 241592, 7104413, -8835285, 2536178, -316217, 1362042, -646929, 9024263, -4665945,
+2503429, -1391569, -2463701, 1408212, -500364, 2749853, -2847027, -2551748, -7755101, 1231582,
+-2629594, -1627256, 523986, -2694555, 2174327, -4308926, -2678449, -7601555, -338229, -6747931,
+-2975339, -8031589, 5852967, 1233729, -2612414, 5275831, -6259915, -17717, -11803107, -616865,
+3821984, -313533, 3222836, 7395397, -2852395, -1053878, 8962523, 3882114, 3228205, 5609764,
+-3339874, -8628052, -1418413, -5240934, 3079492, 8316668, -2464238, 2044404, -1004486, 4144644,
+4841502, 1642288, -2815351, 1975148, 1308354, 8994735, -1330366, -2060511, -12218108, -3580929,
+9268539, 8885750, 5832029, 4436165, 13162464, 673773, -15654082, -4166118, -2593087, -3952444,
+8373576, -1488206, -3033858, 9574556, 1523640, -4199941, -1401770, 3700651, -3473555, -1567663,
+1168231, -1457605, -5491653, -2700461, -294205, -5514738, -2464774, -2465848, 3630858, -2741263,
+7036230, 6624450, 598074, 6271189, 4523675, -3277597, -1103270, -2583423, -10296110, 791885,
+1988570, -10074383, -1520955, -3155727, 3329674, 8419747, 1191853, -9460739, 1146756, -3984119,
+-6245956, 4329864, -1628330, -7072738, 2685428, 1759326, 6855842, -1392106, -1163936, 4271345,
+5888400, 5630702, -7317551, 3376381, 6119255, -15912317, 6524056, -1629403, -3821447, -3184718,
+2580739, -1423245, -9695889, -10043781, 1045288, 15884937, 4153770, -11432666, 2382096, 9434969,
+-6970732, 1261110, -1938104, 5623723, -281857, 5179194, 13571023, 10074920, 6018860, -243739,
+-1422171, -6414534, -7138236, 2688113, -18217104, -2886218, 8176007, 881005, -1234803, -8666170,
+-3401614, -469762, -746251, -4292820, -9242770, 9797357, -3823595, -2344515, -2007360, -8406862,
+-9665824, -503585, -4951561, 402116, 3939559, 3100430, 3241627, -7637526, -2412161, -3940096,
+-2825015, 11426224, -1804960, -5804649, -212064, 14667850, -8698919, 2024003, 10474888, -234076,
+-3266323, -6267431, 2631204, -91268, 7205882, -5144297, 5907728, 4578435, 9561134, 4087735,
+8986682, 13479218, 7854422, 1596117, -3068754, -4704063, -11218991, -2927557, 7034620, -14696304,
+-6351183, 13889924, -19089520, -3147674, 10349261, 13527536, -1562831, -13034689, 1648194, -4813048,
+17613124, 8177081, -12414066, -7585986, -2059974, -7256884, -15562814, -7408819, -6994891, -5276368,
+-12621835, 6567542, 2061584, 7997766, -4888747, -1998234, -11099806, -818191, -9641128, 1298154,
+-6443525, 1709934, 3215857, -14377403, -4925254, -5279589, -3991635, 3479997, 3053185, -4373888,
+14407468, -622233, -3848828, -2399276, 1346472, -3081639, -1236951, 5706401, 4560182, 6351183,
+7926899, 7861938, 587874, 5269925, -2412698, 11627013, 12088722, -5734855, -3157338, 7781407,
+-223875, -17916456, 785442, -8796093, 5487358, 6552510, -9701257, -12756590, -5564130, -12342125,
+-16493211, 11525545, 1641751, 6241661, -8913131, -10219338, -12989055, -9569187, 4602595, -10448582,
+-8500277, 11711839, -2601140, 86973, 3401077, 6475200, -4963909, -4604742, 2464774, -3791919,
+2359548, -1127429, -5565741, -12036646, -17581448, 5438503, -12498355, -12409234, 1083942, -3668976,
+-371515, -7233799, 3486977, 2881386, -14237280, -888521, -2759517, -6334540, -7701950, 4057134,
+1471563, 14090714, 2234457, -8864812, -25233, 730144, 6554120, 1884954, 13530758, -1790465,
+-13671955, 5376762, -2491618, 5689221, -7951058, 1108638, 5351530, -25840134, -11354820, 8065949,
+-197032, -3520263, 4446902, -2137283, 16457778, -1447941, 10692321, 7807177, -12109660, -15772194,
+1700270, -17156784, 8447664, 35293892, -8784819, -23424752, -2218888, -10122164, 25456272, 2198487,
+14242112, 7980049, -4495757, -11027865, -5089000, -12015171, -3164317, 17519708, -19132468, 1162326,
+-15579994, 4620848, 1376000, 8039642, 1867774, -7064148, -12541305, -14303315, -2586107, -13991930,
+-11160473, 2381559, 3584150, 11331197, -9835475, -20409684, -4130685, -6662568, 2822331, -9204652,
+-6336151, 3739843, -4887136, -7600482, -163209, 1715839, -3827890, 21323438, -3709778, -2449742,
+5702106, 6317897, -5493800, -1545115, 15778099, 13812078, 9029632, 17164300, 13266080, 1307818,
+6068252, 10461467, -5837398, -4836670, 2869575, 8187819, 11740293, 6174016, 22807350, 4388920,
+15866146, -1812476, -6731825, -2748779, 32493576, 8554501, -1653562, 204548, -8054138, 7945153,
+-32078036, -10136660, 14144938, -2385318, -17014512, -13458817, -6258841, 18013092, 7621420, -12148852,
+6162205, -16594143, -8629126, -860604, -13040594, -14769856, 12212203, 8716099, -15606301, -3747359,
+29555280, 8465381, -14937359, -17478906, -921807, 11421392, 471373, 3047816, -22767622, 683437,
+-3687766, -14131516, -10271951, -4903242, -13645111, -4521527, 2313377, 1832877, -14360760, -11703249,
+365072, 9590125, -1537061, 12400107, 17086990, -11545409, 10055055, 10048076, 2239826, 3943854,
+12467753, 5814849, 7106561, 7241852, 6219650, -1054415, -3219078, 17440252, 23192286, 5733782,
+-7434589, 4718559, -5309117, -7655779, 13945222, -5909338, -15246597, -19148574, -9311489, -22530862,
+10000831, -7907035, -6689949, 821949, -6182069, -5840619, -13857712, 11811160, 6624987, -1781338,
+7406134, 5979668, 16098611, 12895102, -26991722, -8614094, 29325500, -23140746, -7245610, -13936632,
+20779052, 9624485, 9373229, 4308926, 2719788, 8658654, 22023518, 10861435, -10278394, -9664,
+319438, -449898, 8432631, 10145250, 753767, 6066105, 5163625, -4988068, 6443525, 4320737,
+13326210, -6510097, -13870060, -11307575, -9490804, 2763275, -1767379, 5405217, 5365488, 6145562,
+11521250, -5251135, 1857573, -5303748, -10272488, -3775813, 199716, -10897943, 13139379, 17002702,
+-19353660, 6316287, -13766981, 10444287, -3178813, 4056060, -2594697, -10212358, -3802657, 11692512,
+-10644540, -2886218, 418222, -18900540, -9093520, 3810173, -16791174, -1189169, 20531554, 11322608,
+-5164698, -5746666, 18488224, -1487132, -4372814, -15388868, 592706, 1459752, -4227322, -348429,
+-7248294, 2671470, -22239340, 20143934, -4213363, -7209103, -14147085, -15887084, -1793149, 19168976,
+-3665755, 5229123, -12089259, -7001871, -3520800, -11730093, -14197014, 12627741, -8125005, -6613713,
+11099806, 10827613, -15833934, 5218922, 5636071, 13266617, 10879689, -4323959, -10146323, -6495601,
+-15448997, 16384226, 10667625, 5221607, 11582453, -12655658, 8112657, -2149094, 7400766, 8182450,
+-8406325, -1049046, 26797374, 22312356, -17552994, 6419366, 13736379, -11329587, 2997887, -25900264,
+7244536, -14295262, 10996727, -8573292, -9106404, -6855842, 29968134, 1024887, -9099425, 1918240,
+9968082, 497142, 5944235, -17256642, -1788854, 26123064, -445066, -11985643, 3824669, -23267448,
+-12328704, -12588549, 10405095, -4748087, 15997679, 11433740, 20653424, -9778030, -2038499, -16068010,
+13363791, 27444842, -9404368, -19976966, 869194, -3282429, 31223338, -6987912, -13946833, 13355201,
+5569499, 6162741, 10948945, 5138929, -42047192, 1124745, -4048007, 16888348, 27292906, -26080116,
+-293668, 9073118, -14367202, -1674500, -38383584, -7416872, 17389248, -29470454, -19697256, -8394514,
+-13435731, 13064217, -8945880, -9904195, 14664629, 5883569, 4264366, 17722108, 116501, -4851166,
+10151692, 18549426, -19008452, -11842299, 24269250, 18964428, 4045322, 9272834, 4050691, -10845329,
+-19305878, 951872, -2188286, -2503429, 2778307, -9272298, 4516695, -13175349, 2717104, 34563748,
+-18949396, -11382200, 14443438, 7273527, -10528575, 9738838, 8687645, 14333916, -33011118, -60811904,
+-28083718, -4130148, 20758114, 1635309, 22910430, 21318070, -6328098, 3643206, -5093831, -11340861,
+-18950470, -10812580, -13632763, -7694434, 21862994, -27904402, -4753992, -23170274, -29017872, -4714801,
+-29270738, -23273354, 3107409, -5737003, -3179887, 5860483, 26087632, 2341294, -18514530, 1644436,
+-1991254, -5029944, -24093156, -940598, 29321204, 3387119, -208306, 12513387, 22855132, 15982647,
+4243428, -8341900, 8165807, -6818261, -20382842, -36965708, 36366024, -3547643, 30332132, -1445257,
+664109, -9643275, -17124034, 32912872, -17794586, -13307956, -1362042, -21669720, -21593484, 19549080,
+13225278, 8578123, -2432562, 10964515, -16340740, 8180302, -13632763, -16175921, -21209622, -13128104,
+-14487462, -24497420, 763430, -23478438, -25084220, -5429376, -10918344, -29670170, -38674032, 3475166,
+-14017163, 6294275, -1869385, 13852343, 34409668, 663036, 4445291, -17986250, -17165374, 14079440,
+9422085, -13313325, 1042066, 8821326, -21634824, -18427020, -250719, 27645094, -23696408, -716186,
+1554241, 12160126, -20109036, 20909512, 12483322, 5171678, 373662, -10199474, -23511188, -1304596,
+-4918812, 7784092, -12345883, -33507724, 27650462, -20614770, -7812546, -2432562, 27054536, -20972862,
+10056129, -17424682, 10991358, -7008313, -23217520, 10413685, -29834454, -7875897, -7999377, 9584756,
+25902410, -15688979, 10043244, 24284818, -19691888, 2140504, 6798933, 4690641, 8106214, -38547332,
+-10634339, -7863548, 13724031, 902480, 41339, 4079682, -7185481, 43082280, 4962835, 17955648,
+50522236, -23775328, -12522514, -19956566, -6658810, 22666690, 2192581, 28032178, 8344048, -1324997,
+-9822053, 21164526, -12550968, 4636417, -8075076, 8640400, -13253195, 16156056, -7007239, -3963718,
+-8338679, 12441983, 9655086, -13922136, -2191507, 13168907, 5152350, -8908299, 2099702, -11417634,
+-36257576, 16308528, -18382460, -28802588, 19244138, 7997229, 20768314, -1692217, -17247514, -6878390,
+-3409130, 11389180, 16681116, 16866874, 29571924, 27656368, -10273562, 4068408, -27022860, 620623,
+-19029926, -37374268, -1506997, -30360586, 12313671, -24118388, -13710072, -15769509, -20430622, 2842195,
+-2683818, 2562485, -3899830, -2216740, 1148904, -39129836, 9757092, 6953015, 12724914, 20188494,
+231928, -30486214, 22319334, 868657, -3978750, -2512019, 29769492, 59585156, -33403572, -24571508,
+-46601468, -90577104, -24192478, -8392366, 19024558, 13610751, -9470403, -16539382, 23539642, 31821950,
+1079111, -349503, -1429687, -23117662, -15916612, -16099148, -14854681, -24569898, -2036351, -5445482,
+-4814659, 18581640, -25818660, 20257750, 16308528, -4708358, 7494181, -151934, -44686452, -29642254,
+-18931678, -14763950, -9133785, 4176856, 14508400, 6104223, 6820945, 42061688, 35489852, 9176734,
+-30119532, -13925358, -3472481, -13811004, -28833190, -65632468, -58004608, -24569360, -8503498, 3084324,
+11802033, -45594836, -29258390, 23978802, 24594056, 33235530, -33436858, -36679020, 8435316, -22492744,
+50539416, -27677306, -7495792, -16496433, -13804025, 7107097, 9933722, -8293045, -29669098, 404801,
+-13615583, -12524125, 12363063, 53153980, -16699907, 16012712, 779537, -26053272, 5305359, -50921132,
+-9556302, 8870181, 2494302, -30393336, 18483928, 48425756, 36724116, -17321604, -29912300, -15203110,
+5046050, 50887848, 8609262, -555661, 1717987, 22464290, 26593364, 4595078, 20695300, 13545253,
+31009128, -10444824, 4908074, 16739635, -15633144, -28305982, 16263967, 41075456, 10961293, 18713710,
+3612068, 10553272, -56303800, 8329016, -617402, 10616085, 58464704, 20364050, 9385040, -8283382,
+27192512, -8559870, -10153303, 6132677, 17641578, 30433602, -8899172, 17635672, 5713380, 2454037,
+15141907, 13403519, 1527398, -25886304, -11613592, 1127966, 45031660, 24915642, 25054154, 19745576,
+22967874, -11592117, -50761680, -44945224, -70713416, -21256330, -8351564, 44354128, -1460826, -21378736,
+5463736, -4517232, -16694538, -14308684, 2799782, 23070416, 64542620, 28205050, 57219164, 29119342,
+25539486, 23404350, -16730508, -14896557, -16022375, 6381248, 46843596, 14254996, -38887708, 16036334,
+-41846940, 20179366, -26532698, -6489696, -23314156, -25963614, -1200443, 2346126, -399969, -32313724,
+40840844, -9244917, 15267535, -40677100, 10489384, -10225243, -12419972, 19568944, -17097728, 40127344,
+4570382, -17329120, 1782948, -13362180, -17265232, 10418517, -28362890, -7208566, 34548716, -8928700,
+13757317, -3223373, -26096758, 26466662, -15785615, -59334972, 6330782, 2792803, -1227824, 4731980,
+-9113921, -13025562, -4535486, 24335284, -51226076, 27426050, -13459891, -8931921, 30668214, -21935472,
+6972343, 11493332, -13496935, -24347096, 39770324, 36761700, 128776544, 51788180, -70142720, -33197412,
+-34403760, -54185844, 37479496, 115402552, 46211700, 21575232, -29185376, -8422968, -2156611, -1854889,
+55318640, 37524592, 23953032, 83022256, -100484520, 5859409, 51978232, -13411035, 10343892, 54073640,
+9152038, -16522202, 29076392, -56161528, -111363672, -11580306, 10274636, -44060996, -5539434, 58196268,
+9291625, 2220498, 21788370, -48257180, -96312496, -88715232, -40597640, 27235462, 55764244, 123947384,
+30518426, -17978196, -16954384, -36145372, -76421960, -25119654, 53653804, 52858164, 56593172, 53866408,
+33928096, 26425324, 6751689, 9460739, -50305340, -33566244, 4933844, 9059160, 22192096, 25149718,
+71698576, 13328894, 39876624, -36370856, -32727650, -60985852, -16951162, -54403812, -16287053, -9627169,
+-90664616, -58418536, 33867964, 84439592, 101242040, 207237536, 128063576, 84079352, 76562624, 56633976,
+-10780905, -94139240, -100144680, -196562944, -206199776, -198443600, -125714232, -47724604, 41446972, 69995616,
+122264832, 117187648, 83266528, 79310328, 105388832, 98122824, 89919976, 52925272, 37356552, 29645474,
+-7927436, -13412109, -124673776, -93057984, -112559816, -138038640, -60423212, -135530912, -108811920, -196178000,
+-170617040, -125825896, -85171352, -22049288, 88831736, 106549008, 90035936, 93985696, 88064544, 168997296,
+225793952, 197736544, 197746192, 170182176, 165380400, 116562192, 117955912, 10516764, -106514112, -206546592,
+-197441792, -289185504, -244233856, -349138432, -410943552, -371445952, -354515712, -228542192, -170124736, -12810814,
+24292336, 106535056, 175329152, 290591584, 231230304, 347713024, 200316736, 32184338, -2443837, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
15547245,
--3688303, -1811939, -4158065, 384400, -4757750, 141734, 2228551, 1487132, -693100, -3057480,
-2359548, 3493419, 202937, -1853278, -1523103, -1205275, -2942590, 1131724, 665183, 818728,
-2069637, 4105452, 4027606, 979253, 3172370, 1658394, -1734093, 867583, 1382443, -275952,
-499290, 465467, -446677, 2117956, -139050, 3839164, 3338800, -3635153, 2774012, 623307,
-2270427, 445603, -366146, 95026, 6896107, 196495, 2267206, 558346, 1948841, 2699924,
-544387, -1862942, 4030290, -5218386, -449898, 1494649, 4357781, 1412507, -661425, 3718905,
--404264, -3114388, 1017370, 1066226, 711891, -653372, 427886, -378494, -2338610, 723165,
--956704, -1605244, 1811403, -2806224, 2375117, -5189394, -13831405, -1182190, -2191507, -1902671,
-230318, -2318209, 890669, 1352378, 5705864, -1919314, -195958, -5235029, 420907, 5266167,
-403727, 3810173, -1082869, 1605781, -2156611, -3294240, 155693, 3631395, -417149, -4513474,
--137439, 4408247, 1482301, -1855963, -1511829, -179852, -546535, -995896, 112206, -709207,
--1447941, -156766, 964757, 652298, -134755, -3409667, 5199595, 7036230, 294205, 861141,
--2754148, -1555315, 627065, -3598646, -3977677, 2476049, -3217468, 2449742, 3175592, 3147137,
-1232119, -408559, 907849, 705448, 2400887, -4966593, 498753, -592706, -3599720, -4897874,
-193274, 2514167, -1851131, -234613, -562104, -347355, 3466039, 1685238, 385473, 1224066,
--1347009, -12506945, -3179350, 5121749, -947040, -3725347, 1410360, -9230422, -3884798, -1182190,
--1960116, -4689031, -5405217, 2960306, 4006668, 3848291, -5076652, -6910603, 534187, -3975529,
--7836705, 1903744, -753767, 2311766, 8229694, -2632815, -1175210, -5206574, 7068980, 729608,
-3385508, 2691334, 5748814, 3223910, 1579474, -5834176, -967978, -5355824, -1809792, 385473,
--2605972, 1990181, 1265405, -2467996, -5409512, 3386045, 5024038, 1624571, -2842732, -3825742,
--2757369, 1377074, -4753992, -5520644, -1916629, 2881386, -1873680, 1460826, 3213173, 2311229,
--2956011, 5192616, 126165, 4417911, -3997541, -3046743, -2129767, -2137283, 2696703, -1726040,
--178778, 5137855, 1471026, 55835, -5285494, 1218160, -2365990, 3400540, -2513093, 3187940,
-4596689, 1733556, -2746095, 1873680, -1251446, 1262720, 8558259, 5127654, -7102802, 4753455,
--3882651, -2065342, -978716, 19327, 3663607, 5906, 9978820, 2732136, -3762928, -2646237,
--2428267, 6841883, 1685775, 6577206, 2246805, 4370129, 7059853, 7886097, 3097208, -1087701,
--775778, 1030255, -6429029, -6201933, 1946157, -4763119, 2617246, 1035087, -1522029, -892816,
-1917703, 6493991, -2178622, -2523830, -3431679, 8339753, -1134408, -10972568, -5313412, -4518843,
--3862249, 4141422, 4293357, 3443490, 5646272, 2174864, 3565897, -480499, -266825, -497679,
-5715528, 1474248, 3409130, -7828652, 621160, -48318, 573915, 78920, 3464965, 1837172,
-1237488, -4072166, -3171297, 18506478, 4529043, 2528125, -1901597, -1654099, 2229088, 974958,
-5431523, 6309307, 98247, 9453223, 4313758, -3799436, -2826625, -591632, 5098126, -896574,
--2144799, 4842039, 1144609, 13785771, 4118874, 2453500, 1005022, -1708860, 1091995, 1793686,
-3169149, -986769, 461709, 7235410, 1497333, 7998840, -3757023, -4360466, 3198677, 12182138,
-4080219, 2675765, -632434, -5774047, -1670742, 1337882, 836982, -484258, 929324, -8055211,
-1021129, -3752191, 3563212, 2053531, -2546379, 1390496, 3196530, 1426466, -3106335, -4107063,
-1401233, 906775, 539555, -5191005, 1788317, -2293513, 3616363, -898185, 1167694, 1456531,
--143345, 547608, -1084479, -59593, 11654931, 572841, 4605816, -701153, -2226404, 642098,
-1447404, -237297, 2610266, -4005594, -896038, 4374424, -2324651, -6419903, -233002, 10952167,
--950262, 8619999, 4141959, 11870216, 1196685, 1210644, 4044249, -3196530, -7248831, -9113384,
-1918777, -4596152, 10572062, 6288369, 7381438, -1351304, -3471407, 1040993, 1420560, 3658775,
-9833328, 1286880, 3904125, -4569309, 2895882, -3230352, 1036698, -1721745, 2975876, 5852430,
-405874, 5586142, 1640678, 2807835, -2017561, -1318018, 6991133, -1717987, -2303713, 5596880,
--3810710, -316754, 311922, -2457258, -3752728, 2456721, -4251481, -738734, -5304822, -10171019,
--1717450, -1585917, -873489, -10614475, -4669167, -3285650, -3400540, 3901978, 9713605, -2723009,
-2631741, 5373541, -2233920, 977642, 252866, 648003, -4240744, 4479651, -13898514, 1373853,
-7169911, 4060355, -7889855, -401043, 155693, 1988033, 2607582, -271657, -6199249, -5566815,
-671089, 9874667, 4394826, 5916855, 9546639, -6463926, 6742025, 13049184, -1426466, 3049964,
--7562901, 2649995, 2390149, -6146635, -3636764, -1227824, 2710124, -6221797, -8638790, 1721208,
-645319, -7067906, 290447, 2376191, -1753420, 15397458, -1165547, -10737418, -1040456, 3838090,
-8305393, 3264175, 3550327, -6867653, 1604170, 2269353, -6517076, -338766, -1378685, 10679973,
-6174016, -1709934, -3974455, -8180839, 3218004, 3335579, -5184026, -137976, 1647120, 3238942,
-2986613, -4177930, -427886, -912144, 9665287, -8380555, 750009, -2195802, 8723615, -663572,
--2389076, -3776350, 1049583, -3846143, -8650601, 5036386, 4933307, 1500017, -3287798, 806917,
-2477659, 15895674, 10872173, 7830799, 11527155, 4420058, -747861, 1460826, 4420595, -11544335,
-6093485, 30602, 6541235, -4728759, -2067490, -7474317, 2355253, 12829604, -12389370, -8150774,
--13179644, 6720013, -2779918, 333397, -5829345, 704375, -1977296, -6209986, 2658585, 2937758,
--9246528, -1364726, 2066416, -2156611, 5398237, -13915694, -6368363, 14179298, 1787780, -257161,
--1031866, 507880, -6830609, -7639673, 846645, -11110007, -2167885, 1173600, 3401614, -4726612,
--676994, 13917842, -456877, 4955319, 10738492, -9473624, -2881386, 2386391, 2894271, 1998234,
--2485176, -6686191, 8303246, -685584, -6898255, 5566278, -959388, 1448478, 2265059, -3794067,
--2524904, -1653562, -26331908, -15188615, 12419435, -4977867, -5290326, 6979322, 6752763, -11710228,
--14986215, -5230734, -5070209, -6072010, -589484, -10863046, -7170448, 3630858, 904091, -14489609,
--15213311, -9023189, -3788161, -992674, 8587787, -759672, -5318244, 4258997, -12517145, 253940,
--27380, 436476, 5171678, 2411087, -8916352, -7250442, 6356552, 1949378, 21926344, 5188858,
--6412923, 955630, 1382443, 235686, 6326487, 1121523, 3075734, -2108292, -3925600, 1499481,
--11461657, -2136209, -4538707, -6280316, 2229625, -9497783, 12186970, -1170916, 5610838, 8465381,
-3304977, 4721780, 397821, -4766340, 737661, -79457, -5551782, 9234717, -2492155, 16027744,
-581968, 728534, 1833951, -2563022, -7034083, 4408247, -5246840, 210990, 9738838, 6372658,
-18834506, -10108742, 8460549, 4816806, 6048925, -1882806, -11754789, 2455648, -3816615, -9163313,
-19396610, -542240, -6687801, -19224810, 11329050, 4308926, -1271310, -6648610, -9761387, 1087701,
-19635516, 8558259, -1903744, -1207960, -10004589, -6411313, 4845797, 3463891, -8107825, -4085051,
-6052683, 2607045, -1497870, 7005092, 8341900, 2288144, 11378979, 15097884, 7419019, -2533494,
-1855426, 1932735, 1032940, 8229694, -11977590, 11919608, -2167885, -4929549, -10040560, 796716,
-5856725, 5879274, -11674795, 2970507, 6458020, 1979443, -8975945, -15113453, -16110959, 4564477,
-4634807, 1845225, -7419556, 45097, 9615358, -4472135, -10714333, -15899432, -369904, 4160750,
--14798310, 5680094, 9993315, -4605816, 6932614, 4380330, 23157390, 16411607, 2822331, -4093641,
--3326989, -2669322, -17188460, -5975910, -1018981, 11108933, -8363912, -3598109, -4369593, 781684,
-16412681, -12845710, -4479651, -177704, 7209640, -2260227, -10841034, -16078747, 5003100, -10965052,
--6212134, -6667400, -8727910, 2906619, -14012331, -5867999, 10513006, 17714056, -255014, -10406706,
--10716480, 16330003, -2877628, -8266202, 15518791, 864362, -125091, 1028108, -19325206, 7689065,
--7931194, 6878927, 4861903, -12082280, -2617246, -12284143, 3555159, -11930882, -3414499, 5266167,
-5512054, -3901978, 2759517, -14603426, 8655433, -1048509, 5379984, 5876589, 2603824, -3229279,
--4745402, 14698452, -11886859, 7289633, -4303021, -12506408, -9434969, -799938, 11228118, -7355669,
-4189741, 2675228, -5660230, 6155225, -1511829, -3048890, 10009421, 1054415, -5531381, -14934675,
--138513, -19203336, 3794604, 858993, 9623948, -8164196, -1169305, 3963181, 4554276, 4423280,
--11917461, 16788490, 13059385, 1429687, 9782325, -5068062, -17261474, 3279745, -6986838, -9264244,
-8858907, 19488414, 4045859, -6625524, -6965363, -17413408, 469225, -272194, 25640954, -10990821,
-4832, -336081, -383863, -16318191, -16782584, 12418361, 880468, 6523519, -1878511, -20650202,
--10877542, 281320, -2961380, -5422933, -5279589, 11347304, -2439005, 6838662, -8685498, 16225313,
--20708722, 8801999, 11020349, 4840965, 5889474, 3520800, 16676284, 6670084, -1085016, 1564979,
-234076, 14209899, 24672976, -5195300, 2113661, -9908490, 10575820, 13266080, -10468446, -1080721,
--21045876, -2687576, -26805428, -13190918, 10056666, -10438381, -23857470, 2583960, -13009993, 993211,
-140123, -14666240, -14641544, 6910603, 13554380, 4614406, -16381542, 8148090, -18378702, -5896990,
--6926709, 6131603, -7683160, -2921652, 8477729, 1967095, -6172942, -12406013, 13455059, 13733695,
-17023102, 2750927, -2079838, 1120987, 5365488, -781147, 6925635, -7234873, 9165997, -3117073,
-10595684, 9113921, 6381248, -2556043, 396211, -16070694, 5634460, -3623879, 12506945, 2843268,
--29044180, 5039071, 14385456, 19851876, -11000485, -14566918, 18250390, 8811125, 12905840, -22127134,
-11428908, 28999082, 30190936, 2467459, 1016297, 17578764, -11422466, -15209016, 10515154, -16955994,
-7082938, -7775502, -6153615, -3739306, -36550172, -22006876, -16607028, -4265977, -16076599, -29395294,
-22355842, 2892661, 7174743, -3377992, 15685757, 923418, -14303852, 11173357, 3847754, -4398584,
--8831527, -6041945, 1558536, 4387846, 13836237, -7677254, 10751914, 4066260, 19943144, -28848222,
--8367133, -4169340, 3282429, 12451647, 16881368, 4421132, -14600204, 10000831, 13181792, 11976516,
--3701725, 4481262, 348429, -4355097, -2447595, 1291175, 3954054, 2045478, 9642738, 2114198,
--13204340, 12351789, -13664438, -16442745, 2188286, 12625593, -6356015, -3965329, 4028679, 6355478,
-10130754, -5622112, 4622996, 24121074, -9816148, -24901146, -32999308, -16212428, -22414898, 10336376,
-19018652, 12520903, 4555350, 11724187, 6733972, 12849468, -10909754, 14382235, 7661148, 5582384,
-15320685, 18881750, -5990406, 29911762, 2910377, 4696010, -6180458, 10878615, -34182036, -15084999,
--23340462, -24106578, 9641665, -21022254, 20773684, 23625542, 1109175, 5176510, -3546032, 4390531,
--22290344, 9287867, 24866250, -14008573, -28708636, 3926674, -10723460, -9061307, -27987080, 5011153,
-10449119, 48318, -3681324, 9214852, -15891916, -2478196, 10572062, -5540508, -14059575, 1950452,
--6940131, 14937896, -9575093, -5125507, 13910862, 12234751, 25554518, 3693135, 6289980, -1976759,
-6976101, 9440338, 15842524, -4090420, -368293, -9277129, 20835960, -25564720, 28151364, 1579474,
--11068668, 13779329, -10109816, -6777459, 25820270, -36397164, 6062347, -6918656, 7201050, -13356275,
-6768869, 16042777, -7987566, 198105, -4525822, -4154844, -4366908, 30270930, -33194728, -5609228,
-36696736, -14598594, -23267448, 2524367, -8994198, -7488276, -13214004, -15905338, 20167556, 9104794,
-1029718, 9910100, 23946590, 14631343, -1919314, 5270999, 16022375, 21109228, -18687940, 8956081,
-17144972, 7920457, 6133750, 24348170, 11329587, 5374615, -955630, 11172821, -1424855, 12602508,
-9881646, 5921686, -11435887, 21628382, -17637820, -1759863, 26373784, 26698054, -6431714, -22834730,
-8596914, 108448, 22629108, 39699456, 8616241, -5507759, 2638721, -21981642, -2779918, -5401458,
--4945655, 1023276, 19921132, -7985955, 8731669, 24720222, 4031901, -21598316, 14702210, -412317,
-9360344, 23411330, 31875100, -8137353, -8412767, -1795833, -25172804, -35915052, 1121523, -15620259,
--2560874, -18988588, -1866163, 2356327, 3099356, 17406428, 2684, -6190122, 25182466, -47042776,
-25982942, -19931332, -45969036, -13882408, -11424613, -1843078, -10438381, 5399848, -12555263, -28815472,
--17062832, -8761196, -2389076, 3073049, -11555610, 11305965, 22646288, 621160, -1180579, 5931350,
-1608465, -4401805, -8090645, -4918275, 6300180, 6434935, -1755031, 6099391, 27778774, 7333657,
--7816304, -27585502, -4127464, 19029390, -23270670, -11343545, -8720394, -25233, -1564442, 14498736,
--4666482, 1423245, 20633022, 6904697, 22857280, -3602941, -10486163, -5363878, -5618891, -6372658,
-11096048, 629750, 7537668, 13181255, -24146844, 2866891, -6336151, -15901043, -11353746, 22795002,
-17061220, -201327, -11679090, 3534758, 9802189, -483721, 6564858, -18187040, -40857488, -21099026,
--15691126, 11391327, -108448, -7019587, 13771276, -18731426, 22468584, -2033667, -34890704, 6914898,
--16702054, -3769371, -2313377, -4424890, -22148072, 6768869, 1387811, 17457432, -38044284, 340913,
-19063750, 1988570, -8884140, -19645180, -1321239, 10812043, 16687559, -14008573, -4726612, 8617315,
-19024020, 16930224, -16494285, -3700114, -26840862, 12262132, 13803488, 8165807, -7587597, -2423435,
--7258495, -3183108, -8930311, 2279017, 19711216, -7609072, -7733089, -7067906, -11169062, 22017612,
-19152870, -2185065, 26953604, -1530619, 9489193, -24160802, 19430432, 8425652, -27058830, -8946417,
-30451854, 12501576, 7971460, 5768141, -14908905, -11563663, -16063178, 26577258, -14499273, 20592220,
-20460150, -24097450, 54883776, -11705396, 33283312, 2100239, -9828496, -13904420, 23173496, 12238509,
--25979720, -3645890, 13459354, 22957138, 1889786, -19447076, 9289477, -37485936, -10013179, -34120292,
--47046536, 1329292, -18216030, 5710696, -3706020, -7730405, -18124762, -12706661, 10167261, 27763206,
--23912230, -5588826, -40977748, -36197448, 9341554, 13618268, -22798224, -24019068, 882616, 4397510,
--38315940, 1178432, 111132, 18689550, -17666812, -214212, 15417859, -11602317, -20492900, -23040352,
--11550241, -21179558, -17414482, -22133578, 28165858, -38501160, -24210730, 32204202, -2316061, 7985955,
--29461328, -6499360, -9434433, -937377, 45881524, -8494372, -2540473, 2803540, 20480552, -1464584,
--22835268, -11392401, -17118666, 2902324, 54563264, 8717173, -22311818, 40315248, 28331752, -29948806,
-29025926, 49683108, -2742337, -22982370, 31839130, -8584029, 32742146, 32149978, 24252070, -64873872,
--42591044, -41345504, -17046726, -26764088, 33967824, 15978352, 27493160, -2049773, -59301152, -6357089,
-7195144, 41744936, -3686693, 11558831, 34100968, -11076184, -28184112, 5140539, -3752191, 48161080,
-27741194, -12408697, -22691386, 51049444, 1476395, 26829050, 9788767, 47835736, 37207840, 32741072,
-1313186, -22950158, -15771120, -16898548, 35991288, -15524696, -27672474, -11447162, -417686, 1596117,
-14959371, -13743895, 4266513, -74176768, 6909529, 14658723, 10948409, -29417304, -31478352, 11944304,
-25446070, -30412126, 11317239, -16074452, -16286516, -19468550, -3539590, 26479010, -17336636, 28835336,
--8058433, 13066364, -49328236, -27900644, -2529736, 28419262, 16585553, -31879394, -38661148, -14398878,
-2698313, 43056512, 16077673, -94489, -26196616, -5927592, 11465952, 87300040, 8409546, -45814952,
--104562056, -8871255, 61527552, 16164646, 26737246, -2179159, 37423124, -5608154, 16412144, -7951058,
-21243982, 30873298, 16023449, -13694503, -34353832, 41429256, 46089296, -9354976, -45342508, -26657252,
-5004711, 27618788, 9122511, 10677826, 2069101, 8015483, 3498251, 8020315, -8419747, -51352776,
-303332, 34069828, 25766582, -8840116, 3318399, 21689584, 44824428, 28701118, 22524956, -24105504,
--17008070, -2534031, -3573413, -37313604, 29166586, 18634252, 30387430, 61303680, -28766080, -17118666,
--928787, -13860396, -12202539, -23139136, 48002164, -24909736, -27497992, -27727236, -7987029, 61821760,
-18070002, 26394722, 2287070, -969052, -9445707, 40715752, 34231964, -10228465, -28221156, 17150878,
-3351685, 1184874, -28027346, 5264556, 63607928, 54318452, 5090073, 7007239, -39060044, -66516160,
--63817308, -26657788, 47130824, 57880052, 53935664, 34692600, -11140071, -32877974, -36194228, -18622978,
-11515881, 25524454, 36104032, 6956774, -32285806, -21570400, -8172249, -21561810, -14354318, 9023189,
-37563248, 61006788, 34541736, 21405580, 13650480, -32236950, -6883759, -68513320, -83456584, -46755552,
--26988500, -18230526, 35207996, 63270772, 63045288, 63483912, 48816060, 25560960, 904628, -20421496,
--9383967, -35449588, -73423000, -1205812, 4053912, 11710765, 20973400, 19022948, 21306260, -74179992,
--45949172, -22963580, -48578764, -13853954, 31420906, -14362371, 20250234, 9460739, -23713588, 23606750,
--20397874, 26193394, 19054622, -9111236, -37546068, -61729956, -72327248, -39911520, 10897406, -118135224,
--61386356, -30361124, 40002252, 11003169, 153135984, 158792464, 118672632, 155196496, 160953904, 148202144,
-105568688, 97850632, 106633840, 45268956, -4508105, -61349312, -98553392, -134919952, -132706440, -196864656,
--119482232, -74590160, -60099476, -84480400, -43867184, -7224672, -63567128, -46082316, -51103668, -5851356,
--28695750, -4700305, -40043052, -15179488, 31949724, 35822712, 13888850, 402653, 35181152, 32877974,
--61394948, 24008868, 52830784, 111040472, 81126560, 106932872, 47174312, 50046568, 167843024, 99145024,
-172128864, 68340984, 162600480, 120288072, 143822880, 195829040, 181568672, 155182000, 167029664, 190645552,
-200246400, 179790016, 198315280, 147091360, 201686288, 173010416, 148262800, 166259264, 92603792, 184319056,
-91319056, 71124120, -48287780, 21985400, -95662344, -107075144, -115826144, -3383897, 0, 0,
-0, 0, 0, },
+-3688303, -1811939, -4158065, 384400, -4757750, 141734, 2228551, 1487132, -693100, -3057480,
+2359548, 3493419, 202937, -1853278, -1523103, -1205275, -2942590, 1131724, 665183, 818728,
+2069637, 4105452, 4027606, 979253, 3172370, 1658394, -1734093, 867583, 1382443, -275952,
+499290, 465467, -446677, 2117956, -139050, 3839164, 3338800, -3635153, 2774012, 623307,
+2270427, 445603, -366146, 95026, 6896107, 196495, 2267206, 558346, 1948841, 2699924,
+544387, -1862942, 4030290, -5218386, -449898, 1494649, 4357781, 1412507, -661425, 3718905,
+-404264, -3114388, 1017370, 1066226, 711891, -653372, 427886, -378494, -2338610, 723165,
+-956704, -1605244, 1811403, -2806224, 2375117, -5189394, -13831405, -1182190, -2191507, -1902671,
+230318, -2318209, 890669, 1352378, 5705864, -1919314, -195958, -5235029, 420907, 5266167,
+403727, 3810173, -1082869, 1605781, -2156611, -3294240, 155693, 3631395, -417149, -4513474,
+-137439, 4408247, 1482301, -1855963, -1511829, -179852, -546535, -995896, 112206, -709207,
+-1447941, -156766, 964757, 652298, -134755, -3409667, 5199595, 7036230, 294205, 861141,
+-2754148, -1555315, 627065, -3598646, -3977677, 2476049, -3217468, 2449742, 3175592, 3147137,
+1232119, -408559, 907849, 705448, 2400887, -4966593, 498753, -592706, -3599720, -4897874,
+193274, 2514167, -1851131, -234613, -562104, -347355, 3466039, 1685238, 385473, 1224066,
+-1347009, -12506945, -3179350, 5121749, -947040, -3725347, 1410360, -9230422, -3884798, -1182190,
+-1960116, -4689031, -5405217, 2960306, 4006668, 3848291, -5076652, -6910603, 534187, -3975529,
+-7836705, 1903744, -753767, 2311766, 8229694, -2632815, -1175210, -5206574, 7068980, 729608,
+3385508, 2691334, 5748814, 3223910, 1579474, -5834176, -967978, -5355824, -1809792, 385473,
+-2605972, 1990181, 1265405, -2467996, -5409512, 3386045, 5024038, 1624571, -2842732, -3825742,
+-2757369, 1377074, -4753992, -5520644, -1916629, 2881386, -1873680, 1460826, 3213173, 2311229,
+-2956011, 5192616, 126165, 4417911, -3997541, -3046743, -2129767, -2137283, 2696703, -1726040,
+-178778, 5137855, 1471026, 55835, -5285494, 1218160, -2365990, 3400540, -2513093, 3187940,
+4596689, 1733556, -2746095, 1873680, -1251446, 1262720, 8558259, 5127654, -7102802, 4753455,
+-3882651, -2065342, -978716, 19327, 3663607, 5906, 9978820, 2732136, -3762928, -2646237,
+-2428267, 6841883, 1685775, 6577206, 2246805, 4370129, 7059853, 7886097, 3097208, -1087701,
+-775778, 1030255, -6429029, -6201933, 1946157, -4763119, 2617246, 1035087, -1522029, -892816,
+1917703, 6493991, -2178622, -2523830, -3431679, 8339753, -1134408, -10972568, -5313412, -4518843,
+-3862249, 4141422, 4293357, 3443490, 5646272, 2174864, 3565897, -480499, -266825, -497679,
+5715528, 1474248, 3409130, -7828652, 621160, -48318, 573915, 78920, 3464965, 1837172,
+1237488, -4072166, -3171297, 18506478, 4529043, 2528125, -1901597, -1654099, 2229088, 974958,
+5431523, 6309307, 98247, 9453223, 4313758, -3799436, -2826625, -591632, 5098126, -896574,
+-2144799, 4842039, 1144609, 13785771, 4118874, 2453500, 1005022, -1708860, 1091995, 1793686,
+3169149, -986769, 461709, 7235410, 1497333, 7998840, -3757023, -4360466, 3198677, 12182138,
+4080219, 2675765, -632434, -5774047, -1670742, 1337882, 836982, -484258, 929324, -8055211,
+1021129, -3752191, 3563212, 2053531, -2546379, 1390496, 3196530, 1426466, -3106335, -4107063,
+1401233, 906775, 539555, -5191005, 1788317, -2293513, 3616363, -898185, 1167694, 1456531,
+-143345, 547608, -1084479, -59593, 11654931, 572841, 4605816, -701153, -2226404, 642098,
+1447404, -237297, 2610266, -4005594, -896038, 4374424, -2324651, -6419903, -233002, 10952167,
+-950262, 8619999, 4141959, 11870216, 1196685, 1210644, 4044249, -3196530, -7248831, -9113384,
+1918777, -4596152, 10572062, 6288369, 7381438, -1351304, -3471407, 1040993, 1420560, 3658775,
+9833328, 1286880, 3904125, -4569309, 2895882, -3230352, 1036698, -1721745, 2975876, 5852430,
+405874, 5586142, 1640678, 2807835, -2017561, -1318018, 6991133, -1717987, -2303713, 5596880,
+-3810710, -316754, 311922, -2457258, -3752728, 2456721, -4251481, -738734, -5304822, -10171019,
+-1717450, -1585917, -873489, -10614475, -4669167, -3285650, -3400540, 3901978, 9713605, -2723009,
+2631741, 5373541, -2233920, 977642, 252866, 648003, -4240744, 4479651, -13898514, 1373853,
+7169911, 4060355, -7889855, -401043, 155693, 1988033, 2607582, -271657, -6199249, -5566815,
+671089, 9874667, 4394826, 5916855, 9546639, -6463926, 6742025, 13049184, -1426466, 3049964,
+-7562901, 2649995, 2390149, -6146635, -3636764, -1227824, 2710124, -6221797, -8638790, 1721208,
+645319, -7067906, 290447, 2376191, -1753420, 15397458, -1165547, -10737418, -1040456, 3838090,
+8305393, 3264175, 3550327, -6867653, 1604170, 2269353, -6517076, -338766, -1378685, 10679973,
+6174016, -1709934, -3974455, -8180839, 3218004, 3335579, -5184026, -137976, 1647120, 3238942,
+2986613, -4177930, -427886, -912144, 9665287, -8380555, 750009, -2195802, 8723615, -663572,
+-2389076, -3776350, 1049583, -3846143, -8650601, 5036386, 4933307, 1500017, -3287798, 806917,
+2477659, 15895674, 10872173, 7830799, 11527155, 4420058, -747861, 1460826, 4420595, -11544335,
+6093485, 30602, 6541235, -4728759, -2067490, -7474317, 2355253, 12829604, -12389370, -8150774,
+-13179644, 6720013, -2779918, 333397, -5829345, 704375, -1977296, -6209986, 2658585, 2937758,
+-9246528, -1364726, 2066416, -2156611, 5398237, -13915694, -6368363, 14179298, 1787780, -257161,
+-1031866, 507880, -6830609, -7639673, 846645, -11110007, -2167885, 1173600, 3401614, -4726612,
+-676994, 13917842, -456877, 4955319, 10738492, -9473624, -2881386, 2386391, 2894271, 1998234,
+-2485176, -6686191, 8303246, -685584, -6898255, 5566278, -959388, 1448478, 2265059, -3794067,
+-2524904, -1653562, -26331908, -15188615, 12419435, -4977867, -5290326, 6979322, 6752763, -11710228,
+-14986215, -5230734, -5070209, -6072010, -589484, -10863046, -7170448, 3630858, 904091, -14489609,
+-15213311, -9023189, -3788161, -992674, 8587787, -759672, -5318244, 4258997, -12517145, 253940,
+-27380, 436476, 5171678, 2411087, -8916352, -7250442, 6356552, 1949378, 21926344, 5188858,
+-6412923, 955630, 1382443, 235686, 6326487, 1121523, 3075734, -2108292, -3925600, 1499481,
+-11461657, -2136209, -4538707, -6280316, 2229625, -9497783, 12186970, -1170916, 5610838, 8465381,
+3304977, 4721780, 397821, -4766340, 737661, -79457, -5551782, 9234717, -2492155, 16027744,
+581968, 728534, 1833951, -2563022, -7034083, 4408247, -5246840, 210990, 9738838, 6372658,
+18834506, -10108742, 8460549, 4816806, 6048925, -1882806, -11754789, 2455648, -3816615, -9163313,
+19396610, -542240, -6687801, -19224810, 11329050, 4308926, -1271310, -6648610, -9761387, 1087701,
+19635516, 8558259, -1903744, -1207960, -10004589, -6411313, 4845797, 3463891, -8107825, -4085051,
+6052683, 2607045, -1497870, 7005092, 8341900, 2288144, 11378979, 15097884, 7419019, -2533494,
+1855426, 1932735, 1032940, 8229694, -11977590, 11919608, -2167885, -4929549, -10040560, 796716,
+5856725, 5879274, -11674795, 2970507, 6458020, 1979443, -8975945, -15113453, -16110959, 4564477,
+4634807, 1845225, -7419556, 45097, 9615358, -4472135, -10714333, -15899432, -369904, 4160750,
+-14798310, 5680094, 9993315, -4605816, 6932614, 4380330, 23157390, 16411607, 2822331, -4093641,
+-3326989, -2669322, -17188460, -5975910, -1018981, 11108933, -8363912, -3598109, -4369593, 781684,
+16412681, -12845710, -4479651, -177704, 7209640, -2260227, -10841034, -16078747, 5003100, -10965052,
+-6212134, -6667400, -8727910, 2906619, -14012331, -5867999, 10513006, 17714056, -255014, -10406706,
+-10716480, 16330003, -2877628, -8266202, 15518791, 864362, -125091, 1028108, -19325206, 7689065,
+-7931194, 6878927, 4861903, -12082280, -2617246, -12284143, 3555159, -11930882, -3414499, 5266167,
+5512054, -3901978, 2759517, -14603426, 8655433, -1048509, 5379984, 5876589, 2603824, -3229279,
+-4745402, 14698452, -11886859, 7289633, -4303021, -12506408, -9434969, -799938, 11228118, -7355669,
+4189741, 2675228, -5660230, 6155225, -1511829, -3048890, 10009421, 1054415, -5531381, -14934675,
+-138513, -19203336, 3794604, 858993, 9623948, -8164196, -1169305, 3963181, 4554276, 4423280,
+-11917461, 16788490, 13059385, 1429687, 9782325, -5068062, -17261474, 3279745, -6986838, -9264244,
+8858907, 19488414, 4045859, -6625524, -6965363, -17413408, 469225, -272194, 25640954, -10990821,
+4832, -336081, -383863, -16318191, -16782584, 12418361, 880468, 6523519, -1878511, -20650202,
+-10877542, 281320, -2961380, -5422933, -5279589, 11347304, -2439005, 6838662, -8685498, 16225313,
+-20708722, 8801999, 11020349, 4840965, 5889474, 3520800, 16676284, 6670084, -1085016, 1564979,
+234076, 14209899, 24672976, -5195300, 2113661, -9908490, 10575820, 13266080, -10468446, -1080721,
+-21045876, -2687576, -26805428, -13190918, 10056666, -10438381, -23857470, 2583960, -13009993, 993211,
+140123, -14666240, -14641544, 6910603, 13554380, 4614406, -16381542, 8148090, -18378702, -5896990,
+-6926709, 6131603, -7683160, -2921652, 8477729, 1967095, -6172942, -12406013, 13455059, 13733695,
+17023102, 2750927, -2079838, 1120987, 5365488, -781147, 6925635, -7234873, 9165997, -3117073,
+10595684, 9113921, 6381248, -2556043, 396211, -16070694, 5634460, -3623879, 12506945, 2843268,
+-29044180, 5039071, 14385456, 19851876, -11000485, -14566918, 18250390, 8811125, 12905840, -22127134,
+11428908, 28999082, 30190936, 2467459, 1016297, 17578764, -11422466, -15209016, 10515154, -16955994,
+7082938, -7775502, -6153615, -3739306, -36550172, -22006876, -16607028, -4265977, -16076599, -29395294,
+22355842, 2892661, 7174743, -3377992, 15685757, 923418, -14303852, 11173357, 3847754, -4398584,
+-8831527, -6041945, 1558536, 4387846, 13836237, -7677254, 10751914, 4066260, 19943144, -28848222,
+-8367133, -4169340, 3282429, 12451647, 16881368, 4421132, -14600204, 10000831, 13181792, 11976516,
+-3701725, 4481262, 348429, -4355097, -2447595, 1291175, 3954054, 2045478, 9642738, 2114198,
+-13204340, 12351789, -13664438, -16442745, 2188286, 12625593, -6356015, -3965329, 4028679, 6355478,
+10130754, -5622112, 4622996, 24121074, -9816148, -24901146, -32999308, -16212428, -22414898, 10336376,
+19018652, 12520903, 4555350, 11724187, 6733972, 12849468, -10909754, 14382235, 7661148, 5582384,
+15320685, 18881750, -5990406, 29911762, 2910377, 4696010, -6180458, 10878615, -34182036, -15084999,
+-23340462, -24106578, 9641665, -21022254, 20773684, 23625542, 1109175, 5176510, -3546032, 4390531,
+-22290344, 9287867, 24866250, -14008573, -28708636, 3926674, -10723460, -9061307, -27987080, 5011153,
+10449119, 48318, -3681324, 9214852, -15891916, -2478196, 10572062, -5540508, -14059575, 1950452,
+-6940131, 14937896, -9575093, -5125507, 13910862, 12234751, 25554518, 3693135, 6289980, -1976759,
+6976101, 9440338, 15842524, -4090420, -368293, -9277129, 20835960, -25564720, 28151364, 1579474,
+-11068668, 13779329, -10109816, -6777459, 25820270, -36397164, 6062347, -6918656, 7201050, -13356275,
+6768869, 16042777, -7987566, 198105, -4525822, -4154844, -4366908, 30270930, -33194728, -5609228,
+36696736, -14598594, -23267448, 2524367, -8994198, -7488276, -13214004, -15905338, 20167556, 9104794,
+1029718, 9910100, 23946590, 14631343, -1919314, 5270999, 16022375, 21109228, -18687940, 8956081,
+17144972, 7920457, 6133750, 24348170, 11329587, 5374615, -955630, 11172821, -1424855, 12602508,
+9881646, 5921686, -11435887, 21628382, -17637820, -1759863, 26373784, 26698054, -6431714, -22834730,
+8596914, 108448, 22629108, 39699456, 8616241, -5507759, 2638721, -21981642, -2779918, -5401458,
+-4945655, 1023276, 19921132, -7985955, 8731669, 24720222, 4031901, -21598316, 14702210, -412317,
+9360344, 23411330, 31875100, -8137353, -8412767, -1795833, -25172804, -35915052, 1121523, -15620259,
+-2560874, -18988588, -1866163, 2356327, 3099356, 17406428, 2684, -6190122, 25182466, -47042776,
+25982942, -19931332, -45969036, -13882408, -11424613, -1843078, -10438381, 5399848, -12555263, -28815472,
+-17062832, -8761196, -2389076, 3073049, -11555610, 11305965, 22646288, 621160, -1180579, 5931350,
+1608465, -4401805, -8090645, -4918275, 6300180, 6434935, -1755031, 6099391, 27778774, 7333657,
+-7816304, -27585502, -4127464, 19029390, -23270670, -11343545, -8720394, -25233, -1564442, 14498736,
+-4666482, 1423245, 20633022, 6904697, 22857280, -3602941, -10486163, -5363878, -5618891, -6372658,
+11096048, 629750, 7537668, 13181255, -24146844, 2866891, -6336151, -15901043, -11353746, 22795002,
+17061220, -201327, -11679090, 3534758, 9802189, -483721, 6564858, -18187040, -40857488, -21099026,
+-15691126, 11391327, -108448, -7019587, 13771276, -18731426, 22468584, -2033667, -34890704, 6914898,
+-16702054, -3769371, -2313377, -4424890, -22148072, 6768869, 1387811, 17457432, -38044284, 340913,
+19063750, 1988570, -8884140, -19645180, -1321239, 10812043, 16687559, -14008573, -4726612, 8617315,
+19024020, 16930224, -16494285, -3700114, -26840862, 12262132, 13803488, 8165807, -7587597, -2423435,
+-7258495, -3183108, -8930311, 2279017, 19711216, -7609072, -7733089, -7067906, -11169062, 22017612,
+19152870, -2185065, 26953604, -1530619, 9489193, -24160802, 19430432, 8425652, -27058830, -8946417,
+30451854, 12501576, 7971460, 5768141, -14908905, -11563663, -16063178, 26577258, -14499273, 20592220,
+20460150, -24097450, 54883776, -11705396, 33283312, 2100239, -9828496, -13904420, 23173496, 12238509,
+-25979720, -3645890, 13459354, 22957138, 1889786, -19447076, 9289477, -37485936, -10013179, -34120292,
+-47046536, 1329292, -18216030, 5710696, -3706020, -7730405, -18124762, -12706661, 10167261, 27763206,
+-23912230, -5588826, -40977748, -36197448, 9341554, 13618268, -22798224, -24019068, 882616, 4397510,
+-38315940, 1178432, 111132, 18689550, -17666812, -214212, 15417859, -11602317, -20492900, -23040352,
+-11550241, -21179558, -17414482, -22133578, 28165858, -38501160, -24210730, 32204202, -2316061, 7985955,
+-29461328, -6499360, -9434433, -937377, 45881524, -8494372, -2540473, 2803540, 20480552, -1464584,
+-22835268, -11392401, -17118666, 2902324, 54563264, 8717173, -22311818, 40315248, 28331752, -29948806,
+29025926, 49683108, -2742337, -22982370, 31839130, -8584029, 32742146, 32149978, 24252070, -64873872,
+-42591044, -41345504, -17046726, -26764088, 33967824, 15978352, 27493160, -2049773, -59301152, -6357089,
+7195144, 41744936, -3686693, 11558831, 34100968, -11076184, -28184112, 5140539, -3752191, 48161080,
+27741194, -12408697, -22691386, 51049444, 1476395, 26829050, 9788767, 47835736, 37207840, 32741072,
+1313186, -22950158, -15771120, -16898548, 35991288, -15524696, -27672474, -11447162, -417686, 1596117,
+14959371, -13743895, 4266513, -74176768, 6909529, 14658723, 10948409, -29417304, -31478352, 11944304,
+25446070, -30412126, 11317239, -16074452, -16286516, -19468550, -3539590, 26479010, -17336636, 28835336,
+-8058433, 13066364, -49328236, -27900644, -2529736, 28419262, 16585553, -31879394, -38661148, -14398878,
+2698313, 43056512, 16077673, -94489, -26196616, -5927592, 11465952, 87300040, 8409546, -45814952,
+-104562056, -8871255, 61527552, 16164646, 26737246, -2179159, 37423124, -5608154, 16412144, -7951058,
+21243982, 30873298, 16023449, -13694503, -34353832, 41429256, 46089296, -9354976, -45342508, -26657252,
+5004711, 27618788, 9122511, 10677826, 2069101, 8015483, 3498251, 8020315, -8419747, -51352776,
+303332, 34069828, 25766582, -8840116, 3318399, 21689584, 44824428, 28701118, 22524956, -24105504,
+-17008070, -2534031, -3573413, -37313604, 29166586, 18634252, 30387430, 61303680, -28766080, -17118666,
+-928787, -13860396, -12202539, -23139136, 48002164, -24909736, -27497992, -27727236, -7987029, 61821760,
+18070002, 26394722, 2287070, -969052, -9445707, 40715752, 34231964, -10228465, -28221156, 17150878,
+3351685, 1184874, -28027346, 5264556, 63607928, 54318452, 5090073, 7007239, -39060044, -66516160,
+-63817308, -26657788, 47130824, 57880052, 53935664, 34692600, -11140071, -32877974, -36194228, -18622978,
+11515881, 25524454, 36104032, 6956774, -32285806, -21570400, -8172249, -21561810, -14354318, 9023189,
+37563248, 61006788, 34541736, 21405580, 13650480, -32236950, -6883759, -68513320, -83456584, -46755552,
+-26988500, -18230526, 35207996, 63270772, 63045288, 63483912, 48816060, 25560960, 904628, -20421496,
+-9383967, -35449588, -73423000, -1205812, 4053912, 11710765, 20973400, 19022948, 21306260, -74179992,
+-45949172, -22963580, -48578764, -13853954, 31420906, -14362371, 20250234, 9460739, -23713588, 23606750,
+-20397874, 26193394, 19054622, -9111236, -37546068, -61729956, -72327248, -39911520, 10897406, -118135224,
+-61386356, -30361124, 40002252, 11003169, 153135984, 158792464, 118672632, 155196496, 160953904, 148202144,
+105568688, 97850632, 106633840, 45268956, -4508105, -61349312, -98553392, -134919952, -132706440, -196864656,
+-119482232, -74590160, -60099476, -84480400, -43867184, -7224672, -63567128, -46082316, -51103668, -5851356,
+-28695750, -4700305, -40043052, -15179488, 31949724, 35822712, 13888850, 402653, 35181152, 32877974,
+-61394948, 24008868, 52830784, 111040472, 81126560, 106932872, 47174312, 50046568, 167843024, 99145024,
+172128864, 68340984, 162600480, 120288072, 143822880, 195829040, 181568672, 155182000, 167029664, 190645552,
+200246400, 179790016, 198315280, 147091360, 201686288, 173010416, 148262800, 166259264, 92603792, 184319056,
+91319056, 71124120, -48287780, 21985400, -95662344, -107075144, -115826144, -3383897, 0, 0,
+0, 0, 0, },
{
15113453,
--1633698, -2529736, 694174, 1110786, 4139812, -1085016, -2465311, -4063039, 4425964, 384400,
-1467805, 4436165, 1223529, -699006, 1129576, 2338073, 1537598, -2365453, 5131949, 536871,
--6700149, -1268089, 4452808, 1720671, 485868, -2434173, -1402307, 2183991, -816044, 8834748,
--1593433, 2013803, 346282, 805843, -4951561, -1691143, -1029182, 1817308, -663572, 1092532,
--2844879, -1573032, 1886564, 2798171, 1957968, 3325915, 3411278, 2185602, -3005403, -4722317,
-593779, 2790655, 3081639, 2320893, -1652489, -2074469, -7317014, 3772592, -1742146, -2819109,
--473520, -1253594, 1475321, -3479461, 1503239, -4404489, 1876364, -4182761, 3798899, -1668595,
-3176665, -807991, -527744, -4976794, -453656, -7773891, -15089831, -2759517, 307090, -3581466,
--7044283, -2458332, 5346698, -8506183, -4537633, -2880849, -1538672, 2573759, -1091459, 2877628,
-1470489, 2509335, -179315, 3129958, -2700998, 431644, -1121523, 517544, 8223789, -1817845,
--385473, -4110821, 5128191, 3022583, 2527588, 6167036, -3082176, -1905892, 2256469, 5514201,
--1393717, -459562, -4403415, -5039071, -3194919, 3453154, -4278861, -3854196, -357019, 4955856,
--6699075, -1531693, -5577552, -2843268, -1511292, 704912, -395674, -4161823, 5352066, 816581,
-4825933, -1980517, -1082869, -5944772, -19864, -2131915, -2112050, 3311420, 1995549, -1120450,
-1903207, 3677029, -1000191, 1546725, -2640868, -1602560, -649077, -2569464, 2173254, 778463,
-1483374, -12412455, -4581657, 3688840, -3404299, -1400159, -1497870, 1782948, -738198, -3214783,
-5102958, 4737886, 1448478, -505196, 2303176, -6342056, -1053341, -6269042, -3312494, 4752382,
--900869, 906238, -763967, -658204, -20938, 9858561, 8832600, 4070019, 4649839, 5735929,
--1234266, -590558, -2097555, 5065914, -637266, -1839320, 1252520, -2857227, 1840930, 3659312,
--2007897, 4117263, 4415227, 9007083, -3682398, -4168803, 3645890, -2259153, -68183, 1940788,
--5410048, 368293, -2939368, -2996814, 6667937, 4110821, 4721243, -2777233, -4001836, 2693481,
--4635881, 3129958, 13005161, 830539, 581968, 3080565, 931471, 1334661, 7159174, -3920768,
--1509681, 1563905, 409633, -3529926, -3508452, -3468723, -2874407, -615254, -3712462, 4012036,
-6310381, -3007551, 3088618, 10081362, 3279208, 2341294, -7096360, 5856725, 1445793, -8991514,
-3742527, -2499134, -5510980, 2215666, -847182, 2132988, 5149666, -5486284, -5889474, -2554969,
-7770133, 238908, 3801046, 8165807, -12233677, -9768903, 1478006, 5980205, -4498442, 388695,
-7973607, 2085207, -1168768, -2440078, 9557376, 1174674, -2489471, 1340030, -8922258, 978179,
--4986457, 4449586, 636729, 4721780, -2546916, -1230508, 1989644, 97711, 457414, 220654,
-4385162, 3609920, -5190468, 2793876, 3839164, -6951942, 607201, -3190087, 1061931, -1683090,
--5557688, -37581, 4307316, 3837017, 8533563, -5634997, 6504191, -4713190, -1290638, 3834869,
--4860829, -6861211, -2859375, 20041392, 9178345, 12083890, -858993, -3522947, -4279935, -4565014,
-2530273, -3860639, 5750961, -789737, 7843147, 311385, 4203699, 4911295, 4036196, 3192771,
-4559645, -15155866, -4319127, -1580548, -3048353, -2949569, -4609037, -10857677, 588411, 7130183,
--4396436, 4201552, -3511136, -5524939, -3918084, 405338, -3291556, -1468879, -3379066, -456877,
-8924405, 248571, 4066797, 5347235, 7354058, -3645890, 1799591, -1869921, -5497022, 6099928,
--3455301, -527744, -5437429, 3770445, 51540, -201863, -1421097, -2888903, 1989107, 5352603,
--2263985, 2852932, 3157875, 2176475, 9904731, -10227391, -4000762, -196495, -5236102, -7490423,
--2573759, -9115531, 1546188, 9458592, -6599218, -4017942, -7424388, -342524, -1603097, -4742181,
--4812511, -584116, 6470368, 8751533, -4749697, 4461934, -3833795, -2157147, -1389959, -11286100,
-8286066, -2538863, -955093, 12614319, 8194798, 8373039, -3240553, 147640, 1772748, -2149094,
-3100967, -6702297, 84826, -4638028, 5491653, -5247913, -3227131, -699006, 1171452, -6434398,
-1495722, 504659, 8535174, -98784, -10952703, 6331856, 6393059, 8506720, -1051730, 2028835,
--5891622, -4844723, -1619740, -4705137, 2147484, 1046361, -1329292, -827318, 5095442, 7195681,
--9644886, -2310156, 411243, -4256850, -3856344, 6500970, -4889284, 2370285, -4767951, -7082401,
--4670777, -3565360, 2930242, 843961, 12986370, -2232309, -2733210, 3576097, -3086471, -1215476,
--2615635, 3343632, -2306934, 4349728, -1403917, -2173254, 3969087, 6934225, -15254113, 14665703,
-8145406, -9035001, -8754754, 3483755, 11960947, -348966, 3634079, 13544179, 4778688, 3952981,
--2142652, 6973953, 6713034, 7355669, -13407277, -8521215, -8065949, 6328635, 5788006, 6977711,
-515933, -8470212, 3582003, -1436667, 3922916, -12097849, 4776541, 7042136, -5422396, 2943663,
-6009733, 1456531, -9664, 1072131, -1710471, 10253161, 7251516, 5400922, 366683, 3442953,
-8207683, -7374459, -3717831, 168041, 10794863, 6623914, 4330938, -8215199, 430034, 5255966,
-6485401, -2440615, 2087891, 6002217, 7796977, 2210298, 7203197, 2593087, -722091, -6809671,
-8590, -11198053, -4457639, -5538361, 896038, 3271155, -6408091, -2957622, -11722039, 4546760,
--3508452, -724239, 5564130, 7954817, 9414568, 2218888, 12882218, 4290136, -2414309, -5738077,
--15693810, -7323993, 9307194, -3134789, -14445049, -3608846, -2455111, 2375117, 7685307, 12238509,
--903017, 3743064, -2958696, 6199249, -6923488, -6955163, -7908646, -13482976, 7097971, 4367445,
--11648488, 555661, -8570070, -2980707, 7147363, 4382478, 5785321, -1483911, -1823751, -1751273,
-12752832, 10335302, 10471130, -4660040, -9433896, 7475391, -1507534, -3024731, 8961986, 1876364,
-8802535, -54761, 4781373, -6150930, -650151, 4820027, -19826642, -2687039, 595927, -14011257,
-3345243, -3365644, 12947179, 8776766, -8554501, 941135, 11752104, -950262, 5764920, -3758097,
-7905424, -3542274, 1169305, -2863133, -304406, 6235219, -8462696, 8931921, 3809099, 5222680,
-753767, 10964515, -31454730, -6573448, 16818018, -13512504, -4936528, 14420890, 5403069, -4410395,
-1545651, -11702175, 10625749, -1173063, -19030464, 1555852, -909996, 7429220, 7199439, -3566970,
--14829985, -6162741, -5558225, 587874, -7802345, -4093641, -9975598, -2612414, 11312944, -8774081,
--4328790, -3144990, -5653788, -5874979, -8195872, 6202470, 1498407, 7640210, 1608465, -4866198,
--7853348, -7641284, -1269700, 5916855, 8415988, -2281702, -6808060, 8207683, 3677029, -10837276,
--12212203, -25355876, -1727651, -7631620, -4413079, 4565550, 4604205, 3134789, 12375411, -413927,
--4826470, 153008, -5204427, 14231374, 7943542, -1604170, 8050916, -6425808, 4745939, 4228396,
--6220724, -1931125, -5361193, 6141267, 4625680, -10422275, 9404905, 14212047, 319438, 6449431,
-19986094, -8885214, 7065221, -4260608, -906775, 12782896, -4309463, -4483409, -3685619, -280247,
-1225676, 8947491, 26569204, -686658, 768262, 8437463, 882616, 945430, -13744432, -12548284,
-1147293, 2638721, -9314710, -3477850, -2863670, 8411693, -4309463, 2278480, -1121523, 4120484,
--4394289, 16824460, 7932268, -6693707, 7834557, 8776229, -10692321, 2486249, 3120294, 3999688,
--3721589, -2498060, 12307766, -10901164, 3885872, 15553687, -6230387, 2626373, 8357470, -243739,
-7096360, 5320928, -1040456, 5319317, 5861020, 10516764, 4866735, 1596654, -1650878, -5884642,
--8766028, 1102733, -599685, -22461068, 13705241, -2722473, -8828305, -7221451, -18854906, -18394272,
--14515379, 3282966, 7248831, -2526515, -1728188, -595927, 27845346, 28665148, -1188095, -23117124,
-4172561, 5108327, -3121368, 6430640, 3072512, 2319819, -742493, -3714073, 22389128, 4466766,
--4201015, -25276956, -14875082, 6220724, -2152852, -8684424, -15882789, 2299955, 1970853, 4071092,
--4460861, -16637093, -18560164, 19487340, 17638356, 5808944, 16109349, -14341433, 1186485, 7587597,
--3842922, -9115531, -17267380, -8128226, 2019708, -725850, -8632347, 7874286, -820876, 7613904,
-5222680, 319975, -18728204, -10402948, -9431748, -1595044, 627065, 2132451, -4261145, -5235565,
--118112, 2575907, -17208860, -4294968, 1067299, 3189013, -8794482, -20164872, -6364605, -5432597,
-12682502, -1096827, 4478041, -7206419, -7323456, -9531069, -12484396, -6585259, -1402307, -1681480,
-8664023, -8420283, -2525441, -5384815, 6208375, -4382478, 13399224, -7416872, 3269007, -5857262,
-2078764, 2129230, -6594923, -6325950, -12657805, -16351477, -8872866, -5018133, 455803, -712428,
--7279433, -8916889, -14649597, 6515466, -14675366, -21501680, 14369887, -13331042, -14369887, 13401909,
-3966402, -4375498, 16779900, 7871602, -10851235, 10064182, -29570312, -3200825, -6656126, -4413079,
--13209709, 24232206, 13173202, -8566312, 5037997, 6846178, -3976066, 7667054, 1487132, -777926,
--5870147, 7386807, 11275900, 12149926, -19479288, -1940788, 1314260, 4959614, -7988103, -4867809,
--8120173, -10755135, 18189186, 4080219, -10831371, 5100811, -6027987, -9505299, -11629161, -25651692,
-8165807, 14695231, 3010772, 14826227, 24019068, -2595234, -6743636, -21937620, 4192425, -3299072,
--17152488, 1921461, -38797512, -26796300, -18447958, 9802189, 19924354, -28185722, 6906308, 19266150,
-12629351, -693637, 7683697, 18149994, -8038568, -1513976, -4912369, 146566, -11557220, 8176007,
-688269, 619549, 3686693, 24485072, -731755, -11364483, -10152229, 5543192, 18862422, -7781944,
--17990544, 5123359, 19156092, 10468446, -1925219, 8644695, 6692096, 8315594, 2542084, 6985765,
-13232257, -1954210, -20616916, 683974, 7213935, -20305532, -13866839, 19100256, 15988016, -15438260,
--9138617, 4362613, -264141, 9153649, 24471114, -5510443, -3785477, 4076461, -390305, 8325257,
-5256503, -9112310, -5871221, -3766686, 7905424, 5753646, -5287105, -17794586, -1945083, -26565984,
-25616258, 3240016, -3243237, 1145683, 11451457, -2388539, -10073309, -4803384, -1575716, -15209553,
--654983, 2559801, -18600430, -4963909, 13945222, 18080738, 12821014, 33805688, 20402706, 30605400,
-11402601, 7951595, -15964930, 17083770, -5905580, -2127083, -12828530, -8671002, 16542603, -5681168,
-37664716, 17345226, 10759430, -2286533, 8579734, -6234145, -17820356, -9232569, -11137924, 7636989,
--10524280, -587874, -11258720, 6091874, 15161771, 13479755, -1140851, 19647864, 16535624, 330176,
--6083821, -8152922, -14006962, -5243082, 31395138, 11731166, 36175436, -12320114, -76773, -1847910,
-8235063, 28594818, 9761924, 14496, 18548354, 20813948, 22513144, -2836826, -13670344, -5769215,
--3914326, -4764730, 14916958, 9346386, 14194330, 20820390, -13682692, 31918050, -22162568, -42933568,
--6276558, -14529337, 8869644, 19144816, 32694364, -16531329, -12008192, 11009612, -9009768, -2261837,
--3908420, 3833795, 14655502, 14663555, 22950694, -24932286, 28174448, -10365367, 3047279, -13118441,
-12023761, 20480552, 9076340, 3508988, 1998234, 25084220, 6810745, -1138703, -7814693, -4145180,
--25509422, -3764002, -12076911, -31625992, 3317862, -2060511, 13492103, -32859722, -5728950, 7577933,
-12814572, 27183922, -6753836, 7912941, 15644955, 2263448, -2986613, 7765301, -6394670, -1754494,
--39986684, 3745212, -16462073, -20268488, -21799106, 9481677, -35543000, 12394739, -12551505, -18012020,
--23671176, 22981834, 25852482, 24555938, 6586869, 4990215, 24584930, -30880278, -930934, -8980240,
-15129022, -36643052, -10342818, -2966212, 14861124, 10471667, 10945724, 15967615, -10252624, 5651640,
--10739029, -29021630, -1141924, -9951976, 34495568, 7961259, 24261734, -7455527, 33349884, -20587926,
--40371620, 9721658, 6310918, 5296232, -20245402, -21814138, -18078054, 7424925, -18169322, 8666170,
--9763534, 27438936, -8941048, -3126199, 18933826, 1512365, -47925392, -18887656, -795106, 32432372,
--3719979, -8856759, -27429808, 5792301, -6767795, -22477712, -27856084, -2127620, 5196911, -8461086,
--10479183, -26734560, 18476950, -5710159, 6828461, -12642773, 936840, 9575093, 5447093, 25975426,
-714038, -7097434, -31486942, -9865003, 16110422, -20444582, -10457172, 9663140, 18447422, 15360951,
-36069136, 28493350, 1568737, 22114786, 22067542, 8977019, 2197950, 14204531, -8840116, 55188184,
--22565758, -55537148, 17549774, -46612744, 725313, -35461396, 3251827, 50035296, 23487566, -34894460,
--21047488, -15106474, -10440529, 12359842, 22417044, -13485124, 2854543, 17654464, -36453000, 1753957,
-10433012, -29640106, 16410533, -10503879, 14708116, 3991635, 16413754, 707059, -16836272, 18363670,
--22416508, -6075768, 48636748, -19979650, 19015968, -11871290, 21191906, 16894790, -4178466, -21174188,
-23841364, 56168508, -29023242, 7536594, -39139500, 20384452, 14760729, -22810034, 27041114, 1930588,
--47228536, 6774237, 4844723, 22340810, -3584150, -3740917, -23471996, -25513180, -10349797, 61780420,
--6691559, 31374736, -24730422, 20697984, 13100724, -5586142, -18107046, -3743601, 20713016, 35108672,
--9191230, -11256036, -78383, 7403450, 34125664, -6927246, -3053185, -21492554, 11374684, -32548872,
--10116795, 25892748, 34988416, 5447093, 7211250, -34439732, 24910810, 19147502, -40375376, 1477469,
--19887846, 127238, -44656924, 45044008, 44311176, -6890202, -18779744, -10131291, -5769215, 20551418,
--20783346, 27277874, -36678484, -25561498, 14358613, 11511586, 6319508, 11045582, 40944460, 8376260,
-20645370, 2145873, 21391084, 10408316, -5146982, 1312649, 18757196, -3511673, 2195265, 27756226,
-17132088, 37206228, 52076, 20192252, 3837553, -31334470, 33512020, -17658758, 677531, 6815576,
--23337242, -20864952, 14942728, 40845140, 27981712, 13342853, -50934556, -15117211, -34138012, -2517388,
-67330592, 38896836, 52419540, 1684701, -40145596, 12305618, 52308944, 7946227, -5292474, 39664560,
-11256572, 26207354, -63747516, -60058676, 50494320, -3593814, -10132365, -44777720, 379031, -14394046,
-31027380, 21861384, 9682467, 15945603, -38615516, 21630530, 34923988, -219580, 13540421, -32060320,
-25355876, -16117939, 13403519, -1761474, 2500208, 16515223, -3609920, 9692131, -1681480, -26533772,
-8655970, -4689568, 28687698, 19860466, 35095788, 7701950, -22686018, -23971824, 23622856, 20488604,
-13432510, -1372242, 9951439, -10095321, -18115098, -190589, -5158256, 25262998, 22793392, 13799730,
-25565256, 19558208, -30063160, 31699542, 37955164, 21488258, -14849313, -20201378, -19917374, 26510148,
-21170968, 46386184, -28327994, -36266168, -20848308, -51029580, -8603893, 43231532, 11246909, 32310502,
--37511172, -50707996, 13491029, 20725902, -34274912, -1795833, -26049514, 3644817, -30269856, -12293270,
-22594212, 7085086, -25419764, 372588, -16235513, -63424320, 9323300, 39062728, -1226750, -78683800,
--16837882, -1178969, 275415, 28491740, -74698072, -7698729, 32639604, -53870700, 11398306, -11815992,
-62566400, 34146064, -39909372, 10043781, 41625212, 4750771, -18234820, 14413910, 8977019, 5872294,
--2178622, -4083977, 1851131, 7093676, 13137768, 44040056, 33640868, 38432976, 24595130, 48330192,
-21806622, 49332532, 18530100, 43645996, -1348083, 26891328, 22507240, 26548266, 18565534, -2595771,
-5872831, -34452616, -22432078, 63391568, -1577327, -26606786, -9663140, 19093814, 31270584, 67916856,
--12002823, -39366060, -21913996, -29512868, 36503464, 43414604, 47472272, 13882408, -4933844, 32189706,
--61244088, 50685984, 16648367, -30153892, -4033511, -92733712, -1535988, -62268972, -86595128, -23243826,
--52696028, -23509040, 89358944, 84272088, 74320648, -21633750, 56481504, 69455528, -57583700, -52101712,
-17289928, 60788820, 1128503, -27897960, -181999, 16816408, 17731772, -49504328, 18166102, -6195491,
-25941066, -26927298, -13648869, -31607738, 33459942, -4060892, -15501074, -29446296, 21486110, 13646185,
--5771899, -24704116, 11271605, 11995844, 5344013, -21641266, -3941706, -261456, 25194278, -18631568,
--5585068, -27604828, -8411693, 10982768, 21826486, -28598040, -12401718, 32993402, 26045218, -6965900,
--20417738, 1360968, -11115912, 28111098, -16582332, -6614787, 11265699, 11519639, 14491757, -12486544,
-2741800, -17800492, 21128554, 29856466, 10765872, 6969658, -23893976, 27308476, -19954418, 40960028,
--30577482, 33928096, -50874960, 36171676, 234076, 1887101, -37774776, -4619774, 5814312, -2275259,
--2499134, -1524713, -12630962, 55407764, 58331560, -34177204, -20724290, 11953968, 55705724, 35119948,
-20587388, 20410758, -9185324, -23077396, -7354595, 13515725, -460098, -5150740, 16452409, 668404,
-11528766, 1831267, -6498286, -20593832, -5800354, -818728, 1329292, -409096, -17268990, 19475530,
-2974802, -7216082, -622770, -124554, 87510, 12772696, 22408992, 10128070, 2127083, -7611219,
--11827266, -2491618, 7211250, 15699179, 20273856, -10783589, -11317776, 3163244, 20542292, 9946607,
-4562866, -8616778, -18695992, 16681653, -3248069, 1230508, 1170916, 5974837, 5070209, -1365800,
--470299, -11213086, 2168959, 11818676, -4702989, 7599945, -3060701, -7376070, 6245956, -167504,
-3970161, 1043677, 10710038, 8366060, -11973295, 6646462, 3745748, -21616570, -19639274, -72522672,
-30721902, 112317688, 103244568, 88463976, 35081828, -83498456, -52515100, -75024488, -84443352, -75151192,
--22042846, 16596827, 63520956, 66533340, 79271136, 52864068, 52960168, 1664300, -55736328, -52855480,
--65612068, -50938848, -28549184, -1509681, -18364206, 20388210, 24653650, 40328668, 43862892, 44962404,
-26599270, 2762201, 11899744, -9242770, 6459094, -29853244, -21948356, -27530204, -45802604, -35847408,
--27740120, -19056770, -32442572, 5283884, 56150256, 63887100, 35576824, 66820028, 16752520, 39405788,
-20255602, 12282533, -16070694, -34169688, -47678968, -66659504, -51311976, -76097160, -31238908, -33056752,
-23133230, 23775866, 65812320, 76304928, 67755256, 61146376, 59515360, 38570952, 6681359, -17242146,
--58684284, -34739844, -75764832, -62251792, -83965536, 5574868, 3627100, 11296301, 0, 0,
-0, 0, 0, },
+-1633698, -2529736, 694174, 1110786, 4139812, -1085016, -2465311, -4063039, 4425964, 384400,
+1467805, 4436165, 1223529, -699006, 1129576, 2338073, 1537598, -2365453, 5131949, 536871,
+-6700149, -1268089, 4452808, 1720671, 485868, -2434173, -1402307, 2183991, -816044, 8834748,
+-1593433, 2013803, 346282, 805843, -4951561, -1691143, -1029182, 1817308, -663572, 1092532,
+-2844879, -1573032, 1886564, 2798171, 1957968, 3325915, 3411278, 2185602, -3005403, -4722317,
+593779, 2790655, 3081639, 2320893, -1652489, -2074469, -7317014, 3772592, -1742146, -2819109,
+-473520, -1253594, 1475321, -3479461, 1503239, -4404489, 1876364, -4182761, 3798899, -1668595,
+3176665, -807991, -527744, -4976794, -453656, -7773891, -15089831, -2759517, 307090, -3581466,
+-7044283, -2458332, 5346698, -8506183, -4537633, -2880849, -1538672, 2573759, -1091459, 2877628,
+1470489, 2509335, -179315, 3129958, -2700998, 431644, -1121523, 517544, 8223789, -1817845,
+-385473, -4110821, 5128191, 3022583, 2527588, 6167036, -3082176, -1905892, 2256469, 5514201,
+-1393717, -459562, -4403415, -5039071, -3194919, 3453154, -4278861, -3854196, -357019, 4955856,
+-6699075, -1531693, -5577552, -2843268, -1511292, 704912, -395674, -4161823, 5352066, 816581,
+4825933, -1980517, -1082869, -5944772, -19864, -2131915, -2112050, 3311420, 1995549, -1120450,
+1903207, 3677029, -1000191, 1546725, -2640868, -1602560, -649077, -2569464, 2173254, 778463,
+1483374, -12412455, -4581657, 3688840, -3404299, -1400159, -1497870, 1782948, -738198, -3214783,
+5102958, 4737886, 1448478, -505196, 2303176, -6342056, -1053341, -6269042, -3312494, 4752382,
+-900869, 906238, -763967, -658204, -20938, 9858561, 8832600, 4070019, 4649839, 5735929,
+-1234266, -590558, -2097555, 5065914, -637266, -1839320, 1252520, -2857227, 1840930, 3659312,
+-2007897, 4117263, 4415227, 9007083, -3682398, -4168803, 3645890, -2259153, -68183, 1940788,
+-5410048, 368293, -2939368, -2996814, 6667937, 4110821, 4721243, -2777233, -4001836, 2693481,
+-4635881, 3129958, 13005161, 830539, 581968, 3080565, 931471, 1334661, 7159174, -3920768,
+-1509681, 1563905, 409633, -3529926, -3508452, -3468723, -2874407, -615254, -3712462, 4012036,
+6310381, -3007551, 3088618, 10081362, 3279208, 2341294, -7096360, 5856725, 1445793, -8991514,
+3742527, -2499134, -5510980, 2215666, -847182, 2132988, 5149666, -5486284, -5889474, -2554969,
+7770133, 238908, 3801046, 8165807, -12233677, -9768903, 1478006, 5980205, -4498442, 388695,
+7973607, 2085207, -1168768, -2440078, 9557376, 1174674, -2489471, 1340030, -8922258, 978179,
+-4986457, 4449586, 636729, 4721780, -2546916, -1230508, 1989644, 97711, 457414, 220654,
+4385162, 3609920, -5190468, 2793876, 3839164, -6951942, 607201, -3190087, 1061931, -1683090,
+-5557688, -37581, 4307316, 3837017, 8533563, -5634997, 6504191, -4713190, -1290638, 3834869,
+-4860829, -6861211, -2859375, 20041392, 9178345, 12083890, -858993, -3522947, -4279935, -4565014,
+2530273, -3860639, 5750961, -789737, 7843147, 311385, 4203699, 4911295, 4036196, 3192771,
+4559645, -15155866, -4319127, -1580548, -3048353, -2949569, -4609037, -10857677, 588411, 7130183,
+-4396436, 4201552, -3511136, -5524939, -3918084, 405338, -3291556, -1468879, -3379066, -456877,
+8924405, 248571, 4066797, 5347235, 7354058, -3645890, 1799591, -1869921, -5497022, 6099928,
+-3455301, -527744, -5437429, 3770445, 51540, -201863, -1421097, -2888903, 1989107, 5352603,
+-2263985, 2852932, 3157875, 2176475, 9904731, -10227391, -4000762, -196495, -5236102, -7490423,
+-2573759, -9115531, 1546188, 9458592, -6599218, -4017942, -7424388, -342524, -1603097, -4742181,
+-4812511, -584116, 6470368, 8751533, -4749697, 4461934, -3833795, -2157147, -1389959, -11286100,
+8286066, -2538863, -955093, 12614319, 8194798, 8373039, -3240553, 147640, 1772748, -2149094,
+3100967, -6702297, 84826, -4638028, 5491653, -5247913, -3227131, -699006, 1171452, -6434398,
+1495722, 504659, 8535174, -98784, -10952703, 6331856, 6393059, 8506720, -1051730, 2028835,
+-5891622, -4844723, -1619740, -4705137, 2147484, 1046361, -1329292, -827318, 5095442, 7195681,
+-9644886, -2310156, 411243, -4256850, -3856344, 6500970, -4889284, 2370285, -4767951, -7082401,
+-4670777, -3565360, 2930242, 843961, 12986370, -2232309, -2733210, 3576097, -3086471, -1215476,
+-2615635, 3343632, -2306934, 4349728, -1403917, -2173254, 3969087, 6934225, -15254113, 14665703,
+8145406, -9035001, -8754754, 3483755, 11960947, -348966, 3634079, 13544179, 4778688, 3952981,
+-2142652, 6973953, 6713034, 7355669, -13407277, -8521215, -8065949, 6328635, 5788006, 6977711,
+515933, -8470212, 3582003, -1436667, 3922916, -12097849, 4776541, 7042136, -5422396, 2943663,
+6009733, 1456531, -9664, 1072131, -1710471, 10253161, 7251516, 5400922, 366683, 3442953,
+8207683, -7374459, -3717831, 168041, 10794863, 6623914, 4330938, -8215199, 430034, 5255966,
+6485401, -2440615, 2087891, 6002217, 7796977, 2210298, 7203197, 2593087, -722091, -6809671,
+8590, -11198053, -4457639, -5538361, 896038, 3271155, -6408091, -2957622, -11722039, 4546760,
+-3508452, -724239, 5564130, 7954817, 9414568, 2218888, 12882218, 4290136, -2414309, -5738077,
+-15693810, -7323993, 9307194, -3134789, -14445049, -3608846, -2455111, 2375117, 7685307, 12238509,
+-903017, 3743064, -2958696, 6199249, -6923488, -6955163, -7908646, -13482976, 7097971, 4367445,
+-11648488, 555661, -8570070, -2980707, 7147363, 4382478, 5785321, -1483911, -1823751, -1751273,
+12752832, 10335302, 10471130, -4660040, -9433896, 7475391, -1507534, -3024731, 8961986, 1876364,
+8802535, -54761, 4781373, -6150930, -650151, 4820027, -19826642, -2687039, 595927, -14011257,
+3345243, -3365644, 12947179, 8776766, -8554501, 941135, 11752104, -950262, 5764920, -3758097,
+7905424, -3542274, 1169305, -2863133, -304406, 6235219, -8462696, 8931921, 3809099, 5222680,
+753767, 10964515, -31454730, -6573448, 16818018, -13512504, -4936528, 14420890, 5403069, -4410395,
+1545651, -11702175, 10625749, -1173063, -19030464, 1555852, -909996, 7429220, 7199439, -3566970,
+-14829985, -6162741, -5558225, 587874, -7802345, -4093641, -9975598, -2612414, 11312944, -8774081,
+-4328790, -3144990, -5653788, -5874979, -8195872, 6202470, 1498407, 7640210, 1608465, -4866198,
+-7853348, -7641284, -1269700, 5916855, 8415988, -2281702, -6808060, 8207683, 3677029, -10837276,
+-12212203, -25355876, -1727651, -7631620, -4413079, 4565550, 4604205, 3134789, 12375411, -413927,
+-4826470, 153008, -5204427, 14231374, 7943542, -1604170, 8050916, -6425808, 4745939, 4228396,
+-6220724, -1931125, -5361193, 6141267, 4625680, -10422275, 9404905, 14212047, 319438, 6449431,
+19986094, -8885214, 7065221, -4260608, -906775, 12782896, -4309463, -4483409, -3685619, -280247,
+1225676, 8947491, 26569204, -686658, 768262, 8437463, 882616, 945430, -13744432, -12548284,
+1147293, 2638721, -9314710, -3477850, -2863670, 8411693, -4309463, 2278480, -1121523, 4120484,
+-4394289, 16824460, 7932268, -6693707, 7834557, 8776229, -10692321, 2486249, 3120294, 3999688,
+-3721589, -2498060, 12307766, -10901164, 3885872, 15553687, -6230387, 2626373, 8357470, -243739,
+7096360, 5320928, -1040456, 5319317, 5861020, 10516764, 4866735, 1596654, -1650878, -5884642,
+-8766028, 1102733, -599685, -22461068, 13705241, -2722473, -8828305, -7221451, -18854906, -18394272,
+-14515379, 3282966, 7248831, -2526515, -1728188, -595927, 27845346, 28665148, -1188095, -23117124,
+4172561, 5108327, -3121368, 6430640, 3072512, 2319819, -742493, -3714073, 22389128, 4466766,
+-4201015, -25276956, -14875082, 6220724, -2152852, -8684424, -15882789, 2299955, 1970853, 4071092,
+-4460861, -16637093, -18560164, 19487340, 17638356, 5808944, 16109349, -14341433, 1186485, 7587597,
+-3842922, -9115531, -17267380, -8128226, 2019708, -725850, -8632347, 7874286, -820876, 7613904,
+5222680, 319975, -18728204, -10402948, -9431748, -1595044, 627065, 2132451, -4261145, -5235565,
+-118112, 2575907, -17208860, -4294968, 1067299, 3189013, -8794482, -20164872, -6364605, -5432597,
+12682502, -1096827, 4478041, -7206419, -7323456, -9531069, -12484396, -6585259, -1402307, -1681480,
+8664023, -8420283, -2525441, -5384815, 6208375, -4382478, 13399224, -7416872, 3269007, -5857262,
+2078764, 2129230, -6594923, -6325950, -12657805, -16351477, -8872866, -5018133, 455803, -712428,
+-7279433, -8916889, -14649597, 6515466, -14675366, -21501680, 14369887, -13331042, -14369887, 13401909,
+3966402, -4375498, 16779900, 7871602, -10851235, 10064182, -29570312, -3200825, -6656126, -4413079,
+-13209709, 24232206, 13173202, -8566312, 5037997, 6846178, -3976066, 7667054, 1487132, -777926,
+-5870147, 7386807, 11275900, 12149926, -19479288, -1940788, 1314260, 4959614, -7988103, -4867809,
+-8120173, -10755135, 18189186, 4080219, -10831371, 5100811, -6027987, -9505299, -11629161, -25651692,
+8165807, 14695231, 3010772, 14826227, 24019068, -2595234, -6743636, -21937620, 4192425, -3299072,
+-17152488, 1921461, -38797512, -26796300, -18447958, 9802189, 19924354, -28185722, 6906308, 19266150,
+12629351, -693637, 7683697, 18149994, -8038568, -1513976, -4912369, 146566, -11557220, 8176007,
+688269, 619549, 3686693, 24485072, -731755, -11364483, -10152229, 5543192, 18862422, -7781944,
+-17990544, 5123359, 19156092, 10468446, -1925219, 8644695, 6692096, 8315594, 2542084, 6985765,
+13232257, -1954210, -20616916, 683974, 7213935, -20305532, -13866839, 19100256, 15988016, -15438260,
+-9138617, 4362613, -264141, 9153649, 24471114, -5510443, -3785477, 4076461, -390305, 8325257,
+5256503, -9112310, -5871221, -3766686, 7905424, 5753646, -5287105, -17794586, -1945083, -26565984,
+25616258, 3240016, -3243237, 1145683, 11451457, -2388539, -10073309, -4803384, -1575716, -15209553,
+-654983, 2559801, -18600430, -4963909, 13945222, 18080738, 12821014, 33805688, 20402706, 30605400,
+11402601, 7951595, -15964930, 17083770, -5905580, -2127083, -12828530, -8671002, 16542603, -5681168,
+37664716, 17345226, 10759430, -2286533, 8579734, -6234145, -17820356, -9232569, -11137924, 7636989,
+-10524280, -587874, -11258720, 6091874, 15161771, 13479755, -1140851, 19647864, 16535624, 330176,
+-6083821, -8152922, -14006962, -5243082, 31395138, 11731166, 36175436, -12320114, -76773, -1847910,
+8235063, 28594818, 9761924, 14496, 18548354, 20813948, 22513144, -2836826, -13670344, -5769215,
+-3914326, -4764730, 14916958, 9346386, 14194330, 20820390, -13682692, 31918050, -22162568, -42933568,
+-6276558, -14529337, 8869644, 19144816, 32694364, -16531329, -12008192, 11009612, -9009768, -2261837,
+-3908420, 3833795, 14655502, 14663555, 22950694, -24932286, 28174448, -10365367, 3047279, -13118441,
+12023761, 20480552, 9076340, 3508988, 1998234, 25084220, 6810745, -1138703, -7814693, -4145180,
+-25509422, -3764002, -12076911, -31625992, 3317862, -2060511, 13492103, -32859722, -5728950, 7577933,
+12814572, 27183922, -6753836, 7912941, 15644955, 2263448, -2986613, 7765301, -6394670, -1754494,
+-39986684, 3745212, -16462073, -20268488, -21799106, 9481677, -35543000, 12394739, -12551505, -18012020,
+-23671176, 22981834, 25852482, 24555938, 6586869, 4990215, 24584930, -30880278, -930934, -8980240,
+15129022, -36643052, -10342818, -2966212, 14861124, 10471667, 10945724, 15967615, -10252624, 5651640,
+-10739029, -29021630, -1141924, -9951976, 34495568, 7961259, 24261734, -7455527, 33349884, -20587926,
+-40371620, 9721658, 6310918, 5296232, -20245402, -21814138, -18078054, 7424925, -18169322, 8666170,
+-9763534, 27438936, -8941048, -3126199, 18933826, 1512365, -47925392, -18887656, -795106, 32432372,
+-3719979, -8856759, -27429808, 5792301, -6767795, -22477712, -27856084, -2127620, 5196911, -8461086,
+-10479183, -26734560, 18476950, -5710159, 6828461, -12642773, 936840, 9575093, 5447093, 25975426,
+714038, -7097434, -31486942, -9865003, 16110422, -20444582, -10457172, 9663140, 18447422, 15360951,
+36069136, 28493350, 1568737, 22114786, 22067542, 8977019, 2197950, 14204531, -8840116, 55188184,
+-22565758, -55537148, 17549774, -46612744, 725313, -35461396, 3251827, 50035296, 23487566, -34894460,
+-21047488, -15106474, -10440529, 12359842, 22417044, -13485124, 2854543, 17654464, -36453000, 1753957,
+10433012, -29640106, 16410533, -10503879, 14708116, 3991635, 16413754, 707059, -16836272, 18363670,
+-22416508, -6075768, 48636748, -19979650, 19015968, -11871290, 21191906, 16894790, -4178466, -21174188,
+23841364, 56168508, -29023242, 7536594, -39139500, 20384452, 14760729, -22810034, 27041114, 1930588,
+-47228536, 6774237, 4844723, 22340810, -3584150, -3740917, -23471996, -25513180, -10349797, 61780420,
+-6691559, 31374736, -24730422, 20697984, 13100724, -5586142, -18107046, -3743601, 20713016, 35108672,
+-9191230, -11256036, -78383, 7403450, 34125664, -6927246, -3053185, -21492554, 11374684, -32548872,
+-10116795, 25892748, 34988416, 5447093, 7211250, -34439732, 24910810, 19147502, -40375376, 1477469,
+-19887846, 127238, -44656924, 45044008, 44311176, -6890202, -18779744, -10131291, -5769215, 20551418,
+-20783346, 27277874, -36678484, -25561498, 14358613, 11511586, 6319508, 11045582, 40944460, 8376260,
+20645370, 2145873, 21391084, 10408316, -5146982, 1312649, 18757196, -3511673, 2195265, 27756226,
+17132088, 37206228, 52076, 20192252, 3837553, -31334470, 33512020, -17658758, 677531, 6815576,
+-23337242, -20864952, 14942728, 40845140, 27981712, 13342853, -50934556, -15117211, -34138012, -2517388,
+67330592, 38896836, 52419540, 1684701, -40145596, 12305618, 52308944, 7946227, -5292474, 39664560,
+11256572, 26207354, -63747516, -60058676, 50494320, -3593814, -10132365, -44777720, 379031, -14394046,
+31027380, 21861384, 9682467, 15945603, -38615516, 21630530, 34923988, -219580, 13540421, -32060320,
+25355876, -16117939, 13403519, -1761474, 2500208, 16515223, -3609920, 9692131, -1681480, -26533772,
+8655970, -4689568, 28687698, 19860466, 35095788, 7701950, -22686018, -23971824, 23622856, 20488604,
+13432510, -1372242, 9951439, -10095321, -18115098, -190589, -5158256, 25262998, 22793392, 13799730,
+25565256, 19558208, -30063160, 31699542, 37955164, 21488258, -14849313, -20201378, -19917374, 26510148,
+21170968, 46386184, -28327994, -36266168, -20848308, -51029580, -8603893, 43231532, 11246909, 32310502,
+-37511172, -50707996, 13491029, 20725902, -34274912, -1795833, -26049514, 3644817, -30269856, -12293270,
+22594212, 7085086, -25419764, 372588, -16235513, -63424320, 9323300, 39062728, -1226750, -78683800,
+-16837882, -1178969, 275415, 28491740, -74698072, -7698729, 32639604, -53870700, 11398306, -11815992,
+62566400, 34146064, -39909372, 10043781, 41625212, 4750771, -18234820, 14413910, 8977019, 5872294,
+-2178622, -4083977, 1851131, 7093676, 13137768, 44040056, 33640868, 38432976, 24595130, 48330192,
+21806622, 49332532, 18530100, 43645996, -1348083, 26891328, 22507240, 26548266, 18565534, -2595771,
+5872831, -34452616, -22432078, 63391568, -1577327, -26606786, -9663140, 19093814, 31270584, 67916856,
+-12002823, -39366060, -21913996, -29512868, 36503464, 43414604, 47472272, 13882408, -4933844, 32189706,
+-61244088, 50685984, 16648367, -30153892, -4033511, -92733712, -1535988, -62268972, -86595128, -23243826,
+-52696028, -23509040, 89358944, 84272088, 74320648, -21633750, 56481504, 69455528, -57583700, -52101712,
+17289928, 60788820, 1128503, -27897960, -181999, 16816408, 17731772, -49504328, 18166102, -6195491,
+25941066, -26927298, -13648869, -31607738, 33459942, -4060892, -15501074, -29446296, 21486110, 13646185,
+-5771899, -24704116, 11271605, 11995844, 5344013, -21641266, -3941706, -261456, 25194278, -18631568,
+-5585068, -27604828, -8411693, 10982768, 21826486, -28598040, -12401718, 32993402, 26045218, -6965900,
+-20417738, 1360968, -11115912, 28111098, -16582332, -6614787, 11265699, 11519639, 14491757, -12486544,
+2741800, -17800492, 21128554, 29856466, 10765872, 6969658, -23893976, 27308476, -19954418, 40960028,
+-30577482, 33928096, -50874960, 36171676, 234076, 1887101, -37774776, -4619774, 5814312, -2275259,
+-2499134, -1524713, -12630962, 55407764, 58331560, -34177204, -20724290, 11953968, 55705724, 35119948,
+20587388, 20410758, -9185324, -23077396, -7354595, 13515725, -460098, -5150740, 16452409, 668404,
+11528766, 1831267, -6498286, -20593832, -5800354, -818728, 1329292, -409096, -17268990, 19475530,
+2974802, -7216082, -622770, -124554, 87510, 12772696, 22408992, 10128070, 2127083, -7611219,
+-11827266, -2491618, 7211250, 15699179, 20273856, -10783589, -11317776, 3163244, 20542292, 9946607,
+4562866, -8616778, -18695992, 16681653, -3248069, 1230508, 1170916, 5974837, 5070209, -1365800,
+-470299, -11213086, 2168959, 11818676, -4702989, 7599945, -3060701, -7376070, 6245956, -167504,
+3970161, 1043677, 10710038, 8366060, -11973295, 6646462, 3745748, -21616570, -19639274, -72522672,
+30721902, 112317688, 103244568, 88463976, 35081828, -83498456, -52515100, -75024488, -84443352, -75151192,
+-22042846, 16596827, 63520956, 66533340, 79271136, 52864068, 52960168, 1664300, -55736328, -52855480,
+-65612068, -50938848, -28549184, -1509681, -18364206, 20388210, 24653650, 40328668, 43862892, 44962404,
+26599270, 2762201, 11899744, -9242770, 6459094, -29853244, -21948356, -27530204, -45802604, -35847408,
+-27740120, -19056770, -32442572, 5283884, 56150256, 63887100, 35576824, 66820028, 16752520, 39405788,
+20255602, 12282533, -16070694, -34169688, -47678968, -66659504, -51311976, -76097160, -31238908, -33056752,
+23133230, 23775866, 65812320, 76304928, 67755256, 61146376, 59515360, 38570952, 6681359, -17242146,
+-58684284, -34739844, -75764832, -62251792, -83965536, 5574868, 3627100, 11296301, 0, 0,
+0, 0, 0, },
},
{
{
11112154,
--2180770, 3111704, 1506997, -5671505, 1533840, 4866198, -1912334, -797253, 1494649, -2167348,
--5287642, 5623723, -1262720, 9840307, -102005, 1028645, 4223564, -6033892, -2025614, -6458557,
--1136019, -2865280, 2684355, 4490389, 1052267, -2036351, -425202, -153545, 4327717, -3388729,
--2140504, -4611185, 3471944, 1825361, 1074, 654983, -3719979, 2979097, -4370666, 424128,
--2235531, 3635153, 2950106, -4909685, 505732, -5879274, 274341, 1964411, 2135136, 2486786,
-1970316, 672699, -3381750, -2552284, 1389422, 2266132, -2422362, 5784784, -1857573, 788663,
--1344325, -344671, 864899, -746251, 4227322, -3030636, 8243116, 1514513, 1303523, -1824287,
--197569, 740882, 1292248, 129386, 938987, -5042829, -5404680, -4244502, 1082332, -2385854,
--532039, -600222, 2398202, 10223096, -2838437, 1129576, -9767293, -5150203, 2795487, -4469987,
--3715147, -1244467, -4214437, -972810, 8238821, -3499325, -5525476, 9166534, 7099044, -2459943,
--1844152, 8396124, 2195265, 3315178, 1432372, 502511, -2298344, -3402151, 3109020, -2512019,
-2272575, 984621, 755377, -1070521, -3049964, -2147484, 1821066, -2487323, -4281546, -1747515,
--2040646, -5095442, 5632313, 9145059, -5454072, 3039763, -3221, -1952600, 1168768, -144418,
--208306, -2955474, 5303748, -3246995, -4428648, 4740034, 1076963, -169114, -900333, 2636036,
--251256, -1611, -2069637, -737661, 4402879, -7125351, 1840930, 1386738, -2481954, -1660005,
--3449396, -3486440, -15956877, -2483028, -5850819, -1400159, 1254131, -4311074, -9739912, 7145215,
--2416993, 1685775, 4728759, -1484985, -519691, -565325, 2158758, -1656784, 7977902, -306016,
-6146098, 9089225, -10913512, 2304787, 7522635, 544387, 1470489, 5255430, 9632001, 1405528,
--2210835, 4888747, -1330366, -2499134, 2143726, 1741609, 2120640, -2702071, 9816685, -4527433,
-2450816, 3696356, -79457, -461172, -4841502, 803159, -5602785, 4700305, -5721970, -4347581,
-3121904, -5282273, 3610457, -3679713, 1503239, -2964601, 1999844, 4315369, 8376797, 2607045,
-936840, 4119411, 54761, -7218767, 962610, 2081449, 2770254, -1777043, 402116, -944356,
-1417876, 4109747, 2502892, 5598490, 2004139, 803696, -3222836, -1681480, 3346317, -5754183,
-4271345, 2832531, 834297, 5478231, -334471, 3071975, 7381438, 4611185, 9687299, 1882806,
--1505386, -9989020, 1497333, -6134287, -2129230, 748935, 2157684, -3859565, -103079, 9565966,
--5022965, -296353, -5026186, 2288144, -85899, 1813550, 3773666, 4565550, -3067144, 3405909,
-3411278, 6876243, 81068, -6884833, 462783, 7282117, -937914, -542777, -1247688, 4861366,
--6010270, 392453, 3514357, 4855461, 5646809, -2334315, -4193499, -602369, 8196408, 688269,
-2723009, -7048042, -3488587, 1570347, 1014686, -1302449, 4066797, -428423, -1430761, 2419677,
--4902169, 162672, -1277753, 2870112, 3919695, -6844568, -2250026, 2093797, 3673808, -2952790,
--3745748, 1847910, 4175245, -403727, 2090039, 17066052, 8645769, 6572911, -6201396, -1394254,
--8752606, -6682432, 9876277, 607738, -5848135, -3097208, 2294050, -6025302, -293668, 9526774,
-4143033, -686121, 3363496, 14091788, -9360344, 2007897, -1588064, -4940823, 8466454, 3905736,
-4482872, -3516505, 3890704, 4445291, -1278827, 2741800, -795106, -4406637, 1021129, 1229434,
--552977, 4555350, 1352915, -2073932, 5528697, -2778307, -2405182, -3439195, 1635309, 1745367,
-503585, 3546569, 618475, 11846594, 885300, -329102, -2755759, -2860985, 2973728, -9375914,
-411780, 5116917, 4331475, -5200669, 7160784, -182536, 3168612, 5434744, -1699196, 4154844,
-3324842, -1836635, -5340255, -4176856, 2993055, 7955890, 1971927, -3652870, -2253247, -1967095,
-4794794, 4032438, 1239635, 11166378, 2934000, 6571300, -211527, 1296543, 1970853, 1661616,
--1822140, 6662031, -2877628, 7206955, -3659312, -3175055, 1947231, -5241471, -1446330, -1879585,
-2049773, 2760053, -2057826, -7596724, 3186329, -9130564, -3653944, -1898376, -352724, -1806571,
-1533840, 7372312, 4221953, 47782, -8376797, -8334384, 8590, 4748623, -3082713, 267362,
--1326071, -4058207, -5594195, -73551, 3145527, 6910066, 6376953, -1548873, 1709397, -10180146,
-2710124, 5550709, 6572911, -1662689, 5888400, 575526, 8800388, 4749697, 1057636, 3381750,
--1263794, -3447248, -2604898, -1990717, 4940823, -3383361, -4504884, -5335423, 4669167, -2722473,
--11908334, 664646, 2239826, 4264366, 5482526, 11105712, -8184597, -6551436, -15877957, 8152922,
-9474698, 2246805, 7755101, 2077690, -8503498, 179315, -4395362, -978716, 7120519, -9384504,
--3666292, 4540854, 3266323, 10274099, -2614561, 4991826, -15388331, -6470905, 2984466, 9629854,
--6443525, -3095061, -6845104, -6355478, 3117610, 106837, -648540, 3770445, 622770, 3903589,
-10641855, -5814849, 10316511, 458488, 1568737, 3526705, 1721745, -2220498, 3169149, -6670621,
--2130304, -3104188, -1457068, -4625680, 6393596, 2424509, 18821620, 1832340, -1834488, -3678640,
-287763, -2847563, 9601399, -4961224, 816581, -10019622, 8021389, 9235253, -9883793, 7193534,
-5403069, 3937411, -5493800, -3610457, 8213051, 3877282, -12647068, 7708930, -6049462, -1273995,
-2769717, -988916, 1306744, 4846334, 3710852, -2513630, 6442988, 1459215, -281857, -5390721,
--9516574, 3513820, -5164162, -1823751, 8946417, -12146704, -5265630, -8886287, -1036161, 8034810,
--825171, -6207839, -9031779, -9796820, 3830037, 10868415, -3115999, 6891275, 9924596, -2501282,
--2358474, 4182761, 5510980, 12135430, -1751810, 6951942, 944356, 14391362, 10355703, 3139084,
--3318936, 1733019, -7801808, 14003741, 3206730, -5713380, -6662568, 8225399, 6719477, 5138392,
-3485366, 2690797, 7169374, -2709051, 3225521, -4326643, 793495, 751619, -6982006, -9134322,
--3219078, -6336151, 4491999, -3715684, -2848637, -9984188, -6305549, 2374580, -3299609, -861141,
-5254893, 10761041, 13399224, 7161321, 5743982, -4527970, -10331544, 395674, -7131793, -17258790,
--19594178, -6446209, 1402844, 9404905, -6662568, 4451197, 3431142, -685047, 14938433, -2231773,
-14087493, -8360691, 4388383, 4091493, 532576, -12807056, -4820564, -4929549, -13880261, 4636954,
--3156801, 2806761, -489089, 4962298, 393526, -5778879, 3400540, -9366250, 7210177, 3788161,
-16083579, -827855, 933619, 14130979, -12144557, 10950019, 14079440, -8623221, 9256728, -3762928,
--3586298, -7225209, 2338073, 1567663, 10220948, 6156836, -1916092, -4063039, -7619809, 4483409,
-5746666, -9422085, -3592203, 8849243, -14787036, 1502165, -11236171, 6837588, 1402307, -100932,
-4396436, -3878892, 2206003, 14477261, -4983236, 3412352, 7894687, 4752382, 1809792, -7030862,
-4484483, 3401077, -3037616, -11370389, 1764158, -1686312, -7118909, -7915088, 23422604, -8576513,
-4351876, 3612604, 8199630, 2866354, 4878546, 12020003, -9373229, -5398774, -997506, 16636556,
--6587943, -6784438, -8400419, 4266513, 2492155, 9194988, -19007914, 380641, 142271, -1072131,
-9382893, -2138357, 7175817, 13988708, -10281615, -4298726, 3668976, -7323993, -9721122, 6558415,
--9050570, 13163001, -2478733, -13154948, -2031520, -7471096, 3972845, 10771778, -474057, 5544803,
--927176, 2251637, 12327093, 584116, 8863202, 3809099, -7125351, 7332583, 5818607, 1045825,
-4837207, 18289582, -3294240, -7920994, 3994857, -10074383, 492848, 17501454, 5538361, 2965675,
--3639985, -4692789, -3707094, -5837398, 9991168, -6542309, -2319819, -3934190, 11195369, -21355652,
-6560026, 8061117, 11565810, 3498251, 34909496, 10470593, -6383932, -8429410, -7151121, 25383256,
--21803402, 1818919, 8569533, 1359894, -11788075, -2566243, 5990943, -1144609, 1447404, 10635950,
--10783589, -8979703, 4578435, 13849659, 8550206, 3710852, -6501507, -6291590, -6092948, -7066295,
-6942815, 2910377, 9895605, 8025147, 4639639, -10064182, -4683662, -10722386, -1940252, -6929393,
--16331613, -2799782, 7696582, 1956358, -7391639, -7435126, 525597, 4354560, 10742250, 1678259,
-5650030, 1880122, 20482700, -17022030, 11838540, 2547989, -17293686, -2780455, -4842039, -3948686,
-3286187, -7313793, 5297306, 3898220, 8610336, -9203578, 4147328, 16047072, 8054138, 25201258,
--4668093, -106300, -5123359, -2629057, 1724966, -101469, -22224308, 10610180, 344134, -1836635,
-7626252, -1723356, -12097849, 3223373, 5947993, 124017, -7612830, -4631586, -15971910, -18114024,
-3381213, -7849053, -4358318, 3036005, -628676, -1624571, -8722542, -3793530, -577136, 6762426,
-6398428, -9872519, -6339372, 6637872, -9619653, -4224101, -15426986, 14629195, -2435247, 13186623,
-562104, 5061082, 13203266, 10598369, -6723235, 3300682, 6396817, -7223062, -3627637, 6954089,
--3178813, -16425029, -3732864, -11497091, 16314970, -1732482, -5205501, -9672803, -14886894, 5098126,
-2272575, 3336653, 6240588, 129923, -3360275, 7256347, 1068373, -1490354, 1746441, -4216048,
-10370199, -2814814, 6191196, 20759724, 3740380, 3688840, 3927211, 7431904, -19289234, -15139223,
-4502200, -16578574, 9931038, -2868501, 11370926, 2516314, 23055384, 7847442, -6873022, -1081258,
--30188252, -20477330, 7306813, -7945690, -17662516, -25792890, -1094143, 2414845, -5539434, -3859565,
-24443196, 6841883, -18525804, 4057134, -11513734, -8983998, -9460739, -15845208, -3200825, 1722282,
--22725746, -20771536, -8545374, 3677566, 1482301, 12906914, 10166188, 6858526, -5952288, -55835,
-4290673, -11237245, -6983617, -3766150, 3104188, -10588168, -7201050, 7372848, 3729105, -238908,
--2348810, -1967632, 5359583, -15378130, -9508521, -7594039, 9443559, -11970074, 7326141, 13590350,
-17923436, -1349157, 4570919, -4574140, -9768366, -11893301, -4015795, 11354820, 3471407, -21232170,
-31675, 21438330, -15345381, 374199, -4022237, 782221, 4194036, 10652056, -3299072, 3039763,
-12242267, 8608188, 4684736, -10804527, -13694503, -18192944, 10397042, -14875082, -24308978, 3743064,
--14462229, -9657234, 30476552, 1230508, 23028004, 19205484, -3191161, 20269024, 29952566, 19931870,
--25224880, -4260071, -11274826, -13048648, -6662568, -257698, -9893994, 21952114, 7610682, 11694122,
--9782325, 11159936, 10064182, 2275796, -12678207, -11331197, 22530862, -4738423, -19287088, -2163590,
--22453552, -4161287, 7427072, -9172976, 1461363, -19866908, 9718437, 16487843, 10342281, -3352222,
--8361765, -4306242, -1338419, -4061429, -7727183, -24253144, 16892644, 8068633, 9363566, 9073655,
--12185896, 19813222, 3765076, -7113540, -3395709, -17370458, -5998996, 9771051, 7942469, 16745004,
--489089, -21213380, -34003256, -3108483, 1437740, -939524, -10881837, -19087372, -1087701, 10466835,
--3098819, -9194988, 37757056, 24014772, -3508452, -21933324, 4528506, 11133629, 6227166, 16215112,
-24019604, -10503879, 1880122, -21417392, 6001680, 1934883, -8473434, 39024608, 14623290, 33702072,
-13739600, 8826695, -29321742, 635655, 16192564, 3164317, -15659451, 6778532, -23882702, -9070434,
-1525787, 7388955, -7232188, -4388383, 5040144, 4449049, 1600412, 21313776, 12960064, 3738769,
--8553964, 14789720, -9558987, -6465537, -13998372, -4291746, 17943300, -28224914, -586263, 13187697,
--14410152, -4092030, 5274220, 5240397, 26208428, -1071058, -482647, -11828877, 25598542, -10964515,
-3049427, 3281355, 17641578, -3536906, -6680285, 17699560, -28925530, 8259222, 2512556, -11004243,
-22721988, -27639188, -3791919, -8348343, -19232864, -8060580, -1185411, 10483478, 20439212, 29417304,
--35563404, 9071508, 3129958, 43283608, 11372537, 7326141, 80531, 20660404, 7188165, -33424510,
--3585224, 33895344, -8841727, -8159901, 4452808, -3201361, 2369211, -7088307, 37856916, 40482752,
--20446192, 9323300, 12868259, 5384279, 13550085, -18735722, -23128398, 18715856, 7296613, -14382772,
--21867290, -7681549, -5966247, 21448530, 20160576, 9627706, -17921288, 10763188, -6327561, 6755984,
-3784940, 9089761, 23336704, 4465156, -43361988, -14406931, 11429445, -18724984, 8720931, 19392852,
-9842454, 33944200, -7851737, -51397336, 2451353, -20558934, 21689584, 15363098, -1481227, -11003169,
-20232518, -24713778, 338229, -13412109, 16752520, 15878494, 19300510, 14677514, -4874788, -21186536,
--55041616, -30235496, -27925878, 4689568, -14345728, -14122389, 10201084, -31653372, 681826, -19746112,
--9459665, 6283537, -10773389, -1934346, 1173600, -49349176, -5735392, 30636002, -36627480, 2498597,
-15509127, -817118, 11265162, -4051765, -28756416, -3720516, 17694728, 4310537, 25712896, 15352361,
--24504936, -29098940, -2433099, -13256417, -2700998, -47178604, 18456548, 17075716, 33421824, 13480829,
-30515206, -13819594, 5221607, 28963648, -8331163, 31635656, 10276783, 16214038, 6987912, -9446244,
-17299054, -20976620, 2037425, 40351756, -31124018, 1917703, -40833864, -19859928, -29136522, -21450140,
--4383551, 1238561, -9067213, -32799054, -5018670, -53821308, 60448444, 20157356, 897111, -8854612,
--14041322, 2641942, -26064010, 4285841, -39390220, 445066, 1782948, 8511015, 24660628, 36294084,
-50466, -60965988, -30339112, 26378616, -18382996, -8720931, 10405095, -23213224, 16241956, 27901718,
-9415105, -11900281, -17276506, 8527658, -22129282, 34506304, 27571542, 43575128, -31410706, -37252400,
--10243497, -329639, -19895900, 25837986, 29898342, -22167936, -904628, -39946952, -12802761, -18638548,
--37427420, 12093554, 29252486, 18813568, -24697672, -8662412, 1809255, 20884816, 2031520, -895501,
-6587943, -1704028, -11366094, -32142998, -23338316, 9074729, -4231080, -17164300, 18127446, 17890150,
-9701257, -32808718, -31891206, 29678760, 16088411, 22306986, -23259396, -54994908, -12049531, 24460912,
-21789980, -4697621, 54871428, -5893769, 55093156, -84147536, -107683960, -42086920, -65665220, 2377801,
-22921704, 14994268, 66997732, -5565741, -6522982, 15655156, -15727633, -50826644, -50175420, -48998060,
-42142220, 43195560, -12718472, 18923090, 5133560, 13867376, -42725796, 37388764, 25441776, 12773233,
-31878322, -18257370, 10547366, -54292144, -28895466, 16153909, 18633178, 10907069, 5171678, 8354785,
-12354473, -5399311, 61353608, 7080254, 37335612, 12686797, -21347598, 49689552, -8924405, 20280836,
--1408749, 18600430, -4321811, 197032, 8051990, 25503516, 4412005, 18946712, -1511829, -2459943,
-35339528, 5537287, -11020349, 1843615, -6090264, -18043694, -8714489, 11950210, 3755949, -41899552,
--14032195, 6663105, 6304475, 46309948, 32875828, -43293272, -28618440, 5000953, -14153528, 51004884,
-293668, 47224776, -37078452, 24591372, -556198, 4214437, 15640660, 48877800, 24404004, 8334921,
-34843996, 18701362, -27125402, -39145944, 28148142, -29983166, 12077448, -39396124, -12451110, -62434864,
-53624816, -4304631, -67589360, -19659676, -2956011, 5293547, 8846022, -45535780, -22636088, 37456408,
--12496207, 12712566, -14547054, 2136209, 52408264, 78066400, 8602283, -4364761, 43208980, 16001974,
-19871740, 47990352, 4516158, 28609850, 39757976, 33614024, -9999758, 13953812, 35081828, 42608224,
-39570608, 52719648, 34301220, 67662376, 76820320, 51783884, 62227632, 38837780, 92342, 18772766,
-14837501, -15492484, -10117869, 10986526, 38708392, 7380365, 6597607, -448824, 21935472, 50174880,
-44557600, 84458384, 22652732, -43989056, 23335094, 824634, 23953570, -22558778, 39888436, -61327840,
--72577432, 22109954, 86361056, 34537444, 23039816, -98785320, 8093329, 37082212, 67532456, 79264696,
--25498684, 3614752, -128708360, -93314608, 47158740, 47392280, -64359548, -23079006, 63171988, 77474232,
--86948928, -31797254, 29329794, -20398410, 13196287, -27685360, 25061672, -22983980, 3613141, 2975339,
--15262703, 9404368, -1240709, -4993437, -8599598, -17808008, -8192650, 7501698, -96100, -18231600,
-17504140, -16500727, -9305584, -13944148, -656056, -13246216, 30295626, 2068564, 6145562, -6105833,
-6140193, -6696391, 6859600, 22747220, 24843702, -4789963, 6726456, 12655121, 21569326, -12457553,
-13052406, -10895795, 26482768, -5227512, -18702972, 11673721, -9468792, -6493991, 1069447, -403727,
-10233833, -4570382, -18527416, -14074071, 518080, 4851166, -30498026, 10291279, -6161131, -1502702,
-3398393, -6995965, -6201396, 3652870, -5604933, 4233764, -16051903, 17732310, -51288352, 25837450,
--21145734, 31841276, -21040508, 3349001, -13613973, 63559072, 38472168, -20964272, -24189792, -2142652,
-78857744, 32941326, 10945724, 21787832, -19294604, -24262270, 6568616, 15218680, 3810173, 1258962,
--8618389, -6704981, 7198902, 7401840, 18129594, 7987029, -10188199, -4586488, -5201206, -10229001,
--435402, 1501091, 4547297, 5949067, -185220, -2959769, 6934225, -21526912, -8486319, 9072582,
-13058311, 16381005, -9928891, -5898064, -10558640, 16711181, 11297911, -3708704, 4845797, -20306068,
--17792438, 15302432, 11615202, 3332358, -30770756, -16018617, 437013, 4393215, 18905372, 13490492,
--3151432, 5142150, 6006512, -10084583, 7469485, 8589935, -3985730, -6466074, 4155381, -10792179,
--622233, -2438468, -8863739, -11413876, 12780212, 2593624, 609885, 20619064, 21335250, 10772852,
-9466108, -23015656, -62674312, 21540334, 115799296, 90656024, 87219512, 27559732, -80792096, -48841832,
--71628240, -72283760, -65498252, -23223426, 35446364, 45252312, 71772128, 63883880, 38718056, 6123013,
-6314139, -31479962, -49181132, -70755288, -27113592, -19522236, 6232535, -4406100, 35580584, 23659902,
-10095858, 47263432, 26602490, 19943680, -4411469, 17423608, -32704566, -24958592, -20551418, -24142012,
--31489626, -19291920, -12862353, -32202592, -22401476, 7803419, 45945412, 44309568, 50357956, 39441220,
-57586384, 9432285, 14088566, -39476656, -29681982, -25345138, -59281288, -58704688, -53226992, -25369298,
--31861678, 6315750, 20987894, 31609348, 63496796, 63211180, 59334972, 54092964, 45827836, 9252970,
--31094490, -47233904, -85662584, -71830104, -55363740, -70824008, -36502392, -10081362, 2771865, 38146288,
--6261526, 0, 0, },
+-2180770, 3111704, 1506997, -5671505, 1533840, 4866198, -1912334, -797253, 1494649, -2167348,
+-5287642, 5623723, -1262720, 9840307, -102005, 1028645, 4223564, -6033892, -2025614, -6458557,
+-1136019, -2865280, 2684355, 4490389, 1052267, -2036351, -425202, -153545, 4327717, -3388729,
+-2140504, -4611185, 3471944, 1825361, 1074, 654983, -3719979, 2979097, -4370666, 424128,
+-2235531, 3635153, 2950106, -4909685, 505732, -5879274, 274341, 1964411, 2135136, 2486786,
+1970316, 672699, -3381750, -2552284, 1389422, 2266132, -2422362, 5784784, -1857573, 788663,
+-1344325, -344671, 864899, -746251, 4227322, -3030636, 8243116, 1514513, 1303523, -1824287,
+-197569, 740882, 1292248, 129386, 938987, -5042829, -5404680, -4244502, 1082332, -2385854,
+-532039, -600222, 2398202, 10223096, -2838437, 1129576, -9767293, -5150203, 2795487, -4469987,
+-3715147, -1244467, -4214437, -972810, 8238821, -3499325, -5525476, 9166534, 7099044, -2459943,
+-1844152, 8396124, 2195265, 3315178, 1432372, 502511, -2298344, -3402151, 3109020, -2512019,
+2272575, 984621, 755377, -1070521, -3049964, -2147484, 1821066, -2487323, -4281546, -1747515,
+-2040646, -5095442, 5632313, 9145059, -5454072, 3039763, -3221, -1952600, 1168768, -144418,
+-208306, -2955474, 5303748, -3246995, -4428648, 4740034, 1076963, -169114, -900333, 2636036,
+-251256, -1611, -2069637, -737661, 4402879, -7125351, 1840930, 1386738, -2481954, -1660005,
+-3449396, -3486440, -15956877, -2483028, -5850819, -1400159, 1254131, -4311074, -9739912, 7145215,
+-2416993, 1685775, 4728759, -1484985, -519691, -565325, 2158758, -1656784, 7977902, -306016,
+6146098, 9089225, -10913512, 2304787, 7522635, 544387, 1470489, 5255430, 9632001, 1405528,
+-2210835, 4888747, -1330366, -2499134, 2143726, 1741609, 2120640, -2702071, 9816685, -4527433,
+2450816, 3696356, -79457, -461172, -4841502, 803159, -5602785, 4700305, -5721970, -4347581,
+3121904, -5282273, 3610457, -3679713, 1503239, -2964601, 1999844, 4315369, 8376797, 2607045,
+936840, 4119411, 54761, -7218767, 962610, 2081449, 2770254, -1777043, 402116, -944356,
+1417876, 4109747, 2502892, 5598490, 2004139, 803696, -3222836, -1681480, 3346317, -5754183,
+4271345, 2832531, 834297, 5478231, -334471, 3071975, 7381438, 4611185, 9687299, 1882806,
+-1505386, -9989020, 1497333, -6134287, -2129230, 748935, 2157684, -3859565, -103079, 9565966,
+-5022965, -296353, -5026186, 2288144, -85899, 1813550, 3773666, 4565550, -3067144, 3405909,
+3411278, 6876243, 81068, -6884833, 462783, 7282117, -937914, -542777, -1247688, 4861366,
+-6010270, 392453, 3514357, 4855461, 5646809, -2334315, -4193499, -602369, 8196408, 688269,
+2723009, -7048042, -3488587, 1570347, 1014686, -1302449, 4066797, -428423, -1430761, 2419677,
+-4902169, 162672, -1277753, 2870112, 3919695, -6844568, -2250026, 2093797, 3673808, -2952790,
+-3745748, 1847910, 4175245, -403727, 2090039, 17066052, 8645769, 6572911, -6201396, -1394254,
+-8752606, -6682432, 9876277, 607738, -5848135, -3097208, 2294050, -6025302, -293668, 9526774,
+4143033, -686121, 3363496, 14091788, -9360344, 2007897, -1588064, -4940823, 8466454, 3905736,
+4482872, -3516505, 3890704, 4445291, -1278827, 2741800, -795106, -4406637, 1021129, 1229434,
+-552977, 4555350, 1352915, -2073932, 5528697, -2778307, -2405182, -3439195, 1635309, 1745367,
+503585, 3546569, 618475, 11846594, 885300, -329102, -2755759, -2860985, 2973728, -9375914,
+411780, 5116917, 4331475, -5200669, 7160784, -182536, 3168612, 5434744, -1699196, 4154844,
+3324842, -1836635, -5340255, -4176856, 2993055, 7955890, 1971927, -3652870, -2253247, -1967095,
+4794794, 4032438, 1239635, 11166378, 2934000, 6571300, -211527, 1296543, 1970853, 1661616,
+-1822140, 6662031, -2877628, 7206955, -3659312, -3175055, 1947231, -5241471, -1446330, -1879585,
+2049773, 2760053, -2057826, -7596724, 3186329, -9130564, -3653944, -1898376, -352724, -1806571,
+1533840, 7372312, 4221953, 47782, -8376797, -8334384, 8590, 4748623, -3082713, 267362,
+-1326071, -4058207, -5594195, -73551, 3145527, 6910066, 6376953, -1548873, 1709397, -10180146,
+2710124, 5550709, 6572911, -1662689, 5888400, 575526, 8800388, 4749697, 1057636, 3381750,
+-1263794, -3447248, -2604898, -1990717, 4940823, -3383361, -4504884, -5335423, 4669167, -2722473,
+-11908334, 664646, 2239826, 4264366, 5482526, 11105712, -8184597, -6551436, -15877957, 8152922,
+9474698, 2246805, 7755101, 2077690, -8503498, 179315, -4395362, -978716, 7120519, -9384504,
+-3666292, 4540854, 3266323, 10274099, -2614561, 4991826, -15388331, -6470905, 2984466, 9629854,
+-6443525, -3095061, -6845104, -6355478, 3117610, 106837, -648540, 3770445, 622770, 3903589,
+10641855, -5814849, 10316511, 458488, 1568737, 3526705, 1721745, -2220498, 3169149, -6670621,
+-2130304, -3104188, -1457068, -4625680, 6393596, 2424509, 18821620, 1832340, -1834488, -3678640,
+287763, -2847563, 9601399, -4961224, 816581, -10019622, 8021389, 9235253, -9883793, 7193534,
+5403069, 3937411, -5493800, -3610457, 8213051, 3877282, -12647068, 7708930, -6049462, -1273995,
+2769717, -988916, 1306744, 4846334, 3710852, -2513630, 6442988, 1459215, -281857, -5390721,
+-9516574, 3513820, -5164162, -1823751, 8946417, -12146704, -5265630, -8886287, -1036161, 8034810,
+-825171, -6207839, -9031779, -9796820, 3830037, 10868415, -3115999, 6891275, 9924596, -2501282,
+-2358474, 4182761, 5510980, 12135430, -1751810, 6951942, 944356, 14391362, 10355703, 3139084,
+-3318936, 1733019, -7801808, 14003741, 3206730, -5713380, -6662568, 8225399, 6719477, 5138392,
+3485366, 2690797, 7169374, -2709051, 3225521, -4326643, 793495, 751619, -6982006, -9134322,
+-3219078, -6336151, 4491999, -3715684, -2848637, -9984188, -6305549, 2374580, -3299609, -861141,
+5254893, 10761041, 13399224, 7161321, 5743982, -4527970, -10331544, 395674, -7131793, -17258790,
+-19594178, -6446209, 1402844, 9404905, -6662568, 4451197, 3431142, -685047, 14938433, -2231773,
+14087493, -8360691, 4388383, 4091493, 532576, -12807056, -4820564, -4929549, -13880261, 4636954,
+-3156801, 2806761, -489089, 4962298, 393526, -5778879, 3400540, -9366250, 7210177, 3788161,
+16083579, -827855, 933619, 14130979, -12144557, 10950019, 14079440, -8623221, 9256728, -3762928,
+-3586298, -7225209, 2338073, 1567663, 10220948, 6156836, -1916092, -4063039, -7619809, 4483409,
+5746666, -9422085, -3592203, 8849243, -14787036, 1502165, -11236171, 6837588, 1402307, -100932,
+4396436, -3878892, 2206003, 14477261, -4983236, 3412352, 7894687, 4752382, 1809792, -7030862,
+4484483, 3401077, -3037616, -11370389, 1764158, -1686312, -7118909, -7915088, 23422604, -8576513,
+4351876, 3612604, 8199630, 2866354, 4878546, 12020003, -9373229, -5398774, -997506, 16636556,
+-6587943, -6784438, -8400419, 4266513, 2492155, 9194988, -19007914, 380641, 142271, -1072131,
+9382893, -2138357, 7175817, 13988708, -10281615, -4298726, 3668976, -7323993, -9721122, 6558415,
+-9050570, 13163001, -2478733, -13154948, -2031520, -7471096, 3972845, 10771778, -474057, 5544803,
+-927176, 2251637, 12327093, 584116, 8863202, 3809099, -7125351, 7332583, 5818607, 1045825,
+4837207, 18289582, -3294240, -7920994, 3994857, -10074383, 492848, 17501454, 5538361, 2965675,
+-3639985, -4692789, -3707094, -5837398, 9991168, -6542309, -2319819, -3934190, 11195369, -21355652,
+6560026, 8061117, 11565810, 3498251, 34909496, 10470593, -6383932, -8429410, -7151121, 25383256,
+-21803402, 1818919, 8569533, 1359894, -11788075, -2566243, 5990943, -1144609, 1447404, 10635950,
+-10783589, -8979703, 4578435, 13849659, 8550206, 3710852, -6501507, -6291590, -6092948, -7066295,
+6942815, 2910377, 9895605, 8025147, 4639639, -10064182, -4683662, -10722386, -1940252, -6929393,
+-16331613, -2799782, 7696582, 1956358, -7391639, -7435126, 525597, 4354560, 10742250, 1678259,
+5650030, 1880122, 20482700, -17022030, 11838540, 2547989, -17293686, -2780455, -4842039, -3948686,
+3286187, -7313793, 5297306, 3898220, 8610336, -9203578, 4147328, 16047072, 8054138, 25201258,
+-4668093, -106300, -5123359, -2629057, 1724966, -101469, -22224308, 10610180, 344134, -1836635,
+7626252, -1723356, -12097849, 3223373, 5947993, 124017, -7612830, -4631586, -15971910, -18114024,
+3381213, -7849053, -4358318, 3036005, -628676, -1624571, -8722542, -3793530, -577136, 6762426,
+6398428, -9872519, -6339372, 6637872, -9619653, -4224101, -15426986, 14629195, -2435247, 13186623,
+562104, 5061082, 13203266, 10598369, -6723235, 3300682, 6396817, -7223062, -3627637, 6954089,
+-3178813, -16425029, -3732864, -11497091, 16314970, -1732482, -5205501, -9672803, -14886894, 5098126,
+2272575, 3336653, 6240588, 129923, -3360275, 7256347, 1068373, -1490354, 1746441, -4216048,
+10370199, -2814814, 6191196, 20759724, 3740380, 3688840, 3927211, 7431904, -19289234, -15139223,
+4502200, -16578574, 9931038, -2868501, 11370926, 2516314, 23055384, 7847442, -6873022, -1081258,
+-30188252, -20477330, 7306813, -7945690, -17662516, -25792890, -1094143, 2414845, -5539434, -3859565,
+24443196, 6841883, -18525804, 4057134, -11513734, -8983998, -9460739, -15845208, -3200825, 1722282,
+-22725746, -20771536, -8545374, 3677566, 1482301, 12906914, 10166188, 6858526, -5952288, -55835,
+4290673, -11237245, -6983617, -3766150, 3104188, -10588168, -7201050, 7372848, 3729105, -238908,
+-2348810, -1967632, 5359583, -15378130, -9508521, -7594039, 9443559, -11970074, 7326141, 13590350,
+17923436, -1349157, 4570919, -4574140, -9768366, -11893301, -4015795, 11354820, 3471407, -21232170,
+31675, 21438330, -15345381, 374199, -4022237, 782221, 4194036, 10652056, -3299072, 3039763,
+12242267, 8608188, 4684736, -10804527, -13694503, -18192944, 10397042, -14875082, -24308978, 3743064,
+-14462229, -9657234, 30476552, 1230508, 23028004, 19205484, -3191161, 20269024, 29952566, 19931870,
+-25224880, -4260071, -11274826, -13048648, -6662568, -257698, -9893994, 21952114, 7610682, 11694122,
+-9782325, 11159936, 10064182, 2275796, -12678207, -11331197, 22530862, -4738423, -19287088, -2163590,
+-22453552, -4161287, 7427072, -9172976, 1461363, -19866908, 9718437, 16487843, 10342281, -3352222,
+-8361765, -4306242, -1338419, -4061429, -7727183, -24253144, 16892644, 8068633, 9363566, 9073655,
+-12185896, 19813222, 3765076, -7113540, -3395709, -17370458, -5998996, 9771051, 7942469, 16745004,
+-489089, -21213380, -34003256, -3108483, 1437740, -939524, -10881837, -19087372, -1087701, 10466835,
+-3098819, -9194988, 37757056, 24014772, -3508452, -21933324, 4528506, 11133629, 6227166, 16215112,
+24019604, -10503879, 1880122, -21417392, 6001680, 1934883, -8473434, 39024608, 14623290, 33702072,
+13739600, 8826695, -29321742, 635655, 16192564, 3164317, -15659451, 6778532, -23882702, -9070434,
+1525787, 7388955, -7232188, -4388383, 5040144, 4449049, 1600412, 21313776, 12960064, 3738769,
+-8553964, 14789720, -9558987, -6465537, -13998372, -4291746, 17943300, -28224914, -586263, 13187697,
+-14410152, -4092030, 5274220, 5240397, 26208428, -1071058, -482647, -11828877, 25598542, -10964515,
+3049427, 3281355, 17641578, -3536906, -6680285, 17699560, -28925530, 8259222, 2512556, -11004243,
+22721988, -27639188, -3791919, -8348343, -19232864, -8060580, -1185411, 10483478, 20439212, 29417304,
+-35563404, 9071508, 3129958, 43283608, 11372537, 7326141, 80531, 20660404, 7188165, -33424510,
+-3585224, 33895344, -8841727, -8159901, 4452808, -3201361, 2369211, -7088307, 37856916, 40482752,
+-20446192, 9323300, 12868259, 5384279, 13550085, -18735722, -23128398, 18715856, 7296613, -14382772,
+-21867290, -7681549, -5966247, 21448530, 20160576, 9627706, -17921288, 10763188, -6327561, 6755984,
+3784940, 9089761, 23336704, 4465156, -43361988, -14406931, 11429445, -18724984, 8720931, 19392852,
+9842454, 33944200, -7851737, -51397336, 2451353, -20558934, 21689584, 15363098, -1481227, -11003169,
+20232518, -24713778, 338229, -13412109, 16752520, 15878494, 19300510, 14677514, -4874788, -21186536,
+-55041616, -30235496, -27925878, 4689568, -14345728, -14122389, 10201084, -31653372, 681826, -19746112,
+-9459665, 6283537, -10773389, -1934346, 1173600, -49349176, -5735392, 30636002, -36627480, 2498597,
+15509127, -817118, 11265162, -4051765, -28756416, -3720516, 17694728, 4310537, 25712896, 15352361,
+-24504936, -29098940, -2433099, -13256417, -2700998, -47178604, 18456548, 17075716, 33421824, 13480829,
+30515206, -13819594, 5221607, 28963648, -8331163, 31635656, 10276783, 16214038, 6987912, -9446244,
+17299054, -20976620, 2037425, 40351756, -31124018, 1917703, -40833864, -19859928, -29136522, -21450140,
+-4383551, 1238561, -9067213, -32799054, -5018670, -53821308, 60448444, 20157356, 897111, -8854612,
+-14041322, 2641942, -26064010, 4285841, -39390220, 445066, 1782948, 8511015, 24660628, 36294084,
+50466, -60965988, -30339112, 26378616, -18382996, -8720931, 10405095, -23213224, 16241956, 27901718,
+9415105, -11900281, -17276506, 8527658, -22129282, 34506304, 27571542, 43575128, -31410706, -37252400,
+-10243497, -329639, -19895900, 25837986, 29898342, -22167936, -904628, -39946952, -12802761, -18638548,
+-37427420, 12093554, 29252486, 18813568, -24697672, -8662412, 1809255, 20884816, 2031520, -895501,
+6587943, -1704028, -11366094, -32142998, -23338316, 9074729, -4231080, -17164300, 18127446, 17890150,
+9701257, -32808718, -31891206, 29678760, 16088411, 22306986, -23259396, -54994908, -12049531, 24460912,
+21789980, -4697621, 54871428, -5893769, 55093156, -84147536, -107683960, -42086920, -65665220, 2377801,
+22921704, 14994268, 66997732, -5565741, -6522982, 15655156, -15727633, -50826644, -50175420, -48998060,
+42142220, 43195560, -12718472, 18923090, 5133560, 13867376, -42725796, 37388764, 25441776, 12773233,
+31878322, -18257370, 10547366, -54292144, -28895466, 16153909, 18633178, 10907069, 5171678, 8354785,
+12354473, -5399311, 61353608, 7080254, 37335612, 12686797, -21347598, 49689552, -8924405, 20280836,
+-1408749, 18600430, -4321811, 197032, 8051990, 25503516, 4412005, 18946712, -1511829, -2459943,
+35339528, 5537287, -11020349, 1843615, -6090264, -18043694, -8714489, 11950210, 3755949, -41899552,
+-14032195, 6663105, 6304475, 46309948, 32875828, -43293272, -28618440, 5000953, -14153528, 51004884,
+293668, 47224776, -37078452, 24591372, -556198, 4214437, 15640660, 48877800, 24404004, 8334921,
+34843996, 18701362, -27125402, -39145944, 28148142, -29983166, 12077448, -39396124, -12451110, -62434864,
+53624816, -4304631, -67589360, -19659676, -2956011, 5293547, 8846022, -45535780, -22636088, 37456408,
+-12496207, 12712566, -14547054, 2136209, 52408264, 78066400, 8602283, -4364761, 43208980, 16001974,
+19871740, 47990352, 4516158, 28609850, 39757976, 33614024, -9999758, 13953812, 35081828, 42608224,
+39570608, 52719648, 34301220, 67662376, 76820320, 51783884, 62227632, 38837780, 92342, 18772766,
+14837501, -15492484, -10117869, 10986526, 38708392, 7380365, 6597607, -448824, 21935472, 50174880,
+44557600, 84458384, 22652732, -43989056, 23335094, 824634, 23953570, -22558778, 39888436, -61327840,
+-72577432, 22109954, 86361056, 34537444, 23039816, -98785320, 8093329, 37082212, 67532456, 79264696,
+-25498684, 3614752, -128708360, -93314608, 47158740, 47392280, -64359548, -23079006, 63171988, 77474232,
+-86948928, -31797254, 29329794, -20398410, 13196287, -27685360, 25061672, -22983980, 3613141, 2975339,
+-15262703, 9404368, -1240709, -4993437, -8599598, -17808008, -8192650, 7501698, -96100, -18231600,
+17504140, -16500727, -9305584, -13944148, -656056, -13246216, 30295626, 2068564, 6145562, -6105833,
+6140193, -6696391, 6859600, 22747220, 24843702, -4789963, 6726456, 12655121, 21569326, -12457553,
+13052406, -10895795, 26482768, -5227512, -18702972, 11673721, -9468792, -6493991, 1069447, -403727,
+10233833, -4570382, -18527416, -14074071, 518080, 4851166, -30498026, 10291279, -6161131, -1502702,
+3398393, -6995965, -6201396, 3652870, -5604933, 4233764, -16051903, 17732310, -51288352, 25837450,
+-21145734, 31841276, -21040508, 3349001, -13613973, 63559072, 38472168, -20964272, -24189792, -2142652,
+78857744, 32941326, 10945724, 21787832, -19294604, -24262270, 6568616, 15218680, 3810173, 1258962,
+-8618389, -6704981, 7198902, 7401840, 18129594, 7987029, -10188199, -4586488, -5201206, -10229001,
+-435402, 1501091, 4547297, 5949067, -185220, -2959769, 6934225, -21526912, -8486319, 9072582,
+13058311, 16381005, -9928891, -5898064, -10558640, 16711181, 11297911, -3708704, 4845797, -20306068,
+-17792438, 15302432, 11615202, 3332358, -30770756, -16018617, 437013, 4393215, 18905372, 13490492,
+-3151432, 5142150, 6006512, -10084583, 7469485, 8589935, -3985730, -6466074, 4155381, -10792179,
+-622233, -2438468, -8863739, -11413876, 12780212, 2593624, 609885, 20619064, 21335250, 10772852,
+9466108, -23015656, -62674312, 21540334, 115799296, 90656024, 87219512, 27559732, -80792096, -48841832,
+-71628240, -72283760, -65498252, -23223426, 35446364, 45252312, 71772128, 63883880, 38718056, 6123013,
+6314139, -31479962, -49181132, -70755288, -27113592, -19522236, 6232535, -4406100, 35580584, 23659902,
+10095858, 47263432, 26602490, 19943680, -4411469, 17423608, -32704566, -24958592, -20551418, -24142012,
+-31489626, -19291920, -12862353, -32202592, -22401476, 7803419, 45945412, 44309568, 50357956, 39441220,
+57586384, 9432285, 14088566, -39476656, -29681982, -25345138, -59281288, -58704688, -53226992, -25369298,
+-31861678, 6315750, 20987894, 31609348, 63496796, 63211180, 59334972, 54092964, 45827836, 9252970,
+-31094490, -47233904, -85662584, -71830104, -55363740, -70824008, -36502392, -10081362, 2771865, 38146288,
+-6261526, 0, 0, },
{
11669426,
--4000225, 3040300, -444529, -324270, -3609383, 2025077, 5330592, -3006477, -1369558, 754841,
--2290828, -3757023, 580894, 78383, -3585761, -6129992, 4901632, -2550137, 8421357, -464930,
-4721243, -6693707, -304406, 2417530, -1489280, -3539053, -1470489, -2531346, -436476, -2094333,
-224412, -438624, -3110093, 1935420, -4150012, 4902705, -1733019, -1356673, -803159, 5811628,
-5447093, 210990, 4046933, 2596308, -1280437, -1222455, 5425618, -2703145, -6251325, -83752,
--1341640, 6776385, 349503, 847719, -4264366, 11811, -2239826, -2360622, -1159104, -2544768,
-1848983, -3678640, -1647657, 938450, -1364189, -3943854, -5515275, -107374, 3163244, 1662152,
-2664490, -53687, -676457, 988916, -346819, -3704946, -3823595, -6515466, 2431488, -3365107,
--5735392, -4250944, 3114925, -8042327, -3912715, -9757629, 3612068, 3840775, 5691906, 2555506,
--2946348, 6759205, -4532801, 1074279, 490700, -1390496, -4810900, -3007014, -5326297, -148713,
--2069637, 2800856, 2438468, -3077881, -527207, -994822, -4865124, -596464, -821413, 1928977,
-240518, 4319127, -1342714, 5563594, -2247342, -315680, 1285806, -4742181, 3347390, -1734093,
--1345399, 86973, -855235, 1868311, -8792335, 3805878, 5801427, 346282, 3428458, 1242319,
--3727495, -1000191, -4077535, 5497558, -1284732, -4211753, 3885335, -5981816, 513785, 1603633,
--5961952, 210990, -1216550, -2913599, 2358474, -84289, 748398, -3488050, -1758789, -10506564,
--1186485, 1881196, -14341970, -8486319, 1502165, -4544076, 801548, -4688494, -8268886, -5362804,
-9220758, 5504538, -1516124, 6393596, 1408749, 1646583, 1694902, -2949569, -901406, 5223754,
--4190278, 2433099, 3666828, -3882651, -6384469, 3011309, -5229123, 694711, 2896956, 7710003,
--1771674, -3529390, -3260954, 1315334, 4067334, -5466420, -104153, 4755603, 1759326, 636192,
--360777, -274878, 5935108, -64961, 5433671, 3777424, -1446330, 3772592, -1317481, -139050,
--612570, -9820443, 3416110, 5870147, -3328063, -1648731, 1329829, 1772748, 1557463, 1130650,
--595390, -948114, 287226, -2241436, 6806450, -2777770, 744103, 4044786, 2921115, -2109366,
-2647311, 1225139, 1695975, 4156455, 3237332, -4563403, 5035313, 6123013, -2185602, -5443871,
-7019587, 4935991, 10973105, -1646583, 999117, 3633006, -5631239, -914828, 1966021, -2030446,
--7576323, -223338, 597537, 5168457, -6157910, -14340359, -11954505, -7019587, 2602213, 7146289,
--7167764, 4146254, -3617973, 5578626, 3954054, 3858491, 6208375, 3808026, -5233955, -4401268,
-661425, 3673808, -477278, 542240, 8754754, 184684, 1341640, 4727149, 4490389, 1049046,
--95563, 11365557, -1012002, -3884798, -1494649, 2809982, 2987150, -1852205, 5706401, 1479616,
-2935610, -3945464, -4057670, -1120987, -2788508, 1796370, -2285996, 6863895, -7815767, -6300717,
-7764227, -434329, -704375, -8975408, 2532420, -4085588, 4651450, -3389266, -10914586, 116501,
-4830765, -3779034, 6332930, -3329674, 2538863, 17536352, 3956739, 4784057, 1852205, -3825205,
-8209830, -3797825, -2500208, 10774999, -935229, 8698383, -1036161, -9604084, 3320010, -3147137,
-10640245, 5841693, -885300, -9473087, -6880001, 9089225, 10435697, -12155294, 6048388, 5133023,
-3582540, -615791, 1063004, 1226213, -1072668, 12419972, -693100, -1885491, -3507915, -3883187,
--5370320, -1502165, -421444, -6810745, -2652679, 2076617, -5053566, 521302, 130997, 7570954,
--2897492, 500364, 3241627, 573378, 6825240, 3454764, 7096897, 3909494, 2036351, -7350300,
-623307, -5338108, -5518496, 1655710, 7205882, 121333, 6146098, -2223719, -5048197, -632971,
-48318, 2407329, 4085051, -1425392, -363998, -1718524, 2061584, 2446521, -6739878, 2144263,
-637266, 4982699, 3354370, 4014721, 11094974, 5914707, -4953708, -4286378, -12146704, -734976,
--382252, -6385543, 2319819, 9694815, 1040456, -7587597, 6929930, 6735046, -848793, 2695629,
-6651294, 1615982, -6352257, -959925, 14249091, 7083475, 1305670, -9536975, -3602941, 8652748,
-2778844, -1333587, 4669167, 4325032, 4345433, -90731, 8709657, -143881, -1406065, 2183991,
--4720706, -5909875, -582505, 894427, 3023657, 1726040, -5769752, 5418101, 9365176, 4858682,
--631897, 7073275, -8598525, 4532801, -5308043, 4982162, -1818382, -6083821, -782758, -7886634,
--13120051, -4804995, -5575942, -836982, -679679, -6834904, 583579, -2282775, 3042448, 2254321,
-3630321, -1004486, 756988, -6631430, -225486, 759136, 7020661, -3468723, -12169253, -7417409,
-16307454, -3267933, -4033511, 1365800, -956167, 18275086, -5597953, -9257265, -132607, -9123584,
-2005750, 7992934, 7795903, 2985539, -16966732, 14055280, -11107322, 6120866, -7708930, -5163088,
--4475893, 7238094, 6961068, -10554345, 503585, 5234492, -3775813, 2643552, 2856690, -3519726,
-138513, -8588324, -6451041, -13496398, 7896298, -1475858, 13701483, -6070400, 2676838, 9898826,
--2730526, -2280628, -4546760, 11298448, 7476465, -12687870, 3379603, -6925098, -2911988, -2330020,
--7836168, 5060009, 1952600, 12271258, 7777112, -13984950, -2830384, -5604933, 8107825, 3694209,
-281857, -7774428, 812823, -78383, 6706055, -310848, 408559, -8837432, -722628, 8087424,
--6920803, 2406256, -2462627, -140660, -5356361, 569083, 1816234, 4044786, -4481262, 273804,
--9458592, -1222992, -10921565, 1658931, -2753074, 6206228, -469225, 5249524, -7507603, -14139032,
-2942590, 9386651, 1185948, -1228361, 7323993, 4873714, -11570642, -287763, -4410932, 14453102,
--728534, 1576253, 1055488, 20938, -552440, -5362804, 11437498, -1126892, -16474958, -3227131,
-9794136, -6553047, 1523103, -434865, 1185411, -2232846, 1430224, -3204046, 3751117, -6480032,
-5740224, 8077223, -6682432, -1883343, -4042101, -11630235, 4354023, -8336532, 6818798, -7369090,
--12533788, -3629247, 7050189, -2563559, -4670240, 4594005, 6454262, 3564823, 7072201, 12362526,
-9833328, -969052, 1564979, 1421097, -7289633, 1008244, -7705172, -7978439, 3452080, -5981279,
--16639777, -12903692, 7306276, 14982993, -530428, -265214, 2224793, -6330782, -3874597, -16044387,
--9375377, -4107599, -665183, -11490648, 16812112, 4066797, 9135932, -10405632, -13669270, -9265855,
--4354560, 3286724, -15442555, -6033892, 6432251, -2296197, -18671296, -5487895, 1962800, 882079,
-10793253, 4493073, -4027069, -7910793, 10247255, -5504001, -1106491, 8821863, 1913945, -8056285,
--4998268, 78383, -15194521, 4483946, 10969883, -4189741, -6792491, 2479270, -7924215, -1923072,
-1005022, -3900367, -4105989, 4748623, -6031745, -10848014, 5324686, -5776194, -9240622, -11082089,
--6502044, 2182380, -5296232, 3023120, 14303315, 9431748, -2301029, 15241228, 13828184, -4990215,
-1500554, 5310727, -7882876, -3292629, -16057809, 3561065, -4700305, -10024991, 25879862, -804770,
-15793668, -7821136, -23037668, 6757058, 1785096, -664646, -10887742, -806917, -7225209, 18342732,
-13091060, 12093554, 8503498, -13933948, -233539, 2208150, 12454868, -21277804, -2580739, -5006858,
--6424734, 3504693, -7219840, 3038689, 4680978, 3842922, 3724811, 5272073, -1600412, -1837172,
--10570451, -2209761, -1687922, 10575283, -81068, -9127342, -2287607, 11485816, -1368484, 6805376,
-8312373, -5774047, -3639448, -13581760, -8106214, 27448600, 7120519, 12375411, 6469295, 1861868,
-1003412, -16926466, 10189273, 1890323, 2989297, 9054328, 9582072, 15176267, -17173426, -6853157,
--9530532, -986769, 2377265, -2081449, -4832912, -2673617, -14449344, -18017388, -11847667, -16967806,
--2371359, -11218991, -19244674, -8083129, 35009888, 7945690, -5098663, -7270306, 1070521, -11256036,
--22043382, 16153909, -12348, 10377715, -7969849, 7488813, 17873506, -1832340, 1876901, -4592394,
-15508590, 13110925, 4948876, -21294984, 1350767, 3033321, 12906914, 18985366, -5857799, -4008278,
--2769717, 5006858, 6544457, 5550172, -9942312, 4290136, -11440719, 8385387, 11017128, -5557688,
--11622182, 6973417, -12643310, -11331197, -903017, 3122441, 15483357, 1797981, -2689187, 13466333,
--3063922, 12090333, 21969294, 11199664, -376347, -14415521, -2048163, -8325257, -7429757, 14359149,
-4823785, -14547054, -1050656, -11087995, -3780645, 19170050, 7723425, 2913599, 6998113, 11717745,
-4639102, -15084999, 6430640, 13320841, 2656437, -9853729, 2248416, 2196339, -445066, -6799470,
-8609262, 5616744, 5090610, -8522826, -408559, -10876468, -25558814, 8850854, -10159208, 2851322,
-944356, 17969070, -12315819, -10885595, -4547834, -4944044, -6561100, 13320841, -11696807, -16489990,
-4999879, -30874372, 950262, -5714991, -13063680, 16800838, -1033477, -826781, 7039989, -6424198,
-5290863, -1472100, -18488760, -19967302, -201327, 4520990, 11826192, 6004365, -1375463, -1811403,
--11679627, -5158256, 11617350, -17878338, 25119116, 15404974, 3253438, 19120658, -12589623, -4800163,
--11574400, -11061688, -5262409, 9164923, 23531588, 937914, -12627741, -1262184, 765578, -424665,
--1745904, -6542846, 5855651, 7053947, 15375446, 1030792, 17340930, 10892574, 4021700, 1370095,
-2708514, -24882356, 12884365, -630286, -17564268, 15156940, -1969243, 20657718, -8826158, -8169028,
--46883328, -4715337, 29434484, -6235756, 1903207, 23811298, -4679904, -691490, 4131759, 5650567,
--6336151, 5649493, -1418950, -9221295, 9168681, 8498130, -26797374, 2390686, -23689966, -1581622,
--11656541, -14970645, -1807108, -5116380, -12360379, 5973763, 3602941, 7772817, 13160317, -17849348,
-22788022, 625455, -18552648, 798864, -12319040, -7815230, -13320841, -14359149, -4258460, 13338021,
--10581189, 5920076, 16021839, -9432285, -13567802, -14948097, -18896782, -23153632, -11250130, -7198902,
-3664144, -4229469, 8150238, 3359738, -11146514, -1852742, 17058536, 7641284, -19711752, 7700877,
-722628, -7094749, -17847736, 12739947, -4628364, 17909476, 26877368, -525597, 25927106, -13830868,
-16615081, -11312407, 17983028, 16446504, 6026913, -21614422, 17217988, -42319924, -3806415, -3040300,
--4890357, 5104032, -26240102, 2789045, -6237903, -1119913, 10036265, 5465346, 11868068, -9281424,
-7963943, -3960497, -23606750, -8032663, -17743046, -9246528, 9221832, -18514530, 996969, -6356552,
--16229608, -1829656, 12730283, -18483928, -20146080, 8309151, 9450002, 81604, -10464688, 11053098,
-9221295, 14074071, 9786620, 5415954, 14015015, 19360638, -11944841, 3378529, -10797011, 24084030,
--3860639, -15782931, 17643188, 9097814, 2675765, -8875013, -14486925, 3323768, 5332202, 7921531,
--2860448, -9875740, 5539971, -11586211, -1966021, -11450920, 34011848, 5924371, -12873628, 30167850,
--6121402, 9417790, -10239739, 15272904, 19810000, -13604309, 18875844, 22846542, 27331024, 22785338,
-720481, 15809238, 44181792, 12306692, -8236137, -5912023, 9802189, 3623879, 3834332, -421981,
--18497888, 15696495, -41459856, 5147519, 8385387, -1133871, -8055748, -14996415, -7778723, 2543158,
-11541114, 19198504, -11540577, -23133768, -19797114, -2087354, 149250, -13390634, 28288266, -12833362,
--9354976, 12512850, -4588636, 2730526, -3111167, 25317222, 3616363, -24266566, 9326521, 3668439,
-16680579, -5634997, 1380832, -9796284, 8065412, 4212826, 21198348, -4882304, 9334575, 10620380,
--13506062, -14126684, 624918, 13390097, -25869124, -29960082, -9236864, -12271258, -1974074, -4348118,
-2672544, 6760816, -6416681, 843424, -35089884, -29890824, 23248122, 24486146, -30391726, -23856932,
--29240674, -16112570, -12221329, 13829258, -16019691, -29508036, 746787, -519154, -15814070, -3633542,
--25342992, -2645700, -6460705, 7885560, -12254079, -2843268, -39230768, 34690452, 21581674, -3377455,
-46580532, -4283693, -26341572, -2048699, 10026064, -15637439, -21626234, -4109747, -14966887, -366146,
-3385508, -21330418, 31107374, 1360968, 2740726, -19662360, -6460705, 2449742, -6445136, 5390721,
-6458020, 26401164, 3864934, -1032403, 20242718, 17710834, -7059853, 10578504, -14260902, 4081830,
-10814728, 11807402, 28475096, -28829432, 16840566, 54489712, -759672, 9274445, 17298518, 2532420,
-2389076, 9190693, 5365488, -17603460, -23022098, -7309498, 15770583, 5750961, -24082956, -11489574,
--2794950, -10036802, 17952426, 2647847, 13234942, -33234994, -23538568, 11045045, 20793010, 15622407,
-6443525, 34003256, 15497316, -11799349, 18188650, -14481556, -8872866, 3543348, 14829985, -43890808,
--202937, 936303, -2580739, -4457639, 19958714, 2957085, -13201656, -21297132, 21843130, -18989662,
--493921, 16061030, 10832444, -14588930, -5242545, -24314884, -1045288, 8810589, 8078834, 11890617,
-1873143, -15249281, -21722334, 18718004, 8069707, 10129143, 2602213, 10315975, 1883880, 14302778,
--23215908, -36437428, 9927817, -4022774, -8722005, 23052700, -4284767, -9506373, 18298708, 19625316,
-14277545, 587337, -9986336, -14392435, -4571993, -19614578, 50732152, -2190970, 18176838, 6185827,
--17037062, 16244103, -6482717, -13788993, 16037408, 15214385, -27819040, 22269942, -2607582, 30005716,
--26889716, -17655536, 28460064, 2160906, -21373904, 26477936, -7023882, 43059196, -14782204, -8987219,
--21177946, 20173462, 6112276, -12845173, 12127377, -13635984, 7320235, -6656126, -11775190, 32322850,
--6487548, 21531744, -34273840, -7341173, 334471, -43383464, -8130910, 5011153, 21939230, -11509975,
--8733816, -183073, -2072322, 28572270, -1625645, -16019154, 32679870, -5002563, -400506, 4841502,
--11335492, 26101590, 3047816, -6645925, 14293651, 10066866, -13564044, -6185827, -5593658, 20078436,
--41020696, -1827509, -6882685, -16048145, 8593156, -16304233, 26008712, -7583302, -29123100, -4294431,
-47747688, -29251948, 21729850, -32494648, -7580081, 30042760, 24271934, -18017388, 9405978, -21736830,
--25473452, 4513474, -10332618, 10499584, 4957466, -3192771, 6172942, -40882720, -13854491, -21572546,
--27273042, 11914776, -9342091, -9667971, -14401025, -29867202, -22034256, 16470663, -2219961, 55252608,
-11318849, 1999307, 20637854, 23250268, 9959492, 21972516, -12772159, -17424682, 19602768, -30713312,
--2995203, -6628745, 2370822, 20986284, -13364328, 23352810, 10785200, 5071820, 7736847, -38956428,
-26955214, 4639639, -26482232, 10404021, -28106266, 4703526, 39475044, -4996121, -22115860, -24555402,
-11237782, 17438104, 15057618, 7449084, -24638616, -17579838, -6982543, -4808216, 34029564, -20971252,
--11556683, 49225692, -26314728, -2087354, 20607254, 146029, 21699786, -2917894, -15385647, -10998338,
--28876676, 15535970, 22753662, -31967442, 49468360, 16220481, -34764540, -32814088, -29943438, -37497212,
--28858422, 1903207, 16935592, 3335042, -23455354, -9226127, 19214074, 537, -13471165, 18063022,
--31442918, 2750390, -4580046, -31038118, -25562034, 5888400, -6646999, 23365158, -33836288, -3894999,
--1382443, 23434952, -58744952, -54430656, -47081432, -30520038, 12375411, -12936441, 60677688, 15936476,
--6408091, -13984414, -7590818, 17067664, -39355860, 46060840, 61158188, 24163486, -3594888, 48155172,
--15217069, 29057602, 55621436, -10290205, 3193845, 10222559, 74011952, -18925236, -4496831, 43685724,
-16838420, 13880261, -11901354, -45275396, 3334505, -35961224, 17278654, -44520556, -51496656, -956704,
--2655901, -36516884, -1574106, -17985176, -36677412, -30056718, -47932372, -2786897, 49809272, -16275242,
--8945343, -46080704, -23820962, -17394080, -14991046, 14701673, -10460930, 81398224, -18678276, -1978369,
--29141354, 61088392, 51912196, -37045704, 42515344, -15607911, -59020368, -11986717, -4414690, 11353209,
--12442520, -15092515, -5794985, -25872882, 9076877, 28978144, -33502892, -18060338, 24429774, 105075304,
-11806328, -64860984, -16569984, -22447646, 4788352, 33402498, 58463096, 17608830, -49318572, -22549,
-34026880, 8391829, 777926, -468151, 8992588, -3571265, -5810017, 41694468, 25614648, 23898272,
--34112776, -20975546, 23805930, 10501195, 14282377, -10421201, 4836133, 46720116, 1658394, 39947492,
-20774756, 22656490, 38132868, 7302518, -19023484, 6580427, -21824876, 7795903, 16815870, 6231461,
-62207768, -18081812, -38257420, -35539244, 48468168, 24373402, 26492432, 19935090, -25615722, -31052614,
--19152332, 1916092, 11931419, -4145717, 18426484, 34793532, -281320, 26439818, 22611392, -27674084,
--4159676, 13377749, -12610561, -8691940, -13219909, -47124920, -6345814, 28299002, 4569845, 51928840,
-32962800, -15269682, 18016850, -3700651, -27634356, 4979478, 80083424, 23267986, 32287416, -15173046,
--77538656, -36133024, -57773216, -16707423, 34664680, 87195352, 35489316, 11341398, -43179992, -36404144,
-24209120, 44207560, 18313740, 53265112, -4974646, -32021128, -52182244, -22367116, -10526428, 39887900,
-1716913, 23689966, 16675211, 4850092, 48036524, 37338300, -7135015, -3481608, -50422380, -10122164,
--4355634, 2280628, 23574002, 49501108, 25998510, 24350318, 41668700, 27278948, -50770272, -36767068,
--15676094, -28679108, 27423904, 22207128, 42345692, 36976448, 36812164, 12801687, 2777233, -33282238,
--40048424, -32840394, 6739341, 17027398, -5349382, -4617090, 67702640, 18141942, -11111080, -7761006,
-43567076, -54899884, 3856344, -104087992, -31280784, 21996676, -45863272, 27477054, 5349382, -9892920,
-37969120, 3468723, -115902376, -74394736, -35985384, 33944200, 14284524, 161773168, 178037664, 105389368,
-197549712, 157703152, 172297440, 116491328, 147426896, 116111760, 9766756, -51516524, -69096896, -70964136,
--146513680, -182563488, -185266640, -131311648, -96490200, -36483064, 18901078, -48716204, 45999636, -62283468,
--11984569, 3306051, -7434589, 25414396, -48779556, 97562864, 31021476, 90759104, 68488624, 41690172,
-39130912, 57097296, 48281336, 59355376, 125164472, 114416856, 101272104, 113453712, 146351552, 129560376,
-130612104, 212603568, 94868848, 156988032, 206231984, 144597584, 192188512, 110306032, 148384672, 116758152,
-144128896, 146131968, 82794088, 107959912, 100515120, 106456672, 115922776, 58412092, 39406860, -29678760,
-31663036, -48875116, -19325742, -89413168, -88047904, -101545912, -260147248, -222526016, -175442432, -80647136,
--13482976, 0, 0, },
+-4000225, 3040300, -444529, -324270, -3609383, 2025077, 5330592, -3006477, -1369558, 754841,
+-2290828, -3757023, 580894, 78383, -3585761, -6129992, 4901632, -2550137, 8421357, -464930,
+4721243, -6693707, -304406, 2417530, -1489280, -3539053, -1470489, -2531346, -436476, -2094333,
+224412, -438624, -3110093, 1935420, -4150012, 4902705, -1733019, -1356673, -803159, 5811628,
+5447093, 210990, 4046933, 2596308, -1280437, -1222455, 5425618, -2703145, -6251325, -83752,
+-1341640, 6776385, 349503, 847719, -4264366, 11811, -2239826, -2360622, -1159104, -2544768,
+1848983, -3678640, -1647657, 938450, -1364189, -3943854, -5515275, -107374, 3163244, 1662152,
+2664490, -53687, -676457, 988916, -346819, -3704946, -3823595, -6515466, 2431488, -3365107,
+-5735392, -4250944, 3114925, -8042327, -3912715, -9757629, 3612068, 3840775, 5691906, 2555506,
+-2946348, 6759205, -4532801, 1074279, 490700, -1390496, -4810900, -3007014, -5326297, -148713,
+-2069637, 2800856, 2438468, -3077881, -527207, -994822, -4865124, -596464, -821413, 1928977,
+240518, 4319127, -1342714, 5563594, -2247342, -315680, 1285806, -4742181, 3347390, -1734093,
+-1345399, 86973, -855235, 1868311, -8792335, 3805878, 5801427, 346282, 3428458, 1242319,
+-3727495, -1000191, -4077535, 5497558, -1284732, -4211753, 3885335, -5981816, 513785, 1603633,
+-5961952, 210990, -1216550, -2913599, 2358474, -84289, 748398, -3488050, -1758789, -10506564,
+-1186485, 1881196, -14341970, -8486319, 1502165, -4544076, 801548, -4688494, -8268886, -5362804,
+9220758, 5504538, -1516124, 6393596, 1408749, 1646583, 1694902, -2949569, -901406, 5223754,
+-4190278, 2433099, 3666828, -3882651, -6384469, 3011309, -5229123, 694711, 2896956, 7710003,
+-1771674, -3529390, -3260954, 1315334, 4067334, -5466420, -104153, 4755603, 1759326, 636192,
+-360777, -274878, 5935108, -64961, 5433671, 3777424, -1446330, 3772592, -1317481, -139050,
+-612570, -9820443, 3416110, 5870147, -3328063, -1648731, 1329829, 1772748, 1557463, 1130650,
+-595390, -948114, 287226, -2241436, 6806450, -2777770, 744103, 4044786, 2921115, -2109366,
+2647311, 1225139, 1695975, 4156455, 3237332, -4563403, 5035313, 6123013, -2185602, -5443871,
+7019587, 4935991, 10973105, -1646583, 999117, 3633006, -5631239, -914828, 1966021, -2030446,
+-7576323, -223338, 597537, 5168457, -6157910, -14340359, -11954505, -7019587, 2602213, 7146289,
+-7167764, 4146254, -3617973, 5578626, 3954054, 3858491, 6208375, 3808026, -5233955, -4401268,
+661425, 3673808, -477278, 542240, 8754754, 184684, 1341640, 4727149, 4490389, 1049046,
+-95563, 11365557, -1012002, -3884798, -1494649, 2809982, 2987150, -1852205, 5706401, 1479616,
+2935610, -3945464, -4057670, -1120987, -2788508, 1796370, -2285996, 6863895, -7815767, -6300717,
+7764227, -434329, -704375, -8975408, 2532420, -4085588, 4651450, -3389266, -10914586, 116501,
+4830765, -3779034, 6332930, -3329674, 2538863, 17536352, 3956739, 4784057, 1852205, -3825205,
+8209830, -3797825, -2500208, 10774999, -935229, 8698383, -1036161, -9604084, 3320010, -3147137,
+10640245, 5841693, -885300, -9473087, -6880001, 9089225, 10435697, -12155294, 6048388, 5133023,
+3582540, -615791, 1063004, 1226213, -1072668, 12419972, -693100, -1885491, -3507915, -3883187,
+-5370320, -1502165, -421444, -6810745, -2652679, 2076617, -5053566, 521302, 130997, 7570954,
+-2897492, 500364, 3241627, 573378, 6825240, 3454764, 7096897, 3909494, 2036351, -7350300,
+623307, -5338108, -5518496, 1655710, 7205882, 121333, 6146098, -2223719, -5048197, -632971,
+48318, 2407329, 4085051, -1425392, -363998, -1718524, 2061584, 2446521, -6739878, 2144263,
+637266, 4982699, 3354370, 4014721, 11094974, 5914707, -4953708, -4286378, -12146704, -734976,
+-382252, -6385543, 2319819, 9694815, 1040456, -7587597, 6929930, 6735046, -848793, 2695629,
+6651294, 1615982, -6352257, -959925, 14249091, 7083475, 1305670, -9536975, -3602941, 8652748,
+2778844, -1333587, 4669167, 4325032, 4345433, -90731, 8709657, -143881, -1406065, 2183991,
+-4720706, -5909875, -582505, 894427, 3023657, 1726040, -5769752, 5418101, 9365176, 4858682,
+-631897, 7073275, -8598525, 4532801, -5308043, 4982162, -1818382, -6083821, -782758, -7886634,
+-13120051, -4804995, -5575942, -836982, -679679, -6834904, 583579, -2282775, 3042448, 2254321,
+3630321, -1004486, 756988, -6631430, -225486, 759136, 7020661, -3468723, -12169253, -7417409,
+16307454, -3267933, -4033511, 1365800, -956167, 18275086, -5597953, -9257265, -132607, -9123584,
+2005750, 7992934, 7795903, 2985539, -16966732, 14055280, -11107322, 6120866, -7708930, -5163088,
+-4475893, 7238094, 6961068, -10554345, 503585, 5234492, -3775813, 2643552, 2856690, -3519726,
+138513, -8588324, -6451041, -13496398, 7896298, -1475858, 13701483, -6070400, 2676838, 9898826,
+-2730526, -2280628, -4546760, 11298448, 7476465, -12687870, 3379603, -6925098, -2911988, -2330020,
+-7836168, 5060009, 1952600, 12271258, 7777112, -13984950, -2830384, -5604933, 8107825, 3694209,
+281857, -7774428, 812823, -78383, 6706055, -310848, 408559, -8837432, -722628, 8087424,
+-6920803, 2406256, -2462627, -140660, -5356361, 569083, 1816234, 4044786, -4481262, 273804,
+-9458592, -1222992, -10921565, 1658931, -2753074, 6206228, -469225, 5249524, -7507603, -14139032,
+2942590, 9386651, 1185948, -1228361, 7323993, 4873714, -11570642, -287763, -4410932, 14453102,
+-728534, 1576253, 1055488, 20938, -552440, -5362804, 11437498, -1126892, -16474958, -3227131,
+9794136, -6553047, 1523103, -434865, 1185411, -2232846, 1430224, -3204046, 3751117, -6480032,
+5740224, 8077223, -6682432, -1883343, -4042101, -11630235, 4354023, -8336532, 6818798, -7369090,
+-12533788, -3629247, 7050189, -2563559, -4670240, 4594005, 6454262, 3564823, 7072201, 12362526,
+9833328, -969052, 1564979, 1421097, -7289633, 1008244, -7705172, -7978439, 3452080, -5981279,
+-16639777, -12903692, 7306276, 14982993, -530428, -265214, 2224793, -6330782, -3874597, -16044387,
+-9375377, -4107599, -665183, -11490648, 16812112, 4066797, 9135932, -10405632, -13669270, -9265855,
+-4354560, 3286724, -15442555, -6033892, 6432251, -2296197, -18671296, -5487895, 1962800, 882079,
+10793253, 4493073, -4027069, -7910793, 10247255, -5504001, -1106491, 8821863, 1913945, -8056285,
+-4998268, 78383, -15194521, 4483946, 10969883, -4189741, -6792491, 2479270, -7924215, -1923072,
+1005022, -3900367, -4105989, 4748623, -6031745, -10848014, 5324686, -5776194, -9240622, -11082089,
+-6502044, 2182380, -5296232, 3023120, 14303315, 9431748, -2301029, 15241228, 13828184, -4990215,
+1500554, 5310727, -7882876, -3292629, -16057809, 3561065, -4700305, -10024991, 25879862, -804770,
+15793668, -7821136, -23037668, 6757058, 1785096, -664646, -10887742, -806917, -7225209, 18342732,
+13091060, 12093554, 8503498, -13933948, -233539, 2208150, 12454868, -21277804, -2580739, -5006858,
+-6424734, 3504693, -7219840, 3038689, 4680978, 3842922, 3724811, 5272073, -1600412, -1837172,
+-10570451, -2209761, -1687922, 10575283, -81068, -9127342, -2287607, 11485816, -1368484, 6805376,
+8312373, -5774047, -3639448, -13581760, -8106214, 27448600, 7120519, 12375411, 6469295, 1861868,
+1003412, -16926466, 10189273, 1890323, 2989297, 9054328, 9582072, 15176267, -17173426, -6853157,
+-9530532, -986769, 2377265, -2081449, -4832912, -2673617, -14449344, -18017388, -11847667, -16967806,
+-2371359, -11218991, -19244674, -8083129, 35009888, 7945690, -5098663, -7270306, 1070521, -11256036,
+-22043382, 16153909, -12348, 10377715, -7969849, 7488813, 17873506, -1832340, 1876901, -4592394,
+15508590, 13110925, 4948876, -21294984, 1350767, 3033321, 12906914, 18985366, -5857799, -4008278,
+-2769717, 5006858, 6544457, 5550172, -9942312, 4290136, -11440719, 8385387, 11017128, -5557688,
+-11622182, 6973417, -12643310, -11331197, -903017, 3122441, 15483357, 1797981, -2689187, 13466333,
+-3063922, 12090333, 21969294, 11199664, -376347, -14415521, -2048163, -8325257, -7429757, 14359149,
+4823785, -14547054, -1050656, -11087995, -3780645, 19170050, 7723425, 2913599, 6998113, 11717745,
+4639102, -15084999, 6430640, 13320841, 2656437, -9853729, 2248416, 2196339, -445066, -6799470,
+8609262, 5616744, 5090610, -8522826, -408559, -10876468, -25558814, 8850854, -10159208, 2851322,
+944356, 17969070, -12315819, -10885595, -4547834, -4944044, -6561100, 13320841, -11696807, -16489990,
+4999879, -30874372, 950262, -5714991, -13063680, 16800838, -1033477, -826781, 7039989, -6424198,
+5290863, -1472100, -18488760, -19967302, -201327, 4520990, 11826192, 6004365, -1375463, -1811403,
+-11679627, -5158256, 11617350, -17878338, 25119116, 15404974, 3253438, 19120658, -12589623, -4800163,
+-11574400, -11061688, -5262409, 9164923, 23531588, 937914, -12627741, -1262184, 765578, -424665,
+-1745904, -6542846, 5855651, 7053947, 15375446, 1030792, 17340930, 10892574, 4021700, 1370095,
+2708514, -24882356, 12884365, -630286, -17564268, 15156940, -1969243, 20657718, -8826158, -8169028,
+-46883328, -4715337, 29434484, -6235756, 1903207, 23811298, -4679904, -691490, 4131759, 5650567,
+-6336151, 5649493, -1418950, -9221295, 9168681, 8498130, -26797374, 2390686, -23689966, -1581622,
+-11656541, -14970645, -1807108, -5116380, -12360379, 5973763, 3602941, 7772817, 13160317, -17849348,
+22788022, 625455, -18552648, 798864, -12319040, -7815230, -13320841, -14359149, -4258460, 13338021,
+-10581189, 5920076, 16021839, -9432285, -13567802, -14948097, -18896782, -23153632, -11250130, -7198902,
+3664144, -4229469, 8150238, 3359738, -11146514, -1852742, 17058536, 7641284, -19711752, 7700877,
+722628, -7094749, -17847736, 12739947, -4628364, 17909476, 26877368, -525597, 25927106, -13830868,
+16615081, -11312407, 17983028, 16446504, 6026913, -21614422, 17217988, -42319924, -3806415, -3040300,
+-4890357, 5104032, -26240102, 2789045, -6237903, -1119913, 10036265, 5465346, 11868068, -9281424,
+7963943, -3960497, -23606750, -8032663, -17743046, -9246528, 9221832, -18514530, 996969, -6356552,
+-16229608, -1829656, 12730283, -18483928, -20146080, 8309151, 9450002, 81604, -10464688, 11053098,
+9221295, 14074071, 9786620, 5415954, 14015015, 19360638, -11944841, 3378529, -10797011, 24084030,
+-3860639, -15782931, 17643188, 9097814, 2675765, -8875013, -14486925, 3323768, 5332202, 7921531,
+-2860448, -9875740, 5539971, -11586211, -1966021, -11450920, 34011848, 5924371, -12873628, 30167850,
+-6121402, 9417790, -10239739, 15272904, 19810000, -13604309, 18875844, 22846542, 27331024, 22785338,
+720481, 15809238, 44181792, 12306692, -8236137, -5912023, 9802189, 3623879, 3834332, -421981,
+-18497888, 15696495, -41459856, 5147519, 8385387, -1133871, -8055748, -14996415, -7778723, 2543158,
+11541114, 19198504, -11540577, -23133768, -19797114, -2087354, 149250, -13390634, 28288266, -12833362,
+-9354976, 12512850, -4588636, 2730526, -3111167, 25317222, 3616363, -24266566, 9326521, 3668439,
+16680579, -5634997, 1380832, -9796284, 8065412, 4212826, 21198348, -4882304, 9334575, 10620380,
+-13506062, -14126684, 624918, 13390097, -25869124, -29960082, -9236864, -12271258, -1974074, -4348118,
+2672544, 6760816, -6416681, 843424, -35089884, -29890824, 23248122, 24486146, -30391726, -23856932,
+-29240674, -16112570, -12221329, 13829258, -16019691, -29508036, 746787, -519154, -15814070, -3633542,
+-25342992, -2645700, -6460705, 7885560, -12254079, -2843268, -39230768, 34690452, 21581674, -3377455,
+46580532, -4283693, -26341572, -2048699, 10026064, -15637439, -21626234, -4109747, -14966887, -366146,
+3385508, -21330418, 31107374, 1360968, 2740726, -19662360, -6460705, 2449742, -6445136, 5390721,
+6458020, 26401164, 3864934, -1032403, 20242718, 17710834, -7059853, 10578504, -14260902, 4081830,
+10814728, 11807402, 28475096, -28829432, 16840566, 54489712, -759672, 9274445, 17298518, 2532420,
+2389076, 9190693, 5365488, -17603460, -23022098, -7309498, 15770583, 5750961, -24082956, -11489574,
+-2794950, -10036802, 17952426, 2647847, 13234942, -33234994, -23538568, 11045045, 20793010, 15622407,
+6443525, 34003256, 15497316, -11799349, 18188650, -14481556, -8872866, 3543348, 14829985, -43890808,
+-202937, 936303, -2580739, -4457639, 19958714, 2957085, -13201656, -21297132, 21843130, -18989662,
+-493921, 16061030, 10832444, -14588930, -5242545, -24314884, -1045288, 8810589, 8078834, 11890617,
+1873143, -15249281, -21722334, 18718004, 8069707, 10129143, 2602213, 10315975, 1883880, 14302778,
+-23215908, -36437428, 9927817, -4022774, -8722005, 23052700, -4284767, -9506373, 18298708, 19625316,
+14277545, 587337, -9986336, -14392435, -4571993, -19614578, 50732152, -2190970, 18176838, 6185827,
+-17037062, 16244103, -6482717, -13788993, 16037408, 15214385, -27819040, 22269942, -2607582, 30005716,
+-26889716, -17655536, 28460064, 2160906, -21373904, 26477936, -7023882, 43059196, -14782204, -8987219,
+-21177946, 20173462, 6112276, -12845173, 12127377, -13635984, 7320235, -6656126, -11775190, 32322850,
+-6487548, 21531744, -34273840, -7341173, 334471, -43383464, -8130910, 5011153, 21939230, -11509975,
+-8733816, -183073, -2072322, 28572270, -1625645, -16019154, 32679870, -5002563, -400506, 4841502,
+-11335492, 26101590, 3047816, -6645925, 14293651, 10066866, -13564044, -6185827, -5593658, 20078436,
+-41020696, -1827509, -6882685, -16048145, 8593156, -16304233, 26008712, -7583302, -29123100, -4294431,
+47747688, -29251948, 21729850, -32494648, -7580081, 30042760, 24271934, -18017388, 9405978, -21736830,
+-25473452, 4513474, -10332618, 10499584, 4957466, -3192771, 6172942, -40882720, -13854491, -21572546,
+-27273042, 11914776, -9342091, -9667971, -14401025, -29867202, -22034256, 16470663, -2219961, 55252608,
+11318849, 1999307, 20637854, 23250268, 9959492, 21972516, -12772159, -17424682, 19602768, -30713312,
+-2995203, -6628745, 2370822, 20986284, -13364328, 23352810, 10785200, 5071820, 7736847, -38956428,
+26955214, 4639639, -26482232, 10404021, -28106266, 4703526, 39475044, -4996121, -22115860, -24555402,
+11237782, 17438104, 15057618, 7449084, -24638616, -17579838, -6982543, -4808216, 34029564, -20971252,
+-11556683, 49225692, -26314728, -2087354, 20607254, 146029, 21699786, -2917894, -15385647, -10998338,
+-28876676, 15535970, 22753662, -31967442, 49468360, 16220481, -34764540, -32814088, -29943438, -37497212,
+-28858422, 1903207, 16935592, 3335042, -23455354, -9226127, 19214074, 537, -13471165, 18063022,
+-31442918, 2750390, -4580046, -31038118, -25562034, 5888400, -6646999, 23365158, -33836288, -3894999,
+-1382443, 23434952, -58744952, -54430656, -47081432, -30520038, 12375411, -12936441, 60677688, 15936476,
+-6408091, -13984414, -7590818, 17067664, -39355860, 46060840, 61158188, 24163486, -3594888, 48155172,
+-15217069, 29057602, 55621436, -10290205, 3193845, 10222559, 74011952, -18925236, -4496831, 43685724,
+16838420, 13880261, -11901354, -45275396, 3334505, -35961224, 17278654, -44520556, -51496656, -956704,
+-2655901, -36516884, -1574106, -17985176, -36677412, -30056718, -47932372, -2786897, 49809272, -16275242,
+-8945343, -46080704, -23820962, -17394080, -14991046, 14701673, -10460930, 81398224, -18678276, -1978369,
+-29141354, 61088392, 51912196, -37045704, 42515344, -15607911, -59020368, -11986717, -4414690, 11353209,
+-12442520, -15092515, -5794985, -25872882, 9076877, 28978144, -33502892, -18060338, 24429774, 105075304,
+11806328, -64860984, -16569984, -22447646, 4788352, 33402498, 58463096, 17608830, -49318572, -22549,
+34026880, 8391829, 777926, -468151, 8992588, -3571265, -5810017, 41694468, 25614648, 23898272,
+-34112776, -20975546, 23805930, 10501195, 14282377, -10421201, 4836133, 46720116, 1658394, 39947492,
+20774756, 22656490, 38132868, 7302518, -19023484, 6580427, -21824876, 7795903, 16815870, 6231461,
+62207768, -18081812, -38257420, -35539244, 48468168, 24373402, 26492432, 19935090, -25615722, -31052614,
+-19152332, 1916092, 11931419, -4145717, 18426484, 34793532, -281320, 26439818, 22611392, -27674084,
+-4159676, 13377749, -12610561, -8691940, -13219909, -47124920, -6345814, 28299002, 4569845, 51928840,
+32962800, -15269682, 18016850, -3700651, -27634356, 4979478, 80083424, 23267986, 32287416, -15173046,
+-77538656, -36133024, -57773216, -16707423, 34664680, 87195352, 35489316, 11341398, -43179992, -36404144,
+24209120, 44207560, 18313740, 53265112, -4974646, -32021128, -52182244, -22367116, -10526428, 39887900,
+1716913, 23689966, 16675211, 4850092, 48036524, 37338300, -7135015, -3481608, -50422380, -10122164,
+-4355634, 2280628, 23574002, 49501108, 25998510, 24350318, 41668700, 27278948, -50770272, -36767068,
+-15676094, -28679108, 27423904, 22207128, 42345692, 36976448, 36812164, 12801687, 2777233, -33282238,
+-40048424, -32840394, 6739341, 17027398, -5349382, -4617090, 67702640, 18141942, -11111080, -7761006,
+43567076, -54899884, 3856344, -104087992, -31280784, 21996676, -45863272, 27477054, 5349382, -9892920,
+37969120, 3468723, -115902376, -74394736, -35985384, 33944200, 14284524, 161773168, 178037664, 105389368,
+197549712, 157703152, 172297440, 116491328, 147426896, 116111760, 9766756, -51516524, -69096896, -70964136,
+-146513680, -182563488, -185266640, -131311648, -96490200, -36483064, 18901078, -48716204, 45999636, -62283468,
+-11984569, 3306051, -7434589, 25414396, -48779556, 97562864, 31021476, 90759104, 68488624, 41690172,
+39130912, 57097296, 48281336, 59355376, 125164472, 114416856, 101272104, 113453712, 146351552, 129560376,
+130612104, 212603568, 94868848, 156988032, 206231984, 144597584, 192188512, 110306032, 148384672, 116758152,
+144128896, 146131968, 82794088, 107959912, 100515120, 106456672, 115922776, 58412092, 39406860, -29678760,
+31663036, -48875116, -19325742, -89413168, -88047904, -101545912, -260147248, -222526016, -175442432, -80647136,
+-13482976, 0, 0, },
},
{
{
1787243,
--403190, 1455457, -329102, 6126771, -915902, -234076, 7471096, -1792612, 8322036, 1512365,
--3323231, 5019206, 2379949, -3670050, 1390496, 1989107, 594316, 3205656, -833761, 2577517,
--537, -3583613, 1549410, 3954591, 2282775, 2304250, -457414, 335007, 22549, 1433982,
-2919504, -6963753, -3382287, 161061, 1675574, 652835, -2704756, 5324149, 1768990, -1191317,
-2855617, 1030792, 3949759, 1143535, -1539209, -3018825, 3193845, 214212, -56371, -1628330,
-900333, -2840584, -1970316, 1321239, 2859375, -1372242, 634581, -27917, -399969, 5279052,
-1985349, -627602, 843424, 2306934, 224412, 2361695, -3019362, 2885681, 3200288, -1607392,
--5352603, -2806761, -1466731, 5539434, 60666, -1999844, -515933, -4878546, -3432753, 2224256,
-137976, -3061775, 3794067, 2615635, -897648, 264141, -587874, 3129421, -4371740, 1641751,
-3154117, 2869575, -6267968, -4319664, -3153580, 4181151, 928250, 1376537, -1807644, 4453881,
-1581622, -1087701, 28991, -1252520, 778463, 1671816, -1081795, -1269163, -3828427, 3974992,
-6508486, 785979, 4092567, -776852, 734976, 1508607, 1711545, -5016522, 234613, -5242008,
--1326071, -747324, 1520955, -2648384, -219580, 1140851, 388695, -3061238, -23085, 340376,
-2350958, -3252364, -4229469, -551366, 5368709, 8871792, -148176, 1461363, 445066, -1882269,
--5506685, -1321239, 3539053, -1638530, 3525095, 1545651, 3604551, -6442, 1345399, 2401961,
--5445482, -1385127, -5160403, 2927557, 456340, -2558190, 11362336, -4524211, -7949448, 484258,
-3842385, -813359, -5958194, -1862405, -2530810, -1130113, -2772938, -1085553, 4274566, -434329,
--2622615, 4642860, 801548, 4503273, -1141388, -1292248, 1882806, -32212, 2175401, -1028108,
-4478577, 7011534, -1888175, -4984847, -3447248, 2791192, 75162, -11213086, -967978, -4575214,
--1559610, 5226975, -3697967, -3051574, 3802120, -2627446, -462783, 4762045, 1777580, -4112431,
-1815697, -3026341, -6462852, 1866700, 2615635, -5181878, -2814814, -1673427, -2035278, -301721,
-2164127, 3108483, 5156108, 5430450, -1341104, 259846, -2244121, 2102923, 1577864, -1698660,
-2388002, 3158412, -3542274, -9136469, -4521527, 2698850, 4087735, 1476932, 4425427, -3812320,
-4625680, 5496485, -1502165, 6090264, -778463, 4458176, -2102923, 38118, -1881733, 5722507,
-2332704, -344134, 5261872, -2883534, -2149094, 3695819, -8993662, -1692754, 542777, -2046552,
--8014946, -5049271, 3387119, -3287261, -2062121, -17180, 6343130, -1651952, -4380867, -489089,
-1653026, 3420942, -515396, -5867999, -3663607, -1205812, -2910914, 792421, -4962835, 2308545,
--4672925, -7052873, 226560, 2240899, 2800856, -2381023, -1586454, -4701379, 5834713, 3192235,
-798864, -132607, -186831, -2180770, -1095754, 1778117, 2455648, 8621073, -1043677, 2024540,
-518080, -450972, -4393215, -3446711, 5888400, -2688650, 476741, 1475858, 718870, 2173790,
-2726767, 2399813, 5802501, -3828427, -5665599, -4607426, 2942590, 6386617, -1131724, 4902705,
--4283156, -5260798, 4440996, -2166811, 529355, 1672890, 5563594, 2084670, 8792872, -3730179,
--4536023, 2101313, -2459406, -2344515, 5049808, -7603703, -4616553, 871342, -1350767, 3615289,
--2466385, 1086627, 6340983, -5626944, 4466229, -3331821, 2960843, -3100430, -741956, -357019,
-6604586, 1387811, 432718, -4497368, 446140, -5375152, 2320893, 1602023, -3493956, 148713,
--1295470, 9926206, 1563905, 890132, -8119636, -4633196, -6791954, 5835250, -3306051, -73014,
-3229279, 12683575, 9040369, -3117073, -7247758, -2775086, -6234145, 7378754, -969052, -1497333,
--2677375, -1576253, -212064, -2718178, -1327145, -5069672, 3703873, -5236639, -8736500, 8926016,
-4349728, -9783399, 9798431, -1738388, -337692, -13660680, 8239358, 5148592, -10663330, 3047816,
--1570347, 3936875, 1181653, 4568772, 3277597, 1031866, -4835597, 295279, 2094333, -6868727,
--2623688, -8070244, -1124745, -5076652, -2399813, 738198, -5958731, -2434173, -8890045, 3299072,
-1132261, 643708, 1025960, -4058744, -7716983, -2608656, 3011309, -1408749, -472446, 8198556,
--12120398, 5076115, 6503654, -1009854, 594316, -2485176, -784905, -4071629, -5910412, -4216048,
--4629438, -3258270, 3218541, 1661079, 2868501, 4148402, -865973, -2207613, 6042482, 11378979,
-8080981, -97711, -9602473, 2772402, -1464047, 1603633, 10205379, 216359, 10240813, 9655086,
-14874545, 3377992, -2234994, -1039382, 4821638, -1859721, 14432164, -1824824, -1802276, 17509508,
-476741, 8693014, -2982318, -76236, -401043, 1145146, -1898376, 916439, 110595, -831076,
--9281424, -1246614, -1900523, -2052994, -3619047, 5874442, 3320547, 3365644, -4995584, -923955,
--8135742, -3758097, 2068027, -1023276, -4747013, -1934346, 3351148, 6143951, 4416300, -2385318,
--7461969, -615791, 2805151, -1680406, 4781373, 2463164, 6307160, 7547868, -1966021, -409633,
--7887708, -10721849, 10436771, 4872641, 345745, -820876, 416075, -4176319, -3354370, -495532,
-8666707, 4089346, 2327872, 9093520, -6334003, 1665911, -4925254, -5144297, 5299453, 3665218,
-4811437, 13772350, 1005022, -7179575, 2901251, -7153805, -7817914, -10869488, 4322885, -10166188,
-170188, 10995653, -11491185, 4121021, 5410585, -3273839, -14215268, 47782, 8603893, -9453223,
-5980205, -789737, -3934727, -12212203, -141197, -8846559, 1747515, -4555887, -6580427, -8606041,
-3700651, -1330366, -273804, 7931731, -4647155, 6672769, -4926328, -2189897, 10659572, 3447248,
--5304285, 4154307, 2776160, -4940823, 2812130, 2498597, -1567126, -2179696, 709207, -2445447,
--2441689, 1582696, 2224793, 14049375, -13013214, 2030446, 1200443, -4914517, 9962177, 5325223,
--2907156, -10489921, 1329829, -1199370, -2689723, -6693170, -7186554, 9156333, 6550362, 575526,
--395137, 4745402, 3110630, -2529199, 4626217, 2525441, -1861868, 9493488, -2852932, 5441724,
--3067144, 1912334, 4899484, -10974715, 8099235, -4693326, -1809792, -6373732, -4277251, 3604015,
--3374771, 2915746, 12284143, 3969624, 6833293, -15611669, -10029822, -5676873, -3506304, 1493038,
-115964, 2484102, -12767327, 6754373, 3079492, 1550483, 12551505, 25233, -6814503, 11418171,
-4759898, -5366025, 2566243, -6845104, 6296422, 2681670, 8327942, -7163469, -4744328, 1859721,
--6838662, 8681740, -7938174, -349503, 8108362, 7060926, -14821395, -642098, 956704, 1526324,
-2713883, 16199006, 4027069, 790274, -4786741, -4398584, -8630737, -5064304, 12406550, 28991,
--14223321, -57445, 3648038, -8525510, -8749922, 769873, -5538897, 2087354, 13684840, 6189585,
-6025302, -5821292, -13728863, 775242, -1824287, 6169184, -453656, -12164958, -18944028, -5772436,
-5461588, 14598057, 2165201, 7508677, 26170846, 4211753, 4500052, -4179540, -12487617, 6943352,
--6051609, 6373195, -1566589, 17098264, 12587475, -6856379, -14160507, -11451993, 8505109, -7710540,
-10420128, 4365298, 3354906, -3862249, -1445257, 12169253, -2532957, 10692858, 10889890, 5379447,
-7596724, -8854075, 8221641, 4165582, -4608500, 11799886, -5506685, 10668162, 663572, 855772,
--16382616, 9348533, 692027, -3484829, 7783555, -11756399, -4719632, 6272800, 5269388, -10928007,
-1392106, -7213398, -4134980, 9706626, 1046898, 2468533, -1459752, -12560095, 7558606, 6810208,
-64961, 5152350, 2175938, -6178311, -6100464, -1491964, 5655935, -11967926, -1201517, -804233,
--577673, -2091649, 3191161, 2991445, 9470403, 22771916, 7723962, 2351495, -7898445, -22002580,
-16220481, 4039417, -13206488, 3469260, -628676, 2895345, 3900367, -10883447, -20832738, -17732846,
-6705518, 12668543, -1672890, 13347685, -5499169, 10282689, 14359686, 17443472, -2949569, 12737262,
--10799695, 3913789, -5385352, 1010391, 8313983, -898185, -2719251, 2675765, 10208600, -7018514,
--10838350, -12732967, 26712550, -507343, -22012, -12050604, 13102871, 3302293, -22212498, -14165876,
-6625524, -3849901, -2781528, 8647917, 4532801, 22224308, 14035953, -1357210, -11723650, -13544179,
--5818607, -5911486, -13407277, 13283797, -8609799, 10361609, 11152419, -10159208, -10474351, -12548821,
--15437723, 3434900, 1639604, -7084549, -5803575, -13692356, -2420751, -13718126, 4874788, -100932,
--1865090, -913217, -12212740, -24854976, -4981625, -6791954, 1783485, -6128919, 1483374, 2108829,
--2208150, 10011032, -13108240, -4571993, -12429635, -1104344, -5998459, 14376329, 16986596, 12792560,
--18165564, 12657269, -6340446, 9496173, -3494493, 6884833, -5827734, -8405251, 3162170, -10714333,
-6874095, 7448547, -709743, 4284767, -9120900, -1655173, 16108275, -13091060, 817654, -4206921,
--4984847, -10627360, -401579, 15242302, 20805896, -13464186, 6358699, -2044941, -12459700, -13208098,
--13728326, -6664716, 26167626, 15464567, -4926865, 8106214, -5638219, 7027104, -14455249, 8215736,
--635118, -7953743, 19634980, 10221485, 3697967, 6575058, 5222680, 18852222, 1856500, -15426449,
-5646809, 12744779, 8421894, -26523034, 15471546, -9896678, -12395812, -1713155, -1262720, -94489,
-16982838, 11157788, 46131708, 12957916, -7815767, 2994129, 7707319, 205085, 15306190, 11443940,
-10569378, -13756243, -23037668, 22907208, -13100724, 2125472, 7823283, 25101400, 9976135, -15342160,
-13625247, -13908715, -3000035, -19102404, -25052008, -2955474, 6554657, 6515466, 4837207, 6124087,
--2150168, -17344688, -6502581, 5201206, 5582384, -9375377, 18773838, 11666742, -11566347, 5882495,
-9244917, 3246459, 377957, -10996190, -1501628, -7918309, -4539781, 454730, 11605002, 28679108,
--8164196, 1907502, 4145180, 10103911, -10685342, 36284420, -3381213, 2552821, 2964601, -18075370,
--16694001, -28064390, -11457899, 13144211, -5188858, 5661304, 5916855, 23667418, 4159139, 2329483,
-1529545, 17512730, 10122701, -11657615, 19354196, -20689932, 5367636, -5153961, -18893024, 10567230,
-5502927, 13066364, -3176665, -29586420, 2770791, -19878720, -17022030, 5051419, 4677220, 8086887,
--4576825, 5825587, -471373, -10087268, 16618302, -2585034, -4664335, -6379100, -10563472, -9560597,
-6542846, -12030740, 3721052, -7618735, -4547297, -3165391, 16549583, -2855617, 17745194, 10819023,
--3506304, 5916318, 6800007, 12345883, -7267622, -10897943, 2756295, 7520488, 10307385, 16338056,
--16306380, -16370268, 8469139, 6273874, 20779052, -8917963, -77846, 10462003, 1433982, 3559991,
--2166811, 13692893, 17551384, 8366060, -468151, 11163157, 35304632, -6257768, -8097624, 13782550,
-425202, 21051246, 6620155, 10682657, 13063143, -1958505, 9824201, 24532316, -4075387, -25371982,
-21351356, 7822209, -7245610, 5579700, -36595804, -15721728, -2936147, 29851096, 11586211, -33578056,
-3466576, -4269198, 1004486, 8050916, -3816079, -16173773, 514322, -572304, 13961865, 33342904,
--7145752, 12343199, 18453326, 1476932, -7720741, -2817499, 6131603, 33461554, -2578054, 369904,
-23550916, -7802345, 4954782, 2680060, -2323041, -3982509, 7699266, -25718264, -986769, 11779485,
-18917720, 24930674, -20036022, 3670050, 18126910, 1761474, 35334696, -10449119, -20033874, 5616207,
-25182466, 7967701, -22538378, -6430640, 4336843, 3310883, 9939091, -26701274, 1868848, 4964446,
--8152385, -18169322, -21286394, 9036074, -7804493, 2687576, -863288, -18587544, -25950730, 9515500,
-1630477, -19494856, -10438381, -10722386, 11639361, -32825362, -17177184, 18511846, -26332982, 19603304,
--7827041, 18683108, 1524713, 9673877, -19549618, -3063922, -18415210, 19428284, 10812043, 25880400,
-20840792, -11176579, 5266704, 20141250, 12686260, 9535901, 8648990, -19818590, -3639985, 7565048,
-3076270, 9201431, -21774410, -18830210, 12233141, 33601140, 6439767, -13052406, 23828478, 4850629,
-15537044, 2198487, 4416837, -21253646, -18429168, -1116692, 2073932, -36125508, 4558571, -8606578,
--8590, 9465034, -11726871, 6777459, 29028610, 1335198, -42528768, -33440616, -3339874, -11379516,
--9144522, -1915555, 9995463, 5416491, -8924942, 10645613, 13650480, 8872866, -4823785, 7348152,
--2912525, -13357885, -568009, 8255464, -30865246, -9573482, -12593381, -19426138, -4365298, 2291365,
--6068789, -3585224, 39533564, 17566416, -10323491, -4032974, 7609609, 14169097, -19756312, -5187247,
--8300025, 5152887, 41674604, 6434935, -20307142, 5285494, 18495740, -4051765, 17297980, 21728240,
--11114302, 5068062, 11184632, 7440494, 658204, -3285650, -6578816, 3198677, 13130252, 6631430,
-12279848, -18158584, -27746026, -2988760, 12661027, 10990284, 9149354, -3163244, -25570088, 8336532,
-5923297, 38658464, 40799504, 9716827, -29990146, 21939230, -11289322, -30754114, -7002408, -36394480,
--27618250, -12126303, -13197361, -28142774, 5146982, -11203422, -32231046, -29438242, 8780524, 19548544,
--2981244, -24746528, 7639673, 1065689, 8202851, 16162499, 15549929, -18953690, 25192668, 17673254,
-2347200, 7445326, 17566954, -322659, 45689324, -31828928, -15365246, -406411, -36864240, 31082678,
-2434710, 38690140, 11580306, 9188546, 13048648, -19320910, 4434554, -39485244, -11818139, -1552094,
--10800232, 45347340, 13143137, -10799158, -28712930, -13127031, -12299713, -16633871, -13776108, 7836705,
--41506028, -7689602, 29075318, -2440078, -4148402, -29975650, 28876138, 15849503, -113280, -10618770,
-11864310, 7475928, -7858180, 14775761, -21788906, -4307316, -11507291, 7330973, -5682779, -11899744,
-14258218, -9912248, 5488968, 1859721, -21206938, -11242077, -3985730, -24030342, -25902948, -32015224,
--9501005, 17051020, -12130061, -4445291, 18508624, -21857626, -20345260, 22825604, -1116155, 754304,
-17874044, 2355790, -17207786, -7067369, 5229123, 16012175, -22106196, -4005594, 24013700, 13753022,
-22940494, 15775952, -6833830, 16382079, -3189013, -29122562, 7584912, -20063402, 14051522, -6504728,
--11960947, 30722438, 10170483, 1564979, 3307125, -7452305, 11629161, 19130322, 46912316, 41771780,
-3217468, -17692580, 8070244, 24440512, 6517076, 19047644, 13060459, 9494025, -14310831, -17470316,
--21908092, -973884, 7770133, 15774341, 30466350, 16805134, 19467476, 12013560, 18051748, 9783399,
-17401060, -11172821, 3146601, 33789580, -1040456, 26137560, 6646999, 21259552, -32877974, -4723927,
--9732933, -9044664, 7605314, 13387950, 23734526, 39035348, 32201518, -10770704, 5782637, -42013908,
-10474888, 10464688, 37745248, -29228326, 23990614, -7107097, -20652350, 16699907, 5325223, 14045080,
-24013162, -7010461, -29552060, 16250546, -18621904, -25936770, -11647414, 36202816, -29550986, -43157444,
--20259898, -6525129, 25955024, -1339493, -10517301, -26351772, -5390184, 5437429, 4869419, 30153892,
--9905268, -32413044, 1739999, -13325673, -47525960, -23382876, 60927868, 8932995, -28452010, -30229054,
-2752000, 805843, 11996381, 16208133, -22275848, -14100378, -35123704, 8156143, -13273060, -8121247,
-51634096, 11356430, -8142185, -54122492, -4417374, -28918014, 27712740, 35376572, 2720325, 27470610,
--33490008, -12898324, -21580064, -5022965, 52480744, 66513476, 9500468, -18108656, -25044492, -48547088,
--595927, 5810017, 56959320, 32015224, -9877351, -96372624, -51037096, 7567733, -10678362, 83348672,
-26650808, -41285912, -18422188, -73134168, -24515674, 1331977, 45365056, 47250544, 52736828, 971200,
-10951093, -7662759, 2604898, 64902324, -27047556, 46584824, -14374182, -54117124, -17808008, -58176944,
--20193326, 64117420, 28470264, -42981884, 47602732, -260382, -12093017, -73904040, -19588272, -20260434,
--33005214, 70752072, 896574, 31428960, -48561048, 26523570, 22744536, -22416508, 14264660, -4759898,
-12712566, -587337, 36355824, 12255152, -35439384, 20704964, 17459042, -780073, 24393266, -18869402,
--9579925, 30144764, 21339546, 19812684, 9921374, 17118130, -53658100, 45695768, -27187680, -17822504,
-9655623, -38178500, 53974856, -16375637, 4833986, 38510824, 674847, -6899865, 20651814, 20976620,
-37769404, -10366977, -36783712, -37490768, 3033858, -14162655, 15795816, -23077934, -11995844, -15949898,
-9558987, -69647192, -402116, 49973020, 12417824, 19755238, -3798362, -6604586, 11328513, -19113678,
--23113366, 11802033, 4393752, -23347980, -27968828, 93541168, -13938243, -32125282, 3987877, 40903656,
--8375186, 11800960, -34781720, 11065446, 59732796, 89115736, -38505456, 27616640, -58432492, -19888382,
--34959424, -7199439, 57677652, 57198764, 48857400, -3789772, -36165236, -25177636, 22058952, -874026,
-11772505, 28595356, 849867, 12931073, -38177428, -12685186, -21553756, -30523796, 16565152, 10009958,
-2086817, 25068114, -22487912, -3717831, 7398081, -36303212, 147640, -682900, -20073066, -11065446,
-8867497, -17280264, 32315334, -13559749, 48426832, 32602560, -22676354, -10072772, -31890132, -40871444,
--47745540, 11756936, 22893786, 60839284, 49846852, 19058380, 31786516, 1854352, -35286916, -27885076,
--19704236, -28787018, -4995047, 8832600, -1252520, -21679384, 4282620, -22133040, 10394895, 18422188,
-4393752, -31281320, 19245212, -18775986, -13166759, -32620276, 13502303, 3877282, -8490077, -96976600,
--58569396, -30632244, 56043956, 29473676, 150962736, 145518320, 146964112, 152333904, 159670784, 116084376,
-59204512, 89265528, 52097416, -20622822, -45678588, -67573256, -139540272, -121853056, -129803576, -89764816,
--94291712, -65485904, -56399364, -24784108, 6970195, -48583596, -24407762, -3721589, -4095251, -21889300,
-13099650, 46822660, 48381732, 25352656, 56700012, 74052216, 22948548, 23323820, 20432234, 74237976,
-73966320, 94747512, 101766032, 93835368, 101966280, 153218128, 67579160, 123526480, 160647344, 111155904,
-125925216, 105348032, 58730992, 70806832, 74251392, 71240624, 87949120, 90361816, 62148176, 30720828,
-42338176, 65289408, 20514912, 31168040, 6020471, 6266894, -41075992, 649614, -88445184, -116520312,
--84060024, -98010616, -144426336, -134697152, -53810036, -116386632, -38426000, -1539746, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-403190, 1455457, -329102, 6126771, -915902, -234076, 7471096, -1792612, 8322036, 1512365,
+-3323231, 5019206, 2379949, -3670050, 1390496, 1989107, 594316, 3205656, -833761, 2577517,
+-537, -3583613, 1549410, 3954591, 2282775, 2304250, -457414, 335007, 22549, 1433982,
+2919504, -6963753, -3382287, 161061, 1675574, 652835, -2704756, 5324149, 1768990, -1191317,
+2855617, 1030792, 3949759, 1143535, -1539209, -3018825, 3193845, 214212, -56371, -1628330,
+900333, -2840584, -1970316, 1321239, 2859375, -1372242, 634581, -27917, -399969, 5279052,
+1985349, -627602, 843424, 2306934, 224412, 2361695, -3019362, 2885681, 3200288, -1607392,
+-5352603, -2806761, -1466731, 5539434, 60666, -1999844, -515933, -4878546, -3432753, 2224256,
+137976, -3061775, 3794067, 2615635, -897648, 264141, -587874, 3129421, -4371740, 1641751,
+3154117, 2869575, -6267968, -4319664, -3153580, 4181151, 928250, 1376537, -1807644, 4453881,
+1581622, -1087701, 28991, -1252520, 778463, 1671816, -1081795, -1269163, -3828427, 3974992,
+6508486, 785979, 4092567, -776852, 734976, 1508607, 1711545, -5016522, 234613, -5242008,
+-1326071, -747324, 1520955, -2648384, -219580, 1140851, 388695, -3061238, -23085, 340376,
+2350958, -3252364, -4229469, -551366, 5368709, 8871792, -148176, 1461363, 445066, -1882269,
+-5506685, -1321239, 3539053, -1638530, 3525095, 1545651, 3604551, -6442, 1345399, 2401961,
+-5445482, -1385127, -5160403, 2927557, 456340, -2558190, 11362336, -4524211, -7949448, 484258,
+3842385, -813359, -5958194, -1862405, -2530810, -1130113, -2772938, -1085553, 4274566, -434329,
+-2622615, 4642860, 801548, 4503273, -1141388, -1292248, 1882806, -32212, 2175401, -1028108,
+4478577, 7011534, -1888175, -4984847, -3447248, 2791192, 75162, -11213086, -967978, -4575214,
+-1559610, 5226975, -3697967, -3051574, 3802120, -2627446, -462783, 4762045, 1777580, -4112431,
+1815697, -3026341, -6462852, 1866700, 2615635, -5181878, -2814814, -1673427, -2035278, -301721,
+2164127, 3108483, 5156108, 5430450, -1341104, 259846, -2244121, 2102923, 1577864, -1698660,
+2388002, 3158412, -3542274, -9136469, -4521527, 2698850, 4087735, 1476932, 4425427, -3812320,
+4625680, 5496485, -1502165, 6090264, -778463, 4458176, -2102923, 38118, -1881733, 5722507,
+2332704, -344134, 5261872, -2883534, -2149094, 3695819, -8993662, -1692754, 542777, -2046552,
+-8014946, -5049271, 3387119, -3287261, -2062121, -17180, 6343130, -1651952, -4380867, -489089,
+1653026, 3420942, -515396, -5867999, -3663607, -1205812, -2910914, 792421, -4962835, 2308545,
+-4672925, -7052873, 226560, 2240899, 2800856, -2381023, -1586454, -4701379, 5834713, 3192235,
+798864, -132607, -186831, -2180770, -1095754, 1778117, 2455648, 8621073, -1043677, 2024540,
+518080, -450972, -4393215, -3446711, 5888400, -2688650, 476741, 1475858, 718870, 2173790,
+2726767, 2399813, 5802501, -3828427, -5665599, -4607426, 2942590, 6386617, -1131724, 4902705,
+-4283156, -5260798, 4440996, -2166811, 529355, 1672890, 5563594, 2084670, 8792872, -3730179,
+-4536023, 2101313, -2459406, -2344515, 5049808, -7603703, -4616553, 871342, -1350767, 3615289,
+-2466385, 1086627, 6340983, -5626944, 4466229, -3331821, 2960843, -3100430, -741956, -357019,
+6604586, 1387811, 432718, -4497368, 446140, -5375152, 2320893, 1602023, -3493956, 148713,
+-1295470, 9926206, 1563905, 890132, -8119636, -4633196, -6791954, 5835250, -3306051, -73014,
+3229279, 12683575, 9040369, -3117073, -7247758, -2775086, -6234145, 7378754, -969052, -1497333,
+-2677375, -1576253, -212064, -2718178, -1327145, -5069672, 3703873, -5236639, -8736500, 8926016,
+4349728, -9783399, 9798431, -1738388, -337692, -13660680, 8239358, 5148592, -10663330, 3047816,
+-1570347, 3936875, 1181653, 4568772, 3277597, 1031866, -4835597, 295279, 2094333, -6868727,
+-2623688, -8070244, -1124745, -5076652, -2399813, 738198, -5958731, -2434173, -8890045, 3299072,
+1132261, 643708, 1025960, -4058744, -7716983, -2608656, 3011309, -1408749, -472446, 8198556,
+-12120398, 5076115, 6503654, -1009854, 594316, -2485176, -784905, -4071629, -5910412, -4216048,
+-4629438, -3258270, 3218541, 1661079, 2868501, 4148402, -865973, -2207613, 6042482, 11378979,
+8080981, -97711, -9602473, 2772402, -1464047, 1603633, 10205379, 216359, 10240813, 9655086,
+14874545, 3377992, -2234994, -1039382, 4821638, -1859721, 14432164, -1824824, -1802276, 17509508,
+476741, 8693014, -2982318, -76236, -401043, 1145146, -1898376, 916439, 110595, -831076,
+-9281424, -1246614, -1900523, -2052994, -3619047, 5874442, 3320547, 3365644, -4995584, -923955,
+-8135742, -3758097, 2068027, -1023276, -4747013, -1934346, 3351148, 6143951, 4416300, -2385318,
+-7461969, -615791, 2805151, -1680406, 4781373, 2463164, 6307160, 7547868, -1966021, -409633,
+-7887708, -10721849, 10436771, 4872641, 345745, -820876, 416075, -4176319, -3354370, -495532,
+8666707, 4089346, 2327872, 9093520, -6334003, 1665911, -4925254, -5144297, 5299453, 3665218,
+4811437, 13772350, 1005022, -7179575, 2901251, -7153805, -7817914, -10869488, 4322885, -10166188,
+170188, 10995653, -11491185, 4121021, 5410585, -3273839, -14215268, 47782, 8603893, -9453223,
+5980205, -789737, -3934727, -12212203, -141197, -8846559, 1747515, -4555887, -6580427, -8606041,
+3700651, -1330366, -273804, 7931731, -4647155, 6672769, -4926328, -2189897, 10659572, 3447248,
+-5304285, 4154307, 2776160, -4940823, 2812130, 2498597, -1567126, -2179696, 709207, -2445447,
+-2441689, 1582696, 2224793, 14049375, -13013214, 2030446, 1200443, -4914517, 9962177, 5325223,
+-2907156, -10489921, 1329829, -1199370, -2689723, -6693170, -7186554, 9156333, 6550362, 575526,
+-395137, 4745402, 3110630, -2529199, 4626217, 2525441, -1861868, 9493488, -2852932, 5441724,
+-3067144, 1912334, 4899484, -10974715, 8099235, -4693326, -1809792, -6373732, -4277251, 3604015,
+-3374771, 2915746, 12284143, 3969624, 6833293, -15611669, -10029822, -5676873, -3506304, 1493038,
+115964, 2484102, -12767327, 6754373, 3079492, 1550483, 12551505, 25233, -6814503, 11418171,
+4759898, -5366025, 2566243, -6845104, 6296422, 2681670, 8327942, -7163469, -4744328, 1859721,
+-6838662, 8681740, -7938174, -349503, 8108362, 7060926, -14821395, -642098, 956704, 1526324,
+2713883, 16199006, 4027069, 790274, -4786741, -4398584, -8630737, -5064304, 12406550, 28991,
+-14223321, -57445, 3648038, -8525510, -8749922, 769873, -5538897, 2087354, 13684840, 6189585,
+6025302, -5821292, -13728863, 775242, -1824287, 6169184, -453656, -12164958, -18944028, -5772436,
+5461588, 14598057, 2165201, 7508677, 26170846, 4211753, 4500052, -4179540, -12487617, 6943352,
+-6051609, 6373195, -1566589, 17098264, 12587475, -6856379, -14160507, -11451993, 8505109, -7710540,
+10420128, 4365298, 3354906, -3862249, -1445257, 12169253, -2532957, 10692858, 10889890, 5379447,
+7596724, -8854075, 8221641, 4165582, -4608500, 11799886, -5506685, 10668162, 663572, 855772,
+-16382616, 9348533, 692027, -3484829, 7783555, -11756399, -4719632, 6272800, 5269388, -10928007,
+1392106, -7213398, -4134980, 9706626, 1046898, 2468533, -1459752, -12560095, 7558606, 6810208,
+64961, 5152350, 2175938, -6178311, -6100464, -1491964, 5655935, -11967926, -1201517, -804233,
+-577673, -2091649, 3191161, 2991445, 9470403, 22771916, 7723962, 2351495, -7898445, -22002580,
+16220481, 4039417, -13206488, 3469260, -628676, 2895345, 3900367, -10883447, -20832738, -17732846,
+6705518, 12668543, -1672890, 13347685, -5499169, 10282689, 14359686, 17443472, -2949569, 12737262,
+-10799695, 3913789, -5385352, 1010391, 8313983, -898185, -2719251, 2675765, 10208600, -7018514,
+-10838350, -12732967, 26712550, -507343, -22012, -12050604, 13102871, 3302293, -22212498, -14165876,
+6625524, -3849901, -2781528, 8647917, 4532801, 22224308, 14035953, -1357210, -11723650, -13544179,
+-5818607, -5911486, -13407277, 13283797, -8609799, 10361609, 11152419, -10159208, -10474351, -12548821,
+-15437723, 3434900, 1639604, -7084549, -5803575, -13692356, -2420751, -13718126, 4874788, -100932,
+-1865090, -913217, -12212740, -24854976, -4981625, -6791954, 1783485, -6128919, 1483374, 2108829,
+-2208150, 10011032, -13108240, -4571993, -12429635, -1104344, -5998459, 14376329, 16986596, 12792560,
+-18165564, 12657269, -6340446, 9496173, -3494493, 6884833, -5827734, -8405251, 3162170, -10714333,
+6874095, 7448547, -709743, 4284767, -9120900, -1655173, 16108275, -13091060, 817654, -4206921,
+-4984847, -10627360, -401579, 15242302, 20805896, -13464186, 6358699, -2044941, -12459700, -13208098,
+-13728326, -6664716, 26167626, 15464567, -4926865, 8106214, -5638219, 7027104, -14455249, 8215736,
+-635118, -7953743, 19634980, 10221485, 3697967, 6575058, 5222680, 18852222, 1856500, -15426449,
+5646809, 12744779, 8421894, -26523034, 15471546, -9896678, -12395812, -1713155, -1262720, -94489,
+16982838, 11157788, 46131708, 12957916, -7815767, 2994129, 7707319, 205085, 15306190, 11443940,
+10569378, -13756243, -23037668, 22907208, -13100724, 2125472, 7823283, 25101400, 9976135, -15342160,
+13625247, -13908715, -3000035, -19102404, -25052008, -2955474, 6554657, 6515466, 4837207, 6124087,
+-2150168, -17344688, -6502581, 5201206, 5582384, -9375377, 18773838, 11666742, -11566347, 5882495,
+9244917, 3246459, 377957, -10996190, -1501628, -7918309, -4539781, 454730, 11605002, 28679108,
+-8164196, 1907502, 4145180, 10103911, -10685342, 36284420, -3381213, 2552821, 2964601, -18075370,
+-16694001, -28064390, -11457899, 13144211, -5188858, 5661304, 5916855, 23667418, 4159139, 2329483,
+1529545, 17512730, 10122701, -11657615, 19354196, -20689932, 5367636, -5153961, -18893024, 10567230,
+5502927, 13066364, -3176665, -29586420, 2770791, -19878720, -17022030, 5051419, 4677220, 8086887,
+-4576825, 5825587, -471373, -10087268, 16618302, -2585034, -4664335, -6379100, -10563472, -9560597,
+6542846, -12030740, 3721052, -7618735, -4547297, -3165391, 16549583, -2855617, 17745194, 10819023,
+-3506304, 5916318, 6800007, 12345883, -7267622, -10897943, 2756295, 7520488, 10307385, 16338056,
+-16306380, -16370268, 8469139, 6273874, 20779052, -8917963, -77846, 10462003, 1433982, 3559991,
+-2166811, 13692893, 17551384, 8366060, -468151, 11163157, 35304632, -6257768, -8097624, 13782550,
+425202, 21051246, 6620155, 10682657, 13063143, -1958505, 9824201, 24532316, -4075387, -25371982,
+21351356, 7822209, -7245610, 5579700, -36595804, -15721728, -2936147, 29851096, 11586211, -33578056,
+3466576, -4269198, 1004486, 8050916, -3816079, -16173773, 514322, -572304, 13961865, 33342904,
+-7145752, 12343199, 18453326, 1476932, -7720741, -2817499, 6131603, 33461554, -2578054, 369904,
+23550916, -7802345, 4954782, 2680060, -2323041, -3982509, 7699266, -25718264, -986769, 11779485,
+18917720, 24930674, -20036022, 3670050, 18126910, 1761474, 35334696, -10449119, -20033874, 5616207,
+25182466, 7967701, -22538378, -6430640, 4336843, 3310883, 9939091, -26701274, 1868848, 4964446,
+-8152385, -18169322, -21286394, 9036074, -7804493, 2687576, -863288, -18587544, -25950730, 9515500,
+1630477, -19494856, -10438381, -10722386, 11639361, -32825362, -17177184, 18511846, -26332982, 19603304,
+-7827041, 18683108, 1524713, 9673877, -19549618, -3063922, -18415210, 19428284, 10812043, 25880400,
+20840792, -11176579, 5266704, 20141250, 12686260, 9535901, 8648990, -19818590, -3639985, 7565048,
+3076270, 9201431, -21774410, -18830210, 12233141, 33601140, 6439767, -13052406, 23828478, 4850629,
+15537044, 2198487, 4416837, -21253646, -18429168, -1116692, 2073932, -36125508, 4558571, -8606578,
+-8590, 9465034, -11726871, 6777459, 29028610, 1335198, -42528768, -33440616, -3339874, -11379516,
+-9144522, -1915555, 9995463, 5416491, -8924942, 10645613, 13650480, 8872866, -4823785, 7348152,
+-2912525, -13357885, -568009, 8255464, -30865246, -9573482, -12593381, -19426138, -4365298, 2291365,
+-6068789, -3585224, 39533564, 17566416, -10323491, -4032974, 7609609, 14169097, -19756312, -5187247,
+-8300025, 5152887, 41674604, 6434935, -20307142, 5285494, 18495740, -4051765, 17297980, 21728240,
+-11114302, 5068062, 11184632, 7440494, 658204, -3285650, -6578816, 3198677, 13130252, 6631430,
+12279848, -18158584, -27746026, -2988760, 12661027, 10990284, 9149354, -3163244, -25570088, 8336532,
+5923297, 38658464, 40799504, 9716827, -29990146, 21939230, -11289322, -30754114, -7002408, -36394480,
+-27618250, -12126303, -13197361, -28142774, 5146982, -11203422, -32231046, -29438242, 8780524, 19548544,
+-2981244, -24746528, 7639673, 1065689, 8202851, 16162499, 15549929, -18953690, 25192668, 17673254,
+2347200, 7445326, 17566954, -322659, 45689324, -31828928, -15365246, -406411, -36864240, 31082678,
+2434710, 38690140, 11580306, 9188546, 13048648, -19320910, 4434554, -39485244, -11818139, -1552094,
+-10800232, 45347340, 13143137, -10799158, -28712930, -13127031, -12299713, -16633871, -13776108, 7836705,
+-41506028, -7689602, 29075318, -2440078, -4148402, -29975650, 28876138, 15849503, -113280, -10618770,
+11864310, 7475928, -7858180, 14775761, -21788906, -4307316, -11507291, 7330973, -5682779, -11899744,
+14258218, -9912248, 5488968, 1859721, -21206938, -11242077, -3985730, -24030342, -25902948, -32015224,
+-9501005, 17051020, -12130061, -4445291, 18508624, -21857626, -20345260, 22825604, -1116155, 754304,
+17874044, 2355790, -17207786, -7067369, 5229123, 16012175, -22106196, -4005594, 24013700, 13753022,
+22940494, 15775952, -6833830, 16382079, -3189013, -29122562, 7584912, -20063402, 14051522, -6504728,
+-11960947, 30722438, 10170483, 1564979, 3307125, -7452305, 11629161, 19130322, 46912316, 41771780,
+3217468, -17692580, 8070244, 24440512, 6517076, 19047644, 13060459, 9494025, -14310831, -17470316,
+-21908092, -973884, 7770133, 15774341, 30466350, 16805134, 19467476, 12013560, 18051748, 9783399,
+17401060, -11172821, 3146601, 33789580, -1040456, 26137560, 6646999, 21259552, -32877974, -4723927,
+-9732933, -9044664, 7605314, 13387950, 23734526, 39035348, 32201518, -10770704, 5782637, -42013908,
+10474888, 10464688, 37745248, -29228326, 23990614, -7107097, -20652350, 16699907, 5325223, 14045080,
+24013162, -7010461, -29552060, 16250546, -18621904, -25936770, -11647414, 36202816, -29550986, -43157444,
+-20259898, -6525129, 25955024, -1339493, -10517301, -26351772, -5390184, 5437429, 4869419, 30153892,
+-9905268, -32413044, 1739999, -13325673, -47525960, -23382876, 60927868, 8932995, -28452010, -30229054,
+2752000, 805843, 11996381, 16208133, -22275848, -14100378, -35123704, 8156143, -13273060, -8121247,
+51634096, 11356430, -8142185, -54122492, -4417374, -28918014, 27712740, 35376572, 2720325, 27470610,
+-33490008, -12898324, -21580064, -5022965, 52480744, 66513476, 9500468, -18108656, -25044492, -48547088,
+-595927, 5810017, 56959320, 32015224, -9877351, -96372624, -51037096, 7567733, -10678362, 83348672,
+26650808, -41285912, -18422188, -73134168, -24515674, 1331977, 45365056, 47250544, 52736828, 971200,
+10951093, -7662759, 2604898, 64902324, -27047556, 46584824, -14374182, -54117124, -17808008, -58176944,
+-20193326, 64117420, 28470264, -42981884, 47602732, -260382, -12093017, -73904040, -19588272, -20260434,
+-33005214, 70752072, 896574, 31428960, -48561048, 26523570, 22744536, -22416508, 14264660, -4759898,
+12712566, -587337, 36355824, 12255152, -35439384, 20704964, 17459042, -780073, 24393266, -18869402,
+-9579925, 30144764, 21339546, 19812684, 9921374, 17118130, -53658100, 45695768, -27187680, -17822504,
+9655623, -38178500, 53974856, -16375637, 4833986, 38510824, 674847, -6899865, 20651814, 20976620,
+37769404, -10366977, -36783712, -37490768, 3033858, -14162655, 15795816, -23077934, -11995844, -15949898,
+9558987, -69647192, -402116, 49973020, 12417824, 19755238, -3798362, -6604586, 11328513, -19113678,
+-23113366, 11802033, 4393752, -23347980, -27968828, 93541168, -13938243, -32125282, 3987877, 40903656,
+-8375186, 11800960, -34781720, 11065446, 59732796, 89115736, -38505456, 27616640, -58432492, -19888382,
+-34959424, -7199439, 57677652, 57198764, 48857400, -3789772, -36165236, -25177636, 22058952, -874026,
+11772505, 28595356, 849867, 12931073, -38177428, -12685186, -21553756, -30523796, 16565152, 10009958,
+2086817, 25068114, -22487912, -3717831, 7398081, -36303212, 147640, -682900, -20073066, -11065446,
+8867497, -17280264, 32315334, -13559749, 48426832, 32602560, -22676354, -10072772, -31890132, -40871444,
+-47745540, 11756936, 22893786, 60839284, 49846852, 19058380, 31786516, 1854352, -35286916, -27885076,
+-19704236, -28787018, -4995047, 8832600, -1252520, -21679384, 4282620, -22133040, 10394895, 18422188,
+4393752, -31281320, 19245212, -18775986, -13166759, -32620276, 13502303, 3877282, -8490077, -96976600,
+-58569396, -30632244, 56043956, 29473676, 150962736, 145518320, 146964112, 152333904, 159670784, 116084376,
+59204512, 89265528, 52097416, -20622822, -45678588, -67573256, -139540272, -121853056, -129803576, -89764816,
+-94291712, -65485904, -56399364, -24784108, 6970195, -48583596, -24407762, -3721589, -4095251, -21889300,
+13099650, 46822660, 48381732, 25352656, 56700012, 74052216, 22948548, 23323820, 20432234, 74237976,
+73966320, 94747512, 101766032, 93835368, 101966280, 153218128, 67579160, 123526480, 160647344, 111155904,
+125925216, 105348032, 58730992, 70806832, 74251392, 71240624, 87949120, 90361816, 62148176, 30720828,
+42338176, 65289408, 20514912, 31168040, 6020471, 6266894, -41075992, 649614, -88445184, -116520312,
+-84060024, -98010616, -144426336, -134697152, -53810036, -116386632, -38426000, -1539746, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
{
632971,
--2012729, 393526, -3454228, -2672007, -2975876, -3445101, -5291400, 2605435, 2426657, -2637110,
-587874, 3957812, 6357089, 2251100, 2586644, -1566589, 707059, -9688909, 2893734, 299037,
--1386201, 2769180, -938987, -3627100, 3354370, 1221918, 1333587, 2476586, 3316252, 3384434,
--86436, -4323422, -194884, 4540318, 4769025, 6190122, -1454920, 6061273, 120259, -335007,
--1996086, -275952, 3360275, 1279900, -9922448, -3320547, -5809480, -277562, -387084, -3804267,
--4479114, -3420942, 1127429, -3291556, 2004139, 3149822, 3466576, -4528506, -2304787, -5123359,
--2987150, -1445257, 330176, -4853850, 4890357, 1969243, -2193655, -102542, -902480, 8402567,
-1959042, -757525, -2509335, 10535018, 805306, -955630, -133144, -1093069, -5280663, -5849209,
-5594732, 1035087, -2969433, -5145371, -2122251, -3954591, -6140193, 7887708, 1216550, 2686502,
-4292820, 11471321, -72478, 1601486, -2601140, -1321776, -1948841, -7935489, 1935420, -2627983,
-983011, 5027259, -1873143, -819802, 1386201, 260382, -1035087, -59056, -6839736, 1152662,
-62814, -2858301, 2445984, 686658, -4521527, 7175817, 504659, 736587, 7234873, -3066070,
--2769180, -7253126, -3235721, 4388383, 562641, 4692252, -2212982, -6030671, 2735894, -5660230,
--2054068, -10561325, 4482872, 3112778, 2495376, 2599529, 7317014, 1331977, -2663417, 3258807,
-6216965, -4305168, 3362423, -579284, -624381, -2564632, -805306, 3222299, 267362, 1358820,
--4187056, 1064078, -2566780, -5495948, -459562, -6480032, -7678328, -4992363, -3649649, -8645769,
-398358, -3193845, -1669132, 2513630, 9142912, 715112, -2123325, -1165547, 1495722, -303869,
-3806415, 6328635, -525597, 7117835, -820876, -612570, -860604, 3988414, -5459441, 703838,
-655519, -1491427, -325881, -3416110, -5448166, 7295002, -2567854, -718870, -1369021, 3120831,
--3595961, -3224984, 1238561, 928250, 5136244, -3754338, 4204773, -2693481, -4391604, -530965,
--1886028, 967978, 2209224, -295816, 2886755, 1235340, 2044404, -3087008, -3566970, -5814312,
--4328254, 301721, 6435472, 615791, 5143224, 1176821, -3122441, 3498251, 1387811, -4264366,
-6612102, 955630, -7225209, -8031052, -6932077, 1394791, 911070, 5804649, -4442070, 5981279,
--2966212, -1454383, -9417790, -706522, 753767, -3363496, -447213, 5035313, 4954245, 7172059,
--1639604, -1176284, 4657355, 2060511, 4201552, -9890236, 9885404, -2148558, 11811, 1503239,
--1038308, -109522, -714575, -697395, 6208912, -192200, 8106751, -1371705, -3074660, -6597607,
-953483, -2975339, -2429341, 4589173, 3725884, 4809290, 365609, 642098, -6815576, -5005785,
-148176, 6481643, 2448668, -728534, 2388539, -2554969, 7075959, -233002, -5617281, -7322383,
--2384244, 8553427, 6630893, 6670621, 3325915, 472983, -6670084, -2872260, -627065, -3804804,
-4711579, -401043, -1542430, 4077535, -9530532, 3422015, -785979, 2857227, -263067, 2275796,
--2535641, -4072703, -1001264, -3095598, 1253594, 5718749, 1845225, 458488, -2514703, -12406013,
--8648454, -12348, 3367254, 4696010, -48318, 1152662, -2096481, 4653597, 1636919, 3777424,
--5839545, 5487358, 2685965, -5705327, 1905355, 5707475, -630286, 2011118, 553514, 5195837,
--4189741, 3182034, -848793, -425202, -5087926, 531502, 4710506, -2991982, -2706903, -4194036,
-5577015, -339839, 777926, -4423817, -13688598, -3635153, 1557463, 1471563, 4508642, -3291556,
--2602213, -1767379, -1316408, -4020626, -306553, -3599183, 8262444, 3335579, 6641093, -6920803,
--1904818, -2693481, 6156836, -1716376, -1756642, -5207648, 2887292, 259309, -4294431, 6099928,
-1130113, 1203128, 5819681, 2050310, 3502009, -2784213, 2206540, 243203, -1497333, 6040872,
-4530654, -438624, -8247948, -10920491, -8506183, 3150359, -47245, -4710506, -1288490, 566936,
--1133871, 12322261, 2066416, -8891119, -2427194, -2656974, 384400, -4189741, 6900402, -5210869,
--6888054, 6366216, -2747169, 1737314, 1626182, -2934000, -8099772, 1048509, -4348118, -3807489,
--4001299, -521302, 6185290, -899796, -1483911, 9200357, 1631014, 1370095, -11985643, -1380832,
-6299644, 7389491, -4173098, 1960116, 967978, -11829951, -1618129, -790811, -1234803, 2889976,
-108448, -6678138, 849330, -5358509, 5067525, -1878511, 6544457, 1217623, -7412577, 3235721,
-14132053, -5513128, 285078, -10495289, 2780455, 8804683, -15382962, 2371896, -510027, -938987,
-10336913, 1514513, 4513474, 7668127, -9437117, -2639258, -7261716, 3718905, 3842385, 8290361,
-15464030, 2641942, -12233141, -958315, -3272228, -1087701, -5449240, 167504, -854699, 6081137,
-4444755, 1857037, -715649, 367757, -2144263, -1247688, 6497212, -2102387, -1226750, 5196374,
--962610, 3101503, -839666, 6571837, -5282810, -9691594, 11821361, -629213, 2531346, -9077413,
-307627, -2709588, 13127568, 2199560, 5727876, -1211181, 5026186, 3710852, -12626130, -1867774,
--7276212, -5845988, 401043, 8665097, 649077, -1682017, 12929462, -1370095, -8005282, -5724655,
--4410932, 6607271, 19737522, 2684, 5135171, 1494649, -6914361, -1368484, -365609, 6038187,
-8708583, 879931, 6913824, 6590091, -12552579, 284542, -3989488, -15205258, 3144990, -1178432,
-4963372, 3830574, 14134201, 3326452, -3133179, 3886946, 10730439, 12708271, 4699231, 9074729,
-8484708, -6457484, -5713917, -10718091, -12403329, 1735167, 4821638, -9756555, -7605850, -128312,
--12137578, -9332427, 4589173, 2015413, -5589363, -3049964, -8079371, 6851547, 4332549, 10987063,
-19699404, -1781338, -6032282, -1694902, -10225780, 332323, -8040716, -8067023, 9935870, 1628330,
-1078574, -12741557, 13301514, 3173444, -8818642, -2260764, 6693707, 942208, 1200980, 243203,
-826781, 4468377, -6812355, 8111583, -134755, -4870493, -1792612, -8689256, 1140851, -8931921,
--8638790, 7719130, 7201587, -7002944, -12147778, 3520263, -5944235, -382789, -3309272, 4454955,
--3398393, 5657009, -5858336, -6583111, 7938174, -2506650, -1770063, 4455492, -6465537, -6975027,
-8005819, 10515691, 255551, -726386, 3663607, -9199283, 15634755, -9627706, 1203128, 7370701,
--3464965, 6874632, 8468065, 2696703, -8741332, 9434433, -1343251, 3506304, -6838662, -1354525,
--13070659, 4463545, -7736847, 2954938, -13456669, 7888781, -9818832, -6954626, 5726265, 7794292,
-2704756, 825707, 392990, -8542690, -7828115, -5077188, 20643224, 11262478, -3179887, -19099720,
--2636036, 5335960, 11148661, -6302865, 947040, -13197898, -4494147, -1646583, 3455301, 1919314,
--2941516, -246961, 5786395, -6527814, -371515, -7435662, 4016331, 4864051, 14170171, 6040872,
--6985765, 2931315, -3946001, -10759430, -1466195, 6165963, 840740, 17558364, -13351443, -2226404,
-2991982, 7767985, 4097399, 10203769, 2091649, -12770548, 8135205, -10857140, -11158325, 23085,
--875636, 8311836, 10854456, 9534827, 14501420, 3182571, -14706505, 15888695, 8986682, -6917582,
-12589623, -1986959, 1613297, -11342472, -3711389, -3562675, -4788889, 10050760, -17532594, -4414690,
--8218957, -8312373, 1487132, 8006356, -3992709, -10645613, -10758893, -14538464, -14181445, -7741679,
--2429341, 5554467, -11161009, -15016279, -8574365, -4250944, -7143605, -5379984, 12491912, -7747048,
-1085553, 5957120, -11521250, -7530152, -7823820, 11584601, -5443334, 7219840, 17551384, -2622078,
-3762391, 775778, -5690295, -8152922, -5171141, 7279433, -1604170, 8412767, 145492, 5980742,
-1142461, -13492640, 14359149, -7639136, -2967286, 24346558, 16670379, 10742787, -7520488, -18896246,
--4059281, 10237591, -16313360, -10123238, 1175210, 12695923, 10507637, 7057168, -9073655, 6733435,
--1804423, 6735046, -1082869, 18719614, 12568148, -1714766, -17008070, -2593624, 14494441, 10806138,
-1410360, 22865332, 11621108, -5485210, 947040, 891743, -1821066, -7329899, -8105140, -2166274,
--24525338, 6496675, -7736310, 476741, 140660, 5928666, 10557566, -500364, 3608310, -12136504,
-9221295, -4887136, 18030272, -365072, 3566434, -41938744, -592169, 10221485, 6880001, 10911901,
--2769180, -12316892, 7678328, 1436667, -8137890, 8177618, 3170760, -9889699, 1523640, -470836,
-4597226, -4215511, -13582297, -16027207, 936303, -6398965, 6701223, 4315369, 4001299, 4641786,
--16377247, -7114077, -17178796, -28140088, 4722317, 9508521, 10279467, 81604, 23474680, -16667157,
-5703717, 3053185, -4442607, -14781130, -5895380, -8439074, 10152766, -4406100, -8721468, -14993731,
--1051193, -5565741, -2508261, -11290932, 6364605, -719407, -4894115, 6070400, 8114267, 9162776,
--11454678, 21719112, 1746441, -3052111, -12866111, -12428562, -2078227, -1534914, -12498355, -13402982,
--9880572, 8887361, -5486821, 14660871, 5190468, 24369108, 8869644, 9413495, -2492692, 13229036,
--1617055, 3429532, 19025094, -5243082, 7363722, -21676700, -27361090, 6569690, -542777, -17342542,
-1946694, 999654, -23366232, 7458211, -6191732, -4082367, -8444979, 9972914, -7733089, 1451162,
-251256, 5523865, 1393180, -11944841, 9350681, -256624, 4946192, -14524506, -20430622, -12965969,
-4545149, 16942572, 22222698, -708133, 5900748, 13921600, 11471321, -1305670, -28330678, 19195282,
--2003602, 5087926, -5891622, 9714142, -859530, -12462384, 3249680, 21980568, 3176128, -14879914,
-12598750, 8884677, 5719286, -11311870, 11494943, 8415988, 662499, 13750875, -6058052, 3373697,
-22304838, 16159814, 159988, 4790499, 10625212, -21978958, -4944581, -1884954, -4025458, -19367082,
-4103841, 5130876, 304943, -15188078, -1074816, -25607132, 418222, -18497888, -4530117, 8541079,
--8706972, -11496554, -9873593, 4599910, 3084860, -10704132, 2558190, -4351339, 10800769, -7183870,
--8913131, 5638755, 9680319, -1911261, 2985539, 3643743, -29560650, -1436130, -4558034, -14703284,
--1455457, 17044578, 2047089, -5566278, -6263136, 12904766, 3386582, 9689983, -23827942, 9459129,
--24712704, -31876174, -18690088, 144955, -15770046, 15355582, -4010426, -21800718, 472983, -6394670,
-3980361, 2709588, -3637301, -3802120, 14807973, -5200132, 6386617, -8554501, -6199249, 20551418,
--6101538, -3613141, 551903, 3819300, 14568529, -28336584, -630286, 13463649, 15289547, 12084427,
-2961917, -6040872, 29228864, 8391829, 10052908, 9831180, 6206228, -5049808, 1430224, 15394237,
-6570226, -12757127, 7408282, 29272350, -14796699, 19890530, 8938901, -33163590, 9004399, 20432770,
--1095217, 8581345, 1120450, -25414396, 13518410, 29138668, 2938295, 19446538, -11249593, 17058000,
-16252693, -1657857, -1563368, 15509664, 9967545, -23222352, 23019414, -6751689, -4072166, 11895986,
--5672041, -9574019, -9302362, 1061394, 1192390, -9198746, -17808546, 42027864, 19998978, -47840568,
--20471962, 5678484, -8546985, 14523969, 15929497, 18207976, 19673634, -11853573, 37743100, -5199595,
-443992, -11961484, 13899051, 19785304, -14369887, -15222438, -3844533, -8517994, 1180042, 8250096,
-663036, -9352291, -4278861, 16357383, -1777580, 8568460, 1400159, 19575924, 27897960, 11402064,
--14190572, -31391380, -3212099, -4799089, 3077344, -6765647, 10034117, 18403934, 1073205, -5914707,
--15164456, 35681516, 30074972, -3377992, 14406394, -7638600, -11733314, -33018098, 18090402, -15022185,
--4181688, -286152, -11100343, 6637872, 20147692, 3904125, -9709310, 10570451, -4803921, -13183402,
-20601348, 5030481, -29934312, 38320236, -26063472, -12978317, 13961328, 15533286, 11923366, 703838,
--13116293, 1275068, 19343996, 5467494, -25621628, -20946018, -4675072, 32249836, 3707094, -15693274,
--41453952, -11739219, -1535451, 9831717, 29151554, 21966074, -2669859, 220117, 19353660, 15367393,
-1169305, 4208531, -55925308, -35555348, -16830904, -27842126, 2942590, -15501611, 25500832, -5652177,
--1389959, -41876, -9461276, -11378979, 18698140, 11384885, 7038378, -2423972, -7949985, -7563438,
-9694815, -20044612, -6863358, 3757560, -6273337, -9645960, 9186935, -29001766, -40096740, 9947144,
-13576392, 16102369, -23045720, -12444668, 14063334, 5275294, -38985420, -34735012, 3006477, -16669305,
--16630650, 6788733, -31296890, 16608102, -11559368, 13693966, 13762686, -7724499, -17301202, -41671384,
--13923747, -12333535, 24182276, -20040318, -12880607, 7660611, 17037598, 22434762, -3226594, -31104154,
-14353244, -4983773, -12366821, -26847840, 8360691, 10975789, -38810936, 14494978, 14429480, 35099548,
-3680250, -9186935, 2674154, -43643312, -12109660, -5546951, 1046898, 7669738, -14338211, 26320096,
-11116986, 32608466, -6124087, 28671592, 19013284, 11221139, 26786638, 13148506, 17821430, 22208202,
-1411434, -29438242, -27222576, 5502927, 32041530, 22746146, -41785200, -1306207, -6790344, -5998996,
--4103841, -29258928, 7769059, -20833812, 18975166, -13923747, 42458436, -11097122, -60481192, -6408628,
--20813948, 12113955, 9002251, 17342004, 39249560, 8872329, -5557688, 21620866, -13077102, 44021268,
-6856379, 29424820, 13042205, 2602213, -12261595, -10333154, 70567920, -129386, -52116208, -11185705,
-36235564, -26365730, -1173063, 20314658, 8103530, -40814000, -16008954, -46450608, 6543920, 41573672,
--31042950, -28244778, 26575648, 13035763, -47399260, -44051868, 13393856, 2462627, 5657546, 15127412,
--2728378, -13253732, -7689602, 28230820, -21223580, 34813932, 4640176, -8303783, 6355478, 19972134,
--1229971, -6279779, -38563436, -16690243, 2863670, -20374252, 15917686, 25366076, 443992, 3779571,
--28208808, 31304942, -12758737, -14875082, 24334210, -10691784, -1686848, -19426674, -3730716, -13979045,
--47866336, 14795625, -7200513, 33068026, 41602664, -1822140, -10140418, -29056528, -11256572, -9166534,
-38999912, -41206452, -30840012, -67431520, -1588601, -29164976, 4108673, 20547124, -16088411, -5968931,
-40499396, 25948582, 15480673, 48318, -3851512, 29708826, -44307956, -7297687, -83752, -7471096,
-5382131, 37666864, -27004606, 7903814, -7707319, -16516834, -11501386, 58158688, -5689221, 27424976,
--21516712, 38998840, -11841762, -1589138, 24682104, 21620328, 59340880, 549219, 11819213, 6198175,
--21591338, 27212376, 11669426, -19362786, 31207232, -14051522, 38658464, 25438018, -5845451, 21879638,
-3815542, 20308216, 7239704, 35881232, -20374252, 16907676, -35497368, -11577621, 15729244, 39115340,
-1104344, 1379221, 20649666, -2053531, -10846940, -51351704, -27520002, 6582038, -18129594, -2787434,
-18781892, -44922672, 29589104, -3685619, 34637300, -16688632, -25996364, -6844031, 84444424, 16719234,
--70302176, 11359115, 22259204, 3033321, 83746496, -6320581, -55638616, 59978144, -17333414, -5129265,
-70184600, -8130373, 46377592, 6557342, -40179420, -37044, 45335528, 5752572, 6224482, -1919850,
--60213296, -3600256, 8388608, -21256330, -7240241, -61324080, 38628936, 61428768, -27375584, 9495099,
--46836080, -133491344, -26514980, 7156490, 67432064, 58204324, -56927108, -49095236, -51241644, -40502080,
--30073362, 36464808, -7009924, 79249664, 52194592, -14893336, -65695820, -161201936, -105814576, 8188355,
-178984176, 137766976, 24132348, -69751344, -178050016, -180537344, -14219563, 106435192, 162301440, 179919936,
-17362942, -57139172, -74480104, -96471944, -88790392, 6618545, 59248536, 113466592, 76251776, 62712428,
--82299088, -98407368, -117955368, -139525776, 13943074, 168471696, 163601744, 34133180, -61911416, -157148016,
--208972704, -69584912, 13150116, 76899776, 185250528, 69302520, -4307316, -104345160, -89848568, -36695664,
-36417564, 71912784, 119060792, -15982647, 28919626, 22203370, -51009180, 510027, 26201448, -21131776,
-28949690, -1255204, -5373541, -2173254, 5771899, 21932788, -8748312, 25848724, 17557290, 10439455,
-11635603, 8767102, -2381023, -15035607, 24139864, -511101, 14659797, -9037685, 13022878, -4754529,
--2076617, 8736500, -12210592, -12917651, 1656784, -5711770, 19441170, 19152332, -18037252, 8595303,
--10846940, 11912092, 6979, 7700340, 2794413, 10075993, -12945568, 8440148, -14864882, -6695317,
--2301566, -2022930, 11506217, -22647900, -4677757, -9582609, -20095078, -2153926, -8061117, 4338991,
-18615998, -6067178, -26416196, 3826816, 16028281, 31335008, -1562294, 2470680, -17195438, -13243532,
-14740865, 1175210, -5468030, 430570, 26240102, 11692512, 8942659, 14721537, 25309168, -23469312,
-3491809, 4629975, -17569100, 46506444, 82949240, 5957657, -52567716, 16939888, -3011846, 65376920,
-32224602, 64243584, -5128191, -32069448, -7428683, 13434658, 28449326, 20419348, -11094437, 1056025,
-12656195, 7406134, 26927834, -19180788, 5372467, -25501368, -2959233, -711354, 7280507, 11680164,
-3794604, -11486890, 20854750, -2894271, -16549046, 22880902, -3092377, -9631464, 7363185, -4627291,
-19650550, 28669980, 1745367, 6701223, -8981313, -7309498, 18233746, 11394011, 15287399, 1763621,
--7980586, -19757386, -18126910, -21914534, 17780628, 17300128, 19089520, 25784836, 29864518, 11402601,
-2683818, -26097832, 16587164, -3674882, -21524228, 27179626, -749472, 17583596, 11100343, -29072634,
-9326521, -9186935, 7744900, 18357764, 5627481, -24103894, -13885092, -13422310, -29577292, -64042796,
-3663607, 90122912, 117629488, 102159552, 69261720, -2511482, 3453154, -51382304, -62596464, -103194104,
--79272752, -82841328, -28030568, 7259569, 25929792, 45681272, 111720688, 94090384, 62000536, 20554640,
--11318849, -40837084, -31834298, -42526080, -55497420, -30178050, -32463510, -38227356, -19364396, -25301652,
-3544959, 17300128, 12998182, 47659104, 42467564, 38869456, 23725400, 29214904, 16619913, 35012572,
-6327024, 30084098, -1049583, -9049496, -56550224, -24577950, -67792304, -76883136, -87505128, -67726264,
--52930104, -19244138, 9436580, 46834472, 48215840, 38823820, 80172544, 65844532, 68587408, 64836288,
-58298276, 22283900, 35588636, -19765976, -46177876, -46452220, -106357888, -104589968, -103832448, -108328736,
--93204552, -35801772, -24256364, 14690936, 46365784, 49877992, 21386790, 10043244, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, },
+-2012729, 393526, -3454228, -2672007, -2975876, -3445101, -5291400, 2605435, 2426657, -2637110,
+587874, 3957812, 6357089, 2251100, 2586644, -1566589, 707059, -9688909, 2893734, 299037,
+-1386201, 2769180, -938987, -3627100, 3354370, 1221918, 1333587, 2476586, 3316252, 3384434,
+-86436, -4323422, -194884, 4540318, 4769025, 6190122, -1454920, 6061273, 120259, -335007,
+-1996086, -275952, 3360275, 1279900, -9922448, -3320547, -5809480, -277562, -387084, -3804267,
+-4479114, -3420942, 1127429, -3291556, 2004139, 3149822, 3466576, -4528506, -2304787, -5123359,
+-2987150, -1445257, 330176, -4853850, 4890357, 1969243, -2193655, -102542, -902480, 8402567,
+1959042, -757525, -2509335, 10535018, 805306, -955630, -133144, -1093069, -5280663, -5849209,
+5594732, 1035087, -2969433, -5145371, -2122251, -3954591, -6140193, 7887708, 1216550, 2686502,
+4292820, 11471321, -72478, 1601486, -2601140, -1321776, -1948841, -7935489, 1935420, -2627983,
+983011, 5027259, -1873143, -819802, 1386201, 260382, -1035087, -59056, -6839736, 1152662,
+62814, -2858301, 2445984, 686658, -4521527, 7175817, 504659, 736587, 7234873, -3066070,
+-2769180, -7253126, -3235721, 4388383, 562641, 4692252, -2212982, -6030671, 2735894, -5660230,
+-2054068, -10561325, 4482872, 3112778, 2495376, 2599529, 7317014, 1331977, -2663417, 3258807,
+6216965, -4305168, 3362423, -579284, -624381, -2564632, -805306, 3222299, 267362, 1358820,
+-4187056, 1064078, -2566780, -5495948, -459562, -6480032, -7678328, -4992363, -3649649, -8645769,
+398358, -3193845, -1669132, 2513630, 9142912, 715112, -2123325, -1165547, 1495722, -303869,
+3806415, 6328635, -525597, 7117835, -820876, -612570, -860604, 3988414, -5459441, 703838,
+655519, -1491427, -325881, -3416110, -5448166, 7295002, -2567854, -718870, -1369021, 3120831,
+-3595961, -3224984, 1238561, 928250, 5136244, -3754338, 4204773, -2693481, -4391604, -530965,
+-1886028, 967978, 2209224, -295816, 2886755, 1235340, 2044404, -3087008, -3566970, -5814312,
+-4328254, 301721, 6435472, 615791, 5143224, 1176821, -3122441, 3498251, 1387811, -4264366,
+6612102, 955630, -7225209, -8031052, -6932077, 1394791, 911070, 5804649, -4442070, 5981279,
+-2966212, -1454383, -9417790, -706522, 753767, -3363496, -447213, 5035313, 4954245, 7172059,
+-1639604, -1176284, 4657355, 2060511, 4201552, -9890236, 9885404, -2148558, 11811, 1503239,
+-1038308, -109522, -714575, -697395, 6208912, -192200, 8106751, -1371705, -3074660, -6597607,
+953483, -2975339, -2429341, 4589173, 3725884, 4809290, 365609, 642098, -6815576, -5005785,
+148176, 6481643, 2448668, -728534, 2388539, -2554969, 7075959, -233002, -5617281, -7322383,
+-2384244, 8553427, 6630893, 6670621, 3325915, 472983, -6670084, -2872260, -627065, -3804804,
+4711579, -401043, -1542430, 4077535, -9530532, 3422015, -785979, 2857227, -263067, 2275796,
+-2535641, -4072703, -1001264, -3095598, 1253594, 5718749, 1845225, 458488, -2514703, -12406013,
+-8648454, -12348, 3367254, 4696010, -48318, 1152662, -2096481, 4653597, 1636919, 3777424,
+-5839545, 5487358, 2685965, -5705327, 1905355, 5707475, -630286, 2011118, 553514, 5195837,
+-4189741, 3182034, -848793, -425202, -5087926, 531502, 4710506, -2991982, -2706903, -4194036,
+5577015, -339839, 777926, -4423817, -13688598, -3635153, 1557463, 1471563, 4508642, -3291556,
+-2602213, -1767379, -1316408, -4020626, -306553, -3599183, 8262444, 3335579, 6641093, -6920803,
+-1904818, -2693481, 6156836, -1716376, -1756642, -5207648, 2887292, 259309, -4294431, 6099928,
+1130113, 1203128, 5819681, 2050310, 3502009, -2784213, 2206540, 243203, -1497333, 6040872,
+4530654, -438624, -8247948, -10920491, -8506183, 3150359, -47245, -4710506, -1288490, 566936,
+-1133871, 12322261, 2066416, -8891119, -2427194, -2656974, 384400, -4189741, 6900402, -5210869,
+-6888054, 6366216, -2747169, 1737314, 1626182, -2934000, -8099772, 1048509, -4348118, -3807489,
+-4001299, -521302, 6185290, -899796, -1483911, 9200357, 1631014, 1370095, -11985643, -1380832,
+6299644, 7389491, -4173098, 1960116, 967978, -11829951, -1618129, -790811, -1234803, 2889976,
+108448, -6678138, 849330, -5358509, 5067525, -1878511, 6544457, 1217623, -7412577, 3235721,
+14132053, -5513128, 285078, -10495289, 2780455, 8804683, -15382962, 2371896, -510027, -938987,
+10336913, 1514513, 4513474, 7668127, -9437117, -2639258, -7261716, 3718905, 3842385, 8290361,
+15464030, 2641942, -12233141, -958315, -3272228, -1087701, -5449240, 167504, -854699, 6081137,
+4444755, 1857037, -715649, 367757, -2144263, -1247688, 6497212, -2102387, -1226750, 5196374,
+-962610, 3101503, -839666, 6571837, -5282810, -9691594, 11821361, -629213, 2531346, -9077413,
+307627, -2709588, 13127568, 2199560, 5727876, -1211181, 5026186, 3710852, -12626130, -1867774,
+-7276212, -5845988, 401043, 8665097, 649077, -1682017, 12929462, -1370095, -8005282, -5724655,
+-4410932, 6607271, 19737522, 2684, 5135171, 1494649, -6914361, -1368484, -365609, 6038187,
+8708583, 879931, 6913824, 6590091, -12552579, 284542, -3989488, -15205258, 3144990, -1178432,
+4963372, 3830574, 14134201, 3326452, -3133179, 3886946, 10730439, 12708271, 4699231, 9074729,
+8484708, -6457484, -5713917, -10718091, -12403329, 1735167, 4821638, -9756555, -7605850, -128312,
+-12137578, -9332427, 4589173, 2015413, -5589363, -3049964, -8079371, 6851547, 4332549, 10987063,
+19699404, -1781338, -6032282, -1694902, -10225780, 332323, -8040716, -8067023, 9935870, 1628330,
+1078574, -12741557, 13301514, 3173444, -8818642, -2260764, 6693707, 942208, 1200980, 243203,
+826781, 4468377, -6812355, 8111583, -134755, -4870493, -1792612, -8689256, 1140851, -8931921,
+-8638790, 7719130, 7201587, -7002944, -12147778, 3520263, -5944235, -382789, -3309272, 4454955,
+-3398393, 5657009, -5858336, -6583111, 7938174, -2506650, -1770063, 4455492, -6465537, -6975027,
+8005819, 10515691, 255551, -726386, 3663607, -9199283, 15634755, -9627706, 1203128, 7370701,
+-3464965, 6874632, 8468065, 2696703, -8741332, 9434433, -1343251, 3506304, -6838662, -1354525,
+-13070659, 4463545, -7736847, 2954938, -13456669, 7888781, -9818832, -6954626, 5726265, 7794292,
+2704756, 825707, 392990, -8542690, -7828115, -5077188, 20643224, 11262478, -3179887, -19099720,
+-2636036, 5335960, 11148661, -6302865, 947040, -13197898, -4494147, -1646583, 3455301, 1919314,
+-2941516, -246961, 5786395, -6527814, -371515, -7435662, 4016331, 4864051, 14170171, 6040872,
+-6985765, 2931315, -3946001, -10759430, -1466195, 6165963, 840740, 17558364, -13351443, -2226404,
+2991982, 7767985, 4097399, 10203769, 2091649, -12770548, 8135205, -10857140, -11158325, 23085,
+-875636, 8311836, 10854456, 9534827, 14501420, 3182571, -14706505, 15888695, 8986682, -6917582,
+12589623, -1986959, 1613297, -11342472, -3711389, -3562675, -4788889, 10050760, -17532594, -4414690,
+-8218957, -8312373, 1487132, 8006356, -3992709, -10645613, -10758893, -14538464, -14181445, -7741679,
+-2429341, 5554467, -11161009, -15016279, -8574365, -4250944, -7143605, -5379984, 12491912, -7747048,
+1085553, 5957120, -11521250, -7530152, -7823820, 11584601, -5443334, 7219840, 17551384, -2622078,
+3762391, 775778, -5690295, -8152922, -5171141, 7279433, -1604170, 8412767, 145492, 5980742,
+1142461, -13492640, 14359149, -7639136, -2967286, 24346558, 16670379, 10742787, -7520488, -18896246,
+-4059281, 10237591, -16313360, -10123238, 1175210, 12695923, 10507637, 7057168, -9073655, 6733435,
+-1804423, 6735046, -1082869, 18719614, 12568148, -1714766, -17008070, -2593624, 14494441, 10806138,
+1410360, 22865332, 11621108, -5485210, 947040, 891743, -1821066, -7329899, -8105140, -2166274,
+-24525338, 6496675, -7736310, 476741, 140660, 5928666, 10557566, -500364, 3608310, -12136504,
+9221295, -4887136, 18030272, -365072, 3566434, -41938744, -592169, 10221485, 6880001, 10911901,
+-2769180, -12316892, 7678328, 1436667, -8137890, 8177618, 3170760, -9889699, 1523640, -470836,
+4597226, -4215511, -13582297, -16027207, 936303, -6398965, 6701223, 4315369, 4001299, 4641786,
+-16377247, -7114077, -17178796, -28140088, 4722317, 9508521, 10279467, 81604, 23474680, -16667157,
+5703717, 3053185, -4442607, -14781130, -5895380, -8439074, 10152766, -4406100, -8721468, -14993731,
+-1051193, -5565741, -2508261, -11290932, 6364605, -719407, -4894115, 6070400, 8114267, 9162776,
+-11454678, 21719112, 1746441, -3052111, -12866111, -12428562, -2078227, -1534914, -12498355, -13402982,
+-9880572, 8887361, -5486821, 14660871, 5190468, 24369108, 8869644, 9413495, -2492692, 13229036,
+-1617055, 3429532, 19025094, -5243082, 7363722, -21676700, -27361090, 6569690, -542777, -17342542,
+1946694, 999654, -23366232, 7458211, -6191732, -4082367, -8444979, 9972914, -7733089, 1451162,
+251256, 5523865, 1393180, -11944841, 9350681, -256624, 4946192, -14524506, -20430622, -12965969,
+4545149, 16942572, 22222698, -708133, 5900748, 13921600, 11471321, -1305670, -28330678, 19195282,
+-2003602, 5087926, -5891622, 9714142, -859530, -12462384, 3249680, 21980568, 3176128, -14879914,
+12598750, 8884677, 5719286, -11311870, 11494943, 8415988, 662499, 13750875, -6058052, 3373697,
+22304838, 16159814, 159988, 4790499, 10625212, -21978958, -4944581, -1884954, -4025458, -19367082,
+4103841, 5130876, 304943, -15188078, -1074816, -25607132, 418222, -18497888, -4530117, 8541079,
+-8706972, -11496554, -9873593, 4599910, 3084860, -10704132, 2558190, -4351339, 10800769, -7183870,
+-8913131, 5638755, 9680319, -1911261, 2985539, 3643743, -29560650, -1436130, -4558034, -14703284,
+-1455457, 17044578, 2047089, -5566278, -6263136, 12904766, 3386582, 9689983, -23827942, 9459129,
+-24712704, -31876174, -18690088, 144955, -15770046, 15355582, -4010426, -21800718, 472983, -6394670,
+3980361, 2709588, -3637301, -3802120, 14807973, -5200132, 6386617, -8554501, -6199249, 20551418,
+-6101538, -3613141, 551903, 3819300, 14568529, -28336584, -630286, 13463649, 15289547, 12084427,
+2961917, -6040872, 29228864, 8391829, 10052908, 9831180, 6206228, -5049808, 1430224, 15394237,
+6570226, -12757127, 7408282, 29272350, -14796699, 19890530, 8938901, -33163590, 9004399, 20432770,
+-1095217, 8581345, 1120450, -25414396, 13518410, 29138668, 2938295, 19446538, -11249593, 17058000,
+16252693, -1657857, -1563368, 15509664, 9967545, -23222352, 23019414, -6751689, -4072166, 11895986,
+-5672041, -9574019, -9302362, 1061394, 1192390, -9198746, -17808546, 42027864, 19998978, -47840568,
+-20471962, 5678484, -8546985, 14523969, 15929497, 18207976, 19673634, -11853573, 37743100, -5199595,
+443992, -11961484, 13899051, 19785304, -14369887, -15222438, -3844533, -8517994, 1180042, 8250096,
+663036, -9352291, -4278861, 16357383, -1777580, 8568460, 1400159, 19575924, 27897960, 11402064,
+-14190572, -31391380, -3212099, -4799089, 3077344, -6765647, 10034117, 18403934, 1073205, -5914707,
+-15164456, 35681516, 30074972, -3377992, 14406394, -7638600, -11733314, -33018098, 18090402, -15022185,
+-4181688, -286152, -11100343, 6637872, 20147692, 3904125, -9709310, 10570451, -4803921, -13183402,
+20601348, 5030481, -29934312, 38320236, -26063472, -12978317, 13961328, 15533286, 11923366, 703838,
+-13116293, 1275068, 19343996, 5467494, -25621628, -20946018, -4675072, 32249836, 3707094, -15693274,
+-41453952, -11739219, -1535451, 9831717, 29151554, 21966074, -2669859, 220117, 19353660, 15367393,
+1169305, 4208531, -55925308, -35555348, -16830904, -27842126, 2942590, -15501611, 25500832, -5652177,
+-1389959, -41876, -9461276, -11378979, 18698140, 11384885, 7038378, -2423972, -7949985, -7563438,
+9694815, -20044612, -6863358, 3757560, -6273337, -9645960, 9186935, -29001766, -40096740, 9947144,
+13576392, 16102369, -23045720, -12444668, 14063334, 5275294, -38985420, -34735012, 3006477, -16669305,
+-16630650, 6788733, -31296890, 16608102, -11559368, 13693966, 13762686, -7724499, -17301202, -41671384,
+-13923747, -12333535, 24182276, -20040318, -12880607, 7660611, 17037598, 22434762, -3226594, -31104154,
+14353244, -4983773, -12366821, -26847840, 8360691, 10975789, -38810936, 14494978, 14429480, 35099548,
+3680250, -9186935, 2674154, -43643312, -12109660, -5546951, 1046898, 7669738, -14338211, 26320096,
+11116986, 32608466, -6124087, 28671592, 19013284, 11221139, 26786638, 13148506, 17821430, 22208202,
+1411434, -29438242, -27222576, 5502927, 32041530, 22746146, -41785200, -1306207, -6790344, -5998996,
+-4103841, -29258928, 7769059, -20833812, 18975166, -13923747, 42458436, -11097122, -60481192, -6408628,
+-20813948, 12113955, 9002251, 17342004, 39249560, 8872329, -5557688, 21620866, -13077102, 44021268,
+6856379, 29424820, 13042205, 2602213, -12261595, -10333154, 70567920, -129386, -52116208, -11185705,
+36235564, -26365730, -1173063, 20314658, 8103530, -40814000, -16008954, -46450608, 6543920, 41573672,
+-31042950, -28244778, 26575648, 13035763, -47399260, -44051868, 13393856, 2462627, 5657546, 15127412,
+-2728378, -13253732, -7689602, 28230820, -21223580, 34813932, 4640176, -8303783, 6355478, 19972134,
+-1229971, -6279779, -38563436, -16690243, 2863670, -20374252, 15917686, 25366076, 443992, 3779571,
+-28208808, 31304942, -12758737, -14875082, 24334210, -10691784, -1686848, -19426674, -3730716, -13979045,
+-47866336, 14795625, -7200513, 33068026, 41602664, -1822140, -10140418, -29056528, -11256572, -9166534,
+38999912, -41206452, -30840012, -67431520, -1588601, -29164976, 4108673, 20547124, -16088411, -5968931,
+40499396, 25948582, 15480673, 48318, -3851512, 29708826, -44307956, -7297687, -83752, -7471096,
+5382131, 37666864, -27004606, 7903814, -7707319, -16516834, -11501386, 58158688, -5689221, 27424976,
+-21516712, 38998840, -11841762, -1589138, 24682104, 21620328, 59340880, 549219, 11819213, 6198175,
+-21591338, 27212376, 11669426, -19362786, 31207232, -14051522, 38658464, 25438018, -5845451, 21879638,
+3815542, 20308216, 7239704, 35881232, -20374252, 16907676, -35497368, -11577621, 15729244, 39115340,
+1104344, 1379221, 20649666, -2053531, -10846940, -51351704, -27520002, 6582038, -18129594, -2787434,
+18781892, -44922672, 29589104, -3685619, 34637300, -16688632, -25996364, -6844031, 84444424, 16719234,
+-70302176, 11359115, 22259204, 3033321, 83746496, -6320581, -55638616, 59978144, -17333414, -5129265,
+70184600, -8130373, 46377592, 6557342, -40179420, -37044, 45335528, 5752572, 6224482, -1919850,
+-60213296, -3600256, 8388608, -21256330, -7240241, -61324080, 38628936, 61428768, -27375584, 9495099,
+-46836080, -133491344, -26514980, 7156490, 67432064, 58204324, -56927108, -49095236, -51241644, -40502080,
+-30073362, 36464808, -7009924, 79249664, 52194592, -14893336, -65695820, -161201936, -105814576, 8188355,
+178984176, 137766976, 24132348, -69751344, -178050016, -180537344, -14219563, 106435192, 162301440, 179919936,
+17362942, -57139172, -74480104, -96471944, -88790392, 6618545, 59248536, 113466592, 76251776, 62712428,
+-82299088, -98407368, -117955368, -139525776, 13943074, 168471696, 163601744, 34133180, -61911416, -157148016,
+-208972704, -69584912, 13150116, 76899776, 185250528, 69302520, -4307316, -104345160, -89848568, -36695664,
+36417564, 71912784, 119060792, -15982647, 28919626, 22203370, -51009180, 510027, 26201448, -21131776,
+28949690, -1255204, -5373541, -2173254, 5771899, 21932788, -8748312, 25848724, 17557290, 10439455,
+11635603, 8767102, -2381023, -15035607, 24139864, -511101, 14659797, -9037685, 13022878, -4754529,
+-2076617, 8736500, -12210592, -12917651, 1656784, -5711770, 19441170, 19152332, -18037252, 8595303,
+-10846940, 11912092, 6979, 7700340, 2794413, 10075993, -12945568, 8440148, -14864882, -6695317,
+-2301566, -2022930, 11506217, -22647900, -4677757, -9582609, -20095078, -2153926, -8061117, 4338991,
+18615998, -6067178, -26416196, 3826816, 16028281, 31335008, -1562294, 2470680, -17195438, -13243532,
+14740865, 1175210, -5468030, 430570, 26240102, 11692512, 8942659, 14721537, 25309168, -23469312,
+3491809, 4629975, -17569100, 46506444, 82949240, 5957657, -52567716, 16939888, -3011846, 65376920,
+32224602, 64243584, -5128191, -32069448, -7428683, 13434658, 28449326, 20419348, -11094437, 1056025,
+12656195, 7406134, 26927834, -19180788, 5372467, -25501368, -2959233, -711354, 7280507, 11680164,
+3794604, -11486890, 20854750, -2894271, -16549046, 22880902, -3092377, -9631464, 7363185, -4627291,
+19650550, 28669980, 1745367, 6701223, -8981313, -7309498, 18233746, 11394011, 15287399, 1763621,
+-7980586, -19757386, -18126910, -21914534, 17780628, 17300128, 19089520, 25784836, 29864518, 11402601,
+2683818, -26097832, 16587164, -3674882, -21524228, 27179626, -749472, 17583596, 11100343, -29072634,
+9326521, -9186935, 7744900, 18357764, 5627481, -24103894, -13885092, -13422310, -29577292, -64042796,
+3663607, 90122912, 117629488, 102159552, 69261720, -2511482, 3453154, -51382304, -62596464, -103194104,
+-79272752, -82841328, -28030568, 7259569, 25929792, 45681272, 111720688, 94090384, 62000536, 20554640,
+-11318849, -40837084, -31834298, -42526080, -55497420, -30178050, -32463510, -38227356, -19364396, -25301652,
+3544959, 17300128, 12998182, 47659104, 42467564, 38869456, 23725400, 29214904, 16619913, 35012572,
+6327024, 30084098, -1049583, -9049496, -56550224, -24577950, -67792304, -76883136, -87505128, -67726264,
+-52930104, -19244138, 9436580, 46834472, 48215840, 38823820, 80172544, 65844532, 68587408, 64836288,
+58298276, 22283900, 35588636, -19765976, -46177876, -46452220, -106357888, -104589968, -103832448, -108328736,
+-93204552, -35801772, -24256364, 14690936, 46365784, 49877992, 21386790, 10043244, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, },
},
{
{
-2168959,
--445603, 329102, -860067, -1518808, -3882651, 483721, -608275, -7189239, -1008244, -819265,
-2469069, 5764383, -4874788, 2117419, -3059091, 1299765, -4207458, 2139968, 1373316, -3018288,
--2754148, -4562329, 1896765, -4285841, 639413, 3762391, 2639794, 1153736, 1784559, 277562,
--3806952, 163746, -2378875, 1923072, 1250909, 1466195, 5996311, 1932735, 905164, -128849,
-2052458, -59593, 1890323, -471373, 4276177, 1480153, 1901597, 3220152, 7155416, 351114,
--1174674, 2863670, -2155537, -4983236, 2552821, -2284923, -4288525, 1119913, -1305670, 2362769,
--1137093, -1913408, -3275986, 3397856, 1266479, -198642, -3163244, -4417374, -1308891, -1005022,
-724239, -550293, -78383, 702764, 1323387, 10341208, 5574868, -671626, 3679176, 858993,
-882616, -11425150, -4894652, -5681168, 4491462, -653372, -3637837, 3988951, 4221953, 233539,
-4057670, -1706713, -73551, -271120, -2401961, -1318555, -5402532, 2793876, -8017630, 3346317,
--4148939, 3414499, 6497749, 2909304, -1153736, -1840930, 4822175, -786516, 293132, 4478041,
--4742181, -155156, -1554241, -2785286, 666257, -682900, 1073742, 4603668, 7672959, -2413772,
-216359, 6311455, 559956, 1668058, -2241436, -3520263, -437550, 1080184, -5875516, -1537061,
-3196530, 439697, 1206886, 1893544, -774168, -1806571, -1682554, -2019172, 2379949, 1974611,
--1029182, -3305514, -4138201, 2214593, 81604, -3298535, 3694746, -541166, -271120, 972810,
-933082, -900333, -3777961, -983548, -13422, -3494493, -3621731, -2102923, 8546448, -5988258,
--2523293, -4167192, -7713762, 2911451, 1271847, 346282, 6541235, 6283001, 6203544, 2067490,
--1213865, 1017907, 4664335, -1962263, 1984275, 2433636, -5604933, 7968238, 1485522, 2518998,
-5800354, -2190433, -5890548, 456877, 3911105, -2729452, -1324461, -3658239, 3888019, -30065,
--463856, -6401649, -345208, -708670, 3920232, 2119566, -3623342, 7172596, 2539400, 1567126,
-2401424, -1057636, 3886946, -1443646, 104690, -4833449, -6005975, 4854387, 3600793, 6688338,
-522912, 1908039, -5209796, -7714835, -4003983, -2196876, -2451890, -3454764, -3311957, 1820529,
--1120450, 2610803, -3198677, -869194, 1000191, 1787780, -1254131, 4429185, 809601, -7387881,
--6904160, 4044249, 906238, 5658620, -8762270, -1235877, -3497714, 933619, 10387378, 5934034,
--9133785, 3433290, 832150, -3811784, -4260608, -5182415, -8425115, 277025, 960462, -3134789,
-1440425, -1821066, 266825, 2496450, 1895154, 5369246, -4792647, 8470749, -5258651, 4898947,
-3845070, -3234110, 2211908, 362388, 3447785, -1469953, 1751810, 3187403, 979789, 443455,
--1413581, 2463701, 636729, -1199370, 5921150, -7988639, 399969, -4872641, 9373766, 3284039,
--8493835, 3147674, 10707890, -10334765, -5094368, 1137093, -1074279, -3986804, 2988224, -1469953,
-6963216, -6220724, -943282, -2143189, -810138, -504122, 6557878, -6653978, -2710661, -869731,
--7407745, 3433290, 1894081, 7009387, 1601486, 5668283, 3165391, -4946729, 531502, -3039226,
-3274376, 1378685, -5211406, 15005005, -9493488, 3167539, 15992311, -11124502, 5242008, -74088,
-5224291, -1154809, -9706089, -1869921, 8018167, 7448010, 2011118, 216896, 4097399, 2289755,
-206158, 3674882, 3449396, -2449742, 4391604, -839666, 6885907, -5085242, -8287677, 2187212,
--7198902, 2946348, 310848, -1674500, -2158758, -2908767, -4786204, 1440425, 2004139, 668404,
-1537598, 1969243, -2793876, -5920076, 5394479, 1696512, 1180579, 268972, 7838852, 2113124,
-3537443, 8521752, -4391067, 2579665, 807454, 3079492, 6057515, 5060545, -6602976, -5530844,
--974958, -2790118, -108448, 1111323, -2292439, 2547453, -4840428, 1237488, -4478577, 3754338,
-3987340, -2122251, 5488968, -2804614, 5054103, -1597191, 2937221, -3226057, 1123671, -2384244,
-2248416, -1548873, -8396661, 6248104, 5364414, 10813654, -6733435, 3979824, -8527121, -2374580,
-6621766, 5453535, -5703717, 1139240, -6739341, -179315, -8047158, 2195802, -5786932, -9069897,
--6516003, 3010772, -5071283, -468688, -6098854, 192200, 2018635, -1788317, -4176856, 2527052,
-5552319, 1986422, 3143379, -6244346, 4054449, -6511708, -767189, 2844879, 1203128, -1515587,
--450972, -935229, 4814659, -4988068, -7082401, -2455111, 3732864, -2455648, -4884989, -6897718,
--7500624, 1378148, -1216013, -8931921, 7235410, -5989869, -3732327, 9185861, -2080912, -2702071,
-2415382, -2552284, -1498944, 33823, -3508452, -3478924, -2290828, -4392141, 1838783, 1303523,
-7954817, -11344082, 2266669, 9336722, -3315715, 10241886, 3199214, 319975, -2827699, -7746511,
--4632659, 12214887, -6550362, -447213, -2138357, 580357, 7764227, 6390375, -3953518, 9402220,
-9978820, -5077188, -2276333, 5517959, -4922570, -4902169, -200790, -7290170, -50466, -2517925,
-964757, 11270531, 4101694, 89657, -5350456, -16261820, -1869385, 8233989, 2193118, -6488622,
-4524748, 6541772, 6259915, 6924561, -12422656, 1833414, 568009, -6854231, 3285650, -6266358,
-3877819, -3882651, 4809827, 10212358, 14440217, 8352638, 4100620, -6898255, -1795833, -8112120,
--7713762, -2558727, 8370355, 1069447, -27917, 902480, -8507256, 967441, 889595, -1404454,
--4336843, 751082, 4537633, -6624450, -8929774, 18355616, 3469797, -6244883, -1061394, -4031901,
--783832, 2131378, -3040300, 15830176, -1044751, 4096325, 12309376, 1032403, -1165010, -8174397,
-4907000, -4636417, -4582730, -15999827, -6327561, 2643016, -205085, -3474092, -10573136, 3447785,
-6813429, -9277129, -3962107, -2820183, -8575976, 3234647, 1320703, -5319854, -3339337, -2110977,
--11795054, -4867272, 6874095, 9958419, -7158100, -10223096, -2144799, -970663, -7261716, -6942815,
-3220689, 3990562, -8009041, 17133162, 825707, 6757594, -3234647, 6337761, -3773129, 1675037,
--11660299, -2946348, 5842230, -12743705, 4189204, -3114925, -5546414, -14404247, 475668, 7549479,
-904628, -15149423, -1461363, 2456185, 6764037, 10684805, -3264175, 4669703, 13457743, 4052302,
-2160906, -6031745, -767189, 5134097, -1885491, -4529580, 5578089, 1372242, -9407589, -13916768,
--11974369, -14417668, 12342125, -7388418, -2253784, 4488778, -14308147, -5471789, -10069551, -4007205,
--3475166, 6621766, -12593918, -6212670, 3507915, 5142687, 6658273, 190589, -156766, -1884417,
--421981, -2578591, 1345935, -9400073, -5619965, -8237211, 5499706, 3213173, 4161287, 6208912,
--12204150, -583579, -1701881, 10974715, -4466766, 3625489, 5390721, -1952600, 5794985, -3859028,
-6504191, 10001368, -4296041, -460635, 7902740, -6970195, 11099806, -4779762, -18964428, 3040300,
-9021042, -3496640, 543850, -186831, 6746857, 9294846, -9940702, -3991098, 1517734, 6359773,
--11684459, -8349954, -7454990, 13186623, -1224066, -15464030, -4395362, -6790880, -8757438, -3270618,
-5674726, 2366527, 8213588, 3074123, 3906273, -16359530, -6701223, 6631967, -4582730, -2946885,
--5741835, 1864553, 8381092, 2428267, 1810866, -10917270, -3997541, -1860795, 3852586, 9891310,
--12081743, 5730023, -9904195, -2405719, -9139690, 1292785, 944893, -296890, 3411815, -8120710,
--2682744, -7599945, -3495567, 296353, -672162, -9580998, 5260261, 6413460, -2659659, 7584376,
-14252312, 1666447, 10705206, 14353781, 759136, 643708, 3054796, -2785823, 4325569, 1168768,
--3485903, -4556424, 17416630, -1612223, 10007274, 4864588, -5657546, -5804649, -4656819, 5298379,
--4488241, 6829535, 15259482, 8362838, -2512556, 727997, -13583371, -8511015, -8453033, 12995497,
-18949396, -7742216, -534723, -7007239, -2135136, 10761577, 31446676, 13088913, -3799972, -1516124,
--5352603, 13853954, -13918378, -8591545, -21499532, -709207, 11195906, 12970801, 2811056, -5805185,
--12743168, -10085657, 10057203, -2451353, 15744276, -538482, -4563940, 6750615, 3009162, -643708,
--3459596, 9511205, -1508070, 8135742, 213675, -5265093, 19253802, -5073430, 8010114, 18023294,
-6871411, -1359894, -8753680, -2300492, -14471355, -17938468, 4094178, 10484015, -2350421, 921271,
--18613314, -7847979, 11263015, 5266167, -4608500, 2928631, -5324149, -3442416, -8346732, -15247134,
-1151051, -4197794, -9973451, -17545478, -14175003, -5545877, -13006772, 5213554, -5690832, 1166621,
-1956358, -1093606, 554051, -3200825, -2736431, 7464117, 17307108, -12693776, 2343979, -6057515,
-6427419, -7341173, -13131326, -14126147, 3389803, 5872831, 16974784, -14357002, 4293357, 4802311,
--24833500, -846109, -243739, -20139102, -11552388, -6958384, 4762582, -1383516, 772557, -5524939,
-8122857, 13751948, 6635188, -1713155, -21239150, -8829916, -11799886, 4391604, 721018, -8922258,
--1276142, 7296076, -6626061, 12477954, -11731703, -202400, -7118909, -20605106, 2871723, -8720931,
--10635950, 7798587, 10726144, -12772696, 4221416, 15204721, -5728413, 6674916, 4384625, -3534758,
-1215476, -16822314, 24577414, 10006200, 5102421, 24283208, -30652108, -2282238, -5127654, 3070365,
-11040213, 12481712, 3703873, 5877126, 14361297, -1632088, -11830487, -18534932, 5771899, -7147363,
--737661, 4733054, -5193153, 7237557, 18292802, -12601971, 7517267, -6309307, -7764764, 3360275,
-16244640, 18402862, 5011153, 11233487, -7184407, 5127117, 5633387, -31039728, 9033927, 9657234,
-2442763, -10089415, 117575, -19261318, 22666154, 13159780, -6665789, -7790534, -10745471, -6070400,
-16502338, -16615618, -9011915, -2713346, -2374580, -3778498, 2707977, -11072963, -10690174, -6746857,
--8153459, -2532957, -10714870, -1750199, -7077033, -24509768, -15156940, -6202470, -3513820, 3201361,
-4398047, -318901, 1044751, 6866042, 3709241, 3440269, 17413408, 3419331, 6076305, 10525354,
-23248658, 19500226, 1293322, -7898445, -14842870, 13599477, -3180423, 36960340, 7636452, 16505022,
--1721208, 1995012, -14715095, -715112, 12782360, 7290707, 9528385, -11311333, -7793218, -14535243,
--27913530, 15375446, -25289842, -3349538, 29072096, 4118337, -22535694, 7082938, 7699803, -14106820,
--11938398, 855235, 8524973, 22098680, -1633698, -15891379, -17224430, -210990, -9965935, 3483219,
-2534568, -17773648, -16434692, -29465086, -9407052, -8022999, -21029770, -13175886, -612033, -8789651,
--6471442, -4625143, -2142115, -19503446, -11353746, -11659226, -6633040, 7105487, -17719962, 2159295,
-13942538, 18012020, -4452271, 5602785, 9363566, -15990163, 9145059, -6357089, 14635101, -6278706,
-948651, -6808060, -2137820, 30996242, -6574521, 12391518, -22288196, -2432025, -450972, -19498078,
-18918258, 2043868, -7544110, 15273441, -6156836, 5039071, 26978838, -9325448, -15533823, 12048994,
--3391951, -28988344, 11984569, -38818452, -22537304, 18786186, 12192338, 5479305, 8055748, 3779571,
--660351, -24014772, -13033615, -5106716, -5273683, 41637560, 22516366, 212601, -21529060, 11142756,
--22441740, -17934172, 3109020, 18581640, 36220532, -5566815, 18225156, -6426345, 12888123, 22211960,
-12167642, 14242112, 7394860, -4002373, -18221936, -18566070, -5813775, -17550846, -5348308, -3148211,
--4122095, 14197551, -2545305, -36208720, 1997160, 8797704, 8256538, 21725018, -2352568, -43281996,
-24515136, -19390704, 6248641, -4284767, 14489609, 21134998, -23663122, -1763621, -11836393, -20729122,
-14875082, -10427644, -25346750, 9705552, 14828375, 24065776, 6506339, -4164508, 2753074, 19505594,
--15923054, 30955976, -9722195, -9418863, -2596845, 18411988, -19650550, 896038, 2843805, -56716652,
--7705708, 15770046, -7286412, 1068373, 8698919, 1640678, -1293322, 1112397, 21388400, 16207596,
--6067178, -1649268, 23895588, 15787763, -43983688, -25033216, 30500710, 35201552, -18548354, -6195491,
--49353468, -27228482, 7570954, -1950452, 7078106, -26060250, -16033113, -17687212, 27409408, 40343700,
--1297080, 11305428, -5786395, -2884608, 259309, 9827959, 18103824, 4944581, -5254893, -2494839,
--3090766, -22927610, -12468290, -23248658, -2108829, 8523899, -8989367, 16062104, -9791452, -2929705,
-24537686, -9928891, 14476187, 10461467, -2704756, -20812338, -14512694, -11680700, 5786395, 43500504,
-9233643, 24339580, 28474022, 22750978, 17495550, 15932718, -20700668, 2950106, -1255741, 33512020,
-17406428, 20929376, 35227860, -12694850, -18450106, 11455752, 30884572, -42324220, 3193845, 8147016,
-26096222, -32197222, -50982336, -3731790, 22392886, 12239583, 15524159, 24599962, -5709086, -4151623,
-11483669, -18018998, 14460618, -3159485, -8803072, -22660248, 10111964, -12372727, -17046726, 11507828,
-29740502, 5699959, -7743826, 13480292, 29913910, 7430294, 8309688, -748398, -325881, 10130217,
--20037634, -1365263, -29998736, 14755897, -23669028, -4987531, 16989280, 5061082, -12286291, 357019,
--14637785, 32908040, 7461432, 8702677, 21497386, 36515276, -13421773, 9820980, -15988016, 3771518,
-17114370, 28609850, 10435697, -9634149, 35489316, 1125281, 724776, -22071836, 4277788, 16907676,
--3826279, 15990700, -21002926, 33411624, 41678900, -50243600, 1974074, -7054484, 13344463, -12280922,
--2811593, 15222438, -13507135, -54526756, 3942780, 38307888, -31277026, 11065446, -4586488, -11754252,
--17653926, 39577588, 439697, -3789235, 9495636, -47160352, 31740882, 3342558, -23501524, 2079301,
--48242148, -11462194, 2998961, -9750650, -38282116, -4579509, -24896314, -6578816, 24048058, 5220533,
-31363462, 12557948, 12304544, 7055021, -9702868, 24503326, -11681774, -314606, 12472585, 5323075,
--14188961, 12229383, 5938329, 29181618, 12972949, -5142687, 18646600, -13871134, 24866786, 8344048,
--24987046, -26668526, 15104863, 17752174, 8523899, 3176665, -11370926, -16817482, 6649683, -16476031,
--24122684, -7327751, -2789581, -22913114, -7132867, 9480067, -14394046, -25741350, 9271224, 10705206,
-2819109, -2264522, 454730, -3391414, 11642046, 46409804, 11459510, -49929, 685584, -14336601,
--23198728, -9583146, 39920112, 42055248, 23420456, 6266358, 39437464, 20358682, -4737349, -46825880,
--34610992, -26671746, -54487028, -18801220, -4173635, 11114838, 20989506, -8956081, 27049704, -30818538,
-25026774, -3120294, 33391224, -21473226, 19362786, -31667330, 27834610, -25536802, -10658498, 38696044,
-9084930, 31155156, 44432512, 4800700, -3328600, -18146236, -1219234, 28414430, 7348152, -9556302,
--30791694, 3097745, 6462315, 15182709, 9318468, 12774306, 7995082, -17540646, -28551332, -11619497,
-28417114, 11454678, 89802936, -27609124, -23438710, 30000346, 46350212, 10553272, -297963, 13072807,
-3543885, 15816754, -12960601, 6489696, 22000970, 24962886, 16394427, 70727912, -8215736, -7497939,
--3896072, 37360308, 22030498, -16463147, 19403052, 1406065, 6786585, -13021804, 32450626, -29650844,
-2899640, 51128364, -35389992, 107395120, -47647292, 52570936, 46679852, -43224552, -41303088, 48406964,
-214748, -6401649, 15406585, 25325812, -56374132, -20627118, 30735322, -67406824, -45587320, -26863946,
-46312096, 106180720, 26261578, -79249664, -20893942, -81029392, -46005004, 70129296, 37999188, 66051764,
-32489816, -46073724, -79274360, -56203944, -16707960, 36759016, 36556616, 25818122, 10465762, -18096844,
--86604792, -98599568, -24707874, 79257712, 134582800, 95370288, -20601348, -62435940, -95699384, -66620848,
--58736900, 2108292, 18945638, 77162312, 76854680, -41406704, -30623116, -98852968, -97304632, -31746788,
-5587753, 99310920, 139974064, 65721588, -46362560, -148769072, -115755808, -80074832, 35328252, 87601760,
-49107584, 35632660, 24166708, -88227752, -21397528, -49703508, 13907641, -5697811, 47798692, 84873384,
-60666412, -77268608, -163727904, -118200184, 6646999, 91106992, -9023189, -18546206, 36869072, 11468100,
--29811904, -28164248, 126702, -45367204, -5565204, 6737193, 5241471, -3920768, 1190243, -15222975,
--1841467, -1746441, 7894687, -5206037, 20983600, -5480915, -3952444, -5755256, -6490233, 13137768,
-3810710, -6173479, 20338818, 1415192, -35923644, -17829482, 10006737, 17793512, -5908802, 2340220,
-24766392, -392453, 3459596, -19944218, -8924405, 6483790, -4295504, -4187056, -2587718, 16658031,
-6002217, -6023692, -19226422, -7283191, -1044751, -17161078, 1773285, -19613506, -13380434, -8799851,
--17797808, 28664074, -4969814, -11979738, 11940546, 598074, -27473296, -717796, 27613418, 23338852,
--12692165, 18442590, 3029026, 17818208, -18239116, -25617332, 10669773, 13737453, 11002632, 11162083,
--9331353, 12267500, -18025440, 15222975, 13787382, -22089554, 44259636, 67796056, -9012452, -25017648,
--21711596, 62460636, 28014998, 60424820, 32353452, 56371, -28331214, -6320581, 15123117, 28304372,
-13254269, -13253195, -3598646, 13433047, 19596862, 2320356, 4061429, -14163192, 2091649, -6957310,
-8615168, 9984725, 25912612, 22519588, -12671227, 1693828, -14192719, 3228742, 11415486, 17687212,
-639950, -8942122, -772557, -15890842, 12146704, -3995393, 4497905, 11625940, -639950, 15605227,
--8870181, -4926328, -4776004, -17095044, -10990821, -25820806, -5922760, -29398514, 746787, -10555956,
-22381074, 2824478, 5577552, -22996866, 7902203, -631897, -11526082, 15466714, -10567230, -5499169,
-2117956, 9791452, -3447248, -7013145, 34257196, 10708964, 5645735, 12385075, -13457206, -26069914,
--54200876, -8253854, 73179800, 110934176, 94459752, 73223288, -4501663, 7681549, -54067732, -62911608,
--100407208, -59183576, -63180044, -21227876, 8187819, 42566348, 31361852, 94142464, 83210696, 26023744,
-5766531, -16346109, -32590212, -52922588, -19020800, -54284628, -14340896, -27353036, -16983912, -14111652,
-2235531, -1018444, 17188996, 23805394, 38463580, 40415104, 50138376, 41859288, -6365142, 1970853,
--1762010, 5847598, -26663156, 7657927, -28591598, -70239360, -34949224, -53398792, -86973624, -27907624,
--9662066, -37609416, 9090835, 22734872, 56418692, 66290136, 99907384, 61277908, 49377628, 48590040,
-28564216, -14806900, 430034, -57105348, -50594176, -81016504, -96411280, -109865800, -83515640, -65424700,
--16093242, -11559368, -4680978, 19373524, 33392296, 77469400, 49866716, 24200530, -2239289, 0,
-0, 0, 0, },
+-445603, 329102, -860067, -1518808, -3882651, 483721, -608275, -7189239, -1008244, -819265,
+2469069, 5764383, -4874788, 2117419, -3059091, 1299765, -4207458, 2139968, 1373316, -3018288,
+-2754148, -4562329, 1896765, -4285841, 639413, 3762391, 2639794, 1153736, 1784559, 277562,
+-3806952, 163746, -2378875, 1923072, 1250909, 1466195, 5996311, 1932735, 905164, -128849,
+2052458, -59593, 1890323, -471373, 4276177, 1480153, 1901597, 3220152, 7155416, 351114,
+-1174674, 2863670, -2155537, -4983236, 2552821, -2284923, -4288525, 1119913, -1305670, 2362769,
+-1137093, -1913408, -3275986, 3397856, 1266479, -198642, -3163244, -4417374, -1308891, -1005022,
+724239, -550293, -78383, 702764, 1323387, 10341208, 5574868, -671626, 3679176, 858993,
+882616, -11425150, -4894652, -5681168, 4491462, -653372, -3637837, 3988951, 4221953, 233539,
+4057670, -1706713, -73551, -271120, -2401961, -1318555, -5402532, 2793876, -8017630, 3346317,
+-4148939, 3414499, 6497749, 2909304, -1153736, -1840930, 4822175, -786516, 293132, 4478041,
+-4742181, -155156, -1554241, -2785286, 666257, -682900, 1073742, 4603668, 7672959, -2413772,
+216359, 6311455, 559956, 1668058, -2241436, -3520263, -437550, 1080184, -5875516, -1537061,
+3196530, 439697, 1206886, 1893544, -774168, -1806571, -1682554, -2019172, 2379949, 1974611,
+-1029182, -3305514, -4138201, 2214593, 81604, -3298535, 3694746, -541166, -271120, 972810,
+933082, -900333, -3777961, -983548, -13422, -3494493, -3621731, -2102923, 8546448, -5988258,
+-2523293, -4167192, -7713762, 2911451, 1271847, 346282, 6541235, 6283001, 6203544, 2067490,
+-1213865, 1017907, 4664335, -1962263, 1984275, 2433636, -5604933, 7968238, 1485522, 2518998,
+5800354, -2190433, -5890548, 456877, 3911105, -2729452, -1324461, -3658239, 3888019, -30065,
+-463856, -6401649, -345208, -708670, 3920232, 2119566, -3623342, 7172596, 2539400, 1567126,
+2401424, -1057636, 3886946, -1443646, 104690, -4833449, -6005975, 4854387, 3600793, 6688338,
+522912, 1908039, -5209796, -7714835, -4003983, -2196876, -2451890, -3454764, -3311957, 1820529,
+-1120450, 2610803, -3198677, -869194, 1000191, 1787780, -1254131, 4429185, 809601, -7387881,
+-6904160, 4044249, 906238, 5658620, -8762270, -1235877, -3497714, 933619, 10387378, 5934034,
+-9133785, 3433290, 832150, -3811784, -4260608, -5182415, -8425115, 277025, 960462, -3134789,
+1440425, -1821066, 266825, 2496450, 1895154, 5369246, -4792647, 8470749, -5258651, 4898947,
+3845070, -3234110, 2211908, 362388, 3447785, -1469953, 1751810, 3187403, 979789, 443455,
+-1413581, 2463701, 636729, -1199370, 5921150, -7988639, 399969, -4872641, 9373766, 3284039,
+-8493835, 3147674, 10707890, -10334765, -5094368, 1137093, -1074279, -3986804, 2988224, -1469953,
+6963216, -6220724, -943282, -2143189, -810138, -504122, 6557878, -6653978, -2710661, -869731,
+-7407745, 3433290, 1894081, 7009387, 1601486, 5668283, 3165391, -4946729, 531502, -3039226,
+3274376, 1378685, -5211406, 15005005, -9493488, 3167539, 15992311, -11124502, 5242008, -74088,
+5224291, -1154809, -9706089, -1869921, 8018167, 7448010, 2011118, 216896, 4097399, 2289755,
+206158, 3674882, 3449396, -2449742, 4391604, -839666, 6885907, -5085242, -8287677, 2187212,
+-7198902, 2946348, 310848, -1674500, -2158758, -2908767, -4786204, 1440425, 2004139, 668404,
+1537598, 1969243, -2793876, -5920076, 5394479, 1696512, 1180579, 268972, 7838852, 2113124,
+3537443, 8521752, -4391067, 2579665, 807454, 3079492, 6057515, 5060545, -6602976, -5530844,
+-974958, -2790118, -108448, 1111323, -2292439, 2547453, -4840428, 1237488, -4478577, 3754338,
+3987340, -2122251, 5488968, -2804614, 5054103, -1597191, 2937221, -3226057, 1123671, -2384244,
+2248416, -1548873, -8396661, 6248104, 5364414, 10813654, -6733435, 3979824, -8527121, -2374580,
+6621766, 5453535, -5703717, 1139240, -6739341, -179315, -8047158, 2195802, -5786932, -9069897,
+-6516003, 3010772, -5071283, -468688, -6098854, 192200, 2018635, -1788317, -4176856, 2527052,
+5552319, 1986422, 3143379, -6244346, 4054449, -6511708, -767189, 2844879, 1203128, -1515587,
+-450972, -935229, 4814659, -4988068, -7082401, -2455111, 3732864, -2455648, -4884989, -6897718,
+-7500624, 1378148, -1216013, -8931921, 7235410, -5989869, -3732327, 9185861, -2080912, -2702071,
+2415382, -2552284, -1498944, 33823, -3508452, -3478924, -2290828, -4392141, 1838783, 1303523,
+7954817, -11344082, 2266669, 9336722, -3315715, 10241886, 3199214, 319975, -2827699, -7746511,
+-4632659, 12214887, -6550362, -447213, -2138357, 580357, 7764227, 6390375, -3953518, 9402220,
+9978820, -5077188, -2276333, 5517959, -4922570, -4902169, -200790, -7290170, -50466, -2517925,
+964757, 11270531, 4101694, 89657, -5350456, -16261820, -1869385, 8233989, 2193118, -6488622,
+4524748, 6541772, 6259915, 6924561, -12422656, 1833414, 568009, -6854231, 3285650, -6266358,
+3877819, -3882651, 4809827, 10212358, 14440217, 8352638, 4100620, -6898255, -1795833, -8112120,
+-7713762, -2558727, 8370355, 1069447, -27917, 902480, -8507256, 967441, 889595, -1404454,
+-4336843, 751082, 4537633, -6624450, -8929774, 18355616, 3469797, -6244883, -1061394, -4031901,
+-783832, 2131378, -3040300, 15830176, -1044751, 4096325, 12309376, 1032403, -1165010, -8174397,
+4907000, -4636417, -4582730, -15999827, -6327561, 2643016, -205085, -3474092, -10573136, 3447785,
+6813429, -9277129, -3962107, -2820183, -8575976, 3234647, 1320703, -5319854, -3339337, -2110977,
+-11795054, -4867272, 6874095, 9958419, -7158100, -10223096, -2144799, -970663, -7261716, -6942815,
+3220689, 3990562, -8009041, 17133162, 825707, 6757594, -3234647, 6337761, -3773129, 1675037,
+-11660299, -2946348, 5842230, -12743705, 4189204, -3114925, -5546414, -14404247, 475668, 7549479,
+904628, -15149423, -1461363, 2456185, 6764037, 10684805, -3264175, 4669703, 13457743, 4052302,
+2160906, -6031745, -767189, 5134097, -1885491, -4529580, 5578089, 1372242, -9407589, -13916768,
+-11974369, -14417668, 12342125, -7388418, -2253784, 4488778, -14308147, -5471789, -10069551, -4007205,
+-3475166, 6621766, -12593918, -6212670, 3507915, 5142687, 6658273, 190589, -156766, -1884417,
+-421981, -2578591, 1345935, -9400073, -5619965, -8237211, 5499706, 3213173, 4161287, 6208912,
+-12204150, -583579, -1701881, 10974715, -4466766, 3625489, 5390721, -1952600, 5794985, -3859028,
+6504191, 10001368, -4296041, -460635, 7902740, -6970195, 11099806, -4779762, -18964428, 3040300,
+9021042, -3496640, 543850, -186831, 6746857, 9294846, -9940702, -3991098, 1517734, 6359773,
+-11684459, -8349954, -7454990, 13186623, -1224066, -15464030, -4395362, -6790880, -8757438, -3270618,
+5674726, 2366527, 8213588, 3074123, 3906273, -16359530, -6701223, 6631967, -4582730, -2946885,
+-5741835, 1864553, 8381092, 2428267, 1810866, -10917270, -3997541, -1860795, 3852586, 9891310,
+-12081743, 5730023, -9904195, -2405719, -9139690, 1292785, 944893, -296890, 3411815, -8120710,
+-2682744, -7599945, -3495567, 296353, -672162, -9580998, 5260261, 6413460, -2659659, 7584376,
+14252312, 1666447, 10705206, 14353781, 759136, 643708, 3054796, -2785823, 4325569, 1168768,
+-3485903, -4556424, 17416630, -1612223, 10007274, 4864588, -5657546, -5804649, -4656819, 5298379,
+-4488241, 6829535, 15259482, 8362838, -2512556, 727997, -13583371, -8511015, -8453033, 12995497,
+18949396, -7742216, -534723, -7007239, -2135136, 10761577, 31446676, 13088913, -3799972, -1516124,
+-5352603, 13853954, -13918378, -8591545, -21499532, -709207, 11195906, 12970801, 2811056, -5805185,
+-12743168, -10085657, 10057203, -2451353, 15744276, -538482, -4563940, 6750615, 3009162, -643708,
+-3459596, 9511205, -1508070, 8135742, 213675, -5265093, 19253802, -5073430, 8010114, 18023294,
+6871411, -1359894, -8753680, -2300492, -14471355, -17938468, 4094178, 10484015, -2350421, 921271,
+-18613314, -7847979, 11263015, 5266167, -4608500, 2928631, -5324149, -3442416, -8346732, -15247134,
+1151051, -4197794, -9973451, -17545478, -14175003, -5545877, -13006772, 5213554, -5690832, 1166621,
+1956358, -1093606, 554051, -3200825, -2736431, 7464117, 17307108, -12693776, 2343979, -6057515,
+6427419, -7341173, -13131326, -14126147, 3389803, 5872831, 16974784, -14357002, 4293357, 4802311,
+-24833500, -846109, -243739, -20139102, -11552388, -6958384, 4762582, -1383516, 772557, -5524939,
+8122857, 13751948, 6635188, -1713155, -21239150, -8829916, -11799886, 4391604, 721018, -8922258,
+-1276142, 7296076, -6626061, 12477954, -11731703, -202400, -7118909, -20605106, 2871723, -8720931,
+-10635950, 7798587, 10726144, -12772696, 4221416, 15204721, -5728413, 6674916, 4384625, -3534758,
+1215476, -16822314, 24577414, 10006200, 5102421, 24283208, -30652108, -2282238, -5127654, 3070365,
+11040213, 12481712, 3703873, 5877126, 14361297, -1632088, -11830487, -18534932, 5771899, -7147363,
+-737661, 4733054, -5193153, 7237557, 18292802, -12601971, 7517267, -6309307, -7764764, 3360275,
+16244640, 18402862, 5011153, 11233487, -7184407, 5127117, 5633387, -31039728, 9033927, 9657234,
+2442763, -10089415, 117575, -19261318, 22666154, 13159780, -6665789, -7790534, -10745471, -6070400,
+16502338, -16615618, -9011915, -2713346, -2374580, -3778498, 2707977, -11072963, -10690174, -6746857,
+-8153459, -2532957, -10714870, -1750199, -7077033, -24509768, -15156940, -6202470, -3513820, 3201361,
+4398047, -318901, 1044751, 6866042, 3709241, 3440269, 17413408, 3419331, 6076305, 10525354,
+23248658, 19500226, 1293322, -7898445, -14842870, 13599477, -3180423, 36960340, 7636452, 16505022,
+-1721208, 1995012, -14715095, -715112, 12782360, 7290707, 9528385, -11311333, -7793218, -14535243,
+-27913530, 15375446, -25289842, -3349538, 29072096, 4118337, -22535694, 7082938, 7699803, -14106820,
+-11938398, 855235, 8524973, 22098680, -1633698, -15891379, -17224430, -210990, -9965935, 3483219,
+2534568, -17773648, -16434692, -29465086, -9407052, -8022999, -21029770, -13175886, -612033, -8789651,
+-6471442, -4625143, -2142115, -19503446, -11353746, -11659226, -6633040, 7105487, -17719962, 2159295,
+13942538, 18012020, -4452271, 5602785, 9363566, -15990163, 9145059, -6357089, 14635101, -6278706,
+948651, -6808060, -2137820, 30996242, -6574521, 12391518, -22288196, -2432025, -450972, -19498078,
+18918258, 2043868, -7544110, 15273441, -6156836, 5039071, 26978838, -9325448, -15533823, 12048994,
+-3391951, -28988344, 11984569, -38818452, -22537304, 18786186, 12192338, 5479305, 8055748, 3779571,
+-660351, -24014772, -13033615, -5106716, -5273683, 41637560, 22516366, 212601, -21529060, 11142756,
+-22441740, -17934172, 3109020, 18581640, 36220532, -5566815, 18225156, -6426345, 12888123, 22211960,
+12167642, 14242112, 7394860, -4002373, -18221936, -18566070, -5813775, -17550846, -5348308, -3148211,
+-4122095, 14197551, -2545305, -36208720, 1997160, 8797704, 8256538, 21725018, -2352568, -43281996,
+24515136, -19390704, 6248641, -4284767, 14489609, 21134998, -23663122, -1763621, -11836393, -20729122,
+14875082, -10427644, -25346750, 9705552, 14828375, 24065776, 6506339, -4164508, 2753074, 19505594,
+-15923054, 30955976, -9722195, -9418863, -2596845, 18411988, -19650550, 896038, 2843805, -56716652,
+-7705708, 15770046, -7286412, 1068373, 8698919, 1640678, -1293322, 1112397, 21388400, 16207596,
+-6067178, -1649268, 23895588, 15787763, -43983688, -25033216, 30500710, 35201552, -18548354, -6195491,
+-49353468, -27228482, 7570954, -1950452, 7078106, -26060250, -16033113, -17687212, 27409408, 40343700,
+-1297080, 11305428, -5786395, -2884608, 259309, 9827959, 18103824, 4944581, -5254893, -2494839,
+-3090766, -22927610, -12468290, -23248658, -2108829, 8523899, -8989367, 16062104, -9791452, -2929705,
+24537686, -9928891, 14476187, 10461467, -2704756, -20812338, -14512694, -11680700, 5786395, 43500504,
+9233643, 24339580, 28474022, 22750978, 17495550, 15932718, -20700668, 2950106, -1255741, 33512020,
+17406428, 20929376, 35227860, -12694850, -18450106, 11455752, 30884572, -42324220, 3193845, 8147016,
+26096222, -32197222, -50982336, -3731790, 22392886, 12239583, 15524159, 24599962, -5709086, -4151623,
+11483669, -18018998, 14460618, -3159485, -8803072, -22660248, 10111964, -12372727, -17046726, 11507828,
+29740502, 5699959, -7743826, 13480292, 29913910, 7430294, 8309688, -748398, -325881, 10130217,
+-20037634, -1365263, -29998736, 14755897, -23669028, -4987531, 16989280, 5061082, -12286291, 357019,
+-14637785, 32908040, 7461432, 8702677, 21497386, 36515276, -13421773, 9820980, -15988016, 3771518,
+17114370, 28609850, 10435697, -9634149, 35489316, 1125281, 724776, -22071836, 4277788, 16907676,
+-3826279, 15990700, -21002926, 33411624, 41678900, -50243600, 1974074, -7054484, 13344463, -12280922,
+-2811593, 15222438, -13507135, -54526756, 3942780, 38307888, -31277026, 11065446, -4586488, -11754252,
+-17653926, 39577588, 439697, -3789235, 9495636, -47160352, 31740882, 3342558, -23501524, 2079301,
+-48242148, -11462194, 2998961, -9750650, -38282116, -4579509, -24896314, -6578816, 24048058, 5220533,
+31363462, 12557948, 12304544, 7055021, -9702868, 24503326, -11681774, -314606, 12472585, 5323075,
+-14188961, 12229383, 5938329, 29181618, 12972949, -5142687, 18646600, -13871134, 24866786, 8344048,
+-24987046, -26668526, 15104863, 17752174, 8523899, 3176665, -11370926, -16817482, 6649683, -16476031,
+-24122684, -7327751, -2789581, -22913114, -7132867, 9480067, -14394046, -25741350, 9271224, 10705206,
+2819109, -2264522, 454730, -3391414, 11642046, 46409804, 11459510, -49929, 685584, -14336601,
+-23198728, -9583146, 39920112, 42055248, 23420456, 6266358, 39437464, 20358682, -4737349, -46825880,
+-34610992, -26671746, -54487028, -18801220, -4173635, 11114838, 20989506, -8956081, 27049704, -30818538,
+25026774, -3120294, 33391224, -21473226, 19362786, -31667330, 27834610, -25536802, -10658498, 38696044,
+9084930, 31155156, 44432512, 4800700, -3328600, -18146236, -1219234, 28414430, 7348152, -9556302,
+-30791694, 3097745, 6462315, 15182709, 9318468, 12774306, 7995082, -17540646, -28551332, -11619497,
+28417114, 11454678, 89802936, -27609124, -23438710, 30000346, 46350212, 10553272, -297963, 13072807,
+3543885, 15816754, -12960601, 6489696, 22000970, 24962886, 16394427, 70727912, -8215736, -7497939,
+-3896072, 37360308, 22030498, -16463147, 19403052, 1406065, 6786585, -13021804, 32450626, -29650844,
+2899640, 51128364, -35389992, 107395120, -47647292, 52570936, 46679852, -43224552, -41303088, 48406964,
+214748, -6401649, 15406585, 25325812, -56374132, -20627118, 30735322, -67406824, -45587320, -26863946,
+46312096, 106180720, 26261578, -79249664, -20893942, -81029392, -46005004, 70129296, 37999188, 66051764,
+32489816, -46073724, -79274360, -56203944, -16707960, 36759016, 36556616, 25818122, 10465762, -18096844,
+-86604792, -98599568, -24707874, 79257712, 134582800, 95370288, -20601348, -62435940, -95699384, -66620848,
+-58736900, 2108292, 18945638, 77162312, 76854680, -41406704, -30623116, -98852968, -97304632, -31746788,
+5587753, 99310920, 139974064, 65721588, -46362560, -148769072, -115755808, -80074832, 35328252, 87601760,
+49107584, 35632660, 24166708, -88227752, -21397528, -49703508, 13907641, -5697811, 47798692, 84873384,
+60666412, -77268608, -163727904, -118200184, 6646999, 91106992, -9023189, -18546206, 36869072, 11468100,
+-29811904, -28164248, 126702, -45367204, -5565204, 6737193, 5241471, -3920768, 1190243, -15222975,
+-1841467, -1746441, 7894687, -5206037, 20983600, -5480915, -3952444, -5755256, -6490233, 13137768,
+3810710, -6173479, 20338818, 1415192, -35923644, -17829482, 10006737, 17793512, -5908802, 2340220,
+24766392, -392453, 3459596, -19944218, -8924405, 6483790, -4295504, -4187056, -2587718, 16658031,
+6002217, -6023692, -19226422, -7283191, -1044751, -17161078, 1773285, -19613506, -13380434, -8799851,
+-17797808, 28664074, -4969814, -11979738, 11940546, 598074, -27473296, -717796, 27613418, 23338852,
+-12692165, 18442590, 3029026, 17818208, -18239116, -25617332, 10669773, 13737453, 11002632, 11162083,
+-9331353, 12267500, -18025440, 15222975, 13787382, -22089554, 44259636, 67796056, -9012452, -25017648,
+-21711596, 62460636, 28014998, 60424820, 32353452, 56371, -28331214, -6320581, 15123117, 28304372,
+13254269, -13253195, -3598646, 13433047, 19596862, 2320356, 4061429, -14163192, 2091649, -6957310,
+8615168, 9984725, 25912612, 22519588, -12671227, 1693828, -14192719, 3228742, 11415486, 17687212,
+639950, -8942122, -772557, -15890842, 12146704, -3995393, 4497905, 11625940, -639950, 15605227,
+-8870181, -4926328, -4776004, -17095044, -10990821, -25820806, -5922760, -29398514, 746787, -10555956,
+22381074, 2824478, 5577552, -22996866, 7902203, -631897, -11526082, 15466714, -10567230, -5499169,
+2117956, 9791452, -3447248, -7013145, 34257196, 10708964, 5645735, 12385075, -13457206, -26069914,
+-54200876, -8253854, 73179800, 110934176, 94459752, 73223288, -4501663, 7681549, -54067732, -62911608,
+-100407208, -59183576, -63180044, -21227876, 8187819, 42566348, 31361852, 94142464, 83210696, 26023744,
+5766531, -16346109, -32590212, -52922588, -19020800, -54284628, -14340896, -27353036, -16983912, -14111652,
+2235531, -1018444, 17188996, 23805394, 38463580, 40415104, 50138376, 41859288, -6365142, 1970853,
+-1762010, 5847598, -26663156, 7657927, -28591598, -70239360, -34949224, -53398792, -86973624, -27907624,
+-9662066, -37609416, 9090835, 22734872, 56418692, 66290136, 99907384, 61277908, 49377628, 48590040,
+28564216, -14806900, 430034, -57105348, -50594176, -81016504, -96411280, -109865800, -83515640, -65424700,
+-16093242, -11559368, -4680978, 19373524, 33392296, 77469400, 49866716, 24200530, -2239289, 0,
+0, 0, 0, },
{
-266825,
--848256, -2347200, 1889786, 4907000, -1739999, 3080029, 3562139, 873489, 1805497, 4203699,
-4820564, -1772748, 1234266, -3221226, -3966402, 4744328, -9451076, 529892, -6005975, -4046933,
--2385318, -933619, 11103027, -158914, 2776160, 2876554, 420907, -907312, -488016, -839666,
-1137093, 2854006, 2432025, -752693, 103079, -830002, -3867618, 1779190, 1083406, -1492501,
--5880884, -5230734, -176094, 334471, 709207, 3226594, 3525631, -4456566, -3146601, -3311957,
-2951716, 4565014, 2816962, 6103686, -190052, -630286, -1303523, 4073777, -2573759, 559420,
-408022, -3329137, -4973572, -1956895, 5257040, 117038, 7946763, 250182, -931471, 187368,
-5209259, -796180, -425739, 2817499, 2080912, 7327214, 2882997, -3787088, -561567, 2501819,
--388158, 2665027, -6706055, -4909148, -1118302, -5785321, 2454037, -1354525, -568009, -3938485,
--1659468, 3496640, 3636764, -1491427, -1035624, -2467459, -5420786, 6010807, 3679713, 63351,
-689342, -430570, 222265, 4817880, -2449742, 803159, -7824357, -6547141, -1578937, 481573,
--5448166, -1122597, 1975148, 364535, 121333, -2859375, -2098629, 5031554, -2369211, -2306398,
--716723, -841277, 2265595, -1306744, -3376381, -239444, 2937758, -4331475, 156229, -4633196,
-280247, -3429532, 4955856, -416075, -5337571, -901406, -592169, 492848, -7631083, -1048509,
-503048, -5172751, 2165201, -26844, -5990943, 2514167, 3332358, -3196530, -3852586, -6400038,
-2956548, 2305324, -105764, -5415954, 2425046, -6763500, -1952063, -875636, -3496640, 3380139,
-7613904, -3033321, -1048509, 463320, -3186329, 2309082, -492848, -2454574, -4378719, -2196876,
-6899328, 6797860, 3751117, 7883413, 4569845, 2614561, 7310035, -4369593, 1632625, 3286187,
--107911, 1435056, -2121714, 1585380, -10034654, 413391, -525597, 3850975, -2214056, -1063541,
--624381, 3020436, -3104188, -274341, 1008780, 2218351, 2024540, -271657, -3301756, 927176,
-1334661, 2763275, 2014877, 3180423, -3055869, -1590212, -409096, -5375152, -478889, 1872606,
-5127117, 5856725, -514859, 3415036, 2511482, 1074, 2321967, 2856690, 3857954, -974421,
-297963, -2196876, 839666, -1829656, 1991791, -2967286, -2759517, 2160369, 402653, -6684043,
--6768332, 2659122, -1015760, 5648419, 5196911, 673236, -130460, 10700911, -3102040, -34897,
-8533026, 573915, -5369783, -7251516, 5126044, -1982664, -256087, -4423817, 1136556, -3109556,
-3374234, 16552267, -6283001, -4631586, -6215892, -6214818, 848793, -5042829, -13222594, -164819,
-961536, 185220, -5465883, -931471, 3846143, -5127654, -3457986, 7783555, 2161442, -1822677,
--2188286, 5043366, -2815351, 3635690, 2843805, -6884296, -5018670, -4045322, 4174171, -3462818,
--2509872, -1857573, -2736968, -310848, -5129802, 80531, -1851668, 1190243, -1090922, -10220412,
-4295504, -5730560, 4054449, 809601, -8873402, 1647120, 5146445, 1640141, 8884677, -4090420,
-54224, 909459, 1783485, 3090766, -3891777, 942745, 2807835, -4038880, 1764158, 2519535,
--2606508, 1392106, -1407676, -9050570, 2654827, 9175124, 7113003, 8639327, 1233729, -1399623,
--7303055, -3325379, -3529390, -2266669, 7158100, 10620380, 563714, -251792, 7110319, -11334956,
-84289, -474594, -347892, -3350075, -4090420, 4809290, 5193153, 702764, -1278290, 2669322,
--5821292, -3772592, 4318590, -4197257, 9096204, 8907225, 1341104, 5741298, 4285304, 1529545,
--3762928, 1979443, -201327, -5761162, 6295885, 177167, 2975876, 5869610, -6008123, -1557463,
--7126962, -794569, 1763621, 7647726, -6806987, -1835562, 5248450, -90194, -4232154, 8465917,
--5929203, -11884711, 2496987, -6120329, -2903935, 4848481, -2701535, 2084670, 1308354, -1501091,
-6199786, -3046206, 3128347, -1690070, 479426, -12029667, 2826089, 10812043, 1224603, 1478543,
-3708168, 10132365, 1777580, -10214506, 11441793, 4645544, 4377646, 6534256, 6238977, -149787,
--1672890, 6175626, 5274757, 1492501, -4153770, 5373004, 3037616, 8043937, 9998684, 3503620,
--1899986, 102005, 398358, 3880503, 12607340, 7119445, -6237903, 11667279, 974958, -1498944,
-2069101, -8691940, 10149545, -1300301, 717796, -1149441, 3010772, -1280437, 5539434, -6940131,
-10413685, 8442295, 289373, -1479079, -4844723, -10301479, -2936147, 4269198, -1769527, -3739843,
-6197101, 6679748, -3695819, -3678103, -12636331, -4363150, -908386, -339839, -14170171, 7968238,
-1646046, -8483634, -6458557, 2940979, -2543158, 1505386, -1142998, 1341104, -2357937, 1533840,
-5874442, -7321309, 310848, -285615, 628139, 10888279, 6557342, -448824, 14395120, 6127308,
-13037910, 2674154, 4671314, 13160854, -4942971, -9338333, -5289252, 12290049, 3498788, -7454990,
-10044855, -2964601, -5203353, 8281771, 20855824, -5594732, 1458141, 2945811, 4344360, -5629092,
-1118302, 10937134, 1657321, 13524315, -2555506, 14549202, 10971494, 3257733, 9279277, 5282273,
--4811437, 3400004, -875100, -1612760, 1909650, 722091, -463320, 3635153, 3220689, 9316858,
-6982006, -8300561, 3323231, 3338263, -5391795, 79457, -13433047, -18378702, 7797513, -4911832,
--11274289, -2815351, -5803575, 7517267, 2286533, -3968013, -8353175, 6688338, -5883032, 3933653,
--6682969, 687195, -2384781, 10515691, 2468533, -4888210, 4134443, -7803956, 950798, 445066,
-1993939, -4698158, 5363341, 6172942, -749472, -3875671, -14004815, -11768747, -9263708, 4442070,
-1161252, 2389076, -11481521, 7408282, 5031554, 9181566, -9842991, 9469866, 7074348, -5416491,
--4711579, -2631204, 9400073, 6731288, -4194036, 1156420, 14260365, 7471633, 3664144, 8518531,
-5673115, 2471217, -4743792, 1323387, 653909, -1753420, -5250598, 12965433, 5939940, -11537356,
-8006893, 8233453, 7939247, 6499896, 1708860, -7056632, 271657, -661425, 11128260, 1803886,
-5017059, 10399190, -1723356, -10615549, 2528662, 6284611, 11285563, -14521284, -8297340, 4495220,
-280247, 1802813, -8700530, -1735704, -8427800, -721018, 4209605, -2324651, -4563403, -5178657,
-2481954, -884226, -2955474, 5305895, 674847, -9218074, 9416716, 6092948, -2809446, 3792993,
-5691369, -6195491, -2088428, 24169392, -751082, 9477919, 6622840, -20026896, -10635950, -1036161,
--776315, -130460, 11506754, 2677375, -5465346, 11927124, 7362111, -1349694, -1817308, 3904125,
--1785633, -4029753, -8813273, -10474351, 6046240, -2172717, -4821101, -355409, -16349867, -2907156,
-1314797, 9311489, -10694469, -2980707, 1680943, 923955, 2674154, 1009317, 11987254, -13404593,
--4187593, 3229279, -70330, -7821673, -1289027, 10799158, 9548786, 8084739, -1685775, -13338021,
--5649493, 5112085, -954020, 9303973, 123480, 22549, -6021544, -3995930, 8775692, -9538585,
-7609609, 5362267, -5881421, -3336653, -261993, 1241782, -5783711, 3770981, -17704392, -1662689,
-3056406, 11752641, 2098629, -1010928, 8002061, -5876052, 16691854, -16562468, -937377, -3919695,
-3309809, -1249836, -684510, 3675955, -2383707, -5909338, -2995203, -3663070, -8979703, -1948841,
-7539278, -1987496, -3591130, 9803800, 551903, 11883638, -11281805, -7260642, 15934866, -1918240,
--168041, 542777, -8791798, -1462973, -11150272, 3156264, -13523778, -693637, 11484206, -3802120,
-8110509, 9235790, 6421513, 7212861, -8801462, 9361418, 1990717, -25560424, -3304441, 3390877,
--1093606, -3092913, -9833328, 8265128, -8201240, -2093260, -9403831, -10104447, -14100915, 13282186,
-1247151, 15518791, -6674379, 11611444, 17057462, -10711112, 14199699, -16202227, -11765526, -14753213,
--3474092, -10598906, 4901632, 4131759, 1307818, 12462384, 19557670, 3412889, -5888400, -10329933,
-6207302, 19044958, -369367, 5832029, 408559, 7911330, 4546760, 6190122, 9536975, -11647951,
--1522566, -4006131, 15344844, 12315819, -1141388, 18820546, 9113384, 2149631, -17788680, -8031589,
--13700409, -5565741, 762357, 5457293, -5282810, 1207423, 18047452, -2977486, -557809, 1464584,
-18559628, -11181410, -5282810, -4249334, -2449742, -10929081, 12610561, 1399086, 8273718, -13210783,
-1308354, -974421, -8732205, -2726767, -15699179, 5282273, -251256, 3726958, -2386928, -373662,
--18096308, -5420786, 6383395, 11752641, -3702799, 3520263, 22958748, -894964, 983011, 4957466,
-10235981, -9191230, 2066953, 12642236, -7089918, 9524090, 2688113, 10077604, -11375758, -4615479,
-3041911, 5046587, -10887742, -16687022, 4671851, -1814087, -16754131, 4584878, 1756642, 15221901,
-13547401, -12508019, -14911053, 3352759, -11354820, -6030671, 578210, 22706418, 440234, -2882997,
--20166482, -10156524, -1612223, -15126875, -22845468, 15795279, -5759551, -7245610, -1134945, 17135846,
--5150740, 1896228, -3208341, -3409667, -9701794, -5274757, 1934346, -23995982, -15167140, -4408247,
--8458401, -8101919, -2471754, -9391483, 8535174, 3779034, 3017215, -5710696, 4566087, -34645352,
-32723356, 18967650, -2753074, -4363687, 18708340, 1129040, -10235444, -15425375, -1283658, -5396090,
--5677410, -9277666, -8651675, 11881490, 12029130, -5017596, 25414932, -13547937, -9859634, -10075456,
-1531156, 7854422, -26724898, 8243653, -6794639, 14528264, -13179107, 6120329, 3268470, 16307991,
-1560147, 38288560, 12731894, -1011465, 1832340, -15142981, -19134616, 23794656, -6965900, 2457258,
-32079648, -8602819, -1400696, -7128572, 25033216, 4476430, -10167798, 14370961, -5226975, 21489868,
-11573863, 5077188, 3339874, -2798708, -8259759, -3124052, -2174864, -23826332, -5793374, -4210142,
-13032005, -7710540, 2519535, 3823595, -16698296, -25491168, -823560, 21041044, -1377074, 18606872,
--3259343, -27369680, -10316511, 605590, 6123013, 4201552, -21739514, -492848, -6192806, 15111306,
--16127602, 19254338, 29618632, 18393734, -5990406, 2747169, 11959336, -5130876, 23195508, 25900800,
-23656680, 6759742, 25922276, -1904818, -10486700, 2283312, -13639742, -18234284, 9200357, -8489003,
-20932060, 9823664, 5113696, -8282845, -27255326, -8667244, -19506130, 11455752, 14190035, -140660,
-6924561, 4776541, 6857989, 5822365, 2595771, -1441498, 3340411, -3964255, 7376070, -13091060,
--36857260, -14643154, 20180978, 1313723, -6019934, -12176769, -77846, 17154100, 21682606, 4803921,
--13314399, -2153926, 17346300, -20790326, 2001455, -2397129, 15522012, 17949742, -14209362, 27127014,
-5209259, 1330903, 37962680, 462246, -11923903, 13586592, -6360310, 2202245, -8138426, 3142306,
-25194816, 3248069, 32092532, 13919989, -28133110, -30350386, -6801081, 8374650, 17056388, -23420994,
--8565775, -3031710, 28762322, 26925150, -22913650, -450972, -14120779, 9172440, -5119064, 30710626,
--32212, -6285685, 19346144, -3741990, -24225226, -11701638, -4808753, 24320790, -23050016, 12352326,
-35602596, 14506252, 16258062, -16554415, 12008192, 21009906, 15062987, -27146878, -14921253, 19420768,
-53271016, 4738960, 10550587, -14396730, 3630321, 687195, -3853660, -13387950, 3214246, -3715684,
-24912958, 22317724, -28661390, -10562935, 27670326, 16292958, 9128416, 4704063, 14367202, 19894288,
-4534412, 12597139, 8773008, -11489038, 668941, -11178726, -7088307, 5373541, -3833258, 4052302,
--12468827, -8124468, 6450504, -114354, 9379135, 10431402, -26648662, 20973400, 2429341, 17347372,
--18461380, 11987254, 13973139, -9658845, -20947630, -17323214, -23084912, -19217832, -19431506, 8962523,
-30409980, 11112691, 8215736, 17923436, -664646, 2629594, -14309220, 24493662, -29133300, -51233592,
-16520592, -8934069, -20401, -42423540, 8689793, 18968186, -721555, 14212584, 3649112, 104153,
--6353331, 12906377, 9430674, 12348568, -17546016, -9186935, -2343442, 11336566, -23412404, 39272644,
-18822694, -3134253, 21603148, 12954695, 20616380, -10597295, -13485660, -13180718, 24962350, 8963060,
-4740570, 22501334, -19208168, -62892816, -3892314, 4514011, 7846369, -35213364, 27900108, 20409684,
--37803228, -28963112, 1326608, 16197932, 1737314, 9453223, 20654498, -4796405, 12999792, -17811766,
--20660940, -16144245, -21464100, -33390150, 9999758, 4367445, -22424024, 31173946, 12283070, -6398965,
--6680285, -16773458, -12829604, -29931090, -16341814, 12390444, 28208808, -9067213, 3373160, 12978317,
--23881092, 19479824, 24576876, 5548561, -5478231, 22748294, 6278169, 4933307, -13972602, -14074071,
--549219, 34301220, -8696235, -23524072, 165356, -29366838, -36941012, -21114596, -5521181, -13657996,
--24065238, -12350715, -13008919, 15737834, 30451854, 11491722, -14146549, -29339996, 31492310, 17252346,
--15476378, -8026220, -8359080, 2001455, 7240241, -9524090, 16232829, 15562814, 612033, -10022306,
--10017474, -8898098, -1463510, 6261526, -4934918, -9837086, -24528558, 7809861, 20906290, -11834782,
-18407692, 984621, 12185896, -10105521, 13555991, 41192496, -15787226, 18287434, 34784404, 6703370,
--6835978, -9207873, 9545028, 1431298, 17261474, -13083007, 47656420, -14226005, -33567852, 8357470,
--15945603, 39366060, 11358578, -10954851, 815507, -22000970, -33364380, 40299680, 2652679, -9044127,
-36446556, -18322868, 2591476, -9419937, 19455128, -26366268, -35443144, -20356534, 2797634, 16670379,
-20032802, 14522895, 19369228, 47296716, -17997524, 18949396, 29767344, -4385699, 916976, 35718560,
-3964792, -19409494, -22529250, -19890530, 36767604, -24437290, 14726906, 17343614, -11522860, 3716221,
--19847044, -4351876, 16662862, -14347338, 12162274, -4621922, -24888798, -55206972, -4516158, 50240380,
-21403970, 5466420, -9328132, -14629732, -2119566, -19279572, 7046968, -27312770, 33968360, 2960306,
-4787815, 3269544, -10396505, -32904282, -11933030, 27521614, -21033528, -4953708, -14216342, 12738873,
--9853192, 37984692, -4912369, 8502425, -12421582, -33856692, 8900783, -25586194, -4712653, -1335198,
--47319804, -39980776, -37398964, 14004278, -5695127, -19813758, -12131135, -12170864, -10786273, -17397838,
--10964515, -1808718, -41914048, 13763223, 6732361, 17814988, -7755101, 39884140, -1970853, 9648644,
--11135240, -1921998, 22451942, -29170882, -6785512, -9058623, 15607374, 8588861, 18762564, -7444789,
--37512780, 10387915, 998580, 62495532, 64986076, 7223598, 1047435, 14616847, 8016557, 15649787,
-28223304, 9784472, 29265908, 43109660, -10568841, 5140539, -35616016, -5682242, 4959077, -5230734,
--10458245, -22354232, -18118320, 9567040, 10235981, -48275968, 34164856, 8645232, 48125644, -3468186,
--9470940, 15187541, -3330210, 50075024, 12829604, -3070902, 9625559, 9553618, -13725105, -31309774,
--24435680, -12530030, 37479496, 157840, 41154376, 4802847, 40153112, -11949673, -56337624, -21072184,
--16802986, 28792924, 2828773, -27157078, -40102648, -27389544, -6386617, 34124588, -30576946, -25407952,
--18129056, 30770756, -16260209, -8153459, -40629316, -38003480, 10615012, 7857106, 50629612, 15314780,
--7201050, 2029909, 1872606, 37700688, 15772194, -19594178, 37560564, -3022583, -70213592, -22457848,
-46395848, 49450104, -33840048, -35830228, -34394636, 19529216, 32203664, 60875792, 20164872, 7573638,
--33266132, -3813394, -391916, 13596793, 32516660, 22164716, 3725884, -37108516, -70023000, -19044958,
--34354368, 54322748, 59558312, 100364792, -27739046, -96022584, -18643380, -32701344, 77300288, 25952340,
-78459928, 20147692, -22746684, -72698224, -46891380, 3473555, 11974906, 83199960, 36372468, -1819456,
--64658048, -116964848, -27704686, 3842385, 57890252, 125777040, 30533460, 39127152, -76527192, -120902792,
-9021579, 30238718, 101604968, 59762324, 45086420, -20090246, -74926776, -61756260, 3670050, 21627308,
-2703145, 53289808, -36320928, -33377264, -5237713, -81202800, 16903918, -38385732, 51882132, 1436667,
-5345087, -20291572, -54413476, 33552822, -54757612, 58003532, 5436892, 7632157, 9065602, -30555472,
-30394946, 5959804, 20350628, -29154774, 8695698, 3036542, 37066104, -12995497, 7198365, 29218126,
--32580548, -14533096, 388695, -24596740, 42004244, -7135015, -20830592, 42887932, 43544524, -9420474,
--36477156, -5487895, -32409824, -2609193, 16159278, 56371, -39701604, 7432441, 17806398, -10160819,
-20424180, -15784005, 6546067, 27344984, -11909407, 19076634, -44634912, -39741332, 41533944, 27369680,
-65285112, 352724, -18934900, 60210608, -34333968, -25822954, 18367428, 22463752, 30871688, -26156350,
--15321759, 11956115, -7292318, 35620848, -26554172, -76734960, 20570746, 48212080, 1013075, -33564096,
-8509404, 26615912, -5541582, -4725001, -966368, -21809844, -12732431, 80502720, 22468048, 21867290,
--68539088, -17929878, -53742924, -46308876, 41028748, 42242612, 85385024, 38483444, -11551315, -17563196,
--10140955, 25857314, 18496814, -624381, 41157596, 6810745, -17012366, -21016886, -16383153, 28369332,
--609349, 24524264, 11451993, 14071387, 3090766, -8359617, 2077154, -2088965, 2830920, -8831527,
--2951180, 6401649, 5833640, 53699440, 43546136, 34418796, -4904853, 7513509, -24652038, -6476811,
--16212965, -28562070, -29022168, 5065377, 12175695, 18074832, 23408646, 18112414, -16409459, -37976100,
-49041012, -41194640, -19920596, -13675176, 13985487, -2069101, 21181704, 21924734, 18408766, -36599564,
--16896402, -1336272, -18828600, -56920664, 26350162, -18839338, -18276160, 11249593, 27908160, -91805,
--101211440, -55207508, -68036040, 49380848, 15797963, 146582400, 158503088, 151371824, 180178704, 170931648,
-129291400, 75900664, 102373768, 41882372, 15068356, -82077360, -64566244, -178295904, -148969872, -139623488,
--75197896, -103356776, -71624488, -5462662, -17286170, -8757975, -4027606, 2536715, 8727910, 7075959,
-29717416, 24642374, 30727270, 64755220, 73468640, 70672080, 58719184, 138063328, 46520400, 61188252,
-105774304, 109945256, 51662552, 111295488, 139947744, 106662832, 100910792, 95799248, 24975234, 61392264,
-122573000, 114757768, 85029080, 98944776, 95597920, 10949482, -8668318, -6726456, -31142808, -49916648,
-14867029, -56121264, -85837608, -67704792, -75654776, -131582768, -39023536, -78740176, -79629768, -133531608,
--91513944, -115153440, -122459184, -70647384, -130706592, -165349264, -101339752, 6479495, -672162, 0,
-0, 0, 0, },
+-848256, -2347200, 1889786, 4907000, -1739999, 3080029, 3562139, 873489, 1805497, 4203699,
+4820564, -1772748, 1234266, -3221226, -3966402, 4744328, -9451076, 529892, -6005975, -4046933,
+-2385318, -933619, 11103027, -158914, 2776160, 2876554, 420907, -907312, -488016, -839666,
+1137093, 2854006, 2432025, -752693, 103079, -830002, -3867618, 1779190, 1083406, -1492501,
+-5880884, -5230734, -176094, 334471, 709207, 3226594, 3525631, -4456566, -3146601, -3311957,
+2951716, 4565014, 2816962, 6103686, -190052, -630286, -1303523, 4073777, -2573759, 559420,
+408022, -3329137, -4973572, -1956895, 5257040, 117038, 7946763, 250182, -931471, 187368,
+5209259, -796180, -425739, 2817499, 2080912, 7327214, 2882997, -3787088, -561567, 2501819,
+-388158, 2665027, -6706055, -4909148, -1118302, -5785321, 2454037, -1354525, -568009, -3938485,
+-1659468, 3496640, 3636764, -1491427, -1035624, -2467459, -5420786, 6010807, 3679713, 63351,
+689342, -430570, 222265, 4817880, -2449742, 803159, -7824357, -6547141, -1578937, 481573,
+-5448166, -1122597, 1975148, 364535, 121333, -2859375, -2098629, 5031554, -2369211, -2306398,
+-716723, -841277, 2265595, -1306744, -3376381, -239444, 2937758, -4331475, 156229, -4633196,
+280247, -3429532, 4955856, -416075, -5337571, -901406, -592169, 492848, -7631083, -1048509,
+503048, -5172751, 2165201, -26844, -5990943, 2514167, 3332358, -3196530, -3852586, -6400038,
+2956548, 2305324, -105764, -5415954, 2425046, -6763500, -1952063, -875636, -3496640, 3380139,
+7613904, -3033321, -1048509, 463320, -3186329, 2309082, -492848, -2454574, -4378719, -2196876,
+6899328, 6797860, 3751117, 7883413, 4569845, 2614561, 7310035, -4369593, 1632625, 3286187,
+-107911, 1435056, -2121714, 1585380, -10034654, 413391, -525597, 3850975, -2214056, -1063541,
+-624381, 3020436, -3104188, -274341, 1008780, 2218351, 2024540, -271657, -3301756, 927176,
+1334661, 2763275, 2014877, 3180423, -3055869, -1590212, -409096, -5375152, -478889, 1872606,
+5127117, 5856725, -514859, 3415036, 2511482, 1074, 2321967, 2856690, 3857954, -974421,
+297963, -2196876, 839666, -1829656, 1991791, -2967286, -2759517, 2160369, 402653, -6684043,
+-6768332, 2659122, -1015760, 5648419, 5196911, 673236, -130460, 10700911, -3102040, -34897,
+8533026, 573915, -5369783, -7251516, 5126044, -1982664, -256087, -4423817, 1136556, -3109556,
+3374234, 16552267, -6283001, -4631586, -6215892, -6214818, 848793, -5042829, -13222594, -164819,
+961536, 185220, -5465883, -931471, 3846143, -5127654, -3457986, 7783555, 2161442, -1822677,
+-2188286, 5043366, -2815351, 3635690, 2843805, -6884296, -5018670, -4045322, 4174171, -3462818,
+-2509872, -1857573, -2736968, -310848, -5129802, 80531, -1851668, 1190243, -1090922, -10220412,
+4295504, -5730560, 4054449, 809601, -8873402, 1647120, 5146445, 1640141, 8884677, -4090420,
+54224, 909459, 1783485, 3090766, -3891777, 942745, 2807835, -4038880, 1764158, 2519535,
+-2606508, 1392106, -1407676, -9050570, 2654827, 9175124, 7113003, 8639327, 1233729, -1399623,
+-7303055, -3325379, -3529390, -2266669, 7158100, 10620380, 563714, -251792, 7110319, -11334956,
+84289, -474594, -347892, -3350075, -4090420, 4809290, 5193153, 702764, -1278290, 2669322,
+-5821292, -3772592, 4318590, -4197257, 9096204, 8907225, 1341104, 5741298, 4285304, 1529545,
+-3762928, 1979443, -201327, -5761162, 6295885, 177167, 2975876, 5869610, -6008123, -1557463,
+-7126962, -794569, 1763621, 7647726, -6806987, -1835562, 5248450, -90194, -4232154, 8465917,
+-5929203, -11884711, 2496987, -6120329, -2903935, 4848481, -2701535, 2084670, 1308354, -1501091,
+6199786, -3046206, 3128347, -1690070, 479426, -12029667, 2826089, 10812043, 1224603, 1478543,
+3708168, 10132365, 1777580, -10214506, 11441793, 4645544, 4377646, 6534256, 6238977, -149787,
+-1672890, 6175626, 5274757, 1492501, -4153770, 5373004, 3037616, 8043937, 9998684, 3503620,
+-1899986, 102005, 398358, 3880503, 12607340, 7119445, -6237903, 11667279, 974958, -1498944,
+2069101, -8691940, 10149545, -1300301, 717796, -1149441, 3010772, -1280437, 5539434, -6940131,
+10413685, 8442295, 289373, -1479079, -4844723, -10301479, -2936147, 4269198, -1769527, -3739843,
+6197101, 6679748, -3695819, -3678103, -12636331, -4363150, -908386, -339839, -14170171, 7968238,
+1646046, -8483634, -6458557, 2940979, -2543158, 1505386, -1142998, 1341104, -2357937, 1533840,
+5874442, -7321309, 310848, -285615, 628139, 10888279, 6557342, -448824, 14395120, 6127308,
+13037910, 2674154, 4671314, 13160854, -4942971, -9338333, -5289252, 12290049, 3498788, -7454990,
+10044855, -2964601, -5203353, 8281771, 20855824, -5594732, 1458141, 2945811, 4344360, -5629092,
+1118302, 10937134, 1657321, 13524315, -2555506, 14549202, 10971494, 3257733, 9279277, 5282273,
+-4811437, 3400004, -875100, -1612760, 1909650, 722091, -463320, 3635153, 3220689, 9316858,
+6982006, -8300561, 3323231, 3338263, -5391795, 79457, -13433047, -18378702, 7797513, -4911832,
+-11274289, -2815351, -5803575, 7517267, 2286533, -3968013, -8353175, 6688338, -5883032, 3933653,
+-6682969, 687195, -2384781, 10515691, 2468533, -4888210, 4134443, -7803956, 950798, 445066,
+1993939, -4698158, 5363341, 6172942, -749472, -3875671, -14004815, -11768747, -9263708, 4442070,
+1161252, 2389076, -11481521, 7408282, 5031554, 9181566, -9842991, 9469866, 7074348, -5416491,
+-4711579, -2631204, 9400073, 6731288, -4194036, 1156420, 14260365, 7471633, 3664144, 8518531,
+5673115, 2471217, -4743792, 1323387, 653909, -1753420, -5250598, 12965433, 5939940, -11537356,
+8006893, 8233453, 7939247, 6499896, 1708860, -7056632, 271657, -661425, 11128260, 1803886,
+5017059, 10399190, -1723356, -10615549, 2528662, 6284611, 11285563, -14521284, -8297340, 4495220,
+280247, 1802813, -8700530, -1735704, -8427800, -721018, 4209605, -2324651, -4563403, -5178657,
+2481954, -884226, -2955474, 5305895, 674847, -9218074, 9416716, 6092948, -2809446, 3792993,
+5691369, -6195491, -2088428, 24169392, -751082, 9477919, 6622840, -20026896, -10635950, -1036161,
+-776315, -130460, 11506754, 2677375, -5465346, 11927124, 7362111, -1349694, -1817308, 3904125,
+-1785633, -4029753, -8813273, -10474351, 6046240, -2172717, -4821101, -355409, -16349867, -2907156,
+1314797, 9311489, -10694469, -2980707, 1680943, 923955, 2674154, 1009317, 11987254, -13404593,
+-4187593, 3229279, -70330, -7821673, -1289027, 10799158, 9548786, 8084739, -1685775, -13338021,
+-5649493, 5112085, -954020, 9303973, 123480, 22549, -6021544, -3995930, 8775692, -9538585,
+7609609, 5362267, -5881421, -3336653, -261993, 1241782, -5783711, 3770981, -17704392, -1662689,
+3056406, 11752641, 2098629, -1010928, 8002061, -5876052, 16691854, -16562468, -937377, -3919695,
+3309809, -1249836, -684510, 3675955, -2383707, -5909338, -2995203, -3663070, -8979703, -1948841,
+7539278, -1987496, -3591130, 9803800, 551903, 11883638, -11281805, -7260642, 15934866, -1918240,
+-168041, 542777, -8791798, -1462973, -11150272, 3156264, -13523778, -693637, 11484206, -3802120,
+8110509, 9235790, 6421513, 7212861, -8801462, 9361418, 1990717, -25560424, -3304441, 3390877,
+-1093606, -3092913, -9833328, 8265128, -8201240, -2093260, -9403831, -10104447, -14100915, 13282186,
+1247151, 15518791, -6674379, 11611444, 17057462, -10711112, 14199699, -16202227, -11765526, -14753213,
+-3474092, -10598906, 4901632, 4131759, 1307818, 12462384, 19557670, 3412889, -5888400, -10329933,
+6207302, 19044958, -369367, 5832029, 408559, 7911330, 4546760, 6190122, 9536975, -11647951,
+-1522566, -4006131, 15344844, 12315819, -1141388, 18820546, 9113384, 2149631, -17788680, -8031589,
+-13700409, -5565741, 762357, 5457293, -5282810, 1207423, 18047452, -2977486, -557809, 1464584,
+18559628, -11181410, -5282810, -4249334, -2449742, -10929081, 12610561, 1399086, 8273718, -13210783,
+1308354, -974421, -8732205, -2726767, -15699179, 5282273, -251256, 3726958, -2386928, -373662,
+-18096308, -5420786, 6383395, 11752641, -3702799, 3520263, 22958748, -894964, 983011, 4957466,
+10235981, -9191230, 2066953, 12642236, -7089918, 9524090, 2688113, 10077604, -11375758, -4615479,
+3041911, 5046587, -10887742, -16687022, 4671851, -1814087, -16754131, 4584878, 1756642, 15221901,
+13547401, -12508019, -14911053, 3352759, -11354820, -6030671, 578210, 22706418, 440234, -2882997,
+-20166482, -10156524, -1612223, -15126875, -22845468, 15795279, -5759551, -7245610, -1134945, 17135846,
+-5150740, 1896228, -3208341, -3409667, -9701794, -5274757, 1934346, -23995982, -15167140, -4408247,
+-8458401, -8101919, -2471754, -9391483, 8535174, 3779034, 3017215, -5710696, 4566087, -34645352,
+32723356, 18967650, -2753074, -4363687, 18708340, 1129040, -10235444, -15425375, -1283658, -5396090,
+-5677410, -9277666, -8651675, 11881490, 12029130, -5017596, 25414932, -13547937, -9859634, -10075456,
+1531156, 7854422, -26724898, 8243653, -6794639, 14528264, -13179107, 6120329, 3268470, 16307991,
+1560147, 38288560, 12731894, -1011465, 1832340, -15142981, -19134616, 23794656, -6965900, 2457258,
+32079648, -8602819, -1400696, -7128572, 25033216, 4476430, -10167798, 14370961, -5226975, 21489868,
+11573863, 5077188, 3339874, -2798708, -8259759, -3124052, -2174864, -23826332, -5793374, -4210142,
+13032005, -7710540, 2519535, 3823595, -16698296, -25491168, -823560, 21041044, -1377074, 18606872,
+-3259343, -27369680, -10316511, 605590, 6123013, 4201552, -21739514, -492848, -6192806, 15111306,
+-16127602, 19254338, 29618632, 18393734, -5990406, 2747169, 11959336, -5130876, 23195508, 25900800,
+23656680, 6759742, 25922276, -1904818, -10486700, 2283312, -13639742, -18234284, 9200357, -8489003,
+20932060, 9823664, 5113696, -8282845, -27255326, -8667244, -19506130, 11455752, 14190035, -140660,
+6924561, 4776541, 6857989, 5822365, 2595771, -1441498, 3340411, -3964255, 7376070, -13091060,
+-36857260, -14643154, 20180978, 1313723, -6019934, -12176769, -77846, 17154100, 21682606, 4803921,
+-13314399, -2153926, 17346300, -20790326, 2001455, -2397129, 15522012, 17949742, -14209362, 27127014,
+5209259, 1330903, 37962680, 462246, -11923903, 13586592, -6360310, 2202245, -8138426, 3142306,
+25194816, 3248069, 32092532, 13919989, -28133110, -30350386, -6801081, 8374650, 17056388, -23420994,
+-8565775, -3031710, 28762322, 26925150, -22913650, -450972, -14120779, 9172440, -5119064, 30710626,
+-32212, -6285685, 19346144, -3741990, -24225226, -11701638, -4808753, 24320790, -23050016, 12352326,
+35602596, 14506252, 16258062, -16554415, 12008192, 21009906, 15062987, -27146878, -14921253, 19420768,
+53271016, 4738960, 10550587, -14396730, 3630321, 687195, -3853660, -13387950, 3214246, -3715684,
+24912958, 22317724, -28661390, -10562935, 27670326, 16292958, 9128416, 4704063, 14367202, 19894288,
+4534412, 12597139, 8773008, -11489038, 668941, -11178726, -7088307, 5373541, -3833258, 4052302,
+-12468827, -8124468, 6450504, -114354, 9379135, 10431402, -26648662, 20973400, 2429341, 17347372,
+-18461380, 11987254, 13973139, -9658845, -20947630, -17323214, -23084912, -19217832, -19431506, 8962523,
+30409980, 11112691, 8215736, 17923436, -664646, 2629594, -14309220, 24493662, -29133300, -51233592,
+16520592, -8934069, -20401, -42423540, 8689793, 18968186, -721555, 14212584, 3649112, 104153,
+-6353331, 12906377, 9430674, 12348568, -17546016, -9186935, -2343442, 11336566, -23412404, 39272644,
+18822694, -3134253, 21603148, 12954695, 20616380, -10597295, -13485660, -13180718, 24962350, 8963060,
+4740570, 22501334, -19208168, -62892816, -3892314, 4514011, 7846369, -35213364, 27900108, 20409684,
+-37803228, -28963112, 1326608, 16197932, 1737314, 9453223, 20654498, -4796405, 12999792, -17811766,
+-20660940, -16144245, -21464100, -33390150, 9999758, 4367445, -22424024, 31173946, 12283070, -6398965,
+-6680285, -16773458, -12829604, -29931090, -16341814, 12390444, 28208808, -9067213, 3373160, 12978317,
+-23881092, 19479824, 24576876, 5548561, -5478231, 22748294, 6278169, 4933307, -13972602, -14074071,
+-549219, 34301220, -8696235, -23524072, 165356, -29366838, -36941012, -21114596, -5521181, -13657996,
+-24065238, -12350715, -13008919, 15737834, 30451854, 11491722, -14146549, -29339996, 31492310, 17252346,
+-15476378, -8026220, -8359080, 2001455, 7240241, -9524090, 16232829, 15562814, 612033, -10022306,
+-10017474, -8898098, -1463510, 6261526, -4934918, -9837086, -24528558, 7809861, 20906290, -11834782,
+18407692, 984621, 12185896, -10105521, 13555991, 41192496, -15787226, 18287434, 34784404, 6703370,
+-6835978, -9207873, 9545028, 1431298, 17261474, -13083007, 47656420, -14226005, -33567852, 8357470,
+-15945603, 39366060, 11358578, -10954851, 815507, -22000970, -33364380, 40299680, 2652679, -9044127,
+36446556, -18322868, 2591476, -9419937, 19455128, -26366268, -35443144, -20356534, 2797634, 16670379,
+20032802, 14522895, 19369228, 47296716, -17997524, 18949396, 29767344, -4385699, 916976, 35718560,
+3964792, -19409494, -22529250, -19890530, 36767604, -24437290, 14726906, 17343614, -11522860, 3716221,
+-19847044, -4351876, 16662862, -14347338, 12162274, -4621922, -24888798, -55206972, -4516158, 50240380,
+21403970, 5466420, -9328132, -14629732, -2119566, -19279572, 7046968, -27312770, 33968360, 2960306,
+4787815, 3269544, -10396505, -32904282, -11933030, 27521614, -21033528, -4953708, -14216342, 12738873,
+-9853192, 37984692, -4912369, 8502425, -12421582, -33856692, 8900783, -25586194, -4712653, -1335198,
+-47319804, -39980776, -37398964, 14004278, -5695127, -19813758, -12131135, -12170864, -10786273, -17397838,
+-10964515, -1808718, -41914048, 13763223, 6732361, 17814988, -7755101, 39884140, -1970853, 9648644,
+-11135240, -1921998, 22451942, -29170882, -6785512, -9058623, 15607374, 8588861, 18762564, -7444789,
+-37512780, 10387915, 998580, 62495532, 64986076, 7223598, 1047435, 14616847, 8016557, 15649787,
+28223304, 9784472, 29265908, 43109660, -10568841, 5140539, -35616016, -5682242, 4959077, -5230734,
+-10458245, -22354232, -18118320, 9567040, 10235981, -48275968, 34164856, 8645232, 48125644, -3468186,
+-9470940, 15187541, -3330210, 50075024, 12829604, -3070902, 9625559, 9553618, -13725105, -31309774,
+-24435680, -12530030, 37479496, 157840, 41154376, 4802847, 40153112, -11949673, -56337624, -21072184,
+-16802986, 28792924, 2828773, -27157078, -40102648, -27389544, -6386617, 34124588, -30576946, -25407952,
+-18129056, 30770756, -16260209, -8153459, -40629316, -38003480, 10615012, 7857106, 50629612, 15314780,
+-7201050, 2029909, 1872606, 37700688, 15772194, -19594178, 37560564, -3022583, -70213592, -22457848,
+46395848, 49450104, -33840048, -35830228, -34394636, 19529216, 32203664, 60875792, 20164872, 7573638,
+-33266132, -3813394, -391916, 13596793, 32516660, 22164716, 3725884, -37108516, -70023000, -19044958,
+-34354368, 54322748, 59558312, 100364792, -27739046, -96022584, -18643380, -32701344, 77300288, 25952340,
+78459928, 20147692, -22746684, -72698224, -46891380, 3473555, 11974906, 83199960, 36372468, -1819456,
+-64658048, -116964848, -27704686, 3842385, 57890252, 125777040, 30533460, 39127152, -76527192, -120902792,
+9021579, 30238718, 101604968, 59762324, 45086420, -20090246, -74926776, -61756260, 3670050, 21627308,
+2703145, 53289808, -36320928, -33377264, -5237713, -81202800, 16903918, -38385732, 51882132, 1436667,
+5345087, -20291572, -54413476, 33552822, -54757612, 58003532, 5436892, 7632157, 9065602, -30555472,
+30394946, 5959804, 20350628, -29154774, 8695698, 3036542, 37066104, -12995497, 7198365, 29218126,
+-32580548, -14533096, 388695, -24596740, 42004244, -7135015, -20830592, 42887932, 43544524, -9420474,
+-36477156, -5487895, -32409824, -2609193, 16159278, 56371, -39701604, 7432441, 17806398, -10160819,
+20424180, -15784005, 6546067, 27344984, -11909407, 19076634, -44634912, -39741332, 41533944, 27369680,
+65285112, 352724, -18934900, 60210608, -34333968, -25822954, 18367428, 22463752, 30871688, -26156350,
+-15321759, 11956115, -7292318, 35620848, -26554172, -76734960, 20570746, 48212080, 1013075, -33564096,
+8509404, 26615912, -5541582, -4725001, -966368, -21809844, -12732431, 80502720, 22468048, 21867290,
+-68539088, -17929878, -53742924, -46308876, 41028748, 42242612, 85385024, 38483444, -11551315, -17563196,
+-10140955, 25857314, 18496814, -624381, 41157596, 6810745, -17012366, -21016886, -16383153, 28369332,
+-609349, 24524264, 11451993, 14071387, 3090766, -8359617, 2077154, -2088965, 2830920, -8831527,
+-2951180, 6401649, 5833640, 53699440, 43546136, 34418796, -4904853, 7513509, -24652038, -6476811,
+-16212965, -28562070, -29022168, 5065377, 12175695, 18074832, 23408646, 18112414, -16409459, -37976100,
+49041012, -41194640, -19920596, -13675176, 13985487, -2069101, 21181704, 21924734, 18408766, -36599564,
+-16896402, -1336272, -18828600, -56920664, 26350162, -18839338, -18276160, 11249593, 27908160, -91805,
+-101211440, -55207508, -68036040, 49380848, 15797963, 146582400, 158503088, 151371824, 180178704, 170931648,
+129291400, 75900664, 102373768, 41882372, 15068356, -82077360, -64566244, -178295904, -148969872, -139623488,
+-75197896, -103356776, -71624488, -5462662, -17286170, -8757975, -4027606, 2536715, 8727910, 7075959,
+29717416, 24642374, 30727270, 64755220, 73468640, 70672080, 58719184, 138063328, 46520400, 61188252,
+105774304, 109945256, 51662552, 111295488, 139947744, 106662832, 100910792, 95799248, 24975234, 61392264,
+122573000, 114757768, 85029080, 98944776, 95597920, 10949482, -8668318, -6726456, -31142808, -49916648,
+14867029, -56121264, -85837608, -67704792, -75654776, -131582768, -39023536, -78740176, -79629768, -133531608,
+-91513944, -115153440, -122459184, -70647384, -130706592, -165349264, -101339752, 6479495, -672162, 0,
+0, 0, 0, },
},
};
-const Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][240] ={
+const Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240] ={
{
{
591356864,
-602200576, 625467520, 657311488, 675305792, 655243456, 616993536, 612510656, 636582848, 605619904, 484448160,
-380037504, 423112256, 590311552, 738261376, 797214656, 832138112, 910296320, 1007401216, 1071398400, 1095982720,
-1089256320, 1031573312, 913199168, 777546368, 685862784, 657140736, 668234624, 696832704, 742273408, 813552704,
-913253952, 1030070592, 1139625600, 1216546304, 1250709504, 1250671872, 1231760128, 1203536768, 1166884608, 1119160064,
-1061989696, 1004802752, 959169792, 929753024, 912757312, 901457280, 889540864, 871032256, 842555008, 806505728,
-769039680, 734854400, 705459136, 680934848, 661060416, 645468096, 633794368, 624781888, 615331904, 602178560,
-584063488, 560285440, 528072672, 484184544, 428944832, 366892224, 304280192, 247500176, 202229616, 171427184,
-154277904, 148099056, 150429088, 158711920, 169591616, 179823296, 187428608, 191850816, 193787856, 194745632,
-195949296, 197934640, 201510736, 208074528, 218345392, 231886352, 248418768, 268307680, 291102144, 314787264,
-337050240, 356353984, 371552800, 381496704, 385412640, 383181408, 375294784, 362846368, 347200320, 329467488,
-310722080, 292437888, 275762656, 260609488, 246567088, 234356496, 225260832, 219650000, 217340384, 218822672,
-224834560, 235197776, 249167152, 266420048, 286923136, 310524512, 337267680, 367393120, 400790784, 437318400,
-477523040, 521913696, 569809536, 620230336, 673409024, 729850240, 788359488, 846688384, 903672960, 958912640,
-1010481792, 1054694208, 1088314112, 1109581184, 1116685056, 1106621952, 1076729472, 1026966400, 959503744, 876062208,
-777221056, 664998400, 544082688, 418661056, 289705760, 157642480, 25789132, -102029632, -225718256, -347099936,
--465098784, -576757184, -682193792, -784291648, -883714240, -978283520, -1067402432, -1153286272, -1237131520, -1317139200,
--1391275136, -1459658624, -1522985728, -1579894656, -1627292288, -1663214848, -1688108928, -1702371968, -1704015872, -1691106304,
--1665435264, -1630263808, -1585290624, -1528357120, -1461195136, -1387605632, -1306595072, -1214017024, -1110125568, -997769216,
--874274944, -733867072, -576635840, -405794400, -218905360, -12729746, 206384448, 427856064, 646835520, 856251136,
-1036709568, 1168554240, 1244153216, 1253890432, 1176388864, 1002391680, 748564480, 427082432, 39296804, -354520032,
--598867136, -562934400, -304085824, -39659728, 67954432, 43758200, 3848828, -113817, 5425081, -234613,
--4213363, 795106, 3238405, -993211, -2480881, 1097364, 1996086, -1024350, -1545651, 974421,
-1202591, -926639, -976568, 789200, 694174, -766652, -570694, 625992, 367220, -578747,
--257161, 485331, 141734, -388158, -8590, 346282, -38118, -208306, 187368, },
+602200576, 625467520, 657311488, 675305792, 655243456, 616993536, 612510656, 636582848, 605619904, 484448160,
+380037504, 423112256, 590311552, 738261376, 797214656, 832138112, 910296320, 1007401216, 1071398400, 1095982720,
+1089256320, 1031573312, 913199168, 777546368, 685862784, 657140736, 668234624, 696832704, 742273408, 813552704,
+913253952, 1030070592, 1139625600, 1216546304, 1250709504, 1250671872, 1231760128, 1203536768, 1166884608, 1119160064,
+1061989696, 1004802752, 959169792, 929753024, 912757312, 901457280, 889540864, 871032256, 842555008, 806505728,
+769039680, 734854400, 705459136, 680934848, 661060416, 645468096, 633794368, 624781888, 615331904, 602178560,
+584063488, 560285440, 528072672, 484184544, 428944832, 366892224, 304280192, 247500176, 202229616, 171427184,
+154277904, 148099056, 150429088, 158711920, 169591616, 179823296, 187428608, 191850816, 193787856, 194745632,
+195949296, 197934640, 201510736, 208074528, 218345392, 231886352, 248418768, 268307680, 291102144, 314787264,
+337050240, 356353984, 371552800, 381496704, 385412640, 383181408, 375294784, 362846368, 347200320, 329467488,
+310722080, 292437888, 275762656, 260609488, 246567088, 234356496, 225260832, 219650000, 217340384, 218822672,
+224834560, 235197776, 249167152, 266420048, 286923136, 310524512, 337267680, 367393120, 400790784, 437318400,
+477523040, 521913696, 569809536, 620230336, 673409024, 729850240, 788359488, 846688384, 903672960, 958912640,
+1010481792, 1054694208, 1088314112, 1109581184, 1116685056, 1106621952, 1076729472, 1026966400, 959503744, 876062208,
+777221056, 664998400, 544082688, 418661056, 289705760, 157642480, 25789132, -102029632, -225718256, -347099936,
+-465098784, -576757184, -682193792, -784291648, -883714240, -978283520, -1067402432, -1153286272, -1237131520, -1317139200,
+-1391275136, -1459658624, -1522985728, -1579894656, -1627292288, -1663214848, -1688108928, -1702371968, -1704015872, -1691106304,
+-1665435264, -1630263808, -1585290624, -1528357120, -1461195136, -1387605632, -1306595072, -1214017024, -1110125568, -997769216,
+-874274944, -733867072, -576635840, -405794400, -218905360, -12729746, 206384448, 427856064, 646835520, 856251136,
+1036709568, 1168554240, 1244153216, 1253890432, 1176388864, 1002391680, 748564480, 427082432, 39296804, -354520032,
+-598867136, -562934400, -304085824, -39659728, 67954432, 43758200, 3848828, -113817, 5425081, -234613,
+-4213363, 795106, 3238405, -993211, -2480881, 1097364, 1996086, -1024350, -1545651, 974421,
+1202591, -926639, -976568, 789200, 694174, -766652, -570694, 625992, 367220, -578747,
+-257161, 485331, 141734, -388158, -8590, 346282, -38118, -208306, 187368, },
{
519927808,
-530017216, 466860800, 320014240, 179574192, 91877944, 9543417, -86853904, -131920456, -83504904, 3501472,
-50432044, 26572962, -75433584, -251784400, -442617312, -551045888, -545525824, -486239168, -427736864, -359921472,
--270188864, -194567920, -165222016, -158624960, -136778608, -99855840, -60807612, -3196530, 94492504, 214905136,
-319855328, 399596768, 470877120, 531518304, 549032640, 501886240, 410894688, 317784096, 244543632, 185171072,
-128257928, 71558984, 14892262, -46188616, -112785304, -177098144, -230683232, -272678880, -305296480, -326825536,
--334137728, -327876736, -310965280, -285371584, -253225360, -217572848, -179481312, -137296144, -90265720, -40242768,
-10457708, 59538984, 102896680, 135867536, 157079840, 168768048, 173415744, 172320528, 167035568, 159876944,
-152828352, 147094032, 143294608, 141170736, 139437184, 136325488, 129968392, 118732760, 102292696, 82190640,
-60512332, 38238632, 15131170, -9887015, -38775500, -73349992, -113059648, -154378304, -192600832, -223349040,
--242643104, -247449168, -237033344, -213207552, -179452320, -140565152, -102270152, -69394320, -44122200, -26440892,
--15446850, -9341017, -5072357, 725313, 10765336, 27581744, 54035520, 92223152, 141980880, 200616304,
-263345920, 323517888, 373243936, 404991264, 413136672, 394475552, 348091008, 275402432, 180246352, 68402184,
--53290880, -177418656, -295944192, -400517504, -483597216, -539454848, -564354944, -556716352, -517826496, -451912704,
--364800032, -262651744, -151906544, -39088496, 70405248, 172821424, 264930768, 343262912, 404896768, 447910336,
-470505088, 470804128, 448127776, 403556736, 339092512, 257591200, 163818640, 64262912, -34533148, -126612952,
--206073600, -267704240, -308601984, -328299232, -327595936, -308422144, -274420480, -230245136, -180154544, -127826816,
--76795624, -29921964, 11274826, 46106472, 74042016, 95014880, 109733192, 119107496, 123791696, 124422520,
-121678032, 115948544, 107431624, 96491808, 83497384, 68584720, 51995412, 34262564, 15771657, -3326989,
--22571126, -41188200, -58603220, -74133816, -86342264, -93631896, -95170032, -90304912, -77953120, -57965952,
--32314260, -3663607, 25825638, 52808232, 71989024, 79367240, 74249784, 56223268, 24601572, -14105746,
--42410656, -44609140, -24227910, -1767379, 6867116, 3891777, 264677, 423591, 1282585, 801011,
-521839, 1245004, 1653562, 1271310, 1171989, 1639604, 1773285, 1404991, 1297080, 1534914,
-1468879, 1077500, 922344, 980326, 776315, 379568, 200253, 144955, -121333, -471910,
--623844, -716723, -967441, -1210644, -1279900, -1345399, -1514513, -1603097, -1554778, },
+530017216, 466860800, 320014240, 179574192, 91877944, 9543417, -86853904, -131920456, -83504904, 3501472,
+50432044, 26572962, -75433584, -251784400, -442617312, -551045888, -545525824, -486239168, -427736864, -359921472,
+-270188864, -194567920, -165222016, -158624960, -136778608, -99855840, -60807612, -3196530, 94492504, 214905136,
+319855328, 399596768, 470877120, 531518304, 549032640, 501886240, 410894688, 317784096, 244543632, 185171072,
+128257928, 71558984, 14892262, -46188616, -112785304, -177098144, -230683232, -272678880, -305296480, -326825536,
+-334137728, -327876736, -310965280, -285371584, -253225360, -217572848, -179481312, -137296144, -90265720, -40242768,
+10457708, 59538984, 102896680, 135867536, 157079840, 168768048, 173415744, 172320528, 167035568, 159876944,
+152828352, 147094032, 143294608, 141170736, 139437184, 136325488, 129968392, 118732760, 102292696, 82190640,
+60512332, 38238632, 15131170, -9887015, -38775500, -73349992, -113059648, -154378304, -192600832, -223349040,
+-242643104, -247449168, -237033344, -213207552, -179452320, -140565152, -102270152, -69394320, -44122200, -26440892,
+-15446850, -9341017, -5072357, 725313, 10765336, 27581744, 54035520, 92223152, 141980880, 200616304,
+263345920, 323517888, 373243936, 404991264, 413136672, 394475552, 348091008, 275402432, 180246352, 68402184,
+-53290880, -177418656, -295944192, -400517504, -483597216, -539454848, -564354944, -556716352, -517826496, -451912704,
+-364800032, -262651744, -151906544, -39088496, 70405248, 172821424, 264930768, 343262912, 404896768, 447910336,
+470505088, 470804128, 448127776, 403556736, 339092512, 257591200, 163818640, 64262912, -34533148, -126612952,
+-206073600, -267704240, -308601984, -328299232, -327595936, -308422144, -274420480, -230245136, -180154544, -127826816,
+-76795624, -29921964, 11274826, 46106472, 74042016, 95014880, 109733192, 119107496, 123791696, 124422520,
+121678032, 115948544, 107431624, 96491808, 83497384, 68584720, 51995412, 34262564, 15771657, -3326989,
+-22571126, -41188200, -58603220, -74133816, -86342264, -93631896, -95170032, -90304912, -77953120, -57965952,
+-32314260, -3663607, 25825638, 52808232, 71989024, 79367240, 74249784, 56223268, 24601572, -14105746,
+-42410656, -44609140, -24227910, -1767379, 6867116, 3891777, 264677, 423591, 1282585, 801011,
+521839, 1245004, 1653562, 1271310, 1171989, 1639604, 1773285, 1404991, 1297080, 1534914,
+1468879, 1077500, 922344, 980326, 776315, 379568, 200253, 144955, -121333, -471910,
+-623844, -716723, -967441, -1210644, -1279900, -1345399, -1514513, -1603097, -1554778, },
},
{
{
519927808,
-530017216, 466860800, 320014240, 179574192, 91877944, 9543417, -86853904, -131920456, -83504904, 3501472,
-50432044, 26572962, -75433584, -251784400, -442617312, -551045888, -545525824, -486239168, -427736864, -359921472,
--270188864, -194567920, -165222016, -158624960, -136778608, -99855840, -60807612, -3196530, 94492504, 214905136,
-319855328, 399596768, 470877120, 531518304, 549032640, 501886240, 410894688, 317784096, 244543632, 185171072,
-128257928, 71558984, 14892262, -46188616, -112785304, -177098144, -230683232, -272678880, -305296480, -326825536,
--334137728, -327876736, -310965280, -285371584, -253225360, -217572848, -179481312, -137296144, -90265720, -40242768,
-10457708, 59538984, 102896680, 135867536, 157079840, 168768048, 173415744, 172320528, 167035568, 159876944,
-152828352, 147094032, 143294608, 141170736, 139437184, 136325488, 129968392, 118732760, 102292696, 82190640,
-60512332, 38238632, 15131170, -9887015, -38775500, -73349992, -113059648, -154378304, -192600832, -223349040,
--242643104, -247449168, -237033344, -213207552, -179452320, -140565152, -102270152, -69394320, -44122200, -26440892,
--15446850, -9341017, -5072357, 725313, 10765336, 27581744, 54035520, 92223152, 141980880, 200616304,
-263345920, 323517888, 373243936, 404991264, 413136672, 394475552, 348091008, 275402432, 180246352, 68402184,
--53290880, -177418656, -295944192, -400517504, -483597216, -539454848, -564354944, -556716352, -517826496, -451912704,
--364800032, -262651744, -151906544, -39088496, 70405248, 172821424, 264930768, 343262912, 404896768, 447910336,
-470505088, 470804128, 448127776, 403556736, 339092512, 257591200, 163818640, 64262912, -34533148, -126612952,
--206073600, -267704240, -308601984, -328299232, -327595936, -308422144, -274420480, -230245136, -180154544, -127826816,
--76795624, -29921964, 11274826, 46106472, 74042016, 95014880, 109733192, 119107496, 123791696, 124422520,
-121678032, 115948544, 107431624, 96491808, 83497384, 68584720, 51995412, 34262564, 15771657, -3326989,
--22571126, -41188200, -58603220, -74133816, -86342264, -93631896, -95170032, -90304912, -77953120, -57965952,
--32314260, -3663607, 25825638, 52808232, 71989024, 79367240, 74249784, 56223268, 24601572, -14105746,
--42410656, -44609140, -24227910, -1767379, 6867116, 3891777, 264677, 423591, 1282585, 801011,
-521839, 1245004, 1653562, 1271310, 1171989, 1639604, 1773285, 1404991, 1297080, 1534914,
-1468879, 1077500, 922344, 980326, 776315, 379568, 200253, 144955, -121333, -471910,
--623844, -716723, -967441, -1210644, -1279900, -1345399, -1514513, -1603097, -1554778, },
+530017216, 466860800, 320014240, 179574192, 91877944, 9543417, -86853904, -131920456, -83504904, 3501472,
+50432044, 26572962, -75433584, -251784400, -442617312, -551045888, -545525824, -486239168, -427736864, -359921472,
+-270188864, -194567920, -165222016, -158624960, -136778608, -99855840, -60807612, -3196530, 94492504, 214905136,
+319855328, 399596768, 470877120, 531518304, 549032640, 501886240, 410894688, 317784096, 244543632, 185171072,
+128257928, 71558984, 14892262, -46188616, -112785304, -177098144, -230683232, -272678880, -305296480, -326825536,
+-334137728, -327876736, -310965280, -285371584, -253225360, -217572848, -179481312, -137296144, -90265720, -40242768,
+10457708, 59538984, 102896680, 135867536, 157079840, 168768048, 173415744, 172320528, 167035568, 159876944,
+152828352, 147094032, 143294608, 141170736, 139437184, 136325488, 129968392, 118732760, 102292696, 82190640,
+60512332, 38238632, 15131170, -9887015, -38775500, -73349992, -113059648, -154378304, -192600832, -223349040,
+-242643104, -247449168, -237033344, -213207552, -179452320, -140565152, -102270152, -69394320, -44122200, -26440892,
+-15446850, -9341017, -5072357, 725313, 10765336, 27581744, 54035520, 92223152, 141980880, 200616304,
+263345920, 323517888, 373243936, 404991264, 413136672, 394475552, 348091008, 275402432, 180246352, 68402184,
+-53290880, -177418656, -295944192, -400517504, -483597216, -539454848, -564354944, -556716352, -517826496, -451912704,
+-364800032, -262651744, -151906544, -39088496, 70405248, 172821424, 264930768, 343262912, 404896768, 447910336,
+470505088, 470804128, 448127776, 403556736, 339092512, 257591200, 163818640, 64262912, -34533148, -126612952,
+-206073600, -267704240, -308601984, -328299232, -327595936, -308422144, -274420480, -230245136, -180154544, -127826816,
+-76795624, -29921964, 11274826, 46106472, 74042016, 95014880, 109733192, 119107496, 123791696, 124422520,
+121678032, 115948544, 107431624, 96491808, 83497384, 68584720, 51995412, 34262564, 15771657, -3326989,
+-22571126, -41188200, -58603220, -74133816, -86342264, -93631896, -95170032, -90304912, -77953120, -57965952,
+-32314260, -3663607, 25825638, 52808232, 71989024, 79367240, 74249784, 56223268, 24601572, -14105746,
+-42410656, -44609140, -24227910, -1767379, 6867116, 3891777, 264677, 423591, 1282585, 801011,
+521839, 1245004, 1653562, 1271310, 1171989, 1639604, 1773285, 1404991, 1297080, 1534914,
+1468879, 1077500, 922344, 980326, 776315, 379568, 200253, 144955, -121333, -471910,
+-623844, -716723, -967441, -1210644, -1279900, -1345399, -1514513, -1603097, -1554778, },
{
591356864,
-602200576, 625467520, 657311488, 675305792, 655243456, 616993536, 612510656, 636582848, 605619904, 484448160,
-380037504, 423112256, 590311552, 738261376, 797214656, 832138112, 910296320, 1007401216, 1071398400, 1095982720,
-1089256320, 1031573312, 913199168, 777546368, 685862784, 657140736, 668234624, 696832704, 742273408, 813552704,
-913253952, 1030070592, 1139625600, 1216546304, 1250709504, 1250671872, 1231760128, 1203536768, 1166884608, 1119160064,
-1061989696, 1004802752, 959169792, 929753024, 912757312, 901457280, 889540864, 871032256, 842555008, 806505728,
-769039680, 734854400, 705459136, 680934848, 661060416, 645468096, 633794368, 624781888, 615331904, 602178560,
-584063488, 560285440, 528072672, 484184544, 428944832, 366892224, 304280192, 247500176, 202229616, 171427184,
-154277904, 148099056, 150429088, 158711920, 169591616, 179823296, 187428608, 191850816, 193787856, 194745632,
-195949296, 197934640, 201510736, 208074528, 218345392, 231886352, 248418768, 268307680, 291102144, 314787264,
-337050240, 356353984, 371552800, 381496704, 385412640, 383181408, 375294784, 362846368, 347200320, 329467488,
-310722080, 292437888, 275762656, 260609488, 246567088, 234356496, 225260832, 219650000, 217340384, 218822672,
-224834560, 235197776, 249167152, 266420048, 286923136, 310524512, 337267680, 367393120, 400790784, 437318400,
-477523040, 521913696, 569809536, 620230336, 673409024, 729850240, 788359488, 846688384, 903672960, 958912640,
-1010481792, 1054694208, 1088314112, 1109581184, 1116685056, 1106621952, 1076729472, 1026966400, 959503744, 876062208,
-777221056, 664998400, 544082688, 418661056, 289705760, 157642480, 25789132, -102029632, -225718256, -347099936,
--465098784, -576757184, -682193792, -784291648, -883714240, -978283520, -1067402432, -1153286272, -1237131520, -1317139200,
--1391275136, -1459658624, -1522985728, -1579894656, -1627292288, -1663214848, -1688108928, -1702371968, -1704015872, -1691106304,
--1665435264, -1630263808, -1585290624, -1528357120, -1461195136, -1387605632, -1306595072, -1214017024, -1110125568, -997769216,
--874274944, -733867072, -576635840, -405794400, -218905360, -12729746, 206384448, 427856064, 646835520, 856251136,
-1036709568, 1168554240, 1244153216, 1253890432, 1176388864, 1002391680, 748564480, 427082432, 39296804, -354520032,
--598867136, -562934400, -304085824, -39659728, 67954432, 43758200, 3848828, -113817, 5425081, -234613,
--4213363, 795106, 3238405, -993211, -2480881, 1097364, 1996086, -1024350, -1545651, 974421,
-1202591, -926639, -976568, 789200, 694174, -766652, -570694, 625992, 367220, -578747,
--257161, 485331, 141734, -388158, -8590, 346282, -38118, -208306, 187368, },
+602200576, 625467520, 657311488, 675305792, 655243456, 616993536, 612510656, 636582848, 605619904, 484448160,
+380037504, 423112256, 590311552, 738261376, 797214656, 832138112, 910296320, 1007401216, 1071398400, 1095982720,
+1089256320, 1031573312, 913199168, 777546368, 685862784, 657140736, 668234624, 696832704, 742273408, 813552704,
+913253952, 1030070592, 1139625600, 1216546304, 1250709504, 1250671872, 1231760128, 1203536768, 1166884608, 1119160064,
+1061989696, 1004802752, 959169792, 929753024, 912757312, 901457280, 889540864, 871032256, 842555008, 806505728,
+769039680, 734854400, 705459136, 680934848, 661060416, 645468096, 633794368, 624781888, 615331904, 602178560,
+584063488, 560285440, 528072672, 484184544, 428944832, 366892224, 304280192, 247500176, 202229616, 171427184,
+154277904, 148099056, 150429088, 158711920, 169591616, 179823296, 187428608, 191850816, 193787856, 194745632,
+195949296, 197934640, 201510736, 208074528, 218345392, 231886352, 248418768, 268307680, 291102144, 314787264,
+337050240, 356353984, 371552800, 381496704, 385412640, 383181408, 375294784, 362846368, 347200320, 329467488,
+310722080, 292437888, 275762656, 260609488, 246567088, 234356496, 225260832, 219650000, 217340384, 218822672,
+224834560, 235197776, 249167152, 266420048, 286923136, 310524512, 337267680, 367393120, 400790784, 437318400,
+477523040, 521913696, 569809536, 620230336, 673409024, 729850240, 788359488, 846688384, 903672960, 958912640,
+1010481792, 1054694208, 1088314112, 1109581184, 1116685056, 1106621952, 1076729472, 1026966400, 959503744, 876062208,
+777221056, 664998400, 544082688, 418661056, 289705760, 157642480, 25789132, -102029632, -225718256, -347099936,
+-465098784, -576757184, -682193792, -784291648, -883714240, -978283520, -1067402432, -1153286272, -1237131520, -1317139200,
+-1391275136, -1459658624, -1522985728, -1579894656, -1627292288, -1663214848, -1688108928, -1702371968, -1704015872, -1691106304,
+-1665435264, -1630263808, -1585290624, -1528357120, -1461195136, -1387605632, -1306595072, -1214017024, -1110125568, -997769216,
+-874274944, -733867072, -576635840, -405794400, -218905360, -12729746, 206384448, 427856064, 646835520, 856251136,
+1036709568, 1168554240, 1244153216, 1253890432, 1176388864, 1002391680, 748564480, 427082432, 39296804, -354520032,
+-598867136, -562934400, -304085824, -39659728, 67954432, 43758200, 3848828, -113817, 5425081, -234613,
+-4213363, 795106, 3238405, -993211, -2480881, 1097364, 1996086, -1024350, -1545651, 974421,
+1202591, -926639, -976568, 789200, 694174, -766652, -570694, 625992, 367220, -578747,
+-257161, 485331, 141734, -388158, -8590, 346282, -38118, -208306, 187368, },
},
{
{
557387968,
-593159680, 624878528, 592054784, 496021472, 439830944, 497395872, 568646144, 487803584, 279752160, 172007536,
-304443936, 546257024, 676547008, 654668992, 619560320, 679938944, 802748160, 890860480, 891186368, 816945216,
-714719040, 629804352, 583309184, 570548288, 582207488, 619833600, 686186496, 771129152, 854134784, 913836416,
-934031360, 911524672, 860876800, 801601408, 739015168, 666780224, 587767872, 520823296, 484344000, 481374016,
-501688672, 530134784, 551650944, 556632576, 545941888, 527557280, 506844256, 482542784, 451983552, 416671968,
-381627168, 351128064, 326048672, 304637728, 285190112, 267333792, 250556048, 233008960, 213521616, 193968784,
-177589376, 165159216, 154646736, 144559472, 135879344, 130301256, 127932040, 127418256, 127691528, 129051416,
-132694088, 139440944, 148960208, 160134096, 171935600, 183858960, 195841920, 208121232, 220983584, 234291008,
-247348784, 259533600, 271027456, 282685088, 295102368, 307943776, 320258528, 331289632, 340634944, 347539104,
-350454848, 347743104, 338704352, 323762688, 304125568, 281853472, 259888464, 241151136, 227387920, 219248416,
-217304400, 222436352, 235214416, 255448544, 282617984, 316601888, 357794400, 406395712, 461548992, 521332256,
-583583488, 646257280, 706787840, 761959424, 809219648, 847609088, 876638784, 894981504, 901453504, 896620608,
-881838912, 856941568, 820498176, 772231872, 713310848, 644071168, 563615168, 472553792, 374247872, 272054496,
-166945920, 59370944, -48115980, -152288272, -252473216, -350090848, -445352128, -536800032, -624242368, -709630592,
--794075584, -876057344, -953815040, -1027575744, -1097648640, -1161764480, -1216457088, -1260221824, -1293141120, -1313950208,
--1319934720, -1309968256, -1285501440, -1247996672, -1197440640, -1134339456, -1061370688, -981684032, -896877248, -808056192,
--717803392, -629496704, -545263808, -466033472, -393168832, -328561248, -273071872, -226043056, -186550832, -154243008,
--128655744, -108451680, -91867200, -77659448, -65245384, -54001160, -42885784, -31039728, -18444738, -5459977,
-8137890, 22981834, 39114804, 56093884, 74043624, 93453120, 113812872, 133719512, 152372016, 169460080,
-183575488, 192614256, 195772128, 193043216, 183014992, 163948560, 136519296, 101771936, 57531624, 3827353,
--46607912, -71913856, -62028992, -31731756, -6418829, 2238215, 1021129, -205085, 335007, 281320,
--333397, -169114, 317828, 137439, -227633, -49392, 216359, 30065, -185220, -26844,
-124017, -28454, -144418, -12348, 70867, -41876, -94489, 8053, 47782, -28454,
--42413, 27380, 38655, -5369, 1074, 35970, 30065, 16106, 27917, },
+593159680, 624878528, 592054784, 496021472, 439830944, 497395872, 568646144, 487803584, 279752160, 172007536,
+304443936, 546257024, 676547008, 654668992, 619560320, 679938944, 802748160, 890860480, 891186368, 816945216,
+714719040, 629804352, 583309184, 570548288, 582207488, 619833600, 686186496, 771129152, 854134784, 913836416,
+934031360, 911524672, 860876800, 801601408, 739015168, 666780224, 587767872, 520823296, 484344000, 481374016,
+501688672, 530134784, 551650944, 556632576, 545941888, 527557280, 506844256, 482542784, 451983552, 416671968,
+381627168, 351128064, 326048672, 304637728, 285190112, 267333792, 250556048, 233008960, 213521616, 193968784,
+177589376, 165159216, 154646736, 144559472, 135879344, 130301256, 127932040, 127418256, 127691528, 129051416,
+132694088, 139440944, 148960208, 160134096, 171935600, 183858960, 195841920, 208121232, 220983584, 234291008,
+247348784, 259533600, 271027456, 282685088, 295102368, 307943776, 320258528, 331289632, 340634944, 347539104,
+350454848, 347743104, 338704352, 323762688, 304125568, 281853472, 259888464, 241151136, 227387920, 219248416,
+217304400, 222436352, 235214416, 255448544, 282617984, 316601888, 357794400, 406395712, 461548992, 521332256,
+583583488, 646257280, 706787840, 761959424, 809219648, 847609088, 876638784, 894981504, 901453504, 896620608,
+881838912, 856941568, 820498176, 772231872, 713310848, 644071168, 563615168, 472553792, 374247872, 272054496,
+166945920, 59370944, -48115980, -152288272, -252473216, -350090848, -445352128, -536800032, -624242368, -709630592,
+-794075584, -876057344, -953815040, -1027575744, -1097648640, -1161764480, -1216457088, -1260221824, -1293141120, -1313950208,
+-1319934720, -1309968256, -1285501440, -1247996672, -1197440640, -1134339456, -1061370688, -981684032, -896877248, -808056192,
+-717803392, -629496704, -545263808, -466033472, -393168832, -328561248, -273071872, -226043056, -186550832, -154243008,
+-128655744, -108451680, -91867200, -77659448, -65245384, -54001160, -42885784, -31039728, -18444738, -5459977,
+8137890, 22981834, 39114804, 56093884, 74043624, 93453120, 113812872, 133719512, 152372016, 169460080,
+183575488, 192614256, 195772128, 193043216, 183014992, 163948560, 136519296, 101771936, 57531624, 3827353,
+-46607912, -71913856, -62028992, -31731756, -6418829, 2238215, 1021129, -205085, 335007, 281320,
+-333397, -169114, 317828, 137439, -227633, -49392, 216359, 30065, -185220, -26844,
+124017, -28454, -144418, -12348, 70867, -41876, -94489, 8053, 47782, -28454,
+-42413, 27380, 38655, -5369, 1074, 35970, 30065, 16106, 27917, },
{
557387968,
-593159680, 624878528, 592054784, 496021472, 439830944, 497395872, 568646144, 487803584, 279752160, 172007536,
-304443936, 546257024, 676547008, 654668992, 619560320, 679938944, 802748160, 890860480, 891186368, 816945216,
-714719040, 629804352, 583309184, 570548288, 582207488, 619833600, 686186496, 771129152, 854134784, 913836416,
-934031360, 911524672, 860876800, 801601408, 739015168, 666780224, 587767872, 520823296, 484344000, 481374016,
-501688672, 530134784, 551650944, 556632576, 545941888, 527557280, 506844256, 482542784, 451983552, 416671968,
-381627168, 351128064, 326048672, 304637728, 285190112, 267333792, 250556048, 233008960, 213521616, 193968784,
-177589376, 165159216, 154646736, 144559472, 135879344, 130301256, 127932040, 127418256, 127691528, 129051416,
-132694088, 139440944, 148960208, 160134096, 171935600, 183858960, 195841920, 208121232, 220983584, 234291008,
-247348784, 259533600, 271027456, 282685088, 295102368, 307943776, 320258528, 331289632, 340634944, 347539104,
-350454848, 347743104, 338704352, 323762688, 304125568, 281853472, 259888464, 241151136, 227387920, 219248416,
-217304400, 222436352, 235214416, 255448544, 282617984, 316601888, 357794400, 406395712, 461548992, 521332256,
-583583488, 646257280, 706787840, 761959424, 809219648, 847609088, 876638784, 894981504, 901453504, 896620608,
-881838912, 856941568, 820498176, 772231872, 713310848, 644071168, 563615168, 472553792, 374247872, 272054496,
-166945920, 59370944, -48115980, -152288272, -252473216, -350090848, -445352128, -536800032, -624242368, -709630592,
--794075584, -876057344, -953815040, -1027575744, -1097648640, -1161764480, -1216457088, -1260221824, -1293141120, -1313950208,
--1319934720, -1309968256, -1285501440, -1247996672, -1197440640, -1134339456, -1061370688, -981684032, -896877248, -808056192,
--717803392, -629496704, -545263808, -466033472, -393168832, -328561248, -273071872, -226043056, -186550832, -154243008,
--128655744, -108451680, -91867200, -77659448, -65245384, -54001160, -42885784, -31039728, -18444738, -5459977,
-8137890, 22981834, 39114804, 56093884, 74043624, 93453120, 113812872, 133719512, 152372016, 169460080,
-183575488, 192614256, 195772128, 193043216, 183014992, 163948560, 136519296, 101771936, 57531624, 3827353,
--46607912, -71913856, -62028992, -31731756, -6418829, 2238215, 1021129, -205085, 335007, 281320,
--333397, -169114, 317828, 137439, -227633, -49392, 216359, 30065, -185220, -26844,
-124017, -28454, -144418, -12348, 70867, -41876, -94489, 8053, 47782, -28454,
--42413, 27380, 38655, -5369, 1074, 35970, 30065, 16106, 27917, },
+593159680, 624878528, 592054784, 496021472, 439830944, 497395872, 568646144, 487803584, 279752160, 172007536,
+304443936, 546257024, 676547008, 654668992, 619560320, 679938944, 802748160, 890860480, 891186368, 816945216,
+714719040, 629804352, 583309184, 570548288, 582207488, 619833600, 686186496, 771129152, 854134784, 913836416,
+934031360, 911524672, 860876800, 801601408, 739015168, 666780224, 587767872, 520823296, 484344000, 481374016,
+501688672, 530134784, 551650944, 556632576, 545941888, 527557280, 506844256, 482542784, 451983552, 416671968,
+381627168, 351128064, 326048672, 304637728, 285190112, 267333792, 250556048, 233008960, 213521616, 193968784,
+177589376, 165159216, 154646736, 144559472, 135879344, 130301256, 127932040, 127418256, 127691528, 129051416,
+132694088, 139440944, 148960208, 160134096, 171935600, 183858960, 195841920, 208121232, 220983584, 234291008,
+247348784, 259533600, 271027456, 282685088, 295102368, 307943776, 320258528, 331289632, 340634944, 347539104,
+350454848, 347743104, 338704352, 323762688, 304125568, 281853472, 259888464, 241151136, 227387920, 219248416,
+217304400, 222436352, 235214416, 255448544, 282617984, 316601888, 357794400, 406395712, 461548992, 521332256,
+583583488, 646257280, 706787840, 761959424, 809219648, 847609088, 876638784, 894981504, 901453504, 896620608,
+881838912, 856941568, 820498176, 772231872, 713310848, 644071168, 563615168, 472553792, 374247872, 272054496,
+166945920, 59370944, -48115980, -152288272, -252473216, -350090848, -445352128, -536800032, -624242368, -709630592,
+-794075584, -876057344, -953815040, -1027575744, -1097648640, -1161764480, -1216457088, -1260221824, -1293141120, -1313950208,
+-1319934720, -1309968256, -1285501440, -1247996672, -1197440640, -1134339456, -1061370688, -981684032, -896877248, -808056192,
+-717803392, -629496704, -545263808, -466033472, -393168832, -328561248, -273071872, -226043056, -186550832, -154243008,
+-128655744, -108451680, -91867200, -77659448, -65245384, -54001160, -42885784, -31039728, -18444738, -5459977,
+8137890, 22981834, 39114804, 56093884, 74043624, 93453120, 113812872, 133719512, 152372016, 169460080,
+183575488, 192614256, 195772128, 193043216, 183014992, 163948560, 136519296, 101771936, 57531624, 3827353,
+-46607912, -71913856, -62028992, -31731756, -6418829, 2238215, 1021129, -205085, 335007, 281320,
+-333397, -169114, 317828, 137439, -227633, -49392, 216359, 30065, -185220, -26844,
+124017, -28454, -144418, -12348, 70867, -41876, -94489, 8053, 47782, -28454,
+-42413, 27380, 38655, -5369, 1074, 35970, 30065, 16106, 27917, },
},
{
{
528323936,
-521020320, 540578560, 592845056, 653261312, 717063552, 786136832, 823052096, 793232128, 737496320, 723856640,
-740865728, 720060928, 652342720, 596755648, 578083264, 559248768, 518883584, 479682880, 451339872, 413041632,
-363545888, 331671328, 327888544, 332871232, 337333184, 348948384, 358744672, 343110976, 302795200, 264860432,
-243976688, 231275392, 220823056, 219565712, 230320848, 247392800, 269858176, 301967872, 340665536, 375766688,
-401169824, 416797056, 423082208, 421671840, 418448992, 419976928, 429309888, 447531296, 474900992, 508197696,
-540729920, 566361216, 581071488, 581869824, 568189248, 543684352, 513382816, 479775232, 443569728, 406177216,
-369065472, 332418112, 296441856, 262662480, 232833936, 207938160, 188815360, 176282640, 170244448, 169768784,
-173987520, 182115200, 193182800, 206733424, 223349040, 243906368, 268926688, 299044608, 335399904, 379107104,
-430591936, 489461440, 554827072, 625948544, 702407552, 783147008, 865627008, 946551744, 1022604352, 1089404544,
-1141034880, 1172661888, 1183078784, 1173171968, 1143169408, 1093627008, 1027916160, 950953024, 865882560, 774277376,
-678871104, 583300608, 489188736, 395959488, 303981664, 215988000, 134995120, 62572304, -201863, -51686172,
--90861104, -118878256, -138328544, -151115744, -157800864, -158872992, -155626528, -149380032, -140627968, -129674192,
--117633248, -106007848, -95420752, -85375896, -75175888, -64502356, -53092776, -40415104, -25994216, -9968082,
-6793028, 23126252, 38115152, 51076288, 61049204, 66719632, 67147520, 62217968, 51898776, 35355632,
-11499775, -19732690, -57364120, -100552160, -148785728, -200636176, -253343472, -304400960, -352847136, -398310976,
--439680640, -475895808, -507457888, -535759584, -561140160, -582897920, -601041472, -616570496, -629873600, -640165952,
--646885952, -650597376, -652060864, -651216384, -647618816, -641518336, -633958656, -625735936, -616669248, -606437568,
--595811840, -585957568, -576570368, -566297344, -555121280, -544144960, -532675264, -518246848, -500029760, -478902272,
--453556608, -420442944, -378153632, -327303904, -265747888, -189495568, -98843304, 2273648, 112312320, 229941808,
-346832576, 451240000, 536794688, 597777856, 620114368, 590760960, 510590016, 381782336, 195273904, -35808752,
--234559968, -300432960, -214249072, -71331888, 15775415, 23496156, 4268124, -942745, 2696703, 938987,
--2272575, -402116, 1856500, 120259, -1471026, 93952, 1229971, -158914, -984084, 210453,
-777389, -264677, -656593, 226560, 473520, -271120, -405338, 216359, 273267, -221728,
--205085, 190589, 136365, -145492, -48855, 142808, 31675, -60130, 65498, },
+521020320, 540578560, 592845056, 653261312, 717063552, 786136832, 823052096, 793232128, 737496320, 723856640,
+740865728, 720060928, 652342720, 596755648, 578083264, 559248768, 518883584, 479682880, 451339872, 413041632,
+363545888, 331671328, 327888544, 332871232, 337333184, 348948384, 358744672, 343110976, 302795200, 264860432,
+243976688, 231275392, 220823056, 219565712, 230320848, 247392800, 269858176, 301967872, 340665536, 375766688,
+401169824, 416797056, 423082208, 421671840, 418448992, 419976928, 429309888, 447531296, 474900992, 508197696,
+540729920, 566361216, 581071488, 581869824, 568189248, 543684352, 513382816, 479775232, 443569728, 406177216,
+369065472, 332418112, 296441856, 262662480, 232833936, 207938160, 188815360, 176282640, 170244448, 169768784,
+173987520, 182115200, 193182800, 206733424, 223349040, 243906368, 268926688, 299044608, 335399904, 379107104,
+430591936, 489461440, 554827072, 625948544, 702407552, 783147008, 865627008, 946551744, 1022604352, 1089404544,
+1141034880, 1172661888, 1183078784, 1173171968, 1143169408, 1093627008, 1027916160, 950953024, 865882560, 774277376,
+678871104, 583300608, 489188736, 395959488, 303981664, 215988000, 134995120, 62572304, -201863, -51686172,
+-90861104, -118878256, -138328544, -151115744, -157800864, -158872992, -155626528, -149380032, -140627968, -129674192,
+-117633248, -106007848, -95420752, -85375896, -75175888, -64502356, -53092776, -40415104, -25994216, -9968082,
+6793028, 23126252, 38115152, 51076288, 61049204, 66719632, 67147520, 62217968, 51898776, 35355632,
+11499775, -19732690, -57364120, -100552160, -148785728, -200636176, -253343472, -304400960, -352847136, -398310976,
+-439680640, -475895808, -507457888, -535759584, -561140160, -582897920, -601041472, -616570496, -629873600, -640165952,
+-646885952, -650597376, -652060864, -651216384, -647618816, -641518336, -633958656, -625735936, -616669248, -606437568,
+-595811840, -585957568, -576570368, -566297344, -555121280, -544144960, -532675264, -518246848, -500029760, -478902272,
+-453556608, -420442944, -378153632, -327303904, -265747888, -189495568, -98843304, 2273648, 112312320, 229941808,
+346832576, 451240000, 536794688, 597777856, 620114368, 590760960, 510590016, 381782336, 195273904, -35808752,
+-234559968, -300432960, -214249072, -71331888, 15775415, 23496156, 4268124, -942745, 2696703, 938987,
+-2272575, -402116, 1856500, 120259, -1471026, 93952, 1229971, -158914, -984084, 210453,
+777389, -264677, -656593, 226560, 473520, -271120, -405338, 216359, 273267, -221728,
+-205085, 190589, 136365, -145492, -48855, 142808, 31675, -60130, 65498, },
{
474580480,
-398759264, 259799344, 101417064, -25479356, -112331112, -185142624, -246895664, -268402704, -242585120, -205237152,
--186441312, -177279600, -161690480, -147096192, -139762528, -115844928, -44347148, 72617696, 199460960, 297104896,
-342636384, 332363904, 279873504, 206060176, 123929672, 37595996, -44044888, -104937328, -137535584, -150566528,
--156369024, -158901984, -157653760, -153791504, -146374096, -128723928, -94373320, -44081932, 14919106, 72908680,
-119517128, 146036944, 149292528, 132541080, 102513888, 67012764, 34136400, 10182831, -3135863, -8441221,
--9655086, -9846213, -10952703, -13720273, -17641578, -21669720, -25094420, -27732066, -29929480, -32669132,
--37112276, -43723840, -51956756, -60378112, -66410396, -66276716, -56291988, -34812320, -3122441, 34979824,
-74029664, 108025408, 131982200, 143158784, 141070880, 126644088, 101371432, 66827008, 24585466, -23269596,
--73314016, -120408872, -158241088, -180575456, -182854480, -163737568, -125828584, -75043280, -18950470, 34983044,
-80619224, 113781736, 132411696, 136386144, 127179888, 107473504, 80718544, 50710140, 21187074, -4627291,
--24551644, -37795712, -44883480, -47211892, -46525772, -44491568, -42404748, -41034116, -40599252, -40838696,
--41083508, -40307196, -37228776, -30582852, -19549618, -4136054, 14667850, 34984120, 54367308, 70325792,
-80868328, 84793928, 81678464, 71765680, 55852292, 35109212, 10918881, -15112379, -41051296, -64691336,
--83730928, -95960840, -99542312, -93476744, -78015400, -54739360, -26379152, 3516505, 31205622, 53573812,
-68691560, 75903880, 75692360, 69438880, 58948964, 45899240, 31609348, 17107392, 3111167, -9999758,
--21968220, -32387812, -40741524, -46544560, -49306760, -48571248, -44215616, -36639828, -26604102, -15072651,
--3232500, 7695508, 16845398, 23805930, 28441810, 30910342, 31720480, 31430034, 30328374, 28571734,
-26295938, 23301808, 18974628, 12774306, 4409858, -6484864, -20079508, -35452272, -50543176, -62921272,
--69786240, -67693520, -53924924, -28570122, 5386963, 43156368, 77880104, 100739528, 104390256, 86776056,
-50828252, 2720325, -47143708, -84642528, -98577016, -86414208, -51794084, -1819456, 47561396, 71257800,
-54431732, 12842489, -18505404, -20906828, -7013145, 1737851, 650688, -1589675, -652835, 148176,
--869731, -1324461, -414464, -31139, -600222, -618475, 101469, 339839, 38118, 163209,
-667331, 766115, 553514, 638340, 883690, 816581, 587337, 552440, 564788, 373662,
-127775, 8590, -99858, -300111, -486942, -588947, -670552, -758062, -811749, },
+398759264, 259799344, 101417064, -25479356, -112331112, -185142624, -246895664, -268402704, -242585120, -205237152,
+-186441312, -177279600, -161690480, -147096192, -139762528, -115844928, -44347148, 72617696, 199460960, 297104896,
+342636384, 332363904, 279873504, 206060176, 123929672, 37595996, -44044888, -104937328, -137535584, -150566528,
+-156369024, -158901984, -157653760, -153791504, -146374096, -128723928, -94373320, -44081932, 14919106, 72908680,
+119517128, 146036944, 149292528, 132541080, 102513888, 67012764, 34136400, 10182831, -3135863, -8441221,
+-9655086, -9846213, -10952703, -13720273, -17641578, -21669720, -25094420, -27732066, -29929480, -32669132,
+-37112276, -43723840, -51956756, -60378112, -66410396, -66276716, -56291988, -34812320, -3122441, 34979824,
+74029664, 108025408, 131982200, 143158784, 141070880, 126644088, 101371432, 66827008, 24585466, -23269596,
+-73314016, -120408872, -158241088, -180575456, -182854480, -163737568, -125828584, -75043280, -18950470, 34983044,
+80619224, 113781736, 132411696, 136386144, 127179888, 107473504, 80718544, 50710140, 21187074, -4627291,
+-24551644, -37795712, -44883480, -47211892, -46525772, -44491568, -42404748, -41034116, -40599252, -40838696,
+-41083508, -40307196, -37228776, -30582852, -19549618, -4136054, 14667850, 34984120, 54367308, 70325792,
+80868328, 84793928, 81678464, 71765680, 55852292, 35109212, 10918881, -15112379, -41051296, -64691336,
+-83730928, -95960840, -99542312, -93476744, -78015400, -54739360, -26379152, 3516505, 31205622, 53573812,
+68691560, 75903880, 75692360, 69438880, 58948964, 45899240, 31609348, 17107392, 3111167, -9999758,
+-21968220, -32387812, -40741524, -46544560, -49306760, -48571248, -44215616, -36639828, -26604102, -15072651,
+-3232500, 7695508, 16845398, 23805930, 28441810, 30910342, 31720480, 31430034, 30328374, 28571734,
+26295938, 23301808, 18974628, 12774306, 4409858, -6484864, -20079508, -35452272, -50543176, -62921272,
+-69786240, -67693520, -53924924, -28570122, 5386963, 43156368, 77880104, 100739528, 104390256, 86776056,
+50828252, 2720325, -47143708, -84642528, -98577016, -86414208, -51794084, -1819456, 47561396, 71257800,
+54431732, 12842489, -18505404, -20906828, -7013145, 1737851, 650688, -1589675, -652835, 148176,
+-869731, -1324461, -414464, -31139, -600222, -618475, 101469, 339839, 38118, 163209,
+667331, 766115, 553514, 638340, 883690, 816581, 587337, 552440, 564788, 373662,
+127775, 8590, -99858, -300111, -486942, -588947, -670552, -758062, -811749, },
},
{
{
474580480,
-398759264, 259799344, 101417064, -25479356, -112331112, -185142624, -246895664, -268402704, -242585120, -205237152,
--186441312, -177279600, -161690480, -147096192, -139762528, -115844928, -44347148, 72617696, 199460960, 297104896,
-342636384, 332363904, 279873504, 206060176, 123929672, 37595996, -44044888, -104937328, -137535584, -150566528,
--156369024, -158901984, -157653760, -153791504, -146374096, -128723928, -94373320, -44081932, 14919106, 72908680,
-119517128, 146036944, 149292528, 132541080, 102513888, 67012764, 34136400, 10182831, -3135863, -8441221,
--9655086, -9846213, -10952703, -13720273, -17641578, -21669720, -25094420, -27732066, -29929480, -32669132,
--37112276, -43723840, -51956756, -60378112, -66410396, -66276716, -56291988, -34812320, -3122441, 34979824,
-74029664, 108025408, 131982200, 143158784, 141070880, 126644088, 101371432, 66827008, 24585466, -23269596,
--73314016, -120408872, -158241088, -180575456, -182854480, -163737568, -125828584, -75043280, -18950470, 34983044,
-80619224, 113781736, 132411696, 136386144, 127179888, 107473504, 80718544, 50710140, 21187074, -4627291,
--24551644, -37795712, -44883480, -47211892, -46525772, -44491568, -42404748, -41034116, -40599252, -40838696,
--41083508, -40307196, -37228776, -30582852, -19549618, -4136054, 14667850, 34984120, 54367308, 70325792,
-80868328, 84793928, 81678464, 71765680, 55852292, 35109212, 10918881, -15112379, -41051296, -64691336,
--83730928, -95960840, -99542312, -93476744, -78015400, -54739360, -26379152, 3516505, 31205622, 53573812,
-68691560, 75903880, 75692360, 69438880, 58948964, 45899240, 31609348, 17107392, 3111167, -9999758,
--21968220, -32387812, -40741524, -46544560, -49306760, -48571248, -44215616, -36639828, -26604102, -15072651,
--3232500, 7695508, 16845398, 23805930, 28441810, 30910342, 31720480, 31430034, 30328374, 28571734,
-26295938, 23301808, 18974628, 12774306, 4409858, -6484864, -20079508, -35452272, -50543176, -62921272,
--69786240, -67693520, -53924924, -28570122, 5386963, 43156368, 77880104, 100739528, 104390256, 86776056,
-50828252, 2720325, -47143708, -84642528, -98577016, -86414208, -51794084, -1819456, 47561396, 71257800,
-54431732, 12842489, -18505404, -20906828, -7013145, 1737851, 650688, -1589675, -652835, 148176,
--869731, -1324461, -414464, -31139, -600222, -618475, 101469, 339839, 38118, 163209,
-667331, 766115, 553514, 638340, 883690, 816581, 587337, 552440, 564788, 373662,
-127775, 8590, -99858, -300111, -486942, -588947, -670552, -758062, -811749, },
+398759264, 259799344, 101417064, -25479356, -112331112, -185142624, -246895664, -268402704, -242585120, -205237152,
+-186441312, -177279600, -161690480, -147096192, -139762528, -115844928, -44347148, 72617696, 199460960, 297104896,
+342636384, 332363904, 279873504, 206060176, 123929672, 37595996, -44044888, -104937328, -137535584, -150566528,
+-156369024, -158901984, -157653760, -153791504, -146374096, -128723928, -94373320, -44081932, 14919106, 72908680,
+119517128, 146036944, 149292528, 132541080, 102513888, 67012764, 34136400, 10182831, -3135863, -8441221,
+-9655086, -9846213, -10952703, -13720273, -17641578, -21669720, -25094420, -27732066, -29929480, -32669132,
+-37112276, -43723840, -51956756, -60378112, -66410396, -66276716, -56291988, -34812320, -3122441, 34979824,
+74029664, 108025408, 131982200, 143158784, 141070880, 126644088, 101371432, 66827008, 24585466, -23269596,
+-73314016, -120408872, -158241088, -180575456, -182854480, -163737568, -125828584, -75043280, -18950470, 34983044,
+80619224, 113781736, 132411696, 136386144, 127179888, 107473504, 80718544, 50710140, 21187074, -4627291,
+-24551644, -37795712, -44883480, -47211892, -46525772, -44491568, -42404748, -41034116, -40599252, -40838696,
+-41083508, -40307196, -37228776, -30582852, -19549618, -4136054, 14667850, 34984120, 54367308, 70325792,
+80868328, 84793928, 81678464, 71765680, 55852292, 35109212, 10918881, -15112379, -41051296, -64691336,
+-83730928, -95960840, -99542312, -93476744, -78015400, -54739360, -26379152, 3516505, 31205622, 53573812,
+68691560, 75903880, 75692360, 69438880, 58948964, 45899240, 31609348, 17107392, 3111167, -9999758,
+-21968220, -32387812, -40741524, -46544560, -49306760, -48571248, -44215616, -36639828, -26604102, -15072651,
+-3232500, 7695508, 16845398, 23805930, 28441810, 30910342, 31720480, 31430034, 30328374, 28571734,
+26295938, 23301808, 18974628, 12774306, 4409858, -6484864, -20079508, -35452272, -50543176, -62921272,
+-69786240, -67693520, -53924924, -28570122, 5386963, 43156368, 77880104, 100739528, 104390256, 86776056,
+50828252, 2720325, -47143708, -84642528, -98577016, -86414208, -51794084, -1819456, 47561396, 71257800,
+54431732, 12842489, -18505404, -20906828, -7013145, 1737851, 650688, -1589675, -652835, 148176,
+-869731, -1324461, -414464, -31139, -600222, -618475, 101469, 339839, 38118, 163209,
+667331, 766115, 553514, 638340, 883690, 816581, 587337, 552440, 564788, 373662,
+127775, 8590, -99858, -300111, -486942, -588947, -670552, -758062, -811749, },
{
528323936,
-521020320, 540578560, 592845056, 653261312, 717063552, 786136832, 823052096, 793232128, 737496320, 723856640,
-740865728, 720060928, 652342720, 596755648, 578083264, 559248768, 518883584, 479682880, 451339872, 413041632,
-363545888, 331671328, 327888544, 332871232, 337333184, 348948384, 358744672, 343110976, 302795200, 264860432,
-243976688, 231275392, 220823056, 219565712, 230320848, 247392800, 269858176, 301967872, 340665536, 375766688,
-401169824, 416797056, 423082208, 421671840, 418448992, 419976928, 429309888, 447531296, 474900992, 508197696,
-540729920, 566361216, 581071488, 581869824, 568189248, 543684352, 513382816, 479775232, 443569728, 406177216,
-369065472, 332418112, 296441856, 262662480, 232833936, 207938160, 188815360, 176282640, 170244448, 169768784,
-173987520, 182115200, 193182800, 206733424, 223349040, 243906368, 268926688, 299044608, 335399904, 379107104,
-430591936, 489461440, 554827072, 625948544, 702407552, 783147008, 865627008, 946551744, 1022604352, 1089404544,
-1141034880, 1172661888, 1183078784, 1173171968, 1143169408, 1093627008, 1027916160, 950953024, 865882560, 774277376,
-678871104, 583300608, 489188736, 395959488, 303981664, 215988000, 134995120, 62572304, -201863, -51686172,
--90861104, -118878256, -138328544, -151115744, -157800864, -158872992, -155626528, -149380032, -140627968, -129674192,
--117633248, -106007848, -95420752, -85375896, -75175888, -64502356, -53092776, -40415104, -25994216, -9968082,
-6793028, 23126252, 38115152, 51076288, 61049204, 66719632, 67147520, 62217968, 51898776, 35355632,
-11499775, -19732690, -57364120, -100552160, -148785728, -200636176, -253343472, -304400960, -352847136, -398310976,
--439680640, -475895808, -507457888, -535759584, -561140160, -582897920, -601041472, -616570496, -629873600, -640165952,
--646885952, -650597376, -652060864, -651216384, -647618816, -641518336, -633958656, -625735936, -616669248, -606437568,
--595811840, -585957568, -576570368, -566297344, -555121280, -544144960, -532675264, -518246848, -500029760, -478902272,
--453556608, -420442944, -378153632, -327303904, -265747888, -189495568, -98843304, 2273648, 112312320, 229941808,
-346832576, 451240000, 536794688, 597777856, 620114368, 590760960, 510590016, 381782336, 195273904, -35808752,
--234559968, -300432960, -214249072, -71331888, 15775415, 23496156, 4268124, -942745, 2696703, 938987,
--2272575, -402116, 1856500, 120259, -1471026, 93952, 1229971, -158914, -984084, 210453,
-777389, -264677, -656593, 226560, 473520, -271120, -405338, 216359, 273267, -221728,
--205085, 190589, 136365, -145492, -48855, 142808, 31675, -60130, 65498, },
+521020320, 540578560, 592845056, 653261312, 717063552, 786136832, 823052096, 793232128, 737496320, 723856640,
+740865728, 720060928, 652342720, 596755648, 578083264, 559248768, 518883584, 479682880, 451339872, 413041632,
+363545888, 331671328, 327888544, 332871232, 337333184, 348948384, 358744672, 343110976, 302795200, 264860432,
+243976688, 231275392, 220823056, 219565712, 230320848, 247392800, 269858176, 301967872, 340665536, 375766688,
+401169824, 416797056, 423082208, 421671840, 418448992, 419976928, 429309888, 447531296, 474900992, 508197696,
+540729920, 566361216, 581071488, 581869824, 568189248, 543684352, 513382816, 479775232, 443569728, 406177216,
+369065472, 332418112, 296441856, 262662480, 232833936, 207938160, 188815360, 176282640, 170244448, 169768784,
+173987520, 182115200, 193182800, 206733424, 223349040, 243906368, 268926688, 299044608, 335399904, 379107104,
+430591936, 489461440, 554827072, 625948544, 702407552, 783147008, 865627008, 946551744, 1022604352, 1089404544,
+1141034880, 1172661888, 1183078784, 1173171968, 1143169408, 1093627008, 1027916160, 950953024, 865882560, 774277376,
+678871104, 583300608, 489188736, 395959488, 303981664, 215988000, 134995120, 62572304, -201863, -51686172,
+-90861104, -118878256, -138328544, -151115744, -157800864, -158872992, -155626528, -149380032, -140627968, -129674192,
+-117633248, -106007848, -95420752, -85375896, -75175888, -64502356, -53092776, -40415104, -25994216, -9968082,
+6793028, 23126252, 38115152, 51076288, 61049204, 66719632, 67147520, 62217968, 51898776, 35355632,
+11499775, -19732690, -57364120, -100552160, -148785728, -200636176, -253343472, -304400960, -352847136, -398310976,
+-439680640, -475895808, -507457888, -535759584, -561140160, -582897920, -601041472, -616570496, -629873600, -640165952,
+-646885952, -650597376, -652060864, -651216384, -647618816, -641518336, -633958656, -625735936, -616669248, -606437568,
+-595811840, -585957568, -576570368, -566297344, -555121280, -544144960, -532675264, -518246848, -500029760, -478902272,
+-453556608, -420442944, -378153632, -327303904, -265747888, -189495568, -98843304, 2273648, 112312320, 229941808,
+346832576, 451240000, 536794688, 597777856, 620114368, 590760960, 510590016, 381782336, 195273904, -35808752,
+-234559968, -300432960, -214249072, -71331888, 15775415, 23496156, 4268124, -942745, 2696703, 938987,
+-2272575, -402116, 1856500, 120259, -1471026, 93952, 1229971, -158914, -984084, 210453,
+777389, -264677, -656593, 226560, 473520, -271120, -405338, 216359, 273267, -221728,
+-205085, 190589, 136365, -145492, -48855, 142808, 31675, -60130, 65498, },
},
{
{
570948288,
-560026688, 580181376, 651761280, 741916928, 808227456, 843835456, 857312512, 837136384, 774951680, 706217152,
-679031104, 684954432, 669311040, 616302016, 573348608, 574092160, 586936832, 569456832, 532186720, 511266464,
-508753920, 500068416, 481083584, 469860832, 471176704, 471000064, 463027008, 456938336, 460991712, 472953760,
-487162560, 498884064, 503802880, 502036032, 500722304, 507399392, 523648864, 547635712, 577758464, 611217856,
-643876800, 673844416, 701608704, 726164096, 744914304, 757558144, 766675264, 774677376, 782670272, 791276352,
-800164224, 807529536, 811386944, 810441536, 803607680, 790492480, 772253888, 750109056, 723654208, 692558656,
-658613376, 623875136, 588272000, 551226816, 513920224, 477741024, 442319360, 407270816, 374342368, 346103488,
-324013952, 308986912, 302183712, 304083136, 314027616, 331233792, 355143872, 384909600, 419871168, 460244416,
-506109280, 556402816, 610180096, 667974272, 730482688, 796728256, 864836224, 933754880, 1002700352, 1069331456,
-1129822848, 1180747776, 1219959168, 1245454080, 1254418176, 1244496256, 1215806464, 1170467200, 1109940864, 1034459008,
-945641216, 847554880, 743703680, 634964736, 522334048, 409629280, 301142176, 198468288, 102261024, 15424301,
--58399208, -118443920, -166344624, -202983920, -228296832, -243548272, -251478384, -254185296, -252344368, -246456496,
--237761344, -227809360, -217644784, -207521552, -197397776, -187577872, -178339920, -168868448, -157501280, -143418624,
--127228208, -109625816, -90643672, -70704288, -51351164, -34363496, -20870320, -11671574, -7842611, -10806138,
--21989696, -42191076, -71323840, -109272560, -156607936, -213349280, -277530592, -346465888, -418796896, -493406368,
--567116608, -635954752, -698211328, -753866624, -801667456, -839523328, -867368640, -886954240, -899010176, -902935808,
--899064448, -889133376, -874578816, -855873728, -833484544, -808545280, -782657920, -757145856, -732274752, -707778944,
--684467456, -663835520, -645579200, -627796992, -610332544, -594772992, -580344064, -563827712, -544390336, -523586592,
--499708160, -467863136, -426242208, -375602400, -312369216, -230306880, -129177048, -13320841, 116749560, 260566000,
-407468928, 542101120, 656437952, 742504256, 780045504, 750219648, 653257024, 490681760, 248766112, -54896660,
--315592576, -397934080, -278208128, -86560232, 26632556, 32959042, 5339181, -1480690, 3817152, 1295470,
--3219078, -542240, 2632278, 140123, -2107218, 150324, 1763084, -252329, -1420024, 335007,
-1135482, -409633, -951335, 375810, 700080, -432181, -585189, 369904, 397821, -374736,
--287226, 331786, 177167, -271657, -49392, 255014, 3758, -143345, 130460, },
+560026688, 580181376, 651761280, 741916928, 808227456, 843835456, 857312512, 837136384, 774951680, 706217152,
+679031104, 684954432, 669311040, 616302016, 573348608, 574092160, 586936832, 569456832, 532186720, 511266464,
+508753920, 500068416, 481083584, 469860832, 471176704, 471000064, 463027008, 456938336, 460991712, 472953760,
+487162560, 498884064, 503802880, 502036032, 500722304, 507399392, 523648864, 547635712, 577758464, 611217856,
+643876800, 673844416, 701608704, 726164096, 744914304, 757558144, 766675264, 774677376, 782670272, 791276352,
+800164224, 807529536, 811386944, 810441536, 803607680, 790492480, 772253888, 750109056, 723654208, 692558656,
+658613376, 623875136, 588272000, 551226816, 513920224, 477741024, 442319360, 407270816, 374342368, 346103488,
+324013952, 308986912, 302183712, 304083136, 314027616, 331233792, 355143872, 384909600, 419871168, 460244416,
+506109280, 556402816, 610180096, 667974272, 730482688, 796728256, 864836224, 933754880, 1002700352, 1069331456,
+1129822848, 1180747776, 1219959168, 1245454080, 1254418176, 1244496256, 1215806464, 1170467200, 1109940864, 1034459008,
+945641216, 847554880, 743703680, 634964736, 522334048, 409629280, 301142176, 198468288, 102261024, 15424301,
+-58399208, -118443920, -166344624, -202983920, -228296832, -243548272, -251478384, -254185296, -252344368, -246456496,
+-237761344, -227809360, -217644784, -207521552, -197397776, -187577872, -178339920, -168868448, -157501280, -143418624,
+-127228208, -109625816, -90643672, -70704288, -51351164, -34363496, -20870320, -11671574, -7842611, -10806138,
+-21989696, -42191076, -71323840, -109272560, -156607936, -213349280, -277530592, -346465888, -418796896, -493406368,
+-567116608, -635954752, -698211328, -753866624, -801667456, -839523328, -867368640, -886954240, -899010176, -902935808,
+-899064448, -889133376, -874578816, -855873728, -833484544, -808545280, -782657920, -757145856, -732274752, -707778944,
+-684467456, -663835520, -645579200, -627796992, -610332544, -594772992, -580344064, -563827712, -544390336, -523586592,
+-499708160, -467863136, -426242208, -375602400, -312369216, -230306880, -129177048, -13320841, 116749560, 260566000,
+407468928, 542101120, 656437952, 742504256, 780045504, 750219648, 653257024, 490681760, 248766112, -54896660,
+-315592576, -397934080, -278208128, -86560232, 26632556, 32959042, 5339181, -1480690, 3817152, 1295470,
+-3219078, -542240, 2632278, 140123, -2107218, 150324, 1763084, -252329, -1420024, 335007,
+1135482, -409633, -951335, 375810, 700080, -432181, -585189, 369904, 397821, -374736,
+-287226, 331786, 177167, -271657, -49392, 255014, 3758, -143345, 130460, },
{
486143040,
-364342624, 167167104, -39809516, -210170464, -331450144, -400646368, -397819200, -302972896, -136612176, 38106024,
-162898976, 224026560, 241295024, 232041520, 197469712, 137426608, 64054068, -4851703, -61337500, -109474424,
--150905280, -174555520, -167025904, -129885720, -78476568, -24754580, 29452202, 81586128, 121351616, 139262704,
-135213088, 114415248, 80613848, 37157372, -10004053, -54111756, -89473832, -110401064, -112610824, -97661648,
--72609104, -43728672, -13062606, 18713172, 49372260, 75726712, 94291712, 100883952, 92121144, 68263672,
-33529736, -5985574, -43577812, -72516768, -87965760, -88946088, -77864536, -58571544, -35153772, -11158862,
-11494943, 32676648, 52577380, 70250632, 83405584, 88749056, 82459080, 61465276, 25380036, -22145926,
--73177112, -116362472, -139532752, -134017472, -98660232, -41028212, 24821152, 82922936, 120561880, 131824896,
-117951616, 85022632, 41123240, -5562520, -47731044, -79383344, -96038152, -95309080, -77927888, -48202416,
--13012140, 20197620, 45314052, 58828168, 60328184, 52038896, 37601900, 20818780, 4846334, -8215736,
--17446694, -22883586, -25109990, -24932286, -23152558, -20329690, -16650514, -12021077, -6245420, 798864,
-8900783, 17241072, 24407762, 28773060, 28998008, 24451786, 15506443, 3594351, -9093520, -20161114,
--27564026, -30052960, -27466316, -20724828, -11460583, -1493038, 7592429, 14678588, 19193672, 21027624,
-20345796, 17446158, 12731357, 6713571, 0, -6703370, -12594455, -16858284, -18838800, -18180596,
--14910516, -9489730, -2803540, 4010963, 9847823, 13867913, 15613280, 15064061, 12602508, 8839043,
-4398047, -165893, -4359392, -7796440, -10248329, -11593190, -11739756, -10663330, -8444443, -5230197,
--1233729, 3169686, 7443715, 11014444, 13337484, 13909788, 12430172, 8997956, 4060355, -1731409,
--7519414, -12302934, -15287936, -16097001, -14592688, -10806138, -5191542, 1425929, 8293582, 14696841,
-19480362, 21246130, 19167366, 13080323, 3120831, -9589051, -21958020, -29879550, -30411590, -22520124,
--6946573, 12622372, 29110214, 35555348, 29511258, 13119514, -8797704, -27741730, -32343788, -17748952,
-5345624, 18192944, 13360033, 1357210, -4248260, -2078227, 543313, 91268, -795643, -256087,
-223875, -275952, -562641, -71941, 215285, -70867, -133681, 248034, 392990, 158377,
-103616, 299574, 277025, 19327, -73014, -4295, -89121, -279710, -303869, -215822,
--225486, -260919, -163209, -23085, 32212, 82141, 196495, 271657, 263604, },
+364342624, 167167104, -39809516, -210170464, -331450144, -400646368, -397819200, -302972896, -136612176, 38106024,
+162898976, 224026560, 241295024, 232041520, 197469712, 137426608, 64054068, -4851703, -61337500, -109474424,
+-150905280, -174555520, -167025904, -129885720, -78476568, -24754580, 29452202, 81586128, 121351616, 139262704,
+135213088, 114415248, 80613848, 37157372, -10004053, -54111756, -89473832, -110401064, -112610824, -97661648,
+-72609104, -43728672, -13062606, 18713172, 49372260, 75726712, 94291712, 100883952, 92121144, 68263672,
+33529736, -5985574, -43577812, -72516768, -87965760, -88946088, -77864536, -58571544, -35153772, -11158862,
+11494943, 32676648, 52577380, 70250632, 83405584, 88749056, 82459080, 61465276, 25380036, -22145926,
+-73177112, -116362472, -139532752, -134017472, -98660232, -41028212, 24821152, 82922936, 120561880, 131824896,
+117951616, 85022632, 41123240, -5562520, -47731044, -79383344, -96038152, -95309080, -77927888, -48202416,
+-13012140, 20197620, 45314052, 58828168, 60328184, 52038896, 37601900, 20818780, 4846334, -8215736,
+-17446694, -22883586, -25109990, -24932286, -23152558, -20329690, -16650514, -12021077, -6245420, 798864,
+8900783, 17241072, 24407762, 28773060, 28998008, 24451786, 15506443, 3594351, -9093520, -20161114,
+-27564026, -30052960, -27466316, -20724828, -11460583, -1493038, 7592429, 14678588, 19193672, 21027624,
+20345796, 17446158, 12731357, 6713571, 0, -6703370, -12594455, -16858284, -18838800, -18180596,
+-14910516, -9489730, -2803540, 4010963, 9847823, 13867913, 15613280, 15064061, 12602508, 8839043,
+4398047, -165893, -4359392, -7796440, -10248329, -11593190, -11739756, -10663330, -8444443, -5230197,
+-1233729, 3169686, 7443715, 11014444, 13337484, 13909788, 12430172, 8997956, 4060355, -1731409,
+-7519414, -12302934, -15287936, -16097001, -14592688, -10806138, -5191542, 1425929, 8293582, 14696841,
+19480362, 21246130, 19167366, 13080323, 3120831, -9589051, -21958020, -29879550, -30411590, -22520124,
+-6946573, 12622372, 29110214, 35555348, 29511258, 13119514, -8797704, -27741730, -32343788, -17748952,
+5345624, 18192944, 13360033, 1357210, -4248260, -2078227, 543313, 91268, -795643, -256087,
+223875, -275952, -562641, -71941, 215285, -70867, -133681, 248034, 392990, 158377,
+103616, 299574, 277025, 19327, -73014, -4295, -89121, -279710, -303869, -215822,
+-225486, -260919, -163209, -23085, 32212, 82141, 196495, 271657, 263604, },
},
{
{
486143040,
-364342624, 167167104, -39809516, -210170464, -331450144, -400646368, -397819200, -302972896, -136612176, 38106024,
-162898976, 224026560, 241295024, 232041520, 197469712, 137426608, 64054068, -4851703, -61337500, -109474424,
--150905280, -174555520, -167025904, -129885720, -78476568, -24754580, 29452202, 81586128, 121351616, 139262704,
-135213088, 114415248, 80613848, 37157372, -10004053, -54111756, -89473832, -110401064, -112610824, -97661648,
--72609104, -43728672, -13062606, 18713172, 49372260, 75726712, 94291712, 100883952, 92121144, 68263672,
-33529736, -5985574, -43577812, -72516768, -87965760, -88946088, -77864536, -58571544, -35153772, -11158862,
-11494943, 32676648, 52577380, 70250632, 83405584, 88749056, 82459080, 61465276, 25380036, -22145926,
--73177112, -116362472, -139532752, -134017472, -98660232, -41028212, 24821152, 82922936, 120561880, 131824896,
-117951616, 85022632, 41123240, -5562520, -47731044, -79383344, -96038152, -95309080, -77927888, -48202416,
--13012140, 20197620, 45314052, 58828168, 60328184, 52038896, 37601900, 20818780, 4846334, -8215736,
--17446694, -22883586, -25109990, -24932286, -23152558, -20329690, -16650514, -12021077, -6245420, 798864,
-8900783, 17241072, 24407762, 28773060, 28998008, 24451786, 15506443, 3594351, -9093520, -20161114,
--27564026, -30052960, -27466316, -20724828, -11460583, -1493038, 7592429, 14678588, 19193672, 21027624,
-20345796, 17446158, 12731357, 6713571, 0, -6703370, -12594455, -16858284, -18838800, -18180596,
--14910516, -9489730, -2803540, 4010963, 9847823, 13867913, 15613280, 15064061, 12602508, 8839043,
-4398047, -165893, -4359392, -7796440, -10248329, -11593190, -11739756, -10663330, -8444443, -5230197,
--1233729, 3169686, 7443715, 11014444, 13337484, 13909788, 12430172, 8997956, 4060355, -1731409,
--7519414, -12302934, -15287936, -16097001, -14592688, -10806138, -5191542, 1425929, 8293582, 14696841,
-19480362, 21246130, 19167366, 13080323, 3120831, -9589051, -21958020, -29879550, -30411590, -22520124,
--6946573, 12622372, 29110214, 35555348, 29511258, 13119514, -8797704, -27741730, -32343788, -17748952,
-5345624, 18192944, 13360033, 1357210, -4248260, -2078227, 543313, 91268, -795643, -256087,
-223875, -275952, -562641, -71941, 215285, -70867, -133681, 248034, 392990, 158377,
-103616, 299574, 277025, 19327, -73014, -4295, -89121, -279710, -303869, -215822,
--225486, -260919, -163209, -23085, 32212, 82141, 196495, 271657, 263604, },
+364342624, 167167104, -39809516, -210170464, -331450144, -400646368, -397819200, -302972896, -136612176, 38106024,
+162898976, 224026560, 241295024, 232041520, 197469712, 137426608, 64054068, -4851703, -61337500, -109474424,
+-150905280, -174555520, -167025904, -129885720, -78476568, -24754580, 29452202, 81586128, 121351616, 139262704,
+135213088, 114415248, 80613848, 37157372, -10004053, -54111756, -89473832, -110401064, -112610824, -97661648,
+-72609104, -43728672, -13062606, 18713172, 49372260, 75726712, 94291712, 100883952, 92121144, 68263672,
+33529736, -5985574, -43577812, -72516768, -87965760, -88946088, -77864536, -58571544, -35153772, -11158862,
+11494943, 32676648, 52577380, 70250632, 83405584, 88749056, 82459080, 61465276, 25380036, -22145926,
+-73177112, -116362472, -139532752, -134017472, -98660232, -41028212, 24821152, 82922936, 120561880, 131824896,
+117951616, 85022632, 41123240, -5562520, -47731044, -79383344, -96038152, -95309080, -77927888, -48202416,
+-13012140, 20197620, 45314052, 58828168, 60328184, 52038896, 37601900, 20818780, 4846334, -8215736,
+-17446694, -22883586, -25109990, -24932286, -23152558, -20329690, -16650514, -12021077, -6245420, 798864,
+8900783, 17241072, 24407762, 28773060, 28998008, 24451786, 15506443, 3594351, -9093520, -20161114,
+-27564026, -30052960, -27466316, -20724828, -11460583, -1493038, 7592429, 14678588, 19193672, 21027624,
+20345796, 17446158, 12731357, 6713571, 0, -6703370, -12594455, -16858284, -18838800, -18180596,
+-14910516, -9489730, -2803540, 4010963, 9847823, 13867913, 15613280, 15064061, 12602508, 8839043,
+4398047, -165893, -4359392, -7796440, -10248329, -11593190, -11739756, -10663330, -8444443, -5230197,
+-1233729, 3169686, 7443715, 11014444, 13337484, 13909788, 12430172, 8997956, 4060355, -1731409,
+-7519414, -12302934, -15287936, -16097001, -14592688, -10806138, -5191542, 1425929, 8293582, 14696841,
+19480362, 21246130, 19167366, 13080323, 3120831, -9589051, -21958020, -29879550, -30411590, -22520124,
+-6946573, 12622372, 29110214, 35555348, 29511258, 13119514, -8797704, -27741730, -32343788, -17748952,
+5345624, 18192944, 13360033, 1357210, -4248260, -2078227, 543313, 91268, -795643, -256087,
+223875, -275952, -562641, -71941, 215285, -70867, -133681, 248034, 392990, 158377,
+103616, 299574, 277025, 19327, -73014, -4295, -89121, -279710, -303869, -215822,
+-225486, -260919, -163209, -23085, 32212, 82141, 196495, 271657, 263604, },
{
570948288,
-560026688, 580181376, 651761280, 741916928, 808227456, 843835456, 857312512, 837136384, 774951680, 706217152,
-679031104, 684954432, 669311040, 616302016, 573348608, 574092160, 586936832, 569456832, 532186720, 511266464,
-508753920, 500068416, 481083584, 469860832, 471176704, 471000064, 463027008, 456938336, 460991712, 472953760,
-487162560, 498884064, 503802880, 502036032, 500722304, 507399392, 523648864, 547635712, 577758464, 611217856,
-643876800, 673844416, 701608704, 726164096, 744914304, 757558144, 766675264, 774677376, 782670272, 791276352,
-800164224, 807529536, 811386944, 810441536, 803607680, 790492480, 772253888, 750109056, 723654208, 692558656,
-658613376, 623875136, 588272000, 551226816, 513920224, 477741024, 442319360, 407270816, 374342368, 346103488,
-324013952, 308986912, 302183712, 304083136, 314027616, 331233792, 355143872, 384909600, 419871168, 460244416,
-506109280, 556402816, 610180096, 667974272, 730482688, 796728256, 864836224, 933754880, 1002700352, 1069331456,
-1129822848, 1180747776, 1219959168, 1245454080, 1254418176, 1244496256, 1215806464, 1170467200, 1109940864, 1034459008,
-945641216, 847554880, 743703680, 634964736, 522334048, 409629280, 301142176, 198468288, 102261024, 15424301,
--58399208, -118443920, -166344624, -202983920, -228296832, -243548272, -251478384, -254185296, -252344368, -246456496,
--237761344, -227809360, -217644784, -207521552, -197397776, -187577872, -178339920, -168868448, -157501280, -143418624,
--127228208, -109625816, -90643672, -70704288, -51351164, -34363496, -20870320, -11671574, -7842611, -10806138,
--21989696, -42191076, -71323840, -109272560, -156607936, -213349280, -277530592, -346465888, -418796896, -493406368,
--567116608, -635954752, -698211328, -753866624, -801667456, -839523328, -867368640, -886954240, -899010176, -902935808,
--899064448, -889133376, -874578816, -855873728, -833484544, -808545280, -782657920, -757145856, -732274752, -707778944,
--684467456, -663835520, -645579200, -627796992, -610332544, -594772992, -580344064, -563827712, -544390336, -523586592,
--499708160, -467863136, -426242208, -375602400, -312369216, -230306880, -129177048, -13320841, 116749560, 260566000,
-407468928, 542101120, 656437952, 742504256, 780045504, 750219648, 653257024, 490681760, 248766112, -54896660,
--315592576, -397934080, -278208128, -86560232, 26632556, 32959042, 5339181, -1480690, 3817152, 1295470,
--3219078, -542240, 2632278, 140123, -2107218, 150324, 1763084, -252329, -1420024, 335007,
-1135482, -409633, -951335, 375810, 700080, -432181, -585189, 369904, 397821, -374736,
--287226, 331786, 177167, -271657, -49392, 255014, 3758, -143345, 130460, },
+560026688, 580181376, 651761280, 741916928, 808227456, 843835456, 857312512, 837136384, 774951680, 706217152,
+679031104, 684954432, 669311040, 616302016, 573348608, 574092160, 586936832, 569456832, 532186720, 511266464,
+508753920, 500068416, 481083584, 469860832, 471176704, 471000064, 463027008, 456938336, 460991712, 472953760,
+487162560, 498884064, 503802880, 502036032, 500722304, 507399392, 523648864, 547635712, 577758464, 611217856,
+643876800, 673844416, 701608704, 726164096, 744914304, 757558144, 766675264, 774677376, 782670272, 791276352,
+800164224, 807529536, 811386944, 810441536, 803607680, 790492480, 772253888, 750109056, 723654208, 692558656,
+658613376, 623875136, 588272000, 551226816, 513920224, 477741024, 442319360, 407270816, 374342368, 346103488,
+324013952, 308986912, 302183712, 304083136, 314027616, 331233792, 355143872, 384909600, 419871168, 460244416,
+506109280, 556402816, 610180096, 667974272, 730482688, 796728256, 864836224, 933754880, 1002700352, 1069331456,
+1129822848, 1180747776, 1219959168, 1245454080, 1254418176, 1244496256, 1215806464, 1170467200, 1109940864, 1034459008,
+945641216, 847554880, 743703680, 634964736, 522334048, 409629280, 301142176, 198468288, 102261024, 15424301,
+-58399208, -118443920, -166344624, -202983920, -228296832, -243548272, -251478384, -254185296, -252344368, -246456496,
+-237761344, -227809360, -217644784, -207521552, -197397776, -187577872, -178339920, -168868448, -157501280, -143418624,
+-127228208, -109625816, -90643672, -70704288, -51351164, -34363496, -20870320, -11671574, -7842611, -10806138,
+-21989696, -42191076, -71323840, -109272560, -156607936, -213349280, -277530592, -346465888, -418796896, -493406368,
+-567116608, -635954752, -698211328, -753866624, -801667456, -839523328, -867368640, -886954240, -899010176, -902935808,
+-899064448, -889133376, -874578816, -855873728, -833484544, -808545280, -782657920, -757145856, -732274752, -707778944,
+-684467456, -663835520, -645579200, -627796992, -610332544, -594772992, -580344064, -563827712, -544390336, -523586592,
+-499708160, -467863136, -426242208, -375602400, -312369216, -230306880, -129177048, -13320841, 116749560, 260566000,
+407468928, 542101120, 656437952, 742504256, 780045504, 750219648, 653257024, 490681760, 248766112, -54896660,
+-315592576, -397934080, -278208128, -86560232, 26632556, 32959042, 5339181, -1480690, 3817152, 1295470,
+-3219078, -542240, 2632278, 140123, -2107218, 150324, 1763084, -252329, -1420024, 335007,
+1135482, -409633, -951335, 375810, 700080, -432181, -585189, 369904, 397821, -374736,
+-287226, 331786, 177167, -271657, -49392, 255014, 3758, -143345, 130460, },
},
{
{
585517888,
-603768768, 627174208, 672103296, 761459584, 857675968, 888617472, 849407616, 807566592, 792039744, 753588544,
-665247488, 586939520, 580662912, 620325888, 642416512, 641460352, 654848832, 684151232, 694853760, 681777728,
-678236032, 698247872, 713505216, 696568512, 655880192, 618497280, 599802944, 597858880, 602115776, 602125952,
-598339392, 606265216, 640826304, 696614144, 752099776, 792209408, 818164416, 836594112, 849271232, 855984832,
-860132160, 867262912, 880720640, 900384576, 923915648, 948425984, 971895296, 993049024, 1009658240, 1018224000,
-1016310592, 1004292736, 984205184, 958115904, 928455424, 898594112, 871473024, 847765312, 826018304, 804140800,
-779889280, 750238976, 711679296, 662058496, 601978304, 534215008, 462380064, 390642304, 323834624, 266263808,
-220085392, 185562992, 162854416, 152585152, 154569968, 167094624, 188017024, 216053504, 250726768, 291603040,
-337903328, 388500736, 441990784, 496750016, 550902592, 602529152, 650644608, 696202944, 741374720, 787388864,
-833677824, 879251776, 923515136, 964723712, 998794112, 1021126336, 1029023680, 1021009280, 994659136, 947367808,
-879430016, 794493248, 696595904, 588685376, 474664768, 360498080, 251361344, 148936048, 53078280, -35200480,
--114485040, -185632784, -251139088, -311828032, -366206080, -413158144, -453193152, -486505984, -511755552, -527891744,
--535970048, -538049344, -535165280, -527439712, -515578624, -500989696, -484397152, -465294208, -443159552, -418643360,
--393136064, -367567072, -342242336, -317726112, -295226912, -275897952, -260195024, -248294736, -240972368, -239713392,
--245919088, -260263200, -283061440, -314996128, -356768960, -407775456, -465772032, -528284736, -593519936, -659180864,
--721473408, -776672896, -823061248, -860024256, -886102208, -899678592, -901019200, -891726464, -872470016, -843046784,
--804458624, -759121536, -709012672, -655144640, -598906368, -542581056, -488293760, -437264704, -390185440, -347831136,
--311187008, -280902688, -256568992, -237137488, -222288720, -212319568, -206354384, -202389600, -199712752, -198990128,
--199218832, -197380592, -191855648, -182596240, -167102688, -140601120, -101198016, -50129248, 13270375, 90374168,
-176566640, 262803680, 343406784, 413509248, 460463456, 469743264, 437460672, 362457664, 232589120, 48323752,
--135371456, -227771248, -189644816, -81659680, -712965, 16642998, 4131222, -1096290, 1920924, 1211181,
--1720134, -702764, 1472100, 416075, -1187022, -164819, 1025960, 63888, -841277, 14496,
-667867, -108448, -586263, 91268, 417686, -167504, -371515, 130997, 248571, -156766,
--188979, 143345, 129386, -107911, -42950, 121870, 37581, -40802, 61203, },
+603768768, 627174208, 672103296, 761459584, 857675968, 888617472, 849407616, 807566592, 792039744, 753588544,
+665247488, 586939520, 580662912, 620325888, 642416512, 641460352, 654848832, 684151232, 694853760, 681777728,
+678236032, 698247872, 713505216, 696568512, 655880192, 618497280, 599802944, 597858880, 602115776, 602125952,
+598339392, 606265216, 640826304, 696614144, 752099776, 792209408, 818164416, 836594112, 849271232, 855984832,
+860132160, 867262912, 880720640, 900384576, 923915648, 948425984, 971895296, 993049024, 1009658240, 1018224000,
+1016310592, 1004292736, 984205184, 958115904, 928455424, 898594112, 871473024, 847765312, 826018304, 804140800,
+779889280, 750238976, 711679296, 662058496, 601978304, 534215008, 462380064, 390642304, 323834624, 266263808,
+220085392, 185562992, 162854416, 152585152, 154569968, 167094624, 188017024, 216053504, 250726768, 291603040,
+337903328, 388500736, 441990784, 496750016, 550902592, 602529152, 650644608, 696202944, 741374720, 787388864,
+833677824, 879251776, 923515136, 964723712, 998794112, 1021126336, 1029023680, 1021009280, 994659136, 947367808,
+879430016, 794493248, 696595904, 588685376, 474664768, 360498080, 251361344, 148936048, 53078280, -35200480,
+-114485040, -185632784, -251139088, -311828032, -366206080, -413158144, -453193152, -486505984, -511755552, -527891744,
+-535970048, -538049344, -535165280, -527439712, -515578624, -500989696, -484397152, -465294208, -443159552, -418643360,
+-393136064, -367567072, -342242336, -317726112, -295226912, -275897952, -260195024, -248294736, -240972368, -239713392,
+-245919088, -260263200, -283061440, -314996128, -356768960, -407775456, -465772032, -528284736, -593519936, -659180864,
+-721473408, -776672896, -823061248, -860024256, -886102208, -899678592, -901019200, -891726464, -872470016, -843046784,
+-804458624, -759121536, -709012672, -655144640, -598906368, -542581056, -488293760, -437264704, -390185440, -347831136,
+-311187008, -280902688, -256568992, -237137488, -222288720, -212319568, -206354384, -202389600, -199712752, -198990128,
+-199218832, -197380592, -191855648, -182596240, -167102688, -140601120, -101198016, -50129248, 13270375, 90374168,
+176566640, 262803680, 343406784, 413509248, 460463456, 469743264, 437460672, 362457664, 232589120, 48323752,
+-135371456, -227771248, -189644816, -81659680, -712965, 16642998, 4131222, -1096290, 1920924, 1211181,
+-1720134, -702764, 1472100, 416075, -1187022, -164819, 1025960, 63888, -841277, 14496,
+667867, -108448, -586263, 91268, 417686, -167504, -371515, 130997, 248571, -156766,
+-188979, 143345, 129386, -107911, -42950, 121870, 37581, -40802, 61203, },
{
492458816,
-349794496, 129527088, -96207264, -288197664, -422264544, -462296864, -379511904, -194033200, 25005300, 207826496,
-323443264, 371411584, 352320992, 261544720, 108599856, -70567920, -227162960, -323923200, -346284416, -296182016,
--183876672, -29744260, 131055560, 255829184, 313094528, 295361152, 215104848, 93717264, -42967388, -164946064,
--244086752, -264142640, -224621424, -137462576, -23976654, 87305408, 168234944, 202542608, 190500048, 142876384,
-72989744, -5356361, -77092512, -128115656, -149521776, -139468320, -102299144, -47389596, 12211129, 62995360,
-95328408, 105811888, 96282432, 71339944, 36839544, -556198, -34204044, -58991912, -72233296, -73333344,
--63195076, -44117904, -19546396, 6851547, 31963146, 53144316, 67774584, 73123432, 66496832, 45960980,
-12265353, -28991566, -67493800, -91713656, -93705984, -72288056, -33486250, 11548093, 50563040, 74676056,
-80886048, 71364640, 50734300, 23636816, -6165426, -35329328, -59969016, -75204880, -76068704, -59759640,
--28084254, 11696807, 48752172, 72719704, 77735152, 64218888, 37776384, 6369974, -22525492, -43672300,
--54536956, -54899344, -46179488, -30768072, -11426224, 9098351, 28132572, 42993160, 51108500, 50401440,
-39848168, 20178830, -5488432, -31690416, -51811800, -60119880, -53805740, -34228740, -6758668, 20978768,
-41781980, 51145544, 48185776, 35227320, 16558710, -3080565, -19743964, -30885646, -35407712, -33469070,
--26164940, -15119359, -2183454, 10665478, 21432960, 28376848, 30299920, 26755498, 18218714, 6157373,
--7192997, -19282256, -27701466, -30641370, -27364848, -18465676, -5731634, 8220568, 20392504, 28074054,
-29621852, 24886114, 15098421, 2502892, -10116795, -20106890, -25608742, -25818660, -20939576, -12112345,
--1234266, 9513889, 18153754, 23138600, 23540178, 19303194, 11266236, 916439, -9779104, -18561774,
--23449448, -23363012, -18262738, -9059160, 2299418, 13110388, 20908974, 24199994, 22317724, 15349676,
-4602595, -7508140, -18427020, -25810606, -27186070, -20816096, -7585449, 8796093, 23526758, 31803160,
-29438780, 15509664, -4955856, -23095650, -31586264, -27039504, -9897752, 13072270, 27832998, 22847616,
-2806761, -13591961, -13608604, -3265249, 3494493, 2470143, -91268, 244276, 1340567, 833224,
-1611, 189515, 360240, -318364, -882079, -673773, -454193, -654446, -615254, -68183,
-355945, 403727, 528818, 820339, 833224, 507880, 234076, 67646, -243203, -622233,
--778463, -736050, -680752, -548145, -228170, 137976, 404264, 624381, 802085, },
+349794496, 129527088, -96207264, -288197664, -422264544, -462296864, -379511904, -194033200, 25005300, 207826496,
+323443264, 371411584, 352320992, 261544720, 108599856, -70567920, -227162960, -323923200, -346284416, -296182016,
+-183876672, -29744260, 131055560, 255829184, 313094528, 295361152, 215104848, 93717264, -42967388, -164946064,
+-244086752, -264142640, -224621424, -137462576, -23976654, 87305408, 168234944, 202542608, 190500048, 142876384,
+72989744, -5356361, -77092512, -128115656, -149521776, -139468320, -102299144, -47389596, 12211129, 62995360,
+95328408, 105811888, 96282432, 71339944, 36839544, -556198, -34204044, -58991912, -72233296, -73333344,
+-63195076, -44117904, -19546396, 6851547, 31963146, 53144316, 67774584, 73123432, 66496832, 45960980,
+12265353, -28991566, -67493800, -91713656, -93705984, -72288056, -33486250, 11548093, 50563040, 74676056,
+80886048, 71364640, 50734300, 23636816, -6165426, -35329328, -59969016, -75204880, -76068704, -59759640,
+-28084254, 11696807, 48752172, 72719704, 77735152, 64218888, 37776384, 6369974, -22525492, -43672300,
+-54536956, -54899344, -46179488, -30768072, -11426224, 9098351, 28132572, 42993160, 51108500, 50401440,
+39848168, 20178830, -5488432, -31690416, -51811800, -60119880, -53805740, -34228740, -6758668, 20978768,
+41781980, 51145544, 48185776, 35227320, 16558710, -3080565, -19743964, -30885646, -35407712, -33469070,
+-26164940, -15119359, -2183454, 10665478, 21432960, 28376848, 30299920, 26755498, 18218714, 6157373,
+-7192997, -19282256, -27701466, -30641370, -27364848, -18465676, -5731634, 8220568, 20392504, 28074054,
+29621852, 24886114, 15098421, 2502892, -10116795, -20106890, -25608742, -25818660, -20939576, -12112345,
+-1234266, 9513889, 18153754, 23138600, 23540178, 19303194, 11266236, 916439, -9779104, -18561774,
+-23449448, -23363012, -18262738, -9059160, 2299418, 13110388, 20908974, 24199994, 22317724, 15349676,
+4602595, -7508140, -18427020, -25810606, -27186070, -20816096, -7585449, 8796093, 23526758, 31803160,
+29438780, 15509664, -4955856, -23095650, -31586264, -27039504, -9897752, 13072270, 27832998, 22847616,
+2806761, -13591961, -13608604, -3265249, 3494493, 2470143, -91268, 244276, 1340567, 833224,
+1611, 189515, 360240, -318364, -882079, -673773, -454193, -654446, -615254, -68183,
+355945, 403727, 528818, 820339, 833224, 507880, 234076, 67646, -243203, -622233,
+-778463, -736050, -680752, -548145, -228170, 137976, 404264, 624381, 802085, },
},
{
{
492458816,
-349794496, 129527088, -96207264, -288197664, -422264544, -462296864, -379511904, -194033200, 25005300, 207826496,
-323443264, 371411584, 352320992, 261544720, 108599856, -70567920, -227162960, -323923200, -346284416, -296182016,
--183876672, -29744260, 131055560, 255829184, 313094528, 295361152, 215104848, 93717264, -42967388, -164946064,
--244086752, -264142640, -224621424, -137462576, -23976654, 87305408, 168234944, 202542608, 190500048, 142876384,
-72989744, -5356361, -77092512, -128115656, -149521776, -139468320, -102299144, -47389596, 12211129, 62995360,
-95328408, 105811888, 96282432, 71339944, 36839544, -556198, -34204044, -58991912, -72233296, -73333344,
--63195076, -44117904, -19546396, 6851547, 31963146, 53144316, 67774584, 73123432, 66496832, 45960980,
-12265353, -28991566, -67493800, -91713656, -93705984, -72288056, -33486250, 11548093, 50563040, 74676056,
-80886048, 71364640, 50734300, 23636816, -6165426, -35329328, -59969016, -75204880, -76068704, -59759640,
--28084254, 11696807, 48752172, 72719704, 77735152, 64218888, 37776384, 6369974, -22525492, -43672300,
--54536956, -54899344, -46179488, -30768072, -11426224, 9098351, 28132572, 42993160, 51108500, 50401440,
-39848168, 20178830, -5488432, -31690416, -51811800, -60119880, -53805740, -34228740, -6758668, 20978768,
-41781980, 51145544, 48185776, 35227320, 16558710, -3080565, -19743964, -30885646, -35407712, -33469070,
--26164940, -15119359, -2183454, 10665478, 21432960, 28376848, 30299920, 26755498, 18218714, 6157373,
--7192997, -19282256, -27701466, -30641370, -27364848, -18465676, -5731634, 8220568, 20392504, 28074054,
-29621852, 24886114, 15098421, 2502892, -10116795, -20106890, -25608742, -25818660, -20939576, -12112345,
--1234266, 9513889, 18153754, 23138600, 23540178, 19303194, 11266236, 916439, -9779104, -18561774,
--23449448, -23363012, -18262738, -9059160, 2299418, 13110388, 20908974, 24199994, 22317724, 15349676,
-4602595, -7508140, -18427020, -25810606, -27186070, -20816096, -7585449, 8796093, 23526758, 31803160,
-29438780, 15509664, -4955856, -23095650, -31586264, -27039504, -9897752, 13072270, 27832998, 22847616,
-2806761, -13591961, -13608604, -3265249, 3494493, 2470143, -91268, 244276, 1340567, 833224,
-1611, 189515, 360240, -318364, -882079, -673773, -454193, -654446, -615254, -68183,
-355945, 403727, 528818, 820339, 833224, 507880, 234076, 67646, -243203, -622233,
--778463, -736050, -680752, -548145, -228170, 137976, 404264, 624381, 802085, },
+349794496, 129527088, -96207264, -288197664, -422264544, -462296864, -379511904, -194033200, 25005300, 207826496,
+323443264, 371411584, 352320992, 261544720, 108599856, -70567920, -227162960, -323923200, -346284416, -296182016,
+-183876672, -29744260, 131055560, 255829184, 313094528, 295361152, 215104848, 93717264, -42967388, -164946064,
+-244086752, -264142640, -224621424, -137462576, -23976654, 87305408, 168234944, 202542608, 190500048, 142876384,
+72989744, -5356361, -77092512, -128115656, -149521776, -139468320, -102299144, -47389596, 12211129, 62995360,
+95328408, 105811888, 96282432, 71339944, 36839544, -556198, -34204044, -58991912, -72233296, -73333344,
+-63195076, -44117904, -19546396, 6851547, 31963146, 53144316, 67774584, 73123432, 66496832, 45960980,
+12265353, -28991566, -67493800, -91713656, -93705984, -72288056, -33486250, 11548093, 50563040, 74676056,
+80886048, 71364640, 50734300, 23636816, -6165426, -35329328, -59969016, -75204880, -76068704, -59759640,
+-28084254, 11696807, 48752172, 72719704, 77735152, 64218888, 37776384, 6369974, -22525492, -43672300,
+-54536956, -54899344, -46179488, -30768072, -11426224, 9098351, 28132572, 42993160, 51108500, 50401440,
+39848168, 20178830, -5488432, -31690416, -51811800, -60119880, -53805740, -34228740, -6758668, 20978768,
+41781980, 51145544, 48185776, 35227320, 16558710, -3080565, -19743964, -30885646, -35407712, -33469070,
+-26164940, -15119359, -2183454, 10665478, 21432960, 28376848, 30299920, 26755498, 18218714, 6157373,
+-7192997, -19282256, -27701466, -30641370, -27364848, -18465676, -5731634, 8220568, 20392504, 28074054,
+29621852, 24886114, 15098421, 2502892, -10116795, -20106890, -25608742, -25818660, -20939576, -12112345,
+-1234266, 9513889, 18153754, 23138600, 23540178, 19303194, 11266236, 916439, -9779104, -18561774,
+-23449448, -23363012, -18262738, -9059160, 2299418, 13110388, 20908974, 24199994, 22317724, 15349676,
+4602595, -7508140, -18427020, -25810606, -27186070, -20816096, -7585449, 8796093, 23526758, 31803160,
+29438780, 15509664, -4955856, -23095650, -31586264, -27039504, -9897752, 13072270, 27832998, 22847616,
+2806761, -13591961, -13608604, -3265249, 3494493, 2470143, -91268, 244276, 1340567, 833224,
+1611, 189515, 360240, -318364, -882079, -673773, -454193, -654446, -615254, -68183,
+355945, 403727, 528818, 820339, 833224, 507880, 234076, 67646, -243203, -622233,
+-778463, -736050, -680752, -548145, -228170, 137976, 404264, 624381, 802085, },
{
585517888,
-603768768, 627174208, 672103296, 761459584, 857675968, 888617472, 849407616, 807566592, 792039744, 753588544,
-665247488, 586939520, 580662912, 620325888, 642416512, 641460352, 654848832, 684151232, 694853760, 681777728,
-678236032, 698247872, 713505216, 696568512, 655880192, 618497280, 599802944, 597858880, 602115776, 602125952,
-598339392, 606265216, 640826304, 696614144, 752099776, 792209408, 818164416, 836594112, 849271232, 855984832,
-860132160, 867262912, 880720640, 900384576, 923915648, 948425984, 971895296, 993049024, 1009658240, 1018224000,
-1016310592, 1004292736, 984205184, 958115904, 928455424, 898594112, 871473024, 847765312, 826018304, 804140800,
-779889280, 750238976, 711679296, 662058496, 601978304, 534215008, 462380064, 390642304, 323834624, 266263808,
-220085392, 185562992, 162854416, 152585152, 154569968, 167094624, 188017024, 216053504, 250726768, 291603040,
-337903328, 388500736, 441990784, 496750016, 550902592, 602529152, 650644608, 696202944, 741374720, 787388864,
-833677824, 879251776, 923515136, 964723712, 998794112, 1021126336, 1029023680, 1021009280, 994659136, 947367808,
-879430016, 794493248, 696595904, 588685376, 474664768, 360498080, 251361344, 148936048, 53078280, -35200480,
--114485040, -185632784, -251139088, -311828032, -366206080, -413158144, -453193152, -486505984, -511755552, -527891744,
--535970048, -538049344, -535165280, -527439712, -515578624, -500989696, -484397152, -465294208, -443159552, -418643360,
--393136064, -367567072, -342242336, -317726112, -295226912, -275897952, -260195024, -248294736, -240972368, -239713392,
--245919088, -260263200, -283061440, -314996128, -356768960, -407775456, -465772032, -528284736, -593519936, -659180864,
--721473408, -776672896, -823061248, -860024256, -886102208, -899678592, -901019200, -891726464, -872470016, -843046784,
--804458624, -759121536, -709012672, -655144640, -598906368, -542581056, -488293760, -437264704, -390185440, -347831136,
--311187008, -280902688, -256568992, -237137488, -222288720, -212319568, -206354384, -202389600, -199712752, -198990128,
--199218832, -197380592, -191855648, -182596240, -167102688, -140601120, -101198016, -50129248, 13270375, 90374168,
-176566640, 262803680, 343406784, 413509248, 460463456, 469743264, 437460672, 362457664, 232589120, 48323752,
--135371456, -227771248, -189644816, -81659680, -712965, 16642998, 4131222, -1096290, 1920924, 1211181,
--1720134, -702764, 1472100, 416075, -1187022, -164819, 1025960, 63888, -841277, 14496,
-667867, -108448, -586263, 91268, 417686, -167504, -371515, 130997, 248571, -156766,
--188979, 143345, 129386, -107911, -42950, 121870, 37581, -40802, 61203, },
+603768768, 627174208, 672103296, 761459584, 857675968, 888617472, 849407616, 807566592, 792039744, 753588544,
+665247488, 586939520, 580662912, 620325888, 642416512, 641460352, 654848832, 684151232, 694853760, 681777728,
+678236032, 698247872, 713505216, 696568512, 655880192, 618497280, 599802944, 597858880, 602115776, 602125952,
+598339392, 606265216, 640826304, 696614144, 752099776, 792209408, 818164416, 836594112, 849271232, 855984832,
+860132160, 867262912, 880720640, 900384576, 923915648, 948425984, 971895296, 993049024, 1009658240, 1018224000,
+1016310592, 1004292736, 984205184, 958115904, 928455424, 898594112, 871473024, 847765312, 826018304, 804140800,
+779889280, 750238976, 711679296, 662058496, 601978304, 534215008, 462380064, 390642304, 323834624, 266263808,
+220085392, 185562992, 162854416, 152585152, 154569968, 167094624, 188017024, 216053504, 250726768, 291603040,
+337903328, 388500736, 441990784, 496750016, 550902592, 602529152, 650644608, 696202944, 741374720, 787388864,
+833677824, 879251776, 923515136, 964723712, 998794112, 1021126336, 1029023680, 1021009280, 994659136, 947367808,
+879430016, 794493248, 696595904, 588685376, 474664768, 360498080, 251361344, 148936048, 53078280, -35200480,
+-114485040, -185632784, -251139088, -311828032, -366206080, -413158144, -453193152, -486505984, -511755552, -527891744,
+-535970048, -538049344, -535165280, -527439712, -515578624, -500989696, -484397152, -465294208, -443159552, -418643360,
+-393136064, -367567072, -342242336, -317726112, -295226912, -275897952, -260195024, -248294736, -240972368, -239713392,
+-245919088, -260263200, -283061440, -314996128, -356768960, -407775456, -465772032, -528284736, -593519936, -659180864,
+-721473408, -776672896, -823061248, -860024256, -886102208, -899678592, -901019200, -891726464, -872470016, -843046784,
+-804458624, -759121536, -709012672, -655144640, -598906368, -542581056, -488293760, -437264704, -390185440, -347831136,
+-311187008, -280902688, -256568992, -237137488, -222288720, -212319568, -206354384, -202389600, -199712752, -198990128,
+-199218832, -197380592, -191855648, -182596240, -167102688, -140601120, -101198016, -50129248, 13270375, 90374168,
+176566640, 262803680, 343406784, 413509248, 460463456, 469743264, 437460672, 362457664, 232589120, 48323752,
+-135371456, -227771248, -189644816, -81659680, -712965, 16642998, 4131222, -1096290, 1920924, 1211181,
+-1720134, -702764, 1472100, 416075, -1187022, -164819, 1025960, 63888, -841277, 14496,
+667867, -108448, -586263, 91268, 417686, -167504, -371515, 130997, 248571, -156766,
+-188979, 143345, 129386, -107911, -42950, 121870, 37581, -40802, 61203, },
},
{
{
597213568,
-596643456, 589774720, 572423040, 546464256, 513296896, 469925248, 426302880, 420621728, 490009600, 619773440,
-746362240, 818147776, 830061504, 797643584, 733486464, 660355520, 611384320, 598772160, 608339712, 634336576,
-687962496, 761336640, 817412288, 830826496, 811578624, 779512960, 745057664, 723017984, 733358144, 775793472,
-828397184, 878846976, 933033856, 988564032, 1026026368, 1033997248, 1021642816, 1001205760, 976111296, 949339712,
-926577472, 907651712, 887279552, 865113280, 845489024, 829484352, 815743680, 805347200, 798338304, 790169856,
-778097728, 766046080, 758030080, 752204480, 745350784, 737406720, 728103232, 714701376, 696160000, 675283200,
-654903040, 635414656, 616550080, 598197696, 579157568, 557310144, 530734464, 497799584, 457844064, 412453216,
-364070944, 313385504, 260460240, 207604768, 157896416, 111621368, 67432600, 26114474, -9955734, -40010840,
--64545844, -82950848, -94379760, -100110320, -102734008, -103747080, -103519448, -102710384, -102403832, -103430864,
--106081400, -109889960, -113784424, -117140400, -120256936, -123273080, -125650880, -127430072, -129705328, -133059160,
--136775920, -140245184, -143737520, -147170272, -149432112, -149540560, -147397904, -143076640, -136364672, -127245384,
--116070952, -103235448, -89156008, -74332464, -59030032, -43270720, -27318676, -11630235, 3788161, 19364396,
-35270808, 51383380, 67845448, 85084376, 103357848, 122716344, 143190448, 164647568, 186708128, 208921168,
-230610208, 250557120, 267457280, 280695968, 290074560, 294978368, 294679840, 289356768, 279864896, 266521504,
-249057632, 227865200, 204276704, 179287504, 152854672, 124924496, 96344168, 68000072, 39594228, 10161356,
--20476794, -51754892, -83805552, -117771224, -154393344, -193238096, -233857216, -276860032, -323067456, -372146016,
--422997376, -475317600, -529790656, -586465408, -643890240, -700616000, -756673408, -812224512, -865455744, -913745152,
--956444672, -993991808, -1024540800, -1044644480, -1053249984, -1051286144, -1037245888, -1007591808, -961676992, -901270464,
--825239296, -730415040, -617438080, -489367488, -345486080, -184001760, -9601399, 169511088, 349013344, 523518400,
-678688576, 799189824, 878520512, 909441600, 875318080, 766932416, 594697792, 366670496, 80809272, -222708016,
--426628768, -421689024, -237979312, -36925980, 50219440, 34310348, 3150359, -520765, 4166655, 107911,
--3273302, 406948, 2525441, -611496, -1940788, 715649, 1552094, -683974, -1200443, 656593,
-932545, -623307, -751082, 527744, 540629, -506269, -441845, 405874, 294742, -368293,
--213675, 300648, 132070, -231928, -41339, 200790, 8590, -107374, 91805, },
+596643456, 589774720, 572423040, 546464256, 513296896, 469925248, 426302880, 420621728, 490009600, 619773440,
+746362240, 818147776, 830061504, 797643584, 733486464, 660355520, 611384320, 598772160, 608339712, 634336576,
+687962496, 761336640, 817412288, 830826496, 811578624, 779512960, 745057664, 723017984, 733358144, 775793472,
+828397184, 878846976, 933033856, 988564032, 1026026368, 1033997248, 1021642816, 1001205760, 976111296, 949339712,
+926577472, 907651712, 887279552, 865113280, 845489024, 829484352, 815743680, 805347200, 798338304, 790169856,
+778097728, 766046080, 758030080, 752204480, 745350784, 737406720, 728103232, 714701376, 696160000, 675283200,
+654903040, 635414656, 616550080, 598197696, 579157568, 557310144, 530734464, 497799584, 457844064, 412453216,
+364070944, 313385504, 260460240, 207604768, 157896416, 111621368, 67432600, 26114474, -9955734, -40010840,
+-64545844, -82950848, -94379760, -100110320, -102734008, -103747080, -103519448, -102710384, -102403832, -103430864,
+-106081400, -109889960, -113784424, -117140400, -120256936, -123273080, -125650880, -127430072, -129705328, -133059160,
+-136775920, -140245184, -143737520, -147170272, -149432112, -149540560, -147397904, -143076640, -136364672, -127245384,
+-116070952, -103235448, -89156008, -74332464, -59030032, -43270720, -27318676, -11630235, 3788161, 19364396,
+35270808, 51383380, 67845448, 85084376, 103357848, 122716344, 143190448, 164647568, 186708128, 208921168,
+230610208, 250557120, 267457280, 280695968, 290074560, 294978368, 294679840, 289356768, 279864896, 266521504,
+249057632, 227865200, 204276704, 179287504, 152854672, 124924496, 96344168, 68000072, 39594228, 10161356,
+-20476794, -51754892, -83805552, -117771224, -154393344, -193238096, -233857216, -276860032, -323067456, -372146016,
+-422997376, -475317600, -529790656, -586465408, -643890240, -700616000, -756673408, -812224512, -865455744, -913745152,
+-956444672, -993991808, -1024540800, -1044644480, -1053249984, -1051286144, -1037245888, -1007591808, -961676992, -901270464,
+-825239296, -730415040, -617438080, -489367488, -345486080, -184001760, -9601399, 169511088, 349013344, 523518400,
+678688576, 799189824, 878520512, 909441600, 875318080, 766932416, 594697792, 366670496, 80809272, -222708016,
+-426628768, -421689024, -237979312, -36925980, 50219440, 34310348, 3150359, -520765, 4166655, 107911,
+-3273302, 406948, 2525441, -611496, -1940788, 715649, 1552094, -683974, -1200443, 656593,
+932545, -623307, -751082, 527744, 540629, -506269, -441845, 405874, 294742, -368293,
+-213675, 300648, 132070, -231928, -41339, 200790, 8590, -107374, 91805, },
{
579569344,
-535923328, 456493280, 339312096, 191848672, 66356708, 32766306, 103828152, 212905280, 270114240, 223526736,
-80593984, -96322696, -222835248, -256390224, -230623632, -209125712, -218933808, -251325920, -302965920, -374807840,
--441093664, -461958080, -430899584, -381811328, -347154688, -331162368, -322570848, -310652288, -285347968, -238625168,
--171585552, -93660352, -15587510, 52657908, 103282688, 137355200, 165996720, 199463648, 238056608, 275797024,
-307733856, 331415232, 346436352, 355098784, 360181312, 361320576, 356328192, 345073792, 328951552, 307940032,
-281095424, 248241056, 208854064, 161546064, 106783088, 47956532, -11725798, -71075264, -128828080, -182525376,
--230390640, -271964320, -306472224, -332878752, -351642944, -364130016, -370140288, -367786112, -355681824, -333905248,
--303412064, -265913232, -223840816, -179236496, -132854072, -84868552, -35997732, 12401718, 58838368, 102022120,
-140978000, 174821808, 202405168, 222608160, 235105968, 240408640, 239242032, 232475840, 221377648, 207077552,
-189982512, 170418400, 149442320, 128243432, 107248552, 86594056, 66920960, 48932024, 32751810, 18377628,
-6179921, -3654480, -11619497, -18376554, -24261196, -29586420, -34911104, -40721120, -47217260, -54525684,
--62832688, -72317584, -83130704, -95292440, -108497856, -122208464, -135885248, -148858192, -160160400, -168929648,
--174782080, -177386976, -176042656, -170148880, -159679904, -144694224, -124912680, -100323992, -71671192, -39765492,
--4875325, 32683090, 71931576, 111755584, 151444848, 190155376, 226390416, 258580656, 285708736, 306818496,
-320383616, 324775776, 319060768, 302832224, 275651008, 237360288, 188829840, 131817912, 68225552, 119722,
--69640744, -137617728, -200805296, -256893264, -303624128, -338806336, -361185824, -370585888, -367052736, -350678720,
--322384544, -283973568, -237179904, -183409056, -124464928, -62643172, 13422, 61794916, 120655832, 174232864,
-220522416, 257989024, 285203008, 300952640, 304579744, 295920576, 275240288, 243384528, 201620800, 151448592,
-94955288, 34892316, -26127896, -85768888, -140812112, -187124752, -221358864, -241145776, -243458608, -225485776,
--187893008, -134548448, -69194072, 3423626, 73443944, 128780840, 162185488, 168736912, 138974400, 69362648,
--16011101, -71099424, -69478072, -32066226, -1396938, 4179540, -1872069, -3814468, -2048163, -2362769,
--3785477, -3195456, -1980517, -2334315, -2949032, -2248952, -1418950, -1617055, -1794223, -1104880,
--477278, -527207, -454193, 172872, 659278, 707059, 900869, 1422171, 1777043, 1865090,
-2081449, 2456185, 2674691, 2752000, 2915746, 3112778, 3192235, 3227131, 3289408, },
+535923328, 456493280, 339312096, 191848672, 66356708, 32766306, 103828152, 212905280, 270114240, 223526736,
+80593984, -96322696, -222835248, -256390224, -230623632, -209125712, -218933808, -251325920, -302965920, -374807840,
+-441093664, -461958080, -430899584, -381811328, -347154688, -331162368, -322570848, -310652288, -285347968, -238625168,
+-171585552, -93660352, -15587510, 52657908, 103282688, 137355200, 165996720, 199463648, 238056608, 275797024,
+307733856, 331415232, 346436352, 355098784, 360181312, 361320576, 356328192, 345073792, 328951552, 307940032,
+281095424, 248241056, 208854064, 161546064, 106783088, 47956532, -11725798, -71075264, -128828080, -182525376,
+-230390640, -271964320, -306472224, -332878752, -351642944, -364130016, -370140288, -367786112, -355681824, -333905248,
+-303412064, -265913232, -223840816, -179236496, -132854072, -84868552, -35997732, 12401718, 58838368, 102022120,
+140978000, 174821808, 202405168, 222608160, 235105968, 240408640, 239242032, 232475840, 221377648, 207077552,
+189982512, 170418400, 149442320, 128243432, 107248552, 86594056, 66920960, 48932024, 32751810, 18377628,
+6179921, -3654480, -11619497, -18376554, -24261196, -29586420, -34911104, -40721120, -47217260, -54525684,
+-62832688, -72317584, -83130704, -95292440, -108497856, -122208464, -135885248, -148858192, -160160400, -168929648,
+-174782080, -177386976, -176042656, -170148880, -159679904, -144694224, -124912680, -100323992, -71671192, -39765492,
+-4875325, 32683090, 71931576, 111755584, 151444848, 190155376, 226390416, 258580656, 285708736, 306818496,
+320383616, 324775776, 319060768, 302832224, 275651008, 237360288, 188829840, 131817912, 68225552, 119722,
+-69640744, -137617728, -200805296, -256893264, -303624128, -338806336, -361185824, -370585888, -367052736, -350678720,
+-322384544, -283973568, -237179904, -183409056, -124464928, -62643172, 13422, 61794916, 120655832, 174232864,
+220522416, 257989024, 285203008, 300952640, 304579744, 295920576, 275240288, 243384528, 201620800, 151448592,
+94955288, 34892316, -26127896, -85768888, -140812112, -187124752, -221358864, -241145776, -243458608, -225485776,
+-187893008, -134548448, -69194072, 3423626, 73443944, 128780840, 162185488, 168736912, 138974400, 69362648,
+-16011101, -71099424, -69478072, -32066226, -1396938, 4179540, -1872069, -3814468, -2048163, -2362769,
+-3785477, -3195456, -1980517, -2334315, -2949032, -2248952, -1418950, -1617055, -1794223, -1104880,
+-477278, -527207, -454193, 172872, 659278, 707059, 900869, 1422171, 1777043, 1865090,
+2081449, 2456185, 2674691, 2752000, 2915746, 3112778, 3192235, 3227131, 3289408, },
},
{
{
579569344,
-535923328, 456493280, 339312096, 191848672, 66356708, 32766306, 103828152, 212905280, 270114240, 223526736,
-80593984, -96322696, -222835248, -256390224, -230623632, -209125712, -218933808, -251325920, -302965920, -374807840,
--441093664, -461958080, -430899584, -381811328, -347154688, -331162368, -322570848, -310652288, -285347968, -238625168,
--171585552, -93660352, -15587510, 52657908, 103282688, 137355200, 165996720, 199463648, 238056608, 275797024,
-307733856, 331415232, 346436352, 355098784, 360181312, 361320576, 356328192, 345073792, 328951552, 307940032,
-281095424, 248241056, 208854064, 161546064, 106783088, 47956532, -11725798, -71075264, -128828080, -182525376,
--230390640, -271964320, -306472224, -332878752, -351642944, -364130016, -370140288, -367786112, -355681824, -333905248,
--303412064, -265913232, -223840816, -179236496, -132854072, -84868552, -35997732, 12401718, 58838368, 102022120,
-140978000, 174821808, 202405168, 222608160, 235105968, 240408640, 239242032, 232475840, 221377648, 207077552,
-189982512, 170418400, 149442320, 128243432, 107248552, 86594056, 66920960, 48932024, 32751810, 18377628,
-6179921, -3654480, -11619497, -18376554, -24261196, -29586420, -34911104, -40721120, -47217260, -54525684,
--62832688, -72317584, -83130704, -95292440, -108497856, -122208464, -135885248, -148858192, -160160400, -168929648,
--174782080, -177386976, -176042656, -170148880, -159679904, -144694224, -124912680, -100323992, -71671192, -39765492,
--4875325, 32683090, 71931576, 111755584, 151444848, 190155376, 226390416, 258580656, 285708736, 306818496,
-320383616, 324775776, 319060768, 302832224, 275651008, 237360288, 188829840, 131817912, 68225552, 119722,
--69640744, -137617728, -200805296, -256893264, -303624128, -338806336, -361185824, -370585888, -367052736, -350678720,
--322384544, -283973568, -237179904, -183409056, -124464928, -62643172, 13422, 61794916, 120655832, 174232864,
-220522416, 257989024, 285203008, 300952640, 304579744, 295920576, 275240288, 243384528, 201620800, 151448592,
-94955288, 34892316, -26127896, -85768888, -140812112, -187124752, -221358864, -241145776, -243458608, -225485776,
--187893008, -134548448, -69194072, 3423626, 73443944, 128780840, 162185488, 168736912, 138974400, 69362648,
--16011101, -71099424, -69478072, -32066226, -1396938, 4179540, -1872069, -3814468, -2048163, -2362769,
--3785477, -3195456, -1980517, -2334315, -2949032, -2248952, -1418950, -1617055, -1794223, -1104880,
--477278, -527207, -454193, 172872, 659278, 707059, 900869, 1422171, 1777043, 1865090,
-2081449, 2456185, 2674691, 2752000, 2915746, 3112778, 3192235, 3227131, 3289408, },
+535923328, 456493280, 339312096, 191848672, 66356708, 32766306, 103828152, 212905280, 270114240, 223526736,
+80593984, -96322696, -222835248, -256390224, -230623632, -209125712, -218933808, -251325920, -302965920, -374807840,
+-441093664, -461958080, -430899584, -381811328, -347154688, -331162368, -322570848, -310652288, -285347968, -238625168,
+-171585552, -93660352, -15587510, 52657908, 103282688, 137355200, 165996720, 199463648, 238056608, 275797024,
+307733856, 331415232, 346436352, 355098784, 360181312, 361320576, 356328192, 345073792, 328951552, 307940032,
+281095424, 248241056, 208854064, 161546064, 106783088, 47956532, -11725798, -71075264, -128828080, -182525376,
+-230390640, -271964320, -306472224, -332878752, -351642944, -364130016, -370140288, -367786112, -355681824, -333905248,
+-303412064, -265913232, -223840816, -179236496, -132854072, -84868552, -35997732, 12401718, 58838368, 102022120,
+140978000, 174821808, 202405168, 222608160, 235105968, 240408640, 239242032, 232475840, 221377648, 207077552,
+189982512, 170418400, 149442320, 128243432, 107248552, 86594056, 66920960, 48932024, 32751810, 18377628,
+6179921, -3654480, -11619497, -18376554, -24261196, -29586420, -34911104, -40721120, -47217260, -54525684,
+-62832688, -72317584, -83130704, -95292440, -108497856, -122208464, -135885248, -148858192, -160160400, -168929648,
+-174782080, -177386976, -176042656, -170148880, -159679904, -144694224, -124912680, -100323992, -71671192, -39765492,
+-4875325, 32683090, 71931576, 111755584, 151444848, 190155376, 226390416, 258580656, 285708736, 306818496,
+320383616, 324775776, 319060768, 302832224, 275651008, 237360288, 188829840, 131817912, 68225552, 119722,
+-69640744, -137617728, -200805296, -256893264, -303624128, -338806336, -361185824, -370585888, -367052736, -350678720,
+-322384544, -283973568, -237179904, -183409056, -124464928, -62643172, 13422, 61794916, 120655832, 174232864,
+220522416, 257989024, 285203008, 300952640, 304579744, 295920576, 275240288, 243384528, 201620800, 151448592,
+94955288, 34892316, -26127896, -85768888, -140812112, -187124752, -221358864, -241145776, -243458608, -225485776,
+-187893008, -134548448, -69194072, 3423626, 73443944, 128780840, 162185488, 168736912, 138974400, 69362648,
+-16011101, -71099424, -69478072, -32066226, -1396938, 4179540, -1872069, -3814468, -2048163, -2362769,
+-3785477, -3195456, -1980517, -2334315, -2949032, -2248952, -1418950, -1617055, -1794223, -1104880,
+-477278, -527207, -454193, 172872, 659278, 707059, 900869, 1422171, 1777043, 1865090,
+2081449, 2456185, 2674691, 2752000, 2915746, 3112778, 3192235, 3227131, 3289408, },
{
597213568,
-596643456, 589774720, 572423040, 546464256, 513296896, 469925248, 426302880, 420621728, 490009600, 619773440,
-746362240, 818147776, 830061504, 797643584, 733486464, 660355520, 611384320, 598772160, 608339712, 634336576,
-687962496, 761336640, 817412288, 830826496, 811578624, 779512960, 745057664, 723017984, 733358144, 775793472,
-828397184, 878846976, 933033856, 988564032, 1026026368, 1033997248, 1021642816, 1001205760, 976111296, 949339712,
-926577472, 907651712, 887279552, 865113280, 845489024, 829484352, 815743680, 805347200, 798338304, 790169856,
-778097728, 766046080, 758030080, 752204480, 745350784, 737406720, 728103232, 714701376, 696160000, 675283200,
-654903040, 635414656, 616550080, 598197696, 579157568, 557310144, 530734464, 497799584, 457844064, 412453216,
-364070944, 313385504, 260460240, 207604768, 157896416, 111621368, 67432600, 26114474, -9955734, -40010840,
--64545844, -82950848, -94379760, -100110320, -102734008, -103747080, -103519448, -102710384, -102403832, -103430864,
--106081400, -109889960, -113784424, -117140400, -120256936, -123273080, -125650880, -127430072, -129705328, -133059160,
--136775920, -140245184, -143737520, -147170272, -149432112, -149540560, -147397904, -143076640, -136364672, -127245384,
--116070952, -103235448, -89156008, -74332464, -59030032, -43270720, -27318676, -11630235, 3788161, 19364396,
-35270808, 51383380, 67845448, 85084376, 103357848, 122716344, 143190448, 164647568, 186708128, 208921168,
-230610208, 250557120, 267457280, 280695968, 290074560, 294978368, 294679840, 289356768, 279864896, 266521504,
-249057632, 227865200, 204276704, 179287504, 152854672, 124924496, 96344168, 68000072, 39594228, 10161356,
--20476794, -51754892, -83805552, -117771224, -154393344, -193238096, -233857216, -276860032, -323067456, -372146016,
--422997376, -475317600, -529790656, -586465408, -643890240, -700616000, -756673408, -812224512, -865455744, -913745152,
--956444672, -993991808, -1024540800, -1044644480, -1053249984, -1051286144, -1037245888, -1007591808, -961676992, -901270464,
--825239296, -730415040, -617438080, -489367488, -345486080, -184001760, -9601399, 169511088, 349013344, 523518400,
-678688576, 799189824, 878520512, 909441600, 875318080, 766932416, 594697792, 366670496, 80809272, -222708016,
--426628768, -421689024, -237979312, -36925980, 50219440, 34310348, 3150359, -520765, 4166655, 107911,
--3273302, 406948, 2525441, -611496, -1940788, 715649, 1552094, -683974, -1200443, 656593,
-932545, -623307, -751082, 527744, 540629, -506269, -441845, 405874, 294742, -368293,
--213675, 300648, 132070, -231928, -41339, 200790, 8590, -107374, 91805, },
+596643456, 589774720, 572423040, 546464256, 513296896, 469925248, 426302880, 420621728, 490009600, 619773440,
+746362240, 818147776, 830061504, 797643584, 733486464, 660355520, 611384320, 598772160, 608339712, 634336576,
+687962496, 761336640, 817412288, 830826496, 811578624, 779512960, 745057664, 723017984, 733358144, 775793472,
+828397184, 878846976, 933033856, 988564032, 1026026368, 1033997248, 1021642816, 1001205760, 976111296, 949339712,
+926577472, 907651712, 887279552, 865113280, 845489024, 829484352, 815743680, 805347200, 798338304, 790169856,
+778097728, 766046080, 758030080, 752204480, 745350784, 737406720, 728103232, 714701376, 696160000, 675283200,
+654903040, 635414656, 616550080, 598197696, 579157568, 557310144, 530734464, 497799584, 457844064, 412453216,
+364070944, 313385504, 260460240, 207604768, 157896416, 111621368, 67432600, 26114474, -9955734, -40010840,
+-64545844, -82950848, -94379760, -100110320, -102734008, -103747080, -103519448, -102710384, -102403832, -103430864,
+-106081400, -109889960, -113784424, -117140400, -120256936, -123273080, -125650880, -127430072, -129705328, -133059160,
+-136775920, -140245184, -143737520, -147170272, -149432112, -149540560, -147397904, -143076640, -136364672, -127245384,
+-116070952, -103235448, -89156008, -74332464, -59030032, -43270720, -27318676, -11630235, 3788161, 19364396,
+35270808, 51383380, 67845448, 85084376, 103357848, 122716344, 143190448, 164647568, 186708128, 208921168,
+230610208, 250557120, 267457280, 280695968, 290074560, 294978368, 294679840, 289356768, 279864896, 266521504,
+249057632, 227865200, 204276704, 179287504, 152854672, 124924496, 96344168, 68000072, 39594228, 10161356,
+-20476794, -51754892, -83805552, -117771224, -154393344, -193238096, -233857216, -276860032, -323067456, -372146016,
+-422997376, -475317600, -529790656, -586465408, -643890240, -700616000, -756673408, -812224512, -865455744, -913745152,
+-956444672, -993991808, -1024540800, -1044644480, -1053249984, -1051286144, -1037245888, -1007591808, -961676992, -901270464,
+-825239296, -730415040, -617438080, -489367488, -345486080, -184001760, -9601399, 169511088, 349013344, 523518400,
+678688576, 799189824, 878520512, 909441600, 875318080, 766932416, 594697792, 366670496, 80809272, -222708016,
+-426628768, -421689024, -237979312, -36925980, 50219440, 34310348, 3150359, -520765, 4166655, 107911,
+-3273302, 406948, 2525441, -611496, -1940788, 715649, 1552094, -683974, -1200443, 656593,
+932545, -623307, -751082, 527744, 540629, -506269, -441845, 405874, 294742, -368293,
+-213675, 300648, 132070, -231928, -41339, 200790, 8590, -107374, 91805, },
},
{
{
577258624,
-576715840, 589559424, 634232448, 698922688, 728686848, 684827712, 605792256, 564653952, 574836800, 588651584,
-585370752, 601567104, 661806144, 733112256, 772729600, 780550720, 777879232, 765676736, 732168960, 682062848,
-633115776, 593396992, 558773120, 526239264, 497608480, 473712896, 452478016, 431136864, 408102976, 385196288,
-367728128, 358867616, 354917856, 349517472, 341043488, 333114976, 330029056, 334360512, 346667200, 364892384,
-385567264, 406968544, 429555776, 453146432, 475951648, 496440224, 513792448, 526557632, 533109056, 533698016,
-530780640, 527621152, 527320512, 532114240, 542515008, 557551744, 575819264, 595270656, 612548800, 624400192,
-629702848, 628770304, 621445248, 607733056, 589560512, 569769856, 549599040, 528701344, 507052576, 485115488,
-462446656, 437741984, 410362656, 380882528, 350196064, 318906688, 287777856, 258289136, 232238016, 210521040,
-192472512, 176729856, 162499552, 149450368, 136906384, 124364536, 112801944, 104405824, 100885560, 102829568,
-110493400, 124145496, 143568416, 168067968, 197059536, 230199504, 267108304, 307226528, 349479328, 391873344,
-432042048, 468332352, 499699584, 524740320, 541990528, 551234368, 553277696, 548283200, 535577056, 515299968,
-488932640, 457753856, 421960128, 381905280, 339214368, 295833600, 252551056, 209267456, 166404208, 125076960,
-85714128, 47379932, 9058623, -29046864, -66327716, -103271416, -140889952, -178859088, -215597696, -250224256,
--282999680, -313612608, -340509824, -362547840, -380093856, -393859776, -403703296, -409354400, -411566848, -411762816,
--410889856, -409194944, -406989504, -405171648, -404765760, -406089696, -408785312, -412814016, -418855936, -427302016,
--437474624, -448574976, -460808640, -474671744, -489646688, -504675840, -519564352, -534837248, -550401664, -565369088,
--579182784, -592082688, -604251456, -615084416, -623628736, -629501568, -632924096, -633715456, -630808320, -623335040,
--611626432, -596118400, -575879424, -549629632, -517612800, -480661056, -438062496, -388580192, -332951232, -272879680,
--208295712, -138401568, -64546916, 10955925, 87666192, 165303088, 240628224, 309478176, 369945408, 419880832,
-454019904, 467810528, 460804896, 432175712, 378043008, 298507744, 200767712, 89689120, -32957432, -147629296,
--208934592, -183362352, -94947768, -11396159, 21154862, 13571023, 1598802, 219580, 1552094, -166967,
--1190780, 297963, 907849, -333934, -683974, 361314, 556198, -324270, -425739, 303332,
-326954, -289910, -272194, 236760, 183073, -237834, -159451, 185757, 95026, -176094,
--68183, 146029, 36507, -114354, 5369, 108448, -10737, -59056, 63351, },
+576715840, 589559424, 634232448, 698922688, 728686848, 684827712, 605792256, 564653952, 574836800, 588651584,
+585370752, 601567104, 661806144, 733112256, 772729600, 780550720, 777879232, 765676736, 732168960, 682062848,
+633115776, 593396992, 558773120, 526239264, 497608480, 473712896, 452478016, 431136864, 408102976, 385196288,
+367728128, 358867616, 354917856, 349517472, 341043488, 333114976, 330029056, 334360512, 346667200, 364892384,
+385567264, 406968544, 429555776, 453146432, 475951648, 496440224, 513792448, 526557632, 533109056, 533698016,
+530780640, 527621152, 527320512, 532114240, 542515008, 557551744, 575819264, 595270656, 612548800, 624400192,
+629702848, 628770304, 621445248, 607733056, 589560512, 569769856, 549599040, 528701344, 507052576, 485115488,
+462446656, 437741984, 410362656, 380882528, 350196064, 318906688, 287777856, 258289136, 232238016, 210521040,
+192472512, 176729856, 162499552, 149450368, 136906384, 124364536, 112801944, 104405824, 100885560, 102829568,
+110493400, 124145496, 143568416, 168067968, 197059536, 230199504, 267108304, 307226528, 349479328, 391873344,
+432042048, 468332352, 499699584, 524740320, 541990528, 551234368, 553277696, 548283200, 535577056, 515299968,
+488932640, 457753856, 421960128, 381905280, 339214368, 295833600, 252551056, 209267456, 166404208, 125076960,
+85714128, 47379932, 9058623, -29046864, -66327716, -103271416, -140889952, -178859088, -215597696, -250224256,
+-282999680, -313612608, -340509824, -362547840, -380093856, -393859776, -403703296, -409354400, -411566848, -411762816,
+-410889856, -409194944, -406989504, -405171648, -404765760, -406089696, -408785312, -412814016, -418855936, -427302016,
+-437474624, -448574976, -460808640, -474671744, -489646688, -504675840, -519564352, -534837248, -550401664, -565369088,
+-579182784, -592082688, -604251456, -615084416, -623628736, -629501568, -632924096, -633715456, -630808320, -623335040,
+-611626432, -596118400, -575879424, -549629632, -517612800, -480661056, -438062496, -388580192, -332951232, -272879680,
+-208295712, -138401568, -64546916, 10955925, 87666192, 165303088, 240628224, 309478176, 369945408, 419880832,
+454019904, 467810528, 460804896, 432175712, 378043008, 298507744, 200767712, 89689120, -32957432, -147629296,
+-208934592, -183362352, -94947768, -11396159, 21154862, 13571023, 1598802, 219580, 1552094, -166967,
+-1190780, 297963, 907849, -333934, -683974, 361314, 556198, -324270, -425739, 303332,
+326954, -289910, -272194, 236760, 183073, -237834, -159451, 185757, 95026, -176094,
+-68183, 146029, 36507, -114354, 5369, 108448, -10737, -59056, 63351, },
{
515484128,
-438002368, 285437632, 87102472, -95549600, -207499536, -246394224, -259768752, -290284480, -329814304, -334158112,
--277309920, -179602640, -81671488, -2548526, 68614248, 145949968, 223177232, 277775392, 292139904, 267355264,
-219215136, 163913664, 107111112, 45060648, -25191594, -98342936, -163622144, -212229360, -239572208, -242371984,
--218386208, -170373840, -107468136, -40647032, 22208202, 76519136, 118805240, 146478256, 159197264, 158901440,
-148381456, 130218040, 106511432, 78693464, 47551192, 13783624, -21502216, -56903484, -90858960, -121219008,
--144781200, -157715488, -156839328, -140899088, -111030272, -70184600, -22074522, 29413546, 80016312, 124801552,
-158639984, 177334368, 178578304, 162241312, 130077920, 85197120, 31552440, -26269630, -82910584, -132101920,
--167161744, -182411552, -175011872, -146204976, -101226472, -47990352, 4851703, 49933288, 82761336, 102251360,
-109926464, 108391552, 100088848, 86803440, 69654704, 49291728, 26264798, 1508070, -23351200, -46049028,
--64142116, -75698800, -79888000, -77085536, -68492920, -55634320, -40024264, -22984518, -5550709, 11476153,
-27378806, 41423884, 52866216, 60949344, 64928632, 64188824, 58415852, 47712792, 32670206, 14405320,
--5500780, -25198574, -42783244, -56484724, -64899640, -67242008, -63444720, -54072028, -40175124, -23145042,
--4522064, 14173929, 31491774, 46041512, 56548612, 61957052, 61529164, 55007792, 42856796, 26371636,
-7527467, -11340861, -27921582, -40336184, -47478716, -49118320, -45780056, -38537132, -28769302, -17866528,
--6992744, 2981781, 11478837, 18216030, 23148264, 26322244, 27794880, 27651536, 25996900, 22894860,
-18408766, 12705050, 6067178, -1148904, -8491150, -15392626, -21266530, -25612500, -28012314, -28146532,
--25897042, -21394306, -14951318, -7052337, 1611150, 10235444, 18057654, 24388434, 28619514, 30362198,
-29501056, 26049514, 20122996, 12118250, 2699387, -7464653, -17680770, -26953604, -34088080, -38085084,
--38092064, -33202782, -22987202, -8251169, 9140227, 26823682, 41736344, 50129784, 49140868, 38405060,
-19730542, -3705483, -26817238, -42991012, -47351476, -39288752, -21038360, 3487514, 26129508, 34982508,
-24200530, 2942053, -11587822, -11480984, -4002910, 411780, 44023, -694174, 86436, 687732,
-409633, 424128, 1004486, 1205812, 898185, 817654, 995896, 848793, 416075, 180926,
-95563, -194884, -587337, -776315, -840740, -990527, -1120987, -1066226, -919123, -800475,
--636192, -364535, -71941, 179315, 426812, 675921, 872952, 997506, 1061931, },
+438002368, 285437632, 87102472, -95549600, -207499536, -246394224, -259768752, -290284480, -329814304, -334158112,
+-277309920, -179602640, -81671488, -2548526, 68614248, 145949968, 223177232, 277775392, 292139904, 267355264,
+219215136, 163913664, 107111112, 45060648, -25191594, -98342936, -163622144, -212229360, -239572208, -242371984,
+-218386208, -170373840, -107468136, -40647032, 22208202, 76519136, 118805240, 146478256, 159197264, 158901440,
+148381456, 130218040, 106511432, 78693464, 47551192, 13783624, -21502216, -56903484, -90858960, -121219008,
+-144781200, -157715488, -156839328, -140899088, -111030272, -70184600, -22074522, 29413546, 80016312, 124801552,
+158639984, 177334368, 178578304, 162241312, 130077920, 85197120, 31552440, -26269630, -82910584, -132101920,
+-167161744, -182411552, -175011872, -146204976, -101226472, -47990352, 4851703, 49933288, 82761336, 102251360,
+109926464, 108391552, 100088848, 86803440, 69654704, 49291728, 26264798, 1508070, -23351200, -46049028,
+-64142116, -75698800, -79888000, -77085536, -68492920, -55634320, -40024264, -22984518, -5550709, 11476153,
+27378806, 41423884, 52866216, 60949344, 64928632, 64188824, 58415852, 47712792, 32670206, 14405320,
+-5500780, -25198574, -42783244, -56484724, -64899640, -67242008, -63444720, -54072028, -40175124, -23145042,
+-4522064, 14173929, 31491774, 46041512, 56548612, 61957052, 61529164, 55007792, 42856796, 26371636,
+7527467, -11340861, -27921582, -40336184, -47478716, -49118320, -45780056, -38537132, -28769302, -17866528,
+-6992744, 2981781, 11478837, 18216030, 23148264, 26322244, 27794880, 27651536, 25996900, 22894860,
+18408766, 12705050, 6067178, -1148904, -8491150, -15392626, -21266530, -25612500, -28012314, -28146532,
+-25897042, -21394306, -14951318, -7052337, 1611150, 10235444, 18057654, 24388434, 28619514, 30362198,
+29501056, 26049514, 20122996, 12118250, 2699387, -7464653, -17680770, -26953604, -34088080, -38085084,
+-38092064, -33202782, -22987202, -8251169, 9140227, 26823682, 41736344, 50129784, 49140868, 38405060,
+19730542, -3705483, -26817238, -42991012, -47351476, -39288752, -21038360, 3487514, 26129508, 34982508,
+24200530, 2942053, -11587822, -11480984, -4002910, 411780, 44023, -694174, 86436, 687732,
+409633, 424128, 1004486, 1205812, 898185, 817654, 995896, 848793, 416075, 180926,
+95563, -194884, -587337, -776315, -840740, -990527, -1120987, -1066226, -919123, -800475,
+-636192, -364535, -71941, 179315, 426812, 675921, 872952, 997506, 1061931, },
},
{
{
515484128,
-438002368, 285437632, 87102472, -95549600, -207499536, -246394224, -259768752, -290284480, -329814304, -334158112,
--277309920, -179602640, -81671488, -2548526, 68614248, 145949968, 223177232, 277775392, 292139904, 267355264,
-219215136, 163913664, 107111112, 45060648, -25191594, -98342936, -163622144, -212229360, -239572208, -242371984,
--218386208, -170373840, -107468136, -40647032, 22208202, 76519136, 118805240, 146478256, 159197264, 158901440,
-148381456, 130218040, 106511432, 78693464, 47551192, 13783624, -21502216, -56903484, -90858960, -121219008,
--144781200, -157715488, -156839328, -140899088, -111030272, -70184600, -22074522, 29413546, 80016312, 124801552,
-158639984, 177334368, 178578304, 162241312, 130077920, 85197120, 31552440, -26269630, -82910584, -132101920,
--167161744, -182411552, -175011872, -146204976, -101226472, -47990352, 4851703, 49933288, 82761336, 102251360,
-109926464, 108391552, 100088848, 86803440, 69654704, 49291728, 26264798, 1508070, -23351200, -46049028,
--64142116, -75698800, -79888000, -77085536, -68492920, -55634320, -40024264, -22984518, -5550709, 11476153,
-27378806, 41423884, 52866216, 60949344, 64928632, 64188824, 58415852, 47712792, 32670206, 14405320,
--5500780, -25198574, -42783244, -56484724, -64899640, -67242008, -63444720, -54072028, -40175124, -23145042,
--4522064, 14173929, 31491774, 46041512, 56548612, 61957052, 61529164, 55007792, 42856796, 26371636,
-7527467, -11340861, -27921582, -40336184, -47478716, -49118320, -45780056, -38537132, -28769302, -17866528,
--6992744, 2981781, 11478837, 18216030, 23148264, 26322244, 27794880, 27651536, 25996900, 22894860,
-18408766, 12705050, 6067178, -1148904, -8491150, -15392626, -21266530, -25612500, -28012314, -28146532,
--25897042, -21394306, -14951318, -7052337, 1611150, 10235444, 18057654, 24388434, 28619514, 30362198,
-29501056, 26049514, 20122996, 12118250, 2699387, -7464653, -17680770, -26953604, -34088080, -38085084,
--38092064, -33202782, -22987202, -8251169, 9140227, 26823682, 41736344, 50129784, 49140868, 38405060,
-19730542, -3705483, -26817238, -42991012, -47351476, -39288752, -21038360, 3487514, 26129508, 34982508,
-24200530, 2942053, -11587822, -11480984, -4002910, 411780, 44023, -694174, 86436, 687732,
-409633, 424128, 1004486, 1205812, 898185, 817654, 995896, 848793, 416075, 180926,
-95563, -194884, -587337, -776315, -840740, -990527, -1120987, -1066226, -919123, -800475,
--636192, -364535, -71941, 179315, 426812, 675921, 872952, 997506, 1061931, },
+438002368, 285437632, 87102472, -95549600, -207499536, -246394224, -259768752, -290284480, -329814304, -334158112,
+-277309920, -179602640, -81671488, -2548526, 68614248, 145949968, 223177232, 277775392, 292139904, 267355264,
+219215136, 163913664, 107111112, 45060648, -25191594, -98342936, -163622144, -212229360, -239572208, -242371984,
+-218386208, -170373840, -107468136, -40647032, 22208202, 76519136, 118805240, 146478256, 159197264, 158901440,
+148381456, 130218040, 106511432, 78693464, 47551192, 13783624, -21502216, -56903484, -90858960, -121219008,
+-144781200, -157715488, -156839328, -140899088, -111030272, -70184600, -22074522, 29413546, 80016312, 124801552,
+158639984, 177334368, 178578304, 162241312, 130077920, 85197120, 31552440, -26269630, -82910584, -132101920,
+-167161744, -182411552, -175011872, -146204976, -101226472, -47990352, 4851703, 49933288, 82761336, 102251360,
+109926464, 108391552, 100088848, 86803440, 69654704, 49291728, 26264798, 1508070, -23351200, -46049028,
+-64142116, -75698800, -79888000, -77085536, -68492920, -55634320, -40024264, -22984518, -5550709, 11476153,
+27378806, 41423884, 52866216, 60949344, 64928632, 64188824, 58415852, 47712792, 32670206, 14405320,
+-5500780, -25198574, -42783244, -56484724, -64899640, -67242008, -63444720, -54072028, -40175124, -23145042,
+-4522064, 14173929, 31491774, 46041512, 56548612, 61957052, 61529164, 55007792, 42856796, 26371636,
+7527467, -11340861, -27921582, -40336184, -47478716, -49118320, -45780056, -38537132, -28769302, -17866528,
+-6992744, 2981781, 11478837, 18216030, 23148264, 26322244, 27794880, 27651536, 25996900, 22894860,
+18408766, 12705050, 6067178, -1148904, -8491150, -15392626, -21266530, -25612500, -28012314, -28146532,
+-25897042, -21394306, -14951318, -7052337, 1611150, 10235444, 18057654, 24388434, 28619514, 30362198,
+29501056, 26049514, 20122996, 12118250, 2699387, -7464653, -17680770, -26953604, -34088080, -38085084,
+-38092064, -33202782, -22987202, -8251169, 9140227, 26823682, 41736344, 50129784, 49140868, 38405060,
+19730542, -3705483, -26817238, -42991012, -47351476, -39288752, -21038360, 3487514, 26129508, 34982508,
+24200530, 2942053, -11587822, -11480984, -4002910, 411780, 44023, -694174, 86436, 687732,
+409633, 424128, 1004486, 1205812, 898185, 817654, 995896, 848793, 416075, 180926,
+95563, -194884, -587337, -776315, -840740, -990527, -1120987, -1066226, -919123, -800475,
+-636192, -364535, -71941, 179315, 426812, 675921, 872952, 997506, 1061931, },
{
577258624,
-576715840, 589559424, 634232448, 698922688, 728686848, 684827712, 605792256, 564653952, 574836800, 588651584,
-585370752, 601567104, 661806144, 733112256, 772729600, 780550720, 777879232, 765676736, 732168960, 682062848,
-633115776, 593396992, 558773120, 526239264, 497608480, 473712896, 452478016, 431136864, 408102976, 385196288,
-367728128, 358867616, 354917856, 349517472, 341043488, 333114976, 330029056, 334360512, 346667200, 364892384,
-385567264, 406968544, 429555776, 453146432, 475951648, 496440224, 513792448, 526557632, 533109056, 533698016,
-530780640, 527621152, 527320512, 532114240, 542515008, 557551744, 575819264, 595270656, 612548800, 624400192,
-629702848, 628770304, 621445248, 607733056, 589560512, 569769856, 549599040, 528701344, 507052576, 485115488,
-462446656, 437741984, 410362656, 380882528, 350196064, 318906688, 287777856, 258289136, 232238016, 210521040,
-192472512, 176729856, 162499552, 149450368, 136906384, 124364536, 112801944, 104405824, 100885560, 102829568,
-110493400, 124145496, 143568416, 168067968, 197059536, 230199504, 267108304, 307226528, 349479328, 391873344,
-432042048, 468332352, 499699584, 524740320, 541990528, 551234368, 553277696, 548283200, 535577056, 515299968,
-488932640, 457753856, 421960128, 381905280, 339214368, 295833600, 252551056, 209267456, 166404208, 125076960,
-85714128, 47379932, 9058623, -29046864, -66327716, -103271416, -140889952, -178859088, -215597696, -250224256,
--282999680, -313612608, -340509824, -362547840, -380093856, -393859776, -403703296, -409354400, -411566848, -411762816,
--410889856, -409194944, -406989504, -405171648, -404765760, -406089696, -408785312, -412814016, -418855936, -427302016,
--437474624, -448574976, -460808640, -474671744, -489646688, -504675840, -519564352, -534837248, -550401664, -565369088,
--579182784, -592082688, -604251456, -615084416, -623628736, -629501568, -632924096, -633715456, -630808320, -623335040,
--611626432, -596118400, -575879424, -549629632, -517612800, -480661056, -438062496, -388580192, -332951232, -272879680,
--208295712, -138401568, -64546916, 10955925, 87666192, 165303088, 240628224, 309478176, 369945408, 419880832,
-454019904, 467810528, 460804896, 432175712, 378043008, 298507744, 200767712, 89689120, -32957432, -147629296,
--208934592, -183362352, -94947768, -11396159, 21154862, 13571023, 1598802, 219580, 1552094, -166967,
--1190780, 297963, 907849, -333934, -683974, 361314, 556198, -324270, -425739, 303332,
-326954, -289910, -272194, 236760, 183073, -237834, -159451, 185757, 95026, -176094,
--68183, 146029, 36507, -114354, 5369, 108448, -10737, -59056, 63351, },
+576715840, 589559424, 634232448, 698922688, 728686848, 684827712, 605792256, 564653952, 574836800, 588651584,
+585370752, 601567104, 661806144, 733112256, 772729600, 780550720, 777879232, 765676736, 732168960, 682062848,
+633115776, 593396992, 558773120, 526239264, 497608480, 473712896, 452478016, 431136864, 408102976, 385196288,
+367728128, 358867616, 354917856, 349517472, 341043488, 333114976, 330029056, 334360512, 346667200, 364892384,
+385567264, 406968544, 429555776, 453146432, 475951648, 496440224, 513792448, 526557632, 533109056, 533698016,
+530780640, 527621152, 527320512, 532114240, 542515008, 557551744, 575819264, 595270656, 612548800, 624400192,
+629702848, 628770304, 621445248, 607733056, 589560512, 569769856, 549599040, 528701344, 507052576, 485115488,
+462446656, 437741984, 410362656, 380882528, 350196064, 318906688, 287777856, 258289136, 232238016, 210521040,
+192472512, 176729856, 162499552, 149450368, 136906384, 124364536, 112801944, 104405824, 100885560, 102829568,
+110493400, 124145496, 143568416, 168067968, 197059536, 230199504, 267108304, 307226528, 349479328, 391873344,
+432042048, 468332352, 499699584, 524740320, 541990528, 551234368, 553277696, 548283200, 535577056, 515299968,
+488932640, 457753856, 421960128, 381905280, 339214368, 295833600, 252551056, 209267456, 166404208, 125076960,
+85714128, 47379932, 9058623, -29046864, -66327716, -103271416, -140889952, -178859088, -215597696, -250224256,
+-282999680, -313612608, -340509824, -362547840, -380093856, -393859776, -403703296, -409354400, -411566848, -411762816,
+-410889856, -409194944, -406989504, -405171648, -404765760, -406089696, -408785312, -412814016, -418855936, -427302016,
+-437474624, -448574976, -460808640, -474671744, -489646688, -504675840, -519564352, -534837248, -550401664, -565369088,
+-579182784, -592082688, -604251456, -615084416, -623628736, -629501568, -632924096, -633715456, -630808320, -623335040,
+-611626432, -596118400, -575879424, -549629632, -517612800, -480661056, -438062496, -388580192, -332951232, -272879680,
+-208295712, -138401568, -64546916, 10955925, 87666192, 165303088, 240628224, 309478176, 369945408, 419880832,
+454019904, 467810528, 460804896, 432175712, 378043008, 298507744, 200767712, 89689120, -32957432, -147629296,
+-208934592, -183362352, -94947768, -11396159, 21154862, 13571023, 1598802, 219580, 1552094, -166967,
+-1190780, 297963, 907849, -333934, -683974, 361314, 556198, -324270, -425739, 303332,
+326954, -289910, -272194, 236760, 183073, -237834, -159451, 185757, 95026, -176094,
+-68183, 146029, 36507, -114354, 5369, 108448, -10737, -59056, 63351, },
},
{
{
548208576,
-544875648, 556473152, 595631424, 646513920, 673311808, 656640896, 613493120, 573444160, 545771136, 523946272,
-512668224, 528104896, 570986368, 619035776, 651238912, 664630592, 662498176, 642140544, 604135488, 562161856,
-531653600, 513580928, 497497888, 476482048, 451859008, 426314688, 399838368, 372339296, 345038336, 318229152,
-290570112, 261266080, 231251776, 202268800, 176573088, 157658592, 149259776, 152462208, 164561664, 181516048,
-200835888, 221446368, 241784640, 259613056, 273704320, 284568960, 293368800, 300983776, 308247104, 316196576,
-325680384, 336977760, 349679584, 362544096, 373749120, 381757088, 385728320, 385028256, 379138240, 368555968,
-354957568, 339719040, 322804384, 303550048, 281759520, 257424240, 230248896, 200429488, 169588928, 140275776,
-114747568, 94497336, 80372256, 72387912, 69433512, 69580080, 70905080, 72181224, 73050952, 73737608,
-74635256, 76160504, 78805136, 83034064, 89080304, 97012040, 106988176, 119291640, 134152768, 151717568,
-172148192, 195655088, 222447088, 252568240, 285544992, 320244032, 355295264, 389456352, 421268640, 448819264,
-470615680, 486550016, 497294400, 502999200, 503384672, 498815360, 490098720, 477141888, 458903296, 434948640,
-406098272, 373242848, 336539136, 296369376, 254260992, 212019984, 170402288, 129428840, 89707368, 52514028,
-18496276, -12868259, -42181948, -69283728, -94063008, -117452320, -140713872, -164041440, -186702768, -208308592,
--228934640, -248002144, -264098608, -276266240, -284733792, -290072960, -292338560, -291486560, -288102112, -283189216,
--277436640, -271084928, -264461008, -258339056, -253602256, -250668784, -249504848, -250273648, -253578624, -259806336,
--268593312, -279387616, -292212928, -307295232, -324187360, -341960992, -360170048, -378949792, -398132736, -416920000,
--434612576, -451133696, -466487680, -480054400, -490873952, -498532960, -503238624, -504890592, -502673312, -495979072,
--485127840, -470478240, -451429504, -427278912, -398506944, -365985984, -329454048, -288222912, -242872352, -194613024,
--143526528, -89254792, -32881732, 23790360, 80102752, 135577088, 187954752, 234388176, 273482048, 303914560,
-322653504, 327144960, 317413664, 293490688, 253710704, 198723840, 133334576, 60891900, -17351668, -89882928,
--129710696, -116388248, -63574104, -11751031, 10314901, 7651484, 1107565, 191126, 886374, -95563,
--682900, 167504, 525060, -182536, -388695, 207232, 321049, -182536, -245350, 169114,
-184684, -166967, -160524, 128312, 100932, -136902, -95026, 100395, 53150, -98247,
--40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, },
+544875648, 556473152, 595631424, 646513920, 673311808, 656640896, 613493120, 573444160, 545771136, 523946272,
+512668224, 528104896, 570986368, 619035776, 651238912, 664630592, 662498176, 642140544, 604135488, 562161856,
+531653600, 513580928, 497497888, 476482048, 451859008, 426314688, 399838368, 372339296, 345038336, 318229152,
+290570112, 261266080, 231251776, 202268800, 176573088, 157658592, 149259776, 152462208, 164561664, 181516048,
+200835888, 221446368, 241784640, 259613056, 273704320, 284568960, 293368800, 300983776, 308247104, 316196576,
+325680384, 336977760, 349679584, 362544096, 373749120, 381757088, 385728320, 385028256, 379138240, 368555968,
+354957568, 339719040, 322804384, 303550048, 281759520, 257424240, 230248896, 200429488, 169588928, 140275776,
+114747568, 94497336, 80372256, 72387912, 69433512, 69580080, 70905080, 72181224, 73050952, 73737608,
+74635256, 76160504, 78805136, 83034064, 89080304, 97012040, 106988176, 119291640, 134152768, 151717568,
+172148192, 195655088, 222447088, 252568240, 285544992, 320244032, 355295264, 389456352, 421268640, 448819264,
+470615680, 486550016, 497294400, 502999200, 503384672, 498815360, 490098720, 477141888, 458903296, 434948640,
+406098272, 373242848, 336539136, 296369376, 254260992, 212019984, 170402288, 129428840, 89707368, 52514028,
+18496276, -12868259, -42181948, -69283728, -94063008, -117452320, -140713872, -164041440, -186702768, -208308592,
+-228934640, -248002144, -264098608, -276266240, -284733792, -290072960, -292338560, -291486560, -288102112, -283189216,
+-277436640, -271084928, -264461008, -258339056, -253602256, -250668784, -249504848, -250273648, -253578624, -259806336,
+-268593312, -279387616, -292212928, -307295232, -324187360, -341960992, -360170048, -378949792, -398132736, -416920000,
+-434612576, -451133696, -466487680, -480054400, -490873952, -498532960, -503238624, -504890592, -502673312, -495979072,
+-485127840, -470478240, -451429504, -427278912, -398506944, -365985984, -329454048, -288222912, -242872352, -194613024,
+-143526528, -89254792, -32881732, 23790360, 80102752, 135577088, 187954752, 234388176, 273482048, 303914560,
+322653504, 327144960, 317413664, 293490688, 253710704, 198723840, 133334576, 60891900, -17351668, -89882928,
+-129710696, -116388248, -63574104, -11751031, 10314901, 7651484, 1107565, 191126, 886374, -95563,
+-682900, 167504, 525060, -182536, -388695, 207232, 321049, -182536, -245350, 169114,
+184684, -166967, -160524, 128312, 100932, -136902, -95026, 100395, 53150, -98247,
+-40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, },
{
500830240,
-459700000, 365290720, 223673840, 79591112, -12800076, -46884400, -72271416, -131517264, -207050176, -253433680,
--264418048, -274940192, -304089056, -331065216, -330414528, -300650400, -250105072, -180549152, -97373888, -17135846,
-48171280, 102873056, 155102000, 202770240, 239229136, 263950976, 280074816, 286780320, 279620096, 255321312,
-213867360, 159070016, 98352064, 38867844, -16834662, -69041064, -115651656, -151848576, -174539424, -184535424,
--184808144, -178791440, -169817632, -160143760, -150425328, -140704736, -130871408, -119393648, -102829032, -77734616,
--42771432, 861678, 49697068, 98473400, 141868144, 176802336, 202836816, 220397856, 229242272, 228382208,
-216517888, 192473584, 156089312, 109163576, 55341728, -993748, -55795384, -105952008, -149571696, -185756256,
--213678912, -231680736, -237370496, -228723120, -205311248, -168948448, -123544736, -74185896, -25676926, 18674518,
-57234196, 89338008, 114706768, 133451080, 146092240, 153200944, 155143888, 152306512, 145243440, 134385232,
-119815632, 101499744, 79442936, 53550724, 23803782, -9089761, -43452720, -77154256, -108082856, -134136120,
--153368448, -164484896, -166966848, -160689760, -145835616, -123247304, -94430224, -61100740, -25034290, 11703786,
-46866684, 78484088, 104971688, 124940064, 137357888, 141914848, 138936288, 129008472, 112964080, 92061016,
-67778880, 41452876, 14324253, -12225624, -36784248, -58154396, -75314936, -87332792, -93628136, -94261648,
--89822800, -81178104, -69453376, -56011744, -42142756, -28752658, -16386374, -5359046, 4293357, 12834973,
-20619602, 27886686, 34779036, 41381472, 47594680, 53053048, 57246544, 59666224, 59808492, 57193932,
-51528332, 42825656, 31368294, 17646946, 2381023, -13491566, -28950228, -43017856, -54792508, -63472100,
--68468224, -69502768, -66583804, -59929828, -49961744, -37337224, -22892176, -7493108, 8032126, 22838488,
-36083092, 47083580, 55367496, 60529512, 62212064, 60317984, 55040544, 46573552, 35052840, 20901458,
-4920959, -12059194, -29173566, -45003204, -57619132, -65364032, -67100812, -61773440, -48815524, -29346974,
--6101538, 17914846, 39580272, 54831164, 59880972, 53787488, 38157028, 14897631, -12156905, -33443300,
--37562712, -23103166, -2974802, 7738458, 6340983, 1333051, -418222, 242129, 268435, -290447,
--146566, 301721, 176094, -116501, 54224, 310311, 185757, 17717, 149787, 287226,
-174483, 65498, 147640, 206695, 107374, 28991, 68719, 79457, -3221, -60666,
--47782, -57982, -118648, -155693, -150324, -161061, -197569, -210453, -195958, },
+459700000, 365290720, 223673840, 79591112, -12800076, -46884400, -72271416, -131517264, -207050176, -253433680,
+-264418048, -274940192, -304089056, -331065216, -330414528, -300650400, -250105072, -180549152, -97373888, -17135846,
+48171280, 102873056, 155102000, 202770240, 239229136, 263950976, 280074816, 286780320, 279620096, 255321312,
+213867360, 159070016, 98352064, 38867844, -16834662, -69041064, -115651656, -151848576, -174539424, -184535424,
+-184808144, -178791440, -169817632, -160143760, -150425328, -140704736, -130871408, -119393648, -102829032, -77734616,
+-42771432, 861678, 49697068, 98473400, 141868144, 176802336, 202836816, 220397856, 229242272, 228382208,
+216517888, 192473584, 156089312, 109163576, 55341728, -993748, -55795384, -105952008, -149571696, -185756256,
+-213678912, -231680736, -237370496, -228723120, -205311248, -168948448, -123544736, -74185896, -25676926, 18674518,
+57234196, 89338008, 114706768, 133451080, 146092240, 153200944, 155143888, 152306512, 145243440, 134385232,
+119815632, 101499744, 79442936, 53550724, 23803782, -9089761, -43452720, -77154256, -108082856, -134136120,
+-153368448, -164484896, -166966848, -160689760, -145835616, -123247304, -94430224, -61100740, -25034290, 11703786,
+46866684, 78484088, 104971688, 124940064, 137357888, 141914848, 138936288, 129008472, 112964080, 92061016,
+67778880, 41452876, 14324253, -12225624, -36784248, -58154396, -75314936, -87332792, -93628136, -94261648,
+-89822800, -81178104, -69453376, -56011744, -42142756, -28752658, -16386374, -5359046, 4293357, 12834973,
+20619602, 27886686, 34779036, 41381472, 47594680, 53053048, 57246544, 59666224, 59808492, 57193932,
+51528332, 42825656, 31368294, 17646946, 2381023, -13491566, -28950228, -43017856, -54792508, -63472100,
+-68468224, -69502768, -66583804, -59929828, -49961744, -37337224, -22892176, -7493108, 8032126, 22838488,
+36083092, 47083580, 55367496, 60529512, 62212064, 60317984, 55040544, 46573552, 35052840, 20901458,
+4920959, -12059194, -29173566, -45003204, -57619132, -65364032, -67100812, -61773440, -48815524, -29346974,
+-6101538, 17914846, 39580272, 54831164, 59880972, 53787488, 38157028, 14897631, -12156905, -33443300,
+-37562712, -23103166, -2974802, 7738458, 6340983, 1333051, -418222, 242129, 268435, -290447,
+-146566, 301721, 176094, -116501, 54224, 310311, 185757, 17717, 149787, 287226,
+174483, 65498, 147640, 206695, 107374, 28991, 68719, 79457, -3221, -60666,
+-47782, -57982, -118648, -155693, -150324, -161061, -197569, -210453, -195958, },
},
{
{
500830240,
-459700000, 365290720, 223673840, 79591112, -12800076, -46884400, -72271416, -131517264, -207050176, -253433680,
--264418048, -274940192, -304089056, -331065216, -330414528, -300650400, -250105072, -180549152, -97373888, -17135846,
-48171280, 102873056, 155102000, 202770240, 239229136, 263950976, 280074816, 286780320, 279620096, 255321312,
-213867360, 159070016, 98352064, 38867844, -16834662, -69041064, -115651656, -151848576, -174539424, -184535424,
--184808144, -178791440, -169817632, -160143760, -150425328, -140704736, -130871408, -119393648, -102829032, -77734616,
--42771432, 861678, 49697068, 98473400, 141868144, 176802336, 202836816, 220397856, 229242272, 228382208,
-216517888, 192473584, 156089312, 109163576, 55341728, -993748, -55795384, -105952008, -149571696, -185756256,
--213678912, -231680736, -237370496, -228723120, -205311248, -168948448, -123544736, -74185896, -25676926, 18674518,
-57234196, 89338008, 114706768, 133451080, 146092240, 153200944, 155143888, 152306512, 145243440, 134385232,
-119815632, 101499744, 79442936, 53550724, 23803782, -9089761, -43452720, -77154256, -108082856, -134136120,
--153368448, -164484896, -166966848, -160689760, -145835616, -123247304, -94430224, -61100740, -25034290, 11703786,
-46866684, 78484088, 104971688, 124940064, 137357888, 141914848, 138936288, 129008472, 112964080, 92061016,
-67778880, 41452876, 14324253, -12225624, -36784248, -58154396, -75314936, -87332792, -93628136, -94261648,
--89822800, -81178104, -69453376, -56011744, -42142756, -28752658, -16386374, -5359046, 4293357, 12834973,
-20619602, 27886686, 34779036, 41381472, 47594680, 53053048, 57246544, 59666224, 59808492, 57193932,
-51528332, 42825656, 31368294, 17646946, 2381023, -13491566, -28950228, -43017856, -54792508, -63472100,
--68468224, -69502768, -66583804, -59929828, -49961744, -37337224, -22892176, -7493108, 8032126, 22838488,
-36083092, 47083580, 55367496, 60529512, 62212064, 60317984, 55040544, 46573552, 35052840, 20901458,
-4920959, -12059194, -29173566, -45003204, -57619132, -65364032, -67100812, -61773440, -48815524, -29346974,
--6101538, 17914846, 39580272, 54831164, 59880972, 53787488, 38157028, 14897631, -12156905, -33443300,
--37562712, -23103166, -2974802, 7738458, 6340983, 1333051, -418222, 242129, 268435, -290447,
--146566, 301721, 176094, -116501, 54224, 310311, 185757, 17717, 149787, 287226,
-174483, 65498, 147640, 206695, 107374, 28991, 68719, 79457, -3221, -60666,
--47782, -57982, -118648, -155693, -150324, -161061, -197569, -210453, -195958, },
+459700000, 365290720, 223673840, 79591112, -12800076, -46884400, -72271416, -131517264, -207050176, -253433680,
+-264418048, -274940192, -304089056, -331065216, -330414528, -300650400, -250105072, -180549152, -97373888, -17135846,
+48171280, 102873056, 155102000, 202770240, 239229136, 263950976, 280074816, 286780320, 279620096, 255321312,
+213867360, 159070016, 98352064, 38867844, -16834662, -69041064, -115651656, -151848576, -174539424, -184535424,
+-184808144, -178791440, -169817632, -160143760, -150425328, -140704736, -130871408, -119393648, -102829032, -77734616,
+-42771432, 861678, 49697068, 98473400, 141868144, 176802336, 202836816, 220397856, 229242272, 228382208,
+216517888, 192473584, 156089312, 109163576, 55341728, -993748, -55795384, -105952008, -149571696, -185756256,
+-213678912, -231680736, -237370496, -228723120, -205311248, -168948448, -123544736, -74185896, -25676926, 18674518,
+57234196, 89338008, 114706768, 133451080, 146092240, 153200944, 155143888, 152306512, 145243440, 134385232,
+119815632, 101499744, 79442936, 53550724, 23803782, -9089761, -43452720, -77154256, -108082856, -134136120,
+-153368448, -164484896, -166966848, -160689760, -145835616, -123247304, -94430224, -61100740, -25034290, 11703786,
+46866684, 78484088, 104971688, 124940064, 137357888, 141914848, 138936288, 129008472, 112964080, 92061016,
+67778880, 41452876, 14324253, -12225624, -36784248, -58154396, -75314936, -87332792, -93628136, -94261648,
+-89822800, -81178104, -69453376, -56011744, -42142756, -28752658, -16386374, -5359046, 4293357, 12834973,
+20619602, 27886686, 34779036, 41381472, 47594680, 53053048, 57246544, 59666224, 59808492, 57193932,
+51528332, 42825656, 31368294, 17646946, 2381023, -13491566, -28950228, -43017856, -54792508, -63472100,
+-68468224, -69502768, -66583804, -59929828, -49961744, -37337224, -22892176, -7493108, 8032126, 22838488,
+36083092, 47083580, 55367496, 60529512, 62212064, 60317984, 55040544, 46573552, 35052840, 20901458,
+4920959, -12059194, -29173566, -45003204, -57619132, -65364032, -67100812, -61773440, -48815524, -29346974,
+-6101538, 17914846, 39580272, 54831164, 59880972, 53787488, 38157028, 14897631, -12156905, -33443300,
+-37562712, -23103166, -2974802, 7738458, 6340983, 1333051, -418222, 242129, 268435, -290447,
+-146566, 301721, 176094, -116501, 54224, 310311, 185757, 17717, 149787, 287226,
+174483, 65498, 147640, 206695, 107374, 28991, 68719, 79457, -3221, -60666,
+-47782, -57982, -118648, -155693, -150324, -161061, -197569, -210453, -195958, },
{
548208576,
-544875648, 556473152, 595631424, 646513920, 673311808, 656640896, 613493120, 573444160, 545771136, 523946272,
-512668224, 528104896, 570986368, 619035776, 651238912, 664630592, 662498176, 642140544, 604135488, 562161856,
-531653600, 513580928, 497497888, 476482048, 451859008, 426314688, 399838368, 372339296, 345038336, 318229152,
-290570112, 261266080, 231251776, 202268800, 176573088, 157658592, 149259776, 152462208, 164561664, 181516048,
-200835888, 221446368, 241784640, 259613056, 273704320, 284568960, 293368800, 300983776, 308247104, 316196576,
-325680384, 336977760, 349679584, 362544096, 373749120, 381757088, 385728320, 385028256, 379138240, 368555968,
-354957568, 339719040, 322804384, 303550048, 281759520, 257424240, 230248896, 200429488, 169588928, 140275776,
-114747568, 94497336, 80372256, 72387912, 69433512, 69580080, 70905080, 72181224, 73050952, 73737608,
-74635256, 76160504, 78805136, 83034064, 89080304, 97012040, 106988176, 119291640, 134152768, 151717568,
-172148192, 195655088, 222447088, 252568240, 285544992, 320244032, 355295264, 389456352, 421268640, 448819264,
-470615680, 486550016, 497294400, 502999200, 503384672, 498815360, 490098720, 477141888, 458903296, 434948640,
-406098272, 373242848, 336539136, 296369376, 254260992, 212019984, 170402288, 129428840, 89707368, 52514028,
-18496276, -12868259, -42181948, -69283728, -94063008, -117452320, -140713872, -164041440, -186702768, -208308592,
--228934640, -248002144, -264098608, -276266240, -284733792, -290072960, -292338560, -291486560, -288102112, -283189216,
--277436640, -271084928, -264461008, -258339056, -253602256, -250668784, -249504848, -250273648, -253578624, -259806336,
--268593312, -279387616, -292212928, -307295232, -324187360, -341960992, -360170048, -378949792, -398132736, -416920000,
--434612576, -451133696, -466487680, -480054400, -490873952, -498532960, -503238624, -504890592, -502673312, -495979072,
--485127840, -470478240, -451429504, -427278912, -398506944, -365985984, -329454048, -288222912, -242872352, -194613024,
--143526528, -89254792, -32881732, 23790360, 80102752, 135577088, 187954752, 234388176, 273482048, 303914560,
-322653504, 327144960, 317413664, 293490688, 253710704, 198723840, 133334576, 60891900, -17351668, -89882928,
--129710696, -116388248, -63574104, -11751031, 10314901, 7651484, 1107565, 191126, 886374, -95563,
--682900, 167504, 525060, -182536, -388695, 207232, 321049, -182536, -245350, 169114,
-184684, -166967, -160524, 128312, 100932, -136902, -95026, 100395, 53150, -98247,
--40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, },
+544875648, 556473152, 595631424, 646513920, 673311808, 656640896, 613493120, 573444160, 545771136, 523946272,
+512668224, 528104896, 570986368, 619035776, 651238912, 664630592, 662498176, 642140544, 604135488, 562161856,
+531653600, 513580928, 497497888, 476482048, 451859008, 426314688, 399838368, 372339296, 345038336, 318229152,
+290570112, 261266080, 231251776, 202268800, 176573088, 157658592, 149259776, 152462208, 164561664, 181516048,
+200835888, 221446368, 241784640, 259613056, 273704320, 284568960, 293368800, 300983776, 308247104, 316196576,
+325680384, 336977760, 349679584, 362544096, 373749120, 381757088, 385728320, 385028256, 379138240, 368555968,
+354957568, 339719040, 322804384, 303550048, 281759520, 257424240, 230248896, 200429488, 169588928, 140275776,
+114747568, 94497336, 80372256, 72387912, 69433512, 69580080, 70905080, 72181224, 73050952, 73737608,
+74635256, 76160504, 78805136, 83034064, 89080304, 97012040, 106988176, 119291640, 134152768, 151717568,
+172148192, 195655088, 222447088, 252568240, 285544992, 320244032, 355295264, 389456352, 421268640, 448819264,
+470615680, 486550016, 497294400, 502999200, 503384672, 498815360, 490098720, 477141888, 458903296, 434948640,
+406098272, 373242848, 336539136, 296369376, 254260992, 212019984, 170402288, 129428840, 89707368, 52514028,
+18496276, -12868259, -42181948, -69283728, -94063008, -117452320, -140713872, -164041440, -186702768, -208308592,
+-228934640, -248002144, -264098608, -276266240, -284733792, -290072960, -292338560, -291486560, -288102112, -283189216,
+-277436640, -271084928, -264461008, -258339056, -253602256, -250668784, -249504848, -250273648, -253578624, -259806336,
+-268593312, -279387616, -292212928, -307295232, -324187360, -341960992, -360170048, -378949792, -398132736, -416920000,
+-434612576, -451133696, -466487680, -480054400, -490873952, -498532960, -503238624, -504890592, -502673312, -495979072,
+-485127840, -470478240, -451429504, -427278912, -398506944, -365985984, -329454048, -288222912, -242872352, -194613024,
+-143526528, -89254792, -32881732, 23790360, 80102752, 135577088, 187954752, 234388176, 273482048, 303914560,
+322653504, 327144960, 317413664, 293490688, 253710704, 198723840, 133334576, 60891900, -17351668, -89882928,
+-129710696, -116388248, -63574104, -11751031, 10314901, 7651484, 1107565, 191126, 886374, -95563,
+-682900, 167504, 525060, -182536, -388695, 207232, 321049, -182536, -245350, 169114,
+184684, -166967, -160524, 128312, 100932, -136902, -95026, 100395, 53150, -98247,
+-40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, },
},
};
-const Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][240] ={
+const Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240] ={
{
{
11671574,
-33428268, 48048336, 42938400, 10669236, -23849416, -20741470, 7692824, -3387119, -60983168, -61801896,
-75895296, 273056832, 373722816, 342877984, 285016704, 275532896, 274483296, 221783520, 125141392, 18176302,
--95674688, -211587264, -285864960, -277180544, -200371504, -107004816, -29242822, 34718904, 94131728, 145453904,
-173212816, 159637488, 97118336, -2741800, -114900576, -218103808, -305466112, -380638784, -447978496, -505954112,
--547699072, -568476480, -572700096, -571630080, -574870080, -586484736, -606955648, -633760512, -660538560, -680332480,
--690672640, -693753728, -692721856, -689765824, -686531200, -684405184, -684960832, -690392384, -702076288, -718923840,
--738931392, -761562688, -786150272, -808610816, -822278976, -821855936, -805235520, -773099456, -729042752, -679147072,
--629310400, -583083136, -542430208, -508994432, -483474816, -464784704, -450638176, -438507040, -426233088, -412716288,
--397979712, -382108736, -364839744, -346619968, -328956928, -313062304, -299318432, -288607296, -282822528, -283359936,
--290075648, -302071488, -318472352, -338125600, -359373888, -380381088, -399396000, -415003904, -426471456, -433510368,
--435789408, -433354688, -427214496, -418410336, -406781184, -391712832, -373661632, -353731904, -332318784, -309478688,
--286101728, -263467792, -242115904, -222054112, -203476224, -186587344, -171440064, -158391408, -147968608, -140255920,
--135438576, -134720784, -139487120, -149966304, -166157792, -189564832, -222349376, -265213696, -317849056, -381103200,
--456832576, -545526336, -645587840, -755151872, -873149696, -997795520, -1124988288, -1249492480, -1367641088, -1477668480,
--1577235968, -1662584576, -1731487104, -1785210624, -1825508224, -1851442304, -1861844224, -1859087360, -1846884736, -1825654784,
--1793888128, -1753022592, -1706731904, -1655882752, -1598357632, -1533789184, -1464510848, -1391412096, -1312354688, -1225542656,
--1131783424, -1032359296, -926551168, -812663616, -690843904, -563587200, -433046528, -299167008, -162062000, -24927454,
-108413568, 237962656, 365616608, 489768000, 607022208, 718448192, 827780352, 934079168, 1033306880, 1126050176,
-1215316352, 1297863424, 1366641408, 1419627904, 1456143744, 1467462528, 1442218880, 1377115264, 1271023104, 1115677824,
-906274048, 653276864, 370027008, 61913028, -255111936, -543083584, -769113216, -917314304, -946205440, -779825408,
--411155616, 4182761, 243786096, 231176608, 95539400, 3235721, -7104950, 4381941, 277025, -4724464,
-574452, 3642669, -973884, -2865817, 1049583, 2232846, -1037772, -1719598, 1045288, 1407139,
--914291, -1052804, 878858, 840203, -778463, -638876, 676994, 439160, -634581, -346282,
-492848, 158377, -474594, -108985, 336081, -40802, -296353, 102005, 194347, },
+33428268, 48048336, 42938400, 10669236, -23849416, -20741470, 7692824, -3387119, -60983168, -61801896,
+75895296, 273056832, 373722816, 342877984, 285016704, 275532896, 274483296, 221783520, 125141392, 18176302,
+-95674688, -211587264, -285864960, -277180544, -200371504, -107004816, -29242822, 34718904, 94131728, 145453904,
+173212816, 159637488, 97118336, -2741800, -114900576, -218103808, -305466112, -380638784, -447978496, -505954112,
+-547699072, -568476480, -572700096, -571630080, -574870080, -586484736, -606955648, -633760512, -660538560, -680332480,
+-690672640, -693753728, -692721856, -689765824, -686531200, -684405184, -684960832, -690392384, -702076288, -718923840,
+-738931392, -761562688, -786150272, -808610816, -822278976, -821855936, -805235520, -773099456, -729042752, -679147072,
+-629310400, -583083136, -542430208, -508994432, -483474816, -464784704, -450638176, -438507040, -426233088, -412716288,
+-397979712, -382108736, -364839744, -346619968, -328956928, -313062304, -299318432, -288607296, -282822528, -283359936,
+-290075648, -302071488, -318472352, -338125600, -359373888, -380381088, -399396000, -415003904, -426471456, -433510368,
+-435789408, -433354688, -427214496, -418410336, -406781184, -391712832, -373661632, -353731904, -332318784, -309478688,
+-286101728, -263467792, -242115904, -222054112, -203476224, -186587344, -171440064, -158391408, -147968608, -140255920,
+-135438576, -134720784, -139487120, -149966304, -166157792, -189564832, -222349376, -265213696, -317849056, -381103200,
+-456832576, -545526336, -645587840, -755151872, -873149696, -997795520, -1124988288, -1249492480, -1367641088, -1477668480,
+-1577235968, -1662584576, -1731487104, -1785210624, -1825508224, -1851442304, -1861844224, -1859087360, -1846884736, -1825654784,
+-1793888128, -1753022592, -1706731904, -1655882752, -1598357632, -1533789184, -1464510848, -1391412096, -1312354688, -1225542656,
+-1131783424, -1032359296, -926551168, -812663616, -690843904, -563587200, -433046528, -299167008, -162062000, -24927454,
+108413568, 237962656, 365616608, 489768000, 607022208, 718448192, 827780352, 934079168, 1033306880, 1126050176,
+1215316352, 1297863424, 1366641408, 1419627904, 1456143744, 1467462528, 1442218880, 1377115264, 1271023104, 1115677824,
+906274048, 653276864, 370027008, 61913028, -255111936, -543083584, -769113216, -917314304, -946205440, -779825408,
+-411155616, 4182761, 243786096, 231176608, 95539400, 3235721, -7104950, 4381941, 277025, -4724464,
+574452, 3642669, -973884, -2865817, 1049583, 2232846, -1037772, -1719598, 1045288, 1407139,
+-914291, -1052804, 878858, 840203, -778463, -638876, 676994, 439160, -634581, -346282,
+492848, 158377, -474594, -108985, 336081, -40802, -296353, 102005, 194347, },
{
-43152612,
--167244416, -326189344, -425169024, -430063680, -408412736, -396821152, -347003296, -240177248, -150636320, -149980256,
--227270880, -334289120, -431815488, -465875104, -381789856, -201092512, -19849728, 100399696, 182234384, 254505808,
-295659648, 288585824, 269964992, 281386944, 315109408, 345971968, 378699072, 424291776, 459042880, 447787936,
-391741280, 318566848, 234615808, 120319752, -26028038, -167703984, -263907488, -309349856, -328910208, -343889440,
--357035808, -365100128, -369183040, -368511424, -355676992, -325343232, -281465856, -230792208, -174850800, -113110112,
--48930952, 12495670, 68545528, 118137904, 159899488, 194040720, 222759552, 246649776, 263353968, 270581344,
-267532432, 253314480, 227605888, 193476464, 156568736, 121000504, 88099440, 58618252, 33705292, 13705241,
--2253247, -15534897, -27778774, -40846212, -56144888, -74168720, -94531160, -115715544, -135217376, -151071184,
--163176544, -172670576, -180643104, -187729264, -193513504, -195408656, -189196000, -171573200, -141721040, -100734160,
--51151448, 2652679, 55053964, 100841536, 136072080, 158270624, 167375952, 166312400, 159483952, 150750128,
-143187760, 139580528, 141745200, 149778400, 162720736, 179277840, 197052032, 211674784, 217527216, 209201408,
-182345520, 134332080, 65313032, -21227338, -119223464, -221298192, -319546656, -405998432, -473390208, -516054816,
--530230368, -513815520, -466422720, -390015232, -289196256, -170530608, -41752988, 88480088, 211208240, 318744032,
-405772416, 468956192, 506444288, 518312352, 506494752, 473356928, 420836992, 351277312, 267993616, 174445472,
-73914776, -29439854, -130281392, -223306080, -303793248, -366947520, -408276384, -425243104, -417698464, -386863264,
--335266752, -267617264, -190219808, -109179680, -29850560, 42653320, 104020888, 151907632, 185724048, 205642496,
-212621824, 208755280, 196538784, 178010288, 155011808, 129571112, 103384160, 77390480, 52181168, 28295244,
-5985037, -14707042, -33559800, -50273664, -64760052, -76887432, -86267104, -92647280, -96055336, -96301216,
--92933432, -85790360, -74892952, -59932512, -40791452, -18388902, 5860483, 30818538, 54721104, 74417288,
-86956984, 91032904, 85701776, 69631080, 43691092, 12382928, -19332722, -47658568, -65710852, -62912144,
--36258112, -518080, 21429202, 20601348, 8546985, 825707, 671626, 1986959, 1380832, 722628,
-1206886, 1399623, 694711, 281320, 529892, 461709, -140660, -445066, -325344, -481036,
--959925, -1155883, -1067299, -1207960, -1529008, -1587527, -1462973, -1526861, -1668058, -1577864,
--1390496, -1357210, -1326071, -1107565, -872952, -761283, -598074, -305480, -71941, },
+-167244416, -326189344, -425169024, -430063680, -408412736, -396821152, -347003296, -240177248, -150636320, -149980256,
+-227270880, -334289120, -431815488, -465875104, -381789856, -201092512, -19849728, 100399696, 182234384, 254505808,
+295659648, 288585824, 269964992, 281386944, 315109408, 345971968, 378699072, 424291776, 459042880, 447787936,
+391741280, 318566848, 234615808, 120319752, -26028038, -167703984, -263907488, -309349856, -328910208, -343889440,
+-357035808, -365100128, -369183040, -368511424, -355676992, -325343232, -281465856, -230792208, -174850800, -113110112,
+-48930952, 12495670, 68545528, 118137904, 159899488, 194040720, 222759552, 246649776, 263353968, 270581344,
+267532432, 253314480, 227605888, 193476464, 156568736, 121000504, 88099440, 58618252, 33705292, 13705241,
+-2253247, -15534897, -27778774, -40846212, -56144888, -74168720, -94531160, -115715544, -135217376, -151071184,
+-163176544, -172670576, -180643104, -187729264, -193513504, -195408656, -189196000, -171573200, -141721040, -100734160,
+-51151448, 2652679, 55053964, 100841536, 136072080, 158270624, 167375952, 166312400, 159483952, 150750128,
+143187760, 139580528, 141745200, 149778400, 162720736, 179277840, 197052032, 211674784, 217527216, 209201408,
+182345520, 134332080, 65313032, -21227338, -119223464, -221298192, -319546656, -405998432, -473390208, -516054816,
+-530230368, -513815520, -466422720, -390015232, -289196256, -170530608, -41752988, 88480088, 211208240, 318744032,
+405772416, 468956192, 506444288, 518312352, 506494752, 473356928, 420836992, 351277312, 267993616, 174445472,
+73914776, -29439854, -130281392, -223306080, -303793248, -366947520, -408276384, -425243104, -417698464, -386863264,
+-335266752, -267617264, -190219808, -109179680, -29850560, 42653320, 104020888, 151907632, 185724048, 205642496,
+212621824, 208755280, 196538784, 178010288, 155011808, 129571112, 103384160, 77390480, 52181168, 28295244,
+5985037, -14707042, -33559800, -50273664, -64760052, -76887432, -86267104, -92647280, -96055336, -96301216,
+-92933432, -85790360, -74892952, -59932512, -40791452, -18388902, 5860483, 30818538, 54721104, 74417288,
+86956984, 91032904, 85701776, 69631080, 43691092, 12382928, -19332722, -47658568, -65710852, -62912144,
+-36258112, -518080, 21429202, 20601348, 8546985, 825707, 671626, 1986959, 1380832, 722628,
+1206886, 1399623, 694711, 281320, 529892, 461709, -140660, -445066, -325344, -481036,
+-959925, -1155883, -1067299, -1207960, -1529008, -1587527, -1462973, -1526861, -1668058, -1577864,
+-1390496, -1357210, -1326071, -1107565, -872952, -761283, -598074, -305480, -71941, },
},
{
{
-43152612,
--167244416, -326189344, -425169024, -430063680, -408412736, -396821152, -347003296, -240177248, -150636320, -149980256,
--227270880, -334289120, -431815488, -465875104, -381789856, -201092512, -19849728, 100399696, 182234384, 254505808,
-295659648, 288585824, 269964992, 281386944, 315109408, 345971968, 378699072, 424291776, 459042880, 447787936,
-391741280, 318566848, 234615808, 120319752, -26028038, -167703984, -263907488, -309349856, -328910208, -343889440,
--357035808, -365100128, -369183040, -368511424, -355676992, -325343232, -281465856, -230792208, -174850800, -113110112,
--48930952, 12495670, 68545528, 118137904, 159899488, 194040720, 222759552, 246649776, 263353968, 270581344,
-267532432, 253314480, 227605888, 193476464, 156568736, 121000504, 88099440, 58618252, 33705292, 13705241,
--2253247, -15534897, -27778774, -40846212, -56144888, -74168720, -94531160, -115715544, -135217376, -151071184,
--163176544, -172670576, -180643104, -187729264, -193513504, -195408656, -189196000, -171573200, -141721040, -100734160,
--51151448, 2652679, 55053964, 100841536, 136072080, 158270624, 167375952, 166312400, 159483952, 150750128,
-143187760, 139580528, 141745200, 149778400, 162720736, 179277840, 197052032, 211674784, 217527216, 209201408,
-182345520, 134332080, 65313032, -21227338, -119223464, -221298192, -319546656, -405998432, -473390208, -516054816,
--530230368, -513815520, -466422720, -390015232, -289196256, -170530608, -41752988, 88480088, 211208240, 318744032,
-405772416, 468956192, 506444288, 518312352, 506494752, 473356928, 420836992, 351277312, 267993616, 174445472,
-73914776, -29439854, -130281392, -223306080, -303793248, -366947520, -408276384, -425243104, -417698464, -386863264,
--335266752, -267617264, -190219808, -109179680, -29850560, 42653320, 104020888, 151907632, 185724048, 205642496,
-212621824, 208755280, 196538784, 178010288, 155011808, 129571112, 103384160, 77390480, 52181168, 28295244,
-5985037, -14707042, -33559800, -50273664, -64760052, -76887432, -86267104, -92647280, -96055336, -96301216,
--92933432, -85790360, -74892952, -59932512, -40791452, -18388902, 5860483, 30818538, 54721104, 74417288,
-86956984, 91032904, 85701776, 69631080, 43691092, 12382928, -19332722, -47658568, -65710852, -62912144,
--36258112, -518080, 21429202, 20601348, 8546985, 825707, 671626, 1986959, 1380832, 722628,
-1206886, 1399623, 694711, 281320, 529892, 461709, -140660, -445066, -325344, -481036,
--959925, -1155883, -1067299, -1207960, -1529008, -1587527, -1462973, -1526861, -1668058, -1577864,
--1390496, -1357210, -1326071, -1107565, -872952, -761283, -598074, -305480, -71941, },
+-167244416, -326189344, -425169024, -430063680, -408412736, -396821152, -347003296, -240177248, -150636320, -149980256,
+-227270880, -334289120, -431815488, -465875104, -381789856, -201092512, -19849728, 100399696, 182234384, 254505808,
+295659648, 288585824, 269964992, 281386944, 315109408, 345971968, 378699072, 424291776, 459042880, 447787936,
+391741280, 318566848, 234615808, 120319752, -26028038, -167703984, -263907488, -309349856, -328910208, -343889440,
+-357035808, -365100128, -369183040, -368511424, -355676992, -325343232, -281465856, -230792208, -174850800, -113110112,
+-48930952, 12495670, 68545528, 118137904, 159899488, 194040720, 222759552, 246649776, 263353968, 270581344,
+267532432, 253314480, 227605888, 193476464, 156568736, 121000504, 88099440, 58618252, 33705292, 13705241,
+-2253247, -15534897, -27778774, -40846212, -56144888, -74168720, -94531160, -115715544, -135217376, -151071184,
+-163176544, -172670576, -180643104, -187729264, -193513504, -195408656, -189196000, -171573200, -141721040, -100734160,
+-51151448, 2652679, 55053964, 100841536, 136072080, 158270624, 167375952, 166312400, 159483952, 150750128,
+143187760, 139580528, 141745200, 149778400, 162720736, 179277840, 197052032, 211674784, 217527216, 209201408,
+182345520, 134332080, 65313032, -21227338, -119223464, -221298192, -319546656, -405998432, -473390208, -516054816,
+-530230368, -513815520, -466422720, -390015232, -289196256, -170530608, -41752988, 88480088, 211208240, 318744032,
+405772416, 468956192, 506444288, 518312352, 506494752, 473356928, 420836992, 351277312, 267993616, 174445472,
+73914776, -29439854, -130281392, -223306080, -303793248, -366947520, -408276384, -425243104, -417698464, -386863264,
+-335266752, -267617264, -190219808, -109179680, -29850560, 42653320, 104020888, 151907632, 185724048, 205642496,
+212621824, 208755280, 196538784, 178010288, 155011808, 129571112, 103384160, 77390480, 52181168, 28295244,
+5985037, -14707042, -33559800, -50273664, -64760052, -76887432, -86267104, -92647280, -96055336, -96301216,
+-92933432, -85790360, -74892952, -59932512, -40791452, -18388902, 5860483, 30818538, 54721104, 74417288,
+86956984, 91032904, 85701776, 69631080, 43691092, 12382928, -19332722, -47658568, -65710852, -62912144,
+-36258112, -518080, 21429202, 20601348, 8546985, 825707, 671626, 1986959, 1380832, 722628,
+1206886, 1399623, 694711, 281320, 529892, 461709, -140660, -445066, -325344, -481036,
+-959925, -1155883, -1067299, -1207960, -1529008, -1587527, -1462973, -1526861, -1668058, -1577864,
+-1390496, -1357210, -1326071, -1107565, -872952, -761283, -598074, -305480, -71941, },
{
11671574,
-33428268, 48048336, 42938400, 10669236, -23849416, -20741470, 7692824, -3387119, -60983168, -61801896,
-75895296, 273056832, 373722816, 342877984, 285016704, 275532896, 274483296, 221783520, 125141392, 18176302,
--95674688, -211587264, -285864960, -277180544, -200371504, -107004816, -29242822, 34718904, 94131728, 145453904,
-173212816, 159637488, 97118336, -2741800, -114900576, -218103808, -305466112, -380638784, -447978496, -505954112,
--547699072, -568476480, -572700096, -571630080, -574870080, -586484736, -606955648, -633760512, -660538560, -680332480,
--690672640, -693753728, -692721856, -689765824, -686531200, -684405184, -684960832, -690392384, -702076288, -718923840,
--738931392, -761562688, -786150272, -808610816, -822278976, -821855936, -805235520, -773099456, -729042752, -679147072,
--629310400, -583083136, -542430208, -508994432, -483474816, -464784704, -450638176, -438507040, -426233088, -412716288,
--397979712, -382108736, -364839744, -346619968, -328956928, -313062304, -299318432, -288607296, -282822528, -283359936,
--290075648, -302071488, -318472352, -338125600, -359373888, -380381088, -399396000, -415003904, -426471456, -433510368,
--435789408, -433354688, -427214496, -418410336, -406781184, -391712832, -373661632, -353731904, -332318784, -309478688,
--286101728, -263467792, -242115904, -222054112, -203476224, -186587344, -171440064, -158391408, -147968608, -140255920,
--135438576, -134720784, -139487120, -149966304, -166157792, -189564832, -222349376, -265213696, -317849056, -381103200,
--456832576, -545526336, -645587840, -755151872, -873149696, -997795520, -1124988288, -1249492480, -1367641088, -1477668480,
--1577235968, -1662584576, -1731487104, -1785210624, -1825508224, -1851442304, -1861844224, -1859087360, -1846884736, -1825654784,
--1793888128, -1753022592, -1706731904, -1655882752, -1598357632, -1533789184, -1464510848, -1391412096, -1312354688, -1225542656,
--1131783424, -1032359296, -926551168, -812663616, -690843904, -563587200, -433046528, -299167008, -162062000, -24927454,
-108413568, 237962656, 365616608, 489768000, 607022208, 718448192, 827780352, 934079168, 1033306880, 1126050176,
-1215316352, 1297863424, 1366641408, 1419627904, 1456143744, 1467462528, 1442218880, 1377115264, 1271023104, 1115677824,
-906274048, 653276864, 370027008, 61913028, -255111936, -543083584, -769113216, -917314304, -946205440, -779825408,
--411155616, 4182761, 243786096, 231176608, 95539400, 3235721, -7104950, 4381941, 277025, -4724464,
-574452, 3642669, -973884, -2865817, 1049583, 2232846, -1037772, -1719598, 1045288, 1407139,
--914291, -1052804, 878858, 840203, -778463, -638876, 676994, 439160, -634581, -346282,
-492848, 158377, -474594, -108985, 336081, -40802, -296353, 102005, 194347, },
+33428268, 48048336, 42938400, 10669236, -23849416, -20741470, 7692824, -3387119, -60983168, -61801896,
+75895296, 273056832, 373722816, 342877984, 285016704, 275532896, 274483296, 221783520, 125141392, 18176302,
+-95674688, -211587264, -285864960, -277180544, -200371504, -107004816, -29242822, 34718904, 94131728, 145453904,
+173212816, 159637488, 97118336, -2741800, -114900576, -218103808, -305466112, -380638784, -447978496, -505954112,
+-547699072, -568476480, -572700096, -571630080, -574870080, -586484736, -606955648, -633760512, -660538560, -680332480,
+-690672640, -693753728, -692721856, -689765824, -686531200, -684405184, -684960832, -690392384, -702076288, -718923840,
+-738931392, -761562688, -786150272, -808610816, -822278976, -821855936, -805235520, -773099456, -729042752, -679147072,
+-629310400, -583083136, -542430208, -508994432, -483474816, -464784704, -450638176, -438507040, -426233088, -412716288,
+-397979712, -382108736, -364839744, -346619968, -328956928, -313062304, -299318432, -288607296, -282822528, -283359936,
+-290075648, -302071488, -318472352, -338125600, -359373888, -380381088, -399396000, -415003904, -426471456, -433510368,
+-435789408, -433354688, -427214496, -418410336, -406781184, -391712832, -373661632, -353731904, -332318784, -309478688,
+-286101728, -263467792, -242115904, -222054112, -203476224, -186587344, -171440064, -158391408, -147968608, -140255920,
+-135438576, -134720784, -139487120, -149966304, -166157792, -189564832, -222349376, -265213696, -317849056, -381103200,
+-456832576, -545526336, -645587840, -755151872, -873149696, -997795520, -1124988288, -1249492480, -1367641088, -1477668480,
+-1577235968, -1662584576, -1731487104, -1785210624, -1825508224, -1851442304, -1861844224, -1859087360, -1846884736, -1825654784,
+-1793888128, -1753022592, -1706731904, -1655882752, -1598357632, -1533789184, -1464510848, -1391412096, -1312354688, -1225542656,
+-1131783424, -1032359296, -926551168, -812663616, -690843904, -563587200, -433046528, -299167008, -162062000, -24927454,
+108413568, 237962656, 365616608, 489768000, 607022208, 718448192, 827780352, 934079168, 1033306880, 1126050176,
+1215316352, 1297863424, 1366641408, 1419627904, 1456143744, 1467462528, 1442218880, 1377115264, 1271023104, 1115677824,
+906274048, 653276864, 370027008, 61913028, -255111936, -543083584, -769113216, -917314304, -946205440, -779825408,
+-411155616, 4182761, 243786096, 231176608, 95539400, 3235721, -7104950, 4381941, 277025, -4724464,
+574452, 3642669, -973884, -2865817, 1049583, 2232846, -1037772, -1719598, 1045288, 1407139,
+-914291, -1052804, 878858, 840203, -778463, -638876, 676994, 439160, -634581, -346282,
+492848, 158377, -474594, -108985, 336081, -40802, -296353, 102005, 194347, },
},
{
{
11190000,
-11688753, -40061308, -117706800, -134747616, -57714160, 5634460, -62899260, -187951520, -160767600, 71454832,
-306802400, 341183072, 213331568, 114958560, 134767488, 188811056, 166078864, 51683488, -91673392, -197863776,
--236760608, -216768080, -167876320, -114699248, -63814088, -17744658, 10382547, 3632469, -45310832, -131139848,
--237333984, -339328192, -417852000, -472420640, -513258784, -540252096, -540749248, -509197376, -458708960, -410927968,
--381957344, -378321664, -397385408, -428277504, -458271392, -481866880, -501694048, -520654720, -536553088, -544890176,
--544073024, -536677632, -526796544, -516915424, -507240992, -497597728, -488693184, -480493024, -470668832, -456728448,
--439283872, -421299232, -404266496, -386905152, -367767840, -347481632, -327834848, -309644608, -292188768, -274380224,
--256101376, -238439936, -222777808, -209789296, -199288624, -190734128, -183625952, -177709104, -173162880, -170485504,
--169868640, -170759840, -172325904, -174384800, -177703728, -183303296, -191610832, -202452416, -215758752, -231803136,
--250417536, -270201216, -288826880, -303902752, -313296928, -315217312, -308869888, -295065856, -275606432, -252019552,
--225260304, -196459328, -167298640, -139454368, -113997560, -91598768, -73310256, -61077120, -57306676, -63880124,
--81812688, -111846320, -154618288, -209682448, -275052384, -348547872, -429030176, -515448160, -605471232, -696545472,
--787878464, -879785408, -971233856, -1059755776, -1143757312, -1222864640, -1295487232, -1358142208, -1408379904, -1446699648,
--1474248064, -1490276864, -1493755776, -1486252544, -1470870016, -1448836864, -1419387904, -1382823296, -1341137920, -1295046400,
--1242674176, -1182316928, -1114553728, -1040169152, -957788992, -865628096, -764488064, -656917952, -544147136, -426189056,
--304802560, -183969552, -66967132, 45001056, 150619136, 246948272, 331334720, 403297952, 463172480, 510109504,
-542955264, 562277248, 570001216, 567531584, 555661952, 536101568, 511675008, 484807840, 456758496, 428523904,
-401605216, 377419712, 356422688, 338270560, 322689472, 309778272, 299407008, 290740288, 282810720, 275370208,
-268582560, 262031664, 254824160, 246598768, 237373184, 226360352, 212164944, 194264592, 172972832, 147953040,
-118503520, 85361936, 50281184, 13942538, -23293756, -58928560, -89729384, -114679384, -131502768, -130823096,
--102383432, -51582556, -2934537, 20398410, 17792438, 6694244, 927713, 525597, 409096, -360240,
--264141, 293668, 136365, -266288, -70330, 250719, 71941, -165893, 3758, 180389,
-18254, -121870, 12885, 104153, -25233, -98784, 3221, 44560, -47245, -75162,
--3221, 9664, -45097, -44560, -1611, -3758, -23622, -9127, 3221, },
+11688753, -40061308, -117706800, -134747616, -57714160, 5634460, -62899260, -187951520, -160767600, 71454832,
+306802400, 341183072, 213331568, 114958560, 134767488, 188811056, 166078864, 51683488, -91673392, -197863776,
+-236760608, -216768080, -167876320, -114699248, -63814088, -17744658, 10382547, 3632469, -45310832, -131139848,
+-237333984, -339328192, -417852000, -472420640, -513258784, -540252096, -540749248, -509197376, -458708960, -410927968,
+-381957344, -378321664, -397385408, -428277504, -458271392, -481866880, -501694048, -520654720, -536553088, -544890176,
+-544073024, -536677632, -526796544, -516915424, -507240992, -497597728, -488693184, -480493024, -470668832, -456728448,
+-439283872, -421299232, -404266496, -386905152, -367767840, -347481632, -327834848, -309644608, -292188768, -274380224,
+-256101376, -238439936, -222777808, -209789296, -199288624, -190734128, -183625952, -177709104, -173162880, -170485504,
+-169868640, -170759840, -172325904, -174384800, -177703728, -183303296, -191610832, -202452416, -215758752, -231803136,
+-250417536, -270201216, -288826880, -303902752, -313296928, -315217312, -308869888, -295065856, -275606432, -252019552,
+-225260304, -196459328, -167298640, -139454368, -113997560, -91598768, -73310256, -61077120, -57306676, -63880124,
+-81812688, -111846320, -154618288, -209682448, -275052384, -348547872, -429030176, -515448160, -605471232, -696545472,
+-787878464, -879785408, -971233856, -1059755776, -1143757312, -1222864640, -1295487232, -1358142208, -1408379904, -1446699648,
+-1474248064, -1490276864, -1493755776, -1486252544, -1470870016, -1448836864, -1419387904, -1382823296, -1341137920, -1295046400,
+-1242674176, -1182316928, -1114553728, -1040169152, -957788992, -865628096, -764488064, -656917952, -544147136, -426189056,
+-304802560, -183969552, -66967132, 45001056, 150619136, 246948272, 331334720, 403297952, 463172480, 510109504,
+542955264, 562277248, 570001216, 567531584, 555661952, 536101568, 511675008, 484807840, 456758496, 428523904,
+401605216, 377419712, 356422688, 338270560, 322689472, 309778272, 299407008, 290740288, 282810720, 275370208,
+268582560, 262031664, 254824160, 246598768, 237373184, 226360352, 212164944, 194264592, 172972832, 147953040,
+118503520, 85361936, 50281184, 13942538, -23293756, -58928560, -89729384, -114679384, -131502768, -130823096,
+-102383432, -51582556, -2934537, 20398410, 17792438, 6694244, 927713, 525597, 409096, -360240,
+-264141, 293668, 136365, -266288, -70330, 250719, 71941, -165893, 3758, 180389,
+18254, -121870, 12885, 104153, -25233, -98784, 3221, 44560, -47245, -75162,
+-3221, 9664, -45097, -44560, -1611, -3758, -23622, -9127, 3221, },
{
11190000,
-11688753, -40061308, -117706800, -134747616, -57714160, 5634460, -62899260, -187951520, -160767600, 71454832,
-306802400, 341183072, 213331568, 114958560, 134767488, 188811056, 166078864, 51683488, -91673392, -197863776,
--236760608, -216768080, -167876320, -114699248, -63814088, -17744658, 10382547, 3632469, -45310832, -131139848,
--237333984, -339328192, -417852000, -472420640, -513258784, -540252096, -540749248, -509197376, -458708960, -410927968,
--381957344, -378321664, -397385408, -428277504, -458271392, -481866880, -501694048, -520654720, -536553088, -544890176,
--544073024, -536677632, -526796544, -516915424, -507240992, -497597728, -488693184, -480493024, -470668832, -456728448,
--439283872, -421299232, -404266496, -386905152, -367767840, -347481632, -327834848, -309644608, -292188768, -274380224,
--256101376, -238439936, -222777808, -209789296, -199288624, -190734128, -183625952, -177709104, -173162880, -170485504,
--169868640, -170759840, -172325904, -174384800, -177703728, -183303296, -191610832, -202452416, -215758752, -231803136,
--250417536, -270201216, -288826880, -303902752, -313296928, -315217312, -308869888, -295065856, -275606432, -252019552,
--225260304, -196459328, -167298640, -139454368, -113997560, -91598768, -73310256, -61077120, -57306676, -63880124,
--81812688, -111846320, -154618288, -209682448, -275052384, -348547872, -429030176, -515448160, -605471232, -696545472,
--787878464, -879785408, -971233856, -1059755776, -1143757312, -1222864640, -1295487232, -1358142208, -1408379904, -1446699648,
--1474248064, -1490276864, -1493755776, -1486252544, -1470870016, -1448836864, -1419387904, -1382823296, -1341137920, -1295046400,
--1242674176, -1182316928, -1114553728, -1040169152, -957788992, -865628096, -764488064, -656917952, -544147136, -426189056,
--304802560, -183969552, -66967132, 45001056, 150619136, 246948272, 331334720, 403297952, 463172480, 510109504,
-542955264, 562277248, 570001216, 567531584, 555661952, 536101568, 511675008, 484807840, 456758496, 428523904,
-401605216, 377419712, 356422688, 338270560, 322689472, 309778272, 299407008, 290740288, 282810720, 275370208,
-268582560, 262031664, 254824160, 246598768, 237373184, 226360352, 212164944, 194264592, 172972832, 147953040,
-118503520, 85361936, 50281184, 13942538, -23293756, -58928560, -89729384, -114679384, -131502768, -130823096,
--102383432, -51582556, -2934537, 20398410, 17792438, 6694244, 927713, 525597, 409096, -360240,
--264141, 293668, 136365, -266288, -70330, 250719, 71941, -165893, 3758, 180389,
-18254, -121870, 12885, 104153, -25233, -98784, 3221, 44560, -47245, -75162,
--3221, 9664, -45097, -44560, -1611, -3758, -23622, -9127, 3221, },
+11688753, -40061308, -117706800, -134747616, -57714160, 5634460, -62899260, -187951520, -160767600, 71454832,
+306802400, 341183072, 213331568, 114958560, 134767488, 188811056, 166078864, 51683488, -91673392, -197863776,
+-236760608, -216768080, -167876320, -114699248, -63814088, -17744658, 10382547, 3632469, -45310832, -131139848,
+-237333984, -339328192, -417852000, -472420640, -513258784, -540252096, -540749248, -509197376, -458708960, -410927968,
+-381957344, -378321664, -397385408, -428277504, -458271392, -481866880, -501694048, -520654720, -536553088, -544890176,
+-544073024, -536677632, -526796544, -516915424, -507240992, -497597728, -488693184, -480493024, -470668832, -456728448,
+-439283872, -421299232, -404266496, -386905152, -367767840, -347481632, -327834848, -309644608, -292188768, -274380224,
+-256101376, -238439936, -222777808, -209789296, -199288624, -190734128, -183625952, -177709104, -173162880, -170485504,
+-169868640, -170759840, -172325904, -174384800, -177703728, -183303296, -191610832, -202452416, -215758752, -231803136,
+-250417536, -270201216, -288826880, -303902752, -313296928, -315217312, -308869888, -295065856, -275606432, -252019552,
+-225260304, -196459328, -167298640, -139454368, -113997560, -91598768, -73310256, -61077120, -57306676, -63880124,
+-81812688, -111846320, -154618288, -209682448, -275052384, -348547872, -429030176, -515448160, -605471232, -696545472,
+-787878464, -879785408, -971233856, -1059755776, -1143757312, -1222864640, -1295487232, -1358142208, -1408379904, -1446699648,
+-1474248064, -1490276864, -1493755776, -1486252544, -1470870016, -1448836864, -1419387904, -1382823296, -1341137920, -1295046400,
+-1242674176, -1182316928, -1114553728, -1040169152, -957788992, -865628096, -764488064, -656917952, -544147136, -426189056,
+-304802560, -183969552, -66967132, 45001056, 150619136, 246948272, 331334720, 403297952, 463172480, 510109504,
+542955264, 562277248, 570001216, 567531584, 555661952, 536101568, 511675008, 484807840, 456758496, 428523904,
+401605216, 377419712, 356422688, 338270560, 322689472, 309778272, 299407008, 290740288, 282810720, 275370208,
+268582560, 262031664, 254824160, 246598768, 237373184, 226360352, 212164944, 194264592, 172972832, 147953040,
+118503520, 85361936, 50281184, 13942538, -23293756, -58928560, -89729384, -114679384, -131502768, -130823096,
+-102383432, -51582556, -2934537, 20398410, 17792438, 6694244, 927713, 525597, 409096, -360240,
+-264141, 293668, 136365, -266288, -70330, 250719, 71941, -165893, 3758, 180389,
+18254, -121870, 12885, 104153, -25233, -98784, 3221, 44560, -47245, -75162,
+-3221, 9664, -45097, -44560, -1611, -3758, -23622, -9127, 3221, },
},
{
{
6211060,
-34978752, 80612776, 109325712, 110260400, 92930208, 42263016, -53406844, -146626960, -180780000, -181451632,
--218612768, -291483328, -334530176, -329071808, -323580704, -343249504, -359814656, -357419648, -356058144, -359599904,
--343069088, -302278176, -264480864, -243390432, -228616272, -220896080, -233855600, -258485632, -265091824, -244069040,
--213233856, -184628832, -152695216, -115064320, -79634600, -49862424, -22612466, -731218, 7459822, 524523,
--15042049, -33455110, -50982336, -62585188, -64738580, -59263032, -50605452, -42732240, -40575092, -49833432,
--73002632, -108290624, -152267872, -200412304, -246377040, -284815392, -314633184, -337180160, -352783232, -361140192,
--363007424, -359134432, -348979520, -332006336, -308914464, -280828576, -248721024, -214081568, -178794656, -144102592,
--110534208, -78451336, -47745004, -17543868, 12916577, 43589624, 74150464, 104460584, 134023920, 161468224,
-184815664, 202076608, 211709680, 212568672, 203110080, 180917440, 143664512, 90120224, 19548544, -68624448,
--172849888, -288047360, -407998272, -528383520, -645873408, -755773568, -853351488, -936860672, -1006812288, -1062875008,
--1103973504, -1130945408, -1146318720, -1151125376, -1144086400, -1124344064, -1093229184, -1052873088, -1004816704, -950963712,
--894673344, -839560896, -787456512, -738373568, -692276224, -649974016, -612192832, -578741504, -549220032, -523921600,
--503275680, -486701408, -472745984, -460297024, -449115616, -439285504, -430778240, -423759712, -418975680, -417571744,
--420481600, -428016032, -440041952, -456500800, -477438752, -502406496, -530226048, -559775424, -590655168, -622515776,
--653955456, -682810688, -707459520, -727025216, -740269312, -745413568, -741645312, -729996288, -712013760, -688337216,
--659459456, -627038912, -593065216, -558063360, -521429440, -483322336, -444842112, -406379616, -367223456, -327093984,
--286897920, -247544192, -208959824, -170764672, -133316856, -97519376, -63731944, -31346282, 276489, 30821222,
-59784872, 88011400, 117109800, 147303952, 177724672, 209031760, 243277152, 280708864, 319700192, 360357952,
-404555328, 451731232, 498806240, 544664128, 589579264, 629760832, 658198912, 670943680, 666074816, 637512704,
-578303936, 489051808, 374302112, 234066048, 70973264, -98681704, -255379824, -389007008, -478705248, -472851744,
--333534272, -111147312, 68010808, 117137720, 67772976, 12375411, -2839510, 2132451, 1378148, -2444910,
--650688, 2015950, 204548, -1671279, 1074, 1360431, -106300, -1068910, 222265, 907312,
--214212, -693637, 259309, 566399, -253940, -448287, 227096, 315143, -245887, -266288,
-176094, 139050, -197569, -118112, 121870, 20401, -115964, 9127, 60666, },
+34978752, 80612776, 109325712, 110260400, 92930208, 42263016, -53406844, -146626960, -180780000, -181451632,
+-218612768, -291483328, -334530176, -329071808, -323580704, -343249504, -359814656, -357419648, -356058144, -359599904,
+-343069088, -302278176, -264480864, -243390432, -228616272, -220896080, -233855600, -258485632, -265091824, -244069040,
+-213233856, -184628832, -152695216, -115064320, -79634600, -49862424, -22612466, -731218, 7459822, 524523,
+-15042049, -33455110, -50982336, -62585188, -64738580, -59263032, -50605452, -42732240, -40575092, -49833432,
+-73002632, -108290624, -152267872, -200412304, -246377040, -284815392, -314633184, -337180160, -352783232, -361140192,
+-363007424, -359134432, -348979520, -332006336, -308914464, -280828576, -248721024, -214081568, -178794656, -144102592,
+-110534208, -78451336, -47745004, -17543868, 12916577, 43589624, 74150464, 104460584, 134023920, 161468224,
+184815664, 202076608, 211709680, 212568672, 203110080, 180917440, 143664512, 90120224, 19548544, -68624448,
+-172849888, -288047360, -407998272, -528383520, -645873408, -755773568, -853351488, -936860672, -1006812288, -1062875008,
+-1103973504, -1130945408, -1146318720, -1151125376, -1144086400, -1124344064, -1093229184, -1052873088, -1004816704, -950963712,
+-894673344, -839560896, -787456512, -738373568, -692276224, -649974016, -612192832, -578741504, -549220032, -523921600,
+-503275680, -486701408, -472745984, -460297024, -449115616, -439285504, -430778240, -423759712, -418975680, -417571744,
+-420481600, -428016032, -440041952, -456500800, -477438752, -502406496, -530226048, -559775424, -590655168, -622515776,
+-653955456, -682810688, -707459520, -727025216, -740269312, -745413568, -741645312, -729996288, -712013760, -688337216,
+-659459456, -627038912, -593065216, -558063360, -521429440, -483322336, -444842112, -406379616, -367223456, -327093984,
+-286897920, -247544192, -208959824, -170764672, -133316856, -97519376, -63731944, -31346282, 276489, 30821222,
+59784872, 88011400, 117109800, 147303952, 177724672, 209031760, 243277152, 280708864, 319700192, 360357952,
+404555328, 451731232, 498806240, 544664128, 589579264, 629760832, 658198912, 670943680, 666074816, 637512704,
+578303936, 489051808, 374302112, 234066048, 70973264, -98681704, -255379824, -389007008, -478705248, -472851744,
+-333534272, -111147312, 68010808, 117137720, 67772976, 12375411, -2839510, 2132451, 1378148, -2444910,
+-650688, 2015950, 204548, -1671279, 1074, 1360431, -106300, -1068910, 222265, 907312,
+-214212, -693637, 259309, 566399, -253940, -448287, 227096, 315143, -245887, -266288,
+176094, 139050, -197569, -118112, 121870, 20401, -115964, 9127, 60666, },
{
-91098944,
--257189088, -369215776, -400231360, -368604832, -319033920, -265362944, -188068032, -89787368, -9621264, 29767882,
-50291920, 77778096, 108183248, 133607304, 170049568, 232137616, 298603840, 326322496, 290237248, 197401536,
-73890616, -49498424, -148477552, -214940032, -253075584, -264258608, -244663888, -199331584, -146193168, -100364792,
--62904628, -28640452, 4153234, 36403068, 71977208, 112137304, 150219696, 175712480, 181030192, 163381088,
-124666256, 72294504, 17459578, -29639032, -62694712, -79011296, -79526688, -69355672, -55715388, -44043816,
--36359044, -32417340, -30959198, -30240864, -28823526, -26287348, -23006530, -19612432, -16761647, -14723685,
--12786118, -9368397, -2711735, 8783208, 26276610, 49416284, 75259640, 98729488, 114351360, 117805048,
-106865232, 82032800, 46493556, 4951561, -37917044, -78324096, -113419888, -140948480, -158707632, -164144528,
--154651568, -128642864, -86754584, -32558000, 27484032, 85047328, 131882880, 161876784, 172216912, 163395056,
-138473504, 102116608, 59641528, 16258599, -23465554, -55970940, -78933984, -91351272, -93557272, -87172800,
--74826384, -59545428, -44037372, -30204358, -18999324, -10519986, -4220342, 817118, 5617281, 11120207,
-18055506, 26812408, 37246492, 48491256, 58960776, 66642860, 69566656, 66279936, 56247964, 40042516,
-19180250, -4301410, -28228672, -50518480, -69346008, -83255792, -91117728, -92039536, -85456424, -71343704,
--50351512, -23885386, 5788006, 35614404, 62179852, 82309824, 93587872, 94823216, 86394880, 70160976,
-48873508, 25526602, 2877091, -16967268, -32840930, -44412648, -51804284, -55371256, -55631100, -53061636,
--47908212, -40312028, -30549566, -19041200, -6323266, 6787659, 19158238, 29657286, 37421512, 41853384,
-42696268, 40242232, 35249872, 28576564, 21034602, 13422310, 6296959, -242129, -6320045, -12029130,
--17589502, -23371602, -29429652, -35311072, -40429600, -44040056, -44704168, -40561136, -30383136, -13873818,
-8616778, 35296580, 61857192, 82479480, 92036856, 86772832, 64508260, 26887570, -18865644, -62464932,
--94489816, -107148696, -94908040, -58954332, -9684078, 38810400, 74739944, 87122872, 66568236, 18261128,
--29876866, -46610596, -28573344, -2207613, 8111583, 3517578, -1232119, -479963, 791885, -161598,
--657130, 418759, 933619, 294205, 179852, 879395, 1036161, 533113, 457414, 810675,
-723165, 273267, 157303, 263067, 57982, -306553, -411780, -402116, -574452, -774705,
--785442, -737124, -769336, -770947, -658741, -520228, -406411, -269509, -93952, },
+-257189088, -369215776, -400231360, -368604832, -319033920, -265362944, -188068032, -89787368, -9621264, 29767882,
+50291920, 77778096, 108183248, 133607304, 170049568, 232137616, 298603840, 326322496, 290237248, 197401536,
+73890616, -49498424, -148477552, -214940032, -253075584, -264258608, -244663888, -199331584, -146193168, -100364792,
+-62904628, -28640452, 4153234, 36403068, 71977208, 112137304, 150219696, 175712480, 181030192, 163381088,
+124666256, 72294504, 17459578, -29639032, -62694712, -79011296, -79526688, -69355672, -55715388, -44043816,
+-36359044, -32417340, -30959198, -30240864, -28823526, -26287348, -23006530, -19612432, -16761647, -14723685,
+-12786118, -9368397, -2711735, 8783208, 26276610, 49416284, 75259640, 98729488, 114351360, 117805048,
+106865232, 82032800, 46493556, 4951561, -37917044, -78324096, -113419888, -140948480, -158707632, -164144528,
+-154651568, -128642864, -86754584, -32558000, 27484032, 85047328, 131882880, 161876784, 172216912, 163395056,
+138473504, 102116608, 59641528, 16258599, -23465554, -55970940, -78933984, -91351272, -93557272, -87172800,
+-74826384, -59545428, -44037372, -30204358, -18999324, -10519986, -4220342, 817118, 5617281, 11120207,
+18055506, 26812408, 37246492, 48491256, 58960776, 66642860, 69566656, 66279936, 56247964, 40042516,
+19180250, -4301410, -28228672, -50518480, -69346008, -83255792, -91117728, -92039536, -85456424, -71343704,
+-50351512, -23885386, 5788006, 35614404, 62179852, 82309824, 93587872, 94823216, 86394880, 70160976,
+48873508, 25526602, 2877091, -16967268, -32840930, -44412648, -51804284, -55371256, -55631100, -53061636,
+-47908212, -40312028, -30549566, -19041200, -6323266, 6787659, 19158238, 29657286, 37421512, 41853384,
+42696268, 40242232, 35249872, 28576564, 21034602, 13422310, 6296959, -242129, -6320045, -12029130,
+-17589502, -23371602, -29429652, -35311072, -40429600, -44040056, -44704168, -40561136, -30383136, -13873818,
+8616778, 35296580, 61857192, 82479480, 92036856, 86772832, 64508260, 26887570, -18865644, -62464932,
+-94489816, -107148696, -94908040, -58954332, -9684078, 38810400, 74739944, 87122872, 66568236, 18261128,
+-29876866, -46610596, -28573344, -2207613, 8111583, 3517578, -1232119, -479963, 791885, -161598,
+-657130, 418759, 933619, 294205, 179852, 879395, 1036161, 533113, 457414, 810675,
+723165, 273267, 157303, 263067, 57982, -306553, -411780, -402116, -574452, -774705,
+-785442, -737124, -769336, -770947, -658741, -520228, -406411, -269509, -93952, },
},
{
{
-91098944,
--257189088, -369215776, -400231360, -368604832, -319033920, -265362944, -188068032, -89787368, -9621264, 29767882,
-50291920, 77778096, 108183248, 133607304, 170049568, 232137616, 298603840, 326322496, 290237248, 197401536,
-73890616, -49498424, -148477552, -214940032, -253075584, -264258608, -244663888, -199331584, -146193168, -100364792,
--62904628, -28640452, 4153234, 36403068, 71977208, 112137304, 150219696, 175712480, 181030192, 163381088,
-124666256, 72294504, 17459578, -29639032, -62694712, -79011296, -79526688, -69355672, -55715388, -44043816,
--36359044, -32417340, -30959198, -30240864, -28823526, -26287348, -23006530, -19612432, -16761647, -14723685,
--12786118, -9368397, -2711735, 8783208, 26276610, 49416284, 75259640, 98729488, 114351360, 117805048,
-106865232, 82032800, 46493556, 4951561, -37917044, -78324096, -113419888, -140948480, -158707632, -164144528,
--154651568, -128642864, -86754584, -32558000, 27484032, 85047328, 131882880, 161876784, 172216912, 163395056,
-138473504, 102116608, 59641528, 16258599, -23465554, -55970940, -78933984, -91351272, -93557272, -87172800,
--74826384, -59545428, -44037372, -30204358, -18999324, -10519986, -4220342, 817118, 5617281, 11120207,
-18055506, 26812408, 37246492, 48491256, 58960776, 66642860, 69566656, 66279936, 56247964, 40042516,
-19180250, -4301410, -28228672, -50518480, -69346008, -83255792, -91117728, -92039536, -85456424, -71343704,
--50351512, -23885386, 5788006, 35614404, 62179852, 82309824, 93587872, 94823216, 86394880, 70160976,
-48873508, 25526602, 2877091, -16967268, -32840930, -44412648, -51804284, -55371256, -55631100, -53061636,
--47908212, -40312028, -30549566, -19041200, -6323266, 6787659, 19158238, 29657286, 37421512, 41853384,
-42696268, 40242232, 35249872, 28576564, 21034602, 13422310, 6296959, -242129, -6320045, -12029130,
--17589502, -23371602, -29429652, -35311072, -40429600, -44040056, -44704168, -40561136, -30383136, -13873818,
-8616778, 35296580, 61857192, 82479480, 92036856, 86772832, 64508260, 26887570, -18865644, -62464932,
--94489816, -107148696, -94908040, -58954332, -9684078, 38810400, 74739944, 87122872, 66568236, 18261128,
--29876866, -46610596, -28573344, -2207613, 8111583, 3517578, -1232119, -479963, 791885, -161598,
--657130, 418759, 933619, 294205, 179852, 879395, 1036161, 533113, 457414, 810675,
-723165, 273267, 157303, 263067, 57982, -306553, -411780, -402116, -574452, -774705,
--785442, -737124, -769336, -770947, -658741, -520228, -406411, -269509, -93952, },
+-257189088, -369215776, -400231360, -368604832, -319033920, -265362944, -188068032, -89787368, -9621264, 29767882,
+50291920, 77778096, 108183248, 133607304, 170049568, 232137616, 298603840, 326322496, 290237248, 197401536,
+73890616, -49498424, -148477552, -214940032, -253075584, -264258608, -244663888, -199331584, -146193168, -100364792,
+-62904628, -28640452, 4153234, 36403068, 71977208, 112137304, 150219696, 175712480, 181030192, 163381088,
+124666256, 72294504, 17459578, -29639032, -62694712, -79011296, -79526688, -69355672, -55715388, -44043816,
+-36359044, -32417340, -30959198, -30240864, -28823526, -26287348, -23006530, -19612432, -16761647, -14723685,
+-12786118, -9368397, -2711735, 8783208, 26276610, 49416284, 75259640, 98729488, 114351360, 117805048,
+106865232, 82032800, 46493556, 4951561, -37917044, -78324096, -113419888, -140948480, -158707632, -164144528,
+-154651568, -128642864, -86754584, -32558000, 27484032, 85047328, 131882880, 161876784, 172216912, 163395056,
+138473504, 102116608, 59641528, 16258599, -23465554, -55970940, -78933984, -91351272, -93557272, -87172800,
+-74826384, -59545428, -44037372, -30204358, -18999324, -10519986, -4220342, 817118, 5617281, 11120207,
+18055506, 26812408, 37246492, 48491256, 58960776, 66642860, 69566656, 66279936, 56247964, 40042516,
+19180250, -4301410, -28228672, -50518480, -69346008, -83255792, -91117728, -92039536, -85456424, -71343704,
+-50351512, -23885386, 5788006, 35614404, 62179852, 82309824, 93587872, 94823216, 86394880, 70160976,
+48873508, 25526602, 2877091, -16967268, -32840930, -44412648, -51804284, -55371256, -55631100, -53061636,
+-47908212, -40312028, -30549566, -19041200, -6323266, 6787659, 19158238, 29657286, 37421512, 41853384,
+42696268, 40242232, 35249872, 28576564, 21034602, 13422310, 6296959, -242129, -6320045, -12029130,
+-17589502, -23371602, -29429652, -35311072, -40429600, -44040056, -44704168, -40561136, -30383136, -13873818,
+8616778, 35296580, 61857192, 82479480, 92036856, 86772832, 64508260, 26887570, -18865644, -62464932,
+-94489816, -107148696, -94908040, -58954332, -9684078, 38810400, 74739944, 87122872, 66568236, 18261128,
+-29876866, -46610596, -28573344, -2207613, 8111583, 3517578, -1232119, -479963, 791885, -161598,
+-657130, 418759, 933619, 294205, 179852, 879395, 1036161, 533113, 457414, 810675,
+723165, 273267, 157303, 263067, 57982, -306553, -411780, -402116, -574452, -774705,
+-785442, -737124, -769336, -770947, -658741, -520228, -406411, -269509, -93952, },
{
6211060,
-34978752, 80612776, 109325712, 110260400, 92930208, 42263016, -53406844, -146626960, -180780000, -181451632,
--218612768, -291483328, -334530176, -329071808, -323580704, -343249504, -359814656, -357419648, -356058144, -359599904,
--343069088, -302278176, -264480864, -243390432, -228616272, -220896080, -233855600, -258485632, -265091824, -244069040,
--213233856, -184628832, -152695216, -115064320, -79634600, -49862424, -22612466, -731218, 7459822, 524523,
--15042049, -33455110, -50982336, -62585188, -64738580, -59263032, -50605452, -42732240, -40575092, -49833432,
--73002632, -108290624, -152267872, -200412304, -246377040, -284815392, -314633184, -337180160, -352783232, -361140192,
--363007424, -359134432, -348979520, -332006336, -308914464, -280828576, -248721024, -214081568, -178794656, -144102592,
--110534208, -78451336, -47745004, -17543868, 12916577, 43589624, 74150464, 104460584, 134023920, 161468224,
-184815664, 202076608, 211709680, 212568672, 203110080, 180917440, 143664512, 90120224, 19548544, -68624448,
--172849888, -288047360, -407998272, -528383520, -645873408, -755773568, -853351488, -936860672, -1006812288, -1062875008,
--1103973504, -1130945408, -1146318720, -1151125376, -1144086400, -1124344064, -1093229184, -1052873088, -1004816704, -950963712,
--894673344, -839560896, -787456512, -738373568, -692276224, -649974016, -612192832, -578741504, -549220032, -523921600,
--503275680, -486701408, -472745984, -460297024, -449115616, -439285504, -430778240, -423759712, -418975680, -417571744,
--420481600, -428016032, -440041952, -456500800, -477438752, -502406496, -530226048, -559775424, -590655168, -622515776,
--653955456, -682810688, -707459520, -727025216, -740269312, -745413568, -741645312, -729996288, -712013760, -688337216,
--659459456, -627038912, -593065216, -558063360, -521429440, -483322336, -444842112, -406379616, -367223456, -327093984,
--286897920, -247544192, -208959824, -170764672, -133316856, -97519376, -63731944, -31346282, 276489, 30821222,
-59784872, 88011400, 117109800, 147303952, 177724672, 209031760, 243277152, 280708864, 319700192, 360357952,
-404555328, 451731232, 498806240, 544664128, 589579264, 629760832, 658198912, 670943680, 666074816, 637512704,
-578303936, 489051808, 374302112, 234066048, 70973264, -98681704, -255379824, -389007008, -478705248, -472851744,
--333534272, -111147312, 68010808, 117137720, 67772976, 12375411, -2839510, 2132451, 1378148, -2444910,
--650688, 2015950, 204548, -1671279, 1074, 1360431, -106300, -1068910, 222265, 907312,
--214212, -693637, 259309, 566399, -253940, -448287, 227096, 315143, -245887, -266288,
-176094, 139050, -197569, -118112, 121870, 20401, -115964, 9127, 60666, },
+34978752, 80612776, 109325712, 110260400, 92930208, 42263016, -53406844, -146626960, -180780000, -181451632,
+-218612768, -291483328, -334530176, -329071808, -323580704, -343249504, -359814656, -357419648, -356058144, -359599904,
+-343069088, -302278176, -264480864, -243390432, -228616272, -220896080, -233855600, -258485632, -265091824, -244069040,
+-213233856, -184628832, -152695216, -115064320, -79634600, -49862424, -22612466, -731218, 7459822, 524523,
+-15042049, -33455110, -50982336, -62585188, -64738580, -59263032, -50605452, -42732240, -40575092, -49833432,
+-73002632, -108290624, -152267872, -200412304, -246377040, -284815392, -314633184, -337180160, -352783232, -361140192,
+-363007424, -359134432, -348979520, -332006336, -308914464, -280828576, -248721024, -214081568, -178794656, -144102592,
+-110534208, -78451336, -47745004, -17543868, 12916577, 43589624, 74150464, 104460584, 134023920, 161468224,
+184815664, 202076608, 211709680, 212568672, 203110080, 180917440, 143664512, 90120224, 19548544, -68624448,
+-172849888, -288047360, -407998272, -528383520, -645873408, -755773568, -853351488, -936860672, -1006812288, -1062875008,
+-1103973504, -1130945408, -1146318720, -1151125376, -1144086400, -1124344064, -1093229184, -1052873088, -1004816704, -950963712,
+-894673344, -839560896, -787456512, -738373568, -692276224, -649974016, -612192832, -578741504, -549220032, -523921600,
+-503275680, -486701408, -472745984, -460297024, -449115616, -439285504, -430778240, -423759712, -418975680, -417571744,
+-420481600, -428016032, -440041952, -456500800, -477438752, -502406496, -530226048, -559775424, -590655168, -622515776,
+-653955456, -682810688, -707459520, -727025216, -740269312, -745413568, -741645312, -729996288, -712013760, -688337216,
+-659459456, -627038912, -593065216, -558063360, -521429440, -483322336, -444842112, -406379616, -367223456, -327093984,
+-286897920, -247544192, -208959824, -170764672, -133316856, -97519376, -63731944, -31346282, 276489, 30821222,
+59784872, 88011400, 117109800, 147303952, 177724672, 209031760, 243277152, 280708864, 319700192, 360357952,
+404555328, 451731232, 498806240, 544664128, 589579264, 629760832, 658198912, 670943680, 666074816, 637512704,
+578303936, 489051808, 374302112, 234066048, 70973264, -98681704, -255379824, -389007008, -478705248, -472851744,
+-333534272, -111147312, 68010808, 117137720, 67772976, 12375411, -2839510, 2132451, 1378148, -2444910,
+-650688, 2015950, 204548, -1671279, 1074, 1360431, -106300, -1068910, 222265, 907312,
+-214212, -693637, 259309, 566399, -253940, -448287, 227096, 315143, -245887, -266288,
+176094, 139050, -197569, -118112, 121870, 20401, -115964, 9127, 60666, },
},
{
{
7603166,
-42476688, 103279464, 146589920, 135250672, 80335752, 11234561, -65767760, -149280720, -208833120, -214609856,
--191591504, -195253504, -231171248, -247936112, -220656096, -190400192, -197253888, -220569120, -219633360, -197185712,
--183433760, -182333712, -173349168, -152315104, -135353744, -128052304, -118505664, -99485400, -77576240, -60952564,
--51844012, -49365816, -49600968, -45003740, -30903900, -10552198, 9705015, 26149908, 36463200, 38291244,
-31807454, 19619410, 2814277, -19248970, -45126148, -71135392, -95098096, -117431384, -139254656, -161874640,
--187139776, -216240336, -248834304, -283934368, -320240800, -355665184, -388487840, -418700800, -446400640, -469913984,
--487608160, -500139808, -508678752, -512512544, -510573888, -503515648, -492055072, -474965408, -450726208, -419716000,
--383359104, -342749664, -299282976, -255128032, -212111792, -171212960, -133291088, -99048392, -68507952, -41831372,
--20184736, -4600447, 5168993, 9294309, 6242735, -6143414, -28790240, -61982820, -107035416, -165830832,
--238823264, -324541696, -421067872, -526965120, -640141760, -756518208, -871110080, -980573248, -1083398528, -1177353088,
--1258720128, -1325160064, -1377268224, -1415646976, -1438483328, -1444116736, -1434029440, -1410808192, -1374958592, -1326537728,
--1268522880, -1205691776, -1141034880, -1075703552, -1011597376, -951476992, -896733888, -846954688, -801676032, -761317824,
--726391168, -696634560, -671082176, -648755904, -629198720, -612108032, -596566656, -581449984, -566881472, -554386304,
--545277248, -539866112, -538575488, -542615424, -552946432, -569424640, -591395520, -618458112, -650345536, -686426496,
--725362560, -765176896, -804046336, -840819840, -874014592, -900821056, -918468544, -926077632, -923566656, -909549504,
--882574464, -843826880, -796154880, -740955392, -678549504, -610973056, -541576576, -472080256, -402478176, -333600832,
--267507744, -205489488, -147484880, -93419832, -43877924, 492848, 39701604, 74688944, 106660144, 135861088,
-162007776, 186297424, 211087984, 236946368, 262724224, 289269280, 319466112, 353746400, 390006112, 428802560,
-473271584, 523070112, 574500736, 626924032, 681552256, 733620160, 773950400, 797709120, 802263936, 778438656,
-715712832, 614000448, 478078176, 306086208, 100260640, -117822768, -322167104, -499343648, -620302272, -613854976,
--428609280, -133701256, 100466800, 159385168, 88751208, 13932337, -4886599, 2917357, 1884417, -3468186,
--879395, 2867965, 268972, -2379412, 20401, 1941862, -180926, -1547262, 338229, 1308354,
--344671, -1014686, 410169, 827855, -409096, -651224, 383326, 463856, -403727, -373662,
-319438, 195421, -336618, -142808, 237297, 3221, -216896, 54224, 134755, },
+42476688, 103279464, 146589920, 135250672, 80335752, 11234561, -65767760, -149280720, -208833120, -214609856,
+-191591504, -195253504, -231171248, -247936112, -220656096, -190400192, -197253888, -220569120, -219633360, -197185712,
+-183433760, -182333712, -173349168, -152315104, -135353744, -128052304, -118505664, -99485400, -77576240, -60952564,
+-51844012, -49365816, -49600968, -45003740, -30903900, -10552198, 9705015, 26149908, 36463200, 38291244,
+31807454, 19619410, 2814277, -19248970, -45126148, -71135392, -95098096, -117431384, -139254656, -161874640,
+-187139776, -216240336, -248834304, -283934368, -320240800, -355665184, -388487840, -418700800, -446400640, -469913984,
+-487608160, -500139808, -508678752, -512512544, -510573888, -503515648, -492055072, -474965408, -450726208, -419716000,
+-383359104, -342749664, -299282976, -255128032, -212111792, -171212960, -133291088, -99048392, -68507952, -41831372,
+-20184736, -4600447, 5168993, 9294309, 6242735, -6143414, -28790240, -61982820, -107035416, -165830832,
+-238823264, -324541696, -421067872, -526965120, -640141760, -756518208, -871110080, -980573248, -1083398528, -1177353088,
+-1258720128, -1325160064, -1377268224, -1415646976, -1438483328, -1444116736, -1434029440, -1410808192, -1374958592, -1326537728,
+-1268522880, -1205691776, -1141034880, -1075703552, -1011597376, -951476992, -896733888, -846954688, -801676032, -761317824,
+-726391168, -696634560, -671082176, -648755904, -629198720, -612108032, -596566656, -581449984, -566881472, -554386304,
+-545277248, -539866112, -538575488, -542615424, -552946432, -569424640, -591395520, -618458112, -650345536, -686426496,
+-725362560, -765176896, -804046336, -840819840, -874014592, -900821056, -918468544, -926077632, -923566656, -909549504,
+-882574464, -843826880, -796154880, -740955392, -678549504, -610973056, -541576576, -472080256, -402478176, -333600832,
+-267507744, -205489488, -147484880, -93419832, -43877924, 492848, 39701604, 74688944, 106660144, 135861088,
+162007776, 186297424, 211087984, 236946368, 262724224, 289269280, 319466112, 353746400, 390006112, 428802560,
+473271584, 523070112, 574500736, 626924032, 681552256, 733620160, 773950400, 797709120, 802263936, 778438656,
+715712832, 614000448, 478078176, 306086208, 100260640, -117822768, -322167104, -499343648, -620302272, -613854976,
+-428609280, -133701256, 100466800, 159385168, 88751208, 13932337, -4886599, 2917357, 1884417, -3468186,
+-879395, 2867965, 268972, -2379412, 20401, 1941862, -180926, -1547262, 338229, 1308354,
+-344671, -1014686, 410169, 827855, -409096, -651224, 383326, 463856, -403727, -373662,
+319438, 195421, -336618, -142808, 237297, 3221, -216896, 54224, 134755, },
{
-121878824,
--327949216, -439449792, -444052896, -368775552, -245396720, -86296632, 97207456, 264143712, 356090368, 346550720,
-263938096, 159234304, 62198104, -24681030, -102201968, -160068592, -186791344, -183981904, -163771392, -133201432,
--87697328, -23809152, 46788300, 103827080, 137113072, 150406000, 147602992, 125509144, 83242912, 29804388,
--22716618, -67662376, -102038760, -122054920, -124664648, -110078936, -80458160, -39591008, 4912369, 43421584,
-70509408, 86873768, 94564440, 93348968, 82163800, 60991756, 30705794, -6274947, -44485660, -76545984,
--96388728, -100801272, -89162448, -63834488, -30457224, 3966939, 33825552, 55890408, 69000264, 73880416,
-72445896, 66097400, 54684060, 37191732, 12969727, -17504676, -51842404, -85010288, -109748760, -118309168,
--104737608, -67371392, -11078868, 52457656, 107721000, 140508240, 142736256, 114968760, 65752728, 7995082,
--45689324, -86133960, -108403360, -111204760, -96031712, -66442072, -27694486, 13394392, 49216568, 73181408,
-81637128, 74689480, 55739548, 30266634, 4209068, -17627620, -32488206, -39666708, -40008696, -35300872,
--27625766, -18796924, -10100689, -2289218, 4378719, 10022843, 14871861, 19003620, 22226456, 24037322,
-23637890, 20209432, 13393856, 3655017, -7693360, -18708878, -27219356, -31388158, -30255898, -23992224,
--13833553, -1796907, 9791452, 18900540, 24272470, 25560960, 23177792, 18026514, 11200738, 3724274,
--3570729, -10016937, -15056008, -18243410, -19265612, -17955110, -14359686, -8842264, -2096481, 4945655,
-11243151, 15796353, 17865990, 17185238, 14020921, 9051107, 3195456, -2569464, -7425999, -10878615,
--12737262, -13000866, -11812771, -9455371, -6269042, -2563559, 1353452, 5134097, 8430484, 10930155,
-12307766, 12255152, 10621454, 7481296, 3088618, -2079838, -7271917, -11628624, -14440217, -15199352,
--13622563, -9851581, -4516158, 1581622, 7680476, 12921946, 16411070, 17614198, 16370268, 12476343,
-5845988, -2801929, -11996917, -20175072, -25573310, -25850872, -19255950, -6481106, 9387725, 24314884,
-33745560, 33120640, 20860656, 999654, -18942416, -32137092, -33390686, -19749870, 4261145, 23944980,
-25036438, 9262097, -6587943, -9628780, -3402151, 1152125, 552440, -816581, -246424, 438624,
--35970, -354335, 189515, 510027, 148176, -16106, 305480, 378494, 28454, -121870,
-37044, -1074, -271657, -336618, -187368, -178241, -283468, -211527, -19864, 46171,
-44023, 150861, 278636, 281320, 241055, 255014, 233539, 123480, 26844, },
+-327949216, -439449792, -444052896, -368775552, -245396720, -86296632, 97207456, 264143712, 356090368, 346550720,
+263938096, 159234304, 62198104, -24681030, -102201968, -160068592, -186791344, -183981904, -163771392, -133201432,
+-87697328, -23809152, 46788300, 103827080, 137113072, 150406000, 147602992, 125509144, 83242912, 29804388,
+-22716618, -67662376, -102038760, -122054920, -124664648, -110078936, -80458160, -39591008, 4912369, 43421584,
+70509408, 86873768, 94564440, 93348968, 82163800, 60991756, 30705794, -6274947, -44485660, -76545984,
+-96388728, -100801272, -89162448, -63834488, -30457224, 3966939, 33825552, 55890408, 69000264, 73880416,
+72445896, 66097400, 54684060, 37191732, 12969727, -17504676, -51842404, -85010288, -109748760, -118309168,
+-104737608, -67371392, -11078868, 52457656, 107721000, 140508240, 142736256, 114968760, 65752728, 7995082,
+-45689324, -86133960, -108403360, -111204760, -96031712, -66442072, -27694486, 13394392, 49216568, 73181408,
+81637128, 74689480, 55739548, 30266634, 4209068, -17627620, -32488206, -39666708, -40008696, -35300872,
+-27625766, -18796924, -10100689, -2289218, 4378719, 10022843, 14871861, 19003620, 22226456, 24037322,
+23637890, 20209432, 13393856, 3655017, -7693360, -18708878, -27219356, -31388158, -30255898, -23992224,
+-13833553, -1796907, 9791452, 18900540, 24272470, 25560960, 23177792, 18026514, 11200738, 3724274,
+-3570729, -10016937, -15056008, -18243410, -19265612, -17955110, -14359686, -8842264, -2096481, 4945655,
+11243151, 15796353, 17865990, 17185238, 14020921, 9051107, 3195456, -2569464, -7425999, -10878615,
+-12737262, -13000866, -11812771, -9455371, -6269042, -2563559, 1353452, 5134097, 8430484, 10930155,
+12307766, 12255152, 10621454, 7481296, 3088618, -2079838, -7271917, -11628624, -14440217, -15199352,
+-13622563, -9851581, -4516158, 1581622, 7680476, 12921946, 16411070, 17614198, 16370268, 12476343,
+5845988, -2801929, -11996917, -20175072, -25573310, -25850872, -19255950, -6481106, 9387725, 24314884,
+33745560, 33120640, 20860656, 999654, -18942416, -32137092, -33390686, -19749870, 4261145, 23944980,
+25036438, 9262097, -6587943, -9628780, -3402151, 1152125, 552440, -816581, -246424, 438624,
+-35970, -354335, 189515, 510027, 148176, -16106, 305480, 378494, 28454, -121870,
+37044, -1074, -271657, -336618, -187368, -178241, -283468, -211527, -19864, 46171,
+44023, 150861, 278636, 281320, 241055, 255014, 233539, 123480, 26844, },
},
{
{
-121878824,
--327949216, -439449792, -444052896, -368775552, -245396720, -86296632, 97207456, 264143712, 356090368, 346550720,
-263938096, 159234304, 62198104, -24681030, -102201968, -160068592, -186791344, -183981904, -163771392, -133201432,
--87697328, -23809152, 46788300, 103827080, 137113072, 150406000, 147602992, 125509144, 83242912, 29804388,
--22716618, -67662376, -102038760, -122054920, -124664648, -110078936, -80458160, -39591008, 4912369, 43421584,
-70509408, 86873768, 94564440, 93348968, 82163800, 60991756, 30705794, -6274947, -44485660, -76545984,
--96388728, -100801272, -89162448, -63834488, -30457224, 3966939, 33825552, 55890408, 69000264, 73880416,
-72445896, 66097400, 54684060, 37191732, 12969727, -17504676, -51842404, -85010288, -109748760, -118309168,
--104737608, -67371392, -11078868, 52457656, 107721000, 140508240, 142736256, 114968760, 65752728, 7995082,
--45689324, -86133960, -108403360, -111204760, -96031712, -66442072, -27694486, 13394392, 49216568, 73181408,
-81637128, 74689480, 55739548, 30266634, 4209068, -17627620, -32488206, -39666708, -40008696, -35300872,
--27625766, -18796924, -10100689, -2289218, 4378719, 10022843, 14871861, 19003620, 22226456, 24037322,
-23637890, 20209432, 13393856, 3655017, -7693360, -18708878, -27219356, -31388158, -30255898, -23992224,
--13833553, -1796907, 9791452, 18900540, 24272470, 25560960, 23177792, 18026514, 11200738, 3724274,
--3570729, -10016937, -15056008, -18243410, -19265612, -17955110, -14359686, -8842264, -2096481, 4945655,
-11243151, 15796353, 17865990, 17185238, 14020921, 9051107, 3195456, -2569464, -7425999, -10878615,
--12737262, -13000866, -11812771, -9455371, -6269042, -2563559, 1353452, 5134097, 8430484, 10930155,
-12307766, 12255152, 10621454, 7481296, 3088618, -2079838, -7271917, -11628624, -14440217, -15199352,
--13622563, -9851581, -4516158, 1581622, 7680476, 12921946, 16411070, 17614198, 16370268, 12476343,
-5845988, -2801929, -11996917, -20175072, -25573310, -25850872, -19255950, -6481106, 9387725, 24314884,
-33745560, 33120640, 20860656, 999654, -18942416, -32137092, -33390686, -19749870, 4261145, 23944980,
-25036438, 9262097, -6587943, -9628780, -3402151, 1152125, 552440, -816581, -246424, 438624,
--35970, -354335, 189515, 510027, 148176, -16106, 305480, 378494, 28454, -121870,
-37044, -1074, -271657, -336618, -187368, -178241, -283468, -211527, -19864, 46171,
-44023, 150861, 278636, 281320, 241055, 255014, 233539, 123480, 26844, },
+-327949216, -439449792, -444052896, -368775552, -245396720, -86296632, 97207456, 264143712, 356090368, 346550720,
+263938096, 159234304, 62198104, -24681030, -102201968, -160068592, -186791344, -183981904, -163771392, -133201432,
+-87697328, -23809152, 46788300, 103827080, 137113072, 150406000, 147602992, 125509144, 83242912, 29804388,
+-22716618, -67662376, -102038760, -122054920, -124664648, -110078936, -80458160, -39591008, 4912369, 43421584,
+70509408, 86873768, 94564440, 93348968, 82163800, 60991756, 30705794, -6274947, -44485660, -76545984,
+-96388728, -100801272, -89162448, -63834488, -30457224, 3966939, 33825552, 55890408, 69000264, 73880416,
+72445896, 66097400, 54684060, 37191732, 12969727, -17504676, -51842404, -85010288, -109748760, -118309168,
+-104737608, -67371392, -11078868, 52457656, 107721000, 140508240, 142736256, 114968760, 65752728, 7995082,
+-45689324, -86133960, -108403360, -111204760, -96031712, -66442072, -27694486, 13394392, 49216568, 73181408,
+81637128, 74689480, 55739548, 30266634, 4209068, -17627620, -32488206, -39666708, -40008696, -35300872,
+-27625766, -18796924, -10100689, -2289218, 4378719, 10022843, 14871861, 19003620, 22226456, 24037322,
+23637890, 20209432, 13393856, 3655017, -7693360, -18708878, -27219356, -31388158, -30255898, -23992224,
+-13833553, -1796907, 9791452, 18900540, 24272470, 25560960, 23177792, 18026514, 11200738, 3724274,
+-3570729, -10016937, -15056008, -18243410, -19265612, -17955110, -14359686, -8842264, -2096481, 4945655,
+11243151, 15796353, 17865990, 17185238, 14020921, 9051107, 3195456, -2569464, -7425999, -10878615,
+-12737262, -13000866, -11812771, -9455371, -6269042, -2563559, 1353452, 5134097, 8430484, 10930155,
+12307766, 12255152, 10621454, 7481296, 3088618, -2079838, -7271917, -11628624, -14440217, -15199352,
+-13622563, -9851581, -4516158, 1581622, 7680476, 12921946, 16411070, 17614198, 16370268, 12476343,
+5845988, -2801929, -11996917, -20175072, -25573310, -25850872, -19255950, -6481106, 9387725, 24314884,
+33745560, 33120640, 20860656, 999654, -18942416, -32137092, -33390686, -19749870, 4261145, 23944980,
+25036438, 9262097, -6587943, -9628780, -3402151, 1152125, 552440, -816581, -246424, 438624,
+-35970, -354335, 189515, 510027, 148176, -16106, 305480, 378494, 28454, -121870,
+37044, -1074, -271657, -336618, -187368, -178241, -283468, -211527, -19864, 46171,
+44023, 150861, 278636, 281320, 241055, 255014, 233539, 123480, 26844, },
{
7603166,
-42476688, 103279464, 146589920, 135250672, 80335752, 11234561, -65767760, -149280720, -208833120, -214609856,
--191591504, -195253504, -231171248, -247936112, -220656096, -190400192, -197253888, -220569120, -219633360, -197185712,
--183433760, -182333712, -173349168, -152315104, -135353744, -128052304, -118505664, -99485400, -77576240, -60952564,
--51844012, -49365816, -49600968, -45003740, -30903900, -10552198, 9705015, 26149908, 36463200, 38291244,
-31807454, 19619410, 2814277, -19248970, -45126148, -71135392, -95098096, -117431384, -139254656, -161874640,
--187139776, -216240336, -248834304, -283934368, -320240800, -355665184, -388487840, -418700800, -446400640, -469913984,
--487608160, -500139808, -508678752, -512512544, -510573888, -503515648, -492055072, -474965408, -450726208, -419716000,
--383359104, -342749664, -299282976, -255128032, -212111792, -171212960, -133291088, -99048392, -68507952, -41831372,
--20184736, -4600447, 5168993, 9294309, 6242735, -6143414, -28790240, -61982820, -107035416, -165830832,
--238823264, -324541696, -421067872, -526965120, -640141760, -756518208, -871110080, -980573248, -1083398528, -1177353088,
--1258720128, -1325160064, -1377268224, -1415646976, -1438483328, -1444116736, -1434029440, -1410808192, -1374958592, -1326537728,
--1268522880, -1205691776, -1141034880, -1075703552, -1011597376, -951476992, -896733888, -846954688, -801676032, -761317824,
--726391168, -696634560, -671082176, -648755904, -629198720, -612108032, -596566656, -581449984, -566881472, -554386304,
--545277248, -539866112, -538575488, -542615424, -552946432, -569424640, -591395520, -618458112, -650345536, -686426496,
--725362560, -765176896, -804046336, -840819840, -874014592, -900821056, -918468544, -926077632, -923566656, -909549504,
--882574464, -843826880, -796154880, -740955392, -678549504, -610973056, -541576576, -472080256, -402478176, -333600832,
--267507744, -205489488, -147484880, -93419832, -43877924, 492848, 39701604, 74688944, 106660144, 135861088,
-162007776, 186297424, 211087984, 236946368, 262724224, 289269280, 319466112, 353746400, 390006112, 428802560,
-473271584, 523070112, 574500736, 626924032, 681552256, 733620160, 773950400, 797709120, 802263936, 778438656,
-715712832, 614000448, 478078176, 306086208, 100260640, -117822768, -322167104, -499343648, -620302272, -613854976,
--428609280, -133701256, 100466800, 159385168, 88751208, 13932337, -4886599, 2917357, 1884417, -3468186,
--879395, 2867965, 268972, -2379412, 20401, 1941862, -180926, -1547262, 338229, 1308354,
--344671, -1014686, 410169, 827855, -409096, -651224, 383326, 463856, -403727, -373662,
-319438, 195421, -336618, -142808, 237297, 3221, -216896, 54224, 134755, },
+42476688, 103279464, 146589920, 135250672, 80335752, 11234561, -65767760, -149280720, -208833120, -214609856,
+-191591504, -195253504, -231171248, -247936112, -220656096, -190400192, -197253888, -220569120, -219633360, -197185712,
+-183433760, -182333712, -173349168, -152315104, -135353744, -128052304, -118505664, -99485400, -77576240, -60952564,
+-51844012, -49365816, -49600968, -45003740, -30903900, -10552198, 9705015, 26149908, 36463200, 38291244,
+31807454, 19619410, 2814277, -19248970, -45126148, -71135392, -95098096, -117431384, -139254656, -161874640,
+-187139776, -216240336, -248834304, -283934368, -320240800, -355665184, -388487840, -418700800, -446400640, -469913984,
+-487608160, -500139808, -508678752, -512512544, -510573888, -503515648, -492055072, -474965408, -450726208, -419716000,
+-383359104, -342749664, -299282976, -255128032, -212111792, -171212960, -133291088, -99048392, -68507952, -41831372,
+-20184736, -4600447, 5168993, 9294309, 6242735, -6143414, -28790240, -61982820, -107035416, -165830832,
+-238823264, -324541696, -421067872, -526965120, -640141760, -756518208, -871110080, -980573248, -1083398528, -1177353088,
+-1258720128, -1325160064, -1377268224, -1415646976, -1438483328, -1444116736, -1434029440, -1410808192, -1374958592, -1326537728,
+-1268522880, -1205691776, -1141034880, -1075703552, -1011597376, -951476992, -896733888, -846954688, -801676032, -761317824,
+-726391168, -696634560, -671082176, -648755904, -629198720, -612108032, -596566656, -581449984, -566881472, -554386304,
+-545277248, -539866112, -538575488, -542615424, -552946432, -569424640, -591395520, -618458112, -650345536, -686426496,
+-725362560, -765176896, -804046336, -840819840, -874014592, -900821056, -918468544, -926077632, -923566656, -909549504,
+-882574464, -843826880, -796154880, -740955392, -678549504, -610973056, -541576576, -472080256, -402478176, -333600832,
+-267507744, -205489488, -147484880, -93419832, -43877924, 492848, 39701604, 74688944, 106660144, 135861088,
+162007776, 186297424, 211087984, 236946368, 262724224, 289269280, 319466112, 353746400, 390006112, 428802560,
+473271584, 523070112, 574500736, 626924032, 681552256, 733620160, 773950400, 797709120, 802263936, 778438656,
+715712832, 614000448, 478078176, 306086208, 100260640, -117822768, -322167104, -499343648, -620302272, -613854976,
+-428609280, -133701256, 100466800, 159385168, 88751208, 13932337, -4886599, 2917357, 1884417, -3468186,
+-879395, 2867965, 268972, -2379412, 20401, 1941862, -180926, -1547262, 338229, 1308354,
+-344671, -1014686, 410169, 827855, -409096, -651224, 383326, 463856, -403727, -373662,
+319438, 195421, -336618, -142808, 237297, 3221, -216896, 54224, 134755, },
},
{
{
22941568,
-60834992, 94597728, 135659232, 151335328, 93556200, -15516643, -96951904, -125620280, -154287040, -207301968,
--228418704, -174931328, -95768104, -61450780, -67413272, -64889440, -49018460, -53573276, -80212808, -94167696,
--85941760, -86875912, -117151136, -155600224, -170909104, -157015952, -129109400, -103067400, -85586888, -71761384,
--48570176, -10253161, 29126858, 47252692, 37082212, 10780368, -17792438, -44844292, -71080096, -94165008,
--110759688, -121372552, -130140728, -141675936, -159057136, -183318336, -214228672, -251893392, -296846112, -347995968,
--401685216, -453714432, -501417024, -543284928, -578109568, -605895872, -628941056, -650780416, -674133760, -700343296,
--730119744, -763450816, -798361408, -830556992, -855029760, -867926976, -866865088, -850513600, -819124864, -775252864,
--722731328, -664644608, -602938240, -539823168, -478321376, -420980896, -368797024, -321822976, -280324448, -245082112,
--217063360, -197146512, -185978528, -183895472, -190771168, -205554448, -226081712, -250233920, -277758208, -310404256,
--350039296, -397613568, -454370496, -522581024, -603616832, -695994112, -796599936, -903032960, -1012979328, -1121766528,
--1222814720, -1311025920, -1384092928, -1440244224, -1477094528, -1494116608, -1494412928, -1482181376, -1459547520, -1427511296,
--1388589824, -1346003072, -1300631040, -1251070336, -1196795264, -1139278720, -1079781632, -1018152064, -954703040, -891668480,
--831614144, -775381696, -722612672, -673521728, -628960384, -589041856, -552887360, -520006720, -491207360, -467731072,
--449969760, -437531008, -430267680, -428568480, -432568160, -441643424, -454992192, -472407200, -494080704, -519696960,
--547997056, -577340800, -606388160, -633769664, -657122496, -673232384, -679566400, -675043776, -658866240, -629654528,
--586888512, -532360128, -468847232, -398032864, -321164224, -240938000, -160777808, -82597592, -7059853, 64257004,
-128806608, 185087328, 233052448, 272529632, 302702848, 323317088, 335299520, 340011616, 338508384, 331614976,
-320457696, 306831936, 292658528, 278890496, 265742512, 254260448, 246242816, 242156704, 241125376, 243671744,
-251926144, 266340592, 285317376, 308789888, 338100896, 371314432, 403117056, 429964896, 449832320, 456690848,
-442260288, 403697920, 342134400, 255046432, 140796000, 9450002, -123436824, -249365808, -352794528, -388898560,
--312111520, -143997904, 17201344, 83570936, 59500328, 15437723, -1094143, 1642288, 1639067, -1799591,
--961536, 1548873, 506806, -1336272, -270046, 1126892, 141734, -891743, 17717, 785442,
--37044, -605054, 112743, 501974, -137976, -407485, 129386, 281320, -176094, -251256,
-115964, 123480, -159451, -115427, 89657, 18254, -98247, 2684, 48318, },
+60834992, 94597728, 135659232, 151335328, 93556200, -15516643, -96951904, -125620280, -154287040, -207301968,
+-228418704, -174931328, -95768104, -61450780, -67413272, -64889440, -49018460, -53573276, -80212808, -94167696,
+-85941760, -86875912, -117151136, -155600224, -170909104, -157015952, -129109400, -103067400, -85586888, -71761384,
+-48570176, -10253161, 29126858, 47252692, 37082212, 10780368, -17792438, -44844292, -71080096, -94165008,
+-110759688, -121372552, -130140728, -141675936, -159057136, -183318336, -214228672, -251893392, -296846112, -347995968,
+-401685216, -453714432, -501417024, -543284928, -578109568, -605895872, -628941056, -650780416, -674133760, -700343296,
+-730119744, -763450816, -798361408, -830556992, -855029760, -867926976, -866865088, -850513600, -819124864, -775252864,
+-722731328, -664644608, -602938240, -539823168, -478321376, -420980896, -368797024, -321822976, -280324448, -245082112,
+-217063360, -197146512, -185978528, -183895472, -190771168, -205554448, -226081712, -250233920, -277758208, -310404256,
+-350039296, -397613568, -454370496, -522581024, -603616832, -695994112, -796599936, -903032960, -1012979328, -1121766528,
+-1222814720, -1311025920, -1384092928, -1440244224, -1477094528, -1494116608, -1494412928, -1482181376, -1459547520, -1427511296,
+-1388589824, -1346003072, -1300631040, -1251070336, -1196795264, -1139278720, -1079781632, -1018152064, -954703040, -891668480,
+-831614144, -775381696, -722612672, -673521728, -628960384, -589041856, -552887360, -520006720, -491207360, -467731072,
+-449969760, -437531008, -430267680, -428568480, -432568160, -441643424, -454992192, -472407200, -494080704, -519696960,
+-547997056, -577340800, -606388160, -633769664, -657122496, -673232384, -679566400, -675043776, -658866240, -629654528,
+-586888512, -532360128, -468847232, -398032864, -321164224, -240938000, -160777808, -82597592, -7059853, 64257004,
+128806608, 185087328, 233052448, 272529632, 302702848, 323317088, 335299520, 340011616, 338508384, 331614976,
+320457696, 306831936, 292658528, 278890496, 265742512, 254260448, 246242816, 242156704, 241125376, 243671744,
+251926144, 266340592, 285317376, 308789888, 338100896, 371314432, 403117056, 429964896, 449832320, 456690848,
+442260288, 403697920, 342134400, 255046432, 140796000, 9450002, -123436824, -249365808, -352794528, -388898560,
+-312111520, -143997904, 17201344, 83570936, 59500328, 15437723, -1094143, 1642288, 1639067, -1799591,
+-961536, 1548873, 506806, -1336272, -270046, 1126892, 141734, -891743, 17717, 785442,
+-37044, -605054, 112743, 501974, -137976, -407485, 129386, 281320, -176094, -251256,
+115964, 123480, -159451, -115427, 89657, 18254, -98247, 2684, 48318, },
{
-134705744,
--355052064, -462366656, -454684576, -356599328, -183986192, 41270340, 262388672, 404438816, 426639488, 346103488,
-208141632, 46766824, -119401168, -266116176, -356898368, -362558592, -282236800, -142683104, 19489488, 171758432,
-286208576, 336999776, 307832128, 205007376, 59145996, -89700392, -208730576, -276980288, -282773120, -225548064,
--120158152, 6200322, 123784712, 207463024, 239510464, 213983328, 141544944, 46180564, -46616500, -119248160,
--162227360, -170816224, -145180096, -92382600, -25236154, 41639708, 95004136, 124838056, 126479808, 102404368,
-61247308, 13972065, -29905320, -63705640, -83256864, -86804512, -75461504, -52934400, -24138790, 6084358,
-33353642, 53966264, 65539592, 67355288, 59813324, 43739412, 20334522, -8456254, -39436388, -67427232,
--85135912, -85208928, -64182380, -25450366, 21178484, 62900332, 88331368, 91328184, 72951096, 40411348,
-3381750, -29947196, -54736672, -69009384, -72172096, -63930052, -44290240, -14661408, 20721070, 54373748,
-77168216, 81717656, 65875136, 34143380, -4037806, -38145216, -60307248, -67199592, -59830504, -42037528,
--18751828, 5282273, 26208964, 41352480, 49213884, 49219252, 41464688, 26736172, 6737730, -15744276,
--36872296, -52103860, -57128972, -49394272, -29525216, -1772748, 26890254, 48787608, 58082452, 52814140,
-35395364, 11363410, -12761422, -31455804, -41445896, -42038068, -34630320, -21813602, -6573985, 8270497,
-20461224, 28472948, 31444530, 29120952, 21932788, 11050951, -1744294, -14279693, -24270324, -29755534,
--29578366, -23648090, -12975096, 421444, 13831405, 24459838, 30067992, 29402810, 22509386, 10887742,
--2807835, -15531675, -24613920, -28263032, -25919590, -18389440, -7525857, 4358318, 14934138, 22187802,
-24834574, 22589918, 16065862, 6547141, -4144644, -13931800, -20942260, -23813984, -21829172, -15197205,
--5259725, 5860483, 15851114, 22525492, 24193550, 20387672, 12138651, 1318555, -9976135, -19389092,
--24594056, -24252070, -18323942, -7525857, 6455873, 20078436, 28725278, 29109140, 20496120, 4436701,
--14688788, -29411936, -32658932, -22777286, -4110821, 16222091, 29726006, 27842126, 9167608, -13823889,
--22857280, -12723304, 3033321, 8892193, 4354023, -463856, -427886, 914291, 268435, -825707,
--612570, -216896, -677531, -992137, -438087, 107911, 82678, 163209, 664646, 923418,
-667867, 439697, 420907, 186294, -307627, -612570, -645319, -705985, -776315, -590021,
--216359, 78920, 310311, 594316, 802085, 790274, 652835, 476741, 187368, },
+-355052064, -462366656, -454684576, -356599328, -183986192, 41270340, 262388672, 404438816, 426639488, 346103488,
+208141632, 46766824, -119401168, -266116176, -356898368, -362558592, -282236800, -142683104, 19489488, 171758432,
+286208576, 336999776, 307832128, 205007376, 59145996, -89700392, -208730576, -276980288, -282773120, -225548064,
+-120158152, 6200322, 123784712, 207463024, 239510464, 213983328, 141544944, 46180564, -46616500, -119248160,
+-162227360, -170816224, -145180096, -92382600, -25236154, 41639708, 95004136, 124838056, 126479808, 102404368,
+61247308, 13972065, -29905320, -63705640, -83256864, -86804512, -75461504, -52934400, -24138790, 6084358,
+33353642, 53966264, 65539592, 67355288, 59813324, 43739412, 20334522, -8456254, -39436388, -67427232,
+-85135912, -85208928, -64182380, -25450366, 21178484, 62900332, 88331368, 91328184, 72951096, 40411348,
+3381750, -29947196, -54736672, -69009384, -72172096, -63930052, -44290240, -14661408, 20721070, 54373748,
+77168216, 81717656, 65875136, 34143380, -4037806, -38145216, -60307248, -67199592, -59830504, -42037528,
+-18751828, 5282273, 26208964, 41352480, 49213884, 49219252, 41464688, 26736172, 6737730, -15744276,
+-36872296, -52103860, -57128972, -49394272, -29525216, -1772748, 26890254, 48787608, 58082452, 52814140,
+35395364, 11363410, -12761422, -31455804, -41445896, -42038068, -34630320, -21813602, -6573985, 8270497,
+20461224, 28472948, 31444530, 29120952, 21932788, 11050951, -1744294, -14279693, -24270324, -29755534,
+-29578366, -23648090, -12975096, 421444, 13831405, 24459838, 30067992, 29402810, 22509386, 10887742,
+-2807835, -15531675, -24613920, -28263032, -25919590, -18389440, -7525857, 4358318, 14934138, 22187802,
+24834574, 22589918, 16065862, 6547141, -4144644, -13931800, -20942260, -23813984, -21829172, -15197205,
+-5259725, 5860483, 15851114, 22525492, 24193550, 20387672, 12138651, 1318555, -9976135, -19389092,
+-24594056, -24252070, -18323942, -7525857, 6455873, 20078436, 28725278, 29109140, 20496120, 4436701,
+-14688788, -29411936, -32658932, -22777286, -4110821, 16222091, 29726006, 27842126, 9167608, -13823889,
+-22857280, -12723304, 3033321, 8892193, 4354023, -463856, -427886, 914291, 268435, -825707,
+-612570, -216896, -677531, -992137, -438087, 107911, 82678, 163209, 664646, 923418,
+667867, 439697, 420907, 186294, -307627, -612570, -645319, -705985, -776315, -590021,
+-216359, 78920, 310311, 594316, 802085, 790274, 652835, 476741, 187368, },
},
{
{
-134705744,
--355052064, -462366656, -454684576, -356599328, -183986192, 41270340, 262388672, 404438816, 426639488, 346103488,
-208141632, 46766824, -119401168, -266116176, -356898368, -362558592, -282236800, -142683104, 19489488, 171758432,
-286208576, 336999776, 307832128, 205007376, 59145996, -89700392, -208730576, -276980288, -282773120, -225548064,
--120158152, 6200322, 123784712, 207463024, 239510464, 213983328, 141544944, 46180564, -46616500, -119248160,
--162227360, -170816224, -145180096, -92382600, -25236154, 41639708, 95004136, 124838056, 126479808, 102404368,
-61247308, 13972065, -29905320, -63705640, -83256864, -86804512, -75461504, -52934400, -24138790, 6084358,
-33353642, 53966264, 65539592, 67355288, 59813324, 43739412, 20334522, -8456254, -39436388, -67427232,
--85135912, -85208928, -64182380, -25450366, 21178484, 62900332, 88331368, 91328184, 72951096, 40411348,
-3381750, -29947196, -54736672, -69009384, -72172096, -63930052, -44290240, -14661408, 20721070, 54373748,
-77168216, 81717656, 65875136, 34143380, -4037806, -38145216, -60307248, -67199592, -59830504, -42037528,
--18751828, 5282273, 26208964, 41352480, 49213884, 49219252, 41464688, 26736172, 6737730, -15744276,
--36872296, -52103860, -57128972, -49394272, -29525216, -1772748, 26890254, 48787608, 58082452, 52814140,
-35395364, 11363410, -12761422, -31455804, -41445896, -42038068, -34630320, -21813602, -6573985, 8270497,
-20461224, 28472948, 31444530, 29120952, 21932788, 11050951, -1744294, -14279693, -24270324, -29755534,
--29578366, -23648090, -12975096, 421444, 13831405, 24459838, 30067992, 29402810, 22509386, 10887742,
--2807835, -15531675, -24613920, -28263032, -25919590, -18389440, -7525857, 4358318, 14934138, 22187802,
-24834574, 22589918, 16065862, 6547141, -4144644, -13931800, -20942260, -23813984, -21829172, -15197205,
--5259725, 5860483, 15851114, 22525492, 24193550, 20387672, 12138651, 1318555, -9976135, -19389092,
--24594056, -24252070, -18323942, -7525857, 6455873, 20078436, 28725278, 29109140, 20496120, 4436701,
--14688788, -29411936, -32658932, -22777286, -4110821, 16222091, 29726006, 27842126, 9167608, -13823889,
--22857280, -12723304, 3033321, 8892193, 4354023, -463856, -427886, 914291, 268435, -825707,
--612570, -216896, -677531, -992137, -438087, 107911, 82678, 163209, 664646, 923418,
-667867, 439697, 420907, 186294, -307627, -612570, -645319, -705985, -776315, -590021,
--216359, 78920, 310311, 594316, 802085, 790274, 652835, 476741, 187368, },
+-355052064, -462366656, -454684576, -356599328, -183986192, 41270340, 262388672, 404438816, 426639488, 346103488,
+208141632, 46766824, -119401168, -266116176, -356898368, -362558592, -282236800, -142683104, 19489488, 171758432,
+286208576, 336999776, 307832128, 205007376, 59145996, -89700392, -208730576, -276980288, -282773120, -225548064,
+-120158152, 6200322, 123784712, 207463024, 239510464, 213983328, 141544944, 46180564, -46616500, -119248160,
+-162227360, -170816224, -145180096, -92382600, -25236154, 41639708, 95004136, 124838056, 126479808, 102404368,
+61247308, 13972065, -29905320, -63705640, -83256864, -86804512, -75461504, -52934400, -24138790, 6084358,
+33353642, 53966264, 65539592, 67355288, 59813324, 43739412, 20334522, -8456254, -39436388, -67427232,
+-85135912, -85208928, -64182380, -25450366, 21178484, 62900332, 88331368, 91328184, 72951096, 40411348,
+3381750, -29947196, -54736672, -69009384, -72172096, -63930052, -44290240, -14661408, 20721070, 54373748,
+77168216, 81717656, 65875136, 34143380, -4037806, -38145216, -60307248, -67199592, -59830504, -42037528,
+-18751828, 5282273, 26208964, 41352480, 49213884, 49219252, 41464688, 26736172, 6737730, -15744276,
+-36872296, -52103860, -57128972, -49394272, -29525216, -1772748, 26890254, 48787608, 58082452, 52814140,
+35395364, 11363410, -12761422, -31455804, -41445896, -42038068, -34630320, -21813602, -6573985, 8270497,
+20461224, 28472948, 31444530, 29120952, 21932788, 11050951, -1744294, -14279693, -24270324, -29755534,
+-29578366, -23648090, -12975096, 421444, 13831405, 24459838, 30067992, 29402810, 22509386, 10887742,
+-2807835, -15531675, -24613920, -28263032, -25919590, -18389440, -7525857, 4358318, 14934138, 22187802,
+24834574, 22589918, 16065862, 6547141, -4144644, -13931800, -20942260, -23813984, -21829172, -15197205,
+-5259725, 5860483, 15851114, 22525492, 24193550, 20387672, 12138651, 1318555, -9976135, -19389092,
+-24594056, -24252070, -18323942, -7525857, 6455873, 20078436, 28725278, 29109140, 20496120, 4436701,
+-14688788, -29411936, -32658932, -22777286, -4110821, 16222091, 29726006, 27842126, 9167608, -13823889,
+-22857280, -12723304, 3033321, 8892193, 4354023, -463856, -427886, 914291, 268435, -825707,
+-612570, -216896, -677531, -992137, -438087, 107911, 82678, 163209, 664646, 923418,
+667867, 439697, 420907, 186294, -307627, -612570, -645319, -705985, -776315, -590021,
+-216359, 78920, 310311, 594316, 802085, 790274, 652835, 476741, 187368, },
{
22941568,
-60834992, 94597728, 135659232, 151335328, 93556200, -15516643, -96951904, -125620280, -154287040, -207301968,
--228418704, -174931328, -95768104, -61450780, -67413272, -64889440, -49018460, -53573276, -80212808, -94167696,
--85941760, -86875912, -117151136, -155600224, -170909104, -157015952, -129109400, -103067400, -85586888, -71761384,
--48570176, -10253161, 29126858, 47252692, 37082212, 10780368, -17792438, -44844292, -71080096, -94165008,
--110759688, -121372552, -130140728, -141675936, -159057136, -183318336, -214228672, -251893392, -296846112, -347995968,
--401685216, -453714432, -501417024, -543284928, -578109568, -605895872, -628941056, -650780416, -674133760, -700343296,
--730119744, -763450816, -798361408, -830556992, -855029760, -867926976, -866865088, -850513600, -819124864, -775252864,
--722731328, -664644608, -602938240, -539823168, -478321376, -420980896, -368797024, -321822976, -280324448, -245082112,
--217063360, -197146512, -185978528, -183895472, -190771168, -205554448, -226081712, -250233920, -277758208, -310404256,
--350039296, -397613568, -454370496, -522581024, -603616832, -695994112, -796599936, -903032960, -1012979328, -1121766528,
--1222814720, -1311025920, -1384092928, -1440244224, -1477094528, -1494116608, -1494412928, -1482181376, -1459547520, -1427511296,
--1388589824, -1346003072, -1300631040, -1251070336, -1196795264, -1139278720, -1079781632, -1018152064, -954703040, -891668480,
--831614144, -775381696, -722612672, -673521728, -628960384, -589041856, -552887360, -520006720, -491207360, -467731072,
--449969760, -437531008, -430267680, -428568480, -432568160, -441643424, -454992192, -472407200, -494080704, -519696960,
--547997056, -577340800, -606388160, -633769664, -657122496, -673232384, -679566400, -675043776, -658866240, -629654528,
--586888512, -532360128, -468847232, -398032864, -321164224, -240938000, -160777808, -82597592, -7059853, 64257004,
-128806608, 185087328, 233052448, 272529632, 302702848, 323317088, 335299520, 340011616, 338508384, 331614976,
-320457696, 306831936, 292658528, 278890496, 265742512, 254260448, 246242816, 242156704, 241125376, 243671744,
-251926144, 266340592, 285317376, 308789888, 338100896, 371314432, 403117056, 429964896, 449832320, 456690848,
-442260288, 403697920, 342134400, 255046432, 140796000, 9450002, -123436824, -249365808, -352794528, -388898560,
--312111520, -143997904, 17201344, 83570936, 59500328, 15437723, -1094143, 1642288, 1639067, -1799591,
--961536, 1548873, 506806, -1336272, -270046, 1126892, 141734, -891743, 17717, 785442,
--37044, -605054, 112743, 501974, -137976, -407485, 129386, 281320, -176094, -251256,
-115964, 123480, -159451, -115427, 89657, 18254, -98247, 2684, 48318, },
+60834992, 94597728, 135659232, 151335328, 93556200, -15516643, -96951904, -125620280, -154287040, -207301968,
+-228418704, -174931328, -95768104, -61450780, -67413272, -64889440, -49018460, -53573276, -80212808, -94167696,
+-85941760, -86875912, -117151136, -155600224, -170909104, -157015952, -129109400, -103067400, -85586888, -71761384,
+-48570176, -10253161, 29126858, 47252692, 37082212, 10780368, -17792438, -44844292, -71080096, -94165008,
+-110759688, -121372552, -130140728, -141675936, -159057136, -183318336, -214228672, -251893392, -296846112, -347995968,
+-401685216, -453714432, -501417024, -543284928, -578109568, -605895872, -628941056, -650780416, -674133760, -700343296,
+-730119744, -763450816, -798361408, -830556992, -855029760, -867926976, -866865088, -850513600, -819124864, -775252864,
+-722731328, -664644608, -602938240, -539823168, -478321376, -420980896, -368797024, -321822976, -280324448, -245082112,
+-217063360, -197146512, -185978528, -183895472, -190771168, -205554448, -226081712, -250233920, -277758208, -310404256,
+-350039296, -397613568, -454370496, -522581024, -603616832, -695994112, -796599936, -903032960, -1012979328, -1121766528,
+-1222814720, -1311025920, -1384092928, -1440244224, -1477094528, -1494116608, -1494412928, -1482181376, -1459547520, -1427511296,
+-1388589824, -1346003072, -1300631040, -1251070336, -1196795264, -1139278720, -1079781632, -1018152064, -954703040, -891668480,
+-831614144, -775381696, -722612672, -673521728, -628960384, -589041856, -552887360, -520006720, -491207360, -467731072,
+-449969760, -437531008, -430267680, -428568480, -432568160, -441643424, -454992192, -472407200, -494080704, -519696960,
+-547997056, -577340800, -606388160, -633769664, -657122496, -673232384, -679566400, -675043776, -658866240, -629654528,
+-586888512, -532360128, -468847232, -398032864, -321164224, -240938000, -160777808, -82597592, -7059853, 64257004,
+128806608, 185087328, 233052448, 272529632, 302702848, 323317088, 335299520, 340011616, 338508384, 331614976,
+320457696, 306831936, 292658528, 278890496, 265742512, 254260448, 246242816, 242156704, 241125376, 243671744,
+251926144, 266340592, 285317376, 308789888, 338100896, 371314432, 403117056, 429964896, 449832320, 456690848,
+442260288, 403697920, 342134400, 255046432, 140796000, 9450002, -123436824, -249365808, -352794528, -388898560,
+-312111520, -143997904, 17201344, 83570936, 59500328, 15437723, -1094143, 1642288, 1639067, -1799591,
+-961536, 1548873, 506806, -1336272, -270046, 1126892, 141734, -891743, 17717, 785442,
+-37044, -605054, 112743, 501974, -137976, -407485, 129386, 281320, -176094, -251256,
+115964, 123480, -159451, -115427, 89657, 18254, -98247, 2684, 48318, },
},
{
{
-4357781,
--15616501, -30627412, -43881144, -49493592, -45687716, -24834574, 32756104, 132964136, 236001472, 278151200,
-234555136, 138744624, 37156300, -46155868, -96170224, -98129264, -59395104, -9983115, 32935956, 73852496,
-105064560, 99138584, 48845052, -16016470, -64116884, -87776784, -86431384, -57499948, -14449881, 14837501,
-18675592, 7561290, -14667313, -59650116, -128861368, -203432736, -266602048, -317439424, -358831104, -389818208,
--413140416, -435458688, -457594400, -475116256, -487643616, -498576448, -508736736, -518301088, -530641056, -547201408,
--563499200, -576024896, -587904256, -603265216, -621687936, -641835072, -664708992, -689980032, -714076416, -734508096,
--752373568, -769566336, -786965248, -805674688, -827064704, -851393536, -877783424, -904528704, -928722816, -947569088,
--960526464, -968117312, -969178688, -962167168, -948336320, -930310848, -908301312, -880925696, -848764992, -814003136,
--777668800, -740189824, -703618176, -670610304, -641908096, -616688064, -594530304, -575577152, -559538688, -545531712,
--532376768, -518926016, -504799840, -490573856, -476650112, -462685024, -448691488, -435484448, -423228768, -410814144,
--397389152, -383203968, -368334240, -351987072, -333742592, -314279392, -294420000, -274476864, -254796256, -236030464,
--218706720, -203103632, -189430064, -177678496, -167604112, -159153776, -152452544, -147246512, -142963360, -139410880,
--136809200, -135170144, -134270336, -134177464, -135288784, -138003200, -142755056, -150127360, -160649488, -174779392,
--193083472, -215875792, -242649552, -272467904, -304807392, -339312608, -374917344, -410167776, -444380928, -477570848,
--509230112, -538187328, -563902336, -586957760, -607890368, -626362432, -642089536, -655882304, -668904640, -681289216,
--692395968, -702260416, -711722816, -720979008, -729036864, -735027840, -739143488, -741636672, -741602880, -737625728,
--729266688, -716956736, -700395904, -678032512, -648656576, -612586880, -570266432, -520494208, -461707360, -394449248,
--320360000, -239108880, -149194816, -51655036, 50466940, 156328752, 266896784, 380279104, 492131840, 600777856,
-706555968, 806222784, 894021056, 967654528, 1026274944, 1063700736, 1071413440, 1046386624, 987673344, 889303040,
-747161088, 568291840, 362638592, 134009960, -106979048, -332635552, -517338464, -648572800, -695149056, -595534272,
--334001888, -20295868, 172842368, 174538880, 74892952, 2940442, -6116034, 3243774, 536871, -3659849,
-205085, 2843268, -568546, -2236067, 668404, 1739999, -687195, -1341104, 701153, 1087164,
--616328, -816044, 590021, 648540, -517544, -494458, 443455, 347892, -408559, -276489,
-308701, 145492, -290984, -108985, 195958, 7516, -166430, 34360, 97174, },
+-15616501, -30627412, -43881144, -49493592, -45687716, -24834574, 32756104, 132964136, 236001472, 278151200,
+234555136, 138744624, 37156300, -46155868, -96170224, -98129264, -59395104, -9983115, 32935956, 73852496,
+105064560, 99138584, 48845052, -16016470, -64116884, -87776784, -86431384, -57499948, -14449881, 14837501,
+18675592, 7561290, -14667313, -59650116, -128861368, -203432736, -266602048, -317439424, -358831104, -389818208,
+-413140416, -435458688, -457594400, -475116256, -487643616, -498576448, -508736736, -518301088, -530641056, -547201408,
+-563499200, -576024896, -587904256, -603265216, -621687936, -641835072, -664708992, -689980032, -714076416, -734508096,
+-752373568, -769566336, -786965248, -805674688, -827064704, -851393536, -877783424, -904528704, -928722816, -947569088,
+-960526464, -968117312, -969178688, -962167168, -948336320, -930310848, -908301312, -880925696, -848764992, -814003136,
+-777668800, -740189824, -703618176, -670610304, -641908096, -616688064, -594530304, -575577152, -559538688, -545531712,
+-532376768, -518926016, -504799840, -490573856, -476650112, -462685024, -448691488, -435484448, -423228768, -410814144,
+-397389152, -383203968, -368334240, -351987072, -333742592, -314279392, -294420000, -274476864, -254796256, -236030464,
+-218706720, -203103632, -189430064, -177678496, -167604112, -159153776, -152452544, -147246512, -142963360, -139410880,
+-136809200, -135170144, -134270336, -134177464, -135288784, -138003200, -142755056, -150127360, -160649488, -174779392,
+-193083472, -215875792, -242649552, -272467904, -304807392, -339312608, -374917344, -410167776, -444380928, -477570848,
+-509230112, -538187328, -563902336, -586957760, -607890368, -626362432, -642089536, -655882304, -668904640, -681289216,
+-692395968, -702260416, -711722816, -720979008, -729036864, -735027840, -739143488, -741636672, -741602880, -737625728,
+-729266688, -716956736, -700395904, -678032512, -648656576, -612586880, -570266432, -520494208, -461707360, -394449248,
+-320360000, -239108880, -149194816, -51655036, 50466940, 156328752, 266896784, 380279104, 492131840, 600777856,
+706555968, 806222784, 894021056, 967654528, 1026274944, 1063700736, 1071413440, 1046386624, 987673344, 889303040,
+747161088, 568291840, 362638592, 134009960, -106979048, -332635552, -517338464, -648572800, -695149056, -595534272,
+-334001888, -20295868, 172842368, 174538880, 74892952, 2940442, -6116034, 3243774, 536871, -3659849,
+205085, 2843268, -568546, -2236067, 668404, 1739999, -687195, -1341104, 701153, 1087164,
+-616328, -816044, 590021, 648540, -517544, -494458, 443455, 347892, -408559, -276489,
+308701, 145492, -290984, -108985, 195958, 7516, -166430, 34360, 97174, },
{
-69783016,
--199971536, -310595392, -391509344, -410424384, -341338752, -220779568, -138907840, -162189776, -282055328, -432248736,
--532211936, -528276160, -431201824, -313920768, -246209008, -234605616, -242493312, -246754464, -242492240, -212146688,
--135220064, -27264452, 66219804, 119115552, 144776368, 168390640, 202259136, 248485872, 304710208, 361405376,
-404982144, 426869824, 425519040, 403979264, 371348768, 340884576, 319475232, 301885184, 278762176, 246195584,
-205628000, 160109408, 113309824, 67929736, 23271744, -22824530, -69941928, -115888416, -160149664, -203430048,
--245286112, -284792832, -321529856, -353703968, -377589888, -390746464, -393658464, -387155328, -370846272, -345016864,
--311447936, -271611584, -226304512, -177214112, -126466384, -74490840, -20390358, 35524212, 91066728, 143629616,
-190960144, 231159440, 263330880, 287973248, 305897248, 317057696, 320815808, 316798944, 305198752, 286624640,
-261830336, 231468672, 196347648, 157979632, 118393456, 79318920, 41998336, 7539278, -23330262, -50640884,
--74534864, -94525784, -110122960, -121693064, -129915248, -134911904, -136685184, -135825120, -133061312, -128692256,
--123075512, -117087784, -111551040, -106692360, -102533216, -99270656, -96970160, -95349344, -94065152, -92896920,
--91614872, -89897424, -87315072, -83257944, -77060840, -68273872, -56595856, -41711112, -23567022, -2640331,
-20503100, 45624900, 72381472, 99876784, 127154120, 153659968, 178721648, 201124192, 219794944, 234370992,
-244561888, 249531152, 248457952, 241128592, 227431408, 206856368, 179084032, 144575040, 104046120, 57863412,
-6546604, -48497160, -105292200, -161998656, -216730496, -266991280, -310002144, -343559808, -366076160, -376005600,
--372055296, -354064224, -323047584, -280337888, -227390064, -166443408, -100478072, -32240172, 36025112, 101848704,
-162506000, 215946656, 260997104, 296530432, 321288256, 334612320, 336531104, 327058016, 306174272, 274521440,
-233450256, 184480112, 129268848, 69917232, 8820789, -51598664, -108862928, -160553936, -204564992, -238923120,
--261717056, -271722720, -268565920, -251806960, -220931504, -176865680, -122199872, -59592672, 7924752, 74658344,
-133093520, 177590448, 204240720, 207763680, 184013040, 135966320, 71502080, -3244848, -78216184, -128000760,
--123941480, -68201400, -3135863, 27491548, 20126754, 3505767, -1666447, 785979, 1134408, -297963,
-426812, 1980517, 1751273, 1092532, 1852742, 2781528, 2525441, 2199560, 2792803, 3315178,
-3042448, 2836826, 3216394, 3432753, 3126736, 2936684, 3098819, 3076270, 2731599, 2509335,
-2474438, 2274722, 1906429, 1642288, 1448478, 1138703, 780610, 486942, 178241, },
+-199971536, -310595392, -391509344, -410424384, -341338752, -220779568, -138907840, -162189776, -282055328, -432248736,
+-532211936, -528276160, -431201824, -313920768, -246209008, -234605616, -242493312, -246754464, -242492240, -212146688,
+-135220064, -27264452, 66219804, 119115552, 144776368, 168390640, 202259136, 248485872, 304710208, 361405376,
+404982144, 426869824, 425519040, 403979264, 371348768, 340884576, 319475232, 301885184, 278762176, 246195584,
+205628000, 160109408, 113309824, 67929736, 23271744, -22824530, -69941928, -115888416, -160149664, -203430048,
+-245286112, -284792832, -321529856, -353703968, -377589888, -390746464, -393658464, -387155328, -370846272, -345016864,
+-311447936, -271611584, -226304512, -177214112, -126466384, -74490840, -20390358, 35524212, 91066728, 143629616,
+190960144, 231159440, 263330880, 287973248, 305897248, 317057696, 320815808, 316798944, 305198752, 286624640,
+261830336, 231468672, 196347648, 157979632, 118393456, 79318920, 41998336, 7539278, -23330262, -50640884,
+-74534864, -94525784, -110122960, -121693064, -129915248, -134911904, -136685184, -135825120, -133061312, -128692256,
+-123075512, -117087784, -111551040, -106692360, -102533216, -99270656, -96970160, -95349344, -94065152, -92896920,
+-91614872, -89897424, -87315072, -83257944, -77060840, -68273872, -56595856, -41711112, -23567022, -2640331,
+20503100, 45624900, 72381472, 99876784, 127154120, 153659968, 178721648, 201124192, 219794944, 234370992,
+244561888, 249531152, 248457952, 241128592, 227431408, 206856368, 179084032, 144575040, 104046120, 57863412,
+6546604, -48497160, -105292200, -161998656, -216730496, -266991280, -310002144, -343559808, -366076160, -376005600,
+-372055296, -354064224, -323047584, -280337888, -227390064, -166443408, -100478072, -32240172, 36025112, 101848704,
+162506000, 215946656, 260997104, 296530432, 321288256, 334612320, 336531104, 327058016, 306174272, 274521440,
+233450256, 184480112, 129268848, 69917232, 8820789, -51598664, -108862928, -160553936, -204564992, -238923120,
+-261717056, -271722720, -268565920, -251806960, -220931504, -176865680, -122199872, -59592672, 7924752, 74658344,
+133093520, 177590448, 204240720, 207763680, 184013040, 135966320, 71502080, -3244848, -78216184, -128000760,
+-123941480, -68201400, -3135863, 27491548, 20126754, 3505767, -1666447, 785979, 1134408, -297963,
+426812, 1980517, 1751273, 1092532, 1852742, 2781528, 2525441, 2199560, 2792803, 3315178,
+3042448, 2836826, 3216394, 3432753, 3126736, 2936684, 3098819, 3076270, 2731599, 2509335,
+2474438, 2274722, 1906429, 1642288, 1448478, 1138703, 780610, 486942, 178241, },
},
{
{
-69783016,
--199971536, -310595392, -391509344, -410424384, -341338752, -220779568, -138907840, -162189776, -282055328, -432248736,
--532211936, -528276160, -431201824, -313920768, -246209008, -234605616, -242493312, -246754464, -242492240, -212146688,
--135220064, -27264452, 66219804, 119115552, 144776368, 168390640, 202259136, 248485872, 304710208, 361405376,
-404982144, 426869824, 425519040, 403979264, 371348768, 340884576, 319475232, 301885184, 278762176, 246195584,
-205628000, 160109408, 113309824, 67929736, 23271744, -22824530, -69941928, -115888416, -160149664, -203430048,
--245286112, -284792832, -321529856, -353703968, -377589888, -390746464, -393658464, -387155328, -370846272, -345016864,
--311447936, -271611584, -226304512, -177214112, -126466384, -74490840, -20390358, 35524212, 91066728, 143629616,
-190960144, 231159440, 263330880, 287973248, 305897248, 317057696, 320815808, 316798944, 305198752, 286624640,
-261830336, 231468672, 196347648, 157979632, 118393456, 79318920, 41998336, 7539278, -23330262, -50640884,
--74534864, -94525784, -110122960, -121693064, -129915248, -134911904, -136685184, -135825120, -133061312, -128692256,
--123075512, -117087784, -111551040, -106692360, -102533216, -99270656, -96970160, -95349344, -94065152, -92896920,
--91614872, -89897424, -87315072, -83257944, -77060840, -68273872, -56595856, -41711112, -23567022, -2640331,
-20503100, 45624900, 72381472, 99876784, 127154120, 153659968, 178721648, 201124192, 219794944, 234370992,
-244561888, 249531152, 248457952, 241128592, 227431408, 206856368, 179084032, 144575040, 104046120, 57863412,
-6546604, -48497160, -105292200, -161998656, -216730496, -266991280, -310002144, -343559808, -366076160, -376005600,
--372055296, -354064224, -323047584, -280337888, -227390064, -166443408, -100478072, -32240172, 36025112, 101848704,
-162506000, 215946656, 260997104, 296530432, 321288256, 334612320, 336531104, 327058016, 306174272, 274521440,
-233450256, 184480112, 129268848, 69917232, 8820789, -51598664, -108862928, -160553936, -204564992, -238923120,
--261717056, -271722720, -268565920, -251806960, -220931504, -176865680, -122199872, -59592672, 7924752, 74658344,
-133093520, 177590448, 204240720, 207763680, 184013040, 135966320, 71502080, -3244848, -78216184, -128000760,
--123941480, -68201400, -3135863, 27491548, 20126754, 3505767, -1666447, 785979, 1134408, -297963,
-426812, 1980517, 1751273, 1092532, 1852742, 2781528, 2525441, 2199560, 2792803, 3315178,
-3042448, 2836826, 3216394, 3432753, 3126736, 2936684, 3098819, 3076270, 2731599, 2509335,
-2474438, 2274722, 1906429, 1642288, 1448478, 1138703, 780610, 486942, 178241, },
+-199971536, -310595392, -391509344, -410424384, -341338752, -220779568, -138907840, -162189776, -282055328, -432248736,
+-532211936, -528276160, -431201824, -313920768, -246209008, -234605616, -242493312, -246754464, -242492240, -212146688,
+-135220064, -27264452, 66219804, 119115552, 144776368, 168390640, 202259136, 248485872, 304710208, 361405376,
+404982144, 426869824, 425519040, 403979264, 371348768, 340884576, 319475232, 301885184, 278762176, 246195584,
+205628000, 160109408, 113309824, 67929736, 23271744, -22824530, -69941928, -115888416, -160149664, -203430048,
+-245286112, -284792832, -321529856, -353703968, -377589888, -390746464, -393658464, -387155328, -370846272, -345016864,
+-311447936, -271611584, -226304512, -177214112, -126466384, -74490840, -20390358, 35524212, 91066728, 143629616,
+190960144, 231159440, 263330880, 287973248, 305897248, 317057696, 320815808, 316798944, 305198752, 286624640,
+261830336, 231468672, 196347648, 157979632, 118393456, 79318920, 41998336, 7539278, -23330262, -50640884,
+-74534864, -94525784, -110122960, -121693064, -129915248, -134911904, -136685184, -135825120, -133061312, -128692256,
+-123075512, -117087784, -111551040, -106692360, -102533216, -99270656, -96970160, -95349344, -94065152, -92896920,
+-91614872, -89897424, -87315072, -83257944, -77060840, -68273872, -56595856, -41711112, -23567022, -2640331,
+20503100, 45624900, 72381472, 99876784, 127154120, 153659968, 178721648, 201124192, 219794944, 234370992,
+244561888, 249531152, 248457952, 241128592, 227431408, 206856368, 179084032, 144575040, 104046120, 57863412,
+6546604, -48497160, -105292200, -161998656, -216730496, -266991280, -310002144, -343559808, -366076160, -376005600,
+-372055296, -354064224, -323047584, -280337888, -227390064, -166443408, -100478072, -32240172, 36025112, 101848704,
+162506000, 215946656, 260997104, 296530432, 321288256, 334612320, 336531104, 327058016, 306174272, 274521440,
+233450256, 184480112, 129268848, 69917232, 8820789, -51598664, -108862928, -160553936, -204564992, -238923120,
+-261717056, -271722720, -268565920, -251806960, -220931504, -176865680, -122199872, -59592672, 7924752, 74658344,
+133093520, 177590448, 204240720, 207763680, 184013040, 135966320, 71502080, -3244848, -78216184, -128000760,
+-123941480, -68201400, -3135863, 27491548, 20126754, 3505767, -1666447, 785979, 1134408, -297963,
+426812, 1980517, 1751273, 1092532, 1852742, 2781528, 2525441, 2199560, 2792803, 3315178,
+3042448, 2836826, 3216394, 3432753, 3126736, 2936684, 3098819, 3076270, 2731599, 2509335,
+2474438, 2274722, 1906429, 1642288, 1448478, 1138703, 780610, 486942, 178241, },
{
-4357781,
--15616501, -30627412, -43881144, -49493592, -45687716, -24834574, 32756104, 132964136, 236001472, 278151200,
-234555136, 138744624, 37156300, -46155868, -96170224, -98129264, -59395104, -9983115, 32935956, 73852496,
-105064560, 99138584, 48845052, -16016470, -64116884, -87776784, -86431384, -57499948, -14449881, 14837501,
-18675592, 7561290, -14667313, -59650116, -128861368, -203432736, -266602048, -317439424, -358831104, -389818208,
--413140416, -435458688, -457594400, -475116256, -487643616, -498576448, -508736736, -518301088, -530641056, -547201408,
--563499200, -576024896, -587904256, -603265216, -621687936, -641835072, -664708992, -689980032, -714076416, -734508096,
--752373568, -769566336, -786965248, -805674688, -827064704, -851393536, -877783424, -904528704, -928722816, -947569088,
--960526464, -968117312, -969178688, -962167168, -948336320, -930310848, -908301312, -880925696, -848764992, -814003136,
--777668800, -740189824, -703618176, -670610304, -641908096, -616688064, -594530304, -575577152, -559538688, -545531712,
--532376768, -518926016, -504799840, -490573856, -476650112, -462685024, -448691488, -435484448, -423228768, -410814144,
--397389152, -383203968, -368334240, -351987072, -333742592, -314279392, -294420000, -274476864, -254796256, -236030464,
--218706720, -203103632, -189430064, -177678496, -167604112, -159153776, -152452544, -147246512, -142963360, -139410880,
--136809200, -135170144, -134270336, -134177464, -135288784, -138003200, -142755056, -150127360, -160649488, -174779392,
--193083472, -215875792, -242649552, -272467904, -304807392, -339312608, -374917344, -410167776, -444380928, -477570848,
--509230112, -538187328, -563902336, -586957760, -607890368, -626362432, -642089536, -655882304, -668904640, -681289216,
--692395968, -702260416, -711722816, -720979008, -729036864, -735027840, -739143488, -741636672, -741602880, -737625728,
--729266688, -716956736, -700395904, -678032512, -648656576, -612586880, -570266432, -520494208, -461707360, -394449248,
--320360000, -239108880, -149194816, -51655036, 50466940, 156328752, 266896784, 380279104, 492131840, 600777856,
-706555968, 806222784, 894021056, 967654528, 1026274944, 1063700736, 1071413440, 1046386624, 987673344, 889303040,
-747161088, 568291840, 362638592, 134009960, -106979048, -332635552, -517338464, -648572800, -695149056, -595534272,
--334001888, -20295868, 172842368, 174538880, 74892952, 2940442, -6116034, 3243774, 536871, -3659849,
-205085, 2843268, -568546, -2236067, 668404, 1739999, -687195, -1341104, 701153, 1087164,
--616328, -816044, 590021, 648540, -517544, -494458, 443455, 347892, -408559, -276489,
-308701, 145492, -290984, -108985, 195958, 7516, -166430, 34360, 97174, },
+-15616501, -30627412, -43881144, -49493592, -45687716, -24834574, 32756104, 132964136, 236001472, 278151200,
+234555136, 138744624, 37156300, -46155868, -96170224, -98129264, -59395104, -9983115, 32935956, 73852496,
+105064560, 99138584, 48845052, -16016470, -64116884, -87776784, -86431384, -57499948, -14449881, 14837501,
+18675592, 7561290, -14667313, -59650116, -128861368, -203432736, -266602048, -317439424, -358831104, -389818208,
+-413140416, -435458688, -457594400, -475116256, -487643616, -498576448, -508736736, -518301088, -530641056, -547201408,
+-563499200, -576024896, -587904256, -603265216, -621687936, -641835072, -664708992, -689980032, -714076416, -734508096,
+-752373568, -769566336, -786965248, -805674688, -827064704, -851393536, -877783424, -904528704, -928722816, -947569088,
+-960526464, -968117312, -969178688, -962167168, -948336320, -930310848, -908301312, -880925696, -848764992, -814003136,
+-777668800, -740189824, -703618176, -670610304, -641908096, -616688064, -594530304, -575577152, -559538688, -545531712,
+-532376768, -518926016, -504799840, -490573856, -476650112, -462685024, -448691488, -435484448, -423228768, -410814144,
+-397389152, -383203968, -368334240, -351987072, -333742592, -314279392, -294420000, -274476864, -254796256, -236030464,
+-218706720, -203103632, -189430064, -177678496, -167604112, -159153776, -152452544, -147246512, -142963360, -139410880,
+-136809200, -135170144, -134270336, -134177464, -135288784, -138003200, -142755056, -150127360, -160649488, -174779392,
+-193083472, -215875792, -242649552, -272467904, -304807392, -339312608, -374917344, -410167776, -444380928, -477570848,
+-509230112, -538187328, -563902336, -586957760, -607890368, -626362432, -642089536, -655882304, -668904640, -681289216,
+-692395968, -702260416, -711722816, -720979008, -729036864, -735027840, -739143488, -741636672, -741602880, -737625728,
+-729266688, -716956736, -700395904, -678032512, -648656576, -612586880, -570266432, -520494208, -461707360, -394449248,
+-320360000, -239108880, -149194816, -51655036, 50466940, 156328752, 266896784, 380279104, 492131840, 600777856,
+706555968, 806222784, 894021056, 967654528, 1026274944, 1063700736, 1071413440, 1046386624, 987673344, 889303040,
+747161088, 568291840, 362638592, 134009960, -106979048, -332635552, -517338464, -648572800, -695149056, -595534272,
+-334001888, -20295868, 172842368, 174538880, 74892952, 2940442, -6116034, 3243774, 536871, -3659849,
+205085, 2843268, -568546, -2236067, 668404, 1739999, -687195, -1341104, 701153, 1087164,
+-616328, -816044, 590021, 648540, -517544, -494458, 443455, 347892, -408559, -276489,
+308701, 145492, -290984, -108985, 195958, 7516, -166430, 34360, 97174, },
},
{
{
4396973,
-18730352, 43955768, 62520228, 36020816, -44321380, -122355032, -133907416, -89308480, -52676164, -46959560,
--35172024, 995896, 22633940, -6811818, -70629128, -132929776, -187501632, -245622736, -301632864, -338469184,
--353582656, -358535264, -360587200, -358735008, -352565280, -344896608, -337896896, -331250976, -322315808, -307475104,
--286514048, -264907680, -248241600, -235557488, -221265440, -201784544, -177688704, -151782528, -127838088, -109232832,
--96672736, -88565984, -84239344, -84811648, -90858424, -101595304, -116348520, -134488848, -153815120, -170888688,
--183136864, -189838624, -191920608, -191799280, -192611024, -196889888, -206453712, -223010816, -247206512, -277297600,
--310380096, -344601344, -378737728, -410577920, -437911104, -460739936, -480709920, -498734816, -514743232, -529178624,
--542961152, -555994816, -566950208, -574567296, -578352256, -578027456, -573051200, -563112640, -549016512, -532708544,
--516039776, -499600800, -483089344, -466339488, -449094144, -430101792, -407705152, -381528928, -352745664, -322786112,
--292707392, -263698112, -237151984, -214081568, -195071504, -180745648, -171941504, -169715088, -175369952, -189889632,
--213101248, -243979376, -281717120, -325589120, -373912864, -424414720, -475792192, -527720480, -579196736, -628193216,
--673297344, -714438848, -751509760, -783385920, -809055872, -828938368, -844243456, -855476928, -862441216, -865578688,
--866344832, -865804736, -863600320, -858992384, -852285824, -844150592, -833970432, -820226560, -802486720, -781642688,
--758091264, -731185984, -700930624, -668854208, -636547456, -604441472, -572702720, -542376512, -514803904, -490429952,
--468853664, -449801184, -433525408, -420207264, -409284608, -399728864, -390993952, -383223296, -376250400, -369016064,
--360573248, -351062560, -340871168, -329410048, -315708544, -299783360, -282321088, -263283104, -241879136, -217813904,
--191608160, -163595840, -133328136, -100234336, -64467996, -26707180, 12809203, 54536420, 98570576, 143910928,
-189559456, 235761488, 282941184, 330004896, 375307680, 418653536, 460329760, 498804064, 531752384, 558711872,
-580073472, 594267264, 598866112, 593451712, 578232000, 551137152, 509791680, 454804288, 387670720, 307864320,
-216058864, 117309512, 16954384, -82486992, -175775296, -252181152, -303696608, -327520800, -313098816, -241155968,
--115031576, 14910516, 83878024, 74836048, 30868466, 2026151, -1671279, 1275068, -20401, -1331977,
-242129, 1015760, -345745, -801548, 348429, 621697, -330712, -469225, 333934, 392453,
--280247, -284542, 272194, 230318, -237834, -175020, 202937, 114354, -195421, -97711,
-143345, 34360, -147640, -31139, 97711, -19864, -92342, 31675, 59593, },
+18730352, 43955768, 62520228, 36020816, -44321380, -122355032, -133907416, -89308480, -52676164, -46959560,
+-35172024, 995896, 22633940, -6811818, -70629128, -132929776, -187501632, -245622736, -301632864, -338469184,
+-353582656, -358535264, -360587200, -358735008, -352565280, -344896608, -337896896, -331250976, -322315808, -307475104,
+-286514048, -264907680, -248241600, -235557488, -221265440, -201784544, -177688704, -151782528, -127838088, -109232832,
+-96672736, -88565984, -84239344, -84811648, -90858424, -101595304, -116348520, -134488848, -153815120, -170888688,
+-183136864, -189838624, -191920608, -191799280, -192611024, -196889888, -206453712, -223010816, -247206512, -277297600,
+-310380096, -344601344, -378737728, -410577920, -437911104, -460739936, -480709920, -498734816, -514743232, -529178624,
+-542961152, -555994816, -566950208, -574567296, -578352256, -578027456, -573051200, -563112640, -549016512, -532708544,
+-516039776, -499600800, -483089344, -466339488, -449094144, -430101792, -407705152, -381528928, -352745664, -322786112,
+-292707392, -263698112, -237151984, -214081568, -195071504, -180745648, -171941504, -169715088, -175369952, -189889632,
+-213101248, -243979376, -281717120, -325589120, -373912864, -424414720, -475792192, -527720480, -579196736, -628193216,
+-673297344, -714438848, -751509760, -783385920, -809055872, -828938368, -844243456, -855476928, -862441216, -865578688,
+-866344832, -865804736, -863600320, -858992384, -852285824, -844150592, -833970432, -820226560, -802486720, -781642688,
+-758091264, -731185984, -700930624, -668854208, -636547456, -604441472, -572702720, -542376512, -514803904, -490429952,
+-468853664, -449801184, -433525408, -420207264, -409284608, -399728864, -390993952, -383223296, -376250400, -369016064,
+-360573248, -351062560, -340871168, -329410048, -315708544, -299783360, -282321088, -263283104, -241879136, -217813904,
+-191608160, -163595840, -133328136, -100234336, -64467996, -26707180, 12809203, 54536420, 98570576, 143910928,
+189559456, 235761488, 282941184, 330004896, 375307680, 418653536, 460329760, 498804064, 531752384, 558711872,
+580073472, 594267264, 598866112, 593451712, 578232000, 551137152, 509791680, 454804288, 387670720, 307864320,
+216058864, 117309512, 16954384, -82486992, -175775296, -252181152, -303696608, -327520800, -313098816, -241155968,
+-115031576, 14910516, 83878024, 74836048, 30868466, 2026151, -1671279, 1275068, -20401, -1331977,
+242129, 1015760, -345745, -801548, 348429, 621697, -330712, -469225, 333934, 392453,
+-280247, -284542, 272194, 230318, -237834, -175020, 202937, 114354, -195421, -97711,
+143345, 34360, -147640, -31139, 97711, -19864, -92342, 31675, 59593, },
{
-99617472,
--286525856, -426918144, -479716704, -432016800, -323711680, -220421472, -155266832, -104122352, -23704998, 92558696,
-205582368, 273793952, 292715456, 287555584, 276731712, 253248448, 200025760, 114359944, 13984414, -76767712,
--143746656, -188256464, -218978368, -239801440, -245534688, -228605008, -187522032, -127440272, -55115168, 22870164,
-97539248, 157715488, 195234720, 208737552, 201576240, 177796608, 141271136, 96886408, 50203872, 5709622,
--33995204, -67701032, -95033128, -116073640, -130764040, -138548672, -138680192, -130588480, -113732880, -87506200,
--51908436, -8606041, 38646116, 84669376, 124226024, 153222960, 169042928, 170094128, 155477824, 125430224,
-82081656, 29616484, -26425860, -80192944, -126371896, -160656480, -179832960, -181643296, -164823136, -129660232,
--78935056, -18505940, 43240656, 97167192, 135631312, 154242480, 152633472, 134172096, 104647416, 70279624,
-35944044, 4480188, -22913114, -45918568, -64495912, -78462608, -87238304, -89910848, -85651312, -74275016,
--56666724, -34820372, -11373610, 11130408, 30785788, 46446312, 57597124, 64184528, 66410932, 64531884,
-58780384, 49432928, 36874440, 21636434, 4475893, -13545253, -31093416, -46683072, -58814744, -66160212,
--67793376, -63361504, -53129820, -37984692, -19406810, 711354, 20378010, 37780144, 51434916, 60302952,
-63837172, 61920008, 54761368, 42888468, 27187142, 8901320, -10379862, -28739774, -44103408, -54607824,
--58997280, -56868052, -48755396, -36053568, -20711406, -4804458, 9823127, 21776558, 30251602, 35050692,
-36432060, 34912716, 31146030, 25813828, 19491098, 12600897, 5487358, -1540820, -8236674, -14373645,
--19656992, -23740968, -26317412, -27138288, -26007100, -22863722, -17864380, -11331734, -3701725, 4446902,
-12408697, 19478750, 25026774, 28495498, 29480118, 27852862, 23748484, 17478906, 9565429, 723702,
--8311299, -16871168, -24227910, -29619706, -32505924, -32583232, -29544544, -23179938, -13749264, -1946694,
-11372000, 24927454, 36624260, 44075492, 45504640, 39842800, 26695906, 7341173, -14562623, -34248068,
--47577500, -51240032, -43075836, -24232206, -117575, 22448184, 37966436, 41439456, 29064044, 4553739,
--17837536, -23693724, -13037373, 359167, 5138392, 2745558, 555661, 988916, 1490354, 879931,
-510027, 812286, 741419, 117575, -214748, -168577, -386010, -847182, -1012002, -918049,
--975494, -1106491, -983011, -702227, -527207, -376347, -74088, 267362, 491237, 669478,
-882616, 1039382, 1072668, 1042066, 981937, 848793, 638876, 394600, 134755, },
+-286525856, -426918144, -479716704, -432016800, -323711680, -220421472, -155266832, -104122352, -23704998, 92558696,
+205582368, 273793952, 292715456, 287555584, 276731712, 253248448, 200025760, 114359944, 13984414, -76767712,
+-143746656, -188256464, -218978368, -239801440, -245534688, -228605008, -187522032, -127440272, -55115168, 22870164,
+97539248, 157715488, 195234720, 208737552, 201576240, 177796608, 141271136, 96886408, 50203872, 5709622,
+-33995204, -67701032, -95033128, -116073640, -130764040, -138548672, -138680192, -130588480, -113732880, -87506200,
+-51908436, -8606041, 38646116, 84669376, 124226024, 153222960, 169042928, 170094128, 155477824, 125430224,
+82081656, 29616484, -26425860, -80192944, -126371896, -160656480, -179832960, -181643296, -164823136, -129660232,
+-78935056, -18505940, 43240656, 97167192, 135631312, 154242480, 152633472, 134172096, 104647416, 70279624,
+35944044, 4480188, -22913114, -45918568, -64495912, -78462608, -87238304, -89910848, -85651312, -74275016,
+-56666724, -34820372, -11373610, 11130408, 30785788, 46446312, 57597124, 64184528, 66410932, 64531884,
+58780384, 49432928, 36874440, 21636434, 4475893, -13545253, -31093416, -46683072, -58814744, -66160212,
+-67793376, -63361504, -53129820, -37984692, -19406810, 711354, 20378010, 37780144, 51434916, 60302952,
+63837172, 61920008, 54761368, 42888468, 27187142, 8901320, -10379862, -28739774, -44103408, -54607824,
+-58997280, -56868052, -48755396, -36053568, -20711406, -4804458, 9823127, 21776558, 30251602, 35050692,
+36432060, 34912716, 31146030, 25813828, 19491098, 12600897, 5487358, -1540820, -8236674, -14373645,
+-19656992, -23740968, -26317412, -27138288, -26007100, -22863722, -17864380, -11331734, -3701725, 4446902,
+12408697, 19478750, 25026774, 28495498, 29480118, 27852862, 23748484, 17478906, 9565429, 723702,
+-8311299, -16871168, -24227910, -29619706, -32505924, -32583232, -29544544, -23179938, -13749264, -1946694,
+11372000, 24927454, 36624260, 44075492, 45504640, 39842800, 26695906, 7341173, -14562623, -34248068,
+-47577500, -51240032, -43075836, -24232206, -117575, 22448184, 37966436, 41439456, 29064044, 4553739,
+-17837536, -23693724, -13037373, 359167, 5138392, 2745558, 555661, 988916, 1490354, 879931,
+510027, 812286, 741419, 117575, -214748, -168577, -386010, -847182, -1012002, -918049,
+-975494, -1106491, -983011, -702227, -527207, -376347, -74088, 267362, 491237, 669478,
+882616, 1039382, 1072668, 1042066, 981937, 848793, 638876, 394600, 134755, },
},
{
{
-99617472,
--286525856, -426918144, -479716704, -432016800, -323711680, -220421472, -155266832, -104122352, -23704998, 92558696,
-205582368, 273793952, 292715456, 287555584, 276731712, 253248448, 200025760, 114359944, 13984414, -76767712,
--143746656, -188256464, -218978368, -239801440, -245534688, -228605008, -187522032, -127440272, -55115168, 22870164,
-97539248, 157715488, 195234720, 208737552, 201576240, 177796608, 141271136, 96886408, 50203872, 5709622,
--33995204, -67701032, -95033128, -116073640, -130764040, -138548672, -138680192, -130588480, -113732880, -87506200,
--51908436, -8606041, 38646116, 84669376, 124226024, 153222960, 169042928, 170094128, 155477824, 125430224,
-82081656, 29616484, -26425860, -80192944, -126371896, -160656480, -179832960, -181643296, -164823136, -129660232,
--78935056, -18505940, 43240656, 97167192, 135631312, 154242480, 152633472, 134172096, 104647416, 70279624,
-35944044, 4480188, -22913114, -45918568, -64495912, -78462608, -87238304, -89910848, -85651312, -74275016,
--56666724, -34820372, -11373610, 11130408, 30785788, 46446312, 57597124, 64184528, 66410932, 64531884,
-58780384, 49432928, 36874440, 21636434, 4475893, -13545253, -31093416, -46683072, -58814744, -66160212,
--67793376, -63361504, -53129820, -37984692, -19406810, 711354, 20378010, 37780144, 51434916, 60302952,
-63837172, 61920008, 54761368, 42888468, 27187142, 8901320, -10379862, -28739774, -44103408, -54607824,
--58997280, -56868052, -48755396, -36053568, -20711406, -4804458, 9823127, 21776558, 30251602, 35050692,
-36432060, 34912716, 31146030, 25813828, 19491098, 12600897, 5487358, -1540820, -8236674, -14373645,
--19656992, -23740968, -26317412, -27138288, -26007100, -22863722, -17864380, -11331734, -3701725, 4446902,
-12408697, 19478750, 25026774, 28495498, 29480118, 27852862, 23748484, 17478906, 9565429, 723702,
--8311299, -16871168, -24227910, -29619706, -32505924, -32583232, -29544544, -23179938, -13749264, -1946694,
-11372000, 24927454, 36624260, 44075492, 45504640, 39842800, 26695906, 7341173, -14562623, -34248068,
--47577500, -51240032, -43075836, -24232206, -117575, 22448184, 37966436, 41439456, 29064044, 4553739,
--17837536, -23693724, -13037373, 359167, 5138392, 2745558, 555661, 988916, 1490354, 879931,
-510027, 812286, 741419, 117575, -214748, -168577, -386010, -847182, -1012002, -918049,
--975494, -1106491, -983011, -702227, -527207, -376347, -74088, 267362, 491237, 669478,
-882616, 1039382, 1072668, 1042066, 981937, 848793, 638876, 394600, 134755, },
+-286525856, -426918144, -479716704, -432016800, -323711680, -220421472, -155266832, -104122352, -23704998, 92558696,
+205582368, 273793952, 292715456, 287555584, 276731712, 253248448, 200025760, 114359944, 13984414, -76767712,
+-143746656, -188256464, -218978368, -239801440, -245534688, -228605008, -187522032, -127440272, -55115168, 22870164,
+97539248, 157715488, 195234720, 208737552, 201576240, 177796608, 141271136, 96886408, 50203872, 5709622,
+-33995204, -67701032, -95033128, -116073640, -130764040, -138548672, -138680192, -130588480, -113732880, -87506200,
+-51908436, -8606041, 38646116, 84669376, 124226024, 153222960, 169042928, 170094128, 155477824, 125430224,
+82081656, 29616484, -26425860, -80192944, -126371896, -160656480, -179832960, -181643296, -164823136, -129660232,
+-78935056, -18505940, 43240656, 97167192, 135631312, 154242480, 152633472, 134172096, 104647416, 70279624,
+35944044, 4480188, -22913114, -45918568, -64495912, -78462608, -87238304, -89910848, -85651312, -74275016,
+-56666724, -34820372, -11373610, 11130408, 30785788, 46446312, 57597124, 64184528, 66410932, 64531884,
+58780384, 49432928, 36874440, 21636434, 4475893, -13545253, -31093416, -46683072, -58814744, -66160212,
+-67793376, -63361504, -53129820, -37984692, -19406810, 711354, 20378010, 37780144, 51434916, 60302952,
+63837172, 61920008, 54761368, 42888468, 27187142, 8901320, -10379862, -28739774, -44103408, -54607824,
+-58997280, -56868052, -48755396, -36053568, -20711406, -4804458, 9823127, 21776558, 30251602, 35050692,
+36432060, 34912716, 31146030, 25813828, 19491098, 12600897, 5487358, -1540820, -8236674, -14373645,
+-19656992, -23740968, -26317412, -27138288, -26007100, -22863722, -17864380, -11331734, -3701725, 4446902,
+12408697, 19478750, 25026774, 28495498, 29480118, 27852862, 23748484, 17478906, 9565429, 723702,
+-8311299, -16871168, -24227910, -29619706, -32505924, -32583232, -29544544, -23179938, -13749264, -1946694,
+11372000, 24927454, 36624260, 44075492, 45504640, 39842800, 26695906, 7341173, -14562623, -34248068,
+-47577500, -51240032, -43075836, -24232206, -117575, 22448184, 37966436, 41439456, 29064044, 4553739,
+-17837536, -23693724, -13037373, 359167, 5138392, 2745558, 555661, 988916, 1490354, 879931,
+510027, 812286, 741419, 117575, -214748, -168577, -386010, -847182, -1012002, -918049,
+-975494, -1106491, -983011, -702227, -527207, -376347, -74088, 267362, 491237, 669478,
+882616, 1039382, 1072668, 1042066, 981937, 848793, 638876, 394600, 134755, },
{
4396973,
-18730352, 43955768, 62520228, 36020816, -44321380, -122355032, -133907416, -89308480, -52676164, -46959560,
--35172024, 995896, 22633940, -6811818, -70629128, -132929776, -187501632, -245622736, -301632864, -338469184,
--353582656, -358535264, -360587200, -358735008, -352565280, -344896608, -337896896, -331250976, -322315808, -307475104,
--286514048, -264907680, -248241600, -235557488, -221265440, -201784544, -177688704, -151782528, -127838088, -109232832,
--96672736, -88565984, -84239344, -84811648, -90858424, -101595304, -116348520, -134488848, -153815120, -170888688,
--183136864, -189838624, -191920608, -191799280, -192611024, -196889888, -206453712, -223010816, -247206512, -277297600,
--310380096, -344601344, -378737728, -410577920, -437911104, -460739936, -480709920, -498734816, -514743232, -529178624,
--542961152, -555994816, -566950208, -574567296, -578352256, -578027456, -573051200, -563112640, -549016512, -532708544,
--516039776, -499600800, -483089344, -466339488, -449094144, -430101792, -407705152, -381528928, -352745664, -322786112,
--292707392, -263698112, -237151984, -214081568, -195071504, -180745648, -171941504, -169715088, -175369952, -189889632,
--213101248, -243979376, -281717120, -325589120, -373912864, -424414720, -475792192, -527720480, -579196736, -628193216,
--673297344, -714438848, -751509760, -783385920, -809055872, -828938368, -844243456, -855476928, -862441216, -865578688,
--866344832, -865804736, -863600320, -858992384, -852285824, -844150592, -833970432, -820226560, -802486720, -781642688,
--758091264, -731185984, -700930624, -668854208, -636547456, -604441472, -572702720, -542376512, -514803904, -490429952,
--468853664, -449801184, -433525408, -420207264, -409284608, -399728864, -390993952, -383223296, -376250400, -369016064,
--360573248, -351062560, -340871168, -329410048, -315708544, -299783360, -282321088, -263283104, -241879136, -217813904,
--191608160, -163595840, -133328136, -100234336, -64467996, -26707180, 12809203, 54536420, 98570576, 143910928,
-189559456, 235761488, 282941184, 330004896, 375307680, 418653536, 460329760, 498804064, 531752384, 558711872,
-580073472, 594267264, 598866112, 593451712, 578232000, 551137152, 509791680, 454804288, 387670720, 307864320,
-216058864, 117309512, 16954384, -82486992, -175775296, -252181152, -303696608, -327520800, -313098816, -241155968,
--115031576, 14910516, 83878024, 74836048, 30868466, 2026151, -1671279, 1275068, -20401, -1331977,
-242129, 1015760, -345745, -801548, 348429, 621697, -330712, -469225, 333934, 392453,
--280247, -284542, 272194, 230318, -237834, -175020, 202937, 114354, -195421, -97711,
-143345, 34360, -147640, -31139, 97711, -19864, -92342, 31675, 59593, },
+18730352, 43955768, 62520228, 36020816, -44321380, -122355032, -133907416, -89308480, -52676164, -46959560,
+-35172024, 995896, 22633940, -6811818, -70629128, -132929776, -187501632, -245622736, -301632864, -338469184,
+-353582656, -358535264, -360587200, -358735008, -352565280, -344896608, -337896896, -331250976, -322315808, -307475104,
+-286514048, -264907680, -248241600, -235557488, -221265440, -201784544, -177688704, -151782528, -127838088, -109232832,
+-96672736, -88565984, -84239344, -84811648, -90858424, -101595304, -116348520, -134488848, -153815120, -170888688,
+-183136864, -189838624, -191920608, -191799280, -192611024, -196889888, -206453712, -223010816, -247206512, -277297600,
+-310380096, -344601344, -378737728, -410577920, -437911104, -460739936, -480709920, -498734816, -514743232, -529178624,
+-542961152, -555994816, -566950208, -574567296, -578352256, -578027456, -573051200, -563112640, -549016512, -532708544,
+-516039776, -499600800, -483089344, -466339488, -449094144, -430101792, -407705152, -381528928, -352745664, -322786112,
+-292707392, -263698112, -237151984, -214081568, -195071504, -180745648, -171941504, -169715088, -175369952, -189889632,
+-213101248, -243979376, -281717120, -325589120, -373912864, -424414720, -475792192, -527720480, -579196736, -628193216,
+-673297344, -714438848, -751509760, -783385920, -809055872, -828938368, -844243456, -855476928, -862441216, -865578688,
+-866344832, -865804736, -863600320, -858992384, -852285824, -844150592, -833970432, -820226560, -802486720, -781642688,
+-758091264, -731185984, -700930624, -668854208, -636547456, -604441472, -572702720, -542376512, -514803904, -490429952,
+-468853664, -449801184, -433525408, -420207264, -409284608, -399728864, -390993952, -383223296, -376250400, -369016064,
+-360573248, -351062560, -340871168, -329410048, -315708544, -299783360, -282321088, -263283104, -241879136, -217813904,
+-191608160, -163595840, -133328136, -100234336, -64467996, -26707180, 12809203, 54536420, 98570576, 143910928,
+189559456, 235761488, 282941184, 330004896, 375307680, 418653536, 460329760, 498804064, 531752384, 558711872,
+580073472, 594267264, 598866112, 593451712, 578232000, 551137152, 509791680, 454804288, 387670720, 307864320,
+216058864, 117309512, 16954384, -82486992, -175775296, -252181152, -303696608, -327520800, -313098816, -241155968,
+-115031576, 14910516, 83878024, 74836048, 30868466, 2026151, -1671279, 1275068, -20401, -1331977,
+242129, 1015760, -345745, -801548, 348429, 621697, -330712, -469225, 333934, 392453,
+-280247, -284542, 272194, 230318, -237834, -175020, 202937, 114354, -195421, -97711,
+143345, 34360, -147640, -31139, 97711, -19864, -92342, 31675, 59593, },
},
{
{
294205,
-8901857, 28864864, 39342436, 13937706, -47083580, -111196168, -146788016, -153042576, -147262624, -134354624,
--107734424, -75171056, -61331596, -80488224, -123064232, -173706192, -227136128, -279479968, -318843328, -336521952,
--339959008, -344491808, -356248736, -370266432, -381413504, -389552448, -395492384, -398438208, -398182656, -395899872,
--391819136, -384272320, -371361664, -351976320, -325347008, -291679296, -253915248, -217424128, -186781680, -163319360,
--146260816, -135214160, -130368904, -130834368, -134310064, -138643696, -142857584, -146631792, -149753696, -152409600,
--155440768, -160096512, -167755520, -179548416, -195720048, -215495696, -237803216, -261634912, -285511712, -307542752,
--326749824, -343719264, -359359904, -373625120, -385901728, -395743104, -402390112, -404216000, -399577440, -388097536,
--370758208, -349199104, -325402816, -301640928, -279964768, -261452384, -245954528, -232490880, -219916288, -207399680,
--194486320, -180918512, -166608768, -151734208, -136620224, -121469192, -106369160, -91516088, -77255184, -63954212,
--51991652, -41852844, -34239480, -30183956, -30968862, -37641632, -50665044, -70217880, -96439736, -128817344,
--165670304, -205029920, -245914800, -288069376, -330800544, -373101120, -414799360, -456399872, -497562304, -536742048,
--572604480, -604822656, -633069568, -656218368, -673303232, -684666112, -691340480, -693680704, -691445184, -685094016,
--676069184, -665548672, -653697792, -640570752, -626994880, -613774464, -600480448, -585917824, -569544320, -551551616,
--531744320, -509446464, -484738048, -458893088, -433236576, -408261344, -384195040, -361766176, -341875648, -324845568,
--310456352, -298596320, -289516224, -283392128, -279850944, -278159264, -277859680, -278895296, -280965472, -283144096,
--284521184, -284876064, -284215168, -281956544, -277226176, -269789984, -260008736, -247893696, -232882784, -214655488,
--193558064, -169964208, -143662368, -114285320, -82115480, -47969952, -12283070, 25144886, 64223720, 104003704,
-143587744, 182995664, 222292480, 260444672, 296157856, 329288160, 360096512, 387627776, 410374464, 428013344,
-440756512, 447537728, 446730272, 438046400, 421747520, 396788928, 361954624, 317939776, 266154288, 206862800,
-140971568, 71972912, 3565360, -62324808, -122405496, -170344848, -201553696, -214717232, -204053904, -158424704,
--79753248, 1994476, 47517908, 45334452, 20262046, 2575907, -511101, 807454, 5906, -761283,
-128312, 577673, -195958, -460635, 197569, 360240, -182536, -265214, 192737, 229244,
--154619, -161061, 154082, 132070, -134218, -102542, 110059, 62814, -112206, -61203,
-74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, },
+8901857, 28864864, 39342436, 13937706, -47083580, -111196168, -146788016, -153042576, -147262624, -134354624,
+-107734424, -75171056, -61331596, -80488224, -123064232, -173706192, -227136128, -279479968, -318843328, -336521952,
+-339959008, -344491808, -356248736, -370266432, -381413504, -389552448, -395492384, -398438208, -398182656, -395899872,
+-391819136, -384272320, -371361664, -351976320, -325347008, -291679296, -253915248, -217424128, -186781680, -163319360,
+-146260816, -135214160, -130368904, -130834368, -134310064, -138643696, -142857584, -146631792, -149753696, -152409600,
+-155440768, -160096512, -167755520, -179548416, -195720048, -215495696, -237803216, -261634912, -285511712, -307542752,
+-326749824, -343719264, -359359904, -373625120, -385901728, -395743104, -402390112, -404216000, -399577440, -388097536,
+-370758208, -349199104, -325402816, -301640928, -279964768, -261452384, -245954528, -232490880, -219916288, -207399680,
+-194486320, -180918512, -166608768, -151734208, -136620224, -121469192, -106369160, -91516088, -77255184, -63954212,
+-51991652, -41852844, -34239480, -30183956, -30968862, -37641632, -50665044, -70217880, -96439736, -128817344,
+-165670304, -205029920, -245914800, -288069376, -330800544, -373101120, -414799360, -456399872, -497562304, -536742048,
+-572604480, -604822656, -633069568, -656218368, -673303232, -684666112, -691340480, -693680704, -691445184, -685094016,
+-676069184, -665548672, -653697792, -640570752, -626994880, -613774464, -600480448, -585917824, -569544320, -551551616,
+-531744320, -509446464, -484738048, -458893088, -433236576, -408261344, -384195040, -361766176, -341875648, -324845568,
+-310456352, -298596320, -289516224, -283392128, -279850944, -278159264, -277859680, -278895296, -280965472, -283144096,
+-284521184, -284876064, -284215168, -281956544, -277226176, -269789984, -260008736, -247893696, -232882784, -214655488,
+-193558064, -169964208, -143662368, -114285320, -82115480, -47969952, -12283070, 25144886, 64223720, 104003704,
+143587744, 182995664, 222292480, 260444672, 296157856, 329288160, 360096512, 387627776, 410374464, 428013344,
+440756512, 447537728, 446730272, 438046400, 421747520, 396788928, 361954624, 317939776, 266154288, 206862800,
+140971568, 71972912, 3565360, -62324808, -122405496, -170344848, -201553696, -214717232, -204053904, -158424704,
+-79753248, 1994476, 47517908, 45334452, 20262046, 2575907, -511101, 807454, 5906, -761283,
+128312, 577673, -195958, -460635, 197569, 360240, -182536, -265214, 192737, 229244,
+-154619, -161061, 154082, 132070, -134218, -102542, 110059, 62814, -112206, -61203,
+74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, },
{
-71337800,
--213465776, -339793664, -413543616, -409479488, -353031808, -305707168, -298885696, -300287456, -264226384, -195696432,
--136379712, -100566120, -60322280, 7445863, 92119536, 172758624, 241801296, 295369728, 323153344, 321709696,
-303267104, 280336800, 251828960, 211822416, 162183328, 108903192, 53142168, -7278896, -71462888, -134384160,
--189267936, -229497824, -251617440, -257608384, -251723744, -235261136, -207125328, -168757856, -125397472, -82674896,
--44142064, -11410654, 15624554, 38577396, 59280212, 78995720, 99249176, 121977072, 147628224, 173745392,
-195907952, 209443536, 210543584, 197508896, 171792256, 137052944, 96641056, 52245592, 4629975, -45239428,
--95707976, -144094000, -186567472, -218991792, -238354048, -243538608, -235136576, -214888496, -184976192, -147172960,
--102447856, -51600812, 3540127, 59476708, 111452256, 154566208, 185071744, 201401760, 204407152, 196513008,
-180407952, 158314112, 132102456, 103480792, 73781096, 43827992, 14254996, -14263050, -41233832, -66497368,
--89908160, -111083424, -129520104, -144553568, -154997312, -159221424, -155894960, -144507392, -125213864, -98698888,
--66384624, -30321932, 7365332, 44700944, 79597552, 109910360, 133930504, 150538064, 158915408, 158564288,
-149662432, 133052184, 109883520, 81576464, 50009524, 17294222, -14701673, -44412648, -70369280, -91344824,
--106646184, -115988816, -119189640, -116235776, -107519672, -93766656, -75855568, -54942832, -32583770, -10457708,
-10011032, 27708982, 41794864, 51884280, 58184460, 61274688, 61807800, 60452740, 57889716, 54622320,
-50830936, 46487116, 41490456, 35638028, 28609850, 20147692, 10214506, -1030255, -13279502, -26003342,
--38427608, -49677740, -58929100, -65435436, -68561640, -67904504, -63380832, -55185496, -43737800, -29694868,
--13953275, 2471754, 18584860, 33456722, 46217068, 56118044, 62656592, 65594888, 64864208, 60536492,
-52914532, 42531988, 29978334, 15844671, 871342, -14052059, -28158880, -40861244, -51453172, -59042916,
--62928252, -62682900, -57788784, -47746076, -32801202, -14114873, 6833293, 28235652, 47299936, 60724932,
-66258460, 63038308, 50745040, 30215094, 5039608, -19430968, -38898444, -49840948, -47437912, -29073170,
--1954210, 18064632, 20342576, 9911711, 258772, -1879048, -155693, 432718, -141197, -37581,
-459562, 310848, -67646, 66035, 318364, 149787, -82678, 21475, 147640, 0,
--147103, -73551, -13422, -125091, -211527, -157303, -125091, -194347, -232465, -185220,
--158377, -187368, -188442, -140660, -110059, -110059, -88047, -37581, -5906, },
+-213465776, -339793664, -413543616, -409479488, -353031808, -305707168, -298885696, -300287456, -264226384, -195696432,
+-136379712, -100566120, -60322280, 7445863, 92119536, 172758624, 241801296, 295369728, 323153344, 321709696,
+303267104, 280336800, 251828960, 211822416, 162183328, 108903192, 53142168, -7278896, -71462888, -134384160,
+-189267936, -229497824, -251617440, -257608384, -251723744, -235261136, -207125328, -168757856, -125397472, -82674896,
+-44142064, -11410654, 15624554, 38577396, 59280212, 78995720, 99249176, 121977072, 147628224, 173745392,
+195907952, 209443536, 210543584, 197508896, 171792256, 137052944, 96641056, 52245592, 4629975, -45239428,
+-95707976, -144094000, -186567472, -218991792, -238354048, -243538608, -235136576, -214888496, -184976192, -147172960,
+-102447856, -51600812, 3540127, 59476708, 111452256, 154566208, 185071744, 201401760, 204407152, 196513008,
+180407952, 158314112, 132102456, 103480792, 73781096, 43827992, 14254996, -14263050, -41233832, -66497368,
+-89908160, -111083424, -129520104, -144553568, -154997312, -159221424, -155894960, -144507392, -125213864, -98698888,
+-66384624, -30321932, 7365332, 44700944, 79597552, 109910360, 133930504, 150538064, 158915408, 158564288,
+149662432, 133052184, 109883520, 81576464, 50009524, 17294222, -14701673, -44412648, -70369280, -91344824,
+-106646184, -115988816, -119189640, -116235776, -107519672, -93766656, -75855568, -54942832, -32583770, -10457708,
+10011032, 27708982, 41794864, 51884280, 58184460, 61274688, 61807800, 60452740, 57889716, 54622320,
+50830936, 46487116, 41490456, 35638028, 28609850, 20147692, 10214506, -1030255, -13279502, -26003342,
+-38427608, -49677740, -58929100, -65435436, -68561640, -67904504, -63380832, -55185496, -43737800, -29694868,
+-13953275, 2471754, 18584860, 33456722, 46217068, 56118044, 62656592, 65594888, 64864208, 60536492,
+52914532, 42531988, 29978334, 15844671, 871342, -14052059, -28158880, -40861244, -51453172, -59042916,
+-62928252, -62682900, -57788784, -47746076, -32801202, -14114873, 6833293, 28235652, 47299936, 60724932,
+66258460, 63038308, 50745040, 30215094, 5039608, -19430968, -38898444, -49840948, -47437912, -29073170,
+-1954210, 18064632, 20342576, 9911711, 258772, -1879048, -155693, 432718, -141197, -37581,
+459562, 310848, -67646, 66035, 318364, 149787, -82678, 21475, 147640, 0,
+-147103, -73551, -13422, -125091, -211527, -157303, -125091, -194347, -232465, -185220,
+-158377, -187368, -188442, -140660, -110059, -110059, -88047, -37581, -5906, },
},
{
{
-71337800,
--213465776, -339793664, -413543616, -409479488, -353031808, -305707168, -298885696, -300287456, -264226384, -195696432,
--136379712, -100566120, -60322280, 7445863, 92119536, 172758624, 241801296, 295369728, 323153344, 321709696,
-303267104, 280336800, 251828960, 211822416, 162183328, 108903192, 53142168, -7278896, -71462888, -134384160,
--189267936, -229497824, -251617440, -257608384, -251723744, -235261136, -207125328, -168757856, -125397472, -82674896,
--44142064, -11410654, 15624554, 38577396, 59280212, 78995720, 99249176, 121977072, 147628224, 173745392,
-195907952, 209443536, 210543584, 197508896, 171792256, 137052944, 96641056, 52245592, 4629975, -45239428,
--95707976, -144094000, -186567472, -218991792, -238354048, -243538608, -235136576, -214888496, -184976192, -147172960,
--102447856, -51600812, 3540127, 59476708, 111452256, 154566208, 185071744, 201401760, 204407152, 196513008,
-180407952, 158314112, 132102456, 103480792, 73781096, 43827992, 14254996, -14263050, -41233832, -66497368,
--89908160, -111083424, -129520104, -144553568, -154997312, -159221424, -155894960, -144507392, -125213864, -98698888,
--66384624, -30321932, 7365332, 44700944, 79597552, 109910360, 133930504, 150538064, 158915408, 158564288,
-149662432, 133052184, 109883520, 81576464, 50009524, 17294222, -14701673, -44412648, -70369280, -91344824,
--106646184, -115988816, -119189640, -116235776, -107519672, -93766656, -75855568, -54942832, -32583770, -10457708,
-10011032, 27708982, 41794864, 51884280, 58184460, 61274688, 61807800, 60452740, 57889716, 54622320,
-50830936, 46487116, 41490456, 35638028, 28609850, 20147692, 10214506, -1030255, -13279502, -26003342,
--38427608, -49677740, -58929100, -65435436, -68561640, -67904504, -63380832, -55185496, -43737800, -29694868,
--13953275, 2471754, 18584860, 33456722, 46217068, 56118044, 62656592, 65594888, 64864208, 60536492,
-52914532, 42531988, 29978334, 15844671, 871342, -14052059, -28158880, -40861244, -51453172, -59042916,
--62928252, -62682900, -57788784, -47746076, -32801202, -14114873, 6833293, 28235652, 47299936, 60724932,
-66258460, 63038308, 50745040, 30215094, 5039608, -19430968, -38898444, -49840948, -47437912, -29073170,
--1954210, 18064632, 20342576, 9911711, 258772, -1879048, -155693, 432718, -141197, -37581,
-459562, 310848, -67646, 66035, 318364, 149787, -82678, 21475, 147640, 0,
--147103, -73551, -13422, -125091, -211527, -157303, -125091, -194347, -232465, -185220,
--158377, -187368, -188442, -140660, -110059, -110059, -88047, -37581, -5906, },
+-213465776, -339793664, -413543616, -409479488, -353031808, -305707168, -298885696, -300287456, -264226384, -195696432,
+-136379712, -100566120, -60322280, 7445863, 92119536, 172758624, 241801296, 295369728, 323153344, 321709696,
+303267104, 280336800, 251828960, 211822416, 162183328, 108903192, 53142168, -7278896, -71462888, -134384160,
+-189267936, -229497824, -251617440, -257608384, -251723744, -235261136, -207125328, -168757856, -125397472, -82674896,
+-44142064, -11410654, 15624554, 38577396, 59280212, 78995720, 99249176, 121977072, 147628224, 173745392,
+195907952, 209443536, 210543584, 197508896, 171792256, 137052944, 96641056, 52245592, 4629975, -45239428,
+-95707976, -144094000, -186567472, -218991792, -238354048, -243538608, -235136576, -214888496, -184976192, -147172960,
+-102447856, -51600812, 3540127, 59476708, 111452256, 154566208, 185071744, 201401760, 204407152, 196513008,
+180407952, 158314112, 132102456, 103480792, 73781096, 43827992, 14254996, -14263050, -41233832, -66497368,
+-89908160, -111083424, -129520104, -144553568, -154997312, -159221424, -155894960, -144507392, -125213864, -98698888,
+-66384624, -30321932, 7365332, 44700944, 79597552, 109910360, 133930504, 150538064, 158915408, 158564288,
+149662432, 133052184, 109883520, 81576464, 50009524, 17294222, -14701673, -44412648, -70369280, -91344824,
+-106646184, -115988816, -119189640, -116235776, -107519672, -93766656, -75855568, -54942832, -32583770, -10457708,
+10011032, 27708982, 41794864, 51884280, 58184460, 61274688, 61807800, 60452740, 57889716, 54622320,
+50830936, 46487116, 41490456, 35638028, 28609850, 20147692, 10214506, -1030255, -13279502, -26003342,
+-38427608, -49677740, -58929100, -65435436, -68561640, -67904504, -63380832, -55185496, -43737800, -29694868,
+-13953275, 2471754, 18584860, 33456722, 46217068, 56118044, 62656592, 65594888, 64864208, 60536492,
+52914532, 42531988, 29978334, 15844671, 871342, -14052059, -28158880, -40861244, -51453172, -59042916,
+-62928252, -62682900, -57788784, -47746076, -32801202, -14114873, 6833293, 28235652, 47299936, 60724932,
+66258460, 63038308, 50745040, 30215094, 5039608, -19430968, -38898444, -49840948, -47437912, -29073170,
+-1954210, 18064632, 20342576, 9911711, 258772, -1879048, -155693, 432718, -141197, -37581,
+459562, 310848, -67646, 66035, 318364, 149787, -82678, 21475, 147640, 0,
+-147103, -73551, -13422, -125091, -211527, -157303, -125091, -194347, -232465, -185220,
+-158377, -187368, -188442, -140660, -110059, -110059, -88047, -37581, -5906, },
{
294205,
-8901857, 28864864, 39342436, 13937706, -47083580, -111196168, -146788016, -153042576, -147262624, -134354624,
--107734424, -75171056, -61331596, -80488224, -123064232, -173706192, -227136128, -279479968, -318843328, -336521952,
--339959008, -344491808, -356248736, -370266432, -381413504, -389552448, -395492384, -398438208, -398182656, -395899872,
--391819136, -384272320, -371361664, -351976320, -325347008, -291679296, -253915248, -217424128, -186781680, -163319360,
--146260816, -135214160, -130368904, -130834368, -134310064, -138643696, -142857584, -146631792, -149753696, -152409600,
--155440768, -160096512, -167755520, -179548416, -195720048, -215495696, -237803216, -261634912, -285511712, -307542752,
--326749824, -343719264, -359359904, -373625120, -385901728, -395743104, -402390112, -404216000, -399577440, -388097536,
--370758208, -349199104, -325402816, -301640928, -279964768, -261452384, -245954528, -232490880, -219916288, -207399680,
--194486320, -180918512, -166608768, -151734208, -136620224, -121469192, -106369160, -91516088, -77255184, -63954212,
--51991652, -41852844, -34239480, -30183956, -30968862, -37641632, -50665044, -70217880, -96439736, -128817344,
--165670304, -205029920, -245914800, -288069376, -330800544, -373101120, -414799360, -456399872, -497562304, -536742048,
--572604480, -604822656, -633069568, -656218368, -673303232, -684666112, -691340480, -693680704, -691445184, -685094016,
--676069184, -665548672, -653697792, -640570752, -626994880, -613774464, -600480448, -585917824, -569544320, -551551616,
--531744320, -509446464, -484738048, -458893088, -433236576, -408261344, -384195040, -361766176, -341875648, -324845568,
--310456352, -298596320, -289516224, -283392128, -279850944, -278159264, -277859680, -278895296, -280965472, -283144096,
--284521184, -284876064, -284215168, -281956544, -277226176, -269789984, -260008736, -247893696, -232882784, -214655488,
--193558064, -169964208, -143662368, -114285320, -82115480, -47969952, -12283070, 25144886, 64223720, 104003704,
-143587744, 182995664, 222292480, 260444672, 296157856, 329288160, 360096512, 387627776, 410374464, 428013344,
-440756512, 447537728, 446730272, 438046400, 421747520, 396788928, 361954624, 317939776, 266154288, 206862800,
-140971568, 71972912, 3565360, -62324808, -122405496, -170344848, -201553696, -214717232, -204053904, -158424704,
--79753248, 1994476, 47517908, 45334452, 20262046, 2575907, -511101, 807454, 5906, -761283,
-128312, 577673, -195958, -460635, 197569, 360240, -182536, -265214, 192737, 229244,
--154619, -161061, 154082, 132070, -134218, -102542, 110059, 62814, -112206, -61203,
-74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, },
+8901857, 28864864, 39342436, 13937706, -47083580, -111196168, -146788016, -153042576, -147262624, -134354624,
+-107734424, -75171056, -61331596, -80488224, -123064232, -173706192, -227136128, -279479968, -318843328, -336521952,
+-339959008, -344491808, -356248736, -370266432, -381413504, -389552448, -395492384, -398438208, -398182656, -395899872,
+-391819136, -384272320, -371361664, -351976320, -325347008, -291679296, -253915248, -217424128, -186781680, -163319360,
+-146260816, -135214160, -130368904, -130834368, -134310064, -138643696, -142857584, -146631792, -149753696, -152409600,
+-155440768, -160096512, -167755520, -179548416, -195720048, -215495696, -237803216, -261634912, -285511712, -307542752,
+-326749824, -343719264, -359359904, -373625120, -385901728, -395743104, -402390112, -404216000, -399577440, -388097536,
+-370758208, -349199104, -325402816, -301640928, -279964768, -261452384, -245954528, -232490880, -219916288, -207399680,
+-194486320, -180918512, -166608768, -151734208, -136620224, -121469192, -106369160, -91516088, -77255184, -63954212,
+-51991652, -41852844, -34239480, -30183956, -30968862, -37641632, -50665044, -70217880, -96439736, -128817344,
+-165670304, -205029920, -245914800, -288069376, -330800544, -373101120, -414799360, -456399872, -497562304, -536742048,
+-572604480, -604822656, -633069568, -656218368, -673303232, -684666112, -691340480, -693680704, -691445184, -685094016,
+-676069184, -665548672, -653697792, -640570752, -626994880, -613774464, -600480448, -585917824, -569544320, -551551616,
+-531744320, -509446464, -484738048, -458893088, -433236576, -408261344, -384195040, -361766176, -341875648, -324845568,
+-310456352, -298596320, -289516224, -283392128, -279850944, -278159264, -277859680, -278895296, -280965472, -283144096,
+-284521184, -284876064, -284215168, -281956544, -277226176, -269789984, -260008736, -247893696, -232882784, -214655488,
+-193558064, -169964208, -143662368, -114285320, -82115480, -47969952, -12283070, 25144886, 64223720, 104003704,
+143587744, 182995664, 222292480, 260444672, 296157856, 329288160, 360096512, 387627776, 410374464, 428013344,
+440756512, 447537728, 446730272, 438046400, 421747520, 396788928, 361954624, 317939776, 266154288, 206862800,
+140971568, 71972912, 3565360, -62324808, -122405496, -170344848, -201553696, -214717232, -204053904, -158424704,
+-79753248, 1994476, 47517908, 45334452, 20262046, 2575907, -511101, 807454, 5906, -761283,
+128312, 577673, -195958, -460635, 197569, 360240, -182536, -265214, 192737, 229244,
+-154619, -161061, 154082, 132070, -134218, -102542, 110059, 62814, -112206, -61203,
+74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, },
},
};
-const Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][160] ={
+const Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160] ={
{
{
684059456,
-694721728, 718016512, 750012416, 767910656, 747670080, 709496384, 705104256, 728998208, 697888192, 576820544,
-472416352, 515254336, 682356480, 830409408, 889270848, 923931200, 1002047040, 1099221120, 1163028352, 1187355008,
-1180632832, 1122951936, 1004305600, 868427904, 776772224, 747962112, 758725312, 787148864, 832611072, 903697088,
-1003041280, 1119737728, 1229271680, 1305896064, 1339709312, 1339594368, 1320585344, 1291978240, 1255008768, 1207225088,
-1149855616, 1092223616, 1046323264, 1016832448, 999522624, 987748544, 975616832, 956979392, 928073728, 891554688,
-853911424, 819506048, 789585152, 764623872, 744581440, 728649792, 716380160, 706977920, 697330368, 683703488,
-664957056, 640836480, 608352064, 563857280, 507986176, 445618976, 382620384, 325117760, 279242144, 248119184,
-230435728, 223447824, 225212512, 233121696, 243301312, 252673456, 259749424, 263692736, 264762720, 264846480,
-265530448, 266880672, 269439392, 275141504, 284857248, 297565536, 312960832, 332009024, 354152800, 376782464,
-397825088, 416296672, 430680544, 439338112, 441985408, 438891424, 429955744, 416002464, 399061504, 380368736,
-360280096, 340298304, 322299712, 306000320, 290274304, 276203456, 265722112, 258674064, 254312528, 253796064,
-258285376, 266805520, 278343424, 293458464, 312182912, 333418304, 357347200, 385152256, 416348224, 449873120,
-486868896, 528649792, 573701312, 620366656, 669895744, 723237056, 777981760, 831667264, 884435264, 935750976,
-982277824, 1020765568, 1049322240, 1065305984, 1065594240, 1048380032, 1012002752, 954715904, 877888640, 785156544,
-677219712, 553643840, 419359520, 280817856, 137423392, -13232794, -166012304, -315872832, -467536704, -625439552,
--787549888, -961260928, -1156324352, -1334872064, -1404911232, -1314379776, -1130580864, -975823552, -905737728, },
+694721728, 718016512, 750012416, 767910656, 747670080, 709496384, 705104256, 728998208, 697888192, 576820544,
+472416352, 515254336, 682356480, 830409408, 889270848, 923931200, 1002047040, 1099221120, 1163028352, 1187355008,
+1180632832, 1122951936, 1004305600, 868427904, 776772224, 747962112, 758725312, 787148864, 832611072, 903697088,
+1003041280, 1119737728, 1229271680, 1305896064, 1339709312, 1339594368, 1320585344, 1291978240, 1255008768, 1207225088,
+1149855616, 1092223616, 1046323264, 1016832448, 999522624, 987748544, 975616832, 956979392, 928073728, 891554688,
+853911424, 819506048, 789585152, 764623872, 744581440, 728649792, 716380160, 706977920, 697330368, 683703488,
+664957056, 640836480, 608352064, 563857280, 507986176, 445618976, 382620384, 325117760, 279242144, 248119184,
+230435728, 223447824, 225212512, 233121696, 243301312, 252673456, 259749424, 263692736, 264762720, 264846480,
+265530448, 266880672, 269439392, 275141504, 284857248, 297565536, 312960832, 332009024, 354152800, 376782464,
+397825088, 416296672, 430680544, 439338112, 441985408, 438891424, 429955744, 416002464, 399061504, 380368736,
+360280096, 340298304, 322299712, 306000320, 290274304, 276203456, 265722112, 258674064, 254312528, 253796064,
+258285376, 266805520, 278343424, 293458464, 312182912, 333418304, 357347200, 385152256, 416348224, 449873120,
+486868896, 528649792, 573701312, 620366656, 669895744, 723237056, 777981760, 831667264, 884435264, 935750976,
+982277824, 1020765568, 1049322240, 1065305984, 1065594240, 1048380032, 1012002752, 954715904, 877888640, 785156544,
+677219712, 553643840, 419359520, 280817856, 137423392, -13232794, -166012304, -315872832, -467536704, -625439552,
+-787549888, -961260928, -1156324352, -1334872064, -1404911232, -1314379776, -1130580864, -975823552, -905737728, },
{
520912960,
-531102240, 467924352, 320982240, 180585120, 92974232, 10579578, -85890752, -130880536, -82408608, 4509179,
-51402704, 27641336, -74349104, -250800320, -441627328, -549956096, -544462784, -485270112, -426719488, -358819808,
--269153248, -193602096, -164174048, -157523296, -135770352, -98880344, -59730112, -2107755, 95477656, 215902640,
-320955392, 400663552, 471848864, 532545888, 550145024, 502925632, 411866432, 318845472, 245655488, 186183072,
-129242544, 72652056, 15991237, -45198088, -111775448, -175980912, -229606272, -271699616, -304252800, -325694880,
--333088672, -326895328, -309884032, -284240928, -252203696, -216574256, -178364624, -136178912, -89264456, -39213588,
-11601780, 60633664, 103889352, 136936448, 158239488, 169834816, 174414320, 173432928, 168196832, 160916848,
-153850560, 148247776, 144443504, 142192416, 140497504, 137513040, 131094216, 119749592, 103401872, 83398600,
-61611304, 39268884, 16295106, -8673686, -37701224, -72286448, -111843096, -153174096, -191540512, -222234496,
--241382000, -246264304, -235969792, -212026432, -178160080, -139403360, -101179768, -68139120, -42813844, -25296820,
--14304389, -8010114, -3761855, 1866700, 11986180, 28982976, 55339044, 93388160, 143304272, 202077136,
-264642992, 324739808, 374687040, 406500416, 414440736, 395797888, 349667776, 276952384, 181587456, 69872672,
--51570748, -175824688, -294516096, -398845152, -481722464, -537794304, -562765824, -554778752, -515776192, -450131904,
--362942464, -260368976, -149631296, -37082212, 72688024, 175570752, 267537264, 345687424, 407858688, 451339328,
-473669408, 474014080, 452224608, 408090080, 343312832, 262358608, 170016288, 70852464, -28055800, -118341384,
--195563824, -257014064, -292038976, -283843648, -229665328, -154733184, -96225520, -71824200, -69452304, },
+531102240, 467924352, 320982240, 180585120, 92974232, 10579578, -85890752, -130880536, -82408608, 4509179,
+51402704, 27641336, -74349104, -250800320, -441627328, -549956096, -544462784, -485270112, -426719488, -358819808,
+-269153248, -193602096, -164174048, -157523296, -135770352, -98880344, -59730112, -2107755, 95477656, 215902640,
+320955392, 400663552, 471848864, 532545888, 550145024, 502925632, 411866432, 318845472, 245655488, 186183072,
+129242544, 72652056, 15991237, -45198088, -111775448, -175980912, -229606272, -271699616, -304252800, -325694880,
+-333088672, -326895328, -309884032, -284240928, -252203696, -216574256, -178364624, -136178912, -89264456, -39213588,
+11601780, 60633664, 103889352, 136936448, 158239488, 169834816, 174414320, 173432928, 168196832, 160916848,
+153850560, 148247776, 144443504, 142192416, 140497504, 137513040, 131094216, 119749592, 103401872, 83398600,
+61611304, 39268884, 16295106, -8673686, -37701224, -72286448, -111843096, -153174096, -191540512, -222234496,
+-241382000, -246264304, -235969792, -212026432, -178160080, -139403360, -101179768, -68139120, -42813844, -25296820,
+-14304389, -8010114, -3761855, 1866700, 11986180, 28982976, 55339044, 93388160, 143304272, 202077136,
+264642992, 324739808, 374687040, 406500416, 414440736, 395797888, 349667776, 276952384, 181587456, 69872672,
+-51570748, -175824688, -294516096, -398845152, -481722464, -537794304, -562765824, -554778752, -515776192, -450131904,
+-362942464, -260368976, -149631296, -37082212, 72688024, 175570752, 267537264, 345687424, 407858688, 451339328,
+473669408, 474014080, 452224608, 408090080, 343312832, 262358608, 170016288, 70852464, -28055800, -118341384,
+-195563824, -257014064, -292038976, -283843648, -229665328, -154733184, -96225520, -71824200, -69452304, },
},
{
{
520912960,
-531102240, 467924352, 320982240, 180585120, 92974232, 10579578, -85890752, -130880536, -82408608, 4509179,
-51402704, 27641336, -74349104, -250800320, -441627328, -549956096, -544462784, -485270112, -426719488, -358819808,
--269153248, -193602096, -164174048, -157523296, -135770352, -98880344, -59730112, -2107755, 95477656, 215902640,
-320955392, 400663552, 471848864, 532545888, 550145024, 502925632, 411866432, 318845472, 245655488, 186183072,
-129242544, 72652056, 15991237, -45198088, -111775448, -175980912, -229606272, -271699616, -304252800, -325694880,
--333088672, -326895328, -309884032, -284240928, -252203696, -216574256, -178364624, -136178912, -89264456, -39213588,
-11601780, 60633664, 103889352, 136936448, 158239488, 169834816, 174414320, 173432928, 168196832, 160916848,
-153850560, 148247776, 144443504, 142192416, 140497504, 137513040, 131094216, 119749592, 103401872, 83398600,
-61611304, 39268884, 16295106, -8673686, -37701224, -72286448, -111843096, -153174096, -191540512, -222234496,
--241382000, -246264304, -235969792, -212026432, -178160080, -139403360, -101179768, -68139120, -42813844, -25296820,
--14304389, -8010114, -3761855, 1866700, 11986180, 28982976, 55339044, 93388160, 143304272, 202077136,
-264642992, 324739808, 374687040, 406500416, 414440736, 395797888, 349667776, 276952384, 181587456, 69872672,
--51570748, -175824688, -294516096, -398845152, -481722464, -537794304, -562765824, -554778752, -515776192, -450131904,
--362942464, -260368976, -149631296, -37082212, 72688024, 175570752, 267537264, 345687424, 407858688, 451339328,
-473669408, 474014080, 452224608, 408090080, 343312832, 262358608, 170016288, 70852464, -28055800, -118341384,
--195563824, -257014064, -292038976, -283843648, -229665328, -154733184, -96225520, -71824200, -69452304, },
+531102240, 467924352, 320982240, 180585120, 92974232, 10579578, -85890752, -130880536, -82408608, 4509179,
+51402704, 27641336, -74349104, -250800320, -441627328, -549956096, -544462784, -485270112, -426719488, -358819808,
+-269153248, -193602096, -164174048, -157523296, -135770352, -98880344, -59730112, -2107755, 95477656, 215902640,
+320955392, 400663552, 471848864, 532545888, 550145024, 502925632, 411866432, 318845472, 245655488, 186183072,
+129242544, 72652056, 15991237, -45198088, -111775448, -175980912, -229606272, -271699616, -304252800, -325694880,
+-333088672, -326895328, -309884032, -284240928, -252203696, -216574256, -178364624, -136178912, -89264456, -39213588,
+11601780, 60633664, 103889352, 136936448, 158239488, 169834816, 174414320, 173432928, 168196832, 160916848,
+153850560, 148247776, 144443504, 142192416, 140497504, 137513040, 131094216, 119749592, 103401872, 83398600,
+61611304, 39268884, 16295106, -8673686, -37701224, -72286448, -111843096, -153174096, -191540512, -222234496,
+-241382000, -246264304, -235969792, -212026432, -178160080, -139403360, -101179768, -68139120, -42813844, -25296820,
+-14304389, -8010114, -3761855, 1866700, 11986180, 28982976, 55339044, 93388160, 143304272, 202077136,
+264642992, 324739808, 374687040, 406500416, 414440736, 395797888, 349667776, 276952384, 181587456, 69872672,
+-51570748, -175824688, -294516096, -398845152, -481722464, -537794304, -562765824, -554778752, -515776192, -450131904,
+-362942464, -260368976, -149631296, -37082212, 72688024, 175570752, 267537264, 345687424, 407858688, 451339328,
+473669408, 474014080, 452224608, 408090080, 343312832, 262358608, 170016288, 70852464, -28055800, -118341384,
+-195563824, -257014064, -292038976, -283843648, -229665328, -154733184, -96225520, -71824200, -69452304, },
{
684059456,
-694721728, 718016512, 750012416, 767910656, 747670080, 709496384, 705104256, 728998208, 697888192, 576820544,
-472416352, 515254336, 682356480, 830409408, 889270848, 923931200, 1002047040, 1099221120, 1163028352, 1187355008,
-1180632832, 1122951936, 1004305600, 868427904, 776772224, 747962112, 758725312, 787148864, 832611072, 903697088,
-1003041280, 1119737728, 1229271680, 1305896064, 1339709312, 1339594368, 1320585344, 1291978240, 1255008768, 1207225088,
-1149855616, 1092223616, 1046323264, 1016832448, 999522624, 987748544, 975616832, 956979392, 928073728, 891554688,
-853911424, 819506048, 789585152, 764623872, 744581440, 728649792, 716380160, 706977920, 697330368, 683703488,
-664957056, 640836480, 608352064, 563857280, 507986176, 445618976, 382620384, 325117760, 279242144, 248119184,
-230435728, 223447824, 225212512, 233121696, 243301312, 252673456, 259749424, 263692736, 264762720, 264846480,
-265530448, 266880672, 269439392, 275141504, 284857248, 297565536, 312960832, 332009024, 354152800, 376782464,
-397825088, 416296672, 430680544, 439338112, 441985408, 438891424, 429955744, 416002464, 399061504, 380368736,
-360280096, 340298304, 322299712, 306000320, 290274304, 276203456, 265722112, 258674064, 254312528, 253796064,
-258285376, 266805520, 278343424, 293458464, 312182912, 333418304, 357347200, 385152256, 416348224, 449873120,
-486868896, 528649792, 573701312, 620366656, 669895744, 723237056, 777981760, 831667264, 884435264, 935750976,
-982277824, 1020765568, 1049322240, 1065305984, 1065594240, 1048380032, 1012002752, 954715904, 877888640, 785156544,
-677219712, 553643840, 419359520, 280817856, 137423392, -13232794, -166012304, -315872832, -467536704, -625439552,
--787549888, -961260928, -1156324352, -1334872064, -1404911232, -1314379776, -1130580864, -975823552, -905737728, },
+694721728, 718016512, 750012416, 767910656, 747670080, 709496384, 705104256, 728998208, 697888192, 576820544,
+472416352, 515254336, 682356480, 830409408, 889270848, 923931200, 1002047040, 1099221120, 1163028352, 1187355008,
+1180632832, 1122951936, 1004305600, 868427904, 776772224, 747962112, 758725312, 787148864, 832611072, 903697088,
+1003041280, 1119737728, 1229271680, 1305896064, 1339709312, 1339594368, 1320585344, 1291978240, 1255008768, 1207225088,
+1149855616, 1092223616, 1046323264, 1016832448, 999522624, 987748544, 975616832, 956979392, 928073728, 891554688,
+853911424, 819506048, 789585152, 764623872, 744581440, 728649792, 716380160, 706977920, 697330368, 683703488,
+664957056, 640836480, 608352064, 563857280, 507986176, 445618976, 382620384, 325117760, 279242144, 248119184,
+230435728, 223447824, 225212512, 233121696, 243301312, 252673456, 259749424, 263692736, 264762720, 264846480,
+265530448, 266880672, 269439392, 275141504, 284857248, 297565536, 312960832, 332009024, 354152800, 376782464,
+397825088, 416296672, 430680544, 439338112, 441985408, 438891424, 429955744, 416002464, 399061504, 380368736,
+360280096, 340298304, 322299712, 306000320, 290274304, 276203456, 265722112, 258674064, 254312528, 253796064,
+258285376, 266805520, 278343424, 293458464, 312182912, 333418304, 357347200, 385152256, 416348224, 449873120,
+486868896, 528649792, 573701312, 620366656, 669895744, 723237056, 777981760, 831667264, 884435264, 935750976,
+982277824, 1020765568, 1049322240, 1065305984, 1065594240, 1048380032, 1012002752, 954715904, 877888640, 785156544,
+677219712, 553643840, 419359520, 280817856, 137423392, -13232794, -166012304, -315872832, -467536704, -625439552,
+-787549888, -961260928, -1156324352, -1334872064, -1404911232, -1314379776, -1130580864, -975823552, -905737728, },
},
{
{
582648256,
-618615424, 650287040, 617266816, 521306496, 465274880, 522704512, 593792128, 513081632, 305120384, 197173888,
-329508288, 571484032, 701774592, 679660864, 644523712, 705061824, 827775488, 915653184, 916024704, 841901632,
-739491392, 654379072, 607986432, 595271744, 606680768, 644171520, 710656000, 795550912, 878273024, 937916736,
-958235136, 935579712, 884652160, 825393408, 762884992, 690409536, 611157760, 544286144, 507804736, 504527136,
-524668384, 553213824, 574627968, 579268160, 568484032, 550185280, 529262368, 504625376, 474049504, 438770624,
-403417696, 372625984, 347587424, 326120640, 306292384, 288215392, 271501536, 253786400, 233882976, 214194320,
-197859472, 185142624, 174220512, 164078496, 155379024, 149404736, 146674736, 146163648, 146315040, 147198192,
-150557392, 157327344, 166595344, 177253296, 188863664, 200782208, 212376464, 224147904, 236905568, 250129232,
-262673216, 274402240, 285852096, 297302464, 309112032, 321584608, 333871968, 344540672, 353230464, 359869952,
-362718592, 359478560, 349791264, 334681568, 314877472, 291924096, 269370144, 250531344, 236445472, 227508176,
-225077232, 230121120, 242381648, 261755712, 288561664, 322402272, 362865696, 410612832, 465521312, 525029152,
-586353216, 648246400, 708615360, 763308544, 809486464, 847227904, 876116416, 893722048, 899027904, 893719360,
-878729920, 852810880, 815213760, 766653248, 707359616, 636827136, 555341440, 464146368, 365206432, 261514656,
-155622768, 48023640, -60431800, -166176576, -266760960, -364360320, -460942880, -553809216, -641089344, -726464704,
--812489152, -895320320, -972042880, -1045741888, -1117278336, -1180764416, -1232809216, -1276032128, -1308899328, -1324840064,
--1324293632, -1308397952, -1254367232, -1122987392, -911265920, -682454208, -520263872, -454856352, -447431968, },
+618615424, 650287040, 617266816, 521306496, 465274880, 522704512, 593792128, 513081632, 305120384, 197173888,
+329508288, 571484032, 701774592, 679660864, 644523712, 705061824, 827775488, 915653184, 916024704, 841901632,
+739491392, 654379072, 607986432, 595271744, 606680768, 644171520, 710656000, 795550912, 878273024, 937916736,
+958235136, 935579712, 884652160, 825393408, 762884992, 690409536, 611157760, 544286144, 507804736, 504527136,
+524668384, 553213824, 574627968, 579268160, 568484032, 550185280, 529262368, 504625376, 474049504, 438770624,
+403417696, 372625984, 347587424, 326120640, 306292384, 288215392, 271501536, 253786400, 233882976, 214194320,
+197859472, 185142624, 174220512, 164078496, 155379024, 149404736, 146674736, 146163648, 146315040, 147198192,
+150557392, 157327344, 166595344, 177253296, 188863664, 200782208, 212376464, 224147904, 236905568, 250129232,
+262673216, 274402240, 285852096, 297302464, 309112032, 321584608, 333871968, 344540672, 353230464, 359869952,
+362718592, 359478560, 349791264, 334681568, 314877472, 291924096, 269370144, 250531344, 236445472, 227508176,
+225077232, 230121120, 242381648, 261755712, 288561664, 322402272, 362865696, 410612832, 465521312, 525029152,
+586353216, 648246400, 708615360, 763308544, 809486464, 847227904, 876116416, 893722048, 899027904, 893719360,
+878729920, 852810880, 815213760, 766653248, 707359616, 636827136, 555341440, 464146368, 365206432, 261514656,
+155622768, 48023640, -60431800, -166176576, -266760960, -364360320, -460942880, -553809216, -641089344, -726464704,
+-812489152, -895320320, -972042880, -1045741888, -1117278336, -1180764416, -1232809216, -1276032128, -1308899328, -1324840064,
+-1324293632, -1308397952, -1254367232, -1122987392, -911265920, -682454208, -520263872, -454856352, -447431968, },
{
582648256,
-618615424, 650287040, 617266816, 521306496, 465274880, 522704512, 593792128, 513081632, 305120384, 197173888,
-329508288, 571484032, 701774592, 679660864, 644523712, 705061824, 827775488, 915653184, 916024704, 841901632,
-739491392, 654379072, 607986432, 595271744, 606680768, 644171520, 710656000, 795550912, 878273024, 937916736,
-958235136, 935579712, 884652160, 825393408, 762884992, 690409536, 611157760, 544286144, 507804736, 504527136,
-524668384, 553213824, 574627968, 579268160, 568484032, 550185280, 529262368, 504625376, 474049504, 438770624,
-403417696, 372625984, 347587424, 326120640, 306292384, 288215392, 271501536, 253786400, 233882976, 214194320,
-197859472, 185142624, 174220512, 164078496, 155379024, 149404736, 146674736, 146163648, 146315040, 147198192,
-150557392, 157327344, 166595344, 177253296, 188863664, 200782208, 212376464, 224147904, 236905568, 250129232,
-262673216, 274402240, 285852096, 297302464, 309112032, 321584608, 333871968, 344540672, 353230464, 359869952,
-362718592, 359478560, 349791264, 334681568, 314877472, 291924096, 269370144, 250531344, 236445472, 227508176,
-225077232, 230121120, 242381648, 261755712, 288561664, 322402272, 362865696, 410612832, 465521312, 525029152,
-586353216, 648246400, 708615360, 763308544, 809486464, 847227904, 876116416, 893722048, 899027904, 893719360,
-878729920, 852810880, 815213760, 766653248, 707359616, 636827136, 555341440, 464146368, 365206432, 261514656,
-155622768, 48023640, -60431800, -166176576, -266760960, -364360320, -460942880, -553809216, -641089344, -726464704,
--812489152, -895320320, -972042880, -1045741888, -1117278336, -1180764416, -1232809216, -1276032128, -1308899328, -1324840064,
--1324293632, -1308397952, -1254367232, -1122987392, -911265920, -682454208, -520263872, -454856352, -447431968, },
+618615424, 650287040, 617266816, 521306496, 465274880, 522704512, 593792128, 513081632, 305120384, 197173888,
+329508288, 571484032, 701774592, 679660864, 644523712, 705061824, 827775488, 915653184, 916024704, 841901632,
+739491392, 654379072, 607986432, 595271744, 606680768, 644171520, 710656000, 795550912, 878273024, 937916736,
+958235136, 935579712, 884652160, 825393408, 762884992, 690409536, 611157760, 544286144, 507804736, 504527136,
+524668384, 553213824, 574627968, 579268160, 568484032, 550185280, 529262368, 504625376, 474049504, 438770624,
+403417696, 372625984, 347587424, 326120640, 306292384, 288215392, 271501536, 253786400, 233882976, 214194320,
+197859472, 185142624, 174220512, 164078496, 155379024, 149404736, 146674736, 146163648, 146315040, 147198192,
+150557392, 157327344, 166595344, 177253296, 188863664, 200782208, 212376464, 224147904, 236905568, 250129232,
+262673216, 274402240, 285852096, 297302464, 309112032, 321584608, 333871968, 344540672, 353230464, 359869952,
+362718592, 359478560, 349791264, 334681568, 314877472, 291924096, 269370144, 250531344, 236445472, 227508176,
+225077232, 230121120, 242381648, 261755712, 288561664, 322402272, 362865696, 410612832, 465521312, 525029152,
+586353216, 648246400, 708615360, 763308544, 809486464, 847227904, 876116416, 893722048, 899027904, 893719360,
+878729920, 852810880, 815213760, 766653248, 707359616, 636827136, 555341440, 464146368, 365206432, 261514656,
+155622768, 48023640, -60431800, -166176576, -266760960, -364360320, -460942880, -553809216, -641089344, -726464704,
+-812489152, -895320320, -972042880, -1045741888, -1117278336, -1180764416, -1232809216, -1276032128, -1308899328, -1324840064,
+-1324293632, -1308397952, -1254367232, -1122987392, -911265920, -682454208, -520263872, -454856352, -447431968, },
},
{
{
571035776,
-563686528, 583248000, 635546176, 695931264, 759681984, 828763840, 865687680, 835810304, 780023488, 766391296,
-783381632, 762498432, 694734592, 639146944, 620424128, 601497792, 561093440, 521875584, 493450944, 455055552,
-405524384, 373608480, 369716160, 374602752, 379026560, 390569280, 400235648, 384511776, 344146080, 306105536,
-285078976, 272291808, 261769136, 260373264, 270980224, 287966272, 310333408, 342275616, 380825088, 415834432,
-441104416, 456541600, 462682336, 461164064, 457771040, 459094432, 468284576, 486372832, 513534752, 546620480,
-579007232, 604470464, 618940736, 619525952, 605687552, 580972736, 550405952, 516585248, 480198816, 442552352,
-405156608, 368293440, 332101888, 298025088, 267901808, 242780000, 223397360, 210527488, 204188656, 203466016,
-207371760, 215130624, 225890576, 239159888, 255406672, 275569920, 300270816, 330058560, 365990272, 409284064,
-460427488, 518904512, 583795072, 654486976, 730567488, 810844160, 892802880, 973278784, 1048897600, 1115158144,
-1166228608, 1197377280, 1207286912, 1196761984, 1166163072, 1116097152, 1049787712, 972130944, 886425984, 794229120,
-698117376, 601780224, 506985984, 413070624, 320269792, 231436992, 149695184, 76461152, 12737799, -39661876,
--79682384, -108665896, -129199056, -142991280, -150659392, -152885808, -150864480, -145741120, -138163728, -128583264,
--117925304, -107590544, -98434208, -90017144, -81393392, -72254768, -62612032, -51864416, -39275864, -25141664,
--10588168, 3440269, 16223702, 26762478, 33942052, 36804648, 34439732, 26286810, 12356084, -7755101,
--35396972, -71133784, -113634632, -161730208, -215634736, -274280896, -334196768, -393189760, -451771488, -509486752,
--565356736, -622273664, -679333376, -715514688, -697926272, -620863296, -524469728, -457446752, -431498720, },
+563686528, 583248000, 635546176, 695931264, 759681984, 828763840, 865687680, 835810304, 780023488, 766391296,
+783381632, 762498432, 694734592, 639146944, 620424128, 601497792, 561093440, 521875584, 493450944, 455055552,
+405524384, 373608480, 369716160, 374602752, 379026560, 390569280, 400235648, 384511776, 344146080, 306105536,
+285078976, 272291808, 261769136, 260373264, 270980224, 287966272, 310333408, 342275616, 380825088, 415834432,
+441104416, 456541600, 462682336, 461164064, 457771040, 459094432, 468284576, 486372832, 513534752, 546620480,
+579007232, 604470464, 618940736, 619525952, 605687552, 580972736, 550405952, 516585248, 480198816, 442552352,
+405156608, 368293440, 332101888, 298025088, 267901808, 242780000, 223397360, 210527488, 204188656, 203466016,
+207371760, 215130624, 225890576, 239159888, 255406672, 275569920, 300270816, 330058560, 365990272, 409284064,
+460427488, 518904512, 583795072, 654486976, 730567488, 810844160, 892802880, 973278784, 1048897600, 1115158144,
+1166228608, 1197377280, 1207286912, 1196761984, 1166163072, 1116097152, 1049787712, 972130944, 886425984, 794229120,
+698117376, 601780224, 506985984, 413070624, 320269792, 231436992, 149695184, 76461152, 12737799, -39661876,
+-79682384, -108665896, -129199056, -142991280, -150659392, -152885808, -150864480, -145741120, -138163728, -128583264,
+-117925304, -107590544, -98434208, -90017144, -81393392, -72254768, -62612032, -51864416, -39275864, -25141664,
+-10588168, 3440269, 16223702, 26762478, 33942052, 36804648, 34439732, 26286810, 12356084, -7755101,
+-35396972, -71133784, -113634632, -161730208, -215634736, -274280896, -334196768, -393189760, -451771488, -509486752,
+-565356736, -622273664, -679333376, -715514688, -697926272, -620863296, -524469728, -457446752, -431498720, },
{
474638432,
-398825280, 259863776, 101473968, -25419228, -112263464, -185079808, -246839280, -268340432, -242517472, -205177024,
--186384400, -177214112, -161623376, -147037664, -139704016, -115777824, -44282188, 72674608, 199522176, 297173088,
-342699200, 332420800, 279936832, 206128368, 123990336, 37653980, -43978316, -104869680, -137476000, -150506928,
--156300304, -158835936, -157595232, -153728688, -146304304, -128659504, -94315336, -44016436, 14989436, 72971496,
-119576720, 146105664, 149362320, 132602280, 102576168, 67084704, 34205656, 10243497, -3070365, -8367670,
--9587978, -9785546, -10883447, -13646185, -17576080, -21606906, -25021406, -27657442, -29865056, -32603096,
--37036040, -43650288, -51892332, -60308320, -66331476, -66204236, -56226492, -34737696, -3041374, 35050692,
-74097848, 108104864, 132063264, 143228576, 141143360, 126728376, 101452496, 66897872, 24663850, -23181550,
--73234024, -120335320, -158156272, -180484192, -182774480, -163660272, -125737312, -74950400, -18869938, 35067336,
-80717464, 113876224, 132494376, 136477952, 127284576, 107568528, 80806048, 50812148, 21297670, -4530117,
--24456618, -37682432, -44767516, -47110960, -46420008, -44366476, -42283952, -40926744, -40478456, -40700720,
--40956272, -40189620, -37089728, -30430918, -19414326, -4001836, 14828911, 35151088, 54514948, 70483096,
-81056232, 84978072, 81845968, 71956272, 56072944, 35316980, 11116986, -14876156, -40789304, -64449744,
--83484504, -95661272, -99224480, -93182536, -77692736, -54348516, -25981330, 3897683, 31652298, 54102628,
-69217160, 76438608, 76350024, 70198016, 59703268, 46730856, 32668058, 18297098, 4329327, -8508867,
--20058034, -30340186, -37857988, -39406860, -33274722, -22494892, -13228499, -9212168, -8891656, },
+398825280, 259863776, 101473968, -25419228, -112263464, -185079808, -246839280, -268340432, -242517472, -205177024,
+-186384400, -177214112, -161623376, -147037664, -139704016, -115777824, -44282188, 72674608, 199522176, 297173088,
+342699200, 332420800, 279936832, 206128368, 123990336, 37653980, -43978316, -104869680, -137476000, -150506928,
+-156300304, -158835936, -157595232, -153728688, -146304304, -128659504, -94315336, -44016436, 14989436, 72971496,
+119576720, 146105664, 149362320, 132602280, 102576168, 67084704, 34205656, 10243497, -3070365, -8367670,
+-9587978, -9785546, -10883447, -13646185, -17576080, -21606906, -25021406, -27657442, -29865056, -32603096,
+-37036040, -43650288, -51892332, -60308320, -66331476, -66204236, -56226492, -34737696, -3041374, 35050692,
+74097848, 108104864, 132063264, 143228576, 141143360, 126728376, 101452496, 66897872, 24663850, -23181550,
+-73234024, -120335320, -158156272, -180484192, -182774480, -163660272, -125737312, -74950400, -18869938, 35067336,
+80717464, 113876224, 132494376, 136477952, 127284576, 107568528, 80806048, 50812148, 21297670, -4530117,
+-24456618, -37682432, -44767516, -47110960, -46420008, -44366476, -42283952, -40926744, -40478456, -40700720,
+-40956272, -40189620, -37089728, -30430918, -19414326, -4001836, 14828911, 35151088, 54514948, 70483096,
+81056232, 84978072, 81845968, 71956272, 56072944, 35316980, 11116986, -14876156, -40789304, -64449744,
+-83484504, -95661272, -99224480, -93182536, -77692736, -54348516, -25981330, 3897683, 31652298, 54102628,
+69217160, 76438608, 76350024, 70198016, 59703268, 46730856, 32668058, 18297098, 4329327, -8508867,
+-20058034, -30340186, -37857988, -39406860, -33274722, -22494892, -13228499, -9212168, -8891656, },
},
{
{
474638432,
-398825280, 259863776, 101473968, -25419228, -112263464, -185079808, -246839280, -268340432, -242517472, -205177024,
--186384400, -177214112, -161623376, -147037664, -139704016, -115777824, -44282188, 72674608, 199522176, 297173088,
-342699200, 332420800, 279936832, 206128368, 123990336, 37653980, -43978316, -104869680, -137476000, -150506928,
--156300304, -158835936, -157595232, -153728688, -146304304, -128659504, -94315336, -44016436, 14989436, 72971496,
-119576720, 146105664, 149362320, 132602280, 102576168, 67084704, 34205656, 10243497, -3070365, -8367670,
--9587978, -9785546, -10883447, -13646185, -17576080, -21606906, -25021406, -27657442, -29865056, -32603096,
--37036040, -43650288, -51892332, -60308320, -66331476, -66204236, -56226492, -34737696, -3041374, 35050692,
-74097848, 108104864, 132063264, 143228576, 141143360, 126728376, 101452496, 66897872, 24663850, -23181550,
--73234024, -120335320, -158156272, -180484192, -182774480, -163660272, -125737312, -74950400, -18869938, 35067336,
-80717464, 113876224, 132494376, 136477952, 127284576, 107568528, 80806048, 50812148, 21297670, -4530117,
--24456618, -37682432, -44767516, -47110960, -46420008, -44366476, -42283952, -40926744, -40478456, -40700720,
--40956272, -40189620, -37089728, -30430918, -19414326, -4001836, 14828911, 35151088, 54514948, 70483096,
-81056232, 84978072, 81845968, 71956272, 56072944, 35316980, 11116986, -14876156, -40789304, -64449744,
--83484504, -95661272, -99224480, -93182536, -77692736, -54348516, -25981330, 3897683, 31652298, 54102628,
-69217160, 76438608, 76350024, 70198016, 59703268, 46730856, 32668058, 18297098, 4329327, -8508867,
--20058034, -30340186, -37857988, -39406860, -33274722, -22494892, -13228499, -9212168, -8891656, },
+398825280, 259863776, 101473968, -25419228, -112263464, -185079808, -246839280, -268340432, -242517472, -205177024,
+-186384400, -177214112, -161623376, -147037664, -139704016, -115777824, -44282188, 72674608, 199522176, 297173088,
+342699200, 332420800, 279936832, 206128368, 123990336, 37653980, -43978316, -104869680, -137476000, -150506928,
+-156300304, -158835936, -157595232, -153728688, -146304304, -128659504, -94315336, -44016436, 14989436, 72971496,
+119576720, 146105664, 149362320, 132602280, 102576168, 67084704, 34205656, 10243497, -3070365, -8367670,
+-9587978, -9785546, -10883447, -13646185, -17576080, -21606906, -25021406, -27657442, -29865056, -32603096,
+-37036040, -43650288, -51892332, -60308320, -66331476, -66204236, -56226492, -34737696, -3041374, 35050692,
+74097848, 108104864, 132063264, 143228576, 141143360, 126728376, 101452496, 66897872, 24663850, -23181550,
+-73234024, -120335320, -158156272, -180484192, -182774480, -163660272, -125737312, -74950400, -18869938, 35067336,
+80717464, 113876224, 132494376, 136477952, 127284576, 107568528, 80806048, 50812148, 21297670, -4530117,
+-24456618, -37682432, -44767516, -47110960, -46420008, -44366476, -42283952, -40926744, -40478456, -40700720,
+-40956272, -40189620, -37089728, -30430918, -19414326, -4001836, 14828911, 35151088, 54514948, 70483096,
+81056232, 84978072, 81845968, 71956272, 56072944, 35316980, 11116986, -14876156, -40789304, -64449744,
+-83484504, -95661272, -99224480, -93182536, -77692736, -54348516, -25981330, 3897683, 31652298, 54102628,
+69217160, 76438608, 76350024, 70198016, 59703268, 46730856, 32668058, 18297098, 4329327, -8508867,
+-20058034, -30340186, -37857988, -39406860, -33274722, -22494892, -13228499, -9212168, -8891656, },
{
571035776,
-563686528, 583248000, 635546176, 695931264, 759681984, 828763840, 865687680, 835810304, 780023488, 766391296,
-783381632, 762498432, 694734592, 639146944, 620424128, 601497792, 561093440, 521875584, 493450944, 455055552,
-405524384, 373608480, 369716160, 374602752, 379026560, 390569280, 400235648, 384511776, 344146080, 306105536,
-285078976, 272291808, 261769136, 260373264, 270980224, 287966272, 310333408, 342275616, 380825088, 415834432,
-441104416, 456541600, 462682336, 461164064, 457771040, 459094432, 468284576, 486372832, 513534752, 546620480,
-579007232, 604470464, 618940736, 619525952, 605687552, 580972736, 550405952, 516585248, 480198816, 442552352,
-405156608, 368293440, 332101888, 298025088, 267901808, 242780000, 223397360, 210527488, 204188656, 203466016,
-207371760, 215130624, 225890576, 239159888, 255406672, 275569920, 300270816, 330058560, 365990272, 409284064,
-460427488, 518904512, 583795072, 654486976, 730567488, 810844160, 892802880, 973278784, 1048897600, 1115158144,
-1166228608, 1197377280, 1207286912, 1196761984, 1166163072, 1116097152, 1049787712, 972130944, 886425984, 794229120,
-698117376, 601780224, 506985984, 413070624, 320269792, 231436992, 149695184, 76461152, 12737799, -39661876,
--79682384, -108665896, -129199056, -142991280, -150659392, -152885808, -150864480, -145741120, -138163728, -128583264,
--117925304, -107590544, -98434208, -90017144, -81393392, -72254768, -62612032, -51864416, -39275864, -25141664,
--10588168, 3440269, 16223702, 26762478, 33942052, 36804648, 34439732, 26286810, 12356084, -7755101,
--35396972, -71133784, -113634632, -161730208, -215634736, -274280896, -334196768, -393189760, -451771488, -509486752,
--565356736, -622273664, -679333376, -715514688, -697926272, -620863296, -524469728, -457446752, -431498720, },
+563686528, 583248000, 635546176, 695931264, 759681984, 828763840, 865687680, 835810304, 780023488, 766391296,
+783381632, 762498432, 694734592, 639146944, 620424128, 601497792, 561093440, 521875584, 493450944, 455055552,
+405524384, 373608480, 369716160, 374602752, 379026560, 390569280, 400235648, 384511776, 344146080, 306105536,
+285078976, 272291808, 261769136, 260373264, 270980224, 287966272, 310333408, 342275616, 380825088, 415834432,
+441104416, 456541600, 462682336, 461164064, 457771040, 459094432, 468284576, 486372832, 513534752, 546620480,
+579007232, 604470464, 618940736, 619525952, 605687552, 580972736, 550405952, 516585248, 480198816, 442552352,
+405156608, 368293440, 332101888, 298025088, 267901808, 242780000, 223397360, 210527488, 204188656, 203466016,
+207371760, 215130624, 225890576, 239159888, 255406672, 275569920, 300270816, 330058560, 365990272, 409284064,
+460427488, 518904512, 583795072, 654486976, 730567488, 810844160, 892802880, 973278784, 1048897600, 1115158144,
+1166228608, 1197377280, 1207286912, 1196761984, 1166163072, 1116097152, 1049787712, 972130944, 886425984, 794229120,
+698117376, 601780224, 506985984, 413070624, 320269792, 231436992, 149695184, 76461152, 12737799, -39661876,
+-79682384, -108665896, -129199056, -142991280, -150659392, -152885808, -150864480, -145741120, -138163728, -128583264,
+-117925304, -107590544, -98434208, -90017144, -81393392, -72254768, -62612032, -51864416, -39275864, -25141664,
+-10588168, 3440269, 16223702, 26762478, 33942052, 36804648, 34439732, 26286810, 12356084, -7755101,
+-35396972, -71133784, -113634632, -161730208, -215634736, -274280896, -334196768, -393189760, -451771488, -509486752,
+-565356736, -622273664, -679333376, -715514688, -697926272, -620863296, -524469728, -457446752, -431498720, },
},
{
{
623941184,
-612998144, 633148480, 704733824, 794866944, 861142528, 896738688, 910201280, 889980544, 827751360, 758994304,
-731771712, 737631104, 721934592, 668889600, 625876032, 626539072, 639323072, 621788864, 584434432, 563421312,
-560838464, 552077248, 532985568, 521658688, 522892416, 522615904, 514515616, 508313152, 512267744, 524103584,
-538168000, 549766016, 554565632, 552645760, 551173184, 557714944, 573819456, 597628032, 627579008, 660887552,
-693373056, 723139328, 750719488, 775102528, 793649280, 806071936, 814991488, 822795456, 830553792, 838920384,
-847593024, 854729600, 858321856, 857120320, 850050240, 836670336, 818138112, 795719488, 768999936, 737601600,
-703336320, 668304960, 632402240, 595015104, 557364352, 520866240, 485103680, 449674496, 416376672, 387787232,
-365310048, 349864288, 342665920, 344173984, 353679296, 370430176, 393913984, 423238432, 457707136, 497588608,
-542988032, 592780672, 646010304, 703274560, 765267584, 830945152, 898450240, 966795520, 1035161728, 1101150208,
-1160982784, 1211281152, 1249836032, 1274607744, 1282854656, 1272239104, 1242800384, 1196652544, 1135342976, 1059082048,
-969406848, 870422912, 765710016, 656083648, 542472640, 428773568, 319327072, 215629376, 118305944, 30366492,
--44544180, -105779136, -154947392, -192818800, -219386400, -236027776, -245397248, -249499488, -249133344, -244873808,
--237816640, -229477952, -221075920, -212865552, -204624592, -196717552, -189617440, -182404032, -173244480, -161499360,
--147937472, -133030168, -116715736, -99729680, -83664352, -69962872, -59843388, -54524072, -54907936, -62049928,
--77787760, -103346576, -138120784, -181814560, -235942416, -300696032, -373188640, -451458496, -535952320, -624968768,
--715645696, -809665728, -902200832, -960130816, -936017280, -824557504, -686992384, -594167936, -560223744, },
+612998144, 633148480, 704733824, 794866944, 861142528, 896738688, 910201280, 889980544, 827751360, 758994304,
+731771712, 737631104, 721934592, 668889600, 625876032, 626539072, 639323072, 621788864, 584434432, 563421312,
+560838464, 552077248, 532985568, 521658688, 522892416, 522615904, 514515616, 508313152, 512267744, 524103584,
+538168000, 549766016, 554565632, 552645760, 551173184, 557714944, 573819456, 597628032, 627579008, 660887552,
+693373056, 723139328, 750719488, 775102528, 793649280, 806071936, 814991488, 822795456, 830553792, 838920384,
+847593024, 854729600, 858321856, 857120320, 850050240, 836670336, 818138112, 795719488, 768999936, 737601600,
+703336320, 668304960, 632402240, 595015104, 557364352, 520866240, 485103680, 449674496, 416376672, 387787232,
+365310048, 349864288, 342665920, 344173984, 353679296, 370430176, 393913984, 423238432, 457707136, 497588608,
+542988032, 592780672, 646010304, 703274560, 765267584, 830945152, 898450240, 966795520, 1035161728, 1101150208,
+1160982784, 1211281152, 1249836032, 1274607744, 1282854656, 1272239104, 1242800384, 1196652544, 1135342976, 1059082048,
+969406848, 870422912, 765710016, 656083648, 542472640, 428773568, 319327072, 215629376, 118305944, 30366492,
+-44544180, -105779136, -154947392, -192818800, -219386400, -236027776, -245397248, -249499488, -249133344, -244873808,
+-237816640, -229477952, -221075920, -212865552, -204624592, -196717552, -189617440, -182404032, -173244480, -161499360,
+-147937472, -133030168, -116715736, -99729680, -83664352, -69962872, -59843388, -54524072, -54907936, -62049928,
+-77787760, -103346576, -138120784, -181814560, -235942416, -300696032, -373188640, -451458496, -535952320, -624968768,
+-715645696, -809665728, -902200832, -960130816, -936017280, -824557504, -686992384, -594167936, -560223744, },
{
486183840,
-364385568, 167209520, -39768712, -210128592, -331406656, -400604480, -397778400, -302930496, -136568688, 38147364,
-162939248, 224068976, 241337968, 232082848, 197511056, 137470096, 64096480, -4810900, -61295624, -109430936,
--150863408, -174515264, -166983504, -129842232, -78434696, -24713242, 29495152, 81629072, 121392416, 139304576,
-135256576, 114458192, 80654656, 37199784, -9960566, -54069344, -89433032, -110358112, -112567336, -97620312,
--72567768, -43685188, -13019120, 18754512, 49414136, 75770736, 94334664, 100924752, 92163552, 68307696,
-33571612, -5944235, -43534324, -72472744, -87923888, -88904216, -77820512, -58528056, -35112432, -11116449,
-11539503, 32719598, 52619256, 70294120, 83450144, 88791472, 82500952, 61509836, 25424596, -22104050,
--73134704, -116317376, -139488192, -133975064, -98616744, -40982576, 24864640, 82965344, 120606440, 131869992,
-117995096, 85065584, 41168872, -5516886, -47687560, -79339320, -95991984, -95263984, -77884400, -48157320,
--12965433, 20242718, 45358076, 58874336, 60375428, 52083456, 37647000, 20866562, 4893579, -8170639,
--17400524, -22834730, -25062208, -24886114, -23104240, -20279762, -16602733, -11973832, -6195491, 849867,
-8949101, 17289928, 24459302, 28824600, 29047400, 24502788, 15560130, 3646964, -9041980, -20107426,
--27507654, -29998200, -27412092, -20667382, -11401528, -1435056, 7650948, 14740328, 19257560, 21090436,
-20409684, 17514340, 12801687, 6782827, 71941, -6625524, -12513924, -16778826, -18755048, -18087182,
--14814416, -9395241, -2698850, 4130685, 9968619, 13988708, 15758235, 15228880, 12757127, 9001715,
-4598836, -22012, -4278325, -7080254, -7436736, -5652714, -3403225, -2173790, -1954747, },
+364385568, 167209520, -39768712, -210128592, -331406656, -400604480, -397778400, -302930496, -136568688, 38147364,
+162939248, 224068976, 241337968, 232082848, 197511056, 137470096, 64096480, -4810900, -61295624, -109430936,
+-150863408, -174515264, -166983504, -129842232, -78434696, -24713242, 29495152, 81629072, 121392416, 139304576,
+135256576, 114458192, 80654656, 37199784, -9960566, -54069344, -89433032, -110358112, -112567336, -97620312,
+-72567768, -43685188, -13019120, 18754512, 49414136, 75770736, 94334664, 100924752, 92163552, 68307696,
+33571612, -5944235, -43534324, -72472744, -87923888, -88904216, -77820512, -58528056, -35112432, -11116449,
+11539503, 32719598, 52619256, 70294120, 83450144, 88791472, 82500952, 61509836, 25424596, -22104050,
+-73134704, -116317376, -139488192, -133975064, -98616744, -40982576, 24864640, 82965344, 120606440, 131869992,
+117995096, 85065584, 41168872, -5516886, -47687560, -79339320, -95991984, -95263984, -77884400, -48157320,
+-12965433, 20242718, 45358076, 58874336, 60375428, 52083456, 37647000, 20866562, 4893579, -8170639,
+-17400524, -22834730, -25062208, -24886114, -23104240, -20279762, -16602733, -11973832, -6195491, 849867,
+8949101, 17289928, 24459302, 28824600, 29047400, 24502788, 15560130, 3646964, -9041980, -20107426,
+-27507654, -29998200, -27412092, -20667382, -11401528, -1435056, 7650948, 14740328, 19257560, 21090436,
+20409684, 17514340, 12801687, 6782827, 71941, -6625524, -12513924, -16778826, -18755048, -18087182,
+-14814416, -9395241, -2698850, 4130685, 9968619, 13988708, 15758235, 15228880, 12757127, 9001715,
+4598836, -22012, -4278325, -7080254, -7436736, -5652714, -3403225, -2173790, -1954747, },
},
{
{
486183840,
-364385568, 167209520, -39768712, -210128592, -331406656, -400604480, -397778400, -302930496, -136568688, 38147364,
-162939248, 224068976, 241337968, 232082848, 197511056, 137470096, 64096480, -4810900, -61295624, -109430936,
--150863408, -174515264, -166983504, -129842232, -78434696, -24713242, 29495152, 81629072, 121392416, 139304576,
-135256576, 114458192, 80654656, 37199784, -9960566, -54069344, -89433032, -110358112, -112567336, -97620312,
--72567768, -43685188, -13019120, 18754512, 49414136, 75770736, 94334664, 100924752, 92163552, 68307696,
-33571612, -5944235, -43534324, -72472744, -87923888, -88904216, -77820512, -58528056, -35112432, -11116449,
-11539503, 32719598, 52619256, 70294120, 83450144, 88791472, 82500952, 61509836, 25424596, -22104050,
--73134704, -116317376, -139488192, -133975064, -98616744, -40982576, 24864640, 82965344, 120606440, 131869992,
-117995096, 85065584, 41168872, -5516886, -47687560, -79339320, -95991984, -95263984, -77884400, -48157320,
--12965433, 20242718, 45358076, 58874336, 60375428, 52083456, 37647000, 20866562, 4893579, -8170639,
--17400524, -22834730, -25062208, -24886114, -23104240, -20279762, -16602733, -11973832, -6195491, 849867,
-8949101, 17289928, 24459302, 28824600, 29047400, 24502788, 15560130, 3646964, -9041980, -20107426,
--27507654, -29998200, -27412092, -20667382, -11401528, -1435056, 7650948, 14740328, 19257560, 21090436,
-20409684, 17514340, 12801687, 6782827, 71941, -6625524, -12513924, -16778826, -18755048, -18087182,
--14814416, -9395241, -2698850, 4130685, 9968619, 13988708, 15758235, 15228880, 12757127, 9001715,
-4598836, -22012, -4278325, -7080254, -7436736, -5652714, -3403225, -2173790, -1954747, },
+364385568, 167209520, -39768712, -210128592, -331406656, -400604480, -397778400, -302930496, -136568688, 38147364,
+162939248, 224068976, 241337968, 232082848, 197511056, 137470096, 64096480, -4810900, -61295624, -109430936,
+-150863408, -174515264, -166983504, -129842232, -78434696, -24713242, 29495152, 81629072, 121392416, 139304576,
+135256576, 114458192, 80654656, 37199784, -9960566, -54069344, -89433032, -110358112, -112567336, -97620312,
+-72567768, -43685188, -13019120, 18754512, 49414136, 75770736, 94334664, 100924752, 92163552, 68307696,
+33571612, -5944235, -43534324, -72472744, -87923888, -88904216, -77820512, -58528056, -35112432, -11116449,
+11539503, 32719598, 52619256, 70294120, 83450144, 88791472, 82500952, 61509836, 25424596, -22104050,
+-73134704, -116317376, -139488192, -133975064, -98616744, -40982576, 24864640, 82965344, 120606440, 131869992,
+117995096, 85065584, 41168872, -5516886, -47687560, -79339320, -95991984, -95263984, -77884400, -48157320,
+-12965433, 20242718, 45358076, 58874336, 60375428, 52083456, 37647000, 20866562, 4893579, -8170639,
+-17400524, -22834730, -25062208, -24886114, -23104240, -20279762, -16602733, -11973832, -6195491, 849867,
+8949101, 17289928, 24459302, 28824600, 29047400, 24502788, 15560130, 3646964, -9041980, -20107426,
+-27507654, -29998200, -27412092, -20667382, -11401528, -1435056, 7650948, 14740328, 19257560, 21090436,
+20409684, 17514340, 12801687, 6782827, 71941, -6625524, -12513924, -16778826, -18755048, -18087182,
+-14814416, -9395241, -2698850, 4130685, 9968619, 13988708, 15758235, 15228880, 12757127, 9001715,
+4598836, -22012, -4278325, -7080254, -7436736, -5652714, -3403225, -2173790, -1954747, },
{
623941184,
-612998144, 633148480, 704733824, 794866944, 861142528, 896738688, 910201280, 889980544, 827751360, 758994304,
-731771712, 737631104, 721934592, 668889600, 625876032, 626539072, 639323072, 621788864, 584434432, 563421312,
-560838464, 552077248, 532985568, 521658688, 522892416, 522615904, 514515616, 508313152, 512267744, 524103584,
-538168000, 549766016, 554565632, 552645760, 551173184, 557714944, 573819456, 597628032, 627579008, 660887552,
-693373056, 723139328, 750719488, 775102528, 793649280, 806071936, 814991488, 822795456, 830553792, 838920384,
-847593024, 854729600, 858321856, 857120320, 850050240, 836670336, 818138112, 795719488, 768999936, 737601600,
-703336320, 668304960, 632402240, 595015104, 557364352, 520866240, 485103680, 449674496, 416376672, 387787232,
-365310048, 349864288, 342665920, 344173984, 353679296, 370430176, 393913984, 423238432, 457707136, 497588608,
-542988032, 592780672, 646010304, 703274560, 765267584, 830945152, 898450240, 966795520, 1035161728, 1101150208,
-1160982784, 1211281152, 1249836032, 1274607744, 1282854656, 1272239104, 1242800384, 1196652544, 1135342976, 1059082048,
-969406848, 870422912, 765710016, 656083648, 542472640, 428773568, 319327072, 215629376, 118305944, 30366492,
--44544180, -105779136, -154947392, -192818800, -219386400, -236027776, -245397248, -249499488, -249133344, -244873808,
--237816640, -229477952, -221075920, -212865552, -204624592, -196717552, -189617440, -182404032, -173244480, -161499360,
--147937472, -133030168, -116715736, -99729680, -83664352, -69962872, -59843388, -54524072, -54907936, -62049928,
--77787760, -103346576, -138120784, -181814560, -235942416, -300696032, -373188640, -451458496, -535952320, -624968768,
--715645696, -809665728, -902200832, -960130816, -936017280, -824557504, -686992384, -594167936, -560223744, },
+612998144, 633148480, 704733824, 794866944, 861142528, 896738688, 910201280, 889980544, 827751360, 758994304,
+731771712, 737631104, 721934592, 668889600, 625876032, 626539072, 639323072, 621788864, 584434432, 563421312,
+560838464, 552077248, 532985568, 521658688, 522892416, 522615904, 514515616, 508313152, 512267744, 524103584,
+538168000, 549766016, 554565632, 552645760, 551173184, 557714944, 573819456, 597628032, 627579008, 660887552,
+693373056, 723139328, 750719488, 775102528, 793649280, 806071936, 814991488, 822795456, 830553792, 838920384,
+847593024, 854729600, 858321856, 857120320, 850050240, 836670336, 818138112, 795719488, 768999936, 737601600,
+703336320, 668304960, 632402240, 595015104, 557364352, 520866240, 485103680, 449674496, 416376672, 387787232,
+365310048, 349864288, 342665920, 344173984, 353679296, 370430176, 393913984, 423238432, 457707136, 497588608,
+542988032, 592780672, 646010304, 703274560, 765267584, 830945152, 898450240, 966795520, 1035161728, 1101150208,
+1160982784, 1211281152, 1249836032, 1274607744, 1282854656, 1272239104, 1242800384, 1196652544, 1135342976, 1059082048,
+969406848, 870422912, 765710016, 656083648, 542472640, 428773568, 319327072, 215629376, 118305944, 30366492,
+-44544180, -105779136, -154947392, -192818800, -219386400, -236027776, -245397248, -249499488, -249133344, -244873808,
+-237816640, -229477952, -221075920, -212865552, -204624592, -196717552, -189617440, -182404032, -173244480, -161499360,
+-147937472, -133030168, -116715736, -99729680, -83664352, -69962872, -59843388, -54524072, -54907936, -62049928,
+-77787760, -103346576, -138120784, -181814560, -235942416, -300696032, -373188640, -451458496, -535952320, -624968768,
+-715645696, -809665728, -902200832, -960130816, -936017280, -824557504, -686992384, -594167936, -560223744, },
},
{
{
622567296,
-640857984, 664247808, 709125376, 798487040, 894723840, 925620224, 886355648, 844520512, 828989888, 790468352,
-702073600, 623767744, 617457408, 657030656, 679072448, 678107136, 691429632, 720630016, 731288512, 718183488,
-714545088, 734450688, 749665088, 732673088, 691860736, 654373184, 635630464, 633599488, 637711360, 637620672,
-633773440, 641577920, 675981120, 731671296, 787074240, 827028672, 852819968, 871151424, 883716928, 890245760,
-894228864, 901254848, 914564992, 934020096, 957390080, 981779584, 1005063168, 1025992512, 1042441728, 1050861440,
-1048723648, 1036472768, 1016223104, 989953984, 960034176, 929936128, 902642688, 878713792, 856679040, 834564736,
-810120512, 780202816, 741334976, 691475776, 631171776, 563095424, 490937856, 418955808, 351882368, 293955072,
-247446480, 212663696, 189638912, 178975584, 180624848, 192862816, 213411024, 241024976, 275355712, 315903968,
-361771552, 411923872, 465059072, 519434944, 573097344, 624263296, 671999168, 717108160, 761738240, 807277760,
-853147456, 898196288, 941872896, 982590784, 1016185536, 1037911040, 1045184064, 1036654272, 1009752192, 961772032,
-893178176, 807686848, 709143104, 600464320, 485757568, 370975648, 261082464, 157814272, 61236568, -27743878,
--107908368, -179967184, -246240672, -307747296, -363138400, -411065408, -451936864, -486216608, -512616160, -529793888,
--538810624, -542039936, -540447552, -533838656, -523063136, -509843744, -494687360, -476798816, -455955872, -433068544,
--409150400, -384934304, -361187424, -338605568, -317866784, -300097952, -286370688, -276776832, -271422080, -272051296,
--280811936, -297940800, -322991744, -357392832, -402666080, -457149344, -517921504, -584243328, -654970176, -725584768,
--793207424, -858191360, -908787712, -910023552, -830644544, -689013120, -552559872, -476109472, -454689920, },
+640857984, 664247808, 709125376, 798487040, 894723840, 925620224, 886355648, 844520512, 828989888, 790468352,
+702073600, 623767744, 617457408, 657030656, 679072448, 678107136, 691429632, 720630016, 731288512, 718183488,
+714545088, 734450688, 749665088, 732673088, 691860736, 654373184, 635630464, 633599488, 637711360, 637620672,
+633773440, 641577920, 675981120, 731671296, 787074240, 827028672, 852819968, 871151424, 883716928, 890245760,
+894228864, 901254848, 914564992, 934020096, 957390080, 981779584, 1005063168, 1025992512, 1042441728, 1050861440,
+1048723648, 1036472768, 1016223104, 989953984, 960034176, 929936128, 902642688, 878713792, 856679040, 834564736,
+810120512, 780202816, 741334976, 691475776, 631171776, 563095424, 490937856, 418955808, 351882368, 293955072,
+247446480, 212663696, 189638912, 178975584, 180624848, 192862816, 213411024, 241024976, 275355712, 315903968,
+361771552, 411923872, 465059072, 519434944, 573097344, 624263296, 671999168, 717108160, 761738240, 807277760,
+853147456, 898196288, 941872896, 982590784, 1016185536, 1037911040, 1045184064, 1036654272, 1009752192, 961772032,
+893178176, 807686848, 709143104, 600464320, 485757568, 370975648, 261082464, 157814272, 61236568, -27743878,
+-107908368, -179967184, -246240672, -307747296, -363138400, -411065408, -451936864, -486216608, -512616160, -529793888,
+-538810624, -542039936, -540447552, -533838656, -523063136, -509843744, -494687360, -476798816, -455955872, -433068544,
+-409150400, -384934304, -361187424, -338605568, -317866784, -300097952, -286370688, -276776832, -271422080, -272051296,
+-280811936, -297940800, -322991744, -357392832, -402666080, -457149344, -517921504, -584243328, -654970176, -725584768,
+-793207424, -858191360, -908787712, -910023552, -830644544, -689013120, -552559872, -476109472, -454689920, },
{
492595168,
-349920640, 129655400, -96068752, -288063456, -422139456, -462165312, -379373376, -193902208, 25130390, 207960704,
-323581216, 371539904, 352447712, 261681088, 108736224, -70442296, -227034112, -323784704, -346151264, -296056928,
--183744608, -29605210, 131186016, 255954288, 313229280, 295499104, 215232624, 93843960, -42829952, -164810240,
--243961664, -264013248, -224482368, -137329424, -23852100, 87437480, 168374000, 202671984, 190624608, 143011680,
-73127720, -5229123, -76965816, -127977680, -149385936, -139343232, -102169216, -47250008, 12343199, 63119376,
-95461016, 105951472, 96411280, 71464496, 36975372, -418222, -34078420, -58865212, -72094784, -73198056,
--63071056, -43987980, -19406272, 6983080, 32086090, 53277460, 67914168, 73251208, 66620848, 46097884,
-12402792, -28867548, -67367096, -91574072, -93571232, -72166184, -33356864, 11688753, 50693500, 74797392,
-81019728, 71504760, 50860464, 23759760, -6027450, -35191888, -59846612, -75079248, -75928040, -59625956,
--27964532, 11826729, 48893908, 72848016, 77854872, 64353644, 37917044, 6492917, -22404160, -43533252,
--54400056, -54780696, -46054936, -30625802, -11294690, 9214315, 28262496, 43135968, 51233592, 50516868,
-39984000, 20319490, -5370320, -31572842, -51671140, -59984588, -53693532, -34106336, -6614787, 21106006,
-41889888, 51274932, 48329656, 35343824, 16665547, -2943663, -19605988, -30780956, -35298188, -33326262,
--26037702, -15025943, -2067490, 10809359, 21541408, 28460600, 30424474, 26890254, 18299246, 6234682,
--7063611, -19175956, -27662274, -30571578, -27251568, -18436684, -5765994, 8252243, 20380156, 27853400,
-29329794, 24358370, 13501230, 316217, -8907225, -10369662, -6804839, -3740380, -3008088, },
+349920640, 129655400, -96068752, -288063456, -422139456, -462165312, -379373376, -193902208, 25130390, 207960704,
+323581216, 371539904, 352447712, 261681088, 108736224, -70442296, -227034112, -323784704, -346151264, -296056928,
+-183744608, -29605210, 131186016, 255954288, 313229280, 295499104, 215232624, 93843960, -42829952, -164810240,
+-243961664, -264013248, -224482368, -137329424, -23852100, 87437480, 168374000, 202671984, 190624608, 143011680,
+73127720, -5229123, -76965816, -127977680, -149385936, -139343232, -102169216, -47250008, 12343199, 63119376,
+95461016, 105951472, 96411280, 71464496, 36975372, -418222, -34078420, -58865212, -72094784, -73198056,
+-63071056, -43987980, -19406272, 6983080, 32086090, 53277460, 67914168, 73251208, 66620848, 46097884,
+12402792, -28867548, -67367096, -91574072, -93571232, -72166184, -33356864, 11688753, 50693500, 74797392,
+81019728, 71504760, 50860464, 23759760, -6027450, -35191888, -59846612, -75079248, -75928040, -59625956,
+-27964532, 11826729, 48893908, 72848016, 77854872, 64353644, 37917044, 6492917, -22404160, -43533252,
+-54400056, -54780696, -46054936, -30625802, -11294690, 9214315, 28262496, 43135968, 51233592, 50516868,
+39984000, 20319490, -5370320, -31572842, -51671140, -59984588, -53693532, -34106336, -6614787, 21106006,
+41889888, 51274932, 48329656, 35343824, 16665547, -2943663, -19605988, -30780956, -35298188, -33326262,
+-26037702, -15025943, -2067490, 10809359, 21541408, 28460600, 30424474, 26890254, 18299246, 6234682,
+-7063611, -19175956, -27662274, -30571578, -27251568, -18436684, -5765994, 8252243, 20380156, 27853400,
+29329794, 24358370, 13501230, 316217, -8907225, -10369662, -6804839, -3740380, -3008088, },
},
{
{
492595168,
-349920640, 129655400, -96068752, -288063456, -422139456, -462165312, -379373376, -193902208, 25130390, 207960704,
-323581216, 371539904, 352447712, 261681088, 108736224, -70442296, -227034112, -323784704, -346151264, -296056928,
--183744608, -29605210, 131186016, 255954288, 313229280, 295499104, 215232624, 93843960, -42829952, -164810240,
--243961664, -264013248, -224482368, -137329424, -23852100, 87437480, 168374000, 202671984, 190624608, 143011680,
-73127720, -5229123, -76965816, -127977680, -149385936, -139343232, -102169216, -47250008, 12343199, 63119376,
-95461016, 105951472, 96411280, 71464496, 36975372, -418222, -34078420, -58865212, -72094784, -73198056,
--63071056, -43987980, -19406272, 6983080, 32086090, 53277460, 67914168, 73251208, 66620848, 46097884,
-12402792, -28867548, -67367096, -91574072, -93571232, -72166184, -33356864, 11688753, 50693500, 74797392,
-81019728, 71504760, 50860464, 23759760, -6027450, -35191888, -59846612, -75079248, -75928040, -59625956,
--27964532, 11826729, 48893908, 72848016, 77854872, 64353644, 37917044, 6492917, -22404160, -43533252,
--54400056, -54780696, -46054936, -30625802, -11294690, 9214315, 28262496, 43135968, 51233592, 50516868,
-39984000, 20319490, -5370320, -31572842, -51671140, -59984588, -53693532, -34106336, -6614787, 21106006,
-41889888, 51274932, 48329656, 35343824, 16665547, -2943663, -19605988, -30780956, -35298188, -33326262,
--26037702, -15025943, -2067490, 10809359, 21541408, 28460600, 30424474, 26890254, 18299246, 6234682,
--7063611, -19175956, -27662274, -30571578, -27251568, -18436684, -5765994, 8252243, 20380156, 27853400,
-29329794, 24358370, 13501230, 316217, -8907225, -10369662, -6804839, -3740380, -3008088, },
+349920640, 129655400, -96068752, -288063456, -422139456, -462165312, -379373376, -193902208, 25130390, 207960704,
+323581216, 371539904, 352447712, 261681088, 108736224, -70442296, -227034112, -323784704, -346151264, -296056928,
+-183744608, -29605210, 131186016, 255954288, 313229280, 295499104, 215232624, 93843960, -42829952, -164810240,
+-243961664, -264013248, -224482368, -137329424, -23852100, 87437480, 168374000, 202671984, 190624608, 143011680,
+73127720, -5229123, -76965816, -127977680, -149385936, -139343232, -102169216, -47250008, 12343199, 63119376,
+95461016, 105951472, 96411280, 71464496, 36975372, -418222, -34078420, -58865212, -72094784, -73198056,
+-63071056, -43987980, -19406272, 6983080, 32086090, 53277460, 67914168, 73251208, 66620848, 46097884,
+12402792, -28867548, -67367096, -91574072, -93571232, -72166184, -33356864, 11688753, 50693500, 74797392,
+81019728, 71504760, 50860464, 23759760, -6027450, -35191888, -59846612, -75079248, -75928040, -59625956,
+-27964532, 11826729, 48893908, 72848016, 77854872, 64353644, 37917044, 6492917, -22404160, -43533252,
+-54400056, -54780696, -46054936, -30625802, -11294690, 9214315, 28262496, 43135968, 51233592, 50516868,
+39984000, 20319490, -5370320, -31572842, -51671140, -59984588, -53693532, -34106336, -6614787, 21106006,
+41889888, 51274932, 48329656, 35343824, 16665547, -2943663, -19605988, -30780956, -35298188, -33326262,
+-26037702, -15025943, -2067490, 10809359, 21541408, 28460600, 30424474, 26890254, 18299246, 6234682,
+-7063611, -19175956, -27662274, -30571578, -27251568, -18436684, -5765994, 8252243, 20380156, 27853400,
+29329794, 24358370, 13501230, 316217, -8907225, -10369662, -6804839, -3740380, -3008088, },
{
622567296,
-640857984, 664247808, 709125376, 798487040, 894723840, 925620224, 886355648, 844520512, 828989888, 790468352,
-702073600, 623767744, 617457408, 657030656, 679072448, 678107136, 691429632, 720630016, 731288512, 718183488,
-714545088, 734450688, 749665088, 732673088, 691860736, 654373184, 635630464, 633599488, 637711360, 637620672,
-633773440, 641577920, 675981120, 731671296, 787074240, 827028672, 852819968, 871151424, 883716928, 890245760,
-894228864, 901254848, 914564992, 934020096, 957390080, 981779584, 1005063168, 1025992512, 1042441728, 1050861440,
-1048723648, 1036472768, 1016223104, 989953984, 960034176, 929936128, 902642688, 878713792, 856679040, 834564736,
-810120512, 780202816, 741334976, 691475776, 631171776, 563095424, 490937856, 418955808, 351882368, 293955072,
-247446480, 212663696, 189638912, 178975584, 180624848, 192862816, 213411024, 241024976, 275355712, 315903968,
-361771552, 411923872, 465059072, 519434944, 573097344, 624263296, 671999168, 717108160, 761738240, 807277760,
-853147456, 898196288, 941872896, 982590784, 1016185536, 1037911040, 1045184064, 1036654272, 1009752192, 961772032,
-893178176, 807686848, 709143104, 600464320, 485757568, 370975648, 261082464, 157814272, 61236568, -27743878,
--107908368, -179967184, -246240672, -307747296, -363138400, -411065408, -451936864, -486216608, -512616160, -529793888,
--538810624, -542039936, -540447552, -533838656, -523063136, -509843744, -494687360, -476798816, -455955872, -433068544,
--409150400, -384934304, -361187424, -338605568, -317866784, -300097952, -286370688, -276776832, -271422080, -272051296,
--280811936, -297940800, -322991744, -357392832, -402666080, -457149344, -517921504, -584243328, -654970176, -725584768,
--793207424, -858191360, -908787712, -910023552, -830644544, -689013120, -552559872, -476109472, -454689920, },
+640857984, 664247808, 709125376, 798487040, 894723840, 925620224, 886355648, 844520512, 828989888, 790468352,
+702073600, 623767744, 617457408, 657030656, 679072448, 678107136, 691429632, 720630016, 731288512, 718183488,
+714545088, 734450688, 749665088, 732673088, 691860736, 654373184, 635630464, 633599488, 637711360, 637620672,
+633773440, 641577920, 675981120, 731671296, 787074240, 827028672, 852819968, 871151424, 883716928, 890245760,
+894228864, 901254848, 914564992, 934020096, 957390080, 981779584, 1005063168, 1025992512, 1042441728, 1050861440,
+1048723648, 1036472768, 1016223104, 989953984, 960034176, 929936128, 902642688, 878713792, 856679040, 834564736,
+810120512, 780202816, 741334976, 691475776, 631171776, 563095424, 490937856, 418955808, 351882368, 293955072,
+247446480, 212663696, 189638912, 178975584, 180624848, 192862816, 213411024, 241024976, 275355712, 315903968,
+361771552, 411923872, 465059072, 519434944, 573097344, 624263296, 671999168, 717108160, 761738240, 807277760,
+853147456, 898196288, 941872896, 982590784, 1016185536, 1037911040, 1045184064, 1036654272, 1009752192, 961772032,
+893178176, 807686848, 709143104, 600464320, 485757568, 370975648, 261082464, 157814272, 61236568, -27743878,
+-107908368, -179967184, -246240672, -307747296, -363138400, -411065408, -451936864, -486216608, -512616160, -529793888,
+-538810624, -542039936, -540447552, -533838656, -523063136, -509843744, -494687360, -476798816, -455955872, -433068544,
+-409150400, -384934304, -361187424, -338605568, -317866784, -300097952, -286370688, -276776832, -271422080, -272051296,
+-280811936, -297940800, -322991744, -357392832, -402666080, -457149344, -517921504, -584243328, -654970176, -725584768,
+-793207424, -858191360, -908787712, -910023552, -830644544, -689013120, -552559872, -476109472, -454689920, },
},
{
{
646679296,
-645968448, 639122816, 621891968, 595861760, 562558592, 519251872, 475705760, 469890912, 539172480, 669025472,
-795626560, 867237120, 879086400, 846760320, 782541952, 709219328, 660229888, 647685376, 657119232, 682932544,
-736579392, 809972288, 865853056, 879113792, 859909376, 827793728, 793103296, 770953600, 781334528, 823643200,
-875996160, 926382016, 980579136, 1035906368, 1073128704, 1081072256, 1068672128, 1047969344, 1022666048, 995884800,
-973002304, 953768896, 933232000, 911046848, 891218048, 874890176, 861030336, 850576960, 843280320, 834800448,
-822642496, 810467328, 802096448, 795990592, 789062784, 780909312, 771205376, 757566720, 738932992, 717751296,
-696952384, 677270720, 658261696, 639511488, 620062272, 598049472, 571248896, 537837248, 497503232, 451948672,
-403237824, 352022496, 298759008, 245707568, 195555232, 148726128, 104236168, 62650688, 26023744, -4582193,
--29400124, -48178796, -60261076, -66517768, -69439424, -70959840, -71456984, -71142376, -71192304, -72874320,
--76290432, -80570904, -84927608, -89087288, -92982824, -96474632, -99465536, -102183176, -105232064, -109111496,
--113631416, -118149720, -122408176, -126476048, -129755256, -130996504, -129633928, -126123864, -120656368, -112729472,
--102395776, -90620592, -78009488, -64432024, -50106164, -35723928, -21455510, -7087233, 7117298, 20935282,
-34948684, 49608484, 64487324, 79528296, 95684352, 113342040, 131704096, 150455920, 170115072, 190190816,
-209036592, 225673680, 239742928, 250109904, 255638608, 256449280, 252586496, 243170848, 228394544, 209796800,
-187407136, 160037456, 128926328, 96630856, 62485868, 24452322, -15824270, -56131464, -99214816, -148330992,
--202740176, -265789216, -346546400, -437759168, -502903616, -508028608, -462745152, -409909536, -380657568, },
+645968448, 639122816, 621891968, 595861760, 562558592, 519251872, 475705760, 469890912, 539172480, 669025472,
+795626560, 867237120, 879086400, 846760320, 782541952, 709219328, 660229888, 647685376, 657119232, 682932544,
+736579392, 809972288, 865853056, 879113792, 859909376, 827793728, 793103296, 770953600, 781334528, 823643200,
+875996160, 926382016, 980579136, 1035906368, 1073128704, 1081072256, 1068672128, 1047969344, 1022666048, 995884800,
+973002304, 953768896, 933232000, 911046848, 891218048, 874890176, 861030336, 850576960, 843280320, 834800448,
+822642496, 810467328, 802096448, 795990592, 789062784, 780909312, 771205376, 757566720, 738932992, 717751296,
+696952384, 677270720, 658261696, 639511488, 620062272, 598049472, 571248896, 537837248, 497503232, 451948672,
+403237824, 352022496, 298759008, 245707568, 195555232, 148726128, 104236168, 62650688, 26023744, -4582193,
+-29400124, -48178796, -60261076, -66517768, -69439424, -70959840, -71456984, -71142376, -71192304, -72874320,
+-76290432, -80570904, -84927608, -89087288, -92982824, -96474632, -99465536, -102183176, -105232064, -109111496,
+-113631416, -118149720, -122408176, -126476048, -129755256, -130996504, -129633928, -126123864, -120656368, -112729472,
+-102395776, -90620592, -78009488, -64432024, -50106164, -35723928, -21455510, -7087233, 7117298, 20935282,
+34948684, 49608484, 64487324, 79528296, 95684352, 113342040, 131704096, 150455920, 170115072, 190190816,
+209036592, 225673680, 239742928, 250109904, 255638608, 256449280, 252586496, 243170848, 228394544, 209796800,
+187407136, 160037456, 128926328, 96630856, 62485868, 24452322, -15824270, -56131464, -99214816, -148330992,
+-202740176, -265789216, -346546400, -437759168, -502903616, -508028608, -462745152, -409909536, -380657568, },
{
583148672,
-539481152, 460055424, 342895680, 195422624, 69911328, 36334888, 107412304, 216472256, 273669952, 227101760,
-84176528, -92762168, -219276864, -252809824, -227045936, -205569488, -215370064, -247742848, -299394656, -371254304,
--437524032, -458374464, -427335840, -378257248, -343579136, -327581984, -319013536, -307094464, -281768096, -235050672,
--168033072, -90096600, -12005507, 56224880, 106833552, 140924864, 169577664, 203022560, 241609088, 279372064,
-311309952, 334967712, 349992576, 358677536, 363750432, 364868736, 359889792, 348653088, 332512064, 311486048,
-284663456, 251817696, 212406528, 165094240, 110355960, 51527260, -8180839, -67522256, -125252520, -178963232,
--226849440, -268405936, -302897728, -329326816, -348103328, -360565184, -366570080, -364243840, -352140064, -330336128,
--299850464, -262378480, -220294240, -175666848, -129303208, -81339168, -32445794, 15968152, 62376348, 105550432,
-144535312, 178380192, 205931872, 226138624, 238665968, 243955216, 242759072, 236011136, 224936032, 210609088,
-193493648, 173958528, 152993712, 131758856, 110757544, 90138480, 70458936, 52431888, 36262408, 21920976,
-9699647, -167504, -8105140, -14840723, -20764556, -26108570, -31393526, -37200324, -43745316, -51052128,
--59316720, -68821480, -79682920, -91820496, -104991552, -118746184, -132459472, -145388400, -156676112, -165509248,
--171375104, -173924160, -172597024, -166776800, -156289024, -141251280, -121526640, -97005056, -68300184, -36366560,
--1575716, 35940824, 75268768, 115067544, 154620432, 193336880, 229652976, 261728320, 288700736, 309878144,
-323465792, 327600256, 321737600, 305615904, 278244096, 239449792, 190780832, 133667976, 69099584, -204011,
--71012456, -142523664, -210281600, -255934416, -256065408, -210513520, -151919440, -114944064, -103846400, },
+539481152, 460055424, 342895680, 195422624, 69911328, 36334888, 107412304, 216472256, 273669952, 227101760,
+84176528, -92762168, -219276864, -252809824, -227045936, -205569488, -215370064, -247742848, -299394656, -371254304,
+-437524032, -458374464, -427335840, -378257248, -343579136, -327581984, -319013536, -307094464, -281768096, -235050672,
+-168033072, -90096600, -12005507, 56224880, 106833552, 140924864, 169577664, 203022560, 241609088, 279372064,
+311309952, 334967712, 349992576, 358677536, 363750432, 364868736, 359889792, 348653088, 332512064, 311486048,
+284663456, 251817696, 212406528, 165094240, 110355960, 51527260, -8180839, -67522256, -125252520, -178963232,
+-226849440, -268405936, -302897728, -329326816, -348103328, -360565184, -366570080, -364243840, -352140064, -330336128,
+-299850464, -262378480, -220294240, -175666848, -129303208, -81339168, -32445794, 15968152, 62376348, 105550432,
+144535312, 178380192, 205931872, 226138624, 238665968, 243955216, 242759072, 236011136, 224936032, 210609088,
+193493648, 173958528, 152993712, 131758856, 110757544, 90138480, 70458936, 52431888, 36262408, 21920976,
+9699647, -167504, -8105140, -14840723, -20764556, -26108570, -31393526, -37200324, -43745316, -51052128,
+-59316720, -68821480, -79682920, -91820496, -104991552, -118746184, -132459472, -145388400, -156676112, -165509248,
+-171375104, -173924160, -172597024, -166776800, -156289024, -141251280, -121526640, -97005056, -68300184, -36366560,
+-1575716, 35940824, 75268768, 115067544, 154620432, 193336880, 229652976, 261728320, 288700736, 309878144,
+323465792, 327600256, 321737600, 305615904, 278244096, 239449792, 190780832, 133667976, 69099584, -204011,
+-71012456, -142523664, -210281600, -255934416, -256065408, -210513520, -151919440, -114944064, -103846400, },
},
{
{
583148672,
-539481152, 460055424, 342895680, 195422624, 69911328, 36334888, 107412304, 216472256, 273669952, 227101760,
-84176528, -92762168, -219276864, -252809824, -227045936, -205569488, -215370064, -247742848, -299394656, -371254304,
--437524032, -458374464, -427335840, -378257248, -343579136, -327581984, -319013536, -307094464, -281768096, -235050672,
--168033072, -90096600, -12005507, 56224880, 106833552, 140924864, 169577664, 203022560, 241609088, 279372064,
-311309952, 334967712, 349992576, 358677536, 363750432, 364868736, 359889792, 348653088, 332512064, 311486048,
-284663456, 251817696, 212406528, 165094240, 110355960, 51527260, -8180839, -67522256, -125252520, -178963232,
--226849440, -268405936, -302897728, -329326816, -348103328, -360565184, -366570080, -364243840, -352140064, -330336128,
--299850464, -262378480, -220294240, -175666848, -129303208, -81339168, -32445794, 15968152, 62376348, 105550432,
-144535312, 178380192, 205931872, 226138624, 238665968, 243955216, 242759072, 236011136, 224936032, 210609088,
-193493648, 173958528, 152993712, 131758856, 110757544, 90138480, 70458936, 52431888, 36262408, 21920976,
-9699647, -167504, -8105140, -14840723, -20764556, -26108570, -31393526, -37200324, -43745316, -51052128,
--59316720, -68821480, -79682920, -91820496, -104991552, -118746184, -132459472, -145388400, -156676112, -165509248,
--171375104, -173924160, -172597024, -166776800, -156289024, -141251280, -121526640, -97005056, -68300184, -36366560,
--1575716, 35940824, 75268768, 115067544, 154620432, 193336880, 229652976, 261728320, 288700736, 309878144,
-323465792, 327600256, 321737600, 305615904, 278244096, 239449792, 190780832, 133667976, 69099584, -204011,
--71012456, -142523664, -210281600, -255934416, -256065408, -210513520, -151919440, -114944064, -103846400, },
+539481152, 460055424, 342895680, 195422624, 69911328, 36334888, 107412304, 216472256, 273669952, 227101760,
+84176528, -92762168, -219276864, -252809824, -227045936, -205569488, -215370064, -247742848, -299394656, -371254304,
+-437524032, -458374464, -427335840, -378257248, -343579136, -327581984, -319013536, -307094464, -281768096, -235050672,
+-168033072, -90096600, -12005507, 56224880, 106833552, 140924864, 169577664, 203022560, 241609088, 279372064,
+311309952, 334967712, 349992576, 358677536, 363750432, 364868736, 359889792, 348653088, 332512064, 311486048,
+284663456, 251817696, 212406528, 165094240, 110355960, 51527260, -8180839, -67522256, -125252520, -178963232,
+-226849440, -268405936, -302897728, -329326816, -348103328, -360565184, -366570080, -364243840, -352140064, -330336128,
+-299850464, -262378480, -220294240, -175666848, -129303208, -81339168, -32445794, 15968152, 62376348, 105550432,
+144535312, 178380192, 205931872, 226138624, 238665968, 243955216, 242759072, 236011136, 224936032, 210609088,
+193493648, 173958528, 152993712, 131758856, 110757544, 90138480, 70458936, 52431888, 36262408, 21920976,
+9699647, -167504, -8105140, -14840723, -20764556, -26108570, -31393526, -37200324, -43745316, -51052128,
+-59316720, -68821480, -79682920, -91820496, -104991552, -118746184, -132459472, -145388400, -156676112, -165509248,
+-171375104, -173924160, -172597024, -166776800, -156289024, -141251280, -121526640, -97005056, -68300184, -36366560,
+-1575716, 35940824, 75268768, 115067544, 154620432, 193336880, 229652976, 261728320, 288700736, 309878144,
+323465792, 327600256, 321737600, 305615904, 278244096, 239449792, 190780832, 133667976, 69099584, -204011,
+-71012456, -142523664, -210281600, -255934416, -256065408, -210513520, -151919440, -114944064, -103846400, },
{
646679296,
-645968448, 639122816, 621891968, 595861760, 562558592, 519251872, 475705760, 469890912, 539172480, 669025472,
-795626560, 867237120, 879086400, 846760320, 782541952, 709219328, 660229888, 647685376, 657119232, 682932544,
-736579392, 809972288, 865853056, 879113792, 859909376, 827793728, 793103296, 770953600, 781334528, 823643200,
-875996160, 926382016, 980579136, 1035906368, 1073128704, 1081072256, 1068672128, 1047969344, 1022666048, 995884800,
-973002304, 953768896, 933232000, 911046848, 891218048, 874890176, 861030336, 850576960, 843280320, 834800448,
-822642496, 810467328, 802096448, 795990592, 789062784, 780909312, 771205376, 757566720, 738932992, 717751296,
-696952384, 677270720, 658261696, 639511488, 620062272, 598049472, 571248896, 537837248, 497503232, 451948672,
-403237824, 352022496, 298759008, 245707568, 195555232, 148726128, 104236168, 62650688, 26023744, -4582193,
--29400124, -48178796, -60261076, -66517768, -69439424, -70959840, -71456984, -71142376, -71192304, -72874320,
--76290432, -80570904, -84927608, -89087288, -92982824, -96474632, -99465536, -102183176, -105232064, -109111496,
--113631416, -118149720, -122408176, -126476048, -129755256, -130996504, -129633928, -126123864, -120656368, -112729472,
--102395776, -90620592, -78009488, -64432024, -50106164, -35723928, -21455510, -7087233, 7117298, 20935282,
-34948684, 49608484, 64487324, 79528296, 95684352, 113342040, 131704096, 150455920, 170115072, 190190816,
-209036592, 225673680, 239742928, 250109904, 255638608, 256449280, 252586496, 243170848, 228394544, 209796800,
-187407136, 160037456, 128926328, 96630856, 62485868, 24452322, -15824270, -56131464, -99214816, -148330992,
--202740176, -265789216, -346546400, -437759168, -502903616, -508028608, -462745152, -409909536, -380657568, },
+645968448, 639122816, 621891968, 595861760, 562558592, 519251872, 475705760, 469890912, 539172480, 669025472,
+795626560, 867237120, 879086400, 846760320, 782541952, 709219328, 660229888, 647685376, 657119232, 682932544,
+736579392, 809972288, 865853056, 879113792, 859909376, 827793728, 793103296, 770953600, 781334528, 823643200,
+875996160, 926382016, 980579136, 1035906368, 1073128704, 1081072256, 1068672128, 1047969344, 1022666048, 995884800,
+973002304, 953768896, 933232000, 911046848, 891218048, 874890176, 861030336, 850576960, 843280320, 834800448,
+822642496, 810467328, 802096448, 795990592, 789062784, 780909312, 771205376, 757566720, 738932992, 717751296,
+696952384, 677270720, 658261696, 639511488, 620062272, 598049472, 571248896, 537837248, 497503232, 451948672,
+403237824, 352022496, 298759008, 245707568, 195555232, 148726128, 104236168, 62650688, 26023744, -4582193,
+-29400124, -48178796, -60261076, -66517768, -69439424, -70959840, -71456984, -71142376, -71192304, -72874320,
+-76290432, -80570904, -84927608, -89087288, -92982824, -96474632, -99465536, -102183176, -105232064, -109111496,
+-113631416, -118149720, -122408176, -126476048, -129755256, -130996504, -129633928, -126123864, -120656368, -112729472,
+-102395776, -90620592, -78009488, -64432024, -50106164, -35723928, -21455510, -7087233, 7117298, 20935282,
+34948684, 49608484, 64487324, 79528296, 95684352, 113342040, 131704096, 150455920, 170115072, 190190816,
+209036592, 225673680, 239742928, 250109904, 255638608, 256449280, 252586496, 243170848, 228394544, 209796800,
+187407136, 160037456, 128926328, 96630856, 62485868, 24452322, -15824270, -56131464, -99214816, -148330992,
+-202740176, -265789216, -346546400, -437759168, -502903616, -508028608, -462745152, -409909536, -380657568, },
},
{
{
610245056,
-609693184, 622532992, 667203840, 731880704, 761625984, 717755584, 638705664, 597541632, 607697088, 621490880,
-618182720, 634340928, 694544000, 765818944, 805395520, 813167232, 810452288, 798206784, 764644288, 714478528,
-665478848, 625704768, 591012224, 558409664, 529716032, 505750656, 484434720, 463015200, 439907200, 416915712,
-399353568, 390405536, 386368800, 380867488, 372288288, 364262080, 361074144, 365289120, 377479840, 395595488,
-416150656, 437420960, 459881472, 483348096, 506016928, 526359520, 543573184, 556197696, 562593472, 563023488,
-559953664, 556635840, 556160704, 560780992, 571014272, 585870592, 603945408, 623209408, 640301248, 651950272,
-657041920, 655905408, 648372544, 634434880, 616032512, 596019584, 575616896, 554468480, 532571648, 510390304,
-487461600, 462482080, 434833216, 405084128, 374107232, 342517728, 311096832, 281308000, 254934224, 232891376,
-214522880, 198445744, 183858960, 170454896, 157559264, 144643232, 132688184, 123906048, 119996016, 121520728,
-128755064, 141985184, 160971616, 185004112, 213525376, 246200416, 282618496, 322217024, 363954464, 405830912,
-445446624, 481160352, 511960640, 536418880, 553044672, 561650752, 563063744, 557408896, 543997312, 523012128,
-495937184, 464004096, 427414208, 386569056, 343072864, 298823968, 254642176, 210468432, 166675328, 124344136,
-83961776, 44609140, 5198521, -34072512, -72519448, -110651776, -149564720, -188894816, -226988480, -263036144,
--297373344, -329594176, -358105248, -381894528, -401356640, -417061184, -428902400, -436790656, -441414720, -444037344,
--445783776, -447092128, -448056896, -449501600, -452866176, -458555392, -465826240, -474977216, -487494368, -503547872,
--522694848, -546431488, -572308672, -583722560, -557764288, -492758368, -418989632, -370297600, -352403680, },
+609693184, 622532992, 667203840, 731880704, 761625984, 717755584, 638705664, 597541632, 607697088, 621490880,
+618182720, 634340928, 694544000, 765818944, 805395520, 813167232, 810452288, 798206784, 764644288, 714478528,
+665478848, 625704768, 591012224, 558409664, 529716032, 505750656, 484434720, 463015200, 439907200, 416915712,
+399353568, 390405536, 386368800, 380867488, 372288288, 364262080, 361074144, 365289120, 377479840, 395595488,
+416150656, 437420960, 459881472, 483348096, 506016928, 526359520, 543573184, 556197696, 562593472, 563023488,
+559953664, 556635840, 556160704, 560780992, 571014272, 585870592, 603945408, 623209408, 640301248, 651950272,
+657041920, 655905408, 648372544, 634434880, 616032512, 596019584, 575616896, 554468480, 532571648, 510390304,
+487461600, 462482080, 434833216, 405084128, 374107232, 342517728, 311096832, 281308000, 254934224, 232891376,
+214522880, 198445744, 183858960, 170454896, 157559264, 144643232, 132688184, 123906048, 119996016, 121520728,
+128755064, 141985184, 160971616, 185004112, 213525376, 246200416, 282618496, 322217024, 363954464, 405830912,
+445446624, 481160352, 511960640, 536418880, 553044672, 561650752, 563063744, 557408896, 543997312, 523012128,
+495937184, 464004096, 427414208, 386569056, 343072864, 298823968, 254642176, 210468432, 166675328, 124344136,
+83961776, 44609140, 5198521, -34072512, -72519448, -110651776, -149564720, -188894816, -226988480, -263036144,
+-297373344, -329594176, -358105248, -381894528, -401356640, -417061184, -428902400, -436790656, -441414720, -444037344,
+-445783776, -447092128, -448056896, -449501600, -452866176, -458555392, -465826240, -474977216, -487494368, -503547872,
+-522694848, -546431488, -572308672, -583722560, -557764288, -492758368, -418989632, -370297600, -352403680, },
{
515739680,
-438247712, 285685120, 87360168, -95296200, -207255264, -246143504, -259510512, -290034304, -329569472, -333904704,
--277052768, -179355152, -81425064, -2292439, 68869264, 146194784, 223425280, 278033088, 292392768, 267599552,
-219466384, 164171360, 107360224, 45304924, -24937654, -98085776, -163375184, -211983472, -239316112, -242116976,
--218141392, -170125808, -107210440, -40395240, 22451942, 76769856, 119062936, 146726816, 159440992, 159155376,
-148637536, 130463392, 106756784, 78949552, 47805132, 14026826, -21254720, -56645788, -90608776, -120976880,
--144530480, -157458336, -156592368, -140656416, -110776872, -69929048, -21831318, 29657286, 80272400, 125053880,
-158881040, 177580784, 178835456, 162489888, 130317896, 85446760, 31808528, -26025354, -82670608, -131849056,
--166907792, -182170496, -174769728, -145949968, -100976288, -47752520, 5096516, 50188840, 83007224, 102487584,
-110175040, 108646032, 100329360, 87040200, 69905960, 49542984, 26501022, 1746441, -23098334, -45803140,
--63909652, -75457208, -79635136, -76845552, -68262600, -55389508, -39773544, -22750978, -5320391, 11724187,
-27624692, 41651520, 53098144, 61197916, 65167540, 64411088, 58650464, 47960288, 32899986, 14624364,
--5263483, -24955908, -42563664, -56267828, -64661268, -67008468, -63235340, -53855132, -39938364, -22924924,
--4322885, 14391362, 31722628, 46244988, 56738664, 62173408, 61746596, 55190328, 43038256, 26581552,
-7721815, -11183558, -27750858, -40142912, -47320340, -48993764, -45628120, -38378756, -28668370, -17787608,
--6880001, 3067144, 11483669, 18213882, 23163832, 26246008, 27607512, 27451820, 25715580, 22356378,
-17622788, 11525008, 3844533, -4312147, -9948755, -10860899, -8375723, -5792301, -4709969, },
+438247712, 285685120, 87360168, -95296200, -207255264, -246143504, -259510512, -290034304, -329569472, -333904704,
+-277052768, -179355152, -81425064, -2292439, 68869264, 146194784, 223425280, 278033088, 292392768, 267599552,
+219466384, 164171360, 107360224, 45304924, -24937654, -98085776, -163375184, -211983472, -239316112, -242116976,
+-218141392, -170125808, -107210440, -40395240, 22451942, 76769856, 119062936, 146726816, 159440992, 159155376,
+148637536, 130463392, 106756784, 78949552, 47805132, 14026826, -21254720, -56645788, -90608776, -120976880,
+-144530480, -157458336, -156592368, -140656416, -110776872, -69929048, -21831318, 29657286, 80272400, 125053880,
+158881040, 177580784, 178835456, 162489888, 130317896, 85446760, 31808528, -26025354, -82670608, -131849056,
+-166907792, -182170496, -174769728, -145949968, -100976288, -47752520, 5096516, 50188840, 83007224, 102487584,
+110175040, 108646032, 100329360, 87040200, 69905960, 49542984, 26501022, 1746441, -23098334, -45803140,
+-63909652, -75457208, -79635136, -76845552, -68262600, -55389508, -39773544, -22750978, -5320391, 11724187,
+27624692, 41651520, 53098144, 61197916, 65167540, 64411088, 58650464, 47960288, 32899986, 14624364,
+-5263483, -24955908, -42563664, -56267828, -64661268, -67008468, -63235340, -53855132, -39938364, -22924924,
+-4322885, 14391362, 31722628, 46244988, 56738664, 62173408, 61746596, 55190328, 43038256, 26581552,
+7721815, -11183558, -27750858, -40142912, -47320340, -48993764, -45628120, -38378756, -28668370, -17787608,
+-6880001, 3067144, 11483669, 18213882, 23163832, 26246008, 27607512, 27451820, 25715580, 22356378,
+17622788, 11525008, 3844533, -4312147, -9948755, -10860899, -8375723, -5792301, -4709969, },
},
{
{
515739680,
-438247712, 285685120, 87360168, -95296200, -207255264, -246143504, -259510512, -290034304, -329569472, -333904704,
--277052768, -179355152, -81425064, -2292439, 68869264, 146194784, 223425280, 278033088, 292392768, 267599552,
-219466384, 164171360, 107360224, 45304924, -24937654, -98085776, -163375184, -211983472, -239316112, -242116976,
--218141392, -170125808, -107210440, -40395240, 22451942, 76769856, 119062936, 146726816, 159440992, 159155376,
-148637536, 130463392, 106756784, 78949552, 47805132, 14026826, -21254720, -56645788, -90608776, -120976880,
--144530480, -157458336, -156592368, -140656416, -110776872, -69929048, -21831318, 29657286, 80272400, 125053880,
-158881040, 177580784, 178835456, 162489888, 130317896, 85446760, 31808528, -26025354, -82670608, -131849056,
--166907792, -182170496, -174769728, -145949968, -100976288, -47752520, 5096516, 50188840, 83007224, 102487584,
-110175040, 108646032, 100329360, 87040200, 69905960, 49542984, 26501022, 1746441, -23098334, -45803140,
--63909652, -75457208, -79635136, -76845552, -68262600, -55389508, -39773544, -22750978, -5320391, 11724187,
-27624692, 41651520, 53098144, 61197916, 65167540, 64411088, 58650464, 47960288, 32899986, 14624364,
--5263483, -24955908, -42563664, -56267828, -64661268, -67008468, -63235340, -53855132, -39938364, -22924924,
--4322885, 14391362, 31722628, 46244988, 56738664, 62173408, 61746596, 55190328, 43038256, 26581552,
-7721815, -11183558, -27750858, -40142912, -47320340, -48993764, -45628120, -38378756, -28668370, -17787608,
--6880001, 3067144, 11483669, 18213882, 23163832, 26246008, 27607512, 27451820, 25715580, 22356378,
-17622788, 11525008, 3844533, -4312147, -9948755, -10860899, -8375723, -5792301, -4709969, },
+438247712, 285685120, 87360168, -95296200, -207255264, -246143504, -259510512, -290034304, -329569472, -333904704,
+-277052768, -179355152, -81425064, -2292439, 68869264, 146194784, 223425280, 278033088, 292392768, 267599552,
+219466384, 164171360, 107360224, 45304924, -24937654, -98085776, -163375184, -211983472, -239316112, -242116976,
+-218141392, -170125808, -107210440, -40395240, 22451942, 76769856, 119062936, 146726816, 159440992, 159155376,
+148637536, 130463392, 106756784, 78949552, 47805132, 14026826, -21254720, -56645788, -90608776, -120976880,
+-144530480, -157458336, -156592368, -140656416, -110776872, -69929048, -21831318, 29657286, 80272400, 125053880,
+158881040, 177580784, 178835456, 162489888, 130317896, 85446760, 31808528, -26025354, -82670608, -131849056,
+-166907792, -182170496, -174769728, -145949968, -100976288, -47752520, 5096516, 50188840, 83007224, 102487584,
+110175040, 108646032, 100329360, 87040200, 69905960, 49542984, 26501022, 1746441, -23098334, -45803140,
+-63909652, -75457208, -79635136, -76845552, -68262600, -55389508, -39773544, -22750978, -5320391, 11724187,
+27624692, 41651520, 53098144, 61197916, 65167540, 64411088, 58650464, 47960288, 32899986, 14624364,
+-5263483, -24955908, -42563664, -56267828, -64661268, -67008468, -63235340, -53855132, -39938364, -22924924,
+-4322885, 14391362, 31722628, 46244988, 56738664, 62173408, 61746596, 55190328, 43038256, 26581552,
+7721815, -11183558, -27750858, -40142912, -47320340, -48993764, -45628120, -38378756, -28668370, -17787608,
+-6880001, 3067144, 11483669, 18213882, 23163832, 26246008, 27607512, 27451820, 25715580, 22356378,
+17622788, 11525008, 3844533, -4312147, -9948755, -10860899, -8375723, -5792301, -4709969, },
{
610245056,
-609693184, 622532992, 667203840, 731880704, 761625984, 717755584, 638705664, 597541632, 607697088, 621490880,
-618182720, 634340928, 694544000, 765818944, 805395520, 813167232, 810452288, 798206784, 764644288, 714478528,
-665478848, 625704768, 591012224, 558409664, 529716032, 505750656, 484434720, 463015200, 439907200, 416915712,
-399353568, 390405536, 386368800, 380867488, 372288288, 364262080, 361074144, 365289120, 377479840, 395595488,
-416150656, 437420960, 459881472, 483348096, 506016928, 526359520, 543573184, 556197696, 562593472, 563023488,
-559953664, 556635840, 556160704, 560780992, 571014272, 585870592, 603945408, 623209408, 640301248, 651950272,
-657041920, 655905408, 648372544, 634434880, 616032512, 596019584, 575616896, 554468480, 532571648, 510390304,
-487461600, 462482080, 434833216, 405084128, 374107232, 342517728, 311096832, 281308000, 254934224, 232891376,
-214522880, 198445744, 183858960, 170454896, 157559264, 144643232, 132688184, 123906048, 119996016, 121520728,
-128755064, 141985184, 160971616, 185004112, 213525376, 246200416, 282618496, 322217024, 363954464, 405830912,
-445446624, 481160352, 511960640, 536418880, 553044672, 561650752, 563063744, 557408896, 543997312, 523012128,
-495937184, 464004096, 427414208, 386569056, 343072864, 298823968, 254642176, 210468432, 166675328, 124344136,
-83961776, 44609140, 5198521, -34072512, -72519448, -110651776, -149564720, -188894816, -226988480, -263036144,
--297373344, -329594176, -358105248, -381894528, -401356640, -417061184, -428902400, -436790656, -441414720, -444037344,
--445783776, -447092128, -448056896, -449501600, -452866176, -458555392, -465826240, -474977216, -487494368, -503547872,
--522694848, -546431488, -572308672, -583722560, -557764288, -492758368, -418989632, -370297600, -352403680, },
+609693184, 622532992, 667203840, 731880704, 761625984, 717755584, 638705664, 597541632, 607697088, 621490880,
+618182720, 634340928, 694544000, 765818944, 805395520, 813167232, 810452288, 798206784, 764644288, 714478528,
+665478848, 625704768, 591012224, 558409664, 529716032, 505750656, 484434720, 463015200, 439907200, 416915712,
+399353568, 390405536, 386368800, 380867488, 372288288, 364262080, 361074144, 365289120, 377479840, 395595488,
+416150656, 437420960, 459881472, 483348096, 506016928, 526359520, 543573184, 556197696, 562593472, 563023488,
+559953664, 556635840, 556160704, 560780992, 571014272, 585870592, 603945408, 623209408, 640301248, 651950272,
+657041920, 655905408, 648372544, 634434880, 616032512, 596019584, 575616896, 554468480, 532571648, 510390304,
+487461600, 462482080, 434833216, 405084128, 374107232, 342517728, 311096832, 281308000, 254934224, 232891376,
+214522880, 198445744, 183858960, 170454896, 157559264, 144643232, 132688184, 123906048, 119996016, 121520728,
+128755064, 141985184, 160971616, 185004112, 213525376, 246200416, 282618496, 322217024, 363954464, 405830912,
+445446624, 481160352, 511960640, 536418880, 553044672, 561650752, 563063744, 557408896, 543997312, 523012128,
+495937184, 464004096, 427414208, 386569056, 343072864, 298823968, 254642176, 210468432, 166675328, 124344136,
+83961776, 44609140, 5198521, -34072512, -72519448, -110651776, -149564720, -188894816, -226988480, -263036144,
+-297373344, -329594176, -358105248, -381894528, -401356640, -417061184, -428902400, -436790656, -441414720, -444037344,
+-445783776, -447092128, -448056896, -449501600, -452866176, -458555392, -465826240, -474977216, -487494368, -503547872,
+-522694848, -546431488, -572308672, -583722560, -557764288, -492758368, -418989632, -370297600, -352403680, },
},
{
{
573552064,
-570192320, 581792000, 620967424, 671831104, 698598464, 681930752, 638787264, 598702848, 570998720, 549175488,
-537884544, 553273408, 596125376, 644172096, 676342976, 689677824, 687518528, 667147456, 629091904, 587057088,
-556523584, 538422976, 522272320, 501194752, 476544352, 450953856, 424396448, 396837248, 369501952, 342626720,
-314877472, 285514944, 255454992, 226385584, 200594832, 181621824, 173160192, 176257408, 188260768, 205153952,
-224390032, 244880784, 265123504, 282881056, 296865984, 307601248, 316306080, 323835712, 330969632, 338782720,
-348169376, 359361536, 371913568, 384639008, 395740960, 403618464, 407422208, 406582528, 400576032, 389836992,
-376057664, 360677408, 343627456, 324188960, 302208928, 277727072, 250390144, 220360816, 189325376, 159854384,
-134133976, 113651280, 99327024, 91166048, 87985624, 87882544, 89001384, 90074056, 90682328, 91105920,
-91786136, 93073016, 95422360, 99376952, 105186968, 112838456, 122489248, 134506560, 149102480, 166340320,
-186418768, 209624464, 236110992, 265856336, 298457280, 332832576, 367526272, 401262144, 432677152, 459869664,
-481246240, 496708128, 507029472, 512326784, 512221568, 507134720, 497961728, 484529216, 465722080, 441205344,
-411850848, 378432800, 341078912, 300298208, 257615904, 214704880, 172351664, 130707128, 90312960, 52321828,
-17476222, -14641544, -44763760, -72813120, -98525480, -122787208, -147041424, -171491072, -195217008, -217874032,
--239737024, -260137040, -277482816, -290973312, -301004192, -307948096, -311751808, -312641952, -311275072, -308364160,
--304645248, -300720736, -296806944, -293374176, -291637952, -292377760, -295200096, -300228960, -308901024, -321814912,
--338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, },
+570192320, 581792000, 620967424, 671831104, 698598464, 681930752, 638787264, 598702848, 570998720, 549175488,
+537884544, 553273408, 596125376, 644172096, 676342976, 689677824, 687518528, 667147456, 629091904, 587057088,
+556523584, 538422976, 522272320, 501194752, 476544352, 450953856, 424396448, 396837248, 369501952, 342626720,
+314877472, 285514944, 255454992, 226385584, 200594832, 181621824, 173160192, 176257408, 188260768, 205153952,
+224390032, 244880784, 265123504, 282881056, 296865984, 307601248, 316306080, 323835712, 330969632, 338782720,
+348169376, 359361536, 371913568, 384639008, 395740960, 403618464, 407422208, 406582528, 400576032, 389836992,
+376057664, 360677408, 343627456, 324188960, 302208928, 277727072, 250390144, 220360816, 189325376, 159854384,
+134133976, 113651280, 99327024, 91166048, 87985624, 87882544, 89001384, 90074056, 90682328, 91105920,
+91786136, 93073016, 95422360, 99376952, 105186968, 112838456, 122489248, 134506560, 149102480, 166340320,
+186418768, 209624464, 236110992, 265856336, 298457280, 332832576, 367526272, 401262144, 432677152, 459869664,
+481246240, 496708128, 507029472, 512326784, 512221568, 507134720, 497961728, 484529216, 465722080, 441205344,
+411850848, 378432800, 341078912, 300298208, 257615904, 214704880, 172351664, 130707128, 90312960, 52321828,
+17476222, -14641544, -44763760, -72813120, -98525480, -122787208, -147041424, -171491072, -195217008, -217874032,
+-239737024, -260137040, -277482816, -290973312, -301004192, -307948096, -311751808, -312641952, -311275072, -308364160,
+-304645248, -300720736, -296806944, -293374176, -291637952, -292377760, -295200096, -300228960, -308901024, -321814912,
+-338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, },
{
501715520,
-460559008, 366155616, 224563440, 80469432, -11944304, -46012520, -71380208, -130646464, -206194400, -252554816,
--263529536, -274076352, -303230048, -330179904, -329530816, -299793024, -249240176, -179660624, -96497712, -16281684,
-49042620, 103762112, 155969584, 203624400, 240106928, 264837344, 280934336, 287637184, 280503232, 256201248,
-214720448, 159932240, 99238440, 39739184, -15985331, -68172408, -114765824, -150986352, -173690096, -183660848,
--183926064, -177937808, -168966160, -159263824, -149551296, -139858624, -130014568, -118512104, -101964672, -76892800,
--41908144, 1741609, 50550156, 99314136, 142736800, 177676352, 203679696, 221240752, 230115216, 229246560,
-217352192, 193321312, 156962800, 110015584, 56170656, -140123, -54926188, -105112880, -148744912, -184897808,
--212817248, -230854496, -236542640, -227862512, -204462448, -168132944, -122712584, -73326904, -24844238, 19481972,
-58070104, 90189480, 115522272, 134254240, 146931376, 154040080, 155942208, 153108608, 146082032, 135206112,
-120597848, 102302896, 80275088, 54349052, 24573656, -8286066, -42633456, -76381160, -107322640, -133334040,
--152571200, -163738656, -166214160, -159895728, -145068432, -122527360, -93683976, -60323888, -24304684, 12397960,
-47603272, 79232480, 105656192, 125609536, 138077824, 142619216, 139570336, 129651104, 113653960, 92704720,
-68354944, 42062764, 14964203, -11664057, -36275292, -57592828, -74755520, -86879136, -93201864, -93776856,
--89387936, -80867256, -69139312, -55655260, -41899552, -28639916, -16245177, -5225902, 4234301, 12647068,
-20462834, 27614492, 34209416, 40676560, 46849504, 51966420, 55684788, 57866096, 57622356, 54056996,
-47305308, 37140728, 22166326, 3399467, -12861280, -19901804, -17953500, -13210783, -10441065, },
+460559008, 366155616, 224563440, 80469432, -11944304, -46012520, -71380208, -130646464, -206194400, -252554816,
+-263529536, -274076352, -303230048, -330179904, -329530816, -299793024, -249240176, -179660624, -96497712, -16281684,
+49042620, 103762112, 155969584, 203624400, 240106928, 264837344, 280934336, 287637184, 280503232, 256201248,
+214720448, 159932240, 99238440, 39739184, -15985331, -68172408, -114765824, -150986352, -173690096, -183660848,
+-183926064, -177937808, -168966160, -159263824, -149551296, -139858624, -130014568, -118512104, -101964672, -76892800,
+-41908144, 1741609, 50550156, 99314136, 142736800, 177676352, 203679696, 221240752, 230115216, 229246560,
+217352192, 193321312, 156962800, 110015584, 56170656, -140123, -54926188, -105112880, -148744912, -184897808,
+-212817248, -230854496, -236542640, -227862512, -204462448, -168132944, -122712584, -73326904, -24844238, 19481972,
+58070104, 90189480, 115522272, 134254240, 146931376, 154040080, 155942208, 153108608, 146082032, 135206112,
+120597848, 102302896, 80275088, 54349052, 24573656, -8286066, -42633456, -76381160, -107322640, -133334040,
+-152571200, -163738656, -166214160, -159895728, -145068432, -122527360, -93683976, -60323888, -24304684, 12397960,
+47603272, 79232480, 105656192, 125609536, 138077824, 142619216, 139570336, 129651104, 113653960, 92704720,
+68354944, 42062764, 14964203, -11664057, -36275292, -57592828, -74755520, -86879136, -93201864, -93776856,
+-89387936, -80867256, -69139312, -55655260, -41899552, -28639916, -16245177, -5225902, 4234301, 12647068,
+20462834, 27614492, 34209416, 40676560, 46849504, 51966420, 55684788, 57866096, 57622356, 54056996,
+47305308, 37140728, 22166326, 3399467, -12861280, -19901804, -17953500, -13210783, -10441065, },
},
{
{
501715520,
-460559008, 366155616, 224563440, 80469432, -11944304, -46012520, -71380208, -130646464, -206194400, -252554816,
--263529536, -274076352, -303230048, -330179904, -329530816, -299793024, -249240176, -179660624, -96497712, -16281684,
-49042620, 103762112, 155969584, 203624400, 240106928, 264837344, 280934336, 287637184, 280503232, 256201248,
-214720448, 159932240, 99238440, 39739184, -15985331, -68172408, -114765824, -150986352, -173690096, -183660848,
--183926064, -177937808, -168966160, -159263824, -149551296, -139858624, -130014568, -118512104, -101964672, -76892800,
--41908144, 1741609, 50550156, 99314136, 142736800, 177676352, 203679696, 221240752, 230115216, 229246560,
-217352192, 193321312, 156962800, 110015584, 56170656, -140123, -54926188, -105112880, -148744912, -184897808,
--212817248, -230854496, -236542640, -227862512, -204462448, -168132944, -122712584, -73326904, -24844238, 19481972,
-58070104, 90189480, 115522272, 134254240, 146931376, 154040080, 155942208, 153108608, 146082032, 135206112,
-120597848, 102302896, 80275088, 54349052, 24573656, -8286066, -42633456, -76381160, -107322640, -133334040,
--152571200, -163738656, -166214160, -159895728, -145068432, -122527360, -93683976, -60323888, -24304684, 12397960,
-47603272, 79232480, 105656192, 125609536, 138077824, 142619216, 139570336, 129651104, 113653960, 92704720,
-68354944, 42062764, 14964203, -11664057, -36275292, -57592828, -74755520, -86879136, -93201864, -93776856,
--89387936, -80867256, -69139312, -55655260, -41899552, -28639916, -16245177, -5225902, 4234301, 12647068,
-20462834, 27614492, 34209416, 40676560, 46849504, 51966420, 55684788, 57866096, 57622356, 54056996,
-47305308, 37140728, 22166326, 3399467, -12861280, -19901804, -17953500, -13210783, -10441065, },
+460559008, 366155616, 224563440, 80469432, -11944304, -46012520, -71380208, -130646464, -206194400, -252554816,
+-263529536, -274076352, -303230048, -330179904, -329530816, -299793024, -249240176, -179660624, -96497712, -16281684,
+49042620, 103762112, 155969584, 203624400, 240106928, 264837344, 280934336, 287637184, 280503232, 256201248,
+214720448, 159932240, 99238440, 39739184, -15985331, -68172408, -114765824, -150986352, -173690096, -183660848,
+-183926064, -177937808, -168966160, -159263824, -149551296, -139858624, -130014568, -118512104, -101964672, -76892800,
+-41908144, 1741609, 50550156, 99314136, 142736800, 177676352, 203679696, 221240752, 230115216, 229246560,
+217352192, 193321312, 156962800, 110015584, 56170656, -140123, -54926188, -105112880, -148744912, -184897808,
+-212817248, -230854496, -236542640, -227862512, -204462448, -168132944, -122712584, -73326904, -24844238, 19481972,
+58070104, 90189480, 115522272, 134254240, 146931376, 154040080, 155942208, 153108608, 146082032, 135206112,
+120597848, 102302896, 80275088, 54349052, 24573656, -8286066, -42633456, -76381160, -107322640, -133334040,
+-152571200, -163738656, -166214160, -159895728, -145068432, -122527360, -93683976, -60323888, -24304684, 12397960,
+47603272, 79232480, 105656192, 125609536, 138077824, 142619216, 139570336, 129651104, 113653960, 92704720,
+68354944, 42062764, 14964203, -11664057, -36275292, -57592828, -74755520, -86879136, -93201864, -93776856,
+-89387936, -80867256, -69139312, -55655260, -41899552, -28639916, -16245177, -5225902, 4234301, 12647068,
+20462834, 27614492, 34209416, 40676560, 46849504, 51966420, 55684788, 57866096, 57622356, 54056996,
+47305308, 37140728, 22166326, 3399467, -12861280, -19901804, -17953500, -13210783, -10441065, },
{
573552064,
-570192320, 581792000, 620967424, 671831104, 698598464, 681930752, 638787264, 598702848, 570998720, 549175488,
-537884544, 553273408, 596125376, 644172096, 676342976, 689677824, 687518528, 667147456, 629091904, 587057088,
-556523584, 538422976, 522272320, 501194752, 476544352, 450953856, 424396448, 396837248, 369501952, 342626720,
-314877472, 285514944, 255454992, 226385584, 200594832, 181621824, 173160192, 176257408, 188260768, 205153952,
-224390032, 244880784, 265123504, 282881056, 296865984, 307601248, 316306080, 323835712, 330969632, 338782720,
-348169376, 359361536, 371913568, 384639008, 395740960, 403618464, 407422208, 406582528, 400576032, 389836992,
-376057664, 360677408, 343627456, 324188960, 302208928, 277727072, 250390144, 220360816, 189325376, 159854384,
-134133976, 113651280, 99327024, 91166048, 87985624, 87882544, 89001384, 90074056, 90682328, 91105920,
-91786136, 93073016, 95422360, 99376952, 105186968, 112838456, 122489248, 134506560, 149102480, 166340320,
-186418768, 209624464, 236110992, 265856336, 298457280, 332832576, 367526272, 401262144, 432677152, 459869664,
-481246240, 496708128, 507029472, 512326784, 512221568, 507134720, 497961728, 484529216, 465722080, 441205344,
-411850848, 378432800, 341078912, 300298208, 257615904, 214704880, 172351664, 130707128, 90312960, 52321828,
-17476222, -14641544, -44763760, -72813120, -98525480, -122787208, -147041424, -171491072, -195217008, -217874032,
--239737024, -260137040, -277482816, -290973312, -301004192, -307948096, -311751808, -312641952, -311275072, -308364160,
--304645248, -300720736, -296806944, -293374176, -291637952, -292377760, -295200096, -300228960, -308901024, -321814912,
--338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, },
+570192320, 581792000, 620967424, 671831104, 698598464, 681930752, 638787264, 598702848, 570998720, 549175488,
+537884544, 553273408, 596125376, 644172096, 676342976, 689677824, 687518528, 667147456, 629091904, 587057088,
+556523584, 538422976, 522272320, 501194752, 476544352, 450953856, 424396448, 396837248, 369501952, 342626720,
+314877472, 285514944, 255454992, 226385584, 200594832, 181621824, 173160192, 176257408, 188260768, 205153952,
+224390032, 244880784, 265123504, 282881056, 296865984, 307601248, 316306080, 323835712, 330969632, 338782720,
+348169376, 359361536, 371913568, 384639008, 395740960, 403618464, 407422208, 406582528, 400576032, 389836992,
+376057664, 360677408, 343627456, 324188960, 302208928, 277727072, 250390144, 220360816, 189325376, 159854384,
+134133976, 113651280, 99327024, 91166048, 87985624, 87882544, 89001384, 90074056, 90682328, 91105920,
+91786136, 93073016, 95422360, 99376952, 105186968, 112838456, 122489248, 134506560, 149102480, 166340320,
+186418768, 209624464, 236110992, 265856336, 298457280, 332832576, 367526272, 401262144, 432677152, 459869664,
+481246240, 496708128, 507029472, 512326784, 512221568, 507134720, 497961728, 484529216, 465722080, 441205344,
+411850848, 378432800, 341078912, 300298208, 257615904, 214704880, 172351664, 130707128, 90312960, 52321828,
+17476222, -14641544, -44763760, -72813120, -98525480, -122787208, -147041424, -171491072, -195217008, -217874032,
+-239737024, -260137040, -277482816, -290973312, -301004192, -307948096, -311751808, -312641952, -311275072, -308364160,
+-304645248, -300720736, -296806944, -293374176, -291637952, -292377760, -295200096, -300228960, -308901024, -321814912,
+-338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, },
},
};
-const Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][160] ={
+const Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160] ={
{
{
12131672,
-35005056, 50895364, 46826956, 15495705, -17832168, -13483513, 15928960, 5836324, -50508816, -50141060,
-88496192, 286718048, 388669312, 358944384, 302016736, 293678048, 293919104, 242271056, 146592608, 40855876,
--71729712, -186644240, -259896528, -249916624, -171891568, -77554224, 1320166, 66618164, 127185256, 179485616,
-208453552, 196224176, 134799152, 35961760, -74894032, -176771184, -263083392, -337156544, -403115424, -459808448,
--500517760, -520093152, -522885440, -520588160, -522769984, -533068800, -552091200, -577720320, -603377920, -621745344,
--630650432, -632588544, -630336384, -625862080, -621228928, -617958272, -617169088, -621017920, -631350528, -647010496,
--665534720, -686553728, -709830336, -731014144, -743064768, -741031616, -723115712, -689573120, -643782848, -592302272,
--541145984, -493351616, -450879232, -415891872, -388977472, -368544160, -352527680, -338865952, -325068896, -309634400,
--293009120, -275597312, -256625376, -236331120, -216784176, -199284864, -183619520, -170708304, -163045552, -161851008,
--166402064, -176108688, -190615488, -208338128, -227175856, -245833728, -262890656, -276299552, -285124096, -289769632,
--289952704, -284990944, -276000512, -264748768, -250791200, -232823200, -211744576, -189266864, -165182288, -139047424,
--112483048, -87114824, -62633508, -38871600, -16938278, 3001645, 21852794, 39007968, 53010632, 64268280,
-73474008, 78717624, 77876344, 71662064, 60654064, 42243152, 13946833, -23653996, -70185136, -127838624,
--198167104, -280244992, -373098976, -476168544, -587304576, -703502208, -822057792, -938586688, -1047525888, -1146535040,
--1235352832, -1310038016, -1365803904, -1404562176, -1430346496, -1440137984, -1430087168, -1404998656, -1369252736, -1317694336,
--1246936960, -1155320960, -1014742400, -778383360, -456820768, -156443104, 11594801, 43531640, 16896938, },
+35005056, 50895364, 46826956, 15495705, -17832168, -13483513, 15928960, 5836324, -50508816, -50141060,
+88496192, 286718048, 388669312, 358944384, 302016736, 293678048, 293919104, 242271056, 146592608, 40855876,
+-71729712, -186644240, -259896528, -249916624, -171891568, -77554224, 1320166, 66618164, 127185256, 179485616,
+208453552, 196224176, 134799152, 35961760, -74894032, -176771184, -263083392, -337156544, -403115424, -459808448,
+-500517760, -520093152, -522885440, -520588160, -522769984, -533068800, -552091200, -577720320, -603377920, -621745344,
+-630650432, -632588544, -630336384, -625862080, -621228928, -617958272, -617169088, -621017920, -631350528, -647010496,
+-665534720, -686553728, -709830336, -731014144, -743064768, -741031616, -723115712, -689573120, -643782848, -592302272,
+-541145984, -493351616, -450879232, -415891872, -388977472, -368544160, -352527680, -338865952, -325068896, -309634400,
+-293009120, -275597312, -256625376, -236331120, -216784176, -199284864, -183619520, -170708304, -163045552, -161851008,
+-166402064, -176108688, -190615488, -208338128, -227175856, -245833728, -262890656, -276299552, -285124096, -289769632,
+-289952704, -284990944, -276000512, -264748768, -250791200, -232823200, -211744576, -189266864, -165182288, -139047424,
+-112483048, -87114824, -62633508, -38871600, -16938278, 3001645, 21852794, 39007968, 53010632, 64268280,
+73474008, 78717624, 77876344, 71662064, 60654064, 42243152, 13946833, -23653996, -70185136, -127838624,
+-198167104, -280244992, -373098976, -476168544, -587304576, -703502208, -822057792, -938586688, -1047525888, -1146535040,
+-1235352832, -1310038016, -1365803904, -1404562176, -1430346496, -1440137984, -1430087168, -1404998656, -1369252736, -1317694336,
+-1246936960, -1155320960, -1014742400, -778383360, -456820768, -156443104, 11594801, 43531640, 16896938, },
{
-43097848,
--167190736, -326224256, -425162560, -429956832, -408348320, -396827072, -346930816, -240030688, -150563840, -149945360,
--227132896, -334114080, -431730656, -465785984, -381590112, -200899776, -19745576, 100551624, 182485648, 254709808,
-295795456, 288805952, 270257056, 281600608, 315289248, 346260256, 379019584, 424518848, 459280704, 448139584,
-392080576, 318817024, 234920752, 120725624, -25675852, -167418368, -263528992, -308901024, -328545664, -343552832,
--356583744, -364620160, -368800800, -368111456, -355156736, -324841248, -281055680, -230317088, -174271520, -112592032,
--48478368, 13051869, 69172592, 118673168, 160411120, 194679056, 223423120, 247208656, 263940240, 271297504,
-268223392, 253909872, 228279120, 194260832, 157282240, 121650120, 88867704, 59459528, 34444564, 14427332,
--1388348, -14647449, -27005144, -40033392, -55187108, -73243152, -93707056, -114795888, -134174776, -150110720,
--162281040, -171633328, -179525872, -186728528, -192521904, -194249024, -188014880, -170518784, -140609712, -99453728,
--49912352, 3782256, 56306484, 102237400, 137370240, 159504352, 168786848, 167815648, 160851888, 152121840,
-144768848, 141185776, 143204944, 151323504, 164478464, 180984560, 198637408, 213429808, 219464240, 211020336,
-184103776, 136330848, 67433136, -19269370, -117235424, -219022400, -317232736, -403855232, -471103680, -513468160,
--527698464, -511415712, -463756064, -387076960, -286395936, -167771088, -38606388, 91831232, 214368800, 322013568,
-409529952, 472823296, 510125600, 522313120, 511061920, 477930016, 425322016, 356367392, 273709664, 180098720,
-79737144, -22600654, -122727080, -215745328, -295460992, -356861856, -397155104, -413489376, -403401568, -368710048,
--313911648, -239426704, -144517600, -42037528, 37808060, 69194608, 55704116, 26498874, 6231461, },
+-167190736, -326224256, -425162560, -429956832, -408348320, -396827072, -346930816, -240030688, -150563840, -149945360,
+-227132896, -334114080, -431730656, -465785984, -381590112, -200899776, -19745576, 100551624, 182485648, 254709808,
+295795456, 288805952, 270257056, 281600608, 315289248, 346260256, 379019584, 424518848, 459280704, 448139584,
+392080576, 318817024, 234920752, 120725624, -25675852, -167418368, -263528992, -308901024, -328545664, -343552832,
+-356583744, -364620160, -368800800, -368111456, -355156736, -324841248, -281055680, -230317088, -174271520, -112592032,
+-48478368, 13051869, 69172592, 118673168, 160411120, 194679056, 223423120, 247208656, 263940240, 271297504,
+268223392, 253909872, 228279120, 194260832, 157282240, 121650120, 88867704, 59459528, 34444564, 14427332,
+-1388348, -14647449, -27005144, -40033392, -55187108, -73243152, -93707056, -114795888, -134174776, -150110720,
+-162281040, -171633328, -179525872, -186728528, -192521904, -194249024, -188014880, -170518784, -140609712, -99453728,
+-49912352, 3782256, 56306484, 102237400, 137370240, 159504352, 168786848, 167815648, 160851888, 152121840,
+144768848, 141185776, 143204944, 151323504, 164478464, 180984560, 198637408, 213429808, 219464240, 211020336,
+184103776, 136330848, 67433136, -19269370, -117235424, -219022400, -317232736, -403855232, -471103680, -513468160,
+-527698464, -511415712, -463756064, -387076960, -286395936, -167771088, -38606388, 91831232, 214368800, 322013568,
+409529952, 472823296, 510125600, 522313120, 511061920, 477930016, 425322016, 356367392, 273709664, 180098720,
+79737144, -22600654, -122727080, -215745328, -295460992, -356861856, -397155104, -413489376, -403401568, -368710048,
+-313911648, -239426704, -144517600, -42037528, 37808060, 69194608, 55704116, 26498874, 6231461, },
},
{
{
-43097848,
--167190736, -326224256, -425162560, -429956832, -408348320, -396827072, -346930816, -240030688, -150563840, -149945360,
--227132896, -334114080, -431730656, -465785984, -381590112, -200899776, -19745576, 100551624, 182485648, 254709808,
-295795456, 288805952, 270257056, 281600608, 315289248, 346260256, 379019584, 424518848, 459280704, 448139584,
-392080576, 318817024, 234920752, 120725624, -25675852, -167418368, -263528992, -308901024, -328545664, -343552832,
--356583744, -364620160, -368800800, -368111456, -355156736, -324841248, -281055680, -230317088, -174271520, -112592032,
--48478368, 13051869, 69172592, 118673168, 160411120, 194679056, 223423120, 247208656, 263940240, 271297504,
-268223392, 253909872, 228279120, 194260832, 157282240, 121650120, 88867704, 59459528, 34444564, 14427332,
--1388348, -14647449, -27005144, -40033392, -55187108, -73243152, -93707056, -114795888, -134174776, -150110720,
--162281040, -171633328, -179525872, -186728528, -192521904, -194249024, -188014880, -170518784, -140609712, -99453728,
--49912352, 3782256, 56306484, 102237400, 137370240, 159504352, 168786848, 167815648, 160851888, 152121840,
-144768848, 141185776, 143204944, 151323504, 164478464, 180984560, 198637408, 213429808, 219464240, 211020336,
-184103776, 136330848, 67433136, -19269370, -117235424, -219022400, -317232736, -403855232, -471103680, -513468160,
--527698464, -511415712, -463756064, -387076960, -286395936, -167771088, -38606388, 91831232, 214368800, 322013568,
-409529952, 472823296, 510125600, 522313120, 511061920, 477930016, 425322016, 356367392, 273709664, 180098720,
-79737144, -22600654, -122727080, -215745328, -295460992, -356861856, -397155104, -413489376, -403401568, -368710048,
--313911648, -239426704, -144517600, -42037528, 37808060, 69194608, 55704116, 26498874, 6231461, },
+-167190736, -326224256, -425162560, -429956832, -408348320, -396827072, -346930816, -240030688, -150563840, -149945360,
+-227132896, -334114080, -431730656, -465785984, -381590112, -200899776, -19745576, 100551624, 182485648, 254709808,
+295795456, 288805952, 270257056, 281600608, 315289248, 346260256, 379019584, 424518848, 459280704, 448139584,
+392080576, 318817024, 234920752, 120725624, -25675852, -167418368, -263528992, -308901024, -328545664, -343552832,
+-356583744, -364620160, -368800800, -368111456, -355156736, -324841248, -281055680, -230317088, -174271520, -112592032,
+-48478368, 13051869, 69172592, 118673168, 160411120, 194679056, 223423120, 247208656, 263940240, 271297504,
+268223392, 253909872, 228279120, 194260832, 157282240, 121650120, 88867704, 59459528, 34444564, 14427332,
+-1388348, -14647449, -27005144, -40033392, -55187108, -73243152, -93707056, -114795888, -134174776, -150110720,
+-162281040, -171633328, -179525872, -186728528, -192521904, -194249024, -188014880, -170518784, -140609712, -99453728,
+-49912352, 3782256, 56306484, 102237400, 137370240, 159504352, 168786848, 167815648, 160851888, 152121840,
+144768848, 141185776, 143204944, 151323504, 164478464, 180984560, 198637408, 213429808, 219464240, 211020336,
+184103776, 136330848, 67433136, -19269370, -117235424, -219022400, -317232736, -403855232, -471103680, -513468160,
+-527698464, -511415712, -463756064, -387076960, -286395936, -167771088, -38606388, 91831232, 214368800, 322013568,
+409529952, 472823296, 510125600, 522313120, 511061920, 477930016, 425322016, 356367392, 273709664, 180098720,
+79737144, -22600654, -122727080, -215745328, -295460992, -356861856, -397155104, -413489376, -403401568, -368710048,
+-313911648, -239426704, -144517600, -42037528, 37808060, 69194608, 55704116, 26498874, 6231461, },
{
12131672,
-35005056, 50895364, 46826956, 15495705, -17832168, -13483513, 15928960, 5836324, -50508816, -50141060,
-88496192, 286718048, 388669312, 358944384, 302016736, 293678048, 293919104, 242271056, 146592608, 40855876,
--71729712, -186644240, -259896528, -249916624, -171891568, -77554224, 1320166, 66618164, 127185256, 179485616,
-208453552, 196224176, 134799152, 35961760, -74894032, -176771184, -263083392, -337156544, -403115424, -459808448,
--500517760, -520093152, -522885440, -520588160, -522769984, -533068800, -552091200, -577720320, -603377920, -621745344,
--630650432, -632588544, -630336384, -625862080, -621228928, -617958272, -617169088, -621017920, -631350528, -647010496,
--665534720, -686553728, -709830336, -731014144, -743064768, -741031616, -723115712, -689573120, -643782848, -592302272,
--541145984, -493351616, -450879232, -415891872, -388977472, -368544160, -352527680, -338865952, -325068896, -309634400,
--293009120, -275597312, -256625376, -236331120, -216784176, -199284864, -183619520, -170708304, -163045552, -161851008,
--166402064, -176108688, -190615488, -208338128, -227175856, -245833728, -262890656, -276299552, -285124096, -289769632,
--289952704, -284990944, -276000512, -264748768, -250791200, -232823200, -211744576, -189266864, -165182288, -139047424,
--112483048, -87114824, -62633508, -38871600, -16938278, 3001645, 21852794, 39007968, 53010632, 64268280,
-73474008, 78717624, 77876344, 71662064, 60654064, 42243152, 13946833, -23653996, -70185136, -127838624,
--198167104, -280244992, -373098976, -476168544, -587304576, -703502208, -822057792, -938586688, -1047525888, -1146535040,
--1235352832, -1310038016, -1365803904, -1404562176, -1430346496, -1440137984, -1430087168, -1404998656, -1369252736, -1317694336,
--1246936960, -1155320960, -1014742400, -778383360, -456820768, -156443104, 11594801, 43531640, 16896938, },
+35005056, 50895364, 46826956, 15495705, -17832168, -13483513, 15928960, 5836324, -50508816, -50141060,
+88496192, 286718048, 388669312, 358944384, 302016736, 293678048, 293919104, 242271056, 146592608, 40855876,
+-71729712, -186644240, -259896528, -249916624, -171891568, -77554224, 1320166, 66618164, 127185256, 179485616,
+208453552, 196224176, 134799152, 35961760, -74894032, -176771184, -263083392, -337156544, -403115424, -459808448,
+-500517760, -520093152, -522885440, -520588160, -522769984, -533068800, -552091200, -577720320, -603377920, -621745344,
+-630650432, -632588544, -630336384, -625862080, -621228928, -617958272, -617169088, -621017920, -631350528, -647010496,
+-665534720, -686553728, -709830336, -731014144, -743064768, -741031616, -723115712, -689573120, -643782848, -592302272,
+-541145984, -493351616, -450879232, -415891872, -388977472, -368544160, -352527680, -338865952, -325068896, -309634400,
+-293009120, -275597312, -256625376, -236331120, -216784176, -199284864, -183619520, -170708304, -163045552, -161851008,
+-166402064, -176108688, -190615488, -208338128, -227175856, -245833728, -262890656, -276299552, -285124096, -289769632,
+-289952704, -284990944, -276000512, -264748768, -250791200, -232823200, -211744576, -189266864, -165182288, -139047424,
+-112483048, -87114824, -62633508, -38871600, -16938278, 3001645, 21852794, 39007968, 53010632, 64268280,
+73474008, 78717624, 77876344, 71662064, 60654064, 42243152, 13946833, -23653996, -70185136, -127838624,
+-198167104, -280244992, -373098976, -476168544, -587304576, -703502208, -822057792, -938586688, -1047525888, -1146535040,
+-1235352832, -1310038016, -1365803904, -1404562176, -1430346496, -1440137984, -1430087168, -1404998656, -1369252736, -1317694336,
+-1246936960, -1155320960, -1014742400, -778383360, -456820768, -156443104, 11594801, 43531640, 16896938, },
},
{
{
11454678,
-12261595, -39353712, -116605680, -133135400, -55874840, 7644505, -60422136, -185013776, -157663952, 74794168,
-310658208, 345424896, 217707056, 119653496, 139996064, 194340288, 171745536, 57756572, -85087064, -191056256,
--229774848, -209300736, -159948336, -106610752, -55478092, -8877161, 19633906, 13015898, -35591320, -120874336,
--226771056, -328624576, -406721600, -460766784, -501388032, -528194528, -528187552, -496168032, -445522848, -397478816,
--367953056, -363930304, -382863040, -413397056, -442821856, -466120992, -485803200, -504309152, -519663648, -527787584,
--526773440, -518840640, -508476896, -498442752, -488485952, -478252128, -468951360, -460622880, -450411616, -435866688,
--418123104, -399991392, -382464704, -364528384, -345181152, -324685024, -304454656, -285758144, -268155744, -250039568,
--231118640, -213047024, -197261408, -183846608, -172690432, -163833680, -156576256, -150111792, -144944944, -142063552,
--141222816, -141463872, -142488224, -144411840, -147390928, -152274848, -160152352, -170881184, -183707024, -199021264,
--217329648, -236966224, -254967520, -269355104, -278557632, -280236960, -273142208, -258744944, -239172240, -215200944,
--187614368, -158353840, -129102960, -100698728, -74394736, -51687248, -33260226, -20282446, -15713675, -22118544,
--39787504, -68913288, -111002896, -165992976, -230904960, -303376640, -383343552, -469707840, -559023808, -649028096,
--740035776, -831807936, -922267968, -1009758080, -1093606016, -1172373632, -1243722624, -1305461760, -1355644672, -1393273984,
--1419281024, -1434560384, -1437935232, -1429216384, -1412040832, -1389403136, -1359531648, -1320978944, -1277201920, -1230462976,
--1176829568, -1113237248, -1042787456, -967061824, -881342848, -783402048, -677669056, -565563968, -442997952, -311154816,
--174498080, -24946244, 148259056, 319944992, 423110656, 406406976, 290862688, 151469008, 43244952, },
+12261595, -39353712, -116605680, -133135400, -55874840, 7644505, -60422136, -185013776, -157663952, 74794168,
+310658208, 345424896, 217707056, 119653496, 139996064, 194340288, 171745536, 57756572, -85087064, -191056256,
+-229774848, -209300736, -159948336, -106610752, -55478092, -8877161, 19633906, 13015898, -35591320, -120874336,
+-226771056, -328624576, -406721600, -460766784, -501388032, -528194528, -528187552, -496168032, -445522848, -397478816,
+-367953056, -363930304, -382863040, -413397056, -442821856, -466120992, -485803200, -504309152, -519663648, -527787584,
+-526773440, -518840640, -508476896, -498442752, -488485952, -478252128, -468951360, -460622880, -450411616, -435866688,
+-418123104, -399991392, -382464704, -364528384, -345181152, -324685024, -304454656, -285758144, -268155744, -250039568,
+-231118640, -213047024, -197261408, -183846608, -172690432, -163833680, -156576256, -150111792, -144944944, -142063552,
+-141222816, -141463872, -142488224, -144411840, -147390928, -152274848, -160152352, -170881184, -183707024, -199021264,
+-217329648, -236966224, -254967520, -269355104, -278557632, -280236960, -273142208, -258744944, -239172240, -215200944,
+-187614368, -158353840, -129102960, -100698728, -74394736, -51687248, -33260226, -20282446, -15713675, -22118544,
+-39787504, -68913288, -111002896, -165992976, -230904960, -303376640, -383343552, -469707840, -559023808, -649028096,
+-740035776, -831807936, -922267968, -1009758080, -1093606016, -1172373632, -1243722624, -1305461760, -1355644672, -1393273984,
+-1419281024, -1434560384, -1437935232, -1429216384, -1412040832, -1389403136, -1359531648, -1320978944, -1277201920, -1230462976,
+-1176829568, -1113237248, -1042787456, -967061824, -881342848, -783402048, -677669056, -565563968, -442997952, -311154816,
+-174498080, -24946244, 148259056, 319944992, 423110656, 406406976, 290862688, 151469008, 43244952, },
{
11454678,
-12261595, -39353712, -116605680, -133135400, -55874840, 7644505, -60422136, -185013776, -157663952, 74794168,
-310658208, 345424896, 217707056, 119653496, 139996064, 194340288, 171745536, 57756572, -85087064, -191056256,
--229774848, -209300736, -159948336, -106610752, -55478092, -8877161, 19633906, 13015898, -35591320, -120874336,
--226771056, -328624576, -406721600, -460766784, -501388032, -528194528, -528187552, -496168032, -445522848, -397478816,
--367953056, -363930304, -382863040, -413397056, -442821856, -466120992, -485803200, -504309152, -519663648, -527787584,
--526773440, -518840640, -508476896, -498442752, -488485952, -478252128, -468951360, -460622880, -450411616, -435866688,
--418123104, -399991392, -382464704, -364528384, -345181152, -324685024, -304454656, -285758144, -268155744, -250039568,
--231118640, -213047024, -197261408, -183846608, -172690432, -163833680, -156576256, -150111792, -144944944, -142063552,
--141222816, -141463872, -142488224, -144411840, -147390928, -152274848, -160152352, -170881184, -183707024, -199021264,
--217329648, -236966224, -254967520, -269355104, -278557632, -280236960, -273142208, -258744944, -239172240, -215200944,
--187614368, -158353840, -129102960, -100698728, -74394736, -51687248, -33260226, -20282446, -15713675, -22118544,
--39787504, -68913288, -111002896, -165992976, -230904960, -303376640, -383343552, -469707840, -559023808, -649028096,
--740035776, -831807936, -922267968, -1009758080, -1093606016, -1172373632, -1243722624, -1305461760, -1355644672, -1393273984,
--1419281024, -1434560384, -1437935232, -1429216384, -1412040832, -1389403136, -1359531648, -1320978944, -1277201920, -1230462976,
--1176829568, -1113237248, -1042787456, -967061824, -881342848, -783402048, -677669056, -565563968, -442997952, -311154816,
--174498080, -24946244, 148259056, 319944992, 423110656, 406406976, 290862688, 151469008, 43244952, },
+12261595, -39353712, -116605680, -133135400, -55874840, 7644505, -60422136, -185013776, -157663952, 74794168,
+310658208, 345424896, 217707056, 119653496, 139996064, 194340288, 171745536, 57756572, -85087064, -191056256,
+-229774848, -209300736, -159948336, -106610752, -55478092, -8877161, 19633906, 13015898, -35591320, -120874336,
+-226771056, -328624576, -406721600, -460766784, -501388032, -528194528, -528187552, -496168032, -445522848, -397478816,
+-367953056, -363930304, -382863040, -413397056, -442821856, -466120992, -485803200, -504309152, -519663648, -527787584,
+-526773440, -518840640, -508476896, -498442752, -488485952, -478252128, -468951360, -460622880, -450411616, -435866688,
+-418123104, -399991392, -382464704, -364528384, -345181152, -324685024, -304454656, -285758144, -268155744, -250039568,
+-231118640, -213047024, -197261408, -183846608, -172690432, -163833680, -156576256, -150111792, -144944944, -142063552,
+-141222816, -141463872, -142488224, -144411840, -147390928, -152274848, -160152352, -170881184, -183707024, -199021264,
+-217329648, -236966224, -254967520, -269355104, -278557632, -280236960, -273142208, -258744944, -239172240, -215200944,
+-187614368, -158353840, -129102960, -100698728, -74394736, -51687248, -33260226, -20282446, -15713675, -22118544,
+-39787504, -68913288, -111002896, -165992976, -230904960, -303376640, -383343552, -469707840, -559023808, -649028096,
+-740035776, -831807936, -922267968, -1009758080, -1093606016, -1172373632, -1243722624, -1305461760, -1355644672, -1393273984,
+-1419281024, -1434560384, -1437935232, -1429216384, -1412040832, -1389403136, -1359531648, -1320978944, -1277201920, -1230462976,
+-1176829568, -1113237248, -1042787456, -967061824, -881342848, -783402048, -677669056, -565563968, -442997952, -311154816,
+-174498080, -24946244, 148259056, 319944992, 423110656, 406406976, 290862688, 151469008, 43244952, },
},
{
{
6452115,
-35748088, 81947440, 111170400, 112590960, 95807832, 45698988, -49475340, -142197248, -175787648, -175914352,
--212588528, -284941024, -327417184, -321428896, -315450304, -334580096, -350572416, -347663104, -345804448, -348785152,
--331687424, -290392416, -252080752, -230411568, -215081232, -206860656, -219282240, -243322240, -249385136, -227857136,
--196457168, -167259456, -134793792, -96642136, -60622928, -30261266, -2485712, 19939922, 28740848, 22386980,
-7348152, -10490994, -27394912, -38426000, -40039832, -33959232, -24671902, -16234440, -13515188, -22138946,
--44678936, -79402672, -122788280, -170272368, -215612720, -253478768, -282667904, -304536256, -319520320, -327285632,
--328484992, -323923200, -313150912, -295553344, -271757088, -242979184, -210247232, -174942608, -138919104, -103535016,
--69322920, -36527624, -5060009, 25834766, 56970056, 88406536, 119745296, 150757104, 181040928, 209296448,
-233433616, 251415568, 261826032, 263540272, 254881072, 233442752, 197032704, 144379616, 74620760, -12745852,
--116058608, -230334800, -349448192, -468957824, -585466304, -694418368, -791117952, -873665600, -942570304, -997656448,
--1037813376, -1063725952, -1077990144, -1081780992, -1073710656, -1052800640, -1020519104, -979087168, -929881920, -874748480,
--817228096, -760950080, -707549696, -657069312, -609664704, -566065984, -526812640, -491839264, -460903136, -434124032,
--411802528, -393564512, -378035520, -363857280, -350761376, -339089824, -328770080, -319691072, -312706368, -309211872,
--309946304, -314980544, -324437536, -338422496, -356629920, -378493984, -403220672, -429656704, -456929760, -484799808,
--512288128, -536868768, -556423232, -570509632, -578120320, -576579520, -564771584, -544449920, -516401088, -479406944,
--433754656, -377739680, -299510080, -187618672, -59096064, 38548944, 70563088, 50473380, 16210817, },
+35748088, 81947440, 111170400, 112590960, 95807832, 45698988, -49475340, -142197248, -175787648, -175914352,
+-212588528, -284941024, -327417184, -321428896, -315450304, -334580096, -350572416, -347663104, -345804448, -348785152,
+-331687424, -290392416, -252080752, -230411568, -215081232, -206860656, -219282240, -243322240, -249385136, -227857136,
+-196457168, -167259456, -134793792, -96642136, -60622928, -30261266, -2485712, 19939922, 28740848, 22386980,
+7348152, -10490994, -27394912, -38426000, -40039832, -33959232, -24671902, -16234440, -13515188, -22138946,
+-44678936, -79402672, -122788280, -170272368, -215612720, -253478768, -282667904, -304536256, -319520320, -327285632,
+-328484992, -323923200, -313150912, -295553344, -271757088, -242979184, -210247232, -174942608, -138919104, -103535016,
+-69322920, -36527624, -5060009, 25834766, 56970056, 88406536, 119745296, 150757104, 181040928, 209296448,
+233433616, 251415568, 261826032, 263540272, 254881072, 233442752, 197032704, 144379616, 74620760, -12745852,
+-116058608, -230334800, -349448192, -468957824, -585466304, -694418368, -791117952, -873665600, -942570304, -997656448,
+-1037813376, -1063725952, -1077990144, -1081780992, -1073710656, -1052800640, -1020519104, -979087168, -929881920, -874748480,
+-817228096, -760950080, -707549696, -657069312, -609664704, -566065984, -526812640, -491839264, -460903136, -434124032,
+-411802528, -393564512, -378035520, -363857280, -350761376, -339089824, -328770080, -319691072, -312706368, -309211872,
+-309946304, -314980544, -324437536, -338422496, -356629920, -378493984, -403220672, -429656704, -456929760, -484799808,
+-512288128, -536868768, -556423232, -570509632, -578120320, -576579520, -564771584, -544449920, -516401088, -479406944,
+-433754656, -377739680, -299510080, -187618672, -59096064, 38548944, 70563088, 50473380, 16210817, },
{
-91094112,
--257185328, -369219552, -400231904, -368597312, -319030176, -265365632, -188064272, -89778240, -9618042, 29767344,
-50299436, 77788304, 108185392, 133609456, 170060848, 232147808, 298606528, 326328928, 290251200, 197411728,
-73894912, -49488224, -148460912, -214930368, -253069136, -264243568, -244646704, -199322448, -146183504, -100346544,
--62887448, -28630788, 4166655, 36424544, 71994392, 112148040, 150237424, 175736096, 181046832, 163393984,
-124688808, 72319736, 17476222, -29621852, -62667868, -78985520, -79509512, -69334192, -55685324, -44018584,
--36340256, -32390496, -30926448, -30215632, -28802050, -26255672, -22972170, -19587198, -16735877, -14687178,
--12751221, -9342628, -2680597, 8824010, 26312044, 49444200, 75296680, 98773512, 114386256, 117836720,
-106908176, 82078432, 46528456, 4988068, -37868188, -78277392, -113383376, -140904992, -158653408, -164096736,
--154611840, -128592392, -86696064, -32510218, 27528592, 85105312, 131944080, 161925632, 172267920, 163461088,
-138537392, 102168144, 59701120, 16331613, -23400056, -55914568, -78863656, -91271280, -93489624, -87109456,
--74745312, -59459528, -43966508, -30130806, -18906446, -10429791, -4144644, 904091, 5722507, 11215770,
-18139794, 26915486, 37363532, 48592188, 59057948, 66765268, 69696584, 66389992, 56364468, 40188008,
-19323058, -4177930, -28086402, -50346680, -69186552, -83109768, -90938952, -91835528, -85273352, -71162776,
--50123880, -23640036, 6007049, 35852240, 62478352, 82614768, 93869728, 95155536, 86802360, 70564168,
-49274012, 26030186, 3476239, -16371878, -32184874, -43548284, -50790672, -54296976, -54269060, -51174000,
--45562624, -37070400, -24777130, -9773735, 3378529, 9642202, 8386461, 3991098, 887448, },
+-257185328, -369219552, -400231904, -368597312, -319030176, -265365632, -188064272, -89778240, -9618042, 29767344,
+50299436, 77788304, 108185392, 133609456, 170060848, 232147808, 298606528, 326328928, 290251200, 197411728,
+73894912, -49488224, -148460912, -214930368, -253069136, -264243568, -244646704, -199322448, -146183504, -100346544,
+-62887448, -28630788, 4166655, 36424544, 71994392, 112148040, 150237424, 175736096, 181046832, 163393984,
+124688808, 72319736, 17476222, -29621852, -62667868, -78985520, -79509512, -69334192, -55685324, -44018584,
+-36340256, -32390496, -30926448, -30215632, -28802050, -26255672, -22972170, -19587198, -16735877, -14687178,
+-12751221, -9342628, -2680597, 8824010, 26312044, 49444200, 75296680, 98773512, 114386256, 117836720,
+106908176, 82078432, 46528456, 4988068, -37868188, -78277392, -113383376, -140904992, -158653408, -164096736,
+-154611840, -128592392, -86696064, -32510218, 27528592, 85105312, 131944080, 161925632, 172267920, 163461088,
+138537392, 102168144, 59701120, 16331613, -23400056, -55914568, -78863656, -91271280, -93489624, -87109456,
+-74745312, -59459528, -43966508, -30130806, -18906446, -10429791, -4144644, 904091, 5722507, 11215770,
+18139794, 26915486, 37363532, 48592188, 59057948, 66765268, 69696584, 66389992, 56364468, 40188008,
+19323058, -4177930, -28086402, -50346680, -69186552, -83109768, -90938952, -91835528, -85273352, -71162776,
+-50123880, -23640036, 6007049, 35852240, 62478352, 82614768, 93869728, 95155536, 86802360, 70564168,
+49274012, 26030186, 3476239, -16371878, -32184874, -43548284, -50790672, -54296976, -54269060, -51174000,
+-45562624, -37070400, -24777130, -9773735, 3378529, 9642202, 8386461, 3991098, 887448, },
},
{
{
-91094112,
--257185328, -369219552, -400231904, -368597312, -319030176, -265365632, -188064272, -89778240, -9618042, 29767344,
-50299436, 77788304, 108185392, 133609456, 170060848, 232147808, 298606528, 326328928, 290251200, 197411728,
-73894912, -49488224, -148460912, -214930368, -253069136, -264243568, -244646704, -199322448, -146183504, -100346544,
--62887448, -28630788, 4166655, 36424544, 71994392, 112148040, 150237424, 175736096, 181046832, 163393984,
-124688808, 72319736, 17476222, -29621852, -62667868, -78985520, -79509512, -69334192, -55685324, -44018584,
--36340256, -32390496, -30926448, -30215632, -28802050, -26255672, -22972170, -19587198, -16735877, -14687178,
--12751221, -9342628, -2680597, 8824010, 26312044, 49444200, 75296680, 98773512, 114386256, 117836720,
-106908176, 82078432, 46528456, 4988068, -37868188, -78277392, -113383376, -140904992, -158653408, -164096736,
--154611840, -128592392, -86696064, -32510218, 27528592, 85105312, 131944080, 161925632, 172267920, 163461088,
-138537392, 102168144, 59701120, 16331613, -23400056, -55914568, -78863656, -91271280, -93489624, -87109456,
--74745312, -59459528, -43966508, -30130806, -18906446, -10429791, -4144644, 904091, 5722507, 11215770,
-18139794, 26915486, 37363532, 48592188, 59057948, 66765268, 69696584, 66389992, 56364468, 40188008,
-19323058, -4177930, -28086402, -50346680, -69186552, -83109768, -90938952, -91835528, -85273352, -71162776,
--50123880, -23640036, 6007049, 35852240, 62478352, 82614768, 93869728, 95155536, 86802360, 70564168,
-49274012, 26030186, 3476239, -16371878, -32184874, -43548284, -50790672, -54296976, -54269060, -51174000,
--45562624, -37070400, -24777130, -9773735, 3378529, 9642202, 8386461, 3991098, 887448, },
+-257185328, -369219552, -400231904, -368597312, -319030176, -265365632, -188064272, -89778240, -9618042, 29767344,
+50299436, 77788304, 108185392, 133609456, 170060848, 232147808, 298606528, 326328928, 290251200, 197411728,
+73894912, -49488224, -148460912, -214930368, -253069136, -264243568, -244646704, -199322448, -146183504, -100346544,
+-62887448, -28630788, 4166655, 36424544, 71994392, 112148040, 150237424, 175736096, 181046832, 163393984,
+124688808, 72319736, 17476222, -29621852, -62667868, -78985520, -79509512, -69334192, -55685324, -44018584,
+-36340256, -32390496, -30926448, -30215632, -28802050, -26255672, -22972170, -19587198, -16735877, -14687178,
+-12751221, -9342628, -2680597, 8824010, 26312044, 49444200, 75296680, 98773512, 114386256, 117836720,
+106908176, 82078432, 46528456, 4988068, -37868188, -78277392, -113383376, -140904992, -158653408, -164096736,
+-154611840, -128592392, -86696064, -32510218, 27528592, 85105312, 131944080, 161925632, 172267920, 163461088,
+138537392, 102168144, 59701120, 16331613, -23400056, -55914568, -78863656, -91271280, -93489624, -87109456,
+-74745312, -59459528, -43966508, -30130806, -18906446, -10429791, -4144644, 904091, 5722507, 11215770,
+18139794, 26915486, 37363532, 48592188, 59057948, 66765268, 69696584, 66389992, 56364468, 40188008,
+19323058, -4177930, -28086402, -50346680, -69186552, -83109768, -90938952, -91835528, -85273352, -71162776,
+-50123880, -23640036, 6007049, 35852240, 62478352, 82614768, 93869728, 95155536, 86802360, 70564168,
+49274012, 26030186, 3476239, -16371878, -32184874, -43548284, -50790672, -54296976, -54269060, -51174000,
+-45562624, -37070400, -24777130, -9773735, 3378529, 9642202, 8386461, 3991098, 887448, },
{
6452115,
-35748088, 81947440, 111170400, 112590960, 95807832, 45698988, -49475340, -142197248, -175787648, -175914352,
--212588528, -284941024, -327417184, -321428896, -315450304, -334580096, -350572416, -347663104, -345804448, -348785152,
--331687424, -290392416, -252080752, -230411568, -215081232, -206860656, -219282240, -243322240, -249385136, -227857136,
--196457168, -167259456, -134793792, -96642136, -60622928, -30261266, -2485712, 19939922, 28740848, 22386980,
-7348152, -10490994, -27394912, -38426000, -40039832, -33959232, -24671902, -16234440, -13515188, -22138946,
--44678936, -79402672, -122788280, -170272368, -215612720, -253478768, -282667904, -304536256, -319520320, -327285632,
--328484992, -323923200, -313150912, -295553344, -271757088, -242979184, -210247232, -174942608, -138919104, -103535016,
--69322920, -36527624, -5060009, 25834766, 56970056, 88406536, 119745296, 150757104, 181040928, 209296448,
-233433616, 251415568, 261826032, 263540272, 254881072, 233442752, 197032704, 144379616, 74620760, -12745852,
--116058608, -230334800, -349448192, -468957824, -585466304, -694418368, -791117952, -873665600, -942570304, -997656448,
--1037813376, -1063725952, -1077990144, -1081780992, -1073710656, -1052800640, -1020519104, -979087168, -929881920, -874748480,
--817228096, -760950080, -707549696, -657069312, -609664704, -566065984, -526812640, -491839264, -460903136, -434124032,
--411802528, -393564512, -378035520, -363857280, -350761376, -339089824, -328770080, -319691072, -312706368, -309211872,
--309946304, -314980544, -324437536, -338422496, -356629920, -378493984, -403220672, -429656704, -456929760, -484799808,
--512288128, -536868768, -556423232, -570509632, -578120320, -576579520, -564771584, -544449920, -516401088, -479406944,
--433754656, -377739680, -299510080, -187618672, -59096064, 38548944, 70563088, 50473380, 16210817, },
+35748088, 81947440, 111170400, 112590960, 95807832, 45698988, -49475340, -142197248, -175787648, -175914352,
+-212588528, -284941024, -327417184, -321428896, -315450304, -334580096, -350572416, -347663104, -345804448, -348785152,
+-331687424, -290392416, -252080752, -230411568, -215081232, -206860656, -219282240, -243322240, -249385136, -227857136,
+-196457168, -167259456, -134793792, -96642136, -60622928, -30261266, -2485712, 19939922, 28740848, 22386980,
+7348152, -10490994, -27394912, -38426000, -40039832, -33959232, -24671902, -16234440, -13515188, -22138946,
+-44678936, -79402672, -122788280, -170272368, -215612720, -253478768, -282667904, -304536256, -319520320, -327285632,
+-328484992, -323923200, -313150912, -295553344, -271757088, -242979184, -210247232, -174942608, -138919104, -103535016,
+-69322920, -36527624, -5060009, 25834766, 56970056, 88406536, 119745296, 150757104, 181040928, 209296448,
+233433616, 251415568, 261826032, 263540272, 254881072, 233442752, 197032704, 144379616, 74620760, -12745852,
+-116058608, -230334800, -349448192, -468957824, -585466304, -694418368, -791117952, -873665600, -942570304, -997656448,
+-1037813376, -1063725952, -1077990144, -1081780992, -1073710656, -1052800640, -1020519104, -979087168, -929881920, -874748480,
+-817228096, -760950080, -707549696, -657069312, -609664704, -566065984, -526812640, -491839264, -460903136, -434124032,
+-411802528, -393564512, -378035520, -363857280, -350761376, -339089824, -328770080, -319691072, -312706368, -309211872,
+-309946304, -314980544, -324437536, -338422496, -356629920, -378493984, -403220672, -429656704, -456929760, -484799808,
+-512288128, -536868768, -556423232, -570509632, -578120320, -576579520, -564771584, -544449920, -516401088, -479406944,
+-433754656, -377739680, -299510080, -187618672, -59096064, 38548944, 70563088, 50473380, 16210817, },
},
{
{
7919920,
-43446816, 104918000, 148874304, 138170704, 83917216, 15482820, -60879012, -143749872, -202633328, -207747568,
--184090896, -187100592, -222344016, -238450672, -210530704, -179610704, -185786864, -208447648, -206863872, -183740304,
--169309760, -167556336, -157913056, -136191808, -118551832, -110594336, -100373920, -80657336, -58070644, -40783400,
--30984968, -27802934, -27360016, -22086870, -7280507, 13779329, 34718904, 51856900, 62892280, 65432752,
-59639916, 48164300, 32096290, 10749229, -14424648, -39697844, -62912144, -84523880, -105623448, -127484832,
--151991920, -180360704, -212206816, -246526288, -282065536, -316742560, -348788928, -378200864, -405123872, -427867872,
--444754592, -456467520, -464216160, -467251648, -464473856, -456580256, -444310624, -426387168, -401278272, -369414976,
--332223776, -290739744, -246373280, -201346464, -157460480, -115644144, -76794016, -41654740, -10200547, 17439714,
-40042516, 56556128, 67292472, 72427104, 70361224, 58948428, 37329172, 5191005, -38839928, -96605088,
--168503920, -253121216, -348580608, -453376224, -565388928, -680615424, -794080960, -902358144, -1003945408, -1096694144,
--1176855936, -1242011136, -1292803968, -1329907584, -1351437184, -1355673728, -1344186752, -1319600768, -1282316672, -1232374784,
--1172863232, -1108547200, -1042297856, -975305984, -909583872, -847816320, -791289216, -739690560, -692638656, -650415360,
--613473280, -581705536, -554161920, -529680608, -507825120, -488477376, -470631776, -452970336, -435749120, -420651776,
--408776736, -400292032, -395874112, -396789472, -403652832, -416310656, -434459040, -457537504, -484837376, -515965696,
--549921728, -584192320, -616537216, -646397952, -672314304, -690305408, -697493568, -693863232, -677921920, -645913664,
--596482880, -525728160, -416760544, -255793760, -71349608, 65669512, 106195216, 73027328, 22857816, },
+43446816, 104918000, 148874304, 138170704, 83917216, 15482820, -60879012, -143749872, -202633328, -207747568,
+-184090896, -187100592, -222344016, -238450672, -210530704, -179610704, -185786864, -208447648, -206863872, -183740304,
+-169309760, -167556336, -157913056, -136191808, -118551832, -110594336, -100373920, -80657336, -58070644, -40783400,
+-30984968, -27802934, -27360016, -22086870, -7280507, 13779329, 34718904, 51856900, 62892280, 65432752,
+59639916, 48164300, 32096290, 10749229, -14424648, -39697844, -62912144, -84523880, -105623448, -127484832,
+-151991920, -180360704, -212206816, -246526288, -282065536, -316742560, -348788928, -378200864, -405123872, -427867872,
+-444754592, -456467520, -464216160, -467251648, -464473856, -456580256, -444310624, -426387168, -401278272, -369414976,
+-332223776, -290739744, -246373280, -201346464, -157460480, -115644144, -76794016, -41654740, -10200547, 17439714,
+40042516, 56556128, 67292472, 72427104, 70361224, 58948428, 37329172, 5191005, -38839928, -96605088,
+-168503920, -253121216, -348580608, -453376224, -565388928, -680615424, -794080960, -902358144, -1003945408, -1096694144,
+-1176855936, -1242011136, -1292803968, -1329907584, -1351437184, -1355673728, -1344186752, -1319600768, -1282316672, -1232374784,
+-1172863232, -1108547200, -1042297856, -975305984, -909583872, -847816320, -791289216, -739690560, -692638656, -650415360,
+-613473280, -581705536, -554161920, -529680608, -507825120, -488477376, -470631776, -452970336, -435749120, -420651776,
+-408776736, -400292032, -395874112, -396789472, -403652832, -416310656, -434459040, -457537504, -484837376, -515965696,
+-549921728, -584192320, -616537216, -646397952, -672314304, -690305408, -697493568, -693863232, -677921920, -645913664,
+-596482880, -525728160, -416760544, -255793760, -71349608, 65669512, 106195216, 73027328, 22857816, },
{
-121877216,
--327947584, -439449792, -444051840, -368772320, -245394560, -86295016, 97210144, 264148544, 356093600, 346553920,
-263942928, 159240208, 62202400, -24676198, -102194448, -160061088, -186785440, -183974928, -163762272, -133193376,
--87690344, -23799488, 46799036, 103836200, 137122192, 150417808, 147615344, 125519880, 83253648, 29818348,
--22703198, -67650568, -102025336, -122039352, -124650152, -110064976, -80442592, -39573828, 4927938, 43437152,
-70527656, 86892560, 94581624, 93367224, 82184200, 61012156, 30724586, -6254010, -44463112, -76524504,
--96368328, -100777648, -89137752, -63811404, -30434138, 3992709, 33851860, 55915104, 69026032, 73909408,
-72473816, 66124244, 54713052, 37222872, 12999792, -17475686, -51810192, -84977000, -109717088, -118276424,
--104702176, -67335960, -11045045, 52493628, 107759656, 140545824, 142772768, 115008488, 65794068, 8034810,
--45649060, -86090472, -108358800, -111161808, -95987688, -66394288, -27647242, 13440563, 49265424, 73232952,
-81687592, 74739944, 55793236, 30321932, 4263292, -17572322, -32429150, -39607116, -39949640, -35240208,
--27561342, -18732500, -10036265, -2222109, 4449049, 10092636, 14942728, 19077708, 22303766, 24113558,
-23716272, 20292110, 13478144, 3739843, -7605850, -18616536, -27125940, -31294206, -30157112, -23889144,
--13728863, -1690607, 9903121, 19017042, 24391120, 25682294, 23306104, 18159658, 11337103, 3865471,
--3420942, -9860171, -14895483, -18075906, -19086298, -17766670, -14164802, -8636105, -1872606, 5182415,
-11490111, 16064788, 18162880, 17501992, 14358613, 9434969, 3633542, -2091649, -6881612, -10204305,
--11922829, -11974906, -10144176, -6567005, -2434710, 442919, 1197222, 654983, 130460, },
+-327947584, -439449792, -444051840, -368772320, -245394560, -86295016, 97210144, 264148544, 356093600, 346553920,
+263942928, 159240208, 62202400, -24676198, -102194448, -160061088, -186785440, -183974928, -163762272, -133193376,
+-87690344, -23799488, 46799036, 103836200, 137122192, 150417808, 147615344, 125519880, 83253648, 29818348,
+-22703198, -67650568, -102025336, -122039352, -124650152, -110064976, -80442592, -39573828, 4927938, 43437152,
+70527656, 86892560, 94581624, 93367224, 82184200, 61012156, 30724586, -6254010, -44463112, -76524504,
+-96368328, -100777648, -89137752, -63811404, -30434138, 3992709, 33851860, 55915104, 69026032, 73909408,
+72473816, 66124244, 54713052, 37222872, 12999792, -17475686, -51810192, -84977000, -109717088, -118276424,
+-104702176, -67335960, -11045045, 52493628, 107759656, 140545824, 142772768, 115008488, 65794068, 8034810,
+-45649060, -86090472, -108358800, -111161808, -95987688, -66394288, -27647242, 13440563, 49265424, 73232952,
+81687592, 74739944, 55793236, 30321932, 4263292, -17572322, -32429150, -39607116, -39949640, -35240208,
+-27561342, -18732500, -10036265, -2222109, 4449049, 10092636, 14942728, 19077708, 22303766, 24113558,
+23716272, 20292110, 13478144, 3739843, -7605850, -18616536, -27125940, -31294206, -30157112, -23889144,
+-13728863, -1690607, 9903121, 19017042, 24391120, 25682294, 23306104, 18159658, 11337103, 3865471,
+-3420942, -9860171, -14895483, -18075906, -19086298, -17766670, -14164802, -8636105, -1872606, 5182415,
+11490111, 16064788, 18162880, 17501992, 14358613, 9434969, 3633542, -2091649, -6881612, -10204305,
+-11922829, -11974906, -10144176, -6567005, -2434710, 442919, 1197222, 654983, 130460, },
},
{
{
-121877216,
--327947584, -439449792, -444051840, -368772320, -245394560, -86295016, 97210144, 264148544, 356093600, 346553920,
-263942928, 159240208, 62202400, -24676198, -102194448, -160061088, -186785440, -183974928, -163762272, -133193376,
--87690344, -23799488, 46799036, 103836200, 137122192, 150417808, 147615344, 125519880, 83253648, 29818348,
--22703198, -67650568, -102025336, -122039352, -124650152, -110064976, -80442592, -39573828, 4927938, 43437152,
-70527656, 86892560, 94581624, 93367224, 82184200, 61012156, 30724586, -6254010, -44463112, -76524504,
--96368328, -100777648, -89137752, -63811404, -30434138, 3992709, 33851860, 55915104, 69026032, 73909408,
-72473816, 66124244, 54713052, 37222872, 12999792, -17475686, -51810192, -84977000, -109717088, -118276424,
--104702176, -67335960, -11045045, 52493628, 107759656, 140545824, 142772768, 115008488, 65794068, 8034810,
--45649060, -86090472, -108358800, -111161808, -95987688, -66394288, -27647242, 13440563, 49265424, 73232952,
-81687592, 74739944, 55793236, 30321932, 4263292, -17572322, -32429150, -39607116, -39949640, -35240208,
--27561342, -18732500, -10036265, -2222109, 4449049, 10092636, 14942728, 19077708, 22303766, 24113558,
-23716272, 20292110, 13478144, 3739843, -7605850, -18616536, -27125940, -31294206, -30157112, -23889144,
--13728863, -1690607, 9903121, 19017042, 24391120, 25682294, 23306104, 18159658, 11337103, 3865471,
--3420942, -9860171, -14895483, -18075906, -19086298, -17766670, -14164802, -8636105, -1872606, 5182415,
-11490111, 16064788, 18162880, 17501992, 14358613, 9434969, 3633542, -2091649, -6881612, -10204305,
--11922829, -11974906, -10144176, -6567005, -2434710, 442919, 1197222, 654983, 130460, },
+-327947584, -439449792, -444051840, -368772320, -245394560, -86295016, 97210144, 264148544, 356093600, 346553920,
+263942928, 159240208, 62202400, -24676198, -102194448, -160061088, -186785440, -183974928, -163762272, -133193376,
+-87690344, -23799488, 46799036, 103836200, 137122192, 150417808, 147615344, 125519880, 83253648, 29818348,
+-22703198, -67650568, -102025336, -122039352, -124650152, -110064976, -80442592, -39573828, 4927938, 43437152,
+70527656, 86892560, 94581624, 93367224, 82184200, 61012156, 30724586, -6254010, -44463112, -76524504,
+-96368328, -100777648, -89137752, -63811404, -30434138, 3992709, 33851860, 55915104, 69026032, 73909408,
+72473816, 66124244, 54713052, 37222872, 12999792, -17475686, -51810192, -84977000, -109717088, -118276424,
+-104702176, -67335960, -11045045, 52493628, 107759656, 140545824, 142772768, 115008488, 65794068, 8034810,
+-45649060, -86090472, -108358800, -111161808, -95987688, -66394288, -27647242, 13440563, 49265424, 73232952,
+81687592, 74739944, 55793236, 30321932, 4263292, -17572322, -32429150, -39607116, -39949640, -35240208,
+-27561342, -18732500, -10036265, -2222109, 4449049, 10092636, 14942728, 19077708, 22303766, 24113558,
+23716272, 20292110, 13478144, 3739843, -7605850, -18616536, -27125940, -31294206, -30157112, -23889144,
+-13728863, -1690607, 9903121, 19017042, 24391120, 25682294, 23306104, 18159658, 11337103, 3865471,
+-3420942, -9860171, -14895483, -18075906, -19086298, -17766670, -14164802, -8636105, -1872606, 5182415,
+11490111, 16064788, 18162880, 17501992, 14358613, 9434969, 3633542, -2091649, -6881612, -10204305,
+-11922829, -11974906, -10144176, -6567005, -2434710, 442919, 1197222, 654983, 130460, },
{
7919920,
-43446816, 104918000, 148874304, 138170704, 83917216, 15482820, -60879012, -143749872, -202633328, -207747568,
--184090896, -187100592, -222344016, -238450672, -210530704, -179610704, -185786864, -208447648, -206863872, -183740304,
--169309760, -167556336, -157913056, -136191808, -118551832, -110594336, -100373920, -80657336, -58070644, -40783400,
--30984968, -27802934, -27360016, -22086870, -7280507, 13779329, 34718904, 51856900, 62892280, 65432752,
-59639916, 48164300, 32096290, 10749229, -14424648, -39697844, -62912144, -84523880, -105623448, -127484832,
--151991920, -180360704, -212206816, -246526288, -282065536, -316742560, -348788928, -378200864, -405123872, -427867872,
--444754592, -456467520, -464216160, -467251648, -464473856, -456580256, -444310624, -426387168, -401278272, -369414976,
--332223776, -290739744, -246373280, -201346464, -157460480, -115644144, -76794016, -41654740, -10200547, 17439714,
-40042516, 56556128, 67292472, 72427104, 70361224, 58948428, 37329172, 5191005, -38839928, -96605088,
--168503920, -253121216, -348580608, -453376224, -565388928, -680615424, -794080960, -902358144, -1003945408, -1096694144,
--1176855936, -1242011136, -1292803968, -1329907584, -1351437184, -1355673728, -1344186752, -1319600768, -1282316672, -1232374784,
--1172863232, -1108547200, -1042297856, -975305984, -909583872, -847816320, -791289216, -739690560, -692638656, -650415360,
--613473280, -581705536, -554161920, -529680608, -507825120, -488477376, -470631776, -452970336, -435749120, -420651776,
--408776736, -400292032, -395874112, -396789472, -403652832, -416310656, -434459040, -457537504, -484837376, -515965696,
--549921728, -584192320, -616537216, -646397952, -672314304, -690305408, -697493568, -693863232, -677921920, -645913664,
--596482880, -525728160, -416760544, -255793760, -71349608, 65669512, 106195216, 73027328, 22857816, },
+43446816, 104918000, 148874304, 138170704, 83917216, 15482820, -60879012, -143749872, -202633328, -207747568,
+-184090896, -187100592, -222344016, -238450672, -210530704, -179610704, -185786864, -208447648, -206863872, -183740304,
+-169309760, -167556336, -157913056, -136191808, -118551832, -110594336, -100373920, -80657336, -58070644, -40783400,
+-30984968, -27802934, -27360016, -22086870, -7280507, 13779329, 34718904, 51856900, 62892280, 65432752,
+59639916, 48164300, 32096290, 10749229, -14424648, -39697844, -62912144, -84523880, -105623448, -127484832,
+-151991920, -180360704, -212206816, -246526288, -282065536, -316742560, -348788928, -378200864, -405123872, -427867872,
+-444754592, -456467520, -464216160, -467251648, -464473856, -456580256, -444310624, -426387168, -401278272, -369414976,
+-332223776, -290739744, -246373280, -201346464, -157460480, -115644144, -76794016, -41654740, -10200547, 17439714,
+40042516, 56556128, 67292472, 72427104, 70361224, 58948428, 37329172, 5191005, -38839928, -96605088,
+-168503920, -253121216, -348580608, -453376224, -565388928, -680615424, -794080960, -902358144, -1003945408, -1096694144,
+-1176855936, -1242011136, -1292803968, -1329907584, -1351437184, -1355673728, -1344186752, -1319600768, -1282316672, -1232374784,
+-1172863232, -1108547200, -1042297856, -975305984, -909583872, -847816320, -791289216, -739690560, -692638656, -650415360,
+-613473280, -581705536, -554161920, -529680608, -507825120, -488477376, -470631776, -452970336, -435749120, -420651776,
+-408776736, -400292032, -395874112, -396789472, -403652832, -416310656, -434459040, -457537504, -484837376, -515965696,
+-549921728, -584192320, -616537216, -646397952, -672314304, -690305408, -697493568, -693863232, -677921920, -645913664,
+-596482880, -525728160, -416760544, -255793760, -71349608, 65669512, 106195216, 73027328, 22857816, },
},
{
{
23198728,
-61559228, 95750928, 137297760, 153484944, 96155728, -12480638, -93413928, -121580864, -149810608, -202373488,
--222976448, -169002128, -89407264, -54619636, -60062432, -57067768, -40763536, -44826572, -70948024, -84447112,
--75777720, -76200776, -105965968, -143970528, -158818224, -144399488, -115995256, -89512488, -71548248, -57189100,
--33515778, 5246840, 45134200, 63794224, 54092964, 28249610, 206695, -26316876, -52092584, -74698072,
--90745144, -100841000, -109150152, -120179624, -137001936, -160759008, -191203360, -228334416, -272725056, -323382592,
--376589184, -428057920, -475202176, -516584704, -550901504, -578105280, -600600704, -621953664, -644768000, -670379968,
--699618496, -732452480, -766789120, -798380224, -822325184, -834703296, -833034688, -816078656, -784167104, -739744768,
--686587584, -627903296, -565669184, -501964096, -439806272, -381877344, -329149120, -281542080, -239374640, -203550848,
--174959248, -154366496, -142524192, -139860784, -146122304, -160189936, -180045568, -203606688, -230465264, -262363440,
--301331136, -348290176, -404322304, -471761888, -552131456, -643851584, -743671424, -849317952, -958592128, -1066663168,
--1166864768, -1254281344, -1326654720, -1382013056, -1417960960, -1434180864, -1433740032, -1420624896, -1397040128, -1364187904,
--1324459520, -1280886528, -1234519680, -1184113920, -1128929408, -1070315008, -1009779008, -947248064, -882750528, -818495168,
--757349824, -700115648, -646115008, -595666304, -549934592, -508849472, -471224480, -436821248, -406718368, -381813472,
--362260640, -348076512, -339271264, -335725792, -337478144, -344461216, -355828384, -370701856, -389412352, -412315264,
--437762944, -463297056, -488082752, -511443104, -529989824, -539554176, -538693568, -526605952, -499879424, -455919360,
--395226112, -312759520, -194631808, -41409928, 105241192, 182446992, 166282880, 96889632, 28705414, },
+61559228, 95750928, 137297760, 153484944, 96155728, -12480638, -93413928, -121580864, -149810608, -202373488,
+-222976448, -169002128, -89407264, -54619636, -60062432, -57067768, -40763536, -44826572, -70948024, -84447112,
+-75777720, -76200776, -105965968, -143970528, -158818224, -144399488, -115995256, -89512488, -71548248, -57189100,
+-33515778, 5246840, 45134200, 63794224, 54092964, 28249610, 206695, -26316876, -52092584, -74698072,
+-90745144, -100841000, -109150152, -120179624, -137001936, -160759008, -191203360, -228334416, -272725056, -323382592,
+-376589184, -428057920, -475202176, -516584704, -550901504, -578105280, -600600704, -621953664, -644768000, -670379968,
+-699618496, -732452480, -766789120, -798380224, -822325184, -834703296, -833034688, -816078656, -784167104, -739744768,
+-686587584, -627903296, -565669184, -501964096, -439806272, -381877344, -329149120, -281542080, -239374640, -203550848,
+-174959248, -154366496, -142524192, -139860784, -146122304, -160189936, -180045568, -203606688, -230465264, -262363440,
+-301331136, -348290176, -404322304, -471761888, -552131456, -643851584, -743671424, -849317952, -958592128, -1066663168,
+-1166864768, -1254281344, -1326654720, -1382013056, -1417960960, -1434180864, -1433740032, -1420624896, -1397040128, -1364187904,
+-1324459520, -1280886528, -1234519680, -1184113920, -1128929408, -1070315008, -1009779008, -947248064, -882750528, -818495168,
+-757349824, -700115648, -646115008, -595666304, -549934592, -508849472, -471224480, -436821248, -406718368, -381813472,
+-362260640, -348076512, -339271264, -335725792, -337478144, -344461216, -355828384, -370701856, -389412352, -412315264,
+-437762944, -463297056, -488082752, -511443104, -529989824, -539554176, -538693568, -526605952, -499879424, -455919360,
+-395226112, -312759520, -194631808, -41409928, 105241192, 182446992, 166282880, 96889632, 28705414, },
{
-134710032,
--355053664, -462356992, -454677056, -356599328, -183980288, 41285372, 262398336, 404443104, 426653472, 346123904,
-208153440, 46777564, -119379152, -266092016, -356883328, -362540864, -282207264, -142656272, 19508278, 171784736,
-286243456, 337028768, 307856288, 205042272, 59186260, -89668720, -208699440, -276937344, -282728576, -225512624,
--120118960, 6251325, 123831960, 207502752, 239558240, 214040768, 141594864, 46226196, -46559056, -119185880,
--162174208, -170762528, -145114064, -92316024, -25178708, 41701984, 95078224, 124908384, 126542624, 102476312,
-61328376, 14045617, -29835528, -63623500, -83169896, -86727200, -75383120, -52842056, -24046448, 6167036,
-33442762, 54068268, 65636228, 67444408, 59914256, 43849468, 20435454, -8358007, -39323648, -67309656,
--85029080, -85099408, -64057828, -25326348, 21291764, 63022204, 88467200, 91458104, 73073496, 40547176,
-3528316, -29810832, -54602456, -68857992, -72016400, -63786168, -44141528, -14494978, 20885352, 54527832,
-77333568, 81899656, 66048544, 34309808, -3853123, -37948720, -60123100, -67015984, -59624884, -41827076,
--18555870, 5486821, 26436060, 41576896, 49426484, 49449032, 41713796, 26975616, 6971269, -15485505,
--36599564, -51846696, -56868052, -49102752, -29229400, -1492501, 27186606, 49115100, 58404576, 53124988,
-35735740, 11730629, -12408161, -31103616, -41052372, -41626288, -34236796, -21403970, -6115497, 8734353,
-20910048, 28959890, 31982474, 29651380, 22461606, 11644193, -1104344, -13655849, -23618562, -29010356,
--28798292, -22879290, -12122545, 1396401, 14827301, 25492242, 31286690, 30774514, 23921894, 12525735,
--779000, -13266080, -21409876, -21661668, -14317273, -5112085, -53687, 488016, 18790, },
+-355053664, -462356992, -454677056, -356599328, -183980288, 41285372, 262398336, 404443104, 426653472, 346123904,
+208153440, 46777564, -119379152, -266092016, -356883328, -362540864, -282207264, -142656272, 19508278, 171784736,
+286243456, 337028768, 307856288, 205042272, 59186260, -89668720, -208699440, -276937344, -282728576, -225512624,
+-120118960, 6251325, 123831960, 207502752, 239558240, 214040768, 141594864, 46226196, -46559056, -119185880,
+-162174208, -170762528, -145114064, -92316024, -25178708, 41701984, 95078224, 124908384, 126542624, 102476312,
+61328376, 14045617, -29835528, -63623500, -83169896, -86727200, -75383120, -52842056, -24046448, 6167036,
+33442762, 54068268, 65636228, 67444408, 59914256, 43849468, 20435454, -8358007, -39323648, -67309656,
+-85029080, -85099408, -64057828, -25326348, 21291764, 63022204, 88467200, 91458104, 73073496, 40547176,
+3528316, -29810832, -54602456, -68857992, -72016400, -63786168, -44141528, -14494978, 20885352, 54527832,
+77333568, 81899656, 66048544, 34309808, -3853123, -37948720, -60123100, -67015984, -59624884, -41827076,
+-18555870, 5486821, 26436060, 41576896, 49426484, 49449032, 41713796, 26975616, 6971269, -15485505,
+-36599564, -51846696, -56868052, -49102752, -29229400, -1492501, 27186606, 49115100, 58404576, 53124988,
+35735740, 11730629, -12408161, -31103616, -41052372, -41626288, -34236796, -21403970, -6115497, 8734353,
+20910048, 28959890, 31982474, 29651380, 22461606, 11644193, -1104344, -13655849, -23618562, -29010356,
+-28798292, -22879290, -12122545, 1396401, 14827301, 25492242, 31286690, 30774514, 23921894, 12525735,
+-779000, -13266080, -21409876, -21661668, -14317273, -5112085, -53687, 488016, 18790, },
},
{
{
-134710032,
--355053664, -462356992, -454677056, -356599328, -183980288, 41285372, 262398336, 404443104, 426653472, 346123904,
-208153440, 46777564, -119379152, -266092016, -356883328, -362540864, -282207264, -142656272, 19508278, 171784736,
-286243456, 337028768, 307856288, 205042272, 59186260, -89668720, -208699440, -276937344, -282728576, -225512624,
--120118960, 6251325, 123831960, 207502752, 239558240, 214040768, 141594864, 46226196, -46559056, -119185880,
--162174208, -170762528, -145114064, -92316024, -25178708, 41701984, 95078224, 124908384, 126542624, 102476312,
-61328376, 14045617, -29835528, -63623500, -83169896, -86727200, -75383120, -52842056, -24046448, 6167036,
-33442762, 54068268, 65636228, 67444408, 59914256, 43849468, 20435454, -8358007, -39323648, -67309656,
--85029080, -85099408, -64057828, -25326348, 21291764, 63022204, 88467200, 91458104, 73073496, 40547176,
-3528316, -29810832, -54602456, -68857992, -72016400, -63786168, -44141528, -14494978, 20885352, 54527832,
-77333568, 81899656, 66048544, 34309808, -3853123, -37948720, -60123100, -67015984, -59624884, -41827076,
--18555870, 5486821, 26436060, 41576896, 49426484, 49449032, 41713796, 26975616, 6971269, -15485505,
--36599564, -51846696, -56868052, -49102752, -29229400, -1492501, 27186606, 49115100, 58404576, 53124988,
-35735740, 11730629, -12408161, -31103616, -41052372, -41626288, -34236796, -21403970, -6115497, 8734353,
-20910048, 28959890, 31982474, 29651380, 22461606, 11644193, -1104344, -13655849, -23618562, -29010356,
--28798292, -22879290, -12122545, 1396401, 14827301, 25492242, 31286690, 30774514, 23921894, 12525735,
--779000, -13266080, -21409876, -21661668, -14317273, -5112085, -53687, 488016, 18790, },
+-355053664, -462356992, -454677056, -356599328, -183980288, 41285372, 262398336, 404443104, 426653472, 346123904,
+208153440, 46777564, -119379152, -266092016, -356883328, -362540864, -282207264, -142656272, 19508278, 171784736,
+286243456, 337028768, 307856288, 205042272, 59186260, -89668720, -208699440, -276937344, -282728576, -225512624,
+-120118960, 6251325, 123831960, 207502752, 239558240, 214040768, 141594864, 46226196, -46559056, -119185880,
+-162174208, -170762528, -145114064, -92316024, -25178708, 41701984, 95078224, 124908384, 126542624, 102476312,
+61328376, 14045617, -29835528, -63623500, -83169896, -86727200, -75383120, -52842056, -24046448, 6167036,
+33442762, 54068268, 65636228, 67444408, 59914256, 43849468, 20435454, -8358007, -39323648, -67309656,
+-85029080, -85099408, -64057828, -25326348, 21291764, 63022204, 88467200, 91458104, 73073496, 40547176,
+3528316, -29810832, -54602456, -68857992, -72016400, -63786168, -44141528, -14494978, 20885352, 54527832,
+77333568, 81899656, 66048544, 34309808, -3853123, -37948720, -60123100, -67015984, -59624884, -41827076,
+-18555870, 5486821, 26436060, 41576896, 49426484, 49449032, 41713796, 26975616, 6971269, -15485505,
+-36599564, -51846696, -56868052, -49102752, -29229400, -1492501, 27186606, 49115100, 58404576, 53124988,
+35735740, 11730629, -12408161, -31103616, -41052372, -41626288, -34236796, -21403970, -6115497, 8734353,
+20910048, 28959890, 31982474, 29651380, 22461606, 11644193, -1104344, -13655849, -23618562, -29010356,
+-28798292, -22879290, -12122545, 1396401, 14827301, 25492242, 31286690, 30774514, 23921894, 12525735,
+-779000, -13266080, -21409876, -21661668, -14317273, -5112085, -53687, 488016, 18790, },
{
23198728,
-61559228, 95750928, 137297760, 153484944, 96155728, -12480638, -93413928, -121580864, -149810608, -202373488,
--222976448, -169002128, -89407264, -54619636, -60062432, -57067768, -40763536, -44826572, -70948024, -84447112,
--75777720, -76200776, -105965968, -143970528, -158818224, -144399488, -115995256, -89512488, -71548248, -57189100,
--33515778, 5246840, 45134200, 63794224, 54092964, 28249610, 206695, -26316876, -52092584, -74698072,
--90745144, -100841000, -109150152, -120179624, -137001936, -160759008, -191203360, -228334416, -272725056, -323382592,
--376589184, -428057920, -475202176, -516584704, -550901504, -578105280, -600600704, -621953664, -644768000, -670379968,
--699618496, -732452480, -766789120, -798380224, -822325184, -834703296, -833034688, -816078656, -784167104, -739744768,
--686587584, -627903296, -565669184, -501964096, -439806272, -381877344, -329149120, -281542080, -239374640, -203550848,
--174959248, -154366496, -142524192, -139860784, -146122304, -160189936, -180045568, -203606688, -230465264, -262363440,
--301331136, -348290176, -404322304, -471761888, -552131456, -643851584, -743671424, -849317952, -958592128, -1066663168,
--1166864768, -1254281344, -1326654720, -1382013056, -1417960960, -1434180864, -1433740032, -1420624896, -1397040128, -1364187904,
--1324459520, -1280886528, -1234519680, -1184113920, -1128929408, -1070315008, -1009779008, -947248064, -882750528, -818495168,
--757349824, -700115648, -646115008, -595666304, -549934592, -508849472, -471224480, -436821248, -406718368, -381813472,
--362260640, -348076512, -339271264, -335725792, -337478144, -344461216, -355828384, -370701856, -389412352, -412315264,
--437762944, -463297056, -488082752, -511443104, -529989824, -539554176, -538693568, -526605952, -499879424, -455919360,
--395226112, -312759520, -194631808, -41409928, 105241192, 182446992, 166282880, 96889632, 28705414, },
+61559228, 95750928, 137297760, 153484944, 96155728, -12480638, -93413928, -121580864, -149810608, -202373488,
+-222976448, -169002128, -89407264, -54619636, -60062432, -57067768, -40763536, -44826572, -70948024, -84447112,
+-75777720, -76200776, -105965968, -143970528, -158818224, -144399488, -115995256, -89512488, -71548248, -57189100,
+-33515778, 5246840, 45134200, 63794224, 54092964, 28249610, 206695, -26316876, -52092584, -74698072,
+-90745144, -100841000, -109150152, -120179624, -137001936, -160759008, -191203360, -228334416, -272725056, -323382592,
+-376589184, -428057920, -475202176, -516584704, -550901504, -578105280, -600600704, -621953664, -644768000, -670379968,
+-699618496, -732452480, -766789120, -798380224, -822325184, -834703296, -833034688, -816078656, -784167104, -739744768,
+-686587584, -627903296, -565669184, -501964096, -439806272, -381877344, -329149120, -281542080, -239374640, -203550848,
+-174959248, -154366496, -142524192, -139860784, -146122304, -160189936, -180045568, -203606688, -230465264, -262363440,
+-301331136, -348290176, -404322304, -471761888, -552131456, -643851584, -743671424, -849317952, -958592128, -1066663168,
+-1166864768, -1254281344, -1326654720, -1382013056, -1417960960, -1434180864, -1433740032, -1420624896, -1397040128, -1364187904,
+-1324459520, -1280886528, -1234519680, -1184113920, -1128929408, -1070315008, -1009779008, -947248064, -882750528, -818495168,
+-757349824, -700115648, -646115008, -595666304, -549934592, -508849472, -471224480, -436821248, -406718368, -381813472,
+-362260640, -348076512, -339271264, -335725792, -337478144, -344461216, -355828384, -370701856, -389412352, -412315264,
+-437762944, -463297056, -488082752, -511443104, -529989824, -539554176, -538693568, -526605952, -499879424, -455919360,
+-395226112, -312759520, -194631808, -41409928, 105241192, 182446992, 166282880, 96889632, 28705414, },
},
{
{
-4125853,
--14767708, -29042032, -41738492, -46874200, -42393476, -20827908, 37269580, 137992464, 241750288, 284568416,
-241448560, 146208736, 45365592, -37332928, -86877528, -88201448, -48722108, 1248225, 44657996, 86271400,
-118205016, 112792824, 63035624, -1081795, -48502528, -71673880, -69729328, -40025872, 3649649, 33426656,
-37935300, 27593554, 5938866, -38524248, -106998376, -180820272, -243455920, -293718848, -334321344, -364600832,
--387406592, -409077376, -430395456, -447260192, -459261376, -469467296, -478806176, -487763328, -499535840, -515295136,
--530793536, -542745920, -553990656, -568492096, -586156224, -605739648, -627893632, -652271296, -675657920, -695503936,
--712557632, -728850048, -745584320, -763652160, -784144512, -807592896, -833343936, -859363904, -882591616, -900595584,
--912911936, -919673856, -919725888, -911916608, -897406592, -878441088, -855408768, -827272960, -794356352, -758548160,
--721204992, -682981376, -645543808, -611403072, -581723264, -555737600, -532580768, -512435232, -495456704, -480619200,
--466320160, -451648576, -436605984, -421438304, -406230880, -391044416, -376126944, -361823616, -348162944, -334543584,
--320139872, -304671008, -288301824, -270764928, -251427920, -230474384, -209052160, -187910720, -166958256, -146492208,
--127567512, -110708688, -95519000, -81867448, -70162584, -60325500, -51804820, -44518948, -38556996, -33389076,
--28616294, -24735790, -22054120, -20000052, -18549426, -18861348, -21626770, -26554172, -34089692, -45622216,
--61571040, -81274200, -104590504, -131516192, -160885184, -191458912, -223045712, -254892352, -285142336, -313281344,
--340161952, -364766752, -384908000, -401329248, -416241376, -428463776, -435818400, -440402720, -444750304, -446371104,
--443175648, -436180224, -415763040, -357410528, -251464432, -130003288, -41952704, -4706211, 1130650, },
+-14767708, -29042032, -41738492, -46874200, -42393476, -20827908, 37269580, 137992464, 241750288, 284568416,
+241448560, 146208736, 45365592, -37332928, -86877528, -88201448, -48722108, 1248225, 44657996, 86271400,
+118205016, 112792824, 63035624, -1081795, -48502528, -71673880, -69729328, -40025872, 3649649, 33426656,
+37935300, 27593554, 5938866, -38524248, -106998376, -180820272, -243455920, -293718848, -334321344, -364600832,
+-387406592, -409077376, -430395456, -447260192, -459261376, -469467296, -478806176, -487763328, -499535840, -515295136,
+-530793536, -542745920, -553990656, -568492096, -586156224, -605739648, -627893632, -652271296, -675657920, -695503936,
+-712557632, -728850048, -745584320, -763652160, -784144512, -807592896, -833343936, -859363904, -882591616, -900595584,
+-912911936, -919673856, -919725888, -911916608, -897406592, -878441088, -855408768, -827272960, -794356352, -758548160,
+-721204992, -682981376, -645543808, -611403072, -581723264, -555737600, -532580768, -512435232, -495456704, -480619200,
+-466320160, -451648576, -436605984, -421438304, -406230880, -391044416, -376126944, -361823616, -348162944, -334543584,
+-320139872, -304671008, -288301824, -270764928, -251427920, -230474384, -209052160, -187910720, -166958256, -146492208,
+-127567512, -110708688, -95519000, -81867448, -70162584, -60325500, -51804820, -44518948, -38556996, -33389076,
+-28616294, -24735790, -22054120, -20000052, -18549426, -18861348, -21626770, -26554172, -34089692, -45622216,
+-61571040, -81274200, -104590504, -131516192, -160885184, -191458912, -223045712, -254892352, -285142336, -313281344,
+-340161952, -364766752, -384908000, -401329248, -416241376, -428463776, -435818400, -440402720, -444750304, -446371104,
+-443175648, -436180224, -415763040, -357410528, -251464432, -130003288, -41952704, -4706211, 1130650, },
{
-69776040,
--199926976, -310493920, -391379968, -410279424, -341146560, -220535296, -138643152, -161903632, -281714432, -431863264,
--531811456, -527844512, -430712192, -313395712, -245669440, -234024720, -241856048, -246089808, -241810416, -211413856,
--134434624, -26459682, 67050344, 120003536, 145708912, 169338208, 203243216, 249530624, 305789856, 362501696,
-406125664, 428072416, 426747936, 405230176, 372656608, 342246080, 320857152, 303298240, 280238560, 247717600,
-207168288, 161693168, 114959632, 69615512, 24978456, -21061982, -68116032, -114034064, -158266864, -201481744,
--243280368, -282763456, -319460192, -351561856, -375398944, -388531872, -391390720, -384812960, -368463648, -342605792,
--308969216, -269061440, -223721632, -174591488, -123765392, -71724880, -17594870, 38373924, 94002336, 146620512,
-193984352, 234253952, 266512928, 291203072, 309168928, 320415840, 324258752, 320284288, 308741024, 290266240,
-265549776, 235231056, 200186272, 161926176, 122410328, 83385720, 46162844, 11814381, -18991808, -46236932,
--70012264, -89895280, -105430712, -116912232, -124998584, -129893232, -131597800, -130620696, -127709776, -123243552,
--117540904, -111405544, -105715792, -100761008, -96488048, -93046712, -90591600, -88866632, -87428888, -86055040,
--84617296, -82773144, -79990008, -75703632, -69346008, -60391536, -48456896, -33323578, -15001247, 6155762,
-29615946, 55006184, 81981800, 109794400, 137452368, 164257264, 189614224, 212451088, 231574432, 246505888,
-257123056, 262678592, 262149776, 255290704, 242235088, 222452464, 195367856, 161559488, 122027536, 76943800,
-26591754, -27271968, -82442432, -137508752, -190622992, -238597776, -278680032, -309303680, -328158048, -332487904,
--321526624, -293460608, -240470928, -157793872, -62716188, 7940321, 31165356, 20784958, 5646272, },
+-199926976, -310493920, -391379968, -410279424, -341146560, -220535296, -138643152, -161903632, -281714432, -431863264,
+-531811456, -527844512, -430712192, -313395712, -245669440, -234024720, -241856048, -246089808, -241810416, -211413856,
+-134434624, -26459682, 67050344, 120003536, 145708912, 169338208, 203243216, 249530624, 305789856, 362501696,
+406125664, 428072416, 426747936, 405230176, 372656608, 342246080, 320857152, 303298240, 280238560, 247717600,
+207168288, 161693168, 114959632, 69615512, 24978456, -21061982, -68116032, -114034064, -158266864, -201481744,
+-243280368, -282763456, -319460192, -351561856, -375398944, -388531872, -391390720, -384812960, -368463648, -342605792,
+-308969216, -269061440, -223721632, -174591488, -123765392, -71724880, -17594870, 38373924, 94002336, 146620512,
+193984352, 234253952, 266512928, 291203072, 309168928, 320415840, 324258752, 320284288, 308741024, 290266240,
+265549776, 235231056, 200186272, 161926176, 122410328, 83385720, 46162844, 11814381, -18991808, -46236932,
+-70012264, -89895280, -105430712, -116912232, -124998584, -129893232, -131597800, -130620696, -127709776, -123243552,
+-117540904, -111405544, -105715792, -100761008, -96488048, -93046712, -90591600, -88866632, -87428888, -86055040,
+-84617296, -82773144, -79990008, -75703632, -69346008, -60391536, -48456896, -33323578, -15001247, 6155762,
+29615946, 55006184, 81981800, 109794400, 137452368, 164257264, 189614224, 212451088, 231574432, 246505888,
+257123056, 262678592, 262149776, 255290704, 242235088, 222452464, 195367856, 161559488, 122027536, 76943800,
+26591754, -27271968, -82442432, -137508752, -190622992, -238597776, -278680032, -309303680, -328158048, -332487904,
+-321526624, -293460608, -240470928, -157793872, -62716188, 7940321, 31165356, 20784958, 5646272, },
},
{
{
-69776040,
--199926976, -310493920, -391379968, -410279424, -341146560, -220535296, -138643152, -161903632, -281714432, -431863264,
--531811456, -527844512, -430712192, -313395712, -245669440, -234024720, -241856048, -246089808, -241810416, -211413856,
--134434624, -26459682, 67050344, 120003536, 145708912, 169338208, 203243216, 249530624, 305789856, 362501696,
-406125664, 428072416, 426747936, 405230176, 372656608, 342246080, 320857152, 303298240, 280238560, 247717600,
-207168288, 161693168, 114959632, 69615512, 24978456, -21061982, -68116032, -114034064, -158266864, -201481744,
--243280368, -282763456, -319460192, -351561856, -375398944, -388531872, -391390720, -384812960, -368463648, -342605792,
--308969216, -269061440, -223721632, -174591488, -123765392, -71724880, -17594870, 38373924, 94002336, 146620512,
-193984352, 234253952, 266512928, 291203072, 309168928, 320415840, 324258752, 320284288, 308741024, 290266240,
-265549776, 235231056, 200186272, 161926176, 122410328, 83385720, 46162844, 11814381, -18991808, -46236932,
--70012264, -89895280, -105430712, -116912232, -124998584, -129893232, -131597800, -130620696, -127709776, -123243552,
--117540904, -111405544, -105715792, -100761008, -96488048, -93046712, -90591600, -88866632, -87428888, -86055040,
--84617296, -82773144, -79990008, -75703632, -69346008, -60391536, -48456896, -33323578, -15001247, 6155762,
-29615946, 55006184, 81981800, 109794400, 137452368, 164257264, 189614224, 212451088, 231574432, 246505888,
-257123056, 262678592, 262149776, 255290704, 242235088, 222452464, 195367856, 161559488, 122027536, 76943800,
-26591754, -27271968, -82442432, -137508752, -190622992, -238597776, -278680032, -309303680, -328158048, -332487904,
--321526624, -293460608, -240470928, -157793872, -62716188, 7940321, 31165356, 20784958, 5646272, },
+-199926976, -310493920, -391379968, -410279424, -341146560, -220535296, -138643152, -161903632, -281714432, -431863264,
+-531811456, -527844512, -430712192, -313395712, -245669440, -234024720, -241856048, -246089808, -241810416, -211413856,
+-134434624, -26459682, 67050344, 120003536, 145708912, 169338208, 203243216, 249530624, 305789856, 362501696,
+406125664, 428072416, 426747936, 405230176, 372656608, 342246080, 320857152, 303298240, 280238560, 247717600,
+207168288, 161693168, 114959632, 69615512, 24978456, -21061982, -68116032, -114034064, -158266864, -201481744,
+-243280368, -282763456, -319460192, -351561856, -375398944, -388531872, -391390720, -384812960, -368463648, -342605792,
+-308969216, -269061440, -223721632, -174591488, -123765392, -71724880, -17594870, 38373924, 94002336, 146620512,
+193984352, 234253952, 266512928, 291203072, 309168928, 320415840, 324258752, 320284288, 308741024, 290266240,
+265549776, 235231056, 200186272, 161926176, 122410328, 83385720, 46162844, 11814381, -18991808, -46236932,
+-70012264, -89895280, -105430712, -116912232, -124998584, -129893232, -131597800, -130620696, -127709776, -123243552,
+-117540904, -111405544, -105715792, -100761008, -96488048, -93046712, -90591600, -88866632, -87428888, -86055040,
+-84617296, -82773144, -79990008, -75703632, -69346008, -60391536, -48456896, -33323578, -15001247, 6155762,
+29615946, 55006184, 81981800, 109794400, 137452368, 164257264, 189614224, 212451088, 231574432, 246505888,
+257123056, 262678592, 262149776, 255290704, 242235088, 222452464, 195367856, 161559488, 122027536, 76943800,
+26591754, -27271968, -82442432, -137508752, -190622992, -238597776, -278680032, -309303680, -328158048, -332487904,
+-321526624, -293460608, -240470928, -157793872, -62716188, 7940321, 31165356, 20784958, 5646272, },
{
-4125853,
--14767708, -29042032, -41738492, -46874200, -42393476, -20827908, 37269580, 137992464, 241750288, 284568416,
-241448560, 146208736, 45365592, -37332928, -86877528, -88201448, -48722108, 1248225, 44657996, 86271400,
-118205016, 112792824, 63035624, -1081795, -48502528, -71673880, -69729328, -40025872, 3649649, 33426656,
-37935300, 27593554, 5938866, -38524248, -106998376, -180820272, -243455920, -293718848, -334321344, -364600832,
--387406592, -409077376, -430395456, -447260192, -459261376, -469467296, -478806176, -487763328, -499535840, -515295136,
--530793536, -542745920, -553990656, -568492096, -586156224, -605739648, -627893632, -652271296, -675657920, -695503936,
--712557632, -728850048, -745584320, -763652160, -784144512, -807592896, -833343936, -859363904, -882591616, -900595584,
--912911936, -919673856, -919725888, -911916608, -897406592, -878441088, -855408768, -827272960, -794356352, -758548160,
--721204992, -682981376, -645543808, -611403072, -581723264, -555737600, -532580768, -512435232, -495456704, -480619200,
--466320160, -451648576, -436605984, -421438304, -406230880, -391044416, -376126944, -361823616, -348162944, -334543584,
--320139872, -304671008, -288301824, -270764928, -251427920, -230474384, -209052160, -187910720, -166958256, -146492208,
--127567512, -110708688, -95519000, -81867448, -70162584, -60325500, -51804820, -44518948, -38556996, -33389076,
--28616294, -24735790, -22054120, -20000052, -18549426, -18861348, -21626770, -26554172, -34089692, -45622216,
--61571040, -81274200, -104590504, -131516192, -160885184, -191458912, -223045712, -254892352, -285142336, -313281344,
--340161952, -364766752, -384908000, -401329248, -416241376, -428463776, -435818400, -440402720, -444750304, -446371104,
--443175648, -436180224, -415763040, -357410528, -251464432, -130003288, -41952704, -4706211, 1130650, },
+-14767708, -29042032, -41738492, -46874200, -42393476, -20827908, 37269580, 137992464, 241750288, 284568416,
+241448560, 146208736, 45365592, -37332928, -86877528, -88201448, -48722108, 1248225, 44657996, 86271400,
+118205016, 112792824, 63035624, -1081795, -48502528, -71673880, -69729328, -40025872, 3649649, 33426656,
+37935300, 27593554, 5938866, -38524248, -106998376, -180820272, -243455920, -293718848, -334321344, -364600832,
+-387406592, -409077376, -430395456, -447260192, -459261376, -469467296, -478806176, -487763328, -499535840, -515295136,
+-530793536, -542745920, -553990656, -568492096, -586156224, -605739648, -627893632, -652271296, -675657920, -695503936,
+-712557632, -728850048, -745584320, -763652160, -784144512, -807592896, -833343936, -859363904, -882591616, -900595584,
+-912911936, -919673856, -919725888, -911916608, -897406592, -878441088, -855408768, -827272960, -794356352, -758548160,
+-721204992, -682981376, -645543808, -611403072, -581723264, -555737600, -532580768, -512435232, -495456704, -480619200,
+-466320160, -451648576, -436605984, -421438304, -406230880, -391044416, -376126944, -361823616, -348162944, -334543584,
+-320139872, -304671008, -288301824, -270764928, -251427920, -230474384, -209052160, -187910720, -166958256, -146492208,
+-127567512, -110708688, -95519000, -81867448, -70162584, -60325500, -51804820, -44518948, -38556996, -33389076,
+-28616294, -24735790, -22054120, -20000052, -18549426, -18861348, -21626770, -26554172, -34089692, -45622216,
+-61571040, -81274200, -104590504, -131516192, -160885184, -191458912, -223045712, -254892352, -285142336, -313281344,
+-340161952, -364766752, -384908000, -401329248, -416241376, -428463776, -435818400, -440402720, -444750304, -446371104,
+-443175648, -436180224, -415763040, -357410528, -251464432, -130003288, -41952704, -4706211, 1130650, },
},
{
{
4600447,
-19346680, 44991392, 63967096, 37875168, -42050952, -119665304, -130808600, -85799488, -48747880, -42614128,
--30416958, 6164352, 28224914, -804233, -64210836, -126092720, -180239920, -237944944, -293541696, -329953344,
--344641056, -349177088, -350809696, -348528544, -341931488, -333844064, -326418592, -319338336, -309974784, -294711520,
--273317216, -251272224, -234176112, -221063040, -206330224, -186406944, -161877856, -135534672, -111140872, -92090008,
--79091288, -70537856, -65754876, -65877284, -71478456, -81757384, -96047816, -113733416, -132603896, -149208768,
--160987184, -167227776, -168843216, -168241392, -168576928, -172385488, -181468816, -197534672, -221246112, -250856160,
--283442624, -317161856, -350805408, -382150624, -408971072, -431287744, -450754144, -468265792, -483745920, -497657856,
--510922880, -523423360, -533833824, -540915136, -544164864, -543285440, -537748160, -527259328, -512605952, -495719744,
--478473312, -461465248, -444370208, -427017984, -409177248, -389593248, -366583520, -339779680, -310380096, -279799936,
--249073744, -219411632, -192223408, -168497472, -148803968, -133796824, -124318904, -121394032, -126326800, -140132976,
--162630544, -192760816, -229733504, -272853888, -320412064, -370109152, -420674880, -471803776, -522449472, -570576768,
--614814912, -655093120, -691254080, -722185856, -746924864, -765859264, -780155584, -790358784, -796305216, -798383424,
--798019392, -796342208, -793002368, -787184320, -779196160, -769785408, -758301696, -743142080, -723924800, -701610816,
--676507840, -647901184, -615899392, -582057728, -547816640, -513594336, -479704352, -447123264, -416993536, -389851488,
--365435680, -343231232, -323292384, -306035200, -290884704, -276268416, -261546336, -247164096, -232224048, -214475104,
--192652368, -163808976, -118643104, -50144816, 27531814, 80195632, 85242752, 55034636, 17487496, },
+19346680, 44991392, 63967096, 37875168, -42050952, -119665304, -130808600, -85799488, -48747880, -42614128,
+-30416958, 6164352, 28224914, -804233, -64210836, -126092720, -180239920, -237944944, -293541696, -329953344,
+-344641056, -349177088, -350809696, -348528544, -341931488, -333844064, -326418592, -319338336, -309974784, -294711520,
+-273317216, -251272224, -234176112, -221063040, -206330224, -186406944, -161877856, -135534672, -111140872, -92090008,
+-79091288, -70537856, -65754876, -65877284, -71478456, -81757384, -96047816, -113733416, -132603896, -149208768,
+-160987184, -167227776, -168843216, -168241392, -168576928, -172385488, -181468816, -197534672, -221246112, -250856160,
+-283442624, -317161856, -350805408, -382150624, -408971072, -431287744, -450754144, -468265792, -483745920, -497657856,
+-510922880, -523423360, -533833824, -540915136, -544164864, -543285440, -537748160, -527259328, -512605952, -495719744,
+-478473312, -461465248, -444370208, -427017984, -409177248, -389593248, -366583520, -339779680, -310380096, -279799936,
+-249073744, -219411632, -192223408, -168497472, -148803968, -133796824, -124318904, -121394032, -126326800, -140132976,
+-162630544, -192760816, -229733504, -272853888, -320412064, -370109152, -420674880, -471803776, -522449472, -570576768,
+-614814912, -655093120, -691254080, -722185856, -746924864, -765859264, -780155584, -790358784, -796305216, -798383424,
+-798019392, -796342208, -793002368, -787184320, -779196160, -769785408, -758301696, -743142080, -723924800, -701610816,
+-676507840, -647901184, -615899392, -582057728, -547816640, -513594336, -479704352, -447123264, -416993536, -389851488,
+-365435680, -343231232, -323292384, -306035200, -290884704, -276268416, -261546336, -247164096, -232224048, -214475104,
+-192652368, -163808976, -118643104, -50144816, 27531814, 80195632, 85242752, 55034636, 17487496, },
{
-99621232,
--286525856, -426905792, -479705440, -432011968, -323699328, -220398400, -155248032, -104107856, -23679228, 92591976,
-205608144, 273819744, 292754112, 287597440, 276765536, 253286576, 200076224, 114409336, 14027363, -76716168,
--143684368, -188199568, -218924688, -239735952, -245462752, -228540576, -187456528, -127361888, -55034100, 22943716,
-97618168, 157806768, 195323840, 208820768, 201669120, 177899696, 141368848, 96980896, 50311784, 5823976,
--33888904, -67592584, -94911264, -115949088, -130647536, -138425728, -138543840, -130454264, -113604568, -87367152,
--51758652, -8462159, 38787848, 84825064, 124388160, 153377040, 169199696, 170266464, 155651760, 125596656,
-82256136, 29805462, -26240102, -80012560, -126178624, -160451920, -179634864, -181446256, -164609984, -129440112,
--78724064, -18290118, 43474196, 97401808, 135857872, 154479776, 152887408, 134421744, 104892232, 70540544,
-36217848, 4746476, -22646288, -45631880, -64202244, -78178072, -86946248, -89597848, -85337240, -73968464,
--56345676, -34479996, -11038066, 11462194, 31138512, 46814068, 57956288, 64547452, 66799088, 64929168,
-59168008, 49832360, 37300716, 22064320, 4896800, -13102871, -30626338, -46220292, -58353036, -65668440,
--67281736, -62858456, -52617644, -37437084, -18846316, 1262720, 20951388, 38391640, 52051244, 60915520,
-64485712, 62605052, 55444268, 43579424, 27926952, 9672266, -9613211, -27947352, -43250856, -53731116,
--58120572, -55941948, -47761112, -35042640, -19684372, -3697430, 11003169, 22971632, 31496068, 36412196,
-37870336, 36382132, 32725504, 27558120, 21326124, 14526653, 7638600, 853625, -5680094, -11527155,
--16320876, -19895362, -21371758, -19102940, -12946105, -5827734, -1298154, 30602, 38655, },
+-286525856, -426905792, -479705440, -432011968, -323699328, -220398400, -155248032, -104107856, -23679228, 92591976,
+205608144, 273819744, 292754112, 287597440, 276765536, 253286576, 200076224, 114409336, 14027363, -76716168,
+-143684368, -188199568, -218924688, -239735952, -245462752, -228540576, -187456528, -127361888, -55034100, 22943716,
+97618168, 157806768, 195323840, 208820768, 201669120, 177899696, 141368848, 96980896, 50311784, 5823976,
+-33888904, -67592584, -94911264, -115949088, -130647536, -138425728, -138543840, -130454264, -113604568, -87367152,
+-51758652, -8462159, 38787848, 84825064, 124388160, 153377040, 169199696, 170266464, 155651760, 125596656,
+82256136, 29805462, -26240102, -80012560, -126178624, -160451920, -179634864, -181446256, -164609984, -129440112,
+-78724064, -18290118, 43474196, 97401808, 135857872, 154479776, 152887408, 134421744, 104892232, 70540544,
+36217848, 4746476, -22646288, -45631880, -64202244, -78178072, -86946248, -89597848, -85337240, -73968464,
+-56345676, -34479996, -11038066, 11462194, 31138512, 46814068, 57956288, 64547452, 66799088, 64929168,
+59168008, 49832360, 37300716, 22064320, 4896800, -13102871, -30626338, -46220292, -58353036, -65668440,
+-67281736, -62858456, -52617644, -37437084, -18846316, 1262720, 20951388, 38391640, 52051244, 60915520,
+64485712, 62605052, 55444268, 43579424, 27926952, 9672266, -9613211, -27947352, -43250856, -53731116,
+-58120572, -55941948, -47761112, -35042640, -19684372, -3697430, 11003169, 22971632, 31496068, 36412196,
+37870336, 36382132, 32725504, 27558120, 21326124, 14526653, 7638600, 853625, -5680094, -11527155,
+-16320876, -19895362, -21371758, -19102940, -12946105, -5827734, -1298154, 30602, 38655, },
},
{
{
-99621232,
--286525856, -426905792, -479705440, -432011968, -323699328, -220398400, -155248032, -104107856, -23679228, 92591976,
-205608144, 273819744, 292754112, 287597440, 276765536, 253286576, 200076224, 114409336, 14027363, -76716168,
--143684368, -188199568, -218924688, -239735952, -245462752, -228540576, -187456528, -127361888, -55034100, 22943716,
-97618168, 157806768, 195323840, 208820768, 201669120, 177899696, 141368848, 96980896, 50311784, 5823976,
--33888904, -67592584, -94911264, -115949088, -130647536, -138425728, -138543840, -130454264, -113604568, -87367152,
--51758652, -8462159, 38787848, 84825064, 124388160, 153377040, 169199696, 170266464, 155651760, 125596656,
-82256136, 29805462, -26240102, -80012560, -126178624, -160451920, -179634864, -181446256, -164609984, -129440112,
--78724064, -18290118, 43474196, 97401808, 135857872, 154479776, 152887408, 134421744, 104892232, 70540544,
-36217848, 4746476, -22646288, -45631880, -64202244, -78178072, -86946248, -89597848, -85337240, -73968464,
--56345676, -34479996, -11038066, 11462194, 31138512, 46814068, 57956288, 64547452, 66799088, 64929168,
-59168008, 49832360, 37300716, 22064320, 4896800, -13102871, -30626338, -46220292, -58353036, -65668440,
--67281736, -62858456, -52617644, -37437084, -18846316, 1262720, 20951388, 38391640, 52051244, 60915520,
-64485712, 62605052, 55444268, 43579424, 27926952, 9672266, -9613211, -27947352, -43250856, -53731116,
--58120572, -55941948, -47761112, -35042640, -19684372, -3697430, 11003169, 22971632, 31496068, 36412196,
-37870336, 36382132, 32725504, 27558120, 21326124, 14526653, 7638600, 853625, -5680094, -11527155,
--16320876, -19895362, -21371758, -19102940, -12946105, -5827734, -1298154, 30602, 38655, },
+-286525856, -426905792, -479705440, -432011968, -323699328, -220398400, -155248032, -104107856, -23679228, 92591976,
+205608144, 273819744, 292754112, 287597440, 276765536, 253286576, 200076224, 114409336, 14027363, -76716168,
+-143684368, -188199568, -218924688, -239735952, -245462752, -228540576, -187456528, -127361888, -55034100, 22943716,
+97618168, 157806768, 195323840, 208820768, 201669120, 177899696, 141368848, 96980896, 50311784, 5823976,
+-33888904, -67592584, -94911264, -115949088, -130647536, -138425728, -138543840, -130454264, -113604568, -87367152,
+-51758652, -8462159, 38787848, 84825064, 124388160, 153377040, 169199696, 170266464, 155651760, 125596656,
+82256136, 29805462, -26240102, -80012560, -126178624, -160451920, -179634864, -181446256, -164609984, -129440112,
+-78724064, -18290118, 43474196, 97401808, 135857872, 154479776, 152887408, 134421744, 104892232, 70540544,
+36217848, 4746476, -22646288, -45631880, -64202244, -78178072, -86946248, -89597848, -85337240, -73968464,
+-56345676, -34479996, -11038066, 11462194, 31138512, 46814068, 57956288, 64547452, 66799088, 64929168,
+59168008, 49832360, 37300716, 22064320, 4896800, -13102871, -30626338, -46220292, -58353036, -65668440,
+-67281736, -62858456, -52617644, -37437084, -18846316, 1262720, 20951388, 38391640, 52051244, 60915520,
+64485712, 62605052, 55444268, 43579424, 27926952, 9672266, -9613211, -27947352, -43250856, -53731116,
+-58120572, -55941948, -47761112, -35042640, -19684372, -3697430, 11003169, 22971632, 31496068, 36412196,
+37870336, 36382132, 32725504, 27558120, 21326124, 14526653, 7638600, 853625, -5680094, -11527155,
+-16320876, -19895362, -21371758, -19102940, -12946105, -5827734, -1298154, 30602, 38655, },
{
4600447,
-19346680, 44991392, 63967096, 37875168, -42050952, -119665304, -130808600, -85799488, -48747880, -42614128,
--30416958, 6164352, 28224914, -804233, -64210836, -126092720, -180239920, -237944944, -293541696, -329953344,
--344641056, -349177088, -350809696, -348528544, -341931488, -333844064, -326418592, -319338336, -309974784, -294711520,
--273317216, -251272224, -234176112, -221063040, -206330224, -186406944, -161877856, -135534672, -111140872, -92090008,
--79091288, -70537856, -65754876, -65877284, -71478456, -81757384, -96047816, -113733416, -132603896, -149208768,
--160987184, -167227776, -168843216, -168241392, -168576928, -172385488, -181468816, -197534672, -221246112, -250856160,
--283442624, -317161856, -350805408, -382150624, -408971072, -431287744, -450754144, -468265792, -483745920, -497657856,
--510922880, -523423360, -533833824, -540915136, -544164864, -543285440, -537748160, -527259328, -512605952, -495719744,
--478473312, -461465248, -444370208, -427017984, -409177248, -389593248, -366583520, -339779680, -310380096, -279799936,
--249073744, -219411632, -192223408, -168497472, -148803968, -133796824, -124318904, -121394032, -126326800, -140132976,
--162630544, -192760816, -229733504, -272853888, -320412064, -370109152, -420674880, -471803776, -522449472, -570576768,
--614814912, -655093120, -691254080, -722185856, -746924864, -765859264, -780155584, -790358784, -796305216, -798383424,
--798019392, -796342208, -793002368, -787184320, -779196160, -769785408, -758301696, -743142080, -723924800, -701610816,
--676507840, -647901184, -615899392, -582057728, -547816640, -513594336, -479704352, -447123264, -416993536, -389851488,
--365435680, -343231232, -323292384, -306035200, -290884704, -276268416, -261546336, -247164096, -232224048, -214475104,
--192652368, -163808976, -118643104, -50144816, 27531814, 80195632, 85242752, 55034636, 17487496, },
+19346680, 44991392, 63967096, 37875168, -42050952, -119665304, -130808600, -85799488, -48747880, -42614128,
+-30416958, 6164352, 28224914, -804233, -64210836, -126092720, -180239920, -237944944, -293541696, -329953344,
+-344641056, -349177088, -350809696, -348528544, -341931488, -333844064, -326418592, -319338336, -309974784, -294711520,
+-273317216, -251272224, -234176112, -221063040, -206330224, -186406944, -161877856, -135534672, -111140872, -92090008,
+-79091288, -70537856, -65754876, -65877284, -71478456, -81757384, -96047816, -113733416, -132603896, -149208768,
+-160987184, -167227776, -168843216, -168241392, -168576928, -172385488, -181468816, -197534672, -221246112, -250856160,
+-283442624, -317161856, -350805408, -382150624, -408971072, -431287744, -450754144, -468265792, -483745920, -497657856,
+-510922880, -523423360, -533833824, -540915136, -544164864, -543285440, -537748160, -527259328, -512605952, -495719744,
+-478473312, -461465248, -444370208, -427017984, -409177248, -389593248, -366583520, -339779680, -310380096, -279799936,
+-249073744, -219411632, -192223408, -168497472, -148803968, -133796824, -124318904, -121394032, -126326800, -140132976,
+-162630544, -192760816, -229733504, -272853888, -320412064, -370109152, -420674880, -471803776, -522449472, -570576768,
+-614814912, -655093120, -691254080, -722185856, -746924864, -765859264, -780155584, -790358784, -796305216, -798383424,
+-798019392, -796342208, -793002368, -787184320, -779196160, -769785408, -758301696, -743142080, -723924800, -701610816,
+-676507840, -647901184, -615899392, -582057728, -547816640, -513594336, -479704352, -447123264, -416993536, -389851488,
+-365435680, -343231232, -323292384, -306035200, -290884704, -276268416, -261546336, -247164096, -232224048, -214475104,
+-192652368, -163808976, -118643104, -50144816, 27531814, 80195632, 85242752, 55034636, 17487496, },
},
{
{
439160,
-9365176, 29668024, 40453224, 15341623, -45351632, -109128136, -144421504, -150375392, -144258288, -131021736,
--104107856, -71233104, -57051124, -75888312, -118171192, -168489424, -221575760, -273609280, -312674144, -330016704,
--333112288, -337341760, -348790528, -362461952, -373274528, -381112320, -386730656, -389323744, -388740704, -386155136,
--381738304, -373836096, -360605440, -340908736, -313929376, -279907840, -241828128, -205013280, -174007920, -150196624,
--132822936, -121436976, -116219664, -116342072, -119497800, -123473328, -127311960, -130748472, -133538584, -135819744,
--138475120, -142795312, -150106416, -161509568, -177308064, -196745472, -218684704, -242115360, -265623328, -287307008,
--306123808, -322685728, -337959712, -351861984, -363726272, -373157504, -379437280, -380878240, -375808576, -363919008,
--346204960, -324234592, -299991648, -275821184, -253755264, -234803184, -218847904, -204974624, -191987728, -179002432,
--165625744, -151641872, -136889200, -121520728, -105938592, -90356448, -74778600, -59408524, -44675176, -30919470,
--18438294, -7765301, 328565, 4874251, 4648229, -1475321, -14002130, -33019172, -58642948, -90458456,
--126786360, -165555424, -205805712, -247382064, -289544672, -331192448, -372222272, -413219872, -453753088, -492213984,
--527374752, -558949760, -586488512, -608848128, -625194240, -635851136, -641718016, -643196032, -640171328, -633021248,
--623069824, -611607104, -598890752, -584830656, -570187520, -555927680, -541649088, -525968128, -508355008, -489191392,
--468209408, -444536096, -418368992, -391147488, -364010304, -337297728, -311460832, -287304864, -265427904, -246115040,
--229447360, -215199872, -203242144, -193907568, -187083408, -181587456, -176594016, -172417168, -168547936, -162928512,
--154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, },
+9365176, 29668024, 40453224, 15341623, -45351632, -109128136, -144421504, -150375392, -144258288, -131021736,
+-104107856, -71233104, -57051124, -75888312, -118171192, -168489424, -221575760, -273609280, -312674144, -330016704,
+-333112288, -337341760, -348790528, -362461952, -373274528, -381112320, -386730656, -389323744, -388740704, -386155136,
+-381738304, -373836096, -360605440, -340908736, -313929376, -279907840, -241828128, -205013280, -174007920, -150196624,
+-132822936, -121436976, -116219664, -116342072, -119497800, -123473328, -127311960, -130748472, -133538584, -135819744,
+-138475120, -142795312, -150106416, -161509568, -177308064, -196745472, -218684704, -242115360, -265623328, -287307008,
+-306123808, -322685728, -337959712, -351861984, -363726272, -373157504, -379437280, -380878240, -375808576, -363919008,
+-346204960, -324234592, -299991648, -275821184, -253755264, -234803184, -218847904, -204974624, -191987728, -179002432,
+-165625744, -151641872, -136889200, -121520728, -105938592, -90356448, -74778600, -59408524, -44675176, -30919470,
+-18438294, -7765301, 328565, 4874251, 4648229, -1475321, -14002130, -33019172, -58642948, -90458456,
+-126786360, -165555424, -205805712, -247382064, -289544672, -331192448, -372222272, -413219872, -453753088, -492213984,
+-527374752, -558949760, -586488512, -608848128, -625194240, -635851136, -641718016, -643196032, -640171328, -633021248,
+-623069824, -611607104, -598890752, -584830656, -570187520, -555927680, -541649088, -525968128, -508355008, -489191392,
+-468209408, -444536096, -418368992, -391147488, -364010304, -337297728, -311460832, -287304864, -265427904, -246115040,
+-229447360, -215199872, -203242144, -193907568, -187083408, -181587456, -176594016, -172417168, -168547936, -162928512,
+-154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, },
{
-71346384,
--213462560, -339756064, -413504960, -409455872, -352985632, -305631488, -298819136, -300228416, -264136736, -195585824,
--136284144, -100468408, -60189672, 7589207, 92245696, 172898736, 241975776, 295543136, 323312800, 321893312,
-303480256, 280539744, 252025456, 212051664, 162432976, 109136728, 53380536, -7004555, -71178880, -134117336,
--188985008, -229179456, -251300688, -257305056, -251393568, -234900352, -206775824, -168413728, -125017912, -82274392,
--43759276, -11020886, 16053514, 39014948, 59700584, 79435424, 99726992, 122451664, 148089936, 174238240,
-196432480, 209955712, 211052544, 198057584, 172362400, 137605376, 97203696, 52851720, 5244692, -44642428,
--95086816, -143431504, -185908736, -218344320, -237670064, -242820272, -234431664, -214183040, -184224576, -146399328,
--101692480, -50829864, 4360466, 60305636, 112264536, 155409632, 185961888, 202288128, 205284400, 197435888,
-181369488, 159261680, 133054864, 104489040, 74815648, 44843752, 15293305, -13164612, -40124660, -65403224,
--88772144, -109890496, -128330936, -143368688, -153753392, -157929712, -154617216, -143216752, -123850216, -97302488,
--65005404, -28906740, 8858370, 46210092, 81095424, 111469432, 135565280, 152172304, 160555008, 160288720,
-151451824, 134831376, 111693848, 83490408, 51971788, 19245748, -12685723, -42281804, -68209448, -89182848,
--104380592, -113607792, -116795728, -113810192, -104951280, -91091424, -73173896, -52182244, -29644402, -7425999,
-13060996, 30902826, 45198624, 55365348, 61724584, 65044596, 65811248, 64531884, 62112208, 59181428,
-55647208, 51414516, 46716360, 41342820, 34611532, 26388816, 17041894, 6484327, -5341329, -17431662,
--28704878, -38885024, -46234788, -46222976, -36266704, -20924544, -8422431, -2397666, -471910, },
+-213462560, -339756064, -413504960, -409455872, -352985632, -305631488, -298819136, -300228416, -264136736, -195585824,
+-136284144, -100468408, -60189672, 7589207, 92245696, 172898736, 241975776, 295543136, 323312800, 321893312,
+303480256, 280539744, 252025456, 212051664, 162432976, 109136728, 53380536, -7004555, -71178880, -134117336,
+-188985008, -229179456, -251300688, -257305056, -251393568, -234900352, -206775824, -168413728, -125017912, -82274392,
+-43759276, -11020886, 16053514, 39014948, 59700584, 79435424, 99726992, 122451664, 148089936, 174238240,
+196432480, 209955712, 211052544, 198057584, 172362400, 137605376, 97203696, 52851720, 5244692, -44642428,
+-95086816, -143431504, -185908736, -218344320, -237670064, -242820272, -234431664, -214183040, -184224576, -146399328,
+-101692480, -50829864, 4360466, 60305636, 112264536, 155409632, 185961888, 202288128, 205284400, 197435888,
+181369488, 159261680, 133054864, 104489040, 74815648, 44843752, 15293305, -13164612, -40124660, -65403224,
+-88772144, -109890496, -128330936, -143368688, -153753392, -157929712, -154617216, -143216752, -123850216, -97302488,
+-65005404, -28906740, 8858370, 46210092, 81095424, 111469432, 135565280, 152172304, 160555008, 160288720,
+151451824, 134831376, 111693848, 83490408, 51971788, 19245748, -12685723, -42281804, -68209448, -89182848,
+-104380592, -113607792, -116795728, -113810192, -104951280, -91091424, -73173896, -52182244, -29644402, -7425999,
+13060996, 30902826, 45198624, 55365348, 61724584, 65044596, 65811248, 64531884, 62112208, 59181428,
+55647208, 51414516, 46716360, 41342820, 34611532, 26388816, 17041894, 6484327, -5341329, -17431662,
+-28704878, -38885024, -46234788, -46222976, -36266704, -20924544, -8422431, -2397666, -471910, },
},
{
{
-71346384,
--213462560, -339756064, -413504960, -409455872, -352985632, -305631488, -298819136, -300228416, -264136736, -195585824,
--136284144, -100468408, -60189672, 7589207, 92245696, 172898736, 241975776, 295543136, 323312800, 321893312,
-303480256, 280539744, 252025456, 212051664, 162432976, 109136728, 53380536, -7004555, -71178880, -134117336,
--188985008, -229179456, -251300688, -257305056, -251393568, -234900352, -206775824, -168413728, -125017912, -82274392,
--43759276, -11020886, 16053514, 39014948, 59700584, 79435424, 99726992, 122451664, 148089936, 174238240,
-196432480, 209955712, 211052544, 198057584, 172362400, 137605376, 97203696, 52851720, 5244692, -44642428,
--95086816, -143431504, -185908736, -218344320, -237670064, -242820272, -234431664, -214183040, -184224576, -146399328,
--101692480, -50829864, 4360466, 60305636, 112264536, 155409632, 185961888, 202288128, 205284400, 197435888,
-181369488, 159261680, 133054864, 104489040, 74815648, 44843752, 15293305, -13164612, -40124660, -65403224,
--88772144, -109890496, -128330936, -143368688, -153753392, -157929712, -154617216, -143216752, -123850216, -97302488,
--65005404, -28906740, 8858370, 46210092, 81095424, 111469432, 135565280, 152172304, 160555008, 160288720,
-151451824, 134831376, 111693848, 83490408, 51971788, 19245748, -12685723, -42281804, -68209448, -89182848,
--104380592, -113607792, -116795728, -113810192, -104951280, -91091424, -73173896, -52182244, -29644402, -7425999,
-13060996, 30902826, 45198624, 55365348, 61724584, 65044596, 65811248, 64531884, 62112208, 59181428,
-55647208, 51414516, 46716360, 41342820, 34611532, 26388816, 17041894, 6484327, -5341329, -17431662,
--28704878, -38885024, -46234788, -46222976, -36266704, -20924544, -8422431, -2397666, -471910, },
+-213462560, -339756064, -413504960, -409455872, -352985632, -305631488, -298819136, -300228416, -264136736, -195585824,
+-136284144, -100468408, -60189672, 7589207, 92245696, 172898736, 241975776, 295543136, 323312800, 321893312,
+303480256, 280539744, 252025456, 212051664, 162432976, 109136728, 53380536, -7004555, -71178880, -134117336,
+-188985008, -229179456, -251300688, -257305056, -251393568, -234900352, -206775824, -168413728, -125017912, -82274392,
+-43759276, -11020886, 16053514, 39014948, 59700584, 79435424, 99726992, 122451664, 148089936, 174238240,
+196432480, 209955712, 211052544, 198057584, 172362400, 137605376, 97203696, 52851720, 5244692, -44642428,
+-95086816, -143431504, -185908736, -218344320, -237670064, -242820272, -234431664, -214183040, -184224576, -146399328,
+-101692480, -50829864, 4360466, 60305636, 112264536, 155409632, 185961888, 202288128, 205284400, 197435888,
+181369488, 159261680, 133054864, 104489040, 74815648, 44843752, 15293305, -13164612, -40124660, -65403224,
+-88772144, -109890496, -128330936, -143368688, -153753392, -157929712, -154617216, -143216752, -123850216, -97302488,
+-65005404, -28906740, 8858370, 46210092, 81095424, 111469432, 135565280, 152172304, 160555008, 160288720,
+151451824, 134831376, 111693848, 83490408, 51971788, 19245748, -12685723, -42281804, -68209448, -89182848,
+-104380592, -113607792, -116795728, -113810192, -104951280, -91091424, -73173896, -52182244, -29644402, -7425999,
+13060996, 30902826, 45198624, 55365348, 61724584, 65044596, 65811248, 64531884, 62112208, 59181428,
+55647208, 51414516, 46716360, 41342820, 34611532, 26388816, 17041894, 6484327, -5341329, -17431662,
+-28704878, -38885024, -46234788, -46222976, -36266704, -20924544, -8422431, -2397666, -471910, },
{
439160,
-9365176, 29668024, 40453224, 15341623, -45351632, -109128136, -144421504, -150375392, -144258288, -131021736,
--104107856, -71233104, -57051124, -75888312, -118171192, -168489424, -221575760, -273609280, -312674144, -330016704,
--333112288, -337341760, -348790528, -362461952, -373274528, -381112320, -386730656, -389323744, -388740704, -386155136,
--381738304, -373836096, -360605440, -340908736, -313929376, -279907840, -241828128, -205013280, -174007920, -150196624,
--132822936, -121436976, -116219664, -116342072, -119497800, -123473328, -127311960, -130748472, -133538584, -135819744,
--138475120, -142795312, -150106416, -161509568, -177308064, -196745472, -218684704, -242115360, -265623328, -287307008,
--306123808, -322685728, -337959712, -351861984, -363726272, -373157504, -379437280, -380878240, -375808576, -363919008,
--346204960, -324234592, -299991648, -275821184, -253755264, -234803184, -218847904, -204974624, -191987728, -179002432,
--165625744, -151641872, -136889200, -121520728, -105938592, -90356448, -74778600, -59408524, -44675176, -30919470,
--18438294, -7765301, 328565, 4874251, 4648229, -1475321, -14002130, -33019172, -58642948, -90458456,
--126786360, -165555424, -205805712, -247382064, -289544672, -331192448, -372222272, -413219872, -453753088, -492213984,
--527374752, -558949760, -586488512, -608848128, -625194240, -635851136, -641718016, -643196032, -640171328, -633021248,
--623069824, -611607104, -598890752, -584830656, -570187520, -555927680, -541649088, -525968128, -508355008, -489191392,
--468209408, -444536096, -418368992, -391147488, -364010304, -337297728, -311460832, -287304864, -265427904, -246115040,
--229447360, -215199872, -203242144, -193907568, -187083408, -181587456, -176594016, -172417168, -168547936, -162928512,
--154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, },
+9365176, 29668024, 40453224, 15341623, -45351632, -109128136, -144421504, -150375392, -144258288, -131021736,
+-104107856, -71233104, -57051124, -75888312, -118171192, -168489424, -221575760, -273609280, -312674144, -330016704,
+-333112288, -337341760, -348790528, -362461952, -373274528, -381112320, -386730656, -389323744, -388740704, -386155136,
+-381738304, -373836096, -360605440, -340908736, -313929376, -279907840, -241828128, -205013280, -174007920, -150196624,
+-132822936, -121436976, -116219664, -116342072, -119497800, -123473328, -127311960, -130748472, -133538584, -135819744,
+-138475120, -142795312, -150106416, -161509568, -177308064, -196745472, -218684704, -242115360, -265623328, -287307008,
+-306123808, -322685728, -337959712, -351861984, -363726272, -373157504, -379437280, -380878240, -375808576, -363919008,
+-346204960, -324234592, -299991648, -275821184, -253755264, -234803184, -218847904, -204974624, -191987728, -179002432,
+-165625744, -151641872, -136889200, -121520728, -105938592, -90356448, -74778600, -59408524, -44675176, -30919470,
+-18438294, -7765301, 328565, 4874251, 4648229, -1475321, -14002130, -33019172, -58642948, -90458456,
+-126786360, -165555424, -205805712, -247382064, -289544672, -331192448, -372222272, -413219872, -453753088, -492213984,
+-527374752, -558949760, -586488512, -608848128, -625194240, -635851136, -641718016, -643196032, -640171328, -633021248,
+-623069824, -611607104, -598890752, -584830656, -570187520, -555927680, -541649088, -525968128, -508355008, -489191392,
+-468209408, -444536096, -418368992, -391147488, -364010304, -337297728, -311460832, -287304864, -265427904, -246115040,
+-229447360, -215199872, -203242144, -193907568, -187083408, -181587456, -176594016, -172417168, -168547936, -162928512,
+-154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, },
},
};
-const Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][80] ={
+const Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80] ={
{
{
665281280,
-674784448, 698239808, 731240192, 748593472, 727196992, 689475904, 685777408, 708633664, 676513152, 556107520,
-451947584, 493353760, 659701056, 808494336, 867047040, 900015232, 977696704, 1075521024, 1138411136, 1160941952,
-1154109824, 1096802048, 976626176, 839007872, 747508480, 718602816, 727278080, 754160832, 799917248, 870264512,
-967069888, 1082529280, 1192306048, 1267405184, 1298377728, 1297374848, 1278310528, 1247297664, 1207363072, 1159006592,
-1100992896, 1040038144, 991227968, 961344128, 942479040, 926492096, 911659968, 892559168, 860845632, 819307968,
-779264384, 743933440, 709595200, 678932864, 656769728, 638880704, 620198656, 604545664, 592851520, 575412864,
-547787648, 516941728, 481964064, 430530752, 362592960, 292907104, 225806832, 155925024, 93299040, 53560928,
-27193048, -3490198, -27827094, -33299418, -51461760, -118380576, -203644800, -245106800, -242138976, },
+674784448, 698239808, 731240192, 748593472, 727196992, 689475904, 685777408, 708633664, 676513152, 556107520,
+451947584, 493353760, 659701056, 808494336, 867047040, 900015232, 977696704, 1075521024, 1138411136, 1160941952,
+1154109824, 1096802048, 976626176, 839007872, 747508480, 718602816, 727278080, 754160832, 799917248, 870264512,
+967069888, 1082529280, 1192306048, 1267405184, 1298377728, 1297374848, 1278310528, 1247297664, 1207363072, 1159006592,
+1100992896, 1040038144, 991227968, 961344128, 942479040, 926492096, 911659968, 892559168, 860845632, 819307968,
+779264384, 743933440, 709595200, 678932864, 656769728, 638880704, 620198656, 604545664, 592851520, 575412864,
+547787648, 516941728, 481964064, 430530752, 362592960, 292907104, 225806832, 155925024, 93299040, 53560928,
+27193048, -3490198, -27827094, -33299418, -51461760, -118380576, -203644800, -245106800, -242138976, },
{
524114848,
-533789280, 470712320, 324263040, 183661936, 95593624, 13487271, -82588464, -127956200, -79816064, 7536057,
-54663124, 30402462, -71739912, -247676272, -438472672, -547349568, -541801024, -482090752, -423726432, -356343232,
--266416288, -190427040, -161387152, -155142816, -132955544, -95782600, -57178364, 214212, 98348848, 218841472,
-323258016, 402958112, 474727552, 535242048, 552199104, 505210560, 414675328, 321215232, 247467968, 188448128,
-131875360, 74614320, 17566416, -42997992, -109456704, -174512032, -228280736, -269658976, -302424768, -324817632,
--332062176, -325179488, -308778080, -284093824, -251596496, -215451664, -178305568, -136985840, -89327264, -39129300,
-10106595, 58457188, 102657768, 135197520, 154283280, 165445360, 170970832, 168290240, 159845792, 152339264,
-145684752, 135665664, 126222112, 123444880, 118667264, 95619392, 55449100, 18055506, -1458678, },
+533789280, 470712320, 324263040, 183661936, 95593624, 13487271, -82588464, -127956200, -79816064, 7536057,
+54663124, 30402462, -71739912, -247676272, -438472672, -547349568, -541801024, -482090752, -423726432, -356343232,
+-266416288, -190427040, -161387152, -155142816, -132955544, -95782600, -57178364, 214212, 98348848, 218841472,
+323258016, 402958112, 474727552, 535242048, 552199104, 505210560, 414675328, 321215232, 247467968, 188448128,
+131875360, 74614320, 17566416, -42997992, -109456704, -174512032, -228280736, -269658976, -302424768, -324817632,
+-332062176, -325179488, -308778080, -284093824, -251596496, -215451664, -178305568, -136985840, -89327264, -39129300,
+10106595, 58457188, 102657768, 135197520, 154283280, 165445360, 170970832, 168290240, 159845792, 152339264,
+145684752, 135665664, 126222112, 123444880, 118667264, 95619392, 55449100, 18055506, -1458678, },
},
{
{
524114848,
-533789280, 470712320, 324263040, 183661936, 95593624, 13487271, -82588464, -127956200, -79816064, 7536057,
-54663124, 30402462, -71739912, -247676272, -438472672, -547349568, -541801024, -482090752, -423726432, -356343232,
--266416288, -190427040, -161387152, -155142816, -132955544, -95782600, -57178364, 214212, 98348848, 218841472,
-323258016, 402958112, 474727552, 535242048, 552199104, 505210560, 414675328, 321215232, 247467968, 188448128,
-131875360, 74614320, 17566416, -42997992, -109456704, -174512032, -228280736, -269658976, -302424768, -324817632,
--332062176, -325179488, -308778080, -284093824, -251596496, -215451664, -178305568, -136985840, -89327264, -39129300,
-10106595, 58457188, 102657768, 135197520, 154283280, 165445360, 170970832, 168290240, 159845792, 152339264,
-145684752, 135665664, 126222112, 123444880, 118667264, 95619392, 55449100, 18055506, -1458678, },
+533789280, 470712320, 324263040, 183661936, 95593624, 13487271, -82588464, -127956200, -79816064, 7536057,
+54663124, 30402462, -71739912, -247676272, -438472672, -547349568, -541801024, -482090752, -423726432, -356343232,
+-266416288, -190427040, -161387152, -155142816, -132955544, -95782600, -57178364, 214212, 98348848, 218841472,
+323258016, 402958112, 474727552, 535242048, 552199104, 505210560, 414675328, 321215232, 247467968, 188448128,
+131875360, 74614320, 17566416, -42997992, -109456704, -174512032, -228280736, -269658976, -302424768, -324817632,
+-332062176, -325179488, -308778080, -284093824, -251596496, -215451664, -178305568, -136985840, -89327264, -39129300,
+10106595, 58457188, 102657768, 135197520, 154283280, 165445360, 170970832, 168290240, 159845792, 152339264,
+145684752, 135665664, 126222112, 123444880, 118667264, 95619392, 55449100, 18055506, -1458678, },
{
665281280,
-674784448, 698239808, 731240192, 748593472, 727196992, 689475904, 685777408, 708633664, 676513152, 556107520,
-451947584, 493353760, 659701056, 808494336, 867047040, 900015232, 977696704, 1075521024, 1138411136, 1160941952,
-1154109824, 1096802048, 976626176, 839007872, 747508480, 718602816, 727278080, 754160832, 799917248, 870264512,
-967069888, 1082529280, 1192306048, 1267405184, 1298377728, 1297374848, 1278310528, 1247297664, 1207363072, 1159006592,
-1100992896, 1040038144, 991227968, 961344128, 942479040, 926492096, 911659968, 892559168, 860845632, 819307968,
-779264384, 743933440, 709595200, 678932864, 656769728, 638880704, 620198656, 604545664, 592851520, 575412864,
-547787648, 516941728, 481964064, 430530752, 362592960, 292907104, 225806832, 155925024, 93299040, 53560928,
-27193048, -3490198, -27827094, -33299418, -51461760, -118380576, -203644800, -245106800, -242138976, },
+674784448, 698239808, 731240192, 748593472, 727196992, 689475904, 685777408, 708633664, 676513152, 556107520,
+451947584, 493353760, 659701056, 808494336, 867047040, 900015232, 977696704, 1075521024, 1138411136, 1160941952,
+1154109824, 1096802048, 976626176, 839007872, 747508480, 718602816, 727278080, 754160832, 799917248, 870264512,
+967069888, 1082529280, 1192306048, 1267405184, 1298377728, 1297374848, 1278310528, 1247297664, 1207363072, 1159006592,
+1100992896, 1040038144, 991227968, 961344128, 942479040, 926492096, 911659968, 892559168, 860845632, 819307968,
+779264384, 743933440, 709595200, 678932864, 656769728, 638880704, 620198656, 604545664, 592851520, 575412864,
+547787648, 516941728, 481964064, 430530752, 362592960, 292907104, 225806832, 155925024, 93299040, 53560928,
+27193048, -3490198, -27827094, -33299418, -51461760, -118380576, -203644800, -245106800, -242138976, },
},
{
{
602370240,
-637539008, 669323968, 636987136, 540635456, 483809280, 541556736, 613094208, 531643392, 322999264, 215506432,
-347957856, 588924864, 718721408, 697091968, 661672448, 721040704, 843483776, 931750208, 931413056, 856077184,
-753607296, 668653952, 621145664, 607285312, 618784000, 656078784, 721098688, 805003584, 887858304, 946848640,
-965448000, 942007680, 891112832, 830678336, 766307520, 693250688, 613766400, 545172544, 506799712, 503085632,
-522555264, 548847936, 568437824, 572668416, 560602752, 539573504, 516954080, 491754976, 459128256, 420713536,
-383797216, 352052032, 324045632, 299112800, 277784000, 258055056, 237306608, 215845200, 194331696, 171894256,
-150265344, 133504760, 120547384, 105984224, 90401008, 79930952, 74162808, 66552128, 57468808, 52935472,
-51010788, 45456324, 40671728, 43430172, 42086384, 16999480, -28233504, -68147176, -87076168, },
+637539008, 669323968, 636987136, 540635456, 483809280, 541556736, 613094208, 531643392, 322999264, 215506432,
+347957856, 588924864, 718721408, 697091968, 661672448, 721040704, 843483776, 931750208, 931413056, 856077184,
+753607296, 668653952, 621145664, 607285312, 618784000, 656078784, 721098688, 805003584, 887858304, 946848640,
+965448000, 942007680, 891112832, 830678336, 766307520, 693250688, 613766400, 545172544, 506799712, 503085632,
+522555264, 548847936, 568437824, 572668416, 560602752, 539573504, 516954080, 491754976, 459128256, 420713536,
+383797216, 352052032, 324045632, 299112800, 277784000, 258055056, 237306608, 215845200, 194331696, 171894256,
+150265344, 133504760, 120547384, 105984224, 90401008, 79930952, 74162808, 66552128, 57468808, 52935472,
+51010788, 45456324, 40671728, 43430172, 42086384, 16999480, -28233504, -68147176, -87076168, },
{
602370240,
-637539008, 669323968, 636987136, 540635456, 483809280, 541556736, 613094208, 531643392, 322999264, 215506432,
-347957856, 588924864, 718721408, 697091968, 661672448, 721040704, 843483776, 931750208, 931413056, 856077184,
-753607296, 668653952, 621145664, 607285312, 618784000, 656078784, 721098688, 805003584, 887858304, 946848640,
-965448000, 942007680, 891112832, 830678336, 766307520, 693250688, 613766400, 545172544, 506799712, 503085632,
-522555264, 548847936, 568437824, 572668416, 560602752, 539573504, 516954080, 491754976, 459128256, 420713536,
-383797216, 352052032, 324045632, 299112800, 277784000, 258055056, 237306608, 215845200, 194331696, 171894256,
-150265344, 133504760, 120547384, 105984224, 90401008, 79930952, 74162808, 66552128, 57468808, 52935472,
-51010788, 45456324, 40671728, 43430172, 42086384, 16999480, -28233504, -68147176, -87076168, },
+637539008, 669323968, 636987136, 540635456, 483809280, 541556736, 613094208, 531643392, 322999264, 215506432,
+347957856, 588924864, 718721408, 697091968, 661672448, 721040704, 843483776, 931750208, 931413056, 856077184,
+753607296, 668653952, 621145664, 607285312, 618784000, 656078784, 721098688, 805003584, 887858304, 946848640,
+965448000, 942007680, 891112832, 830678336, 766307520, 693250688, 613766400, 545172544, 506799712, 503085632,
+522555264, 548847936, 568437824, 572668416, 560602752, 539573504, 516954080, 491754976, 459128256, 420713536,
+383797216, 352052032, 324045632, 299112800, 277784000, 258055056, 237306608, 215845200, 194331696, 171894256,
+150265344, 133504760, 120547384, 105984224, 90401008, 79930952, 74162808, 66552128, 57468808, 52935472,
+51010788, 45456324, 40671728, 43430172, 42086384, 16999480, -28233504, -68147176, -87076168, },
},
{
{
554296640,
-547196032, 566668864, 618661056, 679085312, 742984256, 811807872, 848410112, 818592320, 762813568, 748776000,
-765459264, 744624384, 676696768, 620590016, 601593408, 582660096, 541901952, 502089728, 473425120, 434916992,
-384839264, 352291456, 348175808, 352792896, 356490880, 367396864, 376819488, 360623712, 319377536, 280715296,
-259372000, 245877744, 234353280, 232350752, 242504592, 258529120, 279809056, 311139776, 349029984, 382816352,
-406947072, 421723360, 426924576, 423932608, 419369728, 419914112, 427815264, 444200544, 470166304, 502258848,
-532944224, 556508608, 569734400, 568993536, 552990464, 526220992, 494308864, 458682112, 419633888, 379832416,
-340900160, 301575424, 262233520, 225994192, 194006896, 165567776, 142686336, 127879968, 119163864, 114121576,
-114892520, 121773600, 129415416, 138241040, 157090576, 180498144, 179665456, 140071232, 95798168, },
+547196032, 566668864, 618661056, 679085312, 742984256, 811807872, 848410112, 818592320, 762813568, 748776000,
+765459264, 744624384, 676696768, 620590016, 601593408, 582660096, 541901952, 502089728, 473425120, 434916992,
+384839264, 352291456, 348175808, 352792896, 356490880, 367396864, 376819488, 360623712, 319377536, 280715296,
+259372000, 245877744, 234353280, 232350752, 242504592, 258529120, 279809056, 311139776, 349029984, 382816352,
+406947072, 421723360, 426924576, 423932608, 419369728, 419914112, 427815264, 444200544, 470166304, 502258848,
+532944224, 556508608, 569734400, 568993536, 552990464, 526220992, 494308864, 458682112, 419633888, 379832416,
+340900160, 301575424, 262233520, 225994192, 194006896, 165567776, 142686336, 127879968, 119163864, 114121576,
+114892520, 121773600, 129415416, 138241040, 157090576, 180498144, 179665456, 140071232, 95798168, },
{
477454336,
-401040416, 262195936, 104383808, -22741314, -110121352, -182601616, -243891872, -265826256, -240394688, -202544208,
--183463280, -174869600, -159462480, -144265264, -136873088, -113585240, -42030548, 75551696, 202205984, 299249152,
-345080224, 335348352, 282432224, 208138944, 126522224, 40561672, -41695544, -102866080, -134796480, -147696416,
--154232272, -156779184, -154798144, -151095344, -144431696, -126498064, -91458648, -41634340, 16705812, 75270912,
-122406568, 148172080, 150975072, 135045584, 105265352, 68783368, 35770636, 12797392, -663572, -7075422,
--8021389, -7206955, -8933532, -12796855, -15990163, -19165754, -23754928, -27308476, -28304908, -30581240,
--36782100, -43931072, -50539952, -59223304, -67665600, -67461048, -55589760, -35688492, -7253663, 31792422,
-72493680, 101975408, 120829240, 134001368, 129902360, 94151048, 40635224, 1247151, -13009456, },
+401040416, 262195936, 104383808, -22741314, -110121352, -182601616, -243891872, -265826256, -240394688, -202544208,
+-183463280, -174869600, -159462480, -144265264, -136873088, -113585240, -42030548, 75551696, 202205984, 299249152,
+345080224, 335348352, 282432224, 208138944, 126522224, 40561672, -41695544, -102866080, -134796480, -147696416,
+-154232272, -156779184, -154798144, -151095344, -144431696, -126498064, -91458648, -41634340, 16705812, 75270912,
+122406568, 148172080, 150975072, 135045584, 105265352, 68783368, 35770636, 12797392, -663572, -7075422,
+-8021389, -7206955, -8933532, -12796855, -15990163, -19165754, -23754928, -27308476, -28304908, -30581240,
+-36782100, -43931072, -50539952, -59223304, -67665600, -67461048, -55589760, -35688492, -7253663, 31792422,
+72493680, 101975408, 120829240, 134001368, 129902360, 94151048, 40635224, 1247151, -13009456, },
},
{
{
477454336,
-401040416, 262195936, 104383808, -22741314, -110121352, -182601616, -243891872, -265826256, -240394688, -202544208,
--183463280, -174869600, -159462480, -144265264, -136873088, -113585240, -42030548, 75551696, 202205984, 299249152,
-345080224, 335348352, 282432224, 208138944, 126522224, 40561672, -41695544, -102866080, -134796480, -147696416,
--154232272, -156779184, -154798144, -151095344, -144431696, -126498064, -91458648, -41634340, 16705812, 75270912,
-122406568, 148172080, 150975072, 135045584, 105265352, 68783368, 35770636, 12797392, -663572, -7075422,
--8021389, -7206955, -8933532, -12796855, -15990163, -19165754, -23754928, -27308476, -28304908, -30581240,
--36782100, -43931072, -50539952, -59223304, -67665600, -67461048, -55589760, -35688492, -7253663, 31792422,
-72493680, 101975408, 120829240, 134001368, 129902360, 94151048, 40635224, 1247151, -13009456, },
+401040416, 262195936, 104383808, -22741314, -110121352, -182601616, -243891872, -265826256, -240394688, -202544208,
+-183463280, -174869600, -159462480, -144265264, -136873088, -113585240, -42030548, 75551696, 202205984, 299249152,
+345080224, 335348352, 282432224, 208138944, 126522224, 40561672, -41695544, -102866080, -134796480, -147696416,
+-154232272, -156779184, -154798144, -151095344, -144431696, -126498064, -91458648, -41634340, 16705812, 75270912,
+122406568, 148172080, 150975072, 135045584, 105265352, 68783368, 35770636, 12797392, -663572, -7075422,
+-8021389, -7206955, -8933532, -12796855, -15990163, -19165754, -23754928, -27308476, -28304908, -30581240,
+-36782100, -43931072, -50539952, -59223304, -67665600, -67461048, -55589760, -35688492, -7253663, 31792422,
+72493680, 101975408, 120829240, 134001368, 129902360, 94151048, 40635224, 1247151, -13009456, },
{
554296640,
-547196032, 566668864, 618661056, 679085312, 742984256, 811807872, 848410112, 818592320, 762813568, 748776000,
-765459264, 744624384, 676696768, 620590016, 601593408, 582660096, 541901952, 502089728, 473425120, 434916992,
-384839264, 352291456, 348175808, 352792896, 356490880, 367396864, 376819488, 360623712, 319377536, 280715296,
-259372000, 245877744, 234353280, 232350752, 242504592, 258529120, 279809056, 311139776, 349029984, 382816352,
-406947072, 421723360, 426924576, 423932608, 419369728, 419914112, 427815264, 444200544, 470166304, 502258848,
-532944224, 556508608, 569734400, 568993536, 552990464, 526220992, 494308864, 458682112, 419633888, 379832416,
-340900160, 301575424, 262233520, 225994192, 194006896, 165567776, 142686336, 127879968, 119163864, 114121576,
-114892520, 121773600, 129415416, 138241040, 157090576, 180498144, 179665456, 140071232, 95798168, },
+547196032, 566668864, 618661056, 679085312, 742984256, 811807872, 848410112, 818592320, 762813568, 748776000,
+765459264, 744624384, 676696768, 620590016, 601593408, 582660096, 541901952, 502089728, 473425120, 434916992,
+384839264, 352291456, 348175808, 352792896, 356490880, 367396864, 376819488, 360623712, 319377536, 280715296,
+259372000, 245877744, 234353280, 232350752, 242504592, 258529120, 279809056, 311139776, 349029984, 382816352,
+406947072, 421723360, 426924576, 423932608, 419369728, 419914112, 427815264, 444200544, 470166304, 502258848,
+532944224, 556508608, 569734400, 568993536, 552990464, 526220992, 494308864, 458682112, 419633888, 379832416,
+340900160, 301575424, 262233520, 225994192, 194006896, 165567776, 142686336, 127879968, 119163864, 114121576,
+114892520, 121773600, 129415416, 138241040, 157090576, 180498144, 179665456, 140071232, 95798168, },
},
{
{
621756672,
-610452800, 630615552, 702445632, 792348480, 858193536, 893816000, 907361792, 886694400, 824003968, 755261440,
-727917504, 733139136, 716980352, 663897280, 620523968, 620393024, 632726528, 615048448, 577073984, 555149248,
-552123392, 543052416, 523071168, 510752672, 511525760, 510709184, 501455136, 494210624, 497641216, 508644928,
-521307040, 531829696, 535974336, 532874432, 529774560, 535202848, 550437632, 572668928, 600793984, 632921920,
-664218304, 691969728, 717544640, 740619840, 757538304, 767474688, 774215616, 780483072, 786036992, 791412672,
-797712320, 802936640, 803587840, 798848320, 789148160, 773271808, 750862848, 724289856, 694559040, 659781056,
-620432192, 580501888, 540989760, 498887296, 454513856, 412135392, 371802432, 329539968, 287038560, 251136944,
-222513664, 196285904, 175022064, 167052224, 167232608, 153102160, 109348792, 49311592, 6205691, },
+610452800, 630615552, 702445632, 792348480, 858193536, 893816000, 907361792, 886694400, 824003968, 755261440,
+727917504, 733139136, 716980352, 663897280, 620523968, 620393024, 632726528, 615048448, 577073984, 555149248,
+552123392, 543052416, 523071168, 510752672, 511525760, 510709184, 501455136, 494210624, 497641216, 508644928,
+521307040, 531829696, 535974336, 532874432, 529774560, 535202848, 550437632, 572668928, 600793984, 632921920,
+664218304, 691969728, 717544640, 740619840, 757538304, 767474688, 774215616, 780483072, 786036992, 791412672,
+797712320, 802936640, 803587840, 798848320, 789148160, 773271808, 750862848, 724289856, 694559040, 659781056,
+620432192, 580501888, 540989760, 498887296, 454513856, 412135392, 371802432, 329539968, 287038560, 251136944,
+222513664, 196285904, 175022064, 167052224, 167232608, 153102160, 109348792, 49311592, 6205691, },
{
484072864,
-362911328, 165609648, -41981156, -212093008, -332805216, -402363808, -400033792, -304724160, -137953808, 36216776,
-160706944, 222448160, 239901840, 229993344, 195366256, 135999072, 62549756, -7023882, -63296008, -110795120,
--152567968, -176795888, -168798656, -131159712, -80323408, -26991722, 27882928, 80286360, 119317952, 137106096,
-133840304, 113017232, 78420200, 35158064, -11215233, -55674588, -91772712, -112176496, -113720000, -99439232,
--74932144, -45231376, -14150307, 16697759, 47128676, 74521440, 93131000, 98641440, 90078352, 67349920,
-32195612, -8400956, -45283988, -73177112, -89565104, -91423744, -79084840, -59047212, -37090264, -13511430,
-10936597, 32290638, 50281720, 68347960, 83755624, 88343720, 79904648, 60663192, 27116276, -22636088,
--75426072, -114201568, -134971488, -134073848, -95666104, -22046604, 41375568, 52510808, 32166084, },
+362911328, 165609648, -41981156, -212093008, -332805216, -402363808, -400033792, -304724160, -137953808, 36216776,
+160706944, 222448160, 239901840, 229993344, 195366256, 135999072, 62549756, -7023882, -63296008, -110795120,
+-152567968, -176795888, -168798656, -131159712, -80323408, -26991722, 27882928, 80286360, 119317952, 137106096,
+133840304, 113017232, 78420200, 35158064, -11215233, -55674588, -91772712, -112176496, -113720000, -99439232,
+-74932144, -45231376, -14150307, 16697759, 47128676, 74521440, 93131000, 98641440, 90078352, 67349920,
+32195612, -8400956, -45283988, -73177112, -89565104, -91423744, -79084840, -59047212, -37090264, -13511430,
+10936597, 32290638, 50281720, 68347960, 83755624, 88343720, 79904648, 60663192, 27116276, -22636088,
+-75426072, -114201568, -134971488, -134073848, -95666104, -22046604, 41375568, 52510808, 32166084, },
},
{
{
484072864,
-362911328, 165609648, -41981156, -212093008, -332805216, -402363808, -400033792, -304724160, -137953808, 36216776,
-160706944, 222448160, 239901840, 229993344, 195366256, 135999072, 62549756, -7023882, -63296008, -110795120,
--152567968, -176795888, -168798656, -131159712, -80323408, -26991722, 27882928, 80286360, 119317952, 137106096,
-133840304, 113017232, 78420200, 35158064, -11215233, -55674588, -91772712, -112176496, -113720000, -99439232,
--74932144, -45231376, -14150307, 16697759, 47128676, 74521440, 93131000, 98641440, 90078352, 67349920,
-32195612, -8400956, -45283988, -73177112, -89565104, -91423744, -79084840, -59047212, -37090264, -13511430,
-10936597, 32290638, 50281720, 68347960, 83755624, 88343720, 79904648, 60663192, 27116276, -22636088,
--75426072, -114201568, -134971488, -134073848, -95666104, -22046604, 41375568, 52510808, 32166084, },
+362911328, 165609648, -41981156, -212093008, -332805216, -402363808, -400033792, -304724160, -137953808, 36216776,
+160706944, 222448160, 239901840, 229993344, 195366256, 135999072, 62549756, -7023882, -63296008, -110795120,
+-152567968, -176795888, -168798656, -131159712, -80323408, -26991722, 27882928, 80286360, 119317952, 137106096,
+133840304, 113017232, 78420200, 35158064, -11215233, -55674588, -91772712, -112176496, -113720000, -99439232,
+-74932144, -45231376, -14150307, 16697759, 47128676, 74521440, 93131000, 98641440, 90078352, 67349920,
+32195612, -8400956, -45283988, -73177112, -89565104, -91423744, -79084840, -59047212, -37090264, -13511430,
+10936597, 32290638, 50281720, 68347960, 83755624, 88343720, 79904648, 60663192, 27116276, -22636088,
+-75426072, -114201568, -134971488, -134073848, -95666104, -22046604, 41375568, 52510808, 32166084, },
{
621756672,
-610452800, 630615552, 702445632, 792348480, 858193536, 893816000, 907361792, 886694400, 824003968, 755261440,
-727917504, 733139136, 716980352, 663897280, 620523968, 620393024, 632726528, 615048448, 577073984, 555149248,
-552123392, 543052416, 523071168, 510752672, 511525760, 510709184, 501455136, 494210624, 497641216, 508644928,
-521307040, 531829696, 535974336, 532874432, 529774560, 535202848, 550437632, 572668928, 600793984, 632921920,
-664218304, 691969728, 717544640, 740619840, 757538304, 767474688, 774215616, 780483072, 786036992, 791412672,
-797712320, 802936640, 803587840, 798848320, 789148160, 773271808, 750862848, 724289856, 694559040, 659781056,
-620432192, 580501888, 540989760, 498887296, 454513856, 412135392, 371802432, 329539968, 287038560, 251136944,
-222513664, 196285904, 175022064, 167052224, 167232608, 153102160, 109348792, 49311592, 6205691, },
+610452800, 630615552, 702445632, 792348480, 858193536, 893816000, 907361792, 886694400, 824003968, 755261440,
+727917504, 733139136, 716980352, 663897280, 620523968, 620393024, 632726528, 615048448, 577073984, 555149248,
+552123392, 543052416, 523071168, 510752672, 511525760, 510709184, 501455136, 494210624, 497641216, 508644928,
+521307040, 531829696, 535974336, 532874432, 529774560, 535202848, 550437632, 572668928, 600793984, 632921920,
+664218304, 691969728, 717544640, 740619840, 757538304, 767474688, 774215616, 780483072, 786036992, 791412672,
+797712320, 802936640, 803587840, 798848320, 789148160, 773271808, 750862848, 724289856, 694559040, 659781056,
+620432192, 580501888, 540989760, 498887296, 454513856, 412135392, 371802432, 329539968, 287038560, 251136944,
+222513664, 196285904, 175022064, 167052224, 167232608, 153102160, 109348792, 49311592, 6205691, },
},
{
{
663314752,
-680615424, 704123904, 749817024, 838668608, 933881600, 965105984, 926342848, 883536512, 867071744, 829009728,
-740681600, 661032000, 653968896, 694012480, 715598464, 713035968, 725833920, 755362368, 764999168, 750177792,
-746233920, 766158272, 779788864, 761093952, 720125888, 682184128, 661349248, 657734528, 661714368, 660551488,
-654196544, 660604096, 694720064, 748607424, 801209536, 839960832, 865090176, 880818880, 890421376, 895874368,
-898570496, 902171328, 912473856, 930828928, 952021376, 972181952, 992491264, 1012047872, 1025152832, 1028589376,
-1023516992, 1009262528, 984214848, 952265088, 919344704, 886117760, 852254656, 821971904, 796597248, 769538944,
-736346880, 699329664, 656234496, 598574016, 526703104, 450481408, 372134208, 287646848, 204881744, 136896720,
-79741976, 23230404, -23418310, -49200996, -74181600, -124141200, -181532704, -207284784, -203362400, },
+680615424, 704123904, 749817024, 838668608, 933881600, 965105984, 926342848, 883536512, 867071744, 829009728,
+740681600, 661032000, 653968896, 694012480, 715598464, 713035968, 725833920, 755362368, 764999168, 750177792,
+746233920, 766158272, 779788864, 761093952, 720125888, 682184128, 661349248, 657734528, 661714368, 660551488,
+654196544, 660604096, 694720064, 748607424, 801209536, 839960832, 865090176, 880818880, 890421376, 895874368,
+898570496, 902171328, 912473856, 930828928, 952021376, 972181952, 992491264, 1012047872, 1025152832, 1028589376,
+1023516992, 1009262528, 984214848, 952265088, 919344704, 886117760, 852254656, 821971904, 796597248, 769538944,
+736346880, 699329664, 656234496, 598574016, 526703104, 450481408, 372134208, 287646848, 204881744, 136896720,
+79741976, 23230404, -23418310, -49200996, -74181600, -124141200, -181532704, -207284784, -203362400, },
{
491119840,
-348995616, 128621384, -97632120, -289412608, -423000064, -463336768, -380973248, -195104256, 24281598, 206642144,
-322000672, 370486560, 351555424, 260226160, 107231376, -71365176, -228021424, -325345920, -347531584, -296888000,
--184866672, -31224950, 129964640, 255163472, 311949920, 293880992, 214185728, 93033288, -44268228, -166360192,
--244839984, -264906608, -226057552, -138746240, -24590836, 86406152, 166708624, 201445776, 189976064, 141800496,
-71440336, -6223408, -77591272, -129388576, -151008896, -140083584, -102848896, -48852032, 10887205, 62631896,
-94646048, 104201816, 95234992, 71203576, 35948876, -2226404, -34846680, -58946816, -73388640, -74912816,
--63276680, -43950400, -20984674, 5622112, 32672354, 53384832, 66130684, 72770168, 68470368, 46321760,
-10834592, -26956826, -62720480, -90538984, -91584808, -56170656, -9368934, 13955422, 13662291, },
+348995616, 128621384, -97632120, -289412608, -423000064, -463336768, -380973248, -195104256, 24281598, 206642144,
+322000672, 370486560, 351555424, 260226160, 107231376, -71365176, -228021424, -325345920, -347531584, -296888000,
+-184866672, -31224950, 129964640, 255163472, 311949920, 293880992, 214185728, 93033288, -44268228, -166360192,
+-244839984, -264906608, -226057552, -138746240, -24590836, 86406152, 166708624, 201445776, 189976064, 141800496,
+71440336, -6223408, -77591272, -129388576, -151008896, -140083584, -102848896, -48852032, 10887205, 62631896,
+94646048, 104201816, 95234992, 71203576, 35948876, -2226404, -34846680, -58946816, -73388640, -74912816,
+-63276680, -43950400, -20984674, 5622112, 32672354, 53384832, 66130684, 72770168, 68470368, 46321760,
+10834592, -26956826, -62720480, -90538984, -91584808, -56170656, -9368934, 13955422, 13662291, },
},
{
{
491119840,
-348995616, 128621384, -97632120, -289412608, -423000064, -463336768, -380973248, -195104256, 24281598, 206642144,
-322000672, 370486560, 351555424, 260226160, 107231376, -71365176, -228021424, -325345920, -347531584, -296888000,
--184866672, -31224950, 129964640, 255163472, 311949920, 293880992, 214185728, 93033288, -44268228, -166360192,
--244839984, -264906608, -226057552, -138746240, -24590836, 86406152, 166708624, 201445776, 189976064, 141800496,
-71440336, -6223408, -77591272, -129388576, -151008896, -140083584, -102848896, -48852032, 10887205, 62631896,
-94646048, 104201816, 95234992, 71203576, 35948876, -2226404, -34846680, -58946816, -73388640, -74912816,
--63276680, -43950400, -20984674, 5622112, 32672354, 53384832, 66130684, 72770168, 68470368, 46321760,
-10834592, -26956826, -62720480, -90538984, -91584808, -56170656, -9368934, 13955422, 13662291, },
+348995616, 128621384, -97632120, -289412608, -423000064, -463336768, -380973248, -195104256, 24281598, 206642144,
+322000672, 370486560, 351555424, 260226160, 107231376, -71365176, -228021424, -325345920, -347531584, -296888000,
+-184866672, -31224950, 129964640, 255163472, 311949920, 293880992, 214185728, 93033288, -44268228, -166360192,
+-244839984, -264906608, -226057552, -138746240, -24590836, 86406152, 166708624, 201445776, 189976064, 141800496,
+71440336, -6223408, -77591272, -129388576, -151008896, -140083584, -102848896, -48852032, 10887205, 62631896,
+94646048, 104201816, 95234992, 71203576, 35948876, -2226404, -34846680, -58946816, -73388640, -74912816,
+-63276680, -43950400, -20984674, 5622112, 32672354, 53384832, 66130684, 72770168, 68470368, 46321760,
+10834592, -26956826, -62720480, -90538984, -91584808, -56170656, -9368934, 13955422, 13662291, },
{
663314752,
-680615424, 704123904, 749817024, 838668608, 933881600, 965105984, 926342848, 883536512, 867071744, 829009728,
-740681600, 661032000, 653968896, 694012480, 715598464, 713035968, 725833920, 755362368, 764999168, 750177792,
-746233920, 766158272, 779788864, 761093952, 720125888, 682184128, 661349248, 657734528, 661714368, 660551488,
-654196544, 660604096, 694720064, 748607424, 801209536, 839960832, 865090176, 880818880, 890421376, 895874368,
-898570496, 902171328, 912473856, 930828928, 952021376, 972181952, 992491264, 1012047872, 1025152832, 1028589376,
-1023516992, 1009262528, 984214848, 952265088, 919344704, 886117760, 852254656, 821971904, 796597248, 769538944,
-736346880, 699329664, 656234496, 598574016, 526703104, 450481408, 372134208, 287646848, 204881744, 136896720,
-79741976, 23230404, -23418310, -49200996, -74181600, -124141200, -181532704, -207284784, -203362400, },
+680615424, 704123904, 749817024, 838668608, 933881600, 965105984, 926342848, 883536512, 867071744, 829009728,
+740681600, 661032000, 653968896, 694012480, 715598464, 713035968, 725833920, 755362368, 764999168, 750177792,
+746233920, 766158272, 779788864, 761093952, 720125888, 682184128, 661349248, 657734528, 661714368, 660551488,
+654196544, 660604096, 694720064, 748607424, 801209536, 839960832, 865090176, 880818880, 890421376, 895874368,
+898570496, 902171328, 912473856, 930828928, 952021376, 972181952, 992491264, 1012047872, 1025152832, 1028589376,
+1023516992, 1009262528, 984214848, 952265088, 919344704, 886117760, 852254656, 821971904, 796597248, 769538944,
+736346880, 699329664, 656234496, 598574016, 526703104, 450481408, 372134208, 287646848, 204881744, 136896720,
+79741976, 23230404, -23418310, -49200996, -74181600, -124141200, -181532704, -207284784, -203362400, },
},
{
{
698450240,
-695113600, 688707136, 673868544, 646702336, 610917760, 568857664, 527102560, 519145056, 586428416, 718136768,
-845610880, 914316416, 924911552, 894738880, 830247232, 753590144, 704238272, 693756416, 701662912, 724094464,
-778277056, 853215104, 906342784, 916561024, 898645696, 867138880, 828636608, 804123648, 816253184, 857867648,
-905643776, 954590336, 1010564992, 1063627712, 1095899008, 1103429120, 1092297216, 1067622016, 1037442368, 1011192576,
-988458240, 963559808, 938667776, 917664832, 896221696, 872711040, 855399104, 846239552, 834929280, 818068352,
-803600704, 792021504, 776625664, 761370432, 753275008, 743880832, 723544128, 700462464, 681426624, 655573056,
-619867392, 590852736, 571201152, 541938432, 502302336, 471169184, 441192992, 387073184, 319064544, 263699712,
-203195440, 109921096, 14169097, -55798068, -158887488, -345028160, -519762432, -554675136, -496490176, },
+695113600, 688707136, 673868544, 646702336, 610917760, 568857664, 527102560, 519145056, 586428416, 718136768,
+845610880, 914316416, 924911552, 894738880, 830247232, 753590144, 704238272, 693756416, 701662912, 724094464,
+778277056, 853215104, 906342784, 916561024, 898645696, 867138880, 828636608, 804123648, 816253184, 857867648,
+905643776, 954590336, 1010564992, 1063627712, 1095899008, 1103429120, 1092297216, 1067622016, 1037442368, 1011192576,
+988458240, 963559808, 938667776, 917664832, 896221696, 872711040, 855399104, 846239552, 834929280, 818068352,
+803600704, 792021504, 776625664, 761370432, 753275008, 743880832, 723544128, 700462464, 681426624, 655573056,
+619867392, 590852736, 571201152, 541938432, 502302336, 471169184, 441192992, 387073184, 319064544, 263699712,
+203195440, 109921096, 14169097, -55798068, -158887488, -345028160, -519762432, -554675136, -496490176, },
{
567408640,
-524879360, 445231872, 326981216, 179955904, 55461448, 21249350, 91448984, 201343232, 259282336, 211754768,
-68303400, -107528800, -233695072, -268373184, -242689280, -219989296, -229898864, -263432352, -314680992, -385375616,
--452217120, -474061312, -442161504, -392155200, -358447232, -343104000, -333307712, -320852320, -296769888, -250224256,
--181758720, -103790568, -27038430, 41594072, 93680752, 127249144, 154683792, 189131568, 229011408, 265722112,
-296795136, 322010880, 337931264, 345139264, 349932992, 353043616, 348371232, 335426752, 319803264, 301012256,
-273765504, 239266192, 201343776, 156256272, 100300912, 40257804, -16853452, -74278776, -133969160, -187937568,
--232004464, -272277856, -309240320, -334208576, -347784992, -359915040, -368298816, -361418272, -342292800, -321298976,
--291328160, -242526608, -189707088, -145970368, -87378424, 5882495, 92952216, 118694104, 100779800, },
+524879360, 445231872, 326981216, 179955904, 55461448, 21249350, 91448984, 201343232, 259282336, 211754768,
+68303400, -107528800, -233695072, -268373184, -242689280, -219989296, -229898864, -263432352, -314680992, -385375616,
+-452217120, -474061312, -442161504, -392155200, -358447232, -343104000, -333307712, -320852320, -296769888, -250224256,
+-181758720, -103790568, -27038430, 41594072, 93680752, 127249144, 154683792, 189131568, 229011408, 265722112,
+296795136, 322010880, 337931264, 345139264, 349932992, 353043616, 348371232, 335426752, 319803264, 301012256,
+273765504, 239266192, 201343776, 156256272, 100300912, 40257804, -16853452, -74278776, -133969160, -187937568,
+-232004464, -272277856, -309240320, -334208576, -347784992, -359915040, -368298816, -361418272, -342292800, -321298976,
+-291328160, -242526608, -189707088, -145970368, -87378424, 5882495, 92952216, 118694104, 100779800, },
},
{
{
567408640,
-524879360, 445231872, 326981216, 179955904, 55461448, 21249350, 91448984, 201343232, 259282336, 211754768,
-68303400, -107528800, -233695072, -268373184, -242689280, -219989296, -229898864, -263432352, -314680992, -385375616,
--452217120, -474061312, -442161504, -392155200, -358447232, -343104000, -333307712, -320852320, -296769888, -250224256,
--181758720, -103790568, -27038430, 41594072, 93680752, 127249144, 154683792, 189131568, 229011408, 265722112,
-296795136, 322010880, 337931264, 345139264, 349932992, 353043616, 348371232, 335426752, 319803264, 301012256,
-273765504, 239266192, 201343776, 156256272, 100300912, 40257804, -16853452, -74278776, -133969160, -187937568,
--232004464, -272277856, -309240320, -334208576, -347784992, -359915040, -368298816, -361418272, -342292800, -321298976,
--291328160, -242526608, -189707088, -145970368, -87378424, 5882495, 92952216, 118694104, 100779800, },
+524879360, 445231872, 326981216, 179955904, 55461448, 21249350, 91448984, 201343232, 259282336, 211754768,
+68303400, -107528800, -233695072, -268373184, -242689280, -219989296, -229898864, -263432352, -314680992, -385375616,
+-452217120, -474061312, -442161504, -392155200, -358447232, -343104000, -333307712, -320852320, -296769888, -250224256,
+-181758720, -103790568, -27038430, 41594072, 93680752, 127249144, 154683792, 189131568, 229011408, 265722112,
+296795136, 322010880, 337931264, 345139264, 349932992, 353043616, 348371232, 335426752, 319803264, 301012256,
+273765504, 239266192, 201343776, 156256272, 100300912, 40257804, -16853452, -74278776, -133969160, -187937568,
+-232004464, -272277856, -309240320, -334208576, -347784992, -359915040, -368298816, -361418272, -342292800, -321298976,
+-291328160, -242526608, -189707088, -145970368, -87378424, 5882495, 92952216, 118694104, 100779800, },
{
698450240,
-695113600, 688707136, 673868544, 646702336, 610917760, 568857664, 527102560, 519145056, 586428416, 718136768,
-845610880, 914316416, 924911552, 894738880, 830247232, 753590144, 704238272, 693756416, 701662912, 724094464,
-778277056, 853215104, 906342784, 916561024, 898645696, 867138880, 828636608, 804123648, 816253184, 857867648,
-905643776, 954590336, 1010564992, 1063627712, 1095899008, 1103429120, 1092297216, 1067622016, 1037442368, 1011192576,
-988458240, 963559808, 938667776, 917664832, 896221696, 872711040, 855399104, 846239552, 834929280, 818068352,
-803600704, 792021504, 776625664, 761370432, 753275008, 743880832, 723544128, 700462464, 681426624, 655573056,
-619867392, 590852736, 571201152, 541938432, 502302336, 471169184, 441192992, 387073184, 319064544, 263699712,
-203195440, 109921096, 14169097, -55798068, -158887488, -345028160, -519762432, -554675136, -496490176, },
+695113600, 688707136, 673868544, 646702336, 610917760, 568857664, 527102560, 519145056, 586428416, 718136768,
+845610880, 914316416, 924911552, 894738880, 830247232, 753590144, 704238272, 693756416, 701662912, 724094464,
+778277056, 853215104, 906342784, 916561024, 898645696, 867138880, 828636608, 804123648, 816253184, 857867648,
+905643776, 954590336, 1010564992, 1063627712, 1095899008, 1103429120, 1092297216, 1067622016, 1037442368, 1011192576,
+988458240, 963559808, 938667776, 917664832, 896221696, 872711040, 855399104, 846239552, 834929280, 818068352,
+803600704, 792021504, 776625664, 761370432, 753275008, 743880832, 723544128, 700462464, 681426624, 655573056,
+619867392, 590852736, 571201152, 541938432, 502302336, 471169184, 441192992, 387073184, 319064544, 263699712,
+203195440, 109921096, 14169097, -55798068, -158887488, -345028160, -519762432, -554675136, -496490176, },
},
{
{
644109824,
-641661120, 654817664, 701214080, 765066304, 793017920, 750046272, 672282112, 629564352, 638276160, 653404672,
-650713344, 664768064, 724066496, 796885568, 836247872, 841609600, 838631552, 827856576, 793175744, 740571520,
-691951424, 653267776, 616578496, 581786624, 554008384, 530454752, 506390080, 483272416, 461399744, 437886944,
-417039168, 407054464, 404265952, 397127712, 385007840, 376674016, 374368128, 375742528, 384455936, 402931808,
-423579872, 440827392, 460186432, 484475008, 506007808, 521276416, 536031776, 549570624, 553172480, 547704960,
-542988032, 540130816, 534797504, 532996864, 542406592, 556516096, 567273344, 579921536, 596790016, 605442240,
-600309184, 592648576, 584888128, 564139648, 531910240, 505569728, 483578432, 448984064, 408078272, 379293920,
-349889504, 297504320, 240236304, 200201840, 139145664, 12122545, -134532864, -211733840, -217447744, },
+641661120, 654817664, 701214080, 765066304, 793017920, 750046272, 672282112, 629564352, 638276160, 653404672,
+650713344, 664768064, 724066496, 796885568, 836247872, 841609600, 838631552, 827856576, 793175744, 740571520,
+691951424, 653267776, 616578496, 581786624, 554008384, 530454752, 506390080, 483272416, 461399744, 437886944,
+417039168, 407054464, 404265952, 397127712, 385007840, 376674016, 374368128, 375742528, 384455936, 402931808,
+423579872, 440827392, 460186432, 484475008, 506007808, 521276416, 536031776, 549570624, 553172480, 547704960,
+542988032, 540130816, 534797504, 532996864, 542406592, 556516096, 567273344, 579921536, 596790016, 605442240,
+600309184, 592648576, 584888128, 564139648, 531910240, 505569728, 483578432, 448984064, 408078272, 379293920,
+349889504, 297504320, 240236304, 200201840, 139145664, 12122545, -134532864, -211733840, -217447744, },
{
512525440,
-435640128, 282957824, 84049288, -98370320, -209789824, -249021136, -262860048, -292943072, -332088480, -336941792,
--280376544, -182095344, -83988624, -5475547, 65635152, 143603840, 220762928, 274739392, 289304160, 265117600,
-216662848, 160822896, 104457360, 42877732, -27904402, -101418672, -166072432, -214420880, -242443920, -245357520,
--220635696, -172637824, -110469240, -43466144, 20132660, 74126840, 115731112, 143894832, 157248416, 156342720,
-145316992, 127926136, 104625400, 75957032, 44605920, 11819750, -23396834, -59791312, -93554592, -122836600,
--146753664, -160679552, -159128544, -142168784, -113127824, -73081016, -23768350, 28488518, 77793672, 122219736,
-157799248, 176779248, 176332560, 160420784, 130510096, 85142896, 29638496, -26396870, -80311592, -131147360,
--167546672, -178184240, -167493520, -141860080, -92922152, -21397528, 37648608, 50324668, 34608308, },
+435640128, 282957824, 84049288, -98370320, -209789824, -249021136, -262860048, -292943072, -332088480, -336941792,
+-280376544, -182095344, -83988624, -5475547, 65635152, 143603840, 220762928, 274739392, 289304160, 265117600,
+216662848, 160822896, 104457360, 42877732, -27904402, -101418672, -166072432, -214420880, -242443920, -245357520,
+-220635696, -172637824, -110469240, -43466144, 20132660, 74126840, 115731112, 143894832, 157248416, 156342720,
+145316992, 127926136, 104625400, 75957032, 44605920, 11819750, -23396834, -59791312, -93554592, -122836600,
+-146753664, -160679552, -159128544, -142168784, -113127824, -73081016, -23768350, 28488518, 77793672, 122219736,
+157799248, 176779248, 176332560, 160420784, 130510096, 85142896, 29638496, -26396870, -80311592, -131147360,
+-167546672, -178184240, -167493520, -141860080, -92922152, -21397528, 37648608, 50324668, 34608308, },
},
{
{
512525440,
-435640128, 282957824, 84049288, -98370320, -209789824, -249021136, -262860048, -292943072, -332088480, -336941792,
--280376544, -182095344, -83988624, -5475547, 65635152, 143603840, 220762928, 274739392, 289304160, 265117600,
-216662848, 160822896, 104457360, 42877732, -27904402, -101418672, -166072432, -214420880, -242443920, -245357520,
--220635696, -172637824, -110469240, -43466144, 20132660, 74126840, 115731112, 143894832, 157248416, 156342720,
-145316992, 127926136, 104625400, 75957032, 44605920, 11819750, -23396834, -59791312, -93554592, -122836600,
--146753664, -160679552, -159128544, -142168784, -113127824, -73081016, -23768350, 28488518, 77793672, 122219736,
-157799248, 176779248, 176332560, 160420784, 130510096, 85142896, 29638496, -26396870, -80311592, -131147360,
--167546672, -178184240, -167493520, -141860080, -92922152, -21397528, 37648608, 50324668, 34608308, },
+435640128, 282957824, 84049288, -98370320, -209789824, -249021136, -262860048, -292943072, -332088480, -336941792,
+-280376544, -182095344, -83988624, -5475547, 65635152, 143603840, 220762928, 274739392, 289304160, 265117600,
+216662848, 160822896, 104457360, 42877732, -27904402, -101418672, -166072432, -214420880, -242443920, -245357520,
+-220635696, -172637824, -110469240, -43466144, 20132660, 74126840, 115731112, 143894832, 157248416, 156342720,
+145316992, 127926136, 104625400, 75957032, 44605920, 11819750, -23396834, -59791312, -93554592, -122836600,
+-146753664, -160679552, -159128544, -142168784, -113127824, -73081016, -23768350, 28488518, 77793672, 122219736,
+157799248, 176779248, 176332560, 160420784, 130510096, 85142896, 29638496, -26396870, -80311592, -131147360,
+-167546672, -178184240, -167493520, -141860080, -92922152, -21397528, 37648608, 50324668, 34608308, },
{
644109824,
-641661120, 654817664, 701214080, 765066304, 793017920, 750046272, 672282112, 629564352, 638276160, 653404672,
-650713344, 664768064, 724066496, 796885568, 836247872, 841609600, 838631552, 827856576, 793175744, 740571520,
-691951424, 653267776, 616578496, 581786624, 554008384, 530454752, 506390080, 483272416, 461399744, 437886944,
-417039168, 407054464, 404265952, 397127712, 385007840, 376674016, 374368128, 375742528, 384455936, 402931808,
-423579872, 440827392, 460186432, 484475008, 506007808, 521276416, 536031776, 549570624, 553172480, 547704960,
-542988032, 540130816, 534797504, 532996864, 542406592, 556516096, 567273344, 579921536, 596790016, 605442240,
-600309184, 592648576, 584888128, 564139648, 531910240, 505569728, 483578432, 448984064, 408078272, 379293920,
-349889504, 297504320, 240236304, 200201840, 139145664, 12122545, -134532864, -211733840, -217447744, },
+641661120, 654817664, 701214080, 765066304, 793017920, 750046272, 672282112, 629564352, 638276160, 653404672,
+650713344, 664768064, 724066496, 796885568, 836247872, 841609600, 838631552, 827856576, 793175744, 740571520,
+691951424, 653267776, 616578496, 581786624, 554008384, 530454752, 506390080, 483272416, 461399744, 437886944,
+417039168, 407054464, 404265952, 397127712, 385007840, 376674016, 374368128, 375742528, 384455936, 402931808,
+423579872, 440827392, 460186432, 484475008, 506007808, 521276416, 536031776, 549570624, 553172480, 547704960,
+542988032, 540130816, 534797504, 532996864, 542406592, 556516096, 567273344, 579921536, 596790016, 605442240,
+600309184, 592648576, 584888128, 564139648, 531910240, 505569728, 483578432, 448984064, 408078272, 379293920,
+349889504, 297504320, 240236304, 200201840, 139145664, 12122545, -134532864, -211733840, -217447744, },
},
{
{
587978880,
-583932480, 595629312, 635400704, 685938496, 712024000, 695631680, 652895680, 612192832, 583900288, 562476992,
-551322432, 565862464, 608285504, 656774592, 688751168, 701092224, 698698304, 678709504, 640098816, 597021952,
-566447680, 548555904, 531494688, 509422848, 484884096, 459217888, 431434848, 403011808, 375859552, 348526944,
-319307200, 289268736, 259346768, 229363600, 201952576, 182509808, 173997712, 175682960, 186022016, 202622064,
-221453344, 240029072, 258667088, 276221696, 289274112, 297622976, 304864832, 312131392, 317628416, 322647616,
-330756512, 341403744, 351437856, 361045152, 371032032, 377771360, 377995776, 373800128, 366717184, 353812416,
-335176576, 316256160, 297876384, 274586912, 246141888, 217887984, 188342368, 151595696, 111782968, 77966008,
-47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, },
+583932480, 595629312, 635400704, 685938496, 712024000, 695631680, 652895680, 612192832, 583900288, 562476992,
+551322432, 565862464, 608285504, 656774592, 688751168, 701092224, 698698304, 678709504, 640098816, 597021952,
+566447680, 548555904, 531494688, 509422848, 484884096, 459217888, 431434848, 403011808, 375859552, 348526944,
+319307200, 289268736, 259346768, 229363600, 201952576, 182509808, 173997712, 175682960, 186022016, 202622064,
+221453344, 240029072, 258667088, 276221696, 289274112, 297622976, 304864832, 312131392, 317628416, 322647616,
+330756512, 341403744, 351437856, 361045152, 371032032, 377771360, 377995776, 373800128, 366717184, 353812416,
+335176576, 316256160, 297876384, 274586912, 246141888, 217887984, 188342368, 151595696, 111782968, 77966008,
+47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, },
{
495951136,
-455682080, 361104736, 218659472, 74911208, -16711718, -51278152, -77336256, -135958256, -210931216, -258044864,
--269439936, -279133696, -308019488, -335871264, -335299520, -304617856, -254157376, -185496960, -102038760, -20926692,
-43942884, 97866200, 150721136, 199086768, 234797280, 258988144, 276016064, 283122112, 274994944, 250520080,
-210138256, 155355952, 93582504, 34347392, -20257750, -72878616, -120474368, -155971744, -177703728, -188535104,
--189547648, -182415856, -172789216, -164300208, -154903904, -143742352, -133717368, -123639760, -106822280, -80108656,
--45536852, -3321084, 46471008, 96844536, 139191296, 172961552, 200751600, 219641936, 226778576, 225363920,
-216120064, 192853696, 154202208, 107838576, 57583164, 1152662, -56183540, -103766944, -142620832, -180127168,
--209971280, -220987872, -219427728, -213443232, -185617216, -118235080, -37197100, 11489038, 22216792, },
+455682080, 361104736, 218659472, 74911208, -16711718, -51278152, -77336256, -135958256, -210931216, -258044864,
+-269439936, -279133696, -308019488, -335871264, -335299520, -304617856, -254157376, -185496960, -102038760, -20926692,
+43942884, 97866200, 150721136, 199086768, 234797280, 258988144, 276016064, 283122112, 274994944, 250520080,
+210138256, 155355952, 93582504, 34347392, -20257750, -72878616, -120474368, -155971744, -177703728, -188535104,
+-189547648, -182415856, -172789216, -164300208, -154903904, -143742352, -133717368, -123639760, -106822280, -80108656,
+-45536852, -3321084, 46471008, 96844536, 139191296, 172961552, 200751600, 219641936, 226778576, 225363920,
+216120064, 192853696, 154202208, 107838576, 57583164, 1152662, -56183540, -103766944, -142620832, -180127168,
+-209971280, -220987872, -219427728, -213443232, -185617216, -118235080, -37197100, 11489038, 22216792, },
},
{
{
495951136,
-455682080, 361104736, 218659472, 74911208, -16711718, -51278152, -77336256, -135958256, -210931216, -258044864,
--269439936, -279133696, -308019488, -335871264, -335299520, -304617856, -254157376, -185496960, -102038760, -20926692,
-43942884, 97866200, 150721136, 199086768, 234797280, 258988144, 276016064, 283122112, 274994944, 250520080,
-210138256, 155355952, 93582504, 34347392, -20257750, -72878616, -120474368, -155971744, -177703728, -188535104,
--189547648, -182415856, -172789216, -164300208, -154903904, -143742352, -133717368, -123639760, -106822280, -80108656,
--45536852, -3321084, 46471008, 96844536, 139191296, 172961552, 200751600, 219641936, 226778576, 225363920,
-216120064, 192853696, 154202208, 107838576, 57583164, 1152662, -56183540, -103766944, -142620832, -180127168,
--209971280, -220987872, -219427728, -213443232, -185617216, -118235080, -37197100, 11489038, 22216792, },
+455682080, 361104736, 218659472, 74911208, -16711718, -51278152, -77336256, -135958256, -210931216, -258044864,
+-269439936, -279133696, -308019488, -335871264, -335299520, -304617856, -254157376, -185496960, -102038760, -20926692,
+43942884, 97866200, 150721136, 199086768, 234797280, 258988144, 276016064, 283122112, 274994944, 250520080,
+210138256, 155355952, 93582504, 34347392, -20257750, -72878616, -120474368, -155971744, -177703728, -188535104,
+-189547648, -182415856, -172789216, -164300208, -154903904, -143742352, -133717368, -123639760, -106822280, -80108656,
+-45536852, -3321084, 46471008, 96844536, 139191296, 172961552, 200751600, 219641936, 226778576, 225363920,
+216120064, 192853696, 154202208, 107838576, 57583164, 1152662, -56183540, -103766944, -142620832, -180127168,
+-209971280, -220987872, -219427728, -213443232, -185617216, -118235080, -37197100, 11489038, 22216792, },
{
587978880,
-583932480, 595629312, 635400704, 685938496, 712024000, 695631680, 652895680, 612192832, 583900288, 562476992,
-551322432, 565862464, 608285504, 656774592, 688751168, 701092224, 698698304, 678709504, 640098816, 597021952,
-566447680, 548555904, 531494688, 509422848, 484884096, 459217888, 431434848, 403011808, 375859552, 348526944,
-319307200, 289268736, 259346768, 229363600, 201952576, 182509808, 173997712, 175682960, 186022016, 202622064,
-221453344, 240029072, 258667088, 276221696, 289274112, 297622976, 304864832, 312131392, 317628416, 322647616,
-330756512, 341403744, 351437856, 361045152, 371032032, 377771360, 377995776, 373800128, 366717184, 353812416,
-335176576, 316256160, 297876384, 274586912, 246141888, 217887984, 188342368, 151595696, 111782968, 77966008,
-47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, },
+583932480, 595629312, 635400704, 685938496, 712024000, 695631680, 652895680, 612192832, 583900288, 562476992,
+551322432, 565862464, 608285504, 656774592, 688751168, 701092224, 698698304, 678709504, 640098816, 597021952,
+566447680, 548555904, 531494688, 509422848, 484884096, 459217888, 431434848, 403011808, 375859552, 348526944,
+319307200, 289268736, 259346768, 229363600, 201952576, 182509808, 173997712, 175682960, 186022016, 202622064,
+221453344, 240029072, 258667088, 276221696, 289274112, 297622976, 304864832, 312131392, 317628416, 322647616,
+330756512, 341403744, 351437856, 361045152, 371032032, 377771360, 377995776, 373800128, 366717184, 353812416,
+335176576, 316256160, 297876384, 274586912, 246141888, 217887984, 188342368, 151595696, 111782968, 77966008,
+47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, },
},
};
-const Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][80] ={
+const Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80] ={
{
{
12014097,
-35897336, 53805204, 50312856, 18828062, -13066364, -6854768, 22745610, 12735115, -41816876, -39875552,
-98654864, 297323936, 401317440, 372772544, 315583456, 308144576, 310529888, 259613600, 163684960, 59336584,
--51169704, -165799696, -239111024, -227276784, -147407568, -53171696, 26007638, 93542240, 155563712, 207501152,
-237285664, 227532864, 167055968, 67771360, -41654204, -141005920, -226938560, -301322560, -365197856, -419542080,
--460432832, -479936288, -480030240, -475801312, -478633312, -488226656, -504062208, -528410912, -555006400, -571804032,
--577254336, -578772608, -577470144, -570372736, -562345408, -559677184, -559475840, -559533312, -566981312, -584370560,
--602642944, -618692736, -640225536, -664323008, -674664192, -666645504, -649141376, -619779904, -569934080, -512024000,
--465699552, -423834368, -373262176, -334423328, -327638880, -316269056, -247134560, -134972576, -38042136, },
+35897336, 53805204, 50312856, 18828062, -13066364, -6854768, 22745610, 12735115, -41816876, -39875552,
+98654864, 297323936, 401317440, 372772544, 315583456, 308144576, 310529888, 259613600, 163684960, 59336584,
+-51169704, -165799696, -239111024, -227276784, -147407568, -53171696, 26007638, 93542240, 155563712, 207501152,
+237285664, 227532864, 167055968, 67771360, -41654204, -141005920, -226938560, -301322560, -365197856, -419542080,
+-460432832, -479936288, -480030240, -475801312, -478633312, -488226656, -504062208, -528410912, -555006400, -571804032,
+-577254336, -578772608, -577470144, -570372736, -562345408, -559677184, -559475840, -559533312, -566981312, -584370560,
+-602642944, -618692736, -640225536, -664323008, -674664192, -666645504, -649141376, -619779904, -569934080, -512024000,
+-465699552, -423834368, -373262176, -334423328, -327638880, -316269056, -247134560, -134972576, -38042136, },
{
-43315284,
--167275552, -325720672, -424729856, -429919232, -407980544, -395947680, -346303200, -239683328, -149724176, -148736336,
--226306656, -333395232, -430414784, -464289728, -380538944, -199746048, -17964238, 102305048, 183813328, 256357472,
-298020256, 290804704, 271931552, 283791040, 317931200, 348516736, 381127872, 427289120, 462315104, 450696160,
-394719296, 322191808, 238335248, 123655328, -22405234, -163422432, -259725264, -305492960, -324537920, -338921248,
--352351072, -360596320, -363949632, -362820032, -350412416, -320028736, -275247808, -224321840, -168880800, -106778792,
--41586020, 19834696, 75412112, 125746976, 168545792, 202392288, 230801344, 255875904, 273531968, 280169312,
-277151008, 264613472, 239632336, 204636400, 168342320, 135009072, 102396856, 71785008, 48446156, 31304942,
-14647986, -258772, -9262634, -19164144, -40214316, -64947420, -72200008, -53375168, -18999324, },
+-167275552, -325720672, -424729856, -429919232, -407980544, -395947680, -346303200, -239683328, -149724176, -148736336,
+-226306656, -333395232, -430414784, -464289728, -380538944, -199746048, -17964238, 102305048, 183813328, 256357472,
+298020256, 290804704, 271931552, 283791040, 317931200, 348516736, 381127872, 427289120, 462315104, 450696160,
+394719296, 322191808, 238335248, 123655328, -22405234, -163422432, -259725264, -305492960, -324537920, -338921248,
+-352351072, -360596320, -363949632, -362820032, -350412416, -320028736, -275247808, -224321840, -168880800, -106778792,
+-41586020, 19834696, 75412112, 125746976, 168545792, 202392288, 230801344, 255875904, 273531968, 280169312,
+277151008, 264613472, 239632336, 204636400, 168342320, 135009072, 102396856, 71785008, 48446156, 31304942,
+14647986, -258772, -9262634, -19164144, -40214316, -64947420, -72200008, -53375168, -18999324, },
},
{
{
-43315284,
--167275552, -325720672, -424729856, -429919232, -407980544, -395947680, -346303200, -239683328, -149724176, -148736336,
--226306656, -333395232, -430414784, -464289728, -380538944, -199746048, -17964238, 102305048, 183813328, 256357472,
-298020256, 290804704, 271931552, 283791040, 317931200, 348516736, 381127872, 427289120, 462315104, 450696160,
-394719296, 322191808, 238335248, 123655328, -22405234, -163422432, -259725264, -305492960, -324537920, -338921248,
--352351072, -360596320, -363949632, -362820032, -350412416, -320028736, -275247808, -224321840, -168880800, -106778792,
--41586020, 19834696, 75412112, 125746976, 168545792, 202392288, 230801344, 255875904, 273531968, 280169312,
-277151008, 264613472, 239632336, 204636400, 168342320, 135009072, 102396856, 71785008, 48446156, 31304942,
-14647986, -258772, -9262634, -19164144, -40214316, -64947420, -72200008, -53375168, -18999324, },
+-167275552, -325720672, -424729856, -429919232, -407980544, -395947680, -346303200, -239683328, -149724176, -148736336,
+-226306656, -333395232, -430414784, -464289728, -380538944, -199746048, -17964238, 102305048, 183813328, 256357472,
+298020256, 290804704, 271931552, 283791040, 317931200, 348516736, 381127872, 427289120, 462315104, 450696160,
+394719296, 322191808, 238335248, 123655328, -22405234, -163422432, -259725264, -305492960, -324537920, -338921248,
+-352351072, -360596320, -363949632, -362820032, -350412416, -320028736, -275247808, -224321840, -168880800, -106778792,
+-41586020, 19834696, 75412112, 125746976, 168545792, 202392288, 230801344, 255875904, 273531968, 280169312,
+277151008, 264613472, 239632336, 204636400, 168342320, 135009072, 102396856, 71785008, 48446156, 31304942,
+14647986, -258772, -9262634, -19164144, -40214316, -64947420, -72200008, -53375168, -18999324, },
{
12014097,
-35897336, 53805204, 50312856, 18828062, -13066364, -6854768, 22745610, 12735115, -41816876, -39875552,
-98654864, 297323936, 401317440, 372772544, 315583456, 308144576, 310529888, 259613600, 163684960, 59336584,
--51169704, -165799696, -239111024, -227276784, -147407568, -53171696, 26007638, 93542240, 155563712, 207501152,
-237285664, 227532864, 167055968, 67771360, -41654204, -141005920, -226938560, -301322560, -365197856, -419542080,
--460432832, -479936288, -480030240, -475801312, -478633312, -488226656, -504062208, -528410912, -555006400, -571804032,
--577254336, -578772608, -577470144, -570372736, -562345408, -559677184, -559475840, -559533312, -566981312, -584370560,
--602642944, -618692736, -640225536, -664323008, -674664192, -666645504, -649141376, -619779904, -569934080, -512024000,
--465699552, -423834368, -373262176, -334423328, -327638880, -316269056, -247134560, -134972576, -38042136, },
+35897336, 53805204, 50312856, 18828062, -13066364, -6854768, 22745610, 12735115, -41816876, -39875552,
+98654864, 297323936, 401317440, 372772544, 315583456, 308144576, 310529888, 259613600, 163684960, 59336584,
+-51169704, -165799696, -239111024, -227276784, -147407568, -53171696, 26007638, 93542240, 155563712, 207501152,
+237285664, 227532864, 167055968, 67771360, -41654204, -141005920, -226938560, -301322560, -365197856, -419542080,
+-460432832, -479936288, -480030240, -475801312, -478633312, -488226656, -504062208, -528410912, -555006400, -571804032,
+-577254336, -578772608, -577470144, -570372736, -562345408, -559677184, -559475840, -559533312, -566981312, -584370560,
+-602642944, -618692736, -640225536, -664323008, -674664192, -666645504, -649141376, -619779904, -569934080, -512024000,
+-465699552, -423834368, -373262176, -334423328, -327638880, -316269056, -247134560, -134972576, -38042136, },
},
{
{
11529840,
-13347148, -36569500, -113121920, -129439576, -50867444, 14232448, -53408992, -177612464, -148705184, 85114976,
-321205568, 356627232, 230623104, 133642736, 154121136, 209440320, 188600064, 75365400, -67306968, -171972096,
--209020496, -188093792, -138411232, -83479128, -30877056, 15938087, 45047228, 40231496, -7201587, -92407296,
--197360720, -297320736, -374595776, -428572768, -467873344, -492833536, -492368064, -460149376, -407823264, -358125632,
--328469440, -323982272, -340943616, -370154784, -399694496, -422151808, -439693504, -457322752, -472918304, -479750528,
--476592128, -468317856, -458178528, -446379712, -434486400, -424508128, -415263744, -404740000, -393061440, -379423840,
--361430624, -340799200, -322628288, -306349824, -286351904, -263314784, -243854288, -227870560, -209237920, -189143376,
--173876912, -160802496, -144108496, -131797512, -135355888, -143668800, -130320584, -87279640, -29750164, },
+13347148, -36569500, -113121920, -129439576, -50867444, 14232448, -53408992, -177612464, -148705184, 85114976,
+321205568, 356627232, 230623104, 133642736, 154121136, 209440320, 188600064, 75365400, -67306968, -171972096,
+-209020496, -188093792, -138411232, -83479128, -30877056, 15938087, 45047228, 40231496, -7201587, -92407296,
+-197360720, -297320736, -374595776, -428572768, -467873344, -492833536, -492368064, -460149376, -407823264, -358125632,
+-328469440, -323982272, -340943616, -370154784, -399694496, -422151808, -439693504, -457322752, -472918304, -479750528,
+-476592128, -468317856, -458178528, -446379712, -434486400, -424508128, -415263744, -404740000, -393061440, -379423840,
+-361430624, -340799200, -322628288, -306349824, -286351904, -263314784, -243854288, -227870560, -209237920, -189143376,
+-173876912, -160802496, -144108496, -131797512, -135355888, -143668800, -130320584, -87279640, -29750164, },
{
11529840,
-13347148, -36569500, -113121920, -129439576, -50867444, 14232448, -53408992, -177612464, -148705184, 85114976,
-321205568, 356627232, 230623104, 133642736, 154121136, 209440320, 188600064, 75365400, -67306968, -171972096,
--209020496, -188093792, -138411232, -83479128, -30877056, 15938087, 45047228, 40231496, -7201587, -92407296,
--197360720, -297320736, -374595776, -428572768, -467873344, -492833536, -492368064, -460149376, -407823264, -358125632,
--328469440, -323982272, -340943616, -370154784, -399694496, -422151808, -439693504, -457322752, -472918304, -479750528,
--476592128, -468317856, -458178528, -446379712, -434486400, -424508128, -415263744, -404740000, -393061440, -379423840,
--361430624, -340799200, -322628288, -306349824, -286351904, -263314784, -243854288, -227870560, -209237920, -189143376,
--173876912, -160802496, -144108496, -131797512, -135355888, -143668800, -130320584, -87279640, -29750164, },
+13347148, -36569500, -113121920, -129439576, -50867444, 14232448, -53408992, -177612464, -148705184, 85114976,
+321205568, 356627232, 230623104, 133642736, 154121136, 209440320, 188600064, 75365400, -67306968, -171972096,
+-209020496, -188093792, -138411232, -83479128, -30877056, 15938087, 45047228, 40231496, -7201587, -92407296,
+-197360720, -297320736, -374595776, -428572768, -467873344, -492833536, -492368064, -460149376, -407823264, -358125632,
+-328469440, -323982272, -340943616, -370154784, -399694496, -422151808, -439693504, -457322752, -472918304, -479750528,
+-476592128, -468317856, -458178528, -446379712, -434486400, -424508128, -415263744, -404740000, -393061440, -379423840,
+-361430624, -340799200, -322628288, -306349824, -286351904, -263314784, -243854288, -227870560, -209237920, -189143376,
+-173876912, -160802496, -144108496, -131797512, -135355888, -143668800, -130320584, -87279640, -29750164, },
},
{
{
6737730,
-36310728, 82552496, 112160384, 114129096, 97516160, 47489452, -47207596, -139446848, -172956720, -172927728,
--209062368, -281033120, -323487264, -317248832, -310710272, -329580224, -345570912, -342311584, -339921440, -342769536,
--325651392, -283917728, -245152432, -223469840, -208063248, -199347152, -211438016, -235558560, -241466288, -219431488,
--187860800, -158804272, -126097016, -87488480, -51480552, -21284248, 6805376, 29567628, 38165616, 31655520,
-16961900, -736587, -18033494, -29193430, -30501248, -24554864, -15843061, -7511361, -4630512, -13749264,
--37041944, -71893456, -115411136, -163850848, -210135568, -248258768, -278091072, -301507232, -317690144, -326059968,
--328749696, -326538848, -317392704, -301186208, -280315328, -255096896, -224872144, -192732896, -162321840, -132668320,
--103223632, -78363824, -58980100, -39456252, -23711440, -29182156, -56074556, -68051072, -31855772, },
+36310728, 82552496, 112160384, 114129096, 97516160, 47489452, -47207596, -139446848, -172956720, -172927728,
+-209062368, -281033120, -323487264, -317248832, -310710272, -329580224, -345570912, -342311584, -339921440, -342769536,
+-325651392, -283917728, -245152432, -223469840, -208063248, -199347152, -211438016, -235558560, -241466288, -219431488,
+-187860800, -158804272, -126097016, -87488480, -51480552, -21284248, 6805376, 29567628, 38165616, 31655520,
+16961900, -736587, -18033494, -29193430, -30501248, -24554864, -15843061, -7511361, -4630512, -13749264,
+-37041944, -71893456, -115411136, -163850848, -210135568, -248258768, -278091072, -301507232, -317690144, -326059968,
+-328749696, -326538848, -317392704, -301186208, -280315328, -255096896, -224872144, -192732896, -162321840, -132668320,
+-103223632, -78363824, -58980100, -39456252, -23711440, -29182156, -56074556, -68051072, -31855772, },
{
-91367912,
--257344784, -368731008, -399863072, -368732064, -318823488, -264597360, -187626176, -89714888, -9023726, 30760556,
-50806240, 78116864, 109169480, 134775008, 170659456, 232808160, 299963744, 327622784, 290989408, 198465072,
-75594112, -48091284, -147514416, -213435184, -251069824, -262746768, -243405456, -197352144, -143928656, -98723584,
--61254824, -26169236, 6638946, 38232188, 74120400, 115100832, 152906208, 177822384, 183768768, 166826736,
-127559992, 74813496, 20892868, -25723632, -59548648, -75917304, -75299904, -64973192, -52216064, -40167608,
--31237298, -27542552, -26933204, -25319906, -22686018, -20841328, -18178450, -13306346, -9438728, -8532489,
--6724308, -1197222, 6068789, 16056735, 34274376, 60207924, 85978264, 107714024, 125535992, 132588328,
-120357328, 93827320, 63501628, 26500486, -22081500, -64213520, -72819560, -48505752, -15430207, },
+-257344784, -368731008, -399863072, -368732064, -318823488, -264597360, -187626176, -89714888, -9023726, 30760556,
+50806240, 78116864, 109169480, 134775008, 170659456, 232808160, 299963744, 327622784, 290989408, 198465072,
+75594112, -48091284, -147514416, -213435184, -251069824, -262746768, -243405456, -197352144, -143928656, -98723584,
+-61254824, -26169236, 6638946, 38232188, 74120400, 115100832, 152906208, 177822384, 183768768, 166826736,
+127559992, 74813496, 20892868, -25723632, -59548648, -75917304, -75299904, -64973192, -52216064, -40167608,
+-31237298, -27542552, -26933204, -25319906, -22686018, -20841328, -18178450, -13306346, -9438728, -8532489,
+-6724308, -1197222, 6068789, 16056735, 34274376, 60207924, 85978264, 107714024, 125535992, 132588328,
+120357328, 93827320, 63501628, 26500486, -22081500, -64213520, -72819560, -48505752, -15430207, },
},
{
{
-91367912,
--257344784, -368731008, -399863072, -368732064, -318823488, -264597360, -187626176, -89714888, -9023726, 30760556,
-50806240, 78116864, 109169480, 134775008, 170659456, 232808160, 299963744, 327622784, 290989408, 198465072,
-75594112, -48091284, -147514416, -213435184, -251069824, -262746768, -243405456, -197352144, -143928656, -98723584,
--61254824, -26169236, 6638946, 38232188, 74120400, 115100832, 152906208, 177822384, 183768768, 166826736,
-127559992, 74813496, 20892868, -25723632, -59548648, -75917304, -75299904, -64973192, -52216064, -40167608,
--31237298, -27542552, -26933204, -25319906, -22686018, -20841328, -18178450, -13306346, -9438728, -8532489,
--6724308, -1197222, 6068789, 16056735, 34274376, 60207924, 85978264, 107714024, 125535992, 132588328,
-120357328, 93827320, 63501628, 26500486, -22081500, -64213520, -72819560, -48505752, -15430207, },
+-257344784, -368731008, -399863072, -368732064, -318823488, -264597360, -187626176, -89714888, -9023726, 30760556,
+50806240, 78116864, 109169480, 134775008, 170659456, 232808160, 299963744, 327622784, 290989408, 198465072,
+75594112, -48091284, -147514416, -213435184, -251069824, -262746768, -243405456, -197352144, -143928656, -98723584,
+-61254824, -26169236, 6638946, 38232188, 74120400, 115100832, 152906208, 177822384, 183768768, 166826736,
+127559992, 74813496, 20892868, -25723632, -59548648, -75917304, -75299904, -64973192, -52216064, -40167608,
+-31237298, -27542552, -26933204, -25319906, -22686018, -20841328, -18178450, -13306346, -9438728, -8532489,
+-6724308, -1197222, 6068789, 16056735, 34274376, 60207924, 85978264, 107714024, 125535992, 132588328,
+120357328, 93827320, 63501628, 26500486, -22081500, -64213520, -72819560, -48505752, -15430207, },
{
6737730,
-36310728, 82552496, 112160384, 114129096, 97516160, 47489452, -47207596, -139446848, -172956720, -172927728,
--209062368, -281033120, -323487264, -317248832, -310710272, -329580224, -345570912, -342311584, -339921440, -342769536,
--325651392, -283917728, -245152432, -223469840, -208063248, -199347152, -211438016, -235558560, -241466288, -219431488,
--187860800, -158804272, -126097016, -87488480, -51480552, -21284248, 6805376, 29567628, 38165616, 31655520,
-16961900, -736587, -18033494, -29193430, -30501248, -24554864, -15843061, -7511361, -4630512, -13749264,
--37041944, -71893456, -115411136, -163850848, -210135568, -248258768, -278091072, -301507232, -317690144, -326059968,
--328749696, -326538848, -317392704, -301186208, -280315328, -255096896, -224872144, -192732896, -162321840, -132668320,
--103223632, -78363824, -58980100, -39456252, -23711440, -29182156, -56074556, -68051072, -31855772, },
+36310728, 82552496, 112160384, 114129096, 97516160, 47489452, -47207596, -139446848, -172956720, -172927728,
+-209062368, -281033120, -323487264, -317248832, -310710272, -329580224, -345570912, -342311584, -339921440, -342769536,
+-325651392, -283917728, -245152432, -223469840, -208063248, -199347152, -211438016, -235558560, -241466288, -219431488,
+-187860800, -158804272, -126097016, -87488480, -51480552, -21284248, 6805376, 29567628, 38165616, 31655520,
+16961900, -736587, -18033494, -29193430, -30501248, -24554864, -15843061, -7511361, -4630512, -13749264,
+-37041944, -71893456, -115411136, -163850848, -210135568, -248258768, -278091072, -301507232, -317690144, -326059968,
+-328749696, -326538848, -317392704, -301186208, -280315328, -255096896, -224872144, -192732896, -162321840, -132668320,
+-103223632, -78363824, -58980100, -39456252, -23711440, -29182156, -56074556, -68051072, -31855772, },
},
{
{
8164196,
-44547400, 107173392, 151858768, 141665744, 88392040, 21066814, -54681376, -136974560, -194774624, -198866656,
--174685984, -177014928, -211105152, -226307200, -197914240, -166187312, -171183968, -193077040, -191026192, -166961488,
--151375584, -148994032, -138841264, -116053240, -97335232, -88876296, -78059416, -57178900, -33640332, -15949898,
--5432597, -1035624, 192737, 5810017, 21478594, 43743168, 65269544, 82739864, 94780800, 98439576,
-93017184, 81910928, 66963908, 46561740, 21537114, -3291019, -25325274, -46266460, -67437432, -88755496,
--112122272, -140211360, -172351136, -206041936, -240635744, -275572608, -308160160, -336930528, -363343488, -387111296,
--404877440, -416117376, -424204256, -429434464, -428134144, -420355424, -410097440, -396474336, -374188288, -344111168,
--312845408, -280789920, -243339424, -206263664, -185131344, -182077088, -173855984, -131779264, -49716932, },
+44547400, 107173392, 151858768, 141665744, 88392040, 21066814, -54681376, -136974560, -194774624, -198866656,
+-174685984, -177014928, -211105152, -226307200, -197914240, -166187312, -171183968, -193077040, -191026192, -166961488,
+-151375584, -148994032, -138841264, -116053240, -97335232, -88876296, -78059416, -57178900, -33640332, -15949898,
+-5432597, -1035624, 192737, 5810017, 21478594, 43743168, 65269544, 82739864, 94780800, 98439576,
+93017184, 81910928, 66963908, 46561740, 21537114, -3291019, -25325274, -46266460, -67437432, -88755496,
+-112122272, -140211360, -172351136, -206041936, -240635744, -275572608, -308160160, -336930528, -363343488, -387111296,
+-404877440, -416117376, -424204256, -429434464, -428134144, -420355424, -410097440, -396474336, -374188288, -344111168,
+-312845408, -280789920, -243339424, -206263664, -185131344, -182077088, -173855984, -131779264, -49716932, },
{
-121575488,
--327745728, -439912576, -444363744, -368528608, -245493344, -86965032, 96915936, 264271488, 355673216, 345737888,
-263669648, 159173104, 61461520, -25578140, -102469864, -160386960, -187825360, -184911760, -164087072, -133838160,
--88987968, -24737402, 46355584, 102826888, 135619504, 149487952, 146968416, 124120800, 81604912, 28876676,
--23648090, -69442640, -103766944, -123045984, -125989104, -112232328, -82238424, -40732932, 3103114, 40929964,
-68689408, 85459112, 92190400, 90564752, 80275624, 59148680, 27699318, -9310952, -46522548, -79008072,
--100086160, -104067592, -91500520, -67148056, -34903052, 443992, 30932354, 51430084, 63724968, 69987568,
-68585256, 60078540, 48424144, 32638530, 7427609, -25753160, -59433756, -90916944, -118414936, -130138584,
--114544096, -76610408, -26872536, 33355790, 92639224, 114539264, 78836272, 23021024, -652298, },
+-327745728, -439912576, -444363744, -368528608, -245493344, -86965032, 96915936, 264271488, 355673216, 345737888,
+263669648, 159173104, 61461520, -25578140, -102469864, -160386960, -187825360, -184911760, -164087072, -133838160,
+-88987968, -24737402, 46355584, 102826888, 135619504, 149487952, 146968416, 124120800, 81604912, 28876676,
+-23648090, -69442640, -103766944, -123045984, -125989104, -112232328, -82238424, -40732932, 3103114, 40929964,
+68689408, 85459112, 92190400, 90564752, 80275624, 59148680, 27699318, -9310952, -46522548, -79008072,
+-100086160, -104067592, -91500520, -67148056, -34903052, 443992, 30932354, 51430084, 63724968, 69987568,
+68585256, 60078540, 48424144, 32638530, 7427609, -25753160, -59433756, -90916944, -118414936, -130138584,
+-114544096, -76610408, -26872536, 33355790, 92639224, 114539264, 78836272, 23021024, -652298, },
},
{
{
-121575488,
--327745728, -439912576, -444363744, -368528608, -245493344, -86965032, 96915936, 264271488, 355673216, 345737888,
-263669648, 159173104, 61461520, -25578140, -102469864, -160386960, -187825360, -184911760, -164087072, -133838160,
--88987968, -24737402, 46355584, 102826888, 135619504, 149487952, 146968416, 124120800, 81604912, 28876676,
--23648090, -69442640, -103766944, -123045984, -125989104, -112232328, -82238424, -40732932, 3103114, 40929964,
-68689408, 85459112, 92190400, 90564752, 80275624, 59148680, 27699318, -9310952, -46522548, -79008072,
--100086160, -104067592, -91500520, -67148056, -34903052, 443992, 30932354, 51430084, 63724968, 69987568,
-68585256, 60078540, 48424144, 32638530, 7427609, -25753160, -59433756, -90916944, -118414936, -130138584,
--114544096, -76610408, -26872536, 33355790, 92639224, 114539264, 78836272, 23021024, -652298, },
+-327745728, -439912576, -444363744, -368528608, -245493344, -86965032, 96915936, 264271488, 355673216, 345737888,
+263669648, 159173104, 61461520, -25578140, -102469864, -160386960, -187825360, -184911760, -164087072, -133838160,
+-88987968, -24737402, 46355584, 102826888, 135619504, 149487952, 146968416, 124120800, 81604912, 28876676,
+-23648090, -69442640, -103766944, -123045984, -125989104, -112232328, -82238424, -40732932, 3103114, 40929964,
+68689408, 85459112, 92190400, 90564752, 80275624, 59148680, 27699318, -9310952, -46522548, -79008072,
+-100086160, -104067592, -91500520, -67148056, -34903052, 443992, 30932354, 51430084, 63724968, 69987568,
+68585256, 60078540, 48424144, 32638530, 7427609, -25753160, -59433756, -90916944, -118414936, -130138584,
+-114544096, -76610408, -26872536, 33355790, 92639224, 114539264, 78836272, 23021024, -652298, },
{
8164196,
-44547400, 107173392, 151858768, 141665744, 88392040, 21066814, -54681376, -136974560, -194774624, -198866656,
--174685984, -177014928, -211105152, -226307200, -197914240, -166187312, -171183968, -193077040, -191026192, -166961488,
--151375584, -148994032, -138841264, -116053240, -97335232, -88876296, -78059416, -57178900, -33640332, -15949898,
--5432597, -1035624, 192737, 5810017, 21478594, 43743168, 65269544, 82739864, 94780800, 98439576,
-93017184, 81910928, 66963908, 46561740, 21537114, -3291019, -25325274, -46266460, -67437432, -88755496,
--112122272, -140211360, -172351136, -206041936, -240635744, -275572608, -308160160, -336930528, -363343488, -387111296,
--404877440, -416117376, -424204256, -429434464, -428134144, -420355424, -410097440, -396474336, -374188288, -344111168,
--312845408, -280789920, -243339424, -206263664, -185131344, -182077088, -173855984, -131779264, -49716932, },
+44547400, 107173392, 151858768, 141665744, 88392040, 21066814, -54681376, -136974560, -194774624, -198866656,
+-174685984, -177014928, -211105152, -226307200, -197914240, -166187312, -171183968, -193077040, -191026192, -166961488,
+-151375584, -148994032, -138841264, -116053240, -97335232, -88876296, -78059416, -57178900, -33640332, -15949898,
+-5432597, -1035624, 192737, 5810017, 21478594, 43743168, 65269544, 82739864, 94780800, 98439576,
+93017184, 81910928, 66963908, 46561740, 21537114, -3291019, -25325274, -46266460, -67437432, -88755496,
+-112122272, -140211360, -172351136, -206041936, -240635744, -275572608, -308160160, -336930528, -363343488, -387111296,
+-404877440, -416117376, -424204256, -429434464, -428134144, -420355424, -410097440, -396474336, -374188288, -344111168,
+-312845408, -280789920, -243339424, -206263664, -185131344, -182077088, -173855984, -131779264, -49716932, },
},
{
{
23554674,
-63680944, 100486128, 143425072, 160396624, 105198784, -958851, -80830208, -108001784, -133792528, -184129536,
--203911632, -148618224, -66377108, -29700236, -34437048, -29727616, -10700374, -13250511, -38631084, -49996104,
--38671884, -37946572, -66779764, -102261560, -114666496, -99396280, -69727720, -40418328, -20343112, -5313412,
-20069846, 61832496, 103414760, 122720104, 115239344, 92404072, 65606700, 39885752, 16847546, -2928094,
--18153216, -27101244, -32216550, -40784472, -57119844, -79209936, -106136696, -141351136, -185442736, -233775072,
--283348672, -333599776, -380434784, -418755008, -449614368, -476425696, -498366528, -515928640, -535856224, -562014720,
--590205248, -618661568, -651252352, -684484672, -706655808, -714453824, -713151936, -699310336, -664759488, -616559168,
--568175872, -515411648, -449946688, -387446304, -345378720, -302782304, -225644704, -124012888, -36187248, },
+63680944, 100486128, 143425072, 160396624, 105198784, -958851, -80830208, -108001784, -133792528, -184129536,
+-203911632, -148618224, -66377108, -29700236, -34437048, -29727616, -10700374, -13250511, -38631084, -49996104,
+-38671884, -37946572, -66779764, -102261560, -114666496, -99396280, -69727720, -40418328, -20343112, -5313412,
+20069846, 61832496, 103414760, 122720104, 115239344, 92404072, 65606700, 39885752, 16847546, -2928094,
+-18153216, -27101244, -32216550, -40784472, -57119844, -79209936, -106136696, -141351136, -185442736, -233775072,
+-283348672, -333599776, -380434784, -418755008, -449614368, -476425696, -498366528, -515928640, -535856224, -562014720,
+-590205248, -618661568, -651252352, -684484672, -706655808, -714453824, -713151936, -699310336, -664759488, -616559168,
+-568175872, -515411648, -449946688, -387446304, -345378720, -302782304, -225644704, -124012888, -36187248, },
{
-134445904,
--354867904, -462737632, -454919712, -356354496, -184022704, 40757628, 262201840, 404614912, 426365152, 345501120,
-208006336, 46817828, -119911728, -266756656, -356998752, -362689600, -282963712, -143316624, 19385334, 171397120,
-285301248, 336403328, 307668384, 204379248, 58105540, -90248536, -209021568, -277893504, -283894112, -226059696,
--120651000, 5003100, 122632592, 206948160, 238739520, 212521424, 140400336, 45597520, -47734804, -120938760,
--163346192, -171559248, -146704816, -94255208, -26338886, 40620192, 93026848, 122830160, 125343792, 100967704,
-58784680, 11866995, -31174484, -65726960, -86230592, -88996552, -77031312, -55747064, -27654220, 3765613,
-31211528, 50083076, 61416960, 64772940, 56640420, 38346004, 15450071, -11638825, -44530756, -75189312,
--91152624, -89874872, -73525008, -37754372, 13605383, 52383568, 52429740, 26051124, 5407364, },
+-354867904, -462737632, -454919712, -356354496, -184022704, 40757628, 262201840, 404614912, 426365152, 345501120,
+208006336, 46817828, -119911728, -266756656, -356998752, -362689600, -282963712, -143316624, 19385334, 171397120,
+285301248, 336403328, 307668384, 204379248, 58105540, -90248536, -209021568, -277893504, -283894112, -226059696,
+-120651000, 5003100, 122632592, 206948160, 238739520, 212521424, 140400336, 45597520, -47734804, -120938760,
+-163346192, -171559248, -146704816, -94255208, -26338886, 40620192, 93026848, 122830160, 125343792, 100967704,
+58784680, 11866995, -31174484, -65726960, -86230592, -88996552, -77031312, -55747064, -27654220, 3765613,
+31211528, 50083076, 61416960, 64772940, 56640420, 38346004, 15450071, -11638825, -44530756, -75189312,
+-91152624, -89874872, -73525008, -37754372, 13605383, 52383568, 52429740, 26051124, 5407364, },
},
{
{
-134445904,
--354867904, -462737632, -454919712, -356354496, -184022704, 40757628, 262201840, 404614912, 426365152, 345501120,
-208006336, 46817828, -119911728, -266756656, -356998752, -362689600, -282963712, -143316624, 19385334, 171397120,
-285301248, 336403328, 307668384, 204379248, 58105540, -90248536, -209021568, -277893504, -283894112, -226059696,
--120651000, 5003100, 122632592, 206948160, 238739520, 212521424, 140400336, 45597520, -47734804, -120938760,
--163346192, -171559248, -146704816, -94255208, -26338886, 40620192, 93026848, 122830160, 125343792, 100967704,
-58784680, 11866995, -31174484, -65726960, -86230592, -88996552, -77031312, -55747064, -27654220, 3765613,
-31211528, 50083076, 61416960, 64772940, 56640420, 38346004, 15450071, -11638825, -44530756, -75189312,
--91152624, -89874872, -73525008, -37754372, 13605383, 52383568, 52429740, 26051124, 5407364, },
+-354867904, -462737632, -454919712, -356354496, -184022704, 40757628, 262201840, 404614912, 426365152, 345501120,
+208006336, 46817828, -119911728, -266756656, -356998752, -362689600, -282963712, -143316624, 19385334, 171397120,
+285301248, 336403328, 307668384, 204379248, 58105540, -90248536, -209021568, -277893504, -283894112, -226059696,
+-120651000, 5003100, 122632592, 206948160, 238739520, 212521424, 140400336, 45597520, -47734804, -120938760,
+-163346192, -171559248, -146704816, -94255208, -26338886, 40620192, 93026848, 122830160, 125343792, 100967704,
+58784680, 11866995, -31174484, -65726960, -86230592, -88996552, -77031312, -55747064, -27654220, 3765613,
+31211528, 50083076, 61416960, 64772940, 56640420, 38346004, 15450071, -11638825, -44530756, -75189312,
+-91152624, -89874872, -73525008, -37754372, 13605383, 52383568, 52429740, 26051124, 5407364, },
{
23554674,
-63680944, 100486128, 143425072, 160396624, 105198784, -958851, -80830208, -108001784, -133792528, -184129536,
--203911632, -148618224, -66377108, -29700236, -34437048, -29727616, -10700374, -13250511, -38631084, -49996104,
--38671884, -37946572, -66779764, -102261560, -114666496, -99396280, -69727720, -40418328, -20343112, -5313412,
-20069846, 61832496, 103414760, 122720104, 115239344, 92404072, 65606700, 39885752, 16847546, -2928094,
--18153216, -27101244, -32216550, -40784472, -57119844, -79209936, -106136696, -141351136, -185442736, -233775072,
--283348672, -333599776, -380434784, -418755008, -449614368, -476425696, -498366528, -515928640, -535856224, -562014720,
--590205248, -618661568, -651252352, -684484672, -706655808, -714453824, -713151936, -699310336, -664759488, -616559168,
--568175872, -515411648, -449946688, -387446304, -345378720, -302782304, -225644704, -124012888, -36187248, },
+63680944, 100486128, 143425072, 160396624, 105198784, -958851, -80830208, -108001784, -133792528, -184129536,
+-203911632, -148618224, -66377108, -29700236, -34437048, -29727616, -10700374, -13250511, -38631084, -49996104,
+-38671884, -37946572, -66779764, -102261560, -114666496, -99396280, -69727720, -40418328, -20343112, -5313412,
+20069846, 61832496, 103414760, 122720104, 115239344, 92404072, 65606700, 39885752, 16847546, -2928094,
+-18153216, -27101244, -32216550, -40784472, -57119844, -79209936, -106136696, -141351136, -185442736, -233775072,
+-283348672, -333599776, -380434784, -418755008, -449614368, -476425696, -498366528, -515928640, -535856224, -562014720,
+-590205248, -618661568, -651252352, -684484672, -706655808, -714453824, -713151936, -699310336, -664759488, -616559168,
+-568175872, -515411648, -449946688, -387446304, -345378720, -302782304, -225644704, -124012888, -36187248, },
},
{
{
-4428648,
--12817793, -22537304, -33988760, -39535172, -31816044, -6058052, 52388936, 153264304, 261093216, 307425184,
-263993392, 169773072, 73569032, -6526203, -56706452, -55943024, -11604465, 39944268, 82797304, 127639448,
-164261568, 159431328, 109619912, 49804976, 6515466, -16895864, -14101451, 20765094, 67684392, 96716224,
-103307920, 98653248, 79120816, 33847028, -31095026, -99142344, -160865312, -211477216, -247033632, -271942848,
--294957952, -315941568, -330808032, -343203328, -356247136, -364157920, -365933376, -371765920, -384912288, -396248864,
--403550304, -414054720, -426279808, -433807808, -443296448, -463264832, -485040864, -499604032, -515666656, -537647232,
--551704640, -555206144, -566512640, -588050304, -601189632, -608905024, -632589632, -662465984, -671137472, -670804096,
--687241472, -695903872, -667400896, -641328832, -648485312, -605638144, -424692256, -185103968, -37003292, },
+-12817793, -22537304, -33988760, -39535172, -31816044, -6058052, 52388936, 153264304, 261093216, 307425184,
+263993392, 169773072, 73569032, -6526203, -56706452, -55943024, -11604465, 39944268, 82797304, 127639448,
+164261568, 159431328, 109619912, 49804976, 6515466, -16895864, -14101451, 20765094, 67684392, 96716224,
+103307920, 98653248, 79120816, 33847028, -31095026, -99142344, -160865312, -211477216, -247033632, -271942848,
+-294957952, -315941568, -330808032, -343203328, -356247136, -364157920, -365933376, -371765920, -384912288, -396248864,
+-403550304, -414054720, -426279808, -433807808, -443296448, -463264832, -485040864, -499604032, -515666656, -537647232,
+-551704640, -555206144, -566512640, -588050304, -601189632, -608905024, -632589632, -662465984, -671137472, -670804096,
+-687241472, -695903872, -667400896, -641328832, -648485312, -605638144, -424692256, -185103968, -37003292, },
{
-69350840,
--199906576, -311887648, -392731264, -410866784, -342573568, -223211056, -140879216, -163624832, -284638208, -435727104,
--534943008, -530843456, -435152128, -318364448, -249764704, -238453360, -247804576, -252108672, -246991216, -217418768,
--141864384, -33516314, 60608968, 112287088, 136834976, 161198720, 195325984, 239988816, 295499648, 353162816,
-396481312, 416609152, 415039328, 394495968, 361008640, 328777600, 307674272, 290885792, 266287968, 232155872,
-192372656, 147222896, 98384280, 51841864, 8317204, -38079180, -87672632, -134203232, -177202304, -221665408,
--266239648, -305633632, -341292064, -375708704, -402299392, -414610912, -417046144, -413983840, -400061184, -372735520,
--339849472, -304759072, -261169984, -210188720, -162091536, -116283016, -62799400, -5180268, 44332116, 89105000,
-137649408, 177868560, 197069200, 212243328, 236309632, 234228192, 169281840, 75060456, 15222438, },
+-199906576, -311887648, -392731264, -410866784, -342573568, -223211056, -140879216, -163624832, -284638208, -435727104,
+-534943008, -530843456, -435152128, -318364448, -249764704, -238453360, -247804576, -252108672, -246991216, -217418768,
+-141864384, -33516314, 60608968, 112287088, 136834976, 161198720, 195325984, 239988816, 295499648, 353162816,
+396481312, 416609152, 415039328, 394495968, 361008640, 328777600, 307674272, 290885792, 266287968, 232155872,
+192372656, 147222896, 98384280, 51841864, 8317204, -38079180, -87672632, -134203232, -177202304, -221665408,
+-266239648, -305633632, -341292064, -375708704, -402299392, -414610912, -417046144, -413983840, -400061184, -372735520,
+-339849472, -304759072, -261169984, -210188720, -162091536, -116283016, -62799400, -5180268, 44332116, 89105000,
+137649408, 177868560, 197069200, 212243328, 236309632, 234228192, 169281840, 75060456, 15222438, },
},
{
{
-69350840,
--199906576, -311887648, -392731264, -410866784, -342573568, -223211056, -140879216, -163624832, -284638208, -435727104,
--534943008, -530843456, -435152128, -318364448, -249764704, -238453360, -247804576, -252108672, -246991216, -217418768,
--141864384, -33516314, 60608968, 112287088, 136834976, 161198720, 195325984, 239988816, 295499648, 353162816,
-396481312, 416609152, 415039328, 394495968, 361008640, 328777600, 307674272, 290885792, 266287968, 232155872,
-192372656, 147222896, 98384280, 51841864, 8317204, -38079180, -87672632, -134203232, -177202304, -221665408,
--266239648, -305633632, -341292064, -375708704, -402299392, -414610912, -417046144, -413983840, -400061184, -372735520,
--339849472, -304759072, -261169984, -210188720, -162091536, -116283016, -62799400, -5180268, 44332116, 89105000,
-137649408, 177868560, 197069200, 212243328, 236309632, 234228192, 169281840, 75060456, 15222438, },
+-199906576, -311887648, -392731264, -410866784, -342573568, -223211056, -140879216, -163624832, -284638208, -435727104,
+-534943008, -530843456, -435152128, -318364448, -249764704, -238453360, -247804576, -252108672, -246991216, -217418768,
+-141864384, -33516314, 60608968, 112287088, 136834976, 161198720, 195325984, 239988816, 295499648, 353162816,
+396481312, 416609152, 415039328, 394495968, 361008640, 328777600, 307674272, 290885792, 266287968, 232155872,
+192372656, 147222896, 98384280, 51841864, 8317204, -38079180, -87672632, -134203232, -177202304, -221665408,
+-266239648, -305633632, -341292064, -375708704, -402299392, -414610912, -417046144, -413983840, -400061184, -372735520,
+-339849472, -304759072, -261169984, -210188720, -162091536, -116283016, -62799400, -5180268, 44332116, 89105000,
+137649408, 177868560, 197069200, 212243328, 236309632, 234228192, 169281840, 75060456, 15222438, },
{
-4428648,
--12817793, -22537304, -33988760, -39535172, -31816044, -6058052, 52388936, 153264304, 261093216, 307425184,
-263993392, 169773072, 73569032, -6526203, -56706452, -55943024, -11604465, 39944268, 82797304, 127639448,
-164261568, 159431328, 109619912, 49804976, 6515466, -16895864, -14101451, 20765094, 67684392, 96716224,
-103307920, 98653248, 79120816, 33847028, -31095026, -99142344, -160865312, -211477216, -247033632, -271942848,
--294957952, -315941568, -330808032, -343203328, -356247136, -364157920, -365933376, -371765920, -384912288, -396248864,
--403550304, -414054720, -426279808, -433807808, -443296448, -463264832, -485040864, -499604032, -515666656, -537647232,
--551704640, -555206144, -566512640, -588050304, -601189632, -608905024, -632589632, -662465984, -671137472, -670804096,
--687241472, -695903872, -667400896, -641328832, -648485312, -605638144, -424692256, -185103968, -37003292, },
+-12817793, -22537304, -33988760, -39535172, -31816044, -6058052, 52388936, 153264304, 261093216, 307425184,
+263993392, 169773072, 73569032, -6526203, -56706452, -55943024, -11604465, 39944268, 82797304, 127639448,
+164261568, 159431328, 109619912, 49804976, 6515466, -16895864, -14101451, 20765094, 67684392, 96716224,
+103307920, 98653248, 79120816, 33847028, -31095026, -99142344, -160865312, -211477216, -247033632, -271942848,
+-294957952, -315941568, -330808032, -343203328, -356247136, -364157920, -365933376, -371765920, -384912288, -396248864,
+-403550304, -414054720, -426279808, -433807808, -443296448, -463264832, -485040864, -499604032, -515666656, -537647232,
+-551704640, -555206144, -566512640, -588050304, -601189632, -608905024, -632589632, -662465984, -671137472, -670804096,
+-687241472, -695903872, -667400896, -641328832, -648485312, -605638144, -424692256, -185103968, -37003292, },
},
{
{
4335233,
-20616380, 49456012, 69235944, 42754788, -34925064, -109610248, -120600000, -75574248, -35679368, -27114128,
--15243913, 21977348, 47280072, 20015622, -43954696, -104432664, -155194352, -211883088, -267991456, -302190688,
--313634624, -317882336, -319672256, -314427584, -305008192, -297233216, -289331008, -278697216, -267171664, -252595072,
--229863968, -203925584, -185493200, -173132816, -156063008, -132223792, -107246944, -81357952, -53597972, -30962420,
--18345952, -9557376, -471373, 2304250, -4316442, -13293461, -22566296, -38360500, -58558120, -72458784,
--78857208, -84461608, -87244208, -82279760, -77346992, -81921672, -91409792, -101298416, -120460408, -152264112,
--183732256, -209425296, -240028544, -274892416, -298074496, -310640480, -329773504, -351942496, -359755040, -362668640,
--380955552, -399289696, -394886816, -392853664, -420282944, -427300928, -342532768, -189912720, -54082764, },
+20616380, 49456012, 69235944, 42754788, -34925064, -109610248, -120600000, -75574248, -35679368, -27114128,
+-15243913, 21977348, 47280072, 20015622, -43954696, -104432664, -155194352, -211883088, -267991456, -302190688,
+-313634624, -317882336, -319672256, -314427584, -305008192, -297233216, -289331008, -278697216, -267171664, -252595072,
+-229863968, -203925584, -185493200, -173132816, -156063008, -132223792, -107246944, -81357952, -53597972, -30962420,
+-18345952, -9557376, -471373, 2304250, -4316442, -13293461, -22566296, -38360500, -58558120, -72458784,
+-78857208, -84461608, -87244208, -82279760, -77346992, -81921672, -91409792, -101298416, -120460408, -152264112,
+-183732256, -209425296, -240028544, -274892416, -298074496, -310640480, -329773504, -351942496, -359755040, -362668640,
+-380955552, -399289696, -394886816, -392853664, -420282944, -427300928, -342532768, -189912720, -54082764, },
{
-99345816,
--286369632, -427405632, -480084992, -431886880, -323924288, -221190816, -155707056, -104193760, -24307368, 91562800,
-205071264, 273453600, 291721152, 286386816, 276125600, 252572000, 198656192, 113060720, 13233868, -77841984,
--145458192, -189659312, -219943120, -241321872, -247546880, -230110384, -188789040, -129440112, -57381836, 21233782,
-95871184, 155221728, 192750080, 206907360, 199403520, 174810544, 138590000, 94764160, 47423956, 2244657,
--36883568, -70249560, -98521184, -120003536, -133912248, -141698480, -142972480, -134980624, -117253144, -91475288,
--57106424, -13491029, 34559992, 79605608, 118001544, 147751168, 164080096, 163572752, 148051280, 119160648,
-75744432, 21119428, -35354560, -87692496, -134928016, -171976928, -190841504, -191279056, -177239872, -145453360,
--93279176, -32515050, 22766548, 72799696, 114743272, 124032752, 85572928, 30638150, 3125126, },
+-286369632, -427405632, -480084992, -431886880, -323924288, -221190816, -155707056, -104193760, -24307368, 91562800,
+205071264, 273453600, 291721152, 286386816, 276125600, 252572000, 198656192, 113060720, 13233868, -77841984,
+-145458192, -189659312, -219943120, -241321872, -247546880, -230110384, -188789040, -129440112, -57381836, 21233782,
+95871184, 155221728, 192750080, 206907360, 199403520, 174810544, 138590000, 94764160, 47423956, 2244657,
+-36883568, -70249560, -98521184, -120003536, -133912248, -141698480, -142972480, -134980624, -117253144, -91475288,
+-57106424, -13491029, 34559992, 79605608, 118001544, 147751168, 164080096, 163572752, 148051280, 119160648,
+75744432, 21119428, -35354560, -87692496, -134928016, -171976928, -190841504, -191279056, -177239872, -145453360,
+-93279176, -32515050, 22766548, 72799696, 114743272, 124032752, 85572928, 30638150, 3125126, },
},
{
{
-99345816,
--286369632, -427405632, -480084992, -431886880, -323924288, -221190816, -155707056, -104193760, -24307368, 91562800,
-205071264, 273453600, 291721152, 286386816, 276125600, 252572000, 198656192, 113060720, 13233868, -77841984,
--145458192, -189659312, -219943120, -241321872, -247546880, -230110384, -188789040, -129440112, -57381836, 21233782,
-95871184, 155221728, 192750080, 206907360, 199403520, 174810544, 138590000, 94764160, 47423956, 2244657,
--36883568, -70249560, -98521184, -120003536, -133912248, -141698480, -142972480, -134980624, -117253144, -91475288,
--57106424, -13491029, 34559992, 79605608, 118001544, 147751168, 164080096, 163572752, 148051280, 119160648,
-75744432, 21119428, -35354560, -87692496, -134928016, -171976928, -190841504, -191279056, -177239872, -145453360,
--93279176, -32515050, 22766548, 72799696, 114743272, 124032752, 85572928, 30638150, 3125126, },
+-286369632, -427405632, -480084992, -431886880, -323924288, -221190816, -155707056, -104193760, -24307368, 91562800,
+205071264, 273453600, 291721152, 286386816, 276125600, 252572000, 198656192, 113060720, 13233868, -77841984,
+-145458192, -189659312, -219943120, -241321872, -247546880, -230110384, -188789040, -129440112, -57381836, 21233782,
+95871184, 155221728, 192750080, 206907360, 199403520, 174810544, 138590000, 94764160, 47423956, 2244657,
+-36883568, -70249560, -98521184, -120003536, -133912248, -141698480, -142972480, -134980624, -117253144, -91475288,
+-57106424, -13491029, 34559992, 79605608, 118001544, 147751168, 164080096, 163572752, 148051280, 119160648,
+75744432, 21119428, -35354560, -87692496, -134928016, -171976928, -190841504, -191279056, -177239872, -145453360,
+-93279176, -32515050, 22766548, 72799696, 114743272, 124032752, 85572928, 30638150, 3125126, },
{
4335233,
-20616380, 49456012, 69235944, 42754788, -34925064, -109610248, -120600000, -75574248, -35679368, -27114128,
--15243913, 21977348, 47280072, 20015622, -43954696, -104432664, -155194352, -211883088, -267991456, -302190688,
--313634624, -317882336, -319672256, -314427584, -305008192, -297233216, -289331008, -278697216, -267171664, -252595072,
--229863968, -203925584, -185493200, -173132816, -156063008, -132223792, -107246944, -81357952, -53597972, -30962420,
--18345952, -9557376, -471373, 2304250, -4316442, -13293461, -22566296, -38360500, -58558120, -72458784,
--78857208, -84461608, -87244208, -82279760, -77346992, -81921672, -91409792, -101298416, -120460408, -152264112,
--183732256, -209425296, -240028544, -274892416, -298074496, -310640480, -329773504, -351942496, -359755040, -362668640,
--380955552, -399289696, -394886816, -392853664, -420282944, -427300928, -342532768, -189912720, -54082764, },
+20616380, 49456012, 69235944, 42754788, -34925064, -109610248, -120600000, -75574248, -35679368, -27114128,
+-15243913, 21977348, 47280072, 20015622, -43954696, -104432664, -155194352, -211883088, -267991456, -302190688,
+-313634624, -317882336, -319672256, -314427584, -305008192, -297233216, -289331008, -278697216, -267171664, -252595072,
+-229863968, -203925584, -185493200, -173132816, -156063008, -132223792, -107246944, -81357952, -53597972, -30962420,
+-18345952, -9557376, -471373, 2304250, -4316442, -13293461, -22566296, -38360500, -58558120, -72458784,
+-78857208, -84461608, -87244208, -82279760, -77346992, -81921672, -91409792, -101298416, -120460408, -152264112,
+-183732256, -209425296, -240028544, -274892416, -298074496, -310640480, -329773504, -351942496, -359755040, -362668640,
+-380955552, -399289696, -394886816, -392853664, -420282944, -427300928, -342532768, -189912720, -54082764, },
},
{
{
485331,
-10242960, 31972274, 43328168, 18358838, -41247792, -103692320, -138647984, -144314128, -136896720, -122505352,
--95425584, -62041340, -46414100, -64334316, -106537200, -156071600, -207659520, -259043968, -298011136, -314279392,
--315926528, -319767840, -330993792, -343319296, -352833184, -360500768, -365669760, -366703776, -365058784, -362441024,
--357266112, -347681376, -333688352, -313987328, -285891808, -250179696, -211662432, -174741824, -142250928, -116871968,
--99368360, -87635048, -80598280, -79409648, -82679192, -85931560, -87700544, -90206128, -93239984, -94304064,
--94775432, -98646808, -106169448, -115775672, -129464272, -149003696, -170912848, -191925440, -213642944, -236010064,
--254295344, -267836848, -281970496, -297131200, -307629728, -313544960, -319844608, -323095360, -315331136, -299738784,
--284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, },
+10242960, 31972274, 43328168, 18358838, -41247792, -103692320, -138647984, -144314128, -136896720, -122505352,
+-95425584, -62041340, -46414100, -64334316, -106537200, -156071600, -207659520, -259043968, -298011136, -314279392,
+-315926528, -319767840, -330993792, -343319296, -352833184, -360500768, -365669760, -366703776, -365058784, -362441024,
+-357266112, -347681376, -333688352, -313987328, -285891808, -250179696, -211662432, -174741824, -142250928, -116871968,
+-99368360, -87635048, -80598280, -79409648, -82679192, -85931560, -87700544, -90206128, -93239984, -94304064,
+-94775432, -98646808, -106169448, -115775672, -129464272, -149003696, -170912848, -191925440, -213642944, -236010064,
+-254295344, -267836848, -281970496, -297131200, -307629728, -313544960, -319844608, -323095360, -315331136, -299738784,
+-284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, },
{
-70953936,
--213264448, -340538816, -414134176, -409366752, -353428032, -306926432, -299649120, -300532288, -265251808, -197311328,
--137314400, -101265128, -61981748, 5509370, 90977072, 171506096, 239528720, 293170720, 321731168, 319811840,
-300423296, 277909088, 250022928, 209204640, 158823600, 106245144, 50823420, -10669773, -75280040, -137317088,
--192245952, -233691312, -255845296, -260910144, -255517264, -240265840, -211742960, -172575008, -130165424, -88486528,
--49173080, -15943455, 9725417, 31963684, 53752588, 73487424, 92061016, 114548392, 141434880, 166937856,
-187263264, 201139232, 203403744, 188994672, 161490768, 127726424, 88114472, 41495828, -7604240, -55883968,
--106299368, -157816432, -201166064, -231501424, -252095248, -261367552, -252826464, -230248368, -203759696, -171087872,
--124413928, -71516576, -24179056, 25768730, 85896128, 128984848, 119969176, 69876432, 20000588, },
+-213264448, -340538816, -414134176, -409366752, -353428032, -306926432, -299649120, -300532288, -265251808, -197311328,
+-137314400, -101265128, -61981748, 5509370, 90977072, 171506096, 239528720, 293170720, 321731168, 319811840,
+300423296, 277909088, 250022928, 209204640, 158823600, 106245144, 50823420, -10669773, -75280040, -137317088,
+-192245952, -233691312, -255845296, -260910144, -255517264, -240265840, -211742960, -172575008, -130165424, -88486528,
+-49173080, -15943455, 9725417, 31963684, 53752588, 73487424, 92061016, 114548392, 141434880, 166937856,
+187263264, 201139232, 203403744, 188994672, 161490768, 127726424, 88114472, 41495828, -7604240, -55883968,
+-106299368, -157816432, -201166064, -231501424, -252095248, -261367552, -252826464, -230248368, -203759696, -171087872,
+-124413928, -71516576, -24179056, 25768730, 85896128, 128984848, 119969176, 69876432, 20000588, },
},
{
{
-70953936,
--213264448, -340538816, -414134176, -409366752, -353428032, -306926432, -299649120, -300532288, -265251808, -197311328,
--137314400, -101265128, -61981748, 5509370, 90977072, 171506096, 239528720, 293170720, 321731168, 319811840,
-300423296, 277909088, 250022928, 209204640, 158823600, 106245144, 50823420, -10669773, -75280040, -137317088,
--192245952, -233691312, -255845296, -260910144, -255517264, -240265840, -211742960, -172575008, -130165424, -88486528,
--49173080, -15943455, 9725417, 31963684, 53752588, 73487424, 92061016, 114548392, 141434880, 166937856,
-187263264, 201139232, 203403744, 188994672, 161490768, 127726424, 88114472, 41495828, -7604240, -55883968,
--106299368, -157816432, -201166064, -231501424, -252095248, -261367552, -252826464, -230248368, -203759696, -171087872,
--124413928, -71516576, -24179056, 25768730, 85896128, 128984848, 119969176, 69876432, 20000588, },
+-213264448, -340538816, -414134176, -409366752, -353428032, -306926432, -299649120, -300532288, -265251808, -197311328,
+-137314400, -101265128, -61981748, 5509370, 90977072, 171506096, 239528720, 293170720, 321731168, 319811840,
+300423296, 277909088, 250022928, 209204640, 158823600, 106245144, 50823420, -10669773, -75280040, -137317088,
+-192245952, -233691312, -255845296, -260910144, -255517264, -240265840, -211742960, -172575008, -130165424, -88486528,
+-49173080, -15943455, 9725417, 31963684, 53752588, 73487424, 92061016, 114548392, 141434880, 166937856,
+187263264, 201139232, 203403744, 188994672, 161490768, 127726424, 88114472, 41495828, -7604240, -55883968,
+-106299368, -157816432, -201166064, -231501424, -252095248, -261367552, -252826464, -230248368, -203759696, -171087872,
+-124413928, -71516576, -24179056, 25768730, 85896128, 128984848, 119969176, 69876432, 20000588, },
{
485331,
-10242960, 31972274, 43328168, 18358838, -41247792, -103692320, -138647984, -144314128, -136896720, -122505352,
--95425584, -62041340, -46414100, -64334316, -106537200, -156071600, -207659520, -259043968, -298011136, -314279392,
--315926528, -319767840, -330993792, -343319296, -352833184, -360500768, -365669760, -366703776, -365058784, -362441024,
--357266112, -347681376, -333688352, -313987328, -285891808, -250179696, -211662432, -174741824, -142250928, -116871968,
--99368360, -87635048, -80598280, -79409648, -82679192, -85931560, -87700544, -90206128, -93239984, -94304064,
--94775432, -98646808, -106169448, -115775672, -129464272, -149003696, -170912848, -191925440, -213642944, -236010064,
--254295344, -267836848, -281970496, -297131200, -307629728, -313544960, -319844608, -323095360, -315331136, -299738784,
--284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, },
+10242960, 31972274, 43328168, 18358838, -41247792, -103692320, -138647984, -144314128, -136896720, -122505352,
+-95425584, -62041340, -46414100, -64334316, -106537200, -156071600, -207659520, -259043968, -298011136, -314279392,
+-315926528, -319767840, -330993792, -343319296, -352833184, -360500768, -365669760, -366703776, -365058784, -362441024,
+-357266112, -347681376, -333688352, -313987328, -285891808, -250179696, -211662432, -174741824, -142250928, -116871968,
+-99368360, -87635048, -80598280, -79409648, -82679192, -85931560, -87700544, -90206128, -93239984, -94304064,
+-94775432, -98646808, -106169448, -115775672, -129464272, -149003696, -170912848, -191925440, -213642944, -236010064,
+-254295344, -267836848, -281970496, -297131200, -307629728, -313544960, -319844608, -323095360, -315331136, -299738784,
+-284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, },
},
};
-const Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[16][BINAURAL_CHANNELS][240] ={
+const Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240] ={
{
{
523696096,
-442117504, 310699008, 167178384, 38328824, -62973884, -142701904, -218207424, -288233120, -324050464, -305476864,
--239455696, -124559960, 52899500, 239470736, 289440000, 117837256, -137072800, -214231360, -22201760, 253544800,
-372249120, 286295008, 117738472, -31679678, -156358816, -271503680, -359748064, -405781536, -424572000, -434228160,
--433325696, -417425728, -393916672, -370626688, -346321472, -318988288, -291659424, -266480704, -241915648, -217410704,
--194249024, -171965120, -149140592, -126572152, -105665320, -85652384, -65502008, -46165528, -28507308, -11534135,
-5517959, 21835614, 36923296, 51426328, 65420940, 78127600, 89553824, 100435664, 110730160, 119946624,
-128456568, 136897792, 144993808, 152274304, 159110816, 165962368, 172539568, 178568096, 184424816, 190402880,
-196267664, 201906416, 207601008, 213461488, 219304784, 225092800, 230917840, 236754704, 242604992, 248525056,
-254273872, 259479376, 264267184, 269042656, 273646848, 277524672, 280694912, 283720704, 286716992, 289173184,
-290755872, 291661024, 292211328, 292578528, 292768608, 292590368, 291897792, 291028608, 290619488, 290858944,
-291348032, 291775392, 292309024, 293284512, 294904256, 297195616, 299932608, 302707136, 305358752, 308171424,
-311448480, 315120128, 318904000, 322573504, 325947744, 328940800, 331715360, 334517824, 337346048, 339990688,
-342338944, 344415040, 346238240, 347855296, 349375200, 350801664, 351969888, 352762848, 353224544, 353432864,
-353450560, 353402272, 353409760, 353459168, 353489216, 353525216, 353615936, 353763584, 354041664, 354629536,
-355629728, 356984256, 358612576, 360484672, 362536576, 364679776, 366888448, 369164256, 371435200, 373599872,
-375592736, 377362272, 378847264, 380034272, 380948576, 381599776, 382006752, 382226848, 382302560, 382249408,
-382125920, 382023904, 381983104, 382034656, 382263360, 382681600, 383146528, 383545952, 383915328, 384261600,
-384489216, 384601440, 384703968, 384776992, 384730816, 384668544, 384751776, 384924096, 385130240, 385565120,
-386347872, 387285248, 388299936, 389614208, 391214080, 392766176, 394279616, 396044288, 397870752, 399357856,
-400790240, 402575872, 404207968, 405212448, 406370464, 408240928, 409671712, 409968576, 410793760, 413089408,
-414437504, 413311680, 413165120, 416964544, 420169120, 415984224, 406336640, 400335520, 402015904, 406590592,
-408728960, 407087744, 400552416, 388721920, 377990944, 378296960, 389718368, 399499616, 397218976, 387056000,
-379926368, 378810752, 378725920, 378463936, 384824224, 403541184, 430237088, 453206560, 464204896, 464701504,
-461558112, 458781952, 455806080, 452544064, 451409664, 452445280, 450857216, 443671200, 436101856, },
+442117504, 310699008, 167178384, 38328824, -62973884, -142701904, -218207424, -288233120, -324050464, -305476864,
+-239455696, -124559960, 52899500, 239470736, 289440000, 117837256, -137072800, -214231360, -22201760, 253544800,
+372249120, 286295008, 117738472, -31679678, -156358816, -271503680, -359748064, -405781536, -424572000, -434228160,
+-433325696, -417425728, -393916672, -370626688, -346321472, -318988288, -291659424, -266480704, -241915648, -217410704,
+-194249024, -171965120, -149140592, -126572152, -105665320, -85652384, -65502008, -46165528, -28507308, -11534135,
+5517959, 21835614, 36923296, 51426328, 65420940, 78127600, 89553824, 100435664, 110730160, 119946624,
+128456568, 136897792, 144993808, 152274304, 159110816, 165962368, 172539568, 178568096, 184424816, 190402880,
+196267664, 201906416, 207601008, 213461488, 219304784, 225092800, 230917840, 236754704, 242604992, 248525056,
+254273872, 259479376, 264267184, 269042656, 273646848, 277524672, 280694912, 283720704, 286716992, 289173184,
+290755872, 291661024, 292211328, 292578528, 292768608, 292590368, 291897792, 291028608, 290619488, 290858944,
+291348032, 291775392, 292309024, 293284512, 294904256, 297195616, 299932608, 302707136, 305358752, 308171424,
+311448480, 315120128, 318904000, 322573504, 325947744, 328940800, 331715360, 334517824, 337346048, 339990688,
+342338944, 344415040, 346238240, 347855296, 349375200, 350801664, 351969888, 352762848, 353224544, 353432864,
+353450560, 353402272, 353409760, 353459168, 353489216, 353525216, 353615936, 353763584, 354041664, 354629536,
+355629728, 356984256, 358612576, 360484672, 362536576, 364679776, 366888448, 369164256, 371435200, 373599872,
+375592736, 377362272, 378847264, 380034272, 380948576, 381599776, 382006752, 382226848, 382302560, 382249408,
+382125920, 382023904, 381983104, 382034656, 382263360, 382681600, 383146528, 383545952, 383915328, 384261600,
+384489216, 384601440, 384703968, 384776992, 384730816, 384668544, 384751776, 384924096, 385130240, 385565120,
+386347872, 387285248, 388299936, 389614208, 391214080, 392766176, 394279616, 396044288, 397870752, 399357856,
+400790240, 402575872, 404207968, 405212448, 406370464, 408240928, 409671712, 409968576, 410793760, 413089408,
+414437504, 413311680, 413165120, 416964544, 420169120, 415984224, 406336640, 400335520, 402015904, 406590592,
+408728960, 407087744, 400552416, 388721920, 377990944, 378296960, 389718368, 399499616, 397218976, 387056000,
+379926368, 378810752, 378725920, 378463936, 384824224, 403541184, 430237088, 453206560, 464204896, 464701504,
+461558112, 458781952, 455806080, 452544064, 451409664, 452445280, 450857216, 443671200, 436101856, },
{
523696096,
-442117504, 310699008, 167178384, 38328824, -62973884, -142701904, -218207424, -288233120, -324050464, -305476864,
--239455696, -124559960, 52899500, 239470736, 289440000, 117837256, -137072800, -214231360, -22201760, 253544800,
-372249120, 286295008, 117738472, -31679678, -156358816, -271503680, -359748064, -405781536, -424572000, -434228160,
--433325696, -417425728, -393916672, -370626688, -346321472, -318988288, -291659424, -266480704, -241915648, -217410704,
--194249024, -171965120, -149140592, -126572152, -105665320, -85652384, -65502008, -46165528, -28507308, -11534135,
-5517959, 21835614, 36923296, 51426328, 65420940, 78127600, 89553824, 100435664, 110730160, 119946624,
-128456568, 136897792, 144993808, 152274304, 159110816, 165962368, 172539568, 178568096, 184424816, 190402880,
-196267664, 201906416, 207601008, 213461488, 219304784, 225092800, 230917840, 236754704, 242604992, 248525056,
-254273872, 259479376, 264267184, 269042656, 273646848, 277524672, 280694912, 283720704, 286716992, 289173184,
-290755872, 291661024, 292211328, 292578528, 292768608, 292590368, 291897792, 291028608, 290619488, 290858944,
-291348032, 291775392, 292309024, 293284512, 294904256, 297195616, 299932608, 302707136, 305358752, 308171424,
-311448480, 315120128, 318904000, 322573504, 325947744, 328940800, 331715360, 334517824, 337346048, 339990688,
-342338944, 344415040, 346238240, 347855296, 349375200, 350801664, 351969888, 352762848, 353224544, 353432864,
-353450560, 353402272, 353409760, 353459168, 353489216, 353525216, 353615936, 353763584, 354041664, 354629536,
-355629728, 356984256, 358612576, 360484672, 362536576, 364679776, 366888448, 369164256, 371435200, 373599872,
-375592736, 377362272, 378847264, 380034272, 380948576, 381599776, 382006752, 382226848, 382302560, 382249408,
-382125920, 382023904, 381983104, 382034656, 382263360, 382681600, 383146528, 383545952, 383915328, 384261600,
-384489216, 384601440, 384703968, 384776992, 384730816, 384668544, 384751776, 384924096, 385130240, 385565120,
-386347872, 387285248, 388299936, 389614208, 391214080, 392766176, 394279616, 396044288, 397870752, 399357856,
-400790240, 402575872, 404207968, 405212448, 406370464, 408240928, 409671712, 409968576, 410793760, 413089408,
-414437504, 413311680, 413165120, 416964544, 420169120, 415984224, 406336640, 400335520, 402015904, 406590592,
-408728960, 407087744, 400552416, 388721920, 377990944, 378296960, 389718368, 399499616, 397218976, 387056000,
-379926368, 378810752, 378725920, 378463936, 384824224, 403541184, 430237088, 453206560, 464204896, 464701504,
-461558112, 458781952, 455806080, 452544064, 451409664, 452445280, 450857216, 443671200, 436101856, },
+442117504, 310699008, 167178384, 38328824, -62973884, -142701904, -218207424, -288233120, -324050464, -305476864,
+-239455696, -124559960, 52899500, 239470736, 289440000, 117837256, -137072800, -214231360, -22201760, 253544800,
+372249120, 286295008, 117738472, -31679678, -156358816, -271503680, -359748064, -405781536, -424572000, -434228160,
+-433325696, -417425728, -393916672, -370626688, -346321472, -318988288, -291659424, -266480704, -241915648, -217410704,
+-194249024, -171965120, -149140592, -126572152, -105665320, -85652384, -65502008, -46165528, -28507308, -11534135,
+5517959, 21835614, 36923296, 51426328, 65420940, 78127600, 89553824, 100435664, 110730160, 119946624,
+128456568, 136897792, 144993808, 152274304, 159110816, 165962368, 172539568, 178568096, 184424816, 190402880,
+196267664, 201906416, 207601008, 213461488, 219304784, 225092800, 230917840, 236754704, 242604992, 248525056,
+254273872, 259479376, 264267184, 269042656, 273646848, 277524672, 280694912, 283720704, 286716992, 289173184,
+290755872, 291661024, 292211328, 292578528, 292768608, 292590368, 291897792, 291028608, 290619488, 290858944,
+291348032, 291775392, 292309024, 293284512, 294904256, 297195616, 299932608, 302707136, 305358752, 308171424,
+311448480, 315120128, 318904000, 322573504, 325947744, 328940800, 331715360, 334517824, 337346048, 339990688,
+342338944, 344415040, 346238240, 347855296, 349375200, 350801664, 351969888, 352762848, 353224544, 353432864,
+353450560, 353402272, 353409760, 353459168, 353489216, 353525216, 353615936, 353763584, 354041664, 354629536,
+355629728, 356984256, 358612576, 360484672, 362536576, 364679776, 366888448, 369164256, 371435200, 373599872,
+375592736, 377362272, 378847264, 380034272, 380948576, 381599776, 382006752, 382226848, 382302560, 382249408,
+382125920, 382023904, 381983104, 382034656, 382263360, 382681600, 383146528, 383545952, 383915328, 384261600,
+384489216, 384601440, 384703968, 384776992, 384730816, 384668544, 384751776, 384924096, 385130240, 385565120,
+386347872, 387285248, 388299936, 389614208, 391214080, 392766176, 394279616, 396044288, 397870752, 399357856,
+400790240, 402575872, 404207968, 405212448, 406370464, 408240928, 409671712, 409968576, 410793760, 413089408,
+414437504, 413311680, 413165120, 416964544, 420169120, 415984224, 406336640, 400335520, 402015904, 406590592,
+408728960, 407087744, 400552416, 388721920, 377990944, 378296960, 389718368, 399499616, 397218976, 387056000,
+379926368, 378810752, 378725920, 378463936, 384824224, 403541184, 430237088, 453206560, 464204896, 464701504,
+461558112, 458781952, 455806080, 452544064, 451409664, 452445280, 450857216, 443671200, 436101856, },
},
{
{
39313448,
-162039984, 354059392, 513073024, 544220672, 426079008, 200846096, -76480480, -341753760, -517496864, -570909632,
--538810624, -426258848, -152656560, 268456928, 556916608, 392621760, -137937712, -524111648, -381302368, 122664800,
-517052864, 571298304, 423385536, 267364400, 134421200, -10704132, -142540304, -220866016, -263521472, -306872192,
--348453920, -370534880, -379185472, -388552800, -396056640, -394882528, -389052640, -382683744, -371897472, -354961344,
--336135936, -316509568, -293179840, -267362784, -242905632, -218939184, -192737200, -166288784, -142837728, -121205048,
--99199784, -77883864, -58247808, -38609608, -18247168, 1144609, 19156628, 37176164, 54835460, 70412232,
-84282288, 97901632, 110576616, 120906552, 129687608, 138192720, 145665968, 151166736, 155605584, 159884448,
-163383248, 165773392, 168035760, 170768432, 173590768, 176530672, 180116432, 184315840, 188937760, 194341904,
-200491760, 206520816, 212239568, 218499488, 225355856, 231702208, 237215344, 242769264, 248687728, 254468752,
-260238512, 266707808, 273941056, 281680064, 290293632, 300081856, 310452576, 320862496, 331534976, 342404448,
-352558304, 361381760, 369063328, 375619040, 380618944, 383952896, 385725632, 385646720, 383630784, 380563104,
-377491648, 374619936, 371822848, 369278592, 366996352, 364715744, 362746496, 361908992, 362372288, 363497056,
-364780704, 365996160, 366721472, 366764960, 366680672, 366982400, 367400096, 367574048, 367722208, 368027168,
-368227424, 368258560, 368442688, 368780928, 368942528, 368980096, 369208288, 369538976, 369727968, 369950752,
-370432864, 370996064, 371569984, 372518624, 374047104, 375963712, 378274944, 381220224, 384661024, 388236576,
-392007584, 396189792, 400559936, 404847904, 409238432, 413860896, 418399616, 422691904, 426985248, 431279680,
-435233184, 438858688, 442451968, 445902976, 448900320, 451546560, 454001120, 456011712, 457482752, 458817920,
-460182656, 461281088, 462164256, 463233696, 464334272, 464945792, 465118656, 465174496, 464947392, 464355744,
-463920896, 463844128, 463656736, 463389920, 463649760, 464247296, 464458848, 464531328, 465066560, 465613632,
-465777920, 466290112, 467196864, 467418080, 467498592, 469054464, 470692448, 470029952, 469692256, 473230240,
-476283424, 473541632, 472350304, 482087520, 491237952, 478718144, 450771840, 438733056, 452943488, 469665408,
-474604096, 484207104, 505161184, 508774304, 474142368, 428292000, 412397920, 428558816, 447011072, 448439680,
-436165216, 422568416, 419888896, 424843680, 401945600, 313745216, 185358448, 103257456, 121463824, 197578704,
-251416656, 259959344, 258984384, 271355488, 275937152, 245777360, 185467968, 123581776, 86443736, },
+162039984, 354059392, 513073024, 544220672, 426079008, 200846096, -76480480, -341753760, -517496864, -570909632,
+-538810624, -426258848, -152656560, 268456928, 556916608, 392621760, -137937712, -524111648, -381302368, 122664800,
+517052864, 571298304, 423385536, 267364400, 134421200, -10704132, -142540304, -220866016, -263521472, -306872192,
+-348453920, -370534880, -379185472, -388552800, -396056640, -394882528, -389052640, -382683744, -371897472, -354961344,
+-336135936, -316509568, -293179840, -267362784, -242905632, -218939184, -192737200, -166288784, -142837728, -121205048,
+-99199784, -77883864, -58247808, -38609608, -18247168, 1144609, 19156628, 37176164, 54835460, 70412232,
+84282288, 97901632, 110576616, 120906552, 129687608, 138192720, 145665968, 151166736, 155605584, 159884448,
+163383248, 165773392, 168035760, 170768432, 173590768, 176530672, 180116432, 184315840, 188937760, 194341904,
+200491760, 206520816, 212239568, 218499488, 225355856, 231702208, 237215344, 242769264, 248687728, 254468752,
+260238512, 266707808, 273941056, 281680064, 290293632, 300081856, 310452576, 320862496, 331534976, 342404448,
+352558304, 361381760, 369063328, 375619040, 380618944, 383952896, 385725632, 385646720, 383630784, 380563104,
+377491648, 374619936, 371822848, 369278592, 366996352, 364715744, 362746496, 361908992, 362372288, 363497056,
+364780704, 365996160, 366721472, 366764960, 366680672, 366982400, 367400096, 367574048, 367722208, 368027168,
+368227424, 368258560, 368442688, 368780928, 368942528, 368980096, 369208288, 369538976, 369727968, 369950752,
+370432864, 370996064, 371569984, 372518624, 374047104, 375963712, 378274944, 381220224, 384661024, 388236576,
+392007584, 396189792, 400559936, 404847904, 409238432, 413860896, 418399616, 422691904, 426985248, 431279680,
+435233184, 438858688, 442451968, 445902976, 448900320, 451546560, 454001120, 456011712, 457482752, 458817920,
+460182656, 461281088, 462164256, 463233696, 464334272, 464945792, 465118656, 465174496, 464947392, 464355744,
+463920896, 463844128, 463656736, 463389920, 463649760, 464247296, 464458848, 464531328, 465066560, 465613632,
+465777920, 466290112, 467196864, 467418080, 467498592, 469054464, 470692448, 470029952, 469692256, 473230240,
+476283424, 473541632, 472350304, 482087520, 491237952, 478718144, 450771840, 438733056, 452943488, 469665408,
+474604096, 484207104, 505161184, 508774304, 474142368, 428292000, 412397920, 428558816, 447011072, 448439680,
+436165216, 422568416, 419888896, 424843680, 401945600, 313745216, 185358448, 103257456, 121463824, 197578704,
+251416656, 259959344, 258984384, 271355488, 275937152, 245777360, 185467968, 123581776, 86443736, },
{
-39313448,
--162039984, -354059392, -513073024, -544220672, -426079008, -200846096, 76480480, 341753760, 517496864, 570909632,
-538810624, 426258848, 152656560, -268456928, -556916608, -392621760, 137937712, 524111648, 381302368, -122664800,
--517052864, -571298304, -423385536, -267364400, -134421200, 10704132, 142540304, 220866016, 263521472, 306872192,
-348453920, 370534880, 379185472, 388552800, 396056640, 394882528, 389052640, 382683744, 371897472, 354961344,
-336135936, 316509568, 293179840, 267362784, 242905632, 218939184, 192737200, 166288784, 142837728, 121205048,
-99199784, 77883864, 58247808, 38609608, 18247168, -1144609, -19156628, -37176164, -54835460, -70412232,
--84282288, -97901632, -110576616, -120906552, -129687608, -138192720, -145665968, -151166736, -155605584, -159884448,
--163383248, -165773392, -168035760, -170768432, -173590768, -176530672, -180116432, -184315840, -188937760, -194341904,
--200491760, -206520816, -212239568, -218499488, -225355856, -231702208, -237215344, -242769264, -248687728, -254468752,
--260238512, -266707808, -273941056, -281680064, -290293632, -300081856, -310452576, -320862496, -331534976, -342404448,
--352558304, -361381760, -369063328, -375619040, -380618944, -383952896, -385725632, -385646720, -383630784, -380563104,
--377491648, -374619936, -371822848, -369278592, -366996352, -364715744, -362746496, -361908992, -362372288, -363497056,
--364780704, -365996160, -366721472, -366764960, -366680672, -366982400, -367400096, -367574048, -367722208, -368027168,
--368227424, -368258560, -368442688, -368780928, -368942528, -368980096, -369208288, -369538976, -369727968, -369950752,
--370432864, -370996064, -371569984, -372518624, -374047104, -375963712, -378274944, -381220224, -384661024, -388236576,
--392007584, -396189792, -400559936, -404847904, -409238432, -413860896, -418399616, -422691904, -426985248, -431279680,
--435233184, -438858688, -442451968, -445902976, -448900320, -451546560, -454001120, -456011712, -457482752, -458817920,
--460182656, -461281088, -462164256, -463233696, -464334272, -464945792, -465118656, -465174496, -464947392, -464355744,
--463920896, -463844128, -463656736, -463389920, -463649760, -464247296, -464458848, -464531328, -465066560, -465613632,
--465777920, -466290112, -467196864, -467418080, -467498592, -469054464, -470692448, -470029952, -469692256, -473230240,
--476283424, -473541632, -472350304, -482087520, -491237952, -478718144, -450771840, -438733056, -452943488, -469665408,
--474604096, -484207104, -505161184, -508774304, -474142368, -428292000, -412397920, -428558816, -447011072, -448439680,
--436165216, -422568416, -419888896, -424843680, -401945600, -313745216, -185358448, -103257456, -121463824, -197578704,
--251416656, -259959344, -258984384, -271355488, -275937152, -245777360, -185467968, -123581776, -86443736, },
+-162039984, -354059392, -513073024, -544220672, -426079008, -200846096, 76480480, 341753760, 517496864, 570909632,
+538810624, 426258848, 152656560, -268456928, -556916608, -392621760, 137937712, 524111648, 381302368, -122664800,
+-517052864, -571298304, -423385536, -267364400, -134421200, 10704132, 142540304, 220866016, 263521472, 306872192,
+348453920, 370534880, 379185472, 388552800, 396056640, 394882528, 389052640, 382683744, 371897472, 354961344,
+336135936, 316509568, 293179840, 267362784, 242905632, 218939184, 192737200, 166288784, 142837728, 121205048,
+99199784, 77883864, 58247808, 38609608, 18247168, -1144609, -19156628, -37176164, -54835460, -70412232,
+-84282288, -97901632, -110576616, -120906552, -129687608, -138192720, -145665968, -151166736, -155605584, -159884448,
+-163383248, -165773392, -168035760, -170768432, -173590768, -176530672, -180116432, -184315840, -188937760, -194341904,
+-200491760, -206520816, -212239568, -218499488, -225355856, -231702208, -237215344, -242769264, -248687728, -254468752,
+-260238512, -266707808, -273941056, -281680064, -290293632, -300081856, -310452576, -320862496, -331534976, -342404448,
+-352558304, -361381760, -369063328, -375619040, -380618944, -383952896, -385725632, -385646720, -383630784, -380563104,
+-377491648, -374619936, -371822848, -369278592, -366996352, -364715744, -362746496, -361908992, -362372288, -363497056,
+-364780704, -365996160, -366721472, -366764960, -366680672, -366982400, -367400096, -367574048, -367722208, -368027168,
+-368227424, -368258560, -368442688, -368780928, -368942528, -368980096, -369208288, -369538976, -369727968, -369950752,
+-370432864, -370996064, -371569984, -372518624, -374047104, -375963712, -378274944, -381220224, -384661024, -388236576,
+-392007584, -396189792, -400559936, -404847904, -409238432, -413860896, -418399616, -422691904, -426985248, -431279680,
+-435233184, -438858688, -442451968, -445902976, -448900320, -451546560, -454001120, -456011712, -457482752, -458817920,
+-460182656, -461281088, -462164256, -463233696, -464334272, -464945792, -465118656, -465174496, -464947392, -464355744,
+-463920896, -463844128, -463656736, -463389920, -463649760, -464247296, -464458848, -464531328, -465066560, -465613632,
+-465777920, -466290112, -467196864, -467418080, -467498592, -469054464, -470692448, -470029952, -469692256, -473230240,
+-476283424, -473541632, -472350304, -482087520, -491237952, -478718144, -450771840, -438733056, -452943488, -469665408,
+-474604096, -484207104, -505161184, -508774304, -474142368, -428292000, -412397920, -428558816, -447011072, -448439680,
+-436165216, -422568416, -419888896, -424843680, -401945600, -313745216, -185358448, -103257456, -121463824, -197578704,
+-251416656, -259959344, -258984384, -271355488, -275937152, -245777360, -185467968, -123581776, -86443736, },
},
{
{
60774324,
-59729572, 33552284, -19560892, -61997316, -58416924, -16454020, 26468810, 43690556, 34408592, 9218610,
--21484500, -43571368, -38717520, -2093797, 40014064, 45883136, 4796405, -39861056, -32189170, 31201864,
-94976224, 107137424, 69399152, 19405200, -16790100, -39045548, -54413476, -64906084, -71736152, -77391016,
--81401976, -81075024, -76618456, -71176200, -67105104, -65755948, -68925632, -77089296, -87613040, -97186520,
--104786464, -110843440, -115289808, -117946784, -119391504, -120165128, -119999776, -118380576, -114929568, -108963856,
--99642704, -86779280, -70805224, -51947628, -30181272, -5902359, 20093468, 47315508, 75696648, 105004968,
-134663328, 164189616, 193327216, 221575216, 247971008, 271514400, 291530048, 307443424, 318553952, 324301696,
-324525568, 319261568, 308642784, 293263040, 274253536, 252611728, 228828880, 203581984, 178318992, 154462064,
-132279624, 111285824, 91716344, 74807592, 61318712, 50438484, 40789304, 32231582, 25963078, 22846004,
-22310744, 23179402, 24956982, 27881854, 32162326, 37633040, 43853228, 50110996, 55558088, 59663540,
-62427348, 64029372, 64456184, 63435592, 60476896, 55152748, 47702056, 39153460, 30481382, 21861384,
-13050258, 4080756, -4772246, -13239774, -20906828, -27201102, -31792422, -34639448, -35629976, -34651796,
--31963684, -27963458, -22743462, -16363825, -9285182, -2051921, 5099737, 11960410, 18188112, 23685670,
-28553480, 32546188, 35286376, 37026376, 38472708, 40037148, 41990820, 44889924, 48940616, 53439056,
-57652420, 61640832, 65580928, 69140384, 72131832, 74825312, 77170896, 78721920, 79533128, 80082352,
-80360984, 80159120, 79882096, 79979272, 80138184, 80043160, 80053360, 80276696, 80137648, 79536352,
-79057464, 78639240, 77597176, 76030048, 74532712, 72858216, 70625368, 68576672, 67376760, 66365296,
-65076272, 64294588, 64252712, 63928440, 63068372, 62334472, 61069068, 57945552, 53580252, 49213344,
-43928924, 36705328, 29108604, 22355304, 14842333, 5965710, -1968706, -8492761, -15931644, -23791434,
--29415158, -34534760, -42116448, -48639968, -50829328, -54961084, -65088080, -71225592, -67966248, -70453032,
--86594592, -93825168, -79387640, -78654808, -121203440, -160942624, -128472672, -42519640, 7400229, -10142565,
--38660076, -43189656, -60630444, -109811040, -134682128, -88345328, -12016782, 23361400, 10660109, -5608154,
--2326799, 3198677, -12473122, -53285512, -96956200, -102666360, -49961744, 22169548, 46085536, 5877663,
--44782552, -56557740, -41253160, -36235028, -45420888, -45099304, -27812598, -9433359, -1260036, },
+59729572, 33552284, -19560892, -61997316, -58416924, -16454020, 26468810, 43690556, 34408592, 9218610,
+-21484500, -43571368, -38717520, -2093797, 40014064, 45883136, 4796405, -39861056, -32189170, 31201864,
+94976224, 107137424, 69399152, 19405200, -16790100, -39045548, -54413476, -64906084, -71736152, -77391016,
+-81401976, -81075024, -76618456, -71176200, -67105104, -65755948, -68925632, -77089296, -87613040, -97186520,
+-104786464, -110843440, -115289808, -117946784, -119391504, -120165128, -119999776, -118380576, -114929568, -108963856,
+-99642704, -86779280, -70805224, -51947628, -30181272, -5902359, 20093468, 47315508, 75696648, 105004968,
+134663328, 164189616, 193327216, 221575216, 247971008, 271514400, 291530048, 307443424, 318553952, 324301696,
+324525568, 319261568, 308642784, 293263040, 274253536, 252611728, 228828880, 203581984, 178318992, 154462064,
+132279624, 111285824, 91716344, 74807592, 61318712, 50438484, 40789304, 32231582, 25963078, 22846004,
+22310744, 23179402, 24956982, 27881854, 32162326, 37633040, 43853228, 50110996, 55558088, 59663540,
+62427348, 64029372, 64456184, 63435592, 60476896, 55152748, 47702056, 39153460, 30481382, 21861384,
+13050258, 4080756, -4772246, -13239774, -20906828, -27201102, -31792422, -34639448, -35629976, -34651796,
+-31963684, -27963458, -22743462, -16363825, -9285182, -2051921, 5099737, 11960410, 18188112, 23685670,
+28553480, 32546188, 35286376, 37026376, 38472708, 40037148, 41990820, 44889924, 48940616, 53439056,
+57652420, 61640832, 65580928, 69140384, 72131832, 74825312, 77170896, 78721920, 79533128, 80082352,
+80360984, 80159120, 79882096, 79979272, 80138184, 80043160, 80053360, 80276696, 80137648, 79536352,
+79057464, 78639240, 77597176, 76030048, 74532712, 72858216, 70625368, 68576672, 67376760, 66365296,
+65076272, 64294588, 64252712, 63928440, 63068372, 62334472, 61069068, 57945552, 53580252, 49213344,
+43928924, 36705328, 29108604, 22355304, 14842333, 5965710, -1968706, -8492761, -15931644, -23791434,
+-29415158, -34534760, -42116448, -48639968, -50829328, -54961084, -65088080, -71225592, -67966248, -70453032,
+-86594592, -93825168, -79387640, -78654808, -121203440, -160942624, -128472672, -42519640, 7400229, -10142565,
+-38660076, -43189656, -60630444, -109811040, -134682128, -88345328, -12016782, 23361400, 10660109, -5608154,
+-2326799, 3198677, -12473122, -53285512, -96956200, -102666360, -49961744, 22169548, 46085536, 5877663,
+-44782552, -56557740, -41253160, -36235028, -45420888, -45099304, -27812598, -9433359, -1260036, },
{
60774324,
-59729572, 33552284, -19560892, -61997316, -58416924, -16454020, 26468810, 43690556, 34408592, 9218610,
--21484500, -43571368, -38717520, -2093797, 40014064, 45883136, 4796405, -39861056, -32189170, 31201864,
-94976224, 107137424, 69399152, 19405200, -16790100, -39045548, -54413476, -64906084, -71736152, -77391016,
--81401976, -81075024, -76618456, -71176200, -67105104, -65755948, -68925632, -77089296, -87613040, -97186520,
--104786464, -110843440, -115289808, -117946784, -119391504, -120165128, -119999776, -118380576, -114929568, -108963856,
--99642704, -86779280, -70805224, -51947628, -30181272, -5902359, 20093468, 47315508, 75696648, 105004968,
-134663328, 164189616, 193327216, 221575216, 247971008, 271514400, 291530048, 307443424, 318553952, 324301696,
-324525568, 319261568, 308642784, 293263040, 274253536, 252611728, 228828880, 203581984, 178318992, 154462064,
-132279624, 111285824, 91716344, 74807592, 61318712, 50438484, 40789304, 32231582, 25963078, 22846004,
-22310744, 23179402, 24956982, 27881854, 32162326, 37633040, 43853228, 50110996, 55558088, 59663540,
-62427348, 64029372, 64456184, 63435592, 60476896, 55152748, 47702056, 39153460, 30481382, 21861384,
-13050258, 4080756, -4772246, -13239774, -20906828, -27201102, -31792422, -34639448, -35629976, -34651796,
--31963684, -27963458, -22743462, -16363825, -9285182, -2051921, 5099737, 11960410, 18188112, 23685670,
-28553480, 32546188, 35286376, 37026376, 38472708, 40037148, 41990820, 44889924, 48940616, 53439056,
-57652420, 61640832, 65580928, 69140384, 72131832, 74825312, 77170896, 78721920, 79533128, 80082352,
-80360984, 80159120, 79882096, 79979272, 80138184, 80043160, 80053360, 80276696, 80137648, 79536352,
-79057464, 78639240, 77597176, 76030048, 74532712, 72858216, 70625368, 68576672, 67376760, 66365296,
-65076272, 64294588, 64252712, 63928440, 63068372, 62334472, 61069068, 57945552, 53580252, 49213344,
-43928924, 36705328, 29108604, 22355304, 14842333, 5965710, -1968706, -8492761, -15931644, -23791434,
--29415158, -34534760, -42116448, -48639968, -50829328, -54961084, -65088080, -71225592, -67966248, -70453032,
--86594592, -93825168, -79387640, -78654808, -121203440, -160942624, -128472672, -42519640, 7400229, -10142565,
--38660076, -43189656, -60630444, -109811040, -134682128, -88345328, -12016782, 23361400, 10660109, -5608154,
--2326799, 3198677, -12473122, -53285512, -96956200, -102666360, -49961744, 22169548, 46085536, 5877663,
--44782552, -56557740, -41253160, -36235028, -45420888, -45099304, -27812598, -9433359, -1260036, },
+59729572, 33552284, -19560892, -61997316, -58416924, -16454020, 26468810, 43690556, 34408592, 9218610,
+-21484500, -43571368, -38717520, -2093797, 40014064, 45883136, 4796405, -39861056, -32189170, 31201864,
+94976224, 107137424, 69399152, 19405200, -16790100, -39045548, -54413476, -64906084, -71736152, -77391016,
+-81401976, -81075024, -76618456, -71176200, -67105104, -65755948, -68925632, -77089296, -87613040, -97186520,
+-104786464, -110843440, -115289808, -117946784, -119391504, -120165128, -119999776, -118380576, -114929568, -108963856,
+-99642704, -86779280, -70805224, -51947628, -30181272, -5902359, 20093468, 47315508, 75696648, 105004968,
+134663328, 164189616, 193327216, 221575216, 247971008, 271514400, 291530048, 307443424, 318553952, 324301696,
+324525568, 319261568, 308642784, 293263040, 274253536, 252611728, 228828880, 203581984, 178318992, 154462064,
+132279624, 111285824, 91716344, 74807592, 61318712, 50438484, 40789304, 32231582, 25963078, 22846004,
+22310744, 23179402, 24956982, 27881854, 32162326, 37633040, 43853228, 50110996, 55558088, 59663540,
+62427348, 64029372, 64456184, 63435592, 60476896, 55152748, 47702056, 39153460, 30481382, 21861384,
+13050258, 4080756, -4772246, -13239774, -20906828, -27201102, -31792422, -34639448, -35629976, -34651796,
+-31963684, -27963458, -22743462, -16363825, -9285182, -2051921, 5099737, 11960410, 18188112, 23685670,
+28553480, 32546188, 35286376, 37026376, 38472708, 40037148, 41990820, 44889924, 48940616, 53439056,
+57652420, 61640832, 65580928, 69140384, 72131832, 74825312, 77170896, 78721920, 79533128, 80082352,
+80360984, 80159120, 79882096, 79979272, 80138184, 80043160, 80053360, 80276696, 80137648, 79536352,
+79057464, 78639240, 77597176, 76030048, 74532712, 72858216, 70625368, 68576672, 67376760, 66365296,
+65076272, 64294588, 64252712, 63928440, 63068372, 62334472, 61069068, 57945552, 53580252, 49213344,
+43928924, 36705328, 29108604, 22355304, 14842333, 5965710, -1968706, -8492761, -15931644, -23791434,
+-29415158, -34534760, -42116448, -48639968, -50829328, -54961084, -65088080, -71225592, -67966248, -70453032,
+-86594592, -93825168, -79387640, -78654808, -121203440, -160942624, -128472672, -42519640, 7400229, -10142565,
+-38660076, -43189656, -60630444, -109811040, -134682128, -88345328, -12016782, 23361400, 10660109, -5608154,
+-2326799, 3198677, -12473122, -53285512, -96956200, -102666360, -49961744, 22169548, 46085536, 5877663,
+-44782552, -56557740, -41253160, -36235028, -45420888, -45099304, -27812598, -9433359, -1260036, },
},
{
{
29020558,
-43026984, 51106352, 33877628, -3030100, -28343026, -17795124, 14452028, 29481730, 9083856, -28427314,
--59444496, -77127416, -71994392, -24524800, 51500952, 86269784, 25448754, -81479824, -116287312, -27297738,
-112266152, 196773920, 197985648, 157917360, 111005040, 55734716, -12725451, -82915952, -143763824, -196459856,
--243939104, -282670048, -308530592, -321597472, -323049184, -313426848, -294756640, -270353696, -242588880, -213100176,
--183778432, -155631904, -128221416, -101467528, -76332840, -53064320, -30685930, -8827232, 11590506, 29678224,
-45077292, 57243324, 65799436, 71648648, 76578728, 81806240, 87654912, 94220848, 101459472, 108883864,
-115894320, 122306712, 128216048, 133621264, 138539008, 143277424, 148222000, 153368992, 158288880, 162613904,
-166339248, 169426800, 171317120, 171284912, 169202928, 165378784, 159672384, 151565104, 141233024, 129656472,
-117366960, 103997800, 89535032, 75091064, 61760556, 49442052, 37490232, 25878252, 14907831, 4243428,
--6872485, -18598282, -30380988, -41854456, -53257596, -64815888, -76096616, -86220928, -94558536, -101078832,
--106015360, -109264504, -110227648, -108380280, -103932304, -97702992, -90310816, -81695648, -71516576, -59845000,
--47395500, -35190276, -23958402, -13630079, -3425773, 7343321, 18519898, 29235306, 38665980, 46534896,
-53135188, 59176060, 65425772, 72171016, 79077864, 85709296, 91984240, 98078800, 104238856, 110832168,
-118231856, 126450280, 135140608, 143966768, 152718304, 161164896, 169167488, 176834544, 184250336, 191181872,
-197286640, 202369200, 206265264, 208791776, 210006720, 210206432, 209600304, 208306448, 206575584, 204618144,
-202391200, 199920528, 197530912, 195447312, 193624112, 192247024, 191791232, 192336688, 193484512, 195080096,
-197244224, 199711680, 201983184, 204049600, 206191184, 208402544, 210732576, 213604288, 217094496, 220677568,
-224179040, 227969888, 231921792, 235477488, 238799104, 242353728, 245612544, 247775056, 249122592, 250004672,
-249646048, 247669824, 245118080, 242424064, 238654160, 233954384, 229781824, 225996352, 221350800, 216711696,
-213395984, 209736672, 204569296, 200872944, 199637600, 195925664, 188862064, 186209376, 188915744, 185078736,
-173190800, 171437376, 182817424, 176767440, 138999104, 113357072, 146674208, 211644720, 240775872, 224184944,
-209917056, 212717920, 196212896, 156345392, 147491328, 196417440, 253637152, 267065360, 251954592, 249604176,
-261806704, 266423264, 260329248, 246459184, 209993296, 149151872, 105053824, 118057912, 168719200, 200982992,
-195907424, 185727808, 196233296, 211471312, 207507584, 194690336, 204803376, 245127200, 283631584, },
+43026984, 51106352, 33877628, -3030100, -28343026, -17795124, 14452028, 29481730, 9083856, -28427314,
+-59444496, -77127416, -71994392, -24524800, 51500952, 86269784, 25448754, -81479824, -116287312, -27297738,
+112266152, 196773920, 197985648, 157917360, 111005040, 55734716, -12725451, -82915952, -143763824, -196459856,
+-243939104, -282670048, -308530592, -321597472, -323049184, -313426848, -294756640, -270353696, -242588880, -213100176,
+-183778432, -155631904, -128221416, -101467528, -76332840, -53064320, -30685930, -8827232, 11590506, 29678224,
+45077292, 57243324, 65799436, 71648648, 76578728, 81806240, 87654912, 94220848, 101459472, 108883864,
+115894320, 122306712, 128216048, 133621264, 138539008, 143277424, 148222000, 153368992, 158288880, 162613904,
+166339248, 169426800, 171317120, 171284912, 169202928, 165378784, 159672384, 151565104, 141233024, 129656472,
+117366960, 103997800, 89535032, 75091064, 61760556, 49442052, 37490232, 25878252, 14907831, 4243428,
+-6872485, -18598282, -30380988, -41854456, -53257596, -64815888, -76096616, -86220928, -94558536, -101078832,
+-106015360, -109264504, -110227648, -108380280, -103932304, -97702992, -90310816, -81695648, -71516576, -59845000,
+-47395500, -35190276, -23958402, -13630079, -3425773, 7343321, 18519898, 29235306, 38665980, 46534896,
+53135188, 59176060, 65425772, 72171016, 79077864, 85709296, 91984240, 98078800, 104238856, 110832168,
+118231856, 126450280, 135140608, 143966768, 152718304, 161164896, 169167488, 176834544, 184250336, 191181872,
+197286640, 202369200, 206265264, 208791776, 210006720, 210206432, 209600304, 208306448, 206575584, 204618144,
+202391200, 199920528, 197530912, 195447312, 193624112, 192247024, 191791232, 192336688, 193484512, 195080096,
+197244224, 199711680, 201983184, 204049600, 206191184, 208402544, 210732576, 213604288, 217094496, 220677568,
+224179040, 227969888, 231921792, 235477488, 238799104, 242353728, 245612544, 247775056, 249122592, 250004672,
+249646048, 247669824, 245118080, 242424064, 238654160, 233954384, 229781824, 225996352, 221350800, 216711696,
+213395984, 209736672, 204569296, 200872944, 199637600, 195925664, 188862064, 186209376, 188915744, 185078736,
+173190800, 171437376, 182817424, 176767440, 138999104, 113357072, 146674208, 211644720, 240775872, 224184944,
+209917056, 212717920, 196212896, 156345392, 147491328, 196417440, 253637152, 267065360, 251954592, 249604176,
+261806704, 266423264, 260329248, 246459184, 209993296, 149151872, 105053824, 118057912, 168719200, 200982992,
+195907424, 185727808, 196233296, 211471312, 207507584, 194690336, 204803376, 245127200, 283631584, },
{
29020558,
-43026984, 51106352, 33877628, -3030100, -28343026, -17795124, 14452028, 29481730, 9083856, -28427314,
--59444496, -77127416, -71994392, -24524800, 51500952, 86269784, 25448754, -81479824, -116287312, -27297738,
-112266152, 196773920, 197985648, 157917360, 111005040, 55734716, -12725451, -82915952, -143763824, -196459856,
--243939104, -282670048, -308530592, -321597472, -323049184, -313426848, -294756640, -270353696, -242588880, -213100176,
--183778432, -155631904, -128221416, -101467528, -76332840, -53064320, -30685930, -8827232, 11590506, 29678224,
-45077292, 57243324, 65799436, 71648648, 76578728, 81806240, 87654912, 94220848, 101459472, 108883864,
-115894320, 122306712, 128216048, 133621264, 138539008, 143277424, 148222000, 153368992, 158288880, 162613904,
-166339248, 169426800, 171317120, 171284912, 169202928, 165378784, 159672384, 151565104, 141233024, 129656472,
-117366960, 103997800, 89535032, 75091064, 61760556, 49442052, 37490232, 25878252, 14907831, 4243428,
--6872485, -18598282, -30380988, -41854456, -53257596, -64815888, -76096616, -86220928, -94558536, -101078832,
--106015360, -109264504, -110227648, -108380280, -103932304, -97702992, -90310816, -81695648, -71516576, -59845000,
--47395500, -35190276, -23958402, -13630079, -3425773, 7343321, 18519898, 29235306, 38665980, 46534896,
-53135188, 59176060, 65425772, 72171016, 79077864, 85709296, 91984240, 98078800, 104238856, 110832168,
-118231856, 126450280, 135140608, 143966768, 152718304, 161164896, 169167488, 176834544, 184250336, 191181872,
-197286640, 202369200, 206265264, 208791776, 210006720, 210206432, 209600304, 208306448, 206575584, 204618144,
-202391200, 199920528, 197530912, 195447312, 193624112, 192247024, 191791232, 192336688, 193484512, 195080096,
-197244224, 199711680, 201983184, 204049600, 206191184, 208402544, 210732576, 213604288, 217094496, 220677568,
-224179040, 227969888, 231921792, 235477488, 238799104, 242353728, 245612544, 247775056, 249122592, 250004672,
-249646048, 247669824, 245118080, 242424064, 238654160, 233954384, 229781824, 225996352, 221350800, 216711696,
-213395984, 209736672, 204569296, 200872944, 199637600, 195925664, 188862064, 186209376, 188915744, 185078736,
-173190800, 171437376, 182817424, 176767440, 138999104, 113357072, 146674208, 211644720, 240775872, 224184944,
-209917056, 212717920, 196212896, 156345392, 147491328, 196417440, 253637152, 267065360, 251954592, 249604176,
-261806704, 266423264, 260329248, 246459184, 209993296, 149151872, 105053824, 118057912, 168719200, 200982992,
-195907424, 185727808, 196233296, 211471312, 207507584, 194690336, 204803376, 245127200, 283631584, },
+43026984, 51106352, 33877628, -3030100, -28343026, -17795124, 14452028, 29481730, 9083856, -28427314,
+-59444496, -77127416, -71994392, -24524800, 51500952, 86269784, 25448754, -81479824, -116287312, -27297738,
+112266152, 196773920, 197985648, 157917360, 111005040, 55734716, -12725451, -82915952, -143763824, -196459856,
+-243939104, -282670048, -308530592, -321597472, -323049184, -313426848, -294756640, -270353696, -242588880, -213100176,
+-183778432, -155631904, -128221416, -101467528, -76332840, -53064320, -30685930, -8827232, 11590506, 29678224,
+45077292, 57243324, 65799436, 71648648, 76578728, 81806240, 87654912, 94220848, 101459472, 108883864,
+115894320, 122306712, 128216048, 133621264, 138539008, 143277424, 148222000, 153368992, 158288880, 162613904,
+166339248, 169426800, 171317120, 171284912, 169202928, 165378784, 159672384, 151565104, 141233024, 129656472,
+117366960, 103997800, 89535032, 75091064, 61760556, 49442052, 37490232, 25878252, 14907831, 4243428,
+-6872485, -18598282, -30380988, -41854456, -53257596, -64815888, -76096616, -86220928, -94558536, -101078832,
+-106015360, -109264504, -110227648, -108380280, -103932304, -97702992, -90310816, -81695648, -71516576, -59845000,
+-47395500, -35190276, -23958402, -13630079, -3425773, 7343321, 18519898, 29235306, 38665980, 46534896,
+53135188, 59176060, 65425772, 72171016, 79077864, 85709296, 91984240, 98078800, 104238856, 110832168,
+118231856, 126450280, 135140608, 143966768, 152718304, 161164896, 169167488, 176834544, 184250336, 191181872,
+197286640, 202369200, 206265264, 208791776, 210006720, 210206432, 209600304, 208306448, 206575584, 204618144,
+202391200, 199920528, 197530912, 195447312, 193624112, 192247024, 191791232, 192336688, 193484512, 195080096,
+197244224, 199711680, 201983184, 204049600, 206191184, 208402544, 210732576, 213604288, 217094496, 220677568,
+224179040, 227969888, 231921792, 235477488, 238799104, 242353728, 245612544, 247775056, 249122592, 250004672,
+249646048, 247669824, 245118080, 242424064, 238654160, 233954384, 229781824, 225996352, 221350800, 216711696,
+213395984, 209736672, 204569296, 200872944, 199637600, 195925664, 188862064, 186209376, 188915744, 185078736,
+173190800, 171437376, 182817424, 176767440, 138999104, 113357072, 146674208, 211644720, 240775872, 224184944,
+209917056, 212717920, 196212896, 156345392, 147491328, 196417440, 253637152, 267065360, 251954592, 249604176,
+261806704, 266423264, 260329248, 246459184, 209993296, 149151872, 105053824, 118057912, 168719200, 200982992,
+195907424, 185727808, 196233296, 211471312, 207507584, 194690336, 204803376, 245127200, 283631584, },
},
{
{
9651865,
-3961034, 1835025, 9908490, 22075596, 26681948, 24311662, 28811714, 45453640, 56586732, 36004172,
--25028386, -102528384, -142361520, -93304408, 31549220, 131521560, 101836896, -42115912, -161706048, -141696880,
--8993125, 120542016, 177131968, 177010640, 155108992, 116447840, 57876296, -6760816, -61629560, -106419088,
--146315584, -179404544, -202494816, -218007712, -228075648, -229450576, -219002528, -198989600, -174288160, -148494736,
--124015032, -102447856, -83734680, -66888212, -51527796, -37416144, -23551454, -9249212, 4811974, 17686676,
-29273960, 39620000, 48319456, 55328844, 61418032, 67337032, 73311336, 79517560, 86243480, 93488016,
-101055208, 108991776, 117364280, 125814088, 133909024, 141755936, 149705920, 157633360, 165047008, 171803520,
-178155248, 184033440, 188793344, 191877120, 193336880, 193314864, 191339712, 186779008, 179929072, 171889424,
-163159360, 153135456, 141469776, 129112088, 117172080, 105288440, 92156040, 77496240, 62520228, 48381196,
-35046932, 22009024, 9437654, -1845225, -11237782, -18853832, -25243134, -30777736, -35313220, -38456064,
--40142912, -40800580, -40957880, -41000832, -41336376, -42368240, -44060460, -45845016, -47209208, -48200808,
--49257908, -50800336, -52993452, -55553256, -57713624, -58755688, -58689656, -58201640, -57996016, -58389008,
--59332288, -60458108, -61217780, -61281668, -60723320, -59672664, -58015880, -55542516, -52076480, -47392816,
--41369124, -34298000, -26756572, -19200652, -11957726, -5417565, 163746, 4829154, 8558259, 11005317,
-11884711, 11284490, 9393093, 6365142, 2624225, -1176284, -4648229, -7708930, -10205916, -11959336,
--13013751, -13386876, -12816182, -11110544, -8341900, -4396436, 1074816, 8005819, 15867757, 24364276,
-33447058, 42705932, 51593296, 60073708, 68262064, 75834088, 82568064, 88848912, 94926832, 100491496,
-105538624, 110612584, 115818088, 120789512, 125676112, 130783904, 135540576, 139341088, 142721232, 146152912,
-148914032, 150690000, 152522336, 154741232, 156256816, 156975680, 158030096, 159093104, 159020624, 158774208,
-159527440, 159551056, 157928624, 157767568, 159824864, 159133904, 155159456, 155541168, 160509376, 158103120,
-147591712, 146963584, 157603296, 148436752, 107092864, 79350592, 112127640, 177940496, 209333488, 194080976,
-176679392, 173700288, 156176816, 122001768, 116535888, 159170944, 207145200, 219210304, 207884464, 203208864,
-206750592, 205597408, 194819712, 166498160, 114397528, 67672040, 78230680, 150149904, 219664496, 232825344,
-209000080, 198397968, 209876256, 217262528, 211632896, 205857248, 200630800, 185133488, 166889008, },
+3961034, 1835025, 9908490, 22075596, 26681948, 24311662, 28811714, 45453640, 56586732, 36004172,
+-25028386, -102528384, -142361520, -93304408, 31549220, 131521560, 101836896, -42115912, -161706048, -141696880,
+-8993125, 120542016, 177131968, 177010640, 155108992, 116447840, 57876296, -6760816, -61629560, -106419088,
+-146315584, -179404544, -202494816, -218007712, -228075648, -229450576, -219002528, -198989600, -174288160, -148494736,
+-124015032, -102447856, -83734680, -66888212, -51527796, -37416144, -23551454, -9249212, 4811974, 17686676,
+29273960, 39620000, 48319456, 55328844, 61418032, 67337032, 73311336, 79517560, 86243480, 93488016,
+101055208, 108991776, 117364280, 125814088, 133909024, 141755936, 149705920, 157633360, 165047008, 171803520,
+178155248, 184033440, 188793344, 191877120, 193336880, 193314864, 191339712, 186779008, 179929072, 171889424,
+163159360, 153135456, 141469776, 129112088, 117172080, 105288440, 92156040, 77496240, 62520228, 48381196,
+35046932, 22009024, 9437654, -1845225, -11237782, -18853832, -25243134, -30777736, -35313220, -38456064,
+-40142912, -40800580, -40957880, -41000832, -41336376, -42368240, -44060460, -45845016, -47209208, -48200808,
+-49257908, -50800336, -52993452, -55553256, -57713624, -58755688, -58689656, -58201640, -57996016, -58389008,
+-59332288, -60458108, -61217780, -61281668, -60723320, -59672664, -58015880, -55542516, -52076480, -47392816,
+-41369124, -34298000, -26756572, -19200652, -11957726, -5417565, 163746, 4829154, 8558259, 11005317,
+11884711, 11284490, 9393093, 6365142, 2624225, -1176284, -4648229, -7708930, -10205916, -11959336,
+-13013751, -13386876, -12816182, -11110544, -8341900, -4396436, 1074816, 8005819, 15867757, 24364276,
+33447058, 42705932, 51593296, 60073708, 68262064, 75834088, 82568064, 88848912, 94926832, 100491496,
+105538624, 110612584, 115818088, 120789512, 125676112, 130783904, 135540576, 139341088, 142721232, 146152912,
+148914032, 150690000, 152522336, 154741232, 156256816, 156975680, 158030096, 159093104, 159020624, 158774208,
+159527440, 159551056, 157928624, 157767568, 159824864, 159133904, 155159456, 155541168, 160509376, 158103120,
+147591712, 146963584, 157603296, 148436752, 107092864, 79350592, 112127640, 177940496, 209333488, 194080976,
+176679392, 173700288, 156176816, 122001768, 116535888, 159170944, 207145200, 219210304, 207884464, 203208864,
+206750592, 205597408, 194819712, 166498160, 114397528, 67672040, 78230680, 150149904, 219664496, 232825344,
+209000080, 198397968, 209876256, 217262528, 211632896, 205857248, 200630800, 185133488, 166889008, },
{
-9651865,
--3961034, -1835025, -9908490, -22075596, -26681948, -24311662, -28811714, -45453640, -56586732, -36004172,
-25028386, 102528384, 142361520, 93304408, -31549220, -131521560, -101836896, 42115912, 161706048, 141696880,
-8993125, -120542016, -177131968, -177010640, -155108992, -116447840, -57876296, 6760816, 61629560, 106419088,
-146315584, 179404544, 202494816, 218007712, 228075648, 229450576, 219002528, 198989600, 174288160, 148494736,
-124015032, 102447856, 83734680, 66888212, 51527796, 37416144, 23551454, 9249212, -4811974, -17686676,
--29273960, -39620000, -48319456, -55328844, -61418032, -67337032, -73311336, -79517560, -86243480, -93488016,
--101055208, -108991776, -117364280, -125814088, -133909024, -141755936, -149705920, -157633360, -165047008, -171803520,
--178155248, -184033440, -188793344, -191877120, -193336880, -193314864, -191339712, -186779008, -179929072, -171889424,
--163159360, -153135456, -141469776, -129112088, -117172080, -105288440, -92156040, -77496240, -62520228, -48381196,
--35046932, -22009024, -9437654, 1845225, 11237782, 18853832, 25243134, 30777736, 35313220, 38456064,
-40142912, 40800580, 40957880, 41000832, 41336376, 42368240, 44060460, 45845016, 47209208, 48200808,
-49257908, 50800336, 52993452, 55553256, 57713624, 58755688, 58689656, 58201640, 57996016, 58389008,
-59332288, 60458108, 61217780, 61281668, 60723320, 59672664, 58015880, 55542516, 52076480, 47392816,
-41369124, 34298000, 26756572, 19200652, 11957726, 5417565, -163746, -4829154, -8558259, -11005317,
--11884711, -11284490, -9393093, -6365142, -2624225, 1176284, 4648229, 7708930, 10205916, 11959336,
-13013751, 13386876, 12816182, 11110544, 8341900, 4396436, -1074816, -8005819, -15867757, -24364276,
--33447058, -42705932, -51593296, -60073708, -68262064, -75834088, -82568064, -88848912, -94926832, -100491496,
--105538624, -110612584, -115818088, -120789512, -125676112, -130783904, -135540576, -139341088, -142721232, -146152912,
--148914032, -150690000, -152522336, -154741232, -156256816, -156975680, -158030096, -159093104, -159020624, -158774208,
--159527440, -159551056, -157928624, -157767568, -159824864, -159133904, -155159456, -155541168, -160509376, -158103120,
--147591712, -146963584, -157603296, -148436752, -107092864, -79350592, -112127640, -177940496, -209333488, -194080976,
--176679392, -173700288, -156176816, -122001768, -116535888, -159170944, -207145200, -219210304, -207884464, -203208864,
--206750592, -205597408, -194819712, -166498160, -114397528, -67672040, -78230680, -150149904, -219664496, -232825344,
--209000080, -198397968, -209876256, -217262528, -211632896, -205857248, -200630800, -185133488, -166889008, },
+-3961034, -1835025, -9908490, -22075596, -26681948, -24311662, -28811714, -45453640, -56586732, -36004172,
+25028386, 102528384, 142361520, 93304408, -31549220, -131521560, -101836896, 42115912, 161706048, 141696880,
+8993125, -120542016, -177131968, -177010640, -155108992, -116447840, -57876296, 6760816, 61629560, 106419088,
+146315584, 179404544, 202494816, 218007712, 228075648, 229450576, 219002528, 198989600, 174288160, 148494736,
+124015032, 102447856, 83734680, 66888212, 51527796, 37416144, 23551454, 9249212, -4811974, -17686676,
+-29273960, -39620000, -48319456, -55328844, -61418032, -67337032, -73311336, -79517560, -86243480, -93488016,
+-101055208, -108991776, -117364280, -125814088, -133909024, -141755936, -149705920, -157633360, -165047008, -171803520,
+-178155248, -184033440, -188793344, -191877120, -193336880, -193314864, -191339712, -186779008, -179929072, -171889424,
+-163159360, -153135456, -141469776, -129112088, -117172080, -105288440, -92156040, -77496240, -62520228, -48381196,
+-35046932, -22009024, -9437654, 1845225, 11237782, 18853832, 25243134, 30777736, 35313220, 38456064,
+40142912, 40800580, 40957880, 41000832, 41336376, 42368240, 44060460, 45845016, 47209208, 48200808,
+49257908, 50800336, 52993452, 55553256, 57713624, 58755688, 58689656, 58201640, 57996016, 58389008,
+59332288, 60458108, 61217780, 61281668, 60723320, 59672664, 58015880, 55542516, 52076480, 47392816,
+41369124, 34298000, 26756572, 19200652, 11957726, 5417565, -163746, -4829154, -8558259, -11005317,
+-11884711, -11284490, -9393093, -6365142, -2624225, 1176284, 4648229, 7708930, 10205916, 11959336,
+13013751, 13386876, 12816182, 11110544, 8341900, 4396436, -1074816, -8005819, -15867757, -24364276,
+-33447058, -42705932, -51593296, -60073708, -68262064, -75834088, -82568064, -88848912, -94926832, -100491496,
+-105538624, -110612584, -115818088, -120789512, -125676112, -130783904, -135540576, -139341088, -142721232, -146152912,
+-148914032, -150690000, -152522336, -154741232, -156256816, -156975680, -158030096, -159093104, -159020624, -158774208,
+-159527440, -159551056, -157928624, -157767568, -159824864, -159133904, -155159456, -155541168, -160509376, -158103120,
+-147591712, -146963584, -157603296, -148436752, -107092864, -79350592, -112127640, -177940496, -209333488, -194080976,
+-176679392, -173700288, -156176816, -122001768, -116535888, -159170944, -207145200, -219210304, -207884464, -203208864,
+-206750592, -205597408, -194819712, -166498160, -114397528, -67672040, -78230680, -150149904, -219664496, -232825344,
+-209000080, -198397968, -209876256, -217262528, -211632896, -205857248, -200630800, -185133488, -166889008, },
},
{
{
14787572,
--9309878, -12623446, 14235132, 21446382, -18530636, -51859584, -11151883, 81569480, 130340448, 80423800,
--23640036, -97234840, -95277408, -29990682, 48718352, 78334832, 28942174, -55041616, -87754232, -36443336,
-41908680, 74315816, 52690120, 19752018, 3755949, 63888, 1271847, 11577621, 32096290, 54330264,
-71073656, 81520088, 85850488, 83865144, 77858632, 70140576, 59209884, 42861088, 22803056, 2893734,
--14632417, -28780576, -38480224, -43919800, -47207596, -50281720, -53584012, -57026428, -60498372, -63314260,
--64689188, -64704220, -63640140, -60756608, -54784456, -45235668, -32409824, -16589848, 2012192, 22822920,
-44995688, 67856728, 91011968, 114083992, 136437696, 157193648, 175502032, 190672384, 201933792, 208334368,
-209109616, 203979808, 193023344, 176628912, 155657136, 131174208, 103956464, 74747464, 44881336, 15788300,
--12182675, -39564700, -66217120, -90894928, -112714976, -132169032, -150156896, -166723120, -181363040, -194027824,
--205038512, -214222224, -220860640, -224489344, -225158288, -222805728, -216964560, -207381952, -194514768, -179062560,
--161272800, -141016656, -118520160, -94934880, -72164576, -51830056, -34111168, -17818746, -1939715, 13076565,
-25801480, 35229468, 41436232, 45314052, 48045652, 50455664, 52508124, 53684944, 53906136, 53718768,
-53710712, 54243828, 55603720, 57789320, 60308856, 62680752, 64859376, 66787280, 68006512, 68133216,
-67199056, 65231428, 62128848, 58126476, 53721988, 49094696, 44256952, 39577588, 35408784, 31518618,
-27623082, 23968064, 20742544, 17588428, 14274324, 11059541, 7991324, 4777614, 1561758, -1203665,
--3655017, -6198175, -8592619, -10442676, -12040404, -13614509, -14581951, -14561550, -14057428, -13307419,
--11811697, -9615895, -7500624, -5536213, -3138547, -507343, 1806034, 4284767, 7539278, 10920491,
-13808857, 16869020, 20430086, 23504208, 25693032, 27695022, 29115046, 28652264, 26727582, 24683178,
-21885006, 17188460, 11892228, 7428146, 2467996, -3930432, -9811316, -14376329, -19734300, -25883084,
--30247844, -33807300, -39536248, -44918916, -46400680, -48712444, -56388088, -61736932, -58746564, -59299540,
--72151152, -79747344, -68556264, -65434900, -97560184, -129828272, -101897560, -25092810, 23052700, 8773544,
--21001854, -28310276, -39726300, -79001088, -107210976, -78245712, -12508019, 30356292, 27078158, 3529390,
--11720966, -20394652, -47575352, -109237664, -177698896, -189935808, -117179592, -17255032, 19667192, -23667418,
--79005920, -87648472, -65023120, -56499220, -69431368, -77732464, -69026568, -55698208, -49138720, },
+-9309878, -12623446, 14235132, 21446382, -18530636, -51859584, -11151883, 81569480, 130340448, 80423800,
+-23640036, -97234840, -95277408, -29990682, 48718352, 78334832, 28942174, -55041616, -87754232, -36443336,
+41908680, 74315816, 52690120, 19752018, 3755949, 63888, 1271847, 11577621, 32096290, 54330264,
+71073656, 81520088, 85850488, 83865144, 77858632, 70140576, 59209884, 42861088, 22803056, 2893734,
+-14632417, -28780576, -38480224, -43919800, -47207596, -50281720, -53584012, -57026428, -60498372, -63314260,
+-64689188, -64704220, -63640140, -60756608, -54784456, -45235668, -32409824, -16589848, 2012192, 22822920,
+44995688, 67856728, 91011968, 114083992, 136437696, 157193648, 175502032, 190672384, 201933792, 208334368,
+209109616, 203979808, 193023344, 176628912, 155657136, 131174208, 103956464, 74747464, 44881336, 15788300,
+-12182675, -39564700, -66217120, -90894928, -112714976, -132169032, -150156896, -166723120, -181363040, -194027824,
+-205038512, -214222224, -220860640, -224489344, -225158288, -222805728, -216964560, -207381952, -194514768, -179062560,
+-161272800, -141016656, -118520160, -94934880, -72164576, -51830056, -34111168, -17818746, -1939715, 13076565,
+25801480, 35229468, 41436232, 45314052, 48045652, 50455664, 52508124, 53684944, 53906136, 53718768,
+53710712, 54243828, 55603720, 57789320, 60308856, 62680752, 64859376, 66787280, 68006512, 68133216,
+67199056, 65231428, 62128848, 58126476, 53721988, 49094696, 44256952, 39577588, 35408784, 31518618,
+27623082, 23968064, 20742544, 17588428, 14274324, 11059541, 7991324, 4777614, 1561758, -1203665,
+-3655017, -6198175, -8592619, -10442676, -12040404, -13614509, -14581951, -14561550, -14057428, -13307419,
+-11811697, -9615895, -7500624, -5536213, -3138547, -507343, 1806034, 4284767, 7539278, 10920491,
+13808857, 16869020, 20430086, 23504208, 25693032, 27695022, 29115046, 28652264, 26727582, 24683178,
+21885006, 17188460, 11892228, 7428146, 2467996, -3930432, -9811316, -14376329, -19734300, -25883084,
+-30247844, -33807300, -39536248, -44918916, -46400680, -48712444, -56388088, -61736932, -58746564, -59299540,
+-72151152, -79747344, -68556264, -65434900, -97560184, -129828272, -101897560, -25092810, 23052700, 8773544,
+-21001854, -28310276, -39726300, -79001088, -107210976, -78245712, -12508019, 30356292, 27078158, 3529390,
+-11720966, -20394652, -47575352, -109237664, -177698896, -189935808, -117179592, -17255032, 19667192, -23667418,
+-79005920, -87648472, -65023120, -56499220, -69431368, -77732464, -69026568, -55698208, -49138720, },
{
-14787572,
-9309878, 12623446, -14235132, -21446382, 18530636, 51859584, 11151883, -81569480, -130340448, -80423800,
-23640036, 97234840, 95277408, 29990682, -48718352, -78334832, -28942174, 55041616, 87754232, 36443336,
--41908680, -74315816, -52690120, -19752018, -3755949, -63888, -1271847, -11577621, -32096290, -54330264,
--71073656, -81520088, -85850488, -83865144, -77858632, -70140576, -59209884, -42861088, -22803056, -2893734,
-14632417, 28780576, 38480224, 43919800, 47207596, 50281720, 53584012, 57026428, 60498372, 63314260,
-64689188, 64704220, 63640140, 60756608, 54784456, 45235668, 32409824, 16589848, -2012192, -22822920,
--44995688, -67856728, -91011968, -114083992, -136437696, -157193648, -175502032, -190672384, -201933792, -208334368,
--209109616, -203979808, -193023344, -176628912, -155657136, -131174208, -103956464, -74747464, -44881336, -15788300,
-12182675, 39564700, 66217120, 90894928, 112714976, 132169032, 150156896, 166723120, 181363040, 194027824,
-205038512, 214222224, 220860640, 224489344, 225158288, 222805728, 216964560, 207381952, 194514768, 179062560,
-161272800, 141016656, 118520160, 94934880, 72164576, 51830056, 34111168, 17818746, 1939715, -13076565,
--25801480, -35229468, -41436232, -45314052, -48045652, -50455664, -52508124, -53684944, -53906136, -53718768,
--53710712, -54243828, -55603720, -57789320, -60308856, -62680752, -64859376, -66787280, -68006512, -68133216,
--67199056, -65231428, -62128848, -58126476, -53721988, -49094696, -44256952, -39577588, -35408784, -31518618,
--27623082, -23968064, -20742544, -17588428, -14274324, -11059541, -7991324, -4777614, -1561758, 1203665,
-3655017, 6198175, 8592619, 10442676, 12040404, 13614509, 14581951, 14561550, 14057428, 13307419,
-11811697, 9615895, 7500624, 5536213, 3138547, 507343, -1806034, -4284767, -7539278, -10920491,
--13808857, -16869020, -20430086, -23504208, -25693032, -27695022, -29115046, -28652264, -26727582, -24683178,
--21885006, -17188460, -11892228, -7428146, -2467996, 3930432, 9811316, 14376329, 19734300, 25883084,
-30247844, 33807300, 39536248, 44918916, 46400680, 48712444, 56388088, 61736932, 58746564, 59299540,
-72151152, 79747344, 68556264, 65434900, 97560184, 129828272, 101897560, 25092810, -23052700, -8773544,
-21001854, 28310276, 39726300, 79001088, 107210976, 78245712, 12508019, -30356292, -27078158, -3529390,
-11720966, 20394652, 47575352, 109237664, 177698896, 189935808, 117179592, 17255032, -19667192, 23667418,
-79005920, 87648472, 65023120, 56499220, 69431368, 77732464, 69026568, 55698208, 49138720, },
+9309878, 12623446, -14235132, -21446382, 18530636, 51859584, 11151883, -81569480, -130340448, -80423800,
+23640036, 97234840, 95277408, 29990682, -48718352, -78334832, -28942174, 55041616, 87754232, 36443336,
+-41908680, -74315816, -52690120, -19752018, -3755949, -63888, -1271847, -11577621, -32096290, -54330264,
+-71073656, -81520088, -85850488, -83865144, -77858632, -70140576, -59209884, -42861088, -22803056, -2893734,
+14632417, 28780576, 38480224, 43919800, 47207596, 50281720, 53584012, 57026428, 60498372, 63314260,
+64689188, 64704220, 63640140, 60756608, 54784456, 45235668, 32409824, 16589848, -2012192, -22822920,
+-44995688, -67856728, -91011968, -114083992, -136437696, -157193648, -175502032, -190672384, -201933792, -208334368,
+-209109616, -203979808, -193023344, -176628912, -155657136, -131174208, -103956464, -74747464, -44881336, -15788300,
+12182675, 39564700, 66217120, 90894928, 112714976, 132169032, 150156896, 166723120, 181363040, 194027824,
+205038512, 214222224, 220860640, 224489344, 225158288, 222805728, 216964560, 207381952, 194514768, 179062560,
+161272800, 141016656, 118520160, 94934880, 72164576, 51830056, 34111168, 17818746, 1939715, -13076565,
+-25801480, -35229468, -41436232, -45314052, -48045652, -50455664, -52508124, -53684944, -53906136, -53718768,
+-53710712, -54243828, -55603720, -57789320, -60308856, -62680752, -64859376, -66787280, -68006512, -68133216,
+-67199056, -65231428, -62128848, -58126476, -53721988, -49094696, -44256952, -39577588, -35408784, -31518618,
+-27623082, -23968064, -20742544, -17588428, -14274324, -11059541, -7991324, -4777614, -1561758, 1203665,
+3655017, 6198175, 8592619, 10442676, 12040404, 13614509, 14581951, 14561550, 14057428, 13307419,
+11811697, 9615895, 7500624, 5536213, 3138547, 507343, -1806034, -4284767, -7539278, -10920491,
+-13808857, -16869020, -20430086, -23504208, -25693032, -27695022, -29115046, -28652264, -26727582, -24683178,
+-21885006, -17188460, -11892228, -7428146, -2467996, 3930432, 9811316, 14376329, 19734300, 25883084,
+30247844, 33807300, 39536248, 44918916, 46400680, 48712444, 56388088, 61736932, 58746564, 59299540,
+72151152, 79747344, 68556264, 65434900, 97560184, 129828272, 101897560, 25092810, -23052700, -8773544,
+21001854, 28310276, 39726300, 79001088, 107210976, 78245712, 12508019, -30356292, -27078158, -3529390,
+11720966, 20394652, 47575352, 109237664, 177698896, 189935808, 117179592, 17255032, -19667192, 23667418,
+79005920, 87648472, 65023120, 56499220, 69431368, 77732464, 69026568, 55698208, 49138720, },
},
{
{
-6025302,
-1979443, -222265, -16834662, -30957588, -36381596, -51714092, -87899728, -120777704, -112181864, -43570832,
-77029168, 208089024, 261198432, 152920160, -75685912, -236769200, -175597056, 39822400, 187850064, 150632560,
-20638928, -58457728, -61116848, -46331960, -37755448, -13233331, 26470958, 49673444, 44979580, 32832878,
-29070486, 30021822, 31279710, 35779224, 43230456, 48567492, 50661288, 52303036, 53977000, 54458576,
-53994180, 52387328, 47992500, 41231148, 34854196, 29503204, 23281944, 15821586, 8548596, 1335735,
--7248831, -17124034, -27237072, -37695316, -48859548, -59795608, -69548408, -78358992, -86362664, -92807800,
--97305704, -100093136, -100751880, -98342936, -92724048, -84230752, -72535016, -57256208, -39036420, -18780282,
-3400540, 27492086, 52703544, 78053512, 103020160, 127148752, 149767664, 170279344, 188142112, 202759504,
-213930704, 221964976, 226878432, 228149200, 225644704, 219942592, 211418688, 199924288, 185485136, 168290240,
-147967536, 124031680, 97151088, 68976640, 40701796, 12624519, -14948634, -41031432, -64026152, -82104744,
--94056560, -100199976, -101970040, -100331512, -95142656, -86187648, -74119864, -60247116, -46028628, -32858648,
--21724482, -12905840, -6273874, -1771137, 579821, 753767, -1453846, -6287832, -13451838, -22012244,
--31038118, -40020504, -48729624, -57130580, -65436512, -73827264, -82161648, -90292024, -98483600, -107146016,
--116334560, -125821600, -135456288, -145181168, -154930208, -164768368, -174957104, -185680032, -196791648, -207871584,
--218379760, -227793248, -235789408, -242291984, -247272544, -250634960, -252407168, -252862448, -252302480, -250889440,
--248792960, -246312624, -243703968, -241036256, -238327200, -235674512, -233170016, -230821200, -228622720, -226595488,
--224694976, -222788000, -220744144, -218472096, -215921968, -213194128, -210591376, -208357456, -206404848, -204483936,
--202514688, -200500880, -198246032, -195491872, -192226096, -188531344, -184309936, -179491520, -174255408, -168694512,
--162626256, -156058704, -149355344, -142635856, -135690896, -128732520, -122365768, -116624472, -111073760, -105838728,
--101291432, -97019552, -92588224, -88589072, -85222352, -81268832, -76563696, -73123968, -71223976, -68003824,
--63351840, -61722440, -63362040, -61339648, -54596012, -54396296, -66872640, -79462264, -79236776, -73754256,
--75033080, -74489232, -59138480, -43898324, -56496536, -92272000, -115959288, -111137112, -97305168, -93654448,
--96820912, -100096360, -102982040, -95615096, -68264744, -44223668, -64519536, -126372968, -176200496, -181162800,
--167001744, -164430144, -164273376, -155705984, -159117808, -175705504, -151062592, -52396992, 49567680, },
+1979443, -222265, -16834662, -30957588, -36381596, -51714092, -87899728, -120777704, -112181864, -43570832,
+77029168, 208089024, 261198432, 152920160, -75685912, -236769200, -175597056, 39822400, 187850064, 150632560,
+20638928, -58457728, -61116848, -46331960, -37755448, -13233331, 26470958, 49673444, 44979580, 32832878,
+29070486, 30021822, 31279710, 35779224, 43230456, 48567492, 50661288, 52303036, 53977000, 54458576,
+53994180, 52387328, 47992500, 41231148, 34854196, 29503204, 23281944, 15821586, 8548596, 1335735,
+-7248831, -17124034, -27237072, -37695316, -48859548, -59795608, -69548408, -78358992, -86362664, -92807800,
+-97305704, -100093136, -100751880, -98342936, -92724048, -84230752, -72535016, -57256208, -39036420, -18780282,
+3400540, 27492086, 52703544, 78053512, 103020160, 127148752, 149767664, 170279344, 188142112, 202759504,
+213930704, 221964976, 226878432, 228149200, 225644704, 219942592, 211418688, 199924288, 185485136, 168290240,
+147967536, 124031680, 97151088, 68976640, 40701796, 12624519, -14948634, -41031432, -64026152, -82104744,
+-94056560, -100199976, -101970040, -100331512, -95142656, -86187648, -74119864, -60247116, -46028628, -32858648,
+-21724482, -12905840, -6273874, -1771137, 579821, 753767, -1453846, -6287832, -13451838, -22012244,
+-31038118, -40020504, -48729624, -57130580, -65436512, -73827264, -82161648, -90292024, -98483600, -107146016,
+-116334560, -125821600, -135456288, -145181168, -154930208, -164768368, -174957104, -185680032, -196791648, -207871584,
+-218379760, -227793248, -235789408, -242291984, -247272544, -250634960, -252407168, -252862448, -252302480, -250889440,
+-248792960, -246312624, -243703968, -241036256, -238327200, -235674512, -233170016, -230821200, -228622720, -226595488,
+-224694976, -222788000, -220744144, -218472096, -215921968, -213194128, -210591376, -208357456, -206404848, -204483936,
+-202514688, -200500880, -198246032, -195491872, -192226096, -188531344, -184309936, -179491520, -174255408, -168694512,
+-162626256, -156058704, -149355344, -142635856, -135690896, -128732520, -122365768, -116624472, -111073760, -105838728,
+-101291432, -97019552, -92588224, -88589072, -85222352, -81268832, -76563696, -73123968, -71223976, -68003824,
+-63351840, -61722440, -63362040, -61339648, -54596012, -54396296, -66872640, -79462264, -79236776, -73754256,
+-75033080, -74489232, -59138480, -43898324, -56496536, -92272000, -115959288, -111137112, -97305168, -93654448,
+-96820912, -100096360, -102982040, -95615096, -68264744, -44223668, -64519536, -126372968, -176200496, -181162800,
+-167001744, -164430144, -164273376, -155705984, -159117808, -175705504, -151062592, -52396992, 49567680, },
{
-6025302,
-1979443, -222265, -16834662, -30957588, -36381596, -51714092, -87899728, -120777704, -112181864, -43570832,
-77029168, 208089024, 261198432, 152920160, -75685912, -236769200, -175597056, 39822400, 187850064, 150632560,
-20638928, -58457728, -61116848, -46331960, -37755448, -13233331, 26470958, 49673444, 44979580, 32832878,
-29070486, 30021822, 31279710, 35779224, 43230456, 48567492, 50661288, 52303036, 53977000, 54458576,
-53994180, 52387328, 47992500, 41231148, 34854196, 29503204, 23281944, 15821586, 8548596, 1335735,
--7248831, -17124034, -27237072, -37695316, -48859548, -59795608, -69548408, -78358992, -86362664, -92807800,
--97305704, -100093136, -100751880, -98342936, -92724048, -84230752, -72535016, -57256208, -39036420, -18780282,
-3400540, 27492086, 52703544, 78053512, 103020160, 127148752, 149767664, 170279344, 188142112, 202759504,
-213930704, 221964976, 226878432, 228149200, 225644704, 219942592, 211418688, 199924288, 185485136, 168290240,
-147967536, 124031680, 97151088, 68976640, 40701796, 12624519, -14948634, -41031432, -64026152, -82104744,
--94056560, -100199976, -101970040, -100331512, -95142656, -86187648, -74119864, -60247116, -46028628, -32858648,
--21724482, -12905840, -6273874, -1771137, 579821, 753767, -1453846, -6287832, -13451838, -22012244,
--31038118, -40020504, -48729624, -57130580, -65436512, -73827264, -82161648, -90292024, -98483600, -107146016,
--116334560, -125821600, -135456288, -145181168, -154930208, -164768368, -174957104, -185680032, -196791648, -207871584,
--218379760, -227793248, -235789408, -242291984, -247272544, -250634960, -252407168, -252862448, -252302480, -250889440,
--248792960, -246312624, -243703968, -241036256, -238327200, -235674512, -233170016, -230821200, -228622720, -226595488,
--224694976, -222788000, -220744144, -218472096, -215921968, -213194128, -210591376, -208357456, -206404848, -204483936,
--202514688, -200500880, -198246032, -195491872, -192226096, -188531344, -184309936, -179491520, -174255408, -168694512,
--162626256, -156058704, -149355344, -142635856, -135690896, -128732520, -122365768, -116624472, -111073760, -105838728,
--101291432, -97019552, -92588224, -88589072, -85222352, -81268832, -76563696, -73123968, -71223976, -68003824,
--63351840, -61722440, -63362040, -61339648, -54596012, -54396296, -66872640, -79462264, -79236776, -73754256,
--75033080, -74489232, -59138480, -43898324, -56496536, -92272000, -115959288, -111137112, -97305168, -93654448,
--96820912, -100096360, -102982040, -95615096, -68264744, -44223668, -64519536, -126372968, -176200496, -181162800,
--167001744, -164430144, -164273376, -155705984, -159117808, -175705504, -151062592, -52396992, 49567680, },
+1979443, -222265, -16834662, -30957588, -36381596, -51714092, -87899728, -120777704, -112181864, -43570832,
+77029168, 208089024, 261198432, 152920160, -75685912, -236769200, -175597056, 39822400, 187850064, 150632560,
+20638928, -58457728, -61116848, -46331960, -37755448, -13233331, 26470958, 49673444, 44979580, 32832878,
+29070486, 30021822, 31279710, 35779224, 43230456, 48567492, 50661288, 52303036, 53977000, 54458576,
+53994180, 52387328, 47992500, 41231148, 34854196, 29503204, 23281944, 15821586, 8548596, 1335735,
+-7248831, -17124034, -27237072, -37695316, -48859548, -59795608, -69548408, -78358992, -86362664, -92807800,
+-97305704, -100093136, -100751880, -98342936, -92724048, -84230752, -72535016, -57256208, -39036420, -18780282,
+3400540, 27492086, 52703544, 78053512, 103020160, 127148752, 149767664, 170279344, 188142112, 202759504,
+213930704, 221964976, 226878432, 228149200, 225644704, 219942592, 211418688, 199924288, 185485136, 168290240,
+147967536, 124031680, 97151088, 68976640, 40701796, 12624519, -14948634, -41031432, -64026152, -82104744,
+-94056560, -100199976, -101970040, -100331512, -95142656, -86187648, -74119864, -60247116, -46028628, -32858648,
+-21724482, -12905840, -6273874, -1771137, 579821, 753767, -1453846, -6287832, -13451838, -22012244,
+-31038118, -40020504, -48729624, -57130580, -65436512, -73827264, -82161648, -90292024, -98483600, -107146016,
+-116334560, -125821600, -135456288, -145181168, -154930208, -164768368, -174957104, -185680032, -196791648, -207871584,
+-218379760, -227793248, -235789408, -242291984, -247272544, -250634960, -252407168, -252862448, -252302480, -250889440,
+-248792960, -246312624, -243703968, -241036256, -238327200, -235674512, -233170016, -230821200, -228622720, -226595488,
+-224694976, -222788000, -220744144, -218472096, -215921968, -213194128, -210591376, -208357456, -206404848, -204483936,
+-202514688, -200500880, -198246032, -195491872, -192226096, -188531344, -184309936, -179491520, -174255408, -168694512,
+-162626256, -156058704, -149355344, -142635856, -135690896, -128732520, -122365768, -116624472, -111073760, -105838728,
+-101291432, -97019552, -92588224, -88589072, -85222352, -81268832, -76563696, -73123968, -71223976, -68003824,
+-63351840, -61722440, -63362040, -61339648, -54596012, -54396296, -66872640, -79462264, -79236776, -73754256,
+-75033080, -74489232, -59138480, -43898324, -56496536, -92272000, -115959288, -111137112, -97305168, -93654448,
+-96820912, -100096360, -102982040, -95615096, -68264744, -44223668, -64519536, -126372968, -176200496, -181162800,
+-167001744, -164430144, -164273376, -155705984, -159117808, -175705504, -151062592, -52396992, 49567680, },
},
{
{
29307246,
--878858, -42704324, -72876472, -70761736, -23331336, 55871084, 116787144, 109559248, 39856760, -32484448,
--58414776, -43856448, -21141440, -2680597, 15889768, 26560614, 13996225, -14605036, -31122406, -21969832,
--2903398, 6818798, 8773544, 15928423, 31583578, 48165372, 59697360, 65471944, 64473900, 54574000,
-37441376, 18937048, 3500935, -9198746, -21889838, -36363876, -52752936, -69901664, -85429584, -96595424,
--102137008, -103021232, -101151312, -97832912, -93675920, -89173184, -84649512, -79967456, -74834440, -69271384,
--63428612, -57213260, -50484656, -43397960, -36165236, -28683940, -20797842, -12817793, -5420786, 918049,
-6114423, 10133975, 12791486, 14083198, 14567455, 15083388, 16026670, 17206712, 18585934, 20751672,
-24294482, 29113436, 34883188, 41921028, 50963544, 62261992, 75462040, 90223840, 106428216, 123815856,
-141812304, 159680448, 176754016, 192737728, 207700864, 221378720, 232731936, 240982032, 246897264, 251979824,
-256221104, 257716832, 254803760, 247682176, 237500960, 224613360, 208337056, 188131376, 164570256, 139064592,
-112637664, 85165984, 56152404, 26129508, -3279745, -30788474, -56460028, -81225344, -105789336, -129938864,
--152505696, -172069808, -188065888, -201101104, -212045760, -221146256, -228186784, -233039552, -235799616, -236826640,
--236814832, -236425072, -235787792, -234723184, -233300480, -231734960, -229933216, -227519984, -224062000, -219077696,
--212325472, -204323936, -196038416, -187871536, -179481856, -170480144, -160598496, -149437488, -136977776, -124157840,
--112090056, -100978976, -90492816, -80589152, -71204112, -61867392, -52499532, -43907452, -36817532, -31094490,
--26345330, -22387518, -18780818, -14820322, -10290742, -5505075, -673236, 4072703, 8424578, 12390444,
-16510391, 21018496, 25596394, 30291868, 35538708, 41002980, 45722612, 49519900, 52903796, 55758340,
-57636852, 58932856, 60229936, 61198988, 61519500, 61785252, 62269508, 62305480, 61950072, 62325344,
-63552096, 64648920, 65827352, 68190120, 71262096, 73829952, 76496592, 80195096, 83748640, 86269784,
-89391152, 93638880, 96563752, 97985384, 101374112, 106389024, 107995880, 106985488, 110517560, 117346024,
-117004576, 110704392, 114393232, 129332200, 131231648, 107544368, 84891640, 93700616, 122091424, 134975792,
-127269544, 123901752, 131259032, 125364192, 95880312, 70135744, 76178760, 102809168, 116211616, 105042552,
-88894008, 83855480, 78058344, 51140712, 9394167, -13389024, 5523328, 48172892, 74796856, 68604584,
-50431504, 47843788, 61429308, 69788920, 61923228, 53546968, 67870680, 105293808, 138296336, },
+-878858, -42704324, -72876472, -70761736, -23331336, 55871084, 116787144, 109559248, 39856760, -32484448,
+-58414776, -43856448, -21141440, -2680597, 15889768, 26560614, 13996225, -14605036, -31122406, -21969832,
+-2903398, 6818798, 8773544, 15928423, 31583578, 48165372, 59697360, 65471944, 64473900, 54574000,
+37441376, 18937048, 3500935, -9198746, -21889838, -36363876, -52752936, -69901664, -85429584, -96595424,
+-102137008, -103021232, -101151312, -97832912, -93675920, -89173184, -84649512, -79967456, -74834440, -69271384,
+-63428612, -57213260, -50484656, -43397960, -36165236, -28683940, -20797842, -12817793, -5420786, 918049,
+6114423, 10133975, 12791486, 14083198, 14567455, 15083388, 16026670, 17206712, 18585934, 20751672,
+24294482, 29113436, 34883188, 41921028, 50963544, 62261992, 75462040, 90223840, 106428216, 123815856,
+141812304, 159680448, 176754016, 192737728, 207700864, 221378720, 232731936, 240982032, 246897264, 251979824,
+256221104, 257716832, 254803760, 247682176, 237500960, 224613360, 208337056, 188131376, 164570256, 139064592,
+112637664, 85165984, 56152404, 26129508, -3279745, -30788474, -56460028, -81225344, -105789336, -129938864,
+-152505696, -172069808, -188065888, -201101104, -212045760, -221146256, -228186784, -233039552, -235799616, -236826640,
+-236814832, -236425072, -235787792, -234723184, -233300480, -231734960, -229933216, -227519984, -224062000, -219077696,
+-212325472, -204323936, -196038416, -187871536, -179481856, -170480144, -160598496, -149437488, -136977776, -124157840,
+-112090056, -100978976, -90492816, -80589152, -71204112, -61867392, -52499532, -43907452, -36817532, -31094490,
+-26345330, -22387518, -18780818, -14820322, -10290742, -5505075, -673236, 4072703, 8424578, 12390444,
+16510391, 21018496, 25596394, 30291868, 35538708, 41002980, 45722612, 49519900, 52903796, 55758340,
+57636852, 58932856, 60229936, 61198988, 61519500, 61785252, 62269508, 62305480, 61950072, 62325344,
+63552096, 64648920, 65827352, 68190120, 71262096, 73829952, 76496592, 80195096, 83748640, 86269784,
+89391152, 93638880, 96563752, 97985384, 101374112, 106389024, 107995880, 106985488, 110517560, 117346024,
+117004576, 110704392, 114393232, 129332200, 131231648, 107544368, 84891640, 93700616, 122091424, 134975792,
+127269544, 123901752, 131259032, 125364192, 95880312, 70135744, 76178760, 102809168, 116211616, 105042552,
+88894008, 83855480, 78058344, 51140712, 9394167, -13389024, 5523328, 48172892, 74796856, 68604584,
+50431504, 47843788, 61429308, 69788920, 61923228, 53546968, 67870680, 105293808, 138296336, },
{
29307246,
--878858, -42704324, -72876472, -70761736, -23331336, 55871084, 116787144, 109559248, 39856760, -32484448,
--58414776, -43856448, -21141440, -2680597, 15889768, 26560614, 13996225, -14605036, -31122406, -21969832,
--2903398, 6818798, 8773544, 15928423, 31583578, 48165372, 59697360, 65471944, 64473900, 54574000,
-37441376, 18937048, 3500935, -9198746, -21889838, -36363876, -52752936, -69901664, -85429584, -96595424,
--102137008, -103021232, -101151312, -97832912, -93675920, -89173184, -84649512, -79967456, -74834440, -69271384,
--63428612, -57213260, -50484656, -43397960, -36165236, -28683940, -20797842, -12817793, -5420786, 918049,
-6114423, 10133975, 12791486, 14083198, 14567455, 15083388, 16026670, 17206712, 18585934, 20751672,
-24294482, 29113436, 34883188, 41921028, 50963544, 62261992, 75462040, 90223840, 106428216, 123815856,
-141812304, 159680448, 176754016, 192737728, 207700864, 221378720, 232731936, 240982032, 246897264, 251979824,
-256221104, 257716832, 254803760, 247682176, 237500960, 224613360, 208337056, 188131376, 164570256, 139064592,
-112637664, 85165984, 56152404, 26129508, -3279745, -30788474, -56460028, -81225344, -105789336, -129938864,
--152505696, -172069808, -188065888, -201101104, -212045760, -221146256, -228186784, -233039552, -235799616, -236826640,
--236814832, -236425072, -235787792, -234723184, -233300480, -231734960, -229933216, -227519984, -224062000, -219077696,
--212325472, -204323936, -196038416, -187871536, -179481856, -170480144, -160598496, -149437488, -136977776, -124157840,
--112090056, -100978976, -90492816, -80589152, -71204112, -61867392, -52499532, -43907452, -36817532, -31094490,
--26345330, -22387518, -18780818, -14820322, -10290742, -5505075, -673236, 4072703, 8424578, 12390444,
-16510391, 21018496, 25596394, 30291868, 35538708, 41002980, 45722612, 49519900, 52903796, 55758340,
-57636852, 58932856, 60229936, 61198988, 61519500, 61785252, 62269508, 62305480, 61950072, 62325344,
-63552096, 64648920, 65827352, 68190120, 71262096, 73829952, 76496592, 80195096, 83748640, 86269784,
-89391152, 93638880, 96563752, 97985384, 101374112, 106389024, 107995880, 106985488, 110517560, 117346024,
-117004576, 110704392, 114393232, 129332200, 131231648, 107544368, 84891640, 93700616, 122091424, 134975792,
-127269544, 123901752, 131259032, 125364192, 95880312, 70135744, 76178760, 102809168, 116211616, 105042552,
-88894008, 83855480, 78058344, 51140712, 9394167, -13389024, 5523328, 48172892, 74796856, 68604584,
-50431504, 47843788, 61429308, 69788920, 61923228, 53546968, 67870680, 105293808, 138296336, },
+-878858, -42704324, -72876472, -70761736, -23331336, 55871084, 116787144, 109559248, 39856760, -32484448,
+-58414776, -43856448, -21141440, -2680597, 15889768, 26560614, 13996225, -14605036, -31122406, -21969832,
+-2903398, 6818798, 8773544, 15928423, 31583578, 48165372, 59697360, 65471944, 64473900, 54574000,
+37441376, 18937048, 3500935, -9198746, -21889838, -36363876, -52752936, -69901664, -85429584, -96595424,
+-102137008, -103021232, -101151312, -97832912, -93675920, -89173184, -84649512, -79967456, -74834440, -69271384,
+-63428612, -57213260, -50484656, -43397960, -36165236, -28683940, -20797842, -12817793, -5420786, 918049,
+6114423, 10133975, 12791486, 14083198, 14567455, 15083388, 16026670, 17206712, 18585934, 20751672,
+24294482, 29113436, 34883188, 41921028, 50963544, 62261992, 75462040, 90223840, 106428216, 123815856,
+141812304, 159680448, 176754016, 192737728, 207700864, 221378720, 232731936, 240982032, 246897264, 251979824,
+256221104, 257716832, 254803760, 247682176, 237500960, 224613360, 208337056, 188131376, 164570256, 139064592,
+112637664, 85165984, 56152404, 26129508, -3279745, -30788474, -56460028, -81225344, -105789336, -129938864,
+-152505696, -172069808, -188065888, -201101104, -212045760, -221146256, -228186784, -233039552, -235799616, -236826640,
+-236814832, -236425072, -235787792, -234723184, -233300480, -231734960, -229933216, -227519984, -224062000, -219077696,
+-212325472, -204323936, -196038416, -187871536, -179481856, -170480144, -160598496, -149437488, -136977776, -124157840,
+-112090056, -100978976, -90492816, -80589152, -71204112, -61867392, -52499532, -43907452, -36817532, -31094490,
+-26345330, -22387518, -18780818, -14820322, -10290742, -5505075, -673236, 4072703, 8424578, 12390444,
+16510391, 21018496, 25596394, 30291868, 35538708, 41002980, 45722612, 49519900, 52903796, 55758340,
+57636852, 58932856, 60229936, 61198988, 61519500, 61785252, 62269508, 62305480, 61950072, 62325344,
+63552096, 64648920, 65827352, 68190120, 71262096, 73829952, 76496592, 80195096, 83748640, 86269784,
+89391152, 93638880, 96563752, 97985384, 101374112, 106389024, 107995880, 106985488, 110517560, 117346024,
+117004576, 110704392, 114393232, 129332200, 131231648, 107544368, 84891640, 93700616, 122091424, 134975792,
+127269544, 123901752, 131259032, 125364192, 95880312, 70135744, 76178760, 102809168, 116211616, 105042552,
+88894008, 83855480, 78058344, 51140712, 9394167, -13389024, 5523328, 48172892, 74796856, 68604584,
+50431504, 47843788, 61429308, 69788920, 61923228, 53546968, 67870680, 105293808, 138296336, },
},
{
{
-14042932,
-36850284, 74545600, 62616864, 21942452, -35493608, -129862632, -245363968, -305267488, -253026192, -105521440,
-97686344, 316325952, 438439392, 305316864, -72467376, -401281472, -367888640, -8289824, 324833760, 372224416,
-210067392, 57280368, -6293201, -43093556, -93670016, -132662416, -146641456, -157265600, -172272752, -174583984,
--158528848, -136673920, -114313240, -85986856, -52620864, -21429202, 5864241, 30623116, 49920404, 61535072,
-69225208, 76380624, 81414864, 83167744, 83600464, 83035136, 79553528, 73965776, 69466264, 66667556,
-63886028, 60877940, 58137752, 54595476, 49376016, 43455404, 37355480, 30013232, 21316460, 12649216,
-4209068, -5113696, -15124727, -24588150, -33608120, -42966852, -51969104, -59424632, -65610996, -71242232,
--75948440, -79402672, -82365128, -85393080, -88081192, -90216864, -92116848, -93674312, -94658392, -95714960,
--97591856, -99947112, -102214320, -104685536, -107563160, -110046192, -111361520, -111583248, -110840224, -108969224,
--106280040, -103409928, -100490424, -97757752, -96583080, -98445480, -103285376, -110119200, -118666728, -129239328,
--141640512, -155055840, -168416944, -180446064, -190171488, -197639904, -203280272, -206717312, -207151648, -204593984,
--199757856, -193181728, -185304224, -176749712, -167726528, -157865280, -147240608, -136770016, -127191696, -118458416,
--110238928, -102100496, -93313536, -83529600, -73475616, -64114736, -55502788, -47197396, -39099236, -31110596,
--22786412, -14031121, -5390184, 2841658, 10960757, 19097572, 27059368, 35013112, 43351252, 51912196,
-60190208, 68055368, 75498008, 82111720, 87556664, 92006792, 95621008, 98203888, 99734512, 100466800,
-100345472, 99104224, 96911104, 94131184, 90725816, 86650432, 82366200, 78212432, 73921216, 69373920,
-65007016, 60975652, 56887380, 52735220, 49089864, 46178952, 43797928, 42036992, 41066328, 40505836,
-39958228, 39606576, 39498128, 39136816, 38496328, 38295004, 38741140, 39278012, 39824548, 40808632,
-41965588, 42667816, 43120396, 43752296, 44179644, 44193064, 44544180, 45489072, 46232100, 46717432,
-47753592, 48926656, 49216568, 49459232, 50723564, 51389284, 50187228, 49803904, 51974472, 52767432,
-49910204, 49344344, 54588496, 56278032, 46409804, 37261524, 47913044, 74125232, 91240136, 88413512,
-80640160, 82477864, 88261040, 86315424, 77971376, 72854456, 75130792, 82306608, 90818696, 97236984,
-99371048, 99507416, 100442640, 94990184, 67389112, 14216879, -39399344, -58022860, -36593120, -10273562,
--9674414, -19194746, -6493454, 16509854, 8908299, -13298292, 33717640, 181697520, 325155872, },
+36850284, 74545600, 62616864, 21942452, -35493608, -129862632, -245363968, -305267488, -253026192, -105521440,
+97686344, 316325952, 438439392, 305316864, -72467376, -401281472, -367888640, -8289824, 324833760, 372224416,
+210067392, 57280368, -6293201, -43093556, -93670016, -132662416, -146641456, -157265600, -172272752, -174583984,
+-158528848, -136673920, -114313240, -85986856, -52620864, -21429202, 5864241, 30623116, 49920404, 61535072,
+69225208, 76380624, 81414864, 83167744, 83600464, 83035136, 79553528, 73965776, 69466264, 66667556,
+63886028, 60877940, 58137752, 54595476, 49376016, 43455404, 37355480, 30013232, 21316460, 12649216,
+4209068, -5113696, -15124727, -24588150, -33608120, -42966852, -51969104, -59424632, -65610996, -71242232,
+-75948440, -79402672, -82365128, -85393080, -88081192, -90216864, -92116848, -93674312, -94658392, -95714960,
+-97591856, -99947112, -102214320, -104685536, -107563160, -110046192, -111361520, -111583248, -110840224, -108969224,
+-106280040, -103409928, -100490424, -97757752, -96583080, -98445480, -103285376, -110119200, -118666728, -129239328,
+-141640512, -155055840, -168416944, -180446064, -190171488, -197639904, -203280272, -206717312, -207151648, -204593984,
+-199757856, -193181728, -185304224, -176749712, -167726528, -157865280, -147240608, -136770016, -127191696, -118458416,
+-110238928, -102100496, -93313536, -83529600, -73475616, -64114736, -55502788, -47197396, -39099236, -31110596,
+-22786412, -14031121, -5390184, 2841658, 10960757, 19097572, 27059368, 35013112, 43351252, 51912196,
+60190208, 68055368, 75498008, 82111720, 87556664, 92006792, 95621008, 98203888, 99734512, 100466800,
+100345472, 99104224, 96911104, 94131184, 90725816, 86650432, 82366200, 78212432, 73921216, 69373920,
+65007016, 60975652, 56887380, 52735220, 49089864, 46178952, 43797928, 42036992, 41066328, 40505836,
+39958228, 39606576, 39498128, 39136816, 38496328, 38295004, 38741140, 39278012, 39824548, 40808632,
+41965588, 42667816, 43120396, 43752296, 44179644, 44193064, 44544180, 45489072, 46232100, 46717432,
+47753592, 48926656, 49216568, 49459232, 50723564, 51389284, 50187228, 49803904, 51974472, 52767432,
+49910204, 49344344, 54588496, 56278032, 46409804, 37261524, 47913044, 74125232, 91240136, 88413512,
+80640160, 82477864, 88261040, 86315424, 77971376, 72854456, 75130792, 82306608, 90818696, 97236984,
+99371048, 99507416, 100442640, 94990184, 67389112, 14216879, -39399344, -58022860, -36593120, -10273562,
+-9674414, -19194746, -6493454, 16509854, 8908299, -13298292, 33717640, 181697520, 325155872, },
{
-14042932,
-36850284, 74545600, 62616864, 21942452, -35493608, -129862632, -245363968, -305267488, -253026192, -105521440,
-97686344, 316325952, 438439392, 305316864, -72467376, -401281472, -367888640, -8289824, 324833760, 372224416,
-210067392, 57280368, -6293201, -43093556, -93670016, -132662416, -146641456, -157265600, -172272752, -174583984,
--158528848, -136673920, -114313240, -85986856, -52620864, -21429202, 5864241, 30623116, 49920404, 61535072,
-69225208, 76380624, 81414864, 83167744, 83600464, 83035136, 79553528, 73965776, 69466264, 66667556,
-63886028, 60877940, 58137752, 54595476, 49376016, 43455404, 37355480, 30013232, 21316460, 12649216,
-4209068, -5113696, -15124727, -24588150, -33608120, -42966852, -51969104, -59424632, -65610996, -71242232,
--75948440, -79402672, -82365128, -85393080, -88081192, -90216864, -92116848, -93674312, -94658392, -95714960,
--97591856, -99947112, -102214320, -104685536, -107563160, -110046192, -111361520, -111583248, -110840224, -108969224,
--106280040, -103409928, -100490424, -97757752, -96583080, -98445480, -103285376, -110119200, -118666728, -129239328,
--141640512, -155055840, -168416944, -180446064, -190171488, -197639904, -203280272, -206717312, -207151648, -204593984,
--199757856, -193181728, -185304224, -176749712, -167726528, -157865280, -147240608, -136770016, -127191696, -118458416,
--110238928, -102100496, -93313536, -83529600, -73475616, -64114736, -55502788, -47197396, -39099236, -31110596,
--22786412, -14031121, -5390184, 2841658, 10960757, 19097572, 27059368, 35013112, 43351252, 51912196,
-60190208, 68055368, 75498008, 82111720, 87556664, 92006792, 95621008, 98203888, 99734512, 100466800,
-100345472, 99104224, 96911104, 94131184, 90725816, 86650432, 82366200, 78212432, 73921216, 69373920,
-65007016, 60975652, 56887380, 52735220, 49089864, 46178952, 43797928, 42036992, 41066328, 40505836,
-39958228, 39606576, 39498128, 39136816, 38496328, 38295004, 38741140, 39278012, 39824548, 40808632,
-41965588, 42667816, 43120396, 43752296, 44179644, 44193064, 44544180, 45489072, 46232100, 46717432,
-47753592, 48926656, 49216568, 49459232, 50723564, 51389284, 50187228, 49803904, 51974472, 52767432,
-49910204, 49344344, 54588496, 56278032, 46409804, 37261524, 47913044, 74125232, 91240136, 88413512,
-80640160, 82477864, 88261040, 86315424, 77971376, 72854456, 75130792, 82306608, 90818696, 97236984,
-99371048, 99507416, 100442640, 94990184, 67389112, 14216879, -39399344, -58022860, -36593120, -10273562,
--9674414, -19194746, -6493454, 16509854, 8908299, -13298292, 33717640, 181697520, 325155872, },
+36850284, 74545600, 62616864, 21942452, -35493608, -129862632, -245363968, -305267488, -253026192, -105521440,
+97686344, 316325952, 438439392, 305316864, -72467376, -401281472, -367888640, -8289824, 324833760, 372224416,
+210067392, 57280368, -6293201, -43093556, -93670016, -132662416, -146641456, -157265600, -172272752, -174583984,
+-158528848, -136673920, -114313240, -85986856, -52620864, -21429202, 5864241, 30623116, 49920404, 61535072,
+69225208, 76380624, 81414864, 83167744, 83600464, 83035136, 79553528, 73965776, 69466264, 66667556,
+63886028, 60877940, 58137752, 54595476, 49376016, 43455404, 37355480, 30013232, 21316460, 12649216,
+4209068, -5113696, -15124727, -24588150, -33608120, -42966852, -51969104, -59424632, -65610996, -71242232,
+-75948440, -79402672, -82365128, -85393080, -88081192, -90216864, -92116848, -93674312, -94658392, -95714960,
+-97591856, -99947112, -102214320, -104685536, -107563160, -110046192, -111361520, -111583248, -110840224, -108969224,
+-106280040, -103409928, -100490424, -97757752, -96583080, -98445480, -103285376, -110119200, -118666728, -129239328,
+-141640512, -155055840, -168416944, -180446064, -190171488, -197639904, -203280272, -206717312, -207151648, -204593984,
+-199757856, -193181728, -185304224, -176749712, -167726528, -157865280, -147240608, -136770016, -127191696, -118458416,
+-110238928, -102100496, -93313536, -83529600, -73475616, -64114736, -55502788, -47197396, -39099236, -31110596,
+-22786412, -14031121, -5390184, 2841658, 10960757, 19097572, 27059368, 35013112, 43351252, 51912196,
+60190208, 68055368, 75498008, 82111720, 87556664, 92006792, 95621008, 98203888, 99734512, 100466800,
+100345472, 99104224, 96911104, 94131184, 90725816, 86650432, 82366200, 78212432, 73921216, 69373920,
+65007016, 60975652, 56887380, 52735220, 49089864, 46178952, 43797928, 42036992, 41066328, 40505836,
+39958228, 39606576, 39498128, 39136816, 38496328, 38295004, 38741140, 39278012, 39824548, 40808632,
+41965588, 42667816, 43120396, 43752296, 44179644, 44193064, 44544180, 45489072, 46232100, 46717432,
+47753592, 48926656, 49216568, 49459232, 50723564, 51389284, 50187228, 49803904, 51974472, 52767432,
+49910204, 49344344, 54588496, 56278032, 46409804, 37261524, 47913044, 74125232, 91240136, 88413512,
+80640160, 82477864, 88261040, 86315424, 77971376, 72854456, 75130792, 82306608, 90818696, 97236984,
+99371048, 99507416, 100442640, 94990184, 67389112, 14216879, -39399344, -58022860, -36593120, -10273562,
+-9674414, -19194746, -6493454, 16509854, 8908299, -13298292, 33717640, 181697520, 325155872, },
},
{
{
-3956202,
--4892505, -590021, 12164421, 38077032, 81775104, 124623304, 129460512, 85682984, 10402411, -102941240,
--257014064, -344556224, -196735264, 162329360, 421296576, 301453568, -81786376, -339304576, -270695136, -44466872,
-89393304, 91300808, 71099960, 80839872, 84115320, 60540248, 34794068, 20905754, 6206228, -14057965,
--28276990, -31372052, -29687350, -27041114, -22638772, -17798882, -13996225, -9483288, -3846680, -10201,
-1374390, 3223910, 6271726, 8032126, 7897908, 7853885, 8408472, 8438537, 8327405, 9541270,
-12103755, 15187004, 18816252, 23058606, 27099096, 30406220, 33283312, 35678832, 37071472, 37647000,
-38043748, 38136624, 37421512, 36086316, 34518116, 32481764, 29738354, 26662620, 23539106, 20119238,
-16299401, 12321187, 8060580, 3009698, -2988760, -9727564, -17154100, -25212532, -33552822, -42001560,
--50826108, -60007136, -68805912, -76527192, -83177944, -89035208, -94018448, -97715872, -99669544, -99597608,
--97630512, -94253592, -89847496, -84563072, -78763792, -73134168, -68153616, -63880124, -60413008, -58128624,
--57258892, -57550952, -58465244, -59591596, -60923576, -62826244, -65579856, -68929392, -72264432, -75220984,
--77873128, -80420040, -82957832, -85422608, -87509960, -88818848, -89284856, -89289688, -89233312, -89199488,
--89014272, -88326000, -86707872, -84005800, -80527416, -76630272, -72300408, -67334352, -61617212, -55052352,
--47603808, -39574364, -31474058, -23550916, -15794742, -8280160, -1080184, 5948530, 12839268, 19225348,
-24750822, 29457570, 33496986, 36922760, 39977556, 43079060, 46364172, 49711024, 53141092, 56701620,
-60179472, 63440960, 66724464, 70176544, 73627552, 77124192, 80998248, 85179400, 89241368, 93158912,
-97144104, 100919920, 104110544, 106969920, 109786344, 112219440, 114109224, 116018344, 118209312, 120240296,
-122128472, 124492312, 127278136, 129930816, 132675296, 135856256, 138673760, 140493216, 142199920, 144359760,
-145933328, 146609776, 147791440, 149669408, 150676576, 150927296, 152078352, 153518768, 153616480, 153758752,
-155404272, 155954560, 154248912, 154691840, 158040832, 157198480, 151757840, 152642608, 159947808, 156843616,
-142624592, 142603648, 158689376, 148107648, 94958504, 63685776, 117763168, 214589984, 256608720, 227827072,
-195774272, 188039040, 163344592, 115923312, 110401064, 177253840, 254218576, 275298816, 254263680, 239107808,
-239403632, 237804288, 225745632, 194518000, 136255152, 81283328, 85342072, 150444112, 207728240, 209318448,
-186659280, 185007328, 195300752, 193707856, 193329904, 199881872, 165390064, 59089624, -47498580, },
+-4892505, -590021, 12164421, 38077032, 81775104, 124623304, 129460512, 85682984, 10402411, -102941240,
+-257014064, -344556224, -196735264, 162329360, 421296576, 301453568, -81786376, -339304576, -270695136, -44466872,
+89393304, 91300808, 71099960, 80839872, 84115320, 60540248, 34794068, 20905754, 6206228, -14057965,
+-28276990, -31372052, -29687350, -27041114, -22638772, -17798882, -13996225, -9483288, -3846680, -10201,
+1374390, 3223910, 6271726, 8032126, 7897908, 7853885, 8408472, 8438537, 8327405, 9541270,
+12103755, 15187004, 18816252, 23058606, 27099096, 30406220, 33283312, 35678832, 37071472, 37647000,
+38043748, 38136624, 37421512, 36086316, 34518116, 32481764, 29738354, 26662620, 23539106, 20119238,
+16299401, 12321187, 8060580, 3009698, -2988760, -9727564, -17154100, -25212532, -33552822, -42001560,
+-50826108, -60007136, -68805912, -76527192, -83177944, -89035208, -94018448, -97715872, -99669544, -99597608,
+-97630512, -94253592, -89847496, -84563072, -78763792, -73134168, -68153616, -63880124, -60413008, -58128624,
+-57258892, -57550952, -58465244, -59591596, -60923576, -62826244, -65579856, -68929392, -72264432, -75220984,
+-77873128, -80420040, -82957832, -85422608, -87509960, -88818848, -89284856, -89289688, -89233312, -89199488,
+-89014272, -88326000, -86707872, -84005800, -80527416, -76630272, -72300408, -67334352, -61617212, -55052352,
+-47603808, -39574364, -31474058, -23550916, -15794742, -8280160, -1080184, 5948530, 12839268, 19225348,
+24750822, 29457570, 33496986, 36922760, 39977556, 43079060, 46364172, 49711024, 53141092, 56701620,
+60179472, 63440960, 66724464, 70176544, 73627552, 77124192, 80998248, 85179400, 89241368, 93158912,
+97144104, 100919920, 104110544, 106969920, 109786344, 112219440, 114109224, 116018344, 118209312, 120240296,
+122128472, 124492312, 127278136, 129930816, 132675296, 135856256, 138673760, 140493216, 142199920, 144359760,
+145933328, 146609776, 147791440, 149669408, 150676576, 150927296, 152078352, 153518768, 153616480, 153758752,
+155404272, 155954560, 154248912, 154691840, 158040832, 157198480, 151757840, 152642608, 159947808, 156843616,
+142624592, 142603648, 158689376, 148107648, 94958504, 63685776, 117763168, 214589984, 256608720, 227827072,
+195774272, 188039040, 163344592, 115923312, 110401064, 177253840, 254218576, 275298816, 254263680, 239107808,
+239403632, 237804288, 225745632, 194518000, 136255152, 81283328, 85342072, 150444112, 207728240, 209318448,
+186659280, 185007328, 195300752, 193707856, 193329904, 199881872, 165390064, 59089624, -47498580, },
{
3956202,
-4892505, 590021, -12164421, -38077032, -81775104, -124623304, -129460512, -85682984, -10402411, 102941240,
-257014064, 344556224, 196735264, -162329360, -421296576, -301453568, 81786376, 339304576, 270695136, 44466872,
--89393304, -91300808, -71099960, -80839872, -84115320, -60540248, -34794068, -20905754, -6206228, 14057965,
-28276990, 31372052, 29687350, 27041114, 22638772, 17798882, 13996225, 9483288, 3846680, 10201,
--1374390, -3223910, -6271726, -8032126, -7897908, -7853885, -8408472, -8438537, -8327405, -9541270,
--12103755, -15187004, -18816252, -23058606, -27099096, -30406220, -33283312, -35678832, -37071472, -37647000,
--38043748, -38136624, -37421512, -36086316, -34518116, -32481764, -29738354, -26662620, -23539106, -20119238,
--16299401, -12321187, -8060580, -3009698, 2988760, 9727564, 17154100, 25212532, 33552822, 42001560,
-50826108, 60007136, 68805912, 76527192, 83177944, 89035208, 94018448, 97715872, 99669544, 99597608,
-97630512, 94253592, 89847496, 84563072, 78763792, 73134168, 68153616, 63880124, 60413008, 58128624,
-57258892, 57550952, 58465244, 59591596, 60923576, 62826244, 65579856, 68929392, 72264432, 75220984,
-77873128, 80420040, 82957832, 85422608, 87509960, 88818848, 89284856, 89289688, 89233312, 89199488,
-89014272, 88326000, 86707872, 84005800, 80527416, 76630272, 72300408, 67334352, 61617212, 55052352,
-47603808, 39574364, 31474058, 23550916, 15794742, 8280160, 1080184, -5948530, -12839268, -19225348,
--24750822, -29457570, -33496986, -36922760, -39977556, -43079060, -46364172, -49711024, -53141092, -56701620,
--60179472, -63440960, -66724464, -70176544, -73627552, -77124192, -80998248, -85179400, -89241368, -93158912,
--97144104, -100919920, -104110544, -106969920, -109786344, -112219440, -114109224, -116018344, -118209312, -120240296,
--122128472, -124492312, -127278136, -129930816, -132675296, -135856256, -138673760, -140493216, -142199920, -144359760,
--145933328, -146609776, -147791440, -149669408, -150676576, -150927296, -152078352, -153518768, -153616480, -153758752,
--155404272, -155954560, -154248912, -154691840, -158040832, -157198480, -151757840, -152642608, -159947808, -156843616,
--142624592, -142603648, -158689376, -148107648, -94958504, -63685776, -117763168, -214589984, -256608720, -227827072,
--195774272, -188039040, -163344592, -115923312, -110401064, -177253840, -254218576, -275298816, -254263680, -239107808,
--239403632, -237804288, -225745632, -194518000, -136255152, -81283328, -85342072, -150444112, -207728240, -209318448,
--186659280, -185007328, -195300752, -193707856, -193329904, -199881872, -165390064, -59089624, 47498580, },
+4892505, 590021, -12164421, -38077032, -81775104, -124623304, -129460512, -85682984, -10402411, 102941240,
+257014064, 344556224, 196735264, -162329360, -421296576, -301453568, 81786376, 339304576, 270695136, 44466872,
+-89393304, -91300808, -71099960, -80839872, -84115320, -60540248, -34794068, -20905754, -6206228, 14057965,
+28276990, 31372052, 29687350, 27041114, 22638772, 17798882, 13996225, 9483288, 3846680, 10201,
+-1374390, -3223910, -6271726, -8032126, -7897908, -7853885, -8408472, -8438537, -8327405, -9541270,
+-12103755, -15187004, -18816252, -23058606, -27099096, -30406220, -33283312, -35678832, -37071472, -37647000,
+-38043748, -38136624, -37421512, -36086316, -34518116, -32481764, -29738354, -26662620, -23539106, -20119238,
+-16299401, -12321187, -8060580, -3009698, 2988760, 9727564, 17154100, 25212532, 33552822, 42001560,
+50826108, 60007136, 68805912, 76527192, 83177944, 89035208, 94018448, 97715872, 99669544, 99597608,
+97630512, 94253592, 89847496, 84563072, 78763792, 73134168, 68153616, 63880124, 60413008, 58128624,
+57258892, 57550952, 58465244, 59591596, 60923576, 62826244, 65579856, 68929392, 72264432, 75220984,
+77873128, 80420040, 82957832, 85422608, 87509960, 88818848, 89284856, 89289688, 89233312, 89199488,
+89014272, 88326000, 86707872, 84005800, 80527416, 76630272, 72300408, 67334352, 61617212, 55052352,
+47603808, 39574364, 31474058, 23550916, 15794742, 8280160, 1080184, -5948530, -12839268, -19225348,
+-24750822, -29457570, -33496986, -36922760, -39977556, -43079060, -46364172, -49711024, -53141092, -56701620,
+-60179472, -63440960, -66724464, -70176544, -73627552, -77124192, -80998248, -85179400, -89241368, -93158912,
+-97144104, -100919920, -104110544, -106969920, -109786344, -112219440, -114109224, -116018344, -118209312, -120240296,
+-122128472, -124492312, -127278136, -129930816, -132675296, -135856256, -138673760, -140493216, -142199920, -144359760,
+-145933328, -146609776, -147791440, -149669408, -150676576, -150927296, -152078352, -153518768, -153616480, -153758752,
+-155404272, -155954560, -154248912, -154691840, -158040832, -157198480, -151757840, -152642608, -159947808, -156843616,
+-142624592, -142603648, -158689376, -148107648, -94958504, -63685776, -117763168, -214589984, -256608720, -227827072,
+-195774272, -188039040, -163344592, -115923312, -110401064, -177253840, -254218576, -275298816, -254263680, -239107808,
+-239403632, -237804288, -225745632, -194518000, -136255152, -81283328, -85342072, -150444112, -207728240, -209318448,
+-186659280, -185007328, -195300752, -193707856, -193329904, -199881872, -165390064, -59089624, 47498580, },
},
{
{
-1443109,
-2916283, 6827925, 4448513, -10190347, -35941896, -50278496, -21301964, 45321568, 90000504, 62208844,
--10385231, -52024400, -33970508, 263604, 7722888, -259846, 5224291, 19049790, 17630840, 2166811,
--5846524, -1266479, 181999, -9330280, -18641232, -16736414, -6763500, 2556579, 8128763, 10948409,
-10774462, 6565932, -1125818, -10446971, -19356344, -26142930, -30390652, -33340758, -36155572, -38265476,
--38332048, -36147520, -32708860, -29106456, -26172456, -24637544, -24765856, -25979184, -27272506, -27890980,
--27470610, -25853018, -23069880, -19397146, -15212237, -10771241, -6171868, -1490891, 3144453, 7651484,
-12047920, 16274705, 20060182, 23145042, 25582436, 27581744, 29147258, 30173756, 30836254, 31517544,
-32333588, 33101850, 33842196, 34967476, 36871756, 39647380, 43362528, 48338248, 54939612, 63217088,
-72916736, 83794808, 95823944, 109095392, 123496952, 138459552, 153138672, 166951280, 179796992, 191547488,
-201411424, 208091696, 210612304, 208791248, 202888880, 193053408, 179311120, 162035696, 142256832, 121402080,
-100614976, 80314280, 60539712, 41757284, 25057376, 11293617, 126165, -9823127, -19814294, -30041686,
--39722004, -47958140, -54550380, -60103772, -65415572, -70796096, -75989784, -80636936, -84662936, -88305064,
--91958472, -95962456, -100363720, -104873976, -109146928, -113031192, -116513872, -119557928, -122106456, -124112208,
--125511832, -126300496, -126655904, -126842736, -126988224, -127060704, -126995200, -126714424, -126185064, -125603096,
--125345936, -125597728, -126224256, -127060168, -128004520, -128815736, -129247376, -129471256, -129961416, -130892888,
--132046088, -133215392, -134260672, -134826544, -134499056, -133149888, -130776920, -127238408, -122458104, -116582592,
--109666088, -101599600, -92521112, -82809120, -72629504, -62070868, -51628192, -41856068, -32731946, -24047522,
--16039555, -8904004, -2273648, 4118337, 10006737, 15390478, 20740398, 25972740, 30525406, 34676492,
-39222180, 43891344, 47938276, 51878372, 56495464, 61012696, 64582348, 68081136, 72005664, 75044352,
-77184856, 80520440, 84550192, 86223080, 86974696, 91581584, 97592392, 97656816, 95367600, 101955544,
-112541032, 109671992, 100214472, 116350128, 158572880, 173721760, 126094336, 58961312, 38272452, 60790968,
-74576736, 71284648, 88594440, 124262528, 123211336, 68228776, 16135118, 13064754, 31056908, 25668336,
-5967857, 2714419, 8382166, 107911, -6194417, 21946746, 71502616, 93503584, 71871984, 41361072,
-33930240, 42570644, 46276124, 41583872, 36570036, 33631204, 31004296, 29609504, 29946122, },
+2916283, 6827925, 4448513, -10190347, -35941896, -50278496, -21301964, 45321568, 90000504, 62208844,
+-10385231, -52024400, -33970508, 263604, 7722888, -259846, 5224291, 19049790, 17630840, 2166811,
+-5846524, -1266479, 181999, -9330280, -18641232, -16736414, -6763500, 2556579, 8128763, 10948409,
+10774462, 6565932, -1125818, -10446971, -19356344, -26142930, -30390652, -33340758, -36155572, -38265476,
+-38332048, -36147520, -32708860, -29106456, -26172456, -24637544, -24765856, -25979184, -27272506, -27890980,
+-27470610, -25853018, -23069880, -19397146, -15212237, -10771241, -6171868, -1490891, 3144453, 7651484,
+12047920, 16274705, 20060182, 23145042, 25582436, 27581744, 29147258, 30173756, 30836254, 31517544,
+32333588, 33101850, 33842196, 34967476, 36871756, 39647380, 43362528, 48338248, 54939612, 63217088,
+72916736, 83794808, 95823944, 109095392, 123496952, 138459552, 153138672, 166951280, 179796992, 191547488,
+201411424, 208091696, 210612304, 208791248, 202888880, 193053408, 179311120, 162035696, 142256832, 121402080,
+100614976, 80314280, 60539712, 41757284, 25057376, 11293617, 126165, -9823127, -19814294, -30041686,
+-39722004, -47958140, -54550380, -60103772, -65415572, -70796096, -75989784, -80636936, -84662936, -88305064,
+-91958472, -95962456, -100363720, -104873976, -109146928, -113031192, -116513872, -119557928, -122106456, -124112208,
+-125511832, -126300496, -126655904, -126842736, -126988224, -127060704, -126995200, -126714424, -126185064, -125603096,
+-125345936, -125597728, -126224256, -127060168, -128004520, -128815736, -129247376, -129471256, -129961416, -130892888,
+-132046088, -133215392, -134260672, -134826544, -134499056, -133149888, -130776920, -127238408, -122458104, -116582592,
+-109666088, -101599600, -92521112, -82809120, -72629504, -62070868, -51628192, -41856068, -32731946, -24047522,
+-16039555, -8904004, -2273648, 4118337, 10006737, 15390478, 20740398, 25972740, 30525406, 34676492,
+39222180, 43891344, 47938276, 51878372, 56495464, 61012696, 64582348, 68081136, 72005664, 75044352,
+77184856, 80520440, 84550192, 86223080, 86974696, 91581584, 97592392, 97656816, 95367600, 101955544,
+112541032, 109671992, 100214472, 116350128, 158572880, 173721760, 126094336, 58961312, 38272452, 60790968,
+74576736, 71284648, 88594440, 124262528, 123211336, 68228776, 16135118, 13064754, 31056908, 25668336,
+5967857, 2714419, 8382166, 107911, -6194417, 21946746, 71502616, 93503584, 71871984, 41361072,
+33930240, 42570644, 46276124, 41583872, 36570036, 33631204, 31004296, 29609504, 29946122, },
{
1443109,
--2916283, -6827925, -4448513, 10190347, 35941896, 50278496, 21301964, -45321568, -90000504, -62208844,
-10385231, 52024400, 33970508, -263604, -7722888, 259846, -5224291, -19049790, -17630840, -2166811,
-5846524, 1266479, -181999, 9330280, 18641232, 16736414, 6763500, -2556579, -8128763, -10948409,
--10774462, -6565932, 1125818, 10446971, 19356344, 26142930, 30390652, 33340758, 36155572, 38265476,
-38332048, 36147520, 32708860, 29106456, 26172456, 24637544, 24765856, 25979184, 27272506, 27890980,
-27470610, 25853018, 23069880, 19397146, 15212237, 10771241, 6171868, 1490891, -3144453, -7651484,
--12047920, -16274705, -20060182, -23145042, -25582436, -27581744, -29147258, -30173756, -30836254, -31517544,
--32333588, -33101850, -33842196, -34967476, -36871756, -39647380, -43362528, -48338248, -54939612, -63217088,
--72916736, -83794808, -95823944, -109095392, -123496952, -138459552, -153138672, -166951280, -179796992, -191547488,
--201411424, -208091696, -210612304, -208791248, -202888880, -193053408, -179311120, -162035696, -142256832, -121402080,
--100614976, -80314280, -60539712, -41757284, -25057376, -11293617, -126165, 9823127, 19814294, 30041686,
-39722004, 47958140, 54550380, 60103772, 65415572, 70796096, 75989784, 80636936, 84662936, 88305064,
-91958472, 95962456, 100363720, 104873976, 109146928, 113031192, 116513872, 119557928, 122106456, 124112208,
-125511832, 126300496, 126655904, 126842736, 126988224, 127060704, 126995200, 126714424, 126185064, 125603096,
-125345936, 125597728, 126224256, 127060168, 128004520, 128815736, 129247376, 129471256, 129961416, 130892888,
-132046088, 133215392, 134260672, 134826544, 134499056, 133149888, 130776920, 127238408, 122458104, 116582592,
-109666088, 101599600, 92521112, 82809120, 72629504, 62070868, 51628192, 41856068, 32731946, 24047522,
-16039555, 8904004, 2273648, -4118337, -10006737, -15390478, -20740398, -25972740, -30525406, -34676492,
--39222180, -43891344, -47938276, -51878372, -56495464, -61012696, -64582348, -68081136, -72005664, -75044352,
--77184856, -80520440, -84550192, -86223080, -86974696, -91581584, -97592392, -97656816, -95367600, -101955544,
--112541032, -109671992, -100214472, -116350128, -158572880, -173721760, -126094336, -58961312, -38272452, -60790968,
--74576736, -71284648, -88594440, -124262528, -123211336, -68228776, -16135118, -13064754, -31056908, -25668336,
--5967857, -2714419, -8382166, -107911, 6194417, -21946746, -71502616, -93503584, -71871984, -41361072,
--33930240, -42570644, -46276124, -41583872, -36570036, -33631204, -31004296, -29609504, -29946122, },
+-2916283, -6827925, -4448513, 10190347, 35941896, 50278496, 21301964, -45321568, -90000504, -62208844,
+10385231, 52024400, 33970508, -263604, -7722888, 259846, -5224291, -19049790, -17630840, -2166811,
+5846524, 1266479, -181999, 9330280, 18641232, 16736414, 6763500, -2556579, -8128763, -10948409,
+-10774462, -6565932, 1125818, 10446971, 19356344, 26142930, 30390652, 33340758, 36155572, 38265476,
+38332048, 36147520, 32708860, 29106456, 26172456, 24637544, 24765856, 25979184, 27272506, 27890980,
+27470610, 25853018, 23069880, 19397146, 15212237, 10771241, 6171868, 1490891, -3144453, -7651484,
+-12047920, -16274705, -20060182, -23145042, -25582436, -27581744, -29147258, -30173756, -30836254, -31517544,
+-32333588, -33101850, -33842196, -34967476, -36871756, -39647380, -43362528, -48338248, -54939612, -63217088,
+-72916736, -83794808, -95823944, -109095392, -123496952, -138459552, -153138672, -166951280, -179796992, -191547488,
+-201411424, -208091696, -210612304, -208791248, -202888880, -193053408, -179311120, -162035696, -142256832, -121402080,
+-100614976, -80314280, -60539712, -41757284, -25057376, -11293617, -126165, 9823127, 19814294, 30041686,
+39722004, 47958140, 54550380, 60103772, 65415572, 70796096, 75989784, 80636936, 84662936, 88305064,
+91958472, 95962456, 100363720, 104873976, 109146928, 113031192, 116513872, 119557928, 122106456, 124112208,
+125511832, 126300496, 126655904, 126842736, 126988224, 127060704, 126995200, 126714424, 126185064, 125603096,
+125345936, 125597728, 126224256, 127060168, 128004520, 128815736, 129247376, 129471256, 129961416, 130892888,
+132046088, 133215392, 134260672, 134826544, 134499056, 133149888, 130776920, 127238408, 122458104, 116582592,
+109666088, 101599600, 92521112, 82809120, 72629504, 62070868, 51628192, 41856068, 32731946, 24047522,
+16039555, 8904004, 2273648, -4118337, -10006737, -15390478, -20740398, -25972740, -30525406, -34676492,
+-39222180, -43891344, -47938276, -51878372, -56495464, -61012696, -64582348, -68081136, -72005664, -75044352,
+-77184856, -80520440, -84550192, -86223080, -86974696, -91581584, -97592392, -97656816, -95367600, -101955544,
+-112541032, -109671992, -100214472, -116350128, -158572880, -173721760, -126094336, -58961312, -38272452, -60790968,
+-74576736, -71284648, -88594440, -124262528, -123211336, -68228776, -16135118, -13064754, -31056908, -25668336,
+-5967857, -2714419, -8382166, -107911, 6194417, -21946746, -71502616, -93503584, -71871984, -41361072,
+-33930240, -42570644, -46276124, -41583872, -36570036, -33631204, -31004296, -29609504, -29946122, },
},
{
{
-16855062,
--9421548, 6735046, 14541149, -696858, -10459856, 31685584, 111822696, 141461184, 46983720, -137070128,
--274288416, -233875472, -17981418, 207736288, 249013616, 80600432, -120410480, -170559600, -71937480, 34109020,
-58366996, 33574832, 14930380, 994822, -26393648, -51163260, -50008452, -32954210, -25242060, -30743912,
--35949412, -33978560, -26447872, -12712566, 8307541, 31826244, 51606180, 66345972, 77356120, 84789096,
-89105000, 92007864, 94001264, 94112936, 92410520, 89962920, 86695528, 81840600, 75707392, 68811816,
-60250876, 48849348, 34935800, 19663434, 3723737, -12246026, -27256400, -40934260, -53897008, -66593468,
--78649440, -89627912, -99442992, -107755360, -113711408, -116477904, -115559320, -110695264, -101907760, -89489936,
--73636144, -54377508, -32165010, -8080444, 16866874, 42273752, 67840616, 92708480, 115740240, 136301328,
-154419104, 170198272, 183356448, 193434592, 200290976, 204173616, 205277424, 203442400, 198369504, 189873520,
-177717696, 161489696, 141020416, 116809152, 89718648, 60403348, 29473140, -1858647, -31750008, -58535036,
--81430432, -100451768, -115763328, -127038152, -133412960, -134269808, -130168648, -122766808, -113663088, -103536096,
--92426088, -80411992, -67775656, -54875188, -42179264, -30258582, -19552302, -10249939, -2371359, 4298189,
-10300405, 16173773, 21946210, 27116276, 31076772, 33417530, 34017752, 33116346, 31163746, 28391882,
-24641302, 19670414, 13437879, 6062347, -2212445, -11009075, -20040854, -29295972, -38747584, -48046724,
--56775708, -64774012, -71954120, -78098608, -83117280, -87159384, -90254440, -92231200, -93148712, -93386008,
--93218504, -92764848, -92332136, -92295088, -92656400, -93204552, -93935768, -94896768, -95902328, -96840240,
--97889280, -99085968, -100114616, -100798048, -101271032, -101534640, -101465384, -101275328, -101294120, -101381096,
--101242040, -101033200, -100954280, -100668664, -99784440, -98339720, -96269008, -93179312, -89117888, -84647360,
--79874040, -74464536, -68683504, -63166620, -57808648, -52207476, -46784004, -42070280, -37632504, -33078764,
--29027536, -25747256, -22391812, -18797462, -15994995, -13892072, -11106249, -7990787, -6463389, -6082211,
--4431870, -2181307, -2782602, -6077916, -7808251, -7052873, -8244190, -13497472, -18622442, -19725174,
--18895708, -19746112, -20739324, -17023640, -8380018, -2305324, -6387690, -17554606, -23748484, -19843822,
--15245523, -17352742, -15122043, 5159867, 31018790, 31144956, -3549254, -43825308, -55629492, -36705864,
--11915850, -2823404, -9434433, -15443092, -8246874, 1931125, -11863237, -57452704, -101456256, },
+-9421548, 6735046, 14541149, -696858, -10459856, 31685584, 111822696, 141461184, 46983720, -137070128,
+-274288416, -233875472, -17981418, 207736288, 249013616, 80600432, -120410480, -170559600, -71937480, 34109020,
+58366996, 33574832, 14930380, 994822, -26393648, -51163260, -50008452, -32954210, -25242060, -30743912,
+-35949412, -33978560, -26447872, -12712566, 8307541, 31826244, 51606180, 66345972, 77356120, 84789096,
+89105000, 92007864, 94001264, 94112936, 92410520, 89962920, 86695528, 81840600, 75707392, 68811816,
+60250876, 48849348, 34935800, 19663434, 3723737, -12246026, -27256400, -40934260, -53897008, -66593468,
+-78649440, -89627912, -99442992, -107755360, -113711408, -116477904, -115559320, -110695264, -101907760, -89489936,
+-73636144, -54377508, -32165010, -8080444, 16866874, 42273752, 67840616, 92708480, 115740240, 136301328,
+154419104, 170198272, 183356448, 193434592, 200290976, 204173616, 205277424, 203442400, 198369504, 189873520,
+177717696, 161489696, 141020416, 116809152, 89718648, 60403348, 29473140, -1858647, -31750008, -58535036,
+-81430432, -100451768, -115763328, -127038152, -133412960, -134269808, -130168648, -122766808, -113663088, -103536096,
+-92426088, -80411992, -67775656, -54875188, -42179264, -30258582, -19552302, -10249939, -2371359, 4298189,
+10300405, 16173773, 21946210, 27116276, 31076772, 33417530, 34017752, 33116346, 31163746, 28391882,
+24641302, 19670414, 13437879, 6062347, -2212445, -11009075, -20040854, -29295972, -38747584, -48046724,
+-56775708, -64774012, -71954120, -78098608, -83117280, -87159384, -90254440, -92231200, -93148712, -93386008,
+-93218504, -92764848, -92332136, -92295088, -92656400, -93204552, -93935768, -94896768, -95902328, -96840240,
+-97889280, -99085968, -100114616, -100798048, -101271032, -101534640, -101465384, -101275328, -101294120, -101381096,
+-101242040, -101033200, -100954280, -100668664, -99784440, -98339720, -96269008, -93179312, -89117888, -84647360,
+-79874040, -74464536, -68683504, -63166620, -57808648, -52207476, -46784004, -42070280, -37632504, -33078764,
+-29027536, -25747256, -22391812, -18797462, -15994995, -13892072, -11106249, -7990787, -6463389, -6082211,
+-4431870, -2181307, -2782602, -6077916, -7808251, -7052873, -8244190, -13497472, -18622442, -19725174,
+-18895708, -19746112, -20739324, -17023640, -8380018, -2305324, -6387690, -17554606, -23748484, -19843822,
+-15245523, -17352742, -15122043, 5159867, 31018790, 31144956, -3549254, -43825308, -55629492, -36705864,
+-11915850, -2823404, -9434433, -15443092, -8246874, 1931125, -11863237, -57452704, -101456256, },
{
16855062,
-9421548, -6735046, -14541149, 696858, 10459856, -31685584, -111822696, -141461184, -46983720, 137070128,
-274288416, 233875472, 17981418, -207736288, -249013616, -80600432, 120410480, 170559600, 71937480, -34109020,
--58366996, -33574832, -14930380, -994822, 26393648, 51163260, 50008452, 32954210, 25242060, 30743912,
-35949412, 33978560, 26447872, 12712566, -8307541, -31826244, -51606180, -66345972, -77356120, -84789096,
--89105000, -92007864, -94001264, -94112936, -92410520, -89962920, -86695528, -81840600, -75707392, -68811816,
--60250876, -48849348, -34935800, -19663434, -3723737, 12246026, 27256400, 40934260, 53897008, 66593468,
-78649440, 89627912, 99442992, 107755360, 113711408, 116477904, 115559320, 110695264, 101907760, 89489936,
-73636144, 54377508, 32165010, 8080444, -16866874, -42273752, -67840616, -92708480, -115740240, -136301328,
--154419104, -170198272, -183356448, -193434592, -200290976, -204173616, -205277424, -203442400, -198369504, -189873520,
--177717696, -161489696, -141020416, -116809152, -89718648, -60403348, -29473140, 1858647, 31750008, 58535036,
-81430432, 100451768, 115763328, 127038152, 133412960, 134269808, 130168648, 122766808, 113663088, 103536096,
-92426088, 80411992, 67775656, 54875188, 42179264, 30258582, 19552302, 10249939, 2371359, -4298189,
--10300405, -16173773, -21946210, -27116276, -31076772, -33417530, -34017752, -33116346, -31163746, -28391882,
--24641302, -19670414, -13437879, -6062347, 2212445, 11009075, 20040854, 29295972, 38747584, 48046724,
-56775708, 64774012, 71954120, 78098608, 83117280, 87159384, 90254440, 92231200, 93148712, 93386008,
-93218504, 92764848, 92332136, 92295088, 92656400, 93204552, 93935768, 94896768, 95902328, 96840240,
-97889280, 99085968, 100114616, 100798048, 101271032, 101534640, 101465384, 101275328, 101294120, 101381096,
-101242040, 101033200, 100954280, 100668664, 99784440, 98339720, 96269008, 93179312, 89117888, 84647360,
-79874040, 74464536, 68683504, 63166620, 57808648, 52207476, 46784004, 42070280, 37632504, 33078764,
-29027536, 25747256, 22391812, 18797462, 15994995, 13892072, 11106249, 7990787, 6463389, 6082211,
-4431870, 2181307, 2782602, 6077916, 7808251, 7052873, 8244190, 13497472, 18622442, 19725174,
-18895708, 19746112, 20739324, 17023640, 8380018, 2305324, 6387690, 17554606, 23748484, 19843822,
-15245523, 17352742, 15122043, -5159867, -31018790, -31144956, 3549254, 43825308, 55629492, 36705864,
-11915850, 2823404, 9434433, 15443092, 8246874, -1931125, 11863237, 57452704, 101456256, },
+9421548, -6735046, -14541149, 696858, 10459856, -31685584, -111822696, -141461184, -46983720, 137070128,
+274288416, 233875472, 17981418, -207736288, -249013616, -80600432, 120410480, 170559600, 71937480, -34109020,
+-58366996, -33574832, -14930380, -994822, 26393648, 51163260, 50008452, 32954210, 25242060, 30743912,
+35949412, 33978560, 26447872, 12712566, -8307541, -31826244, -51606180, -66345972, -77356120, -84789096,
+-89105000, -92007864, -94001264, -94112936, -92410520, -89962920, -86695528, -81840600, -75707392, -68811816,
+-60250876, -48849348, -34935800, -19663434, -3723737, 12246026, 27256400, 40934260, 53897008, 66593468,
+78649440, 89627912, 99442992, 107755360, 113711408, 116477904, 115559320, 110695264, 101907760, 89489936,
+73636144, 54377508, 32165010, 8080444, -16866874, -42273752, -67840616, -92708480, -115740240, -136301328,
+-154419104, -170198272, -183356448, -193434592, -200290976, -204173616, -205277424, -203442400, -198369504, -189873520,
+-177717696, -161489696, -141020416, -116809152, -89718648, -60403348, -29473140, 1858647, 31750008, 58535036,
+81430432, 100451768, 115763328, 127038152, 133412960, 134269808, 130168648, 122766808, 113663088, 103536096,
+92426088, 80411992, 67775656, 54875188, 42179264, 30258582, 19552302, 10249939, 2371359, -4298189,
+-10300405, -16173773, -21946210, -27116276, -31076772, -33417530, -34017752, -33116346, -31163746, -28391882,
+-24641302, -19670414, -13437879, -6062347, 2212445, 11009075, 20040854, 29295972, 38747584, 48046724,
+56775708, 64774012, 71954120, 78098608, 83117280, 87159384, 90254440, 92231200, 93148712, 93386008,
+93218504, 92764848, 92332136, 92295088, 92656400, 93204552, 93935768, 94896768, 95902328, 96840240,
+97889280, 99085968, 100114616, 100798048, 101271032, 101534640, 101465384, 101275328, 101294120, 101381096,
+101242040, 101033200, 100954280, 100668664, 99784440, 98339720, 96269008, 93179312, 89117888, 84647360,
+79874040, 74464536, 68683504, 63166620, 57808648, 52207476, 46784004, 42070280, 37632504, 33078764,
+29027536, 25747256, 22391812, 18797462, 15994995, 13892072, 11106249, 7990787, 6463389, 6082211,
+4431870, 2181307, 2782602, 6077916, 7808251, 7052873, 8244190, 13497472, 18622442, 19725174,
+18895708, 19746112, 20739324, 17023640, 8380018, 2305324, 6387690, 17554606, 23748484, 19843822,
+15245523, 17352742, 15122043, -5159867, -31018790, -31144956, 3549254, 43825308, 55629492, 36705864,
+11915850, 2823404, 9434433, 15443092, 8246874, -1931125, 11863237, 57452704, 101456256, },
},
{
{
-10470057,
--12942884, -12745852, -5259188, 8346732, 21582210, 26531086, 16127065, -12313134, -48213692, -65599184,
--43744780, 4936528, 39658656, 33028836, -708133, -27792734, -34398928, -30497490, -23885386, -10569915,
-9479530, 25550224, 31105226, 32856500, 38252052, 42853036, 36798208, 18005040, -6361384, -27448062,
--39666708, -41641856, -36514200, -30181808, -26812408, -26179974, -25506200, -22668300, -17521320, -11483132,
--6290517, -2583423, 323196, 3242700, 6392522, 9896678, 13967771, 18304076, 22140556, 25072408,
-27159762, 28331752, 28344636, 27087822, 24391120, 19908784, 13641353, 6088653, -2334852, -11470784,
--20963198, -30399242, -39853540, -49548892, -59197536, -68443528, -77530064, -86653648, -95127624, -101969504,
--106768592, -109260744, -108752328, -104731704, -97443144, -87307560, -74422656, -59063316, -41965588, -23700166,
--4328254, 16065862, 36932424, 57482768, 77115600, 95685432, 113377472, 129973760, 144324864, 155117568,
-162090992, 165811504, 166406368, 163296272, 156047440, 144834880, 130329712, 113758648, 96646968, 79828408,
-63017372, 45769856, 28480466, 12293807, -1440962, -11697343, -18540300, -23277112, -27110370, -29834454,
--30441118, -28513752, -24380382, -18583786, -11894912, -5140539, 1609002, 9041980, 17504676, 26640072,
-36108864, 45703820, 54845660, 62985696, 70323648, 77253040, 83527448, 88758720, 93038656, 96317864,
-98002560, 97827544, 96204048, 93308168, 88845160, 82897704, 75859856, 67580776, 57710400, 46616500,
-34867620, 22393422, 9161165, -4181151, -17242684, -30352534, -43362528, -55311124, -65827352, -75440560,
--84275312, -92010544, -99078456, -106269840, -113417200, -119903136, -125755032, -130954624, -134836208, -137331584,
--139376528, -141256640, -142338976, -142835584, -143646784, -144416128, -144120304, -143218368, -142758272, -142301392,
--141159472, -140213504, -140188272, -140127600, -139490880, -139126880, -138788640, -136974560, -134036264, -131654704,
--129288176, -125414120, -121233504, -118497072, -115775672, -111627272, -108029168, -106125960, -103531264, -99802688,
--97849016, -96995392, -93625992, -89979568, -90543816, -90746752, -84661320, -79976584, -84875536, -87457344,
--75802952, -67523328, -81065896, -89801864, -57851600, -15802258, -34449932, -114977888, -175820928, -169301712,
--139757168, -133547176, -123692376, -75457208, -27874874, -44988708, -118811680, -179056112, -183894928, -155834832,
--134097472, -124879392, -101552888, -41813656, 33384780, 63154808, 9710384, -84638776, -133886480, -106619880,
--56604984, -45735496, -70000984, -82993800, -66955320, -50478212, -64196876, -103361608, -136314752, },
+-12942884, -12745852, -5259188, 8346732, 21582210, 26531086, 16127065, -12313134, -48213692, -65599184,
+-43744780, 4936528, 39658656, 33028836, -708133, -27792734, -34398928, -30497490, -23885386, -10569915,
+9479530, 25550224, 31105226, 32856500, 38252052, 42853036, 36798208, 18005040, -6361384, -27448062,
+-39666708, -41641856, -36514200, -30181808, -26812408, -26179974, -25506200, -22668300, -17521320, -11483132,
+-6290517, -2583423, 323196, 3242700, 6392522, 9896678, 13967771, 18304076, 22140556, 25072408,
+27159762, 28331752, 28344636, 27087822, 24391120, 19908784, 13641353, 6088653, -2334852, -11470784,
+-20963198, -30399242, -39853540, -49548892, -59197536, -68443528, -77530064, -86653648, -95127624, -101969504,
+-106768592, -109260744, -108752328, -104731704, -97443144, -87307560, -74422656, -59063316, -41965588, -23700166,
+-4328254, 16065862, 36932424, 57482768, 77115600, 95685432, 113377472, 129973760, 144324864, 155117568,
+162090992, 165811504, 166406368, 163296272, 156047440, 144834880, 130329712, 113758648, 96646968, 79828408,
+63017372, 45769856, 28480466, 12293807, -1440962, -11697343, -18540300, -23277112, -27110370, -29834454,
+-30441118, -28513752, -24380382, -18583786, -11894912, -5140539, 1609002, 9041980, 17504676, 26640072,
+36108864, 45703820, 54845660, 62985696, 70323648, 77253040, 83527448, 88758720, 93038656, 96317864,
+98002560, 97827544, 96204048, 93308168, 88845160, 82897704, 75859856, 67580776, 57710400, 46616500,
+34867620, 22393422, 9161165, -4181151, -17242684, -30352534, -43362528, -55311124, -65827352, -75440560,
+-84275312, -92010544, -99078456, -106269840, -113417200, -119903136, -125755032, -130954624, -134836208, -137331584,
+-139376528, -141256640, -142338976, -142835584, -143646784, -144416128, -144120304, -143218368, -142758272, -142301392,
+-141159472, -140213504, -140188272, -140127600, -139490880, -139126880, -138788640, -136974560, -134036264, -131654704,
+-129288176, -125414120, -121233504, -118497072, -115775672, -111627272, -108029168, -106125960, -103531264, -99802688,
+-97849016, -96995392, -93625992, -89979568, -90543816, -90746752, -84661320, -79976584, -84875536, -87457344,
+-75802952, -67523328, -81065896, -89801864, -57851600, -15802258, -34449932, -114977888, -175820928, -169301712,
+-139757168, -133547176, -123692376, -75457208, -27874874, -44988708, -118811680, -179056112, -183894928, -155834832,
+-134097472, -124879392, -101552888, -41813656, 33384780, 63154808, 9710384, -84638776, -133886480, -106619880,
+-56604984, -45735496, -70000984, -82993800, -66955320, -50478212, -64196876, -103361608, -136314752, },
{
-10470057,
--12942884, -12745852, -5259188, 8346732, 21582210, 26531086, 16127065, -12313134, -48213692, -65599184,
--43744780, 4936528, 39658656, 33028836, -708133, -27792734, -34398928, -30497490, -23885386, -10569915,
-9479530, 25550224, 31105226, 32856500, 38252052, 42853036, 36798208, 18005040, -6361384, -27448062,
--39666708, -41641856, -36514200, -30181808, -26812408, -26179974, -25506200, -22668300, -17521320, -11483132,
--6290517, -2583423, 323196, 3242700, 6392522, 9896678, 13967771, 18304076, 22140556, 25072408,
-27159762, 28331752, 28344636, 27087822, 24391120, 19908784, 13641353, 6088653, -2334852, -11470784,
--20963198, -30399242, -39853540, -49548892, -59197536, -68443528, -77530064, -86653648, -95127624, -101969504,
--106768592, -109260744, -108752328, -104731704, -97443144, -87307560, -74422656, -59063316, -41965588, -23700166,
--4328254, 16065862, 36932424, 57482768, 77115600, 95685432, 113377472, 129973760, 144324864, 155117568,
-162090992, 165811504, 166406368, 163296272, 156047440, 144834880, 130329712, 113758648, 96646968, 79828408,
-63017372, 45769856, 28480466, 12293807, -1440962, -11697343, -18540300, -23277112, -27110370, -29834454,
--30441118, -28513752, -24380382, -18583786, -11894912, -5140539, 1609002, 9041980, 17504676, 26640072,
-36108864, 45703820, 54845660, 62985696, 70323648, 77253040, 83527448, 88758720, 93038656, 96317864,
-98002560, 97827544, 96204048, 93308168, 88845160, 82897704, 75859856, 67580776, 57710400, 46616500,
-34867620, 22393422, 9161165, -4181151, -17242684, -30352534, -43362528, -55311124, -65827352, -75440560,
--84275312, -92010544, -99078456, -106269840, -113417200, -119903136, -125755032, -130954624, -134836208, -137331584,
--139376528, -141256640, -142338976, -142835584, -143646784, -144416128, -144120304, -143218368, -142758272, -142301392,
--141159472, -140213504, -140188272, -140127600, -139490880, -139126880, -138788640, -136974560, -134036264, -131654704,
--129288176, -125414120, -121233504, -118497072, -115775672, -111627272, -108029168, -106125960, -103531264, -99802688,
--97849016, -96995392, -93625992, -89979568, -90543816, -90746752, -84661320, -79976584, -84875536, -87457344,
--75802952, -67523328, -81065896, -89801864, -57851600, -15802258, -34449932, -114977888, -175820928, -169301712,
--139757168, -133547176, -123692376, -75457208, -27874874, -44988708, -118811680, -179056112, -183894928, -155834832,
--134097472, -124879392, -101552888, -41813656, 33384780, 63154808, 9710384, -84638776, -133886480, -106619880,
--56604984, -45735496, -70000984, -82993800, -66955320, -50478212, -64196876, -103361608, -136314752, },
+-12942884, -12745852, -5259188, 8346732, 21582210, 26531086, 16127065, -12313134, -48213692, -65599184,
+-43744780, 4936528, 39658656, 33028836, -708133, -27792734, -34398928, -30497490, -23885386, -10569915,
+9479530, 25550224, 31105226, 32856500, 38252052, 42853036, 36798208, 18005040, -6361384, -27448062,
+-39666708, -41641856, -36514200, -30181808, -26812408, -26179974, -25506200, -22668300, -17521320, -11483132,
+-6290517, -2583423, 323196, 3242700, 6392522, 9896678, 13967771, 18304076, 22140556, 25072408,
+27159762, 28331752, 28344636, 27087822, 24391120, 19908784, 13641353, 6088653, -2334852, -11470784,
+-20963198, -30399242, -39853540, -49548892, -59197536, -68443528, -77530064, -86653648, -95127624, -101969504,
+-106768592, -109260744, -108752328, -104731704, -97443144, -87307560, -74422656, -59063316, -41965588, -23700166,
+-4328254, 16065862, 36932424, 57482768, 77115600, 95685432, 113377472, 129973760, 144324864, 155117568,
+162090992, 165811504, 166406368, 163296272, 156047440, 144834880, 130329712, 113758648, 96646968, 79828408,
+63017372, 45769856, 28480466, 12293807, -1440962, -11697343, -18540300, -23277112, -27110370, -29834454,
+-30441118, -28513752, -24380382, -18583786, -11894912, -5140539, 1609002, 9041980, 17504676, 26640072,
+36108864, 45703820, 54845660, 62985696, 70323648, 77253040, 83527448, 88758720, 93038656, 96317864,
+98002560, 97827544, 96204048, 93308168, 88845160, 82897704, 75859856, 67580776, 57710400, 46616500,
+34867620, 22393422, 9161165, -4181151, -17242684, -30352534, -43362528, -55311124, -65827352, -75440560,
+-84275312, -92010544, -99078456, -106269840, -113417200, -119903136, -125755032, -130954624, -134836208, -137331584,
+-139376528, -141256640, -142338976, -142835584, -143646784, -144416128, -144120304, -143218368, -142758272, -142301392,
+-141159472, -140213504, -140188272, -140127600, -139490880, -139126880, -138788640, -136974560, -134036264, -131654704,
+-129288176, -125414120, -121233504, -118497072, -115775672, -111627272, -108029168, -106125960, -103531264, -99802688,
+-97849016, -96995392, -93625992, -89979568, -90543816, -90746752, -84661320, -79976584, -84875536, -87457344,
+-75802952, -67523328, -81065896, -89801864, -57851600, -15802258, -34449932, -114977888, -175820928, -169301712,
+-139757168, -133547176, -123692376, -75457208, -27874874, -44988708, -118811680, -179056112, -183894928, -155834832,
+-134097472, -124879392, -101552888, -41813656, 33384780, 63154808, 9710384, -84638776, -133886480, -106619880,
+-56604984, -45735496, -70000984, -82993800, -66955320, -50478212, -64196876, -103361608, -136314752, },
},
{
{
-10983842,
--13006235, -3929358, 17680232, 37721088, 46443092, 40728100, 10941429, -45254996, -94501088, -86430848,
--14913200, 62980328, 84985056, 45491220, -10434086, -37785512, -24608016, 9770514, 33019172, 23539642,
--11264625, -42012296, -46957416, -29937532, -7779797, 9924596, 23110682, 32777042, 39185672, 44401908,
-49861348, 53220552, 51618528, 46033996, 39414916, 32559610, 24599962, 15992311, 8638253, 3759707,
-1116155, -229781, -1309428, -3022046, -5972152, -10582263, -17145510, -25346750, -33986076, -41676216,
--47652124, -51702280, -53836880, -54471460, -54538568, -54916524, -55923160, -57564372, -59957208, -63242856,
--67312336, -71798432, -76145472, -79616344, -81476064, -81290312, -78923248, -74315280, -67587752, -59334972,
--50400368, -41213968, -31722628, -22126060, -13195213, -5475010, 1385127, 7913477, 13701483, 17743584,
-19851876, 20965882, 21868900, 22339736, 22064320, 21849572, 23214298, 26851598, 31973884, 37264212,
-42150272, 47022376, 52471616, 58609660, 65099892, 71545568, 77639584, 83133920, 88036632, 92906048,
-98628016, 105656736, 113549808, 121376312, 128510256, 134914592, 140710640, 145655232, 149133072, 150623424,
-150069920, 147765136, 143911472, 138366128, 130764576, 120871656, 108866144, 95364384, 81130320, 66660576,
-52002928, 36966248, 21507048, 5965710, -8986682, -22654342, -34726420, -45481556, -55559696, -65417720,
--74898328, -83278880, -89790048, -94177360, -96808024, -98299992, -99149320, -99631968, -99754376, -99183680,
--97453880, -94422712, -90353760, -85500984, -79889616, -73622184, -67088464, -60686816, -54556284, -48695264,
--43115028, -37770480, -32540820, -27353036, -22235046, -17331266, -12957379, -9450002, -6832219, -4832912,
--3287798, -2183454, -1323924, -408559, 513785, 1160178, 1595044, 2214056, 3241090, 4732517,
-6899865, 9940165, 13769128, 18282066, 23430120, 28734404, 33386392, 37118716, 40237400, 42695732,
-44135084, 44812616, 45314052, 45488000, 44896368, 43860208, 42726872, 40971840, 38429220, 36053568,
-34061776, 31361314, 28194312, 26342646, 25353728, 22824530, 19765976, 19673634, 20761336, 17531520,
-12257300, 13286481, 17734456, 11180337, -6809671, -14278082, 1575179, 21179020, 20340966, 6315750,
-2094870, 6956237, 2289218, -9325985, -3779571, 22872312, 43185360, 38782480, 25930866, 26627186,
-36120140, 37453188, 31576062, 30486214, 29011430, 7890929, -32850594, -64304788, -62836444, -39954472,
--24018530, -21896818, -18189186, -8540542, -7630010, -15991774, -5650030, 39217348, 85677616, },
+-13006235, -3929358, 17680232, 37721088, 46443092, 40728100, 10941429, -45254996, -94501088, -86430848,
+-14913200, 62980328, 84985056, 45491220, -10434086, -37785512, -24608016, 9770514, 33019172, 23539642,
+-11264625, -42012296, -46957416, -29937532, -7779797, 9924596, 23110682, 32777042, 39185672, 44401908,
+49861348, 53220552, 51618528, 46033996, 39414916, 32559610, 24599962, 15992311, 8638253, 3759707,
+1116155, -229781, -1309428, -3022046, -5972152, -10582263, -17145510, -25346750, -33986076, -41676216,
+-47652124, -51702280, -53836880, -54471460, -54538568, -54916524, -55923160, -57564372, -59957208, -63242856,
+-67312336, -71798432, -76145472, -79616344, -81476064, -81290312, -78923248, -74315280, -67587752, -59334972,
+-50400368, -41213968, -31722628, -22126060, -13195213, -5475010, 1385127, 7913477, 13701483, 17743584,
+19851876, 20965882, 21868900, 22339736, 22064320, 21849572, 23214298, 26851598, 31973884, 37264212,
+42150272, 47022376, 52471616, 58609660, 65099892, 71545568, 77639584, 83133920, 88036632, 92906048,
+98628016, 105656736, 113549808, 121376312, 128510256, 134914592, 140710640, 145655232, 149133072, 150623424,
+150069920, 147765136, 143911472, 138366128, 130764576, 120871656, 108866144, 95364384, 81130320, 66660576,
+52002928, 36966248, 21507048, 5965710, -8986682, -22654342, -34726420, -45481556, -55559696, -65417720,
+-74898328, -83278880, -89790048, -94177360, -96808024, -98299992, -99149320, -99631968, -99754376, -99183680,
+-97453880, -94422712, -90353760, -85500984, -79889616, -73622184, -67088464, -60686816, -54556284, -48695264,
+-43115028, -37770480, -32540820, -27353036, -22235046, -17331266, -12957379, -9450002, -6832219, -4832912,
+-3287798, -2183454, -1323924, -408559, 513785, 1160178, 1595044, 2214056, 3241090, 4732517,
+6899865, 9940165, 13769128, 18282066, 23430120, 28734404, 33386392, 37118716, 40237400, 42695732,
+44135084, 44812616, 45314052, 45488000, 44896368, 43860208, 42726872, 40971840, 38429220, 36053568,
+34061776, 31361314, 28194312, 26342646, 25353728, 22824530, 19765976, 19673634, 20761336, 17531520,
+12257300, 13286481, 17734456, 11180337, -6809671, -14278082, 1575179, 21179020, 20340966, 6315750,
+2094870, 6956237, 2289218, -9325985, -3779571, 22872312, 43185360, 38782480, 25930866, 26627186,
+36120140, 37453188, 31576062, 30486214, 29011430, 7890929, -32850594, -64304788, -62836444, -39954472,
+-24018530, -21896818, -18189186, -8540542, -7630010, -15991774, -5650030, 39217348, 85677616, },
{
-10983842,
--13006235, -3929358, 17680232, 37721088, 46443092, 40728100, 10941429, -45254996, -94501088, -86430848,
--14913200, 62980328, 84985056, 45491220, -10434086, -37785512, -24608016, 9770514, 33019172, 23539642,
--11264625, -42012296, -46957416, -29937532, -7779797, 9924596, 23110682, 32777042, 39185672, 44401908,
-49861348, 53220552, 51618528, 46033996, 39414916, 32559610, 24599962, 15992311, 8638253, 3759707,
-1116155, -229781, -1309428, -3022046, -5972152, -10582263, -17145510, -25346750, -33986076, -41676216,
--47652124, -51702280, -53836880, -54471460, -54538568, -54916524, -55923160, -57564372, -59957208, -63242856,
--67312336, -71798432, -76145472, -79616344, -81476064, -81290312, -78923248, -74315280, -67587752, -59334972,
--50400368, -41213968, -31722628, -22126060, -13195213, -5475010, 1385127, 7913477, 13701483, 17743584,
-19851876, 20965882, 21868900, 22339736, 22064320, 21849572, 23214298, 26851598, 31973884, 37264212,
-42150272, 47022376, 52471616, 58609660, 65099892, 71545568, 77639584, 83133920, 88036632, 92906048,
-98628016, 105656736, 113549808, 121376312, 128510256, 134914592, 140710640, 145655232, 149133072, 150623424,
-150069920, 147765136, 143911472, 138366128, 130764576, 120871656, 108866144, 95364384, 81130320, 66660576,
-52002928, 36966248, 21507048, 5965710, -8986682, -22654342, -34726420, -45481556, -55559696, -65417720,
--74898328, -83278880, -89790048, -94177360, -96808024, -98299992, -99149320, -99631968, -99754376, -99183680,
--97453880, -94422712, -90353760, -85500984, -79889616, -73622184, -67088464, -60686816, -54556284, -48695264,
--43115028, -37770480, -32540820, -27353036, -22235046, -17331266, -12957379, -9450002, -6832219, -4832912,
--3287798, -2183454, -1323924, -408559, 513785, 1160178, 1595044, 2214056, 3241090, 4732517,
-6899865, 9940165, 13769128, 18282066, 23430120, 28734404, 33386392, 37118716, 40237400, 42695732,
-44135084, 44812616, 45314052, 45488000, 44896368, 43860208, 42726872, 40971840, 38429220, 36053568,
-34061776, 31361314, 28194312, 26342646, 25353728, 22824530, 19765976, 19673634, 20761336, 17531520,
-12257300, 13286481, 17734456, 11180337, -6809671, -14278082, 1575179, 21179020, 20340966, 6315750,
-2094870, 6956237, 2289218, -9325985, -3779571, 22872312, 43185360, 38782480, 25930866, 26627186,
-36120140, 37453188, 31576062, 30486214, 29011430, 7890929, -32850594, -64304788, -62836444, -39954472,
--24018530, -21896818, -18189186, -8540542, -7630010, -15991774, -5650030, 39217348, 85677616, },
+-13006235, -3929358, 17680232, 37721088, 46443092, 40728100, 10941429, -45254996, -94501088, -86430848,
+-14913200, 62980328, 84985056, 45491220, -10434086, -37785512, -24608016, 9770514, 33019172, 23539642,
+-11264625, -42012296, -46957416, -29937532, -7779797, 9924596, 23110682, 32777042, 39185672, 44401908,
+49861348, 53220552, 51618528, 46033996, 39414916, 32559610, 24599962, 15992311, 8638253, 3759707,
+1116155, -229781, -1309428, -3022046, -5972152, -10582263, -17145510, -25346750, -33986076, -41676216,
+-47652124, -51702280, -53836880, -54471460, -54538568, -54916524, -55923160, -57564372, -59957208, -63242856,
+-67312336, -71798432, -76145472, -79616344, -81476064, -81290312, -78923248, -74315280, -67587752, -59334972,
+-50400368, -41213968, -31722628, -22126060, -13195213, -5475010, 1385127, 7913477, 13701483, 17743584,
+19851876, 20965882, 21868900, 22339736, 22064320, 21849572, 23214298, 26851598, 31973884, 37264212,
+42150272, 47022376, 52471616, 58609660, 65099892, 71545568, 77639584, 83133920, 88036632, 92906048,
+98628016, 105656736, 113549808, 121376312, 128510256, 134914592, 140710640, 145655232, 149133072, 150623424,
+150069920, 147765136, 143911472, 138366128, 130764576, 120871656, 108866144, 95364384, 81130320, 66660576,
+52002928, 36966248, 21507048, 5965710, -8986682, -22654342, -34726420, -45481556, -55559696, -65417720,
+-74898328, -83278880, -89790048, -94177360, -96808024, -98299992, -99149320, -99631968, -99754376, -99183680,
+-97453880, -94422712, -90353760, -85500984, -79889616, -73622184, -67088464, -60686816, -54556284, -48695264,
+-43115028, -37770480, -32540820, -27353036, -22235046, -17331266, -12957379, -9450002, -6832219, -4832912,
+-3287798, -2183454, -1323924, -408559, 513785, 1160178, 1595044, 2214056, 3241090, 4732517,
+6899865, 9940165, 13769128, 18282066, 23430120, 28734404, 33386392, 37118716, 40237400, 42695732,
+44135084, 44812616, 45314052, 45488000, 44896368, 43860208, 42726872, 40971840, 38429220, 36053568,
+34061776, 31361314, 28194312, 26342646, 25353728, 22824530, 19765976, 19673634, 20761336, 17531520,
+12257300, 13286481, 17734456, 11180337, -6809671, -14278082, 1575179, 21179020, 20340966, 6315750,
+2094870, 6956237, 2289218, -9325985, -3779571, 22872312, 43185360, 38782480, 25930866, 26627186,
+36120140, 37453188, 31576062, 30486214, 29011430, 7890929, -32850594, -64304788, -62836444, -39954472,
+-24018530, -21896818, -18189186, -8540542, -7630010, -15991774, -5650030, 39217348, 85677616, },
},
{
{
10324028,
-2917894, -896574, -694711, -5630166, -7763691, 16464220, 60774860, 69673496, 7516, -103573136,
--135416560, -49716392, 73525544, 113157352, 43390444, -47776680, -72686416, -36822904, -2836826, 1784022,
-4785668, 31545998, 67513664, 85577224, 83043192, 75681080, 70517992, 60548840, 39773008, 10974178,
--19559818, -46844136, -67238248, -79171280, -84281216, -85352808, -83596168, -79180408, -72855528, -65625488,
--58138288, -51459076, -47203300, -46050104, -47078212, -48954036, -50823420, -51943872, -51584168, -49573588,
--46244448, -41780904, -36245764, -30135102, -24321326, -19505594, -16079284, -14329622, -14419816, -16262357,
--19583978, -24019068, -29147258, -34573948, -39960376, -44920528, -49046916, -52075404, -53814328, -53897008,
--51870320, -47521664, -40890772, -32073206, -21276194, -8932458, 4456566, 18388902, 32183800, 45177152,
-57294328, 68956776, 80292264, 90978144, 100936560, 110481592, 119705032, 128622456, 138112720, 149675856,
-163716096, 178787136, 193075424, 206050512, 218157488, 229284688, 238077024, 242689280, 241976848, 235966576,
-225290896, 210357840, 191294080, 168584976, 143340240, 116700168, 89182312, 60728152, 31309238, 1509144,
--27413166, -54177792, -78366512, -100525856, -121310816, -140697216, -158071984, -172816592, -184749088, -194308080,
--202391744, -209771568, -216545808, -222269920, -226527312, -229223472, -230488352, -230473312, -229108592, -225995808,
--220735552, -213378800, -204309440, -193762080, -181724896, -168168912, -153010896, -136079056, -117541984, -98166848,
--78799768, -59817620, -41325640, -23476292, -6266894, 10496363, 26674968, 41643468, 54920820, 66607964,
-77071040, 86648280, 95760592, 104841760, 113982528, 122839288, 130839200, 137375072, 142081280, 145099024,
-146820240, 147379648, 146776752, 145286928, 143180256, 140241424, 136197168, 131337952, 126123864, 120605904,
-114806088, 109120624, 103819024, 98736464, 93811216, 89157080, 84482008, 79365088, 74079592, 69140920,
-64355788, 59411208, 54780696, 50856172, 47135656, 43397424, 40339944, 38064148, 35719096, 33387466,
-31977106, 30885110, 28834262, 26812944, 26247082, 25228638, 21756156, 18828062, 19435264, 19375134,
-14382235, 10659035, 15308874, 19550154, 8751533, -11116986, -16849156, -1181116, 17405354, 23600308,
-23253490, 24434606, 22022982, 13565654, 11261941, 23040888, 37060736, 39835820, 36630164, 39961988,
-50042276, 60002840, 68639480, 74309376, 68069328, 48506288, 33592012, 40907416, 62417684, 74914432,
-71076880, 64213520, 64415920, 66957468, 67494336, 74431248, 97751848, 132080984, 157776160, },
+2917894, -896574, -694711, -5630166, -7763691, 16464220, 60774860, 69673496, 7516, -103573136,
+-135416560, -49716392, 73525544, 113157352, 43390444, -47776680, -72686416, -36822904, -2836826, 1784022,
+4785668, 31545998, 67513664, 85577224, 83043192, 75681080, 70517992, 60548840, 39773008, 10974178,
+-19559818, -46844136, -67238248, -79171280, -84281216, -85352808, -83596168, -79180408, -72855528, -65625488,
+-58138288, -51459076, -47203300, -46050104, -47078212, -48954036, -50823420, -51943872, -51584168, -49573588,
+-46244448, -41780904, -36245764, -30135102, -24321326, -19505594, -16079284, -14329622, -14419816, -16262357,
+-19583978, -24019068, -29147258, -34573948, -39960376, -44920528, -49046916, -52075404, -53814328, -53897008,
+-51870320, -47521664, -40890772, -32073206, -21276194, -8932458, 4456566, 18388902, 32183800, 45177152,
+57294328, 68956776, 80292264, 90978144, 100936560, 110481592, 119705032, 128622456, 138112720, 149675856,
+163716096, 178787136, 193075424, 206050512, 218157488, 229284688, 238077024, 242689280, 241976848, 235966576,
+225290896, 210357840, 191294080, 168584976, 143340240, 116700168, 89182312, 60728152, 31309238, 1509144,
+-27413166, -54177792, -78366512, -100525856, -121310816, -140697216, -158071984, -172816592, -184749088, -194308080,
+-202391744, -209771568, -216545808, -222269920, -226527312, -229223472, -230488352, -230473312, -229108592, -225995808,
+-220735552, -213378800, -204309440, -193762080, -181724896, -168168912, -153010896, -136079056, -117541984, -98166848,
+-78799768, -59817620, -41325640, -23476292, -6266894, 10496363, 26674968, 41643468, 54920820, 66607964,
+77071040, 86648280, 95760592, 104841760, 113982528, 122839288, 130839200, 137375072, 142081280, 145099024,
+146820240, 147379648, 146776752, 145286928, 143180256, 140241424, 136197168, 131337952, 126123864, 120605904,
+114806088, 109120624, 103819024, 98736464, 93811216, 89157080, 84482008, 79365088, 74079592, 69140920,
+64355788, 59411208, 54780696, 50856172, 47135656, 43397424, 40339944, 38064148, 35719096, 33387466,
+31977106, 30885110, 28834262, 26812944, 26247082, 25228638, 21756156, 18828062, 19435264, 19375134,
+14382235, 10659035, 15308874, 19550154, 8751533, -11116986, -16849156, -1181116, 17405354, 23600308,
+23253490, 24434606, 22022982, 13565654, 11261941, 23040888, 37060736, 39835820, 36630164, 39961988,
+50042276, 60002840, 68639480, 74309376, 68069328, 48506288, 33592012, 40907416, 62417684, 74914432,
+71076880, 64213520, 64415920, 66957468, 67494336, 74431248, 97751848, 132080984, 157776160, },
{
10324028,
-2917894, -896574, -694711, -5630166, -7763691, 16464220, 60774860, 69673496, 7516, -103573136,
--135416560, -49716392, 73525544, 113157352, 43390444, -47776680, -72686416, -36822904, -2836826, 1784022,
-4785668, 31545998, 67513664, 85577224, 83043192, 75681080, 70517992, 60548840, 39773008, 10974178,
--19559818, -46844136, -67238248, -79171280, -84281216, -85352808, -83596168, -79180408, -72855528, -65625488,
--58138288, -51459076, -47203300, -46050104, -47078212, -48954036, -50823420, -51943872, -51584168, -49573588,
--46244448, -41780904, -36245764, -30135102, -24321326, -19505594, -16079284, -14329622, -14419816, -16262357,
--19583978, -24019068, -29147258, -34573948, -39960376, -44920528, -49046916, -52075404, -53814328, -53897008,
--51870320, -47521664, -40890772, -32073206, -21276194, -8932458, 4456566, 18388902, 32183800, 45177152,
-57294328, 68956776, 80292264, 90978144, 100936560, 110481592, 119705032, 128622456, 138112720, 149675856,
-163716096, 178787136, 193075424, 206050512, 218157488, 229284688, 238077024, 242689280, 241976848, 235966576,
-225290896, 210357840, 191294080, 168584976, 143340240, 116700168, 89182312, 60728152, 31309238, 1509144,
--27413166, -54177792, -78366512, -100525856, -121310816, -140697216, -158071984, -172816592, -184749088, -194308080,
--202391744, -209771568, -216545808, -222269920, -226527312, -229223472, -230488352, -230473312, -229108592, -225995808,
--220735552, -213378800, -204309440, -193762080, -181724896, -168168912, -153010896, -136079056, -117541984, -98166848,
--78799768, -59817620, -41325640, -23476292, -6266894, 10496363, 26674968, 41643468, 54920820, 66607964,
-77071040, 86648280, 95760592, 104841760, 113982528, 122839288, 130839200, 137375072, 142081280, 145099024,
-146820240, 147379648, 146776752, 145286928, 143180256, 140241424, 136197168, 131337952, 126123864, 120605904,
-114806088, 109120624, 103819024, 98736464, 93811216, 89157080, 84482008, 79365088, 74079592, 69140920,
-64355788, 59411208, 54780696, 50856172, 47135656, 43397424, 40339944, 38064148, 35719096, 33387466,
-31977106, 30885110, 28834262, 26812944, 26247082, 25228638, 21756156, 18828062, 19435264, 19375134,
-14382235, 10659035, 15308874, 19550154, 8751533, -11116986, -16849156, -1181116, 17405354, 23600308,
-23253490, 24434606, 22022982, 13565654, 11261941, 23040888, 37060736, 39835820, 36630164, 39961988,
-50042276, 60002840, 68639480, 74309376, 68069328, 48506288, 33592012, 40907416, 62417684, 74914432,
-71076880, 64213520, 64415920, 66957468, 67494336, 74431248, 97751848, 132080984, 157776160, },
+2917894, -896574, -694711, -5630166, -7763691, 16464220, 60774860, 69673496, 7516, -103573136,
+-135416560, -49716392, 73525544, 113157352, 43390444, -47776680, -72686416, -36822904, -2836826, 1784022,
+4785668, 31545998, 67513664, 85577224, 83043192, 75681080, 70517992, 60548840, 39773008, 10974178,
+-19559818, -46844136, -67238248, -79171280, -84281216, -85352808, -83596168, -79180408, -72855528, -65625488,
+-58138288, -51459076, -47203300, -46050104, -47078212, -48954036, -50823420, -51943872, -51584168, -49573588,
+-46244448, -41780904, -36245764, -30135102, -24321326, -19505594, -16079284, -14329622, -14419816, -16262357,
+-19583978, -24019068, -29147258, -34573948, -39960376, -44920528, -49046916, -52075404, -53814328, -53897008,
+-51870320, -47521664, -40890772, -32073206, -21276194, -8932458, 4456566, 18388902, 32183800, 45177152,
+57294328, 68956776, 80292264, 90978144, 100936560, 110481592, 119705032, 128622456, 138112720, 149675856,
+163716096, 178787136, 193075424, 206050512, 218157488, 229284688, 238077024, 242689280, 241976848, 235966576,
+225290896, 210357840, 191294080, 168584976, 143340240, 116700168, 89182312, 60728152, 31309238, 1509144,
+-27413166, -54177792, -78366512, -100525856, -121310816, -140697216, -158071984, -172816592, -184749088, -194308080,
+-202391744, -209771568, -216545808, -222269920, -226527312, -229223472, -230488352, -230473312, -229108592, -225995808,
+-220735552, -213378800, -204309440, -193762080, -181724896, -168168912, -153010896, -136079056, -117541984, -98166848,
+-78799768, -59817620, -41325640, -23476292, -6266894, 10496363, 26674968, 41643468, 54920820, 66607964,
+77071040, 86648280, 95760592, 104841760, 113982528, 122839288, 130839200, 137375072, 142081280, 145099024,
+146820240, 147379648, 146776752, 145286928, 143180256, 140241424, 136197168, 131337952, 126123864, 120605904,
+114806088, 109120624, 103819024, 98736464, 93811216, 89157080, 84482008, 79365088, 74079592, 69140920,
+64355788, 59411208, 54780696, 50856172, 47135656, 43397424, 40339944, 38064148, 35719096, 33387466,
+31977106, 30885110, 28834262, 26812944, 26247082, 25228638, 21756156, 18828062, 19435264, 19375134,
+14382235, 10659035, 15308874, 19550154, 8751533, -11116986, -16849156, -1181116, 17405354, 23600308,
+23253490, 24434606, 22022982, 13565654, 11261941, 23040888, 37060736, 39835820, 36630164, 39961988,
+50042276, 60002840, 68639480, 74309376, 68069328, 48506288, 33592012, 40907416, 62417684, 74914432,
+71076880, 64213520, 64415920, 66957468, 67494336, 74431248, 97751848, 132080984, 157776160, },
},
{
{
-2374580,
--1975685, -1382443, -914828, -1770600, -5363341, -9013526, -5036386, 7479149, 10615012, -15942919,
--56564184, -57993868, 7053947, 85042496, 88171384, 2945811, -83288008, -83608520, -10362145, 53223236,
-56314536, 20531554, -10377178, -20672214, -16948478, -3994320, 16381005, 36971080, 49690624, 53488984,
-51806432, 47150152, 41786272, 38687456, 38138772, 36497020, 30347702, 19595252, 5913633, -9071508,
--23396298, -34890168, -42566348, -46789912, -48198660, -47502340, -45899240, -44558676, -43887048, -43898324,
--44784696, -46591268, -48833780, -50869056, -52300892, -52907556, -52671332, -51987356, -51447804, -51408612,
--52043192, -53603876, -56228100, -59635620, -63368484, -67205504, -71101576, -74897784, -78367048, -81413256,
--83995064, -85938000, -87039120, -87366616, -87256016, -86901144, -86133960, -84820776, -83342768, -82242184,
--81369232, -79879952, -77301896, -74104288, -70828304, -67064304, -61832496, -54830088, -46868292, -39093328,
--32087700, -25779468, -20059644, -15351824, -12449500, -11724724, -12670690, -14439680, -16755741, -20076288,
--24864640, -30848602, -36961416, -41910292, -44918916, -46094124, -46125800, -45565308, -44384192, -42154032,
--38555920, -33717104, -28170690, -22527640, -17147656, -12047383, -7031935, -1874216, 3546569, 9167071,
-14823006, 20462834, 26199838, 32102734, 38029252, 43714716, 48913236, 53425636, 57149372, 60168732,
-62699008, 64918968, 66953172, 68969656, 71169216, 73711840, 76739792, 80424336, 84902376, 90224376,
-96379064, 103264976, 110630304, 118148104, 125512904, 132400416, 138475120, 143570016, 147709824, 150860192,
-152853584, 153623456, 153249264, 151710592, 148889344, 144849920, 139821584, 133943384, 127320008, 120237072,
-112997368, 105686264, 98361192, 91252488, 84576496, 78442744, 73074040, 68684040, 65085396, 61884036,
-58992988, 56423524, 53806812, 50775104, 47516296, 44320840, 41041632, 37541236, 33990908, 30249454,
-25816512, 20746840, 15533823, 10032507, 3857954, -2369748, -7787850, -12741557, -17762374, -22230750,
--25899190, -29855392, -34100428, -37107444, -39562016, -44016436, -49089864, -50723564, -51017768, -55984900,
--62226024, -60142964, -54548768, -61892088, -77720120, -72277856, -36496484, -5768141, -11269994, -33130304,
--36767604, -31787052, -48571248, -72495288, -57268556, -2782065, 35726612, 27451820, 5108864, 6401112,
-22469658, 29867740, 33055678, 42106248, 39908836, 9390946, -26454852, -28629716, 3511673, 33764884,
-40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, },
+-1975685, -1382443, -914828, -1770600, -5363341, -9013526, -5036386, 7479149, 10615012, -15942919,
+-56564184, -57993868, 7053947, 85042496, 88171384, 2945811, -83288008, -83608520, -10362145, 53223236,
+56314536, 20531554, -10377178, -20672214, -16948478, -3994320, 16381005, 36971080, 49690624, 53488984,
+51806432, 47150152, 41786272, 38687456, 38138772, 36497020, 30347702, 19595252, 5913633, -9071508,
+-23396298, -34890168, -42566348, -46789912, -48198660, -47502340, -45899240, -44558676, -43887048, -43898324,
+-44784696, -46591268, -48833780, -50869056, -52300892, -52907556, -52671332, -51987356, -51447804, -51408612,
+-52043192, -53603876, -56228100, -59635620, -63368484, -67205504, -71101576, -74897784, -78367048, -81413256,
+-83995064, -85938000, -87039120, -87366616, -87256016, -86901144, -86133960, -84820776, -83342768, -82242184,
+-81369232, -79879952, -77301896, -74104288, -70828304, -67064304, -61832496, -54830088, -46868292, -39093328,
+-32087700, -25779468, -20059644, -15351824, -12449500, -11724724, -12670690, -14439680, -16755741, -20076288,
+-24864640, -30848602, -36961416, -41910292, -44918916, -46094124, -46125800, -45565308, -44384192, -42154032,
+-38555920, -33717104, -28170690, -22527640, -17147656, -12047383, -7031935, -1874216, 3546569, 9167071,
+14823006, 20462834, 26199838, 32102734, 38029252, 43714716, 48913236, 53425636, 57149372, 60168732,
+62699008, 64918968, 66953172, 68969656, 71169216, 73711840, 76739792, 80424336, 84902376, 90224376,
+96379064, 103264976, 110630304, 118148104, 125512904, 132400416, 138475120, 143570016, 147709824, 150860192,
+152853584, 153623456, 153249264, 151710592, 148889344, 144849920, 139821584, 133943384, 127320008, 120237072,
+112997368, 105686264, 98361192, 91252488, 84576496, 78442744, 73074040, 68684040, 65085396, 61884036,
+58992988, 56423524, 53806812, 50775104, 47516296, 44320840, 41041632, 37541236, 33990908, 30249454,
+25816512, 20746840, 15533823, 10032507, 3857954, -2369748, -7787850, -12741557, -17762374, -22230750,
+-25899190, -29855392, -34100428, -37107444, -39562016, -44016436, -49089864, -50723564, -51017768, -55984900,
+-62226024, -60142964, -54548768, -61892088, -77720120, -72277856, -36496484, -5768141, -11269994, -33130304,
+-36767604, -31787052, -48571248, -72495288, -57268556, -2782065, 35726612, 27451820, 5108864, 6401112,
+22469658, 29867740, 33055678, 42106248, 39908836, 9390946, -26454852, -28629716, 3511673, 33764884,
+40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, },
{
-2374580,
--1975685, -1382443, -914828, -1770600, -5363341, -9013526, -5036386, 7479149, 10615012, -15942919,
--56564184, -57993868, 7053947, 85042496, 88171384, 2945811, -83288008, -83608520, -10362145, 53223236,
-56314536, 20531554, -10377178, -20672214, -16948478, -3994320, 16381005, 36971080, 49690624, 53488984,
-51806432, 47150152, 41786272, 38687456, 38138772, 36497020, 30347702, 19595252, 5913633, -9071508,
--23396298, -34890168, -42566348, -46789912, -48198660, -47502340, -45899240, -44558676, -43887048, -43898324,
--44784696, -46591268, -48833780, -50869056, -52300892, -52907556, -52671332, -51987356, -51447804, -51408612,
--52043192, -53603876, -56228100, -59635620, -63368484, -67205504, -71101576, -74897784, -78367048, -81413256,
--83995064, -85938000, -87039120, -87366616, -87256016, -86901144, -86133960, -84820776, -83342768, -82242184,
--81369232, -79879952, -77301896, -74104288, -70828304, -67064304, -61832496, -54830088, -46868292, -39093328,
--32087700, -25779468, -20059644, -15351824, -12449500, -11724724, -12670690, -14439680, -16755741, -20076288,
--24864640, -30848602, -36961416, -41910292, -44918916, -46094124, -46125800, -45565308, -44384192, -42154032,
--38555920, -33717104, -28170690, -22527640, -17147656, -12047383, -7031935, -1874216, 3546569, 9167071,
-14823006, 20462834, 26199838, 32102734, 38029252, 43714716, 48913236, 53425636, 57149372, 60168732,
-62699008, 64918968, 66953172, 68969656, 71169216, 73711840, 76739792, 80424336, 84902376, 90224376,
-96379064, 103264976, 110630304, 118148104, 125512904, 132400416, 138475120, 143570016, 147709824, 150860192,
-152853584, 153623456, 153249264, 151710592, 148889344, 144849920, 139821584, 133943384, 127320008, 120237072,
-112997368, 105686264, 98361192, 91252488, 84576496, 78442744, 73074040, 68684040, 65085396, 61884036,
-58992988, 56423524, 53806812, 50775104, 47516296, 44320840, 41041632, 37541236, 33990908, 30249454,
-25816512, 20746840, 15533823, 10032507, 3857954, -2369748, -7787850, -12741557, -17762374, -22230750,
--25899190, -29855392, -34100428, -37107444, -39562016, -44016436, -49089864, -50723564, -51017768, -55984900,
--62226024, -60142964, -54548768, -61892088, -77720120, -72277856, -36496484, -5768141, -11269994, -33130304,
--36767604, -31787052, -48571248, -72495288, -57268556, -2782065, 35726612, 27451820, 5108864, 6401112,
-22469658, 29867740, 33055678, 42106248, 39908836, 9390946, -26454852, -28629716, 3511673, 33764884,
-40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, },
+-1975685, -1382443, -914828, -1770600, -5363341, -9013526, -5036386, 7479149, 10615012, -15942919,
+-56564184, -57993868, 7053947, 85042496, 88171384, 2945811, -83288008, -83608520, -10362145, 53223236,
+56314536, 20531554, -10377178, -20672214, -16948478, -3994320, 16381005, 36971080, 49690624, 53488984,
+51806432, 47150152, 41786272, 38687456, 38138772, 36497020, 30347702, 19595252, 5913633, -9071508,
+-23396298, -34890168, -42566348, -46789912, -48198660, -47502340, -45899240, -44558676, -43887048, -43898324,
+-44784696, -46591268, -48833780, -50869056, -52300892, -52907556, -52671332, -51987356, -51447804, -51408612,
+-52043192, -53603876, -56228100, -59635620, -63368484, -67205504, -71101576, -74897784, -78367048, -81413256,
+-83995064, -85938000, -87039120, -87366616, -87256016, -86901144, -86133960, -84820776, -83342768, -82242184,
+-81369232, -79879952, -77301896, -74104288, -70828304, -67064304, -61832496, -54830088, -46868292, -39093328,
+-32087700, -25779468, -20059644, -15351824, -12449500, -11724724, -12670690, -14439680, -16755741, -20076288,
+-24864640, -30848602, -36961416, -41910292, -44918916, -46094124, -46125800, -45565308, -44384192, -42154032,
+-38555920, -33717104, -28170690, -22527640, -17147656, -12047383, -7031935, -1874216, 3546569, 9167071,
+14823006, 20462834, 26199838, 32102734, 38029252, 43714716, 48913236, 53425636, 57149372, 60168732,
+62699008, 64918968, 66953172, 68969656, 71169216, 73711840, 76739792, 80424336, 84902376, 90224376,
+96379064, 103264976, 110630304, 118148104, 125512904, 132400416, 138475120, 143570016, 147709824, 150860192,
+152853584, 153623456, 153249264, 151710592, 148889344, 144849920, 139821584, 133943384, 127320008, 120237072,
+112997368, 105686264, 98361192, 91252488, 84576496, 78442744, 73074040, 68684040, 65085396, 61884036,
+58992988, 56423524, 53806812, 50775104, 47516296, 44320840, 41041632, 37541236, 33990908, 30249454,
+25816512, 20746840, 15533823, 10032507, 3857954, -2369748, -7787850, -12741557, -17762374, -22230750,
+-25899190, -29855392, -34100428, -37107444, -39562016, -44016436, -49089864, -50723564, -51017768, -55984900,
+-62226024, -60142964, -54548768, -61892088, -77720120, -72277856, -36496484, -5768141, -11269994, -33130304,
+-36767604, -31787052, -48571248, -72495288, -57268556, -2782065, 35726612, 27451820, 5108864, 6401112,
+22469658, 29867740, 33055678, 42106248, 39908836, 9390946, -26454852, -28629716, 3511673, 33764884,
+40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, },
},
};
-const Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[16][BINAURAL_CHANNELS][240] ={
+const Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240] ={
{
{
-94963336,
--259899744, -365878592, -407935456, -399034688, -360622624, -313190080, -256787504, -171167872, -51148764, 77082848,
-190087200, 280461376, 307977600, 197138464, -42101416, -233239808, -184613808, 66844724, 261040592, 200156752,
--49803368, -281876544, -387830720, -404907520, -388901760, -342356672, -260487088, -167980464, -88047904, -17336636,
-52413632, 115413288, 165056128, 205573776, 242155088, 273263552, 297519360, 317817920, 336046816, 351308992,
-363975936, 375640512, 385805088, 393180096, 398694848, 403710272, 407503264, 409267424, 410109792, 410945152,
-410935488, 409496672, 407403424, 405001472, 401672320, 397503520, 393377664, 389382816, 385003008, 380521760,
-376547840, 372777920, 368674080, 364578848, 360973760, 357542080, 353929472, 350476320, 347467136, 344584704,
-341609344, 338776288, 336161728, 333495616, 330667392, 327781152, 324807968, 321659232, 318333312, 314676160,
-310469760, 305917632, 301435296, 296905728, 291875776, 286476992, 281314464, 276465984, 271412928, 265969072,
-260564928, 255623568, 251213712, 247219392, 243490816, 239998480, 237063936, 235104368, 234008064, 233171632,
-232267536, 231538464, 231289888, 231495520, 231909984, 232202576, 232065680, 231499280, 230856096, 230369696,
-229821552, 228851424, 227326176, 225292512, 222869616, 220299072, 217801008, 215311008, 212592832, 209589568,
-206436000, 203235168, 200035424, 196905456, 193827584, 190668096, 187384048, 184121488, 181036096, 178191744,
-175648064, 173445808, 171507168, 169725296, 168109312, 166713456, 165531792, 164576160, 163917968, 163530880,
-163231840, 162854416, 162346000, 161662032, 160738608, 159572528, 158192768, 156563904, 154628480, 152397248,
-149915296, 147220208, 144376944, 141480512, 138593232, 135757472, 133036608, 130476272, 128080216, 125873144,
-123902288, 122153704, 120579600, 119167624, 117866248, 116520856, 115040160, 113503104, 111976240, 110411800,
-108827488, 107345728, 105978320, 104645264, 103426568, 102459664, 101669928, 100940320, 100377144, 100041064,
-99700688, 99215896, 98755256, 98316632, 97593472, 96572336, 95553896, 94439352, 92886184, 91133304,
-89595704, 87897040, 85607824, 83369608, 81698864, 79643728, 76585176, 73904040, 72387376, 70017632,
-65605624, 62018792, 61284352, 59253904, 51306604, 41377716, 38103876, 42578696, 47088412, 45931456,
-40431748, 33403034, 26739392, 25276420, 33993592, 48282412, 55147916, 48762376, 38468412, 36508832,
-43465068, 51666844, 58545236, 68971808, 84820232, 98487360, 99587408, 85861768, 65221224, 47458852,
-35827544, 27596776, 20706038, 16087337, 13238700, 8391292, 366683, -5357435, -3285113, },
+-259899744, -365878592, -407935456, -399034688, -360622624, -313190080, -256787504, -171167872, -51148764, 77082848,
+190087200, 280461376, 307977600, 197138464, -42101416, -233239808, -184613808, 66844724, 261040592, 200156752,
+-49803368, -281876544, -387830720, -404907520, -388901760, -342356672, -260487088, -167980464, -88047904, -17336636,
+52413632, 115413288, 165056128, 205573776, 242155088, 273263552, 297519360, 317817920, 336046816, 351308992,
+363975936, 375640512, 385805088, 393180096, 398694848, 403710272, 407503264, 409267424, 410109792, 410945152,
+410935488, 409496672, 407403424, 405001472, 401672320, 397503520, 393377664, 389382816, 385003008, 380521760,
+376547840, 372777920, 368674080, 364578848, 360973760, 357542080, 353929472, 350476320, 347467136, 344584704,
+341609344, 338776288, 336161728, 333495616, 330667392, 327781152, 324807968, 321659232, 318333312, 314676160,
+310469760, 305917632, 301435296, 296905728, 291875776, 286476992, 281314464, 276465984, 271412928, 265969072,
+260564928, 255623568, 251213712, 247219392, 243490816, 239998480, 237063936, 235104368, 234008064, 233171632,
+232267536, 231538464, 231289888, 231495520, 231909984, 232202576, 232065680, 231499280, 230856096, 230369696,
+229821552, 228851424, 227326176, 225292512, 222869616, 220299072, 217801008, 215311008, 212592832, 209589568,
+206436000, 203235168, 200035424, 196905456, 193827584, 190668096, 187384048, 184121488, 181036096, 178191744,
+175648064, 173445808, 171507168, 169725296, 168109312, 166713456, 165531792, 164576160, 163917968, 163530880,
+163231840, 162854416, 162346000, 161662032, 160738608, 159572528, 158192768, 156563904, 154628480, 152397248,
+149915296, 147220208, 144376944, 141480512, 138593232, 135757472, 133036608, 130476272, 128080216, 125873144,
+123902288, 122153704, 120579600, 119167624, 117866248, 116520856, 115040160, 113503104, 111976240, 110411800,
+108827488, 107345728, 105978320, 104645264, 103426568, 102459664, 101669928, 100940320, 100377144, 100041064,
+99700688, 99215896, 98755256, 98316632, 97593472, 96572336, 95553896, 94439352, 92886184, 91133304,
+89595704, 87897040, 85607824, 83369608, 81698864, 79643728, 76585176, 73904040, 72387376, 70017632,
+65605624, 62018792, 61284352, 59253904, 51306604, 41377716, 38103876, 42578696, 47088412, 45931456,
+40431748, 33403034, 26739392, 25276420, 33993592, 48282412, 55147916, 48762376, 38468412, 36508832,
+43465068, 51666844, 58545236, 68971808, 84820232, 98487360, 99587408, 85861768, 65221224, 47458852,
+35827544, 27596776, 20706038, 16087337, 13238700, 8391292, 366683, -5357435, -3285113, },
{
-94963336,
--259899744, -365878592, -407935456, -399034688, -360622624, -313190080, -256787504, -171167872, -51148764, 77082848,
-190087200, 280461376, 307977600, 197138464, -42101416, -233239808, -184613808, 66844724, 261040592, 200156752,
--49803368, -281876544, -387830720, -404907520, -388901760, -342356672, -260487088, -167980464, -88047904, -17336636,
-52413632, 115413288, 165056128, 205573776, 242155088, 273263552, 297519360, 317817920, 336046816, 351308992,
-363975936, 375640512, 385805088, 393180096, 398694848, 403710272, 407503264, 409267424, 410109792, 410945152,
-410935488, 409496672, 407403424, 405001472, 401672320, 397503520, 393377664, 389382816, 385003008, 380521760,
-376547840, 372777920, 368674080, 364578848, 360973760, 357542080, 353929472, 350476320, 347467136, 344584704,
-341609344, 338776288, 336161728, 333495616, 330667392, 327781152, 324807968, 321659232, 318333312, 314676160,
-310469760, 305917632, 301435296, 296905728, 291875776, 286476992, 281314464, 276465984, 271412928, 265969072,
-260564928, 255623568, 251213712, 247219392, 243490816, 239998480, 237063936, 235104368, 234008064, 233171632,
-232267536, 231538464, 231289888, 231495520, 231909984, 232202576, 232065680, 231499280, 230856096, 230369696,
-229821552, 228851424, 227326176, 225292512, 222869616, 220299072, 217801008, 215311008, 212592832, 209589568,
-206436000, 203235168, 200035424, 196905456, 193827584, 190668096, 187384048, 184121488, 181036096, 178191744,
-175648064, 173445808, 171507168, 169725296, 168109312, 166713456, 165531792, 164576160, 163917968, 163530880,
-163231840, 162854416, 162346000, 161662032, 160738608, 159572528, 158192768, 156563904, 154628480, 152397248,
-149915296, 147220208, 144376944, 141480512, 138593232, 135757472, 133036608, 130476272, 128080216, 125873144,
-123902288, 122153704, 120579600, 119167624, 117866248, 116520856, 115040160, 113503104, 111976240, 110411800,
-108827488, 107345728, 105978320, 104645264, 103426568, 102459664, 101669928, 100940320, 100377144, 100041064,
-99700688, 99215896, 98755256, 98316632, 97593472, 96572336, 95553896, 94439352, 92886184, 91133304,
-89595704, 87897040, 85607824, 83369608, 81698864, 79643728, 76585176, 73904040, 72387376, 70017632,
-65605624, 62018792, 61284352, 59253904, 51306604, 41377716, 38103876, 42578696, 47088412, 45931456,
-40431748, 33403034, 26739392, 25276420, 33993592, 48282412, 55147916, 48762376, 38468412, 36508832,
-43465068, 51666844, 58545236, 68971808, 84820232, 98487360, 99587408, 85861768, 65221224, 47458852,
-35827544, 27596776, 20706038, 16087337, 13238700, 8391292, 366683, -5357435, -3285113, },
+-259899744, -365878592, -407935456, -399034688, -360622624, -313190080, -256787504, -171167872, -51148764, 77082848,
+190087200, 280461376, 307977600, 197138464, -42101416, -233239808, -184613808, 66844724, 261040592, 200156752,
+-49803368, -281876544, -387830720, -404907520, -388901760, -342356672, -260487088, -167980464, -88047904, -17336636,
+52413632, 115413288, 165056128, 205573776, 242155088, 273263552, 297519360, 317817920, 336046816, 351308992,
+363975936, 375640512, 385805088, 393180096, 398694848, 403710272, 407503264, 409267424, 410109792, 410945152,
+410935488, 409496672, 407403424, 405001472, 401672320, 397503520, 393377664, 389382816, 385003008, 380521760,
+376547840, 372777920, 368674080, 364578848, 360973760, 357542080, 353929472, 350476320, 347467136, 344584704,
+341609344, 338776288, 336161728, 333495616, 330667392, 327781152, 324807968, 321659232, 318333312, 314676160,
+310469760, 305917632, 301435296, 296905728, 291875776, 286476992, 281314464, 276465984, 271412928, 265969072,
+260564928, 255623568, 251213712, 247219392, 243490816, 239998480, 237063936, 235104368, 234008064, 233171632,
+232267536, 231538464, 231289888, 231495520, 231909984, 232202576, 232065680, 231499280, 230856096, 230369696,
+229821552, 228851424, 227326176, 225292512, 222869616, 220299072, 217801008, 215311008, 212592832, 209589568,
+206436000, 203235168, 200035424, 196905456, 193827584, 190668096, 187384048, 184121488, 181036096, 178191744,
+175648064, 173445808, 171507168, 169725296, 168109312, 166713456, 165531792, 164576160, 163917968, 163530880,
+163231840, 162854416, 162346000, 161662032, 160738608, 159572528, 158192768, 156563904, 154628480, 152397248,
+149915296, 147220208, 144376944, 141480512, 138593232, 135757472, 133036608, 130476272, 128080216, 125873144,
+123902288, 122153704, 120579600, 119167624, 117866248, 116520856, 115040160, 113503104, 111976240, 110411800,
+108827488, 107345728, 105978320, 104645264, 103426568, 102459664, 101669928, 100940320, 100377144, 100041064,
+99700688, 99215896, 98755256, 98316632, 97593472, 96572336, 95553896, 94439352, 92886184, 91133304,
+89595704, 87897040, 85607824, 83369608, 81698864, 79643728, 76585176, 73904040, 72387376, 70017632,
+65605624, 62018792, 61284352, 59253904, 51306604, 41377716, 38103876, 42578696, 47088412, 45931456,
+40431748, 33403034, 26739392, 25276420, 33993592, 48282412, 55147916, 48762376, 38468412, 36508832,
+43465068, 51666844, 58545236, 68971808, 84820232, 98487360, 99587408, 85861768, 65221224, 47458852,
+35827544, 27596776, 20706038, 16087337, 13238700, 8391292, 366683, -5357435, -3285113, },
},
{
{
75060456,
-181290576, 166391328, 4222490, -246988544, -485340416, -637412352, -668590592, -562286912, -345107616, -95697776,
-137160848, 373837696, 571850752, 535651136, 141639424, -359325568, -489517280, -90843392, 444124864, 613286976,
-345293888, -38591892, -275234400, -372770944, -427594048, -446676608, -404071584, -331896832, -276191616, -232449536,
--177023520, -115572200, -64596308, -20371030, 27089432, 74404936, 116204632, 156305136, 197281808, 234746272,
-267057840, 297569824, 326030976, 349027296, 367687328, 385397632, 400829984, 411187808, 418360416, 425423488,
-431585152, 435494112, 438640192, 441890944, 443526240, 442963072, 441746528, 439925440, 436022944, 430542016,
-425219488, 419662880, 412594432, 404927904, 398160640, 391658592, 384455936, 377527616, 371925376, 366999584,
-362234336, 358501472, 356285792, 354875424, 353917120, 353771072, 354289152, 354975840, 355882048, 356943456,
-357440608, 357242496, 357187200, 357383680, 356850592, 355441280, 354234400, 353652448, 353077440, 352439104,
-352331200, 352665664, 352851968, 352886848, 352854656, 352064384, 349902400, 346624256, 342358816, 336486528,
-328759872, 319841920, 310215840, 299768864, 288650272, 277372736, 266137104, 255173136, 245376320, 237521888,
-231328544, 226142384, 221828624, 218345392, 215404416, 213101776, 211880944, 211491168, 210960736, 209735072,
-207901120, 205508272, 202684336, 200050448, 198051136, 196295568, 194327408, 192371584, 190693856, 189062320,
-187366880, 185905504, 184712048, 183460608, 182183920, 181219696, 180506736, 179776064, 179172080, 178942832,
-178924048, 178977728, 179375552, 180231328, 181216480, 182158688, 183190560, 184158000, 184690032, 184836608,
-184854320, 184577824, 183745136, 182548464, 181182128, 179390048, 177025664, 174380512, 171548512, 168253728,
-164523552, 160702112, 156747520, 152372560, 147711440, 143038512, 138227072, 133205192, 128355632, 123843768,
-119330832, 114747032, 110418776, 106214008, 101653288, 96854200, 92291328, 87922816, 83602072, 79703320,
-76371496, 73081552, 69701416, 66722316, 63989108, 60789356, 57319024, 54249196, 51235200, 47760036,
-44398688, 41387380, 37823628, 33910916, 30954904, 28005872, 23077934, 18101140, 15947750, 13168370,
-5380521, -1872069, -1912871, -4445828, -23741506, -48941688, -52257404, -31860604, -17410724, -24125906,
--34259880, -38182796, -57206280, -101681200, -139482816, -137172128, -108657304, -93728536, -106906032, -132457864,
--153244432, -164201968, -173872080, -205003616, -268345264, -323572640, -301992576, -192217504, -70960912, -19066970,
--34032248, -56741888, -58976344, -64205468, -93292592, -128591856, -136745856, -103326176, -38155952, },
+181290576, 166391328, 4222490, -246988544, -485340416, -637412352, -668590592, -562286912, -345107616, -95697776,
+137160848, 373837696, 571850752, 535651136, 141639424, -359325568, -489517280, -90843392, 444124864, 613286976,
+345293888, -38591892, -275234400, -372770944, -427594048, -446676608, -404071584, -331896832, -276191616, -232449536,
+-177023520, -115572200, -64596308, -20371030, 27089432, 74404936, 116204632, 156305136, 197281808, 234746272,
+267057840, 297569824, 326030976, 349027296, 367687328, 385397632, 400829984, 411187808, 418360416, 425423488,
+431585152, 435494112, 438640192, 441890944, 443526240, 442963072, 441746528, 439925440, 436022944, 430542016,
+425219488, 419662880, 412594432, 404927904, 398160640, 391658592, 384455936, 377527616, 371925376, 366999584,
+362234336, 358501472, 356285792, 354875424, 353917120, 353771072, 354289152, 354975840, 355882048, 356943456,
+357440608, 357242496, 357187200, 357383680, 356850592, 355441280, 354234400, 353652448, 353077440, 352439104,
+352331200, 352665664, 352851968, 352886848, 352854656, 352064384, 349902400, 346624256, 342358816, 336486528,
+328759872, 319841920, 310215840, 299768864, 288650272, 277372736, 266137104, 255173136, 245376320, 237521888,
+231328544, 226142384, 221828624, 218345392, 215404416, 213101776, 211880944, 211491168, 210960736, 209735072,
+207901120, 205508272, 202684336, 200050448, 198051136, 196295568, 194327408, 192371584, 190693856, 189062320,
+187366880, 185905504, 184712048, 183460608, 182183920, 181219696, 180506736, 179776064, 179172080, 178942832,
+178924048, 178977728, 179375552, 180231328, 181216480, 182158688, 183190560, 184158000, 184690032, 184836608,
+184854320, 184577824, 183745136, 182548464, 181182128, 179390048, 177025664, 174380512, 171548512, 168253728,
+164523552, 160702112, 156747520, 152372560, 147711440, 143038512, 138227072, 133205192, 128355632, 123843768,
+119330832, 114747032, 110418776, 106214008, 101653288, 96854200, 92291328, 87922816, 83602072, 79703320,
+76371496, 73081552, 69701416, 66722316, 63989108, 60789356, 57319024, 54249196, 51235200, 47760036,
+44398688, 41387380, 37823628, 33910916, 30954904, 28005872, 23077934, 18101140, 15947750, 13168370,
+5380521, -1872069, -1912871, -4445828, -23741506, -48941688, -52257404, -31860604, -17410724, -24125906,
+-34259880, -38182796, -57206280, -101681200, -139482816, -137172128, -108657304, -93728536, -106906032, -132457864,
+-153244432, -164201968, -173872080, -205003616, -268345264, -323572640, -301992576, -192217504, -70960912, -19066970,
+-34032248, -56741888, -58976344, -64205468, -93292592, -128591856, -136745856, -103326176, -38155952, },
{
-75060456,
--181290576, -166391328, -4222490, 246988544, 485340416, 637412352, 668590592, 562286912, 345107616, 95697776,
--137160848, -373837696, -571850752, -535651136, -141639424, 359325568, 489517280, 90843392, -444124864, -613286976,
--345293888, 38591892, 275234400, 372770944, 427594048, 446676608, 404071584, 331896832, 276191616, 232449536,
-177023520, 115572200, 64596308, 20371030, -27089432, -74404936, -116204632, -156305136, -197281808, -234746272,
--267057840, -297569824, -326030976, -349027296, -367687328, -385397632, -400829984, -411187808, -418360416, -425423488,
--431585152, -435494112, -438640192, -441890944, -443526240, -442963072, -441746528, -439925440, -436022944, -430542016,
--425219488, -419662880, -412594432, -404927904, -398160640, -391658592, -384455936, -377527616, -371925376, -366999584,
--362234336, -358501472, -356285792, -354875424, -353917120, -353771072, -354289152, -354975840, -355882048, -356943456,
--357440608, -357242496, -357187200, -357383680, -356850592, -355441280, -354234400, -353652448, -353077440, -352439104,
--352331200, -352665664, -352851968, -352886848, -352854656, -352064384, -349902400, -346624256, -342358816, -336486528,
--328759872, -319841920, -310215840, -299768864, -288650272, -277372736, -266137104, -255173136, -245376320, -237521888,
--231328544, -226142384, -221828624, -218345392, -215404416, -213101776, -211880944, -211491168, -210960736, -209735072,
--207901120, -205508272, -202684336, -200050448, -198051136, -196295568, -194327408, -192371584, -190693856, -189062320,
--187366880, -185905504, -184712048, -183460608, -182183920, -181219696, -180506736, -179776064, -179172080, -178942832,
--178924048, -178977728, -179375552, -180231328, -181216480, -182158688, -183190560, -184158000, -184690032, -184836608,
--184854320, -184577824, -183745136, -182548464, -181182128, -179390048, -177025664, -174380512, -171548512, -168253728,
--164523552, -160702112, -156747520, -152372560, -147711440, -143038512, -138227072, -133205192, -128355632, -123843768,
--119330832, -114747032, -110418776, -106214008, -101653288, -96854200, -92291328, -87922816, -83602072, -79703320,
--76371496, -73081552, -69701416, -66722316, -63989108, -60789356, -57319024, -54249196, -51235200, -47760036,
--44398688, -41387380, -37823628, -33910916, -30954904, -28005872, -23077934, -18101140, -15947750, -13168370,
--5380521, 1872069, 1912871, 4445828, 23741506, 48941688, 52257404, 31860604, 17410724, 24125906,
-34259880, 38182796, 57206280, 101681200, 139482816, 137172128, 108657304, 93728536, 106906032, 132457864,
-153244432, 164201968, 173872080, 205003616, 268345264, 323572640, 301992576, 192217504, 70960912, 19066970,
-34032248, 56741888, 58976344, 64205468, 93292592, 128591856, 136745856, 103326176, 38155952, },
+-181290576, -166391328, -4222490, 246988544, 485340416, 637412352, 668590592, 562286912, 345107616, 95697776,
+-137160848, -373837696, -571850752, -535651136, -141639424, 359325568, 489517280, 90843392, -444124864, -613286976,
+-345293888, 38591892, 275234400, 372770944, 427594048, 446676608, 404071584, 331896832, 276191616, 232449536,
+177023520, 115572200, 64596308, 20371030, -27089432, -74404936, -116204632, -156305136, -197281808, -234746272,
+-267057840, -297569824, -326030976, -349027296, -367687328, -385397632, -400829984, -411187808, -418360416, -425423488,
+-431585152, -435494112, -438640192, -441890944, -443526240, -442963072, -441746528, -439925440, -436022944, -430542016,
+-425219488, -419662880, -412594432, -404927904, -398160640, -391658592, -384455936, -377527616, -371925376, -366999584,
+-362234336, -358501472, -356285792, -354875424, -353917120, -353771072, -354289152, -354975840, -355882048, -356943456,
+-357440608, -357242496, -357187200, -357383680, -356850592, -355441280, -354234400, -353652448, -353077440, -352439104,
+-352331200, -352665664, -352851968, -352886848, -352854656, -352064384, -349902400, -346624256, -342358816, -336486528,
+-328759872, -319841920, -310215840, -299768864, -288650272, -277372736, -266137104, -255173136, -245376320, -237521888,
+-231328544, -226142384, -221828624, -218345392, -215404416, -213101776, -211880944, -211491168, -210960736, -209735072,
+-207901120, -205508272, -202684336, -200050448, -198051136, -196295568, -194327408, -192371584, -190693856, -189062320,
+-187366880, -185905504, -184712048, -183460608, -182183920, -181219696, -180506736, -179776064, -179172080, -178942832,
+-178924048, -178977728, -179375552, -180231328, -181216480, -182158688, -183190560, -184158000, -184690032, -184836608,
+-184854320, -184577824, -183745136, -182548464, -181182128, -179390048, -177025664, -174380512, -171548512, -168253728,
+-164523552, -160702112, -156747520, -152372560, -147711440, -143038512, -138227072, -133205192, -128355632, -123843768,
+-119330832, -114747032, -110418776, -106214008, -101653288, -96854200, -92291328, -87922816, -83602072, -79703320,
+-76371496, -73081552, -69701416, -66722316, -63989108, -60789356, -57319024, -54249196, -51235200, -47760036,
+-44398688, -41387380, -37823628, -33910916, -30954904, -28005872, -23077934, -18101140, -15947750, -13168370,
+-5380521, 1872069, 1912871, 4445828, 23741506, 48941688, 52257404, 31860604, 17410724, 24125906,
+34259880, 38182796, 57206280, 101681200, 139482816, 137172128, 108657304, 93728536, 106906032, 132457864,
+153244432, 164201968, 173872080, 205003616, 268345264, 323572640, 301992576, 192217504, 70960912, 19066970,
+34032248, 56741888, 58976344, 64205468, 93292592, 128591856, 136745856, 103326176, 38155952, },
},
{
{
-9009231,
--36637680, -70193728, -75922136, -36270460, 20501490, 50464256, 39287140, 6155225, -24621436, -40747964,
--36815384, -10376104, 28257664, 50878184, 32616518, -14510010, -41502804, -12632573, 47379932, 74487080,
-36009004, -36733244, -90490128, -105127376, -96395712, -82754896, -69029248, -55150600, -42622720, -31022548,
--18132278, -4883915, 5132486, 10377178, 11759620, 10193031, 7223062, 6258841, 10063108, 18169860,
-28565290, 40365176, 53441740, 67170064, 81056232, 95515240, 111126912, 127973920, 146063792, 165386304,
-185295632, 204663248, 222767072, 239341344, 253865856, 265567488, 274117152, 279660896, 282155200, 281194208,
-276510528, 268132128, 255947840, 239568976, 218812480, 194024608, 165772320, 134540384, 100960184, 66029752,
-30862024, -3540664, -36068060, -65486976, -91001768, -112490560, -129825584, -142414672, -149966304, -153312608,
--153736736, -151610736, -146457312, -138457936, -129109936, -119890256, -110741440, -100565048, -89078696, -77489264,
--67181880, -58417460, -50668268, -43698608, -37853156, -33639796, -31494458, -31674310, -33990908, -37805376,
--42507828, -47871704, -53913652, -60627760, -67760624, -74542376, -79847200, -83028160, -84393960, -84554488,
--83609056, -81294064, -77459200, -72026064, -64901252, -56278568, -46660524, -36447628, -25920664, -15577310,
--5956046, 2781528, 10603737, 17167522, 22128208, 25563108, 27681064, 28526636, 28289876, 27351426,
-25821344, 23676544, 21408264, 19786914, 19047106, 18995030, 19587198, 20571820, 21073794, 20432234,
-18941880, 17059610, 14637249, 11552388, 8166344, 4611721, 605590, -3702262, -7746511, -11465952,
--15144055, -18547816, -21358872, -23982024, -26864484, -29727080, -32395328, -35358320, -38722352, -41896332,
--44844828, -48186848, -51808044, -55009404, -57896160, -60905320, -63523640, -65251828, -66866200, -69036232,
--71145056, -72943576, -75442712, -78984448, -82773144, -86984360, -92518968, -98582384, -103691248, -108415712,
--113725368, -118238840, -120716496, -122672320, -125000728, -125737312, -124344672, -123203824, -122424824, -119594976,
--115836880, -114016888, -111642304, -105648144, -100828112, -100789464, -97543000, -86452320, -79858472, -84221088,
--81069656, -60564408, -50760608, -70058968, -75491032, -19363860, 59583544, 75100184, 18751290, -32347546,
--37635188, -37250252, -54767276, -44564580, 21100638, 85975048, 85095112, 34751656, -3085934, -8105677,
--8428873, -26249766, -52829708, -62334472, -32243930, 30965640, 78734800, 61895848, -5378373, -54467700,
--45957760, -11283953, 3053185, -2666638, 354872, 17393006, 27977416, 21667574, 7367480, },
+-36637680, -70193728, -75922136, -36270460, 20501490, 50464256, 39287140, 6155225, -24621436, -40747964,
+-36815384, -10376104, 28257664, 50878184, 32616518, -14510010, -41502804, -12632573, 47379932, 74487080,
+36009004, -36733244, -90490128, -105127376, -96395712, -82754896, -69029248, -55150600, -42622720, -31022548,
+-18132278, -4883915, 5132486, 10377178, 11759620, 10193031, 7223062, 6258841, 10063108, 18169860,
+28565290, 40365176, 53441740, 67170064, 81056232, 95515240, 111126912, 127973920, 146063792, 165386304,
+185295632, 204663248, 222767072, 239341344, 253865856, 265567488, 274117152, 279660896, 282155200, 281194208,
+276510528, 268132128, 255947840, 239568976, 218812480, 194024608, 165772320, 134540384, 100960184, 66029752,
+30862024, -3540664, -36068060, -65486976, -91001768, -112490560, -129825584, -142414672, -149966304, -153312608,
+-153736736, -151610736, -146457312, -138457936, -129109936, -119890256, -110741440, -100565048, -89078696, -77489264,
+-67181880, -58417460, -50668268, -43698608, -37853156, -33639796, -31494458, -31674310, -33990908, -37805376,
+-42507828, -47871704, -53913652, -60627760, -67760624, -74542376, -79847200, -83028160, -84393960, -84554488,
+-83609056, -81294064, -77459200, -72026064, -64901252, -56278568, -46660524, -36447628, -25920664, -15577310,
+-5956046, 2781528, 10603737, 17167522, 22128208, 25563108, 27681064, 28526636, 28289876, 27351426,
+25821344, 23676544, 21408264, 19786914, 19047106, 18995030, 19587198, 20571820, 21073794, 20432234,
+18941880, 17059610, 14637249, 11552388, 8166344, 4611721, 605590, -3702262, -7746511, -11465952,
+-15144055, -18547816, -21358872, -23982024, -26864484, -29727080, -32395328, -35358320, -38722352, -41896332,
+-44844828, -48186848, -51808044, -55009404, -57896160, -60905320, -63523640, -65251828, -66866200, -69036232,
+-71145056, -72943576, -75442712, -78984448, -82773144, -86984360, -92518968, -98582384, -103691248, -108415712,
+-113725368, -118238840, -120716496, -122672320, -125000728, -125737312, -124344672, -123203824, -122424824, -119594976,
+-115836880, -114016888, -111642304, -105648144, -100828112, -100789464, -97543000, -86452320, -79858472, -84221088,
+-81069656, -60564408, -50760608, -70058968, -75491032, -19363860, 59583544, 75100184, 18751290, -32347546,
+-37635188, -37250252, -54767276, -44564580, 21100638, 85975048, 85095112, 34751656, -3085934, -8105677,
+-8428873, -26249766, -52829708, -62334472, -32243930, 30965640, 78734800, 61895848, -5378373, -54467700,
+-45957760, -11283953, 3053185, -2666638, 354872, 17393006, 27977416, 21667574, 7367480, },
{
-9009231,
--36637680, -70193728, -75922136, -36270460, 20501490, 50464256, 39287140, 6155225, -24621436, -40747964,
--36815384, -10376104, 28257664, 50878184, 32616518, -14510010, -41502804, -12632573, 47379932, 74487080,
-36009004, -36733244, -90490128, -105127376, -96395712, -82754896, -69029248, -55150600, -42622720, -31022548,
--18132278, -4883915, 5132486, 10377178, 11759620, 10193031, 7223062, 6258841, 10063108, 18169860,
-28565290, 40365176, 53441740, 67170064, 81056232, 95515240, 111126912, 127973920, 146063792, 165386304,
-185295632, 204663248, 222767072, 239341344, 253865856, 265567488, 274117152, 279660896, 282155200, 281194208,
-276510528, 268132128, 255947840, 239568976, 218812480, 194024608, 165772320, 134540384, 100960184, 66029752,
-30862024, -3540664, -36068060, -65486976, -91001768, -112490560, -129825584, -142414672, -149966304, -153312608,
--153736736, -151610736, -146457312, -138457936, -129109936, -119890256, -110741440, -100565048, -89078696, -77489264,
--67181880, -58417460, -50668268, -43698608, -37853156, -33639796, -31494458, -31674310, -33990908, -37805376,
--42507828, -47871704, -53913652, -60627760, -67760624, -74542376, -79847200, -83028160, -84393960, -84554488,
--83609056, -81294064, -77459200, -72026064, -64901252, -56278568, -46660524, -36447628, -25920664, -15577310,
--5956046, 2781528, 10603737, 17167522, 22128208, 25563108, 27681064, 28526636, 28289876, 27351426,
-25821344, 23676544, 21408264, 19786914, 19047106, 18995030, 19587198, 20571820, 21073794, 20432234,
-18941880, 17059610, 14637249, 11552388, 8166344, 4611721, 605590, -3702262, -7746511, -11465952,
--15144055, -18547816, -21358872, -23982024, -26864484, -29727080, -32395328, -35358320, -38722352, -41896332,
--44844828, -48186848, -51808044, -55009404, -57896160, -60905320, -63523640, -65251828, -66866200, -69036232,
--71145056, -72943576, -75442712, -78984448, -82773144, -86984360, -92518968, -98582384, -103691248, -108415712,
--113725368, -118238840, -120716496, -122672320, -125000728, -125737312, -124344672, -123203824, -122424824, -119594976,
--115836880, -114016888, -111642304, -105648144, -100828112, -100789464, -97543000, -86452320, -79858472, -84221088,
--81069656, -60564408, -50760608, -70058968, -75491032, -19363860, 59583544, 75100184, 18751290, -32347546,
--37635188, -37250252, -54767276, -44564580, 21100638, 85975048, 85095112, 34751656, -3085934, -8105677,
--8428873, -26249766, -52829708, -62334472, -32243930, 30965640, 78734800, 61895848, -5378373, -54467700,
--45957760, -11283953, 3053185, -2666638, 354872, 17393006, 27977416, 21667574, 7367480, },
+-36637680, -70193728, -75922136, -36270460, 20501490, 50464256, 39287140, 6155225, -24621436, -40747964,
+-36815384, -10376104, 28257664, 50878184, 32616518, -14510010, -41502804, -12632573, 47379932, 74487080,
+36009004, -36733244, -90490128, -105127376, -96395712, -82754896, -69029248, -55150600, -42622720, -31022548,
+-18132278, -4883915, 5132486, 10377178, 11759620, 10193031, 7223062, 6258841, 10063108, 18169860,
+28565290, 40365176, 53441740, 67170064, 81056232, 95515240, 111126912, 127973920, 146063792, 165386304,
+185295632, 204663248, 222767072, 239341344, 253865856, 265567488, 274117152, 279660896, 282155200, 281194208,
+276510528, 268132128, 255947840, 239568976, 218812480, 194024608, 165772320, 134540384, 100960184, 66029752,
+30862024, -3540664, -36068060, -65486976, -91001768, -112490560, -129825584, -142414672, -149966304, -153312608,
+-153736736, -151610736, -146457312, -138457936, -129109936, -119890256, -110741440, -100565048, -89078696, -77489264,
+-67181880, -58417460, -50668268, -43698608, -37853156, -33639796, -31494458, -31674310, -33990908, -37805376,
+-42507828, -47871704, -53913652, -60627760, -67760624, -74542376, -79847200, -83028160, -84393960, -84554488,
+-83609056, -81294064, -77459200, -72026064, -64901252, -56278568, -46660524, -36447628, -25920664, -15577310,
+-5956046, 2781528, 10603737, 17167522, 22128208, 25563108, 27681064, 28526636, 28289876, 27351426,
+25821344, 23676544, 21408264, 19786914, 19047106, 18995030, 19587198, 20571820, 21073794, 20432234,
+18941880, 17059610, 14637249, 11552388, 8166344, 4611721, 605590, -3702262, -7746511, -11465952,
+-15144055, -18547816, -21358872, -23982024, -26864484, -29727080, -32395328, -35358320, -38722352, -41896332,
+-44844828, -48186848, -51808044, -55009404, -57896160, -60905320, -63523640, -65251828, -66866200, -69036232,
+-71145056, -72943576, -75442712, -78984448, -82773144, -86984360, -92518968, -98582384, -103691248, -108415712,
+-113725368, -118238840, -120716496, -122672320, -125000728, -125737312, -124344672, -123203824, -122424824, -119594976,
+-115836880, -114016888, -111642304, -105648144, -100828112, -100789464, -97543000, -86452320, -79858472, -84221088,
+-81069656, -60564408, -50760608, -70058968, -75491032, -19363860, 59583544, 75100184, 18751290, -32347546,
+-37635188, -37250252, -54767276, -44564580, 21100638, 85975048, 85095112, 34751656, -3085934, -8105677,
+-8428873, -26249766, -52829708, -62334472, -32243930, 30965640, 78734800, 61895848, -5378373, -54467700,
+-45957760, -11283953, 3053185, -2666638, 354872, 17393006, 27977416, 21667574, 7367480, },
},
{
{
3446175,
--204011, -23846196, -52114596, -57095148, -29986388, 2611340, 5036923, -25295746, -55882892, -60017336,
--39953932, -4871030, 43847856, 85644336, 72697152, -8475581, -85297512, -62989992, 54970212, 156982672,
-148635392, 47907140, -62916440, -138422496, -189236800, -230008384, -253524944, -252534416, -234389792, -207569856,
--171629584, -125080720, -71781248, -16589311, 37920268, 89157080, 134070624, 171440592, 201639056, 224939248,
-242043424, 254667408, 263904272, 269539808, 271831712, 272078112, 270801984, 267182944, 260721696, 251943312,
-241457152, 229871488, 218583232, 209222352, 202222624, 196823312, 192198176, 187797984, 183002112, 177325248,
-170842528, 163924944, 156742144, 149337616, 141901424, 134577424, 127103648, 118936768, 109767552, 99714648,
-88896696, 77050104, 63917168, 49879064, 35686884, 21620328, 7586523, -5926518, -17868138, -27814208,
--36255428, -43333000, -48244832, -50476068, -50791748, -50297288, -49199924, -47218872, -44614508, -41934452,
--39023000, -35104380, -29783450, -23331336, -15924665, -7117298, 3712999, 16642998, 31121334, 46524160,
-62676456, 79761840, 97699232, 115731112, 132824008, 148484000, 162958576, 176581136, 189124592, 199893680,
-208319328, 214461136, 219077152, 223164352, 227175312, 230635984, 232696496, 233028288, 232094656, 230754640,
-229811344, 229692704, 230215072, 230740144, 230807792, 230511424, 230201664, 230107168, 230344464, 230907104,
-231461696, 231452032, 230528608, 228649568, 225833680, 222136240, 217763424, 212854816, 207249888, 200751072,
-193433520, 185503392, 177138944, 168663904, 160532448, 153006592, 146134112, 140022384, 134765872, 130244344,
-126378336, 123361128, 121290416, 119954680, 119273392, 119402240, 120142584, 120883464, 121341952, 121644208,
-121653872, 121032176, 119935888, 118821880, 117758880, 116659904, 115715008, 114868360, 113551416, 111552648,
-109263432, 106677320, 103307384, 99273336, 95068024, 90331752, 84431000, 77818904, 71178880, 64132988,
-56488484, 49333068, 43240656, 37349572, 31592168, 27217208, 24106578, 20869782, 17935246, 16546362,
-15436112, 13311177, 12393128, 13733695, 13445932, 10598369, 11399380, 16712791, 16895864, 10786810,
-13023415, 25579752, 25152940, 5520107, 5433134, 53553412, 109159280, 110144976, 64105608, 32104344,
-31825170, 25709138, 6568616, 18708340, 73229192, 112479824, 93217432, 48184700, 27605902, 28006408,
-18255222, -5207648, -29517162, -56871808, -84257056, -80665392, -27346594, 38667592, 62351652, 41161356,
-20950850, 27518930, 39184596, 31987306, 19144816, 27559194, 53057340, 60521996, 27237608, },
+-204011, -23846196, -52114596, -57095148, -29986388, 2611340, 5036923, -25295746, -55882892, -60017336,
+-39953932, -4871030, 43847856, 85644336, 72697152, -8475581, -85297512, -62989992, 54970212, 156982672,
+148635392, 47907140, -62916440, -138422496, -189236800, -230008384, -253524944, -252534416, -234389792, -207569856,
+-171629584, -125080720, -71781248, -16589311, 37920268, 89157080, 134070624, 171440592, 201639056, 224939248,
+242043424, 254667408, 263904272, 269539808, 271831712, 272078112, 270801984, 267182944, 260721696, 251943312,
+241457152, 229871488, 218583232, 209222352, 202222624, 196823312, 192198176, 187797984, 183002112, 177325248,
+170842528, 163924944, 156742144, 149337616, 141901424, 134577424, 127103648, 118936768, 109767552, 99714648,
+88896696, 77050104, 63917168, 49879064, 35686884, 21620328, 7586523, -5926518, -17868138, -27814208,
+-36255428, -43333000, -48244832, -50476068, -50791748, -50297288, -49199924, -47218872, -44614508, -41934452,
+-39023000, -35104380, -29783450, -23331336, -15924665, -7117298, 3712999, 16642998, 31121334, 46524160,
+62676456, 79761840, 97699232, 115731112, 132824008, 148484000, 162958576, 176581136, 189124592, 199893680,
+208319328, 214461136, 219077152, 223164352, 227175312, 230635984, 232696496, 233028288, 232094656, 230754640,
+229811344, 229692704, 230215072, 230740144, 230807792, 230511424, 230201664, 230107168, 230344464, 230907104,
+231461696, 231452032, 230528608, 228649568, 225833680, 222136240, 217763424, 212854816, 207249888, 200751072,
+193433520, 185503392, 177138944, 168663904, 160532448, 153006592, 146134112, 140022384, 134765872, 130244344,
+126378336, 123361128, 121290416, 119954680, 119273392, 119402240, 120142584, 120883464, 121341952, 121644208,
+121653872, 121032176, 119935888, 118821880, 117758880, 116659904, 115715008, 114868360, 113551416, 111552648,
+109263432, 106677320, 103307384, 99273336, 95068024, 90331752, 84431000, 77818904, 71178880, 64132988,
+56488484, 49333068, 43240656, 37349572, 31592168, 27217208, 24106578, 20869782, 17935246, 16546362,
+15436112, 13311177, 12393128, 13733695, 13445932, 10598369, 11399380, 16712791, 16895864, 10786810,
+13023415, 25579752, 25152940, 5520107, 5433134, 53553412, 109159280, 110144976, 64105608, 32104344,
+31825170, 25709138, 6568616, 18708340, 73229192, 112479824, 93217432, 48184700, 27605902, 28006408,
+18255222, -5207648, -29517162, -56871808, -84257056, -80665392, -27346594, 38667592, 62351652, 41161356,
+20950850, 27518930, 39184596, 31987306, 19144816, 27559194, 53057340, 60521996, 27237608, },
{
3446175,
--204011, -23846196, -52114596, -57095148, -29986388, 2611340, 5036923, -25295746, -55882892, -60017336,
--39953932, -4871030, 43847856, 85644336, 72697152, -8475581, -85297512, -62989992, 54970212, 156982672,
-148635392, 47907140, -62916440, -138422496, -189236800, -230008384, -253524944, -252534416, -234389792, -207569856,
--171629584, -125080720, -71781248, -16589311, 37920268, 89157080, 134070624, 171440592, 201639056, 224939248,
-242043424, 254667408, 263904272, 269539808, 271831712, 272078112, 270801984, 267182944, 260721696, 251943312,
-241457152, 229871488, 218583232, 209222352, 202222624, 196823312, 192198176, 187797984, 183002112, 177325248,
-170842528, 163924944, 156742144, 149337616, 141901424, 134577424, 127103648, 118936768, 109767552, 99714648,
-88896696, 77050104, 63917168, 49879064, 35686884, 21620328, 7586523, -5926518, -17868138, -27814208,
--36255428, -43333000, -48244832, -50476068, -50791748, -50297288, -49199924, -47218872, -44614508, -41934452,
--39023000, -35104380, -29783450, -23331336, -15924665, -7117298, 3712999, 16642998, 31121334, 46524160,
-62676456, 79761840, 97699232, 115731112, 132824008, 148484000, 162958576, 176581136, 189124592, 199893680,
-208319328, 214461136, 219077152, 223164352, 227175312, 230635984, 232696496, 233028288, 232094656, 230754640,
-229811344, 229692704, 230215072, 230740144, 230807792, 230511424, 230201664, 230107168, 230344464, 230907104,
-231461696, 231452032, 230528608, 228649568, 225833680, 222136240, 217763424, 212854816, 207249888, 200751072,
-193433520, 185503392, 177138944, 168663904, 160532448, 153006592, 146134112, 140022384, 134765872, 130244344,
-126378336, 123361128, 121290416, 119954680, 119273392, 119402240, 120142584, 120883464, 121341952, 121644208,
-121653872, 121032176, 119935888, 118821880, 117758880, 116659904, 115715008, 114868360, 113551416, 111552648,
-109263432, 106677320, 103307384, 99273336, 95068024, 90331752, 84431000, 77818904, 71178880, 64132988,
-56488484, 49333068, 43240656, 37349572, 31592168, 27217208, 24106578, 20869782, 17935246, 16546362,
-15436112, 13311177, 12393128, 13733695, 13445932, 10598369, 11399380, 16712791, 16895864, 10786810,
-13023415, 25579752, 25152940, 5520107, 5433134, 53553412, 109159280, 110144976, 64105608, 32104344,
-31825170, 25709138, 6568616, 18708340, 73229192, 112479824, 93217432, 48184700, 27605902, 28006408,
-18255222, -5207648, -29517162, -56871808, -84257056, -80665392, -27346594, 38667592, 62351652, 41161356,
-20950850, 27518930, 39184596, 31987306, 19144816, 27559194, 53057340, 60521996, 27237608, },
+-204011, -23846196, -52114596, -57095148, -29986388, 2611340, 5036923, -25295746, -55882892, -60017336,
+-39953932, -4871030, 43847856, 85644336, 72697152, -8475581, -85297512, -62989992, 54970212, 156982672,
+148635392, 47907140, -62916440, -138422496, -189236800, -230008384, -253524944, -252534416, -234389792, -207569856,
+-171629584, -125080720, -71781248, -16589311, 37920268, 89157080, 134070624, 171440592, 201639056, 224939248,
+242043424, 254667408, 263904272, 269539808, 271831712, 272078112, 270801984, 267182944, 260721696, 251943312,
+241457152, 229871488, 218583232, 209222352, 202222624, 196823312, 192198176, 187797984, 183002112, 177325248,
+170842528, 163924944, 156742144, 149337616, 141901424, 134577424, 127103648, 118936768, 109767552, 99714648,
+88896696, 77050104, 63917168, 49879064, 35686884, 21620328, 7586523, -5926518, -17868138, -27814208,
+-36255428, -43333000, -48244832, -50476068, -50791748, -50297288, -49199924, -47218872, -44614508, -41934452,
+-39023000, -35104380, -29783450, -23331336, -15924665, -7117298, 3712999, 16642998, 31121334, 46524160,
+62676456, 79761840, 97699232, 115731112, 132824008, 148484000, 162958576, 176581136, 189124592, 199893680,
+208319328, 214461136, 219077152, 223164352, 227175312, 230635984, 232696496, 233028288, 232094656, 230754640,
+229811344, 229692704, 230215072, 230740144, 230807792, 230511424, 230201664, 230107168, 230344464, 230907104,
+231461696, 231452032, 230528608, 228649568, 225833680, 222136240, 217763424, 212854816, 207249888, 200751072,
+193433520, 185503392, 177138944, 168663904, 160532448, 153006592, 146134112, 140022384, 134765872, 130244344,
+126378336, 123361128, 121290416, 119954680, 119273392, 119402240, 120142584, 120883464, 121341952, 121644208,
+121653872, 121032176, 119935888, 118821880, 117758880, 116659904, 115715008, 114868360, 113551416, 111552648,
+109263432, 106677320, 103307384, 99273336, 95068024, 90331752, 84431000, 77818904, 71178880, 64132988,
+56488484, 49333068, 43240656, 37349572, 31592168, 27217208, 24106578, 20869782, 17935246, 16546362,
+15436112, 13311177, 12393128, 13733695, 13445932, 10598369, 11399380, 16712791, 16895864, 10786810,
+13023415, 25579752, 25152940, 5520107, 5433134, 53553412, 109159280, 110144976, 64105608, 32104344,
+31825170, 25709138, 6568616, 18708340, 73229192, 112479824, 93217432, 48184700, 27605902, 28006408,
+18255222, -5207648, -29517162, -56871808, -84257056, -80665392, -27346594, 38667592, 62351652, 41161356,
+20950850, 27518930, 39184596, 31987306, 19144816, 27559194, 53057340, 60521996, 27237608, },
},
{
{
-2225330,
--1968169, 6158983, 13817447, 11214160, 1439351, -3064459, -928250, -8775692, -40647572, -86008328,
--111542984, -82070920, 9318468, 113516520, 141111680, 46847892, -94969776, -142930064, -40359272, 117732032,
-193996688, 151521072, 55995100, -28795072, -94653560, -151199488, -189946544, -200638864, -190920960, -173208512,
--149123952, -116706608, -79762376, -42197516, -2463164, 40505836, 82167016, 116783920, 142430784, 159909152,
-170632064, 176767440, 180639344, 183267872, 184873648, 186086976, 187212800, 187352384, 185622576, 182334784,
-178134848, 173134432, 167612704, 162464112, 158304448, 154957056, 152108416, 149671024, 147394144, 144867632,
-141955648, 138645296, 134621984, 129568960, 123688080, 117348168, 110399448, 102380208, 93241592, 83318608,
-72623064, 60706140, 47369732, 33063732, 18300856, 3044595, -12803298, -28537374, -42998528, -55863564,
--67835784, -79229800, -89193048, -96977680, -103273024, -109301552, -114945672, -118789672, -119976688, -119090856,
--117023904, -113776368, -108802256, -102050568, -94226752, -86180128, -78276312, -70336528, -62114892, -53812720,
--46037216, -39275328, -33621004, -29006062, -25313464, -22121766, -18753974, -14859513, -10736344, -6897718,
--3529926, -406948, 2980171, 7223062, 12537546, 18391586, 23873576, 28486908, 32414656, 36171140,
-40293772, 45185204, 50880868, 57031796, 63330904, 69791072, 76509472, 83419000, 90373632, 97126392,
-103161896, 107887432, 111051752, 112713360, 112941000, 111880136, 109895864, 107271104, 103991896, 100135016,
-96173448, 92631704, 89830312, 88130584, 87942136, 89307400, 91908544, 95536176, 100127496, 105472048,
-111369040, 117878600, 125004488, 132456792, 140041696, 147776400, 155345216, 162075952, 167646000, 172148736,
-175450480, 177293024, 177915264, 177747760, 176772800, 174956560, 172788144, 170622400, 168202192, 165463616,
-162873744, 160496480, 157845424, 154883504, 151892592, 148480240, 144195472, 139637984, 135422464, 130997040,
-126027760, 121446640, 117606944, 113443512, 108729784, 104593192, 100958576, 96706560, 92480312, 89471688,
-86388432, 82171312, 79161080, 78174848, 75229576, 69644504, 67556616, 69301448, 65283504, 55109264,
-53410604, 61128660, 55084568, 31154082, 29526290, 77868296, 133987408, 135236704, 87899192, 51497732,
-46257336, 40239012, 25975426, 39135744, 86180664, 117801824, 100321312, 61812632, 41196788, 36080408,
-25941066, 7624641, -14322105, -36024040, -35353488, 14984604, 94637456, 136563312, 107327472, 51139640,
-26530550, 33206002, 33858836, 17900350, 3644280, -3314104, -12925167, -20556250, -10763188, },
+-1968169, 6158983, 13817447, 11214160, 1439351, -3064459, -928250, -8775692, -40647572, -86008328,
+-111542984, -82070920, 9318468, 113516520, 141111680, 46847892, -94969776, -142930064, -40359272, 117732032,
+193996688, 151521072, 55995100, -28795072, -94653560, -151199488, -189946544, -200638864, -190920960, -173208512,
+-149123952, -116706608, -79762376, -42197516, -2463164, 40505836, 82167016, 116783920, 142430784, 159909152,
+170632064, 176767440, 180639344, 183267872, 184873648, 186086976, 187212800, 187352384, 185622576, 182334784,
+178134848, 173134432, 167612704, 162464112, 158304448, 154957056, 152108416, 149671024, 147394144, 144867632,
+141955648, 138645296, 134621984, 129568960, 123688080, 117348168, 110399448, 102380208, 93241592, 83318608,
+72623064, 60706140, 47369732, 33063732, 18300856, 3044595, -12803298, -28537374, -42998528, -55863564,
+-67835784, -79229800, -89193048, -96977680, -103273024, -109301552, -114945672, -118789672, -119976688, -119090856,
+-117023904, -113776368, -108802256, -102050568, -94226752, -86180128, -78276312, -70336528, -62114892, -53812720,
+-46037216, -39275328, -33621004, -29006062, -25313464, -22121766, -18753974, -14859513, -10736344, -6897718,
+-3529926, -406948, 2980171, 7223062, 12537546, 18391586, 23873576, 28486908, 32414656, 36171140,
+40293772, 45185204, 50880868, 57031796, 63330904, 69791072, 76509472, 83419000, 90373632, 97126392,
+103161896, 107887432, 111051752, 112713360, 112941000, 111880136, 109895864, 107271104, 103991896, 100135016,
+96173448, 92631704, 89830312, 88130584, 87942136, 89307400, 91908544, 95536176, 100127496, 105472048,
+111369040, 117878600, 125004488, 132456792, 140041696, 147776400, 155345216, 162075952, 167646000, 172148736,
+175450480, 177293024, 177915264, 177747760, 176772800, 174956560, 172788144, 170622400, 168202192, 165463616,
+162873744, 160496480, 157845424, 154883504, 151892592, 148480240, 144195472, 139637984, 135422464, 130997040,
+126027760, 121446640, 117606944, 113443512, 108729784, 104593192, 100958576, 96706560, 92480312, 89471688,
+86388432, 82171312, 79161080, 78174848, 75229576, 69644504, 67556616, 69301448, 65283504, 55109264,
+53410604, 61128660, 55084568, 31154082, 29526290, 77868296, 133987408, 135236704, 87899192, 51497732,
+46257336, 40239012, 25975426, 39135744, 86180664, 117801824, 100321312, 61812632, 41196788, 36080408,
+25941066, 7624641, -14322105, -36024040, -35353488, 14984604, 94637456, 136563312, 107327472, 51139640,
+26530550, 33206002, 33858836, 17900350, 3644280, -3314104, -12925167, -20556250, -10763188, },
{
2225330,
-1968169, -6158983, -13817447, -11214160, -1439351, 3064459, 928250, 8775692, 40647572, 86008328,
-111542984, 82070920, -9318468, -113516520, -141111680, -46847892, 94969776, 142930064, 40359272, -117732032,
--193996688, -151521072, -55995100, 28795072, 94653560, 151199488, 189946544, 200638864, 190920960, 173208512,
-149123952, 116706608, 79762376, 42197516, 2463164, -40505836, -82167016, -116783920, -142430784, -159909152,
--170632064, -176767440, -180639344, -183267872, -184873648, -186086976, -187212800, -187352384, -185622576, -182334784,
--178134848, -173134432, -167612704, -162464112, -158304448, -154957056, -152108416, -149671024, -147394144, -144867632,
--141955648, -138645296, -134621984, -129568960, -123688080, -117348168, -110399448, -102380208, -93241592, -83318608,
--72623064, -60706140, -47369732, -33063732, -18300856, -3044595, 12803298, 28537374, 42998528, 55863564,
-67835784, 79229800, 89193048, 96977680, 103273024, 109301552, 114945672, 118789672, 119976688, 119090856,
-117023904, 113776368, 108802256, 102050568, 94226752, 86180128, 78276312, 70336528, 62114892, 53812720,
-46037216, 39275328, 33621004, 29006062, 25313464, 22121766, 18753974, 14859513, 10736344, 6897718,
-3529926, 406948, -2980171, -7223062, -12537546, -18391586, -23873576, -28486908, -32414656, -36171140,
--40293772, -45185204, -50880868, -57031796, -63330904, -69791072, -76509472, -83419000, -90373632, -97126392,
--103161896, -107887432, -111051752, -112713360, -112941000, -111880136, -109895864, -107271104, -103991896, -100135016,
--96173448, -92631704, -89830312, -88130584, -87942136, -89307400, -91908544, -95536176, -100127496, -105472048,
--111369040, -117878600, -125004488, -132456792, -140041696, -147776400, -155345216, -162075952, -167646000, -172148736,
--175450480, -177293024, -177915264, -177747760, -176772800, -174956560, -172788144, -170622400, -168202192, -165463616,
--162873744, -160496480, -157845424, -154883504, -151892592, -148480240, -144195472, -139637984, -135422464, -130997040,
--126027760, -121446640, -117606944, -113443512, -108729784, -104593192, -100958576, -96706560, -92480312, -89471688,
--86388432, -82171312, -79161080, -78174848, -75229576, -69644504, -67556616, -69301448, -65283504, -55109264,
--53410604, -61128660, -55084568, -31154082, -29526290, -77868296, -133987408, -135236704, -87899192, -51497732,
--46257336, -40239012, -25975426, -39135744, -86180664, -117801824, -100321312, -61812632, -41196788, -36080408,
--25941066, -7624641, 14322105, 36024040, 35353488, -14984604, -94637456, -136563312, -107327472, -51139640,
--26530550, -33206002, -33858836, -17900350, -3644280, 3314104, 12925167, 20556250, 10763188, },
+1968169, -6158983, -13817447, -11214160, -1439351, 3064459, 928250, 8775692, 40647572, 86008328,
+111542984, 82070920, -9318468, -113516520, -141111680, -46847892, 94969776, 142930064, 40359272, -117732032,
+-193996688, -151521072, -55995100, 28795072, 94653560, 151199488, 189946544, 200638864, 190920960, 173208512,
+149123952, 116706608, 79762376, 42197516, 2463164, -40505836, -82167016, -116783920, -142430784, -159909152,
+-170632064, -176767440, -180639344, -183267872, -184873648, -186086976, -187212800, -187352384, -185622576, -182334784,
+-178134848, -173134432, -167612704, -162464112, -158304448, -154957056, -152108416, -149671024, -147394144, -144867632,
+-141955648, -138645296, -134621984, -129568960, -123688080, -117348168, -110399448, -102380208, -93241592, -83318608,
+-72623064, -60706140, -47369732, -33063732, -18300856, -3044595, 12803298, 28537374, 42998528, 55863564,
+67835784, 79229800, 89193048, 96977680, 103273024, 109301552, 114945672, 118789672, 119976688, 119090856,
+117023904, 113776368, 108802256, 102050568, 94226752, 86180128, 78276312, 70336528, 62114892, 53812720,
+46037216, 39275328, 33621004, 29006062, 25313464, 22121766, 18753974, 14859513, 10736344, 6897718,
+3529926, 406948, -2980171, -7223062, -12537546, -18391586, -23873576, -28486908, -32414656, -36171140,
+-40293772, -45185204, -50880868, -57031796, -63330904, -69791072, -76509472, -83419000, -90373632, -97126392,
+-103161896, -107887432, -111051752, -112713360, -112941000, -111880136, -109895864, -107271104, -103991896, -100135016,
+-96173448, -92631704, -89830312, -88130584, -87942136, -89307400, -91908544, -95536176, -100127496, -105472048,
+-111369040, -117878600, -125004488, -132456792, -140041696, -147776400, -155345216, -162075952, -167646000, -172148736,
+-175450480, -177293024, -177915264, -177747760, -176772800, -174956560, -172788144, -170622400, -168202192, -165463616,
+-162873744, -160496480, -157845424, -154883504, -151892592, -148480240, -144195472, -139637984, -135422464, -130997040,
+-126027760, -121446640, -117606944, -113443512, -108729784, -104593192, -100958576, -96706560, -92480312, -89471688,
+-86388432, -82171312, -79161080, -78174848, -75229576, -69644504, -67556616, -69301448, -65283504, -55109264,
+-53410604, -61128660, -55084568, -31154082, -29526290, -77868296, -133987408, -135236704, -87899192, -51497732,
+-46257336, -40239012, -25975426, -39135744, -86180664, -117801824, -100321312, -61812632, -41196788, -36080408,
+-25941066, -7624641, 14322105, 36024040, 35353488, -14984604, -94637456, -136563312, -107327472, -51139640,
+-26530550, -33206002, -33858836, -17900350, -3644280, 3314104, 12925167, 20556250, 10763188, },
},
{
{
-11633456,
--12715788, 12792560, 18263274, -12629351, -26460220, 21744882, 86905976, 80966040, -10594611, -106126496,
--122959544, -57123600, 33699388, 87169048, 69767448, -4167192, -68813432, -56982940, 24143622, 93236224,
-87987240, 31314606, -12676059, -17874580, -4080219, 9590662, 23705536, 38931732, 46676092, 41782516,
-28186260, 10654203, -8883066, -27856622, -43992812, -58518928, -73033768, -85168128, -91186448, -90479928,
--84697832, -75187696, -63605780, -52536040, -43498892, -35870492, -28498718, -20794084, -12163884, -2105608,
-9038222, 20708184, 33236604, 47214040, 62171800, 76826224, 90194312, 101713416, 110697952, 116401128,
-118458960, 116876264, 111651432, 102568112, 89337464, 71894528, 50494320, 25478820, -2820183, -33770256,
--66238060, -98885176, -130422048, -159560176, -185192016, -206752208, -223980400, -236382656, -243613760, -246335696,
--245776816, -242294672, -235259520, -224608000, -211570624, -197400992, -182159232, -165314368, -146910960, -127420408,
--106850200, -84780504, -61219928, -36779952, -11969537, 13087839, 38044820, 61965640, 83914000, 103569376,
-120941984, 135637744, 146652736, 152961504, 154441648, 152350000, 148595664, 144171312, 138459008, 130358696,
-119826904, 108059768, 96567504, 86388432, 77755552, 70118024, 62765580, 55661704, 49382996, 44306344,
-40295920, 37040336, 34111704, 30863634, 26847840, 22164178, 16979080, 11103564, 4450660, -2598992,
--9654550, -16572668, -23050016, -28622736, -33212446, -37021008, -39973260, -41962904, -43382928, -44648332,
--45602352, -46068892, -46399604, -46832860, -47065864, -46939160, -46704012, -46290084, -45317272, -43932148,
--42582452, -41093712, -39066484, -36768140, -34521336, -31913218, -28693602, -25490630, -22720376, -19980188,
--17258252, -15257871, -14019847, -12853227, -11799886, -11412802, -11355357, -11072963, -11185169, -12369506,
--14022531, -15709917, -18303004, -22199076, -26546120, -31270046, -37242736, -43883292, -49666464, -54925116,
--60749092, -66045860, -69426000, -72148472, -75399224, -77537584, -77686296, -77916072, -78711720, -77787224,
--75630080, -75049720, -74414600, -70523360, -66937064, -67662376, -66614404, -58616640, -53277460, -57761940,
--57564372, -41883448, -32214402, -46751256, -52820580, -8381092, 57775900, 70812736, 17866528, -34949760,
--45163192, -43890272, -59213640, -58918900, -12106439, 44909252, 53140556, 9370545, -40288940, -64476048,
--72780368, -89085136, -116870352, -126028832, -77658376, 20669530, 96355984, 82265264, 1233729, -57616448,
--47462072, -8155069, 4672388, -8897562, -14241575, -753230, 12420509, 12272332, 4403415, },
+-12715788, 12792560, 18263274, -12629351, -26460220, 21744882, 86905976, 80966040, -10594611, -106126496,
+-122959544, -57123600, 33699388, 87169048, 69767448, -4167192, -68813432, -56982940, 24143622, 93236224,
+87987240, 31314606, -12676059, -17874580, -4080219, 9590662, 23705536, 38931732, 46676092, 41782516,
+28186260, 10654203, -8883066, -27856622, -43992812, -58518928, -73033768, -85168128, -91186448, -90479928,
+-84697832, -75187696, -63605780, -52536040, -43498892, -35870492, -28498718, -20794084, -12163884, -2105608,
+9038222, 20708184, 33236604, 47214040, 62171800, 76826224, 90194312, 101713416, 110697952, 116401128,
+118458960, 116876264, 111651432, 102568112, 89337464, 71894528, 50494320, 25478820, -2820183, -33770256,
+-66238060, -98885176, -130422048, -159560176, -185192016, -206752208, -223980400, -236382656, -243613760, -246335696,
+-245776816, -242294672, -235259520, -224608000, -211570624, -197400992, -182159232, -165314368, -146910960, -127420408,
+-106850200, -84780504, -61219928, -36779952, -11969537, 13087839, 38044820, 61965640, 83914000, 103569376,
+120941984, 135637744, 146652736, 152961504, 154441648, 152350000, 148595664, 144171312, 138459008, 130358696,
+119826904, 108059768, 96567504, 86388432, 77755552, 70118024, 62765580, 55661704, 49382996, 44306344,
+40295920, 37040336, 34111704, 30863634, 26847840, 22164178, 16979080, 11103564, 4450660, -2598992,
+-9654550, -16572668, -23050016, -28622736, -33212446, -37021008, -39973260, -41962904, -43382928, -44648332,
+-45602352, -46068892, -46399604, -46832860, -47065864, -46939160, -46704012, -46290084, -45317272, -43932148,
+-42582452, -41093712, -39066484, -36768140, -34521336, -31913218, -28693602, -25490630, -22720376, -19980188,
+-17258252, -15257871, -14019847, -12853227, -11799886, -11412802, -11355357, -11072963, -11185169, -12369506,
+-14022531, -15709917, -18303004, -22199076, -26546120, -31270046, -37242736, -43883292, -49666464, -54925116,
+-60749092, -66045860, -69426000, -72148472, -75399224, -77537584, -77686296, -77916072, -78711720, -77787224,
+-75630080, -75049720, -74414600, -70523360, -66937064, -67662376, -66614404, -58616640, -53277460, -57761940,
+-57564372, -41883448, -32214402, -46751256, -52820580, -8381092, 57775900, 70812736, 17866528, -34949760,
+-45163192, -43890272, -59213640, -58918900, -12106439, 44909252, 53140556, 9370545, -40288940, -64476048,
+-72780368, -89085136, -116870352, -126028832, -77658376, 20669530, 96355984, 82265264, 1233729, -57616448,
+-47462072, -8155069, 4672388, -8897562, -14241575, -753230, 12420509, 12272332, 4403415, },
{
11633456,
-12715788, -12792560, -18263274, 12629351, 26460220, -21744882, -86905976, -80966040, 10594611, 106126496,
-122959544, 57123600, -33699388, -87169048, -69767448, 4167192, 68813432, 56982940, -24143622, -93236224,
--87987240, -31314606, 12676059, 17874580, 4080219, -9590662, -23705536, -38931732, -46676092, -41782516,
--28186260, -10654203, 8883066, 27856622, 43992812, 58518928, 73033768, 85168128, 91186448, 90479928,
-84697832, 75187696, 63605780, 52536040, 43498892, 35870492, 28498718, 20794084, 12163884, 2105608,
--9038222, -20708184, -33236604, -47214040, -62171800, -76826224, -90194312, -101713416, -110697952, -116401128,
--118458960, -116876264, -111651432, -102568112, -89337464, -71894528, -50494320, -25478820, 2820183, 33770256,
-66238060, 98885176, 130422048, 159560176, 185192016, 206752208, 223980400, 236382656, 243613760, 246335696,
-245776816, 242294672, 235259520, 224608000, 211570624, 197400992, 182159232, 165314368, 146910960, 127420408,
-106850200, 84780504, 61219928, 36779952, 11969537, -13087839, -38044820, -61965640, -83914000, -103569376,
--120941984, -135637744, -146652736, -152961504, -154441648, -152350000, -148595664, -144171312, -138459008, -130358696,
--119826904, -108059768, -96567504, -86388432, -77755552, -70118024, -62765580, -55661704, -49382996, -44306344,
--40295920, -37040336, -34111704, -30863634, -26847840, -22164178, -16979080, -11103564, -4450660, 2598992,
-9654550, 16572668, 23050016, 28622736, 33212446, 37021008, 39973260, 41962904, 43382928, 44648332,
-45602352, 46068892, 46399604, 46832860, 47065864, 46939160, 46704012, 46290084, 45317272, 43932148,
-42582452, 41093712, 39066484, 36768140, 34521336, 31913218, 28693602, 25490630, 22720376, 19980188,
-17258252, 15257871, 14019847, 12853227, 11799886, 11412802, 11355357, 11072963, 11185169, 12369506,
-14022531, 15709917, 18303004, 22199076, 26546120, 31270046, 37242736, 43883292, 49666464, 54925116,
-60749092, 66045860, 69426000, 72148472, 75399224, 77537584, 77686296, 77916072, 78711720, 77787224,
-75630080, 75049720, 74414600, 70523360, 66937064, 67662376, 66614404, 58616640, 53277460, 57761940,
-57564372, 41883448, 32214402, 46751256, 52820580, 8381092, -57775900, -70812736, -17866528, 34949760,
-45163192, 43890272, 59213640, 58918900, 12106439, -44909252, -53140556, -9370545, 40288940, 64476048,
-72780368, 89085136, 116870352, 126028832, 77658376, -20669530, -96355984, -82265264, -1233729, 57616448,
-47462072, 8155069, -4672388, 8897562, 14241575, 753230, -12420509, -12272332, -4403415, },
+12715788, -12792560, -18263274, 12629351, 26460220, -21744882, -86905976, -80966040, 10594611, 106126496,
+122959544, 57123600, -33699388, -87169048, -69767448, 4167192, 68813432, 56982940, -24143622, -93236224,
+-87987240, -31314606, 12676059, 17874580, 4080219, -9590662, -23705536, -38931732, -46676092, -41782516,
+-28186260, -10654203, 8883066, 27856622, 43992812, 58518928, 73033768, 85168128, 91186448, 90479928,
+84697832, 75187696, 63605780, 52536040, 43498892, 35870492, 28498718, 20794084, 12163884, 2105608,
+-9038222, -20708184, -33236604, -47214040, -62171800, -76826224, -90194312, -101713416, -110697952, -116401128,
+-118458960, -116876264, -111651432, -102568112, -89337464, -71894528, -50494320, -25478820, 2820183, 33770256,
+66238060, 98885176, 130422048, 159560176, 185192016, 206752208, 223980400, 236382656, 243613760, 246335696,
+245776816, 242294672, 235259520, 224608000, 211570624, 197400992, 182159232, 165314368, 146910960, 127420408,
+106850200, 84780504, 61219928, 36779952, 11969537, -13087839, -38044820, -61965640, -83914000, -103569376,
+-120941984, -135637744, -146652736, -152961504, -154441648, -152350000, -148595664, -144171312, -138459008, -130358696,
+-119826904, -108059768, -96567504, -86388432, -77755552, -70118024, -62765580, -55661704, -49382996, -44306344,
+-40295920, -37040336, -34111704, -30863634, -26847840, -22164178, -16979080, -11103564, -4450660, 2598992,
+9654550, 16572668, 23050016, 28622736, 33212446, 37021008, 39973260, 41962904, 43382928, 44648332,
+45602352, 46068892, 46399604, 46832860, 47065864, 46939160, 46704012, 46290084, 45317272, 43932148,
+42582452, 41093712, 39066484, 36768140, 34521336, 31913218, 28693602, 25490630, 22720376, 19980188,
+17258252, 15257871, 14019847, 12853227, 11799886, 11412802, 11355357, 11072963, 11185169, 12369506,
+14022531, 15709917, 18303004, 22199076, 26546120, 31270046, 37242736, 43883292, 49666464, 54925116,
+60749092, 66045860, 69426000, 72148472, 75399224, 77537584, 77686296, 77916072, 78711720, 77787224,
+75630080, 75049720, 74414600, 70523360, 66937064, 67662376, 66614404, 58616640, 53277460, 57761940,
+57564372, 41883448, 32214402, 46751256, 52820580, 8381092, -57775900, -70812736, -17866528, 34949760,
+45163192, 43890272, 59213640, 58918900, 12106439, -44909252, -53140556, -9370545, 40288940, 64476048,
+72780368, 89085136, 116870352, 126028832, 77658376, -20669530, -96355984, -82265264, -1233729, 57616448,
+47462072, 8155069, -4672388, 8897562, 14241575, 753230, -12420509, -12272332, -4403415, },
},
{
{
1873680,
--3342558, -19244674, -27656906, -22355304, -19368156, -24668682, -14368276, 35566088, 115204984, 187445792,
-207972512, 133678712, -40381820, -220773136, -249746976, -72728288, 156203136, 219099168, 80410376, -88923000,
--134445904, -75266080, -14714558, 11208254, 32719598, 56719876, 56432648, 28938952, 3604015, -2774012,
--493921, 44023, 623844, 1908576, -689342, -7561827, -14534706, -20530480, -27339078, -34963720,
--42800424, -51575040, -60615948, -67405216, -71713072, -75916768, -80622976, -84235584, -86635936, -89183384,
--91638496, -92573192, -91874720, -90047208, -86417424, -80261128, -72179072, -62777928, -51649128, -38638600,
--24369108, -8988293, 7864622, 25739202, 43609488, 61118460, 78132432, 93664648, 106606456, 116818816,
-124399968, 128720168, 129075040, 125471560, 118142736, 107078904, 92366496, 74322800, 53285512, 29830158,
-4844723, -21139292, -48130476, -75797584, -103187664, -129672576, -155294736, -179954832, -203204032, -224887168,
--244870576, -262082128, -274927840, -282757568, -286034624, -285112800, -279649600, -269137696, -253551776, -233815328,
--211990992, -190447984, -170416256, -151812592, -134632192, -119826904, -108681464, -101978632, -99884832, -101988296,
--107322640, -114817360, -123800824, -133918152, -144834880, -156276688, -167954160, -179187104, -188990368, -196777152,
--202669840, -207099024, -210479712, -213223648, -215589104, -217503056, -218880128, -219979632, -221099008, -222103504,
--222602784, -222417024, -221578432, -220112784, -218076960, -215601984, -212652960, -208877680, -203807472, -197126656,
--188761136, -178910080, -167981008, -156358816, -144291568, -132064872, -120104464, -108753944, -98115304, -88228832,
--79218528, -71134856, -63835024, -57146152, -51018844, -45420352, -40235252, -35341676, -30671436, -26133802,
--21595632, -16984448, -12326556, -7702487, -3257733, 802085, 4425964, 7874823, 11486890, 15340013,
-19361712, 23628226, 28253906, 33103460, 37936372, 42713448, 47430396, 51872468, 55884504, 59576564,
-62923956, 65588984, 67455680, 68768328, 69464120, 69151656, 67971616, 66530116, 64882996, 62704912,
-60319596, 58182848, 55834036, 52952116, 50392316, 48293148, 45027900, 40353364, 36657008, 34141232,
-29250874, 21852794, 17468706, 16530792, 10105521, -4660040, -14901926, -10554345, -1905892, -2388539,
--5411659, -14496, 1378148, -20427938, -52753472, -61199524, -39141648, -15971373, -12524125, -18922552,
--21503828, -20447266, -14762876, -2520609, -2463701, -38536596, -92413736, -110900888, -76509472, -31289374,
--12119324, -5588826, 8677981, 18663244, 20618528, 49403400, 113965880, 143392848, 67788008, },
+-3342558, -19244674, -27656906, -22355304, -19368156, -24668682, -14368276, 35566088, 115204984, 187445792,
+207972512, 133678712, -40381820, -220773136, -249746976, -72728288, 156203136, 219099168, 80410376, -88923000,
+-134445904, -75266080, -14714558, 11208254, 32719598, 56719876, 56432648, 28938952, 3604015, -2774012,
+-493921, 44023, 623844, 1908576, -689342, -7561827, -14534706, -20530480, -27339078, -34963720,
+-42800424, -51575040, -60615948, -67405216, -71713072, -75916768, -80622976, -84235584, -86635936, -89183384,
+-91638496, -92573192, -91874720, -90047208, -86417424, -80261128, -72179072, -62777928, -51649128, -38638600,
+-24369108, -8988293, 7864622, 25739202, 43609488, 61118460, 78132432, 93664648, 106606456, 116818816,
+124399968, 128720168, 129075040, 125471560, 118142736, 107078904, 92366496, 74322800, 53285512, 29830158,
+4844723, -21139292, -48130476, -75797584, -103187664, -129672576, -155294736, -179954832, -203204032, -224887168,
+-244870576, -262082128, -274927840, -282757568, -286034624, -285112800, -279649600, -269137696, -253551776, -233815328,
+-211990992, -190447984, -170416256, -151812592, -134632192, -119826904, -108681464, -101978632, -99884832, -101988296,
+-107322640, -114817360, -123800824, -133918152, -144834880, -156276688, -167954160, -179187104, -188990368, -196777152,
+-202669840, -207099024, -210479712, -213223648, -215589104, -217503056, -218880128, -219979632, -221099008, -222103504,
+-222602784, -222417024, -221578432, -220112784, -218076960, -215601984, -212652960, -208877680, -203807472, -197126656,
+-188761136, -178910080, -167981008, -156358816, -144291568, -132064872, -120104464, -108753944, -98115304, -88228832,
+-79218528, -71134856, -63835024, -57146152, -51018844, -45420352, -40235252, -35341676, -30671436, -26133802,
+-21595632, -16984448, -12326556, -7702487, -3257733, 802085, 4425964, 7874823, 11486890, 15340013,
+19361712, 23628226, 28253906, 33103460, 37936372, 42713448, 47430396, 51872468, 55884504, 59576564,
+62923956, 65588984, 67455680, 68768328, 69464120, 69151656, 67971616, 66530116, 64882996, 62704912,
+60319596, 58182848, 55834036, 52952116, 50392316, 48293148, 45027900, 40353364, 36657008, 34141232,
+29250874, 21852794, 17468706, 16530792, 10105521, -4660040, -14901926, -10554345, -1905892, -2388539,
+-5411659, -14496, 1378148, -20427938, -52753472, -61199524, -39141648, -15971373, -12524125, -18922552,
+-21503828, -20447266, -14762876, -2520609, -2463701, -38536596, -92413736, -110900888, -76509472, -31289374,
+-12119324, -5588826, 8677981, 18663244, 20618528, 49403400, 113965880, 143392848, 67788008, },
{
1873680,
--3342558, -19244674, -27656906, -22355304, -19368156, -24668682, -14368276, 35566088, 115204984, 187445792,
-207972512, 133678712, -40381820, -220773136, -249746976, -72728288, 156203136, 219099168, 80410376, -88923000,
--134445904, -75266080, -14714558, 11208254, 32719598, 56719876, 56432648, 28938952, 3604015, -2774012,
--493921, 44023, 623844, 1908576, -689342, -7561827, -14534706, -20530480, -27339078, -34963720,
--42800424, -51575040, -60615948, -67405216, -71713072, -75916768, -80622976, -84235584, -86635936, -89183384,
--91638496, -92573192, -91874720, -90047208, -86417424, -80261128, -72179072, -62777928, -51649128, -38638600,
--24369108, -8988293, 7864622, 25739202, 43609488, 61118460, 78132432, 93664648, 106606456, 116818816,
-124399968, 128720168, 129075040, 125471560, 118142736, 107078904, 92366496, 74322800, 53285512, 29830158,
-4844723, -21139292, -48130476, -75797584, -103187664, -129672576, -155294736, -179954832, -203204032, -224887168,
--244870576, -262082128, -274927840, -282757568, -286034624, -285112800, -279649600, -269137696, -253551776, -233815328,
--211990992, -190447984, -170416256, -151812592, -134632192, -119826904, -108681464, -101978632, -99884832, -101988296,
--107322640, -114817360, -123800824, -133918152, -144834880, -156276688, -167954160, -179187104, -188990368, -196777152,
--202669840, -207099024, -210479712, -213223648, -215589104, -217503056, -218880128, -219979632, -221099008, -222103504,
--222602784, -222417024, -221578432, -220112784, -218076960, -215601984, -212652960, -208877680, -203807472, -197126656,
--188761136, -178910080, -167981008, -156358816, -144291568, -132064872, -120104464, -108753944, -98115304, -88228832,
--79218528, -71134856, -63835024, -57146152, -51018844, -45420352, -40235252, -35341676, -30671436, -26133802,
--21595632, -16984448, -12326556, -7702487, -3257733, 802085, 4425964, 7874823, 11486890, 15340013,
-19361712, 23628226, 28253906, 33103460, 37936372, 42713448, 47430396, 51872468, 55884504, 59576564,
-62923956, 65588984, 67455680, 68768328, 69464120, 69151656, 67971616, 66530116, 64882996, 62704912,
-60319596, 58182848, 55834036, 52952116, 50392316, 48293148, 45027900, 40353364, 36657008, 34141232,
-29250874, 21852794, 17468706, 16530792, 10105521, -4660040, -14901926, -10554345, -1905892, -2388539,
--5411659, -14496, 1378148, -20427938, -52753472, -61199524, -39141648, -15971373, -12524125, -18922552,
--21503828, -20447266, -14762876, -2520609, -2463701, -38536596, -92413736, -110900888, -76509472, -31289374,
--12119324, -5588826, 8677981, 18663244, 20618528, 49403400, 113965880, 143392848, 67788008, },
+-3342558, -19244674, -27656906, -22355304, -19368156, -24668682, -14368276, 35566088, 115204984, 187445792,
+207972512, 133678712, -40381820, -220773136, -249746976, -72728288, 156203136, 219099168, 80410376, -88923000,
+-134445904, -75266080, -14714558, 11208254, 32719598, 56719876, 56432648, 28938952, 3604015, -2774012,
+-493921, 44023, 623844, 1908576, -689342, -7561827, -14534706, -20530480, -27339078, -34963720,
+-42800424, -51575040, -60615948, -67405216, -71713072, -75916768, -80622976, -84235584, -86635936, -89183384,
+-91638496, -92573192, -91874720, -90047208, -86417424, -80261128, -72179072, -62777928, -51649128, -38638600,
+-24369108, -8988293, 7864622, 25739202, 43609488, 61118460, 78132432, 93664648, 106606456, 116818816,
+124399968, 128720168, 129075040, 125471560, 118142736, 107078904, 92366496, 74322800, 53285512, 29830158,
+4844723, -21139292, -48130476, -75797584, -103187664, -129672576, -155294736, -179954832, -203204032, -224887168,
+-244870576, -262082128, -274927840, -282757568, -286034624, -285112800, -279649600, -269137696, -253551776, -233815328,
+-211990992, -190447984, -170416256, -151812592, -134632192, -119826904, -108681464, -101978632, -99884832, -101988296,
+-107322640, -114817360, -123800824, -133918152, -144834880, -156276688, -167954160, -179187104, -188990368, -196777152,
+-202669840, -207099024, -210479712, -213223648, -215589104, -217503056, -218880128, -219979632, -221099008, -222103504,
+-222602784, -222417024, -221578432, -220112784, -218076960, -215601984, -212652960, -208877680, -203807472, -197126656,
+-188761136, -178910080, -167981008, -156358816, -144291568, -132064872, -120104464, -108753944, -98115304, -88228832,
+-79218528, -71134856, -63835024, -57146152, -51018844, -45420352, -40235252, -35341676, -30671436, -26133802,
+-21595632, -16984448, -12326556, -7702487, -3257733, 802085, 4425964, 7874823, 11486890, 15340013,
+19361712, 23628226, 28253906, 33103460, 37936372, 42713448, 47430396, 51872468, 55884504, 59576564,
+62923956, 65588984, 67455680, 68768328, 69464120, 69151656, 67971616, 66530116, 64882996, 62704912,
+60319596, 58182848, 55834036, 52952116, 50392316, 48293148, 45027900, 40353364, 36657008, 34141232,
+29250874, 21852794, 17468706, 16530792, 10105521, -4660040, -14901926, -10554345, -1905892, -2388539,
+-5411659, -14496, 1378148, -20427938, -52753472, -61199524, -39141648, -15971373, -12524125, -18922552,
+-21503828, -20447266, -14762876, -2520609, -2463701, -38536596, -92413736, -110900888, -76509472, -31289374,
+-12119324, -5588826, 8677981, 18663244, 20618528, 49403400, 113965880, 143392848, 67788008, },
},
{
{
-19043884,
--43914968, -38262252, -1210644, 55222544, 103580656, 104854648, 41815800, -48219060, -98342936, -79811232,
--27014270, 11771968, 25251186, 27530204, 21311628, 423054, -23129472, -24757802, -1234803, 23149874,
-29137058, 23870354, 23459648, 29103772, 30188252, 21255256, 5424544, -13989245, -35932232, -57081724,
--71927816, -78420736, -79843440, -80427560, -81427752, -81558208, -78913048, -71798968, -59414432, -42890080,
--25060598, -8555575, 5655398, 17808008, 28244778, 37237368, 45284524, 52852792, 59964184, 66443144,
-72349800, 77808704, 82662552, 86696064, 89984400, 92640296, 94380832, 94751272, 93707056, 91681984,
-89125400, 86281064, 83486648, 81406272, 80671832, 81307488, 82813952, 84937808, 88006568, 92246232,
-97188128, 102227736, 107407472, 113055888, 118871808, 123967248, 127667368, 129718752, 129829344, 127503624,
-122321744, 114165600, 103276248, 90096600, 74759272, 56898116, 36531920, 14866492, -6754910, -28671054,
--52594560, -79236240, -107203992, -134600512, -160846528, -186407488, -211295216, -234419856, -254366224, -270582944,
--283647168, -294197728, -301790720, -305295392, -304413856, -300247744, -294231040, -286901120, -277723328, -265717808,
--250344512, -232193456, -212747440, -193219312, -173814112, -154246240, -134529648, -115035864, -96240016, -78633872,
--62454732, -47388520, -32900524, -18815178, -5185100, 8209830, 21780852, 35743256, 50075024, 64490008,
-78244640, 90542208, 101380016, 111477488, 121334440, 130941208, 140193632, 148746528, 155699536, 160357440,
-163121792, 164887008, 165994048, 166473472, 166606608, 166391328, 165169952, 162598336, 159321808, 156156960,
-153387776, 151220432, 149974896, 149471312, 149054160, 148359984, 147387712, 146072368, 144525120, 143221584,
-142293344, 141271680, 139971376, 138650128, 137006768, 134275712, 130547680, 126651072, 122752848, 118513184,
-114306800, 110740360, 107516992, 104217384, 101331704, 99189048, 97191352, 95255936, 94279360, 94262184,
-94076960, 93668408, 93980864, 94576256, 94197760, 93305480, 92939872, 92204360, 90170688, 88225072,
-87094960, 84780504, 80922016, 78442208, 77275048, 73243152, 66924716, 64326800, 64422360, 58594628,
-48184164, 46018964, 51507396, 44683768, 20112794, 5031554, 21172578, 47353624, 48104708, 25314538,
-9361418, 7545184, -2579665, -27305792, -39609800, -20830592, 7098507, 10118406, -13167296, -34975528,
--39409008, -40161164, -53462680, -68065568, -55893092, -10875931, 35991824, 48624936, 26519812, 2823941,
-3407520, 19760070, 26929982, 18486612, 13001940, 26946088, 50138912, 54092428, 23716272, },
+-43914968, -38262252, -1210644, 55222544, 103580656, 104854648, 41815800, -48219060, -98342936, -79811232,
+-27014270, 11771968, 25251186, 27530204, 21311628, 423054, -23129472, -24757802, -1234803, 23149874,
+29137058, 23870354, 23459648, 29103772, 30188252, 21255256, 5424544, -13989245, -35932232, -57081724,
+-71927816, -78420736, -79843440, -80427560, -81427752, -81558208, -78913048, -71798968, -59414432, -42890080,
+-25060598, -8555575, 5655398, 17808008, 28244778, 37237368, 45284524, 52852792, 59964184, 66443144,
+72349800, 77808704, 82662552, 86696064, 89984400, 92640296, 94380832, 94751272, 93707056, 91681984,
+89125400, 86281064, 83486648, 81406272, 80671832, 81307488, 82813952, 84937808, 88006568, 92246232,
+97188128, 102227736, 107407472, 113055888, 118871808, 123967248, 127667368, 129718752, 129829344, 127503624,
+122321744, 114165600, 103276248, 90096600, 74759272, 56898116, 36531920, 14866492, -6754910, -28671054,
+-52594560, -79236240, -107203992, -134600512, -160846528, -186407488, -211295216, -234419856, -254366224, -270582944,
+-283647168, -294197728, -301790720, -305295392, -304413856, -300247744, -294231040, -286901120, -277723328, -265717808,
+-250344512, -232193456, -212747440, -193219312, -173814112, -154246240, -134529648, -115035864, -96240016, -78633872,
+-62454732, -47388520, -32900524, -18815178, -5185100, 8209830, 21780852, 35743256, 50075024, 64490008,
+78244640, 90542208, 101380016, 111477488, 121334440, 130941208, 140193632, 148746528, 155699536, 160357440,
+163121792, 164887008, 165994048, 166473472, 166606608, 166391328, 165169952, 162598336, 159321808, 156156960,
+153387776, 151220432, 149974896, 149471312, 149054160, 148359984, 147387712, 146072368, 144525120, 143221584,
+142293344, 141271680, 139971376, 138650128, 137006768, 134275712, 130547680, 126651072, 122752848, 118513184,
+114306800, 110740360, 107516992, 104217384, 101331704, 99189048, 97191352, 95255936, 94279360, 94262184,
+94076960, 93668408, 93980864, 94576256, 94197760, 93305480, 92939872, 92204360, 90170688, 88225072,
+87094960, 84780504, 80922016, 78442208, 77275048, 73243152, 66924716, 64326800, 64422360, 58594628,
+48184164, 46018964, 51507396, 44683768, 20112794, 5031554, 21172578, 47353624, 48104708, 25314538,
+9361418, 7545184, -2579665, -27305792, -39609800, -20830592, 7098507, 10118406, -13167296, -34975528,
+-39409008, -40161164, -53462680, -68065568, -55893092, -10875931, 35991824, 48624936, 26519812, 2823941,
+3407520, 19760070, 26929982, 18486612, 13001940, 26946088, 50138912, 54092428, 23716272, },
{
-19043884,
--43914968, -38262252, -1210644, 55222544, 103580656, 104854648, 41815800, -48219060, -98342936, -79811232,
--27014270, 11771968, 25251186, 27530204, 21311628, 423054, -23129472, -24757802, -1234803, 23149874,
-29137058, 23870354, 23459648, 29103772, 30188252, 21255256, 5424544, -13989245, -35932232, -57081724,
--71927816, -78420736, -79843440, -80427560, -81427752, -81558208, -78913048, -71798968, -59414432, -42890080,
--25060598, -8555575, 5655398, 17808008, 28244778, 37237368, 45284524, 52852792, 59964184, 66443144,
-72349800, 77808704, 82662552, 86696064, 89984400, 92640296, 94380832, 94751272, 93707056, 91681984,
-89125400, 86281064, 83486648, 81406272, 80671832, 81307488, 82813952, 84937808, 88006568, 92246232,
-97188128, 102227736, 107407472, 113055888, 118871808, 123967248, 127667368, 129718752, 129829344, 127503624,
-122321744, 114165600, 103276248, 90096600, 74759272, 56898116, 36531920, 14866492, -6754910, -28671054,
--52594560, -79236240, -107203992, -134600512, -160846528, -186407488, -211295216, -234419856, -254366224, -270582944,
--283647168, -294197728, -301790720, -305295392, -304413856, -300247744, -294231040, -286901120, -277723328, -265717808,
--250344512, -232193456, -212747440, -193219312, -173814112, -154246240, -134529648, -115035864, -96240016, -78633872,
--62454732, -47388520, -32900524, -18815178, -5185100, 8209830, 21780852, 35743256, 50075024, 64490008,
-78244640, 90542208, 101380016, 111477488, 121334440, 130941208, 140193632, 148746528, 155699536, 160357440,
-163121792, 164887008, 165994048, 166473472, 166606608, 166391328, 165169952, 162598336, 159321808, 156156960,
-153387776, 151220432, 149974896, 149471312, 149054160, 148359984, 147387712, 146072368, 144525120, 143221584,
-142293344, 141271680, 139971376, 138650128, 137006768, 134275712, 130547680, 126651072, 122752848, 118513184,
-114306800, 110740360, 107516992, 104217384, 101331704, 99189048, 97191352, 95255936, 94279360, 94262184,
-94076960, 93668408, 93980864, 94576256, 94197760, 93305480, 92939872, 92204360, 90170688, 88225072,
-87094960, 84780504, 80922016, 78442208, 77275048, 73243152, 66924716, 64326800, 64422360, 58594628,
-48184164, 46018964, 51507396, 44683768, 20112794, 5031554, 21172578, 47353624, 48104708, 25314538,
-9361418, 7545184, -2579665, -27305792, -39609800, -20830592, 7098507, 10118406, -13167296, -34975528,
--39409008, -40161164, -53462680, -68065568, -55893092, -10875931, 35991824, 48624936, 26519812, 2823941,
-3407520, 19760070, 26929982, 18486612, 13001940, 26946088, 50138912, 54092428, 23716272, },
+-43914968, -38262252, -1210644, 55222544, 103580656, 104854648, 41815800, -48219060, -98342936, -79811232,
+-27014270, 11771968, 25251186, 27530204, 21311628, 423054, -23129472, -24757802, -1234803, 23149874,
+29137058, 23870354, 23459648, 29103772, 30188252, 21255256, 5424544, -13989245, -35932232, -57081724,
+-71927816, -78420736, -79843440, -80427560, -81427752, -81558208, -78913048, -71798968, -59414432, -42890080,
+-25060598, -8555575, 5655398, 17808008, 28244778, 37237368, 45284524, 52852792, 59964184, 66443144,
+72349800, 77808704, 82662552, 86696064, 89984400, 92640296, 94380832, 94751272, 93707056, 91681984,
+89125400, 86281064, 83486648, 81406272, 80671832, 81307488, 82813952, 84937808, 88006568, 92246232,
+97188128, 102227736, 107407472, 113055888, 118871808, 123967248, 127667368, 129718752, 129829344, 127503624,
+122321744, 114165600, 103276248, 90096600, 74759272, 56898116, 36531920, 14866492, -6754910, -28671054,
+-52594560, -79236240, -107203992, -134600512, -160846528, -186407488, -211295216, -234419856, -254366224, -270582944,
+-283647168, -294197728, -301790720, -305295392, -304413856, -300247744, -294231040, -286901120, -277723328, -265717808,
+-250344512, -232193456, -212747440, -193219312, -173814112, -154246240, -134529648, -115035864, -96240016, -78633872,
+-62454732, -47388520, -32900524, -18815178, -5185100, 8209830, 21780852, 35743256, 50075024, 64490008,
+78244640, 90542208, 101380016, 111477488, 121334440, 130941208, 140193632, 148746528, 155699536, 160357440,
+163121792, 164887008, 165994048, 166473472, 166606608, 166391328, 165169952, 162598336, 159321808, 156156960,
+153387776, 151220432, 149974896, 149471312, 149054160, 148359984, 147387712, 146072368, 144525120, 143221584,
+142293344, 141271680, 139971376, 138650128, 137006768, 134275712, 130547680, 126651072, 122752848, 118513184,
+114306800, 110740360, 107516992, 104217384, 101331704, 99189048, 97191352, 95255936, 94279360, 94262184,
+94076960, 93668408, 93980864, 94576256, 94197760, 93305480, 92939872, 92204360, 90170688, 88225072,
+87094960, 84780504, 80922016, 78442208, 77275048, 73243152, 66924716, 64326800, 64422360, 58594628,
+48184164, 46018964, 51507396, 44683768, 20112794, 5031554, 21172578, 47353624, 48104708, 25314538,
+9361418, 7545184, -2579665, -27305792, -39609800, -20830592, 7098507, 10118406, -13167296, -34975528,
+-39409008, -40161164, -53462680, -68065568, -55893092, -10875931, 35991824, 48624936, 26519812, 2823941,
+3407520, 19760070, 26929982, 18486612, 13001940, 26946088, 50138912, 54092428, 23716272, },
},
{
{
22912576,
-33083060, -15137612, -77247672, -120297736, -152744064, -162527472, -98063768, 53420804, 225633424, 342901600,
-368999968, 262932528, -8273181, -334095840, -445709152, -187704032, 234369392, 430890432, 258872176, -54666880,
--231026288, -234318928, -195415648, -183787552, -168180720, -128274568, -89106072, -61837328, -28456306, 16117939,
-55568824, 82885888, 105637408, 125082872, 134603744, 133938552, 127843456, 116640040, 99855304, 82162184,
-67347768, 53308596, 38053948, 23500988, 10541997, -2518462, -15147813, -24635932, -31176094, -37507412,
--44420164, -51113868, -58128624, -66110284, -73897056, -80638544, -87209848, -93788128, -99032280, -102709312,
--106020192, -108920904, -110194904, -109961904, -109219408, -107584096, -104145440, -99537480, -94908576, -90141160,
--84906672, -79914312, -75686448, -71660456, -67447632, -63418412, -59664076, -55971476, -52758304, -50490024,
--48571248, -46197204, -43537008, -40852120, -37523520, -33078764, -28085328, -23219666, -18641232, -14722611,
--12118787, -10951093, -11154567, -13344463, -17927194, -23760296, -29066192, -33188822, -36287640, -37961068,
--37246492, -33403034, -26076894, -15426449, -2415919, 11868605, 27242440, 43924632, 61286500, 78111496,
-93715112, 107930384, 120553824, 131646656, 141690432, 150730800, 158116000, 163587792, 167816720, 171597904,
-175348480, 179357840, 183519664, 186957248, 188903936, 189707632, 190191888, 190584336, 190813584, 191065920,
-191285488, 190901088, 189672192, 188022400, 186193280, 183966336, 181352304, 178589040, 175419888, 171292960,
-166147056, 160202816, 153353424, 145516720, 137107168, 128511328, 119673896, 110619568, 101676912, 92926984,
-84211960, 75754632, 67987184, 60909080, 54394688, 48741972, 44157096, 40261024, 36796060, 34086472,
-32245004, 30837328, 29772176, 29517700, 30151208, 31197568, 32465658, 34006476, 35463008, 36461588,
-37243272, 38035692, 38538740, 38768524, 39375724, 40481676, 41403484, 41928544, 42491724, 42966316,
-42817064, 42306500, 42020888, 41728292, 41157060, 40897752, 41180148, 41191956, 40722732, 40543956,
-40480068, 39620000, 38581692, 38432976, 38014220, 36214628, 35186520, 36433672, 36713916, 34064460,
-33306398, 37192268, 38308960, 31653908, 28657632, 42315092, 62512176, 65438660, 47303696, 29169808,
-25497610, 26946624, 20507396, 9653476, 5276904, 8847096, 13584982, 14318347, 9484898, -607201,
--13053479, -25279104, -41357852, -68102616, -99225016, -110134232, -80648208, -24404004, 17795660, 24222542,
-19369228, 35908076, 62372052, 65007552, 59028420, 102312560, 191254352, 219296736, 99885904, },
+33083060, -15137612, -77247672, -120297736, -152744064, -162527472, -98063768, 53420804, 225633424, 342901600,
+368999968, 262932528, -8273181, -334095840, -445709152, -187704032, 234369392, 430890432, 258872176, -54666880,
+-231026288, -234318928, -195415648, -183787552, -168180720, -128274568, -89106072, -61837328, -28456306, 16117939,
+55568824, 82885888, 105637408, 125082872, 134603744, 133938552, 127843456, 116640040, 99855304, 82162184,
+67347768, 53308596, 38053948, 23500988, 10541997, -2518462, -15147813, -24635932, -31176094, -37507412,
+-44420164, -51113868, -58128624, -66110284, -73897056, -80638544, -87209848, -93788128, -99032280, -102709312,
+-106020192, -108920904, -110194904, -109961904, -109219408, -107584096, -104145440, -99537480, -94908576, -90141160,
+-84906672, -79914312, -75686448, -71660456, -67447632, -63418412, -59664076, -55971476, -52758304, -50490024,
+-48571248, -46197204, -43537008, -40852120, -37523520, -33078764, -28085328, -23219666, -18641232, -14722611,
+-12118787, -10951093, -11154567, -13344463, -17927194, -23760296, -29066192, -33188822, -36287640, -37961068,
+-37246492, -33403034, -26076894, -15426449, -2415919, 11868605, 27242440, 43924632, 61286500, 78111496,
+93715112, 107930384, 120553824, 131646656, 141690432, 150730800, 158116000, 163587792, 167816720, 171597904,
+175348480, 179357840, 183519664, 186957248, 188903936, 189707632, 190191888, 190584336, 190813584, 191065920,
+191285488, 190901088, 189672192, 188022400, 186193280, 183966336, 181352304, 178589040, 175419888, 171292960,
+166147056, 160202816, 153353424, 145516720, 137107168, 128511328, 119673896, 110619568, 101676912, 92926984,
+84211960, 75754632, 67987184, 60909080, 54394688, 48741972, 44157096, 40261024, 36796060, 34086472,
+32245004, 30837328, 29772176, 29517700, 30151208, 31197568, 32465658, 34006476, 35463008, 36461588,
+37243272, 38035692, 38538740, 38768524, 39375724, 40481676, 41403484, 41928544, 42491724, 42966316,
+42817064, 42306500, 42020888, 41728292, 41157060, 40897752, 41180148, 41191956, 40722732, 40543956,
+40480068, 39620000, 38581692, 38432976, 38014220, 36214628, 35186520, 36433672, 36713916, 34064460,
+33306398, 37192268, 38308960, 31653908, 28657632, 42315092, 62512176, 65438660, 47303696, 29169808,
+25497610, 26946624, 20507396, 9653476, 5276904, 8847096, 13584982, 14318347, 9484898, -607201,
+-13053479, -25279104, -41357852, -68102616, -99225016, -110134232, -80648208, -24404004, 17795660, 24222542,
+19369228, 35908076, 62372052, 65007552, 59028420, 102312560, 191254352, 219296736, 99885904, },
{
22912576,
-33083060, -15137612, -77247672, -120297736, -152744064, -162527472, -98063768, 53420804, 225633424, 342901600,
-368999968, 262932528, -8273181, -334095840, -445709152, -187704032, 234369392, 430890432, 258872176, -54666880,
--231026288, -234318928, -195415648, -183787552, -168180720, -128274568, -89106072, -61837328, -28456306, 16117939,
-55568824, 82885888, 105637408, 125082872, 134603744, 133938552, 127843456, 116640040, 99855304, 82162184,
-67347768, 53308596, 38053948, 23500988, 10541997, -2518462, -15147813, -24635932, -31176094, -37507412,
--44420164, -51113868, -58128624, -66110284, -73897056, -80638544, -87209848, -93788128, -99032280, -102709312,
--106020192, -108920904, -110194904, -109961904, -109219408, -107584096, -104145440, -99537480, -94908576, -90141160,
--84906672, -79914312, -75686448, -71660456, -67447632, -63418412, -59664076, -55971476, -52758304, -50490024,
--48571248, -46197204, -43537008, -40852120, -37523520, -33078764, -28085328, -23219666, -18641232, -14722611,
--12118787, -10951093, -11154567, -13344463, -17927194, -23760296, -29066192, -33188822, -36287640, -37961068,
--37246492, -33403034, -26076894, -15426449, -2415919, 11868605, 27242440, 43924632, 61286500, 78111496,
-93715112, 107930384, 120553824, 131646656, 141690432, 150730800, 158116000, 163587792, 167816720, 171597904,
-175348480, 179357840, 183519664, 186957248, 188903936, 189707632, 190191888, 190584336, 190813584, 191065920,
-191285488, 190901088, 189672192, 188022400, 186193280, 183966336, 181352304, 178589040, 175419888, 171292960,
-166147056, 160202816, 153353424, 145516720, 137107168, 128511328, 119673896, 110619568, 101676912, 92926984,
-84211960, 75754632, 67987184, 60909080, 54394688, 48741972, 44157096, 40261024, 36796060, 34086472,
-32245004, 30837328, 29772176, 29517700, 30151208, 31197568, 32465658, 34006476, 35463008, 36461588,
-37243272, 38035692, 38538740, 38768524, 39375724, 40481676, 41403484, 41928544, 42491724, 42966316,
-42817064, 42306500, 42020888, 41728292, 41157060, 40897752, 41180148, 41191956, 40722732, 40543956,
-40480068, 39620000, 38581692, 38432976, 38014220, 36214628, 35186520, 36433672, 36713916, 34064460,
-33306398, 37192268, 38308960, 31653908, 28657632, 42315092, 62512176, 65438660, 47303696, 29169808,
-25497610, 26946624, 20507396, 9653476, 5276904, 8847096, 13584982, 14318347, 9484898, -607201,
--13053479, -25279104, -41357852, -68102616, -99225016, -110134232, -80648208, -24404004, 17795660, 24222542,
-19369228, 35908076, 62372052, 65007552, 59028420, 102312560, 191254352, 219296736, 99885904, },
+33083060, -15137612, -77247672, -120297736, -152744064, -162527472, -98063768, 53420804, 225633424, 342901600,
+368999968, 262932528, -8273181, -334095840, -445709152, -187704032, 234369392, 430890432, 258872176, -54666880,
+-231026288, -234318928, -195415648, -183787552, -168180720, -128274568, -89106072, -61837328, -28456306, 16117939,
+55568824, 82885888, 105637408, 125082872, 134603744, 133938552, 127843456, 116640040, 99855304, 82162184,
+67347768, 53308596, 38053948, 23500988, 10541997, -2518462, -15147813, -24635932, -31176094, -37507412,
+-44420164, -51113868, -58128624, -66110284, -73897056, -80638544, -87209848, -93788128, -99032280, -102709312,
+-106020192, -108920904, -110194904, -109961904, -109219408, -107584096, -104145440, -99537480, -94908576, -90141160,
+-84906672, -79914312, -75686448, -71660456, -67447632, -63418412, -59664076, -55971476, -52758304, -50490024,
+-48571248, -46197204, -43537008, -40852120, -37523520, -33078764, -28085328, -23219666, -18641232, -14722611,
+-12118787, -10951093, -11154567, -13344463, -17927194, -23760296, -29066192, -33188822, -36287640, -37961068,
+-37246492, -33403034, -26076894, -15426449, -2415919, 11868605, 27242440, 43924632, 61286500, 78111496,
+93715112, 107930384, 120553824, 131646656, 141690432, 150730800, 158116000, 163587792, 167816720, 171597904,
+175348480, 179357840, 183519664, 186957248, 188903936, 189707632, 190191888, 190584336, 190813584, 191065920,
+191285488, 190901088, 189672192, 188022400, 186193280, 183966336, 181352304, 178589040, 175419888, 171292960,
+166147056, 160202816, 153353424, 145516720, 137107168, 128511328, 119673896, 110619568, 101676912, 92926984,
+84211960, 75754632, 67987184, 60909080, 54394688, 48741972, 44157096, 40261024, 36796060, 34086472,
+32245004, 30837328, 29772176, 29517700, 30151208, 31197568, 32465658, 34006476, 35463008, 36461588,
+37243272, 38035692, 38538740, 38768524, 39375724, 40481676, 41403484, 41928544, 42491724, 42966316,
+42817064, 42306500, 42020888, 41728292, 41157060, 40897752, 41180148, 41191956, 40722732, 40543956,
+40480068, 39620000, 38581692, 38432976, 38014220, 36214628, 35186520, 36433672, 36713916, 34064460,
+33306398, 37192268, 38308960, 31653908, 28657632, 42315092, 62512176, 65438660, 47303696, 29169808,
+25497610, 26946624, 20507396, 9653476, 5276904, 8847096, 13584982, 14318347, 9484898, -607201,
+-13053479, -25279104, -41357852, -68102616, -99225016, -110134232, -80648208, -24404004, 17795660, 24222542,
+19369228, 35908076, 62372052, 65007552, 59028420, 102312560, 191254352, 219296736, 99885904, },
},
{
{
2811593,
-11651709, 24683714, 38550552, 49903224, 43626132, -1712618, -78012712, -148158112, -194630208, -212185872,
--141817680, 80555872, 349895968, 395538560, 95827696, -293273792, -390015776, -136008192, 164994384, 247096448,
-150730272, 59409060, 36841156, 23941758, -11520176, -40115532, -45217952, -44843752, -48241608, -44198436,
--29087130, -13136157, -2078764, 6528887, 13400835, 17460652, 20465520, 23479512, 24280524, 22565222,
-21513492, 21992380, 21405580, 19192062, 17724256, 17702244, 17687212, 17659832, 18847390, 20900384,
-22446036, 23242216, 23521926, 22731114, 20545512, 17583060, 14187351, 10077604, 5511517, 1179505,
--3005403, -7570954, -12317966, -16756815, -21050708, -25465934, -29654602, -33335388, -36824512, -40335648,
--43652972, -46806552, -50156628, -53645752, -56791816, -59336584, -61207580, -62139048, -61984432, -60968136,
--59076740, -55733644, -50593640, -44098576, -36854040, -28940564, -20136954, -10415296, -74088, 10281078,
-19926500, 28428388, 35715336, 41639172, 45858976, 48331268, 49465676, 49610632, 48818208, 47272020,
-45551348, 44269840, 43650828, 43487616, 43418900, 43353400, 43700756, 45009648, 47382080, 50449760,
-53869092, 57584236, 61721900, 66486632, 72013720, 78093776, 84218400, 90076200, 95814280, 101782136,
-108258408, 115370336, 122938608, 130462856, 137564048, 144328624, 150999232, 157586112, 163950176, 169920720,
-175151456, 179257440, 182218816, 184320128, 185714384, 186431648, 186631904, 186397280, 185502864, 183816016,
-181655104, 179429232, 177305376, 175456928, 174135152, 173290656, 172604528, 171951696, 171356848, 170666960,
-169782208, 168940384, 168295072, 167642240, 166908336, 166301664, 165705200, 164677632, 163193184, 161554656,
-159646624, 157208144, 154559232, 152100368, 149600688, 146894864, 144484304, 142610624, 140772928, 138825152,
-137261792, 135995840, 134363216, 132420288, 130557880, 128245576, 125015224, 121768768, 119185344, 116360864,
-112885696, 110000016, 107964200, 105277168, 101876088, 99383936, 97464616, 94458680, 91321744, 89620400,
-87426744, 83417928, 81007912, 81163072, 78259136, 71723272, 70384312, 74463456, 70391296, 57915488,
-57659400, 70776232, 65012384, 34982508, 36167920, 104857328, 179518896, 172511664, 96391952, 39862664,
-33528126, 29611652, 13415330, 34887484, 105161736, 152656016, 124219048, 59104120, 20142860, 10727218,
--97711, -22026202, -49624588, -78276312, -84543208, -37925636, 40091372, 78421272, 47701516, 60666,
--12510166, -6209449, -15641197, -32628866, -43815108, -75613440, -136878992, -159193504, -73527696, },
+11651709, 24683714, 38550552, 49903224, 43626132, -1712618, -78012712, -148158112, -194630208, -212185872,
+-141817680, 80555872, 349895968, 395538560, 95827696, -293273792, -390015776, -136008192, 164994384, 247096448,
+150730272, 59409060, 36841156, 23941758, -11520176, -40115532, -45217952, -44843752, -48241608, -44198436,
+-29087130, -13136157, -2078764, 6528887, 13400835, 17460652, 20465520, 23479512, 24280524, 22565222,
+21513492, 21992380, 21405580, 19192062, 17724256, 17702244, 17687212, 17659832, 18847390, 20900384,
+22446036, 23242216, 23521926, 22731114, 20545512, 17583060, 14187351, 10077604, 5511517, 1179505,
+-3005403, -7570954, -12317966, -16756815, -21050708, -25465934, -29654602, -33335388, -36824512, -40335648,
+-43652972, -46806552, -50156628, -53645752, -56791816, -59336584, -61207580, -62139048, -61984432, -60968136,
+-59076740, -55733644, -50593640, -44098576, -36854040, -28940564, -20136954, -10415296, -74088, 10281078,
+19926500, 28428388, 35715336, 41639172, 45858976, 48331268, 49465676, 49610632, 48818208, 47272020,
+45551348, 44269840, 43650828, 43487616, 43418900, 43353400, 43700756, 45009648, 47382080, 50449760,
+53869092, 57584236, 61721900, 66486632, 72013720, 78093776, 84218400, 90076200, 95814280, 101782136,
+108258408, 115370336, 122938608, 130462856, 137564048, 144328624, 150999232, 157586112, 163950176, 169920720,
+175151456, 179257440, 182218816, 184320128, 185714384, 186431648, 186631904, 186397280, 185502864, 183816016,
+181655104, 179429232, 177305376, 175456928, 174135152, 173290656, 172604528, 171951696, 171356848, 170666960,
+169782208, 168940384, 168295072, 167642240, 166908336, 166301664, 165705200, 164677632, 163193184, 161554656,
+159646624, 157208144, 154559232, 152100368, 149600688, 146894864, 144484304, 142610624, 140772928, 138825152,
+137261792, 135995840, 134363216, 132420288, 130557880, 128245576, 125015224, 121768768, 119185344, 116360864,
+112885696, 110000016, 107964200, 105277168, 101876088, 99383936, 97464616, 94458680, 91321744, 89620400,
+87426744, 83417928, 81007912, 81163072, 78259136, 71723272, 70384312, 74463456, 70391296, 57915488,
+57659400, 70776232, 65012384, 34982508, 36167920, 104857328, 179518896, 172511664, 96391952, 39862664,
+33528126, 29611652, 13415330, 34887484, 105161736, 152656016, 124219048, 59104120, 20142860, 10727218,
+-97711, -22026202, -49624588, -78276312, -84543208, -37925636, 40091372, 78421272, 47701516, 60666,
+-12510166, -6209449, -15641197, -32628866, -43815108, -75613440, -136878992, -159193504, -73527696, },
{
-2811593,
--11651709, -24683714, -38550552, -49903224, -43626132, 1712618, 78012712, 148158112, 194630208, 212185872,
-141817680, -80555872, -349895968, -395538560, -95827696, 293273792, 390015776, 136008192, -164994384, -247096448,
--150730272, -59409060, -36841156, -23941758, 11520176, 40115532, 45217952, 44843752, 48241608, 44198436,
-29087130, 13136157, 2078764, -6528887, -13400835, -17460652, -20465520, -23479512, -24280524, -22565222,
--21513492, -21992380, -21405580, -19192062, -17724256, -17702244, -17687212, -17659832, -18847390, -20900384,
--22446036, -23242216, -23521926, -22731114, -20545512, -17583060, -14187351, -10077604, -5511517, -1179505,
-3005403, 7570954, 12317966, 16756815, 21050708, 25465934, 29654602, 33335388, 36824512, 40335648,
-43652972, 46806552, 50156628, 53645752, 56791816, 59336584, 61207580, 62139048, 61984432, 60968136,
-59076740, 55733644, 50593640, 44098576, 36854040, 28940564, 20136954, 10415296, 74088, -10281078,
--19926500, -28428388, -35715336, -41639172, -45858976, -48331268, -49465676, -49610632, -48818208, -47272020,
--45551348, -44269840, -43650828, -43487616, -43418900, -43353400, -43700756, -45009648, -47382080, -50449760,
--53869092, -57584236, -61721900, -66486632, -72013720, -78093776, -84218400, -90076200, -95814280, -101782136,
--108258408, -115370336, -122938608, -130462856, -137564048, -144328624, -150999232, -157586112, -163950176, -169920720,
--175151456, -179257440, -182218816, -184320128, -185714384, -186431648, -186631904, -186397280, -185502864, -183816016,
--181655104, -179429232, -177305376, -175456928, -174135152, -173290656, -172604528, -171951696, -171356848, -170666960,
--169782208, -168940384, -168295072, -167642240, -166908336, -166301664, -165705200, -164677632, -163193184, -161554656,
--159646624, -157208144, -154559232, -152100368, -149600688, -146894864, -144484304, -142610624, -140772928, -138825152,
--137261792, -135995840, -134363216, -132420288, -130557880, -128245576, -125015224, -121768768, -119185344, -116360864,
--112885696, -110000016, -107964200, -105277168, -101876088, -99383936, -97464616, -94458680, -91321744, -89620400,
--87426744, -83417928, -81007912, -81163072, -78259136, -71723272, -70384312, -74463456, -70391296, -57915488,
--57659400, -70776232, -65012384, -34982508, -36167920, -104857328, -179518896, -172511664, -96391952, -39862664,
--33528126, -29611652, -13415330, -34887484, -105161736, -152656016, -124219048, -59104120, -20142860, -10727218,
-97711, 22026202, 49624588, 78276312, 84543208, 37925636, -40091372, -78421272, -47701516, -60666,
-12510166, 6209449, 15641197, 32628866, 43815108, 75613440, 136878992, 159193504, 73527696, },
+-11651709, -24683714, -38550552, -49903224, -43626132, 1712618, 78012712, 148158112, 194630208, 212185872,
+141817680, -80555872, -349895968, -395538560, -95827696, 293273792, 390015776, 136008192, -164994384, -247096448,
+-150730272, -59409060, -36841156, -23941758, 11520176, 40115532, 45217952, 44843752, 48241608, 44198436,
+29087130, 13136157, 2078764, -6528887, -13400835, -17460652, -20465520, -23479512, -24280524, -22565222,
+-21513492, -21992380, -21405580, -19192062, -17724256, -17702244, -17687212, -17659832, -18847390, -20900384,
+-22446036, -23242216, -23521926, -22731114, -20545512, -17583060, -14187351, -10077604, -5511517, -1179505,
+3005403, 7570954, 12317966, 16756815, 21050708, 25465934, 29654602, 33335388, 36824512, 40335648,
+43652972, 46806552, 50156628, 53645752, 56791816, 59336584, 61207580, 62139048, 61984432, 60968136,
+59076740, 55733644, 50593640, 44098576, 36854040, 28940564, 20136954, 10415296, 74088, -10281078,
+-19926500, -28428388, -35715336, -41639172, -45858976, -48331268, -49465676, -49610632, -48818208, -47272020,
+-45551348, -44269840, -43650828, -43487616, -43418900, -43353400, -43700756, -45009648, -47382080, -50449760,
+-53869092, -57584236, -61721900, -66486632, -72013720, -78093776, -84218400, -90076200, -95814280, -101782136,
+-108258408, -115370336, -122938608, -130462856, -137564048, -144328624, -150999232, -157586112, -163950176, -169920720,
+-175151456, -179257440, -182218816, -184320128, -185714384, -186431648, -186631904, -186397280, -185502864, -183816016,
+-181655104, -179429232, -177305376, -175456928, -174135152, -173290656, -172604528, -171951696, -171356848, -170666960,
+-169782208, -168940384, -168295072, -167642240, -166908336, -166301664, -165705200, -164677632, -163193184, -161554656,
+-159646624, -157208144, -154559232, -152100368, -149600688, -146894864, -144484304, -142610624, -140772928, -138825152,
+-137261792, -135995840, -134363216, -132420288, -130557880, -128245576, -125015224, -121768768, -119185344, -116360864,
+-112885696, -110000016, -107964200, -105277168, -101876088, -99383936, -97464616, -94458680, -91321744, -89620400,
+-87426744, -83417928, -81007912, -81163072, -78259136, -71723272, -70384312, -74463456, -70391296, -57915488,
+-57659400, -70776232, -65012384, -34982508, -36167920, -104857328, -179518896, -172511664, -96391952, -39862664,
+-33528126, -29611652, -13415330, -34887484, -105161736, -152656016, -124219048, -59104120, -20142860, -10727218,
+97711, 22026202, 49624588, 78276312, 84543208, 37925636, -40091372, -78421272, -47701516, -60666,
+12510166, 6209449, 15641197, 32628866, 43815108, 75613440, 136878992, 159193504, 73527696, },
},
{
{
1766305,
-2392834, -2967823, -13154948, -21828098, -13592498, 23732916, 69370168, 72411536, 11843372, -60894584,
--74438224, -25907780, 20711942, 23179938, 5403069, 3657165, 11682311, 4756140, -13142600, -18874770,
--10082436, -5405753, -11533598, -15028091, -6480569, 6342056, 12303471, 10251013, 4749160, -2111513,
--10241350, -18179522, -23642184, -25355876, -23281408, -18531710, -13084081, -8157217, -3108483, 3117610,
-10074383, 16234440, 20606180, 23109608, 24038396, 24024974, 24174224, 25506738, 28323698, 32306744,
-36983964, 41889888, 46537044, 50538344, 53766548, 56298968, 58215060, 59515900, 60221348, 60425896,
-60163900, 59333900, 57909580, 56159380, 54442468, 52864068, 51385524, 50192600, 49603116, 49638548,
-50051940, 50826644, 52286396, 54623396, 57640072, 61087320, 64938832, 69148976, 73336032, 76918032,
-79475152, 80860272, 80984296, 79532592, 75905496, 69521560, 60245508, 48402132, 34217468, 17394080,
--2496987, -25216290, -49676664, -74593920, -99082752, -122543472, -144185808, -162914016, -177765472, -188473904,
--195543952, -199672496, -201060848, -199500160, -195243312, -189557840, -184086064, -179620368, -175639472, -171028816,
--165171552, -158431136, -151753536, -145830240, -140600592, -135516416, -130188512, -124697400, -119384520, -114528528,
--110164304, -106021808, -101652216, -96741992, -91300264, -85496152, -79429512, -73136312, -66677220, -60127396,
--53596360, -47292420, -41414224, -35956928, -30760018, -25701084, -20750060, -15941845, -11440182, -7451232,
--3917547, -482647, 3153043, 7072738, 11359115, 16073378, 20965882, 25650618, 30160870, 34941708,
-40317396, 46365784, 53226992, 61034708, 69603168, 78600048, 87877176, 97303024, 106561896, 115417048,
-123827664, 131587064, 138292576, 143794976, 148143616, 151136672, 152569056, 152790784, 152322624, 151187680,
-149328496, 147177248, 145073792, 142777600, 140200624, 137736912, 135370384, 132611944, 129665064, 127228744,
-125030792, 122277184, 119323856, 116903640, 114341696, 110789216, 107069240, 103905456, 100271384, 95927024,
-92563528, 89972048, 85635208, 80475336, 78287592, 77118824, 71010840, 62952948, 62019328, 64006824,
-55034636, 40962176, 44935020, 61018600, 45531484, -16530255, -70942120, -62221728, -13724031, 11134166,
-4073777, 5789616, 18125298, -3304441, -61377768, -95043328, -70010648, -29961154, -23776402, -35720168,
--28427314, -8661338, -1998770, 2596845, 29952566, 61971548, 55981676, 12006581, -23720030, -23033372,
--5655398, 145492, -6174553, -10863046, -10317585, -8673686, -6595996, -3351148, -774168, },
+2392834, -2967823, -13154948, -21828098, -13592498, 23732916, 69370168, 72411536, 11843372, -60894584,
+-74438224, -25907780, 20711942, 23179938, 5403069, 3657165, 11682311, 4756140, -13142600, -18874770,
+-10082436, -5405753, -11533598, -15028091, -6480569, 6342056, 12303471, 10251013, 4749160, -2111513,
+-10241350, -18179522, -23642184, -25355876, -23281408, -18531710, -13084081, -8157217, -3108483, 3117610,
+10074383, 16234440, 20606180, 23109608, 24038396, 24024974, 24174224, 25506738, 28323698, 32306744,
+36983964, 41889888, 46537044, 50538344, 53766548, 56298968, 58215060, 59515900, 60221348, 60425896,
+60163900, 59333900, 57909580, 56159380, 54442468, 52864068, 51385524, 50192600, 49603116, 49638548,
+50051940, 50826644, 52286396, 54623396, 57640072, 61087320, 64938832, 69148976, 73336032, 76918032,
+79475152, 80860272, 80984296, 79532592, 75905496, 69521560, 60245508, 48402132, 34217468, 17394080,
+-2496987, -25216290, -49676664, -74593920, -99082752, -122543472, -144185808, -162914016, -177765472, -188473904,
+-195543952, -199672496, -201060848, -199500160, -195243312, -189557840, -184086064, -179620368, -175639472, -171028816,
+-165171552, -158431136, -151753536, -145830240, -140600592, -135516416, -130188512, -124697400, -119384520, -114528528,
+-110164304, -106021808, -101652216, -96741992, -91300264, -85496152, -79429512, -73136312, -66677220, -60127396,
+-53596360, -47292420, -41414224, -35956928, -30760018, -25701084, -20750060, -15941845, -11440182, -7451232,
+-3917547, -482647, 3153043, 7072738, 11359115, 16073378, 20965882, 25650618, 30160870, 34941708,
+40317396, 46365784, 53226992, 61034708, 69603168, 78600048, 87877176, 97303024, 106561896, 115417048,
+123827664, 131587064, 138292576, 143794976, 148143616, 151136672, 152569056, 152790784, 152322624, 151187680,
+149328496, 147177248, 145073792, 142777600, 140200624, 137736912, 135370384, 132611944, 129665064, 127228744,
+125030792, 122277184, 119323856, 116903640, 114341696, 110789216, 107069240, 103905456, 100271384, 95927024,
+92563528, 89972048, 85635208, 80475336, 78287592, 77118824, 71010840, 62952948, 62019328, 64006824,
+55034636, 40962176, 44935020, 61018600, 45531484, -16530255, -70942120, -62221728, -13724031, 11134166,
+4073777, 5789616, 18125298, -3304441, -61377768, -95043328, -70010648, -29961154, -23776402, -35720168,
+-28427314, -8661338, -1998770, 2596845, 29952566, 61971548, 55981676, 12006581, -23720030, -23033372,
+-5655398, 145492, -6174553, -10863046, -10317585, -8673686, -6595996, -3351148, -774168, },
{
-1766305,
--2392834, 2967823, 13154948, 21828098, 13592498, -23732916, -69370168, -72411536, -11843372, 60894584,
-74438224, 25907780, -20711942, -23179938, -5403069, -3657165, -11682311, -4756140, 13142600, 18874770,
-10082436, 5405753, 11533598, 15028091, 6480569, -6342056, -12303471, -10251013, -4749160, 2111513,
-10241350, 18179522, 23642184, 25355876, 23281408, 18531710, 13084081, 8157217, 3108483, -3117610,
--10074383, -16234440, -20606180, -23109608, -24038396, -24024974, -24174224, -25506738, -28323698, -32306744,
--36983964, -41889888, -46537044, -50538344, -53766548, -56298968, -58215060, -59515900, -60221348, -60425896,
--60163900, -59333900, -57909580, -56159380, -54442468, -52864068, -51385524, -50192600, -49603116, -49638548,
--50051940, -50826644, -52286396, -54623396, -57640072, -61087320, -64938832, -69148976, -73336032, -76918032,
--79475152, -80860272, -80984296, -79532592, -75905496, -69521560, -60245508, -48402132, -34217468, -17394080,
-2496987, 25216290, 49676664, 74593920, 99082752, 122543472, 144185808, 162914016, 177765472, 188473904,
-195543952, 199672496, 201060848, 199500160, 195243312, 189557840, 184086064, 179620368, 175639472, 171028816,
-165171552, 158431136, 151753536, 145830240, 140600592, 135516416, 130188512, 124697400, 119384520, 114528528,
-110164304, 106021808, 101652216, 96741992, 91300264, 85496152, 79429512, 73136312, 66677220, 60127396,
-53596360, 47292420, 41414224, 35956928, 30760018, 25701084, 20750060, 15941845, 11440182, 7451232,
-3917547, 482647, -3153043, -7072738, -11359115, -16073378, -20965882, -25650618, -30160870, -34941708,
--40317396, -46365784, -53226992, -61034708, -69603168, -78600048, -87877176, -97303024, -106561896, -115417048,
--123827664, -131587064, -138292576, -143794976, -148143616, -151136672, -152569056, -152790784, -152322624, -151187680,
--149328496, -147177248, -145073792, -142777600, -140200624, -137736912, -135370384, -132611944, -129665064, -127228744,
--125030792, -122277184, -119323856, -116903640, -114341696, -110789216, -107069240, -103905456, -100271384, -95927024,
--92563528, -89972048, -85635208, -80475336, -78287592, -77118824, -71010840, -62952948, -62019328, -64006824,
--55034636, -40962176, -44935020, -61018600, -45531484, 16530255, 70942120, 62221728, 13724031, -11134166,
--4073777, -5789616, -18125298, 3304441, 61377768, 95043328, 70010648, 29961154, 23776402, 35720168,
-28427314, 8661338, 1998770, -2596845, -29952566, -61971548, -55981676, -12006581, 23720030, 23033372,
-5655398, -145492, 6174553, 10863046, 10317585, 8673686, 6595996, 3351148, 774168, },
+-2392834, 2967823, 13154948, 21828098, 13592498, -23732916, -69370168, -72411536, -11843372, 60894584,
+74438224, 25907780, -20711942, -23179938, -5403069, -3657165, -11682311, -4756140, 13142600, 18874770,
+10082436, 5405753, 11533598, 15028091, 6480569, -6342056, -12303471, -10251013, -4749160, 2111513,
+10241350, 18179522, 23642184, 25355876, 23281408, 18531710, 13084081, 8157217, 3108483, -3117610,
+-10074383, -16234440, -20606180, -23109608, -24038396, -24024974, -24174224, -25506738, -28323698, -32306744,
+-36983964, -41889888, -46537044, -50538344, -53766548, -56298968, -58215060, -59515900, -60221348, -60425896,
+-60163900, -59333900, -57909580, -56159380, -54442468, -52864068, -51385524, -50192600, -49603116, -49638548,
+-50051940, -50826644, -52286396, -54623396, -57640072, -61087320, -64938832, -69148976, -73336032, -76918032,
+-79475152, -80860272, -80984296, -79532592, -75905496, -69521560, -60245508, -48402132, -34217468, -17394080,
+2496987, 25216290, 49676664, 74593920, 99082752, 122543472, 144185808, 162914016, 177765472, 188473904,
+195543952, 199672496, 201060848, 199500160, 195243312, 189557840, 184086064, 179620368, 175639472, 171028816,
+165171552, 158431136, 151753536, 145830240, 140600592, 135516416, 130188512, 124697400, 119384520, 114528528,
+110164304, 106021808, 101652216, 96741992, 91300264, 85496152, 79429512, 73136312, 66677220, 60127396,
+53596360, 47292420, 41414224, 35956928, 30760018, 25701084, 20750060, 15941845, 11440182, 7451232,
+3917547, 482647, -3153043, -7072738, -11359115, -16073378, -20965882, -25650618, -30160870, -34941708,
+-40317396, -46365784, -53226992, -61034708, -69603168, -78600048, -87877176, -97303024, -106561896, -115417048,
+-123827664, -131587064, -138292576, -143794976, -148143616, -151136672, -152569056, -152790784, -152322624, -151187680,
+-149328496, -147177248, -145073792, -142777600, -140200624, -137736912, -135370384, -132611944, -129665064, -127228744,
+-125030792, -122277184, -119323856, -116903640, -114341696, -110789216, -107069240, -103905456, -100271384, -95927024,
+-92563528, -89972048, -85635208, -80475336, -78287592, -77118824, -71010840, -62952948, -62019328, -64006824,
+-55034636, -40962176, -44935020, -61018600, -45531484, 16530255, 70942120, 62221728, 13724031, -11134166,
+-4073777, -5789616, -18125298, 3304441, 61377768, 95043328, 70010648, 29961154, 23776402, 35720168,
+28427314, 8661338, 1998770, -2596845, -29952566, -61971548, -55981676, -12006581, 23720030, 23033372,
+5655398, -145492, 6174553, 10863046, 10317585, 8673686, 6595996, 3351148, 774168, },
},
{
{
5993627,
-17628694, 19673634, 5511517, -1316944, 26298084, 60221348, 29726006, -86547888, -207553216, -211214688,
--51820392, 175624432, 290699488, 184001760, -57539676, -215310464, -162342784, 8655970, 113864416, 90045600,
-19725712, -16241956, -23730232, -33396056, -36325224, -14506789, 15855409, 28052578, 24194624, 24378772,
-35450124, 50498076, 65474092, 79804784, 89017496, 88574576, 80295488, 68737192, 55748140, 41954316,
-28828358, 16729971, 4466766, -8088497, -19849728, -30842698, -41951092, -52959632, -63195612, -73171744,
--83501680, -93191128, -100623568, -105214888, -106988712, -105779672, -101878232, -96300680, -89617176, -81389096,
--71149888, -58987080, -44915696, -28600724, -9971840, 10462003, 31940598, 53636088, 74668544, 94358288,
-112261320, 127707096, 139699184, 147604064, 151536640, 151740656, 147978800, 139933792, 127940096, 112900192,
-95545304, 76076216, 54547696, 31362924, 7206955, -17441326, -42510512, -67998456, -93649080, -119086560,
--143967296, -167687872, -189147136, -207169888, -221065184, -230433056, -234611520, -232813536, -224927968, -211891680,
--195147200, -175832736, -154430384, -131102264, -106469552, -82101520, -59958816, -41174776, -25575456, -12447889,
--1443109, 7364795, 13848585, 17929340, 19570556, 18952080, 16517907, 12791486, 8284455, 3510062,
--1264868, -6323266, -12278238, -19502910, -27894738, -37029596, -46336256, -55298776, -63761472, -71935336,
--79978736, -87721488, -94827512, -100983808, -105914968, -109505024, -111884968, -113158968, -113146616, -111667000,
--108869368, -105025912, -100253128, -94717984, -88775904, -82661480, -76385992, -70137352, -64354716, -59281824,
--54871428, -51158968, -48226576, -45827300, -43549356, -41275708, -39049304, -36720360, -34171296, -31555662,
--28919088, -25992068, -22663468, -19183472, -15687905, -12097849, -8553427, -5284421, -2087354, 1395328,
-5065914, 8723079, 12654047, 17178796, 22093312, 27161374, 32479080, 37844032, 42629696, 46680924,
-50356344, 53518512, 55652040, 56935696, 57907432, 58341764, 57814016, 56804164, 55839408, 54453744,
-52364240, 50339700, 48634600, 46335180, 43406552, 41039488, 39003672, 35665408, 31436476, 28479392,
-26251914, 21914534, 16054051, 12672838, 12202002, 10322954, 5653788, 2725157, 4658966, 8232379,
-9478456, 9896678, 13198435, 18043694, 17870286, 9187472, -1604170, -3621731, 4505958, 11703249,
-11009612, 11530913, 22065932, 29156386, 10431402, -29294362, -55091008, -42656540, -7008313, 17862768,
-16177531, -407485, -11506217, -9565429, -7515656, -24008330, -54532128, -65081104, -29904246, },
+17628694, 19673634, 5511517, -1316944, 26298084, 60221348, 29726006, -86547888, -207553216, -211214688,
+-51820392, 175624432, 290699488, 184001760, -57539676, -215310464, -162342784, 8655970, 113864416, 90045600,
+19725712, -16241956, -23730232, -33396056, -36325224, -14506789, 15855409, 28052578, 24194624, 24378772,
+35450124, 50498076, 65474092, 79804784, 89017496, 88574576, 80295488, 68737192, 55748140, 41954316,
+28828358, 16729971, 4466766, -8088497, -19849728, -30842698, -41951092, -52959632, -63195612, -73171744,
+-83501680, -93191128, -100623568, -105214888, -106988712, -105779672, -101878232, -96300680, -89617176, -81389096,
+-71149888, -58987080, -44915696, -28600724, -9971840, 10462003, 31940598, 53636088, 74668544, 94358288,
+112261320, 127707096, 139699184, 147604064, 151536640, 151740656, 147978800, 139933792, 127940096, 112900192,
+95545304, 76076216, 54547696, 31362924, 7206955, -17441326, -42510512, -67998456, -93649080, -119086560,
+-143967296, -167687872, -189147136, -207169888, -221065184, -230433056, -234611520, -232813536, -224927968, -211891680,
+-195147200, -175832736, -154430384, -131102264, -106469552, -82101520, -59958816, -41174776, -25575456, -12447889,
+-1443109, 7364795, 13848585, 17929340, 19570556, 18952080, 16517907, 12791486, 8284455, 3510062,
+-1264868, -6323266, -12278238, -19502910, -27894738, -37029596, -46336256, -55298776, -63761472, -71935336,
+-79978736, -87721488, -94827512, -100983808, -105914968, -109505024, -111884968, -113158968, -113146616, -111667000,
+-108869368, -105025912, -100253128, -94717984, -88775904, -82661480, -76385992, -70137352, -64354716, -59281824,
+-54871428, -51158968, -48226576, -45827300, -43549356, -41275708, -39049304, -36720360, -34171296, -31555662,
+-28919088, -25992068, -22663468, -19183472, -15687905, -12097849, -8553427, -5284421, -2087354, 1395328,
+5065914, 8723079, 12654047, 17178796, 22093312, 27161374, 32479080, 37844032, 42629696, 46680924,
+50356344, 53518512, 55652040, 56935696, 57907432, 58341764, 57814016, 56804164, 55839408, 54453744,
+52364240, 50339700, 48634600, 46335180, 43406552, 41039488, 39003672, 35665408, 31436476, 28479392,
+26251914, 21914534, 16054051, 12672838, 12202002, 10322954, 5653788, 2725157, 4658966, 8232379,
+9478456, 9896678, 13198435, 18043694, 17870286, 9187472, -1604170, -3621731, 4505958, 11703249,
+11009612, 11530913, 22065932, 29156386, 10431402, -29294362, -55091008, -42656540, -7008313, 17862768,
+16177531, -407485, -11506217, -9565429, -7515656, -24008330, -54532128, -65081104, -29904246, },
{
-5993627,
--17628694, -19673634, -5511517, 1316944, -26298084, -60221348, -29726006, 86547888, 207553216, 211214688,
-51820392, -175624432, -290699488, -184001760, 57539676, 215310464, 162342784, -8655970, -113864416, -90045600,
--19725712, 16241956, 23730232, 33396056, 36325224, 14506789, -15855409, -28052578, -24194624, -24378772,
--35450124, -50498076, -65474092, -79804784, -89017496, -88574576, -80295488, -68737192, -55748140, -41954316,
--28828358, -16729971, -4466766, 8088497, 19849728, 30842698, 41951092, 52959632, 63195612, 73171744,
-83501680, 93191128, 100623568, 105214888, 106988712, 105779672, 101878232, 96300680, 89617176, 81389096,
-71149888, 58987080, 44915696, 28600724, 9971840, -10462003, -31940598, -53636088, -74668544, -94358288,
--112261320, -127707096, -139699184, -147604064, -151536640, -151740656, -147978800, -139933792, -127940096, -112900192,
--95545304, -76076216, -54547696, -31362924, -7206955, 17441326, 42510512, 67998456, 93649080, 119086560,
-143967296, 167687872, 189147136, 207169888, 221065184, 230433056, 234611520, 232813536, 224927968, 211891680,
-195147200, 175832736, 154430384, 131102264, 106469552, 82101520, 59958816, 41174776, 25575456, 12447889,
-1443109, -7364795, -13848585, -17929340, -19570556, -18952080, -16517907, -12791486, -8284455, -3510062,
-1264868, 6323266, 12278238, 19502910, 27894738, 37029596, 46336256, 55298776, 63761472, 71935336,
-79978736, 87721488, 94827512, 100983808, 105914968, 109505024, 111884968, 113158968, 113146616, 111667000,
-108869368, 105025912, 100253128, 94717984, 88775904, 82661480, 76385992, 70137352, 64354716, 59281824,
-54871428, 51158968, 48226576, 45827300, 43549356, 41275708, 39049304, 36720360, 34171296, 31555662,
-28919088, 25992068, 22663468, 19183472, 15687905, 12097849, 8553427, 5284421, 2087354, -1395328,
--5065914, -8723079, -12654047, -17178796, -22093312, -27161374, -32479080, -37844032, -42629696, -46680924,
--50356344, -53518512, -55652040, -56935696, -57907432, -58341764, -57814016, -56804164, -55839408, -54453744,
--52364240, -50339700, -48634600, -46335180, -43406552, -41039488, -39003672, -35665408, -31436476, -28479392,
--26251914, -21914534, -16054051, -12672838, -12202002, -10322954, -5653788, -2725157, -4658966, -8232379,
--9478456, -9896678, -13198435, -18043694, -17870286, -9187472, 1604170, 3621731, -4505958, -11703249,
--11009612, -11530913, -22065932, -29156386, -10431402, 29294362, 55091008, 42656540, 7008313, -17862768,
--16177531, 407485, 11506217, 9565429, 7515656, 24008330, 54532128, 65081104, 29904246, },
+-17628694, -19673634, -5511517, 1316944, -26298084, -60221348, -29726006, 86547888, 207553216, 211214688,
+51820392, -175624432, -290699488, -184001760, 57539676, 215310464, 162342784, -8655970, -113864416, -90045600,
+-19725712, 16241956, 23730232, 33396056, 36325224, 14506789, -15855409, -28052578, -24194624, -24378772,
+-35450124, -50498076, -65474092, -79804784, -89017496, -88574576, -80295488, -68737192, -55748140, -41954316,
+-28828358, -16729971, -4466766, 8088497, 19849728, 30842698, 41951092, 52959632, 63195612, 73171744,
+83501680, 93191128, 100623568, 105214888, 106988712, 105779672, 101878232, 96300680, 89617176, 81389096,
+71149888, 58987080, 44915696, 28600724, 9971840, -10462003, -31940598, -53636088, -74668544, -94358288,
+-112261320, -127707096, -139699184, -147604064, -151536640, -151740656, -147978800, -139933792, -127940096, -112900192,
+-95545304, -76076216, -54547696, -31362924, -7206955, 17441326, 42510512, 67998456, 93649080, 119086560,
+143967296, 167687872, 189147136, 207169888, 221065184, 230433056, 234611520, 232813536, 224927968, 211891680,
+195147200, 175832736, 154430384, 131102264, 106469552, 82101520, 59958816, 41174776, 25575456, 12447889,
+1443109, -7364795, -13848585, -17929340, -19570556, -18952080, -16517907, -12791486, -8284455, -3510062,
+1264868, 6323266, 12278238, 19502910, 27894738, 37029596, 46336256, 55298776, 63761472, 71935336,
+79978736, 87721488, 94827512, 100983808, 105914968, 109505024, 111884968, 113158968, 113146616, 111667000,
+108869368, 105025912, 100253128, 94717984, 88775904, 82661480, 76385992, 70137352, 64354716, 59281824,
+54871428, 51158968, 48226576, 45827300, 43549356, 41275708, 39049304, 36720360, 34171296, 31555662,
+28919088, 25992068, 22663468, 19183472, 15687905, 12097849, 8553427, 5284421, 2087354, -1395328,
+-5065914, -8723079, -12654047, -17178796, -22093312, -27161374, -32479080, -37844032, -42629696, -46680924,
+-50356344, -53518512, -55652040, -56935696, -57907432, -58341764, -57814016, -56804164, -55839408, -54453744,
+-52364240, -50339700, -48634600, -46335180, -43406552, -41039488, -39003672, -35665408, -31436476, -28479392,
+-26251914, -21914534, -16054051, -12672838, -12202002, -10322954, -5653788, -2725157, -4658966, -8232379,
+-9478456, -9896678, -13198435, -18043694, -17870286, -9187472, 1604170, 3621731, -4505958, -11703249,
+-11009612, -11530913, -22065932, -29156386, -10431402, 29294362, 55091008, 42656540, 7008313, -17862768,
+-16177531, 407485, 11506217, 9565429, 7515656, 24008330, 54532128, 65081104, 29904246, },
},
{
{
-30602,
-2479270, 9492951, 16711718, 17120276, 6766721, -13114683, -36174900, -49415748, -36882496, 3577171,
-46484968, 55562920, 22531936, -20698522, -37361384, -23899882, -2588792, 12509092, 24769614, 35760972,
-37337760, 26557930, 13006235, 4521527, -3856881, -20049982, -41466836, -57522496, -60912300, -51961052,
--35696548, -18810884, -7061463, -2002529, -471373, 1672890, 5923834, 11039677, 14950244, 16398185,
-15717970, 14334453, 13266617, 12461848, 11574937, 10468983, 8745627, 5770289, 1439351, -3791383,
--9651865, -16166794, -23213224, -30580168, -38163468, -45602888, -52181168, -57428008, -61326228, -63802276,
--64693480, -64217276, -62700616, -59956132, -55662776, -50021336, -43212204, -34663608, -23717884, -10545755,
-4327180, 20737176, 38386272, 56305948, 73504608, 89552752, 104081016, 116416160, 126146408, 133414568,
-138302784, 140432016, 139366320, 135071888, 127921304, 118373056, 106448616, 91569240, 73389176, 52714816,
-30967788, 8856223, -13687524, -36408436, -58315456, -78199544, -94956360, -107788648, -116784992, -122916592,
--126914136, -128452808, -126728912, -121377920, -112811608, -102297528, -91600376, -81738056, -72181224, -61933964,
--51042464, -40455372, -30998926, -23176718, -17252346, -12846247, -9113921, -5813775, -3537443, -2767033,
--3551938, -6061810, -10421201, -16129213, -22588306, -29928942, -38486664, -48046188, -58372364, -69697120,
--81970528, -94491424, -106836240, -119177288, -131404528, -143031536, -154034704, -164636304, -174413792, -182744416,
--189709776, -195511200, -199726720, -202112576, -203154096, -202998416, -201069424, -197389184, -192904704, -188092192,
--182729920, -177114784, -171862576, -166647952, -160692976, -154040608, -147007072, -139340544, -131171520, -123469576,
--116542328, -109671456, -102832256, -96776888, -91197728, -85123032, -78982840, -73858408, -69328824, -64517924,
--60049012, -56563644, -53043384, -48741436, -44484052, -40409736, -35395900, -29847338, -25490094, -21993990,
--17826798, -13899588, -11877732, -10437844, -7936563, -6040872, -6036577, -5704791, -4167729, -4024384,
--5182952, -4381941, -2988224, -5002027, -7115150, -4204773, -2294586, -8315057, -12634183, -5450851,
--1278827, -14765024, -24306294, -5111548, 11762842, -26110716, -98523864, -122462400, -70461088, -8380018,
-10191421, 14363981, 40327060, 53931368, 8960912, -63687924, -88644368, -45148696, 17628694, 52721796,
-62794568, 77477992, 107806360, 126214056, 90390808, -1745904, -87026240, -94509144, -29715804, 29446832,
-27824408, -8575976, -23322210, -6749004, 4201552, -14711874, -44802952, -51480016, -22588306, },
+2479270, 9492951, 16711718, 17120276, 6766721, -13114683, -36174900, -49415748, -36882496, 3577171,
+46484968, 55562920, 22531936, -20698522, -37361384, -23899882, -2588792, 12509092, 24769614, 35760972,
+37337760, 26557930, 13006235, 4521527, -3856881, -20049982, -41466836, -57522496, -60912300, -51961052,
+-35696548, -18810884, -7061463, -2002529, -471373, 1672890, 5923834, 11039677, 14950244, 16398185,
+15717970, 14334453, 13266617, 12461848, 11574937, 10468983, 8745627, 5770289, 1439351, -3791383,
+-9651865, -16166794, -23213224, -30580168, -38163468, -45602888, -52181168, -57428008, -61326228, -63802276,
+-64693480, -64217276, -62700616, -59956132, -55662776, -50021336, -43212204, -34663608, -23717884, -10545755,
+4327180, 20737176, 38386272, 56305948, 73504608, 89552752, 104081016, 116416160, 126146408, 133414568,
+138302784, 140432016, 139366320, 135071888, 127921304, 118373056, 106448616, 91569240, 73389176, 52714816,
+30967788, 8856223, -13687524, -36408436, -58315456, -78199544, -94956360, -107788648, -116784992, -122916592,
+-126914136, -128452808, -126728912, -121377920, -112811608, -102297528, -91600376, -81738056, -72181224, -61933964,
+-51042464, -40455372, -30998926, -23176718, -17252346, -12846247, -9113921, -5813775, -3537443, -2767033,
+-3551938, -6061810, -10421201, -16129213, -22588306, -29928942, -38486664, -48046188, -58372364, -69697120,
+-81970528, -94491424, -106836240, -119177288, -131404528, -143031536, -154034704, -164636304, -174413792, -182744416,
+-189709776, -195511200, -199726720, -202112576, -203154096, -202998416, -201069424, -197389184, -192904704, -188092192,
+-182729920, -177114784, -171862576, -166647952, -160692976, -154040608, -147007072, -139340544, -131171520, -123469576,
+-116542328, -109671456, -102832256, -96776888, -91197728, -85123032, -78982840, -73858408, -69328824, -64517924,
+-60049012, -56563644, -53043384, -48741436, -44484052, -40409736, -35395900, -29847338, -25490094, -21993990,
+-17826798, -13899588, -11877732, -10437844, -7936563, -6040872, -6036577, -5704791, -4167729, -4024384,
+-5182952, -4381941, -2988224, -5002027, -7115150, -4204773, -2294586, -8315057, -12634183, -5450851,
+-1278827, -14765024, -24306294, -5111548, 11762842, -26110716, -98523864, -122462400, -70461088, -8380018,
+10191421, 14363981, 40327060, 53931368, 8960912, -63687924, -88644368, -45148696, 17628694, 52721796,
+62794568, 77477992, 107806360, 126214056, 90390808, -1745904, -87026240, -94509144, -29715804, 29446832,
+27824408, -8575976, -23322210, -6749004, 4201552, -14711874, -44802952, -51480016, -22588306, },
{
-30602,
-2479270, 9492951, 16711718, 17120276, 6766721, -13114683, -36174900, -49415748, -36882496, 3577171,
-46484968, 55562920, 22531936, -20698522, -37361384, -23899882, -2588792, 12509092, 24769614, 35760972,
-37337760, 26557930, 13006235, 4521527, -3856881, -20049982, -41466836, -57522496, -60912300, -51961052,
--35696548, -18810884, -7061463, -2002529, -471373, 1672890, 5923834, 11039677, 14950244, 16398185,
-15717970, 14334453, 13266617, 12461848, 11574937, 10468983, 8745627, 5770289, 1439351, -3791383,
--9651865, -16166794, -23213224, -30580168, -38163468, -45602888, -52181168, -57428008, -61326228, -63802276,
--64693480, -64217276, -62700616, -59956132, -55662776, -50021336, -43212204, -34663608, -23717884, -10545755,
-4327180, 20737176, 38386272, 56305948, 73504608, 89552752, 104081016, 116416160, 126146408, 133414568,
-138302784, 140432016, 139366320, 135071888, 127921304, 118373056, 106448616, 91569240, 73389176, 52714816,
-30967788, 8856223, -13687524, -36408436, -58315456, -78199544, -94956360, -107788648, -116784992, -122916592,
--126914136, -128452808, -126728912, -121377920, -112811608, -102297528, -91600376, -81738056, -72181224, -61933964,
--51042464, -40455372, -30998926, -23176718, -17252346, -12846247, -9113921, -5813775, -3537443, -2767033,
--3551938, -6061810, -10421201, -16129213, -22588306, -29928942, -38486664, -48046188, -58372364, -69697120,
--81970528, -94491424, -106836240, -119177288, -131404528, -143031536, -154034704, -164636304, -174413792, -182744416,
--189709776, -195511200, -199726720, -202112576, -203154096, -202998416, -201069424, -197389184, -192904704, -188092192,
--182729920, -177114784, -171862576, -166647952, -160692976, -154040608, -147007072, -139340544, -131171520, -123469576,
--116542328, -109671456, -102832256, -96776888, -91197728, -85123032, -78982840, -73858408, -69328824, -64517924,
--60049012, -56563644, -53043384, -48741436, -44484052, -40409736, -35395900, -29847338, -25490094, -21993990,
--17826798, -13899588, -11877732, -10437844, -7936563, -6040872, -6036577, -5704791, -4167729, -4024384,
--5182952, -4381941, -2988224, -5002027, -7115150, -4204773, -2294586, -8315057, -12634183, -5450851,
--1278827, -14765024, -24306294, -5111548, 11762842, -26110716, -98523864, -122462400, -70461088, -8380018,
-10191421, 14363981, 40327060, 53931368, 8960912, -63687924, -88644368, -45148696, 17628694, 52721796,
-62794568, 77477992, 107806360, 126214056, 90390808, -1745904, -87026240, -94509144, -29715804, 29446832,
-27824408, -8575976, -23322210, -6749004, 4201552, -14711874, -44802952, -51480016, -22588306, },
+2479270, 9492951, 16711718, 17120276, 6766721, -13114683, -36174900, -49415748, -36882496, 3577171,
+46484968, 55562920, 22531936, -20698522, -37361384, -23899882, -2588792, 12509092, 24769614, 35760972,
+37337760, 26557930, 13006235, 4521527, -3856881, -20049982, -41466836, -57522496, -60912300, -51961052,
+-35696548, -18810884, -7061463, -2002529, -471373, 1672890, 5923834, 11039677, 14950244, 16398185,
+15717970, 14334453, 13266617, 12461848, 11574937, 10468983, 8745627, 5770289, 1439351, -3791383,
+-9651865, -16166794, -23213224, -30580168, -38163468, -45602888, -52181168, -57428008, -61326228, -63802276,
+-64693480, -64217276, -62700616, -59956132, -55662776, -50021336, -43212204, -34663608, -23717884, -10545755,
+4327180, 20737176, 38386272, 56305948, 73504608, 89552752, 104081016, 116416160, 126146408, 133414568,
+138302784, 140432016, 139366320, 135071888, 127921304, 118373056, 106448616, 91569240, 73389176, 52714816,
+30967788, 8856223, -13687524, -36408436, -58315456, -78199544, -94956360, -107788648, -116784992, -122916592,
+-126914136, -128452808, -126728912, -121377920, -112811608, -102297528, -91600376, -81738056, -72181224, -61933964,
+-51042464, -40455372, -30998926, -23176718, -17252346, -12846247, -9113921, -5813775, -3537443, -2767033,
+-3551938, -6061810, -10421201, -16129213, -22588306, -29928942, -38486664, -48046188, -58372364, -69697120,
+-81970528, -94491424, -106836240, -119177288, -131404528, -143031536, -154034704, -164636304, -174413792, -182744416,
+-189709776, -195511200, -199726720, -202112576, -203154096, -202998416, -201069424, -197389184, -192904704, -188092192,
+-182729920, -177114784, -171862576, -166647952, -160692976, -154040608, -147007072, -139340544, -131171520, -123469576,
+-116542328, -109671456, -102832256, -96776888, -91197728, -85123032, -78982840, -73858408, -69328824, -64517924,
+-60049012, -56563644, -53043384, -48741436, -44484052, -40409736, -35395900, -29847338, -25490094, -21993990,
+-17826798, -13899588, -11877732, -10437844, -7936563, -6040872, -6036577, -5704791, -4167729, -4024384,
+-5182952, -4381941, -2988224, -5002027, -7115150, -4204773, -2294586, -8315057, -12634183, -5450851,
+-1278827, -14765024, -24306294, -5111548, 11762842, -26110716, -98523864, -122462400, -70461088, -8380018,
+10191421, 14363981, 40327060, 53931368, 8960912, -63687924, -88644368, -45148696, 17628694, 52721796,
+62794568, 77477992, 107806360, 126214056, 90390808, -1745904, -87026240, -94509144, -29715804, 29446832,
+27824408, -8575976, -23322210, -6749004, 4201552, -14711874, -44802952, -51480016, -22588306, },
},
{
{
1764158,
-11093364, 25240986, 28730110, 14854144, -9666361, -40182104, -69641824, -71814000, -21892522, 57956288,
-103303088, 74577272, 1510218, -52022792, -52189760, -14654428, 22415972, 30050276, 5174362, -28579786,
--40120364, -19475530, 15033996, 39711268, 47734268, 45950780, 40360880, 32664836, 24563454, 17143898,
-8398272, -3512747, -16379395, -26647050, -33858836, -39592620, -43914968, -45525044, -44310104, -41805600,
--39669392, -38815768, -39513164, -41541996, -44401908, -47503948, -49970872, -50604380, -48607756, -44217764,
--38310572, -31732292, -25287694, -19827180, -15787763, -12870406, -10492605, -8318278, -6136972, -3542274,
-5369, 4964982, 11649562, 20126216, 30054034, 40803800, 51764556, 62355408, 71839768, 79551384,
-85389856, 89726696, 92673584, 93885840, 93318904, 91695408, 89711664, 87142200, 83405040, 78859896,
-74775384, 71914936, 69914016, 68377488, 67898064, 69339560, 72409392, 75580688, 77486040, 78026672,
-78029896, 78132432, 78204376, 77709384, 76295800, 73944304, 70800928, 67173288, 63604708, 60559040,
-57841400, 54515484, 49600428, 42812236, 34536368, 25171730, 14672145, 2752000, -10590316, -24861956,
--39404716, -53848152, -68203008, -82547664, -96672200, -109987672, -121740848, -131383584, -138849312, -144482704,
--148653120, -151401360, -152416576, -151308480, -147960544, -142739472, -136395808, -129641976, -122683592, -115113176,
--106294536, -95959232, -84526032, -72860896, -61704720, -51327008, -41615548, -32273994, -22919020, -13291313,
--3552475, 5793911, 14383845, 22182970, 29150480, 35029752, 39650600, 43175696, 45889580, 47962436,
-49513992, 50675784, 51485920, 51858508, 51663624, 50763828, 49123152, 47008952, 44880260, 42984032,
-41307920, 39934604, 39033200, 38481832, 37993280, 37645388, 37808060, 38575784, 39746164, 41225780,
-42949136, 44591424, 45797772, 46382424, 46002320, 44205952, 41131828, 37461240, 33474438, 29009282,
-24359980, 20109574, 16124918, 11930882, 7791608, 4148402, 641024, -2932926, -5789616, -7692824,
--9641128, -11643656, -12316356, -12039867, -12932683, -14353244, -13486197, -11772505, -13637058, -17055316,
--15304579, -11020349, -15027017, -25094958, -22591528, -1823214, 14637249, 7070590, -10776610, -13829795,
--4560719, -2980707, -7587597, 1844152, 24108726, 31710818, 13125420, -8542153, -11340861, -4901632,
--9131637, -22211424, -30261266, -35723928, -52106008, -73799888, -74506944, -42775188, -1936493, 17946520,
-16542067, 15548318, 22264574, 23836532, 19005768, 28008018, 55568824, 67573256, 31613644, },
+11093364, 25240986, 28730110, 14854144, -9666361, -40182104, -69641824, -71814000, -21892522, 57956288,
+103303088, 74577272, 1510218, -52022792, -52189760, -14654428, 22415972, 30050276, 5174362, -28579786,
+-40120364, -19475530, 15033996, 39711268, 47734268, 45950780, 40360880, 32664836, 24563454, 17143898,
+8398272, -3512747, -16379395, -26647050, -33858836, -39592620, -43914968, -45525044, -44310104, -41805600,
+-39669392, -38815768, -39513164, -41541996, -44401908, -47503948, -49970872, -50604380, -48607756, -44217764,
+-38310572, -31732292, -25287694, -19827180, -15787763, -12870406, -10492605, -8318278, -6136972, -3542274,
+5369, 4964982, 11649562, 20126216, 30054034, 40803800, 51764556, 62355408, 71839768, 79551384,
+85389856, 89726696, 92673584, 93885840, 93318904, 91695408, 89711664, 87142200, 83405040, 78859896,
+74775384, 71914936, 69914016, 68377488, 67898064, 69339560, 72409392, 75580688, 77486040, 78026672,
+78029896, 78132432, 78204376, 77709384, 76295800, 73944304, 70800928, 67173288, 63604708, 60559040,
+57841400, 54515484, 49600428, 42812236, 34536368, 25171730, 14672145, 2752000, -10590316, -24861956,
+-39404716, -53848152, -68203008, -82547664, -96672200, -109987672, -121740848, -131383584, -138849312, -144482704,
+-148653120, -151401360, -152416576, -151308480, -147960544, -142739472, -136395808, -129641976, -122683592, -115113176,
+-106294536, -95959232, -84526032, -72860896, -61704720, -51327008, -41615548, -32273994, -22919020, -13291313,
+-3552475, 5793911, 14383845, 22182970, 29150480, 35029752, 39650600, 43175696, 45889580, 47962436,
+49513992, 50675784, 51485920, 51858508, 51663624, 50763828, 49123152, 47008952, 44880260, 42984032,
+41307920, 39934604, 39033200, 38481832, 37993280, 37645388, 37808060, 38575784, 39746164, 41225780,
+42949136, 44591424, 45797772, 46382424, 46002320, 44205952, 41131828, 37461240, 33474438, 29009282,
+24359980, 20109574, 16124918, 11930882, 7791608, 4148402, 641024, -2932926, -5789616, -7692824,
+-9641128, -11643656, -12316356, -12039867, -12932683, -14353244, -13486197, -11772505, -13637058, -17055316,
+-15304579, -11020349, -15027017, -25094958, -22591528, -1823214, 14637249, 7070590, -10776610, -13829795,
+-4560719, -2980707, -7587597, 1844152, 24108726, 31710818, 13125420, -8542153, -11340861, -4901632,
+-9131637, -22211424, -30261266, -35723928, -52106008, -73799888, -74506944, -42775188, -1936493, 17946520,
+16542067, 15548318, 22264574, 23836532, 19005768, 28008018, 55568824, 67573256, 31613644, },
{
1764158,
-11093364, 25240986, 28730110, 14854144, -9666361, -40182104, -69641824, -71814000, -21892522, 57956288,
-103303088, 74577272, 1510218, -52022792, -52189760, -14654428, 22415972, 30050276, 5174362, -28579786,
--40120364, -19475530, 15033996, 39711268, 47734268, 45950780, 40360880, 32664836, 24563454, 17143898,
-8398272, -3512747, -16379395, -26647050, -33858836, -39592620, -43914968, -45525044, -44310104, -41805600,
--39669392, -38815768, -39513164, -41541996, -44401908, -47503948, -49970872, -50604380, -48607756, -44217764,
--38310572, -31732292, -25287694, -19827180, -15787763, -12870406, -10492605, -8318278, -6136972, -3542274,
-5369, 4964982, 11649562, 20126216, 30054034, 40803800, 51764556, 62355408, 71839768, 79551384,
-85389856, 89726696, 92673584, 93885840, 93318904, 91695408, 89711664, 87142200, 83405040, 78859896,
-74775384, 71914936, 69914016, 68377488, 67898064, 69339560, 72409392, 75580688, 77486040, 78026672,
-78029896, 78132432, 78204376, 77709384, 76295800, 73944304, 70800928, 67173288, 63604708, 60559040,
-57841400, 54515484, 49600428, 42812236, 34536368, 25171730, 14672145, 2752000, -10590316, -24861956,
--39404716, -53848152, -68203008, -82547664, -96672200, -109987672, -121740848, -131383584, -138849312, -144482704,
--148653120, -151401360, -152416576, -151308480, -147960544, -142739472, -136395808, -129641976, -122683592, -115113176,
--106294536, -95959232, -84526032, -72860896, -61704720, -51327008, -41615548, -32273994, -22919020, -13291313,
--3552475, 5793911, 14383845, 22182970, 29150480, 35029752, 39650600, 43175696, 45889580, 47962436,
-49513992, 50675784, 51485920, 51858508, 51663624, 50763828, 49123152, 47008952, 44880260, 42984032,
-41307920, 39934604, 39033200, 38481832, 37993280, 37645388, 37808060, 38575784, 39746164, 41225780,
-42949136, 44591424, 45797772, 46382424, 46002320, 44205952, 41131828, 37461240, 33474438, 29009282,
-24359980, 20109574, 16124918, 11930882, 7791608, 4148402, 641024, -2932926, -5789616, -7692824,
--9641128, -11643656, -12316356, -12039867, -12932683, -14353244, -13486197, -11772505, -13637058, -17055316,
--15304579, -11020349, -15027017, -25094958, -22591528, -1823214, 14637249, 7070590, -10776610, -13829795,
--4560719, -2980707, -7587597, 1844152, 24108726, 31710818, 13125420, -8542153, -11340861, -4901632,
--9131637, -22211424, -30261266, -35723928, -52106008, -73799888, -74506944, -42775188, -1936493, 17946520,
-16542067, 15548318, 22264574, 23836532, 19005768, 28008018, 55568824, 67573256, 31613644, },
+11093364, 25240986, 28730110, 14854144, -9666361, -40182104, -69641824, -71814000, -21892522, 57956288,
+103303088, 74577272, 1510218, -52022792, -52189760, -14654428, 22415972, 30050276, 5174362, -28579786,
+-40120364, -19475530, 15033996, 39711268, 47734268, 45950780, 40360880, 32664836, 24563454, 17143898,
+8398272, -3512747, -16379395, -26647050, -33858836, -39592620, -43914968, -45525044, -44310104, -41805600,
+-39669392, -38815768, -39513164, -41541996, -44401908, -47503948, -49970872, -50604380, -48607756, -44217764,
+-38310572, -31732292, -25287694, -19827180, -15787763, -12870406, -10492605, -8318278, -6136972, -3542274,
+5369, 4964982, 11649562, 20126216, 30054034, 40803800, 51764556, 62355408, 71839768, 79551384,
+85389856, 89726696, 92673584, 93885840, 93318904, 91695408, 89711664, 87142200, 83405040, 78859896,
+74775384, 71914936, 69914016, 68377488, 67898064, 69339560, 72409392, 75580688, 77486040, 78026672,
+78029896, 78132432, 78204376, 77709384, 76295800, 73944304, 70800928, 67173288, 63604708, 60559040,
+57841400, 54515484, 49600428, 42812236, 34536368, 25171730, 14672145, 2752000, -10590316, -24861956,
+-39404716, -53848152, -68203008, -82547664, -96672200, -109987672, -121740848, -131383584, -138849312, -144482704,
+-148653120, -151401360, -152416576, -151308480, -147960544, -142739472, -136395808, -129641976, -122683592, -115113176,
+-106294536, -95959232, -84526032, -72860896, -61704720, -51327008, -41615548, -32273994, -22919020, -13291313,
+-3552475, 5793911, 14383845, 22182970, 29150480, 35029752, 39650600, 43175696, 45889580, 47962436,
+49513992, 50675784, 51485920, 51858508, 51663624, 50763828, 49123152, 47008952, 44880260, 42984032,
+41307920, 39934604, 39033200, 38481832, 37993280, 37645388, 37808060, 38575784, 39746164, 41225780,
+42949136, 44591424, 45797772, 46382424, 46002320, 44205952, 41131828, 37461240, 33474438, 29009282,
+24359980, 20109574, 16124918, 11930882, 7791608, 4148402, 641024, -2932926, -5789616, -7692824,
+-9641128, -11643656, -12316356, -12039867, -12932683, -14353244, -13486197, -11772505, -13637058, -17055316,
+-15304579, -11020349, -15027017, -25094958, -22591528, -1823214, 14637249, 7070590, -10776610, -13829795,
+-4560719, -2980707, -7587597, 1844152, 24108726, 31710818, 13125420, -8542153, -11340861, -4901632,
+-9131637, -22211424, -30261266, -35723928, -52106008, -73799888, -74506944, -42775188, -1936493, 17946520,
+16542067, 15548318, 22264574, 23836532, 19005768, 28008018, 55568824, 67573256, 31613644, },
},
{
{
-4406637,
--7348689, -3356517, -1883880, -58519, 15189152, 32778654, 12958990, -56069724, -113955680, -81304808,
-35633732, 129195304, 105268040, -6237903, -87387016, -69393784, 2754685, 46722800, 43382392, 34414500,
-46532748, 59179280, 45785960, 12456479, -17613660, -37055904, -55365888, -77968152, -98888400, -110563192,
--110758080, -100773888, -83529064, -63528472, -44748728, -28308130, -13724568, -1228898, 8499203, 15370614,
-19379430, 20318954, 18934364, 17206176, 16825534, 18235894, 21321828, 25922276, 31459024, 37022620,
-42048268, 46316928, 49381924, 50653772, 49984828, 47725676, 44330504, 40263708, 36105644, 32465658,
-29827474, 28544890, 28830504, 30761092, 34375308, 39688720, 46570332, 54795192, 64247344, 74831216,
-86176368, 97677216, 108785080, 119024280, 127867080, 134872176, 139811392, 142530096, 143018112, 141754864,
-139501616, 136562240, 132723080, 128011504, 122875792, 117545736, 111997712, 106638136, 102006544, 97423280,
-90851984, 80689552, 67099736, 51097764, 32862406, 11516418, -13649406, -42112156, -72248328, -102324912,
--131304128, -158685088, -183792928, -205630688, -223527808, -237600816, -248374208, -256063808, -260270720, -260319584,
--255977360, -247973152, -237642688, -225920656, -212798992, -197832096, -180929248, -162609072, -143774560, -125302448,
--107543832, -90107880, -72290208, -53744536, -34629784, -15271293, 4137127, 23631446, 43414068, 63530084,
-83574160, 102937480, 121328528, 138791872, 155334464, 170847888, 185203824, 198027520, 208609776, 216449168,
-221711584, 224857648, 226156336, 225817040, 224124272, 221082912, 216368640, 209960544, 202450800, 194533024,
-186563712, 178708224, 171015936, 163204992, 154712240, 145068960, 134116800, 122069952, 109522736, 97109744,
-85053776, 73320464, 62079996, 51527260, 41466300, 31688268, 22530324, 14449881, 7395397, 1171452,
--4069482, -8266202, -11797738, -14943802, -17665200, -20134270, -22630182, -24838332, -26244934, -27055072,
--27682138, -27813672, -27129160, -26157424, -25265682, -23912768, -21990770, -20338280, -19040126, -17272210,
--15395310, -14513768, -13857175, -12069932, -10526965, -10856067, -10587094, -7240778, -4358855, -5493800,
--5580773, 703838, 5775121, -506269, -9443022, -1343788, 23636278, 42522324, 42022496, 33808372,
-30777736, 29378650, 25759604, 28761248, 42633992, 54049480, 51519208, 43749612, 44405668, 51233056,
-53909892, 50683300, 43901544, 31022548, 14563160, 9776956, 25884694, 47662324, 52263848, 39165268,
-27675696, 28365038, 33512556, 35976256, 41140956, 53856744, 64300492, 55533392, 22204980, },
+-7348689, -3356517, -1883880, -58519, 15189152, 32778654, 12958990, -56069724, -113955680, -81304808,
+35633732, 129195304, 105268040, -6237903, -87387016, -69393784, 2754685, 46722800, 43382392, 34414500,
+46532748, 59179280, 45785960, 12456479, -17613660, -37055904, -55365888, -77968152, -98888400, -110563192,
+-110758080, -100773888, -83529064, -63528472, -44748728, -28308130, -13724568, -1228898, 8499203, 15370614,
+19379430, 20318954, 18934364, 17206176, 16825534, 18235894, 21321828, 25922276, 31459024, 37022620,
+42048268, 46316928, 49381924, 50653772, 49984828, 47725676, 44330504, 40263708, 36105644, 32465658,
+29827474, 28544890, 28830504, 30761092, 34375308, 39688720, 46570332, 54795192, 64247344, 74831216,
+86176368, 97677216, 108785080, 119024280, 127867080, 134872176, 139811392, 142530096, 143018112, 141754864,
+139501616, 136562240, 132723080, 128011504, 122875792, 117545736, 111997712, 106638136, 102006544, 97423280,
+90851984, 80689552, 67099736, 51097764, 32862406, 11516418, -13649406, -42112156, -72248328, -102324912,
+-131304128, -158685088, -183792928, -205630688, -223527808, -237600816, -248374208, -256063808, -260270720, -260319584,
+-255977360, -247973152, -237642688, -225920656, -212798992, -197832096, -180929248, -162609072, -143774560, -125302448,
+-107543832, -90107880, -72290208, -53744536, -34629784, -15271293, 4137127, 23631446, 43414068, 63530084,
+83574160, 102937480, 121328528, 138791872, 155334464, 170847888, 185203824, 198027520, 208609776, 216449168,
+221711584, 224857648, 226156336, 225817040, 224124272, 221082912, 216368640, 209960544, 202450800, 194533024,
+186563712, 178708224, 171015936, 163204992, 154712240, 145068960, 134116800, 122069952, 109522736, 97109744,
+85053776, 73320464, 62079996, 51527260, 41466300, 31688268, 22530324, 14449881, 7395397, 1171452,
+-4069482, -8266202, -11797738, -14943802, -17665200, -20134270, -22630182, -24838332, -26244934, -27055072,
+-27682138, -27813672, -27129160, -26157424, -25265682, -23912768, -21990770, -20338280, -19040126, -17272210,
+-15395310, -14513768, -13857175, -12069932, -10526965, -10856067, -10587094, -7240778, -4358855, -5493800,
+-5580773, 703838, 5775121, -506269, -9443022, -1343788, 23636278, 42522324, 42022496, 33808372,
+30777736, 29378650, 25759604, 28761248, 42633992, 54049480, 51519208, 43749612, 44405668, 51233056,
+53909892, 50683300, 43901544, 31022548, 14563160, 9776956, 25884694, 47662324, 52263848, 39165268,
+27675696, 28365038, 33512556, 35976256, 41140956, 53856744, 64300492, 55533392, 22204980, },
{
-4406637,
--7348689, -3356517, -1883880, -58519, 15189152, 32778654, 12958990, -56069724, -113955680, -81304808,
-35633732, 129195304, 105268040, -6237903, -87387016, -69393784, 2754685, 46722800, 43382392, 34414500,
-46532748, 59179280, 45785960, 12456479, -17613660, -37055904, -55365888, -77968152, -98888400, -110563192,
--110758080, -100773888, -83529064, -63528472, -44748728, -28308130, -13724568, -1228898, 8499203, 15370614,
-19379430, 20318954, 18934364, 17206176, 16825534, 18235894, 21321828, 25922276, 31459024, 37022620,
-42048268, 46316928, 49381924, 50653772, 49984828, 47725676, 44330504, 40263708, 36105644, 32465658,
-29827474, 28544890, 28830504, 30761092, 34375308, 39688720, 46570332, 54795192, 64247344, 74831216,
-86176368, 97677216, 108785080, 119024280, 127867080, 134872176, 139811392, 142530096, 143018112, 141754864,
-139501616, 136562240, 132723080, 128011504, 122875792, 117545736, 111997712, 106638136, 102006544, 97423280,
-90851984, 80689552, 67099736, 51097764, 32862406, 11516418, -13649406, -42112156, -72248328, -102324912,
--131304128, -158685088, -183792928, -205630688, -223527808, -237600816, -248374208, -256063808, -260270720, -260319584,
--255977360, -247973152, -237642688, -225920656, -212798992, -197832096, -180929248, -162609072, -143774560, -125302448,
--107543832, -90107880, -72290208, -53744536, -34629784, -15271293, 4137127, 23631446, 43414068, 63530084,
-83574160, 102937480, 121328528, 138791872, 155334464, 170847888, 185203824, 198027520, 208609776, 216449168,
-221711584, 224857648, 226156336, 225817040, 224124272, 221082912, 216368640, 209960544, 202450800, 194533024,
-186563712, 178708224, 171015936, 163204992, 154712240, 145068960, 134116800, 122069952, 109522736, 97109744,
-85053776, 73320464, 62079996, 51527260, 41466300, 31688268, 22530324, 14449881, 7395397, 1171452,
--4069482, -8266202, -11797738, -14943802, -17665200, -20134270, -22630182, -24838332, -26244934, -27055072,
--27682138, -27813672, -27129160, -26157424, -25265682, -23912768, -21990770, -20338280, -19040126, -17272210,
--15395310, -14513768, -13857175, -12069932, -10526965, -10856067, -10587094, -7240778, -4358855, -5493800,
--5580773, 703838, 5775121, -506269, -9443022, -1343788, 23636278, 42522324, 42022496, 33808372,
-30777736, 29378650, 25759604, 28761248, 42633992, 54049480, 51519208, 43749612, 44405668, 51233056,
-53909892, 50683300, 43901544, 31022548, 14563160, 9776956, 25884694, 47662324, 52263848, 39165268,
-27675696, 28365038, 33512556, 35976256, 41140956, 53856744, 64300492, 55533392, 22204980, },
+-7348689, -3356517, -1883880, -58519, 15189152, 32778654, 12958990, -56069724, -113955680, -81304808,
+35633732, 129195304, 105268040, -6237903, -87387016, -69393784, 2754685, 46722800, 43382392, 34414500,
+46532748, 59179280, 45785960, 12456479, -17613660, -37055904, -55365888, -77968152, -98888400, -110563192,
+-110758080, -100773888, -83529064, -63528472, -44748728, -28308130, -13724568, -1228898, 8499203, 15370614,
+19379430, 20318954, 18934364, 17206176, 16825534, 18235894, 21321828, 25922276, 31459024, 37022620,
+42048268, 46316928, 49381924, 50653772, 49984828, 47725676, 44330504, 40263708, 36105644, 32465658,
+29827474, 28544890, 28830504, 30761092, 34375308, 39688720, 46570332, 54795192, 64247344, 74831216,
+86176368, 97677216, 108785080, 119024280, 127867080, 134872176, 139811392, 142530096, 143018112, 141754864,
+139501616, 136562240, 132723080, 128011504, 122875792, 117545736, 111997712, 106638136, 102006544, 97423280,
+90851984, 80689552, 67099736, 51097764, 32862406, 11516418, -13649406, -42112156, -72248328, -102324912,
+-131304128, -158685088, -183792928, -205630688, -223527808, -237600816, -248374208, -256063808, -260270720, -260319584,
+-255977360, -247973152, -237642688, -225920656, -212798992, -197832096, -180929248, -162609072, -143774560, -125302448,
+-107543832, -90107880, -72290208, -53744536, -34629784, -15271293, 4137127, 23631446, 43414068, 63530084,
+83574160, 102937480, 121328528, 138791872, 155334464, 170847888, 185203824, 198027520, 208609776, 216449168,
+221711584, 224857648, 226156336, 225817040, 224124272, 221082912, 216368640, 209960544, 202450800, 194533024,
+186563712, 178708224, 171015936, 163204992, 154712240, 145068960, 134116800, 122069952, 109522736, 97109744,
+85053776, 73320464, 62079996, 51527260, 41466300, 31688268, 22530324, 14449881, 7395397, 1171452,
+-4069482, -8266202, -11797738, -14943802, -17665200, -20134270, -22630182, -24838332, -26244934, -27055072,
+-27682138, -27813672, -27129160, -26157424, -25265682, -23912768, -21990770, -20338280, -19040126, -17272210,
+-15395310, -14513768, -13857175, -12069932, -10526965, -10856067, -10587094, -7240778, -4358855, -5493800,
+-5580773, 703838, 5775121, -506269, -9443022, -1343788, 23636278, 42522324, 42022496, 33808372,
+30777736, 29378650, 25759604, 28761248, 42633992, 54049480, 51519208, 43749612, 44405668, 51233056,
+53909892, 50683300, 43901544, 31022548, 14563160, 9776956, 25884694, 47662324, 52263848, 39165268,
+27675696, 28365038, 33512556, 35976256, 41140956, 53856744, 64300492, 55533392, 22204980, },
},
{
{
117575,
-161061, -252329, -1464584, -3598646, -4524748, -379031, 6758668, 4143033, -16192564, -33903400,
--12020003, 49617072, 89670864, 48064444, -48242148, -100213936, -51793548, 42024108, 84818088, 49868864,
--8434779, -34635152, -24835112, -3246995, 16035260, 30627412, 36352068, 29423210, 13908715, -2612951,
--16478179, -27019102, -33733748, -38114076, -44135084, -53906672, -65277060, -74832824, -80749144, -82240032,
--78949552, -71816152, -62895500, -53892712, -45776836, -39388608, -35219268, -32866164, -31560494, -30902826,
--30591978, -30010548, -28633474, -26456462, -23782844, -20996484, -18630494, -17163226, -16643535, -16815334,
--17479444, -18406620, -19099720, -19061064, -18182744, -16600049, -14325863, -11284490, -7541963, -3243774,
-1568200, 6864432, 12396886, 17781702, 22871238, 27857158, 32864552, 37613176, 41810432, 45802604,
-50356880, 55646132, 60961692, 65723200, 70293048, 75307416, 80490912, 84649512, 86786256, 86875912,
-85539104, 83229488, 79847200, 75143136, 69425464, 63683092, 58845348, 55023364, 51725364, 48756468,
-46721728, 46633144, 49120468, 53931368, 60053844, 66373888, 72363760, 78207600, 84296784, 90664072,
-96856880, 102248672, 106451304, 109519520, 111827528, 113777976, 115599048, 117298240, 118724704, 119707720,
-120225800, 120397064, 120254792, 119632016, 118329568, 116299128, 113634096, 110527224, 107276472, 104199128,
-101474504, 99150392, 97272960, 95897496, 95001992, 94505920, 94329296, 94344864, 94334128, 94034552,
-93170728, 91431800, 88545584, 84382152, 78907136, 72140952, 64253784, 55550032, 46234788, 36351528,
-26020522, 15505369, 4977330, -5508296, -15746424, -25402048, -34286188, -42334956, -49382996, -55277840,
--60101624, -63987496, -66891432, -68781752, -69795904, -70051456, -69659000, -69007240, -68578280, -68463392,
--68547680, -69004552, -70006360, -71223440, -72264976, -73256576, -74401184, -75542032, -76666776, -78069080,
--79573936, -80576808, -81057848, -81349904, -80996640, -79342008, -76901392, -74463992, -71653480, -68145560,
--64833068, -61896920, -58074400, -53672060, -50640348, -47916264, -42216844, -35222488, -31835372, -29344290,
--20187420, -8438000, -6424734, -8773544, 7063611, 41104448, 58184460, 37411848, 8157754, 6343130,
-19957102, 18105434, 12898861, 40517112, 89652072, 105694848, 72303624, 36204428, 35644472, 51827908,
-53061100, 43456480, 38454452, 28644210, 3903052, -12447889, 8261907, 52053392, 76827304, 68179384,
-50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, },
+161061, -252329, -1464584, -3598646, -4524748, -379031, 6758668, 4143033, -16192564, -33903400,
+-12020003, 49617072, 89670864, 48064444, -48242148, -100213936, -51793548, 42024108, 84818088, 49868864,
+-8434779, -34635152, -24835112, -3246995, 16035260, 30627412, 36352068, 29423210, 13908715, -2612951,
+-16478179, -27019102, -33733748, -38114076, -44135084, -53906672, -65277060, -74832824, -80749144, -82240032,
+-78949552, -71816152, -62895500, -53892712, -45776836, -39388608, -35219268, -32866164, -31560494, -30902826,
+-30591978, -30010548, -28633474, -26456462, -23782844, -20996484, -18630494, -17163226, -16643535, -16815334,
+-17479444, -18406620, -19099720, -19061064, -18182744, -16600049, -14325863, -11284490, -7541963, -3243774,
+1568200, 6864432, 12396886, 17781702, 22871238, 27857158, 32864552, 37613176, 41810432, 45802604,
+50356880, 55646132, 60961692, 65723200, 70293048, 75307416, 80490912, 84649512, 86786256, 86875912,
+85539104, 83229488, 79847200, 75143136, 69425464, 63683092, 58845348, 55023364, 51725364, 48756468,
+46721728, 46633144, 49120468, 53931368, 60053844, 66373888, 72363760, 78207600, 84296784, 90664072,
+96856880, 102248672, 106451304, 109519520, 111827528, 113777976, 115599048, 117298240, 118724704, 119707720,
+120225800, 120397064, 120254792, 119632016, 118329568, 116299128, 113634096, 110527224, 107276472, 104199128,
+101474504, 99150392, 97272960, 95897496, 95001992, 94505920, 94329296, 94344864, 94334128, 94034552,
+93170728, 91431800, 88545584, 84382152, 78907136, 72140952, 64253784, 55550032, 46234788, 36351528,
+26020522, 15505369, 4977330, -5508296, -15746424, -25402048, -34286188, -42334956, -49382996, -55277840,
+-60101624, -63987496, -66891432, -68781752, -69795904, -70051456, -69659000, -69007240, -68578280, -68463392,
+-68547680, -69004552, -70006360, -71223440, -72264976, -73256576, -74401184, -75542032, -76666776, -78069080,
+-79573936, -80576808, -81057848, -81349904, -80996640, -79342008, -76901392, -74463992, -71653480, -68145560,
+-64833068, -61896920, -58074400, -53672060, -50640348, -47916264, -42216844, -35222488, -31835372, -29344290,
+-20187420, -8438000, -6424734, -8773544, 7063611, 41104448, 58184460, 37411848, 8157754, 6343130,
+19957102, 18105434, 12898861, 40517112, 89652072, 105694848, 72303624, 36204428, 35644472, 51827908,
+53061100, 43456480, 38454452, 28644210, 3903052, -12447889, 8261907, 52053392, 76827304, 68179384,
+50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, },
{
117575,
-161061, -252329, -1464584, -3598646, -4524748, -379031, 6758668, 4143033, -16192564, -33903400,
--12020003, 49617072, 89670864, 48064444, -48242148, -100213936, -51793548, 42024108, 84818088, 49868864,
--8434779, -34635152, -24835112, -3246995, 16035260, 30627412, 36352068, 29423210, 13908715, -2612951,
--16478179, -27019102, -33733748, -38114076, -44135084, -53906672, -65277060, -74832824, -80749144, -82240032,
--78949552, -71816152, -62895500, -53892712, -45776836, -39388608, -35219268, -32866164, -31560494, -30902826,
--30591978, -30010548, -28633474, -26456462, -23782844, -20996484, -18630494, -17163226, -16643535, -16815334,
--17479444, -18406620, -19099720, -19061064, -18182744, -16600049, -14325863, -11284490, -7541963, -3243774,
-1568200, 6864432, 12396886, 17781702, 22871238, 27857158, 32864552, 37613176, 41810432, 45802604,
-50356880, 55646132, 60961692, 65723200, 70293048, 75307416, 80490912, 84649512, 86786256, 86875912,
-85539104, 83229488, 79847200, 75143136, 69425464, 63683092, 58845348, 55023364, 51725364, 48756468,
-46721728, 46633144, 49120468, 53931368, 60053844, 66373888, 72363760, 78207600, 84296784, 90664072,
-96856880, 102248672, 106451304, 109519520, 111827528, 113777976, 115599048, 117298240, 118724704, 119707720,
-120225800, 120397064, 120254792, 119632016, 118329568, 116299128, 113634096, 110527224, 107276472, 104199128,
-101474504, 99150392, 97272960, 95897496, 95001992, 94505920, 94329296, 94344864, 94334128, 94034552,
-93170728, 91431800, 88545584, 84382152, 78907136, 72140952, 64253784, 55550032, 46234788, 36351528,
-26020522, 15505369, 4977330, -5508296, -15746424, -25402048, -34286188, -42334956, -49382996, -55277840,
--60101624, -63987496, -66891432, -68781752, -69795904, -70051456, -69659000, -69007240, -68578280, -68463392,
--68547680, -69004552, -70006360, -71223440, -72264976, -73256576, -74401184, -75542032, -76666776, -78069080,
--79573936, -80576808, -81057848, -81349904, -80996640, -79342008, -76901392, -74463992, -71653480, -68145560,
--64833068, -61896920, -58074400, -53672060, -50640348, -47916264, -42216844, -35222488, -31835372, -29344290,
--20187420, -8438000, -6424734, -8773544, 7063611, 41104448, 58184460, 37411848, 8157754, 6343130,
-19957102, 18105434, 12898861, 40517112, 89652072, 105694848, 72303624, 36204428, 35644472, 51827908,
-53061100, 43456480, 38454452, 28644210, 3903052, -12447889, 8261907, 52053392, 76827304, 68179384,
-50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, },
+161061, -252329, -1464584, -3598646, -4524748, -379031, 6758668, 4143033, -16192564, -33903400,
+-12020003, 49617072, 89670864, 48064444, -48242148, -100213936, -51793548, 42024108, 84818088, 49868864,
+-8434779, -34635152, -24835112, -3246995, 16035260, 30627412, 36352068, 29423210, 13908715, -2612951,
+-16478179, -27019102, -33733748, -38114076, -44135084, -53906672, -65277060, -74832824, -80749144, -82240032,
+-78949552, -71816152, -62895500, -53892712, -45776836, -39388608, -35219268, -32866164, -31560494, -30902826,
+-30591978, -30010548, -28633474, -26456462, -23782844, -20996484, -18630494, -17163226, -16643535, -16815334,
+-17479444, -18406620, -19099720, -19061064, -18182744, -16600049, -14325863, -11284490, -7541963, -3243774,
+1568200, 6864432, 12396886, 17781702, 22871238, 27857158, 32864552, 37613176, 41810432, 45802604,
+50356880, 55646132, 60961692, 65723200, 70293048, 75307416, 80490912, 84649512, 86786256, 86875912,
+85539104, 83229488, 79847200, 75143136, 69425464, 63683092, 58845348, 55023364, 51725364, 48756468,
+46721728, 46633144, 49120468, 53931368, 60053844, 66373888, 72363760, 78207600, 84296784, 90664072,
+96856880, 102248672, 106451304, 109519520, 111827528, 113777976, 115599048, 117298240, 118724704, 119707720,
+120225800, 120397064, 120254792, 119632016, 118329568, 116299128, 113634096, 110527224, 107276472, 104199128,
+101474504, 99150392, 97272960, 95897496, 95001992, 94505920, 94329296, 94344864, 94334128, 94034552,
+93170728, 91431800, 88545584, 84382152, 78907136, 72140952, 64253784, 55550032, 46234788, 36351528,
+26020522, 15505369, 4977330, -5508296, -15746424, -25402048, -34286188, -42334956, -49382996, -55277840,
+-60101624, -63987496, -66891432, -68781752, -69795904, -70051456, -69659000, -69007240, -68578280, -68463392,
+-68547680, -69004552, -70006360, -71223440, -72264976, -73256576, -74401184, -75542032, -76666776, -78069080,
+-79573936, -80576808, -81057848, -81349904, -80996640, -79342008, -76901392, -74463992, -71653480, -68145560,
+-64833068, -61896920, -58074400, -53672060, -50640348, -47916264, -42216844, -35222488, -31835372, -29344290,
+-20187420, -8438000, -6424734, -8773544, 7063611, 41104448, 58184460, 37411848, 8157754, 6343130,
+19957102, 18105434, 12898861, 40517112, 89652072, 105694848, 72303624, 36204428, 35644472, 51827908,
+53061100, 43456480, 38454452, 28644210, 3903052, -12447889, 8261907, 52053392, 76827304, 68179384,
+50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, },
},
};
-const Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[16][BINAURAL_CHANNELS][160] ={
+const Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160] ={
{
{
500112448,
-418537056, 287121792, 143605456, 14763950, -86528024, -166246368, -241739552, -311749664, -347549824, -328959072,
--262918032, -147998128, 29484414, 216079808, 266078048, 94506464, -160373536, -237499344, -45432700, 230351984,
-349093344, 263181104, 94669672, -54703388, -179336896, -294431296, -382621984, -428603392, -447339648, -456935680,
--455972512, -440012416, -416439488, -393079712, -368706304, -341304416, -313900896, -288643808, -264001440, -239418128,
--216171072, -193799664, -170890304, -148231664, -127228208, -107119168, -86873232, -67434744, -49669148, -32590212,
--15431817, 1001264, 16207596, 30826054, 44940928, 57775900, 69332048, 80341120, 90769840, 100129112,
-108780248, 117362128, 125608464, 133045736, 140035792, 147043568, 153789360, 159989136, 166012832, 172165904,
-178216976, 184042032, 189920240, 195976144, 202025056, 208014400, 214042912, 220098288, 226173520, 232313168,
-238288544, 243737776, 248770944, 253786400, 258645072, 262792400, 266229456, 269521024, 272802368, 275555968,
-277430720, 278632256, 279502528, 280196672, 280706720, 280861856, 280527392, 280017376, 279963680, 280580544,
-281469600, 282292096, 283223040, 284627488, 286693376, 289421216, 292608608, 295871168, 299018848, 302320064,
-306113600, 310339840, 314677760, 318900256, 322870400, 326495360, 329891616, 333329728, 336852128, 340216160,
-343272032, 346091136, 348726112, 351167264, 353505344, 355814432, 357938816, 359685792, 361114400, 362388928,
-363542144, 364617504, 365799680, 367162272, 368560800, 369955584, 371522176, 373325536, 375293184, 377594208,
-380535168, 384050080, 387854336, 392037088, 396819552, 401957408, 407214976, 413027136, 419667168, 426614272,
-434127232, 443276608, 450554944, 444149536, 412868768, 361643232, 312110432, 282796224, 273215232, },
+418537056, 287121792, 143605456, 14763950, -86528024, -166246368, -241739552, -311749664, -347549824, -328959072,
+-262918032, -147998128, 29484414, 216079808, 266078048, 94506464, -160373536, -237499344, -45432700, 230351984,
+349093344, 263181104, 94669672, -54703388, -179336896, -294431296, -382621984, -428603392, -447339648, -456935680,
+-455972512, -440012416, -416439488, -393079712, -368706304, -341304416, -313900896, -288643808, -264001440, -239418128,
+-216171072, -193799664, -170890304, -148231664, -127228208, -107119168, -86873232, -67434744, -49669148, -32590212,
+-15431817, 1001264, 16207596, 30826054, 44940928, 57775900, 69332048, 80341120, 90769840, 100129112,
+108780248, 117362128, 125608464, 133045736, 140035792, 147043568, 153789360, 159989136, 166012832, 172165904,
+178216976, 184042032, 189920240, 195976144, 202025056, 208014400, 214042912, 220098288, 226173520, 232313168,
+238288544, 243737776, 248770944, 253786400, 258645072, 262792400, 266229456, 269521024, 272802368, 275555968,
+277430720, 278632256, 279502528, 280196672, 280706720, 280861856, 280527392, 280017376, 279963680, 280580544,
+281469600, 282292096, 283223040, 284627488, 286693376, 289421216, 292608608, 295871168, 299018848, 302320064,
+306113600, 310339840, 314677760, 318900256, 322870400, 326495360, 329891616, 333329728, 336852128, 340216160,
+343272032, 346091136, 348726112, 351167264, 353505344, 355814432, 357938816, 359685792, 361114400, 362388928,
+363542144, 364617504, 365799680, 367162272, 368560800, 369955584, 371522176, 373325536, 375293184, 377594208,
+380535168, 384050080, 387854336, 392037088, 396819552, 401957408, 407214976, 413027136, 419667168, 426614272,
+434127232, 443276608, 450554944, 444149536, 412868768, 361643232, 312110432, 282796224, 273215232, },
{
500112448,
-418537056, 287121792, 143605456, 14763950, -86528024, -166246368, -241739552, -311749664, -347549824, -328959072,
--262918032, -147998128, 29484414, 216079808, 266078048, 94506464, -160373536, -237499344, -45432700, 230351984,
-349093344, 263181104, 94669672, -54703388, -179336896, -294431296, -382621984, -428603392, -447339648, -456935680,
--455972512, -440012416, -416439488, -393079712, -368706304, -341304416, -313900896, -288643808, -264001440, -239418128,
--216171072, -193799664, -170890304, -148231664, -127228208, -107119168, -86873232, -67434744, -49669148, -32590212,
--15431817, 1001264, 16207596, 30826054, 44940928, 57775900, 69332048, 80341120, 90769840, 100129112,
-108780248, 117362128, 125608464, 133045736, 140035792, 147043568, 153789360, 159989136, 166012832, 172165904,
-178216976, 184042032, 189920240, 195976144, 202025056, 208014400, 214042912, 220098288, 226173520, 232313168,
-238288544, 243737776, 248770944, 253786400, 258645072, 262792400, 266229456, 269521024, 272802368, 275555968,
-277430720, 278632256, 279502528, 280196672, 280706720, 280861856, 280527392, 280017376, 279963680, 280580544,
-281469600, 282292096, 283223040, 284627488, 286693376, 289421216, 292608608, 295871168, 299018848, 302320064,
-306113600, 310339840, 314677760, 318900256, 322870400, 326495360, 329891616, 333329728, 336852128, 340216160,
-343272032, 346091136, 348726112, 351167264, 353505344, 355814432, 357938816, 359685792, 361114400, 362388928,
-363542144, 364617504, 365799680, 367162272, 368560800, 369955584, 371522176, 373325536, 375293184, 377594208,
-380535168, 384050080, 387854336, 392037088, 396819552, 401957408, 407214976, 413027136, 419667168, 426614272,
-434127232, 443276608, 450554944, 444149536, 412868768, 361643232, 312110432, 282796224, 273215232, },
+418537056, 287121792, 143605456, 14763950, -86528024, -166246368, -241739552, -311749664, -347549824, -328959072,
+-262918032, -147998128, 29484414, 216079808, 266078048, 94506464, -160373536, -237499344, -45432700, 230351984,
+349093344, 263181104, 94669672, -54703388, -179336896, -294431296, -382621984, -428603392, -447339648, -456935680,
+-455972512, -440012416, -416439488, -393079712, -368706304, -341304416, -313900896, -288643808, -264001440, -239418128,
+-216171072, -193799664, -170890304, -148231664, -127228208, -107119168, -86873232, -67434744, -49669148, -32590212,
+-15431817, 1001264, 16207596, 30826054, 44940928, 57775900, 69332048, 80341120, 90769840, 100129112,
+108780248, 117362128, 125608464, 133045736, 140035792, 147043568, 153789360, 159989136, 166012832, 172165904,
+178216976, 184042032, 189920240, 195976144, 202025056, 208014400, 214042912, 220098288, 226173520, 232313168,
+238288544, 243737776, 248770944, 253786400, 258645072, 262792400, 266229456, 269521024, 272802368, 275555968,
+277430720, 278632256, 279502528, 280196672, 280706720, 280861856, 280527392, 280017376, 279963680, 280580544,
+281469600, 282292096, 283223040, 284627488, 286693376, 289421216, 292608608, 295871168, 299018848, 302320064,
+306113600, 310339840, 314677760, 318900256, 322870400, 326495360, 329891616, 333329728, 336852128, 340216160,
+343272032, 346091136, 348726112, 351167264, 353505344, 355814432, 357938816, 359685792, 361114400, 362388928,
+363542144, 364617504, 365799680, 367162272, 368560800, 369955584, 371522176, 373325536, 375293184, 377594208,
+380535168, 384050080, 387854336, 392037088, 396819552, 401957408, 407214976, 413027136, 419667168, 426614272,
+434127232, 443276608, 450554944, 444149536, 412868768, 361643232, 312110432, 282796224, 273215232, },
},
{
{
13864154,
-136623984, 328640160, 487629664, 518798752, 400693056, 175451568, -101884144, -367117696, -542826944, -596249344,
--564139648, -451535296, -177904528, 243203600, 531694944, 367461824, -163075616, -549243648, -406381760, 97649304,
-492055072, 546322496, 398481696, 242520704, 109596288, -35486092, -167236896, -245507312, -288138080, -331422240,
--372911616, -394943168, -403555136, -412833856, -420243744, -419021856, -413134528, -406657696, -395780160, -378794112,
--359887136, -340138848, -316722688, -290845536, -266280992, -242185696, -215901024, -189375312, -165792720, -144028512,
--121940560, -100523712, -80735184, -60967596, -40515500, -20994874, -2815888, 15329812, 33093796, 48828948,
-62875100, 76620608, 89422832, 99939056, 108899968, 117535536, 125165544, 130876784, 135496016, 139917680,
-143608672, 146227536, 148670288, 151568320, 154618816, 157799248, 161570768, 165966656, 170851120, 176503296,
-182850720, 189116544, 195128416, 201641728, 208718224, 215347520, 221177936, 226993312, 233166800, 239278000,
-245384368, 252129616, 259665136, 267780480, 276746752, 286837248, 297567680, 308396896, 319439264, 330652896,
-341231936, 350513344, 358587904, 365545728, 371041152, 374867968, 377070208, 377470720, 376021152, 373483904,
-370898336, 368599456, 366440704, 364470912, 362756704, 361157888, 359899456, 359699744, 360843840, 362773344,
-364846720, 366792896, 368347680, 369331744, 370134368, 371304224, 372740896, 374010592, 375177728, 376552128,
-378008672, 379322912, 380723072, 382422272, 384142944, 385711136, 387467264, 389582528, 391733760, 393863520,
-396390592, 399380960, 402513600, 406025280, 410536064, 415955776, 421893568, 428828864, 437292096, 446712032,
-457193888, 470256512, 482825184, 481813728, 453202816, 400317792, 346350464, 312895360, 301198528, },
+136623984, 328640160, 487629664, 518798752, 400693056, 175451568, -101884144, -367117696, -542826944, -596249344,
+-564139648, -451535296, -177904528, 243203600, 531694944, 367461824, -163075616, -549243648, -406381760, 97649304,
+492055072, 546322496, 398481696, 242520704, 109596288, -35486092, -167236896, -245507312, -288138080, -331422240,
+-372911616, -394943168, -403555136, -412833856, -420243744, -419021856, -413134528, -406657696, -395780160, -378794112,
+-359887136, -340138848, -316722688, -290845536, -266280992, -242185696, -215901024, -189375312, -165792720, -144028512,
+-121940560, -100523712, -80735184, -60967596, -40515500, -20994874, -2815888, 15329812, 33093796, 48828948,
+62875100, 76620608, 89422832, 99939056, 108899968, 117535536, 125165544, 130876784, 135496016, 139917680,
+143608672, 146227536, 148670288, 151568320, 154618816, 157799248, 161570768, 165966656, 170851120, 176503296,
+182850720, 189116544, 195128416, 201641728, 208718224, 215347520, 221177936, 226993312, 233166800, 239278000,
+245384368, 252129616, 259665136, 267780480, 276746752, 286837248, 297567680, 308396896, 319439264, 330652896,
+341231936, 350513344, 358587904, 365545728, 371041152, 374867968, 377070208, 377470720, 376021152, 373483904,
+370898336, 368599456, 366440704, 364470912, 362756704, 361157888, 359899456, 359699744, 360843840, 362773344,
+364846720, 366792896, 368347680, 369331744, 370134368, 371304224, 372740896, 374010592, 375177728, 376552128,
+378008672, 379322912, 380723072, 382422272, 384142944, 385711136, 387467264, 389582528, 391733760, 393863520,
+396390592, 399380960, 402513600, 406025280, 410536064, 415955776, 421893568, 428828864, 437292096, 446712032,
+457193888, 470256512, 482825184, 481813728, 453202816, 400317792, 346350464, 312895360, 301198528, },
{
-13864154,
--136623984, -328640160, -487629664, -518798752, -400693056, -175451568, 101884144, 367117696, 542826944, 596249344,
-564139648, 451535296, 177904528, -243203600, -531694944, -367461824, 163075616, 549243648, 406381760, -97649304,
--492055072, -546322496, -398481696, -242520704, -109596288, 35486092, 167236896, 245507312, 288138080, 331422240,
-372911616, 394943168, 403555136, 412833856, 420243744, 419021856, 413134528, 406657696, 395780160, 378794112,
-359887136, 340138848, 316722688, 290845536, 266280992, 242185696, 215901024, 189375312, 165792720, 144028512,
-121940560, 100523712, 80735184, 60967596, 40515500, 20994874, 2815888, -15329812, -33093796, -48828948,
--62875100, -76620608, -89422832, -99939056, -108899968, -117535536, -125165544, -130876784, -135496016, -139917680,
--143608672, -146227536, -148670288, -151568320, -154618816, -157799248, -161570768, -165966656, -170851120, -176503296,
--182850720, -189116544, -195128416, -201641728, -208718224, -215347520, -221177936, -226993312, -233166800, -239278000,
--245384368, -252129616, -259665136, -267780480, -276746752, -286837248, -297567680, -308396896, -319439264, -330652896,
--341231936, -350513344, -358587904, -365545728, -371041152, -374867968, -377070208, -377470720, -376021152, -373483904,
--370898336, -368599456, -366440704, -364470912, -362756704, -361157888, -359899456, -359699744, -360843840, -362773344,
--364846720, -366792896, -368347680, -369331744, -370134368, -371304224, -372740896, -374010592, -375177728, -376552128,
--378008672, -379322912, -380723072, -382422272, -384142944, -385711136, -387467264, -389582528, -391733760, -393863520,
--396390592, -399380960, -402513600, -406025280, -410536064, -415955776, -421893568, -428828864, -437292096, -446712032,
--457193888, -470256512, -482825184, -481813728, -453202816, -400317792, -346350464, -312895360, -301198528, },
+-136623984, -328640160, -487629664, -518798752, -400693056, -175451568, 101884144, 367117696, 542826944, 596249344,
+564139648, 451535296, 177904528, -243203600, -531694944, -367461824, 163075616, 549243648, 406381760, -97649304,
+-492055072, -546322496, -398481696, -242520704, -109596288, 35486092, 167236896, 245507312, 288138080, 331422240,
+372911616, 394943168, 403555136, 412833856, 420243744, 419021856, 413134528, 406657696, 395780160, 378794112,
+359887136, 340138848, 316722688, 290845536, 266280992, 242185696, 215901024, 189375312, 165792720, 144028512,
+121940560, 100523712, 80735184, 60967596, 40515500, 20994874, 2815888, -15329812, -33093796, -48828948,
+-62875100, -76620608, -89422832, -99939056, -108899968, -117535536, -125165544, -130876784, -135496016, -139917680,
+-143608672, -146227536, -148670288, -151568320, -154618816, -157799248, -161570768, -165966656, -170851120, -176503296,
+-182850720, -189116544, -195128416, -201641728, -208718224, -215347520, -221177936, -226993312, -233166800, -239278000,
+-245384368, -252129616, -259665136, -267780480, -276746752, -286837248, -297567680, -308396896, -319439264, -330652896,
+-341231936, -350513344, -358587904, -365545728, -371041152, -374867968, -377070208, -377470720, -376021152, -373483904,
+-370898336, -368599456, -366440704, -364470912, -362756704, -361157888, -359899456, -359699744, -360843840, -362773344,
+-364846720, -366792896, -368347680, -369331744, -370134368, -371304224, -372740896, -374010592, -375177728, -376552128,
+-378008672, -379322912, -380723072, -382422272, -384142944, -385711136, -387467264, -389582528, -391733760, -393863520,
+-396390592, -399380960, -402513600, -406025280, -410536064, -415955776, -421893568, -428828864, -437292096, -446712032,
+-457193888, -470256512, -482825184, -481813728, -453202816, -400317792, -346350464, -312895360, -301198528, },
},
{
{
64401424,
-63330368, 37157908, -15931644, -58379880, -54824184, -12847858, 30091614, 47290276, 37990596, 12819941,
--17877264, -39993660, -35149476, 1495722, 43596604, 49433464, 8347806, -36291936, -28638842, 34721588,
-98505608, 110677016, 72908680, 22891638, -13288629, -35545148, -50949588, -61456688, -68270656, -73939472,
--77989624, -77666968, -73198056, -67782640, -63748588, -62395136, -65560528, -73762304, -84316648, -93879936,
--101488464, -107591080, -112057848, -114704080, -116171352, -116993832, -116838680, -115213032, -111799608, -105879536,
--96558920, -83700320, -67775656, -48956184, -27186070, -2924873, 23012434, 50206020, 78591456, 107864880,
-137462032, 166971152, 196106592, 224303600, 250640864, 274176224, 294177344, 310024704, 321084768, 326829280,
-327020960, 321681792, 311023264, 295638720, 276577632, 254856384, 231045616, 205785312, 180449824, 156516656,
-134315440, 113291576, 93632432, 76656040, 63151588, 52218748, 42468100, 33854004, 27566174, 24370182,
-23728084, 24552718, 26297012, 29117194, 33293512, 38728256, 44891536, 51022064, 56372520, 60442536,
-63119376, 64576980, 64919504, 63852740, 60770568, 55293944, 47769700, 39152384, 30319784, 21547314,
-12667469, 3592203, -5455146, -14068702, -21811992, -28259812, -33072322, -36057860, -37148244, -36380520,
--33932388, -30065844, -24990804, -18882824, -12054363, -4963909, 1974611, 8501888, 14472429, 19794968,
-24357834, 27957016, 30428232, 31926102, 32949916, 34061776, 35713728, 38252588, 41734196, 45710800,
-49542448, 52979496, 56159920, 59088548, 61521112, 63342716, 64637648, 65327528, 65163780, 64192044,
-62777928, 60743724, 56635588, 48552456, 36449240, 23563264, 14521821, 11260331, 11362873, },
+63330368, 37157908, -15931644, -58379880, -54824184, -12847858, 30091614, 47290276, 37990596, 12819941,
+-17877264, -39993660, -35149476, 1495722, 43596604, 49433464, 8347806, -36291936, -28638842, 34721588,
+98505608, 110677016, 72908680, 22891638, -13288629, -35545148, -50949588, -61456688, -68270656, -73939472,
+-77989624, -77666968, -73198056, -67782640, -63748588, -62395136, -65560528, -73762304, -84316648, -93879936,
+-101488464, -107591080, -112057848, -114704080, -116171352, -116993832, -116838680, -115213032, -111799608, -105879536,
+-96558920, -83700320, -67775656, -48956184, -27186070, -2924873, 23012434, 50206020, 78591456, 107864880,
+137462032, 166971152, 196106592, 224303600, 250640864, 274176224, 294177344, 310024704, 321084768, 326829280,
+327020960, 321681792, 311023264, 295638720, 276577632, 254856384, 231045616, 205785312, 180449824, 156516656,
+134315440, 113291576, 93632432, 76656040, 63151588, 52218748, 42468100, 33854004, 27566174, 24370182,
+23728084, 24552718, 26297012, 29117194, 33293512, 38728256, 44891536, 51022064, 56372520, 60442536,
+63119376, 64576980, 64919504, 63852740, 60770568, 55293944, 47769700, 39152384, 30319784, 21547314,
+12667469, 3592203, -5455146, -14068702, -21811992, -28259812, -33072322, -36057860, -37148244, -36380520,
+-33932388, -30065844, -24990804, -18882824, -12054363, -4963909, 1974611, 8501888, 14472429, 19794968,
+24357834, 27957016, 30428232, 31926102, 32949916, 34061776, 35713728, 38252588, 41734196, 45710800,
+49542448, 52979496, 56159920, 59088548, 61521112, 63342716, 64637648, 65327528, 65163780, 64192044,
+62777928, 60743724, 56635588, 48552456, 36449240, 23563264, 14521821, 11260331, 11362873, },
{
64401424,
-63330368, 37157908, -15931644, -58379880, -54824184, -12847858, 30091614, 47290276, 37990596, 12819941,
--17877264, -39993660, -35149476, 1495722, 43596604, 49433464, 8347806, -36291936, -28638842, 34721588,
-98505608, 110677016, 72908680, 22891638, -13288629, -35545148, -50949588, -61456688, -68270656, -73939472,
--77989624, -77666968, -73198056, -67782640, -63748588, -62395136, -65560528, -73762304, -84316648, -93879936,
--101488464, -107591080, -112057848, -114704080, -116171352, -116993832, -116838680, -115213032, -111799608, -105879536,
--96558920, -83700320, -67775656, -48956184, -27186070, -2924873, 23012434, 50206020, 78591456, 107864880,
-137462032, 166971152, 196106592, 224303600, 250640864, 274176224, 294177344, 310024704, 321084768, 326829280,
-327020960, 321681792, 311023264, 295638720, 276577632, 254856384, 231045616, 205785312, 180449824, 156516656,
-134315440, 113291576, 93632432, 76656040, 63151588, 52218748, 42468100, 33854004, 27566174, 24370182,
-23728084, 24552718, 26297012, 29117194, 33293512, 38728256, 44891536, 51022064, 56372520, 60442536,
-63119376, 64576980, 64919504, 63852740, 60770568, 55293944, 47769700, 39152384, 30319784, 21547314,
-12667469, 3592203, -5455146, -14068702, -21811992, -28259812, -33072322, -36057860, -37148244, -36380520,
--33932388, -30065844, -24990804, -18882824, -12054363, -4963909, 1974611, 8501888, 14472429, 19794968,
-24357834, 27957016, 30428232, 31926102, 32949916, 34061776, 35713728, 38252588, 41734196, 45710800,
-49542448, 52979496, 56159920, 59088548, 61521112, 63342716, 64637648, 65327528, 65163780, 64192044,
-62777928, 60743724, 56635588, 48552456, 36449240, 23563264, 14521821, 11260331, 11362873, },
+63330368, 37157908, -15931644, -58379880, -54824184, -12847858, 30091614, 47290276, 37990596, 12819941,
+-17877264, -39993660, -35149476, 1495722, 43596604, 49433464, 8347806, -36291936, -28638842, 34721588,
+98505608, 110677016, 72908680, 22891638, -13288629, -35545148, -50949588, -61456688, -68270656, -73939472,
+-77989624, -77666968, -73198056, -67782640, -63748588, -62395136, -65560528, -73762304, -84316648, -93879936,
+-101488464, -107591080, -112057848, -114704080, -116171352, -116993832, -116838680, -115213032, -111799608, -105879536,
+-96558920, -83700320, -67775656, -48956184, -27186070, -2924873, 23012434, 50206020, 78591456, 107864880,
+137462032, 166971152, 196106592, 224303600, 250640864, 274176224, 294177344, 310024704, 321084768, 326829280,
+327020960, 321681792, 311023264, 295638720, 276577632, 254856384, 231045616, 205785312, 180449824, 156516656,
+134315440, 113291576, 93632432, 76656040, 63151588, 52218748, 42468100, 33854004, 27566174, 24370182,
+23728084, 24552718, 26297012, 29117194, 33293512, 38728256, 44891536, 51022064, 56372520, 60442536,
+63119376, 64576980, 64919504, 63852740, 60770568, 55293944, 47769700, 39152384, 30319784, 21547314,
+12667469, 3592203, -5455146, -14068702, -21811992, -28259812, -33072322, -36057860, -37148244, -36380520,
+-33932388, -30065844, -24990804, -18882824, -12054363, -4963909, 1974611, 8501888, 14472429, 19794968,
+24357834, 27957016, 30428232, 31926102, 32949916, 34061776, 35713728, 38252588, 41734196, 45710800,
+49542448, 52979496, 56159920, 59088548, 61521112, 63342716, 64637648, 65327528, 65163780, 64192044,
+62777928, 60743724, 56635588, 48552456, 36449240, 23563264, 14521821, 11260331, 11362873, },
},
{
{
11786464,
-25789668, 33872260, 16652125, -20252382, -45563160, -35004520, -2744484, 12291660, -8097624, -45591616,
--76592688, -94264872, -89115736, -41623600, 34422016, 69206416, 8408472, -98491656, -133276056, -44265008,
-95329480, 179870544, 181108576, 141069280, 94194536, 38961260, -29467234, -99621768, -160425088, -213080304,
--260522512, -299208896, -325018432, -338040224, -339448448, -329772960, -311046368, -286593504, -258777152, -229226704,
--199843216, -171641920, -144170784, -117346560, -92145304, -68815040, -46365784, -24428700, -3939559, 14218489,
-29699162, 41950556, 50583976, 56514252, 61536680, 66855996, 72790032, 79448304, 86790016, 94313184,
-101418136, 107935752, 113958904, 119470424, 124494456, 129352064, 134420672, 139683072, 144722688, 149181392,
-153040960, 156255200, 158280816, 158397856, 156460288, 152775744, 147223424, 139280960, 129104568, 117684792,
-105569760, 92379912, 78087336, 63820528, 50685444, 38562900, 26798448, 15387794, 4635344, -5815386,
--16722455, -28219546, -39760124, -51000052, -62167504, -73465416, -84478784, -94344864, -102413496, -108639048,
--113280296, -116241680, -116895592, -114715896, -109939888, -103384160, -95636040, -86646136, -76100912, -64054068,
--51193864, -38566120, -26919782, -16155519, -5476620, 5771363, 17424682, 28651190, 38631620, 47049220,
-54205708, 60852172, 67741832, 75123808, 82692080, 90047208, 97074848, 103923176, 110883704, 118351584,
-126650536, 135782704, 145463568, 155364000, 165216112, 174804640, 184064048, 193087232, 201897824, 210312208,
-218072128, 224942464, 230699872, 235267040, 238810912, 241544128, 243650816, 245502480, 247508224, 249758784,
-252559648, 256762272, 261317616, 260416752, 246926256, 221287984, 194087424, 176352432, 169659792, },
+25789668, 33872260, 16652125, -20252382, -45563160, -35004520, -2744484, 12291660, -8097624, -45591616,
+-76592688, -94264872, -89115736, -41623600, 34422016, 69206416, 8408472, -98491656, -133276056, -44265008,
+95329480, 179870544, 181108576, 141069280, 94194536, 38961260, -29467234, -99621768, -160425088, -213080304,
+-260522512, -299208896, -325018432, -338040224, -339448448, -329772960, -311046368, -286593504, -258777152, -229226704,
+-199843216, -171641920, -144170784, -117346560, -92145304, -68815040, -46365784, -24428700, -3939559, 14218489,
+29699162, 41950556, 50583976, 56514252, 61536680, 66855996, 72790032, 79448304, 86790016, 94313184,
+101418136, 107935752, 113958904, 119470424, 124494456, 129352064, 134420672, 139683072, 144722688, 149181392,
+153040960, 156255200, 158280816, 158397856, 156460288, 152775744, 147223424, 139280960, 129104568, 117684792,
+105569760, 92379912, 78087336, 63820528, 50685444, 38562900, 26798448, 15387794, 4635344, -5815386,
+-16722455, -28219546, -39760124, -51000052, -62167504, -73465416, -84478784, -94344864, -102413496, -108639048,
+-113280296, -116241680, -116895592, -114715896, -109939888, -103384160, -95636040, -86646136, -76100912, -64054068,
+-51193864, -38566120, -26919782, -16155519, -5476620, 5771363, 17424682, 28651190, 38631620, 47049220,
+54205708, 60852172, 67741832, 75123808, 82692080, 90047208, 97074848, 103923176, 110883704, 118351584,
+126650536, 135782704, 145463568, 155364000, 165216112, 174804640, 184064048, 193087232, 201897824, 210312208,
+218072128, 224942464, 230699872, 235267040, 238810912, 241544128, 243650816, 245502480, 247508224, 249758784,
+252559648, 256762272, 261317616, 260416752, 246926256, 221287984, 194087424, 176352432, 169659792, },
{
11786464,
-25789668, 33872260, 16652125, -20252382, -45563160, -35004520, -2744484, 12291660, -8097624, -45591616,
--76592688, -94264872, -89115736, -41623600, 34422016, 69206416, 8408472, -98491656, -133276056, -44265008,
-95329480, 179870544, 181108576, 141069280, 94194536, 38961260, -29467234, -99621768, -160425088, -213080304,
--260522512, -299208896, -325018432, -338040224, -339448448, -329772960, -311046368, -286593504, -258777152, -229226704,
--199843216, -171641920, -144170784, -117346560, -92145304, -68815040, -46365784, -24428700, -3939559, 14218489,
-29699162, 41950556, 50583976, 56514252, 61536680, 66855996, 72790032, 79448304, 86790016, 94313184,
-101418136, 107935752, 113958904, 119470424, 124494456, 129352064, 134420672, 139683072, 144722688, 149181392,
-153040960, 156255200, 158280816, 158397856, 156460288, 152775744, 147223424, 139280960, 129104568, 117684792,
-105569760, 92379912, 78087336, 63820528, 50685444, 38562900, 26798448, 15387794, 4635344, -5815386,
--16722455, -28219546, -39760124, -51000052, -62167504, -73465416, -84478784, -94344864, -102413496, -108639048,
--113280296, -116241680, -116895592, -114715896, -109939888, -103384160, -95636040, -86646136, -76100912, -64054068,
--51193864, -38566120, -26919782, -16155519, -5476620, 5771363, 17424682, 28651190, 38631620, 47049220,
-54205708, 60852172, 67741832, 75123808, 82692080, 90047208, 97074848, 103923176, 110883704, 118351584,
-126650536, 135782704, 145463568, 155364000, 165216112, 174804640, 184064048, 193087232, 201897824, 210312208,
-218072128, 224942464, 230699872, 235267040, 238810912, 241544128, 243650816, 245502480, 247508224, 249758784,
-252559648, 256762272, 261317616, 260416752, 246926256, 221287984, 194087424, 176352432, 169659792, },
+25789668, 33872260, 16652125, -20252382, -45563160, -35004520, -2744484, 12291660, -8097624, -45591616,
+-76592688, -94264872, -89115736, -41623600, 34422016, 69206416, 8408472, -98491656, -133276056, -44265008,
+95329480, 179870544, 181108576, 141069280, 94194536, 38961260, -29467234, -99621768, -160425088, -213080304,
+-260522512, -299208896, -325018432, -338040224, -339448448, -329772960, -311046368, -286593504, -258777152, -229226704,
+-199843216, -171641920, -144170784, -117346560, -92145304, -68815040, -46365784, -24428700, -3939559, 14218489,
+29699162, 41950556, 50583976, 56514252, 61536680, 66855996, 72790032, 79448304, 86790016, 94313184,
+101418136, 107935752, 113958904, 119470424, 124494456, 129352064, 134420672, 139683072, 144722688, 149181392,
+153040960, 156255200, 158280816, 158397856, 156460288, 152775744, 147223424, 139280960, 129104568, 117684792,
+105569760, 92379912, 78087336, 63820528, 50685444, 38562900, 26798448, 15387794, 4635344, -5815386,
+-16722455, -28219546, -39760124, -51000052, -62167504, -73465416, -84478784, -94344864, -102413496, -108639048,
+-113280296, -116241680, -116895592, -114715896, -109939888, -103384160, -95636040, -86646136, -76100912, -64054068,
+-51193864, -38566120, -26919782, -16155519, -5476620, 5771363, 17424682, 28651190, 38631620, 47049220,
+54205708, 60852172, 67741832, 75123808, 82692080, 90047208, 97074848, 103923176, 110883704, 118351584,
+126650536, 135782704, 145463568, 155364000, 165216112, 174804640, 184064048, 193087232, 201897824, 210312208,
+218072128, 224942464, 230699872, 235267040, 238810912, 241544128, 243650816, 245502480, 247508224, 249758784,
+252559648, 256762272, 261317616, 260416752, 246926256, 221287984, 194087424, 176352432, 169659792, },
},
{
{
-4028143,
--9701794, -11829414, -3768297, 8409009, 13034689, 10660109, 15154792, 31817654, 42967928, 22381074,
--38646652, -116118736, -155936848, -106882408, 17986786, 117991344, 88319024, -55631100, -175194944, -155151936,
--22438520, 107107896, 163734896, 163645776, 141754320, 103114648, 44587128, -20019380, -74875240, -119631480,
--159479648, -192540704, -215611648, -231079440, -241096384, -242445536, -231967968, -211899728, -187148368, -161327568,
--136807056, -115175992, -96413960, -79535816, -64121716, -49940268, -36028332, -21686364, -7558069, 5389110,
-17023102, 27420682, 36199596, 43281996, 49421116, 55405616, 61469572, 67748280, 74530568, 81856704,
-89521080, 97530120, 105970264, 114517784, 122714192, 130636264, 138667856, 146708560, 154226912, 161064496,
-167516080, 173520976, 178387712, 181562768, 183142768, 183258208, 181393648, 176939760, 170231568, 162338496,
-153725472, 143828784, 132326328, 120121648, 108309952, 96578784, 83629992, 69130720, 54300196, 40343164,
-27209692, 14343043, 1941862, -9128416, -18303004, -25732760, -31920196, -37209448, -41509248, -44444320,
--45890116, -46268608, -46170900, -45974404, -46022184, -46740520, -48153024, -49654652, -50677928, -51319492,
--52062520, -53265112, -55057724, -57225608, -59023588, -59653876, -59118616, -58188752, -57553636, -57443040,
--57839252, -58457188, -58693412, -58139900, -56941604, -55291260, -52981104, -49748068, -45523432, -40108016,
--33250026, -25235080, -16774532, -8288213, 44560, 7775502, 14513768, 20418812, 25611964, 29609504,
-32030256, 33180232, 33344516, 32455994, 30959734, 29850022, 29509110, 29776472, 31127776, 34277060,
-39178156, 46445776, 58442692, 75504448, 91873112, 99620696, 97023312, 89856088, 84774064, },
+-9701794, -11829414, -3768297, 8409009, 13034689, 10660109, 15154792, 31817654, 42967928, 22381074,
+-38646652, -116118736, -155936848, -106882408, 17986786, 117991344, 88319024, -55631100, -175194944, -155151936,
+-22438520, 107107896, 163734896, 163645776, 141754320, 103114648, 44587128, -20019380, -74875240, -119631480,
+-159479648, -192540704, -215611648, -231079440, -241096384, -242445536, -231967968, -211899728, -187148368, -161327568,
+-136807056, -115175992, -96413960, -79535816, -64121716, -49940268, -36028332, -21686364, -7558069, 5389110,
+17023102, 27420682, 36199596, 43281996, 49421116, 55405616, 61469572, 67748280, 74530568, 81856704,
+89521080, 97530120, 105970264, 114517784, 122714192, 130636264, 138667856, 146708560, 154226912, 161064496,
+167516080, 173520976, 178387712, 181562768, 183142768, 183258208, 181393648, 176939760, 170231568, 162338496,
+153725472, 143828784, 132326328, 120121648, 108309952, 96578784, 83629992, 69130720, 54300196, 40343164,
+27209692, 14343043, 1941862, -9128416, -18303004, -25732760, -31920196, -37209448, -41509248, -44444320,
+-45890116, -46268608, -46170900, -45974404, -46022184, -46740520, -48153024, -49654652, -50677928, -51319492,
+-52062520, -53265112, -55057724, -57225608, -59023588, -59653876, -59118616, -58188752, -57553636, -57443040,
+-57839252, -58457188, -58693412, -58139900, -56941604, -55291260, -52981104, -49748068, -45523432, -40108016,
+-33250026, -25235080, -16774532, -8288213, 44560, 7775502, 14513768, 20418812, 25611964, 29609504,
+32030256, 33180232, 33344516, 32455994, 30959734, 29850022, 29509110, 29776472, 31127776, 34277060,
+39178156, 46445776, 58442692, 75504448, 91873112, 99620696, 97023312, 89856088, 84774064, },
{
4028143,
-9701794, 11829414, 3768297, -8409009, -13034689, -10660109, -15154792, -31817654, -42967928, -22381074,
-38646652, 116118736, 155936848, 106882408, -17986786, -117991344, -88319024, 55631100, 175194944, 155151936,
-22438520, -107107896, -163734896, -163645776, -141754320, -103114648, -44587128, 20019380, 74875240, 119631480,
-159479648, 192540704, 215611648, 231079440, 241096384, 242445536, 231967968, 211899728, 187148368, 161327568,
-136807056, 115175992, 96413960, 79535816, 64121716, 49940268, 36028332, 21686364, 7558069, -5389110,
--17023102, -27420682, -36199596, -43281996, -49421116, -55405616, -61469572, -67748280, -74530568, -81856704,
--89521080, -97530120, -105970264, -114517784, -122714192, -130636264, -138667856, -146708560, -154226912, -161064496,
--167516080, -173520976, -178387712, -181562768, -183142768, -183258208, -181393648, -176939760, -170231568, -162338496,
--153725472, -143828784, -132326328, -120121648, -108309952, -96578784, -83629992, -69130720, -54300196, -40343164,
--27209692, -14343043, -1941862, 9128416, 18303004, 25732760, 31920196, 37209448, 41509248, 44444320,
-45890116, 46268608, 46170900, 45974404, 46022184, 46740520, 48153024, 49654652, 50677928, 51319492,
-52062520, 53265112, 55057724, 57225608, 59023588, 59653876, 59118616, 58188752, 57553636, 57443040,
-57839252, 58457188, 58693412, 58139900, 56941604, 55291260, 52981104, 49748068, 45523432, 40108016,
-33250026, 25235080, 16774532, 8288213, -44560, -7775502, -14513768, -20418812, -25611964, -29609504,
--32030256, -33180232, -33344516, -32455994, -30959734, -29850022, -29509110, -29776472, -31127776, -34277060,
--39178156, -46445776, -58442692, -75504448, -91873112, -99620696, -97023312, -89856088, -84774064, },
+9701794, 11829414, 3768297, -8409009, -13034689, -10660109, -15154792, -31817654, -42967928, -22381074,
+38646652, 116118736, 155936848, 106882408, -17986786, -117991344, -88319024, 55631100, 175194944, 155151936,
+22438520, -107107896, -163734896, -163645776, -141754320, -103114648, -44587128, 20019380, 74875240, 119631480,
+159479648, 192540704, 215611648, 231079440, 241096384, 242445536, 231967968, 211899728, 187148368, 161327568,
+136807056, 115175992, 96413960, 79535816, 64121716, 49940268, 36028332, 21686364, 7558069, -5389110,
+-17023102, -27420682, -36199596, -43281996, -49421116, -55405616, -61469572, -67748280, -74530568, -81856704,
+-89521080, -97530120, -105970264, -114517784, -122714192, -130636264, -138667856, -146708560, -154226912, -161064496,
+-167516080, -173520976, -178387712, -181562768, -183142768, -183258208, -181393648, -176939760, -170231568, -162338496,
+-153725472, -143828784, -132326328, -120121648, -108309952, -96578784, -83629992, -69130720, -54300196, -40343164,
+-27209692, -14343043, -1941862, 9128416, 18303004, 25732760, 31920196, 37209448, 41509248, 44444320,
+45890116, 46268608, 46170900, 45974404, 46022184, 46740520, 48153024, 49654652, 50677928, 51319492,
+52062520, 53265112, 55057724, 57225608, 59023588, 59653876, 59118616, 58188752, 57553636, 57443040,
+57839252, 58457188, 58693412, 58139900, 56941604, 55291260, 52981104, 49748068, 45523432, 40108016,
+33250026, 25235080, 16774532, 8288213, -44560, -7775502, -14513768, -20418812, -25611964, -29609504,
+-32030256, -33180232, -33344516, -32455994, -30959734, -29850022, -29509110, -29776472, -31127776, -34277060,
+-39178156, -46445776, -58442692, -75504448, -91873112, -99620696, -97023312, -89856088, -84774064, },
},
{
{
17964774,
--6148246, -9459665, 17413408, 24617678, -15374372, -48695264, -7977365, 84730040, 133488656, 83583824,
--20476256, -94089848, -92138320, -26839250, 51866024, 81462104, 32069448, -51904144, -84628032, -33337000,
-45020384, 77433432, 55789476, 22835804, 6847789, 3155727, 4340602, 14636175, 35163436, 57389352,
-74107512, 84549656, 88887568, 86885576, 80854904, 73137928, 62209380, 45836428, 25757992, 5853504,
--11676942, -25855166, -35569308, -41002980, -44304736, -47410532, -50720880, -54160076, -57655640, -60502132,
--61879740, -61896920, -60864520, -58007828, -52034604, -42496552, -29708288, -13909252, 4695473, 25484188,
-47616156, 70463768, 93617936, 116656680, 138971184, 159720176, 178019952, 193147360, 204373872, 210771232,
-211526608, 206346864, 195362496, 178964848, 157959776, 133424232, 106186088, 76969032, 47055660, 17911088,
--10073309, -37474128, -64185600, -88910120, -110740360, -130227168, -148283744, -164888624, -179540368, -192255616,
--203338240, -212553104, -219211376, -222908800, -223648608, -221320208, -215513936, -206016704, -193214480, -177784272,
--160050880, -139891920, -117452320, -93894968, -71205192, -50973744, -33303176, -17053168, -1281511, 13631689,
-26313118, 35674000, 41749768, 45529876, 48215304, 50524384, 52427056, 53514220, 53673132, 53345640,
-53175452, 53623740, 54891828, 56893284, 59245852, 61529164, 63567664, 65269008, 66320200, 66337916,
-65197068, 62964220, 59689844, 55530168, 50836308, 45907296, 40879500, 35956928, 31396748, 27166206,
-23024246, 18983756, 15240155, 11680164, 7983271, 4147328, 373662, -3414499, -7357279, -11221139,
--14868103, -18824304, -23437100, -27577986, -29235842, -27671400, -24319716, -21318608, -19778862, },
+-6148246, -9459665, 17413408, 24617678, -15374372, -48695264, -7977365, 84730040, 133488656, 83583824,
+-20476256, -94089848, -92138320, -26839250, 51866024, 81462104, 32069448, -51904144, -84628032, -33337000,
+45020384, 77433432, 55789476, 22835804, 6847789, 3155727, 4340602, 14636175, 35163436, 57389352,
+74107512, 84549656, 88887568, 86885576, 80854904, 73137928, 62209380, 45836428, 25757992, 5853504,
+-11676942, -25855166, -35569308, -41002980, -44304736, -47410532, -50720880, -54160076, -57655640, -60502132,
+-61879740, -61896920, -60864520, -58007828, -52034604, -42496552, -29708288, -13909252, 4695473, 25484188,
+47616156, 70463768, 93617936, 116656680, 138971184, 159720176, 178019952, 193147360, 204373872, 210771232,
+211526608, 206346864, 195362496, 178964848, 157959776, 133424232, 106186088, 76969032, 47055660, 17911088,
+-10073309, -37474128, -64185600, -88910120, -110740360, -130227168, -148283744, -164888624, -179540368, -192255616,
+-203338240, -212553104, -219211376, -222908800, -223648608, -221320208, -215513936, -206016704, -193214480, -177784272,
+-160050880, -139891920, -117452320, -93894968, -71205192, -50973744, -33303176, -17053168, -1281511, 13631689,
+26313118, 35674000, 41749768, 45529876, 48215304, 50524384, 52427056, 53514220, 53673132, 53345640,
+53175452, 53623740, 54891828, 56893284, 59245852, 61529164, 63567664, 65269008, 66320200, 66337916,
+65197068, 62964220, 59689844, 55530168, 50836308, 45907296, 40879500, 35956928, 31396748, 27166206,
+23024246, 18983756, 15240155, 11680164, 7983271, 4147328, 373662, -3414499, -7357279, -11221139,
+-14868103, -18824304, -23437100, -27577986, -29235842, -27671400, -24319716, -21318608, -19778862, },
{
-17964774,
-6148246, 9459665, -17413408, -24617678, 15374372, 48695264, 7977365, -84730040, -133488656, -83583824,
-20476256, 94089848, 92138320, 26839250, -51866024, -81462104, -32069448, 51904144, 84628032, 33337000,
--45020384, -77433432, -55789476, -22835804, -6847789, -3155727, -4340602, -14636175, -35163436, -57389352,
--74107512, -84549656, -88887568, -86885576, -80854904, -73137928, -62209380, -45836428, -25757992, -5853504,
-11676942, 25855166, 35569308, 41002980, 44304736, 47410532, 50720880, 54160076, 57655640, 60502132,
-61879740, 61896920, 60864520, 58007828, 52034604, 42496552, 29708288, 13909252, -4695473, -25484188,
--47616156, -70463768, -93617936, -116656680, -138971184, -159720176, -178019952, -193147360, -204373872, -210771232,
--211526608, -206346864, -195362496, -178964848, -157959776, -133424232, -106186088, -76969032, -47055660, -17911088,
-10073309, 37474128, 64185600, 88910120, 110740360, 130227168, 148283744, 164888624, 179540368, 192255616,
-203338240, 212553104, 219211376, 222908800, 223648608, 221320208, 215513936, 206016704, 193214480, 177784272,
-160050880, 139891920, 117452320, 93894968, 71205192, 50973744, 33303176, 17053168, 1281511, -13631689,
--26313118, -35674000, -41749768, -45529876, -48215304, -50524384, -52427056, -53514220, -53673132, -53345640,
--53175452, -53623740, -54891828, -56893284, -59245852, -61529164, -63567664, -65269008, -66320200, -66337916,
--65197068, -62964220, -59689844, -55530168, -50836308, -45907296, -40879500, -35956928, -31396748, -27166206,
--23024246, -18983756, -15240155, -11680164, -7983271, -4147328, -373662, 3414499, 7357279, 11221139,
-14868103, 18824304, 23437100, 27577986, 29235842, 27671400, 24319716, 21318608, 19778862, },
+6148246, 9459665, -17413408, -24617678, 15374372, 48695264, 7977365, -84730040, -133488656, -83583824,
+20476256, 94089848, 92138320, 26839250, -51866024, -81462104, -32069448, 51904144, 84628032, 33337000,
+-45020384, -77433432, -55789476, -22835804, -6847789, -3155727, -4340602, -14636175, -35163436, -57389352,
+-74107512, -84549656, -88887568, -86885576, -80854904, -73137928, -62209380, -45836428, -25757992, -5853504,
+11676942, 25855166, 35569308, 41002980, 44304736, 47410532, 50720880, 54160076, 57655640, 60502132,
+61879740, 61896920, 60864520, 58007828, 52034604, 42496552, 29708288, 13909252, -4695473, -25484188,
+-47616156, -70463768, -93617936, -116656680, -138971184, -159720176, -178019952, -193147360, -204373872, -210771232,
+-211526608, -206346864, -195362496, -178964848, -157959776, -133424232, -106186088, -76969032, -47055660, -17911088,
+10073309, 37474128, 64185600, 88910120, 110740360, 130227168, 148283744, 164888624, 179540368, 192255616,
+203338240, 212553104, 219211376, 222908800, 223648608, 221320208, 215513936, 206016704, 193214480, 177784272,
+160050880, 139891920, 117452320, 93894968, 71205192, 50973744, 33303176, 17053168, 1281511, -13631689,
+-26313118, -35674000, -41749768, -45529876, -48215304, -50524384, -52427056, -53514220, -53673132, -53345640,
+-53175452, -53623740, -54891828, -56893284, -59245852, -61529164, -63567664, -65269008, -66320200, -66337916,
+-65197068, -62964220, -59689844, -55530168, -50836308, -45907296, -40879500, -35956928, -31396748, -27166206,
+-23024246, -18983756, -15240155, -11680164, -7983271, -4147328, -373662, 3414499, 7357279, 11221139,
+14868103, 18824304, 23437100, 27577986, 29235842, 27671400, 24319716, 21318608, 19778862, },
},
{
{
4097399,
-12105365, 9900973, -6716792, -20841328, -26265872, -41604812, -77798504, -110680232, -102088688, -33487860,
-87101936, 218155888, 271257248, 162964480, -65653408, -226745280, -165586016, 49815716, 197829952, 160600640,
-30589830, -48527760, -51201916, -36432060, -27878096, -3379066, 36307508, 59490664, 54769960, 42598024,
-38815768, 39741868, 40969156, 45441828, 52869436, 58176404, 60235304, 61848064, 63494648, 63940252,
-63437740, 61800284, 57372172, 50569480, 44151728, 38767448, 32506996, 24999394, 17683454, 10433012,
-1802813, -8124468, -18282066, -28783260, -40001176, -50993608, -60793116, -69653096, -77717968, -84222696,
--88771608, -91616488, -92343408, -89996744, -84433688, -76007496, -64386928, -49173080, -31016106, -10837276,
-11263015, 35285840, 60425896, 85688352, 110569104, 134624144, 157159840, 177573808, 195347456, 209883776,
-220957808, 228885248, 233705280, 234884784, 232269152, 226452144, 217828928, 206229296, 191663984, 174346688,
-153916592, 129858872, 102837088, 74533792, 46139760, 17920214, -9808095, -36027796, -59157804, -77400680,
--89521080, -95811056, -97738424, -96288336, -91280400, -82486456, -70603360, -56943212, -42917996, -29930016,
--19014358, -10431939, -4008815, 282931, 2376728, 2290828, -146029, -5231270, -12693776, -21539260,
--30823906, -40108552, -49162344, -57876832, -66484484, -75242456, -83971440, -92451320, -101007432, -110116520,
--119754960, -129643048, -139730848, -150000128, -160265632, -170581600, -181351776, -192741488, -204456544, -216138320,
--227413680, -237657184, -246387248, -253706400, -259749952, -264183440, -266929536, -268643776, -269709440, -269844736,
--269494176, -269504352, -267268832, -255428688, -228801504, -192924032, -161751152, -144927760, -140091632, },
+12105365, 9900973, -6716792, -20841328, -26265872, -41604812, -77798504, -110680232, -102088688, -33487860,
+87101936, 218155888, 271257248, 162964480, -65653408, -226745280, -165586016, 49815716, 197829952, 160600640,
+30589830, -48527760, -51201916, -36432060, -27878096, -3379066, 36307508, 59490664, 54769960, 42598024,
+38815768, 39741868, 40969156, 45441828, 52869436, 58176404, 60235304, 61848064, 63494648, 63940252,
+63437740, 61800284, 57372172, 50569480, 44151728, 38767448, 32506996, 24999394, 17683454, 10433012,
+1802813, -8124468, -18282066, -28783260, -40001176, -50993608, -60793116, -69653096, -77717968, -84222696,
+-88771608, -91616488, -92343408, -89996744, -84433688, -76007496, -64386928, -49173080, -31016106, -10837276,
+11263015, 35285840, 60425896, 85688352, 110569104, 134624144, 157159840, 177573808, 195347456, 209883776,
+220957808, 228885248, 233705280, 234884784, 232269152, 226452144, 217828928, 206229296, 191663984, 174346688,
+153916592, 129858872, 102837088, 74533792, 46139760, 17920214, -9808095, -36027796, -59157804, -77400680,
+-89521080, -95811056, -97738424, -96288336, -91280400, -82486456, -70603360, -56943212, -42917996, -29930016,
+-19014358, -10431939, -4008815, 282931, 2376728, 2290828, -146029, -5231270, -12693776, -21539260,
+-30823906, -40108552, -49162344, -57876832, -66484484, -75242456, -83971440, -92451320, -101007432, -110116520,
+-119754960, -129643048, -139730848, -150000128, -160265632, -170581600, -181351776, -192741488, -204456544, -216138320,
+-227413680, -237657184, -246387248, -253706400, -259749952, -264183440, -266929536, -268643776, -269709440, -269844736,
+-269494176, -269504352, -267268832, -255428688, -228801504, -192924032, -161751152, -144927760, -140091632, },
{
4097399,
-12105365, 9900973, -6716792, -20841328, -26265872, -41604812, -77798504, -110680232, -102088688, -33487860,
-87101936, 218155888, 271257248, 162964480, -65653408, -226745280, -165586016, 49815716, 197829952, 160600640,
-30589830, -48527760, -51201916, -36432060, -27878096, -3379066, 36307508, 59490664, 54769960, 42598024,
-38815768, 39741868, 40969156, 45441828, 52869436, 58176404, 60235304, 61848064, 63494648, 63940252,
-63437740, 61800284, 57372172, 50569480, 44151728, 38767448, 32506996, 24999394, 17683454, 10433012,
-1802813, -8124468, -18282066, -28783260, -40001176, -50993608, -60793116, -69653096, -77717968, -84222696,
--88771608, -91616488, -92343408, -89996744, -84433688, -76007496, -64386928, -49173080, -31016106, -10837276,
-11263015, 35285840, 60425896, 85688352, 110569104, 134624144, 157159840, 177573808, 195347456, 209883776,
-220957808, 228885248, 233705280, 234884784, 232269152, 226452144, 217828928, 206229296, 191663984, 174346688,
-153916592, 129858872, 102837088, 74533792, 46139760, 17920214, -9808095, -36027796, -59157804, -77400680,
--89521080, -95811056, -97738424, -96288336, -91280400, -82486456, -70603360, -56943212, -42917996, -29930016,
--19014358, -10431939, -4008815, 282931, 2376728, 2290828, -146029, -5231270, -12693776, -21539260,
--30823906, -40108552, -49162344, -57876832, -66484484, -75242456, -83971440, -92451320, -101007432, -110116520,
--119754960, -129643048, -139730848, -150000128, -160265632, -170581600, -181351776, -192741488, -204456544, -216138320,
--227413680, -237657184, -246387248, -253706400, -259749952, -264183440, -266929536, -268643776, -269709440, -269844736,
--269494176, -269504352, -267268832, -255428688, -228801504, -192924032, -161751152, -144927760, -140091632, },
+12105365, 9900973, -6716792, -20841328, -26265872, -41604812, -77798504, -110680232, -102088688, -33487860,
+87101936, 218155888, 271257248, 162964480, -65653408, -226745280, -165586016, 49815716, 197829952, 160600640,
+30589830, -48527760, -51201916, -36432060, -27878096, -3379066, 36307508, 59490664, 54769960, 42598024,
+38815768, 39741868, 40969156, 45441828, 52869436, 58176404, 60235304, 61848064, 63494648, 63940252,
+63437740, 61800284, 57372172, 50569480, 44151728, 38767448, 32506996, 24999394, 17683454, 10433012,
+1802813, -8124468, -18282066, -28783260, -40001176, -50993608, -60793116, -69653096, -77717968, -84222696,
+-88771608, -91616488, -92343408, -89996744, -84433688, -76007496, -64386928, -49173080, -31016106, -10837276,
+11263015, 35285840, 60425896, 85688352, 110569104, 134624144, 157159840, 177573808, 195347456, 209883776,
+220957808, 228885248, 233705280, 234884784, 232269152, 226452144, 217828928, 206229296, 191663984, 174346688,
+153916592, 129858872, 102837088, 74533792, 46139760, 17920214, -9808095, -36027796, -59157804, -77400680,
+-89521080, -95811056, -97738424, -96288336, -91280400, -82486456, -70603360, -56943212, -42917996, -29930016,
+-19014358, -10431939, -4008815, 282931, 2376728, 2290828, -146029, -5231270, -12693776, -21539260,
+-30823906, -40108552, -49162344, -57876832, -66484484, -75242456, -83971440, -92451320, -101007432, -110116520,
+-119754960, -129643048, -139730848, -150000128, -160265632, -170581600, -181351776, -192741488, -204456544, -216138320,
+-227413680, -237657184, -246387248, -253706400, -259749952, -264183440, -266929536, -268643776, -269709440, -269844736,
+-269494176, -269504352, -267268832, -255428688, -228801504, -192924032, -161751152, -144927760, -140091632, },
},
{
{
18727668,
--11437498, -53266720, -83454976, -81330040, -33879240, 45314588, 106220984, 99013488, 29327110, -43024836,
--68955160, -54369992, -31644246, -13194140, 5386963, 16087874, 3529390, -25078850, -41574208, -32392644,
--13325673, -3602404, -1616518, 5564667, 21217138, 37810744, 49380848, 55175836, 54176716, 44300440,
-27208080, 8718784, -6712497, -19377818, -32028108, -46491948, -62868120, -79971752, -95463168, -106619880,
--112135688, -112968912, -111066784, -107736568, -103542000, -98983960, -94433448, -89733144, -84549112, -78931296,
--73065448, -66820564, -60029684, -52891448, -45635640, -38110856, -30154966, -22127672, -14702210, -8305393,
--3034395, 1028645, 3723200, 5088463, 5648419, 6205691, 7199976, 8467528, 9920301, 12130061,
-15741592, 20657182, 26497800, 33588256, 42718280, 54120348, 67389648, 82216952, 98528160, 116023176,
-134091024, 152043984, 169242112, 185334288, 200375264, 214161568, 225654896, 234013984, 240021568, 245238336,
-249632096, 251240560, 248440768, 241481312, 231461152, 218694896, 202561392, 182544704, 159153776, 133785544,
-107536856, 80280456, 51447264, 21588116, -7601555, -34870304, -60346436, -84909352, -109207600, -133091912,
--155438080, -174749328, -190429184, -203171824, -213856624, -222637680, -229308304, -233832512, -236274208, -236900736,
--236457808, -235688480, -234648560, -233085184, -231158368, -229137040, -226815072, -223780688, -219724624, -214168544,
--206731808, -197954512, -188937216, -180019264, -170715280, -160727344, -149907776, -137711680, -124003224, -109887272,
--96534760, -83916144, -71652400, -59930364, -48608292, -36891620, -24775518, -13274670, -2723546, 7456600,
-17607756, 28748364, 43400644, 61654792, 77274512, 82553568, 77250352, 68650224, 63350232, },
+-11437498, -53266720, -83454976, -81330040, -33879240, 45314588, 106220984, 99013488, 29327110, -43024836,
+-68955160, -54369992, -31644246, -13194140, 5386963, 16087874, 3529390, -25078850, -41574208, -32392644,
+-13325673, -3602404, -1616518, 5564667, 21217138, 37810744, 49380848, 55175836, 54176716, 44300440,
+27208080, 8718784, -6712497, -19377818, -32028108, -46491948, -62868120, -79971752, -95463168, -106619880,
+-112135688, -112968912, -111066784, -107736568, -103542000, -98983960, -94433448, -89733144, -84549112, -78931296,
+-73065448, -66820564, -60029684, -52891448, -45635640, -38110856, -30154966, -22127672, -14702210, -8305393,
+-3034395, 1028645, 3723200, 5088463, 5648419, 6205691, 7199976, 8467528, 9920301, 12130061,
+15741592, 20657182, 26497800, 33588256, 42718280, 54120348, 67389648, 82216952, 98528160, 116023176,
+134091024, 152043984, 169242112, 185334288, 200375264, 214161568, 225654896, 234013984, 240021568, 245238336,
+249632096, 251240560, 248440768, 241481312, 231461152, 218694896, 202561392, 182544704, 159153776, 133785544,
+107536856, 80280456, 51447264, 21588116, -7601555, -34870304, -60346436, -84909352, -109207600, -133091912,
+-155438080, -174749328, -190429184, -203171824, -213856624, -222637680, -229308304, -233832512, -236274208, -236900736,
+-236457808, -235688480, -234648560, -233085184, -231158368, -229137040, -226815072, -223780688, -219724624, -214168544,
+-206731808, -197954512, -188937216, -180019264, -170715280, -160727344, -149907776, -137711680, -124003224, -109887272,
+-96534760, -83916144, -71652400, -59930364, -48608292, -36891620, -24775518, -13274670, -2723546, 7456600,
+17607756, 28748364, 43400644, 61654792, 77274512, 82553568, 77250352, 68650224, 63350232, },
{
18727668,
--11437498, -53266720, -83454976, -81330040, -33879240, 45314588, 106220984, 99013488, 29327110, -43024836,
--68955160, -54369992, -31644246, -13194140, 5386963, 16087874, 3529390, -25078850, -41574208, -32392644,
--13325673, -3602404, -1616518, 5564667, 21217138, 37810744, 49380848, 55175836, 54176716, 44300440,
-27208080, 8718784, -6712497, -19377818, -32028108, -46491948, -62868120, -79971752, -95463168, -106619880,
--112135688, -112968912, -111066784, -107736568, -103542000, -98983960, -94433448, -89733144, -84549112, -78931296,
--73065448, -66820564, -60029684, -52891448, -45635640, -38110856, -30154966, -22127672, -14702210, -8305393,
--3034395, 1028645, 3723200, 5088463, 5648419, 6205691, 7199976, 8467528, 9920301, 12130061,
-15741592, 20657182, 26497800, 33588256, 42718280, 54120348, 67389648, 82216952, 98528160, 116023176,
-134091024, 152043984, 169242112, 185334288, 200375264, 214161568, 225654896, 234013984, 240021568, 245238336,
-249632096, 251240560, 248440768, 241481312, 231461152, 218694896, 202561392, 182544704, 159153776, 133785544,
-107536856, 80280456, 51447264, 21588116, -7601555, -34870304, -60346436, -84909352, -109207600, -133091912,
--155438080, -174749328, -190429184, -203171824, -213856624, -222637680, -229308304, -233832512, -236274208, -236900736,
--236457808, -235688480, -234648560, -233085184, -231158368, -229137040, -226815072, -223780688, -219724624, -214168544,
--206731808, -197954512, -188937216, -180019264, -170715280, -160727344, -149907776, -137711680, -124003224, -109887272,
--96534760, -83916144, -71652400, -59930364, -48608292, -36891620, -24775518, -13274670, -2723546, 7456600,
-17607756, 28748364, 43400644, 61654792, 77274512, 82553568, 77250352, 68650224, 63350232, },
+-11437498, -53266720, -83454976, -81330040, -33879240, 45314588, 106220984, 99013488, 29327110, -43024836,
+-68955160, -54369992, -31644246, -13194140, 5386963, 16087874, 3529390, -25078850, -41574208, -32392644,
+-13325673, -3602404, -1616518, 5564667, 21217138, 37810744, 49380848, 55175836, 54176716, 44300440,
+27208080, 8718784, -6712497, -19377818, -32028108, -46491948, -62868120, -79971752, -95463168, -106619880,
+-112135688, -112968912, -111066784, -107736568, -103542000, -98983960, -94433448, -89733144, -84549112, -78931296,
+-73065448, -66820564, -60029684, -52891448, -45635640, -38110856, -30154966, -22127672, -14702210, -8305393,
+-3034395, 1028645, 3723200, 5088463, 5648419, 6205691, 7199976, 8467528, 9920301, 12130061,
+15741592, 20657182, 26497800, 33588256, 42718280, 54120348, 67389648, 82216952, 98528160, 116023176,
+134091024, 152043984, 169242112, 185334288, 200375264, 214161568, 225654896, 234013984, 240021568, 245238336,
+249632096, 251240560, 248440768, 241481312, 231461152, 218694896, 202561392, 182544704, 159153776, 133785544,
+107536856, 80280456, 51447264, 21588116, -7601555, -34870304, -60346436, -84909352, -109207600, -133091912,
+-155438080, -174749328, -190429184, -203171824, -213856624, -222637680, -229308304, -233832512, -236274208, -236900736,
+-236457808, -235688480, -234648560, -233085184, -231158368, -229137040, -226815072, -223780688, -219724624, -214168544,
+-206731808, -197954512, -188937216, -180019264, -170715280, -160727344, -149907776, -137711680, -124003224, -109887272,
+-96534760, -83916144, -71652400, -59930364, -48608292, -36891620, -24775518, -13274670, -2723546, 7456600,
+17607756, 28748364, 43400644, 61654792, 77274512, 82553568, 77250352, 68650224, 63350232, },
},
{
{
-22726820,
-28139552, 65842384, 53941568, 13258027, -44198436, -138545984, -254022624, -313942240, -261710608, -114174192,
-89050776, 307671040, 429789856, 296704384, -81071800, -409902560, -376489312, -16853452, 316269056, 363651136,
-201527376, 48773648, -14806900, -51604032, -102137008, -141103104, -155091264, -165697696, -180655456, -182950032,
--166900816, -145012048, -122601992, -94267552, -60898340, -29658896, -2320893, 22440668, 41754600, 53427244,
-61154428, 68311992, 73379520, 75195752, 75655312, 75098040, 71666896, 66141960, 61661772, 58882392,
-56165824, 53215720, 50490560, 46983720, 41840496, 35969816, 29886530, 22597434, 13982803, 5356898,
--3058554, -12309376, -22238804, -31666794, -40648108, -49917720, -58843200, -66265976, -72393824, -77924128,
--82560544, -85977728, -88859656, -91780232, -94406064, -96492344, -98289792, -99738264, -100664904, -101653824,
--103407784, -105657808, -107865960, -110244832, -112984480, -115367656, -116614808, -116716808, -115826144, -113860120,
--111085032, -108066208, -104995304, -102168144, -100880728, -102568112, -107256608, -113988432, -122389392, -132765496,
--145016352, -158311952, -171488384, -183303840, -192878384, -200196480, -205611888, -208824528, -209097792, -206349552,
--201248752, -194439072, -186380640, -177582400, -168258032, -158151968, -147309328, -136534864, -126621544, -117624656,
--109132432, -100621424, -91466696, -81385872, -70982928, -61176440, -52158084, -43499428, -34953516, -26438744,
--17656610, -8459475, 754304, 9605694, 18262200, 26974006, 35667020, 44361644, 53363360, 62696860,
-71919768, 80702432, 89022864, 96714608, 103426032, 109095928, 113979304, 118189448, 121602872, 124224416,
-126407864, 128414152, 129241472, 126000384, 115996328, 100630544, 85895584, 77125264, 74235288, },
+28139552, 65842384, 53941568, 13258027, -44198436, -138545984, -254022624, -313942240, -261710608, -114174192,
+89050776, 307671040, 429789856, 296704384, -81071800, -409902560, -376489312, -16853452, 316269056, 363651136,
+201527376, 48773648, -14806900, -51604032, -102137008, -141103104, -155091264, -165697696, -180655456, -182950032,
+-166900816, -145012048, -122601992, -94267552, -60898340, -29658896, -2320893, 22440668, 41754600, 53427244,
+61154428, 68311992, 73379520, 75195752, 75655312, 75098040, 71666896, 66141960, 61661772, 58882392,
+56165824, 53215720, 50490560, 46983720, 41840496, 35969816, 29886530, 22597434, 13982803, 5356898,
+-3058554, -12309376, -22238804, -31666794, -40648108, -49917720, -58843200, -66265976, -72393824, -77924128,
+-82560544, -85977728, -88859656, -91780232, -94406064, -96492344, -98289792, -99738264, -100664904, -101653824,
+-103407784, -105657808, -107865960, -110244832, -112984480, -115367656, -116614808, -116716808, -115826144, -113860120,
+-111085032, -108066208, -104995304, -102168144, -100880728, -102568112, -107256608, -113988432, -122389392, -132765496,
+-145016352, -158311952, -171488384, -183303840, -192878384, -200196480, -205611888, -208824528, -209097792, -206349552,
+-201248752, -194439072, -186380640, -177582400, -168258032, -158151968, -147309328, -136534864, -126621544, -117624656,
+-109132432, -100621424, -91466696, -81385872, -70982928, -61176440, -52158084, -43499428, -34953516, -26438744,
+-17656610, -8459475, 754304, 9605694, 18262200, 26974006, 35667020, 44361644, 53363360, 62696860,
+71919768, 80702432, 89022864, 96714608, 103426032, 109095928, 113979304, 118189448, 121602872, 124224416,
+126407864, 128414152, 129241472, 126000384, 115996328, 100630544, 85895584, 77125264, 74235288, },
{
-22726820,
-28139552, 65842384, 53941568, 13258027, -44198436, -138545984, -254022624, -313942240, -261710608, -114174192,
-89050776, 307671040, 429789856, 296704384, -81071800, -409902560, -376489312, -16853452, 316269056, 363651136,
-201527376, 48773648, -14806900, -51604032, -102137008, -141103104, -155091264, -165697696, -180655456, -182950032,
--166900816, -145012048, -122601992, -94267552, -60898340, -29658896, -2320893, 22440668, 41754600, 53427244,
-61154428, 68311992, 73379520, 75195752, 75655312, 75098040, 71666896, 66141960, 61661772, 58882392,
-56165824, 53215720, 50490560, 46983720, 41840496, 35969816, 29886530, 22597434, 13982803, 5356898,
--3058554, -12309376, -22238804, -31666794, -40648108, -49917720, -58843200, -66265976, -72393824, -77924128,
--82560544, -85977728, -88859656, -91780232, -94406064, -96492344, -98289792, -99738264, -100664904, -101653824,
--103407784, -105657808, -107865960, -110244832, -112984480, -115367656, -116614808, -116716808, -115826144, -113860120,
--111085032, -108066208, -104995304, -102168144, -100880728, -102568112, -107256608, -113988432, -122389392, -132765496,
--145016352, -158311952, -171488384, -183303840, -192878384, -200196480, -205611888, -208824528, -209097792, -206349552,
--201248752, -194439072, -186380640, -177582400, -168258032, -158151968, -147309328, -136534864, -126621544, -117624656,
--109132432, -100621424, -91466696, -81385872, -70982928, -61176440, -52158084, -43499428, -34953516, -26438744,
--17656610, -8459475, 754304, 9605694, 18262200, 26974006, 35667020, 44361644, 53363360, 62696860,
-71919768, 80702432, 89022864, 96714608, 103426032, 109095928, 113979304, 118189448, 121602872, 124224416,
-126407864, 128414152, 129241472, 126000384, 115996328, 100630544, 85895584, 77125264, 74235288, },
+28139552, 65842384, 53941568, 13258027, -44198436, -138545984, -254022624, -313942240, -261710608, -114174192,
+89050776, 307671040, 429789856, 296704384, -81071800, -409902560, -376489312, -16853452, 316269056, 363651136,
+201527376, 48773648, -14806900, -51604032, -102137008, -141103104, -155091264, -165697696, -180655456, -182950032,
+-166900816, -145012048, -122601992, -94267552, -60898340, -29658896, -2320893, 22440668, 41754600, 53427244,
+61154428, 68311992, 73379520, 75195752, 75655312, 75098040, 71666896, 66141960, 61661772, 58882392,
+56165824, 53215720, 50490560, 46983720, 41840496, 35969816, 29886530, 22597434, 13982803, 5356898,
+-3058554, -12309376, -22238804, -31666794, -40648108, -49917720, -58843200, -66265976, -72393824, -77924128,
+-82560544, -85977728, -88859656, -91780232, -94406064, -96492344, -98289792, -99738264, -100664904, -101653824,
+-103407784, -105657808, -107865960, -110244832, -112984480, -115367656, -116614808, -116716808, -115826144, -113860120,
+-111085032, -108066208, -104995304, -102168144, -100880728, -102568112, -107256608, -113988432, -122389392, -132765496,
+-145016352, -158311952, -171488384, -183303840, -192878384, -200196480, -205611888, -208824528, -209097792, -206349552,
+-201248752, -194439072, -186380640, -177582400, -168258032, -158151968, -147309328, -136534864, -126621544, -117624656,
+-109132432, -100621424, -91466696, -81385872, -70982928, -61176440, -52158084, -43499428, -34953516, -26438744,
+-17656610, -8459475, 754304, 9605694, 18262200, 26974006, 35667020, 44361644, 53363360, 62696860,
+71919768, 80702432, 89022864, 96714608, 103426032, 109095928, 113979304, 118189448, 121602872, 124224416,
+126407864, 128414152, 129241472, 126000384, 115996328, 100630544, 85895584, 77125264, 74235288, },
},
{
{
-20780662,
--21712670, -17408040, -4653060, 21265456, 64972656, 107825688, 112669344, 68903624, -6364068, -119698592,
--273759616, -361284064, -213446992, 145631600, 404616512, 284796608, -98422936, -355922336, -287288224, -61032560,
-72851232, 74783968, 54613732, 64385316, 67689224, 44145820, 18436684, 4584341, -10081362, -30307974,
--44483512, -47537772, -45814416, -43122008, -38670812, -33785824, -29936996, -25370908, -19680078, -15792595,
--14354318, -12443594, -9336185, -7518877, -7590818, -7566659, -6946036, -6852084, -6891275, -5601711,
--2967286, 188979, 3899294, 8224863, 12344273, 15734613, 18702972, 21189222, 22669912, 23339390,
-23837606, 24029268, 23412404, 22183506, 20727512, 18799072, 16165720, 13209709, 10209137, 6907918,
-3212099, -631897, -4758287, -9677635, -15535970, -22126060, -29405494, -37317360, -45499808, -53783192,
--62446676, -71462352, -80083424, -87622168, -94094680, -99766184, -104549168, -108045272, -109799768, -109517368,
--107325864, -103726144, -99096704, -93572304, -87521768, -81644640, -76410152, -71863392, -68115496, -65553548,
--64393908, -64374580, -64973192, -65784940, -66783520, -68330784, -70728984, -73718280, -76666240, -79216912,
--81465328, -83594560, -85681912, -87680680, -89303648, -90122912, -90061168, -89528056, -88929448, -88313656,
--87506200, -86191400, -83928496, -80525808, -76309760, -71669048, -66557496, -60737280, -54133232, -46667504,
--38247220, -29160680, -19973746, -10924249, -1928440, 6921877, 15493558, 23987392, 32513440, 40642740,
-47986060, 54708220, 61007864, 66839892, 72506568, 78620984, 85303960, 92386896, 100205344, 109109352,
-119048440, 130876240, 145829168, 161037648, 168272528, 161819328, 146276384, 132125544, 125181656, },
+-21712670, -17408040, -4653060, 21265456, 64972656, 107825688, 112669344, 68903624, -6364068, -119698592,
+-273759616, -361284064, -213446992, 145631600, 404616512, 284796608, -98422936, -355922336, -287288224, -61032560,
+72851232, 74783968, 54613732, 64385316, 67689224, 44145820, 18436684, 4584341, -10081362, -30307974,
+-44483512, -47537772, -45814416, -43122008, -38670812, -33785824, -29936996, -25370908, -19680078, -15792595,
+-14354318, -12443594, -9336185, -7518877, -7590818, -7566659, -6946036, -6852084, -6891275, -5601711,
+-2967286, 188979, 3899294, 8224863, 12344273, 15734613, 18702972, 21189222, 22669912, 23339390,
+23837606, 24029268, 23412404, 22183506, 20727512, 18799072, 16165720, 13209709, 10209137, 6907918,
+3212099, -631897, -4758287, -9677635, -15535970, -22126060, -29405494, -37317360, -45499808, -53783192,
+-62446676, -71462352, -80083424, -87622168, -94094680, -99766184, -104549168, -108045272, -109799768, -109517368,
+-107325864, -103726144, -99096704, -93572304, -87521768, -81644640, -76410152, -71863392, -68115496, -65553548,
+-64393908, -64374580, -64973192, -65784940, -66783520, -68330784, -70728984, -73718280, -76666240, -79216912,
+-81465328, -83594560, -85681912, -87680680, -89303648, -90122912, -90061168, -89528056, -88929448, -88313656,
+-87506200, -86191400, -83928496, -80525808, -76309760, -71669048, -66557496, -60737280, -54133232, -46667504,
+-38247220, -29160680, -19973746, -10924249, -1928440, 6921877, 15493558, 23987392, 32513440, 40642740,
+47986060, 54708220, 61007864, 66839892, 72506568, 78620984, 85303960, 92386896, 100205344, 109109352,
+119048440, 130876240, 145829168, 161037648, 168272528, 161819328, 146276384, 132125544, 125181656, },
{
20780662,
-21712670, 17408040, 4653060, -21265456, -64972656, -107825688, -112669344, -68903624, 6364068, 119698592,
-273759616, 361284064, 213446992, -145631600, -404616512, -284796608, 98422936, 355922336, 287288224, 61032560,
--72851232, -74783968, -54613732, -64385316, -67689224, -44145820, -18436684, -4584341, 10081362, 30307974,
-44483512, 47537772, 45814416, 43122008, 38670812, 33785824, 29936996, 25370908, 19680078, 15792595,
-14354318, 12443594, 9336185, 7518877, 7590818, 7566659, 6946036, 6852084, 6891275, 5601711,
-2967286, -188979, -3899294, -8224863, -12344273, -15734613, -18702972, -21189222, -22669912, -23339390,
--23837606, -24029268, -23412404, -22183506, -20727512, -18799072, -16165720, -13209709, -10209137, -6907918,
--3212099, 631897, 4758287, 9677635, 15535970, 22126060, 29405494, 37317360, 45499808, 53783192,
-62446676, 71462352, 80083424, 87622168, 94094680, 99766184, 104549168, 108045272, 109799768, 109517368,
-107325864, 103726144, 99096704, 93572304, 87521768, 81644640, 76410152, 71863392, 68115496, 65553548,
-64393908, 64374580, 64973192, 65784940, 66783520, 68330784, 70728984, 73718280, 76666240, 79216912,
-81465328, 83594560, 85681912, 87680680, 89303648, 90122912, 90061168, 89528056, 88929448, 88313656,
-87506200, 86191400, 83928496, 80525808, 76309760, 71669048, 66557496, 60737280, 54133232, 46667504,
-38247220, 29160680, 19973746, 10924249, 1928440, -6921877, -15493558, -23987392, -32513440, -40642740,
--47986060, -54708220, -61007864, -66839892, -72506568, -78620984, -85303960, -92386896, -100205344, -109109352,
--119048440, -130876240, -145829168, -161037648, -168272528, -161819328, -146276384, -132125544, -125181656, },
+21712670, 17408040, 4653060, -21265456, -64972656, -107825688, -112669344, -68903624, 6364068, 119698592,
+273759616, 361284064, 213446992, -145631600, -404616512, -284796608, 98422936, 355922336, 287288224, 61032560,
+-72851232, -74783968, -54613732, -64385316, -67689224, -44145820, -18436684, -4584341, 10081362, 30307974,
+44483512, 47537772, 45814416, 43122008, 38670812, 33785824, 29936996, 25370908, 19680078, 15792595,
+14354318, 12443594, 9336185, 7518877, 7590818, 7566659, 6946036, 6852084, 6891275, 5601711,
+2967286, -188979, -3899294, -8224863, -12344273, -15734613, -18702972, -21189222, -22669912, -23339390,
+-23837606, -24029268, -23412404, -22183506, -20727512, -18799072, -16165720, -13209709, -10209137, -6907918,
+-3212099, 631897, 4758287, 9677635, 15535970, 22126060, 29405494, 37317360, 45499808, 53783192,
+62446676, 71462352, 80083424, 87622168, 94094680, 99766184, 104549168, 108045272, 109799768, 109517368,
+107325864, 103726144, 99096704, 93572304, 87521768, 81644640, 76410152, 71863392, 68115496, 65553548,
+64393908, 64374580, 64973192, 65784940, 66783520, 68330784, 70728984, 73718280, 76666240, 79216912,
+81465328, 83594560, 85681912, 87680680, 89303648, 90122912, 90061168, 89528056, 88929448, 88313656,
+87506200, 86191400, 83928496, 80525808, 76309760, 71669048, 66557496, 60737280, 54133232, 46667504,
+38247220, 29160680, 19973746, 10924249, 1928440, -6921877, -15493558, -23987392, -32513440, -40642740,
+-47986060, -54708220, -61007864, -66839892, -72506568, -78620984, -85303960, -92386896, -100205344, -109109352,
+-119048440, -130876240, -145829168, -161037648, -168272528, -161819328, -146276384, -132125544, -125181656, },
},
{
{
-6142340,
--1752884, 2153389, -253403, -14878840, -40603012, -54955716, -25999048, 40649716, 85347976, 57532696,
--15068893, -56675316, -38612292, -4403952, 3061775, -4886062, 594853, 14398341, 12999255, -2433636,
--10459856, -5893232, -4413079, -13902272, -23233088, -21329344, -11317776, -1985349, 3565360, 6399502,
-6265821, 2057289, -5651103, -14944339, -23817204, -30613454, -34868156, -37777996, -40564892, -42690364,
--42750492, -40518720, -37063420, -33477122, -30520574, -28937342, -29060822, -30284888, -31540092, -32114544,
--31699006, -30080878, -27246736, -23538568, -19363860, -14906758, -10248866, -5544266, -918586, 3623342,
-8079371, 12317966, 16100759, 19237696, 21731460, 23732378, 25309706, 26402774, 27111982, 27790586,
-28637768, 29481192, 30255898, 31381716, 33338610, 36192080, 39929236, 44916768, 51591684, 59942176,
-69655776, 80563920, 92683784, 106019656, 120433568, 135449840, 150231520, 164097280, 176961776, 188793344,
-198764640, 205487344, 208043376, 206330768, 200533632, 190734128, 177053584, 159909680, 140229616, 119414584,
-98722504, 78572672, 58887224, 40159556, 23593330, 9991705, -1092532, -10959146, -20775830, -30835718,
--40430136, -48541184, -54919748, -60304024, -65514356, -70714488, -75657456, -80133352, -84022984, -87416544,
--90787016, -94607928, -98813240, -102997072, -106955424, -110626008, -113824152, -116454280, -118649544, -120379344,
--121370944, -121642600, -121586768, -121387048, -120952720, -120379880, -119800056, -118943216, -117592448, -116182088,
--115217864, -114570400, -114006688, -113704968, -113555176, -112869056, -111450640, -109896936, -108371152, -106411576,
--104070816, -100995080, -93944896, -78418048, -54832772, -31004296, -15928960, -11644193, -12591233, },
+-1752884, 2153389, -253403, -14878840, -40603012, -54955716, -25999048, 40649716, 85347976, 57532696,
+-15068893, -56675316, -38612292, -4403952, 3061775, -4886062, 594853, 14398341, 12999255, -2433636,
+-10459856, -5893232, -4413079, -13902272, -23233088, -21329344, -11317776, -1985349, 3565360, 6399502,
+6265821, 2057289, -5651103, -14944339, -23817204, -30613454, -34868156, -37777996, -40564892, -42690364,
+-42750492, -40518720, -37063420, -33477122, -30520574, -28937342, -29060822, -30284888, -31540092, -32114544,
+-31699006, -30080878, -27246736, -23538568, -19363860, -14906758, -10248866, -5544266, -918586, 3623342,
+8079371, 12317966, 16100759, 19237696, 21731460, 23732378, 25309706, 26402774, 27111982, 27790586,
+28637768, 29481192, 30255898, 31381716, 33338610, 36192080, 39929236, 44916768, 51591684, 59942176,
+69655776, 80563920, 92683784, 106019656, 120433568, 135449840, 150231520, 164097280, 176961776, 188793344,
+198764640, 205487344, 208043376, 206330768, 200533632, 190734128, 177053584, 159909680, 140229616, 119414584,
+98722504, 78572672, 58887224, 40159556, 23593330, 9991705, -1092532, -10959146, -20775830, -30835718,
+-40430136, -48541184, -54919748, -60304024, -65514356, -70714488, -75657456, -80133352, -84022984, -87416544,
+-90787016, -94607928, -98813240, -102997072, -106955424, -110626008, -113824152, -116454280, -118649544, -120379344,
+-121370944, -121642600, -121586768, -121387048, -120952720, -120379880, -119800056, -118943216, -117592448, -116182088,
+-115217864, -114570400, -114006688, -113704968, -113555176, -112869056, -111450640, -109896936, -108371152, -106411576,
+-104070816, -100995080, -93944896, -78418048, -54832772, -31004296, -15928960, -11644193, -12591233, },
{
6142340,
-1752884, -2153389, 253403, 14878840, 40603012, 54955716, 25999048, -40649716, -85347976, -57532696,
-15068893, 56675316, 38612292, 4403952, -3061775, 4886062, -594853, -14398341, -12999255, 2433636,
-10459856, 5893232, 4413079, 13902272, 23233088, 21329344, 11317776, 1985349, -3565360, -6399502,
--6265821, -2057289, 5651103, 14944339, 23817204, 30613454, 34868156, 37777996, 40564892, 42690364,
-42750492, 40518720, 37063420, 33477122, 30520574, 28937342, 29060822, 30284888, 31540092, 32114544,
-31699006, 30080878, 27246736, 23538568, 19363860, 14906758, 10248866, 5544266, 918586, -3623342,
--8079371, -12317966, -16100759, -19237696, -21731460, -23732378, -25309706, -26402774, -27111982, -27790586,
--28637768, -29481192, -30255898, -31381716, -33338610, -36192080, -39929236, -44916768, -51591684, -59942176,
--69655776, -80563920, -92683784, -106019656, -120433568, -135449840, -150231520, -164097280, -176961776, -188793344,
--198764640, -205487344, -208043376, -206330768, -200533632, -190734128, -177053584, -159909680, -140229616, -119414584,
--98722504, -78572672, -58887224, -40159556, -23593330, -9991705, 1092532, 10959146, 20775830, 30835718,
-40430136, 48541184, 54919748, 60304024, 65514356, 70714488, 75657456, 80133352, 84022984, 87416544,
-90787016, 94607928, 98813240, 102997072, 106955424, 110626008, 113824152, 116454280, 118649544, 120379344,
-121370944, 121642600, 121586768, 121387048, 120952720, 120379880, 119800056, 118943216, 117592448, 116182088,
-115217864, 114570400, 114006688, 113704968, 113555176, 112869056, 111450640, 109896936, 108371152, 106411576,
-104070816, 100995080, 93944896, 78418048, 54832772, 31004296, 15928960, 11644193, 12591233, },
+1752884, -2153389, 253403, 14878840, 40603012, 54955716, 25999048, -40649716, -85347976, -57532696,
+15068893, 56675316, 38612292, 4403952, -3061775, 4886062, -594853, -14398341, -12999255, 2433636,
+10459856, 5893232, 4413079, 13902272, 23233088, 21329344, 11317776, 1985349, -3565360, -6399502,
+-6265821, -2057289, 5651103, 14944339, 23817204, 30613454, 34868156, 37777996, 40564892, 42690364,
+42750492, 40518720, 37063420, 33477122, 30520574, 28937342, 29060822, 30284888, 31540092, 32114544,
+31699006, 30080878, 27246736, 23538568, 19363860, 14906758, 10248866, 5544266, 918586, -3623342,
+-8079371, -12317966, -16100759, -19237696, -21731460, -23732378, -25309706, -26402774, -27111982, -27790586,
+-28637768, -29481192, -30255898, -31381716, -33338610, -36192080, -39929236, -44916768, -51591684, -59942176,
+-69655776, -80563920, -92683784, -106019656, -120433568, -135449840, -150231520, -164097280, -176961776, -188793344,
+-198764640, -205487344, -208043376, -206330768, -200533632, -190734128, -177053584, -159909680, -140229616, -119414584,
+-98722504, -78572672, -58887224, -40159556, -23593330, -9991705, 1092532, 10959146, 20775830, 30835718,
+40430136, 48541184, 54919748, 60304024, 65514356, 70714488, 75657456, 80133352, 84022984, 87416544,
+90787016, 94607928, 98813240, 102997072, 106955424, 110626008, 113824152, 116454280, 118649544, 120379344,
+121370944, 121642600, 121586768, 121387048, 120952720, 120379880, 119800056, 118943216, 117592448, 116182088,
+115217864, 114570400, 114006688, 113704968, 113555176, 112869056, 111450640, 109896936, 108371152, 106411576,
+104070816, 100995080, 93944896, 78418048, 54832772, 31004296, 15928960, 11644193, 12591233, },
},
{
{
-12293807,
--4858682, 11296838, 19100256, 3861713, -5900748, 36241472, 116374824, 146012784, 51534240, -132524440,
--269747040, -229335152, -13444858, 212266944, 253539968, 85124640, -115891640, -166048272, -67431520, 38611756,
-62862216, 38062000, 19412178, 5471252, -21926882, -46705620, -45556720, -28509992, -20809116, -26320634,
--31532576, -29571386, -22053584, -8328479, 12683575, 36189932, 55955908, 70685496, 81685448, 89103392,
-93404800, 96296392, 98277440, 98371928, 96653944, 94194000, 90911576, 86037320, 79888000, 72978472,
-64399276, 52976812, 39047160, 23758686, 7796977, -8194798, -23222888, -36919540, -49907520, -62626528,
--74701296, -85702848, -95545840, -103881840, -109858824, -112652696, -111763640, -106924288, -98160944, -85775328,
--69952672, -50720344, -28536300, -4487167, 20426864, 45805288, 71338336, 96167000, 119163864, 139693280,
-157771328, 173507552, 186629744, 196671392, 203482128, 207318608, 208383760, 206505792, 201380816, 192836512,
-180638272, 164359808, 143832016, 119569744, 92430920, 63056564, 32062468, 675921, -29271276, -56125560,
--79089672, -98170608, -113548736, -124903016, -131351912, -132275328, -128254168, -120941984, -111917720, -101868568,
--90853592, -78939352, -66391068, -53582940, -40999756, -29189672, -18582712, -9393093, -1646046, 4900021,
-10785737, 16521129, 22140556, 27170500, 30990336, 33161442, 33582888, 32519344, 30390652, 27408870,
-23448374, 18280992, 11822971, 4185983, -4341675, -13386876, -22716082, -32304596, -42073500, -51706036,
--60841432, -69281040, -76887432, -83512952, -89127016, -93801016, -97536560, -100308424, -102233640, -103560248,
--104703784, -106144208, -107347336, -105644920, -97930088, -84797152, -71584760, -63486060, -60742648, },
+-4858682, 11296838, 19100256, 3861713, -5900748, 36241472, 116374824, 146012784, 51534240, -132524440,
+-269747040, -229335152, -13444858, 212266944, 253539968, 85124640, -115891640, -166048272, -67431520, 38611756,
+62862216, 38062000, 19412178, 5471252, -21926882, -46705620, -45556720, -28509992, -20809116, -26320634,
+-31532576, -29571386, -22053584, -8328479, 12683575, 36189932, 55955908, 70685496, 81685448, 89103392,
+93404800, 96296392, 98277440, 98371928, 96653944, 94194000, 90911576, 86037320, 79888000, 72978472,
+64399276, 52976812, 39047160, 23758686, 7796977, -8194798, -23222888, -36919540, -49907520, -62626528,
+-74701296, -85702848, -95545840, -103881840, -109858824, -112652696, -111763640, -106924288, -98160944, -85775328,
+-69952672, -50720344, -28536300, -4487167, 20426864, 45805288, 71338336, 96167000, 119163864, 139693280,
+157771328, 173507552, 186629744, 196671392, 203482128, 207318608, 208383760, 206505792, 201380816, 192836512,
+180638272, 164359808, 143832016, 119569744, 92430920, 63056564, 32062468, 675921, -29271276, -56125560,
+-79089672, -98170608, -113548736, -124903016, -131351912, -132275328, -128254168, -120941984, -111917720, -101868568,
+-90853592, -78939352, -66391068, -53582940, -40999756, -29189672, -18582712, -9393093, -1646046, 4900021,
+10785737, 16521129, 22140556, 27170500, 30990336, 33161442, 33582888, 32519344, 30390652, 27408870,
+23448374, 18280992, 11822971, 4185983, -4341675, -13386876, -22716082, -32304596, -42073500, -51706036,
+-60841432, -69281040, -76887432, -83512952, -89127016, -93801016, -97536560, -100308424, -102233640, -103560248,
+-104703784, -106144208, -107347336, -105644920, -97930088, -84797152, -71584760, -63486060, -60742648, },
{
12293807,
-4858682, -11296838, -19100256, -3861713, 5900748, -36241472, -116374824, -146012784, -51534240, 132524440,
-269747040, 229335152, 13444858, -212266944, -253539968, -85124640, 115891640, 166048272, 67431520, -38611756,
--62862216, -38062000, -19412178, -5471252, 21926882, 46705620, 45556720, 28509992, 20809116, 26320634,
-31532576, 29571386, 22053584, 8328479, -12683575, -36189932, -55955908, -70685496, -81685448, -89103392,
--93404800, -96296392, -98277440, -98371928, -96653944, -94194000, -90911576, -86037320, -79888000, -72978472,
--64399276, -52976812, -39047160, -23758686, -7796977, 8194798, 23222888, 36919540, 49907520, 62626528,
-74701296, 85702848, 95545840, 103881840, 109858824, 112652696, 111763640, 106924288, 98160944, 85775328,
-69952672, 50720344, 28536300, 4487167, -20426864, -45805288, -71338336, -96167000, -119163864, -139693280,
--157771328, -173507552, -186629744, -196671392, -203482128, -207318608, -208383760, -206505792, -201380816, -192836512,
--180638272, -164359808, -143832016, -119569744, -92430920, -63056564, -32062468, -675921, 29271276, 56125560,
-79089672, 98170608, 113548736, 124903016, 131351912, 132275328, 128254168, 120941984, 111917720, 101868568,
-90853592, 78939352, 66391068, 53582940, 40999756, 29189672, 18582712, 9393093, 1646046, -4900021,
--10785737, -16521129, -22140556, -27170500, -30990336, -33161442, -33582888, -32519344, -30390652, -27408870,
--23448374, -18280992, -11822971, -4185983, 4341675, 13386876, 22716082, 32304596, 42073500, 51706036,
-60841432, 69281040, 76887432, 83512952, 89127016, 93801016, 97536560, 100308424, 102233640, 103560248,
-104703784, 106144208, 107347336, 105644920, 97930088, 84797152, 71584760, 63486060, 60742648, },
+4858682, -11296838, -19100256, -3861713, 5900748, -36241472, -116374824, -146012784, -51534240, 132524440,
+269747040, 229335152, 13444858, -212266944, -253539968, -85124640, 115891640, 166048272, 67431520, -38611756,
+-62862216, -38062000, -19412178, -5471252, 21926882, 46705620, 45556720, 28509992, 20809116, 26320634,
+31532576, 29571386, 22053584, 8328479, -12683575, -36189932, -55955908, -70685496, -81685448, -89103392,
+-93404800, -96296392, -98277440, -98371928, -96653944, -94194000, -90911576, -86037320, -79888000, -72978472,
+-64399276, -52976812, -39047160, -23758686, -7796977, 8194798, 23222888, 36919540, 49907520, 62626528,
+74701296, 85702848, 95545840, 103881840, 109858824, 112652696, 111763640, 106924288, 98160944, 85775328,
+69952672, 50720344, 28536300, 4487167, -20426864, -45805288, -71338336, -96167000, -119163864, -139693280,
+-157771328, -173507552, -186629744, -196671392, -203482128, -207318608, -208383760, -206505792, -201380816, -192836512,
+-180638272, -164359808, -143832016, -119569744, -92430920, -63056564, -32062468, -675921, 29271276, 56125560,
+79089672, 98170608, 113548736, 124903016, 131351912, 132275328, 128254168, 120941984, 111917720, 101868568,
+90853592, 78939352, 66391068, 53582940, 40999756, 29189672, 18582712, 9393093, 1646046, -4900021,
+-10785737, -16521129, -22140556, -27170500, -30990336, -33161442, -33582888, -32519344, -30390652, -27408870,
+-23448374, -18280992, -11822971, -4185983, 4341675, 13386876, 22716082, 32304596, 42073500, 51706036,
+60841432, 69281040, 76887432, 83512952, 89127016, 93801016, 97536560, 100308424, 102233640, 103560248,
+104703784, 106144208, 107347336, 105644920, 97930088, 84797152, 71584760, 63486060, 60742648, },
},
{
{
1981054,
--492311, -296353, 7187091, 20790326, 34022048, 38966628, 28556164, 110595, -35796404, -53189948,
--31344672, 17328046, 52040508, 45398880, 11650099, -15445776, -22064858, -18178986, -11581916, 1719061,
-21751862, 37804304, 43341052, 45074072, 50449224, 55028732, 48952428, 30137786, 5746666, -15365782,
--27608050, -29608968, -24510304, -18206366, -14864882, -14263050, -13622026, -10816338, -5701032, 302258,
-5457293, 9128953, 11999065, 14878304, 17986786, 21451214, 25480430, 29771102, 33561948, 36449776,
-38489348, 39609800, 39572756, 38267084, 35515620, 30976914, 24654722, 17046188, 8560944, -637266,
--10189273, -19688666, -29212220, -38975216, -48690432, -58008904, -67171680, -76369352, -84917944, -91841432,
--96724808, -99298032, -98873904, -94944544, -87748328, -77702400, -64913060, -49656800, -32660006, -14494441,
-4769025, 25049324, 45805288, 66242356, 85751704, 104195904, 121765008, 138232448, 152444496, 163098160,
-169934672, 173507552, 173946176, 170681456, 163277472, 151896352, 137215616, 120472224, 103182296, 86171000,
-69162936, 51720532, 34225520, 17817672, 3861176, -6618008, -13700946, -18690088, -22775674, -25758530,
--26644904, -25007984, -21164526, -15672336, -9310952, -2892124, 3518115, 10589242, 18666464, 27408870,
-36473936, 45634564, 54317916, 61990336, 68838128, 75240312, 80961744, 85623392, 89298816, 91926792,
-92930208, 92042760, 89656368, 85938536, 80607944, 73742976, 65713000, 56356412, 45335528, 33011118,
-19910932, 5942624, -8905078, -24007794, -39067024, -54445152, -69956424, -84769232, -98771896, -112544248,
--126454040, -141326976, -157807840, -171961904, -174743968, -161483248, -139952048, -123136712, -116040888, },
+-492311, -296353, 7187091, 20790326, 34022048, 38966628, 28556164, 110595, -35796404, -53189948,
+-31344672, 17328046, 52040508, 45398880, 11650099, -15445776, -22064858, -18178986, -11581916, 1719061,
+21751862, 37804304, 43341052, 45074072, 50449224, 55028732, 48952428, 30137786, 5746666, -15365782,
+-27608050, -29608968, -24510304, -18206366, -14864882, -14263050, -13622026, -10816338, -5701032, 302258,
+5457293, 9128953, 11999065, 14878304, 17986786, 21451214, 25480430, 29771102, 33561948, 36449776,
+38489348, 39609800, 39572756, 38267084, 35515620, 30976914, 24654722, 17046188, 8560944, -637266,
+-10189273, -19688666, -29212220, -38975216, -48690432, -58008904, -67171680, -76369352, -84917944, -91841432,
+-96724808, -99298032, -98873904, -94944544, -87748328, -77702400, -64913060, -49656800, -32660006, -14494441,
+4769025, 25049324, 45805288, 66242356, 85751704, 104195904, 121765008, 138232448, 152444496, 163098160,
+169934672, 173507552, 173946176, 170681456, 163277472, 151896352, 137215616, 120472224, 103182296, 86171000,
+69162936, 51720532, 34225520, 17817672, 3861176, -6618008, -13700946, -18690088, -22775674, -25758530,
+-26644904, -25007984, -21164526, -15672336, -9310952, -2892124, 3518115, 10589242, 18666464, 27408870,
+36473936, 45634564, 54317916, 61990336, 68838128, 75240312, 80961744, 85623392, 89298816, 91926792,
+92930208, 92042760, 89656368, 85938536, 80607944, 73742976, 65713000, 56356412, 45335528, 33011118,
+19910932, 5942624, -8905078, -24007794, -39067024, -54445152, -69956424, -84769232, -98771896, -112544248,
+-126454040, -141326976, -157807840, -171961904, -174743968, -161483248, -139952048, -123136712, -116040888, },
{
1981054,
--492311, -296353, 7187091, 20790326, 34022048, 38966628, 28556164, 110595, -35796404, -53189948,
--31344672, 17328046, 52040508, 45398880, 11650099, -15445776, -22064858, -18178986, -11581916, 1719061,
-21751862, 37804304, 43341052, 45074072, 50449224, 55028732, 48952428, 30137786, 5746666, -15365782,
--27608050, -29608968, -24510304, -18206366, -14864882, -14263050, -13622026, -10816338, -5701032, 302258,
-5457293, 9128953, 11999065, 14878304, 17986786, 21451214, 25480430, 29771102, 33561948, 36449776,
-38489348, 39609800, 39572756, 38267084, 35515620, 30976914, 24654722, 17046188, 8560944, -637266,
--10189273, -19688666, -29212220, -38975216, -48690432, -58008904, -67171680, -76369352, -84917944, -91841432,
--96724808, -99298032, -98873904, -94944544, -87748328, -77702400, -64913060, -49656800, -32660006, -14494441,
-4769025, 25049324, 45805288, 66242356, 85751704, 104195904, 121765008, 138232448, 152444496, 163098160,
-169934672, 173507552, 173946176, 170681456, 163277472, 151896352, 137215616, 120472224, 103182296, 86171000,
-69162936, 51720532, 34225520, 17817672, 3861176, -6618008, -13700946, -18690088, -22775674, -25758530,
--26644904, -25007984, -21164526, -15672336, -9310952, -2892124, 3518115, 10589242, 18666464, 27408870,
-36473936, 45634564, 54317916, 61990336, 68838128, 75240312, 80961744, 85623392, 89298816, 91926792,
-92930208, 92042760, 89656368, 85938536, 80607944, 73742976, 65713000, 56356412, 45335528, 33011118,
-19910932, 5942624, -8905078, -24007794, -39067024, -54445152, -69956424, -84769232, -98771896, -112544248,
--126454040, -141326976, -157807840, -171961904, -174743968, -161483248, -139952048, -123136712, -116040888, },
+-492311, -296353, 7187091, 20790326, 34022048, 38966628, 28556164, 110595, -35796404, -53189948,
+-31344672, 17328046, 52040508, 45398880, 11650099, -15445776, -22064858, -18178986, -11581916, 1719061,
+21751862, 37804304, 43341052, 45074072, 50449224, 55028732, 48952428, 30137786, 5746666, -15365782,
+-27608050, -29608968, -24510304, -18206366, -14864882, -14263050, -13622026, -10816338, -5701032, 302258,
+5457293, 9128953, 11999065, 14878304, 17986786, 21451214, 25480430, 29771102, 33561948, 36449776,
+38489348, 39609800, 39572756, 38267084, 35515620, 30976914, 24654722, 17046188, 8560944, -637266,
+-10189273, -19688666, -29212220, -38975216, -48690432, -58008904, -67171680, -76369352, -84917944, -91841432,
+-96724808, -99298032, -98873904, -94944544, -87748328, -77702400, -64913060, -49656800, -32660006, -14494441,
+4769025, 25049324, 45805288, 66242356, 85751704, 104195904, 121765008, 138232448, 152444496, 163098160,
+169934672, 173507552, 173946176, 170681456, 163277472, 151896352, 137215616, 120472224, 103182296, 86171000,
+69162936, 51720532, 34225520, 17817672, 3861176, -6618008, -13700946, -18690088, -22775674, -25758530,
+-26644904, -25007984, -21164526, -15672336, -9310952, -2892124, 3518115, 10589242, 18666464, 27408870,
+36473936, 45634564, 54317916, 61990336, 68838128, 75240312, 80961744, 85623392, 89298816, 91926792,
+92930208, 92042760, 89656368, 85938536, 80607944, 73742976, 65713000, 56356412, 45335528, 33011118,
+19910932, 5942624, -8905078, -24007794, -39067024, -54445152, -69956424, -84769232, -98771896, -112544248,
+-126454040, -141326976, -157807840, -171961904, -174743968, -161483248, -139952048, -123136712, -116040888, },
},
{
{
-12559558,
--14574435, -5498632, 16103443, 36147520, 44876504, 39157216, 9365713, -46824808, -96066072, -88001736,
--16486232, 61414812, 83421688, 43921408, -12003360, -39346196, -26169236, 8202851, 31455804, 21983790,
--12823699, -43575664, -48513804, -31488016, -9336185, 8367133, 21562346, 31231928, 37633576, 42852500,
-48321604, 51680804, 50072876, 44494252, 37884296, 31025770, 23062900, 14463839, 7116761, 2233383,
--410169, -1745367, -2821257, -4539244, -7486128, -12084427, -18647138, -26852672, -35484484, -43163884,
--49141944, -53194780, -55318104, -55944096, -56015500, -56391848, -57385060, -59020904, -61418568, -64698312,
--68753840, -73237784, -77588048, -81048720, -82895016, -82710336, -80343808, -75721888, -68982544, -60732984,
--51794620, -42591044, -33091112, -23498302, -14558329, -6819335, 45097, 6571837, 12374875, 16434692,
-18544058, 19660212, 20583630, 21070572, 20794084, 20587388, 21976274, 25625922, 30747670, 36053028,
-40965936, 45846092, 51298016, 57459148, 63976224, 70426728, 76528800, 82054280, 86981680, 91855392,
-97594008, 104659760, 112574848, 120407264, 127569120, 134014792, 139829104, 144785488, 148304144, 149838528,
-149301648, 147018880, 143219440, 137718128, 130134288, 120280024, 108341088, 94882808, 80673984, 66263828,
-51684564, 36692980, 21274046, 5818607, -9044127, -22661858, -34666828, -45304388, -55281060, -65073048,
--74445744, -82671144, -89063664, -93351112, -95811592, -97100624, -97800160, -98117456, -97976792, -97134984,
--95189360, -91867200, -87386480, -82146080, -76163728, -69350304, -62128848, -55066848, -48134772, -41077068,
--34018824, -26677652, -17796734, -7066295, 2895882, 8453569, 8887361, 6854768, 5247913, },
+-14574435, -5498632, 16103443, 36147520, 44876504, 39157216, 9365713, -46824808, -96066072, -88001736,
+-16486232, 61414812, 83421688, 43921408, -12003360, -39346196, -26169236, 8202851, 31455804, 21983790,
+-12823699, -43575664, -48513804, -31488016, -9336185, 8367133, 21562346, 31231928, 37633576, 42852500,
+48321604, 51680804, 50072876, 44494252, 37884296, 31025770, 23062900, 14463839, 7116761, 2233383,
+-410169, -1745367, -2821257, -4539244, -7486128, -12084427, -18647138, -26852672, -35484484, -43163884,
+-49141944, -53194780, -55318104, -55944096, -56015500, -56391848, -57385060, -59020904, -61418568, -64698312,
+-68753840, -73237784, -77588048, -81048720, -82895016, -82710336, -80343808, -75721888, -68982544, -60732984,
+-51794620, -42591044, -33091112, -23498302, -14558329, -6819335, 45097, 6571837, 12374875, 16434692,
+18544058, 19660212, 20583630, 21070572, 20794084, 20587388, 21976274, 25625922, 30747670, 36053028,
+40965936, 45846092, 51298016, 57459148, 63976224, 70426728, 76528800, 82054280, 86981680, 91855392,
+97594008, 104659760, 112574848, 120407264, 127569120, 134014792, 139829104, 144785488, 148304144, 149838528,
+149301648, 147018880, 143219440, 137718128, 130134288, 120280024, 108341088, 94882808, 80673984, 66263828,
+51684564, 36692980, 21274046, 5818607, -9044127, -22661858, -34666828, -45304388, -55281060, -65073048,
+-74445744, -82671144, -89063664, -93351112, -95811592, -97100624, -97800160, -98117456, -97976792, -97134984,
+-95189360, -91867200, -87386480, -82146080, -76163728, -69350304, -62128848, -55066848, -48134772, -41077068,
+-34018824, -26677652, -17796734, -7066295, 2895882, 8453569, 8887361, 6854768, 5247913, },
{
-12559558,
--14574435, -5498632, 16103443, 36147520, 44876504, 39157216, 9365713, -46824808, -96066072, -88001736,
--16486232, 61414812, 83421688, 43921408, -12003360, -39346196, -26169236, 8202851, 31455804, 21983790,
--12823699, -43575664, -48513804, -31488016, -9336185, 8367133, 21562346, 31231928, 37633576, 42852500,
-48321604, 51680804, 50072876, 44494252, 37884296, 31025770, 23062900, 14463839, 7116761, 2233383,
--410169, -1745367, -2821257, -4539244, -7486128, -12084427, -18647138, -26852672, -35484484, -43163884,
--49141944, -53194780, -55318104, -55944096, -56015500, -56391848, -57385060, -59020904, -61418568, -64698312,
--68753840, -73237784, -77588048, -81048720, -82895016, -82710336, -80343808, -75721888, -68982544, -60732984,
--51794620, -42591044, -33091112, -23498302, -14558329, -6819335, 45097, 6571837, 12374875, 16434692,
-18544058, 19660212, 20583630, 21070572, 20794084, 20587388, 21976274, 25625922, 30747670, 36053028,
-40965936, 45846092, 51298016, 57459148, 63976224, 70426728, 76528800, 82054280, 86981680, 91855392,
-97594008, 104659760, 112574848, 120407264, 127569120, 134014792, 139829104, 144785488, 148304144, 149838528,
-149301648, 147018880, 143219440, 137718128, 130134288, 120280024, 108341088, 94882808, 80673984, 66263828,
-51684564, 36692980, 21274046, 5818607, -9044127, -22661858, -34666828, -45304388, -55281060, -65073048,
--74445744, -82671144, -89063664, -93351112, -95811592, -97100624, -97800160, -98117456, -97976792, -97134984,
--95189360, -91867200, -87386480, -82146080, -76163728, -69350304, -62128848, -55066848, -48134772, -41077068,
--34018824, -26677652, -17796734, -7066295, 2895882, 8453569, 8887361, 6854768, 5247913, },
+-14574435, -5498632, 16103443, 36147520, 44876504, 39157216, 9365713, -46824808, -96066072, -88001736,
+-16486232, 61414812, 83421688, 43921408, -12003360, -39346196, -26169236, 8202851, 31455804, 21983790,
+-12823699, -43575664, -48513804, -31488016, -9336185, 8367133, 21562346, 31231928, 37633576, 42852500,
+48321604, 51680804, 50072876, 44494252, 37884296, 31025770, 23062900, 14463839, 7116761, 2233383,
+-410169, -1745367, -2821257, -4539244, -7486128, -12084427, -18647138, -26852672, -35484484, -43163884,
+-49141944, -53194780, -55318104, -55944096, -56015500, -56391848, -57385060, -59020904, -61418568, -64698312,
+-68753840, -73237784, -77588048, -81048720, -82895016, -82710336, -80343808, -75721888, -68982544, -60732984,
+-51794620, -42591044, -33091112, -23498302, -14558329, -6819335, 45097, 6571837, 12374875, 16434692,
+18544058, 19660212, 20583630, 21070572, 20794084, 20587388, 21976274, 25625922, 30747670, 36053028,
+40965936, 45846092, 51298016, 57459148, 63976224, 70426728, 76528800, 82054280, 86981680, 91855392,
+97594008, 104659760, 112574848, 120407264, 127569120, 134014792, 139829104, 144785488, 148304144, 149838528,
+149301648, 147018880, 143219440, 137718128, 130134288, 120280024, 108341088, 94882808, 80673984, 66263828,
+51684564, 36692980, 21274046, 5818607, -9044127, -22661858, -34666828, -45304388, -55281060, -65073048,
+-74445744, -82671144, -89063664, -93351112, -95811592, -97100624, -97800160, -98117456, -97976792, -97134984,
+-95189360, -91867200, -87386480, -82146080, -76163728, -69350304, -62128848, -55066848, -48134772, -41077068,
+-34018824, -26677652, -17796734, -7066295, 2895882, 8453569, 8887361, 6854768, 5247913, },
},
{
{
1361505,
--6031745, -9847823, -9656697, -14584635, -16705812, 7517267, 51822000, 60734060, -8921184, -112508280,
--144351168, -58633820, 64616172, 104241544, 34482144, -56665652, -81571096, -45710800, -11709691, -7069516,
--4066797, 22695144, 58683212, 76764488, 74230456, 66876400, 61739080, 51783884, 31008590, 2225867,
--28280750, -55553792, -75944152, -87853016, -92936112, -93998584, -92232272, -87786448, -81435800, -74198784,
--66693864, -59979220, -55700892, -54538568, -55540908, -57379152, -59228672, -60336236, -59941100, -57892936,
--54546620, -50062140, -44485124, -38338488, -32506996, -27661200, -24187108, -22404160, -22473416, -24276766,
--27546846, -31951336, -37052684, -42429444, -47763256, -52693344, -56783764, -59753196, -61440580, -61491584,
--59418188, -55002424, -48322140, -39467528, -28609850, -16194711, -2756832, 11221139, 25089588, 38157028,
-50324132, 62045096, 73466488, 84227528, 94241248, 103860360, 113180440, 122174104, 131728256, 143384256,
-157529200, 172678624, 187045296, 200132592, 212350704, 223562176, 232452752, 237196016, 236600624, 230685920,
-220133184, 205348832, 186409104, 163813280, 138720464, 112246288, 84862648, 56548612, 27314382, -2303176,
--31074088, -57662620, -81631760, -103590320, -124196496, -143360640, -160478224, -174997904, -186710816, -195989024,
--203774192, -210894704, -217387616, -222761696, -226671728, -229054368, -229952544, -229501584, -227726144, -224215552,
--218468336, -210567744, -200995344, -189917008, -177224848, -162980592, -147170272, -129491656, -110055856, -89775552,
--69495256, -49401252, -29626684, -10492068, 8148627, 26706106, 44885092, 61997852, 77989624, 93141736,
-107788648, 123275224, 140463152, 154866864, 157063728, 142887120, 120772336, 103758896, 96604016, },
+-6031745, -9847823, -9656697, -14584635, -16705812, 7517267, 51822000, 60734060, -8921184, -112508280,
+-144351168, -58633820, 64616172, 104241544, 34482144, -56665652, -81571096, -45710800, -11709691, -7069516,
+-4066797, 22695144, 58683212, 76764488, 74230456, 66876400, 61739080, 51783884, 31008590, 2225867,
+-28280750, -55553792, -75944152, -87853016, -92936112, -93998584, -92232272, -87786448, -81435800, -74198784,
+-66693864, -59979220, -55700892, -54538568, -55540908, -57379152, -59228672, -60336236, -59941100, -57892936,
+-54546620, -50062140, -44485124, -38338488, -32506996, -27661200, -24187108, -22404160, -22473416, -24276766,
+-27546846, -31951336, -37052684, -42429444, -47763256, -52693344, -56783764, -59753196, -61440580, -61491584,
+-59418188, -55002424, -48322140, -39467528, -28609850, -16194711, -2756832, 11221139, 25089588, 38157028,
+50324132, 62045096, 73466488, 84227528, 94241248, 103860360, 113180440, 122174104, 131728256, 143384256,
+157529200, 172678624, 187045296, 200132592, 212350704, 223562176, 232452752, 237196016, 236600624, 230685920,
+220133184, 205348832, 186409104, 163813280, 138720464, 112246288, 84862648, 56548612, 27314382, -2303176,
+-31074088, -57662620, -81631760, -103590320, -124196496, -143360640, -160478224, -174997904, -186710816, -195989024,
+-203774192, -210894704, -217387616, -222761696, -226671728, -229054368, -229952544, -229501584, -227726144, -224215552,
+-218468336, -210567744, -200995344, -189917008, -177224848, -162980592, -147170272, -129491656, -110055856, -89775552,
+-69495256, -49401252, -29626684, -10492068, 8148627, 26706106, 44885092, 61997852, 77989624, 93141736,
+107788648, 123275224, 140463152, 154866864, 157063728, 142887120, 120772336, 103758896, 96604016, },
{
1361505,
--6031745, -9847823, -9656697, -14584635, -16705812, 7517267, 51822000, 60734060, -8921184, -112508280,
--144351168, -58633820, 64616172, 104241544, 34482144, -56665652, -81571096, -45710800, -11709691, -7069516,
--4066797, 22695144, 58683212, 76764488, 74230456, 66876400, 61739080, 51783884, 31008590, 2225867,
--28280750, -55553792, -75944152, -87853016, -92936112, -93998584, -92232272, -87786448, -81435800, -74198784,
--66693864, -59979220, -55700892, -54538568, -55540908, -57379152, -59228672, -60336236, -59941100, -57892936,
--54546620, -50062140, -44485124, -38338488, -32506996, -27661200, -24187108, -22404160, -22473416, -24276766,
--27546846, -31951336, -37052684, -42429444, -47763256, -52693344, -56783764, -59753196, -61440580, -61491584,
--59418188, -55002424, -48322140, -39467528, -28609850, -16194711, -2756832, 11221139, 25089588, 38157028,
-50324132, 62045096, 73466488, 84227528, 94241248, 103860360, 113180440, 122174104, 131728256, 143384256,
-157529200, 172678624, 187045296, 200132592, 212350704, 223562176, 232452752, 237196016, 236600624, 230685920,
-220133184, 205348832, 186409104, 163813280, 138720464, 112246288, 84862648, 56548612, 27314382, -2303176,
--31074088, -57662620, -81631760, -103590320, -124196496, -143360640, -160478224, -174997904, -186710816, -195989024,
--203774192, -210894704, -217387616, -222761696, -226671728, -229054368, -229952544, -229501584, -227726144, -224215552,
--218468336, -210567744, -200995344, -189917008, -177224848, -162980592, -147170272, -129491656, -110055856, -89775552,
--69495256, -49401252, -29626684, -10492068, 8148627, 26706106, 44885092, 61997852, 77989624, 93141736,
-107788648, 123275224, 140463152, 154866864, 157063728, 142887120, 120772336, 103758896, 96604016, },
+-6031745, -9847823, -9656697, -14584635, -16705812, 7517267, 51822000, 60734060, -8921184, -112508280,
+-144351168, -58633820, 64616172, 104241544, 34482144, -56665652, -81571096, -45710800, -11709691, -7069516,
+-4066797, 22695144, 58683212, 76764488, 74230456, 66876400, 61739080, 51783884, 31008590, 2225867,
+-28280750, -55553792, -75944152, -87853016, -92936112, -93998584, -92232272, -87786448, -81435800, -74198784,
+-66693864, -59979220, -55700892, -54538568, -55540908, -57379152, -59228672, -60336236, -59941100, -57892936,
+-54546620, -50062140, -44485124, -38338488, -32506996, -27661200, -24187108, -22404160, -22473416, -24276766,
+-27546846, -31951336, -37052684, -42429444, -47763256, -52693344, -56783764, -59753196, -61440580, -61491584,
+-59418188, -55002424, -48322140, -39467528, -28609850, -16194711, -2756832, 11221139, 25089588, 38157028,
+50324132, 62045096, 73466488, 84227528, 94241248, 103860360, 113180440, 122174104, 131728256, 143384256,
+157529200, 172678624, 187045296, 200132592, 212350704, 223562176, 232452752, 237196016, 236600624, 230685920,
+220133184, 205348832, 186409104, 163813280, 138720464, 112246288, 84862648, 56548612, 27314382, -2303176,
+-31074088, -57662620, -81631760, -103590320, -124196496, -143360640, -160478224, -174997904, -186710816, -195989024,
+-203774192, -210894704, -217387616, -222761696, -226671728, -229054368, -229952544, -229501584, -227726144, -224215552,
+-218468336, -210567744, -200995344, -189917008, -177224848, -162980592, -147170272, -129491656, -110055856, -89775552,
+-69495256, -49401252, -29626684, -10492068, 8148627, 26706106, 44885092, 61997852, 77989624, 93141736,
+107788648, 123275224, 140463152, 154866864, 157063728, 142887120, 120772336, 103758896, 96604016, },
},
{
{
-3934190,
--3561065, -2961380, -2469069, -3335042, -6949257, -10582799, -6585796, 5910949, 9033390, -17499844,
--58110372, -59563144, 5482526, 83499536, 86628416, 1379221, -84844928, -85138064, -11901354, 51665236,
-54776404, 19014894, -11911555, -22216792, -18465138, -5498632, 14854681, 35445828, 48197048, 51996484,
-50291920, 45649596, 40315248, 37207300, 36641976, 35024920, 28898688, 18129056, 4440460, -10513006,
--24823838, -36339180, -44009992, -48198660, -49605260, -48929340, -47307992, -45934140, -45271640, -45296872,
--46153720, -47934520, -50194208, -52233244, -53628036, -54219132, -54003844, -53310208, -52730924, -52689048,
--53342956, -54880020, -57467200, -60883844, -64628520, -68430104, -72297184, -76111112, -79580376, -82582560,
--85147728, -87112136, -88198224, -88479544, -88365728, -88030184, -87231856, -85876800, -84408456, -83318072,
--82401096, -80879600, -78321416, -75120048, -71791456, -68008656, -62799940, -55777128, -47760572, -39983460,
--32998234, -26651346, -20882130, -16187195, -13293998, -12516072, -13425531, -15218143, -17527224, -20784420,
--25553982, -31566936, -37652368, -42537356, -45547056, -46747496, -46730856, -46114528, -44954348, -42737072,
--39073464, -34196528, -28686624, -23036594, -17581986, -12468290, -7497403, -2309619, 3184718, 8788040,
-14401025, 20095078, 25889526, 31743566, 37637872, 43394740, 48620104, 53053584, 56763360, 59858960,
-62368292, 64483564, 66524212, 68600288, 70713416, 73127720, 76176616, 79870824, 84172232, 89341224,
-95507728, 102298608, 109355776, 116673864, 123982824, 130558952, 136096784, 140873856, 144714624, 147014576,
-147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, },
+-3561065, -2961380, -2469069, -3335042, -6949257, -10582799, -6585796, 5910949, 9033390, -17499844,
+-58110372, -59563144, 5482526, 83499536, 86628416, 1379221, -84844928, -85138064, -11901354, 51665236,
+54776404, 19014894, -11911555, -22216792, -18465138, -5498632, 14854681, 35445828, 48197048, 51996484,
+50291920, 45649596, 40315248, 37207300, 36641976, 35024920, 28898688, 18129056, 4440460, -10513006,
+-24823838, -36339180, -44009992, -48198660, -49605260, -48929340, -47307992, -45934140, -45271640, -45296872,
+-46153720, -47934520, -50194208, -52233244, -53628036, -54219132, -54003844, -53310208, -52730924, -52689048,
+-53342956, -54880020, -57467200, -60883844, -64628520, -68430104, -72297184, -76111112, -79580376, -82582560,
+-85147728, -87112136, -88198224, -88479544, -88365728, -88030184, -87231856, -85876800, -84408456, -83318072,
+-82401096, -80879600, -78321416, -75120048, -71791456, -68008656, -62799940, -55777128, -47760572, -39983460,
+-32998234, -26651346, -20882130, -16187195, -13293998, -12516072, -13425531, -15218143, -17527224, -20784420,
+-25553982, -31566936, -37652368, -42537356, -45547056, -46747496, -46730856, -46114528, -44954348, -42737072,
+-39073464, -34196528, -28686624, -23036594, -17581986, -12468290, -7497403, -2309619, 3184718, 8788040,
+14401025, 20095078, 25889526, 31743566, 37637872, 43394740, 48620104, 53053584, 56763360, 59858960,
+62368292, 64483564, 66524212, 68600288, 70713416, 73127720, 76176616, 79870824, 84172232, 89341224,
+95507728, 102298608, 109355776, 116673864, 123982824, 130558952, 136096784, 140873856, 144714624, 147014576,
+147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, },
{
-3934190,
--3561065, -2961380, -2469069, -3335042, -6949257, -10582799, -6585796, 5910949, 9033390, -17499844,
--58110372, -59563144, 5482526, 83499536, 86628416, 1379221, -84844928, -85138064, -11901354, 51665236,
-54776404, 19014894, -11911555, -22216792, -18465138, -5498632, 14854681, 35445828, 48197048, 51996484,
-50291920, 45649596, 40315248, 37207300, 36641976, 35024920, 28898688, 18129056, 4440460, -10513006,
--24823838, -36339180, -44009992, -48198660, -49605260, -48929340, -47307992, -45934140, -45271640, -45296872,
--46153720, -47934520, -50194208, -52233244, -53628036, -54219132, -54003844, -53310208, -52730924, -52689048,
--53342956, -54880020, -57467200, -60883844, -64628520, -68430104, -72297184, -76111112, -79580376, -82582560,
--85147728, -87112136, -88198224, -88479544, -88365728, -88030184, -87231856, -85876800, -84408456, -83318072,
--82401096, -80879600, -78321416, -75120048, -71791456, -68008656, -62799940, -55777128, -47760572, -39983460,
--32998234, -26651346, -20882130, -16187195, -13293998, -12516072, -13425531, -15218143, -17527224, -20784420,
--25553982, -31566936, -37652368, -42537356, -45547056, -46747496, -46730856, -46114528, -44954348, -42737072,
--39073464, -34196528, -28686624, -23036594, -17581986, -12468290, -7497403, -2309619, 3184718, 8788040,
-14401025, 20095078, 25889526, 31743566, 37637872, 43394740, 48620104, 53053584, 56763360, 59858960,
-62368292, 64483564, 66524212, 68600288, 70713416, 73127720, 76176616, 79870824, 84172232, 89341224,
-95507728, 102298608, 109355776, 116673864, 123982824, 130558952, 136096784, 140873856, 144714624, 147014576,
-147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, },
+-3561065, -2961380, -2469069, -3335042, -6949257, -10582799, -6585796, 5910949, 9033390, -17499844,
+-58110372, -59563144, 5482526, 83499536, 86628416, 1379221, -84844928, -85138064, -11901354, 51665236,
+54776404, 19014894, -11911555, -22216792, -18465138, -5498632, 14854681, 35445828, 48197048, 51996484,
+50291920, 45649596, 40315248, 37207300, 36641976, 35024920, 28898688, 18129056, 4440460, -10513006,
+-24823838, -36339180, -44009992, -48198660, -49605260, -48929340, -47307992, -45934140, -45271640, -45296872,
+-46153720, -47934520, -50194208, -52233244, -53628036, -54219132, -54003844, -53310208, -52730924, -52689048,
+-53342956, -54880020, -57467200, -60883844, -64628520, -68430104, -72297184, -76111112, -79580376, -82582560,
+-85147728, -87112136, -88198224, -88479544, -88365728, -88030184, -87231856, -85876800, -84408456, -83318072,
+-82401096, -80879600, -78321416, -75120048, -71791456, -68008656, -62799940, -55777128, -47760572, -39983460,
+-32998234, -26651346, -20882130, -16187195, -13293998, -12516072, -13425531, -15218143, -17527224, -20784420,
+-25553982, -31566936, -37652368, -42537356, -45547056, -46747496, -46730856, -46114528, -44954348, -42737072,
+-39073464, -34196528, -28686624, -23036594, -17581986, -12468290, -7497403, -2309619, 3184718, 8788040,
+14401025, 20095078, 25889526, 31743566, 37637872, 43394740, 48620104, 53053584, 56763360, 59858960,
+62368292, 64483564, 66524212, 68600288, 70713416, 73127720, 76176616, 79870824, 84172232, 89341224,
+95507728, 102298608, 109355776, 116673864, 123982824, 130558952, 136096784, 140873856, 144714624, 147014576,
+147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, },
},
};
-const Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[16][BINAURAL_CHANNELS][160] ={
+const Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160] ={
{
{
-95109368,
--260339440, -366612512, -408962496, -400354304, -362236480, -315098656, -258988672, -173663248, -53939956, 73996920,
-186707600, 276786496, 304005312, 192871408, -46663744, -238100096, -189772592, 61389580, 255288032, 194103536,
--56156696, -288527328, -394782656, -412162784, -396458240, -350214304, -268649664, -176448528, -96819304, -26412976,
-43027520, 105719008, 155055296, 195263168, 231530944, 262328544, 286273536, 306256416, 324167488, 339115040,
-351465760, 362808768, 372651232, 379707328, 384899392, 389586816, 393053920, 394493280, 395004928, 395505824,
-395165440, 393394848, 390962272, 388219424, 384553664, 380043936, 375570208, 371227968, 366504576, 361672224,
-357340736, 353217024, 348759936, 344302304, 340330528, 336536992, 332559840, 328731968, 325346464, 322093024,
-318739712, 315517952, 312517920, 309469024, 306246752, 302958944, 299588992, 296042976, 292305280, 288233120,
-283618176, 278650496, 273737600, 268777984, 263323904, 257488656, 251875680, 246582128, 241085648, 235180064,
-229304544, 223901472, 219023472, 214540064, 210318640, 206342576, 202909824, 200431632, 198818864, 197471328,
-196033584, 194752608, 193960720, 193620880, 193459824, 193164544, 192452656, 191296240, 190028688, 188915216,
-187750208, 186134224, 183929296, 181221856, 178127328, 174841680, 171599520, 168378832, 164916544, 161111200,
-157136752, 153130624, 149087984, 145047488, 141054240, 136985296, 132723080, 128412008, 124285080, 120380952,
-116669568, 113233056, 110073568, 107003208, 103945728, 101050376, 98364416, 95750392, 93226024, 90918016,
-88620208, 85932632, 82820928, 79434344, 75505528, 70683888, 65148212, 58947888, 51291036, 41580652,
-29719026, 13152264, -13907104, -52447992, -89501752, -104273216, -87974888, -52846888, -16645146, },
+-260339440, -366612512, -408962496, -400354304, -362236480, -315098656, -258988672, -173663248, -53939956, 73996920,
+186707600, 276786496, 304005312, 192871408, -46663744, -238100096, -189772592, 61389580, 255288032, 194103536,
+-56156696, -288527328, -394782656, -412162784, -396458240, -350214304, -268649664, -176448528, -96819304, -26412976,
+43027520, 105719008, 155055296, 195263168, 231530944, 262328544, 286273536, 306256416, 324167488, 339115040,
+351465760, 362808768, 372651232, 379707328, 384899392, 389586816, 393053920, 394493280, 395004928, 395505824,
+395165440, 393394848, 390962272, 388219424, 384553664, 380043936, 375570208, 371227968, 366504576, 361672224,
+357340736, 353217024, 348759936, 344302304, 340330528, 336536992, 332559840, 328731968, 325346464, 322093024,
+318739712, 315517952, 312517920, 309469024, 306246752, 302958944, 299588992, 296042976, 292305280, 288233120,
+283618176, 278650496, 273737600, 268777984, 263323904, 257488656, 251875680, 246582128, 241085648, 235180064,
+229304544, 223901472, 219023472, 214540064, 210318640, 206342576, 202909824, 200431632, 198818864, 197471328,
+196033584, 194752608, 193960720, 193620880, 193459824, 193164544, 192452656, 191296240, 190028688, 188915216,
+187750208, 186134224, 183929296, 181221856, 178127328, 174841680, 171599520, 168378832, 164916544, 161111200,
+157136752, 153130624, 149087984, 145047488, 141054240, 136985296, 132723080, 128412008, 124285080, 120380952,
+116669568, 113233056, 110073568, 107003208, 103945728, 101050376, 98364416, 95750392, 93226024, 90918016,
+88620208, 85932632, 82820928, 79434344, 75505528, 70683888, 65148212, 58947888, 51291036, 41580652,
+29719026, 13152264, -13907104, -52447992, -89501752, -104273216, -87974888, -52846888, -16645146, },
{
-95109368,
--260339440, -366612512, -408962496, -400354304, -362236480, -315098656, -258988672, -173663248, -53939956, 73996920,
-186707600, 276786496, 304005312, 192871408, -46663744, -238100096, -189772592, 61389580, 255288032, 194103536,
--56156696, -288527328, -394782656, -412162784, -396458240, -350214304, -268649664, -176448528, -96819304, -26412976,
-43027520, 105719008, 155055296, 195263168, 231530944, 262328544, 286273536, 306256416, 324167488, 339115040,
-351465760, 362808768, 372651232, 379707328, 384899392, 389586816, 393053920, 394493280, 395004928, 395505824,
-395165440, 393394848, 390962272, 388219424, 384553664, 380043936, 375570208, 371227968, 366504576, 361672224,
-357340736, 353217024, 348759936, 344302304, 340330528, 336536992, 332559840, 328731968, 325346464, 322093024,
-318739712, 315517952, 312517920, 309469024, 306246752, 302958944, 299588992, 296042976, 292305280, 288233120,
-283618176, 278650496, 273737600, 268777984, 263323904, 257488656, 251875680, 246582128, 241085648, 235180064,
-229304544, 223901472, 219023472, 214540064, 210318640, 206342576, 202909824, 200431632, 198818864, 197471328,
-196033584, 194752608, 193960720, 193620880, 193459824, 193164544, 192452656, 191296240, 190028688, 188915216,
-187750208, 186134224, 183929296, 181221856, 178127328, 174841680, 171599520, 168378832, 164916544, 161111200,
-157136752, 153130624, 149087984, 145047488, 141054240, 136985296, 132723080, 128412008, 124285080, 120380952,
-116669568, 113233056, 110073568, 107003208, 103945728, 101050376, 98364416, 95750392, 93226024, 90918016,
-88620208, 85932632, 82820928, 79434344, 75505528, 70683888, 65148212, 58947888, 51291036, 41580652,
-29719026, 13152264, -13907104, -52447992, -89501752, -104273216, -87974888, -52846888, -16645146, },
+-260339440, -366612512, -408962496, -400354304, -362236480, -315098656, -258988672, -173663248, -53939956, 73996920,
+186707600, 276786496, 304005312, 192871408, -46663744, -238100096, -189772592, 61389580, 255288032, 194103536,
+-56156696, -288527328, -394782656, -412162784, -396458240, -350214304, -268649664, -176448528, -96819304, -26412976,
+43027520, 105719008, 155055296, 195263168, 231530944, 262328544, 286273536, 306256416, 324167488, 339115040,
+351465760, 362808768, 372651232, 379707328, 384899392, 389586816, 393053920, 394493280, 395004928, 395505824,
+395165440, 393394848, 390962272, 388219424, 384553664, 380043936, 375570208, 371227968, 366504576, 361672224,
+357340736, 353217024, 348759936, 344302304, 340330528, 336536992, 332559840, 328731968, 325346464, 322093024,
+318739712, 315517952, 312517920, 309469024, 306246752, 302958944, 299588992, 296042976, 292305280, 288233120,
+283618176, 278650496, 273737600, 268777984, 263323904, 257488656, 251875680, 246582128, 241085648, 235180064,
+229304544, 223901472, 219023472, 214540064, 210318640, 206342576, 202909824, 200431632, 198818864, 197471328,
+196033584, 194752608, 193960720, 193620880, 193459824, 193164544, 192452656, 191296240, 190028688, 188915216,
+187750208, 186134224, 183929296, 181221856, 178127328, 174841680, 171599520, 168378832, 164916544, 161111200,
+157136752, 153130624, 149087984, 145047488, 141054240, 136985296, 132723080, 128412008, 124285080, 120380952,
+116669568, 113233056, 110073568, 107003208, 103945728, 101050376, 98364416, 95750392, 93226024, 90918016,
+88620208, 85932632, 82820928, 79434344, 75505528, 70683888, 65148212, 58947888, 51291036, 41580652,
+29719026, 13152264, -13907104, -52447992, -89501752, -104273216, -87974888, -52846888, -16645146, },
},
{
{
74919800,
-180832624, 165589776, 3118146, -248377952, -487060032, -639470720, -670940480, -564931520, -348093152, -99012416,
-133561136, 369929280, 567594944, 531079680, 136782368, -364506368, -495046528, -96676496, 437999680, 606822528,
-338486368, -45694692, -282642144, -380529792, -435686848, -455061984, -412777504, -340961344, -285578816, -242132544,
--187046368, -125953672, -75291312, -31372052, 15731928, 62692564, 104184632, 143963008, 184569776, 221687424,
-253691376, 283860288, 311944000, 334602656, 352947520, 370293824, 385346624, 395373760, 402216160, 408895904,
-414681248, 418261632, 421057120, 423908992, 425174368, 424278336, 422686528, 420456352, 416190912, 410363712,
-404640672, 398671744, 391244128, 383210944, 376019552, 369106816, 361541760, 354219360, 348174752, 342842016,
-337704160, 333546080, 330874624, 329060544, 327708704, 327105792, 327162144, 327442944, 327925600, 328501120,
-328534400, 327920224, 327404832, 327090752, 326092704, 324246400, 322538080, 321427296, 320383072, 319275520,
-318623744, 318416512, 318121792, 317643424, 317027104, 315684384, 313017760, 309172160, 304287168, 297851136,
-289580128, 280034560, 269758304, 258727760, 247008944, 235039936, 223125696, 211545392, 201074800, 192465008,
-185562448, 179705728, 174628000, 170326048, 166635600, 163581344, 161492912, 160217856, 158877280, 156786176,
-153965456, 150613232, 146883056, 143231248, 140110416, 137296144, 134274096, 131101728, 128141960, 125304600,
-122328720, 119391504, 116704464, 114009368, 111109728, 108314240, 105794168, 103213432, 100447472, 97856000,
-95487864, 92946312, 90264640, 87829936, 85353888, 82145544, 78237664, 73787000, 67849744, 59486372,
-48626544, 32700270, 4790499, -37725920, -81636592, -103223632, -90638840, -55671368, -17729624, },
+180832624, 165589776, 3118146, -248377952, -487060032, -639470720, -670940480, -564931520, -348093152, -99012416,
+133561136, 369929280, 567594944, 531079680, 136782368, -364506368, -495046528, -96676496, 437999680, 606822528,
+338486368, -45694692, -282642144, -380529792, -435686848, -455061984, -412777504, -340961344, -285578816, -242132544,
+-187046368, -125953672, -75291312, -31372052, 15731928, 62692564, 104184632, 143963008, 184569776, 221687424,
+253691376, 283860288, 311944000, 334602656, 352947520, 370293824, 385346624, 395373760, 402216160, 408895904,
+414681248, 418261632, 421057120, 423908992, 425174368, 424278336, 422686528, 420456352, 416190912, 410363712,
+404640672, 398671744, 391244128, 383210944, 376019552, 369106816, 361541760, 354219360, 348174752, 342842016,
+337704160, 333546080, 330874624, 329060544, 327708704, 327105792, 327162144, 327442944, 327925600, 328501120,
+328534400, 327920224, 327404832, 327090752, 326092704, 324246400, 322538080, 321427296, 320383072, 319275520,
+318623744, 318416512, 318121792, 317643424, 317027104, 315684384, 313017760, 309172160, 304287168, 297851136,
+289580128, 280034560, 269758304, 258727760, 247008944, 235039936, 223125696, 211545392, 201074800, 192465008,
+185562448, 179705728, 174628000, 170326048, 166635600, 163581344, 161492912, 160217856, 158877280, 156786176,
+153965456, 150613232, 146883056, 143231248, 140110416, 137296144, 134274096, 131101728, 128141960, 125304600,
+122328720, 119391504, 116704464, 114009368, 111109728, 108314240, 105794168, 103213432, 100447472, 97856000,
+95487864, 92946312, 90264640, 87829936, 85353888, 82145544, 78237664, 73787000, 67849744, 59486372,
+48626544, 32700270, 4790499, -37725920, -81636592, -103223632, -90638840, -55671368, -17729624, },
{
-74919800,
--180832624, -165589776, -3118146, 248377952, 487060032, 639470720, 670940480, 564931520, 348093152, 99012416,
--133561136, -369929280, -567594944, -531079680, -136782368, 364506368, 495046528, 96676496, -437999680, -606822528,
--338486368, 45694692, 282642144, 380529792, 435686848, 455061984, 412777504, 340961344, 285578816, 242132544,
-187046368, 125953672, 75291312, 31372052, -15731928, -62692564, -104184632, -143963008, -184569776, -221687424,
--253691376, -283860288, -311944000, -334602656, -352947520, -370293824, -385346624, -395373760, -402216160, -408895904,
--414681248, -418261632, -421057120, -423908992, -425174368, -424278336, -422686528, -420456352, -416190912, -410363712,
--404640672, -398671744, -391244128, -383210944, -376019552, -369106816, -361541760, -354219360, -348174752, -342842016,
--337704160, -333546080, -330874624, -329060544, -327708704, -327105792, -327162144, -327442944, -327925600, -328501120,
--328534400, -327920224, -327404832, -327090752, -326092704, -324246400, -322538080, -321427296, -320383072, -319275520,
--318623744, -318416512, -318121792, -317643424, -317027104, -315684384, -313017760, -309172160, -304287168, -297851136,
--289580128, -280034560, -269758304, -258727760, -247008944, -235039936, -223125696, -211545392, -201074800, -192465008,
--185562448, -179705728, -174628000, -170326048, -166635600, -163581344, -161492912, -160217856, -158877280, -156786176,
--153965456, -150613232, -146883056, -143231248, -140110416, -137296144, -134274096, -131101728, -128141960, -125304600,
--122328720, -119391504, -116704464, -114009368, -111109728, -108314240, -105794168, -103213432, -100447472, -97856000,
--95487864, -92946312, -90264640, -87829936, -85353888, -82145544, -78237664, -73787000, -67849744, -59486372,
--48626544, -32700270, -4790499, 37725920, 81636592, 103223632, 90638840, 55671368, 17729624, },
+-180832624, -165589776, -3118146, 248377952, 487060032, 639470720, 670940480, 564931520, 348093152, 99012416,
+-133561136, -369929280, -567594944, -531079680, -136782368, 364506368, 495046528, 96676496, -437999680, -606822528,
+-338486368, 45694692, 282642144, 380529792, 435686848, 455061984, 412777504, 340961344, 285578816, 242132544,
+187046368, 125953672, 75291312, 31372052, -15731928, -62692564, -104184632, -143963008, -184569776, -221687424,
+-253691376, -283860288, -311944000, -334602656, -352947520, -370293824, -385346624, -395373760, -402216160, -408895904,
+-414681248, -418261632, -421057120, -423908992, -425174368, -424278336, -422686528, -420456352, -416190912, -410363712,
+-404640672, -398671744, -391244128, -383210944, -376019552, -369106816, -361541760, -354219360, -348174752, -342842016,
+-337704160, -333546080, -330874624, -329060544, -327708704, -327105792, -327162144, -327442944, -327925600, -328501120,
+-328534400, -327920224, -327404832, -327090752, -326092704, -324246400, -322538080, -321427296, -320383072, -319275520,
+-318623744, -318416512, -318121792, -317643424, -317027104, -315684384, -313017760, -309172160, -304287168, -297851136,
+-289580128, -280034560, -269758304, -258727760, -247008944, -235039936, -223125696, -211545392, -201074800, -192465008,
+-185562448, -179705728, -174628000, -170326048, -166635600, -163581344, -161492912, -160217856, -158877280, -156786176,
+-153965456, -150613232, -146883056, -143231248, -140110416, -137296144, -134274096, -131101728, -128141960, -125304600,
+-122328720, -119391504, -116704464, -114009368, -111109728, -108314240, -105794168, -103213432, -100447472, -97856000,
+-95487864, -92946312, -90264640, -87829936, -85353888, -82145544, -78237664, -73787000, -67849744, -59486372,
+-48626544, -32700270, -4790499, 37725920, 81636592, 103223632, 90638840, 55671368, 17729624, },
},
{
{
-8997956,
--36575404, -70057896, -75746584, -36069672, 20763482, 50795504, 39648992, 6548752, -24158118, -40223444,
--36266704, -9786620, 28921772, 51592756, 33353642, -13720273, -40638444, -11729019, 48308720, 75479752,
-37072012, -35640176, -89364848, -103929616, -95136208, -81471768, -67702640, -53746684, -41168336, -29545616,
--16599512, -3274376, 6781754, 12052215, 13502303, 12007655, 9067750, 8138426, 12019466, 20188494,
-30608084, 42454676, 55612848, 69392712, 83302504, 97821640, 113513840, 130401112, 148518896, 167913888,
-187898912, 207297136, 225438544, 242095488, 256685504, 268412368, 277012512, 282643744, 285191744, 284255424,
-279637792, 271346368, 259203424, 242854624, 222178128, 197471328, 169249088, 138059040, 104570104, 69709464,
-34565896, 220654, -32209570, -61572652, -87062208, -108476376, -125715304, -138263584, -145782464, -149036976,
--149373056, -147217520, -142017392, -133914392, -124491776, -115248472, -106034152, -95747704, -84204448, -72589240,
--62194884, -53323628, -45533632, -38529076, -32577326, -28267864, -26095684, -26221850, -28418724, -32154810,
--36836860, -42123964, -48040284, -54697484, -61807264, -68486472, -73672112, -76818176, -78148000, -78183440,
--77134392, -74802760, -70909376, -65336116, -58133992, -49504328, -39798240, -29444148, -18872624, -8519068,
-1219771, 10084583, 17916456, 24504936, 29606820, 33136210, 35232152, 36126580, 36039608, 35143568,
-33567316, 31499290, 29361470, 27712202, 26908506, 26950920, 27614492, 28478318, 28897614, 28332826,
-26790396, 24655796, 22099754, 18985366, 15300284, 11255499, 6929930, 2227478, -2730526, -7621420,
--12545599, -18257370, -25141664, -31687194, -34493956, -30834108, -21662204, -11296838, -3238405, },
+-36575404, -70057896, -75746584, -36069672, 20763482, 50795504, 39648992, 6548752, -24158118, -40223444,
+-36266704, -9786620, 28921772, 51592756, 33353642, -13720273, -40638444, -11729019, 48308720, 75479752,
+37072012, -35640176, -89364848, -103929616, -95136208, -81471768, -67702640, -53746684, -41168336, -29545616,
+-16599512, -3274376, 6781754, 12052215, 13502303, 12007655, 9067750, 8138426, 12019466, 20188494,
+30608084, 42454676, 55612848, 69392712, 83302504, 97821640, 113513840, 130401112, 148518896, 167913888,
+187898912, 207297136, 225438544, 242095488, 256685504, 268412368, 277012512, 282643744, 285191744, 284255424,
+279637792, 271346368, 259203424, 242854624, 222178128, 197471328, 169249088, 138059040, 104570104, 69709464,
+34565896, 220654, -32209570, -61572652, -87062208, -108476376, -125715304, -138263584, -145782464, -149036976,
+-149373056, -147217520, -142017392, -133914392, -124491776, -115248472, -106034152, -95747704, -84204448, -72589240,
+-62194884, -53323628, -45533632, -38529076, -32577326, -28267864, -26095684, -26221850, -28418724, -32154810,
+-36836860, -42123964, -48040284, -54697484, -61807264, -68486472, -73672112, -76818176, -78148000, -78183440,
+-77134392, -74802760, -70909376, -65336116, -58133992, -49504328, -39798240, -29444148, -18872624, -8519068,
+1219771, 10084583, 17916456, 24504936, 29606820, 33136210, 35232152, 36126580, 36039608, 35143568,
+33567316, 31499290, 29361470, 27712202, 26908506, 26950920, 27614492, 28478318, 28897614, 28332826,
+26790396, 24655796, 22099754, 18985366, 15300284, 11255499, 6929930, 2227478, -2730526, -7621420,
+-12545599, -18257370, -25141664, -31687194, -34493956, -30834108, -21662204, -11296838, -3238405, },
{
-8997956,
--36575404, -70057896, -75746584, -36069672, 20763482, 50795504, 39648992, 6548752, -24158118, -40223444,
--36266704, -9786620, 28921772, 51592756, 33353642, -13720273, -40638444, -11729019, 48308720, 75479752,
-37072012, -35640176, -89364848, -103929616, -95136208, -81471768, -67702640, -53746684, -41168336, -29545616,
--16599512, -3274376, 6781754, 12052215, 13502303, 12007655, 9067750, 8138426, 12019466, 20188494,
-30608084, 42454676, 55612848, 69392712, 83302504, 97821640, 113513840, 130401112, 148518896, 167913888,
-187898912, 207297136, 225438544, 242095488, 256685504, 268412368, 277012512, 282643744, 285191744, 284255424,
-279637792, 271346368, 259203424, 242854624, 222178128, 197471328, 169249088, 138059040, 104570104, 69709464,
-34565896, 220654, -32209570, -61572652, -87062208, -108476376, -125715304, -138263584, -145782464, -149036976,
--149373056, -147217520, -142017392, -133914392, -124491776, -115248472, -106034152, -95747704, -84204448, -72589240,
--62194884, -53323628, -45533632, -38529076, -32577326, -28267864, -26095684, -26221850, -28418724, -32154810,
--36836860, -42123964, -48040284, -54697484, -61807264, -68486472, -73672112, -76818176, -78148000, -78183440,
--77134392, -74802760, -70909376, -65336116, -58133992, -49504328, -39798240, -29444148, -18872624, -8519068,
-1219771, 10084583, 17916456, 24504936, 29606820, 33136210, 35232152, 36126580, 36039608, 35143568,
-33567316, 31499290, 29361470, 27712202, 26908506, 26950920, 27614492, 28478318, 28897614, 28332826,
-26790396, 24655796, 22099754, 18985366, 15300284, 11255499, 6929930, 2227478, -2730526, -7621420,
--12545599, -18257370, -25141664, -31687194, -34493956, -30834108, -21662204, -11296838, -3238405, },
+-36575404, -70057896, -75746584, -36069672, 20763482, 50795504, 39648992, 6548752, -24158118, -40223444,
+-36266704, -9786620, 28921772, 51592756, 33353642, -13720273, -40638444, -11729019, 48308720, 75479752,
+37072012, -35640176, -89364848, -103929616, -95136208, -81471768, -67702640, -53746684, -41168336, -29545616,
+-16599512, -3274376, 6781754, 12052215, 13502303, 12007655, 9067750, 8138426, 12019466, 20188494,
+30608084, 42454676, 55612848, 69392712, 83302504, 97821640, 113513840, 130401112, 148518896, 167913888,
+187898912, 207297136, 225438544, 242095488, 256685504, 268412368, 277012512, 282643744, 285191744, 284255424,
+279637792, 271346368, 259203424, 242854624, 222178128, 197471328, 169249088, 138059040, 104570104, 69709464,
+34565896, 220654, -32209570, -61572652, -87062208, -108476376, -125715304, -138263584, -145782464, -149036976,
+-149373056, -147217520, -142017392, -133914392, -124491776, -115248472, -106034152, -95747704, -84204448, -72589240,
+-62194884, -53323628, -45533632, -38529076, -32577326, -28267864, -26095684, -26221850, -28418724, -32154810,
+-36836860, -42123964, -48040284, -54697484, -61807264, -68486472, -73672112, -76818176, -78148000, -78183440,
+-77134392, -74802760, -70909376, -65336116, -58133992, -49504328, -39798240, -29444148, -18872624, -8519068,
+1219771, 10084583, 17916456, 24504936, 29606820, 33136210, 35232152, 36126580, 36039608, 35143568,
+33567316, 31499290, 29361470, 27712202, 26908506, 26950920, 27614492, 28478318, 28897614, 28332826,
+26790396, 24655796, 22099754, 18985366, 15300284, 11255499, 6929930, 2227478, -2730526, -7621420,
+-12545599, -18257370, -25141664, -31687194, -34493956, -30834108, -21662204, -11296838, -3238405, },
},
{
{
3337190,
--525597, -24376624, -52859772, -58058296, -31161062, 1227287, 3435437, -27114666, -57911728, -62258236,
--42413876, -7547332, 40961640, 82542832, 69375000, -12013560, -89047024, -66958004, 50780472, 152577632,
-144016688, 43066172, -67980208, -143702096, -194733824, -235730896, -259470784, -258697152, -240774800, -214183584,
--178467168, -132137352, -79065520, -24104968, 30179662, 81193136, 125873680, 163009584, 192982000, 216053504,
-232919840, 245307600, 254314672, 259715056, 261763760, 261771808, 260262128, 256400960, 249691152, 240672256,
-229946640, 218110784, 206570208, 196965584, 189718368, 184060816, 179179056, 174530288, 169478336, 163535168,
-156792080, 149618944, 142169328, 134492064, 126790656, 119201984, 111450640, 103003520, 93563176, 83234320,
-72127536, 59994252, 46582140, 32255742, 17762374, 3402151, -10920491, -24737402, -36990944, -47239272,
--55982752, -63379760, -68614248, -71157944, -71792528, -71634688, -70871256, -69215008, -66949952, -64623688,
--62057984, -58481348, -53521736, -47441136, -40394704, -31950262, -21505438, -8965207, 5135171, 20148766,
-35888748, 52565032, 70101920, 87712896, 104364488, 119592824, 133637904, 146803056, 158875136, 169184672,
-177143776, 182786288, 186896032, 190489856, 193986496, 196899552, 198414608, 198207376, 196701984, 194758512,
-193220384, 192503120, 192380704, 192236288, 191645200, 190669712, 189624416, 188777232, 188268816, 188042800,
-187744832, 186871344, 185077120, 182256944, 178427968, 173705120, 168274128, 162197824, 155338224, 147560048,
-138878304, 129408440, 119380224, 109168408, 99096168, 89302032, 79920216, 71038760, 62386548, 53589916,
-44463112, 33750388, 18118320, -4322348, -28186260, -42157788, -39511552, -25010132, -8060580, },
+-525597, -24376624, -52859772, -58058296, -31161062, 1227287, 3435437, -27114666, -57911728, -62258236,
+-42413876, -7547332, 40961640, 82542832, 69375000, -12013560, -89047024, -66958004, 50780472, 152577632,
+144016688, 43066172, -67980208, -143702096, -194733824, -235730896, -259470784, -258697152, -240774800, -214183584,
+-178467168, -132137352, -79065520, -24104968, 30179662, 81193136, 125873680, 163009584, 192982000, 216053504,
+232919840, 245307600, 254314672, 259715056, 261763760, 261771808, 260262128, 256400960, 249691152, 240672256,
+229946640, 218110784, 206570208, 196965584, 189718368, 184060816, 179179056, 174530288, 169478336, 163535168,
+156792080, 149618944, 142169328, 134492064, 126790656, 119201984, 111450640, 103003520, 93563176, 83234320,
+72127536, 59994252, 46582140, 32255742, 17762374, 3402151, -10920491, -24737402, -36990944, -47239272,
+-55982752, -63379760, -68614248, -71157944, -71792528, -71634688, -70871256, -69215008, -66949952, -64623688,
+-62057984, -58481348, -53521736, -47441136, -40394704, -31950262, -21505438, -8965207, 5135171, 20148766,
+35888748, 52565032, 70101920, 87712896, 104364488, 119592824, 133637904, 146803056, 158875136, 169184672,
+177143776, 182786288, 186896032, 190489856, 193986496, 196899552, 198414608, 198207376, 196701984, 194758512,
+193220384, 192503120, 192380704, 192236288, 191645200, 190669712, 189624416, 188777232, 188268816, 188042800,
+187744832, 186871344, 185077120, 182256944, 178427968, 173705120, 168274128, 162197824, 155338224, 147560048,
+138878304, 129408440, 119380224, 109168408, 99096168, 89302032, 79920216, 71038760, 62386548, 53589916,
+44463112, 33750388, 18118320, -4322348, -28186260, -42157788, -39511552, -25010132, -8060580, },
{
3337190,
--525597, -24376624, -52859772, -58058296, -31161062, 1227287, 3435437, -27114666, -57911728, -62258236,
--42413876, -7547332, 40961640, 82542832, 69375000, -12013560, -89047024, -66958004, 50780472, 152577632,
-144016688, 43066172, -67980208, -143702096, -194733824, -235730896, -259470784, -258697152, -240774800, -214183584,
--178467168, -132137352, -79065520, -24104968, 30179662, 81193136, 125873680, 163009584, 192982000, 216053504,
-232919840, 245307600, 254314672, 259715056, 261763760, 261771808, 260262128, 256400960, 249691152, 240672256,
-229946640, 218110784, 206570208, 196965584, 189718368, 184060816, 179179056, 174530288, 169478336, 163535168,
-156792080, 149618944, 142169328, 134492064, 126790656, 119201984, 111450640, 103003520, 93563176, 83234320,
-72127536, 59994252, 46582140, 32255742, 17762374, 3402151, -10920491, -24737402, -36990944, -47239272,
--55982752, -63379760, -68614248, -71157944, -71792528, -71634688, -70871256, -69215008, -66949952, -64623688,
--62057984, -58481348, -53521736, -47441136, -40394704, -31950262, -21505438, -8965207, 5135171, 20148766,
-35888748, 52565032, 70101920, 87712896, 104364488, 119592824, 133637904, 146803056, 158875136, 169184672,
-177143776, 182786288, 186896032, 190489856, 193986496, 196899552, 198414608, 198207376, 196701984, 194758512,
-193220384, 192503120, 192380704, 192236288, 191645200, 190669712, 189624416, 188777232, 188268816, 188042800,
-187744832, 186871344, 185077120, 182256944, 178427968, 173705120, 168274128, 162197824, 155338224, 147560048,
-138878304, 129408440, 119380224, 109168408, 99096168, 89302032, 79920216, 71038760, 62386548, 53589916,
-44463112, 33750388, 18118320, -4322348, -28186260, -42157788, -39511552, -25010132, -8060580, },
+-525597, -24376624, -52859772, -58058296, -31161062, 1227287, 3435437, -27114666, -57911728, -62258236,
+-42413876, -7547332, 40961640, 82542832, 69375000, -12013560, -89047024, -66958004, 50780472, 152577632,
+144016688, 43066172, -67980208, -143702096, -194733824, -235730896, -259470784, -258697152, -240774800, -214183584,
+-178467168, -132137352, -79065520, -24104968, 30179662, 81193136, 125873680, 163009584, 192982000, 216053504,
+232919840, 245307600, 254314672, 259715056, 261763760, 261771808, 260262128, 256400960, 249691152, 240672256,
+229946640, 218110784, 206570208, 196965584, 189718368, 184060816, 179179056, 174530288, 169478336, 163535168,
+156792080, 149618944, 142169328, 134492064, 126790656, 119201984, 111450640, 103003520, 93563176, 83234320,
+72127536, 59994252, 46582140, 32255742, 17762374, 3402151, -10920491, -24737402, -36990944, -47239272,
+-55982752, -63379760, -68614248, -71157944, -71792528, -71634688, -70871256, -69215008, -66949952, -64623688,
+-62057984, -58481348, -53521736, -47441136, -40394704, -31950262, -21505438, -8965207, 5135171, 20148766,
+35888748, 52565032, 70101920, 87712896, 104364488, 119592824, 133637904, 146803056, 158875136, 169184672,
+177143776, 182786288, 186896032, 190489856, 193986496, 196899552, 198414608, 198207376, 196701984, 194758512,
+193220384, 192503120, 192380704, 192236288, 191645200, 190669712, 189624416, 188777232, 188268816, 188042800,
+187744832, 186871344, 185077120, 182256944, 178427968, 173705120, 168274128, 162197824, 155338224, 147560048,
+138878304, 129408440, 119380224, 109168408, 99096168, 89302032, 79920216, 71038760, 62386548, 53589916,
+44463112, 33750388, 18118320, -4322348, -28186260, -42157788, -39511552, -25010132, -8060580, },
},
{
{
-2301566,
--2214593, 5727876, 13223131, 10465762, 513785, -4172024, -2193655, -10200010, -42254960, -87792352,
--113481624, -84174920, 7027640, 111054432, 138495520, 44058312, -97946728, -146072368, -43659416, 114249888,
-190329328, 147693184, 52002928, -32975686, -99015640, -155720480, -194640400, -205525456, -195984192, -178432272,
--154529168, -122307248, -85534808, -48135308, -8592619, 34183108, 75675176, 110118128, 135565808, 152853056,
-163407392, 169358608, 173025440, 175466592, 176900576, 177918480, 178836000, 178791968, 176883392, 173388368,
-168980112, 163797168, 158085936, 152720448, 148354080, 144822544, 141771504, 139110240, 136628816, 133912248,
-130783368, 127244312, 123018064, 117765320, 111654120, 105082816, 97930624, 89697704, 80315888, 70161512,
-59257664, 47110960, 33521146, 18984292, 4003983, -11500312, -27609124, -43575664, -58267672, -71399000,
--83637512, -95267744, -105480104, -113548736, -120113592, -126386392, -132302176, -136444128, -137903888, -137277360,
--135506224, -132569536, -127873528, -121401544, -113898776, -106172664, -98556616, -90922312, -83046952, -75074952,
--67602248, -61177516, -55893092, -51618528, -48250736, -45432164, -42456288, -38915088, -35148940, -31722628,
--28767690, -26016228, -23027468, -19238232, -14357002, -8902930, -3870839, 246961, 3717831, 7033546,
-10645613, 14998563, 20207822, 25861608, 31578748, 37455872, 43646532, 49981608, 56273736, 62394064,
-67841696, 71890776, 74301320, 75271448, 74821552, 72951632, 70109432, 66714800, 62621696, 57782880,
-52841520, 48412872, 44589812, 41679972, 40359808, 40643812, 41889888, 44006772, 47257524, 51142860,
-55154360, 59654412, 63366336, 61291332, 49220324, 30265024, 13108777, 3496104, 413391, },
+-2214593, 5727876, 13223131, 10465762, 513785, -4172024, -2193655, -10200010, -42254960, -87792352,
+-113481624, -84174920, 7027640, 111054432, 138495520, 44058312, -97946728, -146072368, -43659416, 114249888,
+190329328, 147693184, 52002928, -32975686, -99015640, -155720480, -194640400, -205525456, -195984192, -178432272,
+-154529168, -122307248, -85534808, -48135308, -8592619, 34183108, 75675176, 110118128, 135565808, 152853056,
+163407392, 169358608, 173025440, 175466592, 176900576, 177918480, 178836000, 178791968, 176883392, 173388368,
+168980112, 163797168, 158085936, 152720448, 148354080, 144822544, 141771504, 139110240, 136628816, 133912248,
+130783368, 127244312, 123018064, 117765320, 111654120, 105082816, 97930624, 89697704, 80315888, 70161512,
+59257664, 47110960, 33521146, 18984292, 4003983, -11500312, -27609124, -43575664, -58267672, -71399000,
+-83637512, -95267744, -105480104, -113548736, -120113592, -126386392, -132302176, -136444128, -137903888, -137277360,
+-135506224, -132569536, -127873528, -121401544, -113898776, -106172664, -98556616, -90922312, -83046952, -75074952,
+-67602248, -61177516, -55893092, -51618528, -48250736, -45432164, -42456288, -38915088, -35148940, -31722628,
+-28767690, -26016228, -23027468, -19238232, -14357002, -8902930, -3870839, 246961, 3717831, 7033546,
+10645613, 14998563, 20207822, 25861608, 31578748, 37455872, 43646532, 49981608, 56273736, 62394064,
+67841696, 71890776, 74301320, 75271448, 74821552, 72951632, 70109432, 66714800, 62621696, 57782880,
+52841520, 48412872, 44589812, 41679972, 40359808, 40643812, 41889888, 44006772, 47257524, 51142860,
+55154360, 59654412, 63366336, 61291332, 49220324, 30265024, 13108777, 3496104, 413391, },
{
2301566,
-2214593, -5727876, -13223131, -10465762, -513785, 4172024, 2193655, 10200010, 42254960, 87792352,
-113481624, 84174920, -7027640, -111054432, -138495520, -44058312, 97946728, 146072368, 43659416, -114249888,
--190329328, -147693184, -52002928, 32975686, 99015640, 155720480, 194640400, 205525456, 195984192, 178432272,
-154529168, 122307248, 85534808, 48135308, 8592619, -34183108, -75675176, -110118128, -135565808, -152853056,
--163407392, -169358608, -173025440, -175466592, -176900576, -177918480, -178836000, -178791968, -176883392, -173388368,
--168980112, -163797168, -158085936, -152720448, -148354080, -144822544, -141771504, -139110240, -136628816, -133912248,
--130783368, -127244312, -123018064, -117765320, -111654120, -105082816, -97930624, -89697704, -80315888, -70161512,
--59257664, -47110960, -33521146, -18984292, -4003983, 11500312, 27609124, 43575664, 58267672, 71399000,
-83637512, 95267744, 105480104, 113548736, 120113592, 126386392, 132302176, 136444128, 137903888, 13727